[
  {
    "path": ".all-contributorsrc",
    "content": "{\n  \"files\": [\n    \"README.md\",\n    \"README_ZH.md\"\n  ],\n  \"imageSize\": 100,\n  \"commit\": false,\n  \"contributors\": [\n    {\n      \"login\": \"Blinue\",\n      \"name\": \"Xu\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/34770031?v=4\",\n      \"profile\": \"https://github.com/Blinue\",\n      \"contributions\": [\n        \"maintenance\"\n      ]\n    },\n    {\n      \"login\": \"hooke007\",\n      \"name\": \"hooke007\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/41094733?v=4\",\n      \"profile\": \"https://github.com/hooke007\",\n      \"contributions\": [\n        \"doc\",\n        \"question\",\n        \"userTesting\",\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"palxex\",\n      \"name\": \"Pal Lockheart\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/58222?v=4\",\n      \"profile\": \"http://palxex.ys168.com\",\n      \"contributions\": [\n        \"userTesting\"\n      ]\n    },\n    {\n      \"login\": \"neoKushan\",\n      \"name\": \"Steve Donaghy\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/1029699?v=4\",\n      \"profile\": \"https://www.stevedonaghy.com/\",\n      \"contributions\": [\n        \"code\",\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"JeffersonQin\",\n      \"name\": \"gyro永不抽风\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/30655701?v=4\",\n      \"profile\": \"http://gyrojeff.top\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"ButtERRbrod\",\n      \"name\": \"ButtERRbrod\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/89013889?v=4\",\n      \"profile\": \"https://github.com/ButtERRbrod\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"0x4E69676874466F78\",\n      \"name\": \"NightFox\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/4449851?v=4\",\n      \"profile\": \"https://github.com/0x4E69676874466F78\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"Tzugimaa\",\n      \"name\": \"Tzugimaa\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/4981077?v=4\",\n      \"profile\": \"https://github.com/Tzugimaa\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"WHMHammer\",\n      \"name\": \"WHMHammer\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/35433952?v=4\",\n      \"profile\": \"https://github.com/WHMHammer\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"kato-megumi\",\n      \"name\": \"kato-megumi\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/29451351?v=4\",\n      \"profile\": \"https://github.com/kato-megumi\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"MikeWang000000\",\n      \"name\": \"Mike Wang\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/11748152?v=4\",\n      \"profile\": \"https://github.com/MikeWang000000\",\n      \"contributions\": [\n        \"userTesting\"\n      ]\n    },\n    {\n      \"login\": \"sammyhori\",\n      \"name\": \"Sammy Hori\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/116026761?v=4\",\n      \"profile\": \"http://sammyhori.com\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"NeilTohno\",\n      \"name\": \"NeilTohno\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/28284594?v=4\",\n      \"profile\": \"https://github.com/NeilTohno\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"a0193143\",\n      \"name\": \"a0193143\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/32773311?v=4\",\n      \"profile\": \"https://github.com/a0193143\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"soulset001\",\n      \"name\": \"soulset001\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/121711747?v=4\",\n      \"profile\": \"https://github.com/soulset001\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"WluhWluh\",\n      \"name\": \"WluhWluh\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/52004526?v=4\",\n      \"profile\": \"https://github.com/WluhWluh\",\n      \"contributions\": [\n        \"design\"\n      ]\n    },\n    {\n      \"login\": \"SerdarSaglam\",\n      \"name\": \"Serdar Sağlam\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/42881121?v=4\",\n      \"profile\": \"https://github.com/SerdarSaglam\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"AndrusGerman\",\n      \"name\": \"Andrus Diaz German\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/30560543?v=4\",\n      \"profile\": \"https://github.com/AndrusGerman\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"Kefir2105\",\n      \"name\": \"Kefir2105\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/103105829?v=4\",\n      \"profile\": \"https://github.com/Kefir2105\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"animeojisan\",\n      \"name\": \"animeojisan\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/132756551?v=4\",\n      \"profile\": \"https://github.com/animeojisan\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"MuscularPuky\",\n      \"name\": \"MuscularPuky\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/93962018?v=4\",\n      \"profile\": \"https://github.com/MuscularPuky\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"Zoommod\",\n      \"name\": \"Zoommod\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/71239440?v=4\",\n      \"profile\": \"https://github.com/Zoommod\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"fil08\",\n      \"name\": \"fil08\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/125665523?v=4\",\n      \"profile\": \"https://github.com/fil08\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"IsaiasYang\",\n      \"name\": \"攸羚\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/20205571?v=4\",\n      \"profile\": \"https://github.com/IsaiasYang\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"ohaiibuzzle\",\n      \"name\": \"OHaiiBuzzle\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/23693150?v=4\",\n      \"profile\": \"http://ohaiibuzzle.dev\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"Rastadu23\",\n      \"name\": \"Rastadu23\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/52637051?v=4\",\n      \"profile\": \"https://github.com/Rastadu23\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"hauuau\",\n      \"name\": \"hauuau\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/52239673?v=4\",\n      \"profile\": \"https://github.com/hauuau\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"nellydocs\",\n      \"name\": \"nellydocs\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/71311423?v=4\",\n      \"profile\": \"https://github.com/nellydocs\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"funnyplanter\",\n      \"name\": \"funnyplanter\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/173073947?v=4\",\n      \"profile\": \"https://github.com/funnyplanter\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"eriforce\",\n      \"name\": \"Erich Yu\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/8393109?v=4\",\n      \"profile\": \"https://github.com/eriforce\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"TamilNeram\",\n      \"name\": \"தமிழ் நேரம்\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/67970539?v=4\",\n      \"profile\": \"https://github.com/TamilNeram\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"mhtvsSFrpHdE\",\n      \"name\": \"mhtvsSFrpHdE\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/10773245?v=4\",\n      \"profile\": \"https://github.com/mhtvsSFrpHdE\",\n      \"contributions\": [\n        \"doc\"\n      ]\n    },\n    {\n      \"login\": \"kangurek-kao\",\n      \"name\": \"Krzysztof\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/116571935?v=4\",\n      \"profile\": \"https://github.com/kangurek-kao\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    },\n    {\n      \"login\": \"Howard20181\",\n      \"name\": \"Howard Wu\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/40033067?v=4\",\n      \"profile\": \"https://github.com/Howard20181\",\n      \"contributions\": [\n        \"code\"\n      ]\n    },\n    {\n      \"login\": \"arifpedia\",\n      \"name\": \"Arif Budiman\",\n      \"avatar_url\": \"https://avatars.githubusercontent.com/u/4081293?v=4\",\n      \"profile\": \"https://github.com/arifpedia\",\n      \"contributions\": [\n        \"translation\"\n      ]\n    }\n  ],\n  \"contributorsPerLine\": 7,\n  \"projectName\": \"Magpie\",\n  \"projectOwner\": \"Blinue\",\n  \"repoType\": \"github\",\n  \"repoHost\": \"https://github.com\",\n  \"skipCi\": true,\n  \"commitConvention\": \"angular\",\n  \"commitType\": \"docs\"\n}\n"
  },
  {
    "path": ".editorconfig",
    "content": "# Visual Studio 生成了具有 C++ 设置的 .editorconfig 文件。\nroot = true\n\n[*.{c++,cc,cpp,cppm,cxx,h,h++,hh,hpp,hxx,inl,ipp,ixx,tlh,tli}]\n\n# Visual C++ 代码样式设置\n\ncpp_generate_documentation_comments = xml\n\n# Visual C++ 格式设置\n\nindent_style = tab\nindent_size = 4\ntab_width= 4\ncpp_indent_braces = false\ncpp_indent_multi_line_relative_to = innermost_parenthesis\ncpp_indent_within_parentheses = indent\ncpp_indent_preserve_within_parentheses = false\ncpp_indent_case_contents = true\ncpp_indent_case_labels = false\ncpp_indent_case_contents_when_block = false\ncpp_indent_lambda_braces_when_parameter = false\ncpp_indent_goto_labels = one_left\ncpp_indent_preprocessor = leftmost_column\ncpp_indent_access_specifiers = false\ncpp_indent_namespace_contents = false\ncpp_indent_preserve_comments = false\ncpp_new_line_before_open_brace_namespace = same_line\ncpp_new_line_before_open_brace_type = same_line\ncpp_new_line_before_open_brace_function = same_line\ncpp_new_line_before_open_brace_block = same_line\ncpp_new_line_before_open_brace_lambda = same_line\ncpp_new_line_scope_braces_on_separate_lines = true\ncpp_new_line_close_brace_same_line_empty_type = true\ncpp_new_line_close_brace_same_line_empty_function = true\ncpp_new_line_before_catch = false\ncpp_new_line_before_else = false\ncpp_new_line_before_while_in_do_while = false\ncpp_space_before_function_open_parenthesis = remove\ncpp_space_within_parameter_list_parentheses = false\ncpp_space_between_empty_parameter_list_parentheses = false\ncpp_space_after_keywords_in_control_flow_statements = true\ncpp_space_within_control_flow_statement_parentheses = false\ncpp_space_before_lambda_open_parenthesis = false\ncpp_space_within_cast_parentheses = false\ncpp_space_after_cast_close_parenthesis = false\ncpp_space_within_expression_parentheses = false\ncpp_space_before_block_open_brace = true\ncpp_space_between_empty_braces = false\ncpp_space_before_initializer_list_open_brace = false\ncpp_space_within_initializer_list_braces = true\ncpp_space_preserve_in_initializer_list = true\ncpp_space_before_open_square_bracket = false\ncpp_space_within_square_brackets = false\ncpp_space_before_empty_square_brackets = false\ncpp_space_between_empty_square_brackets = false\ncpp_space_group_square_brackets = true\ncpp_space_within_lambda_brackets = false\ncpp_space_between_empty_lambda_brackets = false\ncpp_space_before_comma = false\ncpp_space_after_comma = true\ncpp_space_remove_around_member_operators = true\ncpp_space_before_inheritance_colon = true\ncpp_space_before_constructor_colon = true\ncpp_space_remove_before_semicolon = true\ncpp_space_after_semicolon = true\ncpp_space_remove_around_unary_operator = true\ncpp_space_around_binary_operator = insert\ncpp_space_around_assignment_operator = insert\ncpp_space_pointer_reference_alignment = left\ncpp_space_around_ternary_operator = insert\ncpp_use_unreal_engine_macro_formatting = true\ncpp_wrap_preserve_blocks = one_liners\n\n# Visual C++ 包含清理设置\n\ncpp_include_cleanup_add_missing_error_tag_type = none\ncpp_include_cleanup_remove_unused_error_tag_type = dimmed\ncpp_include_cleanup_optimize_unused_error_tag_type = suggestion\ncpp_include_cleanup_sort_after_edits = false\ncpp_sort_includes_error_tag_type = suggestion\ncpp_sort_includes_priority_case_sensitive = false\ncpp_sort_includes_priority_style = quoted\ncpp_includes_style = default\ncpp_includes_use_forward_slash = true\n"
  },
  {
    "path": ".gitattributes",
    "content": "###############################################################################\n# Set default behavior to automatically normalize line endings.\n###############################################################################\n* text=auto\n\n###############################################################################\n# Set default behavior for command prompt diff.\n#\n# This is need for earlier builds of msysgit that does not have it on by\n# default for csharp files.\n# Note: This is only used by command line\n###############################################################################\n#*.cs     diff=csharp\n\n###############################################################################\n# Set the merge driver for project and solution files\n#\n# Merging from the command prompt will add diff markers to the files if there\n# are conflicts (Merging from VS is not affected by the settings below, in VS\n# the diff markers are never inserted). Diff markers may cause the following \n# file extensions to fail to load in VS. An alternative would be to treat\n# these files as binary and thus will always conflict and require user\n# intervention with every merge. To do so, just uncomment the entries below\n###############################################################################\n#*.sln       merge=binary\n#*.csproj    merge=binary\n#*.vbproj    merge=binary\n#*.vcxproj   merge=binary\n#*.vcproj    merge=binary\n#*.dbproj    merge=binary\n#*.fsproj    merge=binary\n#*.lsproj    merge=binary\n#*.wixproj   merge=binary\n#*.modelproj merge=binary\n#*.sqlproj   merge=binary\n#*.wwaproj   merge=binary\n\n###############################################################################\n# behavior for image files\n#\n# image files are treated as binary by default.\n###############################################################################\n#*.jpg   binary\n#*.png   binary\n#*.gif   binary\n\n###############################################################################\n# diff behavior for common document formats\n# \n# Convert binary document formats to text before diffing them. This feature\n# is only available from the command line. Turn it on by uncommenting the \n# entries below.\n###############################################################################\n#*.doc   diff=astextplain\n#*.DOC   diff=astextplain\n#*.docx  diff=astextplain\n#*.DOCX  diff=astextplain\n#*.dot   diff=astextplain\n#*.DOT   diff=astextplain\n#*.pdf   diff=astextplain\n#*.PDF   diff=astextplain\n#*.rtf   diff=astextplain\n#*.RTF   diff=astextplain\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/01_bug.yaml",
    "content": "name: Bug 错误\ndescription: Report bugs 报告错误\nlabels: bug\nbody:\n- type: input\n  attributes:\n    label: Magpie version 程序版本\n  validations:\n    required: true\n- type: input\n  attributes:\n    label: Windows version 系统版本\n    placeholder: >\n      win10 2004\n  validations:\n    required: true\n- type: textarea\n  attributes:\n    label: Related screenshot (optional) 相关截图（可选）\n- type: textarea\n  attributes:\n    label: Reproduction steps 复现步骤\n    description: Describe the reproduction steps precisely if possible. 尽可能详细描述错误产生的细节。\n  validations:\n    required: true\n- type: textarea\n  attributes:\n    label: Log files 日志文件\n    description: >\n      Post the logs that in the `logs` folder, which will help analyse the causes. 上传logs目录中的文件有助于分析原因。\n\n      Please upload the logs as attachments, rather than copying the content of them. 请以附件的形式上传日志，而不是将其中的内容复制到正文中。\n  validations:\n    required: true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/02_performance.yaml",
    "content": "name: Performance 性能\ndescription: obvious performance problems at runtime 运行时有显著的性能衰减\nlabels: performance\nbody:\n- type: markdown\n  attributes:\n    value: >\n      Report the issues related with performance regression, such as output-lag / high usage of CPU / low FPS ...\n\n      如遇较为严重的性能问题例如卡顿、过高的性能占用、较低的帧率等异常情况，在此报告。\n- type: input\n  attributes:\n    label: Program(Game) 游戏名\n    placeholder: \"StarCraft\"\n  validations:\n    required: true\n- type: input\n  attributes:\n    label: Capture method 捕获模式\n    placeholder: \"GDI\"\n  validations:\n    required: true\n- type: textarea\n  attributes:\n    label: Related screenshot (optional) 相关截图（可选）\n- type: textarea\n  attributes:\n    label: Other information (optional) 补充信息（可选）\n- type: textarea\n  attributes:\n    label: Log files 日志文件\n    description: >\n      Post the logs that in the `logs` folder, which will help analyse the causes. 上传logs目录中的文件有助于分析原因。\n      \n      Please upload the logs as attachments, rather than copying the content of them. 请以附件的形式上传日志，而不是将其中的内容复制到正文中。\n  validations:\n    required: true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/03_request.yaml",
    "content": "name: Feature Request 功能请求\ndescription: Create the request for a new feature 提出一个增加新功能的请求\nlabels: enhancement\nbody:\n- type: markdown\n  attributes:\n    value: >\n      Make sure it hasn't been mentioned before. If you are recommending a new effect, please provide its name and existing shader implementations (if any). A comparison with existing effects is very helpful.\n\n      确保此类请求之前尚未被其他人提出过。如果你想推荐一个新的效果，请明确说明它的名称，适用场景以及已有的着色器实现（如果有的话），另外强烈建议你附上和现有效果的对比图。\n- type: textarea\n  attributes:\n    label: Expected behavior 预期的功能\n  validations:\n    required: true\n- type: textarea\n  attributes:\n    label: Alternative behavior (optional) 近似的功能（可选）\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/04_question.yaml",
    "content": "name: Q&A 问询\ndescription: Ask questions about Magpie 提出关于magpie的问题\nlabels: question\nbody:\n- type: markdown\n  attributes:\n    value: >\n      Before asking questions, make sure it hasn't been mentioned before.\n\n      提问之前应先检索以下列表检查是否已有相关的回答。\n\n      https://github.com/Blinue/Magpie/labels/question\n\n      https://github.com/Blinue/Magpie/wiki/FAQ\n\n      Issues about compilation can also be reported here. Check if you follow the instruction below.\n\n      编译相关的疑问也可在此提出，首先检查是否按照如下说明的流程编译。\n\n      https://github.com/Blinue/Magpie/wiki/%E7%BC%96%E8%AF%91%E6%8C%87%E5%8D%97\n\n      Don't ask questions about bugs. To open the right template from the previous selection.\n\n      程序报错不要使用此模板，应该返回上级重新选择 `Bug 错误` 选项。\n- type: textarea\n  attributes:\n    label: Question 问题\n  validations:\n    required: true\n- type: textarea\n  attributes:\n    label: Logs files (optional) 日志文件（可选）\n    description: >\n      It's not necessary but if you want to post to help describe your problem. 不必上传日志，但是你想借此描述你的问题也可以。\n      \n      Please upload the logs as attachments, rather than copying the content of them. 请以附件的形式上传日志，而不是将其中的内容复制到正文中。\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: true\ncontact_links:\n  - name: Discussions 讨论\n    url: https://github.com/Blinue/Magpie/discussions\n    about: Feel free to talk about something here 自由交流论坛\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where the package manifests are located.\n# Please see the documentation for all configuration options:\n# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates\n\nversion: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n"
  },
  {
    "path": ".github/workflows/build.yml",
    "content": "name: build\n\non:\n  push:\n    paths: [ '.github/workflows/build.yml', 'Magpie.slnx', '*.props', 'scripts/publish.py', 'src/**' ]\n  pull_request:\n    paths: [ '.github/workflows/build.yml', 'Magpie.slnx', '*.props', 'scripts/publish.py', 'src/**' ]\n\njobs:\n  build:\n    runs-on: windows-2025-vs2026\n    strategy:\n      matrix:\n        compiler: [\"MSVC\", \"ClangCL\"]\n        platform: [\"x64\", \"ARM64\"]\n\n    steps:\n    - uses: actions/checkout@v6\n\n    - uses: actions/setup-python@v6\n      with:\n        python-version: '3.13'\n\n    - name: Setup Conan\n      run: pip install conan\n\n    - name: Load Conan cache\n      uses: actions/cache@v5\n      with:\n        path: ~/.conan2/p\n        key: Conan-${{ hashFiles('src/**/conanfile.txt') }}-${{ matrix.compiler }}-${{ matrix.platform }}\n\n    - name: Build\n      if: github.ref != 'refs/heads/dev' && github.ref != 'refs/heads/main'\n      run: python scripts/publish.py --compiler=${{ matrix.compiler }} --platform=${{ matrix.platform }}\n\n    - name: Build and sign\n      if: github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/main'\n      run: python scripts/publish.py --compiler=${{ matrix.compiler }} --platform=${{ matrix.platform }} --pfx-path=certs\\Magpie.pfx --pfx-password=\"${{ secrets.MAGPIE_PFX_PASSWORD }}\"\n\n    - name: Save hash\n      id: hash\n      run: echo \"sha_short=$(git rev-parse --short HEAD)\" >> $env:GITHUB_OUTPUT\n\n    - name: Store build\n      uses: actions/upload-artifact@v7\n      with: \n          name: Magpie-dev-${{ steps.hash.outputs.sha_short }}-${{ matrix.compiler }}-${{ matrix.platform }}\n          path: ./publish/${{ matrix.platform }}\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: Publish release\n\non:\n  workflow_dispatch:\n    inputs:\n      major:\n        description: 'Major'\n        required: true\n        type: number\n      minor:\n        description: 'Minor'\n        required: true\n        type: number\n      patch:\n        description: 'Patch'\n        required: true\n        type: number\n      tag:\n        description: 'Tag'\n        required: false\n        type: string\n      prerelease:\n        description: 'Prerelease'\n        required: true\n        type: boolean\njobs:\n  build:\n    runs-on: windows-2025-vs2026\n    outputs:\n      tag: ${{ steps.tag.outputs.tag }}\n    strategy:\n      matrix:\n        platform: [\"x64\", \"ARM64\"]\n    steps:\n    - uses: actions/checkout@v6\n\n    - uses: actions/setup-python@v6\n      with:\n        python-version: '3.13'\n\n    - name: Setup Conan\n      run: pip install conan\n    \n    - name: Generate tag\n      id: tag\n      run: |\n        $tag = \"${{ inputs.tag }}\" -eq \"\" ? \"v${{ inputs.major }}.${{ inputs.minor }}.${{ inputs.patch }}\" : \"${{ inputs.tag }}\"\n        echo \"tag=$tag\" >> $env:GITHUB_OUTPUT\n\n    - name: Build\n      run: |\n        $versionString = \"${{ steps.tag.outputs.tag }}\" -replace \"^v(?=\\d)\", \"\"\n        python scripts/publish.py --compiler=ClangCL --platform=${{ matrix.platform }} --version-major=${{ inputs.major }} --version-minor=${{ inputs.minor }} --version-patch=${{ inputs.patch }} --version-string=$versionString --pfx-path=certs\\Magpie.pfx --pfx-password=\"${{ secrets.MAGPIE_PFX_PASSWORD }}\"\n    \n    - name: Store artifacts\n      uses: actions/upload-artifact@v7\n      with: \n          name: Magpie-${{ steps.tag.outputs.tag }}-${{ matrix.platform }}\n          path: publish/${{ matrix.platform }}\n  release:\n    runs-on: windows-latest\n    needs: build\n    steps:\n      - uses: actions/checkout@v6\n\n      - uses: actions/setup-python@v6\n        with:\n          python-version: '3.13'\n\n      - name: Setup Requests\n        run: pip install requests\n      \n      - name: Restore artifacts\n        uses: actions/download-artifact@v8\n        with:\n          path: publish\n      \n      - name: Publish release\n        run: python scripts/release.py ${{ inputs.major }} ${{ inputs.minor }} ${{ inputs.patch }} ${{ needs.build.outputs.tag }} ${{ inputs.prerelease }} ${{ secrets.CONTENTS_ACCESS_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/wiki.yml",
    "content": "name: Publish wiki\n\non:\n  push:\n    branches: [ main ]\n    paths: [ '.github/workflows/wiki.yml', 'docs/**', 'scripts/wiki.py' ]\n\njobs:\n  publish:\n    runs-on: windows-latest\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - uses: actions/setup-python@v6\n        with:\n          python-version: '3.13'\n\n      - name: Upload documentations to wiki\n        run: python scripts/wiki.py ${{ secrets.CONTENTS_ACCESS_TOKEN }}\n"
  },
  {
    "path": ".gitignore",
    "content": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore\n\n.conan/\nmy_*/\n\n# User-specific files\n*.rsuser\n*.suo\n*.user\n*.userosscache\n*.sln.docstates\n\n# User-specific files (MonoDevelop/Xamarin Studio)\n*.userprefs\n\n# Mono auto generated files\nmono_crash.*\n\n# Build results\n[Dd]ebug/\n[Dd]ebugPublic/\n[Rr]elease/\n[Rr]eleases/\nx64/\nx86/\n[Ww][Ii][Nn]32/\n[Aa][Rr][Mm]/\n[Aa][Rr][Mm]64/\nbld/\nbuild/\n[Bb]in/\n[Oo]bj/\n[Ll]og/\n[Ll]ogs/\n\n# Visual Studio 2015/2017 cache/options directory\n.vs/\n# Uncomment if you have tasks that create the project's static files in wwwroot\n#wwwroot/\n\n# Visual Studio 2017 auto generated files\nGenerated\\ Files/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n# NUnit\n*.VisualState.xml\nTestResult.xml\nnunit-*.xml\n\n# Build Results of an ATL Project\n[Dd]ebugPS/\n[Rr]eleasePS/\ndlldata.c\n\n# Benchmark Results\nBenchmarkDotNet.Artifacts/\n\n# .NET Core\nproject.lock.json\nproject.fragment.lock.json\nartifacts/\n\n# ASP.NET Scaffolding\nScaffoldingReadMe.txt\n\n# StyleCop\nStyleCopReport.xml\n\n# Files built by Visual Studio\n*_i.c\n*_p.c\n*_h.h\n*.ilk\n*.meta\n*.obj\n*.iobj\n*.pch\n*.pdb\n*.ipdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*_wpftmp.csproj\n*.log\n*.tlog\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.svclog\n*.scc\n\n# Chutzpah Test files\n_Chutzpah*\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opendb\n*.opensdf\n*.sdf\n*.cachefile\n*.VC.db\n*.VC.VC.opendb\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n*.sap\n\n# Visual Studio Trace Files\n*.e2e\n\n# TFS 2012 Local Workspace\n$tf/\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*/\n*.[Rr]e[Ss]harper\n*.DotSettings.user\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# AxoCover is a Code Coverage Tool\n.axoCover/*\n!.axoCover/settings.json\n\n# Coverlet is a free, cross platform Code Coverage Tool\ncoverage*.json\ncoverage*.xml\ncoverage*.info\n\n# Visual Studio code coverage results\n*.coverage\n*.coveragexml\n\n# NCrunch\n_NCrunch_*\n.*crunch*.local.xml\nnCrunchTemp_*\n\n# MightyMoose\n*.mm.*\nAutoTest.Net/\n\n# Web workbench (sass)\n.sass-cache/\n\n# Installshield output folder\n[Ee]xpress/\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish/\n\n# Publish Web Output\n*.[Pp]ublish.xml\n*.azurePubxml\n# Note: Comment the next line if you want to checkin your web deploy settings,\n# but database connection strings (with potential passwords) will be unencrypted\n*.pubxml\n*.publishproj\n\n# Microsoft Azure Web App publish settings. Comment the next line if you want to\n# checkin your Azure Web App publish settings, but sensitive information contained\n# in these scripts will be unencrypted\nPublishScripts/\n\n# NuGet Packages\n*.nupkg\n# NuGet Symbol Packages\n*.snupkg\n# The packages folder can be ignored because of Package Restore\n**/[Pp]ackages/*\n# except build/, which is used as an MSBuild target.\n!**/[Pp]ackages/build/\n# Uncomment if necessary however generally it will be regenerated when needed\n#!**/[Pp]ackages/repositories.config\n# NuGet v3's project.json files produces more ignorable files\n*.nuget.props\n*.nuget.targets\n\n# Microsoft Azure Build Output\ncsx/\n*.build.csdef\n\n# Microsoft Azure Emulator\necf/\nrcf/\n\n# Windows Store app package directories and files\nAppPackages/\nBundleArtifacts/\nPackage.StoreAssociation.xml\n_pkginfo.txt\n*.appx\n*.appxbundle\n*.appxupload\n\n# Visual Studio cache files\n# files ending in .cache can be ignored\n*.[Cc]ache\n# but keep track of directories ending in .cache\n!?*.[Cc]ache/\n\n# Others\nClientBin/\n~$*\n*~\n*.dbmdl\n*.dbproj.schemaview\n*.jfm\n*.pfx\n*.publishsettings\norleans.codegen.cs\n\n# Including strong name files can present a security risk\n# (https://github.com/github/gitignore/pull/2483#issue-259490424)\n#*.snk\n\n# Since there are multiple workflows, uncomment next line to ignore bower_components\n# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)\n#bower_components/\n\n# RIA/Silverlight projects\nGenerated_Code/\n\n# Backup & report files from converting an old project file\n# to a newer Visual Studio version. Backup files are not needed,\n# because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nUpgradeLog*.htm\nServiceFabricBackup/\n*.rptproj.bak\n\n# SQL Server files\n*.mdf\n*.ldf\n*.ndf\n\n# Business Intelligence projects\n*.rdl.data\n*.bim.layout\n*.bim_*.settings\n*.rptproj.rsuser\n*- [Bb]ackup.rdl\n*- [Bb]ackup ([0-9]).rdl\n*- [Bb]ackup ([0-9][0-9]).rdl\n\n# Microsoft Fakes\nFakesAssemblies/\n\n# GhostDoc plugin setting file\n*.GhostDoc.xml\n\n# Node.js Tools for Visual Studio\n.ntvs_analysis.dat\nnode_modules/\n\n# Visual Studio 6 build log\n*.plg\n\n# Visual Studio 6 workspace options file\n*.opt\n\n# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)\n*.vbw\n\n# Visual Studio 6 auto-generated project file (contains which files were open etc.)\n*.vbp\n\n# Visual Studio 6 workspace and project file (working project files containing files to include in project)\n*.dsw\n*.dsp\n\n# Visual Studio 6 technical files\n*.ncb\n*.aps\n\n# Visual Studio LightSwitch build output\n**/*.HTMLClient/GeneratedArtifacts\n**/*.DesktopClient/GeneratedArtifacts\n**/*.DesktopClient/ModelManifest.xml\n**/*.Server/GeneratedArtifacts\n**/*.Server/ModelManifest.xml\n_Pvt_Extensions\n\n# Paket dependency manager\n.paket/paket.exe\npaket-files/\n\n# FAKE - F# Make\n.fake/\n\n# CodeRush personal settings\n.cr/personal\n\n# Python Tools for Visual Studio (PTVS)\n__pycache__/\n*.pyc\n\n# Cake - Uncomment if you are using it\n# tools/**\n# !tools/packages.config\n\n# Tabs Studio\n*.tss\n\n# Telerik's JustMock configuration file\n*.jmconfig\n\n# BizTalk build output\n*.btp.cs\n*.btm.cs\n*.odx.cs\n*.xsd.cs\n\n# OpenCover UI analysis results\nOpenCover/\n\n# Azure Stream Analytics local run output\nASALocalRun/\n\n# MSBuild Binary and Structured Log\n*.binlog\n\n# NVidia Nsight GPU debugger configuration file\n*.nvuser\n\n# MFractors (Xamarin productivity tool) working folder\n.mfractor/\n\n# Local History for Visual Studio\n.localhistory/\n\n# Visual Studio History (VSHistory) files\n.vshistory/\n\n# BeatPulse healthcheck temp database\nhealthchecksdb\n\n# Backup folder for Package Reference Convert tool in Visual Studio 2017\nMigrationBackup/\n\n# Ionide (cross platform F# VS Code tools) working folder\n.ionide/\n\n# Fody - auto-generated XML schema\nFodyWeavers.xsd\n\n# VS Code files for those working on multiple tools\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n*.code-workspace\n\n# Local History for Visual Studio Code\n.history/\n\n# Windows Installer files from build outputs\n*.cab\n*.msi\n*.msix\n*.msm\n*.msp\n\n# JetBrains Rider\n*.sln.iml"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contribution Guide\n\n**First of all, thank you for spending your valuable time on this project!**\n\nMagpie is a personal project, initially inspired by IntegerScaler and Lossless Scaling. However, the project has become much more powerful than its predecessors. Due to the limited capability and energy of the developers, we welcome any form of contribution to this project! Magpie follows the [All Contributors](https://github.com/all-contributors/all-contributors) protocol. No matter in what form you contributed to the project (e.g. code, document, test, etc.), the developer will add you to the contributors list as long as you contributed enough.\n\nIf you are new here, we strongly recommend you to read [this article](https://opensourceway.community/open-source-guide/how-to-contribute/) (it's in Chinese).\n\nBelow are some types of contributions you might want to make:\n\n### I have a question 🙏\n\n[FAQ](https://github.com/Blinue/Magpie/wiki/FAQ_EN) includes most of the common questions asked. You can also search in [Issue](https://github.com/Blinue/Magpie/issues) and [Discussion](https://github.com/Blinue/Magpie/discussions) to see if anyone has raised the same question before. Feel free to go ahead and ask in Discussion if not.\n\n### I encountered an error 🐞\n\nMagpie hasn't been thoroughly tested, so errors are inevitable. We hope you can let us know about the errors, which helps everyone having the same problems.\n\nPlease start by searching the errors in Issues and Discussions to avoid duplicate questions. Please publish a [Issue (bug report)](https://github.com/Blinue/Magpie/issues/new?assignees=&labels=bug&template=01_bug.yaml). Here are some best practices to help the developers to quickly locate the error:\n\n1. Choose a clear and simple subject. For example, \"The rounded corner of windows in Windows 11 causes the top-left and bottom-right corners to be blurry\" is an excellent subject. \"Application Error,\" on the other hand, is hard to interpret.\n2. It is especially helpful to upload the log files, which are stored in the logs folder. **Please upload the logs as attachments rather than copying their content.**\n3. Please specify in details how to replicate the errors. It would be ideal if you also provide us with some screenshots.\n4. Additional information may be helpful for the developers. e.g. special display configurations, graphics card models, etc.\n\n### I have a feature request 🚀\n\nPlease share any \"whimsy\" you have with the developers! We merely added the features based on our experience. Your ideas, however, may make a difference!\n\nPlease search in [Issue](https://github.com/Blinue/Magpie/issues) first for your feature requests to make sure they're not duplicate. Please also check [Projects](https://github.com/Blinue/Magpie/projects) (in Chinese) to see if the features have already been implemented. Please submit a [Issue (feature request)](https://github.com/Blinue/Magpie/issues/new?assignees=&labels=enhancement&template=03_request.yaml) with detailed descriptions of your suggestion, for example, if other applications have implemented similar features.\n\n**If you'd like a new special effect to be added, please specify its name, use cases, and existing shader implementation (if exists). We also strongly recommend you to attach a comparison image with the current special effects.**\n\n### I'd like to contribute code 💻\n\nContributing code is the more direct way to help Magpie. You may fix bugs, add new features, or correct formatting issues. You are not limited by the magnitude of the contribution. Every line is important!\n\nLike all other open source projects, you need to initiate pull requests to contribute codes for Magpie. The developers may ask you to make some modifications. Your pull request may be closed if you fail to respond in a timely manner. You should merge your commits into the dev branch.\n\n**Note: once you contribute code to Magpie, you are agreeing to transfer the copyright of that code to the current copyright owner of Magpie.** This allows developers to make important decisions (like changing the license) without getting consent from every single contributor. The developers promise that the only changes in license will be shifting to newer versions of GPL. If you'd like to keep your copyrights, you will have to quit contributing and to apply the changes only to your forks.\n\nYou need to follow the following rules when contributing code:\n\n1. Keep in the same style as that of the current code, including no change-of-line for curly brackets, using tabs for indentation, the ways to name variables, classes, and source files, using UTF-8 without BOM encoding, preferring single-line comments, and using git-style messages, etc. Please install [XamlStyler](https://github.com/Xavalon/XamlStyler) for formatting XAML files. Here is an example:\n    ``` c++\n    // ClassName.h\n    \n    class ClassName {\n    public:\n        void Test1();\n\n    private:\n        void _PrivateTest1();\n\n        int _m1 = 0;\n    };\n    \n    // ClassName.cpp\n    \n    void ClassName::Test1() {\n        if (_m1 <= 0) {\n            ++_m1;\n        }\n    }\n\n    void ClassName::_PrivateTest1() {\n        try {\n            _m1 = std::stoi(\"123\");\n        } catch (std::exception& e) {\n            // Error Handling\n        }\n\n        int sum = 0;\n        for (int i = 0; i < _m1; ++i) {\n            sum += i;\n        }\n    }\n    ```\n2. Check [Projects](https://github.com/Blinue/Magpie/projects) or submit pull requests to communicate with the developers before you make major changes to make sure they align with the road map of the project.\n3. Your branch must compile.\n\n### I'd like to contribute translations 🌍\n\nWe are using Weblate for localization work. If you'd like to help translate Magpie into more languages, please visit https://hosted.weblate.org/projects/magpie.\n\n### I'd like to contribute to the documentations 📖\n\nBecause of the laziness of the developers, the documentation of Magpie is constantly missing or out of date. Contributions to documentation are more than welcome! The MagPie wiki is automatically published from the docs folder in the `main` branch, so editing the documentation follows the same procedures of contributing code.\n\nPlease merge to the `main` branch if you are improving the documentations of existing features. Otherwise merge to the `dev` branch. All changes in the `dev` branch will be merged to the `main` branch when new versions are released, this will also trigger the wiki will to be updated as well.\n\n### I'd like to fund Magpie 💰\n\nThe developers spend a lot of time every week to implement new features without getting paid. Currently there is no way to fund Magpie. Starring, forking, and advertising are the best ways to support us!\n"
  },
  {
    "path": "CONTRIBUTING_ZH.md",
    "content": "# 贡献指南\n\n**首先，感谢你将宝贵的时间花费在本项目上！** \n\nMagpie 是一个个人项目，最早启发于 IntegerScaler 和 Lossless Scaling，但现在它比前辈们强大的多。开发者的能力和精力有限，因此欢迎任何形式的贡献！Magpie 遵循 [All Contributors](https://github.com/all-contributors/all-contributors) 规范，无论你以何种形式做出贡献，诸如编写代码、撰写文档、用户测试等，只要你的贡献足够，开发者都会把你加入贡献者清单。\n\n如果你是新手，强烈推荐你读一下[这篇文章](https://opensourceway.community/open-source-guide/how-to-contribute/)。\n\n下面是一些你可能想做的贡献：\n\n### 我有一个问题 🙏\n\n[FAQ](https://github.com/Blinue/Magpie/wiki/FAQ) 汇总了常见的问题，你也可以搜索 [Issue](https://github.com/Blinue/Magpie/issues) 和 [Discussion](https://github.com/Blinue/Magpie/discussions) 看是否已经有人提出过。如果依然没有得到解答，请在 Discussion 中询问。\n\n### 我遇到了一个错误 🐞\n\nMagpie 没有广泛的测试过，因此错误不可避免。希望你能向开发者反馈这个错误，这样可以帮助所有和你遇到同样问题的人。\n\n首先请在 Issue 和 Discussion 中搜索你遇到的错误，避免和现有 Issue 重复。汇报错误时请发布一个 [Issue（bug report）](https://github.com/Blinue/Magpie/issues/new?assignees=&labels=bug&template=01_bug.yaml)，下面是一些有利于开发者快速定位问题的最佳实践：\n\n1. 选择一个清晰简洁的标题。如 “Windows 11窗口圆角导致游戏窗口超分后左下/右下角模糊” 是一个好标题，而 “应用程序错误” 则意义不明。\n2. 上传日志文件对定位问题特别有帮助，它们位于 logs 文件夹下。**请以附件的形式上传日志，而不是将其中的内容复制到正文中。**\n3. 请详细的描述复现步骤，最好提供一些截图。\n4. 还有一些信息可能对开发者有帮助，比如特殊的显示器配置，显卡型号等。\n\n### 我有一个功能建议 🚀\n\n你可能有一些关于 Magpie 的奇思妙想，请和开发者分享它们！开发者通常只是通过自己的使用经验添加新功能，但你的点子可能会使 Magpie 与众不同。\n\n首先请在 Issue 中搜索你的功能建议，确保不和已有的重复，尤其要查看 [Projects](https://github.com/Blinue/Magpie/projects) 里是否有这个功能。然后提交一个 [Issue (feature request)](https://github.com/Blinue/Magpie/issues/new?assignees=&labels=enhancement&template=03_request.yaml) 详细地描述你的建议，比如是否有其他软件实现了类似的功能。\n\n**如果你想建议一个新的效果，请明确说明它的名称，适用场景以及已有的着色器实现（如果有的话），另外强烈建议你附上和现有效果的对比图。**\n\n### 我想贡献代码 💻\n\n贡献代码是帮助 Magpie 项目最直接的方式，你可以修复 bug，增加新功能或修正格式错误。不要因为修改太小就羞于贡献，你的每一行修改都很重要。\n\n和所有开源项目一样，你需要提交 pull request 来向 Magpie 贡献代码。开发者可能会要求你做一些更改，如果你无法及时响应，你的 pull request 可能会被关闭。你应将提交合并到 dev 分支。\n\n**注意：一旦你向 Magpie 贡献代码，便表示你同意将该代码的版权转让给 Magpie 当前的版权所有者。** 这是为了使开发者做出重大决定（如更换许可证）时无需征得每一个贡献者的同意。开发者承诺 Magpie 项目更换许可证的唯一情形是迁移到更新版本的 GPL 协议。如果你想保留版权，只能放弃贡献，将更改保留在自己的 Fork 中。\n\n贡献代码时你需要遵守一些准则：\n\n1. 和现有的代码风格保持一致，包括花括号不换行，tab 缩进，变量、类、源文件等的命名方式，所有源码文件格式均为 UTF-8 without BOM，倾向于使用行注释，git 消息风格等等。格式化 XAML 文件时请安装 [XamlStyler](https://github.com/Xavalon/XamlStyler) 插件。下面是一个代码风格的示例：\n    ``` c++\n    // ClassName.h\n    \n    class ClassName {\n    public:\n        void Test1();\n\n    private:\n        void _PrivateTest1();\n\n        int _m1 = 0;\n    };\n    \n    // ClassName.cpp\n    \n    void ClassName::Test1() {\n        if (_m1 <= 0) {\n            ++_m1;\n        }\n    }\n\n    void ClassName::_PrivateTest1() {\n        try {\n            _m1 = std::stoi(\"123\");\n        } catch (std::exception& e) {\n            // 错误处理\n        }\n\n        int sum = 0;\n        for (int i = 0; i < _m1; ++i) {\n            sum += i;\n        }\n    }\n    ```\n2. 如果你要进行比较大的更改请先查看 [Projects](https://github.com/Blinue/Magpie/projects) 或提交 pull request 和开发者交流，确保和项目当前的方向一致。\n3. 你的分支必须可以通过编译检查。\n\n### 我想贡献翻译 🌍\n\n我们使用 Weblate 进行本地化工作。如果你想帮助将 Magpie 翻译成更多语言，请前往 https://hosted.weblate.org/projects/magpie 。\n\n### 我想贡献文档 📖\n\n因为开发者的懒惰，Magpie 的文档长期处于缺失/过时的状态，因此文档的贡献是非常欢迎的。Magpie 的 wiki 是从 main 分支的 docs 文件夹自动发布的，因此修改文档和[贡献代码](#我想贡献代码-)的方式相同。\n\n如果你想改进已发布功能的文档，请合并到 main 分支，否则请合并到 dev 分支。每次发布版本时，dev 分支的更改都将合并到 main 分支，wiki 也会相应的自动更新。\n\n### 我想资助 Magpie 💰\n\n请点击页面上方的 \"Sponsor\" 按钮，非常感谢你的支持。如果能从中获益，我便会将更多精力投入开源项目的开发和维护。\n"
  },
  {
    "path": "Directory.Build.props",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup Label=\"Configuration\">\n    <PreferredToolArchitecture Condition=\"'$(PreferredToolArchitecture)' == ''\">x64</PreferredToolArchitecture>\n  </PropertyGroup>\n  <ItemDefinitionGroup>\n    <ClCompile>\n      <LanguageStandard>stdcpp20</LanguageStandard>\n      <LanguageStandard_C>stdc17</LanguageStandard_C>\n      <ConformanceMode>true</ConformanceMode>\n      <!-- 禁用 RTTI ，因为它会导致二进制膨胀 -->\n      <RuntimeTypeInfo>false</RuntimeTypeInfo>\n      <SDLCheck>true</SDLCheck>\n      <MultiProcessorCompilation>true</MultiProcessorCompilation>\n      <WarningLevel>Level4</WarningLevel>\n      <!-- /utf-8: 源代码使用 UTF-8 格式 -->\n      <!-- /Zc:__cplusplus: 更新 __cplusplus 宏 -->\n      <!-- /volatile:iso: 禁用 volatile 的语义扩展 -->\n      <AdditionalOptions>/utf-8 /Zc:__cplusplus /volatile:iso %(AdditionalOptions)</AdditionalOptions>\n    </ClCompile>\n  </ItemDefinitionGroup>\n</Project>\n"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <https://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<https://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<https://www.gnu.org/licenses/why-not-lgpl.html>.\n"
  },
  {
    "path": "Magpie.slnx",
    "content": "<Solution>\n  <Configurations>\n    <Platform Name=\"ARM64\" />\n    <Platform Name=\"x64\" />\n  </Configurations>\n  <Folder Name=\"/Solution Items/\">\n    <File Path=\"Directory.Build.props\" />\n    <File Path=\"src/BuildOptions.props\" />\n    <File Path=\"src/Common.Post.props\" />\n    <File Path=\"src/Common.Pre.props\" />\n    <File Path=\"src/HybridCRT.props\" />\n    <File Path=\"src/WinUI.targets\" />\n  </Folder>\n  <Folder Name=\"/Solution Items/Natvis/\">\n    <File Path=\"natvis/magpie.natvis\" />\n    <File Path=\"natvis/phmap.natvis\" />\n    <File Path=\"natvis/rapidjson.natvis\" />\n  </Folder>\n  <Project Path=\"src/Effects/Effects.vcxproj\" Id=\"62503530-b84b-4cc2-80b6-3f89618172b7\" />\n  <Project Path=\"src/Magpie.Core/Magpie.Core.vcxproj\" Id=\"0e5205ae-dfa9-4cb8-b662-e43cd6512e2a\">\n    <BuildDependency Project=\"src/_ConanDeps/_ConanDeps.vcxproj\" />\n  </Project>\n  <Project Path=\"src/Magpie/Magpie.vcxproj\" Id=\"1239537c-e5b8-427a-9e7f-ea443d1f3529\" DefaultStartup=\"true\">\n    <BuildDependency Project=\"src/Effects/Effects.vcxproj\" />\n    <BuildDependency Project=\"src/TouchHelper/TouchHelper.vcxproj\" />\n    <BuildDependency Project=\"src/Updater/Updater.vcxproj\" />\n    <BuildDependency Project=\"src/_ConanDeps/_ConanDeps.vcxproj\" />\n  </Project>\n  <Project Path=\"src/Shared/Shared.vcxitems\" Id=\"aabda3a3-7b23-4189-895b-f68a4c6b14c2\" />\n  <Project Path=\"src/TouchHelper/TouchHelper.vcxproj\" Id=\"05b51bb8-08cb-4907-884f-8e2ad6bf6052\">\n    <BuildDependency Project=\"src/_ConanDeps/_ConanDeps.vcxproj\" />\n  </Project>\n  <Project Path=\"src/Updater/Updater.vcxproj\" Id=\"e82b7a20-0557-4dc1-b418-87977d7450a4\">\n    <BuildDependency Project=\"src/_ConanDeps/_ConanDeps.vcxproj\" />\n  </Project>\n  <Project Path=\"src/_ConanDeps/_ConanDeps.vcxproj\" Id=\"456ccae4-2c51-4cf2-8d3a-1efce8c41a2d\" />\n</Solution>\n"
  },
  {
    "path": "README.md",
    "content": "<br>\n<p align=\"center\">\n  <img src=\"./src/Magpie/Icons/SVG/Magpie Icon Full Disabled.svg\" width=\"150px\" height=\"150px\" alt=\"Logo\">\n</p>\n<h1 align=\"center\">Magpie</h1>\n\n<div align=\"center\">\n\n[![License](https://img.shields.io/github/license/Blinue/Magpie)](./LICENSE)\n[![build](https://github.com/Blinue/Magpie/actions/workflows/build.yml/badge.svg)](https://github.com/Blinue/Magpie/actions/workflows/build.yml)\n[![All Contributors](https://img.shields.io/github/all-contributors/Blinue/Magpie)](#acknowledgement-)\n[![Translation status](https://hosted.weblate.org/widget/magpie/svg-badge.svg)](https://hosted.weblate.org/engage/magpie)\n\n</div>\n\n🌍 **English** | [简体中文](./README_ZH.md)\n\nMagpie is a lightweight window upscaling tool that comes equipped with a variety of efficient scaling algorithms and filters.\n\n👉 [Download](https://github.com/Blinue/Magpie/releases)\n\n👉 [FAQ](https://github.com/Blinue/Magpie/wiki/FAQ%20(EN))\n\n👉 [Built-in effects](https://github.com/Blinue/Magpie/wiki/Built-in%20effects)\n\n👉 [Compilation guide](https://github.com/Blinue/Magpie/wiki/Compilation%20guide)\n\n## Features\n\n* Supports both fullscreen and windowed scaling\n* Includes a variety of built-in algorithms and filters, including [Anime4K](https://github.com/bloc97/Anime4K), [FSR](https://github.com/GPUOpen-Effects/FidelityFX-FSR), CRT shaders, and more\n* WinUI-based user interface with support for light and dark themes\n* Multi-monitor support\n\n## Screenshots\n\n<div style=\"display:flex; gap:10px;\">\n  <img src=\"img/main-window.png\" alt= \"Main window\" height=\"300\">\n  <img src=\"img/screenshot.png\" alt= \"Main window\" height=\"300\">\n</div>\n\n## Hints\n\n1. If you have set DPI scaling and the window you want to scale does not support high DPI (which is common in older games), it is recommended to first enter the program's compatibility settings and set \"High DPI scaling override\" to \"Application\".\n\n2. Some games support zooming the window, but with extremely naive algorithms. Please set the resolution to the built-in (best) option.\n\n## System requirements\n\n1. Windows 10 v1903+ or Windows 11\n2. DirectX feature level 11\n\n## Localization\n\nThanks to [Weblate](https://weblate.org) for hosting! Click the image below to visit the translation page.\n\n[![Translation status](https://hosted.weblate.org/widget/magpie/multi-auto.svg)](https://hosted.weblate.org/engage/magpie)\n\n## Acknowledgement\n\nThanks go to these wonderful people:\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Blinue\"><img src=\"https://avatars.githubusercontent.com/u/34770031?v=4?s=100\" width=\"100px;\" alt=\"Xu\"/><br /><sub><b>Xu</b></sub></a><br /><a href=\"#maintenance-Blinue\" title=\"Maintenance\">🚧</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/hooke007\"><img src=\"https://avatars.githubusercontent.com/u/41094733?v=4?s=100\" width=\"100px;\" alt=\"hooke007\"/><br /><sub><b>hooke007</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=hooke007\" title=\"Documentation\">📖</a> <a href=\"#question-hooke007\" title=\"Answering Questions\">💬</a> <a href=\"#userTesting-hooke007\" title=\"User Testing\">📓</a> <a href=\"https://github.com/Blinue/Magpie/commits?author=hooke007\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://palxex.ys168.com\"><img src=\"https://avatars.githubusercontent.com/u/58222?v=4?s=100\" width=\"100px;\" alt=\"Pal Lockheart\"/><br /><sub><b>Pal Lockheart</b></sub></a><br /><a href=\"#userTesting-palxex\" title=\"User Testing\">📓</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://www.stevedonaghy.com/\"><img src=\"https://avatars.githubusercontent.com/u/1029699?v=4?s=100\" width=\"100px;\" alt=\"Steve Donaghy\"/><br /><sub><b>Steve Donaghy</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=neoKushan\" title=\"Code\">💻</a> <a href=\"#translation-neoKushan\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://gyrojeff.top\"><img src=\"https://avatars.githubusercontent.com/u/30655701?v=4?s=100\" width=\"100px;\" alt=\"gyro永不抽风\"/><br /><sub><b>gyro永不抽风</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=JeffersonQin\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/ButtERRbrod\"><img src=\"https://avatars.githubusercontent.com/u/89013889?v=4?s=100\" width=\"100px;\" alt=\"ButtERRbrod\"/><br /><sub><b>ButtERRbrod</b></sub></a><br /><a href=\"#translation-ButtERRbrod\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/0x4E69676874466F78\"><img src=\"https://avatars.githubusercontent.com/u/4449851?v=4?s=100\" width=\"100px;\" alt=\"NightFox\"/><br /><sub><b>NightFox</b></sub></a><br /><a href=\"#translation-0x4E69676874466F78\" title=\"Translation\">🌍</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Tzugimaa\"><img src=\"https://avatars.githubusercontent.com/u/4981077?v=4?s=100\" width=\"100px;\" alt=\"Tzugimaa\"/><br /><sub><b>Tzugimaa</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=Tzugimaa\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/WHMHammer\"><img src=\"https://avatars.githubusercontent.com/u/35433952?v=4?s=100\" width=\"100px;\" alt=\"WHMHammer\"/><br /><sub><b>WHMHammer</b></sub></a><br /><a href=\"#translation-WHMHammer\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/kato-megumi\"><img src=\"https://avatars.githubusercontent.com/u/29451351?v=4?s=100\" width=\"100px;\" alt=\"kato-megumi\"/><br /><sub><b>kato-megumi</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=kato-megumi\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/MikeWang000000\"><img src=\"https://avatars.githubusercontent.com/u/11748152?v=4?s=100\" width=\"100px;\" alt=\"Mike Wang\"/><br /><sub><b>Mike Wang</b></sub></a><br /><a href=\"#userTesting-MikeWang000000\" title=\"User Testing\">📓</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://sammyhori.com\"><img src=\"https://avatars.githubusercontent.com/u/116026761?v=4?s=100\" width=\"100px;\" alt=\"Sammy Hori\"/><br /><sub><b>Sammy Hori</b></sub></a><br /><a href=\"#translation-sammyhori\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/NeilTohno\"><img src=\"https://avatars.githubusercontent.com/u/28284594?v=4?s=100\" width=\"100px;\" alt=\"NeilTohno\"/><br /><sub><b>NeilTohno</b></sub></a><br /><a href=\"#translation-NeilTohno\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/a0193143\"><img src=\"https://avatars.githubusercontent.com/u/32773311?v=4?s=100\" width=\"100px;\" alt=\"a0193143\"/><br /><sub><b>a0193143</b></sub></a><br /><a href=\"#translation-a0193143\" title=\"Translation\">🌍</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/soulset001\"><img src=\"https://avatars.githubusercontent.com/u/121711747?v=4?s=100\" width=\"100px;\" alt=\"soulset001\"/><br /><sub><b>soulset001</b></sub></a><br /><a href=\"#translation-soulset001\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/WluhWluh\"><img src=\"https://avatars.githubusercontent.com/u/52004526?v=4?s=100\" width=\"100px;\" alt=\"WluhWluh\"/><br /><sub><b>WluhWluh</b></sub></a><br /><a href=\"#design-WluhWluh\" title=\"Design\">🎨</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/SerdarSaglam\"><img src=\"https://avatars.githubusercontent.com/u/42881121?v=4?s=100\" width=\"100px;\" alt=\"Serdar Sağlam\"/><br /><sub><b>Serdar Sağlam</b></sub></a><br /><a href=\"#translation-SerdarSaglam\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/AndrusGerman\"><img src=\"https://avatars.githubusercontent.com/u/30560543?v=4?s=100\" width=\"100px;\" alt=\"Andrus Diaz German\"/><br /><sub><b>Andrus Diaz German</b></sub></a><br /><a href=\"#translation-AndrusGerman\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Kefir2105\"><img src=\"https://avatars.githubusercontent.com/u/103105829?v=4?s=100\" width=\"100px;\" alt=\"Kefir2105\"/><br /><sub><b>Kefir2105</b></sub></a><br /><a href=\"#translation-Kefir2105\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/animeojisan\"><img src=\"https://avatars.githubusercontent.com/u/132756551?v=4?s=100\" width=\"100px;\" alt=\"animeojisan\"/><br /><sub><b>animeojisan</b></sub></a><br /><a href=\"#translation-animeojisan\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/MuscularPuky\"><img src=\"https://avatars.githubusercontent.com/u/93962018?v=4?s=100\" width=\"100px;\" alt=\"MuscularPuky\"/><br /><sub><b>MuscularPuky</b></sub></a><br /><a href=\"#translation-MuscularPuky\" title=\"Translation\">🌍</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Zoommod\"><img src=\"https://avatars.githubusercontent.com/u/71239440?v=4?s=100\" width=\"100px;\" alt=\"Zoommod\"/><br /><sub><b>Zoommod</b></sub></a><br /><a href=\"#translation-Zoommod\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/fil08\"><img src=\"https://avatars.githubusercontent.com/u/125665523?v=4?s=100\" width=\"100px;\" alt=\"fil08\"/><br /><sub><b>fil08</b></sub></a><br /><a href=\"#translation-fil08\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/IsaiasYang\"><img src=\"https://avatars.githubusercontent.com/u/20205571?v=4?s=100\" width=\"100px;\" alt=\"攸羚\"/><br /><sub><b>攸羚</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=IsaiasYang\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://ohaiibuzzle.dev\"><img src=\"https://avatars.githubusercontent.com/u/23693150?v=4?s=100\" width=\"100px;\" alt=\"OHaiiBuzzle\"/><br /><sub><b>OHaiiBuzzle</b></sub></a><br /><a href=\"#translation-ohaiibuzzle\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Rastadu23\"><img src=\"https://avatars.githubusercontent.com/u/52637051?v=4?s=100\" width=\"100px;\" alt=\"Rastadu23\"/><br /><sub><b>Rastadu23</b></sub></a><br /><a href=\"#translation-Rastadu23\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/hauuau\"><img src=\"https://avatars.githubusercontent.com/u/52239673?v=4?s=100\" width=\"100px;\" alt=\"hauuau\"/><br /><sub><b>hauuau</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=hauuau\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/nellydocs\"><img src=\"https://avatars.githubusercontent.com/u/71311423?v=4?s=100\" width=\"100px;\" alt=\"nellydocs\"/><br /><sub><b>nellydocs</b></sub></a><br /><a href=\"#translation-nellydocs\" title=\"Translation\">🌍</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/funnyplanter\"><img src=\"https://avatars.githubusercontent.com/u/173073947?v=4?s=100\" width=\"100px;\" alt=\"funnyplanter\"/><br /><sub><b>funnyplanter</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=funnyplanter\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/eriforce\"><img src=\"https://avatars.githubusercontent.com/u/8393109?v=4?s=100\" width=\"100px;\" alt=\"Erich Yu\"/><br /><sub><b>Erich Yu</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=eriforce\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/TamilNeram\"><img src=\"https://avatars.githubusercontent.com/u/67970539?v=4?s=100\" width=\"100px;\" alt=\"தமிழ் நேரம்\"/><br /><sub><b>தமிழ் நேரம்</b></sub></a><br /><a href=\"#translation-TamilNeram\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/mhtvsSFrpHdE\"><img src=\"https://avatars.githubusercontent.com/u/10773245?v=4?s=100\" width=\"100px;\" alt=\"mhtvsSFrpHdE\"/><br /><sub><b>mhtvsSFrpHdE</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=mhtvsSFrpHdE\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/kangurek-kao\"><img src=\"https://avatars.githubusercontent.com/u/116571935?v=4?s=100\" width=\"100px;\" alt=\"Krzysztof\"/><br /><sub><b>Krzysztof</b></sub></a><br /><a href=\"#translation-kangurek-kao\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Howard20181\"><img src=\"https://avatars.githubusercontent.com/u/40033067?v=4?s=100\" width=\"100px;\" alt=\"Howard Wu\"/><br /><sub><b>Howard Wu</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=Howard20181\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/arifpedia\"><img src=\"https://avatars.githubusercontent.com/u/4081293?v=4?s=100\" width=\"100px;\" alt=\"Arif Budiman\"/><br /><sub><b>Arif Budiman</b></sub></a><br /><a href=\"#translation-arifpedia\" title=\"Translation\">🌍</a></td>\n    </tr>\n  </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://allcontributors.org/) specification. Contributions of any kind are welcome!\n\n## License\n\nThis project is licensed under GPLv3.\n"
  },
  {
    "path": "README_ZH.md",
    "content": "<br>\n<p align=\"center\">\n  <img src=\"./src/Magpie/Icons/SVG/Magpie Icon Full Disabled.svg\" width=\"150px\" height=\"150px\" alt=\"Logo\">\n</p>\n<h1 align=\"center\">Magpie</h1>\n\n<div align=\"center\">\n\n[![许可协议](https://img.shields.io/github/license/Blinue/Magpie)](./LICENSE)\n[![build](https://github.com/Blinue/Magpie/actions/workflows/build.yml/badge.svg)](https://github.com/Blinue/Magpie/actions/workflows/build.yml)\n[![All Contributors](https://img.shields.io/github/all-contributors/Blinue/Magpie)](#%E8%B4%A1%E7%8C%AE%E8%80%85-)\n[![翻译状态](https://hosted.weblate.org/widget/magpie/svg-badge.svg)](https://hosted.weblate.org/engage/magpie)\n\n</div>\n\n🌍 [English](./README.md) | **简体中文**\n\nMagpie 是一个轻量级的窗口超分辨率工具，内置众多高效的算法和滤镜。\n\n👉 [下载](https://github.com/Blinue/Magpie/releases)\n\n👉 [FAQ](https://github.com/Blinue/Magpie/wiki/FAQ)\n\n👉 [内置效果介绍](https://github.com/Blinue/Magpie/wiki/内置效果介绍)\n\n👉 [编译指南](https://github.com/Blinue/Magpie/wiki/编译指南)\n\n## 功能\n\n* 支持全屏和窗口模式缩放\n* 众多内置算法和滤镜，如 [Anime4K](https://github.com/bloc97/Anime4K)、[FSR](https://github.com/GPUOpen-Effects/FidelityFX-FSR)、CRT 着色器等\n* 基于 WinUI 的用户界面，支持浅色和深色主题\n* 支持多屏幕\n\n## 截图\n\n<div style=\"display:flex; gap:10px;\">\n  <img src=\"img/main-window-zh.png\" alt= \"Main window\" height=\"300\">\n  <img src=\"img/screenshot.png\" alt= \"Main window\" height=\"300\">\n</div>\n\n## 使用提示\n\n1. 如果你设置了 DPI 缩放，而要放大的窗口没有高 DPI 支持（这在老游戏中很常见），推荐首先进入该程序的兼容性设置，将“高 DPI 缩放替代”设置为“应用程序”。\n2. 一些游戏支持调整窗口的大小，但只使用简单的缩放算法，这时请先将其设为原始（最佳）分辨率。\n\n## 系统需求\n\n1. Windows 10 v1903+ 或 Windows 11\n2. DirectX 功能级别 11\n\n## 本地化\n\n感谢 [Weblate](https://weblate.org) 提供托管服务！点击下面的图片可以进入翻译页面。\n\n[![翻译状态](https://hosted.weblate.org/widget/magpie/multi-auto.svg)](https://hosted.weblate.org/engage/magpie)\n\n## 贡献者\n\n衷心感谢所有为本项目做出贡献的人：\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Blinue\"><img src=\"https://avatars.githubusercontent.com/u/34770031?v=4?s=100\" width=\"100px;\" alt=\"Xu\"/><br /><sub><b>Xu</b></sub></a><br /><a href=\"#maintenance-Blinue\" title=\"Maintenance\">🚧</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/hooke007\"><img src=\"https://avatars.githubusercontent.com/u/41094733?v=4?s=100\" width=\"100px;\" alt=\"hooke007\"/><br /><sub><b>hooke007</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=hooke007\" title=\"Documentation\">📖</a> <a href=\"#question-hooke007\" title=\"Answering Questions\">💬</a> <a href=\"#userTesting-hooke007\" title=\"User Testing\">📓</a> <a href=\"https://github.com/Blinue/Magpie/commits?author=hooke007\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://palxex.ys168.com\"><img src=\"https://avatars.githubusercontent.com/u/58222?v=4?s=100\" width=\"100px;\" alt=\"Pal Lockheart\"/><br /><sub><b>Pal Lockheart</b></sub></a><br /><a href=\"#userTesting-palxex\" title=\"User Testing\">📓</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://www.stevedonaghy.com/\"><img src=\"https://avatars.githubusercontent.com/u/1029699?v=4?s=100\" width=\"100px;\" alt=\"Steve Donaghy\"/><br /><sub><b>Steve Donaghy</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=neoKushan\" title=\"Code\">💻</a> <a href=\"#translation-neoKushan\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://gyrojeff.top\"><img src=\"https://avatars.githubusercontent.com/u/30655701?v=4?s=100\" width=\"100px;\" alt=\"gyro永不抽风\"/><br /><sub><b>gyro永不抽风</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=JeffersonQin\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/ButtERRbrod\"><img src=\"https://avatars.githubusercontent.com/u/89013889?v=4?s=100\" width=\"100px;\" alt=\"ButtERRbrod\"/><br /><sub><b>ButtERRbrod</b></sub></a><br /><a href=\"#translation-ButtERRbrod\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/0x4E69676874466F78\"><img src=\"https://avatars.githubusercontent.com/u/4449851?v=4?s=100\" width=\"100px;\" alt=\"NightFox\"/><br /><sub><b>NightFox</b></sub></a><br /><a href=\"#translation-0x4E69676874466F78\" title=\"Translation\">🌍</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Tzugimaa\"><img src=\"https://avatars.githubusercontent.com/u/4981077?v=4?s=100\" width=\"100px;\" alt=\"Tzugimaa\"/><br /><sub><b>Tzugimaa</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=Tzugimaa\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/WHMHammer\"><img src=\"https://avatars.githubusercontent.com/u/35433952?v=4?s=100\" width=\"100px;\" alt=\"WHMHammer\"/><br /><sub><b>WHMHammer</b></sub></a><br /><a href=\"#translation-WHMHammer\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/kato-megumi\"><img src=\"https://avatars.githubusercontent.com/u/29451351?v=4?s=100\" width=\"100px;\" alt=\"kato-megumi\"/><br /><sub><b>kato-megumi</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=kato-megumi\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/MikeWang000000\"><img src=\"https://avatars.githubusercontent.com/u/11748152?v=4?s=100\" width=\"100px;\" alt=\"Mike Wang\"/><br /><sub><b>Mike Wang</b></sub></a><br /><a href=\"#userTesting-MikeWang000000\" title=\"User Testing\">📓</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://sammyhori.com\"><img src=\"https://avatars.githubusercontent.com/u/116026761?v=4?s=100\" width=\"100px;\" alt=\"Sammy Hori\"/><br /><sub><b>Sammy Hori</b></sub></a><br /><a href=\"#translation-sammyhori\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/NeilTohno\"><img src=\"https://avatars.githubusercontent.com/u/28284594?v=4?s=100\" width=\"100px;\" alt=\"NeilTohno\"/><br /><sub><b>NeilTohno</b></sub></a><br /><a href=\"#translation-NeilTohno\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/a0193143\"><img src=\"https://avatars.githubusercontent.com/u/32773311?v=4?s=100\" width=\"100px;\" alt=\"a0193143\"/><br /><sub><b>a0193143</b></sub></a><br /><a href=\"#translation-a0193143\" title=\"Translation\">🌍</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/soulset001\"><img src=\"https://avatars.githubusercontent.com/u/121711747?v=4?s=100\" width=\"100px;\" alt=\"soulset001\"/><br /><sub><b>soulset001</b></sub></a><br /><a href=\"#translation-soulset001\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/WluhWluh\"><img src=\"https://avatars.githubusercontent.com/u/52004526?v=4?s=100\" width=\"100px;\" alt=\"WluhWluh\"/><br /><sub><b>WluhWluh</b></sub></a><br /><a href=\"#design-WluhWluh\" title=\"Design\">🎨</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/SerdarSaglam\"><img src=\"https://avatars.githubusercontent.com/u/42881121?v=4?s=100\" width=\"100px;\" alt=\"Serdar Sağlam\"/><br /><sub><b>Serdar Sağlam</b></sub></a><br /><a href=\"#translation-SerdarSaglam\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/AndrusGerman\"><img src=\"https://avatars.githubusercontent.com/u/30560543?v=4?s=100\" width=\"100px;\" alt=\"Andrus Diaz German\"/><br /><sub><b>Andrus Diaz German</b></sub></a><br /><a href=\"#translation-AndrusGerman\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Kefir2105\"><img src=\"https://avatars.githubusercontent.com/u/103105829?v=4?s=100\" width=\"100px;\" alt=\"Kefir2105\"/><br /><sub><b>Kefir2105</b></sub></a><br /><a href=\"#translation-Kefir2105\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/animeojisan\"><img src=\"https://avatars.githubusercontent.com/u/132756551?v=4?s=100\" width=\"100px;\" alt=\"animeojisan\"/><br /><sub><b>animeojisan</b></sub></a><br /><a href=\"#translation-animeojisan\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/MuscularPuky\"><img src=\"https://avatars.githubusercontent.com/u/93962018?v=4?s=100\" width=\"100px;\" alt=\"MuscularPuky\"/><br /><sub><b>MuscularPuky</b></sub></a><br /><a href=\"#translation-MuscularPuky\" title=\"Translation\">🌍</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Zoommod\"><img src=\"https://avatars.githubusercontent.com/u/71239440?v=4?s=100\" width=\"100px;\" alt=\"Zoommod\"/><br /><sub><b>Zoommod</b></sub></a><br /><a href=\"#translation-Zoommod\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/fil08\"><img src=\"https://avatars.githubusercontent.com/u/125665523?v=4?s=100\" width=\"100px;\" alt=\"fil08\"/><br /><sub><b>fil08</b></sub></a><br /><a href=\"#translation-fil08\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/IsaiasYang\"><img src=\"https://avatars.githubusercontent.com/u/20205571?v=4?s=100\" width=\"100px;\" alt=\"攸羚\"/><br /><sub><b>攸羚</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=IsaiasYang\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"http://ohaiibuzzle.dev\"><img src=\"https://avatars.githubusercontent.com/u/23693150?v=4?s=100\" width=\"100px;\" alt=\"OHaiiBuzzle\"/><br /><sub><b>OHaiiBuzzle</b></sub></a><br /><a href=\"#translation-ohaiibuzzle\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Rastadu23\"><img src=\"https://avatars.githubusercontent.com/u/52637051?v=4?s=100\" width=\"100px;\" alt=\"Rastadu23\"/><br /><sub><b>Rastadu23</b></sub></a><br /><a href=\"#translation-Rastadu23\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/hauuau\"><img src=\"https://avatars.githubusercontent.com/u/52239673?v=4?s=100\" width=\"100px;\" alt=\"hauuau\"/><br /><sub><b>hauuau</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=hauuau\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/nellydocs\"><img src=\"https://avatars.githubusercontent.com/u/71311423?v=4?s=100\" width=\"100px;\" alt=\"nellydocs\"/><br /><sub><b>nellydocs</b></sub></a><br /><a href=\"#translation-nellydocs\" title=\"Translation\">🌍</a></td>\n    </tr>\n    <tr>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/funnyplanter\"><img src=\"https://avatars.githubusercontent.com/u/173073947?v=4?s=100\" width=\"100px;\" alt=\"funnyplanter\"/><br /><sub><b>funnyplanter</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=funnyplanter\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/eriforce\"><img src=\"https://avatars.githubusercontent.com/u/8393109?v=4?s=100\" width=\"100px;\" alt=\"Erich Yu\"/><br /><sub><b>Erich Yu</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=eriforce\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/TamilNeram\"><img src=\"https://avatars.githubusercontent.com/u/67970539?v=4?s=100\" width=\"100px;\" alt=\"தமிழ் நேரம்\"/><br /><sub><b>தமிழ் நேரம்</b></sub></a><br /><a href=\"#translation-TamilNeram\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/mhtvsSFrpHdE\"><img src=\"https://avatars.githubusercontent.com/u/10773245?v=4?s=100\" width=\"100px;\" alt=\"mhtvsSFrpHdE\"/><br /><sub><b>mhtvsSFrpHdE</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=mhtvsSFrpHdE\" title=\"Documentation\">📖</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/kangurek-kao\"><img src=\"https://avatars.githubusercontent.com/u/116571935?v=4?s=100\" width=\"100px;\" alt=\"Krzysztof\"/><br /><sub><b>Krzysztof</b></sub></a><br /><a href=\"#translation-kangurek-kao\" title=\"Translation\">🌍</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/Howard20181\"><img src=\"https://avatars.githubusercontent.com/u/40033067?v=4?s=100\" width=\"100px;\" alt=\"Howard Wu\"/><br /><sub><b>Howard Wu</b></sub></a><br /><a href=\"https://github.com/Blinue/Magpie/commits?author=Howard20181\" title=\"Code\">💻</a></td>\n      <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/arifpedia\"><img src=\"https://avatars.githubusercontent.com/u/4081293?v=4?s=100\" width=\"100px;\" alt=\"Arif Budiman\"/><br /><sub><b>Arif Budiman</b></sub></a><br /><a href=\"#translation-arifpedia\" title=\"Translation\">🌍</a></td>\n    </tr>\n  </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\n本项目遵循 [all-contributors](https://allcontributors.org/) 规范，欢迎任何形式的贡献！\n\n## 许可协议\n\n本项目采用 GPLv3 许可协议。\n"
  },
  {
    "path": "Settings.XamlStyler",
    "content": "{\n    \"AttributesTolerance\": 1,\n    \"KeepFirstAttributeOnSameLine\": true,\n    \"MaxAttributeCharactersPerLine\": 0,\n    \"MaxAttributesPerLine\": 1,\n    \"NewlineExemptionElements\": \"RadialGradientBrush, GradientStop, LinearGradientBrush, ScaleTransform, SkewTransform, RotateTransform, TranslateTransform, Trigger, Condition, Setter\",\n    \"SeparateByGroups\": false,\n    \"AttributeIndentation\": 0,\n    \"AttributeIndentationStyle\": 1,\n    \"RemoveDesignTimeReferences\":  false,\n    \"IgnoreDesignTimeReferencePrefix\": false,\n    \"EnableAttributeReordering\": true,\n    \"AttributeOrderingRuleGroups\": [\n        \"x:Class\",\n        \"xmlns, xmlns:x\",\n        \"xmlns:*\",\n        \"x:Key, Key, x:Name, Name, x:Uid, Uid, Title\",\n        \"Grid.Row, Grid.RowSpan, Grid.Column, Grid.ColumnSpan, Canvas.Left, Canvas.Top, Canvas.Right, Canvas.Bottom\",\n        \"Width, Height, MinWidth, MinHeight, MaxWidth, MaxHeight\",\n        \"Margin, Padding, HorizontalAlignment, VerticalAlignment, HorizontalContentAlignment, VerticalContentAlignment, Panel.ZIndex\",\n        \"*:*, *\",\n        \"PageSource, PageIndex, Offset, Color, TargetName, Property, Value, StartPoint, EndPoint\",\n        \"mc:Ignorable, d:IsDataSource, d:LayoutOverrides, d:IsStaticText\",\n        \"Storyboard.*, From, To, Duration\"\n    ],\n    \"FirstLineAttributes\": \"\",\n    \"OrderAttributesByName\": true,\n    \"PutEndingBracketOnNewLine\": false,\n    \"RemoveEndingTagOfEmptyElement\": true,\n    \"SpaceBeforeClosingSlash\": true,\n    \"RootElementLineBreakRule\": 0,\n    \"ReorderVSM\": 2,\n    \"ReorderGridChildren\": false,\n    \"ReorderCanvasChildren\": false,\n    \"ReorderSetters\": 0,\n    \"FormatMarkupExtension\": true,\n    \"NoNewLineMarkupExtensions\": \"x:Bind, Binding\",\n    \"ThicknessSeparator\": 2,\n    \"ThicknessAttributes\": \"Margin, Padding, BorderThickness, ThumbnailClipMargin\",\n    \"FormatOnSave\": true,\n    \"CommentPadding\": 2,\n}\n"
  },
  {
    "path": "certs/.gitignore",
    "content": "!*.pfx"
  },
  {
    "path": "docs/About touch support.md",
    "content": "Due to OS security restrictions, Magpie requires UIAccess privileges to support touch input. Obtaining this privilege necessitates meeting two conditions:\n\n1. The application must possess a digital signature, and this signature must be verified by a certificate associated with a trusted root certificate authority store on the local machine.\n2. The application must reside in a \"secure location\", such as the Program Files or System32 folders.\n\nWhen enabling touch support, Magpie performs the following actions:\n\n1. Adds a self-signed certificate to the trusted root certificate authority store.\n2. Copies the TouchHelper.exe to `System32\\Magpie`. During scaling, Magpie runs this program to enable touch support.\n\nBoth of these actions constitute significant changes to the OS, thus requiring administrator privileges. If touch support is no longer needed, this option should be disabled. Magpie will then revert these changes, leaving no traces in the OS.\n\nTouch support may fail for various reasons, such as when TouchHelper.exe requires an update. In such cases, Magpie will request administrator privileges before scaling to resolve the issue.\n"
  },
  {
    "path": "docs/Built-in effects.md",
    "content": "Magpie ships with a handful of effects that can be used in combinations. Most of the effects have parameters that can be customized. All effects are stored in the `effects` folder. You can easily add effects if you are familiar with HLSL. Check the [MagpieFX](https://github.com/Blinue/Magpie/wiki/MagpieFX%20(EN)) page.\n\n## Introduction to shipped effects\n\n* ACNet: Port of [ACNetGLSL](https://github.com/TianZerL/ACNetGLSL). Suitable for anime-style images. Strong denoise effects.\n  * Output size: twice that of the input\n\n* AdaptiveSharpen: Self-adaptive sharpening algorithm. This algorithm focuses on sharpening the blurry edges in the images. Hence it has less image noise, ringing artifacts, and stripes compared to the common sharpening algorithms.\n  * Output size: the same as the input\n  * Parameter\n    * Sharpness\n\n* Anime4K_3D_AA_Upscale_US and Anime4K_3D_Upscale_US: 3D game scaling algorithms provided by Anime4K. The AA variant supports anti-aliasing.\n  * Output size: twice that of the input\n\n* Anime4K_Denoise_Bilateral_Mean, Anime4K_Denoise_Bilateral_Median, and Anime4K_Denoise_Bilateral_Mode: Denoise algorithms provided by Anime4K. Uses mean, median, and mode, respectively.\n  * Output size: the same as the input\n  * Parameter:\n    * Strength: Denoise magnitude\n\n* Anime4K_Restore family: Algorithms to restore the lines in animations. In increasing order of demand for computing power. The Soft variants are more conservative in sharpening.\n  * Output size: the same as the input\n\n* Anime4K_Thin_HQ: Algorithm to clarify lines in animations provided by Anime4K.\n  * Output size: the same as the input\n  * Parameters\n    * Strength: The strength in each iteration.\n    * Iterations: The number of iterations. Decreasing strength and increasing iterations improves the quality of the images, but will lower the processing speed.\n\n* Anime4K_Upscale family: Anime-style scaling algorithms provided by Anime4K. The denoise variant includes denoise functionality. The GAN variant, which keeps more details, is still under experiment.\n  * Output size: twice that of the input\n\n* Bicubic: Interpolation algorithms. The lite variant is fast, but at the cost of quality degradation, Suitable for users will weak graphics cards.\n  * Output size: determined by scale configuration\n  * Parameters\n    * B: Too large values will result in blurry images.\n    * C: Too large values will result in ring artifacts.\n  * Note: Different combinations of parameters will lead to different variants of the algorithm. For example: Mitchell(B=C≈0.333333), Catmull-Rom(B=0 C=0.5), bicubic Photoshop(B=0 C=0.75), Spline(B=1 C=0)\n\n* Bilinear：Bilinear interpolation\n  * Output size: determined by scale configuration\n\n* CAS: Port of [FidelityFX-CAS](https://github.com/GPUOpen-Effects/FidelityFX-CAS). Lightweight sharpening effects.\n  * Output size: the same as the input\n  * Parameter\n    * Sharpness\n\n* CAS_Scaling：Port [FidelityFX-CAS](https://github.com/GPUOpen-Effects/FidelityFX-CAS). Supports scaling\n  * Output size: the same as the input\n  * Parameter\n    * Sharpness\n\n* CRT_Easymode: Easy-to-configure lightweight CRT shader.\n  * Output size: determined by scale configuration\n  * Parameters\n    * Sharpness Horizontal\n    * Sharpness Vertical\n    * Mask Strength\n    * Mask Dot Width\n    * Mask Dot Height\n    * Mask Stagger\n    * Mask Size\n    * Scanline Strength\n    * Scanline Beam Width Min\n    * Scanline Beam Width Max\n    * Scanline Brightness Min\n    * Scanline Brightness Max\n    * Scanline Cutoff\n    * Gamma Input\n    * Gamma Output\n    * Brightness Boost\n    * Dilation\n\n* CRT_Geom: One of the most popular CRT shaders, designed to emulate the look of Arcade-machine. This implementation does not support interlacing simulation. Check [Emulation General Wiki](https://emulation.gametechwiki.com/index.php/CRT_Geom).\n  * Output size: determined by scale configuration\n  * Parameters\n    * Target Gamma\n    * Monitor Gamma\n    * Distance\n    * Curvature: Whether to emulate the screen curvature\n    * Curvature Radius\n    * Corner Size\n    * Corner Smoothness\n    * Horizontal Tilt\n    * Vertical Tilt\n    * Horizontal Overscan\n    * Vertical Overscan\n    * Dot Mask\n    * Sharpness: The larger the value is, the clear the image becomes\n    * Scanline Weight\n    * Luminance Boost\n  \n* CRT_Hyllian: Provides sharp and clear outputs with slight rims. Similar to Sony BVM displays.\n  * Output size: determined by scale configuration\n  * Parameters\n    * Phosphor\n    * Vertical Scanlines\n    * Input Gamma\n    * Output Gamma\n    * Sharpness\n    * Color Boost\n    * Red Boost\n    * Green Boost\n    * Blue Boost\n    * Scanline Strength\n    * Min Beam Width\n    * Max Beam Width\n    * Anti-Ringing\n\n* CRT_Lottes: Provides multiple masks emulating Bloom and Halation effects. Similar to CGA arcade displays.\n  * Output size: determined by scale configuration\n  * Parameters\n    * Scanline Hardness\n    * Pixel Hardness\n    * Horizontal Display Warp\n    * Vertical Display Warp\n    * Mask Dark\n    * Mask Light\n    * Shadow Mask\n    * Brightness Boost\n    * Bloom-X Soft\n    * Bloom-Y Soft\n    * Bloom Amount\n    * Filter Kernel Shape\n\n* CuNNy family：Suitable for visual novel-style images. The DS variants offer a subtle denoise effect. Provided by [CuNNy](https://github.com/funnyplanter/CuNNy)\n  * Output size: twice that of the input\n\n* CuNNy2 family: An enhanced version of CuNNy\n  * Output size: twice that of the input\n\n* Deband\n  * Output size: the same as the input\n  * Parameters\n    * Threshold：The threshold of difference below which a pixel is considered to be part of a gradient.\n    * Range：The range (in source pixels) at which to sample for neighbours.\n    * Iterations：The number of debanding iterations to perform. Each iteration samples from random positions, so increasing the number of iterations is likely to increase the debanding quality. Conversely, it slows the shader down.\n    * Grain：Add some extra noise to the image. This significantly helps cover up remaining banding and blocking artifacts, at comparatively little visual quality.\n\n* FineSharp: High-quality sharpening. The earliest version was the AviSynth script.\n  * Output size: the same as the input\n  * Parameters\n    * sstr: Sharpening strength. If you change this parameter, you will have to also change cstr. Check the note below.\n    * cstr: Balancing strength.\n    * xstr: The sharpening strength in the final step of the XSharpen style.\n    * xrep: To fix the artifacts in the last step of sharpening.\n  * Note: mapping between sstr and cstr (sstr->cstr): 0->0, 0.5->0.1, 1.0->0.6, 2.0->0.9, 2.5->1.00, 3.0->1.09, 3.5->1.15, 4.0->1.19, 8.0->1.249, 255.0->1.5\n\n* FSR_EASU: Port of the scaling step in [FidelityFX-FSR](https://github.com/GPUOpen-Effects/FidelityFX-FSR). The DX10 variant works on graphics cards supporting DirectX feature level, but will be slower.\n  * Output size: determined by scale configuration\n\n* FSR_RCAS: Port of the sharpening step in [FidelityFX-FSR](https://github.com/GPUOpen-Effects/FidelityFX-FSR).\n  * Output size: the same as the input\n  * Parameter\n    * sharpness\n\n* FSRCNNX: Port of FSRCNNX_x2_8-0-4-1\n  * Output size: twice that of the input\n\n* FSRCNNX_LineArt: Port of FSRCNNX_x2_8-0-4-1_LineArt\n  * Output size: twice that of the input\n\n* FXAA_Medium, FXAA_High, FXAA_Ultra: Fast anti-aliasing by approximation. In increasing order of demand to computing power.\n  * Output size: the same as the input\n\n* GTU_v050: Aims to emulate the blurry and mixed effects of CRT displays rather than masks or curvature. Supports scanning lines.\n  * Output size: determined by scale configuration\n  * Parameters\n    * Composite Connection\n    * No Scanlines\n    * Signal Resolution Y\n    * Signal Resolution I\n    * Signal Resolution Q\n    * TV Vertical Resolution\n    * Black Level\n    * Contrast\n\n* ImageAdjustment：Image parameters adjustment\n  * Output size: the same as the input\n  * Parameters\n    * Target Gamma\n    * Monitor Gamma\n    * Saturation\n    * Luminance\n    * Contrast\n    * Brightness Boost\n    * Black Level\n    * Red Channel\n    * Green Channel\n    * Blue Channel\n\n* Jinc: Scaling with the Jinc algorithm\n  * Output size: determined by scale configuration\n  * Parameters\n    * Window Sinc Param: The smaller the value is the sharper the images become. Must be greater than 0. Default value: 0.5\n    * Sinc Param: The larger the value is the sharper the images become. Must be greater than 0. Default value: 0.825\n    * Anti-ringing Strength: The greater the value is the better the effect becomes, but the images will be more blurry.\n\n* Lanczos: Scaling with the Lanczos algorithm.\n  * Output size: determined by scale configuration\n  * Parameters\n    * Anti-ringing Strength: The greater the value is the better the effect becomes, but the images will be more blurry.\n\n* LCAS：Lightweight 3D image scaling algorithm\n  * Output size: determined by scale configuration\n  * Parameter\n    * Sharpness\n\n* LumaSharpen: A popular sharpening effect in reshade.\n  * Output size: the same as the input\n  * Parameters\n    * Sharpening Strength\n    * Sharpening Limit: Anti-ringing strength.\n    * Sample Pattern: Filter type.\n    * Offset Bias: Filter bias.\n\n* MMPX：Pixel art scaling algorithm. It can add details while retaining the artistic style.\n  * Output size: twice that of the input\n\n* Nearest: Nearest neighbor interpolation\n  * Output size: determined by scale configuration\n\n* NIS: Port of [NVIDIA Image Scaling](https://github.com/NVIDIAGameWorks/NVIDIAImageScaling).\n  * Output size: determined by scale configuration\n  * Parameters\n    * Sharpness\n  * Note: Only supports upscaling.\n\n* NNEDI3 family：These shaders originally designed for deinterlacing and are also high-quality interpolation algorithms. NNEDI3_nns64_win8x6 produces higher quality results, but slower.\n  * Output size: twice that of the input\n\n* NVSharpen: Port of NVSharpen that was published along with NIS.\n  * Output size: the same as the input\n  * Parameter\n    * Sharpness\n\n* Pixellate: Scale with the Pixellate algorithm. Suitable for upscaling pixel arts.\n  * Output size: determined by scale configuration\n\n* RAVU family: Ported from https://github.com/bjin/mpv-prescalers\n  * Output size: twice that of the input\n\n* RAVU_Zoom family: Ported from https://github.com/bjin/mpv-prescalers\n  * Output size: determined by scale configuration\n  * Note: Only supports upscaling.\n\n* SharpBilinear: Scale with the Sharp-Bilinear algorithm. Suitable for upscaling pixel arts.\n  * Output size: determined by scale configuration\n\n* SGSR: Port of [Snapdragon Game Super Resolution v1](https://github.com/SnapdragonStudios/snapdragon-gsr/tree/main/sgsr/v1).\n  * Output size: determined by scale configuration\n  * Parameter\n    * Edge Sharpness: Edge sharpening intensity (The larger the value, the sharper the image.)\n    * Edge Threshold: Edge detection threshold\n\n* SMAA_Low, SMAA_Medium, SMAA_High, and SMAA_Ultra: SMAA anti-aliasing. In increasing order of demand for computing power.\n  * Output size: the same as the input\n\n* SSimDownscaler: Downscaling algorithm based on perceptron. Sharper than Catrom.\n  * Output size: determined by scale configuration\n  * Parameter\n    * Oversharp: The larger the value, the sharper the image.\n\n* xBRZ_2x, xBRZ_3x, xBRZ_4x, xBRZ_5x, and xBRZ_6x: Scale with the xBRZ algorithm. Suitable for upscaling pixel arts.\n  * Output size: determined by the variant.\n\n* xBRZ_Freescale and xBRZ_Freescale_Multipass: xBRZ algorithm supporting any scaling factor.\n  * Output size: determined by scale configuration\n"
  },
  {
    "path": "docs/Comparison of capture methods.md",
    "content": "Magpie provides several capture methods. They have their pros and cons in different scenarios. For general purposes, it's recommended to use Graphics Capture, as it provides the best compatibility and smoothness.\n\n| | Graphics Capture | Desktop Duplication | GDI | DwmSharedSurface |\n| :---: | :---: | :---: | :---: |:---: |\n| Supports DirectComposition (e.g. UWP) | Yes | Yes | No | No |\n| Supports recording/streaming | No under extreme conditions<sup>[1]</sup> | No | Yes | Yes |\n| Support the source window to span multiple screens | No under extreme conditions<sup>[1]</sup> | No | Yes | Yes |\n| Ignores DPI virtualization<sup>[2]</sup> | No | No | Yes| Yes |\n| Notes | The most recommended capture method | Requires Win10 v2004 | | Not recommended due to unstable performance |\n\n\n[1]: (1) The source window does not support regular window capture. (2) The operating system is Windows 11.\n\n[2]: The system will perform bicubic interpolation upscaling to windows that do not support DPI scaling. The capture methods supporting this options captures the images before such scaling.\n"
  },
  {
    "path": "docs/Compilation guide.md",
    "content": "### Prerequisites\n\nIn order to compile Magpie, you need to first install:\n\n1. The latest version of Visual Studio 2022 or 2026. You need to install both \"Desktop development with C++\" and \"Universal Windows Platform development\" workloads and Windows SDK build 26100 or newer.\n2. [CMake](https://cmake.org/)\n\n   You can also use the built-in CMake of Visual Studio, which is located at `%ProgramFiles%\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\CMake\\CMake\\bin`.\n3. [Python](https://www.python.org/) 3.11+\n4. [Conan](https://conan.io/)\n\n   ```bash\n   pip install conan\n   ```\n   \n   Make sure that the above dependencies have been added to the system path, and use the following commands to check:\n   ```bash\n   cmake --version\n   python --version\n   conan --version\n   ```\n\n### Compiling\n\n1. Clone the repo\n\n   ```bash\n   git clone https://github.com/Blinue/Magpie\n   ```\n\n2. Open the Magpie.slnx in the root directory and build the solution.\n\n### Enabling Touch Support\n\nTo enable touch input support, TouchHelper.exe needs to be signed. While signing is automatically done in the CI pipeline, you can also manually sign it. Follow these steps:\n\n1. Create a self-signed certificate and export it as a pfx file.\n2. Replace the `CERT_FINGERPRINT` constant in `src/Magpie/TouchHelper.cpp` with the SHA-1 hash (i.e., fingerprint) of your certificate.\n3. Run the following command in the root directory of the repository:\n\n```bash\npython scripts/publish.py --pfx-path=<pfx path> --pfx-password=<pfx password>\n```\n\nThis will compile Magpie and sign TouchHelper.exe. The compiled files will be located in `publish\\x64`.\n"
  },
  {
    "path": "docs/FAQ (EN).md",
    "content": "## Duplicate-monitoring\n\nWhen displaying performance monitor like RTSS (Rivatuner Statistics Server), there might be 2 OSD layers displayed with Magpie scaling. This is caused by d3d, the screen capture method since v0.7.0. It will be captured by RTSS as well. You can fix this issue by adding it to the blacklist.\n\n## The hot keys don't work, but \"Scale after `x`s\" works.\n\n1. Try changing the hot keys.\n2. Try running Magpie as Administrator.\n\n## Lagging/latency\n\nPlease check the [Performance optimization](https://github.com/Blinue/Magpie/wiki/Performance%20optimization) page.\n\n## Will using Magpie in multi-player games be detected as cheating?\n\nMagpie is designed to be non-intrusive, so it is unlikely to be detected as a cheating tool. There have been no reports of bans for using Magpie. Nevertheless, you should be aware of the risks of using the software.\n\n## What is \"3D game mode\"?\n\nEnabling this option can change the behavior of the cursor and in-game overlay to optimize for 3D games. It is recommended to turn on this option when scaling 3D games.\n\n## What is \"Disable DirectFlip\"?\n\nDirectFlip is a technology to reduce input lags, but it may cause trouble in some circumstances. Please turn on this option when you are in the following situationsL:\n\n1. The game lags unexpectedly (game known with the issue: Days Gone).\n2. Abnormal low frame rates.\n3. The screen freezes when streaming.\n\n## What is \"Simulate Exclusive Fullscreen?\"\n\nA lot of software checks whether there are games running under dedicated fullscreen mode before popping up windows. Turn on this option if you'd like to play in fullscreen without being disturbed,\n\n## What is the frame rate displayed in Magpie?\n\nThe frame rate displayed by Magpie is that of its own rather than that of the game. Due to the non-intrusive nature, Magpie has no way to detect the frame rates of games themselves. We recommend you to use tools like RTSS to display the games' frame rates. Their add-on layers can usually be captured by Magpie as well.\n\n## Does Magpie support touch input?\n\nSupported from v0.11, see [About touch support](https://github.com/Blinue/Magpie/wiki/About-touch-support) for details.\n\n### Does Magpie support frame generation?\n\nThere are no plans to implement frame generation. Magpie's goal is to improve visual quality, not performance, while post-processing frame generation is difficult to achieve a good enough result and adds latency. Game engines can use motion vectors and depth buffers to make improvements, but Magpie has no access to these. Similarly, FSR 2/3 are not on the development roadmap, as they need to be integrated internally and post-processing is almost impossible.\n\n## What is the relationship between Magpie and Lossless Scaling?\n\n[Lossless Scaling](https://store.steampowered.com/app/993090/Lossless_Scaling/) is a paid software on Steam that is similar to Magpie. When Magpie was released in February 2021, existing window scaling software (such as [IntegerScaler](https://tanalin.com/en/projects/integer-scaler/) and Lossless Scaling) only supported simple scaling algorithms like nearest-neighbor scaling and integer scaling. These programs relied on the [Magnification API](https://learn.microsoft.com/en-us/windows/win32/api/_magapi/) to function, which led to significant limitations.\n\nTo support advanced scaling algorithms, I developed and open-sourced Magpie, which implements scaling in a completely different way. Initially, Magpie only supported algorithms like Anime4K, Lanczos, and Adaptive Sharpen. However, based on user feedback, Magpie added support for FSR in [July 2021](https://github.com/Blinue/Magpie/commit/7f6c66f3b47ccd64da41d298faa7a8e185bd5299). Soon after, Lossless Scaling released version 1.4.0, which supported FSR in a similar way to Magpie.\n\nCurrently, Magpie and Lossless Scaling differ significantly. Magpie focuses on usability and supporting more scaling algorithms, while Lossless Scaling primarily aims to improve 3D game performance.\n"
  },
  {
    "path": "docs/FAQ.md",
    "content": "### 双重监控\n\n使用性能计数器屏显时，例如 RTSS (Rivatuner Statistics Server)，你可能会在缩放时看到两个叠加层。这是由于 Magpie 使用 Direct3D 呈现画面，它也会被 RTSS 捕捉。如果你不关心 Magpie 的性能，请将 Magpie 添加到黑名单。\n\n### 快捷键不起作用，但可以使用 \"`x` 秒后缩放\"\n\n1. 尝试更换快捷键\n2. 尝试以管理员身份运行 Magpie\n\n### 卡顿/延迟\n\n请查看[性能优化建议](https://github.com/Blinue/Magpie/wiki/性能优化建议)。\n\n### 在多人游戏中使用 Magpie 会被认定为作弊吗？\n\nMagpie 被设计为非侵入式，因此一般不会被识别为作弊工具。目前没有因使用 Magpie 被封禁的报告。尽管如此，你应该了解到使用本软件的风险。\n\n### 什么是“禁用 DirectFlip”？\n\nDirectFlip 是一种用于降低输入延迟的技术，但可能会在一些情况下造成问题。如果你遇到了下面的情形，可以尝试打开这个选项：\n\n1. 游戏异常卡顿（已知游戏：Days Gone）\n2. 不正常的低帧率\n3. 串流时画面冻结\n\n### 什么是“3D 游戏模式”？\n\n此选项可以更改光标和游戏内叠加层的行为以适配 3D 游戏，建议在缩放 3D 游戏时开启此选项。\n\n### 什么是“模拟独占全屏”？\n\n很多软件弹窗或推送前会先检查是否有独占全屏的游戏，开启此选项可以让你在全屏状态下不受打扰。一些用户报告开启此选项后游戏可能无法正常启动 [#495](https://github.com/Blinue/Magpie/issues/495)，如果你遇到了类似的问题，请关闭它。\n\n### Magpie 中显示的帧率是什么？\n\nMagpie 显示的是自己的帧率而不是游戏的，基于非侵入性原则，Magpie 无法获知游戏的帧率。建议使用 RTSS 等工具显示游戏帧率，它们的叠加层一般也可以被 Magpie 捕获到。\n\n### 是否支持触控？\n\n从 v0.11 开始支持，详情见[关于触控支持](https://github.com/Blinue/Magpie/wiki/关于触控支持)。\n\n### 是否支持帧生成？\n\n目前没有实现帧生成的计划。Magpie 的目的是提高游戏画质而不是性能，后处理补帧很难达到足够好的观感，而且还会增加延迟。游戏引擎可以使用运动矢量和深度缓冲以进行改善，但 Magpie 不具备这种条件。与之同理，FSR 2/3 也不在开发计划内，因其必须采用内部集成，后处理几乎无法实现。\n\n### Magpie 和 Lossless Scaling 有何关系？\n\n[Lossless Scaling](https://store.steampowered.com/app/993090/Lossless_Scaling/) 是 Steam 上的一款和 Magpie 功能类似的收费软件。Magpie 于 2021 年 2 月问世，当时市面上的窗口缩放软件（如 [IntegerScaler](https://tanalin.com/en/projects/integer-scaler/) 和 Lossless Scaling）仅支持简单的缩放算法，如最近邻缩放和整数倍缩放。这些软件的核心功能使用 [Magnification API](https://learn.microsoft.com/en-us/windows/win32/api/_magapi/) 实现，因此存在很大的局限性。\n\n为了支持更高级的缩放算法，我开发并开源了 Magpie，它采用了完全不同的方式来实现缩放。最初，Magpie 仅支持 Anime4K、Lanczos、Adaptive Sharpen 等算法。在用户的反馈下，Magpie 在 [2021 年 7 月](https://github.com/Blinue/Magpie/commit/7f6c66f3b47ccd64da41d298faa7a8e185bd5299)加入了对 FSR 的支持。不久之后，Lossless Scaling 推出了 1.4.0 版本，采用与 Magpie 类似的方式支持 FSR。\n\n现在，Magpie 和 Lossless Scaling 有很大的不同。Magpie 的重点是可用性和支持更多的缩放算法，而 Lossless Scaling 则主要聚焦于提高 3D 游戏的性能。\n"
  },
  {
    "path": "docs/Home (EN).md",
    "content": "[Chinese version](https://github.com/Blinue/Magpie/wiki/)\n\nWelcome to the Magpie Wiki. Please read [CONTRIBUTING](https://github.com/Blinue/Magpie/blob/dev/CONTRIBUTING.md) if you'd like to contribute the the documentations.\n"
  },
  {
    "path": "docs/Home.md",
    "content": "[English version](https://github.com/Blinue/Magpie/wiki/Home%20(EN))\n\n欢迎来到 Magpie Wiki。如果你想贡献文档，请阅读[贡献指南](https://github.com/Blinue/Magpie/blob/main/CONTRIBUTING_ZH.md#%E6%88%91%E6%83%B3%E8%B4%A1%E7%8C%AE%E6%96%87%E6%A1%A3-)。\n"
  },
  {
    "path": "docs/Interact with Magpie programally.md",
    "content": "Magpie provides mechanisms for interaction with other programs. Through these mechanisms, your application can cooperate with Magpie.\n\n[MagpieWatcher](https://github.com/Blinue/MagpieWatcher) demonstrates how to use these mechanisms.\n\n## How to Receive Notifications When Scaling State Changes\n\nYou should listen for the `MagpieScalingChanged` message.\n\n```c++\nUINT WM_MAGPIE_SCALINGCHANGED = RegisterWindowMessage(L\"MagpieScalingChanged\");\n```\n\n### Parameters\n\nThe `wParam` parameter indicates the event ID, and the meaning of `lParam` varies depending on the event. The following events are supported:\n\n* 0: Scaling has ended or the source window has lost focus. `lParam` is 0 if scaling has ended, or 1 if the source window has lost focus.\n* 1: Scaling has started or the source window has returned to the foreground. `lParam` contains the handle of the scaled window.\n* 2: The scaled window’s position or size has changed. This event is exclusive to windowed scaling.\n* 3: User has started resizing or moving the scaled window. This event is exclusive to windowed scaling.\n\n### Notes\n\nIf your process has a higher integrity level than Magpie, you won't receive messages broadcasted by Magpie due to User Interface Privilege Isolation (UIPI). In such cases, call [ChangeWindowMessageFilterEx](https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-changewindowmessagefilterex) to allow receiving the `MagpieScalingChanged` message.\n\n```c++\nChangeWindowMessageFilterEx(hYourWindow, WM_MAGPIE_SCALINGCHANGED, MSGFLT_ADD, nullptr);\n```\n\n## How to Get the Handle of the Scaled Window\n\nYou can listen for the `MagpieScalingChanged` message to obtain the handle of the scaled window. Additionally, while Magpie is scaling, you can also search for the window with the class name `Window_Magpie_967EB565-6F73-4E94-AE53-00CC42592A22`. Magpie ensures that this class name remains unchanged and that only one scaled window exists at a time.\n\n```c++\nHWND hwndScaling = FindWindow(L\"Window_Magpie_967EB565-6F73-4E94-AE53-00CC42592A22\", nullptr);\n```\n\n## How to Place Your Window Above the Scaled Window\n\nYou should listen for the `MagpieScalingChanged` message and adjust your window's Z-order accordingly. Below is a simple example. For more advanced use cases, refer to [MagpieWatcher](https://github.com/Blinue/MagpieWatcher).\n\n```c++\nif (message == WM_MAGPIE_SCALINGCHANGED) {\n    if (wParam == 0) {\n        // Remove topmost status\n        SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);\n    } else if (wParam == 1) {\n        // Ensure your window stays above the scaled window\n        SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);\n    }\n}\n```\n\n## How to Obtain Scaling Information\n\nScaling information is stored in the [window properties](https://learn.microsoft.com/en-us/windows/win32/winmsg/about-window-properties) of the scaled window. Currently available properties include:\n\n* `Magpie.Windowed`：Indicates whether Magpie is performing windowed scaling\n* `Magpie.SrcHWND`: Handle of the source window\n* `Magpie.SrcLeft`、`Magpie.SrcTop`、`Magpie.SrcRight`、`Magpie.SrcBottom`: Source region of scaling\n* `Magpie.DestLeft`、`Magpie.DestTop`、`Magpie.DestRight`、`Magpie.DestBottom`: Destination region of scaling\n\n```c++\nHWND hwndSrc = (HWND)GetProp(hwndScaling, L\"Magpie.SrcHWND\");\nbool isWindowed = (bool)GetProp(hwndScaling, L\"Magpie.Windowed\");\n\nRECT srcRect;\nsrcRect.left = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.SrcLeft\");\nsrcRect.top = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.SrcTop\");\nsrcRect.right = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.SrcRight\");\nsrcRect.bottom = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.SrcBottom\");\n\nRECT destRect;\ndestRect.left = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.DestLeft\");\ndestRect.top = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.DestTop\");\ndestRect.right = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.DestRight\");\ndestRect.bottom = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.DestBottom\");\n```\n\n### Notes\n\n1. These properties are only guaranteed to exist after the scaled window has completed its initialization. Therefore, it is advisable to check whether the scaled window is visible before retrieving these properties, especially when the window handle is obtained using the class name.\n2. The coordinates stored in these properties are not DPI-virtualized. To use them correctly, you need to set your application's DPI awareness level to Per-Monitor V2. For more details, please refer to [High DPI Desktop Application Development on Windows](https://learn.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows).\n"
  },
  {
    "path": "docs/MagpieFX (EN).md",
    "content": "MagpieFX is based on DirectX 11 compute shader\n\n``` hlsl\n//!MAGPIE EFFECT\n//!VERSION 4\n// Use the \"USE\" directive to declare the features being utilized. The following values can be combined:\n// MulAdd: Enables the \"MulAdd\" function.\n//!USE MulAdd\n// Use the \"CAPABILITY\" directive to declare the capabilities supported by this effect. Whether they\n// are enabled depends on user configuration. The following values can be combined:\n// FP16: Declares support for FP16.\n//!CAPABILITY FP16\n// Use \"SORT_NAME\" to specify the name used for sorting, otherwise the files will be sorted by their file\n// names.\n//!SORT_NAME test1\n\n// The following line helps reduce errors in the IDE. It is optional.\n#include \"StubDefs.hlsl\"\n\n// Definition of parameters\n//!PARAMETER\n// \"LABEL\" refers to the name of the parameter that is displayed on the user interface.\n//!LABEL Sharpness\n// \"DEFAULT\", \"MIN\", \"MAX\", and \"STEP\" are all required.\n//!DEFAULT 0.1\n//!MIN 0.01\n//!MAX 5\n//!STEP 0.01\nfloat sharpness;\n\n\n// Definition of textures\n// \"INPUT\" and \"OUTPUT\" are special keywords.\n// \"INPUT\" cannot be used as the output of a pass; \"OUTPUT\" cannot be used as the input of a pass.\n// Only the last pass is allowed to write to OUTPUT, and it must write only to OUTPUT.\n// Defining INPUT/OUTPUT is optional, but it is recommended to define them explicitly for the\n// sake of semantic completeness.\n// The size of the OUTPUT represents the output size of this effect. Not specifying it indicates\n// support for output of any size.\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n// You can use some pre-defined constants to calculate texture size.\n// INPUT_WIDTH\n// INPUT_HEIGHT\n// OUTPUT_WIDTH\n// OUTPUT_HEIGHT\n\n// Supported texture formats:\n// R32G32B32A32_FLOAT\n// R16G16B16A16_FLOAT\n// R16G16B16A16_UNORM\n// R16G16B16A16_SNORM\n// R32G32_FLOAT\n// R10G10B10A2_UNORM\n// R11G11B10_FLOAT\n// R8G8B8A8_UNORM\n// R8G8B8A8_SNORM\n// R16G16_FLOAT\n// R16G16_UNORM\n// R16G16_SNORM\n// R32_FLOAT\n// R8G8_UNORM\n// R8G8_SNORM\n// R16_FLOAT\n// R16_UNORM\n// R16_SNORM\n// R8_UNORM\n// R8_SNORM\n// The definition of a texture in a pass varies depending on its format. For example, when the texture\n// format is R8G8_UNORM, it is defined as Texture2D<float2> when used as an input and\n// RWTexture2D<unorm float2> when used as an output.\n// When FP16 is enabled, eligible textures will be defined using the min16float type. For instance,\n// an R8G8_UNORM texture will be defined as Texture2D<min16float2> for input and\n// RWTexture2D<unorm min16float2> for output.\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH + 100\n//!HEIGHT INPUT_HEIGHT + 100\n//!FORMAT R8G8B8A8_UNORM\nTexture2D tex1;\n\n// Definition of samplers\n// \"FILTER\" is required，\"ADDRESS\" is optional\n// The default value of \"ADDRESS\" is \"CLAMP\"\n\n//!SAMPLER\n//!FILTER LINEAR\n//!ADDRESS CLAMP\nSamplerState sam1;\n\n//!SAMPLER\n//!FILTER POINT\n//!ADDRESS WRAP\nSamplerState sam2;\n\n// Code block shared by all passes\n\n//!COMMON\n#define PI 3.14159265359\n\n// Definition of passes\n\n//!PASS 1\n// This description will appear in the in-game overlay.\n//!DESC First Pass\n// You can use a PS-like style, but it will still be implemented with CS.\n// The default value of \"STYLE\" is \"CS\".\n//!STYLE PS\n//!IN INPUT\n// Supports multiple render targets, up to 8.\n//!OUT tex1\n\nfloat func1() {\n}\n\n// \"Pass[n]\" is the entry point of the pass.\nMF4 Pass1(float2 pos) {\n    return MF4(1, 1, 1, 1);\n}\n\n//!PASS 2\n//!IN INPUT, tex1\n// The output of the last pass must be \"OUTPUT\".\n//!OUT OUTPUT\n// \"BLOACK_SIZE\" specifies how large an area is processed in one dispatch.\n// \"BLOACK_SIZE\" can have only one dimension, meaning that length and height are specified at the same time.\n//!BLOCK_SIZE 16, 16\n// \"NUM_THREADS\" specifies how many parallel threads are involved in a single dispatch.\n// \"NUM_THREADS\" can be less than three dimensions, and the missing dimensions are assumed to be 1\n// by default.\n//!NUM_THREADS 64, 1, 1\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n    // Write to OUPUT\n    OUTPUT[blockStart] = MF4(1,1,1,1);\n}\n```\n\n### Predefined functions\n\n**uint2 GetInputSize()**: Retrieves the size of the input texture.\n\n**float2 GetInputPt()**: Retrieves the size of pixel in the input texture.\n\n**uint2 GetOutputSize()**: Retrieves the size of the output texture.\n\n**float2 GetOutputPt()**: Retrieves the size of pixel in the output texture.\n\n**float2 GetScale()**: Retrieves the scaling factor between the output texture and the input texture.\n\n**uint2 Rmp8x8(uint id)**: Maps the values of 0 to 63 to coordinates in an 8x8 square in swizzle order, which can improve texture cache hit rate.\n\n**MF{n} MulAdd(MF{m} x, MF{m}x{n} y, MF{n} a)**: Equivalent to `mul(x, y) + a`, but with higher performance, making it particularly useful for machine learning-based effects. To use this function, you must declare \"USE MulAdd\". For details, see [#1049](https://github.com/Blinue/Magpie/pull/1049).\n\n\n### Predefined macros\n\n**MP_BLOCK_WIDTH, MP_BLOCK_HEIGHT**: The size of the block being processed in the current pass (specified by \"BLOCK_SIZE\").\n\n**MP_NUM_THREADS_X, MP_NUM_THREADS_Y, MP_NUM_THREADS_Z** : The number of threads per thread group in the current pass (specified by \"NUM_THREADS\").\n\n**MP_PS_STYLE**: Whether the current pass is a pixel shader style pass (specified by \"STYLE\").\n\n**MP_INLINE_PARAMS**: Whether the parameters for the current pass are static constants (specifed by user).\n\n**MP_DEBUG**: Whether the shader is being compiled in debug mode (when compiling shaders in debug mode, they are not optimized and contain debug information).\n\n**MP_FP16**: Whether to use half-precision floating-point numbers.\n\n**MF, MF1, MF2, ..., MF4x4**: Floating-point data types that conform to MP_FP16. When half-precision is not specified, they are aliases for float..., otherwise they are aliases for min16float...\n\n\n### Multiple Render Targets (MRT)\n\nIn PS-style, the OUT instruction allows specifying multiple outputs (up to 8 due to DirectX limitations).\n``` hlsl\n//!OUT tex1, tex2\n```\n\nNow the entry point has a different signature:\n``` hlsl\nvoid Pass1(float2 pos, out MF4 target1, out MF4 target2);\n```\n\n### Load texture from file\n\n``` hlsl\n//!TEXTURE\n//!SOURCE test.bmp\nTexture2D testTex;\n```\n\nThe TEXTURE instruction supports loading textures from files in common image formats such as BMP, PNG, JPG, and DDS. For DDS files, only 2D textures are supported, but mipmaps are allowed. FORMAT can be optionally specified to help the parser generate the correct definition. If FORMAT is not specified, it is always assumed to be of type float4.\n\nTextures loaded from files cannot be used as the output of passes.\n"
  },
  {
    "path": "docs/MagpieFX.md",
    "content": "MagpieFX 基于 DirectX 11 计算着色器\n\n``` hlsl\n//!MAGPIE EFFECT\n//!VERSION 4\n// 使用 USE 指令声明使用的功能，支持以下值的组合：\n// MulAdd：使 MulAdd 函数可用\n//!USE MulAdd\n// 使用 CAPABILITY 指令声明效果所支持的技术，但是否使用这些技术取决于用户配置。支持以下值的组合：\n// FP16：声明对 FP16 的支持\n//!CAPABILITY FP16\n// 使用 SORT_NAME 指定排序时使用的名字，否则按照文件名排序\n//!SORT_NAME test1\n\n// 下面一行可以减少 IDE 中的错误。它是可选的\n#include \"StubDefs.hlsl\"\n\n// 参数定义\n//!PARAMETER\n// LABEL 为用户界面上显示的参数名\n//!LABEL Sharpness\n// DEFAULT、MIN、MAX 和 STEP 都必须存在\n//!DEFAULT 0.1\n//!MIN 0.01\n//!MAX 5\n//!STEP 0.01\nfloat sharpness;\n\n\n// 纹理定义\n// INPUT、OUTPUT 是特殊关键字\n// INPUT 不能作为通道的输出，OUTPUT 不能作为通道的输入\n// 只有最后一个通道可以输出到 OUTPUT，最后一个通道也只能输出到 OUTPUT\n// 定义 INPUT 和 OUTPUT 是可选的，但为了保持语义的完整性，建议显式定义\n// OUTPUT 的尺寸即为此效果的输出尺寸，不指定则表示支持任意尺寸的输出\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n// 计算纹理尺寸时可以使用一些预定义常量\n// INPUT_WIDTH\n// INPUT_HEIGHT\n// OUTPUT_WIDTH\n// OUTPUT_HEIGHT\n\n// 支持的纹理格式：\n// R32G32B32A32_FLOAT\n// R16G16B16A16_FLOAT\n// R16G16B16A16_UNORM\n// R16G16B16A16_SNORM\n// R32G32_FLOAT\n// R10G10B10A2_UNORM\n// R11G11B10_FLOAT\n// R8G8B8A8_UNORM\n// R8G8B8A8_SNORM\n// R16G16_FLOAT\n// R16G16_UNORM\n// R16G16_SNORM\n// R32_FLOAT\n// R8G8_UNORM\n// R8G8_SNORM\n// R16_FLOAT\n// R16_UNORM\n// R16_SNORM\n// R8_UNORM\n// R8_SNORM\n// 根据纹理格式的不同，在通道中该纹理的定义也是不同的。如当纹理格式为 R8G8_UNORM，\n// 作为通道的输入时定义是 Texture2D<float2>，作为输出时定义是 RWTexture2D<unorm float2>。\n// 当使用 FP16 时，符合条件的纹理将被定义为 min16float 类型，例如 R8G8_UNORM 作为输入时定义变为\n// Texture2D<min16float2>，作为输出时定义变为 RWTexture2D<unorm min16float2>。\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH + 100\n//!HEIGHT INPUT_HEIGHT + 100\n//!FORMAT R8G8B8A8_UNORM\nTexture2D tex1;\n\n// 采样器定义\n// FILTER 必需，ADDRESS 可选\n// ADDRESS 默认值为 CLAMP\n\n//!SAMPLER\n//!FILTER LINEAR\n//!ADDRESS CLAMP\nSamplerState sam1;\n\n//!SAMPLER\n//!FILTER POINT\n//!ADDRESS WRAP\nSamplerState sam2;\n\n// 所有通道通用的部分\n\n//!COMMON\n#define PI 3.14159265359\n\n// 通道定义\n\n//!PASS 1\n// 描述将出现在游戏内覆盖中\n//!DESC First Pass\n// 可选 PS 风格，依然用 CS 实现\n// STYLE 默认为 CS\n//!STYLE PS\n//!IN INPUT\n// 支持多渲染目标，最多 8 个\n//!OUT tex1\n\nfloat func1() {\n}\n\n// Pass[n] 为通道入口点\nMF4 Pass1(float2 pos) {\n    return MF4(1, 1, 1, 1);\n}\n\n//!PASS 2\n//!IN INPUT, tex1\n// 最后一个通道的输出只能是 OUTPUT\n//!OUT OUTPUT\n// BLOCK_SIZE 指定一次 dispatch 处理多大的区域\n// 可以只有一维，即同时指定长和高\n//!BLOCK_SIZE 16, 16\n// NUM_THREADS 指定一次 dispatch 有多少并行线程\n// 可以少于三维，缺少的维数默认为 1\n//!NUM_THREADS 64, 1, 1\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n    // 写入 OUPUT\n    OUTPUT[blockStart] = MF4(1,1,1,1);\n}\n```\n\n### 预定义函数\n\n**uint2 GetInputSize()**：获取输入纹理尺寸。\n\n**float2 GetInputPt()**：获取输入纹理每个像素的尺寸。\n\n**uint2 GetOutputSize()**：获取输出纹理尺寸。\n\n**float2 GetOutputPt()**：获取输出纹理每个像素的尺寸。\n\n**float2 GetScale()**：获取输出纹理相对于输入纹理的缩放。\n\n**uint2 Rmp8x8(uint id)**：将 0~63 的值以 swizzle 顺序映射到 8x8 的正方形内的坐标，用以提高纹理缓存的命中率。\n\n**MF{n} MulAdd(MF{m} x, MF{m}x{n} y, MF{n} a)**：等效于 `mul(x, y) + a`，但性能更高，在基于机器学习的效果中非常有用。必须声明 \"USE MulAdd\" 才能使用此函数。原理参见 [#1049](https://github.com/Blinue/Magpie/pull/1049)。\n\n\n### 预定义宏\n\n**MP_BLOCK_WIDTH、MP_BLOCK_HEIGHT**：当前通道处理的块的大小（由 \"BLOCK_SIZE\" 指定）\n\n**MP_NUM_THREADS_X、MP_NUM_THREADS_Y、MP_NUM_THREADS_Z**：当前通道每个线程组的线程数（由 \"NUM_THREADS\" 指定）\n\n**MP_PS_STYLE**：当前通道是否是像素着色器样式（由 \"STYLE\" 指定）\n\n**MP_INLINE_PARAMS**：当前通道的参数是否为静态常量（由用户指定）\n\n**MP_DEBUG**：当前是否为调试模式（调试模式下编译的着色器不进行优化且含有调试信息）\n\n**MP_FP16**：当前是否使用半精度浮点数\n\n**MF、MF1、MF2、...、MF4x4**：遵守 fp16 参数的浮点数类型。当未指定 fp16，它们为 float... 的别名，否则为 min16float... 的别名\n\n\n### 多渲染目标（MRT）\n\nPS 风格下 OUT 指令可指定多个输出（由于 DirectX 的限制最多 8 个）：\n``` hlsl\n//!OUT tex1, tex2\n```\n\n这时通道入口有不同的签名：\n``` hlsl\nvoid Pass1(float2 pos, out MF4 target1, out MF4 target2);\n```\n\n### 从文件加载纹理\n\n``` hlsl\n//!TEXTURE\n//!SOURCE test.bmp\nTexture2D testTex;\n```\n\nTEXTURE 指令支持从文件加载纹理，支持的格式有 BMP，PNG，JPG 等常见图像格式以及 DDS 文件。加载 DDS 文件时只支持 2D 纹理，但允许使用 mipmap。可选使用 FORMAT，指定后可以帮助解析器生成正确的定义，不指定始终假设是 float4 类型。\n\n从文件加载的纹理不能作为通道的输出。\n"
  },
  {
    "path": "docs/Performance optimization.md",
    "content": "This article may be helpful if you are facing performance issues (e.g. lagging, latency, too much power consumption).\n\nBelow are some possible situations:\n\n## My graphics card is not powerful enough\n\nIf you cannot run some effects with high computing power requirements (e.g. Anime4K, AdaptiveSharpen, etc.) smoothly, try the following:\n\n1. Change to the variants with lower requirements. For example, Anime4K_Upscale_S is much faster than Anime4K_Upscale_L. CAS is much faster than AdaptiveSharpen. They can effectively improve the smoothness of the effects at the cost of some quality degradation.\n2. Change the capture mode. We recommend you to try each of them.\n\n## Intermittent lagging\n\nIf your graphics card is powerful enough, but you are still experiencing lagging issues, try the following:\n\n<details>\n    <summary>For Nvidia users</summary>\n\n### Assume you're on Windows 11 24H2\n\nThe following tips apply only to Nvidia users. Improper driver configuration on Nvidia graphics cards is likely the cause of the stuttering.\n\nQuick tips: Restore your Nvidia driver settings to default (clean install) will solve most problems. However, if you insist on use your own settings, let's explain how driver settings cause trouble to program.\n\n#### Strange fps drop after upscaling enabled for a while\n\nAt the beginning, everything is fine (Game 60 FPS / Magpie 60 FPS). But after about 10~15 seconds, both game and magpie fps drop to about 37 FPS, at the same time GPU usage go up to 100%, GPU MHz goes down from like 1000 to 700.\n\nFirst, if you're gaming with \"Power management mode: Optimal power\", then try to set magpie program to \"Prefer maximum performance\" or maybe \"Adaptive\" but I haven't try adaptive mode, yet there is no guarantee. Game remains \"Optimal power\" is fine. By use this setting, GPU MHz will no longer goes down abnormal.\n\n#### Nvidia App and Nvidia control panel\n\nHowever, one of my PC doesn't work with this settings while others can be fixed with this way. The investigation result is, there is compatibility issue between Nvidia App and Nvidia control panel. If you use Nvidia App changed your driver settings, open control panel, modify same settings cause the control panel crash or says \"Access denied\". And settings by Nvidia App are not apply to game or program at all.\n\nDon't use Nvidia App (version 11.0.2.341) to adjust Nvidia driver settings of driver like 572.16. Close Nvidia App and Nvidia control panel, go to `C:\\ProgramData\\NVIDIA Corporation\\Drs`, delete all `.bin` files like `nvdrsdb0.bin`, `nvdrsdb1.bin`, `nvdrssel.bin`, `update.bin`, open Nvidia control panel again and redo all of your global settings and program specified settings, and avoid use Nvidia App driver settings after that.\n\n#### Screen looks not as smooth as native game window\n\nGame 60 FPS / Magpie 60 FPS, appears in either `Graphics Capture` or `Desktop Duplication`.\n\nThe investigation result is vertical sync. Although it looks very strange. At least for Windows 11 24H2, you need to turn on vertical sync for a game, to make WGC and DXGI capture doesn't lose frame. If not, even WGC and DXGI capture at 60 FPS and game run at 60 FPS, many or some game frame will lose or called duplicated frame.\n\nRequired vertical sync mode for game is \"Traditional / Classic / Vertical sync: Use the 3D application setting and enable in-game vsync / Vertical sync: On\". Not turn off vertical sync, or use \"Vertical sync: Fast\". I'm not sure if \"Vertical sync: Adaptive / Adaptive (half refresh rate)\" will work or not but I have no time for detailed testing.\n\nFor magpie, go with \"Use the 3D application setting\".\n\n#### Crazy frame lose when using Desktop Duplication\n\nAt the same time, Game 60 FPS / Magpie 60 FPS. I find that this situation appears when I am using Magpie v0.10.6. Enable vertical sync in Magpie settings and use \"Vertical sync: Use the 3D application setting\" for Magpie program settings solved this. Upgrade to Magpie v0.11.1 also solved this.\n\n#### Crazy frame lose when GPU usage nears 100%\n\nAt the same time, Game sightly lower than monitor FPS like Game 57 FPS / Monitor 60 Hz. If not use Magpie, the native game window looks smooth.\n\nTry turn off \"Hardware-accelerated GPU scheduling\" and restart. I find that when GPU under heavy load and GPU scheduling on, Either WGC and Desktop Duplication can't process frames correctly. By turn off GPU scheduling, your game FPS is still low, but Magpie will not drop to visually under 10 FPS anymore.\n\n#### Screen looks not smooth but FPS is decent\n\nGame 60 FPS / Magpie 60 FPS / Monitor 60 Hz, but some frames dropped after rendered, instead of present on screen. This also happens on native game Window without use scaling.\n\nCheck Max Frame Rate and vertical sync. For example, you have 60 Hz monitor and set vertical sync on as mentioned above, you need to remove Max Frame Rate settings too, if you have set Max Frame Rate to 60 FPS before.\n\nIf you have other frame limiter like MSI Afterburner RTSS, also turn it of.\n\nMislead:\n1. Set global Max Frame Rate to 60 FPS and turn off Max Frame Rate for certain program, this will not work as intend. When you have program Max Frame Rate off and vertical sync off, but you have global Max Frame Rate, game and Magpie still follow global Max Frame Rate limit.\n1. Use Max Frame Rate as \"better vertical sync method\" because they say \"by doing this can reduce input lag\". No, Max Frame Rate is not vertical sync, it doesn't guarantee every rendered frame to be present on monitor, which is \"old fashion vertical sync\" will do.\n\n#### Low Lantancy Mode\n\nCheck these options if you encountered some other strange behavior. I'm not sure if Magpie has these issue, but for Lossless Scaling, use \"Low Lantancy Mode: Ultra\" will cause WGC API drag and drop position step back after release mouse button.\n\nSet \"Low Lantancy Mode: Off\" for Magpie. But you may leave \"Low Lantancy Mode: Ultra\" for games if needed and you know it won't cause bug. For example, some old DirectX 9 game doesn't work well with this setting, it cause frame drop and input lag, if that happen just set it to off.\n\n</details>\n\n<details>\n    <summary>For AMD users</summary>\n\n### Placeholder\n\nWelcome provide more performance tips for us. You may also check Nvidia tips and guess if some condition match your setup.\n\n</details>\n\n<details>\n    <summary>Hyperthread and big.little CPUs</summary>\n\n#### Hyperthread and Intel Alder Lake big.little CPUs\n\nI suggest if you don't want to turn off Hyperthread, use cmd.exe batch `start /affinity 0x55 \"\" \"C:\\path to\\game.exe\"` for game or it's launcher, game will inherit parent process affinity. And `start /affinity 0xaa` for Magpie. Also adjust game graphics options, try to limit game CPU usage below 50% (4 physical core of 4 core 8 thread as example).\n\nThe 0x55 specify game run on 0 2 4 6 logical core of 4 core CPU, and other stuff 0xaa run on 1 3 5 7.\n\nFor high priority, use `start /abovenormal` for both game and Magpie, but I find certain game are easy to crash with affinity and higher priority for unknown reason. As an example, `dwm.exe` system service running at `high`. In such case, use power plan high performance to make CPU run at highest clock speed is the last choice.\n\n0x55 and 0xaa are example value, I use https://bitsum.com/tools/cpu-affinity-calculator\n\nYou may also utilize this trick to force game run on big cores of Intel Alder Lake big.little CPUs.\n\nReference:  \nhttps://superuser.com/questions/690509/does-windows-know-how-to-appropriately-assign-threads-to-a-quad-core-processor-t\n\n</details>\n\n### Still lagging?\n\n1. Change the capture mode. We recommend you to try each of them.\n2. Turn on \"Disable DirectFlip.\" DirectFlip is a technology to reduce input lag, but may be incompatible with some certain games.\n3. If you have multiple graphics card, try changing the graphics adaptor.\n4. Increase the process priority of Magpie and the priority in the driver (if such options exist).\n5. Please submit an [Issue (Performance)](https://github.com/Blinue/Magpie/issues/new?assignees=&labels=performance&template=02_performance.yaml) if none of the attempts above works.\n\n## I'd like to reduce the power consumption of Magpie\n\nWhen you need to save electricity or reduce the heat generated, try the following:\n\n1. Limit the frame rate.\n2. Opt for effects that require lower performance.\n"
  },
  {
    "path": "docs/_Sidebar.md",
    "content": "- [维基主页](https://github.com/Blinue/Magpie/wiki/)\n  - [FAQ](https://github.com/Blinue/Magpie/wiki/FAQ)\n  - [编译指南](https://github.com/Blinue/Magpie/wiki/编译指南)\n  - [内置效果介绍](https://github.com/Blinue/Magpie/wiki/内置效果介绍)\n  - [MagpieFX](https://github.com/Blinue/Magpie/wiki/MagpieFX)\n  - [性能优化建议](https://github.com/Blinue/Magpie/wiki/性能优化建议)\n  - [捕获方式对比](https://github.com/Blinue/Magpie/wiki/捕获方式对比)\n  - [关于触控支持](https://github.com/Blinue/Magpie/wiki/关于触控支持)\n  - [以编程方式与 Magpie 交互](https://github.com/Blinue/Magpie/wiki/以编程方式与-Magpie-交互)\n\n- [WIKI HOME](https://github.com/Blinue/Magpie/wiki/Home%20(EN))\n  - [FAQ](https://github.com/Blinue/Magpie/wiki/FAQ%20(EN))\n  - [Compilation guide](https://github.com/Blinue/Magpie/wiki/Compilation%20guide)\n  - [Built-in effects](https://github.com/Blinue/Magpie/wiki/Built-in%20effects)\n  - [MagpieFX](https://github.com/Blinue/Magpie/wiki/MagpieFX%20(EN))\n  - [Performance optimization](https://github.com/Blinue/Magpie/wiki/Performance%20optimization)\n  - [Comparison of capture methods](https://github.com/Blinue/Magpie/wiki/Comparison%20of%20capture%20methods)\n  - [About touch support](https://github.com/Blinue/Magpie/wiki/About-touch-support)\n  - [Interact with Magpie programally](https://github.com/Blinue/Magpie/wiki/Interact-with-Magpie-programally)\n"
  },
  {
    "path": "docs/以编程方式与 Magpie 交互.md",
    "content": "Magpie 提供了和其他程序交互的机制。通过它们，你的应用可以和 Magpie 配合使用。\n\n[MagpieWatcher](https://github.com/Blinue/MagpieWatcher) 演示了如何使用这些机制。\n\n## 如何在缩放状态改变时得到通知\n\n你应该监听 `MagpieScalingChanged` 消息。\n\n```c++\nUINT WM_MAGPIE_SCALINGCHANGED = RegisterWindowMessage(L\"MagpieScalingChanged\");\n```\n\n### 参数\n\n`wParam` 为事件 ID，对于不同的事件 `lParam` 有不同的含义。支持以下事件：\n\n* 0: 缩放已结束或源窗口失去焦点。缩放结束时 `lParam` 为 0，否则为 1。\n* 1: 缩放已开始或源窗口回到前台。`lParam` 为缩放窗口句柄。\n* 2: 缩放窗口位置或大小改变。窗口模式缩放时才会生成这个事件。\n* 3: 用户开始调整缩放窗口大小或移动缩放窗口。窗口模式缩放时才会生成这个事件。\n\n在调整缩放窗口大小或移动缩放窗口的过程中不会产生事件，但你可以定期检查窗口属性来获得更新的信息。\n\n### 注意事项\n\n如果你的进程完整性级别 (Integration level) 比 Magpie 更高，由于用户界面特权隔离 (UIPI)，你将无法收到 Magpie 广播的消息。这种情况下请调用 [ChangeWindowMessageFilterEx](https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-changewindowmessagefilterex) 以允许接收 `MagpieScalingChanged` 消息。\n\n```c++\nChangeWindowMessageFilterEx(hYourWindow, WM_MAGPIE_SCALINGCHANGED, MSGFLT_ADD, nullptr);\n```\n\n## 如何获取缩放窗口句柄\n\n你可以监听 `MagpieScalingChanged` 消息来获取缩放窗口句柄，也可以查找类名为`Window_Magpie_967EB565-6F73-4E94-AE53-00CC42592A22`的窗口以在缩放中途获取该句柄。Magpie 将确保此类名不会改变，且不会同时存在多个缩放窗口。\n\n```c++\nHWND hwndScaling = FindWindow(L\"Window_Magpie_967EB565-6F73-4E94-AE53-00CC42592A22\", nullptr);\n```\n\n## 如何将你的窗口置于缩放窗口上方\n\n你应该监听 `MagpieScalingChanged` 消息，根据事件调整自己的 Z 轴顺序。下面是一个简单的示例，更复杂的用例参见 [MagpieWatcher](https://github.com/Blinue/MagpieWatcher)。\n\n```c++\nif (message == WM_MAGPIE_SCALINGCHANGED) {\n    if (wParam == 0) {\n        // 取消置顶\n        SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);\n    } else if (wParam == 1) {\n        // 确保本窗口在缩放窗口上面\n        SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);\n    }\n}\n```\n\n## 如何获取缩放信息\n\n缩放窗口的[窗口属性](https://learn.microsoft.com/en-us/windows/win32/winmsg/about-window-properties)中存储着缩放信息。目前支持以下属性：\n\n* `Magpie.Windowed`：是否处于窗口模式缩放\n* `Magpie.SrcHWND`: 源窗口句柄\n* `Magpie.SrcLeft`、`Magpie.SrcTop`、`Magpie.SrcRight`、`Magpie.SrcBottom`: 被缩放区域的边界\n* `Magpie.DestLeft`、`Magpie.DestTop`、`Magpie.DestRight`、`Magpie.DestBottom`: 缩放后区域矩形边界\n\n```c++\nHWND hwndSrc = (HWND)GetProp(hwndScaling, L\"Magpie.SrcHWND\");\nbool isWindowed = (bool)GetProp(hwndScaling, L\"Magpie.Windowed\");\n\nRECT srcRect;\nsrcRect.left = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.SrcLeft\");\nsrcRect.top = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.SrcTop\");\nsrcRect.right = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.SrcRight\");\nsrcRect.bottom = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.SrcBottom\");\n\nRECT destRect;\ndestRect.left = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.DestLeft\");\ndestRect.top = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.DestTop\");\ndestRect.right = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.DestRight\");\ndestRect.bottom = (LONG)(INT_PTR)GetProp(hwndScaling, L\"Magpie.DestBottom\");\n```\n\n### 注意事项\n\n1. 这些属性只在缩放窗口初始化完成后才保证存在，因此建议检索属性前检查缩放窗口是否可见，尤其是当窗口句柄是使用类名获取到的。\n2. 这些属性中存储的坐标不受 DPI 虚拟化影响，你需要将程序的 DPI 感知级别设置为 Per-Monitor V2 才能正确使用它们。有关详细信息，请参阅 [High DPI Desktop Application Development on Windows](https://learn.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows)。\n"
  },
  {
    "path": "docs/关于触控支持.md",
    "content": "由于操作系统的安全限制，Magpie 需要 UIAccess 权限来支持触控输入。获得此权限需要满足两个条件：\n\n1. 应用程序必须有一个数字签名，且该签名能够通过与本地计算机上受信任的根证书颁发机构存储相关联的证书来验证。\n2. 应用程序必须位于“安全位置”，例如 Program Files、System32 等文件夹中。\n\n启用触控支持时，Magpie 将进行以下操作：\n\n1. 向受信任的根证书颁发机构存储添加自签名证书。\n2. 将 TouchHelper.exe 文件复制到 `System32\\Magpie` 文件夹。在缩放时，Magpie 会运行此程序以实现触控支持。\n\n这两项操作都对操作系统构成重大更改，因此需要管理员权限。如果不再需要触控支持，应关闭此选项，Magpie 会撤销这些更改，不在操作系统中留下痕迹。\n\n触控支持可能会因为某些原因失效（比如 TouchHelper.exe 需要更新时），如果发生这种情况，Magpie 会在缩放前请求管理员权限来修复它。\n"
  },
  {
    "path": "docs/内置效果介绍.md",
    "content": "Magpie 内置了大量效果供组合使用，大部分提供了参数选项以订制行为。所有效果存储在 effects 文件夹中，如果你了解 HLSL，你可以很容易的添加任何你想要的效果，见 [MagpieFX](https://github.com/Blinue/Magpie/wiki/MagpieFX)。\n\n## 内置效果介绍\n\n* ACNet：[ACNetGLSL](https://github.com/TianZerL/ACNetGLSL) 的移植。适合动画风格图像的缩放，有较强的降噪效果\n  * 输出尺寸：输入的两倍\n\n* AdaptiveSharpen：自适应锐化算法。此算法着重于锐化图像中的模糊边缘，因此相比一般的锐化算法噪点、振铃和条纹更少。\n  * 输出尺寸：和输入相同\n  * 参数\n    * Sharpness：锐化强度\n\n* Anime4K_3D_AA_Upscale_US 和 Anime4K_3D_Upscale_US：Anime4K 提供的 3D 游戏画面缩放算法。AA 变体有抗锯齿的功能\n  * 输出尺寸：输入的两倍\n\n* Anime4K_Denoise_Bilateral_Mean、Anime4K_Denoise_Bilateral_Median 和 Anime4K_Denoise_Bilateral_Mode：Anime4K 提供的降噪算法，分别使用平均数、中位数和众数\n  * 输出尺寸：和输入相同\n  * 参数\n    * Strength：降噪强度\n\n* Anime4K_Restore 族：Anime4K 提供的用于还原动漫画面线条的算法，S->M->L->VL->UL 对性能的需求依次提高，Soft 变体效果稍弱\n  * 输出尺寸：和输入相同\n\n* Anime4K_Thin_HQ：Anime4K 提供的用于细化动漫画面线条的算法\n  * 输出尺寸：和输入相同\n  * 参数\n    * Strength：每次迭代的强度\n    * Iterations：迭代次数。降低 Strength 并提高 Iterations 可以提高画面质量，但会降低速度。\n\n* Anime4K_Upscale 族：Anime4K 提供的动画风格图像缩放算法。Denoise 变体包含降噪效果，GAN 变体处于实验阶段，可以保留更多细节。S、L、VL、UL 对性能的要求依次提高\n  * 输出尺寸：输入的两倍\n\n* Bicubic：双立方（双三次）插值算法\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * B：过滤参数 B。此项过大将模糊\n    * C：过滤参数 C。此项过大将产生振铃\n  * 备注：通过自由组合不同的BC数值可以实现不同的变体算法，例如：Mitchell(B=C≈0.333333), Catmull-Rom(B=0 C=0.5), bicubic Photoshop(B=0 C=0.75), Spline(B=1 C=0)\n\n* Bilinear：双线性插值\n  * 输出尺寸：取决于缩放选项\n\n* CAS：[FidelityFX-CAS](https://github.com/GPUOpen-Effects/FidelityFX-CAS) 的移植。轻量级的锐化效果\n  * 输出尺寸：和输入相同\n  * 参数\n    * Sharpness：锐化强度\n\n* CAS_Scaling：[FidelityFX-CAS](https://github.com/GPUOpen-Effects/FidelityFX-CAS) 的移植。支持缩放\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * Sharpness：锐化强度\n\n* CRT_Easymode：易于配置的轻量级 CRT 着色器\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * Sharpness Horizontal：横向锐度\n    * Sharpness Vertical：纵向锐度\n    * Mask Strength：遮罩强度\n    * Mask Dot Width\n    * Mask Dot Height\n    * Mask Stagger\n    * Mask Size\n    * Scanline Strength\n    * Scanline Beam Width Min\n    * Scanline Beam Width Max\n    * Scanline Brightness Min\n    * Scanline Brightness Max\n    * Scanline Cutoff\n    * Gamma Input\n    * Gamma Output\n    * Brightness Boost：用于提高亮度\n    * Dilation\n\n* CRT_Geom：最流行的 CRT 着色器之一，旨在模拟 Arcade-machine。此实现不支持模拟隔行扫描。见 [Emulation General Wiki](https://emulation.gametechwiki.com/index.php/CRT_Geom)\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * Target Gamma\n    * Monitor Gamma\n    * Distance\n    * Curvature：是否模拟屏幕曲率\n    * Curvature Radius：曲率半径\n    * Corner Size\n    * Corner Smoothness\n    * Horizontal Tilt\n    * Vertical Tilt\n    * Horizontal Overscan\n    * Vertical Overscan\n    * Dot Mask\n    * Sharpness：值越大图像越清晰\n    * Scanline Weight\n    * Luminance Boost：用于提升亮度\n  \n* CRT_Hyllian：提供锐利清晰的输出，并带有轻微的光晕，类似于索尼的 BVM 系列显示器\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * Phosphor\n    * Vertical Scanlines\n    * Input Gamma\n    * Output Gamma\n    * Sharpness\n    * Color Boost\n    * Red Boost\n    * Green Boost\n    * Blue Boost\n    * Scanline Strength\n    * Min Beam Width\n    * Max Beam Width\n    * Anti-Ringing\n\n* CRT_Lottes：提供多种遮罩，可以模拟 Bloom 和 Halation 效果。类似于 CGA 街机显示器\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * Scanline Hardness\n    * Pixel Hardness\n    * Horizontal Display Warp\n    * Vertical Display Warp\n    * Mask Dark\n    * Mask Light\n    * Shadow Mask：遮罩风格\n    * Brightness Boost\n    * Bloom-X Soft\n    * Bloom-Y Soft\n    * Bloom Amount\n    * Filter Kernel Shape\n\n* CuNNy 族：适合视觉小说风格图像的缩放，由 [CuNNy](https://github.com/funnyplanter/CuNNy) 提供。DS 变体有轻微降噪效果\n  * 输出尺寸：输入的两倍\n\n* CuNNy2 族：CuNNy 的改进版\n  * 输出尺寸：输入的两倍\n\n* Deband：去除色带\n  * 输出尺寸：和输入相同\n  * 参数\n    * Threshold：当像素之间的差异低于此值时，它被认为是渐变的一部分\n    * Range：采样范围。较高的值将找到更多的梯度，较低的值将更积极地去除色带\n    * Iterations：迭代次数。增加迭代次数可能会提高质量，但会减慢着色器的速度\n    * Grain：噪点强度。在图像中添加一些额外的噪点可以有效遮盖剩余的条纹和伪影，且对视觉质量的影响较小\n\n* FineSharp：高质量的锐化效果，最初是 AviSynth 脚本\n  * 输出尺寸：和输入相同\n  * 参数\n    * sstr：锐化强度。如果改变了此参数，也要改变 cstr，见备注\n    * cstr：均衡化的强度\n    * xstr：XSharpen 风格的最终锐化步骤的强度\n    * xrep：用于修复最终锐化步骤产生的伪影\n  * 备注：sstr 和 cstr 的对应关系（sstr->cstr）：0->0, 0.5->0.1, 1.0->0.6, 2.0->0.9, 2.5->1.00, 3.0->1.09, 3.5->1.15, 4.0->1.19, 8.0->1.249, 255.0->1.5\n\n* FSR_EASU：[FidelityFX-FSR](https://github.com/GPUOpen-Effects/FidelityFX-FSR) 中缩放步骤的移植\n  * 输出尺寸：取决于缩放选项\n\n* FSR_RCAS：[FidelityFX-FSR](https://github.com/GPUOpen-Effects/FidelityFX-FSR) 中锐化步骤的移植\n  * 输出尺寸：和输入相同\n  * 参数\n    * Sharpness：锐化强度\n\n* FSRCNNX：FSRCNNX_x2_8-0-4-1 的移植\n  * 输出尺寸：输入的两倍\n\n* FSRCNNX_LineArt：FSRCNNX_x2_8-0-4-1_LineArt 的移植\n  * 输出尺寸：输入的两倍\n\n* FXAA_Medium、FXAA_High 和 FXAA_Ultra：快速近似抗锯齿。对性能的要求依次提高\n   * 输出尺寸：和输入相同\n\n* GTU_v050：旨在模拟 CRT 屏幕的模糊和混合效果而不是遮罩或曲率，支持扫描线\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * Composite Connection\n    * No Scanlines\n    * Signal Resolution Y\n    * Signal Resolution I\n    * Signal Resolution Q\n    * TV Vertical Resolution\n    * Black Level\n    * Contrast\n\n* ImageAdjustment：图像参数调整\n  * 输出尺寸：和输入相同\n  * 参数\n    * Target Gamma：和 monitorGamma 搭配使用以调节 gamma，此参数指定目标 gamma 值\n    * Monitor Gamma：当前屏幕的 gamma 值\n    * Saturation：色度\n    * Luminance：HSV 空间的明度\n    * Contrast：对比度\n    * Brightness Boost：亮度调整\n    * Black Level：暗场强度\n    * Red Channel：红色通道颜色缩放\n    * Green Channel：绿色通道颜色缩放\n    * Blue Channel：蓝色通道颜色缩放\n\n* Jinc：使用 Jinc 算法缩放输入\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * Window Sinc Param：值越小图像越锐利\n    * Sinc Param：值越大图像越锐利\n    * Anti-ringing Strength：抗振铃强度\n\n* Lanczos：使用 Lanczos 算法缩放输入。\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * Anti-ringing Strength：抗震铃强度。值越大抗震铃效果越好，但图像越模糊\n\n* LCAS：轻量级 3D 画面缩放算法\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * Sharpness：锐化强度\n\n* LumaSharpen：reshade 中流行的锐化效果。\n  * 输出尺寸：和输入相同\n  * 参数\n    * Sharpening Strength：锐化强度\n    * Sharpening Limit：抗振铃强度\n    * Sample Pattern：滤波器类型，支持 4 种滤波器\n    * Offset Bias：滤波器参数的偏移量\n\n* MMPX：像素画缩放算法。可在保留艺术风格的同时添加细节\n  * 输出尺寸：输入的两倍\n\n* Nearest：最近邻插值\n  * 输出尺寸：取决于缩放选项\n\n* NIS：[NVIDIA Image Scaling](https://github.com/NVIDIAGameWorks/NVIDIAImageScaling) 的移植\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * Sharpness：锐化强度\n  * 备注：只支持放大\n\n* NNEDI3 族：原本用于去隔行，也是高质量的插值算法。移植自 https://github.com/bjin/mpv-prescalers\n  * 输出尺寸：输入的两倍\n\n* NVSharpen：随 NIS 发布的 NVSharpen 的移植\n  * 输出尺寸：和输入相同\n  * 参数\n    * Sharpness：锐化强度\n\n* Pixellate：使用 Pixellate 算法缩放输入。适合放大像素画\n  * 输出尺寸：取决于缩放选项\n\n* RAVU 族：移植自 https://github.com/bjin/mpv-prescalers\n  * 输出尺寸：输入的两倍\n\n* RAVU-Zoom 族：移植自 https://github.com/bjin/mpv-prescalers\n  * 输出尺寸：取决于缩放选项\n  * 备注：只支持放大\n\n* SGSR：[Snapdragon Game Super Resolution v1](https://github.com/SnapdragonStudios/snapdragon-gsr/tree/main/sgsr/v1) 的移植\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * Edge Sharpness：边缘锐化强度（值越大图像越锐利）\n    * Edge Threshold：边缘检测阈值\n\n* SharpBilinear：使用 Sharp-Bilinear 算法缩放输入。适合放大像素画\n  * 输出尺寸：取决于缩放选项\n\n* SMAA_Low、SMAA_Medium、SMAA_High 和 SMAA_Ultra：SMAA 抗锯齿算法。对性能的要求依次提高\n   * 输出尺寸：和输入相同\n\n* SSimDownscaler：基于感知的图像缩小算法。移植自 [igv/SSimDownscaler.glsl](https://gist.github.com/igv/36508af3ffc84410fe39761d6969be10)\n  * 输出尺寸：取决于缩放选项\n  * 参数\n    * Oversharp：值越大图像越锐利\n  \n* xBRZ_2x、xBRZ_3x、xBRZ_4x、xBRZ_5x 和 xBRZ_6x：使用 xBRZ 算法缩放输入。适合放大像素画\n  * 输出尺寸：取决于变体。放大到输入的 2-6 倍\n\n* xBRZ_Freescale：支持任意缩放倍数的 xBRZ 算法\n  * 输出尺寸：取决于缩放选项\n"
  },
  {
    "path": "docs/性能优化建议.md",
    "content": "如果你遇到了性能问题（卡顿、延迟、功耗过高等），本文档可能有所帮助。\n\n下面是一些你可能面临的情况：\n\n## 我的显卡性能不足\n\n如果你无法流畅使用一些有较高性能要求的效果（如 Anime4K、AdaptiveSharpen 等），请尝试下面的操作：\n\n1. 更换为性能需求更低的效果。如 Anime4K_Upscale_S 比 Anime4K_Upscale_L 快的多，CAS 比 AdaptiveSharpen 快的多，它们可以有效提高流畅度，代价是一定程度的画面质量损失。\n2. 尝试更换捕获模式。建议你每种模式都尝试一下。\n\n## 间歇性卡顿\n\n假设你的显卡性能对于运行 Magpie 绰绰有余，但依然遇到卡顿问题。请尝试下面的操作：\n\n<details>\n    <summary>对于 Nvidia 用户</summary>\n\n### 假设您使用的是 Windows 11 24H2\n\n以下提示仅适用于 Nvidia 用户。Nvidia 显卡的驱动程序配置不当可能是造成卡顿的原因。\n\n快速提示：将 Nvidia 驱动程序设置恢复为默认设置（全新安装）将解决大多数问题。但是，如果您坚持使用自己的设置，让我们解释一下驱动程序设置如何给程序带来麻烦。\n\n#### 缩放一段时间后出现奇怪的帧率下降\n\n刚开始时一切正常（游戏 60 FPS / Magpie 60 FPS），但大约 10~15 秒后，游戏和 Magpie 的帧率都会下降到 37 FPS 左右，同时 GPU 占用率飙升至 100%，GPU 频率从约 1000MHz 降至 700MHz。\n\n首先，如果你在游戏时使用了“电源管理模式：最佳功耗”，尝试将 Magpie 设为“首选最大性能”或“自适应”（我尚未测试“自适应”模式，效果不保证）。游戏本身保持“最佳功耗”模式即可。这样设置后，GPU 频率将不会异常下降。\n\n#### Nvidia App 与 Nvidia 控制面板\n\n不过，我的一台电脑即便使用上述方法仍然无法解决，而其他设备都能正常恢复。经过调查发现，Nvidia App 和 Nvidia 控制面板之间存在兼容性问题。如果你使用 Nvidia App 修改了驱动设置，然后在控制面板中修改相同的设置，可能会导致控制面板崩溃，或出现“访问被拒绝”的错误。此外，Nvidia App 进行的驱动设置更改不会真正应用到游戏或程序。\n\n如果你使用的是 Nvidia App 11.0.2.341 版本，并搭配 572.16 版驱动，请不要通过 Nvidia App 调整 Nvidia 驱动设置。解决方案如下：\n\n1. 关闭 Nvidia App 和 Nvidia 控制面板。\n2. 进入 C:\\ProgramData\\NVIDIA Corporation\\Drs 目录，删除所有 .bin 文件，例如 nvdrsdb0.bin、nvdrsdb1.bin、nvdrssel.bin、update.bin 等。\n3. 重新打开 Nvidia 控制面板，手动重新配置所有全局设置和特定程序的设置。\n4. 之后避免使用 Nvidia App 修改驱动设置。\n\n#### 画面看起来不如原生游戏窗口流畅\n\n使用 `Graphics Capture` 或 `Desktop Duplication` 时，即使游戏和 Magpie 都是 60 FPS，画面仍然不够流畅。\n\n调查结果表明，这可能与垂直同步有关。至少在 Windows 11 24H2 版本中，游戏必须开启垂直同步，才能保证 WGC 和 DXGI 捕获模式不会丢帧。否则，即使捕获和游戏都运行在 60 FPS，仍可能发生帧丢失或重复帧现象。\n\n推荐的垂直同步设置：\n\n* 游戏：使用传统垂直同步模式，例如：\n  * “使用 3D 应用程序设置”并在游戏内启用 V-Sync\n  * 直接选择“垂直同步：开”\n* 不要使用以下选项：\n  * 关闭垂直同步\n  * “垂直同步：快速”模式\n* 未测试但可能有效的选项：\n  * “垂直同步：自适应 / 自适应（半刷新率）”\n\n对于 Magpie，请选择“使用 3D 应用程序设置”。\n\n#### 使用 Desktop Duplication 时丢帧严重\n\n即使游戏 60 FPS / Magpie 60 FPS，仍然会遇到大量丢帧问题。我发现这种情况出现在 Magpie v0.10.6 版本。解决方法：\n\n* 在 Magpie 设置中启用垂直同步，并在 Nvidia 控制面板中将 Magpie 的垂直同步设置为“使用 3D 应用程序设置”。\n* 升级到 Magpie v0.11.1 也能解决此问题。\n\n#### GPU 使用率接近 100% 时 Magpie 丢帧严重\n\n同时，游戏帧率略低于显示器帧率，例如游戏帧率 57 FPS / 显示器帧率 60 Hz。如果不使用 Magpie，原生游戏窗口看起来很流畅。\n\n尝试关闭“硬件加速 GPU 计划”并重启。我发现，当 GPU 负载过重且 GPU 计划开启时，WGC 和桌面复制都无法正确处理帧。关闭 GPU 计划后，游戏帧率仍然很低，但 Magpie 不会再“视觉上”低于 10 FPS。\n\n#### 屏幕观感不流畅，但帧率看起来正常\n\n游戏 60 FPS / Magpie 60 FPS / 显示器 60 Hz，但出现丢帧。这种情况在未缩放、直接运行游戏窗口时也会发生。\n\n请检查是否启用了“最大帧率限制”和垂直同步。例如，在上述情况下，如果你已经打开了垂直同步，同时将最大帧率限制设为 60 FPS，请移除该限制。\n\n如果你有其他帧率限制程序（如 MSI Afterburner RTSS），也请将其关闭。\n\n常见误区：\n1. 将“最大帧率”设置为全局 60 FPS，然后对某些程序关闭帧率限制，这实际上不会如你所愿生效。如果你对程序关闭了最大帧率限制和垂直同步，但启用了全局最大帧率，游戏和 Magpie 仍会遵循全局的帧率限制。\n1. 有人将“最大帧率”视作更优的垂直同步方法，理由是“这样可以降低输入延迟”。其实并非如此。最大帧率限制并不是垂直同步，它无法保证每一帧都能被完整呈现，而传统的垂直同步正是为此目的而设计的。\n\n#### 低延迟模式\n\n如果遇到其他奇怪的现象，可以检查这些选项。我不确定 Magpie 是否有这些问题，但对于 Lossless Scaling，使用“低延迟模式：超高”会导致 WGC API 缩放后拖拽鼠标时，释放鼠标按钮后鼠标位置和释放按钮时不一致。\n\n为 Magpie 设置“低延迟模式：关闭”。但对于游戏，如果你确定启用“低延迟模式：超高”不会引发问题，也可以保留该设置。例如，一些旧的 DirectX 9 游戏在启用此模式后可能会出现掉帧或输入延迟问题，如果遇到这种情况，建议将其关闭。\n\n</details>\n\n<details>\n    <summary>对于 AMD 用户</summary>\n\n欢迎分享更多性能优化技巧！你也可以查看 Nvidia 相关建议，看看其中哪些适用于你的配置。\n\n</details>\n\n<details>\n    <summary>超线程和大小核CPU</summary>\n\n#### 超线程与 Intel Alder Lake 大小核架构 CPU\n\n如果你不想关闭超线程，可以使用批处理命令来限制游戏和 Magpie 的 CPU 亲和性（Affinity）。对游戏或其启动器使用 cmd.exe 批处理 `start /affinity 0x55 \"\" \"C:\\path to\\game.exe\"`，游戏将继承父进程的 CPU 亲和性。对 Magpie 使用 `start /affinity 0xaa`。此外，你还可以调整游戏图形设置，尽量将游戏的 CPU 占用控制在 50% 以下（以 4 核 8 线程 CPU 为例，相当于使用 4 个物理核心）。\n\n0x55 指定游戏在 4 核 CPU 的 0 2 4 6 逻辑核心上运行，0xaa 指定其他程序在 1 3 5 7 上运行。\n\n如果需要提高进程优先级，可以使用 `start /abovenormal` 为游戏和 Magpie 设置“高于正常”优先级。但需要注意，某些游戏在设置 CPU 亲和性和提高进程优先级后可能更容易崩溃，具体原因不明。例如，dwm.exe 系统服务本身就以“高”优先级运行。若遇到稳定性问题，可以考虑改用高性能电源计划，让 CPU 长时间运行在最高频率。\n\n0x55 和 0xaa 只是示例值，你可以使用 [Bitsum CPU 亲和性计算器](https://bitsum.com/tools/cpu-affinity-calculator) 来计算适合自己 CPU 的值。\n\n此外，你也可以利用这种方法，强制游戏仅运行在 Intel Alder Lake 大小核架构的“大核”上，以获得更好的性能。\n\n参考：\nhttps://superuser.com/questions/690509/does-windows-know-how-to-appropriately-assign-threads-to-a-quad-core-processor-t\n\n</details>\n\n### 仍然卡顿？\n1. 更换捕获模式。建议你每种模式都尝试一下。\n2. 打开“禁用 DirectFlip”。DirectFlip 是一个用于降低输入延迟的技术，但可能和某些游戏不兼容。\n3. 试试切换使用的显卡。\n4. 提高 Magpie 的进程优先级以及在驱动中提高 Magpie 的优先级（如果有这个选项）。\n5. 如果上面的尝试不起作用，请提交一个 [Issue (Performance)](https://github.com/Blinue/Magpie/issues/new?assignees=&labels=performance&template=02_performance.yaml)。\n\n## 我想降低 Magpie 的功耗\n\n在需要节省电量或降低发热时，请尝试下面的操作：\n\n1. 限制帧率。\n2. 更换为性能需求更低的效果。\n"
  },
  {
    "path": "docs/捕获方式对比.md",
    "content": "Magpie 提供数种捕获方式，根据使用场景，它们各有优劣。无特殊需求应使用 Graphics Capture，它提供最好的兼容性和流畅度。\n\n| | Graphics Capture | Desktop Duplication | GDI | DwmSharedSurface |\n| :---: | :---: | :---: | :---: |:---: |\n| 支持捕获 DirectComposition (如 UWP) | 是 | 是 | 否 | 否 |\n| 支持录制/串流 | 特殊情况下不支持<sup>[1]</sup> | 否 | 是 | 是 |\n| 支持源窗口跨越多个屏幕 | 特殊情况下不支持<sup>[1]</sup> | 否 | 是 | 是 |\n| 无视 DPI 虚拟化<sup>[2]</sup> | 否 | 否 | 是| 是 |\n| 备注 | 首选捕获方式 | 要求 Win10 v2004 | | 性能不稳定，不建议使用 |\n\n[1]: (1) 源窗口不支持常规的窗口捕获 (2) 操作系统为 Windows 11\n\n[2]: 系统会对不支持 DPI 缩放的窗口进行双三次插值放大，支持此项的捕获方式可以捕获到放大前的图像\n"
  },
  {
    "path": "docs/编译指南.md",
    "content": "## 先决条件\n\n为了编译 Magpie，你首先需要安装：\n\n1. Visual Studio 2022 或 2026 的最新版本，需要安装“使用 C++ 的桌面开发”和“通用 Windows 平台开发”两个工作负荷以及 Windows SDK build 26100 或更高版本。\n2. [CMake](https://cmake.org/)\n\n   你也可以使用 Visual Studio 内置的 CMake，它位于 `%ProgramFiles%\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\CMake\\CMake\\bin`。\n3. [Python](https://www.python.org/) 3.11+\n4. [Conan](https://conan.io/)\n\n   ```bash\n   pip install conan\n   ```\n   \n   确保上述依赖均已被添加入系统路径，使用以下命令检查：\n   ```bash\n   cmake --version\n   python --version\n   conan --version\n   ```\n\n## 编译\n\n1. 克隆存储库\n\n   ```bash\n   git clone https://github.com/Blinue/Magpie\n   ```\n\n2. 打开根目录的 Magpie.slnx 然后生成解决方案。\n\n## 启用触控支持\n\n为了支持触控输入，TouchHelper.exe 应签名。签名是在 CI 中自动进行的，但你也可以手动签名，请执行以下步骤：\n\n1. 创建自签名证书，将其导出为 pfx。\n2. 将 `src/Magpie/TouchHelper.cpp` 中的 `CERT_FINGERPRINT` 常量替换为你的证书的 SHA-1 哈希值（也即该证书的指纹）。\n3. 在存储库根目录下执行以下命令：\n\n```bash\npython scripts/publish.py --pfx-path=<pfx 路径> --pfx-password=<pfx 密码>\n```\n\n这将编译 Magpie 并为 TouchHelper.exe 签名。编译出的程序位于 `publish\\x64`。\n"
  },
  {
    "path": "natvis/magpie.natvis",
    "content": "<AutoVisualizer xmlns=\"http://schemas.microsoft.com/vstudio/debugger/natvis/2010\">\n  <Type Name=\"SmallVectorImpl&lt;*&gt;\">\n    <DisplayString IncludeView =\"elt0\" Condition=\"Size == 0\"></DisplayString>\n    <DisplayString IncludeView =\"elt0\">{(($T1*)BeginX)[0]}{*this,view(elt1)}</DisplayString>\n    <DisplayString IncludeView =\"elt1\" Condition=\"Size == 1\"></DisplayString>\n    <DisplayString IncludeView =\"elt1\">, {(($T1*)BeginX)[1]}{*this,view(elt2)}</DisplayString>\n    <DisplayString IncludeView =\"elt2\" Condition=\"Size == 2\"></DisplayString>\n    <DisplayString IncludeView =\"elt2\">, {(($T1*)BeginX)[2]}{*this,view(elt3)}</DisplayString>\n    <DisplayString IncludeView =\"elt3\" Condition=\"Size == 3\"></DisplayString>\n    <DisplayString IncludeView =\"elt3\">, {(($T1*)BeginX)[3]}{*this,view(elt4)}</DisplayString>\n    <DisplayString IncludeView =\"elt4\" Condition=\"Size == 4\"></DisplayString>\n    <DisplayString IncludeView =\"elt4\">, /* {Size - 4} more*/ </DisplayString>\n    <DisplayString Condition=\"Size == 0\">empty</DisplayString>\n    <DisplayString Condition=\"Size != 0\">{{{*this,view(elt0)}}}</DisplayString>\n    <DisplayString>Uninitialized</DisplayString>\n    <Expand>\n      <Item Name=\"[size]\">Size</Item>\n      <Item Name=\"[capacity]\">Capacity</Item>\n      <ArrayItems>\n        <Size>Size</Size>\n        <ValuePointer>($T1*)BeginX</ValuePointer>\n      </ArrayItems>\n    </Expand>\n  </Type>\n</AutoVisualizer>\n"
  },
  {
    "path": "natvis/phmap.natvis",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>  \n\n<AutoVisualizer xmlns=\"http://schemas.microsoft.com/vstudio/debugger/natvis/2010\">  \n  <!-- flat map/set  -->\n  <Type            Name=\"phmap::flat_hash_set&lt;*,*,*,*&gt;\">  \n  <AlternativeType Name=\"phmap::flat_hash_map&lt;*,*,*,*,*&gt;\" />  \n      <DisplayString>{{size = {size_}}}</DisplayString>  \n      <Expand>  \n        <CustomListItems MaxItemsPerView=\"1000\" ExcludeView=\"Test\">  \n          <Variable Name=\"ctrl\" InitialValue=\"ctrl_\" />  \n          <Variable Name=\"slot\" InitialValue=\"slots_\" />  \n          <Variable Name=\"ctrl_end\" InitialValue=\"ctrl_ + capacity_\" />  \n          <Variable Name=\"slot_end\" InitialValue=\"slots_ + capacity_\" />  \n    \n          <Size>size_</Size>  \n          <Loop>  \n              <Break Condition=\"slot == slot_end\" />  \n              <If Condition=\"*ctrl >= -1\">\n                <Item>*slot,na</Item>  \n              </If>  \n              <Exec>++slot</Exec>  \n              <Exec>++ctrl</Exec>  \n          </Loop>\n        </CustomListItems>  \n      </Expand>  \n  </Type>  \n\n  <!-- node map/set - only difference is the **slot instead of *slot -->\n  <Type            Name=\"phmap::node_hash_set&lt;*,*,*,*&gt;\">  \n  <AlternativeType Name=\"phmap::node_hash_map&lt;*,*,*,*,*&gt;\" />  \n      <DisplayString>{{size = {size_}}}</DisplayString>  \n      <Expand>  \n        <CustomListItems MaxItemsPerView=\"1000\" ExcludeView=\"Test\">  \n          <Variable Name=\"ctrl\" InitialValue=\"ctrl_\" />  \n          <Variable Name=\"slot\" InitialValue=\"slots_\" />  \n          <Variable Name=\"ctrl_end\" InitialValue=\"ctrl_ + capacity_\" />  \n          <Variable Name=\"slot_end\" InitialValue=\"slots_ + capacity_\" />  \n    \n          <Size>size_</Size>  \n          <Loop>  \n              <Break Condition=\"slot == slot_end\" />  \n              <If Condition=\"*ctrl >= -1\">\n                <Item>**slot,na</Item>  \n              </If>  \n              <Exec>++slot</Exec>  \n              <Exec>++ctrl</Exec>  \n          </Loop>\n        </CustomListItems>  \n      </Expand>  \n  </Type>  \n    \n  <Type Name=\"phmap::priv::map_slot_type&lt;*,*&gt;\">\n    <DisplayString>{value}</DisplayString>\n  </Type>\n\n  <!-- flat map iterators -->\n  <Type Name=\"phmap::priv::raw_hash_set&lt;*,*,*,*&gt;::iterator\">\n       <DisplayString Condition=\"ctrl_ == 0\">unset</DisplayString>\n       <DisplayString Condition=\"!(*ctrl_ >= 0)\">end()</DisplayString>\n       <DisplayString>{*slot_,na}</DisplayString>\n  </Type>\n\n  <!-- node map iterators  - only difference is the **slot_ instead of * -->\n  <Type Name=\"phmap::priv::raw_hash_set&lt;phmap::priv::NodeHashSetPolicy&lt;*&gt;,*,*,*&gt;::iterator\">\n       <DisplayString Condition=\"ctrl_ == 0\">unset</DisplayString>\n       <DisplayString Condition=\"!(*ctrl_ >= 0)\">end()</DisplayString>\n       <DisplayString>{**slot_,na}</DisplayString>\n  </Type>\n\n  <!-- parallel flat/node set -->\n  <Type            Name=\"phmap::parallel_flat_hash_set&lt;*,*,*,*,*,*&gt;\">  \n  <AlternativeType Name=\"phmap::parallel_node_hash_set&lt;*,*,*,*,*,*&gt;\" />  \n      <DisplayString>{{size = ?}}</DisplayString>  \n      <Expand>  \n        <CustomListItems MaxItemsPerView=\"1000\" ExcludeView=\"Test\">  \n          <Variable Name=\"idx\" InitialValue=\"0\" />  \n          <Variable Name=\"maxidx\" InitialValue=\"$T5\" />  \n          <Variable Name=\"ctrl\" InitialValue=\"sets_._Elems[0].set_.ctrl_\" />  \n          <Variable Name=\"slot\" InitialValue=\"sets_._Elems[0].set_.slots_\" />  \n          <Variable Name=\"ctrl_end\" InitialValue=\"sets_._Elems[0].set_.ctrl_\" />  \n          <Variable Name=\"slot_end\" InitialValue=\"sets_._Elems[0].set_.slots_\" />  \n          <Exec>maxidx = 2 &lt;&lt; maxidx</Exec>\n          <Loop>  \n                <Break Condition=\"idx == maxidx\" />  \n                <Exec>ctrl = sets_._Elems[idx].set_.ctrl_</Exec>  \n                <Exec>slot = sets_._Elems[idx].set_.slots_</Exec>  \n                <Exec>ctrl_end = sets_._Elems[idx].set_.ctrl_ + sets_._Elems[idx].set_.capacity_</Exec>  \n                <Exec>slot_end = sets_._Elems[idx].set_.slots_ + sets_._Elems[idx].set_.capacity_</Exec>  \n                <Loop>  \n                    <Break Condition=\"slot == slot_end\" />  \n                    <If Condition=\"*ctrl >= -1\">\n                      <Item>*slot,na</Item>  \n                    </If>  \n                    <Exec>++slot</Exec>  \n                    <Exec>++ctrl</Exec>  \n                </Loop>\n                <Exec>++idx</Exec>  \n          </Loop>\n        </CustomListItems>  \n      </Expand>  \n  </Type>  \n\n  <!-- parallel flat/node map - only difference is $T6 instead of $T5 -->\n  <Type            Name=\"phmap::parallel_flat_hash_map&lt;*,*,*,*,*,*,*&gt;\">  \n  <AlternativeType Name=\"phmap::parallel_node_hash_map&lt;*,*,*,*,*,*,*&gt;\" /> \n      <DisplayString>{{size = ?}}</DisplayString>  \n      <Expand>  \n        <CustomListItems MaxItemsPerView=\"1000\" ExcludeView=\"Test\">  \n          <Variable Name=\"idx\" InitialValue=\"0\" />  \n          <Variable Name=\"maxidx\" InitialValue=\"$T6\" />  \n          <Variable Name=\"ctrl\" InitialValue=\"sets_._Elems[0].set_.ctrl_\" />  \n          <Variable Name=\"slot\" InitialValue=\"sets_._Elems[0].set_.slots_\" />  \n          <Variable Name=\"ctrl_end\" InitialValue=\"sets_._Elems[0].set_.ctrl_\" />  \n          <Variable Name=\"slot_end\" InitialValue=\"sets_._Elems[0].set_.slots_\" />  \n          <Exec>maxidx = 2 &lt;&lt; maxidx</Exec>\n          <Loop>  \n                <Break Condition=\"idx == maxidx\" />  \n                <Exec>ctrl = sets_._Elems[idx].set_.ctrl_</Exec>  \n                <Exec>slot = sets_._Elems[idx].set_.slots_</Exec>  \n                <Exec>ctrl_end = sets_._Elems[idx].set_.ctrl_ + sets_._Elems[idx].set_.capacity_</Exec>  \n                <Exec>slot_end = sets_._Elems[idx].set_.slots_ + sets_._Elems[idx].set_.capacity_</Exec>  \n                <Loop>  \n                    <Break Condition=\"slot == slot_end\" />  \n                    <If Condition=\"*ctrl >= -1\">\n                      <Item>*slot,na</Item>  \n                    </If>  \n                    <Exec>++slot</Exec>  \n                    <Exec>++ctrl</Exec>  \n                </Loop>\n                <Exec>++idx</Exec>  \n          </Loop>\n        </CustomListItems>  \n      </Expand>  \n  </Type>  \n\n  <Type Name=\"phmap::priv::parallel_hash_set&lt;*,*,*,*,*,*,*&gt;::iterator\">\n       <DisplayString>{it_,na}</DisplayString>\n  </Type>\n\n</AutoVisualizer>  \n"
  },
  {
    "path": "natvis/rapidjson.natvis",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<AutoVisualizer xmlns=\"http://schemas.microsoft.com/vstudio/debugger/natvis/2010\">\n\t<!-- rapidjson::GenericValue - basic support -->\n\t<Type Name=\"rapidjson::GenericValue&lt;*,*&gt;\">\n\t\t<DisplayString Condition=\"(data_.f.flags &amp; kTypeMask) == rapidjson::kNullType\">null</DisplayString>\n\t\t<DisplayString Condition=\"data_.f.flags == kTrueFlag\">true</DisplayString>\n\t\t<DisplayString Condition=\"data_.f.flags == kFalseFlag\">false</DisplayString>\n\t\t<DisplayString Condition=\"data_.f.flags == kShortStringFlag\">{(const Ch*)data_.ss.str,na}</DisplayString>\n\t\t<DisplayString Condition=\"(data_.f.flags &amp; kTypeMask) == rapidjson::kStringType\">{(const Ch*)((size_t)data_.s.str &amp; 0x0000FFFFFFFFFFFF),[data_.s.length]na}</DisplayString>\n\t\t<DisplayString Condition=\"(data_.f.flags &amp; kNumberIntFlag) == kNumberIntFlag\">{data_.n.i.i}</DisplayString>\n\t\t<DisplayString Condition=\"(data_.f.flags &amp; kNumberUintFlag) == kNumberUintFlag\">{data_.n.u.u}</DisplayString>\n\t\t<DisplayString Condition=\"(data_.f.flags &amp; kNumberInt64Flag) == kNumberInt64Flag\">{data_.n.i64}</DisplayString>\n\t\t<DisplayString Condition=\"(data_.f.flags &amp; kNumberUint64Flag) == kNumberUint64Flag\">{data_.n.u64}</DisplayString>\n\t\t<DisplayString Condition=\"(data_.f.flags &amp; kNumberDoubleFlag) == kNumberDoubleFlag\">{data_.n.d}</DisplayString>\n\t\t<DisplayString Condition=\"data_.f.flags == rapidjson::kObjectType\">Object members={data_.o.size}</DisplayString>\n\t\t<DisplayString Condition=\"data_.f.flags == rapidjson::kArrayType\">Array members={data_.a.size}</DisplayString>\n\t\t<Expand>\n\t\t\t<Item Condition=\"data_.f.flags == rapidjson::kObjectType\" Name=\"[size]\">data_.o.size</Item>\n\t\t\t<Item Condition=\"data_.f.flags == rapidjson::kObjectType\" Name=\"[capacity]\">data_.o.capacity</Item>\n\t\t\t<ArrayItems Condition=\"data_.f.flags == rapidjson::kObjectType\">\n\t\t\t\t<Size>data_.o.size</Size>\n\t\t\t\t<!-- NOTE: Rapidjson stores some extra data in the high bits of pointers, which is why the mask -->\n\t\t\t\t<ValuePointer>(rapidjson::GenericMember&lt;$T1,$T2&gt;*)(((size_t)data_.o.members) &amp; 0x0000FFFFFFFFFFFF)</ValuePointer>\n\t\t\t</ArrayItems>\n\n\t\t\t<Item Condition=\"data_.f.flags == rapidjson::kArrayType\" Name=\"[size]\">data_.a.size</Item>\n\t\t\t<Item Condition=\"data_.f.flags == rapidjson::kArrayType\" Name=\"[capacity]\">data_.a.capacity</Item>\n\t\t\t<ArrayItems Condition=\"data_.f.flags == rapidjson::kArrayType\">\n\t\t\t\t<Size>data_.a.size</Size>\n\t\t\t\t<!-- NOTE: Rapidjson stores some extra data in the high bits of pointers, which is why the mask -->\n\t\t\t\t<ValuePointer>(rapidjson::GenericValue&lt;$T1,$T2&gt;*)(((size_t)data_.a.elements) &amp; 0x0000FFFFFFFFFFFF)</ValuePointer>\n\t\t\t</ArrayItems>\n\n\t\t</Expand>\n\t</Type>\n\n</AutoVisualizer>\n"
  },
  {
    "path": "scripts/publish.py",
    "content": "import sys\nimport os\nimport subprocess\nimport glob\nimport argparse\n\ntry:\n    # https://docs.github.com/en/actions/learn-github-actions/variables\n    if os.environ[\"GITHUB_ACTIONS\"].lower() == \"true\":\n        # 不知为何在 Github Actions 中运行时默认编码为 ANSI，并且 print 需刷新流才能正常显示\n        for stream in [sys.stdout, sys.stderr]:\n            stream.reconfigure(encoding=\"utf-8\")\nexcept:\n    pass\n\nargParser = argparse.ArgumentParser()\nargParser.add_argument(\"--compiler\", choices=[\"MSVC\", \"ClangCL\"], default=\"MSVC\")\nargParser.add_argument(\"--platform\", choices=[\"x64\", \"ARM64\"], default=\"x64\")\nargParser.add_argument(\"--use-native-march\", action=\"store_true\")\nargParser.add_argument(\"--version-major\", type=int, default=0)\nargParser.add_argument(\"--version-minor\", type=int, default=0)\nargParser.add_argument(\"--version-patch\", type=int, default=0)\nargParser.add_argument(\"--version-string\", default=\"\")\nargParser.add_argument(\"--pfx-path\", default=\"\")\nargParser.add_argument(\"--pfx-password\", default=\"\")\nargs = argParser.parse_args()\n\n#####################################################################\n#\n# 使用 vswhere 查找 msbuild\n#\n#####################################################################\n\nprogramFilesX86Path = os.environ[\"ProgramFiles(x86)\"]\nvswherePath = programFilesX86Path + \"\\\\Microsoft Visual Studio\\\\Installer\\\\vswhere.exe\"\nif not os.access(vswherePath, os.X_OK):\n    raise Exception(\"未找到 vswhere\")\n\np = subprocess.run(\n    vswherePath\n    + \" -latest -requires Microsoft.Component.MSBuild -find MSBuild\\\\**\\\\Bin\\\\MSBuild.exe\",\n    capture_output=True,\n)\nmsbuildPath = str(p.stdout, encoding=\"utf-8\").splitlines()[0]\nif not os.access(msbuildPath, os.X_OK):\n    raise Exception(\"未找到 msbuild\")\n\n#####################################################################\n#\n# 编译\n#\n#####################################################################\n\nos.chdir(os.path.dirname(__file__) + \"\\\\..\")\n\np = subprocess.run(\"git rev-parse --short HEAD\", capture_output=True)\ncommitId = str(p.stdout, encoding=\"utf-8\")[0:-1]\n\nversionNumProps = f\";MajorVersion={args.version_major};MinorVersion={args.version_minor};PatchVersion={args.version_patch}\"\nversionStrProp = \"\" if args.version_string == \"\" else f\";VersionString={args.version_string}\"\n\np = subprocess.run(\n    f'\"{msbuildPath}\" Magpie.slnx -m -t:Rebuild -restore -p:RestorePackagesConfig=true;Configuration=Release;Platform={args.platform};DisablePDB=true;UseClangCL={args.compiler == \"ClangCL\"};UseNativeMicroArch={args.use_native_march};OutDir={os.getcwd()}\\\\publish\\\\{args.platform}\\\\;CommitId={commitId}{versionNumProps}{versionStrProp}'\n)\nif p.returncode != 0:\n    raise Exception(\"编译失败\")\n\n#####################################################################\n#\n# 清理不需要的文件\n#\n#####################################################################\n\nos.chdir(\"publish\\\\\" + args.platform)\n\n\n# 删除文件，忽略错误\ndef remove_file(file):\n    try:\n        os.remove(file)\n    except:\n        pass\n\n\nfor file in glob.glob(\"*.lib\"):\n    remove_file(file)\n\nprint(\"清理完毕\", flush=True)\n\n#####################################################################\n#\n# 为 TouchHelper 签名\n#\n#####################################################################\n\nif args.pfx_path != \"\":\n    pfxPath = os.path.join(\"..\\\\..\", args.pfx_path)\n\n    # 取最新的 Windows SDK\n    windowsSdkDir = max(\n        glob.glob(programFilesX86Path + \"\\\\Windows Kits\\\\10\\\\bin\\\\10.*\")\n    )\n    passwordOption = \"\" if args.pfx_password == \"\" else f'/p \"{args.pfx_password}\"'\n    p = subprocess.run(\n        f'\"{windowsSdkDir}\\\\x64\\\\signtool.exe\" sign /fd SHA256 /a /f \"{pfxPath}\" {passwordOption} TouchHelper.exe'\n    )\n    if p.returncode != 0:\n        raise Exception(\"签名失败\")\n"
  },
  {
    "path": "scripts/release.py",
    "content": "import sys\nimport os\nimport subprocess\nimport shutil\nimport requests\nimport hashlib\nimport json\nimport argparse\n\ntry:\n    # https://docs.github.com/en/actions/learn-github-actions/variables\n    if os.environ[\"GITHUB_ACTIONS\"].lower() == \"true\":\n        # 不知为何在 Github Actions 中运行时默认编码为 ANSI，并且 print 需刷新流才能正常显示\n        for stream in [sys.stdout, sys.stderr]:\n            stream.reconfigure(encoding=\"utf-8\")\nexcept:\n    pass\n\nargParser = argparse.ArgumentParser()\nargParser.add_argument(\"version_major\", type=int)\nargParser.add_argument(\"version_minor\", type=int)\nargParser.add_argument(\"version_patch\", type=int)\nargParser.add_argument(\"tag\")\nargParser.add_argument(\"prerelease\")\nargParser.add_argument(\"access_token\")\nargs = argParser.parse_args()\n\nisPrerelease = args.prerelease.lower() == \"true\"\n\nrepo = os.environ[\"GITHUB_REPOSITORY\"]\nactor = os.environ[\"GITHUB_ACTOR\"]\n\nsubprocess.run(\"git config user.name \" + actor)\nsubprocess.run(f\"git config user.email {actor}@users.noreply.github.com\")\n\nsubprocess.run(\n    f\"git remote set-url origin https://{args.access_token}@github.com/{repo}.git\"\n)\n\n# 打标签\nif subprocess.run(f\"git tag -a {args.tag} -m {args.tag}\").returncode != 0:\n    raise Exception(\"打标签失败\")\n\nif subprocess.run(\"git push origin \" + args.tag).returncode != 0:\n    raise Exception(\"推送标签失败\")\n\nprint(\"已创建标签 \" + args.tag, flush=True)\n\nheaders = {\n    \"Accept\": \"application/vnd.github+json\",\n    \"Authorization\": \"Bearer \" + args.access_token,\n    \"X-GitHub-Api-Version\": \"2022-11-28\",\n}\n\n# 获取前一个发布版本来生成默认发行说明\nprevReleaseTag = None\ntry:\n    if isPrerelease:\n        # 发布预发行版与最新的版本（无论是正式版还是预发行版）对比\n        response = requests.get(\n            f\"https://api.github.com/repos/{repo}/releases\",\n            headers=headers,\n            params={\"per_page\": 1}\n        )\n        if response.ok:\n            prevReleaseTag = response.json()[0][\"tag_name\"]\n    else:\n        # 发布正式版则与最新的正式版对比\n        # 由于可以自己选择最新版本，此接口可能不会返回时间上最新发布的版本，不是大问题\n        response = requests.get(\n            f\"https://api.github.com/repos/{repo}/releases/latest\", headers=headers\n        )\n        if response.ok:\n            prevReleaseTag = response.json()[\"tag_name\"]\nexcept:\n    # 忽略错误\n    pass\n\n# 发布 release\nif prevReleaseTag == None:\n    body = \"\"\nelse:\n    # 默认发行说明为比较两个 tag\n    body = f\"https://github.com/{repo}/compare/{prevReleaseTag}...{args.tag}\"\n\nresponse = requests.post(\n    f\"https://api.github.com/repos/{repo}/releases\",\n    json={\n        \"tag_name\": args.tag,\n        \"name\": args.tag,\n        \"prerelease\": isPrerelease,\n        \"body\": body,\n        \"discussion_category_name\": \"Announcements\",\n    },\n    headers=headers,\n)\nif not response.ok:\n    raise Exception(\"发布失败\")\n\nuploadUrl = response.json()[\"upload_url\"]\nuploadUrl = uploadUrl[: uploadUrl.find(\"{\")] + \"?name=\"\n\nos.chdir(os.path.dirname(__file__) + \"\\\\..\\\\publish\")\n\npkgInfos = {}\nfor platform in [\"x64\", \"ARM64\"]:\n    # 打包成 zip\n    pkgName = \"Magpie-\" + args.tag + \"-\" + platform\n    shutil.make_archive(pkgName, \"zip\", pkgName)\n    pkgName += \".zip\"\n\n    # 上传资产\n    with open(pkgName, \"rb\") as f:\n        # 流式上传\n        # https://requests.readthedocs.io/en/latest/user/advanced/#streaming-uploads\n        response = requests.post(\n            uploadUrl + pkgName,\n            data=f,\n            headers={**headers, \"Content-Type\": \"application/zip\"},\n        )\n\n        if not response.ok:\n            raise Exception(\"上传失败\")\n\n        # 计算哈希\n        f.seek(0, os.SEEK_SET)\n        md5 = hashlib.file_digest(f, hashlib.md5).hexdigest()\n\n    pkgInfos[platform] = (pkgName, md5)\n\nprint(\"已发布 \" + args.tag, flush=True)\n\n# 更新 version.json\n# 此步应在发布版本之后，因为程序使用 version.json 检查更新\nos.chdir(\"..\")\nwith open(\"version.json\", \"w\", encoding=\"utf-8\") as f:\n    json.dump(\n        {\n            \"version\": f\"{args.version_major}.{args.version_minor}.{args.version_patch}\",\n            \"tag\": args.tag,\n            \"binary\": {\n                \"x64\": {\n                    \"url\": f\"https://github.com/{repo}/releases/download/{args.tag}/{pkgInfos['x64'][0]}\",\n                    \"hash\": pkgInfos[\"x64\"][1],\n                },\n                \"ARM64\": {\n                    \"url\": f\"https://github.com/{repo}/releases/download/{args.tag}/{pkgInfos['ARM64'][0]}\",\n                    \"hash\": pkgInfos[\"ARM64\"][1],\n                },\n            },\n        },\n        f,\n        indent=4,\n    )\n\n# 提交对 version.json 的更改\nif subprocess.run(\"git add version.json\").returncode != 0:\n    raise Exception(\"git add 失败\")\n\nif subprocess.run('git commit -m \"Update version.json\"').returncode != 0:\n    raise Exception(\"git commit 失败\")\n\nif subprocess.run(\"git push\").returncode != 0:\n    raise Exception(\"git push 失败\")\n"
  },
  {
    "path": "scripts/wiki.py",
    "content": "import sys\nimport os\nimport tempfile\nimport glob\nimport shutil\nimport subprocess\nimport argparse\n\ntry:\n    # https://docs.github.com/en/actions/learn-github-actions/variables\n    if os.environ[\"GITHUB_ACTIONS\"].lower() == \"true\":\n        # 不知为何在 Github Actions 中运行时默认编码为 ANSI，并且 print 需刷新流才能正常显示\n        for stream in [sys.stdout, sys.stderr]:\n            stream.reconfigure(encoding=\"utf-8\")\nexcept:\n    pass\n\nargParser = argparse.ArgumentParser()\nargParser.add_argument(\"access_token\")\nargs = argParser.parse_args()\n\nwikiRepoUrl = f'https://{args.access_token}@github.com/{os.environ[\"GITHUB_REPOSITORY\"]}.wiki.git'\n\n# 创建临时目录\nwikiRepoDir = tempfile.mkdtemp()\nos.chdir(wikiRepoDir)\n\np = subprocess.run(\"git init\")\nif p.returncode != 0:\n    raise Exception(\"git init 失败\")\n\nactor = os.environ[\"GITHUB_ACTOR\"]\nsubprocess.run(\"git config user.name \" + actor)\nsubprocess.run(f\"git config user.email {actor}@users.noreply.github.com\")\n\n# 拉取\np = subprocess.run(f'git pull \"{wikiRepoUrl}\"')\nif p.returncode != 0:\n    raise Exception(\"git pull 失败\")\n\n# 将文档拷贝到临时目录\ndocsDir = os.path.normpath(os.path.dirname(__file__) + \"\\\\..\\\\docs\")\nfor file in glob.glob(docsDir + \"\\\\*.md\"):\n    shutil.copy(file, wikiRepoDir)\n    print(\"已拷贝 \" + file, flush=True)\n\n# 推送\nsubprocess.run(\"git add .\")\nsubprocess.run('git commit -m \"Published by CI\"')\np = subprocess.run(f'git push --set-upstream \"{wikiRepoUrl}\" master')\nif p.returncode != 0:\n    raise Exception(\"git push 失败\")\n"
  },
  {
    "path": "src/BuildOptions.props",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <!-- 不要直接修改这些选项，应通过 BuildOptions.props.user 或命令行参数覆盖 -->\n  <PropertyGroup>\n    <!-- 使用 clang-cl 编译 -->\n    <UseClangCL>false</UseClangCL>\n    <!-- 针对当前硬件生成优化代码，只在使用 clang-cl 编译时有效 -->\n    <UseNativeMicroArch>false</UseNativeMicroArch>\n    <!-- 编译为打包应用 (暂不支持) -->\n    <IsPackaged>false</IsPackaged>\n    <!-- 窗口模式缩放时把用于调整窗口尺寸的辅助窗口标示出来 -->\n    <DebugBorder>false</DebugBorder>\n    <!-- 在性能分析器上显示调试信息 -->\n    <DebugInfoOnOverlay>false</DebugInfoOnOverlay>\n    <!-- 使用 composition swapchain 呈现 -->\n    <UseCompSwapchain>false</UseCompSwapchain>\n    \n    <MajorVersion></MajorVersion>\n    <MinorVersion></MinorVersion>\n    <PatchVersion></PatchVersion>\n    <VersionString></VersionString>\n    <CommitId></CommitId>\n  </PropertyGroup>\n  \n  <!-- 用户自定义编译选项 -->\n  <Import Project=\"$(MSBuildThisFileDirectory)\\BuildOptions.props.user\" Condition=\"Exists('$(MSBuildThisFileDirectory)\\BuildOptions.props.user')\" />\n</Project>\n"
  },
  {
    "path": "src/Common.Post.props",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Microsoft.Cpp.props 之后导入 -->\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemDefinitionGroup>\n    <ClCompile>\n      <PrecompiledHeader>Use</PrecompiledHeader>\n      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>\n      <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>\n      <PreprocessorDefinitions>_WINDOWS;WIN32_LEAN_AND_MEAN;WINRT_LEAN_AND_MEAN;WINRT_NO_MODULE_LOCK;WIL_SUPPRESS_EXCEPTIONS;WIL_USE_STL=1;NOGDICAPMASKS;NOICONS;NOATOM;NOCLIPBOARD;NODRAWTEXT;NOMEMMGR;NOMETAFILE;NOMINMAX;NOOPENFILE;NOSCROLL;NOSERVICE;NOSOUND;NOTEXTMETRIC;NOCOMM;NOKANJI;NOHELP;NOPROFILER;NOMCX;NO_SHLWAPI_PATH;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <PreprocessorDefinitions>MP_MAJOR_VERSION=$(MajorVersion);MP_MINOR_VERSION=$(MinorVersion);MP_PATCH_VERSION=$(PatchVersion);%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <PreprocessorDefinitions Condition=\"'$(VersionString)' != ''\">MP_VERSION_STRING=$(VersionString);%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <PreprocessorDefinitions Condition=\"'$(CommitId)' != ''\">MP_COMMIT_ID=$(CommitId);%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <PreprocessorDefinitions Condition=\"$(DebugBorder)\">MP_DEBUG_BORDER;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <PreprocessorDefinitions Condition=\"$(DebugInfoOnOverlay)\">MP_DEBUG_INFO_ON_OVERLAY;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <PreprocessorDefinitions Condition=\"$(UseCompSwapchain)\">MP_USE_COMPSWAPCHAIN;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <DebugInformationFormat Condition=\"'$(DisablePDB)' == 'true'\">None</DebugInformationFormat>\n      <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>\n      <!-- /await:strict: 禁用协程的非标准语言扩展 -->\n      <AdditionalOptions Condition=\"!$(UseClangCL)\">/await:strict %(AdditionalOptions)</AdditionalOptions>\n      <!-- -fstrict-vtable-pointers: 缓存虚表指针，这要求不能通过非法手段改变对象的动态类型 -->\n      <!-- -funsafe-math-optimizations: 以降低精度为代价提高浮点运算速度 -->\n      <!-- -fno-math-errno: 浮点操作不设置 errno，这使一些数学函数可以内联 -->\n      <AdditionalOptions Condition=\"$(UseClangCL)\">/clang:-Wno-missing-designated-field-initializers /clang:-Wno-missing-field-initializers /clang:-fstrict-vtable-pointers /clang:-funsafe-math-optimizations /clang:-fno-math-errno %(AdditionalOptions)</AdditionalOptions>\n      <!-- -mcx16: 启用 CX16 指令，Windows 从 8.1 开始要求 CPU 支持它 -->\n      <AdditionalOptions Condition=\"$(UseClangCL) And '$(Platform)' == 'x64'\">/clang:-mcx16 %(AdditionalOptions)</AdditionalOptions>\n      <!-- -march=native: 针对当前硬件生成优化代码 -->\n      <AdditionalOptions Condition=\"$(UseClangCL) And $(UseNativeMicroArch)\">/clang:-march=native %(AdditionalOptions)</AdditionalOptions>\n      <!-- 使用 clang-cl 编译时禁用 cppwinrt 头文件中的编译警告 -->\n      <AdditionalOptions Condition=\"$(UseClangCL) And '$(GeneratedFilesDir)' != ''\">/clang:-isystem /clang:\"$(GeneratedFilesDir)\\\" %(AdditionalOptions)</AdditionalOptions>\n      <!-- 修复编译 Shared 中源文件找不到 pch.h 的问题 -->\n      <AdditionalIncludeDirectories Condition=\"$(UseClangCL)\">.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\n    </ClCompile>\n    <ResourceCompile>\n      <PreprocessorDefinitions>MP_MAJOR_VERSION=$(MajorVersion);MP_MINOR_VERSION=$(MinorVersion);MP_PATCH_VERSION=$(PatchVersion);%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <PreprocessorDefinitions Condition=\"'$(VersionString)' != ''\">MP_VERSION_STRING=$(VersionString);%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <PreprocessorDefinitions Condition=\"'$(CommitId)' != ''\">MP_COMMIT_ID=$(CommitId);%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)\\Shared;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\n    </ResourceCompile>\n    <Link>\n      <GenerateDebugInformation Condition=\"'$(DisablePDB)' == 'true'\">false</GenerateDebugInformation>\n    </Link>\n  </ItemDefinitionGroup>\n\n  <ItemDefinitionGroup Condition=\"'$(Configuration)' == 'Debug'\">\n    <ClCompile>\n      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n    </ClCompile>\n    <ResourceCompile>\n      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n    </ResourceCompile>\n  </ItemDefinitionGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)' == 'Release'\">\n    <ClCompile>\n      <!-- Release 下不允许编译警告 -->\n      <TreatWarningAsError>true</TreatWarningAsError>\n      <!-- 存在同名全局属性，但表现很奇怪。首先，在导入 Microsoft.Cpp.Default.props 之前和之后定义 -->\n      <!-- 效果不同，似乎在导入前定义才能起作用；其次，全局 WholeProgramOptimization 属性起作用时由 -->\n      <!-- Microsoft.Cpp.targets 而不是 Microsoft.Cpp.props 更改编译选项，将用户设置覆盖；最后，该 -->\n      <!-- 属性起作用时会将 LinkTimeCodeGeneration 改为 UseFastLinkTimeCodeGeneration，而我们想要 -->\n      <!-- UseLinkTimeCodeGeneration。为了精确控制编译参数，我们不使用全局 -->\n      <!-- WholeProgramOptimization，而是自己定义编译选项。全局 WholeProgramOptimization 影响的属 -->\n      <!-- 性见 $(VCTargetsPath)\\Microsoft.Cpp.WholeProgramOptimization.props。 -->\n      <WholeProgramOptimization>true</WholeProgramOptimization>\n      <FunctionLevelLinking>true</FunctionLevelLinking>\n      <IntrinsicFunctions>true</IntrinsicFunctions>\n      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <!-- /Gw: 链接时删除未使用和重复的数据，可以减小二进制文件体积 -->\n      <!-- /Zc:checkGwOdr: 防止 /Gw 导致某些 ODR 违规被忽略 -->\n      <AdditionalOptions>/Gw %(AdditionalOptions)</AdditionalOptions>\n      <AdditionalOptions Condition=\"!$(UseClangCL)\">/Zc:checkGwOdr %(AdditionalOptions)</AdditionalOptions>\n      <!-- clang-cl 不支持 /LTCG，应使用 LTO -->\n      <AdditionalOptions Condition=\"$(UseClangCL)\">/clang:-flto %(AdditionalOptions)</AdditionalOptions>\n    </ClCompile>\n    <Link>\n      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>\n      <EnableCOMDATFolding>true</EnableCOMDATFolding>\n      <OptimizeReferences>true</OptimizeReferences>\n    </Link>\n    <Lib>\n      <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>\n    </Lib>\n  </ItemDefinitionGroup>\n\n  <!-- 所有项目共享的头文件 -->\n  <Import Project=\"$(MSBuildThisFileDirectory)\\Shared\\Shared.vcxitems\" Label=\"Shared\" />\n\n  <!-- Conan 依赖 -->\n  <Import Project=\"$(SolutionDir)\\obj\\$(Platform)\\$(Configuration)\\_ConanDeps\\$(MSBuildProjectName)\\conandeps.props\" Condition=\"Exists('$(SolutionDir)\\obj\\$(Platform)\\$(Configuration)\\_ConanDeps\\$(MSBuildProjectName)\\conandeps.props')\" />\n\n  <!-- HybridCRT -->\n  <Import Project=\"$(MSBuildThisFileDirectory)\\HybridCRT.props\" />\n\n  <!-- _CopyFilesMarkedCopyLocal 有一个 bug：即使没有复制任何文件也会更改 @(FileWrites)，经常导致 -->\n  <!-- up-to-date 检查失败。这个任务用于在 _CopyFilesMarkedCopyLocal 执行后修正 @(FileWrites)。 -->\n  <Target Name=\"FixUpToDateMarker\" AfterTargets=\"_CopyFilesMarkedCopyLocal\">\n    <ItemGroup>\n      <FileWrites Remove=\"@(CopyUpToDateMarker)\" Condition=\"'@(ReferencesCopiedInThisBuild)' == '' Or '$(WroteAtLeastOneFile)' != 'true'\" />\n    </ItemGroup>\n  </Target>\n\n  <!-- _AppendToWriteTlogFile 不会删除原始内容，如果某个中间文件不再生成会导致 up-to-date 检查失败 -->\n  <Target Name=\"FixWriteLog\" BeforeTargets=\"_AppendToWriteTlogFile\">\n    <Delete Files=\"$(TLogLocation)$(ProjectName).write.1u.tlog\" />\n  </Target>\n</Project>\n"
  },
  {
    "path": "src/Common.Pre.props",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Microsoft.Cpp.Default.props 之后导入 -->\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemGroup Label=\"ProjectConfigurations\">\n    <ProjectConfiguration Include=\"Debug|x64\">\n      <Configuration>Debug</Configuration>\n      <Platform>x64</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Debug|ARM64\">\n      <Configuration>Debug</Configuration>\n    <Platform>ARM64</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|x64\">\n      <Configuration>Release</Configuration>\n      <Platform>x64</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|ARM64\">\n      <Configuration>Release</Configuration>\n      <Platform>ARM64</Platform>\n    </ProjectConfiguration>\n  </ItemGroup>\n\n  <!-- 编译选项 -->\n  <Import Project=\"$(MSBuildThisFileDirectory)\\BuildOptions.props\" />\n\n  <PropertyGroup Label=\"Globals\">\n    <VS17 Condition=\"$([System.String]::new('$(MSBuildVersion)').StartsWith('17'))\">true</VS17>\n    <VS17 Condition=\"'$(VS17)' != 'true'\">false</VS17>\n    <VCProjectVersion Condition=\"$(VS17)\">17.0</VCProjectVersion>\n    <VCProjectVersion Condition=\"!$(VS17)\">18.0</VCProjectVersion>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <MajorVersion Condition=\"'$(MajorVersion)' == ''\">0</MajorVersion>\n    <MinorVersion Condition=\"'$(MinorVersion)' == ''\">0</MinorVersion>\n    <PatchVersion Condition=\"'$(PatchVersion)' == ''\">0</PatchVersion>\n    <!-- 可通过 VersionString 区分开发版本和发布版本 -->\n    <VersionString Condition=\"'$(VersionString)' == '' And ('$(MajorVersion)' != '0' Or '$(MinorVersion)' != '0' Or '$(PatchVersion)' != '0')\">$(MajorVersion).$(MinorVersion).$(PatchVersion)</VersionString>\n  </PropertyGroup>\n\n  <PropertyGroup Label=\"Configuration\">\n    <PlatformToolset Condition=\"$(UseClangCL)\">ClangCL</PlatformToolset>\n    <PlatformToolset Condition=\"!$(UseClangCL) And $(VS17)\">v143</PlatformToolset>\n    <PlatformToolset Condition=\"!$(UseClangCL) And !$(VS17)\">v145</PlatformToolset>\n    <UseDebugLibraries Condition=\"'$(Configuration)' == 'Debug'\">true</UseDebugLibraries>\n  </PropertyGroup>\n</Project>\n"
  },
  {
    "path": "src/Effects/ACNet.hlsl",
    "content": "// ACNet\n// 移植自 https://github.com/TianZerL/ACNetGLSL/blob/f20a6b6b7327f4caf588b06c6b21f18e40dae1ce/glsl/ACNet.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n\n//!COMMON\n\n#ifdef MP_DEBUG\n#pragma warning(disable: 4714)\t// X4714: sum of temp registers and indexable temp registers times 256 threads exceeds the recommended total 16384.  Performance may be reduced\n#endif\n\n#define RELU(x) max(x, 0)\n\n\n//!PASS 1\n//!DESC L1\n//!IN INPUT\n//!OUT tex1, tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nMF GetLuma(MF3 color) {\n\treturn dot(MF3(0.299, 0.587, 0.114), color);\n}\n\nconst static MF kernelsL1A[9 * 4] = {\n\t 0.0609,  0.1027, -0.0447,\n\t-0.1423,  0.7196,  0.1803,\n\t 0.0842,  0.0696,  0.0082,\n\t 0.0089,  0.1540, -0.8589,\n\t 0.0448,  0.8659, -0.2420,\n\t-0.0364,  0.0585,  0.0125,\n\t-0.1937,  0.7259,  0.0119,\n\t-0.8266,  0.4147,  0.0088,\n\t-0.0453, -0.0451, -0.0182,\n\t 0.0264, -0.9422,  0.1258,\n\t-0.0543,  0.1282,  0.7102,\n\t-0.0106,  0.0386, -0.0141\n};\n\nconst static MF4 biasL1A = { -0.7577, -0.0210, 0.0292, -0.0189 };\n\nconst static MF kernelsL1B[9 * 4] = {\n\t 0.2054, -0.0393,  0.1494,\n\t 0.3106,  0.5722,  0.2640,\n\t 0.1708, -0.1640, -0.0212,\n\t 0.0558, -0.2887, -0.1666,\n\t 0.3123, -0.3097, -0.2281,\n\t 0.2880,  0.3001,  0.0526,\n\t-0.0320,  0.0584, -0.0193,\n\t-0.0135,  1.0649, -0.1246,\n\t 0.0283, -0.3030, -0.6378,\n\t-0.0040, -0.9122,  0.0181,\n\t 0.0365,  0.8947, -0.0420,\n\t-0.0199,  0.0217,  0.0060\n};\n\nconst static MF4 biasL1B = { 0.0223,  0.0340,  0.0150, -0.0044 };\n\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos, 0);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos, 0);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos, 0);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = GetLuma(MF3(sr.w, sg.w, sb.w));\n\t\t\tsrc[i][j + 1] = GetLuma(MF3(sr.x, sg.x, sb.x));\n\t\t\tsrc[i + 1][j] = GetLuma(MF3(sr.z, sg.z, sb.z));\n\t\t\tsrc[i + 1][j + 1] = GetLuma(MF3(sr.y, sg.y, sb.y));\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = biasL1A;\n\t\t\ttarget1 = mad(src[i - 1][j - 1], MF4(kernelsL1A[0 * 9 + 0], kernelsL1A[1 * 9 + 0], kernelsL1A[2 * 9 + 0], kernelsL1A[3 * 9 + 0]), target1);\n\t\t\ttarget1 = mad(src[i][j - 1], MF4(kernelsL1A[0 * 9 + 1], kernelsL1A[1 * 9 + 1], kernelsL1A[2 * 9 + 1], kernelsL1A[3 * 9 + 1]), target1);\n\t\t\ttarget1 = mad(src[i + 1][j - 1], MF4(kernelsL1A[0 * 9 + 2], kernelsL1A[1 * 9 + 2], kernelsL1A[2 * 9 + 2], kernelsL1A[3 * 9 + 2]), target1);\n\t\t\ttarget1 = mad(src[i - 1][j], MF4(kernelsL1A[0 * 9 + 3], kernelsL1A[1 * 9 + 3], kernelsL1A[2 * 9 + 3], kernelsL1A[3 * 9 + 3]), target1);\n\t\t\ttarget1 = mad(src[i][j], MF4(kernelsL1A[0 * 9 + 4], kernelsL1A[1 * 9 + 4], kernelsL1A[2 * 9 + 4], kernelsL1A[3 * 9 + 4]), target1);\n\t\t\ttarget1 = mad(src[i + 1][j], MF4(kernelsL1A[0 * 9 + 5], kernelsL1A[1 * 9 + 5], kernelsL1A[2 * 9 + 5], kernelsL1A[3 * 9 + 5]), target1);\n\t\t\ttarget1 = mad(src[i - 1][j + 1], MF4(kernelsL1A[0 * 9 + 6], kernelsL1A[1 * 9 + 6], kernelsL1A[2 * 9 + 6], kernelsL1A[3 * 9 + 6]), target1);\n\t\t\ttarget1 = mad(src[i][j + 1], MF4(kernelsL1A[0 * 9 + 7], kernelsL1A[1 * 9 + 7], kernelsL1A[2 * 9 + 7], kernelsL1A[3 * 9 + 7]), target1);\n\t\t\ttarget1 = mad(src[i + 1][j + 1], MF4(kernelsL1A[0 * 9 + 8], kernelsL1A[1 * 9 + 8], kernelsL1A[2 * 9 + 8], kernelsL1A[3 * 9 + 8]), target1);\n\t\t\ttarget1 = RELU(target1);\n\n\t\t\tMF4 target2 = biasL1B;\n\t\t\ttarget2 = mad(src[i - 1][j - 1], MF4(kernelsL1B[0 * 9 + 0], kernelsL1B[1 * 9 + 0], kernelsL1B[2 * 9 + 0], kernelsL1B[3 * 9 + 0]), target2);\n\t\t\ttarget2 = mad(src[i][j - 1], MF4(kernelsL1B[0 * 9 + 1], kernelsL1B[1 * 9 + 1], kernelsL1B[2 * 9 + 1], kernelsL1B[3 * 9 + 1]), target2);\n\t\t\ttarget2 = mad(src[i + 1][j - 1], MF4(kernelsL1B[0 * 9 + 2], kernelsL1B[1 * 9 + 2], kernelsL1B[2 * 9 + 2], kernelsL1B[3 * 9 + 2]), target2);\n\t\t\ttarget2 = mad(src[i - 1][j], MF4(kernelsL1B[0 * 9 + 3], kernelsL1B[1 * 9 + 3], kernelsL1B[2 * 9 + 3], kernelsL1B[3 * 9 + 3]), target2);\n\t\t\ttarget2 = mad(src[i][j], MF4(kernelsL1B[0 * 9 + 4], kernelsL1B[1 * 9 + 4], kernelsL1B[2 * 9 + 4], kernelsL1B[3 * 9 + 4]), target2);\n\t\t\ttarget2 = mad(src[i + 1][j], MF4(kernelsL1B[0 * 9 + 5], kernelsL1B[1 * 9 + 5], kernelsL1B[2 * 9 + 5], kernelsL1B[3 * 9 + 5]), target2);\n\t\t\ttarget2 = mad(src[i - 1][j + 1], MF4(kernelsL1B[0 * 9 + 6], kernelsL1B[1 * 9 + 6], kernelsL1B[2 * 9 + 6], kernelsL1B[3 * 9 + 6]), target2);\n\t\t\ttarget2 = mad(src[i][j + 1], MF4(kernelsL1B[0 * 9 + 7], kernelsL1B[1 * 9 + 7], kernelsL1B[2 * 9 + 7], kernelsL1B[3 * 9 + 7]), target2);\n\t\t\ttarget2 = mad(src[i + 1][j + 1], MF4(kernelsL1B[0 * 9 + 8], kernelsL1B[1 * 9 + 8], kernelsL1B[2 * 9 + 8], kernelsL1B[3 * 9 + 8]), target2);\n\t\t\ttarget2 = RELU(target2);\n\n\t\t\ttex1[destPos] = target1;\n\t\t\ttex2[destPos] = target2;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC L2\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nconst static MF kernelsLA[9 * 8 * 4] = {\n\t 2.0611e-01,  6.6865e-02, -9.9123e-02,\n\t 8.5279e-02, -4.5549e-02, -2.9491e-02,\n\t-1.0358e-01, -2.4844e-02, -8.1539e-03,\n\t-1.1308e-01, -6.4228e-02, -8.8081e-02,\n\t 2.7810e-02, -1.6054e-01, -1.1985e-01,\n\t-2.8679e-01, -1.7785e-02,  1.1559e-01,\n\t 2.1614e-02, -6.8870e-02, -2.4707e-01,\n\t 9.6867e-02, -1.6561e-01,  2.8281e-02,\n\t-8.2469e-02, -9.8554e-02, -1.7147e-02,\n\t 3.3710e-01,  9.2126e-02,  3.6880e-02,\n\t 5.7004e-02,  4.0175e-02,  1.6116e-01,\n\t 2.5629e-01,  5.1154e-01,  2.4119e-02,\n\t 1.9495e-02,  2.6940e-01, -1.4050e-01,\n\t 5.0325e-02, -4.5920e-02, -1.3586e-01,\n\t 5.9458e-02,  1.3860e-01, -2.1065e-01,\n\t-1.0744e-01, -1.5915e-01, -1.1528e-02,\n\t-1.1470e-01,  6.3455e-02, -5.5558e-02,\n\t-6.9920e-02, -3.0142e-02, -4.9059e-02,\n\t 3.6421e-01,  3.0252e-01, -1.3562e-01,\n\t 1.5238e-01, -1.9868e-01, -3.2644e-02,\n\t-4.2849e-02,  1.3677e-02,  7.3854e-02,\n\t 7.6609e-02, -1.0121e-01,  3.6319e-02,\n\t 9.3536e-02,  6.0386e-02,  1.0086e-01,\n\t-2.6630e-01,  2.5875e-02, -1.9225e-01,\n\t 4.0687e-02,  1.1005e-01,  9.9578e-03,\n\t 1.6939e-01,  5.0872e-01,  8.9876e-02,\n\t 6.9561e-02,  1.1910e-01, -1.8091e-02,\n\t-3.5739e-02, -7.5300e-02, -1.6788e-02,\n\t 3.0316e-02,  1.5942e-01, -9.0878e-02,\n\t-6.3737e-02,  2.6141e-02,  8.8040e-03,\n\t 3.4954e-03, -6.6707e-02,  1.4551e-01,\n\t 7.6258e-02,  1.4893e-01, -1.5255e-01,\n\t 6.2442e-02,  2.2166e-01,  7.5327e-02,\n\t 5.4785e-02, -1.4503e-02, -1.5188e-03,\n\t 1.6748e-01, -5.2731e-03, -1.9900e-02,\n\t 4.4786e-02, -1.0669e-01,  1.3192e-01,\n\t 1.9961e-02, -8.1015e-02, -3.2264e-02,\n\t 1.0544e-01,  1.8844e-01,  7.4274e-03,\n\t 6.6729e-02, -7.8318e-02,  3.0775e-02,\n\t-8.6109e-03,  7.4977e-02,  9.4079e-02,\n\t-1.2726e-01, -2.9664e-01,  7.8153e-03,\n\t-4.8413e-02, -1.8450e-01, -7.1065e-02,\n\t-8.7609e-02, -7.7192e-02,  5.0919e-02,\n\t-1.4021e-01,  3.5696e-01,  1.2079e-02,\n\t-2.0318e-02, -1.8827e-02,  3.9084e-02,\n\t-2.8654e-02, -6.4166e-02,  5.4889e-02,\n\t 8.2689e-02,  8.4463e-02,  2.2339e-02,\n\t 1.0805e-01, -1.2566e-01,  1.7109e-01,\n\t-6.1338e-02, -3.4043e-02,  4.0473e-02,\n\t 6.3821e-02,  1.7626e-01, -5.8112e-02,\n\t-9.5002e-02,  1.3327e-02,  1.2242e-01,\n\t 4.9008e-02, -4.3678e-02,  2.2362e-02,\n\t-7.7903e-02, -3.8252e-02, -5.2271e-02,\n\t-1.8884e-02, -1.2859e-01,  4.1172e-02,\n\t-3.1181e-02,  3.2348e-02, -4.9081e-02,\n\t-6.7966e-02, -2.4896e-02, -6.5323e-02,\n\t 8.0742e-02,  2.6093e-01, -2.4638e-01,\n\t-8.0881e-02, -2.9643e-02, -7.9627e-02,\n\t 1.4020e-01,  2.1575e-01,  8.1244e-03,\n\t 2.1561e-01, -2.9305e-01, -2.5535e-02,\n\t-8.5538e-02, -1.4456e-01, -7.5664e-02,\n\t-3.9921e-02,  4.0659e-02,  1.7812e-01,\n\t 1.1580e-01,  5.6628e-02,  9.0008e-02,\n\t-2.2384e-02, -1.9788e-02, -4.0547e-02,\n\t 1.0070e-01,  2.9581e-01,  1.9936e-01,\n\t-1.1957e-01, -8.6508e-02, -8.2543e-04,\n\t-5.2879e-02,  1.5486e-01,  1.0829e-02,\n\t 1.4716e-01,  3.4257e-01, -3.2058e-03,\n\t-2.1687e-02,  5.8641e-02, -6.3806e-02,\n\t-3.2607e-02,  7.3328e-02, -6.4738e-03,\n\t-1.0031e-01, -1.7698e-01, -9.4201e-02,\n\t-3.3644e-02, -3.5860e-01, -9.3200e-02,\n\t-7.4142e-02,  5.5001e-02,  4.3741e-02,\n\t-2.2447e-03,  1.1941e-01, -1.6135e-02,\n\t-1.4764e-02, -1.0194e-02,  3.2540e-02,\n\t-1.0588e-01, -2.3000e-01, -1.1557e-02,\n\t-9.0254e-02,  2.3352e-01, -1.3622e-01,\n\t-1.9256e-03, -5.3372e-02,  1.0314e-01,\n\t-2.0100e-02,  1.0700e-01,  1.6108e-01,\n\t 2.8422e-02,  2.7909e-01,  3.8342e-01,\n\t 1.4025e-02,  9.0965e-02,  2.0218e-01,\n\t 3.3562e-03,  7.6652e-02,  4.5974e-02,\n\t-1.3617e-02, -1.4014e-01, -1.9253e-02,\n\t 1.1020e-01, -1.9678e-01,  6.7123e-02,\n\t-3.3294e-02, -1.3006e-01, -1.0111e-01,\n\t 5.5813e-02,  2.1127e-01,  2.0248e-02,\n\t-9.6386e-04, -5.2497e-03,  1.1134e-01,\n\t 2.8910e-02,  1.2229e-01,  1.8439e-01,\n\t 1.6413e-02,  1.5870e-01, -1.1616e-01,\n\t-1.6032e-03, -6.8258e-03, -2.1883e-02,\n\t 1.2052e-01, -2.1982e-02, -1.3088e-01,\n\t 2.8664e-02, -5.0670e-02,  2.2927e-01,\n\t 2.0461e-02,  7.7250e-03, -2.6630e-02,\n\t-9.0406e-02, -1.4174e-01,  9.8969e-02,\n\t-6.6573e-02, -2.4425e-01, -3.5126e-02,\n\t 9.3859e-02,  1.9058e-01, -1.6569e-01\n};\n\nconst static MF4 biasLA = { 0.0272, -0.5743, -0.0333, -0.0334 };\n\nconst static MF kernelsLB[9 * 8 * 4] = {\n\t-4.9163e-03,  7.4149e-02,  6.3345e-02,\n\t-1.7888e-02, -9.1876e-02,  1.3728e-01,\n\t-9.6098e-02, -3.4814e-02, -1.0862e-02,\n\t 4.8031e-03,  2.5206e-01,  8.0316e-02,\n\t 1.5102e-01,  4.1236e-02,  2.2339e-01,\n\t 2.8500e-01,  1.5106e-01,  9.6321e-04,\n\t-6.0741e-02,  3.5759e-02, -1.8829e-01,\n\t-1.1295e-03, -6.2322e-02,  8.4974e-01,\n\t-3.9817e-02, -2.0666e-01,  2.2961e-01,\n\t 3.6857e-02, -2.0211e-02, -9.3342e-02,\n\t 2.0827e-02,  6.8874e-02, -6.0287e-02,\n\t-6.9724e-02,  1.4423e-01, -7.6017e-02,\n\t 1.4718e-02,  1.8990e-01,  1.1789e-01,\n\t-1.5018e-01, -2.3071e-01,  1.7511e-01,\n\t-7.7605e-02,  5.0621e-02, -1.0381e-01,\n\t 8.6845e-02, -1.2410e-01, -4.4669e-01,\n\t 2.7930e-02, -5.4713e-02, -7.7923e-02,\n\t 8.6000e-02, -2.6371e-02, -8.6541e-02,\n\t-1.1521e-01,  1.4389e-01,  5.0507e-02,\n\t-1.6618e-02, -2.5150e-01, -4.9759e-02,\n\t 7.7166e-02,  4.5033e-03, -5.4649e-02,\n\t 2.8548e-03, -2.8078e-03,  8.1129e-02,\n\t-4.5973e-02,  3.6740e-03,  2.0746e-01,\n\t-9.8191e-02,  1.2807e-01,  8.1950e-03,\n\t 1.4240e-01,  1.5104e-01,  6.9624e-02,\n\t 2.2309e-01,  2.5688e-01,  9.4766e-02,\n\t 6.2560e-02,  7.1347e-02,  4.1432e-02,\n\t-3.1829e-02,  1.5207e-01,  2.0575e-02,\n\t-1.2506e-01,  2.9274e-01,  9.4712e-02,\n\t-2.0520e-01,  4.9894e-04,  5.6171e-02,\n\t-4.1567e-03,  6.6753e-02, -1.5767e-01,\n\t 6.3768e-02,  8.3008e-02, -3.5639e-01,\n\t 4.4660e-02,  2.6996e-01, -6.4014e-02,\n\t 8.5475e-02,  1.7854e-02, -6.4079e-02,\n\t 1.8760e-01,  1.5285e-01, -3.5614e-02,\n\t 1.0747e-02, -3.1330e-01, -4.8664e-02,\n\t 7.2150e-02,  1.7570e-01,  1.6716e-01,\n\t 6.2431e-02,  2.3755e-01,  2.8554e-01,\n\t 3.5791e-02,  2.8185e-01,  1.5810e-01,\n\t-4.0886e-02,  1.8833e-02, -8.2903e-03,\n\t 1.3994e-02, -1.0846e-01,  3.5315e-02,\n\t-6.2674e-02,  6.2806e-02,  2.2168e-02,\n\t-3.6236e-01, -2.5326e-01,  5.6331e-02,\n\t 9.8762e-02,  3.8049e-01,  5.9885e-02,\n\t-3.0541e-02,  7.9855e-02, -5.8639e-02,\n\t 1.1104e-03,  1.7147e-02,  3.3115e-02,\n\t-3.3663e-02,  7.4615e-02,  6.4211e-02,\n\t-7.3441e-02, -1.5568e-01,  7.6546e-02,\n\t 6.1802e-02, -1.5300e-01, -1.8209e-02,\n\t-9.2786e-03,  1.6622e-01,  1.1354e-01,\n\t 9.5865e-03, -2.4226e-02, -1.4750e-03,\n\t-5.5294e-02, -1.1839e-01,  3.8867e-03,\n\t 1.7262e-01,  4.2743e-01,  6.8970e-02,\n\t-2.0232e-01, -1.4564e-01,  2.3025e-02,\n\t-2.6139e-03, -1.6907e-02,  1.1693e-01,\n\t-9.4871e-03,  3.8488e-02, -4.8351e-02,\n\t-9.2171e-02,  4.8227e-02,  9.7378e-02,\n\t-1.0292e-01, -1.2084e-01, -9.6676e-02,\n\t 1.8103e-02,  3.0658e-01, -7.7755e-02,\n\t-2.4362e-02, -1.9862e-01, -6.9665e-02,\n\t 8.2944e-03, -1.4680e-01, -1.7371e-02,\n\t-1.6534e-01,  2.5752e-01,  1.1129e-01,\n\t-9.4151e-02, -1.3225e-01,  1.5933e-01,\n\t 9.0723e-02,  5.5469e-02, -1.4091e-01,\n\t 8.3404e-02,  1.3741e-01, -3.5438e-02,\n\t 3.2681e-02,  2.8491e-02,  1.4278e-02,\n\t 2.3789e-01, -2.3687e-03, -5.3264e-03,\n\t-1.1161e-01,  1.9351e-02,  5.0832e-02,\n\t 8.2246e-03,  2.9892e-02, -3.7197e-02,\n\t 4.8236e-02,  1.6945e-01,  1.3673e-01,\n\t 1.1236e-01,  7.2318e-01, -4.1618e-02,\n\t 2.7494e-01,  1.0081e-01, -8.5399e-03,\n\t-5.6151e-02,  8.1212e-02, -7.5770e-02,\n\t 2.7872e-02,  9.4644e-02,  1.1175e-02,\n\t-6.1539e-02,  7.7395e-02, -3.2495e-02,\n\t-5.1640e-02,  2.1028e-03,  1.5825e-02,\n\t-1.1004e-01,  2.3153e-01, -6.1653e-02,\n\t-2.6497e-02,  5.9461e-01,  4.0865e-02,\n\t-1.9956e-02,  7.9328e-02, -1.7002e-02,\n\t-5.5930e-03,  5.2015e-02,  7.7945e-04,\n\t 1.0136e-02, -9.0111e-02, -1.1175e-01,\n\t-3.1781e-02,  1.4686e-01, -7.5718e-03,\n\t 1.1036e-02,  2.4618e-01,  8.5951e-02,\n\t 3.4775e-02, -1.2184e-01,  1.8010e-01,\n\t-3.6781e-02, -1.3912e-01, -4.9172e-02,\n\t 3.3064e-02,  5.0582e-01,  1.0713e-02,\n\t-1.2934e-02, -1.7697e-01, -1.4954e-01,\n\t 2.2229e-02, -5.8568e-03, -5.0186e-02,\n\t 1.9648e-02, -1.1302e-01,  1.5629e-02,\n\t-3.5015e-02,  9.5032e-02, -2.9677e-02,\n\t 9.5173e-02, -3.0330e-02, -3.7652e-02,\n\t-2.6097e-03,  7.4723e-01, -7.6234e-03,\n\t-3.8826e-02,  1.0191e-01,  3.6589e-03,\n\t-2.6503e-02, -1.1133e-01, -2.2029e-02,\n\t-1.9101e-01, -2.1108e-01, -7.4371e-02,\n\t-7.9349e-02, -1.0405e-01,  5.0315e-02\n};\n\nconst static MF4 biasLB = { 0.0082, -0.0263, -0.0048, -0.0167 };\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 tl2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 target1 = biasLA;\n\ttarget1 = MulAdd(tl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 0], kernelsLA[1 * 72 + 0 * 9 + 0], kernelsLA[2 * 72 + 0 * 9 + 0], kernelsLA[3 * 72 + 0 * 9 + 0], kernelsLA[0 * 72 + 1 * 9 + 0], kernelsLA[1 * 72 + 1 * 9 + 0], kernelsLA[2 * 72 + 1 * 9 + 0], kernelsLA[3 * 72 + 1 * 9 + 0], kernelsLA[0 * 72 + 2 * 9 + 0], kernelsLA[1 * 72 + 2 * 9 + 0], kernelsLA[2 * 72 + 2 * 9 + 0], kernelsLA[3 * 72 + 2 * 9 + 0], kernelsLA[0 * 72 + 3 * 9 + 0], kernelsLA[1 * 72 + 3 * 9 + 0], kernelsLA[2 * 72 + 3 * 9 + 0], kernelsLA[3 * 72 + 3 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 1], kernelsLA[1 * 72 + 0 * 9 + 1], kernelsLA[2 * 72 + 0 * 9 + 1], kernelsLA[3 * 72 + 0 * 9 + 1], kernelsLA[0 * 72 + 1 * 9 + 1], kernelsLA[1 * 72 + 1 * 9 + 1], kernelsLA[2 * 72 + 1 * 9 + 1], kernelsLA[3 * 72 + 1 * 9 + 1], kernelsLA[0 * 72 + 2 * 9 + 1], kernelsLA[1 * 72 + 2 * 9 + 1], kernelsLA[2 * 72 + 2 * 9 + 1], kernelsLA[3 * 72 + 2 * 9 + 1], kernelsLA[0 * 72 + 3 * 9 + 1], kernelsLA[1 * 72 + 3 * 9 + 1], kernelsLA[2 * 72 + 3 * 9 + 1], kernelsLA[3 * 72 + 3 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 2], kernelsLA[1 * 72 + 0 * 9 + 2], kernelsLA[2 * 72 + 0 * 9 + 2], kernelsLA[3 * 72 + 0 * 9 + 2], kernelsLA[0 * 72 + 1 * 9 + 2], kernelsLA[1 * 72 + 1 * 9 + 2], kernelsLA[2 * 72 + 1 * 9 + 2], kernelsLA[3 * 72 + 1 * 9 + 2], kernelsLA[0 * 72 + 2 * 9 + 2], kernelsLA[1 * 72 + 2 * 9 + 2], kernelsLA[2 * 72 + 2 * 9 + 2], kernelsLA[3 * 72 + 2 * 9 + 2], kernelsLA[0 * 72 + 3 * 9 + 2], kernelsLA[1 * 72 + 3 * 9 + 2], kernelsLA[2 * 72 + 3 * 9 + 2], kernelsLA[3 * 72 + 3 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 3], kernelsLA[1 * 72 + 0 * 9 + 3], kernelsLA[2 * 72 + 0 * 9 + 3], kernelsLA[3 * 72 + 0 * 9 + 3], kernelsLA[0 * 72 + 1 * 9 + 3], kernelsLA[1 * 72 + 1 * 9 + 3], kernelsLA[2 * 72 + 1 * 9 + 3], kernelsLA[3 * 72 + 1 * 9 + 3], kernelsLA[0 * 72 + 2 * 9 + 3], kernelsLA[1 * 72 + 2 * 9 + 3], kernelsLA[2 * 72 + 2 * 9 + 3], kernelsLA[3 * 72 + 2 * 9 + 3], kernelsLA[0 * 72 + 3 * 9 + 3], kernelsLA[1 * 72 + 3 * 9 + 3], kernelsLA[2 * 72 + 3 * 9 + 3], kernelsLA[3 * 72 + 3 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 4], kernelsLA[1 * 72 + 0 * 9 + 4], kernelsLA[2 * 72 + 0 * 9 + 4], kernelsLA[3 * 72 + 0 * 9 + 4], kernelsLA[0 * 72 + 1 * 9 + 4], kernelsLA[1 * 72 + 1 * 9 + 4], kernelsLA[2 * 72 + 1 * 9 + 4], kernelsLA[3 * 72 + 1 * 9 + 4], kernelsLA[0 * 72 + 2 * 9 + 4], kernelsLA[1 * 72 + 2 * 9 + 4], kernelsLA[2 * 72 + 2 * 9 + 4], kernelsLA[3 * 72 + 2 * 9 + 4], kernelsLA[0 * 72 + 3 * 9 + 4], kernelsLA[1 * 72 + 3 * 9 + 4], kernelsLA[2 * 72 + 3 * 9 + 4], kernelsLA[3 * 72 + 3 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 5], kernelsLA[1 * 72 + 0 * 9 + 5], kernelsLA[2 * 72 + 0 * 9 + 5], kernelsLA[3 * 72 + 0 * 9 + 5], kernelsLA[0 * 72 + 1 * 9 + 5], kernelsLA[1 * 72 + 1 * 9 + 5], kernelsLA[2 * 72 + 1 * 9 + 5], kernelsLA[3 * 72 + 1 * 9 + 5], kernelsLA[0 * 72 + 2 * 9 + 5], kernelsLA[1 * 72 + 2 * 9 + 5], kernelsLA[2 * 72 + 2 * 9 + 5], kernelsLA[3 * 72 + 2 * 9 + 5], kernelsLA[0 * 72 + 3 * 9 + 5], kernelsLA[1 * 72 + 3 * 9 + 5], kernelsLA[2 * 72 + 3 * 9 + 5], kernelsLA[3 * 72 + 3 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 6], kernelsLA[1 * 72 + 0 * 9 + 6], kernelsLA[2 * 72 + 0 * 9 + 6], kernelsLA[3 * 72 + 0 * 9 + 6], kernelsLA[0 * 72 + 1 * 9 + 6], kernelsLA[1 * 72 + 1 * 9 + 6], kernelsLA[2 * 72 + 1 * 9 + 6], kernelsLA[3 * 72 + 1 * 9 + 6], kernelsLA[0 * 72 + 2 * 9 + 6], kernelsLA[1 * 72 + 2 * 9 + 6], kernelsLA[2 * 72 + 2 * 9 + 6], kernelsLA[3 * 72 + 2 * 9 + 6], kernelsLA[0 * 72 + 3 * 9 + 6], kernelsLA[1 * 72 + 3 * 9 + 6], kernelsLA[2 * 72 + 3 * 9 + 6], kernelsLA[3 * 72 + 3 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 7], kernelsLA[1 * 72 + 0 * 9 + 7], kernelsLA[2 * 72 + 0 * 9 + 7], kernelsLA[3 * 72 + 0 * 9 + 7], kernelsLA[0 * 72 + 1 * 9 + 7], kernelsLA[1 * 72 + 1 * 9 + 7], kernelsLA[2 * 72 + 1 * 9 + 7], kernelsLA[3 * 72 + 1 * 9 + 7], kernelsLA[0 * 72 + 2 * 9 + 7], kernelsLA[1 * 72 + 2 * 9 + 7], kernelsLA[2 * 72 + 2 * 9 + 7], kernelsLA[3 * 72 + 2 * 9 + 7], kernelsLA[0 * 72 + 3 * 9 + 7], kernelsLA[1 * 72 + 3 * 9 + 7], kernelsLA[2 * 72 + 3 * 9 + 7], kernelsLA[3 * 72 + 3 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 8], kernelsLA[1 * 72 + 0 * 9 + 8], kernelsLA[2 * 72 + 0 * 9 + 8], kernelsLA[3 * 72 + 0 * 9 + 8], kernelsLA[0 * 72 + 1 * 9 + 8], kernelsLA[1 * 72 + 1 * 9 + 8], kernelsLA[2 * 72 + 1 * 9 + 8], kernelsLA[3 * 72 + 1 * 9 + 8], kernelsLA[0 * 72 + 2 * 9 + 8], kernelsLA[1 * 72 + 2 * 9 + 8], kernelsLA[2 * 72 + 2 * 9 + 8], kernelsLA[3 * 72 + 2 * 9 + 8], kernelsLA[0 * 72 + 3 * 9 + 8], kernelsLA[1 * 72 + 3 * 9 + 8], kernelsLA[2 * 72 + 3 * 9 + 8], kernelsLA[3 * 72 + 3 * 9 + 8]), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 0], kernelsLA[1 * 72 + 4 * 9 + 0], kernelsLA[2 * 72 + 4 * 9 + 0], kernelsLA[3 * 72 + 4 * 9 + 0], kernelsLA[0 * 72 + 5 * 9 + 0], kernelsLA[1 * 72 + 5 * 9 + 0], kernelsLA[2 * 72 + 5 * 9 + 0], kernelsLA[3 * 72 + 5 * 9 + 0], kernelsLA[0 * 72 + 6 * 9 + 0], kernelsLA[1 * 72 + 6 * 9 + 0], kernelsLA[2 * 72 + 6 * 9 + 0], kernelsLA[3 * 72 + 6 * 9 + 0], kernelsLA[0 * 72 + 7 * 9 + 0], kernelsLA[1 * 72 + 7 * 9 + 0], kernelsLA[2 * 72 + 7 * 9 + 0], kernelsLA[3 * 72 + 7 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 1], kernelsLA[1 * 72 + 4 * 9 + 1], kernelsLA[2 * 72 + 4 * 9 + 1], kernelsLA[3 * 72 + 4 * 9 + 1], kernelsLA[0 * 72 + 5 * 9 + 1], kernelsLA[1 * 72 + 5 * 9 + 1], kernelsLA[2 * 72 + 5 * 9 + 1], kernelsLA[3 * 72 + 5 * 9 + 1], kernelsLA[0 * 72 + 6 * 9 + 1], kernelsLA[1 * 72 + 6 * 9 + 1], kernelsLA[2 * 72 + 6 * 9 + 1], kernelsLA[3 * 72 + 6 * 9 + 1], kernelsLA[0 * 72 + 7 * 9 + 1], kernelsLA[1 * 72 + 7 * 9 + 1], kernelsLA[2 * 72 + 7 * 9 + 1], kernelsLA[3 * 72 + 7 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 2], kernelsLA[1 * 72 + 4 * 9 + 2], kernelsLA[2 * 72 + 4 * 9 + 2], kernelsLA[3 * 72 + 4 * 9 + 2], kernelsLA[0 * 72 + 5 * 9 + 2], kernelsLA[1 * 72 + 5 * 9 + 2], kernelsLA[2 * 72 + 5 * 9 + 2], kernelsLA[3 * 72 + 5 * 9 + 2], kernelsLA[0 * 72 + 6 * 9 + 2], kernelsLA[1 * 72 + 6 * 9 + 2], kernelsLA[2 * 72 + 6 * 9 + 2], kernelsLA[3 * 72 + 6 * 9 + 2], kernelsLA[0 * 72 + 7 * 9 + 2], kernelsLA[1 * 72 + 7 * 9 + 2], kernelsLA[2 * 72 + 7 * 9 + 2], kernelsLA[3 * 72 + 7 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 3], kernelsLA[1 * 72 + 4 * 9 + 3], kernelsLA[2 * 72 + 4 * 9 + 3], kernelsLA[3 * 72 + 4 * 9 + 3], kernelsLA[0 * 72 + 5 * 9 + 3], kernelsLA[1 * 72 + 5 * 9 + 3], kernelsLA[2 * 72 + 5 * 9 + 3], kernelsLA[3 * 72 + 5 * 9 + 3], kernelsLA[0 * 72 + 6 * 9 + 3], kernelsLA[1 * 72 + 6 * 9 + 3], kernelsLA[2 * 72 + 6 * 9 + 3], kernelsLA[3 * 72 + 6 * 9 + 3], kernelsLA[0 * 72 + 7 * 9 + 3], kernelsLA[1 * 72 + 7 * 9 + 3], kernelsLA[2 * 72 + 7 * 9 + 3], kernelsLA[3 * 72 + 7 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 4], kernelsLA[1 * 72 + 4 * 9 + 4], kernelsLA[2 * 72 + 4 * 9 + 4], kernelsLA[3 * 72 + 4 * 9 + 4], kernelsLA[0 * 72 + 5 * 9 + 4], kernelsLA[1 * 72 + 5 * 9 + 4], kernelsLA[2 * 72 + 5 * 9 + 4], kernelsLA[3 * 72 + 5 * 9 + 4], kernelsLA[0 * 72 + 6 * 9 + 4], kernelsLA[1 * 72 + 6 * 9 + 4], kernelsLA[2 * 72 + 6 * 9 + 4], kernelsLA[3 * 72 + 6 * 9 + 4], kernelsLA[0 * 72 + 7 * 9 + 4], kernelsLA[1 * 72 + 7 * 9 + 4], kernelsLA[2 * 72 + 7 * 9 + 4], kernelsLA[3 * 72 + 7 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 5], kernelsLA[1 * 72 + 4 * 9 + 5], kernelsLA[2 * 72 + 4 * 9 + 5], kernelsLA[3 * 72 + 4 * 9 + 5], kernelsLA[0 * 72 + 5 * 9 + 5], kernelsLA[1 * 72 + 5 * 9 + 5], kernelsLA[2 * 72 + 5 * 9 + 5], kernelsLA[3 * 72 + 5 * 9 + 5], kernelsLA[0 * 72 + 6 * 9 + 5], kernelsLA[1 * 72 + 6 * 9 + 5], kernelsLA[2 * 72 + 6 * 9 + 5], kernelsLA[3 * 72 + 6 * 9 + 5], kernelsLA[0 * 72 + 7 * 9 + 5], kernelsLA[1 * 72 + 7 * 9 + 5], kernelsLA[2 * 72 + 7 * 9 + 5], kernelsLA[3 * 72 + 7 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 6], kernelsLA[1 * 72 + 4 * 9 + 6], kernelsLA[2 * 72 + 4 * 9 + 6], kernelsLA[3 * 72 + 4 * 9 + 6], kernelsLA[0 * 72 + 5 * 9 + 6], kernelsLA[1 * 72 + 5 * 9 + 6], kernelsLA[2 * 72 + 5 * 9 + 6], kernelsLA[3 * 72 + 5 * 9 + 6], kernelsLA[0 * 72 + 6 * 9 + 6], kernelsLA[1 * 72 + 6 * 9 + 6], kernelsLA[2 * 72 + 6 * 9 + 6], kernelsLA[3 * 72 + 6 * 9 + 6], kernelsLA[0 * 72 + 7 * 9 + 6], kernelsLA[1 * 72 + 7 * 9 + 6], kernelsLA[2 * 72 + 7 * 9 + 6], kernelsLA[3 * 72 + 7 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 7], kernelsLA[1 * 72 + 4 * 9 + 7], kernelsLA[2 * 72 + 4 * 9 + 7], kernelsLA[3 * 72 + 4 * 9 + 7], kernelsLA[0 * 72 + 5 * 9 + 7], kernelsLA[1 * 72 + 5 * 9 + 7], kernelsLA[2 * 72 + 5 * 9 + 7], kernelsLA[3 * 72 + 5 * 9 + 7], kernelsLA[0 * 72 + 6 * 9 + 7], kernelsLA[1 * 72 + 6 * 9 + 7], kernelsLA[2 * 72 + 6 * 9 + 7], kernelsLA[3 * 72 + 6 * 9 + 7], kernelsLA[0 * 72 + 7 * 9 + 7], kernelsLA[1 * 72 + 7 * 9 + 7], kernelsLA[2 * 72 + 7 * 9 + 7], kernelsLA[3 * 72 + 7 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 8], kernelsLA[1 * 72 + 4 * 9 + 8], kernelsLA[2 * 72 + 4 * 9 + 8], kernelsLA[3 * 72 + 4 * 9 + 8], kernelsLA[0 * 72 + 5 * 9 + 8], kernelsLA[1 * 72 + 5 * 9 + 8], kernelsLA[2 * 72 + 5 * 9 + 8], kernelsLA[3 * 72 + 5 * 9 + 8], kernelsLA[0 * 72 + 6 * 9 + 8], kernelsLA[1 * 72 + 6 * 9 + 8], kernelsLA[2 * 72 + 6 * 9 + 8], kernelsLA[3 * 72 + 6 * 9 + 8], kernelsLA[0 * 72 + 7 * 9 + 8], kernelsLA[1 * 72 + 7 * 9 + 8], kernelsLA[2 * 72 + 7 * 9 + 8], kernelsLA[3 * 72 + 7 * 9 + 8]), target1);\n\ttarget1 = RELU(target1);\n\n\tMF4 target2 = biasLB;\n\ttarget2 = MulAdd(tl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 0], kernelsLB[1 * 72 + 0 * 9 + 0], kernelsLB[2 * 72 + 0 * 9 + 0], kernelsLB[3 * 72 + 0 * 9 + 0], kernelsLB[0 * 72 + 1 * 9 + 0], kernelsLB[1 * 72 + 1 * 9 + 0], kernelsLB[2 * 72 + 1 * 9 + 0], kernelsLB[3 * 72 + 1 * 9 + 0], kernelsLB[0 * 72 + 2 * 9 + 0], kernelsLB[1 * 72 + 2 * 9 + 0], kernelsLB[2 * 72 + 2 * 9 + 0], kernelsLB[3 * 72 + 2 * 9 + 0], kernelsLB[0 * 72 + 3 * 9 + 0], kernelsLB[1 * 72 + 3 * 9 + 0], kernelsLB[2 * 72 + 3 * 9 + 0], kernelsLB[3 * 72 + 3 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 1], kernelsLB[1 * 72 + 0 * 9 + 1], kernelsLB[2 * 72 + 0 * 9 + 1], kernelsLB[3 * 72 + 0 * 9 + 1], kernelsLB[0 * 72 + 1 * 9 + 1], kernelsLB[1 * 72 + 1 * 9 + 1], kernelsLB[2 * 72 + 1 * 9 + 1], kernelsLB[3 * 72 + 1 * 9 + 1], kernelsLB[0 * 72 + 2 * 9 + 1], kernelsLB[1 * 72 + 2 * 9 + 1], kernelsLB[2 * 72 + 2 * 9 + 1], kernelsLB[3 * 72 + 2 * 9 + 1], kernelsLB[0 * 72 + 3 * 9 + 1], kernelsLB[1 * 72 + 3 * 9 + 1], kernelsLB[2 * 72 + 3 * 9 + 1], kernelsLB[3 * 72 + 3 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 2], kernelsLB[1 * 72 + 0 * 9 + 2], kernelsLB[2 * 72 + 0 * 9 + 2], kernelsLB[3 * 72 + 0 * 9 + 2], kernelsLB[0 * 72 + 1 * 9 + 2], kernelsLB[1 * 72 + 1 * 9 + 2], kernelsLB[2 * 72 + 1 * 9 + 2], kernelsLB[3 * 72 + 1 * 9 + 2], kernelsLB[0 * 72 + 2 * 9 + 2], kernelsLB[1 * 72 + 2 * 9 + 2], kernelsLB[2 * 72 + 2 * 9 + 2], kernelsLB[3 * 72 + 2 * 9 + 2], kernelsLB[0 * 72 + 3 * 9 + 2], kernelsLB[1 * 72 + 3 * 9 + 2], kernelsLB[2 * 72 + 3 * 9 + 2], kernelsLB[3 * 72 + 3 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 3], kernelsLB[1 * 72 + 0 * 9 + 3], kernelsLB[2 * 72 + 0 * 9 + 3], kernelsLB[3 * 72 + 0 * 9 + 3], kernelsLB[0 * 72 + 1 * 9 + 3], kernelsLB[1 * 72 + 1 * 9 + 3], kernelsLB[2 * 72 + 1 * 9 + 3], kernelsLB[3 * 72 + 1 * 9 + 3], kernelsLB[0 * 72 + 2 * 9 + 3], kernelsLB[1 * 72 + 2 * 9 + 3], kernelsLB[2 * 72 + 2 * 9 + 3], kernelsLB[3 * 72 + 2 * 9 + 3], kernelsLB[0 * 72 + 3 * 9 + 3], kernelsLB[1 * 72 + 3 * 9 + 3], kernelsLB[2 * 72 + 3 * 9 + 3], kernelsLB[3 * 72 + 3 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 4], kernelsLB[1 * 72 + 0 * 9 + 4], kernelsLB[2 * 72 + 0 * 9 + 4], kernelsLB[3 * 72 + 0 * 9 + 4], kernelsLB[0 * 72 + 1 * 9 + 4], kernelsLB[1 * 72 + 1 * 9 + 4], kernelsLB[2 * 72 + 1 * 9 + 4], kernelsLB[3 * 72 + 1 * 9 + 4], kernelsLB[0 * 72 + 2 * 9 + 4], kernelsLB[1 * 72 + 2 * 9 + 4], kernelsLB[2 * 72 + 2 * 9 + 4], kernelsLB[3 * 72 + 2 * 9 + 4], kernelsLB[0 * 72 + 3 * 9 + 4], kernelsLB[1 * 72 + 3 * 9 + 4], kernelsLB[2 * 72 + 3 * 9 + 4], kernelsLB[3 * 72 + 3 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 5], kernelsLB[1 * 72 + 0 * 9 + 5], kernelsLB[2 * 72 + 0 * 9 + 5], kernelsLB[3 * 72 + 0 * 9 + 5], kernelsLB[0 * 72 + 1 * 9 + 5], kernelsLB[1 * 72 + 1 * 9 + 5], kernelsLB[2 * 72 + 1 * 9 + 5], kernelsLB[3 * 72 + 1 * 9 + 5], kernelsLB[0 * 72 + 2 * 9 + 5], kernelsLB[1 * 72 + 2 * 9 + 5], kernelsLB[2 * 72 + 2 * 9 + 5], kernelsLB[3 * 72 + 2 * 9 + 5], kernelsLB[0 * 72 + 3 * 9 + 5], kernelsLB[1 * 72 + 3 * 9 + 5], kernelsLB[2 * 72 + 3 * 9 + 5], kernelsLB[3 * 72 + 3 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 6], kernelsLB[1 * 72 + 0 * 9 + 6], kernelsLB[2 * 72 + 0 * 9 + 6], kernelsLB[3 * 72 + 0 * 9 + 6], kernelsLB[0 * 72 + 1 * 9 + 6], kernelsLB[1 * 72 + 1 * 9 + 6], kernelsLB[2 * 72 + 1 * 9 + 6], kernelsLB[3 * 72 + 1 * 9 + 6], kernelsLB[0 * 72 + 2 * 9 + 6], kernelsLB[1 * 72 + 2 * 9 + 6], kernelsLB[2 * 72 + 2 * 9 + 6], kernelsLB[3 * 72 + 2 * 9 + 6], kernelsLB[0 * 72 + 3 * 9 + 6], kernelsLB[1 * 72 + 3 * 9 + 6], kernelsLB[2 * 72 + 3 * 9 + 6], kernelsLB[3 * 72 + 3 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 7], kernelsLB[1 * 72 + 0 * 9 + 7], kernelsLB[2 * 72 + 0 * 9 + 7], kernelsLB[3 * 72 + 0 * 9 + 7], kernelsLB[0 * 72 + 1 * 9 + 7], kernelsLB[1 * 72 + 1 * 9 + 7], kernelsLB[2 * 72 + 1 * 9 + 7], kernelsLB[3 * 72 + 1 * 9 + 7], kernelsLB[0 * 72 + 2 * 9 + 7], kernelsLB[1 * 72 + 2 * 9 + 7], kernelsLB[2 * 72 + 2 * 9 + 7], kernelsLB[3 * 72 + 2 * 9 + 7], kernelsLB[0 * 72 + 3 * 9 + 7], kernelsLB[1 * 72 + 3 * 9 + 7], kernelsLB[2 * 72 + 3 * 9 + 7], kernelsLB[3 * 72 + 3 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 8], kernelsLB[1 * 72 + 0 * 9 + 8], kernelsLB[2 * 72 + 0 * 9 + 8], kernelsLB[3 * 72 + 0 * 9 + 8], kernelsLB[0 * 72 + 1 * 9 + 8], kernelsLB[1 * 72 + 1 * 9 + 8], kernelsLB[2 * 72 + 1 * 9 + 8], kernelsLB[3 * 72 + 1 * 9 + 8], kernelsLB[0 * 72 + 2 * 9 + 8], kernelsLB[1 * 72 + 2 * 9 + 8], kernelsLB[2 * 72 + 2 * 9 + 8], kernelsLB[3 * 72 + 2 * 9 + 8], kernelsLB[0 * 72 + 3 * 9 + 8], kernelsLB[1 * 72 + 3 * 9 + 8], kernelsLB[2 * 72 + 3 * 9 + 8], kernelsLB[3 * 72 + 3 * 9 + 8]), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 0], kernelsLB[1 * 72 + 4 * 9 + 0], kernelsLB[2 * 72 + 4 * 9 + 0], kernelsLB[3 * 72 + 4 * 9 + 0], kernelsLB[0 * 72 + 5 * 9 + 0], kernelsLB[1 * 72 + 5 * 9 + 0], kernelsLB[2 * 72 + 5 * 9 + 0], kernelsLB[3 * 72 + 5 * 9 + 0], kernelsLB[0 * 72 + 6 * 9 + 0], kernelsLB[1 * 72 + 6 * 9 + 0], kernelsLB[2 * 72 + 6 * 9 + 0], kernelsLB[3 * 72 + 6 * 9 + 0], kernelsLB[0 * 72 + 7 * 9 + 0], kernelsLB[1 * 72 + 7 * 9 + 0], kernelsLB[2 * 72 + 7 * 9 + 0], kernelsLB[3 * 72 + 7 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 1], kernelsLB[1 * 72 + 4 * 9 + 1], kernelsLB[2 * 72 + 4 * 9 + 1], kernelsLB[3 * 72 + 4 * 9 + 1], kernelsLB[0 * 72 + 5 * 9 + 1], kernelsLB[1 * 72 + 5 * 9 + 1], kernelsLB[2 * 72 + 5 * 9 + 1], kernelsLB[3 * 72 + 5 * 9 + 1], kernelsLB[0 * 72 + 6 * 9 + 1], kernelsLB[1 * 72 + 6 * 9 + 1], kernelsLB[2 * 72 + 6 * 9 + 1], kernelsLB[3 * 72 + 6 * 9 + 1], kernelsLB[0 * 72 + 7 * 9 + 1], kernelsLB[1 * 72 + 7 * 9 + 1], kernelsLB[2 * 72 + 7 * 9 + 1], kernelsLB[3 * 72 + 7 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 2], kernelsLB[1 * 72 + 4 * 9 + 2], kernelsLB[2 * 72 + 4 * 9 + 2], kernelsLB[3 * 72 + 4 * 9 + 2], kernelsLB[0 * 72 + 5 * 9 + 2], kernelsLB[1 * 72 + 5 * 9 + 2], kernelsLB[2 * 72 + 5 * 9 + 2], kernelsLB[3 * 72 + 5 * 9 + 2], kernelsLB[0 * 72 + 6 * 9 + 2], kernelsLB[1 * 72 + 6 * 9 + 2], kernelsLB[2 * 72 + 6 * 9 + 2], kernelsLB[3 * 72 + 6 * 9 + 2], kernelsLB[0 * 72 + 7 * 9 + 2], kernelsLB[1 * 72 + 7 * 9 + 2], kernelsLB[2 * 72 + 7 * 9 + 2], kernelsLB[3 * 72 + 7 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 3], kernelsLB[1 * 72 + 4 * 9 + 3], kernelsLB[2 * 72 + 4 * 9 + 3], kernelsLB[3 * 72 + 4 * 9 + 3], kernelsLB[0 * 72 + 5 * 9 + 3], kernelsLB[1 * 72 + 5 * 9 + 3], kernelsLB[2 * 72 + 5 * 9 + 3], kernelsLB[3 * 72 + 5 * 9 + 3], kernelsLB[0 * 72 + 6 * 9 + 3], kernelsLB[1 * 72 + 6 * 9 + 3], kernelsLB[2 * 72 + 6 * 9 + 3], kernelsLB[3 * 72 + 6 * 9 + 3], kernelsLB[0 * 72 + 7 * 9 + 3], kernelsLB[1 * 72 + 7 * 9 + 3], kernelsLB[2 * 72 + 7 * 9 + 3], kernelsLB[3 * 72 + 7 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 4], kernelsLB[1 * 72 + 4 * 9 + 4], kernelsLB[2 * 72 + 4 * 9 + 4], kernelsLB[3 * 72 + 4 * 9 + 4], kernelsLB[0 * 72 + 5 * 9 + 4], kernelsLB[1 * 72 + 5 * 9 + 4], kernelsLB[2 * 72 + 5 * 9 + 4], kernelsLB[3 * 72 + 5 * 9 + 4], kernelsLB[0 * 72 + 6 * 9 + 4], kernelsLB[1 * 72 + 6 * 9 + 4], kernelsLB[2 * 72 + 6 * 9 + 4], kernelsLB[3 * 72 + 6 * 9 + 4], kernelsLB[0 * 72 + 7 * 9 + 4], kernelsLB[1 * 72 + 7 * 9 + 4], kernelsLB[2 * 72 + 7 * 9 + 4], kernelsLB[3 * 72 + 7 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 5], kernelsLB[1 * 72 + 4 * 9 + 5], kernelsLB[2 * 72 + 4 * 9 + 5], kernelsLB[3 * 72 + 4 * 9 + 5], kernelsLB[0 * 72 + 5 * 9 + 5], kernelsLB[1 * 72 + 5 * 9 + 5], kernelsLB[2 * 72 + 5 * 9 + 5], kernelsLB[3 * 72 + 5 * 9 + 5], kernelsLB[0 * 72 + 6 * 9 + 5], kernelsLB[1 * 72 + 6 * 9 + 5], kernelsLB[2 * 72 + 6 * 9 + 5], kernelsLB[3 * 72 + 6 * 9 + 5], kernelsLB[0 * 72 + 7 * 9 + 5], kernelsLB[1 * 72 + 7 * 9 + 5], kernelsLB[2 * 72 + 7 * 9 + 5], kernelsLB[3 * 72 + 7 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 6], kernelsLB[1 * 72 + 4 * 9 + 6], kernelsLB[2 * 72 + 4 * 9 + 6], kernelsLB[3 * 72 + 4 * 9 + 6], kernelsLB[0 * 72 + 5 * 9 + 6], kernelsLB[1 * 72 + 5 * 9 + 6], kernelsLB[2 * 72 + 5 * 9 + 6], kernelsLB[3 * 72 + 5 * 9 + 6], kernelsLB[0 * 72 + 6 * 9 + 6], kernelsLB[1 * 72 + 6 * 9 + 6], kernelsLB[2 * 72 + 6 * 9 + 6], kernelsLB[3 * 72 + 6 * 9 + 6], kernelsLB[0 * 72 + 7 * 9 + 6], kernelsLB[1 * 72 + 7 * 9 + 6], kernelsLB[2 * 72 + 7 * 9 + 6], kernelsLB[3 * 72 + 7 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 7], kernelsLB[1 * 72 + 4 * 9 + 7], kernelsLB[2 * 72 + 4 * 9 + 7], kernelsLB[3 * 72 + 4 * 9 + 7], kernelsLB[0 * 72 + 5 * 9 + 7], kernelsLB[1 * 72 + 5 * 9 + 7], kernelsLB[2 * 72 + 5 * 9 + 7], kernelsLB[3 * 72 + 5 * 9 + 7], kernelsLB[0 * 72 + 6 * 9 + 7], kernelsLB[1 * 72 + 6 * 9 + 7], kernelsLB[2 * 72 + 6 * 9 + 7], kernelsLB[3 * 72 + 6 * 9 + 7], kernelsLB[0 * 72 + 7 * 9 + 7], kernelsLB[1 * 72 + 7 * 9 + 7], kernelsLB[2 * 72 + 7 * 9 + 7], kernelsLB[3 * 72 + 7 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 8], kernelsLB[1 * 72 + 4 * 9 + 8], kernelsLB[2 * 72 + 4 * 9 + 8], kernelsLB[3 * 72 + 4 * 9 + 8], kernelsLB[0 * 72 + 5 * 9 + 8], kernelsLB[1 * 72 + 5 * 9 + 8], kernelsLB[2 * 72 + 5 * 9 + 8], kernelsLB[3 * 72 + 5 * 9 + 8], kernelsLB[0 * 72 + 6 * 9 + 8], kernelsLB[1 * 72 + 6 * 9 + 8], kernelsLB[2 * 72 + 6 * 9 + 8], kernelsLB[3 * 72 + 6 * 9 + 8], kernelsLB[0 * 72 + 7 * 9 + 8], kernelsLB[1 * 72 + 7 * 9 + 8], kernelsLB[2 * 72 + 7 * 9 + 8], kernelsLB[3 * 72 + 7 * 9 + 8]), target2);\n\ttarget2 = RELU(target2);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 3\n//!DESC L3\n//!IN tex3, tex4\n//!OUT tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nconst static MF kernelsLA[9 * 8 * 4] = {\n\t-4.2606e-02, -8.9001e-02, -6.4006e-02,\n\t 1.1132e-01,  7.6609e-02,  8.6417e-02,\n\t 7.6477e-03, -1.6416e-02, -8.2094e-02,\n\t 1.0779e-01,  2.1837e-01,  1.8094e-01,\n\t-2.6306e-02, -1.2452e-01,  1.2662e-02,\n\t 3.1633e-02,  1.8717e-02,  3.1043e-02,\n\t 4.0927e-02,  5.0311e-02,  1.1648e-01,\n\t 2.2429e-01,  2.0757e-01,  4.3662e-03,\n\t 3.6341e-02, -4.7637e-02,  8.3645e-02,\n\t-8.9260e-03,  1.8507e-02,  7.9069e-02,\n\t-1.9411e-01, -8.6847e-02, -3.6639e-03,\n\t 4.0328e-02, -3.6821e-02, -8.5387e-02,\n\t 5.8173e-02,  5.9991e-02, -3.1398e-02,\n\t 1.5818e-01,  3.0861e-01, -2.3818e-02,\n\t 1.2176e-01,  6.7520e-02,  8.9401e-02,\n\t-2.8859e-02, -1.2237e-01, -1.0625e-01,\n\t 3.1675e-02,  1.4172e-01, -1.4373e-01,\n\t 1.4653e-02,  1.0205e-01,  6.2557e-02,\n\t-8.7292e-02, -2.1255e-02,  3.6830e-02,\n\t-5.4417e-02,  3.0501e-01,  1.6897e-01,\n\t-2.2187e-02, -8.9609e-02, -2.2830e-02,\n\t 4.9846e-02,  3.3395e-01, -3.1561e-02,\n\t-1.3191e-02,  4.2663e-01, -6.9727e-02,\n\t 1.4570e-02, -4.0002e-02,  5.6394e-02,\n\t-8.2547e-02,  1.9249e-01,  1.5591e-01,\n\t 1.4536e-01, -1.0409e-01,  1.2382e-01,\n\t 1.8189e-01,  9.2917e-02, -1.4394e-01,\n\t-5.6260e-02, -2.7043e-01,  1.5392e-02,\n\t-1.4305e-02,  1.1131e-01, -8.5913e-02,\n\t 7.7914e-02, -6.5484e-03, -1.8375e-01,\n\t-1.4059e-01, -5.7339e-01, -3.9073e-02,\n\t-1.1701e-01, -3.1806e-02,  7.7726e-02,\n\t 2.1688e-02,  9.9297e-02,  3.8224e-02,\n\t 7.9884e-02,  5.2461e-02,  1.0318e-01,\n\t 4.0054e-02,  1.4695e-01,  1.2577e-01,\n\t-1.8790e-03, -4.9421e-02,  2.3235e-02,\n\t-8.9820e-02, -1.6994e-01, -1.5986e-01,\n\t 2.3436e-01, -1.5346e-01,  1.5014e-02,\n\t-3.9139e-02, -7.9388e-02, -4.9057e-02,\n\t-1.1193e-01, -2.5705e-01,  1.1995e-01,\n\t 5.7929e-02,  2.4988e-01, -4.9406e-03,\n\t-3.9363e-02, -1.1691e-02, -1.2236e-03,\n\t-2.0521e-01,  2.1901e-01,  1.5957e-01,\n\t 2.1062e-01, -1.4157e-01, -3.4340e-01,\n\t 3.8520e-02, -2.0820e-01,  2.4570e-03,\n\t 1.7211e-01,  2.0214e-01,  1.3821e-01,\n\t-7.1520e-02,  1.4847e-01, -1.3820e-01,\n\t-2.4712e-02, -1.5925e-02,  1.7403e-02,\n\t-3.7515e-02,  3.0461e-02, -2.7543e-02,\n\t 8.6148e-02, -6.1486e-02,  1.2610e-02,\n\t 2.9748e-03,  1.1778e-01,  2.9032e-02,\n\t-2.1706e-02, -2.2406e-02,  2.6769e-02,\n\t-3.6965e-02,  2.2180e-01, -4.0929e-02,\n\t-3.2629e-03,  8.3419e-02, -1.4587e-01,\n\t-1.3909e-02, -2.0166e-02, -1.0029e-01,\n\t 7.6360e-02,  8.0819e-02, -1.0933e-01,\n\t-5.8919e-02,  2.4745e-02,  3.7375e-02,\n\t-1.1333e-02,  1.4747e-02, -7.8958e-02,\n\t-3.1535e-02,  1.7403e-01,  1.3946e-02,\n\t-3.2038e-02,  5.1151e-02, -6.1063e-02,\n\t-8.6472e-03, -6.9689e-02,  5.6846e-03,\n\t 5.7914e-02, -1.9818e-01, -7.5321e-02,\n\t 8.7453e-02,  7.8354e-02,  2.1997e-02,\n\t-4.7606e-02,  1.3915e-01,  1.1653e-01,\n\t 9.6050e-02,  4.0099e-01,  1.5631e-01,\n\t 3.1492e-02,  2.4797e-01,  6.8716e-02,\n\t-6.2664e-03,  9.1754e-02, -5.7244e-03,\n\t 1.3538e-01,  1.5366e-01,  9.4916e-02,\n\t-4.2115e-02, -3.6585e-01, -1.4559e-01,\n\t 9.1550e-02, -5.4007e-02,  6.7482e-02,\n\t-1.8687e-01,  3.2120e-01,  5.1031e-03,\n\t-6.1205e-02, -5.1780e-02,  1.6442e-02,\n\t-1.2316e-02, -1.3907e-01, -1.4446e-01,\n\t-2.7899e-01, -8.5969e-02, -1.0870e-01,\n\t-2.6157e-01,  8.9532e-02,  3.0958e-02,\n\t-1.5393e-01, -4.2781e-02, -2.0951e-01,\n\t 2.0328e-01,  4.5317e-01, -3.0467e-02,\n\t-6.1346e-02,  1.0381e-01, -1.3719e-01,\n\t-9.8572e-02, -1.4035e-01, -1.9431e-02,\n\t 2.5542e-02,  3.2609e-01,  1.7983e-03,\n\t-1.0800e-01, -2.9022e-02,  6.2691e-03,\n\t 2.8937e-02, -1.3483e-01, -4.1655e-02,\n\t 2.0172e-01,  1.4283e-02,  9.6200e-02,\n\t 1.9027e-02,  3.1240e-01, -2.9553e-02,\n\t 6.2776e-02,  1.3845e-01,  4.5834e-02,\n\t-2.3854e-01, -4.0267e-02,  1.5634e-02,\n\t-1.9246e-01, -3.2332e-02,  3.2442e-03,\n\t-6.1880e-02, -8.8192e-02, -6.0172e-02,\n\t 2.5002e-01,  1.5148e-01,  6.4459e-02,\n\t-2.1022e-01, -8.3893e-02,  6.9554e-03,\n\t 7.0244e-02, -2.9551e-02,  1.6481e-02,\n\t-3.1036e-02, -2.0026e-01, -8.4748e-02,\n\t-1.3108e-01, -1.3784e-01,  9.4900e-02,\n\t-2.1256e-01, -4.1767e-02,  8.4665e-02,\n\t-4.0235e-01,  1.0604e-01, -3.1827e-02,\n\t-4.9825e-02, -9.1267e-04,  1.5527e-02\n};\n\nconst static MF4 biasLA = { -0.0239, -0.0385,  0.0026,  0.0288 };\n\nconst static MF kernelsLB[9 * 8 * 4] = {\n\t-6.5729e-03, -1.8932e-02, -3.4591e-02,\n\t 1.1066e-01,  9.3979e-02,  2.6059e-02,\n\t-1.2395e-01, -2.4768e-01, -1.6304e-01,\n\t 8.8329e-03, -2.1606e-02, -4.0878e-02,\n\t-1.5581e-02, -1.4829e-02, -1.5959e-02,\n\t-1.0463e-04, -4.2903e-03, -4.6657e-02,\n\t 2.2995e-02,  1.7917e-02, -9.1404e-02,\n\t-1.2326e-01,  1.4582e-01, -7.0959e-02,\n\t-1.8058e-02, -8.5228e-02,  4.2799e-02,\n\t-2.2829e-03,  8.6577e-02, -1.1909e-01,\n\t-1.8061e-01,  1.1166e-01, -8.2255e-02,\n\t-1.3190e-01,  7.7123e-02,  2.3224e-02,\n\t 1.8661e-02,  2.4461e-02,  3.6060e-02,\n\t-4.5224e-02, -1.7672e-01,  1.6080e-01,\n\t-4.2175e-01, -2.2557e-01, -1.0719e-01,\n\t-2.9506e-02,  9.5020e-02, -6.6465e-02,\n\t-7.2627e-02,  3.1236e-01,  5.5764e-02,\n\t-2.8789e-01, -1.8915e-01,  9.0825e-02,\n\t-5.8618e-02,  6.4082e-02,  4.8461e-03,\n\t-5.9405e-02,  3.2644e-01, -7.1278e-02,\n\t-1.8084e-01,  2.0858e-02, -9.3690e-03,\n\t-7.6565e-03, -9.6854e-02,  7.6121e-03,\n\t 1.4791e-01,  4.5612e-01,  1.9889e-02,\n\t-5.5498e-02, -1.1266e-01,  2.2790e-02,\n\t-3.8821e-02, -1.5780e-02,  1.2549e-02,\n\t-3.8232e-02, -2.8870e-01,  2.6216e-02,\n\t 1.0375e-01, -2.9621e-02,  1.8479e-03,\n\t 5.0207e-02,  1.5189e-01,  1.2533e-01,\n\t 1.8298e-01, -1.2870e-01,  3.0681e-01,\n\t-1.9571e-02, -8.6302e-02,  9.1121e-02,\n\t 1.0113e-01, -1.8362e-01,  3.2642e-02,\n\t 1.7034e-01, -3.1077e-01, -4.8737e-02,\n\t 5.9144e-02,  5.6052e-03,  3.2360e-02,\n\t-9.0123e-02,  7.7996e-02,  3.6297e-02,\n\t-3.4389e-01,  1.1841e-01, -2.0900e-02,\n\t 9.4930e-02, -9.1504e-02, -4.5308e-02,\n\t 3.7723e-03, -3.7580e-02, -6.6410e-02,\n\t 5.2501e-02, -1.2530e-01,  3.5944e-02,\n\t 3.8378e-02,  9.5188e-02,  2.1952e-03,\n\t-2.4333e-02,  2.7977e-01,  5.6961e-02,\n\t-3.0605e-03,  8.3684e-02,  4.4848e-03,\n\t-7.8935e-02, -1.9544e-01, -5.3311e-02,\n\t-2.6595e-02,  1.2278e-01, -3.1659e-02,\n\t-1.0103e-02,  4.7763e-01,  2.5359e-02,\n\t 8.1397e-02,  3.0548e-01,  9.7097e-02,\n\t 3.6232e-02, -1.1091e-01,  1.2841e-01,\n\t 1.9277e-01,  2.9322e-01, -1.6740e-01,\n\t 1.2107e-01, -6.2883e-02,  4.0603e-02,\n\t-1.5750e-01, -8.6183e-02, -1.4194e-01,\n\t 1.1932e-01, -3.9175e-01, -5.4495e-02,\n\t-1.4001e-02, -2.0594e-01, -8.2683e-02,\n\t 8.6156e-02,  2.1499e-02,  2.2080e-01,\n\t 5.5703e-02, -3.6307e-01,  8.3129e-02,\n\t 8.9280e-02, -3.5897e-02,  1.6106e-01,\n\t 9.1171e-02, -3.1102e-01,  1.2425e-01,\n\t 1.0278e-01, -3.1014e-01, -6.9138e-02,\n\t 8.0839e-02, -3.6183e-02,  1.0341e-01,\n\t-1.8334e-01, -5.3700e-02,  2.3336e-01,\n\t-1.4464e-01, -5.0320e-01, -2.9836e-02,\n\t-1.7225e-01, -3.9499e-01, -1.7321e-01,\n\t 1.7510e-01,  1.7897e-01, -2.6518e-01,\n\t 2.3638e-01,  5.0270e-01, -4.9731e-03,\n\t 2.2603e-01,  2.5317e-01,  2.4079e-01,\n\t-1.3159e-01,  1.5638e-01,  1.2480e-01,\n\t-6.2164e-02,  7.9458e-02, -9.4804e-02,\n\t 8.5690e-03,  7.4971e-03,  8.6630e-02,\n\t-1.3148e-02,  6.8660e-02, -7.4230e-03,\n\t 2.9702e-02,  1.2036e-01,  9.5504e-02,\n\t-3.2694e-03,  8.6722e-02, -6.2433e-02,\n\t 3.2527e-01,  3.2087e-01, -9.4429e-05,\n\t 1.3556e-01, -7.0413e-02,  2.9383e-02,\n\t 2.0617e-02,  3.3218e-02,  4.4898e-02,\n\t-4.8260e-01, -2.1329e-01,  1.5890e-02,\n\t-2.6600e-01, -8.8519e-02, -4.3800e-02,\n\t-1.7299e-01, -2.0757e-01, -2.6658e-01,\n\t 6.9707e-02, -4.4700e-02,  6.5570e-02,\n\t 2.3992e-01,  1.5078e-01,  2.8713e-02,\n\t-9.1197e-02,  1.9765e-02, -1.8751e-02,\n\t-9.9277e-02, -3.1437e-01,  4.0730e-02,\n\t 2.4208e-02, -8.8322e-02, -1.6245e-01,\n\t 1.3037e-02, -3.4708e-02, -4.4285e-02,\n\t-1.3592e-01, -1.3575e-01, -7.4546e-02,\n\t 1.4670e-01, -1.3366e-01,  2.1553e-03,\n\t 8.1235e-03, -1.2068e-01, -5.7287e-02,\n\t 1.8015e-01,  2.1390e-01,  8.6923e-03,\n\t 2.8833e-01,  6.6345e-02,  1.4578e-01,\n\t 2.2338e-01,  2.6453e-01, -2.9112e-02,\n\t 1.4018e-01, -9.2824e-02, -2.2795e-02,\n\t 1.2360e-01,  2.2527e-01, -1.1817e-01,\n\t-3.8872e-02, -1.9982e-02, -7.7514e-02,\n\t 1.7744e-03,  3.1736e-02,  4.5882e-02,\n\t-2.5222e-02,  2.4298e-01, -3.8596e-02,\n\t 1.2545e-02,  3.1872e-02,  7.1925e-02,\n\t 7.9782e-02, -1.5533e-01, -1.4619e-02,\n\t-1.2223e-01, -1.8631e-03, -9.8832e-02,\n\t-1.6815e-02, -8.1440e-02,  6.8038e-02\n};\n\nconst static MF4 biasLB = { -0.0225,  0.0082, -0.0191, -0.0185 };\n\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 tl2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 target1 = biasLA;\n\ttarget1 = MulAdd(tl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 0], kernelsLA[1 * 72 + 0 * 9 + 0], kernelsLA[2 * 72 + 0 * 9 + 0], kernelsLA[3 * 72 + 0 * 9 + 0], kernelsLA[0 * 72 + 1 * 9 + 0], kernelsLA[1 * 72 + 1 * 9 + 0], kernelsLA[2 * 72 + 1 * 9 + 0], kernelsLA[3 * 72 + 1 * 9 + 0], kernelsLA[0 * 72 + 2 * 9 + 0], kernelsLA[1 * 72 + 2 * 9 + 0], kernelsLA[2 * 72 + 2 * 9 + 0], kernelsLA[3 * 72 + 2 * 9 + 0], kernelsLA[0 * 72 + 3 * 9 + 0], kernelsLA[1 * 72 + 3 * 9 + 0], kernelsLA[2 * 72 + 3 * 9 + 0], kernelsLA[3 * 72 + 3 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 1], kernelsLA[1 * 72 + 0 * 9 + 1], kernelsLA[2 * 72 + 0 * 9 + 1], kernelsLA[3 * 72 + 0 * 9 + 1], kernelsLA[0 * 72 + 1 * 9 + 1], kernelsLA[1 * 72 + 1 * 9 + 1], kernelsLA[2 * 72 + 1 * 9 + 1], kernelsLA[3 * 72 + 1 * 9 + 1], kernelsLA[0 * 72 + 2 * 9 + 1], kernelsLA[1 * 72 + 2 * 9 + 1], kernelsLA[2 * 72 + 2 * 9 + 1], kernelsLA[3 * 72 + 2 * 9 + 1], kernelsLA[0 * 72 + 3 * 9 + 1], kernelsLA[1 * 72 + 3 * 9 + 1], kernelsLA[2 * 72 + 3 * 9 + 1], kernelsLA[3 * 72 + 3 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 2], kernelsLA[1 * 72 + 0 * 9 + 2], kernelsLA[2 * 72 + 0 * 9 + 2], kernelsLA[3 * 72 + 0 * 9 + 2], kernelsLA[0 * 72 + 1 * 9 + 2], kernelsLA[1 * 72 + 1 * 9 + 2], kernelsLA[2 * 72 + 1 * 9 + 2], kernelsLA[3 * 72 + 1 * 9 + 2], kernelsLA[0 * 72 + 2 * 9 + 2], kernelsLA[1 * 72 + 2 * 9 + 2], kernelsLA[2 * 72 + 2 * 9 + 2], kernelsLA[3 * 72 + 2 * 9 + 2], kernelsLA[0 * 72 + 3 * 9 + 2], kernelsLA[1 * 72 + 3 * 9 + 2], kernelsLA[2 * 72 + 3 * 9 + 2], kernelsLA[3 * 72 + 3 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 3], kernelsLA[1 * 72 + 0 * 9 + 3], kernelsLA[2 * 72 + 0 * 9 + 3], kernelsLA[3 * 72 + 0 * 9 + 3], kernelsLA[0 * 72 + 1 * 9 + 3], kernelsLA[1 * 72 + 1 * 9 + 3], kernelsLA[2 * 72 + 1 * 9 + 3], kernelsLA[3 * 72 + 1 * 9 + 3], kernelsLA[0 * 72 + 2 * 9 + 3], kernelsLA[1 * 72 + 2 * 9 + 3], kernelsLA[2 * 72 + 2 * 9 + 3], kernelsLA[3 * 72 + 2 * 9 + 3], kernelsLA[0 * 72 + 3 * 9 + 3], kernelsLA[1 * 72 + 3 * 9 + 3], kernelsLA[2 * 72 + 3 * 9 + 3], kernelsLA[3 * 72 + 3 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 4], kernelsLA[1 * 72 + 0 * 9 + 4], kernelsLA[2 * 72 + 0 * 9 + 4], kernelsLA[3 * 72 + 0 * 9 + 4], kernelsLA[0 * 72 + 1 * 9 + 4], kernelsLA[1 * 72 + 1 * 9 + 4], kernelsLA[2 * 72 + 1 * 9 + 4], kernelsLA[3 * 72 + 1 * 9 + 4], kernelsLA[0 * 72 + 2 * 9 + 4], kernelsLA[1 * 72 + 2 * 9 + 4], kernelsLA[2 * 72 + 2 * 9 + 4], kernelsLA[3 * 72 + 2 * 9 + 4], kernelsLA[0 * 72 + 3 * 9 + 4], kernelsLA[1 * 72 + 3 * 9 + 4], kernelsLA[2 * 72 + 3 * 9 + 4], kernelsLA[3 * 72 + 3 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 5], kernelsLA[1 * 72 + 0 * 9 + 5], kernelsLA[2 * 72 + 0 * 9 + 5], kernelsLA[3 * 72 + 0 * 9 + 5], kernelsLA[0 * 72 + 1 * 9 + 5], kernelsLA[1 * 72 + 1 * 9 + 5], kernelsLA[2 * 72 + 1 * 9 + 5], kernelsLA[3 * 72 + 1 * 9 + 5], kernelsLA[0 * 72 + 2 * 9 + 5], kernelsLA[1 * 72 + 2 * 9 + 5], kernelsLA[2 * 72 + 2 * 9 + 5], kernelsLA[3 * 72 + 2 * 9 + 5], kernelsLA[0 * 72 + 3 * 9 + 5], kernelsLA[1 * 72 + 3 * 9 + 5], kernelsLA[2 * 72 + 3 * 9 + 5], kernelsLA[3 * 72 + 3 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 6], kernelsLA[1 * 72 + 0 * 9 + 6], kernelsLA[2 * 72 + 0 * 9 + 6], kernelsLA[3 * 72 + 0 * 9 + 6], kernelsLA[0 * 72 + 1 * 9 + 6], kernelsLA[1 * 72 + 1 * 9 + 6], kernelsLA[2 * 72 + 1 * 9 + 6], kernelsLA[3 * 72 + 1 * 9 + 6], kernelsLA[0 * 72 + 2 * 9 + 6], kernelsLA[1 * 72 + 2 * 9 + 6], kernelsLA[2 * 72 + 2 * 9 + 6], kernelsLA[3 * 72 + 2 * 9 + 6], kernelsLA[0 * 72 + 3 * 9 + 6], kernelsLA[1 * 72 + 3 * 9 + 6], kernelsLA[2 * 72 + 3 * 9 + 6], kernelsLA[3 * 72 + 3 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 7], kernelsLA[1 * 72 + 0 * 9 + 7], kernelsLA[2 * 72 + 0 * 9 + 7], kernelsLA[3 * 72 + 0 * 9 + 7], kernelsLA[0 * 72 + 1 * 9 + 7], kernelsLA[1 * 72 + 1 * 9 + 7], kernelsLA[2 * 72 + 1 * 9 + 7], kernelsLA[3 * 72 + 1 * 9 + 7], kernelsLA[0 * 72 + 2 * 9 + 7], kernelsLA[1 * 72 + 2 * 9 + 7], kernelsLA[2 * 72 + 2 * 9 + 7], kernelsLA[3 * 72 + 2 * 9 + 7], kernelsLA[0 * 72 + 3 * 9 + 7], kernelsLA[1 * 72 + 3 * 9 + 7], kernelsLA[2 * 72 + 3 * 9 + 7], kernelsLA[3 * 72 + 3 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 8], kernelsLA[1 * 72 + 0 * 9 + 8], kernelsLA[2 * 72 + 0 * 9 + 8], kernelsLA[3 * 72 + 0 * 9 + 8], kernelsLA[0 * 72 + 1 * 9 + 8], kernelsLA[1 * 72 + 1 * 9 + 8], kernelsLA[2 * 72 + 1 * 9 + 8], kernelsLA[3 * 72 + 1 * 9 + 8], kernelsLA[0 * 72 + 2 * 9 + 8], kernelsLA[1 * 72 + 2 * 9 + 8], kernelsLA[2 * 72 + 2 * 9 + 8], kernelsLA[3 * 72 + 2 * 9 + 8], kernelsLA[0 * 72 + 3 * 9 + 8], kernelsLA[1 * 72 + 3 * 9 + 8], kernelsLA[2 * 72 + 3 * 9 + 8], kernelsLA[3 * 72 + 3 * 9 + 8]), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 0], kernelsLA[1 * 72 + 4 * 9 + 0], kernelsLA[2 * 72 + 4 * 9 + 0], kernelsLA[3 * 72 + 4 * 9 + 0], kernelsLA[0 * 72 + 5 * 9 + 0], kernelsLA[1 * 72 + 5 * 9 + 0], kernelsLA[2 * 72 + 5 * 9 + 0], kernelsLA[3 * 72 + 5 * 9 + 0], kernelsLA[0 * 72 + 6 * 9 + 0], kernelsLA[1 * 72 + 6 * 9 + 0], kernelsLA[2 * 72 + 6 * 9 + 0], kernelsLA[3 * 72 + 6 * 9 + 0], kernelsLA[0 * 72 + 7 * 9 + 0], kernelsLA[1 * 72 + 7 * 9 + 0], kernelsLA[2 * 72 + 7 * 9 + 0], kernelsLA[3 * 72 + 7 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 1], kernelsLA[1 * 72 + 4 * 9 + 1], kernelsLA[2 * 72 + 4 * 9 + 1], kernelsLA[3 * 72 + 4 * 9 + 1], kernelsLA[0 * 72 + 5 * 9 + 1], kernelsLA[1 * 72 + 5 * 9 + 1], kernelsLA[2 * 72 + 5 * 9 + 1], kernelsLA[3 * 72 + 5 * 9 + 1], kernelsLA[0 * 72 + 6 * 9 + 1], kernelsLA[1 * 72 + 6 * 9 + 1], kernelsLA[2 * 72 + 6 * 9 + 1], kernelsLA[3 * 72 + 6 * 9 + 1], kernelsLA[0 * 72 + 7 * 9 + 1], kernelsLA[1 * 72 + 7 * 9 + 1], kernelsLA[2 * 72 + 7 * 9 + 1], kernelsLA[3 * 72 + 7 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 2], kernelsLA[1 * 72 + 4 * 9 + 2], kernelsLA[2 * 72 + 4 * 9 + 2], kernelsLA[3 * 72 + 4 * 9 + 2], kernelsLA[0 * 72 + 5 * 9 + 2], kernelsLA[1 * 72 + 5 * 9 + 2], kernelsLA[2 * 72 + 5 * 9 + 2], kernelsLA[3 * 72 + 5 * 9 + 2], kernelsLA[0 * 72 + 6 * 9 + 2], kernelsLA[1 * 72 + 6 * 9 + 2], kernelsLA[2 * 72 + 6 * 9 + 2], kernelsLA[3 * 72 + 6 * 9 + 2], kernelsLA[0 * 72 + 7 * 9 + 2], kernelsLA[1 * 72 + 7 * 9 + 2], kernelsLA[2 * 72 + 7 * 9 + 2], kernelsLA[3 * 72 + 7 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 3], kernelsLA[1 * 72 + 4 * 9 + 3], kernelsLA[2 * 72 + 4 * 9 + 3], kernelsLA[3 * 72 + 4 * 9 + 3], kernelsLA[0 * 72 + 5 * 9 + 3], kernelsLA[1 * 72 + 5 * 9 + 3], kernelsLA[2 * 72 + 5 * 9 + 3], kernelsLA[3 * 72 + 5 * 9 + 3], kernelsLA[0 * 72 + 6 * 9 + 3], kernelsLA[1 * 72 + 6 * 9 + 3], kernelsLA[2 * 72 + 6 * 9 + 3], kernelsLA[3 * 72 + 6 * 9 + 3], kernelsLA[0 * 72 + 7 * 9 + 3], kernelsLA[1 * 72 + 7 * 9 + 3], kernelsLA[2 * 72 + 7 * 9 + 3], kernelsLA[3 * 72 + 7 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 4], kernelsLA[1 * 72 + 4 * 9 + 4], kernelsLA[2 * 72 + 4 * 9 + 4], kernelsLA[3 * 72 + 4 * 9 + 4], kernelsLA[0 * 72 + 5 * 9 + 4], kernelsLA[1 * 72 + 5 * 9 + 4], kernelsLA[2 * 72 + 5 * 9 + 4], kernelsLA[3 * 72 + 5 * 9 + 4], kernelsLA[0 * 72 + 6 * 9 + 4], kernelsLA[1 * 72 + 6 * 9 + 4], kernelsLA[2 * 72 + 6 * 9 + 4], kernelsLA[3 * 72 + 6 * 9 + 4], kernelsLA[0 * 72 + 7 * 9 + 4], kernelsLA[1 * 72 + 7 * 9 + 4], kernelsLA[2 * 72 + 7 * 9 + 4], kernelsLA[3 * 72 + 7 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 5], kernelsLA[1 * 72 + 4 * 9 + 5], kernelsLA[2 * 72 + 4 * 9 + 5], kernelsLA[3 * 72 + 4 * 9 + 5], kernelsLA[0 * 72 + 5 * 9 + 5], kernelsLA[1 * 72 + 5 * 9 + 5], kernelsLA[2 * 72 + 5 * 9 + 5], kernelsLA[3 * 72 + 5 * 9 + 5], kernelsLA[0 * 72 + 6 * 9 + 5], kernelsLA[1 * 72 + 6 * 9 + 5], kernelsLA[2 * 72 + 6 * 9 + 5], kernelsLA[3 * 72 + 6 * 9 + 5], kernelsLA[0 * 72 + 7 * 9 + 5], kernelsLA[1 * 72 + 7 * 9 + 5], kernelsLA[2 * 72 + 7 * 9 + 5], kernelsLA[3 * 72 + 7 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 6], kernelsLA[1 * 72 + 4 * 9 + 6], kernelsLA[2 * 72 + 4 * 9 + 6], kernelsLA[3 * 72 + 4 * 9 + 6], kernelsLA[0 * 72 + 5 * 9 + 6], kernelsLA[1 * 72 + 5 * 9 + 6], kernelsLA[2 * 72 + 5 * 9 + 6], kernelsLA[3 * 72 + 5 * 9 + 6], kernelsLA[0 * 72 + 6 * 9 + 6], kernelsLA[1 * 72 + 6 * 9 + 6], kernelsLA[2 * 72 + 6 * 9 + 6], kernelsLA[3 * 72 + 6 * 9 + 6], kernelsLA[0 * 72 + 7 * 9 + 6], kernelsLA[1 * 72 + 7 * 9 + 6], kernelsLA[2 * 72 + 7 * 9 + 6], kernelsLA[3 * 72 + 7 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 7], kernelsLA[1 * 72 + 4 * 9 + 7], kernelsLA[2 * 72 + 4 * 9 + 7], kernelsLA[3 * 72 + 4 * 9 + 7], kernelsLA[0 * 72 + 5 * 9 + 7], kernelsLA[1 * 72 + 5 * 9 + 7], kernelsLA[2 * 72 + 5 * 9 + 7], kernelsLA[3 * 72 + 5 * 9 + 7], kernelsLA[0 * 72 + 6 * 9 + 7], kernelsLA[1 * 72 + 6 * 9 + 7], kernelsLA[2 * 72 + 6 * 9 + 7], kernelsLA[3 * 72 + 6 * 9 + 7], kernelsLA[0 * 72 + 7 * 9 + 7], kernelsLA[1 * 72 + 7 * 9 + 7], kernelsLA[2 * 72 + 7 * 9 + 7], kernelsLA[3 * 72 + 7 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 8], kernelsLA[1 * 72 + 4 * 9 + 8], kernelsLA[2 * 72 + 4 * 9 + 8], kernelsLA[3 * 72 + 4 * 9 + 8], kernelsLA[0 * 72 + 5 * 9 + 8], kernelsLA[1 * 72 + 5 * 9 + 8], kernelsLA[2 * 72 + 5 * 9 + 8], kernelsLA[3 * 72 + 5 * 9 + 8], kernelsLA[0 * 72 + 6 * 9 + 8], kernelsLA[1 * 72 + 6 * 9 + 8], kernelsLA[2 * 72 + 6 * 9 + 8], kernelsLA[3 * 72 + 6 * 9 + 8], kernelsLA[0 * 72 + 7 * 9 + 8], kernelsLA[1 * 72 + 7 * 9 + 8], kernelsLA[2 * 72 + 7 * 9 + 8], kernelsLA[3 * 72 + 7 * 9 + 8]), target1);\n\ttarget1 = RELU(target1);\n\n\tMF4 target2 = biasLB;\n\ttarget2 = MulAdd(tl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 0], kernelsLB[1 * 72 + 0 * 9 + 0], kernelsLB[2 * 72 + 0 * 9 + 0], kernelsLB[3 * 72 + 0 * 9 + 0], kernelsLB[0 * 72 + 1 * 9 + 0], kernelsLB[1 * 72 + 1 * 9 + 0], kernelsLB[2 * 72 + 1 * 9 + 0], kernelsLB[3 * 72 + 1 * 9 + 0], kernelsLB[0 * 72 + 2 * 9 + 0], kernelsLB[1 * 72 + 2 * 9 + 0], kernelsLB[2 * 72 + 2 * 9 + 0], kernelsLB[3 * 72 + 2 * 9 + 0], kernelsLB[0 * 72 + 3 * 9 + 0], kernelsLB[1 * 72 + 3 * 9 + 0], kernelsLB[2 * 72 + 3 * 9 + 0], kernelsLB[3 * 72 + 3 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 1], kernelsLB[1 * 72 + 0 * 9 + 1], kernelsLB[2 * 72 + 0 * 9 + 1], kernelsLB[3 * 72 + 0 * 9 + 1], kernelsLB[0 * 72 + 1 * 9 + 1], kernelsLB[1 * 72 + 1 * 9 + 1], kernelsLB[2 * 72 + 1 * 9 + 1], kernelsLB[3 * 72 + 1 * 9 + 1], kernelsLB[0 * 72 + 2 * 9 + 1], kernelsLB[1 * 72 + 2 * 9 + 1], kernelsLB[2 * 72 + 2 * 9 + 1], kernelsLB[3 * 72 + 2 * 9 + 1], kernelsLB[0 * 72 + 3 * 9 + 1], kernelsLB[1 * 72 + 3 * 9 + 1], kernelsLB[2 * 72 + 3 * 9 + 1], kernelsLB[3 * 72 + 3 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 2], kernelsLB[1 * 72 + 0 * 9 + 2], kernelsLB[2 * 72 + 0 * 9 + 2], kernelsLB[3 * 72 + 0 * 9 + 2], kernelsLB[0 * 72 + 1 * 9 + 2], kernelsLB[1 * 72 + 1 * 9 + 2], kernelsLB[2 * 72 + 1 * 9 + 2], kernelsLB[3 * 72 + 1 * 9 + 2], kernelsLB[0 * 72 + 2 * 9 + 2], kernelsLB[1 * 72 + 2 * 9 + 2], kernelsLB[2 * 72 + 2 * 9 + 2], kernelsLB[3 * 72 + 2 * 9 + 2], kernelsLB[0 * 72 + 3 * 9 + 2], kernelsLB[1 * 72 + 3 * 9 + 2], kernelsLB[2 * 72 + 3 * 9 + 2], kernelsLB[3 * 72 + 3 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 3], kernelsLB[1 * 72 + 0 * 9 + 3], kernelsLB[2 * 72 + 0 * 9 + 3], kernelsLB[3 * 72 + 0 * 9 + 3], kernelsLB[0 * 72 + 1 * 9 + 3], kernelsLB[1 * 72 + 1 * 9 + 3], kernelsLB[2 * 72 + 1 * 9 + 3], kernelsLB[3 * 72 + 1 * 9 + 3], kernelsLB[0 * 72 + 2 * 9 + 3], kernelsLB[1 * 72 + 2 * 9 + 3], kernelsLB[2 * 72 + 2 * 9 + 3], kernelsLB[3 * 72 + 2 * 9 + 3], kernelsLB[0 * 72 + 3 * 9 + 3], kernelsLB[1 * 72 + 3 * 9 + 3], kernelsLB[2 * 72 + 3 * 9 + 3], kernelsLB[3 * 72 + 3 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 4], kernelsLB[1 * 72 + 0 * 9 + 4], kernelsLB[2 * 72 + 0 * 9 + 4], kernelsLB[3 * 72 + 0 * 9 + 4], kernelsLB[0 * 72 + 1 * 9 + 4], kernelsLB[1 * 72 + 1 * 9 + 4], kernelsLB[2 * 72 + 1 * 9 + 4], kernelsLB[3 * 72 + 1 * 9 + 4], kernelsLB[0 * 72 + 2 * 9 + 4], kernelsLB[1 * 72 + 2 * 9 + 4], kernelsLB[2 * 72 + 2 * 9 + 4], kernelsLB[3 * 72 + 2 * 9 + 4], kernelsLB[0 * 72 + 3 * 9 + 4], kernelsLB[1 * 72 + 3 * 9 + 4], kernelsLB[2 * 72 + 3 * 9 + 4], kernelsLB[3 * 72 + 3 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 5], kernelsLB[1 * 72 + 0 * 9 + 5], kernelsLB[2 * 72 + 0 * 9 + 5], kernelsLB[3 * 72 + 0 * 9 + 5], kernelsLB[0 * 72 + 1 * 9 + 5], kernelsLB[1 * 72 + 1 * 9 + 5], kernelsLB[2 * 72 + 1 * 9 + 5], kernelsLB[3 * 72 + 1 * 9 + 5], kernelsLB[0 * 72 + 2 * 9 + 5], kernelsLB[1 * 72 + 2 * 9 + 5], kernelsLB[2 * 72 + 2 * 9 + 5], kernelsLB[3 * 72 + 2 * 9 + 5], kernelsLB[0 * 72 + 3 * 9 + 5], kernelsLB[1 * 72 + 3 * 9 + 5], kernelsLB[2 * 72 + 3 * 9 + 5], kernelsLB[3 * 72 + 3 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 6], kernelsLB[1 * 72 + 0 * 9 + 6], kernelsLB[2 * 72 + 0 * 9 + 6], kernelsLB[3 * 72 + 0 * 9 + 6], kernelsLB[0 * 72 + 1 * 9 + 6], kernelsLB[1 * 72 + 1 * 9 + 6], kernelsLB[2 * 72 + 1 * 9 + 6], kernelsLB[3 * 72 + 1 * 9 + 6], kernelsLB[0 * 72 + 2 * 9 + 6], kernelsLB[1 * 72 + 2 * 9 + 6], kernelsLB[2 * 72 + 2 * 9 + 6], kernelsLB[3 * 72 + 2 * 9 + 6], kernelsLB[0 * 72 + 3 * 9 + 6], kernelsLB[1 * 72 + 3 * 9 + 6], kernelsLB[2 * 72 + 3 * 9 + 6], kernelsLB[3 * 72 + 3 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 7], kernelsLB[1 * 72 + 0 * 9 + 7], kernelsLB[2 * 72 + 0 * 9 + 7], kernelsLB[3 * 72 + 0 * 9 + 7], kernelsLB[0 * 72 + 1 * 9 + 7], kernelsLB[1 * 72 + 1 * 9 + 7], kernelsLB[2 * 72 + 1 * 9 + 7], kernelsLB[3 * 72 + 1 * 9 + 7], kernelsLB[0 * 72 + 2 * 9 + 7], kernelsLB[1 * 72 + 2 * 9 + 7], kernelsLB[2 * 72 + 2 * 9 + 7], kernelsLB[3 * 72 + 2 * 9 + 7], kernelsLB[0 * 72 + 3 * 9 + 7], kernelsLB[1 * 72 + 3 * 9 + 7], kernelsLB[2 * 72 + 3 * 9 + 7], kernelsLB[3 * 72 + 3 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 8], kernelsLB[1 * 72 + 0 * 9 + 8], kernelsLB[2 * 72 + 0 * 9 + 8], kernelsLB[3 * 72 + 0 * 9 + 8], kernelsLB[0 * 72 + 1 * 9 + 8], kernelsLB[1 * 72 + 1 * 9 + 8], kernelsLB[2 * 72 + 1 * 9 + 8], kernelsLB[3 * 72 + 1 * 9 + 8], kernelsLB[0 * 72 + 2 * 9 + 8], kernelsLB[1 * 72 + 2 * 9 + 8], kernelsLB[2 * 72 + 2 * 9 + 8], kernelsLB[3 * 72 + 2 * 9 + 8], kernelsLB[0 * 72 + 3 * 9 + 8], kernelsLB[1 * 72 + 3 * 9 + 8], kernelsLB[2 * 72 + 3 * 9 + 8], kernelsLB[3 * 72 + 3 * 9 + 8]), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 0], kernelsLB[1 * 72 + 4 * 9 + 0], kernelsLB[2 * 72 + 4 * 9 + 0], kernelsLB[3 * 72 + 4 * 9 + 0], kernelsLB[0 * 72 + 5 * 9 + 0], kernelsLB[1 * 72 + 5 * 9 + 0], kernelsLB[2 * 72 + 5 * 9 + 0], kernelsLB[3 * 72 + 5 * 9 + 0], kernelsLB[0 * 72 + 6 * 9 + 0], kernelsLB[1 * 72 + 6 * 9 + 0], kernelsLB[2 * 72 + 6 * 9 + 0], kernelsLB[3 * 72 + 6 * 9 + 0], kernelsLB[0 * 72 + 7 * 9 + 0], kernelsLB[1 * 72 + 7 * 9 + 0], kernelsLB[2 * 72 + 7 * 9 + 0], kernelsLB[3 * 72 + 7 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 1], kernelsLB[1 * 72 + 4 * 9 + 1], kernelsLB[2 * 72 + 4 * 9 + 1], kernelsLB[3 * 72 + 4 * 9 + 1], kernelsLB[0 * 72 + 5 * 9 + 1], kernelsLB[1 * 72 + 5 * 9 + 1], kernelsLB[2 * 72 + 5 * 9 + 1], kernelsLB[3 * 72 + 5 * 9 + 1], kernelsLB[0 * 72 + 6 * 9 + 1], kernelsLB[1 * 72 + 6 * 9 + 1], kernelsLB[2 * 72 + 6 * 9 + 1], kernelsLB[3 * 72 + 6 * 9 + 1], kernelsLB[0 * 72 + 7 * 9 + 1], kernelsLB[1 * 72 + 7 * 9 + 1], kernelsLB[2 * 72 + 7 * 9 + 1], kernelsLB[3 * 72 + 7 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 2], kernelsLB[1 * 72 + 4 * 9 + 2], kernelsLB[2 * 72 + 4 * 9 + 2], kernelsLB[3 * 72 + 4 * 9 + 2], kernelsLB[0 * 72 + 5 * 9 + 2], kernelsLB[1 * 72 + 5 * 9 + 2], kernelsLB[2 * 72 + 5 * 9 + 2], kernelsLB[3 * 72 + 5 * 9 + 2], kernelsLB[0 * 72 + 6 * 9 + 2], kernelsLB[1 * 72 + 6 * 9 + 2], kernelsLB[2 * 72 + 6 * 9 + 2], kernelsLB[3 * 72 + 6 * 9 + 2], kernelsLB[0 * 72 + 7 * 9 + 2], kernelsLB[1 * 72 + 7 * 9 + 2], kernelsLB[2 * 72 + 7 * 9 + 2], kernelsLB[3 * 72 + 7 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 3], kernelsLB[1 * 72 + 4 * 9 + 3], kernelsLB[2 * 72 + 4 * 9 + 3], kernelsLB[3 * 72 + 4 * 9 + 3], kernelsLB[0 * 72 + 5 * 9 + 3], kernelsLB[1 * 72 + 5 * 9 + 3], kernelsLB[2 * 72 + 5 * 9 + 3], kernelsLB[3 * 72 + 5 * 9 + 3], kernelsLB[0 * 72 + 6 * 9 + 3], kernelsLB[1 * 72 + 6 * 9 + 3], kernelsLB[2 * 72 + 6 * 9 + 3], kernelsLB[3 * 72 + 6 * 9 + 3], kernelsLB[0 * 72 + 7 * 9 + 3], kernelsLB[1 * 72 + 7 * 9 + 3], kernelsLB[2 * 72 + 7 * 9 + 3], kernelsLB[3 * 72 + 7 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 4], kernelsLB[1 * 72 + 4 * 9 + 4], kernelsLB[2 * 72 + 4 * 9 + 4], kernelsLB[3 * 72 + 4 * 9 + 4], kernelsLB[0 * 72 + 5 * 9 + 4], kernelsLB[1 * 72 + 5 * 9 + 4], kernelsLB[2 * 72 + 5 * 9 + 4], kernelsLB[3 * 72 + 5 * 9 + 4], kernelsLB[0 * 72 + 6 * 9 + 4], kernelsLB[1 * 72 + 6 * 9 + 4], kernelsLB[2 * 72 + 6 * 9 + 4], kernelsLB[3 * 72 + 6 * 9 + 4], kernelsLB[0 * 72 + 7 * 9 + 4], kernelsLB[1 * 72 + 7 * 9 + 4], kernelsLB[2 * 72 + 7 * 9 + 4], kernelsLB[3 * 72 + 7 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 5], kernelsLB[1 * 72 + 4 * 9 + 5], kernelsLB[2 * 72 + 4 * 9 + 5], kernelsLB[3 * 72 + 4 * 9 + 5], kernelsLB[0 * 72 + 5 * 9 + 5], kernelsLB[1 * 72 + 5 * 9 + 5], kernelsLB[2 * 72 + 5 * 9 + 5], kernelsLB[3 * 72 + 5 * 9 + 5], kernelsLB[0 * 72 + 6 * 9 + 5], kernelsLB[1 * 72 + 6 * 9 + 5], kernelsLB[2 * 72 + 6 * 9 + 5], kernelsLB[3 * 72 + 6 * 9 + 5], kernelsLB[0 * 72 + 7 * 9 + 5], kernelsLB[1 * 72 + 7 * 9 + 5], kernelsLB[2 * 72 + 7 * 9 + 5], kernelsLB[3 * 72 + 7 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 6], kernelsLB[1 * 72 + 4 * 9 + 6], kernelsLB[2 * 72 + 4 * 9 + 6], kernelsLB[3 * 72 + 4 * 9 + 6], kernelsLB[0 * 72 + 5 * 9 + 6], kernelsLB[1 * 72 + 5 * 9 + 6], kernelsLB[2 * 72 + 5 * 9 + 6], kernelsLB[3 * 72 + 5 * 9 + 6], kernelsLB[0 * 72 + 6 * 9 + 6], kernelsLB[1 * 72 + 6 * 9 + 6], kernelsLB[2 * 72 + 6 * 9 + 6], kernelsLB[3 * 72 + 6 * 9 + 6], kernelsLB[0 * 72 + 7 * 9 + 6], kernelsLB[1 * 72 + 7 * 9 + 6], kernelsLB[2 * 72 + 7 * 9 + 6], kernelsLB[3 * 72 + 7 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 7], kernelsLB[1 * 72 + 4 * 9 + 7], kernelsLB[2 * 72 + 4 * 9 + 7], kernelsLB[3 * 72 + 4 * 9 + 7], kernelsLB[0 * 72 + 5 * 9 + 7], kernelsLB[1 * 72 + 5 * 9 + 7], kernelsLB[2 * 72 + 5 * 9 + 7], kernelsLB[3 * 72 + 5 * 9 + 7], kernelsLB[0 * 72 + 6 * 9 + 7], kernelsLB[1 * 72 + 6 * 9 + 7], kernelsLB[2 * 72 + 6 * 9 + 7], kernelsLB[3 * 72 + 6 * 9 + 7], kernelsLB[0 * 72 + 7 * 9 + 7], kernelsLB[1 * 72 + 7 * 9 + 7], kernelsLB[2 * 72 + 7 * 9 + 7], kernelsLB[3 * 72 + 7 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 8], kernelsLB[1 * 72 + 4 * 9 + 8], kernelsLB[2 * 72 + 4 * 9 + 8], kernelsLB[3 * 72 + 4 * 9 + 8], kernelsLB[0 * 72 + 5 * 9 + 8], kernelsLB[1 * 72 + 5 * 9 + 8], kernelsLB[2 * 72 + 5 * 9 + 8], kernelsLB[3 * 72 + 5 * 9 + 8], kernelsLB[0 * 72 + 6 * 9 + 8], kernelsLB[1 * 72 + 6 * 9 + 8], kernelsLB[2 * 72 + 6 * 9 + 8], kernelsLB[3 * 72 + 6 * 9 + 8], kernelsLB[0 * 72 + 7 * 9 + 8], kernelsLB[1 * 72 + 7 * 9 + 8], kernelsLB[2 * 72 + 7 * 9 + 8], kernelsLB[3 * 72 + 7 * 9 + 8]), target2);\n\ttarget2 = RELU(target2);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n}\n\n\n//!PASS 4\n//!DESC L4\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nconst static MF kernelsLA[9 * 8 * 4] = {\n\t 2.3898e-02,  1.2411e-02, -3.2770e-02,\n\t-2.6029e-01,  3.2690e-01, -1.8246e-01,\n\t 1.1224e-02,  8.0193e-02, -5.0412e-02,\n\t-9.3849e-02,  2.0325e-02,  2.6309e-02,\n\t 1.2266e-02,  1.7698e-01,  2.7049e-01,\n\t 1.2918e-01,  2.0190e-01,  2.7352e-01,\n\t-7.2100e-02,  1.3357e-01, -1.3702e-01,\n\t 2.2527e-01,  1.5821e-01, -2.3104e-01,\n\t 1.0182e-02, -1.5499e-01,  7.1906e-02,\n\t 1.5865e-01,  7.0950e-02, -6.3336e-02,\n\t 2.2661e-01, -4.2997e-01, -4.2013e-01,\n\t 1.7549e-02, -1.3142e-01, -3.1663e-01,\n\t 1.3617e-01,  1.4229e-01, -1.0707e-02,\n\t-1.0986e-02,  2.8816e-01, -3.6239e-01,\n\t 2.2579e-02, -1.4332e-02,  7.1339e-03,\n\t-1.4357e-01, -9.7608e-02,  1.4646e-01,\n\t-5.3856e-02,  3.3898e-01, -2.4936e-01,\n\t-2.9500e-02,  2.1799e-02,  1.1901e-02,\n\t 3.6996e-02,  2.1291e-02,  3.2150e-02,\n\t 9.8375e-02,  2.4476e-01,  2.2896e-01,\n\t 1.8392e-01, -7.4510e-02, -1.0152e-01,\n\t 4.4757e-02, -4.8053e-03, -6.7254e-02,\n\t-4.8370e-02, -7.8975e-02, -3.6007e-01,\n\t-3.8160e-02,  8.7707e-02, -1.4986e-01,\n\t-8.7544e-03, -4.3522e-02,  7.3822e-02,\n\t-1.4523e-01,  1.1433e-01,  4.4109e-02,\n\t-1.6025e-03,  2.5459e-02, -9.3562e-02,\n\t-2.9192e-02, -1.0975e-01, -5.0943e-02,\n\t-1.1215e-01,  1.9907e-01,  7.9934e-02,\n\t 3.7066e-02,  3.0796e-01, -1.4034e-01,\n\t-8.2315e-02, -2.0182e-02, -1.2824e-02,\n\t-4.8007e-03,  1.2655e-01, -2.5157e-02,\n\t 2.7796e-02, -4.3032e-02,  2.5397e-02,\n\t 6.9377e-02,  2.3642e-01,  1.2713e-01,\n\t 2.7878e-02, -1.5325e-01, -1.4871e-01,\n\t 1.5800e-02, -4.5935e-02,  1.7370e-01,\n\t 4.8058e-02, -1.8725e-01, -6.7048e-03,\n\t-1.3932e-01, -6.0768e-02, -1.6976e-01,\n\t-2.1189e-02,  1.0311e-02, -2.2970e-02,\n\t-7.0546e-03,  7.9481e-02,  1.2146e-02,\n\t 4.2666e-02,  3.5383e-01,  1.4381e-01,\n\t 5.4384e-02, -9.3862e-02,  4.8870e-03,\n\t 2.1141e-02, -6.6826e-02, -1.8526e-01,\n\t 1.3309e-01,  3.3452e-01,  1.1058e-02,\n\t-1.6967e-02,  1.1094e-01,  5.3230e-02,\n\t 3.0409e-02, -4.7613e-02, -1.7737e-01,\n\t-1.6678e-02, -7.8644e-02,  1.1743e-01,\n\t 7.3322e-02, -1.1354e-01, -1.5737e-02,\n\t-1.2397e-03, -1.4685e-02, -1.0192e-02,\n\t 1.6045e-01,  3.6331e-02,  1.2219e-01,\n\t 1.3123e-01,  5.7578e-02,  1.0291e-01,\n\t 1.7424e-01,  1.0688e-01,  1.4263e-01,\n\t 8.9942e-02, -2.7141e-02,  3.1238e-02,\n\t-4.0240e-02, -1.0930e-01, -2.1276e-01,\n\t 1.0357e-01,  5.7673e-02,  1.0356e-02,\n\t-2.0864e-01, -1.9405e-01,  2.5094e-01,\n\t-4.8277e-03, -1.3758e-01,  1.1562e-01,\n\t-1.0358e-01,  2.0631e-01, -9.1445e-03,\n\t-1.7602e-01,  1.0200e-01,  3.0032e-02,\n\t-1.1495e-02, -4.5077e-02, -6.4748e-02,\n\t-2.3072e-02, -3.2342e-02,  1.4503e-02,\n\t-3.7052e-02, -1.2206e-01,  5.5395e-02,\n\t 2.8331e-02, -4.2812e-03,  6.9807e-02,\n\t 4.3593e-02, -6.7373e-03,  1.2760e-02,\n\t 3.2896e-03, -2.4007e-01, -5.2920e-02,\n\t 2.5193e-02, -2.1480e-01,  8.4654e-02,\n\t 2.2642e-02,  8.2132e-02, -2.3864e-02,\n\t-2.9726e-01,  8.0405e-02, -1.3190e-02,\n\t-1.1310e-01, -4.4342e-01, -6.3536e-02,\n\t-6.7090e-02,  1.1797e-01,  1.5315e-01,\n\t 7.7829e-02, -1.4494e-01,  1.0233e-01,\n\t 9.7059e-02,  1.2772e-01, -2.4394e-02,\n\t-2.6179e-02,  2.6721e-02,  1.1707e-02,\n\t-4.8024e-02, -2.3366e-01, -1.6978e-01,\n\t-2.4402e-01, -2.8572e-01, -2.4053e-02,\n\t-2.7451e-03,  7.1959e-02,  4.4706e-02,\n\t-1.9900e-01,  2.1353e-01,  1.0625e-01,\n\t 4.0246e-01,  4.2323e-01,  3.4046e-02,\n\t-1.6943e-01, -2.0221e-01, -1.6369e-01,\n\t 1.3882e-01,  2.1717e-01, -1.3581e-01,\n\t 1.3975e-01,  1.1980e-01,  1.8888e-02,\n\t-1.8110e-01, -2.6143e-01, -1.0109e-01,\n\t 5.5844e-02, -1.2175e-01,  3.4447e-02,\n\t 8.9688e-02,  2.4641e-01,  2.3287e-01,\n\t-5.8259e-02, -1.3656e-01, -1.3936e-02,\n\t-8.3429e-03,  2.3026e-01,  1.2302e-01,\n\t-2.2969e-02,  6.0932e-02,  3.4749e-02,\n\t 1.2910e-01,  2.4008e-01,  1.8908e-01,\n\t-5.8776e-02,  3.8121e-01,  8.1312e-02,\n\t 9.1175e-02, -1.8729e-02, -4.6156e-02,\n\t 3.7493e-02, -3.5877e-02, -9.9651e-03,\n\t 1.5864e-01,  1.3611e-01,  6.7880e-02,\n\t 2.2216e-01,  9.3697e-02,  7.4782e-02,\n\t-1.0861e-01, -2.5824e-01,  6.6455e-02,\n\t 9.2238e-02, -2.3448e-01, -3.4057e-01,\n\t-2.9658e-01,  9.4698e-03,  1.9315e-01\n};\n\nconst static MF4 biasLA = { -5.8305e-03, -8.6574e-02,  4.2228e-02, -4.3500e-02 };\n\nconst static MF kernelsLB[9 * 8 * 4] = {\n\t-5.2396e-02,  1.2310e-01, -5.2917e-02,\n\t-4.3708e-03,  1.9560e-01, -2.4309e-02,\n\t-6.7388e-02, -8.8839e-02, -2.0907e-02,\n\t 4.6550e-02,  3.4119e-02,  6.0977e-02,\n\t-1.0054e-02,  1.4411e-01,  1.5622e-01,\n\t 1.7401e-02,  2.5685e-01, -9.1853e-03,\n\t-4.4530e-02, -1.8623e-01, -8.4557e-02,\n\t 9.5962e-02,  2.6491e-01,  1.7854e-01,\n\t-2.0547e-02, -1.2023e-01, -7.6897e-02,\n\t-1.3418e-01, -1.4960e-01,  1.6292e-01,\n\t-1.7275e-01, -6.0181e-02, -2.7034e-02,\n\t-7.4189e-02, -3.5566e-02,  1.3995e-01,\n\t 3.0758e-02,  3.3476e-02,  6.9837e-03,\n\t-6.1089e-02, -9.6021e-02,  7.1716e-03,\n\t 1.0389e-01,  4.7963e-02,  9.5921e-02,\n\t 4.4569e-02,  1.2230e-01, -1.4417e-01,\n\t-1.2825e-02,  3.1980e-01, -3.5905e-01,\n\t-1.2557e-01, -7.5283e-02, -1.2343e-01,\n\t 1.9791e-01,  7.9003e-02,  3.1163e-02,\n\t 1.0969e-01,  1.6839e-01, -2.5816e-01,\n\t-1.2617e-01,  1.3686e-01, -2.1078e-01,\n\t-2.1870e-02, -1.8378e-01, -2.8893e-01,\n\t-8.2523e-02, -3.0475e-02,  9.6007e-02,\n\t 1.0669e-01, -1.4581e-03,  3.2441e-01,\n\t-8.1872e-03,  1.1690e-02, -4.0179e-02,\n\t-1.0835e-01,  3.6112e-01, -4.5990e-02,\n\t-1.2355e-01, -1.3372e-01,  3.8136e-02,\n\t-9.1530e-03,  3.5432e-02,  4.3950e-02,\n\t-8.6859e-02,  1.5887e-01,  1.2796e-02,\n\t 1.3554e-02, -1.5669e-01, -1.4371e-02,\n\t-4.6609e-02,  1.7114e-01, -7.8284e-02,\n\t 1.7611e-01,  4.1204e-01,  9.3281e-02,\n\t 1.1420e-01,  1.2951e-01, -7.6025e-02,\n\t-5.4831e-02,  9.7574e-02,  3.2839e-02,\n\t 3.8475e-02, -6.0247e-02, -2.9627e-02,\n\t-2.4367e-02,  1.3143e-02,  4.7017e-02,\n\t 2.3800e-02, -2.4046e-02, -5.7044e-02,\n\t 2.7280e-02,  7.8573e-01,  1.0079e-02,\n\t 6.4100e-02,  5.1584e-02,  7.9653e-03,\n\t-8.9480e-02, -1.6207e-01, -8.9418e-02,\n\t-3.5589e-02,  3.5903e-01, -1.8381e-01,\n\t 9.2356e-02,  8.8046e-02, -5.0229e-02,\n\t 1.8609e-02,  1.1243e-01,  5.2599e-02,\n\t-1.3374e-02, -3.3097e-01,  6.5346e-02,\n\t 2.6760e-01, -1.0281e-01,  1.1607e-02,\n\t 7.6576e-03, -3.5957e-02,  3.1924e-02,\n\t-7.0088e-02,  9.1241e-02,  1.2827e-02,\n\t 3.7165e-02,  7.0273e-03, -7.3945e-04,\n\t-6.5406e-03,  7.2666e-02, -5.7348e-02,\n\t-1.9100e-01, -7.4449e-02, -1.2496e-01,\n\t 1.5299e-01, -8.8047e-02, -2.1810e-02,\n\t-3.0241e-02, -7.4310e-03, -8.7682e-02,\n\t-2.2479e-02,  9.6008e-02, -8.4539e-02,\n\t-2.8915e-02,  1.7538e-01, -3.7735e-02,\n\t-9.8463e-03, -6.9618e-02, -2.6095e-01,\n\t 9.9950e-02,  5.0534e-01, -1.8812e-01,\n\t-1.1986e-01,  7.1166e-02, -2.4769e-02,\n\t 8.8529e-02,  9.8348e-02,  2.1136e-02,\n\t-9.0337e-03,  1.3679e-01, -1.2115e-01,\n\t-6.2478e-03,  1.1436e-01, -3.4610e-02,\n\t-2.7350e-02,  1.0702e-01,  1.6220e-02,\n\t 1.0912e-02,  1.0953e-01,  8.6762e-02,\n\t 2.9348e-03, -2.2035e-02,  1.2376e-01,\n\t 7.0102e-02, -1.0945e-01, -1.6640e-01,\n\t-3.9916e-03, -2.6658e-02, -9.7031e-02,\n\t-3.0047e-02,  1.6631e-03, -5.5031e-02,\n\t-7.9624e-02,  1.9976e-01,  1.9582e-01,\n\t 2.1377e-01,  3.5835e-01,  1.7012e-01,\n\t-9.7751e-02,  4.9143e-01,  1.0988e-01,\n\t 8.4055e-02, -7.3187e-03, -9.8808e-02,\n\t 5.0590e-02, -8.9291e-02, -6.6857e-02,\n\t 9.6737e-02, -3.0699e-01,  2.2889e-01,\n\t 2.6727e-40, -5.2704e-40, -4.5038e-40,\n\t-3.3108e-40,  5.2330e-40, -1.2724e-40,\n\t-3.2957e-40, -5.8613e-40,  2.1618e-40,\n\t-4.3882e-40, -3.3950e-40,  5.9372e-40,\n\t 2.7277e-40, -1.3741e-40, -3.3597e-40,\n\t 5.0687e-40,  4.7873e-40, -3.2116e-40,\n\t-6.1388e-40, -6.0790e-40, -5.2667e-40,\n\t-5.6524e-40, -6.1696e-40, -5.9796e-40,\n\t 1.5824e-40, -5.2002e-40, -5.8960e-40,\n\t-5.9860e-40,  3.6419e-40,  2.9975e-40,\n\t-5.8988e-40,  3.3994e-40, -5.0611e-40,\n\t 3.6410e-40,  2.9550e-40,  4.7468e-40,\n\t 2.7503e-40, -3.4103e-40,  6.0339e-40,\n\t-1.7691e-40,  6.7170e-41,  1.7101e-40,\n\t 2.7166e-40,  4.3023e-40,  2.7735e-40,\n\t-3.1937e-40, -4.9247e-40, -6.2495e-40,\n\t 5.2938e-40, -3.3702e-40,  1.4976e-41,\n\t 1.4031e-40, -4.6995e-40, -5.2409e-40,\n\t 2.5460e-40,  2.6670e-40, -4.5339e-40,\n\t 4.2896e-40, -5.7141e-40, -1.7003e-40,\n\t 2.3597e-40,  1.3748e-40,  4.6163e-40,\n\t 4.0680e-41, -6.1642e-40,  2.7304e-41,\n\t 5.2250e-40, -3.9481e-40, -6.1808e-40,\n\t 1.9462e-40,  2.6005e-40, -2.7281e-40\n};\n\nconst static MF4 biasLB = { -8.1892e-04, 3.3171e-03, -1.1582e-02, -4.1205e-40 };\n\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 tl2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 target1 = biasLA;\n\ttarget1 = MulAdd(tl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 0], kernelsLA[1 * 72 + 0 * 9 + 0], kernelsLA[2 * 72 + 0 * 9 + 0], kernelsLA[3 * 72 + 0 * 9 + 0], kernelsLA[0 * 72 + 1 * 9 + 0], kernelsLA[1 * 72 + 1 * 9 + 0], kernelsLA[2 * 72 + 1 * 9 + 0], kernelsLA[3 * 72 + 1 * 9 + 0], kernelsLA[0 * 72 + 2 * 9 + 0], kernelsLA[1 * 72 + 2 * 9 + 0], kernelsLA[2 * 72 + 2 * 9 + 0], kernelsLA[3 * 72 + 2 * 9 + 0], kernelsLA[0 * 72 + 3 * 9 + 0], kernelsLA[1 * 72 + 3 * 9 + 0], kernelsLA[2 * 72 + 3 * 9 + 0], kernelsLA[3 * 72 + 3 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 1], kernelsLA[1 * 72 + 0 * 9 + 1], kernelsLA[2 * 72 + 0 * 9 + 1], kernelsLA[3 * 72 + 0 * 9 + 1], kernelsLA[0 * 72 + 1 * 9 + 1], kernelsLA[1 * 72 + 1 * 9 + 1], kernelsLA[2 * 72 + 1 * 9 + 1], kernelsLA[3 * 72 + 1 * 9 + 1], kernelsLA[0 * 72 + 2 * 9 + 1], kernelsLA[1 * 72 + 2 * 9 + 1], kernelsLA[2 * 72 + 2 * 9 + 1], kernelsLA[3 * 72 + 2 * 9 + 1], kernelsLA[0 * 72 + 3 * 9 + 1], kernelsLA[1 * 72 + 3 * 9 + 1], kernelsLA[2 * 72 + 3 * 9 + 1], kernelsLA[3 * 72 + 3 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 2], kernelsLA[1 * 72 + 0 * 9 + 2], kernelsLA[2 * 72 + 0 * 9 + 2], kernelsLA[3 * 72 + 0 * 9 + 2], kernelsLA[0 * 72 + 1 * 9 + 2], kernelsLA[1 * 72 + 1 * 9 + 2], kernelsLA[2 * 72 + 1 * 9 + 2], kernelsLA[3 * 72 + 1 * 9 + 2], kernelsLA[0 * 72 + 2 * 9 + 2], kernelsLA[1 * 72 + 2 * 9 + 2], kernelsLA[2 * 72 + 2 * 9 + 2], kernelsLA[3 * 72 + 2 * 9 + 2], kernelsLA[0 * 72 + 3 * 9 + 2], kernelsLA[1 * 72 + 3 * 9 + 2], kernelsLA[2 * 72 + 3 * 9 + 2], kernelsLA[3 * 72 + 3 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 3], kernelsLA[1 * 72 + 0 * 9 + 3], kernelsLA[2 * 72 + 0 * 9 + 3], kernelsLA[3 * 72 + 0 * 9 + 3], kernelsLA[0 * 72 + 1 * 9 + 3], kernelsLA[1 * 72 + 1 * 9 + 3], kernelsLA[2 * 72 + 1 * 9 + 3], kernelsLA[3 * 72 + 1 * 9 + 3], kernelsLA[0 * 72 + 2 * 9 + 3], kernelsLA[1 * 72 + 2 * 9 + 3], kernelsLA[2 * 72 + 2 * 9 + 3], kernelsLA[3 * 72 + 2 * 9 + 3], kernelsLA[0 * 72 + 3 * 9 + 3], kernelsLA[1 * 72 + 3 * 9 + 3], kernelsLA[2 * 72 + 3 * 9 + 3], kernelsLA[3 * 72 + 3 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 4], kernelsLA[1 * 72 + 0 * 9 + 4], kernelsLA[2 * 72 + 0 * 9 + 4], kernelsLA[3 * 72 + 0 * 9 + 4], kernelsLA[0 * 72 + 1 * 9 + 4], kernelsLA[1 * 72 + 1 * 9 + 4], kernelsLA[2 * 72 + 1 * 9 + 4], kernelsLA[3 * 72 + 1 * 9 + 4], kernelsLA[0 * 72 + 2 * 9 + 4], kernelsLA[1 * 72 + 2 * 9 + 4], kernelsLA[2 * 72 + 2 * 9 + 4], kernelsLA[3 * 72 + 2 * 9 + 4], kernelsLA[0 * 72 + 3 * 9 + 4], kernelsLA[1 * 72 + 3 * 9 + 4], kernelsLA[2 * 72 + 3 * 9 + 4], kernelsLA[3 * 72 + 3 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 5], kernelsLA[1 * 72 + 0 * 9 + 5], kernelsLA[2 * 72 + 0 * 9 + 5], kernelsLA[3 * 72 + 0 * 9 + 5], kernelsLA[0 * 72 + 1 * 9 + 5], kernelsLA[1 * 72 + 1 * 9 + 5], kernelsLA[2 * 72 + 1 * 9 + 5], kernelsLA[3 * 72 + 1 * 9 + 5], kernelsLA[0 * 72 + 2 * 9 + 5], kernelsLA[1 * 72 + 2 * 9 + 5], kernelsLA[2 * 72 + 2 * 9 + 5], kernelsLA[3 * 72 + 2 * 9 + 5], kernelsLA[0 * 72 + 3 * 9 + 5], kernelsLA[1 * 72 + 3 * 9 + 5], kernelsLA[2 * 72 + 3 * 9 + 5], kernelsLA[3 * 72 + 3 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 6], kernelsLA[1 * 72 + 0 * 9 + 6], kernelsLA[2 * 72 + 0 * 9 + 6], kernelsLA[3 * 72 + 0 * 9 + 6], kernelsLA[0 * 72 + 1 * 9 + 6], kernelsLA[1 * 72 + 1 * 9 + 6], kernelsLA[2 * 72 + 1 * 9 + 6], kernelsLA[3 * 72 + 1 * 9 + 6], kernelsLA[0 * 72 + 2 * 9 + 6], kernelsLA[1 * 72 + 2 * 9 + 6], kernelsLA[2 * 72 + 2 * 9 + 6], kernelsLA[3 * 72 + 2 * 9 + 6], kernelsLA[0 * 72 + 3 * 9 + 6], kernelsLA[1 * 72 + 3 * 9 + 6], kernelsLA[2 * 72 + 3 * 9 + 6], kernelsLA[3 * 72 + 3 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 7], kernelsLA[1 * 72 + 0 * 9 + 7], kernelsLA[2 * 72 + 0 * 9 + 7], kernelsLA[3 * 72 + 0 * 9 + 7], kernelsLA[0 * 72 + 1 * 9 + 7], kernelsLA[1 * 72 + 1 * 9 + 7], kernelsLA[2 * 72 + 1 * 9 + 7], kernelsLA[3 * 72 + 1 * 9 + 7], kernelsLA[0 * 72 + 2 * 9 + 7], kernelsLA[1 * 72 + 2 * 9 + 7], kernelsLA[2 * 72 + 2 * 9 + 7], kernelsLA[3 * 72 + 2 * 9 + 7], kernelsLA[0 * 72 + 3 * 9 + 7], kernelsLA[1 * 72 + 3 * 9 + 7], kernelsLA[2 * 72 + 3 * 9 + 7], kernelsLA[3 * 72 + 3 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 8], kernelsLA[1 * 72 + 0 * 9 + 8], kernelsLA[2 * 72 + 0 * 9 + 8], kernelsLA[3 * 72 + 0 * 9 + 8], kernelsLA[0 * 72 + 1 * 9 + 8], kernelsLA[1 * 72 + 1 * 9 + 8], kernelsLA[2 * 72 + 1 * 9 + 8], kernelsLA[3 * 72 + 1 * 9 + 8], kernelsLA[0 * 72 + 2 * 9 + 8], kernelsLA[1 * 72 + 2 * 9 + 8], kernelsLA[2 * 72 + 2 * 9 + 8], kernelsLA[3 * 72 + 2 * 9 + 8], kernelsLA[0 * 72 + 3 * 9 + 8], kernelsLA[1 * 72 + 3 * 9 + 8], kernelsLA[2 * 72 + 3 * 9 + 8], kernelsLA[3 * 72 + 3 * 9 + 8]), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 0], kernelsLA[1 * 72 + 4 * 9 + 0], kernelsLA[2 * 72 + 4 * 9 + 0], kernelsLA[3 * 72 + 4 * 9 + 0], kernelsLA[0 * 72 + 5 * 9 + 0], kernelsLA[1 * 72 + 5 * 9 + 0], kernelsLA[2 * 72 + 5 * 9 + 0], kernelsLA[3 * 72 + 5 * 9 + 0], kernelsLA[0 * 72 + 6 * 9 + 0], kernelsLA[1 * 72 + 6 * 9 + 0], kernelsLA[2 * 72 + 6 * 9 + 0], kernelsLA[3 * 72 + 6 * 9 + 0], kernelsLA[0 * 72 + 7 * 9 + 0], kernelsLA[1 * 72 + 7 * 9 + 0], kernelsLA[2 * 72 + 7 * 9 + 0], kernelsLA[3 * 72 + 7 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 1], kernelsLA[1 * 72 + 4 * 9 + 1], kernelsLA[2 * 72 + 4 * 9 + 1], kernelsLA[3 * 72 + 4 * 9 + 1], kernelsLA[0 * 72 + 5 * 9 + 1], kernelsLA[1 * 72 + 5 * 9 + 1], kernelsLA[2 * 72 + 5 * 9 + 1], kernelsLA[3 * 72 + 5 * 9 + 1], kernelsLA[0 * 72 + 6 * 9 + 1], kernelsLA[1 * 72 + 6 * 9 + 1], kernelsLA[2 * 72 + 6 * 9 + 1], kernelsLA[3 * 72 + 6 * 9 + 1], kernelsLA[0 * 72 + 7 * 9 + 1], kernelsLA[1 * 72 + 7 * 9 + 1], kernelsLA[2 * 72 + 7 * 9 + 1], kernelsLA[3 * 72 + 7 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 2], kernelsLA[1 * 72 + 4 * 9 + 2], kernelsLA[2 * 72 + 4 * 9 + 2], kernelsLA[3 * 72 + 4 * 9 + 2], kernelsLA[0 * 72 + 5 * 9 + 2], kernelsLA[1 * 72 + 5 * 9 + 2], kernelsLA[2 * 72 + 5 * 9 + 2], kernelsLA[3 * 72 + 5 * 9 + 2], kernelsLA[0 * 72 + 6 * 9 + 2], kernelsLA[1 * 72 + 6 * 9 + 2], kernelsLA[2 * 72 + 6 * 9 + 2], kernelsLA[3 * 72 + 6 * 9 + 2], kernelsLA[0 * 72 + 7 * 9 + 2], kernelsLA[1 * 72 + 7 * 9 + 2], kernelsLA[2 * 72 + 7 * 9 + 2], kernelsLA[3 * 72 + 7 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 3], kernelsLA[1 * 72 + 4 * 9 + 3], kernelsLA[2 * 72 + 4 * 9 + 3], kernelsLA[3 * 72 + 4 * 9 + 3], kernelsLA[0 * 72 + 5 * 9 + 3], kernelsLA[1 * 72 + 5 * 9 + 3], kernelsLA[2 * 72 + 5 * 9 + 3], kernelsLA[3 * 72 + 5 * 9 + 3], kernelsLA[0 * 72 + 6 * 9 + 3], kernelsLA[1 * 72 + 6 * 9 + 3], kernelsLA[2 * 72 + 6 * 9 + 3], kernelsLA[3 * 72 + 6 * 9 + 3], kernelsLA[0 * 72 + 7 * 9 + 3], kernelsLA[1 * 72 + 7 * 9 + 3], kernelsLA[2 * 72 + 7 * 9 + 3], kernelsLA[3 * 72 + 7 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 4], kernelsLA[1 * 72 + 4 * 9 + 4], kernelsLA[2 * 72 + 4 * 9 + 4], kernelsLA[3 * 72 + 4 * 9 + 4], kernelsLA[0 * 72 + 5 * 9 + 4], kernelsLA[1 * 72 + 5 * 9 + 4], kernelsLA[2 * 72 + 5 * 9 + 4], kernelsLA[3 * 72 + 5 * 9 + 4], kernelsLA[0 * 72 + 6 * 9 + 4], kernelsLA[1 * 72 + 6 * 9 + 4], kernelsLA[2 * 72 + 6 * 9 + 4], kernelsLA[3 * 72 + 6 * 9 + 4], kernelsLA[0 * 72 + 7 * 9 + 4], kernelsLA[1 * 72 + 7 * 9 + 4], kernelsLA[2 * 72 + 7 * 9 + 4], kernelsLA[3 * 72 + 7 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 5], kernelsLA[1 * 72 + 4 * 9 + 5], kernelsLA[2 * 72 + 4 * 9 + 5], kernelsLA[3 * 72 + 4 * 9 + 5], kernelsLA[0 * 72 + 5 * 9 + 5], kernelsLA[1 * 72 + 5 * 9 + 5], kernelsLA[2 * 72 + 5 * 9 + 5], kernelsLA[3 * 72 + 5 * 9 + 5], kernelsLA[0 * 72 + 6 * 9 + 5], kernelsLA[1 * 72 + 6 * 9 + 5], kernelsLA[2 * 72 + 6 * 9 + 5], kernelsLA[3 * 72 + 6 * 9 + 5], kernelsLA[0 * 72 + 7 * 9 + 5], kernelsLA[1 * 72 + 7 * 9 + 5], kernelsLA[2 * 72 + 7 * 9 + 5], kernelsLA[3 * 72 + 7 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 6], kernelsLA[1 * 72 + 4 * 9 + 6], kernelsLA[2 * 72 + 4 * 9 + 6], kernelsLA[3 * 72 + 4 * 9 + 6], kernelsLA[0 * 72 + 5 * 9 + 6], kernelsLA[1 * 72 + 5 * 9 + 6], kernelsLA[2 * 72 + 5 * 9 + 6], kernelsLA[3 * 72 + 5 * 9 + 6], kernelsLA[0 * 72 + 6 * 9 + 6], kernelsLA[1 * 72 + 6 * 9 + 6], kernelsLA[2 * 72 + 6 * 9 + 6], kernelsLA[3 * 72 + 6 * 9 + 6], kernelsLA[0 * 72 + 7 * 9 + 6], kernelsLA[1 * 72 + 7 * 9 + 6], kernelsLA[2 * 72 + 7 * 9 + 6], kernelsLA[3 * 72 + 7 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 7], kernelsLA[1 * 72 + 4 * 9 + 7], kernelsLA[2 * 72 + 4 * 9 + 7], kernelsLA[3 * 72 + 4 * 9 + 7], kernelsLA[0 * 72 + 5 * 9 + 7], kernelsLA[1 * 72 + 5 * 9 + 7], kernelsLA[2 * 72 + 5 * 9 + 7], kernelsLA[3 * 72 + 5 * 9 + 7], kernelsLA[0 * 72 + 6 * 9 + 7], kernelsLA[1 * 72 + 6 * 9 + 7], kernelsLA[2 * 72 + 6 * 9 + 7], kernelsLA[3 * 72 + 6 * 9 + 7], kernelsLA[0 * 72 + 7 * 9 + 7], kernelsLA[1 * 72 + 7 * 9 + 7], kernelsLA[2 * 72 + 7 * 9 + 7], kernelsLA[3 * 72 + 7 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 8], kernelsLA[1 * 72 + 4 * 9 + 8], kernelsLA[2 * 72 + 4 * 9 + 8], kernelsLA[3 * 72 + 4 * 9 + 8], kernelsLA[0 * 72 + 5 * 9 + 8], kernelsLA[1 * 72 + 5 * 9 + 8], kernelsLA[2 * 72 + 5 * 9 + 8], kernelsLA[3 * 72 + 5 * 9 + 8], kernelsLA[0 * 72 + 6 * 9 + 8], kernelsLA[1 * 72 + 6 * 9 + 8], kernelsLA[2 * 72 + 6 * 9 + 8], kernelsLA[3 * 72 + 6 * 9 + 8], kernelsLA[0 * 72 + 7 * 9 + 8], kernelsLA[1 * 72 + 7 * 9 + 8], kernelsLA[2 * 72 + 7 * 9 + 8], kernelsLA[3 * 72 + 7 * 9 + 8]), target1);\n\ttarget1 = RELU(target1);\n\n\tMF4 target2 = biasLB;\n\ttarget2 = MulAdd(tl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 0], kernelsLB[1 * 72 + 0 * 9 + 0], kernelsLB[2 * 72 + 0 * 9 + 0], kernelsLB[3 * 72 + 0 * 9 + 0], kernelsLB[0 * 72 + 1 * 9 + 0], kernelsLB[1 * 72 + 1 * 9 + 0], kernelsLB[2 * 72 + 1 * 9 + 0], kernelsLB[3 * 72 + 1 * 9 + 0], kernelsLB[0 * 72 + 2 * 9 + 0], kernelsLB[1 * 72 + 2 * 9 + 0], kernelsLB[2 * 72 + 2 * 9 + 0], kernelsLB[3 * 72 + 2 * 9 + 0], kernelsLB[0 * 72 + 3 * 9 + 0], kernelsLB[1 * 72 + 3 * 9 + 0], kernelsLB[2 * 72 + 3 * 9 + 0], kernelsLB[3 * 72 + 3 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 1], kernelsLB[1 * 72 + 0 * 9 + 1], kernelsLB[2 * 72 + 0 * 9 + 1], kernelsLB[3 * 72 + 0 * 9 + 1], kernelsLB[0 * 72 + 1 * 9 + 1], kernelsLB[1 * 72 + 1 * 9 + 1], kernelsLB[2 * 72 + 1 * 9 + 1], kernelsLB[3 * 72 + 1 * 9 + 1], kernelsLB[0 * 72 + 2 * 9 + 1], kernelsLB[1 * 72 + 2 * 9 + 1], kernelsLB[2 * 72 + 2 * 9 + 1], kernelsLB[3 * 72 + 2 * 9 + 1], kernelsLB[0 * 72 + 3 * 9 + 1], kernelsLB[1 * 72 + 3 * 9 + 1], kernelsLB[2 * 72 + 3 * 9 + 1], kernelsLB[3 * 72 + 3 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 2], kernelsLB[1 * 72 + 0 * 9 + 2], kernelsLB[2 * 72 + 0 * 9 + 2], kernelsLB[3 * 72 + 0 * 9 + 2], kernelsLB[0 * 72 + 1 * 9 + 2], kernelsLB[1 * 72 + 1 * 9 + 2], kernelsLB[2 * 72 + 1 * 9 + 2], kernelsLB[3 * 72 + 1 * 9 + 2], kernelsLB[0 * 72 + 2 * 9 + 2], kernelsLB[1 * 72 + 2 * 9 + 2], kernelsLB[2 * 72 + 2 * 9 + 2], kernelsLB[3 * 72 + 2 * 9 + 2], kernelsLB[0 * 72 + 3 * 9 + 2], kernelsLB[1 * 72 + 3 * 9 + 2], kernelsLB[2 * 72 + 3 * 9 + 2], kernelsLB[3 * 72 + 3 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 3], kernelsLB[1 * 72 + 0 * 9 + 3], kernelsLB[2 * 72 + 0 * 9 + 3], kernelsLB[3 * 72 + 0 * 9 + 3], kernelsLB[0 * 72 + 1 * 9 + 3], kernelsLB[1 * 72 + 1 * 9 + 3], kernelsLB[2 * 72 + 1 * 9 + 3], kernelsLB[3 * 72 + 1 * 9 + 3], kernelsLB[0 * 72 + 2 * 9 + 3], kernelsLB[1 * 72 + 2 * 9 + 3], kernelsLB[2 * 72 + 2 * 9 + 3], kernelsLB[3 * 72 + 2 * 9 + 3], kernelsLB[0 * 72 + 3 * 9 + 3], kernelsLB[1 * 72 + 3 * 9 + 3], kernelsLB[2 * 72 + 3 * 9 + 3], kernelsLB[3 * 72 + 3 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 4], kernelsLB[1 * 72 + 0 * 9 + 4], kernelsLB[2 * 72 + 0 * 9 + 4], kernelsLB[3 * 72 + 0 * 9 + 4], kernelsLB[0 * 72 + 1 * 9 + 4], kernelsLB[1 * 72 + 1 * 9 + 4], kernelsLB[2 * 72 + 1 * 9 + 4], kernelsLB[3 * 72 + 1 * 9 + 4], kernelsLB[0 * 72 + 2 * 9 + 4], kernelsLB[1 * 72 + 2 * 9 + 4], kernelsLB[2 * 72 + 2 * 9 + 4], kernelsLB[3 * 72 + 2 * 9 + 4], kernelsLB[0 * 72 + 3 * 9 + 4], kernelsLB[1 * 72 + 3 * 9 + 4], kernelsLB[2 * 72 + 3 * 9 + 4], kernelsLB[3 * 72 + 3 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 5], kernelsLB[1 * 72 + 0 * 9 + 5], kernelsLB[2 * 72 + 0 * 9 + 5], kernelsLB[3 * 72 + 0 * 9 + 5], kernelsLB[0 * 72 + 1 * 9 + 5], kernelsLB[1 * 72 + 1 * 9 + 5], kernelsLB[2 * 72 + 1 * 9 + 5], kernelsLB[3 * 72 + 1 * 9 + 5], kernelsLB[0 * 72 + 2 * 9 + 5], kernelsLB[1 * 72 + 2 * 9 + 5], kernelsLB[2 * 72 + 2 * 9 + 5], kernelsLB[3 * 72 + 2 * 9 + 5], kernelsLB[0 * 72 + 3 * 9 + 5], kernelsLB[1 * 72 + 3 * 9 + 5], kernelsLB[2 * 72 + 3 * 9 + 5], kernelsLB[3 * 72 + 3 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 6], kernelsLB[1 * 72 + 0 * 9 + 6], kernelsLB[2 * 72 + 0 * 9 + 6], kernelsLB[3 * 72 + 0 * 9 + 6], kernelsLB[0 * 72 + 1 * 9 + 6], kernelsLB[1 * 72 + 1 * 9 + 6], kernelsLB[2 * 72 + 1 * 9 + 6], kernelsLB[3 * 72 + 1 * 9 + 6], kernelsLB[0 * 72 + 2 * 9 + 6], kernelsLB[1 * 72 + 2 * 9 + 6], kernelsLB[2 * 72 + 2 * 9 + 6], kernelsLB[3 * 72 + 2 * 9 + 6], kernelsLB[0 * 72 + 3 * 9 + 6], kernelsLB[1 * 72 + 3 * 9 + 6], kernelsLB[2 * 72 + 3 * 9 + 6], kernelsLB[3 * 72 + 3 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 7], kernelsLB[1 * 72 + 0 * 9 + 7], kernelsLB[2 * 72 + 0 * 9 + 7], kernelsLB[3 * 72 + 0 * 9 + 7], kernelsLB[0 * 72 + 1 * 9 + 7], kernelsLB[1 * 72 + 1 * 9 + 7], kernelsLB[2 * 72 + 1 * 9 + 7], kernelsLB[3 * 72 + 1 * 9 + 7], kernelsLB[0 * 72 + 2 * 9 + 7], kernelsLB[1 * 72 + 2 * 9 + 7], kernelsLB[2 * 72 + 2 * 9 + 7], kernelsLB[3 * 72 + 2 * 9 + 7], kernelsLB[0 * 72 + 3 * 9 + 7], kernelsLB[1 * 72 + 3 * 9 + 7], kernelsLB[2 * 72 + 3 * 9 + 7], kernelsLB[3 * 72 + 3 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 8], kernelsLB[1 * 72 + 0 * 9 + 8], kernelsLB[2 * 72 + 0 * 9 + 8], kernelsLB[3 * 72 + 0 * 9 + 8], kernelsLB[0 * 72 + 1 * 9 + 8], kernelsLB[1 * 72 + 1 * 9 + 8], kernelsLB[2 * 72 + 1 * 9 + 8], kernelsLB[3 * 72 + 1 * 9 + 8], kernelsLB[0 * 72 + 2 * 9 + 8], kernelsLB[1 * 72 + 2 * 9 + 8], kernelsLB[2 * 72 + 2 * 9 + 8], kernelsLB[3 * 72 + 2 * 9 + 8], kernelsLB[0 * 72 + 3 * 9 + 8], kernelsLB[1 * 72 + 3 * 9 + 8], kernelsLB[2 * 72 + 3 * 9 + 8], kernelsLB[3 * 72 + 3 * 9 + 8]), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 0], kernelsLB[1 * 72 + 4 * 9 + 0], kernelsLB[2 * 72 + 4 * 9 + 0], kernelsLB[3 * 72 + 4 * 9 + 0], kernelsLB[0 * 72 + 5 * 9 + 0], kernelsLB[1 * 72 + 5 * 9 + 0], kernelsLB[2 * 72 + 5 * 9 + 0], kernelsLB[3 * 72 + 5 * 9 + 0], kernelsLB[0 * 72 + 6 * 9 + 0], kernelsLB[1 * 72 + 6 * 9 + 0], kernelsLB[2 * 72 + 6 * 9 + 0], kernelsLB[3 * 72 + 6 * 9 + 0], kernelsLB[0 * 72 + 7 * 9 + 0], kernelsLB[1 * 72 + 7 * 9 + 0], kernelsLB[2 * 72 + 7 * 9 + 0], kernelsLB[3 * 72 + 7 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 1], kernelsLB[1 * 72 + 4 * 9 + 1], kernelsLB[2 * 72 + 4 * 9 + 1], kernelsLB[3 * 72 + 4 * 9 + 1], kernelsLB[0 * 72 + 5 * 9 + 1], kernelsLB[1 * 72 + 5 * 9 + 1], kernelsLB[2 * 72 + 5 * 9 + 1], kernelsLB[3 * 72 + 5 * 9 + 1], kernelsLB[0 * 72 + 6 * 9 + 1], kernelsLB[1 * 72 + 6 * 9 + 1], kernelsLB[2 * 72 + 6 * 9 + 1], kernelsLB[3 * 72 + 6 * 9 + 1], kernelsLB[0 * 72 + 7 * 9 + 1], kernelsLB[1 * 72 + 7 * 9 + 1], kernelsLB[2 * 72 + 7 * 9 + 1], kernelsLB[3 * 72 + 7 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 2], kernelsLB[1 * 72 + 4 * 9 + 2], kernelsLB[2 * 72 + 4 * 9 + 2], kernelsLB[3 * 72 + 4 * 9 + 2], kernelsLB[0 * 72 + 5 * 9 + 2], kernelsLB[1 * 72 + 5 * 9 + 2], kernelsLB[2 * 72 + 5 * 9 + 2], kernelsLB[3 * 72 + 5 * 9 + 2], kernelsLB[0 * 72 + 6 * 9 + 2], kernelsLB[1 * 72 + 6 * 9 + 2], kernelsLB[2 * 72 + 6 * 9 + 2], kernelsLB[3 * 72 + 6 * 9 + 2], kernelsLB[0 * 72 + 7 * 9 + 2], kernelsLB[1 * 72 + 7 * 9 + 2], kernelsLB[2 * 72 + 7 * 9 + 2], kernelsLB[3 * 72 + 7 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 3], kernelsLB[1 * 72 + 4 * 9 + 3], kernelsLB[2 * 72 + 4 * 9 + 3], kernelsLB[3 * 72 + 4 * 9 + 3], kernelsLB[0 * 72 + 5 * 9 + 3], kernelsLB[1 * 72 + 5 * 9 + 3], kernelsLB[2 * 72 + 5 * 9 + 3], kernelsLB[3 * 72 + 5 * 9 + 3], kernelsLB[0 * 72 + 6 * 9 + 3], kernelsLB[1 * 72 + 6 * 9 + 3], kernelsLB[2 * 72 + 6 * 9 + 3], kernelsLB[3 * 72 + 6 * 9 + 3], kernelsLB[0 * 72 + 7 * 9 + 3], kernelsLB[1 * 72 + 7 * 9 + 3], kernelsLB[2 * 72 + 7 * 9 + 3], kernelsLB[3 * 72 + 7 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 4], kernelsLB[1 * 72 + 4 * 9 + 4], kernelsLB[2 * 72 + 4 * 9 + 4], kernelsLB[3 * 72 + 4 * 9 + 4], kernelsLB[0 * 72 + 5 * 9 + 4], kernelsLB[1 * 72 + 5 * 9 + 4], kernelsLB[2 * 72 + 5 * 9 + 4], kernelsLB[3 * 72 + 5 * 9 + 4], kernelsLB[0 * 72 + 6 * 9 + 4], kernelsLB[1 * 72 + 6 * 9 + 4], kernelsLB[2 * 72 + 6 * 9 + 4], kernelsLB[3 * 72 + 6 * 9 + 4], kernelsLB[0 * 72 + 7 * 9 + 4], kernelsLB[1 * 72 + 7 * 9 + 4], kernelsLB[2 * 72 + 7 * 9 + 4], kernelsLB[3 * 72 + 7 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 5], kernelsLB[1 * 72 + 4 * 9 + 5], kernelsLB[2 * 72 + 4 * 9 + 5], kernelsLB[3 * 72 + 4 * 9 + 5], kernelsLB[0 * 72 + 5 * 9 + 5], kernelsLB[1 * 72 + 5 * 9 + 5], kernelsLB[2 * 72 + 5 * 9 + 5], kernelsLB[3 * 72 + 5 * 9 + 5], kernelsLB[0 * 72 + 6 * 9 + 5], kernelsLB[1 * 72 + 6 * 9 + 5], kernelsLB[2 * 72 + 6 * 9 + 5], kernelsLB[3 * 72 + 6 * 9 + 5], kernelsLB[0 * 72 + 7 * 9 + 5], kernelsLB[1 * 72 + 7 * 9 + 5], kernelsLB[2 * 72 + 7 * 9 + 5], kernelsLB[3 * 72 + 7 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 6], kernelsLB[1 * 72 + 4 * 9 + 6], kernelsLB[2 * 72 + 4 * 9 + 6], kernelsLB[3 * 72 + 4 * 9 + 6], kernelsLB[0 * 72 + 5 * 9 + 6], kernelsLB[1 * 72 + 5 * 9 + 6], kernelsLB[2 * 72 + 5 * 9 + 6], kernelsLB[3 * 72 + 5 * 9 + 6], kernelsLB[0 * 72 + 6 * 9 + 6], kernelsLB[1 * 72 + 6 * 9 + 6], kernelsLB[2 * 72 + 6 * 9 + 6], kernelsLB[3 * 72 + 6 * 9 + 6], kernelsLB[0 * 72 + 7 * 9 + 6], kernelsLB[1 * 72 + 7 * 9 + 6], kernelsLB[2 * 72 + 7 * 9 + 6], kernelsLB[3 * 72 + 7 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 7], kernelsLB[1 * 72 + 4 * 9 + 7], kernelsLB[2 * 72 + 4 * 9 + 7], kernelsLB[3 * 72 + 4 * 9 + 7], kernelsLB[0 * 72 + 5 * 9 + 7], kernelsLB[1 * 72 + 5 * 9 + 7], kernelsLB[2 * 72 + 5 * 9 + 7], kernelsLB[3 * 72 + 5 * 9 + 7], kernelsLB[0 * 72 + 6 * 9 + 7], kernelsLB[1 * 72 + 6 * 9 + 7], kernelsLB[2 * 72 + 6 * 9 + 7], kernelsLB[3 * 72 + 6 * 9 + 7], kernelsLB[0 * 72 + 7 * 9 + 7], kernelsLB[1 * 72 + 7 * 9 + 7], kernelsLB[2 * 72 + 7 * 9 + 7], kernelsLB[3 * 72 + 7 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 8], kernelsLB[1 * 72 + 4 * 9 + 8], kernelsLB[2 * 72 + 4 * 9 + 8], kernelsLB[3 * 72 + 4 * 9 + 8], kernelsLB[0 * 72 + 5 * 9 + 8], kernelsLB[1 * 72 + 5 * 9 + 8], kernelsLB[2 * 72 + 5 * 9 + 8], kernelsLB[3 * 72 + 5 * 9 + 8], kernelsLB[0 * 72 + 6 * 9 + 8], kernelsLB[1 * 72 + 6 * 9 + 8], kernelsLB[2 * 72 + 6 * 9 + 8], kernelsLB[3 * 72 + 6 * 9 + 8], kernelsLB[0 * 72 + 7 * 9 + 8], kernelsLB[1 * 72 + 7 * 9 + 8], kernelsLB[2 * 72 + 7 * 9 + 8], kernelsLB[3 * 72 + 7 * 9 + 8]), target2);\n\ttarget2 = RELU(target2);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 5\n//!DESC L5\n//!IN tex3, tex4\n//!OUT tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nconst static MF kernelsLA[9 * 8 * 4] = {\n\t 1.3625e-02, -8.5594e-02, -1.9901e-01,\n\t-6.4636e-02, -1.9030e-02,  4.1963e-02,\n\t-7.5507e-02, -2.4474e-01, -4.2621e-02,\n\t 2.8195e-02,  7.3102e-02, -9.3331e-02,\n\t 7.7093e-02,  1.7800e-01, -7.6451e-02,\n\t 2.8565e-02, -1.3540e-01, -1.9169e-01,\n\t-1.8583e-02,  3.0135e-02,  8.1094e-03,\n\t-1.2835e-01, -1.8041e-01, -8.9020e-02,\n\t-8.2731e-02,  3.7861e-02, -9.4014e-02,\n\t 4.6595e-02,  2.2052e-02, -1.5867e-01,\n\t-1.0937e-02,  1.0030e-01, -1.3018e-01,\n\t-9.1844e-02, -1.7508e-01,  2.2087e-01,\n\t-9.3080e-02,  9.8069e-02, -7.0154e-02,\n\t-6.6063e-02, -2.2142e-01,  4.1058e-01,\n\t-6.5947e-02, -5.4662e-02,  9.9412e-02,\n\t-5.1938e-02,  3.0932e-03,  1.8126e-01,\n\t 3.6701e-02, -3.0349e-01,  9.9839e-02,\n\t 2.5810e-02,  2.3644e-01, -2.4461e-01,\n\t 2.1054e-01,  1.5630e-01, -1.9587e-01,\n\t 5.0146e-02, -1.8844e-02,  3.6675e-01,\n\t-4.0389e-03,  3.1596e-01,  3.6771e-03,\n\t-2.2256e-40,  1.4272e-40, -2.0732e-40,\n\t 5.5913e-40, -6.0538e-40,  1.2791e-40,\n\t 4.5825e-41,  4.1080e-41, -1.8211e-40,\n\t 2.2687e-01, -5.8992e-02,  4.7796e-03,\n\t 6.0603e-01,  2.7961e-01,  1.5973e-02,\n\t 2.3035e-01,  1.3031e-01, -9.9280e-03,\n\t-4.7235e-02,  5.1773e-02, -4.8586e-02,\n\t-1.4510e-01, -1.7336e-01,  1.0981e-01,\n\t-2.0303e-01, -1.6008e-02, -1.8524e-03,\n\t-2.3440e-01, -3.2373e-02, -6.7911e-02,\n\t-1.6256e-01,  1.2316e-01,  2.7859e-02,\n\t 8.5089e-04, -3.7401e-02, -1.8672e-02,\n\t-1.0418e-01, -7.8407e-02, -1.8413e-02,\n\t 8.2834e-02,  2.3128e-01,  3.2983e-02,\n\t 3.1099e-02, -6.4485e-02, -8.1659e-02,\n\t 1.9152e-01, -1.9609e-02,  2.7364e-02,\n\t 1.0458e-02, -1.2507e-01,  4.1334e-02,\n\t-4.6215e-02,  5.6944e-02,  2.1477e-02,\n\t-1.4934e-01, -6.8383e-02,  2.7957e-02,\n\t-3.6846e-01,  4.8766e-01,  6.4000e-02,\n\t-3.9621e-02, -8.1667e-03,  4.5997e-02,\n\t-6.1391e-02,  1.2976e-02, -3.2152e-02,\n\t 7.5767e-02,  1.2931e-01, -2.3498e-02,\n\t 4.0320e-02,  1.3876e-02,  1.1022e-02,\n\t-6.2401e-41,  5.8564e-40,  3.9473e-40,\n\t-5.6890e-40, -2.6022e-40, -2.9841e-40,\n\t-4.2456e-40, -1.1546e-40,  4.4955e-40,\n\t-4.2969e-02, -1.0995e-01,  1.3021e-01,\n\t 1.0142e-01,  5.2225e-01, -5.5486e-02,\n\t-7.2349e-02,  8.5470e-02,  2.3438e-02,\n\t-1.0690e-01, -1.4370e-01, -1.2632e-01,\n\t 2.8754e-02,  1.1662e-01,  5.6515e-02,\n\t-1.5726e-01, -1.4945e-01, -4.4956e-02,\n\t 1.6574e-01, -5.6894e-02, -2.0851e-01,\n\t 8.1498e-03, -2.5441e-01, -1.4412e-01,\n\t-1.0959e-02, -2.5811e-02,  8.8934e-02,\n\t 6.3594e-02, -9.3314e-02,  7.8247e-02,\n\t 4.6795e-02, -2.2774e-01,  7.1041e-02,\n\t 1.4830e-01,  1.9911e-01,  5.1978e-02,\n\t 7.4936e-02,  2.3104e-02,  6.3928e-02,\n\t-1.3118e-02,  6.7544e-02,  7.9514e-02,\n\t 2.2335e-02, -9.9442e-02,  6.8070e-03,\n\t 2.4395e-02, -3.3576e-02,  5.5508e-02,\n\t-4.0872e-02,  5.4501e-02, -5.7051e-02,\n\t 8.6621e-03, -1.5361e-01,  1.2630e-01,\n\t-2.2344e-01,  1.3335e-01, -1.1688e-01,\n\t-2.4232e-01,  3.3319e-01, -1.2580e-01,\n\t-2.2169e-02,  2.0594e-01,  2.6521e-02,\n\t 4.1883e-40, -3.4540e-40,  4.9152e-40,\n\t-1.5711e-40,  3.3927e-40, -5.5069e-40,\n\t 5.5831e-40, -5.2011e-41,  1.0351e-40,\n\t 1.7989e-01,  2.3787e-02,  5.7447e-03,\n\t 4.8748e-01,  3.0152e-01,  3.5517e-02,\n\t 2.2155e-01,  1.8812e-01,  3.0994e-02,\n\t 7.8657e-02, -7.1135e-02, -5.8293e-02,\n\t-1.4220e-01,  1.6004e-02, -2.5180e-02,\n\t-1.6811e-01, -2.3441e-01,  1.4810e-02,\n\t 5.3140e-02, -1.2904e-01, -1.5105e-02,\n\t 5.4525e-02, -1.5418e-01,  6.6507e-02,\n\t 8.3947e-02, -1.1975e-01,  5.3902e-02,\n\t 8.0834e-02, -2.4321e-01, -1.0282e-03,\n\t 3.1276e-03,  3.2495e-01, -1.3238e-02,\n\t 4.5285e-02,  5.8777e-02, -1.3231e-01,\n\t-6.0928e-03,  8.7145e-02,  6.2031e-02,\n\t-5.3919e-01, -6.8810e-02, -1.0755e-01,\n\t-2.2571e-02,  2.6237e-02, -6.8731e-03,\n\t-6.6771e-02, -2.0586e-01,  4.7722e-02,\n\t-3.4968e-01,  3.0912e-01,  2.4487e-01,\n\t-4.9537e-02, -5.2779e-04,  6.7840e-02,\n\t 1.7583e-02,  3.3222e-02, -5.7070e-02,\n\t-2.3250e-01,  1.4470e-01, -4.9895e-02,\n\t 3.3147e-02,  8.6319e-02,  4.4719e-02,\n\t-6.9454e-41,  2.0308e-40, -1.1977e-40,\n\t 5.9045e-40, -2.6129e-40,  4.8298e-40,\n\t 4.7288e-40,  6.0736e-40,  2.2462e-40\n};\n\nconst static MF4 biasLA = { -0.0053,  0.0053, -0.0114, -0.0127 };\n\nconst static MF kernelsLB[9 * 8 * 4] = {\n\t-4.0294e-02, -9.1437e-03, -2.4926e-02,\n\t-2.1269e-01,  1.1602e-01,  1.4383e-02,\n\t 5.1456e-02,  6.9047e-02,  1.6519e-02,\n\t 6.3737e-02, -9.0181e-02,  7.0716e-02,\n\t 7.0061e-02,  7.9046e-02, -4.3925e-02,\n\t 7.4396e-02, -5.2797e-02,  3.8125e-02,\n\t 7.5999e-02, -5.1307e-02,  2.4326e-03,\n\t-3.1716e-02, -1.2567e-01, -3.3898e-02,\n\t 8.4925e-02, -5.2404e-02,  2.8535e-02,\n\t 9.6844e-03,  4.6980e-02,  3.8552e-02,\n\t-5.7110e-02,  3.2163e-02,  1.5219e-02,\n\t 6.6905e-02, -2.7934e-02,  1.4184e-03,\n\t-2.4239e-02, -8.6317e-03, -2.3295e-03,\n\t-2.3065e-02,  1.0076e-01,  2.1562e-03,\n\t-1.3647e-02, -3.4262e-02,  2.5777e-02,\n\t 7.6601e-02,  1.3654e-01,  2.1458e-03,\n\t 1.4542e-01,  3.6310e-01,  1.6266e-01,\n\t-5.8465e-02,  4.3751e-02,  1.9227e-02,\n\t 9.1783e-03, -5.9547e-02, -1.8234e-02,\n\t-5.3399e-02,  1.9218e-01, -4.6238e-02,\n\t-1.9052e-01,  1.4635e-02,  2.9536e-02,\n\t 1.4621e-40, -5.5132e-40, -4.6215e-40,\n\t 4.3948e-40, -2.7285e-40, -5.5709e-40,\n\t 1.9428e-41, -4.0333e-40, -5.4469e-40,\n\t 9.3126e-02, -1.3236e-01,  9.9350e-02,\n\t-1.3308e-01,  3.5030e-01,  9.2221e-02,\n\t 1.1783e-01,  1.6648e-01, -7.9150e-02,\n\t 2.2654e-01, -1.2546e-01, -1.2354e-01,\n\t-1.6457e-01, -6.0740e-02, -3.1069e-02,\n\t-8.3203e-02, -1.8064e-01,  4.6900e-02,\n\t 1.2059e-01, -1.0569e-01, -7.1196e-02,\n\t-9.2991e-02, -1.7587e-01,  1.3100e-03,\n\t-1.5492e-01, -1.3849e-01,  1.2245e-01,\n\t-5.5276e-02, -9.7867e-02,  3.5550e-02,\n\t-6.0264e-02,  4.7760e-02,  6.0242e-02,\n\t-5.4096e-03,  2.4646e-01,  6.3592e-01,\n\t 5.8559e-02,  6.1117e-02,  8.0334e-02,\n\t-4.4582e-03, -1.2028e-01,  8.7394e-02,\n\t-2.5880e-02, -1.2206e-01,  1.2199e-01,\n\t 4.1990e-02, -1.3283e-01,  4.9047e-02,\n\t-4.9532e-02,  2.7688e-01, -4.6064e-03,\n\t-2.8812e-03, -2.4404e-01,  5.8614e-02,\n\t-1.4262e-01, -1.2810e-03, -1.2060e-01,\n\t-8.3595e-02,  5.6532e-02, -7.7556e-02,\n\t-1.3364e-01, -1.3883e-01, -1.2335e-01,\n\t-1.3273e-40,  6.5184e-41, -4.6946e-40,\n\t-4.0031e-40, -1.2807e-40, -3.1584e-40,\n\t 1.3009e-40,  2.4187e-40, -1.4202e-40,\n\t-8.8844e-03,  1.0101e-03, -6.0190e-02,\n\t-1.8851e-01, -7.6662e-02, -1.4562e-01,\n\t 2.9983e-02, -8.1533e-02,  1.1256e-02,\n\t 1.0205e-01,  6.7850e-02, -1.0911e-01,\n\t-1.2846e-01, -5.4605e-02,  6.2182e-02,\n\t-1.0797e-01, -5.1281e-02, -1.2036e-02,\n\t-8.1693e-02, -7.0432e-02,  1.6990e-01,\n\t-1.7329e-01, -2.2084e-01, -3.0977e-02,\n\t 8.2771e-02, -3.3089e-01, -1.4842e-01,\n\t 1.9576e-02, -1.5953e-01, -1.0348e-01,\n\t 6.6014e-02,  6.0094e-01, -6.9891e-04,\n\t 7.4969e-02, -1.4250e-01,  4.3221e-02,\n\t 1.6796e-02, -6.8125e-03,  4.7028e-02,\n\t-3.3421e-01, -2.2987e-01,  4.2936e-02,\n\t 9.3985e-04,  9.0827e-02,  2.4211e-01,\n\t-8.1571e-02, -1.0276e-01,  1.9092e-01,\n\t 2.1112e-01,  2.6837e-02, -2.5822e-01,\n\t-1.3290e-01,  1.6135e-01, -2.7672e-02,\n\t 3.4465e-01, -8.3286e-03, -6.1936e-02,\n\t 2.7406e-01, -6.8357e-02,  1.7426e-01,\n\t-9.0872e-02,  1.2999e-01,  7.2366e-02,\n\t 3.0944e-40, -1.2808e-40,  2.9336e-40,\n\t 5.5561e-42,  3.0978e-40,  1.0027e-40,\n\t-1.5881e-40, -2.9858e-40,  3.1599e-41,\n\t-9.1935e-02, -2.2666e-04, -6.2821e-02,\n\t-1.8605e-01,  3.0238e-01,  3.2759e-02,\n\t-5.0771e-02,  1.4585e-02, -1.0872e-01,\n\t 2.5511e-02, -9.3394e-02,  1.4810e-02,\n\t-6.2906e-02,  9.2472e-02,  1.2845e-02,\n\t-2.9041e-01, -9.6489e-03, -2.7277e-02,\n\t-6.9896e-02, -1.1645e-01, -5.9870e-02,\n\t-2.8037e-02, -2.2649e-01,  5.1781e-02,\n\t-1.4588e-02,  4.8753e-02, -2.8256e-02,\n\t-1.6462e-02,  8.0795e-02,  3.6222e-02,\n\t 8.0392e-02,  3.0118e-01,  2.0021e-01,\n\t 1.0394e-01,  6.4196e-01,  4.9545e-01,\n\t 2.1242e-02, -1.2514e-01,  1.0066e-01,\n\t-4.7676e-02, -2.0736e-02, -5.6951e-03,\n\t-8.3021e-02,  4.6763e-02,  1.7551e-01,\n\t 2.0038e-02,  1.8084e-01,  1.3244e-02,\n\t 1.0280e-02,  2.8740e-01,  8.9837e-03,\n\t-2.9437e-02, -3.7366e-01, -1.1861e-01,\n\t-4.8248e-03, -1.2970e-01, -1.8680e-02,\n\t 1.8458e-01,  5.6509e-02,  1.2734e-01,\n\t 1.9423e-01, -3.6960e-01, -2.5555e-02,\n\t 6.7959e-41, -3.2251e-40, -3.0631e-40,\n\t-4.0701e-40,  9.7399e-41,  2.2917e-40,\n\t 2.0169e-40,  5.7891e-40, -4.1286e-40\n};\n\nconst static MF4 biasLB = { -0.0039, -0.0426,  0.0053, -0.0017 };\n\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 tl2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 target1 = biasLA;\n\ttarget1 = MulAdd(tl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 0], kernelsLA[1 * 72 + 0 * 9 + 0], kernelsLA[2 * 72 + 0 * 9 + 0], kernelsLA[3 * 72 + 0 * 9 + 0], kernelsLA[0 * 72 + 1 * 9 + 0], kernelsLA[1 * 72 + 1 * 9 + 0], kernelsLA[2 * 72 + 1 * 9 + 0], kernelsLA[3 * 72 + 1 * 9 + 0], kernelsLA[0 * 72 + 2 * 9 + 0], kernelsLA[1 * 72 + 2 * 9 + 0], kernelsLA[2 * 72 + 2 * 9 + 0], kernelsLA[3 * 72 + 2 * 9 + 0], kernelsLA[0 * 72 + 3 * 9 + 0], kernelsLA[1 * 72 + 3 * 9 + 0], kernelsLA[2 * 72 + 3 * 9 + 0], kernelsLA[3 * 72 + 3 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 1], kernelsLA[1 * 72 + 0 * 9 + 1], kernelsLA[2 * 72 + 0 * 9 + 1], kernelsLA[3 * 72 + 0 * 9 + 1], kernelsLA[0 * 72 + 1 * 9 + 1], kernelsLA[1 * 72 + 1 * 9 + 1], kernelsLA[2 * 72 + 1 * 9 + 1], kernelsLA[3 * 72 + 1 * 9 + 1], kernelsLA[0 * 72 + 2 * 9 + 1], kernelsLA[1 * 72 + 2 * 9 + 1], kernelsLA[2 * 72 + 2 * 9 + 1], kernelsLA[3 * 72 + 2 * 9 + 1], kernelsLA[0 * 72 + 3 * 9 + 1], kernelsLA[1 * 72 + 3 * 9 + 1], kernelsLA[2 * 72 + 3 * 9 + 1], kernelsLA[3 * 72 + 3 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 2], kernelsLA[1 * 72 + 0 * 9 + 2], kernelsLA[2 * 72 + 0 * 9 + 2], kernelsLA[3 * 72 + 0 * 9 + 2], kernelsLA[0 * 72 + 1 * 9 + 2], kernelsLA[1 * 72 + 1 * 9 + 2], kernelsLA[2 * 72 + 1 * 9 + 2], kernelsLA[3 * 72 + 1 * 9 + 2], kernelsLA[0 * 72 + 2 * 9 + 2], kernelsLA[1 * 72 + 2 * 9 + 2], kernelsLA[2 * 72 + 2 * 9 + 2], kernelsLA[3 * 72 + 2 * 9 + 2], kernelsLA[0 * 72 + 3 * 9 + 2], kernelsLA[1 * 72 + 3 * 9 + 2], kernelsLA[2 * 72 + 3 * 9 + 2], kernelsLA[3 * 72 + 3 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 3], kernelsLA[1 * 72 + 0 * 9 + 3], kernelsLA[2 * 72 + 0 * 9 + 3], kernelsLA[3 * 72 + 0 * 9 + 3], kernelsLA[0 * 72 + 1 * 9 + 3], kernelsLA[1 * 72 + 1 * 9 + 3], kernelsLA[2 * 72 + 1 * 9 + 3], kernelsLA[3 * 72 + 1 * 9 + 3], kernelsLA[0 * 72 + 2 * 9 + 3], kernelsLA[1 * 72 + 2 * 9 + 3], kernelsLA[2 * 72 + 2 * 9 + 3], kernelsLA[3 * 72 + 2 * 9 + 3], kernelsLA[0 * 72 + 3 * 9 + 3], kernelsLA[1 * 72 + 3 * 9 + 3], kernelsLA[2 * 72 + 3 * 9 + 3], kernelsLA[3 * 72 + 3 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 4], kernelsLA[1 * 72 + 0 * 9 + 4], kernelsLA[2 * 72 + 0 * 9 + 4], kernelsLA[3 * 72 + 0 * 9 + 4], kernelsLA[0 * 72 + 1 * 9 + 4], kernelsLA[1 * 72 + 1 * 9 + 4], kernelsLA[2 * 72 + 1 * 9 + 4], kernelsLA[3 * 72 + 1 * 9 + 4], kernelsLA[0 * 72 + 2 * 9 + 4], kernelsLA[1 * 72 + 2 * 9 + 4], kernelsLA[2 * 72 + 2 * 9 + 4], kernelsLA[3 * 72 + 2 * 9 + 4], kernelsLA[0 * 72 + 3 * 9 + 4], kernelsLA[1 * 72 + 3 * 9 + 4], kernelsLA[2 * 72 + 3 * 9 + 4], kernelsLA[3 * 72 + 3 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 5], kernelsLA[1 * 72 + 0 * 9 + 5], kernelsLA[2 * 72 + 0 * 9 + 5], kernelsLA[3 * 72 + 0 * 9 + 5], kernelsLA[0 * 72 + 1 * 9 + 5], kernelsLA[1 * 72 + 1 * 9 + 5], kernelsLA[2 * 72 + 1 * 9 + 5], kernelsLA[3 * 72 + 1 * 9 + 5], kernelsLA[0 * 72 + 2 * 9 + 5], kernelsLA[1 * 72 + 2 * 9 + 5], kernelsLA[2 * 72 + 2 * 9 + 5], kernelsLA[3 * 72 + 2 * 9 + 5], kernelsLA[0 * 72 + 3 * 9 + 5], kernelsLA[1 * 72 + 3 * 9 + 5], kernelsLA[2 * 72 + 3 * 9 + 5], kernelsLA[3 * 72 + 3 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 6], kernelsLA[1 * 72 + 0 * 9 + 6], kernelsLA[2 * 72 + 0 * 9 + 6], kernelsLA[3 * 72 + 0 * 9 + 6], kernelsLA[0 * 72 + 1 * 9 + 6], kernelsLA[1 * 72 + 1 * 9 + 6], kernelsLA[2 * 72 + 1 * 9 + 6], kernelsLA[3 * 72 + 1 * 9 + 6], kernelsLA[0 * 72 + 2 * 9 + 6], kernelsLA[1 * 72 + 2 * 9 + 6], kernelsLA[2 * 72 + 2 * 9 + 6], kernelsLA[3 * 72 + 2 * 9 + 6], kernelsLA[0 * 72 + 3 * 9 + 6], kernelsLA[1 * 72 + 3 * 9 + 6], kernelsLA[2 * 72 + 3 * 9 + 6], kernelsLA[3 * 72 + 3 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 7], kernelsLA[1 * 72 + 0 * 9 + 7], kernelsLA[2 * 72 + 0 * 9 + 7], kernelsLA[3 * 72 + 0 * 9 + 7], kernelsLA[0 * 72 + 1 * 9 + 7], kernelsLA[1 * 72 + 1 * 9 + 7], kernelsLA[2 * 72 + 1 * 9 + 7], kernelsLA[3 * 72 + 1 * 9 + 7], kernelsLA[0 * 72 + 2 * 9 + 7], kernelsLA[1 * 72 + 2 * 9 + 7], kernelsLA[2 * 72 + 2 * 9 + 7], kernelsLA[3 * 72 + 2 * 9 + 7], kernelsLA[0 * 72 + 3 * 9 + 7], kernelsLA[1 * 72 + 3 * 9 + 7], kernelsLA[2 * 72 + 3 * 9 + 7], kernelsLA[3 * 72 + 3 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 8], kernelsLA[1 * 72 + 0 * 9 + 8], kernelsLA[2 * 72 + 0 * 9 + 8], kernelsLA[3 * 72 + 0 * 9 + 8], kernelsLA[0 * 72 + 1 * 9 + 8], kernelsLA[1 * 72 + 1 * 9 + 8], kernelsLA[2 * 72 + 1 * 9 + 8], kernelsLA[3 * 72 + 1 * 9 + 8], kernelsLA[0 * 72 + 2 * 9 + 8], kernelsLA[1 * 72 + 2 * 9 + 8], kernelsLA[2 * 72 + 2 * 9 + 8], kernelsLA[3 * 72 + 2 * 9 + 8], kernelsLA[0 * 72 + 3 * 9 + 8], kernelsLA[1 * 72 + 3 * 9 + 8], kernelsLA[2 * 72 + 3 * 9 + 8], kernelsLA[3 * 72 + 3 * 9 + 8]), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 0], kernelsLA[1 * 72 + 4 * 9 + 0], kernelsLA[2 * 72 + 4 * 9 + 0], kernelsLA[3 * 72 + 4 * 9 + 0], kernelsLA[0 * 72 + 5 * 9 + 0], kernelsLA[1 * 72 + 5 * 9 + 0], kernelsLA[2 * 72 + 5 * 9 + 0], kernelsLA[3 * 72 + 5 * 9 + 0], kernelsLA[0 * 72 + 6 * 9 + 0], kernelsLA[1 * 72 + 6 * 9 + 0], kernelsLA[2 * 72 + 6 * 9 + 0], kernelsLA[3 * 72 + 6 * 9 + 0], kernelsLA[0 * 72 + 7 * 9 + 0], kernelsLA[1 * 72 + 7 * 9 + 0], kernelsLA[2 * 72 + 7 * 9 + 0], kernelsLA[3 * 72 + 7 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 1], kernelsLA[1 * 72 + 4 * 9 + 1], kernelsLA[2 * 72 + 4 * 9 + 1], kernelsLA[3 * 72 + 4 * 9 + 1], kernelsLA[0 * 72 + 5 * 9 + 1], kernelsLA[1 * 72 + 5 * 9 + 1], kernelsLA[2 * 72 + 5 * 9 + 1], kernelsLA[3 * 72 + 5 * 9 + 1], kernelsLA[0 * 72 + 6 * 9 + 1], kernelsLA[1 * 72 + 6 * 9 + 1], kernelsLA[2 * 72 + 6 * 9 + 1], kernelsLA[3 * 72 + 6 * 9 + 1], kernelsLA[0 * 72 + 7 * 9 + 1], kernelsLA[1 * 72 + 7 * 9 + 1], kernelsLA[2 * 72 + 7 * 9 + 1], kernelsLA[3 * 72 + 7 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 2], kernelsLA[1 * 72 + 4 * 9 + 2], kernelsLA[2 * 72 + 4 * 9 + 2], kernelsLA[3 * 72 + 4 * 9 + 2], kernelsLA[0 * 72 + 5 * 9 + 2], kernelsLA[1 * 72 + 5 * 9 + 2], kernelsLA[2 * 72 + 5 * 9 + 2], kernelsLA[3 * 72 + 5 * 9 + 2], kernelsLA[0 * 72 + 6 * 9 + 2], kernelsLA[1 * 72 + 6 * 9 + 2], kernelsLA[2 * 72 + 6 * 9 + 2], kernelsLA[3 * 72 + 6 * 9 + 2], kernelsLA[0 * 72 + 7 * 9 + 2], kernelsLA[1 * 72 + 7 * 9 + 2], kernelsLA[2 * 72 + 7 * 9 + 2], kernelsLA[3 * 72 + 7 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 3], kernelsLA[1 * 72 + 4 * 9 + 3], kernelsLA[2 * 72 + 4 * 9 + 3], kernelsLA[3 * 72 + 4 * 9 + 3], kernelsLA[0 * 72 + 5 * 9 + 3], kernelsLA[1 * 72 + 5 * 9 + 3], kernelsLA[2 * 72 + 5 * 9 + 3], kernelsLA[3 * 72 + 5 * 9 + 3], kernelsLA[0 * 72 + 6 * 9 + 3], kernelsLA[1 * 72 + 6 * 9 + 3], kernelsLA[2 * 72 + 6 * 9 + 3], kernelsLA[3 * 72 + 6 * 9 + 3], kernelsLA[0 * 72 + 7 * 9 + 3], kernelsLA[1 * 72 + 7 * 9 + 3], kernelsLA[2 * 72 + 7 * 9 + 3], kernelsLA[3 * 72 + 7 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 4], kernelsLA[1 * 72 + 4 * 9 + 4], kernelsLA[2 * 72 + 4 * 9 + 4], kernelsLA[3 * 72 + 4 * 9 + 4], kernelsLA[0 * 72 + 5 * 9 + 4], kernelsLA[1 * 72 + 5 * 9 + 4], kernelsLA[2 * 72 + 5 * 9 + 4], kernelsLA[3 * 72 + 5 * 9 + 4], kernelsLA[0 * 72 + 6 * 9 + 4], kernelsLA[1 * 72 + 6 * 9 + 4], kernelsLA[2 * 72 + 6 * 9 + 4], kernelsLA[3 * 72 + 6 * 9 + 4], kernelsLA[0 * 72 + 7 * 9 + 4], kernelsLA[1 * 72 + 7 * 9 + 4], kernelsLA[2 * 72 + 7 * 9 + 4], kernelsLA[3 * 72 + 7 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 5], kernelsLA[1 * 72 + 4 * 9 + 5], kernelsLA[2 * 72 + 4 * 9 + 5], kernelsLA[3 * 72 + 4 * 9 + 5], kernelsLA[0 * 72 + 5 * 9 + 5], kernelsLA[1 * 72 + 5 * 9 + 5], kernelsLA[2 * 72 + 5 * 9 + 5], kernelsLA[3 * 72 + 5 * 9 + 5], kernelsLA[0 * 72 + 6 * 9 + 5], kernelsLA[1 * 72 + 6 * 9 + 5], kernelsLA[2 * 72 + 6 * 9 + 5], kernelsLA[3 * 72 + 6 * 9 + 5], kernelsLA[0 * 72 + 7 * 9 + 5], kernelsLA[1 * 72 + 7 * 9 + 5], kernelsLA[2 * 72 + 7 * 9 + 5], kernelsLA[3 * 72 + 7 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 6], kernelsLA[1 * 72 + 4 * 9 + 6], kernelsLA[2 * 72 + 4 * 9 + 6], kernelsLA[3 * 72 + 4 * 9 + 6], kernelsLA[0 * 72 + 5 * 9 + 6], kernelsLA[1 * 72 + 5 * 9 + 6], kernelsLA[2 * 72 + 5 * 9 + 6], kernelsLA[3 * 72 + 5 * 9 + 6], kernelsLA[0 * 72 + 6 * 9 + 6], kernelsLA[1 * 72 + 6 * 9 + 6], kernelsLA[2 * 72 + 6 * 9 + 6], kernelsLA[3 * 72 + 6 * 9 + 6], kernelsLA[0 * 72 + 7 * 9 + 6], kernelsLA[1 * 72 + 7 * 9 + 6], kernelsLA[2 * 72 + 7 * 9 + 6], kernelsLA[3 * 72 + 7 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 7], kernelsLA[1 * 72 + 4 * 9 + 7], kernelsLA[2 * 72 + 4 * 9 + 7], kernelsLA[3 * 72 + 4 * 9 + 7], kernelsLA[0 * 72 + 5 * 9 + 7], kernelsLA[1 * 72 + 5 * 9 + 7], kernelsLA[2 * 72 + 5 * 9 + 7], kernelsLA[3 * 72 + 5 * 9 + 7], kernelsLA[0 * 72 + 6 * 9 + 7], kernelsLA[1 * 72 + 6 * 9 + 7], kernelsLA[2 * 72 + 6 * 9 + 7], kernelsLA[3 * 72 + 6 * 9 + 7], kernelsLA[0 * 72 + 7 * 9 + 7], kernelsLA[1 * 72 + 7 * 9 + 7], kernelsLA[2 * 72 + 7 * 9 + 7], kernelsLA[3 * 72 + 7 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 8], kernelsLA[1 * 72 + 4 * 9 + 8], kernelsLA[2 * 72 + 4 * 9 + 8], kernelsLA[3 * 72 + 4 * 9 + 8], kernelsLA[0 * 72 + 5 * 9 + 8], kernelsLA[1 * 72 + 5 * 9 + 8], kernelsLA[2 * 72 + 5 * 9 + 8], kernelsLA[3 * 72 + 5 * 9 + 8], kernelsLA[0 * 72 + 6 * 9 + 8], kernelsLA[1 * 72 + 6 * 9 + 8], kernelsLA[2 * 72 + 6 * 9 + 8], kernelsLA[3 * 72 + 6 * 9 + 8], kernelsLA[0 * 72 + 7 * 9 + 8], kernelsLA[1 * 72 + 7 * 9 + 8], kernelsLA[2 * 72 + 7 * 9 + 8], kernelsLA[3 * 72 + 7 * 9 + 8]), target1);\n\ttarget1 = RELU(target1);\n\n\tMF4 target2 = biasLB;\n\ttarget2 = MulAdd(tl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 0], kernelsLB[1 * 72 + 0 * 9 + 0], kernelsLB[2 * 72 + 0 * 9 + 0], kernelsLB[3 * 72 + 0 * 9 + 0], kernelsLB[0 * 72 + 1 * 9 + 0], kernelsLB[1 * 72 + 1 * 9 + 0], kernelsLB[2 * 72 + 1 * 9 + 0], kernelsLB[3 * 72 + 1 * 9 + 0], kernelsLB[0 * 72 + 2 * 9 + 0], kernelsLB[1 * 72 + 2 * 9 + 0], kernelsLB[2 * 72 + 2 * 9 + 0], kernelsLB[3 * 72 + 2 * 9 + 0], kernelsLB[0 * 72 + 3 * 9 + 0], kernelsLB[1 * 72 + 3 * 9 + 0], kernelsLB[2 * 72 + 3 * 9 + 0], kernelsLB[3 * 72 + 3 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 1], kernelsLB[1 * 72 + 0 * 9 + 1], kernelsLB[2 * 72 + 0 * 9 + 1], kernelsLB[3 * 72 + 0 * 9 + 1], kernelsLB[0 * 72 + 1 * 9 + 1], kernelsLB[1 * 72 + 1 * 9 + 1], kernelsLB[2 * 72 + 1 * 9 + 1], kernelsLB[3 * 72 + 1 * 9 + 1], kernelsLB[0 * 72 + 2 * 9 + 1], kernelsLB[1 * 72 + 2 * 9 + 1], kernelsLB[2 * 72 + 2 * 9 + 1], kernelsLB[3 * 72 + 2 * 9 + 1], kernelsLB[0 * 72 + 3 * 9 + 1], kernelsLB[1 * 72 + 3 * 9 + 1], kernelsLB[2 * 72 + 3 * 9 + 1], kernelsLB[3 * 72 + 3 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 2], kernelsLB[1 * 72 + 0 * 9 + 2], kernelsLB[2 * 72 + 0 * 9 + 2], kernelsLB[3 * 72 + 0 * 9 + 2], kernelsLB[0 * 72 + 1 * 9 + 2], kernelsLB[1 * 72 + 1 * 9 + 2], kernelsLB[2 * 72 + 1 * 9 + 2], kernelsLB[3 * 72 + 1 * 9 + 2], kernelsLB[0 * 72 + 2 * 9 + 2], kernelsLB[1 * 72 + 2 * 9 + 2], kernelsLB[2 * 72 + 2 * 9 + 2], kernelsLB[3 * 72 + 2 * 9 + 2], kernelsLB[0 * 72 + 3 * 9 + 2], kernelsLB[1 * 72 + 3 * 9 + 2], kernelsLB[2 * 72 + 3 * 9 + 2], kernelsLB[3 * 72 + 3 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 3], kernelsLB[1 * 72 + 0 * 9 + 3], kernelsLB[2 * 72 + 0 * 9 + 3], kernelsLB[3 * 72 + 0 * 9 + 3], kernelsLB[0 * 72 + 1 * 9 + 3], kernelsLB[1 * 72 + 1 * 9 + 3], kernelsLB[2 * 72 + 1 * 9 + 3], kernelsLB[3 * 72 + 1 * 9 + 3], kernelsLB[0 * 72 + 2 * 9 + 3], kernelsLB[1 * 72 + 2 * 9 + 3], kernelsLB[2 * 72 + 2 * 9 + 3], kernelsLB[3 * 72 + 2 * 9 + 3], kernelsLB[0 * 72 + 3 * 9 + 3], kernelsLB[1 * 72 + 3 * 9 + 3], kernelsLB[2 * 72 + 3 * 9 + 3], kernelsLB[3 * 72 + 3 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 4], kernelsLB[1 * 72 + 0 * 9 + 4], kernelsLB[2 * 72 + 0 * 9 + 4], kernelsLB[3 * 72 + 0 * 9 + 4], kernelsLB[0 * 72 + 1 * 9 + 4], kernelsLB[1 * 72 + 1 * 9 + 4], kernelsLB[2 * 72 + 1 * 9 + 4], kernelsLB[3 * 72 + 1 * 9 + 4], kernelsLB[0 * 72 + 2 * 9 + 4], kernelsLB[1 * 72 + 2 * 9 + 4], kernelsLB[2 * 72 + 2 * 9 + 4], kernelsLB[3 * 72 + 2 * 9 + 4], kernelsLB[0 * 72 + 3 * 9 + 4], kernelsLB[1 * 72 + 3 * 9 + 4], kernelsLB[2 * 72 + 3 * 9 + 4], kernelsLB[3 * 72 + 3 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 5], kernelsLB[1 * 72 + 0 * 9 + 5], kernelsLB[2 * 72 + 0 * 9 + 5], kernelsLB[3 * 72 + 0 * 9 + 5], kernelsLB[0 * 72 + 1 * 9 + 5], kernelsLB[1 * 72 + 1 * 9 + 5], kernelsLB[2 * 72 + 1 * 9 + 5], kernelsLB[3 * 72 + 1 * 9 + 5], kernelsLB[0 * 72 + 2 * 9 + 5], kernelsLB[1 * 72 + 2 * 9 + 5], kernelsLB[2 * 72 + 2 * 9 + 5], kernelsLB[3 * 72 + 2 * 9 + 5], kernelsLB[0 * 72 + 3 * 9 + 5], kernelsLB[1 * 72 + 3 * 9 + 5], kernelsLB[2 * 72 + 3 * 9 + 5], kernelsLB[3 * 72 + 3 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 6], kernelsLB[1 * 72 + 0 * 9 + 6], kernelsLB[2 * 72 + 0 * 9 + 6], kernelsLB[3 * 72 + 0 * 9 + 6], kernelsLB[0 * 72 + 1 * 9 + 6], kernelsLB[1 * 72 + 1 * 9 + 6], kernelsLB[2 * 72 + 1 * 9 + 6], kernelsLB[3 * 72 + 1 * 9 + 6], kernelsLB[0 * 72 + 2 * 9 + 6], kernelsLB[1 * 72 + 2 * 9 + 6], kernelsLB[2 * 72 + 2 * 9 + 6], kernelsLB[3 * 72 + 2 * 9 + 6], kernelsLB[0 * 72 + 3 * 9 + 6], kernelsLB[1 * 72 + 3 * 9 + 6], kernelsLB[2 * 72 + 3 * 9 + 6], kernelsLB[3 * 72 + 3 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 7], kernelsLB[1 * 72 + 0 * 9 + 7], kernelsLB[2 * 72 + 0 * 9 + 7], kernelsLB[3 * 72 + 0 * 9 + 7], kernelsLB[0 * 72 + 1 * 9 + 7], kernelsLB[1 * 72 + 1 * 9 + 7], kernelsLB[2 * 72 + 1 * 9 + 7], kernelsLB[3 * 72 + 1 * 9 + 7], kernelsLB[0 * 72 + 2 * 9 + 7], kernelsLB[1 * 72 + 2 * 9 + 7], kernelsLB[2 * 72 + 2 * 9 + 7], kernelsLB[3 * 72 + 2 * 9 + 7], kernelsLB[0 * 72 + 3 * 9 + 7], kernelsLB[1 * 72 + 3 * 9 + 7], kernelsLB[2 * 72 + 3 * 9 + 7], kernelsLB[3 * 72 + 3 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 8], kernelsLB[1 * 72 + 0 * 9 + 8], kernelsLB[2 * 72 + 0 * 9 + 8], kernelsLB[3 * 72 + 0 * 9 + 8], kernelsLB[0 * 72 + 1 * 9 + 8], kernelsLB[1 * 72 + 1 * 9 + 8], kernelsLB[2 * 72 + 1 * 9 + 8], kernelsLB[3 * 72 + 1 * 9 + 8], kernelsLB[0 * 72 + 2 * 9 + 8], kernelsLB[1 * 72 + 2 * 9 + 8], kernelsLB[2 * 72 + 2 * 9 + 8], kernelsLB[3 * 72 + 2 * 9 + 8], kernelsLB[0 * 72 + 3 * 9 + 8], kernelsLB[1 * 72 + 3 * 9 + 8], kernelsLB[2 * 72 + 3 * 9 + 8], kernelsLB[3 * 72 + 3 * 9 + 8]), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 0], kernelsLB[1 * 72 + 4 * 9 + 0], kernelsLB[2 * 72 + 4 * 9 + 0], kernelsLB[3 * 72 + 4 * 9 + 0], kernelsLB[0 * 72 + 5 * 9 + 0], kernelsLB[1 * 72 + 5 * 9 + 0], kernelsLB[2 * 72 + 5 * 9 + 0], kernelsLB[3 * 72 + 5 * 9 + 0], kernelsLB[0 * 72 + 6 * 9 + 0], kernelsLB[1 * 72 + 6 * 9 + 0], kernelsLB[2 * 72 + 6 * 9 + 0], kernelsLB[3 * 72 + 6 * 9 + 0], kernelsLB[0 * 72 + 7 * 9 + 0], kernelsLB[1 * 72 + 7 * 9 + 0], kernelsLB[2 * 72 + 7 * 9 + 0], kernelsLB[3 * 72 + 7 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 1], kernelsLB[1 * 72 + 4 * 9 + 1], kernelsLB[2 * 72 + 4 * 9 + 1], kernelsLB[3 * 72 + 4 * 9 + 1], kernelsLB[0 * 72 + 5 * 9 + 1], kernelsLB[1 * 72 + 5 * 9 + 1], kernelsLB[2 * 72 + 5 * 9 + 1], kernelsLB[3 * 72 + 5 * 9 + 1], kernelsLB[0 * 72 + 6 * 9 + 1], kernelsLB[1 * 72 + 6 * 9 + 1], kernelsLB[2 * 72 + 6 * 9 + 1], kernelsLB[3 * 72 + 6 * 9 + 1], kernelsLB[0 * 72 + 7 * 9 + 1], kernelsLB[1 * 72 + 7 * 9 + 1], kernelsLB[2 * 72 + 7 * 9 + 1], kernelsLB[3 * 72 + 7 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 2], kernelsLB[1 * 72 + 4 * 9 + 2], kernelsLB[2 * 72 + 4 * 9 + 2], kernelsLB[3 * 72 + 4 * 9 + 2], kernelsLB[0 * 72 + 5 * 9 + 2], kernelsLB[1 * 72 + 5 * 9 + 2], kernelsLB[2 * 72 + 5 * 9 + 2], kernelsLB[3 * 72 + 5 * 9 + 2], kernelsLB[0 * 72 + 6 * 9 + 2], kernelsLB[1 * 72 + 6 * 9 + 2], kernelsLB[2 * 72 + 6 * 9 + 2], kernelsLB[3 * 72 + 6 * 9 + 2], kernelsLB[0 * 72 + 7 * 9 + 2], kernelsLB[1 * 72 + 7 * 9 + 2], kernelsLB[2 * 72 + 7 * 9 + 2], kernelsLB[3 * 72 + 7 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 3], kernelsLB[1 * 72 + 4 * 9 + 3], kernelsLB[2 * 72 + 4 * 9 + 3], kernelsLB[3 * 72 + 4 * 9 + 3], kernelsLB[0 * 72 + 5 * 9 + 3], kernelsLB[1 * 72 + 5 * 9 + 3], kernelsLB[2 * 72 + 5 * 9 + 3], kernelsLB[3 * 72 + 5 * 9 + 3], kernelsLB[0 * 72 + 6 * 9 + 3], kernelsLB[1 * 72 + 6 * 9 + 3], kernelsLB[2 * 72 + 6 * 9 + 3], kernelsLB[3 * 72 + 6 * 9 + 3], kernelsLB[0 * 72 + 7 * 9 + 3], kernelsLB[1 * 72 + 7 * 9 + 3], kernelsLB[2 * 72 + 7 * 9 + 3], kernelsLB[3 * 72 + 7 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 4], kernelsLB[1 * 72 + 4 * 9 + 4], kernelsLB[2 * 72 + 4 * 9 + 4], kernelsLB[3 * 72 + 4 * 9 + 4], kernelsLB[0 * 72 + 5 * 9 + 4], kernelsLB[1 * 72 + 5 * 9 + 4], kernelsLB[2 * 72 + 5 * 9 + 4], kernelsLB[3 * 72 + 5 * 9 + 4], kernelsLB[0 * 72 + 6 * 9 + 4], kernelsLB[1 * 72 + 6 * 9 + 4], kernelsLB[2 * 72 + 6 * 9 + 4], kernelsLB[3 * 72 + 6 * 9 + 4], kernelsLB[0 * 72 + 7 * 9 + 4], kernelsLB[1 * 72 + 7 * 9 + 4], kernelsLB[2 * 72 + 7 * 9 + 4], kernelsLB[3 * 72 + 7 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 5], kernelsLB[1 * 72 + 4 * 9 + 5], kernelsLB[2 * 72 + 4 * 9 + 5], kernelsLB[3 * 72 + 4 * 9 + 5], kernelsLB[0 * 72 + 5 * 9 + 5], kernelsLB[1 * 72 + 5 * 9 + 5], kernelsLB[2 * 72 + 5 * 9 + 5], kernelsLB[3 * 72 + 5 * 9 + 5], kernelsLB[0 * 72 + 6 * 9 + 5], kernelsLB[1 * 72 + 6 * 9 + 5], kernelsLB[2 * 72 + 6 * 9 + 5], kernelsLB[3 * 72 + 6 * 9 + 5], kernelsLB[0 * 72 + 7 * 9 + 5], kernelsLB[1 * 72 + 7 * 9 + 5], kernelsLB[2 * 72 + 7 * 9 + 5], kernelsLB[3 * 72 + 7 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 6], kernelsLB[1 * 72 + 4 * 9 + 6], kernelsLB[2 * 72 + 4 * 9 + 6], kernelsLB[3 * 72 + 4 * 9 + 6], kernelsLB[0 * 72 + 5 * 9 + 6], kernelsLB[1 * 72 + 5 * 9 + 6], kernelsLB[2 * 72 + 5 * 9 + 6], kernelsLB[3 * 72 + 5 * 9 + 6], kernelsLB[0 * 72 + 6 * 9 + 6], kernelsLB[1 * 72 + 6 * 9 + 6], kernelsLB[2 * 72 + 6 * 9 + 6], kernelsLB[3 * 72 + 6 * 9 + 6], kernelsLB[0 * 72 + 7 * 9 + 6], kernelsLB[1 * 72 + 7 * 9 + 6], kernelsLB[2 * 72 + 7 * 9 + 6], kernelsLB[3 * 72 + 7 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 7], kernelsLB[1 * 72 + 4 * 9 + 7], kernelsLB[2 * 72 + 4 * 9 + 7], kernelsLB[3 * 72 + 4 * 9 + 7], kernelsLB[0 * 72 + 5 * 9 + 7], kernelsLB[1 * 72 + 5 * 9 + 7], kernelsLB[2 * 72 + 5 * 9 + 7], kernelsLB[3 * 72 + 5 * 9 + 7], kernelsLB[0 * 72 + 6 * 9 + 7], kernelsLB[1 * 72 + 6 * 9 + 7], kernelsLB[2 * 72 + 6 * 9 + 7], kernelsLB[3 * 72 + 6 * 9 + 7], kernelsLB[0 * 72 + 7 * 9 + 7], kernelsLB[1 * 72 + 7 * 9 + 7], kernelsLB[2 * 72 + 7 * 9 + 7], kernelsLB[3 * 72 + 7 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 8], kernelsLB[1 * 72 + 4 * 9 + 8], kernelsLB[2 * 72 + 4 * 9 + 8], kernelsLB[3 * 72 + 4 * 9 + 8], kernelsLB[0 * 72 + 5 * 9 + 8], kernelsLB[1 * 72 + 5 * 9 + 8], kernelsLB[2 * 72 + 5 * 9 + 8], kernelsLB[3 * 72 + 5 * 9 + 8], kernelsLB[0 * 72 + 6 * 9 + 8], kernelsLB[1 * 72 + 6 * 9 + 8], kernelsLB[2 * 72 + 6 * 9 + 8], kernelsLB[3 * 72 + 6 * 9 + 8], kernelsLB[0 * 72 + 7 * 9 + 8], kernelsLB[1 * 72 + 7 * 9 + 8], kernelsLB[2 * 72 + 7 * 9 + 8], kernelsLB[3 * 72 + 7 * 9 + 8]), target2);\n\ttarget2 = RELU(target2);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n}\n\n\n//!PASS 6\n//!DESC L6\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nconst static MF kernelsLA[9 * 8 * 4] = {\n\t 5.6253e-02,  1.0118e-02, -8.2749e-02,\n\t-6.4074e-02,  4.0723e-02,  1.1657e-02,\n\t-1.1560e-01, -3.5596e-03, -2.6713e-02,\n\t-7.9090e-02, -2.9223e-01,  1.5759e-01,\n\t 6.8756e-02,  1.5738e-01,  1.5413e-01,\n\t-6.1288e-02, -1.2536e-01, -1.5966e-01,\n\t 1.1165e-01,  5.0211e-02, -1.0338e-01,\n\t-5.2364e-04,  1.7660e-01, -2.2504e-03,\n\t-1.7697e-01,  1.8500e-02,  2.0693e-02,\n\t-2.5907e-02, -1.4201e-01,  8.4467e-02,\n\t 1.1138e-02,  2.1769e-01, -4.2422e-01,\n\t 6.5046e-02,  2.6834e-02,  2.9047e-03,\n\t-1.2130e-01, -5.1773e-01, -8.0393e-02,\n\t 3.0204e-02,  3.5952e-01,  1.6681e-01,\n\t-9.4720e-04,  7.7291e-02,  8.3039e-02,\n\t 3.4689e-01, -1.2389e-01, -2.0666e-01,\n\t-2.9650e-02,  1.1102e-01, -1.4782e-01,\n\t 3.2193e-02, -3.9862e-02,  1.6440e-02,\n\t-8.4264e-02,  1.0192e-01, -6.4256e-02,\n\t 2.2950e-02, -6.6511e-02, -6.3814e-02,\n\t 4.3744e-02, -1.0557e-01, -1.2045e-02,\n\t 1.6330e-01,  6.6130e-01,  1.5497e-01,\n\t 1.7103e-01,  1.5073e-01,  1.7400e-01,\n\t 9.0985e-04,  1.0917e-02, -1.3322e-02,\n\t-6.4273e-02, -6.2178e-02, -7.7223e-02,\n\t-1.0332e-01, -2.1072e-01, -2.2843e-03,\n\t 3.2717e-02, -6.3754e-02,  5.0359e-02,\n\t-5.2566e-02,  6.2090e-02, -1.5614e-02,\n\t 1.4570e-02, -1.0243e-01,  1.3091e-01,\n\t-2.9988e-02, -7.5897e-02, -9.4541e-04,\n\t-2.7999e-01, -4.7415e-03,  5.6419e-02,\n\t 7.0565e-02, -4.9273e-01, -1.2936e-01,\n\t 5.5685e-02, -5.8924e-03, -3.1967e-02,\n\t 8.8602e-02,  2.9337e-01,  1.3753e-01,\n\t 1.0063e-02,  1.6348e-02,  1.0063e-01,\n\t 3.6230e-02,  1.7968e-02, -1.1624e-01,\n\t-2.2488e-02,  1.3474e-01, -1.1419e-01,\n\t 2.8576e-02, -7.4794e-02, -7.7261e-02,\n\t 5.8874e-02, -2.9448e-03,  6.0207e-02,\n\t 1.4642e-01,  1.2321e-01, -2.4936e-01,\n\t 2.2609e-02, -2.8171e-01,  1.1510e-01,\n\t 2.6056e-02, -2.7532e-02, -4.7505e-02,\n\t-2.8762e-02, -1.2610e-02, -8.3766e-02,\n\t-5.0992e-02, -5.7269e-03, -7.0981e-02,\n\t-9.6191e-02, -9.2384e-02, -5.3328e-02,\n\t 2.3989e-01,  3.9819e-01,  1.8451e-01,\n\t 3.6888e-02,  1.1023e-01,  4.4804e-03,\n\t-4.4140e-03, -4.8275e-03,  2.0018e-02,\n\t-2.4346e-02, -6.5546e-02, -4.6065e-03,\n\t 2.2298e-01,  2.8810e-01,  1.4071e-02,\n\t-1.7315e-01, -5.7961e-02, -9.9136e-02,\n\t 3.6456e-02, -1.5518e-02,  6.4490e-02,\n\t 4.6983e-02,  5.2743e-02,  3.0802e-01,\n\t 6.7940e-02,  5.8777e-03,  3.1155e-01,\n\t 9.9510e-02,  2.7974e-02, -6.6716e-02,\n\t 3.7042e-01,  2.0813e-01, -3.1581e-02,\n\t 7.9064e-02, -1.3699e-01, -4.4722e-02,\n\t-8.4753e-03,  8.0676e-02,  1.5771e-01,\n\t-1.1467e-01,  5.6269e-02,  1.1369e-01,\n\t-1.4727e-02,  3.7263e-02, -2.0554e-01,\n\t 8.3383e-02,  4.5848e-02, -1.1732e-02,\n\t 4.5494e-02, -2.1406e-01,  6.0591e-02,\n\t 4.6503e-02, -1.0362e-01,  3.8794e-02,\n\t-4.6633e-01,  1.4504e-01,  1.4999e-01,\n\t 2.9642e-01, -4.8807e-01, -1.6012e-01,\n\t 1.6708e-01,  9.5313e-02, -7.5981e-02,\n\t-4.2655e-02,  9.2470e-02, -7.7242e-02,\n\t-2.1021e-01,  1.2423e-01,  1.4967e-02,\n\t-5.4129e-02,  7.4355e-02, -4.7068e-02,\n\t-1.6048e-01,  9.8742e-02,  4.4282e-02,\n\t-6.0187e-02,  1.9495e-01,  8.3291e-02,\n\t-7.5190e-02, -6.8429e-02,  3.7391e-02,\n\t 5.1413e-04,  1.5098e-01, -1.1549e-01,\n\t 1.6875e-01,  1.8040e-01, -1.3162e-01,\n\t 7.7101e-02,  2.0816e-01,  7.6289e-02,\n\t-1.7528e-02,  1.4408e-02,  3.7500e-02,\n\t 3.8647e-02,  1.6850e-01,  1.7535e-02,\n\t-2.8205e-02,  1.0273e-02,  1.6688e-01,\n\t 4.3676e-02,  6.9895e-02,  8.1063e-03,\n\t-2.6117e-01, -1.0920e-01,  5.2209e-02,\n\t-5.2749e-02, -1.7062e-02, -9.6808e-02,\n\t 2.7324e-02,  9.1342e-02, -5.0968e-02,\n\t 1.0689e-01,  5.0565e-01,  4.6004e-01,\n\t-6.6862e-03,  3.4162e-03,  3.3559e-01,\n\t 3.5084e-02,  1.9123e-02,  1.0073e-02,\n\t 1.6995e-01,  3.4099e-01, -4.0847e-01,\n\t-5.5317e-03,  4.0230e-02, -2.0305e-01,\n\t-8.9786e-02,  1.9667e-01,  3.8111e-02,\n\t 3.0607e-02, -1.9084e-02, -6.5114e-02,\n\t 8.5394e-02, -1.3992e-01,  1.4988e-02,\n\t-1.5926e-02, -9.1200e-03, -7.2328e-02,\n\t 1.3548e-01,  7.1040e-01, -9.4208e-02,\n\t 2.5411e-03, -7.2159e-02,  1.0848e-01,\n\t-8.9029e-02, -8.6339e-02, -2.7546e-02,\n\t 6.0378e-02,  2.8401e-01, -6.6550e-02,\n\t-3.0486e-02,  5.0307e-02, -1.1084e-02\n};\n\nconst static MF4 biasLA = { -0.0046, -0.0104, -0.0087, -0.0040 };\n\nconst static MF kernelsLB[9 * 8 * 4] = {\n\t 2.9732e-02,  9.9960e-02, -7.7408e-02,\n\t 3.4940e-01, -5.6048e-01,  2.9053e-02,\n\t-2.6991e-02,  4.9637e-02, -3.9322e-02,\n\t-1.0418e-02,  1.0931e-01, -6.1609e-02,\n\t 3.6057e-02,  9.3866e-02, -1.0339e-01,\n\t-1.8572e-02, -2.0889e-02, -7.4531e-02,\n\t-7.3236e-02, -4.5908e-02,  2.2705e-02,\n\t-1.5148e-02,  2.1735e-01,  2.2477e-02,\n\t-3.4153e-02, -2.6939e-02, -5.0167e-03,\n\t 6.6774e-02,  2.0168e-01, -7.5083e-02,\n\t 5.6608e-02,  2.2799e-01, -3.7473e-01,\n\t-7.2336e-02,  4.4329e-02, -3.6747e-02,\n\t 3.5355e-02,  1.8671e-01, -4.0167e-02,\n\t 1.2871e-01,  3.5050e-01,  1.8090e-01,\n\t-6.2429e-02,  6.2184e-02,  6.8804e-02,\n\t-8.0164e-02, -2.4387e-02, -5.0309e-03,\n\t 1.0089e-01, -3.0008e-02,  1.7251e-02,\n\t-9.4662e-03, -1.4760e-02,  7.3434e-03,\n\t 7.3290e-02,  2.2546e-02, -2.9015e-02,\n\t 7.9944e-02, -2.6972e-01,  7.1349e-02,\n\t-1.7026e-02,  1.1461e-01, -4.1288e-02,\n\t-5.3732e-02, -2.4618e-01, -1.2890e-02,\n\t 8.6133e-02,  1.9503e-01,  8.2202e-02,\n\t-1.0060e-03, -4.5931e-04, -1.8789e-02,\n\t-4.0843e-02, -7.8149e-03, -6.1464e-02,\n\t-7.9364e-02, -5.9647e-02, -5.4059e-03,\n\t 1.9553e-01, -2.4079e-01, -7.9538e-03,\n\t 5.3620e-02,  1.4198e-01,  6.5651e-03,\n\t 2.3512e-02, -2.6609e-02, -4.6435e-02,\n\t 1.2499e-02,  5.1079e-02, -2.2713e-02,\n\t-7.1554e-02,  1.0608e-01,  5.8972e-02,\n\t 1.8638e-01, -2.1053e-01, -6.4009e-02,\n\t 1.0851e-01,  7.2187e-02,  8.9722e-02,\n\t-4.5365e-04,  1.0826e-01, -6.4141e-02,\n\t-2.3874e-02, -4.6307e-02, -2.7813e-02,\n\t 1.8385e-02,  9.4687e-02,  6.8374e-02,\n\t 9.4526e-02,  1.4432e-02,  1.5937e-01,\n\t 1.1292e-01, -3.4274e-01, -1.0813e-01,\n\t-7.4636e-03,  3.7101e-02,  3.7226e-02,\n\t 3.7079e-02, -3.9169e-02, -3.7752e-02,\n\t-7.9021e-02,  8.5978e-02,  1.0958e-02,\n\t-5.8576e-02,  5.5931e-02,  4.8301e-02,\n\t-1.3402e-01, -3.3809e-01, -4.4369e-02,\n\t 1.4262e-01,  6.5254e-02, -3.3366e-01,\n\t 1.2416e-02, -9.0492e-02, -5.8205e-02,\n\t-1.4886e-01,  4.0598e-02, -1.4219e-01,\n\t 2.0223e-03, -2.8673e-01, -3.3622e-01,\n\t 1.9191e-02, -2.2104e-02,  1.9048e-02,\n\t 6.0021e-02,  2.2520e-01, -5.3972e-02,\n\t 1.6226e-01, -2.1918e-01, -5.2117e-02,\n\t-6.2363e-03,  2.0266e-01, -7.3323e-03,\n\t 1.1137e-01, -1.9300e-02, -5.4983e-02,\n\t-1.8338e-01,  6.2511e-01, -1.7909e-01,\n\t 1.7003e-01,  1.7902e-01,  5.4462e-02,\n\t 5.6847e-02, -7.4696e-02, -1.1354e-02,\n\t 1.0544e-01, -1.4918e-01,  4.8208e-02,\n\t-5.6262e-02, -2.3303e-01, -2.9916e-02,\n\t-3.3261e-02,  1.3287e-01,  1.9831e-02,\n\t-1.3907e-01, -1.6180e-01, -7.2323e-03,\n\t-5.1689e-02,  6.3121e-02, -1.4480e-01,\n\t 1.1143e-01,  4.9625e-02, -5.4369e-02,\n\t-3.9247e-01,  2.3412e-01, -3.6726e-02,\n\t-1.1468e-02,  3.4045e-02,  6.6454e-02,\n\t-5.0103e-02,  6.1740e-02,  4.2922e-03,\n\t 1.7669e-01, -8.1250e-03,  6.3694e-03,\n\t-6.7723e-02,  7.4576e-02,  1.0113e-02,\n\t 1.1264e-01, -4.4691e-02, -5.3575e-02,\n\t 3.4691e-02, -1.2201e-02, -8.4221e-02,\n\t 2.3677e-01,  3.9073e-01,  2.4710e-02,\n\t-8.4580e-02, -1.0747e-01, -6.5695e-02,\n\t 1.5386e-01,  1.4041e-01,  6.9961e-03,\n\t 2.6138e-02,  2.3149e-02, -1.8820e-02,\n\t-3.3541e-02,  3.2089e-02, -1.8916e-02,\n\t 1.0564e-01, -7.5319e-02, -5.4282e-02,\n\t-6.9388e-03, -2.0873e-02,  5.6100e-02,\n\t 2.3524e-02, -6.4296e-02,  5.8950e-02,\n\t-3.1415e-03, -4.1203e-02,  1.0781e-01,\n\t 1.7848e-02, -2.9535e-02, -1.6412e-02,\n\t-4.6649e-02,  8.1277e-02, -5.9918e-02,\n\t 8.1522e-02, -9.2037e-02,  8.1039e-03,\n\t-6.5541e-02,  5.1811e-02, -1.4380e-03,\n\t 5.0419e-02,  9.3091e-03, -2.8054e-02,\n\t-3.0979e-02, -2.5366e-02,  3.5265e-02,\n\t-3.7730e-02,  5.7574e-02,  3.4683e-02,\n\t 4.8819e-03, -2.9519e-02,  3.7740e-02,\n\t 6.4546e-02, -3.7272e-01, -8.5393e-02,\n\t-3.0223e-02, -7.7899e-02,  2.7365e-03,\n\t 2.2282e-02, -3.3440e-02,  1.9048e-02,\n\t 2.3275e-02, -2.1153e-02, -2.0385e-02,\n\t-4.6245e-02,  2.2443e-02, -3.0206e-02,\n\t-2.5302e-02, -1.1418e-02,  4.8228e-02,\n\t 5.8367e-02, -4.3062e-02,  2.2814e-02,\n\t-4.6279e-02,  5.0052e-02,  2.2961e-02,\n\t-5.4984e-02,  1.4773e-01, -2.5546e-02,\n\t 3.3025e-02, -1.0138e-01,  6.3886e-02,\n\t 1.2403e-02,  1.6215e-02,  1.0783e-02\n};\n\nconst static MF4 biasLB = { 0.1077,  0.0347, -0.0165,  0.7296 };\n\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 tl2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 target1 = biasLA;\n\ttarget1 = MulAdd(tl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 0], kernelsLA[1 * 72 + 0 * 9 + 0], kernelsLA[2 * 72 + 0 * 9 + 0], kernelsLA[3 * 72 + 0 * 9 + 0], kernelsLA[0 * 72 + 1 * 9 + 0], kernelsLA[1 * 72 + 1 * 9 + 0], kernelsLA[2 * 72 + 1 * 9 + 0], kernelsLA[3 * 72 + 1 * 9 + 0], kernelsLA[0 * 72 + 2 * 9 + 0], kernelsLA[1 * 72 + 2 * 9 + 0], kernelsLA[2 * 72 + 2 * 9 + 0], kernelsLA[3 * 72 + 2 * 9 + 0], kernelsLA[0 * 72 + 3 * 9 + 0], kernelsLA[1 * 72 + 3 * 9 + 0], kernelsLA[2 * 72 + 3 * 9 + 0], kernelsLA[3 * 72 + 3 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 1], kernelsLA[1 * 72 + 0 * 9 + 1], kernelsLA[2 * 72 + 0 * 9 + 1], kernelsLA[3 * 72 + 0 * 9 + 1], kernelsLA[0 * 72 + 1 * 9 + 1], kernelsLA[1 * 72 + 1 * 9 + 1], kernelsLA[2 * 72 + 1 * 9 + 1], kernelsLA[3 * 72 + 1 * 9 + 1], kernelsLA[0 * 72 + 2 * 9 + 1], kernelsLA[1 * 72 + 2 * 9 + 1], kernelsLA[2 * 72 + 2 * 9 + 1], kernelsLA[3 * 72 + 2 * 9 + 1], kernelsLA[0 * 72 + 3 * 9 + 1], kernelsLA[1 * 72 + 3 * 9 + 1], kernelsLA[2 * 72 + 3 * 9 + 1], kernelsLA[3 * 72 + 3 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 2], kernelsLA[1 * 72 + 0 * 9 + 2], kernelsLA[2 * 72 + 0 * 9 + 2], kernelsLA[3 * 72 + 0 * 9 + 2], kernelsLA[0 * 72 + 1 * 9 + 2], kernelsLA[1 * 72 + 1 * 9 + 2], kernelsLA[2 * 72 + 1 * 9 + 2], kernelsLA[3 * 72 + 1 * 9 + 2], kernelsLA[0 * 72 + 2 * 9 + 2], kernelsLA[1 * 72 + 2 * 9 + 2], kernelsLA[2 * 72 + 2 * 9 + 2], kernelsLA[3 * 72 + 2 * 9 + 2], kernelsLA[0 * 72 + 3 * 9 + 2], kernelsLA[1 * 72 + 3 * 9 + 2], kernelsLA[2 * 72 + 3 * 9 + 2], kernelsLA[3 * 72 + 3 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 3], kernelsLA[1 * 72 + 0 * 9 + 3], kernelsLA[2 * 72 + 0 * 9 + 3], kernelsLA[3 * 72 + 0 * 9 + 3], kernelsLA[0 * 72 + 1 * 9 + 3], kernelsLA[1 * 72 + 1 * 9 + 3], kernelsLA[2 * 72 + 1 * 9 + 3], kernelsLA[3 * 72 + 1 * 9 + 3], kernelsLA[0 * 72 + 2 * 9 + 3], kernelsLA[1 * 72 + 2 * 9 + 3], kernelsLA[2 * 72 + 2 * 9 + 3], kernelsLA[3 * 72 + 2 * 9 + 3], kernelsLA[0 * 72 + 3 * 9 + 3], kernelsLA[1 * 72 + 3 * 9 + 3], kernelsLA[2 * 72 + 3 * 9 + 3], kernelsLA[3 * 72 + 3 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 4], kernelsLA[1 * 72 + 0 * 9 + 4], kernelsLA[2 * 72 + 0 * 9 + 4], kernelsLA[3 * 72 + 0 * 9 + 4], kernelsLA[0 * 72 + 1 * 9 + 4], kernelsLA[1 * 72 + 1 * 9 + 4], kernelsLA[2 * 72 + 1 * 9 + 4], kernelsLA[3 * 72 + 1 * 9 + 4], kernelsLA[0 * 72 + 2 * 9 + 4], kernelsLA[1 * 72 + 2 * 9 + 4], kernelsLA[2 * 72 + 2 * 9 + 4], kernelsLA[3 * 72 + 2 * 9 + 4], kernelsLA[0 * 72 + 3 * 9 + 4], kernelsLA[1 * 72 + 3 * 9 + 4], kernelsLA[2 * 72 + 3 * 9 + 4], kernelsLA[3 * 72 + 3 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 5], kernelsLA[1 * 72 + 0 * 9 + 5], kernelsLA[2 * 72 + 0 * 9 + 5], kernelsLA[3 * 72 + 0 * 9 + 5], kernelsLA[0 * 72 + 1 * 9 + 5], kernelsLA[1 * 72 + 1 * 9 + 5], kernelsLA[2 * 72 + 1 * 9 + 5], kernelsLA[3 * 72 + 1 * 9 + 5], kernelsLA[0 * 72 + 2 * 9 + 5], kernelsLA[1 * 72 + 2 * 9 + 5], kernelsLA[2 * 72 + 2 * 9 + 5], kernelsLA[3 * 72 + 2 * 9 + 5], kernelsLA[0 * 72 + 3 * 9 + 5], kernelsLA[1 * 72 + 3 * 9 + 5], kernelsLA[2 * 72 + 3 * 9 + 5], kernelsLA[3 * 72 + 3 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 6], kernelsLA[1 * 72 + 0 * 9 + 6], kernelsLA[2 * 72 + 0 * 9 + 6], kernelsLA[3 * 72 + 0 * 9 + 6], kernelsLA[0 * 72 + 1 * 9 + 6], kernelsLA[1 * 72 + 1 * 9 + 6], kernelsLA[2 * 72 + 1 * 9 + 6], kernelsLA[3 * 72 + 1 * 9 + 6], kernelsLA[0 * 72 + 2 * 9 + 6], kernelsLA[1 * 72 + 2 * 9 + 6], kernelsLA[2 * 72 + 2 * 9 + 6], kernelsLA[3 * 72 + 2 * 9 + 6], kernelsLA[0 * 72 + 3 * 9 + 6], kernelsLA[1 * 72 + 3 * 9 + 6], kernelsLA[2 * 72 + 3 * 9 + 6], kernelsLA[3 * 72 + 3 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 7], kernelsLA[1 * 72 + 0 * 9 + 7], kernelsLA[2 * 72 + 0 * 9 + 7], kernelsLA[3 * 72 + 0 * 9 + 7], kernelsLA[0 * 72 + 1 * 9 + 7], kernelsLA[1 * 72 + 1 * 9 + 7], kernelsLA[2 * 72 + 1 * 9 + 7], kernelsLA[3 * 72 + 1 * 9 + 7], kernelsLA[0 * 72 + 2 * 9 + 7], kernelsLA[1 * 72 + 2 * 9 + 7], kernelsLA[2 * 72 + 2 * 9 + 7], kernelsLA[3 * 72 + 2 * 9 + 7], kernelsLA[0 * 72 + 3 * 9 + 7], kernelsLA[1 * 72 + 3 * 9 + 7], kernelsLA[2 * 72 + 3 * 9 + 7], kernelsLA[3 * 72 + 3 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 8], kernelsLA[1 * 72 + 0 * 9 + 8], kernelsLA[2 * 72 + 0 * 9 + 8], kernelsLA[3 * 72 + 0 * 9 + 8], kernelsLA[0 * 72 + 1 * 9 + 8], kernelsLA[1 * 72 + 1 * 9 + 8], kernelsLA[2 * 72 + 1 * 9 + 8], kernelsLA[3 * 72 + 1 * 9 + 8], kernelsLA[0 * 72 + 2 * 9 + 8], kernelsLA[1 * 72 + 2 * 9 + 8], kernelsLA[2 * 72 + 2 * 9 + 8], kernelsLA[3 * 72 + 2 * 9 + 8], kernelsLA[0 * 72 + 3 * 9 + 8], kernelsLA[1 * 72 + 3 * 9 + 8], kernelsLA[2 * 72 + 3 * 9 + 8], kernelsLA[3 * 72 + 3 * 9 + 8]), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 0], kernelsLA[1 * 72 + 4 * 9 + 0], kernelsLA[2 * 72 + 4 * 9 + 0], kernelsLA[3 * 72 + 4 * 9 + 0], kernelsLA[0 * 72 + 5 * 9 + 0], kernelsLA[1 * 72 + 5 * 9 + 0], kernelsLA[2 * 72 + 5 * 9 + 0], kernelsLA[3 * 72 + 5 * 9 + 0], kernelsLA[0 * 72 + 6 * 9 + 0], kernelsLA[1 * 72 + 6 * 9 + 0], kernelsLA[2 * 72 + 6 * 9 + 0], kernelsLA[3 * 72 + 6 * 9 + 0], kernelsLA[0 * 72 + 7 * 9 + 0], kernelsLA[1 * 72 + 7 * 9 + 0], kernelsLA[2 * 72 + 7 * 9 + 0], kernelsLA[3 * 72 + 7 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 1], kernelsLA[1 * 72 + 4 * 9 + 1], kernelsLA[2 * 72 + 4 * 9 + 1], kernelsLA[3 * 72 + 4 * 9 + 1], kernelsLA[0 * 72 + 5 * 9 + 1], kernelsLA[1 * 72 + 5 * 9 + 1], kernelsLA[2 * 72 + 5 * 9 + 1], kernelsLA[3 * 72 + 5 * 9 + 1], kernelsLA[0 * 72 + 6 * 9 + 1], kernelsLA[1 * 72 + 6 * 9 + 1], kernelsLA[2 * 72 + 6 * 9 + 1], kernelsLA[3 * 72 + 6 * 9 + 1], kernelsLA[0 * 72 + 7 * 9 + 1], kernelsLA[1 * 72 + 7 * 9 + 1], kernelsLA[2 * 72 + 7 * 9 + 1], kernelsLA[3 * 72 + 7 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 2], kernelsLA[1 * 72 + 4 * 9 + 2], kernelsLA[2 * 72 + 4 * 9 + 2], kernelsLA[3 * 72 + 4 * 9 + 2], kernelsLA[0 * 72 + 5 * 9 + 2], kernelsLA[1 * 72 + 5 * 9 + 2], kernelsLA[2 * 72 + 5 * 9 + 2], kernelsLA[3 * 72 + 5 * 9 + 2], kernelsLA[0 * 72 + 6 * 9 + 2], kernelsLA[1 * 72 + 6 * 9 + 2], kernelsLA[2 * 72 + 6 * 9 + 2], kernelsLA[3 * 72 + 6 * 9 + 2], kernelsLA[0 * 72 + 7 * 9 + 2], kernelsLA[1 * 72 + 7 * 9 + 2], kernelsLA[2 * 72 + 7 * 9 + 2], kernelsLA[3 * 72 + 7 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 3], kernelsLA[1 * 72 + 4 * 9 + 3], kernelsLA[2 * 72 + 4 * 9 + 3], kernelsLA[3 * 72 + 4 * 9 + 3], kernelsLA[0 * 72 + 5 * 9 + 3], kernelsLA[1 * 72 + 5 * 9 + 3], kernelsLA[2 * 72 + 5 * 9 + 3], kernelsLA[3 * 72 + 5 * 9 + 3], kernelsLA[0 * 72 + 6 * 9 + 3], kernelsLA[1 * 72 + 6 * 9 + 3], kernelsLA[2 * 72 + 6 * 9 + 3], kernelsLA[3 * 72 + 6 * 9 + 3], kernelsLA[0 * 72 + 7 * 9 + 3], kernelsLA[1 * 72 + 7 * 9 + 3], kernelsLA[2 * 72 + 7 * 9 + 3], kernelsLA[3 * 72 + 7 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 4], kernelsLA[1 * 72 + 4 * 9 + 4], kernelsLA[2 * 72 + 4 * 9 + 4], kernelsLA[3 * 72 + 4 * 9 + 4], kernelsLA[0 * 72 + 5 * 9 + 4], kernelsLA[1 * 72 + 5 * 9 + 4], kernelsLA[2 * 72 + 5 * 9 + 4], kernelsLA[3 * 72 + 5 * 9 + 4], kernelsLA[0 * 72 + 6 * 9 + 4], kernelsLA[1 * 72 + 6 * 9 + 4], kernelsLA[2 * 72 + 6 * 9 + 4], kernelsLA[3 * 72 + 6 * 9 + 4], kernelsLA[0 * 72 + 7 * 9 + 4], kernelsLA[1 * 72 + 7 * 9 + 4], kernelsLA[2 * 72 + 7 * 9 + 4], kernelsLA[3 * 72 + 7 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 5], kernelsLA[1 * 72 + 4 * 9 + 5], kernelsLA[2 * 72 + 4 * 9 + 5], kernelsLA[3 * 72 + 4 * 9 + 5], kernelsLA[0 * 72 + 5 * 9 + 5], kernelsLA[1 * 72 + 5 * 9 + 5], kernelsLA[2 * 72 + 5 * 9 + 5], kernelsLA[3 * 72 + 5 * 9 + 5], kernelsLA[0 * 72 + 6 * 9 + 5], kernelsLA[1 * 72 + 6 * 9 + 5], kernelsLA[2 * 72 + 6 * 9 + 5], kernelsLA[3 * 72 + 6 * 9 + 5], kernelsLA[0 * 72 + 7 * 9 + 5], kernelsLA[1 * 72 + 7 * 9 + 5], kernelsLA[2 * 72 + 7 * 9 + 5], kernelsLA[3 * 72 + 7 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 6], kernelsLA[1 * 72 + 4 * 9 + 6], kernelsLA[2 * 72 + 4 * 9 + 6], kernelsLA[3 * 72 + 4 * 9 + 6], kernelsLA[0 * 72 + 5 * 9 + 6], kernelsLA[1 * 72 + 5 * 9 + 6], kernelsLA[2 * 72 + 5 * 9 + 6], kernelsLA[3 * 72 + 5 * 9 + 6], kernelsLA[0 * 72 + 6 * 9 + 6], kernelsLA[1 * 72 + 6 * 9 + 6], kernelsLA[2 * 72 + 6 * 9 + 6], kernelsLA[3 * 72 + 6 * 9 + 6], kernelsLA[0 * 72 + 7 * 9 + 6], kernelsLA[1 * 72 + 7 * 9 + 6], kernelsLA[2 * 72 + 7 * 9 + 6], kernelsLA[3 * 72 + 7 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 7], kernelsLA[1 * 72 + 4 * 9 + 7], kernelsLA[2 * 72 + 4 * 9 + 7], kernelsLA[3 * 72 + 4 * 9 + 7], kernelsLA[0 * 72 + 5 * 9 + 7], kernelsLA[1 * 72 + 5 * 9 + 7], kernelsLA[2 * 72 + 5 * 9 + 7], kernelsLA[3 * 72 + 5 * 9 + 7], kernelsLA[0 * 72 + 6 * 9 + 7], kernelsLA[1 * 72 + 6 * 9 + 7], kernelsLA[2 * 72 + 6 * 9 + 7], kernelsLA[3 * 72 + 6 * 9 + 7], kernelsLA[0 * 72 + 7 * 9 + 7], kernelsLA[1 * 72 + 7 * 9 + 7], kernelsLA[2 * 72 + 7 * 9 + 7], kernelsLA[3 * 72 + 7 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 8], kernelsLA[1 * 72 + 4 * 9 + 8], kernelsLA[2 * 72 + 4 * 9 + 8], kernelsLA[3 * 72 + 4 * 9 + 8], kernelsLA[0 * 72 + 5 * 9 + 8], kernelsLA[1 * 72 + 5 * 9 + 8], kernelsLA[2 * 72 + 5 * 9 + 8], kernelsLA[3 * 72 + 5 * 9 + 8], kernelsLA[0 * 72 + 6 * 9 + 8], kernelsLA[1 * 72 + 6 * 9 + 8], kernelsLA[2 * 72 + 6 * 9 + 8], kernelsLA[3 * 72 + 6 * 9 + 8], kernelsLA[0 * 72 + 7 * 9 + 8], kernelsLA[1 * 72 + 7 * 9 + 8], kernelsLA[2 * 72 + 7 * 9 + 8], kernelsLA[3 * 72 + 7 * 9 + 8]), target1);\n\ttarget1 = RELU(target1);\n\n\tMF4 target2 = biasLB;\n\ttarget2 = MulAdd(tl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 0], kernelsLB[1 * 72 + 0 * 9 + 0], kernelsLB[2 * 72 + 0 * 9 + 0], kernelsLB[3 * 72 + 0 * 9 + 0], kernelsLB[0 * 72 + 1 * 9 + 0], kernelsLB[1 * 72 + 1 * 9 + 0], kernelsLB[2 * 72 + 1 * 9 + 0], kernelsLB[3 * 72 + 1 * 9 + 0], kernelsLB[0 * 72 + 2 * 9 + 0], kernelsLB[1 * 72 + 2 * 9 + 0], kernelsLB[2 * 72 + 2 * 9 + 0], kernelsLB[3 * 72 + 2 * 9 + 0], kernelsLB[0 * 72 + 3 * 9 + 0], kernelsLB[1 * 72 + 3 * 9 + 0], kernelsLB[2 * 72 + 3 * 9 + 0], kernelsLB[3 * 72 + 3 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 1], kernelsLB[1 * 72 + 0 * 9 + 1], kernelsLB[2 * 72 + 0 * 9 + 1], kernelsLB[3 * 72 + 0 * 9 + 1], kernelsLB[0 * 72 + 1 * 9 + 1], kernelsLB[1 * 72 + 1 * 9 + 1], kernelsLB[2 * 72 + 1 * 9 + 1], kernelsLB[3 * 72 + 1 * 9 + 1], kernelsLB[0 * 72 + 2 * 9 + 1], kernelsLB[1 * 72 + 2 * 9 + 1], kernelsLB[2 * 72 + 2 * 9 + 1], kernelsLB[3 * 72 + 2 * 9 + 1], kernelsLB[0 * 72 + 3 * 9 + 1], kernelsLB[1 * 72 + 3 * 9 + 1], kernelsLB[2 * 72 + 3 * 9 + 1], kernelsLB[3 * 72 + 3 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 2], kernelsLB[1 * 72 + 0 * 9 + 2], kernelsLB[2 * 72 + 0 * 9 + 2], kernelsLB[3 * 72 + 0 * 9 + 2], kernelsLB[0 * 72 + 1 * 9 + 2], kernelsLB[1 * 72 + 1 * 9 + 2], kernelsLB[2 * 72 + 1 * 9 + 2], kernelsLB[3 * 72 + 1 * 9 + 2], kernelsLB[0 * 72 + 2 * 9 + 2], kernelsLB[1 * 72 + 2 * 9 + 2], kernelsLB[2 * 72 + 2 * 9 + 2], kernelsLB[3 * 72 + 2 * 9 + 2], kernelsLB[0 * 72 + 3 * 9 + 2], kernelsLB[1 * 72 + 3 * 9 + 2], kernelsLB[2 * 72 + 3 * 9 + 2], kernelsLB[3 * 72 + 3 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 3], kernelsLB[1 * 72 + 0 * 9 + 3], kernelsLB[2 * 72 + 0 * 9 + 3], kernelsLB[3 * 72 + 0 * 9 + 3], kernelsLB[0 * 72 + 1 * 9 + 3], kernelsLB[1 * 72 + 1 * 9 + 3], kernelsLB[2 * 72 + 1 * 9 + 3], kernelsLB[3 * 72 + 1 * 9 + 3], kernelsLB[0 * 72 + 2 * 9 + 3], kernelsLB[1 * 72 + 2 * 9 + 3], kernelsLB[2 * 72 + 2 * 9 + 3], kernelsLB[3 * 72 + 2 * 9 + 3], kernelsLB[0 * 72 + 3 * 9 + 3], kernelsLB[1 * 72 + 3 * 9 + 3], kernelsLB[2 * 72 + 3 * 9 + 3], kernelsLB[3 * 72 + 3 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 4], kernelsLB[1 * 72 + 0 * 9 + 4], kernelsLB[2 * 72 + 0 * 9 + 4], kernelsLB[3 * 72 + 0 * 9 + 4], kernelsLB[0 * 72 + 1 * 9 + 4], kernelsLB[1 * 72 + 1 * 9 + 4], kernelsLB[2 * 72 + 1 * 9 + 4], kernelsLB[3 * 72 + 1 * 9 + 4], kernelsLB[0 * 72 + 2 * 9 + 4], kernelsLB[1 * 72 + 2 * 9 + 4], kernelsLB[2 * 72 + 2 * 9 + 4], kernelsLB[3 * 72 + 2 * 9 + 4], kernelsLB[0 * 72 + 3 * 9 + 4], kernelsLB[1 * 72 + 3 * 9 + 4], kernelsLB[2 * 72 + 3 * 9 + 4], kernelsLB[3 * 72 + 3 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 5], kernelsLB[1 * 72 + 0 * 9 + 5], kernelsLB[2 * 72 + 0 * 9 + 5], kernelsLB[3 * 72 + 0 * 9 + 5], kernelsLB[0 * 72 + 1 * 9 + 5], kernelsLB[1 * 72 + 1 * 9 + 5], kernelsLB[2 * 72 + 1 * 9 + 5], kernelsLB[3 * 72 + 1 * 9 + 5], kernelsLB[0 * 72 + 2 * 9 + 5], kernelsLB[1 * 72 + 2 * 9 + 5], kernelsLB[2 * 72 + 2 * 9 + 5], kernelsLB[3 * 72 + 2 * 9 + 5], kernelsLB[0 * 72 + 3 * 9 + 5], kernelsLB[1 * 72 + 3 * 9 + 5], kernelsLB[2 * 72 + 3 * 9 + 5], kernelsLB[3 * 72 + 3 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 6], kernelsLB[1 * 72 + 0 * 9 + 6], kernelsLB[2 * 72 + 0 * 9 + 6], kernelsLB[3 * 72 + 0 * 9 + 6], kernelsLB[0 * 72 + 1 * 9 + 6], kernelsLB[1 * 72 + 1 * 9 + 6], kernelsLB[2 * 72 + 1 * 9 + 6], kernelsLB[3 * 72 + 1 * 9 + 6], kernelsLB[0 * 72 + 2 * 9 + 6], kernelsLB[1 * 72 + 2 * 9 + 6], kernelsLB[2 * 72 + 2 * 9 + 6], kernelsLB[3 * 72 + 2 * 9 + 6], kernelsLB[0 * 72 + 3 * 9 + 6], kernelsLB[1 * 72 + 3 * 9 + 6], kernelsLB[2 * 72 + 3 * 9 + 6], kernelsLB[3 * 72 + 3 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 7], kernelsLB[1 * 72 + 0 * 9 + 7], kernelsLB[2 * 72 + 0 * 9 + 7], kernelsLB[3 * 72 + 0 * 9 + 7], kernelsLB[0 * 72 + 1 * 9 + 7], kernelsLB[1 * 72 + 1 * 9 + 7], kernelsLB[2 * 72 + 1 * 9 + 7], kernelsLB[3 * 72 + 1 * 9 + 7], kernelsLB[0 * 72 + 2 * 9 + 7], kernelsLB[1 * 72 + 2 * 9 + 7], kernelsLB[2 * 72 + 2 * 9 + 7], kernelsLB[3 * 72 + 2 * 9 + 7], kernelsLB[0 * 72 + 3 * 9 + 7], kernelsLB[1 * 72 + 3 * 9 + 7], kernelsLB[2 * 72 + 3 * 9 + 7], kernelsLB[3 * 72 + 3 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 8], kernelsLB[1 * 72 + 0 * 9 + 8], kernelsLB[2 * 72 + 0 * 9 + 8], kernelsLB[3 * 72 + 0 * 9 + 8], kernelsLB[0 * 72 + 1 * 9 + 8], kernelsLB[1 * 72 + 1 * 9 + 8], kernelsLB[2 * 72 + 1 * 9 + 8], kernelsLB[3 * 72 + 1 * 9 + 8], kernelsLB[0 * 72 + 2 * 9 + 8], kernelsLB[1 * 72 + 2 * 9 + 8], kernelsLB[2 * 72 + 2 * 9 + 8], kernelsLB[3 * 72 + 2 * 9 + 8], kernelsLB[0 * 72 + 3 * 9 + 8], kernelsLB[1 * 72 + 3 * 9 + 8], kernelsLB[2 * 72 + 3 * 9 + 8], kernelsLB[3 * 72 + 3 * 9 + 8]), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 0], kernelsLB[1 * 72 + 4 * 9 + 0], kernelsLB[2 * 72 + 4 * 9 + 0], kernelsLB[3 * 72 + 4 * 9 + 0], kernelsLB[0 * 72 + 5 * 9 + 0], kernelsLB[1 * 72 + 5 * 9 + 0], kernelsLB[2 * 72 + 5 * 9 + 0], kernelsLB[3 * 72 + 5 * 9 + 0], kernelsLB[0 * 72 + 6 * 9 + 0], kernelsLB[1 * 72 + 6 * 9 + 0], kernelsLB[2 * 72 + 6 * 9 + 0], kernelsLB[3 * 72 + 6 * 9 + 0], kernelsLB[0 * 72 + 7 * 9 + 0], kernelsLB[1 * 72 + 7 * 9 + 0], kernelsLB[2 * 72 + 7 * 9 + 0], kernelsLB[3 * 72 + 7 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 1], kernelsLB[1 * 72 + 4 * 9 + 1], kernelsLB[2 * 72 + 4 * 9 + 1], kernelsLB[3 * 72 + 4 * 9 + 1], kernelsLB[0 * 72 + 5 * 9 + 1], kernelsLB[1 * 72 + 5 * 9 + 1], kernelsLB[2 * 72 + 5 * 9 + 1], kernelsLB[3 * 72 + 5 * 9 + 1], kernelsLB[0 * 72 + 6 * 9 + 1], kernelsLB[1 * 72 + 6 * 9 + 1], kernelsLB[2 * 72 + 6 * 9 + 1], kernelsLB[3 * 72 + 6 * 9 + 1], kernelsLB[0 * 72 + 7 * 9 + 1], kernelsLB[1 * 72 + 7 * 9 + 1], kernelsLB[2 * 72 + 7 * 9 + 1], kernelsLB[3 * 72 + 7 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 2], kernelsLB[1 * 72 + 4 * 9 + 2], kernelsLB[2 * 72 + 4 * 9 + 2], kernelsLB[3 * 72 + 4 * 9 + 2], kernelsLB[0 * 72 + 5 * 9 + 2], kernelsLB[1 * 72 + 5 * 9 + 2], kernelsLB[2 * 72 + 5 * 9 + 2], kernelsLB[3 * 72 + 5 * 9 + 2], kernelsLB[0 * 72 + 6 * 9 + 2], kernelsLB[1 * 72 + 6 * 9 + 2], kernelsLB[2 * 72 + 6 * 9 + 2], kernelsLB[3 * 72 + 6 * 9 + 2], kernelsLB[0 * 72 + 7 * 9 + 2], kernelsLB[1 * 72 + 7 * 9 + 2], kernelsLB[2 * 72 + 7 * 9 + 2], kernelsLB[3 * 72 + 7 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 3], kernelsLB[1 * 72 + 4 * 9 + 3], kernelsLB[2 * 72 + 4 * 9 + 3], kernelsLB[3 * 72 + 4 * 9 + 3], kernelsLB[0 * 72 + 5 * 9 + 3], kernelsLB[1 * 72 + 5 * 9 + 3], kernelsLB[2 * 72 + 5 * 9 + 3], kernelsLB[3 * 72 + 5 * 9 + 3], kernelsLB[0 * 72 + 6 * 9 + 3], kernelsLB[1 * 72 + 6 * 9 + 3], kernelsLB[2 * 72 + 6 * 9 + 3], kernelsLB[3 * 72 + 6 * 9 + 3], kernelsLB[0 * 72 + 7 * 9 + 3], kernelsLB[1 * 72 + 7 * 9 + 3], kernelsLB[2 * 72 + 7 * 9 + 3], kernelsLB[3 * 72 + 7 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 4], kernelsLB[1 * 72 + 4 * 9 + 4], kernelsLB[2 * 72 + 4 * 9 + 4], kernelsLB[3 * 72 + 4 * 9 + 4], kernelsLB[0 * 72 + 5 * 9 + 4], kernelsLB[1 * 72 + 5 * 9 + 4], kernelsLB[2 * 72 + 5 * 9 + 4], kernelsLB[3 * 72 + 5 * 9 + 4], kernelsLB[0 * 72 + 6 * 9 + 4], kernelsLB[1 * 72 + 6 * 9 + 4], kernelsLB[2 * 72 + 6 * 9 + 4], kernelsLB[3 * 72 + 6 * 9 + 4], kernelsLB[0 * 72 + 7 * 9 + 4], kernelsLB[1 * 72 + 7 * 9 + 4], kernelsLB[2 * 72 + 7 * 9 + 4], kernelsLB[3 * 72 + 7 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 5], kernelsLB[1 * 72 + 4 * 9 + 5], kernelsLB[2 * 72 + 4 * 9 + 5], kernelsLB[3 * 72 + 4 * 9 + 5], kernelsLB[0 * 72 + 5 * 9 + 5], kernelsLB[1 * 72 + 5 * 9 + 5], kernelsLB[2 * 72 + 5 * 9 + 5], kernelsLB[3 * 72 + 5 * 9 + 5], kernelsLB[0 * 72 + 6 * 9 + 5], kernelsLB[1 * 72 + 6 * 9 + 5], kernelsLB[2 * 72 + 6 * 9 + 5], kernelsLB[3 * 72 + 6 * 9 + 5], kernelsLB[0 * 72 + 7 * 9 + 5], kernelsLB[1 * 72 + 7 * 9 + 5], kernelsLB[2 * 72 + 7 * 9 + 5], kernelsLB[3 * 72 + 7 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 6], kernelsLB[1 * 72 + 4 * 9 + 6], kernelsLB[2 * 72 + 4 * 9 + 6], kernelsLB[3 * 72 + 4 * 9 + 6], kernelsLB[0 * 72 + 5 * 9 + 6], kernelsLB[1 * 72 + 5 * 9 + 6], kernelsLB[2 * 72 + 5 * 9 + 6], kernelsLB[3 * 72 + 5 * 9 + 6], kernelsLB[0 * 72 + 6 * 9 + 6], kernelsLB[1 * 72 + 6 * 9 + 6], kernelsLB[2 * 72 + 6 * 9 + 6], kernelsLB[3 * 72 + 6 * 9 + 6], kernelsLB[0 * 72 + 7 * 9 + 6], kernelsLB[1 * 72 + 7 * 9 + 6], kernelsLB[2 * 72 + 7 * 9 + 6], kernelsLB[3 * 72 + 7 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 7], kernelsLB[1 * 72 + 4 * 9 + 7], kernelsLB[2 * 72 + 4 * 9 + 7], kernelsLB[3 * 72 + 4 * 9 + 7], kernelsLB[0 * 72 + 5 * 9 + 7], kernelsLB[1 * 72 + 5 * 9 + 7], kernelsLB[2 * 72 + 5 * 9 + 7], kernelsLB[3 * 72 + 5 * 9 + 7], kernelsLB[0 * 72 + 6 * 9 + 7], kernelsLB[1 * 72 + 6 * 9 + 7], kernelsLB[2 * 72 + 6 * 9 + 7], kernelsLB[3 * 72 + 6 * 9 + 7], kernelsLB[0 * 72 + 7 * 9 + 7], kernelsLB[1 * 72 + 7 * 9 + 7], kernelsLB[2 * 72 + 7 * 9 + 7], kernelsLB[3 * 72 + 7 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 8], kernelsLB[1 * 72 + 4 * 9 + 8], kernelsLB[2 * 72 + 4 * 9 + 8], kernelsLB[3 * 72 + 4 * 9 + 8], kernelsLB[0 * 72 + 5 * 9 + 8], kernelsLB[1 * 72 + 5 * 9 + 8], kernelsLB[2 * 72 + 5 * 9 + 8], kernelsLB[3 * 72 + 5 * 9 + 8], kernelsLB[0 * 72 + 6 * 9 + 8], kernelsLB[1 * 72 + 6 * 9 + 8], kernelsLB[2 * 72 + 6 * 9 + 8], kernelsLB[3 * 72 + 6 * 9 + 8], kernelsLB[0 * 72 + 7 * 9 + 8], kernelsLB[1 * 72 + 7 * 9 + 8], kernelsLB[2 * 72 + 7 * 9 + 8], kernelsLB[3 * 72 + 7 * 9 + 8]), target2);\n\ttarget2 = RELU(target2);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 7\n//!DESC L7\n//!IN tex3, tex4\n//!OUT tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nconst static MF kernelsLA[9 * 8 * 4] = {\n\t 2.5042e-02, -5.3266e-02,  3.8484e-02,\n\t 3.7189e-03,  1.0493e-01,  1.4459e-01,\n\t-3.7442e-02, -1.5744e-01,  1.9957e-01,\n\t-1.9203e-02,  1.6256e-02,  4.2906e-03,\n\t-3.1637e-02,  5.0287e-01, -6.9504e-02,\n\t 1.4677e-03, -8.9984e-02, -9.0376e-02,\n\t 4.0578e-02,  2.4004e-02,  3.4044e-03,\n\t 7.5916e-02, -1.3564e-01, -9.0296e-02,\n\t 3.4156e-02,  7.2494e-02, -2.0037e-02,\n\t-6.4614e-02, -1.7301e-03, -3.3444e-02,\n\t-2.7950e-01,  7.1351e-01,  4.2825e-02,\n\t 2.4797e-02,  5.4162e-04, -8.9676e-02,\n\t 3.8002e-02, -2.7692e-02, -1.7757e-02,\n\t 1.9356e-01,  1.9598e-02, -1.0862e-01,\n\t 2.5734e-02,  1.1703e-02, -7.3912e-02,\n\t-6.0213e-04,  1.6024e-01, -6.4591e-03,\n\t 3.1779e-02, -3.1049e-01,  1.2684e-02,\n\t-1.0098e-01, -1.8839e-01,  5.1387e-02,\n\t 5.2004e-02,  3.1489e-01,  5.9716e-01,\n\t-7.2238e-02,  3.4332e-01, -2.0655e-01,\n\t 1.1013e-03, -5.0328e-02, -4.6118e-02,\n\t 9.4442e-04,  2.7964e-02,  1.7672e-02,\n\t-8.6022e-02, -3.8280e-02,  2.8017e-04,\n\t 3.3824e-02, -6.7883e-02,  1.0529e-02,\n\t-6.5982e-02,  1.1385e-01,  3.0091e-03,\n\t 1.2330e-01,  6.1876e-01,  5.7145e-02,\n\t-4.3835e-02, -6.8186e-01, -1.0917e-01,\n\t 3.2006e-02, -2.0627e-03, -6.9043e-02,\n\t 7.2219e-02, -3.2393e-01, -2.6657e-02,\n\t 1.3523e-02,  1.8099e-01,  4.9168e-02,\n\t 7.1367e-02,  9.8283e-02,  1.0425e-01,\n\t 2.2286e-01, -5.9374e-01,  1.0014e-01,\n\t 6.5700e-02,  1.3618e-02, -7.4045e-02,\n\t 1.0481e-01,  3.0734e-02,  1.0431e-02,\n\t-2.1314e-01, -7.2817e-02,  1.2036e-01,\n\t-5.4180e-02,  1.0500e-01,  2.7821e-02,\n\t-5.0657e-02,  8.7702e-02,  7.0234e-02,\n\t 9.0349e-02,  1.4905e-01,  1.1612e-01,\n\t 5.9924e-02,  2.4928e-01,  1.7078e-01,\n\t-5.9110e-02, -7.4252e-02,  9.8241e-03,\n\t-1.2006e-01,  1.3879e-01, -1.4322e-02,\n\t-7.5463e-02,  1.4407e-02, -6.9202e-03,\n\t 7.0279e-02,  1.7065e-01, -2.5150e-01,\n\t-2.6289e-02,  3.8421e-01, -2.2051e-01,\n\t-2.8918e-02,  4.0074e-02, -7.1296e-02,\n\t 1.0357e-01, -1.8885e-01,  2.3780e-02,\n\t-1.8884e-01, -4.3326e-01, -1.1465e-01,\n\t 3.3497e-02, -1.3462e-01, -3.4127e-02,\n\t-1.2731e-02,  5.4326e-02, -2.6581e-02,\n\t 5.1753e-02,  6.8200e-03,  4.3246e-03,\n\t-6.9963e-02, -1.5618e-01,  2.5192e-01,\n\t 2.2890e-02,  6.1421e-02,  5.2832e-02,\n\t-9.8369e-02, -1.1452e-01,  1.7420e-01,\n\t 2.0392e-01, -1.1322e-01,  9.8462e-02,\n\t-3.3547e-02, -2.8993e-01,  7.0080e-02,\n\t 8.2478e-02, -1.9881e-01,  1.2849e-01,\n\t-2.7802e-01, -1.5621e-01,  6.2712e-02,\n\t 1.3028e-02,  1.4716e-01,  2.0434e-02,\n\t-4.4071e-01,  3.8359e-01, -1.6655e-03,\n\t-2.0297e-01,  1.5631e-01,  7.7086e-02,\n\t 9.6714e-03, -5.5842e-03,  7.9155e-03,\n\t 1.4525e-01, -3.2228e-01,  1.1454e-01,\n\t 1.4527e-01, -3.0399e-02, -6.7043e-02,\n\t 9.4233e-03, -1.1296e-02, -1.0927e-01,\n\t 7.9300e-02,  5.5286e-02, -1.1558e-01,\n\t 3.8173e-01, -5.4351e-02, -1.7890e-01,\n\t 5.4882e-02,  1.5119e-01,  1.8363e-01,\n\t-8.8223e-02, -9.0083e-02,  4.8221e-01,\n\t 4.0890e-02,  5.6429e-02, -2.8538e-01,\n\t 1.2102e-02, -1.8177e-02, -3.1643e-03,\n\t-6.9064e-02,  3.1853e-04, -7.0113e-02,\n\t 9.7308e-02,  1.0691e-01, -6.5919e-02,\n\t-1.4536e-40, -1.7049e-40, -2.6781e-40,\n\t 4.5792e-40,  1.4489e-40,  1.3645e-40,\n\t-5.8774e-40, -2.2505e-40, -4.7571e-40,\n\t 3.3670e-40,  1.5398e-40, -3.3819e-40,\n\t 2.6303e-40, -1.9434e-40, -5.5555e-40,\n\t-4.3830e-40, -2.8750e-40, -3.0788e-41,\n\t 5.6364e-40,  3.1307e-40, -2.3064e-41,\n\t 2.8909e-40, -5.8115e-40,  2.9852e-41,\n\t-1.9273e-40, -7.5503e-41, -6.0335e-40,\n\t 5.8073e-40,  2.9252e-40, -1.3038e-40,\n\t 5.2260e-40,  3.8172e-40, -2.0389e-40,\n\t-2.1905e-41,  1.8473e-40, -2.9226e-40,\n\t 2.9957e-41,  2.6068e-40,  6.1324e-40,\n\t-4.3013e-41,  5.1421e-40, -4.1157e-40,\n\t 2.1416e-41, -1.6614e-40, -3.0843e-42,\n\t-4.3402e-40,  2.8507e-40,  1.1560e-40,\n\t 3.8826e-40, -3.0797e-40, -6.0685e-40,\n\t 5.4170e-40, -6.1858e-40,  9.3049e-41,\n\t-1.9491e-40, -1.9211e-40, -6.2723e-40,\n\t 3.9906e-40,  1.2356e-40,  3.8682e-40,\n\t 2.8630e-40,  6.2303e-40,  5.3034e-40,\n\t-4.1904e-40,  4.8916e-40, -3.6125e-40,\n\t-5.5393e-40, -2.4980e-40, -6.1877e-40,\n\t 2.7289e-40, -1.8348e-40, -5.6663e-40\n};\n\nconst static MF4 biasLA = { 8.7612e-02,  5.9126e-01,  4.6709e-03, -1.1559e-39 };\n\nconst static MF kernelsLB[9 * 8 * 4] = {\n\t 2.5152e-02, -3.2878e-02,  2.1626e-02,\n\t 1.9879e-01,  2.9080e-02, -3.0331e-03,\n\t-2.3380e-01, -2.3578e-02,  1.1871e-01,\n\t-3.1824e-02, -5.5095e-02,  3.1338e-02,\n\t-3.2199e-02, -4.3820e-01,  4.1391e-02,\n\t-4.1207e-02,  3.7475e-01, -1.8548e-01,\n\t-1.4460e-02, -8.7834e-02, -3.2343e-02,\n\t 2.4023e-01,  7.1916e-01, -1.8559e-01,\n\t-6.7635e-03, -9.4409e-02, -1.7890e-02,\n\t-5.8334e-02,  1.8886e-01,  6.1547e-02,\n\t-2.6152e-01,  6.6722e-01, -1.2486e-01,\n\t-4.8128e-02,  1.0510e-01, -4.2619e-02,\n\t 3.0101e-03,  9.6380e-02,  6.6140e-02,\n\t 1.0201e-01, -2.3240e-01, -1.8356e-01,\n\t 4.0019e-02,  2.2985e-01, -1.2980e-01,\n\t-1.1400e-01, -1.9221e-01, -3.4158e-02,\n\t 2.2871e-02, -6.8684e-01, -1.0856e-02,\n\t 2.6311e-02,  2.5422e-02, -1.5190e-02,\n\t 3.2182e-02, -5.6346e-02,  3.2655e-02,\n\t-1.6912e-02,  8.4264e-02, -7.9521e-02,\n\t 1.2788e-03, -7.1110e-02,  8.6585e-02,\n\t-4.2829e-02,  1.0778e-01, -6.8129e-02,\n\t 5.8156e-03, -2.3998e-01,  1.9052e-01,\n\t-4.1855e-02,  1.0140e-01, -1.7139e-02,\n\t 5.2301e-40, -2.9923e-40,  3.8688e-41,\n\t 3.1575e-40,  1.1504e-40,  5.5655e-40,\n\t-3.4499e-40,  2.3050e-40, -6.3766e-41,\n\t 1.3282e-40,  4.5849e-40,  3.5308e-40,\n\t-2.6657e-41,  5.9829e-40,  3.2791e-40,\n\t-2.8348e-40,  2.5810e-40,  5.5791e-40,\n\t 4.2613e-40,  3.2607e-40, -2.0789e-40,\n\t-3.9054e-40, -2.5608e-40, -2.7638e-40,\n\t 4.5027e-40,  2.7065e-40, -4.5593e-40,\n\t 1.6336e-40, -2.0391e-40, -5.9017e-41,\n\t-7.9899e-41, -2.9870e-40,  5.6390e-40,\n\t-2.5560e-41, -1.9786e-40,  9.4700e-41,\n\t-7.4049e-41, -2.3902e-40, -2.8497e-40,\n\t-1.8912e-40, -1.5589e-40,  5.5463e-40,\n\t-2.1782e-40, -1.9532e-40, -2.3785e-40,\n\t 2.7539e-40,  4.0214e-40,  2.0732e-40,\n\t 7.0120e-41, -4.4200e-40,  7.3787e-41,\n\t 2.6452e-40,  1.1970e-40,  2.8298e-40,\n\t 5.2721e-40,  1.9304e-40, -3.8489e-40,\n\t-3.9759e-40,  2.6184e-40,  1.2594e-40,\n\t 1.5831e-40,  3.7179e-40, -3.4915e-40,\n\t-1.7681e-40, -6.9657e-41, -4.0746e-40,\n\t 8.0894e-41,  1.6950e-40, -1.0574e-40,\n\t-1.0590e-40,  2.8466e-41, -2.7558e-40,\n\t-5.4027e-40,  4.4355e-41, -3.2144e-40,\n\t-4.8838e-41, -3.8595e-40,  2.5064e-40,\n\t 4.0365e-40, -1.0195e-40,  4.8356e-40,\n\t 4.4499e-40, -4.4871e-40, -2.4561e-40,\n\t 4.1687e-40,  5.2239e-40, -5.7603e-41,\n\t-1.5211e-40, -3.5768e-40,  3.6385e-40,\n\t 1.6089e-40,  4.1624e-40,  4.5114e-40,\n\t 1.6438e-40, -3.6331e-40,  6.4961e-41,\n\t 5.0899e-40,  6.1036e-40,  2.4828e-40,\n\t 5.8681e-40, -5.7259e-40, -1.5371e-40,\n\t 5.2654e-40,  4.7412e-40, -2.0265e-40,\n\t-4.8621e-41,  4.9497e-40,  3.0176e-40,\n\t 4.2235e-40,  4.5381e-40,  4.6501e-40,\n\t-1.6124e-40, -1.9449e-40,  5.1497e-40,\n\t-1.2891e-40, -1.6549e-40,  4.8348e-40,\n\t-2.0735e-40,  1.3423e-41, -4.4109e-40,\n\t-5.4218e-40, -1.1537e-40, -1.1664e-40,\n\t 5.6006e-40,  3.4109e-40, -3.1434e-40,\n\t 3.4969e-40, -5.3459e-40,  3.9245e-41,\n\t 2.4028e-40,  5.7774e-40, -6.2973e-40,\n\t 1.8802e-40, -4.6258e-41, -5.0716e-40,\n\t 3.4962e-40, -6.2313e-41, -2.7290e-40,\n\t-5.2709e-40, -3.2225e-40,  2.4245e-40,\n\t-3.6300e-40, -2.0794e-40,  4.0541e-40,\n\t-3.5157e-02,  6.8337e-02,  1.6149e-02,\n\t-5.8650e-03,  6.0605e-01,  3.1738e-02,\n\t 9.3306e-02,  2.1499e-01,  1.3609e-01,\n\t 6.4043e-02, -1.0253e-02, -6.2813e-04,\n\t 4.6828e-02, -3.9619e-01, -9.2633e-03,\n\t-8.1752e-02,  9.9083e-02,  4.4296e-03,\n\t 7.1594e-02,  3.9860e-02,  8.1088e-02,\n\t 1.7750e-01, -1.2381e-01,  1.4476e-01,\n\t 2.3416e-02,  1.2819e-01,  1.0816e-02,\n\t 5.5296e-02,  5.5199e-02, -2.1253e-02,\n\t 1.7214e-01,  2.0542e-01, -3.7859e-03,\n\t 1.2831e-01,  3.2087e-02, -5.1851e-02,\n\t-2.3686e-02,  1.2271e-01, -1.6009e-02,\n\t-2.0176e-01,  7.4757e-01, -3.4526e-02,\n\t-4.7055e-02, -3.7099e-01, -1.9216e-01,\n\t-8.8030e-02, -2.5853e-02, -1.7087e-02,\n\t-2.0533e-01,  1.5214e-01, -1.8639e-03,\n\t-1.1236e-01, -2.4612e-01,  6.3094e-02,\n\t 2.3829e-02, -5.0078e-03,  5.3854e-02,\n\t-9.6934e-03,  3.7047e-02,  4.7325e-01,\n\t 5.6975e-03, -8.6108e-02,  6.5569e-02,\n\t-3.9768e-03,  2.0580e-02, -4.1931e-02,\n\t 6.9577e-02, -1.0416e-01, -2.5037e-03,\n\t-1.9198e-02,  6.2027e-02, -1.0833e-02\n};\n\nconst static MF4 biasLB = { 2.3381e-02, -1.2136e-40, -5.6040e-39,  3.7100e-02 };\n\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 tl2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 target1 = biasLA;\n\ttarget1 = MulAdd(tl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 0], kernelsLA[1 * 72 + 0 * 9 + 0], kernelsLA[2 * 72 + 0 * 9 + 0], kernelsLA[3 * 72 + 0 * 9 + 0], kernelsLA[0 * 72 + 1 * 9 + 0], kernelsLA[1 * 72 + 1 * 9 + 0], kernelsLA[2 * 72 + 1 * 9 + 0], kernelsLA[3 * 72 + 1 * 9 + 0], kernelsLA[0 * 72 + 2 * 9 + 0], kernelsLA[1 * 72 + 2 * 9 + 0], kernelsLA[2 * 72 + 2 * 9 + 0], kernelsLA[3 * 72 + 2 * 9 + 0], kernelsLA[0 * 72 + 3 * 9 + 0], kernelsLA[1 * 72 + 3 * 9 + 0], kernelsLA[2 * 72 + 3 * 9 + 0], kernelsLA[3 * 72 + 3 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 1], kernelsLA[1 * 72 + 0 * 9 + 1], kernelsLA[2 * 72 + 0 * 9 + 1], kernelsLA[3 * 72 + 0 * 9 + 1], kernelsLA[0 * 72 + 1 * 9 + 1], kernelsLA[1 * 72 + 1 * 9 + 1], kernelsLA[2 * 72 + 1 * 9 + 1], kernelsLA[3 * 72 + 1 * 9 + 1], kernelsLA[0 * 72 + 2 * 9 + 1], kernelsLA[1 * 72 + 2 * 9 + 1], kernelsLA[2 * 72 + 2 * 9 + 1], kernelsLA[3 * 72 + 2 * 9 + 1], kernelsLA[0 * 72 + 3 * 9 + 1], kernelsLA[1 * 72 + 3 * 9 + 1], kernelsLA[2 * 72 + 3 * 9 + 1], kernelsLA[3 * 72 + 3 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 2], kernelsLA[1 * 72 + 0 * 9 + 2], kernelsLA[2 * 72 + 0 * 9 + 2], kernelsLA[3 * 72 + 0 * 9 + 2], kernelsLA[0 * 72 + 1 * 9 + 2], kernelsLA[1 * 72 + 1 * 9 + 2], kernelsLA[2 * 72 + 1 * 9 + 2], kernelsLA[3 * 72 + 1 * 9 + 2], kernelsLA[0 * 72 + 2 * 9 + 2], kernelsLA[1 * 72 + 2 * 9 + 2], kernelsLA[2 * 72 + 2 * 9 + 2], kernelsLA[3 * 72 + 2 * 9 + 2], kernelsLA[0 * 72 + 3 * 9 + 2], kernelsLA[1 * 72 + 3 * 9 + 2], kernelsLA[2 * 72 + 3 * 9 + 2], kernelsLA[3 * 72 + 3 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 3], kernelsLA[1 * 72 + 0 * 9 + 3], kernelsLA[2 * 72 + 0 * 9 + 3], kernelsLA[3 * 72 + 0 * 9 + 3], kernelsLA[0 * 72 + 1 * 9 + 3], kernelsLA[1 * 72 + 1 * 9 + 3], kernelsLA[2 * 72 + 1 * 9 + 3], kernelsLA[3 * 72 + 1 * 9 + 3], kernelsLA[0 * 72 + 2 * 9 + 3], kernelsLA[1 * 72 + 2 * 9 + 3], kernelsLA[2 * 72 + 2 * 9 + 3], kernelsLA[3 * 72 + 2 * 9 + 3], kernelsLA[0 * 72 + 3 * 9 + 3], kernelsLA[1 * 72 + 3 * 9 + 3], kernelsLA[2 * 72 + 3 * 9 + 3], kernelsLA[3 * 72 + 3 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 4], kernelsLA[1 * 72 + 0 * 9 + 4], kernelsLA[2 * 72 + 0 * 9 + 4], kernelsLA[3 * 72 + 0 * 9 + 4], kernelsLA[0 * 72 + 1 * 9 + 4], kernelsLA[1 * 72 + 1 * 9 + 4], kernelsLA[2 * 72 + 1 * 9 + 4], kernelsLA[3 * 72 + 1 * 9 + 4], kernelsLA[0 * 72 + 2 * 9 + 4], kernelsLA[1 * 72 + 2 * 9 + 4], kernelsLA[2 * 72 + 2 * 9 + 4], kernelsLA[3 * 72 + 2 * 9 + 4], kernelsLA[0 * 72 + 3 * 9 + 4], kernelsLA[1 * 72 + 3 * 9 + 4], kernelsLA[2 * 72 + 3 * 9 + 4], kernelsLA[3 * 72 + 3 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 5], kernelsLA[1 * 72 + 0 * 9 + 5], kernelsLA[2 * 72 + 0 * 9 + 5], kernelsLA[3 * 72 + 0 * 9 + 5], kernelsLA[0 * 72 + 1 * 9 + 5], kernelsLA[1 * 72 + 1 * 9 + 5], kernelsLA[2 * 72 + 1 * 9 + 5], kernelsLA[3 * 72 + 1 * 9 + 5], kernelsLA[0 * 72 + 2 * 9 + 5], kernelsLA[1 * 72 + 2 * 9 + 5], kernelsLA[2 * 72 + 2 * 9 + 5], kernelsLA[3 * 72 + 2 * 9 + 5], kernelsLA[0 * 72 + 3 * 9 + 5], kernelsLA[1 * 72 + 3 * 9 + 5], kernelsLA[2 * 72 + 3 * 9 + 5], kernelsLA[3 * 72 + 3 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 6], kernelsLA[1 * 72 + 0 * 9 + 6], kernelsLA[2 * 72 + 0 * 9 + 6], kernelsLA[3 * 72 + 0 * 9 + 6], kernelsLA[0 * 72 + 1 * 9 + 6], kernelsLA[1 * 72 + 1 * 9 + 6], kernelsLA[2 * 72 + 1 * 9 + 6], kernelsLA[3 * 72 + 1 * 9 + 6], kernelsLA[0 * 72 + 2 * 9 + 6], kernelsLA[1 * 72 + 2 * 9 + 6], kernelsLA[2 * 72 + 2 * 9 + 6], kernelsLA[3 * 72 + 2 * 9 + 6], kernelsLA[0 * 72 + 3 * 9 + 6], kernelsLA[1 * 72 + 3 * 9 + 6], kernelsLA[2 * 72 + 3 * 9 + 6], kernelsLA[3 * 72 + 3 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 7], kernelsLA[1 * 72 + 0 * 9 + 7], kernelsLA[2 * 72 + 0 * 9 + 7], kernelsLA[3 * 72 + 0 * 9 + 7], kernelsLA[0 * 72 + 1 * 9 + 7], kernelsLA[1 * 72 + 1 * 9 + 7], kernelsLA[2 * 72 + 1 * 9 + 7], kernelsLA[3 * 72 + 1 * 9 + 7], kernelsLA[0 * 72 + 2 * 9 + 7], kernelsLA[1 * 72 + 2 * 9 + 7], kernelsLA[2 * 72 + 2 * 9 + 7], kernelsLA[3 * 72 + 2 * 9 + 7], kernelsLA[0 * 72 + 3 * 9 + 7], kernelsLA[1 * 72 + 3 * 9 + 7], kernelsLA[2 * 72 + 3 * 9 + 7], kernelsLA[3 * 72 + 3 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 8], kernelsLA[1 * 72 + 0 * 9 + 8], kernelsLA[2 * 72 + 0 * 9 + 8], kernelsLA[3 * 72 + 0 * 9 + 8], kernelsLA[0 * 72 + 1 * 9 + 8], kernelsLA[1 * 72 + 1 * 9 + 8], kernelsLA[2 * 72 + 1 * 9 + 8], kernelsLA[3 * 72 + 1 * 9 + 8], kernelsLA[0 * 72 + 2 * 9 + 8], kernelsLA[1 * 72 + 2 * 9 + 8], kernelsLA[2 * 72 + 2 * 9 + 8], kernelsLA[3 * 72 + 2 * 9 + 8], kernelsLA[0 * 72 + 3 * 9 + 8], kernelsLA[1 * 72 + 3 * 9 + 8], kernelsLA[2 * 72 + 3 * 9 + 8], kernelsLA[3 * 72 + 3 * 9 + 8]), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 0], kernelsLA[1 * 72 + 4 * 9 + 0], kernelsLA[2 * 72 + 4 * 9 + 0], kernelsLA[3 * 72 + 4 * 9 + 0], kernelsLA[0 * 72 + 5 * 9 + 0], kernelsLA[1 * 72 + 5 * 9 + 0], kernelsLA[2 * 72 + 5 * 9 + 0], kernelsLA[3 * 72 + 5 * 9 + 0], kernelsLA[0 * 72 + 6 * 9 + 0], kernelsLA[1 * 72 + 6 * 9 + 0], kernelsLA[2 * 72 + 6 * 9 + 0], kernelsLA[3 * 72 + 6 * 9 + 0], kernelsLA[0 * 72 + 7 * 9 + 0], kernelsLA[1 * 72 + 7 * 9 + 0], kernelsLA[2 * 72 + 7 * 9 + 0], kernelsLA[3 * 72 + 7 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 1], kernelsLA[1 * 72 + 4 * 9 + 1], kernelsLA[2 * 72 + 4 * 9 + 1], kernelsLA[3 * 72 + 4 * 9 + 1], kernelsLA[0 * 72 + 5 * 9 + 1], kernelsLA[1 * 72 + 5 * 9 + 1], kernelsLA[2 * 72 + 5 * 9 + 1], kernelsLA[3 * 72 + 5 * 9 + 1], kernelsLA[0 * 72 + 6 * 9 + 1], kernelsLA[1 * 72 + 6 * 9 + 1], kernelsLA[2 * 72 + 6 * 9 + 1], kernelsLA[3 * 72 + 6 * 9 + 1], kernelsLA[0 * 72 + 7 * 9 + 1], kernelsLA[1 * 72 + 7 * 9 + 1], kernelsLA[2 * 72 + 7 * 9 + 1], kernelsLA[3 * 72 + 7 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 2], kernelsLA[1 * 72 + 4 * 9 + 2], kernelsLA[2 * 72 + 4 * 9 + 2], kernelsLA[3 * 72 + 4 * 9 + 2], kernelsLA[0 * 72 + 5 * 9 + 2], kernelsLA[1 * 72 + 5 * 9 + 2], kernelsLA[2 * 72 + 5 * 9 + 2], kernelsLA[3 * 72 + 5 * 9 + 2], kernelsLA[0 * 72 + 6 * 9 + 2], kernelsLA[1 * 72 + 6 * 9 + 2], kernelsLA[2 * 72 + 6 * 9 + 2], kernelsLA[3 * 72 + 6 * 9 + 2], kernelsLA[0 * 72 + 7 * 9 + 2], kernelsLA[1 * 72 + 7 * 9 + 2], kernelsLA[2 * 72 + 7 * 9 + 2], kernelsLA[3 * 72 + 7 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 3], kernelsLA[1 * 72 + 4 * 9 + 3], kernelsLA[2 * 72 + 4 * 9 + 3], kernelsLA[3 * 72 + 4 * 9 + 3], kernelsLA[0 * 72 + 5 * 9 + 3], kernelsLA[1 * 72 + 5 * 9 + 3], kernelsLA[2 * 72 + 5 * 9 + 3], kernelsLA[3 * 72 + 5 * 9 + 3], kernelsLA[0 * 72 + 6 * 9 + 3], kernelsLA[1 * 72 + 6 * 9 + 3], kernelsLA[2 * 72 + 6 * 9 + 3], kernelsLA[3 * 72 + 6 * 9 + 3], kernelsLA[0 * 72 + 7 * 9 + 3], kernelsLA[1 * 72 + 7 * 9 + 3], kernelsLA[2 * 72 + 7 * 9 + 3], kernelsLA[3 * 72 + 7 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 4], kernelsLA[1 * 72 + 4 * 9 + 4], kernelsLA[2 * 72 + 4 * 9 + 4], kernelsLA[3 * 72 + 4 * 9 + 4], kernelsLA[0 * 72 + 5 * 9 + 4], kernelsLA[1 * 72 + 5 * 9 + 4], kernelsLA[2 * 72 + 5 * 9 + 4], kernelsLA[3 * 72 + 5 * 9 + 4], kernelsLA[0 * 72 + 6 * 9 + 4], kernelsLA[1 * 72 + 6 * 9 + 4], kernelsLA[2 * 72 + 6 * 9 + 4], kernelsLA[3 * 72 + 6 * 9 + 4], kernelsLA[0 * 72 + 7 * 9 + 4], kernelsLA[1 * 72 + 7 * 9 + 4], kernelsLA[2 * 72 + 7 * 9 + 4], kernelsLA[3 * 72 + 7 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 5], kernelsLA[1 * 72 + 4 * 9 + 5], kernelsLA[2 * 72 + 4 * 9 + 5], kernelsLA[3 * 72 + 4 * 9 + 5], kernelsLA[0 * 72 + 5 * 9 + 5], kernelsLA[1 * 72 + 5 * 9 + 5], kernelsLA[2 * 72 + 5 * 9 + 5], kernelsLA[3 * 72 + 5 * 9 + 5], kernelsLA[0 * 72 + 6 * 9 + 5], kernelsLA[1 * 72 + 6 * 9 + 5], kernelsLA[2 * 72 + 6 * 9 + 5], kernelsLA[3 * 72 + 6 * 9 + 5], kernelsLA[0 * 72 + 7 * 9 + 5], kernelsLA[1 * 72 + 7 * 9 + 5], kernelsLA[2 * 72 + 7 * 9 + 5], kernelsLA[3 * 72 + 7 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 6], kernelsLA[1 * 72 + 4 * 9 + 6], kernelsLA[2 * 72 + 4 * 9 + 6], kernelsLA[3 * 72 + 4 * 9 + 6], kernelsLA[0 * 72 + 5 * 9 + 6], kernelsLA[1 * 72 + 5 * 9 + 6], kernelsLA[2 * 72 + 5 * 9 + 6], kernelsLA[3 * 72 + 5 * 9 + 6], kernelsLA[0 * 72 + 6 * 9 + 6], kernelsLA[1 * 72 + 6 * 9 + 6], kernelsLA[2 * 72 + 6 * 9 + 6], kernelsLA[3 * 72 + 6 * 9 + 6], kernelsLA[0 * 72 + 7 * 9 + 6], kernelsLA[1 * 72 + 7 * 9 + 6], kernelsLA[2 * 72 + 7 * 9 + 6], kernelsLA[3 * 72 + 7 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 7], kernelsLA[1 * 72 + 4 * 9 + 7], kernelsLA[2 * 72 + 4 * 9 + 7], kernelsLA[3 * 72 + 4 * 9 + 7], kernelsLA[0 * 72 + 5 * 9 + 7], kernelsLA[1 * 72 + 5 * 9 + 7], kernelsLA[2 * 72 + 5 * 9 + 7], kernelsLA[3 * 72 + 5 * 9 + 7], kernelsLA[0 * 72 + 6 * 9 + 7], kernelsLA[1 * 72 + 6 * 9 + 7], kernelsLA[2 * 72 + 6 * 9 + 7], kernelsLA[3 * 72 + 6 * 9 + 7], kernelsLA[0 * 72 + 7 * 9 + 7], kernelsLA[1 * 72 + 7 * 9 + 7], kernelsLA[2 * 72 + 7 * 9 + 7], kernelsLA[3 * 72 + 7 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 8], kernelsLA[1 * 72 + 4 * 9 + 8], kernelsLA[2 * 72 + 4 * 9 + 8], kernelsLA[3 * 72 + 4 * 9 + 8], kernelsLA[0 * 72 + 5 * 9 + 8], kernelsLA[1 * 72 + 5 * 9 + 8], kernelsLA[2 * 72 + 5 * 9 + 8], kernelsLA[3 * 72 + 5 * 9 + 8], kernelsLA[0 * 72 + 6 * 9 + 8], kernelsLA[1 * 72 + 6 * 9 + 8], kernelsLA[2 * 72 + 6 * 9 + 8], kernelsLA[3 * 72 + 6 * 9 + 8], kernelsLA[0 * 72 + 7 * 9 + 8], kernelsLA[1 * 72 + 7 * 9 + 8], kernelsLA[2 * 72 + 7 * 9 + 8], kernelsLA[3 * 72 + 7 * 9 + 8]), target1);\n\ttarget1 = RELU(target1);\n\n\tMF4 target2 = biasLB;\n\ttarget2 = MulAdd(tl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 0], kernelsLB[1 * 72 + 0 * 9 + 0], kernelsLB[2 * 72 + 0 * 9 + 0], kernelsLB[3 * 72 + 0 * 9 + 0], kernelsLB[0 * 72 + 1 * 9 + 0], kernelsLB[1 * 72 + 1 * 9 + 0], kernelsLB[2 * 72 + 1 * 9 + 0], kernelsLB[3 * 72 + 1 * 9 + 0], kernelsLB[0 * 72 + 2 * 9 + 0], kernelsLB[1 * 72 + 2 * 9 + 0], kernelsLB[2 * 72 + 2 * 9 + 0], kernelsLB[3 * 72 + 2 * 9 + 0], kernelsLB[0 * 72 + 3 * 9 + 0], kernelsLB[1 * 72 + 3 * 9 + 0], kernelsLB[2 * 72 + 3 * 9 + 0], kernelsLB[3 * 72 + 3 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 1], kernelsLB[1 * 72 + 0 * 9 + 1], kernelsLB[2 * 72 + 0 * 9 + 1], kernelsLB[3 * 72 + 0 * 9 + 1], kernelsLB[0 * 72 + 1 * 9 + 1], kernelsLB[1 * 72 + 1 * 9 + 1], kernelsLB[2 * 72 + 1 * 9 + 1], kernelsLB[3 * 72 + 1 * 9 + 1], kernelsLB[0 * 72 + 2 * 9 + 1], kernelsLB[1 * 72 + 2 * 9 + 1], kernelsLB[2 * 72 + 2 * 9 + 1], kernelsLB[3 * 72 + 2 * 9 + 1], kernelsLB[0 * 72 + 3 * 9 + 1], kernelsLB[1 * 72 + 3 * 9 + 1], kernelsLB[2 * 72 + 3 * 9 + 1], kernelsLB[3 * 72 + 3 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 2], kernelsLB[1 * 72 + 0 * 9 + 2], kernelsLB[2 * 72 + 0 * 9 + 2], kernelsLB[3 * 72 + 0 * 9 + 2], kernelsLB[0 * 72 + 1 * 9 + 2], kernelsLB[1 * 72 + 1 * 9 + 2], kernelsLB[2 * 72 + 1 * 9 + 2], kernelsLB[3 * 72 + 1 * 9 + 2], kernelsLB[0 * 72 + 2 * 9 + 2], kernelsLB[1 * 72 + 2 * 9 + 2], kernelsLB[2 * 72 + 2 * 9 + 2], kernelsLB[3 * 72 + 2 * 9 + 2], kernelsLB[0 * 72 + 3 * 9 + 2], kernelsLB[1 * 72 + 3 * 9 + 2], kernelsLB[2 * 72 + 3 * 9 + 2], kernelsLB[3 * 72 + 3 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 3], kernelsLB[1 * 72 + 0 * 9 + 3], kernelsLB[2 * 72 + 0 * 9 + 3], kernelsLB[3 * 72 + 0 * 9 + 3], kernelsLB[0 * 72 + 1 * 9 + 3], kernelsLB[1 * 72 + 1 * 9 + 3], kernelsLB[2 * 72 + 1 * 9 + 3], kernelsLB[3 * 72 + 1 * 9 + 3], kernelsLB[0 * 72 + 2 * 9 + 3], kernelsLB[1 * 72 + 2 * 9 + 3], kernelsLB[2 * 72 + 2 * 9 + 3], kernelsLB[3 * 72 + 2 * 9 + 3], kernelsLB[0 * 72 + 3 * 9 + 3], kernelsLB[1 * 72 + 3 * 9 + 3], kernelsLB[2 * 72 + 3 * 9 + 3], kernelsLB[3 * 72 + 3 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 4], kernelsLB[1 * 72 + 0 * 9 + 4], kernelsLB[2 * 72 + 0 * 9 + 4], kernelsLB[3 * 72 + 0 * 9 + 4], kernelsLB[0 * 72 + 1 * 9 + 4], kernelsLB[1 * 72 + 1 * 9 + 4], kernelsLB[2 * 72 + 1 * 9 + 4], kernelsLB[3 * 72 + 1 * 9 + 4], kernelsLB[0 * 72 + 2 * 9 + 4], kernelsLB[1 * 72 + 2 * 9 + 4], kernelsLB[2 * 72 + 2 * 9 + 4], kernelsLB[3 * 72 + 2 * 9 + 4], kernelsLB[0 * 72 + 3 * 9 + 4], kernelsLB[1 * 72 + 3 * 9 + 4], kernelsLB[2 * 72 + 3 * 9 + 4], kernelsLB[3 * 72 + 3 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 5], kernelsLB[1 * 72 + 0 * 9 + 5], kernelsLB[2 * 72 + 0 * 9 + 5], kernelsLB[3 * 72 + 0 * 9 + 5], kernelsLB[0 * 72 + 1 * 9 + 5], kernelsLB[1 * 72 + 1 * 9 + 5], kernelsLB[2 * 72 + 1 * 9 + 5], kernelsLB[3 * 72 + 1 * 9 + 5], kernelsLB[0 * 72 + 2 * 9 + 5], kernelsLB[1 * 72 + 2 * 9 + 5], kernelsLB[2 * 72 + 2 * 9 + 5], kernelsLB[3 * 72 + 2 * 9 + 5], kernelsLB[0 * 72 + 3 * 9 + 5], kernelsLB[1 * 72 + 3 * 9 + 5], kernelsLB[2 * 72 + 3 * 9 + 5], kernelsLB[3 * 72 + 3 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 6], kernelsLB[1 * 72 + 0 * 9 + 6], kernelsLB[2 * 72 + 0 * 9 + 6], kernelsLB[3 * 72 + 0 * 9 + 6], kernelsLB[0 * 72 + 1 * 9 + 6], kernelsLB[1 * 72 + 1 * 9 + 6], kernelsLB[2 * 72 + 1 * 9 + 6], kernelsLB[3 * 72 + 1 * 9 + 6], kernelsLB[0 * 72 + 2 * 9 + 6], kernelsLB[1 * 72 + 2 * 9 + 6], kernelsLB[2 * 72 + 2 * 9 + 6], kernelsLB[3 * 72 + 2 * 9 + 6], kernelsLB[0 * 72 + 3 * 9 + 6], kernelsLB[1 * 72 + 3 * 9 + 6], kernelsLB[2 * 72 + 3 * 9 + 6], kernelsLB[3 * 72 + 3 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 7], kernelsLB[1 * 72 + 0 * 9 + 7], kernelsLB[2 * 72 + 0 * 9 + 7], kernelsLB[3 * 72 + 0 * 9 + 7], kernelsLB[0 * 72 + 1 * 9 + 7], kernelsLB[1 * 72 + 1 * 9 + 7], kernelsLB[2 * 72 + 1 * 9 + 7], kernelsLB[3 * 72 + 1 * 9 + 7], kernelsLB[0 * 72 + 2 * 9 + 7], kernelsLB[1 * 72 + 2 * 9 + 7], kernelsLB[2 * 72 + 2 * 9 + 7], kernelsLB[3 * 72 + 2 * 9 + 7], kernelsLB[0 * 72 + 3 * 9 + 7], kernelsLB[1 * 72 + 3 * 9 + 7], kernelsLB[2 * 72 + 3 * 9 + 7], kernelsLB[3 * 72 + 3 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 8], kernelsLB[1 * 72 + 0 * 9 + 8], kernelsLB[2 * 72 + 0 * 9 + 8], kernelsLB[3 * 72 + 0 * 9 + 8], kernelsLB[0 * 72 + 1 * 9 + 8], kernelsLB[1 * 72 + 1 * 9 + 8], kernelsLB[2 * 72 + 1 * 9 + 8], kernelsLB[3 * 72 + 1 * 9 + 8], kernelsLB[0 * 72 + 2 * 9 + 8], kernelsLB[1 * 72 + 2 * 9 + 8], kernelsLB[2 * 72 + 2 * 9 + 8], kernelsLB[3 * 72 + 2 * 9 + 8], kernelsLB[0 * 72 + 3 * 9 + 8], kernelsLB[1 * 72 + 3 * 9 + 8], kernelsLB[2 * 72 + 3 * 9 + 8], kernelsLB[3 * 72 + 3 * 9 + 8]), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 0], kernelsLB[1 * 72 + 4 * 9 + 0], kernelsLB[2 * 72 + 4 * 9 + 0], kernelsLB[3 * 72 + 4 * 9 + 0], kernelsLB[0 * 72 + 5 * 9 + 0], kernelsLB[1 * 72 + 5 * 9 + 0], kernelsLB[2 * 72 + 5 * 9 + 0], kernelsLB[3 * 72 + 5 * 9 + 0], kernelsLB[0 * 72 + 6 * 9 + 0], kernelsLB[1 * 72 + 6 * 9 + 0], kernelsLB[2 * 72 + 6 * 9 + 0], kernelsLB[3 * 72 + 6 * 9 + 0], kernelsLB[0 * 72 + 7 * 9 + 0], kernelsLB[1 * 72 + 7 * 9 + 0], kernelsLB[2 * 72 + 7 * 9 + 0], kernelsLB[3 * 72 + 7 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 1], kernelsLB[1 * 72 + 4 * 9 + 1], kernelsLB[2 * 72 + 4 * 9 + 1], kernelsLB[3 * 72 + 4 * 9 + 1], kernelsLB[0 * 72 + 5 * 9 + 1], kernelsLB[1 * 72 + 5 * 9 + 1], kernelsLB[2 * 72 + 5 * 9 + 1], kernelsLB[3 * 72 + 5 * 9 + 1], kernelsLB[0 * 72 + 6 * 9 + 1], kernelsLB[1 * 72 + 6 * 9 + 1], kernelsLB[2 * 72 + 6 * 9 + 1], kernelsLB[3 * 72 + 6 * 9 + 1], kernelsLB[0 * 72 + 7 * 9 + 1], kernelsLB[1 * 72 + 7 * 9 + 1], kernelsLB[2 * 72 + 7 * 9 + 1], kernelsLB[3 * 72 + 7 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 2], kernelsLB[1 * 72 + 4 * 9 + 2], kernelsLB[2 * 72 + 4 * 9 + 2], kernelsLB[3 * 72 + 4 * 9 + 2], kernelsLB[0 * 72 + 5 * 9 + 2], kernelsLB[1 * 72 + 5 * 9 + 2], kernelsLB[2 * 72 + 5 * 9 + 2], kernelsLB[3 * 72 + 5 * 9 + 2], kernelsLB[0 * 72 + 6 * 9 + 2], kernelsLB[1 * 72 + 6 * 9 + 2], kernelsLB[2 * 72 + 6 * 9 + 2], kernelsLB[3 * 72 + 6 * 9 + 2], kernelsLB[0 * 72 + 7 * 9 + 2], kernelsLB[1 * 72 + 7 * 9 + 2], kernelsLB[2 * 72 + 7 * 9 + 2], kernelsLB[3 * 72 + 7 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 3], kernelsLB[1 * 72 + 4 * 9 + 3], kernelsLB[2 * 72 + 4 * 9 + 3], kernelsLB[3 * 72 + 4 * 9 + 3], kernelsLB[0 * 72 + 5 * 9 + 3], kernelsLB[1 * 72 + 5 * 9 + 3], kernelsLB[2 * 72 + 5 * 9 + 3], kernelsLB[3 * 72 + 5 * 9 + 3], kernelsLB[0 * 72 + 6 * 9 + 3], kernelsLB[1 * 72 + 6 * 9 + 3], kernelsLB[2 * 72 + 6 * 9 + 3], kernelsLB[3 * 72 + 6 * 9 + 3], kernelsLB[0 * 72 + 7 * 9 + 3], kernelsLB[1 * 72 + 7 * 9 + 3], kernelsLB[2 * 72 + 7 * 9 + 3], kernelsLB[3 * 72 + 7 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 4], kernelsLB[1 * 72 + 4 * 9 + 4], kernelsLB[2 * 72 + 4 * 9 + 4], kernelsLB[3 * 72 + 4 * 9 + 4], kernelsLB[0 * 72 + 5 * 9 + 4], kernelsLB[1 * 72 + 5 * 9 + 4], kernelsLB[2 * 72 + 5 * 9 + 4], kernelsLB[3 * 72 + 5 * 9 + 4], kernelsLB[0 * 72 + 6 * 9 + 4], kernelsLB[1 * 72 + 6 * 9 + 4], kernelsLB[2 * 72 + 6 * 9 + 4], kernelsLB[3 * 72 + 6 * 9 + 4], kernelsLB[0 * 72 + 7 * 9 + 4], kernelsLB[1 * 72 + 7 * 9 + 4], kernelsLB[2 * 72 + 7 * 9 + 4], kernelsLB[3 * 72 + 7 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 5], kernelsLB[1 * 72 + 4 * 9 + 5], kernelsLB[2 * 72 + 4 * 9 + 5], kernelsLB[3 * 72 + 4 * 9 + 5], kernelsLB[0 * 72 + 5 * 9 + 5], kernelsLB[1 * 72 + 5 * 9 + 5], kernelsLB[2 * 72 + 5 * 9 + 5], kernelsLB[3 * 72 + 5 * 9 + 5], kernelsLB[0 * 72 + 6 * 9 + 5], kernelsLB[1 * 72 + 6 * 9 + 5], kernelsLB[2 * 72 + 6 * 9 + 5], kernelsLB[3 * 72 + 6 * 9 + 5], kernelsLB[0 * 72 + 7 * 9 + 5], kernelsLB[1 * 72 + 7 * 9 + 5], kernelsLB[2 * 72 + 7 * 9 + 5], kernelsLB[3 * 72 + 7 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 6], kernelsLB[1 * 72 + 4 * 9 + 6], kernelsLB[2 * 72 + 4 * 9 + 6], kernelsLB[3 * 72 + 4 * 9 + 6], kernelsLB[0 * 72 + 5 * 9 + 6], kernelsLB[1 * 72 + 5 * 9 + 6], kernelsLB[2 * 72 + 5 * 9 + 6], kernelsLB[3 * 72 + 5 * 9 + 6], kernelsLB[0 * 72 + 6 * 9 + 6], kernelsLB[1 * 72 + 6 * 9 + 6], kernelsLB[2 * 72 + 6 * 9 + 6], kernelsLB[3 * 72 + 6 * 9 + 6], kernelsLB[0 * 72 + 7 * 9 + 6], kernelsLB[1 * 72 + 7 * 9 + 6], kernelsLB[2 * 72 + 7 * 9 + 6], kernelsLB[3 * 72 + 7 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 7], kernelsLB[1 * 72 + 4 * 9 + 7], kernelsLB[2 * 72 + 4 * 9 + 7], kernelsLB[3 * 72 + 4 * 9 + 7], kernelsLB[0 * 72 + 5 * 9 + 7], kernelsLB[1 * 72 + 5 * 9 + 7], kernelsLB[2 * 72 + 5 * 9 + 7], kernelsLB[3 * 72 + 5 * 9 + 7], kernelsLB[0 * 72 + 6 * 9 + 7], kernelsLB[1 * 72 + 6 * 9 + 7], kernelsLB[2 * 72 + 6 * 9 + 7], kernelsLB[3 * 72 + 6 * 9 + 7], kernelsLB[0 * 72 + 7 * 9 + 7], kernelsLB[1 * 72 + 7 * 9 + 7], kernelsLB[2 * 72 + 7 * 9 + 7], kernelsLB[3 * 72 + 7 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 8], kernelsLB[1 * 72 + 4 * 9 + 8], kernelsLB[2 * 72 + 4 * 9 + 8], kernelsLB[3 * 72 + 4 * 9 + 8], kernelsLB[0 * 72 + 5 * 9 + 8], kernelsLB[1 * 72 + 5 * 9 + 8], kernelsLB[2 * 72 + 5 * 9 + 8], kernelsLB[3 * 72 + 5 * 9 + 8], kernelsLB[0 * 72 + 6 * 9 + 8], kernelsLB[1 * 72 + 6 * 9 + 8], kernelsLB[2 * 72 + 6 * 9 + 8], kernelsLB[3 * 72 + 6 * 9 + 8], kernelsLB[0 * 72 + 7 * 9 + 8], kernelsLB[1 * 72 + 7 * 9 + 8], kernelsLB[2 * 72 + 7 * 9 + 8], kernelsLB[3 * 72 + 7 * 9 + 8]), target2);\n\ttarget2 = RELU(target2);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n}\n\n\n//!PASS 8\n//!DESC L8\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nconst static MF kernelsLA[9 * 8 * 4] = {\n\t-5.3430e-40,  2.5717e-41,  5.7504e-40,\n\t 7.1679e-41,  6.2076e-40, -8.4201e-41,\n\t-4.2111e-40,  3.4851e-40,  1.3009e-40,\n\t 3.3016e-40, -7.6473e-41, -1.8392e-40,\n\t 2.2773e-41,  1.2087e-40,  1.1565e-40,\n\t 6.5190e-41,  2.0075e-40,  2.5796e-40,\n\t 5.0575e-40, -2.6261e-40, -2.5486e-40,\n\t-3.9886e-40, -6.0644e-40,  2.9264e-40,\n\t 8.9627e-41, -3.0550e-40, -2.3456e-40,\n\t-4.8855e-40, -4.8867e-40, -5.0492e-40,\n\t-1.0706e-40,  5.3827e-40, -1.6413e-40,\n\t 1.4714e-40, -3.4024e-40, -4.4881e-40,\n\t 3.2361e-40,  2.0858e-40,  3.8836e-40,\n\t 2.0949e-40,  5.9633e-40, -1.7878e-41,\n\t-4.1980e-40, -4.4383e-40,  2.7859e-40,\n\t 7.0317e-42, -8.9973e-41,  5.8700e-41,\n\t 1.8411e-40, -3.6097e-42,  2.7362e-40,\n\t 5.4341e-40,  6.0305e-40,  5.9004e-40,\n\t 5.2692e-40, -6.3449e-41,  1.2075e-40,\n\t 7.5297e-41,  8.9267e-41,  4.9139e-40,\n\t-1.4609e-40,  3.1821e-41,  2.3288e-40,\n\t 3.1748e-41, -3.8052e-40, -2.4322e-40,\n\t-5.7959e-40,  6.1966e-40,  3.4964e-40,\n\t-5.6776e-40, -6.8327e-41, -3.3777e-41,\n\t-5.9108e-02,  3.5468e-02, -2.8772e-02,\n\t 6.8602e-01,  1.4232e-01,  1.1954e-02,\n\t-3.8234e-02,  7.1837e-02, -1.8832e-02,\n\t 4.7972e-02,  1.1623e-02, -2.1687e-03,\n\t-4.9744e-01,  2.7751e-01,  1.7862e-02,\n\t 7.4286e-02,  3.1309e-03,  1.1030e-03,\n\t-6.1084e-01, -8.5679e-03,  9.4956e-03,\n\t-4.5246e-01, -1.2126e-01, -3.7368e-02,\n\t 2.5624e-02,  1.2087e-02, -1.5431e-02,\n\t 6.0313e-40,  1.8404e-40, -7.2006e-41,\n\t 6.0697e-40, -9.1199e-41,  5.8965e-40,\n\t 5.4830e-40,  1.3014e-40,  1.5585e-41,\n\t-3.6027e-02, -6.3004e-03,  1.5237e-02,\n\t 6.0743e-01,  9.2523e-02, -4.7370e-03,\n\t 3.4407e-02, -8.3823e-02,  1.6898e-02,\n\t 5.7527e-40, -5.0621e-40, -2.9035e-42,\n\t 3.8199e-40, -2.2913e-40, -5.0895e-40,\n\t 4.0079e-40,  5.1744e-40, -3.3006e-40,\n\t 6.1448e-40,  1.2347e-40, -3.1673e-40,\n\t 7.3214e-41,  5.2143e-40, -2.6071e-40,\n\t 1.6109e-40, -2.0298e-40,  9.5817e-41,\n\t 6.9876e-02, -2.9290e-02,  3.2294e-03,\n\t-4.2632e-01,  1.5789e-01,  3.6809e-02,\n\t 2.1220e-02,  1.6531e-04,  6.8502e-03,\n\t-6.5221e-02,  8.8059e-02,  5.7934e-03,\n\t-1.7280e-01,  1.5303e-01,  1.7663e-01,\n\t-1.2908e-01, -1.1749e-01,  5.7887e-02,\n\t 1.0685e-01,  2.2763e-01,  3.3796e-02,\n\t 1.7629e-01,  3.8882e-01,  6.3540e-02,\n\t 6.4707e-02,  1.0046e-01, -8.1911e-02,\n\t-3.9718e-03,  4.6416e-02,  4.7357e-02,\n\t 7.3694e-02, -1.6444e-01,  2.4784e-02,\n\t-3.0808e-03,  2.7399e-02, -2.9216e-04,\n\t 2.4428e-40, -3.0160e-40,  2.3184e-40,\n\t-4.9114e-40,  5.6685e-40, -3.6020e-40,\n\t 2.2618e-40, -2.8145e-40,  2.1149e-40,\n\t 2.3559e-02, -8.6949e-02, -3.8350e-02,\n\t-2.9547e-01,  7.0187e-01, -8.3979e-02,\n\t-2.8576e-02, -1.6538e-01, -5.2465e-02,\n\t-1.6016e-40, -1.4760e-40, -2.1977e-40,\n\t 4.3180e-40,  4.1724e-40, -1.2969e-40,\n\t-1.3023e-40, -1.0095e-40, -1.5965e-40,\n\t-4.0721e-40, -4.1747e-40, -4.3706e-40,\n\t-4.2838e-40, -4.5507e-40, -4.6023e-40,\n\t-3.7435e-40, -3.9889e-40, -4.2249e-40,\n\t-1.2429e-01, -3.5062e-01, -1.1418e-01,\n\t-4.0787e-02,  6.1690e-01, -1.0085e-01,\n\t 1.6098e-02,  8.5100e-02, -1.1621e-02,\n\t 3.0709e-40, -4.4880e-40, -2.7530e-41,\n\t-1.2649e-40, -5.3936e-40,  5.0995e-41,\n\t 4.4003e-40, -2.1211e-40, -6.6422e-43,\n\t-1.8989e-40, -3.6631e-40,  4.1392e-40,\n\t-3.9057e-40, -5.5599e-40,  6.9979e-41,\n\t 3.8983e-40,  5.6737e-41,  2.3997e-40,\n\t-9.4862e-41,  2.4256e-40, -3.7040e-40,\n\t 1.6374e-40,  3.5439e-42, -1.0385e-40,\n\t 3.6145e-40, -2.4342e-41, -3.0115e-40,\n\t-6.0009e-40, -5.2386e-41, -1.2504e-40,\n\t 2.9237e-40, -1.2290e-40, -1.1502e-40,\n\t-3.5887e-40, -6.1810e-40, -1.6289e-41,\n\t 2.5438e-41,  5.1229e-40, -2.4915e-40,\n\t 1.3516e-40,  3.3553e-40,  8.5831e-41,\n\t-8.5122e-41,  3.7625e-41,  2.5507e-40,\n\t-1.5828e-40,  2.1991e-40, -1.5628e-40,\n\t-5.3110e-40,  5.1395e-40, -5.8162e-40,\n\t-3.1571e-40, -5.5139e-40,  1.2299e-40,\n\t 4.8855e-40, -9.3940e-41, -6.2534e-40,\n\t-3.3275e-40, -2.4982e-40, -1.2956e-40,\n\t-6.0047e-40, -1.8712e-41, -7.3274e-42,\n\t-2.8519e-40,  3.5541e-40,  2.4485e-40,\n\t-8.1435e-41, -2.7091e-40,  7.1206e-41,\n\t-5.9519e-41, -2.5552e-40, -3.6189e-40\n};\n\nconst static MF4 biasLA = { -3.3246e-39, -1.4536e-02, -6.3362e-02,  8.5347e-41 };\n\nconst static MF kernelsLB[9 * 8 * 4] = {\n\t 7.7038e-02, -1.6317e-02, -2.4118e-02,\n\t-4.3086e-02, -2.1512e-01,  1.2288e-01,\n\t 1.8237e-01, -1.5438e-01, -1.1346e-01,\n\t-4.6141e-02, -4.0750e-02, -5.6414e-04,\n\t-1.5640e-01, -3.4506e-01, -1.4441e-02,\n\t-2.0278e-01, -3.1403e-01, -6.2542e-02,\n\t-1.9622e-02,  1.6348e-02,  6.9859e-03,\n\t-9.3142e-02,  1.0368e-02, -5.6585e-02,\n\t 8.4213e-02,  1.0776e-01, -1.0315e-01,\n\t 8.7873e-41, -5.3947e-40,  1.1714e-40,\n\t 7.5534e-41, -1.1871e-40, -5.4012e-40,\n\t 3.8269e-41, -1.4913e-40, -3.1802e-40,\n\t-3.4707e-02,  1.2518e-02,  9.4679e-03,\n\t 1.2254e-01,  1.9394e-01,  2.6530e-02,\n\t 2.2413e-01, -1.6298e-01, -6.1446e-02,\n\t-1.1042e-42, -2.7255e-40, -5.5067e-40,\n\t 3.8272e-40,  4.9956e-40, -3.2074e-41,\n\t 2.8351e-40,  4.2501e-40,  3.9389e-41,\n\t 6.1941e-40, -4.8790e-40, -3.4137e-40,\n\t 2.2577e-40, -5.7183e-40, -8.6861e-41,\n\t 5.7021e-40, -3.2349e-40,  1.9655e-40,\n\t 9.1180e-02,  5.6665e-02, -6.5437e-04,\n\t 1.1759e-01,  2.7517e-01,  1.9143e-01,\n\t 9.7905e-02,  6.6707e-02,  8.6535e-02,\n\t 8.8717e-03,  3.0913e-02,  6.6909e-03,\n\t-8.1791e-02, -4.7883e-01,  7.4920e-02,\n\t 4.5843e-01, -1.0410e-01,  1.6655e-01,\n\t-4.7094e-03,  3.4769e-02, -1.3291e-02,\n\t-8.5570e-03, -4.0038e-01,  1.8418e-01,\n\t-1.4696e-01,  3.2279e-01,  2.5712e-02,\n\t-2.6207e-01, -4.6150e-02, -6.4099e-02,\n\t-3.2623e-01, -1.8984e-01, -5.7891e-02,\n\t-2.2088e-01, -4.2042e-02, -2.5307e-02,\n\t 1.0260e-40,  5.0443e-40,  7.5150e-41,\n\t 1.4402e-40, -5.1952e-40, -5.3810e-40,\n\t 6.2240e-40,  1.8661e-40, -8.2983e-41,\n\t 7.1850e-02,  4.8770e-02, -1.5081e-02,\n\t 4.8072e-01,  2.5477e-01,  3.8197e-02,\n\t 2.6011e-01,  2.4610e-01, -3.6167e-02,\n\t 3.8901e-40,  1.6760e-41,  2.8471e-40,\n\t 3.1983e-40,  1.2460e-40, -4.3961e-40,\n\t 3.9187e-40,  2.7818e-40, -9.1501e-41,\n\t-2.3320e-40, -1.9998e-40, -2.8132e-40,\n\t-2.9552e-40, -3.9643e-40, -5.1375e-40,\n\t-1.6686e-40, -5.3138e-40, -2.6988e-40,\n\t 2.5623e-02,  2.6942e-02,  2.4342e-02,\n\t-9.9084e-02,  5.2974e-01, -6.7983e-02,\n\t-2.2454e-01,  1.1507e-01,  2.0364e-02,\n\t 3.4852e-01, -3.1091e-01,  8.1154e-02,\n\t-3.2205e-01,  1.7103e-01,  2.4162e-01,\n\t-2.6892e-03,  2.4142e-02,  5.5540e-02,\n\t-4.5753e-02, -5.0097e-01,  1.7503e-01,\n\t 1.4058e-01,  1.1311e-01,  1.5945e-01,\n\t-5.3975e-02,  5.2326e-02, -6.2382e-02,\n\t 9.4114e-02, -5.6812e-01, -1.2081e-01,\n\t-8.5809e-02, -9.8661e-03, -2.3064e-02,\n\t-1.6453e-03, -1.8328e-02,  2.4282e-03,\n\t 1.5943e-40,  4.6894e-40, -6.2730e-40,\n\t 3.8054e-40, -3.7914e-41, -1.4429e-40,\n\t 1.6925e-40,  5.1566e-41, -1.7909e-40,\n\t-3.7920e-02,  2.4698e-01,  5.0019e-02,\n\t-1.4246e-02,  2.8739e-01, -5.4704e-02,\n\t 7.9436e-02, -2.7838e-02, -3.4191e-02,\n\t-3.3565e-40,  2.1368e-40,  6.7346e-42,\n\t 5.6681e-40, -5.5776e-40, -2.7705e-40,\n\t-2.2966e-40,  1.1692e-40, -2.5187e-40,\n\t 4.4806e-40, -4.8424e-40, -9.1436e-41,\n\t-4.3250e-40, -2.0721e-40, -2.0050e-40,\n\t-5.1061e-40,  2.6405e-40, -3.0913e-40,\n\t-1.2078e-01,  3.1948e-01,  1.0082e-02,\n\t-1.0781e-02,  8.0720e-02, -4.6330e-02,\n\t-1.8084e-02, -2.2846e-02, -5.5861e-03,\n\t-3.2400e-02, -1.7329e-01, -2.7995e-02,\n\t-5.3680e-02,  4.1310e-01, -9.4691e-02,\n\t 7.6938e-02, -4.9596e-02,  1.9649e-01,\n\t 3.2594e-02,  1.1544e-01, -1.8501e-02,\n\t 7.0248e-02, -6.9838e-02, -5.4278e-02,\n\t-2.9317e-02, -1.4890e-01,  7.8661e-02,\n\t 3.7685e-02,  5.9594e-02,  8.9527e-02,\n\t 2.2957e-01, -2.9681e-01, -1.6329e-01,\n\t-1.3206e-01, -4.3808e-02,  3.8854e-02,\n\t 1.7529e-40, -3.8429e-41,  1.4443e-40,\n\t-4.0829e-40, -2.5643e-40, -5.4821e-40,\n\t 1.6827e-40, -1.1628e-40,  2.2441e-40,\n\t 5.2451e-02,  1.0179e-01,  4.8487e-02,\n\t-2.1020e-01, -4.4345e-01, -8.7642e-02,\n\t 7.0958e-02,  1.9934e-01, -2.1090e-02,\n\t-3.0795e-41,  2.7921e-40,  2.8491e-40,\n\t-2.1154e-40,  9.8876e-41, -8.8824e-41,\n\t 2.6552e-40,  2.5767e-40, -3.8369e-40,\n\t 6.1348e-40, -3.4170e-40, -1.7109e-40,\n\t-3.3080e-40,  5.4199e-41, -1.7512e-40,\n\t 1.8363e-40, -4.4080e-40, -2.5508e-40,\n\t-4.0716e-02, -2.8531e-01,  3.9981e-02,\n\t 2.2278e-02,  5.6661e-01, -8.3890e-02,\n\t-7.7331e-02, -9.3843e-02,  1.5584e-02\n};\n\nconst static MF4 biasLB = { 7.9956e-02, 3.0679e-04, -1.0257e-02, -1.2037e-02 };\n\n\nvoid Pass8(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 tl2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 target1 = biasLA;\n\ttarget1 = MulAdd(tl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 0], kernelsLA[1 * 72 + 0 * 9 + 0], kernelsLA[2 * 72 + 0 * 9 + 0], kernelsLA[3 * 72 + 0 * 9 + 0], kernelsLA[0 * 72 + 1 * 9 + 0], kernelsLA[1 * 72 + 1 * 9 + 0], kernelsLA[2 * 72 + 1 * 9 + 0], kernelsLA[3 * 72 + 1 * 9 + 0], kernelsLA[0 * 72 + 2 * 9 + 0], kernelsLA[1 * 72 + 2 * 9 + 0], kernelsLA[2 * 72 + 2 * 9 + 0], kernelsLA[3 * 72 + 2 * 9 + 0], kernelsLA[0 * 72 + 3 * 9 + 0], kernelsLA[1 * 72 + 3 * 9 + 0], kernelsLA[2 * 72 + 3 * 9 + 0], kernelsLA[3 * 72 + 3 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 1], kernelsLA[1 * 72 + 0 * 9 + 1], kernelsLA[2 * 72 + 0 * 9 + 1], kernelsLA[3 * 72 + 0 * 9 + 1], kernelsLA[0 * 72 + 1 * 9 + 1], kernelsLA[1 * 72 + 1 * 9 + 1], kernelsLA[2 * 72 + 1 * 9 + 1], kernelsLA[3 * 72 + 1 * 9 + 1], kernelsLA[0 * 72 + 2 * 9 + 1], kernelsLA[1 * 72 + 2 * 9 + 1], kernelsLA[2 * 72 + 2 * 9 + 1], kernelsLA[3 * 72 + 2 * 9 + 1], kernelsLA[0 * 72 + 3 * 9 + 1], kernelsLA[1 * 72 + 3 * 9 + 1], kernelsLA[2 * 72 + 3 * 9 + 1], kernelsLA[3 * 72 + 3 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 2], kernelsLA[1 * 72 + 0 * 9 + 2], kernelsLA[2 * 72 + 0 * 9 + 2], kernelsLA[3 * 72 + 0 * 9 + 2], kernelsLA[0 * 72 + 1 * 9 + 2], kernelsLA[1 * 72 + 1 * 9 + 2], kernelsLA[2 * 72 + 1 * 9 + 2], kernelsLA[3 * 72 + 1 * 9 + 2], kernelsLA[0 * 72 + 2 * 9 + 2], kernelsLA[1 * 72 + 2 * 9 + 2], kernelsLA[2 * 72 + 2 * 9 + 2], kernelsLA[3 * 72 + 2 * 9 + 2], kernelsLA[0 * 72 + 3 * 9 + 2], kernelsLA[1 * 72 + 3 * 9 + 2], kernelsLA[2 * 72 + 3 * 9 + 2], kernelsLA[3 * 72 + 3 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 3], kernelsLA[1 * 72 + 0 * 9 + 3], kernelsLA[2 * 72 + 0 * 9 + 3], kernelsLA[3 * 72 + 0 * 9 + 3], kernelsLA[0 * 72 + 1 * 9 + 3], kernelsLA[1 * 72 + 1 * 9 + 3], kernelsLA[2 * 72 + 1 * 9 + 3], kernelsLA[3 * 72 + 1 * 9 + 3], kernelsLA[0 * 72 + 2 * 9 + 3], kernelsLA[1 * 72 + 2 * 9 + 3], kernelsLA[2 * 72 + 2 * 9 + 3], kernelsLA[3 * 72 + 2 * 9 + 3], kernelsLA[0 * 72 + 3 * 9 + 3], kernelsLA[1 * 72 + 3 * 9 + 3], kernelsLA[2 * 72 + 3 * 9 + 3], kernelsLA[3 * 72 + 3 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 4], kernelsLA[1 * 72 + 0 * 9 + 4], kernelsLA[2 * 72 + 0 * 9 + 4], kernelsLA[3 * 72 + 0 * 9 + 4], kernelsLA[0 * 72 + 1 * 9 + 4], kernelsLA[1 * 72 + 1 * 9 + 4], kernelsLA[2 * 72 + 1 * 9 + 4], kernelsLA[3 * 72 + 1 * 9 + 4], kernelsLA[0 * 72 + 2 * 9 + 4], kernelsLA[1 * 72 + 2 * 9 + 4], kernelsLA[2 * 72 + 2 * 9 + 4], kernelsLA[3 * 72 + 2 * 9 + 4], kernelsLA[0 * 72 + 3 * 9 + 4], kernelsLA[1 * 72 + 3 * 9 + 4], kernelsLA[2 * 72 + 3 * 9 + 4], kernelsLA[3 * 72 + 3 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 5], kernelsLA[1 * 72 + 0 * 9 + 5], kernelsLA[2 * 72 + 0 * 9 + 5], kernelsLA[3 * 72 + 0 * 9 + 5], kernelsLA[0 * 72 + 1 * 9 + 5], kernelsLA[1 * 72 + 1 * 9 + 5], kernelsLA[2 * 72 + 1 * 9 + 5], kernelsLA[3 * 72 + 1 * 9 + 5], kernelsLA[0 * 72 + 2 * 9 + 5], kernelsLA[1 * 72 + 2 * 9 + 5], kernelsLA[2 * 72 + 2 * 9 + 5], kernelsLA[3 * 72 + 2 * 9 + 5], kernelsLA[0 * 72 + 3 * 9 + 5], kernelsLA[1 * 72 + 3 * 9 + 5], kernelsLA[2 * 72 + 3 * 9 + 5], kernelsLA[3 * 72 + 3 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 6], kernelsLA[1 * 72 + 0 * 9 + 6], kernelsLA[2 * 72 + 0 * 9 + 6], kernelsLA[3 * 72 + 0 * 9 + 6], kernelsLA[0 * 72 + 1 * 9 + 6], kernelsLA[1 * 72 + 1 * 9 + 6], kernelsLA[2 * 72 + 1 * 9 + 6], kernelsLA[3 * 72 + 1 * 9 + 6], kernelsLA[0 * 72 + 2 * 9 + 6], kernelsLA[1 * 72 + 2 * 9 + 6], kernelsLA[2 * 72 + 2 * 9 + 6], kernelsLA[3 * 72 + 2 * 9 + 6], kernelsLA[0 * 72 + 3 * 9 + 6], kernelsLA[1 * 72 + 3 * 9 + 6], kernelsLA[2 * 72 + 3 * 9 + 6], kernelsLA[3 * 72 + 3 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 7], kernelsLA[1 * 72 + 0 * 9 + 7], kernelsLA[2 * 72 + 0 * 9 + 7], kernelsLA[3 * 72 + 0 * 9 + 7], kernelsLA[0 * 72 + 1 * 9 + 7], kernelsLA[1 * 72 + 1 * 9 + 7], kernelsLA[2 * 72 + 1 * 9 + 7], kernelsLA[3 * 72 + 1 * 9 + 7], kernelsLA[0 * 72 + 2 * 9 + 7], kernelsLA[1 * 72 + 2 * 9 + 7], kernelsLA[2 * 72 + 2 * 9 + 7], kernelsLA[3 * 72 + 2 * 9 + 7], kernelsLA[0 * 72 + 3 * 9 + 7], kernelsLA[1 * 72 + 3 * 9 + 7], kernelsLA[2 * 72 + 3 * 9 + 7], kernelsLA[3 * 72 + 3 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 8], kernelsLA[1 * 72 + 0 * 9 + 8], kernelsLA[2 * 72 + 0 * 9 + 8], kernelsLA[3 * 72 + 0 * 9 + 8], kernelsLA[0 * 72 + 1 * 9 + 8], kernelsLA[1 * 72 + 1 * 9 + 8], kernelsLA[2 * 72 + 1 * 9 + 8], kernelsLA[3 * 72 + 1 * 9 + 8], kernelsLA[0 * 72 + 2 * 9 + 8], kernelsLA[1 * 72 + 2 * 9 + 8], kernelsLA[2 * 72 + 2 * 9 + 8], kernelsLA[3 * 72 + 2 * 9 + 8], kernelsLA[0 * 72 + 3 * 9 + 8], kernelsLA[1 * 72 + 3 * 9 + 8], kernelsLA[2 * 72 + 3 * 9 + 8], kernelsLA[3 * 72 + 3 * 9 + 8]), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 0], kernelsLA[1 * 72 + 4 * 9 + 0], kernelsLA[2 * 72 + 4 * 9 + 0], kernelsLA[3 * 72 + 4 * 9 + 0], kernelsLA[0 * 72 + 5 * 9 + 0], kernelsLA[1 * 72 + 5 * 9 + 0], kernelsLA[2 * 72 + 5 * 9 + 0], kernelsLA[3 * 72 + 5 * 9 + 0], kernelsLA[0 * 72 + 6 * 9 + 0], kernelsLA[1 * 72 + 6 * 9 + 0], kernelsLA[2 * 72 + 6 * 9 + 0], kernelsLA[3 * 72 + 6 * 9 + 0], kernelsLA[0 * 72 + 7 * 9 + 0], kernelsLA[1 * 72 + 7 * 9 + 0], kernelsLA[2 * 72 + 7 * 9 + 0], kernelsLA[3 * 72 + 7 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 1], kernelsLA[1 * 72 + 4 * 9 + 1], kernelsLA[2 * 72 + 4 * 9 + 1], kernelsLA[3 * 72 + 4 * 9 + 1], kernelsLA[0 * 72 + 5 * 9 + 1], kernelsLA[1 * 72 + 5 * 9 + 1], kernelsLA[2 * 72 + 5 * 9 + 1], kernelsLA[3 * 72 + 5 * 9 + 1], kernelsLA[0 * 72 + 6 * 9 + 1], kernelsLA[1 * 72 + 6 * 9 + 1], kernelsLA[2 * 72 + 6 * 9 + 1], kernelsLA[3 * 72 + 6 * 9 + 1], kernelsLA[0 * 72 + 7 * 9 + 1], kernelsLA[1 * 72 + 7 * 9 + 1], kernelsLA[2 * 72 + 7 * 9 + 1], kernelsLA[3 * 72 + 7 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 2], kernelsLA[1 * 72 + 4 * 9 + 2], kernelsLA[2 * 72 + 4 * 9 + 2], kernelsLA[3 * 72 + 4 * 9 + 2], kernelsLA[0 * 72 + 5 * 9 + 2], kernelsLA[1 * 72 + 5 * 9 + 2], kernelsLA[2 * 72 + 5 * 9 + 2], kernelsLA[3 * 72 + 5 * 9 + 2], kernelsLA[0 * 72 + 6 * 9 + 2], kernelsLA[1 * 72 + 6 * 9 + 2], kernelsLA[2 * 72 + 6 * 9 + 2], kernelsLA[3 * 72 + 6 * 9 + 2], kernelsLA[0 * 72 + 7 * 9 + 2], kernelsLA[1 * 72 + 7 * 9 + 2], kernelsLA[2 * 72 + 7 * 9 + 2], kernelsLA[3 * 72 + 7 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 3], kernelsLA[1 * 72 + 4 * 9 + 3], kernelsLA[2 * 72 + 4 * 9 + 3], kernelsLA[3 * 72 + 4 * 9 + 3], kernelsLA[0 * 72 + 5 * 9 + 3], kernelsLA[1 * 72 + 5 * 9 + 3], kernelsLA[2 * 72 + 5 * 9 + 3], kernelsLA[3 * 72 + 5 * 9 + 3], kernelsLA[0 * 72 + 6 * 9 + 3], kernelsLA[1 * 72 + 6 * 9 + 3], kernelsLA[2 * 72 + 6 * 9 + 3], kernelsLA[3 * 72 + 6 * 9 + 3], kernelsLA[0 * 72 + 7 * 9 + 3], kernelsLA[1 * 72 + 7 * 9 + 3], kernelsLA[2 * 72 + 7 * 9 + 3], kernelsLA[3 * 72 + 7 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 4], kernelsLA[1 * 72 + 4 * 9 + 4], kernelsLA[2 * 72 + 4 * 9 + 4], kernelsLA[3 * 72 + 4 * 9 + 4], kernelsLA[0 * 72 + 5 * 9 + 4], kernelsLA[1 * 72 + 5 * 9 + 4], kernelsLA[2 * 72 + 5 * 9 + 4], kernelsLA[3 * 72 + 5 * 9 + 4], kernelsLA[0 * 72 + 6 * 9 + 4], kernelsLA[1 * 72 + 6 * 9 + 4], kernelsLA[2 * 72 + 6 * 9 + 4], kernelsLA[3 * 72 + 6 * 9 + 4], kernelsLA[0 * 72 + 7 * 9 + 4], kernelsLA[1 * 72 + 7 * 9 + 4], kernelsLA[2 * 72 + 7 * 9 + 4], kernelsLA[3 * 72 + 7 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 5], kernelsLA[1 * 72 + 4 * 9 + 5], kernelsLA[2 * 72 + 4 * 9 + 5], kernelsLA[3 * 72 + 4 * 9 + 5], kernelsLA[0 * 72 + 5 * 9 + 5], kernelsLA[1 * 72 + 5 * 9 + 5], kernelsLA[2 * 72 + 5 * 9 + 5], kernelsLA[3 * 72 + 5 * 9 + 5], kernelsLA[0 * 72 + 6 * 9 + 5], kernelsLA[1 * 72 + 6 * 9 + 5], kernelsLA[2 * 72 + 6 * 9 + 5], kernelsLA[3 * 72 + 6 * 9 + 5], kernelsLA[0 * 72 + 7 * 9 + 5], kernelsLA[1 * 72 + 7 * 9 + 5], kernelsLA[2 * 72 + 7 * 9 + 5], kernelsLA[3 * 72 + 7 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 6], kernelsLA[1 * 72 + 4 * 9 + 6], kernelsLA[2 * 72 + 4 * 9 + 6], kernelsLA[3 * 72 + 4 * 9 + 6], kernelsLA[0 * 72 + 5 * 9 + 6], kernelsLA[1 * 72 + 5 * 9 + 6], kernelsLA[2 * 72 + 5 * 9 + 6], kernelsLA[3 * 72 + 5 * 9 + 6], kernelsLA[0 * 72 + 6 * 9 + 6], kernelsLA[1 * 72 + 6 * 9 + 6], kernelsLA[2 * 72 + 6 * 9 + 6], kernelsLA[3 * 72 + 6 * 9 + 6], kernelsLA[0 * 72 + 7 * 9 + 6], kernelsLA[1 * 72 + 7 * 9 + 6], kernelsLA[2 * 72 + 7 * 9 + 6], kernelsLA[3 * 72 + 7 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 7], kernelsLA[1 * 72 + 4 * 9 + 7], kernelsLA[2 * 72 + 4 * 9 + 7], kernelsLA[3 * 72 + 4 * 9 + 7], kernelsLA[0 * 72 + 5 * 9 + 7], kernelsLA[1 * 72 + 5 * 9 + 7], kernelsLA[2 * 72 + 5 * 9 + 7], kernelsLA[3 * 72 + 5 * 9 + 7], kernelsLA[0 * 72 + 6 * 9 + 7], kernelsLA[1 * 72 + 6 * 9 + 7], kernelsLA[2 * 72 + 6 * 9 + 7], kernelsLA[3 * 72 + 6 * 9 + 7], kernelsLA[0 * 72 + 7 * 9 + 7], kernelsLA[1 * 72 + 7 * 9 + 7], kernelsLA[2 * 72 + 7 * 9 + 7], kernelsLA[3 * 72 + 7 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 8], kernelsLA[1 * 72 + 4 * 9 + 8], kernelsLA[2 * 72 + 4 * 9 + 8], kernelsLA[3 * 72 + 4 * 9 + 8], kernelsLA[0 * 72 + 5 * 9 + 8], kernelsLA[1 * 72 + 5 * 9 + 8], kernelsLA[2 * 72 + 5 * 9 + 8], kernelsLA[3 * 72 + 5 * 9 + 8], kernelsLA[0 * 72 + 6 * 9 + 8], kernelsLA[1 * 72 + 6 * 9 + 8], kernelsLA[2 * 72 + 6 * 9 + 8], kernelsLA[3 * 72 + 6 * 9 + 8], kernelsLA[0 * 72 + 7 * 9 + 8], kernelsLA[1 * 72 + 7 * 9 + 8], kernelsLA[2 * 72 + 7 * 9 + 8], kernelsLA[3 * 72 + 7 * 9 + 8]), target1);\n\ttarget1 = RELU(target1);\n\n\tMF4 target2 = biasLB;\n\ttarget2 = MulAdd(tl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 0], kernelsLB[1 * 72 + 0 * 9 + 0], kernelsLB[2 * 72 + 0 * 9 + 0], kernelsLB[3 * 72 + 0 * 9 + 0], kernelsLB[0 * 72 + 1 * 9 + 0], kernelsLB[1 * 72 + 1 * 9 + 0], kernelsLB[2 * 72 + 1 * 9 + 0], kernelsLB[3 * 72 + 1 * 9 + 0], kernelsLB[0 * 72 + 2 * 9 + 0], kernelsLB[1 * 72 + 2 * 9 + 0], kernelsLB[2 * 72 + 2 * 9 + 0], kernelsLB[3 * 72 + 2 * 9 + 0], kernelsLB[0 * 72 + 3 * 9 + 0], kernelsLB[1 * 72 + 3 * 9 + 0], kernelsLB[2 * 72 + 3 * 9 + 0], kernelsLB[3 * 72 + 3 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 1], kernelsLB[1 * 72 + 0 * 9 + 1], kernelsLB[2 * 72 + 0 * 9 + 1], kernelsLB[3 * 72 + 0 * 9 + 1], kernelsLB[0 * 72 + 1 * 9 + 1], kernelsLB[1 * 72 + 1 * 9 + 1], kernelsLB[2 * 72 + 1 * 9 + 1], kernelsLB[3 * 72 + 1 * 9 + 1], kernelsLB[0 * 72 + 2 * 9 + 1], kernelsLB[1 * 72 + 2 * 9 + 1], kernelsLB[2 * 72 + 2 * 9 + 1], kernelsLB[3 * 72 + 2 * 9 + 1], kernelsLB[0 * 72 + 3 * 9 + 1], kernelsLB[1 * 72 + 3 * 9 + 1], kernelsLB[2 * 72 + 3 * 9 + 1], kernelsLB[3 * 72 + 3 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 2], kernelsLB[1 * 72 + 0 * 9 + 2], kernelsLB[2 * 72 + 0 * 9 + 2], kernelsLB[3 * 72 + 0 * 9 + 2], kernelsLB[0 * 72 + 1 * 9 + 2], kernelsLB[1 * 72 + 1 * 9 + 2], kernelsLB[2 * 72 + 1 * 9 + 2], kernelsLB[3 * 72 + 1 * 9 + 2], kernelsLB[0 * 72 + 2 * 9 + 2], kernelsLB[1 * 72 + 2 * 9 + 2], kernelsLB[2 * 72 + 2 * 9 + 2], kernelsLB[3 * 72 + 2 * 9 + 2], kernelsLB[0 * 72 + 3 * 9 + 2], kernelsLB[1 * 72 + 3 * 9 + 2], kernelsLB[2 * 72 + 3 * 9 + 2], kernelsLB[3 * 72 + 3 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 3], kernelsLB[1 * 72 + 0 * 9 + 3], kernelsLB[2 * 72 + 0 * 9 + 3], kernelsLB[3 * 72 + 0 * 9 + 3], kernelsLB[0 * 72 + 1 * 9 + 3], kernelsLB[1 * 72 + 1 * 9 + 3], kernelsLB[2 * 72 + 1 * 9 + 3], kernelsLB[3 * 72 + 1 * 9 + 3], kernelsLB[0 * 72 + 2 * 9 + 3], kernelsLB[1 * 72 + 2 * 9 + 3], kernelsLB[2 * 72 + 2 * 9 + 3], kernelsLB[3 * 72 + 2 * 9 + 3], kernelsLB[0 * 72 + 3 * 9 + 3], kernelsLB[1 * 72 + 3 * 9 + 3], kernelsLB[2 * 72 + 3 * 9 + 3], kernelsLB[3 * 72 + 3 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 4], kernelsLB[1 * 72 + 0 * 9 + 4], kernelsLB[2 * 72 + 0 * 9 + 4], kernelsLB[3 * 72 + 0 * 9 + 4], kernelsLB[0 * 72 + 1 * 9 + 4], kernelsLB[1 * 72 + 1 * 9 + 4], kernelsLB[2 * 72 + 1 * 9 + 4], kernelsLB[3 * 72 + 1 * 9 + 4], kernelsLB[0 * 72 + 2 * 9 + 4], kernelsLB[1 * 72 + 2 * 9 + 4], kernelsLB[2 * 72 + 2 * 9 + 4], kernelsLB[3 * 72 + 2 * 9 + 4], kernelsLB[0 * 72 + 3 * 9 + 4], kernelsLB[1 * 72 + 3 * 9 + 4], kernelsLB[2 * 72 + 3 * 9 + 4], kernelsLB[3 * 72 + 3 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 5], kernelsLB[1 * 72 + 0 * 9 + 5], kernelsLB[2 * 72 + 0 * 9 + 5], kernelsLB[3 * 72 + 0 * 9 + 5], kernelsLB[0 * 72 + 1 * 9 + 5], kernelsLB[1 * 72 + 1 * 9 + 5], kernelsLB[2 * 72 + 1 * 9 + 5], kernelsLB[3 * 72 + 1 * 9 + 5], kernelsLB[0 * 72 + 2 * 9 + 5], kernelsLB[1 * 72 + 2 * 9 + 5], kernelsLB[2 * 72 + 2 * 9 + 5], kernelsLB[3 * 72 + 2 * 9 + 5], kernelsLB[0 * 72 + 3 * 9 + 5], kernelsLB[1 * 72 + 3 * 9 + 5], kernelsLB[2 * 72 + 3 * 9 + 5], kernelsLB[3 * 72 + 3 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 6], kernelsLB[1 * 72 + 0 * 9 + 6], kernelsLB[2 * 72 + 0 * 9 + 6], kernelsLB[3 * 72 + 0 * 9 + 6], kernelsLB[0 * 72 + 1 * 9 + 6], kernelsLB[1 * 72 + 1 * 9 + 6], kernelsLB[2 * 72 + 1 * 9 + 6], kernelsLB[3 * 72 + 1 * 9 + 6], kernelsLB[0 * 72 + 2 * 9 + 6], kernelsLB[1 * 72 + 2 * 9 + 6], kernelsLB[2 * 72 + 2 * 9 + 6], kernelsLB[3 * 72 + 2 * 9 + 6], kernelsLB[0 * 72 + 3 * 9 + 6], kernelsLB[1 * 72 + 3 * 9 + 6], kernelsLB[2 * 72 + 3 * 9 + 6], kernelsLB[3 * 72 + 3 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 7], kernelsLB[1 * 72 + 0 * 9 + 7], kernelsLB[2 * 72 + 0 * 9 + 7], kernelsLB[3 * 72 + 0 * 9 + 7], kernelsLB[0 * 72 + 1 * 9 + 7], kernelsLB[1 * 72 + 1 * 9 + 7], kernelsLB[2 * 72 + 1 * 9 + 7], kernelsLB[3 * 72 + 1 * 9 + 7], kernelsLB[0 * 72 + 2 * 9 + 7], kernelsLB[1 * 72 + 2 * 9 + 7], kernelsLB[2 * 72 + 2 * 9 + 7], kernelsLB[3 * 72 + 2 * 9 + 7], kernelsLB[0 * 72 + 3 * 9 + 7], kernelsLB[1 * 72 + 3 * 9 + 7], kernelsLB[2 * 72 + 3 * 9 + 7], kernelsLB[3 * 72 + 3 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 8], kernelsLB[1 * 72 + 0 * 9 + 8], kernelsLB[2 * 72 + 0 * 9 + 8], kernelsLB[3 * 72 + 0 * 9 + 8], kernelsLB[0 * 72 + 1 * 9 + 8], kernelsLB[1 * 72 + 1 * 9 + 8], kernelsLB[2 * 72 + 1 * 9 + 8], kernelsLB[3 * 72 + 1 * 9 + 8], kernelsLB[0 * 72 + 2 * 9 + 8], kernelsLB[1 * 72 + 2 * 9 + 8], kernelsLB[2 * 72 + 2 * 9 + 8], kernelsLB[3 * 72 + 2 * 9 + 8], kernelsLB[0 * 72 + 3 * 9 + 8], kernelsLB[1 * 72 + 3 * 9 + 8], kernelsLB[2 * 72 + 3 * 9 + 8], kernelsLB[3 * 72 + 3 * 9 + 8]), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 0], kernelsLB[1 * 72 + 4 * 9 + 0], kernelsLB[2 * 72 + 4 * 9 + 0], kernelsLB[3 * 72 + 4 * 9 + 0], kernelsLB[0 * 72 + 5 * 9 + 0], kernelsLB[1 * 72 + 5 * 9 + 0], kernelsLB[2 * 72 + 5 * 9 + 0], kernelsLB[3 * 72 + 5 * 9 + 0], kernelsLB[0 * 72 + 6 * 9 + 0], kernelsLB[1 * 72 + 6 * 9 + 0], kernelsLB[2 * 72 + 6 * 9 + 0], kernelsLB[3 * 72 + 6 * 9 + 0], kernelsLB[0 * 72 + 7 * 9 + 0], kernelsLB[1 * 72 + 7 * 9 + 0], kernelsLB[2 * 72 + 7 * 9 + 0], kernelsLB[3 * 72 + 7 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 1], kernelsLB[1 * 72 + 4 * 9 + 1], kernelsLB[2 * 72 + 4 * 9 + 1], kernelsLB[3 * 72 + 4 * 9 + 1], kernelsLB[0 * 72 + 5 * 9 + 1], kernelsLB[1 * 72 + 5 * 9 + 1], kernelsLB[2 * 72 + 5 * 9 + 1], kernelsLB[3 * 72 + 5 * 9 + 1], kernelsLB[0 * 72 + 6 * 9 + 1], kernelsLB[1 * 72 + 6 * 9 + 1], kernelsLB[2 * 72 + 6 * 9 + 1], kernelsLB[3 * 72 + 6 * 9 + 1], kernelsLB[0 * 72 + 7 * 9 + 1], kernelsLB[1 * 72 + 7 * 9 + 1], kernelsLB[2 * 72 + 7 * 9 + 1], kernelsLB[3 * 72 + 7 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 2], kernelsLB[1 * 72 + 4 * 9 + 2], kernelsLB[2 * 72 + 4 * 9 + 2], kernelsLB[3 * 72 + 4 * 9 + 2], kernelsLB[0 * 72 + 5 * 9 + 2], kernelsLB[1 * 72 + 5 * 9 + 2], kernelsLB[2 * 72 + 5 * 9 + 2], kernelsLB[3 * 72 + 5 * 9 + 2], kernelsLB[0 * 72 + 6 * 9 + 2], kernelsLB[1 * 72 + 6 * 9 + 2], kernelsLB[2 * 72 + 6 * 9 + 2], kernelsLB[3 * 72 + 6 * 9 + 2], kernelsLB[0 * 72 + 7 * 9 + 2], kernelsLB[1 * 72 + 7 * 9 + 2], kernelsLB[2 * 72 + 7 * 9 + 2], kernelsLB[3 * 72 + 7 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 3], kernelsLB[1 * 72 + 4 * 9 + 3], kernelsLB[2 * 72 + 4 * 9 + 3], kernelsLB[3 * 72 + 4 * 9 + 3], kernelsLB[0 * 72 + 5 * 9 + 3], kernelsLB[1 * 72 + 5 * 9 + 3], kernelsLB[2 * 72 + 5 * 9 + 3], kernelsLB[3 * 72 + 5 * 9 + 3], kernelsLB[0 * 72 + 6 * 9 + 3], kernelsLB[1 * 72 + 6 * 9 + 3], kernelsLB[2 * 72 + 6 * 9 + 3], kernelsLB[3 * 72 + 6 * 9 + 3], kernelsLB[0 * 72 + 7 * 9 + 3], kernelsLB[1 * 72 + 7 * 9 + 3], kernelsLB[2 * 72 + 7 * 9 + 3], kernelsLB[3 * 72 + 7 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 4], kernelsLB[1 * 72 + 4 * 9 + 4], kernelsLB[2 * 72 + 4 * 9 + 4], kernelsLB[3 * 72 + 4 * 9 + 4], kernelsLB[0 * 72 + 5 * 9 + 4], kernelsLB[1 * 72 + 5 * 9 + 4], kernelsLB[2 * 72 + 5 * 9 + 4], kernelsLB[3 * 72 + 5 * 9 + 4], kernelsLB[0 * 72 + 6 * 9 + 4], kernelsLB[1 * 72 + 6 * 9 + 4], kernelsLB[2 * 72 + 6 * 9 + 4], kernelsLB[3 * 72 + 6 * 9 + 4], kernelsLB[0 * 72 + 7 * 9 + 4], kernelsLB[1 * 72 + 7 * 9 + 4], kernelsLB[2 * 72 + 7 * 9 + 4], kernelsLB[3 * 72 + 7 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 5], kernelsLB[1 * 72 + 4 * 9 + 5], kernelsLB[2 * 72 + 4 * 9 + 5], kernelsLB[3 * 72 + 4 * 9 + 5], kernelsLB[0 * 72 + 5 * 9 + 5], kernelsLB[1 * 72 + 5 * 9 + 5], kernelsLB[2 * 72 + 5 * 9 + 5], kernelsLB[3 * 72 + 5 * 9 + 5], kernelsLB[0 * 72 + 6 * 9 + 5], kernelsLB[1 * 72 + 6 * 9 + 5], kernelsLB[2 * 72 + 6 * 9 + 5], kernelsLB[3 * 72 + 6 * 9 + 5], kernelsLB[0 * 72 + 7 * 9 + 5], kernelsLB[1 * 72 + 7 * 9 + 5], kernelsLB[2 * 72 + 7 * 9 + 5], kernelsLB[3 * 72 + 7 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 6], kernelsLB[1 * 72 + 4 * 9 + 6], kernelsLB[2 * 72 + 4 * 9 + 6], kernelsLB[3 * 72 + 4 * 9 + 6], kernelsLB[0 * 72 + 5 * 9 + 6], kernelsLB[1 * 72 + 5 * 9 + 6], kernelsLB[2 * 72 + 5 * 9 + 6], kernelsLB[3 * 72 + 5 * 9 + 6], kernelsLB[0 * 72 + 6 * 9 + 6], kernelsLB[1 * 72 + 6 * 9 + 6], kernelsLB[2 * 72 + 6 * 9 + 6], kernelsLB[3 * 72 + 6 * 9 + 6], kernelsLB[0 * 72 + 7 * 9 + 6], kernelsLB[1 * 72 + 7 * 9 + 6], kernelsLB[2 * 72 + 7 * 9 + 6], kernelsLB[3 * 72 + 7 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 7], kernelsLB[1 * 72 + 4 * 9 + 7], kernelsLB[2 * 72 + 4 * 9 + 7], kernelsLB[3 * 72 + 4 * 9 + 7], kernelsLB[0 * 72 + 5 * 9 + 7], kernelsLB[1 * 72 + 5 * 9 + 7], kernelsLB[2 * 72 + 5 * 9 + 7], kernelsLB[3 * 72 + 5 * 9 + 7], kernelsLB[0 * 72 + 6 * 9 + 7], kernelsLB[1 * 72 + 6 * 9 + 7], kernelsLB[2 * 72 + 6 * 9 + 7], kernelsLB[3 * 72 + 6 * 9 + 7], kernelsLB[0 * 72 + 7 * 9 + 7], kernelsLB[1 * 72 + 7 * 9 + 7], kernelsLB[2 * 72 + 7 * 9 + 7], kernelsLB[3 * 72 + 7 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 8], kernelsLB[1 * 72 + 4 * 9 + 8], kernelsLB[2 * 72 + 4 * 9 + 8], kernelsLB[3 * 72 + 4 * 9 + 8], kernelsLB[0 * 72 + 5 * 9 + 8], kernelsLB[1 * 72 + 5 * 9 + 8], kernelsLB[2 * 72 + 5 * 9 + 8], kernelsLB[3 * 72 + 5 * 9 + 8], kernelsLB[0 * 72 + 6 * 9 + 8], kernelsLB[1 * 72 + 6 * 9 + 8], kernelsLB[2 * 72 + 6 * 9 + 8], kernelsLB[3 * 72 + 6 * 9 + 8], kernelsLB[0 * 72 + 7 * 9 + 8], kernelsLB[1 * 72 + 7 * 9 + 8], kernelsLB[2 * 72 + 7 * 9 + 8], kernelsLB[3 * 72 + 7 * 9 + 8]), target2);\n\ttarget2 = RELU(target2);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 9\n//!DESC L9, L10\n//!IN INPUT, tex3, tex4\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nconst static MF kernelsLA[9 * 8 * 4] = {\n\t-3.6751e-40, -5.4562e-41,  6.1860e-40,\n\t 8.9003e-41,  5.5262e-40,  3.9537e-40,\n\t-2.1258e-42, -3.1069e-40, -7.6225e-41,\n\t-1.2220e-02, -8.6886e-02,  1.0714e-02,\n\t 1.1656e-02, -7.3635e-02,  5.9427e-02,\n\t 4.8518e-03,  1.3543e-01,  1.4668e-02,\n\t-1.7505e-02, -2.0691e-02, -1.4507e-02,\n\t 2.6157e-02,  7.4109e-02,  1.2822e-02,\n\t-1.9737e-02, -4.9281e-02,  8.5962e-03,\n\t 5.6236e-40,  2.4616e-40,  1.6384e-40,\n\t-3.9469e-40, -1.7094e-40,  1.9285e-40,\n\t-1.3634e-40, -1.5785e-40,  6.4184e-41,\n\t-1.2752e-02,  2.3150e-02, -5.3355e-03,\n\t-5.9667e-02, -3.9580e-01, -7.0033e-02,\n\t-2.2612e-02,  1.9176e-02,  1.0588e-02,\n\t 8.0027e-04,  3.2242e-01, -2.2566e-02,\n\t 8.7850e-03, -2.4025e-01,  4.6123e-02,\n\t-1.9038e-02, -8.5750e-03, -4.8153e-03,\n\t-1.3049e-03, -5.7771e-03,  9.6437e-03,\n\t 3.2477e-02,  2.4482e-01,  4.0580e-02,\n\t 1.3194e-02, -4.6602e-01, -6.6163e-02,\n\t-1.0647e-01,  7.3328e-02,  2.5871e-02,\n\t-7.0883e-02, -9.2725e-02, -1.5185e-02,\n\t 1.1804e-02,  1.7784e-03, -4.4099e-03,\n\t-4.9226e-40, -1.3081e-40, -3.5969e-40,\n\t 4.3539e-40, -2.9631e-40,  2.3531e-41,\n\t 5.6191e-40,  6.1545e-41, -1.1112e-40,\n\t-1.1880e-02, -3.1884e-02, -2.0850e-02,\n\t-6.8633e-03,  1.6422e-01,  1.0281e+00,\n\t 3.5887e-03,  2.1180e-01, -1.0094e-01,\n\t-1.5103e-02, -4.9074e-02, -1.7702e-02,\n\t 7.2119e-02,  3.3199e-02, -9.7082e-04,\n\t 5.5383e-02,  1.0343e-01,  2.5156e-02,\n\t 2.9049e-40, -1.6397e-40, -8.8848e-41,\n\t-6.2827e-40,  8.1281e-41,  5.2909e-40,\n\t-4.1132e-40,  1.5751e-40,  1.5400e-40,\n\t-7.3765e-02, -4.9723e-02,  4.9357e-02,\n\t-2.4207e-02, -1.0291e-01, -1.4001e-03,\n\t-1.2751e-02,  4.2805e-03,  1.8934e-03,\n\t 2.6862e-02,  1.1634e-01,  4.5666e-02,\n\t-4.7351e-03, -4.1593e-01,  3.6082e-02,\n\t 1.1446e-02, -5.2026e-03,  1.8672e-02,\n\t-7.0960e-04, -6.7877e-03,  9.6674e-03,\n\t-4.9952e-03,  8.8664e-02, -2.7707e-02,\n\t 8.5309e-02,  5.5513e-02, -7.6230e-02,\n\t 3.6354e-02,  9.7794e-02,  1.1687e-02,\n\t 2.6847e-02,  3.2565e-01, -8.7710e-03,\n\t-2.0372e-02, -1.9090e-02, -3.2566e-03,\n\t-5.5592e-40,  7.4408e-41,  3.5576e-40,\n\t 2.7758e-40,  4.5458e-41, -6.2347e-40,\n\t 9.9739e-41, -1.6078e-40, -5.2900e-40,\n\t 1.1500e-02, -3.0675e-01, -3.0079e-02,\n\t 1.5080e-02, -2.4292e-01,  1.2736e-01,\n\t-1.9513e-02, -1.9376e-02, -8.5960e-02,\n\t-1.0241e-01, -2.1312e-02, -3.1999e-02,\n\t-6.3598e-02,  1.5187e-01,  1.2279e-01,\n\t 1.5695e-03,  1.1376e-01,  5.2648e-03,\n\t 2.6415e-40,  3.0508e-40,  3.6407e-41,\n\t-1.4403e-40,  2.8942e-40, -1.0089e-40,\n\t 2.2362e-41,  1.9843e-40, -1.5509e-40,\n\t 1.3269e-01, -3.1031e-01, -4.4091e-02,\n\t 4.6385e-03,  2.1411e-02,  5.7141e-02,\n\t 2.0724e-02, -3.5406e-02,  2.5717e-03,\n\t-5.5922e-02,  7.1404e-01, -2.9852e-02,\n\t 1.3041e-02,  3.9373e-02, -2.4515e-01,\n\t 4.4278e-03,  2.1557e-02, -8.4940e-03,\n\t 1.3677e-02, -3.5183e-02,  1.2391e-02,\n\t-9.2405e-02,  2.9650e-01,  6.9695e-02,\n\t-3.3125e-02,  3.4700e-01,  1.4552e-01,\n\t 2.7357e-02,  5.2133e-01, -5.7571e-02,\n\t 2.7580e-02,  1.0381e-01,  1.3678e-02,\n\t 4.9260e-03, -4.4419e-02,  7.0651e-04,\n\t 2.9472e-40, -5.2892e-40, -3.6567e-40,\n\t 4.9403e-40, -6.2132e-40, -6.2920e-40,\n\t-1.5156e-40, -3.6134e-40,  5.2432e-40,\n\t-5.0427e-03, -2.8247e-03, -5.3734e-02,\n\t-1.5918e-02,  1.8325e-01, -1.7834e-01,\n\t-5.1774e-03,  8.0009e-02,  5.6296e-03,\n\t 3.1480e-02,  2.0665e-02,  2.7806e-04,\n\t 7.3085e-02,  7.7660e-01,  1.1979e-01,\n\t 1.9979e-02,  1.6629e-01,  2.3216e-02,\n\t-5.9701e-40,  9.5583e-41,  1.8231e-40,\n\t-3.3216e-40, -4.1253e-40, -3.3326e-40,\n\t 1.7131e-40,  2.9588e-40, -2.2520e-40,\n\t-1.3337e-01, -4.2777e-01, -1.3569e-01,\n\t 2.9915e-02, -2.7016e-01, -3.7454e-03,\n\t-1.3574e-02, -3.6298e-02, -1.6571e-02,\n\t 4.2530e-02, -4.2299e-02,  1.4320e-01,\n\t 1.4371e-02, -1.1289e-01, -3.8829e-02,\n\t 5.1689e-03,  1.5804e-02,  1.6125e-03,\n\t-3.4601e-03, -7.2087e-03, -5.5514e-04,\n\t 4.4568e-02,  1.3621e-01, -4.3811e-02,\n\t 1.1350e-02, -2.8417e-01,  3.1553e-02,\n\t-7.8854e-02, -2.0316e-01,  7.7746e-03,\n\t-1.1437e-02,  2.1557e-01, -1.9479e-02,\n\t-1.3511e-02, -2.0339e-02, -1.0276e-02\n};\n\nconst static MF4 biasLA = { -0.0006,  0.0117,  0.0083,  0.0686 };\n\nconst static MF kernelsLB[9 * 8 * 4] = {\n\t-8.8977e-41,  5.9533e-40, -3.1413e-40,\n\t-3.1892e-40,  5.5204e-40, -5.0634e-40,\n\t-2.4932e-41,  4.3474e-41,  6.2961e-40,\n\t 4.7864e-03,  5.7125e-02, -1.5468e-02,\n\t-3.9614e-03, -2.9042e-02,  2.8347e-01,\n\t-1.0133e-02,  8.2745e-02, -1.0450e-01,\n\t 5.9537e-03,  1.4050e-02,  1.9802e-04,\n\t 2.4964e-02,  1.3077e-01, -4.7314e-02,\n\t 6.2744e-03, -1.9068e-01,  5.2593e-02,\n\t-2.0550e-40, -2.4231e-40,  3.3927e-40,\n\t-3.9609e-41,  2.2262e-40,  1.8866e-40,\n\t 2.0788e-40, -1.8012e-40, -1.9375e-40,\n\t-4.7530e-03, -1.2315e-01,  8.2373e-03,\n\t-9.2412e-02,  1.7156e-01,  1.1176e-02,\n\t-1.4081e-02,  1.4694e-02, -1.9475e-02,\n\t-1.5269e-02, -3.8430e-02, -7.4717e-02,\n\t 3.3361e-02, -1.1956e-01,  4.2304e-01,\n\t-2.9924e-03, -3.3035e-02, -3.6560e-02,\n\t-1.2386e-02,  6.3762e-03, -3.7047e-02,\n\t 1.3839e-02, -3.6358e-02,  4.3609e-02,\n\t-8.3692e-03,  4.5794e-01, -3.0761e-01,\n\t 2.2287e-02,  2.5360e-02, -6.1253e-03,\n\t-1.8992e-02, -4.0078e-01,  7.3821e-02,\n\t 5.6517e-03,  4.2348e-02, -2.5642e-02,\n\t 5.5659e-40, -6.1219e-40,  4.1493e-40,\n\t 5.7719e-42, -3.7181e-40, -3.3260e-40,\n\t-4.8241e-41,  5.2207e-40, -1.2199e-40,\n\t-1.2074e-02,  1.7647e-01,  1.1882e-02,\n\t 6.4764e-03, -2.3742e-01, -1.8033e-01,\n\t 2.5866e-02,  6.5985e-02,  3.7191e-02,\n\t 5.1047e-02, -3.0457e-02,  1.2531e-02,\n\t-1.3252e-01,  1.2593e-01, -6.3717e-02,\n\t 4.0794e-02, -1.4786e-02,  1.7139e-02,\n\t 2.4343e-40, -1.7451e-40,  2.0169e-40,\n\t-5.5166e-40,  2.4201e-40, -2.5701e-40,\n\t 2.9947e-40,  2.9321e-40, -1.6015e-40,\n\t-3.6598e-02, -1.8520e-03, -1.6999e-01,\n\t-8.6806e-02, -7.7266e-02, -9.6042e-02,\n\t-2.1342e-02,  2.5793e-02, -7.2541e-03,\n\t 3.0667e-02, -2.6287e-01,  3.0592e-02,\n\t-4.5559e-02, -1.4716e-01,  2.0932e-01,\n\t-5.8472e-03, -1.0023e-02,  1.2134e-02,\n\t-1.3284e-02,  2.0538e-02, -5.4476e-04,\n\t 5.8096e-02, -1.4790e-02, -2.0158e-02,\n\t-3.9654e-02, -2.2069e-01, -1.5089e-01,\n\t-1.8966e-01, -1.6834e-01,  9.8934e-02,\n\t 8.2326e-02,  7.5585e-02, -1.7188e-02,\n\t-1.4985e-02,  2.1823e-02, -7.7015e-03,\n\t 1.8353e-40,  4.8298e-40, -2.0568e-40,\n\t-3.7196e-40, -5.7237e-40,  1.0648e-40,\n\t 9.4960e-41,  3.0411e-40,  1.3294e-40,\n\t-1.4884e-02,  4.9767e-02, -3.0288e-02,\n\t 8.9874e-03, -1.0290e-01,  3.1344e-01,\n\t 5.9735e-03, -2.0813e-01, -6.6145e-03,\n\t 1.6592e-02,  3.0529e-05, -1.0180e-02,\n\t-4.8683e-02,  1.4025e-01,  2.9237e-02,\n\t-2.3334e-02, -9.6638e-02, -1.0268e-02,\n\t-4.9497e-41, -5.6377e-40, -2.0142e-40,\n\t 2.1230e-40,  1.6067e-40,  3.4830e-40,\n\t-4.9031e-40, -3.0290e-40, -2.9060e-40,\n\t 3.4053e-02, -8.9560e-02, -4.4479e-02,\n\t 4.2128e-02,  6.9253e-02, -7.1096e-03,\n\t 4.2358e-02, -1.7215e-02,  9.0389e-03,\n\t 1.8129e-02, -1.4785e-01,  1.1267e-01,\n\t-7.1637e-02,  5.5595e-01, -1.0569e-02,\n\t 1.8481e-02, -4.7556e-02, -1.1185e-02,\n\t-1.1766e-02, -8.5959e-03, -3.0046e-02,\n\t-2.1081e-03,  1.1518e-01, -8.4419e-02,\n\t-7.5829e-02,  1.8199e-01, -9.7726e-03,\n\t 3.6473e-02,  1.8761e-01,  4.9495e-03,\n\t-6.9640e-02, -2.8775e-01,  3.6149e-02,\n\t 9.6345e-04,  1.3967e-02, -6.0015e-03,\n\t 2.9861e-40,  3.9190e-40,  5.3741e-40,\n\t 3.8059e-40,  4.7113e-40,  5.9498e-40,\n\t-5.0640e-40, -4.1610e-40,  6.2009e-40,\n\t-2.3464e-03, -7.3888e-02,  3.4701e-02,\n\t-5.2257e-04,  3.8444e-02, -5.3735e-01,\n\t-1.7970e-03,  9.0298e-02,  5.3151e-02,\n\t-2.6033e-02,  1.2973e-02,  4.9147e-03,\n\t 2.3005e-02,  1.7045e-01,  2.4715e-02,\n\t 2.7981e-02, -8.4662e-02, -9.4778e-03,\n\t 5.3019e-40, -2.1800e-40,  1.5281e-40,\n\t-1.0282e-40,  1.8040e-41,  1.3929e-40,\n\t-5.9679e-40, -5.2958e-40,  1.4429e-40,\n\t 3.4325e-02, -1.7240e-01, -4.9645e-02,\n\t-2.4341e-02,  5.2652e-02, -1.1188e-02,\n\t-3.6336e-03,  4.2148e-04,  3.3086e-03,\n\t 5.5059e-03,  1.7744e-01, -2.8681e-02,\n\t-3.4868e-03, -1.4569e-01,  1.6508e-02,\n\t 4.6766e-03, -1.7963e-02, -2.6397e-03,\n\t 4.3618e-03, -4.2793e-03, -4.7820e-04,\n\t-4.2795e-02,  2.0070e-01,  3.8402e-02,\n\t 5.0586e-02,  2.1910e-01, -3.4381e-02,\n\t 5.7625e-02,  4.2314e-01, -1.9732e-02,\n\t 3.4811e-02, -2.3033e-01,  1.1477e-02,\n\t-7.3744e-03,  1.9112e-02,  4.2251e-03\n};\n\nconst static MF4 biasLB = { -0.0046,  0.0015, -0.0076,  0.0079 };\n\nconst static MF kernelsL10[4 * 8] = {\n\t 0.4908, -0.0457,\n\t-0.1716, -0.2115,\n\t-0.0015, -0.3152,\n\t 0.3045,  0.0330,\n\t-0.2981,  0.0912,\n\t 0.0122,  0.2281,\n\t 0.3331,  0.2853,\n\t 0.2210,  0.2611,\n\t 0.2364,  0.0792,\n\t 0.2885, -0.7122,\n\t-0.3715,  0.1404,\n\t-0.0260,  0.2144,\n\t 0.2378,  0.1570,\n\t-0.5734,  0.2077,\n\t-0.0851,  0.2771,\n\t 0.0415, -0.1858\n};\n\nconst static MF2x3 rgb2uv = {\n\t-0.169, -0.331, 0.5,\n\t0.5, -0.419, -0.081\n};\n\nconst static MF3x3 yuv2rgb = {\n\t1, -0.00093, 1.401687,\n\t1, -0.3437, -0.71417,\n\t1, 1.77216, 0.00099\n};\n\nvoid Pass9(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 outputPt = GetOutputPt();\n\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 tl2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 ml2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 target1 = biasLA;\n\ttarget1 = MulAdd(tl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 0], kernelsLA[1 * 72 + 0 * 9 + 0], kernelsLA[2 * 72 + 0 * 9 + 0], kernelsLA[3 * 72 + 0 * 9 + 0], kernelsLA[0 * 72 + 1 * 9 + 0], kernelsLA[1 * 72 + 1 * 9 + 0], kernelsLA[2 * 72 + 1 * 9 + 0], kernelsLA[3 * 72 + 1 * 9 + 0], kernelsLA[0 * 72 + 2 * 9 + 0], kernelsLA[1 * 72 + 2 * 9 + 0], kernelsLA[2 * 72 + 2 * 9 + 0], kernelsLA[3 * 72 + 2 * 9 + 0], kernelsLA[0 * 72 + 3 * 9 + 0], kernelsLA[1 * 72 + 3 * 9 + 0], kernelsLA[2 * 72 + 3 * 9 + 0], kernelsLA[3 * 72 + 3 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 1], kernelsLA[1 * 72 + 0 * 9 + 1], kernelsLA[2 * 72 + 0 * 9 + 1], kernelsLA[3 * 72 + 0 * 9 + 1], kernelsLA[0 * 72 + 1 * 9 + 1], kernelsLA[1 * 72 + 1 * 9 + 1], kernelsLA[2 * 72 + 1 * 9 + 1], kernelsLA[3 * 72 + 1 * 9 + 1], kernelsLA[0 * 72 + 2 * 9 + 1], kernelsLA[1 * 72 + 2 * 9 + 1], kernelsLA[2 * 72 + 2 * 9 + 1], kernelsLA[3 * 72 + 2 * 9 + 1], kernelsLA[0 * 72 + 3 * 9 + 1], kernelsLA[1 * 72 + 3 * 9 + 1], kernelsLA[2 * 72 + 3 * 9 + 1], kernelsLA[3 * 72 + 3 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 2], kernelsLA[1 * 72 + 0 * 9 + 2], kernelsLA[2 * 72 + 0 * 9 + 2], kernelsLA[3 * 72 + 0 * 9 + 2], kernelsLA[0 * 72 + 1 * 9 + 2], kernelsLA[1 * 72 + 1 * 9 + 2], kernelsLA[2 * 72 + 1 * 9 + 2], kernelsLA[3 * 72 + 1 * 9 + 2], kernelsLA[0 * 72 + 2 * 9 + 2], kernelsLA[1 * 72 + 2 * 9 + 2], kernelsLA[2 * 72 + 2 * 9 + 2], kernelsLA[3 * 72 + 2 * 9 + 2], kernelsLA[0 * 72 + 3 * 9 + 2], kernelsLA[1 * 72 + 3 * 9 + 2], kernelsLA[2 * 72 + 3 * 9 + 2], kernelsLA[3 * 72 + 3 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 3], kernelsLA[1 * 72 + 0 * 9 + 3], kernelsLA[2 * 72 + 0 * 9 + 3], kernelsLA[3 * 72 + 0 * 9 + 3], kernelsLA[0 * 72 + 1 * 9 + 3], kernelsLA[1 * 72 + 1 * 9 + 3], kernelsLA[2 * 72 + 1 * 9 + 3], kernelsLA[3 * 72 + 1 * 9 + 3], kernelsLA[0 * 72 + 2 * 9 + 3], kernelsLA[1 * 72 + 2 * 9 + 3], kernelsLA[2 * 72 + 2 * 9 + 3], kernelsLA[3 * 72 + 2 * 9 + 3], kernelsLA[0 * 72 + 3 * 9 + 3], kernelsLA[1 * 72 + 3 * 9 + 3], kernelsLA[2 * 72 + 3 * 9 + 3], kernelsLA[3 * 72 + 3 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 4], kernelsLA[1 * 72 + 0 * 9 + 4], kernelsLA[2 * 72 + 0 * 9 + 4], kernelsLA[3 * 72 + 0 * 9 + 4], kernelsLA[0 * 72 + 1 * 9 + 4], kernelsLA[1 * 72 + 1 * 9 + 4], kernelsLA[2 * 72 + 1 * 9 + 4], kernelsLA[3 * 72 + 1 * 9 + 4], kernelsLA[0 * 72 + 2 * 9 + 4], kernelsLA[1 * 72 + 2 * 9 + 4], kernelsLA[2 * 72 + 2 * 9 + 4], kernelsLA[3 * 72 + 2 * 9 + 4], kernelsLA[0 * 72 + 3 * 9 + 4], kernelsLA[1 * 72 + 3 * 9 + 4], kernelsLA[2 * 72 + 3 * 9 + 4], kernelsLA[3 * 72 + 3 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 5], kernelsLA[1 * 72 + 0 * 9 + 5], kernelsLA[2 * 72 + 0 * 9 + 5], kernelsLA[3 * 72 + 0 * 9 + 5], kernelsLA[0 * 72 + 1 * 9 + 5], kernelsLA[1 * 72 + 1 * 9 + 5], kernelsLA[2 * 72 + 1 * 9 + 5], kernelsLA[3 * 72 + 1 * 9 + 5], kernelsLA[0 * 72 + 2 * 9 + 5], kernelsLA[1 * 72 + 2 * 9 + 5], kernelsLA[2 * 72 + 2 * 9 + 5], kernelsLA[3 * 72 + 2 * 9 + 5], kernelsLA[0 * 72 + 3 * 9 + 5], kernelsLA[1 * 72 + 3 * 9 + 5], kernelsLA[2 * 72 + 3 * 9 + 5], kernelsLA[3 * 72 + 3 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 6], kernelsLA[1 * 72 + 0 * 9 + 6], kernelsLA[2 * 72 + 0 * 9 + 6], kernelsLA[3 * 72 + 0 * 9 + 6], kernelsLA[0 * 72 + 1 * 9 + 6], kernelsLA[1 * 72 + 1 * 9 + 6], kernelsLA[2 * 72 + 1 * 9 + 6], kernelsLA[3 * 72 + 1 * 9 + 6], kernelsLA[0 * 72 + 2 * 9 + 6], kernelsLA[1 * 72 + 2 * 9 + 6], kernelsLA[2 * 72 + 2 * 9 + 6], kernelsLA[3 * 72 + 2 * 9 + 6], kernelsLA[0 * 72 + 3 * 9 + 6], kernelsLA[1 * 72 + 3 * 9 + 6], kernelsLA[2 * 72 + 3 * 9 + 6], kernelsLA[3 * 72 + 3 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 7], kernelsLA[1 * 72 + 0 * 9 + 7], kernelsLA[2 * 72 + 0 * 9 + 7], kernelsLA[3 * 72 + 0 * 9 + 7], kernelsLA[0 * 72 + 1 * 9 + 7], kernelsLA[1 * 72 + 1 * 9 + 7], kernelsLA[2 * 72 + 1 * 9 + 7], kernelsLA[3 * 72 + 1 * 9 + 7], kernelsLA[0 * 72 + 2 * 9 + 7], kernelsLA[1 * 72 + 2 * 9 + 7], kernelsLA[2 * 72 + 2 * 9 + 7], kernelsLA[3 * 72 + 2 * 9 + 7], kernelsLA[0 * 72 + 3 * 9 + 7], kernelsLA[1 * 72 + 3 * 9 + 7], kernelsLA[2 * 72 + 3 * 9 + 7], kernelsLA[3 * 72 + 3 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br1, MF4x4(kernelsLA[0 * 72 + 0 * 9 + 8], kernelsLA[1 * 72 + 0 * 9 + 8], kernelsLA[2 * 72 + 0 * 9 + 8], kernelsLA[3 * 72 + 0 * 9 + 8], kernelsLA[0 * 72 + 1 * 9 + 8], kernelsLA[1 * 72 + 1 * 9 + 8], kernelsLA[2 * 72 + 1 * 9 + 8], kernelsLA[3 * 72 + 1 * 9 + 8], kernelsLA[0 * 72 + 2 * 9 + 8], kernelsLA[1 * 72 + 2 * 9 + 8], kernelsLA[2 * 72 + 2 * 9 + 8], kernelsLA[3 * 72 + 2 * 9 + 8], kernelsLA[0 * 72 + 3 * 9 + 8], kernelsLA[1 * 72 + 3 * 9 + 8], kernelsLA[2 * 72 + 3 * 9 + 8], kernelsLA[3 * 72 + 3 * 9 + 8]), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 0], kernelsLA[1 * 72 + 4 * 9 + 0], kernelsLA[2 * 72 + 4 * 9 + 0], kernelsLA[3 * 72 + 4 * 9 + 0], kernelsLA[0 * 72 + 5 * 9 + 0], kernelsLA[1 * 72 + 5 * 9 + 0], kernelsLA[2 * 72 + 5 * 9 + 0], kernelsLA[3 * 72 + 5 * 9 + 0], kernelsLA[0 * 72 + 6 * 9 + 0], kernelsLA[1 * 72 + 6 * 9 + 0], kernelsLA[2 * 72 + 6 * 9 + 0], kernelsLA[3 * 72 + 6 * 9 + 0], kernelsLA[0 * 72 + 7 * 9 + 0], kernelsLA[1 * 72 + 7 * 9 + 0], kernelsLA[2 * 72 + 7 * 9 + 0], kernelsLA[3 * 72 + 7 * 9 + 0]), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 1], kernelsLA[1 * 72 + 4 * 9 + 1], kernelsLA[2 * 72 + 4 * 9 + 1], kernelsLA[3 * 72 + 4 * 9 + 1], kernelsLA[0 * 72 + 5 * 9 + 1], kernelsLA[1 * 72 + 5 * 9 + 1], kernelsLA[2 * 72 + 5 * 9 + 1], kernelsLA[3 * 72 + 5 * 9 + 1], kernelsLA[0 * 72 + 6 * 9 + 1], kernelsLA[1 * 72 + 6 * 9 + 1], kernelsLA[2 * 72 + 6 * 9 + 1], kernelsLA[3 * 72 + 6 * 9 + 1], kernelsLA[0 * 72 + 7 * 9 + 1], kernelsLA[1 * 72 + 7 * 9 + 1], kernelsLA[2 * 72 + 7 * 9 + 1], kernelsLA[3 * 72 + 7 * 9 + 1]), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 2], kernelsLA[1 * 72 + 4 * 9 + 2], kernelsLA[2 * 72 + 4 * 9 + 2], kernelsLA[3 * 72 + 4 * 9 + 2], kernelsLA[0 * 72 + 5 * 9 + 2], kernelsLA[1 * 72 + 5 * 9 + 2], kernelsLA[2 * 72 + 5 * 9 + 2], kernelsLA[3 * 72 + 5 * 9 + 2], kernelsLA[0 * 72 + 6 * 9 + 2], kernelsLA[1 * 72 + 6 * 9 + 2], kernelsLA[2 * 72 + 6 * 9 + 2], kernelsLA[3 * 72 + 6 * 9 + 2], kernelsLA[0 * 72 + 7 * 9 + 2], kernelsLA[1 * 72 + 7 * 9 + 2], kernelsLA[2 * 72 + 7 * 9 + 2], kernelsLA[3 * 72 + 7 * 9 + 2]), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 3], kernelsLA[1 * 72 + 4 * 9 + 3], kernelsLA[2 * 72 + 4 * 9 + 3], kernelsLA[3 * 72 + 4 * 9 + 3], kernelsLA[0 * 72 + 5 * 9 + 3], kernelsLA[1 * 72 + 5 * 9 + 3], kernelsLA[2 * 72 + 5 * 9 + 3], kernelsLA[3 * 72 + 5 * 9 + 3], kernelsLA[0 * 72 + 6 * 9 + 3], kernelsLA[1 * 72 + 6 * 9 + 3], kernelsLA[2 * 72 + 6 * 9 + 3], kernelsLA[3 * 72 + 6 * 9 + 3], kernelsLA[0 * 72 + 7 * 9 + 3], kernelsLA[1 * 72 + 7 * 9 + 3], kernelsLA[2 * 72 + 7 * 9 + 3], kernelsLA[3 * 72 + 7 * 9 + 3]), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 4], kernelsLA[1 * 72 + 4 * 9 + 4], kernelsLA[2 * 72 + 4 * 9 + 4], kernelsLA[3 * 72 + 4 * 9 + 4], kernelsLA[0 * 72 + 5 * 9 + 4], kernelsLA[1 * 72 + 5 * 9 + 4], kernelsLA[2 * 72 + 5 * 9 + 4], kernelsLA[3 * 72 + 5 * 9 + 4], kernelsLA[0 * 72 + 6 * 9 + 4], kernelsLA[1 * 72 + 6 * 9 + 4], kernelsLA[2 * 72 + 6 * 9 + 4], kernelsLA[3 * 72 + 6 * 9 + 4], kernelsLA[0 * 72 + 7 * 9 + 4], kernelsLA[1 * 72 + 7 * 9 + 4], kernelsLA[2 * 72 + 7 * 9 + 4], kernelsLA[3 * 72 + 7 * 9 + 4]), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 5], kernelsLA[1 * 72 + 4 * 9 + 5], kernelsLA[2 * 72 + 4 * 9 + 5], kernelsLA[3 * 72 + 4 * 9 + 5], kernelsLA[0 * 72 + 5 * 9 + 5], kernelsLA[1 * 72 + 5 * 9 + 5], kernelsLA[2 * 72 + 5 * 9 + 5], kernelsLA[3 * 72 + 5 * 9 + 5], kernelsLA[0 * 72 + 6 * 9 + 5], kernelsLA[1 * 72 + 6 * 9 + 5], kernelsLA[2 * 72 + 6 * 9 + 5], kernelsLA[3 * 72 + 6 * 9 + 5], kernelsLA[0 * 72 + 7 * 9 + 5], kernelsLA[1 * 72 + 7 * 9 + 5], kernelsLA[2 * 72 + 7 * 9 + 5], kernelsLA[3 * 72 + 7 * 9 + 5]), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 6], kernelsLA[1 * 72 + 4 * 9 + 6], kernelsLA[2 * 72 + 4 * 9 + 6], kernelsLA[3 * 72 + 4 * 9 + 6], kernelsLA[0 * 72 + 5 * 9 + 6], kernelsLA[1 * 72 + 5 * 9 + 6], kernelsLA[2 * 72 + 5 * 9 + 6], kernelsLA[3 * 72 + 5 * 9 + 6], kernelsLA[0 * 72 + 6 * 9 + 6], kernelsLA[1 * 72 + 6 * 9 + 6], kernelsLA[2 * 72 + 6 * 9 + 6], kernelsLA[3 * 72 + 6 * 9 + 6], kernelsLA[0 * 72 + 7 * 9 + 6], kernelsLA[1 * 72 + 7 * 9 + 6], kernelsLA[2 * 72 + 7 * 9 + 6], kernelsLA[3 * 72 + 7 * 9 + 6]), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 7], kernelsLA[1 * 72 + 4 * 9 + 7], kernelsLA[2 * 72 + 4 * 9 + 7], kernelsLA[3 * 72 + 4 * 9 + 7], kernelsLA[0 * 72 + 5 * 9 + 7], kernelsLA[1 * 72 + 5 * 9 + 7], kernelsLA[2 * 72 + 5 * 9 + 7], kernelsLA[3 * 72 + 5 * 9 + 7], kernelsLA[0 * 72 + 6 * 9 + 7], kernelsLA[1 * 72 + 6 * 9 + 7], kernelsLA[2 * 72 + 6 * 9 + 7], kernelsLA[3 * 72 + 6 * 9 + 7], kernelsLA[0 * 72 + 7 * 9 + 7], kernelsLA[1 * 72 + 7 * 9 + 7], kernelsLA[2 * 72 + 7 * 9 + 7], kernelsLA[3 * 72 + 7 * 9 + 7]), target1);\n\ttarget1 = MulAdd(br2, MF4x4(kernelsLA[0 * 72 + 4 * 9 + 8], kernelsLA[1 * 72 + 4 * 9 + 8], kernelsLA[2 * 72 + 4 * 9 + 8], kernelsLA[3 * 72 + 4 * 9 + 8], kernelsLA[0 * 72 + 5 * 9 + 8], kernelsLA[1 * 72 + 5 * 9 + 8], kernelsLA[2 * 72 + 5 * 9 + 8], kernelsLA[3 * 72 + 5 * 9 + 8], kernelsLA[0 * 72 + 6 * 9 + 8], kernelsLA[1 * 72 + 6 * 9 + 8], kernelsLA[2 * 72 + 6 * 9 + 8], kernelsLA[3 * 72 + 6 * 9 + 8], kernelsLA[0 * 72 + 7 * 9 + 8], kernelsLA[1 * 72 + 7 * 9 + 8], kernelsLA[2 * 72 + 7 * 9 + 8], kernelsLA[3 * 72 + 7 * 9 + 8]), target1);\n\ttarget1 = RELU(target1);\n\n\tMF4 target2 = biasLB;\n\ttarget2 = MulAdd(tl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 0], kernelsLB[1 * 72 + 0 * 9 + 0], kernelsLB[2 * 72 + 0 * 9 + 0], kernelsLB[3 * 72 + 0 * 9 + 0], kernelsLB[0 * 72 + 1 * 9 + 0], kernelsLB[1 * 72 + 1 * 9 + 0], kernelsLB[2 * 72 + 1 * 9 + 0], kernelsLB[3 * 72 + 1 * 9 + 0], kernelsLB[0 * 72 + 2 * 9 + 0], kernelsLB[1 * 72 + 2 * 9 + 0], kernelsLB[2 * 72 + 2 * 9 + 0], kernelsLB[3 * 72 + 2 * 9 + 0], kernelsLB[0 * 72 + 3 * 9 + 0], kernelsLB[1 * 72 + 3 * 9 + 0], kernelsLB[2 * 72 + 3 * 9 + 0], kernelsLB[3 * 72 + 3 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 1], kernelsLB[1 * 72 + 0 * 9 + 1], kernelsLB[2 * 72 + 0 * 9 + 1], kernelsLB[3 * 72 + 0 * 9 + 1], kernelsLB[0 * 72 + 1 * 9 + 1], kernelsLB[1 * 72 + 1 * 9 + 1], kernelsLB[2 * 72 + 1 * 9 + 1], kernelsLB[3 * 72 + 1 * 9 + 1], kernelsLB[0 * 72 + 2 * 9 + 1], kernelsLB[1 * 72 + 2 * 9 + 1], kernelsLB[2 * 72 + 2 * 9 + 1], kernelsLB[3 * 72 + 2 * 9 + 1], kernelsLB[0 * 72 + 3 * 9 + 1], kernelsLB[1 * 72 + 3 * 9 + 1], kernelsLB[2 * 72 + 3 * 9 + 1], kernelsLB[3 * 72 + 3 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 2], kernelsLB[1 * 72 + 0 * 9 + 2], kernelsLB[2 * 72 + 0 * 9 + 2], kernelsLB[3 * 72 + 0 * 9 + 2], kernelsLB[0 * 72 + 1 * 9 + 2], kernelsLB[1 * 72 + 1 * 9 + 2], kernelsLB[2 * 72 + 1 * 9 + 2], kernelsLB[3 * 72 + 1 * 9 + 2], kernelsLB[0 * 72 + 2 * 9 + 2], kernelsLB[1 * 72 + 2 * 9 + 2], kernelsLB[2 * 72 + 2 * 9 + 2], kernelsLB[3 * 72 + 2 * 9 + 2], kernelsLB[0 * 72 + 3 * 9 + 2], kernelsLB[1 * 72 + 3 * 9 + 2], kernelsLB[2 * 72 + 3 * 9 + 2], kernelsLB[3 * 72 + 3 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 3], kernelsLB[1 * 72 + 0 * 9 + 3], kernelsLB[2 * 72 + 0 * 9 + 3], kernelsLB[3 * 72 + 0 * 9 + 3], kernelsLB[0 * 72 + 1 * 9 + 3], kernelsLB[1 * 72 + 1 * 9 + 3], kernelsLB[2 * 72 + 1 * 9 + 3], kernelsLB[3 * 72 + 1 * 9 + 3], kernelsLB[0 * 72 + 2 * 9 + 3], kernelsLB[1 * 72 + 2 * 9 + 3], kernelsLB[2 * 72 + 2 * 9 + 3], kernelsLB[3 * 72 + 2 * 9 + 3], kernelsLB[0 * 72 + 3 * 9 + 3], kernelsLB[1 * 72 + 3 * 9 + 3], kernelsLB[2 * 72 + 3 * 9 + 3], kernelsLB[3 * 72 + 3 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 4], kernelsLB[1 * 72 + 0 * 9 + 4], kernelsLB[2 * 72 + 0 * 9 + 4], kernelsLB[3 * 72 + 0 * 9 + 4], kernelsLB[0 * 72 + 1 * 9 + 4], kernelsLB[1 * 72 + 1 * 9 + 4], kernelsLB[2 * 72 + 1 * 9 + 4], kernelsLB[3 * 72 + 1 * 9 + 4], kernelsLB[0 * 72 + 2 * 9 + 4], kernelsLB[1 * 72 + 2 * 9 + 4], kernelsLB[2 * 72 + 2 * 9 + 4], kernelsLB[3 * 72 + 2 * 9 + 4], kernelsLB[0 * 72 + 3 * 9 + 4], kernelsLB[1 * 72 + 3 * 9 + 4], kernelsLB[2 * 72 + 3 * 9 + 4], kernelsLB[3 * 72 + 3 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 5], kernelsLB[1 * 72 + 0 * 9 + 5], kernelsLB[2 * 72 + 0 * 9 + 5], kernelsLB[3 * 72 + 0 * 9 + 5], kernelsLB[0 * 72 + 1 * 9 + 5], kernelsLB[1 * 72 + 1 * 9 + 5], kernelsLB[2 * 72 + 1 * 9 + 5], kernelsLB[3 * 72 + 1 * 9 + 5], kernelsLB[0 * 72 + 2 * 9 + 5], kernelsLB[1 * 72 + 2 * 9 + 5], kernelsLB[2 * 72 + 2 * 9 + 5], kernelsLB[3 * 72 + 2 * 9 + 5], kernelsLB[0 * 72 + 3 * 9 + 5], kernelsLB[1 * 72 + 3 * 9 + 5], kernelsLB[2 * 72 + 3 * 9 + 5], kernelsLB[3 * 72 + 3 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 6], kernelsLB[1 * 72 + 0 * 9 + 6], kernelsLB[2 * 72 + 0 * 9 + 6], kernelsLB[3 * 72 + 0 * 9 + 6], kernelsLB[0 * 72 + 1 * 9 + 6], kernelsLB[1 * 72 + 1 * 9 + 6], kernelsLB[2 * 72 + 1 * 9 + 6], kernelsLB[3 * 72 + 1 * 9 + 6], kernelsLB[0 * 72 + 2 * 9 + 6], kernelsLB[1 * 72 + 2 * 9 + 6], kernelsLB[2 * 72 + 2 * 9 + 6], kernelsLB[3 * 72 + 2 * 9 + 6], kernelsLB[0 * 72 + 3 * 9 + 6], kernelsLB[1 * 72 + 3 * 9 + 6], kernelsLB[2 * 72 + 3 * 9 + 6], kernelsLB[3 * 72 + 3 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 7], kernelsLB[1 * 72 + 0 * 9 + 7], kernelsLB[2 * 72 + 0 * 9 + 7], kernelsLB[3 * 72 + 0 * 9 + 7], kernelsLB[0 * 72 + 1 * 9 + 7], kernelsLB[1 * 72 + 1 * 9 + 7], kernelsLB[2 * 72 + 1 * 9 + 7], kernelsLB[3 * 72 + 1 * 9 + 7], kernelsLB[0 * 72 + 2 * 9 + 7], kernelsLB[1 * 72 + 2 * 9 + 7], kernelsLB[2 * 72 + 2 * 9 + 7], kernelsLB[3 * 72 + 2 * 9 + 7], kernelsLB[0 * 72 + 3 * 9 + 7], kernelsLB[1 * 72 + 3 * 9 + 7], kernelsLB[2 * 72 + 3 * 9 + 7], kernelsLB[3 * 72 + 3 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br1, MF4x4(kernelsLB[0 * 72 + 0 * 9 + 8], kernelsLB[1 * 72 + 0 * 9 + 8], kernelsLB[2 * 72 + 0 * 9 + 8], kernelsLB[3 * 72 + 0 * 9 + 8], kernelsLB[0 * 72 + 1 * 9 + 8], kernelsLB[1 * 72 + 1 * 9 + 8], kernelsLB[2 * 72 + 1 * 9 + 8], kernelsLB[3 * 72 + 1 * 9 + 8], kernelsLB[0 * 72 + 2 * 9 + 8], kernelsLB[1 * 72 + 2 * 9 + 8], kernelsLB[2 * 72 + 2 * 9 + 8], kernelsLB[3 * 72 + 2 * 9 + 8], kernelsLB[0 * 72 + 3 * 9 + 8], kernelsLB[1 * 72 + 3 * 9 + 8], kernelsLB[2 * 72 + 3 * 9 + 8], kernelsLB[3 * 72 + 3 * 9 + 8]), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 0], kernelsLB[1 * 72 + 4 * 9 + 0], kernelsLB[2 * 72 + 4 * 9 + 0], kernelsLB[3 * 72 + 4 * 9 + 0], kernelsLB[0 * 72 + 5 * 9 + 0], kernelsLB[1 * 72 + 5 * 9 + 0], kernelsLB[2 * 72 + 5 * 9 + 0], kernelsLB[3 * 72 + 5 * 9 + 0], kernelsLB[0 * 72 + 6 * 9 + 0], kernelsLB[1 * 72 + 6 * 9 + 0], kernelsLB[2 * 72 + 6 * 9 + 0], kernelsLB[3 * 72 + 6 * 9 + 0], kernelsLB[0 * 72 + 7 * 9 + 0], kernelsLB[1 * 72 + 7 * 9 + 0], kernelsLB[2 * 72 + 7 * 9 + 0], kernelsLB[3 * 72 + 7 * 9 + 0]), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 1], kernelsLB[1 * 72 + 4 * 9 + 1], kernelsLB[2 * 72 + 4 * 9 + 1], kernelsLB[3 * 72 + 4 * 9 + 1], kernelsLB[0 * 72 + 5 * 9 + 1], kernelsLB[1 * 72 + 5 * 9 + 1], kernelsLB[2 * 72 + 5 * 9 + 1], kernelsLB[3 * 72 + 5 * 9 + 1], kernelsLB[0 * 72 + 6 * 9 + 1], kernelsLB[1 * 72 + 6 * 9 + 1], kernelsLB[2 * 72 + 6 * 9 + 1], kernelsLB[3 * 72 + 6 * 9 + 1], kernelsLB[0 * 72 + 7 * 9 + 1], kernelsLB[1 * 72 + 7 * 9 + 1], kernelsLB[2 * 72 + 7 * 9 + 1], kernelsLB[3 * 72 + 7 * 9 + 1]), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 2], kernelsLB[1 * 72 + 4 * 9 + 2], kernelsLB[2 * 72 + 4 * 9 + 2], kernelsLB[3 * 72 + 4 * 9 + 2], kernelsLB[0 * 72 + 5 * 9 + 2], kernelsLB[1 * 72 + 5 * 9 + 2], kernelsLB[2 * 72 + 5 * 9 + 2], kernelsLB[3 * 72 + 5 * 9 + 2], kernelsLB[0 * 72 + 6 * 9 + 2], kernelsLB[1 * 72 + 6 * 9 + 2], kernelsLB[2 * 72 + 6 * 9 + 2], kernelsLB[3 * 72 + 6 * 9 + 2], kernelsLB[0 * 72 + 7 * 9 + 2], kernelsLB[1 * 72 + 7 * 9 + 2], kernelsLB[2 * 72 + 7 * 9 + 2], kernelsLB[3 * 72 + 7 * 9 + 2]), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 3], kernelsLB[1 * 72 + 4 * 9 + 3], kernelsLB[2 * 72 + 4 * 9 + 3], kernelsLB[3 * 72 + 4 * 9 + 3], kernelsLB[0 * 72 + 5 * 9 + 3], kernelsLB[1 * 72 + 5 * 9 + 3], kernelsLB[2 * 72 + 5 * 9 + 3], kernelsLB[3 * 72 + 5 * 9 + 3], kernelsLB[0 * 72 + 6 * 9 + 3], kernelsLB[1 * 72 + 6 * 9 + 3], kernelsLB[2 * 72 + 6 * 9 + 3], kernelsLB[3 * 72 + 6 * 9 + 3], kernelsLB[0 * 72 + 7 * 9 + 3], kernelsLB[1 * 72 + 7 * 9 + 3], kernelsLB[2 * 72 + 7 * 9 + 3], kernelsLB[3 * 72 + 7 * 9 + 3]), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 4], kernelsLB[1 * 72 + 4 * 9 + 4], kernelsLB[2 * 72 + 4 * 9 + 4], kernelsLB[3 * 72 + 4 * 9 + 4], kernelsLB[0 * 72 + 5 * 9 + 4], kernelsLB[1 * 72 + 5 * 9 + 4], kernelsLB[2 * 72 + 5 * 9 + 4], kernelsLB[3 * 72 + 5 * 9 + 4], kernelsLB[0 * 72 + 6 * 9 + 4], kernelsLB[1 * 72 + 6 * 9 + 4], kernelsLB[2 * 72 + 6 * 9 + 4], kernelsLB[3 * 72 + 6 * 9 + 4], kernelsLB[0 * 72 + 7 * 9 + 4], kernelsLB[1 * 72 + 7 * 9 + 4], kernelsLB[2 * 72 + 7 * 9 + 4], kernelsLB[3 * 72 + 7 * 9 + 4]), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 5], kernelsLB[1 * 72 + 4 * 9 + 5], kernelsLB[2 * 72 + 4 * 9 + 5], kernelsLB[3 * 72 + 4 * 9 + 5], kernelsLB[0 * 72 + 5 * 9 + 5], kernelsLB[1 * 72 + 5 * 9 + 5], kernelsLB[2 * 72 + 5 * 9 + 5], kernelsLB[3 * 72 + 5 * 9 + 5], kernelsLB[0 * 72 + 6 * 9 + 5], kernelsLB[1 * 72 + 6 * 9 + 5], kernelsLB[2 * 72 + 6 * 9 + 5], kernelsLB[3 * 72 + 6 * 9 + 5], kernelsLB[0 * 72 + 7 * 9 + 5], kernelsLB[1 * 72 + 7 * 9 + 5], kernelsLB[2 * 72 + 7 * 9 + 5], kernelsLB[3 * 72 + 7 * 9 + 5]), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 6], kernelsLB[1 * 72 + 4 * 9 + 6], kernelsLB[2 * 72 + 4 * 9 + 6], kernelsLB[3 * 72 + 4 * 9 + 6], kernelsLB[0 * 72 + 5 * 9 + 6], kernelsLB[1 * 72 + 5 * 9 + 6], kernelsLB[2 * 72 + 5 * 9 + 6], kernelsLB[3 * 72 + 5 * 9 + 6], kernelsLB[0 * 72 + 6 * 9 + 6], kernelsLB[1 * 72 + 6 * 9 + 6], kernelsLB[2 * 72 + 6 * 9 + 6], kernelsLB[3 * 72 + 6 * 9 + 6], kernelsLB[0 * 72 + 7 * 9 + 6], kernelsLB[1 * 72 + 7 * 9 + 6], kernelsLB[2 * 72 + 7 * 9 + 6], kernelsLB[3 * 72 + 7 * 9 + 6]), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 7], kernelsLB[1 * 72 + 4 * 9 + 7], kernelsLB[2 * 72 + 4 * 9 + 7], kernelsLB[3 * 72 + 4 * 9 + 7], kernelsLB[0 * 72 + 5 * 9 + 7], kernelsLB[1 * 72 + 5 * 9 + 7], kernelsLB[2 * 72 + 5 * 9 + 7], kernelsLB[3 * 72 + 5 * 9 + 7], kernelsLB[0 * 72 + 6 * 9 + 7], kernelsLB[1 * 72 + 6 * 9 + 7], kernelsLB[2 * 72 + 6 * 9 + 7], kernelsLB[3 * 72 + 6 * 9 + 7], kernelsLB[0 * 72 + 7 * 9 + 7], kernelsLB[1 * 72 + 7 * 9 + 7], kernelsLB[2 * 72 + 7 * 9 + 7], kernelsLB[3 * 72 + 7 * 9 + 7]), target2);\n\ttarget2 = MulAdd(br2, MF4x4(kernelsLB[0 * 72 + 4 * 9 + 8], kernelsLB[1 * 72 + 4 * 9 + 8], kernelsLB[2 * 72 + 4 * 9 + 8], kernelsLB[3 * 72 + 4 * 9 + 8], kernelsLB[0 * 72 + 5 * 9 + 8], kernelsLB[1 * 72 + 5 * 9 + 8], kernelsLB[2 * 72 + 5 * 9 + 8], kernelsLB[3 * 72 + 5 * 9 + 8], kernelsLB[0 * 72 + 6 * 9 + 8], kernelsLB[1 * 72 + 6 * 9 + 8], kernelsLB[2 * 72 + 6 * 9 + 8], kernelsLB[3 * 72 + 6 * 9 + 8], kernelsLB[0 * 72 + 7 * 9 + 8], kernelsLB[1 * 72 + 7 * 9 + 8], kernelsLB[2 * 72 + 7 * 9 + 8], kernelsLB[3 * 72 + 7 * 9 + 8]), target2);\n\ttarget2 = RELU(target2);\n\n\t[unroll]\n\tfor (uint i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j <= 1; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i, j);\n\n\t\t\tuint index = j * 2 + i;\n\t\t\tMF luma = saturate(\n\t\t\t\ttarget1.x * kernelsL10[0 + index] +\n\t\t\t\ttarget1.y * kernelsL10[4 + index] +\n\t\t\t\ttarget1.z * kernelsL10[8 + index] +\n\t\t\t\ttarget1.w * kernelsL10[12 + index] +\n\t\t\t\ttarget2.x * kernelsL10[16 + index] +\n\t\t\t\ttarget2.y * kernelsL10[20 + index] +\n\t\t\t\ttarget2.z * kernelsL10[24 + index] +\n\t\t\t\ttarget2.w * kernelsL10[28 + index]);\n\n\t\t\tMF2 originUV = mul(rgb2uv, INPUT.SampleLevel(sam1, (destPos + 0.5f) * outputPt, 0).rgb);\n\t\t\tOUTPUT[destPos] = MF4(mul(yuv2rgb, MF3(luma, originUV)), 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_3D_AA_Upscale_US.hlsl",
    "content": "// Anime4K_3DGraphics_AA_Upscale_x2_US\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Upscale/Anime4K_3DGraphics_AA_Upscale_x2_US.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_3D_Upscale_1\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { 0.025272772, 0.014345055, -0.009859513, 0.000597734 };\n\t\t\tresult = MulAdd(src[i - 1][j - 1], MF3x4(0.10005958, 0.30363804, -0.24045889, -0.003466652, 0.25860623, 0.47408342, -0.58965975, 0.058167808, 0.17228158, 0.43657768, -0.3982826, -0.022539442), result);\n\t\t\tresult = MulAdd(src[i - 1][j], MF3x4(-0.23593923, 0.4692322, 0.04355681, 0.009586428, -0.37485301, 0.5885971, 0.3236714, -0.08301241, -0.3188667, 0.5608897, 0.3396368, 0.059106056), result);\n\t\t\tresult = MulAdd(src[i - 1][j + 1], MF3x4(-0.15485556, -0.11745722, 0.042440087, 0.5313071, -0.24682014, 0.00033858762, -0.08202063, 0.84100145, -0.15803772, -0.11368423, -0.09765383, 0.6991758), result);\n\t\t\tresult = MulAdd(src[i][j - 1], MF3x4(0.21323937, 0.07442176, -0.10949712, -0.05313448, 0.44871446, 0.16815953, 0.07202329, -0.05763504, 0.12998791, 0.06934043, 0.044557367, -0.00978054), result);\n\t\t\tresult = MulAdd(src[i][j], MF3x4(0.40295616, -0.7156766, 0.7321813, -0.54544497, 0.44781828, -1.1244348, 0.7786728, -0.91297877, 0.52567977, -0.81486106, 0.56867415, -0.68681335), result);\n\t\t\tresult = MulAdd(src[i][j + 1], MF3x4(0.020084642, -0.072761856, -0.13040084, 0.063976064, 0.18822637, -0.096821584, -0.06842927, 0.18078656, 0.05295053, -0.18540566, -0.1239999, 0.0156137515), result);\n\t\t\tresult = MulAdd(src[i + 1][j - 1], MF3x4(-0.6254935, 0.0074730455, 0.21930416, 0.028796878, -0.82789946, 0.051125027, 0.25597844, 0.049207535, -0.68400925, -0.015768895, 0.233402, 0.021760475), result);\n\t\t\tresult = MulAdd(src[i + 1][j], MF3x4(0.21823564, -0.15992375, -0.14845636, -0.031485636, 0.13821888, -0.27466524, -0.094343, -0.07067512, 0.20875643, -0.20346795, -0.12910774, -0.052383807), result);\n\t\t\tresult = MulAdd(src[i + 1][j + 1], MF3x4(0.001368614, 0.17603171, -0.36661625, -0.0043979343, 0.1381601, 0.27952382, -0.6743216, 0.0067374213, -0.023204552, 0.21662682, -0.3795221, -0.025739884), result);\n\n\t\t\ttex1[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x8\n//!IN tex1\n//!OUT tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex1.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex1.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex1.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex1.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.012601902, -0.0121468, -0.027073797, -0.0223602 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.08796357, 0.028130328, 0.073414765, -0.029320398, -0.07826724, 0.012752971, 0.06304871, 0.082551956, -0.052348416, 0.010077275, 0.0803755, 0.16395038, -0.08238233, -0.0012038432, -0.1297045, -0.1087021), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(0.044162463, -0.019727755, -0.05845153, -0.23984948, 0.08363732, -0.06774037, 0.0234879, 0.02139741, 0.0028723166, -0.07549135, 0.0744662, 0.109019615, 0.03763121, -0.060664024, -0.03823593, -0.015655363), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.026882887, 0.124355234, -0.005225512, 0.053853527, -0.004761375, 0.07739831, 0.007993726, -0.024238527, -0.035357814, 0.022114292, -0.026158875, 0.047122046, -0.021067293, 0.041959677, 0.008588816, -0.006613815), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.037601672, 0.010898833, 0.05053419, -0.0118405875, 0.052177202, 0.013291429, -0.20246609, -0.07192325, -0.05164381, -0.011278074, -0.12394048, -0.037769064, 0.24392918, 0.03289724, 0.018663784, 0.04071627), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(-0.17768572, -0.003431817, 0.024597375, -0.067222916, -0.15119793, -0.049984362, 0.0588867, 0.20031504, -0.028296817, -0.17337173, 0.02136566, 0.07842319, -0.10203611, 0.02128208, 0.20057699, 0.026265312), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(-0.018206367, -0.36731398, -0.07842714, -0.08946319, 0.05601789, -0.13398123, -0.09766525, 0.0051633804, -0.004821273, -0.060362365, -0.08751827, -0.01924666, -0.01642196, -0.084792316, -0.021546558, -0.01531331), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(-0.003315341, 0.003464535, 0.023609636, -0.029517155, 0.023121882, -0.033598952, 0.032658506, 0.072380014, 0.038630765, -0.020992903, -0.09003304, 0.048244834, 0.17752261, -0.023978172, 0.7178278, 0.09461632), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(0.010277829, -0.0462686, -0.024897251, -0.02214524, 0.1262903, -0.15583614, -0.50100106, -0.04074772, 0.0612536, -0.17066137, -0.15715116, -0.020877155, -0.062031068, 0.4314311, -0.008700501, -0.030722365), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(-0.12062004, 0.055291675, 0.041176047, -0.034254536, -0.04062085, 0.14750236, 0.100433215, 0.024384778, -0.02506444, -0.0012329774, 0.06715311, 0.013158619, -0.07343181, 0.08929479, 0.015891392, 0.0014893904), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(-0.00028356185, 0.008408778, 0.046833538, -0.110735945, 0.050230157, -0.023995856, -0.06471944, -0.12666705, 0.121487044, -0.040447604, -0.13425831, -0.035763647, 0.06327994, 0.04542948, 0.12984566, 0.041735172), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(-0.09654193, 0.055733874, 0.14149562, 0.20103204, -0.04256184, 0.041129943, -0.0997907, 0.030775042, 0.017492702, 0.053436417, -0.13472094, -0.037674613, -0.09461306, 0.07363193, 0.025130237, -0.020962669), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.003966979, -0.077911004, -0.025530541, -0.08657802, 0.047928706, -0.12820454, -0.034780253, 0.070523396, 0.0991259, -0.07432318, -0.035848588, 0.026542934, -0.005886989, -0.048655648, 0.014799456, -0.033676937), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(0.0040423325, 0.011639387, 0.014709128, -0.100935176, -0.03094238, -0.0058094636, 0.1256023, 0.086693585, -0.00840243, -0.02635784, -0.2395783, 0.0055595445, -0.104565054, 0.05285065, 0.092289336, 0.12696597), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(-0.097862415, 0.035469674, -0.12026435, -0.25865972, 0.12508512, -0.00648921, -0.1848096, -0.24143967, -0.009432349, -0.035211377, -0.05589267, -0.11565712, 0.015937572, 0.02717122, -0.09954979, -0.081140056), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.09073428, 0.31426015, 0.087145604, -0.00073830306, 0.013578701, 0.032616604, 0.038264107, 0.07236385, -0.012257218, 0.040580798, 0.08520396, 0.004167174, 0.02280993, 0.113494344, 0.027510444, 0.029490784), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(-0.02391937, 0.0039571812, -0.026116686, -0.025334306, 0.06904104, 0.011511556, -0.14147542, 0.01224604, 0.03788813, -0.041387778, -0.1523622, 0.03650455, 0.04693732, 0.03091366, 0.2839756, 0.1779714), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(-0.026292996, 0.020397607, 0.09354275, 0.00044126343, -0.047845, 0.11368384, 0.18426466, 0.12002076, -0.034070846, 0.042704806, -0.041553736, 0.04446022, -0.006331844, 0.16227855, 0.07832003, -0.07068554), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(-0.026658786, -0.0079359505, -0.04125044, -0.10622727, 0.06254047, -0.36537018, -0.10755624, 0.011665703, 0.025558028, -0.087151, -0.06987865, 0.00023839885, 0.03247968, -0.053188834, -0.004876301, -0.06005079), result);\n\t\t\t\n\t\t\ttex2[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x4, Depth-to-Space\n//!IN INPUT, tex2\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 outputPt = GetOutputPt();\n\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tfloat2 tpos = pos - 0.5f * inputPt;\n\tconst MF4 sr = tex2.GatherRed(sam, tpos);\n\tconst MF4 sg = tex2.GatherGreen(sam, tpos);\n\tconst MF4 sb = tex2.GatherBlue(sam, tpos);\n\tconst MF4 sa = tex2.GatherAlpha(sam, tpos);\n\n\tMF4 a = MF4(sr.w, sg.w, sb.w, sa.w);\n\tMF4 b = MF4(sr.x, sg.x, sb.x, sa.x);\n\tMF4 c = tex2.SampleLevel(sam, pos + MF2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = MF4(sr.z, sg.z, sb.z, sa.z);\n\tMF4 e = MF4(sr.y, sg.y, sb.y, sa.y);\n\tMF4 f = tex2.SampleLevel(sam, pos + MF2(0, inputPt.y), 0);\n\tMF4 g = tex2.SampleLevel(sam, pos + MF2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex2.SampleLevel(sam, pos + MF2(inputPt.x, 0), 0);\n\tMF4 i = tex2.SampleLevel(sam, pos + MF2(inputPt.x, inputPt.y), 0);\n\n\tMF4 result = { -3.1127936e-05, 3.3726166e-05, 4.8580805e-05, -9.541029e-06 };\n\tresult = MulAdd(max(a, 0), MF4x4(-0.00055252935, 0.0011350953, -0.0016148019, 0.0014946404, -0.30635214, -0.017596753, -0.0036547943, 0.016236471, 0.005174489, 0.0030302007, 0.00019672248, 0.0006430973, 0.0007490077, -0.0031795658, -6.158733e-05, 0.0006820584), result);\n\tresult = MulAdd(max(b, 0), MF4x4(0.15602079, 0.011071071, -0.0027609533, -0.0034318874, -0.0039016667, 0.016504101, -0.27816474, -0.008282344, 0.19063498, 0.012465078, 0.010091085, -0.004841106, -0.11758087, -0.012808949, 0.0067606894, 0.005216566), result);\n\tresult = MulAdd(max(c, 0), MF4x4(0.013258877, -0.014989483, 0.22402754, 0.013204027, 0.00016207264, -0.00042593342, -0.00333761, -0.0012207513, 0.0033727325, -0.007841196, 0.16044731, 0.00594871, -0.0028581345, 0.012616562, -0.15928285, -0.011812331), result);\n\tresult = MulAdd(max(d, 0), MF4x4(-0.0048872055, -0.0011780986, -0.0029523429, 0.00082424335, -0.0024385185, -0.26525813, 0.013532772, -0.0008381766, 0.0024996721, 0.0022899017, -0.0017697349, -0.0010618394, 0.0024938583, 0.005421073, 0.0028740794, -0.007808829), result);\n\tresult = MulAdd(max(e, 0), MF4x4(-0.08293415, 0.2659366, -0.010839574, 0.023423964, 0.01725351, -0.009252893, -0.011632222, -0.308242, 0.0001496815, 0.16104282, -0.0069378703, 0.00842848, 0.085917845, -0.18407243, -0.006601597, -0.027134055), result);\n\tresult = MulAdd(max(f, 0), MF4x4(-0.033873428, -0.011743531, -0.230377, 0.116242796, -0.0018527015, -0.00853698, 0.0059901997, -0.006155517, -0.009841329, 0.006163952, 0.014816026, 0.18667653, 0.016977048, -0.0017093032, 0.19695279, -0.061764043), result);\n\tresult = MulAdd(max(g, 0), MF4x4(-0.0003514533, -0.0069080726, 0.0052108583, -0.0016346197, -0.0016860099, 0.006002445, -0.0022835485, -0.0028219873, 0.0005367275, 0.0005437954, 0.00059865275, -0.00014915364, -0.0032214937, -0.00052043283, -0.0031621973, 0.0055843857), result);\n\tresult = MulAdd(max(h, 0), MF4x4(-0.006905302, -0.20389622, 0.01891904, -0.018114902, 0.00724176, 0.011335843, -0.0028616642, 0.016452003, -0.00013852821, -0.00039706306, 0.0011838446, 0.0028873065, 0.012857878, 0.16889338, -0.014114007, 0.009388666), result);\n\tresult = MulAdd(max(i, 0), MF4x4(0.0040798862, 0.002933288, -0.016012201, -0.14650294, -0.0017411204, 0.0017980475, 0.00056705566, -0.0003218331, -0.0014291195, -0.0062614805, 0.00082543516, -0.00397049, -0.004496662, 0.0008032309, 0.0049529593, 0.117166765), result);\n\t\n\tpos -= 0.5f * outputPt;\n\tOUTPUT[gxy] = MF4(result.x + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t++gxy.x;\n\tpos.x += outputPt.x;\n\tOUTPUT[gxy] = MF4(result.y + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\t\n\t++gxy.y;\n\tpos.y += outputPt.y;\n\tOUTPUT[gxy] = MF4(result.w + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t--gxy.x;\n\tpos.x -= outputPt.x;\n\tOUTPUT[gxy] = MF4(result.z + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_3D_Upscale_US.hlsl",
    "content": "// Anime4K_3DGraphics_Upscale_x2_US\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Upscale/Anime4K_3DGraphics_Upscale_x2_US.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_3D_Upscale_0\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { 0.0033260486, 0.0027453774, 0.002706769, -0.0022023292 };\n\t\t\tresult = MulAdd(src[i - 1][j - 1], MF3x4(0.020295616, 0.26657984, -0.28531083, 0.041052748, 0.11729335, 0.4042445, -0.5860672, 0.098661005, 0.07756054, 0.32493782, -0.38677853, 0.029859459), result);\n\t\t\tresult = MulAdd(src[i - 1][j], MF3x4(-0.28257942, 0.46859467, 0.07703674, -0.05280326, -0.46674755, 0.6592401, 0.28513643, -0.059969574, -0.37685588, 0.54568315, 0.1845521, -0.002367634), result);\n\t\t\tresult = MulAdd(src[i - 1][j + 1], MF3x4(-0.14898707, -0.088150576, -0.09723321, 0.48359355, -0.27636692, -0.09316871, -0.15453896, 0.68637407, -0.19012338, -0.13310172, -0.13367014, 0.61284137), result);\n\t\t\tresult = MulAdd(src[i][j - 1], MF3x4(0.36225644, 0.14732021, -0.17000826, -0.039856624, 0.50175637, 0.11733988, -0.080232985, -0.059622094, 0.3199943, 0.14199091, -0.08377198, -0.058804136), result);\n\t\t\tresult = MulAdd(src[i][j], MF3x4(0.42444956, -0.7508643, 0.77660984, -0.5920436, 0.6205736, -1.1258985, 0.91925675, -0.854362, 0.5576168, -0.84702957, 0.6147012, -0.7004013), result);\n\t\t\tresult = MulAdd(src[i][j + 1], MF3x4(0.047896724, -0.018435799, -0.07901341, 0.14234425, 0.12161554, -0.03132901, -0.049536135, 0.16390118, 0.054683182, -0.054823015, -0.019946543, 0.058345634), result);\n\t\t\tresult = MulAdd(src[i + 1][j - 1], MF3x4(-0.60845935, -0.0062592463, 0.17769416, 0.00643066, -0.8315386, 0.010405371, 0.227901, 0.054893702, -0.63039875, -0.02128892, 0.20843753, 0.054094747), result);\n\t\t\tresult = MulAdd(src[i + 1][j], MF3x4(0.24499738, -0.11924165, -0.16513842, -0.012650152, 0.21676576, -0.14322694, -0.08526706, -0.0122355, 0.26050088, -0.115822464, -0.11147918, -0.018665116), result);\n\t\t\tresult = MulAdd(src[i + 1][j + 1], MF3x4(-0.06054074, 0.094478205, -0.23038268, 0.008782032, -0.028404612, 0.22320247, -0.4821615, -0.0055871494, -0.047503285, 0.15098651, -0.26161456, 0.029869653), result);\n\n\t\t\ttex1[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x8\n//!IN tex1\n//!OUT tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex1.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex1.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex1.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex1.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.0016514715, -0.0038319482, -0.0073834592, -0.0059920377 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.26565167, 0.03297807, 0.08926044, 0.029984077, -0.20809028, 0.00351991, 0.15452495, 0.09963063, -0.13773972, 0.01029457, 0.045066427, 0.1247363, -0.12714206, 0.010659472, -0.06463583, -0.0154152885), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(0.0030874603, -0.04652791, -0.23016497, -0.46789864, 0.16454394, -0.12389561, -0.026154622, -0.008619661, -0.10648254, -0.10581639, 0.038306713, -0.038339432, 0.09716571, -0.037978917, -0.075691506, -0.0712344), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.22059305, 0.18160829, 0.027175324, -0.09482166, -0.07888123, 0.12431242, 0.02432025, -0.121108614, -0.0720631, -0.0138989305, -0.02100737, -0.027440425, -0.06610268, 0.115165174, 0.02048676, -0.0409675), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.043652806, 0.0134993605, 0.0030924282, -0.03314738, 0.27716368, 0.05542831, -0.28217152, -0.017624432, -0.11218036, 0.009025405, -0.13453043, -0.05897923, 0.32378325, -0.0070016393, -0.04415195, 0.10701437), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(-0.23568924, 0.028462708, 0.11686719, 0.025355088, -0.088295944, 0.033592343, 0.22703041, 0.45683298, -0.0860751, -0.17487867, -0.048110463, 0.0030137985, -0.031168368, 0.075628504, 0.24791549, 0.13066974), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.04647855, -0.42392284, -0.19600202, -0.07964123, 0.059082046, -0.16060755, -0.12607971, 0.011384242, 0.021775302, -0.10103477, -0.09646511, -0.0333935, 0.017039102, -0.14098461, -0.0981411, -0.0023695084), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(-0.016526148, -0.0006880693, 0.030872462, -0.018204063, -0.025757499, -0.01037187, 0.21834393, 0.09965417, -0.057800297, -0.029975737, -0.00684766, 0.05800057, 0.1683585, -0.057496388, 0.7087625, 0.2665085), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(0.059480842, -0.05298332, -0.06537449, -0.06439374, 0.09735456, -0.19591855, -0.42987427, -0.012228564, 0.03898561, -0.22284365, -0.24668825, -0.06651606, -0.087776355, 0.3200755, -0.050433923, -0.100411855), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(-0.053572096, 0.16021295, 0.071161, -0.06335539, 0.015909042, 0.20072727, 0.08304887, 0.05335472, -0.03467755, -0.02854195, 0.044690188, 0.0045897495, -0.02924389, 0.16038977, 0.06578487, 0.027916174), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(0.11840388, -0.011793132, -0.004042257, -0.116042845, 0.17388786, -0.031351876, -0.1152781, -0.13333467, 0.2354002, -0.045496088, -0.16311322, -0.06960798, 0.11317423, 0.005508318, 0.15634489, 0.061211936), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(0.009622364, 0.03682801, 0.20317583, 0.41673073, 0.00662247, 0.11070694, -0.020392824, 0.13875432, 0.036129113, 0.073727116, -0.114370294, 0.042431634, -0.0446233, 0.0734258, 0.09814352, 0.09335129), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.057668976, -0.21368256, -0.029979514, 0.039450984, 0.16685131, -0.15085255, -0.042412136, 0.15757313, 0.110782996, -0.07277766, -0.035268076, 0.06094599, 0.088834405, -0.07145625, 0.0009840949, 0.04932651), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(-0.00010679438, 0.0036139274, -0.001123274, -0.10001404, -0.035231482, -0.008196208, 0.24442215, 0.13503289, -0.082656465, -0.061868448, -0.34716147, -0.22398905, -0.00626325, 0.063109376, 0.10340223, 0.030913284), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(-0.11526892, -0.01739956, -0.1781953, -0.27035302, 0.13689406, -0.04320452, -0.19705579, -0.16808036, -0.20343314, -0.13549826, -0.08057608, -0.16109829, 0.16905797, 0.00077912246, -0.14143418, 2.5004636e-05), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.110721245, 0.33579257, 0.14410733, -0.06675498, 0.002022071, 0.18419205, 0.09936456, 0.07311257, 0.0064584822, -0.031634383, 0.095907465, 0.031282485, 0.0051860735, 0.25176755, 0.089756206, 0.052209254), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(-0.06346731, 0.009824449, -0.02733463, -0.06341941, 0.17385058, 0.0067438814, -0.15083039, -0.09102664, 0.065680414, -0.06668183, -0.18805085, -0.02785943, 0.06386912, 0.09340653, 0.0032584765, 0.060902752), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(-0.061221372, -0.0020573896, 0.063335806, 0.046898697, -0.030530764, 0.27301106, 0.23682626, 0.14863367, -0.034555666, 0.024279105, -0.176423, 0.018163674, -0.00015057978, 0.1575829, 0.25034854, 0.054726984), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(-0.03807849, -0.0440673, 0.038429137, -0.029738983, 0.035449427, -0.44138825, -0.16462126, -0.015045709, 0.010627751, -0.12178318, -0.07076098, -0.059846148, 0.0009871369, -0.07265447, -0.01998304, -0.018729536), result);\n\t\t\t\n\t\t\ttex2[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x4, Depth-to-Space\n//!IN INPUT, tex2\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 outputPt = GetOutputPt();\n\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tfloat2 tpos = pos - 0.5f * inputPt;\n\tconst MF4 sr = tex2.GatherRed(sam, tpos);\n\tconst MF4 sg = tex2.GatherGreen(sam, tpos);\n\tconst MF4 sb = tex2.GatherBlue(sam, tpos);\n\tconst MF4 sa = tex2.GatherAlpha(sam, tpos);\n\n\tMF4 a = MF4(sr.w, sg.w, sb.w, sa.w);\n\tMF4 b = MF4(sr.x, sg.x, sb.x, sa.x);\n\tMF4 c = tex2.SampleLevel(sam, pos + MF2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = MF4(sr.z, sg.z, sb.z, sa.z);\n\tMF4 e = MF4(sr.y, sg.y, sb.y, sa.y);\n\tMF4 f = tex2.SampleLevel(sam, pos + MF2(0, inputPt.y), 0);\n\tMF4 g = tex2.SampleLevel(sam, pos + MF2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex2.SampleLevel(sam, pos + MF2(inputPt.x, 0), 0);\n\tMF4 i = tex2.SampleLevel(sam, pos + MF2(inputPt.x, inputPt.y), 0);\n\n\tMF4 result = { -0.00016697648, -0.00015957489, 0.00017437353, -0.00019393339 };\n\tresult = MulAdd(max(a, 0), MF4x4(0.010651157, 0.0018537974, 0.0051580826, 0.0020901994, -0.41468114, -0.08517094, -0.04803197, 0.008413933, 0.014026587, 0.012820705, 0.01553548, 0.01283508, -0.040812977, -0.015933262, -0.01949977, -0.011502392), result);\n\tresult = MulAdd(max(b, 0), MF4x4(0.2278103, 0.06374709, 0.062103115, 0.02010158, -0.01932597, 0.01159983, -0.35690293, -0.062822886, 0.29807624, 0.036038283, 0.028565003, -0.025969796, -0.24225195, -0.06635989, -0.06890857, -0.010140013), result);\n\tresult = MulAdd(max(c, 0), MF4x4(-0.009164529, -0.0036277112, 0.19577485, 0.05511193, 0.025875263, 0.020616682, 0.02919653, 0.030669902, 0.00751339, -0.00551052, 0.2690018, 0.035395138, -0.013392302, -0.03666098, -0.23751089, -0.11222924), result);\n\tresult = MulAdd(max(d, 0), MF4x4(0.017815048, 0.011143683, -0.002918766, -0.0042153858, -0.01929562, -0.3405707, 0.039267153, 0.0041966257, 0.0026771557, 0.009982735, 0.00087975257, 0.003984122, 0.0062404936, -0.04230462, 0.001981855, -0.0145921325), result);\n\tresult = MulAdd(max(e, 0), MF4x4(-0.02615864, 0.2872578, 0.08103852, 0.11812216, -0.031988684, -0.08532163, -0.094653316, -0.42660478, 0.00077043264, 0.284553, -0.015517693, 0.036667597, 0.14234932, -0.20201443, -0.017204845, -0.111502305), result);\n\tresult = MulAdd(max(f, 0), MF4x4(-0.11529456, -0.09024149, -0.2545015, 0.08581955, -0.020051582, -0.031601675, -0.031320736, -0.051691536, -0.019313173, 0.028963564, 0.017521648, 0.3159018, 0.179573, 0.19400181, 0.382411, 0.076367974), result);\n\tresult = MulAdd(max(g, 0), MF4x4(-0.016741822, -0.001993879, -0.01517403, -0.010949569, 0.01859244, 0.042316843, 0.00025326485, -0.007079785, 0.001070783, 0.000911405, -0.0024269924, -0.0014501393, -0.01206317, 0.007300575, -0.0062582446, -0.0016001783), result);\n\tresult = MulAdd(max(h, 0), MF4x4(-0.06300321, -0.20786348, 0.019603852, 0.020122321, 0.022107193, 0.036766138, 0.013046632, 0.02677947, -0.0006842017, -0.044024136, 0.0109439045, 0.0040129004, 0.009831765, 0.15807834, -0.05166107, -0.014462446), result);\n\tresult = MulAdd(max(i, 0), MF4x4(-0.023205867, -0.049788095, -0.08251341, -0.26488927, 0.0029636251, 0.021618038, -0.0057556895, 0.018444102, 0.0064643323, -0.027886944, 0.010029941, -0.041902024, -0.021232832, -0.0072857663, 0.02056806, 0.18491453), result);\n\n\tpos -= 0.5f * outputPt;\n\tOUTPUT[gxy] = MF4(result.x + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t++gxy.x;\n\tpos.x += outputPt.x;\n\tOUTPUT[gxy] = MF4(result.y + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\t\n\t++gxy.y;\n\tpos.y += outputPt.y;\n\tOUTPUT[gxy] = MF4(result.w + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t--gxy.x;\n\tpos.x -= outputPt.x;\n\tOUTPUT[gxy] = MF4(result.z + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Denoise_Bilateral_Mean.hlsl",
    "content": "// Anime4K_Denoise_Bilateral_Mean\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Denoise/Anime4K_Denoise_Bilateral_Mean.glsl\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!LABEL Strength\n//!DEFAULT 0.1\n//!MIN 0.01\n//!MAX 5\n//!STEP 0.01\nfloat intensitySigma;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n#define INTENSITY_SIGMA intensitySigma //Intensity window size, higher is stronger denoise, must be a positive real number\n#define SPATIAL_SIGMA 1.0 //Spatial window size, higher is stronger denoise, must be a positive real number.\n\n#define INTENSITY_POWER_CURVE 1.0 //Intensity window power curve. Setting it to 0 will make the intensity window treat all intensities equally, while increasing it will make the window narrower in darker intensities and wider in brighter intensities.\n\n#define KERNELSIZE (max(uint(ceil(SPATIAL_SIGMA * 2.0)), 1) * 2 + 1) //Kernel size, must be an positive odd integer.\n#define KERNELHALFSIZE (uint(KERNELSIZE/2)) //Half of the kernel size without remainder. Must be equal to trunc(KERNELSIZE/2).\n#define KERNELLEN (KERNELSIZE * KERNELSIZE) //Total area of kernel. Must be equal to KERNELSIZE * KERNELSIZE.\n\n\nfloat3 gaussian_vec(float3 x, float3 rcpS, float3 m) {\n\tfloat3 scaled = (x - m) * rcpS;\n\treturn exp(-0.5 * scaled * scaled);\n}\n\nfloat gaussian(float x, float rcpS, float m) {\n\tfloat scaled = (x - m) * rcpS;\n\treturn exp(-0.5 * scaled * scaled);\n}\n\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tfloat3 src[KERNELSIZE + 1][KERNELSIZE + 1];\n\t[unroll]\n\tfor (i = 0; i <= KERNELSIZE - 1; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= KERNELSIZE - 1; j += 2) {\n\t\t\tfloat2 tpos = (gxy + int2(i, j) - KERNELHALFSIZE + 1) * inputPt;\n\t\t\tconst float4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst float4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst float4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = float3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = float3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = float3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = float3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\tfloat len[KERNELSIZE][KERNELSIZE];\n\t[unroll]\n\tfor (i = 0; i < KERNELSIZE; ++i) {\n\t\t[unroll]\n\t\tfor (j = 0; j < KERNELSIZE; ++j) {\n\t\t\tlen[i][j] = length(float2((int)i - KERNELHALFSIZE, (int)j - KERNELHALFSIZE));\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 1; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i, j);\n\n\t\t\tfloat3 sum = 0;\n\t\t\tfloat3 n = 0;\n\n\t\t\tfloat3 vc = src[KERNELHALFSIZE + i][KERNELHALFSIZE + j].rgb;\n\n\t\t\tfloat3 rcpIs = rcp(pow(vc + 0.0001, INTENSITY_POWER_CURVE) * INTENSITY_SIGMA);\n\t\t\tfloat rcpSs = rcp(SPATIAL_SIGMA);\n\n\t\t\t[unroll]\n\t\t\tfor (uint k = 0; k < KERNELSIZE; ++k) {\n\t\t\t\t[unroll]\n\t\t\t\tfor (uint m = 0; m < KERNELSIZE; ++m) {\n\t\t\t\t\tfloat3 v = src[k + i][m + j];\n\t\t\t\t\tfloat3 d = gaussian_vec(v, rcpIs, vc) * gaussian(len[k][m], rcpSs, 0);\n\t\t\t\t\tsum += d * v;\n\t\t\t\t\tn += d;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tOUTPUT[destPos] = float4(sum / n, 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Denoise_Bilateral_Median.hlsl",
    "content": "// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Denoise/Anime4K_Denoise_Bilateral_Median.glsl\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!LABEL Strength\n//!DEFAULT 0.1\n//!MIN 0.01\n//!MAX 5\n//!STEP 0.01\nfloat intensitySigma;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\n#define INTENSITY_SIGMA intensitySigma //Intensity window size, higher is stronger denoise, must be a positive real number\n#define SPATIAL_SIGMA 1.0 //Spatial window size, higher is stronger denoise, must be a positive real number.\n#define HISTOGRAM_REGULARIZATION 0.0 //Histogram regularization window size, higher values approximate a bilateral \"closest-to-mean\" filter.\n\n#define INTENSITY_POWER_CURVE 1.0 //Intensity window power curve. Setting it to 0 will make the intensity window treat all intensities equally, while increasing it will make the window narrower in darker intensities and wider in brighter intensities.\n\n#define KERNELSIZE uint(max(uint(SPATIAL_SIGMA), 1) * 2 + 1) //Kernel size, must be an positive odd integer.\n#define KERNELHALFSIZE (int(KERNELSIZE/2)) //Half of the kernel size without remainder. Must be equal to trunc(KERNELSIZE/2).\n#define KERNELLEN (KERNELSIZE * KERNELSIZE) //Total area of kernel. Must be equal to KERNELSIZE * KERNELSIZE.\n\n#define GETOFFSET(i) int2(int(i % KERNELSIZE) - KERNELHALFSIZE, int(i / KERNELSIZE) - KERNELHALFSIZE)\n\nfloat get_luma(float3 rgb) {\n\treturn dot(float3(0.299, 0.587, 0.114), rgb);\n}\n\nfloat gaussian(float x, float s, float m) {\n\tfloat scaled = (x - m) / s;\n\treturn exp(-0.5 * scaled * scaled);\n}\n\nfloat3 getMedian(float3 v[KERNELLEN], float w[KERNELLEN], float n) {\n\tfloat3 result = float3(0, 0, 0);\n\n\t[unroll]\n\tfor (uint i = 0; i < KERNELLEN; i++) {\n\t\tfloat w_above = 0.0;\n\t\tfloat w_below = 0.0;\n\t\t[unroll]\n\t\tfor (uint j = 0; j < KERNELLEN; j++) {\n\t\t\tif (v[j].x > v[i].x) {\n\t\t\t\tw_above += w[j];\n\t\t\t} else if (v[j].x < v[i].x) {\n\t\t\t\tw_below += w[j];\n\t\t\t}\n\t\t}\n\n\t\tif ((n - w_above) / n >= 0.5 && w_below / n <= 0.5) {\n\t\t\tresult = v[i];\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\tfloat3 histogram_v[KERNELLEN];\n\tfloat histogram_l[KERNELLEN];\n\tfloat histogram_w[KERNELLEN];\n\tfloat n = 0.0;\n\n\tfloat vc = get_luma(INPUT.SampleLevel(sam, pos, 0).rgb);\n\n\tfloat is = pow(vc + 0.0001, INTENSITY_POWER_CURVE) * INTENSITY_SIGMA;\n\tfloat ss = SPATIAL_SIGMA;\n\n\tuint i;\n\n\t[unroll]\n\tfor (i = 0; i < KERNELLEN; i++) {\n\t\tint2 ipos = GETOFFSET(i);\n\t\thistogram_v[i] = INPUT.SampleLevel(sam, pos + ipos * inputPt, 0).rgb;\n\t\thistogram_l[i] = get_luma(histogram_v[i]);\n\t\thistogram_w[i] = gaussian(histogram_l[i], is, vc) * gaussian(length(ipos), ss, 0.0);\n\t\tn += histogram_w[i];\n\t}\n\n\tif (HISTOGRAM_REGULARIZATION > 0.0) {\n\t\tfloat histogram_wn[KERNELLEN];\n\t\tn = 0.0;\n\n\t\t[unroll]\n\t\tfor (i = 0; i < KERNELLEN; i++) {\n\t\t\thistogram_wn[i] = 0.0;\n\t\t}\n\n\t\t[unroll]\n\t\tfor (i = 0; i < KERNELLEN; i++) {\n\t\t\thistogram_wn[i] += gaussian(0.0, HISTOGRAM_REGULARIZATION, 0.0) * histogram_w[i];\n\t\t\t[unroll]\n\t\t\tfor (uint j = (i + 1); j < KERNELLEN; j++) {\n\t\t\t\tfloat d = gaussian(histogram_l[j], HISTOGRAM_REGULARIZATION, histogram_l[i]);\n\t\t\t\thistogram_wn[j] += d * histogram_w[i];\n\t\t\t\thistogram_wn[i] += d * histogram_w[j];\n\t\t\t}\n\t\t\tn += histogram_wn[i];\n\t\t}\n\n\t\tOUTPUT[gxy] = float4(getMedian(histogram_v, histogram_wn, n), 1);\n\t\treturn;\n\t}\n\n\tOUTPUT[gxy] = float4(getMedian(histogram_v, histogram_w, n), 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Denoise_Bilateral_Mode.hlsl",
    "content": "// Anime4K_Denoise_Bilateral_Mode\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Denoise/Anime4K_Denoise_Bilateral_Mode.glsl\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!LABEL Strength\n//!DEFAULT 0.1\n//!MIN 0.01\n//!MAX 5\n//!STEP 0.01\nfloat intensitySigma;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n#define INTENSITY_SIGMA intensitySigma //Intensity window size, higher is stronger denoise, must be a positive real number\n#define SPATIAL_SIGMA 1.0 //Spatial window size, higher is stronger denoise, must be a positive real number.\n#define HISTOGRAM_REGULARIZATION 0.2 //Histogram regularization window size, higher values approximate a bilateral \"closest-to-mean\" filter.\n\n#define INTENSITY_POWER_CURVE 1.0 //Intensity window power curve. Setting it to 0 will make the intensity window treat all intensities equally, while increasing it will make the window narrower in darker intensities and wider in brighter intensities.\n\n#define KERNELSIZE uint(max(uint(SPATIAL_SIGMA), 1) * 2 + 1) //Kernel size, must be an positive odd integer.\n#define KERNELHALFSIZE (int(KERNELSIZE/2)) //Half of the kernel size without remainder. Must be equal to trunc(KERNELSIZE/2).\n#define KERNELLEN (KERNELSIZE * KERNELSIZE) //Total area of kernel. Must be equal to KERNELSIZE * KERNELSIZE.\n\n#define GETOFFSET(i) int2(int(i % KERNELSIZE) - KERNELHALFSIZE, int(i / KERNELSIZE) - KERNELHALFSIZE)\n\nfloat get_luma(float3 rgba) {\n\treturn dot(float3(0.299, 0.587, 0.114), rgba);\n}\n\nfloat gaussian(float x, float s, float m) {\n\tfloat scaled = (x - m) / s;\n\treturn exp(-0.5 * scaled * scaled);\n}\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j, k, m;\n\n\tfloat4 src[KERNELSIZE + 1][KERNELSIZE + 1];\n\t[unroll]\n\tfor (i = 0; i <= KERNELSIZE - 1; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= KERNELSIZE - 1; j += 2) {\n\t\t\tfloat2 tpos = (gxy + int2(i, j) - KERNELHALFSIZE + 1) * inputPt;\n\t\t\tconst float4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst float4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst float4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = float4(sr.w, sg.w, sb.w, get_luma(float3(sr.w, sg.w, sb.w)));\n\t\t\tsrc[i][j + 1] = float4(sr.x, sg.x, sb.x, get_luma(float3(sr.x, sg.x, sb.x)));\n\t\t\tsrc[i + 1][j] = float4(sr.z, sg.z, sb.z, get_luma(float3(sr.z, sg.z, sb.z)));\n\t\t\tsrc[i + 1][j + 1] = float4(sr.y, sg.y, sb.y, get_luma(float3(sr.y, sg.y, sb.y)));\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 1; ++j) {\n\t\t\tconst uint2 destPos = gxy + uint2(i, j);\n\n\t\t\tfloat3 histogram_v[KERNELLEN];\n\t\t\tfloat histogram_l[KERNELLEN];\n\t\t\tfloat histogram_w[KERNELLEN];\n\t\t\tfloat histogram_wn[KERNELLEN];\n\n\t\t\tfloat vc = src[KERNELHALFSIZE + i][KERNELHALFSIZE + j].a;\n\n\t\t\tfloat is = pow(vc + 0.0001, INTENSITY_POWER_CURVE) * INTENSITY_SIGMA;\n\t\t\tfloat ss = SPATIAL_SIGMA;\n\n\t\t\t[unroll]\n\t\t\tfor (k = 0; k < KERNELLEN; k++) {\n\t\t\t\tconst int2 ipos = GETOFFSET(k);\n\t\t\t\tconst uint2 idx = uint2(i, j) + ipos.yx + KERNELHALFSIZE;\n\t\t\t\thistogram_v[k] = src[idx.x][idx.y].rgb;\n\t\t\t\thistogram_l[k] = src[idx.x][idx.y].a;\n\t\t\t\thistogram_w[k] = gaussian(histogram_l[k], is, vc) * gaussian(length(ipos), ss, 0.0);\n\t\t\t\thistogram_wn[k] = 0.0;\n\t\t\t}\n\n\t\t\t[unroll]\n\t\t\tfor (k = 0; k < KERNELLEN; k++) {\n\t\t\t\thistogram_wn[k] += gaussian(0.0, HISTOGRAM_REGULARIZATION, 0.0) * histogram_w[k];\n\t\t\t\t[unroll]\n\t\t\t\tfor (uint m = (k + 1); m < KERNELLEN; m++) {\n\t\t\t\t\tfloat d = gaussian(histogram_l[m], HISTOGRAM_REGULARIZATION, histogram_l[k]);\n\t\t\t\t\thistogram_wn[m] += d * histogram_w[k];\n\t\t\t\t\thistogram_wn[k] += d * histogram_w[m];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfloat3 maxv = 0;\n\t\t\tfloat maxw = 0;\n\n\t\t\t[unroll]\n\t\t\tfor (k = 0; k < KERNELLEN; ++k) {\n\t\t\t\tif (histogram_wn[k] >= maxw) {\n\t\t\t\t\tmaxw = histogram_wn[k];\n\t\t\t\t\tmaxv = histogram_v[k];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tOUTPUT[destPos] = float4(maxv, 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Restore_L.hlsl",
    "content": "// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Restore/Anime4K_Restore_CNN_L.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Restore_2\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1, tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = { -0.44569078, -0.084358215, -0.014156722, -0.0353374 };\n\t\t\ttarget1 = MulAdd(src[i - 1][j - 1], MF3x4(-0.27899465, -0.14974926, 0.6271667, -0.04888494, 0.2164516, -0.47826648, 0.09537477, 0.16404815, -0.009546488, -0.24541017, -0.20505093, -0.11507772), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j], MF3x4(-0.22372562, 0.046120282, 0.44437107, 0.54215515, -0.10638798, -0.010795577, 0.19478157, 0.5756847, 0.24542068, 0.11135218, -0.27672207, 0.09624475), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j + 1], MF3x4(0.1703517, -0.17810228, -0.34460765, -0.40586865, 0.2102622, 0.08207581, 0.17641851, 0.23701222, -0.32159516, -0.017147528, 0.41743183, 0.19025058), target1);\n\t\t\ttarget1 = MulAdd(src[i][j - 1], MF3x4(0.4708481, -0.1587934, -0.15760423, -0.11388875, -0.36032093, -0.044305246, 0.19414884, 0.31109568, -0.09320259, -0.23072109, 0.0242641, 0.040976923), target1);\n\t\t\ttarget1 = MulAdd(src[i][j], MF3x4(0.00951417, 0.2746557, -0.49743456, 0.14564055, 0.15047263, 0.08832856, -0.24360974, -0.3517844, -0.12219134, 0.12957081, 0.2876983, 0.13303527), target1);\n\t\t\ttarget1 = MulAdd(src[i][j + 1], MF3x4(-0.12760738, 0.16703783, 0.04391735, 0.34657615, -0.26698044, -0.096000046, -0.46030682, -0.38363042, 0.3510441, 0.2620507, -0.30533043, -0.32785), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j - 1], MF3x4(0.63138646, -0.12703805, 0.38107973, -0.09134196, -0.04012397, -0.1390924, 0.07578805, -0.09274019, -0.045394078, 0.18203364, 0.16900069, 0.13399005), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j], MF3x4(-0.13648264, -0.13971807, -0.32322997, -0.08377875, 0.40967095, 0.19853555, -0.26386982, -0.50860924, -0.00555831, 0.06922444, 0.034828495, -0.08413197), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j + 1], MF3x4(0.21196735, 0.24934316, -0.27111465, -0.19941513, -0.30186844, 0.44828892, 0.35906994, -0.35723612, -0.074009515, -0.34400147, -0.22145566, -0.15622428), target1);\n\n\t\t\tMF4 target2 = { -0.009787335, 0.051148742, -0.007458707, -0.016416457 };\n\t\t\ttarget2 = MulAdd(src[i - 1][j - 1], MF3x4(0.1953752, -0.09707663, 0.43315637, 0.3862221, 0.2346731, 0.085327715, 0.36244828, 0.06630519, -0.05342483, 0.112148136, 0.07938104, 0.14795923), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j], MF3x4(0.25197014, 0.032906674, 0.3392793, 0.18099307, -0.36539522, 0.10986396, 0.5440999, 0.41803896, -0.4117931, 0.46616048, 0.0827279, 0.040264074), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j + 1], MF3x4(-0.060543116, 0.34531194, -0.3202978, 0.32803985, -0.08720925, 0.63656414, -0.052656054, -0.076137036, 0.15297869, -0.11485237, -0.21027736, -0.24086118), target2);\n\t\t\ttarget2 = MulAdd(src[i][j - 1], MF3x4(-0.2044052, 0.111065395, -0.36082193, -0.39179638, 0.19812255, -0.3797384, 0.03176089, -0.35085422, 0.31697252, -0.31267545, -0.068170965, -0.06266394), target2);\n\t\t\ttarget2 = MulAdd(src[i][j], MF3x4(0.0055682547, 0.24352197, 0.08972456, -0.4340704, -0.25253078, -0.4218859, 0.08408476, -0.5052765, 0.005511427, -0.36491954, 0.3825727, 0.01774532), target2);\n\t\t\ttarget2 = MulAdd(src[i][j + 1], MF3x4(0.13323675, -0.6641518, -0.38277033, 0.67553586, -0.5879293, -0.1286407, 0.1355451, 0.19463064, -0.09206729, 0.41892347, 0.16736335, -0.017109495), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j - 1], MF3x4(0.0627963, 0.29361042, 0.23339616, -0.42217752, 0.21872504, -0.21531922, -0.5016595, 0.20158494, 0.2814043, -0.1474019, 0.08778552, 0.28085083), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j], MF3x4(-0.009900911, -0.42754972, 0.02737237, -0.17740859, 0.541632, -0.28397697, -0.36375052, -0.172693, 0.1506882, 0.15196925, -0.30358136, -0.29542333), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j + 1], MF3x4(-0.3690586, 0.19382606, -0.040331036, -0.14121497, 0.121049926, 0.54470515, -0.23628974, 0.20663929, -0.34591553, -0.14778244, -0.23809184, 0.12616424), target2);\n\n\t\t\ttex1[destPos] = target1;\n\t\t\ttex2[destPos] = target2;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x16\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.02852779, 0.027645616, 0.06510905, 0.029781172 };\n\ttarget1 = MulAdd(a1, MF4x4(0.028458824, 0.10831271, 0.017246738, 0.42066097, 0.035127334, 0.14161696, 0.3893337, 0.18358134, -0.26446894, -0.053199783, 0.053528484, -0.3486933, -0.10270838, -0.3593573, 0.049874853, 0.08600247), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.15829772, -0.31038332, 0.0423391, -0.11978196, -0.29878524, 0.10245719, 0.004307728, 0.052934717, -0.049366333, -0.03277819, -0.062031534, -0.004734159, 0.029009456, -0.18138678, 0.17342477, -0.1632741), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.14941882, -0.3337916, -0.07740701, -0.8221198, -0.014216013, -0.34028724, 0.06367363, -0.19704603, -0.20317195, 0.17806017, -0.14011545, 0.05067841, 0.08515265, 0.092163175, -0.036603887, -0.2528259), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.044333473, 0.10871938, -0.12288588, 0.0077913217, 0.013970764, -0.21189599, -0.0757029, 0.055366833, 0.04531751, -0.20269018, 0.038650505, -0.09677452, 0.0565207, 0.073703125, -0.10746413, 0.22798601), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.33476707, 0.22631067, 0.10190012, 0.25268495, -0.14572862, -0.21331434, 0.024614803, -0.26254398, 0.18070522, 0.34974626, 0.028480766, -0.07855834, 0.16165797, 0.28470036, 0.23497322, -0.15804033), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.09853942, -0.21105993, 0.27787793, 0.24688315, -0.16078049, 0.08541815, 0.16101131, -0.0005086922, -0.13042259, 0.0253011, -0.05298311, 0.16506846, -0.099300735, 0.07577514, 0.041623414, -0.18045023), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.015007392, 0.0720429, -0.018456718, 0.012792885, 0.2049891, -0.061911974, -0.10679284, 0.2530616, -0.1651912, 0.1125125, 0.55918777, 0.1414716, 0.025189033, 0.061680123, -0.13096866, -0.035809774), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.037606955, 0.05987735, -0.09903669, 0.09681222, 0.31857902, -0.058445334, 0.10280441, -0.0018247474, 0.051491242, 0.12321206, 0.14069863, -0.013259678, -0.198442, 0.093920216, -0.015952505, -0.3040559), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.044491854, 0.079992026, -0.07424999, 0.064774506, 0.36708844, -0.14958903, -0.060033463, -0.5950615, -0.101501055, -0.05275797, -0.0099711865, 0.075409986, -0.19508216, -0.088995665, -0.025926083, 0.023040347), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.00168658, 0.1879708, -0.08964568, 0.124567054, -0.027147152, 0.0013266837, 0.043110568, -0.16238526, 0.18404783, -0.088930264, -0.0841814, -0.06812457, -0.022954177, 0.15315148, 0.00096489635, 0.21262483), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.03728663, 0.16259944, 0.2534931, -0.10620075, -0.032217886, -0.043085426, -0.37875995, 0.16151664, -0.15136409, -0.21990341, 0.0043716, 0.1293011, 0.20516208, 0.32518774, -0.15583529, 0.20054214), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.05088376, -0.21300486, 0.30702966, 0.09044539, 0.020740725, 0.028916309, 0.14391874, 0.15526149, 0.011289051, -0.24014536, -0.2176207, 0.09995701, 0.06747376, -0.3315815, 0.07900332, -0.26542482), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.15973654, 0.2114867, -0.19423203, -0.1529657, -0.24198112, -0.10985252, 0.056409992, 0.111373484, 0.05717073, 0.019566689, -0.12794583, 0.006978016, -0.2708247, 0.2845983, -0.048893075, -0.09198705), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.07690064, 0.038431194, 0.1205243, 0.1320201, -0.122893825, -0.022761922, -0.10097431, 0.022808496, -0.0431315, 0.19884229, -0.053464055, -0.08487898, 0.049651224, 0.3001686, -0.05545239, 0.48026356), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.04079296, 0.052179057, 0.08785134, 0.17674746, 0.06027275, -0.083381295, -0.29543424, -0.10703248, 0.14123397, 0.12711276, 0.08260646, 0.23608543, 0.10914477, -0.22596069, -0.15743312, 0.103631504), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.038997833, -0.14136268, -0.31973416, 0.11666723, -0.20137171, 0.0115205245, 0.22825807, -0.14853193, 0.25628343, 0.06598252, -0.003479285, -0.12315031, -0.07446986, 0.29977, 0.08878428, 0.15130284), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.04147214, -0.050535224, -0.21205503, -0.07425368, -0.06448227, -0.086743675, 0.029389668, -0.07494379, -0.17228132, -0.18035689, -0.09757749, 0.13929781, 0.21867155, 0.02585289, 0.13752261, 0.17800835), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.20552272, -0.03113836, -0.201244, -0.07602455, 0.08278268, -0.17029381, -0.0008433311, -0.11591232, 0.087584734, -0.026447749, 0.09185437, 0.15650395, 0.29423076, 0.016036067, -0.17132477, 0.09271113), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.09120441, 0.1345777, 0.0468555, 0.2635145, 0.04248785, -0.14849417, -0.013588658, -0.12794739, -0.0109574385, -0.15350367, 0.1872175, -0.17311442, 0.2740676, 0.1931403, 0.049231507, -0.17728893), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.0265621, 0.10291274, -0.0884961, -0.086093664, 0.25218308, -0.027579704, 0.044006765, -0.05947863, -0.17352693, -0.16788955, -0.1829588, -0.19120377, -0.19486824, 0.035516337, -0.04287895, -0.059360266), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.0077623413, 0.061803013, -0.14371866, -0.2929254, -0.014011599, 0.23037176, 0.09881457, -0.018942501, 0.14976685, -0.0017081804, -0.0420665, 0.075949386, -0.015102705, -0.07807527, 0.053166322, 0.21431307), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.15482867, -0.13303289, 0.05441111, 0.20482185, -0.08669985, -0.26125848, 0.085498355, 0.06895137, -0.11653363, -0.022335036, -0.019448604, -0.19071092, 0.002487127, -0.053429328, 0.07700748, -0.15176988), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.058373976, -0.18893883, 0.063239604, -0.16802256, 0.1348292, -0.037208326, 0.121938735, 0.123416096, -0.14086236, -0.08550504, 0.18930112, -0.07056712, -0.2190568, -0.01693728, -0.110385895, -0.10306489), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.21300407, -0.049379632, 0.13865358, 0.0037872058, 0.008286501, -0.12187443, -0.11094277, 0.021951213, -0.10365199, 0.15844372, 0.068476856, -0.09683496, -0.039589003, -0.027428184, 0.022865763, 0.067510754), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.05690448, -0.09136643, -0.17356895, -0.18716863, 0.07831065, 0.015976364, -0.06423979, -0.01891357, 0.16295952, 0.17686251, -0.26599383, -0.11806091, -0.0968358, 0.024937721, -0.10509048, -0.097365916), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.06446155, 0.05177888, -0.019579697, 0.046922565, 0.20326103, -0.04118929, 0.07845964, 0.15494241, -0.033653136, 0.13276093, -0.061998203, -0.049391422, 0.0154429395, -0.12517625, -0.022282483, 0.14295246), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.102786146, 0.028481564, 0.12239765, 0.010855834, 0.17208168, -0.24589455, -0.045410756, 0.17422688, -0.051487174, 0.14276022, 0.26189017, -0.0027747392, 0.15695319, 0.13917996, 0.07303566, -0.055219136), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.014127897, -0.13218386, -0.4342469, -0.10977742, 0.12229517, -0.32898104, -0.21103851, 0.06275854, -0.22651868, 0.111792624, 0.020457482, -0.048701756, 0.124154285, 0.016944582, -0.14404331, 0.054385293), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.09574338, 0.04884873, -0.12329247, 0.3191857, -0.28155354, 0.03411368, -0.017508674, -0.28257895, 0.06535372, 0.40051946, -0.24508828, 0.05891001, 0.08769791, -0.011710461, 0.10430247, 0.096506774), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.036757194, 0.1374388, -0.14553823, 0.11012423, 0.19377777, -0.053538468, -0.32605696, 0.07757925, 0.054016564, 0.2677718, 0.26038665, 0.029049544, 0.015482294, -0.08899067, 0.26156536, 0.26035222), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.19651565, 0.30669728, -0.03192298, 0.090777226, 0.34684682, -0.040679373, -0.0006501724, -0.069249466, 0.07256215, -0.018623354, -0.021843085, 0.026858928, 0.24001615, -0.007573629, -0.25308976, -0.08101683), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.19491735, 0.29386947, -0.16541481, -0.12270087, 0.1478019, 0.11557711, 0.09745131, -0.037188005, 0.051415507, -0.009313462, 0.17577961, 0.30678266, 0.052763764, 0.06731275, 0.038889345, 0.01219997), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.21972072, -0.16669928, -0.0471254, 0.07962133, -0.24501611, 0.10681031, -0.10724696, 0.046246808, -0.13467999, 0.019233517, -0.2220906, 0.11756837, 0.07995422, -0.091647364, 0.0524831, 0.2427797), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.018560572, 0.28909272, 0.27052113, -0.16862495, -0.04259962, -0.2526796, 0.24546415, 0.13772464, 0.019554865, 0.052288387, 0.22942105, 0.14541095, 0.29822263, -0.10352501, -0.17112546, -0.22842947), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.052647978, 0.17638408, 0.2265538, -0.028214354, -0.13620298, 0.14337336, 0.057785455, 0.14105307, 0.03873432, 0.13013794, 0.24192083, -0.104368195, -0.18878175, 0.11648163, 0.0049888026, -0.17706485), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.003658791, 0.057943232, -0.013143919, 0.08626453, -0.26248586, 0.29328227, 0.18253878, 0.05693778, -0.082900435, -0.034102313, -0.05913703, -0.11045182, -0.06499875, 0.15446658, -0.08087537, 0.18904833), target1);\n\n\tMF4 target2 = { 0.019262059, 0.043436494, -0.124304086, -0.014933208 };\n\ttarget2 = MulAdd(a1, MF4x4(0.06138475, 0.120526604, 0.22381006, 0.12570442, 0.1439015, -0.5261169, 0.25294203, 0.04825834, 0.06993285, 0.1210301, -0.10087704, 0.038996983, 0.095201865, 0.50708395, 0.17403544, -0.17137507), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.09580414, -0.17387998, 0.10757996, 0.15188572, -0.02090535, 0.2655171, -0.38653868, -0.014376933, -0.03217946, -0.12866813, -0.049665075, -0.048535764, -0.115907624, 0.032473654, 0.36145476, 0.3830508), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.19303346, -0.30462784, -0.21706793, -0.0123182135, -0.063043006, -0.10658377, 0.08729471, -0.27184415, 0.037174225, 0.13507952, -0.06391928, -0.035610817, 0.17105488, 0.07546837, 0.36270198, 0.13315013), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.1559421, 0.03859168, 0.058586795, 0.1457787, -0.008261901, 0.17584307, 0.07892688, 0.16024348, 0.20574443, -0.09199424, -0.2572033, -0.06435325, -0.045140598, 0.026080446, 0.30986732, -0.02853244), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.06647865, -0.13637248, -0.2077229, -0.18015774, 0.22215, 0.0282581, -0.124256276, -0.18235172, -0.10444975, 0.039713558, 0.031975772, -0.14737205, 0.1533982, 0.115156986, 0.14176169, -0.12018837), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.24000446, 0.08672003, -0.209317, 0.1853504, 0.19062491, -0.04505737, -0.097432695, -0.12218054, -0.20497306, 0.0068228757, -0.07930878, -0.045916412, -0.09002585, -0.019980771, -0.13450326, 0.08838858), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.005804602, 0.05149589, 0.18930501, -0.07475797, -0.3263357, -0.048428953, -0.0062948675, -0.12957661, 0.034840938, -0.12834811, -0.19660017, 0.13469964, -0.049774483, -0.07062978, 0.18116258, -0.2945365), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.021823233, 0.17687339, 0.035116684, -0.14888434, 0.101564035, -0.058118407, 0.035971403, 0.304605, -0.08054271, 0.07140431, -0.24807848, -0.014870848, 0.005698307, 0.0925754, -0.16337888, -0.072692335), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.15357393, 0.05702486, 0.1838928, -0.052683312, 0.26516896, 0.08939279, 0.040435348, 0.035939544, 0.21697883, -0.011976994, -0.10517768, 0.1004424, -0.073649734, -0.063365534, 0.07981437, -0.13724971), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.06887319, -0.031427335, -0.05686962, 0.031254467, -0.0530729, -0.27738956, -0.22601964, -0.16733547, -0.15481988, -0.22141118, -0.19417213, 0.052291542, 0.0665599, 0.13679637, -0.09932399, -0.021917146), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.0043880343, -0.03320605, -0.09556491, 0.064986005, -0.05736109, -0.015415265, -0.12861155, 0.07442758, 0.09653438, -0.30665413, 0.12456121, -0.015494559, -0.04347404, -0.26863584, -0.12057121, -0.12873033), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.43038133, 0.117590204, -0.012805269, 0.06656798, -0.08742217, -0.077595286, 0.01795713, -0.010100221, -0.17349729, -0.02995379, 0.01733494, 0.012438303, -0.062275372, 0.18847479, -0.014758355, -0.13591917), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.20219825, 0.33157164, -0.036087956, 0.078742586, 0.10264473, 0.13553555, 0.057454523, 0.09034125, 0.04169048, 0.031988595, -0.20171835, -0.018051006, 0.09925883, -0.15372548, -0.14060175, -0.012530946), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.20762882, -0.23219623, 0.044476848, -0.080212615, 0.027042268, 0.068265386, -0.053666174, 0.051648133, 0.012678151, -0.09496996, -0.073195405, 0.23230731, 0.026435647, 0.040384647, -0.15589063, -0.17085052), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.06897319, -0.06360793, -0.12517554, -0.106191345, -0.22830063, -0.12295911, 0.20943281, 0.11263121, -0.05995797, -0.04077969, 0.029862454, 0.12051529, -0.008890125, 0.005834341, -0.038162317, 0.05707114), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.091504954, -0.054357428, 0.18441072, 0.16866787, 0.14714013, 0.14976494, 0.119183995, 0.11771104, -0.17375562, 0.024148121, 0.08745399, 0.175893, 0.12345911, 0.120711684, -0.23350039, -0.035989728), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.30777606, 0.028484846, 0.19993277, -0.12934783, 0.049725976, 0.02831735, 0.09492996, 0.28220424, 0.26913685, 0.005740985, 0.025957806, 0.047272105, 0.014296343, 0.15206927, 0.035486884, 0.09940966), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.11630714, -0.034275923, 0.26804927, 0.1088897, -0.21128473, -0.043662123, 0.24287297, 0.1738188, 0.04961249, -0.03669543, -0.11308307, 0.007536927, -0.0021338738, -0.095983095, 0.12524886, 0.091356605), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.21231711, 0.19442785, 0.047695257, -0.058896706, -0.268304, -0.377306, 0.21314003, -0.09257493, -0.12023363, 0.20652951, -0.027571363, 0.36026677, -0.11473893, 0.22179964, -0.21924159, 0.14666505), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.04660883, -0.22199874, -0.2171105, 0.32090327, -0.11054424, -0.2047386, 0.18756013, 0.08749142, -0.16950387, 0.2577728, 0.048406947, 0.1380687, 0.1014651, -0.09075356, -0.21746674, -0.2651618), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.1928378, 0.11190454, 0.32514498, 0.32336533, 0.100953236, -0.008598421, 0.02124068, 0.0043789423, -0.046625864, -0.051161833, 0.13504188, -0.049233675, -0.10984389, -0.040151004, -0.08592605, 0.13862692), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.057035644, -0.086490445, 0.17654544, -0.096670695, 0.13528337, -0.10338058, -0.08174943, -0.11349738, 0.088931166, 0.19410637, 0.19873992, 0.01418258, 0.066797465, 0.09427754, -0.17926928, -0.12299086), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.010706926, 0.040176257, -0.12350328, -0.11089934, 0.08166401, 0.103450865, -0.062155697, -0.10264778, 0.09370084, -0.022440543, 0.036917962, -0.20901524, -0.13244434, -0.18850644, -0.069766395, -0.042853933), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.0064649805, 0.09057663, 0.042877126, -0.22078879, -0.21635285, -0.0064749196, 0.04875745, -1.3261495e-05, 0.26282236, -0.057637256, -0.037890673, 0.0102023715, 0.0797657, 0.050011456, 0.07423098, -0.055722862), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.21198633, -0.16919948, -0.12337323, -0.06970269, 0.12338858, -0.037561033, -0.013671757, 0.12396114, -0.046889607, -0.005447934, -0.043364853, -0.2882593, -0.069868185, -0.014526121, -0.14131337, 0.12157274), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.07510719, 0.024486735, 0.056790795, 0.12515159, -0.034031168, 0.025101706, -0.05993126, -0.053233545, -0.014431461, -0.12288865, 0.11686025, -0.22278062, -0.07422713, 0.0011266146, -0.06630191, 0.077075236), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.15784621, -0.0009692987, 0.057809148, -0.17506301, -0.0764334, 0.036327295, -0.107915476, 0.41731307, 0.005342607, -0.17614163, 0.017190281, -0.17021762, 0.09241874, -0.02230073, 0.015017511, 0.1081785), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.04213655, 0.07620985, -0.24124615, -0.0389524, -0.0071511404, 0.026105708, 0.35026863, 0.0391313, 0.17119752, -0.1083619, -0.011338781, -0.13909689, 0.019918554, -0.21432641, 0.045009304, -0.2289899), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.003247703, 0.13921799, 0.23126572, -0.11244338, -0.16778667, 0.05676625, 0.17198953, 0.2891844, -0.06569662, 0.18568343, -0.13698709, 0.014525318, 0.09470385, 0.20842068, 0.22716486, -0.044944298), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.036239535, 0.21613471, 0.0571368, 0.0133618545, -0.15562424, -0.030107146, -0.0881642, -0.3056589, 0.17654738, -0.16532254, -0.19526796, -0.09598035, 0.29869553, -0.19921502, -0.10570262, 0.12562469), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.139326, -0.18395935, -0.14525263, -0.1019923, 0.019128725, 0.06724899, 0.18320693, -0.15844813, -0.063348524, 0.034003522, 0.1160608, 0.16281077, -0.20621236, 0.20389429, 0.008165468, -0.3147023), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.0031874597, -0.17282559, -0.19517206, -0.057723213, 0.014905972, -0.115991496, -0.17772576, 0.10005784, -0.34928575, -0.41152355, 0.15671544, 0.16953272, -0.06541263, 0.09083862, 0.12386179, -0.17146301), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.024222312, 0.06139789, 0.13585247, 0.048212904, -0.038439997, 0.04822463, -0.31542218, 0.12828648, -0.1334096, -0.10939595, -0.20957507, 0.14276013, 0.09314227, -0.018837357, -0.09913242, -0.0690483), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.059516154, 0.03142432, -0.08262814, 0.12844399, 0.35043675, -0.17421962, 0.034954365, -0.0052628545, 0.10024693, -0.044191923, 0.18297553, -0.045441866, -0.22365399, -0.011058562, 0.1576469, -0.22479026), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.11010148, -0.109644935, -0.06213465, 0.06469803, -0.12474922, 0.20629437, -0.03891448, -0.032074396, -0.21814698, -0.2983182, 0.16088112, 0.02542415, -0.019019049, -0.11332389, 0.04115874, -0.15403947), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.07334427, 0.065546006, -0.059299644, 0.1712592, 0.10194824, -0.0076101148, -0.26384652, -0.012047153, -0.069830835, 0.2215555, 0.41080138, 0.051534526, 0.15190491, 0.12348823, -0.16904834, -0.20517784), target2);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x16\n//!IN tex3, tex4\n//!OUT tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.15367588, -0.07928099, 0.063567765, 0.108769014 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.20542079, 0.26111016, 0.0036034626, -0.16608916, 0.03036114, 0.04244865, -0.20747331, 0.06865131, -0.13495351, 0.14393657, 0.050192088, 0.13718198, -0.09928467, 0.0038359873, -0.026470508, 0.012319453), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.019964145, 0.038375776, 0.003130048, -0.07945381, 0.06856654, -0.08331041, -0.049974114, -0.011174098, 0.030265702, -0.12478692, -0.009842687, 0.028310193, -0.29398966, -0.14264, -0.08436449, 0.18336426), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.07453813, 0.018200234, -0.1406476, 0.027974837, -0.19164173, -0.15623717, -0.057000756, 0.029960351, 0.27373666, -0.08550347, -0.05088059, -0.10246706, 0.033324502, -0.086211175, -0.010092321, -0.11165423), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.17666292, 0.26951888, 0.24166632, -0.118283056, -0.1336137, 0.13550404, -0.19008428, 0.0041048722, 0.09373522, -0.032812368, -0.018434448, -0.008766052, 0.10959183, 0.0164411, -0.17436402, 0.11861692), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.059816767, 0.0632236, -0.18595679, -0.10951594, 0.11052112, -0.0630564, 0.32736167, 0.016436215, 0.036759567, -0.10445141, -0.16695334, -0.09536692, 0.34936142, -0.091659166, 0.25245044, 0.064123355), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.23698406, -0.030446773, 0.20418753, 0.030977655, 0.10176531, -0.091048814, 0.06913646, 0.070524976, 0.20899844, -0.026074586, 0.031215316, -0.14815283, -0.22031465, 0.09148875, -0.058892634, -0.042353395), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.022295577, 0.23975989, -0.03795945, -0.13689965, -0.05808369, -0.005154714, 0.02775734, -0.06821517, 0.14538866, -0.13725305, 0.079675056, 0.015865099, -0.1457713, -0.043883465, -0.11575635, 0.092833005), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.008460874, 0.09447306, 0.14322506, -0.0063166656, 0.04562443, 0.12490515, 0.19263941, 0.07084753, 0.16193573, 0.03871189, 0.0042382013, -0.026311405, -0.042831287, 0.047627136, -0.18002886, 0.03910702), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.08485893, 0.099010445, 0.1808653, 0.098906465, -0.2406554, 0.11303921, 0.03609519, 0.102015704, 0.018253349, 0.018407846, 0.04515686, -0.1044267, 0.12692702, -0.22019249, 0.17978671, -0.11714096), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.37482956, 0.037982, -0.2527836, -0.07246249, -0.3257375, 0.026353687, -0.42709586, 0.15230247, 0.19455267, -0.20558092, 0.040543195, 0.30100232, 0.1208413, -0.022922885, -0.0527519, -0.2754452), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.39697862, 0.59894156, -0.14519346, -0.21375597, -0.042094186, -0.11699173, -0.3065778, 0.045603614, -0.2315796, 0.1926384, 0.19640557, 0.023360144, 0.11569712, 0.080500975, -0.24562629, -0.11990825), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.030446287, -0.2191283, -0.020313436, 0.12092218, -0.04726904, -0.06145154, -0.10886858, -0.016195009, 0.074864194, 0.048508577, -0.024673669, 0.10286324, 0.23434684, -0.1291551, -0.04299077, -0.12459363), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.064445384, 0.16708861, 0.10306973, -0.13419592, -0.15216815, 0.12578042, -0.575184, -0.46423253, 0.42238462, -0.4330836, -0.26651257, 0.57413465, -0.10399166, 0.1914047, 0.15641387, 0.07064538), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.04809328, -0.12349369, 0.1853755, -0.013703159, -0.12840022, 0.022170544, -0.26412117, -0.30681273, -0.31553897, -0.07833276, -0.17104533, 0.03156802, 0.029389234, -0.017229239, -0.052230056, -0.04573632), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.1380467, 0.31759852, 0.06532168, 0.19637011, 0.24012493, -0.04863545, -0.21709125, -0.21216264, 0.16879074, 0.10763089, 0.22363038, -0.14004646, 0.19021708, -0.099481724, -0.0073404606, 0.04956918), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.068974994, 0.5005385, -0.12780246, 0.05813948, 0.035919234, 0.039779782, 0.0028248294, -0.21344285, 0.17026006, -0.17971572, -0.20932221, -0.0862113, -0.0074473396, 0.119821966, 0.28552157, -0.027787263), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.20083936, -0.08729008, -0.01474545, 0.061849594, 0.09285405, 0.074680895, -0.11493401, -0.35524356, 0.098670855, -0.31036818, 0.01269914, -0.06409305, -0.13034628, 0.07905559, 0.0018419055, -0.047743056), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.0008763842, 0.16266613, -0.13819253, 0.04136551, 0.11757835, -0.01075886, 0.13635348, 0.14200751, -0.036117654, -0.016920915, -0.003860492, -0.14361666, 0.18442062, -0.0119510535, 0.1574026, 0.11443297), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.26120907, 0.0040505654, -0.01111041, -0.028482055, 0.094762795, -0.27338502, 0.18852817, -0.15605745, -0.012533703, 0.17356302, -0.2594928, -0.04016552, 0.060918808, -0.10248847, 0.12710676, 0.1503744), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.24577981, -0.047384363, -0.13740875, 0.058981817, 0.09629815, -0.042157363, 0.17206886, 0.06895825, -0.13252918, 0.0941419, -0.048901185, 0.052710008, -0.104840726, 0.11820465, 0.17454259, 0.05037063), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.2239817, 0.4553206, -0.017824922, -0.050273463, -0.21029685, -0.032555267, -0.08916583, 0.10736202, 0.18478145, -0.09538145, 0.052327603, 0.12728482, -0.11439347, 0.17596558, 0.054506473, -0.017638389), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.072854675, 0.015542916, -0.1950096, 0.06664522, 0.1548192, -0.22573462, -0.20828351, 0.16661869, 0.033900462, 0.23870395, 0.11434291, 0.21813981, 0.12673119, 0.08014363, 0.022457503, 0.20910633), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.2652937, 0.17511544, -0.10850216, 0.081340194, -0.21500582, -0.036195952, -0.04102979, -0.15212043, -0.29559842, 0.25977176, 0.24641588, 0.13869548, -0.41371983, -0.14120851, 0.109116435, 0.22358306), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.108154014, 0.35006878, -0.055340957, -0.23728919, -0.24589789, -0.06516491, -0.03474703, -0.047869515, -0.0045436365, -0.17755373, -0.039802775, 0.21740748, -0.033278447, -0.10501602, -0.089266, -0.04061338), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.028205335, 0.003054092, 0.14546792, -0.10006339, -0.052365907, -0.13063054, -0.08356806, 0.20927623, 0.05030947, 0.21224388, 0.45320153, 0.0051093665, 0.0021801728, -0.12858267, -0.10686808, 0.21674173), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.10200768, 0.13099737, 0.13514566, -0.17343043, -0.22834082, 0.055208363, -0.20808199, -0.0015957861, -0.13871242, -0.06423964, 0.3320781, 0.051521134, -0.11108624, -0.17557982, -0.12519105, 0.067071475), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.20798117, -0.046690967, 0.17071529, -0.29893485, -0.06927812, 0.072701424, -0.30537283, -0.16406195, 0.10575524, -0.063635424, -0.044293836, 0.08667325, -0.16368344, 0.2196707, -0.29370767, 0.16401167), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.04009042, -0.034136664, 0.15880232, -0.058544576, -0.09724303, 0.13140567, -0.15769257, 0.05637733, -0.061678827, -0.19032978, 0.11843628, -0.25161943, -0.12645799, -0.27027693, -0.19899485, 0.2231074), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.07176237, -0.12067612, -0.070081174, 0.10180745, -0.1705716, -0.039632697, -0.22599341, -0.12012279, 0.24187793, 0.015815722, -0.03722175, 0.098794326, 0.19674404, -0.040387046, 0.03916034, 0.013947429), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.06389604, 0.04532417, -0.20961155, -0.22151196, 0.08498287, -0.0912261, -0.17840882, -0.13550358, -0.17497064, 0.12473174, 0.025784912, -0.060957976, -0.17787372, 0.21546759, -0.081276976, -0.0057096705), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.09308164, -0.036254935, 0.07291895, -0.010599356, -0.07466555, 0.18080021, -0.012473155, 0.24264692, 0.043592792, -0.15068708, 0.19074705, -0.1608174, 0.07106228, -0.15757518, -0.19600157, 0.21481107), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.10340095, 0.14977756, -0.18035571, -0.00454613, -0.018766372, -0.0006462305, 0.12609644, -0.022229725, -0.11288012, -0.10881946, 0.016426437, 0.047212575, -0.015592831, 0.088430114, -0.019637503, -0.15445113), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.13125896, -0.05610665, 0.04579115, -0.20584439, 0.016590014, -0.14247346, -0.045108374, -0.07701804, 0.059466217, 0.10401916, -0.114898264, 0.15725806, 0.02189435, 0.016297683, -0.11828137, -0.07996226), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.038534615, 0.046327326, 0.04947746, 0.07890686, -0.08618927, 0.1135833, -0.008643036, -0.019718027, -0.08664565, 0.068627, -0.06325347, 0.04222515, 0.120940305, -0.106959745, 0.022951378, 0.14290553), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.06408585, 0.19215317, 0.05731193, 0.09329293, 0.26087278, -0.124888204, -0.15473562, -0.037721, -0.12800066, 0.12517492, -0.06680967, 0.09497935, 0.23841377, 0.1347636, 0.17279463, 0.0038290594), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.08006353, -0.07942165, 0.14611697, 0.053477652, 0.13953096, -0.14270853, -0.009859328, -0.21148224, 0.11157642, -0.12486184, -0.0709194, 0.16277598, -0.08118929, -0.04684391, 0.049433514, -0.28911993), target1);\n\n\tMF4 target2 = { -0.038157728, 0.01904009, 0.07848918, -0.04052424 };\n\ttarget2 = MulAdd(a1, MF4x4(0.13100185, 0.028466834, 0.21762301, 0.07392093, -0.00046575023, -0.08175499, -0.07715949, 0.056365166, -0.028316915, -0.037371337, -0.16343145, -0.078509934, -0.178982, 0.06893543, -0.12027178, 0.06993414), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.07834248, 0.046873976, 0.23983683, -0.06646688, -0.04749886, -0.101967975, -0.082395144, -0.015339724, -0.07693013, 0.016892025, -0.08877053, 0.14534354, -0.30249342, -0.08455913, 0.09002741, -0.12472986), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.039911453, 0.11150177, -0.009199328, 0.043733858, -0.013332275, -0.119128324, -0.09285867, 0.007959111, 0.23202884, 0.06459362, 0.071042486, 0.09901959, -0.046906233, -0.07916646, -0.07528521, 0.05652529), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.12189273, -0.07608036, -0.09632985, -0.03643418, -0.1058494, -0.045247663, 0.016788295, 0.046447262, 0.08731556, -0.07916306, -0.17591585, 0.070336945, 0.0825902, 0.21166702, -0.14786263, 0.012765127), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.15099311, -0.082614996, -0.010447922, -0.2116295, 0.22785337, -0.0015175309, 0.21255092, 0.058660604, -0.022553608, -0.120723926, 0.0561124, 0.018720774, 0.0862727, -0.02351105, 0.037588555, -0.013596472), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.17424586, -0.091873385, 0.20892383, 0.3079469, -0.08027999, -0.07241797, 0.035928074, -0.031040983, -0.03548984, -0.047187436, 0.17053668, 0.39115313, 0.061380606, 0.13889132, -0.041030813, -0.022435248), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.0037971158, -0.19398233, -0.041492697, -0.08632908, 0.05087685, 0.114212446, 0.09395637, -0.12073027, 0.18993643, -0.025265925, -0.17716514, -0.062493253, 0.078527555, -0.13106133, 0.09158833, -0.08067098), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.11454478, -0.053314645, 0.02932442, -0.052710265, 0.10180192, -0.05165681, 0.1415095, -0.0886421, 0.25377235, -0.16350931, -0.07908212, 0.081858, 0.13214986, 0.056609593, -0.029691117, -0.1963397), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.13833676, 0.024542026, -0.07700002, -0.016948726, -0.13303484, -0.0951515, -0.031009076, 0.055997517, -0.037423257, -0.1693348, 0.015715523, 0.053379383, 0.12330872, -0.15478514, 0.14523397, 0.18046756), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.20786218, 0.14361653, 0.49472246, 0.09881262, -0.34138504, -0.0025990994, -0.43033788, -0.00039400125, -0.002008598, 0.23800024, 0.04231959, 0.028620182, 0.13962908, 0.089462794, -0.14335507, 0.008409915), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.12720335, -0.3409636, -0.023997113, 0.026997993, -0.20555046, -0.027020821, -0.235406, 0.09561914, 0.44234744, -0.07148167, 0.00064560794, -0.1726457, -0.014688707, 0.21288827, 0.17666213, -0.11264844), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.38011166, 0.014146791, 0.03394759, 0.08368928, -0.14633556, 0.11139822, -0.25683075, 0.07368074, -0.25248998, 0.12499596, -0.004184047, 0.192279, -0.048109, -0.006033096, 0.028591031, 0.15288617), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.10880278, -0.02255051, 0.21004406, -0.034776326, 0.10378925, -0.22322227, -0.11731474, -0.11443079, -0.30380723, 0.3183636, 0.18248428, -0.10215758, -0.049251713, 0.12848853, 0.012738647, 0.03222829), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.54890627, 0.20614935, -0.019661043, -0.07782363, -0.07293127, -0.004283575, -0.036939718, 0.19752185, -0.41021585, -0.050092876, 0.023610009, -0.23783271, 0.11343489, 0.21473971, -0.06997083, -0.10420534), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.08103626, 0.091647685, -0.17259495, -0.24478562, 0.08222839, 0.12299736, -0.12480139, 0.08303869, 0.069200024, 0.0005504728, 0.01590888, -0.029884247, 0.029297108, 0.17425247, 0.055239804, -0.06290667), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.25949356, -0.049375266, -0.19764636, 0.04848412, 0.14846909, 0.07249825, -0.038826656, -0.15756363, -0.1748046, 0.1839563, -0.015786756, 0.012645979, 0.09585216, 0.07619667, 0.010932837, 0.06530666), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.0592303, 0.34068975, -0.0043445593, 0.25165552, 0.22237164, 0.041179545, -0.046396293, 0.22462137, 0.034741532, 0.06565189, 0.13475078, 0.08480505, 0.1708352, 0.057039484, 0.037506044, -0.34036627), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.10844713, 0.113506734, -0.14367405, 0.111787796, 0.031758603, -0.06955974, -0.068098925, 0.14282043, 0.094929375, 0.18194464, -0.045276128, -0.0032632013, 0.007969798, -0.0590313, 0.05033309, 0.06328967), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.08094655, -0.08266014, -0.31147677, -0.062742665, -0.017061448, 0.26350877, 0.10840224, -0.16414656, 0.25499284, -0.3347594, 0.25973678, 0.15623575, 0.022350369, -0.08235582, 0.29226762, -0.14951667), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.16715927, 0.31846005, -0.007528655, -0.04655408, 0.07248268, -0.1295353, 0.119970314, 0.00721155, 0.19906871, 0.06366751, -0.055744495, 0.11151067, 0.09488815, -0.09006814, -0.1341, -0.12335882), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.18715191, -0.06641214, -0.24086717, -0.13160741, -0.20222618, -0.08882262, 0.09281967, -0.14381158, 0.31153843, 0.10280565, -0.06487702, -0.0030142434, 0.12800919, 0.059373695, 0.108098336, -0.025091475), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.26941344, -0.010607985, -0.059500597, -0.087650314, 0.057776485, 0.032416668, -0.0014182271, -0.053006213, 0.198899, -0.12861459, 0.1999814, 0.053311568, 0.0801663, -0.2101018, 0.110617965, -0.02017489), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.0888614, -0.07155236, -0.019973263, -0.12744384, -0.17749546, 0.041163083, 0.07273392, -0.09820898, -0.14922594, -0.11169263, -0.069319114, -0.04354858, 0.18076904, 0.084879614, -0.04125808, 0.068733074), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.025723739, -0.3071993, -0.26200652, -0.24551399, 0.040670983, 0.29252282, -0.14551005, 0.111219764, -0.21262506, -0.026296655, 0.16694368, 0.0041154358, 0.03154805, 0.07315552, 0.13088223, -0.10842478), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.070245974, 0.110039465, 0.19028768, -0.042884093, -0.09198143, 0.07932312, 0.09101255, 0.046001278, 0.18428285, -0.026307642, 0.099789225, -0.12612925, -0.40322223, 0.18879798, 0.010587032, 0.055332247), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.057069883, -0.032890134, -0.0513947, -0.074211985, -0.19471937, 0.18182398, -0.2119559, 0.2439066, -0.14167733, 0.25903046, 0.18162172, -0.007826057, -0.06429918, 0.02668084, 0.077179454, 0.023550559), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.14551505, 0.11689716, 0.28027633, -0.18079606, 0.016579725, 0.03988999, 0.074107096, -0.15190484, -0.060423456, 0.39282638, -0.005255287, 0.09286323, -0.1003253, -0.0412654, -0.117815144, -0.22671913), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.26655, 0.02524124, -0.15780295, 0.010378331, 0.038483843, -0.18752888, 0.12708266, 0.020122316, -0.13007571, 0.11942783, 0.1515452, 0.068273015, -0.11957963, -0.061313108, 0.18422426, -0.16399868), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.17614686, 0.12740774, -0.12034426, 0.00811552, -0.027063683, 0.004154653, -0.1892024, -0.051516473, -0.15957421, 0.103997365, 0.12231665, -0.082051665, 0.1611069, -0.017016938, 0.03224853, 0.16816284), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.15254295, -0.011885901, -0.03317691, 0.076534435, -0.060000043, 0.020979656, -0.11068878, 0.17345367, 0.033083163, -0.016063845, -0.03998401, -0.14917895, 0.05829016, 0.055933036, 0.0152959, -0.11680771), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.22236426, 0.093723886, 0.004360134, 0.05051143, 0.017353376, -0.0092351325, -0.16306834, 0.031693168, 0.20352198, 0.060595278, 0.08691345, 0.25801733, -0.09962889, -0.014900563, -0.15118423, -0.096163675), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.19981825, -0.21788603, 0.20982541, -0.113621205, 0.005621798, 0.0943901, -0.17422888, -0.18507147, 0.30247143, 0.06899553, -0.16009268, 0.067299575, -0.21744101, -0.015869575, 0.095568515, -0.036854178), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.06810536, 0.11014666, 0.24017857, 0.12042336, -0.12038678, 0.015001737, -0.17134188, 0.10343175, 0.09067457, 0.11136803, 0.024367718, -0.13199149, -0.37008765, 0.07137436, 0.122724056, 0.06668219), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.28085753, -0.14428541, 0.08978648, 0.05202615, -0.15860316, -0.06101108, -0.18904316, 0.104275696, 0.06810539, -0.07249347, -0.10909362, 0.019484319, -0.025948122, 0.0910616, -0.17025243, -0.035804044), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.10040864, -0.27650854, -0.029030709, -0.0531634, 0.050312318, 0.14849235, -0.059385244, -0.13935417, -0.16425262, -0.14445016, -0.22415695, 0.04330054, 0.0024454365, -0.009127519, -0.24255885, -0.06303984), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.054911103, -0.2811866, -0.049883213, 0.09221324, 0.041680478, 0.1959676, -0.15021674, -0.006908881, -0.15814131, -0.15958795, 0.15639575, -0.10088554, -0.22732499, -0.082894124, 0.06674789, -0.10491449), target2);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n}\n\n\n//!PASS 4\n//!DESC Conv-4x3x3x16\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.046519246, -0.00879819, -0.044789877, -0.07887647 };\n\ttarget1 = MulAdd(a1, MF4x4(0.044146776, -0.026106803, -0.15219912, -0.15929134, 0.02972265, -0.05223942, 0.06760582, 0.04324784, -0.13192074, 0.12351806, 0.0855665, -0.11861024, 0.097702436, 0.10298012, -0.03555207, 0.06544868), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.05458123, 0.014500078, 0.048824716, 0.14172198, 0.057214983, -0.06896361, -0.052671798, 0.10043398, -0.029938918, -0.013474177, 0.10448471, 0.29896173, -0.0037866347, -0.06600103, -0.19298725, -0.119502924), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.07483799, 0.0757225, -0.07432271, -0.02994328, -0.047863305, -0.08091319, -0.13640103, -0.16553412, 0.019309495, 0.13153689, 0.14757608, 0.041081686, 0.1447018, -0.09976335, -0.06094595, -0.019380448), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.116722435, 0.018069802, 0.082960755, 0.25008422, -0.10093022, 0.15039717, 0.16740529, 0.08372216, -0.17313154, 0.072606385, 0.1134366, 0.09108986, -0.025453486, -0.0014705429, 0.073060215, -0.0786531), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.22601452, 0.5512376, -0.11920107, -0.12763597, -0.008671738, -0.058479775, -0.268992, -0.06614402, -0.26501563, -0.030529302, -0.04196243, 0.13161187, 0.1170102, -0.25060177, 0.060350843, -0.1524947), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.1648866, 0.05652559, -0.040925294, -0.11008188, 0.21542753, -0.116541564, -0.08021358, -0.13785587, -0.05141525, -0.039133884, -0.1124311, 0.17472316, -0.22469969, 0.09842997, 0.10967242, -0.020226078), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.12250246, 0.10348344, -0.018174428, 0.037790317, 0.07088387, 0.27629474, 0.049727917, -0.0011699499, -0.1497167, 0.048863184, 0.00309108, 0.12177124, 0.022598455, 0.08864282, -0.048928354, 0.088068075), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.043115202, 0.24277024, 0.17749861, 0.10550521, 0.008603091, -0.36454508, 0.09997063, 0.11979698, -0.15786794, -0.008746184, 0.06689776, -0.20002088, 0.04094072, 0.042499837, -0.05387774, -0.10426778), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.06600674, 0.07645438, 0.015209062, 0.23262201, -0.08001964, -0.09341582, 0.008619914, 0.093308866, -0.124739006, -0.007209568, -0.06492457, 0.22863889, 0.17875427, 0.0779068, -0.09997953, -0.021379821), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.043263335, 0.1548246, 0.09254137, 0.16256322, 0.13361873, -0.10850825, 0.09901608, -0.0753444, -0.02345517, 0.030159235, -0.0043304237, 0.19805421, -0.11997134, 0.0948639, -0.09261292, 0.1167355), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.1042119, -0.08793884, -0.15884337, -0.08414226, -0.02642236, -0.032897346, -0.07664125, 0.064429455, 0.04868224, 0.04438529, -0.083366744, -0.06398503, -0.2364328, -0.039592575, -0.15421078, 0.17369357), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.20374978, -0.09289948, -0.25493136, 0.028119517, 0.053481918, -0.062769525, -0.052148513, -0.20336467, -0.07322327, 0.071623735, -0.05846495, 0.23537324, 0.030998409, -0.0572314, -0.30425155, 0.17616381), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.008999034, 0.19063166, -0.16384077, 0.08840229, 0.005153292, 0.17091888, 0.05193965, -0.09363918, 0.07379054, 0.0416411, 0.007373337, -0.002444226, 0.090993404, -0.17546643, -0.14595066, 0.19029109), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.07473051, 0.022953797, 0.3694185, -0.000816042, 0.014621785, -0.029232977, -0.0163784, 0.30796757, 0.024686797, -0.0376939, 0.106044516, 0.10191429, -0.11145659, -0.23659907, 0.11254082, 0.078495234), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.05722472, 0.014075986, 0.077577166, -0.1319451, 0.0063364087, 0.07042797, 0.013867829, -0.01543331, -0.069067486, -0.07245758, 0.059568863, 0.06195517, -0.25257275, -0.19943956, -0.19534364, -0.1566254), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.10666801, 0.19854072, -0.14524002, 0.21727695, 0.07621112, 0.103370175, 0.003522481, -0.03526533, 0.09204845, 0.04930996, -0.009533781, 0.071561396, 0.007946626, -0.09155877, -0.18856467, 0.11516717), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.15758498, 0.25284624, -0.03834856, -0.16141246, -0.09860034, -0.35015398, 0.08133997, 0.05046502, 0.20083027, -0.0026045898, -0.23627196, 0.07382544, 0.11064689, -0.0707055, -0.18984218, -0.09250848), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.05949194, 0.00070572464, 0.10784266, -0.008810496, 0.06522392, -0.0023800225, -0.01614215, -0.015862722, 0.08078033, 0.10827174, 0.11440369, 0.014041329, 0.053579852, -0.11658711, -0.052344058, -0.03857412), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.054652497, 0.072690494, 0.11310003, 0.09839347, -0.08197539, 0.089851685, 0.039466213, -0.059131484, 0.03934494, -0.09728057, 0.07211633, 0.14545459, -0.08371904, -0.02848036, -0.020263305, -0.12366355), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.13024135, 0.10256835, -0.088607304, -0.08425782, -0.067031406, -0.03591957, 0.034701034, -0.0573039, -0.048706584, 0.10135636, -0.13818035, -0.09554917, 0.1541496, -0.09246093, 0.11827978, -0.02703279), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.057035744, 0.063911796, 0.12805207, 0.13411741, 0.00924603, -0.03657417, 0.08100167, -0.031264946, -0.03189199, -0.049402498, -0.046219792, 0.12624107, 0.2809697, -0.1264563, 0.02382632, -0.16174819), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.032658063, 0.029207656, -0.020362824, -0.18823773, -0.20003095, 0.09240136, 0.004393565, 0.28016117, -0.17617643, 0.21443488, -0.06436653, 0.09426579, -0.012660543, -0.038343526, -0.087761596, -0.06952474), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.013616554, -0.16468868, 0.1281466, 0.08476041, -0.0138902385, -0.04434069, 0.12031286, -0.07590152, -0.12818764, 0.1970344, 0.042898823, 0.018936606, 0.019264435, -0.13713486, -0.027062744, 0.26364017), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.03121837, -0.040610187, 0.0023387137, 0.11021297, 0.04006531, 0.089258075, 0.038287688, 0.19519399, 0.0590789, -0.0127886515, 0.16618161, -0.11148632, -0.10438067, 0.088400334, 0.115820415, 0.23558354), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.14781238, -0.020881698, 0.040218577, 0.090248026, -0.04531296, 0.121813886, -0.12156261, -0.02640371, 0.019912932, 0.029554896, -0.032324113, 0.060553055, -0.14531589, -0.20826598, 0.1945815, -0.18510781), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.24151343, 0.08096261, -0.08314715, 0.121899664, -0.21133694, 0.25925165, 0.037419003, 0.0027491911, 0.07981589, -0.06247693, -0.07793235, -0.050702088, -0.21040778, -0.051243544, 0.021130228, -0.16032514), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.1940846, 0.005878943, 0.09001744, 0.00996283, -0.01720877, 0.11209827, -0.045714185, 0.017633213, 0.11248759, -0.070436165, 0.059041988, -0.117122024, -0.15776572, 0.041433014, 0.06852976, -0.32530108), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.018681401, 0.07524977, -0.09961975, -0.025000824, -0.14728728, 0.17958179, 0.05077947, 0.09839162, -0.24664684, 0.2350485, 0.043190528, 0.123329654, 0.031106282, -0.024857467, 0.026871338, 0.03363785), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.090937026, 0.113483965, 0.10115868, 0.09630846, 0.040868916, -0.14394417, 0.13920946, -0.09652194, -0.21267591, 0.079470165, 0.35935298, -0.029055713, 0.0462934, 0.02001686, 0.01959559, 0.0067710667), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.025194263, 0.087321565, -0.008157793, -0.12381555, 0.07437093, -0.024633797, -0.13163073, 0.053631987, -0.16161191, -0.33736497, -0.16600001, -0.16064753, -0.01877911, 0.006173125, -0.21867354, -0.11551306), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.016227739, 0.041133694, 0.12241288, 0.1840938, 0.16001828, -0.07284954, -0.0840258, 0.10275262, 0.059712093, 0.18617383, -0.004344732, 0.04759032, -0.112888224, 0.025455667, 0.06032809, -0.24498977), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.07140021, 0.24720372, -0.12715518, 0.13462298, 0.07784012, 0.04233614, 0.030195842, -0.095302135, 0.1719011, -0.16173883, 0.082427144, -0.03078554, -0.115330435, 0.2787821, -0.15274885, -0.016630588), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.08701172, 0.021434337, -0.15877618, 0.22535062, 0.014872742, -0.0068805423, -0.051181257, -0.38192979, 0.20793833, -0.2901109, -0.057449028, -0.044476006, -0.08431449, -0.05297424, -0.05526057, -0.06096434), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.12446916, -0.010789559, 0.18910398, -0.14184885, -0.040306002, 0.062063884, 0.14885572, 0.0050085005, 0.07284438, 0.03938155, 0.27486423, -0.079940364, -0.10640366, -0.11455711, 0.018501248, -0.05743762), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.26359692, 0.014875724, 0.043625355, 0.0974379, 0.09281598, 0.2449208, -0.07954478, -0.20232148, 0.025533125, -0.29744807, 0.1810463, -0.09866862, -0.16949633, -0.097010635, 0.04885873, 0.08639066), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.10937537, 0.024320884, -0.084123306, 0.045726787, 0.08169718, 0.038608517, 0.2250605, -0.031330425, -0.008280292, -0.026776202, -0.14776887, 0.3436263, -0.16302314, -0.15479733, -0.10982676, 0.12014077), target1);\n\t\n\tMF4 target2 = { -0.031883862, -0.0151373055, -0.026020631, 0.062551804 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.10340159, 0.03126175, 0.008010763, -0.014703102, 0.06388945, 0.08303292, -0.052860666, 0.1492984, 0.06422952, -0.029731093, -0.021047806, 0.0012385565, 0.025289888, 0.08642119, 0.06883434, 0.023763692), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.0748618, -0.048646145, 0.07845818, -0.24385995, 0.077536225, -0.29863936, 0.24418406, 0.07232939, -0.0054087904, 0.05985848, -0.017639449, 0.12629768, 0.108363576, 0.09904134, -0.00050070864, -0.11790627), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.05239057, 0.15894121, -0.07164557, -0.32539955, 0.046355467, -0.1368222, 0.10285978, 0.0981996, 0.04779384, -0.19793929, 0.06193576, -0.061980426, 0.12222037, 0.06162786, 0.12215435, 0.045095358), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.11633697, -0.07783625, 0.038284954, -0.1077604, 0.050120354, -0.039917693, -0.05126379, 0.020723915, 0.06922371, 0.07441101, 0.04355437, -0.0009652994, -0.040668465, 0.11270888, -0.056610428, 0.018002095), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.1991713, -0.12291669, 0.007297408, -0.22448927, 0.0118651325, -0.15347931, -0.02881685, -0.13971193, -0.0597255, -0.056213673, -0.16497411, -0.087855674, -0.09711957, 0.19384801, -0.09268538, 0.0010212396), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.13538352, 0.20081995, 0.05765413, 0.08507135, -0.11396954, -0.06537804, 0.1840262, 0.13141033, 0.07317906, 0.053597126, 0.14733106, -0.027857138, -0.008961551, -0.030892484, -0.10815004, 0.07787356), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.14028777, 0.20683727, -0.1973804, -0.14879352, 0.08193435, 0.06776529, 0.15067616, -0.005689123, 0.091099024, -0.04523496, -0.025365459, 0.046144743, 0.073163316, -0.050716147, 0.03645591, 0.08450625), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.05377605, 0.29956514, -0.05203467, -0.12395672, -0.07375765, 0.07590657, -0.1648796, 0.016921869, -0.15838358, -0.18164106, 0.048942942, 0.08723644, -0.05655316, 0.06374977, 0.03486325, -0.17268877), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.067100935, 0.116894506, -0.12316177, -0.28647798, 0.15253417, -0.043991808, -0.07732363, 0.12502535, 0.027790325, -0.13292582, 0.06508008, 0.033653572, 0.100093335, 0.044676002, 0.1450233, 0.108926095), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.25443476, 0.0075249635, 0.09893316, 0.13884877, -0.009865199, 0.028503535, 0.04932893, -0.021844162, 0.09569463, 0.042022802, -0.0056093778, -0.044183288, 0.012850613, 0.08729362, 0.088493116, -0.035626948), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.28942817, -0.2278143, -0.124107786, 0.18914355, -0.13334653, -0.061389446, 0.09170535, 0.1529043, 0.070113055, 0.052939575, -0.027512128, 0.043993592, 0.058714498, 0.0618404, 0.07549026, 0.27376285), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.17169511, 0.18338326, 0.09645834, -0.19721629, -0.062608786, -0.06097738, -0.052246977, 0.11313908, -0.002827855, -0.08297087, 0.2045053, 0.027751451, 0.05598507, 0.08318512, -0.020142859, -0.07377832), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.024627045, -0.065384455, -0.04648491, -0.32704023, -0.16444866, -0.0068647224, -0.20919928, -0.18135908, 0.05522183, -0.12074867, 0.04628794, 0.025948782, 0.058282085, 0.16593929, -0.1396821, -0.36740735), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.16715747, -0.03793736, 0.08576081, 0.23338848, 0.051240716, 0.090182334, -0.046501555, -0.0894777, -0.06944291, -0.05119481, -0.15820025, -0.17854515, 0.3914519, -0.0677236, 0.076883785, -0.16959), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.16410258, 0.11443157, 0.048126943, 0.17386216, -0.09785154, 0.14995028, 0.093302995, 0.09777354, 0.016656177, -0.16498508, -0.16739717, 0.11313578, 0.001371565, -0.031823646, -0.02444281, 0.13747996), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.023110714, -0.04154956, -0.030491728, -0.4158937, -0.007988987, 0.0035799788, 0.16974539, -0.014700064, -0.017114861, -0.018651277, 0.00242705, -0.011389802, -0.17292719, -0.03441201, 0.057909735, 0.17829509), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.014969421, 0.21926679, 0.14203273, -0.15120554, -0.094369836, 0.083293505, -0.080706924, 0.16517772, -0.053518526, 0.11042086, 0.02499214, -0.05298825, -0.017418144, -0.024013298, -0.07151083, -0.22398451), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.052312143, -0.09576563, -0.073171586, 0.13949135, -0.019157652, -0.019879084, 0.083495006, -0.14749153, 0.05605271, -0.07413262, -0.09352249, 0.0042679785, -0.069604576, -0.16840592, 0.103903025, 0.2889917), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.059331086, -0.033961378, 0.0041064387, -0.08705166, 0.051230803, -0.018020583, -0.12681223, -0.23725896, 0.059449084, -0.052372735, -0.05540911, 0.10343921, 0.024327401, 0.012832041, -0.022239655, -0.13162766), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.00208763, 0.06829585, -0.050976753, -0.05621949, -0.005976271, 0.009429676, -0.04865572, -0.09551031, -0.075597085, -0.026020885, 0.03421109, -0.1937313, -0.22840965, -0.15389588, -0.111958645, 0.10905485), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.081813, -0.065287165, -0.045189142, -0.047831066, 0.08934535, 0.09954615, -0.07451004, 0.033529207, 0.1303318, -0.08212296, -0.07734046, -0.014592582, -0.3092255, 0.045021445, -0.1223635, -0.026269957), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.113570146, 0.036414642, 0.015502351, 0.15432163, 0.008468439, -0.029858474, 0.03321966, -0.14513937, 0.105439186, 0.17247854, -0.040744863, -0.054444846, -0.121361785, 0.04879374, -0.23203504, 0.0054753935), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.015762426, 0.27844664, -0.023570599, 0.004403549, 0.04703402, 0.11293326, -0.22021124, -0.022294452, 0.0109151825, 0.051353704, 0.01387703, -0.25460902, -0.1720017, -0.41253135, 0.13271171, 0.24472673), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.06729634, -0.08928969, 0.044666067, -0.080033734, -0.010024118, 0.09617992, -0.03422752, -0.24341615, 0.0026236945, -0.17291804, -0.18756893, -0.011092629, -0.0758896, -0.11379615, 0.2614097, 0.2968493), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.037218813, -0.08741755, -0.047161646, -0.075184174, 0.07814149, -0.117306635, 0.27880162, -0.20831196, 0.11074332, 0.007141896, -0.061060436, -0.07465655, -0.06771369, 0.08425538, -0.13826483, 0.1951752), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.09369145, 0.05128452, -0.0045741517, -0.08464627, 0.072324485, -0.103766605, 0.04346825, -0.084247194, 0.18332602, 0.24476874, -0.23600607, -0.105699316, 0.0018734589, -0.22071646, 0.2122217, -0.1247409), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.024415143, -0.1883563, -0.08757719, 0.038815416, 0.06804177, 0.072834484, 0.062976, -0.043060035, 0.008934872, -0.065206386, -0.02180933, 0.18650985, 0.15305461, -0.043311838, -0.13565755, -0.15254296), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.027255, 0.13145106, 0.08066033, 0.05240541, -0.093578346, -0.043811, -0.03499714, 0.08510107, -0.01451532, 0.20293784, -0.15014489, 0.010262514, -0.05686128, -0.032981467, 0.009303513, -0.14119668), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.056040764, 0.1030456, 0.19483311, -0.035117295, -0.045012027, 0.036512565, -0.073540024, 0.07976307, 0.048326198, -0.08448881, 0.009611186, 0.21209192, 0.058837466, 0.21072935, -0.18430287, -0.022488063), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.047507305, -0.0024985473, 0.16436942, 0.11034998, -0.07350365, -0.04659239, 0.055649634, -0.24239732, 0.0874119, 0.0491421, -0.20165893, -0.16950199, -0.06907221, -0.02995977, -0.076965876, -0.019354858), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.16029131, 0.13571973, -0.0066582616, -0.12420045, 0.09299235, 0.10025083, 0.17720564, 0.09894699, 0.25251085, -0.06967862, 0.09031549, 0.014147361, 0.10027847, -0.1572137, 0.075934134, 0.041270934), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.05063072, -0.049268696, -0.018284608, -0.13692653, -0.20619605, -0.3068155, 0.17608485, 0.09949, 0.28783736, -0.22305936, 0.12421118, 0.22138284, -0.14137621, -0.033278886, -0.08361161, -0.030769518), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.108629055, 0.0015808924, 0.20601004, -0.026752226, -0.1501807, 0.029018851, 0.21033502, -0.027005566, 0.0030185424, 0.23096606, 0.03001235, -0.37719792, -0.015479773, 0.3498214, -0.25188166, -0.09796651), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.17263511, 0.09929037, -0.057462707, 0.03969186, -0.09580756, -0.02628204, -0.18671957, -0.114821374, -0.032703403, -0.04550097, -0.17387073, -0.06422339, 0.029069535, 0.077399485, -0.09688172, -0.04977373), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.08245095, 0.025046779, 0.15254857, -0.20083354, -0.21334353, 0.13298917, 0.019746812, 0.037977856, -0.18857501, 0.16555329, 0.08286123, -0.07782444, 0.01507326, 0.11679941, 0.029952176, 0.20679134), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.08486794, 0.010211643, 0.22983155, -0.16577461, -0.12877122, 0.0017102316, -0.079031415, -0.08309121, -0.062880024, 0.17439415, 0.2649001, -0.46177015, 0.08025148, -0.06425451, 0.028244738, -0.047507387), target2);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 5\n//!DESC Conv-3x3x3x16\n//!IN INPUT, tex3, tex4\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y),0);\n\tMF4 b1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 a2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF3 result = { -0.0096404655, 0.0022038757, 0.0035988842 };\n\tresult = MulAdd(max(a1, 0), MF4x3(0.012102164, 0.01385959, 0.018815203, -0.017435113, -0.04530735, -0.051318135, 0.01267727, 0.01400136, 0.017735276, 0.012681183, 0.035241637, 0.03990959), result);\n\tresult = MulAdd(max(b1, 0), MF4x3(0.16069227, 0.098007366, 0.076831706, 0.081593364, 0.017831434, 0.010174303, 0.014732323, 0.02229113, 0.029828338, 0.0048171813, 0.051809076, 0.055740006), result);\n\tresult = MulAdd(max(c1, 0), MF4x3(0.0347963, -0.014327445, -0.024176419, 0.003463003, -0.050532356, -0.06565927, 0.082851514, 0.10950989, 0.12022889, -0.038950548, -0.015094648, -0.0119305095), result);\n\tresult = MulAdd(max(d1, 0), MF4x3(-0.11845135, -0.08067485, -0.06981454, 0.00058037776, 0.01160575, 0.014900963, -0.0374349, -0.052966926, -0.044557698, 0.017439643, 0.005496974, -0.0024181441), result);\n\tresult = MulAdd(max(e1, 0), MF4x3(-0.1084345, -0.18271221, -0.18795776, 0.110637866, 0.08913364, 0.09161146, -0.19889367, -0.17172937, -0.1600661, -0.03789556, -0.028977778, -0.029903485), result);\n\tresult = MulAdd(max(f1, 0), MF4x3(0.017774954, -0.048732057, -0.061161697, 0.022389695, -0.013317256, -0.019972157, 0.051979035, 0.08774837, 0.09633588, -0.047462203, -0.033091765, -0.028352588), result);\n\tresult = MulAdd(max(g1, 0), MF4x3(0.022178177, 0.05031684, 0.05802219, -0.027539665, -0.020904189, -0.01800042, 0.0019531948, 0.00019749763, -0.0013961957, 0.024253767, -0.00058503833, 0.0006474611), result);\n\tresult = MulAdd(max(h1, 0), MF4x3(0.06707921, 0.0817431, 0.07561426, -0.04157211, -0.006174012, -0.003754037, 0.0031168605, 0.02320992, 0.026471246, 0.0029530525, -0.004939263, -0.0070194793), result);\n\tresult = MulAdd(max(i1, 0), MF4x3(0.03383418, 0.042321067, 0.04266926, -0.043634403, -0.0182769, -0.011314871, -0.050008457, -0.003527757, 0.0035165092, -0.00016610099, 0.019936454, 0.022199173), result);\n\tresult = MulAdd(max(a2, 0), MF4x3(-0.055203374, -0.03910439, -0.03778927, 0.027640847, 0.019469904, 0.0277834, -0.026225597, 0.04481541, 0.047454204, 0.031545334, 0.019874612, 0.011878432), result);\n\tresult = MulAdd(max(b2, 0), MF4x3(0.016088601, -0.045959134, -0.048793618, -0.009834776, 0.0077799167, 0.00873151, 0.031265914, 0.09698676, 0.10005417, 0.039120086, 0.0005542848, -0.0049420255), result);\n\tresult = MulAdd(max(c2, 0), MF4x3(0.028432969, -0.014792921, -0.026881924, -0.00586326, 0.013427183, 0.018215714, -0.013559131, 0.017704675, 0.024854776, -0.09087544, -0.104627624, -0.0921747), result);\n\tresult = MulAdd(max(d2, 0), MF4x3(-0.022899037, 0.026374351, 0.03145993, -0.008008749, -0.0013132087, -0.003957525, -0.02490554, 0.0020362549, 0.006453752, 0.031494617, 0.049864545, 0.04702567), result);\n\tresult = MulAdd(max(e2, 0), MF4x3(-0.12318068, -0.121377476, -0.11615006, -0.1321696, -0.078085914, -0.07868927, -0.072339885, 0.0012095685, 0.010923645, 0.10844834, 0.10038668, 0.09919817), result);\n\tresult = MulAdd(max(f2, 0), MF4x3(0.058991943, 0.018824834, 0.01659209, -0.041878223, 0.013176531, 0.023566704, -0.010507848, 0.02042605, 0.028884022, -0.1193022, -0.10676289, -0.096668206), result);\n\tresult = MulAdd(max(g2, 0), MF4x3(0.023510003, 0.06057355, 0.052194174, 0.02304783, 0.031745855, 0.025863871, -0.01060811, -0.043136407, -0.03569961, -0.022243036, 0.014206766, 0.0032128936), result);\n\tresult = MulAdd(max(h2, 0), MF4x3(0.025120225, 0.07386707, 0.07916389, -0.020202598, 0.010854587, 0.009825397, -0.043466344, -0.049230598, -0.038344223, 0.006438127, 0.041072655, 0.036958262), result);\n\tresult = MulAdd(max(i2, 0), MF4x3(0.027640026, 0.04239058, 0.055017423, -0.002110394, 0.040088017, 0.045239322, -0.020238828, -0.01711292, -0.014726791, -0.029621653, -0.007380026, -0.002073584), result);\n\tresult = MulAdd(max(-a1, 0), MF4x3(0.008071638, 0.0034274645, -0.0016181463, 0.044838928, 0.06936641, 0.072150804, 0.0006324625, -0.02223834, -0.021122342, 0.043963037, 0.047561962, 0.026419055), result);\n\tresult = MulAdd(max(-b1, 0), MF4x3(-0.06605246, -0.011649812, -0.0022502556, -0.09256232, -0.06281528, -0.055003755, 0.032296494, -0.011113339, -0.015790787, 0.05214882, 0.022887057, 0.013746634), result);\n\tresult = MulAdd(max(-c1, 0), MF4x3(-0.03587372, 0.018986767, 0.03229596, 0.008917248, 0.050303612, 0.06147115, 0.01872278, -0.011048741, -0.017369485, 0.030770298, 0.0063107815, 0.003187433), result);\n\tresult = MulAdd(max(-d1, 0), MF4x3(0.087662674, 0.048391398, 0.042332277, 0.0043635606, 0.02438183, 0.020213395, -0.023863237, -0.0051179314, -0.0060627074, 0.06292237, 0.05821987, 0.051667042), result);\n\tresult = MulAdd(max(-e1, 0), MF4x3(-0.048478693, 0.008368922, 0.016874269, -0.19261299, -0.1848583, -0.18258469, 0.112302095, 0.061518673, 0.058282077, 0.024626324, 0.0058449907, 0.006936535), result);\n\tresult = MulAdd(max(-f1, 0), MF4x3(-0.04468695, 0.0099176075, 0.025094027, 0.05447911, 0.08220857, 0.08161316, -0.0007933787, -0.03090106, -0.040217776, -0.028044306, -0.050590593, -0.05027328), result);\n\tresult = MulAdd(max(-g1, 0), MF4x3(0.029733973, -0.0129855955, -0.019776886, 0.01860655, 0.017793713, 0.020113358, -0.023667783, -0.0013290358, -0.004159268, -0.01960303, -0.012806444, -0.016549494), result);\n\tresult = MulAdd(max(-h1, 0), MF4x3(-0.00952229, -0.007181503, -0.0061082463, 0.04292393, 0.01510459, 0.0062862537, -0.016540393, -0.023619318, -0.02633423, -0.06652295, -0.06933143, -0.063913494), result);\n\tresult = MulAdd(max(-i1, 0), MF4x3(-0.015281855, -0.012470513, -0.008184894, 0.045862548, 0.023707546, 0.014719574, 0.032412887, -0.0038218168, -0.0065955487, -0.027728679, -0.04009727, -0.018856067), result);\n\tresult = MulAdd(max(-a2, 0), MF4x3(0.042844415, 0.00673587, 0.0038338478, -0.031152235, -0.06649269, -0.065986395, 0.005666899, -0.015819343, -0.012795757, -0.0007617308, 0.021531299, 0.026071105), result);\n\tresult = MulAdd(max(-b2, 0), MF4x3(-0.118266046, -0.07211513, -0.058381762, 0.02361942, 0.012819485, 0.010511434, 0.077196896, 0.003424893, 0.001927401, -0.03160996, -0.0034473129, -0.00444674), result);\n\tresult = MulAdd(max(-c2, 0), MF4x3(-0.06548674, -0.018152835, 0.0034779215, -0.006173449, 0.008357867, -0.0033986098, 0.021622533, -0.03722321, -0.045832597, -0.011835129, 0.0109178, 0.010480887), result);\n\tresult = MulAdd(max(-d2, 0), MF4x3(0.041682176, -0.008985459, -0.018538723, -0.054624356, -0.09495616, -0.090484254, -0.0060466817, -0.017551763, -0.014151624, -0.015683241, -0.012590141, -0.014278323), result);\n\tresult = MulAdd(max(-e2, 0), MF4x3(0.073194094, 0.055347454, 0.060976587, 0.18175459, 0.13776664, 0.13139476, 0.14047755, 0.061971992, 0.056503728, 0.0068531767, -0.011873265, -0.016871026), result);\n\tresult = MulAdd(max(-f2, 0), MF4x3(-0.041848205, -0.009582, -0.0076929387, 0.044274334, 0.04011985, 0.03085897, 0.009403278, -0.03346772, -0.04463548, 0.04548978, 0.014613167, 0.0055232802), result);\n\tresult = MulAdd(max(-g2, 0), MF4x3(0.019901669, -0.0011372451, -0.007423424, -0.053240675, -0.07105105, -0.07122227, -0.01892976, -0.019795185, -0.019204788, 0.01228504, -0.005040437, -0.0010069044), result);\n\tresult = MulAdd(max(-h2, 0), MF4x3(0.032843515, 0.014947385, 0.007550199, -0.0006476342, -0.020907652, -0.030297596, -0.015617971, -0.029182931, -0.038677275, 0.037908908, -0.018132487, -0.020226713), result);\n\tresult = MulAdd(max(-i2, 0), MF4x3(0.03232915, 0.02915194, 0.014929652, 0.016676396, 0.004807404, -0.0008906752, 0.0076904814, 0.00541351, -0.0048240838, 0.03459369, -0.012969539, -0.024712864), result);\n\n\tresult += INPUT.SampleLevel(sam, pos, 0).rgb;\n\n\tOUTPUT[gxy] = MF4(result, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Restore_M.hlsl",
    "content": "// Anime4K_Restore_CNN_M\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Restore/Anime4K_Restore_CNN_M.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Restore_1\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex6;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.061233472, 0.39222646, 0.029704979, 0.02586828 };\n\t\t\tresult = MulAdd(src[i - 1][j - 1], MF3x4(-0.09991986, 0.13782342, -0.031251684, -0.06356843, -0.3437488, 0.05450952, 0.34347802, 0.46335372, 0.08607224, 0.044988394, 0.137179, 0.17976908), result);\n\t\t\tresult = MulAdd(src[i - 1][j], MF3x4(-0.024212424, -0.09278509, -0.00040907756, 0.34552294, -0.13254678, 0.113105185, 0.005667946, -0.00036919137, -0.06375679, 0.009184115, 0.115518734, -0.115506776), result);\n\t\t\tresult = MulAdd(src[i - 1][j + 1], MF3x4(-0.14101827, 0.023523493, 0.044094566, -0.019271746, -0.44348842, -0.08818877, -0.4026149, -0.21995795, -0.15880394, -0.013732858, -0.020751135, 0.012719151), result);\n\t\t\tresult = MulAdd(src[i][j - 1], MF3x4(0.013001821, -0.34503505, 0.39219138, 0.18792126, 0.24760444, -0.016173402, 0.10154511, 0.15453082, -0.058132876, 0.016784398, -0.05808539, -0.11039915), result);\n\t\t\tresult = MulAdd(src[i][j], MF3x4(0.37024534, 0.041440863, -0.3374568, -0.44994286, 0.19555596, 0.20855539, -0.27974075, -0.5372628, 0.21228147, -0.0295346, -0.56700057, 0.030042822), result);\n\t\t\tresult = MulAdd(src[i][j + 1], MF3x4(-0.12940632, 0.057526, 0.090682045, -0.06985033, -0.13704006, -0.047685407, 0.44615674, -0.48056605, -0.06166251, -0.01883519, 0.2032237, -0.11328760), result);\n\t\t\tresult = MulAdd(src[i + 1][j - 1], MF3x4(0.010856669, -0.35820737, 0.16757219, 0.082619876, -0.03967303, 0.038705572, 0.32652855, -0.012030017, 0.015120559, -0.15314877, 0.23442009, 0.09767922), result);\n\t\t\tresult = MulAdd(src[i + 1][j], MF3x4(-0.046272673, -0.17752305, 0.082018286, -0.2512824, 0.58619463, -0.060903464, -0.022793597, 0.077803515, -0.17025311, 0.05136993, 0.029383298, -0.15475409), result);\n\t\t\tresult = MulAdd(src[i + 1][j + 1], MF3x4(-0.11212024, 0.13378005, -0.2027488, 0.08056421, -0.11176219, -0.048429377, -0.08396386, 0.10507829, 0.13326839, 0.0430627, 0.051362377, 0.06482755), result);\n\t\t\t\n\t\t\ttex1[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x8\n//!IN tex1\n//!OUT tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex1.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex1.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex1.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex1.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.018297346, -0.080951825, -0.062163066, -0.08050014 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.16410656, -0.40521824, 0.13121907, -0.02314597, 0.105412476, -0.060401272, -0.043063477, -0.13933973, 0.12558138, -0.020861467, 0.030370515, 0.13178016, -0.14220351, 0.20736893, 0.003321564, -0.29241714), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(0.18517321, 0.29162985, -0.26783395, 0.039760686, 0.025527012, -0.067319244, 0.055004176, 0.048916563, 0.12750523, -0.091435954, 0.13818842, 0.36704224, 0.0839921, 0.10186618, -0.17237376, 0.13282418), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.1657887, 0.0131325135, -0.17222486, 0.091398895, -0.12756164, -0.08437298, -0.29052997, 0.3269337, 0.15870757, -0.013529402, -0.0581753, 0.11802371, 0.07099966, -0.024063632, 0.31834844, -0.11183859), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(0.46036887, -0.07654623, 0.22923063, 0.17463821, 0.10555414, -0.117430426, 0.12406777, -0.011399492, 0.028316498, 0.13684341, 0.009664087, 0.2022659, 0.04953974, -0.31342217, -0.6103131, -0.13605757), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(0.03406955, -0.39819366, 0.61176, -0.46809456, -0.029321073, 0.46619493, 0.36700186, 0.02288561, 0.11464085, -0.10931452, -0.09154022, 0.07334147, -0.5609916, 0.31826234, -0.011012659, -0.46719545), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(-0.056855045, 0.27037027, -0.09269696, -0.563572, -0.06816116, -0.22986612, 0.08693167, -0.16246101, 0.09954046, -0.05374176, 0.0071916827, -0.1788692, 0.3825241, -0.1609887, 0.055204768, 0.10213068), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(0.0646626, 0.102358796, -0.45055822, 0.20557903, -0.23337309, 0.12633002, -0.19299199, -0.15085731, -0.13473304, 0.053790465, -0.10061193, -0.13393497, -0.04264752, -0.029740738, -0.07865285, 0.20883279), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(0.010471527, -0.033218473, -0.46157447, 0.004866583, 0.23226471, -0.059343327, -0.1439596, 0.13619648, 0.013839963, 0.15930325, 0.043742355, 0.17467323, 0.33772305, 0.40261495, -0.08351293, 0.18129359), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(-0.12493434, -0.1875134, -0.074943796, -0.0031701606, -0.037142616, 0.1667002, 0.16665547, -0.011248127, 0.0071619414, 0.0034872112, 0.120318964, -0.09625579, 0.14917047, -0.16310586, 0.07231737, 0.30447328), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(0.093798615, 0.17074613, -0.08780678, -0.012520207, 0.118534856, 0.027508778, -0.2778478, -0.19509242, -0.34137097, 0.32000312, -0.22027159, 0.337515, 0.16220862, 0.108993016, 0.14070526, 0.12784284), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(-0.14325632, -0.1467453, -0.27502358, 0.09370837, 0.11821083, -0.012266484, -0.2100548, 0.4707502, -0.06766648, 0.58165014, -0.2512279, -0.33783755, 0.1318925, -0.04346277, 0.15454485, 0.044500057), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(-0.05683207, 0.0051946463, -0.108000524, 0.10133204, -0.50763863, 0.007308442, 0.8542404, 0.28387356, 0.022709515, 0.294523, -0.3822472, 0.66166407, 0.01404485, 0.031282708, -0.26756814, -0.123147786), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(-0.36455178, 0.3470555, -0.045303088, -0.03170764, -0.15802494, -0.0019141496, -0.25939587, -0.23875342, 0.130428, 0.03954273, -0.17985536, 0.105145946, 0.15804817, 0.12551713, 0.28371975, -0.085748516), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.0060625463, 0.2443924, -0.017692259, -0.20214005, -0.09584515, -0.012805372, -0.13942227, 0.16143198, 0.12942013, 0.41785547, 0.046071563, 0.7030026, 0.10499644, -0.20566013, -0.031321276, 0.27830327), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.081274964, -0.14562319, 0.27200526, -0.20491314, 0.012910989, 0.024201397, 0.04816258, 0.21297328, -0.22015952, -0.44160756, -0.056035373, 0.33824417, -0.31645304, 0.15469243, 0.053187452, -0.20989445), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(-0.046550367, 0.033185404, 0.33337244, 0.12853645, 0.23520172, -0.05909214, 0.0861368, 0.10706329, -0.07058717, -0.11759937, -0.18594047, 0.080006264, -0.055425353, -0.12506317, 0.15729053, -0.0915004), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(0.042516407, 0.14844789, 0.16533111, 0.13502933, -0.0655417, -0.057256397, 0.076713726, -0.23448966, 0.12855926, 0.014219275, 0.051761385, 0.053433083, -0.2446715, -0.4008074, 0.19603717, -0.1796951), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(0.14777803, 0.15524907, 0.043158617, -0.06996876, 0.19210646, -0.2144364, -0.47020787, -0.4207906, -0.18074386, -0.2163903, 0.0030754965, 0.36799973, -0.3837698, -0.0022661497, -0.37276733, -0.28934997), result);\n\n\t\t\ttex2[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x8\n//!IN tex2\n//!OUT tex3\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex2.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex2.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex2.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex2.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.008952847, -0.0058945753, -0.08097229, 0.020968592 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(0.31543177, 0.23095237, -0.06692611, -0.5867763, 0.003622504, 0.17948842, -0.14627707, 0.1745016, -0.052964583, -0.15551159, 0.05644786, -0.012665164, 0.13107763, 0.11369179, -0.09452995, -0.11973403), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(-0.2694661, -0.115382135, 0.3073268, -0.067228466, -0.25511482, -0.13922207, 0.36758214, -0.18821828, -0.022617863, 0.20333402, -0.11125889, 0.3552245, -0.013346653, -0.099095374, -0.25100616, 0.35521755), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(0.011012409, -0.13675085, 0.25642, -0.34851208, -0.23184675, 0.18012202, 0.57654136, 0.103173524, -0.16461405, 0.038177088, 0.1234096, 0.013202029, -0.19033363, 0.07469178, -0.017948546, 0.15287702), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.05340533, 0.23797482, 0.20351392, -0.05333351, -0.12181174, -0.23363493, -0.20696607, 0.109941036, -0.11519453, 0.13842066, -0.10687832, 0.29040006, 0.022218632, 0.031238724, 0.2685182, 0.15300068), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(0.22985318, -0.3103802, -0.22916415, 0.25238806, -0.11690287, -0.1947488, 0.118020535, 0.07814263, -0.06335474, -0.007870727, 0.076106325, 0.094677486, -0.16776285, -0.006570437, -0.29589584, 0.41413507), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.43607962, -0.36456433, -0.123776875, -0.16634953, -0.091190875, 0.13035081, 0.28627968, 0.27249968, 0.12356344, -0.008616177, 0.09599816, -0.006144557, -0.23490307, 0.3013123, 0.14153156, 0.21837278), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(0.060364585, 0.37860224, 0.039182413, -0.22805426, -0.089910224, -0.06817697, -0.2684275, -0.12528503, 0.036934495, -0.07826616, 0.06559976, -0.08253646, 0.13489649, 0.06237663, 0.126376, 0.21194184), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(-0.12534817, 0.21225189, -0.27818045, -0.3070443, -0.006957577, -0.025105853, 0.12100924, -0.06916452, 0.23081483, 0.1802756, -0.18995638, 0.16603014, -0.2904096, -0.25292823, -0.21834068, 0.13719653), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(0.017209655, 0.10757137, 0.21414296, -0.30885983, 0.10467716, -0.2184891, 0.100061476, -0.1527528, 0.2100472, -0.25768545, -0.22329919, -0.29153427, -0.06983842, -0.103854865, -0.051384352, 0.14629121), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(0.0059623295, -0.26060802, 0.32115817, 0.021025505, 0.09783085, -0.15865178, 0.1473021, -0.24977303, -0.033508282, 0.17480391, -0.091310136, 0.09870876, 0.10504043, -0.06105686, 0.013493489, -0.11278855), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(0.14875248, -0.14859414, 0.19377062, -0.17456068, 0.101288855, -0.1113682, -0.48944646, 0.1018565, -0.037392337, 0.08539691, 0.1751306, -0.15428723, -0.059375558, 0.027663672, 0.051804014, -0.049813222), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.118846565, -0.19869871, -0.037388258, 0.08456728, -0.11662527, -0.43818352, -0.093285345, 0.038507205, -0.051991668, 0.21008292, 0.10792365, 0.2020924, 0.057021596, 0.09460527, 0.0016551288, -0.0015957063), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(0.11062174, -0.2639232, -0.060295466, -0.3217331, -0.050545212, 0.30989558, 0.30906132, 0.030323273, 0.028986752, 0.037429404, 0.20855664, -0.19848943, 0.034687653, -0.09599135, -0.06250494, -0.13215867), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(-0.010391146, 0.07657845, 0.44491258, 0.0435906, 0.0075931503, 0.42632654, 0.47022533, 0.34737435, -0.15452717, -0.14613411, -0.45231065, 0.12094409, 0.0067911847, 0.057501152, 0.09876979, 0.044946447), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.15607435, 0.2293058, -0.09520331, 0.012836732, -0.15282455, 0.26437718, -0.1685477, -0.13211122, -0.055801593, -0.016778728, -0.34478986, -0.23228309, 0.12300962, -0.13235827, -0.13987203, -0.16550972), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.13161735, -0.09039346, -0.033475474, -0.23686698, 0.1514885, 0.20977421, 0.031431954, -0.0049226107, 0.090661936, 0.15288061, -0.03316583, 0.09646573, -0.32651708, 0.18825398, -0.15777239, 0.17572704), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(0.112157226, -0.08712878, 0.23453182, 0.1043877, -0.14686783, 0.28682423, -0.086443506, 0.059457052, -0.31530112, -0.2700583, -0.06028952, -0.070416875, 0.18053482, 0.16653341, 0.25215197, 0.061915852), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(-0.20122242, 0.076313145, -0.0988483, 0.094337784, -0.35436687, 0.3762327, -0.07809558, 0.3055848, 0.10425242, -0.17087407, 0.030301496, -0.13911743, 0.01630275, 0.24247427, -0.006474477, 0.03842641), result);\n\n\t\t\ttex3[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 4\n//!DESC Conv-4x3x3x8\n//!IN tex3\n//!OUT tex4\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex3.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex3.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex3.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex3.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.059377354, -0.02055341, 0.07234869, -0.015452986 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.2237721, -0.0064096362, -0.31808427, 0.73477733, 0.015353088, 0.23983319, 0.14967978, -0.34920225, -0.07456269, 0.093151815, -0.14331086, -0.24586205, -0.14183366, 0.06401045, -0.22044073, 0.29932275), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(-0.07968509, -0.3349146, 0.16529128, 0.08443499, 0.4095855, -0.17120704, 0.17425705, 0.15298946, 0.2981273, 0.2212369, 0.10392389, -0.28775454, -0.065247655, -0.15255849, 0.13094437, 0.18685219), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(0.015706737, -0.17755036, 0.2622526, 0.112057306, -0.15876788, -0.38466996, -0.33700845, -0.031711742, -0.023320962, -0.3145249, -0.21223734, -0.1314596, -0.1888095, -0.046370104, 0.09000896, -0.0046378844), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.31127506, 0.31304324, -0.03965752, 0.03649018, -0.029851055, 0.05801377, 0.00040150844, -0.04422069, 0.18019931, 0.14415511, -0.09845236, 0.21895434, -0.013932474, -0.046454947, -0.3403935, -0.006705289), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(-0.34878647, -0.5129283, 0.060250953, -0.16354133, 0.20644619, 0.08732273, -0.24118888, 0.24455065, 0.24449423, 0.44103387, 0.22455928, 0.25738943, -0.26914698, -0.21309987, 0.08386486, 0.021484816), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(-0.057454903, -0.4121922, 0.022661546, 0.37178272, 0.03331408, 0.05044008, 0.04324371, 0.20727943, 0.2432641, 0.076906696, -0.20858039, 0.012439015, -0.19335061, 0.09217451, 0.1968369, -0.19435833), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(-0.16960496, 0.24616167, 0.37977478, 0.14324574, -0.011531225, -0.11312143, -0.18141079, -0.23843932, 0.0086012175, -0.3564491, -0.12639481, 0.009799298, -0.29120612, 0.23756824, 0.18035695, -0.087133996), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(-0.10081239, 0.29191494, 0.10434693, 0.08970636, 0.008997759, 0.104756236, 0.039641086, 0.02323888, -0.11627765, 0.023693223, -0.30801758, -0.120208986, 0.05086147, 0.18498175, 0.15595439, -0.09877306), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(0.101321675, -0.2929976, 0.38810417, 0.5605376, -0.04073937, 0.030110704, -0.18147062, -0.09833952, 0.01927733, 0.15335669, -0.15384074, -0.110595055, -0.054297395, -0.077522054, 0.07918369, -0.068480626), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(0.23263514, -0.11719232, 0.2903209, -0.007503795, -0.020222448, -0.17790157, -0.15600762, -0.08741775, 0.12529704, 0.25548857, -0.04585447, -0.10255033, 0.18350503, -0.29593533, 0.0868933, 0.027004737), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(-0.14958654, -0.006238835, -0.2928948, 0.1988557, -0.17057803, 0.12524141, 0.13978264, -0.019280292, 0.05967142, -0.07790818, -0.5893818, -0.022845713, -0.08596779, 0.07875358, -0.03316667, -0.4369282), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.19195688, -0.060883682, -0.25897828, 0.07063324, 0.090833396, 0.003422883, 0.109534174, 0.031180874, -0.05017118, 0.022862168, -0.270113, -0.057831235, 0.53920543, -0.10252776, -0.091807485, 0.004294343), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(-0.18494242, -0.119284816, 0.3821897, 0.07777979, 0.15568028, -0.2854859, -0.22441281, -0.049155876, -0.15292497, 0.21895619, -0.095677756, 0.15210424, 0.001643022, -0.026176987, 0.048463076, -0.4824009), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.007215129, 0.17074333, 0.053930074, -0.027014816, -0.17180431, -0.15163863, -0.0012122132, -0.18934256, -0.08294297, -0.24580221, -0.46552867, -0.27923223, 0.4092668, 0.06288688, -0.1602188, -0.0030876845), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(0.111870885, 0.03317145, 0.14155298, 0.20328505, -0.05104131, 0.13979794, 0.018966835, -0.07238511, 0.05493792, -0.14975783, -0.10293237, -0.21985306, 0.49054706, 0.18288186, -0.26925826, 0.35845932), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.3747799, -0.096748486, -0.17139742, 0.25289854, -0.17421168, -0.018461818, 0.09747162, 0.01660535, -0.20580359, 0.56189656, 0.17151354, -0.26347768, 0.28350568, -0.21486014, -0.44330928, -0.008981037), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(0.10169985, -0.18244018, 0.04760736, 0.41017643, -0.09468786, -0.024218475, 0.103733875, -0.22540338, 0.10630112, 0.3677178, -0.104170956, 0.057317447, 0.21764882, 0.0789158, -0.22041337, 0.15065216), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(0.11633995, -0.008195114, -0.14501533, 0.07168025, 0.058413275, 0.055995367, 0.09362145, -0.13827963, 0.13760869, 0.040319785, 0.038895044, 0.2675253, -0.087339684, 0.1412073, -0.17166458, -0.2312994), result);\n\n\t\t\ttex4[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 5\n//!DESC Conv-4x3x3x8\n//!IN tex4\n//!OUT tex5\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex4.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex4.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex4.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex4.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.048888464, -0.0561434, 0.030690912, -0.030496685 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.29012984, -0.13150147, 0.31015614, 0.05992291, -0.050289866, 0.14845313, -0.09608898, 0.27913308, 0.060307387, -0.04160452, 0.035932682, -0.08137563, -0.07999419, 0.11818284, -0.27512288, 0.21948813), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(0.12916058, -0.21759962, -0.33868533, 0.021636661, 0.053470243, 0.1412425, 0.043395396, -0.26751056, -0.01689101, -0.2623835, 0.010809152, 0.062962815, -0.20692012, -0.1677863, -0.23313859, -0.17402615), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.08204112, -0.23672083, -0.0064437394, -0.13200696, -0.056692924, -0.02708657, 0.12536962, 0.004428919, 0.14137582, 0.15404348, -0.105753876, 0.047957454, 0.15734316, 0.16562423, -0.010160829, -0.06602983), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(0.025653997, -0.10877775, -0.31258908, 0.18841636, -0.36005193, 0.1816357, -0.34537643, -0.0741087, 0.4663994, 0.0065186517, 0.08109033, 0.2976773, -0.35774228, -0.041366056, -0.37852773, 0.050565656), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(0.04392313, 0.11316681, -0.14421389, 0.17985669, -0.1651274, -0.5656209, -0.124100484, 0.42774054, -0.1153939, 0.16829851, 0.2025612, 0.054007456, -0.06868256, -0.56935954, -0.12227961, 0.17688861), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.34041, 0.499, 0.15234196, 0.21353458, -0.2732667, -0.049950935, 0.03550811, -0.21051687, 0.2609023, 0.016438454, -0.29874632, 0.37994128, 0.049288407, -0.31126305, 0.029235512, -0.012256015), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(-0.0046853204, 0.15391374, -0.040689662, 0.20186873, -0.08137621, 0.35905558, 0.23733845, 0.21794793, -0.066420384, 0.029600656, -0.31421044, -0.050773863, -0.06260773, 0.04634221, -0.10948491, -0.045498934), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(-0.082953, -0.025837064, -0.09928303, -0.14300232, 0.275064, 0.07793617, 0.22240888, 0.06637834, -0.4382666, -0.2932182, -0.27243167, -0.14221182, 0.5695728, 0.20719238, 0.5575927, 0.40816882), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(-0.18510929, -0.15052167, 0.25277212, 0.06804461, 0.016387, 0.20310035, 0.2903229, -0.0615877, -0.28987274, -0.11942605, 0.013498961, 0.3184152, 0.29543474, -0.042830903, -0.018111207, -0.13263674), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(0.25749087, 0.0053866603, -0.09391162, -0.06129529, -0.094091184, -0.07419633, 0.0013858611, 0.012000353, -0.062903, -0.0204224, -0.12113313, 0.017942557, -0.073379934, 0.052201986, 0.35864577, 0.023564404), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(0.100115694, 0.19451359, 0.23252094, 0.19506809, -0.12470779, 0.0027281935, -0.17488572, -0.018721964, -0.15159339, 0.18457152, 0.057712987, -0.08191495, 0.19735703, 0.07326743, -0.28563106, 0.01642815), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.068062514, 0.28356665, 0.07377898, 0.42776972, 0.28725025, -0.13045293, -0.17525704, -0.05885591, -0.16676305, -0.2555945, -0.10078422, -0.053032875, 0.084470876, 0.06460686, 0.13824362, -0.05231353), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(0.22637829, -0.028969254, 0.1968254, -0.13331996, 0.038017053, -0.008854481, -0.2031639, 0.09237089, -0.3821112, 0.1108527, -0.11029933, -0.24542028, 0.22416145, -0.031492114, -0.19144306, -0.0996271), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.10776744, 0.16363445, 0.14656505, -0.3737814, -0.06642015, 0.5616549, -0.008412252, -0.37266847, 0.12506576, -0.15329036, 0.037538245, -0.10810259, 0.01706349, 0.1813702, 0.035651788, -0.012786579), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.4023338, -0.2098614, -0.18285121, -0.02727653, 0.26107362, 0.041306913, -0.036515504, -0.045217298, -0.39958602, -0.21229339, -0.021053292, -0.13427502, 0.36178818, 0.20934913, 0.1500852, 0.2634554), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.07794611, -0.25937587, -0.06822529, -0.056336135, 0.094220124, 0.21588847, -0.0455218, -0.10968329, -0.08068449, -0.31366697, 0.07799637, 0.24252681, 0.23963861, 0.13715535, 0.010329345, 0.09094301), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(-0.20975718, -0.12550138, 0.14453574, -0.0020878632, -0.07153068, 0.3249998, -0.056577377, 0.18166828, 0.37204072, 0.17018336, 0.3752895, 0.32178587, 0.2571982, -0.27258632, -0.25971004, -0.40536007), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(-0.3243907, -0.06300621, -0.09398436, -0.19549188, 0.14906861, 0.061537784, -0.055284478, 0.11281728, 0.12964857, 0.09979093, -0.1810159, -0.4104283, 0.05807971, -0.056371246, 0.08072554, 0.18479007), result);\n\n\t\t\ttex5[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 6\n//!DESC Conv-4x3x3x8\n//!IN tex5\n//!OUT tex6\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex5.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex5.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex5.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex5.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { 0.011169491, 0.032399546, 0.138099, 0.023857072 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(0.15332128, 0.027258258, 0.14900503, -0.15982795, 0.17021236, -0.51046044, -0.15287271, -0.058167327, 0.51826185, -0.34817994, 0.004513167, 0.05395769, 0.1990321, -0.049979225, 0.11391989, -0.16062729), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(0.033682905, 0.019728886, 0.19931756, 0.17381927, 0.2585768, -0.2124572, -0.014632459, 0.39779893, -0.1146207, -0.2396625, 0.08960277, 0.38345298, 0.25497693, 0.11692859, -0.14207517, 0.12667973), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.14911255, 0.08910706, 0.16136818, 0.03914566, 0.24204038, -0.03607149, -0.4571109, 0.10802461, -0.0021356856, 0.00885878, 0.22297303, 0.2367231, 0.045177583, 0.11120606, -0.009971904, -0.059262395), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(0.24565999, -0.2261384, 0.47373205, 0.024613412, -0.10923052, 0.039027315, -0.42707404, -0.3783373, 0.3544573, -0.5468578, -0.27599156, -0.09455918, 0.18760219, -0.19082001, 0.030565469, 0.20589156), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(0.1973198, -0.03433863, 0.059960485, 0.045642868, 0.1819595, -0.14460869, 0.1286175, 0.2067575, -0.042632047, -0.11842967, -0.11224446, -0.18764776, -0.19563004, 0.027425969, 0.24056377, 0.5949649), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.055027682, 0.16331595, -0.2608588, 0.12545955, 0.4588985, 0.03642909, 0.22187738, 0.45190734, -0.001210133, -0.057651415, -0.061199043, 0.11935476, -0.049561135, 0.27509886, 0.13778673, -0.124914035), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(-0.02257459, 0.27705106, 0.044165276, -0.26521233, 0.05982374, -0.2824302, 0.3171142, 0.08430561, -0.10155528, 0.16182268, -0.09183147, -0.19447176, 0.3295707, -0.50616395, -0.036964044, 0.23166709), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(-0.0232342, 0.07299799, -0.18038079, -0.13672702, -0.108305976, 0.15024792, -0.19531927, 0.0870979, -0.26488534, 0.19481428, 0.10737945, -0.14573483, -0.33094683, 0.24155116, -0.09850332, 0.2797003), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(-0.24089853, 0.19506595, 0.4799156, -0.058313113, 0.36212957, -0.44844806, 0.23864488, 0.15477742, -0.07795971, -0.0033861927, -0.11216164, 0.033454563, -0.25893036, 0.23793478, -0.15769425, -0.00033481256), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(0.05772507, -0.1640253, -0.13499664, -0.20460358, -0.024399966, 0.14966168, -0.090857334, -0.039677754, 0.00036956606, -0.24236615, -0.053542696, -0.0049544116, 0.026651502, 0.39019194, -0.2742246, -0.061242323), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(-0.016323274, -0.036179908, 0.029965919, 0.11151491, -0.00016685206, -0.29573023, 0.17996423, -0.20145437, 0.1324275, -0.18442132, -0.24618152, 0.061780427, -0.02770517, 0.28452995, 0.39804098, -0.1174389), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(-0.025068847, -0.053328387, -0.27053785, 0.26866457, -0.09866204, 0.057677213, 0.01850112, -0.18014707, -0.13319959, -0.14411181, -0.26355243, -0.022209354, -0.05062645, -0.036771543, 0.13294417, -0.18458557), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(-0.046194963, 0.038230438, -0.08993043, -0.07236354, 0.11031123, -0.16504908, -0.09517036, -0.16459833, -0.5279925, 0.12686682, -0.05726125, 0.055361677, 0.31593755, 0.027328093, 0.001839602, 0.30581662), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.08608678, 0.03168437, 0.007713377, -0.26140293, -0.1268983, 0.13395861, -0.069848835, -0.24080403, 0.018839337, -0.049821075, -0.21461345, -0.14168301, -0.0872339, 0.47096667, 0.022512507, 0.14860632), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(0.06293673, 0.22462969, 0.045494985, 0.021673543, 0.18227446, -0.2956555, 0.08010543, -0.01919729, -0.012190269, 0.241983, -0.046537094, -0.40094566, -0.3853647, 0.1081711, -0.16926058, 0.16138376), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(-0.14854589, -0.17625804, -0.10849075, 0.221543, 0.099971965, 0.13901573, 0.29464146, 0.020068526, 0.054358527, -0.10351705, -0.0062914286, 0.24127026, -0.16914125, 0.12729423, -0.18377453, -0.6452375), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(0.12603393, -0.10986093, 0.2314103, 0.16915044, -0.13619255, -0.09349073, 0.20594226, -0.34507084, 0.19077192, 0.052500796, 0.07185645, 0.029082738, -0.015576321, 0.08254907, -0.5501743, -0.38495848), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(0.09300796, -0.079218306, 0.46825135, -0.08735625, 0.06321122, 0.16234867, 0.042932414, -0.013057422, 0.09697148, 0.23457524, 0.19417483, -0.16804664, 0.18379296, 0.17770062, -0.050235, -0.059676602), result);\n\n\t\t\ttex6[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 7\n//!DESC Conv-4x3x3x8, Conv-3x1x1x56\n//!IN INPUT, tex1, tex2, tex3, tex4, tex5, tex6\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\t\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a = tex6.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b = tex6.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c = tex6.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = tex6.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e = tex6.SampleLevel(sam, pos, 0);\n\tMF4 f = tex6.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g = tex6.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex6.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i = tex6.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 src1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 src2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 src3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 src4 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 src5 = tex5.SampleLevel(sam, pos, 0);\n\tMF4 src6 = tex6.SampleLevel(sam, pos, 0);\n\tMF3 origin = INPUT.SampleLevel(sam, pos, 0).rgb;\n\n\tMF4 src7 = { 0.013687534, -0.08185164, -0.04755438, 0.290178 };\n\tsrc7 = MulAdd(max(a, 0), MF4x4(-0.22753362, -0.08612073, 0.33140692, 0.08699529, -0.18788953, -0.056579117, -0.12905197, -0.06694621, 0.054559365, 0.15031597, -0.13430363, 0.021646025, 0.14884405, -0.0694291, 0.26149413, 0.11270503), src7);\n\tsrc7 = MulAdd(max(b, 0), MF4x4(0.17876762, -0.09637848, 0.11285323, 0.2004893, 0.1317187, -0.036162686, 0.17958368, -0.069625, 0.28760737, -0.12505141, 0.12760694, 0.047717955, -0.16811855, -0.16340709, 0.13278298, -0.08403954), src7);\n\tsrc7 = MulAdd(max(c, 0), MF4x4(-0.21917523, 0.079711854, -0.28642535, 0.2822416, 0.03001489, -0.014772918, -0.3487396, 0.10597145, -0.013841082, 0.17034237, 0.10810282, -0.08089695, -0.22184245, -0.59067357, 0.44113398, 0.13045649), src7);\n\tsrc7 = MulAdd(max(d, 0), MF4x4(-0.29906932, 0.013923749, 0.2031124, -0.11846688, -0.13953634, 0.08003455, -0.10164494, -0.21218559, 0.10563715, 0.31033117, -0.075903505, 0.047310907, -0.37824214, -0.14506383, 0.11866701, -0.21384487), src7);\n\tsrc7 = MulAdd(max(e, 0), MF4x4(-0.1353849, 0.19258606, 0.063908584, -0.2043788, 0.27244982, 0.1665306, -0.29357895, -0.22441709, 0.18514316, -0.17840464, 0.20986097, 0.14351055, -0.057732623, 0.42166704, -0.23182064, -0.4957248), src7);\n\tsrc7 = MulAdd(max(f, 0), MF4x4(-0.34830126, 0.109066755, -0.28285867, -0.048280068, -0.12290918, 0.04291651, -0.047484186, -0.03702595, 0.23047262, 0.09398974, 0.022467108, 0.08271034, 0.3066665, -0.54077, 0.057771873, 0.23194093), src7);\n\tsrc7 = MulAdd(max(g, 0), MF4x4(-0.17731948, -0.3175927, 0.1452728, 0.09396786, -0.16433562, -0.01833653, -0.22345604, -0.04161193, -0.14827462, 0.18544114, -0.15544125, -0.06179007, 0.16989979, -0.20985202, 0.16391534, -0.09447268), src7);\n\tsrc7 = MulAdd(max(h, 0), MF4x4(-0.053878862, -0.21034616, 0.023831524, 0.19772215, 0.31647214, 0.0126534775, -0.19130844, -0.049282108, -0.21446131, 0.067189045, 0.09117449, -0.25548774, 0.12109098, 0.22009392, -0.3924665, -0.13340388), src7);\n\tsrc7 = MulAdd(max(i, 0), MF4x4(-0.16096684, -0.18495405, 0.10410178, 0.0015673033, -0.00183498, -0.044303037, -0.062745355, -0.090802394, 0.043269135, 0.06924481, -0.21367405, -0.14619029, 0.11555763, -0.20292862, 0.5799557, 0.14739846), src7);\n\tsrc7 = MulAdd(max(-a, 0), MF4x4(-0.21030277, -0.09578802, 0.013482288, -0.21484336, 0.12995781, 0.40431052, -0.3347856, -0.18183486, 0.15550353, -0.04402301, 0.4603779, 0.14874357, -0.07694621, -0.053523075, -0.19607326, -0.10850742), src7);\n\tsrc7 = MulAdd(max(-b, 0), MF4x4(-0.2347211, 0.2697403, -0.0634794, -0.17925987, 0.17231455, 0.24999185, -0.5208536, -0.10491828, -0.233575, 0.52950364, 0.0038063182, -0.1380038, 0.022935199, 0.19369157, 0.14586553, 0.1938704), src7);\n\tsrc7 = MulAdd(max(-c, 0), MF4x4(-0.10245223, 0.34150192, 0.25862157, -0.20165509, 0.5597771, 0.114510864, -0.122526556, -0.04010975, 0.1704679, -0.23335956, -0.16771887, -0.03783455, -0.056995615, 0.24153493, -0.08082429, -0.24210933), src7);\n\tsrc7 = MulAdd(max(-d, 0), MF4x4(-0.103466526, 0.15278348, -0.30526164, -0.080755696, 0.103505425, 0.15862796, 0.14696524, -0.008358076, -0.09180311, -0.12505089, 0.28052542, -0.13551563, 0.07528779, -0.09636086, -0.10369617, 0.23656134), src7);\n\tsrc7 = MulAdd(max(-e, 0), MF4x4(-0.25752836, 0.099439755, -0.30716348, 0.035077725, 0.023509016, 0.23106368, 0.05277125, 0.34910464, 0.088015385, 0.26995596, 0.1390645, -0.40671825, 0.18096298, -0.100688554, 0.5492049, 0.2482101), src7);\n\tsrc7 = MulAdd(max(-f, 0), MF4x4(0.41411775, -0.107200556, -0.13813478, 0.13768874, 0.27137747, 0.06313619, -0.08522967, 0.03218302, -0.03166121, -0.3415683, -0.52242, -0.1741813, -0.36956537, 0.179129, -0.09742935, -0.11696616), src7);\n\tsrc7 = MulAdd(max(-g, 0), MF4x4(-0.07975504, 0.17964838, 0.37122533, 0.16064765, 0.14309953, 0.29473078, 0.0926391, -0.22333665, 0.34612748, -0.3387473, 0.0077308523, -0.07239449, 0.18522519, -0.21297298, 0.11493978, 0.16117814), src7);\n\tsrc7 = MulAdd(max(-h, 0), MF4x4(-0.17402779, 0.10023144, 0.11712206, 0.031971734, 0.18713303, 0.08736295, 0.013007052, -0.06943139, -0.20102951, -0.010721135, -0.2562522, 0.34877458, -0.13732676, -0.40258047, 0.25824392, 0.15720639), src7);\n\tsrc7 = MulAdd(max(-i, 0), MF4x4(0.044494305, 0.3296108, 0.0017603852, 0.09362289, 0.38839245, 0.40015858, -0.13395199, -0.044521853, -0.56266373, 0.251378, 0.5005789, -0.13106057, -0.18491416, -0.046887, 0.067797676, -0.14694957), src7);\n\n\tMF3 result = { -0.010478934, -0.008364784, -0.010246552 };\n\tresult = MulAdd(max(src1, 0), MF4x3(-0.08837163, -0.065234736, -0.034704313, 0.021405501, 0.013663729, 0.019249594, 0.05328863, 0.03580334, 0.046457592, -0.12216048, 0.022547891, 0.016400825), result);\n\tresult = MulAdd(max(-src1, 0), MF4x3(0.061996464, 0.05631466, 0.06808407, -0.005013109, -0.0044589997, -0.032367796, 0.016481603, 0.13721058, 0.14924648, 0.020035887, -0.07250003, -0.08034037), result);\n\tresult = MulAdd(max(src2, 0), MF4x3(0.24078514, 0.081361525, 0.053420708, -0.009353794, -0.051077116, -0.058007747, -0.14071098, 0.01035966, 0.005308949, -0.1489842, -0.06711817, -0.05552926), result);\n\tresult = MulAdd(max(-src2, 0), MF4x3(-0.13002375, 0.012733757, 0.017821986, 0.17767483, 0.20204604, 0.1751779, 0.12804912, 0.07381453, 0.05655911, 0.17044514, 0.07301451, 0.06523978), result);\n\tresult = MulAdd(max(src3, 0), MF4x3(-0.1170986, -0.05130371, -0.027939914, -0.16645707, -0.121526904, -0.09471366, -0.04143118, 0.026693767, 0.034615446, -0.084318705, -0.064990036, -0.054324172), result);\n\tresult = MulAdd(max(-src3, 0), MF4x3(0.12094524, 0.09518409, 0.07387219, 0.062216382, 0.053228356, 0.031372335, 0.072797105, 0.026258165, 0.009804673, 0.120719045, 0.073281154, 0.056623302), result);\n\tresult = MulAdd(max(src4, 0), MF4x3(-0.11141495, -0.11566289, -0.10398725, -0.0651895, -0.06820691, -0.054204144, -0.032746475, -0.008849683, -0.007610222, -0.024655705, -0.048778858, -0.041144755), result);\n\tresult = MulAdd(max(-src4, 0), MF4x3(0.058090195, 0.07538767, 0.059722915, 0.044788487, 0.04212742, 0.027502589, 0.04892866, 0.015416752, 0.008312418, -0.011864114, -0.0074752793, -0.0060824654), result);\n\tresult = MulAdd(max(src5, 0), MF4x3(0.043446552, 0.061971307, 0.05758086, -0.06379154, -0.053758245, -0.047204215, 0.016307736, 0.03423424, 0.030179083, 0.041445345, 0.03843772, 0.033059113), result);\n\tresult = MulAdd(max(-src5, 0), MF4x3(-0.003803544, 0.0008906116, -0.00059585314, 0.102071285, 0.11485224, 0.10007254, -0.074306004, -0.08803551, -0.07972321, -0.030704215, -0.021514274, -0.009049376), result);\n\tresult = MulAdd(max(src6, 0), MF4x3(0.0066058086, 0.0011408008, 0.0016199006, -0.03916473, -0.042929266, -0.04018418, -0.03153446, -0.039413508, -0.034767237, 0.113516055, 0.12577052, 0.113335624), result);\n\tresult = MulAdd(max(-src6, 0), MF4x3(0.02655948, 0.041905303, 0.03861737, 0.048471425, 0.049788587, 0.050447535, 0.12092813, 0.13564217, 0.12613249, -0.0023508538, 0.0012828974, 0.0028730957), result);\n\tresult = MulAdd(max(src7, 0), MF4x3(0.0084758485, 0.008800083, 0.008206044, -0.056123603, -0.06610845, -0.060320783, -0.081793964, -0.101638645, -0.096699014, -0.04402356, -0.04177539, -0.03829645), result);\n\tresult = MulAdd(max(-src7, 0), MF4x3(0.10676299, 0.118409514, 0.10618478, -0.05880252, -0.06488367, -0.06432695, 0.019221924, 0.017602798, 0.017413978, -0.07512528, -0.080483615, -0.066218294), result);\n\n\tOUTPUT[gxy] = MF4(result + origin, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Restore_S.hlsl",
    "content": "// Anime4K_Restore_CNN_S\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Restore/Anime4K_Restore_CNN_S.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Restore_0\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.011108127, -0.07481861, 0.07640154, 0.4964964 };\n\t\t\tresult = MulAdd(src[i - 1][j - 1], MF3x4(-0.19288683, -0.21397883, 0.111997396, -0.04791413, -0.26682988, -0.06144587, -0.03601853, -0.16693151, 0.038494494, -0.16651472, 0.147657, -0.083003886), result);\n\t\t\tresult = MulAdd(src[i - 1][j], MF3x4(-0.14286195, 0.08746566, -0.40107322, 0.12390977, -0.33392772, -0.18703035, -0.21326795, 0.04780781, -0.15155545, -0.0010025925, -0.1554875, -0.10676251), result);\n\t\t\tresult = MulAdd(src[i - 1][j + 1], MF3x4(0.28095165, 0.022872915, -0.21342312, -0.29982176, 0.025937587, -0.055012174, -0.33779636, 0.0015666655, 0.076416336, 0.06656033, -0.1557806, 0.1078894), result);\n\t\t\tresult = MulAdd(src[i][j - 1], MF3x4(-0.31584853, 0.07527119, 0.30713862, -0.34014285, -0.50103146, -0.07217874, 0.512807, -0.09597398, -0.32097813, -0.051580857, -0.022466356, 0.01148551), result);\n\t\t\tresult = MulAdd(src[i][j], MF3x4(-0.026032459, -0.04193211, 0.37703893, -0.031916667, -0.27421117, 1.0906446, -0.049654085, -0.19814016, 0.07819544, 0.06003738, 0.1405805, -0.0064135445), result);\n\t\t\tresult = MulAdd(src[i][j + 1], MF3x4(0.041450135, 0.11319654, -0.23237701, 0.08443178, 0.53344345, 0.30857387, -0.057264958, -0.1575803, 0.2325609, -0.027797326, -0.04544767, -0.18720597), result);\n\t\t\tresult = MulAdd(src[i + 1][j - 1], MF3x4(0.2531829, -0.074966915, -0.27800754, -0.3146097, 0.20126024, -0.5380133, -0.15082566, -0.19021043, 0.29951036, 0.17123336, -0.01681872, -0.12574998), result);\n\t\t\tresult = MulAdd(src[i + 1][j], MF3x4(0.25203633, 0.19882993, 0.14906439, 0.13593598, 0.40712556, 0.084902965, 0.42969635, 0.2961132, -0.057267334, -0.030388135, 8.8084314e-05, 0.0210724), result);\n\t\t\tresult = MulAdd(src[i + 1][j + 1], MF3x4(-0.13459359, -0.12199573, 0.12591946, 0.24736497, 0.2033463, -0.09388599, -0.094370656, 0.1071285, -0.18479438, -0.066625565, 0.08279283, 0.20130983), result);\n\n\t\t\ttex1[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x8\n//!IN tex1\n//!OUT tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex1.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex1.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex1.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex1.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.16371979, -0.024620198, -0.035754893, 0.04176776 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.056432575, 0.0028165397, -0.026325442, -0.14802271, 0.16885762, -0.062179096, -0.2332292, 0.17513658, -0.08011296, 0.02947316, 0.014771492, -0.17946689, 0.026012989, -0.09823925, 0.036625937, -0.06924322), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(-0.13571467, 0.09831142, 0.12911566, 0.06305893, -0.07188695, -0.20161287, 0.3858435, -0.21069056, -0.12294444, -0.1404628, -0.022659872, 0.23008968, 0.10969853, 0.17640765, 0.39796907, 0.20413099), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.0061665224, 0.055102807, -0.0059629944, -0.021429887, 0.061626043, 0.16898955, -0.21215646, 0.16510476, 0.2238265, 0.19429931, 0.09874656, 0.06828208, -0.122404456, -0.00026717107, -0.28203064, -0.29979932), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.22735378, 0.14538136, 0.11549746, 0.194148, -0.09841722, -0.0661309, 0.348576, -0.017375294, -0.044078812, 0.1298332, 0.04793373, -0.30687734, 0.08353025, 0.083519086, 0.10766399, 0.31796935), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(0.048365135, -0.17566709, -0.33212858, -0.052667376, -0.26443407, -0.010216014, 0.1573303, 0.05725314, 0.08140953, -0.09664591, 0.076109104, -0.026773714, 0.07732627, 0.10188082, -0.28266954, -0.16230233), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.29931107, 0.117944, -0.10414009, 0.12795551, 0.12576093, 0.17082554, -0.15803693, 0.13430743, -0.025801308, -0.10797019, 0.0721032, 0.2825884, -0.11025257, 0.12798019, 0.081827976, -0.050441865), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(-0.11827391, 0.08306765, -0.3430314, 0.07898041, -0.023839617, -0.019507334, 0.23176382, -0.40992323, 0.09411734, 0.38415068, -0.25845516, -0.29984522, 0.1470966, -0.0684779, -0.07071314, -0.026773235), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(0.19091596, 0.082110435, -0.5266589, -0.1744098, -0.015838385, -0.046316292, 0.023171103, -0.03731331, 0.2642396, 0.31824252, -0.041754793, -0.09525519, -0.14696182, 0.052168854, 0.039857205, -0.027555354), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(0.15207373, 0.09845733, 0.0142631065, 0.096375965, 0.06089903, 0.17902578, -0.42391995, 0.22475442, 0.016356342, -0.06277531, -0.12173141, -0.18635495, -0.0013459618, 0.15725887, 0.019310836, 0.20293565), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(-0.18395247, 0.30672902, 0.09034339, 0.1821889, -0.0419004, -0.2169228, -0.14052129, 0.11006559, 0.1709272, 0.51062274, 0.13758625, -0.2242552, -0.030382963, 0.3357568, -0.26491287, 0.02501938), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(0.040511727, 0.12523083, -0.27318433, 0.08388512, 0.25354835, 0.3404216, -0.2632471, -0.17784123, 0.2732347, 0.4468553, 0.084667034, -0.1856242, 0.034099877, -0.00954992, -0.32751867, -0.062207516), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.17564747, 0.11645554, -0.16362113, 0.105654195, -0.2762563, -0.1413764, 0.23264363, -0.14000498, 0.095402054, 0.0715738, -0.19346157, -0.028285999, 0.009799127, 0.04059529, 0.19688335, 0.1282381), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(0.23575781, -0.11446148, -0.20504695, 0.035568226, 0.36890212, -0.85968876, -0.18545328, 0.33796397, -0.30916876, -0.10445518, -0.3046253, 0.33271998, -0.06263589, -0.2160114, -0.16383372, -0.31173357), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.20469664, 0.4039374, -0.070057206, 0.030353077, 0.39843914, -0.15490077, -0.24476516, 0.38238233, -0.21809858, 0.23496576, -0.051794037, 0.033664484, -0.14411364, -0.2515329, 0.124655396, -0.05818785), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.09065731, -0.16787091, 0.013269188, 0.23687351, -0.41504318, -0.048163068, 0.31760025, -0.33648986, 0.29752317, 0.2926866, 0.14408836, -0.33382463, -0.15873958, -0.121961035, 0.11797893, 0.09000567), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.13356976, 0.013763947, 0.012169505, -0.109594524, 0.03417223, 0.7031121, 0.65146804, 0.5250268, -0.50132495, -0.419648, 0.2940041, 0.83051753, -0.17595838, 0.1633008, -0.018587278, 0.079596795), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(0.07570128, -0.1581438, 0.03904949, 0.14890033, -0.054611947, 0.17469402, -0.44252598, 0.036181703, -0.4981031, -0.37507218, -0.18466389, 0.2645845, 0.25189674, -0.025896115, 0.034307647, -0.020462232), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(-0.11645865, 0.02296537, 0.040909223, 0.015069485, 0.062284566, -0.22526766, 0.09241534, -0.32623053, 0.18208642, 0.3954284, 0.2884468, -0.25137675, -0.037232924, -0.10185309, -0.17956531, 0.018966453), result);\n\n\t\t\ttex2[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x8\n//!IN tex2\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex2.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex2.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex2.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex2.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.0036821906, -0.050239526, -0.01355402, 0.00048220603 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(0.01921286, -0.26684764, -0.12663573, 0.31641877, -0.25313398, 0.12264074, 0.58750325, -0.14084283, 0.5837018, -0.042300556, -0.20435576, -0.009954825, 0.060783498, 0.05540401, 0.2205112, -0.06578902), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(-0.21930243, -0.03774968, 0.22615197, 0.18338196, 0.011201461, -0.271034, 0.00573116, -0.12248194, 0.47990513, 0.2982416, -0.1087603, -0.050099242, -0.07620939, -0.07148229, 0.03691984, -0.16796488), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.14962853, -0.053769328, 0.02387081, 0.22002189, 0.052237745, -0.26160842, -0.08603077, 0.012542448, 0.08119985, 0.075785555, -0.33437458, -0.43373227, -0.13206963, -0.08759176, -0.03288923, -0.09799959), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.1305593, -0.5974288, 0.06058367, 0.08406488, 0.013692483, 0.06646377, 0.16469325, 0.08990975, 0.42217395, -0.11289523, -0.06165009, 0.48556912, -0.15702641, -0.19922857, -0.0035429662, -0.0022089656), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(-0.1964807, 0.038099788, 0.21587034, 0.039734077, -0.07063389, 0.11604167, -0.24558097, -0.08900199, -0.7684516, -0.1037487, -0.09380674, 0.33144563, -0.16653742, 0.0028585843, -0.33774406, -0.0528696), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(-0.27298656, -0.05665099, 0.09661685, 0.19780266, 0.1025106, -0.22055034, -0.21218458, -0.040628925, 0.0095010325, 0.13118382, -0.42582452, -0.22197723, 0.21006055, -0.06189587, -0.15285942, -0.09526762), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(-0.14494462, -0.046788953, 0.065877035, 0.09911713, 0.35096622, 0.16682479, 0.028363144, 0.36037162, 0.29413632, 0.28212717, -0.025364442, -0.3406269, 0.047262143, -0.11892685, -0.008032766, 0.29743317), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(-0.15191558, -0.36980554, 0.14555687, 0.0043930537, -0.012661432, 0.15737776, -0.115250416, 0.10324491, 0.24491951, -0.15575431, -0.27802598, 0.21959937, 0.18063772, 0.4455559, -0.09693302, 0.33382267), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(0.2717801, 0.13452889, 0.14105384, 0.16324317, -0.40111846, 0.1154301, -0.0076733204, -0.09697362, 0.44306824, -0.02831414, -0.2153124, -0.12075326, 0.060776163, 0.30347148, -0.0036976219, -0.12070682), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(-0.39780128, -0.29875937, -0.12952097, 0.080333896, 0.07520163, 0.021689568, -0.23121156, -0.038140096, -0.1593877, 0.017156163, -0.06038025, 0.009244022, -0.13917233, 0.30957314, 0.243109, -0.104947075), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(-0.07965157, 0.06776501, -0.13288979, 0.005851189, -0.08768168, -0.03689969, 0.12034646, 0.22441491, 0.14453568, -0.17648841, -0.3378289, -0.018329712, 0.11722939, -0.34161824, 0.08424494, -0.01400687), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.08153887, 0.07222914, -0.14663404, -0.038526025, -0.07385973, 0.18440577, 0.35890242, 0.17084727, 0.26345527, 0.15280858, -0.007446105, -0.024403179, -0.30336383, -0.22978698, 0.11612946, -0.23614909), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(-0.07447396, 0.09023449, -0.13798, -0.086943336, -0.30787337, 0.15087669, 0.14418626, -0.03371195, 0.048989657, -0.13075387, -0.13458036, -0.059836224, 0.06495196, 0.269715, 0.3674355, 0.38956037), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.34981915, -0.048779126, 0.31717536, 0.38080826, -0.20149232, -0.82969636, -0.10167862, 0.6382858, 0.25976858, 0.4370118, -0.04724865, -0.10014156, 0.19380626, -0.080370255, 0.09578106, -0.035166856), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.026443917, 0.4132611, 0.01822534, 0.12742202, -0.26652107, -0.2996705, 0.30905882, 0.07989903, 0.38249823, 0.21486135, 0.025314959, -0.14717339, -0.13344015, -0.32088286, -0.2833883, -0.30973712), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.021517841, 0.006556378, 0.2025686, -0.12044382, -0.38583103, -0.0027515136, -0.06556736, -0.097090125, 0.04676486, -0.11954886, -0.051612873, 0.07831412, -0.18823163, -0.16542958, 0.04245155, 0.6437998), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(-0.39475346, -0.2936861, 0.26768062, -0.28151843, 0.21935691, 0.2101108, -0.15455097, 0.19548604, 0.09188909, -0.020147726, 0.103328265, -0.12574542, -0.34167948, 0.07523185, -0.17669058, 0.62446547), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(-0.37661025, -0.29630858, 0.05451026, 0.1611643, 0.14079669, -0.2170294, -0.038716137, 0.13514164, -0.21235192, -0.07860726, -0.005749412, 0.025625167, -0.13297133, 0.33012658, -0.27434957, -0.18416783), result);\n\n\t\t\ttex1[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 4\n//!DESC Conv-3x3x3x8\n//!IN INPUT, tex1\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF3 result = { -0.0052927984, -0.0060193934, -0.0048643993 };\n\tresult = MulAdd(max(a, 0), MF4x3(0.15873, 0.17989138, 0.14648493, -0.017379675, -0.017363746, -0.019855022, 0.009670625, 0.0070157526, 0.0075994316, 0.025388412, 0.027231036, 0.024052646), result);\n\tresult = MulAdd(max(b, 0), MF4x3(0.048195973, 0.041760173, 0.037366055, -0.115950756, -0.12887983, -0.12535639, 0.032125086, 0.03397254, 0.032950625, 0.01223746, 0.020822672, 0.0161561), result);\n\tresult = MulAdd(max(c, 0), MF4x3(0.0890567, 0.094453335, 0.09014035, 0.016081346, 0.017434116, 0.020783134, -0.011775135, -0.010094134, -0.018522855, 0.072103254, 0.07940666, 0.065876864), result);\n\tresult = MulAdd(max(d, 0), MF4x3(-0.04841196, -0.06963968, -0.056574684, 0.10912542, 0.11813441, 0.10643838, -0.013013885, -0.01562045, -0.013802797, 0.037505716, 0.04352026, 0.04645123), result);\n\tresult = MulAdd(max(e, 0), MF4x3(-0.3472869, -0.36243078, -0.33530185, 0.23654196, 0.2305048, 0.22150646, -0.045226905, -0.041799217, -0.042511635, -0.10267792, -0.1123385, -0.10845448), result);\n\tresult = MulAdd(max(f, 0), MF4x3(0.011987401, 0.012285043, 0.007813165, -0.15911353, -0.17523928, -0.1535267, 0.15675929, 0.16531634, 0.15948962, -0.09240023, -0.09513292, -0.084187366), result);\n\tresult = MulAdd(max(g, 0), MF4x3(0.069052905, 0.07278333, 0.0756627, -0.012180326, -0.018794727, -0.031050753, -0.044663202, -0.04362803, -0.038904265, -0.008540197, -0.011201734, -0.01556625), result);\n\tresult = MulAdd(max(h, 0), MF4x3(-0.08261173, -0.09042543, -0.07589266, 0.043515377, 0.045066774, 0.04037769, -0.06262993, -0.07469342, -0.058593787, 0.026696987, 0.028740842, 0.037405368), result);\n\tresult = MulAdd(max(i, 0), MF4x3(0.07975598, 0.09597654, 0.08997132, -0.07844719, -0.07880916, -0.06835411, 0.05668995, 0.050163813, 0.053357534, -0.020040333, -0.019867316, -0.01907621), result);\n\tresult = MulAdd(max(-a, 0), MF4x3(-0.017078733, -0.017393313, -0.008266595, -0.0033478448, -0.0027439648, -0.0042334674, -0.06354017, -0.062058125, -0.04652064, -0.010787706, -0.0062706997, -0.007573461), result);\n\tresult = MulAdd(max(-b, 0), MF4x3(-0.019895451, -0.016341688, -0.008712399, 0.026231976, 0.023955572, 0.0216376, -0.061950512, -0.05481285, -0.05261985, -0.018804235, -0.016235247, -0.0131616965), result);\n\tresult = MulAdd(max(-c, 0), MF4x3(-0.055628926, -0.063315354, -0.057192408, -0.0256364, -0.028660972, -0.02937357, -0.017604912, -0.020851422, -0.016070362, -0.0870202, -0.0832279, -0.07525406), result);\n\tresult = MulAdd(max(-d, 0), MF4x3(0.062738225, 0.07106593, 0.061644047, -0.06068257, -0.06983662, -0.066070385, 0.024919355, 0.03227179, 0.028569462, -0.07866227, -0.098967604, -0.092128105), result);\n\tresult = MulAdd(max(-e, 0), MF4x3(0.040397774, 0.047241107, 0.03962998, -0.09112752, -0.10057507, -0.09301817, 0.10833967, 0.101835825, 0.10027467, 0.27189335, 0.27433604, 0.26781923), result);\n\tresult = MulAdd(max(-f, 0), MF4x3(-0.044211388, -0.042373534, -0.03658007, 0.113148406, 0.12423258, 0.107804194, -0.17081551, -0.18562958, -0.17475435, 0.09636739, 0.10763415, 0.093332425), result);\n\tresult = MulAdd(max(-g, 0), MF4x3(-0.03798545, -0.047811143, -0.050768293, 0.018775463, 0.026812987, 0.03452908, 0.0055677597, 0.0039081173, -0.0017878668, -0.10728597, -0.12618187, -0.109045394), result);\n\tresult = MulAdd(max(-h, 0), MF4x3(0.06359783, 0.064184755, 0.04934199, -0.009819327, -0.006616115, -0.007431496, 0.025055679, 0.024787048, 0.017360551, -0.047140837, -0.061695747, -0.06440822), result);\n\tresult = MulAdd(max(-i, 0), MF4x3(0.060199022, 0.06482763, 0.059514645, 0.026998974, 0.028776823, 0.024897143, 0.17968474, 0.19337215, 0.16760105, 0.0075838566, 0.010503482, 0.011993149), result);\n\n\tresult += INPUT.SampleLevel(sam, pos, 0).rgb;\n\n\tOUTPUT[gxy] = MF4(result, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Restore_Soft_L.hlsl",
    "content": "// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Restore/Anime4K_Restore_CNN_Soft_L.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Restore_Soft_2\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1, tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = { -0.55533427, -0.05231614, -0.032685343, -0.027457517 };\n\t\t\ttarget1 = MulAdd(src[i - 1][j - 1], MF3x4(-0.2676983, -0.1694746, 0.7231928, -0.050193843, 0.1850188, -0.4749505, 0.07632266, 0.17824799, 0.026348969, -0.213702, -0.16420218, -0.066780016), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j], MF3x4(-0.09888135, -0.079641104, 0.51160043, 0.53629893, -0.1368544, -0.07092336, 0.18622977, 0.6388427, 0.19499005, 0.06811229, -0.31991923, 0.088302985), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j + 1], MF3x4(0.06487055, -0.1591197, -0.29304126, -0.428903, 0.1966732, 0.11229865, 0.089009434, 0.23463708, -0.22231965, -0.008649182, 0.3317394, 0.10976113), target1);\n\t\t\ttarget1 = MulAdd(src[i][j - 1], MF3x4(0.40386826, -0.09486362, -0.058931742, -0.1341693, -0.28993917, -0.09050739, 0.28094417, 0.31630108, -0.02661985, -0.24368657, 0.096867286, 0.05391612), target1);\n\t\t\ttarget1 = MulAdd(src[i][j], MF3x4(0.05631564, 0.34576723, -0.5587978, 0.16213721, 0.12679785, 0.18991663, -0.24762277, -0.33682153, -0.22863568, 0.20517963, 0.20418519, 0.12087338), target1);\n\t\t\ttarget1 = MulAdd(src[i][j + 1], MF3x4(-0.17579688, 0.18395603, -0.014987654, 0.30243605, -0.12778279, -0.07003458, -0.5353068, -0.39372426, 0.2676877, 0.255503, -0.29737592, -0.30513638), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j - 1], MF3x4(0.799834, -0.023603538, 0.19820727, -0.11204286, -0.1566225, -0.1937577, -0.030266436, -0.10107911, 0.023661222, 0.16879195, 0.046644643, 0.09485681), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j], MF3x4(-0.014675849, -0.110290475, -0.28381273, -0.06814732, 0.2067597, 0.20925248, -0.24068354, -0.5096708, -0.09384791, 0.10593733, 0.0672362, -0.06924161), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j + 1], MF3x4(0.05908883, 0.099426664, -0.20916614, -0.17044452, -0.091960385, 0.3218613, 0.41635308, -0.36125022, -0.012630896, -0.37540653, 0.018497325, -0.100674420), target1);\n\n\t\t\tMF4 target2 = { 0.029685514, 0.066621915, 0.03600017, -0.03497038 };\n\t\t\ttarget2 = MulAdd(src[i - 1][j - 1], MF3x4(0.09844753, -0.19389127, 0.029695928, 0.3805915, 0.1353029, 0.027786473, 0.15621242, 0.09383762, -0.1097243, 0.021245124, -0.016402386, 0.09129394), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j], MF3x4(0.3038283, 0.03778846, 0.1898852, 0.23949303, -0.34829387, 0.20485392, 0.60560244, 0.4089768, -0.260066, 0.42611003, 0.19227165, 0.03948586), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j + 1], MF3x4(-0.033990905, 0.17583308, -0.2235879, 0.47376296, -0.1001787, 0.72851896, -0.056391567, -0.056544185, 0.0966166, -0.016663829, -0.15151545, -0.14227313), target2);\n\t\t\ttarget2 = MulAdd(src[i][j - 1], MF3x4(-0.16544957, 0.05889452, -0.3277256, -0.42792717, 0.32491356, -0.39113912, 0.16600312, -0.3097514, 0.27907088, -0.22553465, 0.048548058, -0.08310438), target2);\n\t\t\ttarget2 = MulAdd(src[i][j], MF3x4(0.03992136, 0.17895368, 0.16562924, -0.536188, -0.25868654, -0.4869832, 0.2591772, -0.5191932, 0.020162001, -0.41568524, 0.4776641, 0.019298514), target2);\n\t\t\ttarget2 = MulAdd(src[i][j + 1], MF3x4(0.14911795, -0.5984171, -0.18241958, 0.5472136, -0.69194865, 0.033839397, 0.13408412, 0.09503547, -0.21318413, 0.53743845, 0.080091774, -0.1369053), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j - 1], MF3x4(-0.038978565, 0.40742934, 0.20107205, -0.3550106, 0.227634, -0.16101603, -0.45037574, 0.23192371, 0.17923234, -0.13692904, 0.10395048, 0.3124129), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j], MF3x4(-0.059144646, -0.22531863, -0.024704054, -0.20749553, 0.58086175, -0.32206532, -0.5130457, -0.14057957, 0.24317528, 0.088735096, -0.44098017, -0.16980846), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j + 1], MF3x4(-0.30321437, 0.17502202, 0.1910563, -0.10118702, 0.1465326, 0.3852395, -0.31210947, 0.18236226, -0.23306467, -0.28551704, -0.2982589, 0.072740674), target2);\n\n\t\t\ttex1[destPos] = target1;\n\t\t\ttex2[destPos] = target2;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x16\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.045150407, -0.034128085, 0.10230384, 0.074793644 };\n\ttarget1 = MulAdd(a1, MF4x4(0.20989326, 0.020975577, -0.005522964, -0.10013134, 0.013517254, -0.03347422, 0.40903455, 0.013940953, 0.01066957, 0.2569982, -0.018764338, -0.37931216, -0.20921241, -0.3565134, 0.1776639, 0.081515394), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.2555968, -0.05024504, 0.046776827, 0.38626888, -0.21787676, 0.0013136056, -0.13391882, 0.00022813173, -0.042842478, -0.10413157, -0.008385445, -0.11843704, 0.062092766, -0.40029097, 0.31873867, -0.19030346), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.19435422, -0.56006145, 0.050693467, -0.8857939, -0.0677575, -0.30498, 0.012069988, 0.026757652, -0.16890685, 0.04575225, -0.08477036, -0.018015383, 0.0002810964, 0.0772843, 0.00017034424, -0.228497), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.092564344, 0.061863884, -0.13135873, 0.10290956, 0.1670116, -0.08312144, -0.020718448, 0.06729496, -0.06338295, -0.09972319, 0.18505506, -0.2622095, 0.045575716, 0.12836345, -0.22356766, 0.28924033), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.23605964, 0.46831363, 0.21037713, 0.3901851, -0.122640595, -0.29213053, 0.14194407, -0.3353137, 0.07847812, 0.3094049, -0.050705243, -0.23498294, 0.24583417, 0.3703223, 0.1121086, 0.20645288), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.08616125, -0.13809866, 0.27488732, 0.19573413, -0.20682202, 0.01106275, -0.018731792, 0.048580807, -0.097444884, -0.03766069, -0.12636039, 0.3133589, -0.12802023, 0.1988174, 0.19551867, -0.2720954), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.03484159, 0.05830728, 0.028816089, 0.27173883, 0.15579484, -0.07751753, -0.033748254, 0.22559631, -0.35857964, 0.1043378, 0.5031367, 0.031042032, 0.071555324, -0.24148308, -0.24156207, 0.104249395), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.04002337, -0.17350379, -0.1802324, -0.23008482, 0.2917599, 0.1801853, 0.041955303, 0.015545025, 0.069034904, 0.19370675, 0.097300164, 0.11832116, -0.23043779, 0.33832225, -0.029885143, -0.022836795), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.040476788, 0.3176767, -0.2372066, 0.24106048, 0.28147677, -0.06513699, -0.22784042, -0.46840426, -0.23415963, -0.067057185, -0.013863767, 0.30710638, 0.06337683, -0.1774192, 0.05082387, -0.02581459), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.13767451, 0.26832962, 0.018361554, 0.2665501, -0.22070843, 0.10799693, 0.09780551, 0.042999722, 0.3302224, 0.10916339, -0.22705203, 0.040675506, -0.049211837, 0.19487813, 0.051528033, 0.20227027), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.1279485, 0.14895418, 0.40570346, -0.008809808, 0.09898892, 0.035774715, -0.28405192, 0.26836014, -0.096799396, -0.12336552, -0.24413097, 0.12693845, 0.12410443, 0.27200332, -0.18279982, -0.032115027), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.14698029, -0.31720948, 0.24974433, 0.14444488, 0.09503049, -0.02618792, 0.15163966, 0.22923012, -0.004227005, -0.2564904, -0.06648419, -0.07868524, -0.14852846, -0.3513046, -0.1374295, -0.09808154), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.1275583, 0.1875862, -0.15939887, -0.1029876, -0.25886494, -0.07434281, -0.018779758, -0.008408217, 0.06420735, 0.0025367932, 0.073679835, 0.1369152, -0.2256255, 0.26216295, -0.052095387, 0.04673847), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.1147465, 0.14129257, -0.036377613, 0.041968875, 0.031286925, -0.00013609273, -0.248227, 0.10412182, -0.00039004904, 0.01673792, 0.056068443, -0.16470632, -0.042392768, 0.23993582, -0.22915693, 0.36430097), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.23650797, 0.12200628, 0.057768486, 0.23353462, 0.04389849, -0.11567954, -0.12633252, -0.1884369, -0.10636852, -0.115114085, -0.0022040834, 0.041720822, 0.20775628, -0.1127031, -0.060805347, -0.10988217), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.0401325, -0.271267, -0.3003843, 0.010670003, -0.12597936, -0.059235968, 0.08256807, -0.22041298, 0.14655456, 0.07416407, -0.03940599, -0.25057787, -0.043001004, 0.2124355, 0.19165096, 0.077120975), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.01693656, -0.057261657, -0.13366276, -0.15589137, -0.07157646, -0.12266521, 0.24651442, -0.079142615, -0.113005005, -0.15769142, -0.017285366, 0.08821278, 0.28891653, 0.06013908, 0.0038421913, 0.106700204), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.16187043, -0.059908718, -0.050456535, -0.027998367, 0.12749411, -0.07558445, 0.05249467, 0.02001542, 0.03188715, 0.056223337, 0.06117334, 0.022764465, 0.1051409, 0.0011876151, -0.07030176, -0.015487096), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.047084607, 0.06401777, 0.15585798, 0.16639893, 0.025441, -0.020858578, -0.07795479, -0.0045188745, -0.09186016, -0.16865493, 0.02187216, 0.02241868, 0.3175809, 0.25483596, 0.046578035, -0.09617824), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.08622112, 0.124111585, -0.15246506, -0.072898194, 0.26907462, -0.15550381, 0.036907334, -0.16388376, -0.10869113, 0.113909826, -0.118678264, 0.013610441, -0.1307433, 0.044969033, -0.053201765, -0.058903012), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.036120024, -0.011461657, -0.10083318, -0.334466, 0.016460553, 0.1781498, 0.15133101, -0.0010224655, 0.10511601, 0.12667589, 0.15001541, 0.14479756, -0.046095166, -0.15012313, -0.009395591, 0.019260757), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.04500625, -0.037348565, -0.10475762, 0.113254204, -0.17360263, -0.18522957, 0.014305901, 0.07039716, -0.11408359, 0.057783633, -0.028000865, -0.25506407, -0.058175903, 0.0040344223, 0.11234911, -0.07254186), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.05607878, -0.07737156, 0.01586671, -0.21907675, 0.1729392, -0.09273287, 0.14671144, 0.21306099, -0.1374591, -0.09428349, 0.28138107, 0.08421483, -0.30330884, -0.039166123, -0.18316704, -0.27840406), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.15336679, -0.05767407, 0.13347702, 0.10092905, 0.09895612, -0.0839073, -0.16025528, -0.087642424, -0.101612955, 0.4119443, 0.031125817, -0.110090934, 0.056127027, -0.04000313, -0.042920932, 0.08100733), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.113653034, -0.10163741, -0.058498476, -0.12347642, -0.20110545, -0.006300695, -0.1328342, -0.0071486877, 0.18334186, 0.15882389, -0.120586954, -0.04277906, -0.13593355, 0.11897087, 0.030404912, -0.23374279), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.044901595, -0.00010039519, -0.14989527, 0.025639903, 0.23985633, 0.0114784185, 0.056620862, -0.0599113, 0.017398749, 0.3567445, 0.10223932, -0.12609181, 0.0074833618, -0.16702464, -0.033638544, 0.062087793), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.0302778, -0.009963125, 0.29761076, 0.08238972, 0.26467612, -0.19331805, -0.09930472, 0.23798122, 0.03599952, 0.24224155, 0.3041322, -0.054690234, 0.05582198, 0.0012778769, 0.041249134, -0.014496484), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.033623356, -0.18683043, -0.48352727, -0.09534184, 0.16657802, -0.31149274, -0.25840783, -0.16902964, -0.40347067, 0.046952717, 0.15677738, -0.14079048, 0.0444492, -0.012346084, -0.16768047, -0.07540055), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.2678487, 0.113161474, -0.19962314, 0.23060325, -0.28154588, -0.06956369, 0.08050926, -0.25503877, 0.12565655, 0.5497286, -0.18335307, -0.044097837, 0.058234677, 0.049816858, -0.021038791, 0.14644346), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.008438418, 0.080761805, 0.06993718, 0.08508105, 0.11905285, 0.016726421, -0.16668561, 0.026911844, 0.041182615, 0.2760306, 0.18553418, 0.25386074, 0.11789433, 0.094213605, 0.15487063, 0.15375367), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.10329284, 0.16198465, -0.0681889, -0.006294233, 0.4592297, -0.12816279, 0.19529971, 0.109294996, 0.043646853, 0.084326275, 0.0635968, -0.11471805, 0.44923568, -0.01125437, -0.19251052, -0.08885202), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.108986676, 0.40908077, -0.31152573, -0.13468693, -0.10438951, -0.086357035, 0.13880713, -0.288345, 0.17497768, -0.08021166, 0.07815909, 0.17337689, 0.02700953, -0.016387407, 0.0053377734, 0.109923586), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.13881513, -0.21179448, -0.104762904, 0.019093828, -0.3383386, 0.14453639, -0.28122503, 0.19449967, -0.035691183, 0.21306588, -0.046144057, 0.17898172, -0.0035024916, -0.054061864, -0.03985455, 0.3264588), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.02336507, 0.20597245, 0.03627631, 0.04278966, -0.042182084, -0.26431814, 0.122881256, 0.34909293, -0.17958918, 0.050698034, 0.336547, 0.21614759, 0.19511287, -0.20311548, -0.13249207, -0.24043573), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.025547924, 0.020525696, 0.375233, -0.02528368, -0.044973124, 0.13667387, -0.08506365, 0.34317508, 0.14618309, 0.108213425, 0.15557359, -0.05340479, -0.27103037, 0.12428249, -0.085362, -0.009073445), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.09518274, 0.036228243, -0.2145168, 0.090918355, -0.20793489, 0.19843313, 0.06701371, -0.11499378, -0.033398125, -0.020169621, 0.057314273, 0.0027613493, -0.11993404, 0.12495525, -0.0151242195, 0.1896457), target1);\n\n\tMF4 target2 = { 0.0031252617, 0.028414045, -0.018389644, 0.011216021 };\n\ttarget2 = MulAdd(a1, MF4x4(0.10541986, -0.27021417, 0.30589217, -0.06793019, 0.0712113, -0.5818028, -0.09057832, 0.009519015, -0.07754299, 0.009050975, -0.08283811, -0.078837596, -0.008200866, 0.53291875, 0.22918138, 0.09433025), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.35867104, 0.17056245, 0.28573632, 0.45787787, 0.054377224, 0.30656826, -0.13864343, 0.13956884, -0.052365527, -0.17660435, -0.14363506, -0.11313267, -0.15472592, -0.011637987, 0.3057005, 0.40122506), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.42738816, -0.13046122, -0.4223082, 0.32663476, -0.14648326, 0.056164477, 0.09366789, -0.046335716, 0.00401621, -0.008206323, -0.075975314, 0.046879925, 0.04891574, 0.08912198, 0.32541895, 0.014354832), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.105501, -0.06999185, -0.023181506, 0.13587391, -0.10643463, 0.061667755, 0.24508677, 0.33984032, -0.1698376, -0.05051473, -0.29430416, -0.06635265, -0.031917162, 0.046488285, 0.17973569, -0.025048103), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.07685088, -0.035609607, 0.07060013, -0.19892506, 0.17084605, -0.19758354, -0.29233304, -0.19821644, -0.047398012, 0.12004138, 0.1643941, 0.043807004, 0.2513805, 0.13687916, 0.23235638, 0.00979058), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.2601253, -0.0010056786, -0.46147683, -0.117661044, -0.042538162, -0.012710203, -0.034079336, -0.08661733, -0.03908205, 0.104053, -0.045735247, -0.07916684, -0.021913078, -0.0035067864, -0.10581172, 0.1149), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.0421786, 0.0099540735, -0.020447837, -0.27269018, -0.084229656, 0.04271779, 0.036794372, -0.18072419, 0.07743771, -0.109369494, -0.07608079, 0.2973058, -0.1602913, -0.10049883, 0.033048846, -0.3780618), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.38231418, 0.106174126, 0.07344471, -0.1979349, 0.093251124, -0.07658309, 0.08417288, 0.2981472, -0.047867708, 0.0097399205, -0.11213339, 0.1746439, 0.10045314, -0.030283177, 0.004107288, -0.16744147), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.43939134, 0.14499938, 0.20161533, -0.0067911143, 0.098075844, 0.22099596, 0.099283025, -0.017734041, 0.112658866, -0.12010951, -0.13342896, 0.053806942, 0.017880073, 0.028821323, 0.0082069365, -0.053472634), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.2429229, 0.012143042, -0.029962441, 0.017843649, 0.11972611, -0.07733264, -0.37523645, -0.19887479, -0.18222691, -0.31171882, -0.20578085, 0.040127717, 0.0842879, 0.12601142, -0.07302166, -0.033017557), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.09666541, -0.053779975, -0.045221806, -0.06923458, -0.046158988, -0.12819108, -0.32956856, -0.15813568, 0.12464106, -0.42395857, 0.078095086, -0.12961964, -0.15057011, -0.041440632, 0.04221429, 0.08509352), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.2505401, 0.023106987, -0.0001688444, -0.11545978, 0.044663083, -0.011316191, -0.024175104, 0.033631656, -0.13285598, -0.026969459, 0.02669494, 0.082885765, -0.036615327, 0.06434473, -0.059197906, -0.110084), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.12549014, 0.25078717, -0.06146062, 0.1406611, 0.13844866, 0.012716272, 0.07641059, 0.04245357, -0.09028008, -0.15924782, -0.14551707, -0.09782215, 0.05188703, -0.12323306, -0.20053494, -0.20062317), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.26341316, -0.16508758, 0.036919586, -0.17812039, -0.3016191, 0.06403582, 0.12948476, 0.110633194, 0.14551535, -0.09222706, -0.30942333, 0.20120445, 0.059902433, -0.17293817, -0.07280857, -0.36021966), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.11032128, -0.024297172, -0.110301405, -0.09563319, -0.23266938, -0.009982061, 0.18834652, 0.0987435, -0.13652846, -0.025019212, 0.07672643, 0.017108513, -0.043844085, 0.02440773, -0.029404791, 0.034692347), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.048525557, -0.043118346, 0.12048513, 0.030609682, 0.16658829, 0.19444555, 0.113910906, 0.31148425, -0.1755198, -0.038910154, 0.084356636, 0.12969102, 0.01661835, 0.28915378, -0.032290917, -0.12997934), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.24347968, 0.032619976, 0.16692804, -0.046297006, 0.0901479, 0.060802385, 0.21347383, 0.29304698, 0.16361152, 0.19639444, 0.0054137907, 0.049575172, 0.20710163, 0.076565325, 0.34911337, 0.35831028), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.092651226, 0.045491215, 0.11757575, 0.11756375, -0.27768722, 0.010231745, 0.21116765, 0.024840422, 0.0051228474, -0.04532887, -0.013311027, 0.121157385, -0.1053527, -0.00010417442, -0.035180032, 0.2051271), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.055320628, 0.14249797, -0.13782813, -0.05412119, -0.043079898, -0.18216185, 0.13923723, -0.11468015, -0.09394785, 0.12044827, -0.05177875, 0.1349153, -0.03233552, 0.16400962, -0.11219184, 0.09460802), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.018258873, -0.23629102, -0.140925, 0.10609654, 0.024990926, -0.31095183, 0.21505022, 0.0007466126, -0.062110204, 0.24764718, 0.0018352414, 0.03383791, -0.05727847, -0.006963949, -0.23087887, -0.2521535), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.08928898, 0.21107556, 0.27720314, 0.3170095, 0.1569246, -0.07950364, -0.035353288, 0.0851358, 0.034223706, -0.1124521, 0.068468235, -0.1876728, -0.09508409, -0.03837469, -0.19909252, 0.09844746), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.04326774, -0.063746035, 0.13767312, 0.048762802, 0.14155331, -0.21800575, -0.22868122, -0.10928361, 0.15166105, 0.086240664, 0.110339195, -0.0039928076, 0.114750795, 0.19737157, -0.09005264, -0.10637459), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.023298614, 0.07140441, 0.029475417, -0.14667986, -0.017949682, 0.007795148, -0.044714145, -0.13990426, 0.03870307, -0.067750655, -0.11831945, -0.14363948, 0.00049597165, -0.18959905, -0.20256434, 0.0409640), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.18983524, 0.07018097, 0.015068278, -0.17990883, -0.12528846, -0.020557154, 0.0106482245, 0.08105856, 0.02577546, -0.25885943, 0.0061467723, -0.058998212, 0.045207195, 0.019213859, -0.021913687, -0.10641617), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.005021213, -0.030781588, -0.08722711, 0.045172613, 0.13006134, 0.03640675, -0.18160394, 0.10903534, 0.1283007, 0.053212877, 0.15160874, -0.30678773, 0.0611477, 0.060609598, -0.21533446, 0.2817914), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.06942382, -0.08785516, -0.018080644, 0.12124481, -0.0988795, 0.021093542, 0.015752183, 0.057520576, -0.1873821, -0.15041956, 0.12230656, -0.23798561, -0.16819417, 0.07222907, -0.01441512, 0.06420038), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.0350732, -0.054145966, 0.008372502, -0.16092199, -0.0671371, 0.057495046, -0.08276416, 0.34617814, 0.11239629, -0.19681981, 0.16116115, 0.046944335, 0.09723501, -0.12488112, -0.031532682, 0.013095191), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.2309171, 0.10420613, -0.12122516, -0.04000454, -0.20740104, -0.010152015, 0.26092738, 0.13527256, 0.08665683, -0.18393658, -0.030344693, -0.10654187, 0.07108977, -0.28212613, 0.024101965, -0.22189055), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.06602971, 0.050674047, 0.33251405, -0.07886978, -0.13822217, -0.014285523, 0.22478761, 0.22517748, -0.1175651, 0.11234997, -0.17835312, 0.010875831, 0.20007257, 0.21565825, 0.30876723, -0.029953295), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.3083618, 0.12779777, 0.112711206, 0.001815444, -0.123584166, 0.03232661, -0.060439207, -0.13411477, 0.30604517, -0.19359338, -0.115064435, -0.03826723, 0.16092177, -0.07926006, -0.27355558, 0.077829085), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.020265967, -0.27894706, -0.105033666, -0.10975655, 0.20102961, 0.024541473, 0.21834314, -0.21726306, -0.01132585, -0.16459125, 0.21980706, 0.039996378, -0.15850788, 0.16646145, 0.10387183, -0.35103965), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.038195442, 0.02967505, -0.22234862, -0.040221542, 0.06056814, 0.14282827, -0.26034078, 0.32477978, -0.45779508, -0.3667849, 0.22392158, 0.09866475, -0.096611015, 0.12282537, 0.080877006, -0.038721707), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.12205649, 0.052729234, 0.09086409, 0.13457046, -0.24082763, -0.008418334, -0.24735104, 0.13281673, 0.049058694, 0.046168383, -0.049963474, 0.09272115, 0.12703685, 0.020337742, -0.20470645, -0.07379872), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.02244616, 0.058318693, -0.05570221, -0.02717316, 0.14189804, -0.0016504574, 0.018723257, -0.05787106, 0.055331856, 0.0030448188, 0.01664426, 0.080254346, -0.15860988, -0.10147442, 0.115529425, -0.12332509), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.16019078, -0.20631735, -0.018190302, 0.0647328, -0.04840569, 0.083106056, -0.13247506, -0.2112572, -0.10423932, -0.12388437, 0.1951962, 0.15236832, -0.075027406, -0.12183809, -0.07161853, -0.24558437), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.06832158, 0.06699966, -0.17887384, 0.025053928, 0.22054252, -0.03332688, -0.089027286, -0.0743864, -0.019737093, 0.1890527, 0.3194981, -0.014847898, 0.0616053, -0.046331815, -0.013838972, -0.19598661), target2);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x16\n//!IN tex3, tex4\n//!OUT tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.16255508, -0.041602854, 0.09628627, 0.12747966 };\n\ttarget1 = MulAdd(a1, MF4x4(0.1156422, 0.13656664, 0.23103227, -0.09881847, -0.13118152, 0.063764885, -0.1902535, 0.12580052, -0.057555363, 0.0015611092, 0.009383415, 0.0028447553, -0.12577637, 0.06707094, 0.05323591, 0.087465174), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.023715734, 0.15901619, 0.010465818, -0.05401794, 0.12822664, -0.079860024, -0.107430205, -0.09094713, 0.11440009, -0.069189526, 0.1377121, -0.02780827, -0.2594948, -0.008447683, -0.052618783, 0.0995311), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.014655754, 0.0976315, -0.10425098, 0.06731683, -0.07336922, -0.09931748, -0.074338034, 0.014602733, 0.0761052, -0.14147633, 0.057346404, -0.10485628, 0.008160006, -0.14553718, -0.14069714, -0.106754564), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.18000032, 0.2654082, 0.07008131, -0.21326934, -0.11475177, 0.110427424, -0.09757059, -0.068473235, 0.14004572, -0.1257574, -0.18653339, -0.0546973, -0.04573617, 0.0062926346, -0.111400455, 0.20940857), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.018083753, 0.2091146, -0.12149297, -0.20310159, 0.19642518, 0.008668434, 0.30470127, 0.080623224, -0.04213514, 0.114459425, -0.20325947, 0.024065504, 0.4724302, -0.12169043, 0.22899939, 0.16189654), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.22153069, -0.13286535, 0.21529129, 0.059222966, -0.010648649, -0.07542803, 0.12650701, 0.107978106, -0.0122471545, -0.12456761, -0.05047403, 0.052241012, -0.18476847, 0.023691572, 0.16347644, -0.10157776), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.053245157, 0.23913434, -0.06288426, -0.15678102, -0.09103809, -0.070054255, -0.021768395, 0.012513, 0.105658144, -0.2088671, -0.03485171, -0.07802848, -0.08754643, 0.0675039, -0.10190519, 0.03442446), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.028817, 0.11284706, 0.13998732, -0.015143216, -0.03416565, 0.09102063, 0.11161235, 0.08467392, 0.16325544, 0.14942992, -0.12313727, -0.06640328, -0.0750008, -0.018136598, -0.23112826, -0.006661416), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.017297093, 0.07989559, 0.13549612, 0.07035857, -0.25493076, 0.061273754, 0.052633338, 0.0782014, -0.17994808, -0.14367908, 0.098241016, -0.07993234, -0.010386358, -0.102339104, 0.023344131, -0.08682215), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.36794287, -0.048137277, -0.3692417, 0.07832, -0.023172008, 0.02877666, -0.23517531, 0.1448923, 0.09313475, -0.27063283, 0.028388552, 0.17988816, 0.1006075, 0.028261969, -0.10012888, -0.10348935), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.06629671, 0.35957095, -0.21791938, -0.12429962, 0.054654542, 0.05988639, -0.32374984, 0.009501225, -0.26171863, 0.042992886, 0.29698196, 0.08521328, 0.15199377, 0.16362138, -0.18785295, -0.049852755), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.15766738, -0.04841046, 0.14447841, 0.17353393, -0.008089345, 0.04590437, -0.043384884, 0.002877719, 0.08845935, 0.039423246, -0.14808795, -0.03975318, 0.2653877, -0.20700884, 0.07218189, -0.10878484), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.11222389, 0.2779044, 0.0847275, -0.16267867, 0.17030342, 0.05503266, -0.22644295, -0.23563059, 0.41185054, -0.43625602, -0.18901125, 0.6115694, -0.084791176, -0.01684559, 0.19077617, -0.07168747), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.015268929, -0.14208716, 0.15536898, -0.11922906, -0.021667667, -0.078210905, 0.023766499, -0.18069603, -0.06938558, -0.023576038, -0.2990819, 0.11863158, -0.05013765, 0.061508566, -0.085189775, 0.07901883), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.13318339, 0.29247984, 0.14075997, 0.08248716, 0.3436642, -0.099461004, -0.17356718, -0.029998098, 0.11614284, 0.20115575, 0.04850254, -0.109567694, -0.090151444, 0.06976889, 0.12614332, 0.097242), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.102283016, 0.2969136, -0.059127506, 0.06053867, 0.102346785, 0.061365493, -0.09023823, -0.14396398, 0.04298546, -0.10845686, -0.16071963, 0.05240062, 0.00294458, 0.01617549, 0.30480185, -0.0020818028), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.022530032, -0.04770017, 0.16849731, 0.2684958, -0.20493472, 0.26375678, -0.08210537, 0.11594341, 0.12630959, -0.33804628, -0.066290505, -0.21235433, -0.11481554, 0.045285236, 0.009036264, -0.009541344), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.22221607, 0.19683546, 0.088301376, 0.07007941, 0.42560205, -0.2515224, 0.10263357, 0.17257528, -0.025208276, 0.09696816, 0.07462843, -0.1663459, 0.14332424, -0.04554422, 0.1857485, 0.19819035), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.33422568, 0.22908518, -0.052035328, 0.0022050992, 0.22068155, -0.31737608, 0.11867548, -0.1062603, 0.21229419, 0.0637268, 0.06284452, 0.075321406, -0.0017977909, -0.24026957, 0.08011851, -0.016301792), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.18647133, -0.042395514, -0.21644959, 0.020428998, -0.19073069, 0.037881456, 0.15364948, 0.13242447, -0.30524725, 0.056054097, -0.03914103, 0.030670341, -0.0010289366, -0.03421297, 0.34305614, 0.078916825), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.061559163, 0.33350998, -0.040633813, -0.1973531, -0.17371178, 0.020277103, -0.024941592, 0.06309346, 0.10086231, -0.07366512, 0.16570221, 0.20248237, -0.23286462, 0.2155677, 0.15136743, 0.05190251), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.089644894, 0.13512145, -0.09810823, 0.1616594, 0.16190928, -0.35417703, -0.05601066, 0.20318456, 0.17348176, 0.074274324, 0.029394915, 0.15095772, 0.12337869, 0.029932164, 0.04123706, -0.049648866), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.46952993, 0.14834478, -0.11927866, 0.07611556, -0.2967575, -0.030506441, -0.1524667, -0.16106017, -0.38649827, 0.18501776, 0.07677004, -0.0828538, -0.43983704, -0.15083657, -0.118309684, 0.13656397), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.04939808, 0.53252345, 0.12711428, -0.38512766, -0.20486577, 0.031688303, -0.18231112, -0.019054607, -0.034855623, -0.05244254, -0.1425771, 0.0892418, 0.046889585, 0.1430025, -0.12742822, 0.092776656), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.105744444, -0.10247078, -0.02144931, -0.09396661, -0.03536793, -0.027341979, -0.103435315, 0.12214116, -0.13862023, 0.037751865, 0.40586975, 0.023863355, -0.12592442, -0.0762698, 0.008515978, 0.1552095), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.018858416, 0.053681094, 0.16911085, -0.29219922, -0.182029, 0.02297272, -0.30588147, -0.18948974, -0.05744442, 0.0065371646, 0.16328862, -0.051437955, 0.13113242, -0.07573973, -0.047258016, 0.0882382), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.021155104, 0.07440132, -0.06681412, -0.20775446, 0.053573515, 0.007910367, -0.26769453, -0.15753269, 0.24886242, -0.004493456, 0.023437606, 0.13257046, 0.104298666, 0.14052817, -0.29093856, 0.006735399), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.1299053, 0.21084401, 0.07395335, 0.025556391, -0.012464804, 0.090624444, -0.1041891, 0.03487812, -0.012958428, -0.22729388, 0.06259986, -0.1693054, -0.12679845, -0.15950051, -0.13191415, 0.1125045), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.1916771, -0.02030791, -0.2001191, 0.01943065, -0.18369348, -0.054252382, -0.11485618, -0.16434757, 0.0587951, 0.15208498, -0.1752913, 0.03718008, -0.07597363, -0.21144252, -0.049415894, -0.010295923), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.044603452, 0.019383559, -0.24661145, -0.12994917, 0.12697428, -0.13032277, -0.15293793, -0.03483303, -0.104321085, 0.04012559, 0.037243072, 0.079595305, -0.12313407, 0.118987724, 0.038709577, 0.09531991), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.021859067, 0.009060085, 0.19879933, 0.21082644, -0.07705756, 0.10045584, -0.075999945, 0.15191688, -0.12042984, -0.11578441, 0.29679164, -0.23787339, 0.1087794, -0.1419117, -0.22779143, 0.12054577), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.16636065, 0.21066229, -0.06262401, 0.051833395, 0.05992027, 0.014294402, -0.13363211, -0.11139326, -0.026526988, -0.2071816, -0.03000262, -0.08924753, 0.0979992, -0.08312352, -0.016549548, -0.034920745), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.099836424, -0.19452114, 0.07249264, -0.025459828, 0.12210845, -0.15024027, -0.06490785, -0.080187015, -0.009426102, 0.15876383, -0.19070506, 0.12257102, 0.04862195, 0.0707773, -0.24345201, -0.103591055), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.039747223, 0.07834283, 0.13246708, -0.021774938, -0.05476214, 0.07021812, 0.0134778535, 0.003289531, 0.11907656, 0.04191671, 0.04860092, -0.041503876, -0.040156245, -0.21329322, 0.2024782, 0.067827046), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.036722995, 0.12776081, 0.14014143, 0.09107308, 0.18742307, -0.099873625, -0.13149267, -0.18590397, -0.067778006, 0.16363877, -0.007999648, 0.13500053, 0.23733437, 0.16123019, 0.23561893, 0.0365712), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.023911275, -0.03754323, 0.17444386, 0.08616114, 0.21406639, -0.15029684, 0.09355591, -0.2486941, 0.11913366, -0.16174106, -0.10907662, 0.107935205, -0.20745984, -0.06180981, -0.019558005, -0.24215329), target1);\n\n\tMF4 target2 = { -0.07366732, -0.06278686, 0.11547288, -0.04786791 };\n\ttarget2 = MulAdd(a1, MF4x4(0.14002717, 0.058876935, 0.20110254, 0.08939276, 0.03416418, 0.0011943586, 0.042772148, -0.00071322336, -0.115944035, 0.04220234, -0.34941152, -0.01974448, -0.0860279, 0.062355816, -0.023853427, 0.02757322), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.07400734, 0.19251242, 0.22637455, -0.12530822, -0.17724502, -0.022523593, -0.15113536, 0.065425, 0.101782374, -0.014717139, -0.098752305, 0.080687046, -0.1023507, 0.019614108, 0.01754361, 0.017383952), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.044900224, -0.04213899, 0.0073328684, 0.16705592, -0.051043745, -0.115500204, -0.07567362, 0.07818187, 0.26050508, 0.20679274, 0.04177571, 0.059024576, -0.12510507, -0.051585447, -0.007354538, 0.041514263), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.19596866, -0.085393354, 0.03522195, 0.070734546, -0.10047298, 0.033123884, -0.030003218, -0.060309574, 0.11121212, 0.038920198, -0.09097313, 0.020515997, 0.082481235, 0.08472773, -0.007372676, 0.020294813), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.08415041, -0.2041298, -0.0834695, -0.18762465, 0.26823425, -0.029255247, 0.21203867, 0.01842292, 0.17127061, -0.14378369, 0.18486983, 0.040807612, 0.053938765, -0.0033184371, 0.021192972, -0.28285155), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.071444504, -0.16073905, 0.03151272, 0.31961456, -0.09696413, -0.14652419, 0.012872177, 0.036853626, 0.055909842, 0.023814479, 0.12539348, 0.40904784, 0.065472044, -0.04875745, -0.012401859, 0.055437304), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.020927057, -0.23479983, -0.073076054, -0.019441728, 0.08953939, 0.00085565075, 0.061437223, -0.0912304, 0.088546015, -0.009464413, -0.21220255, -0.13741408, 0.049379412, -0.059064344, 0.019205336, -0.11340151), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.091714375, -0.17525947, 0.10243093, 0.037679292, 0.062438603, -0.05920895, -0.041936304, -0.030830177, 0.15641114, -0.13261372, -0.021079037, -0.036029477, 0.051840104, 0.07784452, 0.024798041, -0.079719625), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.09153048, 0.09966556, -0.10249195, 0.062159285, -0.041912418, -0.22329834, 0.06683857, -0.07287391, -0.1276734, -0.108105786, -0.076660454, -0.07083524, 0.115786545, 0.043516885, 0.032041304, 0.058955755), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.13925591, 0.18807505, 0.19418481, 0.13057134, -0.18483852, 0.07704087, -0.25748852, -0.008577424, 0.0165214, 0.03893396, 0.081021786, -0.19419926, 0.21641012, 0.047428373, -0.08350786, -0.14157358), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.06301399, -0.10051874, 0.050919298, -0.011019032, -0.09310829, -0.09138247, -0.16847654, 0.059362046, 0.09107295, 0.06165534, -0.14288484, -0.09833287, 0.116363674, 0.20607105, 0.28841344, -0.09095499), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.21624683, -0.01876206, 0.008987255, 0.17512046, -0.07461909, 0.124108806, -0.054439757, 0.0063252384, -0.24328436, 0.12330878, -0.09306248, -0.046553027, 0.07773235, 0.08965016, 0.0025699693, 0.06252218), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.17797774, -0.0768457, -0.06500614, 0.010914941, 0.052788664, 0.10169022, -0.11962388, -0.10176263, -0.52695477, 0.10339165, 0.12893896, 0.016989866, -0.070845306, 0.011061218, -0.033032518, 0.13843493), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.4498575, 0.3626344, -0.18857695, 0.12901132, 0.050753895, 0.03323978, -0.15807427, 0.050633483, -0.35924155, 0.13558777, 0.07132256, -0.20883714, 0.23128356, 0.2943383, 0.011521201, -0.21517687), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.007034323, -0.08821435, -0.1275898, -0.15626103, 0.1458542, 0.26724494, -0.118883595, -0.0062981425, 0.07331739, -0.061295208, -0.008509335, -0.012484612, -0.010828551, -0.11301564, -0.078878716, -0.07692456), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.17712432, 0.020956295, 0.118008055, 0.09609794, 0.22146885, 0.20994097, -0.11431106, -0.10710715, -0.15350081, 0.118692145, -0.028190786, 0.021440385, 0.053412, -0.06350743, -0.03998433, 0.061913643), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.07220576, 0.21927893, 0.029267995, 0.107059665, 0.114823125, -0.115261756, -0.18801664, 0.04473252, -0.055653024, 0.11297751, 0.15545851, -0.012991604, 0.1803409, 0.1982345, -0.07486266, -0.09845943), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.0855076, 0.014239223, 0.15630183, 0.21274531, -0.24398185, -0.039692834, -0.167163, 0.09103569, 0.029505143, 0.0986762, 0.015726546, 0.015572646, 0.16977786, -0.08617271, 0.13340445, -0.14292516), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.07120758, -0.1391182, -0.12895927, -0.05497231, 0.017502422, 0.21387358, 0.11369438, -0.09802215, 0.23512627, -0.18750496, 0.3741736, 0.07218814, 0.050294157, -0.03545248, 0.1803603, -0.05216715), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.031216163, 0.26304567, -0.22097221, 0.0057130447, 0.05476227, 0.048769098, 0.11701435, -0.08043882, 0.121324, -0.07633719, 0.019091062, 0.1056272, 0.19340484, -0.11655276, -0.06859909, -0.20875669), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.1303287, 0.23683752, -0.14536002, -0.12238158, -0.024545986, -0.09032069, 0.03192402, -0.22449107, 0.2297885, 0.02040227, 0.00034511733, -0.0878228, 0.184152, -0.070972465, -0.010276752, -0.1974931), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.345411, -0.088238314, -0.020721637, -0.19773935, -0.08967216, 0.11257784, 0.11590796, 0.047473334, 0.20315827, 0.08028863, -0.053076692, 0.04220213, 0.0463197, -0.11993164, 0.17273119, -0.10105775), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.01774352, -0.029116748, -0.070671946, 0.03868912, -0.23905252, 0.122819565, -0.13782008, -0.11386684, -0.15104173, 0.06922476, -0.40653947, -0.041311335, 0.03382718, 0.17504995, 0.19865142, 0.20958701), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.019477593, -0.13480781, -0.15261935, -0.29111782, -0.009433358, 0.07510615, -0.07673836, -0.092863046, -0.15928364, -0.18979515, 0.23357031, -0.096665405, 0.017931713, 0.15517262, -0.045679327, -0.13043073), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.009786184, 0.23618346, 0.08964326, -0.07550377, -0.21214269, 0.008612741, 0.012998613, 0.08797401, 0.16580902, 0.018369747, 0.31754863, 0.094271086, -0.3186572, 0.013351233, -0.04407326, 0.0920314), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.025626086, 0.09697167, -0.013395247, -0.080764554, -0.19025484, 0.25081167, -0.008351234, 0.009649054, -0.045282297, 0.02762338, 0.09182815, -0.015618593, -0.24248622, -0.0027028685, -0.026439957, 0.06903493), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.15144084, 0.09893225, 0.18078536, -0.40492618, 0.006812688, 0.20841157, -0.052535042, -0.03471349, 0.07722477, 0.18913163, 0.06806257, 0.13268931, -0.23726766, -0.06573527, -0.07974115, 0.00016083609), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.22123417, 0.043395992, -0.075050056, 0.040263254, 0.05219495, -0.10119571, 0.06624045, 0.006088249, -0.02443482, 0.22211014, 0.11706287, 0.09821594, -0.26269525, -0.045644283, 0.1594094, 0.05119857), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.1359838, 0.085772105, -0.14989698, 0.22662053, -0.13730896, 0.13598563, -0.22069088, -0.049138095, -0.11819638, 0.00615722, 0.22080155, -0.18276499, 0.13765272, 0.026108319, -0.16875726, -0.04851573), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.23633143, -0.04675013, 0.13207665, 0.17955893, -0.057579413, -0.007248268, -0.11771674, 0.053317282, 0.06935881, -0.07843104, -0.051989514, -0.101527795, 0.030873962, 0.05374762, 0.15865721, -0.11873757), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.17574823, 0.116152145, 0.038584445, 0.06896235, 0.045519844, -0.003343947, -0.18241419, -0.0559283, 0.1285456, -0.06100108, 0.072168864, 0.2383614, 0.06786445, -0.110831186, 0.0017635048, -0.11216164), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.22214325, -0.16752025, 0.39590892, 0.0366774, -0.09062008, 0.04298391, -0.2098661, -0.007913526, 0.27807632, -0.0072328355, -0.123739436, 0.017585058, -0.0792693, -0.012500297, -0.0028807693, -0.0010119011), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.014059116, 0.19940482, 0.16831028, 0.16160843, -0.23937507, -0.0070899655, 0.05102661, 0.14583974, 0.04344956, 0.21863829, 0.014209773, -0.063842624, -0.19981036, 0.09243793, 0.24139273, 0.11667779), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.16715737, -0.09880053, 0.00053459726, -0.08722921, -0.050105397, -0.01993378, -0.15830508, -0.028736366, -0.03423738, -0.13328381, -0.1851269, 0.012596559, 0.16408625, 0.10486815, -0.011303046, -0.025475042), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.118060954, -0.24267668, -0.0098548755, -0.04774737, -8.479728e-05, 0.11292645, -0.05507332, -0.20990159, -0.16743746, -0.17963362, -0.14095132, 0.19843975, -0.032164577, -0.21628135, -0.12668937, -0.008645119), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.11424831, -0.19821498, 0.016948126, 0.0033053497, 0.24253003, 0.24522384, -0.13992928, 0.08576702, -0.15157521, -0.08158828, 0.07676344, -0.08844756, -0.02293248, -0.052961793, 0.08597288, -0.07834255), target2);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n}\n\n\n//!PASS 4\n//!DESC Conv-4x3x3x16\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.03128986, -0.070663765, -0.056307543, -0.043389197 };\n\ttarget1 = MulAdd(a1, MF4x4(0.012843345, 0.047590222, 0.0052741203, 0.017328946, 0.06774971, -0.028615275, 0.030839639, 0.053735327, -0.093057916, 0.08288735, 0.02991863, -0.040167376, 0.11699043, 0.062987246, 0.038180597, 0.11130321), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.047898952, 0.013089616, 0.13206771, 0.053474475, -0.24849094, -0.13717765, -0.14899106, 0.032647215, -0.111574546, -0.017941473, 0.017136412, -0.04121033, 0.04825172, -0.07243479, -0.30205736, -0.009043054), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.006104078, -0.056147296, -0.05430816, -0.012150009, -0.12583707, -0.06810525, -0.18965304, -0.03767409, 0.038220566, 0.12901759, 0.14772348, -0.011318772, 0.10613474, -0.011039028, -0.017407915, -0.035597485), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.070510425, 0.07079898, 0.063229784, 0.12203576, -0.08330366, 0.14733653, 0.1879776, 0.038365003, -0.112844236, 0.039776023, 0.1109856, -0.013311713, -0.039772045, 0.055393253, 0.13704132, -0.017909162), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.01609076, 0.29408732, -0.27179766, 0.06092111, 0.22690177, -0.16917813, -0.3125674, -0.059012905, -0.095299855, -0.07046006, -0.03500062, 0.14539354, -0.031449903, -0.020992422, 0.11367832, -0.16279401), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.014307108, 0.066424, -0.10264224, 0.03198627, 0.1848716, 0.0827183, 0.055873994, -0.08671376, -0.09059771, -0.0033756928, 0.015373264, 0.1482131, -0.22886358, 0.14303732, 0.060101535, -0.056595195), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.085188106, 0.07173675, 0.112149395, 0.12051379, -0.008070544, 0.17174324, 0.09781431, 0.15725529, -0.11921908, -0.026167218, 0.0726004, 0.1150364, 0.07129521, 0.08404156, -0.06052682, -0.024796983), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.118749954, 0.21372789, 0.1825785, 0.12766796, -0.20407347, -0.31983793, 0.06569954, 0.061804183, -0.1381503, -0.2288562, 0.010778781, 0.046662748, 0.09632992, -0.0007208436, 0.042766806, -0.008586152), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.08471548, 0.11370638, 0.044628102, 0.21962023, -0.1537214, 0.018495824, -0.10132307, 0.055931155, -0.19381963, -0.029650096, -0.12020838, 0.14787269, 0.10709368, 0.091088474, -0.08593706, 0.02723246), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.023070067, 0.047927327, -0.0039206124, 0.044357426, 0.078707196, -0.02090998, 0.061532218, -0.01990171, -0.0010075673, -0.02985451, -0.013571645, 0.072454736, -0.08910195, 0.08069201, 0.021186491, -0.015898732), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.19465011, -0.099643335, -0.13729279, -0.01785864, 0.07081408, -0.03980578, -0.055030484, -0.007838133, 0.02866604, 0.047467582, 0.0021829177, -0.0085278815, -0.14039196, 0.14613628, -0.08654854, 0.091417976), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.2008973, -0.055368304, -0.11570937, -0.020534834, 0.029072378, 0.057559345, -0.12295086, -0.093348056, -0.032486536, -0.024021279, -0.03250597, 0.03629745, -0.08590457, -0.037932087, -0.21787491, 0.06611054), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.0013978226, 0.12190444, -0.1388371, 0.053365257, 0.06383916, -0.16512986, 0.020202242, -0.05118216, -0.022544125, 0.022348702, -0.04619122, -0.007816115, 0.16181955, -0.087810166, -0.017245274, 0.2592078), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.29257166, 0.18668509, 0.39435357, -0.015695287, 0.052169085, 0.08033462, -0.06759564, 0.15172167, -0.07392426, 0.08598093, -0.099814445, 0.16442427, -0.23507537, 0.00095621345, 0.09456823, 0.35083038), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.09508197, -0.10668374, 0.07861556, -0.18495509, -0.012995353, 0.10549121, 0.20355113, 0.02486487, -0.0010891877, 0.0013024746, 0.040683478, 0.09813279, -0.25718254, -0.080950156, -0.20833632, -0.011176342), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.04636551, 0.01815646, -0.061344985, 0.16105172, 0.018154364, 0.08175996, 0.02177905, 0.05214974, 0.056760095, 0.056198932, -0.01944339, 0.10342066, 0.037774805, -0.098509185, -0.050058816, 0.22327778), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.3342538, 0.24596402, -0.05070882, -0.1629279, -0.0605624, -0.31846803, -0.030116247, 0.14499578, 0.23033214, 0.100796476, -0.11549748, 0.13272488, 0.09768287, -0.08599002, -0.18570031, -0.095745035), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.017806288, 0.03143078, 0.1363342, -0.018307902, 0.036575943, -0.04645106, -0.13187204, -0.019356936, 0.08177283, 0.14059572, -0.026990665, -0.025628868, 0.089009784, -0.054094527, -0.10889895, -0.08352851), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.10441912, 0.06942166, 0.021075722, 0.022823252, 0.14455585, -0.10067584, -0.006786432, -0.15945506, 0.051149122, -0.051351603, -0.012551037, 0.017784216, -0.030743994, 0.06534117, -0.05894921, -0.007193482), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.105177015, 0.12079406, -0.021824203, 0.0051873215, 0.09426312, 0.0872351, 0.042457238, -0.027718134, -0.04744092, -0.036118995, -0.088347785, 0.025714433, -0.0033455554, 0.0052299164, 0.14114419, -0.23041077), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.10924918, 0.07170065, 0.15847342, 0.045235954, 0.01170718, 0.09113452, 0.155801, 0.012455027, 0.0091770645, -0.071032606, -0.06911904, -0.0078831315, 0.27796802, -0.08136213, 0.20615137, -0.22055252), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.02993543, -0.011065637, 0.015992155, -0.106134124, -0.26578894, 0.16489314, 0.0020848098, 0.12432517, -0.14845847, 0.11076599, -0.015617476, 0.12498255, 0.009672752, -0.013014179, 0.10577515, 0.02908296), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(-0.0728776, -0.14159116, 0.105368264, -0.016262107, -0.14621304, -0.0007887494, 0.14413477, 0.11337385, -0.1769697, -0.1076886, 0.08036942, 0.10428512, 0.10336065, -0.15257628, 0.05553209, 0.12439473), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.067323305, 0.23115864, 0.0817162, 0.13127932, 0.02427729, 0.01246805, 0.021550559, 0.066352196, -0.014213087, -0.022559473, 0.058270242, -0.069260366, -0.1949913, 0.27712336, -0.020843407, 0.16199547), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.06066066, 0.009365795, -0.005817299, 0.016661849, 0.032292802, 0.10364246, -0.105340734, -0.040422246, 0.0028520338, 0.10786728, 0.041312158, 0.0634878, -0.10283239, -0.13716424, 0.2013461, -0.14106691), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.14796652, 0.042259417, -0.08663438, 0.09733461, -0.044074174, 0.24739462, 0.04777009, -0.026686348, 0.0027458945, 0.043400105, -0.11496284, 0.08113486, -0.33933377, 0.046819236, -0.12803015, 0.006137677), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.07903079, -0.009489394, 0.018812884, -0.031424083, 0.14344518, 0.08629371, 0.123602144, 0.045581687, 0.102321856, 0.07221763, 0.14465447, -0.23171869, -0.1145046, -0.088674895, -0.08679749, -0.20322132), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.09741677, 0.0010184142, -0.06932825, 0.044964395, 0.03060611, 0.11817057, 0.04148144, 0.000755089, 0.018646225, -0.1362759, 0.045627713, -0.01720389, -0.013920286, 0.0041473205, 0.023480741, -0.00036270308), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.047821313, 0.15457056, 0.081069574, -0.061125267, -0.003727664, -0.03735384, -0.00673114, -0.0585745, -0.14427665, 0.21584798, 0.17612408, 0.03723236, 0.09688153, 0.0071055717, 0.0704578, -0.008490558), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.005648931, -0.021415008, 0.07515239, 0.024656001, 0.14356652, -0.09023091, -0.092833556, -0.11933706, -0.17543222, -0.31645912, -0.14794292, -0.10830711, 0.046658885, -0.13449514, -0.032724228, -0.07927336), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.012330256, 0.030906612, 0.009849825, 0.16186711, 0.105316125, 0.1066287, 0.007410255, 0.08471377, -0.06755245, 0.2835302, 0.06922882, 0.18501134, -0.10781668, -0.021025939, -0.057754997, -0.19532007), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.09254016, 0.21572222, -0.250398, -0.017990865, 0.10726608, -0.13617107, 0.06726572, -0.17355372, 0.07552837, -0.01980061, 0.10523871, -0.062427603, -0.1769102, 0.35534126, -0.22155605, -0.13921477), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.0054315915, 0.028563919, -0.030617325, 0.12851912, 0.0020591016, -0.07287573, -0.15371658, -0.3468236, 0.042036943, -0.19993319, -0.1311562, -0.11087494, -0.033534657, -0.049439076, 0.07299748, 0.049393892), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.04817828, 0.009956909, 0.08608736, -0.04149299, 0.07101367, -0.03388178, 0.08030968, -0.032450564, 0.14994971, -0.006995002, 0.13461865, -0.061656967, -0.044900555, -0.05698395, 0.07130313, -0.17835349), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.09259944, -0.1760367, -0.05008204, 0.12799591, 0.10526596, 0.25768888, 0.11187724, -0.06537007, 0.11869906, -0.30243787, 0.1930932, -0.13290296, 0.017331708, 0.04682896, 0.02930385, 0.15250616), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.01343636, -0.015147329, -0.12101166, 0.04787181, 0.088516094, -0.0716172, 0.012281597, -0.01175244, -0.036102388, -0.16996604, 0.0068835146, 0.16938321, -0.019361602, -0.07008898, -0.111906745, -0.008676077), target1);\n\n\tMF4 target2 = { -0.014193535, -0.035853464, -0.0019574068, 0.035060503 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.010251427, -0.045750465, 0.016315231, -0.008768869, 0.017431414, 0.080067836, 0.025827147, 0.10838066, 0.0024869177, -0.034495536, 0.09772538, 0.07213915, 0.016637174, 0.040788822, -0.022752339, 0.10970543), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.11526194, 0.09676918, -0.04237834, -0.2271947, 0.12261753, -0.24500768, 0.10468346, 0.13780572, -0.009849901, 0.023189532, 0.0011982447, 0.04185303, 0.045187697, 0.06505389, 0.096869685, -0.1784324), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.04672689, 0.13536161, -0.1818021, -0.20668268, 0.07533596, -0.032177944, -0.024819814, 0.036118865, 0.012960037, -0.04256549, 0.03154665, 0.10697645, 0.0455828, 0.15624708, 0.0880299, -0.044446476), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.03187084, -0.04798656, 0.05435525, -0.060023244, -0.02988392, -0.13252808, -0.13699181, -0.013882888, 0.052836955, -0.051288467, -0.048392758, -0.02818318, -0.045959223, -0.0385304, -0.113381095, 0.048340388), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.06799445, -0.32721373, 0.09433875, -0.24025385, 0.0029125893, -0.029136823, 0.01100064, -0.12017942, -0.12278812, -0.0646935, 0.009398038, -0.021518359, 0.008572816, 0.15084247, -0.22798048, -0.027803216), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.14571115, 0.24804439, 0.13177192, -0.1820655, -0.0030899157, -0.11837261, 0.14447895, 0.11825037, 0.083688706, 0.13209106, 0.051847935, -0.27009267, -0.030820336, 0.15591313, 0.00807933, 0.08577916), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.07043623, -0.006127145, -0.16473344, -0.091646075, 0.12019198, 0.02408659, 0.038805984, 0.043282606, 0.09853516, -0.03085117, -0.13666795, 0.057578508, 0.023477113, -0.050639734, 0.05486259, 0.10117338), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.07739963, 0.019718317, -0.17859067, -0.107660785, 0.07235146, -0.08198499, -0.13072458, 0.0808431, -0.09421921, -0.024668563, 0.058651946, 0.058679227, -0.041750733, 0.07785575, 0.0375434, -0.11090677), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.13032761, 0.2291367, -0.1677081, -0.22246332, 0.03946319, 0.0063910848, 0.09128152, 0.0013804171, -0.034065075, -0.058277655, 0.052419346, -0.030012188, 0.018556409, -0.07521306, 0.12746032, 0.0899423), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.14820024, 0.03316697, 0.074021704, 0.0349015, -0.028731624, -0.03655249, 0.041885335, 0.025598902, -0.007544352, -0.058063164, 0.030487465, -0.073317364, -0.033130456, -0.17607957, 0.0020156964, 0.15351814), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.33111712, 0.11070417, -0.11759775, 0.12881225, -0.10840586, -0.114877716, 0.026571346, 0.01617625, 0.0028098845, 0.07325011, -0.008114658, 0.11581408, 0.0040087802, 0.15237121, 0.10423624, 0.010486565), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.14014785, 0.03670812, 0.041663505, -0.25026393, -0.05651376, -0.009220771, 0.18786587, 0.11221872, -0.0045316, -0.0781469, 0.09609792, -0.077175744, 0.15113525, 0.14979461, -0.003579166, -0.097722545), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.005191016, -0.05746076, 0.14736177, -0.37837118, -0.116905205, 0.035447106, -0.1389216, -0.06583864, 0.08867301, -0.027591052, 0.020395119, -0.067704394, -0.078146204, 0.21156693, -0.24100207, -0.34081197), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.3395633, -0.16366479, -0.16501908, 0.19205959, -0.1203106, 0.1201394, 0.059141878, 0.024588805, 0.0106182005, -0.007498128, -0.13781549, -0.031079333, 0.45373476, -0.019419974, -0.029461615, -0.109356895), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.20302778, 0.023634301, 0.0037064455, 0.23106048, -0.14157735, 0.115462445, -0.10275177, -0.05708588, 0.0066573587, -0.14406916, -0.029837208, 0.056612004, -0.036978997, 0.07784742, -0.009329581, 0.11628078), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.050052032, 0.061341796, -0.108812004, -0.27657855, 0.07106667, -0.062498234, 0.08073948, 0.18898413, -0.005880379, -0.031624768, 0.0334547, 0.10361753, -0.18414119, -0.070826136, 0.027453694, 0.022999335), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.014818375, 0.17337285, 0.10936815, -0.030657725, -0.08041041, 0.022390872, 0.0053962595, 0.090021096, 0.05470518, 0.014654071, 0.06899392, -0.03431451, 0.05177294, -0.13493995, -0.055468578, -0.19131596), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.08200318, -0.10802187, -0.075451784, 0.006642357, -0.041665014, -0.05528946, 0.1799087, -0.07113583, -0.016218789, -0.12353001, -0.034801062, 0.06995437, 0.013318846, -0.16708943, 0.17779571, 0.20705931), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.10754426, -0.03437161, -0.089123115, -0.12592112, -0.09719291, 0.042339396, -0.02457928, -0.10472151, -0.031175358, -0.06077806, -0.025603233, 0.0030798917, 0.0302328, -0.011108347, -0.08815118, -0.11247357), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.03634052, -0.0752815, -0.032257803, -0.020932812, -0.01030603, 0.05347118, -0.013455479, -0.1528448, 0.11631174, 0.017359301, 0.0053947037, -0.10187295, -0.034056764, -0.06371101, 0.10579902, 0.06297638), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.0026892002, -0.09832557, 0.07002896, 0.17336288, 0.017382741, 0.0868499, 0.024310237, 0.1024202, 0.016445315, -0.096997134, -0.05655256, -0.03888035, -0.23449722, 0.004868548, -0.046150357, 0.16268611), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.08197917, 0.06499742, 0.044401966, 0.119590975, 0.17058893, 0.003096477, 0.073047325, -0.2325016, 0.20562899, 0.06886438, -0.10150125, -0.09421983, -0.026852611, 0.11638924, -0.2897435, 0.10056706), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.05599001, 0.20881969, 0.057560008, 0.03211348, 0.07353149, 0.10849278, -0.04358825, -0.07277266, 0.19414866, 0.084341206, -0.054937962, -0.19548011, -0.1875029, -0.13233592, 0.247698, 0.054934226), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.006909254, -0.043635696, -0.0420242, 0.0029297285, -0.011208758, 0.10583326, -0.039475866, -0.091568366, -0.11034183, -0.2710617, -0.15182555, 0.27160573, 0.029486256, -0.17993683, 0.10480137, -0.031949393), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.012359864, -0.024621721, -0.066488825, -0.041012418, 0.0008418082, -0.034133818, 0.1275645, -0.22584224, 0.04127642, 0.021086683, -0.055507325, 0.017740795, -0.10207868, -0.02459281, -0.16278388, 0.2084072), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.07907339, -0.08811312, -0.043821383, -0.12781687, -0.014701197, -0.08600121, -0.07344954, -0.06233793, 0.13561183, 0.17435691, -0.25248256, -0.18915577, 0.11731138, -0.076414265, 0.011668736, -0.24489906), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.015452916, -0.1093781, -0.031768844, -0.049816687, 0.087654404, 0.083113015, -0.11759004, -0.02852037, 0.0119902035, -0.12981133, -0.043321397, 0.30873615, 0.16349368, 0.0475539, -0.12394514, 0.012860273), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.024975974, 0.14167881, -0.03849521, 0.092395015, -0.14491238, -0.024630755, 0.1262065, 0.22724074, -0.088403955, 0.069909796, -0.1582284, -0.06366643, 0.03808985, 0.055002328, 0.046191234, -0.15073699), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.040616892, -0.05149903, 0.07913543, -0.12622666, 0.012306014, -0.0072504813, 0.09324519, 0.013837971, 0.033986375, 0.09466625, -0.11271816, 0.06514161, 0.008318977, 0.2319992, -0.23813216, -0.064383216), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.0058016274, 0.07342614, -0.02532061, 0.046294674, -0.14704724, -0.09635743, 0.011660911, -0.028665043, 0.07488793, 0.049912058, -0.23186599, -0.12174707, -0.078130014, -0.17273565, 0.009148666, 0.042669322), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.02457923, 0.06036786, -0.08706319, 0.011597113, 0.0027447701, 0.12410346, 0.07509643, 0.23769653, 0.055913534, -0.030516708, 0.090205066, 0.005610863, -0.0037265806, -0.06458783, 0.08390646, 0.03704848), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.24644387, 0.09733959, 0.15941189, -0.039000493, -0.34143484, -0.10905996, 0.123846896, -0.025850125, 0.22231472, -0.074195, 0.17869541, 0.007901206, -0.07893139, -0.0031443893, -0.2252749, 0.020515904), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.046822242, 0.19209228, 0.10584968, -0.20782734, 0.020917192, 0.064485386, 0.022432446, 0.0021164739, 0.053817958, 0.2291973, 0.15079306, -0.18283905, 0.090974085, 0.24965459, -0.11586238, -0.1068585), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.018472567, -0.09019175, -0.0014198436, 0.11438912, -0.18806975, 0.017498987, 0.06471353, -0.11078878, -0.09412236, -0.11218875, 0.077031404, -0.18779173, -0.025784107, -0.031477705, -0.10906885, 0.074243516), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.06388332, 0.0813248, 0.1583895, -0.17604364, 0.02474024, 0.09227594, -0.07166613, -0.046409506, -0.20977338, 0.058364637, -0.014288648, 0.23180534, -0.03359222, 0.03962627, -0.011652336, 0.08433068), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.05829235, -0.026256828, 0.051615473, -0.082805336, 0.06738748, -0.093329325, -0.03197624, 0.067339435, -0.06104219, 0.119381785, 0.10763423, -0.31583574, 0.003745323, 0.14953502, -0.009772352, -0.05511591), target2);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 5\n//!DESC Conv-3x3x3x16\n//!IN INPUT, tex3, tex4\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 a2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF3 result = { -0.0056639817, -0.0017339308, -0.0011913306 };\n\tresult = MulAdd(max(a1, 0), MF4x3(-0.01858372, 0.017144108, 0.02794388, 0.0129101565, -0.0073674284, -0.011766938, 0.01970984, 0.01209068, 0.009530311, -0.009190449, -0.006996753, -0.0038750458), result);\n\tresult = MulAdd(max(b1, 0), MF4x3(0.15856947, 0.10162126, 0.08489005, 0.038381726, -0.017771017, -0.03226132, -0.011787879, -0.0152445, -0.007564454, 0.055921376, 0.08389841, 0.08452836), result);\n\tresult = MulAdd(max(c1, 0), MF4x3(0.026705442, -0.0070655374, -0.018199183, 0.016254421, -0.025398912, -0.03461042, 0.03950644, 0.06586101, 0.0707467, -0.03793455, -0.04957139, -0.04777402), result);\n\tresult = MulAdd(max(d1, 0), MF4x3(-0.115341224, -0.04463122, -0.016549354, -0.059433736, -0.04303295, -0.042805545, 0.010830498, -0.011057443, -0.0141014, 0.067396216, 0.06553637, 0.06705378), result);\n\tresult = MulAdd(max(e1, 0), MF4x3(-0.12767975, -0.19935511, -0.20109995, 0.11554901, 0.11426503, 0.11161185, -0.22092125, -0.22041021, -0.2142712, -0.06326996, -0.061314825, -0.059039716), result);\n\tresult = MulAdd(max(f1, 0), MF4x3(0.007717391, -0.046238754, -0.056983955, 0.021419598, 0.0036924274, -0.00033630748, 0.053556852, 0.0824714, 0.08295022, -0.09881205, -0.043157153, -0.040801782), result);\n\tresult = MulAdd(max(g1, 0), MF4x3(0.0052828738, 0.049702674, 0.056108, 0.009478552, 0.010345037, 0.0094180945, -0.010412882, 0.0006965096, 0.0021917222, -0.010701383, -0.023212843, -0.024252625), result);\n\tresult = MulAdd(max(h1, 0), MF4x3(0.07542127, 0.0739301, 0.06642962, -0.08054489, -0.037553925, -0.026762033, 0.09727509, 0.102272816, 0.097533874, 0.01325714, -0.004582272, -0.006647532), result);\n\tresult = MulAdd(max(i1, 0), MF4x3(0.03005975, 0.017012767, 0.007840201, -0.028650383, -0.0019064787, 0.01083078, -0.071352504, -0.019919744, -0.008299795, 0.023253804, 0.042413715, 0.04681489), result);\n\tresult = MulAdd(max(a2, 0), MF4x3(-0.052201163, -0.021727808, -0.020888992, 0.008365179, -0.016546093, -0.0111018475, -0.06236095, -0.019278256, -0.021443967, 0.0029381379, -0.0033039588, -0.006425339), result);\n\tresult = MulAdd(max(b2, 0), MF4x3(0.02397296, -0.041659098, -0.050882675, -0.013487, 0.0067506596, 0.005435185, 0.066447854, 0.13331215, 0.13754861, 0.028300207, -0.0048033795, -0.010058485), result);\n\tresult = MulAdd(max(c2, 0), MF4x3(0.08140248, 0.018564016, 0.0036607496, -0.0112075955, 0.0022339798, 0.0045722146, -0.045716517, -0.0076076477, -0.0016939791, -0.030486025, -0.07539711, -0.07185734), result);\n\tresult = MulAdd(max(d2, 0), MF4x3(-0.0155724995, 0.048904862, 0.059412133, -0.013894624, -0.0061430936, -0.011662488, -0.0052947477, -0.0176474, -0.018611705, 0.022075793, 0.031703226, 0.026735537), result);\n\tresult = MulAdd(max(e2, 0), MF4x3(-0.18287502, -0.18703277, -0.18331653, -0.08616293, -0.011741755, -0.009296464, -0.054274965, 0.016794622, 0.022522328, 0.06965258, 0.08260611, 0.08285337), result);\n\tresult = MulAdd(max(f2, 0), MF4x3(0.08107809, 0.0336241, 0.025449684, -0.031931, 0.01179566, 0.019694995, 0.025930194, 0.042288166, 0.04673656, -0.14357394, -0.11003491, -0.094090074), result);\n\tresult = MulAdd(max(g2, 0), MF4x3(0.007188181, 0.050626095, 0.050705966, -0.008030409, -0.018670242, -0.019766346, 0.014874803, -0.03657919, -0.034044486, -0.011178416, -0.004358302, -0.013611815), result);\n\tresult = MulAdd(max(h2, 0), MF4x3(0.07987872, 0.11399873, 0.12089382, -0.01514355, 0.0068139364, 0.010206274, -0.0005701044, -0.011158322, 0.006484812, 0.002018227, 0.043359682, 0.042987905), result);\n\tresult = MulAdd(max(i2, 0), MF4x3(0.0017806455, -0.0015697709, -0.0018252691, 0.0058658062, 0.021681193, 0.028615465, -0.054827355, -0.04541651, -0.027485048, -0.017649114, 0.017717479, 0.027309911), result);\n\tresult = MulAdd(max(-a1, 0), MF4x3(0.02555098, -0.0028983613, -0.005134733, -0.0029332284, 0.015552135, 0.022189403, -0.019786593, -0.0031676649, -0.0014604586, 0.06648065, 0.0672302, 0.04586375), result);\n\tresult = MulAdd(max(-b1, 0), MF4x3(-0.06674696, 0.002328631, 0.014039355, -0.03636718, 0.014560653, 0.028076636, 0.042305287, 0.015249338, 0.0136925895, 0.033586804, 0.00701501, -0.011588751), result);\n\tresult = MulAdd(max(-c1, 0), MF4x3(-0.039022632, 0.015240631, 0.02699061, -0.02614261, 0.0051843156, 0.012590042, 0.015304643, -0.022641543, -0.030434309, 0.016862666, 0.020819275, 0.022333218), result);\n\tresult = MulAdd(max(-d1, 0), MF4x3(0.08056982, 0.026592938, 0.009744146, 0.08762212, 0.10150359, 0.09662005, -0.044551965, -0.016349116, -0.014629014, -0.014341297, -0.030914815, -0.038747486), result);\n\tresult = MulAdd(max(-e1, 0), MF4x3(-0.048734166, 0.019775594, 0.03124684, -0.2345022, -0.23639877, -0.22958128, 0.12412277, 0.10245112, 0.10389806, -0.0030797734, -0.01989389, -0.02020691), result);\n\tresult = MulAdd(max(-f1, 0), MF4x3(-0.0133485105, 0.029644802, 0.041630358, 0.041081797, 0.059993293, 0.060033485, -0.02155099, -0.035306025, -0.03838472, 0.017466968, -0.01866363, -0.004764589), result);\n\tresult = MulAdd(max(-g1, 0), MF4x3(0.0030783121, -0.04064586, -0.04504904, -0.023528632, -0.029308239, -0.022441925, 0.020095564, 0.018979732, 0.015117934, 0.008429918, 0.021180628, 0.020137152), result);\n\tresult = MulAdd(max(-h1, 0), MF4x3(0.0012200709, 0.013313984, 0.014122978, 0.08750284, 0.038747437, 0.027102578, -0.09627132, -0.09706183, -0.09405641, -0.05180081, -0.03555434, -0.021694236), result);\n\tresult = MulAdd(max(-i1, 0), MF4x3(-0.022396728, -0.018316073, -0.01250564, 0.045423746, 0.025315331, 0.010639915, 0.05618814, 0.022210265, 0.014195103, -0.014828652, -0.010245087, 0.0020570823), result);\n\tresult = MulAdd(max(-a2, 0), MF4x3(0.046651457, 0.001333767, -0.003572458, -0.0077845114, -0.012861641, -0.015116351, 0.01338984, 0.029198132, 0.026183384, 0.0014878022, 0.020025207, 0.024829973), result);\n\tresult = MulAdd(max(-b2, 0), MF4x3(-0.09506711, -0.06541528, -0.051106647, 0.02552611, 0.01181497, 0.0020236392, 0.03234602, -0.03153924, -0.035502207, -0.034516744, 0.00018784113, 0.0085376045), result);\n\tresult = MulAdd(max(-c2, 0), MF4x3(-0.05945615, -0.0046793907, 0.011128929, -0.0061961384, -0.0040663416, -0.010319631, 0.044197917, -0.033448357, -0.04109943, -0.04109929, 0.006773195, 0.016976412), result);\n\tresult = MulAdd(max(-d2, 0), MF4x3(0.02855516, -0.033051047, -0.04864978, -0.06393814, -0.082921155, -0.0730681, -0.058905125, -0.038639963, -0.027698845, -0.013616608, -0.007876684, -0.006182652), result);\n\tresult = MulAdd(max(-e2, 0), MF4x3(0.15423118, 0.14667909, 0.14534634, 0.1485341, 0.096721016, 0.0820024, 0.1263968, 0.088775866, 0.083860956, 0.04213644, 0.020989005, 0.010447147), result);\n\tresult = MulAdd(max(-f2, 0), MF4x3(-0.068275765, -0.018390667, -0.011452603, 0.03738383, 0.019398715, 0.005998161, -0.0011161854, -0.039955888, -0.04444185, 0.052985556, 0.017621813, 0.009551621), result);\n\tresult = MulAdd(max(-g2, 0), MF4x3(0.01387326, -0.0033411914, -0.009420935, -0.034494568, -0.019219222, -0.009562797, 0.0074023325, 0.022065453, 0.027121471, 0.00019609048, -0.0042242454, 2.0403608e-05), result);\n\tresult = MulAdd(max(-h2, 0), MF4x3(-0.015793918, -0.024342488, -0.037188973, 0.004534637, -0.025236975, -0.028567247, -0.055682972, -0.054670315, -0.06584981, 0.043045517, -0.0075941198, -0.014196169), result);\n\tresult = MulAdd(max(-i2, 0), MF4x3(0.0132598495, 0.01775289, 0.017206183, 0.010604703, -0.007352816, -0.017301153, 0.030967329, 0.027615465, 0.0145311365, 0.008636854, -0.033379406, -0.042725433), result);\n\n\tresult += INPUT.SampleLevel(sam, pos, 0).rgb;\n\n\tOUTPUT[gxy] = MF4(result, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Restore_Soft_M.hlsl",
    "content": "// Anime4K_Restore_CNN_Soft_M\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Restore/Anime4K_Restore_CNN_Soft_M.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Restore_Soft_1\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex6;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.07697861, 0.41154122, 0.042374082, -0.087270625 };\n\t\t\tresult = MulAdd(src[i - 1][j - 1], MF3x4(-0.073079124, 0.11507942, 0.028201895, -0.021776304, -0.25251916, -0.08662003, 0.38814726, 0.4146095, 0.06326891, 0.01635252, 0.06423356, 0.13488062), result);\n\t\t\tresult = MulAdd(src[i - 1][j], MF3x4(-0.059791833, -0.03105604, 0.041643705, 0.35197195, -0.17314838, 0.067622855, -0.032012507, 0.09691628, -0.11094062, 0.007625051, 0.094762206, -0.05824145), result);\n\t\t\tresult = MulAdd(src[i - 1][j + 1], MF3x4(-0.120281175, 0.027440755, -0.026316144, -0.025291128, -0.41698205, -0.05966847, -0.28400028, -0.06946398, -0.10906026, -0.015854035, -0.028724853, -0.06626416), result);\n\t\t\tresult = MulAdd(src[i][j - 1], MF3x4(0.068752654, -0.12652585, 0.38200122, 0.17978846, 0.2749825, 0.015504972, 0.21765926, 0.2246602, -0.062151223, 0.07457783, 0.13588274, -0.037328478), result);\n\t\t\tresult = MulAdd(src[i][j], MF3x4(0.3718559, 0.025637252, -0.4048626, -0.41484925, 0.24768798, 0.09984098, -0.5663632, -0.6659978, 0.212067, -0.08328392, -0.5277322, -0.016879432), result);\n\t\t\tresult = MulAdd(src[i][j + 1], MF3x4(-0.11072714, -0.010321538, 0.11265787, 0.0055236337, -0.13345073, 0.004847663, 0.3744461, -0.4038564, -0.09893075, 0.031325124, 0.2883957, -0.04268903), result);\n\t\t\tresult = MulAdd(src[i + 1][j - 1], MF3x4(0.10444391, -0.60588187, 0.02543334, 0.10911738, -0.10860678, 0.15701362, 0.29235297, 0.045803998, 0.076250754, -0.10799697, 0.08841044, 0.08145623), result);\n\t\t\tresult = MulAdd(src[i + 1][j], MF3x4(-0.04246739, -0.1225759, 0.11280305, -0.12079673, 0.5289142, -0.011892906, -0.0800465, 0.05915611, -0.126204, 0.08239301, -0.0092391195, -0.07672885), result);\n\t\t\tresult = MulAdd(src[i + 1][j + 1], MF3x4(-0.11922264, 0.14036109, -0.09491126, 0.05112697, -0.12543046, -0.08662423, -0.041537095, 0.048038274, 0.11672854, -0.006516173, -0.023524825, 0.030505095), result);\n\n\t\t\ttex1[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x8\n//!IN tex1\n//!OUT tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex1.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex1.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex1.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex1.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.08458621, -0.023144595, -0.057707336, -0.081382714 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.09419103, -0.1178418, 0.09523275, 0.24648252, 0.03595256, -0.05417468, -0.029167585, -0.012279932, 0.08852021, -0.12534834, 0.0604663, 0.050634373, -0.19536541, 0.21548285, 0.040379744, -0.28046605), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(-0.13783203, 0.17191975, 0.06956328, 0.005270252, -0.029844455, -0.17657366, 0.03439078, 0.048861686, 0.12017991, -0.087307535, 0.11815637, 0.31309614, 0.08440897, 0.09969244, -0.06220224, 0.2633136), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(0.098606475, -0.05856224, -0.01163882, -0.020945825, -0.08988821, 0.18520717, 0.011407763, 0.20973705, 0.21017794, 0.038311377, -0.018910313, 0.053878684, -0.08751144, -0.0081623215, 0.29060364, 0.14363094), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(0.13354321, -0.38046083, 0.14157647, 0.10190452, -0.045502663, 0.0053245644, -0.10817685, -0.048371315, 0.16157807, 0.2086147, 0.07632662, 0.24636099, -0.0053555835, -0.19587666, -0.46687222, 0.002362032), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(0.28275147, -0.1468291, 0.24075283, -0.35119128, 0.18727398, 0.3833064, 0.08667899, 0.15021381, -0.092296466, -0.25686404, -0.116076745, 0.2231862, -0.27637103, 0.12317917, -0.0341737, -0.40077657), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(-0.007041629, 0.18089123, -0.21195571, -0.12346183, -0.06088577, -0.30784377, 0.0048495876, 0.06013008, 0.07200418, -0.0076884073, 0.02632822, -0.0011575016, 0.21025613, -0.2573419, -0.06994815, 0.32497165), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(0.0016823286, -0.014366541, -0.5049525, 0.048534572, -0.0057915323, -0.0030526456, -0.028976317, -0.16376147, -0.15560333, -0.053708192, -0.055678204, -0.13087665, 0.0048869387, 0.027514834, 0.017380254, -0.06743363), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(0.044514824, -0.1754644, -0.26664957, 0.1486667, 0.114894986, 0.061640915, -0.13305616, 0.06450565, 0.03552732, 0.2835473, 0.13800526, 0.005875215, 0.15751484, 0.41759813, -0.19406971, 0.071032055), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(-0.18419577, -0.05527526, 0.017057603, -0.1146602, 0.15775396, -0.01188916, 0.09368113, 0.05765405, 0.064170234, -0.017833546, 0.12100514, -0.06250493, 0.2421206, 0.15719843, 0.23718071, 0.023142194), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(0.079226464, 0.07877355, -0.022315226, -0.13507473, 0.14683898, 0.028739132, -0.24479519, -0.280197, -0.13223173, 0.21732429, -0.1546993, 0.045442928, 0.163642, -0.07062695, 0.03805918, 0.060860883), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(0.095216066, -0.16650215, -0.34863555, -0.025274571, 0.3064775, -0.034196265, -0.25773287, 0.19570488, -0.005434017, 0.26308087, 0.009404902, -0.24736062, 0.05558232, -0.014217521, 0.03667355, -0.15134114), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(-0.074846864, 0.010901994, 0.035149742, 0.12106729, -0.36042807, -0.011231913, 1.4317516, 0.6400351, 0.105860665, -0.11587906, -0.11065066, 0.19126756, 0.14132085, 0.021570992, -0.3618735, -0.081163004), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(-0.06937371, 0.3815214, 0.026842717, -0.04051589, -0.09472515, -0.027198657, -0.16502109, 0.114273794, -0.15207845, -0.15054241, -0.25099036, -0.10871029, 0.14311226, 0.07640166, 0.47051275, 0.0447809), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(-0.25960425, 0.11150338, -0.042022616, -0.006633396, -0.29595324, -0.0149574205, 0.09806478, 0.03635802, 0.26789796, 0.41416678, 0.05145585, 0.61168057, 0.019582301, -0.118703716, 0.13974573, 0.04498941), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.04119621, -0.15503803, 0.33170196, -0.1158483, -0.06258357, 0.2574262, -0.07890287, -0.6929032, 0.004379942, 0.097908296, 0.009286624, 0.27194506, -0.2476702, 0.13828708, 0.05071857, -0.43693772), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(-0.010842703, 0.13108006, 0.30126816, 0.20221521, 0.018797455, 0.0614624, 0.11102966, 0.019204421, 0.09975456, 0.04676902, -0.044540443, 0.118877, -0.04871634, -0.089208096, 0.027455999, 0.029557817), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(-0.10421777, 0.3135469, 0.14557797, 0.0497297, 0.0034963787, -0.20342828, 0.08332032, -0.09004643, 0.06574797, -0.14168271, -0.08754358, 0.30385306, -0.3374016, -0.4360316, 0.15854433, -0.24081887), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(0.1407836, 0.09678823, -0.02240152, -0.013985894, 0.012281648, -0.24124922, -0.46433777, -0.25915003, 0.042200714, -0.21701157, -0.016618999, 0.13135725, -0.34656256, -0.034729004, -0.29246503, -0.13514486), result);\n\n\t\t\ttex2[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x8\n//!IN tex2\n//!OUT tex3\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex2.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex2.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex2.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex2.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { 0.0061747693, -0.029145364, -0.026801255, 0.027419873 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(0.27743992, 0.04277345, 0.019331178, -0.7335445, 0.006292013, 0.19800001, -0.0025032016, 0.16098699, -0.03186617, -0.060173523, 0.08878855, -0.10669283, 0.130609, -0.068515256, -0.03571823, -0.13751523), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(-0.2430821, -0.08233978, 0.082374334, 0.04843392, -0.18989052, -0.041925047, 0.40021122, -0.317836, -0.13517766, 0.032255337, -0.0746507, 0.22114721, -0.045706213, -0.12841983, -0.27830583, 0.05763077), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.08436965, -0.04967552, -0.16798134, -0.1539139, -0.17429228, -0.10166739, 0.35864773, 0.12873615, -0.07667423, 0.04985163, 0.13391761, -0.054322604, 0.085659124, -0.078792974, 0.06481059, 0.058667548), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.17568155, 0.56705236, 0.056562193, -0.020951264, 0.005879628, -0.2502103, -0.19619654, 0.019490348, -0.14527243, 0.16983634, 0.049245857, 0.18316677, 0.055053137, 0.10699275, 0.0016993808, 0.20105995), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(0.36284775, -0.05856962, -0.42545465, 0.31931567, -0.15698905, -0.28837132, -0.028697362, -0.024917847, 0.04317283, 0.024557106, -0.052158598, 0.38654143, -0.1782944, 0.43094924, -0.11738149, 0.21554618), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.22645079, -0.20319854, 0.20733371, -0.18697177, -0.05167819, -0.12845007, 0.5543688, 0.2453291, 0.08027872, -0.0628224, -0.06593836, -0.05795855, -0.24527508, 0.23632833, -0.043366548, 0.14135826), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(0.08384414, 0.20807321, 0.030559694, -0.13640808, -0.07641805, -0.10919174, -0.19799095, -0.12955745, 0.093737304, -0.17856954, 0.035103753, -0.044699315, -0.07255943, -0.02331535, 0.2059249, 0.3058302), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(0.022345139, 0.16286038, -0.27228013, -0.41105714, -0.0014384583, 0.089546144, -0.08296848, -0.0050463285, 0.07038578, -0.030679917, 0.031246305, 0.36761853, -0.34799108, -0.0405689, -0.19182852, 0.015853593), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(0.1021783, -0.11396049, -0.08733628, -0.017449526, 0.042015605, -0.14808236, 0.10072531, -0.07403295, 0.15276712, -0.07807765, -0.10013386, -0.26110634, -0.04858846, 0.066066965, 0.13598624, 0.21687816), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(0.07041569, -0.17775945, 0.15697548, -0.15425202, -0.06569677, -0.033233996, 0.22596005, -0.026170855, -0.20729817, 0.1316505, -0.058410037, 0.22166035, 0.09107114, -0.13078825, -0.05639485, -0.02716142), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(0.057966787, -0.15311252, 0.095924966, -0.055951685, 0.082777694, -0.08471956, -0.39918202, 0.10599212, 0.102710955, 0.21808124, 0.12083635, -0.38835892, 0.031709857, 0.13955092, 0.12647778, 0.011549966), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.09810508, -0.119743295, 0.06166254, 0.13595435, 0.036198203, -0.028710455, -0.40789905, -0.034894038, -0.12622337, 0.14379597, 0.039958883, 0.19636424, 0.047094557, -0.07987105, -0.04905092, -0.07875785), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(0.34118712, -0.2833933, -0.045028314, -0.40670308, -0.01961924, 0.37131935, 0.29099533, -0.19843055, 0.18604252, -0.0037280058, 0.1091072, -0.40579233, 0.11422739, -0.16490164, -0.0022396361, -0.21486944), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.0010853866, 0.2223109, 0.2416471, -0.33326814, 0.2549397, 0.6442047, 0.18411863, -0.19081281, -0.43552014, -0.1793875, -0.58699155, -0.01900168, -0.26955804, -0.071371995, 0.07599079, 0.27434483), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.19644544, 0.14383379, -0.2599538, 0.001666124, -0.16369823, 0.009537702, -0.3690974, -0.048157427, -0.2040159, 0.01522431, -0.11007749, -0.07012568, 0.17536888, -0.012183123, -0.17366478, -0.15090804), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.0855136, 0.06863859, -0.17249937, -0.12850079, 0.15325847, 0.22742507, 0.22535504, 0.24032994, -0.109522276, 0.24135293, -0.17784368, 0.08172238, -0.16143093, 0.1358853, -0.09399085, 0.012180792), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(-0.04346881, 0.13367178, 0.10387612, 0.04705543, -0.10315795, 0.5816371, -0.090529, -0.017955385, -0.09032907, -0.52505773, 0.10958755, -0.26151448, 0.17246644, 0.011886279, 0.3566306, 0.32170597), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(-0.27853554, 0.1558035, 0.070289604, 0.17052644, -0.31982365, 0.29085326, -0.09494764, 0.2270542, 0.10514691, -0.24606484, -0.02049181, 0.126686, 0.16719124, 0.013080999, -0.08577963, -0.07057233), result);\n\n\t\t\ttex3[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 4\n//!DESC Conv-4x3x3x8\n//!IN tex3\n//!OUT tex4\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex3.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex3.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex3.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex3.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { 0.022887055, 0.01521631, 0.17967467, -0.0131908795 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(0.07447851, -0.07888509, -0.28236163, 0.2479792, -0.065199964, 0.24733023, 0.099619575, -0.26430824, -0.03523585, -0.03547245, -0.10619345, -0.25326422, -0.116270036, -0.065133184, -0.30401528, 0.01563764), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(-0.19106275, -0.26104823, -0.14457102, -0.17298317, 0.24148639, -0.10950928, 0.062851585, 0.042540826, 0.13287601, 0.06975747, 0.15848075, -0.3854902, -0.13132331, -0.16468687, -0.029844414, 0.27754608), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(0.015378025, -0.14203559, 0.08058816, 0.32896644, -0.074871175, -0.26611313, -0.18830848, 0.091641426, -0.16522385, -0.23424402, -0.12279703, -0.13343342, -0.2509982, -0.0554576, 0.07286022, -0.028823337), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.13543738, 0.049395677, -0.015148539, 0.13301241, -0.12827122, -0.012590744, 0.012936948, 0.008271658, 0.12442749, 0.3497426, -0.16126058, -0.2670464, -0.010479037, 0.07037434, -0.15527055, 0.13205245), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(-0.09535385, -0.3931354, 0.24716614, -0.21284536, 0.14652656, 0.38149378, -0.09607391, 0.06350967, 0.48615915, 0.32634613, 0.146291, 0.2566475, -0.40927815, -0.05268087, -0.04110691, -0.0068722935), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.089152284, -0.01860622, 0.016856732, 0.31244752, 0.022529159, -0.0071319416, -0.09786801, -0.13005258, 0.1524636, 0.21627748, -0.07395979, -0.087633945, -0.38435504, -0.08842507, -0.0058702417, -0.32936293), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(0.0816838, 0.0012210817, 0.28217188, 0.36141106, 0.0014665248, -0.0636269, 0.042035818, -0.056671552, -0.032501306, -0.22908778, -0.2067977, -0.004497514, -0.23052917, 0.26728114, 0.15353456, -0.17732324), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(-0.17229734, 0.0818218, -0.10076918, 0.030027041, -0.14819005, -0.085340135, 0.050100215, 0.05683199, -0.12653661, -0.036583595, -0.32319903, -0.15273796, -0.15346588, 0.20005536, 0.23097478, -0.19834782), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(0.055430107, -0.2886931, 0.361814, 0.33160287, -0.084407054, 0.06254009, -0.02332793, -0.018134018, -0.014879812, 0.112346604, -0.20686437, -0.23408228, -0.01091196, -0.062669374, 0.085567676, 0.23738655), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(0.080383554, -0.1172084, 0.19703126, 0.27777427, -0.07559937, -0.25445858, 0.3450109, -0.071967736, 0.2034805, 0.33716002, 0.15314537, -0.22953224, 0.113631405, -0.0058444734, 0.2890972, 0.06557255), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(-0.17646056, -0.025448758, -0.14952567, 0.017148364, -0.15238142, 0.1435677, 0.20273875, 0.22255951, -0.011660059, -0.003515217, -0.17305166, -0.13478355, -0.06558679, -0.032662887, -0.20914736, -0.5397283), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.1679393, -0.109410115, -0.117427185, 0.14982319, -0.06457877, -0.06607065, 0.0018200208, -0.0118605625, 0.046539318, -0.020642165, -0.14413542, -0.09530688, 0.22196163, -0.2187166, -0.10759705, 0.013234591), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(-0.13220267, -0.12540027, 0.26163217, 0.12791659, 0.16204996, -0.4023048, -0.13485721, -0.10187536, 0.059764992, 0.048170995, -0.25281772, 0.2090587, -0.06542371, -0.10791867, -0.21286209, -0.309109), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.16233061, 0.120428756, -0.11460241, 0.24531102, -0.2670459, -0.24195078, -0.20964348, -0.12930301, -0.2343609, -0.22543164, -0.28909695, -0.33560297, 0.6009884, 0.39171818, -0.1276308, -0.020736236), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(0.40162864, 0.045881115, 0.032667033, 0.31454235, -0.17351128, -0.009387306, 0.17341217, 0.30810982, -0.025815086, -0.10390133, 0.012544771, 0.036918722, 0.34386298, 0.23177734, -0.046727546, 0.20098232), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.11541034, -0.11647824, -0.12874861, 0.004921287, -0.13921295, -0.25733355, -0.1112383, -0.033295818, 0.0035326157, 0.3782048, 0.055785846, -0.1547331, 0.17358719, -0.2789715, -0.13400431, 0.1583795), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(0.4130191, -0.33944547, -0.064674884, 0.39617148, -0.11483455, -0.022601767, 0.1129301, -0.09713594, 0.14681247, 0.34442267, 0.08721343, -0.08309499, 0.088704996, -0.20943391, -0.2891408, 0.1709401), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(0.19503653, 0.17490312, -0.23491044, -0.028934423, 0.04479765, -0.0334551, 0.0602648, 0.0019939998, 0.23314747, 0.21557438, 0.07273092, 0.15467109, -0.11194509, 0.0736583, -0.17628083, -0.3851578), result);\n\n\t\t\ttex4[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 5\n//!DESC Conv-4x3x3x8\n//!IN tex4\n//!OUT tex5\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex4.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex4.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex4.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex4.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { 0.049844168, 0.02670437, 0.050967637, -0.10779561 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.10233342, -0.30233157, 0.24238978, -0.007108631, 0.14248851, 0.08486557, 0.0028373515, 0.122387215, 0.10996857, -0.17286511, 0.19819227, 0.07023527, 0.07579955, -0.16861476, -0.210025, 0.12760942), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(0.091181986, -0.41497424, -0.27567792, -0.09938067, -0.12210428, 0.20617811, -0.017644284, -0.22552875, 0.049019493, -0.18990634, 0.11057753, -0.043193225, -0.15278774, -0.18331046, -0.1837594, 0.029758787), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.1757096, -0.199691, -0.034743477, -0.15369363, -0.1701244, -0.0459655, 0.10508695, -0.09795581, 0.13464944, 0.37202564, 0.14706515, 0.23416734, 0.08302458, 0.20696343, -0.13935481, 0.03092827), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.49887478, 0.24046332, -0.029459715, 0.17374687, -0.15019977, 0.31086043, -0.28297687, -0.22239804, 0.12314376, 0.11594825, 0.17682782, 0.09753434, -0.26263535, -0.12739435, -0.57744014, 0.087381124), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(0.08101439, -0.16185337, 0.112901986, 0.24439482, -0.44051018, -0.70680356, -0.23015513, 0.63106006, -0.08817581, -0.057614524, 0.15352182, -0.049620207, 0.17742544, -0.49583626, -0.3844133, 0.18385352), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.17149475, 0.31255633, 0.19286609, 0.21052869, -0.11856372, -0.032373343, 0.06503625, -0.31664965, 0.040755365, -0.027614031, -0.33330554, 0.40148625, 0.056921627, -0.27068445, 0.047014963, 0.103712596), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(-0.09326643, 0.13677256, 0.06390537, 0.08080093, -0.10685094, 0.124757454, 0.14696303, 0.10871933, -0.10971212, 0.01655797, -0.11052674, -0.17361104, 0.015513338, -0.1917502, -0.26384255, -0.022672707), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(0.032367155, -0.087523445, -0.06951093, -0.08128242, 0.2627859, 0.14933161, 0.3114999, -0.007791172, -0.4146471, -0.2530298, -0.43175155, -0.06878434, 0.5724947, 0.25498095, 0.4838959, 0.15076154), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(-0.13427481, -0.10134261, 0.087439895, 0.015921364, 0.15421022, 0.20205952, 0.22928835, -0.07339068, -0.33318612, -0.17467582, -0.04758165, 0.11858059, 0.17408857, -0.099393494, -0.06389948, -0.06494366), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(0.15349221, 0.08508258, -0.09294437, -0.03204993, -0.22561033, -0.15088828, -0.020105945, 0.10041996, -0.024723593, 0.06610271, -0.24423431, -0.050512858, -0.100530736, 0.16394953, 0.16365045, -0.012055956), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(0.16342951, 0.23113559, 0.21289586, 0.28391558, 0.052211206, -0.17983536, -0.008415342, 0.08977486, -0.054481823, 0.17506577, -0.14162593, -0.070448756, 0.093877845, 0.05161232, -0.25006327, 0.007014646), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.104965575, 0.20048036, 0.024134496, 0.5442797, 0.19958296, -0.05165447, 0.076928124, 0.030868227, -0.0563495, -0.19757621, 0.10801544, -0.24202053, 0.0067657093, -0.17784451, -0.03134409, -0.06741009), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(0.33347723, -0.12338564, 0.23495969, -0.23091966, 0.059872203, 0.028045453, -0.06781438, 0.111325614, -0.21861015, -0.030451605, -0.04267672, -0.0039260075, 0.0911101, 0.054191053, -0.08498816, 0.04810343), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(-0.05028896, 0.21515386, 0.16005337, -0.32279232, 0.19178568, 0.779363, -0.12682606, -0.4378189, 0.37980273, 0.063021325, 0.19370794, -0.05618088, -0.00088428083, 0.29736623, 0.24649377, -0.0021625878), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.45007992, -0.16040307, -0.1714593, -0.16251564, 0.070867635, 0.21317895, -0.070962, 0.17147541, -0.27786884, -0.33259448, -0.022767346, -0.17967366, 0.21208113, 0.19740848, 0.16877973, 0.09630738), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.09235827, -0.35231477, -0.093315996, -0.035850406, -0.08311695, 0.054329164, 0.17788444, -0.020736141, -0.03739786, -0.1678283, 0.12676615, 0.17182353, 0.17408027, 0.07699043, 0.095501214, 0.0069830767), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(-0.16631392, -0.16925642, -0.17081848, 0.017719474, -0.20530944, 0.19215193, -0.039511178, -0.08296625, 0.2240653, 0.100644305, 0.2901835, 0.32166973, -0.10026419, -0.14864013, -0.19926691, -0.11607018), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(-0.13750182, 0.07445518, -0.033964884, -0.085812084, -0.03903257, -0.054933593, 0.06765632, 0.064338475, 0.27182797, 0.07721309, -0.0334218, -0.19344835, -0.14405386, 0.046106674, 0.16596143, 0.0879945), result);\n\n\t\t\ttex5[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 6\n//!DESC Conv-4x3x3x8\n//!IN tex5\n//!OUT tex6\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex5.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex5.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex5.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex5.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.037546165, -0.015675364, 0.13989694, 0.027605768 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(0.034357008, 0.00082413113, -0.13382089, -0.05066409, 0.26684088, -0.31363875, 0.073608615, 0.20824149, 0.21509308, -0.07118628, 0.11287014, -0.09817389, 0.16107765, 0.17146803, -0.13836654, -0.05962866), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(0.029981667, 0.08738892, 0.17735903, 0.15817277, 0.041752994, -0.20031185, 0.064203605, 0.48786053, -0.0033609737, -0.42522693, 0.058846988, 0.22180536, 0.17181319, 0.13097888, -0.059532285, 0.062227458), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(0.13188283, 0.07971828, 0.28278515, 0.038570832, -0.12815465, 0.29860008, -0.2785862, -0.07612298, -0.14369671, 0.12457525, 0.11982623, -0.018675303, 0.14936846, 0.1284789, -0.0042489986, 0.042810377), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(0.2892425, -0.20834558, 0.07358541, -0.11190968, -0.16300741, 0.15674856, -0.04297203, -0.29218298, -0.036296643, -0.052267153, -0.22889943, -0.21203549, -0.03553075, -0.20343691, -0.07413655, -0.092966415), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(0.2484468, -0.23412868, -0.070199326, 0.2061922, 0.5047224, -0.48216155, -0.5792768, 0.610787, 0.023935676, -0.040435325, -0.1238493, -0.09576053, -0.26183444, 0.14510648, 0.5365255, 0.5499143), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(-0.058255754, 0.08133753, -0.18663554, 0.26190025, 0.26006857, -0.007619795, 0.14585225, 0.073580734, -0.0396066, 0.2821596, 0.31778112, -0.029853562, -0.19703479, 0.17809318, 0.21089044, -0.106730856), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(0.20549655, -0.05962688, 0.1432124, 0.013446325, -0.19064854, 0.061387196, 0.1792527, 0.0010619498, -0.1456842, 0.18950678, -0.13990986, -0.37644413, -0.083257, -0.2937246, 0.032096215, 0.14719158), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(-0.26601696, 0.4242341, -0.073702715, -0.3221337, 0.026037043, -0.0117916465, -0.024286825, 0.23183465, -0.030869482, -0.045915652, -0.040611852, 0.11372697, -0.25404635, 0.21859063, 0.13869432, 0.19651218), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(-0.028276298, -0.11217159, 0.27144867, -0.010531775, 0.11032058, -0.09957206, 0.12570262, 0.14724332, 0.08758557, -0.11042305, 0.025948172, -0.010910802, -0.029466914, -0.041135952, -0.017091949, 0.05501236), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(-0.12688768, -0.19051413, 0.052141912, -0.13618521, -0.16320245, -0.1601866, 0.16207355, -0.023218745, 0.2103894, -0.06212745, -0.07042835, 0.0996637, -0.1763831, 0.13890013, -0.12125462, -0.105104685), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(0.10485512, -0.49283037, -0.504295, 0.009089699, -0.17389494, -0.12835866, 0.14188384, -0.22946316, 0.006298799, -0.0348454, -0.0852419, 0.17956656, -0.08088888, 0.35675287, 0.16014415, -0.055372503), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(-0.17157564, 0.1557075, -0.17681694, 0.14834762, -0.13708206, 0.101721555, 0.17070566, -0.22522852, 0.08100986, -0.23204406, -0.38926315, -0.13165781, 0.1040296, -0.045591615, 0.15745829, -0.10410621), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(-0.20517144, 0.35896194, -0.0010962893, -0.18043008, -0.016253468, 0.035292216, 0.06781499, 0.015984116, -0.20261237, -0.28905126, 0.007414641, 0.008870292, 0.52166605, -0.0996688, -0.23151648, 0.2811893), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.013482173, -0.04891998, -0.06094191, -0.14416319, -0.00087873987, 0.11979091, 0.06457245, -0.2305623, -0.1476981, 0.2634587, -0.058895197, -0.07394766, -0.27173743, 0.7530214, 0.037599873, 0.22086331), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.10357755, 0.23899554, 0.034912035, -0.14336212, -0.019786308, -0.085470654, -0.03096524, 0.108783185, 0.28971127, 0.24527478, -0.19110362, -0.49510127, -0.15574701, 0.10968643, -0.13727877, 0.04502924), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(-0.10808282, -0.079148844, -0.3244773, -0.2210664, -0.0062175165, 0.1303082, 0.012592612, -0.38039228, 0.26899642, -0.16624425, -0.04438198, 0.42067865, -0.13381268, 0.03408099, -0.2999706, -0.3817641), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(0.030872926, -0.26852018, -0.14650428, 0.16869825, -0.19185568, -0.06341456, 0.12261606, -0.26597574, 0.44865233, 0.21416639, 0.40359476, 0.12814924, 0.2542566, -0.23348318, -0.43142912, -0.35113996), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(-0.03364283, 0.11002299, 0.3311268, -0.14580412, -0.10348537, 0.13331696, -0.0793144, -0.04116661, 0.040704627, -0.14875266, -0.09259674, -0.062087066, 0.063962296, 0.18420577, -0.085616685, -0.16555141), result);\n\n\t\t\ttex6[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 7\n//!DESC Conv-4x3x3x8, Conv-3x1x1x56\n//!IN INPUT, tex1, tex2, tex3, tex4, tex5, tex6\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\t\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a = tex6.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b = tex6.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c = tex6.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = tex6.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e = tex6.SampleLevel(sam, pos, 0);\n\tMF4 f = tex6.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g = tex6.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex6.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i = tex6.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 src1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 src2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 src3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 src4 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 src5 = tex5.SampleLevel(sam, pos, 0);\n\tMF4 src6 = tex6.SampleLevel(sam, pos, 0);\n\tMF3 origin = INPUT.SampleLevel(sam, pos, 0).rgb;\n\n\tMF4 src7 = { -0.20554838, -0.10647836, -0.02824578, 0.08658529 };\n\tsrc7 = MulAdd(max(a, 0), MF4x4(-0.35835463, 0.038305778, -0.10198824, -0.021951782, 0.02142098, -0.072417736, -0.2577152, 0.054713376, 0.075116105, -0.21191697, -0.1213158, -0.105036296, 0.12030758, -0.17591658, 0.1726511, 0.17754573), src7);\n\tsrc7 = MulAdd(max(b, 0), MF4x4(0.32325825, 0.19869742, 0.333873, 0.39670366, 0.20716824, 0.09557955, 0.120742686, -0.2271023, 0.37509173, -0.031341635, 0.10247365, 0.031520665, -0.092765376, -0.13535516, 0.8333728, 0.05886494), src7);\n\tsrc7 = MulAdd(max(c, 0), MF4x4(-0.17573749, 0.16768494, 0.021141645, 0.19668253, 0.21080776, 0.31503728, -0.26834, 0.19103156, 0.21946241, 0.14559007, -0.09761235, -0.23565038, -0.49393657, -0.5332298, 0.09806347, 0.054431103), src7);\n\tsrc7 = MulAdd(max(d, 0), MF4x4(-0.042109374, -0.05564321, 0.27586877, 0.010382545, 0.007322007, 0.13193823, -0.18262729, 0.06399193, 0.14174329, 0.3898842, -0.10398105, 0.01846146, -0.24542394, -0.13020967, -0.16491668, -0.03544872), src7);\n\tsrc7 = MulAdd(max(e, 0), MF4x4(-0.15291597, 0.1566557, 0.14745249, -0.23258151, 0.17843612, 0.15885495, -0.691466, -0.41177312, 0.40330106, -0.07991953, 0.2832403, 0.10656986, -0.19571523, 0.3670614, -0.62296015, -0.5666968), src7);\n\tsrc7 = MulAdd(max(f, 0), MF4x4(-0.17513512, 0.011393021, -0.44352317, -0.059153114, -0.2227142, -0.033094753, 0.09624524, 0.051315393, 0.2632246, 0.09945105, 0.042561427, -0.1234722, 0.23755905, -0.506999, 0.114180565, 0.27887583), src7);\n\tsrc7 = MulAdd(max(g, 0), MF4x4(-0.459564, -0.120326266, 0.17507194, 0.06701153, -0.14124362, -0.36653697, -0.2856802, -0.22955593, -0.08515889, 0.18788262, 0.23427077, 0.021544341, 0.31996533, -0.2668834, 0.08469808, -0.01347926), src7);\n\tsrc7 = MulAdd(max(h, 0), MF4x4(-0.14092083, -0.31244513, -0.044023518, 0.013948701, 0.33119613, -0.011959397, -0.1494438, -0.111066826, -0.11994278, 0.116068155, -0.13032633, -0.037004936, 0.13851176, -0.006655432, -0.39841232, -0.079951204), src7);\n\tsrc7 = MulAdd(max(i, 0), MF4x4(-0.08959123, 0.18297827, -0.0763483, 0.11364159, -0.04361797, -0.029816678, -0.19314721, -0.03484794, 0.044681285, 0.04669291, -0.30017474, -0.07453036, 0.090825416, -0.27414632, 0.36355078, 0.15742934), src7);\n\tsrc7 = MulAdd(max(-a, 0), MF4x4(0.18470702, 0.113800436, -0.18546791, 0.044184085, 0.12490399, 0.1826781, -0.01313173, -0.19048993, -0.026458051, -0.1693334, 0.21958382, 0.030458853, -0.059242606, 0.039351143, -0.061676584, -0.06904634), src7);\n\tsrc7 = MulAdd(max(-b, 0), MF4x4(-0.114877924, -0.03781683, -0.19207929, 0.007679428, 0.2409049, 0.2965285, -0.38395065, 0.11604976, -0.22588749, 0.48505852, 0.09866521, -0.2585994, -0.011380872, -0.018334057, -0.047188547, 0.3038583), src7);\n\tsrc7 = MulAdd(max(-c, 0), MF4x4(-0.2783936, -0.17609318, 0.4904369, -0.31848624, 0.39725313, 0.082951784, -0.15595853, -0.007526218, 0.2355193, -0.30003366, -0.27686292, 0.120900005, -0.1223885, 0.40760317, 0.0013726618, -0.24877374), src7);\n\tsrc7 = MulAdd(max(-d, 0), MF4x4(0.1580051, -0.044973504, 0.00053594523, -0.057797022, 0.18895927, 0.23527777, -0.18095906, -0.076961614, 0.2544444, -0.05932328, 0.13717431, -0.024487074, 0.33157274, -0.09072586, -0.004386734, -0.05180953), src7);\n\tsrc7 = MulAdd(max(-e, 0), MF4x4(-0.21685815, 0.061656334, -0.066127226, 0.24831405, 0.26001146, 0.046466008, -0.047196623, 0.13538954, -0.06449239, 0.45951647, -0.13132116, -0.7079741, -0.06683439, -0.47628635, 0.42461708, 0.6475073), src7);\n\tsrc7 = MulAdd(max(-f, 0), MF4x4(0.2590011, -0.26020283, 0.0005333198, 0.01555692, 0.37920526, 0.29205114, -0.20281325, -0.1455974, 0.056119893, 0.022032745, -0.30095813, 0.48154855, -0.35761952, 0.07582935, 0.12462687, 0.068093665), src7);\n\tsrc7 = MulAdd(max(-g, 0), MF4x4(0.20434918, 0.26690874, 0.028224666, 0.042565826, 0.037406113, 0.5059272, -0.0047208676, 0.0019095197, 0.16626422, -0.23407575, -0.072687164, 0.00063299487, -0.10172441, -0.11645544, 0.008715937, -0.012423992), src7);\n\tsrc7 = MulAdd(max(-h, 0), MF4x4(0.08269191, 0.116322584, -0.08155921, -0.04790326, 0.09546776, 0.3632936, -0.08139031, -0.10399187, 0.06618616, -0.26862565, 0.25058737, 0.0410593, -0.07191658, -0.20559746, 0.21857823, 0.12776822), src7);\n\tsrc7 = MulAdd(max(-i, 0), MF4x4(0.54989135, 0.38051483, 0.015739547, -0.0068143173, 0.26107135, 0.2585036, -0.12345306, -0.13934542, -0.19018838, 0.2730626, 0.42644337, 0.16693048, -0.15189888, 0.023638237, 0.11272267, 0.039560657), src7);\n\n\tMF3 result = { -0.0039074384, -0.0085585555, -0.0132283475 };\n\tresult = MulAdd(max(src1, 0), MF4x3(-0.030150581, -0.002168429, 0.014918388, 0.020940892, 0.04591048, 0.049137186, 0.111167125, 0.05311203, 0.0625381, 0.020043287, 0.04785493, 0.040921766), result);\n\tresult = MulAdd(max(-src1, 0), MF4x3(0.04158565, -0.008488135, 0.0020472286, 0.049123142, -0.055042226, -0.06489915, 0.09238876, 0.10387972, 0.09576964, -0.054776173, -0.098954335, -0.09018853), result);\n\tresult = MulAdd(max(src2, 0), MF4x3(0.2081418, 0.08273068, 0.040325668, -0.09937802, -0.13162258, -0.13989717, -0.13983749, 0.01309777, 0.0023888077, -0.18937743, -0.07021057, -0.047152344), result);\n\tresult = MulAdd(max(-src2, 0), MF4x3(-0.09646629, 0.080605574, 0.10463501, 0.22579835, 0.24077554, 0.22600271, 0.049726978, 0.015292378, -0.0047161994, 0.16281025, 0.048491795, 0.038338162), result);\n\tresult = MulAdd(max(src3, 0), MF4x3(-0.09772107, -0.043998875, -0.054745924, -0.1257736, -0.13175423, -0.10889618, -0.015900036, 0.07074481, 0.08210496, -0.11321135, -0.12526917, -0.105605066), result);\n\tresult = MulAdd(max(-src3, 0), MF4x3(0.14187162, 0.14032297, 0.13016908, 0.018954534, 0.016011704, 0.010169183, 0.04762765, -0.044460997, -0.06499567, 0.11133751, 0.09464176, 0.08865274), result);\n\tresult = MulAdd(max(src4, 0), MF4x3(-0.16567162, -0.1744712, -0.1637222, -0.02412003, 0.0074480795, 0.007903436, -0.06161098, -0.046788957, -0.03971239, 0.030736001, 0.036460854, 0.03660504), result);\n\tresult = MulAdd(max(-src4, 0), MF4x3(0.084027, 0.10024112, 0.08152756, 0.005087354, -0.026047802, -0.027264625, 0.10519243, 0.08977278, 0.077558964, -0.052826345, -0.06602686, -0.055083472), result);\n\tresult = MulAdd(max(src5, 0), MF4x3(0.007862721, 0.009936555, 0.012004831, -0.042322706, -0.061728776, -0.05359773, 0.030532641, 0.045623366, 0.04214089, 0.030569768, 0.011892851, 0.0074041556), result);\n\tresult = MulAdd(max(-src5, 0), MF4x3(0.03948997, 0.043119986, 0.039943404, 0.0526772, 0.06820589, 0.058139592, -0.062081397, -0.06755701, -0.054816127, -0.004076369, 0.0061744447, 0.016273081), result);\n\tresult = MulAdd(max(src6, 0), MF4x3(0.0071622543, 0.004829105, -0.002032197, -0.048541367, -0.059043564, -0.05662218, 0.0015553127, 0.009178359, 0.009577062, 0.114169896, 0.1349016, 0.11432262), result);\n\tresult = MulAdd(max(-src6, 0), MF4x3(0.019324556, 0.028323999, 0.027396113, 0.016746879, 0.01608199, 0.026891617, 0.12068619, 0.13617857, 0.113496214, -0.013930715, -0.014250072, -0.00824306), result);\n\tresult = MulAdd(max(src7, 0), MF4x3(-0.0024534757, -0.0064973077, -0.007905654, -0.019158727, -0.024820521, -0.020509848, -0.09608131, -0.11177871, -0.10503465, -0.011210447, -0.010875943, -0.015295865), result);\n\tresult = MulAdd(max(-src7, 0), MF4x3(0.09681486, 0.113604136, 0.10416855, -0.08199983, -0.09013433, -0.08562243, 0.041304465, 0.048315883, 0.042945288, -0.09863276, -0.117853515, -0.09870226), result);\n\n\tOUTPUT[gxy] = MF4(result + origin, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Restore_Soft_S.hlsl",
    "content": "// Anime4K_Restore_CNN_Soft_S\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Restore/Anime4K_Restore_CNN_Soft_S.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Restore_Soft_0\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { 0.0113532655, -0.06449327, 0.035503868, 0.5683031 };\n\t\t\tresult = MulAdd(src[i - 1][j - 1], MF3x4(0.10922428, -0.16249932, 0.15452726, -0.15669551, 0.053448875, -0.16528402, 0.01697721, -0.049275912, 0.20947173, -0.10576949, 0.19738325, -0.025417482), result);\n\t\t\tresult = MulAdd(src[i - 1][j], MF3x4(-0.3285196, 0.15909512, -0.5273671, 0.23778777, -0.40508887, -0.0609677, -0.4188177, 0.11137456, -0.24131267, 0.10453423, -0.36216277, 0.053446792), result);\n\t\t\tresult = MulAdd(src[i - 1][j + 1], MF3x4(0.23072472, -0.082083695, -0.0041477727, -0.09136237, 0.11958912, -0.312698, -0.15842685, -0.013882424, 0.10933724, 0.017880991, -0.022167003, 0.014662608), result);\n\t\t\tresult = MulAdd(src[i][j - 1], MF3x4(-0.2789985, 0.054727737, 0.22577816, -0.49625716, -0.48472273, -0.011525487, 0.5354349, -0.08814955, -0.27021924, -0.044563178, 0.008232271, -0.13480483), result);\n\t\t\tresult = MulAdd(src[i][j], MF3x4(-0.18203105, 0.09277001, 0.27071548, -0.17773713, -0.4335171, 1.2275106, -0.07663438, -0.29020032, 0.011992759, 0.060106967, 0.11002492, -0.046098012), result);\n\t\t\tresult = MulAdd(src[i][j + 1], MF3x4(0.08363418, 0.063420765, -0.10278259, 0.09357691, 0.38670546, 0.13577081, 0.048631024, -0.024960777, 0.0846784, -0.057097007, 0.06049236, 0.042082917), result);\n\t\t\tresult = MulAdd(src[i + 1][j - 1], MF3x4(0.12315548, -0.056513585, -0.09826642, -0.17079762, 0.06479095, -0.36984903, -0.12512982, 0.042867575, 0.08360464, 0.12835538, -0.005067881, 0.02542005), result);\n\t\t\tresult = MulAdd(src[i + 1][j], MF3x4(0.18997705, 0.086363226, -0.0007131526, 0.19858918, 0.39745626, -0.0090341605, 0.27864447, 0.20052041, 0.010576528, -0.089242525, -0.025109483, -0.030768145), result);\n\t\t\tresult = MulAdd(src[i + 1][j + 1], MF3x4(0.05427315, -0.060894873, 0.06548642, 0.095537595, 0.29116166, -0.16159569, -0.13293959, -0.112566955, 0.0059667625, 0.016041303, 0.03831561, 0.09869594), result);\n\n\t\t\ttex1[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x8\n//!IN tex1\n//!OUT tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex1.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex1.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex1.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex1.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.106538564, -0.065693766, -0.03790106, 0.04776706 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.027102098, 0.2640691, 0.1169015, 0.030902913, 0.15404584, 0.1361459, -0.38066056, 0.096569136, -0.111836195, -0.0051853824, -0.0996669, -0.23538585, -0.07060754, -0.18889332, -0.10793357, -0.15154232), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(0.1378689, 0.21024452, 0.010976513, 0.0179521, -0.05993059, -0.28364083, 0.24486947, 0.21347582, -0.12522404, -0.16091396, 0.15499291, 0.08353191, -0.03342411, -0.08964405, 0.25111282, -0.07550899), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.06398718, 0.05763278, 0.021394925, 0.14780094, -0.033050716, 0.03346528, -0.0846797, 0.0125302235, 0.18018652, 0.24586707, 0.050538495, 0.09879243, -0.100035876, 0.043505374, 0.042692907, -0.08768257), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.11572878, 0.0545887, 0.16437739, 0.2775331, 0.10323911, -0.18938646, -0.17097469, -0.188723, 0.085762165, 0.14605838, -0.15568069, -0.16947642, 0.09042493, -0.087587915, -0.041969277, 0.27252352), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(0.21475963, -0.018211678, -0.5711054, -0.09235345, -0.20367791, -0.23041399, 0.16346097, 0.007901888, 0.12542121, 0.16807431, 0.09862575, 0.16968751, 0.28490388, 0.40945014, -0.22364445, 0.14460565), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.27512726, 0.14046481, -0.17684339, 0.102218024, -0.10503195, 0.3080809, 0.03681373, 0.2668656, -0.093752496, -0.07476867, 0.19900662, 0.06028286, -0.19815882, -0.0584525, 0.027984729, -0.02143819), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(-0.16829525, -0.06818115, 0.0006509334, 0.01163159, 0.18918815, -0.10731989, -0.008126929, -0.47991323, -0.11022971, 0.19150843, 0.05272113, -0.34417602, 0.022882428, 0.1774031, 0.062597334, -0.09915319), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(0.32131585, 0.05668815, -0.34203658, 0.05542482, -0.008077225, 0.009148517, 0.10953332, -0.050969962, 0.09904077, 0.46938205, -0.5148919, -0.22275375, -0.10536104, -0.23662373, 0.002147416, -0.14256701), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(-0.19335353, -0.103732094, 0.17156832, 0.0059756916, -0.118641876, 0.14529023, -0.18662338, 0.0447326, 0.026719248, 0.042491894, 0.026437795, 0.05601309, 0.08645617, 0.08365193, -0.039582565, 0.16612953), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(-0.014315469, 0.012588422, 0.037587024, 0.08707526, -0.08064868, -0.28149533, 0.27326405, 0.21468583, -0.04278333, 0.29369017, 0.18653142, 0.035729136, 0.079363555, 0.30725953, 0.0147137, 0.08527481), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(0.06659263, 0.03452449, -0.33752796, 0.0066543026, 0.48697233, 0.019602561, -0.32033685, -0.20538871, 0.3089118, 0.4315903, -0.13524854, -0.10791581, 0.3315688, 0.13135147, -0.26904663, 0.142365), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.13619833, 0.045271892, -0.029841429, 0.010704955, -0.29257727, -0.10563375, 0.35345638, -0.06734038, -0.043791633, -0.0056891907, -0.078411415, 0.075443126, -0.05746597, -0.19959894, -0.12797245, 0.18837726), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(0.25673476, 0.120482095, -0.23827696, -0.13557845, 0.300447, -0.3008584, -0.13834439, 0.5459493, -0.26155484, 0.06905137, 0.16247983, 0.039960653, -0.023218757, 0.07977591, -0.11354706, -0.25831422), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.0842605, 0.282916, 0.14062001, 0.06356874, 0.55912817, 0.1743876, -0.30324093, 0.052068707, -0.20756413, 0.27321506, -0.26560605, -0.27695876, -0.3927334, -0.5439608, 0.39293098, -0.001130203), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.021890296, -0.12703396, 0.06660714, -0.03164527, 0.0018722567, -0.26552317, 0.06978973, -0.24030049, 0.46008193, 0.5595346, 0.081981994, -0.038414747, -0.010446991, -0.56102365, -0.079274766, -0.01851302), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.052988984, 0.030581746, -0.06868741, 0.21545182, -0.5706256, -0.0034910638, 0.48361364, 0.9020033, -0.02242781, -0.13256042, 0.08997955, 0.21001706, -0.059571438, -0.040119104, -0.05029196, -0.127414), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(-0.08275339, -0.05999088, 0.11068767, 0.014646892, -0.041986465, 0.1028236, -0.17218924, 0.026559748, -0.17412743, -0.38364175, 0.17410514, 0.13038695, 0.23155633, 0.2655843, 0.045085523, 0.13005458), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(-0.013383197, -0.064526096, 0.049046878, 0.015992291, 0.123987064, 0.0104690585, 0.07065378, -0.009824511, -0.036109775, 0.13384768, 0.29676288, -0.39475223, -0.009368096, -0.05666906, -0.09132696, -0.082638375), result);\n\n\t\t\ttex2[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x8\n//!IN tex2\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex2.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex2.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex2.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex2.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.0063428865, 0.0057986965, -0.12526293, -0.059240736 };\n\t\t\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(0.024004154, -0.26474997, -0.5256586, 0.051624652, -0.16621786, 0.2964122, 0.6044247, -0.14335106, 0.17002718, -0.2679876, -0.30162668, 0.1273794, -0.17601459, -0.1782376, 0.104725115, -0.16351137), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(-0.121676154, 0.047741555, -0.06738679, -0.056402843, 0.004424971, -0.35099635, -0.073440626, 0.039784692, 0.15204315, -0.1165704, 0.11231046, -0.27369732, 0.33737272, -0.11880767, 0.09637475, -0.14709689), result);\n\t\t\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.017987821, -0.08798823, -0.062515825, -0.046803873, -0.05871703, 0.27013004, 0.19397618, -0.052147817, 0.003271283, -0.0029015478, -0.07390092, -0.09348337, -0.1574738, 0.06750957, -0.07661155, 0.054327156), result);\n\t\t\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.15215784, -0.72508365, -0.3202069, 0.20295432, -0.19125701, 0.021401431, -0.051837035, -0.025939213, 0.25565025, -0.12872623, 0.13169816, 0.27377388, -0.008718429, -0.05864064, 0.028844763, 0.1144993), result);\n\t\t\tresult = MulAdd(max(src[i][j], 0), MF4x4(-0.30012092, -0.1322455, -0.11868545, 0.09857058, 0.082795605, -0.075334676, -0.3752773, -0.02918163, -0.67764, -0.38598236, -0.21023573, 0.38274166, -0.07398165, -0.07213789, -0.28427607, 0.1266569), result);\n\t\t\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(-0.37507388, 0.18809201, -0.21982779, 0.27208912, 0.022066567, -0.27627763, 0.12345216, -0.30041683, 0.017002959, -0.091398515, -0.25207692, -0.29253414, -0.08231422, -0.14665812, -0.07868529, -0.24562219), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(0.08686712, 0.080837384, 0.20736577, 0.008233064, 0.14957365, 0.21801959, -0.04870689, 0.42149112, 0.27255878, 0.33320278, -0.08467146, 0.10381615, 0.055278245, 0.085710146, 0.009097151, 0.29092705), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(0.0012207404, -0.023874281, -0.027035477, 0.005157451, 0.19330226, 0.33711615, -0.16495204, 0.549021, 0.44879642, 0.1978837, -0.20492741, 0.28099406, 0.2631811, 0.40786585, -0.055340275, 0.2575511), result);\n\t\t\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(0.29127392, -0.06287165, 0.12715077, 0.14784902, -0.3183704, 0.42057636, -0.11483724, -0.3019506, 0.010730576, 0.29091576, -0.046116166, -0.23528357, -0.0037143505, 0.1191774, -0.06084074, 0.011641706), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(-0.2579205, 0.036545023, 0.11691888, 0.04996418, 0.21318026, 0.21370813, -0.14114271, 0.031217605, -0.06979331, -0.0690704, 0.04618086, 0.025164584, -0.10994228, 0.109930746, 0.103678934, 0.12193115), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(-0.19843774, -0.11237926, 0.007291354, 0.16480611, -0.15669724, 0.46283355, 0.077065215, 0.112273656, 0.17143534, -0.19934891, -0.25481275, 0.034591813, -0.27032652, -0.2702769, 0.04816228, -0.031614583), result);\n\t\t\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(-0.16307239, -0.11295217, 0.05861256, 0.14225823, -0.015648091, 0.11741865, 0.113366075, 0.023935538, 0.19560932, -0.10553561, -0.042583376, -0.048160724, -0.3116519, 0.13957061, -0.0044852323, -0.015472912), result);\n\t\t\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(-0.15629178, 0.06463271, -0.13176678, 0.025518289, -0.021733627, 0.22236359, 0.019508492, -0.11629477, 0.10801276, -0.021957984, -0.11272639, -0.03615053, -0.121420704, 0.2520835, 0.043395765, 0.1699031), result);\n\t\t\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.2886654, 0.21755892, 0.21757497, 0.08442575, -0.109903164, -0.67295986, 0.22886126, -0.027185453, 0.3761606, 0.23199768, 0.05908783, -0.1496158, 0.10832971, -0.3530352, 0.20234483, -0.07615918), result);\n\t\t\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(0.11043024, 0.18943349, 0.42394367, 0.029350199, -0.15085667, 0.020204183, -0.081609115, 0.07907012, 0.33805525, 0.0066280114, 0.0018284445, 0.022983696, 0.004984607, 0.0429299, -0.14568979, -0.29143327), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(-0.16376027, -0.20387048, 0.06522074, 0.17484841, -0.13885716, -0.04380927, -0.03535832, -0.16978237, -0.004799155, -0.25407305, -0.039976966, -0.011992087, -0.22535577, -0.09583549, 0.0334331, 0.016292758), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(-0.38688713, -0.20232083, 0.23887886, -0.10438324, -0.24170811, -0.074868314, 0.03977399, -0.22810821, -0.08257971, -0.11902456, 0.106009185, -0.078289054, -0.11932821, 0.024207884, 0.10070917, 0.79348284), result);\n\t\t\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(-0.4018743, 0.050456528, 0.035341598, -0.03788609, 0.12964934, -0.44461823, 0.029031694, 0.29604837, -0.102386944, -0.13805065, 0.0055692918, 0.14659804, -0.22499937, 0.14680648, -0.3443954, -0.06994176), result);\n\n\t\t\ttex1[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 4\n//!DESC Conv-3x3x3x8\n//!IN INPUT, tex1\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF3 result = { -0.008303841, -0.008251826, -0.0069884053 };\n\tresult = MulAdd(max(a, 0), MF4x3(0.08631539, 0.09499331, 0.065609254, -0.023760278, -0.027293118, -0.022839671, -0.012447854, -0.008565141, -0.012041815, -0.033292875, -0.031266093, -0.02874347), result);\n\tresult = MulAdd(max(b, 0), MF4x3(0.08709062, 0.09760889, 0.08988583, -0.09099671, -0.102120616, -0.098076016, 0.057814583, 0.06999608, 0.05961344, 0.12246188, 0.1319784, 0.12254915), result);\n\tresult = MulAdd(max(c, 0), MF4x3(0.07694916, 0.0822054, 0.07549296, -0.046808865, -0.051509347, -0.035890795, 0.01599848, 0.014677793, 0.0086143715, 0.033142705, 0.0426565, 0.035911378), result);\n\tresult = MulAdd(max(d, 0), MF4x3(-0.0008269902, 0.0009082343, 0.014101725, 0.0006387551, 0.005079344, -0.013034868, 0.013909732, 0.011026747, 0.012485332, 0.027028518, 0.022164145, 0.03183532), result);\n\tresult = MulAdd(max(e, 0), MF4x3(-0.33575395, -0.36700967, -0.34140685, 0.35850254, 0.37535715, 0.34613726, -0.12680013, -0.1256115, -0.112494245, -0.061541136, -0.059120018, -0.06552594), result);\n\tresult = MulAdd(max(f, 0), MF4x3(-0.047570463, -0.050335366, -0.04665491, -0.110970475, -0.12363716, -0.11072252, 0.041563414, 0.059771337, 0.045290247, -0.17999935, -0.19700716, -0.17459513), result);\n\tresult = MulAdd(max(g, 0), MF4x3(0.078488424, 0.07483357, 0.08347933, -0.0063715233, 0.00035415235, -0.010886946, 0.031237155, 0.02512343, 0.034399323, -0.023146842, -0.026732154, -0.027644241), result);\n\tresult = MulAdd(max(h, 0), MF4x3(-0.05906883, -0.06784104, -0.04506148, -0.003939601, -0.0011749315, -0.006256036, -0.1662408, -0.16871658, -0.16598499, 0.051277652, 0.04837499, 0.05120855), result);\n\tresult = MulAdd(max(i, 0), MF4x3(0.08158806, 0.08674548, 0.07437206, -0.05765347, -0.06196418, -0.057311118, 0.26747537, 0.2668808, 0.2389857, -0.010376844, -0.01690028, -0.008414153), result);\n\tresult = MulAdd(max(-a, 0), MF4x3(0.030539425, 0.02415435, 0.039969034, 0.006491679, 0.014436586, 0.005435709, -0.0058292216, -0.013982021, -0.011243379, 0.025942149, 0.015361476, 0.019134998), result);\n\tresult = MulAdd(max(-b, 0), MF4x3(-0.06322247, -0.07146787, -0.06673042, 0.028702464, 0.039047733, 0.039646607, -0.072553575, -0.08046175, -0.07027197, -0.1447189, -0.1539398, -0.1466465), result);\n\tresult = MulAdd(max(-c, 0), MF4x3(-0.046430312, -0.054549117, -0.048076343, 0.032971155, 0.02980819, 0.029172963, -0.017612953, -0.015100736, -0.01202649, -0.026717246, -0.028401854, -0.034548033), result);\n\tresult = MulAdd(max(-d, 0), MF4x3(-0.0020459262, -0.0008748501, -0.012601956, 0.0054226154, 0.008867029, 0.018921215, -0.0021330053, -0.0036601655, -0.0022091097, -0.08636891, -0.10203159, -0.09741449), result);\n\tresult = MulAdd(max(-e, 0), MF4x3(0.07306159, 0.08245483, 0.06548199, -0.1933229, -0.20326294, -0.19189309, 0.107496604, 0.11584994, 0.10907522, 0.30877885, 0.31297725, 0.30890995), result);\n\tresult = MulAdd(max(-f, 0), MF4x3(0.03192904, 0.035112645, 0.033732817, 0.074100636, 0.08349646, 0.06659352, -0.1136165, -0.12470947, -0.11192198, 0.14465587, 0.16328491, 0.13984151), result);\n\tresult = MulAdd(max(-g, 0), MF4x3(-0.05098033, -0.053096622, -0.05533725, 0.0045651463, -0.007682458, 0.0026934785, -0.021199327, -0.016210148, -0.030939564, -0.031621892, -0.046702545, -0.02647333), result);\n\tresult = MulAdd(max(-h, 0), MF4x3(0.055801813, 0.06430485, 0.05052402, 0.0241233, 0.013879883, 0.017344628, 0.08707151, 0.10031039, 0.095042154, -0.109053336, -0.11414017, -0.111838564), result);\n\tresult = MulAdd(max(-i, 0), MF4x3(0.030582374, 0.03604719, 0.040417343, 0.038665913, 0.036998056, 0.030004544, 0.09209076, 0.10010001, 0.08389406, -0.014655714, -0.0074866647, -0.012227013), result);\n\n\tresult += INPUT.SampleLevel(sam, pos, 0).rgb;\n\n\tOUTPUT[gxy] = MF4(result, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Restore_Soft_UL.hlsl",
    "content": "// Anime4K_Restore_CNN_Soft_UL\n// Ported from https://github.com/bloc97/Anime4K/blob/4ba94b179a144200cb6b3052e690fe2ca5c6914c/glsl/Restore/Anime4K_Restore_CNN_Soft_UL.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Restore_Soft_4\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex7;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex8;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1, tex2, tex3\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\t\n    uint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = { -0.03509807, 0.029998481, -0.08691994, -0.017055636 };\n\t\t\ttarget1 = MulAdd(src[i - 1][j - 1], MF3x4(-0.23234928, -0.070085905, 0.0040122913, 0.21575761, -0.25936925, -0.20185155, 0.022299573, 0.2812235, -0.11045535, -0.11106335, -0.12113332, -0.49919847), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j], MF3x4(-0.48585954, -0.058959674, 0.11114158, -0.1971666, -0.24872562, 0.2667282, -0.107163996, 0.12475151, -0.027792914, -0.06700173, -0.10966316, 0.09399147), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j + 1], MF3x4(-0.16666615, -0.15644506, 0.048309084, 0.19122206, -0.1522582, 0.15417537, -0.23017146, 0.09460856, 0.074704535, 0.2168164, 0.2077189, -0.29264635), target1);\n\t\t\ttarget1 = MulAdd(src[i][j - 1], MF3x4(0.3167284, -0.20522436, -0.050071932, -0.036290437, 0.20206359, 0.012589764, -0.1251284, -0.2911492, -0.0006390347, -0.09853893, 0.14406726, 0.33612582), target1);\n\t\t\ttarget1 = MulAdd(src[i][j], MF3x4(0.13786903, 0.51342535, -0.44004235, -0.23918492, 0.5614157, 0.011565876, 0.5419984, -0.15937872, -0.075360805, 0.018496322, 0.12582661, 0.40117717), target1);\n\t\t\ttarget1 = MulAdd(src[i][j + 1], MF3x4(0.19644158, 0.12697817, 0.15092115, 0.1963961, -0.03395398, -0.17465135, -0.04086773, 0.09187623, 0.18238129, -0.0063141263, -0.26402372, -0.28761682), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j - 1], MF3x4(-0.010849395, 0.15082607, 0.095264904, -0.038952388, -0.1121466, 0.21590506, 0.029462064, -0.65400773, 0.18295552, 0.2425088, 0.121624336, 0.7189011), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j], MF3x4(0.17197245, -0.04397748, 0.18232836, -0.04471754, 0.071163684, -0.20590816, 0.39706057, -0.5452873, -0.11754515, 0.006909551, 0.018450081, 0.5686299), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j + 1], MF3x4(0.077441245, -0.25645187, -0.19979256, -0.010363122, -0.04312338, -0.08810754, -0.059999906, 0.38630447, -0.11017497, -0.16309647, 0.026156282, -0.35432625), target1);\n\n\t\t\tMF4 target2 = { 0.6537504, 0.07195351, -0.38729003, -0.0374416 };\n\t\t\ttarget2 = MulAdd(src[i - 1][j - 1], MF3x4(-0.34123975, 0.06927292, 0.12252625, 0.1038146, 0.15979475, 0.24436772, -0.016088272, -0.22664197, 0.16932374, 0.10719134, -0.16895153, 0.100098394), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j], MF3x4(0.11094869, -0.1379463, -0.53625333, -0.42690855, 0.12101115, -0.004709155, 0.6293494, 0.4763549, 0.030926082, -0.20099613, 0.39174548, 0.31219363), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j + 1], MF3x4(0.08731028, -0.010540878, 0.0757335, -0.1466203, -0.23115048, -0.17813745, 0.17698573, 0.18787299, 0.16219892, 0.10475756, -0.23984352, 0.025724094), target2);\n\t\t\ttarget2 = MulAdd(src[i][j - 1], MF3x4(0.27665043, 0.4118298, -0.08762915, -0.07885308, 0.05053698, 0.28148478, -0.005842398, 0.15139125, -0.3791668, 0.24871133, 0.18160823, -0.10384939), target2);\n\t\t\ttarget2 = MulAdd(src[i][j], MF3x4(-0.3206045, -0.22038852, -0.3038138, -0.0482595, -0.26852164, -0.23278148, 0.30639926, 0.2578657, -0.3874695, 0.06441954, 0.00026220892, 0.04361178), target2);\n\t\t\ttarget2 = MulAdd(src[i][j + 1], MF3x4(-0.17908047, -0.0900835, 0.00652168, -0.038639892, 0.1520494, -0.13204975, -0.020355739, 0.26766944, 0.021308672, -0.31918222, 0.050667368, 0.10367864), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j - 1], MF3x4(-0.112388864, 0.053321466, 0.2691917, 0.26902813, 0.010105532, 0.24898581, -0.13757521, -0.10214595, 0.23615286, -0.09560994, -0.15046176, -0.08853913), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j], MF3x4(-0.36796987, -0.2124952, -0.07535088, 0.13065732, -0.21852261, 0.06934692, -0.013749303, -0.44900006, 0.3352218, 0.090437174, 0.08993535, -0.3050165), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j + 1], MF3x4(0.11873657, 0.13483031, 0.22352207, 0.23666611, 0.18977334, -0.32066482, -0.31396368, -0.5615055, -0.14588253, 0.0121516865, 0.0614425, -0.079611346), target2);\n\n\t\t\tMF4 target3 = { -0.04453386, 0.06632044, 0.061607827, -0.19856223 };\n            target3 = MulAdd(src[i - 1][j - 1], MF3x4(0.16112354, 0.3756035, 0.09619928, 0.17283864, 0.054338567, -0.061197184, -0.10173672, -0.032733057, -0.111913994, -0.28940153, -0.062114924, 0.20520677), target3);\n\t\t\ttarget3 = MulAdd(src[i - 1][j], MF3x4(0.3500745, 0.467141, -0.101748556, 0.43384346, 0.06712478, -0.43235737, 0.014446082, -0.12634972, -0.07507498, 0.025314584, 0.22664048, 0.22121347), target3);\n\t\t\ttarget3 = MulAdd(src[i - 1][j + 1], MF3x4(-0.089320965, 0.319314, -0.06869195, -0.2465581, 0.449762, -0.38919032, 0.1562217, 0.05368933, 0.20758076, 0.0659555, -0.109858744, -0.114917934), target3);\n\t\t\ttarget3 = MulAdd(src[i][j - 1], MF3x4(-0.07451217, 0.2239877, -0.009071173, 0.21869898, 0.042301223, 0.13635477, -0.20052543, 0.26130545, -0.051627826, -0.3429969, 0.093028575, -0.35710186), target3);\n\t\t\ttarget3 = MulAdd(src[i][j], MF3x4(-0.16129561, -0.31247056, -0.123016216, 0.2122524, -0.2972285, 0.2718142, -0.17284301, 0.44368207, -0.032497104, 0.18240568, -0.28283152, -0.10045272), target3);\n\t\t\ttarget3 = MulAdd(src[i][j + 1], MF3x4(0.15945031, -0.6797371, 0.3974546, 0.24741851, -0.1340806, 0.41666976, 0.27850744, -0.21406768, 0.096567124, 0.23366652, 0.15648519, -0.07626781), target3);\n\t\t\ttarget3 = MulAdd(src[i + 1][j - 1], MF3x4(-0.053246673, 0.14282355, -0.114118166, -0.3172004, -0.18055372, -0.3400759, -0.19622837, 0.076828666, 0.29225305, 0.14866155, 0.07959014, -0.041400358), target3);\n\t\t\ttarget3 = MulAdd(src[i + 1][j], MF3x4(-0.25331625, -0.14193451, 0.04879846, -0.077393495, 0.0104558095, 0.37905747, -0.07880302, -0.09453499, -0.1426901, -0.19738746, -0.28036812, 0.03675319), target3);\n\t\t\ttarget3 = MulAdd(src[i + 1][j + 1], MF3x4(-0.08954212, -0.47161737, -0.12388452, -0.08005436, 0.04682568, 0.048485547, 0.31411946, -0.31375095, -0.22892538, 0.16906887, 0.16802602, 0.18711087), target3);\n\n\t\t\ttex1[destPos] = target1;\n\t\t\ttex2[destPos] = target2;\n            tex3[destPos] = target3;\n\t\t}\n\t}\n}\n\n//!PASS 2\n//!DESC Conv-4x3x3x24\n//!IN tex1, tex2, tex3\n//!OUT tex4, tex5, tex6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { -0.17880301, 0.20980668, -0.013683405, -0.015587634 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.09962672, -0.09808486, 0.14167309, 0.050132442, 0.10861549, -0.03472704, -0.13705672, -0.029933043, 0.09841877, 0.07278074, -0.017292077, -0.027848938, 0.07552298, 0.076578915, -0.023463586, 0.052939452), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.0010984733, -0.17330085, -0.08229318, -0.2175911, 0.08144593, 0.059445348, -0.15086831, -0.10372944, 0.117648594, -0.12558225, -0.11103407, -0.0701386, -0.05065664, -0.07396901, -0.11938091, 0.039866682), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.15428792, 0.23440446, 0.21962269, 0.2650896, -0.03476033, 0.15719226, -0.12486064, 0.2167058, -0.023046771, -0.20562397, 0.10107006, -0.01569021, 0.16730824, -0.01259593, 0.053364236, -0.04500823), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.030429626, -0.13110232, 0.057990804, 0.011675255, -0.05295247, -0.15326303, 0.22707884, -0.07973966, 0.0439027, -0.13198115, 0.07837125, -0.07131822, 0.05269012, -0.2104038, 0.048907652, -0.020645073), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.0031781355, -0.021097122, -0.26952672, -0.3207644, 0.08375256, -0.14136748, 0.18542029, 0.15215854, 0.091964215, 0.26967737, 0.0587766, -0.07700872, 0.16575423, 0.35469708, -0.0051588053, -0.0006740279), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.08884001, 0.14041351, 0.17474355, 0.4161406, 0.023943432, 0.003970282, 0.29985484, 0.10266973, -0.25273883, -0.14029191, 0.11345857, 0.31820163, -0.38953283, 0.2583901, 0.009964725, 0.058217626), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.2032424, -0.07082582, 0.1580928, -0.048965808, 0.2141858, -0.041104354, -0.034682848, -0.15914723, 0.04790725, -0.024282899, 0.07099358, 0.16498338, -0.112657525, -0.0616071, -0.008030092, -0.016227499), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.061936792, 0.21455337, 0.48054412, -0.04828425, 0.010028972, 0.11099989, 0.095458575, -0.19660684, 0.0425463, 0.11828354, -0.124904655, -0.17428195, 0.011525431, -0.124187276, -0.04230918, -0.035113487), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.31514692, 0.08103313, 0.11659174, 0.08965401, -0.1970772, 0.14856051, -0.1938787, -0.16033082, -0.18799798, 0.030507786, -0.16664562, -0.13656873, 0.17780142, -0.25997472, 0.026064966, 0.011898), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.057235047, -0.27046695, -0.010699785, 0.049249526, 0.047039963, -0.077151395, -0.14362605, 0.06164646, 0.114476524, -0.17911421, -0.08053587, 0.11165565, -0.09624257, 0.025738657, -0.103865884, -0.03431851), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.14757289, -0.011688203, 0.13329901, -0.117047496, 0.0012821602, 0.1926134, -0.20751058, -0.07072285, 0.010413468, 0.056632243, 0.115734495, -0.02967846, -0.03047392, -0.21189988, -0.0011950757, -0.19957498), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.08746177, -0.12079578, 0.04276918, -0.005454131, 0.11490783, -0.12847133, -0.09437031, -0.30269814, -0.21966903, -0.19212759, 0.02010421, -0.041956432, 0.10274604, -0.29135153, -0.05896102, -0.23609753), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.041169632, -0.1239918, 0.11654365, 0.12085256, -0.16491309, 0.16958053, 0.08106695, 0.017548209, 0.005812545, 0.18601535, -0.26115587, 0.06350569, -0.05120703, 0.288068, -0.10665016, 0.14517978), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.031448353, 0.10505269, -0.11342215, 0.066149935, -0.11060372, 0.023158634, 0.112362646, -0.12653005, 0.10593459, 0.16429284, 0.105653964, 0.057039205, 0.43216446, 0.40089405, -0.13454677, 0.10088736), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.006024284, -0.085603446, -0.03500259, -0.12583484, 0.037410516, -0.162403, -0.16079305, -0.40704638, -0.02878602, -0.05373755, 0.22466864, -0.18264142, 0.006703932, -0.2611284, 0.12246666, -0.09028182), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.060709704, -0.10833455, 0.057897534, 0.13747421, 0.023012483, 0.037656587, 0.14315368, -0.016442677, 0.047911663, -0.0069572264, 0.044352237, 0.3486672, -0.21061146, 0.09642802, 0.05590367, -0.060553044), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.04283378, 0.24103515, -0.13148557, 0.010205976, -0.043310534, 0.10729743, 0.038866118, 0.18446185, -0.01657694, 0.1901015, 0.07020068, 0.12353552, 0.038972974, 0.23214848, -0.25911716, -0.019023877), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.12810664, 0.2588679, -0.01086673, -0.028045006, 0.19610372, -0.096308656, 0.0042522033, 0.13961965, 0.11584688, 0.04171374, -0.22028726, -0.24815048, 0.18253902, -0.2803496, 0.04638075, 0.036636963), target1);\n\ttarget1 = MulAdd(a3, MF4x4(-0.063880704, -0.1977201, -0.053342164, -0.066917926, -0.11009935, 0.17052847, 0.04694616, 0.07041865, 0.0104053635, 0.17147705, 0.14641339, 0.02914492, 0.02223927, -0.15581869, 0.0073570404, -0.092718706), target1);\n\ttarget1 = MulAdd(b3, MF4x4(-0.11074706, 0.09035497, 0.041304804, -0.05657743, 0.02258131, 0.15751973, -0.08892718, 0.09498991, -0.062650494, 0.1528085, 0.08637203, 0.015458079, 0.080385685, 0.0014520894, -0.1777884, -0.022080136), target1);\n\ttarget1 = MulAdd(c3, MF4x4(-0.12261772, 0.14604463, -0.30844545, -0.038277622, -0.03465457, -0.14419939, 0.08843366, -0.24528691, 0.08627054, 0.022934042, 0.065465, 0.08992177, 0.13908626, 0.29170883, 0.18499602, 0.44779378), target1);\n\ttarget1 = MulAdd(d3, MF4x4(0.2403803, -0.034265775, 0.061548065, -0.2871231, 0.06244344, 0.55960923, 0.10674182, -0.099105835, 0.067223154, -0.016005594, -0.18609367, 0.068283536, 0.16862819, -0.35648894, 0.15355636, -0.21434662), target1);\n\ttarget1 = MulAdd(e3, MF4x4(-0.1928663, -0.08712358, 0.010059887, 0.041675188, 0.028285503, 0.27573827, -0.13980475, 0.020420022, 0.08173396, -0.18047802, 0.14453442, 0.1705434, 0.032467145, -0.25624174, -0.091417946, -0.1830734), target1);\n\ttarget1 = MulAdd(f3, MF4x4(-0.07378673, 0.0082734935, -0.0031403562, -0.09405621, -0.04572997, -0.47891915, 0.022257643, -0.18141934, -0.15467338, -0.080856316, 0.22424543, 0.1328784, -0.011105831, 0.012753231, -0.18666203, 0.29024994), target1);\n\ttarget1 = MulAdd(g3, MF4x4(-0.014239724, 0.17424577, 0.04347437, -0.07241822, -0.0043192226, -0.15224636, -0.12850569, -0.07176244, -0.024936391, 0.1081912, -0.0634437, -0.17714879, 0.06807449, 0.036505345, 0.1765435, -0.06827722), target1);\n\ttarget1 = MulAdd(h3, MF4x4(-0.10896065, -0.113828, -0.044186924, 0.083636716, 0.00946172, -0.096768014, 0.1477472, 0.28581375, 0.09928998, -0.03573682, -0.0877059, -0.07456346, -0.094931394, -0.29481927, 0.035076067, -0.030719504), target1);\n\ttarget1 = MulAdd(i3, MF4x4(0.06879136, -0.0013524323, -0.015930668, 0.011338774, 0.27078402, -0.036486305, 0.07307458, -0.03654178, -0.1821915, -0.19957519, 0.047258675, -0.012780178, -0.23570615, 0.23241185, -0.049822707, -0.004932543), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.059442203, 0.123758584, -0.0120902015, -0.035207815, -0.3852069, 0.02184997, 0.17941254, -0.060605425, -0.071601346, -0.07984123, -0.043631997, 0.050046816, 0.100848526, -0.1991431, 0.012486262, -0.12679099), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.10241958, 0.14548102, 0.17390133, 0.11916023, -0.124270104, -0.016538827, 0.14511214, -0.11671281, -0.21087177, -0.06974753, 0.012906925, 0.13859452, -0.08547768, 0.1567956, -0.2022433, 0.038497575), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.07510719, -0.12558976, 0.27779973, 0.07905847, -0.005560809, -0.13164681, 0.0026637863, -0.42023313, 0.30791378, 0.0674288, 0.16762452, 0.03776929, 0.054378655, 0.12892224, 0.14568421, 0.057358757), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.055342264, 0.17539698, -0.07691367, -0.016426053, -0.10654331, 0.12799862, 0.08000128, -0.026672266, -0.09276648, 0.08326771, -0.07549073, 0.09110558, 0.025476933, 0.23758717, -0.08576679, 0.05389538), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.13494995, -0.058528826, 0.0859778, 0.36369404, 0.20959967, 0.04463818, -0.10268673, -0.17128421, 0.12091434, -0.23517689, -0.006012021, -0.13097133, 0.07197561, -0.16344362, 0.10873641, 0.08921942), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.021762112, -0.003690478, 0.36574113, 0.008322902, 0.19321395, 0.04774496, -0.22579306, -0.19404013, 0.06938985, 0.15104407, -0.046889, -0.117904656, -0.14408903, -0.18670367, 0.16157444, -0.103656925), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.10242334, -0.055725146, -0.21333602, 0.010575543, -0.23961566, 0.0044566356, 0.39897293, 0.08584577, -0.23019423, 0.2032861, -0.18542935, -0.1764838, -0.13681203, -0.07769402, 0.03816189, 0.007777049), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.028709, -0.16470426, -0.212036, 0.03143696, 0.27199176, -0.17678891, 0.23327425, 0.12954381, -0.020772377, -0.17467533, 0.13100848, 0.2351719, 0.097517245, 0.050158583, -0.002071869, 0.04241593), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.07411962, -0.08748965, 0.07468962, -0.22070734, 0.40794817, -0.088459395, 0.32936516, -0.032707095, 0.37608266, 0.027920008, 0.07734025, 0.08530036, 0.10898109, 0.22703189, -0.20785971, -0.06495064), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.29293463, 0.16721301, -0.12183638, -0.03948546, 0.01529436, 0.078094184, -0.025749328, -0.006153496, -0.094414495, 0.22237025, 0.028131692, -0.060007866, 0.034187492, -0.116286926, 0.06509088, -0.048549082), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.008423889, -0.3957667, -0.049811136, 0.14082848, 0.09263845, -0.16698493, -0.025629787, 0.015054379, 0.028197043, 0.068465285, -0.08725762, 0.036668878, -0.062005505, 0.0764588, -0.054699335, -0.003840703), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.043419074, -0.20948833, -0.14390363, -0.17659377, -0.065787576, 0.06486438, -0.19382884, 0.08338218, 0.13709012, 0.21116447, -0.24534407, 0.20671941, -0.13327736, 0.2553412, -0.03380571, 0.2106275), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.32056695, -0.28739846, -0.008697179, -0.3094155, -0.12655911, -0.22508456, 0.046275456, -0.13609526, -0.056746602, -0.13714787, 0.006273007, -0.15033242, 0.19861896, -0.19801322, 0.008556289, 0.053491425), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.018890936, -0.7917244, -0.014075563, -0.1700778, -0.039983913, 0.028458029, -0.1522347, -0.08251537, -0.013377933, -0.3029727, 0.1349085, -0.16240561, -0.20748827, -0.46068287, 0.00913134, 0.030452987), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.05005734, -0.2148053, 0.032070015, 0.14438215, 0.31232053, 0.1401732, -0.26635718, 0.19424468, 0.07584618, 0.10555894, 0.01795741, 0.31067818, 0.054555204, 0.2563484, -0.14635237, -0.10759128), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.23083898, -0.32226348, 0.19888338, -0.38176686, 0.050134797, -0.0015203251, 0.112237535, 0.14811106, 0.2174096, -0.24344379, -0.13310412, -0.42385107, 0.050850198, -0.27200532, -0.052719057, 0.009228699), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.053870313, -0.47212356, 0.085255414, -0.014404558, -0.06817252, -0.0973503, 0.1635136, -0.0033316084, -0.037195005, -0.48788953, 0.08273281, -0.097501226, 0.0600793, -0.21372889, 0.03384461, 0.017936382), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.3313351, -0.45776972, 0.0009931794, 0.11343333, 0.033024788, 0.046712194, 0.04782013, 0.064249486, -0.22282073, 0.12655938, 0.19051406, 0.31040603, -0.07731221, 0.17658137, -0.103276245, -0.06792484), target1);\n\ttarget1 = MulAdd(na3, MF4x4(0.14607549, 0.1872639, -0.093263544, 0.09774117, -0.11698756, -0.067545414, 0.0023156274, -0.18209848, 0.03853313, -0.2223309, 0.12031081, 0.042545635, -0.034479424, 0.124472, 0.06731187, 0.12712644), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(-0.07627082, -0.17452952, -0.33548403, -0.18450926, 0.18033943, -0.12326704, 0.019632008, 0.07248642, -0.16483006, -0.18913946, 0.19646043, 0.40187582, -0.13083674, 0.08671764, 0.15356278, 0.0077914116), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(-0.13629752, -0.13993968, 0.2731425, -0.041057866, -0.118738905, 0.21209033, -0.051054828, 0.31168184, -0.16392295, 0.010364939, 0.0857728, 0.024030814, -0.07311749, -0.24349305, -0.20305401, -0.43344042), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(0.14196202, -0.04678858, 0.0077786436, 0.072588876, 0.048406214, -0.812405, 0.08031392, -0.1540258, 0.11032359, -0.06004812, -0.32815942, 0.09877014, -0.16591738, 0.4435054, -0.20656855, 0.22537513), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(0.09432511, 0.19597436, -0.08628448, -0.21871169, -0.16537306, -0.32272846, 0.13009092, 0.010715842, 0.26118267, 0.22872354, 0.19176646, 0.107038476, 0.1611875, 0.08846044, 0.15163514, 0.008047941), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(-0.07396799, -0.03825365, 0.093083926, 0.051318448, 0.2838576, 0.5694332, -0.10403076, 0.19238624, 0.11968883, 0.11856581, -0.119746156, -0.082536116, 0.076429665, -0.02471431, 0.11962365, -0.17637646), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(0.07824961, -0.16634372, 0.027028812, -0.074860476, -0.14161688, 0.23795755, 0.02944209, 0.17723913, -0.30600172, -0.23468062, -0.12452985, -0.020646518, -0.0397737, 0.021050548, -0.17934813, 0.13230623), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(0.0424831, 0.106492884, -0.03483414, -0.017710585, 0.22700353, 0.20349082, -0.10986577, -0.3389828, -0.21730238, -0.00039746048, 0.07059067, 0.102562755, 0.30204043, 0.21475948, -0.0162173, -0.017118886), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(-0.22430925, -0.014225937, 0.094149694, -0.018336432, 0.17596604, 0.14860786, 0.05728594, 0.04178837, 0.1751472, 0.23511195, 0.020594316, 0.11539313, 0.12581828, -0.15684246, 0.02905791, -0.11784082), target1);\n\t\n\tMF4 target2 = { 0.07964101, -0.050712653, 0.11978818, 0.122745104 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.02899521, -0.05649066, -0.026947228, 0.048783254, -0.14916636, 0.24028979, 0.044600923, -0.045931537, -0.1705095, -0.27147427, 0.16703783, 0.058726057, 0.0032612043, 0.083603844, -0.25704128, 0.13329254), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.1979236, -0.01025661, -0.019716073, 0.108358726, 0.043820046, 0.1919281, -0.21771714, -0.1133059, -0.061171446, -0.0882054, -0.120655626, -0.11155759, -0.07786948, 0.011810883, 0.14344923, -0.26561305), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.1894701, 0.0239954, -0.119104624, 0.0081936605, -0.090172075, 0.16750605, 0.07118662, -0.068179235, 0.11522273, 0.02271562, 0.09519474, -0.28372973, 0.0015472358, 0.026579062, 0.117233984, -0.4856576), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.14819643, -0.31534502, -0.13870765, -0.01054195, -0.19450842, 0.10115552, 0.15510698, 0.003614742, -0.07340832, -0.20358734, -0.12068221, 0.1708203, -0.04059514, 0.05221531, 0.1185381, 0.0068877796), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.2649358, 0.2787165, 0.026068278, 0.05054382, 0.042817205, -0.13016234, 0.0052052587, 0.0671692, 0.10290017, 0.06727616, -0.025898565, -0.03125075, 0.1502351, -0.17578806, -0.07915442, -0.20580369), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.01980342, 0.07163837, -0.10456945, 0.06892928, -0.00022086082, -0.122014746, -0.11635255, -0.050526325, 0.11869723, 0.07118713, 0.10652823, -0.21519308, -0.048316743, -0.09710376, 0.006049279, -0.15725243), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.17198269, -0.04094963, -0.16597614, -0.022672966, -0.021484226, -0.07138965, 0.067678355, 0.010858899, -0.13862544, 0.06384301, -0.03991444, 0.22539167, -0.005830964, -0.093598455, 0.10466667, 0.19629909), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.040208396, -0.0077782017, 0.026934639, -0.08231454, 0.122154236, -0.20185019, -0.04921797, 0.113472804, 0.025262907, 0.30940935, -0.0067619407, 0.011076865, -0.037738938, 0.22040449, -0.091454595, 0.08720387), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.19777842, 0.15188776, -0.112971924, 0.06551624, 0.21511264, -0.12696353, 0.05734954, 0.038562097, 0.09721514, 0.12184754, 0.098125674, 0.093547106, 0.04148773, -0.007749207, -0.097304046, 0.11741999), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.05388486, -0.15493694, -0.11779907, -0.063636035, 0.1683663, -0.19863462, 0.079785384, 0.002344284, 0.07419801, -0.18906172, 0.042702213, -0.106039785, -0.11761329, -0.34240028, 0.20399906, 0.19486815), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.0214746, 0.024925156, 0.071194954, 0.06452649, -0.10890589, -0.08571906, 0.13291912, -0.0013396982, 0.01863436, -0.20824501, 0.054323934, -0.23967488, 0.07283552, -0.28291726, 0.23057762, 0.121263705), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.05597139, 0.07066334, 0.06768875, 0.01599472, -0.00039986568, -0.0053987154, 0.040123407, -0.100022465, -0.013812261, 0.050008554, 0.18786328, 0.0004141, 0.09763033, -0.2487105, 0.11663139, 0.05165497), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.17904039, -0.31834564, -0.0737966, -0.061444905, -0.2252082, 0.00895136, 0.11486605, -0.0037112157, -0.07636511, -0.3503888, -0.04990528, -0.030310752, 0.068686, -0.3136087, -0.004038447, 0.12475536), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.011218902, 0.16498409, -0.19213067, -0.3376179, -0.40268928, 0.009434513, -0.10950616, 0.1186675, -0.11379568, 0.23032996, -0.26904815, 0.30311096, 0.017041026, 0.39546305, -0.2145057, 0.20220405), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.116564326, 0.16520524, 0.25099444, -0.044852093, 0.04109138, -0.104986876, 0.09234278, -0.077715285, 0.046688464, 0.4072821, 0.021245886, -0.054421954, -0.12993707, 0.13713494, -0.12306372, 0.0076773493), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.0022927783, -0.16100088, 0.0092022745, 0.043600008, -0.012064794, 0.14346212, 0.056605842, 0.04922658, 0.21234164, -0.36939904, -0.35937238, -0.0076974165, -0.033846013, -0.197686, 0.045169946, 0.05321761), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.12022473, 0.027450195, -0.070633, 0.010465206, -0.23977374, 0.008031643, -0.07748358, -0.12202592, -0.21730833, 0.0059398045, 0.40769234, -1.1242622, -0.06625515, 0.3264613, -0.07954283, 0.09583801), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.008234909, 0.18505827, -0.1273086, 0.23858553, -0.00791922, 0.0122221485, -0.11842601, -0.038017634, 0.03933724, 0.2956, -0.01691444, 0.17929354, 0.015529619, 0.19893076, -0.16288021, 0.05490817), target2);\n\ttarget2 = MulAdd(a3, MF4x4(-0.011399029, 0.10798575, 0.046656217, 0.032565042, 0.0119628515, -0.0011125325, 0.31439918, 0.09300187, -0.010849873, -0.060744617, 0.18471423, 0.15607913, -0.045522973, 0.16699308, -0.0722109, -0.024475403), target2);\n\ttarget2 = MulAdd(b3, MF4x4(-0.082331106, -0.07089719, 0.1347553, -0.19314262, 0.0032955715, -0.24533619, 0.013174161, 0.15500104, 0.029693194, 0.040375546, -0.0059178416, 0.1092399, -0.112020314, 0.1500148, -0.22925867, -0.019879973), target2);\n\ttarget2 = MulAdd(c3, MF4x4(0.1417249, 0.11215587, -0.26791674, 0.14707097, 0.040649403, -0.016661948, 0.15412898, -0.080876425, 0.035228007, 0.047104783, 0.06574109, -0.029853644, 0.05876159, 0.22823593, -0.19034219, 0.03162234), target2);\n\ttarget2 = MulAdd(d3, MF4x4(0.2600437, 0.044771086, 0.014325027, 0.163108, 0.060724687, 0.09108473, -0.20747156, 0.0039435104, 0.18791565, -0.11700223, -0.0055135386, -0.024981469, -0.19696075, 0.11015166, -0.004077458, 0.011203278), target2);\n\ttarget2 = MulAdd(e3, MF4x4(-0.05348392, 0.11058947, -0.11913848, 0.06359096, -0.13427798, -0.096259184, -0.122564375, 0.16873421, -0.021777656, 0.026404127, -0.19412898, -0.04525696, -0.089521095, -0.04556723, -0.14436369, 0.030330338), target2);\n\ttarget2 = MulAdd(f3, MF4x4(-0.077864684, -0.0033614987, -0.053482026, -0.15834975, -0.12657848, 0.16701786, 0.040268235, -0.14463072, 0.01926974, -0.15924485, -0.011547801, -0.18185836, 0.030286407, -0.29259017, -0.0077412864, 0.037985537), target2);\n\ttarget2 = MulAdd(g3, MF4x4(0.07485037, 0.19659927, 0.020025307, 0.10442409, -0.19772562, 0.4431493, -0.06422206, -0.045304112, -0.094377324, -0.04861216, 0.0023215367, 0.16513753, -0.1303532, -0.068101294, 0.017007684, 0.097332835), target2);\n\ttarget2 = MulAdd(h3, MF4x4(-0.004584652, -0.2661271, 0.0063034855, 0.041456066, 0.11529073, 0.19888161, -0.24943323, -0.054349367, -0.010328835, 0.22214927, -0.20700802, -0.05599532, 0.24972723, -0.08987443, 0.20708983, -0.13030328), target2);\n\ttarget2 = MulAdd(i3, MF4x4(0.10159776, 0.047147173, 0.1411316, -0.18355304, 0.07658331, -0.037969157, -0.074841976, 0.09781788, 0.06575143, 0.03210521, 0.058850992, -0.19939986, 0.11218086, -0.10744168, 0.14622156, 0.12941957), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.13577162, 0.10681536, 0.08791653, -0.060445737, -0.19715475, -0.13252279, -0.036850456, -0.009957216, 0.1860376, 0.3743373, -0.14414039, 0.044343796, -0.05038453, -0.034720805, 0.17924316, 0.012001023), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.007108988, -0.09904293, -0.112725444, 0.031813867, -0.044795662, -0.14910372, 0.1680855, 0.32826513, 0.13105088, 0.11438789, -0.08039976, -1.1030464, 0.020364072, 0.19394659, 0.016075639, -0.22101837), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.100025505, -0.06350414, 0.06775572, -0.07832278, 0.093700364, -0.15951614, 0.36111444, -0.20566626, -0.1011544, -0.047608454, -0.07719231, -0.71597475, 0.0048773736, 0.012542508, -0.26781914, -0.3445289), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.050355583, 0.3859359, 0.08021888, 0.0031537602, 0.18742213, -0.30617613, -0.27419865, 0.18862267, -0.0011417761, 0.19679208, 0.06357993, -0.11287149, 0.11817958, -0.040369175, -0.055818953, 0.114691235), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.24919917, -0.1840669, -0.47709405, 0.020121656, -0.09533757, 0.23901173, -0.08210879, -0.22835779, 0.023564098, -0.1592999, 0.005221987, -0.54973453, -0.039800424, 0.19367874, -0.10306205, -0.21813862), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.13417694, -0.06470136, -0.07049462, -0.052072115, -0.017625665, 0.108188346, 0.13198936, 0.1975063, -0.22973076, -0.28760132, -0.12961891, -0.08713851, -0.028337657, -0.35775787, 0.33782268, -0.282777), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.0796041, 0.16454107, -0.026372116, 0.0788071, 0.044841573, 0.15395795, -0.011288428, -0.03305742, 0.15754524, -0.0043833177, 0.12766863, -0.11310043, -0.023906957, 0.03451837, -0.083479226, 0.03029468), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.38791308, -0.120497175, -0.39432266, -0.016802365, 0.031366616, 0.20532085, -0.032990657, -0.004515397, -0.1540265, -0.2327063, 0.088945866, 0.11997355, 0.02506493, -0.11495644, 0.0847286, 0.0048163645), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.03319572, -0.26717946, -0.13605991, -0.10878451, 0.19831704, 0.04036457, -0.056414742, 0.15083815, -0.1640081, -0.25487527, -0.096472785, 0.05001906, -0.01256949, 0.07090488, -0.0888089, 0.24414414), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.10947188, 0.07678741, -0.03716733, 0.10074092, -0.09684673, 0.19135101, 0.06687582, -0.03416071, -0.02605864, 0.18258773, 0.029176971, 0.14626507, 0.16892125, 0.26836056, -0.16163802, 0.0044406173), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.07490834, -0.16595219, 0.06855593, -0.31601232, 0.2051958, 0.12370633, 0.053092375, -0.09280303, -0.041799355, -0.02180234, -0.0647632, 0.12765023, -0.02619668, 0.35134858, 0.025718898, -0.03524767), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.051487356, -0.10184706, -0.058444723, 0.23035292, -0.03384644, -0.02926101, 0.24579355, 0.11463481, 0.00077921426, 0.0036189032, -0.04137187, 0.039233316, -0.11595721, 0.012141703, -0.19241674, 0.18287377), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.0331477, 0.11774921, 0.1500689, 0.21751022, -0.0391579, -0.026443282, -0.23405433, 0.10924835, 0.010694821, 0.46834385, -0.06344277, -0.027459502, 0.02805852, 0.063863516, -0.052119188, -0.010459627), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.19480526, -0.08907801, 0.13466452, -0.58980346, -0.18432151, 0.0025959515, -0.093561575, 0.21850146, -0.025087524, -0.112469815, 0.06425045, -0.017907271, 0.06015287, 0.23375069, 0.046780836, -0.124416254), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.20069234, 0.073735476, -0.20799713, 0.11896709, -0.08604335, -0.030489137, -0.19158117, 0.07545736, 0.1417471, -0.2885722, -0.04138416, 0.16751918, -0.039241627, -0.29653955, 0.06402645, 0.08477943), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.13838394, 0.17045505, 0.18386857, -0.06769848, 0.019191446, -0.10590481, 0.14499927, 0.005293376, -0.022189254, 0.45613396, 0.31436417, -0.23309496, 0.085356414, -0.12509619, -0.32398435, -0.06535322), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.20557566, 0.23378044, 0.16096559, 0.3109223, -0.13988405, -0.056287576, 0.15235564, 0.14485452, 0.025657065, -0.19962808, 0.12487959, -0.53206867, 0.17598459, 0.0012244214, -0.09263318, -0.048799008), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.031034216, -0.43335876, 0.15115865, -0.22912477, 0.039661117, -0.066167325, -0.0039048253, 0.108036794, -0.07157209, -0.42531285, -0.22807248, -0.070778824, -0.1216781, -0.20621637, 0.09195537, -0.0026917474), target2);\n\ttarget2 = MulAdd(na3, MF4x4(0.11940706, -0.13485508, 0.026604721, -0.100989655, -0.14618637, 0.45079112, -0.111106694, 0.23393573, 0.21399105, 0.049563177, -0.10910516, -0.21594371, 0.030558927, -0.17320083, 0.012688248, 0.02913788), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(0.052507173, 0.13555464, 0.15568505, -0.13439007, 0.15468787, 0.20109199, 0.09981344, -0.022377115, 0.16711195, 0.1921043, -0.0457788, 0.11962697, 0.12201352, -0.15822104, 0.14560209, 0.11319004), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(-0.10677749, -0.037526496, 0.05529873, 0.0014219015, -0.07003492, 0.11616926, -0.2047762, 0.053331498, -0.029710975, 0.099788256, 0.016773999, -0.05440333, -0.07308938, -0.1613098, 0.11157061, -0.06163726), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(0.084668584, -0.024195379, 0.10567495, 0.018839711, 0.20675091, 0.064051956, 0.16356891, 0.0763972, 0.04519446, 0.04648411, -0.26651385, -0.32033405, 0.19019292, -0.03760131, 0.057477303, 0.039011493), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(0.10785335, -0.005846821, 0.106043994, -0.029447608, -0.17944743, -0.055760577, -0.061553795, -0.0897441, 0.30305168, -0.07138199, -0.038286258, 0.31980807, 0.08745091, 0.08931471, 0.19994807, -0.19448686), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(0.05872038, 0.019705178, -0.057756446, 0.032349724, 0.1162347, -0.1494079, 0.04883473, 0.06775521, 0.06246929, 0.18094592, 0.019297523, 0.22078563, -0.10864955, 0.024548724, -0.09518366, -0.049131762), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(0.083531916, -0.22589867, 0.15678734, -0.15247858, 0.037808564, -0.3915128, 0.023039397, -0.11101649, -0.024950527, 0.15221989, 0.02177459, -0.0052792793, -0.006660954, 0.103587925, -0.069532864, -0.036814045), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(0.042244066, 0.08479697, -0.057882927, 0.036821585, -0.12734346, -0.30277002, 0.17587237, 0.08462706, 0.03041879, -0.07751665, 0.41255432, -0.15170433, -0.094225794, 0.09409663, -0.03903985, -0.17728558), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(-0.07648597, -0.021105368, -0.13569473, 0.11226781, 0.0024825619, 0.10949022, -0.033650707, -0.01084071, -0.27865705, -0.050442215, -0.026282378, 0.07449441, -0.033618845, 0.20228988, 0.10323669, -0.2785842), target2);\n\t\n\tMF4 target3 = { 0.08639024, -0.11024204, -0.0076959864, 0.053946566 };\n\ttarget3 = MulAdd(a1, MF4x4(-0.043845546, -0.051818844, 0.15098971, -0.029770624, 0.105532385, -0.017158495, 0.007995025, 0.01310204, 0.046253394, 0.054963812, -0.07156648, -0.026536593, -0.034585387, -0.03867656, -0.026378985, -0.0503513), target3);\n\ttarget3 = MulAdd(b1, MF4x4(0.19067752, 0.077902906, 0.07043644, 0.093124524, -0.088099405, 0.05687826, 0.07339772, 0.25220734, -0.024105951, 0.047068372, -0.15396254, 0.0024811088, 0.05398644, 0.114431, 0.104937814, -0.084533244), target3);\n\ttarget3 = MulAdd(c1, MF4x4(-0.06216834, -0.09104735, 0.030077647, -0.109212935, -0.03391817, 0.14209917, 0.06807519, 0.086794056, 0.13323791, -0.16663639, 0.18892457, 0.18872325, 0.098952405, -0.009112314, 0.16958214, 0.14279945), target3);\n\ttarget3 = MulAdd(d1, MF4x4(-0.07209618, 0.10666213, 0.10406824, -0.10080884, -0.061229795, -0.070260175, 0.0544128, -0.16189453, -0.07493434, 0.25146472, -0.10089679, -0.16500695, -0.05206539, -0.10650778, 0.08510133, -0.12274426), target3);\n\ttarget3 = MulAdd(e1, MF4x4(0.06154247, -0.2779647, -0.39013094, 0.19112335, 0.21914953, 0.174526, -0.2582261, 0.028989773, 0.12516306, 0.024158027, -0.06397669, -0.027443565, 0.01338054, 0.11226658, -0.18691953, 0.03941122), target3);\n\ttarget3 = MulAdd(f1, MF4x4(0.06017567, 0.064941615, -0.16408192, 0.14018805, -0.022913788, -0.005578652, 0.056423694, -0.12357743, 0.053335212, -0.10533416, 0.0336598, 0.13383694, 0.13861552, 0.13800743, 0.048778858, 0.20749462), target3);\n\ttarget3 = MulAdd(g1, MF4x4(-0.19730464, -0.07471736, -0.08532417, 0.22114716, -0.0655994, 0.014833043, 0.069433905, 0.0126395365, -0.115397535, 0.16183057, -0.0020461925, -0.08379374, 0.066027366, 0.046908997, -0.04298647, -0.039427415), target3);\n\ttarget3 = MulAdd(h1, MF4x4(-0.40682083, -0.051349834, -0.058064308, -0.59165514, 0.07769667, -0.0061552664, 0.09866719, 0.09064238, -0.10091702, -0.08237763, -0.0896345, -0.06889367, 0.029332574, -0.067278475, 0.032268777, 0.08217916), target3);\n\ttarget3 = MulAdd(i1, MF4x4(-0.16198236, 0.14663215, -0.19844484, 0.12605388, 0.11090156, 0.017791988, -0.058779463, 0.041371945, -0.22293547, -0.015482557, 0.2293464, 0.094193965, -0.26855227, -0.21347573, -0.09075141, -0.13876276), target3);\n\ttarget3 = MulAdd(a2, MF4x4(-0.06498589, 0.100892216, -0.13253035, 0.15685925, 0.16823533, 0.16493973, 0.07777784, -0.07706127, 0.050116807, -0.01523585, -0.01661001, 0.020355182, 0.103539385, -0.17436443, 0.15487072, -0.037921157), target3);\n\ttarget3 = MulAdd(b2, MF4x4(0.03836789, -0.15199225, 0.11784638, -0.04646745, 0.044564333, 0.22369106, 0.14419034, -0.010723647, -0.0027908115, -0.15769437, 0.14674728, 0.21630915, -0.15577918, 0.083906, -0.076731354, 0.09644861), target3);\n\ttarget3 = MulAdd(c2, MF4x4(0.057972, -0.085704334, -0.044770416, -0.08455327, -0.096369885, 0.17715664, 0.0931527, 0.08611585, 0.082069114, -0.21235153, 0.056143392, -0.09681458, -0.15192977, -0.11773526, 0.085406475, -0.054963436), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.04377759, 0.14948493, 0.14370604, 0.121995315, -0.034767535, -0.19136979, 0.20502615, -0.19230005, -0.010331832, 0.24712276, 0.08443175, -0.02108672, -0.05402554, -0.073491514, -0.01772348, -0.04717817), target3);\n\ttarget3 = MulAdd(e2, MF4x4(-0.0859936, 0.12129631, 0.4917177, 0.014785702, -0.017697783, 0.20519169, 0.193045, -0.32276052, 0.052729923, 0.20259547, -0.23248449, 0.027868863, 0.06924204, -0.0680142, -0.1510381, -0.0858641), target3);\n\ttarget3 = MulAdd(f2, MF4x4(0.0042993063, -0.001888591, -0.19050622, -0.1974649, 0.0028959673, -0.056935344, -0.15306468, -0.037034288, -0.005013645, -0.49978206, -0.2860419, -0.24230668, -0.21625051, 0.124884024, -0.018598353, 0.018011522), target3);\n\ttarget3 = MulAdd(g2, MF4x4(-0.00059534056, 0.09819056, -0.10073479, -0.0036862926, 0.018240096, -0.068672635, -0.040024363, -0.002400606, 0.12492032, 0.6830032, -0.103963815, -0.20350884, -0.0731358, 0.122847795, -0.04129241, 0.027231846), target3);\n\ttarget3 = MulAdd(h2, MF4x4(0.14632931, 0.056954373, 0.10602974, 0.06899008, 0.028749242, 0.16360262, -0.2776957, -0.13795078, 0.2955775, 0.07387963, 0.18735075, 0.37977517, -0.0032196203, -0.0368105, 0.0007467509, -0.048191283), target3);\n\ttarget3 = MulAdd(i2, MF4x4(-0.08740623, -0.14123341, -0.16725405, -0.035077587, 0.16800366, 0.10287269, -0.02063956, -0.02751512, -0.22882652, -0.19836405, -0.07881451, -0.036120445, -0.03052641, -0.19137034, 0.02006256, -0.0003630293), target3);\n\ttarget3 = MulAdd(a3, MF4x4(0.21042292, 0.07082529, 0.10551431, -0.17735177, 0.1211633, -0.07301316, 0.08914643, 0.027641036, 0.0716893, 0.009513582, 0.06489754, -0.11262447, -0.006487075, 0.042482372, 0.040942963, 0.026485842), target3);\n\ttarget3 = MulAdd(b3, MF4x4(0.07677389, 0.017061912, 0.080698825, -0.02926673, 0.030129844, 0.08797221, -0.042393677, 0.040378265, 0.14051779, -0.01150974, -0.09838748, -0.084651664, 0.13157506, 0.15760668, 0.13706487, 0.017946318), target3);\n\ttarget3 = MulAdd(c3, MF4x4(0.21381795, 0.108781934, 0.12417435, 0.04925163, 0.05298279, -0.1352583, 0.085234426, -0.03526282, -0.024876006, 0.0025064421, 0.07016869, 0.084552824, 0.064173326, -0.05621783, 0.0711457, -0.025467668), target3);\n\ttarget3 = MulAdd(d3, MF4x4(-0.05810587, 0.0134641845, -0.038737856, 0.07663204, 0.121298246, -0.13257936, 0.004325269, -0.036193457, -0.29106387, -0.106322676, -0.23442906, 0.2862568, -0.18702938, 0.0030504123, -0.037212595, -0.2611213), target3);\n\ttarget3 = MulAdd(e3, MF4x4(0.024120133, 0.07321953, 0.038489927, -0.04196367, -0.07796083, 0.33956012, -0.13922311, -0.05377065, -0.070829384, -0.10083194, 0.239536, -0.05901714, 0.26581895, -0.3095538, -0.2922295, 0.052582845), target3);\n\ttarget3 = MulAdd(f3, MF4x4(0.02742305, -0.018496662, -0.094728574, 0.06404221, -0.041348618, -0.25715774, -0.1643205, 0.13505833, 0.043563902, -0.12633435, -0.101704225, -0.06851076, -0.10801949, -0.07229803, -0.042177804, 0.15722917), target3);\n\ttarget3 = MulAdd(g3, MF4x4(-0.1890737, 0.086372465, 0.19611897, 0.11635388, -0.27176055, 0.113715895, -0.090014786, 0.028875142, -0.054593917, 0.030705186, 0.1435633, 0.061870232, -0.11143878, 0.09881344, 0.097813986, -0.21929547), target3);\n\ttarget3 = MulAdd(h3, MF4x4(0.04700684, 0.042240005, -0.27370077, -0.10867852, -0.06256984, -0.08165931, 0.14414817, -0.046392858, 0.06402001, -0.18298607, -0.20697436, -0.035047896, 0.104348354, 0.21140936, 0.08119135, 0.11215284), target3);\n\ttarget3 = MulAdd(i3, MF4x4(-0.15503405, -0.0058879172, 0.06903078, 0.10739542, -0.047215104, 0.05061763, -0.1265464, -0.13796777, 0.050830897, -0.06356833, 0.10470089, 0.061785046, -0.054734606, 0.069204785, 0.22219127, 0.14431196), target3);\n\ttarget3 = MulAdd(na1, MF4x4(0.0035822908, -0.041718304, -0.06449883, 0.107891634, 0.11240286, 0.2773934, 0.018296933, 0.17229447, -0.038918763, -0.015615794, 0.013606009, -0.15145436, -0.038385842, -0.075797774, 0.074630134, -0.115841195), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(-0.35196853, -0.055269916, -0.10619746, 0.036240876, 0.027898792, 0.16981332, -0.08743389, -0.11659183, 0.21521945, 0.14624144, 0.3709361, 0.35440952, 0.05083335, -0.027957644, -0.14189775, 0.041765563), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.012040415, 0.03733818, 0.0028794291, 0.085560195, -0.003578092, -2.0037096e-05, 0.018441873, -0.048575614, 0.16403939, 0.26586646, -0.23535033, -0.195904, 0.09343384, 0.16844647, 0.090654954, 0.20447001), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(-0.039211, 0.023288574, -0.11278111, 0.24733941, 0.030935412, 0.028505033, -0.054287612, 0.1626191, -0.013604053, -0.40332177, -0.12607175, 0.062430628, 0.020255104, -0.034459837, -0.02045024, 0.13066867), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(-0.109611966, 0.036982346, 0.24648234, -0.10601368, -0.046704277, 0.09159354, -0.051051375, 0.27708438, -0.27565628, 0.3181145, 0.0352402, 0.11326822, 0.08464163, 0.0037447016, -0.11625815, -0.27881616), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(-0.17009212, -0.14643735, 0.05730069, -0.19120802, 0.06845526, 0.10674906, -0.28353846, -0.12647904, 0.015396511, 0.097950876, 0.009746547, 0.031028407, -0.05640266, -0.04813061, 0.1215167, 0.013483247), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(-0.015532973, 0.06836607, -0.15256128, 0.016466603, 0.22348233, 0.13754332, -0.032162182, 0.33556822, 0.17382346, -0.2763521, 0.060414087, 0.0027655934, 0.031628147, 0.08716705, 0.015910214, 0.0672223), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(0.4342632, -0.067446776, -0.36212516, 0.027729288, 0.18695018, -0.026150677, -0.048804305, 0.03894249, 0.08076834, -0.024184678, -0.039985072, 0.019538054, -0.12608467, -0.114978395, 0.08024422, -0.009467871), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(-0.12950122, -0.04900754, 0.007479547, 0.005553716, -0.011067856, 0.15695909, 0.15179226, 0.13305564, 0.109665506, -0.071129486, -0.29301268, -0.19721518, -0.014072068, 0.110164836, -0.10445084, -0.07427861), target3);\n\ttarget3 = MulAdd(na2, MF4x4(0.056494176, 0.10441701, 0.1473454, -0.10962488, -0.024387872, -0.10661404, 0.023665238, -0.014857965, -0.11904774, 0.028333792, -0.018734593, 0.041431252, -0.051380955, 0.08761405, 0.025005583, 0.27504325), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(0.12111209, 0.09115707, -0.12130387, 0.037170578, 0.17773823, 0.11543872, -0.0981619, -0.009393771, -0.072751574, 0.12490967, -0.050705448, -0.21641576, -0.0032860835, -0.017348124, -0.039524093, -0.22634275), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(-0.026149368, -0.0345828, 0.024678709, 0.073074006, 0.075326554, 0.07688483, -0.06151585, -0.0006315397, -0.11916223, 0.09640916, -0.03452899, 0.0711575, 0.10298667, 0.14983572, -0.029672628, 0.060187414), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(0.061185572, 0.025581252, 0.05371412, -0.30638546, 0.064506106, 0.22312112, -0.12822428, 0.050079864, 0.007665535, -0.270618, -0.1205649, 0.066014335, -0.10095298, 0.14537272, 0.07578119, -0.102102645), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(0.24163178, -0.14042771, -0.28968832, 0.32306322, -0.08210339, -0.089168124, -0.029958146, 0.23500884, -0.045208763, -0.076190665, -0.048189905, -0.062144633, -0.2209541, -0.118137404, -0.10013809, -0.2633339), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(-0.043336965, -0.14818442, 0.3353549, 0.37338758, -0.097953044, 0.08346902, 0.2809552, -0.15042788, 0.052860767, 0.3296333, 0.1520426, 0.013095576, 0.06748028, -0.18191148, 0.1262768, 0.1454165), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(0.020386793, -0.05559494, 0.0923228, -0.101281434, 0.07294861, -0.013454893, 0.14446425, -0.18820941, 0.03512501, -0.3100584, 0.07824563, 0.039452225, -0.31067702, -0.0059947846, -0.022850258, -0.03394584), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(-0.2551513, 0.07006202, 0.10514115, -0.07164224, -0.15870212, 0.058055036, 0.05213708, -0.14221531, 0.18606052, 0.121992745, 0.005545236, 0.20166458, -0.51196563, 0.13145791, -0.07664502, -0.102140725), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(0.013922251, -0.055376403, 0.32802138, 0.13208407, 0.013657613, 0.10752059, 0.036252435, 0.1592283, 0.013641419, 0.09172557, -0.047022454, -0.06487285, -0.010537236, 0.043602772, -0.018355483, 0.061706495), target3);\n\ttarget3 = MulAdd(na3, MF4x4(0.034295138, 0.0290897, -0.055937063, 0.030905105, -0.049568217, 0.23283507, -0.09925937, 0.06541922, -0.19225466, -0.37406424, -0.0044630794, 0.12548251, -0.003204782, -0.033718586, -0.12822233, -0.06512161), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(0.04231634, 0.033866994, -0.060438603, 0.053806484, -0.043768402, -0.09377961, 0.053774644, -0.05314562, 0.08742594, -0.3595988, 0.05714237, -0.026023258, -0.14470316, -0.17429292, -0.05919939, -0.05714775), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(-0.035541177, -0.15197758, -0.03248727, 0.055882126, 0.03910343, 0.14273937, -0.16545315, -0.019183658, 0.067014545, -0.010861471, -0.23015557, -0.3174752, -0.0895981, 0.05603517, -0.10421314, 0.03543782), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(0.052712325, 0.15568605, 0.13511989, -0.035405457, 0.09660214, 0.0010066679, 0.0041616405, 0.3261607, -0.07167953, -0.3432988, 0.37812582, 0.08591545, 0.17927478, -0.08654189, 0.076707125, 0.14279753), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(-0.056844193, 0.16529651, -0.06650483, -0.08292316, -0.02760633, -0.22888668, -0.19214903, -0.08840017, -0.23843671, -0.6793711, -0.33102167, 0.0064898706, -0.29774654, 0.37099698, 0.42785385, 0.025804019), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(-0.11744241, -0.057497155, 0.18884729, 0.024753813, -0.0062507484, 0.33419883, 0.120441675, -0.25218838, -0.042276263, 0.08504629, -0.033582047, 0.07008096, -0.058578875, 0.0392345, 0.11335631, -0.15865934), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.04641351, -0.0370654, -0.08322972, -0.11589779, 0.09985797, -0.0747252, 0.0050210473, -0.0737313, 0.34289247, -0.08783692, 0.13673791, 0.05667411, 0.058139045, -0.17664829, -0.16574872, 0.020792067), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(-0.17315285, 0.061304655, 0.23295666, 0.004587563, 0.025884068, -0.20429865, -0.17807725, 0.04610146, -0.16748384, 0.03548062, 0.36901402, 0.040421892, 0.0732819, -0.06323222, 0.17438933, 0.10541013), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(0.11953197, -0.041181084, -0.05777039, -0.0713763, -0.07250408, 0.00030710385, -0.12310962, 0.05047857, 0.07764678, 0.048569802, -0.07179031, -0.13407484, 0.18644087, -0.08796725, 0.09215986, 0.03264275), target3);\n\n\ttex4[gxy] = target1;\n\ttex5[gxy] = target2;\n\ttex6[gxy] = target3;\n}\n\n//!PASS 3\n//!DESC Conv-4x3x3x24\n//!IN tex4, tex5, tex6\n//!OUT tex1, tex2, tex3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex5.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex5.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex5.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex6.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex6.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex6.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { 0.0026275632, -0.111531265, -0.027438803, 0.048715387 };\n\ttarget1 = MulAdd(a1, MF4x4(0.2369839, -0.0792359, -0.12919348, 0.002247716, 0.04581234, 0.119436085, -0.039395507, -0.035233624, -0.031238249, 0.068567455, 0.021003028, -0.07353918, -0.12103854, -0.21112324, -0.0063801156, -0.04487009), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.0683294, 0.062320776, -0.024078269, 0.08904798, 0.026528858, -0.041699078, -0.07854327, -0.14078824, 0.060052495, -0.12898798, -0.010206991, -0.10815312, -0.07348112, -0.09190296, 0.16384035, 0.11615318), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.073954284, 0.11315491, -0.08271167, 0.012718058, -0.079351336, -0.12847738, 0.16898601, 0.057100534, -0.007783043, -0.046511702, -0.031176837, 0.09832856, 0.04629018, -0.11481637, 0.27974957, -0.008512578), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.11174049, -0.06978879, -0.0026527392, 0.09206777, -0.052967362, 0.04242691, -0.028125865, -0.006913773, -0.105203055, 0.012300771, 0.073976465, 0.0597795, 0.12224533, -0.15938343, -0.04735274, -0.13670483), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.069210574, -0.18154296, -0.179752, 0.030308926, 0.21821375, -0.17105243, 0.002948972, 0.1510472, -0.07507222, 0.05799302, 0.22358851, -0.1593742, -0.14097035, -0.14883585, -0.10766054, -0.04192339), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.04092946, -0.056620143, -0.08841022, 0.0820261, 0.12114886, -0.046587184, -0.24642876, 0.20291825, -0.021399742, 0.075130075, 0.08025963, -0.0004831952, -0.20216052, 0.063063756, -0.14950794, -0.016591785), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.001037612, -0.12479094, -0.064145386, 0.03701432, -0.09794906, -0.02047066, -0.0064438935, 0.054445606, 0.017312052, -0.010994496, -0.043534316, -0.03507283, -0.2881326, 0.056422662, 0.45392624, -0.14301568), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.02659516, -0.12523884, -0.045878954, 0.0401728, -0.026269691, 0.23919468, -0.05373766, 0.22576872, 0.15472023, -0.06473123, -0.16314703, -0.007313837, 0.06282956, -0.12448595, 0.32412103, -0.1669555), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.10851828, -0.0019357264, -0.042929318, 0.087208286, 0.08521072, -0.015302626, -0.045136105, -0.07599174, -0.020620871, -0.08058013, 0.04687409, 0.07679515, 0.02748689, -0.04049585, 0.031744577, -0.08941878), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.053986546, 0.2688435, -0.057546657, -0.11350552, -0.081904754, -0.09276461, -0.13561548, -0.11588968, 0.04355686, -0.29325503, -0.018699612, -0.06769227, -0.015948739, 0.04491891, -0.046178948, 0.02711675), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.18972659, 0.27545497, -0.034131754, -0.09609413, 0.068409085, 0.13449967, -0.13105616, 0.028345212, -0.035266094, -0.065575354, -0.031779382, -0.14933869, 0.05228527, 0.09356076, -0.047118377, -0.020071832), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.17382587, 0.15029867, -0.00600536, -0.035180923, 0.025643297, 0.010418448, 0.14726849, -0.05890341, -0.053652834, 0.048409678, 0.2806725, -0.08192519, -0.06738357, 0.07469718, 0.06771393, -0.042583536), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.011517158, 0.09972045, 0.06578792, -0.12352661, 0.05922438, -0.16663863, -0.006771989, -0.038835894, -0.02194692, -0.13857606, 0.023138417, -0.05360372, 0.014272163, 0.08904743, -0.04252727, 0.103002235), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.008667266, 0.19219917, -0.07475974, -0.2816411, -0.33488217, 0.039849013, 0.017313587, 0.08000436, 0.15055846, 0.015432909, 0.32798117, 0.009342251, -0.23739037, -0.28346112, -0.030122897, -0.18473577), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.22614895, 0.13032585, -0.2176673, -0.3387019, 0.019557813, 0.17496689, 0.030887462, 0.17172079, -0.10533174, 0.0032622286, -0.13369057, -0.039323095, -0.0008841287, 0.121519946, 0.067216426, 0.03257707), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.0429636, 0.13093638, 0.12012435, -0.034646116, 0.0488735, 0.08784733, 0.03349143, -0.09357028, -0.06089799, 0.022837836, 0.16202758, 0.096765295, 0.009665008, -0.10780318, -0.07340907, 0.018662468), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.0484555, 0.05852715, -0.11502228, -0.2250242, 0.00487918, -0.018516708, -0.024522817, -0.09146677, 0.0006642944, 0.17241697, 0.38606182, -0.23263825, 0.110663734, 0.11034593, -0.0056327246, 0.051475164), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.014929107, 0.09463201, 0.009869103, -0.17499818, 0.028962199, 0.23815866, 0.060768303, 0.13828199, 0.12261715, 0.096965745, -0.024608571, -0.24542965, 0.025484774, -0.0014874635, -0.009807938, 0.0007101552), target1);\n\ttarget1 = MulAdd(a3, MF4x4(-0.101674154, 0.032412667, -0.10450873, -0.00022480187, 0.024635756, -0.1357198, -0.05327909, -0.036563605, 0.07561588, 0.009124707, -0.13368087, 0.042969264, -0.043317486, -0.1518712, -0.008810181, 0.030755859), target1);\n\ttarget1 = MulAdd(b3, MF4x4(0.1406038, 0.036187246, -0.06288465, 0.013666562, -0.22509198, 0.054938264, 0.03374708, 0.036942195, -0.054834712, 0.08038173, -0.012174669, -0.05048155, 0.04105839, -0.13010618, 0.029987235, 0.029830217), target1);\n\ttarget1 = MulAdd(c3, MF4x4(0.13428736, -0.145587, -0.09359362, 0.08647307, -0.1721466, 0.14161868, 0.06169795, -0.020108147, -0.082708314, -0.0009893128, 0.061197698, 0.015552345, 0.19280085, 0.045152925, -0.13817257, 0.08140578), target1);\n\ttarget1 = MulAdd(d3, MF4x4(0.11750963, 0.0146443285, -0.026884248, -0.0006429066, -0.008400631, -0.043018907, -0.07913679, -0.14783737, -0.032443974, -0.08028971, -0.08927282, 0.00809941, 0.0124223465, 0.041715536, -0.06587267, 0.13605455), target1);\n\ttarget1 = MulAdd(e3, MF4x4(0.29818505, 0.20918716, -0.13256323, 0.23988591, -0.38704476, -0.05851411, -0.004705456, 0.10221165, -0.08329328, 0.12643409, -0.23133238, 0.036488805, 0.21748522, -0.095220506, -0.012000105, -0.0032247186), target1);\n\ttarget1 = MulAdd(f3, MF4x4(-0.119828835, -0.016386732, 0.06939514, 0.08491721, -0.017447483, -0.10812376, -0.015384033, -0.0137153845, -0.14978316, 0.032878425, 0.120704606, 0.07987688, 0.10143365, 0.16894275, -0.09816831, -0.029983638), target1);\n\ttarget1 = MulAdd(g3, MF4x4(0.004197231, -0.004475635, 0.02442438, -0.08062267, -0.13645843, -0.063362874, -0.13470308, -4.8972346e-05, 0.04937739, 0.025885701, -0.0626489, 0.06272147, 0.040682197, -0.037275683, -0.07711889, -0.03401893), target1);\n\ttarget1 = MulAdd(h3, MF4x4(-0.07601782, -0.044119228, 0.12799697, -0.04923261, -0.07554412, -0.13866402, -0.039769165, 0.0750738, 0.028331043, 0.22329865, -0.078985184, 0.21741354, 0.08896384, 0.02745735, -0.11954973, -0.030984413), target1);\n\ttarget1 = MulAdd(i3, MF4x4(0.088372685, -0.04094657, 0.030890986, 0.011887401, 0.101060346, 0.036795005, -0.02541599, 0.11929074, 0.0042294776, -0.09067195, -0.13775113, 0.051152255, -0.011856665, -0.01186073, -0.014405341, -0.06443953), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.1990754, -0.13920973, -0.24694741, 0.20978624, 0.00096705626, -0.09906306, -0.031113537, 0.09064841, -0.005332781, 0.06942478, 0.027275847, 0.14482562, 0.10915609, 0.15485178, 0.09100627, 0.08800073), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.067276604, -0.15296488, -0.10655601, 0.1007172, 0.06399946, 0.11820019, -0.012255674, -0.04701397, 0.005157013, 0.14800015, -0.005829729, 0.058462787, -0.0034304103, -0.0022002284, 0.088455915, -0.09076621), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.0045863236, -0.13443832, -0.02036122, 0.067712225, -0.09286585, 0.15505461, -0.03191861, 0.062198598, -0.014097363, -0.06486533, -0.013725968, 0.09863627, 0.004106804, -0.11001409, -0.1489799, 0.012900801), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.11722181, 0.024655748, 0.028080126, 0.034889475, -0.02211666, 0.10347594, 0.19828199, -0.052708372, -0.23978107, 0.11193546, 0.015817301, -0.060378563, 0.05506628, 0.017437497, 0.17592382, 0.1566574), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.011318326, -0.19983633, 0.0542877, -0.08868874, 0.059281945, -0.08321469, -0.45549735, 0.41699305, 0.18566287, -0.22530322, -0.08444872, -0.04485004, -0.13312897, 0.025137378, 0.4283649, -0.22263475), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.10148392, 0.12450337, -0.032773893, 0.03742288, 0.0059106606, -0.17406113, -0.083701774, -0.010221676, 0.16314605, -0.22251254, -0.13263722, 0.09496533, -0.0020611945, 0.10998006, 0.23540293, 0.12287761), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.01097223, 0.043488838, 0.028565591, 0.057649106, 0.04069052, -0.015125962, -0.033889383, -0.039301567, -0.28547964, 0.16771436, 0.064779356, 0.17768629, 0.0977948, -0.12978803, 0.1248975, 0.076509014), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.014799843, -0.11454738, 0.0072981194, 0.06956252, -0.119126685, -0.054390237, 0.20148608, 0.055611208, -0.33772695, 0.02875631, 0.15688069, 0.07648471, 0.17330919, -0.10749096, -0.00058184325, -0.16302843), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.025022479, -0.0510169, -0.054967374, -0.18119891, 0.072380155, 0.13645615, -0.029061519, -0.09392558, 0.0020073708, 0.10373002, 0.08769151, 0.1467629, -0.032814845, -0.22622965, 0.062578805, 0.15869768), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.08132352, -0.057824034, -0.049706902, -0.021799462, 0.027207939, 0.055137623, 0.13588108, -0.06595749, -0.10212913, 0.03328737, 0.07568671, 0.04425169, -0.056393128, 0.08096936, 0.049417946, -0.03110039), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.16936453, -0.03750322, -0.041140877, -0.08652042, -0.029363338, -0.07450129, 0.102560416, -0.23950958, -0.13059175, 0.21066219, 0.10126263, 0.043688625, 0.12293311, -0.02102107, -0.01415126, -0.08114574), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.13357115, 0.25130415, -0.008012242, -0.022129368, -0.04116201, 0.19364384, -0.0755634, -0.021590892, 0.014902855, -0.16364469, -0.15113516, 0.021274269, 0.002715793, -0.082595, -0.023225293, -0.0023291293), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.047352426, 0.047768887, -0.027633572, -0.048747484, 0.002366812, 0.2123351, -0.03785716, -0.06169537, 0.05152527, -0.097918324, -0.09970387, -0.10696893, 0.14201112, 0.048251197, 0.020989964, -0.12759319), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.11691897, 0.11003735, 0.1787839, 0.035897207, -0.068546794, 0.18663177, -0.11768889, 0.0046620993, -0.076647416, -0.008958245, 0.055827506, -0.095377706, 0.051213227, -0.2821711, 0.013320494, 0.1563779), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.08324576, 0.3131121, 0.21894962, 0.013974257, -0.05526049, 0.032233212, 0.05284564, -0.2475858, 0.13031252, -0.08124232, -0.010205146, -0.057937223, 0.11874465, -0.013862318, 0.0052336063, 0.04949605), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.14994349, -0.03296414, -0.23602034, -0.0033256228, 0.008873702, -0.010388283, -0.035780232, 0.011833461, 0.117081955, -0.038984414, 0.074017905, 0.033703547, -0.024258457, 0.09559132, 0.02495569, -0.040010694), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.0048430585, 0.17926253, 0.008713498, 0.10879202, 0.019645652, 0.029483858, -0.047485687, -0.042396937, -0.029273199, -0.2432983, -0.1250007, -0.024952445, -0.060036886, 0.014986906, -0.014428253, 0.03334825), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.11731086, 0.20593153, -0.10197385, -0.011249018, -0.10738923, -0.074847564, -0.006172099, -0.18687822, -0.097578146, -0.07579803, 0.05764291, 0.10152833, -0.14840044, 0.035003513, 0.023365693, 0.04386252), target1);\n\ttarget1 = MulAdd(na3, MF4x4(0.2394935, -0.151495, -0.004142306, -0.084381334, -0.06817076, 0.04995128, 0.07523575, -0.019087847, 0.04900443, 0.03855287, -0.047666, -0.010728584, -0.041862275, 0.0092430115, 0.18933049, 0.001247498), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(-0.26478, -0.108964734, 0.07654512, -0.18083075, 0.087697916, -0.1985272, 0.12003646, 0.088157, -0.11911801, 0.10562385, 0.08664133, 0.04456427, -0.105021, 0.18528733, 0.034151975, -0.15520982), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(0.017519012, -0.012286436, 0.10177459, 0.038459957, -0.22457904, -0.05511256, 0.15413229, 0.1507701, 0.08257404, 0.034750186, -0.15717988, -0.030795097, -0.07657355, -0.33403704, -0.0053621423, -0.06624692), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(0.10030682, -0.052044563, -0.049402863, 0.09053447, -0.13081445, 0.0141896, 0.042153686, -0.010219266, -0.06850381, 0.03529716, 0.16374019, 0.06750858, 0.09204821, 0.053093266, -0.024561154, 0.018893644), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(-0.21870598, 0.32735768, -0.037454635, -0.062546894, 0.048824597, 0.006229873, 0.0879531, 0.0010694796, 0.1268415, -0.3329151, 0.18059574, 0.027663317, 0.06451952, 0.2059446, -0.14739716, 0.0425968), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(-0.02567249, 0.18261379, 0.0078112325, 0.13831526, 0.022516627, 0.18176961, 0.022643182, 0.06482983, 0.32458714, 0.1415256, -0.40462464, -0.24058491, -0.1555331, -0.058481682, 0.08041805, 0.068204984), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(0.08099861, -0.042113766, -0.012603856, -0.027247382, -0.09505534, 0.013861726, 0.16544205, -0.034136306, 0.013128467, 0.022156378, 0.021391893, -0.087280534, -0.18957394, -0.072840415, 0.1942784, -0.04479766), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(0.13244309, 0.23072438, -0.10388544, 0.055465538, -0.06797261, 0.0813476, 0.03605633, -0.002648387, 0.04333517, 0.1233629, 0.004186724, -0.068296656, -0.076496966, -0.13608767, 0.13116132, -0.067895085), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(-0.05193536, -0.057465453, 0.05165806, -0.092361026, -0.21779, -0.08789043, 0.056987524, -0.06524499, 0.02767333, 0.19836798, 0.104195744, -0.091015235, -0.10806183, -0.24305776, 0.12348048, 0.17889297), target1);\n\t\n\tMF4 target2 = { -0.0980025, 0.0163943, 0.07015813, -0.04460826 };\n\ttarget2 = MulAdd(a1, MF4x4(0.0007129529, -0.23268181, -0.055581614, -0.19489531, -0.119524784, 0.16052821, 0.08242202, 0.1274113, 0.06528547, 0.11359341, -0.13980822, -0.04566708, -0.03624654, -0.08533644, -0.14554873, -0.14973463), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.010712782, 0.09223229, -0.06977767, 0.031998634, 0.2417462, -0.08404255, -0.067694396, -0.031915385, -0.08493046, -0.12639172, -0.12919787, 0.009066012, 0.027782273, -0.2951646, -0.1300083, -0.0673188), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.1325964, -0.051963683, 0.13291354, 0.02579481, -0.103561625, -0.041789595, 0.040783167, 0.047240548, -0.06668069, 0.020328876, 0.08887853, -0.02963949, -0.11168412, 0.1557154, -0.076105356, -0.1504038), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.10317256, 0.07854648, 0.16037096, -0.0379184, 0.13046049, -0.024218671, 0.0822899, 0.08198137, 0.0012042717, -0.25853133, 0.046963938, -0.009453239, 0.09634527, -0.009770066, -0.12853295, -0.041695565), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.11125126, 0.09055589, 0.014031054, -0.02255056, -0.10394986, 0.10815357, -0.15813628, -0.01853368, 0.012419031, 0.0020822953, -0.010447686, -0.026241936, -0.03541712, 0.076329805, 0.20895265, 0.003645337), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.12773241, -0.09765568, -0.14337096, -0.065751396, -0.0084745465, -0.052546956, -0.08200752, -0.08708897, -0.032195702, -0.036496297, 0.17860867, -0.068227254, 0.13200605, -0.13811241, -0.050324995, 0.16204447), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.014216644, 0.057588127, -0.044320818, 0.062128264, -0.020399947, -0.05649115, -0.11319402, -0.038921937, 0.036813796, 0.5067311, 0.22060235, -0.0055661057, 0.23151882, 0.0050073536, 0.12176585, 0.0038464004), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.0759528, 0.07477981, -0.06292785, -0.050053917, -0.06312128, -0.21425541, 0.0067035304, -0.06986801, 0.10586866, -0.12749328, -0.097493485, -0.003508852, 0.111684315, 0.18951331, -0.012068376, 0.036257178), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.15544677, 0.047360703, -0.059747778, 0.0026973744, -0.00072011014, 0.15553303, 0.10704341, -0.02808549, -0.09962682, -0.044461366, -0.014757942, -0.06257519, 0.13504705, 0.030818086, -0.047969542, -0.12272446), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.02756638, 0.03870099, -0.078585416, -0.049957782, -0.16714093, -0.020673685, -0.0029932198, 0.08303188, 0.09362902, -0.32569888, -0.02152779, -0.039258134, -0.0024254394, -0.05215952, 0.103006296, -0.05561939), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.11232395, -0.4204378, -0.02948307, 0.058709357, 0.10122942, -0.01815637, 0.029027436, 0.045725007, -0.0019202912, -0.20451765, -0.06804741, -0.018427953, 0.026046682, -0.02693389, -0.1603317, -0.11198625), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.24319492, 0.114851095, -0.13692874, 0.07721465, 0.020316923, -0.08134961, 0.07356765, -0.054053787, -0.01942671, 0.22095704, 0.00965335, 0.018760502, 0.015964821, 0.086102456, 0.01024545, 0.043060217), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.3332833, -0.03617076, -0.06354161, 0.095067084, 0.20085002, -0.07980238, 0.042980768, 0.016795967, -0.09440837, -0.18057466, -0.062128007, -0.22770254, 0.03636945, 0.0749142, 0.0034359195, -0.024630694), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.18430449, -0.036511928, -0.053284973, 0.023835842, 0.23871118, 0.05792267, -0.0846795, -0.20196451, 0.03506874, 0.22829485, -0.28377455, -0.11413547, -0.10833865, 0.09104711, -0.13071612, 0.17202353), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.19165954, 0.22479524, -0.19884257, 0.08072162, -0.07574742, 0.13766298, -0.25755826, 0.084687516, -0.080061525, 0.25205615, -0.12677447, 0.08576974, 0.02831567, -0.009467821, 0.1970242, 0.20168954), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.0927734, 0.17610501, 0.14182864, 0.18800513, 0.05701441, 0.15469678, 0.11420199, -0.15377665, -0.08189125, -0.30660027, 0.033272292, -0.11340498, -0.08969095, 0.016946664, 0.03424574, -0.007572548), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.23636094, 0.15679167, 0.070221, 0.11989854, -0.18536362, 0.06250143, -0.086411804, 0.0099315215, -0.13320905, 0.2642356, 0.22141577, -0.009068583, -0.06783877, 0.16432028, 0.06672474, -0.051250096), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.22000717, 0.15731241, 0.13043061, -0.042806733, 0.0031978998, 0.0668276, 0.08608138, 0.10850058, 0.22485662, -0.121448815, -0.014875905, -0.082832925, 0.056386247, -0.29444495, -0.05680645, -0.015010734), target2);\n\ttarget2 = MulAdd(a3, MF4x4(0.014549664, -0.0069613485, 0.11311649, 0.05610812, 0.04279884, -0.1020982, -0.03904751, -0.17636296, -0.05201923, 0.14244251, -0.059024896, -0.09463292, -0.09491209, -0.022265568, -0.0002296264, 0.03899329), target2);\n\ttarget2 = MulAdd(b3, MF4x4(0.048777632, 0.052673753, 0.13282603, 0.1795813, -0.028372066, 0.10603009, -0.4148765, -0.02000411, 0.053786337, -0.11523432, -0.31676108, -0.03830518, 0.022093901, 0.013758008, 0.106954776, -0.028646056), target2);\n\ttarget2 = MulAdd(c3, MF4x4(-0.06699817, -0.1724271, -0.036506936, 0.1153328, 0.015884517, -0.008503094, 0.028359545, -0.012168917, 0.030682955, 0.03541267, -0.03814948, -0.01124931, -0.05933562, -0.014424095, 0.027945189, -0.08810283), target2);\n\ttarget2 = MulAdd(d3, MF4x4(0.013294456, 0.19495966, 0.067234084, 0.15800472, 0.051711556, 0.17711255, 0.1140798, 0.10137737, -0.039499275, -0.04602223, -0.07446666, 0.0012073858, -0.08343905, -0.049277645, -0.078486815, -0.14566717), target2);\n\ttarget2 = MulAdd(e3, MF4x4(-0.09936533, 0.039390396, 0.13288753, 0.1920324, 0.13764949, -0.05153866, 0.06799814, 0.22350872, 0.27779356, -0.02206339, 0.19484605, -0.07821554, -0.07797821, 0.12577902, -0.084113464, 0.02873002), target2);\n\ttarget2 = MulAdd(f3, MF4x4(-0.10784442, -0.25804177, 0.1306632, 0.0046842564, 0.13917917, -0.03910364, 0.06410272, 0.019373003, -0.03459362, 0.080056466, 0.12915988, 0.14360592, 0.19040298, -0.0023102893, -0.04890759, -0.22537242), target2);\n\ttarget2 = MulAdd(g3, MF4x4(0.056570116, 0.13121127, -0.069638334, 0.11919738, -0.04740792, -0.16621193, -0.118925, 0.044869807, -0.010641902, -0.051522024, -0.057623643, 0.017528418, -0.07562933, 0.058253985, 0.05989836, 0.032996327), target2);\n\ttarget2 = MulAdd(h3, MF4x4(0.091301516, 0.08428476, -0.16445327, 0.11784904, -0.07030389, 0.022161584, -0.02548798, -0.08254805, -0.04188322, 0.24900444, 0.078174226, 0.20630752, -0.05519587, -0.10978986, 0.015350538, -0.12161702), target2);\n\ttarget2 = MulAdd(i3, MF4x4(-0.095735274, -0.10423386, -0.036254395, 0.10522458, -0.022615599, 0.085539706, -0.096113354, -0.23468721, 0.050746538, -0.31889522, -0.061264757, 0.11150476, -0.007024875, -0.11553085, -0.019223234, -0.23692535), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.08454392, 0.21670897, -0.15095642, -0.060052566, 0.045126446, -0.030535553, -0.057765372, -0.027783932, -0.20350753, -0.2959993, 0.28601378, 0.028859718, 0.071787685, -0.027895963, -0.04723786, -0.10217129), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.012522398, -0.23370479, -0.019732006, -0.052036785, -0.33242345, 0.02026433, 0.26734874, 0.044760924, -0.09205539, 0.0888652, 0.27825877, -0.08912795, 0.019177845, 0.123587854, -0.10933388, -0.046620987), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.059484433, 0.107038036, -0.021947065, 0.03293247, 0.16987476, -0.02623603, -0.019537413, -0.02559007, -0.010399871, -0.028635733, -0.10141786, -0.10065662, -0.09635094, -0.107081525, 0.0060942136, 0.00018589811), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.063847266, -0.07454534, -0.1174812, -0.14199455, -0.044613797, -0.081642054, 0.035214093, 0.009284773, -0.00707006, 0.28477952, -0.03298465, 0.074021146, -0.04033067, 0.17765698, 0.1553138, 0.08380522), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.17025755, -0.118484, -0.21803714, -0.28715235, -0.13095933, -0.058834057, -0.18294802, 0.043152038, -0.058910713, 0.028670516, -0.0010361333, -0.025163988, 0.15223087, -0.016097538, -0.09638604, -0.01772858), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.062441614, -0.016123693, 0.07818185, 0.022483543, -0.029692583, 0.035550565, -0.12624146, -0.04230702, -0.061506867, -0.014386596, 0.0115612615, 0.068888955, 0.067702614, 0.07322066, 0.024701316, -0.04806952), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.026700316, -0.16510022, 0.050885063, -0.1332475, 0.019049475, -0.008760977, 0.04359399, 0.042262577, -0.05225198, -0.603255, -0.11838725, -0.017602438, -0.23949145, 0.07854026, -0.21954034, -0.07048147), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.18560836, 0.18485062, -0.008109583, -0.0061953044, 0.067029685, 0.1231515, 0.00463641, -0.031592768, -0.24861142, -0.012609046, 0.14307153, -0.072264954, -0.0067704953, -0.18041459, 0.17362577, -0.06497389), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.10974998, 0.06757753, 0.0377915, 0.057072945, 0.11128115, 0.0013228649, -0.044957817, -0.020252109, 0.06231163, -0.14761455, -0.027373059, -0.10220075, -0.22065234, -0.09441151, 0.052624665, 0.11956694), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.11292619, -0.10152602, 0.10526179, 0.06337831, 0.116172016, 0.16123155, -0.055104487, 0.13740757, -0.08778325, -0.028898785, -0.019357817, -0.08015077, -0.0066665406, -0.009120153, 0.051283117, 0.04456564), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.19621657, 0.26922694, 0.03988996, 0.032870032, 0.057292562, 0.024405524, -0.11551687, -0.047686152, 0.13039996, 0.056989953, -0.065783806, 0.00033558672, -0.065978706, -0.00902148, 0.1314761, 0.064695716), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.20266968, 0.11562562, 0.0044746934, 0.052361086, 0.0009612361, 0.01889979, -0.045194417, 0.085848965, -0.05785333, 0.07915189, 0.09685515, 0.016877603, 0.00037991733, 0.0003345007, -0.03782238, -0.0066707213), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.12730233, 0.037978236, 0.13999923, 0.033807464, -0.038275905, 0.012305192, 0.06438087, 0.08611617, 0.07200057, 0.13013837, 0.07331905, -0.0010762423, -0.038951423, -0.027457712, 0.014879732, 0.07803083), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.12269098, -0.01707025, 0.099231675, 0.16366597, -0.0075668246, -0.12552746, 0.27712014, 0.22933815, 0.14837137, -0.07610271, 0.11374453, 0.026816925, 0.1011783, -0.043783583, -0.18852726, -0.2007988), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.118183166, -0.45110446, -0.04326608, 0.10598517, 0.09142483, 0.004518412, 0.10789324, 0.18913233, -0.029293153, -0.10852763, 0.15762898, -0.021000696, 0.042484812, 0.030249448, -0.09806746, -0.15705605), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.026257282, -0.017269222, -0.111170195, 0.12946244, 0.015408065, -0.14137042, -0.035408627, 0.073995374, 0.006271072, 0.14994001, -0.01258022, 0.019418288, 0.118502036, 0.035291567, 0.039203968, 0.018011976), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.11994321, 0.037343338, 0.034031454, -0.0947803, 0.2207995, 0.043690477, 0.06692838, 0.18297808, 0.03876948, -0.20762676, -0.13309777, 0.036189202, 0.0058699325, -0.1331377, -0.035574175, -0.091714606), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.16173537, 0.030811697, -0.07565782, 0.17767896, 0.1574808, -0.0071866834, -0.031369448, 0.11762595, -0.304427, 0.04666128, 0.19467019, 0.13271074, -0.066108644, 0.17788546, 0.09988941, 0.0071199923), target2);\n\ttarget2 = MulAdd(na3, MF4x4(-0.07895499, 0.024530848, 0.07610484, 0.14991722, -0.071451046, 0.07360262, -0.10922367, 0.16261177, 0.14607567, -0.29037732, 0.19056098, 0.0017480691, 0.09447392, -0.097536966, -0.15283571, -0.2116911), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(-0.090664506, 0.0026753773, -0.19803517, -0.0035921792, 0.08019641, -0.34822193, 0.03115303, -0.11561995, 0.047316786, 0.08521655, 0.30527622, -0.03627345, -0.10390178, 0.13096002, -0.11939941, 0.076553464), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(-0.018057704, -0.012385826, -0.048699293, 0.057409126, 0.018623013, -0.13720913, -0.08693412, -0.035308264, 0.0048156027, 0.04298599, 0.20682096, 0.07020018, -0.19156799, -0.099447116, 0.11187527, -0.034651503), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(-0.19674721, -6.47493e-05, -0.14616148, -0.16328155, -0.15329379, -0.13080211, -0.095063426, 0.10239187, 0.29591182, 0.061356615, 0.19931474, -0.062333517, 0.111954294, -0.024125673, 0.1727124, -0.100813806), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(0.005782909, -0.048647407, 0.20534706, 0.04177472, -0.266937, 0.43962362, 0.03461612, 0.13415751, -0.21391335, -0.023739172, -0.382901, 0.1677018, 0.28375793, -0.10282615, -0.034843605, 0.00698951), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(-0.0019446284, 0.07665739, 0.13404883, 0.1467204, -0.0588129, 0.19369206, -0.050641898, 0.018204086, 0.21603708, -0.22462276, -0.07930267, -0.2749562, 0.016131664, 0.2697215, -0.14661922, -0.026748048), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(-0.15208562, -0.025413433, -0.031909585, 0.010184482, 0.09441715, 0.045736533, 0.0015301697, 0.055179585, 0.03623536, 0.08788274, 0.090822086, -0.041574936, -0.05593542, 0.013202262, -0.08831654, -0.117966585), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(-0.06767938, 0.036391854, 0.024670534, 0.065553516, 0.124412306, -0.18261679, -0.11035609, -0.021725666, 0.06963895, -0.18845208, 0.05664083, -0.28461877, 0.12621799, -0.024473144, 0.060711104, 0.06137061), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(0.030836413, -0.28885397, -0.0082618, -0.040858608, 0.121351525, -0.1581085, 0.04491976, 0.15929738, 0.011640548, 0.17567058, 0.18560362, -0.18308444, -0.091114745, -0.03191929, -0.0424641, 0.10603501), target2);\n\t\n\tMF4 target3 = { 0.038618144, 0.034658056, 0.04403221, 0.22010419 };\n\ttarget3 = MulAdd(a1, MF4x4(-0.044858746, 0.112747766, 0.11743049, -0.04397981, -0.15657529, -0.08594472, -0.077046685, 0.040047225, -0.16525316, 0.118806966, -0.06923664, -0.068862945, 0.13853838, 0.21202816, 0.03315427, 0.02810617), target3);\n\ttarget3 = MulAdd(b1, MF4x4(-0.08981965, 0.009795084, -0.17461349, 0.1293042, 0.13288464, -0.011990358, 0.045853514, 0.005478685, -0.039259993, 0.014204771, 0.049636167, -0.031643927, -0.081734784, 0.06592399, -0.075981714, -0.02715899), target3);\n\ttarget3 = MulAdd(c1, MF4x4(0.110248916, 0.0064891353, 0.022578653, -0.029814541, 0.12611644, -0.1477485, 0.013158434, -0.029419534, -0.049103256, 0.11351519, -0.07094292, 0.15175463, 0.023724427, -0.04979516, 0.01999463, -0.04911801), target3);\n\ttarget3 = MulAdd(d1, MF4x4(-0.072089985, 0.04007664, -0.024550471, -0.0041285334, -0.018247912, 0.046173554, -0.07198727, 0.017499885, -0.001033623, -0.19433345, 0.07760378, 0.049773693, -0.17062156, -0.02818212, 0.34907836, 0.0050598015), target3);\n\ttarget3 = MulAdd(e1, MF4x4(-0.06617895, -0.029447488, -0.08041051, 0.10391866, -0.3511068, 0.24072146, -0.07714093, -0.19329752, -0.090364814, -0.114312, -0.14665945, 0.14689237, 0.20671985, 0.015588815, -0.119754635, -0.056320462), target3);\n\ttarget3 = MulAdd(f1, MF4x4(-0.027388249, 0.104699664, -0.27179572, -0.02907286, 0.07357054, -0.0068755792, -0.13605821, 0.06462062, -0.093615666, -0.032704853, 0.038318764, -0.076435864, -0.0055633793, 0.046742633, 0.093529075, 0.18353659), target3);\n\ttarget3 = MulAdd(g1, MF4x4(0.06082767, 0.085872404, -0.093700096, 0.061194196, 0.06258653, 0.058643147, -0.07235859, -0.092823185, -0.010440827, 0.11255041, 0.0090868175, -0.007858298, 0.148384, -0.05526942, 0.19361623, 0.004099247), target3);\n\ttarget3 = MulAdd(h1, MF4x4(-0.06093948, -0.038310055, -0.082474135, -0.010680022, 0.0012025833, -0.092099264, 0.013127829, 0.027141726, 0.09983758, 0.03275215, 0.07185623, -0.19180898, -0.044681955, -0.024202297, -0.3165539, 0.0010588729), target3);\n\ttarget3 = MulAdd(i1, MF4x4(-0.060221963, -0.026948337, -0.06574486, 0.011485259, -0.06550075, 0.040276073, 0.025496457, -0.19623038, -0.065990366, -0.025713596, -0.040418267, -0.08788943, 0.076047935, -0.056114316, 0.15456654, -0.07788768), target3);\n\ttarget3 = MulAdd(a2, MF4x4(-0.067551315, 0.14745092, -0.054396585, 0.040545028, -0.17049932, 0.07036919, -0.13004121, -0.012877571, -0.09034833, 0.013381427, -0.07020307, 0.13269025, 0.04836113, 0.008816658, 0.06908017, 0.13488075), target3);\n\ttarget3 = MulAdd(b2, MF4x4(0.15872127, 0.046130676, 0.059947554, -0.01181087, 0.00031724942, -0.048350845, -0.009036753, -0.11157358, -0.07300833, 0.09947689, 0.20575939, -0.3546566, -0.059859008, 0.029647622, 0.13094904, -0.03154742), target3);\n\ttarget3 = MulAdd(c2, MF4x4(0.08560438, 0.1965193, -0.044979937, -0.13631731, 0.16646172, 0.09958199, 0.0074020037, 0.10672716, 0.15015182, 0.041704617, 0.063770875, 0.19410326, 0.008813034, 0.16075528, 0.08517037, 0.28283635), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.12114333, -0.08197629, 0.026583742, -0.060136575, 0.07713845, -0.004285971, 0.16490252, 0.26541123, 0.13636889, 0.14296104, -0.045894254, -0.007115691, 0.037731793, -0.014873664, -0.00571577, -0.009701031), target3);\n\ttarget3 = MulAdd(e2, MF4x4(0.2608233, -0.014971803, 0.15469527, 0.18899868, 0.06325761, 0.05273965, -0.021072507, 0.039343588, 0.049740855, 0.30912283, 0.1328661, 0.21406676, 0.013830919, -0.2128574, -0.020829424, 0.22456568), target3);\n\ttarget3 = MulAdd(f2, MF4x4(0.0642146, -0.14275537, 0.032388665, -0.12502304, 0.31260416, -0.026139492, 0.11060444, 0.014260357, -0.06373526, 0.15441616, -0.14077063, -0.03819972, 0.023418859, -0.065061435, 0.068000436, -0.10781963), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.039874375, -0.03544748, -0.09499391, -0.021817759, 0.2049574, 0.08219808, 0.044527993, -0.12810238, -0.07313955, -0.3041692, 0.074703164, 0.034242906, -0.08850236, 0.06280731, 0.07377995, 0.10382322), target3);\n\ttarget3 = MulAdd(h2, MF4x4(0.04350059, 0.21734618, 0.08675183, -0.055069674, 0.16317086, -0.000833345, -0.061599948, 0.025430895, -0.05566867, -0.07084767, -0.20808282, -0.08088132, -0.08246971, 0.019896548, 0.0011203124, -0.016212555), target3);\n\ttarget3 = MulAdd(i2, MF4x4(0.009271706, 0.10609657, 0.046975497, 0.016255897, -0.03132032, -0.026223281, -0.04218519, -0.089583725, 0.0011256885, -0.096725605, 0.13508168, 0.0070396424, 0.071279675, -0.009885292, 0.023429802, 0.04919291), target3);\n\ttarget3 = MulAdd(a3, MF4x4(-0.043223884, 0.18723601, 0.059270866, -0.038768277, -0.03307238, 0.045570783, -0.01494598, 0.12532744, -0.0633282, -0.009204529, -0.032864776, -0.012969925, -0.03190685, 0.048798896, 0.033872727, 0.059553478), target3);\n\ttarget3 = MulAdd(b3, MF4x4(0.087938786, -0.24108681, 0.14970978, -0.13961543, 0.0891246, 0.015723674, 0.05370719, -0.11110716, -0.00214365, 0.12866165, 0.108206935, 0.027394261, -0.15103427, -0.14690042, 0.035489313, -0.15238154), target3);\n\ttarget3 = MulAdd(c3, MF4x4(-0.0800077, -0.23219119, -0.08327999, -0.022596871, -0.021897404, 0.15777653, 0.017139765, 0.28121725, 0.024720678, 0.0976178, 0.078697845, 0.050298456, 0.0918896, -0.1709005, 0.001258526, -0.16952778), target3);\n\ttarget3 = MulAdd(d3, MF4x4(0.1855042, -0.1221885, 0.02704022, 0.00095695246, -0.014720871, -0.011397964, 0.009077131, -0.0658526, 0.0753248, -0.018622542, 0.21117687, 0.009595839, -0.014185466, -0.12340562, 0.20756626, 0.1002926), target3);\n\ttarget3 = MulAdd(e3, MF4x4(0.03998379, -0.14931168, 0.43595135, -0.18249772, -0.014348168, 0.17039725, -0.54961896, 0.23570935, -0.0961725, -0.08736501, -0.48726758, -0.11515001, -0.03716486, -0.17436725, 0.3894316, -0.012835015), target3);\n\ttarget3 = MulAdd(f3, MF4x4(-0.15397331, 0.021657735, -0.054806687, 0.1541452, -0.12548985, 0.0934218, 0.20914574, 0.14777465, -0.0670766, 0.11853072, -0.012987691, -0.020369543, 0.09420477, -0.17689225, 0.109701715, -0.046027176), target3);\n\ttarget3 = MulAdd(g3, MF4x4(-0.02231296, 0.14284018, -0.14968887, 0.13387628, 0.06886712, -0.11273641, 0.03278117, -0.13931367, -0.07073904, -0.05791193, 0.0074532703, 0.057605404, -0.007830725, 0.16091831, -0.16650262, 0.1647855), target3);\n\ttarget3 = MulAdd(h3, MF4x4(-0.057878133, -0.12752692, -0.12909345, 0.07441648, 0.027899493, -0.018735388, -0.07586787, -0.048344534, -0.11736236, 0.015326167, -0.103591904, -0.17694342, -0.049772773, 0.015765708, -0.1248672, 0.26354307), target3);\n\ttarget3 = MulAdd(i3, MF4x4(-0.18220314, 0.0046032136, -0.2081131, 0.03723796, 0.08844814, -0.01369978, 0.053207412, -0.08312182, -0.062071536, -0.067955784, 0.004774782, -0.06925075, -0.059406135, 0.06784051, -0.09814774, -0.11124358), target3);\n\ttarget3 = MulAdd(na1, MF4x4(-0.27883962, 0.12152088, -0.24405631, 0.0027260163, 0.19775666, 0.058938242, -0.05956473, -0.10816854, -0.0071739377, -0.4144036, 0.068261996, -0.2445757, -0.23093198, -0.17691095, 0.038170703, -0.013878705), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(0.063041806, 0.2538589, -0.11473429, 0.01619935, -0.08354722, -0.04798535, 0.02354034, 0.033864528, -0.055874173, -0.16368376, -0.02903178, -0.12477576, 0.02629324, 0.034359895, 0.08272036, 0.06732605), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.15553482, 0.0060790586, -0.05535005, 0.0132087935, -0.03520144, 0.023434987, 0.031604007, -0.09385124, -0.15015934, -0.13401696, -0.005520488, -0.08600875, -0.04346026, -0.07434181, -0.05771243, 0.03339138), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(-0.13035898, -0.06444063, -0.12604833, -0.1291162, 0.0002854935, 0.0011192479, 0.03285, -0.0718767, -0.0048345756, 0.23910385, -0.13370244, -0.27723455, 0.2173459, -0.09477723, -0.2785804, -0.089392334), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(0.19831544, -0.04623001, 0.11013904, 0.07203301, 0.006143421, -0.059177686, -0.5040003, 0.12711781, 0.18126795, 0.13216637, 0.15124142, 0.0053686183, 0.090513304, 0.10542994, 0.34392425, 0.016424375), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(-0.16124019, 0.09191821, -0.04369587, -0.21306747, -0.16233422, 0.031122763, -0.012612568, -0.016409902, -0.09023912, 0.013649212, -0.16627215, -0.05366447, 0.10274318, 0.086314775, 0.08027116, 0.08462481), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(-0.14453822, 0.024520764, -0.0071830307, -0.13206398, -0.072472885, -0.10329967, 0.1636545, 0.016468262, -0.013051184, -0.12824146, 0.03824098, -0.22003986, -0.10416448, 0.0039071296, -0.34092218, 0.10734566), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(-0.072179504, 0.006203091, -0.018925803, -0.1199396, -0.084528126, 0.094925165, -0.11961369, -0.054626215, -0.117074564, -0.04484073, 0.040342934, 0.13213676, -0.0064397864, 0.10155662, 0.20097142, -0.2804305), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(0.087270446, 0.078806184, -0.05655386, 0.06486903, 0.034370087, 0.0036874234, 0.003311713, -0.10504396, 0.028166316, -0.22845218, 0.017909897, -0.2130404, -0.050013334, -0.117276974, -0.06318294, -0.0037857178), target3);\n\ttarget3 = MulAdd(na2, MF4x4(0.08871242, 0.075167455, -0.039373945, 0.00051754323, 0.07687967, -0.06586344, -0.15153599, 0.0018507856, -0.017242108, -0.054329462, 0.051372115, 0.0033961546, 0.06248249, -0.06631481, 0.05806025, -0.021996895), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(0.09424522, 0.073743, -0.0017127816, 0.0033512171, -0.11385974, 0.014514997, -0.0068160114, 0.12540759, 0.106560245, -0.049447417, 0.111991346, -0.06375654, -0.011610938, -0.024543937, -0.12136444, 0.1091816), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(0.2360247, 0.051082112, 0.063963845, -0.19552353, -0.12502095, -0.043954436, -0.029264912, -0.107425205, -0.104991466, 0.1546093, -0.019506395, 0.102938086, -0.054183662, 0.010583785, -0.080395944, -0.08370572), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(0.15028444, 0.031050628, 0.04759701, -0.076938786, -0.09843708, 0.013380048, -0.07036618, -0.18517768, -0.24299946, 0.0074256407, 0.12335329, 0.008296356, -0.14130129, 0.089567006, -0.066212654, -0.019249886), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(0.21793036, 0.046704203, -0.26442486, 0.036775246, 0.011823214, 0.035270307, 0.27286708, -0.041062694, 0.1929, -0.18686813, 0.033577543, -0.23847485, -0.04342215, 0.20992972, -0.31331903, -0.3476763), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(0.2605603, 0.045636464, 0.078897774, -0.02860065, -0.17690817, -0.022998778, -0.078985356, -0.08182311, -0.02665034, 0.051768366, 0.14886487, 0.08579571, 0.13346, -0.10001264, 0.04904008, 0.14541489), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(0.106186725, -0.0063438504, 0.07265258, -0.036121733, -0.13984898, 0.003038981, -0.016125364, 0.13680565, -0.057302903, -0.12963718, -0.0030335293, -0.021742221, -0.006363557, -0.101099625, 0.095220365, 0.033486642), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(0.094589375, -0.044164203, -0.15519938, -0.02010285, -0.094102144, -0.06617603, -0.06663444, -0.036653996, -0.018485812, 0.04307366, 0.23020254, 0.17289902, 0.11927716, 0.059777882, 0.16321822, -0.17249192), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(0.17176881, -0.05145481, 0.058537252, 0.07365525, 0.17615119, -0.0008998237, 0.20070761, 0.08091997, -0.22727549, 0.040356588, -0.19447488, 0.019409144, -0.094837844, 0.029385263, 0.06778661, 0.15896504), target3);\n\ttarget3 = MulAdd(na3, MF4x4(-0.11452088, -0.024284642, -0.04490299, -0.020004421, 0.050837193, -0.19884948, 0.0027391468, -0.04909611, 0.10565033, 0.046887845, 0.15566911, -0.04677708, -0.1617592, -0.1090753, 0.021104805, 0.12100669), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(0.0796837, 0.2143031, 0.15130435, 0.11013741, 0.02859385, -0.23182273, -0.01307099, 0.17366518, 0.067062154, -0.13214251, -0.0359161, -0.22044878, -0.065245375, -0.12085723, -0.0058068414, -0.05868892), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(0.05886354, 0.04594631, 0.0035692437, 0.0043173125, -0.0058938325, -0.12315084, 0.009706764, 0.029205475, 0.02275545, -0.030235367, -0.010946894, -0.1160915, -0.24663799, 0.021396592, -0.08312792, 0.035279196), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(-0.18054669, -0.03518381, 0.048470423, -0.0056507597, 0.03240578, 0.12688184, -0.09667544, 0.04029143, 0.03038166, 0.10955508, -0.2918326, -0.08950494, -0.06969353, 0.20913015, 0.13051425, -0.12262561), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(0.11774238, 0.107279345, 0.09160909, -0.12901367, -0.063854314, 0.012220096, 0.1428603, -0.03274951, -0.16071229, 0.16923961, 0.09850307, 0.3375513, 0.17089152, 0.1066977, -0.11292511, 0.07839456), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(0.06309776, -0.062669575, 0.12810674, -0.22764897, 0.05594526, -0.3354947, -0.271324, -0.1370599, 0.0019311982, -0.20568445, 0.14663076, -0.10399025, -0.11092913, 0.13635515, -0.046688963, 0.18119682), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(0.06247405, -0.070577376, -0.049723163, 0.20372438, 0.059769955, -0.15753393, 0.08755224, -0.16705483, 0.043191068, 0.13503598, -0.06549854, -0.08262152, -0.036690235, -0.017480936, 0.0087178415, 0.124511525), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(-0.103790514, -0.062080752, -0.04171218, -0.22629078, 0.058754075, 0.010274649, 0.012631916, 0.0884306, 0.10843063, 0.11566254, 0.16639906, -0.05603101, 0.03344291, -0.009285547, 0.22062606, -0.18537858), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(-0.010970425, 0.06433602, -0.010908282, 0.21255766, -0.124487005, -0.18626499, 0.017554395, 0.022440141, -0.043080032, 0.13329363, -0.019777333, -0.13920292, -0.057512637, -0.07950961, 0.0008059128, 0.08286962), target3);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n\ttex3[gxy] = target3;\n}\n\n//!PASS 4\n//!DESC Conv-4x3x3x24\n//!IN tex1, tex2, tex3\n//!OUT tex4, tex5, tex6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { -0.034046266, 0.030718531, 0.029500093, -0.007484251 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.19656715, 0.073294915, -0.019779518, 0.021025823, 0.15261759, 0.04309221, -0.1493544, 0.049283743, -0.0905334, 0.1813188, -0.0016973419, 0.15697837, 0.13670535, -0.11242918, -0.013915669, -0.13730156), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.04107699, 0.17384163, -0.096351616, 0.04331655, -0.23204431, 0.25804806, -0.04034741, 0.17473252, 0.2747926, -0.04826532, 0.06581498, -0.01747519, 0.16690566, 0.18259898, 0.051713206, -0.11371784), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.09295699, -0.02639465, -0.07067535, -0.055101186, 0.049066454, -0.1348934, -0.010201892, 0.076446265, -0.17203535, 0.094379045, -0.05279342, -0.06568022, 0.019863818, 0.048707128, -0.001194968, 0.08657796), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.075812176, -0.14860412, -0.07091005, 0.027131502, -0.037916575, -0.08786051, 0.12747246, 0.07358627, -0.17530513, 0.01687204, -0.02315926, -0.0475825, 0.10233608, 0.11752665, -0.066707715, -0.02696408), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.16265862, 0.07163909, 0.029001605, 0.023125717, -0.45108593, 0.31734392, 0.18262424, -0.16254611, -0.13591787, -0.34079695, 0.15933561, -0.11768856, -0.20831986, -0.2617357, -0.06293675, -0.21008867), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.03834222, 0.11669165, -0.14289354, 0.19205377, 0.034326866, 0.11611292, -0.35397327, -0.22060747, -0.004148329, 0.16584732, 0.021622034, -0.026690945, -0.002915367, -0.0025648596, 0.098647386, 0.010004625), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.12951577, -0.12372639, 0.050420888, -0.059468318, 0.06579213, -0.20325322, -0.1699444, 0.019064313, -0.035931777, -0.020957012, 0.0027909358, 0.007493282, 0.0004133846, 0.034073114, -0.038953777, 0.065847114), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.044652946, 0.04014948, -0.11211438, -0.009610841, 0.04416661, 0.007001935, 0.23747365, 0.051566597, 0.08833828, 0.08240841, 0.11842664, -0.053376306, -0.24712811, 0.086317725, 0.0038018306, 0.058020968), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.14782053, -0.02475428, -0.17784445, -0.024647312, 0.1743018, 0.06606081, 0.056824066, 0.14064185, 0.06063915, -0.04583706, 0.101063475, -0.043567337, -0.07165717, 0.03192861, 0.056516238, -0.011080173), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.15754054, -0.022155577, -0.08209624, -0.0014304873, -0.29201108, 0.08677429, 0.2264655, 0.047244307, -0.048876513, -0.0927597, -0.045443505, 0.20207925, -0.12566972, 0.1404151, -0.024384655, -0.032324787), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.2863662, 0.08409054, 0.060920034, -0.05120718, 0.20190823, -0.05651237, 0.16887607, 0.0733604, -0.14424925, -0.06001526, 0.030432044, 0.14361487, 0.02771769, 0.030591695, -0.029078443, -0.048318565), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.00791873, -0.09765571, 0.00042280424, 0.09341729, -0.22752157, 0.23591608, 0.0051302435, -0.077698976, 0.10737567, -0.23836324, -0.067966945, 0.2257328, -0.004849654, -0.036767352, 0.13280262, -0.07600507), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.05473653, -0.1915318, -0.00626306, -0.13441068, 0.088244185, -0.31077763, -0.010066507, -0.091302134, 0.11164262, 0.12096589, -0.0605778, 0.1308392, -0.010200418, -0.024670156, 0.09293591, 0.028182708), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.053266037, 0.29016244, 0.19542074, -0.20729323, 0.1344162, -0.21329224, 0.20277289, -0.08846336, -0.114185594, 0.206921, -0.0006008467, 0.0205045, -0.282864, -0.22293371, -0.17658198, 0.20596933), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.03932726, 0.080170035, -0.07711416, -0.29913354, -0.06824731, -0.061843343, -0.13042153, -0.19094346, -0.11703233, 0.06704312, -0.049862698, 0.1466207, -0.0011674183, 0.080236584, -0.06675328, 0.13961533), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.022837833, 0.0019198474, 0.0236172, 0.07043625, 0.12661463, 0.001672872, 0.06307569, -0.13343741, 0.17860405, -0.19384168, 0.079231955, 0.032781634, -0.15199795, 0.13594992, 0.070164844, -0.060025793), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.12844789, -0.025733668, 0.020556241, -0.12541436, 0.14400893, -0.03860052, 0.059304774, -0.1786852, -0.18367065, -0.2374019, 0.1148333, -0.1065858, 0.119285814, 0.016301462, 0.028108267, 0.04623708), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.12543629, 0.011575056, -0.037424013, 0.09024941, -0.029061148, -0.08703052, -0.0024641235, -0.105915934, -0.044543535, 0.06887956, -0.04743747, -0.05494799, 0.031339128, -0.034284074, -0.121141724, 0.053843208), target1);\n\ttarget1 = MulAdd(a3, MF4x4(-0.2666571, 0.09093467, -0.012503428, -0.035125565, 0.032127958, -0.042863887, -0.08649192, -0.015927156, 0.08400246, 0.01662268, 0.034715075, -0.00908548, 0.045443024, -0.06893885, -0.074183375, -0.00844849), target1);\n\ttarget1 = MulAdd(b3, MF4x4(0.18397407, -0.10994183, 0.086410955, -0.008634828, -0.02632997, 0.019804388, 0.048724968, 0.18321893, -0.017287457, 0.18407986, -0.08789994, 0.23315573, 0.17696501, 0.021334525, -0.01854696, -0.19259432), target1);\n\ttarget1 = MulAdd(c3, MF4x4(-0.17279425, 0.040277172, 0.045758635, 0.112192474, -0.1307268, -0.08761701, -0.17986964, 0.08374649, -0.14858364, 0.09763281, -0.08468596, 0.07319079, 0.035000093, 0.15952845, 0.07624351, -0.06327825), target1);\n\ttarget1 = MulAdd(d3, MF4x4(0.08170692, -0.08774166, -0.06705707, 0.0831711, -0.08875457, 0.2449888, -0.14047605, 0.121503554, 0.12618999, 0.02661774, 0.074408755, 0.008565884, 0.0066377656, 0.07707615, 0.0047538104, -0.09728628), target1);\n\ttarget1 = MulAdd(e3, MF4x4(-0.07823108, 0.26807916, -0.1287439, 0.122834176, -0.19714594, -0.4942738, 0.10632799, 0.15897664, -0.49854252, -0.53525513, -0.022803375, 0.009074036, 0.11774684, 0.031480465, -0.09894373, -0.021954348), target1);\n\ttarget1 = MulAdd(f3, MF4x4(0.12955268, -0.19441509, 0.09120095, 0.011785061, 0.051540542, 0.04758044, 0.04755938, 0.038364667, 0.13298763, 0.10289183, 0.020991595, -0.081097506, 0.034405325, -0.11437959, -0.12480481, -0.065397635), target1);\n\ttarget1 = MulAdd(g3, MF4x4(0.014650886, -0.013576367, 0.07512687, -0.12763637, -0.08968091, 0.10528254, -0.0038084937, 0.15035029, -0.012962306, 0.05691601, 0.0812368, -0.03788991, -0.023433529, -0.06713006, -0.11560342, -0.016785484), target1);\n\ttarget1 = MulAdd(h3, MF4x4(-0.08841537, -0.06776095, -0.047271274, 0.019514252, -0.015769644, 0.13348323, -0.10441001, 0.11785519, 0.12106464, 0.12203113, 0.12842509, -0.060258504, -0.05513583, -0.11723075, 0.16473113, 0.011207402), target1);\n\ttarget1 = MulAdd(i3, MF4x4(0.09194844, 0.090906195, 0.0073818006, -0.2054332, 0.10706456, -0.077387035, -0.10359331, -0.027400512, 0.03793532, -0.14690651, -0.093249865, 0.050878726, -0.050666083, -0.048249774, -0.029831426, -0.005122034), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.020260984, 0.03831684, 0.03624668, 0.05309828, 0.21425313, 0.04278761, -0.05036095, -0.11595718, -0.040695038, -0.053862657, 0.04097228, -0.14234553, 0.14645652, 0.0005556175, 0.037454158, -0.0834163), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.06560231, 0.035083, 0.00515858, -0.078715794, 0.18701494, -0.13166098, 0.039057065, -0.0039464743, -0.060099427, -0.0197617, -0.03425236, -0.034474097, -0.13463692, -0.14687043, -0.07386183, 0.15877718), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.17528099, 0.26496586, -0.026784442, 0.02301352, -0.19334768, 0.058255307, 0.084549166, 0.05813938, 0.14634804, 0.021594442, 0.09401384, 0.048137084, -0.027516525, 0.03725506, -0.03902931, -0.05822093), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.08095242, -0.0700387, 0.1565957, -0.12318027, 0.0009593411, 0.083975986, -0.1672044, 0.07669263, 0.15444267, -0.2405765, -0.0999547, -0.0113806585, -0.086394556, -0.068187304, 0.022804303, 0.033642158), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.1742647, -0.1139802, 0.03773566, 0.24217185, 0.14553599, -0.13462967, -0.15343545, -0.07004845, 0.09719264, 0.40018603, 0.012584803, 0.20194948, 0.23837751, 0.14372137, 0.018450642, 0.19864424), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.01977227, -0.01629232, -0.11582299, 0.07435107, 0.04089713, -0.013857991, 0.22446491, 0.016065463, -0.042079967, 0.0170577, 0.040578466, -0.038618524, -0.05470756, -0.115140095, -0.065542445, 0.14684047), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.037176184, 0.090253, 0.14125483, -0.08512404, -0.051651485, 0.099631414, 0.10343597, -0.0061565666, 0.041628633, 0.09307784, -0.090136886, -0.009559773, -0.03024448, -0.031733215, -0.07797126, 0.055322547), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.1050144, -0.03270817, 0.26327172, -0.28404585, -0.03861458, 0.048381314, -0.15304287, -0.0042754454, -0.10290137, -0.24198222, -0.12365528, 0.095550224, 0.15594007, -0.02852183, 0.021433152, 0.007750503), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.14963464, 0.036146436, 0.06857592, -0.03860567, 0.014884097, 0.07543522, 0.024485901, 0.035711233, -0.003450604, -0.0597103, 0.024015842, -0.001213529, -0.058722682, 0.01725032, -0.12181248, -0.008058613), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.071817815, 0.041531287, 0.014643306, 0.16291411, 0.26480407, -0.17182025, -0.010588466, 0.105062984, 0.030210229, -0.04829373, -0.036531925, 0.047632486, -0.2479769, 0.045298517, 0.13192376, 0.033759), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.08769319, -0.0032485086, 0.022313096, 0.17629139, -0.29785547, 0.17973061, 0.033340637, 0.15138951, 0.016324213, -0.052774195, 0.03140277, 0.049657557, -0.1042336, -0.048986793, 0.11604845, 0.027282678), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.06349052, 0.020287551, 0.041792236, -0.064779855, -0.19809574, 0.1296112, -0.31961703, -0.10329236, -0.06304219, 0.1266601, 0.047558576, -0.01599766, -0.0840006, 0.110553645, -0.17114124, -0.092702754), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.07258822, 0.33649316, 0.03007162, 0.122297324, -0.0035460228, -0.031201044, 0.12168557, -0.029285375, -0.0809431, -0.12167306, 0.07364419, 0.028837958, -0.0045297747, -0.0601046, 0.01811243, -0.09054316), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.25255457, -0.22574474, -0.34320608, 0.11290973, -0.26090237, 0.040196825, 0.13508338, 0.029482007, -0.10183512, -0.08112251, -0.11552506, 0.19293801, 0.3495816, 0.18543391, 0.06588066, -0.04709665), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.084513545, -0.15674965, -0.0008406949, 0.090281285, 0.2712172, -0.116089135, -0.015765252, -0.117886744, 0.09920849, 0.029833876, -0.095729664, -0.027886158, 0.075155556, -0.046650156, -0.0065415367, -0.010066504), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.045017265, -0.032798514, 0.015228568, -0.10716174, 0.12533835, -0.18279125, 0.04248092, -0.19403161, -0.037150033, 0.051052798, 0.064987876, -0.0012054371, 0.17646495, -0.08559015, -0.030268986, -0.0110990135), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.2270626, 0.07908034, 0.10131884, -0.04477681, 0.012331784, -0.0066530495, 0.11152835, -0.011538218, 0.18025607, 0.28347188, -0.061317418, 0.140885, -0.12165267, -0.015358079, -0.1509724, 0.10532319), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.090888165, 0.051266413, 0.00032922614, 0.10080883, 0.25410557, 0.01401413, -0.08648295, -0.18689357, 0.06347326, -0.12212378, -0.047608927, 0.19060975, 0.030654645, -0.0008587347, 0.056551795, -0.075159475), target1);\n\ttarget1 = MulAdd(na3, MF4x4(0.18279178, -0.043672565, -0.045675628, 0.08589114, -0.09798812, 0.13952787, 0.020468095, 0.019159447, -0.037739623, -0.031772856, 0.05684188, -0.0027250764, 0.15689476, -0.048730828, 0.07862422, -0.050529804), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(-0.16031522, 0.032964543, -0.04876928, 0.02347113, -0.15290083, -0.2451878, 0.052881993, -0.08540753, -0.07177217, -0.15992549, 0.0651776, -0.08932986, 0.1767438, 0.056059174, -0.0576956, -0.09165988), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(0.13147484, -0.0570967, -0.11560189, 0.05509382, -0.0150885545, 0.09640748, 0.014165965, 0.20704748, 0.030164357, -0.1082378, 0.024942307, -0.08219035, 0.124670975, -0.052641235, -0.0226715, -0.027526885), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(-0.23702182, 0.23504741, -0.0055127465, -0.05391814, -0.033541497, -0.004652474, 0.018886803, -0.03751877, -0.17091194, 0.023785884, 0.04066812, -0.060029395, -0.041414294, 0.01717907, -0.03250043, 0.06307296), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(0.13159078, -0.21431974, 0.18132871, -0.057554632, 0.21089126, 0.2748356, 0.09672305, -0.06376276, 0.533338, 0.44528118, 0.005919547, -0.04472009, 0.057801563, 0.089425854, 0.00619256, -0.1724294), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(0.092838384, 0.10023682, 0.024242302, -0.17375132, 0.078034006, -0.19451837, -0.15501493, -0.13293402, -0.18569629, -0.19058825, -0.00096012745, 0.046021726, 0.10088386, 0.08519642, 0.13217524, 0.13243376), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(-0.027395649, 0.023635123, -0.010267926, 0.17099325, 0.12437585, -0.1249303, -0.06419651, -0.021422816, 0.17196923, -0.22701795, 0.015808482, -0.14445387, -0.05460773, -0.003828314, -0.18222629, -0.048698075), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(-0.013598317, 0.122526735, -0.02577042, 0.08744144, -0.08979224, 0.1286411, -0.05883814, -0.12919591, -0.050816238, -0.15597601, -0.115631886, -0.12070838, 0.11360469, -0.02584839, -0.1560333, 0.011274217), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(0.080101736, -0.1330538, 0.021211144, 0.1438211, 0.01772601, 0.11148414, 0.13287805, 0.15081206, -0.012008585, 0.06793454, 0.03773184, -0.032694455, 0.10249589, 0.026878785, -0.12141799, -0.09203301), target1);\n\t\n\tMF4 target2 = { -0.03760731, -0.0242485, -0.021933366, 0.027489811 };\n\ttarget2 = MulAdd(a1, MF4x4(0.07053637, -0.13757081, 0.083475806, 0.047742493, 0.17072907, 0.03391062, -0.06359729, -0.087144814, 0.13410439, 0.0766006, -0.07466357, 0.020072024, 0.070759356, -0.07371517, -0.002268697, -0.01926168), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.044688217, 0.11774826, -0.042388003, -0.07989108, -0.1972503, 0.050274227, 0.016185008, -0.058738116, -0.19790363, -0.05735989, -0.047189124, -0.14251053, 0.020062871, 0.03521658, 0.08752947, -0.23372267), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.25029907, -0.045921884, 0.09080718, 0.016080718, -0.084881, -0.11112135, 0.06381888, -0.11366214, -0.09134574, 0.078322254, 0.08380223, -0.04663652, 0.079209715, 0.019024234, -0.13660747, 0.014792784), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.32267445, -0.14074866, -0.07469012, -0.16251983, 0.03330349, 0.11198752, 0.031585973, 0.022867791, 0.018227417, -0.20173706, 0.06353359, 0.20548727, -0.028305814, 0.100267045, 0.10572279, 0.026997928), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.098945044, 0.05311362, -0.19431336, -0.04678114, -0.4157369, -0.042450808, -0.044422694, 0.12376175, -0.23616472, 0.28038284, 0.14551993, 0.09350881, -0.16741902, -0.038471445, 0.01986414, -0.17471582), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.14448655, -0.019295415, -0.10982297, -0.06357956, 0.2369261, 0.032228198, -0.11679823, -0.05587635, 0.04871467, -0.0137740765, -0.07519058, -0.18964961, -0.026393183, -0.01974549, 0.06976226, -0.016081909), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.0137074115, -0.079286255, -0.12312942, -0.018789625, -0.013921108, -0.0020071631, -0.054753337, 0.017963797, 0.2555907, 0.032142516, -0.24176246, 0.16440704, -0.017065119, 0.051031727, -0.1010096, -0.034884788), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.060335524, 0.074403755, -0.03940425, -0.06947243, 0.063064545, 0.0003786891, 0.042550083, 0.014553617, -0.18506478, 0.14322414, 0.09673403, 0.19324619, 0.13711761, 0.14422627, -0.26975414, 0.1770873), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.0749963, -0.0043254187, 0.007601493, 0.044143427, 0.07984297, -0.13162711, -0.0021585606, -0.009246663, 0.20984007, -0.046367027, -0.09268187, 0.14495128, -0.12562644, 0.1836961, -0.009291084, 0.09893831), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.04764635, 0.0771012, -0.06254785, 0.049306013, -0.1309074, -0.16724089, 0.064103976, 0.029477306, -0.15803875, -0.018528668, 0.008828626, -0.06195826, -0.06321009, -0.08585472, 0.062971294, -0.09935699), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.09090366, 0.035622045, -0.07656447, 0.047136262, -0.12315156, -0.06781894, -0.16850029, -0.08679722, 0.031337507, -0.034778163, -0.0034067088, 0.060668938, 0.025843577, -0.13783671, 0.07269251, -0.016900677), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.0440054, 0.0036595238, 0.008771493, 0.030218529, -0.027555777, -0.06657435, -0.055236634, -0.033271316, -0.13821629, 0.03597882, -0.05062761, -0.053709738, -0.0017135427, -0.030783407, 0.08677211, -0.07123904), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.04535665, 0.10784165, 0.06629595, -0.08122243, -0.039657716, -0.18704408, 0.1423137, -0.042863034, -0.0742858, 0.18767954, 0.0049358946, -0.03671723, -0.26857832, -0.27597806, -0.15875868, -0.06401874), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.11346384, -0.02552838, 0.15989058, 0.135453, 0.11406132, -0.14827615, -0.034574773, 0.098348685, -0.11900814, -0.017299704, -0.0073399683, 0.28204438, 0.101091795, -0.05411511, -0.25915098, -0.18966594), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.00533059, 0.02730481, -0.037623204, 0.0683161, -0.001293424, 0.048477355, -0.031527296, -0.06233651, -0.08181692, 0.15782121, -0.022148566, 0.023771856, 0.08038705, 0.20726775, -0.049652047, 0.013319854), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.10297071, -0.004163597, -0.054161496, -0.047678668, 0.17382064, -0.07822223, -0.015010763, -0.04397959, 0.016814355, 0.029943537, -0.054495964, 0.025957715, -0.0020466947, -0.05330402, 0.1510799, 0.020855682), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.068892024, 0.06622253, -0.03464551, 0.058187455, 0.0040488504, 0.04686992, -0.031023791, -0.0217168, 0.27100065, 0.05667408, -0.1947591, 0.016222548, 0.15030278, 0.037999425, 0.18916538, 0.031360295), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.0033874374, 0.16642143, -0.05115266, 0.033188976, 0.15715985, -0.016430153, 0.061355177, -0.03946156, 0.097530834, 0.09636378, -0.0040456597, 0.03355033, 0.08691396, -0.059714377, -2.6330366e-05, 0.07581963), target2);\n\ttarget2 = MulAdd(a3, MF4x4(0.009388512, -0.11915495, -0.013311355, 0.037321404, -0.055611674, -0.03687238, 0.04141501, -0.05869542, 0.07016199, 0.09323767, 0.04217543, 0.06623439, 0.03210602, -0.05782674, -0.11002717, -0.0072197197), target2);\n\ttarget2 = MulAdd(b3, MF4x4(0.10509906, 0.09556673, 0.12621118, 0.05654386, -0.059508096, 0.05438697, 0.07796531, 0.013211419, 0.117890954, 0.06040751, -0.0016234997, 0.081311926, -0.13193677, 0.06996361, -0.13694339, -0.17900036), target2);\n\ttarget2 = MulAdd(c3, MF4x4(-0.053371694, -0.06806307, -0.1518878, 0.033526573, 0.046281144, -0.046205673, -0.034051836, 0.030009115, 0.126423, -0.016593177, -0.039357234, 0.10646578, -0.049523186, 0.031685475, 0.020842545, -0.12438032), target2);\n\ttarget2 = MulAdd(d3, MF4x4(0.13840649, 0.09017664, -0.049517624, 0.16685495, -0.08715648, 0.10113574, 0.018099392, 0.060909674, -0.0058692712, 0.045747917, -0.027853733, 0.05472168, 0.11535146, 0.18636864, 0.0723617, -0.014345535), target2);\n\ttarget2 = MulAdd(e3, MF4x4(0.2979883, -0.30398092, -0.00448704, 0.034454245, 0.06174734, -0.012045507, 0.23352385, 0.09975292, 0.17575547, -0.013523325, -0.23254701, 0.13217497, -0.20258605, 0.07145199, 0.08916167, -0.16669402), target2);\n\ttarget2 = MulAdd(f3, MF4x4(-0.1606433, 0.014213267, 0.046263646, 0.014771279, 0.041478187, -0.023410609, 0.14462134, 0.0359066, -0.14913698, -0.28093338, -0.098434776, 0.14168552, -0.017470809, -0.10474789, -0.019634444, -0.09452941), target2);\n\ttarget2 = MulAdd(g3, MF4x4(-0.024310801, 0.039855056, -0.0277722, -0.0049349763, -0.075620376, 0.14836049, 0.16639285, -0.11209939, -0.06530567, -0.059602138, -0.090105936, -0.024020225, 0.03793827, -0.08396542, 0.03918101, 0.031654693), target2);\n\ttarget2 = MulAdd(h3, MF4x4(-0.0019075832, -0.06279881, 0.019373834, -0.022848947, -0.19700366, -0.07276809, 0.10826095, 0.030095315, -0.18057819, -0.06393351, -0.023836957, 0.0065463074, 0.13035376, -0.06434109, 0.09293361, 0.03301868), target2);\n\ttarget2 = MulAdd(i3, MF4x4(0.013273036, -0.016674511, 0.13465153, -0.10852922, 0.026329456, 0.13648263, 0.09414527, 0.0012146169, -0.04237767, -0.085370585, 0.05478497, -0.009154848, 0.06731204, -0.034912866, 0.022870043, 0.038516387), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.12806587, 0.108848855, 0.054954138, -0.04903305, 0.06644907, 0.18971404, -0.07503066, -0.04593073, -0.061711293, 0.014664125, 0.11856841, 0.045254968, -0.15008299, -0.074398935, 0.04106602, -0.24396381), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.038917247, -0.04640616, -0.08809665, 0.11144138, 0.22032888, -0.050760582, -0.014760546, 0.11236783, -0.059079073, 0.06937314, -0.031159066, -0.07186243, -0.20771858, 0.006415583, -0.07267114, 0.056808673), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.00423516, 0.099120915, -0.059658743, 0.07284239, -0.062910534, 0.0818146, -0.04679385, 0.18365376, -0.09501989, -0.01619849, -0.060537007, -0.053941406, 0.01753884, 0.030266201, 0.03675036, 0.0021925808), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.046608146, -0.02341816, 0.07648551, 0.052848052, 0.0039356127, 0.036476433, 0.10236195, -0.032545663, 0.24973582, 0.037997168, 0.058406867, 0.07901572, -0.18169855, -0.005032321, -0.035923317, -0.14367534), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.16122861, -0.040731397, 0.106095225, 0.0036572781, 0.028426658, 0.20103998, -0.06638636, -0.022662058, 0.050278876, -0.163471, -0.21357286, -0.1825406, -0.050869223, -0.040973462, -0.057061654, 0.2810217), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.18768045, -0.040844023, -0.057449356, 0.12673363, -0.059018314, -0.030971631, 0.08158004, 0.06946996, -0.23750862, -0.00860647, -0.1003966, 0.034669064, 0.24486068, 0.07178945, -0.018041046, 0.15238568), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.2525261, -0.054517742, -0.23935242, -0.101572365, -0.030042917, 0.036003232, -0.122569695, -0.03556264, 0.06506395, -0.062265877, -0.1060633, 0.014838352, 0.108411096, -0.066448584, 0.0512793, 0.09429625), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.13627818, -0.10708255, -0.19644266, -0.037392955, -0.045197092, 0.19481973, 0.13070573, -0.060230445, 0.33588138, -0.034298502, -0.11659601, 0.12985578, 0.13320427, -0.11824594, 0.026382592, -0.053538818), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.048666447, -0.017627062, 0.15464988, -0.045204308, -0.011256204, 0.13558346, -0.11524339, -0.09390041, -0.13328557, 0.0208915, 0.14780544, -0.076561615, 0.16454418, -0.06894578, 0.05620349, 0.023376953), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.15081851, 0.114050105, -0.20110038, -0.20664425, 0.024320586, 0.07185712, -0.07764587, -0.071572, 0.05626064, -0.033045493, 0.001562899, 0.025873706, -0.124655195, 0.008215636, 0.15243639, -0.004112266), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.3066088, 0.03357835, 0.10992364, -0.06900282, -0.018690787, 0.06104214, -0.0041348864, 0.06407149, -0.03204788, 0.014121594, 0.08106938, -0.054475598, -0.265469, -0.14616208, -0.00401253, -0.03055698), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.04365304, -0.03965277, -0.03783723, -0.064608894, -0.020902721, -0.14974843, -0.009566472, -0.05167228, 0.05844501, -0.06657627, 0.07489639, -0.033589855, -0.12991743, 0.06972872, -0.06635165, -0.012207249), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.18625839, 0.054298103, -0.01828512, -0.11457061, -0.010832592, -0.058104735, -0.19629207, 0.04157041, -0.009692541, -0.14516611, -0.05172281, 0.049974106, 0.056659166, 0.04280708, 0.04385243, 0.010063984), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.30084208, -0.06846901, -0.026888005, -0.13171686, 0.14192836, 0.04704836, 0.121805556, 0.044525314, 0.083052106, -0.08510613, -0.12172583, -0.30419388, -0.0878148, -0.16297778, 0.2601781, 0.07285239), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.17655143, 0.030515455, 0.19467549, 0.06786994, 0.12391486, -0.07981, 0.032166053, 0.025423106, 0.03408094, -0.13683012, -0.1334616, -0.06392358, 0.19483057, -0.26500967, -0.09117511, 0.065103196), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.09752205, 0.052617133, 0.093155235, 0.036831614, 0.0069967005, -0.010922277, 0.03564152, -0.032540992, 0.08338763, -0.09178083, 0.044856872, -0.03585517, -0.03322978, 0.046807107, -0.08056567, -0.011965988), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.18745014, -0.036378495, -0.05438124, -0.07421527, 0.19114059, 0.06546488, -0.011771215, 0.023253547, -0.21524692, -0.18299192, 0.16316402, -0.07972637, 0.05902257, -0.073275164, 0.034378335, -0.03623065), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.11460803, -0.08311417, -0.013590335, 0.03570915, 0.089230955, 0.089890435, 0.020723056, -0.042275555, -0.0369812, -0.26617813, 0.046739977, -0.12200707, 0.14000617, -0.12750666, 0.118415974, -0.07106497), target2);\n\ttarget2 = MulAdd(na3, MF4x4(-0.0142673105, 0.2708808, 0.035017774, 0.06703521, 0.029961549, 0.14673132, 0.063695125, -0.02033868, -0.06468242, -0.026121365, -0.0026516293, -0.027388861, -0.08078243, 0.087715834, 0.022955768, -0.02319636), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(0.1718002, -0.11518721, -0.0025345646, 0.1238703, -0.18476513, -0.21286273, 0.20789471, 0.01770004, -0.061133858, -0.0626756, 0.055727385, -0.008457355, 0.118455775, 0.10262385, -0.006697552, 0.014359785), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(0.09120904, 0.07372497, 0.11044388, -0.03926499, -0.03780375, 0.089837864, -0.09430582, -0.08950114, -0.14755902, -0.03831562, 0.023441203, -0.01944005, 0.04238117, 0.03447587, -0.06003528, 0.044492997), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(0.11524887, -0.039266784, 0.066004194, 0.0054254015, 0.05427426, -0.09622213, -0.10315417, -0.050567277, -0.07576602, -0.12929544, -0.047569484, -0.0073220725, -0.19992967, -0.09847938, -0.010317084, -0.06364932), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(-0.16610023, 0.2372482, -0.08908623, -0.0074210903, -0.30944943, -0.13369739, -0.14367966, -0.088355504, -0.17537226, -0.027992815, 0.2002623, -0.077625655, 0.43252298, 0.070107736, 0.12366656, 0.04695458), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(-0.16442165, -0.115128726, -0.07232464, -0.06728961, -0.28723717, 0.17190668, -0.08351212, -0.0021862125, 0.121666215, 0.21980163, 0.041315466, -0.062825136, 0.19541566, 0.11147719, 0.024110844, 0.03695252), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(0.1264344, -0.043413147, -0.0045117373, 0.11031058, 0.14368063, 0.0709618, -0.060608998, 0.12688136, -0.0067742122, -0.036186397, 0.0893928, 0.0054127555, -0.09240343, 0.00012509787, 0.22235379, -0.010589687), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(-0.27677822, -0.026975723, 0.1144896, -0.02925077, 0.31745398, 0.030609636, -0.058644157, -0.080246314, 0.16578154, 0.040172495, 0.1331117, -0.02078141, -0.04805901, 0.04640852, 0.10614158, 0.012697342), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(-0.11755322, 0.09768716, 0.0012669004, -0.110562816, 0.06637665, 0.02764571, -0.12623487, -0.023209875, 0.12958577, -0.007275613, 0.010377832, -0.0105528, -0.14058565, -0.030191245, 0.025604937, -0.013748175), target2);\n\t\n\tMF4 target3 = { 0.15827118, -0.013269078, -0.026832024, -0.007341773 };\n\ttarget3 = MulAdd(a1, MF4x4(0.027916895, -0.12058145, -0.083479345, -0.026083047, 0.014759637, -0.07421897, -0.017896682, 0.086924285, -0.05399337, 0.07368837, -0.26842278, 0.09718693, -0.014846767, -0.002766841, 0.06403607, 0.0669811), target3);\n\ttarget3 = MulAdd(b1, MF4x4(-0.021020316, -0.21434662, 0.06523966, 0.11869478, -0.21215962, -0.042433035, -0.10847877, -0.10532955, -0.18938127, 0.05224748, 0.02170683, -0.09415175, -0.08846007, -0.18066676, -0.108328596, 0.09838168), target3);\n\ttarget3 = MulAdd(c1, MF4x4(-0.0014482798, -0.08546761, 0.053286448, -0.022678297, -0.009113084, -0.09750778, 0.10262376, -0.003133292, 0.026831077, 0.03348051, -0.031860266, 0.053811714, -0.05097466, 0.040436964, -0.063929394, -0.12586603), target3);\n\ttarget3 = MulAdd(d1, MF4x4(0.015445512, 0.029696425, -0.15537772, -0.057669863, -0.058116574, 0.188642, -0.289381, -0.03078714, -0.010385, 0.014184904, 0.16890535, -0.02512565, 0.116905816, 0.043889366, -0.027181825, 0.015912583), target3);\n\ttarget3 = MulAdd(e1, MF4x4(0.0659837, 0.09219005, -0.085082754, 0.051408056, 0.11564603, 0.038757283, -0.0004551866, 0.06365286, 0.09702758, 0.10664935, 0.34716737, 0.14471847, 0.28146356, -0.00765224, 0.1772403, 0.22182499), target3);\n\ttarget3 = MulAdd(f1, MF4x4(-0.08183167, 0.05762959, -0.043376535, -0.16858399, 0.02308398, -0.055296358, 0.07663533, 0.106998175, -0.10704135, -0.02596522, 0.013459359, -0.044283163, 0.07874813, 0.022484714, 0.30442455, 0.071259074), target3);\n\ttarget3 = MulAdd(g1, MF4x4(-0.0022170176, 0.022313403, 0.122714184, -0.026881142, 0.08282965, -0.06490924, 0.18938759, 0.0677223, 0.1294088, 0.059372786, -0.110964485, 0.010619735, -0.09610158, -0.022745904, -0.019792024, -0.0034128428), target3);\n\ttarget3 = MulAdd(h1, MF4x4(-0.041866794, -0.13008577, 0.110913865, -0.016430711, 0.13772298, 0.06592027, -0.0034176896, -0.032333232, -0.0071776314, 0.031079333, -0.10468204, 0.026052983, -0.025571326, 0.048804965, 0.045641564, -0.035233505), target3);\n\ttarget3 = MulAdd(i1, MF4x4(0.035716273, -0.100303516, -0.031205915, -0.031608257, 0.09185616, 0.020499555, -0.16786079, -0.12639952, -0.023970092, 0.08524624, -0.06759015, -0.12429372, -0.0127442675, 0.112773865, -0.26975212, -0.007704992), target3);\n\ttarget3 = MulAdd(a2, MF4x4(-0.022916801, -0.09817618, 0.20416892, 0.12702931, -0.012764869, -0.038772803, -0.27769282, -0.034622744, -0.13437684, 0.02120745, -0.1548114, 0.006228885, 0.22984603, -0.2432492, 0.10387287, -0.059412073), target3);\n\ttarget3 = MulAdd(b2, MF4x4(0.2363932, -0.11194499, -0.064652696, 0.07116429, -0.14603911, 0.18921274, -0.013249935, 0.13604592, 0.07306857, 0.08511469, -0.061648175, 0.052819334, 0.2016978, -0.13642034, -0.014157929, 0.072210535), target3);\n\ttarget3 = MulAdd(c2, MF4x4(-0.18656836, 0.17888299, 0.003892404, -0.048626274, -0.11190575, 0.09419825, 0.1276045, -0.012969808, -0.14728911, 0.17536093, 0.050294712, 0.19381198, -0.06558784, -0.09776518, -0.11414383, -0.1866525), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.15634118, 0.19272068, -0.05068886, -0.030995008, -0.035177864, 0.07032768, 0.116517685, -0.09072261, -0.10217943, -0.09160873, -0.062906645, 0.12504682, -0.09060218, 0.014820002, 0.03459818, -0.108051665), target3);\n\ttarget3 = MulAdd(e2, MF4x4(-0.018596219, -0.017673533, -0.006066184, -0.064746305, -0.11017345, -0.09556466, 0.21868086, -0.027287072, -0.11609723, -0.11342597, 0.1788956, 0.035506073, -0.096203305, -0.037712112, 0.14055523, 0.16230235), target3);\n\ttarget3 = MulAdd(f2, MF4x4(0.0056694653, -0.045156818, 0.10069355, -0.07291589, -0.048202783, -0.12425812, 0.15425333, -0.052708663, -0.17621729, 0.06338879, 0.1205465, 0.1754123, -0.028028619, 0.11745275, -0.120209925, 0.031073835), target3);\n\ttarget3 = MulAdd(g2, MF4x4(-0.058996305, 0.042816967, -0.002514556, -0.0055761277, -0.05223201, -0.17414387, 0.13102455, 0.02741174, -0.0785701, 0.080076955, -0.058584027, 0.034780204, -0.0276381, 0.055405296, -0.09418891, 0.0013168643), target3);\n\ttarget3 = MulAdd(h2, MF4x4(-0.03179422, -0.080134, 0.055742502, -0.14085148, -0.0010870491, 0.006537003, -0.0013490077, -0.086607024, 0.057871595, -0.07872675, 0.22251247, -0.052358106, -0.1307614, -0.22731845, -0.06979484, 0.00849211), target3);\n\ttarget3 = MulAdd(i2, MF4x4(0.14046812, 0.04020691, -0.032090276, -0.09295882, -0.11624229, -0.10551015, 0.08762072, -0.07726716, -0.1498316, -0.17169969, -0.04618553, 0.14997219, -0.012493408, -0.06838468, 0.10913737, 0.018050432), target3);\n\ttarget3 = MulAdd(a3, MF4x4(0.033775266, -0.07618233, 0.11493082, -0.026212664, -0.04540022, 0.026137805, -0.13465577, 0.15029386, 0.07141062, 0.09716221, -0.025410062, 0.032656677, 0.037815653, -0.040112175, 0.11637884, 0.11825522), target3);\n\ttarget3 = MulAdd(b3, MF4x4(0.14827983, -0.081768006, -0.05624141, -0.0044099363, 0.032463025, 0.10766071, -0.061944928, -0.15250987, -0.14692347, 0.1010062, 0.1384647, 0.079083905, -0.11822245, -0.054733507, 0.06650751, 0.04349182), target3);\n\ttarget3 = MulAdd(c3, MF4x4(-0.0189154, -0.033869926, -0.008463885, -0.1524785, -0.017154029, -0.021163551, 0.045354687, 0.056154214, 0.0996, 0.18220654, -0.02275312, -0.051522568, -0.015781462, -0.14436358, -0.13036303, -0.08281256), target3);\n\ttarget3 = MulAdd(d3, MF4x4(0.060433608, 0.025449814, 0.03162007, -0.13456888, -0.02134081, -0.15663207, 0.17289546, 0.0011385656, 0.059484057, 0.052233964, -0.03541694, 0.113927364, -0.0010070644, -0.005570618, 0.12790091, 0.16491406), target3);\n\ttarget3 = MulAdd(e3, MF4x4(-0.033132974, -0.098377176, -0.12513644, 0.08796082, -0.0028096333, 0.09346144, -0.18109433, 0.17953019, 0.10331962, -0.111182235, -0.11015705, -0.15538633, -0.015985087, 0.06262592, 0.11767445, 0.04020116), target3);\n\ttarget3 = MulAdd(f3, MF4x4(-0.10818913, -0.10614671, -0.0061792796, 0.07901479, -0.0018810411, 0.0026243017, 0.15281977, 0.1715038, -0.017927805, 0.07613347, 0.033450123, -0.23979095, 0.028044673, 0.060702097, 0.019822879, -0.14792976), target3);\n\ttarget3 = MulAdd(g3, MF4x4(-0.008551052, -0.03843347, 0.0472157, -0.010416428, -0.01928176, -0.0063839755, 0.03508731, 0.24043478, 0.033645283, -0.11676803, -0.06743783, -0.034164682, -0.014925681, -0.030447507, -0.111160316, -0.034867767), target3);\n\ttarget3 = MulAdd(h3, MF4x4(-0.102300785, 0.114739686, -0.007856566, -0.12389364, -0.18574199, 0.06441196, -0.1979763, -0.016671708, -0.09252569, 0.0037067563, -0.0609829, 0.028997343, 0.047285903, -0.018309064, -0.027229104, 0.06743576), target3);\n\ttarget3 = MulAdd(i3, MF4x4(-0.055446856, -0.06821513, -0.0059853215, -0.13260886, 0.083104685, -0.11773866, 0.007317027, -0.039318476, -0.0042170533, 0.0121953655, -0.010792958, -0.010249791, 0.007397987, 0.0047044945, 0.049882278, 0.0047567203), target3);\n\ttarget3 = MulAdd(na1, MF4x4(0.03465105, 0.062134508, -0.043116115, -0.017247844, -0.04502861, -0.10212199, 0.16550505, 0.016599817, 0.08857375, -0.03961283, 0.13870746, -0.082080655, -0.08469554, -0.18640712, -0.014425766, 0.034508247), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(-0.12399076, 0.22634715, -0.13730592, 0.04840304, 0.09450334, -0.065218486, 0.0068855314, -0.049165834, -0.011287574, -0.10739019, -0.00023772087, 0.09688784, 0.10983027, -0.011201701, 0.14466487, -0.21600902), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.05468909, 0.050734483, 0.046412308, -0.09749245, 0.05704707, 0.22612362, -0.15571213, 0.06998293, 0.017409045, -0.13634662, -0.020574553, -0.073725305, 0.04699205, -0.08355112, 0.08512415, 0.15568486), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(0.10635322, 0.07337078, -0.07432055, 0.004248984, 0.027724393, -0.040500402, 0.196942, 0.041983824, 0.083976634, 0.10290795, -0.3009756, 0.082270764, -0.15817869, -0.027697606, -0.029153766, 0.08529106), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(0.14958759, 0.13267447, 0.22206177, -0.17663805, -0.10765967, -0.03566466, 0.04633988, -0.03062237, -0.20792471, -0.002921972, -0.15749575, -0.22428021, -0.23200673, 0.14563684, -0.160325, -0.266424), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(-0.13190623, 0.041341502, -0.12777801, -0.055840913, -0.112986885, -0.0021044768, -0.12469129, -0.11046474, -0.03600098, -0.011692557, -0.02686337, -0.17009224, -0.0820219, -0.029119916, -0.111095175, 0.15297051), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(0.14414293, 0.02744959, -0.102789834, 0.006705362, -0.030359348, 0.083485864, -0.12009053, -0.02636556, 0.08503298, -0.10867725, 0.09814758, -0.14605886, 0.16700824, -0.0866019, 0.008852153, -0.21706365), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(-0.011756063, 0.008039321, 0.03698028, -0.10509595, -0.099564835, 0.009903015, -0.08965568, 0.06633642, 0.10181769, 0.08294756, 0.025898153, -0.098384134, 0.066339396, -0.02191258, 0.03265874, 0.1477094), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(-0.22950448, -0.07607528, 0.016735366, 0.083834045, -0.005080134, 0.09744342, -0.105208844, 0.043603517, 0.005231004, -0.023469515, 0.08517984, 0.14299476, 0.0062482157, -0.09623864, 0.097964756, 0.11196982), target3);\n\ttarget3 = MulAdd(na2, MF4x4(-0.31986436, 0.02033341, -0.067986034, 0.12729374, -0.0048481217, 0.05469139, 0.16248406, 0.09194327, 0.024411261, 0.051379394, 0.00034975683, -0.021101091, 0.00954231, 0.02220226, -0.32092375, -0.039599743), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(-0.23243247, 0.102910504, 0.08704054, -0.16638695, -0.04414702, 0.10768372, 0.06244856, -0.053088184, -0.07190515, 0.025491035, -0.0073894467, -0.06960583, 0.04625048, 0.09757096, -0.014015539, -0.2686573), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(0.09618109, -0.04002844, 0.10706359, 0.0021603133, -0.10353008, -0.051047757, 0.22455198, -0.034693047, 0.0572685, -0.055035133, 0.004646706, 0.097952425, 0.14423034, 0.03551641, 0.17294352, 0.18931827), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(-0.103451714, -0.14722984, 0.075681895, 0.05237415, -0.11553789, -0.04747042, 0.06682777, -0.094138026, 0.17443697, 0.022166768, -0.033095736, -0.060237505, 0.12380581, -0.0075241313, -0.07084953, -0.036764625), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(-0.035672948, -0.06520371, -0.09139108, 0.04217135, -0.117305085, 0.07602235, -0.15833357, 0.056191333, -0.11441557, 0.037268326, -0.028076539, -0.12540102, 0.016748995, 0.034004167, -0.1824477, -0.16126373), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(0.06134336, -0.11747715, -0.08211664, 0.08370146, -0.12180083, 0.19250062, -0.054975577, 0.020182844, 0.08444608, -0.06466239, 0.015815528, -0.031805765, -0.0028007699, 0.08060802, 0.15744543, -0.12746236), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(0.043641105, -0.07119625, -0.042450625, 0.05739444, 0.018069813, 0.029118251, 0.0061236136, 0.07221804, -0.011486244, -0.041661404, 0.2197789, -0.020237818, 0.15324089, -0.02419463, 0.095150515, -0.048418492), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(0.010760071, 0.079417765, -0.038494457, 0.0804348, -0.03777174, -0.2785645, -0.0018691403, -0.009908184, -0.2519993, -0.021114716, -0.075966366, -0.11307284, 0.042725798, 0.02793535, 0.08475073, 0.00719373), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(-0.06026802, -0.1285141, -0.015326734, -0.092160225, -0.03740965, -0.10725952, 0.11102985, -0.05550745, 0.07659162, -0.115331456, 0.003444734, -0.054064468, -0.08475641, -0.08501742, -0.24890389, 0.07931074), target3);\n\ttarget3 = MulAdd(na3, MF4x4(0.16370693, 0.14513049, -0.13996753, -0.061734002, -0.030769601, 0.057222515, 0.050910987, -0.04650852, -0.054636024, -0.021683916, -0.17012738, 0.020975761, -0.1575395, 0.23097757, -0.20053351, -0.03677814), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(0.08665788, 0.11735751, -0.017768439, 0.0068110893, 0.2169534, 0.04611748, -0.05265798, -0.14298616, 0.030219741, 0.0361948, -0.17905854, -0.072263926, -0.12066245, -0.043840945, -0.075282134, 0.062113304), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(-0.07236986, 0.12181904, -0.010601836, 0.14551845, -0.073809735, 0.15977979, -0.018897848, 0.036385477, 0.0025911513, 0.026647402, 0.07882444, 0.028249063, 0.009689747, -0.03413688, -0.032440297, 0.060033906), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(0.0063548526, -0.05827531, -0.0863922, 0.09530562, -0.007424638, 0.2742968, -0.44429728, 0.1693316, 0.00851462, 0.018132828, -0.014929005, -0.08181229, -0.12771043, -0.15851092, -0.08833768, -0.05561009), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(-0.17187662, -0.020507278, -0.00087365095, -0.17611316, -0.13882494, 0.07799683, 0.06299509, -0.33718416, -0.19870155, 0.055342596, 0.1495889, 0.13743624, -0.16251567, -0.02317984, -0.3027063, 0.07310683), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(0.07612367, -0.06315094, 0.086967595, -0.17633231, 0.010166444, 0.109485, -0.06876594, 0.19186738, 0.12188993, -0.010759893, 0.0059104343, 0.21518311, -0.14552301, -0.04969499, 0.013590615, -0.0688024), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.0505275, 0.05859463, -0.08945146, -0.0057924157, 0.058152966, -0.024229135, 0.031221801, -0.15067945, -0.018535225, 0.13843696, 0.041234065, 0.051733483, -0.10050763, 0.10705917, -0.022969715, 0.03912073), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(-0.009000505, -0.11456071, 0.0340094, 0.12444861, 0.07345543, -0.1419509, 0.092182405, 0.056249533, 0.063071616, -0.010534381, 0.056680985, 0.025993576, -0.13020347, 0.066157125, 0.0073951716, -0.027919816), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(0.11827389, 0.111768976, 0.024734994, -0.008209825, -0.11939657, 0.049890216, -0.14757815, -0.0018939807, -0.108214505, -0.13791578, 0.06980697, -0.035102874, 0.0068360427, 0.15766092, -0.0094464505, 0.02528075), target3);\n\n\ttex4[gxy] = target1;\n\ttex5[gxy] = target2;\n\ttex6[gxy] = target3;\n}\n\n//!PASS 5\n//!DESC Conv-4x3x3x24\n//!IN tex4, tex5, tex6\n//!OUT tex1, tex2, tex3, tex7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex5.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex5.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex5.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex6.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex6.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex6.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { -0.112874866, 0.058437236, -0.011864247, -0.050339766 };\n\ttarget1 = MulAdd(a1, MF4x4(0.0858087, -0.091669075, -0.029618878, -0.006829049, 0.05929614, -0.10007056, -0.07165286, -0.044839766, 0.16440393, -0.013165904, 0.16345644, -0.040166497, -0.08533438, 0.033274904, 0.023744298, 0.00462745), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.012197617, -0.17494427, -0.044840526, 0.09467358, 0.0670941, 0.04051791, 0.031950857, 0.043632418, 0.27560753, -0.18038619, -0.016762096, -0.18554263, -0.07514284, -0.12060545, -0.06567658, 0.095817134), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.006523474, -0.08222627, -0.0071327686, 0.0019292525, 0.10427757, -0.12537085, 0.04317682, -0.073334634, 0.05154215, -0.091944076, -0.02118822, -0.056948982, -0.13910337, 0.03694039, -0.057772428, -0.04310826), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.06324951, -0.22648853, -0.07255338, 0.017026639, -0.008103722, -0.21415114, -0.26123968, -0.12380067, -0.122654535, -0.072686374, -0.106361255, -0.085339114, -0.032308288, 0.15890516, 0.06622756, -0.023396786), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.042859413, -0.09672486, -0.25197455, -0.09964709, 0.29545367, -0.031414457, -0.09069656, -0.1515025, 0.0027435324, -0.22244011, -0.028398262, 0.023005402, -0.01898338, -0.044614386, -0.15384883, -0.03421089), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.02024483, -0.0024315433, -0.12607838, -0.06749624, 0.18010019, -0.13433436, 0.023777714, -0.000595795, 0.06660958, 0.0047493204, -0.008804406, -0.01993787, -0.16380167, -0.116379924, -0.08225346, -0.15736714), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.04966525, -0.18904372, 0.0033124757, 0.007581284, 0.04973636, -0.054151382, -0.0019207672, 0.035237975, 0.050646428, 0.054101888, 0.10167154, -0.06646531, -0.1516706, 0.0069144946, -0.11062034, 0.00401821), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.042625226, -0.13069777, -0.16180645, -0.023299642, 0.026805617, -0.05658099, 0.043719705, 0.1092636, 0.12341378, 0.042006955, 0.18066125, 0.16378504, 0.11135436, 0.08376113, 0.031495962, 0.04347884), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.006632579, -0.08609527, -0.08015572, -0.09973007, 0.0060661826, -0.0025273473, 0.027333017, 0.19469416, 0.115743786, -0.048629977, 0.07540239, 0.060625635, 0.11000561, -0.0005722454, -0.17226484, -0.27114823), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.055690464, -0.02658434, 0.07268652, 0.10016923, -0.16319957, 0.17007092, 0.21633402, 0.20618637, -0.113490485, 0.02199878, 0.0055137747, 0.12215447, -0.09464513, 0.045647286, -0.14000376, 0.073245205), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.23644187, 0.079229124, 0.15172592, -0.13774072, -0.026849356, -0.021209542, -0.027881218, 0.033904858, 0.038394954, -0.087262556, -0.08262074, -0.031362742, -0.043572012, -0.025324758, -0.030077327, 0.005004752), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.09973582, 0.010234953, -0.08513304, -0.03290182, -0.06016728, -0.14835075, -0.049367975, -0.109585285, 0.1308012, -0.05561698, 0.02354898, 0.013404379, 0.076999895, 0.0965049, -0.08259544, 0.08366891), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.14182909, 0.08395952, 0.08790292, -0.10685734, 0.20583102, 0.04878629, 0.33621716, 0.022593737, 0.11261521, 0.21141209, 0.20565145, 0.10242992, 0.024171967, 0.0531655, 0.049630456, -0.026225826), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.24823152, -0.004493935, -0.098093554, 0.024939846, -0.18618853, 0.23347515, 0.3677701, 0.116543904, -0.0123427, -0.023756992, -0.047602683, -0.17058952, 0.255566, -0.16041403, -0.12076221, -0.16564348), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.013236432, 0.076761626, 0.081881255, 0.09071596, -0.11729648, -0.006444196, 0.10923074, 0.13791469, -0.043651752, -0.18294181, -0.040916644, 0.097785, -0.0028955766, -0.0027983326, 0.073921174, -0.10227346), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.0018851581, 0.042510424, -0.049210977, 0.054145046, 0.062141296, -0.05751743, -0.1545065, -0.07428518, -0.0012378759, 0.0046147997, 0.05624973, 0.026027879, 0.014657843, 0.03690237, 0.020237725, 0.028257368), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.0131197, -0.068101935, 0.1810527, -0.16003254, -0.031678617, 0.02635583, 0.028078066, -0.061150465, 0.011311746, -0.13556738, 0.010152058, -0.27962342, -0.06454591, 0.20071113, -0.17109145, 0.24637976), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.010061335, -0.001633492, 0.015894579, 0.11813777, -0.0085875485, 0.16046463, -0.03870673, -0.1573532, 0.007046577, -0.032677893, -0.03055368, 0.16372435, -0.023844553, 0.0414419, 0.024983952, 0.118105516), target1);\n\ttarget1 = MulAdd(a3, MF4x4(-0.015675241, 0.06467378, -0.06385561, 0.23119383, 0.19577031, 0.09614502, 0.14291568, 0.0646477, -0.04580087, -0.054257967, 0.0035926772, -0.084984995, 0.07729014, -0.12703735, 0.021946913, -0.13898507), target1);\n\ttarget1 = MulAdd(b3, MF4x4(0.04983293, -0.1356944, 0.06499119, 0.18219076, -0.0012843006, 0.017029244, 0.072508365, -0.109151654, 0.20020588, -0.01626167, -0.046852995, -0.15508164, 0.17773204, -0.11779289, 0.16009867, -0.20663622), target1);\n\ttarget1 = MulAdd(c3, MF4x4(-0.29108632, -0.10655777, 0.044198614, -0.04410373, -0.04469665, 0.026585957, -0.03942788, 0.15000731, 0.09523267, -0.13746834, 0.04037757, -0.100768045, 0.13844049, 0.015964666, 0.050790466, -0.0692099), target1);\n\ttarget1 = MulAdd(d3, MF4x4(-0.06911559, 0.012809353, -0.12680744, -0.048866037, 0.055650793, -0.0578033, -0.098106444, 0.074231684, 0.07584408, -0.06642763, -0.12730137, -0.19599968, 0.057783168, 0.2112361, 0.2594585, -0.005996189), target1);\n\ttarget1 = MulAdd(e3, MF4x4(0.14301813, -0.11221026, -0.13259968, -0.094263665, -0.07149053, -0.048891526, -0.032946635, -0.10009779, 0.27363536, 0.14980642, -0.02908678, 0.0047521754, 0.3446896, 0.026126916, 0.36222085, 0.18175994), target1);\n\ttarget1 = MulAdd(f3, MF4x4(-0.14227025, -0.043589745, -0.026543979, -0.16103217, -0.15027285, 0.039540008, -0.006172108, -0.10215637, 0.054667268, -0.056833044, -0.041795656, -0.13694401, 0.10057133, -0.13033262, 0.10366755, -0.022725947), target1);\n\ttarget1 = MulAdd(g3, MF4x4(0.09428237, 0.013572218, 0.08937405, 0.07288141, -0.11737223, 0.23257263, -0.04531822, 0.13323838, -0.06946843, 0.09392816, 1.8482398e-05, 0.099077396, 0.035169534, -0.25623903, -0.018828487, -0.06300839), target1);\n\ttarget1 = MulAdd(h3, MF4x4(-0.026215252, 0.03051006, 0.07113607, -0.12154545, 0.0040449486, -0.123852775, -0.08525913, -0.1901913, 0.017407645, 0.16107552, -0.12645124, -0.017211819, -0.07441704, -0.005858128, -0.011531684, 0.32415336), target1);\n\ttarget1 = MulAdd(i3, MF4x4(-0.17503254, -0.0015612559, 0.10169017, 0.019084195, 0.021156454, -0.310495, 0.04608056, 0.10953508, 0.19300106, -0.22451214, 0.03351187, -0.23461004, 0.072505705, 0.015136174, 0.04027726, 0.07976788), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.063301176, -0.05981131, 0.08261184, -0.14083353, -0.03195537, 0.0578306, 0.02804363, -0.20032683, -0.05517824, -0.0757025, -0.19914438, -0.042908937, -0.030248174, -0.25152618, 0.050725143, 0.1369699), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.1003561, 0.0734191, 0.09896423, -0.08019514, 0.014390224, -0.00054874463, 0.037597846, -0.09500772, 0.09027194, 0.101415, -0.040434603, 0.08962564, -0.22431703, -0.07749036, 0.0013332567, 0.09083244), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.008767293, 0.024598125, -0.006601763, -0.028163001, -0.024962863, 0.08638626, -0.028004736, -0.08388235, 0.022387464, 0.070822835, -0.022390194, 0.035980027, -0.043976255, -0.13879846, -0.0064368118, 0.1285523), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.04603082, 0.12994967, 0.081791796, 0.09700837, 0.023545785, 0.06551075, 0.12287056, -0.22250815, -0.16573791, -0.047054622, 0.07907622, -0.031006414, 0.06890266, -0.123863325, 0.067868486, 0.18396272), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.16980824, 0.015854107, 0.17575637, 0.15477645, -0.09076066, -0.05120928, 0.03070066, 0.11817304, 0.06490148, -0.012875289, 0.006170174, 0.11815885, 0.041828565, -0.17298366, -0.014634091, 0.124265894), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.06368938, -0.032462507, 0.04960355, -0.04891845, -0.0038693375, 0.12922424, 0.0047689294, -0.08684701, 0.095224895, 0.0020490738, -0.046015333, -0.18551406, 0.07551751, -0.071112834, 0.02344341, 0.04623062), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.056204665, 0.013370383, -0.0043938635, 0.000645203, -0.09654348, 0.02182419, 0.0059207743, -0.13559262, 0.06930852, 0.008161434, 0.016864823, 0.11678153, 0.0039051562, -0.07914336, 0.04955842, 0.017483408), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.010976288, 0.10715081, 0.09279967, 0.020898886, 0.013906253, 0.09519829, -0.033453338, 0.06451083, -0.043613426, -0.009969589, -0.11931571, 0.03572111, 0.0051956573, -0.0647261, -0.07640106, 0.14315592), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.051365715, 0.05332849, 0.028890109, -0.047791258, 0.088561386, 0.07254739, -0.04627223, -0.066297226, -0.106467545, -0.061747868, -0.04026904, 0.0245163, 0.104035124, 0.0005123147, 0.09572231, 0.23461665), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.025117617, -0.051919132, -0.10238518, 0.0087314, -0.24502674, 0.24725929, 0.020510906, -0.11374982, -0.08788345, 0.14287415, -0.05371828, -0.09765232, 0.089326784, 0.059355933, 0.003667818, 0.007658546), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.032038644, -0.064910114, -0.041199267, 0.07735183, 0.023076316, 0.2316058, 0.14530785, 0.01587883, 0.17309736, 0.034302652, 0.078950614, 0.07103009, 0.042525988, 0.026763001, 0.03962311, -0.017174084), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.045589544, 0.09957158, 0.0106373755, 0.029290373, -0.012066452, 0.107432865, -0.10563313, 0.08964528, 0.081136055, 0.16387793, -0.037766423, 0.083933, -0.0100631835, -0.041015863, 0.020540452, -0.01647507), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.12199317, -0.078802, -0.14587677, -0.05266387, -0.2739342, -0.07832318, -0.02654562, -0.19134043, -0.15542388, 0.10411293, 0.0068920734, -0.18878813, 0.032211393, 0.15987061, -0.12149388, 0.09021272), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.017827235, 0.021951806, 0.12995765, -0.1925006, 0.43689772, -0.067384414, -0.12091599, -0.20399235, 0.11603679, 0.26069987, 0.09115632, 0.29782417, -0.37195182, 0.17822702, 0.26410392, 0.22584216), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.00091769337, -0.10308406, -0.03788696, 0.009829855, 0.07434385, -0.055530947, -0.119265415, 0.03404489, 0.13412294, 0.19281757, -0.21274371, -0.09527358, 0.022169666, 0.06841656, -0.09664997, 0.02376001), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.02522274, -0.07492225, 0.108729765, -0.084396936, -0.1450858, -0.084260635, 0.036976974, 0.07395254, 0.102778085, -0.04220765, 0.015409228, -0.09215815, 0.033722915, 0.09410213, 0.06759963, 0.03639959), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.0129304, 0.049982294, -0.16211604, 0.15442637, -0.00069647084, 0.026756465, -0.06687889, 0.25361556, -0.022950223, 0.123774804, -0.018783078, 0.23009071, 0.08808236, -0.02500049, 0.058831975, -0.059854023), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.0282501, -0.06622134, -0.03940754, -0.057764836, 0.023595478, 0.12694593, -0.0038103263, 0.1507626, 0.03539641, 0.04670363, -0.07688535, -0.04822336, 0.054404292, -0.07222161, -0.09880846, -0.09190709), target1);\n\ttarget1 = MulAdd(na3, MF4x4(0.028638069, 0.032332644, 0.10077746, -0.13334957, -0.068841085, -0.11133997, 0.03466411, -0.10885937, 0.050528128, -0.09258964, -0.07510585, -0.031298082, 0.074979246, 0.02487803, 0.05295848, 0.032633457), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(-0.07998351, 0.05691501, 0.036540154, 0.00094257767, -0.15473618, -0.06821505, -0.021972192, 0.22512725, -0.028976573, -0.016970608, -0.07117851, 0.0005293328, 0.18183869, 0.06063047, 0.016248764, 0.10007656), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(0.07268518, -0.09155798, -0.002566672, -0.018126441, -0.16046503, 0.048856504, -0.011080104, 0.036383335, 0.08598702, 0.19642924, -0.049759824, 0.07246208, 0.13074261, -0.058662284, 0.03459059, -0.04198155), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(0.12882999, -0.021765677, 0.21212584, -0.099195495, -0.105583504, 0.17039305, 0.06333295, 0.090153314, -0.038552936, 0.033885363, 0.04958857, -0.024823477, -0.06625663, -0.013032451, -0.22981462, 0.12724645), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(-0.2467723, 0.09133717, 0.08810061, 0.07691946, -0.20903678, 0.08403025, 0.010679062, -0.03956549, -0.011411588, -0.022170769, -0.06298385, -0.10067764, 0.03551502, -0.0736268, -0.109931275, -0.15795651), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(0.050697595, -0.012465872, -0.068512246, 0.1556296, -0.17526908, -0.06572342, -0.018147333, 0.026501164, -0.049490303, 0.061885685, 0.02423367, 0.027439872, 0.37354204, -0.09908201, -0.10852779, -0.047961403), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(-0.1904858, -0.08803705, -0.15687172, -0.14420407, 0.058089714, 0.103457965, 0.048995994, 0.057829436, -0.05192929, 0.019802462, -0.04511639, -0.0038435445, 0.2194401, -0.043761376, 0.1312272, 0.054326482), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(-0.07349653, -0.121248744, 0.057792176, 0.099129215, -0.20087934, -0.031952746, -0.09673813, -0.031076657, -0.03237994, -0.020143004, -0.12516364, 0.007846103, 0.17188387, -0.2825958, 0.07352815, -0.021273587), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(0.14606737, 0.04232884, -0.04508154, 0.11619671, -0.14093883, 0.022675866, 0.004869404, -0.1476083, -0.15496063, -0.11994992, -0.07718659, 0.0023026431, 0.012474549, 0.107636444, -0.08887454, 0.23727296), target1);\n\t\n\tMF4 target2 = { -0.051753327, -0.07172183, 0.021211471, -0.050325148 };\n\ttarget2 = MulAdd(a1, MF4x4(0.016881438, -0.044336118, 0.11502204, -0.10677853, 0.08977789, -0.059579305, 0.109261245, 0.10357805, 0.3364402, 0.14823961, 0.06096494, 0.15078168, -0.11029799, 0.074738294, 0.012435908, -0.0106727), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.109714404, 0.008750308, 0.1948044, -0.1396421, 0.04144051, -0.12435535, 0.07815825, 0.019051697, -0.07954506, -0.0965191, -0.2027906, 0.17172056, -0.26384082, 0.13519175, 0.04667002, 0.021707565), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.07089612, 0.007484666, 0.104900375, 0.04954983, -0.06030455, -0.12300262, 0.05197505, -0.041572303, 0.009151977, 0.0799586, -0.04780254, -0.13600186, 0.18708369, 0.047879692, 0.040363688, 0.042251408), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.063153245, 0.0050982186, 0.17556845, -0.06571311, -0.03749878, 0.014326615, -0.11032866, -0.27065897, -0.10525074, 0.13344456, -0.16412602, 0.049715474, 0.061313376, -0.24646369, 0.14604661, -0.09024816), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.026787708, 0.09889526, -0.050714437, -0.18990894, -0.087063104, -0.12555519, -0.0064119035, -0.0066881417, 0.09163732, -0.13423459, -0.05758272, -0.11314744, -0.025565878, 0.078317784, -0.14494383, -0.14658383), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.0110544115, 0.06727031, -0.099965416, 0.059974622, -0.15135513, -0.038787033, 0.07673858, 0.017850239, 0.02383772, -0.1985737, 0.094468035, -0.097836666, 0.19387084, 0.06476367, -0.15316796, 0.023932178), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.009757702, 0.14015986, -0.10496543, -0.044595003, -0.024084711, 0.012144018, 0.0981338, -0.012515983, 0.0060429554, -0.07067267, 0.12682167, -0.11384025, -0.045077007, 0.035177663, -0.06615891, 0.045473646), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.111679845, 0.026028167, 0.04201027, -0.16000839, 0.037475422, 0.038049795, -0.16249935, 0.02239824, -0.018402468, 0.012291931, -0.07117686, -0.09280776, 0.20392933, -0.02732328, 0.045456327, -0.078981794), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.03066143, -0.0739708, -0.13922189, -0.12682499, -0.1299339, -0.09163088, -0.07340559, -0.050614927, -0.03902327, 0.09319906, 0.23746358, -0.12093768, -0.0071099317, -0.060775675, 0.15018946, -0.013342442), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.07596372, 0.20584284, -0.02217273, 0.2564209, 0.11423146, 0.0098925475, -0.19662452, -0.1313871, 0.08574315, 0.0067099673, -0.08959511, -0.13870555, -0.08032657, 0.013044774, 0.059738085, -0.06106972), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.017293025, 0.15636088, -0.10619794, 0.108079255, -0.1168585, 0.09589374, -0.08682874, -0.08116015, 0.005083832, -0.15325624, -0.022297598, 0.23929761, -0.024037527, -0.006906145, -0.17204066, 0.003067951), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.036887415, 0.0059498777, -0.04959398, -0.12104261, 0.018237587, 0.07747393, -0.038457148, 0.01900929, 0.06142847, -0.03194083, -0.008666936, -0.13599987, 0.031248135, -0.04247948, 0.10167268, 0.13608082), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.13198346, 0.1674333, -0.06218637, -0.06692618, 0.12682024, -0.12734371, -0.08660555, 0.22860871, 0.32062, -0.001097262, 0.13959797, -0.0044754874, 0.081532046, -0.026494987, -0.0123374695, 0.026149286), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.104755685, -0.010431212, -0.031997994, 0.027816107, 0.028212348, 0.06372256, -0.14536087, 0.09018213, 0.01694147, -0.046755623, 0.04764776, 0.057815794, 0.062553786, -0.09214233, 0.040526126, 0.007556779), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.08911158, 0.07110132, 0.056163214, 0.038952623, 0.10865385, 0.006793654, -0.06653261, 0.18222512, 0.029801054, -0.0811567, 0.12070828, 0.054755576, 0.028518738, -0.016029958, 0.03218924, -0.009337529), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.086197704, -0.015495907, 0.048072338, -0.07199852, 0.082511336, 0.20892009, 0.059752844, 0.105095305, 0.09896605, 0.11799976, 0.061295632, 0.06601205, 0.013666139, -0.015312437, -0.18342482, 0.023882518), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.013824049, 0.05503347, -0.16911599, 0.008002769, -0.13950597, 0.027708618, 0.25653768, -0.08508614, 0.18204638, -0.06386117, -0.20115016, -0.14755486, 0.05260717, 0.15443258, 0.25847095, -0.10009257), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.059717122, -0.03435186, -0.10407675, -0.064839795, -0.044192888, -0.036913253, 0.03681877, 0.03697244, -0.09967689, 0.09231582, -0.33624214, -0.023151914, -0.1287868, 0.025817866, 0.053143233, -0.05608657), target2);\n\ttarget2 = MulAdd(a3, MF4x4(-0.014672332, 0.06483223, 0.04254691, -0.112299606, 0.23128588, -0.1651168, 0.050003413, 0.04894729, 0.2544582, -0.13577309, -0.0006000951, 0.06801677, 0.09296969, 0.061753552, 0.20265704, 0.257177), target2);\n\ttarget2 = MulAdd(b3, MF4x4(-0.14275837, 0.17531338, 0.04749905, -0.0758535, -0.015062751, 0.046983913, -0.1333634, 0.068564706, -0.09043316, -0.31197232, 0.025262894, 0.042436298, -0.0040407367, -0.22480483, 0.041938446, 0.024641208), target2);\n\ttarget2 = MulAdd(c3, MF4x4(0.14420901, 0.114887774, -0.11488812, -0.0597554, -0.054847293, 0.05547183, 0.03265681, -0.26890585, 0.03439455, -0.255012, 0.17280143, -0.15793064, -0.078898564, -0.12406215, -0.062780574, 0.10172549), target2);\n\ttarget2 = MulAdd(d3, MF4x4(-0.094646096, -0.17374977, -0.0074399756, -0.34635502, 0.07774559, 0.15205993, -0.03449227, -0.06186042, 0.22554572, 0.05784444, 0.12953205, 0.30743182, 0.0064037675, -0.04768125, -0.024676334, -0.038768534), target2);\n\ttarget2 = MulAdd(e3, MF4x4(-0.016888129, -0.01739885, -0.100029364, -0.18185234, -0.25301012, -0.057780884, 0.1565648, 0.03068169, -0.11813698, -0.03959661, 0.0833061, 0.15282218, 0.0071316576, -0.07718743, -0.10895751, -0.06739941), target2);\n\ttarget2 = MulAdd(f3, MF4x4(0.06317689, 0.18067697, 0.15456977, 0.15414707, -0.17297679, 0.024572203, 0.1171789, 0.07393219, -0.18743253, -0.08222157, 0.11114712, -0.17883265, -0.04287185, -0.09453442, 0.12694365, -0.027343085), target2);\n\ttarget2 = MulAdd(g3, MF4x4(-0.06716255, -0.21199013, -0.12669027, 0.21503277, 0.0019133248, 0.0634854, 0.1330296, -0.061205685, 0.29359, 0.17710103, -0.024374757, -0.09792164, -0.18657605, 0.081899285, 0.12585995, 0.025425494), target2);\n\ttarget2 = MulAdd(h3, MF4x4(-0.05250748, 0.030909589, 0.1902117, 0.25473362, -0.09742609, 0.053520087, -0.03211081, -0.057595085, 0.12961125, 0.0023426781, -0.013836333, -0.09925751, -0.06785708, 0.08647871, -0.27276617, -0.10692432), target2);\n\ttarget2 = MulAdd(i3, MF4x4(0.10256342, -0.0012406971, -0.043700144, 0.18606174, 0.019327404, 0.11292357, -0.15260164, 0.17126434, -0.18879685, -0.16486076, -0.011073295, -0.12524827, -0.008579242, -0.059638925, 0.084539056, -0.117018394), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.005224277, -0.004213279, -0.0032532548, 0.07730248, 0.09291174, -0.073571384, -0.026436254, 0.03482603, -0.19962324, -0.2610976, 0.020305693, -0.10154568, -0.36644712, 0.051274676, 0.014252039, 0.13887805), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.027320823, -0.046729945, -0.026784837, 0.16669074, -0.060943272, 0.033377934, -0.14505643, -0.020337462, 0.16624433, -0.04587067, 0.097641915, 0.081230365, -0.007829853, 0.12665996, -0.14892018, -0.24456674), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.08478914, -0.03012501, -0.10310597, -0.11331812, -0.0031645342, 0.14941333, 0.062353395, -0.024058735, -0.0594801, -0.23192395, -0.16746534, 0.06564879, -0.12253713, 0.17433378, -0.0781637, -0.02427467), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.02302574, 0.04423824, -0.08400403, 0.09036313, -0.014492948, 0.11002858, 0.18625931, 0.32704633, 0.05124957, -0.068088494, 0.12289486, -0.014215405, -0.13288727, 0.040543802, -0.20918661, 0.073871054), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.017605199, 0.019553222, -0.08225654, 0.20643222, -0.00022603406, 0.08176717, 0.12868896, 0.124581024, -0.030760515, 0.095257014, -0.22808774, -0.034270126, 0.15100974, -0.3296213, 0.18732856, 0.1324247), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.0529032, -0.026973793, -0.05097176, -0.11297454, 0.020022966, -0.018701904, -0.04847294, -0.15029453, -0.06363558, 0.09747056, 0.07460071, -0.03857069, -0.21553952, -0.11073493, -0.213246, 0.0711861), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.03162221, 0.001236578, 0.123811916, 0.033390332, -0.037370905, 0.19355269, -0.17827089, 0.014296732, -0.16348897, -0.1319003, -0.16828157, 0.025803383, 0.059980027, 0.110682875, 0.0740905, 0.062085215), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.045581415, 0.045279585, 0.057199746, -0.02156781, 0.006849691, 0.088090494, 0.0050983853, -0.13634379, -0.027394824, -0.095449656, 0.24879529, -0.096120596, 0.1353526, 0.120924726, -0.18323645, -0.021366404), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.09347594, -0.033151172, 0.08154851, -0.043524023, -0.11946553, 0.034201168, 0.29714793, -0.11766968, 0.07862629, -0.022385478, 0.007981411, 0.072274946, -0.07020759, -0.08967969, -0.01748178, -0.050568584), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.06815112, -0.08195707, -0.018364457, -0.1291466, -0.07578508, -0.026269661, -0.024130398, 0.345771, 0.061061617, 0.00024922745, 0.121253625, 0.1679367, -0.075497314, 0.018176561, -0.016344557, 0.0036648472), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.04763461, -0.0020346593, -0.02060361, 0.027356124, 0.12256149, -0.10517474, 0.05206596, 0.48938727, 0.24554996, 0.035649568, -0.0020840873, -0.13338771, 0.055847157, 0.08685442, -0.0049057365, 0.119682014), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.0009415129, 0.023808502, 0.011839588, 0.1557796, -0.046566915, -0.16340078, 0.057526406, 0.051289674, 0.009036062, -0.033471756, 0.04899847, 0.08597252, 0.009778078, 0.15277503, -0.02124232, -0.13266967), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.044579845, -0.057439465, -0.0058995294, -0.016733315, -0.026765248, 0.22384825, 0.10160812, -0.24921204, 0.1505643, 0.10299508, -0.022949796, 0.023317415, -0.11803905, -0.010997904, -0.0165606, 0.10949375), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.024293665, 0.080889955, 0.065993495, -0.08183072, 0.15339898, -0.10386374, -0.0075264974, -0.45434427, 0.16638929, 0.18546598, -0.15133487, -0.04405705, -0.11456945, 0.023287205, 0.01540089, 0.07659333), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.05337434, -0.07030085, -0.016662175, -0.025540289, -0.20320894, -0.22829315, 0.0023119978, -0.13647676, 0.14624248, 0.057653934, -0.23686588, -0.22728209, -0.04211661, -0.009623881, -0.013481165, -0.050968897), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.10351371, -0.030414786, -0.021908734, 0.10631468, 0.1558724, -0.030323582, -0.12572181, 0.14325237, 0.16137493, 0.053329308, -0.07966373, -0.14599875, 0.06742195, -0.03502627, 0.093494855, -0.016484367), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.010210213, -0.07126592, 0.08901449, -0.001978569, -0.0020932974, 0.05631864, -0.07674242, 0.07440119, -0.10262469, 0.06294099, 0.2640596, -0.068250656, 0.039236706, -0.05372906, -0.24834888, -0.027236471), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.053275097, 0.12541588, 0.057327554, 0.1483746, -0.019743394, -0.004537443, -0.002553759, 0.051015604, 0.15611948, 0.0062136482, 0.15442398, -0.17060183, 0.072183914, 0.030539684, 0.122384906, 0.13613632), target2);\n\ttarget2 = MulAdd(na3, MF4x4(-0.081967466, -0.045659952, 0.053518385, 0.038269065, -0.20554744, 0.1022743, -0.16302924, 0.11628324, 0.08677866, -0.016249105, 0.0030073056, 0.029243115, 0.09487045, -0.08571386, -0.108643636, 0.023155121), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(0.13383357, -0.14805956, -0.0026678462, 0.096683614, -0.19977921, 0.06789931, 0.11313261, -0.08059509, 0.11312805, 0.02279778, -0.028791273, 0.00220455, 0.1280279, -0.0031435476, 0.027489156, 0.22506006), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(-0.17668596, 0.056276754, 0.06092557, 0.06512077, 0.28657347, -0.16558819, -0.032547206, 0.060506567, 0.042512514, 0.012298008, -0.0840555, -0.003036976, -0.065048106, 0.01438789, -0.022174913, -0.04558888), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(0.09863285, 0.20795937, 0.022519527, 0.18537116, 0.0392277, -0.0321246, -0.026941739, -0.113379315, -0.066700965, -0.03651247, 0.0571846, -0.030824896, 0.096933104, 0.15837808, -0.0047979183, 0.27915525), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(0.102253675, 0.009542945, -0.005872879, 0.16511136, 0.011185962, 0.06349425, 0.015944714, -0.070249364, 0.17597549, -0.0073095546, 0.06678522, -0.048394345, 0.07822778, 0.1582912, 0.029773576, 0.1454936), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(-0.064127095, -0.13314691, -0.15525493, -0.12851773, 0.32410213, 0.11451161, -0.16337484, 0.22651163, 0.0670393, -0.010159622, 0.061997004, -0.0028491814, -0.12702557, -0.02556835, -0.030351989, -0.101927444), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(-0.10687288, 0.013433122, 0.035762146, -0.07343635, -0.057016056, -0.041276235, -0.08300978, 0.0058231223, 0.014210706, 0.24323368, 0.010536771, 0.037272993, 0.14479576, 0.0013622575, 0.0004501183, 0.17661947), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(0.056699157, -0.009144585, -0.20287608, -0.17288777, -0.031525977, -0.014541391, 0.09615033, -0.020868845, -0.06501473, -0.015121819, 0.20430197, -0.04346306, -0.12766391, 0.093933746, -0.027732635, 0.11136926), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(-0.08438437, -0.1183074, -0.12171084, -0.016565872, 0.011952218, -0.058289453, 0.13479574, -0.0013566733, 0.20290127, 0.03338366, -0.1634658, 0.11389365, -0.060460836, 0.05049821, -0.14498705, 0.016767675), target2);\n\n\tMF4 target3 = { -0.07961375, -0.07668534, 0.030482467, 0.035888318 };\n\ttarget3 = MulAdd(a1, MF4x4(-0.20980129, 0.023968311, 0.12840137, 0.10842146, 0.011306613, 0.05415782, 0.039082862, 0.16055544, -0.019953849, -0.038693313, 0.043451615, 0.29995796, -0.04229376, -0.052874412, -0.043818697, 0.12305407), target3);\n\ttarget3 = MulAdd(b1, MF4x4(-0.05386288, 0.060217176, 0.115249164, -0.06499263, -0.24467815, -0.038295876, 0.1099765, 0.011418658, -0.037247434, 0.022481795, -0.022084411, 0.08719741, 0.112991996, 0.0038797192, 0.0007742727, -0.12125326), target3);\n\ttarget3 = MulAdd(c1, MF4x4(0.14591883, 0.0059707207, 0.10084995, 0.11218308, -0.06853006, 0.056708243, 0.03836111, 0.097718365, -0.03493398, -0.025623012, -0.05587737, -0.08457079, 0.028527644, -0.12509371, 0.10159183, -0.1373413), target3);\n\ttarget3 = MulAdd(d1, MF4x4(-0.070879295, 0.12866656, 0.0061003384, 0.2756249, -0.110929534, 0.08008204, 0.103428364, 0.0680596, 0.25671995, -0.20484821, 0.07494457, -0.30119568, -0.0037036634, 0.089072324, 0.08692298, 0.070883), target3);\n\ttarget3 = MulAdd(e1, MF4x4(-0.010380239, -0.09510446, -0.082714744, -0.17768058, 0.07806542, 0.031258516, 0.22199117, -0.2503904, -0.35995534, 0.22030926, 0.31575105, 0.00959926, -0.01777953, 0.0140022775, 0.03752933, 0.09948206), target3);\n\ttarget3 = MulAdd(f1, MF4x4(-0.041341938, -0.07633474, -0.0198307, -0.0010591226, -0.00981418, 0.054734066, 0.07465484, 0.18272892, -0.081466086, -0.016789936, 0.01381776, 0.19449398, -0.16821295, -0.17434129, -0.03367363, -0.29107878), target3);\n\ttarget3 = MulAdd(g1, MF4x4(0.03371505, 0.0015008952, 0.038456205, 0.08681006, 0.06587572, 0.080483936, -0.046148404, 0.00034004613, -0.049788523, -0.014699005, 0.12648652, -0.08964094, -0.04100757, -0.0022513492, -0.045995962, -0.033430565), target3);\n\ttarget3 = MulAdd(h1, MF4x4(-0.077466115, 0.055482663, 0.06427869, -0.014551742, -0.03726866, -0.050230574, 0.13511398, -0.14205348, -0.03461195, 0.031386618, 0.0590859, 0.032402404, -0.015786028, 0.086712435, 0.0989059, 0.031410974), target3);\n\ttarget3 = MulAdd(i1, MF4x4(-0.034690183, -0.038256433, -0.011660002, 0.0063596303, 0.038892817, 0.11872877, 0.0003016667, 0.08520122, 0.0941757, 0.073596634, 0.08374554, 0.046010435, 0.0181265, -0.15729031, 0.11088375, -0.032952093), target3);\n\ttarget3 = MulAdd(a2, MF4x4(-0.026296677, 0.15765159, -0.012793888, 0.0082718665, 0.12780726, -0.0118969055, -0.089828335, -0.24008913, 0.19047114, 0.03790669, 0.10990294, -0.14094876, 0.031807188, 0.044609103, -0.1013979, 0.008491038), target3);\n\ttarget3 = MulAdd(b2, MF4x4(0.053833764, 0.26152018, -0.04398908, -0.060880598, -0.028556267, -0.04798034, 0.006057095, -0.19898368, -0.24473669, 0.0472649, 0.15300584, 0.028983278, 0.028763462, -0.017422339, 0.03820097, 0.083550654), target3);\n\ttarget3 = MulAdd(c2, MF4x4(0.0082439445, -0.0012358675, -0.013711661, 0.07154783, 0.07983732, -0.015840268, 0.034440894, -0.04973906, -0.18109304, 0.05403726, -0.03891083, -0.016710335, 0.10012702, 0.02470262, 0.0085716015, -0.0851344), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.04101796, 0.060623523, 0.011851002, -0.028376777, -0.025862841, -0.042955548, -0.1211269, -0.13360673, 0.0071736956, -0.18880656, 0.276794, -0.011204949, 0.020503378, 0.0110537205, 0.10886233, -0.003678301), target3);\n\ttarget3 = MulAdd(e2, MF4x4(-0.14220405, -0.15436499, -0.13759659, -0.03390728, 0.21921699, -0.003154918, -0.101451315, 0.043704413, -0.12738566, 0.19500181, 0.45843616, 0.065685, -0.20168468, 0.12985173, -0.02569477, 0.17067434), target3);\n\ttarget3 = MulAdd(f2, MF4x4(0.032667797, 0.16730979, 0.004677948, -9.4643896e-05, -0.014588183, -0.057854652, 0.013125396, 0.096397184, -0.054806076, 0.010901007, 0.0968573, -0.23783323, 0.08697233, 0.008680743, -0.035573848, -0.004963115), target3);\n\ttarget3 = MulAdd(g2, MF4x4(-0.00958006, 0.03317287, -0.01340794, -0.018926572, -0.05369498, -0.03341796, 0.030888261, -0.0010606453, 0.039325304, -0.16673934, 0.06557901, -0.08155623, -0.02527372, -0.17023365, 0.015217776, -0.040017188), target3);\n\ttarget3 = MulAdd(h2, MF4x4(-0.015815312, -0.042971406, 0.067791514, -0.08905113, -0.09565908, 0.04346861, -0.06728161, 0.15545414, 0.18861936, -0.031062441, 0.23719235, 0.037903327, 0.07448, 0.035912767, -0.011007527, -0.01686951), target3);\n\ttarget3 = MulAdd(i2, MF4x4(0.0177658, 0.058648083, -0.028266283, 0.074122384, -0.114152886, -0.1088884, -0.00045867384, 0.12350585, -0.028705545, 0.07543727, 0.019930601, 0.05765993, 0.030875817, -0.01684014, 0.03873862, -0.29210237), target3);\n\ttarget3 = MulAdd(a3, MF4x4(0.13872401, 0.0026290037, 0.120320186, -0.096298255, -0.22042315, -0.024083365, 0.021574842, -0.120338276, -0.030302105, 0.0030427484, -0.048579045, 0.11119769, 0.17029862, -0.03042154, -0.008851885, -0.04858139), target3);\n\ttarget3 = MulAdd(b3, MF4x4(0.08693055, 0.0035178792, 0.0072182836, -0.21177882, -0.12236571, -0.041778523, -0.07611475, 0.1860772, -0.07140713, 0.079063386, 0.16111141, 0.10981697, -0.11631706, 0.00499998, 0.03531511, 0.112886176), target3);\n\ttarget3 = MulAdd(c3, MF4x4(0.31241155, -0.155902, 0.026360337, 0.11567123, -0.01410306, 0.043105874, 0.06448718, -0.15669721, -0.10699524, 0.14620166, -0.022471936, 0.16952698, -0.0043298705, 0.012148871, -0.06097046, 0.13138528), target3);\n\ttarget3 = MulAdd(d3, MF4x4(0.04631855, 0.16682167, -0.08682791, 0.031910088, -0.10863085, -0.05405996, 0.20847258, -0.25902548, -0.21886107, -0.016768524, 0.018900516, 0.016220776, 0.086765796, -0.086313486, 0.061806828, -0.042748976), target3);\n\ttarget3 = MulAdd(e3, MF4x4(-0.22026716, -0.060322747, 0.055743527, -0.20811775, 0.15368998, -0.05755373, -0.1723089, 0.053601813, 0.3936026, -0.13520636, 0.13089643, -0.09859593, -0.08306327, 0.12936836, 0.1387318, 0.0221951), target3);\n\ttarget3 = MulAdd(f3, MF4x4(0.14327681, -0.19199587, 0.02808416, -0.13307315, 0.12417994, -0.06954055, -0.11516412, -0.16203047, 0.085192114, 0.020538192, -0.10626918, 0.13578235, -0.042099748, 0.17358838, 0.040398534, 0.14976105), target3);\n\ttarget3 = MulAdd(g3, MF4x4(-0.053998414, 0.12475386, -0.17873338, -0.06543859, 0.007933435, -0.07924536, -0.00051635655, -0.0015982009, 0.0397255, -0.16369022, 0.03679988, 0.100230515, -0.03289991, 0.043998964, 0.058887206, -0.09575534), target3);\n\ttarget3 = MulAdd(h3, MF4x4(-0.0027977703, 0.17769088, -0.104156405, -0.1011918, -0.042667318, 0.19569083, 0.0944246, 0.05381444, 0.27140749, -0.12598918, 0.40728518, -0.16019246, 0.07478889, 0.07995141, -0.055247143, -0.015301875), target3);\n\ttarget3 = MulAdd(i3, MF4x4(-0.10702615, 0.08362206, -0.12840238, 0.23424083, -0.11492997, 0.14988491, -0.058391277, -0.012141015, 0.15102027, 0.14370169, 0.04101889, 0.18302867, 0.11423182, 0.026963422, 0.02742905, 0.05555466), target3);\n\ttarget3 = MulAdd(na1, MF4x4(0.0170646, -0.040626798, -0.086295746, -0.08303102, 0.07351082, -0.10439346, -0.09158801, 0.143845, 0.016958551, 0.21520329, 0.041720334, -0.11638024, 0.087674506, 0.12561873, -0.21283507, -0.23356001), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(-0.011983947, 0.026985325, -0.10494964, 0.045505363, 0.06308739, -0.0132794585, -0.19216236, 0.0044559645, -0.21042153, 0.026115706, -0.08442747, 0.08834091, 0.13262731, -0.06231853, -0.20550017, 0.03952042), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.13586617, -0.0021369287, -0.121751934, -0.019784765, 0.03198282, -0.17328545, -0.10135551, -0.0024194748, -0.04619262, 0.21542613, -0.09846654, 0.081278816, 0.16300274, 0.01612674, -0.0033168197, -0.0257739), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(0.1674388, 0.01902311, 0.007676536, -0.12779048, 0.18292421, -0.22342151, -0.05965652, 0.14477763, -0.09779103, 0.14098361, -0.16848993, 0.19790487, 0.006252736, 0.22206211, -0.15818825, 0.08966031), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(0.17080314, 0.069508895, -0.038767304, 0.18950053, -0.08592572, -0.20979418, -0.21214612, 0.3330128, 0.30952567, -0.107134975, -0.16258, 0.022875668, -0.02457244, -0.12532432, -0.24953507, 0.059734188), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(-0.0018491185, 0.033706773, -0.1065624, 0.025152596, -0.016163057, -0.041699793, -0.12381229, -0.025942512, 0.13162622, 0.03565028, 0.029629026, -0.018657705, -0.1921952, 0.101777196, -0.06653633, 0.079698876), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(-0.040848907, 0.013372185, -0.061049856, -0.05829793, 0.03286879, -0.23536444, -0.056496553, 0.10049081, 0.0040958193, 0.1146177, 0.05323595, -0.040001456, -0.07206396, 0.052719124, -0.11720367, 0.12925144), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(0.08204122, -0.04806825, 0.03865589, -0.016993582, 0.004172861, -0.025698105, -0.01519582, 0.1425758, 0.02170024, 0.105864905, -0.03567325, -0.016229391, 0.22955607, -0.043812234, 0.045955688, 0.07391785), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(0.025563411, 0.016936684, 0.054015722, -0.03440089, 0.0448358, 0.012403107, 0.011840847, -0.10125541, 0.03623299, -0.005010518, -0.043322872, -0.17361045, 0.015130423, 0.1813893, 0.0017346571, 0.07948043), target3);\n\ttarget3 = MulAdd(na2, MF4x4(-0.027647035, -0.0092600705, -0.05360344, -0.03877652, 0.028799497, 0.002088597, -0.13616459, 0.14142619, -0.26286268, -0.10349014, -0.066500075, 0.009223449, 0.08260629, -0.037491266, 0.019173276, -0.022004724), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(0.004824502, -0.114328325, -0.0023743433, 0.027862813, -0.019098494, 0.050463524, -0.11528185, 0.22641957, -0.025532806, 0.007936803, -0.064679936, -0.055090822, 0.07407797, 0.052605998, -0.043648902, -0.16713037), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(0.078680634, 0.020991815, 0.008421187, 0.010790185, 0.032945324, 0.13025786, -0.14650385, 0.053448163, -0.0028072142, 0.039515216, 0.1282605, -0.029288173, -0.029804084, -0.13323198, -0.054916043, 0.056681957), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(-0.09560204, -0.0669099, 0.005074813, 0.09496971, 0.027659275, -0.2191003, 0.29730386, -0.022740293, -0.025892505, -0.1871456, 0.028785622, -0.12673095, 0.0664705, -0.08389141, -0.089651205, -0.15402664), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(0.0063571655, 0.15680969, 0.061591282, 0.03752913, -0.041436892, 0.075064555, 0.20300192, 0.031942736, 0.0804296, -0.22194067, -0.20516422, 0.07361, -0.15353987, 0.25465, 0.008901653, 0.10683235), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(-0.006734436, -0.14774522, -0.031374577, -0.1032655, 0.11299578, 0.1205544, 0.11802791, -0.0612094, 0.03863345, 0.09838008, 0.037064772, 0.029507324, -0.051219307, -0.055263996, 0.02356915, -0.16056564), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(-0.06996934, -0.015304054, -0.009411581, 0.030309107, 0.10674073, -0.020733232, -0.115811616, 0.031903993, -0.049218595, -0.067377076, 0.26841155, -0.06866156, -0.09156055, -0.10751758, -0.022639344, -0.18830526), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(0.020456642, -0.035503354, -0.09457199, 0.05264921, 0.24155058, 0.12630259, -0.045381807, -0.12230558, -0.03225022, 0.04103188, -0.13622516, -0.0040657576, 0.023767322, -0.051124092, 0.09194598, -0.03766687), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(-0.016005656, -0.05218363, 0.029727828, -0.1604237, -0.009916855, -0.024033275, -0.14342757, 0.083073266, 0.057055146, -0.013757824, 0.15497124, -0.17284107, 0.05109579, 0.013304962, -0.06706223, 0.06251818), target3);\n\ttarget3 = MulAdd(na3, MF4x4(0.06668304, 0.009187671, -0.047118776, 0.07131393, -0.17141497, -0.015085916, 0.004049452, -0.035744824, 0.032192133, 0.15326595, 0.044383276, 0.14035697, -0.090966456, 0.14161377, -0.015315352, 0.11275578), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(-0.13508414, 0.0785333, 0.009038879, 0.1607147, 0.22703816, 0.033339903, -0.03727777, -0.31905726, -0.069729164, 0.036481526, -0.025714623, 0.0851529, -0.12554394, 0.105045296, 0.059951913, -0.0604455), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(-0.20849659, 0.088841915, -0.1109168, -0.08992707, 0.31967592, 0.005481088, 0.22387522, 0.02098377, -0.0497405, -0.025430094, -0.0043220813, 0.060257867, -0.21568587, 0.067227446, -0.057946377, 0.06617755), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(0.076282814, -0.20857447, 0.056654572, -0.014142213, 0.029527945, -0.07234652, -0.094661996, 0.22620171, 0.042960577, 0.013866398, 0.036293183, 0.14942285, 0.076137245, -0.002794117, -0.1168563, -0.0146170305), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(0.10552861, -0.15840133, -0.03899879, 0.23962662, 0.04375998, 0.1696087, 0.037471466, -0.2348845, -0.04425561, -0.09243792, -0.12540625, 0.013209438, 0.20652635, 0.28815508, -0.14443508, -0.045806926), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(-0.18040875, 0.101635806, 0.022794934, 0.01974664, 0.24168968, -0.09383824, -0.05368557, 0.095760964, -0.03084522, 0.03096591, -0.025146073, -0.15247615, -0.07991138, 0.041957334, 0.13305306, 0.10435218), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.12386387, -0.07711658, -0.010701461, -0.15226945, 0.13125682, -0.05067199, 0.05759467, 0.06512925, -0.087202296, -0.09307128, 0.074678324, -0.118310176, 0.013819953, 0.078637935, 0.060606144, 0.024220081), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(0.034386832, -0.18846357, -0.039673664, 0.113117084, -0.045039542, -0.10561991, -0.073102295, -0.3002364, 0.03678976, 0.12222279, -0.115726635, 0.07686326, 0.040241316, 0.1602316, 0.09017754, -0.115864284), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(0.052414972, 0.033908065, 0.08952466, -0.17085709, 0.006635481, -0.040943716, -0.21519491, 0.04866619, -0.04725049, -0.05258961, -0.014845829, -0.26571122, 0.07195377, 0.20871797, -0.068733044, 0.15962349), target3);\n\n\tMF3 target4 = MulAdd(e1, MF4x3(0.053345524, 0.066197485, 0.07259881, 0.05303127, 0.06742834, 0.07375377, 0.094053976, -7.700613e-05, -0.02473139, 0.005308593, 0.03030767, 0.039729137), 0.0);\n\ttarget4 = MulAdd(e2, MF4x3(-0.108758785, 0.037586506, 0.065435104, 0.027483977, -0.05654698, -0.076396726, 0.105040714, 0.05024414, 0.021126145, -0.0674868, -0.0055504893, 0.02190656), target4);\n\ttarget4 = MulAdd(e3, MF4x3(-0.053890713, 0.0071396744, 0.016984116, -0.045092918, 0.025137635, 0.041979324, -0.03408237, 0.0019260172, 0.005701325, -0.02040999, -0.01315308, -0.00639404), target4);\n\ttarget4 = MulAdd(ne1, MF4x3(-0.073155664, -0.06887698, -0.072435565, -0.08694837, -0.05531286, -0.055365037, -0.06690585, -0.00129934, 0.013128711, -0.045931015, 0.017999481, 0.021670034), target4);\n\ttarget4 = MulAdd(ne2, MF4x3(0.14758188, -0.052864034, -0.06617946, -0.025215192, 0.005785653, 0.02022865, -0.07359226, -0.034944568, -0.01911832, -0.059109453, 0.0018033485, -0.022261323), target4);\n\ttarget4 = MulAdd(ne3, MF4x3(0.079963796, 0.018210623, -0.0025736517, 0.06693135, -0.038985185, -0.04726813, -0.03559407, -0.0083629545, -0.005753532, 0.043954816, -0.022223696, -0.039470144), target4);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n\ttex3[gxy] = target3;\n\ttex7[gxy] = MF4(target4, 1);\n}\n\n//!PASS 6\n//!DESC Conv-4x3x3x24\n//!IN tex1, tex2, tex3, tex7\n//!OUT tex4, tex5, tex6, tex8\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { 0.04207974, -0.22892998, 0.061954536, 0.076551735 };\n\ttarget1 = MulAdd(a1, MF4x4(0.09584929, -0.095243275, 0.08022671, 0.075294726, 0.18445255, -0.082423694, -0.097833045, -0.021506732, -0.21379599, -0.023127496, -0.18897046, 0.023956126, -0.060177475, 0.027762169, 0.19984011, -0.20838684), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.012249506, -0.12688737, -0.12119437, 0.10179773, -0.09664198, -0.0030920326, -0.030286502, -0.20217018, 0.34590152, -0.05034654, 0.049923953, -0.043337423, 0.25000378, -0.028680135, 0.16001691, -0.066234544), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.08372182, -0.089819506, -0.013704554, 0.04556739, -0.114813834, -0.06466441, 0.03785733, -0.0062836753, 0.047535792, 0.06347279, -0.007735239, 0.049881376, 0.20055495, 0.047256388, -0.09947006, 0.0025243685), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.3671971, -0.05361603, -0.12586144, 0.12522058, 0.13843551, -0.06033578, 0.22667646, -0.08870703, 0.01452431, 0.17809536, 0.13784996, 0.15395631, 0.0001755052, 0.30571333, -0.14230241, -0.22773817), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.27697307, 0.19896318, -0.055979818, -0.27574858, 0.06590851, -0.083754696, 0.26534772, 0.04968563, 0.028200507, 0.11523887, 0.07717626, -0.037011877, 0.013540311, -0.015524421, 0.20788544, 0.16297664), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.13144116, -0.14546596, 0.10977632, 0.010728187, 0.025761489, -0.018065382, 0.06367839, 0.14230403, 0.12607081, -0.0124253975, 0.31784698, -0.017743418, -0.022748945, 0.05433257, 0.0031092372, -0.031199085), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.21655789, 0.011040414, 0.06492884, 0.0706221, 0.09610853, 0.057776507, 0.009683445, -0.060912937, 0.021881321, -0.19671698, -0.0130090965, -0.013112566, -0.085476145, 0.038455218, -0.0014731084, -0.0831875), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.37602007, 0.0823336, 0.24707538, -0.09009795, -0.017044, -0.12772176, -0.17441119, -0.042144842, 0.09458421, 0.28926283, 0.06927162, -0.06356304, 0.2206176, 0.1834394, -0.055222265, -0.13328971), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.12759925, -0.1872996, 0.12348925, 0.09169479, 0.2032652, 0.021332331, -0.02606638, -0.30383334, 0.11312311, -0.12563488, 0.07815656, 0.033551723, 0.073155805, 0.022491606, -0.004879681, -0.020566663), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.0074200626, -0.045258366, -0.11789159, 0.15158547, 0.021973789, 0.013558428, -0.06303165, -0.014261419, -0.005217678, -0.08988565, -0.032385588, -0.16513458, -0.00094591687, 0.105432004, 0.008511094, 0.064075306), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.11356488, 0.033568926, -0.0035593451, -0.1380603, -0.09776493, 0.16050343, 0.14889094, -0.20236592, -0.13227837, -0.3369538, -0.08290829, -0.102781296, -0.0008081758, 0.25186548, 0.045406237, -0.08264705), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.012680731, 0.045382235, -0.099822015, 0.052455686, -0.017731141, 0.2148587, -0.025351917, 0.031683072, -0.25334007, 0.0181896, -0.0813112, -0.12272559, 0.04371032, 0.065688565, -0.020920211, 0.23614638), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.07416445, -0.1632982, 0.019079927, 0.033240702, 0.13220134, -0.09758509, -0.09742767, 0.0003053599, 0.110648625, -0.06813206, 0.10455032, -0.037899535, -0.03261096, 0.06280864, -0.17577846, -0.279448), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.032076143, 0.00038162203, 0.01970988, -0.040755652, 0.14594907, -0.29632306, 0.18186367, 0.06210379, 0.089618064, -0.20777738, -0.11941431, -0.047921117, 0.069467194, -0.061959818, -0.097263746, 0.20329393), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.13389389, 0.053396456, 0.15672714, 0.1585184, 0.019925753, 0.08114361, 0.1381434, 0.06507304, -0.021846443, -0.040439755, 0.028436588, -0.1502027, -0.01547767, -0.09032624, 0.1101168, -0.044395007), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.08236856, 0.25564417, 0.15329555, 0.054097474, 0.12049528, -0.076263994, -0.19988477, 0.01916389, 0.097000316, -0.15214846, 0.1360054, -0.0007913522, -0.22950296, 0.0919526, -0.0045635877, 0.16661373), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.19546251, 0.008113141, -0.08576472, 0.23981415, 0.037918933, -0.106971025, -0.19296011, 0.064365655, -0.1451187, 0.03483461, 0.03271891, -0.001744038, -0.24933495, 0.0021132312, -0.15542698, 0.041852806), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.07619386, 0.17014128, 0.05875971, 0.056373183, 0.077981666, -0.034455027, -0.09977959, 0.019308453, -0.097891875, -0.011260777, 0.009704571, -0.091228284, 0.072402045, 0.1679339, -0.021336546, -0.078355595), target1);\n\ttarget1 = MulAdd(a3, MF4x4(-0.10250763, 0.07651088, -0.0131817255, 0.035391405, 0.1545587, -0.005520408, 0.18242277, 0.034118786, -0.0512669, 0.09563292, -0.0063671293, 0.017505696, 0.038793128, -0.23837951, 0.047975145, 0.17773068), target1);\n\ttarget1 = MulAdd(b3, MF4x4(-0.0031853304, 0.1552162, 0.16779172, -0.06020084, -0.19057243, -0.13034964, -0.028302211, -0.1005563, -0.025626518, 0.087223954, 0.19338006, -0.06066401, -0.2122666, 0.001640063, 0.033021607, 0.06684525), target1);\n\ttarget1 = MulAdd(c3, MF4x4(0.10043514, 0.033739183, 0.01542628, -0.07931681, 0.032161597, 0.16379037, 0.050983094, -0.030686958, 0.19189216, -0.15878248, 0.01945422, -0.02624594, -0.10871623, -0.06925224, 0.020812772, 0.07386481), target1);\n\ttarget1 = MulAdd(d3, MF4x4(0.012129095, -0.029043682, -0.054882783, -0.04798959, 0.12916534, -0.012814343, 0.06516883, -0.054208606, 0.2625884, 0.008694777, -0.16992761, -0.041635927, 0.10295491, -0.04496253, 0.14063339, 0.15155916), target1);\n\ttarget1 = MulAdd(e3, MF4x4(-0.09972329, -0.2031706, 0.15199123, 0.136278, -0.030424237, 0.01253304, -0.22483149, -0.04429611, -0.0058194255, 0.32650772, -0.13599585, -0.15167284, 0.13211648, 0.06883629, 0.13449487, 0.1419326), target1);\n\ttarget1 = MulAdd(f3, MF4x4(0.16303232, -0.12681945, -0.24028221, -0.018534243, 0.048438597, 0.02196457, -0.26033646, 0.11363536, -0.23852448, -0.2250161, 0.054867614, -0.042418674, 0.036863618, 0.16061254, -0.103400566, -0.054900676), target1);\n\ttarget1 = MulAdd(g3, MF4x4(0.0018444043, 0.047589947, 0.15244149, 0.026401952, -0.16383879, 0.2288589, -0.067270175, 0.035644963, -0.046972964, -0.079998486, -0.07510886, 0.086569756, 0.088215984, -0.08220123, 0.006012456, -0.081925176), target1);\n\ttarget1 = MulAdd(h3, MF4x4(-0.20731804, -0.105194375, 0.1735274, -0.13702598, -0.08078456, -0.08891678, -0.20113394, 0.20032553, 0.23738097, -0.06555696, 0.0073099127, -0.24053259, -0.19441254, 0.044497594, -0.085050255, -0.45097253), target1);\n\ttarget1 = MulAdd(i3, MF4x4(-0.015630659, 0.096795596, -0.05207522, -0.021776563, -0.052400976, 0.0060831443, 0.19417833, 0.14141484, -0.031068498, -0.031282816, -0.0053475797, 0.16884208, -0.049706176, -0.117957756, -0.122313395, -0.22831066), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.13027157, 0.11083156, -0.05295985, -0.13405156, -0.25512117, 0.007962338, -0.19477697, -0.043301556, 0.10253565, -0.12592895, 0.05690188, -0.03008582, -0.08713882, -0.05253795, -0.05898243, 0.07648529), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.028103404, 0.107655846, 0.06792543, 0.038461875, -0.17316198, 0.045686997, -0.1318844, 0.1923057, -0.10082274, 0.023855874, 0.014650556, 0.07000885, 0.03179704, -0.17100379, 0.060464893, -0.05120159), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.008488711, 0.10152624, -0.08714461, -0.054719266, -0.0132024065, 0.06630249, -0.0070151696, -0.076831385, 0.15455176, 0.065892935, 0.06491651, 0.07013989, -0.016401365, 0.1033902, -0.026735194, 0.09976299), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.062281746, 0.11808364, 0.064350896, -0.077770054, -0.10968356, 0.08668185, -0.14066383, 0.020038921, 0.21482739, 0.01405822, -0.05047993, -0.098990895, 0.113971226, -0.07471277, 0.14986148, 0.087345585), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(-0.06364801, -0.17296022, -0.17889057, 0.20986524, -0.022308208, -0.13067317, -0.1608613, 0.005560176, 0.18469712, 0.08284309, -0.16637094, -0.1101153, 0.0047913613, 0.085900925, -0.19173592, -0.336121), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.32434624, -0.11097179, -0.2576656, -0.035399284, 0.12601346, 0.12047275, -0.08445279, -0.22353333, 0.275204, -0.028347714, -0.1910839, -0.105464876, -0.17244552, 0.10430915, 0.07988085, -0.024917416), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.38803256, 0.12614547, 0.113965005, -0.05710032, -0.2639457, 0.015134661, 0.018303871, 0.060708337, 0.18753609, 0.025863146, 0.09349249, -0.034619175, 0.078573935, 0.034479834, 0.03612244, -0.08949277), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.16215962, -0.030498799, -0.10899874, -0.03440776, -0.015821088, 0.029496742, 0.13228656, -0.16718344, -0.14563835, -0.17501803, -0.004510379, 0.020998359, 0.06548722, -0.13759966, 0.07444127, 0.10629099), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.0698536, 0.23689122, -0.0060213935, -0.0015028039, 0.039947093, 0.11350835, 0.19953221, 0.08415087, 0.22800536, 0.06906256, -0.06636992, -0.24212533, -0.0023316562, 0.011869679, 0.25965255, -0.012204548), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.000661378, 0.10967955, 0.058565635, -0.15265211, 0.14624023, -0.03375811, 0.05981829, -0.022552123, 0.070834555, -0.022453807, 0.019191928, 0.08326683, 0.0777132, 0.08895826, 0.023328163, 0.053312927), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.043799512, 0.12866509, -0.046365067, 0.24239258, -0.11673964, -0.025937054, -0.12636824, 0.100062154, -0.10018257, 0.19266897, 0.06142848, -0.14361443, -0.021221312, -0.30052304, -0.20469959, 0.14677355), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.015183433, -0.19820379, -0.15852103, 0.054332163, 0.0071695223, 0.084583715, 0.24957466, -0.051836044, -0.1983422, -0.08417326, 0.08057586, -0.0437153, -0.01875922, -0.09707154, -0.15741958, -0.017708866), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.29747635, 0.07556405, -0.024965616, -0.035462193, 0.00015182442, 0.039648414, -0.021202678, 0.048798855, -0.057369143, -0.1613142, 0.023689339, -0.04995168, 0.02980912, -0.052541643, -0.037693493, 0.089918755), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.13534155, -0.09769345, -0.072239734, 0.06396828, -0.067685336, 0.09630334, -0.060928572, 0.04446791, -0.08296695, 0.09350221, 0.34450835, -0.13325562, 0.017068733, 0.19159698, -0.0142695615, -0.0692556), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.006079359, 0.12826636, -0.12040495, 0.08986504, 0.07011883, -0.1098471, 0.14756078, -0.29749495, -0.13352399, -0.19821455, 0.088539004, 0.03831198, -0.2940772, 0.19943683, -0.083427206, 0.22637546), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.35546607, 0.064483844, -0.19232833, -0.06884708, -0.2744395, 0.015903095, -0.18404284, 0.18437761, -0.072399296, -0.11778013, -0.109648645, 0.038300544, -0.016273083, -0.022765087, -0.18801431, 0.023174742), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.047155075, -0.013470263, -0.2142679, -0.07784448, -0.17944333, -0.04802458, -0.059323605, 0.06443357, -0.023670893, -0.32168958, -0.047240417, -0.04732927, 0.22192943, -0.12674028, 0.038099587, 0.047584143), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.036675204, -0.2955229, -0.2730817, -0.021219578, -0.22891581, 0.1896148, 0.1885584, 0.020979041, -0.115823194, -0.07042675, -0.042149916, 0.04921666, -0.0054005245, -0.12240402, -0.0031619132, 0.09292424), target1);\n\ttarget1 = MulAdd(na3, MF4x4(-0.121177875, 0.022185382, -0.13757537, 0.110018514, 0.04366351, 0.07803729, -0.028073097, -0.070835054, -0.117744304, 0.010936038, 0.0039909417, 0.15176865, 0.14082533, -0.028780727, -0.09623105, -0.17158796), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(0.04708067, 0.09987003, -0.0011556224, -0.14066035, 0.18528107, 0.2334141, 0.031397898, 0.05785171, 0.056908704, 0.07767457, 0.10462482, 0.04132479, 0.0121364035, 0.009938317, -0.08584528, -0.067361355), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(-0.05410052, -0.0714775, -0.16306542, 0.090159744, -0.161323, -0.047408808, -0.06715019, 0.09986001, 0.2831126, 0.00576967, 0.040771786, -0.08548527, -0.09100255, 0.13035326, 0.012434338, -0.014341014), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(-0.1663156, 0.10254592, -0.050546184, 0.11586232, -0.16458654, -0.03840253, 0.20078611, -0.07851566, 0.15138014, -0.112647966, -0.01826464, 0.12073245, -0.08315027, -0.050763886, -0.15038362, -0.1131053), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(0.01002309, 0.08847059, -0.20151149, -0.0035132666, -0.23968504, -0.03516418, 0.29592118, 0.064261466, 0.45611492, -0.10594028, 0.110738106, -0.096258715, -0.05207964, -0.05561078, -0.11650712, -0.3685437), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(0.20816466, -0.05811231, -0.061693646, 0.07572569, 0.14781217, -0.0070261173, -0.025654003, 0.054483656, 0.057109646, 0.19076158, 0.04684541, 0.1116435, -0.09888648, -0.031974472, 0.19365066, 0.021925794), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(0.03929964, 0.07849196, -0.09844016, 0.07695297, 0.14535576, -0.2121029, -0.08024618, -0.012246682, 0.34951916, -0.09691296, 0.03363421, 0.058434267, 0.003874065, 0.14535636, -0.028760154, 0.124139), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(-0.0932687, 0.092196085, -0.31407887, 0.1343263, -0.27295715, 0.14278416, 0.08114481, -0.12019184, 0.11957917, -0.113183275, 0.039373737, 0.46590427, 0.13638581, -0.043146584, 0.072187565, 0.25355667), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(0.123297654, 0.13584657, 0.07648451, -0.13606457, -0.16890481, 0.01590599, -0.21695235, -0.0694265, -0.2649162, 0.02908455, 0.21927917, 0.010575717, 0.0485126, 0.039509103, 0.28077808, 0.081715904), target1);\n\t\n\tMF4 target2 = { 0.0076388572, -0.16117841, -0.21034169, -0.019341651 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.017371856, 0.031500984, -0.07871794, 0.07516421, -0.047120046, -0.1499491, 0.03412159, -0.11797919, 0.24790019, -0.19525756, -0.05562878, 0.0328997, 0.21224782, -0.15311961, -0.18679233, -0.021687083), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.025990961, 0.12443172, 0.0647746, -0.05208365, 0.05024424, -0.15237884, -0.12913004, -0.03974524, 0.1453159, 0.105298564, -0.17882426, 0.15200019, -0.024576407, 0.024749285, -0.114573665, 0.12468399), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.07534002, -0.018443566, -0.07744656, -0.049855288, 0.030816372, -0.011974315, 0.05701086, 0.083947234, -0.16585147, -0.09379088, -0.090112925, -0.110042654, -0.105956376, 0.014653304, 0.041867986, 0.24255139), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.0044792104, -0.029270872, 0.07648775, 0.049905814, 0.014173815, -0.16794622, -0.09707847, 0.12383384, 0.06794641, -0.07997065, -0.51078653, 0.034911633, 0.13010858, -0.23383191, 0.07255915, -0.06692129), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.21879609, -0.017210754, -0.015485283, 0.083878465, -0.26080847, 0.36907044, 0.23289536, -0.038870774, 0.06501928, 0.14246589, -0.08897723, 0.10715434, 0.3482729, 0.16240129, -0.013726439, -0.005958744), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.11399226, 0.18352379, 0.14817153, -0.20127603, 0.014963564, 0.1103272, -0.07205868, 0.08848388, 0.14840026, 0.018574262, -0.07972405, 0.02918892, 0.18851598, 0.074035265, -0.010895981, -0.034228772), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.12840563, 0.13339421, -0.042844173, 0.17029236, 0.27274412, -0.05954642, -0.07974038, -0.14359044, -0.12972996, -0.14160097, -0.22879072, 0.17341535, -0.047784876, -0.0024098, -0.066806085, 0.1451525), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.019089594, 0.14139606, -0.16583538, 0.038803227, -0.014393993, -0.06451304, -0.0133141065, -0.22717497, -0.07594741, 0.16408369, -0.0074125547, 0.06459095, -0.13577539, -0.123973124, -0.21311697, 0.06648542), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.2023118, 0.014515263, -0.032675546, 0.01735652, 0.16447331, -0.016542327, -0.17865558, 0.07834224, 0.016872171, -0.12725283, -0.021913532, -0.03262319, -0.11567316, -0.009686028, 0.01897474, -0.00264971), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.02156143, 0.06127393, 0.08751492, -0.0027723024, 0.061267495, 0.22953646, 0.26134068, 0.23994948, -0.05292228, 0.11692952, 0.1014853, -0.013061857, -0.13198215, -0.08740625, 0.08896114, 0.11902029), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.017173437, -0.00088511547, 0.07882701, 0.059980858, -0.06255887, -0.07106743, -0.070686355, -0.111458905, -0.102210574, 0.082739465, 0.25598842, 0.010992033, -0.06413811, -0.03738569, 0.009392029, -0.047789197), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.23666115, 0.07702853, 0.15348057, 0.081954665, -0.028320765, -0.15108013, -0.06386237, -0.03937426, -0.070428774, 0.046394363, 0.097939745, -0.08086774, 0.06996333, -0.048788365, 0.07915947, 0.05624496), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.14345141, 0.048822183, -0.2908337, 0.013937969, -0.019703582, -0.41485405, 0.431834, 0.05884408, -0.3067431, 0.10988645, -0.014010137, 0.06143512, 0.24215294, -0.17129561, 0.11282655, 0.19824891), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.07530577, -0.015041713, -0.11711949, 0.060197067, 0.15375182, 0.5235449, -0.15465264, 0.055295702, -0.12753716, 0.04075088, 0.06649801, -0.08592669, -0.034694944, 0.18401965, -0.031681508, 0.086950384), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.23155743, -0.012697523, -0.19502366, -0.09216853, -0.050312944, -0.003234684, -0.07824935, 0.09000848, -0.1604727, 0.16866255, -0.07226818, -0.04688219, 0.18855634, 0.07053166, 0.06875359, -0.082133405), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.097153, 0.17410621, -0.07209523, 0.031690594, -0.18697138, -0.31457213, 0.12693302, 0.09791562, -0.056750435, 0.17457159, -0.014368028, 0.11140081, 0.14797364, -0.11987443, 0.010138102, -0.24108526), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.08502398, 0.25199497, 0.033161916, 0.11686169, -0.000555042, -0.13222077, 0.019214375, -0.0740864, 0.05422655, -0.0689195, 0.07171115, -0.0063085253, -0.11293817, 0.28714395, 0.08302453, -0.297302), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.0018131305, -0.23274079, 0.28795394, 0.10479223, 0.017336998, 0.10140653, -0.01703538, 0.0018864989, -0.19448972, 0.06781925, 0.0072297496, 0.054331925, -0.056745283, 0.0031926096, 0.08508613, -0.076465875), target2);\n\ttarget2 = MulAdd(a3, MF4x4(-0.06579661, -0.074197, -0.07872732, -0.04833768, 0.07948355, 0.10680971, -0.038892176, 0.0026479303, -0.05120215, -0.005223787, 0.013828104, 0.033628467, -0.251052, -0.053964466, -0.04151976, -0.12170088), target2);\n\ttarget2 = MulAdd(b3, MF4x4(0.02224381, -0.11401214, 0.049397755, 0.1178245, 0.124475546, -0.014129338, -0.08712223, -0.110995345, 0.027189068, 0.14115846, 0.008039289, -0.077303566, 0.13120183, 0.088576116, 0.19419082, -0.19265574), target2);\n\ttarget2 = MulAdd(c3, MF4x4(-0.302041, -0.09488605, 0.10128198, 0.25093108, -0.05749319, -0.1325287, -0.07048078, 0.25168943, 0.24393974, 0.26709494, -0.005166187, -0.0858236, 0.098031975, -0.046012603, -0.025616428, -0.038455524), target2);\n\ttarget2 = MulAdd(d3, MF4x4(0.15295, -0.058367014, -0.09462144, -0.004685292, 0.061874785, 0.17379992, 0.10421289, -0.102156416, 0.07116128, 0.09785571, -0.08606482, 0.1615783, -0.10226774, -0.15573122, -0.17567602, 0.12711914), target2);\n\ttarget2 = MulAdd(e3, MF4x4(-0.08792466, 0.32314366, -0.040461652, -0.1960407, -0.11285709, -0.14666572, -0.070970505, 0.04230559, -0.05408487, -0.2794681, -0.4155402, 0.26639655, 0.13980015, 0.12434661, -0.02678858, 0.056679014), target2);\n\ttarget2 = MulAdd(f3, MF4x4(-0.124382794, 0.018727468, 0.20523487, -0.070906, -0.030757494, -0.10337054, 0.067943715, -0.039035156, 0.035588995, 0.14607283, -0.085760534, 0.19209209, 0.13216998, 0.16539834, 0.010052314, -0.022481022), target2);\n\ttarget2 = MulAdd(g3, MF4x4(0.021054843, -0.15636541, 0.011583453, -0.10839945, -0.05794076, -0.053845506, 0.0063711316, 0.09400282, 0.11037196, -0.11023954, 0.07765479, 0.0063296715, -0.100950494, 0.20135373, 0.048100784, 0.1047337), target2);\n\ttarget2 = MulAdd(h3, MF4x4(0.019294975, 0.10017591, -0.022420274, -0.024994979, 0.033118278, -0.0335541, -0.099411234, -0.051065058, 0.04019899, -0.09789642, -0.21099539, -0.051657237, 0.0537393, 0.22397718, -0.09253929, 0.0056816903), target2);\n\ttarget2 = MulAdd(i3, MF4x4(0.13451837, -0.31405422, -0.02294345, -0.09470789, 0.011980906, -0.29736918, 0.04785323, 0.008854729, 0.0064198305, 0.1608248, -0.0063040988, 0.015922181, 0.058713753, 0.19405961, -0.0074991966, -0.056430623), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.030276824, 0.051418643, -0.033852484, -0.04178643, -0.09626818, 0.06430078, 0.18420494, 0.21067473, -0.20206925, 0.039089408, -0.20179388, 0.04502135, -0.079114124, -0.18990965, 0.03482791, -0.20353125), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.12883389, 0.01503085, 0.07740192, -0.021361377, -0.021194257, -0.2965198, 0.038358267, 0.08110664, -0.122530565, 0.002974726, -0.11742695, -0.05976367, 0.011006546, -0.0676137, 0.109357566, -0.09688377), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.22074296, 0.019343395, 0.17098527, 0.21736804, -0.15512446, 0.1447234, -0.1344856, 0.051509894, -0.021283794, -0.017791564, -0.023386735, 0.15375026, 0.05583616, -0.22131743, 0.010143341, -0.113710396), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.12376125, 0.086540736, -0.07823014, -0.11477249, 0.071970075, 0.04002691, 0.09260781, -0.16808367, -0.07891094, -0.28984514, -0.0030400122, 0.20933042, -0.09442383, 0.27100945, 0.03393376, -0.025617108), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.041222293, 0.012311568, 0.13222927, 0.15650855, 0.024765523, -0.055989124, -0.02946687, -0.0066036643, -0.12604281, -0.16414027, -0.22830643, 0.0840456, -0.19442934, -0.00939128, -0.005971656, 0.027085181), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.23906162, -0.04003579, 0.16445775, 0.2578306, -0.08858488, -0.0009076812, 0.05893361, -0.07622802, 0.07551978, 0.16221073, -0.08075802, -0.066482686, -0.082238205, -0.07318114, -0.02384466, -0.008769857), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.034418013, -0.04310424, 0.06940784, -0.040061995, -0.196672, 0.059436113, 0.18781166, -0.087357335, 0.17683987, -0.11832282, 0.0704508, -0.080166645, -0.10043135, 0.029797623, 0.045275707, -0.00091474655), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.13774432, 0.039946273, 0.010250749, -0.064292066, -0.033921324, 0.086792484, -0.06556751, 0.16063036, 0.040354285, -0.005781792, -0.06043568, 0.0456958, 0.057671502, -0.09200769, 0.05852994, -0.038263924), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.0722641, -0.15417133, 0.0428391, -0.11669595, -0.15181269, -0.14444157, -0.05888602, -0.04931457, -0.024105387, 0.04452374, -0.19607021, 0.040299945, 0.023721624, 0.009294535, -0.12308105, -0.032013766), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.13982506, 0.008242153, 0.007985137, -0.028785944, -0.045674372, 0.03811196, -0.006431167, 0.042959616, -0.14530565, -0.13717386, 0.15736887, -0.070945315, 0.16792078, -0.057526443, 0.11027599, -0.062423922), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.33995095, -0.06725867, 0.25568435, -0.1156066, 0.0073083406, 0.09118932, -0.036027674, 0.14834408, 0.0076618423, 0.048706416, -0.11109869, 0.014119505, -0.16117008, 0.055889986, 0.021106627, 0.0494479), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.058088336, -0.05898053, 0.28952774, 0.06457457, 0.06820624, 0.031307437, 0.040132232, -0.12814572, 0.034467205, 0.16643257, 0.13826352, -0.050465748, -0.082429856, 0.028516805, 0.10005895, -0.17591912), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.17962062, 0.050080433, 0.115288205, 0.07467281, 0.07438551, 0.111036986, -0.09742873, -0.23408481, -0.09974166, -0.12665741, -0.04540029, -0.03346997, 0.089152135, 0.082195945, 0.28275734, -0.24630727), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.11799736, -0.06625111, 0.091244, -0.13702978, 0.055218194, -0.031087862, 0.06133677, -0.27246916, -0.15978532, 0.19715077, 0.051257942, 0.036602553, 0.054990616, -0.25717, 0.12677813, -0.0406006), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.043816347, -0.3335301, 0.19126506, -0.01086813, 0.075816035, 0.15178275, -0.07246076, -0.19391762, 0.07836278, 0.12452172, 0.09029487, -0.034167152, -0.061805293, -0.08850912, 0.08531079, 0.14093879), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.120683454, 0.02466898, 0.19501889, -0.047962803, 0.2524244, -0.04647245, 0.23329985, -0.437865, -0.11040008, 0.05536788, 0.094667554, -0.029751923, -0.04589413, -0.24310234, 0.27122453, 0.010039841), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.17811799, -0.05787477, 0.10678799, -0.28424516, -0.11051176, -0.0372708, 0.20203365, 0.10050222, -0.1243157, 0.20707713, 0.14385784, 0.025799723, 0.028424745, -0.06201256, -0.1112155, 0.17677756), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.06334935, 0.14396226, -0.121362604, -0.30631876, -0.17723008, -0.041447658, 0.03672539, 0.1550316, 0.113435954, 0.13270019, 0.04389676, 0.016865736, 0.0027031328, 0.107943274, -0.08071779, -0.007290789), target2);\n\ttarget2 = MulAdd(na3, MF4x4(-0.0327075, -0.02185086, -0.00093145896, -0.009849336, -0.06994606, -0.009004001, -0.2962301, -0.093587525, 0.055827085, 0.15590863, -0.1348263, -0.030768193, 0.1539244, 0.056906786, -0.046778735, 0.1293399), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(0.060477, 0.10025322, 0.034794286, -0.15556674, -0.046868246, -0.06774045, -0.0046042744, -0.028093262, -0.14673153, 0.0014603435, -0.17085737, 0.09433877, 0.06585415, -0.17430365, -0.09225927, 0.18637276), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(-0.0829445, -0.046446815, 0.01044717, -0.08179017, -0.106227055, -0.07285646, -0.118698135, -0.08691134, -0.19350386, 0.18079466, -0.0896787, -0.0054066014, 0.044900116, -0.07164249, 0.03728663, -0.071337156), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(-0.091456026, 0.0829187, 0.2184223, 0.12404674, 0.0535281, -0.0046089985, -0.1367499, 0.14318149, -0.13627648, 0.008214974, -0.035714064, -0.11221228, -0.0848333, 0.054274652, 0.12799235, -0.12235648), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(0.015441998, -0.16407311, 0.29637286, 0.15780787, 0.100573234, -0.023377284, 0.19050701, 0.14114772, 0.1021301, 0.30314055, 0.08799963, 0.11630563, -0.28035656, 0.10020031, -0.009994972, -0.16998753), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(-0.053246386, 0.15038243, -0.020114498, 0.019207323, -0.4546607, 0.048940018, 0.122429796, 0.14951369, 0.09936216, -0.13126904, -0.15678225, 0.101906285, 0.017061174, -0.17944153, -0.12741113, -0.13633935), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(0.11258541, -0.056183632, -0.10542277, 0.048327565, -0.10695888, 0.021128727, -0.0025440033, -0.14460813, -0.2421658, 0.04799532, -0.025316745, 0.111919515, 0.133215, -0.23335934, -0.037506737, -0.12447751), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(0.035608087, -0.17302564, 0.07696709, -0.18077038, -0.02534479, 0.035865046, 0.15503906, -0.07042084, 0.37430316, 0.2688597, 0.23763078, 0.26458314, 0.22778325, 0.13661247, 0.032626268, 0.10627844), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(-0.14816584, 0.08924656, -0.02333901, 0.0735485, -0.17011848, -0.059921533, 0.045324218, 0.026974149, 0.15702479, 0.0067652813, 0.08584165, 0.09428486, 0.035495974, -0.07220769, -0.0524813, -0.008241412), target2);\n\t\n\tMF4 target3 = { 0.11033049, -0.073737, -0.013228117, 0.01553484 };\n\ttarget3 = MulAdd(a1, MF4x4(0.051828694, -0.14444938, -0.06172656, -0.092529796, 0.0032331774, 0.0505327, -0.092972204, 0.054304235, 0.04113735, 0.05488947, 0.27173808, 0.008734756, -0.037090253, 0.11106639, 0.1864697, -0.1308939), target3);\n\ttarget3 = MulAdd(b1, MF4x4(-0.0292121, 0.09739149, -0.057740077, -0.043211482, 0.00057832256, 0.122456014, 0.14004166, -0.22281875, -0.00958859, 0.012818551, 0.21724443, 0.038053658, 0.11917748, -0.0147661995, 0.15326285, -0.007842389), target3);\n\ttarget3 = MulAdd(c1, MF4x4(0.028475946, -0.044710767, 0.120977476, 0.024894554, 0.034071486, 0.002889187, 0.0886379, -0.13210039, 0.0254021, -0.10800576, -0.0154256895, 0.07889771, -0.026208088, -0.1735971, 0.12414827, 0.06541947), target3);\n\ttarget3 = MulAdd(d1, MF4x4(0.15367964, -0.016319191, -0.087988645, 0.21592557, -0.13575394, 0.07606312, 0.17890929, 0.06405638, -0.15215087, -0.31830072, -0.070441514, -9.058544e-06, 0.15286519, -0.07961882, 0.0051650982, 0.05743661), target3);\n\ttarget3 = MulAdd(e1, MF4x4(0.14879431, 0.09249706, -0.08179524, 0.08862426, -0.04546735, 0.052125804, 0.10511877, -0.036810514, 0.19695859, 0.06919595, -0.041425765, 0.05109113, 0.16108315, -0.0006357406, -0.036482725, -0.000831584), target3);\n\ttarget3 = MulAdd(f1, MF4x4(-0.14299406, 0.24442554, 0.08385988, -0.0018431129, 0.025425488, 0.043124236, -0.19599897, 0.2500142, 0.084921256, -0.064991206, -0.04332563, -0.20997004, -0.06825186, 0.11137002, -0.08090301, -0.06958994), target3);\n\ttarget3 = MulAdd(g1, MF4x4(-0.17347668, -0.09592853, -0.051422764, -0.15347266, 0.19709691, 0.012748645, 0.11250177, 0.020625748, -0.12617995, -0.09576706, 0.121928014, -0.052528545, 0.06992809, -0.060379576, -0.13869223, -0.05584254), target3);\n\ttarget3 = MulAdd(h1, MF4x4(0.040104184, -0.12147194, -0.04430197, 0.13594869, 0.09909328, 0.12928483, -0.2334865, 0.11032421, 0.064912125, -0.010493585, 0.06800239, 0.18326257, 0.019329162, -0.09916547, -0.11674449, 0.03267864), target3);\n\ttarget3 = MulAdd(i1, MF4x4(-0.07757802, -0.018029094, 0.029337326, 0.29172876, -0.03394624, 0.02624461, -0.2849472, -0.27765557, -0.04780892, -0.019495687, -0.11718942, -0.03025127, -0.008503852, -0.076533996, -0.02296907, 0.068641014), target3);\n\ttarget3 = MulAdd(a2, MF4x4(0.13043757, -0.06434652, -0.0690028, -0.033568893, 0.17211302, -0.029193658, 0.12456035, -0.11193319, -0.0035818655, -0.2563802, -0.12287091, 0.10766433, -0.04711406, -0.08852275, 0.0153720435, -0.14872602), target3);\n\ttarget3 = MulAdd(b2, MF4x4(-0.080712505, 0.11759175, -0.11220247, 0.10730683, 0.06418219, 0.00800814, -0.028890526, 0.1441286, 0.03056378, -0.0035148377, -0.120093554, 0.043768104, 0.07286328, -0.021130785, 0.09223498, 0.20331676), target3);\n\ttarget3 = MulAdd(c2, MF4x4(-0.09102653, -0.10116414, 0.15046883, 0.28877532, -0.011975523, -0.0068613496, -0.09103339, 0.11455707, 0.007323278, 0.08825653, -0.054251585, -0.14907618, -0.00018906803, -0.08488728, 0.036797076, -0.12455349), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.04010406, 0.024046177, -0.20183066, -0.06970149, -0.10715107, -0.077962436, 0.32845956, -0.2622872, -0.15997723, -0.07157501, -0.09492247, -0.00996072, -0.067652985, -0.16896474, 0.06192714, 0.019690538), target3);\n\ttarget3 = MulAdd(e2, MF4x4(-0.10179747, -0.10023532, -0.10475995, -0.15501128, 0.017811656, 0.027858434, -0.11646674, 0.08104398, -0.12454491, 0.032985296, -0.09229711, 0.0909355, 0.0021391874, -0.051617827, -0.11611242, 0.036069512), target3);\n\ttarget3 = MulAdd(f2, MF4x4(-0.14753185, -0.020901026, -0.0029391565, -0.14624536, -0.09374949, -0.049715783, 0.1951781, 0.22286539, -0.013287656, 0.0830378, -0.2975549, -0.13074464, -0.010272348, 0.032849077, -0.097859964, -0.1562913), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.14641422, 0.13483211, -0.0438145, 0.08620407, 0.11926978, -0.15772878, 0.17547028, 0.15418763, 0.0097786365, 0.016791794, 0.057482373, -0.0716323, -0.061063405, 0.13135311, 0.1040161, 0.1688627), target3);\n\ttarget3 = MulAdd(h2, MF4x4(0.11255645, 0.08840791, 0.07584055, -0.09523696, -0.1154477, -0.085963145, -0.075319275, -0.05898237, -0.14236066, 0.058508113, 0.078278095, 0.07180024, 0.19020182, 0.027219167, -0.11044013, -0.1411698), target3);\n\ttarget3 = MulAdd(i2, MF4x4(0.1250712, -0.09155498, 0.11040472, -0.28928515, 0.06875818, -0.07716765, 0.07982134, 0.22709553, 0.08608979, 0.02659528, -0.050615177, -0.054662008, -0.016789312, 0.095084675, -0.20973809, -0.14231291), target3);\n\ttarget3 = MulAdd(a3, MF4x4(0.009871057, 0.07234809, -0.061542578, -0.2561031, 0.17938578, 0.059759673, -0.0533506, -0.15160522, -0.06667153, 0.022478178, -0.078531526, 0.01727445, 0.032124806, -0.09959757, -0.08871009, -0.0010295251), target3);\n\ttarget3 = MulAdd(b3, MF4x4(-0.07400921, 0.009798935, 0.06958411, -0.14588043, 0.045884695, 0.029824348, -0.08622057, -0.03112675, -0.050385453, 0.12655865, -0.06863022, -0.21982339, -0.06292096, -0.014440884, 0.06755428, -0.114989646), target3);\n\ttarget3 = MulAdd(c3, MF4x4(0.054011043, -0.26510096, 0.21961565, 0.05448362, 0.06296498, -0.07182228, -0.09567859, -0.024238275, 0.005022228, 0.1626434, 0.00019249211, 0.073934935, 0.02381926, 0.025067188, -0.10400833, -0.10235642), target3);\n\ttarget3 = MulAdd(d3, MF4x4(0.019573225, 0.016258147, 0.014888165, -0.09950712, 0.052801423, 0.18720426, 0.13194256, -0.030186977, -0.052970573, -0.20545387, 0.0477203, 0.12807603, 0.106122404, 0.013091209, 0.037285265, -0.17009702), target3);\n\ttarget3 = MulAdd(e3, MF4x4(-0.052872628, 0.0067698397, -0.04057391, -0.10654882, -0.08066677, -0.11518657, 0.063243456, 0.108404346, 0.006817193, -0.08499581, -0.16265164, -0.019080937, 0.27572608, -0.02719708, -0.10466762, 0.006535063), target3);\n\ttarget3 = MulAdd(f3, MF4x4(-0.004304222, -0.23885699, 0.0007060991, -0.011653924, -0.058662247, -0.10310051, 0.19861554, -0.124969624, 0.08919569, 0.062485468, -0.07952577, 0.06357056, 0.13038754, -0.10383543, -0.12508194, 0.07526947), target3);\n\ttarget3 = MulAdd(g3, MF4x4(0.034628194, -0.1459473, -0.12843482, -0.16211623, 0.18986839, -0.021202087, 0.030887406, 0.16012087, -0.07651755, 0.25390217, 0.100328274, -0.18489215, -0.11211924, -0.18655026, -0.12336867, 0.03715863), target3);\n\ttarget3 = MulAdd(h3, MF4x4(0.24926607, -0.12733914, -0.16163528, -0.18980862, 0.026140725, 0.030769283, -0.08602958, -0.011363779, -0.18870075, -0.08782851, -0.019595576, 0.15859611, 0.14101227, -0.23768859, -0.11449071, -0.21400326), target3);\n\ttarget3 = MulAdd(i3, MF4x4(-0.014345643, 0.03152331, 0.14303848, 0.068378784, -0.023709042, 0.009476213, 0.03332845, -0.043729182, -0.16312705, 0.18575506, 0.045167383, 0.089232035, 0.12431053, -0.019391764, -0.09807002, -0.19098805), target3);\n\ttarget3 = MulAdd(na1, MF4x4(-0.0027074527, 0.08881943, 0.021618785, 0.17202215, -0.023361688, -0.12384613, 0.1257001, 0.034937408, 0.050526705, -0.21945108, -0.23475797, 0.1385765, 0.03910722, 0.08761758, -0.06185295, 0.16879226), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(0.01759655, 0.07489585, 0.06413278, -0.16355684, 0.021823732, -0.19263723, -0.021956496, 0.07322703, 0.106124505, 0.17441194, 0.016513938, -0.09815339, -0.12467256, -0.036076445, -0.09139147, -0.09947436), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.027052518, -0.059014272, 0.14797378, 0.21370119, 0.033306625, 0.070152596, 0.0052737673, 0.28024423, 0.040666968, -0.069734804, 0.07771406, 0.1577554, 0.03728327, -0.01140819, 0.056443825, -0.08787925), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(-0.24540152, 0.0015005039, 0.020643666, -0.3483438, -0.11493903, -0.13617486, -0.0063642715, -0.10733139, 0.12702248, 0.20147271, 0.031689152, 0.07603208, 0.15610643, 0.16600998, -0.041932072, -0.087021336), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(0.15945607, -0.019792518, 0.16893104, 0.047684517, -0.08704263, 0.019054385, -0.13532451, 0.07722914, 0.06000842, -0.053279165, -0.041631456, 0.021691417, -0.05814861, 0.0014272713, -0.2269319, 0.0764104), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(-0.084321365, -0.2361291, -0.1518955, -0.15901338, -0.06990816, -0.024734944, 0.06835628, -0.21718912, -0.12289749, -0.025446652, -0.15737066, -0.010520588, 0.12629907, -0.06181239, -0.0011575993, -0.004076976), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(0.012631871, 0.023027385, 0.0036474608, 0.02950606, -0.13008296, 0.098362945, 0.04146146, 0.17968152, -0.15123938, 0.09731617, -0.014078934, 0.05166318, -0.009141391, 0.08204638, 0.07045137, -0.030674614), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(0.109709226, -0.02842136, -0.07762395, -0.010807984, -0.17060421, 0.0826962, 0.03507386, -0.12764347, 0.12828389, -0.051255893, -0.124972954, -0.16426642, -0.15884088, 0.07268723, -0.0030184009, -0.009351197), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(-0.05924065, 0.109954804, -0.015081119, -0.30813795, 0.049611736, -0.09356052, 0.14393319, 0.2197319, 0.04127852, -0.083522744, -0.20068535, -0.1432542, 0.061216276, 0.040896352, -0.0010942877, 0.1074572), target3);\n\ttarget3 = MulAdd(na2, MF4x4(-0.043747675, -0.09601221, -0.029208777, -0.3020336, -0.18261817, -0.076463126, 0.02404145, 0.021356242, -0.115703, 0.18811412, 0.01355199, -0.18233287, -0.164117, 0.10521931, 0.033724364, 0.045072973), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(-0.14719059, -0.12931113, 0.15695307, -0.16798888, 0.062653124, -0.12612487, -0.12454781, -0.084084496, 0.023468291, 0.027891247, 0.0042489907, -0.1077923, -0.005104954, -0.121897295, 0.08160336, 0.23735033), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(-0.06651707, -0.15773214, -0.016145034, -0.1297115, -0.05631942, 0.19243148, -0.08536315, -0.2202384, 0.024619251, 0.09842469, -0.060476214, 0.1606162, -0.06982684, 0.27481422, -0.0032873556, -0.055477414), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(0.013625612, -0.11602345, 0.13228852, -0.01016997, -0.113034405, 0.12990026, 0.008144483, 0.28583318, 0.0018612862, 0.19464394, 0.06077795, -0.05083094, -0.1419072, 0.30847812, 0.16012973, -0.043837596), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(0.25535858, 0.047635876, 0.20499952, 0.14458135, -0.2067339, 0.18970652, 0.18168713, 0.089201, -0.1371205, 0.09543299, -0.048719935, -0.21094483, 0.06297616, -0.14864779, 0.24678773, 0.023468606), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(-0.024188349, 0.049452, 0.119040206, 0.19403425, 0.15611161, 0.20774378, -0.10905696, -0.16743217, -0.067075364, 0.02012775, 0.031936057, 0.16447093, -0.14523768, 0.12793602, 0.21358742, 0.1580285), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(0.12834404, -0.23567453, 0.0594437, 0.1590165, 0.04364869, 0.092662945, 0.19947445, 0.13371125, -0.030953676, 0.072429836, 0.00064696936, 0.05223404, -0.18505633, -0.038344953, 0.1609896, -0.027951878), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(0.1615281, 0.02925065, -0.110526, 0.002472878, 0.15692636, 0.17720695, 0.08651831, -0.2926173, 0.039506726, 0.08039181, -0.125379, -0.112809196, -0.018160323, -0.15315212, 0.05300267, -0.12539586), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(0.045024972, -0.026277857, -0.13403505, -0.082753636, -0.014246987, 0.08158673, -0.17446561, -0.12912557, -0.03281638, 0.12861331, -0.048045747, 0.008813668, 0.13716908, -0.1772549, 0.12983966, 0.28312683), target3);\n\ttarget3 = MulAdd(na3, MF4x4(0.06964638, 0.0047901543, 0.09235384, 0.24047932, -0.0034995198, 0.1894994, 0.044509877, 0.08263613, 0.22042292, 0.0068810997, -0.08542091, 0.13489819, -0.017957956, -0.049517035, 0.11637685, -0.070710674), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(0.005409427, 0.2764383, 0.100069076, 0.0025022945, 0.042582463, -0.07622942, 0.1427979, 0.12527353, 0.07857632, 0.110723145, -0.091726854, 0.18400952, 0.08911038, -0.11033729, 0.025358237, -0.011007877), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(0.041533705, -0.038725346, 0.09127384, 0.10426011, -0.02070303, 0.0878809, 0.15809457, -0.009334662, -0.049823076, 0.11527338, -0.06646191, 0.03342348, 0.07330054, 0.011010275, 0.16572441, 0.059434716), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(0.01884174, 0.024791235, 0.063296616, -0.042403292, -0.12980534, -0.019906277, -0.18554951, -0.09545456, 0.17291631, 0.22148399, -0.093014, -0.07421902, -0.15626103, -0.13463756, -0.08697246, 0.18189901), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(-0.027780509, 0.061554506, 0.18972316, 0.017942533, -0.012191195, 0.047828108, 0.102957085, -0.15932114, -0.13597767, 0.2235027, 0.13829249, 0.11061467, -0.20257929, -0.062691554, 0.06993067, 0.018168231), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(0.0038817637, 0.053267647, -0.1002687, -0.1239985, 0.04858564, 0.059892915, -0.10344583, 0.24931516, -0.02322075, -0.07354648, 0.20486975, 0.0147269, 0.09117062, 0.0001810227, 0.0011455072, -0.1166342), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(0.026433034, -0.010127757, 0.1411767, 0.12108788, -0.16191758, -0.06574798, -0.027283505, 0.052705772, -0.09186127, -0.05113535, -0.008512441, 0.06438505, 0.07150241, 0.096780665, 0.14615399, 0.043888208), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(-0.07171402, 0.053826947, 0.1817855, 0.15776771, 0.020122573, 0.014001945, 0.107657574, 0.06755519, -0.16229364, 0.025698826, 0.19443901, -0.18386869, -0.112747826, 0.19832937, 0.032073986, 0.07755969), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(-0.0017903978, 0.017006857, -0.154056, -0.12544118, -0.17143774, 0.11694203, 0.046639796, -0.13699242, 0.1032892, -0.16337542, 0.20032221, 0.30423567, -0.09217524, 0.03736137, 0.06391171, 0.18111771), target3);\n\n\tMF3 target4 = tex7.SampleLevel(sam, pos, 0).rgb;\n\ttarget4 = MulAdd(e1, MF4x3(0.060458526, -0.0033674864, -0.006985535, -0.013925546, 0.051077038, 0.053856038, -0.033647064, 0.043235198, 0.05311577, 0.0391791, -0.044376004, -0.054064214), target4);\n\ttarget4 = MulAdd(e2, MF4x3(0.0069859014, -0.0050665336, -0.010343517, -0.027551029, 0.049856182, 0.058316905, 0.0121670095, -0.013107907, -0.0151846, 0.007648614, -0.0051277154, -0.0053846613), target4);\n\ttarget4 = MulAdd(e3, MF4x3(0.06848036, 0.026777437, 0.024801696, -0.08711668, 0.049429595, 0.067019165, -0.09006778, -0.042166695, -0.02230536, -0.048024856, -0.020088708, -0.009932858), target4);\n\ttarget4 = MulAdd(ne1, MF4x3(-0.05171447, 0.0029948682, 0.014913949, 0.02287364, -0.042476606, -0.052956346, 0.02762833, -0.044026252, -0.056759696, -0.0519502, 0.047626793, 0.06422155), target4);\n\ttarget4 = MulAdd(ne2, MF4x3(-0.0031128856, 0.013134638, 0.021534251, 0.049189907, -0.039677586, -0.057255603, -0.009908353, -0.0013683038, 0.0028079485, 0.0002268831, 0.012356764, 0.009817244), target4);\n\ttarget4 = MulAdd(ne3, MF4x3(-0.04058634, -0.01822148, -0.014306331, 0.107378654, -0.04138371, -0.058573496, 0.03701269, -0.009420217, -0.02310707, 0.039931968, 0.001769326, -0.007929419), target4);\n\n\ttex4[gxy] = target1;\n\ttex5[gxy] = target2;\n\ttex6[gxy] = target3;\n\ttex8[gxy] = MF4(target4, 1);\n}\n\n//!PASS 7\n//!DESC Conv-4x3x3x24\n//!IN tex4, tex5, tex6, tex8\n//!OUT tex1, tex2, tex3, tex7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex5.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex5.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex5.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex6.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex6.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex6.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { -0.12162919, -0.00032382424, 0.025486631, -0.09447538 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.0041438183, 0.087629646, 0.02373779, -0.008705929, -0.06460613, -0.079614826, 0.20589171, -0.21300887, 0.06673036, -0.14301205, 0.0005478004, 0.10480311, 0.16944528, -0.023095177, -0.04593122, 0.031710908), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.24273445, 0.1350743, -0.050578117, -0.006424492, 0.024859063, 0.017022807, -0.054993033, -0.13135757, -0.11061301, 0.0006009131, -0.012896671, -0.029120278, -0.09564777, -0.15695906, -0.008574818, 0.0022726357), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.11845177, 0.044411838, -0.02478517, -0.016679568, 0.2842885, 0.05566886, -0.020992488, 0.33000243, -0.045738284, -0.08624307, -0.0029711786, 0.06983461, 0.16860297, -0.08496602, 0.0026587378, 0.1191108), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.08942806, -0.13266312, 0.050555114, 0.044336855, 0.04668655, -0.17912517, 0.09872363, -0.05689603, -0.04764076, 0.09976931, 0.026714336, -0.12177113, 0.10121553, 0.19926491, -0.013922513, -0.062807985), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.11948707, -0.19019963, -0.09910906, 0.015228854, 0.19573943, 0.18543078, 0.37633705, 0.0899833, -0.058247276, -0.06500262, -0.0968551, 0.3980007, -0.13930885, 0.031145731, 0.18868047, 0.20646492), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.27454132, 0.037422657, 0.060829625, -0.15062498, 0.22120185, -0.020640798, -0.15796806, 0.30988604, 0.117011115, -0.11581356, -0.105670854, 0.34526885, 0.09709533, -0.1335589, -0.061150175, -0.023490202), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.0064297495, 0.053259544, 0.061699186, -0.1023013, 0.13206881, 0.08598005, 0.042804673, -0.036392808, -0.022715596, 0.3187674, -0.043576453, 0.089301124, 0.010875903, -0.045669887, 0.13546628, -0.041321605), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.033168443, 0.07130571, -0.06795218, -0.094012216, 0.09050034, -0.16879193, 0.18427128, 0.19835915, 0.014528693, 0.22958101, -0.012955512, 0.14033306, 0.10309811, 0.03351618, -0.100021325, -0.026367364), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.40170196, -0.10989097, 0.06447425, -0.19903958, 0.030508196, -0.09201532, -0.1493947, -0.0039443234, 0.16646437, -0.004893318, 0.030999044, 0.22652404, -0.1360666, -0.14109057, -0.124136284, -0.07020125), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.35415915, 0.078341804, -0.20908163, -0.032414813, -0.17489177, -0.10121671, -0.0123754265, -0.0074867755, 0.20203647, 0.2981116, 0.4581744, -0.10773967, -0.14040758, -0.1311706, 0.2421585, -0.05221277), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.32388586, 0.121117495, 0.17030708, -0.09672408, 0.10174964, -0.089880064, -0.053550195, 0.07492085, 0.36688468, 0.39096692, 0.27509093, -0.09113504, 0.18473786, -0.030729344, -0.022813018, -0.07951988), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.10802985, -0.09921729, -0.083578154, 0.09941307, 0.15204535, 0.0048476397, 0.037141923, 0.072919704, -0.039613035, 0.0011554313, 0.029029889, -0.115339264, -0.2606713, 0.017305905, -0.032651994, -0.1710926), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.09530024, 0.08035671, -0.094462946, 0.04531403, 0.116854094, -0.039871104, 0.101754196, 0.07071469, -0.09344735, 0.2224399, 0.31438616, -0.1031509, -0.087050706, 0.023629284, 0.30222768, 0.087091036), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.32540318, -0.123871066, 0.09114808, 0.20059493, 0.13602751, -0.294147, 0.028020037, 0.10215196, 0.14379483, -0.08321783, -0.06476323, 0.039079703, 0.11145182, 0.047562934, -0.0320396, 0.17505427), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.117524795, 0.063353635, -0.08187684, -0.02796676, 0.11098208, -0.02517451, 0.052513797, -0.18859608, -0.25639486, 0.17382553, 0.053182043, -0.09802817, -0.08900308, 0.021651518, -0.07654097, -0.111615546), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.12933804, 0.0012732261, -0.045028616, 0.06224205, -0.00047467486, -0.26893324, 0.14208493, 0.027069936, 0.16365767, 0.30192706, 0.23923144, -0.105405785, -0.0021433597, 0.14549361, 0.05767389, -0.10113342), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.07045147, 0.13409013, 0.023928098, 0.045560613, 0.103115976, -0.066133045, 0.12823656, -0.01629772, 0.13711633, 0.27451962, 0.12717873, -0.084038205, 0.12807854, 0.110353716, -0.06848678, 0.056276537), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.16927746, 0.111806795, 0.023252549, -0.12235242, 0.15292254, 0.061406262, 0.06284062, -0.11671832, -0.02885994, 0.12882869, -0.048748255, -0.14202079, -0.08404155, 0.03453428, -0.060811, 0.18254602), target1);\n\ttarget1 = MulAdd(a3, MF4x4(-0.011917425, 0.023498498, 0.0072831116, -0.05328629, 0.3426947, 0.08741361, 0.35501662, 0.045255594, 0.08008512, -0.002467051, -0.053357143, -0.05487847, 0.15113881, -0.050046794, -0.036305785, 0.06071048), target1);\n\ttarget1 = MulAdd(b3, MF4x4(-0.012859317, 0.06900528, -0.08498363, -0.08625659, -0.094864994, -0.04425656, -0.0071134693, 0.07542594, -0.08952303, -0.14963494, 0.115062006, 0.073727705, -0.06841927, 0.030572297, -0.060809616, -0.14095046), target1);\n\ttarget1 = MulAdd(c3, MF4x4(0.29680476, -0.070317306, -0.056082696, 0.27471995, 0.109471574, -0.012238972, 0.16928561, -0.12685184, -0.100722544, 0.116650775, 0.054211635, -0.06463175, -0.13047734, -0.070404656, -0.08516014, -0.11477897), target1);\n\ttarget1 = MulAdd(d3, MF4x4(0.058439, -0.1555504, -0.096580744, -0.024473842, 0.090628244, 0.04928509, 0.02740108, 0.0077335024, 0.026813101, 0.065165296, -0.059121966, 0.08125537, 0.16700324, -0.16615666, -0.14588222, 0.00048067764), target1);\n\ttarget1 = MulAdd(e3, MF4x4(-0.053213652, -0.16659884, -0.09036764, 0.010975479, -0.11077762, 0.11982606, 0.02579046, -0.13114569, 0.17622563, 0.023344778, 0.080385335, -0.08998645, -0.18493009, -0.048734408, 0.010119995, 0.12936613), target1);\n\ttarget1 = MulAdd(f3, MF4x4(-0.08402194, -0.16797844, -0.01022614, 0.09084325, 0.24871092, 0.13302508, -0.1210408, -0.04133277, -0.08691682, 0.02221635, 0.12621205, -0.15186077, 0.19762659, -0.10951936, -0.19129583, 0.21391307), target1);\n\ttarget1 = MulAdd(g3, MF4x4(-0.1687245, 0.16445398, -0.06853974, -0.086989194, -0.14615493, -0.009716202, -0.088772245, 0.13583103, -0.08530893, -0.09424376, -0.12971476, -0.02487141, -0.1094553, -0.04473294, -0.27410263, 0.043002244), target1);\n\ttarget1 = MulAdd(h3, MF4x4(0.03290918, -0.006952538, -0.12306263, 0.027640607, -0.025346387, -0.09620494, 0.116112545, 0.10227404, 0.03813908, 0.16176395, 0.47203362, 0.047157902, -0.10830938, -0.0019050312, 0.3620803, -0.069925636), target1);\n\ttarget1 = MulAdd(i3, MF4x4(0.0020446004, 0.16054538, 0.12809694, 0.0069585256, 0.11748204, -0.011759154, -0.12903488, 0.29380128, 0.21712495, 0.068177566, 0.059223883, 0.10227324, 0.3817376, -0.11270308, 0.0073445877, 0.21012813), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.199299, -0.040114038, -0.15849929, 0.0057354206, 0.19681698, -0.107773945, -0.04031948, 0.12012136, -0.22728048, 0.045971204, -0.12776788, 0.025411135, -0.2745491, -0.113476306, -0.015801609, 0.008725868), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.28201059, -0.069104806, 0.015983578, -0.103806704, 0.121411614, -0.09251776, -0.08143648, 0.21460037, -0.07785157, 0.101122744, 0.013448072, -0.023710037, -0.0358346, 0.1328456, -0.02043331, -0.06159447), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.06781508, -0.072408475, 0.083291575, 0.040496554, 0.04679973, 0.12705597, 0.06562132, -0.04938638, 0.21427007, -0.004967686, -0.08138591, 0.033386033, -0.048481766, 0.076613255, 0.21033032, -0.05062305), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.21217471, 0.13806537, 0.04606568, -0.13743265, 0.1806969, -0.085699804, -0.06342818, 0.1660658, -0.0026293355, -0.02128403, -0.0046605268, 0.008235694, -0.1171583, -0.24562967, -0.28818226, 0.12968758), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.17914222, 0.12522437, -0.14189677, -5.616129e-05, 0.21868588, -0.24404518, -0.12704019, 0.25512457, 0.11127853, 0.043490496, -0.0034969563, -0.1935092, -0.12618113, 0.15022264, 0.10067992, -0.15296605), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.059839483, -0.07332882, -0.0026434374, 0.22739156, 0.04557501, -0.03867732, 0.21676865, -0.058800567, 0.006406612, -0.011612252, 0.009007284, 0.059830897, 0.1614946, -0.07674529, -0.0385602, 0.39797354), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.1981268, -0.1361051, -0.06161995, -0.002189435, -0.0014002474, 0.126129, 0.023376467, 0.09703216, 0.10666224, -0.23168142, -0.018159337, 0.042339746, 0.12584367, -0.011922057, 0.10902402, 0.15436263), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.0027595635, -0.10197207, -0.034429558, 0.06667168, 0.33573776, -0.099396594, -0.07997797, 0.08387646, 0.0951511, -0.16234699, -0.14867416, 0.00735437, -0.09362014, 0.0664804, 0.27731436, 0.37119982), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.2548695, 0.028097544, -0.0022558135, 0.026973823, 0.1884029, -0.07246545, 0.21642277, 0.026800772, -0.19520886, -0.0009553605, 0.0062482627, -0.16592918, 0.48447585, 0.086303264, -0.05490935, 0.378503), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.1574428, 0.035142746, 0.079227954, 0.100714244, 0.11136245, 0.11895534, 0.009833678, -0.001039115, -0.069387674, -0.010426503, -0.10678969, 0.101909705, -0.031729374, 0.15894724, -0.23622003, -0.011815657), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.17458418, -0.120001495, 0.09203402, -0.002166517, 0.0031753816, 0.12831944, 0.16465144, -0.06330301, -0.24267045, -0.12281286, 0.052246343, 0.02494283, -0.18964235, 0.058346782, 0.0025673895, -0.01121613), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.115957834, -0.060228895, 0.009079297, -0.040949136, 0.014297083, 0.036444042, 0.12076215, -0.1402084, 0.09574682, -0.06670408, 0.029599207, 0.04741757, 0.01102373, -0.05027519, 0.13449037, -0.099299684), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.029986456, -0.045808725, -0.05172542, -0.10101369, 0.03663162, 0.039696075, -0.08842631, -0.117827855, 0.1347963, -0.007392197, -0.05730133, -0.04402969, 0.13403495, 0.28114837, 0.17730127, -0.07764935), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.34972468, 0.006863505, -0.068723604, -0.30767044, 0.12904535, 0.0763381, -0.037620995, 0.028365362, -0.08700267, 0.2257665, 0.14819853, -0.16082688, 0.0929386, -0.0062676766, 0.17218679, -0.16327891), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.17909175, -0.09134105, -0.0057606776, -0.083825834, 0.1443505, 0.1877781, 0.02841784, 0.1146964, 0.3169764, 0.018749984, 0.19640554, -0.0014817682, -0.27608246, -0.080467306, -0.13688186, -0.06578604), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.02515703, -0.03203328, 0.06439871, -0.06689986, -0.004256959, 0.17631707, 0.042148568, -0.088977, 0.07314368, -0.18564323, -0.11051338, -0.032011528, 0.3711881, 0.495717, 0.21411352, -0.0066381986), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.05550901, 0.06970293, -0.06802052, -0.022730853, 0.0143414615, 0.096654266, -0.045230158, 0.03669965, -0.08298829, -0.1573773, 0.12953721, -0.042050414, 0.04308049, 0.11458007, 0.0072063627, -0.18453878), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.16849747, 0.051144414, 0.020992253, -0.09341655, 0.05105659, 0.042700652, -0.06062117, 0.13699457, 0.2397991, -0.009917461, -0.059426248, 0.09855892, -0.28842947, 0.1404379, -0.022812406, -0.23883702), target1);\n\ttarget1 = MulAdd(na3, MF4x4(0.10231295, -0.05687462, 0.05454633, 0.1353426, 0.1760176, -0.11181645, -0.31677356, 0.06983046, 0.13605112, 0.17754814, 0.3348445, -0.1652707, -0.061019715, 0.1773025, -0.30495015, 0.11278704), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(0.13603285, 0.10336861, -0.023782251, 0.13608527, -0.4052799, 0.14841305, -0.25663885, -0.012108956, 0.28822663, 0.04447834, -0.05276655, -0.18212605, -0.20188917, 0.10997185, 0.06183931, -0.055857945), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(-0.2237108, 0.24488361, 0.18851626, -0.07019121, -0.021184865, -0.0499757, 0.026765132, -0.09804875, -0.011333142, -0.108678274, 0.040759776, -0.037615996, 0.14195605, -0.17333975, 0.09601836, 0.14565407), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(0.12259593, 0.27562442, 0.24215461, 0.14960998, 0.08186383, -0.010550085, -0.019250091, -0.014648717, 0.14972208, 0.14603175, 0.10073407, -0.1225431, 0.1675907, 0.038280413, -0.06087625, 0.0130648045), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(0.30968392, 0.11772451, -0.08816913, 0.12534001, -0.050786596, -0.21509898, -0.04253493, -0.04734682, 0.13719988, -0.09571686, -0.3094301, -0.08568065, -0.10093176, 0.024763435, 0.18954168, -0.227629), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(-0.22520582, 0.18443918, 0.14025666, -0.18477283, -0.12125983, 0.010999684, -0.0024025543, 0.24120031, -0.13416757, 0.01567192, -0.013440386, 0.17282273, 0.16098748, -0.02793626, 0.15618294, -0.0131627675), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(0.23410907, 0.019564115, -0.0076426617, -0.09377979, -0.47939178, -0.06636784, -0.0011904492, -0.09345677, -0.14794281, 0.25343522, -0.21156238, -0.01817268, 0.12250443, -0.0032213917, -0.19294205, 0.026571818), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(-0.066518046, -0.011708588, -0.007350381, -0.16976248, 0.09265956, 0.08236158, 0.12594578, 0.021188073, -0.2299054, -0.12767331, -0.098674, 0.035027504, -0.1722649, -0.15037538, 0.037455063, -0.027518287), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(-0.040520877, -0.17789118, 0.0535865, -0.15534161, 0.09352957, 0.11459578, -0.15315403, 0.04562035, -0.0015360791, 0.047871828, -0.021276174, 0.35346803, -0.10936083, 0.057735037, -0.089098595, 0.0057320776), target1);\n\t\n\tMF4 target2 = { 0.091157734, 0.06337161, 0.09025765, 0.07787731 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.024318032, 0.062261496, 0.028226431, 0.063416876, -0.122350864, -0.0113668, 0.061698295, -0.22892742, -0.21282825, -0.30799037, -0.020646222, -0.21302511, 0.050188534, -0.03943688, -0.078553416, 0.010918215), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.0064165345, 0.082449056, -0.03667216, 0.026472934, -0.021514278, 0.17880541, 0.39611253, -0.17107382, 0.06770686, -0.053641487, 0.002025645, 0.09812659, -0.07990987, -0.08550891, 0.00025631645, -0.10817648), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.11507329, -0.06074527, 0.007052484, 0.015466066, 0.0675046, 0.28604895, -0.020563968, 0.04284168, -0.10729741, -0.103069924, 0.028218608, 0.2833194, 0.11628834, -0.06599205, -0.10394839, 0.13991328), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.14225487, 0.08203055, 0.027650036, 0.1459416, -0.013772616, 0.23131026, 0.044769842, 0.27454084, -0.047555555, 0.05384277, -0.09042822, -0.16309428, 0.040359538, 0.19854581, -0.026278, 0.1577506), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.0091988975, -0.05603158, 0.08112747, 0.014755933, -0.50124913, 0.26424783, 0.1621611, -0.3766593, 0.15138763, 0.08449643, -0.16496105, 0.42882624, -0.010958174, 0.09773749, 0.22436622, -0.09687365), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.019358287, 0.025669195, 0.290994, 0.02750369, 0.28040195, 0.24038815, 0.08250993, 0.021609074, -0.040725835, -0.19103482, -0.10284562, 0.022636155, 0.050841074, 0.0030245516, -0.23331137, 0.15245193), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.0992156, -0.09854949, 0.075423576, 0.008634914, 0.062402267, -0.22020867, -0.07628636, -0.055416584, -0.10278129, 0.117922865, 0.13292609, -0.011894427, 0.16825698, -0.036205966, 0.1424532, 0.10553304), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.19908716, -0.12244845, 0.01669312, -0.01248478, -0.009518143, -0.08615178, 0.39116043, -0.52616054, 0.11156954, -0.115720086, -0.07697886, 0.23553406, 0.017087052, 0.016129963, 0.24723524, -0.11207272), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.033391032, -0.1495619, -0.09304159, 0.30421168, 0.13344899, -0.31858364, -0.081601165, 0.13551356, 0.032184854, 0.016566517, -0.16247925, 0.034869343, 0.04001544, -0.08231552, -0.18482871, 0.19266751), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.21768865, 0.012509539, -0.16523208, 0.22101055, -0.017112812, 0.12730962, -0.066268146, -0.05613703, 0.021577986, 0.24617495, 0.15244165, -0.08514145, -0.10427943, 0.17322995, 0.25568137, -0.015480765), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.07753385, 0.021704786, 0.23479357, -0.21051238, -0.009220801, 0.20936434, -0.077434614, -0.09195854, -0.34075132, 0.17316882, 0.11968564, -0.021970788, 0.15152359, 0.28213486, 0.07805407, 0.099207774), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.054490507, 0.07500978, -0.08916167, 0.22030471, 0.07036594, 0.1673276, 0.01864345, 0.0027516915, -0.39270175, -0.03433242, -0.17433889, -0.18174602, 0.044357035, -0.04678205, 0.11330789, 0.047382314), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.07965972, -0.2201543, 0.18386759, -0.080045894, 0.04141404, -0.027790288, 0.032212794, -0.021278335, -0.070643224, 0.05221597, -0.06377366, 0.065172255, -0.18978727, 0.092385, -0.17461243, 0.2500567), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.048105214, 0.43421936, -0.11871231, -0.12232125, 0.06071036, -0.07797472, -0.13819577, -0.14363539, -0.003262046, 0.05031809, -0.103945084, -0.22375908, -0.36861306, 0.25518808, 0.04773121, -0.22608627), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.094031096, -0.011887294, -0.08532428, 0.112617865, 0.06823757, 0.21326852, 0.109153405, -0.3117106, -0.22819358, 0.123445965, -0.066512406, -0.21115267, -0.080148704, 0.12793726, -0.20465335, -0.104592934), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.045067977, -0.2181705, -0.0677207, 0.13714351, -0.098488234, 0.19015153, -0.09273758, -0.0746141, 0.032907944, -0.006554721, 0.045943078, -0.2017389, -0.07914341, -0.085856505, -0.22186919, -0.049897686), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.10116989, -0.10004126, 0.09973816, -0.056045264, -0.18085082, 0.105252974, 0.11094914, -0.27471054, 0.20055285, -0.15355913, -0.080244385, -0.07118461, 0.02517136, -0.09862167, 0.22725868, -0.06279268), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.10015747, -0.22263162, -0.014078088, -0.08387323, 0.005140913, 0.03506062, 0.18977262, -0.1479168, -0.03378466, -0.15656684, -0.061233502, -0.21884726, -0.24339373, -0.06372294, 0.12688471, -0.10735916), target2);\n\ttarget2 = MulAdd(a3, MF4x4(0.033982676, 0.05078853, -0.1282201, -0.0035882539, 0.08219379, -0.0116551975, 0.22077334, 0.04950106, -0.08306263, -0.03258243, -0.09699666, 0.09209884, 0.24061108, -0.040557686, 0.070444405, 0.28183722), target2);\n\ttarget2 = MulAdd(b3, MF4x4(-0.17872535, -0.13406444, -0.034040287, 0.03047437, -0.06435232, -0.24566554, 0.0670411, -0.024581233, -0.107877605, 0.08638364, -0.25626892, 0.044232026, 0.060273834, -0.16846469, 0.43043453, -0.1603817), target2);\n\ttarget2 = MulAdd(c3, MF4x4(-0.22682182, 0.15527044, -0.08887372, -0.043433297, 0.028202614, -0.1919475, 0.2581379, -0.28678998, 0.040917493, -0.023046691, 0.20005395, -0.103288084, 0.009493088, -0.018459544, 0.081757404, 0.054610446), target2);\n\ttarget2 = MulAdd(d3, MF4x4(-0.022377692, 0.008678131, -0.1065251, 0.2628791, -0.009904344, 0.10677991, -0.040256146, -0.116764925, 0.03182517, 0.11810951, -0.052380614, 0.30170968, 0.2569954, -0.17379415, -0.007437352, -0.13248402), target2);\n\ttarget2 = MulAdd(e3, MF4x4(0.1602437, -0.097451374, -0.010258972, 0.12651087, -0.0061891475, 0.078265965, 0.08754248, -0.14903383, -0.07830899, -0.08898991, -0.058010247, 0.23148704, -0.3695693, 0.18824111, -0.07988307, -0.05880814), target2);\n\ttarget2 = MulAdd(f3, MF4x4(-0.22253856, 0.26592886, -0.03350701, -0.14712897, -0.12118757, 0.19663027, 0.031479847, -0.1554313, -0.028078854, 0.47659087, 0.12390117, -0.11238944, 0.037422795, -0.049916733, -0.2926893, 0.16435196), target2);\n\ttarget2 = MulAdd(g3, MF4x4(0.075061694, -0.24045657, -0.047069702, -0.09982952, 0.2340634, -0.33556157, -0.037818547, 0.15286541, 0.14214562, 0.02267143, 0.09929496, -0.055981826, 0.21834296, -0.19831084, -0.16977312, 0.08182871), target2);\n\ttarget2 = MulAdd(h3, MF4x4(0.01741376, 0.08985922, 0.16625583, -0.097267725, 0.17712043, -0.068722576, 0.07060928, 0.09168345, -0.16337997, -0.038742293, -0.04963981, 0.15612502, 0.11807448, -0.08807022, 0.101155974, -0.5563793), target2);\n\ttarget2 = MulAdd(i3, MF4x4(-0.27598697, -0.062920116, -0.08726363, -0.12058882, -0.07664108, -0.032059796, -0.25070706, 0.030094638, -0.1160773, 0.19200212, 0.18899699, -0.18259315, 0.24458873, 0.12005026, -0.4616454, 0.27545306), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.15272795, -0.23518732, 0.030445633, 0.088528365, 0.055305615, -0.12609963, 0.15926869, -0.22551426, 0.040562432, 0.124508515, 0.124815956, -0.0953939, 0.14920413, 0.14798881, -0.14428794, 0.37141335), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.12783955, -0.0540082, 0.014302729, 0.1365942, 0.10768764, -0.16831467, -0.079203665, 0.1425581, 0.019629346, -0.1027023, 0.15957874, -0.29757223, 0.26533285, -0.15765496, 0.35999995, 0.025803005), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.29036346, 0.26730424, 0.12511441, -0.061552685, -0.16372615, -0.026372833, 0.14069465, -0.24948902, 0.028215056, 0.254545, -0.19650677, 0.09530049, 0.055034224, -0.009660105, 0.39131105, -0.11131454), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.0675603, -0.24606612, 0.0658764, -0.04487242, -0.0043948023, 0.04578745, 0.065714814, -0.12173881, 0.06062957, -0.04769831, 0.017330103, -0.074727364, -0.25047338, -0.30126756, -0.0830633, 0.019802446), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.19933821, 0.08052119, -0.058912043, 0.31624097, 0.18705179, 0.023470681, -0.03783429, -0.04163007, -0.09845593, -0.12975362, 0.2510535, -0.32808807, -0.23654252, 0.3028382, -0.19675751, -0.030597644), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.09338011, -0.0415115, -0.22497573, -0.0028536345, -0.19024974, -0.1604205, 0.115466096, -0.2525424, -0.063761264, -0.20588842, 0.08622651, -0.00097166066, 0.10169425, 0.252253, -0.06758796, 0.23335451), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.04426442, 0.1095582, -0.085856594, 0.13048999, -0.12778096, 0.2613617, -0.045577575, -0.1526907, 0.1257047, -0.111831486, -0.059892397, 0.15280181, -0.12673315, -0.05033893, -0.2930266, -0.46015793), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.11951625, 0.03414521, -0.11969193, 0.1869847, 0.111495204, 0.080608666, -0.20057446, 0.10785576, -0.049578592, 0.016259808, 0.0058614444, -0.045524042, 0.0319529, 0.05456559, 0.007678947, 0.33595043), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.10240467, 0.18299319, 0.05753473, -0.02340504, -0.16686855, 0.21292439, 0.11702374, -0.30564633, -0.024081768, -0.088019624, 0.22313595, -0.06672843, 0.055274762, 0.13347326, -0.030782074, -0.35677573), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.075412944, -0.11053347, 0.07465402, -0.014327975, -0.13390768, 0.009061153, 0.027920425, -0.005080267, -0.04721174, -0.06812053, -0.08845801, 0.109399185, -0.04021429, 0.03812722, -0.25037023, -0.019478017), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.07806179, 0.00493842, -0.02926109, -0.017333046, -0.125423, -0.1364203, 0.09466317, -0.26578787, 0.14311473, -0.0638623, 0.11139706, -0.08727186, -0.06821389, -0.19687861, 0.14772336, -0.10641787), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.027460072, 0.15687883, -0.17656918, 0.037287217, -0.06293563, -0.03923116, 0.037919715, -0.16810033, 0.26675344, -0.06076212, 0.104115106, 0.0798128, -0.023851654, 0.033833887, -0.030991107, 0.20160522), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.058332916, -0.09243659, -0.24664097, -0.13549158, -0.1218952, 0.15865086, -0.1388978, -0.25030297, 0.045538265, 0.04120175, -0.031994786, -0.13400851, 0.007142682, 0.16071808, 0.04225278, 0.20399003), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.09599313, -0.15977086, -0.02840129, 0.1264139, -0.0144603, -0.00054464, 0.025552921, -0.09051482, -0.06592454, -0.026247922, -0.06352208, -0.021571407, -0.04439837, -0.07514258, 0.0026004864, 0.23430851), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.09127431, -0.21962664, 0.029265152, -0.3099013, -0.09579088, 0.023516538, -0.08382231, 0.05348487, 0.17067212, -0.16390987, 0.03691037, 0.01566425, 0.18072702, 0.10966007, 0.22929187, 0.23833585), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.083102494, 0.18586425, 0.09552713, -0.22502401, 0.10707524, -0.041579556, -0.040507507, -0.07875607, 0.13548316, 0.065970294, -0.09524086, 0.12988009, -0.19841906, -0.016670253, 0.2779514, 0.0039394014), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.056897737, -0.022942321, -0.089304574, 0.01799863, -0.031229522, 0.08292495, -0.040067356, -0.09749493, -0.2211719, 0.110088974, 0.05465516, -0.12767765, -0.06458067, -0.17160612, -0.09046756, -0.09943958), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.20148912, 0.017609052, 0.2321357, -0.07018911, -0.1311024, 0.007025396, -0.3018123, 0.059590653, 0.02093451, 0.2801181, 0.047305427, -0.04511682, 0.02409926, -0.1167535, -0.051785782, -0.022035388), target2);\n\ttarget2 = MulAdd(na3, MF4x4(-0.050354917, -0.070848934, 0.05680098, -0.15274279, 0.017402016, 0.36217922, -0.5604259, 0.07027285, 0.013515239, -0.024368018, 0.15436645, -0.20279783, -0.009300287, 0.07763277, -0.12982416, 0.018808186), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(0.06595005, 0.34867665, -0.1158312, -0.11764399, -0.36079824, -0.03821222, -0.019823037, -0.44939035, -0.16058454, 0.0022173142, -0.067403175, 0.094619855, -0.054194376, -0.15860401, 0.031142738, -0.020085743), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(0.15504256, -0.22207503, -0.037738267, -0.024344966, 0.22112809, -0.084620684, 0.31442386, -0.17054078, -0.14580488, -0.1475954, 0.014907614, -0.009613608, -0.120833494, 0.024163049, 0.055504505, 0.12984537), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(0.03553467, -0.047465023, 0.127075, -0.17350323, 0.17346224, -0.15783796, 0.15583144, 0.01985312, 0.019021586, -0.03840401, 0.19470496, -0.007293492, -0.17917366, -0.15722491, -0.26070598, -0.2573391), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(-0.0953191, 0.09084944, 0.25338924, 0.23829061, 0.08905475, -0.02061248, -0.012651722, 0.11955581, 0.239715, -0.2795726, 0.06275163, -0.15498403, -0.042101745, -0.16694753, -0.049197655, 0.06470607), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(0.07657325, -0.35392562, -0.055532675, -0.18168893, 0.08006482, 0.12548354, -0.17169037, 0.41884392, 0.047854125, -0.13949591, -0.34051692, 0.18265511, 0.082268566, 0.24420416, -0.049996477, -0.018989688), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(-0.16161917, 0.16816078, 0.018195407, 0.16679527, -0.3412548, 0.14028408, 0.17574453, -0.06049301, -0.01611411, -0.046527516, -0.044087164, 0.25788495, 0.13769192, -0.016161619, 0.041910134, 0.042887107), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(0.07837116, -0.22945437, -0.05715237, 0.062118188, -0.07539828, 0.22634326, -0.19471732, 0.31986186, 0.15694539, 0.1633341, -0.03029404, 0.056681212, -0.029835409, -0.13129339, 0.19710875, 0.13151285), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(0.017191496, 0.33163047, -0.026875576, 0.19212759, 0.27074674, 0.17707312, -0.13339694, 0.10855495, -0.18034323, 0.43113244, -0.33985507, 0.316351, 0.0358167, 0.023788683, 0.13152061, -0.019543748), target2);\n\n\tMF4 target3 = { 0.013481283, -0.0006846239, 0.017479934, 0.13998064 };\n\ttarget3 = MulAdd(a1, MF4x4(-0.10152706, 0.13643685, 0.050397865, 0.10665431, 0.026328163, 0.1460299, 0.2569912, -0.19533697, 0.03801618, 0.0003496284, 0.18598852, -0.22565664, 0.05281963, -0.034972392, -0.14308542, 0.030370854), target3);\n\ttarget3 = MulAdd(b1, MF4x4(-0.004119863, 0.057859607, -0.2119656, 0.14261195, -0.16826284, -0.25717396, -0.041528255, -0.119776234, -0.1013885, 0.16835499, 0.27712375, 0.11540263, 0.13435264, -0.15992326, -0.011525119, -0.052719552), target3);\n\ttarget3 = MulAdd(c1, MF4x4(0.015662286, 0.039283197, 0.1298957, 0.14770529, 0.16800109, -0.26307538, -0.043486428, -0.088268735, -0.091123246, -0.02737689, 0.1340816, 0.20996217, 0.108091205, 0.030314112, 0.054512065, 0.012642684), target3);\n\ttarget3 = MulAdd(d1, MF4x4(0.06709217, -0.05501374, 0.081222005, 0.089457735, 0.18656515, -0.3077529, 0.047672454, 0.024508892, -0.1351014, -0.39228433, -0.10557932, -0.04361972, -0.11915583, -0.009581473, 0.0063169855, -0.03613457), target3);\n\ttarget3 = MulAdd(e1, MF4x4(-0.1854358, -0.17342652, -0.194473, 0.3151401, -0.051769286, -0.3236325, 0.16018392, -0.057727765, 0.16584621, -0.017418258, -0.3128051, 0.07975532, 0.18611333, 0.026310056, 0.02726216, 0.0067486716), target3);\n\ttarget3 = MulAdd(f1, MF4x4(-0.110896066, -0.00702464, -0.20931682, 0.24850254, 0.03269825, -0.18380491, 0.032377258, 0.19312768, -0.22545849, 0.20047729, -0.21857505, 0.04958539, -0.012481836, 0.09664499, -0.14021717, -0.011379809), target3);\n\ttarget3 = MulAdd(g1, MF4x4(0.029377487, -0.03222012, -0.047782637, 0.15043634, -0.028922928, 0.14329837, 0.070593685, 0.17937078, -0.098229684, -0.017268147, 0.023314565, -0.0373697, 0.086789444, -0.041083477, -0.14991397, 0.1569613), target3);\n\ttarget3 = MulAdd(h1, MF4x4(-0.15204531, 0.038198274, -0.04654972, -0.023292607, 0.043118156, -0.1646481, -0.19841586, 0.0921996, -0.020243818, -0.006126642, 0.0073893177, -0.2155937, -0.051742166, -0.12905034, 0.026826771, -0.14480315), target3);\n\ttarget3 = MulAdd(i1, MF4x4(0.10036964, 0.1710007, -0.07876652, 0.22185723, -0.07879332, -0.009758965, -0.07071612, 0.091213554, -0.112285696, 0.03389832, -0.028804176, -0.030022187, -0.1688445, 0.11049307, -0.054812532, 0.093897834), target3);\n\ttarget3 = MulAdd(a2, MF4x4(-0.12732436, 0.085322656, -0.100760445, 0.18453589, -0.06775451, 0.10935976, 0.17619863, -0.1605919, 0.09963296, -0.15262389, 0.09841437, -0.19519499, -0.07014624, 0.25242952, -0.05024359, 0.087294735), target3);\n\ttarget3 = MulAdd(b2, MF4x4(0.015800908, -0.14473227, -0.2478373, 0.053460408, -0.14864206, -0.043255955, 0.11067259, 0.0014784707, 0.12921435, -0.03185401, 0.116656736, -0.03951376, 0.06561661, -0.04718704, -0.10218965, 0.11587745), target3);\n\ttarget3 = MulAdd(c2, MF4x4(0.07117372, 0.0109037515, -0.23872098, 0.07710495, 0.0921179, -0.1644194, -0.13181047, -0.057200883, 0.14430603, 0.10133447, 0.28212273, 0.09411812, -0.048196144, 0.0436184, -0.13561143, 0.3184622), target3);\n\ttarget3 = MulAdd(d2, MF4x4(-0.18523192, 0.21471006, -0.0448867, 0.014551903, 0.009904246, -0.15023962, 0.004197992, -0.17210527, 0.194157, -0.08507272, 0.20821328, 0.053412434, 0.3099377, 0.119032666, -0.18388903, -0.19600375), target3);\n\ttarget3 = MulAdd(e2, MF4x4(0.2807314, 0.2189851, 0.25916493, 0.060228985, -0.0049263136, -0.074992225, -0.15787919, -0.054917946, 0.12066998, -0.21063392, 0.14343189, -0.033192027, -0.010535234, 0.14374483, 0.1522993, -0.07717713), target3);\n\ttarget3 = MulAdd(f2, MF4x4(-0.043371633, 0.13011403, -0.0015406794, -0.0128029715, 0.17256962, -0.04676938, 0.15432738, -0.07865593, 0.13326003, -0.20808597, -8.7830034e-05, 0.19136547, -0.1985925, -0.013042362, -0.22718841, -0.06583816), target3);\n\ttarget3 = MulAdd(g2, MF4x4(-0.11845248, 0.027589038, 0.10232536, 0.089354545, 0.18008573, 0.061147142, 0.04159389, -0.12027304, 0.1662144, -0.19675921, 0.12992287, -0.10149212, 0.10550842, -0.006124143, 0.19946195, -0.1462058), target3);\n\ttarget3 = MulAdd(h2, MF4x4(0.01296488, -0.09644271, -0.05817923, -0.0954995, 0.025634903, -0.10628822, -0.05637768, -0.284114, 0.17925075, 0.01273799, 0.309424, -0.036070596, -0.17971297, -0.35284916, 0.028788334, -0.040968318), target3);\n\ttarget3 = MulAdd(i2, MF4x4(-0.14511016, -0.036098864, -0.029634831, -0.081007525, 0.17456302, -0.3121309, -0.005653063, -0.13220096, 0.07959643, 0.13494255, 0.16009367, 0.022134677, -0.06916521, -0.068016514, -0.07418041, -0.106386214), target3);\n\ttarget3 = MulAdd(a3, MF4x4(0.0038909556, 0.10399398, -0.047585238, 0.020263152, 0.22357577, 0.20275299, -0.20587234, -0.14618087, -0.06699123, 0.05799765, -0.057206634, 0.070337296, 0.26828194, -0.110529095, -0.039317895, 0.1000372), target3);\n\ttarget3 = MulAdd(b3, MF4x4(-0.12016816, -0.1746712, -0.15243006, 0.09121186, 0.17119732, 0.09372113, -0.011121283, 0.01683138, 0.04647735, 0.26708847, -0.045210358, -0.05229348, 0.13961853, -0.23234563, 0.11518522, 0.025384203), target3);\n\ttarget3 = MulAdd(c3, MF4x4(0.24803765, -0.12064236, 0.16222163, 0.10242684, 0.35362238, -0.0025835831, 0.10871223, -0.14052986, 0.086918466, 0.003965692, -0.052900802, -0.09219091, -0.097256884, 0.027730078, -0.018556952, 0.029902605), target3);\n\ttarget3 = MulAdd(d3, MF4x4(-0.07853819, -0.33072472, -0.01923759, -0.022614414, 0.037449032, 0.0057582236, 0.035095196, -0.10516724, 0.021059662, -0.1803607, -0.072927505, -0.032927528, 0.10600866, 0.2115304, -0.038914077, 0.026641702), target3);\n\ttarget3 = MulAdd(e3, MF4x4(-0.046708018, -0.30087915, 0.23972215, 0.051118676, -0.09175249, 0.061564893, -0.0606459, 0.10725062, 0.16634792, 0.15181623, -0.14776988, -0.089753665, 0.09396779, 0.3047946, 0.20602426, -0.10614584), target3);\n\ttarget3 = MulAdd(f3, MF4x4(0.16031305, -0.010385087, 0.12137829, 0.013936002, -0.09272479, -0.0462326, 0.14647374, -0.1364509, 0.1020013, 0.07280318, -0.035455197, -0.0074932426, 0.06966262, 0.43025437, 0.14413132, -0.020879302), target3);\n\ttarget3 = MulAdd(g3, MF4x4(-0.048381433, 0.055672538, 0.17734092, 0.057804573, -0.064207256, -0.081648245, -0.19108449, -0.027356787, 0.22855555, 0.026296774, 0.051670585, 0.1469678, 0.14372535, -0.019550381, 0.0711832, -0.23015371), target3);\n\ttarget3 = MulAdd(h3, MF4x4(0.10270051, 0.03306284, 0.18660016, -0.08794835, 0.022104584, 0.14556691, -0.18290472, -0.004233608, 0.31982687, -0.019705234, -0.18947408, -0.014298402, 0.13134713, -0.22212905, -0.22175267, -0.083559796), target3);\n\ttarget3 = MulAdd(i3, MF4x4(0.09405076, -0.094762795, 0.00039714025, -0.033925287, -0.040082168, 0.18154381, -0.091368884, -0.002279935, 0.18112488, -0.16065024, -0.07302534, -0.054364413, -0.027507186, 0.056911435, -0.25985143, 0.19071229), target3);\n\ttarget3 = MulAdd(na1, MF4x4(-0.08038882, -0.23933147, 0.091805875, 0.06882283, 0.030006107, -0.19613835, -0.19390447, -0.06947256, -0.15933713, -0.12136816, 0.10496873, 0.20988281, -0.06429982, 0.13831986, -0.12110751, -0.013753183), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(-0.03526272, 0.09196733, 0.22100714, -0.034608632, 0.11271489, 0.19354948, -0.08702665, 0.0818318, -0.23144986, -0.39077505, 0.068490066, -0.07049248, -0.15327029, -0.13464752, -0.23453039, -0.007664983), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.071974635, -0.09427919, -0.14303383, -0.15694854, -0.0536355, 0.072341934, 0.0919402, -0.032855745, 0.061292388, 0.09840731, 0.035950005, -0.064508714, -0.121800035, -0.18790516, -0.098817684, -0.032492902), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(-0.006014576, 0.056944408, -0.04101546, -0.07834956, 0.048266124, 0.013926315, 0.041723326, -0.323333, -0.41566008, 0.3228979, 0.004536671, 0.31018063, -0.32762045, 0.23986395, 0.0941997, 0.32134023), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(-0.07315801, -0.04973393, -0.022297578, -0.0803329, -0.006434735, 0.010591334, 0.036642008, 0.099703625, -0.30428717, -0.13702157, 0.05784328, -0.08263622, -0.16771519, 0.012717832, 0.16369238, 0.082922), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(0.0001620341, 0.13469625, 0.022239598, -0.045452654, -0.012625867, -0.016001742, -0.13125779, 0.035808936, -0.06057855, -0.23169748, -0.031564385, 0.0035062286, 0.08688842, 0.043959387, 0.045130596, -0.082511395), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(-0.083551735, -0.0062169307, -0.071006864, 0.08302828, 0.041814975, -0.17135905, -0.051279463, -0.23531726, -0.07600026, -0.016305951, -0.12496258, 1.6274626e-05, -0.056098733, 0.05471391, -0.16807914, 0.043552015), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(0.10614594, 0.055918783, -0.04306798, 0.12271233, -0.053095255, -0.041611873, 0.0658641, -0.17270197, -0.17228878, 0.04906801, 0.025378078, 0.03993686, 0.26168197, -0.0664166, -0.24114749, 0.122338526), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(-0.028463805, -0.06832796, -0.042678714, -0.09115425, 0.112060644, -0.11552275, -0.13850841, -0.21241449, -0.025949117, -0.25152782, 0.118504696, -0.0032011967, -0.004659375, 0.14416796, 0.10196362, -0.25900578), target3);\n\ttarget3 = MulAdd(na2, MF4x4(-0.014083873, -0.14722492, -0.04869616, -0.0060440497, -0.06496493, -0.080328904, 0.0021304504, -0.071984075, 0.037136473, -0.06741335, 0.047950987, 0.13102819, -0.084352426, 0.021756288, 0.14978755, -0.07930937), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(-0.043805413, 0.11554947, 0.08058495, -0.029509902, 0.07255308, -0.11107158, 0.19269472, -0.06936789, -0.056554012, -0.13389792, 0.05822567, -0.080038816, -0.11012767, -0.2594496, 0.013091632, -0.016040247), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(0.11076819, 0.29110146, 0.010078737, -0.07397723, 0.017001567, -0.0600932, 0.120115615, -0.1516764, -0.046932317, -0.1531205, -0.041367747, 0.03022747, 0.028425755, -0.09993652, 0.105394356, -0.097724885), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(-0.16120721, 0.12060183, -0.051696084, 0.13536309, -0.0629108, 0.20782739, 0.08011087, 0.16132146, -0.17330962, 0.075349055, -0.13367563, 0.0834821, 0.13859299, -0.24726664, 0.1219966, 0.008662899), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(-0.06673648, -0.059848122, -0.079399005, 0.07430188, 0.039565083, -0.02646128, 0.06627121, -0.15686277, -0.08100342, 0.211192, 0.11364034, -0.056452975, 0.003068278, -0.09815622, -0.2720423, -0.060945407), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(0.10425103, -0.11963076, -0.15664895, -0.008325704, 0.030473476, -0.059397645, 0.08696136, -0.105832994, 0.15845199, -0.0155479815, 0.21866821, -0.24220671, -0.07413551, 0.18748072, 0.15781933, 0.09678578), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(-0.105755776, 0.05295692, -0.065712206, -0.055599883, -0.024171222, -0.10882413, -0.019153712, -0.0797682, -0.05841592, 0.027539523, 0.018220939, 0.025832783, 0.10254366, 0.027248384, 0.17515337, 0.13366127), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(0.14450707, 0.16593692, 0.10250131, 0.022199351, 0.00025016058, 0.02208959, -0.015518909, 0.03897976, 0.066313244, -0.08834062, -0.06497536, 0.21156809, -0.028999787, 0.1924942, 0.27274308, -0.19622537), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(0.06670714, 0.032708794, 0.08869534, -0.1733506, 0.0076623727, 0.12130858, 0.010788659, -0.046009142, 0.09683414, -0.2074643, 0.08545223, 0.0447272, 0.12027344, 0.20864709, 0.17474543, 0.13670264), target3);\n\ttarget3 = MulAdd(na3, MF4x4(0.021432638, -0.24760821, 0.12410156, -0.11143068, 0.1870739, 0.0740915, 0.11552895, -0.061147105, -0.037998777, -0.1789209, 0.02577988, -0.1907707, 0.16632228, 0.029018525, 0.016788188, 0.16683672), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(0.1736272, 0.052254014, -0.010544911, -0.25163132, -0.021734655, -0.23477079, 0.30037084, -0.024889933, 0.16576701, 0.11785999, -0.19426535, 0.012973521, -0.31330642, -0.12940904, 0.1407924, -0.104257464), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(-0.10720734, -0.22007015, 0.06929706, 0.1128352, 0.08878798, -0.74968565, 0.05292707, -0.2015415, -0.22024418, 0.12937216, 0.0077955252, 0.10120546, -0.051692892, -0.4005671, 0.019636473, -0.020149691), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(0.43247837, -0.18930417, -0.013568917, -0.079419196, 0.18672904, -0.35622415, 0.25079453, -0.1175358, 0.26581118, 0.008579299, 0.18397655, -0.29648697, -0.15222591, 0.32292458, -0.011576255, -0.030688757), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(0.10460517, 0.22705384, -0.11461504, -0.34884137, 0.06710358, 0.07710169, -0.22747318, -0.03428357, -0.12087394, -0.18585229, 0.053487252, -0.15423988, -0.24636437, 0.42574164, -0.20994124, -0.13236474), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(-0.15691194, -0.08720117, -0.052925915, -0.16245657, -0.16402285, 0.3253476, 0.1616336, 0.072358444, -0.19095042, 0.21235181, 0.033952657, -0.021103038, 0.1247694, 0.228517, 0.032327496, -0.21903606), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.14174855, -0.06494216, 0.13284135, -0.08129453, 0.16482054, 0.110014215, 0.15709473, -0.010275839, -0.22032334, -0.10103909, -0.11650554, -0.17561941, 0.085149735, -0.40727508, 0.12032625, -0.02078777), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(-0.27078578, -0.08153653, 0.1757881, 0.11317136, 0.27882257, -0.24042514, -0.08648888, -0.045675088, -0.10128582, -0.04766186, 0.06836051, 0.15924035, 0.04440567, -0.099891834, -0.08893405, 0.05721548), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(0.15327021, 0.13603994, 0.17330587, 0.05625383, -0.11157126, -0.08179826, 0.05035325, -0.012668053, 0.04673393, 0.29881957, 0.019924281, -0.06682304, -0.034375366, -0.11446407, 0.055847015, 0.104117975), target3);\n\n\tMF3 target4 = tex8.SampleLevel(sam, pos, 0).rgb;\n\ttarget4 = MulAdd(e1, MF4x3(0.027129134, 0.01044246, 0.008198051, -0.019978391, 0.014817045, 0.014294805, -0.009071333, -0.018233696, -0.020756468, -0.016967475, -0.010472854, -0.0066578956), target4);\n\ttarget4 = MulAdd(e2, MF4x3(0.012473992, -0.019771596, -0.02515739, -0.008238026, 0.026189122, 0.034326296, 0.01735337, -0.021417223, -0.027291182, 0.01815212, -0.012736875, -0.021111157), target4);\n\ttarget4 = MulAdd(e3, MF4x3(0.022218483, -0.023485998, -0.03540812, 0.016531168, -0.0033816632, -0.010179393, -0.03181473, -0.0072774286, 0.0014077872, -0.0025735856, -0.015998563, -0.016743565), target4);\n\ttarget4 = MulAdd(ne1, MF4x3(-0.01740865, 2.3718083e-05, 0.0032518203, 0.009272118, -0.01676428, -0.019791994, 0.013665012, 0.02245221, 0.022923533, 0.020898446, 0.012111701, 0.009756352), target4);\n\ttarget4 = MulAdd(ne2, MF4x3(-0.0043926076, 0.019400991, 0.022581568, 0.003538965, -0.031301565, -0.0345112, -0.02405352, 0.006159623, 0.016130725, -0.0097925, 0.01677507, 0.027652735), target4);\n\ttarget4 = MulAdd(ne3, MF4x3(-0.03267886, 0.014923966, 0.027258545, -0.033668566, -0.010421195, -0.0026646685, 0.015094835, -0.0023233194, -0.015871005, -0.01258443, 0.00507582, 0.0053544766), target4);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n\ttex3[gxy] = target3;\n\ttex7[gxy] = MF4(target4, 1);\n}\n\n//!PASS 8\n//!DESC Conv-4x3x3x24, Conv-3x1x1x120\n//!IN INPUT, tex1, tex2, tex3, tex7\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass8(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { 0.20634188, -0.10455712, -0.031700566, -0.13400781 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.013182829, 0.053091962, 0.06549412, 0.09314398, 0.12759157, 0.19831958, -0.0066986284, 0.008724786, -0.008788724, -0.18448268, -0.08061004, -0.122672, 0.039246775, 0.114899494, 0.0053096768, -0.45705518), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.15435986, 0.12775438, 0.033445876, 0.13065258, -0.034713954, 0.011218427, -0.056961175, -0.028291933, 0.014069658, -0.12902507, 0.09579773, -0.24455607, 0.14417914, 0.05937612, 0.2243551, -0.3940324), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.019673724, 0.20209175, 0.0864056, 0.062125377, -0.032693543, -0.07866025, 0.049098648, 0.09967038, 0.071991436, -0.035584584, 0.08620264, -0.3146151, 0.0016364265, -0.1282453, 0.113696136, -0.09162608), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.086494565, -0.031322442, -0.0010425163, 0.0043439222, -0.2207718, -0.114754595, -0.04754309, 0.038829442, 0.28012696, 0.01416326, -0.006575263, 0.09800945, 0.20944737, 0.12320554, -0.27976176, 0.042036757), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.0043551656, -0.034230676, 0.047720857, -0.0913431, 0.25977305, 0.21515612, 0.18708718, -0.004843006, 0.29522216, 0.03641434, -0.096512936, -0.07962972, -0.07454651, -0.2631387, -0.3370317, 0.40316954), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.07995683, -0.17652078, 0.0023912708, -0.02042794, 0.17486735, -0.22842996, -0.06893651, -0.19074234, 0.10076771, 0.11205654, 0.001572062, 0.024552155, -0.00011488878, -0.12493254, -0.29600865, 0.07090882), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.017154403, 0.13125315, 0.11503914, 0.105513334, -0.11673632, -0.034176424, -0.030536361, -0.002248858, -0.11892652, -0.08516513, 0.06950209, 0.17622153, 0.06246307, -0.07698598, 0.2093879, -0.058301486), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.10316161, 0.0072260876, 0.07716615, -0.13834251, -0.010482067, 0.15220478, 0.09262941, 0.08135313, 0.14277095, -0.15209594, -0.15694623, 0.0658977, 0.16643007, -0.04802777, 0.039331965, 0.10639549), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.003941457, 0.096958525, 0.08078122, -0.123746514, 0.05798335, -0.044676617, -0.3084394, 0.1140151, 0.010672668, -0.025900228, -0.06911797, 0.05360162, 0.15696998, 0.07253946, 0.06035546, 0.1159507), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.229298, 0.064096935, 0.16048844, 0.012671015, 0.024478769, 0.063737154, -0.004687863, 0.19364266, -0.19646022, 0.2893255, 0.026786007, 0.069286734, 0.07800188, -0.053994164, 0.052960467, 0.1745522), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.015469714, -0.12314818, 0.5338478, -0.11723986, -0.008365538, -0.10995339, -0.15134127, -0.07830025, 0.07128518, 0.009086638, -0.116382964, -0.16219214, 0.026113646, 0.29649207, -0.33176404, 0.009099685), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.09291687, 0.09429629, 0.47023576, 0.30382136, 0.022938905, -0.053612467, 0.03914971, 0.07205734, 0.11292842, -0.022005484, 0.17894705, -0.008363797, -0.1682453, 0.0409644, -0.017597, -0.14894786), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.22093011, 0.050382294, -0.07031792, 0.1064123, 0.09168859, -0.054715537, 0.07824245, 0.0675236, -0.11675646, 0.12587738, 0.33370635, -0.14830373, -0.4392533, -0.23865284, 0.071248956, -0.026170105), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.048300147, 0.08008235, 0.11813505, -0.09183442, -0.06377392, 0.14087953, 0.07831149, 0.044931732, -0.21497081, 0.026584432, 0.013495652, -0.14503439, 0.007470514, 0.14160597, -0.016141815, -0.31155616), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.41951287, 0.24024096, 0.19465575, -0.041104067, 0.09810697, 0.14586213, 0.13903797, -0.053057924, -0.14113568, -0.09644958, -0.09866805, -0.07899498, -0.172797, -0.08095462, -0.13160881, -0.0089402525), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.0807202, -0.37737992, -0.12689668, 0.079181, 0.01577318, -0.11053014, -0.12669973, 0.0071108835, -0.20729698, 0.046471246, -0.12194573, 0.2870874, -0.22770974, 0.09006065, 0.23021267, 0.3112802), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.17971495, 0.036312122, -0.03444156, 0.041823655, -0.09082372, 0.08112007, 0.049061, -0.0055645844, 0.013843324, -0.01969895, -0.13960351, -0.047275152, -0.043000307, 0.27807096, 0.22880352, 0.106376074), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.17075665, 0.006126272, -0.2546894, 0.11954845, -0.19607663, 0.048538323, -0.065129414, 0.014257998, 0.038192738, -0.037847996, -0.020429965, 0.025860488, 0.028515143, 0.06738391, 0.072110705, -0.033284377), target1);\n\ttarget1 = MulAdd(a3, MF4x4(0.044568866, 0.062475223, -0.0983384, 0.009866407, -0.35514477, -0.030211627, 0.22333166, 0.32969475, -0.109626986, -0.034606833, -0.0576798, -0.17654708, -0.08829175, -0.16896097, -0.1001105, -0.12807782), target1);\n\ttarget1 = MulAdd(b3, MF4x4(0.3260804, -0.13558061, 0.04645619, -0.07019992, -0.29856443, 0.053042114, 0.061772786, -0.13687392, -0.16278408, -0.034854803, -0.012278255, -0.098236114, -0.19714803, -0.1252398, 0.52471006, -0.00438923), target1);\n\ttarget1 = MulAdd(c3, MF4x4(-0.23780306, 0.0058732736, -0.14263488, 0.014209727, 0.3014817, -0.19334342, 0.14975117, -0.4833427, 0.06679691, -0.068613395, -0.11530229, -0.27387938, 0.060538717, 0.2566434, 0.089476675, 0.20292005), target1);\n\ttarget1 = MulAdd(d3, MF4x4(-0.08988664, 0.09974201, -0.06231258, -0.14937639, 0.3109973, -0.062920496, 0.38651597, 0.32825765, -0.019837346, 0.1774624, 0.0721711, 0.01380091, 0.33275485, -0.024928985, -0.07132799, -0.10537747), target1);\n\ttarget1 = MulAdd(e3, MF4x4(-0.09355771, -0.018917486, 0.062002532, -0.06821075, 0.0852235, -0.043880213, 0.023216404, -0.034589138, 0.009775594, 0.020386059, -0.19563444, 0.34160665, -0.19108588, -0.36282206, 0.12477205, -0.1635429), target1);\n\ttarget1 = MulAdd(f3, MF4x4(0.0660281, -0.004066676, 0.051605884, -0.20489341, 0.45396295, 0.048399396, 0.32993752, 0.5071012, 0.1316449, -0.028571565, -0.1418205, -0.06860564, 0.00832686, 0.10344168, -0.0033388403, -0.21189667), target1);\n\ttarget1 = MulAdd(g3, MF4x4(0.03121781, 0.06918902, 0.0073941397, -0.039547186, -0.13978334, 0.36066145, 0.105322905, 0.048246022, -0.064950965, 0.04503515, 0.13340174, -0.30344757, 0.08683505, -0.046188712, -0.17417784, 0.09081479), target1);\n\ttarget1 = MulAdd(h3, MF4x4(-0.16948071, 0.0040395157, 0.035707664, -0.079912804, 0.038716394, -0.17475441, -0.36299637, 0.03968082, 0.049196135, -0.1715365, -0.071639955, -0.016410451, 0.09188755, -0.2558949, -0.16094652, 0.07996079), target1);\n\ttarget1 = MulAdd(i3, MF4x4(-0.21382907, 0.05636966, -0.06199946, -0.21989174, -0.18922164, 0.37826148, -0.0141571835, 0.024448203, 0.0884536, 0.12374937, 0.18420288, 0.0967765, -0.06720011, 0.069881, -0.0042892518, -0.19172947), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.08187655, -0.489484, -0.27973574, -0.009521738, 0.18314825, -0.35783502, 0.056075446, 0.1687472, 0.3308614, -0.23036483, 0.0055736783, 0.18089417, -0.01648603, -0.21509576, -0.05315817, 0.2311331), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.10545252, -0.16682841, 0.46201918, 0.41049242, 0.2867931, -0.10737721, 0.37278366, -0.15247364, 0.32457805, -0.13211884, 0.0282094, 0.32339963, -0.20642634, -0.07769656, -0.11572602, -0.0078001227), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.049419798, -0.16918461, -0.07071865, -0.23344457, -0.06583399, 0.21428098, 0.13742666, -0.24406539, -0.3166922, 0.04145341, 0.12750438, 0.7016666, -0.072237894, 0.060902767, 0.024233112, 0.1978945), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.21362431, -0.22586554, -0.13855393, 0.03641023, -0.18417473, 0.13428141, 0.019632103, 0.18459935, -0.25052726, -0.06585735, 0.06470142, -0.1343166, -0.1102426, 0.12908545, -0.03501417, -0.2672359), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.098094426, -0.40027153, 0.05030102, 0.29116127, -0.07573088, -0.0358284, -0.2436342, 0.00352126, -0.114547156, -0.013960078, -0.20433213, -0.021052646, -0.22285037, 0.028262915, 0.08860262, -0.30081618), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.01646094, 0.24261765, 0.33677813, -0.060467284, -0.19734232, 0.1702455, -0.1304959, -0.20504838, -0.3379331, 0.26765183, -0.26516193, 0.27015924, -0.08003835, 0.3141519, 0.29280853, -0.052082997), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.12277012, -0.46426025, 0.015877785, 0.028895028, -0.12974375, -0.075910136, 0.300476, 0.16338159, -0.012315035, 0.05539739, 0.019287715, -0.2627638, -0.10653122, 0.15327309, 0.116874225, 0.17951632), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.29410085, -0.17102611, 0.035222203, 0.538198, -0.082762614, -0.13113698, 0.23784018, 0.10809719, 0.10368062, -0.26618072, 0.017677844, -0.5524849, 0.20205925, -0.25295278, -0.08522028, -0.35101673), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.24038099, 0.047679562, 0.16125403, 0.12115515, 0.25935376, -0.12338007, 0.28222737, -0.1517331, 0.102381065, 0.02018978, 0.103473715, 0.008457937, 0.075750284, 0.030453209, 0.103425525, -0.11869024), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.027691573, 0.033041246, -0.053919036, 0.021841308, 0.22477351, -0.012002719, -0.088659704, -0.19888699, -0.14622316, 0.07693778, 0.06058014, 0.072771885, -0.09090909, -0.009634639, -0.04093643, -0.0016425458), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.121816635, 0.06796998, -0.00956044, 0.060272712, 0.0929867, -0.104182824, 0.068678245, -0.0025653015, 0.29900813, -0.121311836, -0.18685773, 0.047214147, -0.002424332, -0.071621366, 0.09782575, 0.069204815), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.115039505, -0.013585092, -0.062492177, 0.019942736, -0.22608118, 0.10974841, 0.121345155, 0.048270512, 0.036711007, -0.1555631, 0.3113601, 0.20424883, 0.036948208, 0.023162413, 0.093668364, 0.091156565), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.0239057, -0.0074546733, -0.072916195, -0.15032186, 0.11206848, 0.076949894, -0.0719725, 0.057246305, -0.12505415, 0.17029393, 0.059913885, 0.10695817, 0.11587671, 0.009000426, -0.0065819114, 0.112660386), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.22613746, 0.010249483, 0.31479695, -0.15589239, 0.21750645, -0.16260515, 0.03900687, 0.31478724, 0.24153055, -0.13562167, -0.13101026, -0.30842167, -0.09156883, -0.08611807, 0.0021150038, 0.19845119), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.09328654, 0.065565474, 0.053929932, -0.0614148, 0.10553007, -0.16130202, -0.14184211, -0.0015263067, -0.015361093, -0.20926285, -0.23366193, -0.06125057, -0.071300104, 0.01055638, -0.05240934, 0.06743602), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.05055375, 0.085141584, -0.025911124, -0.035443313, -0.1763071, 0.085818924, 0.19284901, -0.006149421, -0.0160643, 0.11941451, 0.20142859, -0.047862962, 0.049561072, 0.06118226, -0.117986836, -0.10885573), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.0026763107, -0.13232177, 0.040220898, 0.056682535, -0.03708343, 0.22508788, 0.14923818, -0.106249794, 0.035745993, -0.18804651, -0.3110593, -0.20087922, -0.14625967, -0.0653864, -0.061015815, -0.04066649), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.111738384, -0.104334466, 0.029024106, -0.09726162, 0.2414019, -0.029426873, 0.09094325, 0.027416501, 0.30706093, -0.09682458, -0.19449362, -0.014534671, 0.15952238, -0.033171862, -0.10819316, -0.10238822), target1);\n\ttarget1 = MulAdd(na3, MF4x4(0.56843907, -0.18652008, -0.07477079, -0.09572682, 0.004717268, -0.19569749, 0.012557746, -0.16934179, 0.20934415, -0.13695319, -0.085793145, 0.16430594, 0.1280811, -0.035566512, 0.17796053, 0.034620196), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(0.10944063, 0.056659624, -0.10928797, -0.48222318, -0.03679725, 0.12002146, 0.06371042, -0.024989901, -0.19508527, 0.35469803, -0.034514666, 0.05471589, -0.008078808, 0.086663045, -0.06641959, 0.14787014), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(-0.08401734, 0.065710895, -0.03586741, -0.09523177, -0.11976769, -0.00039887297, -0.11169928, 0.11623861, 0.06338808, 0.1087186, 0.26752025, 0.27731213, 0.042043414, -0.040737793, -0.13757998, 0.03160253), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(0.03308292, 0.11817877, 0.04941428, 0.053257942, 0.20836346, -0.3157687, -0.15115938, 0.017689008, -0.08777182, 0.075874984, -0.11381275, 0.15768103, -0.25251803, 0.024785532, -0.1119765, -0.08488973), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(0.14967972, 0.08358996, -0.12477746, 0.18376626, -0.11429529, 0.18852599, 0.12402519, 0.13575697, -0.17223327, -0.18583423, 0.08749376, 0.14127673, 0.04728666, 0.13141015, -0.1578823, 0.064156786), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(-0.18258065, 0.05539021, -0.08642571, 0.22043483, -0.03830304, 0.10055482, -0.050123304, 0.12830205, -0.4921733, 0.2718683, 0.11772524, -0.07781355, -0.0075595984, 0.060227167, 0.1285977, 0.2978205), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(0.19988084, -0.36680242, -0.0095746415, 0.091812566, 0.3152317, -0.075949475, -0.04308324, 0.049759876, 0.02971871, 0.18617181, 0.19829167, 0.17954859, 0.015149219, -0.15809381, 0.10850363, 0.017803097), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(0.056506306, 0.15181234, -0.1497428, 0.01186181, 0.02351036, 0.01086669, -0.031891935, 0.01414558, 0.27038968, -0.2806401, -0.14722337, 0.080689445, 0.07039954, -0.054969363, -0.016640754, 0.020795437), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(-0.237999, 0.13528651, 0.005025065, -0.01291728, -0.22655746, 0.022678101, 0.07165532, 0.0073296893, 0.084639646, -0.06724732, -0.13105223, 0.10164715, -0.15071161, 0.08882156, -0.016988168, -0.013606533), target1);\n\t\n\tMF4 target2 = { 0.15939143, -0.031111173, 0.011407361, 0.04436536 };\n\ttarget2 = MulAdd(a1, MF4x4(0.1606533, 0.1120602, 0.427334, -0.056228757, -0.026887462, 0.0858575, 0.0052684247, 0.1645524, 0.021588106, -0.08577256, -0.03301297, -0.087385215, 0.17341405, 0.26737398, 0.04566977, 0.047820427), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.21000437, 0.05300574, 0.060565695, -0.086724475, 0.09684198, 0.12685667, -0.10724282, -0.11021523, 0.048485592, -0.0054517, 0.081800036, -0.099787444, -0.12168391, 0.07623567, 0.09177046, 0.15815327), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.14400747, 0.13797458, 0.11044521, 0.077145234, 0.14364728, 0.10041894, 0.0948857, 0.08613703, 0.030833652, 0.102926254, 0.029892365, -0.09385337, 0.07609406, -0.038274735, 0.22529188, -0.0905732), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.13334684, -0.083001845, -0.06109816, 0.067442395, 9.6367134e-05, -0.10395697, 0.047389086, 0.07404194, -0.11931296, -0.029852618, -0.08998846, 0.16543494, 0.19911745, -0.014106389, -0.020616226, 0.011981892), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.20999044, 0.20443644, -0.08602043, -0.06026268, 0.0016786976, -0.15406793, 0.25403517, 0.0038395252, -0.16244787, -0.19482566, -0.113314606, 0.007111468, -0.026472634, 0.08177431, 0.13382603, -0.01771927), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.14934808, -0.022533301, -0.14221415, -0.096389346, 0.11613694, 0.21117163, 0.22294325, -0.029256172, -0.072161585, -0.09670809, -0.24253419, 0.10479088, 0.20190297, -0.08443066, 0.08334989, 0.2928627), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.030550636, 0.095876954, -0.040062953, 0.024307664, 0.17360783, -0.035755854, -0.20959523, 0.069054864, -0.1061238, -0.26194566, 0.2781827, -0.118610375, -0.09682604, -0.076366246, -0.05720086, -0.08075027), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.15727855, 0.21407695, 0.009924877, -0.0027381582, 0.16699612, 0.017624786, -0.13224785, 0.008606034, -0.05968717, -0.009152095, -0.084314294, -0.14502133, -0.13212982, 0.2531764, -0.09840475, 0.020581203), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.06285324, 0.019129366, 0.15062185, -0.0018203754, 0.025869751, 0.09390758, 0.027623225, 0.09279268, 0.12548098, -0.05622771, 0.024048142, -0.011120709, 0.039858714, 0.022324169, -0.061184626, 0.15133153), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.25750592, -0.0633985, 0.05274334, 0.05652166, -0.13369319, -0.19132645, -0.11266925, 0.05310033, -0.10603932, -0.18876615, -0.23720984, 0.23625968, -0.1460642, -0.16662763, -0.31894067, 0.00010953036), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.021643812, 0.27677965, -0.18880053, -0.085671276, -0.12699273, 0.07259516, -0.09705578, 0.0103639, -0.10424065, 0.2421007, -0.15788709, -0.03597044, -0.03210864, -0.009501378, -0.29830885, 0.18951061), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.023235895, -0.15663858, -0.097848825, -0.030312262, -0.36207277, -0.044624195, -0.24912846, 0.001322196, -0.012719531, -0.061012562, 0.02297421, -0.083919466, 0.023231668, 0.17829593, -0.20094186, 0.062941045), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.031992577, -0.33281925, 0.24781865, 0.10445937, -0.043928526, -0.0048965504, 0.025098981, -0.02432072, -0.06936203, 0.06697805, -0.03503784, 0.04098378, 0.11242077, -0.47939962, -0.36156863, 0.10633177), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.360187, 0.15471298, 0.19546136, -0.19344117, 0.19245885, 0.10948706, -0.25480017, -0.117233664, 0.07698171, 0.00455522, 0.016817722, -0.21183428, -0.3989548, -0.0053129625, 0.32735184, -0.25722015), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.19386199, -0.104854785, 0.2354883, 0.07680881, -0.08103157, 0.19879752, -0.20958872, 0.03404414, 0.2462412, -0.025986584, 0.15228593, 0.082260065, 0.05948899, 0.018289726, 0.26004076, 0.29258958), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.43535206, -0.1665342, -0.078847095, -0.09834152, 0.3344753, 0.14931677, 0.26555872, -0.050443217, 0.1165338, -0.018918963, -0.18268648, -0.08987844, -0.15032545, -0.41353035, 0.04693913, 0.12682211), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.101665966, -0.2346043, -0.13883743, 0.09837179, 0.11640853, -0.11128404, 0.1264696, 0.13364471, -0.0010915099, 0.32518107, 0.015125061, 0.0014352624, -0.32198808, 0.14844672, 0.045113582, 0.22434932), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.04287463, -0.031287823, 0.07444511, 0.215022, -0.051081534, 0.09054911, 0.094913155, -0.16440862, 0.025819149, -0.035652477, 0.11303366, 0.072897494, 0.15771803, -0.026064822, -0.27329972, 0.3400305), target2);\n\ttarget2 = MulAdd(a3, MF4x4(0.15108323, 0.099104606, -0.18490814, 0.282546, -0.39287362, 0.020549994, 0.03981046, -0.38331905, -0.028022572, 0.07132567, 0.054721024, -0.0544467, 0.30145043, 0.07482834, -0.030623315, -0.14339122), target2);\n\ttarget2 = MulAdd(b3, MF4x4(-0.19015107, 0.084599644, -0.08060123, -0.13798787, 0.11629986, 0.1486292, 0.22505176, 0.120357476, 0.09555313, -0.012545042, 0.14008446, 0.09553097, -0.13701685, 0.13754234, 0.08133829, 0.0583218), target2);\n\ttarget2 = MulAdd(c3, MF4x4(-0.011506865, -0.12886223, 0.32145864, -0.0046038935, -0.15737815, 0.31331423, 0.014334723, 0.13329573, 0.059868217, 0.044668417, 0.41486976, -0.115652, 0.07570654, 0.119870186, -0.04211968, 0.13550858), target2);\n\ttarget2 = MulAdd(d3, MF4x4(-0.06290216, -0.09683136, 0.17791402, -0.06173693, -0.5663153, 0.6814847, -0.30665252, -0.015765276, -0.35518414, 0.014619069, 0.0059011583, -0.011811011, -0.12891632, -0.09697547, 0.0122915255, -0.035630453), target2);\n\ttarget2 = MulAdd(e3, MF4x4(0.36552843, -0.02239533, 0.31511658, 0.07742532, 0.38120705, -0.34059232, -0.1941228, -0.009505623, -0.057844408, -0.08539643, -0.15442915, 0.047755927, -0.10766272, 0.19164445, -0.04577609, -0.02152571), target2);\n\ttarget2 = MulAdd(f3, MF4x4(0.25128686, 0.008428173, -0.2337189, -0.07352831, 0.4192482, 0.03234093, -0.107415706, -0.59545743, 0.08484682, 0.10139428, 0.032704517, -0.03676146, 0.0709341, -0.08012427, -0.17445756, -0.051028527), target2);\n\ttarget2 = MulAdd(g3, MF4x4(-0.13946229, 0.14634825, -0.29945642, 0.054991852, -0.19391525, 0.18525685, -0.01332443, 0.19226684, -0.25809357, -0.16726302, -0.08535996, 0.04962988, -0.21382174, -0.27475968, 0.14896728, -0.07398321), target2);\n\ttarget2 = MulAdd(h3, MF4x4(0.012350131, -0.15466039, 0.2637539, -0.004446026, -0.23348337, 0.31829268, 0.30077904, -0.26715708, -0.2248632, 0.026697354, -0.13744812, -0.11420962, 0.12333178, 0.20206316, 0.14819679, 0.11332464), target2);\n\ttarget2 = MulAdd(i3, MF4x4(-0.1398207, -0.08409686, 0.28911248, -0.17092308, -0.3288522, -0.33649427, 0.08738124, 0.07093669, 0.042545132, 0.056477334, -0.043472584, 0.11007758, -0.001716612, -0.10464193, 0.03468551, 0.18904419), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.22511648, -0.21305616, -0.20453261, -0.039165854, 0.12624744, -0.24751776, -0.071244866, -0.013594594, 0.050315578, -0.07449747, -0.2612381, 0.16027644, -0.16809192, -0.124898806, -0.038302764, -0.17824896), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.011263025, -0.13628832, -0.018516185, -0.02475848, 0.09929525, 0.039110962, -0.12850322, -0.1350285, -0.35264796, -0.021238754, -0.11728184, -0.1417785, 0.2576594, 0.08627893, 0.11525315, -0.12663105), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.098808385, 0.11969382, -0.09717777, 0.15366855, 0.05112679, -0.0064458046, 0.17321971, -0.11823168, -0.010137996, -0.35834765, 0.22273073, 0.20014246, -0.077788174, -0.10495039, -0.17693104, -0.069975644), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.058652826, -0.12872136, 0.3963312, -0.15295003, -0.05818842, -0.4533677, 0.20178635, 0.24527496, 0.25999078, -0.37886587, 0.19364087, 0.18344274, 0.22268198, -0.14165895, 0.48145312, -0.23087662), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.11743857, -0.081544854, -0.19755375, -0.12016749, -0.28253412, -0.04377212, 0.15896732, -0.14978753, -0.25513977, 0.0025451197, 0.41349715, -0.28266567, -0.25201386, 0.54169023, 0.21759638, 0.09750061), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.2587435, 0.18573955, -0.23956883, 0.021557074, 0.020746572, 0.020505207, 0.08808335, 0.19680786, -0.061584104, -0.24666953, 0.054818455, 0.10405006, -0.24831708, -0.13658181, -0.0833388, 0.24120714), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.29441085, 0.03656414, -0.2596772, -0.057041578, 0.1569663, -0.09881767, 0.08505022, -0.01768552, -0.051293768, -0.099874936, -0.05937486, -0.06985686, 0.055836957, 0.12361765, 0.00034758533, -0.16590339), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.08935089, -0.34096143, -0.06724781, 0.057755265, -0.07378229, 0.19852296, -0.101910785, -0.35927492, -0.27025247, 0.077470385, -0.26122475, 0.1062427, 0.34269986, 0.022384735, -0.19875982, -0.046883546), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.023113059, 0.023807336, 0.04232145, 0.12731242, 0.079464786, 0.10940335, -0.1920892, 0.069054574, -0.046453483, -0.1463778, 0.050447907, 0.37861434, 0.19577271, -0.08457038, 0.055992957, 0.0051751668), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.0143063385, -0.031832237, -0.081230044, 0.15558316, 0.24739249, 0.06730676, 0.022930989, -0.060339663, 0.16502666, 0.0032860334, 0.13078189, -0.13917513, 0.083792515, 0.038169254, 0.26199514, -0.20886219), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.07898116, -0.001202372, -0.1436358, -0.013730994, -0.011920493, 0.067917384, -0.032699063, -0.04563186, 0.16329978, 0.13089089, -0.29516026, -0.17357638, 0.02513132, -0.14417541, -0.0026529275, 0.028195161), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.1278416, -0.0652329, -0.080299005, -0.054219954, 0.15680717, -0.13077177, 0.25564823, 0.10533668, -0.10988264, 0.3860151, -0.18009946, -0.47674116, -0.10072908, 0.041740764, 0.1123633, -0.04076864), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.20640877, -0.24586456, -0.10259232, 0.111054115, -0.18076079, -0.22535121, -0.29812837, 0.12035098, 0.027053986, -0.10918923, -0.3172506, 0.11992493, -0.006251823, 0.2550944, -0.15903941, -0.12368186), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.36056486, 0.25076455, 0.13362978, -0.033405777, -0.32817405, 0.0695707, 0.01829935, -0.08318219, -0.28797764, 0.16128948, 0.14374499, -0.025840933, 0.078341916, 0.13052103, -0.100241534, 0.10946945), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.07073338, -0.112097755, 0.22497103, 0.13549447, -0.13218129, -0.22181363, -0.13737568, 0.06865537, -0.45603344, -0.35373682, 0.37757057, 0.1678293, -0.029289875, -0.13187636, 0.12758663, 0.04016698), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.040351316, -0.05093577, -0.08653635, -0.007213745, -0.3845516, -0.029778607, -0.47889423, 0.12643112, -0.11173547, 0.043787614, 0.2647412, -0.0109354155, -0.0064909635, 0.106970474, 0.11885388, 0.07061224), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.066118404, 0.1848857, -0.07987121, -0.044921577, -0.0753153, -0.060784195, -0.33154643, 0.116313264, 0.11995535, -0.071781196, -0.24509782, -0.0037734907, 0.037864428, -0.07115049, 0.10189698, 0.13620937), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.15173467, 0.117787406, -0.07836817, -0.06667758, -0.05646272, 0.33135724, -0.37163886, -0.315246, 0.22709703, 0.10267156, -0.07729526, -0.015280573, -0.015122008, 0.03244177, 0.17766209, -0.04914632), target2);\n\ttarget2 = MulAdd(na3, MF4x4(-0.07482478, -0.13012838, -0.15759332, 0.015014935, 0.35088012, 0.007073843, 0.24014178, -0.14308095, 0.12774545, 0.18122073, -0.2547015, 0.13359042, -0.0800425, 0.14722595, -0.24495813, -0.013143742), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(-0.15018739, 0.075401075, -0.056287423, -0.21596402, -0.106415406, -0.09301949, 0.124646366, -0.07675658, 0.39950943, -0.36134976, -0.20888598, 0.11607109, 0.107587025, -0.1626161, -0.29592493, 0.01726878), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(0.042367462, 0.05787438, -0.091712154, 0.26943466, 0.018607875, -0.06306163, -0.044719845, 0.12169627, -0.0043602907, -0.11714036, -0.41751066, -0.11060246, 0.14270274, 0.105742574, 0.162418, -0.016003838), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(-0.059574872, -0.16347532, 0.24761298, 0.0098720435, 0.22380106, -0.06946215, -0.011973621, -0.09775447, -0.108043805, -0.18910232, 0.36019576, -0.21156572, 0.008830671, -0.05479997, 0.31133842, 0.037727185), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(-0.1920284, 0.17142658, 0.05467186, -0.0761654, -0.25932217, -0.16042638, 0.2197324, 0.12581502, -0.48400918, 0.5538232, 0.41044307, -0.17291741, -0.18633147, -0.0820574, 0.038112838, -0.18555504), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(0.13163397, 0.09845959, -0.21711256, 0.26999414, -0.053519428, -0.029779429, -0.15492497, 0.0993045, -0.16189748, -0.4925058, 0.034618095, 0.085681, 0.16100337, 0.078292616, -0.40945208, -0.15787469), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(0.20844188, 0.07127721, 0.032387372, 0.033018872, 0.15301323, -0.055671003, 0.25810188, -0.07723897, 0.17080788, 0.12247039, -0.16662452, -0.06526193, 0.1584067, 0.14825343, 0.16793022, -0.055639073), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(0.31691772, 0.03877285, -0.31999993, 0.15607259, -0.014967208, 0.17467377, -0.021213053, 0.05274054, 0.09042282, 0.3026185, -0.19465268, -0.15643322, -0.28652924, -0.12624627, -0.123150274, -0.06579748), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(-0.12737115, 0.21119869, 0.021830728, 0.25310937, 0.056086678, -0.10591854, -0.09623413, 0.09552772, 0.0077543957, -0.38552082, 0.105930105, 0.21966095, 0.03846968, -0.18900576, 0.13454477, 0.01323755), target2);\n\n\tMF4 target3 = { -0.09157235, -0.025660357, 0.076311104, -0.13737188 };\n\ttarget3 = MulAdd(a1, MF4x4(0.009852172, 0.067582026, -0.004946671, 0.10223505, -0.10428496, -0.025925757, -0.1812229, -0.086897664, -0.007505929, 0.11395492, -0.046959464, -0.040778246, -0.05989385, 0.2917696, 0.21723987, 0.104860075), target3);\n\ttarget3 = MulAdd(b1, MF4x4(0.014223285, 0.23677638, 0.18793987, 0.1604355, -0.13773453, -0.035079855, 0.1325962, -0.01843488, 0.013658427, -0.039640892, -0.049931083, -0.17938142, -0.20694439, 0.13461684, 0.15713528, 0.061465815), target3);\n\ttarget3 = MulAdd(c1, MF4x4(-0.045403525, 0.24799547, 0.073604435, 0.21103963, 0.18720928, -0.06703258, -0.20043622, -0.067137614, -0.19021615, -0.020830747, -0.120527774, 0.20456503, 0.07813807, -0.03798654, 0.04036844, -0.0033802337), target3);\n\ttarget3 = MulAdd(d1, MF4x4(0.10385739, -0.06095687, 0.03991638, -0.119761765, 0.14859357, -0.2436967, -0.033547442, 0.06643773, 0.08074919, 0.00819047, 0.046388235, 0.113080844, 0.093403086, -0.25158677, -0.25340363, 0.043133873), target3);\n\ttarget3 = MulAdd(e1, MF4x4(0.13219471, -0.01887069, -0.26465404, 0.012883369, -0.15132889, -0.08190286, 0.1886762, -0.121109776, -0.086888224, -0.13945712, 0.10484367, -0.014462356, -0.04274967, -0.27132213, 0.035799675, 0.18913607), target3);\n\ttarget3 = MulAdd(f1, MF4x4(-0.09799585, -0.092021905, 0.042374767, -0.040835217, 0.2207681, 0.19816661, 0.2233777, -0.09462879, 0.174727, 0.067035824, 0.25794062, 0.03356712, 0.09257895, 0.03864686, 0.061125953, -0.10119902), target3);\n\ttarget3 = MulAdd(g1, MF4x4(-0.06601051, 0.011512823, -0.13370325, 0.0033915695, 0.0060606156, -0.049539644, -0.1075017, -0.17912976, -0.042368136, -0.011520146, 0.06601078, 0.09978972, -0.0129192965, -0.21929637, -0.018458387, -0.010336992), target3);\n\ttarget3 = MulAdd(h1, MF4x4(0.09475364, -0.005993277, 0.09861265, -0.03103845, -0.09583529, 0.058791347, 0.3326168, -0.11607132, -0.028693356, 0.11996273, -0.085005276, -0.029005809, -0.29191923, 0.06689837, 0.10442381, -0.024532465), target3);\n\ttarget3 = MulAdd(i1, MF4x4(0.0053415983, 0.06602273, 0.2246564, 0.031501666, -0.14868876, -0.0093808025, -0.34579018, -0.030635692, 0.092459954, -0.039631926, -0.0085174255, 0.022645477, 0.07514861, 0.060552113, 0.06597399, 0.0397574), target3);\n\ttarget3 = MulAdd(a2, MF4x4(0.0511157, 0.035152495, -0.19926861, -0.063245155, 0.13407591, -0.1288526, 0.23185496, -0.13392815, -0.09297701, -0.2809779, 0.07520502, 0.022971572, -0.08222417, 0.27030075, -0.10483476, 0.16590133), target3);\n\ttarget3 = MulAdd(b2, MF4x4(-0.30276665, 0.17359875, -0.06072175, -0.036741048, 0.12927541, -0.11135696, -0.1655047, -0.05786224, -0.10111195, 0.03949635, -0.11618777, -0.0020339678, -0.16504388, 0.21188384, -0.24663985, -0.16005285), target3);\n\ttarget3 = MulAdd(c2, MF4x4(-0.18182081, -0.05039593, -0.004631986, -0.03583777, 0.025373073, -0.33103603, -0.12213051, -0.10148533, -0.091509394, -0.13529696, 0.08307632, -0.0025659746, -0.5024331, 0.14926323, 0.05118105, -0.26585025), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.17135173, -0.23068328, 0.16332187, 0.06196188, 0.0034444374, 0.044823382, 0.010302396, 0.06775431, 0.024591392, -0.054694094, -0.048208185, -0.055681854, 0.08873465, -0.14074552, -0.027211398, 0.23973261), target3);\n\ttarget3 = MulAdd(e2, MF4x4(-0.12319059, -0.11429906, -0.36435902, 0.19346023, -0.030743172, 0.383669, 0.009289978, 0.0010576686, 0.17045438, -0.007082544, 0.16374406, 0.32419837, 0.15915118, -0.1356684, -0.13062716, -0.15574396), target3);\n\ttarget3 = MulAdd(f2, MF4x4(-0.19135374, -0.2005694, -0.0020886995, 0.01221146, -0.40867472, -0.081229836, -0.16124476, 0.08071337, 0.09998693, -0.061099563, 0.13301264, -0.043883327, 0.11045742, -0.2383618, 0.18627192, -0.35225677), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.37673324, 0.34416032, -0.103333436, 0.13149537, 0.006451586, 0.094312094, 0.08832807, 0.09592083, -0.116452016, 0.1066464, -0.115603626, -0.13193515, -0.13174447, -0.18561727, 0.13020653, -0.13364927), target3);\n\ttarget3 = MulAdd(h2, MF4x4(-0.1834991, 0.11584597, -0.04156077, -0.12755936, 0.09659385, 0.08903952, 0.31892854, -0.01448324, -0.008864266, -0.039691996, -0.08322731, 0.095220886, -0.090739064, 0.092071235, -0.2817547, -0.29630283), target3);\n\ttarget3 = MulAdd(i2, MF4x4(-0.24098976, 0.101338394, -0.28956947, 0.07237588, -0.10666849, 0.13332452, -0.20815872, -0.00023775037, -0.04327956, 0.0029107686, -0.008416182, 0.097931474, -0.37501606, -0.018609088, -0.10432809, -0.034832), target3);\n\ttarget3 = MulAdd(a3, MF4x4(-0.08794669, 0.028736163, -0.17888173, -0.06455644, 0.23870508, -0.23358688, 0.072483465, -0.0085282335, -0.12771352, 0.0380899, -0.25210154, -0.010397481, -0.034966666, 0.08883341, -0.22751594, -0.18751557), target3);\n\ttarget3 = MulAdd(b3, MF4x4(-0.04474889, 0.098189436, -0.10426362, -0.35184658, 0.043526888, -0.36088315, 0.13278794, 0.39718434, 0.0091220355, 0.0041375947, 0.17093311, 0.21236257, -0.10007804, -0.020010212, 0.111889765, 0.17784196), target3);\n\ttarget3 = MulAdd(c3, MF4x4(0.1536085, -0.026586162, 0.12273445, -0.0801658, 0.20678692, -0.11288633, -0.21298888, 0.4272659, -0.027916932, 0.13641946, 0.08454202, 0.15072668, -0.36861306, 0.09071778, -0.23418477, 0.3515129), target3);\n\ttarget3 = MulAdd(d3, MF4x4(-0.035221044, -0.05102627, 0.09558761, -0.008040629, -0.028807933, 0.303477, -0.20610638, -0.044902515, -0.19755092, -0.030813612, -0.17718953, -0.17694841, 0.03633824, 0.13118435, 0.029816214, -0.25406656), target3);\n\ttarget3 = MulAdd(e3, MF4x4(-0.14495026, 0.12816216, 0.16447757, 0.031679, -0.044026595, 0.19292583, 0.33260253, 0.10592396, 0.035314452, 0.027002327, 0.06259657, 0.20517996, 0.47153056, 0.33924934, 0.20535454, -0.25056842), target3);\n\ttarget3 = MulAdd(f3, MF4x4(-0.18414135, 0.19427143, -0.081241705, -0.01675198, -0.006523895, -0.07718575, -0.09325943, -0.08737854, -0.028951872, -0.17328268, -0.08241532, -0.08835567, -0.21019256, 0.16430716, 0.06124939, 0.035649084), target3);\n\ttarget3 = MulAdd(g3, MF4x4(0.016590597, -0.0022054093, -0.1470956, -0.08206723, -0.10903706, 0.0064417794, -0.18528567, -0.34366733, -0.06885517, 0.16456494, -0.018355783, 0.17814603, -0.07158972, -0.28178605, -0.20745122, -0.099933885), target3);\n\ttarget3 = MulAdd(h3, MF4x4(0.0065370193, -0.3044895, 0.055263646, 0.075996794, 0.024025463, -0.20411102, -0.01592019, -0.18464315, -0.08999649, -0.048265222, -0.08978591, -0.09877855, 0.4285961, -0.32419163, -0.10149259, -0.112745434), target3);\n\ttarget3 = MulAdd(i3, MF4x4(0.06848249, -0.11997486, 0.05998702, -0.024274347, 0.31168294, -0.017959671, 0.34084293, -0.34249943, 0.11690563, -0.11239628, 0.2128415, 0.017396145, -0.14399542, -0.13887884, 0.041329246, -0.099762276), target3);\n\ttarget3 = MulAdd(na1, MF4x4(0.11233947, 0.22560616, -0.14853792, 0.0025890833, -0.09261338, 0.026878078, -0.13337374, 0.14549397, 0.105454646, 0.20769532, 0.086635984, 0.05085061, 0.16791524, -0.031017043, 0.043081395, 0.18300867), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(0.21579266, -0.29286692, -0.05484676, 0.050306555, -0.1338697, 0.173389, -0.31768104, 0.051908243, 0.03826524, 0.48232502, 0.247302, 0.3487058, 0.28926015, 0.09935225, -0.18840632, 0.08882374), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.13517806, -0.40837446, -0.14227843, -0.27239424, -0.3059563, 0.063552625, 0.2631879, 0.56351787, 0.22826865, -0.065214194, 0.22837348, -0.4106273, -0.05822978, 0.13954113, 0.13192196, 0.031006072), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(0.14163558, -0.13529845, 0.063847534, 0.066068165, 0.041967303, 0.21868911, 0.22319448, 0.00028246938, 0.07615932, -0.3879002, 0.039115347, -0.08572038, -0.24845092, 0.13100919, 0.253391, 0.22104543), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(0.15111032, 0.18182786, 0.22756334, -0.008264583, -0.14041592, -0.5454497, -0.5890025, -0.010277932, 0.17194566, -0.14571565, -0.15525545, 0.17403725, 0.09960832, -0.016455285, -0.3584658, 0.3162123), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(-0.21418694, 0.20062631, -0.0948598, -0.09684068, 0.13923916, -0.09331503, -0.0857385, 0.21380557, 0.020379147, 0.21428087, 0.07388917, 0.089147344, -0.20121545, -0.023731146, 0.3213483, 0.17458193), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(0.10643249, -0.00972507, 0.022902627, 0.29897237, 0.3299111, 0.085025065, 0.21370107, 0.20150943, -0.30700487, -0.1884155, 0.2567519, 0.00021575678, -0.23836862, 0.35121775, 0.13285181, -0.08186422), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(0.2257978, -0.044991307, -0.19195051, -0.067948796, -0.119921125, 0.0917341, -0.12133957, -0.0779332, -0.30272362, 0.29493997, -0.1241099, 0.57692826, -0.07721382, 0.23687507, -0.34731215, 0.25507957), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(0.45565096, -0.15130155, -0.10940018, -0.44904032, -0.15766421, 0.20778829, 0.21851856, 0.1678922, -0.08152111, 0.1772852, -0.2632565, 0.20217079, -0.014408843, 0.021441357, 0.001290681, 0.036566503), target3);\n\ttarget3 = MulAdd(na2, MF4x4(-0.1125441, 0.019155068, 0.17547919, 0.010120996, -0.13596916, 0.06777857, -0.18246579, -0.07407904, 0.052627467, -0.12339828, 0.09181331, -0.039406203, 0.06598462, -0.20432016, 0.081749015, 0.016382169), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(-0.036727224, 0.05656203, 0.03722875, -0.19623469, -0.12215404, 0.15154731, 0.14583679, 0.13441144, -0.053393483, 0.3686272, -0.55303735, -0.18231596, -0.077573985, -0.17017044, 0.007368884, 0.06776619), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(-0.14654772, 0.0642838, 0.21146652, 0.1479552, 0.056684785, 0.08816999, 0.122986056, 0.025765898, 0.03539519, 0.2605786, 0.13069612, 0.2733717, 0.17476462, 0.04350784, -0.11019324, -0.085290305), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(0.070716664, -0.034127012, -0.17524591, -0.01733187, -0.0786243, -0.27215844, 0.14767595, -0.028927185, -0.268044, 0.17461409, 0.18505631, -0.07551577, -0.17443672, 0.33642206, -0.10371784, -0.09501668), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(0.41137508, 0.0039632237, -0.46695748, -0.14406478, -0.03359041, -0.26271477, -0.16481699, -0.23792827, -0.004218498, -0.082102485, -0.5725909, -0.19159988, -0.02892404, 0.018914402, 0.12181954, -0.045662787), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(0.059361387, -0.06857852, 0.29324803, 0.018895477, 0.5373943, -0.27193475, 0.19632731, 0.07846825, 0.46329513, -0.2541983, 0.3154752, 0.034318704, 0.07056785, 0.09071147, 0.018257828, 0.051888023), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(-0.01574486, 0.025618032, 0.013175459, -0.05611416, 0.1575709, -0.26184332, 0.14741376, -0.09205734, 0.15314968, -0.033463627, 0.27498275, -0.036637545, 0.07326095, -0.02758785, -0.008260478, -0.033497095), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(-0.043722082, -0.0053890822, -0.006806792, 0.078156926, 0.28195116, -0.19398853, -0.08171706, -0.13839847, -0.2289849, 0.13469638, -0.3921867, -0.12275613, -0.07401059, -0.08434314, 0.080387615, -0.023079267), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(-0.18200518, 0.15944996, -0.023199113, 0.03136635, 0.0124006495, -0.30606514, -0.008949306, -0.051349495, -0.039797418, 0.06404064, 0.089617595, 0.08849374, 0.07658024, 0.089631304, -0.021066017, 0.033190813), target3);\n\ttarget3 = MulAdd(na3, MF4x4(-0.00024305849, -0.005267714, -0.110663235, -0.1235196, 0.012671297, 0.09886661, 0.2275749, 0.060427323, -0.08923832, 0.06393884, 0.08300952, 0.1602908, 0.08163518, 0.2060279, 0.079629295, 0.09073638), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(0.09152832, -0.13788883, -0.0003542848, -0.41267133, 0.06780486, 0.14365548, 0.093432106, -0.14731646, 0.06173505, -0.07698671, 0.13692452, 0.07682172, 0.019543113, -0.07077461, 0.018755287, -0.01956884), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(-0.025053086, -0.25834808, 0.27484947, 0.0542093, 0.04252427, 0.11526509, -0.12203397, -0.11198108, -0.122830786, 0.01729993, -0.26451054, 0.08480724, 0.27700573, -0.108406745, 0.21402664, -0.19032313), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(-0.01717388, -0.21526851, -0.100241624, -0.33087742, 0.059813473, 0.11764993, 0.046627797, 0.10824857, -0.033078045, -0.07022686, 0.05082029, -0.18696983, 0.06715326, -0.24360675, -0.028528497, 0.03166471), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(0.18515922, -0.19291987, -0.18511395, -0.16356386, 0.10254811, -0.14086638, -0.05160376, -0.07413514, -0.17066383, -0.1579425, -0.102077566, -0.0865959, -0.06315448, -0.12120578, -0.24788655, 0.045280393), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(-0.23578815, 0.17898968, -0.076395154, -0.068680935, -0.19281612, 0.0008040003, -0.13505532, -0.010227741, 0.35332572, 0.10865026, 0.14042157, -0.07081392, -0.16093336, 0.02813831, -0.1142879, 0.07591385), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.10260084, 0.25031334, 0.030233473, 0.18198064, 0.06648322, -0.06662831, 0.29892904, 0.10685262, -0.099214576, 0.20269664, 0.14236231, -0.26043925, 0.17721854, 0.105084695, 0.11604949, 0.07190215), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(-0.006627316, -0.075635955, 0.37108654, -0.0919607, -0.12985592, 0.112184614, -0.16726716, -0.03870482, 0.01480095, 0.2044233, -0.051372997, 0.21520257, -0.08743421, 0.13153918, -0.15077852, 0.12159706), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(0.009482551, 0.12501961, 0.38921976, -0.1280031, -0.103060484, -0.027821409, 0.0720024, -0.027280543, 0.056729473, 0.048927493, -0.035154913, -0.08341783, 0.23103711, 0.046025522, 0.17039533, -0.014161812), target3);\n\t\n\tMF3 result = tex7.SampleLevel(sam, pos, 0).rgb;\n\tresult = MulAdd(e1, MF4x3(0.012708346, 0.014336439, 0.012533707, -0.0019346073, -0.0070978077, -0.009478742, -0.011659758, -0.009855903, -0.008657096, 0.0098037105, 0.010785594, 0.008409619), result);\n\tresult = MulAdd(e2, MF4x3(0.0056228717, 0.013483413, 0.008108323, -0.0013697809, 0.0026797573, 0.0037666177, 0.0130932415, 0.019868238, 0.01968549, 0.011160769, 0.012374028, 0.012855804), result);\n\tresult = MulAdd(e3, MF4x3(0.0011662204, 0.00025071716, 0.0022244148, -0.017808594, -0.013589306, -0.01396329, -0.008117086, -0.0068251803, -0.004963602, -0.0069141523, -0.009125296, -0.008327947), result);\n\tresult = MulAdd(ne1, MF4x3(-0.027597412, -0.02631107, -0.022816146, 0.009350171, 0.013661565, 0.015324706, 0.032538984, 0.02918167, 0.026186563, 0.018760988, 0.024502547, 0.023201061), result);\n\tresult = MulAdd(ne2, MF4x3(0.013216693, 0.00991115, 0.01178417, 0.0076343333, 0.004714098, 0.0074490295, -0.0064893183, -0.014818341, -0.01199717, -0.008334491, -0.009955103, -0.011240684), result);\n\tresult = MulAdd(ne3, MF4x3(-0.013846397, -0.012687341, -0.015767701, -0.0019117722, -0.0072347773, -0.0074835457, 0.013531867, 0.014263165, 0.012797156, 0.008260445, 0.0070536416, 0.0065693366), result);\n\tresult = MulAdd(max(target1, 0), MF4x3(0.0017003485, 0.0021871394, 0.0003407296, 0.0054420815, 0.00801073, 0.008788295, -0.012685104, -0.0150940735, -0.017530257, -0.030698642, -0.030817484, -0.028548386), result);\n\tresult = MulAdd(max(target2, 0), MF4x3(-0.008882145, -0.008943836, -0.007986094, -0.010494911, -0.011511255, -0.00892924, 0.014072905, 0.014985031, 0.011853883, -0.015823284, -0.017817877, -0.01684662), result);\n\tresult = MulAdd(max(target3, 0), MF4x3(0.012270136, 0.011127063, 0.010729208, 0.00027298275, 0.001011805, 0.001318525, 0.0029811305, 0.0029161042, 0.0060088155, 0.00021241597, -0.0013439909, 0.0013205905), result);\n\tresult = MulAdd(max(-target1, 0), MF4x3(-0.03467924, -0.035764243, -0.03348244, 0.023858175, 0.02580526, 0.026217844, -0.016814101, -0.016412167, -0.012021982, -0.0007905926, -0.0019904284, -0.0015143935), result);\n\tresult = MulAdd(max(-target2, 0), MF4x3(0.046779703, 0.04961137, 0.046104047, -0.023665644, -0.022809561, -0.02236428, -0.054706786, -0.056090504, -0.052543454, -0.015520943, -0.01587306, -0.0142722875), result);\n\tresult = MulAdd(max(-target3, 0), MF4x3(0.020273875, 0.020399818, 0.021745082, 0.037485637, 0.039574977, 0.03556703, 0.036673885, 0.04102765, 0.033708427, 0.024422405, 0.027724478, 0.0252598), result);\n\tresult += MF3(-0.0036656514, 0.006677459, 0.007698717);\n\n\tresult += INPUT.SampleLevel(sam, pos, 0).rgb;\n\tOUTPUT[gxy] = MF4(result, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Restore_Soft_VL.hlsl",
    "content": "// Anime4K_Restore_CNN_Soft_VL\n// Ported from https://github.com/bloc97/Anime4K/blob/4ba94b179a144200cb6b3052e690fe2ca5c6914c/glsl/Restore/Anime4K_Restore_CNN_Soft_VL.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Restore_Soft_3\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex6;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1, tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\t\n    uint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = { -0.040999945, 0.075765304, -0.0911532, -0.10705836 };\n\t\t\ttarget1 = MulAdd(src[i - 1][j - 1], MF3x4(0.14361712, -0.16690509, 0.37253398, -0.45202538, -0.21331833, -0.32675815, -0.33971128, 0.20261937, -0.20606318, -0.215143, -0.079716705, 0.15640882), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j], MF3x4(-0.17360486, -0.3435545, 0.08199117, 0.56259036, -0.120246716, 0.24312893, -0.021436244, -0.11864853, 0.19452724, 0.106943935, -0.077393375, -0.3503661), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j + 1], MF3x4(-0.072465785, 0.2772823, 0.25493625, 0.3098145, -0.115831695, 0.072458096, -0.014782132, -0.15310249, 0.12178311, -0.015555423, -0.2229811, 0.16469522), target1);\n\t\t\ttarget1 = MulAdd(src[i][j - 1], MF3x4(-0.18652022, -0.30702665, -0.59921896, 0.079824045, 0.4426619, 0.049343713, 0.44902903, -0.2711445, 0.20470268, -0.029203767, 0.29092675, 0.15562426), target1);\n\t\t\ttarget1 = MulAdd(src[i][j], MF3x4(-0.21041247, 0.48450592, -0.110547826, 0.3842122, 0.5303875, -0.26512837, 0.19846216, 0.045673862, 0.12773214, -0.05117536, -0.03510946, -0.30123934), target1);\n\t\t\ttarget1 = MulAdd(src[i][j + 1], MF3x4(0.3186735, 0.052702922, -0.12499774, 0.055628903, -0.16476867, 0.12642322, -0.18314636, 0.018323101, -0.3609603, 0.25649396, 0.3185421, -0.0057759956), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j - 1], MF3x4(0.16603558, -0.09259665, -0.28760567, -0.14319661, 0.12511417, -0.12551902, -0.00070228375, 0.20914114, -0.22466865, 0.1064727, 0.32598525, -0.08596318), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j], MF3x4(-0.03163653, 0.026722813, -0.4361858, -0.21164834, 0.4176763, 0.08203146, 0.35289326, -0.06128859, 0.20506798, -0.07098943, 0.1807802, 0.2658414), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j + 1], MF3x4(-0.09821681, 0.058886815, 0.39192092, -0.06791861, -0.15682612, 0.09503328, -0.23400265, 0.026475023, -0.08800713, -0.043749645, -0.18024494, -0.08045564), target1);\n\n\t\t\tMF4 target2 = { -0.029148052, -0.03215124, -0.6175828, 0.057135154 };\n\t\t\ttarget2 = MulAdd(src[i - 1][j - 1], MF3x4(-0.16406488, -0.2506693, -0.15592022, -0.05529256, -0.3997277, -0.229681, -0.07762124, 0.1843808, 0.07895815, 0.14437248, 0.219114, -0.048090722), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j], MF3x4(-0.2150676, 0.09080163, 0.19598733, -0.40578827, -0.33846557, -0.02518622, 0.037079208, 0.20188439, -0.013777575, -0.2369007, -0.30985412, 0.0411912), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j + 1], MF3x4(0.119948365, 0.23014452, -0.14962277, -0.096262485, 0.09625151, 0.2025487, 0.03933539, 0.12268028, -0.24373281, 0.19730613, 0.11634144, 0.12293635), target2);\n\t\t\ttarget2 = MulAdd(src[i][j - 1], MF3x4(0.08030697, -0.40114692, 0.21532272, 0.20222071, 0.073098, -0.004463858, 0.02820587, -0.18861918, -0.20994501, -0.12444653, -0.23178193, -0.13965288), target2);\n\t\t\ttarget2 = MulAdd(src[i][j], MF3x4(0.14150894, 0.14563078, 0.697704, 0.20918849, 0.26776335, -0.34291518, 0.06394055, 0.17925078, 0.4165139, -0.042595536, 0.105312675, 0.231854), target2);\n\t\t\ttarget2 = MulAdd(src[i][j + 1], MF3x4(0.024318576, 0.16668217, 0.0729521, -0.7071404, 0.3121693, 0.37295797, -0.015632952, 0.33763757, 0.00706697, 0.10836652, -0.11132417, 0.292844), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j - 1], MF3x4(-0.14489831, 0.0027769986, -0.24509215, 0.5557927, -0.1104541, 0.005070684, -0.020032275, -0.5642205, 0.16048644, 0.07248175, 0.20387374, -0.38145426), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j], MF3x4(0.33140838, -0.007438425, 0.26074782, 0.15947102, 0.219755, -0.14690271, -0.07412696, -0.24176367, -0.2230114, 0.027256912, -0.11255796, -0.05882673), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j + 1], MF3x4(-0.19712369, 0.003842208, -0.10893768, 0.09047115, -0.10260409, 0.18662766, 0.009733428, 0.0039940844, -0.006444674, -0.15196493, 0.06641555, -0.06169452), target2);\n\n\t\t\ttex1[destPos] = target1;\n\t\t\ttex2[destPos] = target2;\n\t\t}\n\t}\n}\n\n//!PASS 2\n//!DESC Conv-4x3x3x16\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.012687187, -0.11876551, -0.041985378, -0.10110911 };\n\ttarget1 = MulAdd(a1, MF4x4(0.05195995, 0.15220909, -0.24354807, -0.109075695, 0.020483498, -0.14830725, 0.0018816335, -0.0072673927, 0.0649385, 0.046050787, -0.10789607, -0.046609525, -0.11455093, -0.009358115, 0.11280759, 0.18053898), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.08619698, 0.091353096, -0.16379662, 0.07822936, 0.072919995, 0.1482446, 0.17846228, 0.04639898, -0.18998149, 0.1653338, -0.44187957, -0.010017503, -0.069953404, 0.08784785, -0.16391355, 0.35095468), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.088297926, 0.27259287, 0.013088447, 0.023461785, 0.10037149, -0.017414214, 0.08559885, -0.10822335, 0.10591637, 0.17240539, 0.15749931, 0.026641782, 0.11889612, -0.018095117, -0.08736018, 0.09934933), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.21426749, 0.0800268, -0.19816414, 0.07693414, 0.026270509, -0.11724047, 0.026078718, 0.13080709, 0.12207936, 0.056103867, -0.323923, -0.111454345, 0.059245165, 0.07257926, 0.032195322, 0.27225617), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.20130268, 0.026809234, -0.0020803472, -0.04394057, -0.1982125, -0.033678252, -0.12881789, 0.0025656687, 0.14193355, -0.2541802, -0.13239717, -0.05983356, -0.029376393, 0.33187667, 0.14438996, -0.21993925), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.12772562, 0.022498213, 0.24753313, 0.07440761, -0.17564529, 0.09971503, -0.013372, 0.09459552, -0.21597451, -0.40116546, 0.23446435, 0.1515452, 0.050813515, 0.19662157, -0.10604596, -0.24638489), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.23866327, -0.2706382, -0.07480157, 0.03789501, 0.117716484, -0.095995456, -0.0435066, 0.013025061, -0.029759895, -0.036287807, 0.08570493, 0.030151363, 0.18863682, -0.27228612, 0.020479294, -0.07058746), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.0026758043, -0.20750894, 0.2802277, -0.07761428, -0.012089615, -0.112726666, -0.03867965, -0.085082226, 0.034227375, 0.19662802, 0.26272395, 0.036822405, -0.23040786, -0.20173554, 0.07110236, -0.26939383), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.14012688, -0.067249745, 0.14726773, -0.0070919944, 0.19275497, 0.04460783, 0.18776374, -0.019941995, -0.076159865, 0.002261728, 0.238768, 0.039375026, 0.13200568, -0.023286859, 0.034387972, -0.01827453), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.0107542025, -0.13001555, 0.06596806, -0.03370635, -0.024291076, 0.10367739, -0.03396605, 0.041960735, 0.16230568, 0.024845246, -0.016806586, 0.22547007, -0.025378102, 0.064547986, -0.2113137, 0.042272836), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.2219356, -0.049535394, 0.10289468, 0.14175911, 0.013058568, -0.15909089, -0.02546921, 0.11721571, 0.13020545, 0.39660174, -0.07601573, -0.16366366, -0.023935124, 0.06681424, -0.26143414, -0.07485668), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.1405031, -0.0645044, -0.15865614, 0.1829069, -0.22526503, 0.08991175, 0.041972812, -0.012462953, 0.3022753, 0.19457603, 0.022607598, -0.25460255, 0.028327515, 0.14420614, -0.077984214, 0.09278112), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.13224132, 0.13115089, -0.188987, -0.19428022, -0.080641985, 0.20909777, 0.067079, -0.19832124, 0.13150498, 0.04450851, -0.2770351, -0.010381239, 0.32295567, 0.04445836, 0.030657565, 0.020271502), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.08188993, 0.039709873, 0.16059989, -0.13279189, 0.11389818, -0.071865685, 0.09312801, -0.08816363, -0.65844774, -0.6854379, 0.21431407, 0.597198, -0.3734657, -0.116027676, 0.015932929, -0.0653176), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.24136105, 0.21444799, -0.14235207, 0.08445492, 0.017335927, -0.49877876, -0.06224622, 0.1571534, 0.035594277, 0.059829034, 0.087631516, -0.17090686, -0.005452869, 0.13786094, 0.27586326, 0.046760406), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.095078, 0.30310658, 0.010268592, 0.18540539, -0.20722823, -0.0005848572, -0.06464327, -0.111019135, -0.07837157, -0.12183798, -0.09187498, -0.3368629, -0.08216629, -0.20095807, 0.009563313, 0.024838416), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.28712475, 0.0641969, -0.034764312, 0.13600683, -0.09211094, 0.009699817, -0.001104855, -0.026146285, 0.33425868, -0.16132632, 0.18051304, -0.104004376, 0.20768233, 0.0888418, 0.050057285, -0.020228952), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.11642946, -0.021900529, -0.08910504, 0.15492517, -0.19726521, 0.1434987, -0.24708387, 0.006737377, 0.11353539, -0.15897587, -0.029491093, 0.06002862, -0.09640613, -0.11342702, 0.21375169, 0.0062719737), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.15513068, -0.3151456, 0.20799752, -0.07449935, -0.09226967, 0.112302735, -0.16211908, -0.37986508, -0.27418482, -0.10445544, 0.21112369, -0.06780466, -0.062341, 0.07758948, -0.012719117, -0.16481343), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.16382848, 0.14490448, -0.012869055, 0.1804095, -0.05304844, -0.14624795, -0.14816979, -0.17435774, 0.25356865, 0.11435022, 0.19412366, 0.19499794, -0.10189348, 0.023880519, 0.16822465, -0.17454338), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.04854064, 0.11944563, 0.022984248, -0.0852543, -0.0077684796, -0.044182744, -0.02888099, 0.27452356, -0.07887827, -0.15155658, -0.12841311, -0.21202831, -0.18533322, -0.05852455, 0.0761054, -0.22115342), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.21520375, 0.11415518, 0.18909843, -0.16420493, -0.20909967, -0.3257246, 0.29332343, -0.029541709, -0.1679851, 0.14073059, 0.32720464, 0.13311239, -0.0021121972, -0.08773544, -0.045532625, 0.36960867), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.58407414, -0.23632582, -0.16739567, 0.264173, 0.09584864, 0.18455075, 0.20051196, -0.04616608, 0.13441175, -0.0055764276, -0.08625195, 0.097847305, 0.19565724, -0.12183587, -0.11488796, 0.2520169), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.01584208, -0.31471413, 0.017104283, 0.0682452, 0.18728764, 0.042960413, 0.06437809, -0.14483811, 0.13882554, 0.016576322, -0.029599546, 0.034904055, -0.20939542, -0.10213055, 0.08821727, 0.0030552552), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.2973797, 0.15791039, 0.10811437, -0.07947077, -0.26328024, -0.061920475, 0.12498813, 0.100570425, -0.018922925, 0.002256239, -0.094379805, -0.032315314, 0.48677605, -0.04879864, 0.028028104, -0.14557233), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.016148027, 0.13884154, -0.19554809, -0.006344376, -0.013450252, 0.2581758, 0.10643088, 0.23465036, -0.078438915, -0.099644944, -0.1442203, -0.2285087, 0.33528957, -0.17052084, -0.26595074, 0.14794162), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.041404825, -0.0813985, -0.19863169, -0.008302881, 0.023570588, -0.043578386, -0.20971186, 0.14654282, 0.048436746, 0.11266723, -0.25812748, -0.03340969, -0.18430679, -0.046258014, -0.007674466, -0.037139155), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.060693484, -0.08285047, 0.06638212, 0.18479855, 0.11099276, -0.14470962, 0.16915078, 0.32247669, -0.10845523, 0.0027510398, -0.014941873, -0.15779859, 0.051481526, -0.14748912, 0.12125527, -0.059839584), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.27571446, 0.01663349, -0.057985745, -0.089736536, -0.09541078, 0.18101417, 0.084854685, 0.11060913, 0.05631825, 0.066835634, -0.02837782, -0.049748126, -0.050051138, -0.05126488, 0.27121767, 0.06331115), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.13630085, -0.03787764, 0.13351586, -0.024081819, 0.10403757, -0.0034796793, -0.04838045, -0.064052396, -0.34672704, -0.06271465, -0.024577484, -0.13450806, -0.013759927, 0.11706738, 0.07913658, -0.016639082), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.023730129, 0.020174952, 0.048988737, -0.013395666, 0.0073305597, 0.059409764, -0.27721968, 0.13349204, -0.022947624, 0.112007216, -0.008175606, -0.14903043, -0.35755506, -0.02145208, -0.021762518, -0.17889674), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.19315337, 0.16287236, -0.07667863, -0.020898499, -0.021058874, -0.20849414, -0.3571716, -0.13001479, 0.44977963, 0.016706442, -0.03471178, 0.35189477, 0.3050666, -0.019236205, 0.16278796, 0.3093703), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.1507458, -0.13747548, -0.05822537, 0.16035356, -0.08386089, -0.03476887, -0.0022021863, -0.032772254, 0.17572841, 0.004200287, 0.045312192, 0.27265742, -0.037853006, -0.056344658, -0.3095155, 0.15215549), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.11428048, -0.19523771, 0.016499955, -0.03625986, 0.15670861, -0.077859454, -0.059640404, 0.023970904, -0.009806148, 0.0904747, -0.006978744, 0.15938658, 0.030886533, 0.13507655, -0.002613293, -0.1335748), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.20070468, 0.06281564, -0.026250493, -0.042895693, -0.06574456, 0.10412931, 0.12061968, -0.0750467, -0.10865931, -0.05715226, -0.022071969, 0.02608941, -0.21416737, -0.18582128, -0.091236554, -0.044943426), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.057988428, 0.21430638, -0.17991407, -0.051662743, 0.060244065, -0.021494022, -0.018070806, -0.09278776, -0.011404125, 0.064091586, 0.12852973, -0.16610947, 0.08740408, 0.045517463, -0.27932477, 0.11050971), target1);\n\t\n\tMF4 target2 = { 0.010324113, -0.01262194, 0.0762259, -0.014071781 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.07579397, 0.008718031, 0.03874428, -0.022123579, 0.064964466, -0.27502275, -0.0053009577, 0.11669645, 0.007708085, 0.009340055, -0.13001843, -0.03758108, -0.07045759, -0.08749642, -0.21329811, 0.13205966), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.14087188, -0.12068241, 0.046639618, 0.05115712, 0.108357444, -0.05040456, 0.03280633, 0.09336891, -0.055509757, -0.036777936, 0.043575723, -0.041975956, -0.17782387, -0.12977566, -0.0736514, 0.17304243), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.2638534, 0.0385968, 0.14743716, 0.18057759, -0.036564615, 0.107838504, 0.08324167, 0.13403444, -0.41366392, 0.072824344, -0.013165103, 0.06114856, -0.040475495, -0.14222278, 0.10455181, 0.0021660402), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.30221993, -0.06315301, 0.057081617, -0.020285107, 0.053984016, 0.13086873, -0.30863532, 0.028010197, 0.0070908144, 0.19940577, -0.013766302, -0.039389495, 0.28064504, 0.05970737, 0.074613005, -0.10217121), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.042094592, -0.1725651, 0.3514404, 0.008126955, 0.08739713, 0.081543595, -0.12912413, 0.0854203, 0.28885832, 0.107783586, 0.22996111, 0.13907135, 0.071920335, -0.15172984, 0.07151959, 0.1406894), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.1072496, 0.03934067, 0.20014063, 0.051399443, -0.29610988, 0.18659018, -0.17761967, 0.08701774, -0.17493258, -0.08035252, 0.03155133, -0.13986085, 0.023490375, 0.083998375, 0.014006612, 0.03860323), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.09324427, 0.10990628, -0.18758917, 0.0054821614, -0.09425237, 0.1192338, -0.063183226, -0.15047066, 0.15664004, 0.037881903, -0.06762073, 0.09622682, 0.028449943, -0.25338468, -0.18897526, -0.18360007), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.030310342, 0.2083269, -0.04938559, -0.009608655, 0.019751158, 0.12257741, 0.090964966, -0.09864261, 0.058817703, -0.053385522, 0.15931179, -0.10585003, 0.06986225, 0.3435001, -0.33307528, -0.14035752), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.13506691, -0.00015406386, -0.15279713, -0.2290177, 0.019568326, 0.41041428, 0.10566904, -0.08350839, 0.19839814, -0.31052053, -0.04471875, 0.07629561, -0.117245845, 0.19819061, 0.1683647, 0.11896638), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.06920538, 0.2656798, -0.06529862, -0.1695985, -0.21614018, 0.17208195, 0.123307765, -0.061470803, 0.07827313, -0.18543327, 0.0937214, 0.098630935, -0.17667519, -0.01978596, -0.09126346, -0.034487445), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.030779282, -0.24423946, -0.08623178, 0.1490136, 0.029337894, 0.17548573, -0.05990294, -0.29123273, -0.10020608, -0.3527181, -0.105286725, 0.27502912, -0.25686985, 0.18521136, -0.110095225, -0.07999611), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.03266192, 0.045139533, -0.03275437, -0.13748369, 0.15633966, 0.089048125, -0.07592367, -0.09013536, -0.18907873, 0.08265683, -0.069233745, 0.27151683, -0.0647864, -0.15308899, 0.021954, 0.05528693), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.10284642, -0.14667438, 0.18669777, 0.053000864, -0.12383836, -0.037600834, 0.29438737, 0.04739594, 0.07846367, -0.11676573, -0.048153553, -0.34298027, 0.028358897, 0.119508564, 0.08012271, -0.019992562), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.22123314, -0.2223458, 0.002969434, -0.07143056, 0.027859585, 0.010600199, 0.056626067, 0.15160584, -0.16350581, -0.044484995, -0.1805076, 0.33351076, 0.073631234, 0.0167081, 0.15704727, 0.107799366), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.006882137, 0.19744347, 0.041128602, 0.17459555, 0.10376277, -0.12519689, 0.0993647, -0.13044195, 0.10485074, 0.1712284, 0.13369127, 0.24649777, -0.038975652, -0.24550107, 0.19567624, -0.09961197), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.24763626, -0.0902329, 0.21201743, 0.078442305, 0.013261817, -0.019013328, -0.07576136, 0.14993069, -0.24216306, -0.05666454, -0.064632, -0.38150248, 0.14649945, -0.020437164, -0.13821694, -0.026110074), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.21790951, -0.08288076, 0.011415891, -0.1446542, -0.15910968, -0.21221179, -0.06154624, -0.028623452, 0.10872824, 0.17089185, 0.26339474, -0.42544034, 0.095593184, 0.20962211, 0.0034138034, 0.024243662), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.050784085, 0.06333505, 0.041011192, 0.17474842, 0.14517011, -0.4340653, -0.10313813, 0.12524489, 0.18353751, 0.4589042, -0.037463415, 0.07841999, -0.114173576, -0.10669665, 0.029463472, -0.14393249), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.12771326, -0.06622126, 0.08327681, -0.15113758, -0.114005744, 0.059280578, 0.04071302, -0.11074485, -0.23312584, -0.032968838, 0.13736604, -0.15776984, 0.067029156, 0.0580463, 0.20655325, -0.2112593), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.16148107, 0.02879793, -0.24918973, 0.009605728, -0.102177374, 0.050518002, -0.00015101423, -0.046602443, 0.5081422, -0.044740383, -0.06243097, 0.076031074, 0.1157983, 0.03965003, 0.109161526, -0.36589798), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.018941574, 0.000912917, -0.2585099, 0.13668273, 0.062664494, -0.09246434, -0.14594543, -0.11160076, 0.015663203, -0.02447256, -0.070794076, 0.11807077, 0.12931514, 0.14109722, -0.07506544, -0.012781477), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.48816162, 0.16294348, 0.011336221, 0.107038386, -0.01978858, 0.039453425, 0.112853855, 0.007536018, -0.005471479, -0.11315905, 0.032013394, 0.11523904, -0.2504089, 0.04803124, -0.09689627, 0.24372064), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.61343086, 0.09531598, -0.24803302, 0.23788263, 0.13495958, 0.24733612, 0.1575427, -0.06863399, 0.2341275, -0.15821049, -0.165848, 0.0290172, -0.010136783, 0.04415787, -0.2619951, 0.09987892), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.19411229, 0.24528526, -0.250216, -0.33602244, 0.17639299, -0.052413136, 0.122578874, 0.028618507, 0.25713214, 0.22033587, -0.19680484, 0.028938502, -0.083384775, -0.06476429, 0.036840588, -0.14297847), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.2897587, -0.12176407, 0.19259763, -0.106649496, -0.026704982, -0.036201328, -0.06753124, 0.37967134, -0.20092241, 0.006229027, 0.12085137, -0.09810282, -0.1501556, -0.0099991355, 0.25044358, 0.08538966), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.11304407, -0.24147832, 0.21644448, -0.035938095, -0.036439262, -0.042730987, -0.04384442, 0.10325233, -0.32405272, -0.11873838, -0.15075137, -0.036929503, -0.10808143, 0.25799102, 0.13749036, 0.5451476), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.24142508, -0.04895773, 0.09022442, 0.2821465, -0.06298706, -0.1807906, 0.02960867, 0.22310257, -0.1915311, 0.2900501, 0.1670845, -0.080343634, 0.25779882, -0.27144584, -0.23575482, -0.14724477), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.020742219, -0.10571064, -0.0010137435, 0.14439318, 0.32805952, -0.027505733, -0.07111945, 0.07043296, -0.09525604, 0.03175366, -0.14633068, -0.15810682, 0.18050082, 0.08191363, 0.07047039, 0.0018573351), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.023874652, 0.14996628, 0.11298528, -0.1508891, -0.052415725, -0.02570088, 0.0055150646, 0.16365297, -0.046594325, 0.18095094, 0.09934885, -0.066233225, 0.2404304, -0.112728044, 0.14004207, 0.11369578), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.14799033, 0.025304591, 0.031008242, 0.03795376, -0.15800071, -0.043169834, 0.10797239, 0.17129694, 0.09674189, -0.11010672, 0.07283912, -0.11063907, 0.108249694, 0.025199141, 0.09162024, -0.1827302), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.08983324, 0.07823903, -0.137839, 0.11909572, 0.11996334, -0.05947995, -0.25459376, -0.18159851, 0.044489045, 0.052461334, 0.13674203, 0.12579007, -0.33665392, -0.07313439, -0.013640538, -0.010538632), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.0884388, -0.10034604, 0.047238693, 0.12025125, -0.16648497, -0.20305477, 0.08240087, -0.17453992, 0.19033237, 0.28438845, -0.32885036, 0.14011146, -0.13389368, -0.012868356, -0.15273216, -0.19119217), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.09196779, -0.13800567, 0.08842335, -0.18658079, 0.17512907, 0.021311145, -0.06347847, -0.13827331, -0.10689703, -0.1707886, -0.15724367, -0.167876, 0.22493233, 0.3070637, -0.035266686, -0.0068385694), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.2739973, 0.07336105, -0.196827, 0.060224827, 0.05752693, -0.014346674, 0.025412507, -0.27530053, 0.27755278, -0.07631679, -0.053861864, 0.113329165, -0.31025892, -0.012681806, 0.06228483, -0.054306302), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.16827694, 0.16333361, 0.068389125, 0.24560109, 0.11659498, 0.052896734, -0.020310031, -0.17830387, -0.07551057, -0.01822214, -0.037451357, 0.24607496, -0.2033962, -0.11107965, 0.05005381, 0.13685274), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.13665263, -0.24541081, 0.0012457973, -0.012630116, -0.09559698, 0.17756529, -0.039300505, -0.044217475, -0.22984356, -0.2294885, 0.104534455, -0.04131095, 0.084843494, 0.038027752, -0.106351435, 0.18853655), target2);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n//!PASS 3\n//!DESC Conv-4x3x3x16\n//!IN tex3, tex4\n//!OUT tex1, tex2, tex5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.023354841, 0.0019475977, -0.0705355, -0.08216019 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.06961854, 0.06914646, 0.120440066, -0.04889646, -0.012870159, 0.01994181, 0.052958567, -0.14740478, -0.0027199117, -0.004924673, 0.10131955, -0.11496505, -0.06742836, 0.08287776, 0.11206167, -0.021625644), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.025003597, 0.05389498, 0.14938618, 0.12255602, 0.050963886, 0.16300994, 0.17633909, 0.03229484, 0.2092038, 0.13367431, -0.09538967, 0.1636076, -0.022082182, 0.10898033, 0.0422286, -0.062253885), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.0018258828, 0.08333001, 0.002765037, -0.022241322, 0.1628206, 0.14671557, 0.3001151, 0.030986495, 0.05225914, -0.04880372, 0.15963705, 0.17972782, 0.055128947, 0.114626616, 0.03460699, -0.07679627), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.08866054, 0.0882386, 0.13833097, -0.079257324, -0.03060485, 0.049487974, 0.092268504, -0.17009564, 0.021603461, 0.20750603, 0.18884364, -0.10977116, 0.31758478, 0.053426504, 0.093257, 0.14912026), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.13069148, 0.21368778, -0.4405162, -0.009193694, 0.090230525, -0.15897161, -0.005089127, -0.06011075, -0.27336648, -0.021869129, -0.2084852, -0.0850094, -0.10896211, 0.27229342, -0.044210993, -0.03346366), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.05807779, 0.08506817, 0.23984064, 0.12547795, 0.036945213, 0.039088245, -0.10716132, -0.15966031, 0.13548918, 0.07746645, -0.248966, -0.15717135, -0.059498273, 0.0088413125, -0.02828682, -0.021795277), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.013289853, 0.007272393, 0.06875863, -0.053158432, -0.03578172, 0.20148727, 0.1961931, -0.16910668, 0.03259818, 0.054221123, -0.0326064, 0.06493197, 0.053533003, -0.11878436, 0.14398894, -0.17543368), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.17906332, 0.1111989, 0.047910325, 0.11560207, 0.09790123, -0.2023765, 0.04265116, 0.0075303926, 0.012974969, -0.0853146, -0.04037416, 0.14489946, -0.0716403, -0.055603035, -0.30376709, -0.011667526), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.053314358, -0.012657763, 0.0077033425, 0.12168191, 0.016371705, 0.11979062, -0.08494259, -0.009617431, 0.1303907, 0.043279216, -0.17285421, 0.15823162, -0.030746695, 0.121796146, 0.13097613, 0.0024783302), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.11677548, -0.06592395, -0.022185773, 0.0031006308, -0.00906918, -0.0006412884, -0.00083743286, 0.083697535, -0.060518038, 0.14058606, 0.122444086, 0.17866874, 0.02376487, -0.06369968, -0.026537767, 0.21466877), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.12340551, -0.015656117, 0.051990572, 0.04361656, -0.05291406, 0.10119005, 0.17603071, 0.10464767, 0.03288951, 0.091776796, -0.17373918, -0.12871055, 0.10205503, -0.17783496, -0.17020486, -0.09781929), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.01845568, -0.008877597, 0.14279746, 0.031775143, 0.041680444, 0.08784194, 0.044564564, -0.0011678484, -0.010219994, 0.10472676, 0.046920944, -0.110975444, -0.1197329, -0.11303071, -0.14893234, -0.091113724), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.03856561, -0.12173735, 0.040876064, 0.13847597, -0.14995924, -0.13332345, 0.18687452, -0.22562599, 0.08920785, -0.0017916666, 0.019448435, 0.2306492, -0.054546747, -0.1465318, -0.10628867, -0.0073827514), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.12689775, 0.11765595, 0.13039489, 0.06940679, 0.2672624, -0.03880143, -0.11693099, -0.05516293, -0.09665274, -0.2583138, 0.22954193, -0.19324702, -0.39629623, -0.35457405, 0.10052407, -0.19756024), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.06307673, -0.096393906, -0.0075868783, -0.25133502, 0.03436604, -0.008201423, 0.06386583, 0.106548436, 0.014626536, 0.03485315, -0.043418273, -0.1141408, 0.005102567, -0.11701804, -0.01645601, -0.057083), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.019062268, 0.020416953, -0.08854219, -0.037497565, 0.09449262, -0.09127615, -0.063330196, 0.08736769, -0.12394077, -0.17950213, -0.11101161, 0.16013645, -0.09370585, 0.0047447495, -0.04288296, 0.00314098), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.08263743, -0.14441489, -0.14886282, -0.05694989, 0.4254853, 0.10864832, 0.26322174, -0.042006254, 0.24269578, -0.053833783, -0.11558995, -0.066605136, -0.064816564, -0.25914803, -0.017624624, 0.0402331), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.100058846, -0.030422715, -0.19600148, -0.13322774, 0.1796998, 0.087852575, 0.07324559, -0.0047889417, 0.007248384, 0.08930289, 0.09643387, -0.0060126656, 0.16357517, -0.06628222, 0.030618697, 0.097391844), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.09539377, -0.10802722, -0.014952347, 0.1683223, -0.03919409, 0.041155327, -0.012186347, -0.030456683, -0.015024977, 0.061710294, 0.00049987395, 0.27338788, 0.04845922, -0.014114694, -0.06371904, 0.008664), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.063082814, -0.02755945, -0.15663072, -0.053271208, 0.070173115, 0.038125586, -0.11840675, -0.016337764, -0.07963128, -0.06404943, 0.23033784, -0.007848355, -0.04434174, -0.092422634, -0.013985954, -0.038096108), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.037121523, -0.020622304, 0.086708754, 0.045878958, -0.13188364, -0.022858748, -0.22411314, -0.08116162, 0.048863005, 0.039260563, -0.04934298, 0.11015131, 0.028177079, 0.025245499, 0.1067935, 0.15324049), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.068235874, -0.14401375, -0.032677606, 0.02996807, -0.11290208, 0.114133574, -0.09627152, 0.053930115, 0.14560424, -0.15935057, -0.13495773, 0.29710987, -0.23231608, 0.14334352, 0.070753984, -0.08189047), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(-0.22378983, -0.09858718, 0.30114698, -0.0048736916, 0.02198528, 0.21444769, -0.11228022, -0.14812283, 0.092372194, 0.1598949, 0.2534843, 0.4932573, -0.16642319, 0.12972073, -0.04147445, -0.09365905), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.132199, -0.0798279, -0.18289213, -0.15133642, -0.033057958, 0.007495456, 0.070398286, 0.049111973, -0.03361502, 0.032059964, 0.003850814, 0.22922683, 0.20279214, -0.07350396, 0.27681342, 0.11891455), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.095355205, -0.08533997, -0.043466177, 0.03183743, 0.0048090555, -0.07969942, -0.044769235, 0.15350139, 0.06485437, -0.027922742, 0.0850892, 0.00069019396, 0.035737295, 0.20380683, 0.03413393, 0.025630401), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.26616514, -0.024066277, 0.09220501, 0.09643391, -0.014585791, 0.22894275, -0.053128377, -0.08719867, -0.08819027, 0.01932318, -0.113633566, -0.15435793, 0.10542983, 0.029819246, 0.33675614, -0.059085276), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.031325538, 0.040770013, -0.049561024, -0.2095101, -0.09537227, -0.075998954, -0.04323478, -0.05470401, -0.110066876, 0.059249427, -0.042351052, -0.047700178, 0.21932366, -0.12850443, 0.035361454, 0.013699006), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.08417607, 0.113477044, 0.03574209, 0.007835156, 0.2021717, 0.030678429, 0.19313626, -0.03506592, 0.04233059, -0.08540689, -0.07128929, -0.13245375, -0.08918939, -0.042622462, 0.19011301, -0.18228586), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.19981891, -0.16255717, 0.042949058, -0.06921157, 0.279451, -0.11536949, -0.13747527, -0.10020231, -0.013784027, -0.06727259, 0.3556115, 0.08460814, -0.15348805, -0.07692103, -0.018658075, 0.0037634284), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.09063814, -0.036312047, 0.13528036, 0.0070792423, 0.11834377, 0.02331524, 0.09386154, 0.07144935, 0.033078104, -0.1397121, 0.09283168, 0.2118868, -0.06313442, 0.032146804, 0.0060367053, 0.005822348), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.035949346, 0.06469895, -0.0051385965, -0.078584194, 0.43195483, 0.0045206803, -0.24012396, 0.21436183, -0.013394304, -0.04198491, 0.06645506, -0.23869638, -0.02311661, 0.06589808, 0.16800866, -0.21120183), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.24937367, -0.042277586, 0.08117994, 0.3105402, -0.26087892, -0.10325264, -0.08689298, 0.0064907144, 0.031937066, 0.09783758, -0.9514562, -0.104631096, 0.27990052, 0.36389935, 0.057687905, 0.14072314), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.19865227, 0.09398578, 0.06911146, 0.13077813, 0.024283953, -0.0036808057, -0.036725305, -0.024085987, 0.061556816, 0.0029027078, 0.24621862, 0.112107046, 0.068239614, 0.052718107, 0.20803368, 0.065064415), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.055511028, -0.08662344, -0.074801624, -0.021917107, 0.18730342, 0.047116343, 0.14872652, 0.10580926, 0.16962165, 0.16628978, 0.17343876, -0.1697205, 0.047853447, -0.22705628, 0.031780355, -0.09273609), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.17306295, -0.067308225, -0.17174196, -0.13221754, -0.24622467, 0.029901514, -0.12799668, -0.04145667, -0.14546, 0.013308366, 0.028113116, 0.1678875, 0.07922657, -0.015584258, 0.17059629, 0.07330948), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.09916512, 0.0623665, -0.022458963, 0.061962493, 0.18569344, -0.06590287, 0.111395456, 0.08477448, -0.03609452, 0.024279302, -0.083497405, 0.06459743, -0.22963138, -0.12262581, 0.006980887, -0.06653474), target1);\n\t\n\tMF4 target2 = { 0.08523788, 0.052322272, 0.08955637, -0.06945023 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.13703531, 0.06135254, -0.05032855, 0.0039429665, -0.05997914, 0.03737832, -0.09703001, -0.08112204, -0.096779875, 0.086732335, 0.03021232, -0.14636067, 0.079296306, 0.006656948, 0.08904937, 0.06196539), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.26374274, 0.16698441, -0.08554561, 0.03734819, -0.08525629, 0.12257442, 0.015473835, 0.13266069, 0.008439022, -0.05002345, 0.03232084, 0.17349075, 0.014541135, -0.10353582, 0.13339484, -0.13474584), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.05637785, -0.049726896, 0.06597188, 0.0058668824, -0.10623723, 0.13441847, 0.015975956, -0.07811197, 0.05975957, -0.062021587, -0.06533749, 0.083735935, 0.02666556, 0.029904561, -0.0102926055, -0.10931666), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.22616413, 0.042830274, -0.116208926, -0.053796053, -0.1112898, 0.20703097, -0.34109348, -0.065111674, -0.17255561, 0.16784647, 0.00193431, -0.043237597, -0.02353095, -0.1302526, 0.05119598, 0.01403269), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.086109385, -0.053006437, -0.24992542, 0.007938272, -0.0027849772, 0.09198081, -0.17596659, 0.030577915, -0.31807357, -0.29618275, 0.0056317504, 0.3662508, 0.16753437, -0.12481447, -0.057597708, -0.14973637), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.14585754, 0.027715279, -0.039035518, 0.11505972, 0.0038059987, -0.20368981, -0.014822689, 0.094012834, -0.20693347, -0.37216228, -0.12690443, 0.2727411, -0.15475404, -0.01948714, -0.12414737, 0.10378582), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.11750072, 0.051394574, -0.011073509, -0.1100907, -0.1389209, -0.10706716, 0.0017484069, -0.059556484, -0.20038931, 0.24976069, -0.011129469, -0.080446415, 0.19259459, -0.14515446, -0.07275811, 0.039244935), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.101780266, 0.003889027, 0.010705813, 0.011088775, -0.20406786, -0.009807119, 0.23070864, -0.030722639, -0.012015954, 0.025211284, -0.29246482, 0.04907962, -0.10485314, 0.21213223, 0.15788344, -0.014188987), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.1546438, -0.15895118, 0.010730076, 0.034053337, -0.018741185, -0.008467293, 0.13143812, 0.022905342, -0.27543658, 0.3054419, 0.07025048, 0.29454592, -0.0032350307, 0.01671764, 0.081928045, -0.10051137), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.014834404, 0.07487839, -0.16554666, -0.04127725, 0.15239598, -0.017607473, 0.09927426, 0.15027349, -0.2073968, 0.041613225, -0.10290223, -0.12565911, 0.022021815, -0.07609557, -0.16338238, 0.04468512), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.01768976, 0.0637369, 0.006542782, -0.0022799321, -0.14728844, -0.058199093, -0.029928437, 0.079634584, 0.095769696, -0.13526416, 0.20718366, -0.10116214, 0.1688786, -0.08906526, 0.020397741, 0.06541649), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.033067044, 0.10095467, -0.13792777, 0.022673525, -0.012797848, -0.11222105, 0.11443862, 0.04893716, 0.11389547, -0.07337629, 0.21447009, -0.032212257, 0.23070163, -0.18156143, 0.14542435, -0.10207653), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.22985588, 0.012290226, 0.018557416, -0.064000085, 0.012936774, -0.104329854, -0.0719669, 0.24160251, 0.03716294, -0.093069404, -0.12110873, 0.013251573, -0.12731232, -0.1995954, -0.07679729, 0.06823493), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.23359679, -0.052702624, -0.08710696, 0.19826421, 0.12880315, 0.19875911, -0.20581602, 0.32980308, -0.14479029, 0.099422045, 0.44737315, 0.13044962, 0.12935589, -0.13621494, 0.14902137, 0.09162335), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.10801082, -0.22644557, 0.035719793, -0.12396268, 0.2906566, 0.119107775, -0.15470679, 0.17997102, -0.12866725, -0.12695445, -0.06832712, 0.017622665, 0.08215481, 0.065239124, -0.1256659, -0.06811625), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.097956754, 0.09383762, -0.19813508, 0.0035260199, -0.14278924, 0.0660843, 0.19110036, 0.11025648, 0.15489757, 0.011157471, -0.16014035, -0.050144047, 0.0032884583, 0.061513808, -0.03385016, -0.08534137), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.09499595, 0.04162155, -0.26091605, -0.18066265, -0.21523187, -0.036668014, 0.09586408, 0.059850723, -0.10890033, 0.28857672, -0.32993382, 0.05107536, 0.012024929, -0.27968574, 0.15081042, -0.07215633), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.15673614, -0.064684846, -0.13838115, 0.1264376, -0.23772664, 0.11594999, 0.0898036, -0.092647165, 0.26081505, 0.05110054, -0.017965768, 0.06740709, -0.24977967, 0.05645255, -0.08204664, 0.0435078), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.02560865, -0.1613835, 0.05876215, 0.101586774, -0.00058163394, 0.0013674656, 0.039857507, -0.002919488, 0.05573127, -0.04311352, 0.05305971, 0.10097247, 0.036392104, -0.025071293, 0.029137935, -0.08593101), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.12406646, -0.21399136, 0.05611706, 0.021867402, -0.037916705, 0.05941278, 0.11277805, -0.12387807, 0.008577062, -0.045022104, 0.16465645, -0.07607619, 0.035939474, 0.07221297, -0.13557361, 0.07806311), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.19589397, 0.011909766, -0.01258029, -0.065313555, 0.07366803, -0.0812486, 0.115863465, 0.019752543, -0.15854625, 0.11246406, 0.007201303, 0.0008530298, -0.0287012, -0.036224626, 0.059641607, 0.09416462), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.20361906, -0.20671111, -0.1126041, 0.049152024, 0.17586707, 0.10047246, 0.13149028, -0.16302691, -0.08559989, -0.17756243, -0.0061752857, 0.124775924, 0.020011704, 0.17147969, -0.0003063916, -0.015890911), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.11051906, 0.13774526, 0.29333818, -0.029932505, -0.07021508, 0.046212852, 0.11793092, -0.081830084, -0.18609521, -0.108229816, -0.044969153, -0.041069634, -0.13936938, 0.11356429, 0.19260931, 0.093210496), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.010555152, -0.15726428, -0.13187453, -0.12396212, 0.17309372, 0.100884624, 0.11547714, -0.030650318, -0.21877939, -0.0015167049, -0.090150684, 0.029793834, 0.1465573, -0.038805004, -0.033211514, -0.04926991), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.10250675, -0.030922988, -0.008545946, 0.024706079, 0.105154864, -0.06838902, -0.12627976, 0.032457255, 0.21747419, -0.12865087, -0.056018118, 0.07152061, -0.11214344, -0.029831404, 0.044855718, -0.04316971), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.12806997, 0.12385188, -0.06831653, -0.015933594, 0.08645126, 0.013043054, -0.19599608, -0.060719345, -0.23076192, 0.19181651, 0.1292978, 0.036317572, -0.061692618, -0.25434494, -0.10012762, 0.06366783), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.11098094, 0.034632366, -0.053560194, 0.08499573, 0.20842391, -0.020262053, -0.023394845, 0.048971336, 0.10436084, 0.12614205, 0.035942093, -0.07592917, -0.07455495, -0.012119416, -0.011834865, 0.21032205), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.00055114913, -0.06662242, -0.009248925, -0.0024843027, -0.22993802, -0.04828541, -0.08667693, -0.093717255, 0.14400347, 0.030130679, -0.01590651, 0.10399553, 0.14478837, -0.11228224, -0.039653912, -0.042144097), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.011044514, -0.09870122, -0.24879128, 0.111903004, 0.092567004, 0.06100228, 0.0053522107, 0.065252475, -0.18228072, 0.25602147, -0.2863954, 0.103064165, 0.052214783, -0.017557586, -0.07434391, 0.021111684), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.04537496, -0.024985183, -0.15247425, -0.0009907635, -0.09677889, 0.09858206, -0.030702371, 0.03539458, -0.029408665, 0.24335481, -0.1918429, 0.08056781, 0.1548214, 0.2850923, -0.15131058, -0.052048493), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.055409238, -0.13090813, -0.016612396, -0.019183576, -0.18499215, -0.013184845, 0.038750056, 0.10953814, -0.18437819, 0.19183092, -0.09780726, -0.046532292, -0.10841146, -0.17717329, -0.1731886, -0.06741823), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.27919188, -0.14904179, 0.22850563, -0.17785722, -0.32835802, -0.19134615, 0.32093298, 0.24667856, 0.51687604, -0.59745705, 0.23057328, -0.41411245, -0.4234339, -0.03083826, -0.13972719, 0.1729651), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.042352367, -0.109207705, -0.31047532, 0.08896513, -0.2187999, -0.117951825, 0.060705405, -0.10287316, 0.013815159, -0.023699438, -0.053614594, 0.09065406, -0.15286967, -0.101803675, 0.019537682, 0.12476822), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.0016159728, 0.04094818, 0.012745902, -0.051958837, 0.014557628, 0.00061195926, -0.11669799, 0.08763203, -0.27820277, 0.17871988, 0.10634548, 0.05234229, 0.03827577, -0.3117398, 0.027675012, 0.0655132), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.0025006514, -0.1457415, 0.053443488, -0.0050932285, 0.01582735, 0.18783967, -0.066718, -0.15485887, -0.039741408, -0.21280284, 0.1502977, 0.09507925, 0.17178543, -0.014238171, -0.35757875, 0.026410697), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.19434428, -0.079038315, -0.017264817, -0.04004242, 0.0063378955, 0.027904915, 0.02571677, 0.09895997, -0.036605608, -0.19889063, 0.015920812, -0.014095519, 0.4363826, -0.14143194, 0.015463533, -0.1656284), target2);\n\n\tMF3 target3 = MulAdd(e1, MF4x3(0.121882804, 0.055417646, 0.037575886, 0.040015355, 0.10440659, 0.120197006, 0.008896276, 0.07269119, 0.09253319, 0.009000448, -0.033739295, -0.059260685), 0.0);\n\ttarget3 = MulAdd(e2, MF4x3(-0.048027042, 0.09210703, 0.123745404, -0.007914943, 0.05483587, 0.054822505, -0.005998682, 0.005822986, 0.009868176, -0.05866792, -0.04236153, -0.022935968), target3);\n\ttarget3 = MulAdd(ne1, MF4x3(-0.091270015, -0.033997003, -0.012321896, -0.037983265, -0.078790314, -0.085029654, 0.10656225, 0.0008334142, -0.0041227583, 0.077364065, 0.033960085, 0.029391684), target3);\n\ttarget3 = MulAdd(ne2, MF4x3(0.15057671, -0.037442014, -0.037083894, 0.015493511, -0.016119987, -0.027061606, -0.012329675, 0.0060544596, -0.019787522, 0.12182345, 0.11346318, 0.08640806), target3);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n\ttex5[gxy] = MF4(target3, 1);\n}\n\n//!PASS 4\n//!DESC Conv-4x3x3x16\n//!IN tex1, tex2, tex5\n//!OUT tex3, tex4, tex6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.013646388, -0.021442367, 0.0045393505, -0.037433166 };\n\ttarget1 = MulAdd(a1, MF4x4(0.048841953, -0.010713874, 0.09238948, -0.0789676, -0.093295254, 0.063662216, -0.023454266, -0.06739832, 0.027439933, 0.007399632, -0.03550259, -0.013834889, 0.17168441, 0.06177229, 0.023950668, 0.14574073), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.117296845, -0.07858486, -0.02099164, -0.024150673, -0.11662526, -0.26440877, -0.05449493, -0.13366842, -0.06870016, 0.12457937, 0.25052628, 0.013982828, 0.15127566, -0.031653196, -0.13851896, 0.04148151), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.024360385, -0.31051615, 0.012448293, -0.11265428, 0.06123606, -0.0701936, 0.033618104, -0.064061284, -0.06969811, -0.108838804, 0.014163671, 0.02596177, 0.20071186, -0.0028744373, 0.13663651, -0.05592813), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.13492568, -0.0726796, 0.13431883, -0.085713945, 0.056370113, 0.115660414, -0.14475793, 0.0044200714, 0.027387753, 0.045452334, 0.28178552, 0.017371183, 0.17304336, 0.0582999, 0.14465337, 0.046005037), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.064034574, 0.041531377, 0.08218889, -0.44529077, -0.010563538, -0.14926371, 0.051012456, 0.08209141, 0.24089444, -0.225398, -0.22259372, -0.26353076, -0.1687418, -0.11501685, -0.016655196, -0.09882357), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.019985389, -0.19189276, -0.104917, -0.11139956, -0.08406414, 0.031484302, -0.082132496, 0.025829919, 0.07512055, 0.31116992, 0.061163265, -0.074850895, -0.091695994, -0.26492774, -0.06617365, 0.06590624), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.1326703, 0.13008863, -0.1659525, -0.058325157, -0.047528613, 0.06777741, 0.06953616, 0.010587038, 0.031675722, -0.08119788, -0.11269768, -0.06225964, -0.26593694, 0.03627298, 0.12866129, 0.17876588), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.29016155, -0.12549841, -0.050858997, -0.088932805, 0.002237332, 0.01287246, 0.30138868, -0.071756564, -0.061206467, -0.11114371, -0.25731218, -0.11551616, -0.069513, -0.004583348, -0.10647163, 0.01981785), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.16387528, 0.03450354, 0.03422023, -0.014030813, 0.13418834, -0.010909722, -0.00447121, -0.03082622, -0.23983373, -0.020655053, -0.054034587, -0.07133469, 0.21171515, 0.06268651, -0.1738516, -0.15001713), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.040721033, -0.037582736, -0.13819644, -0.123978324, 0.1650318, 0.033942625, 0.17534302, 0.06452234, 0.18384823, 0.0048657497, 0.20220642, -0.0025760103, 0.011163899, 0.027265374, -0.051284578, 0.19202651), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.057493486, -0.031516504, 0.10835143, -0.040618125, -0.07762303, -0.06787725, 0.025559613, -0.0055560498, -0.0017830619, 0.020185964, -0.06656476, -0.008523214, 0.32331157, -0.21633361, 0.15338033, -0.104042485), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.18544987, -0.090446, -0.26797467, -0.082941435, -0.15003708, -0.11446041, -0.0394892, 1.1379096e-05, 0.04978554, 0.3350256, 0.032780237, 0.034625802, 0.0596261, 0.045886245, 0.009002243, 0.04746998), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.17104147, 0.0054165213, 0.09161088, -0.0673989, -0.119282715, -0.09094731, 0.47243354, 0.09914267, -0.13958418, -0.0050379517, 0.14352496, 0.18380567, -0.16128838, 0.08766813, 0.013876981, -0.09808636), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.09617889, 0.045525175, -0.2550057, -0.02874332, 0.2743444, -0.20102581, 0.008461914, 0.16626629, -0.13309516, -0.19307104, 0.15780488, 0.15518525, -0.2790243, 0.056782067, 0.16836968, 0.17771688), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.10694667, 0.14490083, -0.037976455, 0.013456577, -0.1166783, 0.060722847, 0.07323464, -0.013812333, 0.03234213, 0.50859296, -0.20670377, -0.019631205, -0.022543924, 0.21776745, -0.093769215, 0.12193299), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.15260598, -0.04798592, -0.02370747, -0.005714705, 0.030857049, -0.16643822, 0.23971851, 0.08117996, -0.069645695, -0.06674784, 0.033509918, 0.06333286, 0.14010383, 0.02218942, -0.036704093, 0.043163314), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.14653306, 0.002759894, 0.10548246, 0.24976018, 0.3212893, -0.07108953, 0.14068738, 0.29437128, -0.020556152, -0.17813908, 0.1989112, 0.12182122, -0.19231579, 0.06547012, -0.032785345, 0.089717634), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.23632105, -0.027022298, 0.00586518, 0.01836479, -0.2854795, -0.035417695, -0.07586866, 0.0715673, 0.17984483, 0.11210451, 0.032767817, 0.097993985, -0.010899036, 0.15933803, 0.05454052, 0.06768528), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.017289463, -0.058823984, 0.0807603, 0.32464716, 0.2756627, 0.036061637, -0.034578573, -0.08811335, 0.031841308, 0.11359879, 0.07553143, -0.028648997, 0.057192322, 0.07769366, -0.1998847, -0.06258051), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.0422091, 0.046305113, 0.028377453, -0.031071126, 0.06866086, 0.1538135, -0.009288249, -0.25543538, 0.07067607, -0.114061736, -0.024740022, -0.11824987, -0.17426041, 0.0028396242, 0.12849464, 0.057790644), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.057328146, 0.030677445, 0.07496485, 0.07847613, -0.22358766, -0.15659446, -0.18270054, -0.21316889, 0.084770195, 0.013863274, -0.001335942, -0.04027535, -0.15230416, -0.048156176, -0.04614562, 0.089494966), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.117369525, 0.026577681, -0.1941765, 0.14904885, -0.16210394, -0.19549404, 0.19999947, 0.37138188, 0.14809363, -0.05078633, -0.092692114, -0.08533522, 0.12769112, 0.017061725, 0.104464866, -0.026744602), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.0880251, -0.005333869, -0.10327546, 0.30419552, 0.107773595, 0.02335926, -0.19014318, 0.19670166, -0.09443473, 0.10621109, 0.36843884, 0.13197622, 0.24537645, 0.4032842, 0.21791221, 0.08400414), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.06408587, 0.15366535, 0.042582024, 0.15629277, 0.028716238, -0.013479061, -0.23052843, -0.2992272, -0.050045617, -0.27255702, -0.038093377, 0.0031149297, -0.05625518, 0.52598304, -0.0845234, -0.09116851), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.02294159, -0.011902539, 0.00079296535, 0.030631313, 0.02114366, 0.082455896, 0.09450867, -0.08027284, 0.042443607, 0.15427661, 0.11882799, -0.040319934, 0.23706424, -0.107808165, -0.1730313, -0.06340064), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.2645207, 0.002157867, -0.095794424, 0.1141035, 0.08255855, -0.06977906, -0.04348005, 0.27864936, -0.1197219, 0.015997604, 0.09500464, -0.0010631803, 0.07198933, -0.053128377, 0.02176274, -0.001298847), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.045475803, 0.03626341, -0.00891833, 0.17907676, -0.2810277, 0.13725498, -0.02413441, -0.08605496, 0.08306595, -0.012227401, -0.0070282067, -0.019027572, -0.13443586, -0.041331865, 0.029120144, -0.00490357), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.13398282, 0.06475972, 0.2528711, 0.02553969, -0.13428321, -0.03931247, 0.11360386, -0.18912545, -0.3725821, -0.018747944, -0.20893294, -0.012743096, 0.07444533, -0.15381604, 0.29776138, 0.10601149), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.21793252, 0.07817356, -0.109576665, 0.19185133, -0.072846025, 0.04960289, -0.07506936, 0.12839878, -0.0061091883, 0.093669325, 0.009295678, 0.03780657, -0.10901407, 0.1375137, -0.0745914, 0.1468883), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.10739044, 0.30611086, 0.1585515, 0.07903283, 0.05612715, -0.0061900485, 0.13646163, 0.15230569, 0.036846787, -0.15846778, -0.18765065, 0.06611226, -0.07209187, 0.056037188, 0.04302953, -0.03887873), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.05618538, -0.072312586, -0.018046018, 0.049542785, -0.033638306, -0.035169322, -0.25882784, -0.036425237, 0.43763217, -0.07049093, 0.08085481, 0.013634128, -0.2701461, -0.13007875, 0.09603447, 0.2479431), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.02283992, -0.24593964, 0.04616348, 0.023422526, -0.20994014, 0.064769074, -0.07680045, -0.30547765, 0.1518723, 0.31953967, -0.12841515, -0.19525428, -0.0076093865, -0.112106465, -0.04573789, -0.04834478), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.008045419, -0.20285496, 0.15290824, 0.036240693, 0.11959966, -0.15712506, 0.096806675, 0.008780234, -0.19716795, -0.3824029, 0.1376541, 0.13325086, -0.103316806, -0.31788048, -0.071698256, -0.25901568), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.13714787, 0.020738773, 0.13716534, 0.12359137, -0.038154524, 0.053202964, -0.12023912, 0.09011213, -0.012448548, -0.026505312, -0.11293235, 0.10613704, -0.39916727, 0.041521315, 0.10659441, 0.027749784), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.26475835, 0.044597875, -0.31229413, -0.17121075, -0.21795374, -0.009583571, -0.13428004, -0.30734754, -0.017038794, 0.113667324, -0.1516075, 0.06525228, -0.13789397, -0.05770066, -0.016166758, -0.29457557), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.054183286, 0.022085225, 0.086794585, 0.10968018, 0.1276148, 0.05739452, 0.08860957, -0.08131373, -0.081570424, -0.107991874, -0.03724999, 0.000843539, 0.20231429, -0.123543546, -0.19073018, -0.28328305), target1);\n\t\n\tMF4 target2 = { -0.002022359, -0.007333954, -0.038140967, -0.03819673 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.13948695, 0.016643738, 0.08168136, 0.02315663, 0.017184775, 0.11487715, 0.05770107, 0.010102888, 0.04955321, -0.045132335, -0.05731744, -0.05798246, 0.2245112, 0.17406365, 0.08979801, -0.10607952), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.2812785, 0.022830509, 0.15164222, 0.13460225, 0.22263442, 0.2558749, -0.122489706, 0.10409658, 0.023308244, -0.19583783, -0.007824269, 0.06256542, 0.11161938, 0.14878923, 0.30865005, 0.08962341), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.20843887, 0.012371968, -0.008279775, -0.042467568, -0.13022369, 0.056743186, -0.018389069, 0.13964763, -0.03361555, -0.053087234, 0.012521351, 0.0209293, 0.015771557, 0.11718523, 0.010176676, 0.021708367), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.14373007, -0.114338934, -0.09077395, -0.11040866, 0.055298284, 0.022516333, 0.18901019, -0.05640152, -0.1413198, -0.08748339, -0.029985962, 0.00712751, -0.071436934, -0.18909407, 0.173448, 0.053675048), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.023129769, 0.42883545, -0.18110612, 0.24296297, -0.02441117, 0.18108079, -0.12298153, -0.19192219, -0.14139178, -0.069563635, 0.1524624, -0.17755614, -0.248875, 0.015161957, -0.16541803, -0.17773613), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.065477535, -0.113195814, -0.08284894, 0.11679537, 0.028445985, -0.026559185, -0.007267581, 0.14052133, 0.14847197, -0.040276285, -0.038166475, -0.030452784, -0.15184602, -0.22223297, 0.113732725, 0.11163395), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.04990171, 0.08493333, 0.08668171, 0.14610586, -0.010766879, -0.05690133, 0.10706113, 0.13667485, 0.044783257, 0.029695645, -0.101674624, -0.02023205, 0.031889528, 0.14293797, 0.08712652, 0.08716896), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.21387868, -0.21650635, 0.2743992, -0.048781313, -0.027735803, -0.1543507, 0.11343657, -0.18251626, 0.15225998, 0.13158897, -0.41056108, 0.102582805, -0.09181491, -0.0042975787, 0.056065407, -0.16961528), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.08966051, 0.09331515, -0.085415326, -0.022695992, 0.009771476, -0.07143986, 0.0590329, 0.07347928, -0.09033658, -0.06805735, -0.20129825, 0.017873045, 0.16908158, 0.014213783, 0.112663984, 0.10048714), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.115590535, 0.08364541, 0.00864431, -0.094349444, -0.11073411, 0.05337711, 0.055587426, 0.12131219, -0.04710173, -0.046455074, 0.110379905, 0.25445566, 0.15154606, 0.04483541, 0.08708686, 0.113456205), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.014296297, 0.24858733, 0.05035193, -0.09225393, 0.034625243, 0.06219943, 0.19825043, 0.04673499, -0.4083363, -0.39954248, -0.08299408, 0.048756655, 0.09862206, 0.01588621, 0.0070629907, 0.04173666), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.17356622, 0.1484559, -0.10054033, 0.013332302, 0.15200937, 0.08985606, -0.031668343, -0.026007611, -0.16339104, 0.054744486, 0.07386605, -0.033910174, -0.0018002358, -0.02968911, 0.054931052, 0.09970459), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.07330346, 0.05938635, 0.01911963, -0.09856661, -0.081916444, -0.046957035, -0.043849826, 0.09572135, -0.13621825, 0.034347896, -0.21189907, 0.10592239, -0.060592845, 0.09957844, 0.050621815, -0.07447668), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.044731334, -0.13406886, -0.04138754, -0.06764551, -0.018899845, 0.35320804, -0.10959127, 0.17435175, -0.17941645, -0.30889434, 0.10573405, 0.0319751, -0.15677677, 0.08164649, 0.16559398, -0.08152387), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.057760764, -0.12145107, 0.06889264, -0.30627275, 0.011501002, -0.080296256, -0.18067095, 0.10592384, 0.12884894, -0.18973115, 0.18740658, 0.28362688, 0.12934786, -0.010292026, 0.0559999, 0.079962276), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.048659086, -0.006250348, -0.041242067, -0.12078197, -0.07152629, 0.05699244, 0.0011704164, -0.023007339, 0.07814492, 0.02546712, -0.08957218, -0.036925297, -0.03383498, 0.12583385, 0.12207602, 0.03910942), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.26151723, 0.23277281, -0.021892069, 0.052827276, 0.18268764, 0.28595275, -0.20529993, 0.19892794, 0.0038986763, 0.114547804, -0.020574905, 0.02405073, 0.11713121, 0.04491106, -0.07557327, 0.014374293), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.14276731, -0.06600894, -0.029757235, -0.099975966, 0.023050314, -0.07662015, -0.11542214, 0.087981045, 0.070319094, 0.12462511, 0.008152087, 0.12613884, -0.07071591, 0.0063393894, 0.08699723, -0.0242523), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.035586607, -0.26826563, -0.10145326, -0.002177148, 0.022144236, -0.117452875, 0.021346297, 0.051908135, -0.022425706, 0.067299, 0.09406446, 0.078294896, 0.014900606, -0.05468236, 0.07241715, 0.061000507), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.184133, 0.06229474, -0.13819578, -0.025011744, -0.01868356, -0.18940887, 0.092631504, -0.092806384, 0.0035951615, 0.11777577, 0.028149817, 0.0049419673, 0.22230826, 0.06337655, -0.20004818, -0.20937593), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.13852163, -0.094492316, -0.040309057, 0.10771662, 0.18963522, 0.08687606, -0.20030232, -0.082126215, 0.012181411, 0.044306785, -0.036970526, 0.04403363, 0.07911973, 0.0021176056, 0.26944208, -0.06657045), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.027229607, 0.12410596, 0.04348171, 0.0019921176, 0.088246435, -0.02828269, -0.26499373, -0.12566662, 0.025947344, -0.0078000715, 0.058063716, -0.0032702687, 0.0059978673, -0.04860002, 0.027650384, -0.23394564), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.07892762, -0.13300626, 0.46678603, -0.033239357, -0.12306804, -0.079602, 0.20534003, 0.23873802, -0.035643574, 0.059950788, -0.26559883, 0.12206408, 0.25408483, 0.029933078, 0.32081822, 0.033947676), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.06847802, -0.017930118, -0.12299636, -0.12987946, 0.09267518, -0.0009083275, -0.035390552, -0.15379669, -0.1132433, -0.036670692, -0.08342377, 0.015636675, 0.022590527, 0.10533322, 0.0389949, -0.059033744), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.041753534, -0.014428097, 0.06999257, -3.546234e-05, -0.033465035, -0.040709455, 0.13118082, -0.21016484, -0.07846085, -0.030885663, 0.06934681, 0.12725256, -0.023784902, -0.13373604, -0.015261479, 0.05234782), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.13798563, 0.12757827, -0.26978776, 0.102494285, 0.13285922, 0.35432795, -0.11997128, 0.17108068, -0.12235328, -0.24582328, 0.26962712, -0.086760186, 0.010127441, 0.08048835, 0.047505867, 0.19991067), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.03584222, -0.13433793, -0.044629525, -0.0010440781, -0.0033084434, -0.026725832, -0.05386642, -0.13612603, 0.10066015, 0.10499841, 0.031767137, -0.04550841, -0.09391546, 0.1454157, -0.26962402, 0.21015608), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.21956864, -0.13502425, -0.02126954, 0.059263993, -0.13461533, -0.04001395, -0.0924258, -0.069165014, 0.22019973, 0.003270619, 0.022072528, -0.14173602, 0.0028843523, -0.13784003, -0.061057515, -0.0049253837), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.0011410525, -0.16098002, -0.12883134, 0.018262507, 0.001481578, 0.19514659, -0.13703239, 0.096059754, 0.34194204, 0.13983466, 0.14021507, 0.011405113, -0.11303146, -0.17050214, -0.06992079, -0.05566986), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.12307941, -0.02192472, 0.13193923, -0.061640862, -0.16841564, -0.0822524, 0.10141759, 0.02139286, 0.1599039, -0.050632223, 0.16702358, 0.111514546, 0.02397393, 0.037606515, 0.017971672, -0.048641708), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.02697617, -0.08579184, -0.28045088, 0.05262136, -0.059576314, 0.107535526, -0.06188862, 0.0010509328, -0.18178311, -0.17288832, 0.20703638, 0.083048366, 0.03859681, -0.07548898, 0.011605782, -0.021842534), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.13198483, 0.37200937, -0.0896539, 0.12450637, 0.037202634, 0.035985112, 0.16579124, -0.08967905, -0.24341385, 0.32482424, -0.3037812, -0.007154969, -0.007152382, -0.017435173, 0.12662841, -0.090513505), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.014726027, 0.08394915, -0.02100581, 0.24882795, -0.023793869, -0.006450114, 0.17093314, -0.06994153, -0.08689907, 0.113542505, -0.053211495, -0.1780173, 0.030043352, 0.2500714, -0.026940798, -0.0069258413), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.037078895, -0.03033529, -0.066851325, 0.14718252, 0.066372745, 0.028897487, -0.036055963, 0.035399746, 0.06733992, 0.21021596, -0.18314466, -0.027192699, 0.020213274, -0.17751546, -0.050674338, -0.09382659), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.14761917, -0.22166072, 0.033172436, -0.21982265, -0.09172891, -0.20794454, 0.1738752, -0.13685037, 0.10981111, -0.23169234, 0.053787973, 0.12001196, -0.038242023, -0.047124114, 0.22503005, 0.1015142), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.021231879, -0.015423476, 0.058986407, 0.032002006, -0.029305007, 0.008933183, 0.10777483, -0.112574644, -0.023935415, -0.06604598, 0.053859934, -0.08354717, 0.13703763, -0.078382134, 0.12914242, -0.022056468), target2);\n\n\tMF3 target3 = tex5.SampleLevel(sam, pos, 0).rgb;\n\ttarget3 = MulAdd(e1, MF4x3(0.19254518, 0.009179287, 0.023821035, 0.020269603, 0.025629226, 0.040180814, -0.025135614, -0.07785793, -0.099851295, -0.122886, 0.03322616, 0.0509256), target3);\n\ttarget3 = MulAdd(e2, MF4x3(0.060054794, 0.053996198, 0.047226787, 0.038959846, -0.025839888, -0.030583512, -0.034999896, 0.011966571, -0.011057454, 0.05765179, -0.041760337, -0.0694113), target3);\n\ttarget3 = MulAdd(ne1, MF4x3(-0.20393562, -0.0055942894, -0.02089636, 0.14781304, -0.01954523, -0.0746086, 0.071556985, 0.07512172, 0.067927115, 0.084076844, -0.0561336, -0.06856403), target3);\n\ttarget3 = MulAdd(ne2, MF4x3(-0.039552618, -0.04448951, -0.04170605, -0.00886809, 0.06708884, 0.07120977, 0.04834384, -0.10599933, -0.11024835, -0.015948117, 0.084044695, 0.10778199), target3);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n\ttex6[gxy] = MF4(target3, 1);\n}\n\n//!PASS 5\n//!DESC Conv-4x3x3x16\n//!IN tex3, tex4, tex6\n//!OUT tex1, tex2, tex5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.009669773, 0.036289547, -0.050454646, 0.051479716 };\n\ttarget1 = MulAdd(a1, MF4x4(0.050738923, 0.15003614, -0.18880141, 0.16791905, 0.16549185, -0.26726744, -0.12813666, -0.021510791, 0.070805945, 0.043350577, 0.0035756908, 0.11776675, -0.01824196, 0.12618026, 0.07424072, 0.032886628), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.11678059, 0.0565686, 0.04392921, -0.27621672, 0.2116695, 0.038044345, -0.015018062, -0.028636303, 0.049744565, -0.12935996, 0.027176194, -0.13208814, -0.21195693, 0.08980974, 0.013893243, -0.018403184), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.3214697, -0.03143518, 0.19927292, 0.12566878, 0.16190828, 0.11784847, 0.09943727, 0.11755882, 0.017959306, -0.064603634, -0.14054321, -0.11917774, 0.0056958874, 0.06461699, 0.104604125, 0.021947173), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.24738057, -0.034892898, -0.03364674, 0.017340986, 0.02933764, -0.08090866, -0.034651175, -0.17391174, 0.08536477, -0.17446008, 0.22706915, -0.10555482, 0.0877744, 0.0681237, -0.035909466, -0.10355238), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.090646185, -0.12971672, -0.14531808, -0.060838025, 0.24902023, 0.1310588, 0.18602785, 0.21283495, -0.32160765, -0.070119165, -0.10350057, 0.19260244, -0.2610542, -0.3030521, 0.08432348, -0.22286619), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.28333843, -0.053968847, 0.08344997, 0.19987041, 0.22163449, 0.22161576, 0.0030572868, 0.10848695, -0.20529847, 0.08406883, -0.07130339, 0.09987656, 0.29774663, -0.08768785, 0.15567012, -0.010313759), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.1260916, -0.071901485, -0.30566844, 0.19393384, -0.05133266, 0.07868844, -0.24817581, 0.055521224, 0.23277187, 0.16324161, 0.07110341, -0.042626668, 0.052509766, -0.014292625, -0.019677468, 0.041733738), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.04264262, -0.06528029, 0.0013520801, -0.02140956, 0.27304867, -0.029477939, -0.1859993, 0.01418354, 0.07256604, 0.14302284, 0.03309569, -0.15932149, 0.01500576, -0.053860538, 0.1131707, -0.06272606), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.0400483, -0.030188695, -0.108427785, 0.057873204, 0.42774406, -0.11353873, 0.110134825, 0.052191462, 0.00087113964, 0.040683694, 0.100507155, -0.16746339, -0.26971558, 0.06506685, -0.20950548, 0.040783025), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.11394146, -0.10693933, 0.2377026, -0.03783948, -0.16496852, 0.046675198, -0.23396324, 0.05696911, -0.02770668, 0.12922443, -0.093586415, 0.102305606, 0.0040032533, -0.038440734, -0.0035825048, -0.22108772), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.17577791, -0.024538597, -0.19877498, -0.14544973, 0.16614193, -0.3279891, 0.14678721, -0.16355143, -0.012954231, 0.20982395, 0.044255227, 0.087878115, 0.11289659, -0.26981032, -0.10789584, 0.24094439), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.0041394173, -0.0937936, 0.15251775, 0.1026978, -0.01999847, -0.02865502, 0.16765144, -0.17490439, -0.016996933, 0.03891808, -0.01858217, -0.106255606, 0.027496144, -0.14120618, 0.023483312, -0.08291959), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.060642462, -0.2957824, 0.33968493, -0.04501478, -0.14999421, -0.0067213452, -0.018236576, 0.01627547, -0.07771579, 0.0124932695, -0.11797959, -0.090979554, 0.0096479915, 0.021336472, -0.07794724, 0.030138575), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.091704845, -0.20800348, -0.22158638, 0.048748583, 0.15139692, -0.2832814, 0.09610812, 0.41077513, 0.0007106381, -0.14465855, 0.0056652213, 0.031696238, -0.03384328, 0.1940933, 0.19262145, 0.014331562), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.16637586, -0.22008398, 0.102937706, 0.15260033, 0.039856806, -0.21082906, -0.19694057, 0.0712475, 0.015049883, 0.17320138, 0.06505415, -0.020279367, -0.018576574, 0.201407, -0.08108244, 0.04151909), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.12496581, 0.107817784, 0.10645319, 0.035113968, 0.0166165, 0.1316661, -0.045253787, -0.03863719, 0.09126881, 0.07553792, -0.029150097, -0.07629157, -0.17978054, -0.27080613, -0.028408276, -0.15366451), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.081859134, -0.11599677, 0.027383117, 0.092724435, 0.059302155, 0.10008954, -0.12217131, 0.07471211, -0.20396213, -0.040741358, 0.118772194, -0.21725504, 0.099645875, 0.09691941, -0.07696025, -0.016445495), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.18712623, -0.14458412, 0.03693652, 0.014525352, -0.09607279, -0.19400409, 0.032149505, 0.07106094, 0.051436905, -0.07765334, 0.017043818, 0.17777587, 0.05274306, 0.0062209824, -0.080005355, 0.026041988), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.090594456, -0.041637532, 0.10346829, -0.09393943, 0.027663473, 0.20729685, -0.011156861, 0.021863503, 0.04781304, -0.039483577, -0.092933334, -0.25187445, 0.033062164, 0.010756357, -0.13035728, -0.008321023), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.07772912, 0.010776647, -0.018709056, 0.25634038, 0.00906326, 0.21411708, 0.122652486, 0.07725616, 0.15266491, 0.1274286, 0.10400329, 0.20354506, 0.013765407, -0.039089683, 0.25870228, -0.08919069), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.14971368, 0.06935879, -0.089983195, 0.01406992, 0.16989979, -0.037809014, 0.07157283, -0.050660506, -0.032826405, 0.033794664, -0.0051332368, 0.089349195, 0.06263488, -0.07048108, 0.07263597, -0.11618368), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.013391823, -0.07888697, -0.13984044, -0.01241464, -0.06475807, 0.06978077, -0.20329754, 0.16602662, 0.013664227, 0.12317301, -0.10240692, -0.0657491, -0.31402445, -0.14472555, 0.1739024, 0.0005437834), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.16330495, 0.02644609, 0.23837087, -0.07734767, 0.12377497, -0.18478604, 0.35040903, -0.05262452, 0.049074646, -0.0077528385, 0.15370984, -0.22888668, 0.3603141, 0.29372314, -0.4432887, 0.20702155), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.18785694, 0.21085343, -0.111042105, 0.0478716, -0.08214944, -0.0922987, 0.29570273, 0.025100114, 0.25403878, 0.01271447, 0.21851794, -0.1434596, -0.21153769, 0.023305666, -0.10386609, 0.043919638), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.117247805, 0.013329102, 0.0313911, -0.08055777, -0.0053445757, -0.2886372, 0.07938673, -0.06659165, 0.20798062, 0.030106818, -0.04811631, 0.036332276, -0.057687126, 0.03813657, 0.035860628, -0.11273985), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.0031557097, 0.027456097, -0.14444692, 0.08411739, 0.13466308, -0.13212901, -0.0034804344, 0.1464661, -0.21033211, 0.05913627, 0.10233881, 0.009844489, -0.15369488, -0.018978333, -0.07518442, -0.010549853), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.112989105, -0.011166866, -0.08277204, 0.046827227, -0.08067428, 0.13465053, -0.1656419, 0.07280515, 0.037523627, -0.050147127, -0.17731906, 0.1067486, 0.119732924, -0.102017604, 0.31421226, -0.14060387), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.1106223, 0.09229271, -0.09355422, -0.02413533, -0.096457504, -0.13282233, 0.022983741, -0.13534859, -0.0056585902, -0.07214356, 0.14617127, -0.13723095, 0.058078192, -0.1038417, -0.10452195, -0.18855028), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.16357008, 0.080841675, 0.1663936, 0.20815827, 0.03813903, 0.34158087, -0.012987109, 0.39152008, -0.027927356, -0.14332302, -0.012866622, -0.016149148, -0.08733816, 0.1960951, 0.19572765, -0.2710826), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.024827998, 0.24175219, 0.030659903, -0.22227505, 0.026898654, 0.009930298, 0.088392995, 0.32644793, -0.10351868, -0.08717382, 0.22931585, 0.05197704, 0.06534648, 0.13636068, 0.062107667, 0.024806283), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.18550465, 0.062058095, -0.08620093, 0.20158216, -0.1460996, 0.14275469, -0.28057688, -0.11685651, -0.09627509, 0.09029933, 0.03669734, 0.1257313, -0.07974307, 0.020742215, -0.0039170664, 0.11340528), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.15225565, 0.171972, 0.13573253, 0.0056740018, -0.1667786, 0.06028638, -0.1255049, -0.23327217, -0.139949, 0.029957669, -0.16713464, 0.046236664, -0.05070503, 0.18714412, -0.20076098, 0.1672637), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.18468563, 0.07733334, 0.14463845, -0.10712052, 0.36213547, 0.29404843, 0.2110929, 0.14646721, -0.059985258, -0.2709805, 0.073061034, -0.039072156, 0.015898943, -0.17166951, 0.20194982, -0.04723745), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.26353067, 0.050225407, -0.42643914, 0.06601958, -0.10513071, -0.1654714, 0.0593609, 0.027410276, -0.19465327, -0.13865606, 0.05579213, 0.07982532, -0.20893136, -0.008150932, 0.053529713, -0.0317475), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.012075693, -0.27574313, 0.22184552, -0.117393926, -0.49310133, -0.13997443, -0.079180904, -0.053438634, -0.07552426, -0.045796394, -0.037434675, 0.24076645, -0.04395852, 0.10325762, -0.19867313, -0.070216134), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.026107877, -0.030023552, -0.047810435, 0.20572239, 0.061861858, 0.1776161, -0.306099, 0.16332485, -0.1843373, 0.06758581, -0.23902373, -0.10575018, 0.03990962, -0.046113137, 0.14876197, -0.21280771), target1);\n\t\n\tMF4 target2 = { 0.07789114, 0.0024746545, 0.1891165, -0.0023716448 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.14542116, -0.15827142, -0.20811677, -0.103433, 0.19787271, 0.33990738, 0.17085013, -0.059132278, 0.013047369, -0.1687924, 0.06732661, -0.050968684, 0.09197164, -0.041265316, -0.108277336, -0.014430892), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.022837132, 0.20440012, -0.14266612, 0.019944299, 0.069084294, 0.3171199, -0.1521742, -0.35806596, 0.13581008, -0.13811131, 0.12219503, 0.17329764, -0.15100783, 0.0862648, 0.118227705, 0.18736814), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.013604392, 0.11496102, -0.18734755, -0.047555517, 0.05297245, 0.006461213, 0.06247472, -0.0202791, 0.02329791, 0.11530998, -0.148774, 0.0965498, 0.1487269, 0.061629567, -0.22488646, -0.005393787), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.29286116, 0.11958281, -0.11193505, -0.17139061, -0.035151243, -0.2635945, 0.0002499315, -0.16346519, 0.23779829, 0.04454211, 0.21293561, 0.25617847, 0.12194803, -0.0017443774, -0.009216221, -0.034387548), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.28791443, -0.25421545, -0.058626153, -0.1520494, -0.16808414, -0.39723453, -0.13199537, 0.056999452, -0.048155293, 0.38699663, -0.114719056, 0.001293743, -0.0959443, -0.08189709, 0.26921842, 0.061219636), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.00781977, -0.07103863, -0.21942843, 0.2419546, 0.20016691, -0.28697264, -0.034715973, -0.03381459, -0.028126812, 0.046806023, -0.14423183, -0.13472253, 0.009225362, -0.086190686, 0.0041205613, 0.08953202), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.04926224, -0.099740155, -0.088695474, 0.09950333, -0.06495916, 0.20126842, -0.0062843356, -0.034764495, -0.10808971, -0.19946553, 0.075991094, 0.14746219, 0.08247818, 0.07382381, -0.056908615, -0.026823666), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.04837408, 0.12605472, -0.23957102, -0.14252385, -0.046534102, -0.07511751, -0.21040416, 0.2064639, -0.006026243, -0.25005546, -0.063780144, 0.076840036, -0.07484346, 0.017368162, 0.04657373, -0.022188455), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.04545079, -0.002226373, -0.11695467, 0.12954631, 0.054903183, 0.15162702, -0.19222596, 0.05351421, -0.079599276, -0.036238387, 0.1362261, 0.037431743, -0.0015106505, 0.18739921, 0.122365154, -0.05871144), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.005558987, -0.13553315, -0.006372213, 0.06633917, -0.22141413, -0.15780807, 0.057122614, -0.057320844, -0.06306763, 0.19112623, -0.041758966, 0.03555483, -0.005718873, 0.009167371, 0.050909385, -0.14599234), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.18175003, 0.10442485, 0.052994236, -0.4001252, -0.08328538, 0.06380226, -0.055015627, 0.010929493, -0.22888647, -0.033181675, -0.07570874, 0.07933599, -0.07894686, 0.12202901, 0.13679314, -0.054344065), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.030145945, -0.06121175, -0.08550973, 0.10082535, 0.07198805, 0.21414264, -0.25636044, 0.028803539, 0.043738026, -0.0367658, 0.27998537, -0.06274612, -0.22862338, 0.002624325, 0.28519824, 0.18540645), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.012136538, -0.07059324, 0.018098673, 0.12078888, -0.087637, 0.041642863, 0.034997553, -0.16741107, 0.04701011, -0.004160269, 0.122639626, 0.0043271836, 0.011551197, -0.16421974, -0.102481335, 0.014233497), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.37945676, 0.25232047, -0.03707734, -0.1985225, -0.11536396, 0.22039749, -0.21809638, -0.10596801, -0.17211124, -0.2035486, 0.011822896, 0.27510995, -0.105182275, 0.022503568, -0.0063389307, -0.071560584), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.16101715, -0.034247126, 0.16626042, 0.031131435, 0.03048031, -0.105447404, -0.05728527, -0.14518815, -0.019103229, -0.15152888, -0.119154684, 0.028724093, 0.05836196, -0.35943082, -0.016481897, -0.0437348), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.07719413, -0.33214888, -0.0541927, 0.16506542, -0.032792456, 0.016834807, 0.1724155, 0.073768586, 0.002303886, -0.001382793, -0.0562648, -0.10167158, -0.19101655, 0.052783452, -0.1422853, 0.09653729), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.30030164, 0.11637444, -0.23238538, -0.27238008, -0.077208534, -0.027645003, 0.10369907, 0.20162316, -0.14428844, 0.1766293, 0.024419712, 0.11301171, 0.07772854, 0.18613201, 0.20721672, -0.1751799), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.1026615, -0.12484944, 0.15386428, 0.038676128, -0.119472496, -0.032417197, -0.14208497, -0.05254358, -0.0035079278, -0.011276316, 0.043117497, -0.010022288, 0.031624593, 0.014969992, -0.031410277, 0.15284787), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.018149922, -0.05906194, 0.054767277, 0.008161979, -0.076949194, 0.040888708, -0.006419542, -0.12897012, -0.0028229658, 0.20937827, 0.02741711, -0.04013348, -0.12731804, 0.008064522, 0.002870103, 0.027690327), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.023197446, -0.08888926, 0.15531142, 0.13745947, 0.054352283, -0.121785395, 0.16237587, 0.023567237, -0.36160588, 0.30499592, -0.033180915, -0.1515843, 0.04251452, -0.17903805, 0.03235283, -0.08062386), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.0072868476, -0.2010616, 0.13061914, 0.12846659, 0.11725315, 0.14589547, -0.05373261, -0.081606135, -0.07010131, -0.025378224, 0.10265872, 0.18658938, -0.12165338, 0.036297683, 0.03925332, 0.16576236), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.10300252, -0.11548347, -0.08691649, -0.014866044, -0.3213804, 0.47206497, -0.16032113, 0.026284516, 0.046302956, -0.052474245, -0.025335522, -0.10957576, -0.16872157, 0.19049212, -0.023881195, 0.061396897), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.16202278, 0.52128345, -0.2601511, 0.06116799, -0.21123995, 0.39389637, -0.350544, -0.16157438, -0.02823116, -0.39056876, -0.14267299, 0.03262984, 0.342303, -0.20556125, -0.0019219286, -0.1824844), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.23399737, -0.0912646, 0.11152403, -0.20945886, -0.053451832, -0.09786892, -0.059099484, 0.18103573, -0.117154315, -0.18342866, 0.12650815, 0.0067340015, -0.037984423, 0.17667364, 0.071636364, -0.011689163), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.099510275, -0.0925438, -0.009136904, -0.03774997, -0.13348748, 0.3605135, -0.078298144, -0.14712195, 0.22566219, 0.18659295, 0.05614545, 0.10792911, -0.12477693, -0.03587624, 0.08050775, -0.054740936), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.10312337, -0.063681684, 0.16496794, 0.09038492, -0.08903926, 0.41163155, -0.013669214, -0.21472235, -0.054991595, 0.0033639956, 0.18160143, 0.17240305, -0.039428882, 0.17087695, -0.1729076, 0.09871825), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.13123736, 0.0802573, 0.077981554, -0.101768315, 0.089998, -0.13781744, 0.122858986, 0.054121554, -0.02640825, 0.13577555, -0.037485655, -0.04179625, 0.000106130996, -0.100183845, 0.00046665114, 0.21791616), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.011894387, -0.030088445, 0.025817253, 0.08193235, 0.109322436, 0.10855583, -0.19661167, -0.09405307, 0.2073779, -0.33972177, 0.048635002, -0.14883177, 0.056954246, 0.3953476, 0.18765114, -0.014010224), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.22594279, -0.014942035, -0.1519647, 0.25367293, 0.16330296, 0.03317176, -0.32148597, -0.46503916, 0.19944623, -0.26229686, 0.019909514, -0.059794176, 0.12912126, 0.044948537, -0.08649492, 0.08024645), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.022943841, -0.068013534, 0.11032515, 0.011685601, 0.020096298, -0.3285243, 0.08196111, -0.089537136, -0.03976742, -0.1315977, -0.36306036, 0.24678081, 0.22115967, -0.017472323, -0.19451386, -0.035218123), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.020891193, -0.12721714, -0.15030408, 0.026523203, -0.12413139, -0.11235275, -0.21476477, -0.11326953, 0.028815055, -0.18552732, -0.0076828003, -0.14679903, 0.020509586, -0.18695217, 0.06696879, 0.103938386), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.057521313, 0.28509304, -0.2525733, 0.16745082, -0.26614547, 0.18545172, -0.27140215, 0.018639714, 0.19730581, 0.1659491, -0.058363054, -0.4048628, 0.024913948, -0.44124457, 0.13872208, -0.0371103), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.100904405, 0.06700356, -0.035322092, 0.21781014, 0.018047005, -0.21737386, -0.3734802, 0.13506944, 0.012760691, 0.06620756, -0.0253398, 0.0030280363, -0.044015452, -0.055860534, -0.3547194, -0.04230283), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.19012743, -0.34408915, 0.18940191, 0.13152952, 0.107553795, -0.00694412, -0.07930157, -0.30964044, 0.034710668, -0.031806916, 0.019838978, 0.017044948, 0.110688254, -0.0029772928, 0.09414367, -0.10760175), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.05745392, 0.29022983, 0.014998233, 0.27365527, 0.08169933, 0.0734232, -0.09404464, -0.26870936, 0.21171738, -0.19529793, -0.064401075, -0.18972695, -0.08024953, -0.027122354, -0.11661348, 0.010131282), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.07599435, -0.06851123, 0.06258365, 0.10296892, 0.15556085, -0.041609086, -0.11303363, 0.07082365, 0.013949174, -0.087201476, -0.0855705, -0.12979257, 0.04048528, 0.4211556, 0.04118289, -0.22093314), target2);\n\n\tMF3 target3 = tex6.SampleLevel(sam, pos, 0).rgb;\n\ttarget3 = MulAdd(e1, MF4x3(0.050153337, 0.012563414, 0.014994658, 0.10498867, 0.07151875, 0.06761489, 0.061650798, -0.035183728, -0.050987806, 0.0017240314, 0.041055307, 0.020366805), target3);\n\ttarget3 = MulAdd(e2, MF4x3(0.110105395, -0.044468552, -0.072567016, -0.049364448, -0.015713394, -0.021540897, -0.01636263, -0.084110685, -0.08281401, -0.08940374, 0.047863875, 0.051104594), target3);\n\ttarget3 = MulAdd(ne1, MF4x3(-0.081597924, 0.002422661, 0.01143175, -0.07504751, -0.09938017, -0.1063178, -0.10390281, 0.0262197, 0.060155805, -0.24289346, -0.0054961476, 0.045964316), target3);\n\ttarget3 = MulAdd(ne2, MF4x3(-0.1829316, 0.047622137, 0.07963877, 0.048703995, -0.0026299425, -0.003712008, 0.029338706, 0.096882835, 0.102083966, 0.078538164, -0.07247937, -0.06820231), target3);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n\ttex5[gxy] = MF4(target3, 1);\n}\n\n//!PASS 6\n//!DESC Conv-4x3x3x16\n//!IN tex1, tex2, tex5\n//!OUT tex3, tex4, tex6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.05988374, -0.23198523, -0.058251306, -0.038808554 };\n\ttarget1 = MulAdd(a1, MF4x4(0.10883355, -0.14958352, 0.026701333, 0.090302855, 0.033934478, 0.120340124, 0.027125617, -0.16792692, -0.075757094, 0.28692973, 0.013230067, -0.040618937, 0.087148145, -0.05985753, -0.06352023, -0.05775848), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.18206549, -0.10363482, 0.097648725, -0.08801144, 0.31633568, 0.058347676, -0.009121898, 0.02594872, 0.14757825, 0.4730546, -0.008518203, -0.3090668, -0.004052835, -0.14166127, -0.010156037, 0.21191326), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.05735183, 0.039180398, -0.12357178, 0.04830351, 0.120369986, -0.052775342, 0.005902798, 0.07695394, 0.00602021, 0.16758691, 0.10287989, -0.1718468, -0.1319741, 0.16932078, -0.2055026, -0.31820264), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.05427556, -0.28392607, 0.08579091, -0.0015861926, 0.062348455, -0.27778792, -0.07450379, 0.01616914, -0.012357131, -0.056992117, -0.1896176, 0.018156245, 0.06499259, -0.076558664, 0.10341699, -0.08993959), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.05741742, -0.05414434, 0.18006511, 0.09840777, -0.11849741, 0.40419933, 0.21349974, 0.40268886, 0.23218039, -0.0680356, -0.3130592, -0.21271054, 0.13776754, 0.19114101, 0.17373541, 0.43457666), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.060757063, 0.11339545, -0.042958036, -0.06483378, -0.06681766, -0.056395415, 0.037868995, 0.033861663, -0.1041215, 0.0046828864, 0.14360638, 0.087886184, -0.26808187, 0.19876598, -0.05276215, -0.07073776), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.24029991, -0.14217372, -0.011767948, 0.011623913, 0.33820602, -0.24501325, -0.11444902, 0.14536968, 0.16780593, 0.0065867775, -0.074971735, 0.021472024, -0.10853042, 0.09527126, 0.009436061, -0.09688826), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.31893802, -0.0016892607, -0.105592966, -0.116694786, -0.007851739, 0.1429722, 0.0741952, 0.050125953, 0.07185179, 0.1900389, 0.030889044, 0.15422693, 0.12550323, 0.3556344, 0.108276874, -0.099125646), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.33620578, -0.11113713, -0.15881014, 0.028243937, -0.12028756, -0.028566968, -0.002682634, -0.15635195, -0.06869284, -0.03309234, 0.03086361, 0.050773233, -0.08939835, 0.15237434, -0.024076303, -0.13092752), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.31200737, 0.32207087, -0.068700634, -0.39202076, 0.0676771, 0.083766654, -0.05696634, 0.03088338, 0.046761762, 0.09732023, 0.030844063, -0.03369749, -0.12664944, -0.029924957, 0.10551989, 0.086157694), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.1919761, 0.17179352, -0.025805056, -0.05570367, -0.16736336, 0.07430868, -0.13228212, 0.10702857, -0.09723214, 0.1884809, 0.09422538, -0.16902041, -0.1964137, 0.17877853, 0.17453954, -0.11339361), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.11865004, 0.013131073, 0.17317963, -0.2077911, -0.1116894, 0.09672745, -0.023348883, -0.1176519, 0.15893579, 0.22941695, 0.18798698, 0.059098385, 0.09498779, 0.10118143, 0.08737761, -0.016268898), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.025380889, 0.17163627, -0.014800655, 0.12669696, 0.050048903, -0.06513837, 0.020915661, 0.2144372, -0.17799327, 0.0068409992, 0.06751171, -0.16618991, 0.14637277, 0.010591964, -0.15909241, 0.02660789), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.3178319, 0.15036377, -0.03386948, 0.13883169, -0.33842105, 0.061425313, -0.04195804, 0.22558802, 0.2250625, 0.060225345, -0.08467863, 0.0014776831, 0.080328, 0.03221249, 0.20838667, 0.11489719), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.0013924981, 0.28233197, -0.17997956, -0.10959627, -0.16253087, 0.016549526, -0.1571556, 0.017017027, -0.14697123, 0.0869202, 0.2104898, -0.15658243, 0.13424201, -0.022636503, -0.09512045, 0.0927298), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.038486905, -0.19215351, -0.2446516, -0.02958912, 0.06899297, 0.028667469, -0.05537665, 0.066711955, -0.0017354499, -0.07466053, 0.028587297, -0.042017035, 0.023596823, 0.0067433366, -0.14685915, 0.13400853), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.0573442, 0.1424536, 0.19606829, 0.07141616, -0.032276712, 0.20030099, 0.16644277, 0.10393295, 0.27240822, 0.0071844175, -0.023368603, -0.14067268, -0.20310283, 0.039528254, 0.103837095, 0.08236034), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.15616669, 0.3495403, -0.05678421, -0.069600284, -0.07361787, 0.079501756, 0.009530261, -0.032385882, 0.029831208, -0.095407076, 0.010261287, 0.15250465, -0.04868275, 0.058579214, 0.03779718, -0.10810775), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.06492073, 0.018667994, -0.004712761, -0.032692235, 0.04027288, -0.114499666, -0.04327484, 0.13778907, -0.09373396, -0.08822919, 0.04796151, -0.057756703, -0.26161298, 0.07182931, 0.12998815, -0.14389744), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.19001032, 0.13091461, -0.2551175, 0.013365716, -0.031779066, 0.002531366, -0.13807543, -0.14165778, -0.2701911, -0.0890182, 0.34704998, -0.008494185, 0.16179956, -0.060182545, 0.060827415, -0.17249492), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.10665868, 0.15999752, -0.042796712, -0.14010513, -0.014244899, 0.017433831, 0.053657144, -0.0965679, 0.23623326, 0.0690172, 0.1290121, -0.025523739, 0.122357905, -0.18172716, 0.02829383, 0.10042929), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.09273112, 0.09466892, -0.009225705, 0.16772579, 0.0813042, -0.16461512, 0.038097944, 0.19834967, -0.033650465, -0.12888893, 0.1414859, -0.021587005, -0.0047441716, 0.08880282, 0.020621201, 0.065779164), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.0051817205, 0.20322648, -0.077459775, 0.07461627, 0.1817634, -0.5371515, -0.29336745, -0.57652086, 0.035826538, 0.41058993, 0.21512514, -0.041881148, -0.2490056, -0.07172767, 0.20821427, -0.69866294), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.18961228, 0.027452804, -0.0075194626, -0.029665018, 0.28770384, -0.099777386, -0.12160496, 0.07690297, 0.30273837, 0.026466522, 0.18100439, -0.09078488, 0.2035407, -0.062081084, 0.06744994, -0.07512911), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.008473044, 0.07501521, -0.11242355, -0.039451122, -0.21818535, -0.07779562, 0.13194147, 0.084983595, 0.0770609, -0.034488454, 0.08823556, -0.07168295, 0.041894365, 0.0789253, 0.06191209, 0.013991105), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.10582237, 0.1514222, 0.10751824, 0.08231926, 0.23913008, -0.2673503, 0.036170945, 0.31463087, 0.026397424, -0.26629624, -0.07428361, -0.077513516, 0.0768238, -0.026638538, 0.12589583, -0.11521212), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.30389515, 0.18963532, 0.023015842, -0.10240883, 0.045651495, -0.036785256, -0.13346411, 0.16431254, -0.030950911, -0.03381929, 0.09413111, 0.03924852, 0.11044091, -0.10149653, 0.14114548, 0.07801978), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.029622428, 0.14528686, -0.034057826, 0.010664312, 0.059213262, -0.29354423, -0.08448559, 0.10569036, -0.02988314, -0.016480735, 0.042203777, -0.028342744, 0.36807576, 0.09301971, 0.123721026, 0.07806503), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.04849538, -0.09201287, 0.10069803, -0.031749677, 0.18774022, -0.27789372, 0.05288653, 0.08097265, 0.006918896, -0.060978457, -0.113319606, 0.008844536, 0.021804892, -0.0011744015, -0.35720357, -0.24996938), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.07147501, -0.09339197, 0.16154395, 0.3372506, -0.0004858638, -0.056553435, -0.12463908, -0.0047342298, -0.009141984, -0.13796125, -0.14035304, -0.104403175, -0.07054226, 0.12142519, -0.24971877, -0.1914648), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.008194284, -0.027617034, 0.004994261, -0.07672895, 0.25697777, -0.18313397, 0.03266311, -0.029157834, 0.010476624, 0.12394092, -0.059660904, 0.08561672, -0.0008583816, -0.044442356, 0.28336492, 0.065344445), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.3570137, -0.06802815, -0.10298613, -0.21256869, 0.3025278, -0.263425, 0.13547331, 0.038517762, 0.14951234, -0.16869017, 0.03293678, 0.21897063, -0.14688788, 0.21619378, -0.27550143, 0.048003722), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.15607022, -0.111073844, 0.2733694, 0.05423378, 0.25116092, -0.17350473, 0.13460433, 0.09602139, 0.17372625, -0.0024815476, -0.30154657, 0.0062206364, -0.0051755225, 0.04985103, -0.06310478, -0.30450678), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.057571005, -0.019051064, 0.054884393, 0.03993782, 2.6782007e-05, -0.05726912, 0.067192145, -0.08955987, -0.11937056, 0.15837386, -0.011670469, -0.06299701, -0.014917928, 0.23921679, 0.0054613873, -0.23099245), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.035849575, -0.06785954, -0.15053692, 0.011964653, 0.1975448, -0.1633047, -0.024539666, 0.03170174, -0.12585635, -0.021171011, 0.15862562, 0.10296358, 0.3114039, 0.10010659, -0.09519227, -0.12945092), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.044433746, -0.058466546, -0.13258536, -0.033972915, 0.0037206819, -0.057343487, 0.13798106, 0.044445634, -0.22623023, 0.2408462, 0.048287082, -0.30717465, -0.13402344, 0.20024839, -0.026932377, -0.034217034), target1);\n\t\n\tMF4 target2 = { 0.012253057, 0.13434875, -0.10318777, -0.074252345 };\n\ttarget2 = MulAdd(a1, MF4x4(0.045249436, -0.040327657, -0.2667367, 0.0913868, 0.14961123, 0.07253207, 0.29162952, -0.11320944, 0.017569833, 0.012350104, 0.22532712, 0.025312115, -0.12193993, 0.037391737, 0.03220835, 0.12102545), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.020587588, -0.07043244, -0.28093454, 0.18336722, 0.08153308, -0.05914772, -0.15255487, 0.079236075, -0.4269835, -0.11470208, -0.19043571, 0.2723162, 0.0066251885, -0.17115718, 0.022036036, 0.07349558), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.09441315, 0.042170826, 0.071251415, -0.13891962, 0.10236482, 0.05356262, 0.0291025, 0.063867815, -0.14530063, -0.08727925, -0.0048300857, 0.06766869, -0.3481536, -0.10943503, 0.014951926, 0.11993114), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.13420522, 0.095721036, -0.1756104, -0.09906728, 0.09808904, -0.27402034, -0.102161326, 0.40162942, 0.13465238, 0.20237032, 0.3192343, -0.061512157, -0.20711629, -0.09659007, 0.06838548, 0.30256763), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.025805298, -0.0322599, 0.23653145, -0.2760735, 0.11291006, -0.10836205, 0.20742846, 0.06974535, -0.4191803, -0.10882523, 0.038603242, 0.22662747, -0.08845715, -0.26151156, -0.16670766, 0.008536192), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.085842185, -0.21239999, -0.032774646, 0.088163696, 0.038300447, -0.09510875, 0.10113864, -0.14712982, 0.14264707, -0.10895432, 0.03051617, -0.06791873, -0.35589013, -0.12884575, -0.09460007, -0.0879575), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.19235751, -0.109611385, -0.037397474, -0.26632717, 0.07878826, 0.19749992, 0.0035685285, 0.11793927, 0.019899402, 0.085741036, 0.08433813, -0.018344546, -0.0901484, 0.08221562, 0.12735383, 0.12801875), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.19123435, 0.007882246, -0.018564796, -0.09904253, 0.28052533, 0.6360808, 0.25001726, -0.30590564, 0.07646281, -0.34298185, -0.33293694, -0.036753535, 0.18719083, 0.22131144, -0.1420962, -0.0014709529), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.23060241, -0.14145076, -0.113213465, 0.037221998, 0.22163334, 0.18520229, 0.2961799, -0.063605964, 0.022606356, 0.043340076, -0.3233993, -0.075055614, -0.0038865958, 0.19558622, -0.018503085, -0.22932632), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.11712158, -0.03590364, 0.38039652, -0.019910801, 0.13338004, -0.07078425, 0.09404417, -0.27607328, -0.02205519, -0.013522961, 0.2924021, -0.16088538, -0.034280356, -0.063614614, -0.061583273, -0.22479968), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.05624079, 0.32659104, 0.47335497, -0.14091404, 0.14739423, -0.07122778, -0.009384643, -0.058900848, 0.06260307, -0.17574102, 0.3538743, 0.2842822, -0.18150197, 0.26806462, 0.24673693, 0.19710627), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.24837571, -0.01663848, -0.13093965, 0.30109972, -0.09680959, 0.074526474, 0.024111765, -0.012781737, -0.08591349, -0.100348584, 0.02363011, -0.02687084, -0.27630556, 0.14074354, -0.016993485, 0.084373675), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.1543391, -0.2008408, -0.21885285, 0.2320177, 0.06669948, -0.05171086, -0.25833863, -0.14085051, -0.035878573, -0.1632403, 0.09782713, 0.22973235, -0.14022017, -0.018347954, -0.29652777, 0.10912002), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.050962634, -0.040519282, -0.04381614, 0.084133334, 0.21222316, -0.091010064, 0.13157965, -0.21375372, -0.021148674, -0.044127557, -0.11400533, 0.097688414, 0.31571037, -0.05167655, 0.27606225, 0.12169133), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.1329087, 0.14291021, 0.043337896, -0.25970098, -0.11379552, -0.040157612, 0.08379851, -0.24104865, 0.1593102, -0.031879216, -0.004603848, -0.019003935, -0.24769545, -0.17577063, 0.16019398, 0.04640235), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.11615644, 0.12189521, 0.12919527, -0.104224406, -0.10143574, 0.14024515, -0.02759362, -0.1467619, 0.09028311, -0.06510291, 0.061612967, 0.10227729, -0.08785846, 0.06464871, -0.05048917, 0.09055746), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.34443164, 0.013906371, -0.0595573, 0.09354196, 0.12184454, -0.02698316, -0.06208632, -0.11266858, 0.004904335, -0.33987018, -0.2494041, 0.127125, 0.040493876, 0.0280356, -0.037431944, 0.05823802), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.1762869, -0.20683959, -0.37788594, -0.1244979, -0.17202286, -0.038234763, 0.015924744, -0.014006752, 0.07097758, -0.25219876, -0.3164728, 0.022413896, -0.41423917, -0.03191542, 0.009464804, 0.0770316), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.12442388, 0.031095076, 0.18799834, -0.18449762, -0.11995044, 0.11634828, -0.0055850362, 0.08558657, -0.025694892, -0.2854381, -0.32876188, 0.14690274, -0.1835963, -0.1786755, -0.44678628, 0.1678422), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.031241562, -0.1265462, 0.081369035, -0.1184643, 0.0010021052, -0.10810683, -0.039572187, 0.13850863, -0.010703417, -0.057981443, 0.30309856, 0.13869847, -0.16935349, 0.16969836, 0.045642667, 0.26460654), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.28779998, 0.04767888, -0.011856489, 0.114210494, 0.034624737, 0.19084676, -0.02740287, 0.035041407, -0.049002927, 0.10928203, 0.17362499, -0.1280889, 0.00077811617, -0.17594084, -0.18379052, 0.22303762), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.0008487252, -0.060438234, 0.109334275, -0.18768874, 0.13844973, 0.09226474, 0.18361697, -0.19385563, -0.29241335, -0.1033556, -0.3289991, 0.10027422, -0.09454755, -0.22817631, -0.2964217, -0.19499257), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.057920385, 0.06342629, -0.048577324, 0.15952215, -0.061343953, 0.16471362, 0.1501856, 0.027373426, 0.01837245, -0.0732048, 0.09776471, 0.14817989, -0.112215854, 0.109101914, 0.058316242, 0.29969788), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.12411656, -0.033170763, -0.08715826, 0.110862456, 0.1871076, 0.14550175, 0.23373431, 0.19281025, -0.37016305, -0.11924462, 0.026793748, 0.092801645, 0.04318573, 0.20969667, -0.39267823, 0.1938874), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.15932916, 0.22217506, 0.007901788, -0.04037383, 0.09095982, -0.043115042, 0.098845564, -0.073432215, -0.14535685, 0.11504512, -0.07950504, -0.010718905, -0.050012022, -0.13089752, -0.3323894, -0.005423676), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.007320675, 0.21108273, 0.20758918, -0.04005568, -0.13234317, -0.15708306, 0.41804615, -0.09720499, -0.09623786, 0.2441289, 0.33276868, 0.17716111, -0.45670444, -0.026252905, -0.01958701, 0.24028622), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.14936383, -0.023504466, -0.028479185, -0.053541556, -0.060263615, -0.087681144, 0.2435555, 0.08470686, -0.17713271, -0.2303349, 0.09337386, 0.039068084, -0.16263027, 0.034289114, 0.16604292, 0.10550447), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.16556105, 0.12211341, -0.0036831333, 0.13802956, 0.065256506, 0.03395266, -0.2296282, 0.21284704, 0.017770419, -0.1722762, -0.1741687, 0.10708671, 0.331979, 0.11924846, -0.09410989, -0.123036265), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.096586555, -0.30475244, -0.24065268, 0.053860847, 0.19413544, 0.05542323, -0.06327867, 0.012265184, -0.08913778, 0.13779551, -0.099127166, 0.007493773, -0.07125554, -0.0011684593, -0.003005287, -0.094847135), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.21711998, -0.13086027, 0.07825239, -0.21121782, 0.055840425, -0.0019166623, -0.05480048, 0.019817038, 0.007626905, 0.14126389, 0.04515749, -0.029315706, 0.18555732, -0.114861906, -0.21993469, 0.031716693), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.06716353, -0.11964145, 0.09711908, -0.061763637, -0.0948045, 0.14189975, 0.2810092, 0.2505306, 0.08872909, 0.086749084, -0.17528322, -0.048835423, 0.124959685, -0.12602286, 0.065660164, -0.06783225), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.23066516, -0.0068310793, -0.0021060852, 0.09136854, 0.09919007, 0.2259628, -0.026603302, 0.1367709, -0.07940821, 0.14962214, 0.00652088, -0.3114987, -0.18900892, -0.20450105, 0.09329685, -0.19482759), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.095197074, 0.06346413, -0.05207484, -0.086378016, 0.19733003, 0.1448027, -0.02410627, 0.024829205, -0.20296144, -0.09551166, 0.022987023, 0.09035918, -0.15824226, 0.1350293, -0.06641893, 0.11739518), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.08381447, -0.13171835, -0.030271608, 0.14649504, 0.0007350431, 0.15303299, -0.001797464, 0.30294403, -0.07635094, -0.102541, -0.12176348, 0.053775523, 0.08070882, -0.035387367, -0.09521456, 0.22530125), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.04650126, 0.12029137, 0.009236626, -0.1371486, -0.119391896, 0.20490645, 0.17123316, -0.015455403, 0.05842872, 0.14354227, 0.37586045, 0.054906923, 0.062954046, 0.07285954, 0.12260665, -0.08675996), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.22510684, -0.010087092, 0.005660375, 0.05069907, 0.10297958, 0.1411009, 0.09538159, 0.00922383, -0.31313825, -0.06449414, 0.109746836, 0.30148697, 0.35861742, -0.045380104, 0.09908991, -0.1933117), target2);\n\n\tMF3 target3 = tex5.SampleLevel(sam, pos, 0).rgb;\n\ttarget3 = MulAdd(e1, MF4x3(-0.02302231, -0.035528302, -0.030674051, 0.029780716, 0.031591274, 0.045867007, 0.01335752, 0.037001595, 0.04351411, -0.11126892, 0.038589563, 0.06444906), target3);\n\ttarget3 = MulAdd(e2, MF4x3(0.0047764573, -0.063372664, -0.065609895, 0.0478139, 0.025694113, 0.025097322, -0.1019169, 0.029989049, 0.050038517, 0.07504127, -0.017047737, -0.026222635), target3);\n\ttarget3 = MulAdd(ne1, MF4x3(0.0024485083, 0.00640911, 0.008171829, -0.014622121, -0.06078096, -0.0800138, -0.0062360805, -0.014344496, -0.021332184, 0.117842786, -0.103745885, -0.13756834), target3);\n\ttarget3 = MulAdd(ne2, MF4x3(-0.01942775, 0.08720701, 0.104858086, -0.05545872, -0.041375194, -0.035368554, 0.080331706, -0.021207837, -0.043905254, -0.12515299, 3.445463e-05, 0.018742712), target3);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n\ttex6[gxy] = MF4(target3, 1);\n}\n\n//!PASS 7\n//!DESC Conv-4x3x3x16\n//!IN tex3, tex4, tex6\n//!OUT tex1, tex2, tex5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.013113342, -0.2905848, -0.029724011, 0.1769613 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.04279202, -0.01698567, 0.18318103, -0.18172316, 0.04757184, 0.07232096, -0.054900512, 0.11956132, 0.048900753, 0.0006714882, -0.09200336, 0.16104606, 0.38940707, 0.2754208, -0.12735553, -0.30017206), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.2469705, 0.103162065, 0.10321547, -0.1292231, 0.3013039, -0.018333653, -0.19897339, 0.122247696, 0.14719778, 0.003909129, -0.19585025, 0.03670547, -0.2132921, 0.33642963, 0.17569672, 0.07414473), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.015335451, 0.15161209, 0.0447609, -0.042884503, 0.14257035, 0.07775234, -0.2064044, 0.03842874, -0.1660166, -0.19817057, -0.10740875, -0.123968095, 0.14156081, -0.2197906, -0.08622206, 0.4185408), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.33392438, -0.12483512, -0.062084857, 0.16336447, 0.09862199, 0.1659862, 0.034751434, -0.11968266, -0.017155796, 0.21001562, -0.053017724, 0.10386376, 0.07066254, 0.50014263, 0.31065208, -0.026068505), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.34320992, -0.030056434, -0.24118581, -0.024320357, 0.327435, -0.036838267, -0.19433706, 0.24561343, -0.1489437, 0.225435, 0.18421564, 0.021147838, 0.264245, 0.16846146, -0.51724315, 0.039252095), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.25945047, 0.12058094, 0.2889452, -0.061687145, -0.10309796, -0.19476385, -0.10393912, 0.16837607, -0.05198191, -0.036113493, -0.11847194, 0.16367626, 0.018113747, 0.059499823, 0.0062132217, 0.15846115), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.094601326, 0.053219795, 0.027610637, 0.12041253, 0.21425363, 0.15754686, 0.08518286, -0.00661778, -0.021661628, -0.17554528, -0.014842315, 0.22240937, 0.15908821, -0.20964032, 0.21754523, 0.30307937), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.13757955, 0.06684095, -0.03616685, -0.014618309, 0.04168136, -0.17148526, -0.16317028, 0.14210777, 0.102521434, -0.19108291, -0.14441934, 0.14435884, 0.24228935, -0.10589834, 0.24029285, 0.27317202), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.16239886, -0.073841535, 0.067964345, -0.11332664, 0.07695667, -0.047180675, -0.08260769, 0.09427637, 0.09471068, 0.012713836, 0.14605078, -0.062490974, -0.11498225, 0.04150893, 0.37402585, 0.21953487), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.07445113, -0.14220217, 0.09271495, -0.014715529, -0.37606132, -0.14938155, -0.024809113, 0.22279873, -0.011379667, -0.04545505, -0.033382278, 0.08971831, 0.016359061, -0.016230864, 0.052939463, -0.07754285), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.10961948, 0.09230085, 0.061259165, 0.0015837378, 0.053883027, -0.22557226, 0.018400123, 0.43234614, 0.08967873, 0.06687854, -0.4389578, -0.01658211, -0.040707946, 0.0048945122, 0.1433802, 0.049759727), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.027641231, 0.026085567, 0.109188825, -0.19011945, 0.19309571, 0.0084956605, 0.05034047, -0.08674781, -0.008124587, 0.031490494, -0.0744263, 0.084508896, -0.007835403, 0.13120581, 0.0021786217, -0.025225073), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.020191731, 0.24703082, -0.36845222, 0.0032569442, -0.1497622, 0.05968502, 0.09595371, 0.008410154, 0.119981945, -0.09983294, -0.19541258, -0.111814305, -0.25664008, 0.31031236, -0.23063917, -0.13823026), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.092747286, 0.23009373, -0.29804415, 0.05036082, 0.031480987, 0.18805481, 0.3676576, 0.06004687, 0.19841099, -0.058367446, -0.44229323, -0.19645047, 0.037667975, 0.12398346, -0.25753063, -0.26919344), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.019061154, 0.03841801, -0.28433323, 0.38128456, -0.059526864, 0.29960185, 0.014484517, -0.10234412, 0.05444907, -0.12615138, 0.14936689, -0.079120934, 0.028092088, 0.096715964, 0.0037780635, -0.12791039), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.26949528, 0.015951393, 0.15355164, -0.030336212, -0.100286454, -0.052609976, 0.03197625, -0.092190474, 0.06131517, 0.18291938, -0.15216532, -0.026021928, 0.18581273, -0.10659101, 0.14806952, 0.20509768), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.2205839, 0.11654808, 0.43800604, 0.03188946, 0.13840868, 0.020377772, 0.038510147, 0.03779825, -0.23494276, 0.08624197, 0.036650848, -0.115041405, -0.03776705, -0.32108167, 0.0094707385, 0.37881464), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.031778246, -0.38020673, 0.16956653, 0.33444092, -0.042172886, -0.03465591, -0.17585713, 0.025507452, 0.07595919, -0.06807453, -0.100295454, -0.019174794, 0.07763043, -0.09321411, -0.05212223, 0.112239085), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.048172995, -0.012284629, 0.12846173, -0.13459995, 0.25443402, -0.013064909, 0.15480834, 0.14016332, 0.036635883, -0.049085367, 0.0506487, 0.26623604, -0.023176057, 0.012088936, -0.1844897, 0.040488705), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.2147455, 0.17323543, -0.2943051, -0.053386763, -0.023367947, 0.090753146, -0.011997397, -0.0626111, -0.13558747, -0.035944186, -0.014752113, 0.25506687, 0.055502877, 0.31465453, -0.16283247, -0.08967175), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.033773236, -0.09510872, -0.09313707, 0.046486538, -0.1699796, -0.11685979, 0.22197925, -0.013884658, 0.12514, -0.12129843, -0.09695589, -0.075202964, -0.12321221, 0.18949097, -0.03694664, -0.2306249), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.08668444, -0.22983012, -0.30873656, 0.07371376, 0.082137264, -0.014844924, 0.2283955, 0.24782042, 0.31113505, 0.14810014, 0.32804835, -0.12014127, -0.17742543, -0.15872951, -0.080107674, -0.16898526), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.29746926, 0.19479977, 0.13996765, -0.4268552, -0.16478531, 0.0835479, 0.45685142, -0.05510062, -0.1282004, 0.12359051, 0.34026766, -0.26152933, -0.13128015, 0.329812, 0.27172327, -0.06600192), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.06552484, 0.19600633, 0.12407863, -0.13815112, 0.17426166, 0.040930413, 0.06495108, 0.034157254, -0.029772963, 0.015127817, 0.10718436, -0.13752984, -0.0205358, 0.1884735, 0.104591034, -0.020779913), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.053475305, -0.13616458, 0.05487909, 0.13256747, -0.10030239, -0.12376705, 0.062755466, 0.03264356, 0.068466686, 0.05019395, -0.034875803, -0.17806669, -0.21720818, 0.25592342, -0.2685692, -0.27576914), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.04562929, 0.04225299, -0.22311088, -0.09517893, -0.19886662, -0.11944208, 0.11044239, -0.10464355, 0.037634842, 0.124069214, 0.0927385, 0.108838566, -0.088783056, 0.17008123, -0.1007014, -0.23137446), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.10306672, 0.027472405, -0.069015354, -0.14412996, 0.24068132, -0.10624665, -0.25597134, 0.05208812, -0.10230778, 0.006520562, -0.11931577, 0.26738268, -0.09168354, 0.13557245, -0.008878644, -0.22292739), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.09403718, 0.11993688, -0.036254726, -0.053109076, 0.18422048, 0.25203657, 0.10025996, -0.11272799, -0.22040273, -0.05758331, -0.07059054, -0.054108664, -0.20009018, -0.22061199, 0.057880517, -0.26669186), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.08534496, 0.0027822452, -0.01112169, -0.13484463, -0.09446875, -0.057457812, -0.03910888, -0.2816038, -0.096015625, -0.03636662, 0.12532772, 0.092033, 0.038156748, -0.101240925, 0.024886698, -0.086328045), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.2349796, 0.19884427, -0.0734711, 0.08422328, -0.07201622, 0.020658491, 0.1331021, 0.039766714, 0.19280422, 0.13086005, -0.11339721, -0.14782044, 0.19341573, 0.16767374, -0.03593828, 0.18139753), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.040663462, -0.15233721, 0.524604, 0.26603413, 0.07202415, 0.053382196, 0.030758869, -0.06144292, -0.010495834, 0.13868876, -0.020688854, -0.15551737, -0.2958513, -0.32805985, -0.25359175, -0.036683984), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.06644081, -0.145321, 0.24945419, 0.031560224, 0.17245345, 0.23418438, 0.20341763, -0.2619872, 0.038787205, 0.16488725, 0.0019107185, 0.03820528, 0.04169643, -0.34155026, -0.11183654, 0.028614044), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.028469078, 0.010781976, 0.05263661, -0.15337946, -0.20491667, -0.13879907, 0.13934538, 0.061196275, 0.056804053, 0.063193604, -0.2389496, 0.037072126, -0.058510017, 0.036215063, 0.3074709, 0.10517675), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.028534278, 0.0022668538, 0.04492863, -0.060705435, 0.06349762, -0.016823182, -0.09148226, 0.03930522, -0.083295114, 0.14799853, -0.08089152, -0.21993661, -0.23298621, 0.05106244, -0.013708201, -0.16311577), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.05885827, 0.122300275, -0.16086812, -0.21892425, -0.07548077, 0.09286181, -0.027564062, -0.028723463, -0.0056181233, 0.23472206, -0.0049285595, -0.45054138, 0.07592325, -0.044704806, 0.019616256, -0.06956836), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.036423888, 0.20839189, -0.16420732, -0.15954947, -0.11311323, -0.24191359, 0.19845375, 0.084540576, -0.20946553, 0.09259613, 0.03234368, -0.056766506, -0.11992363, -0.06882079, -0.020428827, -0.093375795), target1);\n\t\n\tMF4 target2 = { 0.22705397, -0.029518934, -0.026397338, -0.08183741 };\n\ttarget2 = MulAdd(a1, MF4x4(0.093678355, -0.08574688, 0.007699401, -0.038818456, -0.10667588, 0.043627866, 0.23127791, 0.061317544, -0.32790044, 0.08618836, 0.009400048, -0.17129329, 0.23541448, -0.015561885, -0.11172365, -0.1190039), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.0052874424, 0.08136584, -0.12633958, -0.016064916, 0.14033778, 0.07755252, -0.26242834, 0.063312635, 0.06861756, 0.14867078, -0.2561066, 0.33325562, -0.106489345, -0.10068009, -0.039633382, -0.016305668), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.27784392, -0.14990395, -0.35981888, -0.2564094, -0.07480205, -0.026457628, 0.1027643, 0.19381845, -0.07160986, -0.15616457, -0.032070953, 0.32998616, 0.15383582, 0.16622585, -0.1435993, -0.02287804), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.09360053, 0.58019537, 0.02028909, 0.413114, 0.025173154, -0.030326266, -0.028177274, -0.12964654, -0.25432733, -0.06556034, 0.023097439, -0.09458851, -0.21772051, -0.10324596, -0.36674342, -0.14803977), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.1227467, 0.20252965, 0.2559927, 0.08719227, 0.030749539, -0.2526622, -0.25694713, -0.2960799, -0.34960067, -0.25393236, -0.28439638, 0.086787805, -0.34202877, 0.21933395, 0.23473133, 0.079260886), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.00147522, -0.16591258, -0.030617915, 0.10052425, -0.1822102, 0.038774874, -0.04285007, 0.07312042, 0.052175622, -0.33510515, 0.027545406, 0.2995306, -0.08535316, 0.11144203, 0.27999434, -0.09770663), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.04394928, -0.26842886, -0.08354109, 0.04077001, -0.009221606, 0.0328837, 0.006459338, 0.08984004, -0.13035133, 0.20004508, 0.21950854, -0.12742348, 0.32386312, 0.085903555, -0.29273173, -0.056370437), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.019171638, -0.1824711, -0.10899421, -0.16201603, 0.054712642, -0.020315547, -0.048609916, -0.068621606, -0.055706583, -0.25671515, -0.019494208, 0.08366393, 0.09531471, -0.05988052, -0.024995802, 0.019303525), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.08694609, 0.26762635, 0.10477892, -0.15392998, -0.059596587, -0.047562487, -0.25932398, -0.054960977, -0.00015596532, 0.07196634, -0.017385524, -0.18826845, -0.017969077, -0.27291682, -0.153906, -0.107691295), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.17340474, -0.1285696, -0.04484238, 0.15782213, -0.06190358, 0.27896214, 0.28475145, -0.042519942, -0.19862229, -0.1354097, 0.14344497, 0.015599392, 0.18698554, 0.035121564, -0.018465763, 0.0010143917), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.13428356, -0.06612225, 0.19397905, 0.14209093, 0.1526626, 0.2617573, -0.15316434, 0.35452205, 0.05003259, 0.07679617, -0.008399171, -0.0062716682, 0.11833864, 0.1331285, -0.006803729, 0.22615404), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.0020632436, -0.173174, -0.15404437, 0.05430569, 0.21100305, 0.39063898, -0.019479724, 0.17396629, -0.061121427, -0.13424753, -0.008459669, -0.04975768, 0.20599939, -0.11374013, -0.21116278, 0.063624285), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.0073831948, -0.12009769, -0.16402034, 0.054093774, 0.061061747, -0.009054565, -0.02815144, -0.17071937, -0.22791979, 0.073427565, 0.25161973, 0.1011713, -0.23804636, 0.13810354, 0.09063126, -0.23065178), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.31885087, 0.21730177, -0.20516786, 0.04075695, -0.2736768, -0.38779113, -0.19445951, -0.14024325, -0.11824961, -0.102919355, -0.17858729, -0.013441498, 0.16320607, -0.27105078, -0.00019549616, 0.024509901), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.16024838, -0.3132909, -0.15461555, 0.34874174, -0.0051668375, 0.1811257, 0.3384939, 0.16381103, 0.047184363, -0.20424844, -0.1330078, -0.13795874, 0.21890834, -0.08242861, 0.22677775, 0.031102268), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.19408257, 0.016361775, -0.202373, 0.2245766, -0.008954751, -0.047279913, -0.09170596, 0.01567793, -0.0019059096, -0.07785436, 0.0756357, 0.09683383, 0.034215495, -0.030802004, -0.077977195, -0.1101297), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.1060503, -0.0044663083, -0.14942732, -0.11696249, -0.04550482, 0.11463188, 0.17801443, 0.07229662, -0.14176941, 0.02773344, -0.10770335, -0.08745911, -0.023052111, -0.17474785, 0.016645849, -0.059080444), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.050500304, -0.14716387, 0.04525464, 0.23543595, 0.08411192, 0.16031684, 0.1659825, -0.03595111, -0.012943453, 0.13354135, -0.051425032, -0.0075654723, 0.11174184, 0.1266808, -0.18799087, 0.10571744), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.15583408, 0.09837484, 0.19239932, -0.03557196, -0.05406335, 0.096456856, -0.13921897, -0.2212671, 0.28973594, 0.04017474, -0.25423512, 0.1522156, -0.10563249, -0.033190794, 0.101713456, -0.08922746), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.0787607, -0.14545321, 0.099762656, -0.2824299, 0.10130184, 0.019948835, -0.1013831, 0.06604923, 0.089561954, 0.28344154, 0.05757009, 0.04981809, -0.15927236, 0.008129835, -0.04280382, 0.10653281), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.28149363, 0.019583186, 0.25983065, 0.30190885, 0.055435803, -0.01970755, 0.04546505, -0.027456624, 0.43886992, -0.032305803, -0.23557569, 0.12753153, -0.18509789, -0.073295385, 0.0083466545, -0.08271229), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.016040009, -0.20475672, -0.015803276, 0.18247975, 0.21178837, -0.041543446, -0.24716362, 0.10105528, 0.19479224, -0.06583694, -0.09192672, -0.037776746, 0.09636229, -0.12086331, 0.13989103, 0.014564729), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.19923596, -0.4132588, -0.4254784, -0.33433357, -0.16956097, -0.25086832, 0.23311833, -0.08976422, 0.06432824, -0.0071802614, 0.0033370545, -0.11073493, -0.46609998, -0.09332235, -0.27287352, 0.052513942), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.06954148, -0.06908355, -0.01875471, -0.35067585, 0.038715206, 0.08843527, 0.28899097, -0.024983376, 0.05879495, 0.110363334, 0.055481512, -0.0046147215, -0.035302363, -0.2722019, -0.0829261, 0.21088009), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.101971015, -0.18584369, 0.1469676, 0.025965, 0.07205807, 0.08838771, 0.08537094, 0.023344917, -0.106373414, -0.09254277, -0.25996596, 0.24570447, 0.00590166, -0.20074098, -0.05443169, -0.10562662), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.12980327, -0.16834956, -0.1635997, 0.23437372, -0.07374834, 0.0062907683, 0.17292136, 0.0018093853, 0.04122969, -0.025285576, 0.29646805, 0.13402736, -0.040267725, 0.0011441729, -0.18658921, 0.12006417), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.13221453, 0.15109141, 0.07707579, 0.05148666, -0.039716493, 0.12869143, -0.012840577, 0.10953536, -0.05721115, -0.120122276, -0.07632444, 0.32949027, 0.00022400127, 0.22217369, 0.2180494, -0.028773604), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.08405412, 0.11332542, 0.120847605, 0.00520135, -0.13689686, -0.1459117, -0.029643068, 0.16147274, 0.21844815, -0.036921967, -0.12862785, -0.15930249, -0.11265427, -0.17471205, 0.0026749703, 0.2048758), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.03768306, -0.07585988, 0.046583172, -0.35557657, 0.012359812, -0.05498573, 0.19581361, -0.08186999, -0.008727976, -0.16623624, -0.03647879, 0.22760212, 0.048297524, -0.12502927, 0.08636729, -0.26437047), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.19518375, 0.17423135, 0.19473018, -0.22721744, -0.25087392, -0.17043075, -0.021999557, -0.27388734, -0.096786864, -0.012226921, 0.16101876, 0.030362492, -0.017619403, -0.2494354, -0.07336028, 0.06842719), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.13816363, 0.14551367, -0.08497621, 0.15563537, -0.01600614, -0.010629245, 0.007773828, 0.2733634, 0.13066974, -0.2223056, -0.12664202, -0.19242655, -0.13211249, 0.065143794, 0.23912583, 0.19819915), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.001870705, -0.0028601827, 0.14014813, 0.14659253, -0.037523735, 0.3726274, 0.13139205, 0.0112125, -0.16308945, -0.17571904, 0.12799808, -0.032106552, 0.013872656, 0.432307, -0.14197885, 0.24013121), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.117900506, -0.08039036, -0.17504077, -0.08337764, -0.0068703834, -0.07430392, -0.17125578, -0.3470726, -0.20989974, -0.019394008, -0.027336912, 0.18668686, 0.052886557, -0.023217537, 0.004054446, 0.055974416), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.055653654, 0.08726097, 0.01206228, -0.25783783, -0.08736529, 0.19947968, -0.010166337, 0.36168414, 0.20298903, -0.15769973, -0.21389212, -0.19638214, -0.093130395, -0.067289785, 0.10245741, -0.14167903), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.04559992, -0.102125205, 0.21949212, -0.07308472, -0.15511832, 0.23785073, 0.04275021, 0.085007004, 0.079402514, 0.10851189, -0.151969, -0.29738536, -0.0776658, 0.1113102, -0.18987878, -0.045522977), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.073690206, -0.016468357, 0.122353435, -0.023995928, 0.095143944, 0.23051415, 0.17702249, 0.030164838, -0.09111423, -0.14219609, -0.19734482, -0.24854833, -0.0067356345, -0.1760497, 0.22637916, 0.119141534), target2);\n\n\tMF3 target3 = tex6.SampleLevel(sam, pos, 0).rgb;\n\ttarget3 = MulAdd(e1, MF4x3(0.013106969, 0.010379314, 0.012753471, 0.07086715, -0.020893, -0.03968904, -0.06114372, 0.029510446, 0.035070244, 0.11180839, -0.087067656, -0.124039896), target3);\n\ttarget3 = MulAdd(e2, MF4x3(-0.056521703, -0.001166792, -2.3704073e-05, 0.011961608, 0.01848977, 0.019861937, 0.012167056, 0.018613879, 0.020505793, 0.009734187, -0.0308419, -0.035206888), target3);\n\ttarget3 = MulAdd(ne1, MF4x3(0.0048758825, 0.018046578, 0.014597015, -0.061724614, 0.040989272, 0.05644141, 0.070315465, 0.008318584, 0.0028647361, -0.11316492, 0.043919202, 0.07653594), target3);\n\ttarget3 = MulAdd(ne2, MF4x3(0.031487904, -0.010548384, -0.009984509, -0.0022647562, 0.0043304027, 0.0029451603, -0.0063251094, -0.013420807, -0.011919729, -0.022760967, 0.019141173, 0.01782793), target3);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n\ttex5[gxy] = MF4(target3, 1);\n}\n\n//!PASS 8\n//!DESC Conv-4x3x3x16, Conv-3x1x1x112\n//!IN INPUT, tex1, tex2, tex5\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass8(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.20551574, 0.073114716, -0.21843387, -0.28057778 };\n\ttarget1 = MulAdd(a1, MF4x4(0.16737834, 0.35369134, 0.14049083, 0.017871622, 0.0058661173, -0.035960242, -0.039154284, -0.01920433, 0.0729212, -0.03617972, -0.42717552, -0.019914677, -0.30816802, -0.07726792, 0.2088459, -0.09198307), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.0991125, 0.11411345, 0.15300295, -0.09510225, 0.014268626, -0.42914182, -0.13365223, -0.19440699, -0.27214321, 0.085696176, 0.1527733, -0.21056797, -0.062475704, -0.023041902, -0.29080424, -0.54386055), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.30736786, -0.16801229, 0.07400606, -0.31128535, -0.11047924, 0.16556956, -0.33445996, -0.09190697, -0.06132585, -0.11021996, 0.014628762, -0.45183894, 0.08186993, 0.19378273, 0.113438204, 0.038364496), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.24129803, 0.29174972, -0.1250327, 0.14254767, 0.0026774528, 0.1742466, -0.021835174, 0.01668921, 0.13646975, 0.313305, -0.23293279, -0.16737306, -0.059818722, 0.06404477, 0.108172625, 0.22065729), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.3504013, 0.20759478, 0.28683922, 0.2771802, 0.13761812, -0.21180478, -0.17020214, -0.21419087, -0.031916566, -0.040439468, 0.39206958, 0.715565, 0.46198523, 0.05055317, -0.07409331, -0.050633535), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.122958206, 0.0071205017, -0.21314384, -0.22197853, 0.016202174, -0.15960938, -0.14601983, -0.023609173, -0.07586023, 0.099936776, -0.0480375, -0.08681468, -0.14976887, -0.38979456, 0.16078879, -0.12263952), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.1687149, 0.108331114, 0.10112296, 0.01738403, -0.06773097, -0.19410455, -0.09728116, 0.0013846151, -0.038603816, -0.05495021, 0.2453317, -0.40052003, -0.022453755, 0.045039784, 0.0474246, -0.2665161), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.06805519, -0.052276067, 0.052459523, -0.0033053474, 0.13439268, -0.06845637, -0.20462433, -0.09088968, -0.00096404477, -0.35103628, 0.15096465, 0.3285226, 0.018747555, -0.06623108, 0.1754265, 0.3211156), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.04583627, 0.122267574, -0.44002235, -0.20039988, 0.039372742, -0.16505809, -0.26659602, 0.12207268, 0.03337428, 0.23131758, -0.009866899, 0.010381569, 0.29676, -0.020599596, 0.17816995, 0.32852224), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.09469788, -0.12531966, -0.11786524, -0.3115985, -0.2213199, -0.012536277, -0.13176842, 0.14986996, 0.12069894, 0.2744789, 0.21674646, 0.46060535, -0.4101697, -0.55295914, 0.29993954, 0.114459395), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.18347421, -0.29010707, 0.29127017, 0.087738656, 0.17509815, 0.03982794, 0.1731455, 0.38041735, 0.110374, -0.25045586, 0.36446962, 0.016104888, -0.012112869, 0.10154983, -0.45384112, -0.11416608), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.033837743, -0.020894403, -0.287127, -0.21196121, -0.03255823, 0.2599821, -0.38386443, 0.30563655, 0.39044768, -0.112917066, -0.021323297, 0.12623324, 0.06885038, -0.20750642, 0.07642818, -0.103580445), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.1723114, -0.3726216, -0.21184283, 0.1761503, -0.24993578, -0.31068864, 0.19998416, -0.23127908, -0.052656204, -0.04243976, 0.4397144, 0.01863219, -0.04796025, -0.11009142, -0.0073631364, 0.2716381), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.04202001, 0.27142277, -0.027491128, 0.27428457, -0.11009916, 0.39839938, -0.7223327, -0.124673314, 0.08123618, -0.11884722, -0.20375855, -0.7179687, 0.30648115, -0.28195357, -0.3350774, -0.29778734), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.071278594, -0.09155223, 0.06417857, 0.08250104, -0.45117077, -0.023316784, 0.38917172, -0.19110887, -0.09265943, -0.2643835, -0.09707039, -0.33238646, -0.0818088, 0.17623149, -0.28457013, 0.13986786), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.019971045, -0.046649583, -0.03036858, 0.07944429, 0.26344573, 0.054998036, 0.07139812, 0.21139374, 0.08021858, -0.025791258, -0.0423707, 0.25174072, -0.021300986, 0.13209766, 0.19120613, 0.3840775), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.11456406, -0.33503455, 0.21409267, -0.056933913, -0.12204284, -0.37379473, 0.33474764, 0.38634798, 0.12618992, 0.1353635, -0.22651522, -0.3160159, 0.18621005, 0.024818055, -0.11935204, 0.014005666), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.1501391, 0.0014716414, -0.22049955, -0.10928345, -0.07085164, -0.08778668, 0.19251469, -0.4932493, 0.071784936, -0.06903646, -0.060333923, 0.020552203, -0.33637995, -0.22848415, 0.21518159, 0.23815839), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.04230713, -0.19312756, -0.0613665, 0.058912925, -0.17639293, -0.029920885, -0.027867602, -0.16602923, 0.10262268, -0.0743682, 0.15286638, 0.08042581, -0.042299524, 0.0022034592, 0.15304253, 0.049871147), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.004346093, -0.07895582, 0.02089975, 0.13429636, -0.1020282, 0.5270822, 0.017983409, 0.1531299, -0.02891241, -0.07050933, -0.18729019, 0.13855362, -0.11538968, 0.20733222, 0.1546878, 0.11550679), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.21800312, 0.20944421, -0.1817274, 0.022868395, -0.019241469, 0.038916696, 0.088702604, 0.1467791, 0.0048542274, 0.10344671, -0.0107803065, 0.23302868, 0.049728952, -0.016042534, -0.08694045, -0.0028224774), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.1570157, 0.08688841, 0.03926086, -0.040503077, -0.052700017, -0.1432353, -0.04516745, -0.09649034, -0.053716175, 0.07059194, -0.07360609, 0.26307717, 0.121471435, -0.13640986, -0.1113535, -0.38560814), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(-0.014722592, -0.39773384, 0.28259715, -0.10905738, 0.07889424, 0.1415529, -0.15419348, -0.2064834, -0.15126482, -0.28288555, -0.0014232624, -0.26178944, -0.025823193, 0.008017357, -0.08547297, 0.26373458), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.2978961, -0.020236012, -0.101216674, 0.15498216, -0.0069343713, -0.088363856, 0.20511419, 0.23958007, 0.045810107, -0.19189738, -0.14137349, 0.04177724, -0.1394684, 0.0071990825, 0.06991723, -0.21052721), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.05615232, 0.22506002, -0.12479586, -0.0070057763, 0.092545755, 0.096306436, 0.041890718, 0.1226944, -0.07541768, -0.08369033, -0.15144373, 0.09310172, 0.28388003, 0.09935607, 0.11299509, 0.0014283776), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.005848455, 0.117699094, 0.23539856, 0.11006195, 0.10962903, 0.28139547, 0.18785141, -0.11635996, 0.057289902, 0.2370178, -0.29825503, -0.13706475, -0.3869794, 0.024066223, 0.36742347, 0.35919484), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.13744523, 0.09239356, 0.01173183, 0.119055405, -0.07841836, 0.0668925, 0.22598477, -0.016510552, 0.07971727, -0.17154713, 0.03333588, -0.13790733, 0.15421963, 0.2895701, -0.28440917, 0.015132756), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.054354303, 0.36663428, 0.02634933, 0.18688667, 0.0607547, 0.17321853, 0.086784445, -0.023283, 0.0027200899, 0.026914112, -0.07438439, 0.27042162, 0.09985293, 0.012430832, -0.20694605, -0.20363812), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.42759168, 0.15540305, -0.18979609, 0.0073875943, 0.034251947, -0.34551802, 0.53327596, 0.17446762, -0.25879666, 0.2780996, 0.11094055, 0.17597, 0.13790102, 0.2615357, 0.09666047, 0.36155468), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.052614138, -0.1880028, 0.361331, 0.07957976, 0.12552904, -0.0042941784, 0.096562445, -0.041199915, 0.07412456, 0.16379668, 0.05464284, 0.050022952, -0.028281605, 0.09332573, 0.21379845, 0.21396561), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.07546953, 0.16393837, -0.3060623, -0.64610606, -0.013715101, 0.18005042, 0.045286633, -0.21057944, -0.12779316, -0.10310629, 0.14360385, 0.011625261, 0.05597252, 0.023864657, -0.00018915108, -0.24224915), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.08550672, 0.2438917, -0.30383766, -0.2463794, 0.13835424, -0.079946786, -0.060197506, 0.051599402, -0.24983203, -0.06691107, -0.0041784844, 0.07539119, -0.030340329, -0.23565106, -0.17968354, -0.10262371), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.19315718, -0.045718513, 0.120446794, -0.225136, 0.22922774, -0.046026126, 0.11448238, 0.114267804, -0.22327735, -0.03368635, 0.29763463, 0.03673529, -0.0583939, -0.092253424, 0.045279544, 0.04475646), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.062286656, -0.06241419, -0.23600577, -0.24818502, -0.058666106, 0.17710151, -0.1751668, 0.05758226, 0.18278669, 0.033297777, 0.046349872, 0.09178792, -0.0745512, 0.20019765, 0.037281513, 0.22204825), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.24708512, -0.1318695, -0.24966322, -0.31206796, 0.079176836, 0.11837155, -0.12882641, -0.01013533, -0.009065797, 0.0789075, 0.016151598, 0.00020127615, 0.1450729, 0.10825556, 0.09322918, 0.07283566), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.2604332, 0.25550258, 0.07709474, 0.28426003, 0.10387355, 0.09152259, 0.18742633, -0.0073229484, -0.20327723, -0.26013616, 0.055792782, -0.1713302, 0.14862068, 0.06698207, 0.17608787, -0.11622757), target1);\n\t\n\tMF4 target2 = { 0.31939298, 0.03303962, -0.010749771, 0.084496394 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.18413043, -0.12355504, 0.2708789, 0.17259507, -0.069752574, 0.12640886, 0.01075919, -0.028221423, -0.020598855, -0.17259665, 0.16907778, -0.10040477, 0.017177016, 0.0176426, 0.23724149, 0.14657862), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.16921899, -0.33950835, 0.37508205, 0.09996622, 0.13377811, -0.036743056, -0.11633877, -0.23046862, -0.009307903, 0.027441062, 0.054166224, 0.011627087, -0.22831611, 0.043198805, -0.12695734, 0.0062862337), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.17216596, -0.15588646, -0.14179194, 0.12487524, 0.10507964, 0.124544986, -0.0046104924, -0.116668865, -0.006100901, -0.022074439, 0.03376759, 0.10498887, 0.109659016, -0.03567928, 0.29972833, -0.045950003), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.29127, 0.21912472, 0.16494286, 0.027708547, 0.043136686, 0.04409876, -0.07686145, -0.13180132, -0.16630307, 0.15650205, -0.005864527, 0.03916553, 0.15750135, 0.1705246, 0.21626697, 0.06906506), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.055395894, 0.28228188, 0.114794776, 0.020619212, -0.031812593, 0.11964309, -0.24317431, -0.36277202, 0.54564184, -0.032843567, -0.118973784, -0.40999004, -0.118530475, 0.09256661, 0.06583871, -0.36627474), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.17914769, 0.33976436, -0.11220768, 0.1325754, 0.40586957, 0.3064959, -0.19086123, 0.014164092, -0.17376979, -0.0037554938, 0.11771888, 0.44933778, -0.15937245, -0.10635065, 0.084963776, 0.14630255), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.3723194, 0.21509883, 0.020062352, 0.094394304, 0.030794155, -0.11394617, -0.09103134, -0.0042343247, -0.28981096, -0.061873477, -0.17772584, 0.36440176, 0.007828069, -0.012121627, 0.25862312, 0.24646287), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.10368119, -0.06185447, -0.022830853, 0.10918094, 0.18888599, -0.09235343, -0.055134308, -0.2210923, 0.15334128, -0.3084707, 0.31606838, 0.39931116, 0.29489174, -0.24794856, -0.4799932, -0.2617589), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.32550937, -0.17103608, 0.3257806, -0.23358762, 0.20370598, 0.13325407, -0.020303056, -0.105462655, -0.22264756, -0.034177396, 0.36885822, 0.20504399, 0.36375418, -0.26149705, 0.022433946, 0.15646128), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.007481421, 0.005642636, -0.170087, -0.08915849, 0.6329519, 0.06880098, -0.20856442, -0.1801066, -0.1342754, 0.13643123, 0.26994216, -0.27503812, 0.018052012, 0.058687408, -0.19784917, 0.021157453), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.1486918, 0.12212738, -0.03104796, 0.08664756, 0.3464865, 0.27309546, -0.022896903, -0.32080007, -0.28113958, 0.74847424, -0.33735126, -0.04616876, -0.23119605, 0.4214322, -0.16457441, 0.09162191), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.15863913, 0.1303683, -0.06339421, 0.06328312, -0.3100047, -0.33906308, 0.13805804, -0.14923394, 0.4997829, -0.14977637, 0.02265068, -0.04585939, 0.29802153, 0.3767994, -0.031849556, -0.051892217), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.04541847, -0.13645087, 0.14119779, 0.06409465, -0.29877988, -0.0009743694, 0.028256422, 0.14978185, -0.13014801, -0.24171488, -0.10782599, 0.010709664, 0.21880737, -0.34132662, 0.22972895, -0.07159475), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.1510528, 0.115773134, 0.036761034, -0.284284, -0.35684052, 0.16348189, -0.105475456, 0.08259931, -0.6489164, -0.033928663, -0.04243186, 0.25324553, -0.31829014, 0.066608824, -0.11131264, 0.51919967), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.06517726, 0.1933327, 0.044391852, -0.013346896, -0.3033368, 0.106350735, -0.1351003, -0.13414839, 0.11720078, -0.24844061, -0.2900742, -0.047861837, 0.42789885, -0.47915378, -0.09643217, -0.22915216), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.109821886, 0.31451595, 0.13300805, -0.08792569, -0.023928089, -0.038061168, 0.17821129, 0.003772247, 0.14684688, -0.12646271, 0.16072205, 0.011095222, 0.09209181, 0.005167038, -0.08823252, 0.079890974), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.20074554, 0.39979288, -0.007316405, -0.047838025, 0.10849111, -0.22469573, -0.059183244, -0.13663793, 0.07881898, 0.105663374, -0.3152222, 0.08104766, -0.22965154, 0.118780024, -0.07886757, 0.073527716), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.1304303, 0.023158893, -0.081089824, -0.15955788, 0.42183343, -0.12898655, -0.14028409, 0.011985, 0.3977131, -0.313598, -0.148818, -0.048350018, -0.13534498, -0.12760727, -0.014968193, 0.06646305), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.18085147, -0.11859402, 0.117530234, -0.10420847, 0.1848264, -0.12192718, -0.18729533, -0.10098887, 0.011134682, -0.23658146, 0.12963286, 0.117404245, 0.054487415, -0.030003065, -0.32175776, -0.08044254), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.07251758, 0.073430285, -0.22191651, 0.030512359, -0.029650904, -0.15816379, 0.0418705, 0.04776615, -0.014070836, -0.14669086, -0.009874937, -0.015444495, -0.2747725, -0.061624944, -0.11261252, 0.14757589), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.09274913, 0.046194065, 0.05642919, -0.07803342, 0.23578037, 0.01224276, 0.015608659, 0.05847865, -0.091819406, -0.14424564, -0.034869857, 0.019276984, -0.031180726, -0.21905676, 0.100375675, -0.13659117), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.072157644, -0.13294607, 0.24301524, 0.048643183, -0.04338094, -0.0021709928, -0.06530963, -0.22672611, 0.07479903, 0.08388352, -0.07460508, -0.14517406, -0.072923675, -0.26912874, -0.2769797, 0.054033212), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.5648679, -0.28059873, -0.039906785, -0.39112374, -0.3841447, -0.20383365, 0.12607281, 0.16049421, -0.34394273, -0.022326993, 0.16646549, -0.23433913, 0.071224056, 0.048073303, 0.122035526, 0.14941359), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.11803124, 0.114169255, 0.018188128, 0.0053847185, -0.07537228, -0.048262373, 0.073838905, -0.041833423, 0.044405136, -0.03813592, 0.076818384, -0.06015139, -0.085042655, -0.14306667, -0.21477652, 0.31548396), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.19307283, -0.014985916, -0.14332882, -0.05549754, 0.14551677, 0.11406769, 0.2744144, -0.031179624, 0.17578745, -0.11309805, 0.010072839, -0.07453384, -0.23163621, 0.19061968, 0.11016298, 0.108093746), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.23180474, -0.12522835, -0.03218773, -0.0031955864, -0.14057393, 0.07269213, -0.20883523, 0.09332164, -0.16037942, 0.25845763, -0.002303125, -0.014625506, 0.17063208, -0.11648214, 0.13988028, -0.024688654), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.043369994, 0.12473897, 0.108142346, 0.10268199, 0.16159926, -0.17804666, -0.007889351, 0.07232418, 0.26326916, 0.0474316, -0.41637155, -0.11879895, 0.14051722, 0.08747377, 0.1162202, -0.06443569), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.0041097966, 0.109841965, 0.097240336, 0.08123332, -0.081065506, 0.12650634, 0.23450434, 0.09631333, 0.21942414, -0.108897425, -0.033703003, 0.047280088, -0.017764917, -0.058596086, -0.15305139, 0.09055131), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.26824722, 0.014116421, 0.11844865, -0.156046, 0.057152968, 0.21287468, -0.3243975, -0.18181354, -0.07131152, -0.17860547, 0.18918999, 0.15399154, 0.20270234, 0.11524436, 0.05146645, -0.18196748), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.2745638, -0.026905773, 0.045458756, 0.22942849, -0.21052304, 0.20649272, -0.03713028, 0.33655703, -0.12467089, -0.015030098, 0.15504798, -0.05647672, 0.18751477, 0.08505986, 0.04756538, -0.058810517), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.1737789, 0.06552432, -0.34797582, -0.05370679, -0.036056817, 0.085242435, -0.12802805, 0.03710984, -0.09883285, 0.08946925, -0.0446528, 0.07734006, -0.10973603, 0.262812, 0.14010249, -0.1543792), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.316673, -0.16414417, -0.23147403, -0.3080756, -0.056620106, -0.11389848, 0.0948114, 0.13236332, -0.40048537, -0.090742044, 0.12090404, 0.024549136, -0.19124876, -0.3007761, 0.16159211, -0.28620452), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.032962102, -0.05481415, -0.1185786, 0.18153866, -0.2105442, -0.03802839, 0.14060515, 0.072460145, -0.1523761, -0.11426362, 0.02610123, -0.053477813, -0.20768824, 0.04533907, 0.14381588, -0.041578818), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.021694858, -0.028784249, -0.09928565, 0.07335764, 0.1315628, 0.11288982, 0.078681685, -0.1229723, -0.09618894, -0.07387309, 0.04340066, -0.036534667, 0.37295115, -0.08176548, -0.16579813, -0.13485877), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.45979, -0.289226, -0.15456465, 0.0117592, 0.22803205, 0.15497394, -0.38995707, 0.005227681, -0.20515667, 0.17184737, -0.069968715, -0.24724679, -0.048521046, 0.013277072, 0.049562644, -0.05522196), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.14561136, -0.18995416, 0.18104567, 0.063063085, -0.09728072, 0.018328888, -0.17258182, 0.069259025, 0.15187183, 0.16760696, -0.14086077, 0.013297849, -0.07579904, -0.09294852, -0.24227127, -0.048749007), target2);\n\n\tMF3 result = tex5.SampleLevel(sam, pos, 0).rgb;\n\tresult = MulAdd(e1, MF4x3(0.023055293, 0.028219413, 0.024810018, 0.031653803, 0.050207954, 0.04504577, 0.03877294, 0.0280465, 0.025589157, 0.0019387804, 0.023891818, 0.016049948), result);\n\tresult = MulAdd(e2, MF4x3(0.006562233, 0.03880659, 0.037682824, -0.021441424, -0.011277022, -0.012471097, -0.030526241, -0.013880651, -0.014213582, 0.0075785257, -0.0017350517, -0.0024610942), result);\n\tresult = MulAdd(ne1, MF4x3(0.015097556, 0.020325955, 0.015611413, -0.014755199, -0.034323387, -0.032325987, -0.008603291, 0.010346807, 0.011044969, -0.004739154, -0.026397636, -0.01995132), result);\n\tresult = MulAdd(ne2, MF4x3(0.0097906375, -0.015094543, -0.016887931, -0.0007786067, -0.0069163437, -0.008449091, 0.025534432, 0.018064791, 0.017047096, 0.00055667467, 0.001493328, 0.003636564), result);\n\tresult = MulAdd(max(target1, 0), MF4x3(-0.042251963, -0.042396102, -0.040224236, -0.004492444, -0.0069470624, -0.0065821502, 0.062203273, 0.06213223, 0.053592753, 0.06424337, 0.07964681, 0.07316769), result);\n\tresult = MulAdd(max(target2, 0), MF4x3(0.026366957, 0.02789826, 0.027239393, -0.006712127, -0.0035723334, -0.0032348586, -0.04960562, -0.062758155, -0.058574595, -0.02896146, -0.020999067, -0.021301663), result);\n\tresult = MulAdd(max(-target1, 0), MF4x3(-0.013106142, -0.017057793, -0.014653614, -0.04254173, -0.043040022, -0.041918345, -0.011146975, -0.0043820064, -0.003768677, -0.0027743059, -0.0114479, -0.0082087545), result);\n\tresult = MulAdd(max(-target2, 0), MF4x3(-0.10087762, -0.10447133, -0.1005168, -0.04165659, -0.04558967, -0.040086865, 0.0016493691, 0.0055392827, 0.0070476984, -0.018665023, -0.035552308, -0.03375731), result);\n\tresult += MF3(0.018580848, -0.022256816, -0.0266178);\n\tresult += INPUT.SampleLevel(sam, pos, 0).rgb;\n\n\tOUTPUT[gxy] = MF4(result, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Restore_UL.hlsl",
    "content": "// Anime4K_Restore_CNN_UL\n// Ported from https://github.com/bloc97/Anime4K/blob/4ba94b179a144200cb6b3052e690fe2ca5c6914c/glsl/Restore/Anime4K_Restore_CNN_UL.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Restore_4\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex7;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex8;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1, tex2, tex3\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\t\n    uint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = { -0.02313247, 0.016216148, -0.053347506, -0.023317637 };\n\t\t\ttarget1 = MulAdd(src[i - 1][j - 1], MF3x4(-0.28293434, -0.10095658, -0.013867814, 0.08509398, -0.31489053, -0.26828897, 0.01152665, 0.18905516, -0.23013242, -0.18878274, -0.17923735, -0.32707638), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j], MF3x4(-0.3519405, -0.12639853, 0.0981044, -0.23800656, -0.1666394, 0.2548722, -0.09458217, 0.17642984, -0.0016840132, -0.12355663, -0.13711694, 0.25234836), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j + 1], MF3x4(-0.14581299, -0.060752276, 0.06813433, 0.32616982, -0.29410994, 0.28217724, -0.2221963, -0.051627193, 0.10754401, 0.31993762, 0.25542948, -0.4268778), target1);\n\t\t\ttarget1 = MulAdd(src[i][j - 1], MF3x4(0.2716687, -0.13160354, -0.056812827, -0.00881874, 0.3249303, 0.05037425, -0.117648534, -0.26370025, 0.032854702, -0.14214379, 0.10036965, 0.17808898), target1);\n\t\t\ttarget1 = MulAdd(src[i][j], MF3x4(0.004323515, 0.37651265, -0.39865002, -0.18153298, 0.5224921, -0.11810103, 0.56151056, -0.063698344, -0.17272837, -0.053013492, 0.062254835, 0.28695017), target1);\n\t\t\ttarget1 = MulAdd(src[i][j + 1], MF3x4(0.2776938, 0.22578415, 0.110299006, 0.27424663, 0.012712999, -0.22353122, -0.0010140019, 0.08163494, 0.3611274, 0.014346184, -0.26426178, -0.26777005), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j - 1], MF3x4(-0.09010997, 0.19958799, 0.22421049, 0.054506898, -0.11822318, 0.23656984, 0.11197124, -0.4646639, 0.17118955, 0.33748102, 0.20479581, 0.6810799), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j], MF3x4(0.2121316, -0.08664465, 0.2507115, -0.223455, 0.22042283, -0.20352642, 0.42714027, -0.5048447, -0.10270271, 0.11400399, -0.019575266, 0.40490857), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j + 1], MF3x4(0.091496244, -0.24679382, -0.3801941, -0.08482344, -0.17183328, -0.09308921, -0.059639163, 0.3321586, -0.19797249, -0.17941834, 0.015049101, -0.13793056), target1);\n\n\t\t\tMF4 target2 = { 0.42778614, 0.054881692, -0.23388587, -0.031204376 };\n\t\t\ttarget2 = MulAdd(src[i - 1][j - 1], MF3x4(-0.44157687, 0.1715858, -0.11000502, 0.062367063, 0.21790773, 0.15507151, 0.14760862, -0.2598815, 0.14098467, 0.14019097, -0.26298222, 0.10975315), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j], MF3x4(0.15774319, -0.16769339, -0.49734345, -0.3935963, 0.115124024, -0.08045373, 0.55867237, 0.48593813, 0.058544844, -0.2705686, 0.3303555, 0.4181385), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j + 1], MF3x4(0.16588609, -0.013389144, 0.06600297, -0.09309111, -0.36321074, -0.13877828, 0.4099233, 0.20805255, 0.31892648, 0.16856939, -0.23898357, 0.11751563), target2);\n\t\t\ttarget2 = MulAdd(src[i][j - 1], MF3x4(0.39999864, 0.46407622, -0.12249342, -0.09798957, 0.122675434, 0.18265116, 0.030651823, 0.14682484, -0.42969155, 0.2486042, 0.13566706, -0.13458017), target2);\n\t\t\ttarget2 = MulAdd(src[i][j], MF3x4(-0.12757893, -0.19025628, -0.16728874, -0.10162156, -0.1577721, -0.174548, 0.29329458, 0.17963637, -0.43279588, 0.088979766, 0.06334896, -0.047701746), target2);\n\t\t\ttarget2 = MulAdd(src[i][j + 1], MF3x4(-0.14359929, -0.12800618, -0.15429202, 0.034745168, 0.15794043, -0.086441815, -0.06520017, 0.26176664, -0.022253495, -0.34480432, -0.009120493, 0.08706416), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j - 1], MF3x4(-0.1994137, 0.070990525, 0.3388379, 0.37502727, -0.116911314, 0.2160554, -0.1831974, -0.04184975, 0.2545874, -0.083908126, -0.19057468, -0.13382773), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j], MF3x4(-0.46475947, -0.23414738, -0.036689937, 0.018558737, -0.32609373, 0.15265512, -0.055894423, -0.3676328, 0.24501368, 0.12390915, 0.13458043, -0.30162823), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j + 1], MF3x4(0.12621075, 0.046852987, 0.17333286, 0.18997045, 0.3245911, -0.28809196, -0.3660882, -0.5916272, -0.11456223, -0.030912774, 0.17037971, -0.12640971), target2);\n\n\t\t\tMF4 target3 = { -0.032911904, -0.0050934837, 0.021853646, -0.17256187 };\n            target3 = MulAdd(src[i - 1][j - 1], MF3x4(0.18228084, 0.25933146, 0.1764313, 0.23183075, -0.061067093, 0.34710985, -0.1785006, -0.06471029, -0.23235676, -0.43409523, -0.06639704, 0.30396065), target3);\n\t\t\ttarget3 = MulAdd(src[i - 1][j], MF3x4(0.31676784, 0.21897513, 0.06466065, 0.42289257, 0.12306216, -0.3928633, 0.09720577, -0.10426061, -0.030383142, 0.03775265, 0.34221298, 0.3827705), target3);\n\t\t\ttarget3 = MulAdd(src[i - 1][j + 1], MF3x4(-0.13229136, 0.37214845, -0.07046923, -0.17644346, 0.5591967, -0.5409525, 0.08944645, -0.047717415, 0.3754216, 0.2979604, -0.14149979, -0.1743562), target3);\n\t\t\ttarget3 = MulAdd(src[i][j - 1], MF3x4(0.07603316, 0.10389099, 0.07042061, 0.24759614, 0.05822713, 0.29799607, -0.21219468, 0.3884128, -0.010661014, -0.5209726, 0.20311587, -0.39393), target3);\n\t\t\ttarget3 = MulAdd(src[i][j], MF3x4(-0.17486575, -0.22572622, -0.13514778, 0.12839775, -0.25754005, 0.13090849, -0.16364887, 0.37675568, -0.05928962, 0.049174402, -0.37935108, -0.14333783), target3);\n\t\t\ttarget3 = MulAdd(src[i][j + 1], MF3x4(0.15858985, -0.47485206, 0.4509964, 0.3877553, -0.04848657, 0.22396515, 0.33325925, -0.20703658, 0.14929648, 0.25580746, 0.2795224, -0.0158565), target3);\n\t\t\ttarget3 = MulAdd(src[i + 1][j - 1], MF3x4(0.030926622, 0.16219522, -0.26666775, -0.27920142, -0.2693319, -0.29130983, -0.2795281, 0.22597994, 0.32512712, 0.16784063, -0.0113234315, -0.10118217), target3);\n\t\t\ttarget3 = MulAdd(src[i + 1][j], MF3x4(-0.32426193, 0.0072339224, 0.08070994, -0.07735796, -0.09247539, 0.23327915, 0.09039661, -0.11836084, -0.2726992, -0.16031814, -0.28027415, -0.029263943), target3);\n\t\t\ttarget3 = MulAdd(src[i + 1][j + 1], MF3x4(-0.20109104, -0.43383566, -0.33850962, -0.13422257, 0.040343326, -0.0819253, 0.26943803, -0.46652415, -0.3474102, 0.41198114, 0.14404535, 0.076806836), target3);\n\n\t\t\ttex1[destPos] = target1;\n\t\t\ttex2[destPos] = target2;\n            tex3[destPos] = target3;\n\t\t}\n\t}\n}\n\n//!PASS 2\n//!DESC Conv-4x3x3x24\n//!IN tex1, tex2, tex3\n//!OUT tex4, tex5, tex6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { -0.08736043, 0.2861529, -0.005863071, -0.004482026 };\n\ttarget1 = MulAdd(a1, MF4x4(0.08648221, 0.012940912, 0.0694797, 0.021795172, 0.19547985, 0.019256733, -0.099714816, 0.08773751, 0.06443286, 0.08462334, 0.02924696, -0.07673487, 0.061156925, 0.12037308, -0.04778231, 0.010492923), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.00033161003, -0.19050376, -0.14713565, -0.20729654, -0.122199036, 0.0044957534, 0.19240627, -0.1515226, 0.05051369, -0.08790857, -0.05331543, -0.13356556, -0.019020412, 0.06989371, -0.07270814, 0.06541199), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.086689815, 0.08965917, 0.38167384, 0.31010604, 0.04204608, 0.095588356, -0.22810745, 0.112243816, 0.016992478, -0.16491304, -0.08901814, -0.038421903, -0.00041658967, -0.03551529, 0.097966395, -0.06240607), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.13955353, -0.27422932, 0.14655617, -0.07651906, -0.07335902, -0.05214342, 0.35741827, 0.043639295, 0.041774176, -0.08277867, -0.028840896, -0.14434154, 0.029840615, -0.1444494, 0.0417388, -0.05095746), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.06985613, 0.036354948, -0.22372876, -0.268865, -0.07852222, -0.20930836, 0.06419149, 0.19363879, -0.00020227236, 0.04876036, 0.16503128, -0.05324255, 0.06806321, 0.2646995, -0.04032264, 0.06421368), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.16930926, 0.10122267, 0.0043684123, 0.14429477, -0.026909696, 0.028725943, 0.20114274, 0.09308162, -0.21070556, -0.13116634, 0.12419461, 0.29118228, -0.052020956, 0.18702126, 0.049802206, 0.09010561), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.08972355, -0.076947, 0.2612936, 0.1700236, 0.21013896, -0.033608798, -0.16835962, -0.17834496, 0.050899435, -0.031109938, 0.066931866, 0.20528825, -0.024127234, -0.23103325, -0.14034404, 0.036399297), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.058897257, 0.24295428, 0.5273254, -0.075384885, -0.03951092, 0.01945271, 0.2180824, -0.10192471, 0.04884028, 0.10811269, -0.056086104, -0.0177891, -0.15046783, -0.02886977, 0.012827891, -0.06317297), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.08919534, 0.0142748635, 0.010994716, -0.116783954, -0.04848956, 0.12802334, -0.42647192, -0.047026183, -0.105416335, 0.014229579, -0.16081032, -0.1652654, 0.04367904, -0.21464449, 0.019457433, -0.053815585), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.033339895, -0.30358142, 0.03728797, -0.019257398, 0.041582108, -0.042878296, -0.16212925, 0.015385118, 0.1854467, -0.14912623, -0.10073306, 0.029578004, 0.0026831278, -0.1968894, -0.1447477, 0.013980874), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.097215526, -0.27501073, 0.14077966, 0.07402363, 0.14528856, 0.26862413, -0.23837885, -0.19667485, 0.052117366, 0.012212545, 0.1311111, -0.05480854, 0.02206756, -0.09732581, -0.095444106, -0.12949228), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.0737551, -0.35384682, 0.13346575, -0.12573321, 0.12401249, -0.19727409, -0.022039715, -0.36438647, -0.17826872, -0.097721264, 0.10780637, -0.06372213, 0.078226656, -0.2319627, 0.06871096, -0.35198233), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.016558306, -0.10755727, 0.07563601, 0.10631563, 0.006885377, 0.1507541, 0.028258704, 0.1609311, -0.026250815, 0.033572774, -0.0988431, 0.19565049, 0.024507977, 0.16839874, -0.19923483, 0.08130833), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.061187252, 0.09036177, -0.12626763, 0.036544666, 0.10568191, 0.087079406, 0.08745061, -0.10461285, 0.15552549, 0.25184712, -0.026420163, 0.028266618, 0.2387882, 0.20997152, -0.08588654, 0.19732232), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.057315756, 0.04398266, -0.203559, -0.10253955, -0.0009475058, -0.0786754, -0.051641934, -0.4047696, -0.057758473, -0.04819636, 0.053755116, -0.13864025, -0.165071, -0.14622927, 0.16270354, -0.11281594), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.023654325, 0.113905154, 0.0714336, 0.11184515, 0.12235184, 0.081852525, 0.2880535, 0.1926254, -0.01012154, 0.08924707, -0.06123374, 0.33078554, -0.14329071, 0.043857813, -0.09043615, 0.029145587), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.023949241, 0.10680816, -0.07771331, 0.0008638595, 0.00088304427, 0.00707631, -0.029150054, 0.20421802, -0.051493708, 0.3196773, -0.0046316544, -0.08402997, -0.0020283381, 0.092219375, -0.21898057, 0.043405924), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.10192696, 0.22852643, 0.024926228, 0.004321374, 0.1759848, -0.05959089, 0.03108929, -0.04175589, -0.032808244, -0.002723809, 0.11427024, -0.11884058, 0.085039005, -0.11861457, -0.041716687, 0.0049884217), target1);\n\ttarget1 = MulAdd(a3, MF4x4(-0.08531041, 0.031572983, -0.010317835, -0.058514126, -0.028372116, 0.3587181, 0.07155074, -0.018486004, 0.11271158, 0.12346037, 0.14474016, -0.091422975, 0.046279423, -0.19440787, -0.040767148, -0.11089926), target1);\n\ttarget1 = MulAdd(b3, MF4x4(-0.118612625, 0.036904, 0.040823236, 0.0006029242, -0.055478334, 0.065328576, -0.26563334, 0.14299026, 0.039150115, 0.17624554, 0.085402936, -0.007749703, 0.045554906, -0.051315133, -0.0989155, 0.023874454), target1);\n\ttarget1 = MulAdd(c3, MF4x4(-0.08904957, 0.13246936, -0.1362266, 0.075549126, 0.015976984, -0.078003414, 0.27895245, -0.1714908, 0.05061789, 0.05510105, -0.011142018, 0.13279557, 0.122630805, 0.12880847, 0.2334916, 0.450533), target1);\n\ttarget1 = MulAdd(d3, MF4x4(0.13635479, 0.12008325, 0.13332775, -0.1923403, 0.061475966, 0.12471921, 0.1438346, -0.30003113, 0.16227812, -0.011259031, -0.15664785, 0.082009956, 0.15664162, -0.14316271, 0.10871211, -0.23067066), target1);\n\ttarget1 = MulAdd(e3, MF4x4(-0.17403863, -0.100490384, -0.056628566, 0.056505267, 0.03132433, 0.02990612, -0.023741463, -0.2221617, -0.023024872, -0.17946845, -0.014884968, 0.09488175, -0.08467482, -0.18569513, -0.08882533, -0.096383005), target1);\n\ttarget1 = MulAdd(f3, MF4x4(0.036448594, 0.008876679, 0.082974724, -0.07486944, -0.1466638, -0.17435108, -0.08396226, 0.05346215, -0.13232903, -0.07391497, 0.19908291, 0.059030067, -0.017662045, 0.020650625, -0.20734224, 0.20043914), target1);\n\ttarget1 = MulAdd(g3, MF4x4(-0.03861711, 0.06406407, 0.05915599, -0.0029750194, 0.046107147, -0.23294666, 0.019285874, 0.11214502, -0.05762434, -0.043726444, 0.010243058, -0.013164875, 0.033796065, -0.027231356, 0.18135343, -0.06158567), target1);\n\ttarget1 = MulAdd(h3, MF4x4(-0.0061139134, 0.08773726, 0.05263668, -0.017488463, -0.021532185, -0.06330985, 0.03339514, 0.29500782, 0.19531941, -0.0625388, -0.0988155, 0.029160276, -0.14122078, -0.18272889, 0.035498794, -0.09119196), target1);\n\ttarget1 = MulAdd(i3, MF4x4(0.21229745, -0.13745296, -0.02434639, 0.018458553, 0.1591066, 0.057361145, -0.034690984, -0.06146371, -0.2245296, -0.14576864, 0.053850707, -0.08887415, -0.17651638, 0.14863127, -0.07008009, 0.009406358), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.09558068, 0.08203744, 0.09736194, -0.08479601, -0.07671097, -0.13729817, 0.15081742, -0.107025385, -0.13094948, -0.11489214, 0.08040859, 0.18286897, -0.06001431, -0.16890974, -0.034702767, 0.06418509), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.057768498, 0.121774144, 0.09370627, 0.04913383, 0.07690142, 0.0735232, 0.22072591, 0.023539443, 0.05777623, 0.32322824, 0.3281115, 0.08541682, 0.027571213, 0.08204197, -0.036617927, -0.11496138), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.10667931, 0.060036145, 0.17550562, 0.0036066761, -0.1475781, -0.0125017725, 0.1585272, -0.30022824, 0.020694837, 0.041336745, 0.34374732, 0.11649956, 0.0702352, 0.10661717, -0.018115027, 0.066765435), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.031910367, 0.08394783, -0.12302906, 0.080788575, 0.056613773, 0.13485114, 0.14046827, -0.0015214924, -0.27299604, 0.043092493, 0.0110908365, 0.0120844785, 0.13837345, 0.14274547, -0.07037318, 0.073410094), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.11933822, -0.019749384, -0.14604573, 0.23067194, 0.07458434, 0.19018115, -0.09794594, -0.028165665, 0.34246337, -0.15636346, 0.2909177, 0.049812693, 0.002857417, -0.15300918, 0.28885588, -0.017372042), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.017289294, -0.034632802, 0.21390542, -0.010042412, -0.041615892, -0.08253338, -0.30123362, -0.19299945, 0.25370637, 0.093409844, -0.09362771, -0.17982802, -0.031628486, -0.09360746, 0.13314822, -0.034462616), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.106429726, 0.016680025, -0.0529926, -0.17085713, -0.22584449, -0.07722329, 0.30886117, 0.10528744, 0.010045352, 0.099818386, -0.1433606, -0.24887395, -0.04677741, 0.113051936, -0.062035765, -0.03359467), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.10257249, -0.16084161, -0.058020744, 0.096825816, 0.19502446, -0.12214713, 0.078723475, 0.124732524, -0.15987179, -0.110849984, 0.1198203, 0.018647604, 0.114340924, -0.027776286, -0.07801131, 0.022275787), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.20298952, -0.069290765, 0.018832127, -0.17501442, 0.32367796, -0.20510589, 0.15283914, 0.16110845, 0.23468657, 0.12490908, 0.0031354423, 0.33064207, -0.089915626, 0.16466871, -0.2302326, 0.008596628), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.07267445, 0.13096274, -0.22805755, -0.03723183, 0.055223588, -0.005618507, -0.022076515, -0.07149474, -0.121041514, 0.22917031, 0.066897914, -0.07756685, 0.024709817, 0.009276744, 0.014564059, 0.057168677), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.12088462, -0.21629183, -0.01628627, 0.13085558, 0.09959188, -0.26857927, 0.099242754, -0.014361698, -0.06972168, 0.01484912, -0.14507025, 0.036060054, 0.010170308, -0.038049888, -0.009749429, 0.02627631), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.014381424, -0.08200522, 0.016342247, -0.05138454, -0.048430134, 0.14594877, -0.3555319, 0.031946313, 0.10650339, 0.18046476, -0.24730566, 0.1373742, -0.119868465, 0.09006262, -0.043326948, 0.14803706), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.041357175, 0.018529125, -0.10729679, -0.048498925, -0.10630771, -0.1541114, -0.033143718, -0.22726057, -0.07868649, -0.13653874, 0.17372914, -0.12425049, 0.20172423, -0.13046068, 0.043416902, 0.022640392), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.0996741, -0.2517156, 0.19852571, -0.0021035601, 0.10721118, -0.05211148, -0.19747794, -0.09467657, -0.023530629, -0.3026388, 0.18776762, -0.083951, -0.23070371, -0.29687774, 0.19042933, 0.082099915), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.14246128, -0.11360154, 0.042512555, 0.050347224, 0.15101464, 0.096761174, -0.09809747, 0.18949512, 0.08265103, 0.10818854, -0.06522224, 0.20080575, 0.04467876, 0.16536511, -0.17993684, 0.00630444), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.06804489, -0.08932311, 0.11452633, -0.1371827, -0.038583722, -0.044566132, 0.11590918, 0.06928946, 0.09499521, -0.28891554, -0.039033752, -0.24065344, -0.008447823, -0.22869939, -0.1481265, -0.14827704), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.040538706, -0.16607454, 0.066053875, -0.13771453, -0.26502058, -0.090013534, 0.10899838, 0.035818875, -0.025965845, -0.38602746, 0.11832495, -0.05114795, -0.0024577992, -0.131609, 0.031598363, 0.03701916), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.058901474, -0.32447273, -0.009171959, 0.0660178, -0.060969505, 0.032002755, 0.1673554, 0.08129589, -0.027818324, 0.11499822, 0.047595307, 0.1351946, -0.10076986, 0.109632365, -0.15808961, -0.082471184), target1);\n\ttarget1 = MulAdd(na3, MF4x4(0.11876087, 0.01871506, -0.15440665, 0.030330261, 0.0027066949, -0.14246738, 0.07165973, 0.01423915, -0.06284659, -0.21748444, -0.09141415, 0.0077323355, 0.0007271684, 0.1327971, 0.021298295, 0.029493187), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(-0.10310914, -0.07170663, -0.2685449, -0.15668112, 0.10965974, -0.027063346, 0.15944144, -0.16771634, -0.08454698, -0.12480185, 0.17647612, 0.17139068, -0.09694541, 0.14676706, 0.1353608, 0.11373892), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(-0.0808586, -0.02986483, 0.23335268, -0.05220655, -0.21456684, 0.089947656, -0.2306551, 0.23438993, -0.26377395, -0.00432009, -0.002377239, -0.0024554976, -0.11019007, -0.0772975, -0.119338326, -0.42517295), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(0.10294163, -0.024664093, 0.019653833, 0.034689307, 0.05632113, -0.31289428, -0.08254052, 0.13217352, 0.15772913, -0.09128828, -0.012524978, -0.06561359, -0.13107683, 0.23463258, -0.18762761, 0.22209615), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(0.06301127, 0.12489633, 0.025658585, -0.09527329, 0.009095258, -0.2463554, -0.0047031543, 0.119088694, 0.14065374, 0.19576642, 0.26679346, 0.03845879, 0.13757762, 0.10764672, -0.046270162, -0.11690896), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(-0.04519331, 0.002319274, -0.0704514, 0.029526047, 0.13251334, 0.2868927, -0.06838931, 0.11092056, 0.15345666, 0.16911614, 0.06869024, -0.03073747, 0.065442406, 0.018865792, 0.081815384, -0.20803072), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(0.06323602, -0.010242011, 0.10209268, -0.04929, -0.006704608, 0.30939466, 0.1744392, -0.10929571, -0.493058, -0.13673118, -0.12486283, -0.41315997, -0.036514506, 0.0937269, -0.16995876, 0.15627468), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(-0.13764359, -0.028645532, 0.006338959, 0.058005866, 0.08327983, 0.17576805, 0.17758359, -0.16738725, -0.26176876, 0.07402525, -0.02212828, 0.16919926, 0.3348425, 0.032946147, 0.09707724, 0.10009711), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(-0.2091657, 0.068191156, 0.09357867, -0.05217846, -0.1104997, 0.05062617, 0.016883407, -0.053662494, 0.24314725, 0.19810323, -0.065943204, 0.25030002, 0.08373754, -0.16690144, 0.03141188, -0.101124324), target1);\n\t\n\tMF4 target2 = { 0.022030555, -0.05006568, 0.014002339, 0.023597209 };\n\ttarget2 = MulAdd(a1, MF4x4(0.04347682, -0.042527717, 0.057372455, 0.25276724, -0.057298373, 0.16023909, 0.21286428, -0.022668337, -0.21247427, -0.14335708, 0.19040126, 0.08368367, 0.0033008587, 0.03252031, -0.1777948, -0.082336985), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.12568378, -0.08425814, 0.004957988, -0.12844385, 0.055799566, 0.21515216, -0.20364483, -0.05265174, -0.011742827, -0.053792574, -0.15443824, 0.007910115, -0.045762774, 0.03763922, 0.014743974, -0.07495264), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.095623426, 0.118021496, -0.3646953, 0.22952312, -0.06988015, 0.07823983, 0.10331074, 0.18235193, 0.10575183, 0.017832384, 0.099051595, -0.16202737, -0.065919116, -0.027154202, 0.19286686, -0.41187564), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.18027067, -0.15459284, -0.5194294, 0.15895993, -0.19545266, 0.11350413, 0.08665067, 0.053280413, -0.07407145, -0.04798788, -0.13345626, 0.1258462, 0.047066033, -0.040642574, 0.08591159, -0.10039696), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.080157764, 0.22366004, 0.17739227, 0.033781976, -0.045201484, -0.047641475, -0.07896631, -0.08679443, 0.10642969, 0.06992287, 0.041175313, -0.16435929, 0.15798622, -0.004883945, 0.08247824, -0.056977544), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.05262759, 0.015417186, 0.108641304, 0.005705979, -0.013303744, -0.016400715, -0.24967128, -0.13471037, 0.07906222, 0.07200451, 0.12428817, -0.05694691, -0.022635266, -0.08490837, -0.01682493, 0.08025121), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.4013514, -0.09885115, -0.13964225, 0.0066076894, 0.035656366, -0.061563164, 0.005582264, 0.03445424, -0.0898461, 0.07694695, -0.06430643, 0.26156837, -0.045181878, -0.16155554, -0.008806556, 0.023297746), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.014314168, 0.03040408, 0.079562426, 0.104040965, 0.15035652, -0.11237077, -0.04587703, 0.0664186, 0.011188344, 0.27792045, 0.03491885, 0.047752786, -0.02133782, 0.19199622, 0.03265004, 0.112835735), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.22900657, 0.19636537, 0.024062308, 0.004805258, 0.19197865, -0.26876372, 0.22812407, -0.13273205, 0.1163973, -0.016603881, 0.11751584, 0.07571751, -0.016665185, -0.020726109, -0.15382238, -0.05721929), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.047688257, -0.04328092, 0.00020037305, -0.0030449564, 0.21016575, -0.3156827, 0.109759815, -0.012477153, -0.037765514, -0.19186607, 0.11098016, -0.122981705, 0.030443244, -0.27449754, 0.12108516, 0.14917934), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.015644934, 0.017102094, 0.068102054, 0.11661995, -0.13552219, 0.030102659, 0.14208834, 0.034298997, 0.06434777, -0.16380474, -0.10679716, -0.052865673, 0.03549326, -0.116048254, 0.16329505, 0.19959521), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.007844256, -0.033616025, 0.040885374, 0.0077286726, -0.057888485, 0.05796843, 0.0665138, -0.189592, -0.02662338, 0.022530284, 0.08647752, 0.054335136, 0.031057479, 0.03635868, 0.0933932, 0.064375274), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.15531783, -0.21395409, -0.124851726, 0.049151056, -0.17787859, 0.07594992, 0.048780512, 0.0029584337, 0.013994473, -0.34576252, -0.05831177, 0.030209891, 0.009173122, -0.32105917, 0.026620382, 0.27054143), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.031326182, 0.11699003, -0.1819442, -0.30510914, -0.21830374, 0.06375399, -0.11343298, 0.20248312, -0.032249533, 0.1300983, -0.23744828, -0.03899525, 0.095936954, 0.075583026, -0.18192224, 0.016086053), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.24321534, 0.1016422, 0.084550686, -0.007922614, -0.16052304, -0.09632171, 0.09476528, 0.03964334, -0.00061841257, 0.11085015, 0.16789092, 0.058375813, -0.021924267, 0.26049414, -0.04622306, 0.03622448), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.05655466, -0.10016316, -0.026551498, 0.12944251, 0.06387257, 0.08759442, -0.040214762, -0.05403373, -0.001911277, -0.045361456, -0.29783988, -0.11533991, 0.07864674, -0.03580795, 0.09282203, 0.18479614), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.019557253, -0.01953009, 0.1073159, -0.077327915, -0.3287939, 0.08561906, -0.16314861, -0.14830309, -0.031493217, -0.050918207, 0.13767132, -0.25257835, 0.029513458, 0.1548974, -0.048502877, 0.0022710229), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.0022606663, 0.048681643, -0.06014017, 0.23443368, -0.086114794, 0.017463014, -0.073657446, -0.0013138334, -0.053271778, 0.29075313, 0.07355574, 0.14009497, -0.15303768, 0.21335968, -0.17516625, 0.03268628), target2);\n\ttarget2 = MulAdd(a3, MF4x4(-0.012742161, -0.041635115, 0.168062, -0.028525194, -0.030566072, -0.027266532, 0.0359287, -0.07139233, 0.061290823, -0.04036332, 0.04897623, 0.13846754, 0.039383594, 0.12339301, -0.026180696, -0.0051744552), target2);\n\ttarget2 = MulAdd(b3, MF4x4(-0.03748404, -0.026544569, 0.11102617, -0.22780292, 0.06731992, -0.15827416, 0.09802122, 0.11640033, 0.00039111794, 0.072100006, -0.053455148, 0.06592366, -0.09381082, 0.13634324, -0.08554314, 0.016439624), target2);\n\ttarget2 = MulAdd(c3, MF4x4(0.10113021, 0.08261971, -0.16603, -0.009958334, 0.03756299, -0.004461027, 0.08559942, -0.012674885, -0.03848595, 0.002108679, 0.021565402, -0.046234082, 0.04603834, 0.09276165, -0.29686695, -0.015194743), target2);\n\ttarget2 = MulAdd(d3, MF4x4(0.053909358, 0.0835715, -0.116176985, 0.22114189, 0.17204702, -0.17098549, -0.08065474, -0.015051904, 0.14268506, -0.117853105, -0.0038547963, -0.099558994, -0.12031682, 0.11549271, 0.0201697, 0.093561895), target2);\n\ttarget2 = MulAdd(e3, MF4x4(-0.056914307, 0.18547982, -0.09208387, -0.00943169, -0.024476565, 0.020612689, 0.04417863, 0.14231037, -0.05794176, 0.19624077, -0.10561953, -0.1312564, -0.09621997, -0.055228855, -0.06481115, 0.07939849), target2);\n\ttarget2 = MulAdd(f3, MF4x4(-0.09013716, -0.12869088, -0.14419042, -0.021643816, -0.123301044, 0.1077149, -0.058566347, 0.010407963, 0.009403472, -0.07660888, 0.09947006, -0.07434618, -0.014246012, -0.24914171, 0.0034662948, -0.05013118), target2);\n\ttarget2 = MulAdd(g3, MF4x4(-0.070962735, 0.06716404, -0.15136454, 0.02027541, -0.107001044, 0.50334495, -0.039790098, 0.08286825, -0.0010944081, 0.1031829, -0.011431386, -0.08257687, -0.18531963, -0.14856398, 0.024649108, 0.047142852), target2);\n\ttarget2 = MulAdd(h3, MF4x4(0.049574193, 0.07180735, 0.047850125, -0.051012892, -0.00040669146, 0.4140869, -0.088046245, -0.036824025, -0.03582775, 0.26769164, -0.06151275, -0.09666011, 0.2566442, -0.09799407, 0.097338095, -0.026725585), target2);\n\ttarget2 = MulAdd(i3, MF4x4(0.1490444, -0.06516709, 0.10439169, -0.034240134, -0.041965652, -0.2079741, -0.09079767, 0.15088585, 0.022063766, -0.07552733, 0.0012785956, -0.16747397, 0.10525993, -0.09890853, 0.10660105, 0.21784192), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.07042895, 0.16030453, 0.0030912263, -0.027933247, -0.3086125, -0.28822276, -0.400802, 0.2096595, 0.08857404, 0.34754908, -0.15951826, -0.35737038, -0.038460553, 0.007917597, 0.2774085, -0.08004489), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.038472448, -0.0174679, -0.107170366, -0.037775494, -0.054595813, -0.21341673, 0.21892805, 0.12125601, 0.058354914, -0.35335168, -0.21329384, -1.0650489, 0.059367847, -0.02849481, 0.001276761, -0.30784246), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.050561953, 0.0007092989, -0.13955325, -0.07106547, 0.12613517, -0.0822321, 0.14023048, -0.20781253, 0.0041748453, 0.157751, -0.14171253, -0.9330524, -0.0035482922, -0.17769572, -0.1528532, -0.32141888), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.040014382, 0.24272937, 0.12577556, -0.10304328, 0.12054429, -0.14819793, -0.46691173, 0.12551397, 0.21042542, 0.040414993, 0.2664476, -0.0624471, -0.10776527, 0.03234498, -0.14870068, -0.05700082), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.15521951, -0.099391945, -0.31356367, -0.006449893, 0.059501357, 0.16860132, 0.2637131, -0.035344128, -0.20164591, -0.0771766, 0.22611247, -0.40267792, -0.060890198, 0.060215253, 0.093219444, -0.3483), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.03416117, -0.1827499, -0.15668888, -0.10794011, -0.075220324, 0.12177839, -0.07486823, 0.21677534, -0.039297394, -0.14563735, 0.05120258, -0.00035666916, 0.12478138, 0.04741504, 0.2288785, -0.17462626), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.02980817, 0.087366745, 0.043035574, 0.040445086, 0.07882225, 0.030239558, -0.117186725, 0.19092828, -0.037465222, -0.10581845, -0.055081632, -0.15845117, 0.07946355, 0.14760616, -0.022140944, 0.11649563), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.19723393, 0.024121622, -0.27199838, 0.07334678, -0.07288629, 0.17650653, -0.22066317, -0.13322048, 0.0069257803, -0.24415702, 0.09925061, 0.33271804, 0.0033860113, -0.18174358, -0.13197216, -0.018403139), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.093481295, -0.28051332, -0.032411367, -0.14152545, 0.18546024, 0.26412115, 0.07146612, 0.036084935, -0.27073604, -0.010888752, -0.13251275, 0.052145492, -0.0332615, 0.06561024, -0.12152722, 0.25903332), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.14281613, 0.07859564, 0.0066864006, -0.15937181, -0.12278831, 0.311999, 0.025959859, 0.02308115, -0.03229773, 0.2645761, -0.13995989, 0.10817364, 0.07908819, 0.42388916, -0.17739546, 0.10429196), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.2201895, -0.2196956, 0.14305998, -0.3301203, 0.16685095, 0.09164033, 0.031294953, -0.05854433, -0.06691493, 0.1518185, 0.038523998, 0.05256842, -0.047954578, 0.1683237, 0.0048684916, -0.10664451), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.026817175, -0.029176721, 0.24391933, 0.017680334, 0.15134846, -0.15139282, 0.29651865, 0.12128057, 0.044055674, 0.023059618, -0.054705862, -0.025505943, -0.019943522, -0.032058105, -0.30078474, 0.28300348), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.15246257, 0.16519837, 0.030530507, 0.0019738604, -0.09898821, -0.10236442, -0.15473707, 0.1960111, 0.08083462, 0.1931143, 0.053789698, 0.063627414, -0.10000871, 0.1890801, -0.039166793, -0.035554815), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.008138058, -0.090632096, 0.09218409, -0.1870409, 0.006966406, -0.036867052, -0.1109265, 0.15594107, -0.06334745, -0.025499493, 0.16426682, 0.024393357, 0.0060975226, 0.08250694, -0.022282967, -0.09879987), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.06807879, 0.127161, -0.20435798, -0.11276813, -0.035021268, -0.019755092, -0.17415504, 0.060618974, 0.12325889, -0.12290322, -0.05086793, 0.14947659, 0.023935383, -0.032783996, -0.029157335, -0.006670329), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.14423427, 0.07715571, 0.06842541, -0.24895051, -0.06428334, -0.07863047, 0.23238844, 5.274231e-05, 0.048996497, 0.17647398, 0.413201, -0.31975266, -0.030216858, 0.04867342, -0.30262446, -0.15375552), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.23534048, 0.092139505, 0.012503786, 0.116008915, -0.0898572, -0.17778875, 0.16141091, 0.3644637, 0.043014687, -0.031378243, 0.11754703, -0.38509452, 0.1001422, 0.036844354, -0.0051652407, 0.036642574), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.08065526, -0.14093323, -0.027013494, -0.112644374, -0.019306205, -0.10695108, -0.21220952, -0.039872676, -0.09730943, -0.47728395, -0.28284085, -0.07133749, -0.04755162, -0.14241156, -0.01632541, -0.009647049), target2);\n\ttarget2 = MulAdd(na3, MF4x4(0.07490686, -0.06242466, 0.15567005, -0.16337247, -0.2887383, 0.2881797, -0.121348776, 0.060069725, -0.03536951, -0.24556357, -0.35177758, -0.11175104, -0.0073047564, -0.06645475, 0.014323825, 0.058212377), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(0.03256386, -0.05097925, 0.27179804, -0.09543428, 0.161455, 0.023938831, 0.10773267, -0.10486564, 0.076764554, 0.06358945, -0.18258472, 0.08324786, 0.06467844, -0.20269682, 0.046431858, -0.08359799), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(-0.086718775, 0.029116197, -0.020623617, -0.010007143, -0.0062927944, 0.028177656, -0.07210879, 0.06786677, 0.023476062, 0.17860489, -0.06256401, 0.061757386, -0.046495005, -0.055532746, 0.15595034, 0.12336579), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(0.08569872, -0.03291618, 0.18875046, -0.080043204, 0.19672358, 0.0756269, 0.02688733, 0.16277955, -0.060868777, -0.037449554, 0.020366343, -0.28260133, 0.30251002, -0.08898951, 0.002503838, -0.031098645), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(0.09120409, -0.04983847, 0.07688438, 0.008763123, -0.09732479, 0.21332602, -0.13068666, -0.030675085, 0.31382635, 0.0012199014, -0.18128653, 0.30740625, -0.100602135, 0.08708379, 0.112137444, -0.03682313), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(0.0709511, -0.04224951, -0.05609049, -0.0006408909, -0.030565612, -0.012263292, -0.009747451, -0.07244236, 0.054749947, -0.01405017, 0.009567654, -0.074202195, -0.06860078, 0.13089342, -0.06874847, -0.03219275), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(0.1576853, -0.2683739, -0.025735255, -0.06460345, 0.075857066, -0.59675205, 0.11202596, 0.14385986, -0.06844365, -0.23115703, 0.12929395, -0.12881753, 0.009042129, 0.105781116, -0.055749435, -0.081277415), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(0.13527077, -0.03984972, 0.018804315, 0.12699783, -0.17789197, -0.30242765, 0.09397843, 0.090828404, -0.059823766, 0.044621762, 0.25259614, -0.19707985, -0.13368398, 0.20000716, -0.009788325, -0.20149179), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(-0.041884087, -0.059512906, -0.0896845, 0.06103581, 0.110947184, 0.10910047, -0.0047273464, 0.079314105, -0.121069044, 0.10926088, 0.13192393, 0.13567427, 0.109372094, 0.06015443, 0.100631915, -0.224153), target2);\n\t\n\tMF4 target3 = { 0.07754665, -0.09230884, 0.019135362, 0.035482828 };\n\ttarget3 = MulAdd(a1, MF4x4(-0.09202538, -0.081250995, 0.13399354, -0.09287109, 0.075870514, -0.046435528, 0.06888035, 0.07559372, 0.047911238, 0.1541559, 0.016089845, -0.020714905, 0.034469247, 0.09413617, -0.06726056, 0.04964387), target3);\n\ttarget3 = MulAdd(b1, MF4x4(0.22596729, 0.02889021, -0.048012562, 0.14605793, -0.086510226, 0.09049988, -0.0024043226, 0.07370351, -0.02844908, 0.056516882, -0.12932102, -0.080092, -0.014557861, 0.2417015, 0.24414025, -0.08637478), target3);\n\ttarget3 = MulAdd(c1, MF4x4(-0.08709868, -0.15894723, 0.051107977, -0.007953947, -0.005816434, 0.15406336, -0.08382943, 0.06931645, 0.10049424, -0.10653088, 0.2009932, 0.15972902, 0.02209797, -0.008090025, 0.058555678, 0.044184227), target3);\n\ttarget3 = MulAdd(d1, MF4x4(-0.14687128, 0.08516212, -0.090116605, -0.053017177, -0.09254908, -0.043845087, -0.02666236, -0.12203544, -0.043807525, 0.14893356, -0.11529748, -0.06253818, -0.010695381, -0.10081673, -0.0314329, -0.044264063), target3);\n\ttarget3 = MulAdd(e1, MF4x4(0.021610646, -0.16695172, -0.31326374, 0.05392923, 0.12519042, 0.12159836, -0.07893999, -0.10245254, 0.10427483, -0.042931017, -0.18065664, 0.01107328, 0.110220656, -0.06329314, -0.044132728, -0.004572783), target3);\n\ttarget3 = MulAdd(f1, MF4x4(0.01665856, 0.121704906, -0.2353256, 0.16223833, 0.04024997, -0.01792505, 0.14950873, -0.06683434, 0.004776299, 0.011929818, 0.07254882, 0.03820532, 0.31055966, 0.08748786, 0.0073042163, 0.2684048), target3);\n\ttarget3 = MulAdd(g1, MF4x4(-0.23074506, -0.06215829, 0.053791784, 0.22733828, -0.11443747, -0.15169612, 0.040388454, -0.007505497, 0.005672369, 0.0026797412, -0.001197972, 0.007488197, -0.0024618902, 0.10131061, -0.07500523, -0.013001146), target3);\n\ttarget3 = MulAdd(h1, MF4x4(-0.0776098, -0.060467657, 0.063401155, -0.3178554, 0.046797205, -0.10740315, 0.02085142, 0.101416804, -0.1198098, -0.02295822, 0.039581314, -0.048711125, -0.06259446, -0.11206371, -0.0053890026, -0.070524804), target3);\n\ttarget3 = MulAdd(i1, MF4x4(-0.12901165, 0.21051991, -0.1142095, 0.22749256, -0.023643937, -0.046942696, -0.060973406, -0.057919096, -0.22156318, -0.051061176, 0.0916328, 0.012217941, -0.17102586, -0.18390712, 0.006507473, -0.029991195), target3);\n\ttarget3 = MulAdd(a2, MF4x4(-0.2522444, -0.03696223, -0.18561353, 0.13687257, 0.073648125, 0.13678576, 0.16931336, 0.00949838, -0.038437508, -0.059626862, 0.05821261, -0.07623236, -0.08685592, -0.17067757, 0.174131, -0.025060346), target3);\n\ttarget3 = MulAdd(b2, MF4x4(0.104338415, -0.096368395, -0.029887693, 0.032492615, 0.041827764, 0.24553889, 0.099045165, 0.059192423, 0.023159435, -0.043454442, 0.10354106, 0.17867453, -0.1752651, 0.16507833, -0.09264873, 0.038281262), target3);\n\ttarget3 = MulAdd(c2, MF4x4(0.06404952, 0.014349881, -0.08079635, -0.18684097, -0.021107968, 0.1474591, 0.02128032, 0.052345317, 0.19520657, -0.18109623, 0.12578261, 0.034501765, -0.1369868, -0.05843081, 0.16561405, -0.06775279), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.08673276, 0.14922544, 0.12579706, 0.12474029, -0.06912261, -0.104719676, 0.27239847, -0.13122962, -0.05688415, 0.1428628, 0.00895786, -0.032757584, 0.019906566, -0.17429581, -0.10528849, 0.13250664), target3);\n\ttarget3 = MulAdd(e2, MF4x4(0.1025883, 0.16903317, 0.24479683, 0.08272392, -0.12168113, 0.09135378, 0.06919754, -0.24658537, 0.014526622, 0.08442609, -0.30363482, -0.03433778, 0.037446275, 0.030086113, -0.07519447, -0.068841174), target3);\n\ttarget3 = MulAdd(f2, MF4x4(0.024311058, -0.08233637, -0.16022089, -0.1597245, 0.050970588, -0.10577119, -0.1112992, -0.052199256, -0.0849103, -0.3776085, -0.21930903, -0.20542654, -0.01871536, 0.10911211, 0.07675561, -0.024964388), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.12411877, -0.00519536, 0.0480481, -0.10641975, -0.0010129698, -0.049957395, 0.0066010677, -0.07925235, 0.1930976, 0.5361102, -0.056495357, -0.05665149, -0.1270014, 0.041294765, -0.15627688, 0.018746065), target3);\n\ttarget3 = MulAdd(h2, MF4x4(0.13720295, 0.085025266, 0.05471863, 0.038614765, -0.06960719, 0.16281144, -0.21186842, -0.1941425, 0.095628515, 0.084828205, 0.02530074, 0.11415585, 0.10537103, -0.0586968, 0.019073522, -0.055825945), target3);\n\ttarget3 = MulAdd(i2, MF4x4(-0.21141429, 0.01108361, -0.14758278, 0.08792016, -0.0016714301, -0.0030396983, -0.12766738, -0.08827425, -0.07848207, -0.13752016, 0.013766901, 0.09635439, -0.079080686, -0.14922711, 0.06670641, -0.080326416), target3);\n\ttarget3 = MulAdd(a3, MF4x4(0.20643076, -0.00499668, 0.23666923, -0.17106888, 0.12709226, 0.00981184, 0.028967496, 0.016210513, 0.12393452, 0.0043048155, 0.05266705, -0.094970286, 0.005504978, -0.050391, 0.10117381, 0.09549521), target3);\n\ttarget3 = MulAdd(b3, MF4x4(0.04931849, -0.0065390305, 0.08863048, -0.0947855, 0.15617795, -0.17475569, 0.10392811, 0.035971895, 0.03656791, -0.12339292, 0.010653483, 0.08514984, 0.15630373, 0.15763232, -0.012078789, -0.026336702), target3);\n\ttarget3 = MulAdd(c3, MF4x4(0.13140163, 0.07304222, 0.03644733, 0.09648337, -0.017975705, -0.072331324, 0.0029975558, -0.021666657, -0.020042133, 0.044821594, 0.037660487, 0.09642576, 0.06416202, 0.014092053, -0.043693382, -0.051554378), target3);\n\ttarget3 = MulAdd(d3, MF4x4(-0.23793697, -0.0014973939, -0.08946259, 0.067851745, -0.019646896, -0.19535433, 0.10289966, 0.0010244731, -0.20782173, 0.0020514326, -0.16879739, 0.17888409, -0.124513365, -0.07472942, -0.0588901, -0.2092017), target3);\n\ttarget3 = MulAdd(e3, MF4x4(0.060483094, 0.059208773, 0.08345, 0.0010649676, -0.23659356, 0.3603475, 0.0053207604, -0.03345199, 0.020284697, -0.01113311, 0.11211144, 0.053414755, 0.1895607, -0.15760773, -0.23431808, 0.043709636), target3);\n\ttarget3 = MulAdd(f3, MF4x4(0.080154695, -0.064768635, -0.12550141, -0.08824165, -0.07509624, -0.0713246, -0.22137038, 0.0921876, -0.025354594, -0.24898566, -0.028864942, -0.16679515, -0.08982522, 0.029950809, -0.06993633, 0.12565832), target3);\n\ttarget3 = MulAdd(g3, MF4x4(-0.20841017, 0.06321075, -0.04099131, 0.07732559, -0.08110228, 0.20876545, -0.11388175, 0.27826598, -0.15344119, 0.09446656, 0.2735643, 0.079110265, -0.043845385, 0.029875547, 0.12783948, -0.10298459), target3);\n\ttarget3 = MulAdd(h3, MF4x4(0.08580364, -0.08134692, -0.085382804, -0.09634259, -0.07509618, -0.12689087, 0.05720452, -0.1819075, 0.11217614, -0.16592574, -0.101749554, -0.018963661, 0.14723873, 0.12904182, -0.052782595, 0.05793788), target3);\n\ttarget3 = MulAdd(i3, MF4x4(-0.0056530046, 0.05674741, 0.014994733, 0.11958239, 0.16446747, -0.049534798, -0.016570516, -0.21063349, -0.07496503, 0.0055008507, 0.11419655, 0.048011355, -0.04684853, 0.042691138, 0.09421025, 0.12923399), target3);\n\ttarget3 = MulAdd(na1, MF4x4(-0.083864704, 0.07605092, -0.047560036, 0.16445905, -0.029962407, 0.18134072, -0.22724763, 0.023675185, -0.03332916, -0.04249084, 0.15973917, 0.007322849, -0.087714255, -0.153021, 0.030236037, -0.100231044), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(-0.17441258, -0.028744312, 0.05915575, -0.11824928, -0.04179886, -0.14449957, 0.04891911, -0.21351086, 0.3303812, 0.07433166, 0.503379, 0.2470829, 0.1322803, -0.04928455, -0.15583721, 0.106110215), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.08065278, -0.00050983805, 0.027161239, 0.12555373, 0.017745659, 0.0479513, 0.10691591, -0.13202804, 0.38873398, 0.046141643, 0.07307728, 0.13692193, 0.18681903, 0.11005239, 0.15744549, 0.21892804), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(0.03978365, -0.023494922, -0.039753728, 0.27451408, 0.02140033, -0.013376269, 0.028383363, 0.059702866, -0.0071658283, -0.13848262, -0.1019017, -0.16829433, -0.018539641, 0.013991451, 0.099338084, -0.05775615), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(-0.065350726, 0.11001335, 0.11902446, -0.21104746, 0.095098086, 0.02739781, -0.26015705, 0.22157612, -0.15288728, 0.2722011, 0.27105704, -0.24145271, -0.051725585, 0.06605028, -0.012332871, -0.17540309), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(-0.2189158, -0.05287219, -0.04915249, -0.05357751, -0.12871711, -0.0061132344, -0.1406079, -0.18074436, -0.14702965, -0.22242828, 0.08177444, 0.3396842, -0.2632696, -0.06403873, -0.008123073, -0.030273361), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(0.11255844, -0.057998642, -0.07679987, 0.049385145, 0.13984528, -0.07007145, 0.11060764, 0.12331489, -0.05268373, -0.15397486, 0.054913905, -0.1393604, 0.020389834, -0.17137636, 0.067205, 0.084197655), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(0.27258077, -0.10924528, -0.1159478, 0.05647175, 0.13014089, 0.12746723, 0.0045503005, 0.07131271, 0.081193194, 0.018001271, -0.056847095, 0.19587554, -0.018607333, 0.1416207, -0.03856229, -0.0888815), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(0.0946241, 0.059010573, 0.013680293, -0.042248886, -0.2995221, -0.095081195, 0.06510416, 0.043059137, 0.10425443, -0.1222804, -0.16180466, -0.3628854, -0.01679748, 0.112195894, -0.004974211, -0.055885002), target3);\n\ttarget3 = MulAdd(na2, MF4x4(0.11798436, 0.1390635, 0.142733, -0.16162498, 0.034902234, -0.13497733, 0.097894885, 0.10681201, -0.047284793, 0.015005336, -0.09031815, 0.12383599, -0.091548845, -0.013705567, 0.049403854, 0.18155518), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(0.1806166, 0.08396095, -0.17600271, -0.029499372, 0.17163202, 0.18944095, -0.1755662, -0.008431973, -0.057935216, 0.1584788, -0.059633583, -0.1950766, -0.03091734, -0.045874756, -0.0051801866, -0.20533004), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(0.004201836, -0.15968263, 0.015041736, 0.17407048, -0.03530788, 0.09062685, 0.050316375, -0.058444653, -0.12015508, 0.11712405, -0.031137828, -0.049205493, 0.05515115, 0.06733773, 0.03607973, 0.05056488), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(0.006330765, -0.17457847, -0.021863922, -0.16448942, 0.059458453, 0.1486118, -0.22728927, 0.0058831032, -0.00180954, -0.34799471, -0.017039202, 0.03939159, -0.033589013, 0.32948977, 0.087067194, -0.113632225), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(0.042377464, -0.030939378, -0.08917448, 0.2585585, -0.28696018, -0.04419827, 0.0057377038, 0.08444518, -0.009464956, -0.03967168, 0.05095106, -0.04785119, -0.05805417, -0.07269471, -0.18795604, -0.23612237), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(-0.026615486, 0.1219551, 0.17111751, 0.12014681, -0.10403522, 0.13139823, 0.28612077, -0.17874514, 0.030061528, 0.31433544, 0.16948178, 0.10126, 0.0582159, -0.13620348, -0.026327167, 0.11529438), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(-0.10999408, -0.1642254, -0.09659326, -0.085699454, 0.05962901, -0.07562989, 0.042366143, -0.1533413, -0.09869005, -0.21281542, 0.020441674, 0.17866766, -0.26933256, 0.049314983, 0.10039448, -0.13316467), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(-0.22610307, -0.0013520997, 0.16817398, 0.037943725, -0.067527935, -0.15105802, -0.0973126, -0.05843863, 0.19214404, 0.092337616, -0.024034662, -0.007926626, -0.32222804, 0.082673185, 0.069847725, 0.027493093), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(0.0014049035, -0.058899652, 0.060463455, -0.052001078, 0.19716045, 0.12879235, -0.026990427, 0.23919769, 0.0034248075, -0.0157977, -0.06720619, -0.013757762, -0.101808615, 0.029667001, 0.07381132, 0.092393965), target3);\n\ttarget3 = MulAdd(na3, MF4x4(0.053514812, 0.14120969, -0.056737684, 0.017708244, -0.05407678, 0.103361025, -0.0924985, 0.053643283, -0.28559983, -0.12866977, -0.06750911, 0.027970003, 0.06481888, 0.06773354, -0.07627304, -0.07058017), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(0.10564813, 0.1891429, -0.085196435, 0.0073824013, 0.0039014777, 0.14679071, 0.09327677, -0.030248597, 0.18063113, -0.3115451, 0.06560229, -0.03190648, -0.1619295, -0.112393744, -0.10004008, 0.0023948452), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(-0.033827845, -0.12089327, 0.042195093, 0.025078757, -0.044261515, 0.09103579, -0.19070679, -0.1600237, 0.13683122, -0.072529055, 0.062436976, -0.29964364, -0.114442796, -0.047068417, -0.07223064, 0.05781626), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(-0.04086473, 0.029395554, 0.05157983, 0.013322953, -0.001428512, -0.103283875, 0.15795463, 0.21691218, 0.23493949, -0.18836173, 0.28818855, -0.07839693, -0.043874815, -0.011829423, 0.0825803, 0.18832965), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(0.087384604, 0.2075869, 0.012306303, -0.06356627, -0.019742407, -0.256092, -0.089735925, 0.026248232, -0.22160976, -0.4420786, 0.033200428, -0.1376953, -0.3315224, 0.17343274, 0.3179911, 0.012785637), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(-0.14358811, 0.052979786, 0.13841373, 0.07362653, 0.050186664, 0.11735455, 0.0032370305, -0.16536471, -0.005521641, 0.1040989, -0.07086791, 0.13729815, 0.0840539, 0.06547088, 0.22857827, -0.2079967), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.11850976, -0.026047882, 0.00785038, -0.19955018, 0.040088244, -0.10139797, 0.08621738, -0.26192454, 0.3888625, 0.33236128, 0.1412189, 0.10097289, 0.07574426, -0.15459102, -0.1557534, 0.03405655), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(-0.15693793, -0.03326048, 0.110803954, 0.07044277, 0.1380442, -0.029729376, -0.26033366, 0.040598683, -0.23744181, 0.043091178, 0.18325818, 0.05989088, 0.099216335, -0.012825024, 0.20831011, -0.08420897), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(0.031240137, -0.034582928, 0.0022927374, -0.06525183, -0.15711913, -0.04604516, 0.0605175, 0.15128267, 0.072712876, -0.015489105, -0.20996843, -0.24177326, 0.053063773, -0.08747667, 0.24771367, 0.1244199), target3);\n\n\ttex4[gxy] = target1;\n\ttex5[gxy] = target2;\n\ttex6[gxy] = target3;\n}\n\n//!PASS 3\n//!DESC Conv-4x3x3x24\n//!IN tex4, tex5, tex6\n//!OUT tex1, tex2, tex3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex5.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex5.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex5.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex6.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex6.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex6.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { 0.004647682, -0.04675001, -0.041206088, 0.07870823 };\n\ttarget1 = MulAdd(a1, MF4x4(0.15677336, 0.18937011, -0.15614599, 0.15203404, 0.098624565, 0.023782162, -0.045496363, -0.014783688, 0.07303875, -0.075132, -0.019847363, -0.088889055, -0.11558432, -0.08860719, 0.16452459, -0.018188732), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.026749048, -0.0376324, -0.0994071, -0.00093872234, 0.014682955, 0.008369919, -0.046362195, -0.21044572, -0.013911088, -0.117338374, 0.14585997, -0.11355687, 0.04094843, -0.11326298, 0.08555518, 0.076577775), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.04918652, 0.10098061, -0.097193845, 0.011482707, -0.015221698, -0.06306758, 0.09985586, -0.0011515089, -0.09592504, 0.11805872, -0.053774815, 0.093555175, 0.11237289, -0.20694147, 0.255737, 0.0149322525), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.06269537, -0.28116295, 0.1405942, 0.00218229, -0.012810465, 0.11574089, 0.060055815, -0.14248852, 0.03755387, 0.03748404, 0.04481931, 0.086039774, -0.0707909, -0.053917676, -0.009349141, -0.06623982), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.002837983, -0.0649247, -0.14890024, 0.0011222209, 0.12083026, -0.16136795, -0.04910086, 0.060653802, 0.020444075, 0.0024171378, 0.06839313, -0.21157807, -0.1678213, -0.27503422, 0.0063047423, 0.03292154), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.14229529, -0.002042125, -0.022892606, 0.08743759, 0.035437252, -0.12997083, -0.1851374, 0.33951423, -0.037205234, 0.03710803, 0.018455725, -0.052581675, -0.16795224, -0.14008522, 0.011014682, 0.07038518), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.105874196, -0.21320704, -0.08445409, 0.052140422, -0.13498448, -0.0737051, -0.027274717, -0.06932614, -0.017584193, -0.13111684, -0.049095873, 0.08269069, -0.017520722, -0.08716905, 0.25897968, -0.1412353), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.016677873, -0.024665434, -0.11711789, 0.16085778, 0.017375777, 0.15644072, 0.11040864, 0.23371918, 0.10210983, 0.0039968346, -0.007850634, -0.026810693, 0.08863099, 0.094195805, 0.10420045, -0.19671428), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.016842589, -0.15904509, -0.038347725, 0.1279937, -0.00045717083, 0.13132372, -0.13027431, -0.058826704, -0.0029436084, 0.008283112, 0.10262298, -0.05013397, -0.02922706, 0.14453132, 0.18946488, -0.0966266), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.00050655927, 0.2318558, 0.025141997, -0.058849655, 0.05127902, -0.056867033, -0.06191942, -0.028451841, 0.038166817, -0.14328304, 0.06050816, -0.12157533, 0.058556214, -0.13964172, 0.026282474, 0.03329027), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.06520211, 0.21877246, 0.017677024, -0.053116243, -0.018621214, -0.0063418522, -0.10306368, -0.07627847, -0.0035643768, -0.05579889, 0.07386847, -0.0084178485, 0.005625732, 0.10204069, -0.08501438, -0.013451101), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.067369066, 0.17327416, 0.062035594, -0.1340041, 0.10289677, -0.0868232, 0.023330351, -0.072417624, -0.12027732, 0.11592929, 0.05090798, -0.06895359, -0.04391116, 0.18919718, 0.064172365, -0.051173057), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.022913774, -0.021000199, -0.01890946, -0.079307556, -0.16522343, -0.3152304, -0.21007383, 0.01858985, 0.003152245, -0.009094366, -0.023845399, -0.06635666, 0.041294664, 0.12883614, -0.06389087, 0.005710572), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.032583844, 0.16247992, 0.06764235, -0.2240413, -0.15760922, 0.20196813, 0.13201368, 0.106440805, -0.070570394, -0.19261852, 0.28010008, -0.0048360736, -0.14080645, -0.02105434, 0.023814693, -0.13861166), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.071627796, 0.20605852, -0.2676727, -0.39509574, 0.22782667, 0.13424493, 0.08930976, 0.13314968, 0.045536704, -0.06271722, 0.01703984, 0.13352728, -0.07089344, 0.14776441, 0.11804898, -0.027061034), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.011638248, -0.016760292, 0.0593982, -0.100421235, 0.030956578, 0.13813019, 0.022237146, -0.091211095, 0.010232882, 0.0010010025, 0.16789608, -0.030847551, 0.027778173, -0.005418129, -0.16441783, 0.07580936), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.08137598, -0.008976606, 0.00023393384, -0.19671111, -0.0068668523, 0.097364455, -0.0026000517, -0.11201763, 0.047109667, -0.043774106, 0.12344897, -0.13232613, 0.026984906, -0.13614078, 0.06604853, 0.10752554), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.00047561026, 0.12248177, 0.05146918, -0.3956014, -0.12263068, 0.22729336, 0.03597535, 0.09500604, 0.06894016, 0.061162107, 0.13561803, -0.047466908, -0.0013999783, -0.068306796, -0.031758398, -0.046261873), target1);\n\ttarget1 = MulAdd(a3, MF4x4(0.12310386, -0.046108138, -0.08357388, 0.02034243, 0.0024922634, 0.029359696, -0.04329755, -0.034257423, 0.08229037, -0.11810178, -0.1079754, 0.13327998, -0.09608102, -0.26294786, -0.056677792, -0.1958781), target1);\n\ttarget1 = MulAdd(b3, MF4x4(0.007982684, 0.020604203, -0.12702446, -0.02264998, -0.034644246, -0.00025684707, 0.037761245, -0.0041598473, -0.047972955, 0.039201785, -0.016598722, -0.044081174, 0.11861525, 0.01239671, -0.12192053, 0.08865015), target1);\n\ttarget1 = MulAdd(c3, MF4x4(-0.0018564354, -0.07618631, -0.09212719, 0.092056714, -0.16783315, 0.08645543, 0.24669226, -0.023520375, -0.04045034, -0.0023428998, -0.01612943, 0.014919031, 0.16028026, -0.020104371, -0.16949941, 0.18713622), target1);\n\ttarget1 = MulAdd(d3, MF4x4(0.19490379, -0.07592651, -0.200843, 0.07704469, -0.02736559, -0.054601975, -0.07240532, -0.03120134, -0.038438305, -0.12783389, -0.057655185, -0.009752765, 0.07110615, 0.033978693, -0.023724876, 0.11998657), target1);\n\ttarget1 = MulAdd(e3, MF4x4(0.18834178, 0.23053586, -0.14430945, 0.32287082, -0.32185385, -0.15306619, -0.1573794, 0.005030648, 0.06912159, 0.009656687, -0.20743106, 0.03814172, 0.104378454, -0.07221508, -0.11348173, -0.019581677), target1);\n\ttarget1 = MulAdd(f3, MF4x4(-0.017694198, 0.028853144, 0.1263284, 0.1820403, -0.05317991, -0.057951134, -0.04575081, 0.05769411, -0.11807033, 0.06413361, 0.06063185, 0.19433405, 0.0032539407, 0.021501997, -0.14744627, -0.095206425), target1);\n\ttarget1 = MulAdd(g3, MF4x4(-0.0463219, -0.13988416, 0.07200895, -0.13444373, -0.2447483, -0.024709478, -0.08591721, -0.09281996, -0.046719797, -0.11321926, -0.061532497, -0.0044461554, -0.03174407, -0.0056026108, 0.0056006387, 0.08828445), target1);\n\ttarget1 = MulAdd(h3, MF4x4(0.060374547, 0.062058832, -0.0390557, -0.047456663, -0.2227052, -0.03193117, -0.025358196, 0.08565629, 0.03657194, 0.13427348, -0.09266081, 0.23655434, 0.024580589, 0.01999063, -0.038653534, -0.023600115), target1);\n\ttarget1 = MulAdd(i3, MF4x4(-0.0522313, 0.079263784, 0.10858985, -0.031472187, 0.072964184, -0.065342486, -0.03705779, 0.12809205, 0.09141905, 0.042783994, -0.028724866, -0.08221137, 0.13597457, 0.029334683, -0.12261823, -0.0052482346), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.018523648, -0.21706165, -0.14580801, 0.038885653, -0.030849187, -0.06640324, 0.0011639405, 0.097421385, -0.10876752, 0.14631185, 0.014579094, 0.13907033, 0.1310694, -0.1287285, 0.03553917, 0.025316685), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.22148734, 0.01278849, -0.1596892, 0.17187239, -0.04219283, -0.064526156, 0.011610614, -0.0094766095, 0.028804665, 0.16347663, -0.09309108, 0.07097134, -0.014338763, 0.051742412, 0.059907336, -0.17768253), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.06295463, -0.118564956, -0.016017804, 0.050398786, -0.07136999, 0.25657415, -0.035830878, -0.084443375, 0.12151532, -0.089734256, -0.064030536, 0.048108097, -0.01340212, -0.16572993, -0.093480445, 0.088874646), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.059600584, -0.0052702287, 0.029479535, 0.20121074, -0.07113247, 0.1561413, 0.25110185, -0.060266465, -0.34369025, 0.14528714, 0.060928173, 0.008688357, 0.034280702, -0.004796254, 0.15269074, 0.056567237), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.05273782, -0.10539872, -0.07192354, -0.083380386, 0.097994, -0.20134969, -0.5062206, 0.30952695, -0.041553877, -0.055801403, -0.037597038, -0.13394146, 0.027271803, 0.17738731, 0.3336375, -0.0035211574), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.009962762, 0.11503034, 0.027571376, -0.018972939, 0.057955634, -0.039739445, -0.0676937, 0.09477686, 0.17910802, -0.28064108, -0.12184129, -0.028407406, 0.056930028, 0.024252843, 0.08959171, -0.027298026), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.010729545, -0.048747167, 0.03880723, -0.006755044, -0.011909068, 0.008659933, 0.0800407, -0.040333465, -0.25750905, 0.29087406, 0.04864783, 0.118413374, -0.03514928, -0.17206238, 0.2095635, 0.039926212), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.0073815766, -0.030507097, 0.13367772, 0.04863103, -0.067190245, 0.039960794, -0.013012274, 0.15617093, -0.33983988, -0.05671963, 0.22061184, -0.03684452, 0.06304772, -0.08322253, 0.1117871, -0.2006011), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.119437724, -0.009319272, -0.07218167, -0.20269917, 0.10248017, -0.009564983, -0.016272334, -0.042979773, 0.11264571, -0.15697405, 0.015802475, 0.11154868, -0.073011585, -0.07225136, 0.15061282, 0.027214698), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.03921657, -0.0154446345, -0.01855873, -0.15813923, 0.11489257, -0.10245685, 0.090572976, -0.072605945, -0.069270656, 0.05171411, 0.045471992, -0.028802622, -0.19419885, 0.18310049, 0.06882923, -0.0005851153), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.04575681, -0.020910552, 0.051311508, -0.0004904971, 0.04239284, 0.024153773, 0.030940467, -0.107036866, -0.099398546, 0.30524835, 0.03902779, -0.05217122, 0.14969619, 0.084496036, -0.14226931, -0.07463564), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.05297294, 0.15384737, -0.0069473814, 0.055046722, 0.11697162, 0.2424236, 0.021053674, -0.004738062, 0.014129249, -0.2909751, -0.048418947, 0.014277387, 0.053296436, -0.12475984, 0.07531274, -0.022512587), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.04752641, 0.0006545224, -0.00589135, -0.026285272, -0.043745905, 0.24044664, 0.027723765, -0.023630425, 0.00869218, 0.028710615, -0.013863237, 0.0809765, 0.06708566, 0.013517718, 0.0012386752, -0.022743834), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.12600644, 0.0116939265, 0.0491542, 0.06871389, -0.2096317, 0.050711762, -0.0455067, -0.11994795, -0.05030036, 0.20621927, 0.10951404, -0.05465143, 0.09614336, -0.22954291, 0.15239881, 0.04559428), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.020940155, 0.16499193, 0.17525958, -0.051628407, -0.3068143, -0.14576466, 0.00672593, -0.1308778, 0.00072586804, -0.067010164, -0.093788825, 0.005219908, -0.020126363, -0.083521724, -0.0650657, 0.01836861), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.072675996, 0.10010303, -0.1263988, -0.13888146, 0.13648619, 0.09535094, -0.0038582503, 0.10240531, -0.0014882578, -0.21053605, 0.16676606, -0.024605514, -0.06614438, 0.09575527, 0.116414934, -0.18538997), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.013467567, 0.11274834, 0.07675635, -0.054812886, -0.024862224, 0.044424616, -0.12858495, -0.120611496, -0.1295857, -0.029304063, -0.06629468, -0.22211547, 0.12577437, -0.015624684, -0.10307795, 0.09404936), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.11430831, 0.11486887, -0.06219608, -0.018371167, 0.091516815, 0.0041821343, -0.043150745, -0.11775014, 0.07794832, -0.01944774, -0.031383686, 0.077408955, -0.124252975, 0.062118705, 0.009199536, 0.06538969), target1);\n\ttarget1 = MulAdd(na3, MF4x4(0.22154011, -0.098727904, -0.08378975, -0.04167056, 0.019208338, -0.02245709, 0.13298267, -0.104098395, 0.053671844, 0.12845491, -0.003814564, 0.0665341, -0.07084713, 0.26803628, 0.09472736, 0.16825765), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(-0.21349828, -0.14917591, 0.12592548, -0.12721801, 0.086323306, -0.15409322, 0.07365807, 0.00620922, -0.0280901, 0.0957864, 0.10711525, 0.1165179, -0.08383744, 0.14757137, 0.024865197, -0.17536579), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(-0.044920437, -0.00016428503, 0.035227478, -0.026525848, -0.17628764, 0.044141084, 0.025941433, 0.18698089, 0.0069334265, 0.097304195, -0.08945912, -0.007168394, -0.054236215, -0.2604089, -0.14738831, -0.074961744), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(-0.043119818, -0.012245711, 0.030121213, -0.0032237277, -0.033457555, 0.052158665, 0.046546284, -0.0047129868, -0.08133807, 0.037123546, 0.08634659, 0.120436855, -0.02609943, 0.11368193, -0.06750012, 0.0007624448), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(-0.20511842, 0.1999221, 0.099944666, -0.14691514, 0.012555328, -0.22190604, 0.12456348, 0.05391116, 0.031001683, -0.33920962, 0.13921735, 0.101068705, 0.28788915, 0.13809694, -0.10081831, -0.05679542), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(-0.019705083, 0.08693377, 0.06884471, 0.032386675, 0.10256849, 0.22142375, 0.07398588, 0.03336761, 0.19134827, 0.12654771, -0.39008364, -0.29602188, -0.04149512, 0.018968705, 0.080247656, 0.0480814), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(0.09539717, -0.10946926, -0.048939522, 0.030059233, -0.17243776, 0.021580435, 0.15642153, -0.10282692, -0.020257011, 0.060849674, 0.040640093, 0.05628088, -0.11358645, -0.16440971, 0.1787329, -0.02685428), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(0.14034219, 0.21827984, -0.16170599, 0.03681219, -0.051667843, 0.019152328, 0.033406716, -0.025032328, 0.13413768, -0.09349573, 0.10037219, -0.0105256345, -0.17372406, -0.07619186, 0.068273135, 0.088958755), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(-0.015460073, -0.04781314, -0.008159705, 0.117226824, -0.20293492, 0.019126927, 0.1074034, -0.10307512, 0.1356002, 0.108166546, -0.1275016, -0.023100886, -0.09334954, -0.14509954, 0.1668647, 0.13371155), target1);\n\t\n\tMF4 target2 = { -0.06939391, 0.017302405, 0.023963664, -0.011060264 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.0116784945, -0.25090152, -0.17868316, 0.036498535, 0.015182224, 0.2023079, 0.011117134, 0.15237965, -0.015316299, 0.088544175, -0.06572522, -0.08057326, -0.22271864, -0.30610234, -0.12208543, -0.22944431), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.11143165, -0.077543005, -0.061455075, -0.037597977, -0.0023224957, -0.10979736, -0.034990564, -0.008420816, -0.094636045, -0.030254573, -0.06455877, -0.020989688, 0.018324712, -0.3669934, -0.350233, 0.037510827), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.104956195, 0.015602951, -0.051957965, 0.13510315, 0.010418954, -0.054195777, 0.018231759, 0.045083612, 0.09856977, -0.10220956, -0.029939203, 0.01315078, -0.29208857, 0.0017958464, 0.08760539, -0.09646556), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.046938017, 0.08242743, 0.13486576, -0.087577604, 0.1157099, 0.101392664, 0.14847688, 0.037801757, 0.018798033, -0.25906846, 0.097656235, -0.009259822, 0.10044328, 0.33434513, -0.15681681, -0.07497045), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.113606565, 0.15215175, 0.056206945, 0.03135906, -0.06457102, 0.028175417, -0.06261949, -0.015601963, -0.048961632, 0.07163545, 0.0147160115, 0.037389677, 0.092339285, 0.26372424, 0.1122662, -0.058904216), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.21457312, 0.1408831, -0.08713026, -0.06950515, 0.006483218, 0.028784987, -0.02613041, -0.06227427, 0.024932534, -0.02103815, 0.080908604, 0.078669965, 0.19956729, -0.035375793, -0.046653055, 0.07523847), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.11979529, -0.15300119, -0.06692378, 0.0982862, -0.05148871, -0.16330053, -0.045053672, 0.022939514, -0.013373179, 0.38319084, 0.11172139, -0.07044107, 0.09208871, -0.07254955, -0.03284103, 0.05421524), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.09024579, 0.022398917, -0.084611446, 0.1254619, -0.0028836168, -0.092541836, -0.06697658, -0.09709128, 0.10234711, -0.1247404, 0.031691026, 0.0087786, -0.09046125, 0.059536055, 0.2076767, 0.15046969), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.18603326, 0.0022851937, -0.10218833, 0.18102962, 0.030617537, -0.005931309, -0.06299933, -0.13356128, -0.03377612, -0.009710565, -0.10352098, -0.20960933, 0.10586698, 0.018833099, 0.16208176, -0.048466753), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.004165509, -0.112526424, -0.1481008, -0.09386717, 0.017359056, -0.16117403, 0.065114655, 0.15273894, 0.0850914, -0.6033039, -0.102531776, -0.09553129, 0.06812466, -0.17199127, 0.009345428, -0.117129266), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.19360402, -0.2172338, -0.025270093, 0.041762922, -0.06813442, -0.1315374, -0.03864256, -0.083543435, -0.14600715, -0.10248121, -0.039856248, 0.034162194, -0.06736031, 0.07872902, -0.06577812, -0.07003804), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.2596632, -0.06779467, -0.061247632, 0.09280383, 0.15697475, -0.06379218, 0.117600165, 0.19564915, -0.043823496, 0.2113048, 0.1236739, 0.05126704, 0.0036669953, 0.059754487, -0.031676155, 0.07585315), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.2750924, 0.07154958, -0.043717247, 0.11531165, 0.07236982, 0.112787254, 0.024018776, -0.0073595895, 0.037517104, -0.06963889, -0.13254988, -0.1347438, 0.08744426, 0.036659624, -0.010376286, -0.0011054546), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.21909392, -0.15014122, -0.1724268, -0.11459151, 0.07886104, -0.039391857, -0.086656936, -0.18109863, 0.13549148, 0.24947289, -0.11073447, -0.012388639, -0.06299071, 0.094953805, -0.018513478, 0.11858225), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.14019133, 0.289657, -0.13005698, 0.08418524, -0.15852125, 0.2049765, -0.18946235, -0.03330375, 0.057983503, 0.17226145, -0.16830897, -0.047264732, 0.027640691, -0.010081246, 0.14454436, 0.081710726), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.1674246, 0.28778687, 0.19290589, 0.086525135, 0.09838388, 0.1437797, 0.18871532, -0.31380877, -0.13105413, -0.15920939, -0.049839422, 0.025027066, -0.042670842, -0.07288023, -0.03385935, 0.03853164), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.26396382, -0.09383774, 0.10738164, 0.058519054, 0.01883401, 0.023963995, -0.09510717, 0.25038752, 0.004994643, 0.26613802, 0.11163109, -0.09746982, -0.08012294, 0.092731714, 0.024274494, 0.040725235), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.024282128, 0.07086445, 0.04124535, -0.04565769, -0.043728314, -0.15438943, 0.06610379, 0.07666126, -0.046235953, 0.04901646, -0.045347054, -0.0908177, 0.03715751, -0.09512116, 0.024934331, 0.019330366), target2);\n\ttarget2 = MulAdd(a3, MF4x4(-0.0610446, -0.00039494174, 0.11040924, 0.09711379, -0.033694427, 0.042628422, 0.04497454, -0.08639888, -0.006714255, -0.1956921, -0.07696048, -0.1440855, -0.036684107, 0.08872227, -0.014518533, -0.081829615), target2);\n\ttarget2 = MulAdd(b3, MF4x4(0.03242377, 0.2742694, 0.15646815, 0.12491848, -0.097658925, 0.04652564, -0.20971832, -0.22238888, -0.045453016, -0.10306553, -0.14868681, -0.03697577, 0.037367497, 0.106009305, 0.0006840817, -0.06331295), target2);\n\ttarget2 = MulAdd(c3, MF4x4(-0.09252423, -0.260707, 0.060529877, 0.1422387, 0.13040084, 0.060533516, -0.15988415, 0.093058884, -0.063219644, 0.16596133, -0.0858158, 0.0010563346, -0.05912638, -0.14902595, -0.0055698613, -0.19287406), target2);\n\ttarget2 = MulAdd(d3, MF4x4(0.050616026, 0.027293183, 0.1349355, 0.06430556, -0.0017233352, 0.05913591, 0.111860454, 0.05829484, -0.036098555, 0.065207146, -0.049812254, -0.14549483, -0.12424656, 0.1472102, 0.031858474, 0.017159335), target2);\n\ttarget2 = MulAdd(e3, MF4x4(0.018377563, 0.13093959, 0.15379103, 0.12314944, 0.040771928, -0.066829674, -0.05734121, 0.105038896, 0.29102528, -0.015173645, -0.004220056, -0.13141808, -0.20211789, 0.16278313, 0.09339586, -0.06485214), target2);\n\ttarget2 = MulAdd(f3, MF4x4(-0.000521399, -0.3693901, 0.17483166, 0.16742888, -0.06343791, 0.042411476, 0.13772172, 0.064281724, -0.034507953, 0.03691756, 0.13490774, 0.10946845, 0.12370677, -0.03205938, -0.02645649, -0.15375873), target2);\n\ttarget2 = MulAdd(g3, MF4x4(0.023370143, 0.11848177, 0.005112462, 0.026092546, 0.034971926, -0.08103188, -0.20400497, 0.06226299, -0.060475063, 0.035214186, -0.13627078, 0.045491677, -0.07321337, -0.10956125, 0.056908336, -0.0032308386), target2);\n\ttarget2 = MulAdd(h3, MF4x4(0.076967224, 0.117254384, 0.03186256, 0.2218116, 0.05217254, -0.13943173, 0.058474854, 0.13177274, -0.019476373, 0.14138101, -0.012791203, 0.12705484, -0.013589421, -0.10622012, -0.0021916716, 0.015177393), target2);\n\ttarget2 = MulAdd(i3, MF4x4(-0.061352234, -0.032728117, -0.16315818, 0.08222588, 0.013996033, 0.057500184, -0.11674498, -0.10170402, -0.03012877, -0.14447689, 0.032117244, 0.11841102, -0.0070680035, -0.15353645, 0.14097273, -0.12609388), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.1366668, 0.022588843, -0.06960645, -0.019482136, 0.008831277, 0.005849642, -0.042811397, -0.10104664, -0.21647254, -0.055100426, 0.10582604, 0.091224626, 0.16348936, -0.04480947, -0.08394584, 0.14027816), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.05215042, -0.22153285, -0.07402603, -0.1395589, -0.26351386, 0.060670085, 0.12676051, 0.0018233472, 0.09564221, -0.14353068, 0.23205271, -0.026433198, -0.04914892, 0.09260728, 0.016136972, -0.037016835), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.09228144, 0.028619789, -0.011197684, 0.043782573, 0.061469227, 0.019487167, 0.046048775, -0.060745444, -0.24178508, -0.11117579, 0.1313642, -0.20273723, 0.081280276, -0.015113924, -0.008701512, 0.038079187), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.092076614, -0.14906341, -0.013150191, -0.1445046, 0.023577487, -0.088496424, -0.03039066, -0.028063597, 0.033408202, 0.105900854, -0.098281376, 0.09988187, -0.04934366, 0.1647861, 0.15974896, 0.0484809), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.043313354, -0.079856, -0.29574707, -0.23970212, -0.23463657, -0.061711017, -0.12481534, 0.21037807, -0.010700073, 0.14672308, 0.15071099, -0.03755617, 0.072450034, 0.083081506, -0.001196162, -0.055120632), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.20737736, 0.008907195, -0.11623631, -0.038137514, 0.037122898, -0.10322798, -0.065684326, -0.010471773, -0.12765402, -0.117699586, -0.012870391, 0.071912766, -0.03260932, 0.12864828, -0.035069928, -0.08712889), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.05578123, 0.056912176, 0.01512389, -0.14807466, -0.012101421, 0.10860546, 0.034598228, 0.07160875, 0.15761101, -0.4777804, -0.24159615, -0.006523453, -0.28167522, -0.14714232, -0.1693888, -0.111417554), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.25981572, 0.1301148, -0.01769167, -0.10818973, 0.16135831, 0.024396034, -0.06722463, -0.032221332, -0.12383674, 0.038760092, 0.052030306, 0.077312715, -0.007761604, -0.12031171, 0.018808518, -0.103885494), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.048577465, 0.025990447, -0.07106119, 0.15832591, 0.019197416, 0.044232063, -0.030652093, 0.011447957, 0.18041368, -0.28076535, 0.022676598, -0.15350787, -0.1514482, -0.2362105, 0.14161605, 0.030001758), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.2541123, 0.050012548, 0.1707829, 0.025630053, 0.078972176, 0.17645672, -0.020095231, 0.03378738, -0.1328695, 0.04409738, -0.23381121, -0.013347802, -0.049448222, 0.07035769, 0.105488785, 0.08659344), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.10455444, 0.28242826, 0.16516706, -0.046555575, 0.13230863, 0.07463435, -0.14748469, 0.11881527, 0.2279376, 0.14795774, 0.21520549, -0.05650647, 0.11728158, 0.048864357, 0.040869843, 0.1442246), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.21203394, -0.06565692, 0.03824069, 0.011281014, -0.033808656, 0.12499576, -0.13186213, -0.043884885, 0.017813649, 0.18413112, 0.046354674, -0.05213395, -0.051737677, -0.07141214, 0.03402196, -0.06220277), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.05735565, -0.12864622, 0.051514987, 0.03940558, -0.08701596, -0.1948226, 0.034218855, -0.03742723, 0.15607446, 0.0327541, 0.04040029, 0.0028771486, -0.08412264, -0.016660625, -0.058885157, 0.09373861), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.069591254, 0.018901952, 0.008289076, 0.08653302, -0.009072406, -0.11095817, 0.20987292, 0.016384758, 0.05693833, -0.118542574, 0.11310585, 0.073924355, 0.10250452, -0.043420166, -0.07558694, -0.10898524), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.030319573, -0.3339516, -0.0689396, 0.01270701, 0.2504168, -0.08088952, 0.048351087, 0.013527536, -0.04373888, -0.27049688, 0.052563794, 0.010002367, 0.038096514, 0.0740455, -0.17847466, -0.1106183), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.041473575, 0.036192052, -0.20958827, 0.09255741, 0.043088675, -0.07332803, -0.1566315, 0.19757885, 0.04752265, 0.14642613, 0.021630943, -0.105035484, 0.015669389, 0.015701298, 0.124771506, 0.028875854), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.0017878636, 0.06815434, 0.03952396, 0.0008930589, 0.10052908, -0.010179957, 0.090537265, 0.26063922, -0.027913721, -0.27610707, -0.0935186, 0.103001356, -0.013015698, -0.13290603, -0.036786307, -0.120041944), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.008112194, 0.101246096, 0.10216113, 0.012162128, 0.16638301, 0.03442679, -0.013482703, 0.22639573, -0.106342115, 0.16007386, 0.1562559, 0.031520694, -0.04781568, 0.061812893, 0.063238494, -0.112484284), target2);\n\ttarget2 = MulAdd(na3, MF4x4(-0.07636386, 0.02620731, -0.04784259, -0.0068134456, -0.098476306, -0.25026417, -0.26229498, 0.07999187, 0.08054805, -0.13999973, 0.038135037, -0.017274393, -0.07507948, -0.19170132, -0.111937724, -0.07482982), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(-0.102867655, 0.041831665, -0.26580745, 0.072875075, 0.122495115, -0.24738726, 0.01103763, 0.010455935, 0.10415628, 0.071636476, 0.24413374, 0.036024485, -0.14325532, -0.028743692, 0.09872556, 0.019074876), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(-0.08356808, 0.031134086, -0.0018714333, 0.052166995, -0.050258227, 0.015659487, -0.010771479, -0.094513185, 0.120308846, -0.16520835, 0.24742663, 0.0097768335, -0.26430902, 0.00096495246, -0.010277926, -0.03203841), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(-0.08886612, 0.045868922, -0.23351108, -0.11945227, -0.08114231, 0.1866038, -0.014666174, 0.10560594, 0.23003237, -0.031111564, 0.08909732, -0.004926665, 0.14808343, 0.012070922, 0.26077467, -0.13846008), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(0.02067818, 0.010505095, 0.1236986, 0.004310499, -0.23058774, 0.4539795, -0.1107521, 0.2687594, -0.088774115, 0.08556259, -0.28480148, 0.16472621, 0.22381066, 0.04922506, 0.03720699, -0.019955777), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(0.02878623, 0.08478639, 0.2798358, 0.08889886, 0.094446555, 0.022878725, 0.04060367, 0.008747965, 0.074154414, -0.36745515, -0.22710432, -0.17041051, 0.16977836, 0.18033457, -0.1422643, -0.06097858), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(-0.1882957, 0.07039768, 0.012633585, 0.0782871, 0.03383675, -0.07504364, -0.006248557, -0.0551174, 0.075581536, 0.091343425, 0.07753647, -0.0019186279, -0.016886314, 0.16758795, -0.060557626, -0.16569303), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(-0.13320294, -0.055567943, 0.05735829, 0.12787667, 0.04922832, -0.012577599, -0.13878204, -0.014323274, 0.06648109, -0.026210563, 0.019616883, -0.27789673, 0.051355522, -0.13060455, 0.039109703, 0.036932684), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(-0.10139845, -0.22758122, 0.044597298, 0.07907936, -0.025654264, -0.10633203, 0.04071873, 0.22363085, 0.12398309, 0.36964926, 0.21903247, -0.3217227, 0.030226095, 0.07867376, 0.045920413, 0.102684624), target2);\n\t\n\tMF4 target3 = { -0.020202361, -0.0016936217, 0.023388062, 0.10373034 };\n\ttarget3 = MulAdd(a1, MF4x4(-0.12172707, 0.08510432, 0.016999101, -0.03837886, -0.071940385, -0.028869554, -0.073142946, -0.018426571, -0.16583674, 0.02999741, -0.045404267, 0.07544135, -0.015742308, 0.051709145, 0.07165505, 0.15298915), target3);\n\ttarget3 = MulAdd(b1, MF4x4(-0.18608806, -0.08503095, -0.05690552, 0.20230335, 0.03255425, -0.07374758, 0.02050966, -0.0322938, 0.029025763, 0.045261286, 0.040862788, 0.0007141505, -0.040648397, -0.09871272, 0.06639088, -0.10357326), target3);\n\ttarget3 = MulAdd(c1, MF4x4(0.1160622, -0.021342635, -0.039825406, -0.19480887, 0.13462403, -0.06567422, 0.04279539, -0.012501501, -0.06882412, 0.24730788, -0.11261373, 0.15826169, -0.1942516, -0.011018759, -0.006282914, 0.15791936), target3);\n\ttarget3 = MulAdd(d1, MF4x4(-0.24771467, -0.029817501, -0.0072410326, 0.0049591805, 0.002406374, 0.06705227, 0.0746882, -0.021962378, 0.02235974, -0.09111428, 0.046035543, -0.05091351, 0.12882613, -0.0052345973, 0.20476472, -0.035007346), target3);\n\ttarget3 = MulAdd(e1, MF4x4(0.07206948, 0.007837054, 0.004716684, 0.032783184, -0.1640229, 0.09656901, -0.024538686, -0.13850725, 0.0020381159, -0.119971916, -0.03598378, 0.098396435, 0.11248338, 0.013638009, -0.13411912, -0.091735974), target3);\n\ttarget3 = MulAdd(f1, MF4x4(0.012680958, 0.0073848446, -0.15104567, -0.086190425, 0.017306415, -0.12165865, -0.030102974, -0.06412363, -0.048320986, 0.066044435, -0.037102707, -0.05550032, -0.022057295, -0.016380537, -0.023064991, 0.04324733), target3);\n\ttarget3 = MulAdd(g1, MF4x4(0.014645644, 0.029250145, -0.19020447, 0.06094981, 0.06021305, 0.033002753, -0.08270684, -0.13078806, -0.078915745, 0.03234919, 0.0033177685, 0.025673114, -0.10040817, -0.11726593, 0.26478398, -0.021515043), target3);\n\ttarget3 = MulAdd(h1, MF4x4(-0.03930199, -0.007856709, -0.010699159, -0.03138408, -0.25258276, -0.051078923, -0.17284779, 0.115362965, 0.20981595, -0.12642711, -0.07527823, -0.21674243, -0.05171349, -0.032929346, -0.11959963, 0.021577986), target3);\n\ttarget3 = MulAdd(i1, MF4x4(-0.12679584, -0.00971076, -0.2065375, -0.10207124, 0.1189984, 0.13061368, 0.048184898, 0.009846873, 0.08049477, -0.052818604, 0.024915429, -0.089877605, 0.028596658, -0.049394336, 0.15412825, -0.25427133), target3);\n\ttarget3 = MulAdd(a2, MF4x4(-0.042340282, 0.15739791, -0.0058195787, 0.11638454, -0.29605922, 0.04940588, -0.12277728, 0.06556332, -0.15141304, -0.007342225, -0.015176599, 0.19668026, -0.029852653, 0.1131092, 0.06274694, 0.19488528), target3);\n\ttarget3 = MulAdd(b2, MF4x4(0.17317021, 0.12034029, 0.023154281, -0.035767153, 0.023895182, 0.08562897, 0.010849429, 0.15511833, -0.071655706, 0.06762927, 0.110938646, -0.11194944, 0.088547744, 0.01826857, 0.10635028, 0.00079735904), target3);\n\ttarget3 = MulAdd(c2, MF4x4(0.1724684, 0.072277844, -0.07157608, 0.014533819, 0.21083286, -0.10260293, -0.042641845, -0.022131564, 0.15609416, -0.012785209, 0.1689822, 0.08156936, -0.05814626, 0.12873544, 0.013016528, 0.07162671), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.10265145, -0.15034834, -0.020390334, 0.051008113, 0.13483785, -0.036995072, 0.10197256, 0.07332627, 0.24034818, 0.041877862, 0.101294585, -0.038894523, -0.036132984, -0.09265928, -0.056219723, -0.02888855), target3);\n\ttarget3 = MulAdd(e2, MF4x4(0.2652024, -0.01230703, 0.23594856, 0.0742723, 0.09739247, 0.0483161, 0.023852533, 0.17482124, -0.09551598, 0.07907358, 0.09280555, 0.27893403, -0.016893778, -0.15504459, 0.07111864, 0.17860727), target3);\n\ttarget3 = MulAdd(f2, MF4x4(0.009993413, -0.034769267, 0.06733924, -0.026964549, 0.30227652, 0.0139632225, 0.049200308, -0.07578955, 0.061411507, 0.1924837, -0.008919774, -0.02543576, 0.08537961, 0.01291466, 0.07587885, -0.19892685), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.079757795, -0.021056721, -0.119849935, -0.1829519, 0.25801504, 0.08255822, 0.09422877, -0.26859275, -0.17237917, 0.030880162, -0.073090166, 0.045552216, -0.15178613, 0.046667624, 0.05506945, 0.120318785), target3);\n\ttarget3 = MulAdd(h2, MF4x4(0.13899504, 0.2106589, 0.09166694, -0.06926149, 0.13418478, 0.017007234, 0.027100448, -0.062565625, -0.021934774, 0.067251615, -0.10328445, 0.033577222, -0.050557505, -0.035202354, -0.062489368, -0.02470738), target3);\n\ttarget3 = MulAdd(i2, MF4x4(0.15340589, 0.11806747, 0.20874004, 0.048173226, -0.05472843, 0.084544346, -0.043854542, -0.07571899, 0.036645986, 0.05016359, -0.074323095, -0.2529282, 0.13572234, -0.008771343, 0.11274458, 0.18037859), target3);\n\ttarget3 = MulAdd(a3, MF4x4(0.021645557, 0.08299124, -0.051362146, 0.09342637, 0.0665058, 0.09216755, -0.0164684, 0.07281118, -0.0053016874, 0.032470454, 0.004089323, 0.009884544, -0.0046753073, -0.037279285, 0.12613527, 0.022236153), target3);\n\ttarget3 = MulAdd(b3, MF4x4(-0.06745298, -0.15038055, 0.11176774, -0.06209666, 0.017843692, 0.09113945, 0.10990877, -0.021071523, -0.111020654, 0.066645324, 0.04690986, -0.011084726, -0.15171939, 0.084783286, 0.24798997, -0.042696327), target3);\n\ttarget3 = MulAdd(c3, MF4x4(-0.05915715, -0.22595185, 0.061333664, -0.0924661, -0.013238295, 0.12872066, 0.076126665, 0.18921073, 0.01155994, 0.092524104, 0.07423282, 0.09467482, 0.070056126, -0.06073076, 0.030242696, -7.544676e-05), target3);\n\ttarget3 = MulAdd(d3, MF4x4(0.110107556, 0.0036358358, -0.013859793, 0.008409858, -0.021337144, -0.2092404, 0.054274913, 0.013595842, 0.058993395, 0.029181428, 0.15061715, -0.046964824, 0.044353873, -0.036482453, 0.22763032, -0.018364066), target3);\n\ttarget3 = MulAdd(e3, MF4x4(0.20778932, -0.049483854, 0.24778971, -0.3266631, -0.11545233, -0.093305275, -0.4550674, 0.2352049, 0.0052719507, -0.045975342, -0.35826904, -0.058102172, -0.096291795, -0.11218896, 0.23879842, -0.03641578), target3);\n\ttarget3 = MulAdd(f3, MF4x4(-0.109331824, 0.00814177, -0.08803353, 0.06688425, -0.09283131, 0.031705324, 0.040918272, 0.18237656, -0.07152109, 0.12277652, -0.059865803, -0.06869673, 0.11195339, -0.1325457, 0.1912906, -0.08553347), target3);\n\ttarget3 = MulAdd(g3, MF4x4(-0.10984097, 0.15747224, -0.019459615, 0.24969575, -0.01159421, -0.027474519, -0.004108195, -0.062133413, -0.06384389, -0.08368246, 0.0023778875, 0.13171864, -0.05652675, 0.14332311, -0.15735596, 0.20150533), target3);\n\ttarget3 = MulAdd(h3, MF4x4(0.078031205, -0.12403856, 0.04191835, -0.16050112, 0.11339027, 0.074540265, -0.15324953, -0.093895815, -0.0614043, -0.013293006, -0.12348063, 0.026803058, -0.1773178, -0.083579265, -0.054864556, 0.296814), target3);\n\ttarget3 = MulAdd(i3, MF4x4(-0.053263642, -0.048648115, -0.010281689, 0.20099847, 0.190146, -0.0023872026, -0.010445226, -0.04350378, -0.017980015, -0.04147092, -0.08261166, -0.031094978, -0.046422567, 0.120881446, -0.054973155, -0.058380593), target3);\n\ttarget3 = MulAdd(na1, MF4x4(-0.16745642, 0.07924586, -0.16717474, 0.06620602, 0.16495655, 0.0293633, 0.07890249, -0.30954084, 0.03467237, -0.20190205, 0.0014116743, -0.32280523, -0.14156029, -0.06447037, -0.21021147, 0.0687274), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(-0.04360317, 0.14327015, -0.06630513, -0.09011326, -0.0919624, -0.09085504, 0.024597472, 0.23315085, 0.039139662, -0.17370877, 0.048785537, -0.10094988, 0.010336257, -0.016844554, -0.05375775, -0.041789643), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.04296336, -0.093379766, 0.005651271, -0.090673715, 0.021506978, -0.08289978, 0.16281237, -0.0939677, -0.10273288, -0.22043118, 0.062697254, -0.027947478, -0.08711271, 0.0077892793, -0.10296665, 0.049631704), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(-0.09388834, -0.02609863, -0.043841925, -0.020223266, -0.023729876, 0.07854283, -0.19361661, -0.02297985, -0.003995974, 0.03295993, -0.07480908, -0.03279157, 0.20216386, -0.06685853, -0.22405225, -0.22138701), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(-0.041702025, 0.03686083, 0.051558632, 0.08093031, 0.0004725686, 0.0050831046, -0.31346506, 0.24020754, -0.012426937, 0.24121699, 0.0522848, 0.0524269, 0.0041041574, 0.20183508, 0.30658904, -0.099001035), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(0.0057143304, 0.07863334, 0.030834159, -0.20045337, -0.14132334, -0.019685036, -0.041891463, 0.04859716, -0.19865768, -0.16805026, -0.21894583, 0.08326542, 0.1381732, 0.06524222, 0.14627486, 0.105718866), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(-0.06811638, -0.07022535, -0.08053529, -0.019539276, -0.0013508294, -0.067808755, 0.14990425, -0.020371182, 0.2161962, 0.012578056, -0.07941276, -0.29615018, -0.11092915, 0.10959083, -0.38344857, -0.04684961), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(0.05912716, -0.007058617, 0.0053731226, -0.20157285, -0.0039983774, 0.1626744, -0.15158534, -0.0880334, -0.095339596, -0.102986366, 0.16870484, 0.37301186, 0.046958193, -0.018308617, 0.2801249, -0.1583765), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(0.03710428, 0.12427524, -0.15491271, 0.0521613, -0.104145944, -0.11358381, -0.11450005, -0.03948202, -0.022532975, 0.013648349, -0.05297846, -0.05551, 0.012648896, 0.013729304, 0.004389595, 0.033111174), target3);\n\ttarget3 = MulAdd(na2, MF4x4(0.092548154, 0.12822087, 0.03935411, -0.03887123, 0.18817197, -0.010538254, -0.13670439, -0.073919185, 0.020497803, 0.030874884, 0.023953672, 0.0029225757, 0.1144403, -0.08691024, 0.05340699, -0.10702303), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(0.1613281, 0.05971506, 0.042405322, 0.005931725, -0.09373433, -0.06380234, -0.064201795, -0.014180793, 0.0671638, -0.01367733, 0.14260428, -0.11077721, -0.045686133, 0.056600757, -0.15297161, -0.005997308), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(0.24641256, 0.06483951, 0.060505014, -0.009762036, -0.04572455, 0.03593092, 0.03415938, -0.14721255, -0.107680336, 0.09697482, 0.016876915, 0.18656448, 0.016999245, -0.08490942, -0.040251363, -0.074220374), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(0.25207043, 0.11133333, 0.13421617, -0.10310646, -0.22712758, 0.11617119, 0.06397493, -0.011858522, -0.115762815, -0.050787542, 0.06386407, -0.1579078, -0.12903711, 0.084837236, 0.07354705, 0.02250288), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(0.14158289, 0.07666087, -0.20075443, -0.010602763, -0.02820616, 0.0944957, 0.15453936, -0.15856305, 0.1749605, -0.12841891, -0.017792901, -0.10751241, -0.059640024, 0.13478336, -0.35048804, -0.20975049), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(0.18300997, 0.0895379, 0.084789746, 0.092567876, -0.16524926, 0.1414963, -0.15058212, 0.13400394, -0.113864176, -0.05660036, -0.0001961134, 0.14347304, 0.16637255, -0.18054125, 0.009827294, 0.21254125), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(0.11330536, 0.020117162, 0.049111363, 0.059246156, -0.17288256, -0.07703511, -0.064532675, 0.10420442, 0.100950584, -0.11876045, 0.013643637, -0.060119864, 0.16402918, -0.0701684, 0.10797075, 0.15408994), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(0.034557853, -0.09076456, -0.06957025, 0.11215256, 0.09526117, -0.0033204784, -0.11551807, -0.03458551, -0.025462642, 0.0434891, 0.3050603, 0.053797644, 0.10751034, 0.060085565, 0.15370789, -0.2315563), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(-0.046833776, -0.006102459, 0.1123578, 0.24187551, 0.03283197, -0.11041104, 0.20806998, 0.008368949, -0.1924367, 0.03361783, -0.045319956, -0.08859883, -0.2011492, 0.0912345, 0.048245467, -0.005335901), target3);\n\ttarget3 = MulAdd(na3, MF4x4(-0.18253306, -0.0011128648, -0.044692483, -0.057080504, -0.05725425, -0.19065356, -0.03155062, 0.06648306, -0.014216424, -0.0038765708, -0.017490484, -0.15456702, -0.010514629, -0.08982491, 0.10435141, 0.030280044), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(0.01791952, 0.1946834, 0.16822097, 0.18846266, -0.075084575, -0.10975577, -0.12906383, 0.20190994, 0.10143081, -0.2725471, -0.035883784, -0.22165625, -0.15959083, -0.34200552, 0.15872408, -0.021841785), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(0.029525736, 0.04896955, -0.011629367, 0.011558814, 0.00933636, -0.12728998, 0.0053133606, 0.019774856, 0.099030845, -0.27376446, -0.08325353, -0.20274483, -0.26426545, -0.17067485, -0.14366214, -0.21118636), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(-0.009527981, -0.033085525, -0.00047734487, -0.040472545, 0.071459636, 0.0954099, -0.060635693, 0.036283012, 0.1324083, 0.050335824, -0.2460094, -0.04979816, -0.09456389, 0.09053007, 0.11540641, -0.21168198), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(0.004067291, 0.1497142, 0.100381024, 0.083456755, 0.10807039, -0.05651095, 0.021606952, -0.005951023, -0.067543074, 0.21499002, -0.021271145, 0.20417792, 0.05860774, 0.20977509, -0.10931411, 0.16582364), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(-0.05491801, 0.0055349297, 0.03950427, 0.007250093, -0.062947564, -0.14126986, -0.06730335, -0.034683496, -0.03981397, -0.21181524, 0.21769942, -0.103150204, -0.17016284, 0.048786215, -0.014319224, 0.17676318), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.14126709, -0.032334052, 0.05638739, 0.11381126, 0.30596843, -0.12634167, 0.23541147, 0.08096712, 0.09152563, 0.18567194, -0.25563926, -0.21220013, -0.10782045, -0.044764172, 0.14415121, 0.10968688), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(-0.034708634, -0.037528913, -0.0846457, -0.24652602, -0.09284069, -0.103932016, 0.09996971, 0.04605858, 0.06597961, 0.06697364, -0.028432503, -0.032057744, 0.052634656, 0.02281619, 0.17896608, -0.1521084), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(-0.0043455027, -0.07276675, 0.03043292, 0.07712516, -0.20799218, -0.25933886, -0.11458076, -0.0025673904, 0.08385744, 0.33315855, -0.035151098, -0.19899674, -0.005009251, 0.056176793, 0.045722242, 0.17721124), target3);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n\ttex3[gxy] = target3;\n}\n\n//!PASS 4\n//!DESC Conv-4x3x3x24\n//!IN tex1, tex2, tex3\n//!OUT tex4, tex5, tex6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { 0.00803133, -0.020707153, 0.0056995153, -0.052884795 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.2582688, 0.116867825, 0.009512264, -0.0022509228, 0.13270317, 0.019233711, 0.014508687, 0.01733284, -0.121534936, 0.2637504, -0.16833198, 0.08360115, 0.09262769, -0.09723933, -0.08402722, -0.06326682), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.32656944, 0.035490595, 0.014057071, 0.08615446, -0.001598092, 0.16362181, -0.10130158, 0.16792357, 0.03340437, 0.037359558, 0.09397945, 0.11016778, 0.08567979, 0.31809476, 0.085573055, -0.15427281), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.16257697, -0.03590016, -0.19049743, -0.13342945, 0.013655946, -0.11739747, -0.008941973, 0.015134444, -0.17258401, 0.17935902, 0.06434015, -0.06638789, 0.17013264, -0.171608, 0.07526482, 0.29814368), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.14037174, -0.060715932, 0.012513121, 0.05294183, -0.05479372, -0.13937469, 0.01836811, -0.133735, -0.29546124, -0.14349708, 0.14202882, -0.03247825, -0.054209106, 0.002391278, -0.024334526, -0.10866433), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.098666176, 0.009357217, 0.14404769, -0.03864725, -0.21861532, 0.24275939, 0.3084927, -0.17814654, -0.06785066, -0.20976599, -0.010328756, -0.0075252843, -0.1265569, -0.3896638, -0.07620251, -0.17581807), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.028447198, 0.088148355, -0.11362386, 0.032440383, -0.017401151, 0.2062452, -0.1613577, -0.07957526, 0.31136703, -0.06775296, -0.019393584, -0.063142054, -0.12292114, 0.010548703, 0.03203177, -0.053964596), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.108504035, -0.20656614, -0.04412517, -0.047383796, 0.038306333, -0.20189808, -0.07821153, -0.0229348, 0.10628414, -0.015934726, -0.08728048, -0.17359804, 0.17790003, 0.085666224, -0.11872538, -0.007298351), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.024346102, -0.0066076764, -0.011155871, -0.057157155, -0.04878886, 0.121565156, 0.094774745, -0.021847744, 0.04866778, 0.07184023, 0.26012063, -0.07480458, -0.29240155, 0.12562081, 0.01449463, -0.028680477), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.12557116, 0.034923933, -0.095903516, -0.03958003, 0.26028237, -0.017168928, -0.13332075, 0.15662631, 0.065815985, -0.035664845, 0.045483954, -0.015463682, -0.093050554, 0.17345443, 0.069853716, 0.012629484), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.06156731, 0.07782055, -0.10174533, -0.020296015, -0.11969389, -0.060097698, 0.13305716, 0.16102178, 0.024139002, -0.02605331, -0.07594407, 0.19671421, -0.12202574, 0.14988048, 0.015957702, -0.04196926), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.34706548, 0.043015823, 0.13185433, 0.10132207, 0.007556987, -0.043371882, -0.08854469, 0.1748955, -0.1481482, 0.031284038, 0.120617144, 0.21384451, -0.08435913, -0.049537454, 0.049118094, 0.01525446), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.09368386, -0.057292625, -0.17107973, 0.102038346, -0.21283975, 0.29275435, -0.039638165, -0.14761256, -0.0026279686, -0.1902631, -0.14120182, 0.26573882, 0.0017522989, -0.06337007, 0.14134108, -0.015992256), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.04090445, -0.15472308, 0.0086197965, -0.08812333, 0.079468906, -0.16199878, 0.15031399, -0.03220131, -0.08283918, 0.18892156, -0.11201425, 0.143803, 0.027449837, -0.15672483, -0.09222757, -0.0074415365), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.10325783, 0.01752857, 0.10529392, -0.04568797, 0.017125184, -0.18414256, 0.109236374, -0.05950773, -0.07963555, 0.22193272, 0.009846993, -0.028046092, -0.28534588, -0.040712982, -0.018419487, 0.040993705), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.07601499, 0.14913873, -0.11738921, -0.21686155, -0.09468833, -0.10593258, -0.13899745, -0.08376532, -0.21147677, 0.0016611695, -0.12994987, 0.06078483, 0.007183634, 0.22829083, 0.054238643, 0.025317933), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.020357948, -0.06775977, 0.04134854, -0.19611607, 0.21193837, 0.19103523, 0.1623303, -0.07516307, 0.09373488, -0.18499903, 0.122855246, 0.06162072, -0.06930552, 0.040520284, 0.066090606, 0.06882486), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.07091698, 0.027023822, 0.014318926, -0.096747, 0.2213003, -0.26515988, 0.027153777, -0.06498218, -0.1544758, -0.072314575, 0.060353238, 0.0008735325, 0.10359162, -0.040275127, 0.03365087, 0.067658685), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.010807538, -0.032808676, 0.0016953531, -0.07662512, 0.0726062, -0.018007128, -0.10622275, -0.25853804, 0.059124377, 0.1262254, -0.093686275, 0.013412181, 0.17268743, -0.0634091, -0.2380408, 0.061805595), target1);\n\ttarget1 = MulAdd(a3, MF4x4(0.0589103, -0.13791196, -0.054214116, -0.10432153, -0.009462091, -0.06466445, -0.10792851, 0.0046791825, 0.034062322, 0.0810174, 0.112342946, 0.14306374, 0.0536091, -0.056520145, -0.14358906, 0.1730281), target1);\n\ttarget1 = MulAdd(b3, MF4x4(0.102546036, -0.0005907261, 0.06815491, 0.054100085, 0.012063651, 0.13010375, 0.076584436, 0.10106609, 0.07464082, 0.12651648, -0.13567902, 0.12329812, 0.036417592, -0.030062713, -0.07439, -0.06734716), target1);\n\ttarget1 = MulAdd(c3, MF4x4(-0.06956145, -0.0320128, 0.0069283135, 0.0010382348, -0.15168677, -0.07246775, -0.1870489, 0.081376776, -0.12240719, 0.040261835, -0.114711486, 0.11216043, 0.039739948, 0.064421944, -0.11448801, -0.11656052), target1);\n\ttarget1 = MulAdd(d3, MF4x4(-0.029262811, 0.07973898, 0.014937532, 0.17416446, -0.13320738, 0.09951435, -0.09681337, 0.24465284, 0.0027678797, 0.054772142, 0.11334623, -0.062660255, 0.06494805, -0.014957246, -0.016339006, 0.0065059843), target1);\n\ttarget1 = MulAdd(e3, MF4x4(-0.19118161, 0.24356417, -0.17327957, 0.06050448, -0.097790115, -0.38453653, 0.045624297, 0.04574299, -0.15803054, -0.5270604, -0.04556698, -0.13112716, -0.026057608, 0.13840397, -0.04413626, -0.06273916), target1);\n\ttarget1 = MulAdd(f3, MF4x4(0.029510414, -0.005691187, 0.05228498, 0.028585492, 0.18082422, -0.032805815, 0.007563971, 0.08991763, 0.105824, 0.02457178, 0.055056915, -0.060770642, -0.011407322, -0.11525285, -0.04518266, -0.04449915), target1);\n\ttarget1 = MulAdd(g3, MF4x4(0.14025277, -0.18081227, 0.014395497, -0.09138814, -0.09448127, 0.2532618, 0.08094696, 0.050620202, 0.040627994, 0.17808948, 0.0933771, -0.04734779, -0.025526097, 0.0038422223, 0.05230542, -0.101145774), target1);\n\ttarget1 = MulAdd(h3, MF4x4(-0.07215562, -0.058965042, 0.038303573, 0.0009963732, -0.059399143, 0.15957262, 0.035185594, 0.0719169, 0.08515627, 0.09775558, 0.13178122, -0.0837824, 0.014349278, 0.038491696, 0.071876876, 0.0345376), target1);\n\ttarget1 = MulAdd(i3, MF4x4(0.040965024, -0.030738113, -0.05919069, -0.14155431, 0.09109957, -0.099060595, -0.10192779, 0.033825647, 0.11551892, -0.04282345, 0.020072978, 0.035168435, 0.10797329, -0.0584945, -0.024158757, -0.03585887), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.11656172, -0.03488785, 0.090906724, -0.0032958854, 0.11268224, 0.070826046, 0.008982598, -0.14222313, 0.0025792273, -0.07585458, -0.021171344, -0.10144507, 0.24918565, 0.004032981, 0.032430686, -0.012328044), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.22021858, 0.06875914, 0.004574366, -0.0694593, 0.11509186, -0.25873652, -0.08872615, -0.024206636, 0.15076822, -0.14054653, -0.045519873, -0.04547437, -0.22077747, -0.054121707, 0.049612578, 0.10545096), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.069911204, 0.078573205, -0.073091984, 0.015637126, -0.23398215, 0.12185918, 0.08496631, -0.063231654, 0.14004779, 0.07965737, 0.14457273, -0.057528477, -0.0971965, 0.10445598, -0.054162677, -0.11529022), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.12595661, 0.16308525, 0.09465576, -0.05046868, 0.1799443, 0.115778774, -0.13534002, 0.09609113, 0.107355125, -0.07263705, -0.04365324, 0.10355821, -0.023942605, 0.026093582, 0.009621531, 0.06096017), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.1272364, -0.07220049, 0.041847665, 0.17912698, -0.03009012, 0.06394436, -0.03263169, -0.04573203, -0.07620046, 0.42576316, 0.042653862, 0.13744949, 0.23633486, 0.10078774, -0.121353894, 0.12101121), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.03558598, -0.1297437, -0.05971473, 0.17683595, 0.1725135, 0.052228056, 0.08043958, -0.09891566, 0.03620246, -0.07612062, 0.0671727, 0.037559096, -0.14037324, 0.021277385, -0.04257818, 0.17619017), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.11092632, -0.00013030393, 0.12967736, -0.22887622, -0.08721344, 0.054407217, 0.07632402, -0.08394438, -0.071129434, 0.11594225, -0.058196247, 0.020942273, -0.123769015, -0.114318974, 0.03252267, 0.07218774), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.11842664, -0.044281907, 0.07725646, -0.09330976, -0.028858917, -0.10954367, 0.04575166, -0.026068112, -0.06559436, -0.2284913, -0.19561197, -0.0016185943, 0.11867088, -0.038570896, 0.08526274, 0.019519364), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.0822196, -0.0037142867, 0.08382291, -0.013849318, -0.13749887, 0.044966772, 0.04564233, -0.00618037, -0.052107867, 0.033819627, -0.03494537, 0.024765901, -0.10504158, -0.028348709, -0.0089757275, 0.030026745), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.053351242, 0.056979094, -0.060212657, 0.14301975, 0.17891912, -0.032538075, 0.011639607, 0.035919394, 0.04533616, -0.12939154, -0.041703038, 0.0071665174, -0.19303554, 0.018363694, 0.08923668, 0.020215489), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.038452573, 0.1614918, -0.022068001, 0.0030016324, -0.2680856, 0.21928017, 0.085351996, 0.049881425, 0.058913168, -0.044736963, 0.016097903, 0.21123125, 0.079624146, -0.16535924, 0.06877731, 0.1305827), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.05783186, -0.219528, 0.0816723, 1.3595931e-05, -0.02902699, -0.12913156, -0.40516803, -0.028480045, 0.12000909, 0.081304125, 0.053406257, -0.08878543, 0.02251961, 0.12547138, -0.20464425, -0.05598181), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.15702735, 0.21000047, 0.08434562, 0.27938238, -0.03068116, -0.004006084, 0.19768693, 0.066732645, -0.055060755, -0.16314429, 0.028655436, 0.021063909, -0.028578848, -0.008238495, 0.12807982, -0.0071345936), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.17309058, -0.18169925, -0.14182782, 0.107684694, -0.1117235, 0.19443877, 0.101682656, 0.030993309, -0.12313995, -0.048883304, -0.11149261, 0.12847972, 0.28405818, 0.20219465, 0.015797788, 0.123306856), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.07962997, 0.06323938, 0.045708194, 0.0020409136, -0.0022456956, 0.010837137, 0.014872806, -0.060870074, 0.13772255, 0.005320253, 0.05848208, 0.14984395, -0.037590872, -0.07464743, -0.16873243, 0.019905593), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.13775061, 0.032707028, 0.13456069, 0.05904891, 0.046821773, -0.22715594, 0.056300808, -0.15724476, -0.07337338, 0.19666758, -0.013393664, 0.04086994, 0.12254266, -0.08695188, -0.11076954, -0.15678991), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.07177161, 0.01181348, -0.07497793, -0.085427515, 0.039396375, -0.0035293372, 0.20881353, -0.057439566, 0.15257393, 0.16040947, -0.027684899, 0.16330487, -0.054777898, 0.07572324, -0.03833461, -0.017093522), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.000963837, -0.00780663, -0.023343472, 0.18377425, 0.32722053, -0.08156815, -0.11247523, -0.12714005, 0.18326895, -0.16434003, 0.052783884, 0.2168339, 0.03372009, 0.024008008, -0.1949321, -0.11585071), target1);\n\ttarget1 = MulAdd(na3, MF4x4(0.07887302, -0.043003492, -0.16841368, 0.023287356, -0.15838705, 0.21706697, 0.16976407, 0.11461476, -0.062454503, 0.08966307, 0.10723603, -0.029792916, -0.03903073, -0.06255455, 0.025979951, -0.09530182), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(-0.0917689, 0.12646815, -0.11529587, 0.06925059, -0.18619959, -0.05243984, 0.16720963, -0.07121025, -0.04476961, 0.0074207215, 0.16076323, -0.14866208, 0.042807475, -0.08767046, -0.005694572, -0.11727041), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(-0.0062040854, -0.00097002264, -0.058491956, -0.035364915, 0.040115915, -0.10968144, 0.046607487, 0.23429875, -0.11210956, 0.034507494, -0.07195393, -0.16490693, 0.047223017, -0.044811487, -0.11060463, -0.14174072), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(-0.14469296, 0.0862561, 0.027785733, 0.005940194, -0.0062618204, -0.015266768, -0.067160904, -0.17241345, -0.060631767, 0.024863401, 0.056833714, -0.063885145, -0.14061876, -0.042549785, 0.036430426, 0.14348027), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(0.3022943, -0.19899924, 0.19672908, -0.09840718, 0.14039348, 0.105976574, -0.14415087, -0.06547584, 0.3070416, 0.40989116, 0.009514016, 0.018336622, 0.08806178, 0.07710675, -0.03551256, -0.04064369), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(0.16016869, -0.12516344, -0.011240568, -0.1443897, -0.009084668, -0.1618983, 0.06672594, -0.30417737, -0.09547601, -0.09057253, 0.08657728, 0.036226142, -0.0022018533, 0.12780087, 0.0029589643, 0.12111095), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(-0.1765741, 0.03653064, -0.03139237, 0.057462048, 0.16041194, -0.2303424, -0.11946362, -0.1788824, 0.098096356, -0.18419504, 0.021373387, -0.1157983, 0.079671614, -0.03361971, 0.06394305, -0.0101026185), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(-0.01576709, 0.11476761, -0.041474868, 0.13242105, -0.056526344, 0.024517184, -0.21629438, -0.010624098, -0.0053918827, -0.19187245, -0.12927179, -0.08489797, 0.055730473, -0.043147404, -0.03800261, 0.048107833), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(-0.0014053301, -0.046847776, 0.004571536, 0.18300104, -0.053145096, 0.057801194, 0.2322556, 0.22864385, 0.0040904162, -0.037985127, 0.041369, -0.065972395, 0.16685532, -0.091719486, -0.1425869, -0.10230388), target1);\n\t\n\tMF4 target2 = { -0.088215575, 0.02001751, -0.0013112888, -0.0031276105 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.12893085, -0.12928686, 0.12365234, -0.021265296, 0.15424967, -0.0063038417, -0.027432516, -0.10297197, 0.118751466, -0.058228746, -0.10025376, 0.0027489034, 0.0073948866, 0.040659092, 0.08120041, -0.12702137), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.02242042, 0.114516795, -0.042158883, -0.14150862, -0.18976203, 0.109531336, 0.03548168, -0.1681465, -0.13782959, 0.07437085, -0.045712702, -0.09431652, -0.0029079607, 0.05180383, 0.07098421, -0.2149384), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.3218102, 0.0013506162, 0.12795919, -0.10901241, -0.08859676, -0.06861104, -0.014102381, 0.0051467894, -0.16305672, 0.022653125, -0.019810826, -0.05701206, 0.1842382, -0.074959196, -0.07368022, -0.046023685), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.099247254, -0.2161521, -0.095611826, -0.0179061, -0.0067561218, 3.99846e-05, 0.01254028, -0.056954045, -0.0075805853, -0.082335606, -0.053469665, 0.25761604, -0.049429264, -0.08763215, 0.051362507, -0.030518934), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.13518652, 0.05463841, -0.07654066, 0.023629244, -0.23324661, 0.04781438, -0.20902736, 0.10330495, -0.16452856, 0.235407, -0.022236459, 0.036046103, -0.08613043, -0.012954787, 0.043111194, 0.021807853), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.11316856, -0.027803158, -0.026492868, -0.0030439082, 0.063926555, -0.09612654, -0.22492981, -0.13748476, 0.06954571, -0.008035041, -0.04846681, -0.23352449, -0.06676289, 0.13268302, 0.037954323, -0.0342029), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.18148762, -0.06975972, -0.21924862, -0.03831989, 0.09057307, -0.06784279, 0.05716139, 0.032582354, 0.32728904, 0.03561464, -0.06930132, 0.13582717, -0.04723415, 0.053298444, -0.1580453, 0.029922115), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.13381054, 0.06294187, 0.04273711, -0.089835554, -0.042215306, 0.04515037, -0.01970211, 0.07447383, -0.12915656, 0.087721184, 0.122159, 0.17817122, 0.05233303, 0.053456925, -0.22769327, 0.17450784), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.062324032, 0.056449406, 0.070776984, 0.070366256, 0.15072031, -0.20342071, 0.118405774, -0.11357599, 0.23603258, -0.17724364, 0.028237892, 0.07491812, 0.015638597, 0.20543055, -0.05863285, 0.06565301), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.07647028, 0.2292153, 0.019423103, -0.06965646, -0.107311614, -0.19989595, -0.06673964, -0.027954143, 0.0017375473, -0.048038438, 0.052211836, -0.042501964, -0.1372413, -0.2437919, -0.15933524, -0.07229055), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.023719285, 0.05654754, 0.09026341, 0.020072227, -0.12716366, -0.013687293, -0.1312343, -0.06847118, 0.016806766, -0.10526531, -0.011248162, 0.12535807, -0.12538499, -0.042496204, -0.076355785, -0.0017766576), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.039450683, -0.049502935, -0.009162741, 0.015372251, -0.14449993, -0.06564991, -0.093242005, -0.018039258, -0.2410318, 0.020259766, -0.040783074, -0.05092842, -0.023994599, -0.037968505, 0.052206438, -0.10967312), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.13721816, -0.1571525, 0.09432105, 0.023277072, -0.073701076, -0.13941942, -0.02705892, 0.06508469, -0.17687775, -0.07433723, -0.11237514, -0.015321937, -0.31670073, -0.09665636, -0.11843665, -0.030077526), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.09092922, 0.088340946, 0.1001261, 0.05962185, 0.07731374, -0.09623944, -0.03218285, 0.04484794, -0.10394964, 0.111483194, -0.07343945, 0.15182221, 0.27208853, 0.024986237, -0.058641106, -0.039870527), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.03685333, -0.014777545, -0.0064948527, 0.060336027, -0.04251398, -0.004589828, -0.025893224, -0.075040996, 0.007964778, 0.22512783, -0.033568367, 0.052608117, 0.2143682, 0.21318182, -0.06253117, -0.055562623), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.07906376, -0.015447189, -0.045265637, 0.066810004, 0.07202818, -0.07874254, -0.071680374, 0.009017687, 0.07042464, 0.016754108, 0.017237889, 0.0106343115, -0.042138606, -0.11085673, 0.14738452, -0.10718694), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.07745664, 0.16073377, -0.01899363, 0.07030874, 0.058903817, -0.065876774, 0.020186676, 0.09385477, 0.14517148, 0.053237557, -0.16942556, -0.04716224, 0.13748227, 0.17071299, 0.12176032, 0.07409275), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.09208682, 0.029487375, -0.057159107, 0.025398627, 0.12468226, 0.034707896, 0.010541767, -0.032418035, 0.11508723, 0.050812677, -0.08127881, 0.0052238777, 0.15403835, -0.17993934, 0.071115926, 0.0059663), target2);\n\ttarget2 = MulAdd(a3, MF4x4(-0.053597223, -0.00758354, -0.011711322, 0.12876037, -0.022196915, 0.045487616, 0.02135921, 0.010447794, 0.063635394, 0.09686383, -0.05077074, 0.072695896, -0.02443565, -0.045984466, -0.025993166, -0.08304488), target2);\n\ttarget2 = MulAdd(b3, MF4x4(0.1321831, 0.017644621, 0.16513684, 0.0659792, 0.09676037, -0.07867503, 0.04669573, -0.04401741, 0.23034973, 0.10561144, -0.1184282, 0.13691261, -0.18894893, 0.21760973, 0.08807475, -0.19776659), target2);\n\ttarget2 = MulAdd(c3, MF4x4(-0.053137053, -0.07991928, -0.09902317, 0.017081713, -0.021857716, 0.011578801, -0.0009752623, 0.043588534, 0.11997389, 0.0027668865, -0.09973271, 0.065404624, -0.07151649, -0.017840967, -0.0188252, -0.14957094), target2);\n\ttarget2 = MulAdd(d3, MF4x4(0.13721272, 0.04459704, -0.0069692475, 0.07410797, -0.13855937, 0.021286163, -0.04160423, -0.05980007, 0.027626112, 0.092742406, -0.032267787, -0.00358655, 0.12470872, 0.09738248, 0.06565896, -0.1076945), target2);\n\ttarget2 = MulAdd(e3, MF4x4(0.12965658, -0.110055126, -0.08762725, 0.031792786, 0.11524638, -0.09530289, 0.07955128, 0.0049232226, 0.07190261, -0.010207877, -0.26513076, 0.045152593, -0.16932993, 0.091321826, 0.11550899, -0.100929074), target2);\n\ttarget2 = MulAdd(f3, MF4x4(-0.1674921, 0.0907835, -0.033396322, -0.03168371, 0.013580539, 0.047018647, 0.028963672, 0.04756761, -0.08714202, -0.2602012, -0.12279786, 0.18663418, -0.07781514, -0.013219039, 0.006731288, 0.005795019), target2);\n\ttarget2 = MulAdd(g3, MF4x4(0.01206949, -0.047031406, -0.060451232, 0.027200127, -0.1178311, 0.14014901, 0.25840858, -0.14889579, -0.11640469, -0.01811908, -0.09255012, -0.08351582, 0.086520575, -0.021090247, 0.08717082, 0.043429427), target2);\n\ttarget2 = MulAdd(h3, MF4x4(0.020278929, -0.15339202, 0.041678756, 0.07180138, -0.0635027, -0.088976234, -0.04092133, 0.07997308, -0.134963, -0.015960857, -0.060887713, -0.07916197, 0.20483045, -0.12640053, 0.10478231, 0.04803776), target2);\n\ttarget2 = MulAdd(i3, MF4x4(-0.03549656, 0.033666074, 0.20228225, -0.096664, -0.00096604426, 0.20793179, 0.09613217, -0.053552672, 0.051677585, -0.018252494, 0.07543575, 0.006295734, 0.046456967, -0.16520908, 0.0120992735, -0.015491354), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.09486195, 0.0862073, 0.04189838, 0.0026638226, 0.09820532, 0.1007168, -0.022186898, -0.05491984, -0.13535279, 0.046514615, 0.09563633, 0.021364952, -0.23145446, 0.05070801, -0.022965223, -0.18874952), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.05885208, -0.022751214, -0.015712557, 0.157172, 0.05131988, -0.09524327, -0.045114886, 0.05928359, -0.001745961, -0.035245676, -0.010552595, -0.06321781, -0.15489094, 0.017822266, -0.06018634, 0.06429225), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.1243866, 0.014742004, -0.07896682, 0.2792386, -0.08055696, -0.0067778644, 0.0407617, 0.1389886, -0.02221008, 0.07494927, -0.11067403, 0.026464086, -0.009520921, 0.015791653, 0.021943323, 0.12500213), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.08929889, 0.09244356, 0.130978, -0.03720041, 0.07869226, 0.13067861, 0.104627624, -0.01922214, 0.03561331, -0.031736456, 0.15136853, 0.0128885005, -0.16457924, -0.028147755, 0.13005957, -0.07908654), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.020705838, 0.0936515, -0.026146421, 0.030703338, 0.032063864, 0.14091234, -0.021708539, -0.056303035, -0.007502981, -0.1276548, -0.15350288, -0.04722333, -0.049264792, -0.016106946, 0.035777904, 0.10648118), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.16387826, -0.059457906, 0.009808255, 0.030755969, 0.05709708, 0.0025975339, 0.021356652, -0.023887865, -0.15327913, -0.03702513, -0.041953377, 0.0049483287, 0.1434395, 0.08557114, -0.07722993, 0.22481233), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.20757784, -0.05194353, -0.17085314, -0.12557504, -0.056353815, 0.06583933, 0.005532102, -0.0040489454, 0.23847903, -0.08254601, -0.20940065, 0.1251241, 0.14838001, -0.12861559, -0.04664337, 0.07232125), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.010124613, -0.07096996, -0.1366236, 0.0018079067, -0.041023795, 0.12729517, 0.24600507, -0.07845422, 0.31226948, -0.023518091, -0.0023672595, 0.058046557, 0.1718256, -0.05916957, 0.0067618093, 0.08826252), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.0013852714, -0.02530485, 0.12499248, -0.047640886, 0.06515882, 0.009700978, -0.005210036, -0.0332508, -0.135034, 0.07050036, 0.06152617, 0.02243357, 0.20835938, 0.041327897, 0.047491845, -0.017284496), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.2511675, 0.2016235, -0.22534974, -0.29850873, -0.014898309, 0.034321953, -0.14487329, 0.029454721, 0.05068056, -0.09661999, 0.00070758525, 0.06925706, -0.19870853, -0.0871149, 0.13158658, -0.09995704), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.22352318, -0.073506966, -0.11625505, 0.0049028546, 0.029848805, -0.06952766, -0.043236732, 0.13255614, 0.093998544, 0.17581578, -0.0004033081, -0.12263665, -0.17329359, -0.11587317, 0.059647266, -0.02954624), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.057583325, 0.056015383, 0.11960743, 0.033696633, -0.14805156, -0.10933173, -0.08482661, 0.07473009, 0.040999115, -0.0995941, -0.005304712, 0.04729056, -0.09739792, 0.07000572, -0.12560466, 0.023240168), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.1967497, 0.093729794, -0.05857918, -0.12817049, -0.034558292, 0.016039368, -0.12012142, -0.017481307, 0.0391479, -0.10992257, 0.015143992, 0.01391454, 0.051010676, 0.012996939, 0.041216355, 0.08623047), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.21069938, -0.066038206, -0.015458416, -0.097732425, 0.051942978, -0.03459923, -0.05756448, 0.14080645, 0.055423364, -0.06490901, -0.07402898, -0.16263707, -0.07290088, -0.058713708, 0.06723124, 0.069584474), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.09618103, 0.055036288, 0.09001422, 0.027986465, -0.018399306, -0.07295329, 0.06687392, 0.06653489, -0.06524778, -0.11760177, -0.004764932, -0.10559294, 0.16195896, -0.22127731, -0.0060094665, -0.0073161777), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.006081162, 0.09074974, 0.1387847, -0.012516454, 0.040442165, 0.024901407, 0.019887343, -0.012545043, 0.040630046, 0.06390039, -0.088361576, -0.07775115, -0.016567666, -0.048221476, 0.00507668, 0.00015517596), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.27623588, -0.29454315, -0.09558771, 0.016047282, 0.12541397, 0.06766668, 0.012096932, -0.051367834, -0.20859776, -0.20424904, 0.1920475, -0.12987578, 0.08319857, -0.05495395, 0.043287907, -0.027431363), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.1666435, -0.10736637, -0.039772738, 0.06555994, 0.06329126, -0.004524732, 0.027252503, -0.018687485, -0.0827318, -0.17353283, -0.17264223, 0.0050896755, 0.08507919, -0.19379872, 0.14229794, -0.0837528), target2);\n\ttarget2 = MulAdd(na3, MF4x4(0.10103022, 0.2500691, 0.11863092, 0.04184915, 0.07104669, 0.11822421, 0.040399753, -0.05503637, -0.03777729, -0.0552892, -0.0367129, -0.07652974, -0.06387571, 0.09680754, 0.030113626, 0.07385613), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(0.21662953, -0.047714498, -0.100133225, 0.14122888, -0.053247962, -0.13878773, 0.043139406, 0.10316825, -0.050836936, -0.1023108, 0.07342308, -0.013418398, 0.1517183, -0.038232815, 0.16094449, 0.18475303), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(0.10745382, 0.14385694, 0.16242811, -0.022071859, -0.06788635, 0.09044915, -0.09642871, -0.032185104, -0.15011486, 0.06751199, -0.0030307414, 0.045759566, 0.17598514, 0.069681115, 0.18387364, 0.15741494), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(0.0355877, -0.01989782, -0.021107944, 0.1195755, 0.04636706, 0.15067361, -0.03446434, 0.091468826, -0.054333266, -0.091928974, 0.077975504, 0.051997006, -0.2611878, 0.012728117, 0.038493883, 0.062820844), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(-0.09769422, 0.0486323, -0.09317317, -0.09185559, -0.30752286, -0.11381268, -0.053577766, -0.17922285, -0.14485466, 0.10500625, 0.22108263, -0.12928547, 0.33743355, 0.13309081, 0.13873322, 0.05503852), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(-0.19131194, -0.10878378, -0.04047478, -0.024106042, -0.25611252, 0.10455126, -0.0774767, -0.005242356, 0.14342257, 0.096795335, 0.11119688, -0.06816075, 0.045405596, 0.11205132, 0.22008072, 0.010171907), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(0.03641146, 0.025730135, 0.088947766, 0.09581084, 0.18514295, 0.05196274, -0.09955554, 0.043848306, 0.09665611, -0.05949442, -0.037989084, 0.043330964, -0.046047594, 0.090160884, 0.06574573, -0.018593606), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(-0.26031247, -0.05067085, -0.07451936, -0.01263683, 0.13966191, -0.25842324, -0.115060754, -0.08976801, 0.028517777, 0.045588367, 0.2297454, 0.023451945, -0.13475016, 0.048971854, 0.04935944, -0.10817461), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(-0.044189412, 0.12302195, 0.05076291, -0.072933994, 0.22576593, 0.12513146, -0.020687684, -0.0017186786, 0.056137685, 0.07280331, -0.0060697175, 0.017558591, -0.19459185, -0.08931442, 0.03579924, -0.00051510497), target2);\n\t\n\tMF4 target3 = { 0.13923971, 0.015290389, 0.012198976, 0.04480318 };\n\ttarget3 = MulAdd(a1, MF4x4(0.055708, -0.15470836, -0.18314275, -0.018972168, 0.0008025653, -0.04802735, 0.0037216125, -0.008888557, -0.044309124, 0.1032128, -0.09535111, 0.1075431, -0.061698865, -0.136952, -0.08298975, -0.03202739), target3);\n\ttarget3 = MulAdd(b1, MF4x4(0.047130957, -0.13275343, 0.10046242, 0.14484632, -0.18798989, -0.01724291, -0.095696434, -0.06524662, -0.12395302, -0.057923865, 0.013821919, -0.19095008, -0.10312008, -0.067719445, 0.03039217, 0.002102062), target3);\n\ttarget3 = MulAdd(c1, MF4x4(0.07914871, 0.03840256, -0.11512143, -0.19842817, -0.17087726, -0.117287606, 0.26407588, -0.028159037, -0.16280699, -0.1019244, 0.026774779, -0.06759367, 0.0024644772, 0.033856, -0.007847236, 0.028765628), target3);\n\ttarget3 = MulAdd(d1, MF4x4(-0.07034455, 0.076142974, -0.22090098, -0.0905723, -0.06417895, 0.119223125, -0.26432338, -0.04371924, 0.16288432, 0.026691884, -0.017952124, 0.08947346, -0.1286289, -0.01910609, 0.04351911, 0.0340226), target3);\n\ttarget3 = MulAdd(e1, MF4x4(0.14330725, 0.090986304, -0.1424256, 0.054584663, 0.043702085, -0.08414303, 0.001994348, -0.022233546, 0.03748274, 0.12121618, 0.26035795, 0.13496856, 0.3061306, 0.019047879, -0.043746773, 0.18116328), target3);\n\ttarget3 = MulAdd(f1, MF4x4(-0.051031455, 0.0696392, 0.04753365, -0.20600007, 0.08226225, -0.055646114, 0.15932508, 0.0419586, -0.11326543, 0.027461074, -0.041595474, -0.10200617, 0.004414234, -0.085846625, 0.1470303, 0.15096648), target3);\n\ttarget3 = MulAdd(g1, MF4x4(0.101050586, 0.15982646, 0.008072791, -0.11342946, 0.08270196, 0.08548463, 0.042926773, 0.06380147, 0.11114159, 0.07615307, -0.01628438, -0.082144625, 0.029875848, -0.020052845, 0.014533401, -0.027843053), target3);\n\ttarget3 = MulAdd(h1, MF4x4(-0.0279601, -0.09164763, 0.11475252, 0.04266532, 0.17664109, -0.044317525, 0.038787685, 0.00897195, -0.065523826, 0.013996353, -0.109297335, -0.029989313, -0.025986332, -0.09013683, 0.24884683, 0.06528543), target3);\n\ttarget3 = MulAdd(i1, MF4x4(-0.09584907, -0.15118982, -0.015254367, -0.12179126, -0.12146391, 0.15733819, -0.033256296, -0.061760996, -0.036719803, 0.16471127, 0.18006523, -0.056930948, 0.03617248, 0.07113426, -0.069748655, -0.081067815), target3);\n\ttarget3 = MulAdd(a2, MF4x4(0.1271724, -0.082678355, 0.07997786, 0.06285082, 0.02332232, 0.05007377, -0.094914205, -0.06553253, -0.10122091, 0.012112823, -0.11796572, 0.021247976, 0.0654767, -0.091576956, 0.08175131, -0.010552305), target3);\n\ttarget3 = MulAdd(b2, MF4x4(0.12505153, -0.037628997, -0.022449989, 0.06686099, -0.25006896, 0.13324498, 0.041733105, 0.2241118, 0.024380242, 0.09950468, 0.078383565, 0.11634127, 0.077024244, -0.07780778, 0.07760342, 0.06282892), target3);\n\ttarget3 = MulAdd(c2, MF4x4(-0.13915282, 0.16686817, 0.030251533, -0.0035493453, -0.13203144, 0.033648454, 0.0024875028, -0.0007983041, -0.105395414, 0.1536483, 0.050240528, 0.11495208, -0.026644144, -0.05793395, -0.12098678, -0.065910175), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.02292821, 0.030319002, -0.1293214, -0.0096194055, -0.01278381, -0.00087727525, 0.19325659, 0.025518872, -0.05107456, -0.14991362, -0.05873866, 0.12859605, -0.20932005, -0.11987684, -0.051870637, 0.001319446), target3);\n\ttarget3 = MulAdd(e2, MF4x4(-0.022754941, 0.043839425, -0.08278873, -0.21222612, 0.0015371124, -0.010085336, 0.09510605, 0.07335702, -0.106798455, -0.12928678, 0.015216733, 0.031399984, -0.07811234, -0.119671986, 0.17570181, 0.029809073), target3);\n\ttarget3 = MulAdd(f2, MF4x4(-0.11764911, -0.16164766, 0.08784963, -0.019233093, -0.076887585, -0.058506478, 0.08077385, -0.16966046, -0.24188527, -0.07365656, 0.09544133, 0.19833234, 0.09107925, -0.020520048, -0.05825717, -0.09854415), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.03600886, -0.029253786, 0.048200432, 0.022130603, 0.13826382, -0.13885193, 0.20007242, 0.14829256, -0.017307537, 0.03851602, 0.020379594, 0.07832595, -0.07762187, 0.096413285, -0.079333976, -0.0061714468), target3);\n\ttarget3 = MulAdd(h2, MF4x4(0.0413019, -0.07368758, 0.13919644, -0.12122368, -0.029388634, 0.10483587, -0.051654328, 0.015226432, -0.04520832, -0.026331404, 0.20372365, 0.06359042, -0.013045257, -0.10666548, 0.08962036, 0.20432319), target3);\n\ttarget3 = MulAdd(i2, MF4x4(0.013157089, -0.034036867, 0.0819, 0.014009891, -0.03467534, -0.12812413, 0.18123335, -0.0781033, -0.2039025, -0.16503748, 0.02498213, 0.023839379, -0.13192852, -0.09351754, -0.045935795, -0.088439226), target3);\n\ttarget3 = MulAdd(a3, MF4x4(0.17598471, -0.16652712, 0.04906223, 0.07156945, -0.019004462, -0.07228772, -0.030515088, 0.12137358, 0.049442984, 0.003075852, 0.0820677, 0.09503947, 0.15167919, 0.03480622, 0.055544864, 0.108532205), target3);\n\ttarget3 = MulAdd(b3, MF4x4(0.06424813, 0.0047392054, -0.06604298, 0.065024786, -0.027760155, 0.013289014, -0.05930856, -0.22680816, -0.12812522, 0.046711236, 0.11081086, 0.12093126, 0.08999833, 0.09398781, -0.00391463, -0.013292052), target3);\n\ttarget3 = MulAdd(c3, MF4x4(0.078218855, -0.096875966, -0.1891451, -0.075190805, 0.045807663, 0.038455345, 0.1420045, 0.1738224, 0.06848118, 0.18028922, -0.07149378, -0.16228504, -0.15232347, -0.032611012, -0.07023075, -0.12920822), target3);\n\ttarget3 = MulAdd(d3, MF4x4(0.04663347, 0.0988432, 0.052362353, -0.112998225, -0.20248835, -0.19879234, 0.11022756, 0.10454231, -0.13743615, 0.047722638, 0.06637239, 0.016583467, 0.11989917, 0.0125074675, 0.053077225, -0.006272926), target3);\n\ttarget3 = MulAdd(e3, MF4x4(-0.08468045, 0.047544964, 0.04363399, 0.086961746, 0.08489796, 0.12409043, -0.13015386, 0.10092822, 0.14706169, -0.102444105, -0.074901864, -0.11254591, 0.029065747, 0.14046147, 0.07324801, -0.015313643), target3);\n\ttarget3 = MulAdd(f3, MF4x4(-0.0032504771, -0.025116406, -0.027151806, 0.04037948, -0.029422142, 0.053333733, 0.050427776, 0.2249123, -0.040938333, 0.05139012, -0.021061108, -0.21729107, 0.020586135, 0.04293995, 0.01888572, -0.15284136), target3);\n\ttarget3 = MulAdd(g3, MF4x4(-0.050343722, -0.08038014, 0.033975042, -0.078313686, -0.025870735, -0.10589425, 0.11806239, 0.11905227, -0.030429581, -0.10916684, -0.08828011, -0.032881964, 0.005728985, -0.14882843, -0.058584355, 0.07463933), target3);\n\ttarget3 = MulAdd(h3, MF4x4(-0.16999933, -0.027314415, 0.07264002, -0.013310814, -0.12945375, 0.016093813, -0.09084507, -0.12522581, 0.075081155, -0.012983989, 0.11086466, -0.020709865, -0.034555092, -0.13049836, -0.069538176, 0.120410606), target3);\n\ttarget3 = MulAdd(i3, MF4x4(-0.041815765, -0.1464541, -0.112602025, -0.17897187, 0.023695359, -0.007984221, -0.09087018, 0.03442271, 0.03562612, -0.022015946, -0.0067399153, 0.038907483, -0.11839428, -0.029512445, 0.032437507, -0.13424557), target3);\n\ttarget3 = MulAdd(na1, MF4x4(0.071081854, 0.064600624, 0.06933874, -0.00823228, -0.06739624, -0.05190142, -0.0063528903, -0.0056084343, -0.00883983, -0.1393001, 0.053884078, 0.024325706, 0.05893945, -0.075403966, 0.21418992, 0.099977955), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(-0.08398666, 0.06117285, 0.018424282, 0.13809077, -0.07201819, 0.051259644, -0.04685134, -0.017006194, 0.05818578, -0.11379136, -0.07999673, 0.23295905, 0.007356084, -0.020284122, 0.01972096, -0.13002637), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.06733669, 0.13325273, -0.0074489512, -0.052333828, 0.10027424, 0.065753184, -0.14192791, 0.09388921, -0.01242138, -0.14718066, -0.014753866, -0.065210566, 0.0699064, 0.06399467, 0.022925656, 0.06504557), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(0.101876445, 0.060120665, -0.0039521665, 0.12171173, 0.08321828, -0.008348968, 0.21899523, 0.058748752, 0.05547674, 0.16084124, -0.30695668, -0.10121366, 0.038653154, -0.044442136, -0.13552639, -0.019972218), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(-0.07638072, 0.050575085, 0.07061123, -0.18657742, -0.012248586, 0.019414622, 0.03041808, 0.033964135, -0.17578666, -0.023182971, -0.08965867, -0.13880058, -0.16309536, 0.17266575, -0.17651099, -0.24348558), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(-0.14318372, -0.002566858, -0.08960772, -0.025085822, -0.002079447, 0.010120887, -0.09830438, -0.11765062, 0.022343377, -0.025783114, -0.029105041, -0.1690584, 0.054205775, 0.02676286, 0.016028486, 0.120592885), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(0.14526334, 0.09275921, -0.12105369, -0.038859725, -0.10460921, -0.07294215, -0.15117784, -0.009182169, -0.0074104583, -0.12306472, 0.10073853, -0.08833498, 0.12785646, 0.0477829, -0.03402452, -0.07908741), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(-0.025889793, 0.014548265, 0.029771648, -0.07727682, 0.041268997, 0.08237273, -0.07722456, -0.036970172, 0.09158823, 0.044813015, -0.019759692, -0.112869464, -0.04357199, -0.07405958, -0.124406114, 0.20240584), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(-0.08556598, -0.01543713, 0.026491836, 0.018786263, 0.0418143, 0.0678302, -0.11946711, 0.09875955, 0.032350425, 0.007956311, -0.017798368, 0.1994804, -0.027886698, -0.17802258, 0.099619284, -0.011239122), target3);\n\ttarget3 = MulAdd(na2, MF4x4(-0.36927477, 0.0397264, 0.14609286, 0.065389656, -0.017865075, 0.113564, 0.14015609, 0.054612216, -0.0342091, -0.030581282, -0.0124170035, 0.03166654, 0.0691441, 0.032685474, -0.16473754, -0.10027306), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(-0.027898287, 0.037473463, -0.10177491, -0.15948737, -0.08981485, 0.0764328, -0.06419195, -0.085592985, -0.015740823, -0.052377183, 0.07003385, -0.065375, 0.051523235, 0.04340368, 0.10867685, -0.16211551), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(0.007090963, -0.02692243, 0.05383495, 0.14827509, -0.105507806, 0.17903765, 0.13615972, 0.0051062405, 0.08153507, 0.05720539, 0.08144471, 0.0929691, 0.09873174, 0.015049897, 0.23769383, 0.22297786), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(-0.08985236, -0.076104425, -0.01007519, 0.034048676, -0.0079994, -0.033355482, 0.16036998, -0.053786088, -0.093155414, 0.05777472, -0.13322827, -0.0813691, 0.24432959, 0.08388064, -0.04998493, -0.021753525), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(-0.016286949, -0.013190527, 0.053851254, 0.046217382, -0.21881466, 0.07689005, -0.12487547, -0.10310683, -0.02934103, -0.084740095, -0.054879915, -0.06519303, -0.15657778, 0.029417856, -0.13291313, -0.103854224), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(0.11695019, 0.0132304765, -0.07342763, 0.051626842, -0.115028076, 0.060695976, 0.030592902, 0.07832676, -0.033096768, -0.010105935, -0.0968592, -0.17071666, -0.10127668, -0.026590502, 0.05544078, -0.22503363), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(0.053587623, 0.013554916, 0.0018153706, 0.0050241053, 0.007109888, 0.049959134, -0.05311281, -0.09651782, -0.15021992, 0.041716605, 0.031055149, -0.04614386, 0.1668338, -0.15733725, 0.05505452, -0.04836756), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(-0.077188395, -0.058547955, 0.03399098, 0.09912107, -0.03275195, -0.13739568, -0.08232234, 0.06831293, -0.070714585, -0.046675168, -0.11615044, -0.119989395, -0.03131107, -0.09919153, 0.003835856, -0.014355857), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(-0.036215, 0.018938174, -0.2277618, -0.13956094, -0.07911919, -0.063870676, 0.08332067, 0.061556723, 0.038459476, 0.15356061, 0.007937132, 0.049789228, -0.0977846, -0.06580731, -0.092308916, 0.12081035), target3);\n\ttarget3 = MulAdd(na3, MF4x4(0.2513099, 0.2640892, -0.073300436, 0.0054640956, 0.021276288, 0.117054164, -0.10756317, -0.10598032, -0.045152083, 0.08731703, -0.18050396, -0.047249332, -0.073264845, 0.2116926, -0.114557505, -0.037215512), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(0.050166927, -0.04862805, 0.12805791, 0.0045228424, 0.056160565, 0.16115089, -0.07979352, -0.13011862, 0.05441418, 0.05797822, -0.13112345, -0.025642958, 0.05028941, -0.03776722, -0.030840462, 0.1557417), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(-0.13133498, 0.18729036, 0.09921492, 0.08116472, -0.045803983, 0.26691306, -0.074901216, 0.27606857, -0.008125972, 0.042414363, 0.13946676, 0.08842948, 0.08357318, -0.03671059, -0.16490772, 0.1321214), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(-0.065409325, -0.0521094, -0.16489594, 0.13398097, 0.059531994, 0.12008558, -0.3398136, 0.1359767, 0.19906406, -0.07998507, 0.030024389, 0.07742193, -0.17542136, -0.009348887, -0.07117329, 0.03772329), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(-0.058133047, -0.16653563, -0.0063957074, -0.095268235, -0.17482235, 0.059023783, 0.122984484, -0.34188032, -0.20109126, 0.18325296, 0.14055713, -0.10793852, 0.011646871, -0.061308336, -0.061341055, -0.021440659), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(0.078113094, -0.09492607, 0.08023962, -0.12604296, 0.109075874, -0.0154309245, 0.06649317, 0.06254269, 0.07463966, -0.073904, 0.05772617, 0.26408893, -0.006501864, -0.07582579, -0.10127933, -0.12402614), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.042008914, 0.09461804, -0.072341286, 0.080054514, 0.14365824, 0.04930919, -0.099516146, -0.008121477, -0.0093559455, 0.10470606, 0.02927817, 0.021877058, -0.054930143, 0.060183078, -0.0445749, -0.01106447), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(-0.0011625461, -0.0009088538, -0.023627708, 0.027977956, -0.11017806, -0.26268825, -0.011429036, -0.03145088, 0.020097682, -0.029126195, -0.06067577, 0.069737315, -0.059665915, 0.0012559243, 0.010016551, -0.09414456), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(0.11869016, 0.20854239, 0.0059952354, -0.05854996, -0.019913383, 0.111083195, -0.110878445, -0.09330779, -0.09355048, -0.023232793, -0.028993065, -0.016969083, -0.046021197, 0.120301165, -0.016181333, 0.121419206), target3);\n\n\ttex4[gxy] = target1;\n\ttex5[gxy] = target2;\n\ttex6[gxy] = target3;\n}\n\n//!PASS 5\n//!DESC Conv-4x3x3x24\n//!IN tex4, tex5, tex6\n//!OUT tex1, tex2, tex3, tex7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex5.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex5.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex5.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex6.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex6.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex6.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { -0.10820368, 0.052109707, 0.02658453, -0.089495786 };\n\ttarget1 = MulAdd(a1, MF4x4(0.027190452, 0.0060910345, -0.008547152, 0.17320672, 0.06733503, -0.08989388, -0.11381129, -0.13119508, 0.17610823, 0.14008744, 0.11026499, -0.21357119, -0.12159518, 0.06601897, -0.034462526, -0.06805842), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.032029126, -0.17226543, -0.041954145, 0.0048979674, 0.07860925, 0.014572411, 0.028136868, 0.023380699, 0.08869984, 0.066781156, 0.054681987, -0.2045243, -0.08229035, 0.034414835, -0.059059203, 0.123423755), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.06395383, -0.17036091, -0.09632937, 0.012491044, 0.023212979, 0.0016467012, -0.14969939, -0.0054716296, -0.023756625, -0.17073572, 0.052645937, -0.046952818, -0.16187616, 0.016573654, -0.14689016, 0.01019834), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.08193712, -0.07631574, -0.034434203, -0.014776324, 0.042278692, -0.1091839, -0.10186231, -0.08016388, -0.036329824, -0.27691782, -0.060328513, -0.21892257, 0.039156485, -0.015808448, 0.063398294, -0.045008957), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.1413053, -0.04867498, -0.06696859, -0.19319332, 0.06924486, 0.10097274, 0.027635809, -0.25744498, 0.043045916, 0.0080625275, -0.078129664, 0.07637907, 0.08766779, 0.009869328, -0.04087825, -0.107835), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.03251173, -0.088434696, -0.17404701, -0.047607604, 0.19409397, -0.011666368, -0.055492543, -0.06779062, 0.18695107, 0.12933761, 0.009486838, 0.1311912, -0.115678646, -0.15206106, -0.0692949, -0.2093353), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.024145309, -0.049262546, -0.13907287, 0.079473436, -0.042634737, -0.08339864, 0.10169023, -0.035110317, -0.07373649, -0.013395292, 0.040008895, -0.10978444, -0.11845739, -0.037593327, -0.06392299, -0.16472307), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.004245749, -0.017990965, -0.16623773, 0.058491312, 0.09169293, 0.095187806, -0.13777736, -0.058859553, 0.12717004, -0.21097647, 0.022213815, -0.060391422, 0.24919353, 0.027743122, -0.046835132, 0.05116896), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.031152543, -0.006675389, -0.20609254, 0.059274126, 0.057716113, 0.010372987, -0.09142726, 0.21968524, 0.1961135, -0.123708576, 0.16263476, 0.0062686265, 0.014965539, -0.007153107, -0.11750436, -0.1819159), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.0060456856, 0.19447032, 0.020056425, 0.11960106, -0.32920054, 0.015612619, 0.26585084, 0.10356409, -0.14553185, 0.00058173627, 0.05271928, -0.1452066, -0.060218733, -0.020830099, -0.10317562, 0.052465137), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.27812362, 0.058981895, 0.08322605, -0.0032075725, -0.15221997, 0.09520731, 0.04914796, 0.11785509, 0.013318352, -0.10878859, -0.15916938, -0.18263555, -0.05563399, 0.014653972, 0.14075124, -0.057639994), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.0041990946, 0.0977939, -0.10445638, 0.020671595, -0.051427394, -0.026315004, -0.17141542, -0.19342242, 0.18054874, -0.15474714, 0.13021101, 0.11164268, 0.09080831, 0.036626425, -0.082300276, 0.04107306), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.039793264, 0.14146407, 0.09102857, 0.03839708, 0.3213411, -0.037526935, 0.26050022, 0.05215784, 0.09104371, 0.1189446, 0.1516196, -0.06040828, 0.06444251, 0.03769561, -0.05992374, -0.09555435), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.3158521, -0.09743379, -0.16136461, 0.12563957, -0.047199205, 0.14175804, 0.26343465, 0.26441336, -0.08041752, 0.12452204, 0.00063982303, -0.13609244, 0.2354998, 0.00049649493, 0.015294863, -0.2654468), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.08709678, 0.15577738, 0.05169841, 0.07911614, -0.024321338, -0.015250634, -0.021416046, -0.081399545, 0.0089286, -0.2259574, -0.05061959, 0.065474294, -0.030742366, -0.03538435, -0.055524804, 0.15507819), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.045065995, 0.023564292, -0.037309248, 0.06847233, 0.056869928, 0.028326921, -0.17528678, 0.12857448, 0.035632227, -0.032293174, 0.104832776, 0.017997067, -0.114497125, 0.16921379, 0.12497218, 0.036903612), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.075956464, 0.09397675, 0.052031025, -0.105377, -0.12632053, 0.024217378, -0.07852874, 0.11461346, -0.04082505, -0.108691104, -0.04474934, -0.29607844, 0.034042932, 0.12287652, -0.052040536, 0.041936204), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.038337763, -0.018111536, 0.06151811, 0.05389662, -0.028443024, 0.08706589, -0.073154494, 0.05447222, 0.07653834, -0.19515261, -0.037622564, 0.08052142, -0.045269065, -0.0609327, -0.100833364, 0.10981602), target1);\n\ttarget1 = MulAdd(a3, MF4x4(0.094026454, -0.0031063687, -0.21620432, 0.13547292, 0.20105883, -0.025618935, 0.11542153, 0.10962974, 0.113429956, -0.14227262, 0.0060875076, -0.14874603, 0.09162232, -0.053849343, 0.04125156, 0.032826412), target1);\n\ttarget1 = MulAdd(b3, MF4x4(0.013978522, -0.13269992, -0.07810451, 0.070542224, -0.04335991, 0.13381198, -0.027735049, -0.15146035, 0.22838825, -0.064607605, 0.09653002, -0.12548994, 0.13875695, -0.07963269, 0.17691031, -0.09219512), target1);\n\ttarget1 = MulAdd(c3, MF4x4(-0.3725075, -0.10551151, -0.015794966, 0.11881437, 0.032990977, -0.08120358, -0.028089223, 0.07270803, 0.09375988, -0.19002074, 0.042594276, -0.14296396, 0.058286652, 0.027516257, -0.06983339, -0.21678405), target1);\n\ttarget1 = MulAdd(d3, MF4x4(-0.07584593, -0.030345742, -0.102612115, -0.008622554, 0.19179675, -0.007445088, -0.0055725924, 0.045661647, 0.15045294, 0.05527889, -0.16074698, -0.11140143, -0.10332519, 0.0775829, 0.3479224, -0.09605363), target1);\n\ttarget1 = MulAdd(e3, MF4x4(0.24224567, -0.10463845, -0.004708288, -0.037463564, -0.174914, -0.12728058, -0.09033664, -0.07400692, -0.14376171, 0.047589123, 0.12197598, 0.10113545, 0.27015212, -0.034403134, 0.1424642, 0.160263), target1);\n\ttarget1 = MulAdd(f3, MF4x4(-0.13663313, -0.1106191, 0.011357531, -0.22931215, -0.019929864, -0.10682277, -0.055398542, 0.066238664, -0.085308366, 0.04024022, 0.12161912, 0.08610841, 0.09498895, -0.06681962, 0.13027692, -0.0019338574), target1);\n\ttarget1 = MulAdd(g3, MF4x4(-0.03641036, -0.011318962, 0.110239714, 0.11487314, -0.0893917, 0.15007862, 0.027590204, 0.09350642, 0.024954673, 0.12835681, 0.03920746, 0.09515919, -0.1465032, -0.030845147, -0.1298204, -0.13092597), target1);\n\ttarget1 = MulAdd(h3, MF4x4(-0.053689882, -0.013590492, 0.14078104, -0.02906744, -0.028918952, -0.05751785, -0.15884842, -0.26478568, 0.13566354, 0.12888497, -0.07389985, -0.10991238, -0.04350177, 0.056619987, -0.007795586, 0.20150684), target1);\n\ttarget1 = MulAdd(i3, MF4x4(-0.24407062, 0.21552294, -0.00949639, 0.06383184, -0.021686498, -0.3234789, 0.00095171423, 0.16604368, 0.21007693, -0.23288599, 0.14941412, -0.23804995, -0.041001838, 0.122981116, -0.08457904, 0.31631222), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.03347639, -0.11116802, -0.024119927, -0.13334364, -0.06425279, 0.034693595, -0.042770308, -0.17312396, -0.067923695, 0.016072923, -0.11040154, -0.17093144, 0.0015578474, -0.29394698, 0.107074894, 0.27303827), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.0611658, 0.019790849, 0.06787951, 0.10454345, -0.015665758, 0.0151002975, 0.03526049, -0.103849605, 0.18519226, 0.13797036, -0.061827153, 0.049401954, -0.14499283, -0.019294523, -0.059974186, 0.08248854), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.10331019, 0.013611227, 0.06224777, 0.051212363, 0.07831132, 0.10166972, 0.06203761, -0.18489413, 0.15709174, 0.10225166, -0.047563914, 0.07839388, 0.111176215, -0.17445758, -0.025798218, 0.039074145), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.0126109915, 0.1351571, -0.036555156, 0.010697993, -0.13778222, 0.03346138, -0.0049093324, -0.15003881, -0.03876987, 0.07914351, 0.047344975, 0.11449459, 0.063460924, -0.08697232, 0.10283146, 0.051968753), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.23186366, -0.06041623, -0.16257766, 0.24217394, -0.023535172, -0.101410136, -0.108250454, 0.107450925, 0.034496274, -0.028800279, 0.021022853, 0.03616355, 0.02028369, -0.08332956, 0.10570706, 0.09971033), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.04147743, 0.015145005, 0.120189026, -0.068185546, 0.046765327, 0.06456099, -0.1020187, 0.021370325, -0.040851895, -0.03208752, 0.048594363, -0.1198498, 0.068069115, 0.041555826, -0.17036118, -0.01932193), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.056585032, 0.08170861, 0.16936389, 0.12775362, -0.06250441, 0.003437123, -0.1626591, -0.044595372, 0.05609032, -0.013985337, 0.12408558, -0.023731874, 0.06669848, 0.015816472, 0.02028663, 0.15866788), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.08446122, 0.18007189, -0.029043732, -0.011163938, -0.07911146, -0.08956735, 0.01947308, -0.14794883, 0.006629651, 0.038349632, -0.00968828, -0.025770634, -0.0773972, 0.005243162, -0.024193848, 0.13965817), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.11081664, 0.014651672, 0.17688385, -0.105908446, 0.10568161, -0.0114132725, -0.07771328, -0.07368131, -0.08784887, 0.000283126, -0.062638454, 0.10225453, 0.03358641, 0.022887172, -0.05419985, 0.13735344), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.10541027, 0.020751795, -0.09398483, -0.005489149, -0.29769272, 0.23499025, -0.006691222, -0.053000394, 0.010389082, 0.17603737, -0.00460357, 0.022672169, 0.184428, -0.05348439, -0.056355994, -0.09495365), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.0008888126, -0.07352942, -0.115427524, 0.039416842, 0.035075482, 0.064889066, -0.0403974, -0.16294649, 0.15031078, 0.15975513, 0.050580446, 0.17225175, -0.15042374, 0.1044681, -0.020698681, 0.02006514), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.04267897, 0.013600698, -0.06688994, 0.06905151, 0.0050800233, 0.074999094, -0.013612523, 0.24658114, 0.09293767, -0.025656242, -0.12935342, -0.053077035, -0.10818674, 0.10712919, 0.10325497, 0.026742944), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.057898734, -0.079083994, -0.014326936, -0.012377722, -0.081788406, 0.15159677, 0.009859493, -0.17867896, -0.15591973, 0.052071776, 0.08789029, -0.07519902, -0.05066772, -0.062322497, 0.115281776, 0.036021948), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.18813054, 0.08132526, 0.13596503, -0.048313983, 0.38620186, 0.2359013, 0.037454955, -0.1447747, 0.067145094, -0.0005996448, 0.1840271, 0.05323988, -0.23532471, -0.0116497595, 0.2535536, 0.061556816), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.0129419975, -0.17229463, -0.09436541, 0.10180941, 0.11799404, 0.031389806, -0.07010608, 0.0046768254, 0.10469505, 0.17582805, -0.22139175, -0.14195564, -0.02746759, 0.1141511, -0.029968468, 0.07361169), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.0769514, 0.017098518, 0.082954735, 0.025435448, -0.21867949, -0.07731593, 0.031622138, -0.013084908, 0.053551342, 0.08035211, -0.06418101, -0.14921196, 0.18860011, 0.029326573, -0.0472363, -0.011997928), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.01178925, -0.07107687, -0.09878797, 0.1556755, -0.055202577, -0.040342607, -0.1087109, 0.22202995, -0.02957374, 0.063299805, -0.0226507, 0.09204488, 0.08155232, -0.022691648, 0.061842438, -0.003388257), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.0058287196, -0.013047009, -0.15424606, -0.056314673, -0.06388496, 0.0222499, -0.11188726, 0.2635107, -0.05954232, 0.1667741, -0.12295786, -0.15182652, 0.1224556, -0.1186777, -0.011522621, -0.09436076), target1);\n\ttarget1 = MulAdd(na3, MF4x4(0.07150499, -0.07419667, 0.16062357, -0.13254762, -0.010069923, 0.09393101, 0.035834856, -0.043301247, 0.059349176, 0.015473052, 0.06563933, -0.013041895, 0.029431, 0.11289305, 0.08899771, 0.16794808), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(-0.113425404, 0.14999859, 0.06650979, 0.036482334, 0.018955054, -0.10026139, 0.11925662, 0.114249855, 0.06869671, 0.052254554, -0.004852112, 0.0565278, 0.078193806, 0.05062573, 0.03250799, 0.19846839), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(0.021927554, -0.1345216, -0.0016766218, -0.13956897, -0.045278247, -0.0069249924, 0.006003127, 0.07814754, 0.10342034, 0.06784387, -0.069491945, 0.19103162, 0.14311132, -0.022440588, -0.06932795, 0.030535521), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(-0.04036147, 0.054757025, 0.017254664, -0.12124264, -0.1816484, 0.15580839, -0.09062968, -0.0048705437, -0.029410018, 0.038827926, 0.057098128, -0.018173074, -0.10805557, -0.14378877, -0.2585165, 0.172119), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(-0.1310388, 0.18337108, 0.19657819, -0.010367786, -0.04445844, -0.24680386, -0.04328972, -0.0399127, 0.12341645, -0.08352961, 0.011123786, -0.083505794, -0.09089909, 0.060027592, -0.23706149, 0.03521439), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(0.01557783, 0.010480741, 0.0434283, 0.16624042, -0.15881334, -0.04636994, -0.0038111496, 0.03575316, -0.08781109, 0.12979223, 0.06802427, 0.08255704, 0.37816545, -0.058951244, -0.102753684, 0.1256413), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(-0.10425998, -0.071307346, -0.11617004, -0.13080333, 0.1492051, 0.054852143, 0.07140254, -0.064901225, 0.0023687668, 0.012650793, -0.1390397, -0.09889024, 0.19282119, -0.04274883, 0.1678261, 0.10092644), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(0.052412614, -0.016467815, -0.08627941, 0.21175376, -0.037298422, 0.009408156, 0.09253116, 0.22531977, -0.09862147, 0.012014097, -0.00088612316, 0.10639377, 0.21262354, -0.36476177, 0.1831788, -0.18416084), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(0.10780807, -0.049085826, -0.035806093, 0.089742415, -0.121957704, -0.07614303, 0.1122783, -0.1417334, -0.11307489, -0.099186234, -0.09983688, -0.08203866, 0.18696213, -0.10846918, 0.022843426, 0.17075616), target1);\n\t\n\tMF4 target2 = { -0.019858388, -0.049763262, 0.034831703, -0.12479427 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.06560893, -0.038288042, -0.0021071879, -0.030108955, 0.145761, 0.0029613946, 0.051950503, -0.015247062, 0.44679, 0.114423126, -0.006614156, -0.085114725, -0.17392384, -0.1525023, 0.00087433326, -0.0061209374), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.038765047, 0.023672441, 0.07686677, 0.1169065, 0.057648882, -0.04956052, 0.18272647, 0.074001, 0.0148019185, -0.17424357, -0.15635398, -0.11640745, -0.044930972, 0.17733482, -0.118420936, 0.0034517103), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.03843906, 0.14669247, -0.0016725688, -0.05404641, -0.010653548, -0.14568646, 0.01552742, 0.0075000613, -0.11138789, 0.12747082, -0.0019283098, 0.15637173, 0.17695609, 0.11176842, 0.037749417, 0.038456965), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.011113179, -0.033781096, 0.10000893, 0.09236021, 0.05682521, 0.047795758, 0.082160555, -0.06516607, 0.021327825, 0.123461336, 0.16531587, -0.017066834, -0.17193775, 0.0088722, 0.11325116, -0.008696895), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.1559535, -0.027437076, -0.06791055, 0.0076806503, -0.105000794, -0.013547857, 0.044852357, -0.072031856, 0.03666842, -0.09417821, 0.044465255, -0.021518283, 0.075612575, 0.12548204, 0.0053096185, -0.081135504), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.032854624, -0.04636654, 0.08900102, -0.006676651, -0.17161772, -0.11203611, -0.08199468, -0.09992361, 0.20184253, -0.1002281, -0.1186801, 0.07690125, 0.10468101, -0.034323484, 0.05079439, 0.05624683), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.098402895, 0.21312171, -0.09616754, -0.0022171456, 0.13993289, 0.020528518, 0.14474267, -0.10080646, -0.1283229, 0.1904186, -0.040573347, -0.14794436, 0.054999832, -0.11960501, -0.061369505, 0.09603712), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.10725682, 0.06215029, 0.089609645, 0.018108908, 0.021400819, 0.031146, -0.22904995, -0.01076689, -0.105205126, 0.012291847, -0.048588227, -0.049485933, 0.114158444, -0.091215335, -0.027073242, -0.11835295), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.102791235, -0.029520744, -0.19900851, -0.029541757, -0.031764254, -0.008002707, -0.017105635, -0.07239135, 0.14740342, 0.05648717, 0.077909015, -0.14993371, 0.120271415, -0.10764749, 0.024895139, -0.06620364), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.23614062, 0.17541821, -0.008834044, 0.18276002, 0.0081810225, 0.08408151, -0.13527961, -0.018539876, 0.014361589, -0.027012244, -0.17484863, -0.019362496, -0.037048925, 0.094974704, 0.018246485, 0.109574154), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.1533575, 0.19374342, -0.027817149, 0.16140993, -0.06192059, 0.045258347, -0.09625185, -0.026630063, -0.0050361003, 0.020038875, 0.17793919, 0.059639167, 0.079904884, 0.03772698, 0.07656081, 0.21176697), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.03496418, -0.07980854, -0.022122597, -0.15199453, -0.029270291, 0.02720027, 0.10541389, -0.020044396, 0.031097332, 0.00533792, -0.07936573, 0.0767852, -0.052802965, 0.044324324, 0.1331397, 0.09737042), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.09404921, -0.12238693, -0.15260863, -0.037168942, 0.101774864, -0.12818033, -0.19276977, 0.060901154, 0.3669953, -0.08837079, 0.09483071, 0.0039528203, 0.114874505, 0.11380748, -0.0675627, 0.099314205), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.18921007, 0.11088719, -0.03879293, 0.24393363, 0.024074616, -0.055593442, -0.038904842, 0.093477115, -0.074254654, 0.023504809, 0.0015475574, 0.06922074, -0.02201723, 0.04952918, -0.12691462, -0.04520855), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.015887981, 0.13304926, -0.006745367, 0.08113083, 0.14956935, -0.115906075, -0.14784655, 0.030012615, 0.031657662, -0.065392576, 0.26881677, 0.060661886, -0.022231037, -0.04828739, 0.09894193, -0.14562485), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.047161587, -0.017991489, -0.0075016962, -0.034034126, -0.061112147, 0.13156408, 0.16217458, 0.076580904, 0.1459869, 0.11071404, -0.043128885, 0.0338223, 0.21686563, 0.008266244, 0.058333807, 0.02561811), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.018609803, 0.0234848, 0.040451016, -0.08435358, -0.009784489, -0.008065147, -0.053126886, 0.011366649, -0.084467, -0.1788947, -0.12264094, -0.18014608, 0.059439298, 0.03542411, 0.078848965, -0.13048537), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.078216806, 0.013697004, -0.15663616, -0.049786724, -0.13391373, -0.08318028, 0.06794668, 0.09373982, -0.083461255, 0.061056722, -0.2251907, -0.06139379, -0.20027658, -0.09285312, 0.039336286, 0.09701935), target2);\n\ttarget2 = MulAdd(a3, MF4x4(-0.16103904, -0.102670334, 0.0012198326, -0.22724585, 0.23467462, 0.044629287, 0.0045051533, 0.08221795, 0.13965432, -0.025059564, 0.009324332, 0.17598952, 0.10017599, 0.043154277, 0.09106905, 0.004035487), target2);\n\ttarget2 = MulAdd(b3, MF4x4(-0.044398602, -0.02080209, 0.07439402, -0.0837648, -0.09127961, -0.16654146, -0.028559506, 0.063172385, 0.02517883, -0.2839795, -0.011589502, -0.07898659, -0.013581755, -0.18534079, -0.0017158306, 0.105475046), target2);\n\ttarget2 = MulAdd(c3, MF4x4(0.104462, 0.27500334, -0.16876803, -0.067298174, -0.011149543, 0.026384255, -0.10175635, -0.2548854, -0.1283541, -0.16410558, 0.07503598, -0.02121285, -0.0064750114, -0.09670444, 0.08300398, 0.19831792), target2);\n\ttarget2 = MulAdd(d3, MF4x4(-0.009554492, -0.095104635, 0.08615534, -0.10154481, 0.11020224, -0.1011952, 0.061394565, 0.050413556, 0.19796023, 0.11560851, 0.033866078, 0.23405328, -0.0060241343, -0.050427623, -0.18293521, -0.031680096), target2);\n\ttarget2 = MulAdd(e3, MF4x4(0.058735132, 0.026442906, -0.23102848, -0.07569987, -0.26244682, -0.20584835, 0.2259608, 0.06885029, 0.035959512, 0.075910114, -0.17818634, 0.053924832, -0.0046540634, -0.02363428, -0.0501489, 0.07347372), target2);\n\ttarget2 = MulAdd(f3, MF4x4(-0.0733894, 0.10715639, 0.28019708, 0.100572936, -0.07274408, 0.072782665, -0.056028996, 0.06478587, -0.031222489, 0.043191776, -0.10039772, -0.21392053, -0.04606884, -0.16641788, 0.0065926304, 0.055378567), target2);\n\ttarget2 = MulAdd(g3, MF4x4(-0.118616246, -0.13528953, -0.19563872, 0.23483656, 0.02614144, 0.19605434, -0.05274385, -0.08863971, 0.16891058, 0.1366527, 0.09084148, 0.100328505, 0.034491546, 0.08647768, 0.21777217, -0.049174547), target2);\n\ttarget2 = MulAdd(h3, MF4x4(0.1357159, -0.012445991, 0.3096013, 0.181176, -0.010390439, 0.14459321, -0.10700577, -0.011389145, 0.09287424, 0.07787938, -0.096365124, 0.017783955, -0.09306514, 0.15694624, -0.14705794, -0.13922045), target2);\n\ttarget2 = MulAdd(i3, MF4x4(0.13941582, 0.19728883, -0.151456, 0.10526561, -0.09251345, 0.11684088, 0.1303061, 0.14257613, -0.20296581, 0.00048331724, 0.2851077, -0.20377511, -0.057946853, 0.031233812, -0.15364504, -0.009259494), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.098066, -0.08288004, -0.06673981, -0.06435033, 0.034342356, 0.015804073, 0.023787297, 0.10401755, -0.19141194, -0.16482951, -0.0056575392, 0.0093797995, -0.28313008, 0.0048112553, -0.017099613, 0.02518723), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.030270405, -0.038700357, -0.013410372, -0.004442315, -0.12467148, 0.08281559, -0.1605282, 0.069578275, 0.10012911, 0.01924674, -0.021857055, 0.07991313, 0.00801384, 0.13677774, 0.013247758, 0.03188123), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.17157516, -0.08176375, -0.089773096, -0.0405298, -0.085242964, -0.03426719, 0.054874644, 0.066589154, 0.04864499, -0.18212035, -0.11903994, 0.04277644, -0.24286698, 0.14560008, 0.1412366, -0.049351584), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.0020793858, 0.13244559, 0.022845006, -0.056293562, 0.025595138, 0.12697968, 0.0062493416, 0.10955782, -0.02731004, -0.04970028, 0.0558574, 0.013929665, -0.030912375, -0.07561133, -0.31270868, 0.027562078), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.072941735, 0.021501537, -0.0630067, -0.10351342, 0.0041823885, 0.13891226, -0.070387594, 0.052334826, -0.003547599, 0.19354597, -0.020180183, -0.037713047, 0.06751014, -0.17405544, -0.020440113, 0.25509283), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.005987273, -0.08264425, -0.019549685, -0.06343352, -0.005718748, 0.05226893, 0.07570872, -0.030717341, -0.18217428, -0.0039694863, 0.1455871, -0.0977504, -0.15671553, -0.006649227, -0.1283491, 0.100330345), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.057930637, -0.114826396, 0.06898038, -0.13852106, 0.024047598, 0.20633829, -0.12503678, 0.022534683, -0.18774416, -0.31502175, -0.10984795, -0.018557208, 0.17580375, 0.25652558, 0.22530238, -0.0028108188), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.023331782, -0.01088776, -0.0052380436, 0.00686383, 0.026780738, 0.03749848, 0.22947483, -0.103271484, 0.012644287, -0.0142970905, 0.098855376, 0.0055474946, 0.032439362, 0.027143423, -0.14876749, -0.06213873), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.03750828, 0.010431886, 0.17416674, -0.090744555, -0.17330858, 0.013979898, 0.03489776, -0.13337487, 0.00858403, -0.037750907, -0.17109399, 0.08273273, -0.14204618, -0.009869641, -0.013496473, 0.076338045), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.043562744, -0.18440323, 0.011339632, -0.14345059, -0.08992258, -0.10230683, -0.10468143, 0.34146136, 0.15978895, -0.0051261852, 0.061601657, 0.09483878, -0.007760578, -0.018336317, 0.044910427, -0.09316569), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.1253627, -0.12310892, 0.016166732, 0.027448155, 0.13965616, -0.13030767, 0.17542621, 0.061852284, 0.16997853, 0.0056183804, -0.18704928, -0.019231116, -0.08086044, 0.09974395, -0.01429541, 0.03184063), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.04526007, 0.030035531, 0.03181006, 0.22173904, -0.1355034, -0.1948648, 0.06783468, 0.038674995, -0.046629447, -0.03462297, 0.09421528, 0.048745953, 0.16898066, 0.13283801, -0.14163011, -0.23105736), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.07269096, -0.06190773, -0.038986176, 0.102121696, 0.14298806, 0.23800415, 0.1370508, 0.0034182875, 0.009464909, 0.073990576, -0.028228868, 0.047769118, -0.11799714, -0.07566264, -0.025975682, 0.06592005), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.1140849, 0.0011444123, 0.13536933, -0.045905575, 0.050907966, -0.065915674, 0.034910467, -0.2681743, 0.10803704, 0.12069119, -0.12347737, -0.06318596, -0.06862493, 0.014980036, 0.22914106, 0.0003237674), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.09530222, -0.11337397, 0.014516241, 0.0709293, -0.122670494, -0.17343688, -0.09817145, 0.0427696, -0.0035809735, 0.0970125, -0.35413933, -0.13195236, 0.07348421, 0.11037325, 0.056015544, -0.011848703), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.05069634, -0.032064505, -0.03238415, 0.1735258, 0.25210074, 0.10959535, -0.2741513, 0.13719772, 0.1066583, 0.20128429, -0.008766815, -0.11834798, 0.057237767, 0.017930366, 0.021861222, -0.025086008), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.000881232, -0.05960106, -0.08985197, 0.14067702, 0.018204128, 0.09699959, -0.05949243, 0.059911992, 0.027270103, 0.06743677, 0.38237867, -0.058599375, -0.047956746, 0.11374969, -0.14632292, -0.005532837), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.0312775, 0.0031963694, 0.08149806, 0.13988096, -0.0040519754, 0.035389222, 0.0864673, 0.18592173, 0.03735674, -0.054272953, 0.18598364, -0.13443853, 0.085672796, -0.049046505, 0.0057935636, 0.017542645), target2);\n\ttarget2 = MulAdd(na3, MF4x4(-0.04916441, 0.015665755, 0.08576695, 0.17165792, -0.13008267, 0.04201376, -0.2670682, 0.119378634, -0.100484766, -0.0887232, 0.049034663, -0.039614394, 0.02695341, -0.04374321, -0.106656834, 0.023938615), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(0.03373819, 0.004977311, -0.0040103244, 0.13545765, 0.06599036, -0.09659661, 0.22132197, -0.116552144, 0.100918315, -0.022979576, 0.07052367, 0.04172229, 0.17585796, 0.05118707, -0.08703159, 0.055033304), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(-0.18900026, 0.019988917, 0.07693406, 0.28435934, 0.12686001, -0.14701878, -0.09573673, -0.17312722, 0.15025325, 0.12911554, -0.09475629, 0.016428819, 0.082817025, -0.11946521, -0.0013731157, -0.09071587), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(0.0797976, 0.11099694, -0.05467964, 0.014629147, -0.09720358, 0.04712591, 0.015981004, -0.05535863, 0.03645818, 0.041274335, 0.10671675, -0.11314873, 0.036964905, 0.17811853, 0.08903187, 0.0095582185), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(0.11976107, 0.004657432, -0.06258394, -0.022577194, 0.17443101, 0.1387175, 0.059126876, 0.032149844, 0.1430801, 0.002375262, -0.12749809, 0.08837332, 0.06466934, 0.13617098, 0.04582338, 0.068308234), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(0.022942754, -0.09855706, 0.049297135, 0.096298546, 0.1906194, 0.11273925, -0.22720218, 0.003925555, 0.0028442615, -0.12138431, 0.09074982, -0.030113788, 0.00383381, -0.09112362, -0.27005482, 0.022827866), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(-0.19426541, 0.009114653, 0.11889596, -0.057239886, -0.03998725, -0.1694043, -0.20197673, 0.041406937, 0.020746358, 0.22414313, -0.1622876, -0.11014813, -0.09325455, -0.08461812, -0.021865716, 0.008194336), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(0.021359676, -0.022532789, -0.10541426, -0.24901268, 0.030835157, -0.034806997, 0.10264721, -0.006528542, -0.03765987, 0.069545716, 0.25284502, 0.04730265, -0.012214816, -0.053018507, 0.13373806, -0.037745554), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(-0.09582438, -0.18056035, -0.09869147, 0.11321111, -0.10706152, -0.037460733, 0.121544324, -0.11290087, 0.18490471, -0.06921383, -0.19518846, 0.10960292, -0.06263085, 0.13362981, -0.08682174, -0.053608853), target2);\n\t\n\tMF4 target3 = { -0.067701444, -0.05630008, 0.022760866, -0.034229018 };\n\ttarget3 = MulAdd(a1, MF4x4(-0.1652761, 0.13780159, 0.09095229, -0.043444302, -0.06450598, 0.04212247, 0.069517806, 0.09327406, -0.033491675, -0.14936084, 0.009638944, 0.11837384, 0.02686685, 0.037584316, -0.09761867, -0.026200296), target3);\n\ttarget3 = MulAdd(b1, MF4x4(-0.12561406, 0.12076126, 0.028275209, -0.08543192, -0.099475406, -0.0822321, 0.0920009, 0.06756713, -0.10781483, -0.12923865, 0.032576296, 0.3534597, 0.03224445, -0.015600879, -0.025559058, -0.027278373), target3);\n\ttarget3 = MulAdd(c1, MF4x4(0.07211016, 0.054111533, 0.13363571, -0.010288602, -0.20603329, 0.0047039236, -0.04776343, 0.25487995, -0.10845931, 0.0972547, -0.10519721, -0.0073581343, -0.10403583, -0.06662798, 0.041069936, -0.11237198), target3);\n\ttarget3 = MulAdd(d1, MF4x4(-0.011475162, 0.062792905, 0.091312, 0.30339372, -0.11382581, 0.06737181, 0.07341503, 0.16007973, 0.001011511, -0.11274179, -0.006656744, -0.034754373, 0.08876155, 0.014858809, 0.08583179, 0.010586847), target3);\n\ttarget3 = MulAdd(e1, MF4x4(0.095108636, 0.0049300413, -0.15713759, -0.049208567, 0.14641964, -0.1558201, 0.115891516, -0.06733412, -0.07573838, 0.29731378, 0.108890355, 0.043476757, 0.06507369, 0.035861496, -0.03979463, 0.0009747037), target3);\n\ttarget3 = MulAdd(f1, MF4x4(0.04926235, -0.037529353, 0.079898834, -0.14147292, -0.08446753, -0.06169593, 0.047313344, 0.26457137, -0.035472378, -0.073560245, 0.14341679, -0.022741733, -0.1525431, -0.01243139, -0.011166588, -0.20521918), target3);\n\ttarget3 = MulAdd(g1, MF4x4(-0.016135108, 0.011612018, 0.14412925, -0.02519369, 0.09124221, 0.05163101, -0.13721077, 0.028859738, -0.10101291, -0.14688651, 0.15746878, -0.124548726, -0.04213581, -0.01224665, 0.17707069, 0.012810498), target3);\n\ttarget3 = MulAdd(h1, MF4x4(-0.17663126, -0.07370428, 0.043691028, -0.006832302, -0.050157465, -0.030904332, 0.061489057, -0.009296911, 0.03220379, -0.047700413, -0.029812776, 0.16822562, 0.041632306, 0.11511152, 0.09653043, -0.055198412), target3);\n\ttarget3 = MulAdd(i1, MF4x4(0.13367188, 0.03333002, 0.008851994, -0.012191224, -0.045508027, 0.08612423, 0.06786381, 0.15179649, -0.031041663, -0.059014346, 0.15675054, -0.08772905, 0.09033015, -0.08435604, 0.07550108, -0.14843665), target3);\n\ttarget3 = MulAdd(a2, MF4x4(0.14639384, 0.16561817, -0.03261034, -0.03337392, 0.14970617, -0.11748068, -0.12750028, -0.10566866, 0.16191705, -0.08984127, 0.06803522, 0.008120483, 0.10923837, 0.0364358, -0.13485567, 0.14291629), target3);\n\ttarget3 = MulAdd(b2, MF4x4(-0.02444568, 0.21520157, 0.05191823, 0.17272551, -0.047668163, -0.09192939, -0.020734387, -0.016689759, -0.21506861, -0.038079426, 0.099174924, 0.010456613, -0.20138906, -0.0112631135, 0.08758567, -0.045137912), target3);\n\ttarget3 = MulAdd(c2, MF4x4(0.060797717, 0.03514636, -0.05460338, -0.095668696, -0.08528851, -0.07811166, 0.12541622, -0.036730994, -0.14369172, -0.010652937, 0.0060692867, -0.1785254, 0.14972189, -0.13451393, -0.04655055, 0.16085984), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.05367569, 0.20912962, 0.018910028, -0.10154244, 0.03168856, 0.06779478, -0.088652916, 0.016729023, 0.10557536, -0.099209085, 0.14797546, -0.18952388, 0.07048445, 0.102708265, -0.14564602, 0.12568687), target3);\n\ttarget3 = MulAdd(e2, MF4x4(-0.049337912, -0.12502758, -0.09065302, 0.19880529, 0.26680514, -0.003136209, -0.11733151, -0.11684242, -0.04335924, 0.30764192, 0.2855104, 0.04156867, -0.08121212, 0.23999381, -0.019614706, 0.027516816), target3);\n\ttarget3 = MulAdd(f2, MF4x4(-0.04837136, -0.0049304874, 0.006328469, 0.013705871, 0.067017764, -0.03406703, 0.053161882, 0.24689339, -0.02929922, 0.06797918, 0.015713276, -0.17147881, 0.04482974, 0.07526465, 0.019844312, -0.18729854), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.030257802, 0.010643463, -0.11703066, -0.015162744, -0.074236035, 0.01591241, 0.061938114, -0.08404092, 0.111995466, -0.13485448, 0.21688463, -0.110088274, 0.079335205, -0.2474801, -0.03824567, -0.018190503), target3);\n\ttarget3 = MulAdd(h2, MF4x4(-0.11581714, -0.004117979, 0.033883266, -0.13720983, 0.029020213, -0.08154189, -0.0020539986, 0.11715364, 0.17582226, 0.0916048, 0.0750543, 0.06601126, 0.038681798, -0.03606899, 0.08065586, 0.0019443193), target3);\n\ttarget3 = MulAdd(i2, MF4x4(-0.037615683, 0.12732984, 0.042441927, -0.008004603, 0.11336218, -0.042417236, 0.044717386, -0.13728632, 0.038264424, 0.17234874, -0.02492702, 0.120399185, 0.024329247, 0.024983741, -0.1845697, -0.07284304), target3);\n\ttarget3 = MulAdd(a3, MF4x4(0.2704137, 0.15812507, 0.060361683, -0.07266647, -0.15354276, -0.04938148, 0.11895455, -0.12520859, -0.07866695, 0.06199223, 0.02046756, 0.16162948, 0.037545823, -0.08195345, -0.02782581, -0.1247714), target3);\n\ttarget3 = MulAdd(b3, MF4x4(0.058098216, 0.1090351, 0.036994565, -0.14390574, -0.02314059, -0.067219526, -0.08998296, 0.12025692, -0.1035221, 0.05190676, -0.0240437, 0.06639121, -0.039624542, 0.002958745, 0.019561864, 0.12834862), target3);\n\ttarget3 = MulAdd(c3, MF4x4(0.2211613, -0.1103558, -0.0464588, 0.06874506, -0.32631674, 0.11210603, 0.051548798, -0.34436032, -0.11639206, 0.12327613, 0.051884107, -0.03575669, 0.035892785, -0.06696002, -0.15486757, 0.11983755), target3);\n\ttarget3 = MulAdd(d3, MF4x4(0.021447798, 0.010329525, 0.013789607, 0.119596116, -0.05871373, 0.055229582, 0.20033267, 0.03858596, -0.10166856, 0.0006909935, 0.0964782, 0.095391914, 0.013319357, -0.13142642, 0.1100771, 0.050889898), target3);\n\ttarget3 = MulAdd(e3, MF4x4(-0.16984001, -0.16002657, -0.060783282, -0.17456883, 0.2011064, -0.14940733, -0.15602681, 0.14061591, 0.18068549, -0.00217099, -0.024712907, 0.037761874, -0.07138531, -0.0016056405, 0.11756802, 0.18380354), target3);\n\ttarget3 = MulAdd(f3, MF4x4(0.07733175, -0.17642827, 0.07976922, -0.051280692, 0.16156857, 0.032522928, -0.095040165, -0.0583928, 0.038923588, -0.043146443, -0.10355574, 0.1974055, 0.04354748, 0.09425934, 0.026754672, 0.23734866), target3);\n\ttarget3 = MulAdd(g3, MF4x4(-0.13585593, 0.14902504, -0.27107853, 0.13296895, -0.2865579, -0.074112825, 0.1409574, -0.0003253808, 0.1733374, -0.16919981, 0.03372848, 0.21644552, -0.00050592434, -0.037268158, 0.1148079, -0.13287376), target3);\n\ttarget3 = MulAdd(h3, MF4x4(0.005142486, 0.0867682, -0.09227092, -0.10524167, 0.07520852, 0.015542765, 0.016817883, -0.0733789, 0.20560083, -0.1119311, 0.17374502, -0.107678846, -0.09381425, 0.14690572, 0.022286026, -0.19862098), target3);\n\ttarget3 = MulAdd(i3, MF4x4(-0.20393431, -0.045187343, 0.0095105795, 0.052588273, -0.14538154, 0.18569797, -0.031874318, -0.15881945, -0.08170196, 0.052769475, -0.15122755, 0.090783544, 0.21360469, 0.04577172, 0.05163147, 0.07916663), target3);\n\ttarget3 = MulAdd(na1, MF4x4(0.14100257, -0.03398819, -0.052019518, -0.08121586, 0.008056087, -0.0931302, -0.19780545, 0.16904305, -0.13034676, 0.08930879, -0.0112331435, 0.029833045, 0.03981243, 0.12613662, -0.2159093, 0.035136405), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(0.09830958, 0.10535925, -0.08584078, -0.04632737, 0.0022527708, -0.031659063, -0.101096116, 0.063173816, -0.06613251, 0.118981436, -0.003423647, -0.105914734, -0.07703021, -0.07204621, -0.0748016, -0.11777416), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(0.053663094, 0.07884249, -0.17141959, -0.012647486, 0.08073693, -0.076323204, -0.17775054, 0.10244291, 0.14563464, 0.14345805, -0.18157926, 0.18835878, -0.026068632, 0.023138894, -0.0019046182, -0.00012485609), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(0.1348711, -0.04699952, 0.15993118, -0.23344111, 0.026501887, -0.14297141, -0.113242336, 0.080124736, -0.03513346, 0.10361922, -0.0922229, 0.07750678, 0.12542203, 0.12729637, -0.092106655, 0.055520497), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(0.083170444, -0.06302187, 0.0084091, -0.04599831, -0.035450544, -0.19657601, -0.07282212, 0.1447326, 0.11383889, -0.21189907, -0.045117173, -0.07391879, -0.11269967, -0.08903234, -0.032466423, 0.22887331), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(0.067729145, 0.06700018, -0.18447827, 0.03988203, 0.05277088, 0.033052627, -0.11088279, -0.02169712, 0.019287307, 0.06812, 0.04875055, 0.111010365, -0.14138764, 0.027063884, -0.05214136, 0.16399074), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(0.004932597, 0.1045028, -0.16486417, 0.010725656, 0.06950409, -0.121699296, 0.010512686, 0.14147647, 0.019202268, 0.17767008, 0.011134318, 0.063502066, -0.13067701, 0.108099535, -0.114125356, -0.046774942), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(0.15779556, 0.07332346, 0.063827224, 0.008358174, 0.0496721, -0.030757044, -0.050408855, 0.12898293, 0.023491597, 0.045543656, -0.07800668, 0.037886333, 0.17256846, 0.07125766, 0.029893918, -0.02450649), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(-0.18544081, -0.033090588, -0.05919492, -0.0003458201, 0.14915435, -0.037259944, 0.011946766, -0.16243212, 0.0882922, 0.093222775, -0.11737426, -0.003943405, 0.019537527, 0.0077801496, 0.1317979, -0.09169945), target3);\n\ttarget3 = MulAdd(na2, MF4x4(-0.091774754, 0.012059926, 0.03165443, 0.14858909, 0.3944464, -0.014972357, -0.12189733, 0.26198938, -0.27252647, -0.026880303, -0.06978548, -0.013632001, -0.0032966428, -0.18498091, -0.0004948639, -0.12478541), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(-0.02833149, -0.050442036, -0.041132275, -0.07840716, 0.04005613, 0.17621154, -0.13607822, 0.1762098, 0.05282825, 0.0016353457, 0.006173704, -0.067321114, 0.13982886, -0.03623519, -0.087992206, -0.047710747), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(0.03881576, -0.08746933, -0.011487434, 0.12498892, -0.0017975342, 0.018888952, -0.18913451, 0.08337154, -0.090970725, 0.117090665, 0.1504768, -0.070024244, -0.019629575, -0.091753945, -0.0092930645, -0.15750532), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(0.017022166, -0.12516023, -0.12154394, 0.11974826, -0.09612418, -0.115943454, 0.24888757, 0.06153447, 0.056513205, -0.11116729, 0.029329464, 0.08975961, 0.10630068, -0.1328722, -0.06946471, -0.13333926), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(-0.034902636, 0.2483038, 0.14978237, -0.07164234, -0.012161076, 0.023050508, 0.06598259, -0.043513447, 0.10375706, -0.20177342, -0.123048, -0.035172284, -0.07363312, 0.18172532, 0.09612206, 0.19234397), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(0.029563665, -0.029694784, -0.101416424, -0.030606827, -0.070010245, 0.045257732, 0.05966623, 0.09107148, 0.03758803, 0.026623867, -0.071266346, 0.094123766, -0.059981044, 0.09513772, -0.08400028, 0.02511076), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(-0.037089724, -0.06322222, 0.1061242, 0.008586227, 0.13214453, 0.035300348, -0.15787113, 0.07151468, -0.12539263, -0.09025181, 0.18832791, -0.033440433, -0.06625288, -0.1530654, -0.005935112, -0.18216603), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(0.027623197, -0.04890818, -0.061262466, 0.015195151, 0.32218042, 0.19153431, -0.08007639, -0.11445247, 0.00393679, -0.06705804, -0.12879996, -0.1423812, -0.06090306, 0.0036856222, 0.0069346135, 0.043838803), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(-0.016647626, -0.08680245, -0.060714565, -0.06387184, 0.18913822, 0.10105815, -0.026422933, -0.039242256, -0.06503463, -0.03521194, 0.049169898, -0.06533137, -0.03167689, 0.015587601, -0.08370448, -0.021492135), target3);\n\ttarget3 = MulAdd(na3, MF4x4(-0.12721944, 0.028729077, 0.10713755, -0.09260985, -0.047840588, 0.022301238, 0.11309327, -0.06745379, -0.004154309, 0.10523564, -0.04239449, -0.017029425, 0.10899646, 0.1546228, -0.07669311, 0.2672058), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(-0.056850802, -0.05440277, 0.0018135635, 0.09396988, 0.14010292, 0.08741186, -0.12758048, -0.08599669, -0.018672993, 0.05172455, 0.008185248, 0.111759275, -0.06955318, 0.14772479, 0.008665618, 0.0352044), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(-0.059702516, 0.058782764, -0.12532151, -0.096861176, 0.35831934, 0.0013884759, 0.30706376, -0.101967454, 0.095553055, 0.05883552, 0.06424327, 0.054175656, -0.1484007, 0.13297899, -0.01961164, 0.15321216), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(0.09578697, -0.20968121, 0.04902802, -0.030943176, -0.009951699, -0.05341875, -0.063387014, -0.0825744, -0.09769999, -0.075733155, 0.14749058, 0.12551898, 0.24074706, 0.16208081, -0.21561289, -0.062474046), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(0.0017662761, -0.088773146, 0.0043133483, 0.32119426, -0.13667256, 0.043542203, -0.045929775, -0.09663573, -0.136664, -0.19760157, -0.07579348, -0.04397654, 0.15027492, 0.08591492, -0.03781643, -0.1743205), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(-0.12654322, 0.028860493, 0.12822515, 0.049503203, 0.30117163, -0.03055389, -0.0582901, 0.0019550966, -0.0038878717, 0.0043905065, -0.12589069, -0.22796634, -0.10635117, 0.16903181, 0.16951965, 0.027410017), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.059951358, -0.20652413, 0.056598257, -0.1811566, 0.2165428, -0.14381465, 0.20429386, 0.025329571, -0.19378977, -0.055971343, -0.0010970832, 0.08035063, 0.077368416, 0.078627735, 0.07322149, -0.14884202), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(0.041847393, -0.12735637, 0.014505967, 0.10192219, -0.13889207, -0.015992412, -0.17310154, 0.12131598, -0.13452062, -0.00036142246, -0.14270298, 0.14636193, 0.059705302, 0.051249746, 0.015804589, -0.11418885), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(-0.043562837, -8.029936e-05, -0.007859607, -0.08610097, -0.021267893, -0.011354754, -0.17890069, -0.0485164, -0.1679154, 0.11548207, -0.060171373, -0.24584498, 0.008396757, 0.1078782, 0.12012115, 0.07315681), target3);\n\n\tMF3 target4 = MulAdd(e1, MF4x3(0.068483055, 0.036389243, 0.04961808, 0.05059915, 0.033048775, 0.029426659, 0.07465462, -0.012659731, -0.024048671, 0.02224484, 0.012289658, 0.008910066), 0.0);\n\ttarget4 = MulAdd(e2, MF4x3(-0.10449372, 0.019832065, 0.035194747, 0.039656557, -0.028246421, -0.032626413, 0.10093569, 0.021039873, -0.0120673925, -0.047074273, -0.041248, -0.019464392), target4);\n\ttarget4 = MulAdd(e3, MF4x3(-0.05256942, 0.0127243735, 0.012813261, -0.03551604, 0.040801138, 0.04893271, -0.0016839011, -0.018044796, -0.027161835, -0.060873054, 0.012360936, 0.020700796), target4);\n\ttarget4 = MulAdd(ne1, MF4x3(-0.116182, -0.04271438, -0.046686683, -0.09575506, -0.030078743, -0.024359861, -0.04794246, 0.0044337297, 0.013972317, -0.023228236, 0.015726948, 0.0070847897), target4);\n\ttarget4 = MulAdd(ne2, MF4x3(0.13986528, -0.016787121, -0.015848925, -0.04900687, -0.027417973, -0.027077334, -0.047319725, -0.021533312, -0.018427303, -0.06136185, -0.0051562944, -0.032072), target4);\n\ttarget4 = MulAdd(ne3, MF4x3(0.070715815, 0.012814227, -0.0003389576, 0.012182037, -0.014952754, -0.019349998, -0.03254603, 0.012881403, 0.016392775, 0.059158217, 0.0055793705, -0.003696545), target4);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n\ttex3[gxy] = target3;\n\ttex7[gxy] = MF4(target4, 1);\n}\n\n//!PASS 6\n//!DESC Conv-4x3x3x24\n//!IN tex1, tex2, tex3, tex7\n//!OUT tex4, tex5, tex6, tex8\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { -0.012342477, -0.20862316, 0.08788906, -0.0010707981 };\n\ttarget1 = MulAdd(a1, MF4x4(0.092447594, -0.10328636, -0.12202365, 0.27040935, 0.052717082, 0.018614411, -0.08485268, -0.07617377, -0.008931799, 0.051284462, 0.051496644, 0.026522819, 0.09565774, 0.18421015, 0.26325333, -0.12989432), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.03988519, 0.042028125, -0.07100362, 0.03045228, 0.068984345, 0.03516445, 0.05874817, -0.028063854, 0.5054902, -0.16185366, 0.12543231, 0.07206758, 0.31235528, 0.03843813, 0.1501265, -0.08274924), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.11169874, -0.06681513, -0.00651678, 0.0010351768, 0.051753096, 0.053674143, 0.11657592, 0.12309117, -0.040198836, -0.007768111, 0.10881242, -0.14587292, 0.17091802, -0.087406136, -0.057882708, 0.0078790905), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.26830226, -0.01915989, -0.18262567, 0.2194732, 0.13879527, -0.031352315, 0.15241407, 0.0994905, -0.057112038, 0.17008875, 0.037308767, 0.09374541, -0.3188967, 0.01450157, -0.18610804, -0.0793318), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.0060915435, 0.06979378, -0.046237, -0.27248916, 0.09547359, -0.07666023, 0.09364251, 0.026975514, 0.16541278, 0.042641494, -0.02498914, 0.15121445, -0.0013431904, -0.06427887, 0.18217684, 0.26087397), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.20825194, -0.11043138, 0.02976852, -0.105722494, 0.0008496603, -0.065933526, 0.06687892, 0.025230588, 0.18294227, -0.03581215, 0.14366323, 0.101520695, 0.25154486, 0.055622917, -0.012970234, 0.054395743), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.21373472, -0.030288193, 0.06773853, 0.07427125, -0.0103815105, 0.016129585, 0.038576525, 0.037529152, -0.20739938, -0.05778662, -0.05940614, 0.02449663, 0.23593283, -0.05812938, -0.039888572, -0.057957932), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.387659, 0.1274861, 0.28752464, -0.05272344, -0.014581121, 0.0040657013, -0.06632645, -0.107276425, 0.03762339, 0.2742528, 0.028725976, -0.054044764, -0.04273324, -0.06317463, 0.0060703703, 0.053600952), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.1596047, -0.1561146, 0.109226674, -0.0052362215, 0.16038993, 0.10755746, -0.030864978, -0.36270598, 0.17078364, 0.09184639, 0.23489448, 0.026559642, 0.04388386, -0.061411064, 0.028113337, -0.045337155), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.111932576, 0.0021055648, -0.12106931, 0.019196665, 0.033925258, -0.13593148, -0.068236336, 0.107576296, 0.0415075, -0.2336552, -0.052428674, 0.07777366, 0.00816918, 0.2065682, -0.08628869, 0.15342048), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.021824878, -0.04840494, -0.116642684, 0.045604706, 0.008168658, -0.04534853, 0.11214711, -0.10829524, -0.043486122, -0.24905528, -0.07315474, 0.14727196, -0.07264179, 0.065202385, -0.0019039236, -0.08028288), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.08439612, 0.008386524, -0.030988367, 0.09697018, -0.049302116, 0.20326442, -0.018234255, -0.20189443, 0.042629667, -0.1409463, -0.050773926, -0.29503027, -0.07123911, -0.046633366, 0.07981456, 0.10374346), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.03868367, -0.05526043, -0.106714435, -0.14639367, 0.038107764, 0.069904044, 0.0744559, 0.13862458, 0.09222159, -0.14277418, -0.19073294, -0.03296828, -0.10584655, 0.13311721, -0.24290293, -0.008493607), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.15074006, 0.094411716, -0.058070287, -0.10475867, 0.127535, 0.047796316, 0.033599593, 0.055493813, 0.17686792, -0.23935609, -0.27880296, -0.12433512, 0.049884334, 0.0651521, 0.009873332, -0.039633323), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.025122408, 0.16321969, -0.06588295, 0.09563756, -0.115063086, -0.061710395, 0.073383145, 0.09976373, 0.09290709, -0.042226892, -0.22798967, -0.14234817, -0.089538574, 0.022935519, 0.09885692, -0.050982323), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.09486296, 0.04397677, 0.04075486, 0.056717344, -0.04711896, 0.04990853, -0.16473778, 0.13175704, 0.12485286, -0.18850122, -0.13122937, -0.102840684, -0.16874318, 0.05348968, -0.017259317, 0.07717163), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.059502125, -0.13897286, -0.03801125, 0.17431264, 0.11680923, -0.12560965, -0.0911302, -0.19165933, -0.121053115, 0.06541917, -0.06419728, -0.19364956, -0.13833821, 0.03234477, -0.09979964, 0.17789067), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.067596145, 0.25704458, 0.19766523, 0.108859204, 0.09887382, 0.052284334, -0.07278858, 0.122003525, -0.030752266, -0.04871386, -0.05135825, -0.3072661, -0.033045944, -0.098459914, 0.10718348, -0.13164413), target1);\n\ttarget1 = MulAdd(a3, MF4x4(0.020737967, 0.24545951, -0.044812705, 0.03566297, 0.095929176, -0.07487561, 0.20496303, 0.037086472, 0.038242895, 0.088189796, 0.021153267, -0.09462902, 0.026548525, -0.21922965, 0.050257247, -0.048741706), target1);\n\ttarget1 = MulAdd(b3, MF4x4(0.040332116, 0.043284092, 0.24138524, -0.02451653, -0.13059705, 0.0343388, -0.07902276, -0.009631078, -0.0848101, 0.010842163, 0.086510465, -0.012446626, 0.005316944, -0.22108673, 0.14004333, 0.15579557), target1);\n\ttarget1 = MulAdd(c3, MF4x4(0.022010755, 0.004139463, -0.017926715, 0.04037725, 0.016520657, 0.009780203, -0.14736284, -0.014491211, 0.057596914, -0.23008622, 0.21133287, -0.053522564, -0.18740861, -0.106346205, 0.10276541, 0.043288257), target1);\n\ttarget1 = MulAdd(d3, MF4x4(0.10575789, 0.019061945, -0.026198203, 0.20347466, 0.07900247, 0.102640145, 0.08666188, -0.05840282, 0.058876745, 0.14216799, -0.11816214, 0.14975895, 0.09833406, -0.1061385, 0.08465644, 0.09426659), target1);\n\ttarget1 = MulAdd(e3, MF4x4(-0.13777718, -0.28986838, 0.07906812, 0.059411187, 0.09088133, 0.23517007, -0.20900714, 0.011920497, 0.14009877, 0.19299953, -0.028272772, 0.06418091, 0.118590616, -0.111001015, -0.055573206, 0.085596696), target1);\n\ttarget1 = MulAdd(f3, MF4x4(-0.124967046, -0.23403575, -0.085109934, 0.094934925, 0.15895598, 0.08125505, -0.2215677, 0.10778676, -0.12129276, -0.0019275933, 0.14121452, -0.07975474, -0.057002395, -0.052832086, -0.1850646, -0.100982465), target1);\n\ttarget1 = MulAdd(g3, MF4x4(0.0710814, 0.20992099, 0.07493418, -0.109678715, -0.18531376, -0.039698873, -0.110102035, 0.16468482, 0.08024999, -0.09387882, -0.13551506, 0.11087316, -0.10608426, -0.13655968, 0.01102362, -0.060193118), target1);\n\ttarget1 = MulAdd(h3, MF4x4(-0.015583674, -0.06961451, 0.14489253, -0.27566335, -0.17987481, -0.027696218, -0.23948374, 0.028104413, 0.27821308, 0.08043316, -0.05241405, -0.0027138551, -0.13761862, 0.0038414828, 0.010716796, -0.21286957), target1);\n\ttarget1 = MulAdd(i3, MF4x4(-0.22588563, 0.040290482, -0.13179918, -0.15576197, 0.058554877, 0.10720413, 0.11312613, -0.004625868, 0.03558514, -0.023398632, -0.2564193, -0.045098998, -0.0012908503, 0.01255389, -0.018089779, -0.1334803), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.040578995, 0.14333616, 0.023703935, -0.24532415, -0.017356034, 0.05467018, -0.13556047, -0.051645495, 0.08613384, -0.18583167, 0.023360416, -0.12590869, -0.06778763, -0.06438733, 0.025624113, 0.07671888), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.042797543, 0.076091446, 0.082091615, 0.014681128, -0.09378036, 0.062476482, 0.026251588, 0.16627216, -0.15255791, 0.17601879, 0.042653207, 0.039376315, 0.029179158, -0.0095602125, 0.0705857, 0.011434591), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.012922825, 0.13863216, -0.09220861, -0.005267679, 0.12863027, 0.08068719, -0.07179554, -0.13297969, 0.04991335, -0.01473723, -0.028486373, 0.26253343, -0.052293234, -0.16709994, 0.013800583, 0.060783714), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.17575453, -0.036046885, 0.17919157, -0.18988807, -0.18178074, -0.058441214, -0.07271548, -0.008791415, 0.18230358, 0.07766667, -0.066274896, -0.15386371, 0.06161233, 0.003612807, 0.20308098, -0.020216005), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(-0.05010378, 0.018410517, -0.050254025, 0.012066753, -0.12485184, -0.1916662, -0.1278125, 0.06593962, 0.11824467, 0.07994578, 0.05962518, -0.20991555, -0.114382625, 0.07509197, -0.19671203, -0.4580128), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.17728399, -0.15649322, -0.15205286, 0.22968316, 0.037434835, 0.021075314, -0.090972036, -0.17058647, 0.19727467, -0.013115808, -0.08461909, 0.010409278, 0.04355671, 0.08082593, 0.013779581, -0.08425518), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.31590196, 0.107831545, -0.12198127, 0.00977694, -0.16240558, -0.038805872, 0.037051022, 0.10276969, 0.26788524, -0.072160736, 0.03843579, -0.08990598, -0.04897058, -0.019324914, 0.06016647, -0.015361721), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.16626236, -0.07336449, -0.11358449, 0.08885961, -0.044137727, 0.057762783, 0.08864482, 0.029383648, -0.08608859, -0.17586444, 0.094455965, -0.054391533, -0.18796252, 0.009314891, -0.014734876, -0.02058656), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.12067889, 0.3618014, -0.17719771, 0.2175122, 0.12890387, 0.20503749, 0.19662304, 0.17338246, 0.1733569, -0.057952117, -0.016951751, -0.057121612, -0.014850513, -0.05018768, 0.20244005, 0.016323887), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.13357711, 0.12105561, -0.030620668, 0.005170665, 0.044319738, 0.12768681, 0.15325043, 0.027631996, -0.080610365, 0.03741198, -0.017102083, -0.0035679936, -0.2243731, 0.16709204, 0.023224674, 0.11311707), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.02376095, 0.027235378, -0.009955967, -0.049886744, -0.08411108, 0.10339928, -0.02877354, 0.12704167, -0.13884954, 0.089170545, -0.0039057198, -0.16050623, -0.05318099, -0.10950255, -0.11412448, 0.042694647), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.20557326, -0.16362014, -0.090093814, 0.10406815, 0.08791842, 0.013667629, 0.099605836, -0.1062854, -0.07108554, -0.10362472, -0.0647173, 0.12420133, -0.082551, 0.07107792, -0.17423603, -0.048405636), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.1954154, -0.027208658, -0.03684051, 0.1338225, -0.084645554, 0.06871324, -0.0778811, 0.025083596, -0.19436808, -0.097009145, -0.036444522, -0.17200048, 0.013402397, -0.23984545, -0.018724974, -0.005078688), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.21297796, 0.023222866, -0.069507584, -0.07308915, -0.18444547, 0.016984317, -0.016325353, 0.11981142, -0.12647548, -0.074321784, 0.27461126, -0.111357704, 0.13917843, -0.035653792, 0.052209657, 0.2077564), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.13399822, 0.013458072, 0.031183472, 0.24100806, 0.025842719, -0.1878651, 0.14646488, -0.12074156, -0.15135823, -0.18367149, 0.14775206, 0.06404863, 0.06884799, 0.19008774, -0.094522566, 0.087253615), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.2991564, 0.15301964, -0.028454246, 0.10222737, -0.14888696, -0.021354329, -0.26517984, 0.17276473, 0.021648446, -0.17384106, 0.071495906, -0.16509262, -0.029774027, 0.17916657, -0.036435083, 0.1344122), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.043782394, -0.111460604, -0.094103605, -0.024549566, -0.09227317, 0.009563868, -0.11380084, 0.14710943, 0.1623694, -0.2684087, 0.08932176, -0.025791056, 0.10586864, -0.2849578, -0.049896624, -0.07046415), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.06390326, -0.16954753, -0.24643445, -0.06667138, 0.0153694395, 0.1391578, 0.033687413, -0.18783121, -0.061314933, -0.19441758, -0.033504955, 0.1402065, -0.082206115, 0.16466151, -0.07656087, 0.14898944), target1);\n\ttarget1 = MulAdd(na3, MF4x4(-0.1266701, 0.036555164, -0.4070397, -0.085509166, 0.045745134, -0.0494443, -0.07149184, -0.05286605, -0.022561546, -0.091546714, -0.12706481, 0.1923914, 0.26536146, -0.07096412, -0.16030753, -0.21569426), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(-0.097307466, 0.15349665, 0.015644126, -0.22425117, 0.21123715, 0.022773454, 0.23383828, -0.07435915, 0.07146555, -0.02743282, 0.14647867, -0.0041729338, 0.12715502, 0.11781688, -0.061080795, 0.0026166402), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(-0.010103422, -0.087011784, -0.12507296, -0.009202013, -0.0016642559, 0.12229101, 0.012257156, 0.09069687, 0.17266563, 0.04349975, 0.0065761553, -0.071280204, 0.03610506, 0.18303613, -0.02108923, -0.06867508), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(-0.13150483, -0.060967755, 0.0055990918, 0.037484363, -0.02158257, -0.024784425, 0.23109616, -0.120935716, 0.20638125, -0.072126925, 0.062352557, -0.004980783, 0.19314887, 0.13248818, -0.23808232, 0.014506469), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(0.18638828, -0.065645434, -0.20713033, 0.09149545, -0.24210495, -0.06484725, 0.08750317, 0.1802478, 0.3541541, -0.06987437, -0.1159385, -0.028150197, -0.23300691, -0.09201996, -0.121867135, -0.13276023), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(0.09099928, -0.039182268, -0.1400286, 0.010247891, -0.010239972, -0.18701951, -0.1772805, 0.01631285, -0.09500139, 0.2590885, -0.09521566, 0.05752499, -0.1184693, 0.04186501, 0.27024126, 0.08569921), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(-0.0729032, 0.10695013, -0.18894811, 0.06616699, 0.05852647, 0.03802247, 0.024427114, 0.022371208, 0.28009695, -0.022878911, 0.04645292, 0.060003202, 0.1053563, 0.027735699, 0.007826481, 0.14397411), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(-0.15458257, 0.12910113, -0.11843165, 0.14065553, -0.19225205, 0.059665926, 0.2690873, -0.1308205, 0.071195096, 0.07672256, 0.1497483, 0.21867657, 0.15143347, -0.16467342, -0.13924904, 0.098136105), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(0.05049889, 0.069295354, 0.017172134, 0.048614368, -0.19597568, -0.029311683, -0.190372, -0.025514813, -0.24531111, -0.041956335, 0.24628574, 0.15919869, 0.051921643, 0.09549575, 0.025514983, 0.13909552), target1);\n\t\n\tMF4 target2 = { 0.06731381, -0.14791869, -0.15826754, -0.069372416 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.08156944, 0.10573189, 0.012908232, 0.1657589, -0.038043138, -0.2873211, -0.2046161, -0.09311608, 0.3097668, -0.08111585, -0.17932127, -0.02586952, 0.18931806, -0.13793743, -0.13352883, 0.06681123), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.02374499, 0.14342955, 0.2563405, -0.029666856, 0.17285998, -0.1035698, -0.11706357, 0.11584379, 0.21326663, 0.06683621, -0.11183301, 0.092254475, -0.1014067, 0.03412136, -0.040375732, 0.13439587), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.114404246, 0.05252966, 0.00047894646, -0.028747892, 0.0105511965, 0.078781754, 0.029926287, 0.14559107, -0.12780708, -0.08478812, -0.2247857, -0.19385272, -0.13657221, 0.18088628, 0.15612762, 0.037660476), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.05799563, 0.059148345, -0.09769129, 0.07772796, -0.09202486, -0.06425981, -0.016873274, 0.0030002298, 0.11275395, -0.08546416, -0.2876964, 0.023335997, -0.010972625, -0.032576468, -0.086281575, -0.070443906), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.32762548, -0.06770343, 0.03179402, -0.04613723, -0.06790421, 0.44522998, 0.119118124, -0.11980204, 0.038128957, 0.17468919, 0.076030836, 0.14512211, 0.17252928, -0.047734894, -0.06045679, -0.08920573), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.015262433, 0.15428601, 0.06972416, -0.16334222, -0.08347724, 0.18573803, -0.11517264, -0.0009774134, -0.16686407, -0.10733252, -0.12523252, 0.050293542, 0.11212284, -0.009658616, -0.058349714, -0.014115335), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.056932453, 0.18084419, 0.02166639, 0.13523088, 0.011073456, -0.045516286, 0.003297358, -0.057280444, -0.018760536, -0.15718092, -0.11770054, -0.03166016, -0.19774522, 0.0755463, -0.20558798, 0.15830164), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.19655597, 0.03901344, -0.051660974, 0.19494548, 0.034315336, -0.04597924, -0.056954715, -0.19345726, -0.11985197, 0.006047848, 0.12791121, -0.019705713, -0.01501477, 0.117168285, 0.025459006, 0.13246241), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.0023640324, 0.0349994, 0.009396353, 0.0936661, 0.100842424, -0.114130996, 0.038058087, 0.12808813, -0.054103322, 0.027919596, -0.10685234, -0.07498883, -0.06130471, -0.12066764, 0.0029782685, 0.059720848), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.098447025, -0.011071975, 0.16054775, -0.08671137, -0.13293275, 0.05532158, 0.14407343, 0.19340874, -0.20346253, 0.11525113, 0.1687311, 0.098785535, 0.03027443, -0.054430522, 0.022521, 0.19343728), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.084854074, 0.06853468, 0.06792569, 0.029366238, 0.06035099, -0.05761756, -0.033579275, -0.062136766, 0.1649456, 0.049637973, 0.2630636, -0.02261985, -0.18047638, -0.071598716, 0.14448155, -0.055889398), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.024849698, 0.088840574, 0.1503109, -0.004984663, -0.16879597, -0.26041916, -0.3362258, 0.20055196, -0.13901941, 0.042401403, 0.18325137, 0.1716765, -0.016100548, 0.11664664, -0.07838003, -0.16286951), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.16242248, 0.22381666, -0.017743299, 0.07717547, 0.048560552, -0.20423977, 0.30301192, 0.00976561, -0.2708939, -0.092156336, 0.038034424, 0.06372939, 0.06721783, -0.023243327, 0.119849995, 0.15898646), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.10859177, -0.05935216, -0.015591001, -0.053253412, 0.071014024, 0.43206415, 0.04865775, 0.069328085, -0.09695977, 0.19359045, 0.016935471, 0.0028954153, -0.08338698, 0.041919734, 0.032975465, 0.11067615), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.32948914, -0.04703423, -0.075494416, -0.06948022, -0.18574949, 0.15096106, 0.0067734853, -0.16238153, -0.21330655, 0.25306207, 0.08089956, 0.08108933, 0.056989696, 0.05212022, 0.15835905, 0.00077813526), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.011273352, 0.26307768, -0.04307922, 0.21710183, -0.3902529, -0.46155867, 0.015115735, -0.05384065, -0.07163729, 0.0793938, -0.0985122, 0.06594441, 0.09647775, 0.05617775, 0.07099344, -0.16353689), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.040731885, 0.14055543, -0.07012667, 0.07207971, -0.004641172, -0.06394655, 0.091212526, -0.00019208786, -0.07705868, 0.040352806, -0.07397878, 0.051934645, -0.010726301, 0.23407605, 0.12093579, -0.0406116), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.041406166, -0.22172481, 0.22162893, 0.02442143, 0.10592917, 0.1968317, -0.14774016, 0.011944242, -0.12373062, 0.114184484, -0.090167396, 0.022542128, -0.1554341, 0.1371109, 0.13077694, -0.020479746), target2);\n\ttarget2 = MulAdd(a3, MF4x4(0.123823315, -0.3012641, -0.2841784, 0.014021941, 0.10990905, 0.2764256, -0.075963184, -0.10125788, -0.007879674, -0.08643855, -0.038958456, 0.07453782, -0.48677143, -0.03276048, -0.03156215, -0.09289601), target2);\n\ttarget2 = MulAdd(b3, MF4x4(-0.10992206, -0.05435893, 0.11743695, 0.17674956, 0.13509355, -0.17421335, -0.100946076, -0.10648024, 0.14750971, 0.21357685, -0.107157655, -0.017665314, 0.2106041, 0.124202386, 0.24976057, -0.09088304), target2);\n\ttarget2 = MulAdd(c3, MF4x4(-0.26258346, -0.03037757, 0.13096122, 0.13691814, 0.11316644, -0.14852227, 0.008399919, 0.04381969, 0.030872608, 0.45056874, -0.04014858, -0.012530115, 0.21238118, -0.1332986, -0.101533614, 0.077671215), target2);\n\ttarget2 = MulAdd(d3, MF4x4(0.101686284, -0.21485107, -0.109051324, 0.047709018, 0.018496532, 0.030967599, -0.07855083, 0.05204436, 0.0077558183, 0.080045685, -0.09668984, 0.17999001, -0.15804431, -0.042034358, -0.21375516, 0.001163862), target2);\n\ttarget2 = MulAdd(e3, MF4x4(-0.14624378, 0.42138338, 0.028315686, -0.20134708, -0.010074609, -0.046433613, -0.050019633, 0.08432513, -0.079346046, -0.27917975, -0.19784799, 0.25092122, 0.21972348, -0.0084989555, 0.11432945, -0.0727637), target2);\n\ttarget2 = MulAdd(f3, MF4x4(-0.22297074, 0.20484488, 0.17720158, 0.0022023271, -0.034587737, 0.0004995375, -0.027270092, -0.08549106, -0.07970776, 0.14142907, -0.039514165, 0.08021129, 0.262039, 0.08684183, 0.08106768, -0.088322006), target2);\n\ttarget2 = MulAdd(g3, MF4x4(0.19230787, -0.019139988, 0.100881554, 0.0622476, -0.0073597133, -0.007861123, -0.09819001, -0.035048965, 0.1649283, 0.096261285, -0.0899776, -0.03930426, -0.044506907, 0.20075877, -0.049743377, -0.0076403967), target2);\n\ttarget2 = MulAdd(h3, MF4x4(0.0043743993, 0.20346396, 0.1655524, -0.025431981, -0.02454905, -0.04476991, 0.020741275, -0.12993908, 0.026805034, -0.0037405565, -0.17931041, 0.09257133, 0.13752705, 0.07889819, -0.037251562, -0.002646608), target2);\n\ttarget2 = MulAdd(i3, MF4x4(0.038870014, -0.37619725, 0.046597917, -0.15463144, 0.054383356, -0.2925491, 0.0640225, -0.00486844, -0.0016340262, 0.10840749, 0.0993287, 0.17394166, 0.08594391, -0.030945132, 0.025646068, -0.06640845), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.01649855, -0.068216905, -0.027988954, -0.12154563, 0.022097806, -0.1290429, 0.10954417, 0.13157494, -0.1745968, -0.04658394, -0.053029858, -0.0759596, -0.04430781, -0.041724976, -0.056713972, -0.14473973), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.06543556, 0.092009485, -0.08451462, 0.052707452, -0.06780165, -0.088456, -0.025358824, -0.12258837, -0.10129489, -0.059306916, -0.14748581, 0.014620428, -0.038939722, -0.10054172, 0.09494565, -0.07793254), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.05932573, 0.013406356, 0.26368266, 0.18454649, -0.03142332, -0.01590683, -0.06236948, 0.11061398, 0.025253339, -0.030919848, 0.064894855, 0.13248478, -0.030221257, -0.0986045, -0.034824356, -0.16913392), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.0015110603, 0.2025821, 0.004228453, 0.08477586, -0.03797453, -0.04194356, 0.18174535, -0.06626136, -0.13344109, -0.22612168, 0.02602776, 0.016666876, -0.027019914, 0.119900815, -0.06250115, -0.070262626), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.14976665, 0.03257234, -0.14965177, 0.073865525, 0.062913194, 0.05034122, 0.03676157, -0.018906, 0.04145618, -0.111236595, -0.20951095, -0.060131762, -0.16541055, -0.08913449, 0.044624332, -0.08443667), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.21176168, -0.015680272, 0.25104785, 0.28819278, 0.068234585, -0.067152865, 0.18975581, -0.024222756, 0.09343949, 0.107427366, -0.08206377, -0.07970111, -0.10268362, -0.02063304, 0.007915588, -0.1344096), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.061288554, -0.017783957, 0.1759008, -0.096834674, -0.17838398, 0.22331426, -0.027759569, -0.0883247, -0.05435304, -0.099557355, 0.026310958, 0.18467775, 0.07900235, -0.017400427, 0.1453773, 0.033763483), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.06601715, 0.19832757, 0.10341119, 0.015197309, -0.13140027, 0.06353335, -0.033154953, 0.14772332, 0.053612914, -0.018467115, -0.1992033, 0.17353232, 0.16321027, -0.09609656, -0.12580357, -0.052030507), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.09335505, 0.099851064, 0.12890811, 0.13102262, -0.07580953, -0.11255671, -0.18570407, -0.14529274, -0.05160979, 0.06461672, -0.038672008, -0.00841868, 0.0029629876, -0.13739161, -0.29193023, -0.081763566), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.23590541, 0.009043033, 0.06940084, 0.13891594, -0.010488754, 0.029098868, 0.07929391, -0.07250032, -0.13742201, -0.18533885, 0.2531767, -0.009061109, -0.027644258, 0.10404188, 0.012537389, 0.10293872), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.19354686, 0.15574348, 0.31874457, 0.024332082, 0.06383042, 0.048204664, -0.073850416, 0.032850295, -0.34514645, -0.054682292, -0.054835007, 0.012525943, -0.031569667, -0.093528986, 0.077636436, 0.080878824), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.061584793, 0.003138571, 0.25193092, 0.09340434, 0.17664844, 0.010498078, 0.18399622, -0.23279727, -0.12833218, 0.15312086, -0.10134878, -0.0025951387, 0.07395745, -0.059028395, 0.1285172, 0.13659331), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.1286127, -0.08862414, 0.123132095, -0.11186987, 0.04064812, 0.1295343, -0.08698302, -0.054833192, -0.06911518, 0.1468998, 0.14806904, 0.0002644252, -0.102448784, 0.0064156754, 0.111383334, -0.07292957), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.05504673, -0.076037504, 0.11776747, -0.07890708, 0.077408485, -0.117229365, 0.0197986, -0.12881358, -0.121706314, 0.008088911, -0.025189465, -0.06471935, 0.111992925, -0.08574453, -0.18029808, 0.057162132), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.09641628, -0.08636256, 0.07254762, -0.1108583, 0.06322016, 0.04606108, 0.015605975, -0.023462018, 0.077079624, 0.12611854, -0.026314614, -0.021778936, -0.080265954, -0.028592844, 0.1361638, 0.16848429), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.14155127, 0.013242842, 0.04764719, -0.12724996, -0.05762018, 4.4798093e-05, 0.31255975, -0.52083194, -0.18550456, 0.109841965, 0.1860627, 0.11478285, -0.36154944, -0.12439295, 0.3006208, 0.032344274), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.11564562, -0.034078646, 0.16126357, -0.1936752, -0.2330871, -0.13876866, 0.088089384, -0.021154383, -0.091547124, 0.091753796, 0.18144718, 0.1774146, 0.007724317, 0.097580045, -0.15106232, -0.04128832), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.071651496, 0.18003649, 0.10129018, -0.16904286, -0.2137536, -0.1308051, 0.13850693, 0.04569891, 0.09158717, 0.1749203, -0.032127034, 0.06019649, 0.12735014, -0.19949023, 0.003664079, -0.050514087), target2);\n\ttarget2 = MulAdd(na3, MF4x4(-0.009363578, 0.083391, -0.08583937, -0.008416162, -0.024429835, 0.008918877, -0.15991227, -0.035743445, -0.040119864, 0.20200913, -0.09585724, 0.039848186, 0.2914714, -0.13199879, -0.04198891, 0.049873233), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(0.14203294, -0.12218405, -0.1336784, -0.011557518, -0.10419894, -0.047520764, 0.012323197, 0.01812075, -0.15906301, 0.057789516, -0.108339556, 0.035662923, 0.008705645, -0.017022535, -0.11589909, 0.030071909), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(-0.15126535, 0.116061516, 0.26665378, -0.11970062, -0.192801, 0.021354547, -0.253131, 0.12830788, -0.17019245, 0.06896555, -0.0015308838, -0.0076949615, 0.031619042, -0.14708556, -0.11876281, -0.053292263), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(-0.14085393, 0.15730241, 0.10422539, 0.025466066, 0.10541659, -0.0012975787, 0.041553672, 0.059082996, -0.154172, 0.08198402, 0.09771777, -0.068264395, 0.047784068, -0.11348507, 0.004380174, -0.089181446), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(0.04478754, -0.18557417, 0.13422509, 0.15747893, -0.009310171, -0.0116828615, -0.0116161555, -0.0065923473, -0.028874157, 0.17116025, -0.15008302, 0.0864679, -0.10439667, 0.09480786, -0.14620537, -0.12444), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(-0.10271061, 0.037290677, 0.16068509, -0.0020577735, -0.26431653, 0.0316218, 0.13216278, 0.039026607, 0.114048995, -0.08055903, -0.25474527, 0.03769183, 0.11541464, -0.13846509, -0.23404308, 0.059910618), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(0.03207741, -0.057938, -0.083276935, -0.08009412, 0.11193717, -0.07672049, -0.16157848, -0.11298354, -0.17304356, 0.08984146, -0.050554533, 0.15308471, -0.05547862, -0.15691018, 0.07320868, -0.042120814), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(0.048134506, -0.10295267, 0.051832333, -0.13681562, 0.103027515, -0.06026332, 0.06881206, -0.015670486, 0.28807607, 0.03059088, 0.034055263, 0.017337816, 0.05512398, 0.075067505, -0.036354467, 0.06471895), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(-0.085566096, 0.014341178, -0.08384431, -0.051138613, -0.13172193, -0.10944131, 0.052603673, 0.10315314, 0.13149905, -0.10674123, -0.007911778, -0.028487006, 0.13898246, -0.018405652, 0.04242993, -0.10391517), target2);\n\t\n\tMF4 target3 = { 0.07341823, -0.019611815, -0.09007808, -0.022756629 };\n\ttarget3 = MulAdd(a1, MF4x4(-0.0017213221, -0.15371315, -0.092273064, -0.10798677, 0.009334791, 0.22254497, -0.097098924, 0.029816378, 4.457267e-05, -0.1057864, 0.4134007, 0.14368671, -0.004629636, 0.17854625, 0.2903048, -0.06277739), target3);\n\ttarget3 = MulAdd(b1, MF4x4(-0.046712447, 0.119774394, -0.117091574, 0.09618261, -0.10770648, 0.124485455, 0.075216, -0.28377417, -0.24061379, -0.09114137, 0.23112294, 0.12123567, 0.025058655, 0.093606554, 0.10327309, -0.024526346), target3);\n\ttarget3 = MulAdd(c1, MF4x4(0.019105028, 0.06630737, 0.032209937, 0.09685681, -0.018223759, 0.04791892, -0.008235882, -0.29300943, 0.25300565, -0.2488416, 0.08808891, 0.23057054, 0.07350692, -0.106139764, -0.063049704, -0.059718538), target3);\n\ttarget3 = MulAdd(d1, MF4x4(0.0455073, -0.051755026, -0.11883914, 0.20130287, -0.131154, 0.017220428, 0.12068244, 0.070289314, -0.12415149, -0.22242554, 0.08771896, 0.0035022376, 0.24336605, 0.08416074, 0.028170893, -0.03845105), target3);\n\ttarget3 = MulAdd(e1, MF4x4(0.03242001, 0.102102384, -0.17709577, -0.0109795965, 0.08089789, -0.021498924, 0.06255124, -0.042419348, 0.108601704, -0.05202687, -0.12712812, -0.17035247, 0.17001751, -0.045719698, 0.09703396, 0.037530866), target3);\n\ttarget3 = MulAdd(f1, MF4x4(-0.09127368, 0.18729141, 0.11323561, 0.12806842, -0.058737166, 0.1974935, -0.1213344, 0.26005578, -0.041523788, -0.0029840702, 0.14748086, -0.10480214, -0.06823255, 0.045274846, 0.078861825, 0.088076524), target3);\n\ttarget3 = MulAdd(g1, MF4x4(-0.10629749, -0.023263903, -0.082174115, -0.121970475, 0.21234329, 0.0262291, 0.1745219, 0.07722097, -0.12979622, -0.046668485, -0.0027060192, -0.07948489, -0.1455228, -0.1722979, -0.11220583, -0.15050055), target3);\n\ttarget3 = MulAdd(h1, MF4x4(0.04207767, -0.08237373, 0.07580429, -0.02124768, 0.12718296, 0.053528596, -0.09762217, -0.0045613465, -0.04504155, 0.18147692, -0.13206507, 0.118414916, 0.03825585, -0.23475614, -0.06268228, 0.086768724), target3);\n\ttarget3 = MulAdd(i1, MF4x4(0.034695115, 0.07061876, 0.04965704, 0.17847943, -0.1437011, 0.15886799, -0.201469, -0.063395016, -0.1750345, 0.11911144, -0.188721, 0.08700757, 0.14036323, -0.08573763, 0.10530263, -0.07726266), target3);\n\ttarget3 = MulAdd(a2, MF4x4(0.21503586, -0.18479058, 0.0074815084, 0.09756983, 0.037916277, -0.17987613, 0.11589862, -0.028243838, -0.20950282, 0.026752079, 0.10840585, 0.15400405, 0.08625402, -0.07633785, 0.0017439253, -0.072862245), target3);\n\ttarget3 = MulAdd(b2, MF4x4(0.008905137, 0.106612414, -0.07793345, 0.15220572, -0.0028391609, -0.10614796, -0.17509677, 0.09583197, 0.18518968, 0.005445739, 0.12949161, 0.07129458, 0.06554234, -0.1308029, -0.029664468, 0.010993508), target3);\n\ttarget3 = MulAdd(c2, MF4x4(-0.054151967, -0.21677336, 0.17064962, 0.06138102, -0.06272079, -0.11186543, -0.02262431, 0.27793702, 0.019080682, 0.121934734, -0.08267019, -0.08607981, 0.10281368, -0.015739575, 0.07353178, 0.10465199), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.11974522, 0.044251468, -0.15450975, -0.075565055, -0.04790616, -0.031326365, 0.27381012, -0.094721034, -0.11900706, -0.06368458, 0.10776822, 0.18564561, 0.089738145, -0.0016327037, 0.18722743, 0.09222095), target3);\n\ttarget3 = MulAdd(e2, MF4x4(-0.02468192, -0.16873443, -0.02480979, -0.13937175, -0.13027008, 0.15577625, -0.01477261, 0.07563496, -0.00062903174, 0.071869016, 0.17108877, 0.00066113746, -0.29290298, 0.07078572, -0.054790854, 0.09035019), target3);\n\ttarget3 = MulAdd(f2, MF4x4(0.066045515, -0.11800159, -0.0750722, -0.08316888, -0.08140103, -0.107804835, 0.1621138, 0.16997898, -0.04444603, 0.28161287, -0.28550264, -0.17914039, -0.15597315, 0.15387748, -0.047001313, -0.042532828), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.025888437, 0.13297214, -0.07546064, -0.06647902, 0.017062671, -0.2597112, 0.13725336, 0.10858415, -0.1160102, 0.13422437, 0.1592752, 0.15240288, 0.03929169, 0.2020017, 0.07010354, 0.028547695), target3);\n\ttarget3 = MulAdd(h2, MF4x4(-0.0703738, 0.13582481, -0.036476467, -0.096972756, -0.12283295, 0.13071987, -0.056827262, -0.023500688, -0.0075902776, 0.06296815, -0.049109932, 0.16880427, 0.29702982, -0.01992682, 0.013997502, -0.070870094), target3);\n\ttarget3 = MulAdd(i2, MF4x4(0.108744465, -0.09422798, 0.13146311, -0.250233, 0.016463336, -0.12794453, 0.03931633, 0.17450981, 0.11661872, 0.12163951, -0.1192709, -0.05398837, -0.24910302, 0.19006594, -0.1857664, -0.1205357), target3);\n\ttarget3 = MulAdd(a3, MF4x4(-0.054634392, 0.052315067, 0.05044536, -0.05177968, 0.21537638, -0.014019764, -0.06632539, 0.030889641, -0.18629341, -0.04575244, -0.07509494, 0.09061459, -0.0686147, -0.1872925, -0.08178069, -0.17149752), target3);\n\ttarget3 = MulAdd(b3, MF4x4(-0.08697341, 0.15311632, 0.06298225, -0.17094718, -0.0854164, 0.037885193, -0.048915166, -0.010449174, 0.030081013, -0.02462675, -0.105993316, -0.100794375, -0.05364704, -0.120219246, 0.16426747, -0.016683623), target3);\n\ttarget3 = MulAdd(c3, MF4x4(0.1442815, -0.2285766, 0.14395493, -0.01616554, -0.054909255, -0.06734717, 0.044498604, -0.07669548, 0.06888753, 0.2329823, -0.2728349, -0.06917594, 0.049095903, 0.0144689595, -0.08170211, -0.21154584), target3);\n\ttarget3 = MulAdd(d3, MF4x4(-0.0032911033, -0.30628094, 0.01655303, -0.12639484, -0.043794096, 0.12097294, 0.10301277, 0.0323829, -0.20977376, -0.2598986, -0.032757662, 0.062723145, 0.065447785, -0.10534467, -0.061504886, -0.25371954), target3);\n\ttarget3 = MulAdd(e3, MF4x4(-0.062172186, -0.12031234, -0.05312447, -0.07274714, -0.044065587, 0.060389437, -0.011823414, 0.08889303, 0.010290733, -0.056499645, -0.012554047, 0.13659821, 0.062492277, -0.1463726, -0.30616954, -0.048617195), target3);\n\ttarget3 = MulAdd(f3, MF4x4(-0.05244876, 0.056097146, -0.06787384, 0.09076766, -0.09579352, -0.0066260016, 0.15201993, 0.03254239, 0.021516487, 0.15981875, -0.1432654, 0.17569521, 0.12658277, -0.1530729, -0.14634636, -0.00258191), target3);\n\ttarget3 = MulAdd(g3, MF4x4(0.19284594, -0.24125227, -0.06610495, -0.22473419, 0.19109339, 0.20509472, 0.022192668, 0.13134679, -0.16711204, 0.03866372, 0.040778622, 0.004792002, 0.06713585, -0.11313002, -0.0494123, 0.16455573), target3);\n\ttarget3 = MulAdd(h3, MF4x4(0.08695826, 0.03544317, -0.22323117, 0.10693563, -0.060470764, 0.14525974, -0.12502834, -0.10161133, -0.29323998, -0.14850102, 0.0802706, 0.14540558, 0.07584563, -0.105335936, -0.10063164, -0.16825674), target3);\n\ttarget3 = MulAdd(i3, MF4x4(-0.09106831, -0.054964047, -0.0060697296, 0.1795092, -0.031979155, -0.17847598, 0.02053048, -0.09066955, -0.27984852, 0.11892948, 0.24315885, 0.18758732, 0.16902542, -0.21777025, -0.012130184, -0.060705084), target3);\n\ttarget3 = MulAdd(na1, MF4x4(0.059577208, 0.060833983, 0.10868721, 0.11276571, -0.2327309, -0.11088089, 0.20807125, -0.021718912, 0.030323144, -0.10312503, -0.22234069, 0.16634466, 0.19398251, -0.0545838, -0.13059108, 0.017868554), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(-0.07514213, 0.10887309, 0.1218314, -0.18563306, -0.008527813, -0.20459747, -0.030698426, 0.0844588, 0.23686919, 0.03104538, 0.08527714, -0.09642553, -0.08534072, 0.06419827, -0.12806654, -0.11365306), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.039864887, -0.25141066, 0.13011548, -0.13584746, -0.013512096, -0.17277367, 0.08957357, 0.24380256, -0.033397153, -0.012431397, 0.082527, 0.020838374, 0.016154792, -0.29341805, -0.015195005, 0.022471353), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(-0.11212281, 0.08150235, 0.0055854055, -0.28806004, -0.09078987, -0.05241604, -0.09806806, -0.2560824, 0.043018572, 0.013310293, -0.018843893, 0.049140453, 0.17483246, 0.12305487, -0.096557006, 0.0123909665), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(0.09532439, 0.15352365, 0.20087242, 0.08491758, -0.24605502, 0.16663635, -0.13709177, -0.12777333, 0.02181133, 0.036698326, -0.003161005, 0.05891433, -0.055862445, 0.29106724, -0.17064662, -0.14393678), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(0.0058135563, -0.22420937, 0.07235329, -0.124738544, 0.08238468, -0.2015809, -0.03386368, -0.17470017, 0.057452828, -0.06164105, -0.13776, -0.09869882, -0.0026272335, -0.20054811, 0.019651942, -0.2600821), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(-0.17325936, -0.05762174, -0.06450132, 0.050736707, 0.045916766, 0.00402603, -0.08697255, 0.12957326, -0.17539512, 0.087370165, -0.004544662, -0.073203914, -0.010898469, 0.12600337, -0.012520381, 0.034228735), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(-0.10941816, 0.0907973, -0.0004870752, -0.0067486484, -0.0726075, 0.2144327, -0.055393726, -0.023118004, -0.14722143, -0.15563087, -0.06595914, -0.048578046, -0.030177968, 0.20142747, 0.01779709, 0.01655237), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(-0.08580983, -0.026037404, -0.077059925, -0.087288134, 0.004400565, -0.011133582, 0.17784919, 0.23502137, 0.047681976, -0.11357638, -0.0896771, 0.0067448434, -0.10454412, 0.17173828, 0.02538007, 0.012261617), target3);\n\ttarget3 = MulAdd(na2, MF4x4(-0.1899917, 0.035758197, 0.09290593, -0.321715, 0.0062465663, 0.0014386866, 0.016894078, -0.115979955, -0.0027755008, 0.06348923, 0.03340955, -0.24005453, 0.049253695, -0.038937677, 0.11952727, 0.0399283), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(-0.0768814, -0.070920505, 0.32928568, -0.09117129, -0.030737674, -0.10276032, 0.008501685, -0.092094645, -0.119966194, 0.08019844, 0.06642611, -0.061083883, 0.11307649, -0.031231074, -0.032001212, 0.13963008), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(-0.07274599, 0.0010301028, 0.045785096, -0.010552021, -0.13573211, 0.271882, -0.22248295, -0.28493458, 0.024056, 0.14095017, 0.065386854, 0.06830046, 0.039510656, -0.09839122, 0.20431511, 0.09510801), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(0.015967855, -0.18058023, 0.18704537, 0.18511131, 0.08232382, 0.0142269125, -0.045059025, 0.09668988, 0.062527284, 0.15584159, -0.19181041, -0.09103482, 0.07462716, 0.08690921, -0.006602257, -0.048261993), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(0.06590294, 0.03255081, 0.27418908, 0.12957683, -0.056972653, -0.13130698, 0.116743594, -0.021665238, -0.049696703, 0.1355714, -0.034948308, 0.013496893, 0.08264742, -0.040836275, 0.066302836, -0.008282482), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(-0.031672716, 0.062036, 0.0670039, 0.118378155, 0.16932462, 0.19176582, -0.14296779, -0.07521962, 0.08186631, 0.13872068, 0.2050204, 0.23874411, -0.05187021, -0.14518432, 0.17769787, 0.13543007), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(0.23216663, -0.07822891, 0.19363302, 0.14644198, 0.23314826, 0.16843605, 0.14231025, 0.39938375, 0.012976297, 0.04872197, -0.056092817, -0.06786196, -0.13020758, -0.16039686, -0.08942605, 0.06917485), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(0.13809198, -0.07787285, -0.0032761474, 0.08901838, 0.06670918, 0.23262213, 0.19812497, -0.29459605, -0.16106832, -0.089955695, 0.018862866, 0.027937569, -0.068481594, 0.0515106, 0.0076716254, -0.020717952), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(0.15160611, -0.056448795, -0.01282516, -0.060768176, -0.13858989, 0.070536785, -0.036451727, -0.007100553, -0.06416002, 0.1640014, -0.012680492, 0.089894645, 0.089873075, -0.12290447, 0.07415422, 0.051840447), target3);\n\ttarget3 = MulAdd(na3, MF4x4(0.049169756, 0.012065099, 0.044702023, 0.41471246, -0.22039439, 0.26710343, 0.03259032, -0.0010071819, 0.122387365, 0.016845915, -0.04162581, 0.16303158, -0.018624788, -0.018498175, 0.119111605, 0.066239804), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(0.1304685, -0.015543399, 0.09727904, 0.025493689, 0.11235736, -0.024798019, 0.24016461, 0.05678371, 0.29092878, 0.008495527, -0.08145035, 0.1277052, 0.09728953, -0.064336315, 0.018896975, -0.0052928496), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(-0.22020516, 0.17298244, 0.08216116, 0.13081113, -0.058733664, 0.14459507, 0.1042437, 0.10113822, -0.012354008, 0.21633418, 0.059657548, 0.14173268, 0.026709042, -0.10159428, 0.14287837, 0.16256075), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(-0.03602925, 0.19763114, 0.14659521, 0.079257175, -0.048765395, -0.04763924, -0.023928326, -0.07900388, 0.13704984, 0.08109074, -0.017959716, 0.0065745655, -0.052421648, -0.03608805, 0.06062624, 0.11137132), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(0.10591948, 0.0052649123, 0.18899056, 0.0075388527, 0.035225954, -0.062119495, 0.022104654, -0.10452858, 0.03833499, 0.26919907, -0.078174464, 0.0016594962, 0.09164568, -0.05362235, 0.047250915, -0.031277195), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(0.0244364, -0.06794058, -0.021393122, -0.053156774, 0.15241314, -0.09962311, -0.03456499, -0.016867915, 0.1597494, -0.12681212, -0.010430228, 0.00086353114, 0.027244834, 0.08854933, 0.1284529, -0.05862663), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.12345045, -0.044616744, -0.04131162, 0.13541003, -0.047810026, -0.12005011, 0.010486988, -0.021923149, 0.11812008, 0.17721419, -0.032736443, -0.15231252, -0.13128845, 0.07795993, 0.047232933, -0.07249807), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(0.08612666, 0.02928595, 0.24572, 0.1079535, 0.06905186, -0.040503707, 0.08792316, 0.13987797, 0.14096849, -0.026072232, -0.024833977, -0.031660788, -0.07927557, 0.03298344, -0.08978443, 0.112841055), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(0.15270372, 0.07552049, 0.09564199, -0.13284975, 0.003842602, -0.029099604, 0.0003256477, -0.09769279, 0.12788263, -0.10107807, 0.10767, 0.23706906, -0.059877742, 0.09791839, 0.04538287, 0.16307582), target3);\n\n\tMF3 target4 = tex7.SampleLevel(sam, pos, 0).rgb;\n\ttarget4 = MulAdd(e1, MF4x3(0.022627862, -0.020713277, -0.009454221, -0.04352193, 0.058409747, 0.07186154, -0.009326966, 0.034919802, 0.04204233, 0.025182368, -0.039986387, -0.04990386), target4);\n\ttarget4 = MulAdd(e2, MF4x3(0.0116241425, -0.039915055, -0.050241623, -0.0076204035, 0.050215762, 0.059038218, -0.006659752, -0.0054298495, -0.003807067, 0.011085346, -0.009443587, -0.009128077), target4);\n\ttarget4 = MulAdd(e3, MF4x3(0.0453952, 0.004603456, 0.006256434, -0.104142666, 0.05726496, 0.069169044, -0.10102446, -0.034291938, -0.013720296, -0.035107866, -0.008388971, -0.0068969135), target4);\n\ttarget4 = MulAdd(ne1, MF4x3(-0.038070124, -0.015017457, -0.015852718, 0.0607464, -0.052079927, -0.07268223, 0.008773512, -0.026051786, -0.027285712, -0.022916751, 0.048140153, 0.064897746), target4);\n\ttarget4 = MulAdd(ne2, MF4x3(-0.01670857, 0.012646949, 0.03353705, 0.038032394, -0.044542246, -0.06310885, 0.002600519, -0.00824961, -0.008912322, 0.023435717, 0.021788329, 0.008603494), target4);\n\ttarget4 = MulAdd(ne3, MF4x3(-0.02889454, -0.0058613745, -0.010699256, 0.12959917, -0.046572708, -0.06832117, 0.028117642, 0.020422146, 0.00869695, 0.035915125, 0.009355984, 0.005175107), target4);\n\n\ttex4[gxy] = target1;\n\ttex5[gxy] = target2;\n\ttex6[gxy] = target3;\n\ttex8[gxy] = MF4(target4, 1);\n}\n\n//!PASS 7\n//!DESC Conv-4x3x3x24\n//!IN tex4, tex5, tex6, tex8\n//!OUT tex1, tex2, tex3, tex7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex5.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex5.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex5.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex6.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex6.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex6.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex6.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { -0.124429956, -0.023968874, -0.009741961, 0.000734556 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.053204395, 0.2134829, 0.12336964, -0.10227736, 0.13940702, -0.124413736, 0.3020443, -0.2065515, -0.004734049, 0.037971064, -0.17321284, 0.041885074, 0.077058956, 0.12063891, -0.010338445, 0.06337065), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.12816934, 0.14948028, -0.09161687, 0.009573578, 0.22003245, 0.044031654, 0.090882175, -0.14265673, 0.06734865, 0.05421324, 0.11106335, -0.020738617, 0.02484326, -0.059336618, -0.009157065, 0.0821956), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.02057381, -0.053952582, -0.05662845, 0.043356568, 0.2431925, -0.117109254, -0.03546069, 0.32747653, -0.0656724, -0.10274332, -0.026182862, 0.16777003, -0.038789105, -0.011600223, -0.06111373, -0.045530178), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.11627616, -0.2680533, 0.010153158, 0.04263144, -0.046353284, -0.05806104, 0.08532106, 0.02319678, -0.12570818, 0.0359389, 0.020782439, 0.10452313, 0.06330789, -0.0086953, -0.03920925, 0.06789389), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.08820413, -0.13917038, -0.049961973, 0.10507677, 0.25912637, 0.048801307, 0.13123387, 0.055866715, -0.055367444, 0.1428978, -0.040858068, 0.20058946, 0.0673469, -0.17162299, 0.15529002, 0.41366217), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.081712715, 0.04338456, -0.0368015, -0.0018422191, 0.16511263, -0.21779254, 0.065223925, 0.4804269, 0.26078546, -0.038037203, -0.2898542, 0.2068737, 0.101655796, -0.12456843, -0.11357212, -0.005879897), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.074044555, 0.07722422, 0.062057327, -0.039013617, 0.12760206, -0.18111233, -0.01114239, 0.1514668, -0.008963988, 0.23631106, 0.18362597, 0.14166053, -0.046458114, 0.16774492, 0.17774823, -0.008998563), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.09820194, -0.054974817, -0.015640004, -0.037923157, 0.22821093, -0.03986652, -0.0074655996, 0.04587354, 0.05650628, 0.112482674, 0.023865355, 0.24882393, -0.011221855, 0.13942584, 0.003652544, -0.06288897), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.31229278, -0.10419711, -0.004614452, -0.032103445, -0.00018427879, 0.027711036, 0.028399462, 0.082576215, -0.056645207, 0.038272534, -0.011554511, 0.33454514, -0.21628743, 0.11849716, -0.23067485, -0.087079175), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.14960206, 0.29916358, -0.36191732, -0.096665345, -0.08732554, -0.10081626, 0.10593716, -0.0143145975, 0.12768494, 0.3251397, 0.23868982, -0.08632128, -0.07138096, -0.029475177, 0.07199368, -0.0016260111), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.17022541, 0.19862384, 0.0029171365, 0.07225595, 0.08387519, -0.051419877, 0.16522466, -0.04951881, 0.07093068, 0.34544435, 0.08639415, -0.0077871718, 0.07875624, -0.10820802, 0.015711969, 0.1371948), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.11947513, 0.03204784, -0.22552966, 0.05517582, 0.13209006, -0.06262761, 0.0719108, -0.083935544, -0.17171475, 0.07105399, 0.013485666, -0.13865131, -0.20124301, -0.10171288, -0.17265166, -0.1650513), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.038657106, -0.11968214, -0.04953467, 0.03988426, 0.18497725, 0.00012608049, -0.014361117, 0.016538745, 0.053768195, 0.21468902, 0.22507563, 0.13274029, 0.09316226, 0.10554355, 0.13079438, -0.020738615), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.3934315, -0.14415179, 0.022628346, 0.067308314, 0.06434691, -0.09336087, -0.067665786, 0.05017148, -0.06534398, -0.048088152, -0.037155427, 0.1489594, -0.054163337, 0.2329102, -0.105613016, 0.0012456856), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.24050267, -0.0067265374, -0.0153115215, 0.06555275, 0.19129738, 0.0043795216, 0.063948326, -0.13967972, -0.40650475, 0.09109113, 0.07856194, -0.13390535, -0.08199262, 0.17485364, -0.090266995, -0.012882164), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.387764, -0.15284535, -0.269682, 0.063642666, 0.08651869, -0.23153405, -0.10131002, 0.0043905224, 0.220928, 0.17752749, -0.01569877, -0.0686579, 0.21019012, 0.20529252, 0.06952716, -0.058749653), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.293644, 0.036391325, -0.07392813, -0.086678274, 0.2078697, -0.11507264, 0.028548734, -0.16409987, 0.17409426, 0.1885014, 0.084329076, -0.15027794, 0.20641033, 0.06187141, -0.03875406, 0.0032009226), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.10790136, 0.1387389, -0.1781791, 0.21425287, 0.12715636, -0.063490026, 0.09555745, -0.10528784, 0.12758408, 0.29311177, 0.0432301, -0.021469813, 0.021922017, 0.082767464, 0.15348153, 0.12735313), target1);\n\ttarget1 = MulAdd(a3, MF4x4(0.0062385295, 0.11732651, 0.06049321, -0.07607647, 0.17820913, 0.06216857, 0.05036523, 0.008527562, -0.05745378, 0.065337434, -0.04389796, 0.032172143, -0.08650831, -0.13604137, 0.050570212, 0.011036989), target1);\n\ttarget1 = MulAdd(b3, MF4x4(0.016900355, 0.14422971, -0.106490955, -0.052399695, 0.13446756, 0.07712888, 0.0058913217, 0.07991085, 0.038670607, -0.25514704, 0.12148176, 0.17061579, 0.11421595, 0.022622943, 0.058726758, -0.17090438), target1);\n\ttarget1 = MulAdd(c3, MF4x4(0.055515286, -0.19921277, -0.0012379233, 0.064982586, 0.26003027, -0.026233593, 0.07716586, -0.025661616, -0.11324887, -0.0035626758, 0.017872687, -0.10889948, -0.09775516, 0.07376668, -0.07696171, -0.2438295), target1);\n\ttarget1 = MulAdd(d3, MF4x4(0.032405633, -0.05084789, -0.088054694, -0.10841894, -0.0075752116, 0.13531004, -0.1457409, 0.13204673, 0.0792082, 0.12976237, -0.07244278, -0.11369213, 0.06102383, -0.23130623, 0.0485402, 0.06685668), target1);\n\ttarget1 = MulAdd(e3, MF4x4(-0.13683872, -0.053872824, -0.06719165, -0.070855714, 0.019770421, 0.18132222, 0.027324507, -0.04910738, 0.17011392, 0.057926424, 0.0857354, -0.14427422, -0.066373795, 0.09973484, 0.02194641, 0.17209244), target1);\n\ttarget1 = MulAdd(f3, MF4x4(-0.07172457, -0.09989123, 0.06346084, 0.007205204, -0.18027657, 0.007516025, -0.0042022206, -0.0091036465, 0.18030393, -0.009558301, 0.12717903, -0.02116024, 0.14172006, 0.012544988, -0.16633627, 0.13234323), target1);\n\ttarget1 = MulAdd(g3, MF4x4(-0.026680972, 0.26901576, -0.053663265, 0.0021016174, 0.032445803, 0.037003934, 0.05414299, -0.035497934, -0.10569329, 0.050672166, -0.01144387, 0.05000742, -0.057444472, 0.0010797186, 0.018822541, -0.04636653), target1);\n\ttarget1 = MulAdd(h3, MF4x4(0.135361, -0.058395687, -0.033542126, 0.09484118, -0.07793999, 0.013546507, 0.11820586, 0.14490362, -0.016325314, -0.0062904614, 0.12631275, 0.1394393, -0.049356613, -0.02528993, 0.26334915, -0.032557055), target1);\n\ttarget1 = MulAdd(i3, MF4x4(0.077839315, -0.052373778, 0.036136296, -0.05023568, -0.07987715, 0.018897712, -0.17742547, 0.18015353, 0.2571155, 0.058656774, 0.013118142, 0.12145675, 0.14177194, 0.099529505, -0.028370513, 0.25136563), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.0747753, -0.15949982, 0.076973855, 0.080785476, 0.25431648, -0.120426156, 0.059631538, 0.13541599, -0.006538664, 0.06348775, -0.15413675, -0.011688718, -0.0877202, -0.07138076, -0.20553613, 0.17151853), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.24562076, -0.31801596, 0.2534939, -0.054888077, 0.23713852, -0.23484352, 0.015403321, 0.28927258, 0.02333135, 0.115237035, 0.051989716, -0.0774211, -0.17619006, -0.042421665, -0.17778155, -0.16379887), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.15642986, -0.0426825, 0.075349115, -0.13867629, 0.112977736, 0.06540842, 0.0059138774, 0.090976134, 0.102575876, -0.07702354, -0.060852207, -0.07358783, -0.030642396, -0.12437998, 0.19073227, -0.008556629), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.009600349, 0.19660307, 0.06310739, -0.091261774, 0.1383758, -0.10920792, 0.01987075, 0.10960847, -0.03973851, -0.05378361, -0.053934645, -0.062070217, 0.017768001, -0.109798394, -0.27830756, 0.14825441), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.2253333, 0.04887524, 0.007540527, -0.21392706, 0.28378952, -0.22518088, -0.09280502, 0.25905597, 0.1558124, -0.06532809, -0.052613363, -0.038770456, -0.09479437, 0.39384437, 0.09516288, -0.29169223), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.023066722, -0.20169239, 0.025786614, 0.12992494, -0.0011414116, -0.0023400988, 0.13305776, -0.017615285, -0.06834794, -0.06084079, -0.10924924, 0.039389268, -0.0040167933, 0.049587116, 0.07590412, 0.31464538), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.1917511, -0.008846332, 0.0914183, -0.06694468, 0.054535903, 0.19732447, 0.17194839, 0.12368525, -0.11447456, -0.10244315, -0.082908966, -0.103707045, 0.06248975, -0.14130668, -0.068753496, 0.23984621), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.10043509, 0.036193024, 0.017117409, 0.15630378, 0.29531795, -0.20785378, -0.17022829, 0.010861576, -0.052274987, -0.050172083, -0.09687743, 0.025382213, 0.1061047, -0.019923043, 0.1905993, 0.31907213), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.023860455, 0.013424604, -0.055340413, -0.006086705, 0.26867437, -0.18745743, 0.11919189, 0.05196282, -0.09836886, -0.10949307, -0.064731866, -0.14198364, 0.46431017, -0.14794265, 0.025133874, 0.38547024), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.06934901, -0.20738873, 0.14471452, 0.03087651, 0.18033424, 0.16282603, -0.050284263, -0.041595727, -0.11747435, -0.04275445, -0.20998137, -0.056565028, -0.050009515, 0.13573733, -0.08438032, -0.07363902), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.1109324, -0.08281566, 0.080020756, -0.07565862, 0.16276588, 0.13186535, 0.17810473, 0.051175643, -0.1470848, -0.08119655, 0.22341052, -0.14562707, -0.22091609, 0.08912351, 0.062519215, -0.17822169), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.02652961, -0.050731696, 0.06761707, -0.070221156, 0.11255305, 0.15729706, 0.18315557, -0.0030489026, 0.08721225, -0.04417, -0.044907395, -0.0631245, -0.010991895, 0.14397791, -0.016412318, -0.016923137), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.12462993, 0.14335859, 0.08130342, -0.16543365, 0.010432147, 0.019978197, -0.017498186, 0.03631899, 0.057306956, -0.06078837, -0.015008236, -0.24389061, -0.10250533, 0.31660014, 0.33440468, -0.12124798), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.27909592, 0.21149877, 0.050259847, -0.24782999, 0.07350583, -0.03168507, -0.0206597, 0.07860909, -0.07629377, 0.1713701, 0.24176298, -0.25509474, 0.002090829, 0.051905315, 0.25929084, -0.09076089), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.13923247, -0.083095506, -0.12958083, 0.008588576, 0.068224825, 0.094012275, 0.1395537, 0.0690222, 0.13958463, -0.02742012, 0.13905828, -0.04970139, -0.0629641, -0.15277445, 0.016491361, -0.13742869), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.0027394858, -0.07178526, 0.07668042, -0.16290356, 0.10704169, 0.27434343, -0.003009555, -0.0124241095, 0.031501733, -0.10345558, -0.12258338, -0.055458266, 0.08220533, 0.16282788, 0.22585614, -0.04099274), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.18252786, 0.032287426, 0.03831364, 0.03279567, -0.015436468, 0.16594371, -0.022859711, 0.014286839, -0.020073507, -0.06752274, 0.04850366, -0.03098202, 0.055985507, 0.030877378, -0.12457596, 0.012876079), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.2959125, 0.12508816, -0.05321822, -0.1051829, 0.16586393, 0.07608049, -0.042397983, -0.0069031697, 0.13237686, -0.07125681, 0.021239927, 0.17826323, -0.14433292, 0.013577087, -0.14554563, -0.2040924), target1);\n\ttarget1 = MulAdd(na3, MF4x4(0.33643177, -0.09343892, 0.05079197, -0.008774256, -0.002809458, -0.07406135, -0.33292174, 0.026698712, 0.3655136, 0.07260544, 0.3903461, -0.025114482, 0.038028333, 0.104210675, -0.4062275, -0.078964405), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(0.19767492, -0.1537188, 0.049587816, 0.23333088, -0.3893781, -0.011501175, -0.1826917, -0.12794746, -0.06709039, 0.015785962, -0.18090555, -0.11386157, -0.12038564, 0.011559484, -0.12779875, -0.14214684), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(-0.15774208, 0.24946158, -0.040942013, -0.1251321, -0.3509982, 0.07450445, -0.14480934, -0.20172012, -0.11019966, -0.07905495, -0.1572328, 0.12654895, 0.119401105, -0.12334677, 0.10720092, -0.06545273), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(-0.037104636, 0.33563337, 0.20923309, 0.028749982, 0.13854796, -0.13161437, 0.038462456, -0.14479184, 0.15403077, -0.04880203, 0.13780783, 0.06471987, 0.2944117, 0.13432993, -0.31482598, -0.06599348), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(0.54742974, 0.121937156, -0.07866791, 0.07451098, -0.03663172, -0.1554786, 0.059384037, -0.004000904, -0.04610048, -0.10617931, -0.18522029, 0.03238723, -0.085027255, -0.07754074, 0.22321595, -0.22000736), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(0.34576082, 0.054670934, -0.006112889, 0.08788217, -0.11128527, 0.016721481, 0.0025457302, 0.10134559, -0.08420967, 0.077211045, 0.04456844, 0.15408081, 0.08043456, -0.03195054, 0.068368874, -0.0011692513), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(-0.109538294, 0.035212234, -0.068712965, -0.09868468, -0.12186257, 0.122597136, -0.06546314, -0.024811305, -0.018210687, 0.09266877, -0.091002055, -0.05117649, 0.076985, 0.08579534, -0.14370322, -0.08178749), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(-0.21291538, 0.03441726, -0.01899837, -0.15328759, -0.17070505, 0.151839, 0.15083382, -0.08944362, -0.3224203, 0.012464086, 0.08693216, 0.014108278, -0.13456593, 0.008793197, 0.14650744, -0.04115599), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(0.12686576, 0.033990897, -0.0039116694, -0.12522134, 0.066877596, 0.09016868, -0.05867825, 0.08331187, -0.018720012, 0.10592668, 0.050558716, 0.35772276, -0.09896201, 0.057353813, -0.106769, 0.028894106), target1);\n\t\n\tMF4 target2 = { 0.0570952, -0.011593155, 0.033286963, 0.00014048154 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.056590553, 0.03216381, -0.0666051, 0.19334152, -0.0050108447, -0.22589503, -0.057469424, -0.09344944, -0.1051364, -0.25752833, -0.035817955, -0.29675537, -0.1419535, -0.11206299, -0.005250591, -0.02839156), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.113020144, 0.028738707, 0.052538726, -0.039978653, 0.052219037, 0.057554238, 0.104583465, -0.03326389, 0.12732053, -0.09863676, -0.19774933, 0.10953924, 0.052640375, -0.2623868, -0.055126745, -0.12773202), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.17464705, -0.082161404, -0.18110912, 0.07796715, 0.04916518, 0.11231854, -0.086312726, -0.034675486, -0.19010356, 0.032855187, -0.013579661, 0.37123898, -0.014220876, -0.006728799, 0.08287457, -0.1138056), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.13857616, -0.09273926, 0.13864596, 0.18886924, -0.011879785, 0.32183805, -0.051207457, 0.037754197, -0.09221778, -0.02035246, -0.17649348, 0.020960717, -0.07177013, 0.09179843, 0.080085315, 0.122304566), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.16989891, -0.08335691, 0.084998704, 0.11291987, -0.3019433, 0.0076751867, 0.093596675, 0.06530408, 0.1206327, 0.091008104, 0.109547265, 0.25353962, 0.036133915, 0.093532056, 0.061501086, 0.0021566728), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.017881159, -0.13595797, 0.01136082, 0.16003034, 0.10847896, 0.19483434, 0.26643255, -0.13653097, -0.02909977, 0.0048497478, -0.07825304, 0.19495782, 0.051259015, 0.06378301, -0.25297102, 0.12415515), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.1937498, -0.054339543, 0.010112153, 0.1686902, -0.010859902, 0.017609913, 0.13538137, 0.21478494, -0.15561095, 0.03826493, 0.030638125, 0.15134248, 0.02018713, 0.09653892, 0.012655936, 0.12929274), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.10884013, -0.059027947, 0.09222052, 0.08509775, -0.23504566, 0.10800187, 0.35871732, -0.27244377, 0.1780951, -0.09118458, -0.08485235, 0.18791482, 0.12209446, 0.0061277915, -0.011919617, -0.258573), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.08261666, -0.107749484, -0.15589459, 0.23786806, -0.25947818, -0.07595851, 0.19160344, -0.024088206, -0.008799499, -0.17963524, -0.25323853, -0.026271267, 0.108688876, -0.21407057, -0.3583868, 0.09666366), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.13808286, -0.04138869, -0.16940956, 0.3419983, 0.055550236, -0.020949477, -0.0067749163, -0.19835842, 0.030675124, 0.075373225, 0.12566806, -0.04334421, -0.102529705, 0.04508018, 0.23232533, 0.0019694006), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.15215543, -0.016466457, -0.088040456, 0.17388342, 0.04182113, 0.18802759, 0.064585775, -0.14804406, -0.24339275, 0.17330259, 0.027834702, 0.058299657, -0.031298336, 0.31788856, 0.07080272, 0.24237408), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.16990338, 0.3701443, 0.12791218, 0.14076602, 0.20176111, 0.0302564, 0.24510148, -0.13427663, -0.38024938, 0.12371078, -0.01582557, -0.3158842, 0.20104642, 0.07178823, -0.1876278, 0.084532306), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.14377905, -0.058295894, 0.18250984, -0.09202952, 0.049288724, 0.06361697, 0.015274134, -0.009651323, -0.042051505, -0.012071234, 0.1326135, 0.019923072, -0.15128869, 0.25043762, -0.13259046, 0.00053170364), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.094158195, 0.12379144, 0.19022636, 0.18195347, 0.013914745, 0.061979804, 0.02451591, -0.11115476, -0.17788209, 0.13222231, -0.13186376, -0.1616039, -0.24425243, 0.1886775, 0.0112440875, -0.06601394), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.030136446, 0.2917132, -0.27445439, 0.17572524, 0.041303374, 0.023066396, 0.15800332, -0.2759435, -0.13819514, 0.15358543, -0.20889634, -0.015854366, -0.046221938, -0.029213084, -0.20027846, -0.096412785), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.0125947185, 0.0055787223, -0.09309416, 0.076822944, -0.093398675, 0.2956369, 0.06577939, -0.23052916, -0.07925194, -0.072308525, 0.024827626, -0.060508657, -0.12151571, 0.026541036, -0.12048794, -0.07427358), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.10964251, -0.17297563, 0.13372806, 0.049176272, -0.05832845, 0.017144928, -0.048461188, -0.15870371, 0.11398971, -0.107922345, 0.13167588, -0.14817321, -0.10338058, -0.31081274, 0.08330581, -0.29687402), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.16665904, -0.2640339, -0.29233927, 0.038875308, -0.05411785, 0.16937009, 0.12490365, -0.124583, -0.07552158, 0.11799862, -0.28171206, -0.00040758983, -0.19385974, -0.06890529, 0.14208162, -0.1088734), target2);\n\ttarget2 = MulAdd(a3, MF4x4(0.06168567, 0.08464485, 0.051727522, 0.0080752885, -0.024248002, -0.10022553, 0.16323335, 0.023631554, -0.05933269, -0.062205136, -0.18094447, 0.059799075, 0.21466024, 0.008523474, 0.26693302, 0.23969485), target2);\n\ttarget2 = MulAdd(b3, MF4x4(-0.15529208, -0.011878417, -0.18483245, 0.14569621, 0.063189425, -0.19457999, -0.030479494, -0.06388341, 0.059255358, 0.021795692, -0.18915053, 0.10549042, -0.14347872, 0.035095137, 0.5123671, -0.36842114), target2);\n\ttarget2 = MulAdd(c3, MF4x4(-0.3129531, 0.18427932, 0.08967258, 0.030795548, -0.062971294, 0.13863337, 0.1719862, -0.12454022, -0.13502273, 0.09999501, -0.08539335, -0.009761404, 0.12899344, 0.13241018, 0.07476177, 0.088581234), target2);\n\ttarget2 = MulAdd(d3, MF4x4(0.060355544, -0.20497295, -0.056201037, 0.17441384, -0.07366008, 0.0031770081, 0.10340366, -0.065828614, -0.0135689005, 0.0018236408, -0.061976664, 0.2355626, 0.10771512, 0.077624, 0.13811535, -0.07868492), target2);\n\ttarget2 = MulAdd(e3, MF4x4(-0.17156444, -0.026765984, -0.10527619, 0.03830846, 0.09402895, -0.004862654, 0.076368734, -0.14964046, 0.043011688, -0.23503943, -0.0006939608, 0.14159496, -0.044676844, 0.173952, 0.110504664, 0.0019379692), target2);\n\ttarget2 = MulAdd(f3, MF4x4(-0.17247017, 0.08168303, 0.17221324, -0.06592961, 0.0044269604, 0.15659723, -0.055933986, -0.042620275, 0.06073025, 0.2532331, 0.10132909, -0.117701456, 0.12096025, 0.10205398, -0.18403697, 0.18307333), target2);\n\ttarget2 = MulAdd(g3, MF4x4(0.09575911, -0.05598526, -0.00019075947, -0.09576007, 0.20932649, -0.20390967, 0.039013285, -0.0673076, 0.10174375, -0.029520035, 0.08187042, 0.0113893915, 0.2773657, -0.14660437, -0.052826468, -0.066547535), target2);\n\ttarget2 = MulAdd(h3, MF4x4(0.073659964, 0.11016725, 0.03967363, -0.14039496, 0.14510235, -0.023440665, -0.14824589, 0.040890865, -0.17982483, -0.06410239, 0.1368475, 0.06049977, -0.04931566, 0.16838568, 0.032267325, -0.14558685), target2);\n\ttarget2 = MulAdd(i3, MF4x4(-0.09795584, 0.042064235, -0.031120127, -0.14744717, 0.027100604, -0.24968515, -0.21389422, 0.04229415, -0.09014897, 0.12878452, 0.25642878, -0.08038266, 0.19971558, 0.11135897, -0.36821046, 0.1422662), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.1094647, -0.016677434, -0.028883765, 0.3192714, 0.09875388, 0.063245736, 0.14410317, 0.032648303, -0.06333742, 0.27168024, 0.022700999, -0.24260196, 0.2008466, 0.0035053317, 0.033708334, 0.08848844), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.14528061, -0.15028432, -0.12186915, 0.2541439, 0.10196279, -0.08628881, 0.013626965, 0.0865205, -0.06720443, -0.012042523, 0.2745774, -0.15612917, 0.052762404, -0.048645414, 0.2373206, 0.15480334), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.30316323, 0.13258561, 0.064958744, -0.006462185, -0.18336357, -0.042762443, 0.14428605, 0.0022340214, 0.126048, 0.080833666, 0.009115843, 0.03493862, 0.10809081, -0.16448757, 0.3997175, -0.110012166), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.02458684, -0.057449866, 0.030437991, 0.12050426, 0.09614844, -0.014490843, 0.028539594, 0.04805738, -0.09334032, -0.025414651, -0.08732445, -0.23192073, -0.17476203, -0.09348745, -0.08307593, -0.23019521), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.35522544, -0.079090506, 0.008817837, 0.2532623, 0.34887648, -0.06478506, -0.08268971, -0.01187354, -0.01297639, -0.1617383, -0.08950093, -0.27147245, -0.18539499, -0.025695372, 0.014795757, 0.070290186), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.10833107, -0.04752071, 0.0257186, 0.045938533, -0.17696926, -0.044409238, 0.013435127, -0.026669621, -0.039547954, -0.24273679, -0.11717763, 0.03446355, 0.20519058, 0.14973645, -0.06620626, 0.27608195), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.05178539, -0.052307468, -0.031603504, 0.087410286, -0.02714207, 0.19870313, -0.07222196, 0.016593033, 0.1256676, -0.0017593893, -0.09573438, 0.06781198, -0.21133266, 0.17265096, -0.18769167, -0.44435498), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.06497008, -0.036607113, -0.044402726, 0.2149976, 0.13416344, 0.042011082, -0.101590805, -0.020510921, -0.06912339, -0.054973233, -0.044747703, 0.14244531, -0.28504518, 0.3040643, -0.09546776, 0.31751406), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.084402256, 0.09284107, 0.035581376, -0.0062208944, -0.09883153, 0.10322051, 0.1348337, -0.31998435, -0.012351705, -0.1971895, 0.22683385, -0.12512599, -0.07051629, 0.2452453, 0.083472766, -0.20878734), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.20292963, 0.044648554, 0.15208347, -0.08012225, -0.12525047, 0.015525035, 0.09556482, -0.11069662, -0.085732915, 0.011575785, -0.025669998, -0.14913903, -0.04931291, 0.012865525, -0.12986338, -0.01954532), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.008896974, -0.039155565, 0.027794836, -0.117017545, -0.06935417, -0.026629506, 0.007301185, -0.46567324, 0.037060194, 0.09720974, 0.2845551, -0.3020958, -0.025294555, -0.30916882, 0.18453851, -0.18012975), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.030631881, -0.008507908, -0.09436097, 0.0311627, -0.20561115, 0.11587156, 0.09280758, -0.085967906, 0.3602613, -0.044544138, 0.1323068, -0.009463272, -0.0025823591, -0.15646757, -0.046626896, 0.16452411), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.0077203126, -0.100717455, -0.2011105, -0.14975028, -0.20319125, 0.10198259, -0.04371703, -0.27115488, 0.027433528, -0.09739682, -0.13802922, -0.26861516, -0.048793945, 0.06584455, 0.06585165, -0.008628782), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.10281875, 0.040024713, -0.2812408, -0.020755077, 0.013610964, -0.032100085, -0.019541265, 0.08268734, -0.03297649, -0.037923373, -0.18825053, 0.07058112, 0.08730599, 0.03063617, 0.02987196, -0.0043262425), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.040238652, -0.13039924, 0.14888343, 7.490741e-05, -0.2158812, 0.24641772, 0.006157586, -0.04499295, 0.144089, 0.07224167, 0.17486697, -0.035505384, 0.1524877, 0.14747557, 0.17406234, 0.11407642), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.016506152, -0.010222893, 0.13286552, -0.21776699, -0.09772777, 0.1287599, -0.03898535, -0.16048339, 0.16613074, 0.07386897, 0.010006783, -0.109998874, -0.44924134, -0.10780198, 0.20899624, 0.0225183), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.009322647, 0.037628874, -0.07781525, 0.096469015, -0.13213164, 0.112819366, -0.009472233, -0.2799395, -0.13030471, 0.15054065, -0.06948136, -0.15108407, 0.15611546, -0.033660483, -0.015103015, -0.11582756), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.1565792, -0.020967469, 0.18913873, -0.16583163, -0.1238118, 0.09852521, -0.22204556, -0.03933885, -0.0059996913, 0.26517454, 0.029015608, -0.0067967405, 0.12023722, 0.020479612, -0.11405568, 0.09855018), target2);\n\ttarget2 = MulAdd(na3, MF4x4(-0.100906074, 0.1372623, -0.06694728, 0.24972913, -0.050774068, -0.040847532, -0.2658499, -0.055020068, 0.017677482, -0.10252552, 0.093889, -0.066453, -0.11749236, 0.117650375, -0.009431862, -0.13268448), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(0.0062916246, 0.11412136, -0.04665643, -0.05716979, -0.3630308, 0.056478713, 0.13907139, -0.46697688, -0.17572168, -0.032978512, -0.25377706, 0.2386579, 0.08279535, -0.078310356, 0.14829971, -0.22042938), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(0.032816015, -0.30565384, -0.16489638, -0.16715215, 0.19837156, 0.2794504, -0.056615926, -0.15358809, -0.040108953, -0.30223787, 0.23217356, 0.0056255152, -0.018384434, 0.151488, 0.1853468, 0.08032189), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(0.0664597, -0.20910838, 0.26195124, -0.07578308, 0.13466386, -0.040509395, -0.005630214, -0.10919593, 0.09764661, -0.099661686, 0.105231985, 0.18113208, -0.13830248, -0.16406676, -0.36873665, -0.110502236), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(-0.009745877, 0.050425317, 0.041368794, 0.34543577, 0.017489558, -0.1383922, 0.02555688, 0.08608152, 0.2675467, -0.14163154, -0.009072096, -0.04938327, 0.02321701, -0.23915094, -0.20346476, 0.02754088), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(-0.0764608, -0.18401545, 0.18727265, -0.107619025, 0.02815041, 0.14077562, -0.05316665, 0.3057819, 0.033161953, -0.15832557, -0.13877237, 0.1657462, 0.01894343, 0.23329574, -0.14319004, 0.031079128), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(-0.3142226, 0.09312817, 0.08794322, 0.2222839, -0.06945857, 0.14425695, -0.014134404, 0.005755717, 0.010266066, -0.26988292, 0.04765992, 0.24445806, -0.11784465, 0.028391482, -0.09065907, 0.13896856), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(-0.17636561, -0.056445003, 0.06597882, 0.020473091, -0.13026594, 0.12097649, -0.060047906, 0.30939278, 0.20875697, 0.074364014, -0.06563088, -0.052628025, -0.07981685, -0.054282684, 0.006551467, 0.08257015), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(0.1486522, 0.27273872, -0.16233566, 0.08857763, 0.034426562, 0.31791484, -0.11444188, 0.20239855, -0.17699686, 0.40953103, -0.19843663, 0.32758692, -0.017546277, 0.040539514, -0.13233976, 0.054549627), target2);\n\t\n\tMF4 target3 = { -0.109316595, 0.025873583, 0.05582306, 0.10272255 };\n\ttarget3 = MulAdd(a1, MF4x4(-0.028246857, 0.09429872, 0.034600366, 0.022117741, -0.034094583, -0.1416488, 0.114190586, -0.19039942, -0.03329484, 0.054765828, 0.0518203, -0.20784369, -0.11068853, -0.03985197, -0.040889204, -0.15233918), target3);\n\ttarget3 = MulAdd(b1, MF4x4(0.0034295225, -0.0047144215, -0.13811362, 0.1063775, -0.042283904, -0.11053704, 0.031115215, -0.19094694, -0.07958675, 0.25251713, 0.27887833, 0.032974306, -0.007945948, 0.005038382, -0.018204618, -0.033514593), target3);\n\ttarget3 = MulAdd(c1, MF4x4(-0.021439308, 0.09934385, 0.06221231, 0.20019929, 0.031433582, 0.10136135, 0.03170799, 0.22528099, -0.13307518, 0.0042947256, 0.12888439, 0.057041943, -0.093636274, -0.098759346, -0.0013004189, -0.11623657), target3);\n\ttarget3 = MulAdd(d1, MF4x4(-0.12425962, 0.06631687, 0.03538785, 0.12683366, 0.036875088, -0.388709, 0.021293538, -0.06568616, -0.022915881, -0.17667641, -0.21997124, -0.15674002, 0.12193349, 0.05480543, -0.028813047, -0.092471436), target3);\n\ttarget3 = MulAdd(e1, MF4x4(-0.23961155, -0.10273245, -0.08654801, 0.20536228, 0.15906096, -0.28645602, -0.20196053, -0.24955072, 0.030706927, 0.0390173, -0.18619792, 0.042841963, -0.021935288, 0.18055134, 0.056804277, 0.06829802), target3);\n\ttarget3 = MulAdd(f1, MF4x4(-0.17750104, 0.060207605, -0.16278192, 0.10637904, 0.09263751, -0.15864064, -0.1921883, 0.15418245, -0.21325666, -0.060680047, -0.17831814, 0.08721947, 0.028428067, 0.110841654, -0.0018111315, -0.14204408), target3);\n\ttarget3 = MulAdd(g1, MF4x4(-0.05341328, 0.022792514, 0.12271092, 0.10998399, -0.05194629, -0.0019651174, 0.096098036, 0.05388034, -0.09140511, -0.09375859, -0.033423815, -0.051705707, 0.40354738, -0.09664782, -0.16623749, -0.063937105), target3);\n\ttarget3 = MulAdd(h1, MF4x4(-0.036799524, -0.0768793, -0.13867554, 0.0018584719, -0.1217911, -0.24234816, 0.09708973, -0.011562908, -0.04658245, -0.0382149, -0.06386236, -0.18728544, -0.07053968, 0.022178814, -0.011753032, 0.09338199), target3);\n\ttarget3 = MulAdd(i1, MF4x4(-0.040192164, -0.042503025, -0.10662553, 0.04789613, -0.14751524, -0.10168207, 0.09263359, -0.042696435, -0.32350782, 0.12660037, -0.004465994, -0.006698753, 0.11897201, -0.046830907, -0.13950327, 0.06639755), target3);\n\ttarget3 = MulAdd(a2, MF4x4(-0.35137546, 0.16106302, -0.03942045, 0.20408326, -0.21793413, -0.19028474, 0.03843431, 0.16594443, 0.06715659, -0.12361966, 0.09516593, -0.07226092, -0.0021764247, 0.09041338, -0.042596035, 0.17071731), target3);\n\ttarget3 = MulAdd(b2, MF4x4(-0.1597755, -0.0058896556, -0.14055388, -0.1015749, 0.03897486, -0.14616072, 0.14914623, 0.04983836, 0.19837128, 0.031061351, -0.012111387, -0.14318599, 0.015185477, 0.015783781, 0.0806122, -0.029704068), target3);\n\ttarget3 = MulAdd(c2, MF4x4(-0.039973997, -0.039424386, -0.00023192639, 0.08071814, 0.096021704, -0.20885538, -0.12213241, -0.023790348, 0.09664941, -0.10268222, 0.13096042, -0.05173415, -0.37291482, 0.07015618, -0.33403385, -0.083771), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.03271248, 0.30518225, -0.07270691, 0.028075088, -0.05705947, -0.15325841, 0.100330696, -0.025110118, -0.076902226, 0.14327222, 0.06624428, 0.13375239, 0.37281695, 0.07052823, -0.14584045, -0.21908635), target3);\n\ttarget3 = MulAdd(e2, MF4x4(0.120670766, 0.31895483, 0.025020262, -0.07187204, 0.12886079, -0.044927042, -0.016122498, -0.042634714, 0.13163976, -0.042178337, 0.1995516, 0.0356841, 0.15696648, 0.08892613, 0.21146311, -0.119200125), target3);\n\ttarget3 = MulAdd(f2, MF4x4(0.07862659, -0.04457566, 0.026738126, -0.21411496, 0.10438254, -0.18654525, -0.01533368, 0.13947518, 0.10588101, -0.028714191, 0.15771964, 0.121909015, -0.10983157, 0.2185668, -0.068225995, -0.12562555), target3);\n\ttarget3 = MulAdd(g2, MF4x4(-0.12062531, 0.0967178, 0.09571875, 0.23502766, 0.09096207, -0.21987092, 0.024857553, -0.048271395, 0.14787363, -0.033102654, 0.13895266, -0.04427544, 0.04914057, 0.048905186, -0.057733577, -0.26991108), target3);\n\ttarget3 = MulAdd(h2, MF4x4(-0.06448222, 0.0056067007, 0.06258581, 0.16081811, 0.11269595, -0.120004445, -0.013984294, -0.13933693, -0.07139989, -0.052229576, 0.14940026, 0.023361623, -0.09279362, -0.18860416, 0.08875797, -0.007527515), target3);\n\ttarget3 = MulAdd(i2, MF4x4(-0.074545845, 0.030673563, 0.15330285, 0.13776723, 0.10154421, -0.092071116, 0.04683676, -0.06964785, 0.10431926, 0.08699972, 0.23528512, -0.033892516, -0.14641368, 0.117580056, -0.004050138, -0.02582363), target3);\n\ttarget3 = MulAdd(a3, MF4x4(0.14190136, 0.077225044, 0.09930474, 0.007267315, 0.092006706, 0.037188467, -0.027249279, -0.054990012, -0.03665177, 0.12651706, -0.100975744, -0.09072935, 0.24675299, 0.06761549, -0.05267532, 0.10347854), target3);\n\ttarget3 = MulAdd(b3, MF4x4(0.10791531, -0.1370413, -0.08286376, 0.03607253, -0.0308955, 0.07522176, 0.018555947, -0.12568206, 0.112782314, 0.28888306, -0.003996075, 0.028732201, 0.25184667, -0.2680978, 0.02647103, -0.046891168), target3);\n\ttarget3 = MulAdd(c3, MF4x4(-0.016372435, 0.010370288, 0.048521012, 0.17552224, 0.12718126, -0.07016058, 0.07195029, -0.020361308, 0.12597205, 0.08013731, -3.848295e-05, 0.0050118286, -0.009566892, -0.20061424, -0.03470485, -0.006634675), target3);\n\ttarget3 = MulAdd(d3, MF4x4(-0.014340514, -0.061068784, 0.073101744, -0.026097663, -0.060043298, 0.03856278, -0.06831028, 0.01917565, 0.0030782523, -0.27292702, 0.009022088, -0.0835327, 0.15536709, 0.19875537, -0.04220971, 0.12280315), target3);\n\ttarget3 = MulAdd(e3, MF4x4(-0.05038896, -0.0450083, 0.11035315, 0.017889546, -0.04486168, 0.02630088, 0.076166764, 0.040405206, 0.101371124, 0.013579925, -0.14421356, 0.10385705, -0.040398728, 0.16730694, 0.21123065, 0.08927596), target3);\n\ttarget3 = MulAdd(f3, MF4x4(0.14247608, -0.020986153, 0.23048729, 0.016399987, 0.08749712, -0.042591766, 0.10078401, -0.235661, 0.16211063, 0.06193226, -0.074332505, -0.016298788, 0.045263976, 0.15765212, 0.07818007, -0.04620609), target3);\n\ttarget3 = MulAdd(g3, MF4x4(0.021306554, -0.09750117, 0.08551645, -0.04607957, 0.023408834, -0.023608467, -0.20876807, -0.059991024, 0.073818475, -0.011034656, 0.021592963, 0.2020669, 0.0658326, -0.037186112, -0.12142336, 0.024981985), target3);\n\ttarget3 = MulAdd(h3, MF4x4(0.14970483, -0.034374855, 0.059193425, -0.053641498, -0.012546929, 0.12899692, -0.14678986, 0.010604312, 0.06670342, -0.16510558, 0.008418653, -0.07479036, 0.18447658, -0.048377503, -0.09458383, 0.0069656954), target3);\n\ttarget3 = MulAdd(i3, MF4x4(0.058000036, -0.16915704, -0.019119963, -0.045525633, -0.037617203, 0.25589603, -0.25075126, 0.06523698, 0.17653236, -0.061193496, 0.06445885, 0.012287812, 0.102899276, 0.110979825, -0.22975717, 0.1812179), target3);\n\ttarget3 = MulAdd(na1, MF4x4(0.06707089, -0.20528378, 0.046027422, 0.09201046, -0.026794929, -0.14959913, -0.1530082, -0.11166134, -0.1543093, -0.018212209, 0.1530343, 0.16413027, -0.041838966, 0.10568013, 0.027219504, -0.045931514), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(0.0007681395, 0.027546167, -0.055535425, -0.16842778, 0.031941716, 0.10155229, -0.15778649, 0.20752658, -0.040377192, -0.30390355, -0.023281433, -0.030623253, -0.09503612, -0.17188235, 0.09639771, 0.006249103), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(0.06934318, -0.0011609821, -0.1791592, 0.03465803, -0.24253, 0.05893978, 0.13887544, -0.07227747, 0.01218867, 0.029141122, -0.05214466, -0.12778749, -0.1760804, -0.06785066, -0.007493355, 0.14466043), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(0.018881964, -0.05313997, 0.026167642, -0.11774113, 0.106899664, -0.04816693, -0.032971296, -0.2197493, -0.30351043, 0.41334164, 0.09371295, 0.117004104, -0.32039383, 0.21075623, 0.059145812, 0.22701162), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(0.15627995, -0.068059504, -0.025623176, -0.099454194, 0.053013522, -0.1204116, -0.019655226, 0.07376517, -0.25296777, -0.08185056, -0.055070046, -0.0901355, -0.11905481, -0.05469155, -0.017616548, -0.081166655), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(0.13076767, -0.05530982, -0.050112855, -0.12159198, -0.13501246, -0.003588778, -0.13545947, 0.11865785, -0.05613547, -0.068032116, -0.08055732, 0.21331398, 0.004210958, 0.0020068642, 0.028101314, -0.09094483), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(-0.06359586, 0.13318597, -0.013024477, 0.108700395, 0.11144461, -0.20727357, -0.024350716, -0.22389533, -0.09566586, -0.0131226955, -0.11817035, 0.09054735, -0.27647895, 0.07672232, -0.047891885, 0.071800984), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(-0.030071015, 0.1333995, 0.031153332, -0.086189225, -0.0019152679, -0.01622374, 0.040289503, -0.15809211, -0.12741992, 0.10740146, -0.051979292, -0.116695315, 0.320744, 0.0039460426, -0.0836046, -0.09634563), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(-0.09536935, -0.052188914, 0.047246125, 0.015771315, 0.044488825, -0.08132813, -0.27927315, -0.13175185, 0.024771225, -0.24907906, -0.023289192, -0.04971131, 0.05681843, 0.07283831, 0.064641275, -0.26641592), target3);\n\ttarget3 = MulAdd(na2, MF4x4(-0.027925663, -0.1507286, 0.1326965, 0.016842714, 0.008826637, -0.16630088, 0.057058703, -0.18538098, -0.023735443, 0.032016642, 0.12527052, 0.16732964, 0.086843535, 0.035672616, 0.2063971, 0.09174031), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(-0.1374101, 0.0033208288, 0.10667102, 0.010594156, 0.046161152, -0.0973723, 0.038522966, 0.021097187, 0.016156282, -0.19751011, 0.28385642, 0.05756371, -0.05513193, -0.2048188, -0.21631682, 0.07647592), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(0.17377815, 0.15260585, 0.053718828, 0.05137225, -0.022358606, -0.1206224, 0.18654475, -0.36442846, 0.037749466, -0.1104878, -0.11404351, -0.06023782, 0.20938018, 0.07982189, 0.07250349, -0.07269494), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(-0.21727799, 0.060607027, 0.020804053, 0.18055809, 0.065868735, 0.027194923, 0.07823965, -0.0036479903, -0.00017318636, 0.08600115, -0.025587326, 0.07114245, -0.019529548, -0.13423847, 0.13471194, 0.09455981), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(-0.0054947184, 0.08912019, -0.0287804, 0.06010462, 0.01399159, 0.06061662, -0.11517458, -0.097311266, 0.050931722, 0.22020856, 0.1323814, -0.04628687, -0.11665284, -0.28899986, -0.24807844, -0.26831678), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(-0.030188283, -0.03878683, -0.017246237, 0.06085806, -0.018588748, 0.022792742, 0.25868282, -0.07614454, 0.13609566, 0.048479818, 0.1144347, -0.11878534, -0.0087716095, -0.10999109, -0.052827284, 0.05120022), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(0.13541034, 0.01645716, -0.058492333, -0.038296085, 0.100599736, -0.116733365, 0.04200369, -0.025886245, 0.10077625, -0.16246797, -0.17139618, 0.1154542, 0.048264973, 0.28143618, 0.21083501, 0.1901906), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(0.17519377, 0.11165914, 0.06639653, 0.07394748, -0.007674659, 0.16630298, 0.19389485, -0.095608205, 0.08834474, -0.014449134, -0.1498579, 0.10741625, -0.15439212, 0.067960866, -0.037635356, -0.15552957), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(-0.06438933, 0.014048397, 0.10090704, -0.113563396, 0.16256817, 0.05490672, 0.07492557, -0.117161274, 0.21595421, -0.043381806, -0.051558085, 0.1740199, 0.2152678, 0.2786416, 0.16830157, 0.2127052), target3);\n\ttarget3 = MulAdd(na3, MF4x4(-0.15677509, -0.43225375, 0.060302902, -0.25911507, 0.33240193, -0.042785197, 0.12322616, 0.060724694, 0.19070825, 0.06739152, -0.11829862, -0.29873747, 0.044883754, -0.02737334, 0.35752672, 0.027660733), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(-0.031477857, -0.061355617, 0.14307205, -0.27185053, 0.0042110113, -0.17895593, 0.18448347, 0.1663187, -0.027779656, -0.038476624, -0.20109327, 0.0049036117, -0.33461937, -0.11617029, 0.16388293, 0.08732086), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(-0.14116575, -0.2656471, 0.11648339, -0.0032394545, 0.1182878, -0.3112847, 0.022472465, 0.01861419, -0.17598355, 0.09062213, -0.078444645, 0.08435301, -0.076718464, -0.27557522, 0.2719488, -0.2709603), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(0.27406302, -0.038197294, 0.08674393, -0.1581159, 0.13235791, -0.2564229, 0.1109576, -0.0176378, 0.15548801, -0.0590908, -0.017661547, -0.2397164, -0.13061532, 0.23031203, 0.13042833, -0.1644423), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(-0.07506608, 0.038386136, -0.079568535, -0.14536263, -0.14519933, 0.049832735, -0.0716522, 0.08434604, -0.12847446, 0.0008543391, -0.14790097, 0.021308336, -0.28987315, 0.2929442, -0.057600517, 0.0779305), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(-0.026810233, 0.11869411, -0.11281911, -0.14480188, -0.22689806, 0.28260702, 0.08524954, -0.016079135, -0.139977, 0.1590218, 0.24256052, 0.11876038, 0.1039834, 0.10720082, 0.15955658, -0.08241476), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.0018456473, -0.044888236, 0.2312576, -0.2259125, 0.1552541, -0.10646746, 0.25436193, -0.0140782725, -0.11281806, -0.045578834, 0.089749135, -0.14050213, 0.09813328, -0.5474639, 0.084324725, -0.13670866), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(-0.18577714, 0.0991832, 0.02898408, 0.04317898, 0.25488335, -0.30257443, 0.0083487155, 0.00078779995, -0.0014885734, -0.116033524, -0.12751958, 0.20800439, -0.13863127, -0.14012383, -0.082795866, 0.07694529), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(0.124679685, 0.012901697, 0.15855546, -0.031145798, 0.044944238, -0.1519666, -0.015208867, 0.029840399, 0.07195047, 0.17145973, 0.06601934, -0.03358433, 0.16031715, 0.16808309, -0.007914282, -0.19619752), target3);\n\n\tMF3 target4 = tex8.SampleLevel(sam, pos, 0).rgb;\n\ttarget4 = MulAdd(e1, MF4x3(0.037913825, -0.0099191405, -0.018130798, -0.0065440857, 0.004536478, -0.0019739012, -0.014918686, -0.00011652434, 0.0007071924, -0.0033633227, -0.018028691, -0.014883887), target4);\n\ttarget4 = MulAdd(e2, MF4x3(-0.021300001, -0.039009467, -0.043097164, -0.008222791, 0.057612088, 0.063239105, 0.023676023, -0.0119777955, -0.020785704, 0.03422571, -0.009187399, -0.016286165), target4);\n\ttarget4 = MulAdd(e3, MF4x3(0.031610258, -0.022373654, -0.04004249, 0.015456217, -0.014708875, -0.017118618, -0.0235428, 0.0103508085, 0.020143243, 0.0044788374, -0.017377898, -0.023227183), target4);\n\ttarget4 = MulAdd(ne1, MF4x3(-0.036366682, 0.007874863, 0.016618004, 0.0022973057, -0.010600425, -0.012978575, 0.0070587453, 0.005480104, 0.0052379463, -0.02330911, -0.002091681, -0.0004570695), target4);\n\ttarget4 = MulAdd(ne2, MF4x3(0.0011265673, 0.017461559, 0.01678395, 0.019458788, -0.032603145, -0.042017594, -0.026735391, 0.007520235, 0.01661426, -0.023014631, 0.027602635, 0.040214695), target4);\n\ttarget4 = MulAdd(ne3, MF4x3(-0.05236764, 0.007274719, 0.023289332, -0.033428065, 0.0054935357, 0.014490033, 0.016193395, -0.012767524, -0.022695007, -0.01161452, 0.015592775, 0.017280621), target4);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n\ttex3[gxy] = target3;\n\ttex7[gxy] = MF4(target4, 1);\n}\n\n//!PASS 8\n//!DESC Conv-4x3x3x24, Conv-3x1x1x120\n//!IN INPUT, tex1, tex2, tex3, tex7\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass8(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n    MF4 a3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target1 = { -0.06673833, 0.01457202, -0.036676105, -0.06303146 };\n\ttarget1 = MulAdd(a1, MF4x4(0.03482331, -0.14944118, 0.046244163, -0.05941585, -0.07728179, 0.06265427, -0.045520462, 0.0871402, 0.0897178, -0.16006349, 0.008391846, -0.16923702, 0.25602654, 0.051176835, 0.011442495, -0.24914353), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.114224955, -0.048990358, 0.0317376, 0.19175068, -0.112552375, 0.037553445, -0.095972225, 0.123118624, 0.12175324, 0.030322522, 0.054718968, -0.39031324, 0.28009677, 0.07727779, 0.16123495, -0.2772586), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.06794576, 0.2141763, 0.1750928, 0.12166446, -0.13643269, 0.24814922, 0.037389282, 0.0035949312, -0.06241508, 0.041635923, -0.08047354, 0.010511207, 0.11825532, -0.28878912, 0.17174155, -0.25881785), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.0143542895, -0.010602584, -0.04226417, -0.04447678, -0.24656619, -0.053967457, -0.16034846, 0.04648599, 0.18855657, -0.20268312, 0.03610814, 0.022015022, -0.056165848, 0.17901546, -0.044555657, -0.089903764), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.05440948, 0.12527943, -0.08222082, -0.035428505, 0.2267783, 0.08257505, 0.056446668, -0.016560426, 0.17754072, -0.12249645, 0.15439054, -0.03524935, -0.481085, -0.0961953, -0.3649979, 0.17484458), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.04679537, 0.15213947, -0.018560365, -0.027304955, 0.012417035, 0.033497352, -0.09031395, -0.28588498, 0.15779394, -0.014294813, 0.13411845, 0.07399604, 0.05855495, -0.15351114, -0.06195114, -0.033846762), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.023053877, 0.09145102, -0.056014817, -0.103127845, -0.19463558, 0.009014216, 0.045743883, 0.105235375, 0.148088, -0.071407385, 0.1755759, 0.012725914, 0.04554227, -0.10347383, 0.23475589, -0.039336383), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.015826384, -0.042269874, 0.056471203, 0.009655403, 0.020275326, 0.33224702, 0.009298279, 0.17336445, -0.018828178, 0.10215806, 0.049400896, 0.17038062, 0.057019416, 0.07406004, 0.03215971, 0.12004367), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.04070164, 0.027889524, 0.02177609, -0.16229889, -0.062548086, -0.027596086, -0.12423675, 0.09836905, 0.059131406, -0.047028925, -0.057379283, -0.104133494, 0.14117907, 0.065780245, -0.023410192, 0.061447598), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.0021021653, 0.077328384, -0.06821109, -0.19499542, -0.20052336, 0.12387703, 0.055179324, 0.19800851, -0.120995775, 0.42741755, 0.091175236, 0.020587375, 0.0042481394, 0.12762432, -0.06114739, 0.32906154), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.019685917, -0.040947627, 0.18565354, -0.46952146, -0.05437026, -0.026286738, -0.07812705, -0.006736804, 0.008634472, 0.23204291, -0.11855498, -0.12303054, 0.38381273, 0.52490336, -0.3265505, 0.21160527), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.18054116, 0.0051548174, 0.4753756, 0.17605813, -0.073726274, 0.15002227, -0.1850507, 0.0990851, 0.00921903, 0.13224806, 0.2253796, -0.20556282, -0.109973975, 0.046794172, 0.16226935, 0.08110087), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.010205323, -0.09720397, 0.029996833, -0.10599145, -0.052096535, -0.053859178, -0.07132246, -0.040684257, -0.0064441697, 0.20659602, 0.26825082, 0.05841878, -0.102910444, -0.19080183, 0.0009101689, 0.31210572), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.10222517, -0.2537438, 0.17752838, -0.08470953, 0.06963046, -0.010764146, -0.033626176, 0.15240349, -0.20436993, -0.100720614, 0.0444932, 0.20770444, 0.031174636, -0.010206393, 0.09037244, -0.55185884), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.26993337, -0.020421378, 0.18469644, -0.21327373, 0.06911363, 0.014826783, 0.056256857, -0.06809406, -0.083685525, -0.0984942, -0.0171533, -0.22855683, -0.08748469, -0.1396983, -0.11391806, -0.072031595), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.058208484, -0.091674164, 0.12105436, 0.10939658, -0.031674437, -0.05118359, -0.22271338, 0.028467823, -0.17376278, -0.123112075, -0.071464434, 0.17473213, -0.3117644, -0.18276823, 0.07496323, 0.1509144), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.05188268, 0.15533312, 0.22820903, 0.17042106, -0.089846164, -0.005064528, 0.04796515, 0.026351674, 0.04572985, 0.09318132, -0.038517136, -0.074062705, -0.036520045, 0.10455916, 0.14278695, 0.14136232), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.14247061, 0.08110525, -0.075231634, 0.31358016, -0.18515967, 0.06256364, -0.0484006, -0.017976558, -0.02657821, -0.028635541, 0.012627999, 0.054765414, -0.0019829564, 0.15433973, -0.14973663, 0.12542003), target1);\n\ttarget1 = MulAdd(a3, MF4x4(-0.17475623, 0.073300175, -0.18943344, 0.13311169, -0.026332445, 0.14347847, 0.20637734, 0.19913399, 0.24245638, -0.01550613, -0.09732818, -0.3588367, -0.11411046, -0.15500076, -0.09746209, -0.14517665), target1);\n\ttarget1 = MulAdd(b3, MF4x4(0.17039534, -0.20694748, 0.07940825, -0.29572237, -0.26519805, 0.126274, -0.22870643, 0.064273715, -0.22092016, -0.03348832, -0.08794688, -0.006346166, -0.14190583, -0.16601795, 0.15920593, 0.097251594), target1);\n\ttarget1 = MulAdd(c3, MF4x4(-0.08191819, -0.010720725, -0.10248115, -0.066204295, 0.13338344, 0.1886245, -0.1326061, -0.107134834, -0.06729155, -0.1295641, -0.09283412, -0.1643324, 0.06636283, 0.35525218, 0.0003396009, 0.04252375), target1);\n\ttarget1 = MulAdd(d3, MF4x4(0.018834922, 0.09374041, -0.04844811, -0.086488485, 0.36477897, -0.035175197, 0.10250587, 0.009436049, 0.09109528, 0.25697815, 0.12989257, -0.10460797, 0.13357025, -0.15341914, -0.14009036, -0.27027166), target1);\n\ttarget1 = MulAdd(e3, MF4x4(-0.046186987, -0.04721098, -0.10386561, 0.042765476, 0.10490874, -0.14259604, 0.03565186, 0.11228278, -0.1333764, 0.111047596, -0.20885478, 0.19843856, -0.07459371, -0.054204836, 0.0895249, 0.053722855), target1);\n\ttarget1 = MulAdd(f3, MF4x4(0.057206515, -0.016081734, 0.04002097, 0.09536414, 0.27507696, 0.009611371, 0.2858957, 0.016278412, 0.091774575, -0.020857088, -0.1354684, -0.046553783, -0.10013868, 0.059088446, 0.1768699, 0.02272152), target1);\n\ttarget1 = MulAdd(g3, MF4x4(0.028798534, 0.21127033, 0.01716753, 0.020965017, -0.08091736, -0.15006042, -0.29822782, 0.019595081, -0.029534074, -0.0653482, 0.11786061, -0.047803946, 0.011680036, 0.010721205, -0.2639438, 0.15042429), target1);\n\ttarget1 = MulAdd(h3, MF4x4(-0.098251216, 0.050176363, -0.0426328, -0.037756715, -0.20687164, -0.3096553, -0.2210454, -0.03763596, -0.022159807, 0.044400796, 0.09344259, -0.05465652, -0.039273985, -0.096617654, -0.19118373, 0.1643556), target1);\n\ttarget1 = MulAdd(i3, MF4x4(-0.11874077, 0.021691876, 0.15513967, -0.012177898, -0.1298149, -0.08811524, 0.017105984, -0.047422726, -0.033107523, 0.0058112773, -0.08017183, -0.020971343, -0.41264817, 0.075800754, 0.1080831, -0.082354255), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.0032239188, -0.28178176, -0.19482347, 0.054150533, 0.40856144, -0.23284851, 0.020973913, -0.09307241, 0.4258893, -0.034946837, -0.043585345, 0.16226469, 0.045328375, 0.03566808, 0.0712809, 0.12283043), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.15139721, -0.2489635, 0.2122619, -0.08517609, 0.23784684, -0.070994906, 0.3132446, -0.36519074, -0.048850738, -0.36088645, 0.2145936, 0.19312155, -0.2579365, -0.12489612, -0.075510584, 0.16864875), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.01884723, -0.2775977, 0.0007072475, 0.30131263, 0.01366198, -0.18196137, 0.38918743, -0.03999786, -0.075060904, -0.12210868, 0.14701048, 0.18474291, -0.023507686, 0.13071437, -0.036284998, 0.26304045), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.08185283, -0.09152341, -0.13410091, -0.13518219, 0.10747411, 0.007974842, 0.11000113, 0.19898382, -0.18449086, 0.058887243, -0.02379909, -0.038734827, 0.041931048, 0.081884705, 0.015872778, 0.08416657), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.05272478, -0.06669923, 0.007233672, 0.039665744, 0.021820793, -0.14690521, -0.26392132, 0.007352069, -0.04682333, -0.028595299, -0.34463075, -0.14347489, 0.00084401644, -0.030389901, 0.022279145, 0.14215061), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.17942588, 0.27815622, 0.39199513, 0.17727011, -0.14894293, -0.1705316, 0.038263746, 0.025509953, -0.12031536, 0.15371376, -0.30855826, 0.2394013, -0.20185183, 0.121072985, 0.070580006, -0.12321835), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.043464154, -0.4329999, 0.12176987, 0.1863519, -0.14952634, -0.03741596, 0.3588594, 0.015720207, 0.07319453, 0.04202827, 0.19699398, -0.18537244, -0.040319767, 0.081377335, 0.045191478, -0.070804425), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.14033453, -0.13302796, -0.058896482, 0.14912021, 0.25856513, -0.10442178, 0.3958381, -0.08528721, 0.3291926, -0.0024321752, 0.017541584, -0.31020027, 0.13845283, -0.24636552, -0.07630463, -0.32314765), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.005189076, 0.20132092, 0.069775395, 0.086517565, 0.2727916, -0.079313666, 0.14164488, -0.16358389, -0.103817366, -0.11717267, 0.019068012, 0.016953465, 0.2551057, 0.14430785, 0.00088051375, -0.23318093), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.008894086, 0.03201216, -0.13398862, 0.06335705, 0.13424714, -0.06514535, -0.19045971, -0.23764557, 0.05714849, -0.30345356, 0.0092409095, 0.16878125, -0.07465451, -0.015541787, 0.033304304, -0.113849334), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.12612185, -0.0715257, 0.16217476, -0.024476554, 0.10614049, 0.03700835, 0.08482953, -0.08358318, 0.098786205, -0.009351742, -0.15457323, 0.113223985, -0.011500662, -0.13529003, -0.058090385, 0.11290306), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.050260257, -0.056368183, 0.21489042, 0.14299081, -0.113755986, -0.22816344, 0.27275258, -0.0015117057, 0.14195545, -0.16299947, 0.049762867, 0.22725838, 0.06814647, -0.049368583, -0.08577855, -0.097503126), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.0083364155, -0.052837223, -0.0846245, 0.053218696, 0.28152695, 0.19495425, -0.19180301, -0.26389152, -0.12953846, -0.102649055, -0.19722337, -0.15851225, 0.1725756, 0.056898903, 0.01023057, -0.033678), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.044510186, 0.033060472, 0.26517934, -0.25734264, 0.11998833, -0.05369093, 0.19721112, -0.15774135, 0.061851945, -0.03981009, -0.034191426, -0.23678938, -0.013630672, -0.114661574, 0.096060224, 0.17892191), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.14728574, -0.031724717, 0.13967156, 0.03676961, -0.09500629, -0.09584641, -0.3221665, 0.14028065, -0.09116274, -0.08160823, -0.03841335, 0.21315134, -0.025303967, -0.081841856, 0.024239374, 0.004911813), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.16211908, -0.07225985, -0.06955749, 0.025049562, 0.016382609, 0.20329225, 0.23490642, 0.04267578, -0.008350769, 0.0037089891, 0.09515623, -0.06105943, 0.13584909, 0.09705268, -0.062350716, -0.074614085), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.025970146, -0.14939465, -0.08123037, -0.008690572, 0.16139375, 0.052395687, -0.03863909, 0.0953437, -0.103880964, -0.04672169, -0.078161545, 0.04628746, -0.019205566, -0.006394265, -0.009116098, 0.024979865), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.15779239, 0.009630995, -0.06269132, -0.11111548, 0.11478004, -0.0780718, -0.24617292, 0.05763241, 0.02476824, 0.0631411, -0.2777113, -0.010855008, 0.10766442, 0.020561088, -0.029775767, -0.060535327), target1);\n\ttarget1 = MulAdd(na3, MF4x4(0.6058991, -0.29998928, -0.09883167, -0.36967963, 0.104703955, -0.1886391, 0.07915164, -0.02375336, 0.041111898, 0.09216705, 0.046296816, 0.24895348, -0.015484279, 0.06852782, 0.04170421, -0.008594877), target1);\n\ttarget1 = MulAdd(nb3, MF4x4(-0.29542375, -0.11578118, -0.047219444, -0.10781526, 0.13507344, 0.09601799, 0.08975014, 0.09067836, 0.1565405, 0.082328156, 0.09181261, 0.04524675, -0.08546339, 0.107942745, 0.057727177, 0.15223116), target1);\n\ttarget1 = MulAdd(nc3, MF4x4(-0.013349778, 0.15176241, -0.08432594, 0.10960892, 0.081638165, -0.13559791, -0.06557744, 0.01141079, 0.10179259, 0.35195625, 0.23831062, 0.13698545, -0.0073695974, -0.020154724, -0.2515228, 0.030157704), target1);\n\ttarget1 = MulAdd(nd3, MF4x4(0.20604958, -0.09164565, 0.049274493, -0.111016676, -0.046125744, -0.22138667, -0.10698992, 0.07003299, 0.09432274, 0.13457412, 0.08988733, 0.16862586, -0.16797546, -0.0130331, -0.009054985, -0.01443074), target1);\n\ttarget1 = MulAdd(ne3, MF4x4(-0.17840317, -0.079730295, 0.11214133, -0.015679857, 0.07462782, 0.1700189, -0.03588104, -0.055766776, 0.2527381, -0.040385213, 0.18867272, 0.15786001, -0.03973228, -0.053887095, -0.001591716, -0.050709404), target1);\n\ttarget1 = MulAdd(nf3, MF4x4(0.24581482, 0.09119475, 0.049080588, 0.25806418, -0.005062941, 0.10484669, 0.05778071, 0.23681131, -0.09603774, 0.009163983, 0.19752978, 0.104258336, 0.13455175, -0.0034275826, -0.080408186, 0.10462319), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(0.07782564, -0.2789083, -0.13887207, -0.019308591, 0.25710207, -0.21921843, 0.0015911289, 0.080053106, -0.014144128, 0.074144535, 0.043883692, 0.2513407, 0.10068346, -0.17853074, 0.20460746, 0.04092755), target1);\n\ttarget1 = MulAdd(nh3, MF4x4(-0.048100162, 0.042697787, -0.04842476, 0.18837112, 0.051532917, 0.088649124, -0.014739274, -0.023566334, 0.44025096, -0.10545216, -0.19667506, 0.097041525, 0.0008772463, -0.05555525, 0.069248185, 0.1176431), target1);\n\ttarget1 = MulAdd(ni3, MF4x4(-0.01590801, 0.016883895, -0.09720278, 0.14969985, -0.099172674, -0.04525934, 0.13815412, 0.024430253, 0.0247448, 0.015865842, -0.10956577, 0.22523156, 0.22455531, -0.100728914, -0.053454183, 0.13590883), target1);\n\t\n\tMF4 target2 = { 0.09436162, 0.053628888, -0.037304673, 0.07278107 };\n\ttarget2 = MulAdd(a1, MF4x4(0.23879923, 0.040317934, 0.22145784, -0.08336839, -0.16966912, 0.08528278, 0.2684323, 0.17057978, 0.1467542, -0.041414198, 0.03689633, 0.10483362, 0.04390369, 0.2617799, 0.13374175, 0.21909657), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.013090143, 0.010181773, -0.022144144, -0.038787983, 0.17343685, 0.06579225, 0.036516637, -0.18973681, 0.11963511, 0.111920275, 0.13276073, 0.04570385, -0.009538788, -0.028358553, 0.06043411, 0.14202546), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.2273523, 0.086418256, 0.058296323, -0.023292154, -0.016248869, 0.08703014, -0.14549017, 0.15725356, 0.26235282, 0.13655783, 0.06703612, -0.0746187, 0.18931058, -0.009649255, 0.27345505, 8.478176e-05), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.033401724, -0.064518325, -0.15034138, 0.05246805, 0.058772895, -0.176813, 0.078342214, -0.0020414025, 0.06217457, -0.20738979, -0.16368344, 0.03266785, 0.04921403, 0.112299785, -0.123247504, 0.0994201), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.2553642, 0.14918567, -0.14866059, -0.03617286, 0.032998353, -0.15592867, 0.087743975, -0.00049046543, -0.32823107, -0.107454315, 0.002674161, -0.01887908, 0.0833454, -0.03806806, -0.14595793, -0.20520253), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.02986423, 0.028604368, -0.011768948, 0.10195398, -0.102379754, 0.1362889, -0.041802816, -0.084387876, -0.008137814, 0.09726054, 0.10758101, 0.09259081, -0.07889878, -0.07312139, 0.17478421, -0.033481717), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.058965955, 0.024142284, 0.22129168, 0.04082889, 0.15887728, 0.103434056, -0.21192761, 0.06533756, 4.1846484e-05, -0.24297993, 0.17849778, -0.115734324, -0.11500629, 0.15694802, 0.04261307, 0.17415777), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.01345909, 0.017319864, -0.0520044, 0.06891368, 0.078165226, -0.07047419, -0.013746107, -0.058885146, -0.10569072, -0.032166608, -0.02835551, -0.09911323, -0.062442902, 0.13147296, 0.1815978, -0.0042537497), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.1606494, 0.05220283, 0.13166267, 0.10574164, -0.19102532, 0.03446111, -0.055919666, 0.057688963, 0.26081654, 0.03648174, 0.03616491, 0.046591155, 0.21643688, 0.052122388, 0.050889883, 0.29552755), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.024097791, -0.080628626, 0.12568358, 0.12252691, -0.16359662, 0.0051886803, -0.01954068, 0.02195983, -0.18788633, -0.030897139, -0.09377947, 0.15688346, -0.14129396, -0.11748491, -0.3835284, -0.022647042), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.11930519, 0.24957322, 0.015541883, -0.11232224, -0.058490105, -0.049757216, 0.075522415, 0.09442181, 0.076607205, 0.037432365, -0.08629132, 0.008422209, -0.013450555, 0.10305229, -0.04537291, -0.08230579), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.050578903, -0.20879799, -0.04393353, 0.0015126837, -0.23416555, 0.01141535, -0.009691543, 0.06217469, -0.10707423, 0.20022671, 0.15437399, -0.04760398, -0.14287886, 0.2682982, -0.2561911, 0.033707578), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.11812356, -0.29858422, 0.09146616, 0.052722417, -0.023986591, 0.0933364, 0.14801602, -0.10148, -0.15320316, -0.0028770058, -0.103183694, -0.006425709, 0.021735031, -0.47796893, -0.18304059, 0.084628224), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.09104168, 0.03286581, 0.04459324, -0.22438659, 0.12870388, -0.1360097, -0.15926069, 0.071017005, 0.074596204, -0.09715285, -0.07479851, -0.20799732, -0.29060403, -0.107118085, 0.25210482, 0.16397184), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.12460523, 0.16706169, 0.30230346, 0.054767944, -0.116781175, 0.19446343, -0.21735692, -0.026413433, 0.052394047, 0.020679068, -0.15584053, 0.061340448, 0.04663544, 0.27504724, 0.20286065, 0.3490867), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.21607491, -0.21738917, -0.009051781, -0.07276944, 0.3103053, 0.15334722, 0.28409463, -0.17096485, 0.031179685, 0.2009012, -0.26543948, -0.19882691, 0.032035686, -0.35383067, -0.17236927, -0.113232605), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.11165131, -0.2941282, -0.029304054, 0.106581636, 0.21548472, -0.21285897, -0.043579012, -0.047211695, 0.027249131, 0.28340155, 0.082085736, -0.04485162, -0.24723412, -0.0007002699, 0.19643609, 0.2518287), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.1854792, -0.008842361, -0.08581101, 0.16760491, -0.10669554, 0.21352866, 0.1252966, -0.04194005, -0.07666296, 0.07259658, 0.10786684, -0.03364238, 0.1547786, -0.018965635, -0.13252488, 0.23715465), target2);\n\ttarget2 = MulAdd(a3, MF4x4(0.1451508, 0.10011578, 0.07156718, 0.04740723, -0.19702536, 0.06286184, -0.29180148, -0.30204237, -0.07179627, 0.056043524, 0.27749023, -0.07051612, 0.1010544, -0.008737285, -0.13163415, -0.066848055), target2);\n\ttarget2 = MulAdd(b3, MF4x4(0.07561846, -0.14928432, 0.027951663, -0.07524044, 0.10025779, -0.21305043, 0.008214884, 0.16192347, 0.04002263, -0.10425787, 0.018522112, -0.08742078, 0.039168026, 0.010691633, 0.0025965972, -0.016103525), target2);\n\ttarget2 = MulAdd(c3, MF4x4(-0.045149434, 0.033272427, 0.06018518, -0.068993434, 0.017645787, 0.27027842, -0.25670657, 0.04577214, 0.002479582, -0.051434338, 0.25425145, -0.093131274, 0.09688695, 0.14416668, -0.1216349, 0.0229849), target2);\n\ttarget2 = MulAdd(d3, MF4x4(0.030369451, 0.020748299, 0.034542933, 0.09359397, -0.37202555, 0.2808392, -0.2659807, -0.01941035, -0.22399698, 0.08132304, -0.0014507625, -0.017793491, 0.037623137, -0.029477628, -0.0720025, -0.15816812), target2);\n\ttarget2 = MulAdd(e3, MF4x4(0.33115733, -0.013734702, 0.0101467, -0.12268663, 0.43017596, -0.32643738, -0.3273918, 0.1109477, 0.10758731, 0.070155494, -0.24037434, -0.0016639809, -0.06652544, 0.13758285, -0.072496586, -0.10106904), target2);\n\ttarget2 = MulAdd(f3, MF4x4(0.19126198, -0.14967397, -0.18345782, -0.08460439, 0.13229868, -0.21144699, -0.058821946, -0.5039749, 0.24892776, 0.20228972, -0.06919527, -0.15942183, 0.12435562, -0.012193792, -0.2627704, 0.13625085), target2);\n\ttarget2 = MulAdd(g3, MF4x4(-0.10896958, 0.044015855, -0.0181369, 0.10650041, -0.24092299, 0.18979153, -0.26630878, 0.06806665, -0.17771733, -0.2699458, -0.1144395, 0.014184961, -0.288627, -0.19622655, 0.39838296, -0.11162213), target2);\n\ttarget2 = MulAdd(h3, MF4x4(-0.084831044, -0.02721028, 0.109261006, 0.087307416, -0.33783588, 0.08306577, -0.027817784, -0.10534335, -0.15593721, -0.013186225, -0.011052375, 0.10786937, -0.00060474424, 0.00431786, 0.38164118, 0.14728197), target2);\n\ttarget2 = MulAdd(i3, MF4x4(-0.26669395, -0.09910907, 0.03960142, -0.21382816, -0.5042419, -0.12542717, 0.07396011, -0.24485987, -0.1770452, -0.00011720843, 0.11425563, 0.07332528, -0.06640686, -0.11683248, 0.003071298, 0.05543171), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.16784829, -0.031949766, -0.043842897, -0.09577157, 0.16381639, -0.33382246, -0.10782627, 0.07903589, 0.04620696, -0.04180326, -0.09783348, 0.3095548, 0.06762379, 0.021955997, -0.14974354, -0.143973), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.14442697, -0.044818707, 0.025801856, 0.08461569, -0.20247138, 0.060513508, -0.1674155, 0.13058512, -0.08026784, -0.3141148, -0.04791329, -0.14586422, 0.16113773, -0.035697844, 0.21863447, -0.099939525), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.298011, -0.053686857, -0.31031471, 0.11162896, 0.22341007, -0.052881762, 0.13043529, 0.15810435, -0.37888956, -0.31480342, 0.33116004, 0.06646278, -0.05665705, -0.03861846, 0.083101824, 0.003781792), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.08649798, -0.1088245, 0.32511878, -0.16572024, 0.050254185, -0.252013, -0.040132295, 0.17312634, -0.016653338, -0.43009317, 0.5093538, 0.06922151, 0.08760091, -0.14250961, 0.4053319, -0.10107622), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.083406106, -0.16932109, 0.06787343, -0.05178522, -0.20603026, -0.09058593, 0.16128129, -0.22712888, 0.05429396, -0.15098302, 0.3041655, -0.07668127, -0.15419695, 0.4462755, 0.1874267, 0.17312653), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.19148338, 0.052311547, -0.13830717, 0.2996034, 0.05850986, 0.05484371, 0.0361025, 0.20699011, 0.0057291416, -0.12026241, 0.02678267, 0.12696257, -0.019684052, -0.09031823, 0.15297134, 0.13705085), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.20881316, 0.14526081, -0.41917932, -0.16191165, 0.1262819, -0.23026188, -0.2561112, 0.049415354, -0.1497713, -0.009612483, -0.070241526, -0.039475128, 0.093497746, -0.1318667, -0.105637155, -0.21147394), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.042843655, -0.11218648, 0.013391185, 0.06646476, -0.24418473, -0.037722886, 0.08446243, -0.0018849184, 0.030670485, 0.27686, -0.15015033, 0.21402857, 0.10094001, 0.3145764, -0.17310384, -0.10199286), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.14084649, 0.0033693435, -0.34370998, 0.1079324, 0.28795156, 0.14933614, 0.10669996, 0.12305359, -0.040551323, -0.07330404, -0.15179317, 0.069975436, 0.2920918, 0.020814283, -0.13944869, 0.09579582), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.10180969, -0.021659529, -0.13541374, 0.0908069, 0.11346961, -0.0011830843, -0.19612141, -0.11018402, 0.12915576, -0.095653616, -0.13800405, -0.18932076, 0.12277476, 0.09764832, 0.114954636, -0.1578187), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.07191152, -0.053082727, -0.067936264, 0.045203943, 0.13166252, 0.23256709, -0.288239, -0.08163785, -0.020897634, 0.15756424, -0.17083916, -0.13654962, -0.021136044, -0.14208466, -0.0040715886, 0.03707775), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.15754776, -0.042640373, -0.033360127, -0.06743833, -0.06533689, -0.16307046, -0.018182967, -0.060084824, -0.087093055, 0.036133945, -0.23553473, -0.40821072, -0.053628575, 0.026669571, 0.19045922, -0.035846557), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.07448724, 0.067469016, -0.066770956, 0.0030078532, -0.1173964, -0.012352791, -0.19451907, -0.021427047, 0.19994271, -0.0029543424, -0.034913633, 0.13859013, 0.048614684, 0.193721, -0.09548589, -0.026358109), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.3411652, 0.23141026, 0.10978134, 0.07787867, -0.18412182, 0.15478246, 0.25846902, -0.13144507, -0.28535685, 0.086631864, 0.12785226, 0.0033878016, 0.03504869, -0.034950025, -0.17758164, 0.024054492), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.019755604, -0.21744813, 0.14325249, 0.21274537, -0.04985571, -0.24407099, -0.02035735, 0.21803972, -0.16886176, -0.05224696, 0.20342873, -0.18543948, 0.0096319495, -0.1624773, 0.14216544, -0.081235185), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.20382723, -0.16942358, -0.15685835, 0.024889609, -0.3226424, -0.10469345, -0.46887016, 0.016228858, -0.1362387, -0.13054538, -0.0783913, -0.06385014, -0.08139782, 0.12035177, 0.21293128, -0.045476373), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.13462923, 0.1384135, -0.055161975, -0.099216595, -0.16864173, -0.15129986, -0.2535725, 0.22653887, -0.11102492, -0.09068262, -0.0044067153, -0.0603752, -0.095367156, -0.056415606, 0.0075126593, -0.009610249), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.1393697, 0.13611916, 0.090671785, 0.08593501, 0.07983876, -0.0068050954, -0.28696343, -0.17570612, -0.075322844, 0.06774856, -0.086022906, 0.09080408, 0.022836372, 0.018536389, 0.042727504, -0.043635663), target2);\n\ttarget2 = MulAdd(na3, MF4x4(-0.0050578844, -0.04774735, 0.004759578, 0.09087925, 0.16171533, 0.01599633, 0.08316812, -0.09584462, 0.119889505, 0.003919012, -0.21555036, 0.2426096, -0.12047291, 0.10978759, -0.33754483, 0.15740488), target2);\n\ttarget2 = MulAdd(nb3, MF4x4(-0.11716536, 0.08724526, -0.023726968, -0.12922543, -0.05567669, -0.021379862, -0.2031672, -0.023840401, -0.024058433, -0.081542544, -0.19171208, 0.051525865, -0.008789576, -0.16808029, -0.049115162, 0.052190997), target2);\n\ttarget2 = MulAdd(nc3, MF4x4(0.13842055, -0.13871577, 0.0954928, 0.19763501, -0.049218517, -0.21299022, -0.14797242, -0.0996971, 0.004526675, -0.107513115, -0.31193256, -0.13720018, 0.01550265, 0.017279146, -0.03583415, 0.053429827), target2);\n\ttarget2 = MulAdd(nd3, MF4x4(-0.0723815, 0.034265626, 0.20389315, -0.14053439, 0.18389022, 0.033574764, -0.039723963, -0.14978175, -0.084361784, -0.15831995, 0.49169922, -0.09837507, 0.0017199022, -0.09433373, 0.13506836, -0.06360633), target2);\n\ttarget2 = MulAdd(ne3, MF4x4(-0.1265364, 0.24196059, 0.21346883, -0.035202276, -0.16924065, -0.039915517, 0.15855956, -0.00046526943, -0.30319792, 0.47292793, 0.19538064, -0.046434846, 0.0041063935, 0.026737224, 0.14377008, -0.086429365), target2);\n\ttarget2 = MulAdd(nf3, MF4x4(-0.052318633, 0.01695744, 0.073576115, 0.2596724, -0.062066127, -0.051519766, -0.051504273, 0.05866547, -0.08328452, -0.28105405, 0.078826845, 0.18008032, 0.18682955, 0.0076535186, -0.05532054, -0.20601955), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(0.11029233, 0.16958456, 0.06657061, -0.019656291, 0.11484087, -0.044068743, 0.24364337, -0.0065622316, 0.28941217, 0.18499708, -0.19709894, -0.19475468, 0.03503256, -0.05113357, 0.10653205, 0.01789133), target2);\n\ttarget2 = MulAdd(nh3, MF4x4(0.23000862, 0.21053173, -0.18862817, 0.17935936, -0.15975583, -0.05371, -0.012876548, 0.16915809, 0.048503194, 0.16087084, 0.013947819, -0.2625692, -0.07422495, 0.12091095, -0.07861796, -0.10306009), target2);\n\ttarget2 = MulAdd(ni3, MF4x4(0.22752777, 0.25302207, -0.12559423, 0.32303494, 0.048354533, -0.09707823, -0.08385863, 0.14718369, 0.08453127, -0.12578502, 0.2255726, 0.28436616, 0.11673125, -0.109367356, -0.024817433, -0.061155386), target2);\n\n\tMF4 target3 = { -0.19256988, 0.07561771, 0.007950438, -0.050078563 };\n\ttarget3 = MulAdd(a1, MF4x4(-0.06848254, 0.17351831, 0.08460523, -0.04292461, 0.16476814, 0.12880002, -0.2188432, -0.14287443, -0.03620956, 0.03190214, -0.048488446, 0.13175257, -0.03531708, 0.25060365, -0.06213195, 0.12620556), target3);\n\ttarget3 = MulAdd(b1, MF4x4(-0.002136314, 0.14399742, 0.033703934, 0.04852668, 0.044694893, 0.044961825, -0.049827278, -0.043917865, 0.13977914, -0.08126432, -0.14917606, 0.04644499, -0.14825742, 0.14075856, 0.03092348, -0.093371935), target3);\n\ttarget3 = MulAdd(c1, MF4x4(-0.10156521, 0.17292573, 0.12147806, 0.058286913, 0.036107652, 0.11812006, -0.052188348, -0.018111996, -0.033433035, 0.13158733, 0.11174768, 0.3135695, -0.031843673, 0.14830989, 0.094200954, 0.046325628), target3);\n\ttarget3 = MulAdd(d1, MF4x4(-0.020032655, -0.07413829, 0.08400475, -0.096378304, 0.018955225, 0.022839474, 0.0059678215, -0.1027026, -0.028222635, -0.14191163, 0.1683382, 0.12842403, -0.0019999016, -0.10452298, -0.00084425067, 0.21517049), target3);\n\ttarget3 = MulAdd(e1, MF4x4(0.01772144, -0.055037472, -0.26999003, 0.08729775, -0.36895162, 0.011868349, 0.09449699, -0.098540016, -0.12167021, -0.14711088, 0.12771331, -0.23740645, 0.15759817, -0.19454266, 0.16208373, 0.24910314), target3);\n\ttarget3 = MulAdd(f1, MF4x4(-0.01581086, 0.055212107, 0.09454114, 0.04507513, 0.06458917, 0.07870699, 0.043557264, -0.057501283, 0.20402664, 0.22241214, 0.04460486, 0.08704935, 0.16451277, -0.13080528, 0.039666496, -0.026260905), target3);\n\ttarget3 = MulAdd(g1, MF4x4(0.052181657, 0.027077725, 0.06572071, 0.031183861, 0.10252249, -0.08605668, 0.041842632, -0.103617065, -0.10870241, 0.04929309, -0.036834683, 0.035595864, 0.05496096, -0.067191675, -0.021810448, 0.040137228), target3);\n\ttarget3 = MulAdd(h1, MF4x4(0.12943552, 0.027362846, -0.04002257, 0.06176385, 0.03362332, -0.10467882, 0.33771384, -0.002079538, -0.14528175, 0.14312474, 0.02974133, -0.06945553, -0.33208638, -0.1682957, 0.08194348, -0.072072215), target3);\n\ttarget3 = MulAdd(i1, MF4x4(-0.10689992, 0.0904542, 0.13820268, 0.13239543, -0.15937562, -0.123537876, -0.33618236, -0.081022464, 0.024027856, 0.26380306, -0.09225592, 0.040485747, -0.01705172, -0.049895052, -0.07952754, 0.030036716), target3);\n\ttarget3 = MulAdd(a2, MF4x4(-0.1259129, 0.018831972, -0.1832129, 0.01803401, 0.033666562, -0.17717862, 0.087922215, -0.10147714, 0.045267824, -0.25754488, -0.08662288, 0.10354607, 0.10469745, 0.19675997, -0.20195517, 0.24481302), target3);\n\ttarget3 = MulAdd(b2, MF4x4(-0.094946206, 0.015489291, -0.1777193, 0.037065975, 0.024963535, -0.3277457, -0.08534422, -0.08319194, -0.18495774, -0.09883332, -0.053772286, 0.08554662, -0.1215341, 0.15887743, -0.2965043, -0.11656119), target3);\n\ttarget3 = MulAdd(c2, MF4x4(-0.34576485, -0.14033535, 0.07531725, -0.14229001, 0.08308607, -0.31519765, -0.15306507, -0.072686926, -0.12345635, -0.08589443, 0.015977165, -0.0041419766, -0.49153492, 0.3021553, 0.16130814, -0.17035122), target3);\n\ttarget3 = MulAdd(d2, MF4x4(-0.08059237, -0.18008304, 0.23508278, -0.08894493, 0.11107956, 0.23715645, 0.091440715, -0.033679005, 0.23545177, 0.011845169, 0.0054449392, -0.30073527, 0.2796674, -0.1411897, -0.014096338, 0.115184374), target3);\n\ttarget3 = MulAdd(e2, MF4x4(0.19655375, 0.027063202, -0.3324798, 0.29343468, -0.10879405, 0.16780332, -0.019309124, 0.04614956, 0.15054315, 0.19951852, 0.14648122, 0.28885373, 0.037958838, -0.34874088, -0.025065463, -0.19422896), target3);\n\ttarget3 = MulAdd(f2, MF4x4(-0.18047136, 0.060818356, -0.13610844, -0.018481744, -0.09979387, 0.0477093, 0.032326147, -0.10137375, -0.059743475, 0.05039489, 0.17306165, -0.005998121, -0.009583858, -0.14829919, 0.24446519, -0.22378124), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.45342392, 0.19783214, -0.042264447, 0.11951815, 0.017209506, 0.119354434, -0.089858785, 0.03950267, -0.19266395, -0.07500372, -0.02151692, -0.008635288, -0.14962971, -0.00780355, 0.18662006, -0.0046807216), target3);\n\ttarget3 = MulAdd(h2, MF4x4(-0.13184623, -0.04977233, -0.08034406, -0.08663693, -0.06438305, -0.06699197, 0.15878884, 0.014209137, -0.018352475, -0.12698355, -0.18104841, -0.03212089, -0.31992742, 0.13199449, -0.039823674, -0.18864588), target3);\n\ttarget3 = MulAdd(i2, MF4x4(-0.22096959, -0.06594324, -0.093964286, -0.069787376, -0.05717438, 0.18509367, -0.19014412, -0.11233723, -0.043684576, -0.04049064, -0.015180749, 0.04026833, -0.09723803, -0.014410513, -0.14038773, -0.20472965), target3);\n\ttarget3 = MulAdd(a3, MF4x4(-0.020113828, 0.06306164, 0.1133604, -0.03264297, -0.019580074, -0.28136805, 0.046105113, -0.104369484, 0.047211405, -0.11510891, -0.2610411, -0.24363835, -0.15579234, 0.13080037, -0.2414289, -0.21552382), target3);\n\ttarget3 = MulAdd(b3, MF4x4(-0.030723298, 0.10005462, -0.046389453, -0.42023477, -0.0900144, -0.3300974, 0.2023873, 0.47113106, -0.10733436, 0.13536386, 0.11873528, 0.075008325, -0.092727005, 0.16694772, -0.12538053, -0.019201787), target3);\n\ttarget3 = MulAdd(c3, MF4x4(-0.020229753, 0.0050342986, -0.09015966, -0.23845413, 0.14204682, -0.24106354, 0.007471734, 0.21428482, -0.059586413, -0.07984075, 0.1474898, -0.12583902, -0.34393194, 0.08484377, -0.40459237, 0.32322514), target3);\n\ttarget3 = MulAdd(d3, MF4x4(-0.11741491, -0.083517544, 0.04531866, -0.048355322, 0.15782192, 0.07919051, -0.34528416, -0.17551522, -0.20325756, -0.13701133, -0.09564707, -0.03711687, 0.030484512, -0.107849605, -0.09412398, -0.28914952), target3);\n\ttarget3 = MulAdd(e3, MF4x4(-0.013266804, -0.035421904, 0.081956826, 0.15579522, 0.12775496, 0.1479336, 0.46652517, 0.21593826, -0.23207328, -0.13872643, 0.09056148, 0.1257084, 0.40673763, 0.14669922, 0.14093073, -0.31729355), target3);\n\ttarget3 = MulAdd(f3, MF4x4(-0.03632805, 0.06513459, -0.13029967, 0.24914533, 0.08398421, -0.12399063, 0.15374567, 0.003005163, -0.03301567, 0.010896424, -0.10409926, -0.031162843, -0.080630526, 0.313793, -0.04112272, 0.06908576), target3);\n\ttarget3 = MulAdd(g3, MF4x4(0.056705862, 0.04045318, -0.13523346, -0.12563162, 0.030291703, -0.22721136, -0.19567032, -0.22538094, -0.078549854, 0.16844983, -0.09419901, 0.1000363, -0.052691363, -0.14642943, -0.17214452, -0.23522456), target3);\n\ttarget3 = MulAdd(h3, MF4x4(0.09823313, -0.16931288, 0.2667816, 0.019992903, 0.09905936, -0.14416765, 0.022824166, -0.02994203, 0.05482313, 0.0073759295, -0.087138794, -0.10250613, 0.22704037, -0.33540174, 0.059272785, -0.08828277), target3);\n\ttarget3 = MulAdd(i3, MF4x4(0.05405852, 0.0015277737, 0.15057512, 0.008105634, 0.26466554, 0.021303358, 0.21576874, -0.055405084, 0.20417419, -0.1829464, 0.19177821, -0.10549947, -0.10019333, -0.04373452, 0.3086124, -0.030007664), target3);\n\ttarget3 = MulAdd(na1, MF4x4(0.18547705, 0.015533089, -0.17023557, -0.14218459, -0.109183766, -0.21892494, -0.08033779, 0.1279889, 0.21425895, 0.31563443, 0.055812337, 0.035239376, 0.04874699, -0.03926052, 0.25620237, 0.05620038), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(0.17809738, -0.090085454, 0.086938836, 0.21705364, 0.057283174, 0.022287775, -0.21651776, -0.0027429194, 0.04257827, 0.17341158, 0.32710707, -0.029889492, 0.23903793, -0.038499728, 0.208562, 0.18147011), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.02671488, -0.2577291, -0.101831675, -0.043231912, -0.08192727, -0.09351345, 0.10333126, 0.42192927, 0.11358276, 0.17070638, 0.11954223, -0.31113386, 0.21822956, 0.040758308, 0.18557602, -0.04927389), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(0.016825153, -0.16034372, 0.13393559, 0.0031862713, -0.07210358, 0.12088922, 0.18472868, 0.19526374, -0.098638535, -0.26882744, 0.01246303, -0.023679085, -0.07282684, 0.10335254, 0.11371582, -0.11949346), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(-0.0077989995, -0.06316807, -0.037497815, 0.010178734, -0.028329156, -0.109135084, -0.18357074, 0.40579423, -0.05144428, -0.28490487, -0.11653807, 0.22959495, -0.109780535, 0.22878933, -0.29027545, 0.17875119), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(-0.15628323, -0.07819484, -0.22514449, 0.065008484, -0.0055398177, -0.07419974, 0.09902451, 0.35817552, -0.0862891, -0.2973468, -0.10211232, 0.09778022, -0.08562242, -0.08868644, 0.30707374, 0.16413328), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(0.004233512, 0.02434783, -0.12356794, 0.13752618, 0.21815947, 0.16979212, 0.3382205, 0.15363333, -0.14368188, 0.10208307, 0.16594398, -0.002474651, -0.25072917, 0.19654895, 0.15537341, -0.011402132), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(0.1492285, -0.102569796, -0.15423858, 0.03359016, 0.008948687, 0.11137203, -0.0753569, -0.15314926, -0.22925344, 0.1943656, -0.4934053, 0.42356676, -0.10820874, 0.23832525, -0.4461194, 0.19386442), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(0.30649734, 0.061961878, -0.17697462, -0.29313368, 0.19318691, 0.14972912, -0.04568052, 0.123596475, -0.018475438, 0.33577895, -0.17800568, 0.12502621, 0.032249834, 0.013487416, -0.019249933, 0.004653166), target3);\n\ttarget3 = MulAdd(na2, MF4x4(0.11560085, -0.030997908, 0.009219462, 0.05633901, -0.11158907, 0.09791856, -0.111877, -0.020388048, -0.25937706, -0.000673325, 0.106495194, 0.15643579, 0.022090284, -0.11573403, 0.123260945, -0.033783972), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(-0.061418246, 0.13925532, 0.070662834, -0.10297572, -0.08535479, 0.31824788, 0.08315885, 0.012375857, 0.04241964, 0.21071856, -0.18567438, -0.26859924, 0.09607365, -0.19106552, 0.1222843, 0.20521446), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(-0.1985242, 0.40886146, -0.03295415, 0.25985515, 0.00024564067, 0.22053646, 0.4425157, 0.030073104, 0.15870823, 0.3720021, -0.19778733, -0.11957699, 0.23951907, -0.022089735, 0.026504006, -0.1143626), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(0.07811988, 0.06360271, -0.18825488, 0.05489923, -0.316614, -0.2020329, -0.17215219, -0.1163882, 0.028907632, 0.13332835, 0.07710604, 0.15564129, -0.08207378, 0.2586524, -0.15368843, -0.026250634), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(0.1154507, 0.05374841, -0.35887244, -0.38684267, 0.024906285, -0.051356003, 0.06727699, -0.13258685, -0.04512674, -0.0630682, -0.016046045, -0.3630216, -0.10115332, 0.06723903, 0.10273197, 0.01658071), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(0.035411883, -0.10390069, 0.28300494, -0.030523226, 0.260309, -0.2897127, 0.17530721, 0.06502907, 0.10852879, 0.0101283565, 0.04377248, -0.14661616, 0.07372457, 0.029455552, -0.024029268, 0.019606834), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(0.06462741, -0.017584527, 0.05204551, 0.023974337, -0.09858389, -0.12002433, 0.051191356, -0.15688013, 0.1415572, -0.121506944, 0.4219788, -0.14832322, 0.09247079, -0.10846258, -0.030261837, -0.14657071), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(0.037952326, 0.05012869, 0.022779293, 0.0797289, 0.024931714, -0.050262492, -0.15463822, -0.023215678, 0.045349725, -0.0040035774, 0.22049266, -0.08079404, -0.0113567095, -0.00675084, 0.17475724, 0.025340058), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(-0.13610172, 0.14658909, 0.067050435, 0.12354151, 0.22096893, -0.06765668, -0.024593432, -0.03552899, 0.06936571, 0.10394856, 0.0048312224, -0.21034646, 0.037834894, -0.06692894, 0.009020093, -0.04065748), target3);\n\ttarget3 = MulAdd(na3, MF4x4(-0.08967367, -0.14398253, -0.19402455, -0.14434609, -0.027259551, 0.1226331, 0.012233069, 0.13677149, -0.1507801, 0.14510965, 0.24108039, 0.04916487, 0.042398036, 0.09403761, -0.03958092, 0.17673557), target3);\n\ttarget3 = MulAdd(nb3, MF4x4(-0.071569644, -0.19743139, -0.09648773, 0.038397867, 0.12506093, 0.24415006, 0.13810574, -0.23042768, 0.20971183, -0.14231962, 0.0963819, -0.07323753, -0.014360243, -0.099411555, 0.07815387, 0.09009336), target3);\n\ttarget3 = MulAdd(nc3, MF4x4(0.14625058, -0.15307125, 0.45122483, 0.10113701, -0.12264418, 0.09390506, -0.25706926, -0.082095854, 0.11812526, 0.14046957, -0.09704567, 0.21640895, 0.20999698, -0.19149756, 0.16977966, 0.034616202), target3);\n\ttarget3 = MulAdd(nd3, MF4x4(0.05720225, 0.0428485, -0.057531573, -0.111578174, 0.03538242, 0.033332366, -0.05961152, 0.13383748, -0.05669531, -0.047779217, 0.2760684, -0.23934118, 0.03728129, -0.15390043, 0.09151239, 0.016904302), target3);\n\ttarget3 = MulAdd(ne3, MF4x4(0.05711261, -0.009796642, 0.1827549, -0.23561665, 0.15747361, -0.15555665, -0.03771464, -0.15358609, 0.124769196, -0.00302323, -0.1930878, -0.3193505, -0.036671866, -0.21477285, -0.0015818535, -0.054916248), target3);\n\ttarget3 = MulAdd(nf3, MF4x4(-0.04039116, 0.022148842, 0.2527601, -0.08849551, -0.017892385, -0.01728494, -0.12817079, 0.112442665, 0.004877744, 0.08325303, 0.13601741, -0.12387854, -0.033808686, -0.07762037, -0.036944337, -0.016846744), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(0.025319673, 0.12447582, 0.06369372, 0.20814203, -0.062117852, 0.10390202, -0.030939216, 0.15888922, -0.0873872, 0.04641361, 0.13612288, -0.22024561, 0.15445144, -0.03273631, 0.18931653, 0.03979226), target3);\n\ttarget3 = MulAdd(nh3, MF4x4(0.01642648, 0.10919636, 0.118298925, -0.052648794, 0.046562076, 0.042576727, -0.119064495, -0.10575594, -0.023527319, 0.27507904, -0.24070077, 0.037794556, 0.026340371, 0.08496194, -0.2165465, -0.10772629), target3);\n\ttarget3 = MulAdd(ni3, MF4x4(-0.110290796, 0.23385854, 0.16042788, 0.041294437, -0.04052982, -0.030170577, 0.16566783, 0.18245162, -0.125454, 0.15547217, -0.02763223, -0.10694603, 0.12049954, -0.07608294, -0.06768503, 0.022071697), target3);\n\n\tMF3 result = tex7.SampleLevel(sam, pos, 0).rgb;\n\tresult = MulAdd(e1, MF4x3(0.0075503755, 0.014264192, 0.014350495, 0.013990636, -0.0011566521, -0.005510977, -0.021975616, -0.013216436, -0.012400287, 0.018202957, 0.010433842, 0.007529786), result);\n\tresult = MulAdd(e2, MF4x3(0.012649671, 0.016378459, 0.009756208, 0.0023225206, -0.0038671023, -0.005242471, 0.023699954, 0.015248626, 0.011651197, 0.014677953, 0.014319745, 0.012088228), result);\n\tresult = MulAdd(e3, MF4x3(-0.0030005479, 0.0052323043, 0.007744717, -0.0077438625, -0.00072459516, -0.001971826, -0.01263717, -0.009226968, -0.005661945, 0.0046659256, 0.0014185858, 0.0038442858), result);\n\tresult = MulAdd(ne1, MF4x3(-0.0053241113, -0.010728358, -0.013345879, -0.000893072, 0.015531841, 0.015812417, 0.021348871, 0.015751695, 0.016067913, 0.014817982, 0.03233685, 0.031598262), result);\n\tresult = MulAdd(ne2, MF4x3(0.0038391522, 0.0027406036, 0.0063517806, 0.0021543978, 0.0065204683, 0.009420363, -0.022383714, -0.012619449, -0.008763167, -0.009436604, -0.012201518, -0.0103548), result);\n\tresult = MulAdd(ne3, MF4x3(-0.005432008, -0.013701671, -0.021388102, -0.001045599, -0.0032160715, -0.0036216215, 0.031028647, 0.022415614, 0.01880324, -0.004328173, -0.004780637, -0.005459752), result);\n\tresult = MulAdd(max(target1, 0), MF4x3(-0.007300146, -0.0076159053, -0.0080059795, 0.005996225, 0.0057377047, 0.0059788194, -0.021563234, -0.020394823, -0.020401813, -0.030919729, -0.03150251, -0.029059272), result);\n\tresult = MulAdd(max(target2, 0), MF4x3(-0.002826552, -0.0042917025, -0.0025527687, -0.0074001094, -0.006878869, -0.0062073106, 0.010867636, 0.010852139, 0.008577537, -0.01606024, -0.0143771265, -0.013291837), result);\n\tresult = MulAdd(max(target3, 0), MF4x3(0.012113326, 0.014259359, 0.011284172, -3.851684e-05, -0.003696042, -0.0020337042, 0.003427011, 0.006911378, 0.008471347, 0.0063997298, 0.004651406, 0.0075980425), result);\n\tresult = MulAdd(max(-target1, 0), MF4x3(-0.026621016, -0.027831081, -0.025364956, 0.022336917, 0.023742557, 0.023516335, -0.01619396, -0.01820708, -0.015288538, 0.0045815264, 0.0022230193, 0.0017512285), result);\n\tresult = MulAdd(max(-target2, 0), MF4x3(0.043799683, 0.046862658, 0.041910093, -0.027854608, -0.02948632, -0.02927831, -0.051899213, -0.04971418, -0.04712937, -0.017539004, -0.0245854, -0.023040624), result);\n\tresult = MulAdd(max(-target3, 0), MF4x3(0.022317344, 0.021462968, 0.02187171, 0.0530127, 0.054741293, 0.052202478, 0.029963326, 0.0298772, 0.025601966, 0.027699472, 0.031187871, 0.02950236), result);\n\tresult += MF3(-0.0071146404, 0.005606682, 0.010180816);\n\n\tresult += INPUT.SampleLevel(sam, pos, 0).rgb;\n\tOUTPUT[gxy] = MF4(result, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Restore_VL.hlsl",
    "content": "// Anime4K_Restore_CNN_VL\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Restore/Anime4K_Restore_CNN_VL.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Restore_3\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex6;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1, tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = { -0.046043985, 0.055581126, -0.08791638, -0.13022089 };\n\t\t\ttarget1 = MulAdd(src[i - 1][j - 1], MF3x4(0.1690102, -0.2560719, 0.39658326, -0.3679659, -0.27616683, -0.35619372, -0.3748396, 0.08430813, -0.29574734, -0.31511316, -0.09773105, 0.13616018), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j], MF3x4(-0.1326393, -0.259433, 0.025070239, 0.58914864, -0.036478516, 0.30723435, 0.007458902, 0.012962684, 0.2493056, 0.13007334, -0.08448256, -0.38414413), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j + 1], MF3x4(-0.11539356, 0.35253766, 0.26143202, 0.2760807, -0.09371543, -0.028165473, -0.028452158, -0.27050856, 0.06718067, -0.0056619495, -0.17654495, 0.17288211), target1);\n\t\t\ttarget1 = MulAdd(src[i][j - 1], MF3x4(-0.16145481, -0.3204927, -0.54317135, 0.11830119, 0.49315026, 0.12008072, 0.50857407, -0.30382085, 0.25807253, 0.020755528, 0.29388228, 0.106109895), target1);\n\t\t\ttarget1 = MulAdd(src[i][j], MF3x4(-0.22728722, 0.50484747, -0.07904469, 0.33114597, 0.50306976, -0.22760947, 0.14773269, 0.17628263, 0.14788547, -0.08223464, -0.10880935, -0.3151985), target1);\n\t\t\ttarget1 = MulAdd(src[i][j + 1], MF3x4(0.3414351, 0.057279214, -0.14419858, 0.09761111, -0.11794496, 0.021717256, -0.22750235, 0.13986664, -0.38932344, 0.28996095, 0.3773904, 0.13175532), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j - 1], MF3x4(0.1376552, -0.19587159, -0.35147396, -0.097646296, 0.1686707, -0.14385861, 0.031198, 0.12383533, -0.23089902, 0.08707301, 0.3362293, -0.100579016), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j], MF3x4(-0.056774966, 0.047585852, -0.36395878, -0.20211312, 0.4077735, 0.12631284, 0.39813092, -0.033365678, 0.2307249, -0.09131807, 0.20823865, 0.31084216), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j + 1], MF3x4(-0.12456089, 0.09755632, 0.31490886, -0.06579996, -0.13386595, 0.07564795, -0.26605195, -0.075180635, -0.11182657, 0.06757017, -0.14351276, -0.16828312), target1);\n\n\t\t\tMF4 target2 = { -0.0022791293, -0.024132347, -0.57621074, 0.028573977 };\n\t\t\ttarget2 = MulAdd(src[i - 1][j - 1], MF3x4(-0.15485518, -0.29363206, -0.22610365, -0.14291525, -0.45240572, -0.18319772, -0.12209436, 0.15031648, 0.09878383, 0.06711082, 0.25763842, -0.084633484), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j], MF3x4(-0.10204406, 0.16167697, 0.22371867, -0.37947702, -0.24476196, -0.038824454, 0.060157117, 0.15764871, -0.08072927, -0.2210841, -0.31835055, 0.009979876), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j + 1], MF3x4(0.20506924, 0.21132155, -0.0922578, -0.07430473, 0.14529926, 0.20549752, 0.0077948375, 0.13246094, -0.32353187, 0.21074104, 0.092629515, 0.17590871), target2);\n\t\t\ttarget2 = MulAdd(src[i][j - 1], MF3x4(0.04125819, -0.44050243, 0.23729716, 0.3218237, 0.12943116, -0.011674174, 0.10390632, 0.027775545, -0.20308031, -0.16904089, -0.2121676, -0.022515794), target2);\n\t\t\ttarget2 = MulAdd(src[i][j], MF3x4(0.09664124, 0.20127031, 0.60345304, 0.16697013, 0.23093723, -0.38116834, 0.109695725, 0.0007595324, 0.4092646, 0.009624758, 0.11229678, 0.25326383), target2);\n\t\t\ttarget2 = MulAdd(src[i][j + 1], MF3x4(0.014879592, 0.19204311, 0.07102085, -0.7312604, 0.34860876, 0.3429918, -0.027331594, 0.27636307, 0.1342437, 0.107820466, -0.12645108, 0.21081445), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j - 1], MF3x4(-0.12687613, -0.09247973, -0.25973785, 0.4350873, -0.18987224, 0.028678741, -0.0903819, -0.63974863, 0.205591, 0.11308998, 0.18458389, -0.4149041), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j], MF3x4(0.34691808, -0.025498383, 0.3428986, 0.21663484, 0.23404741, -0.1725327, -0.0036315925, -0.13299675, -0.1873967, 0.031331502, -0.08785591, -0.0013278709), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j + 1], MF3x4(-0.35846514, 0.048703704, -0.104165934, 0.16529736, -0.15378916, 0.26030356, -0.07134151, 0.03692383, -0.15807101, -0.18885155, 0.044707954, -0.11444462), target2);\n\n\t\t\ttex1[destPos] = target1;\n\t\t\ttex2[destPos] = target2;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x16\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y),0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0),0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y),0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y),0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos,0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y),0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y),0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0),0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y),0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.018166734, -0.11002478, -0.05554318, -0.0988193 };\n\ttarget1 = MulAdd(a1, MF4x4(0.010346764, 0.07230188, -0.24734616, -0.09937907, 0.02228549, -0.19550583, -0.019540425, -0.1037373, 0.033996485, -0.075554, -0.20228972, 0.07090153, -0.09194035, -0.058972966, 0.1768268, 0.27517542), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.020078976, 0.12433655, -0.1620775, 0.036401592, 0.079748705, 0.11660013, 0.17917652, -0.017513236, -0.18936846, 0.24478136, -0.45726213, -0.045004416, -0.08295188, 0.067733586, -0.080548316, 0.2744211), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.024916803, 0.27562472, 0.043771956, -0.012240604, 0.0786355, 0.042651594, 0.16049327, -0.14577515, -0.032735053, 0.17658092, 0.16382934, -0.02337374, 0.11551492, 0.056343183, -0.17930213, 0.14259394), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.20010485, 0.06747722, -0.19026905, 0.11013709, 0.13062745, -0.044626113, -0.0062261797, 0.2189639, 0.1403497, -0.022713251, -0.19452858, -0.010305412, -0.06407589, 0.09836748, 0.025805516, 0.23430973), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.14664203, 0.034910418, 0.024714258, -0.066872925, -0.15717538, -0.14179383, -0.14091893, 0.05859166, 0.18919097, -0.18544437, -0.09068573, -0.08615929, -0.051434122, 0.2170678, 0.18409058, -0.17461225), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.11354446, 0.10745854, 0.2682663, 0.05949201, -0.10695986, 0.1407851, -0.03551388, 0.10691649, -0.17148238, -0.38287184, 0.2074456, 0.11828914, 0.048535194, 0.1464864, -0.18169662, -0.14074169), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.22160622, -0.1513045, -0.053284165, 0.033202525, 0.15574448, -0.043640967, -0.0093824165, -0.0019965349, -0.097964935, -0.08289824, 0.08239996, 0.07868361, 0.05731752, -0.20441617, -0.013016076, -0.253108), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.031249097, -0.2272863, 0.23573665, 0.03357689, 0.011395065, -0.10885564, -0.06287508, -0.031719524, 0.10331069, 0.17560169, 0.18303394, 0.022961004, -0.17011635, -0.24371737, 0.10678694, -0.3222825), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.1275465, -0.08844758, 0.10994917, -0.00910273, 0.09393154, 0.03894992, 0.14367905, -0.11811715, -0.09077633, -0.015776094, 0.27427456, -0.13283503, 0.18724327, -0.08139094, 0.04933602, -0.051852766), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.06764611, -0.27426586, 0.12045272, 0.09410856, -0.14258035, 0.11802992, -0.09093882, 0.0022018093, 0.4590643, 0.046258576, -0.07827223, 0.448011, -0.103631735, -0.016930219, -0.15421398, 0.11045997), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.17295076, 0.00151352, 0.14938255, 0.08336512, -0.07496541, -0.07561223, -0.0846474, 0.14979269, -0.09142163, 0.23925088, -0.015199518, -0.37749895, -0.20636298, -0.022585187, -0.20371509, 0.0745308), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.06458832, -0.009722021, -0.123604394, 0.06548835, -0.3039139, -0.022024399, 0.05297587, -0.0626883, 0.23556642, 0.1516464, -0.07004877, -0.1845364, -0.05918428, 0.19158973, -0.14983447, 0.030489758), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.36604697, 0.17516142, -0.10853731, -0.22694224, -0.107650936, 0.23013335, 0.094055794, -0.17047717, -0.3006048, -0.08621717, -0.18815655, -0.03570218, 0.09676118, -0.017718751, 0.059138596, 0.073388465), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.12791575, 0.101956226, 0.13091874, -0.046373338, 0.04955811, -0.04030444, 0.13869923, -0.046699073, -0.42611042, -0.7173929, 0.052184317, 0.6178025, -0.02929954, -0.07638965, -0.15000828, 0.030710017), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.057806686, 0.20842272, -0.20148766, 0.006666912, 0.13356528, -0.45265228, -0.07354092, 0.21447696, 0.019552143, -0.13645506, 0.14643854, -0.0071413796, -0.15487236, -0.002250615, 0.30622452, 0.0033902125), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.06896002, 0.24397352, -0.06479052, 0.20676947, -0.24259068, 0.055320013, -0.09032122, -0.11222854, -0.08982342, -0.114818625, -0.06399291, -0.3024516, -0.06302166, -0.1925528, 0.03458982, 0.028828239), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.09764086, 0.09599894, -0.0073313303, 0.14418933, -0.045712367, 0.12657364, 0.04620374, -0.069778584, 0.30047333, -0.012418192, 0.15516461, -0.18087754, 0.08178273, 0.14262857, -0.01741533, -0.12509112), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.04697884, -0.1506804, 0.031823065, 0.13397239, -0.18396698, 0.10681781, -0.29586303, -0.0039136545, 0.17560847, -0.12486726, -0.018646788, -0.20688744, -0.030614454, -0.0527634, 0.23593572, -0.10542146), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.19182229, -0.32615846, 0.26283535, -0.1371942, -0.071202695, 0.12056063, -0.11450658, -0.27711076, -0.42096004, 0.0014352369, 0.1559669, -0.14464542, -0.17973948, 0.079166576, -0.12501791, -0.20623216), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.12469872, 0.32190827, -0.059510354, 0.1393449, -0.12845798, -0.019571869, -0.22630808, -0.14031963, 0.36072046, 0.05858427, 0.19278921, 0.121090546, -0.067538865, -0.018770566, 0.14318037, -0.15561756), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.024663208, 0.21110268, -0.016415706, 0.060093414, -0.03739678, -0.107412934, -0.077527136, 0.30331334, 0.17196326, -0.15512557, -0.09499732, -0.15748607, -0.16680105, -0.015185634, 0.16114107, -0.21288376), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.17739037, -0.1190967, 0.13191372, -0.2527187, -0.14992718, -0.30511454, 0.19145966, 0.002194003, -0.12888977, 0.19152176, 0.27528167, 0.099714965, 0.12865707, -0.12051514, -0.055013947, 0.26231763), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.46433613, -0.11708138, -0.20157282, 0.32022122, 0.079468675, 0.029407484, 0.2559102, -0.15651533, 0.08644574, -0.09747344, -0.07528584, 0.17354868, 0.19167562, -0.17698488, -0.09896657, 0.17093097), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.20283653, -0.33680332, 0.2282385, 0.18832158, 0.20866042, 0.00076752366, 0.16471444, -0.21548858, 0.16193539, 0.17141372, 0.03140222, 0.03913644, -0.030161971, 0.00014570929, 0.08993654, -0.064823024), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.3075755, 0.19942546, 0.015526995, -0.120868504, -0.254515, -0.07791228, 0.03271691, 0.11794217, 0.11258601, 0.045204375, -0.061196107, -0.115958795, 0.3861869, 0.048215542, 0.07016682, -0.009975758), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.07623697, 0.16094944, -0.02283455, 0.14112763, -0.051149167, 0.20429814, 0.011314802, 0.18914083, -0.24240434, -0.08784008, -0.16763984, -0.08492233, 0.31062725, -0.11925119, -0.33195966, 0.2060798), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.016709225, -0.14472668, -0.3677625, -0.09832719, 0.030297454, -0.05775362, -0.1401375, 0.08119674, -0.01795042, 0.05183797, -0.24320887, 0.066842034, -0.22245285, -0.02740993, 0.06316751, 0.053399116), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.039214406, -0.08876633, 0.045552462, 0.19226661, 0.1355001, -0.13942362, 0.17398876, 0.2914014, -0.191809, 0.037143208, 0.013333581, -0.16632195, 0.113767646, -0.106692605, 0.1589787, 0.030107044), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.21997562, 0.13855208, -0.05783191, -0.033682413, -0.010961168, 0.10524961, 0.02177416, 0.18289444, 0.043692037, 0.07853899, -0.039936125, -0.1004449, 0.04494073, -0.020680292, 0.17578089, -0.106598996), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.026852835, -0.16037546, 0.11278316, 0.12656097, -0.006857894, -0.03400118, -0.051564034, 0.00085412664, -0.37556714, -0.05279987, 0.029383834, -0.14246808, -0.056380164, -0.002399925, 0.16025752, 0.036324855), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.022709966, 0.046350412, 0.03390721, 0.02810572, -0.14394265, 0.04215361, -0.3206118, 0.15034916, -0.0028448137, 0.1682989, -0.042686664, 0.020543462, -0.2786501, -0.007482015, -0.040313292, -0.20745736), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.05417556, 0.18728684, -0.046121832, -0.27939513, 0.05907976, -0.09191223, -0.16625418, -0.26038164, 0.39956605, -0.052594025, -0.0596556, 0.29517552, -0.015181923, -0.0763375, 0.25131205, 0.13038464), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.036903054, -0.0066989153, -0.062650286, 0.05614359, -0.0064960583, 0.028512698, -0.10906273, -0.010047654, 0.23030473, 0.049983572, 0.10439064, 0.26643834, 0.05041243, 0.09185424, -0.32352915, 0.11295159), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.09724027, -0.34962535, 0.06586686, 0.016635379, 0.13831381, 0.01707076, -0.04690347, 0.022350075, 0.018352794, 0.022000022, 0.070613205, 0.117735535, -0.025971051, 0.18832101, -0.09643588, -0.08512127), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.17324433, 0.06810613, -0.057295907, -0.05115964, -0.101570815, 0.12491774, 0.08762367, -0.005862404, -0.05342927, -0.031942457, -0.039624047, -0.04298937, -0.1303138, -0.11869282, -0.024832053, 0.070463404), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.010514842, 0.1376259, -0.11750346, -0.03786737, 0.03459249, 0.015408171, -0.031430878, -0.060825355, -0.072958425, -0.0037895301, 0.041686177, -0.12352204, -0.06261361, 0.054514423, -0.34072715, 0.13860728), target1);\n\t\n\tMF4 target2 = { 0.022609137, -0.028548084, 0.024431901, 0.010504478 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.040142782, 0.0288423, 0.07569487, -0.01490842, 0.14402796, -0.13682005, 0.027765118, 0.03907358, 0.07117706, 0.058157545, -0.23862502, -0.057674367, -0.19220531, 0.0147159435, -0.18028538, 0.0963821), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.1676744, -0.11937339, 0.12137117, 0.07119485, 0.14148116, -0.043578617, -0.029261118, -0.0016938087, -0.057269357, -0.080076694, 0.12193026, 0.07326153, -0.056278303, -0.01630716, -0.03792076, 0.1483611), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.3021578, 0.011601693, 0.11266048, 0.19086999, -0.0122412145, 0.08431291, 0.11615175, -0.008039614, -0.39987534, 0.07820729, 0.03509667, 0.1963505, -0.08839513, -0.21571854, 0.059425723, -0.06830175), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.23135209, -0.12452708, 0.0943565, 0.0028859286, -0.09836373, 0.10681712, -0.3535964, 0.08457615, 0.045332734, 0.16579892, -0.03809797, -0.021596594, 0.2937497, -0.028294371, 0.046484597, -0.037604347), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.072675414, -0.16431206, 0.28952035, 0.0076831076, -0.020242939, 0.029483542, -0.092415355, 0.08673106, 0.12109694, 0.14307201, 0.23134442, 0.11731775, 0.09981601, -0.16968462, 0.037470713, 0.14948717), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.0029752052, 0.06526503, 0.1866458, 0.07451277, -0.31836876, 0.17115082, -0.13969697, 0.23844297, -0.03244903, -0.08832665, 0.023691226, -0.18230624, -0.074933805, -0.00044301842, 0.050572682, 0.081511915), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.039502528, 0.051221415, -0.13968123, -0.091212444, -0.016925618, 0.15409444, -0.017455677, -0.11653652, 0.03539446, -0.00087720866, -0.12839639, 0.037198763, 0.03674469, -0.26444665, 0.019721227, -0.13013805), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.039229527, 0.25667152, 0.0032586441, -0.00718359, 0.1617932, 0.10409968, 0.07182867, -0.09810605, 0.07789241, -0.02014911, 0.025767172, -0.14604759, 0.07175764, 0.32513744, -0.20473222, -0.16266066), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.13418433, 0.061813723, -0.13927278, -0.2498272, 0.03468218, 0.29483125, 0.063289374, -0.04726235, 0.1898295, -0.33132064, 0.032045014, 0.02159535, -0.1148363, 0.31306976, 0.06456038, 0.048988886), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.07151646, 0.2799246, -0.107190795, -0.16431166, -0.28007045, 0.07206954, 0.06775463, 0.009758042, 0.07032184, -0.20843789, 0.087045245, 0.1360676, -0.25718534, 0.028249472, -0.12614648, 0.009949602), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.020241471, -0.23390484, -0.0083223935, 0.08344701, 0.08222297, 0.12026539, -0.08652223, -0.08228822, -0.039576706, -0.24677879, -0.1157289, 0.2590508, -0.23809408, 0.19911982, -0.116798095, -0.035870325), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.024991842, 0.050509237, -0.024134455, -0.12659028, 0.24089767, 0.122712664, -0.10482493, -0.19403952, -0.19177693, -0.06538376, -0.041478425, 0.32176673, -0.1534002, -0.18680622, 0.06763643, 0.020806564), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.03437814, -0.28067374, 0.2830681, 0.038812317, -0.021698112, -0.120865285, 0.22695538, -0.045419116, -0.030475847, -0.01977341, -0.1265364, -0.3109814, 0.012255813, 0.053917278, -0.018620957, -0.14599285), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.016204128, -0.04093018, 0.054571863, 0.02679643, 0.01756274, -0.057685968, 0.16148666, 0.17370272, -0.11065411, 0.06378157, -0.09331551, 0.22985275, 0.057905316, 0.12323568, 0.07748665, 0.09878629), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.018112244, 0.063234635, -0.013184602, 0.16241394, 0.08877139, 0.02145378, -0.02490027, -0.038920373, 0.13127136, 0.14391647, 0.020553736, 0.14401346, 0.06685973, -0.25398204, 0.10369067, -0.055949755), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.07710333, 0.047412727, 0.13813803, 0.18624061, 0.16907091, -0.039532468, 0.06234584, 0.06408178, -0.054543987, -0.045220226, -0.11093376, -0.37399602, 0.20372874, 0.004580967, -0.07742308, 0.017989937), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.003485311, -0.08897399, -0.013108594, -0.19473282, -0.27081844, -0.16812073, 0.0052992934, -0.055331517, 0.09446357, 0.019280333, 0.16560757, -0.3230032, 0.043096773, 0.059222896, -0.064184934, -0.059852477), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.06794279, -0.034135245, 0.083064295, 0.13506731, 0.13064219, -0.44978833, -0.03513717, 0.08999715, 0.1124541, 0.42208397, -0.0038724816, -0.014332087, -0.13751853, -0.04929869, 0.09134992, -0.17687531), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.100909084, -0.0131197255, 0.082274795, -0.2138443, -0.08515947, -0.021058358, 0.10951775, -0.06349191, -0.29129833, -0.029262653, 0.25235432, -0.11748315, 0.121980384, 0.062347785, 0.10916932, -0.15993518), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.28893283, -0.05677308, -0.2641288, -0.058937225, -0.16187571, 0.006647366, -0.063294955, 0.04766719, 0.60601914, -0.07831864, -0.15710756, -0.011491797, 0.15587467, -0.08105375, 0.07847514, -0.2803333), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.077989794, -0.09871811, -0.3516344, 0.15292728, 0.010889273, 0.0011189661, -0.16118282, -0.018821161, -0.039708678, -0.00060983415, -0.06367813, 0.009148068, 0.03919827, 0.18782744, 0.028040757, -0.10230145), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.4079609, 0.18640275, -0.12475227, 0.13891742, 0.25121725, 0.16942379, 0.14409852, 0.087600805, 0.045335658, -0.12683709, -0.0077387216, 0.06563413, -0.19857128, 0.106910795, -0.048285246, 0.10768945), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.5989075, 0.20941062, -0.20086494, 0.13344856, 0.073034994, 0.22358665, 0.101664364, -0.13463663, 0.18816395, -0.061176624, -0.14712185, 0.027320342, -0.09529667, 0.031148786, -0.28744993, 0.18698911), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.14799193, 0.39471942, -0.23340325, -0.4031061, 0.18926248, -0.11091216, 0.118981816, -0.09155061, 0.17049436, 0.19803695, -0.1513267, 0.023817873, 0.0090933135, -0.04134864, 0.060486555, 0.03536634), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.39094314, 0.01779997, 0.12710269, 0.0067333193, -0.31255835, -0.08206612, -0.048528638, 0.369439, -0.19351655, -0.03420455, 0.15831526, -0.052294146, -0.08481741, 0.0787108, 0.1312136, -0.108919285), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.16068119, -0.42190582, 0.19383872, -0.018445708, 0.09803051, -0.020769652, -0.022599563, -0.052448895, -0.20645833, -0.031432863, 0.0025441595, 0.03410379, -0.20268854, 0.04481527, 0.05191063, 0.42317194), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.12786235, -0.23936178, 0.116561726, 0.30756372, -0.09420156, -0.044529166, -0.03585749, 0.1829332, -0.23939075, 0.24030831, 0.019878127, -0.015069802, 0.24300557, -0.22558568, -0.104956664, -0.09393648), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.04607054, 0.012677649, -0.027597688, 0.1618836, 0.29210827, 0.014221155, -0.13591036, -0.06895336, -0.09559534, 0.07956421, -0.11112994, -0.13325493, 0.24562472, 0.11046177, 0.057847694, 0.0016315983), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.03365951, 0.027391057, 0.09653403, -0.14718771, -0.049631152, -0.06467214, -0.058545876, 0.1424002, -0.06320376, 0.181183, 0.10249362, -0.16052136, 0.3013475, -0.04156266, 0.08862033, 0.06888033), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.10045977, -0.004198456, -0.025856055, 0.05739418, -0.1328637, -0.025975171, 0.06553717, 0.11301186, 0.0704087, -0.083569765, 0.16066101, -0.24453588, 0.25370175, 0.037184533, 0.062386766, -0.20025635), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.017958941, 0.06417776, -0.1525265, 0.12451173, 0.14567685, -0.0049682115, -0.23973411, -0.0783304, -0.010629432, 0.08055161, 0.2028341, 0.17640644, -0.20445108, -0.055524793, -0.019326134, 0.081288636), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.007882519, -0.03722546, 0.053249408, 0.00071846246, -0.07053029, -0.21583866, 0.1415364, -0.19486657, 0.20685542, 0.17660026, -0.32156837, 0.1746825, -0.14957622, -0.09224378, -0.098153435, -0.13054638), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.10051427, -0.17398237, 0.09842799, -0.14187703, 0.116901085, -0.1229543, -0.0007776771, -0.20410055, -0.11373484, -0.111150615, -0.1974002, -0.11641459, 0.024105398, 0.24985977, 0.015871854, -0.10724633), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.18081793, 0.1209351, -0.12867971, -0.019415248, 0.062617876, -0.037130393, -0.07803658, -0.22862352, 0.2586428, -0.030090366, -0.11894069, 0.18087515, -0.40921417, 0.070013195, 0.030540073, 0.035120826), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.13185939, 0.12992652, 0.08125049, 0.075331174, 0.064219765, 0.056629725, -0.020012032, -0.0855444, -0.044063166, -0.05396545, -0.028002812, 0.21837157, -0.15206428, -0.12681007, 0.14895032, 0.12339962), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.08066341, -0.14773634, -0.0212227, -0.014011867, -0.048505764, 0.075407125, -0.020620076, 0.0003291325, -0.21815202, -0.23136546, 0.10853532, -0.036058456, 0.10952532, -0.052677035, -0.13005799, 0.18398996), target2);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x16\n//!IN tex3, tex4\n//!OUT tex1, tex2, tex5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.022956269, 0.029688787, -0.070148066, -0.07163476 };\n\ttarget1 = MulAdd(a1 , MF4x4(-0.069641694, 0.104958326, 0.14786446, 0.027633663, -0.004279524, -0.020451711, 0.0883571, -0.016224537, 0.13585235, 0.11078269, 0.20198658, -0.042161036, 0.020466218, 0.20994963, 0.20072585, -0.028024657), target1);\n\ttarget1 = MulAdd(b1 , MF4x4(0.050872434, 0.12874635, 0.1298729, 0.115810685, 0.07087254, 0.09885682, 0.23018982, 0.19187538, 0.10953604, 0.0033836907, -0.13325337, 0.09830315, -0.06528767, 0.05096927, -0.016355392, -0.039334368), target1);\n\ttarget1 = MulAdd(c1 , MF4x4(0.027010268, 0.018263958, 0.0360758, 0.016791478, 0.2815702, 0.15517488, 0.43415815, 0.044976447, -0.0070842914, -0.12546758, 0.16874593, 0.077622116, 0.02252915, 0.1769774, 0.07181055, -0.1512869), target1);\n\ttarget1 = MulAdd(d1 , MF4x4(0.057129618, 0.118046716, 0.07237424, -0.07842637, -0.044214778, -0.12886304, 0.08603301, -0.10416606, -0.15852053, 0.3788151, 0.26181692, -0.09092249, 0.31635332, 0.064212754, 0.21923725, 0.07500004), target1);\n\ttarget1 = MulAdd(e1 , MF4x4(-0.16981383, 0.044409662, -0.3717617, -0.031610407, 0.03658662, -0.09459229, -0.09449437, -0.014000666, -0.19656453, 0.03934163, -0.16304104, -0.12761801, -0.06235523, 0.16438273, -0.036933117, -0.095564745), target1);\n\ttarget1 = MulAdd(f1 , MF4x4(0.09725091, 0.034022827, 0.17699842, 0.1079676, -0.13236652, 0.03718181, -0.06968635, -0.23288171, 0.10275666, 0.08464966, -0.37162134, -0.35782215, -0.11023659, 0.2519236, -0.035197742, -0.019324787), target1);\n\ttarget1 = MulAdd(g1 , MF4x4(-0.09968464, 0.01102193, 0.0073735216, 0.011999313, -0.004998707, 0.09518938, 0.045727003, -0.21544908, 0.006879454, -0.06398254, -0.12584935, -0.06759933, -0.0820037, -0.07775104, 0.021957919, -0.122708224), target1);\n\ttarget1 = MulAdd(h1 , MF4x4(-0.08869767, 0.031296413, -0.0034280645, 0.13778855, 0.10073061, -0.08393937, -0.032959275, -0.0500518, 0.010908757, -0.09189417, -0.057760105, 0.17652664, -0.08729078, -0.09639096, -0.25654703, 0.055152636), target1);\n\ttarget1 = MulAdd(i1 , MF4x4(0.0027847723, -0.12885433, 0.038065907, 0.17450769, 0.0864409, 0.04592345, -0.015443841, 0.077010944, 0.08967368, 0.06800111, -0.23636387, 0.35023567, 0.03165923, 0.03132063, 0.17964344, 0.035610788), target1);\n\ttarget1 = MulAdd(a2 , MF4x4(-0.032017227, -0.0022808525, -0.08470573, 0.05332408, -0.14674746, 0.025374275, -0.018281924, 0.041163016, 0.00096549373, 0.014724006, 0.004913065, 0.18494442, 0.034953076, -0.15731992, -0.13792977, 0.08041999), target1);\n\ttarget1 = MulAdd(b2 , MF4x4(0.08305006, 8.6318905e-05, -0.007895379, 0.02731387, -0.061324496, 0.050034665, 0.22662131, -0.013876427, -0.074468784, -0.008136604, -0.23337875, -0.1742574, 0.011753501, -0.11666686, -0.22541048, -0.14549944), target1);\n\ttarget1 = MulAdd(c2 , MF4x4(-0.028333234, 0.121047184, 0.06720256, -0.058930036, 0.030258363, 0.07292774, 0.06455556, 0.0019076486, 0.0073987027, 0.17144889, 0.06084024, -0.08762086, -0.114422195, -0.16595861, -0.08706028, -0.10736261), target1);\n\ttarget1 = MulAdd(d2 , MF4x4(-0.02519315, -0.14611271, 0.0388848, 0.19481422, -0.05970354, -0.08391417, 0.18982239, -0.10447052, 0.15587378, -0.023997072, 0.0781739, 0.2182389, -0.023886079, -0.1422596, -0.13352804, 0.005008043), target1);\n\ttarget1 = MulAdd(e2 , MF4x4(0.08842712, -0.100292705, 0.18925671, 0.12198875, 0.061771665, -0.04473232, 0.025053164, 0.039047796, -0.1672479, -0.08934517, 0.33099812, -0.20269585, -0.21640155, -0.22029749, 0.16539703, -0.2442679), target1);\n\ttarget1 = MulAdd(f2 , MF4x4(-0.16332205, -0.101898365, 0.02919932, -0.11900455, 0.14442924, 0.0916815, 0.037550304, 0.024123482, 0.02042624, 0.033472955, -0.059437107, -0.18735693, -0.013749093, -0.06199881, -0.08685079, 0.04252364), target1);\n\ttarget1 = MulAdd(g2 , MF4x4(-0.09047013, -0.055188328, -0.09106191, -0.048969727, 0.05114009, -0.12753403, 0.07116141, 0.060749624, -0.074034564, -0.21952136, -0.09479503, 0.2753584, -0.014141759, -0.14883812, -0.0673838, -0.012279045), target1);\n\ttarget1 = MulAdd(h2 , MF4x4(0.013816464, -0.0747162, -0.19202435, -0.064403646, 0.34980014, 0.04375546, 0.20264609, 0.006684355, 0.11523799, 0.024674915, -0.08697566, -0.04662527, -0.12743855, -0.39463726, 0.0057380227, 0.01286557), target1);\n\ttarget1 = MulAdd(i2 , MF4x4(-0.08146522, 0.074080914, -0.16856177, -0.183158, 0.19228102, 0.12373886, 0.017574452, -0.01753772, 0.045071773, 0.07725093, 0.023422163, -0.011545186, 0.20751388, -0.10795588, 0.07606346, 0.10282933), target1);\n\ttarget1 = MulAdd(na1 , MF4x4(0.12512013, -0.102208994, -0.09125398, 0.12043188, -0.066011876, 0.08831903, -0.017038671, -0.005541508, -0.049607087, 0.08654939, -0.02037085, 0.26887566, 0.005012545, 0.01869507, -0.013064982, -0.010649147), target1);\n\ttarget1 = MulAdd(nb1 , MF4x4(0.006824864, -0.05071593, -0.20786697, -0.07327317, 0.011382597, 0.030494886, -0.04754353, -0.018284699, 0.01305972, -0.036589053, 0.26637617, 0.021887446, -0.026669119, -0.037982125, -0.063445956, -0.009104248), target1);\n\ttarget1 = MulAdd(nc1 , MF4x4(0.032602567, 0.07094331, 0.052653246, 0.08342047, -0.085082285, -0.14674088, -0.23073354, -0.07915851, 0.0017120204, 0.032407638, -0.039819505, 0.16942178, 0.023192152, -0.0353237, 0.10930186, 0.22939779), target1);\n\ttarget1 = MulAdd(nd1 , MF4x4(0.0010455973, -0.11821993, -0.12639599, 0.12250084, -0.12756817, 0.11478416, -0.1862587, 0.016819192, 0.02110181, -0.25492984, -0.1766048, 0.22188173, -0.21305011, 0.113442205, 0.04599144, -0.15840286), target1);\n\ttarget1 = MulAdd(ne1 , MF4x4(-0.15086032, -0.17428935, 0.39080557, 0.07576757, 0.121703945, 0.17944208, -0.003140103, -0.11231332, 0.12102969, 0.15310267, 0.17578171, 0.40631834, -0.21299168, 0.024928993, 0.030104794, 0.020753227), target1);\n\ttarget1 = MulAdd(nf1 , MF4x4(-0.098734386, -0.020072265, -0.14308836, -0.08490801, 0.017175158, 0.02250534, 0.04060829, 0.033022214, 0.0046218676, 0.17923212, 0.0112105915, 0.09574084, 0.14819936, -0.14692923, 0.12634254, 0.060762513), target1);\n\ttarget1 = MulAdd(ng1 , MF4x4(0.030521613, -0.097913325, -0.016720278, 0.11273997, 0.013019863, -0.06557118, 0.0405774, 0.0915019, 0.022414956, -0.053254984, 0.18639986, 0.07820968, 0.06498986, 0.058922634, -0.02240318, -0.086019725), target1);\n\ttarget1 = MulAdd(nh1 , MF4x4(0.2058775, 0.01502064, 0.05847032, 0.007249146, 0.086483665, 0.19420148, 0.03892261, -0.013546935, -0.07980237, 0.04347281, -0.10376214, -0.1366535, 0.05285337, 0.07213318, 0.3642818, -0.11331124), target1);\n\ttarget1 = MulAdd(ni1 , MF4x4(-0.025740806, 0.14551482, -0.037410017, -0.17477523, -0.11853099, -0.060820814, -0.102599286, -0.13267937, -0.103053465, -0.014044828, -0.01888072, -0.06499249, 0.22311528, -0.051850274, -0.034120858, 0.044562567), target1);\n\ttarget1 = MulAdd(na2 , MF4x4(-0.21360217, 0.10093803, -0.0016407765, -0.1473997, 0.26524043, 0.02112132, 0.23173104, -0.013157391, 0.05945182, 0.044635538, 0.06031638, -0.21435826, -0.10147484, 0.069090195, 0.09641844, -0.09581093), target1);\n\ttarget1 = MulAdd(nb2 , MF4x4(-0.08576515, -0.122861005, 0.049567085, -0.085854456, 0.23809357, -0.024966082, -0.10294079, 0.046241313, 0.008621132, -0.08323767, 0.20277941, 0.163423, -0.07386535, -0.088738985, 0.05274358, -0.025479877), target1);\n\ttarget1 = MulAdd(nc2 , MF4x4(-0.041135542, -0.008365642, 0.17088248, 0.04025207, 0.13809255, -0.056895368, -0.01582834, 0.07361908, -0.00068995473, -0.09300962, 0.19117641, 0.24832036, -0.06572358, -0.026025, -0.019093119, -0.049720034), target1);\n\ttarget1 = MulAdd(nd2 , MF4x4(0.024900286, 0.11525501, 0.025882801, 0.037742402, 0.36976853, 0.052211333, -0.15143296, 0.1802276, -0.059080046, 0.017990451, 0.026395092, -0.12689115, -0.07705386, 0.1232379, 0.13273561, -0.12521964), target1);\n\ttarget1 = MulAdd(ne2 , MF4x4(-0.19788785, 0.044887315, 0.07663442, 0.16688696, -0.2842248, -0.15684547, 0.028387763, 0.0063470444, -0.012245601, -0.038382255, -0.8187406, -0.25245667, 0.23014604, 0.22746666, 0.1594356, 0.16469443), target1);\n\ttarget1 = MulAdd(nf2 , MF4x4(-0.12663333, 0.014730006, 0.03765697, 0.15704912, -0.106595434, -0.05317512, -0.081759915, -0.08797109, 0.064620756, -0.06341419, 0.16493447, 0.23102313, 0.068325415, -0.088058695, 0.16885915, 0.036382258), target1);\n\ttarget1 = MulAdd(ng2 , MF4x4(0.035389822, -0.11811836, -0.035656307, -0.0680554, 0.1338908, 0.065852076, 0.023307983, 0.0675308, 0.09690683, 0.18170924, 0.09862692, -0.20964378, -0.08601271, -0.20016764, -0.01879598, -0.14629345), target1);\n\ttarget1 = MulAdd(nh2 , MF4x4(-0.27183273, 0.013525998, -0.14995874, -0.23938845, -0.26218823, -0.0009874097, -0.13385512, -0.10664239, -0.048931994, 0.039898522, 0.047444753, 0.10934722, 0.10969629, 0.123539805, 0.11692802, 0.14172275), target1);\n\ttarget1 = MulAdd(ni2 , MF4x4(-0.1656506, 0.019683002, 0.0221048, 0.12596753, 0.20420644, -0.07930122, 0.04653823, 0.11492255, -0.0050175437, -0.03271697, 0.013389486, 0.034583613, -0.2196601, -0.1615663, -0.013763388, -0.056037936), target1);\n\n\tMF4 target2 = { 0.103826486, 0.045373913, 0.11565896, -0.06568643 };\n\ttarget2 = MulAdd(a1 , MF4x4(-0.15104648, 0.05522861, -0.0654341, -0.053517453, -0.08264124, -0.0062249107, -0.20364265, -0.05015117, -0.18837251, 0.030655831, 0.046844713, -0.20673253, -0.14042036, -0.05655449, 0.13994302, 0.011745607), target2);\n\ttarget2 = MulAdd(b1 , MF4x4(-0.16517559, 0.1489214, -0.09149559, 0.025003506, -0.124926426, 0.16974348, -0.020857265, 0.08017403, 0.21836148, 0.0025619378, 0.2331612, 0.085599184, -0.030934382, -0.055194855, 0.09527726, -0.10081552), target2);\n\ttarget2 = MulAdd(c1 , MF4x4(0.041800212, 0.028859638, 0.09395546, 0.05211183, -0.038541477, 0.021495212, 0.04862346, -0.007864793, 0.038407274, -0.13841268, -0.14963801, 0.26470762, 0.16691841, -0.07262008, 0.034374326, -0.14709206), target2);\n\ttarget2 = MulAdd(d1 , MF4x4(0.00094978884, -0.028974704, -0.0900548, -0.08401967, -0.08935931, -0.043606587, -0.14497143, -0.05226239, -0.21516493, 0.19410603, -0.089924194, -0.04335071, -0.012618276, -0.2671613, 0.020422975, -0.037739716), target2);\n\ttarget2 = MulAdd(e1 , MF4x4(-0.13403237, -0.02524383, -0.03474901, 0.054432765, 0.11946775, 0.107336655, -0.1431715, -0.13370377, 0.015087512, -0.1917613, 0.073493585, 0.2788855, -0.010510839, 0.06891479, -0.06741307, -0.05271205), target2);\n\ttarget2 = MulAdd(f1 , MF4x4(-0.15432046, 0.04021662, -0.16979513, 0.13660534, -0.10518303, -0.10095502, -0.13092068, 0.022805348, -0.16676381, -0.4273298, 0.020867536, 0.3506733, -0.29459694, -0.055828743, -0.069241956, 0.04106382), target2);\n\ttarget2 = MulAdd(g1 , MF4x4(-0.08890133, 0.07549666, -0.040735144, -0.1506932, -0.22227979, -0.0762723, -0.17766447, -0.05741318, -0.21885683, 0.2379157, -0.15525854, -0.07306285, 0.15580738, -0.04394069, -0.19175608, 0.018283797), target2);\n\ttarget2 = MulAdd(h1 , MF4x4(-0.08503275, -0.105500385, -0.114987396, -0.07166016, -0.2147138, 0.09378708, 0.24550334, -0.0834075, -0.033147786, -0.022304727, -0.31062204, 0.027651973, 0.109098755, 0.18889032, 0.1163026, 0.13863255), target2);\n\ttarget2 = MulAdd(i1 , MF4x4(0.15266588, -0.14901319, 0.033916786, 0.09381096, -0.08196443, -0.16194504, 0.035789456, 0.21234898, -0.48724765, 0.2619442, -0.11215393, 0.25061038, 0.022344576, 0.0116525125, 0.111661114, -0.15242295), target2);\n\ttarget2 = MulAdd(a2 , MF4x4(0.020475458, 0.0797404, -0.13576819, 0.009681671, 0.030504882, 0.049232908, 0.022025917, 0.16912088, -0.23914136, -0.084663324, 0.020925451, -0.1023938, 0.035916872, -0.07538111, -0.11470242, 0.15238516), target2);\n\ttarget2 = MulAdd(b2 , MF4x4(-0.12941381, 0.08509899, -0.029489802, -0.09148447, -0.089406274, -0.116145454, -0.08979843, 0.11908148, 0.15473351, -0.21687616, 0.12607013, -0.08244334, -0.079580925, -0.16613089, -0.09287793, -0.03412643), target2);\n\ttarget2 = MulAdd(c2 , MF4x4(-0.023578499, 0.07394217, -0.13069086, -0.1060499, -0.07559958, -0.21839201, 0.1090753, 0.0787872, 0.07677037, -0.25998843, 0.20039314, 0.046882212, 0.31871012, -0.3048051, 0.15118991, -0.00518087), target2);\n\ttarget2 = MulAdd(d2 , MF4x4(-0.15338503, -0.11057532, 0.075839415, -0.18592294, -0.0155324, 0.038140323, -0.10498194, 0.09070477, 0.05108992, -0.047939524, -0.091004305, 0.09649005, -0.10967152, -0.051909525, -0.05314551, 0.09661584), target2);\n\ttarget2 = MulAdd(e2 , MF4x4(-0.14458802, -0.053263694, -0.0010885567, 0.23342133, 0.01918937, 0.12026143, -0.15691495, 0.30480555, -0.08725869, 0.19082253, 0.3594973, 0.016653897, 0.045152336, -0.088590585, 0.0069655925, 0.1392425), target2);\n\ttarget2 = MulAdd(f2 , MF4x4(0.17944881, -0.17950764, 0.13282645, 0.030974053, 0.32233685, 0.18067117, -0.11472813, 0.097301506, -0.047649745, -0.1053861, -0.081039384, 0.035132434, 0.10204545, 0.085582554, -0.13153993, -0.021741152), target2);\n\ttarget2 = MulAdd(g2 , MF4x4(-0.15573682, 0.16409989, -0.22574787, -0.03877603, -0.18285516, 0.11638645, 0.18321282, -0.017770218, 0.18230622, 0.16433364, -0.12795393, -0.03805153, 0.14386104, -0.0891527, -0.056928284, -0.10961495), target2);\n\ttarget2 = MulAdd(h2 , MF4x4(0.257622, 0.052519716, -0.25421762, -0.1887382, -0.083568096, -0.0064690276, -0.029110614, 0.103327505, -0.17006217, 0.2254096, -0.29366904, 0.04302887, -0.10198446, -0.24423616, 0.16781262, -0.005019004), target2);\n\ttarget2 = MulAdd(i2 , MF4x4(0.103393994, -0.059044626, -0.18192382, 0.0990813, -0.26143607, 0.11036474, 0.04788275, -0.096738026, 0.12825653, 0.13631694, -0.077904984, -0.020790676, -0.25118098, 0.122588515, -0.049440473, -0.10758222), target2);\n\ttarget2 = MulAdd(na1 , MF4x4(0.06693113, -0.13647175, 0.131139, 0.13143918, 0.081720434, 0.117537096, 0.15387627, -0.008771362, 0.08513583, 0.023794742, -0.0661625, 0.115793936, 0.0023350024, 0.02215075, -0.0494433, -0.013404977), target2);\n\ttarget2 = MulAdd(nb1 , MF4x4(0.041419264, -0.17622781, 0.028418267, 0.12114493, -0.23587078, 0.08457395, 0.014364018, -0.103271864, -0.051572207, -0.026424447, 0.16755055, -0.10763651, -0.033440586, 0.068594255, -0.050668504, 0.1941505), target2);\n\ttarget2 = MulAdd(nc1 , MF4x4(-0.2780181, 0.037816502, -0.11516711, -0.09822884, 0.13762361, -0.14317706, 0.14350282, 0.000623895, -0.08601606, 0.08118504, 0.15497385, -0.04721711, -0.008936935, -0.014223618, -0.09641698, -0.013884213), target2);\n\ttarget2 = MulAdd(nd1 , MF4x4(0.14349665, -0.03144472, -0.057813704, 0.0667044, 0.09026094, 0.051366236, 0.11139983, -0.015782114, -0.18314016, -0.18774192, 0.0014838242, 0.15759028, 0.062388215, 0.13626057, 0.02576217, -0.06317815), target2);\n\ttarget2 = MulAdd(ne1 , MF4x4(0.07151769, 0.14508991, 0.1736844, -0.11487795, -0.07999805, -0.07797908, 0.037923355, -0.059138823, -0.23531209, -0.040207293, -0.068355694, -0.024296658, -0.114820175, 0.19726487, 0.21772414, 0.03659222), target2);\n\ttarget2 = MulAdd(nf1 , MF4x4(0.16858695, -0.12135113, 0.009391182, -0.081519485, 0.13340487, 0.07007004, 0.094124354, 0.035519842, -0.3320139, -0.06624027, -0.14716229, -0.09205287, 0.12664132, -0.05655441, 0.0123263765, 0.04641279), target2);\n\ttarget2 = MulAdd(ng1 , MF4x4(0.19018422, -0.15428329, -0.009354114, 0.04165953, 0.11024837, -0.107493006, -0.05807292, -0.048029456, 0.24319384, -0.10542357, -0.013699952, 0.06228662, -0.06808749, -0.023227982, 0.16528323, -0.05610251), target2);\n\ttarget2 = MulAdd(nh1 , MF4x4(-0.008616222, 0.077674195, -0.08638503, 0.09293109, 0.072474636, 0.05004233, -0.20591061, -0.005301386, -0.15486047, 0.15038474, 0.1262478, 0.021724822, 0.02274613, -0.3088281, -0.08437887, -0.10684698), target2);\n\ttarget2 = MulAdd(ni1 , MF4x4(-0.16960032, 0.09365251, -0.030414175, -0.010766254, 0.18181023, 0.12130318, 0.08913089, -0.06070321, 0.05200306, 0.092584535, 0.17694671, 0.033796314, -0.038107123, -0.04335955, -0.049443472, 0.30465958), target2);\n\ttarget2 = MulAdd(na2 , MF4x4(0.07661484, -0.009945252, 0.12866217, -0.07592757, -0.21030053, 0.014371748, -0.072458774, -0.04700072, 0.15534303, 0.2007125, -0.15699059, -0.032897495, 0.08110436, -0.11243608, 0.008632577, -0.10153441), target2);\n\ttarget2 = MulAdd(nb2 , MF4x4(-0.034697928, 0.06928288, -0.2796273, 0.14405379, 0.12248569, 0.036539096, 0.06607706, 0.077684596, -0.16473202, 0.1665916, -0.29977503, 0.21047153, 0.13114224, -0.091579035, -0.045458574, 0.03254245), target2);\n\ttarget2 = MulAdd(nc2 , MF4x4(0.053284872, 0.053366095, -0.26152626, -0.03123967, -0.031794485, 0.17670582, -0.07450994, 0.017521491, -0.040290453, 0.38342363, -0.25021288, -0.014660264, 0.1621895, 0.25041878, -0.12124821, 0.068036206), target2);\n\ttarget2 = MulAdd(nd2 , MF4x4(0.11366693, -0.030863572, -0.07411263, 0.12475283, -0.046070684, -0.09033321, 0.013222701, 0.06798592, -0.32814804, 0.057653826, -0.14082801, -0.00217398, -0.22856179, -0.19058353, -0.20992154, -0.03701372), target2);\n\ttarget2 = MulAdd(ne2 , MF4x4(0.20345633, -0.1332355, 0.27152926, -0.13477845, -0.25242096, -0.28281286, 0.31289554, 0.14284514, 0.53362453, -0.46766588, 0.4518293, -0.39291728, -0.3573227, -0.014670052, 0.0051881406, 0.16552156), target2);\n\ttarget2 = MulAdd(nf2 , MF4x4(-0.15017267, -0.07792945, -0.204405, 0.13964304, -0.13642666, -0.10228306, 0.03238279, -0.08689329, -0.072262034, -0.0258388, 0.05689183, 0.055701543, -0.19800112, 0.012217054, -0.033292748, -0.047611095), target2);\n\ttarget2 = MulAdd(ng2 , MF4x4(-0.014704416, -0.12203891, 0.066083655, -0.1409769, 0.0041513643, -0.087383606, -0.17498164, 0.11327789, -0.25947225, -0.0016027623, 0.08202566, 0.042270098, 0.006429511, -0.26576808, -0.08461341, 0.049376782), target2);\n\ttarget2 = MulAdd(nh2 , MF4x4(0.0695189, -0.14753938, 0.09578246, -0.16607563, -0.0105561055, 0.17166016, 0.027422488, -0.14175262, -0.009492696, -0.23449713, 0.018270867, 0.14635146, 0.33451268, 0.030959005, -0.46468422, 0.024256868), target2);\n\ttarget2 = MulAdd(ni2 , MF4x4(-0.16865666, -0.00015881563, -0.054488145, -0.06222717, -0.032101758, 0.06485387, -0.0028512608, 0.046645947, 0.017593225, -0.19447896, -0.024742266, 0.03970127, 0.29845607, -0.16168733, 0.035172883, 0.07924657), target2);\n\n\tMF3 target3 = MulAdd(e1, MF4x3(0.09689336, 0.06046458, 0.072598994, 0.11994565, 0.104477674, 0.09302802, -0.05718302, 0.050438102, 0.08814741, 0.0308889, 0.0033925986, -0.01715605), 0.0);\n\ttarget3 = MulAdd(e2, MF4x3(-0.028314235, 0.06597744, 0.0966897, 0.035656154, 0.07770106, 0.075551905, 0.0001793458, -0.000479495, -0.00297406, -0.053916585, -0.016807461, -0.0057141334), target3);\n\ttarget3 = MulAdd(ne1, MF4x3(-0.047189303, -0.0207, -0.020910334, -0.07933196, -0.06961211, -0.086069845, 0.0943727, 0.008463375, 0.010755166, 0.062410597, 0.022625161, 0.04068433), target3);\n\ttarget3 = MulAdd(ne2, MF4x3(0.10270994, -0.019080428, 0.0050091282, -0.004672948, -0.013966742, -0.0063746064, -2.5856789e-05, 0.03151499, -0.0023983798, 0.113539025, 0.12381699, 0.100360274), target3);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n\ttex5[gxy] = MF4(target3, 1);\n}\n\n\n//!PASS 4\n//!DESC Conv-4x3x3x16\n//!IN tex1, tex2, tex5\n//!OUT tex3, tex4, tex6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.0001705175, -0.031081453, 0.010100773, -0.027214011 };\n\ttarget1 = MulAdd(a1, MF4x4(0.1851775, 0.053705044, 0.033816848, -0.018555025, -0.21204336, -0.01706974, 0.088259794, -0.13126148, 0.10729598, -0.043457437, 0.08634712, 0.09220895, 0.062131613, -0.01995871, 0.05181067, 0.18520063), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.1662002, -0.14197104, -0.052809287, 0.025287712, -0.08330898, -0.08998097, -0.15642618, -0.14941245, -0.03481203, 0.061857622, 0.26051775, -0.0005498248, 0.086427025, 0.024108192, -0.12418039, 0.022286376), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.058200672, -0.3073398, 0.17150162, -0.13394679, -0.075118184, -0.14607768, -0.006172172, 0.007731589, -0.21818224, -0.06449433, -0.038958784, 0.037722416, 0.28699976, -0.027563032, 0.23295315, 0.028444216), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.12871371, 0.0064904913, 0.14985761, -0.10923005, 0.17413563, 0.1599109, -0.08457703, 0.108153716, -0.08871187, -0.06661137, 0.2754416, -0.009667768, 0.39819396, 0.12392097, 0.14145902, 0.0019376524), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.13893189, 0.12715353, 0.015191678, -0.21003054, -0.030412354, -0.01676613, -0.19799289, -0.006130075, 0.37676954, -0.14475077, -0.2065198, -0.30432892, -0.14944535, -0.09121536, -0.107600585, -0.24462196), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.11653076, -0.0068671284, -0.02249137, -0.17877012, -0.15063138, -0.13514869, 0.107643366, -0.03196477, -0.086422764, 0.3079287, 0.17584166, -0.032449376, -0.06917114, -0.2682637, -0.18978168, -0.037039287), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.12014731, -0.030360512, -0.12954475, -0.110275604, -0.077214256, 0.019689744, 0.22149551, -0.002266716, 0.09697784, -0.124532826, -0.16776511, -0.034212478, -0.36935154, 0.016926935, 0.1363609, 0.20415346), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.11199535, -0.001692563, -0.09058429, -0.08437503, 0.092625685, 0.06046257, 0.25509837, -0.011657033, -0.17949764, -0.10718947, -0.1180669, -0.24681842, -0.1747311, 0.0014518246, -0.042863015, 0.06103357), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.14979295, -0.037154514, 0.01957725, 0.012282435, 0.09168596, -0.05552286, 0.111671515, 0.0078630615, -0.10319766, -0.06416261, -0.23097566, -0.13931875, 0.2110811, 0.013095802, -0.2306504, -0.025639111), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.10091975, -0.10095426, -0.023449723, -0.022170888, 0.054953706, -0.13049407, 0.08289061, 0.023241632, 0.08735388, -0.0058387457, 0.17897247, 0.011434436, 0.008181139, -0.0034718404, -0.015372735, -0.07657766), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.023442164, 0.07535702, 0.024391165, -0.050532013, 0.044168636, 0.0062343236, -0.019756999, -0.009695123, 0.10102337, 0.0052776975, -0.14944167, -0.060957722, 0.24367364, -0.08069369, 0.12170072, -0.047048368), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.18376935, -0.08407229, -0.12943378, 0.0738419, -0.12404976, -0.13367929, 0.11265896, -0.021353, 0.003783386, 0.50088304, 0.14058582, 0.041053623, 0.038247623, -0.014179976, 0.007905778, -0.042492237), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.046272535, 0.052449115, 0.17190954, -0.004745371, -0.045572635, -0.09292636, 0.36309823, 0.16673928, -0.099154025, -0.109614775, 0.17803112, 0.19907133, -0.14306267, 0.06898593, 0.11493454, 0.06795014), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.26181114, -0.044014625, -0.21605036, -0.08646438, 0.21038742, -0.084986, 0.0504626, 0.17514943, -0.25218952, -0.18691514, 0.057650108, 0.08653614, -0.101205684, 0.03176334, 0.18569492, 0.17973189), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.0339215, 0.20112811, -0.12986277, 0.028961731, -0.056813832, 0.04451147, -0.07827432, -0.0860976, 0.096853435, 0.3483546, -0.35758162, -0.11749375, -0.035918653, 0.06140711, -0.08520154, 0.02418808), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.09643022, -0.10491069, 0.0068604187, 0.023679713, 0.096521445, -0.29323488, 0.33353668, 0.112864286, -0.1172182, -0.07233183, 0.06607239, 0.08589609, 0.055790007, 0.14396138, -0.14191268, 0.00034840964), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.15357164, -0.038462736, 0.08143956, 0.1744909, 0.40503287, -0.114508316, 0.003937322, 0.2536635, -0.042445306, -0.15622465, 0.09155284, 0.010992155, -0.20646071, 0.022801135, 0.08894491, 0.069300614), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.12663515, 0.023849454, -0.053604446, 0.12082873, -0.247968, -0.020969635, -0.03831894, -0.014617553, 0.22630337, 0.037801865, 0.052950703, 0.04285706, -0.14487264, 0.20786528, -0.08719664, 0.1752347), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.073527604, -0.050752833, 0.051830504, 0.32868716, 0.17474994, 0.016937364, -0.08792601, -0.024481766, -0.022229593, 0.030706186, 0.09213566, -0.076506205, 0.073404044, 0.10368055, -0.175889, -0.08453031), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.06838216, 0.007698341, 0.063972116, -0.015604406, 0.16135305, 0.18044342, 0.024137018, -0.23326185, 0.13235588, -0.009096587, -0.058368143, -0.077040404, 0.0011419816, -0.09246194, 0.061036937, 0.049564146), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.023225296, -0.00060856267, -0.07775185, 0.016958566, -0.2641349, -0.08263046, -0.15350416, -0.30203494, 0.113956556, -0.010813236, -0.017738314, -0.13689043, -0.10318342, 0.025793184, -0.010336172, 0.09733422), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.04462596, 0.052866418, -0.34754288, 0.05540498, -0.24492586, -0.32016864, 0.18145293, 0.24873725, 0.32388234, -0.034801524, -0.1347588, -0.07565546, 0.015183539, 0.05059595, 0.08090056, 0.05930932), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.045346696, -0.052527856, 0.052270077, 0.13417454, 0.05200045, 0.028119288, 0.005115497, 0.22952151, -0.2158375, 0.12241308, 0.3507457, 0.08616576, 0.07592416, 0.28470486, 0.3432788, 0.24857087), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.21311626, 0.052607164, 0.1248861, 0.20193806, 0.045226507, 0.14512901, -0.15103437, -0.17926466, 0.11657411, -0.32711068, -0.16332194, -0.07793982, -0.21802668, 0.5183869, -0.13567342, 0.07823041), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.00796368, 0.048073012, -0.14537893, -0.021708772, 0.036246423, 0.1062395, 0.12605369, 0.007073524, -0.1572743, 0.07439501, 0.089162275, -0.0039608316, 0.332032, -0.05461242, -0.17615359, -0.10240517), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.20636982, -0.0024615112, -0.10625786, 0.024270926, 0.061810836, -0.13585201, -0.16581286, 0.23549418, 0.01928842, 0.07404979, -0.054449487, 0.04096373, 0.046939734, 0.003980803, 0.02111498, 0.064925276), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.10485388, 0.06850885, -0.11292169, 0.16991565, -0.15282536, 0.124175504, -0.050431166, -0.06689582, -0.00059811946, 0.033696912, 0.11055047, 0.033060126, -0.17472714, 0.0048819613, -0.04478706, -0.1344572), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.20473132, 0.056477875, 0.059559986, 0.115130566, -0.058425788, -0.035971727, 0.08334707, -0.096510135, -0.23206294, 0.10635798, -0.21575621, -0.07063254, 0.03877511, -0.107549034, 0.22248401, 0.21702304), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.02557767, 0.09886609, -0.100499466, 0.16687396, -0.084830604, 0.03150401, -0.049512494, 0.05595696, -0.13193256, -0.08585273, 0.14247662, 0.12290477, -0.07168309, 0.14531752, -0.048359327, 0.27716598), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.13297586, 0.20674329, 0.14469388, 0.08981846, -0.004231366, -0.02819193, 0.15470329, 0.17299837, 0.113062344, -0.22716297, -0.21754944, -0.00083956274, -0.14160508, 0.1808253, 0.11268379, 0.27335623), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.07497518, -0.06799594, -0.018158078, -0.00038999433, -0.15169668, -0.06928238, -0.33672288, -0.105485775, 0.33106267, 0.06698315, 0.019718744, -0.06810211, -0.35186404, -0.29145968, -0.056863394, 0.21498048), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.013215512, -0.24763754, 0.20965266, 0.1068435, -0.13234195, 0.053566497, 0.05061848, -0.28645232, 0.15518288, 0.23247199, 0.017553907, -0.25181335, -0.048030723, -0.06663929, -0.111026704, -0.12663394), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.010501938, -0.17995767, 0.06010859, 0.050185587, 0.108627126, -0.101203434, 0.07558728, 0.060466755, -0.106942676, -0.35854608, 0.16015992, 0.16823332, -0.06543775, -0.37310675, 0.014043972, -0.18328045), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.09712849, 0.013983463, 0.07291423, 0.031715546, 0.030862397, 0.045510456, -0.22066842, 0.063464865, 0.11721659, -0.10596602, -0.20611264, 0.052158818, -0.3961766, -0.03781582, 0.17633812, 0.1316111), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.25029674, 0.07153423, -0.35125682, -0.18255402, -0.19569087, 0.00432772, -0.0969035, -0.24648514, -0.0040922165, 0.037500706, -0.038137026, 0.056214277, -0.048258524, 0.03567822, -0.05033007, -0.24696785), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.03465209, -0.012495964, 0.22782089, 0.012034795, 0.2916752, 0.08264436, 0.15387125, -0.1473455, -0.15614432, 0.05536727, -0.027079755, 0.010725311, -0.03325222, -0.089212805, -0.10559839, -0.19647683), target1);\n\n\tMF4 target2 = { 0.012053958, -4.6962363e-05, 0.0020099226, -0.033494607 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.026301445, -0.021575214, 0.22165509, 0.059994068, 0.03341161, 0.1831188, 0.20342293, 0.110160105, 0.03908121, 0.020673111, 0.07239561, 0.038754333, 0.15266368, 0.16526422, 0.062376205, -0.09759537), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.19817191, 0.10267733, 0.17744653, 0.23283184, 0.18810122, 0.2708428, -0.12651879, 0.020756349, 0.039632563, -0.22201295, 0.04873703, 0.09159713, 0.13838065, 0.21169297, 0.30816007, 0.044463675), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.27859214, 0.07277634, 0.0021458792, 0.0089682285, -0.069680706, 0.090415835, -0.057762265, 0.18703683, -0.03514389, -0.102816254, -0.036509827, 0.038066104, -0.0168311, 0.094478935, 0.04079697, -0.049064912), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.20913245, -0.110538535, -0.08584027, -0.1222067, 0.05414807, -0.045247085, 0.07351766, -0.002078549, -0.1270987, -0.10164512, -0.1857815, 0.08845066, -0.03743333, -0.098948084, 0.21244387, 0.10441866), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.015990427, 0.36396438, -0.24094687, 0.30236533, -0.13271736, 0.06057376, -0.19678196, -0.28577125, -0.25427434, -0.08400598, 0.07284403, -0.18552442, -0.16425897, 0.097259276, -0.32386774, -0.2190484), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.004581924, -0.13954072, -0.122360416, 0.14132866, -0.08529257, -0.013296556, 0.0848472, 0.09336581, 0.10332182, -0.016313016, 0.07103558, 0.032564916, -0.13478759, -0.20207484, 0.12986964, 0.1219679), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.09817874, -0.10573357, 0.100535244, 0.19608764, -0.13303067, 0.024192972, -0.030689823, 0.02574889, 0.051233094, 0.03489235, -0.18465245, -0.06943822, -0.031604882, 0.1519888, 0.09348508, 0.09187296), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.21365458, -0.23696984, 0.13097638, -0.09435498, 0.16467983, -0.066370346, 0.1269104, -0.095128186, 0.09954892, 0.12489504, -0.43418056, 0.106512725, -0.17860703, -0.07114084, -0.07630834, -0.26642478), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.009044342, 0.02711196, -0.14873673, 0.015405045, 0.0071443473, -0.025285944, 0.07409282, 0.06338527, 0.0149676185, 0.011741382, -0.2133069, -0.028912885, 0.19420496, 0.039629057, 0.057636812, 0.15214856), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.07629928, 0.25540486, -0.050925937, -0.18136702, 0.02261603, 0.22343902, 0.003270321, 0.10735731, -0.12541203, -0.10208828, 0.012832783, 0.2591262, 0.08122926, -0.009837677, 0.10308358, 0.19236866), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.0896358, 0.27571487, 0.04406029, -0.047453407, -0.08587119, 0.16366854, 0.20622262, 0.08347545, -0.3501584, -0.28434548, -0.07592983, 0.09098784, 0.07605388, 0.09677056, 0.0015295541, 0.05102585), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.18255898, 0.18618028, 0.0017002645, -0.013004655, -0.06436534, 0.13967068, 0.063077755, -0.10632303, -0.20803222, -0.028537111, -0.03144366, -0.08555215, 0.05154303, 0.02431626, 0.15246728, -0.013708507), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.020998938, -0.05026291, 0.03700117, 0.00830308, -0.1949294, 0.0026698054, -0.034649856, 0.19784226, -0.083901435, -0.069783084, -0.1504053, 0.16595264, -0.07480141, 0.16067508, 0.06010996, -0.021359695), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.040828142, -0.20158486, 0.034770954, -0.1894161, 0.11665004, 0.29729164, -0.10584386, 0.13165873, -0.18863006, -0.26719162, -0.047613148, -0.12728356, -0.2033613, 0.10550052, 0.20095508, -0.11275811), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.0785033, -0.1896073, -0.051492307, -0.1694358, 0.1368308, 0.049355216, -0.05707422, 0.079159185, 0.024578957, -0.0923136, 0.089215435, 0.28670043, 0.027932687, 0.06510816, 0.10810999, 0.05990052), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.08135192, 0.0001326522, -0.16098668, -0.18663193, -0.10280192, 0.078255914, 0.047648013, 0.08326376, 0.055962667, 0.06302574, -0.080121025, -0.031820554, -0.019117938, 0.12515336, 0.09794088, -0.03276838), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.280923, 0.24079335, 0.007883573, 0.06270414, 0.3055441, 0.19291803, -0.16041607, 0.14836526, 0.0013885222, 0.04538063, 0.10742898, -0.064491205, 0.048174977, 4.237692e-05, -0.15194727, 0.024381457), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.0009164131, -0.031949926, 0.0076425644, -0.036870714, -0.0031292974, 0.017726978, -0.20172147, -0.0770472, 0.26379177, 0.108997814, 0.08069395, 0.2126177, 0.012075376, -0.029457828, 0.062730506, -0.15754452), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.09167904, -0.2657421, -0.03443356, 0.03315832, -0.015365421, -0.1029612, -0.108251, 0.04261033, -0.097120754, -0.05616668, -0.09275983, 0.024902184, 0.050058514, -0.013761632, 0.07555132, -0.0046676896), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.10743835, -0.0007361781, -0.042085417, -0.08237517, -0.10094376, -0.24007876, 0.13924706, -0.07526801, 0.01158322, 0.15491122, 0.0069442675, -0.004242352, 0.11429785, 0.02994726, -0.11829945, -0.04108612), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.073622055, -0.064717196, -0.0025231615, 0.13256475, 0.20159899, 0.047977835, -0.10289233, -0.18419135, -0.00888952, 0.059428576, -0.053062655, -0.02730631, 0.14545685, -0.08686949, 0.17454128, 0.035443828), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.010146019, 0.06712568, 0.12614638, 0.023590917, 0.025756737, 0.06603747, -0.17108095, -0.06179699, 0.027241204, -0.13196802, 0.043475866, -0.0397495, 0.05306092, 0.035672903, 0.047219284, -0.16680142), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.079427816, -0.06716479, 0.19028603, -0.19694683, -0.061598092, -0.07471188, 0.21170339, 0.30140215, -0.0023369973, 0.04688297, -0.14154115, 0.19283508, 0.1339858, -0.09116279, 0.15305163, 0.029108394), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.14902157, -0.03339153, -0.08532003, -0.10736339, 0.08702709, 0.07607574, -0.09955836, -0.016585784, -0.030078214, -0.060374748, -0.2854279, 0.02441719, 0.034877967, 0.2099041, 0.11125731, -0.059071556), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.08436325, 0.06893047, -0.045362443, -0.02237741, -0.07583875, -0.034830183, -0.024008518, -0.2882329, -0.011109783, 0.101859994, 0.091137715, 0.0020565533, -0.044729806, -0.18168025, 0.069466636, 0.04994174), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.11915174, 0.089596465, -0.18965814, 0.015218237, 0.13500094, 0.19921367, -0.008298205, 0.29650384, -0.049439427, -0.27590424, 0.36169067, -0.030582754, 0.02151196, 0.019915426, 0.04543398, 0.16126189), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.1620274, -0.08264547, 0.082442135, -0.0034478644, 0.09888509, -0.0034957859, -0.107241705, -0.17729597, -0.05138647, 0.02052103, -0.019507123, 0.037574988, -0.1694345, 0.17871588, -0.22510391, 0.019049853), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.10962245, -0.1329873, -0.060855392, 0.025941676, -0.19536193, -0.120365486, -0.04313703, -0.052912965, 0.20854498, 0.08341353, 0.008687068, -0.20432276, 0.15677948, -0.19000018, 0.01821201, -0.041512605), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.012287526, -0.14180368, -0.098788455, 0.025949089, 0.09442778, 0.2247651, -0.12453263, 0.10435483, 0.274603, 0.06133054, 0.10506106, 0.14727746, -0.048299775, -0.082819685, 0.07319359, -0.047460355), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.070726536, -0.034744017, 0.07521428, 0.070649154, -0.05958955, -0.100232825, -0.010651838, 0.045392875, 0.2930271, -0.04952355, 0.3112155, 0.117203265, 0.025166962, 0.11176862, 0.06716659, 0.07175864), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.011560962, -0.14032063, -0.17424704, 0.07652749, -0.04220116, 0.052874275, -0.00225693, -0.031843517, -0.07520102, -0.13775803, 0.2449317, 0.069658786, 0.052280303, -0.105218224, 0.03574522, -0.020500354), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.08793712, 0.26712346, 0.08315631, 0.23813692, -0.04439029, 0.031587064, 0.09561177, -0.13380238, -0.24982157, 0.31701845, -0.3875432, 0.10487225, 0.09201869, -0.037252493, -0.006935219, -0.14650282), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.077635325, 0.13732299, -0.071563005, 0.096517466, -0.15051986, -0.111744404, 0.03996857, -0.052670125, -0.1819665, 0.054554947, -0.13774712, -0.20061246, -0.0023742192, 0.15647805, -0.024121126, 0.075497724), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.0073632775, -0.06535298, 0.039895996, 0.20666869, 0.13625242, 0.04823007, -0.07135618, 0.04787906, 0.01383074, 0.15382123, -0.15519714, 0.056721795, 0.061946746, -0.0586851, 0.028934354, -0.02264129), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.19791882, -0.111910924, -0.010451344, -0.30566537, -0.1416239, -0.14523096, 0.116883226, -0.18241516, 0.2680614, -0.18487626, 0.17472346, 0.08346682, -0.14510359, -0.029229192, -0.005879142, 0.050247498), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.030153519, -0.092469186, -0.022912916, 0.10200855, -0.04237032, -0.05917764, 0.10479645, -0.05619482, -0.18949397, -0.019547248, 0.013868889, -0.1524476, 0.14048979, -0.032521486, 0.1322921, 0.070972025), target2);\n\n\tMF3 target3 = tex5.SampleLevel(sam, pos, 0).rgb;\n\ttarget3 = MulAdd(e1, MF4x3(0.07868885, -0.030913834, -0.009213676, 0.04870991, 0.021467991, 0.038739506, -0.042969644, -0.07122453, -0.08798675, -0.09784122, 0.021434791, 0.02510374), target3);\n\ttarget3 = MulAdd(e2, MF4x3(0.050420716, 0.0729716, 0.076532185, -0.019112485, -0.01037939, -0.026948035, -0.02591423, 0.008927897, -0.00042541025, 0.1043701, -0.0071186824, -0.041817162), target3);\n\ttarget3 = MulAdd(ne1, MF4x3(-0.16143242, -0.0009298223, -0.01228508, 0.07744052, -0.018313263, -0.0488145, 0.09241393, 0.07128674, 0.055164956, 0.054884013, -0.04834418, -0.06281626), target3);\n\ttarget3 = MulAdd(ne2, MF4x3(-0.049036566, -0.05979936, -0.05594288, -0.014564307, 0.031926468, 0.037857566, 0.015474487, -0.11385003, -0.11527764, -0.07076006, 0.057038613, 0.095983796), target3);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n\ttex6[gxy] = MF4(target3, 1);\n}\n\n\n//!PASS 5\n//!DESC Conv-4x3x3x16\n//!IN tex3, tex4, tex6\n//!OUT tex1, tex2, tex5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.034743138, 0.012946433, -0.082333155, 0.07721756 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.06738501, 0.034009207, -0.21538448, 0.14296548, 0.12896985, -0.23526315, -0.08848608, 0.019602662, 0.14937137, 0.11353096, 0.11884168, -0.016765572, 0.030985225, 0.046430565, 0.06614828, -0.19202724), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.10326068, 0.11014975, 0.17069744, -0.21474148, 0.16761585, 0.13434832, -0.101021074, 0.006307025, 0.07478008, -0.1060066, 0.035315692, 0.033488914, -0.24906659, 0.06269967, 0.11120735, -0.040928528), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.09334615, 0.057705753, 0.12213245, -0.06402275, 0.30694544, 0.034585163, 0.20345578, 0.07489286, 0.07483618, -0.14240396, 0.034846418, -0.03811241, 0.010882573, 0.13204294, 0.017563924, -0.047203008), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.21673942, -0.024010994, -0.10238504, -0.041160326, 0.06838163, -0.20950818, 0.06526309, -0.079094924, 0.02208821, -0.28130978, 0.086275116, -0.089067616, 0.12133826, -0.062600106, -0.020521903, -0.07654401), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.03055029, -0.15683146, -0.20331301, -0.06252028, 0.13350682, 0.20338707, 0.038425338, 0.1581342, -0.27322498, -0.14999662, -0.16681097, 0.0971585, -0.20014858, -0.081635274, -0.0781877, -0.20625232), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.38375977, -0.019825654, 0.1886721, 0.22616312, 0.3402173, 0.1825304, -0.05531195, 0.30973226, -0.2676023, 0.14413352, 0.021706983, 0.01732799, 0.23466855, -0.13805965, 0.22570935, 0.018103868), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.15169825, 0.0270689, -0.2503316, 0.17289825, -0.16437647, 0.039233048, -0.35572487, -0.048393793, 0.19270042, 0.24260359, 0.12041881, -0.0009793913, 0.11656858, 0.11007414, -0.0757491, 0.047933612), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.18657999, -0.11252566, -0.05237504, -0.07368097, 0.13882741, -0.13710637, -0.006996468, -0.062354874, 0.23452504, 0.15333645, -0.0022776406, -0.17910439, 0.03629509, -0.16264829, -0.010011833, -0.15313338), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.060544558, -0.04913478, -0.061717357, 0.02323648, 0.28739056, -0.07434013, 0.19110644, 0.100050166, 0.0073363045, 0.08185653, -0.024797903, -0.14424153, -0.20838726, 0.16154376, -0.048517212, -0.025453888), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.14975396, -0.13142908, 0.36210674, -0.054021083, -0.10632155, 0.045697935, -0.18946633, 0.02228141, -0.08919603, 0.09800842, -0.17634438, 0.09512711, -0.03425503, -0.12298555, -0.05354435, -0.17112055), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.09958265, -0.057276618, -0.16262266, -0.06415915, 0.14579074, -0.36784375, 0.08034197, -0.04537706, 0.005460582, 0.22313322, 0.07382161, 0.014990379, 0.044636846, -0.2811128, -0.22621547, -0.06044004), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.10569276, -0.03738662, 0.16100396, 0.058593616, -0.048862137, -0.08796426, 0.20101094, -0.11039573, 0.17196764, -0.04601554, 0.008571281, -0.073729075, 0.051433694, -0.051276565, 0.087334655, -0.0360379), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.011119538, -0.28781965, 0.28637868, -0.1742508, -0.07121849, 0.10379717, 0.012615981, -0.029563965, -0.18678424, 0.05291095, 0.039143506, -0.028248642, -0.014103922, 0.029155696, 0.10433492, 0.16305852), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.2231037, -0.13697462, -0.29124337, 0.08519773, 0.15893684, -0.17763218, 0.06950923, 0.34361118, -0.024844287, 0.044008408, -0.033844844, -0.086971916, -0.07884748, 0.2543499, 0.056884114, 0.10068364), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.07710048, -0.23218372, 0.04346047, 0.21769643, 0.06473219, -0.18066105, -0.2511205, 0.15309611, 0.04535977, 0.16450433, 0.10846344, 0.0016952346, -0.010874939, 0.28966382, -0.121990964, 0.12956186), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.007910202, 0.17766511, 0.14364475, 0.1016258, 0.0051045395, 0.18691733, 0.005813767, -0.0070582186, 0.019418601, -0.1604435, 0.016088275, -0.18265302, -0.15719391, -0.17369832, -0.036745597, -0.19647408), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.08938396, -0.0073808245, 0.11225727, -0.012303106, 0.096785046, 0.030483445, 0.027719889, -0.052584838, -0.14887555, -0.03422243, 0.12646855, -0.1722482, 0.010239037, 0.06406088, -0.20053658, 0.01964698), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.120734036, -0.12450362, -0.06582111, 0.1639675, -0.19787048, -0.08049789, -0.014257596, 0.058436662, -0.0009387449, -0.08698089, -0.017400503, 0.06295286, 0.09890349, -0.057190523, -0.103520766, -0.04207548), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.0118413875, -0.031288836, 0.09749554, -0.012266401, -0.07998591, 0.22615653, -0.06207416, 0.03257896, -0.076378696, -0.079426095, -0.13968349, -0.15423697, -0.1091681, -0.02893125, -0.032659534, -0.063735925), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.119372696, 0.013176554, -0.029381052, 0.21919228, 0.045041792, 0.24844484, 0.26363325, 0.08480674, 0.087083444, 0.11984778, -0.088715754, 0.06421046, 0.05225977, -0.05140334, -0.055052705, -0.049854077), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.0035781674, 0.0861361, -0.07675145, -0.056479637, 0.16973391, -0.12113791, 0.10729832, -0.03773517, 0.058618728, 0.12148276, 0.17260705, -0.06968724, 0.076358154, -0.15307103, 0.17700425, -0.13467014), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.02752418, -0.06366472, -0.025610954, 0.0013539721, -0.06465272, 0.0806373, -0.07336035, 0.10114861, 0.0041146413, 0.15878421, -0.044668555, -0.12150811, -0.1071482, -0.05086587, 0.18589285, 0.05065092), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.07200056, 0.021739854, 0.29476613, -0.08475931, 0.15018553, -0.07886365, 0.36336347, -0.020576432, 0.25866082, -0.059272554, 0.054249667, -0.17822553, 0.1755872, 0.3244387, -0.39173844, 0.33894604), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.11570926, 0.1342677, -0.19511898, 0.0075454637, -0.01890476, -0.14239742, 0.18921931, 0.033990458, 0.31306365, -0.006998358, 0.029190077, -0.005679954, -0.15341778, 0.07766778, -0.25691047, -0.0964161), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.019746238, 0.0021332854, -0.00879096, -0.1338671, -0.0001600663, -0.29465106, 0.0867611, -0.114963025, 0.07874301, -0.012734178, -0.11124061, -0.010926616, -0.04941506, -0.07516841, 0.116663, -0.29018974), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.01651721, 0.05955898, 0.023618208, 0.098695934, 0.018553663, -0.054378513, 0.1436929, 0.1693743, -0.27483663, 0.029127488, 0.09619316, -0.06109113, -0.08619361, 0.09315214, -0.02478657, 0.18544984), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.09570196, -0.016528936, -0.1559397, 0.14312246, 0.04029428, 0.08773151, -0.043646842, 0.17894371, -0.082413055, 0.0027082344, -0.100171275, 0.01547501, 0.18122818, -0.11933676, 0.26404107, -0.3169703), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.12073344, 0.08683522, -0.09249099, 0.058786053, -0.14480567, -0.121013954, 0.033335857, 0.009353379, -0.055087596, -0.13002734, 0.08890566, 0.05508963, -0.0075715426, -0.15936922, -0.03968994, -0.1690259), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.2011206, 0.23898427, 0.23656492, 0.1287573, 0.14850396, 0.40532517, -0.107408255, 0.40119782, 0.099813245, -0.03830304, 0.101520434, -0.026478073, -0.048469637, 0.106440455, 0.056632314, -0.17825997), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.076735444, 0.05965795, -0.0052469415, -0.21785147, 0.11887833, 0.067560315, 0.051149055, 0.23626682, -0.1297049, -0.035512198, 0.20352256, -0.025064934, 0.04958706, 0.0454198, 0.0113334535, 0.0417486), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.09055751, 0.033915352, -0.21836667, 0.22006813, -0.099022895, 0.11720966, -0.15686816, -0.13586599, -0.094427735, -0.08831514, -0.06182928, 0.09213704, -0.03642064, 0.18129414, -0.012926811, 0.12179882), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.19389409, 0.09512252, 0.14768016, -0.16623649, -0.031052284, -0.026814984, 0.106168024, -0.2026781, -0.04581419, -0.0016849053, -0.04101923, 0.038959503, -0.011938445, 0.20096186, -0.26666564, 0.4824324), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.17727576, 0.07309147, 0.12131863, -0.163096, 0.17225246, 0.26256254, 0.27685758, 0.09094053, 0.029605515, -0.20217367, 0.047564875, 0.043115832, 0.15089568, -0.09670934, 0.24131384, 0.03337442), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.34192136, 0.12063195, -0.31159517, 0.04170889, -0.30147067, -0.21330686, -0.1514457, -0.121126845, 0.04409098, 9.2206596e-05, 0.027680017, 0.03230512, -0.27993527, -0.093485355, 0.07568645, -0.23585452), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.0537712, -0.20847629, 0.1740093, -0.013894753, -0.32719997, -0.059484575, -0.006098233, -0.10336451, -0.14706188, -0.07424865, -0.07045905, 0.17093194, -0.22147557, 0.09086218, -0.11033544, -0.05306482), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.00489003, -0.11509064, -0.021005848, 0.16637677, -0.089347586, 0.17545725, -0.17313693, 0.13742085, -0.14577347, 0.07951095, -0.092139855, 0.017118992, -0.053472433, 0.079414465, 0.0330263, -0.11189824), target1);\n\t\n\tMF4 target2 = { 0.08895955, -0.027667087, 0.20500831, 0.00037762933 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.25835788, 0.050451655, -0.1845038, -0.07232528, 0.1323318, 0.26276684, 0.10842882, -0.083056524, 0.17426784, -0.3594826, 0.2728965, 0.08388844, -0.004007842, 0.020535901, -0.051425606, 0.07750436), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.11410436, 0.014572361, -0.27057216, -0.023974562, 0.05234827, 0.15328228, -0.17502303, -0.3199359, 0.12188045, -0.095813684, 0.024145132, 0.0856916, -0.027453909, -0.043129764, 0.16971985, 0.021623038), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.06611095, 0.038625732, -0.13717118, -0.04497733, 0.15213469, 0.04770935, 0.0729271, -0.062052976, 0.004571303, 0.035141192, -0.059409596, 0.044652313, 0.17520894, 0.09665589, -0.1479193, 0.06528058), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.1845968, 0.091479465, -0.09394898, -0.13545018, -0.029501775, -0.21426639, 0.09255898, 0.1257644, 0.20256902, 0.06267267, 0.10378081, 0.13494423, 0.058310498, 0.03642236, -0.16268995, -0.048100803), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.2155119, -0.3683131, 0.049449228, -0.20559964, -0.11761922, -0.2518804, -0.020712897, 0.12895772, -0.07543782, 0.5805017, -0.11301444, -0.038493153, -0.06710986, -0.09321189, 0.108671665, -0.03259695), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.035307787, 0.108389005, -0.27493554, 0.27029404, 0.25523573, -0.28636125, -0.20766719, -0.008661457, -0.004480811, -0.046390545, -0.16221444, 0.008979624, -0.061375532, 0.035076566, -0.018924266, 0.01380219), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.051922515, -0.12463486, -0.10383422, 0.02220095, -0.1573033, 0.13980615, 0.13248625, -0.16803266, -0.0692132, -0.21552645, 0.13744529, 0.23034313, 0.0052666534, 0.028977966, 0.07720251, -0.06477756), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.14097473, 0.2770271, -0.172289, -0.03000696, -0.028684044, 0.040578447, -0.2290285, 0.082329154, -0.042402364, -0.20926563, 0.08233207, 0.11862443, -0.07038536, -0.02273004, 0.091550544, -0.065856494), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.14879914, -0.023923844, -0.23569296, 0.20306346, 0.17502785, 0.28776234, -0.2788995, 0.10012439, -0.05635638, -0.025840463, 0.09222198, 0.118032, 0.08057015, 0.1286071, 0.060189806, -0.052669708), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.07076086, -0.15111323, -0.07427972, 0.008372168, -0.17791592, -0.16254742, 0.013961132, -0.0944912, -0.23380096, 0.17377278, -0.09683394, 0.019931393, -0.12042098, 0.0016406325, 0.09393333, -0.06882231), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.21465093, 0.04142968, 0.06840044, -0.37831602, -0.05549571, 0.044905066, -0.07873589, -0.026804, -0.34764197, 0.022487951, -0.077293746, 0.089457795, -0.110094436, 0.24233972, 0.06285107, -0.10851744), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.093270175, 0.084138945, 0.03938272, 0.063565865, -0.010733802, 0.13554469, -0.06650261, 0.033002816, 0.011187271, -0.12821455, 0.20785914, -0.030438649, -0.124710515, -0.022294303, 0.09732408, 0.057609864), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.12833868, 0.021577539, -0.02700365, 0.11799592, -0.03655647, -0.04225167, 0.11049353, -0.16036157, 0.049277548, -0.033842396, 0.10020137, 0.095509745, 0.08060231, -0.09237418, -0.035598125, -0.035926737), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.32829186, 0.3492363, 0.030671779, -0.12606762, 0.010437313, 0.2757115, -0.21517593, -0.15800527, -0.12592544, -0.20578934, 0.10444053, 0.12993255, -0.046079267, 0.03834173, -0.19277227, -0.22124454), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.052546192, 0.026082167, 0.13831234, 0.10982424, 0.012946818, -0.12439852, 0.10134106, -0.10050398, -0.04472338, -0.14325236, -0.20579574, 0.0044005127, 0.22013672, -0.32955512, 0.12404084, -0.008160738), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.10774314, -0.31650826, -0.06601711, 0.19635755, -0.12622592, -0.06396423, 0.13856032, 0.16540553, 0.021387719, 0.23377723, -0.053738154, -0.1000186, -0.08338395, -0.052813534, 0.008122962, 0.13732094), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.18270823, 0.06966014, -0.17788303, -0.27303055, -0.077971615, 0.013978423, -0.02039098, 0.12715338, -0.11924171, 0.18900296, -0.085199654, 0.215198, 0.18587974, -0.009749325, 0.0173584, -0.12018259), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.052129295, -0.107416354, 0.12711766, 0.03708665, -0.14369462, -0.055359814, -0.16639823, -0.045143317, -0.06925672, -0.040696755, 0.01999809, -0.016040625, -0.02484878, 0.07417094, 0.050875198, 0.2145528), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.055696912, -0.16680926, -0.021987487, 0.024941636, -0.0927883, 0.022136632, 0.033782948, -0.10646058, -0.14944647, 0.25457275, 0.046682496, -0.022462368, -0.07886781, 0.08165927, 0.06848105, 0.0063734027), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.037053242, 0.033215813, 0.18291366, 0.12340375, 0.08491059, -0.28442004, -0.0127422465, -0.039834313, -0.23321372, 0.26676926, -0.05636355, -0.15672484, -0.12891728, -0.15486577, -0.032004442, -0.092745155), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.015779478, -0.18457565, 0.24996394, 0.036197674, 0.15694007, 0.15863103, -0.07332398, 0.0016235278, -0.15536517, -0.056062788, 0.14102836, 0.16915025, -0.08001087, 0.07073164, 0.13796777, 0.123867124), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.045792986, -0.15135059, -0.1354885, -0.043678258, -0.35655212, 0.51232076, -0.12816145, -0.046569496, -0.014127674, -0.06282611, -0.098873, -0.06359104, -0.0919222, 0.11822437, 0.079254694, 0.00579688), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.15683417, 0.61610246, -0.3024612, 0.12917964, -0.09303367, 0.23612969, -0.40842506, -0.12374661, -0.07572449, -0.2613284, -0.09970177, -0.015227848, 0.106239066, -0.21411185, 0.051998455, -0.1364518), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.23850034, -0.14394449, -0.0031468747, -0.2380617, -0.027200876, -0.041352056, -0.01864445, 0.033848196, -0.12064239, -0.110480845, 0.08450956, -0.22328654, 0.17664163, 0.22268307, 0.050886698, -0.17475672), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.17808256, 0.010803805, 0.03315186, 0.033143792, -0.14205995, 0.25039625, -0.08784382, -0.13454252, 0.19576813, 0.10755282, 0.22821628, 0.019456752, -0.0422955, -0.016182603, -0.12066697, 0.0548465), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.11563777, -0.257929, 0.0010403778, 0.080267854, -0.0025255163, 0.2855168, -0.060352214, -0.07816255, -0.00090574916, 0.049510725, 0.03720483, 0.059250016, -0.08674136, 0.20522198, -0.28694284, 0.1299507), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.14638457, 0.04063328, 0.03139636, -0.007934521, 0.07689684, -0.09467145, 0.10607347, 0.054510128, 0.003306194, 0.05347124, 0.062762424, -0.041480847, -0.07677865, -0.139573, 0.010972524, 0.21957156), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.026845628, -0.043439507, 0.034738723, 0.07281683, 0.14474197, 0.031586993, -0.22767854, -0.0707655, 0.105201736, -0.28805482, 0.008668302, -0.16329518, 0.06157049, 0.3803886, 0.26345953, -0.011096537), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.23328833, 0.085731484, -0.07755016, 0.33559516, 0.07704345, 0.115106605, -0.24114038, -0.44630137, 0.2726737, -0.32170138, -0.009236524, -0.11666051, 0.0457048, 0.07876708, 0.13134004, -0.035318643), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.05140272, 0.011605703, 0.13899171, -0.05071015, 0.18413687, -0.31413674, -0.13043414, -0.15118152, -0.15326938, -0.10720126, -0.23738635, 0.13481396, 0.25115076, -0.009316611, -0.2584441, -0.14389823), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.039723795, -0.14869407, -0.1692942, 0.026501274, -0.10685166, -0.121267825, -0.08584318, -0.09580693, -0.10626739, -0.068417974, 0.11321909, -0.13664317, 0.061380867, -0.2587898, 0.14850819, 0.008178645), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.06912782, 0.24230564, -0.048150286, 0.2203717, -0.17417085, 0.105546735, -0.16648416, -0.0045053074, 0.09764028, 0.37122592, -0.1939995, -0.27899942, -0.088152565, -0.53869057, 0.21676709, -0.08056594), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.07651754, 0.03704878, -0.0197015, 0.1660726, 0.07002748, -0.11820414, -0.23360898, 0.1481592, 0.029847002, 0.054057185, 0.013176299, 0.06552942, -0.13865773, -0.20105527, -0.37550658, 0.005769631), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.22697811, -0.17426412, 0.10148018, 0.008134666, 0.10771455, 0.16943407, -0.016319012, -0.40176705, -0.06854668, -0.049045276, 0.20919096, 0.13240765, -0.050125647, 0.14902508, 0.052697595, -0.13817468), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.04301619, 0.23184754, -0.023551717, 0.3768405, 0.028999053, 0.06709736, -0.05993663, -0.059861984, 0.15499207, -0.22217415, 0.111131504, -0.09082529, -0.19389243, 0.024621522, -0.15305442, 0.010799284), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.035496738, 0.010802548, -0.028718363, 0.19263634, 0.16900502, -0.16661702, -0.027631328, 0.18309957, -0.015860107, -0.03309961, -0.091390446, 0.14000848, -0.0036591904, 0.47659522, -0.09373507, -0.29020965), target2);\n\n\tMF3 target3 = tex6.SampleLevel(sam, pos, 0).rgb;\n\ttarget3 = MulAdd(e1, MF4x3(0.03094887, -0.008734403, 0.00042712069, 0.053891554, 0.05837673, 0.06200635, 0.09071558, -0.04202184, -0.046172567, -0.0425916, 0.04905093, 0.020835675), target3);\n\ttarget3 = MulAdd(e2, MF4x3(0.096628904, -0.037792254, -0.043241944, -0.011923947, -0.025950424, -0.031381752, -0.060941868, -0.07859433, -0.07535451, -0.026777223, 0.08604982, 0.07829908), target3);\n\ttarget3 = MulAdd(ne1, MF4x3(-0.06435972, 0.0036599538, 0.00786578, -0.061972067, -0.05681472, -0.06667608, -0.106890626, 0.007406496, 0.029977169, -0.20519382, -0.044860814, 0.0021225857), target3);\n\ttarget3 = MulAdd(ne2, MF4x3(-0.16876474, 0.012789643, 0.026692612, 0.017817136, 0.026935097, 0.02227043, 0.01690181, 0.07716103, 0.086527, 0.07923805, -0.10443151, -0.10859543), target3);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n\ttex5[gxy] = MF4(target3, 1);\n}\n\n\n//!PASS 6\n//!DESC Conv-4x3x3x16\n//!IN tex1, tex2, tex5\n//!OUT tex3, tex4, tex6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.043347504, -0.20504741, -0.037821215, -0.014486937 };\n\ttarget1 = MulAdd(a1, MF4x4(0.018134737, -0.2296755, -0.07276725, -0.029795367, 0.05382051, 0.092847414, -0.024469728, -0.1674685, 0.0017946451, 0.30074653, 0.0034195695, -0.04892261, 0.18229689, -0.20116119, -0.12702174, -0.08259108), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.1357695, -0.08149211, 0.09314453, -0.21966846, 0.34740716, 0.043606415, 0.04225903, 0.034449834, 0.17248215, 0.39148283, -0.13868807, -0.010550686, 0.044238456, -0.09693464, -0.005044985, 0.24383289), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.19959371, 0.098685324, 0.058746945, 0.010580748, 0.08051514, 0.031898864, 0.017556064, 0.13004355, -0.01727653, 0.11044019, 0.040673427, -0.20064595, -0.23321067, 0.06398686, -0.19126236, -0.2430858), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.12870286, -0.113455534, 0.23722827, 0.070718594, 0.19049989, -0.1927299, -0.06343845, 0.113127775, 0.082530305, -0.10972526, -0.090779535, 0.05731582, 0.11018802, -0.18049154, 0.09269507, -0.10304576), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.15513484, 0.06659583, 0.08125296, -0.012350324, -0.09492788, 0.5048303, 0.13206847, 0.39554298, 0.28953737, -0.20913891, -0.26781562, -0.17539899, 0.023778774, 0.29716817, 0.15768486, 0.37702608), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.0724462, 0.015571356, -0.032217246, 0.0050658924, -0.22708446, 0.03968809, 0.016753826, 0.0025668752, -0.055932112, 0.113931604, 0.19766758, -0.030027265, -0.17384295, 0.15013468, -0.0070017707, -0.09469028), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.078361556, -0.0954201, -0.006358101, 0.040500037, 0.4190454, -0.17622913, -0.07234791, 0.05462559, 0.18641087, 0.058313597, -0.0180785, 0.13818781, -0.14640772, 0.0699486, 0.0073663946, -0.076789856), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.21421191, 0.08736062, 0.09041226, 0.03608585, 0.02769972, 0.09641289, 0.11824623, 0.05653645, 0.16464607, 0.19839554, -0.13379547, 0.054417104, 0.067530684, 0.18971571, 0.13785432, -0.097639814), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.32658005, -0.14606023, -0.069448665, 0.032998275, -0.28331423, 0.0011900732, -0.020304207, -0.13535896, 0.08298347, 0.045509677, -0.030503955, -0.037504148, 0.049955815, 0.0925771, 0.00058534974, -0.12398032), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.2955836, 0.29059318, -0.018196672, -0.35866606, -0.01309431, 0.03540315, 0.010609202, 0.11956812, 0.10296229, 0.22536302, 0.015201129, -0.23797737, -0.16960852, -0.11414787, -0.034440614, 0.112644605), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.14952518, 0.07024436, -0.083184876, -0.0814617, -0.13303639, 0.016159372, -0.13521518, 0.2221334, -0.056617837, 0.12958299, 0.064461656, -0.20146395, -0.16023181, 0.2640758, 0.27528805, -0.1426518), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.04382363, 0.09856003, -0.08561442, -0.15699928, -0.121069774, 0.04685383, -0.009170197, -0.031489655, 0.18730178, 0.238442, 0.22497098, 0.032015145, -0.03709115, 0.1535079, 0.21674158, 0.10678019), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.12200952, 0.24224263, 0.034097504, -0.028179523, -0.011962496, -0.04489487, -0.05198827, 0.22194928, -0.045400873, -0.049828544, 0.111477956, -0.098361604, 0.12788995, -0.016093334, -0.19886433, -0.011161484), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.30563712, 0.013071727, -0.004799883, 0.12888052, -0.259498, -0.041566677, 0.07311124, 0.162324, 0.28371668, -0.004693743, -0.0019395344, 0.029358242, 0.08730285, 0.12184509, 0.05508437, 0.048439097), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.12760857, 0.115813166, -0.217695, -0.10629871, -0.227366, 0.09030426, -0.15313712, 0.020528946, -0.20743734, 0.088583544, 0.04594053, -0.22891994, 0.18949282, -0.042186577, -0.17330512, -0.010711361), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.029503195, 0.0063797613, -0.17004286, -0.096844055, 0.010218098, 0.04247233, 0.02362808, 0.14700809, -0.08082364, 0.11159672, -0.018505255, -0.15228583, 0.15693732, -0.025359154, 0.024829186, 0.1943192), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.03912932, -0.21989027, 0.12203028, 0.18702275, -0.118537985, 0.21039696, 0.09102061, 0.012288879, 0.031666897, 0.1318455, -0.04901404, -0.07516063, -0.44782668, 0.04884501, 0.047070876, 0.008728358), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.08669101, 0.3053463, -0.08963947, 0.0034188698, -0.070004664, 0.064788476, 0.093737036, 0.070050925, 0.12728429, -0.13179256, -0.014913502, 0.09308136, -0.027638942, 0.008638711, 0.08794172, -0.05531093), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.0728421, 0.07872358, 0.11454748, 0.08497922, 0.071820416, -0.11789207, -0.08184197, 0.1359588, -0.2143346, -0.05876081, 0.023172129, -0.08430511, -0.19276723, 0.14283359, 0.15604696, -0.055187486), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.068641685, 0.2732106, -0.2809107, 0.12736696, -0.08642367, 0.023898933, -0.17859498, -0.18299665, -0.06684587, -0.12204666, 0.45898953, -0.24240111, 0.25182098, -0.04395751, 0.10637211, -0.22135144), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.0852072, 0.051133018, 0.03333165, -0.0008938216, 0.10251267, 0.0550774, 0.041769378, -0.21259712, 0.286912, 0.123342015, 0.282759, -0.0730124, 0.14275575, -0.15580742, -0.15224406, 0.045376908), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.03328225, 0.11563978, -0.07451964, 0.030546209, -0.04698351, -0.18544962, 0.037350416, 0.13969816, 0.0556746, -0.06359919, 0.06478219, -0.031694926, 0.13396506, 0.09443612, -0.01922686, -0.06290365), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.07495407, 0.063429266, -0.106221214, -0.085107304, 0.2497817, -0.46598253, -0.18833177, -0.2731128, -0.13024822, 0.56053543, 0.055704467, -0.12331414, -0.031199086, 0.05061188, 0.22097112, -0.6611177), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.08276988, -0.044184342, -0.03562185, -0.06159881, 0.27694225, -0.07192965, -0.08663714, 0.020221777, 0.14095962, -0.06229397, 0.051374253, -0.038158998, 0.10664802, -0.041305423, 0.051260717, -0.054698635), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.12800686, 0.03485072, 0.039914366, 0.034041498, -0.08305794, -0.046292894, 0.22765331, 0.10904922, 0.0013937047, -0.08750301, 0.009126207, -0.065589435, 0.2837707, 0.08884436, -0.07234862, -0.093502745), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.113439895, 0.06081726, 0.1122302, -0.022936966, 0.10329637, -0.31816107, -0.051597945, 0.23846027, -0.083913095, -0.29872265, -0.040147282, -0.08981918, -0.04329814, -0.12339693, -0.034489952, 0.013393211), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.33091688, 0.1726297, 0.034332044, -0.091396205, 0.15434311, -0.0022870845, -0.15506189, 0.08710491, -0.16063525, 0.042252056, 0.017086457, 0.08134797, 0.08631321, 0.037843138, 0.088296555, 0.0064518084), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.09161051, 0.114355795, -0.15304486, -0.030537153, 0.1835368, -0.3287635, 0.031197926, 0.09717476, 0.04276852, 0.113250345, 0.05949038, -0.10599563, 0.43574792, -0.060788117, 0.18409383, 0.12678055), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.018356865, -0.0072578182, 0.12020777, -0.013127592, 0.20136636, -0.22984362, 0.06896224, 0.00044982752, 0.008428429, -0.123316936, -0.09989286, 0.078248784, -0.16313677, -0.003020313, -0.46285018, -0.08967125), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.03451497, -0.10864502, 0.13207638, 0.17194521, 0.0037514758, -0.20222199, -0.12535086, 0.001511977, 0.056294486, -0.2112898, 0.078261316, 0.10118746, -0.044742294, 0.21793383, -0.19927903, -0.21338293), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.034903776, -0.10167085, 0.031066334, 0.0379958, 0.20532596, -0.17457838, 0.16556816, -0.0021619152, 0.02682665, 0.03396325, -0.059273884, 0.1922813, -0.072151475, -0.010240544, 0.2302027, 0.12385962), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.20170145, -0.08203941, -0.028107846, -0.18003726, 0.44744352, -0.13190243, 0.13233365, 0.03626546, 0.085763134, -0.25613126, -0.11213388, 0.15529087, -0.271649, 0.050587676, -0.062583975, 0.057289865), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.040649455, -0.17949733, 0.35847965, -0.040587306, 0.24314344, -0.23811667, 0.13958354, 0.04961874, 0.09858903, -0.04202913, -0.21850993, 0.0700419, -0.09130745, -0.096835814, 0.0022782686, -0.25416258), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.08215545, -0.019647893, 0.055263475, 0.053733055, 0.098485716, -0.1041945, -0.06541415, -0.08868577, -0.07262986, 0.03513784, -0.110529095, -0.03369232, 0.056786604, 0.2569229, -0.05931065, -0.22081214), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.066926084, 0.029664058, -0.10779271, 0.11026963, 0.23927264, -0.16914488, 0.022947345, 0.12303853, -0.07066212, -0.013205378, 0.15348643, 0.035568032, 0.20966691, 0.010149819, -0.08814468, -0.064854674), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.11493852, -0.074924305, -0.14840698, -0.16956823, 0.056806292, -0.06387947, -0.06880271, -0.04637334, -0.1929893, 0.18226422, 0.064644486, -0.1594863, 0.027403917, 0.13951495, -0.06569123, -0.07700207), target1);\n\n\tMF4 target2 = { -0.011865144, 0.11717201, -0.13823777, -0.059450272 };\n\ttarget2 = MulAdd(a1, MF4x4(0.047881734, -0.09396414, -0.2839081, 0.3140853, 0.052613556, 0.09940423, 0.23960467, -0.022228222, -0.12065009, 0.07898222, 0.08657881, 0.010852739, -0.050450284, 0.01683982, 0.031813968, 0.053060856), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.10252411, -0.03116448, -0.30114275, -0.0316799, -0.017501019, -0.03006003, -0.2095696, 0.10134927, -0.3901916, -0.15335023, -0.11955071, 0.1337449, 0.101239376, -0.25044814, 0.2128469, 0.018979514), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.13392173, 0.052036732, 0.1682114, -0.026263753, 0.027221246, -0.15121374, 0.13723798, 0.08950682, -0.1182108, -0.07294226, 0.023392374, 0.052329235, -0.05632852, -0.07036173, 0.06872573, 0.05238042), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.18112028, 0.18242362, -0.06812871, 0.032463413, 0.124638766, -0.26765212, -0.07678663, 0.33806562, 0.09674393, 0.15574542, 0.23634006, -0.02873782, -0.1626769, -0.14760062, -0.007274849, 0.09866139), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.10726673, -0.10925056, 0.19967109, -0.19936769, 0.15942842, -0.14870064, 0.15493345, -0.08489036, -0.49053356, -0.17321263, 0.28426084, 0.18721215, -0.09898434, -0.2751838, -0.11833524, 0.028445128), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.11788817, -0.23724948, -0.046072144, 0.035621114, 0.04527003, -0.0073492974, 0.11097195, 0.06806836, 0.04814677, -0.1408476, -0.1325629, 0.00929532, -0.16699041, -0.03034791, 0.08320368, -0.15429299), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.2729515, 0.008244692, -0.17441982, -0.39026466, 0.17381759, 0.31194404, 0.055934936, 0.20744409, 0.20119062, 0.0734271, 0.0796807, 0.0031037466, -0.0016392237, 0.033733975, 0.07149338, 0.042083208), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.07985744, 0.10945015, 0.018472541, 0.1397503, 0.2005682, 0.42641, 0.23022486, -0.2916921, 0.028285174, -0.31885162, -0.27070364, -0.10390779, 0.0751492, 0.12752363, -0.2279459, 0.08998453), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.18450491, -0.140783, -0.008006845, 0.09029298, 0.12536179, 0.26949662, 0.09491545, 0.063907005, 0.11212244, 0.09778506, -0.1835966, -0.053119674, 0.0072294096, 0.25018227, 0.010868525, -0.22721334), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.028011927, -0.20073172, 0.5976166, -0.19494139, 0.17958745, -0.03838646, 0.058325976, -0.29409218, -0.12793432, 0.03245129, 0.35662368, -0.05048354, -0.13368197, -0.06151968, -0.012714591, -0.1763054), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.18468465, 0.31682113, 0.12818255, -0.117110476, 0.13709468, -0.10034022, -0.07994527, -0.1259309, 0.04067299, -0.1147398, 0.28361055, 0.27916273, 0.03696692, 0.16829546, 0.27819383, 0.08305029), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.28920117, -0.033877946, 0.01586206, 0.04681198, 0.024248574, -0.045777842, -0.03342128, 0.07525412, -0.063377544, -0.016737273, 0.11235511, -0.04325238, -0.24170023, -0.09993599, -0.03205371, 0.14339828), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.008357902, -0.11038377, 0.03709221, 0.26775306, 0.07963845, -0.25377446, -0.17630441, -0.10966474, 0.057311732, -0.083327, 0.044497233, 0.06903858, -0.26531395, -0.103399664, -0.14806591, 0.269314), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.05450808, -0.041993964, -0.07217651, 0.034468375, 0.2117634, 0.0075620585, 0.05825411, -0.2252478, -0.0527787, 0.049732126, -0.032040413, -0.09361454, 0.29585132, 0.018413153, 0.18384546, -0.024226356), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.031109914, 0.19351351, 0.07405522, -0.06313074, -0.09983541, -0.011495182, 0.11749038, -0.16775608, 0.2790974, -0.09338754, 0.07913264, 0.103792936, -0.18679164, -0.15639925, 0.112943865, 0.07930375), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.004106195, -0.036833283, 0.12908752, 0.12869535, -0.02472107, 0.17561707, -0.025890926, -0.18789047, 0.096218705, -0.16306408, -0.02198454, -0.010134957, -0.09710009, 0.002062143, -0.046785697, 0.0029441968), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.19648251, -0.015663045, -0.0730215, 0.028611008, 0.13529862, -0.015256192, -0.04119306, -0.24628192, 0.02601027, -0.21184283, -0.1962902, 0.09109358, -0.06792383, 0.092336476, 0.12215351, -0.08596062), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.17530201, -0.0351919, -0.31872514, -0.13933206, -0.07000922, -0.049807087, 0.0010997375, -0.033573963, 0.07442056, -0.33290103, -0.40381998, 0.09435, -0.3280128, -0.09953127, -0.11283648, 0.20685865), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.052573867, -0.035328753, -0.11132943, -0.17515652, 0.05021051, 0.058642425, -0.046640664, 0.0799107, -0.027398815, -0.33619994, -0.22135767, 0.07894002, -0.14941697, -0.0940996, -0.11655085, 0.049795926), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.039301276, 0.041062318, 0.20312686, -0.009338705, 0.013706282, -0.0245852, 0.03458311, 0.09601228, -0.18203016, -0.012260314, 0.17984508, -0.056576703, -0.102844186, 0.24047872, 0.05307189, 0.16066082), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.1478775, 0.0046362123, 0.05459521, 0.07162838, -0.01896149, 0.23700175, -0.14174299, 0.06988599, -0.32545477, -0.08065096, -0.061227743, -0.0010796773, 0.094327345, -0.20760082, -0.19523263, 0.19859222), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.049676366, -0.10381536, 0.02546116, -0.13127093, 0.10954914, 0.0048147943, 0.06962328, -0.30456528, -0.11956627, 0.0150488885, -0.10711722, 0.1684613, -0.1939089, -0.10577047, -0.11980919, -0.036988296), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.054795764, 0.09491116, -0.08494948, 0.059765853, 0.0131597435, 0.20786162, 0.11999637, 0.024381055, 0.22830428, 0.027053319, -0.011646274, -0.12145409, -0.07899559, -0.012688263, 0.10684157, 0.3824219), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.23994572, -0.0031532666, -0.0050638164, 0.14236279, 0.05690383, -0.06259682, 0.052624144, 0.20461404, -0.19230312, -0.11072268, 0.013023965, 0.08931543, -0.21997221, 0.11760443, -0.40943825, 0.28656834), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.06606179, 0.26007771, 0.033754125, 0.119690455, 0.024669139, -0.06752839, 0.12688096, -0.0063201943, -0.17123021, 0.07548857, -0.14213699, 0.034093797, -0.15632647, -0.123243414, -0.42634043, 0.1715022), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.046503466, 0.13876389, 0.17973013, -0.25938338, -0.18824704, -0.11876702, 0.31065792, -0.041042212, -0.061369427, 0.2057992, 0.17295738, 0.3836555, -0.21109799, -0.10167118, 0.16577047, 0.113483034), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.24534856, -0.014482421, 0.22515748, -0.12773542, 0.12794174, -0.02528619, 0.41710484, 0.09154934, -0.17805946, -0.25428918, 0.07294183, 0.047079418, -0.30949152, -0.08919157, 0.17888431, 0.17706038), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.1741826, 0.046225294, -0.10761791, 0.2619953, 0.007373745, 0.05104337, -0.22309966, 0.34529984, -0.034363825, -0.022187237, -0.08609555, 0.16842419, 0.28136057, 0.17843607, -0.11307746, -0.05668021), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.12310616, -0.29661375, -0.10581025, -0.049584012, 0.19651765, 0.08436489, -0.14533581, -0.029874112, -0.15422897, -0.062741704, -0.22694711, -0.15547274, -0.15181333, 0.0286061, 0.022438493, -0.062447168), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.3497046, -0.09455009, 0.060618952, -0.2134236, 0.054515295, 0.07451165, -0.09267233, -0.010513333, 0.13842636, 0.11563433, -0.054750167, 0.050432, 0.1514256, 0.04284002, -0.2095581, 0.07907657), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.11745651, -0.04717057, 0.085377194, -0.065956995, 0.07280491, 0.2730059, 0.11088276, 0.2437957, 0.14018989, 0.1164107, -0.09516929, 0.0022427947, 0.111544006, -0.0680495, 0.09324579, -0.12482022), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.07995795, -0.03387884, 0.019846136, 0.10231208, -0.07017192, 0.18659039, 0.035161644, 0.101182766, -0.14901665, 0.21307294, 0.063894205, -0.27546507, -0.24792959, -0.067731075, 0.13146006, -0.19333683), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.034206454, 0.1472648, -0.07406727, 0.014654025, 0.18703444, 0.1319857, -0.10610886, 0.08427947, -0.017536618, -0.06487879, -0.12095286, -0.050414838, 0.03260879, 0.1558894, -0.031887084, 0.11840288), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.114811294, -0.14574333, -0.09392587, 0.042283528, 0.08919092, 0.18259068, 0.0980717, 0.21024778, -0.1280008, -0.027260462, -0.1129027, 0.18722472, 0.13733985, 0.047153983, 0.030871978, 0.1998385), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.06783575, 0.004612595, 0.1153467, -0.11531557, -0.048889533, 0.07673577, -0.02041786, 0.22744459, -0.13092506, 0.13484807, 0.40003043, -0.053706612, -0.16985156, -0.04791236, -0.052443005, -0.08363625), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.18187882, 0.017893985, 0.17856054, 0.005413129, 0.014147176, 0.15102178, 0.12436294, -0.02176765, -0.16727823, -0.0364111, 0.17074408, 0.12899421, 0.31984514, -0.0072070034, 0.031895883, -0.1991405), target2);\n\n\tMF3 target3 = tex5.SampleLevel(sam, pos, 0).rgb;\n\ttarget3 = MulAdd(e1, MF4x3(0.003730466, -0.024648283, -0.022169832, -0.0062762927, 0.022062732, 0.032966793, 0.016349113, 0.017197203, 0.020952817, -0.1763789, 0.035497356, 0.053835396), target3);\n\ttarget3 = MulAdd(e2, MF4x3(0.020886675, -0.07054202, -0.079142675, 0.06664387, 0.044960167, 0.042230908, -0.095019594, 0.012421141, 0.0142890485, 0.056814816, -0.012751135, -0.014684506), target3);\n\ttarget3 = MulAdd(ne1, MF4x3(0.011765893, 0.0008920681, -0.0018258415, -0.010473814, -0.023085753, -0.028783914, -0.023034256, -0.0024786016, -0.0052162083, 0.1643386, -0.06132718, -0.09289065), target3);\n\ttarget3 = MulAdd(ne2, MF4x3(0.016597198, 0.09389637, 0.10833379, -0.043163072, -0.04714812, -0.035274632, 0.09634976, -0.009292612, -0.022424143, -0.08765172, 0.0051558353, 0.010900356), target3);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n\ttex6[gxy] = MF4(target3, 1);\n}\n\n\n//!PASS 7\n//!DESC Conv-4x3x3x16\n//!IN tex3, tex4, tex6\n//!OUT tex1, tex2, tex5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.02981662, -0.26338395, -0.011632586, 0.15063232 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.082203194, 0.021720003, 0.03725474, -0.08048348, 0.2063248, -0.033020593, -0.17585336, 0.06476272, 0.012244563, 0.026554609, 0.014708393, 0.26606125, 0.14248778, 0.12817341, -0.039826933, -0.12751861), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.24573852, 0.19695967, -0.06257417, -0.04782871, 0.3511875, -0.018083302, -0.077342674, 0.15247667, 0.20321761, -0.07479984, -0.09548503, 0.08109568, -0.23808748, 0.07246303, -0.004242619, 0.16162953), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.13296306, 0.19495387, 0.009222276, 0.033592198, 0.20443891, 0.16063854, -0.2581601, -0.016132578, -0.2296461, -0.23647323, -0.15407176, -0.18265317, 0.2343241, -0.049697313, -0.09398783, 0.41931856), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.10866088, -0.40605694, -0.0042648134, 0.07943803, 0.26914695, 0.14816476, 0.037706107, -0.123223364, -0.19962949, -0.053534556, -0.08397409, -0.04244924, -0.075791344, 0.29629225, 0.2311928, 0.099177904), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.1748319, -0.2003186, -0.32659066, -0.21007413, 0.20122464, 0.032196607, -0.026299698, 0.33395135, 0.11411664, 0.05971959, 0.09001304, -0.15936212, 0.012322024, 0.19936106, -0.411186, -0.08319479), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.07349218, 0.006184436, 0.096199185, -0.050186496, 0.064047046, -0.03813128, -0.057007037, -0.025550695, -0.2863145, -0.008512981, -0.20615962, 0.18009211, 0.008298396, 0.22452813, 0.010843521, 0.20169461), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.2691149, 0.059546687, 0.08922005, 0.2252196, 0.30341956, -0.024489028, 0.087045394, -0.03856442, -0.14083561, -0.17683443, 0.14137806, 0.15520614, 0.2073925, -0.19525874, 0.23661858, 0.3098405), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.006530723, 0.04180736, -0.04762067, -0.064395495, 0.02396811, -0.13332283, 0.0037775645, 0.026309434, 0.0033065109, -0.08315753, 0.02917419, 0.12330464, 0.22819455, -0.07489677, 0.12829056, -0.097994626), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.09983759, 0.032783493, 0.11085758, 0.08993078, -0.057110567, -0.018973934, -0.14946178, -0.03921629, 0.039757587, 0.015860094, 0.04989561, -0.19634786, 0.04351146, 0.019315343, 0.25972188, 0.17989321), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.04111906, -0.165601, 0.0003682197, -0.056232415, -0.32716644, -0.24015541, -0.057547837, 0.05966729, 0.06854747, 0.03599213, -0.18798864, 0.1183447, 0.014268468, -0.1310834, 0.06415977, -0.19414157), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.00070661673, 0.17671427, 0.10584568, -0.060910843, -0.104282066, -0.22676118, -0.01907062, 0.24882245, -0.043454725, 0.07691623, -0.48371696, 0.013537671, -0.025488405, 0.061228953, 0.18548754, 0.028671112), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.0121596735, 0.09595702, -0.08244918, -0.1176173, 0.26773354, -0.021729136, 0.075465776, -0.0928876, 0.12461298, 0.16830076, -0.15302569, 0.113850676, 0.09811088, 0.13006307, 0.24999009, 0.10261325), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.032246377, 0.038265374, -0.26476422, -0.1442876, -0.19866082, 0.08649541, 0.041478764, 0.11155026, 0.21576422, -0.09572912, -0.11174068, -0.19722937, -0.15801935, 0.29604745, -0.08606268, -0.15532136), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.06315591, 0.16151646, -0.009230362, -0.04341246, 0.09085519, 0.21924476, 0.38044852, 0.193819, 0.16622902, 0.0025134624, -0.22688466, -0.025276015, 0.07714917, 0.16302192, -0.11767101, -0.11086476), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.04170153, 0.001859292, -0.26352355, 0.10982333, -0.031867817, 0.15773517, -0.060263418, 0.11117763, -0.017359972, 0.0127261225, 0.0782802, -0.16908924, 0.080516845, -0.05691526, -0.07530135, -0.14553802), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.06112685, -0.032287434, 0.17445667, -0.044935808, -0.11449107, -0.051394563, -0.029589338, -0.14555557, 0.03440661, 0.11035615, -0.17175, -0.14851089, 0.037362, -0.18740481, 0.17278154, 0.18073405), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.27670652, 0.19484822, 0.2609349, 0.1455016, 0.04438468, 0.1449185, 0.11185832, -0.18598269, -0.019846648, 0.11886126, -0.098498635, 0.15737785, 0.011406795, -0.18860829, -0.13705735, 0.17535745), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.30244905, -0.28695273, 0.1146976, 0.21144345, -0.037980128, -0.027679864, -0.13992494, -0.04884521, -0.032023884, -0.07921183, -0.16042095, -0.06935386, -0.06570237, -0.1107404, -0.018163798, 0.22625941), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.07292955, -0.07321777, -0.045146503, -0.33291966, -0.096732594, -0.07203495, 0.33692798, 0.2870733, 0.122160144, -0.076574564, 0.042844944, 0.26448342, 0.07672146, -0.028775277, -0.12088313, 0.15583947), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.21589327, 0.05258274, 0.09705794, -0.024653846, -0.039402515, 0.28485695, 0.14711736, -0.10556087, -0.15140481, 0.09039498, 0.017308712, 0.11862922, 0.08230978, 0.21678248, -0.043815188, -0.226433), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.029258793, 0.26618922, 0.02564014, -0.23189862, -0.24074338, -0.18556763, 0.25973624, 0.04746873, 0.0137007125, -0.22239363, -0.12414957, 0.048228756, -0.22406264, 0.282667, -0.021001073, -0.17465611), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.32401654, -0.1495363, -0.20869227, 0.04271639, -0.0087802755, 0.031325378, 0.23834595, 0.039336167, 0.17265107, 0.20947595, 0.28737286, 0.0028783784, -0.057340365, -0.050347418, -0.11915604, -0.1831807), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.1811338, 0.07732653, 0.20975596, -0.47129005, 0.07121942, 0.08410583, 0.44170937, -0.19524159, -0.17807977, 0.12837476, 0.20816846, -0.1741958, -0.04411918, 0.06024972, 0.18159702, -0.052485272), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.15229738, 0.27513, 0.28150418, -0.19543962, -0.02045864, -0.07207227, 0.09589587, 0.09110817, 0.061413247, 0.0046052113, 0.11619411, -0.2988938, 0.065739445, 0.10205611, 0.12847126, -0.028355654), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.0657154, -0.047568597, -0.16148911, 0.16392621, -0.25281775, -0.061153214, 0.017480455, -0.026288848, 0.20319715, 0.04763355, 0.010444491, -0.26671803, -0.25821987, 0.32863674, -0.30734694, -0.18190521), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.042703815, 0.06633036, -0.048434302, -0.17176376, -0.12699759, -0.1124558, 0.083266065, 0.03354623, -0.13468939, 0.12706263, 0.053659134, -0.06930602, 0.008196115, 0.2034998, -0.06351442, -0.039730288), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.09614661, 0.22500272, 0.088511504, -0.16960482, 0.15364788, -0.18854137, -0.13163191, -0.07503735, -0.23177068, -0.0053305267, -0.041978605, 0.0971947, -0.049034655, 0.04486706, 0.09076307, -0.02310868), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.1304683, 0.17743458, -0.09817326, -0.0646786, 0.07886976, 0.20109388, -0.034114968, -0.2029261, -0.03348398, 0.029337432, -0.07302782, -0.02240758, 0.030242773, -0.30032325, 0.02085572, -0.027314361), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.037377544, 0.026350772, -0.07430488, -0.114671774, -0.126935, -0.046512567, -0.033628833, -0.19018382, -0.041053895, -0.031206857, 0.08562848, -0.01875709, 0.21099389, -0.092511, 0.0073047103, -0.009811013), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.11358029, 0.17468451, -0.12739041, -0.14332245, -0.22230148, 0.16862972, -0.04462456, 0.2469604, -0.008622369, 0.0081848325, -0.17032363, -0.16024362, 0.21178265, 0.037127133, 0.08559072, 0.11584694), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.008993893, -0.08037705, 0.4426555, 0.15593371, 0.15273719, -0.03249998, 0.055109, -0.1512612, -0.037183985, 0.20825677, -0.08516227, -0.06664223, -0.10011001, -0.3505215, -0.17941694, 0.052089088), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.109703645, -0.13505603, 0.1336451, 0.13118869, 0.010915504, 0.12748592, 0.21201555, -0.40841985, -0.11059143, 0.033772044, -0.039282143, 0.03095394, 0.10394723, -0.21343367, -0.10699851, -0.028351074), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.019704714, 0.06243651, 0.09896519, -0.17492259, 0.012675787, -0.004239029, 0.21319824, 0.069183126, -0.0071114586, 0.123431124, -0.24479835, 0.00723795, -0.045293927, 0.014101029, 0.15746681, 0.042405806), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.023828225, -0.0015190929, 0.1194638, 0.082163885, 0.10532113, 0.042044062, 0.02528007, 0.015175004, 0.026613194, 0.33525538, -0.1627064, -0.29887968, -0.197707, 0.038967777, -0.15811683, -0.106895216), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.044362027, -0.04946742, -0.14815849, -0.17660522, -0.034201477, -0.012243106, -0.050183997, 0.06407372, 0.039822515, 0.15880872, -0.0672721, -0.4081093, 0.019489579, -0.060278706, -0.015096743, -0.07799167), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.11861756, 0.27113584, -0.14107186, -0.10246008, -0.124051, -0.1627854, 0.10698585, 0.2846401, -0.061731786, 0.1724438, -0.12428688, -0.09986041, -0.034171514, -0.07100923, 0.041739646, -0.11308375), target1);\n\n\tMF4 target2 = { 0.18765923, -0.07697714, 0.028134674, -0.060966115 };\n\ttarget2 = MulAdd(a1, MF4x4(0.17082009, 0.031344634, -0.06131912, 0.00887183, -0.01528174, 0.12943709, 0.24537678, 0.008178781, -0.312396, -0.023583878, 0.07827866, -0.1231261, 0.15081584, -0.18161978, -0.25179705, -0.036934935), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.05768411, 0.16785417, -0.1788644, -0.0067257965, 0.021445744, 0.10066516, -0.23864186, 0.1450302, 0.12892793, 0.19856106, -0.24444748, 0.16531628, -0.044425935, -0.02775357, 0.009059946, -0.12958384), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.025798557, -0.17238182, -0.34056288, -0.20921059, -0.03576266, 0.1476854, -0.06264234, 0.14452787, -0.04130045, -0.07275762, 0.034578666, 0.2914669, 0.20879944, 0.21359251, -0.048695553, 0.2638088), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.022791177, 0.4204545, 0.116855636, 0.20241925, -0.010444933, -0.14462502, 0.022550104, -0.24423064, -0.09417524, 0.045358784, -0.11405829, 0.035979558, -0.2283092, -0.06670842, -0.23852053, -0.22417003), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.14526704, 0.040880535, 0.14076385, 0.07795045, -0.059177604, -0.13056375, -0.3373641, -0.19344307, -0.29891858, -0.32578763, -0.29061425, 0.1562214, -0.13578376, 0.36586633, 0.24936736, 0.054629393), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.025790233, -0.13020341, -0.10084969, 0.15767297, -0.09738769, 0.04034404, 0.0038675873, 0.043515608, 0.16899958, -0.29117966, 0.03420067, 0.14432564, -0.10473084, 0.21014084, 0.07775908, -0.09303797), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.07443987, -0.16225167, 0.036251917, 0.028432872, 0.03759333, 0.004027401, -0.033941846, 0.0019474924, 0.02357054, 0.30748722, 0.1652115, -0.17361522, 0.16905582, 0.08048018, -0.23639561, -0.029408466), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.0461233, -0.09346199, -0.07063276, -0.19447634, -0.049339604, -0.0032855074, -0.22661209, -0.0543389, 0.11924857, -0.21691081, -0.1645725, -0.0075736847, 0.018572787, -0.06552861, -0.01777661, -0.11651732), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.06425901, 0.123392984, -0.16395192, -0.093448035, -0.029316641, 0.0986573, -0.23135012, 0.011170849, 0.00023920486, 0.15296175, 0.35453254, -0.05189021, 0.20708887, -0.103900835, 0.081992395, -0.21829562), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.019074136, -0.1572586, 0.27919227, 0.09119617, 0.035954695, 0.2941489, 0.18262725, -0.055522963, -0.21364328, -0.1573611, 0.104966134, 0.08228523, 0.19945285, -0.0039229114, -0.1565048, 0.028975379), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.18501253, 0.006473006, 0.06637501, 0.04295065, 0.06411007, 0.1166344, -0.10060226, 0.46296063, -0.08600344, -0.03560105, 0.012215349, 0.017885283, 0.061346993, 0.17336361, 0.01935021, 0.20198092), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.04451627, -0.10372061, -0.13968691, 0.14479733, 0.1660607, 0.19334625, 0.0085214665, 0.28863636, -0.07600901, -0.014777084, 0.13209191, -0.09045013, 0.104893915, -0.04776884, -0.007936376, 0.104568765), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.023751335, -0.108048, -0.050531313, 0.15916029, 0.13246661, 0.04644228, -0.09586482, -0.17222965, -0.22898191, -0.033484615, 0.078883134, -0.052609313, -0.2721741, 0.045986425, 0.13972299, -0.28923607), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.23364568, -0.008875902, -0.40894926, 0.060443908, -0.2839635, -0.5270991, -0.2500865, 0.002020195, -0.24488612, -0.04982319, -0.009110353, -0.018023955, 0.06647274, -0.25225738, 0.26154432, -0.033934146), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.1535129, -0.21257545, -0.16553773, 0.17471452, -0.06203719, 0.15238857, 0.18702018, 0.18572305, 0.07740396, -0.074217625, -0.072156586, -0.2183728, 0.00403749, 0.13750519, 0.30362993, 0.06550286), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.37164542, -0.1980723, -0.15659203, 0.19498909, 0.01748114, 0.011807152, -0.05424202, 0.11926474, 0.050406165, -0.12925303, -0.020280985, 0.08429331, 0.14769496, -0.077555746, -0.15216178, -0.27070466), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.35804263, 0.08539285, -0.14785156, -0.13532467, 0.058254432, 0.20448379, -0.006173341, 0.058168225, -0.21714899, -0.13472849, -0.09392532, -0.12753737, -0.097461835, -0.11419082, 0.09384189, 0.06414768), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.023494452, -0.22187226, -0.16694295, 0.0204334, -0.26720086, 0.15916729, 0.3098874, -0.10292057, 0.008854983, 0.13375004, -0.04409455, 0.09286524, 0.095829524, 0.12427317, -0.048659876, 0.18300754), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.119153984, 0.10163183, 0.025017537, -0.40096784, 0.026778705, 0.15821172, -0.19947284, -0.33337715, 0.2952563, 0.16820388, -0.057061996, -0.029319009, -0.12184868, 0.09031512, 0.12028806, 0.021044692), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.086744264, -0.046958666, 0.2130253, -0.46672252, 0.07135636, 0.0100029735, -0.13828261, -0.012365689, -0.11374441, 0.21084632, -0.059631422, -0.013799735, -0.037889663, -0.10701892, -0.09493782, 0.15516634), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.031181194, -0.01535001, 0.029270316, 0.13128386, 0.11838377, -0.17051528, 0.12228499, -0.04841128, 0.33350074, -0.006144013, -0.09055018, 0.27470216, -0.26665646, -0.08703671, -0.01719071, -0.23449609), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.12856458, 0.005562174, -0.19517267, 0.13270985, 0.2776414, 0.032003902, -0.15778573, 0.15344355, 0.26930434, -0.13459459, 0.035019353, 0.08896612, 0.12847935, -0.122637205, 0.001815178, 0.08290523), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.33805037, -0.15318587, -0.20955376, -0.26121393, -0.026022578, -0.1617741, 0.1336867, 0.026223289, 0.012059392, -0.17295446, -0.060811974, 0.14027825, -0.21134059, -0.08408573, -0.23773228, 0.110836074), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.16176093, 0.15307428, -0.07711325, -0.3458805, 0.061291527, 0.023916256, 0.21370678, 0.0015756418, 0.10642374, 0.24807373, 0.11164451, 0.10780487, 0.087194376, -0.2718231, -0.008457387, 0.054078236), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.03259038, -0.20923306, 0.165477, 0.098864526, -0.02734457, 0.08871225, -0.01552188, 0.047712058, 0.055032052, -0.13044262, -0.2899521, 0.22230095, -0.029343741, -0.16427459, -0.005436118, -0.05111821), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.20065974, -0.1556366, -0.12620135, 0.44572976, -0.020925352, 0.12025185, 0.20588058, 0.06391864, 0.046870507, 0.16942503, -0.049370963, 0.008779016, 0.04954915, 0.090298936, -0.16466027, 0.011152038), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.13587528, 0.047841422, 0.19804007, -0.1672396, -0.072491, 0.04543739, 0.25287256, 0.015226213, 0.02007356, -0.049578942, -0.08796175, 0.1714897, -0.07819061, 0.1509537, 0.093094915, 0.031139288), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.013774682, 0.118201815, -0.009592314, -0.10837201, -0.0686881, -0.083380274, 0.107689425, 0.046642892, 0.119898744, -0.05502989, -0.19719897, 0.0005697584, -0.0921928, 0.032281205, 0.2568853, 0.2325449), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.02991112, -0.09898633, 0.06076172, -0.20906185, 0.0026118348, 0.06130956, 0.06760944, -0.16662054, 0.065741204, -0.13144116, 0.011419801, 0.22552124, 0.1465757, -0.07417319, -0.10788749, -0.24952699), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.19238451, -0.024058497, 0.19580396, -0.067399554, -0.18832864, -0.11752747, -0.078949094, -0.23762032, -0.04141864, 0.022530237, -0.02222157, 0.0054874527, 0.057746816, -0.34854797, 0.028730657, -0.08976777), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.16888975, 0.19949849, -0.08456147, -0.03619044, -0.019596824, 0.11214634, 0.13971676, 0.22926724, 0.03219445, -0.04566354, -0.14948955, -0.22817011, -0.08714846, -0.19684613, 0.15479128, 0.2433362), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.16050309, -0.102841675, 0.20855242, -0.011171905, -0.10309409, 0.22455123, 0.15892951, -0.06582373, 0.010079549, -0.2055006, -0.09385158, 0.006519388, 0.11838815, 0.37134558, -0.165772, 0.12704434), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.11643292, 0.03294274, -0.09800525, -0.13601723, -0.081318736, -0.059975546, -0.039105035, -0.2893635, -0.13024913, -0.058016162, -0.09961072, 0.10532414, 0.24250132, -0.35546342, -0.092634924, 0.093994915), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.18799333, 0.25611782, 0.014645917, -0.063751906, 0.06498416, 0.16619027, -0.14411639, 0.3914421, -0.07343631, -0.116468735, -0.10941946, -0.2553544, -0.37774643, -0.0018441634, 0.06827239, -0.0122299045), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.11884597, -0.2477297, 0.048488285, -0.06438257, -0.124703035, 0.25932777, 0.0650111, -0.0930877, 0.06463341, -0.000544085, 0.0147504965, -0.170097, -0.13241997, 0.20983136, -0.15956205, 0.03424298), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.034574904, 0.06755256, 0.09508443, -0.17162292, 0.046379335, 0.2178781, 0.08699012, -0.055380464, -0.2237568, -0.07427848, -0.028395249, -0.3225617, -0.084454566, -0.24776657, 0.254169, 0.13229847), target2);\n\n\tMF3 target3 = tex6.SampleLevel(sam, pos, 0).rgb;\n\ttarget3 = MulAdd(e1, MF4x3(0.030815786, 0.021069322, 0.01812191, 0.084839165, -0.0080813095, -0.029270556, -0.10456346, 0.062386703, 0.0665605, 0.11926609, -0.1104228, -0.13291118), target3);\n\ttarget3 = MulAdd(e2, MF4x3(-0.07159541, -0.007267032, -0.010134558, 0.008234213, 0.045609634, 0.040295456, 0.018416971, 0.01308482, 0.014649557, 0.035107512, -0.02140815, -0.030279048), target3);\n\ttarget3 = MulAdd(ne1, MF4x3(0.01918586, 0.03875863, 0.03229402, -0.07917104, 0.041135103, 0.057182517, 0.08609541, 0.0079662455, 0.004327576, -0.14332893, 0.03120354, 0.056732506), target3);\n\ttarget3 = MulAdd(ne2, MF4x3(0.03200192, -0.0035752193, -0.0031064528, -0.010902813, 0.014607456, 0.019431474, -0.016461229, -0.004938204, -0.004655488, -0.033470232, 0.0026075812, 0.005896968), target3);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n\ttex5[gxy] = MF4(target3, 1);\n}\n\n\n//!PASS 8\n//!DESC Conv-4x3x3x16, Conv-3x1x1x112\n//!IN INPUT, tex1, tex2, tex5\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass8(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.19233678, 0.016725872, -0.008011114, -0.1977463 };\n\ttarget1 = MulAdd(a1, MF4x4(0.21919365, 0.36627784, 0.12603314, 0.24306288, 0.06447028, 0.06472204, -0.05997039, -0.15651788, 0.017059859, -0.006497198, -0.4189735, 0.021636713, -0.23887977, -0.014220949, 0.031113686, -0.17342716), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.10818789, -0.03273837, 0.33918005, -0.19290088, 0.0955361, -0.34107623, -0.054906327, -0.18083344, -0.060723677, 0.24395694, 0.112975016, -0.07254578, -0.14389384, 0.13235968, -0.15054801, -0.26216486), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.23442148, -0.07857079, 0.022283873, -0.2656417, 0.037092753, -0.037313666, -0.5057047, 0.042533103, -0.120424, 0.00021930189, -0.0044566668, -0.45536995, 0.00040759926, 0.14597592, -0.094990164, -0.036161344), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.15024352, 0.19903262, -0.0734784, 0.092836305, -0.025753846, 0.024750374, -0.07550193, 0.035420835, 0.11084378, 0.26119822, -0.08443512, -0.0047807065, -0.042685136, 0.24889739, 0.098650105, 0.2088369), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.25551823, 0.14455976, 0.19886157, -0.23465924, 0.20711218, -0.20875362, -0.11320392, -0.30852005, -0.06795657, 0.008670962, 0.30601278, 0.6929064, 0.17079145, 0.15744895, 0.06441601, 0.06514001), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.03142604, -0.006410137, -0.023654792, -0.05708553, 0.062985405, -0.077010594, 0.078804865, 0.050882503, 0.010274228, -0.15558401, 0.09490256, 0.14964707, -0.11966925, -0.36176664, 0.27809814, -0.18862294), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.05609992, 0.0041612233, -0.08498908, 0.04479823, -0.080117956, -0.17423204, -0.22858045, 0.054569032, -0.050866384, -0.020000307, 0.027000953, -0.67724514, 0.16240878, -0.04641204, 0.0648367, -0.20613132), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.08542306, -0.08254248, -0.11090553, -0.14140448, -0.10788511, -0.13011602, -0.29319742, -0.26007155, 0.11033401, -0.31966573, 0.32668245, 0.19542319, 0.06329418, 0.20904626, 0.2724067, -0.009155685), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.007403411, 0.0012836396, -0.23446666, -0.03017208, 0.062420018, -0.13611084, -0.2975928, 0.13173148, -0.03679939, 0.13743873, -0.10121899, 0.074514665, 0.1497629, -0.09523838, 0.39018926, 0.37807035), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.11441487, -0.19565523, -0.25757137, -0.16148767, 0.15575317, -0.12657928, 0.10479676, 0.062919036, 0.010544159, 0.22931573, 0.20360178, 0.4637635, -0.3395036, -0.52467215, 0.08759308, 0.028030418), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.2699195, -0.34218305, 0.15259695, 0.03139074, -0.024053533, -0.029567484, 0.28480124, 0.20525953, 0.15452823, -0.217713, 0.15861876, -0.012275699, 0.21408023, 0.097508304, -0.57126766, -0.14679857), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.0755847, -0.09751562, -0.29480466, -0.22285318, 0.14196442, 0.114573136, -0.22294767, 0.12463806, 0.3322209, -0.04631724, -0.11097061, -0.27986854, -0.16099304, -0.060079545, 0.00299308, 0.120776065), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.050933484, -0.13776319, -0.18809728, 0.24035202, -0.32528606, -0.41684148, -0.029342847, 0.28642926, -0.07963454, -0.12905268, 0.07606093, 0.24670005, -0.08815598, -0.23320907, -0.008099349, 0.21512873), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.19247563, 0.18083979, -0.09719762, 0.15314941, -0.22350982, 0.46515045, -0.3571128, 0.35953265, 0.06921985, -0.4482386, -0.18732521, -0.5043983, 0.35159567, -0.33315298, -0.21884166, -0.16283798), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.021124054, -0.007966742, 0.0052493825, 0.022550896, 0.030403977, 0.3377868, -0.47602004, -0.077664234, -0.07222509, -0.07486097, -0.37971064, -0.5107857, -0.06299477, 0.04930232, -0.3330487, 0.29845512), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.063705474, -0.07917637, -0.02026607, -0.05142568, 0.021577014, -0.07379867, 0.033937998, 0.08148773, -0.02717838, -0.03233838, 0.098000035, 0.036476444, -0.13366953, 0.014477577, 0.24064232, 0.39313284), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.16046515, -0.094624564, 0.35435164, 0.09942324, -0.07137174, -0.27999225, 0.124644354, -0.0062176553, 0.015016751, -0.05500243, -0.23249559, -0.4508382, 0.1860433, 0.10671491, -0.033345353, -0.06611453), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.21614046, -0.01307525, -0.18941112, -0.20533535, -0.14481686, -0.47801897, 0.22605121, -0.20298961, -0.06744227, -0.20377496, -0.11926173, 0.15645133, -0.31570885, -0.3495616, -0.024666889, 0.040965475), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.11748018, -0.039976366, -0.00084064255, -0.028653437, -0.16216733, -0.036768105, 0.018064514, -0.0928936, 0.14008482, -0.064511225, 0.24329947, -0.0268608, 0.050330248, 0.08540601, -0.07272679, -0.01187671), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.09459936, -0.011723822, -0.06952858, -0.07808506, -0.065588176, 0.332501, -0.0120042395, 0.07668016, 0.14735217, -0.14856043, -0.06702449, -0.020953184, -0.023006834, 0.06135422, 0.1491448, -0.028061569), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.25136968, 0.25146323, -0.108277924, -0.20407207, -0.0013780294, 0.16108194, 0.25143847, 0.06672421, -0.033905584, -0.021144686, -0.019152718, 0.34619498, 0.14560962, 0.034437314, 0.024790365, -0.049976267), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.24928351, 0.12637813, 0.23609994, 0.12722939, -0.036997862, -0.16554876, 0.11144095, -0.10040036, -0.020359103, -0.080701865, -0.3142192, 0.27257237, 0.13546956, -0.14416885, 0.028196262, -0.2886465), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.28524777, -0.4236231, 0.27420738, -0.21095508, 0.23475651, 0.115876295, -0.18837357, -0.0260708, 0.030670704, -0.11516913, -0.11365572, -0.2203149, -0.018612983, -0.10719593, -0.031727783, 0.1403327), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.07240512, 0.03139215, 0.12328737, -0.021201206, -0.13971715, 0.072742075, -0.0011289873, 0.0053133667, 0.035639685, -0.04322272, -0.19288473, -0.15812221, -0.19126481, 0.0698514, 0.17619178, -0.035605464), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.18552057, 0.07259671, 0.011667668, -0.15630563, 0.11414356, 0.14482655, -0.04021029, 0.18495587, -0.11386139, -0.09058561, -0.011265998, 0.23358451, 0.0521358, 0.12495261, 0.021644838, -0.048094347), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.09222373, 0.0533347, 0.055820454, 0.22382596, 0.18713981, 0.2668916, -0.019384036, 0.012698582, 0.13325234, 0.20361474, -0.33106443, -0.08571572, -0.21243028, -0.10996386, 0.123459645, 0.1534967), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.18133277, 0.18108074, -0.05638664, 0.29533157, -0.2108019, -0.033636626, 0.5015888, -0.15116066, -0.041320793, -0.14764231, 0.07314567, -0.18865979, 0.10276937, 0.094240844, -0.1364283, 0.27812913), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.06040915, 0.23753685, 0.19019844, 0.23948252, -0.07535012, 0.11848904, 0.14389765, 0.050067905, 0.16150077, -0.030053454, 0.12478255, 0.26020208, 0.111198805, 0.06787492, -0.12771018, 0.006687384), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.5421617, 0.10414128, -0.21526064, -0.08883624, 0.13145073, -0.29695904, 0.57386386, 0.073361695, -0.09538372, 0.27593842, 0.070922814, 0.21769938, 0.06214975, 0.11847816, 0.10033405, 0.29360098), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.16294672, -0.014815565, 0.22046989, 0.16858687, 0.058917344, 0.21384977, 0.18803519, 0.105688855, 0.0355118, 0.20571202, -0.07341922, 0.26624045, -0.0415102, 0.050942056, 0.19727907, 0.20122413), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.020470422, 0.15815964, -0.13437317, -0.1967045, 0.074902646, 0.08356444, 0.055913117, -0.12837863, -0.18647918, 0.07002247, 0.038864706, -0.07288784, 0.04135125, -0.016055549, -0.1340297, -0.15578008), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.07685624, 0.00079105416, -0.068755336, 0.110282525, -0.014170752, 0.041282844, -0.17035173, 0.19439398, -0.3036256, 0.024148455, -0.19566648, -0.06736254, 0.14203559, -0.13016985, -0.32845357, -0.14266774), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.0087252045, 0.098839566, -0.08770506, -0.08499465, 0.015245115, -0.110854514, 0.054458305, -0.018121868, -0.09666134, -0.08316006, 0.24617113, -0.17195955, 0.2574254, 0.06734342, -0.13792352, -0.07306126), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.0073954533, -0.20126835, -0.22545357, -0.29462856, 0.057408337, 0.11939119, -0.01846476, 0.12534486, 0.15751605, -0.14282645, -0.14219986, 0.14283386, 0.14090413, 0.10500912, 0.03039335, 0.17448832), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.043910783, -0.09140025, -0.21666165, 0.07616939, 0.104454786, 0.309926, -0.12906921, 0.1140117, 0.09372434, 0.049547072, -0.086615674, -0.034449168, 0.096705064, 0.26001686, 0.027063297, 0.12422948), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.1365422, 0.2679611, 0.12037257, 0.43346113, 0.08223084, -0.016788265, 0.13570398, -0.017974345, -0.17922844, -0.09475725, 0.073539585, -0.106947675, 0.08998511, 0.04133868, 0.16586913, -0.26291734), target1);\n\n\tMF4 target2 = { 0.26886886, 0.05874665, 0.10268232, 0.05833081 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.36016628, 0.019064043, 0.3073228, 0.16891135, 0.026739368, 0.31136194, 0.11260383, -0.26918694, 0.0419928, -0.3365078, 0.20189743, -0.04136312, 0.039564647, 0.033199426, 0.18768296, -0.017119858), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.28663483, -0.41716507, 0.059281543, 0.043736435, 0.0028875466, 0.13817391, -0.12543318, -0.2794053, -0.023528943, 0.10610115, 0.09100278, 0.040132936, -0.21949205, -0.027810011, -0.0301218, 0.084047124), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.39674807, -0.0040878756, -0.038235947, 0.11880838, 0.009898328, 0.19107847, -0.009313831, -0.1554276, -0.047341663, 0.18049581, -0.029317195, 0.0708909, 0.0708316, -0.110617444, 0.14584038, -0.022261223), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.20400241, 0.0896492, -0.010386381, -0.052133385, 0.005023956, -0.06628705, -0.16436209, -0.25345984, -0.05285192, 0.09706557, -0.03778914, -0.152546, 0.17023252, 0.063713826, 0.00743037, 0.056634087), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.080793336, 0.4204207, 0.19098237, 0.20028038, -0.054076545, 0.22064368, -0.25853387, -0.3643562, 0.2085573, -0.023731, -0.06727709, -0.18683033, -0.18032159, -0.06388348, 0.304463, -0.2517781), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.11940941, 0.10624008, 0.16120581, 0.2369602, 0.3321827, 0.4272075, -0.10403669, -0.31388018, -0.006372124, -0.00653671, 0.109810196, 0.2277172, 0.005771998, 0.086026914, -0.08934813, -0.094941735), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.13233568, 0.24112508, -0.0068006413, 0.12466225, 0.11396591, -0.07249253, -0.29090378, -0.12828146, -0.22001141, -0.08532405, -0.11932601, 0.29452974, 0.09572195, 0.017603843, 0.12454017, 0.16321751), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.042107448, -0.00807216, 0.06580674, -0.1289527, 0.13977426, -0.037159685, -0.21001346, -0.08698161, 0.22370502, -0.29170328, 0.2179206, 0.36621302, 0.0825477, -0.016513655, -0.11157249, 0.12861598), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.2246826, -0.13262233, 0.12131653, -0.15522355, 0.38104856, 0.030237729, 0.1286289, -0.19770473, -0.16175011, -0.13688888, 0.23505463, 0.21333031, 0.76352316, -0.17949077, -0.13124311, 0.1613879), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.050607495, 0.0846705, -0.06136092, -0.033436477, 0.41138348, 0.037043408, -0.02676336, -0.37771952, 0.22147503, 0.06490757, -0.04266158, -0.22606373, 0.045775007, -0.054498192, -0.21495876, -0.036050417), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.06242522, 0.2700824, -0.05602621, -0.12361551, 0.14477442, 0.19403581, 0.23505251, -0.072234035, -0.15831544, 0.4640447, -0.104754634, -0.004539681, -0.20246096, 0.23216484, -0.35886365, 0.11360777), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.14777757, 0.18951412, 0.027219458, 0.11216015, 0.02997997, -0.13466355, -0.0010830094, 0.021302953, 0.23441231, -0.14529245, 0.08068729, 0.10044398, 0.3972878, 0.26570204, 0.0046810666, -0.2863261), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.10385485, 0.1053724, 0.16961229, 0.20727012, -0.025148917, -0.011365095, 0.03899919, -0.030950211, 0.079080455, -0.32767853, 0.064670205, -0.035771385, 0.16833797, -0.21567492, 0.30871257, -0.19965471), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.23420888, -0.004894698, -0.18162623, -0.31107524, 0.11976508, 0.14924951, -0.08723316, 0.21401922, -0.58200324, -0.01177345, -0.049033508, 0.19593577, -0.21139073, 0.13016601, 0.08734843, 0.4158892), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.0009789813, 0.33274913, 0.017405733, -0.042906318, -0.26410276, -0.09291333, 0.019387102, 0.105381854, -0.009176527, 0.09483514, -0.28462934, -0.03644404, 0.285194, -0.4260311, 0.14902237, -0.115670316), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.09344311, 0.4463103, 0.19984834, -0.09733857, -0.118717775, -0.0708026, 0.24919955, -0.11234634, 0.1246395, -0.052909933, 0.1525815, 0.07724016, 0.0070534665, -0.06404165, -0.18149726, -0.014058336), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.17353044, 0.15376104, 0.004588994, -0.13554202, -0.19920237, -0.18918681, 0.11327512, -0.117296435, -0.0785251, 0.013677155, -0.2103214, 0.06843426, -0.27790928, 0.09837545, -0.00019213746, 0.09132539), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.01586651, 0.014929441, 0.2426186, -0.1889374, -0.0865462, -0.07454513, -0.20797268, -0.22366855, 0.19704159, 0.0048206006, -0.16707218, -0.14162683, 0.036798395, -0.1663155, -0.12009389, 0.09603803), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.041532192, 0.05753804, 0.17927068, -0.042112097, 0.12080969, -0.15052572, -0.34855765, -0.07356988, -0.28199884, -0.18958664, 0.15879883, 0.08511588, 0.0034213227, -0.05338495, -0.37285298, 0.06626709), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.20219134, 0.22150375, -0.29405454, 0.06597703, -0.018885285, -0.010551704, -0.010774283, 0.08758955, -0.2015349, -0.17006227, -0.24321876, -0.06864207, -0.118437864, -0.043977212, -0.029736811, 0.14040919), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.18709077, -0.09723938, 0.12783436, -0.15167634, 0.29039705, -0.11009911, 0.018371418, -0.060096707, -0.07256923, -0.25799567, -0.06276934, -0.035992302, -0.06729111, -0.059956793, -0.024079734, 0.011838878), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.010449175, -0.08212451, 0.1409803, 0.11861122, -0.18035835, 0.051930565, 0.01049551, -0.09447962, 0.12029649, 0.040604513, -0.059971705, -0.0044667358, -0.22080486, -0.11187681, 0.124374695, -0.004155485), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.28584236, -0.38480133, -0.13987814, -0.4463469, -0.3890419, -0.022498172, 0.17334452, 0.21895568, -0.15450422, -0.10905497, 0.15111905, -0.22554915, 0.106121585, -0.029144369, 0.36059046, 0.22140682), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.23780307, -0.023033705, 0.068205886, -0.110635854, -0.26720005, -0.1608183, 0.19523881, 0.07972837, -0.018495852, -0.2793956, 0.17668398, -0.12020479, -0.079556085, -0.02284952, 0.031480275, 0.31818348), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.22501226, -0.00829407, 0.059581667, 0.16512989, 0.18711442, 0.1200968, 0.11812652, -0.16091056, 0.15733972, 0.045156084, 0.20640492, -0.16852027, -0.11217177, 0.06746273, -0.050218176, 0.08643783), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.20715691, -0.1082907, 0.027892975, 0.19515261, -0.17838904, 0.1532257, -0.108409844, -0.06632365, -0.13805026, 0.23020233, 0.12416581, -0.14861803, 0.16650471, 0.08158386, -0.09051303, -0.06981649), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.04617126, 0.06579221, 0.25964734, 0.28500968, 0.07641255, -0.090885855, -0.0972522, 0.18298368, -0.06393334, 0.103463, -0.23062052, -0.15270731, 0.13633437, 0.074707486, 0.15065335, -0.024602572), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.118319295, 0.010410938, 0.044655934, -0.104725905, 0.030477569, 0.12867387, 0.039075315, 0.18922117, 0.13301082, -0.1601557, 0.038168408, -0.07372259, -0.09522213, -0.095107146, -0.16679631, 0.044673234), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.46229, -0.30780822, -0.09081465, 0.1433387, -0.0315039, 0.059409115, -0.24948491, -0.17146957, 0.060843736, -0.041989822, 0.054005735, 0.22835566, 0.12036598, -0.0070898845, 0.17276852, -0.17754094), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.35119572, 0.020034311, 0.08751943, 0.08193488, 0.041884877, 0.22649358, -0.07447533, 0.20845473, -0.04859846, -0.16206735, 0.06819576, -0.053000778, 0.18146423, 0.04694148, 0.045293212, 0.06783575), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.280914, -0.14998704, -0.23485807, -0.015608296, 0.1549556, -0.11992663, -0.094974115, 0.05887284, 0.053392075, 0.10322464, -0.075066686, 0.068358354, -0.18663338, 0.009901499, -0.123370335, -0.12502703), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.7748568, -0.17870626, -0.20770052, 0.024692526, -0.056430295, -0.06324113, -0.03660047, 0.29629672, -0.51896983, -0.027231261, 0.05903762, 0.077677645, -0.061675485, -0.20277846, 0.10352223, -0.08198446), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.06347568, 0.21643166, -0.09718546, 0.0372257, -0.029537952, -0.0357135, -0.09548363, 0.18225233, -0.29609334, -0.3496132, 0.18245913, -0.10162589, -0.18189451, -0.09077887, 0.117313184, -0.06863874), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.047373574, -0.020289376, -0.25748715, -0.13568166, 0.15656634, -0.06841899, 0.012100781, -0.13611819, 0.0016357322, -0.23870537, 0.14035743, -0.14700134, 0.2535575, -0.13697346, -0.13693139, -0.10365287), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.4283934, -0.316192, -0.012617617, 0.018468965, 0.21436644, 0.18408814, -0.42651537, 0.12504087, -0.13894933, 0.091662176, -0.20096369, -0.080727175, -0.005487846, 0.17046383, 0.1383948, -0.0054956395), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.20014295, -0.027282396, -0.06317007, 0.04452042, 0.064600386, 0.072222926, -0.33409226, 0.08063831, -0.022607977, 0.1308856, -0.39691743, -0.094889864, -0.1810531, 0.011367248, -0.2531222, -0.22468317), target2);\n\n\tMF3 result = tex5.SampleLevel(sam, pos, 0).rgb;\n\tresult = MulAdd(e1, MF4x3(0.037410006, 0.048742272, 0.04348088, 0.037719514, 0.030768529, 0.03127472, 0.056426726, 0.03066893, 0.016440205, -0.010599352, 0.022832409, 0.023211194), result);\n\tresult = MulAdd(e2, MF4x3(-0.005733291, 0.06365659, 0.06663611, -0.041917093, -0.016493445, -0.020438088, -0.0014357592, -0.0022506563, -0.0045095007, 0.029893145, -0.009129354, -0.015173116), result);\n\tresult = MulAdd(ne1, MF4x3(0.013052085, 0.005108175, 0.0025906067, -0.021950055, -0.036447693, -0.036141638, -0.036296472, 0.0068928464, 0.013102313, 0.0060471976, -0.024798103, -0.023548538), result);\n\tresult = MulAdd(ne2, MF4x3(0.0067743887, -0.06191211, -0.062355213, 0.0016080744, -0.020445071, -0.016840393, 0.028264903, 0.01852915, 0.015891539, -0.023877412, -0.013271666, -0.008158679), result);\n\tresult = MulAdd(max(target1, 0), MF4x3(-0.04317466, -0.018953001, -0.020452993, -0.009322576, -0.03022352, -0.030970376, 0.05653658, 0.05430553, 0.046692245, 0.05615359, 0.059338935, 0.056018773), result);\n\tresult = MulAdd(max(target2, 0), MF4x3(0.022878079, 0.03392234, 0.033057988, -0.017554542, -0.0141542535, -0.014122613, -0.048634093, -0.05316463, -0.047988772, -0.058002178, -0.040221967, -0.034025013), result);\n\tresult = MulAdd(max(-target1, 0), MF4x3(-0.018253656, -0.04197674, -0.040467236, -0.04358929, -0.028309818, -0.025425073, -0.008488672, -0.001727991, 0.00035808363, -0.0011709273, 0.0052514165, 0.0059479307), result);\n\tresult = MulAdd(max(-target2, 0), MF4x3(-0.08333935, -0.09818201, -0.09476284, -0.033692095, -0.046259012, -0.045797516, -0.007577072, 0.0022402718, 0.0016200038, 0.0029786075, -0.020728534, -0.018938033), result);\n\tresult += MF3(0.047567394, -0.02504617, -0.028163986);\n\n\tresult += INPUT.SampleLevel(sam, pos, 0).rgb;\n\tOUTPUT[gxy] = MF4(result, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Thin_HQ.hlsl",
    "content": "// Anime4K_Thin_HQ\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Experimental-Effects/Anime4K_Thin_HQ.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!LABEL Strength\n//!DEFAULT 0.6\n//!MIN 0.1\n//!MAX 10\n//!STEP 0.1\n\n// Strength of warping for each iteration\nfloat strength;\n\n//!PARAMETER\n//!LABEL Iterations\n//!DEFAULT 1\n//!MIN 1\n//!MAX 10\n//!STEP 1\n\n// Number of iterations for the forwards solver, decreasing strength and increasing iterations improves quality at the cost of speed.\nint iterations;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16_FLOAT\nTexture2D tex2;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n//!COMMON\n\n#ifdef MP_INLINE_PARAMS\n#pragma warning(disable: 3557) // X3557: loop only executes for 1 iteration(s), forcing loop to unroll\n#endif\n\n//!PASS 1\n//!DESC Sobel\n//!IN INPUT\n//!OUT tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nfloat GetLuma(float3 rgb) {\n\treturn dot(float3(0.299, 0.587, 0.114), rgb);\n}\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tfloat src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst float4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst float4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst float4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = GetLuma(float3(sr.w, sg.w, sb.w));\n\t\t\tsrc[i][j + 1] = GetLuma(float3(sr.x, sg.x, sb.x));\n\t\t\tsrc[i + 1][j] = GetLuma(float3(sr.z, sg.z, sb.z));\n\t\t\tsrc[i + 1][j + 1] = GetLuma(float3(sr.y, sg.y, sb.y));\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tfloat xgrad = (-src[i - 1][j - 1] + src[i + 1][j - 1] - src[i - 1][j] + src[i + 1][j] - src[i - 1][j] + src[i + 1][j] - src[i - 1][j + 1] + src[i + 1][j + 1]) / 8.0f;\n\t\t\tfloat ygrad = (-src[i - 1][j - 1] - src[i][j - 1] - src[i][j - 1] - src[i + 1][j - 1] + src[i - 1][j + 1] + src[i][j + 1] + src[i][j + 1] + src[i + 1][j + 1]) / 8.0f;\n\n\t\t\t// Computes the luminance's gradient\n\t\t\tfloat norm = sqrt(xgrad * xgrad + ygrad * ygrad);\n\t\t\ttex2[destPos] = float2(pow(norm, 0.7), 0);\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Gaussian-X\n//!IN tex2\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nfloat gaussian(float x, float s, float m) {\n\tfloat scaled = (x - m) / s;\n\treturn exp(-0.5 * scaled * scaled);\n}\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tconst uint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tconst uint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tconst float2 inputPt = GetInputPt();\n\n\t// Spatial window size, must be a positive real number.\n\tconst float SPATIAL_SIGMA = 2.0f * GetInputSize().y / 1080.0f;\n\t// Kernel size, must be an positive odd integer.\n\tconst int KERNELSIZE = max(int(ceil(SPATIAL_SIGMA * 2.0)), 1) * 2 + 1;\n\t//Half of the kernel size without remainder. Must be equal to trunc(KERNELSIZE/2).\n\tconst int KERNELHALFSIZE = KERNELSIZE >> 1;\n\n\t[unroll]\n\tfor (uint i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j <= 1; ++j) {\n\t\t\tconst uint2 destPos = gxy + uint2(i, j);\n\n\t\t\tif (i != 0 || j != 0) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst float2 pos = (destPos + 0.5f) * inputPt;\n\n\t\t\tfloat g = 0.0;\n\t\t\tfloat gn = 0.0;\n\n\t\t\tfor (int k = 0; k < KERNELSIZE; ++k) {\n\t\t\t\tint di = k - KERNELHALFSIZE;\n\t\t\t\tfloat gf = gaussian(di, SPATIAL_SIGMA, 0.0);\n\t\t\t\tg = g + tex2.SampleLevel(sam, pos + float2(di * inputPt.x, 0.0), 0).x * gf;\n\t\t\t\tgn = gn + gf;\n\t\t\t}\n\n\t\t\ttex1[destPos] = float2(g / gn, 0);\n\t\t}\n\t}\n}\n\n\n//!PASS 3\n//!DESC Gaussian-Y\n//!IN tex1\n//!OUT tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nfloat gaussian(float x, float s, float m) {\n\tfloat scaled = (x - m) / s;\n\treturn exp(-0.5 * scaled * scaled);\n}\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tconst uint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tconst uint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tconst float2 inputPt = GetInputPt();\n\n\t// Spatial window size, must be a positive real number.\n\tconst float SPATIAL_SIGMA = 2.0f * GetInputSize().y / 1080.0f;\n\t// Kernel size, must be an positive odd integer.\n\tconst int KERNELSIZE = max(int(ceil(SPATIAL_SIGMA * 2.0)), 1) * 2 + 1;\n\t//Half of the kernel size without remainder. Must be equal to trunc(KERNELSIZE/2).\n\tconst int KERNELHALFSIZE = KERNELSIZE >> 1;\n\n\t[unroll]\n\tfor (uint i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j <= 1; ++j) {\n\t\t\tconst uint2 destPos = gxy + uint2(i, j);\n\n\t\t\tif (i != 0 || j != 0) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst float2 pos = (destPos + 0.5f) * inputPt;\n\n\t\t\tfloat g = 0.0;\n\t\t\tfloat gn = 0.0;\n\n\t\t\tfor (int k = 0; k < KERNELSIZE; ++k) {\n\t\t\t\tint di = k - KERNELHALFSIZE;\n\t\t\t\tfloat gf = gaussian(di, SPATIAL_SIGMA, 0.0);\n\n\t\t\t\tg = g + tex1.SampleLevel(sam, pos + float2(0, di * inputPt.y), 0).x * gf;\n\t\t\t\tgn = gn + gf;\n\t\t\t}\n\n\t\t\ttex2[destPos] = float2(g / gn, 0);\n\t\t}\n\t}\n}\n\n//!PASS 4\n//!DESC Kernel\n//!IN tex2\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tconst uint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tconst uint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tconst float2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tfloat src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst float4 sr = tex2.GatherRed(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = sr.w;\n\t\t\tsrc[i][j + 1] = sr.x;\n\t\t\tsrc[i + 1][j] = sr.z;\n\t\t\tsrc[i + 1][j + 1] = sr.y;\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tfloat xgrad = -src[i - 1][j - 1] + src[i + 1][j - 1] - src[i - 1][j] + src[i + 1][j] - src[i - 1][j] + src[i + 1][j] - src[i - 1][j + 1] + src[i + 1][j + 1];\n\t\t\tfloat ygrad = -src[i - 1][j - 1] - src[i][j - 1] - src[i][j - 1] - src[i + 1][j - 1] + src[i - 1][j + 1] + src[i][j + 1] + src[i][j + 1] + src[i + 1][j + 1];\n\n\t\t\t// Computes the luminance's gradient\n\t\t\ttex1[destPos] = float2(xgrad, ygrad) / 8.0f;\n\t\t}\n\t}\n}\n\n\n//!PASS 5\n//!DESC Warp\n//!IN tex1, INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tconst uint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tconst float2 inputPt = GetInputPt();\n\tconst float relstr = GetInputSize().y / 1080.0f * strength;\n\n\t[unroll]\n\tfor (uint i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j <= 1; ++j) {\n\t\t\tconst uint2 destPos = gxy + uint2(i, j);\n\n\t\t\tfloat2 pos = (destPos + 0.5f) * inputPt;\n\n\t\t\tfor (int i = 0; i < iterations; ++i) {\n\t\t\t\tfloat2 dn = tex1.SampleLevel(sam1, pos, 0).xy;\n\t\t\t\tfloat2 dd = (dn / (length(dn) + 0.01f)) * inputPt * relstr; //Quasi-normalization for large vectors, avoids divide by zero\n\t\t\t\tpos -= dd;\n\t\t\t}\n\n\t\t\tOUTPUT[destPos] = INPUT.SampleLevel(sam1, pos, 0);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Upscale_Denoise_L.hlsl",
    "content": "// Anime4K_Upscale_Denoise_CNN_x2_L\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Upscale%2BDenoise/Anime4K_Upscale_Denoise_CNN_x2_L.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Upscale_Denoise_1\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1, tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = { -0.012922576, -0.11982956, 0.021963459, 0.019259451 };\n\t\t\ttarget1 = MulAdd(src[i - 1][j - 1], MF3x4(-0.050913796, -0.05115213, -0.0205767, -0.26266688, -0.12883802, 0.107968464, 0.03389763, -0.70179373, 0.0030511466, 0.07718592, -0.06562523, -0.060305536), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j], MF3x4(0.009235469, -0.018979615, 0.10033019, -0.20307243, 0.040932532, -0.10095427, 0.038843542, -0.28774044, -0.07829864, -0.04317961, 0.032555006, -0.05584433), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j + 1], MF3x4(0.23774138, 0.04701499, -0.16824278, 0.025335955, 0.30246395, -0.037289508, 0.070405066, 0.03094164, -0.0075012813, 0.06881163, -0.03157643, -0.032394916), target1);\n\t\t\ttarget1 = MulAdd(src[i][j - 1], MF3x4(-0.12524955, 0.18535072, -0.05323482, 0.004486272, 0.15295836, 0.3050709, 0.081431866, 0.09352846, -0.059866652, -0.029570978, 0.019920588, 0.121749535), target1);\n\t\t\ttarget1 = MulAdd(src[i][j], MF3x4(-0.2111615, -0.1268416, 0.45642895, 0.47401953, -0.7580866, 0.5514855, 0.96250856, 0.7827129, 0.0003978912, 0.17167407, -0.04423575, -0.04569368), target1);\n\t\t\ttarget1 = MulAdd(src[i][j + 1], MF3x4(0.17050457, -0.18697786, -0.11608587, -0.038065948, 0.26542, -0.7021022, -0.33751717, 0.053689335, 0.10030526, -0.19492362, 0.069387496, 0.07228368), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j - 1], MF3x4(0.15900351, -0.017636139, 0.01917807, 0.05584281, 0.28530255, 0.04795445, -0.104170926, 0.1192509, 0.09859251, 0.057123564, 0.025724344, -0.07723904), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j], MF3x4(-0.06581913, 0.07548721, -0.054552317, -0.08317343, 0.32851526, -0.2362575, -0.39470714, -0.073999345, 0.07246812, -0.04103072, 0.06058696, 0.09532553), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j + 1], MF3x4(-0.12524493, 0.095179625, -0.0918538, 0.016793616, -0.48433152, 0.03702525, -0.100864686, -0.0018861603, -0.14784335, -0.048320837, -0.057494648, -0.024096634), target1);\n\n\t\t\tMF4 target2 = { -0.0018859988, 0.004285429, 0.5060845, -0.030093472 };\n\t\t\ttarget2 = MulAdd(src[i - 1][j - 1], MF3x4(0.04816902, 0.030087546, 0.019183155, -0.08234757, 0.09378316, -0.047217257, -0.04757087, -0.16541782, -0.043394983, 0.05779227, 0.018105166, 0.03222583), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j], MF3x4(0.13639967, -0.001877575, 0.049495522, 0.060094353, 0.015303669, 0.059043188, 0.090356335, -0.12654372, 0.06469071, -0.054733396, -0.013548386, -0.093697555), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j + 1], MF3x4(-0.13214277, 0.00062924915, -0.640379, -0.052121993, -0.022532608, 0.01077454, -0.057074178, -0.103670195, -0.0017062012, 0.0035225085, -0.044859786, -0.020764757), target2);\n\t\t\ttarget2 = MulAdd(src[i][j - 1], MF3x4(0.2553945, -0.08126201, 0.055215932, 0.10690791, 0.6771195, 0.09377514, -0.09488318, -0.43969935, 0.35444704, -0.10392259, 0.07595239, 0.021814484), target2);\n\t\t\ttarget2 = MulAdd(src[i][j], MF3x4(-0.37628967, 0.026895085, 0.035044484, -0.16414654, -0.5694931, -0.20123884, 0.14891861, 1.1822934, -0.25648627, 0.14110301, -0.057699542, 0.17731132), target2);\n\t\t\ttarget2 = MulAdd(src[i][j + 1], MF3x4(0.023089241, 0.14888923, -0.2730167, 0.1330048, -0.039043408, 0.75768983, 0.07385114, 0.0138615575, -0.06565686, 0.10451973, 0.037489507, 0.021156311), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j - 1], MF3x4(0.03965048, 0.040422294, -0.0662493, -0.043219455, 0.00834316, -0.08315282, 0.13010995, -0.11822414, -0.06811034, 0.029744523, -0.098641835, -0.063671604), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j], MF3x4(-0.077282995, -0.29400682, 0.116103284, 0.096747644, -0.47398612, -0.77101594, -0.20683232, 0.111703634, -0.08370965, -0.24218678, 0.13780457, -0.017660126), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j + 1], MF3x4(0.08542605, 0.13080615, 0.081582755, -0.00024888176, 0.31160986, 0.17787197, -0.019935975, -0.09658498, 0.096656196, 0.064402744, -0.033331197, 0.027531069), target2);\n\n\t\t\ttex1[destPos] = target1;\n\t\t\ttex2[destPos] = target2;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x16\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.03144068, -0.027781913, 0.04483475, 0.037489943 };\n\ttarget1 = MulAdd(a1, MF4x4(0.34559122, 0.052896723, -0.27492252, -0.1604473, 0.4791457, 0.17956258, 0.0076199574, -0.16324736, -0.075430416, 0.019434236, -0.275363, -0.16502565, 0.05507322, -0.046572465, 0.08130956, 0.009380191), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.1754505, 0.10862336, -0.14956018, 0.20161937, 0.16598102, -0.0033441933, 0.19303258, 0.3278992, -0.31819978, 0.14614153, 0.08434212, 0.21208692, -0.0014794758, -0.06754758, -0.06314527, 0.023496931), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.13594365, -0.06382366, -0.40069854, -0.087743916, 0.022426397, -0.073364444, -0.19371308, 0.09916138, -0.044016927, 0.0018689828, -0.07705671, 0.15398589, -0.069929935, -0.01874144, 0.050793763, 0.06565281), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.56292456, 0.25537506, -0.16147509, 0.029484648, 0.11898947, 0.19103922, -0.2387553, 0.13659279, -0.044804625, -0.10285909, 0.12958583, 0.21526133, 0.02727471, 0.21990417, 0.0009558564, 0.12372512), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.10264466, -0.13103753, -0.069214605, 0.43234769, 0.25947884, -0.18333039, -0.15585582, -0.2406589, 0.33275372, -0.19497354, -0.09758474, -0.4531396, 0.41932744, -0.043746196, 0.08315102, -0.085604236), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.15380725, -0.06311845, -0.28896615, -0.059237756, -0.078456834, -0.11623796, 0.017248835, 0.098803006, -0.13643564, -0.0029720776, 0.425954, 0.36920592, -0.06980546, 0.05205535, -0.15787347, -0.094921984), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.009595518, -0.12598279, -0.04322495, -0.08838463, 0.11729769, -0.062454883, 0.19743776, -0.08590505, -0.022744715, 0.00457582, -0.06070008, 0.045312855, -0.010845991, -0.02241941, 0.07252932, 0.05525124), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.119069465, 0.08782395, 0.17878884, 0.0068233046, -0.36698806, -0.46077076, 0.37470114, 0.006550318, 0.08622002, -0.10081386, 0.1754186, 0.078841425, 0.060330488, 0.39436886, 0.1688179, -0.10113108), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.17160045, -0.18541232, -0.093926296, 0.0053854887, -0.07649591, -0.3053692, 0.15255369, 0.06183564, 0.105131835, 0.076607525, -0.17482935, -0.104579754, -0.4795174, 0.30223432, 0.4728322, 0.106419675), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.068794325, -0.019651407, 0.048906703, 0.10097784, 0.014003637, 0.08358555, -0.34008583, 0.1677446, 0.12863056, 0.010167976, 0.10771957, -0.14823496, -0.11855097, 0.024728613, -0.06394353, 0.07123295), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.1652107, -0.056815207, 0.26562792, -0.02586732, 0.13812682, 0.3791579, -0.40067768, 0.19901459, -0.055583958, 0.06673556, -0.16258197, 0.0014027074, 0.13844898, 0.17588624, 0.0061608437, 0.014889389), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.023591522, -0.06255483, -0.04512753, -0.07939918, 0.17603582, -0.06219873, -0.10907254, 0.012348696, -0.053350568, 0.023741387, 0.05215983, 0.117241465, 0.28173143, 0.11200327, -0.11672438, -0.13278063), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.15015969, -0.1145909, 0.08583166, 0.0386507, -0.17788467, 0.29311427, 0.03577728, -0.006737705, -0.020426478, 0.065881886, -0.10966947, -0.016716056, -0.0027577002, -0.20769168, 0.4357363, -0.13179652), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.44572783, 0.08870803, 0.42933974, -0.16602941, 0.23271243, 0.29478154, -0.53973556, -0.042550746, -0.13157314, -0.0413034, 0.12679552, 0.11579286, -0.5161936, -0.24292113, -0.10862491, 0.13528119), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.043000877, 0.08458555, 0.11260604, -0.5589381, -0.16010836, -0.019429926, 0.04731505, -0.12212733, 0.05655828, 0.0107375225, -0.10067243, -0.06904067, 0.07476142, -0.043922618, -0.13811466, 0.008697587), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.3281664, -0.104251154, 0.07188181, 0.06720938, 0.028879764, 0.07302547, 0.18261562, -0.08896491, 0.11240943, -0.1919612, -0.13059135, -0.07057044, 0.053953633, 0.17297988, -0.20344415, 0.050276734), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.41925356, 0.020309223, 0.2246313, -0.3418901, -0.20863962, 0.18653068, -0.04616101, 0.1236236, -0.062179156, 0.1437903, 0.1314142, 0.0699381, 0.029918872, 0.23033592, 0.09302733, -0.20570321), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.07847491, -0.18251555, 0.0678772, -0.29089385, -0.03632992, -0.17132603, -0.04896196, 0.09839614, -0.10377483, -0.11817732, 0.03477946, 0.050376516, 0.17791937, -0.34359503, 0.030756304, 0.025246387), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.12972409, 0.032459006, -0.20415276, 0.31407776, -0.1743501, -0.26177478, -0.07577315, -0.104599, -0.025548192, -0.23483936, 0.40139225, 0.12898883, 0.06533049, -0.09545806, -0.032093894, 0.0032956926), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.22749326, -0.20613275, -0.23030083, -0.29994026, -0.18482473, -0.038720988, -0.13339107, -0.1394514, 0.36952803, -0.2709558, -0.14104684, -0.17859542, 0.09873891, 0.04330318, 0.15205383, 0.115995236), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.07534328, -0.13592403, 0.2224819, -0.06818886, -0.11952144, 0.004714797, 0.18252324, -0.08729513, 0.17198865, -0.00082568696, 0.33769485, -0.0920225, 0.173712, -0.038548574, -0.016980015, -0.13799237), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.43659294, -0.19679698, -0.31969583, 0.24002865, -0.1064947, -0.08218358, -0.07990568, -0.028915526, -0.077836946, -0.012841249, -0.11685068, -0.2102985, 0.025435956, -0.21367492, 0.11001358, -0.09812692), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.28203383, 0.09570471, -0.14503846, -0.19898729, 0.18757457, 0.16626704, -0.009997161, 0.06738176, -0.18296066, 0.11583831, -0.0025225005, 0.373547, -0.24103725, 0.3553009, 0.11984093, 0.25370696), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.022194814, 0.02950222, -0.121312395, 0.0040648654, 0.06509207, 0.00084966415, 0.032229617, 0.0139804585, -0.23108627, -0.004511493, -0.28217104, 0.0828633, 0.17399071, 0.2137328, 0.4731738, -0.37666738), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.045961298, 0.0056297607, -0.08513672, 0.093939304, 0.07252928, -0.11458939, 0.11005008, -0.1132733, 0.10369599, 0.1636998, -0.11919379, -0.08949099, 0.080640145, 0.029493907, 0.24982096, -0.10234766), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.08474163, -0.24252129, -0.3065911, 0.11077523, 0.13397239, 0.14875948, -0.18212163, 0.006510455, -0.008477232, -0.3242149, 0.31507346, -0.19521071, -0.3610268, 0.25882444, -0.067812346, 0.20968717), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.05730163, 0.053821165, -0.10948745, 0.04090055, 0.0161064, 0.19475192, 0.09248433, -0.027268974, -0.031323943, -0.084304914, 0.28378648, 0.44910806, -0.052243132, 0.2999386, -0.26639074, -0.2529396), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.026707547, -0.006487042, -0.044127557, -0.016287267, 0.1417188, 0.24645403, -0.32444936, 0.20339565, 0.027596464, 0.03799474, -0.029943593, 0.058569513, -0.15013286, 0.25070968, 0.08954207, -0.14304538), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.22184753, -0.0732679, 0.042815078, 0.03770516, 0.22240163, -0.043244008, -0.14883384, -0.10682856, 0.16421252, 0.20890577, 0.000585579, -0.061031006, -0.551696, -0.17770186, 0.13795924, 0.101121314), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.047539327, 0.11826275, 0.458172, -0.023809819, -0.0154842585, -0.015466883, 0.03837829, -0.34703115, -0.03437818, 0.12705797, -0.042713646, -0.2518409, -0.27947584, -0.020104226, -0.022687877, 0.14169087), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.06269709, 0.06449363, -0.02793847, 0.04407663, -0.054694284, 0.69776016, -0.32850045, 0.19365972, -0.19002354, -0.038244195, -0.20433429, -0.34071165, 0.123992935, -0.22218247, -0.30181807, -0.03031556), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.06685185, -0.18313402, -0.03785641, 0.008412995, -0.017108139, 0.48937285, -0.035302214, 0.011338532, -0.08890957, 0.32343447, 0.088812076, -0.027280344, 0.40437454, -0.45940742, 0.118888274, 0.41054434), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.36049488, 0.100708134, 0.331516, 0.1078647, 0.12895954, 0.13425021, -0.18602797, -0.11423174, -0.10916294, 0.061013293, 0.08984191, 0.1835112, -0.10568929, -0.046648484, 0.2127872, 0.54582083), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.19040897, 0.08670264, 0.12393752, -0.003475547, -0.37210098, 0.035628326, -0.29302806, 0.10709011, -0.20405664, -0.9748058, 0.39254782, 0.44914797, 0.032028764, 0.04227575, -0.25056216, 0.063437305), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.07952942, -0.13263832, 0.037877183, 0.20845042, -0.026445981, -0.010450352, -0.043147005, -0.12033961, 0.20600243, -0.046332583, -0.47056386, 0.09566825, 0.18658772, -0.3381639, -0.042662457, 0.15197653), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.4996296, 0.019971728, 0.10017604, 0.052051116, 0.12145858, 0.106811635, -0.056665674, -0.11708303, 0.16642408, 0.22654046, -0.04731226, -0.039967895, -0.1434505, 0.3171998, -0.19033776, -0.29952875), target1);\n\t\n\tMF4 target2 = { 0.049680557, 0.01432493, 0.04349397, 0.040003702 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.031192884, -0.015032417, 0.25046152, 0.143142, 0.09429096, 0.2090414, -0.16252424, 0.42788, -0.005667558, 0.14787567, 0.23810932, -0.13502707, 0.0006289761, -0.014052179, -0.091041535, 0.059258565), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.09637771, 0.17332087, 0.123664804, 0.046110056, 0.25775972, 0.31647265, -0.1464598, 0.41624358, 0.032242253, -0.017219262, -0.35814875, 0.3348811, 0.05738627, 0.046910666, 0.014263179, -0.15797907), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.06782952, 0.049666278, 0.083296575, 0.19301543, -0.05964988, 0.18332662, 0.30906975, 0.03342819, 0.12226727, 0.1226969, -0.15035193, -0.003493911, -0.007647415, -0.051491078, -0.019189527, -0.009602449), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.08838342, -0.055376932, 0.13949814, -0.12728734, -0.17266448, 0.35102528, 0.018773714, 0.050504927, -0.10556112, -0.014422574, -0.25474203, 0.31192264, -0.09063805, 0.010115312, -0.08702192, 0.08573518), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.16521221, -0.01265248, -0.5292306, -0.17494588, -0.18994644, -0.41904125, -0.26261392, -0.42338082, 0.39478812, 0.20768805, 0.16483486, -0.22635488, 0.13576357, 0.17095351, 0.064293, 0.06416031), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.09107591, 0.1757355, 0.19841582, -0.25249094, 0.18083812, -0.12258315, 0.4074544, -0.17171176, -0.15881093, -0.22978021, -0.05622591, -0.09703007, -0.12538208, -0.06956953, -0.14475612, -0.066342294), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.029294115, -0.036292624, 0.19467807, -0.10223533, 0.086430565, -0.052809026, -0.23749635, 0.10364248, -0.22938702, 0.07210543, 0.03876035, -0.21014924, -0.11247329, -0.17755648, -0.05139757, -0.037780646), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.12605286, 0.16123274, -0.13924524, -0.109194726, 0.033486, -0.24847955, 0.1264379, 0.28880134, -0.17594175, -0.1888256, -0.04508948, 0.047563452, -0.5476752, -0.23573762, -0.17183748, 0.14331517), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.006482806, 0.2289281, -0.03872587, -0.027272481, -0.09913351, -0.09453464, -0.1426349, 0.055076513, -0.025217436, -0.08307176, 0.0797406, 0.10166401, -0.294337, -0.3567936, 0.054015454, 0.068333104), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.012300659, -0.040405195, 0.11190478, -0.07406065, -0.18364848, 0.035823543, -0.01621734, 0.07582391, 0.06704436, -0.0006620425, -0.022342965, 0.16496183, 0.11390146, 0.075079784, 0.13547076, -0.022227254), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.23038611, -0.29141426, 0.0984085, -0.20544642, -0.18859404, 0.3620387, -0.4136066, 0.32138887, -0.0047645094, 0.11271573, 0.15377328, 0.012071895, -0.029830804, 0.14384824, 0.04148142, 0.2286753), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.120368056, -0.0026308578, -0.027536837, -0.13022487, 0.19286355, 0.30597997, -0.121778116, 0.29960433, -0.06231281, -0.013746478, 0.10620681, -0.02362372, -0.10042793, 0.015861828, -0.06073457, 0.11589962), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.1148781, -0.24268909, 0.24827103, -0.17290637, -0.14397098, -0.16708367, 0.2130187, -0.18639165, -0.13702524, 0.107212365, 0.066469796, -0.14059094, 0.19621798, -0.036907773, -0.028576817, 0.19191594), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.061653305, -0.12716687, 0.17514701, 0.003910376, -0.00651784, 0.25642744, -0.17615528, -0.03584991, -0.051342323, -0.20178711, -0.4330863, 0.15785883, -0.14388351, 0.050646614, 0.15746376, -0.17228809), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.32631296, -0.020115409, -0.16132942, 0.29139966, -0.18642388, -0.15140165, 0.2106485, -0.025535548, 0.08296747, 0.037819803, 0.106129125, -0.095521644, 0.312119, -0.09383011, -0.023469942, -0.035990953), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.012878467, -0.1599543, 0.14487906, -0.083350256, 0.074949436, -0.09346481, 0.10122695, 0.08852621, 0.11138647, -0.0072039254, -0.00842464, 0.030785646, -0.04394235, 0.10987614, 0.15378197, -0.05989409), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.41359067, -0.04985946, 0.06845964, 0.12003392, 0.0803128, 0.2420856, -0.18877462, 0.058456603, -0.02516271, 0.010639022, -0.04928307, -0.023084244, 0.06001203, 0.06881964, -0.12117699, -0.2680374), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.09667388, 0.16247103, 0.105098106, 0.12871382, 0.063410334, 0.029997706, 0.048323907, -0.075631075, 0.034694012, -0.029085271, -0.003785678, -0.05397498, -0.1783155, -0.13680255, 0.024786513, -0.0041952017), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.23904142, -0.102619216, -0.21049559, -0.07428196, -0.046321787, -0.09432119, 0.08803711, -0.1660408, 0.31880215, 0.11605265, -0.086603194, 0.119239025, 0.06773056, 0.18591799, 0.0058458247, 0.05242187), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.12521484, -0.23739336, -0.16784379, -0.10277679, -0.18505791, 0.061825443, 0.12762548, -0.16664176, 0.20004764, -0.1400315, 0.35610282, -0.19706382, 0.046386316, -0.155162, -0.0425219, 0.0010560523), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.14500342, -0.0046809237, -0.1278097, 0.041527335, 0.11831141, -0.059155047, -0.17391829, 0.0059517594, -0.18033625, -0.379706, 0.11636179, -0.13310274, 0.047523372, 0.0029333998, -0.1512301, 0.1361489), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.23058943, -0.08937329, 0.07061336, 0.08555644, 0.09255573, -0.15303029, 0.08891002, -0.42177418, 0.0950346, 0.20212616, 0.3866544, 0.07922501, -0.04093803, -0.10997976, -0.07189613, -0.21220057), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.04484278, 0.2386453, 0.27855012, 0.011022442, 0.0409283, 0.1937425, 0.060258046, 0.2633126, -0.54181176, 0.19643608, -0.28907844, 0.04247623, -0.37548354, -0.24831985, -0.52362055, -0.4442409), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.014318134, 0.047169194, -0.07291308, 0.21408482, -0.01503884, 0.027093383, -0.11724912, -0.052458502, 0.1676504, 0.5505249, 0.22394833, -0.17126445, 0.13671164, -0.18371153, -0.456313, 0.14297491), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.00063476624, 0.16339731, -0.031160444, 0.18237135, 0.025692228, -0.04895109, 0.033651803, -0.002480504, 0.34582126, -0.039352335, -0.004698449, 0.12789944, -0.08318657, -0.007492543, -0.12888806, 0.03684109), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.06481498, 0.14330916, 0.17366715, -0.028045174, 0.080571376, 0.18343642, -0.11593154, -0.077227145, 0.1973531, 0.3085006, -0.28876102, 0.06434657, 0.16654246, -0.28144804, 0.3234261, -0.026636604), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.084783904, 0.03651458, 0.020044886, -0.10723048, 0.04165204, 0.04072967, 0.037039082, -0.09042298, 0.19693066, -0.21291414, -0.040890995, -0.15434273, -0.07450638, 0.27289733, 0.06332989, -0.037289053), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.004840926, 0.048929166, 0.015578959, 0.03571025, -0.2184971, 0.094020076, -0.17748803, 0.32877877, -0.035392962, -0.28398407, -0.13072185, -0.21858144, -0.24103665, -0.32654533, -0.063572675, -0.008728733), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.0060240547, 0.029166108, -0.023887299, 0.037508924, 0.04231956, 0.1503379, 0.17414866, -0.25778973, -0.14774446, -0.12541369, -0.32502824, 0.28957245, -0.030400498, 0.05351274, 0.13189505, -0.21329227), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.2198507, -0.49962172, -0.16456802, 0.08402717, -0.094403476, -0.1978019, -0.19233316, 0.055013265, 0.01668743, -0.117106654, -0.0745593, -0.09377295, 0.050370943, 0.07410238, 0.13543247, -0.23753798), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.008572295, 0.11890422, -0.047157902, -0.03717175, -0.35570037, 0.060663674, 0.109250925, -0.16135052, 0.030490266, 0.30335435, 0.38949126, 0.44852075, -0.09788441, 0.43574813, -0.30050707, 0.24572986), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.29497403, -0.30934516, 0.05756695, -0.15919119, -0.121505864, -0.028917443, -0.07419939, 0.13863774, -0.04398897, 0.32990414, 0.38306457, -0.030523712, 0.72267497, 0.33932966, 0.07839862, 0.11931982), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.26952964, -0.31019664, 0.07061176, -0.23266664, 0.14124376, 0.3597343, -0.17694736, 0.22935267, -0.12335108, -0.086614646, -0.10635, 0.22585274, -0.27139255, 0.05963002, 0.2852169, -0.3743854), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.0970178, -0.014084432, -0.0504985, 0.1570353, 0.091999866, 0.23429315, 0.12914294, 0.03267318, 0.5849793, 0.38205758, -0.31792474, -0.07992281, 0.022620765, 0.22215942, -0.23093775, 0.0026896205), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.06753083, -0.20358866, 0.173053, 0.13768815, 0.013206715, 0.06310567, 0.17349118, -0.12714109, 0.0405548, -0.18409975, 0.3441249, -0.24606577, -0.18814458, -0.039655812, -0.15961805, 0.08212082), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.06746224, -0.1595078, 0.15284725, -0.057313897, -0.1229526, 0.11482664, -0.0021675595, -0.00026835455, -0.0653958, -0.0967453, -0.09400396, -0.021233113, 0.23587836, 0.2982212, -0.039116163, 0.012201323), target2);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x16\n//!IN tex3, tex4\n//!OUT tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.0052180276, 0.022526434, 0.022657124, 0.016289035 };\n\ttarget1 = MulAdd(a1 , MF4x4(-0.07314084, 0.08021976, -0.08299374, -0.21340942, -0.0088407695, 0.04742526, -0.038566757, -0.058931205, 0.0009213959, 0.19193986, -0.05906689, -0.0038934543, -0.12937409, 0.100754194, 0.1683601, 0.07552924), target1);\n\ttarget1 = MulAdd(b1 , MF4x4(-0.022257961, 0.08347593, -0.02279838, 0.10150892, -0.02083181, 0.07064587, 0.26308942, -0.13609628, 0.023648601, 0.1475858, 0.12856342, 0.2650287, -0.038316045, -0.35173503, 0.09157486, 0.16609442), target1);\n\ttarget1 = MulAdd(c1 , MF4x4(-0.13746555, 0.15315081, -0.032931942, 0.07487079, 0.09694968, 0.014459765, 0.06814075, -0.059461202, 0.25045857, -0.0071333316, 0.067206055, -0.21697883, 0.023228496, -0.13146883, 0.07486156, -0.030696157), target1);\n\ttarget1 = MulAdd(d1 , MF4x4(-0.0069204876, -0.18402638, 0.085326575, 0.18288516, 0.036785558, -0.019116882, 0.017438713, 0.029095992, 0.10944869, -0.09473364, 0.10444152, -0.028845368, 0.0909169, -0.10593229, 0.14518781, 0.05546837), target1);\n\ttarget1 = MulAdd(e1 , MF4x4(0.53389466, -0.018921841, -0.05050542, 0.21149407, 0.3041209, -0.2594824, -0.18464427, 0.20736529, 0.18971719, -0.05058395, -0.13514072, -0.009045264, 0.20910244, 0.29242986, 0.28958234, 0.2870443), target1);\n\ttarget1 = MulAdd(f1 , MF4x4(0.03259606, 0.2126493, 0.6004735, 0.14007168, -0.1424266, 0.04352873, 0.17071731, 0.10630275, -0.2755667, 0.27345222, -0.06420644, 0.032743722, 0.026045147, -0.23541754, 0.01393772, -0.1476582), target1);\n\ttarget1 = MulAdd(g1 , MF4x4(0.06258474, -0.040185593, -0.092409454, -0.095720276, 0.050550956, -0.026547447, 0.099580996, 0.04878719, 0.15659782, -0.007606541, -0.061156776, 0.11329769, -0.019249229, 0.028775204, -0.24508974, -0.052828208), target1);\n\ttarget1 = MulAdd(h1 , MF4x4(-0.16975857, -0.008542089, 0.30186546, 0.33199415, 0.03747256, 0.15057808, 0.017838268, -0.030345246, 0.019341556, 0.3217693, 0.24844399, 0.06951953, -0.10805396, -0.08874898, -0.068681985, -0.2677526), target1);\n\ttarget1 = MulAdd(i1 , MF4x4(-0.06813968, 0.087481484, -0.11338694, -0.08698839, -0.07585716, 0.079565816, -0.066336565, 0.050449606, 0.11338618, 0.38572344, 0.0024759274, 0.12706435, 0.16759671, 0.0254419, -0.06910047, -0.21917519), target1);\n\ttarget1 = MulAdd(a2 , MF4x4(0.0039553675, -0.17838223, 0.038052835, 0.027201787, 0.06518285, 0.08250212, -0.052679926, -0.021249574, -0.13604519, 0.12234797, -0.16008313, -0.07422232, -0.0930264, -0.07480355, -0.0067053377, 0.13964424), target1);\n\ttarget1 = MulAdd(b2 , MF4x4(-0.05491681, 0.16191071, -0.13063031, -0.2889149, -0.045188528, 0.29249623, -0.061093148, -0.083284624, -0.19250835, -0.103631295, -0.23577131, 0.108691126, 0.028907659, -0.2708106, 0.06986715, 0.22996326), target1);\n\ttarget1 = MulAdd(c2 , MF4x4(-0.07838976, -0.063634194, 0.06297176, -0.09969828, 0.10518915, 0.062185638, 0.033053298, 0.023406805, -0.2801067, -0.13414349, -0.02466297, -0.1110011, 0.040580552, 0.033576507, 0.07127022, -0.068416506), target1);\n\ttarget1 = MulAdd(d2 , MF4x4(-0.05786512, 0.17169164, -0.09276801, -0.1444394, 0.13971466, -0.168134, 0.012722911, 0.06788442, 0.02493809, 0.04105174, 0.09471395, 0.21363391, -0.12093948, 0.067423604, -0.054669242, 0.06764739), target1);\n\ttarget1 = MulAdd(e2 , MF4x4(0.2954526, 0.15885043, -0.05164922, 0.3646313, 0.013329013, 0.044056762, 0.01717495, -0.030439444, 0.32433322, -0.29044852, 0.32627285, 0.150364, 0.14502852, -0.22193567, -0.18879528, 0.018430077), target1);\n\ttarget1 = MulAdd(f2 , MF4x4(-0.2973998, -0.41863972, 0.0048396075, 0.06709588, -0.12029818, -0.05315725, -0.11457002, 0.0071458486, 0.26290894, 0.11030596, 0.082195595, -0.27480638, -0.011602335, 0.019122265, -0.18927693, -0.24246486), target1);\n\ttarget1 = MulAdd(g2 , MF4x4(0.09974451, 0.07223917, -0.09586719, -0.08288307, -0.06436462, -0.027324842, -0.0019976476, 0.19203754, 0.015929956, -0.12534836, -0.0038582094, 0.11275662, -0.031039666, 0.010430081, -0.023713758, -0.21801127), target1);\n\ttarget1 = MulAdd(h2 , MF4x4(0.054167796, 0.0634282, -0.047591783, -0.06402415, -0.0709014, 0.082054086, 0.28418478, 0.06584792, -0.18744822, -0.006312915, -0.0075474046, 0.0829434, -0.032414634, 0.19225785, -0.082302466, -0.3142319), target1);\n\ttarget1 = MulAdd(i2 , MF4x4(-0.0026932533, -0.110426664, 0.021643564, -0.14368293, -0.0048789545, 0.11043582, -0.040021945, 0.058764413, -0.009000321, 0.10833911, 0.05681704, -0.039960742, 0.0014395626, 0.022780152, -0.09172437, -0.085687816), target1);\n\ttarget1 = MulAdd(na1 , MF4x4(0.12509525, -0.18352552, -0.07638094, -0.00756009, 0.05407378, -0.14584734, -0.08163636, -0.13222884, 0.039648265, -0.15960212, 0.074228585, 0.009451507, 0.17933762, -0.17743796, 0.007834195, 0.0037116117), target1);\n\ttarget1 = MulAdd(nb1 , MF4x4(-0.10942205, 0.1585392, 0.040241007, 0.10526164, 0.16979292, 0.29029292, -0.009487742, 0.24926443, -0.1047842, 0.03604099, 0.19281772, 0.03798268, 0.17581491, 0.25031644, 0.055782937, -0.30455682), target1);\n\ttarget1 = MulAdd(nc1 , MF4x4(0.06714908, -0.09112766, -0.022286715, 0.09795178, -0.014092309, 0.26703134, 0.15334776, 0.33441234, 0.13753732, -0.13819148, 0.22796239, 0.16050872, 0.05523446, 0.082806356, -0.053028688, -0.0400533), target1);\n\ttarget1 = MulAdd(nd1 , MF4x4(-0.028462043, 0.18224953, 0.026658487, -0.15048791, 0.106156826, -0.07361365, 0.3529029, 0.06473894, -0.032005392, 0.037034214, 0.039220046, -0.012491292, -0.09503139, 0.0444902, -0.31978187, -0.2923563), target1);\n\ttarget1 = MulAdd(ne1 , MF4x4(-0.3674723, 0.22560489, 0.38837367, 0.17128418, -0.0948159, 0.6298207, 0.59135467, 0.3350841, -0.1859739, 0.31080073, 0.03317792, 0.20958795, -0.097624235, -0.07605166, 0.10135128, -0.08953993), target1);\n\ttarget1 = MulAdd(nf1 , MF4x4(0.320043, 0.002823138, -0.08849585, -0.06356955, 0.19898786, 0.272037, 0.1241285, 0.18131523, -0.05760319, -0.19315276, -0.033923294, 0.09981398, -0.07670874, -0.25949827, 0.062826484, 0.011877337), target1);\n\ttarget1 = MulAdd(ng1 , MF4x4(-0.019341033, -0.03938962, 0.10163529, 0.05033707, -0.03194324, -0.13427012, 0.16106506, -0.05596736, -0.04438277, 0.0045224032, 0.20575951, -0.10359912, 0.03423479, -0.17256664, 0.32534334, -0.09378658), target1);\n\ttarget1 = MulAdd(nh1 , MF4x4(0.19792143, 0.038506437, -0.21047395, -0.27926794, 0.23113485, -0.053830303, 0.4963027, 0.34639266, 0.108149074, -0.10592886, 0.09575202, 0.12385147, 0.08751849, -0.050622147, 0.033647005, 0.2588364), target1);\n\ttarget1 = MulAdd(ni1 , MF4x4(0.04931599, -0.14498134, 0.0073008477, -0.05298649, 0.29398152, 0.16829367, 0.089691155, -0.01749789, 0.20039341, -0.13137043, 0.1884996, -0.03018221, -0.06793498, -0.03220071, 0.06326444, 0.017898731), target1);\n\ttarget1 = MulAdd(na2 , MF4x4(0.011310341, 0.15556115, -0.08003895, -0.07396207, -0.06434896, -0.14684777, -0.019239893, 0.009520887, 0.013242985, -0.12733786, -0.040152796, 0.0064262203, 0.087119006, 0.08165867, 0.12353576, 0.002600503), target1);\n\ttarget1 = MulAdd(nb2 , MF4x4(0.14877501, -0.056240283, -0.11846124, 0.16736585, -0.0018247389, 0.0095979795, -0.07605829, 0.13583913, -0.008851887, 0.16578445, -0.04152669, -0.059164364, -0.021962654, 0.312347, 0.0129089225, -0.097307086), target1);\n\ttarget1 = MulAdd(nc2 , MF4x4(-0.122485265, 0.06891502, -0.1807204, 0.10579281, -0.0061903363, -0.025644284, 0.08879091, -0.09492319, -0.019361734, -0.10903786, -0.08949264, 0.055067465, -0.027095577, -0.06629012, -0.05580654, 0.045552503), target1);\n\ttarget1 = MulAdd(nd2 , MF4x4(-0.025895944, 0.18728323, 0.09764548, 0.49504116, -0.030123139, -0.012580951, 0.090377375, -0.18767111, -0.06874367, 0.11378584, 0.0127285635, -0.101479106, 0.07010412, -0.02272616, -0.03455195, 0.040611476), target1);\n\ttarget1 = MulAdd(ne2 , MF4x4(-0.58637494, -0.13186562, -0.26627728, -0.40135092, 0.19139144, 0.27310577, 0.07761293, 0.10058002, -0.3126869, -0.07982417, 0.04237517, 0.25126198, -0.17133251, 0.122523, -0.0053142905, -0.22283912), target1);\n\ttarget1 = MulAdd(nf2 , MF4x4(-0.0023953887, 0.30968156, -0.1303385, 0.046937056, 0.20530851, 0.07276076, -0.086923674, -0.17881633, 0.08715105, 0.25641996, -0.22557895, -0.0017721896, -0.2347971, -0.07164777, -0.103000194, 0.22468017), target1);\n\ttarget1 = MulAdd(ng2 , MF4x4(-0.12947787, -0.05199853, -0.0899567, 0.087013826, 0.018399805, 0.14997742, -0.20396905, -0.20554177, -0.014265392, 0.048660364, 0.07077151, -0.05911514, 0.003051989, 0.07242704, -0.16232954, 0.19634365), target1);\n\ttarget1 = MulAdd(nh2 , MF4x4(0.13121666, 0.03174777, 0.07853035, -0.04881682, 0.10043158, -0.036237933, -0.2178651, -0.06562213, 0.021113047, 0.0068006255, -0.16305129, -1.9600706e-05, -0.14886445, -0.17729987, -0.17907865, 0.21547341), target1);\n\ttarget1 = MulAdd(ni2 , MF4x4(-0.03263096, -0.064234234, 0.03990361, 0.09057224, -0.05704657, -0.107518636, 0.09328312, 0.014857798, -0.060736485, -0.033695858, -0.07943859, -0.0054049506, -0.072932534, -0.023306495, -0.06615389, 0.029145932), target1);\n\n\tMF4 target2 = { -0.034925383, -0.0010656221, -0.023427188, -0.021127155 };\n\ttarget2 = MulAdd(a1 , MF4x4(0.012031344, 0.0075636036, -0.033211436, 0.018453801, -0.23412584, -0.113123864, 0.068607934, -0.018517016, -0.19748597, -0.2571716, -0.026148321, -0.00019766031, 0.012040108, 0.12122093, 0.0714374, -0.10087335), target2);\n\ttarget2 = MulAdd(b1 , MF4x4(-0.029292978, -0.025254043, -0.034099232, 0.085234866, 0.24252516, 0.076297395, -0.12717746, -0.03457669, 0.033755753, -0.0531509, -0.04005856, -0.20840853, -0.0078028045, 0.12575904, -0.010887013, -0.046326064), target2);\n\ttarget2 = MulAdd(c1 , MF4x4(-0.003266499, -0.017687857, -0.012221699, -0.2251586, 0.00208294, 0.007880196, 0.09037794, 0.08328994, -0.0428717, 0.027112724, 0.08032711, 0.1513152, -0.043068174, 0.07987632, -0.008801098, 0.08133886), target2);\n\ttarget2 = MulAdd(d1 , MF4x4(-0.1827595, 0.18459928, -0.1918044, -0.05324067, -0.1705114, -0.01887987, -0.14486305, -0.17456877, -0.18964832, -0.07162095, -0.13871318, -0.046433818, -0.018604748, -0.11131921, -0.08050445, -0.08619502), target2);\n\ttarget2 = MulAdd(e1 , MF4x4(-0.0717377, -0.12163745, 0.18497953, -0.08643892, 0.0007879318, -0.050351888, 0.17640385, 0.17240365, -0.14958718, -0.056793597, 0.03742872, -0.1015922, 0.3117469, -0.39953762, 0.0152286505, -0.13784732), target2);\n\ttarget2 = MulAdd(f1 , MF4x4(0.07879097, -0.39204946, -0.07003556, -0.24708183, -0.058046583, -0.09865189, -0.048411854, -0.05027539, -0.12736927, -0.23946127, -0.08323304, 0.028160958, -0.059784077, -0.0064917994, 0.038013496, 0.08928725), target2);\n\ttarget2 = MulAdd(g1 , MF4x4(0.07403741, -0.004601062, 0.13563065, 0.054981887, -0.08022936, 0.022921488, -0.053264186, -0.016605966, -0.20883927, -0.19978985, -0.058101434, 0.15126002, 0.020758694, 0.12837122, 0.13368484, 0.1443778), target2);\n\ttarget2 = MulAdd(h1 , MF4x4(-0.08701922, -0.041025855, -0.03362371, -0.19846733, -0.009003309, 0.06708822, 0.06784735, 0.049892817, 0.123487085, -0.008921262, -0.0883188, -0.09103165, 0.070733, 0.1474191, -0.08228257, 0.12713781), target2);\n\ttarget2 = MulAdd(i1 , MF4x4(0.16015989, 0.19007389, -0.12680867, 0.056614764, -0.008470681, 0.099433914, 0.008811413, -0.09471121, -0.09722353, 0.0649324, 0.021527816, -0.21614286, 0.07569941, -0.16433574, -0.0069269636, 0.16142729), target2);\n\ttarget2 = MulAdd(a2 , MF4x4(-0.08708631, -0.017263759, 0.034016605, -0.009168008, -0.16427393, -0.11225274, -0.005249783, 0.13672975, -0.0844234, -0.022700429, 0.109927036, -0.041033685, -0.064794436, 0.015655773, -0.03411672, -0.12218549), target2);\n\ttarget2 = MulAdd(b2 , MF4x4(-0.016761513, -0.027447775, -0.01290059, 0.0007822344, 0.07433617, -0.035145793, -0.03797909, -0.16871531, -0.029095095, -0.2073536, 0.12309633, -0.16626619, -0.04203133, -0.018517911, -0.06946039, -0.11132114), target2);\n\ttarget2 = MulAdd(c2 , MF4x4(0.11052091, -0.030863507, -0.03229482, 0.11673996, -0.0455341, -0.00649463, 0.020642368, 0.04092308, 0.20173405, -0.012926573, -0.0244531, 0.055338163, -0.01835753, 0.024072325, -0.06893433, 0.048774183), target2);\n\ttarget2 = MulAdd(d2 , MF4x4(0.3568486, -0.14506009, -0.13730963, -0.027905643, -0.37042627, -0.016187102, 0.12948507, 0.016912838, -0.089135066, -0.15287507, -0.092210636, 0.043153215, 0.2077129, 0.04429632, -0.107345045, -0.015176141), target2);\n\ttarget2 = MulAdd(e2 , MF4x4(-0.33605802, -0.22235338, 0.1270437, -0.23185425, 0.29133183, -0.005394921, -0.07139614, -0.049961478, 0.017125877, 0.499106, -0.0048643304, -0.14794266, -0.06752325, 0.29848218, 0.11979753, 0.033426132), target2);\n\ttarget2 = MulAdd(f2 , MF4x4(0.11241839, -0.09014392, -0.011629057, 0.17028853, -0.100855775, 0.100789815, -0.05269513, 0.06573697, 0.27869916, -0.057539526, -0.04528007, 0.30135208, -0.02261679, 0.0688468, 0.059139624, 0.13873443), target2);\n\ttarget2 = MulAdd(g2 , MF4x4(0.04780322, -0.008265764, -0.014270074, 0.0834061, 0.055182222, -0.059819162, 0.010733226, -0.040952608, -0.14509161, 0.17645077, 0.05801798, -0.042507146, 0.24863482, 0.1040497, -0.045867782, 0.120007925), target2);\n\ttarget2 = MulAdd(h2 , MF4x4(0.12579694, 0.09167574, 0.21078496, 0.052945495, -0.05036728, -0.11384816, -0.07594621, -0.09991826, 0.010668207, -0.05676672, -0.06273805, -0.06883917, -0.2184931, -0.1647689, -0.056467786, 0.109850615), target2);\n\ttarget2 = MulAdd(i2 , MF4x4(-0.11352159, 0.026516005, 0.042277884, 0.14155892, -0.017015357, -0.03407179, 0.014961351, -0.13766216, 0.20035928, -0.038310144, 0.002857473, -0.04447413, 0.011375937, -0.07345281, 0.01680756, 0.0089689195), target2);\n\ttarget2 = MulAdd(na1 , MF4x4(0.18048844, 0.025165293, -0.013590799, 0.21590467, 0.026852742, -0.06107904, -0.0012434963, 0.047840245, -0.07294931, -0.011157553, 0.11376999, -0.0086454, -0.028179385, -0.11118097, -0.15483098, 0.19983171), target2);\n\ttarget2 = MulAdd(nb1 , MF4x4(-0.15175144, 0.2142459, 0.1478812, -0.14039889, -0.19821295, -0.37290373, 0.19691283, 0.115997985, 0.1284214, 0.19273835, -0.096292645, -0.022643294, 0.15401742, -0.2267051, -0.15150996, 0.099672556), target2);\n\ttarget2 = MulAdd(nc1 , MF4x4(-0.068340585, -0.017279925, 0.04846922, -0.034003776, 0.055793036, -0.25135002, -0.03544407, -0.56164503, -0.19032021, -0.009258663, 0.070812754, -0.08191077, 0.047685042, -0.020684654, -0.07035788, 0.0132855335), target2);\n\ttarget2 = MulAdd(nd1 , MF4x4(0.19441503, -0.15030424, 0.12302495, 0.047762766, -0.095896654, -0.15033515, 0.007605368, 0.0570889, -0.038431447, -0.08560695, -0.0029293734, -0.01375586, 0.047505997, 0.014071177, 0.1479392, 0.25642776), target2);\n\ttarget2 = MulAdd(ne1 , MF4x4(-0.28587586, -0.39141047, -0.3444917, -0.2408476, -0.64026415, -0.35294148, -0.1317, -0.21601357, 0.12164572, -0.48452628, 0.16729403, -0.21575572, 0.41301385, 0.017696327, 0.057344552, -0.27020162), target2);\n\ttarget2 = MulAdd(nf1 , MF4x4(-0.033119988, 0.0012006643, 0.08465847, 0.015564506, -0.124659166, -0.09455984, 0.0035544615, -0.35156307, -0.15252608, 0.016244112, 0.0138391815, -0.04670501, 0.1383293, -0.037926193, 0.025957817, 0.1730784), target2);\n\ttarget2 = MulAdd(ng1 , MF4x4(-0.012701927, -0.025511298, -0.06721094, -0.07040279, 0.06377799, 0.13967788, -0.14234799, -0.058825023, 0.041205924, -0.00032473358, -0.055379577, -0.033738375, 0.13665317, -0.02562686, -0.18523781, -0.06958092), target2);\n\ttarget2 = MulAdd(nh1 , MF4x4(0.17461562, 0.07647785, -0.02202248, 0.21096313, -0.22494456, 0.10868611, -0.33091828, -0.27529812, -0.25206757, 0.1884099, -0.17850949, -0.1006927, 0.045536183, -0.100012675, 0.061030168, -0.025509179), target2);\n\ttarget2 = MulAdd(ni1 , MF4x4(0.0337314, -0.052486207, -0.05584458, 0.0969859, 0.18508333, -0.04521821, -0.08331424, 0.076726556, 0.118076116, 0.019730117, 0.022492286, 0.09869008, -0.115276754, 0.097966135, 0.023186501, -0.060849246), target2);\n\ttarget2 = MulAdd(na2 , MF4x4(-0.09427026, 0.14057149, -0.07478311, 0.029171692, 0.14987083, -0.08649628, -0.01750609, 0.06958318, 0.085471064, -0.058146793, -0.029388946, 0.10720532, -0.030614216, 0.17328379, -0.03433174, -0.022483094), target2);\n\ttarget2 = MulAdd(nb2 , MF4x4(-0.085193954, -0.1348099, 0.07675298, -0.25627816, -0.07467235, -0.18559869, 0.100543626, -0.2201029, -0.015106581, -0.013150452, 0.10482805, -0.04446529, -0.15954255, 0.13659625, -0.10310867, -0.010787774), target2);\n\ttarget2 = MulAdd(nc2 , MF4x4(-0.13365999, 0.02036792, -0.09569852, -0.088586286, 0.18445042, -0.14354594, -0.09319419, 0.084703825, -0.018052364, 0.04344066, -0.0589665, -0.0065992875, 0.030960705, 0.08472253, -0.022175593, -0.020301547), target2);\n\ttarget2 = MulAdd(nd2 , MF4x4(-0.12315616, 0.05191162, 0.3044562, -0.066225395, 0.13523789, 0.24786936, -0.2531183, 0.008910162, 0.3662465, 0.2633546, -0.11816884, -0.108501054, -0.30446148, 0.094746254, 0.22515038, -0.048324294), target2);\n\ttarget2 = MulAdd(ne2 , MF4x4(0.34875512, 0.22885701, -0.22425419, 0.30605644, 0.13452671, 0.16655035, -0.10293953, 0.23753232, -0.5908745, -0.15148452, -0.3885865, 0.14085245, -0.12627047, -0.09645269, 0.101941, -0.062304396), target2);\n\ttarget2 = MulAdd(nf2 , MF4x4(-0.18468879, 0.11713357, 0.04766135, -0.25752118, 0.076471716, 0.06850848, -0.06427401, 0.028061042, 0.017875634, 0.09589284, -0.020327348, -0.1585817, 0.19669123, 0.10955879, -0.18545902, -0.074755065), target2);\n\ttarget2 = MulAdd(ng2 , MF4x4(0.1056897, 0.08521911, -0.017700022, -0.004319419, 0.15351436, -0.11358399, 0.065656774, 0.101860404, 0.08894655, -0.060075074, 0.14363492, -0.10447328, -0.27426496, -0.19959188, 0.16687778, -0.09456175), target2);\n\ttarget2 = MulAdd(nh2 , MF4x4(-0.05424188, -0.16305181, 0.028440254, -0.013702167, -0.010122417, -0.13160124, 0.08733208, 0.111403994, -0.13586052, 0.016545279, 0.12953275, -0.01298413, 0.19755821, 0.029597677, 0.004327247, 0.093656704), target2);\n\ttarget2 = MulAdd(ni2 , MF4x4(-0.016224308, -0.020333769, 0.015944391, -0.044774864, 0.09308092, -0.06174809, 0.009493231, 0.00109714, 0.030341865, 0.0085925255, 0.023199126, 0.029012285, 0.050746094, 0.15161276, 0.053011492, -0.022610705), target2);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n}\n\n\n//!PASS 4\n//!DESC Conv-4x3x3x16, Depth-to-Space\n//!IN INPUT, tex1, tex2\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.0037637148, 0.003693704, 0.0034614028, 0.0033483643 };\n\ttarget1 = MulAdd(a1, MF4x4(0.009722335, -5.8660436e-05, -0.0069387504, -0.0052446183, -0.040276118, 0.0041334885, -0.013106614, -0.0047898176, -0.008160448, 0.011272557, -0.008908942, -0.015969492, 0.036588583, -0.0069453213, 0.03697349, 0.024233166), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.07749142, -0.0112727145, 0.064222045, -0.015094554, 0.0032031287, 0.03247034, -0.016756386, 0.023846423, -0.028618578, 0.02300731, -0.015894018, 0.037608027, 0.014199439, -0.043177396, -0.004832348, -0.05518754), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.008171211, -0.016406616, 0.04668373, -0.0020393482, -0.008888379, 0.001380358, -0.008963435, 0.0012900458, -0.030172894, -0.0017824832, -0.037534058, 0.000615256, 0.030373376, 0.002216906, 0.04730168, -0.0028000386), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.060749017, 0.006499037, -0.03925888, -0.043421242, 0.0014141012, -0.040274277, 0.020051334, 0.02141008, -0.0046555796, -0.032477897, 0.02811765, 0.014327698, 0.008681297, 0.044408746, -0.028984996, 0.00985357), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.22245905, 0.2221309, 0.21369153, 0.17244695, -0.16802068, -0.09160697, -0.13712268, -0.104401335, -0.18699472, -0.117237985, -0.13240008, -0.121350996, 0.027870163, 0.09320937, 0.07950856, 0.08880132), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.002709059, -0.0070304363, 0.10570918, 0.08184527, -0.014383472, -0.020202143, -0.0810668, -0.054163996, -0.018711304, -0.035145987, -0.098869935, -0.06942387, -0.011235106, 0.008683168, -0.02585752, 0.024761796), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.017611317, 0.033189557, 0.0014886355, 0.0063918163, 0.0033280635, 0.00871624, 0.018652624, 0.0072240643, 0.028240945, 0.027274653, -0.0044101775, 0.012503479, -0.009022953, -0.0037992215, 0.007457012, -0.0075594983), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.042642962, 0.061122447, -0.0661494, 0.046923082, 0.014721836, -0.07878182, 0.013244828, -0.047850955, 0.016932828, -0.07947459, 0.05953852, -0.007192553, -0.022235982, -0.026965706, -0.034282424, -0.007242096), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.012262586, -0.014608243, -0.0039572082, 0.045586918, 0.011789637, 0.00811699, 0.004699602, -0.032348834, 0.017336411, 0.00069143757, 0.000303623, -0.061924953, -0.0064005707, -0.0043993946, -0.008697915, -0.012118654), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.0012260727, 0.006306051, -0.004919151, -0.014706935, 0.06893623, -0.03855539, 0.0025126948, -0.013461133, 0.051023327, -0.015535766, -0.0125827445, -0.059677888, -0.0021585734, -0.019920474, -0.025212945, 0.017173553), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.014818789, -0.004695369, 0.11874947, -0.025116654, -0.010446815, -0.015087738, 0.060040206, -0.053225394, -0.059700467, -0.0084348805, 0.11633143, 0.01912765, -0.046732634, 0.02437617, 0.014276953, -0.017528424), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.03403683, 0.035661116, -0.05422196, 0.00086722866, 0.0069361166, 0.0030528181, 0.0011153776, 0.0040823813, -0.052100085, 0.016703505, -0.16275159, 0.019807467, -0.0046826405, -0.01290693, -0.00867241, -0.0074261916), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.091117546, 0.050540023, -0.018510593, -0.007402161, -0.1193577, 0.018770888, -0.011340929, -0.02110343, -0.032088384, 0.010691935, 0.004420295, -0.025953075, 0.047472738, 0.108008265, 0.007997121, -0.03855365), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.21882823, -0.18101972, 0.13662423, 0.3109504, -0.101242945, 0.3064065, -0.22530204, 0.2612257, -0.07345098, 0.31937975, -0.15872811, 0.23400135, -0.04057178, -0.11676629, -0.34227282, -0.18310128), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.01088255, 0.026722692, -0.0071181543, -0.07676996, -0.054152276, -0.08521186, -0.029249348, 0.005593179, 0.012496848, -0.055432145, 0.06396825, 0.056608576, -0.006908986, 0.018192623, -0.027572934, 0.03749799), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.00788736, 0.032808263, -0.0034198891, -0.01124656, 0.014423269, 0.058434688, 0.0139339, 0.0024755867, 0.042650267, 0.01773591, 0.017099075, 0.00094137667, 0.033293027, 0.008411577, 0.018532667, 0.016402127), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.0013495176, -0.05906597, -0.011892358, -0.04260839, 0.0040078545, -0.12263263, -0.005952629, -0.031151159, 0.009523005, -0.04784067, 0.07216081, 0.007988283, -0.010771301, -0.019751243, 0.017268918, -0.1053882), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.021729292, -0.006699109, -0.017977247, -0.008347603, 0.030392287, -0.035512295, 0.047333952, -0.061986152, -0.00917743, -0.023669569, -0.051791556, -0.057909377, -0.008901611, -0.010565621, -0.022557132, -0.06957076), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.096115954, 0.013176027, -0.046984393, -0.0064583416, -0.13834997, -0.024369081, 0.049557988, -0.013092948, 0.10623086, -0.0071193436, 0.025198812, -0.00963305, -0.051104847, 0.009814798, 0.0050332784, 0.0058091953), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.03568169, 0.01623718, -0.0020163557, 0.043042913, 0.027783269, -0.06342661, 0.10441675, 0.031614527, -0.17076227, 0.07228563, 0.04167568, 0.022664918, 0.0002446228, 0.01977757, -0.14741875, 0.03596493), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.028803155, 0.02343672, -0.037556753, 0.004386295, 0.023776755, -0.0024816473, 0.0017886858, -0.005105568, 0.008360341, -0.008270227, -0.12140172, 0.047693867, -0.03565588, -0.0082427105, 0.012581843, 0.0018308035), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.17737128, -0.23239174, 0.14191973, 0.0083567705, 0.022397157, -0.20152177, 0.076320365, 0.11157701, 0.005601583, -0.06157629, -0.060806494, 0.03030779, -0.17968388, -0.2081318, 0.051927045, 0.075377926), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(-0.28773892, -0.26089972, -0.13325682, -0.46006975, 0.35241324, 0.29463127, -0.16573308, 0.022810405, 0.388681, -0.036075145, 0.2998638, -0.15629162, 0.14321181, 0.10493886, -0.052218314, -0.27016288), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.03584634, 0.006315728, -0.08617273, -0.024391597, -0.016952977, 0.022077272, 0.12980743, 0.04512367, 0.003348057, 0.0946866, 0.16312122, 0.13436604, -0.011872978, -0.031965427, 0.0024880085, 0.033216927), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.016087456, 0.043138605, -0.028770814, 0.0061788377, 0.024897626, 0.10882443, -0.036830436, -0.009145524, -0.057872005, 0.08097352, -0.024710376, 0.0068731857, -0.018163942, -0.04771538, 0.027653048, 0.01914395), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.011542096, -0.073137596, 0.09102133, 0.049714323, -0.06767178, 0.070273116, -0.010473078, -0.120707616, -0.026583942, 0.0730171, -0.08226194, 0.105516605, 0.018596884, 0.05840729, 0.04693975, 0.0863541), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.0127724055, 0.02520005, -0.028792456, -0.06910211, -0.019357776, -0.026941938, 0.05015806, 0.12642363, -0.01354065, -0.015913904, 0.009398767, 0.034318734, -0.0034223567, -0.0146218045, -0.0067832484, -0.010091871), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.02916006, 0.014765165, 0.004575115, 0.0110705905, 0.024664888, 0.003658985, 0.0073659574, 0.0013673811, 0.02650946, 0.014014751, 0.026595473, 0.01877218, 0.016845545, -0.0031619575, -0.011036392, -0.014638798), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.012505482, 0.0023665216, -0.010882385, 0.009143886, -0.030671602, -0.004167823, 0.003649345, -0.00058618153, -0.038002256, -0.0061475867, -0.017000455, -0.015222981, 0.0066633034, 0.013324137, 0.022223728, 0.015254626), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.019684946, -0.011194834, -0.011896193, -0.009636412, 0.0064974707, -0.018297167, -0.01162353, -0.00998448, 0.022304865, -0.0044090357, -0.0013151226, 0.009721475, -0.0029337434, 0.004208434, -0.008193774, 0.005379128), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.012884837, -0.057319585, -0.002133779, -0.005586696, -0.03216661, 0.0015534499, -0.004120608, 0.0040779933, -0.044278033, 0.005608415, 0.009365155, 0.04694537, 0.024845028, 0.04563515, 0.018941263, 0.011450428), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.008597113, -0.010005085, -0.050961174, -0.07333081, 0.016683497, -0.056169543, -0.032008786, -0.037104256, -0.01117272, -0.011676191, -0.09071649, -0.049224474, 0.20027469, 0.06436799, 0.1351019, 0.069967836), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.022842692, 0.005048976, 0.05957191, 0.026581423, 0.03748738, 0.074060254, 0.053102568, 0.046449862, -0.013734466, -0.01722293, 0.030430514, -0.02180546, 0.007762467, -0.006432996, 0.08406507, 0.034061644), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.0048395037, 0.012762459, -0.0033284645, -0.0041399547, 0.01828778, 0.0043085683, 0.0019289661, -0.012415563, -0.023572162, -0.050695065, -0.013481175, -0.029202301, -0.03678883, -0.022862522, -0.025002036, -0.010764412), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.0075783907, 0.016249755, 0.0178703, 0.021285253, 0.013031193, 0.025416559, 0.043989707, 0.04750125, 0.0203218, 0.00335042, -0.024657877, -0.05417159, 0.0012374326, 0.115263805, -0.035001434, 0.049407292), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.0059729964, 0.017706383, 0.0004603757, 0.024557583, -0.014231813, 0.0022323965, -0.030447725, -0.005866556, 0.02305865, 0.02982909, 0.0549823, 0.06747715, -0.01014364, 0.0030060427, 0.01640388, 0.056874502), target1);\n\n\tMF4 target2 = { -0.0009249668, -0.0010178088, -0.00041991958, -0.0005421036 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.009785077, -0.007310227, 0.00081595866, -0.01268686, -0.014665477, -0.003956759, -0.0011089307, -0.011515727, 0.024502382, 0.025206817, 0.004246777, -0.0016346163, -0.016379429, -0.013535791, 0.01541915, 0.0095333215), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.017734146, 0.014389035, -0.0008451403, 0.013272096, 0.045607757, 0.01522117, 0.00904139, -0.001765619, 0.024920683, -0.012100507, 0.014870539, 0.0018603726, -0.030391455, 0.00632375, -0.055296343, -0.009885172), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.0056769922, 0.0012991864, -0.014343983, 0.0073196087, 0.0061439234, -0.0009862045, 0.0323433, 0.0018582975, -0.00815158, -0.008821831, 0.016262496, -0.014280032, 0.024239268, 0.015745653, 0.016698766, 0.014503724), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.039872967, -0.013257727, 0.055065673, 0.034231152, 0.086550154, 0.034081027, 0.045879394, 0.049891002, -0.011800151, -0.011743562, -0.015092318, -0.009334671, -0.017342495, -0.014658795, 0.014266523, 0.035314754), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.050990034, -0.06219798, -0.047669213, -0.07189862, -0.04856067, 0.031102043, 0.001354821, 0.01903025, 0.0037901315, 0.07694083, -0.016825065, 0.009997132, -0.18629807, -0.12768792, -0.104768254, -0.11861362), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.017904822, 0.0042992756, 0.016748125, -0.025035992, -0.003724865, -0.0031921281, -0.019930473, 0.017328225, 0.024588963, 0.010205262, 0.04149686, 0.06978651, -0.022708472, -0.0057800277, -0.11644439, -0.06476094), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.02426752, -0.0034115477, -0.0015359819, 0.026405398, -0.013942422, 0.034148987, -0.009329464, -0.005556865, 0.010035298, 0.0042479886, -0.0045719417, -0.007970587, 0.0048700697, -0.0031006113, 0.005171075, 0.0020327016), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.0015553721, -0.006999807, -0.027763836, -0.03493009, 0.0047000614, -0.034220867, 0.0021388065, 0.004188802, -0.007897541, -0.025793487, 0.017545879, 0.0013863312, 0.042826407, -0.050083816, 0.037378658, -0.011360738), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.007821516, -0.0034771548, 0.00051019643, 0.017586451, 0.01144453, 0.012032973, 0.0025295757, -0.011105711, 0.009102745, 0.015189803, -0.00083253905, -0.0025097867, -0.008002886, -0.020810502, -0.00023807488, -0.04825592), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.005066405, 0.017425792, -0.0004840731, -0.0009944261, 0.07663847, -0.04755453, 0.004607992, -0.020050947, 0.021402068, -0.034427766, -0.0130948955, -0.042138048, 0.015383988, -0.0085578235, -0.036823586, 0.001125214), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.024459356, -0.019538784, 0.13201334, -0.025238393, -0.009611914, -0.017932015, 0.06330252, -0.05036921, -0.09405187, 0.0016108088, 0.07035366, -0.026231728, -0.036375783, 0.047566332, 0.033421457, 0.011572374), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.03742729, 0.03181365, -0.05451164, -0.009032132, 0.017350135, -0.011311124, 0.0147211, -0.01298328, -0.011024085, 0.028534293, -0.12944345, 0.07152882, 0.005176979, -0.00048127733, -0.0063332263, -0.0034040876), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.06455105, 0.033970848, -0.04488856, -0.027959615, -0.094514206, 0.033421617, 0.031325165, 0.0088970335, -0.031805996, 0.007078957, 0.008114225, -0.017701747, 0.048437405, 0.12445195, 0.02138049, -0.017392302), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.21116845, -0.17855385, 0.12160961, 0.32197994, -0.14490715, 0.2886178, -0.28124997, 0.21847156, -0.04988429, 0.32125694, -0.118747145, 0.26057142, -0.045630034, -0.1453716, -0.3682217, -0.22081932), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.0057057277, 0.03872448, 0.020275556, -0.05959739, 0.0150841605, -0.02288727, 0.033048235, 0.08510421, 0.01309789, -0.050875448, 0.051518645, 0.041827686, -0.028529504, -0.0015568004, -0.023128182, 0.03178304), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.0016438053, 0.028251547, 0.0003874817, -0.021485088, 0.008020942, 0.052520994, 0.009027988, 0.004729575, 0.026685065, 0.008003427, 0.013078419, -0.008256319, 0.022743277, -0.001293671, 0.018562315, 0.016649859), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.013438089, -0.049052995, 0.0060880547, -0.044865325, 0.031890247, -0.102749884, 0.0047795745, -0.028551944, -0.018443404, -0.061510604, 0.031782348, -0.0005923042, 0.014257579, 0.010379952, 0.02929872, -0.090405114), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.009318741, -0.0061841, -0.02420737, 0.0018885462, 0.022010826, -0.023001686, 0.035959963, -0.057635445, 0.012495818, -0.008206369, -0.026234211, -0.04719263, 0.0057711657, -0.003004966, 0.0046920753, -0.041684203), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.050602015, 0.021741746, -0.059019636, -0.008416951, -0.1789153, -0.01835426, 0.03100039, -0.017736796, 0.09091737, -0.026542341, 0.010933376, -0.031898204, -0.015792761, 0.013789206, 0.031699985, 0.018964434), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.099863164, -0.01637541, 0.083744444, 0.011983074, 0.013478042, -0.04780451, 0.08646149, 0.050255097, -0.22476238, 0.11746969, 0.038574144, 0.069615066, 0.047265753, -0.03212485, -0.12651724, -0.0065722666), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.026888395, 0.0053314343, -0.0018114679, -0.007841625, 0.00037234774, -0.005450839, -0.03730409, -0.00441375, -0.014338566, 0.002887282, -0.19375902, 0.06374498, -0.033998128, -0.03480894, 0.061709825, -0.016935369), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.18882285, -0.19729713, 0.064650975, -0.07342598, -0.039107442, -0.28614163, 0.081506595, 0.111678764, -0.0019596675, -0.071805045, -0.019774346, 0.055490687, -0.1405711, -0.16753702, 0.031397972, 0.054546997), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.007561914, 0.0010002917, 0.12623467, -0.17501056, 0.22664371, 0.2080332, -0.3194733, -0.1065412, 0.21299458, -0.23856679, 0.17237303, -0.2863369, 0.35997602, 0.354653, 0.15091361, -0.07142766), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.02403396, 0.0037063402, -0.004992154, 0.047530055, -0.03227084, -0.0055595553, 0.06554937, -0.025955811, -0.03792351, 0.041418597, 0.04285587, -0.0118592, 0.00012291886, -0.013734975, 0.07748641, 0.14016038), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.015037119, 0.058259863, -0.020877289, -0.0059153647, 0.04133679, 0.108832926, -0.026314106, -0.0010898053, -0.057873078, 0.07802038, -0.029681025, 0.020011986, -0.03940851, -0.038397703, 0.013701823, 0.01657068), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.016823404, 0.007905321, 0.034658395, 0.09977579, -0.05916761, 0.004779212, 0.018820778, -0.15795219, -0.013125517, 0.021101758, -0.055992976, 0.08024182, -0.04333755, 0.070356764, -0.030624833, 0.09123745), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.007931201, 0.0069976873, -0.016831044, -0.027368804, -0.03332386, -0.041667387, 0.04094055, 0.095304705, -0.006027611, -0.019209528, -0.0008929939, -0.017201519, 0.005464988, 0.0038448595, -0.01248845, 0.008877873), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.042160366, 0.0036025376, -0.008628986, -0.005607383, 0.028637825, 0.005296032, -0.0004143198, 0.008265197, 0.033176135, 0.014727739, 0.0145593295, 0.011159069, 0.00833305, -0.0025515268, -0.00015546188, 0.002805437), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.016752163, 0.013423374, -0.018342504, 0.013459657, -0.038428728, -0.005804395, 0.019692563, -0.005745392, -0.030070104, 0.01058409, 0.003989377, 0.0074200635, -0.01936366, -0.01608809, 0.0071134195, -0.0038598357), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.018000437, -0.0121247275, -0.01288339, -0.0060898345, -0.006138964, -0.0035810755, -0.03902352, 0.002276941, 0.0032195079, -0.02730975, -0.011268412, -0.0036179612, -0.004836894, -0.0015986725, -0.019751905, -0.0071931942), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.014426659, -0.05161329, 0.019196855, 0.002317663, -0.055477437, -0.007086505, -0.04151144, -0.027518485, -0.027440753, 0.003857541, -0.002143262, 0.013090804, 0.015745236, 0.021075105, 7.93909e-06, -0.009694458), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.0025894733, -0.017304689, -0.03299281, -0.0754248, 0.03428733, -0.03397887, 0.0108591765, 0.021311574, -0.04203291, -0.019728655, -0.09826257, -0.046157785, 0.22522739, 0.086717755, 0.15654634, 0.08489247), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.008495083, 0.00074552774, 0.038054205, 0.013044046, -0.027891211, 0.003249458, -0.018353004, -0.035205863, -0.010195661, -0.008145831, 0.014239584, -0.019779535, 0.011452498, 0.004117014, 0.08403766, 0.04357078), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.00020427872, 0.026861027, -0.01047743, 0.0034385168, 0.015686916, 0.00038722693, 0.0017860534, -0.021630246, -0.0084784245, -0.022648407, -0.0050631054, -0.016437376, -0.026458954, -0.011239073, -0.01145464, -0.0058855377), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.0012052609, 0.009248192, 0.008875674, 0.03043022, 0.012489936, 0.019402692, 0.0378006, 0.05519605, 0.029059285, -0.0072894073, 0.0014154738, -0.03802288, -0.02321437, 0.09558396, -0.0550932, 0.036936663), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.010010094, 0.012796987, 0.0025080708, 0.013876455, -0.00536739, -0.016932324, -0.012128944, -0.0241354, 0.0077782627, 0.01584833, 0.033727348, 0.039302748, -0.026609577, -0.0062910756, -0.011042692, 0.031207075), target2);\n\n\tMF4 target3 = { -0.0021447246, -0.0025527438, -0.0016466968, -0.0020245572 };\n\ttarget3 = MulAdd(a1, MF4x4(-0.01766077, -0.017591428, -0.0038036762, -0.023304595, -0.012525157, -0.0058148014, -0.0030130956, -0.011804012, 0.030511979, 0.028687771, 0.007858589, 0.004475508, -0.02585795, -0.01785211, 0.0053741997, 0.00074623496), target3);\n\ttarget3 = MulAdd(b1, MF4x4(-0.040601525, 0.016486213, -0.01966552, 0.014969501, 0.05400945, 0.019022502, 0.0149923405, -0.0017570893, 0.040684238, -0.009271634, 0.026908487, 0.002365157, -0.03371985, 0.00928091, -0.058665182, -0.0047038617), target3);\n\ttarget3 = MulAdd(c1, MF4x4(0.0034900296, 0.0028777388, -0.02543823, 0.005724228, 0.012073974, 0.0043754885, 0.04109826, 0.008040286, -0.00049979525, -0.0063444753, 0.030565983, -0.009352674, 0.01949427, 0.014168137, 0.009640578, 0.011481213), target3);\n\ttarget3 = MulAdd(d1, MF4x4(0.026645018, -0.02211462, 0.06119815, 0.039082125, 0.09945218, 0.042240527, 0.054267537, 0.04693634, -0.004510591, -0.0041247807, -0.012629442, -0.008053095, -0.025141539, -0.025081929, 0.011338651, 0.029372308), target3);\n\ttarget3 = MulAdd(e1, MF4x4(-0.102688424, -0.11533188, -0.09621349, -0.116714895, -0.025504943, 0.05013811, 0.024331303, 0.03946124, 0.026381869, 0.1011479, -0.0017481856, 0.027152762, -0.18783632, -0.13439077, -0.112003446, -0.12810163), target3);\n\ttarget3 = MulAdd(f1, MF4x4(0.010783576, -0.00025257064, -0.0075445045, -0.04681932, -0.0021722934, -0.005758047, -0.0110701695, 0.023468157, 0.036986902, 0.023351438, 0.063143626, 0.09269854, -0.025713218, -0.011750105, -0.11722637, -0.07038934), target3);\n\ttarget3 = MulAdd(g1, MF4x4(-0.026961634, -0.015106367, -0.0034014166, 0.02482031, -0.013892242, 0.04203608, -0.008226002, 0.004619446, 0.012888606, 0.010721662, -1.3880494e-05, -0.0033224574, 0.006727405, -0.0035630877, 0.0021499102, -0.00091816986), target3);\n\ttarget3 = MulAdd(h1, MF4x4(0.0016877668, -0.02695227, -0.023388471, -0.053411417, 0.006777518, -0.024251794, 0.0015210172, 0.010034961, -0.00795588, -0.01645489, 0.012691467, 0.0061330614, 0.054507505, -0.041002143, 0.048495438, -0.004843492), target3);\n\ttarget3 = MulAdd(i1, MF4x4(-0.0159168, -0.013163069, -0.0091357315, 0.0011109188, 0.022993349, 0.025777856, 0.013487494, 0.00304372, 0.014121591, 0.02415322, 0.006453722, 0.010679647, -0.00626483, -0.017908117, 0.0063728937, -0.04091484), target3);\n\ttarget3 = MulAdd(a2, MF4x4(-0.0026799496, 0.0154166315, -0.0037383793, -0.002577431, 0.073905826, -0.043148544, 0.011774636, -0.016023275, 0.0099145975, -0.04718069, -0.013578048, -0.04220935, 0.018033838, -0.0025958812, -0.029762078, 0.0034059538), target3);\n\ttarget3 = MulAdd(b2, MF4x4(-0.03239311, -0.025743088, 0.1116615, -0.027325295, -0.014691433, -0.013614988, 0.05034416, -0.04294835, -0.11013415, -0.014086726, 0.048601545, -0.04762435, -0.01944709, 0.054276068, 0.04073586, 0.019288493), target3);\n\ttarget3 = MulAdd(c2, MF4x4(0.027851144, 0.014083208, -0.06432852, -0.024642657, 0.021185134, -0.015441491, 0.018058551, -0.017353412, -0.018814132, 0.026259383, -0.14238997, 0.06301044, 0.007324441, 0.00494394, 0.00020533071, 0.0024405916), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.06092095, 0.025730716, -0.042129956, -0.026382709, -0.08284398, 0.03344148, 0.038016047, 0.0137958275, -0.025555719, 0.008199355, 0.0070835026, -0.01420561, 0.0493976, 0.121205755, 0.026178997, -0.006300481), target3);\n\ttarget3 = MulAdd(e2, MF4x4(-0.18660638, -0.1658202, 0.116562665, 0.29287666, -0.13814074, 0.2658047, -0.270531, 0.19597577, -0.04692207, 0.28904793, -0.09829146, 0.24158104, -0.03946344, -0.12598358, -0.3361825, -0.19800447), target3);\n\ttarget3 = MulAdd(f2, MF4x4(0.020092675, 0.049266458, 0.03696139, -0.046251137, 0.029122403, -0.008378672, 0.044602558, 0.092563495, -0.0036082428, -0.072675824, 0.030523287, 0.006169521, -0.031133244, -0.011250458, -0.026590217, 0.023079094), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.007384019, 0.031913586, 0.002072675, -0.019807052, 0.010384438, 0.050076224, 0.010438329, 0.009595051, 0.022497892, 0.012009176, 0.009222753, -0.008563874, 0.017106988, -0.003105622, 0.01070336, 0.011805944), target3);\n\ttarget3 = MulAdd(h2, MF4x4(0.017091183, -0.035133313, 0.012425838, -0.03395959, 0.03418688, -0.10616231, 0.0101681305, -0.03682252, -0.016497994, -0.05231084, 0.025178006, 0.008926557, 0.025942912, 0.019970346, 0.03534238, -0.07596637), target3);\n\ttarget3 = MulAdd(i2, MF4x4(0.007215777, -0.0006424821, -0.020822426, 0.011314772, 0.0183502, -0.015352454, 0.02972497, -0.053287935, 0.024020335, -0.006380922, -0.008620774, -0.041896872, 0.021631774, 0.013320375, 0.024711635, -0.020357909), target3);\n\ttarget3 = MulAdd(na1, MF4x4(-0.033131246, 0.027936278, -0.047840517, 0.0019488486, -0.17501047, -0.0178374, 0.02549812, -0.019010937, 0.079489246, -0.027291514, 0.004313802, -0.03478066, -0.004887971, 0.019281879, 0.04073947, 0.022658588), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(0.110482916, -0.021340236, 0.09848104, 0.0034104201, 0.0032655075, -0.04557326, 0.07156056, 0.045965493, -0.22822224, 0.115162075, 0.027745042, 0.07251069, 0.05100454, -0.034554593, -0.11214564, -0.009064197), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.017621655, 0.01024623, 0.009554872, -0.00078690174, -0.0069463328, -0.014670676, -0.041410644, -0.007414249, -0.031177497, -0.007517117, -0.20814678, 0.049873244, -0.02482445, -0.031338003, 0.06920326, -0.015171424), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(0.18918292, -0.15450309, 0.05504167, -0.061840136, -0.057958793, -0.28908864, 0.06820344, 0.09923399, -0.008387437, -0.075379215, -0.01747373, 0.048925415, -0.13222353, -0.15354146, 0.022480693, 0.04943612), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(0.0469381, 0.05393423, 0.1681062, -0.10543653, 0.17948511, 0.16570628, -0.33344334, -0.13197891, 0.16509773, -0.26174626, 0.13757275, -0.29244694, 0.35424834, 0.35368237, 0.156861, -0.04775442), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(0.026892537, 0.0075510717, 0.015918663, 0.06070227, -0.02288592, 0.0027507204, 0.05279965, -0.03042772, -0.044760384, 0.0234673, 0.01604264, -0.04277388, 0.0011313064, -0.0052253264, 0.08374709, 0.14929597), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(0.016119812, 0.061383534, -0.013537205, -0.0017921093, 0.043676157, 0.09811408, -0.015655283, 0.0007943268, -0.053843908, 0.069290705, -0.028319253, 0.020141726, -0.038996387, -0.03628716, 0.012679114, 0.015012319), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(-0.02019775, 0.022393003, 0.020688228, 0.10277296, -0.06365119, -0.015666502, 0.012721399, -0.16204305, -0.0037819904, 0.012113873, -0.040969223, 0.069086574, -0.052415807, 0.060331605, -0.04201384, 0.07953157), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(-0.0019123453, 0.012750492, -0.007235785, -0.01268919, -0.038674437, -0.043993857, 0.028753003, 0.07664717, -0.015077012, -0.027486047, -0.011141094, -0.030269727, 0.0016567699, -0.003331901, -0.021631587, -0.00040226072), target3);\n\ttarget3 = MulAdd(na2, MF4x4(-0.03769701, 0.0045639244, -0.0069983527, -0.0064906892, 0.03318896, 0.011733902, 0.0023203227, 0.013374876, 0.037507236, 0.018019466, 0.013330661, 0.009231364, 0.00018865235, -0.005706915, -0.00011657552, 0.0038968239), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(0.022072105, 0.019486066, -0.013029048, 0.017470635, -0.03662149, -0.011397823, 0.02397534, -0.008561204, -0.026196644, 0.01626692, 0.011886567, 0.021061733, -0.03310679, -0.025446283, -0.006469576, -0.010118362), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(-0.014853227, -0.0062806485, -0.005624992, 0.0017175867, -0.007843849, 0.0008925535, -0.041000694, 0.0049381475, 0.0019743184, -0.035099152, -0.01074269, -0.0128827905, -0.010841019, -0.0093286475, -0.030476939, -0.018505717), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(0.016344415, -0.04647131, 0.021242643, 0.004836572, -0.061090752, -0.006488986, -0.050970413, -0.029668579, -0.015889898, 0.010811246, 0.0018357672, 0.012481409, 0.008317143, 0.009978102, -0.0015472731, -0.011174326), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(-0.004087798, -0.01634328, -0.031607483, -0.068488315, 0.038035624, -0.02797923, 0.017972443, 0.029961389, -0.029277585, -0.015558678, -0.08634699, -0.039436456, 0.19870138, 0.06507983, 0.130592, 0.059745777), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(-0.0028183246, -0.008089249, 0.02188247, 0.0049699014, -0.03830487, -0.0079993615, -0.028960107, -0.045729056, 0.0021651732, 0.010072074, 0.031335246, 0.0012719089, 0.015795005, 0.011290197, 0.08071912, 0.04273827), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(-0.0011167483, 0.024682038, -0.009224286, 0.005520499, 0.014198537, -0.0032909375, 0.0005767499, -0.02676088, -0.0019766665, -0.015222206, -0.00080782827, -0.011807755, -0.02560086, -0.015391911, -0.008948504, -0.0062184683), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(-0.009399661, -0.0019192873, 0.000261681, 0.020112153, 0.0077712294, 0.019477246, 0.030144244, 0.053777162, 0.030650103, 0.0021887033, 0.0092345085, -0.029658241, -0.03723785, 0.073152155, -0.058525253, 0.0230170564), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(0.012911211, 0.010375983, -0.00055489264, 0.005504194, -0.004187377, -0.02239082, -0.008734182, -0.027458502, -0.005602922, 0.009588401, 0.015889015, 0.036346428, -0.038325973, -0.018252429, -0.02944341, 0.01149068), target3);\n\n\tfloat2 outputPt = GetOutputPt();\n\n\tpos -= 0.5f * outputPt;\n\tOUTPUT[gxy] = MF4(MF3(target1.x, target2.x, target3.x) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t++gxy.x;\n\tpos.x += outputPt.x;\n\tOUTPUT[gxy] = MF4(MF3(target1.y, target2.y, target3.y) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\t\n\t++gxy.y;\n\tpos.y += outputPt.y;\n\tOUTPUT[gxy] = MF4(MF3(target1.w, target2.w, target3.w) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t--gxy.x;\n\tpos.x -= outputPt.x;\n\tOUTPUT[gxy] = MF4(MF3(target1.z, target2.z, target3.z) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Upscale_Denoise_S.hlsl",
    "content": "// Anime4K_Upscale_Denoise_CNN_x2_S\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Upscale%2BDenoise/Anime4K_Upscale_Denoise_CNN_x2_S.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Upscale_Denoise_0\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nMF4 A4KS1(MF3 src[4][4], int i, int j) {\n\tMF4 result = { -0.004601904, -0.0030944077, 0.14569537, -0.016794242 };\n\tresult = MulAdd(src[i - 1][j - 1], MF3x4(6.5515305e-05, 0.09565814, -0.0022499533, 0.14627136, -0.0065872427, 0.1441769, 0.17772098, 0.16298898, 0.03727593, 0.02010636, 0.013131043, 0.07891907), result);\n\tresult = MulAdd(src[i - 1][j], MF3x4(0.029612074, -0.01204274, 0.07698074, 0.3855172, 0.0045466167, -0.0859741, 0.26930287, 0.67549795, -0.036623597, 0.051749162, -0.04714053, 0.16092339), result);\n\tresult = MulAdd(src[i - 1][j + 1], MF3x4(-0.030328937, -0.15884648, 0.0082092965, -0.05052196, 0.041409027, -0.23017453, 0.31568366, 0.05136558, -0.0106390705, -0.12503141, -0.07030922, -0.08512375), result);\n\tresult = MulAdd(src[i][j - 1], MF3x4(0.059616547, -0.12322959, 0.058520414, -0.039292034, 0.08059592, -0.22441447, 0.15380386, -0.17675085, -0.009270574, 0.034731936, -0.048767723, 0.025933916), result);\n\tresult = MulAdd(src[i][j], MF3x4(-0.4495482, 0.37551787, -0.4227873, -0.4890034, -0.9007091, 0.7524192, -1.271679, -0.68366605, -0.07302573, 0.09378561, 0.010367829, -0.24593607), result);\n\tresult = MulAdd(src[i][j + 1], MF3x4(0.12684742, -0.11042779, 0.01793761, 0.06982078, 0.12901784, -0.10123104, -0.2129385, -0.15062876, 0.019824497, -0.015181707, 0.070795976, 0.13549626), result);\n\tresult = MulAdd(src[i + 1][j - 1], MF3x4(-0.036070887, -0.2733308, 0.05836442, -0.06817092, -0.08980838, -0.514616, 0.2965783, 0.103823625, -0.015213521, -0.16376303, 0.0017071419, -0.0922202), result);\n\tresult = MulAdd(src[i + 1][j], MF3x4(-0.053406045, 0.011273207, -0.05544644, 0.09432561, -0.04143601, -0.0783786, -0.39899537, 0.040322974, -0.046442945, 0.052499074, 0.03397099, 0.05516481), result);\n\tresult = MulAdd(src[i + 1][j + 1], MF3x4(0.35976252, 0.197882, 0.031213427, -0.02211337, 0.7940331, 0.327452, 0.30120966, 0.03181121, 0.13782893, 0.060073618, -0.00940469, -0.0358819), result);\n\treturn result;\n}\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (uint i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\ttex1[gxy] = A4KS1(src, 1, 1);\n\t++gxy.x;\n\ttex1[gxy] = A4KS1(src, 2, 1);\n\t++gxy.y;\n\ttex1[gxy] = A4KS1(src, 2, 2);\n\t--gxy.x;\n\ttex1[gxy] = A4KS1(src, 1, 2);\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x8\n//!IN tex1\n//!OUT tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nMF4 A4KS2(MF4 src[4][4], int i, int j) {\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\n\tMF4 result = { 0.022899346, 0.033619333, 0.030674957, -0.017047008 };\n\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.103708945, -0.050891697, -0.2067834, -0.033582103, -0.08676132, 0.15528207, -0.10070597, -0.13641205, 0.030959459, 0.12798834, -0.058627255, -0.008511715, 0.023304658, -0.027084433, 0.120355256, -0.023104342), result);\n\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(0.0550643, -0.26851672, 0.11073926, 0.21989855, 0.012853378, 0.028077757, 0.073306665, -0.04551125, 0.16005373, -0.018154016, -0.12347146, -0.07590073, -0.10193998, 0.084696375, 0.04041413, -0.030883553), result);\n\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.04816972, 0.0804637, 0.0071406, -0.08482986, 0.11176785, 0.060121994, -0.047804814, -0.036170192, 0.01989302, -0.12537469, -0.16283676, 0.19132937, -0.052577138, -0.005143432, 0.045614418, 0.04198543), result);\n\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.33660156, 0.036350835, -0.4623589, -0.04140598, 0.2436438, -0.044735093, 0.20876355, -0.004252532, 0.81046224, -0.18550895, 0.32743093, 0.109012894, -0.34675312, -0.03464997, -0.09489919, -0.07961427), result);\n\tresult = MulAdd(max(src[i][j], 0), MF4x4(-0.08862038, -0.8168393, 0.03584266, 0.32159033, 0.06634099, 0.2985745, -0.18204363, -0.016070427, 0.35503992, 1.1388919, 0.16171643, -0.63834023, -0.0037699202, -0.27919513, -0.20949292, 0.03270466), result);\n\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.021701936, -0.04537874, -0.05514495, 0.23225744, 0.024968185, 0.1816845, 0.03485249, -0.28249854, -0.37759346, -0.3225813, 0.021595621, 0.17104608, -0.0044055753, 0.01621266, -0.015169225, 0.08956203), result);\n\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(-0.033255238, -0.110517226, 0.10664505, 0.019566126, -0.0695305, 0.059743922, -0.19161415, -0.024217626, -0.08578889, -0.16358584, -0.23050265, -0.004697784, -0.060790297, 0.1174991, 0.08205285, -0.011846926), result);\n\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(0.6119327, 0.0791928, -0.118774265, 0.42233524, -0.16248553, -0.017692063, 0.13530938, -0.3207985, -0.147722, -0.24525681, 0.05243329, -0.38583818, 0.5147888, -0.072632834, -0.6014986, 0.26713687), result);\n\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(0.23735437, -0.032110002, 0.17445332, -0.3272264, 0.020623574, 0.26734766, -0.16806662, 0.0796467, -0.34921628, 0.016648084, -0.14200358, 0.59190625, 0.13177821, 0.11139572, -0.14972521, -0.16784541), result);\n\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(-0.047283772, -0.003196778, 0.44890094, 0.14619343, -0.17113213, -0.068454474, 0.07681565, -0.04306807, -0.0022641511, -0.20954822, 0.0344229, 0.014815744, -0.010632933, 0.13355999, -0.0860752, -0.069001146), result);\n\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(0.11664345, 0.099102855, 0.1642523, 0.047408774, 0.038490184, 0.16064398, -0.08694127, -0.2149453, -0.1413128, -0.06531084, -0.10105762, 0.19743964, 0.10458527, -0.04133969, 0.1425028, -0.01328308), result);\n\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.0138432095, -0.20053013, 0.079355195, 0.273772, 0.05484276, 0.13891658, 0.16240036, -0.25245088, 0.011192391, 0.104164094, 0.08112111, -0.250435, -0.0559613, -0.031029798, -0.015725998, 0.09240792), result);\n\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(0.18754779, -0.33171803, 0.34917468, 0.29074225, -0.37954012, 0.20898043, -0.24973525, -0.13707505, -0.31585664, 0.13607393, -0.29118514, 0.015055187, 0.18549949, -0.06351915, 0.2823401, -0.00019733967), result);\n\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.10060476, 0.2883022, -0.15810104, -0.041112892, 0.31050095, 0.18517002, 0.020033397, -0.35919502, -0.17903808, -0.43506318, -0.14783014, 0.20092726, -0.002020754, 0.13320895, 0.040995706, 0.052643474), result);\n\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.014892139, 0.005828587, 0.044784732, -0.27272886, 0.21069369, 0.044396695, -0.03411123, 0.031441864, 0.17224072, 0.1708587, -0.00729118, -0.13070418, -0.19128975, -0.09342688, -0.051133234, -0.089075714), result);\n\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.08799108, 0.04157696, -0.15010124, 0.26832178, -0.0040120087, 0.040308744, 0.17632529, -0.09464763, 0.07786305, 0.038288828, 0.40799135, 0.037377868, -0.049877923, -0.25080636, 0.00068664295, 0.0013101585), result);\n\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(0.0353459, -0.21445732, 0.112647906, -0.3513759, 0.16887255, 0.3224789, -0.17073384, 0.10875396, 0.18919177, 0.14288992, 0.07364533, 0.20205943, -0.34363645, -0.3520186, 0.6763608, -0.19051236), result);\n\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(-0.032245517, 0.039594565, -0.11825768, 0.16509856, 0.11749939, -0.005166539, 0.10740687, -0.3794017, 0.12722437, 0.14066173, 0.08025407, -0.34773758, -0.027300838, -0.08963159, 0.29774833, 0.053532287), result);\n\treturn result;\n}\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (uint i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex1.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex1.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex1.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex1.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\ttex2[gxy] = A4KS2(src, 1, 1);\n\t++gxy.x;\n\ttex2[gxy] = A4KS2(src, 2, 1);\n\t++gxy.y;\n\ttex2[gxy] = A4KS2(src, 2, 2);\n\t--gxy.x;\n\ttex2[gxy] = A4KS2(src, 1, 2);\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x8\n//!IN tex2\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nMF4 A4KS3(MF4 src[4][4], int i, int j) {\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\n\tMF4 result = { 0.04921464, -0.0011432811, 0.062071066, -0.06594219 };\n\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.0714004, -0.0545495, -0.050848898, 0.04724593, 0.2214181, 0.26353878, 0.07314053, -0.18771721, 0.06282607, -0.03720548, 0.020577375, -0.08951135, 0.40820515, 0.012179098, 0.52947706, -0.48448065), result);\n\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(0.10311368, -0.10970221, 0.07008208, -0.07143153, 0.073753305, 0.03786335, -0.4312538, -0.17680745, -0.15527713, -0.06711554, -0.21828765, 0.27252844, -0.0025433605, 0.31595528, -0.06065309, 0.059542265), result);\n\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.036736265, 0.08704119, -0.06530063, 0.04546563, 0.010335546, -0.040761005, -0.021500558, 0.104531065, 0.094652064, -0.05088704, 0.14768088, -0.08585825, 0.057680476, 0.09885713, 0.18074304, -0.14277679), result);\n\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.04810641, -0.01735864, -0.06405213, 0.04889552, -0.011552542, -0.04617259, 0.023976233, 0.27587202, -0.117965676, -0.07052052, -0.030583147, -0.036600694, -0.08542387, -0.053850796, 0.27242282, -0.73792183), result);\n\tresult = MulAdd(max(src[i][j], 0), MF4x4(-0.1340838, 0.1256252, -0.040528856, 0.13554344, -0.13733707, -0.14641404, 0.42666963, -0.4933124, -0.34908, 0.054332364, -0.2768947, 0.44689894, 0.42182985, -0.027279109, -0.17136064, -0.009496184), result);\n\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.075086355, -0.025501372, 0.02172236, -0.052761186, -0.055753034, -0.028023237, -0.08829973, 0.14333946, 0.062496934, 0.034493748, 0.17640088, -0.084869936, 0.21283653, 0.1184779, 0.0016387368, -0.1498814), result);\n\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(0.054841094, 0.040639404, -0.025044259, -0.071105786, -0.07473824, -0.04719771, 0.016553668, -0.10028357, 0.009365985, -0.0133521445, 0.022320358, -0.09318326, 0.17342545, 0.19281831, 0.16737404, -0.09583887), result);\n\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(-0.03950585, 0.091417804, -0.021395942, 0.08735149, -0.029363452, -0.04763804, -0.1430701, 0.15344201, -0.006604305, 0.05897304, -0.13595524, 0.083323576, 0.008187976, 0.12946083, 0.14983748, -0.08178542), result);\n\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(-0.00046765045, -0.07914878, 0.03529457, -0.007752294, -0.10084779, -0.1531338, -0.1408283, 0.20638838, 0.01466853, -0.059309185, -0.11161097, 0.08481583, 0.090416916, 0.081118226, 0.08677104, -0.20095336), result);\n\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(0.3200496, -0.049090706, 0.11554867, -0.11949655, -0.18064958, 0.0012254696, -0.032284267, 0.00076361356, -0.13239916, -0.13838826, -0.20345089, 0.00692921, -0.2271236, -0.07132879, -0.097703665, 0.29881954), result);\n\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(0.4095371, 0.3008338, -0.43109173, -0.495734, 0.15016843, -0.3890023, 1.0669806, -0.20876339, -0.32241493, -0.10387533, -0.018227777, 0.1349976, -0.0019588785, -0.19263229, 0.38952798, 0.08135965), result);\n\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(0.01517036, -0.51562387, -0.13939962, -0.23287989, 0.09597558, 0.017624658, 0.16989397, -0.09395267, -0.29612765, 0.11843327, -0.07493133, 0.14523852, 0.040488124, 0.016568637, 0.10204776, -0.13137013), result);\n\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(-0.1512155, -0.12732185, 0.08002965, 0.024762904, 0.05106389, 0.011125884, -0.043196492, -0.17617282, 0.09791206, 0.120643355, 0.075500526, 0.10948051, 0.04969893, -0.20776172, -0.06905779, -0.20245977), result);\n\tresult = MulAdd(max(-src[i][j], 0), MF4x4(-0.41836104, -0.82896453, -0.20962712, 0.7804863, 0.17322528, 0.53994787, -0.18730208, -0.021233026, 0.7417944, -0.4544313, 0.23165174, -0.63969344, 0.09383021, -0.046137553, -0.07796646, 0.11413524), result);\n\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.32532063, 0.09456587, 0.43708017, -0.40595353, 0.061229162, 0.006663704, -0.19821976, 0.07661682, -0.21427135, 0.17748164, -0.31958643, 0.3883502, 0.068938896, 0.022886515, 0.022923468, -0.04269318), result);\n\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.23775512, 0.04026384, 0.12276414, -0.2545085, 0.0894177, 0.115443565, 0.029124375, 0.08887401, -0.0057824687, 0.017655179, -0.025270017, -0.06643964, 0.01316084, 0.024039604, 0.034566984, -0.12682836), result);\n\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(0.036596492, 0.22772355, -0.05508538, -0.18005793, -0.06432669, -0.037058707, 0.2718052, -0.10313161, 0.016055575, 0.051271006, -0.038919963, -0.036601298, -0.019457681, 0.03805731, 0.03252896, -0.07179724), result);\n\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(0.15046261, 0.13090402, -0.023847125, -0.039356075, 0.045424663, -0.20594294, 0.2154043, -0.18429665, -0.07969159, 0.08719893, -0.057626463, 0.08344988, -0.018651528, 0.047302175, 0.060727824, -0.035960387), result);\n\treturn result;\n}\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (uint i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex2.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex2.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex2.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex2.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\ttex1[gxy] = A4KS3(src, 1, 1);\n\t++gxy.x;\n\ttex1[gxy] = A4KS3(src, 2, 1);\n\t++gxy.y;\n\ttex1[gxy] = A4KS3(src, 2, 2);\n\t--gxy.x;\n\ttex1[gxy] = A4KS3(src, 1, 2);\n}\n\n\n//!PASS 4\n//!DESC Conv-4x3x3x8, Depth-to-Space\n//!IN INPUT, tex1\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nMF4 A4KS4(float2 pos) {\n\tfloat2 inputPt = GetInputPt();\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 result = { -0.0031417734, -0.002754766, -0.004053268, -0.003937834 };\n\tresult = MulAdd(max(a, 0), MF4x4(-0.04508749, 0.00222134, 0.013338363, -0.0067310617, 0.099346675, 0.05804196, 0.018694466, -0.008126048, 0.007771997, -0.0072556734, -0.008293339, 0.001518462, -0.06296499, -0.064195156, 0.0727399, 0.044078834), result);\n\tresult = MulAdd(max(b, 0), MF4x4(0.20800652, -0.016071903, -0.08095607, -0.03472411, -0.20690396, 0.061331827, -0.10627648, 0.12838624, 0.036534917, -0.006113497, 0.029266752, -0.002263159, 0.2937966, -0.05544609, 0.14546311, -0.01290958), result);\n\tresult = MulAdd(max(c, 0), MF4x4(0.07792222, -7.288649e-05, 0.2800036, 0.019709835, -0.010950291, 0.021879988, 0.037608813, 0.055267945, 0.018646395, -0.016691998, 0.03787624, -0.006547077, 0.03214097, -0.018541625, 0.12142825, -0.070806496), result);\n\tresult = MulAdd(max(d, 0), MF4x4(-0.009798109, -0.06606263, 0.0010101331, 0.009924258, -0.10272075, -0.07983353, 0.028398676, 0.04967719, 0.12467993, 0.06775066, 0.017111637, 0.012814711, 0.0031143876, -0.0902014, 0.11242646, 0.076476306), result);\n\tresult = MulAdd(max(e, 0), MF4x4(0.07650971, 0.35096344, 0.0612814, 0.06036218, 0.253547, -0.0460987, -0.11145313, -0.48844674, -0.050644107, 0.038706005, 0.19390784, 0.035322774, -0.010191005, 0.58071, -0.2856661, -0.009533105), result);\n\tresult = MulAdd(max(f, 0), MF4x4(-0.071486905, -0.036179904, -0.07303894, 0.19301178, -0.11499898, -0.024847068, -0.0027055284, 0.20373714, -0.09671404, -0.020897992, -0.25572056, -0.008931707, -0.13582602, -0.006546881, -0.16154496, 0.26454738), result);\n\tresult = MulAdd(max(g, 0), MF4x4(0.005463064, 0.006769753, 0.0039625713, 0.014121269, -0.068200685, -0.057850275, 0.008622973, 0.061149873, 0.017436448, 0.11660872, -0.02994459, 0.008590145, -0.03223439, 0.052557915, -0.011846354, 0.03523357), result);\n\tresult = MulAdd(max(h, 0), MF4x4(-0.00015264735, 0.0012872831, 0.021878848, 0.022240406, 0.01822283, -0.008284247, -0.018443186, -0.04997753, -0.111760505, -0.20911667, 0.006166832, 0.14597091, 0.02305932, -0.16312876, 0.023375351, -0.028755601), result);\n\tresult = MulAdd(max(i, 0), MF4x4(0.013701143, 0.010794129, 0.0024321147, -0.018976321, 0.0365032, -0.006783485, 0.01046472, -0.08473902, 0.057523903, 0.029831914, 0.0040916028, -0.2046352, 0.03542, -0.034598, 0.0031058635, -0.20746285), result);\n\tresult = MulAdd(max(-a, 0), MF4x4(0.09283864, -0.0035849356, 0.013190911, -0.035437535, 0.035798516, 0.022954805, -0.0029692063, -0.006633743, -0.13456796, -0.011448714, 0.011536131, 0.046695728, -0.0359048, -0.01144856, -0.0027279712, 0.0065755467), result);\n\tresult = MulAdd(max(-b, 0), MF4x4(-0.14295974, -0.0034393691, 0.0051469817, -0.021334402, -0.05882422, -0.003004241, 0.011182507, 0.0015169785, 0.08474255, 0.1255887, -0.23984577, 0.07119401, -0.12547183, 0.038449038, 0.007738907, 0.031506266), result);\n\tresult = MulAdd(max(-c, 0), MF4x4(-0.028237654, 0.010254326, -0.11843009, 0.03034298, -0.038323015, 0.0026470951, -0.060652684, 0.0022312272, -0.022539174, -0.01008126, 0.14868541, 0.02881852, -0.05327277, -0.012296453, -0.21280704, -0.021286633), result);\n\tresult = MulAdd(max(-d, 0), MF4x4(-0.034825645, 0.0877418, -0.009103147, 0.041650586, 0.0135769, -0.005229229, 0.00082947424, -0.0020421906, 0.12402267, 0.007698874, -0.056337915, -0.006580138, -0.018867968, -0.08487179, -0.020938644, -0.029210499), result);\n\tresult = MulAdd(max(-e, 0), MF4x4(-0.37082648, -0.30321857, -0.22912364, -0.07368761, 0.15169628, 0.0013253551, 0.09232649, 0.011408914, 0.06347244, -0.377988, 0.13980117, -0.41065913, -0.00040237256, -0.23220152, -0.03643865, -0.10101427), result);\n\tresult = MulAdd(max(-f, 0), MF4x4(0.10692653, 0.049867555, -0.011915118, -0.10688069, 0.042109665, -0.017163716, 0.10852331, -0.0088934945, 0.06780516, -0.017808875, 0.26564032, 0.0523693, 0.099033475, 0.042864073, 0.18299587, -0.13503626), result);\n\tresult = MulAdd(max(-g, 0), MF4x4(0.07014404, 0.08841395, 0.01895322, 0.0036451078, -0.00933168, 0.044764042, -0.0034986525, 0.010701783, -0.043601245, -0.1375109, 0.0039965697, -0.054331, 0.018830067, 0.040386382, 0.007759782, -0.012478715), result);\n\tresult = MulAdd(max(-h, 0), MF4x4(0.024152381, -0.11462646, 0.07005155, 0.0424638, -0.0048070764, 0.06089261, -0.036675487, 0.057459857, 0.02478629, 0.2926517, -0.08248396, -0.053960845, 0.013205341, 0.09851673, -0.04310949, -0.001428641), result);\n\tresult = MulAdd(max(-i, 0), MF4x4(0.016168298, 0.009701502, 0.0064305146, -0.068672284, -0.044653386, -0.016051823, -0.015055443, 0.032019246, -0.0829852, -0.011304939, 0.0023902296, 0.30322486, -0.023831543, -0.0046928846, 0.026961725, 0.16314326), result);\n\treturn result;\n}\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 outputPt = GetOutputPt();\n\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\tfloat4 c = A4KS4(pos);\n\t\n\tpos -= 0.5f * outputPt;\n\tOUTPUT[gxy] = MF4(c.x + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t++gxy.x;\n\tpos.x += outputPt.x;\n\tOUTPUT[gxy] = MF4(c.y + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\t\n\t++gxy.y;\n\tpos.y += outputPt.y;\n\tOUTPUT[gxy] = MF4(c.w + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t--gxy.x;\n\tpos.x -= outputPt.x;\n\tOUTPUT[gxy] = MF4(c.z + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Upscale_Denoise_UL.hlsl",
    "content": "// Anime4K_Upscale_Denoise_CNN_x2_UL\n// 移植自 https://github.com/bloc97/Anime4K/blob/78e4f78f65b772e94bae6e7db5c49af1e889f784/glsl/Upscale%2BDenoise/Anime4K_Upscale_Denoise_CNN_x2_UL.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Upscale_Denoise_3\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_tf2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_1_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_1_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_1_tf2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_2_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_2_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_2_tf2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_3_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_3_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_3_tf2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_4_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_4_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_4_tf2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_5_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_5_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_5_tf2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_6_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_6_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_6_tf2;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT conv2d_tf, conv2d_tf1, conv2d_tf2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\t\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = { 0.0366252, 0.028346894, 0.033923555, 0.00025824012 };\n\t\t\ttarget1 = MulAdd(src[i - 1][j - 1], MF3x4(-0.21481565, -0.0914136, -0.067639425, -0.13521406, 0.14386347, -0.007917821, -0.0018606511, -0.07272963, 0.09651574, 0.09874618, 0.06434639, 0.1787858), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j], MF3x4(-0.06402414, -0.014693245, -0.25395226, 0.2960157, -0.12494867, 0.17711689, 0.31812787, -0.22346497, -0.1172598, -0.17087954, -0.031076867, -0.26865217), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j + 1], MF3x4(-0.19254248, -0.049369957, 0.08171505, -0.12660322, 0.11544268, 0.15840095, -0.11473022, 0.144489, 0.07068809, 0.041438796, 0.10749463, -0.057156503), target1);\n\t\t\ttarget1 = MulAdd(src[i][j - 1], MF3x4(0.040826935, 0.0030781324, 0.094986334, -0.2573781, -0.11649985, 0.018165307, 0.039985053, -0.15652324, -0.014886749, -0.00988401, -0.15025067, -0.0031970344), target1);\n\t\t\ttarget1 = MulAdd(src[i][j], MF3x4(-0.15658751, 0.08227927, 0.23491348, 0.29900867, -0.45667845, 0.0438649, -0.39066258, 0.6590342, 0.009331404, 0.097770594, 0.21618316, 0.25005254), target1);\n\t\t\ttarget1 = MulAdd(src[i][j + 1], MF3x4(-0.16455166, 0.013149855, 0.21515559, 0.03110101, -0.008973558, 0.33310282, -0.03276024, -0.3356557, 0.007899698, 0.295166, -0.73289853, 0.16696596), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j - 1], MF3x4(0.2691608, 0.09478436, 0.006536417, -0.04095308, -0.10942356, -0.0481289, -0.039660163, -0.20591366, -0.08013109, -0.052268907, 0.046878606, -0.024840442), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j], MF3x4(0.17120434, -0.06828329, -0.23515487, 0.11830264, 0.67815524, -0.10693793, 0.2392081, -0.3192851, 0.06719006, -0.03441811, 0.020009553, -0.21328516), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j + 1], MF3x4(0.30072933, 0.0348702, 0.15155697, -0.15580897, -0.12755825, -0.57249874, -0.10091004, 0.22914392, -0.017671, -0.26088336, -0.00079997425, -0.022365946), target1);\n\n\t\t\tMF4 target2 = { -0.043337345, 0.16099554, -0.030338328, 0.0074565704 };\n\t\t\ttarget2 = MulAdd(src[i - 1][j - 1], MF3x4(0.042849753, -0.11642484, 0.073895186, 0.15186316, -0.024499241, 0.056690346, 0.05013788, -0.10182528, -0.024302427, 0.06578479, -0.028199008, -0.070577), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j], MF3x4(-0.040659044, 0.22913207, -0.1847038, -0.11781796, 0.044752445, 0.009552658, -0.11374249, 0.12798874, 0.056919675, -0.20839268, 0.11021251, 0.044297826), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j + 1], MF3x4(-0.009999239, 0.1996945, -0.29797587, -0.4280957, -0.008521183, -0.10773894, 0.22186345, 0.254737, -0.003993275, -0.07186837, 0.16690473, 0.19043307), target2);\n\t\t\ttarget2 = MulAdd(src[i][j - 1], MF3x4(-0.16174923, 0.26882383, 0.50559163, 0.38955548, 0.14091976, -0.15637094, -0.11826545, -0.23424837, 0.01674066, -0.08578336, -0.16907434, -0.19845173), target2);\n\t\t\ttarget2 = MulAdd(src[i][j], MF3x4(0.10735882, -0.016069679, 0.42237386, -0.19937111, 0.07271503, 0.07596921, -0.24035113, 0.12406044, 0.059160866, -0.051063746, -0.36897844, 0.061272774), target2);\n\t\t\ttarget2 = MulAdd(src[i][j + 1], MF3x4(0.015712388, -0.34878746, -0.66418105, -0.35441992, -0.12208571, 0.042238027, 0.30143425, 0.3610614, -0.09538538, 0.25334427, 0.24629802, 0.030739667), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j - 1], MF3x4(-0.0035519397, 0.07191882, -0.20775351, -0.15425798, 0.07919461, 0.07578178, 0.12668823, 0.0011835548, 0.03245292, -0.105801836, 0.24585879, 0.13730717), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j], MF3x4(0.2415042, -0.16800308, 0.48690978, 0.75166744, 0.3876131, 0.038878918, -0.3293806, -0.47433355, 0.057803743, 0.09533431, -0.1342232, -0.2982094), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j + 1], MF3x4(-0.18697992, -0.60250723, -0.11149202, -0.015566043, -0.57483697, 0.07203411, 0.050863862, -0.078300595, -0.09433572, 0.27099958, -0.03195694, 0.10535165), target2);\n\n\t\t\tMF4 target3 = { -0.51499516, 0.026265146, 0.05636954, 0.03170462 };\n\t\t\ttarget3 = MulAdd(src[i - 1][j - 1], MF3x4(-0.05112635, -0.09334158, -0.031148188, -0.041258592, -0.04633252, 0.022155467, 0.16979018, 0.06819186, 0.094320215, 0.02111737, -0.15604521, -0.15083192), target3);\n\t\t\ttarget3 = MulAdd(src[i - 1][j], MF3x4(0.10213034, 0.41852444, 0.32454407, -0.058512308, -0.054484565, -0.24399261, -0.26164648, -0.34274867, -0.06912002, 0.02257528, 0.2588075, 0.24375258), target3);\n\t\t\ttarget3 = MulAdd(src[i - 1][j + 1], MF3x4(0.019957408, 0.06354756, 0.10109863, 0.16890836, 0.06791468, 0.1259216, 0.3096521, 0.07912831, -0.08293642, -0.16565439, -0.050881315, -0.0576009), target3);\n\t\t\ttarget3 = MulAdd(src[i][j - 1], MF3x4(0.19822149, 0.34747612, -0.20176221, 0.042434175, -0.029007072, -0.1637076, -0.09433387, 0.32732537, -0.12577844, -0.049755163, 0.091352955, 0.27023584), target3);\n\t\t\ttarget3 = MulAdd(src[i][j], MF3x4(-0.26348627, 0.52249527, -0.4091685, -0.41065818, 0.050318573, 0.06534145, -0.15470429, 0.52704567, 0.08808197, -0.37854514, -0.22827432, 0.1498618), target3);\n\t\t\ttarget3 = MulAdd(src[i][j + 1], MF3x4(-0.0865881, -0.8053624, 0.088793345, -0.22072543, -0.0141816195, 0.0049849018, 0.21256319, -0.327414, 0.1364984, 0.4927693, 0.1848864, -0.18559869), target3);\n\t\t\ttarget3 = MulAdd(src[i + 1][j - 1], MF3x4(-0.11838837, 0.056446314, 0.08738398, 0.31899074, 0.056432292, -0.0008520313, 0.018734995, -0.33501405, -0.00918473, -0.040785775, 0.04093389, -0.19747448), target3);\n\t\t\ttarget3 = MulAdd(src[i + 1][j], MF3x4(0.66065794, -0.5208613, -0.018835181, 0.26112127, 0.055486765, 0.113573246, -0.05028873, 0.05364108, 0.040549137, 0.28754827, -0.16565348, -0.37204087), target3);\n\t\t\ttarget3 = MulAdd(src[i + 1][j + 1], MF3x4(0.06361742, 0.00907182, 0.06848412, 0.0057870117, -0.05289465, 0.068106346, -0.15660144, -0.20288356, -0.093512855, -0.17268412, 0.030761726, 0.36189792), target3);\n\n\t\t\tconv2d_tf[destPos] = target1;\n\t\t\tconv2d_tf1[destPos] = target2;\n\t\t\tconv2d_tf2[destPos] = target3;\n\t\t}\n\t}\n}\n\n//!PASS 2\n//!DESC Conv-4x3x3x24\n//!IN conv2d_tf, conv2d_tf1, conv2d_tf2\n//!OUT conv2d_1_tf, conv2d_1_tf1, conv2d_1_tf2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 a3 = conv2d_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = conv2d_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = conv2d_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = conv2d_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = conv2d_tf2.SampleLevel(sam, pos, 0);\n\tMF4 f3 = conv2d_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = conv2d_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = conv2d_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = conv2d_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(-0.117853574, 0.036960166, -0.0057268855, -0.032133963);\n\ttarget = MulAdd(a1, MF4x4(0.028563375, 0.075096495, 0.054740135, -0.097906366, -0.26889417, 0.0982474, 0.0013334368, 0.10432092, 0.2450199, -0.12516013, 0.11230964, 0.01147953, 0.085179225, 0.117808536, -0.123295836, 0.1002614), target);\n\ttarget = MulAdd(b1, MF4x4(0.19004358, 0.077133805, -0.42637873, -0.08600882, 0.041925456, -0.2716079, -0.1856413, 0.017397093, 0.037734076, 0.21233109, -0.2645201, 0.074807495, 0.047724582, -0.027935218, -0.003907437, -0.04731259), target);\n\ttarget = MulAdd(c1, MF4x4(0.09745319, 0.22767977, 0.37006328, 0.05020985, 0.039997175, -0.029447127, 0.1779581, -0.01620031, -0.010955076, 0.13874966, -0.053154904, 0.020808663, -0.11724862, -0.20081818, 0.047436096, -0.08110093), target);\n\ttarget = MulAdd(d1, MF4x4(0.18583415, -0.20435709, 0.01911209, -0.026401127, -0.12581685, 0.014082952, -0.2001187, -0.08042616, -0.10389668, -0.10207221, 0.04581297, -0.08704452, 0.09200634, -0.13755022, -0.007857635, 0.10011377), target);\n\ttarget = MulAdd(e1, MF4x4(0.21004692, 0.30619434, 0.10146727, -0.012386493, -0.093512, -0.22519337, 0.16826348, 0.14847179, -0.019215466, -0.18989901, 0.09468501, 0.26023552, -0.07841198, 0.23280892, 0.00941152, 0.16808987), target);\n\ttarget = MulAdd(f1, MF4x4(0.26988962, -0.022920275, -0.195991, 0.08438454, 0.12282865, -0.07083694, 0.07814293, -0.08369662, -0.05397518, 0.06164561, 0.070263356, -0.049779683, -0.12997615, -0.12259467, -0.29498726, -0.2244981), target);\n\ttarget = MulAdd(g1, MF4x4(0.22414525, -0.022969153, -0.063833915, -0.027190238, 0.13401125, 0.02098015, -0.22264218, -0.12177459, -0.12630488, 0.14246967, -0.06480293, -0.11353247, -0.12755829, -0.02848558, 0.006076032, 0.14054467), target);\n\ttarget = MulAdd(h1, MF4x4(0.13391276, 0.06295799, 0.31367007, -0.19527563, -0.040563866, 0.11965244, 0.27989656, -0.057327088, 0.035627916, -0.119488806, -0.24792899, 0.13612582, 0.029112214, -0.08201902, 0.17605872, -0.089963086), target);\n\ttarget = MulAdd(i1, MF4x4(-0.01927269, -0.034413125, -0.18000118, 0.042171028, 0.0791958, -0.1210223, -0.07674829, 0.02870783, 0.1884872, -0.012900881, 0.1311204, 0.06283302, 0.0027031084, -0.11157234, 0.06318397, -0.13527857), target);\n\ttarget = MulAdd(a2, MF4x4(0.1419255, -0.16276762, 0.00092816725, 0.0078547085, -0.48728654, -0.05630108, -0.33906484, 0.025995376, 0.07410779, -0.06377176, -0.038708985, -0.10480868, 0.096948944, -0.08378831, 0.08217461, 0.126169), target);\n\ttarget = MulAdd(b2, MF4x4(-0.07488089, -0.2994524, 0.23773918, -0.034476187, 0.0592535, 0.29324362, -0.030512415, -0.17258315, 0.08022449, -0.17212203, 0.17636995, 0.06854101, -0.029770015, -0.10313743, 0.46230134, 0.026522856), target);\n\ttarget = MulAdd(c2, MF4x4(-0.018750735, -0.032278806, -0.16665034, -0.05022533, 0.057606205, 0.13155009, 0.06575953, 0.10044875, -0.09888156, 0.263175, -0.3478382, -0.08823663, -0.081383094, -0.044876218, -0.47501948, -0.062558904), target);\n\ttarget = MulAdd(d2, MF4x4(-0.105735146, 0.30434787, -0.04748756, 0.13275737, 0.3215866, -0.097894445, 0.027429244, -0.2778113, 0.07703074, 0.0012649142, -0.54314685, 0.17256977, 0.16500366, -0.0060054287, 0.17721342, -0.37938938), target);\n\ttarget = MulAdd(e2, MF4x4(0.14780188, 0.2596772, 0.31135467, -0.02797583, -0.015622625, -0.006320702, -0.08333076, -0.018904723, 0.1389364, 0.19142458, 0.6817067, -0.054837633, 0.21896258, 0.036575202, -0.9033377, -0.25137353), target);\n\ttarget = MulAdd(f2, MF4x4(-0.12165315, 0.18358506, -0.1983472, 0.08618611, -0.1101336, -0.02491273, 0.36231366, 0.24619159, 0.07281212, 0.35466114, 0.32505757, 0.022900501, -0.25818315, -0.49635252, 0.2928282, 0.057359587), target);\n\ttarget = MulAdd(g2, MF4x4(-0.23839255, 0.1707951, 0.09135314, 0.1034047, -0.034727763, -0.1243241, 0.118879616, 0.06359015, -0.12569816, -0.116403826, 0.13372615, -0.04866488, -0.070711434, 0.21472852, 0.098126635, 0.16186984), target);\n\ttarget = MulAdd(h2, MF4x4(-0.0020077212, -0.1095719, -0.20081437, 0.028084867, -0.1479706, -0.028820625, -0.09085524, 0.118761584, -0.15923466, -0.32149267, -0.50690764, 0.040582787, 0.039979883, 0.026478326, -0.040531024, -0.13908122), target);\n\ttarget = MulAdd(i2, MF4x4(-0.085969776, 0.18301825, 0.11408605, 0.025418868, 0.11126661, -0.044224992, -0.061021794, -0.015779478, 0.10210226, -0.19080523, -0.14473902, 0.14097509, 0.14796504, 0.14814787, 0.11975678, -0.039735712), target);\n\ttarget = MulAdd(a3, MF4x4(0.27801284, 0.20288002, -1.2655782, 0.32888517, -0.02334678, 0.18978934, 0.23810555, 0.0074393786, 0.08552408, -0.1274367, -0.086998045, -0.024746515, 0.102745675, -0.086740054, -0.038129628, -0.0651254), target);\n\ttarget = MulAdd(b3, MF4x4(-1.190979, -0.19575417, -0.569518, -0.17817745, -0.059261408, 0.09253248, -0.27272785, 0.17687175, 0.12146025, -0.07960662, 0.15846346, -0.14022483, 0.007532498, -0.096234165, 0.2769003, -0.14700246), target);\n\ttarget = MulAdd(c3, MF4x4(-0.042687517, 0.022726525, -1.078912, -0.6248177, 0.11832816, -0.1086772, 0.1261872, 0.16775566, -0.05851938, -0.0732127, -0.01822243, -0.009363452, 0.015375079, 0.036912445, 0.11969059, -0.07526642), target);\n\ttarget = MulAdd(d3, MF4x4(0.31373152, 0.0693334, -0.07900261, 0.0070532965, -0.13916558, -0.08116685, -0.85886157, 0.18724924, 0.023858327, -0.2971659, -0.2337722, -0.17136115, 0.034164, 0.09053483, 0.28138685, -0.050052963), target);\n\ttarget = MulAdd(e3, MF4x4(0.69782144, -0.17773196, -1.8466626, -1.029225, -0.010800972, -0.0059786057, 0.7224214, 0.45541716, 0.09066342, -0.13732997, 0.009828377, 0.115971304, 0.13013129, 0.35331696, -0.633545, 0.23484547), target);\n\ttarget = MulAdd(f3, MF4x4(-0.24049048, 0.16627774, -0.020105539, -0.117568016, -0.0043368824, -0.20639539, 0.10247316, -0.037546206, 0.18750127, 0.12931745, -0.14076929, -0.08036072, 0.045171227, 0.19917291, -0.068400174, 0.17796516), target);\n\ttarget = MulAdd(g3, MF4x4(0.09404375, 0.049048338, 0.24326289, 0.17646226, -0.11654813, 0.2592855, 0.32776543, 0.4599728, -0.19997491, 0.11202324, 0.18054682, -0.005742288, -0.036823884, -0.042750888, 0.22441903, 0.038635597), target);\n\ttarget = MulAdd(h3, MF4x4(0.036728445, 0.08352167, 0.08909888, -0.02035385, 0.090846755, -0.14406498, -0.025689734, 0.057863228, -0.04390429, -0.25868183, 0.29578558, 0.30690736, -0.05475277, -0.10149075, -0.034297444, 0.10515887), target);\n\ttarget = MulAdd(i3, MF4x4(-0.062532455, -0.12673786, 0.16426907, -0.25397223, 0.051807977, 0.112844475, -0.496193, -0.2551257, 0.025220035, 0.15157217, -0.08517411, 0.07161397, -0.06691877, -0.13205263, -0.117163956, 0.065052904), target);\n\ttarget = MulAdd(na1, MF4x4(0.07364788, -0.05812666, -0.05958767, -0.027094465, 0.26366132, 0.07415391, 0.040515613, 0.039676376, -0.006552745, -0.012837193, -0.17393842, 0.02813939, -0.121285915, 0.0030941493, 0.16669592, -0.0712934), target);\n\ttarget = MulAdd(nb1, MF4x4(0.03629398, -0.3745122, 0.3940434, -0.06701516, 0.083452255, 0.03055438, 0.15637632, 0.0019212369, 0.019995827, -0.21137866, 0.2645297, -0.09081918, 0.025669578, -0.1560248, -0.10008925, -0.07828463), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.053625695, -0.10420973, -0.35323003, -0.022054465, -0.08156209, 0.008921794, -0.15391788, -0.03960033, 0.017107122, -0.13479686, 0.068978906, -0.12981713, 0.025973944, -0.09934198, -0.022112468, 0.020573085), target);\n\ttarget = MulAdd(nd1, MF4x4(0.0018295953, 0.13670065, 0.004993195, 0.059238344, -0.13972434, -0.13108826, 0.1942548, 0.18194143, -0.12335718, 0.024078835, -0.13328132, 0.06978434, -0.0107950205, 0.14398722, -0.022609226, -0.0041353432), target);\n\ttarget = MulAdd(ne1, MF4x4(0.27635157, 0.15513352, -0.12534688, 0.15107392, 0.22048512, -0.044253547, -0.1429736, -0.39647785, 0.029876633, 0.1842563, -0.06762048, -0.06029809, 0.07537981, -0.035769306, -0.0261646, -0.110136114), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.12261548, 0.22167495, 0.18503761, 0.02638229, -0.094690226, 0.061862398, -0.081829205, 0.15912767, 0.006990079, -0.010121606, -0.12535281, 0.024284743, 0.18360399, 0.16907142, 0.25744098, 0.24359013), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.14717774, -0.09528236, 0.054552622, 0.0036530807, -0.5273358, -0.03762757, 0.21280535, 0.25522852, 0.20926028, -0.022236722, 0.0377064, -0.07160359, 0.06345197, -0.046687063, 0.021401843, -0.14337662), target);\n\ttarget = MulAdd(nh1, MF4x4(0.17630331, 0.06953194, -0.26126865, 0.029734965, 0.13158317, -0.11239223, -0.2805452, 0.106054045, -0.053220887, 0.09541345, 0.26539528, 0.15052572, 0.042701412, -0.025114734, -0.22815101, 0.06797245), target);\n\ttarget = MulAdd(ni1, MF4x4(-0.11562362, 0.037828114, 0.15033676, 0.006264337, -0.049709305, 0.13406959, 0.055033628, -0.11243884, -0.18540126, 0.04862983, -0.13387235, -0.13529298, -0.096242204, 0.16761206, -0.032110162, 0.24142851), target);\n\ttarget = MulAdd(na2, MF4x4(-0.21116647, 0.058380276, 0.080453075, -0.2679615, -0.28600135, 0.042669408, 0.17540424, -0.14219923, 0.017092299, 0.05328859, 0.0065248194, 0.02395608, 0.05216899, 0.12829328, -0.116384834, -0.2828383), target);\n\ttarget = MulAdd(nb2, MF4x4(0.009241691, 0.10957236, -0.22526564, 0.2957556, -0.025253482, -0.08254481, 0.09223265, -0.051697835, -0.071490794, 0.094247855, -0.32692534, -0.12678702, 0.052934665, -0.050429285, -0.18388982, -0.039230555), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.16137493, -0.04317478, 0.11681715, 0.16198912, -0.048432272, -0.22682366, -0.01725331, -0.04194597, 0.03203572, -0.16799524, 0.4784258, 0.086616606, 0.0017708768, -0.049688417, 0.064586475, -0.057059586), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.11059055, 0.0029538488, 0.038545247, 0.066895224, 0.011218007, -0.003137218, 0.021355668, -0.168016, -0.0026601932, -0.14172328, 0.51700294, -0.33690482, -0.18839404, 0.07191177, -0.05362303, 0.20618927), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.24159928, -0.1053597, -0.28113043, 0.007160803, -0.0974629, 0.020222154, 0.050444435, -0.11046227, 0.24656764, -0.24290104, -0.53290504, 0.07402318, -0.015612266, 0.123455755, 0.018084416, -0.019945476), target);\n\ttarget = MulAdd(nf2, MF4x4(0.09311286, -0.1032696, 0.19615465, 0.04846074, 0.029715529, 0.012683276, -0.38939312, -0.15030165, 0.0103463745, -0.3906085, -0.5047903, -0.1061866, 0.20654117, 0.32689643, 0.0086037805, -0.0681904), target);\n\ttarget = MulAdd(ng2, MF4x4(0.18691367, -0.046374205, -0.05107187, -0.017465474, 0.11804314, 0.090009406, -0.075490244, 0.0036797172, -0.09327475, 0.18428694, -0.17598015, -0.076990046, 0.03992913, -0.116993815, -0.24077141, -0.48880583), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.0056006587, 0.104048744, 0.19665402, 0.0032775581, 0.15130368, 0.04196182, 0.050959308, 0.02474336, 0.036360126, 0.2724413, 0.35197738, 0.04588593, -0.24590112, -0.08575977, 0.18552561, 0.16555585), target);\n\ttarget = MulAdd(ni2, MF4x4(0.09420384, -0.113198765, -0.13239664, 0.019001532, -0.0027163615, 0.078038216, 0.09880948, 0.15455763, -0.028529879, 0.20345445, 0.27439958, -0.094165966, -0.10702775, -0.18507981, -0.10240351, -0.02831745), target);\n\ttarget = MulAdd(na3, MF4x4(-0.05168434, 0.20330708, 0.10572813, 0.26246095, 0.021435333, -0.10574623, -0.1401922, 0.42713496, -0.030233249, 0.043342397, 0.11101976, 0.032030135, -0.12287885, 0.006734168, 0.024990475, -0.05208304), target);\n\ttarget = MulAdd(nb3, MF4x4(0.15237613, -0.15887943, -0.12718262, -0.06986501, 0.03136358, -0.0035889314, 0.2054987, -0.14852847, -0.22284113, -0.3410994, -0.2125513, 0.04496407, 0.094411716, -0.16842332, -0.25714603, 0.08910682), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.19709085, -0.10590203, 0.07929334, 0.09949157, -0.0808941, 0.17018095, -0.09984616, -0.03477169, 0.11511119, 0.016829535, 0.05470175, 0.000366129, -0.07609101, -0.10981034, -0.14416353, -0.012299061), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.12151653, -0.017303294, 0.055218883, 0.048941534, 0.1476368, 0.31801772, 0.68790305, 0.13284543, 0.11992122, -0.2362068, 0.20126005, 0.14724149, 0.01645638, 0.05896895, -0.30263412, 0.12367781), target);\n\ttarget = MulAdd(ne3, MF4x4(0.19272023, 0.09102746, 0.31454524, -0.27032062, 0.2674956, 0.040032856, -0.670905, -0.12510742, -0.02879305, 0.34733048, 0.055205155, -0.22118829, 0.18704127, -0.27267426, 0.59989405, -0.14810604), target);\n\ttarget = MulAdd(nf3, MF4x4(0.025540218, -0.07248532, -0.15664534, -0.19372375, 0.03556883, 0.03597721, -0.14901096, 0.27721658, -0.010668913, -0.29144233, 0.11746931, -0.13459797, 0.005971381, -0.08445966, 0.14954261, -0.11475002), target);\n\ttarget = MulAdd(ng3, MF4x4(0.08029168, -0.061888658, -0.14104845, -0.06396443, 0.15312983, -0.2487142, -0.26357505, -0.049171742, 0.11320337, -0.055089038, -0.145923, -0.44234648, 0.03747512, 0.09540022, -0.20250735, 0.03820108), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.0191974, -0.05480732, -0.1930927, 0.01147343, -0.15684529, 0.28367257, -0.15252224, 0.45261058, 0.13849851, 0.08685002, -0.33513635, -0.14976694, 0.07475008, 0.01998271, 0.066315226, -0.13143158), target);\n\ttarget = MulAdd(ni3, MF4x4(0.07728802, 0.14218356, 0.0850198, 0.09061631, -0.27746883, -0.18180014, 0.52573866, 0.19462089, 0.015337635, -0.3014013, 0.13493168, -0.055304635, 0.07148734, 0.10548237, 0.034149908, -0.12699014), target);\n\tconv2d_1_tf[gxy] = target;\n\t\n\ttarget = MF4(0.06651301, -0.00047524707, 0.04855725, -0.15500803);\n\ttarget = MulAdd(a1, MF4x4(0.04775777, 0.08222661, 0.061593954, 0.12055235, 0.008962983, -0.009267361, -0.53843796, 0.16952439, 0.016025536, 0.10542892, -0.042894494, 0.057321973, -0.055204723, -0.06992498, -0.00064485346, 0.007825405), target);\n\ttarget = MulAdd(b1, MF4x4(-0.09411942, -0.23469426, 0.35026586, -0.22138432, 0.045611277, -0.20210607, -0.24638987, 0.22675677, -0.14620386, 0.04001241, 0.06581148, -0.18093623, 0.08063868, 0.16085242, -0.28524494, -0.04407303), target);\n\ttarget = MulAdd(c1, MF4x4(0.016880078, 0.10823597, -0.0856685, 0.1394186, -0.035895467, 0.13400109, 0.08679763, 0.11814033, 0.06898399, 0.01606696, 0.01784015, 0.006547478, -0.042100497, 0.039176684, -0.09559512, -0.19490835), target);\n\ttarget = MulAdd(d1, MF4x4(-0.10115389, -0.11022993, -0.004623271, 0.12206448, -0.040075306, 0.013587107, -0.059400085, 0.18945488, -0.009945642, -0.4523725, 0.20760842, -0.3546684, 0.10930277, 0.14101993, 0.17574343, 0.005993813), target);\n\ttarget = MulAdd(e1, MF4x4(-0.31806734, 0.31059268, 0.0034255723, -0.23206042, 0.26745492, 0.19362858, 0.12183108, 0.29931548, 0.09186783, 0.4084161, 0.04199913, -0.23650031, -0.14427313, -0.036473513, 0.11935153, 0.113769025), target);\n\ttarget = MulAdd(f1, MF4x4(0.20892154, -0.08097856, -0.20722318, -0.18344022, -0.05412969, 0.16550343, 0.12085539, 0.10199144, 0.112941146, 0.08606901, -0.036151443, -0.036627453, -0.12987532, -0.28756067, -0.06838574, -0.23512506), target);\n\ttarget = MulAdd(g1, MF4x4(-0.052661214, -0.104233526, -0.08693217, -0.1819736, -0.052437317, -0.15960887, 0.056683555, -0.040860362, -0.13381086, 0.13378991, -0.073331766, 0.047169458, -0.0479799, -0.0043481477, 0.0048899767, 0.019455308), target);\n\ttarget = MulAdd(h1, MF4x4(-0.13005687, 0.11126603, 0.09237425, 0.07877169, -0.042795215, -0.0542181, -0.056731407, 0.08586777, 0.08175868, -0.019688416, -0.104517676, 0.16199689, 0.0044128234, 0.0475487, 0.12852396, 0.024199896), target);\n\ttarget = MulAdd(i1, MF4x4(0.16616863, -0.16998464, -0.19154428, -0.09432494, -0.037008844, -0.12210065, 0.0055908067, 0.010815051, 0.17710204, -0.12695597, -0.110427454, 0.13080561, 0.09322074, -0.0012365612, 0.026606066, -0.10843771), target);\n\ttarget = MulAdd(a2, MF4x4(-0.47415322, -0.07343328, -0.041209448, 0.08565837, -0.17691295, -0.26137534, 0.2907085, 0.0946057, -0.10768325, -0.10086646, 0.13768727, -0.1253546, 0.12256107, 0.092663676, 0.006136057, 0.10492505), target);\n\ttarget = MulAdd(b2, MF4x4(-0.36130214, 0.31970572, 0.01609707, 0.12488642, 0.09801414, 0.18358822, 0.08739752, 0.031744014, -0.07303357, -0.06802441, -0.05988708, -0.26767713, 0.08153729, 0.24952291, 0.12436414, -0.0748625), target);\n\ttarget = MulAdd(c2, MF4x4(-0.09533404, -0.14277202, 0.0020947633, 0.1547468, -0.009082152, 0.025103271, 0.032984417, -0.120028794, -0.045810502, -0.2012922, -0.02991531, -0.13404511, 0.08140658, 0.064424135, 0.104641765, 0.067367226), target);\n\ttarget = MulAdd(d2, MF4x4(0.053343832, -0.16905542, -0.05830104, -0.106561475, -0.078095205, -0.054910798, 0.061377183, 0.1524315, -0.16384287, -0.019450802, 0.13370255, -0.05160498, 0.15796599, 0.17254125, -0.12769255, 0.15248339), target);\n\ttarget = MulAdd(e2, MF4x4(-0.050160643, 0.005053776, -0.031104388, 0.09726363, -0.07693938, 0.102812484, -0.0756477, -0.048515156, 0.29591817, 0.35934618, 0.23326933, -0.23171274, -0.30232304, -0.43113515, -0.14196996, 0.28424993), target);\n\ttarget = MulAdd(f2, MF4x4(-0.10621949, -0.4280808, -0.08031358, -0.15168424, 0.26016018, 0.3142917, -0.11831494, -0.09303453, 0.10852745, -0.24068268, -0.037653822, -0.104800984, 0.0067478805, 0.14183025, -0.02230052, 0.2649731), target);\n\ttarget = MulAdd(g2, MF4x4(0.028874233, 0.12075906, 0.059678186, -9.616167e-05, -0.11149614, 0.122945406, -0.0767243, -0.040111836, 0.0735182, 0.21608177, 0.07806742, 0.0202061, -0.04776724, -0.11418923, -0.07523717, -0.12865649), target);\n\ttarget = MulAdd(h2, MF4x4(0.13507326, 0.06364227, 0.09873092, 0.038835276, 0.053677257, -0.036088385, -0.09081554, 0.02088773, 0.12252468, 0.15228558, 0.20928514, 0.09626035, -0.092850804, 0.12056272, -0.12500086, 0.14586885), target);\n\ttarget = MulAdd(i2, MF4x4(0.05855229, 0.11076543, 0.0058000707, -0.05286595, 0.06674972, -0.1913259, -0.04221818, 0.02681795, 0.18707529, -0.014904326, -0.1690741, 0.010544146, -0.07513052, -0.010648717, 0.15841635, 0.017503424), target);\n\ttarget = MulAdd(a3, MF4x4(0.09306208, -0.6048318, -0.16323692, -0.26322865, -0.064382344, 0.27984452, 0.0035378935, -0.0036242867, -0.08108908, 0.03801275, 0.09272382, 0.04653927, -0.09639203, 0.15146226, -0.022994163, -0.023005866), target);\n\ttarget = MulAdd(b3, MF4x4(0.03692586, -0.1367785, -0.051587723, 0.35746527, -0.05847086, -0.28233027, -0.31080168, 0.08979567, -0.057873387, -0.11724922, 0.11995725, -0.076051556, 0.12823316, 0.20808434, -0.07491586, -0.04471266), target);\n\ttarget = MulAdd(c3, MF4x4(0.17172146, -0.05962528, 0.10311508, -0.083008684, 0.017513666, 0.22941439, 0.08524968, -0.10340499, 0.047763754, 0.044772595, -0.087630406, -0.03647204, -0.043207247, -0.063256174, 0.14618406, 0.016736707), target);\n\ttarget = MulAdd(d3, MF4x4(0.014591894, -0.16730154, 0.019834492, -0.2323314, 0.2671534, -0.14437476, -0.10937011, -0.10888569, -0.16981846, -0.02661075, 0.011989267, 0.06811342, 0.084967375, 0.22203213, 0.05655957, -0.047086637), target);\n\ttarget = MulAdd(e3, MF4x4(-0.5673005, -0.54090023, 0.03939861, 0.008678989, -0.06290456, 0.2747319, -0.09248065, -0.06692429, -0.029515319, 0.08507081, -0.06997918, 0.16636486, 0.04376864, -0.606549, -0.16454232, 0.0572748), target);\n\ttarget = MulAdd(f3, MF4x4(-0.048000906, 0.3200884, -0.23506963, 0.15561248, -0.06658933, 0.18984286, 0.018985203, -0.018811712, 0.107549496, -0.24059664, 0.112164706, -0.14813146, 0.08943945, 0.030038312, 0.01712719, -0.06440537), target);\n\ttarget = MulAdd(g3, MF4x4(-0.04633894, 0.06511225, -0.006903819, 0.3651269, -0.05099921, 0.13553265, -0.07041649, 0.051354278, -0.026775079, 0.071171924, -0.10163997, 0.056618143, 0.121235944, 0.04077609, -0.006905747, 0.055543922), target);\n\ttarget = MulAdd(h3, MF4x4(-0.1529992, -0.07230882, 0.020437848, -0.15099072, 0.091357104, 0.10063594, 0.048747428, -0.07472622, 0.35976312, 0.110254094, -0.23728304, 0.32811522, 0.05135238, -0.124221064, 0.05848079, 0.0090888655), target);\n\ttarget = MulAdd(i3, MF4x4(0.10010241, -0.1336736, -0.0735869, 0.09731084, -0.23581249, -0.13519719, 0.2017027, 0.0660746, 0.073186494, 0.0008078537, 0.052478943, 0.031610224, 0.094252445, 0.14641911, -0.0314029, -0.070713595), target);\n\ttarget = MulAdd(na1, MF4x4(-0.001959657, -0.090372644, -0.1899317, -0.18170601, -0.015885344, -0.016746698, -0.17908786, 0.12600435, 0.13394068, -0.45021582, -0.059900366, -0.045920644, 0.0831188, 0.07898813, -0.058199428, 0.010207674), target);\n\ttarget = MulAdd(nb1, MF4x4(0.10158406, 0.34609744, -0.4304491, -0.039079092, -0.053127635, 0.32419643, 0.16021784, -0.02009982, 0.22342832, 0.25363946, -0.10637694, 0.084691174, 0.1643795, -0.11600526, 0.048834067, 0.007816396), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.030290471, -0.12146855, -0.098269686, -0.14657338, 0.024690658, -0.059267156, -0.04505794, -0.0884074, -0.048493493, -0.07872248, 0.024751894, 0.021942955, 0.026951233, -0.05689244, 0.1141836, 0.086177684), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.024428055, 0.1539053, 0.035455618, -0.11955061, -0.32286185, -0.046298236, -0.29223973, 0.3565024, 0.19302315, -0.35743472, -0.108984865, -0.041046027, -0.0797479, -0.11923923, -0.11282003, 0.048069157), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.0021274649, -0.24638395, -0.051017568, 0.07722604, -0.13842508, -0.14636074, -0.09374905, 0.08258244, -0.09629832, 0.16782042, 0.036874052, -0.0015951502, 0.036216017, 0.09414314, -0.066247694, -0.051199514), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.20425437, -0.08040027, -0.1613387, 0.06440151, 0.029663296, -0.20683208, -0.058772508, -0.0026178176, -0.15718235, -0.14013653, 0.005723365, 0.09514025, 0.07905292, 0.188446, 0.16387165, 0.1911544), target);\n\ttarget = MulAdd(ng1, MF4x4(0.07689394, 0.18216269, -0.02506441, 0.21607292, 0.14311059, 0.06318058, -0.081483, 0.28077206, 0.03948571, 0.17749293, 0.04567801, -0.07832511, 0.057806063, -0.0427108, 0.06306852, 0.0066801202), target);\n\ttarget = MulAdd(nh1, MF4x4(0.04399039, -0.07077558, -0.0015600047, -0.118459396, 0.060310606, 0.13951941, 0.2013669, -0.021006014, -0.15264805, 0.26732397, 0.035647463, -0.002574387, -0.065619715, -0.05531379, -0.048837233, -0.059936836), target);\n\ttarget = MulAdd(ni1, MF4x4(-0.05266133, 0.1071349, -0.053710256, -0.016416542, 0.022659063, -0.029553248, 0.09507555, 0.028677419, -0.20630527, 0.0651505, 0.077009074, -0.096268155, -0.14078818, 0.032669708, -0.01846629, 0.028775593), target);\n\ttarget = MulAdd(na2, MF4x4(-0.30971712, 0.19178517, 0.10254193, -0.12659942, 0.17826228, -0.26435316, -0.16852173, 0.04514394, 0.08112456, 0.11184146, -0.028571317, -0.030222327, 0.026687294, 0.17175198, 0.017020982, 0.0100025395), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.1281852, -0.13685723, 0.046906084, -0.09659713, -0.02647301, 0.08286363, -0.19404687, -0.019731732, 0.12224579, -0.20480815, 0.08022694, 0.024619367, -0.040805798, -0.06307641, 0.07815454, 0.007009711), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.036796696, 0.118744195, 0.020730056, -0.12533775, 0.018716114, 0.0073301513, 0.036968995, 0.009758767, 0.124895856, 0.105648, 0.1285451, 0.14944635, -0.22190575, -0.13435498, -0.07461175, -0.055744182), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.41541776, 0.20976903, 0.089350834, 0.26153743, 0.050798908, 0.14616759, -0.06876315, -0.095800444, 0.21727456, -0.0044885483, -0.14532812, -0.03674323, -0.263549, 0.021403335, 0.090946734, 0.13801022), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.20373783, 0.23166335, 0.12597165, -0.041975934, -0.10023279, -0.08657454, 0.16618101, 0.079674155, 0.018388273, -0.5596407, -0.04870662, -0.23710895, 0.18640874, 0.57623607, -0.02575096, 0.28287143), target);\n\ttarget = MulAdd(nf2, MF4x4(0.1625267, 0.343577, -0.04365838, 0.052335635, -0.2559281, -0.27649525, 0.13431759, 0.03831019, -0.03469164, 0.12000331, 0.073944256, -0.0061821216, 0.012677158, -0.1627391, 0.06749103, -0.20975526), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.05379292, -0.10857011, 0.008266894, -0.012603182, 0.04662801, -0.070871636, 0.084626876, 0.16364849, -0.06294956, -0.06461058, -0.063480906, -0.044693593, 0.1537702, 0.079038486, 0.10722227, 0.16421016), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.13676143, -0.117330894, -0.03341758, 0.052417997, -0.069416024, -0.005539735, 0.027587742, -0.01569091, 0.031894185, 0.019352077, -0.14948286, -0.09691313, -0.10240472, -0.06529738, 0.20694919, 0.04939535), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.046459045, -0.2141496, -0.0023247367, 0.05856765, 0.0020768675, 0.19858378, 0.03415911, -0.021161001, -0.09474892, 0.09751605, 0.24057122, -0.085236825, 0.17543921, -0.09822015, -0.15396087, 0.024678698), target);\n\ttarget = MulAdd(na3, MF4x4(0.040772438, -0.025752101, -0.03428472, 0.061078012, -0.1637086, 0.019983971, -0.018367078, -0.08065508, -0.025617149, -0.041705422, -0.02537782, 0.103540875, 0.13783963, -0.056066163, 0.028678486, -0.025464006), target);\n\ttarget = MulAdd(nb3, MF4x4(0.16858733, -0.4178858, -0.30253845, -0.11040479, 0.0029255438, 0.44697702, 0.03196007, -0.02552841, 0.126962, -0.009455916, -0.04901387, 0.04048729, -0.07694209, -0.21343406, 0.02947534, -0.11690606), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.15951762, 0.34968317, 0.08819681, 0.15680845, -0.072727524, -0.26647118, -0.253673, 0.058939222, 0.05429744, 0.003959121, 0.051335268, -0.030295422, -0.0600908, 0.030300785, -0.13709414, -0.050647613), target);\n\ttarget = MulAdd(nd3, MF4x4(0.031981096, 0.056341853, 0.006849355, 0.10382841, -0.2824565, 0.4246147, -0.057729505, 0.058494158, 0.39074966, -0.017238816, -0.15450741, 0.087315544, -0.1110259, -0.1719534, -0.053078342, 0.009343979), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.041215084, 0.2654432, 0.1962931, 0.16274457, -0.08469727, -0.28789485, 0.05036308, -0.085442595, 0.12922712, -0.20311458, 0.38513032, -0.067850955, -0.025917724, 0.5953373, 0.12789808, 0.04950751), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.08700668, -0.2649261, -0.095573485, -0.07602774, 0.04200743, -0.23400396, -0.186786, -0.123978846, 0.022072228, 0.18627988, -0.0038654353, 0.18318067, 0.034251608, -0.008562812, -0.035015855, -0.043611784), target);\n\ttarget = MulAdd(ng3, MF4x4(0.10827922, -0.03552119, 0.06193929, -0.18593708, 0.047373053, -0.2638056, 0.10326646, -0.040205717, 0.24228886, -0.0551458, 0.15253973, -0.215037, -0.07719752, -0.09540623, 0.028147982, -0.06663598), target);\n\ttarget = MulAdd(nh3, MF4x4(0.033009805, -0.044830184, 0.050585333, 0.07272593, -0.057132445, -0.30405456, -0.14489187, 0.015766555, -0.096756496, -0.13879722, 0.16658057, -0.0430357, -0.06502151, 0.05498304, -0.10471709, 0.10994919), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.07091344, -0.01140124, -0.020643137, -0.067839414, -0.019193463, 0.07130566, -0.024614796, -0.09281402, -0.14832619, 0.18952662, 0.14351283, 0.11984917, 0.0012140581, -0.18912585, 0.07516603, -0.049291328), target);\n\tconv2d_1_tf1[gxy] = target;\n\n\ttarget = MF4(-0.062370587, 0.08095664, -0.05361836, 0.18749565);\n\ttarget = MulAdd(a1, MF4x4(0.046912298, 0.12213301, -0.05918361, 0.052398715, 0.117780685, -0.19340032, -0.26262107, 0.09843582, 0.16532594, 0.034989428, 0.118674256, -0.01665863, 0.01827071, 0.04668548, 0.022670027, -0.06799), target);\n\ttarget = MulAdd(b1, MF4x4(-0.40916896, 0.3377319, 0.029743252, 0.11290685, -0.07931422, -0.28883788, 0.3388208, -0.14807604, -0.33062622, 0.07752993, 0.049297906, -0.05600763, -0.14054057, 0.023377405, -0.0025995467, -0.14438824), target);\n\ttarget = MulAdd(c1, MF4x4(0.07433483, -0.20579776, 0.03441041, -0.039957307, 0.04162799, 0.07110215, -0.0790704, 0.08862456, 0.01354682, 0.008087094, -0.07781531, -0.0068795225, -0.27620977, 0.09188319, -0.0017635573, -0.057698507), target);\n\ttarget = MulAdd(d1, MF4x4(-0.18007079, 0.061591875, -0.06492421, 0.039863963, 0.09325244, -0.14426552, -0.13588732, 0.004743928, 0.12880403, 0.115125105, -0.01579009, -0.1262388, 0.23080756, 0.12070204, 0.11815605, -0.29426062), target);\n\ttarget = MulAdd(e1, MF4x4(0.1900564, 0.0071030534, 0.15973419, -0.30519736, -0.25476542, 0.0012610232, 0.09859447, -0.027793204, 0.11796082, 0.22148512, -0.02944728, -0.2323803, -0.072938465, 0.17895398, -0.2180017, 0.00051390607), target);\n\ttarget = MulAdd(f1, MF4x4(0.14343776, -0.18127762, -0.1516819, -0.18503034, 0.13295251, 0.16055906, 0.001688556, 0.15969595, 0.069709465, -0.096013926, -0.0023911218, -0.06369028, -0.0918679, 0.010184961, 0.32301244, -0.5343658), target);\n\ttarget = MulAdd(g1, MF4x4(-0.22987153, 0.013441173, -0.0016071151, 0.04102444, 0.23534702, 0.035319816, 0.0796226, 0.030342614, 0.111898474, 0.16501214, 0.06689771, 0.115711525, -0.12146473, 0.09451704, 0.019306619, 0.047459804), target);\n\ttarget = MulAdd(h1, MF4x4(0.09487664, -0.1618273, -0.008389976, -0.19419155, -0.26922193, -0.02975308, -0.0045531704, 0.05960872, -0.0601089, -0.14437221, 0.04238319, 0.15810688, -0.13148667, -0.15829994, -0.088278085, -0.21758209), target);\n\ttarget = MulAdd(i1, MF4x4(-0.14536136, -0.07484773, 0.037670642, 0.1888735, 0.0018068363, -0.059262045, -0.018976264, 0.027972398, -0.14075996, -0.109049946, -0.25289303, -0.016418003, -0.06421179, -0.15405136, -0.13614438, -0.20679462), target);\n\ttarget = MulAdd(a2, MF4x4(-0.24795865, -0.13466923, 0.1273892, 0.091988094, 0.22714299, 0.28389248, 0.10408641, -0.03565174, 0.10762112, 0.27623466, 0.025095293, -0.019155044, 0.022266177, -0.103916764, 0.02987535, -0.08026279), target);\n\ttarget = MulAdd(b2, MF4x4(-0.10837975, -0.21041337, 0.38324556, 0.34692577, -0.049697887, 0.1109414, 0.015196173, -0.13062784, -0.110540874, 0.085793406, 0.12470218, -0.034204576, 0.15388155, -0.10489124, -0.014710256, -0.024052056), target);\n\ttarget = MulAdd(c2, MF4x4(0.14277099, -0.08891012, 0.12166876, 0.005790089, 0.0022349167, -0.06719074, 0.0009688607, -0.06891284, -0.10870797, 0.031759914, 0.07620448, 0.025514454, 0.07622103, -0.017910544, -0.1925603, -0.020678718), target);\n\ttarget = MulAdd(d2, MF4x4(0.3488881, -0.3531885, -0.02848998, -0.105604745, 0.13216074, 0.059472002, 0.00468112, -0.003199541, -0.13952927, 0.12537865, 0.059789866, 0.047229134, 0.062295817, -0.20364402, -0.10756547, 0.010344998), target);\n\ttarget = MulAdd(e2, MF4x4(0.054537307, 0.003383981, -0.14703383, 0.23609836, 0.071702175, -0.03523012, -0.15024048, -0.15333411, -0.006573282, -0.17805523, 0.027630433, -0.10086782, -0.038341325, 0.16954458, -0.06587281, 0.061757658), target);\n\ttarget = MulAdd(f2, MF4x4(-0.14850424, -0.039801933, 0.091273226, 0.01890946, -0.074723765, -0.19870473, -0.10696538, 0.075856574, 0.18456846, -0.0575884, -0.19248867, 0.23468357, -0.06493671, 0.24994756, 0.2669619, -0.09178425), target);\n\ttarget = MulAdd(g2, MF4x4(0.05370938, -0.17381185, -0.06286066, -0.1121635, -0.124206446, 0.08903896, 0.01332919, 0.033238333, 0.10354104, 0.05441239, 0.093867265, -0.09941308, -0.13401549, -0.051170647, -0.05475329, 0.18579331), target);\n\ttarget = MulAdd(h2, MF4x4(0.17690988, 0.09592665, 0.0041792435, -0.012296416, -0.043736733, -0.19874738, -0.039244816, 0.093517475, 0.19160083, 0.0072470056, 0.20383999, -0.1518599, -0.056091193, -0.08362639, -0.13275301, 0.27358964), target);\n\ttarget = MulAdd(i2, MF4x4(0.03788787, 0.0504576, 0.011746947, -0.050620113, -0.13353047, 0.027618041, -0.015241799, 0.07525403, -0.016854452, -0.15185213, -0.23187985, 0.07745663, 0.019076057, 0.10091556, 0.22063738, -0.19460426), target);\n\ttarget = MulAdd(a3, MF4x4(0.4485975, -0.036630977, 0.08908842, -0.041333213, -0.33832982, -0.013137168, -0.12192155, 0.084681444, 0.05839531, 0.13613869, 0.01453744, -0.0015414358, 0.0554445, -0.0350119, 0.06942154, -0.09860217), target);\n\ttarget = MulAdd(b3, MF4x4(-0.6445962, -0.04228771, 0.018886134, 0.19037853, 0.18697917, 0.08801122, 0.023849122, 0.00056543655, -0.1744559, -0.039909426, -0.015196202, 0.09911629, -0.19838926, -0.20182554, 0.030066699, -0.061113726), target);\n\ttarget = MulAdd(c3, MF4x4(-0.28461948, -0.08841962, -0.03426622, 0.22100773, 0.10822605, 0.097787164, -0.035841815, 0.05503456, -0.038095083, -0.033080425, 0.059760638, -0.04379428, 0.016105307, 0.0015185064, -0.021058328, 0.07868167), target);\n\ttarget = MulAdd(d3, MF4x4(-0.09884352, 0.226838, 0.0069547887, -0.31872275, 0.051640913, -0.103925325, -0.033120554, -0.19772157, -0.33196652, 0.10513085, 0.008538118, -0.0693001, 0.3184994, -0.073985405, 0.0021704638, -0.20955746), target);\n\ttarget = MulAdd(e3, MF4x4(0.09394457, -0.37714124, -0.45972842, 0.11636775, 0.15764596, 0.14252996, -0.16795024, 0.04769986, 0.31756726, -0.0994127, 0.36237487, -0.12276988, 0.062678345, 0.11386392, -0.18050511, -0.029450653), target);\n\ttarget = MulAdd(f3, MF4x4(0.10891149, 0.23599482, 0.19260155, -0.01750993, -0.04561139, 0.040145233, 0.11951016, 0.008283346, -0.060648404, -0.1730897, -0.011636677, -0.2882733, 0.03563051, 0.15347542, -0.21334615, 0.17908043), target);\n\ttarget = MulAdd(g3, MF4x4(-0.04223735, -0.106301874, 0.101336, 0.047846835, -0.1828391, -0.1129037, -0.034007143, 0.106865816, 0.05654089, -0.02757468, -0.012872868, 0.07485427, 0.086521536, -0.009762037, 0.08281756, -0.015632132), target);\n\ttarget = MulAdd(h3, MF4x4(-0.2240338, 0.031013511, -0.09923691, -0.0038778447, -0.058668714, -0.01593757, 0.05261272, -0.016138611, -0.0143839605, 0.023330573, 0.024790224, 0.09925016, -0.08682536, 0.11822586, -0.055234805, -0.32288945), target);\n\ttarget = MulAdd(i3, MF4x4(0.27888787, -0.0025142857, -0.17712368, -0.067581266, 0.10133261, 0.1115825, 0.015883798, -0.24481313, -0.10126581, 0.06092374, -0.0786993, 0.16768995, 0.053283595, 0.08446579, -0.032040086, 0.046178747), target);\n\ttarget = MulAdd(na1, MF4x4(-0.04943332, -0.027568894, -0.017933179, -0.13208579, 0.16813855, -0.06046279, 0.03472982, 0.24612981, -0.03915912, -0.120075725, -0.08060205, 0.106469646, 0.103227176, 0.000895164, -0.028227922, -0.059619144), target);\n\ttarget = MulAdd(nb1, MF4x4(0.10014512, -0.11341153, 0.0827132, -0.10706114, 0.076696716, 0.383278, -0.08201294, 0.14486443, 0.036368996, -0.07771363, 0.008495598, 0.0022753903, -0.13788359, -0.038493663, -0.051340178, 0.06483918), target);\n\ttarget = MulAdd(nc1, MF4x4(0.12283316, 0.22500943, -0.20364822, 0.117888406, 0.052540295, -0.016513767, -0.008835836, -0.008336872, 0.008117048, -0.014924188, 0.070445575, -0.011796183, 0.120677724, -0.08490536, -0.040835287, 0.021124307), target);\n\ttarget = MulAdd(nd1, MF4x4(0.07237057, -0.07651541, -0.07781679, -0.046119276, -0.29511476, -0.15473935, 0.12942854, -0.037749447, 0.055873062, 0.081330314, -0.115750924, -0.1830763, -0.35462645, -0.11207306, -0.14393376, 0.18869524), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.05859993, 0.09575829, -0.10934191, 0.1593984, 0.014064624, 0.23580766, -0.12417294, -0.0774491, -0.23603149, -0.17111291, 0.20246223, 0.24380091, 0.3189054, -0.21762544, 0.053053148, -0.057418585), target);\n\ttarget = MulAdd(nf1, MF4x4(0.056782614, 0.2491224, 0.15162024, 0.25830385, -0.045144927, -0.067923054, -0.12930688, -0.049425337, 0.0071653076, 0.046733644, -0.013108831, 0.09266598, 0.095575206, 0.08086839, -0.14152451, 0.26396653), target);\n\ttarget = MulAdd(ng1, MF4x4(0.079944104, -0.05263471, 0.021151286, 0.017748618, -0.20886436, -0.06915706, -0.078341156, -0.034786303, 0.053623807, -0.0655836, -0.11273695, -0.15438432, 0.06902305, 0.01620085, -0.011239084, -0.12818597), target);\n\ttarget = MulAdd(nh1, MF4x4(0.0032226495, 0.12590717, -0.0031638641, 0.14866307, 0.21612068, 0.07715579, -0.105438486, -0.17400137, 0.04665547, 0.18666393, -0.127797, -0.19163142, -0.03993708, 0.16110541, 0.05756885, 0.13376385), target);\n\ttarget = MulAdd(ni1, MF4x4(0.1687002, 0.021816095, -0.038648866, -0.052668236, 0.01839634, 0.07918797, -0.002949174, -0.062981784, 0.10759527, 0.096810766, 0.26538077, 0.042877536, 0.030417666, 0.2126483, 0.090904295, 0.12819949), target);\n\ttarget = MulAdd(na2, MF4x4(0.2518047, -0.06681589, 0.04622388, -0.070787035, -0.15511023, -0.41387925, -0.1730613, 0.044104673, -0.07129825, -0.16490258, -0.008386942, 0.016624527, -0.08768237, -0.018135691, -0.010196062, -0.012061386), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.001268586, 0.061798558, 0.21913844, -0.044886224, 0.05442666, -0.16555135, 0.11374653, 0.035642505, 0.18183587, 0.08264069, -0.12153259, 0.11140945, -0.23343492, -0.11151265, 0.0064260047, 0.098349355), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.13696936, 0.03562409, -0.0101959305, 0.07757505, 0.0394099, 0.08446535, 0.005326397, 0.06953561, 0.26667434, 0.070835635, -0.013025369, -0.09135739, -0.19930726, -0.15466705, 0.068868525, 0.06432818), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.03636396, 0.082273535, 0.14712979, 0.00055138784, -0.29863998, -0.1502358, -0.10165026, -0.031016732, 0.017641982, -0.18515474, -0.13060197, -0.037918076, 0.0948058, 0.12216852, 0.1061389, 0.0049280017), target);\n\ttarget = MulAdd(ne2, MF4x4(0.0772463, -0.16946481, 0.43130034, -0.07500874, 0.11102152, -0.16219406, 0.095144905, 0.09938664, -0.103036284, 0.17237557, 0.03153515, 0.17011715, 0.04090995, -0.19434042, 0.034989282, -0.10372025), target);\n\ttarget = MulAdd(nf2, MF4x4(0.17383884, 0.00505153, -0.112281226, -0.034794528, 0.067649566, 0.20247048, 0.11118917, -0.10395416, -0.21711119, 0.032752357, 0.41753212, -0.16500826, 0.2285505, -0.10731952, -0.33513266, 0.17423174), target);\n\ttarget = MulAdd(ng2, MF4x4(0.13510819, 0.05318901, 0.06842423, 0.111380026, 0.032170407, -0.07004064, -0.004727209, -0.055246145, -0.041120853, -0.066667765, -0.12091067, 0.064465545, 0.30983046, 0.062509745, 0.13394639, -0.2320897), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.11820305, -0.13822947, 0.042539548, -0.033613026, -0.0246929, 0.22179885, -0.0126101235, -0.12915117, -0.13849965, 0.02132361, -0.08306424, 0.25891247, 0.18283567, 0.031577725, 0.09138907, -0.26405686), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.0025576213, -0.0058528413, -0.03972553, 0.016412497, 0.13415, 0.11366292, 0.06300578, -0.082534134, 0.035222337, 0.14385511, 0.34487328, -0.069680765, 0.06340447, -0.05378387, -0.27624515, 0.14444257), target);\n\ttarget = MulAdd(na3, MF4x4(0.015041839, -0.05496326, -0.077136815, 0.06463054, 0.3453119, 0.1475871, 0.0863952, -0.13123451, 0.13890652, -0.1339041, -0.070329, 0.0090441145, -0.10499933, -0.031464122, -0.087687746, 0.14039505), target);\n\ttarget = MulAdd(nb3, MF4x4(0.03533054, -0.17344387, 0.07036492, -0.14549953, -0.17900857, 0.13214236, -0.06371722, 0.08584117, 0.124349214, -0.05172205, 0.0056213615, 0.0025381348, -0.07292916, 0.15549947, -0.12606966, 0.008277057), target);\n\ttarget = MulAdd(nc3, MF4x4(0.088395566, 0.16676022, -0.014194714, 0.15820222, -0.12253527, 0.008114694, 0.04552204, -0.0402224, -0.044774655, 0.00047680718, -0.061174177, 0.004499639, 0.0028164221, 0.021954915, 0.007457284, -0.016612154), target);\n\ttarget = MulAdd(nd3, MF4x4(0.07245913, -0.12444683, 0.08628018, -0.013259242, -0.00566908, 0.23597822, 0.030804869, 0.1812487, -0.28520152, -0.12640676, -0.014197547, 0.17321649, -0.3233707, 0.015355323, -0.04023063, 0.134901), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.008877037, 0.11245896, 0.013970579, -0.010476636, 0.046391398, -0.040462412, 0.43888882, -0.0028177807, 0.11008175, 0.22642863, -0.1705455, 0.25688764, -0.00687498, -0.0091281, 0.29534963, -0.023319326), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.08283213, -0.2042435, -0.117713675, -0.11703066, -0.16029139, -0.26878926, -0.30223095, 0.052414846, 0.019514319, 0.16193534, 0.053438045, 0.13924578, 0.120410524, -0.07575857, 0.19710456, -0.103417814), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.07692482, 0.034123767, -0.039485577, -0.11130344, 0.18672933, 0.07824195, 0.084815666, -0.1272111, -0.02006524, 0.20917512, -0.01049663, -0.15457591, -0.008278168, 0.08425196, -0.028542537, 0.021139478), target);\n\ttarget = MulAdd(nh3, MF4x4(0.1287116, 0.08821239, 0.016782869, -0.042757493, -0.06598697, 0.0057867267, 0.0031201676, -0.09951182, -0.17255504, 0.037690736, 0.22092989, -0.14002815, -0.021178395, -0.05137917, -0.0183439, 0.12713785), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.12517771, 0.001307841, 0.102680914, -0.076987654, -0.063097425, -0.0044313464, -0.15392491, 0.18540211, 0.037581213, 0.0076559735, 0.064688995, -0.09571449, -0.079910435, 0.02357281, 0.102179624, 0.0054658144), target);\n\tconv2d_1_tf2[gxy] = target;\n}\n\n//!PASS 3\n//!DESC Conv-4x3x3x24\n//!IN conv2d_1_tf, conv2d_1_tf1, conv2d_1_tf2\n//!OUT conv2d_2_tf, conv2d_2_tf1, conv2d_2_tf2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_1_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_1_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_1_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_1_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 a3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = conv2d_1_tf2.SampleLevel(sam, pos, 0);\n\tMF4 f3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(-5.518393e-05, 0.0062874877, -0.02661609, 0.07653855);\n\ttarget = MulAdd(a1, MF4x4(0.06917031, -0.09608972, 0.012436778, -0.026526913, 0.06718373, 0.057737235, 0.05510206, -0.103320934, 0.032443568, 0.05391639, -0.051994696, -0.036722053, 0.07307222, 0.030999443, 0.28896815, 0.12696978), target);\n\ttarget = MulAdd(b1, MF4x4(-0.1135206, -0.0036884204, -0.067575626, -0.183155, 0.06799192, -0.040569484, 0.013326, -0.09218988, 0.027661508, 0.026157893, 0.07750759, 0.022186747, 0.034232542, -0.0006357425, -0.22527017, 0.09684553), target);\n\ttarget = MulAdd(c1, MF4x4(-0.02058118, -0.09091551, -0.020349659, 0.026089376, -0.0035277302, -0.025624726, 0.069313295, -0.0885836, 0.03267256, 0.0021243643, -0.02949528, -0.015609551, -0.014725211, -0.067495994, -0.013350565, -0.02226788), target);\n\ttarget = MulAdd(d1, MF4x4(-0.037397973, 0.031443134, 0.13686793, 0.033780698, -0.037809733, 0.14600267, -0.08467033, -0.062086526, -0.0037683318, -0.0025683658, -0.018997764, -0.032396015, 0.0760254, -0.06528604, 0.19034758, 0.25288334), target);\n\ttarget = MulAdd(e1, MF4x4(-0.01004077, 0.16253367, 0.02167237, -0.15804967, -0.07540531, -0.49940315, -0.08783108, -0.014712835, -0.0036181745, -0.13094778, 0.00012775385, -0.07735516, 0.00239906, 0.09345624, -0.44146279, 0.079626575), target);\n\ttarget = MulAdd(f1, MF4x4(0.018002989, 0.024756921, 0.08182335, -0.083457224, 0.033952054, 0.049469676, 0.06050263, -0.069849506, 0.0052918023, 0.06281211, 0.029289972, -0.033092137, -0.036357265, -0.10439873, 0.0023779173, 0.07888209), target);\n\ttarget = MulAdd(g1, MF4x4(-0.01730506, -0.022740714, 0.021063361, 0.082628556, -0.024639448, 0.023705823, -0.092249826, -0.0768989, -0.014783317, 0.0063639064, 0.0041929237, -0.015559529, 0.020817379, 0.065355465, -0.002106009, 0.04489612), target);\n\ttarget = MulAdd(h1, MF4x4(0.15640244, -0.016673775, 0.14370853, 0.0632943, -0.38425842, 0.106750414, 0.024923261, -0.31814602, -0.06830921, 0.028625946, 0.13381885, -0.022478523, -0.045712356, -0.045846578, -0.18020678, 0.09754457), target);\n\ttarget = MulAdd(i1, MF4x4(-0.08042041, -0.0629804, 0.00179941, 0.031233454, -0.031198358, 0.07125946, 0.13403404, -0.14895652, -0.007848355, 0.0073721707, 0.09500398, 0.008454506, 0.13026032, -0.067450196, -0.005805801, 0.028892282), target);\n\ttarget = MulAdd(a2, MF4x4(-0.08412081, 0.014766277, -0.020149631, 0.118712135, -0.04914816, -0.05792105, 0.29227188, 0.026034147, 0.1120047, 0.095002666, 0.00085259863, -0.048058935, 0.059555218, 0.016806047, -0.040286265, -0.013871916), target);\n\ttarget = MulAdd(b2, MF4x4(-0.029837646, -0.12694171, -0.091747016, 0.06701937, 0.03595908, -0.06499107, 0.07718667, 0.16839191, 0.060453057, -0.062339257, 0.06462464, -0.12997168, -0.012287718, 0.021051696, 0.036752645, -0.012775891), target);\n\ttarget = MulAdd(c2, MF4x4(0.020795425, 0.05475492, -0.05951276, -0.089259975, -0.016781978, -0.018492289, 0.037464686, 0.022631813, 0.04591149, -0.028302602, 0.021350577, -0.0019535497, 0.05372676, 0.0542445, -0.12681359, -0.16613637), target);\n\ttarget = MulAdd(d2, MF4x4(-0.06331373, 0.08271697, 0.0863126, -0.12388494, 0.032725193, -0.056309905, 0.23224412, 0.2616971, 0.09393073, 0.117842734, 0.24552049, 0.022186337, -0.100860044, 0.08032638, 0.08049447, -0.09940537), target);\n\ttarget = MulAdd(e2, MF4x4(0.3909181, -0.07477156, -0.36466175, -0.17175487, -0.055392284, 0.23718156, -0.34149098, -0.3924147, 0.07390285, -0.028201863, -0.2988869, -0.059178505, -0.035545774, -0.049048856, -0.18053558, -0.15981394), target);\n\ttarget = MulAdd(f2, MF4x4(0.12357816, 0.016537879, 0.08740827, -0.16022646, 0.03273305, -0.0133974645, -0.089761056, 0.044843633, -0.08129866, 0.06891703, 0.0075367647, -0.037070137, -0.12439461, -0.0033269753, -0.06834715, 0.08675626), target);\n\ttarget = MulAdd(g2, MF4x4(0.0064779734, 0.014426835, 0.035886277, 0.06754253, 0.02203813, -0.04712386, 0.023021698, 0.16410176, -0.0851561, 0.04949104, 0.23652297, -0.09268624, -0.04759872, 0.0015944376, 0.05121314, 0.03872179), target);\n\ttarget = MulAdd(h2, MF4x4(-0.03296315, -0.07756158, 0.011254165, 0.07215864, 0.05212682, -0.119309366, -0.10098557, 0.065113194, -0.6075043, 0.0944948, -0.0025391292, 0.07257945, -0.059234653, -0.02663308, -0.0056367065, 0.07748455), target);\n\ttarget = MulAdd(i2, MF4x4(0.1963255, -0.094376676, 0.077393346, -0.061023213, -0.023002017, 0.011871082, -0.035235405, -0.14450419, -0.010873058, -0.10108094, -0.026334947, -0.048716616, 0.15553881, -0.056554224, 0.07016727, 0.09666785), target);\n\ttarget = MulAdd(a3, MF4x4(-0.045733463, -0.07430657, 0.08238815, -0.123395115, -0.040635027, -0.059792377, 0.04978978, 0.14278086, -0.0541127, -0.10427179, -0.16961274, -0.1371796, -0.0011499986, 0.012152467, -0.0815682, -0.054046102), target);\n\ttarget = MulAdd(b3, MF4x4(0.0727944, 0.052526925, 0.009230718, -0.1476749, -0.09698198, -0.025520593, 0.02144377, 0.16131893, 0.0781747, -0.11812555, -0.035372186, -0.08136449, 0.05059057, 0.038647998, -0.037999127, -0.0015969436), target);\n\ttarget = MulAdd(c3, MF4x4(-0.018785287, 0.03944137, 0.11725696, -0.05008342, -0.10257986, 0.20005476, -0.06610143, 0.06656378, 0.006863046, -0.047056478, -0.093303435, 0.05993721, 0.020760732, 0.019373491, 0.062371906, -0.037439793), target);\n\ttarget = MulAdd(d3, MF4x4(-0.09267274, -0.098096795, 0.13675432, -0.06826833, -0.070104465, 0.099336594, -0.056031886, -0.089224756, -0.024747698, -0.0409895, -0.12682493, -0.2713339, -0.03058857, 0.074631155, 0.10274793, 0.0003064175), target);\n\ttarget = MulAdd(e3, MF4x4(-0.22578365, 0.35256356, -0.03433281, -0.16781186, 0.21457422, -0.028583825, 0.1498506, -0.17183648, -0.08763252, 0.12665057, 0.11524475, -0.122246034, 0.253632, -0.4412073, 0.1340533, 0.18091358), target);\n\ttarget = MulAdd(f3, MF4x4(-0.021586075, -0.13002236, 0.051525775, 0.018828293, -0.02971698, 0.1655956, -0.03223926, 0.097215585, -0.056743864, -0.029945962, 0.02934507, 0.03346959, 0.0409185, -0.0018111896, 0.04084656, -0.033254143), target);\n\ttarget = MulAdd(g3, MF4x4(0.029116312, 0.03399277, 0.05797433, -0.005187739, 0.051238127, 0.00043336756, -0.13381082, -0.11246873, 0.0627832, -0.1257258, 0.14857215, 0.08276562, -0.060543623, 0.066337794, 0.17844212, -0.039553978), target);\n\ttarget = MulAdd(h3, MF4x4(0.2723402, -0.08208666, -0.095256135, 0.097162515, -0.14603227, 0.098899886, -0.0382611, -0.13691731, 0.15835975, -0.11403104, 0.12741292, -0.0561908, -0.10390587, 0.1448454, -0.12705886, -0.08887692), target);\n\ttarget = MulAdd(i3, MF4x4(-0.07991212, -0.0016143702, -0.12167386, 0.07029745, -0.10117478, 0.02916672, -0.1567343, 0.037017304, 0.051464945, 0.040837154, -0.057838146, -0.043935794, -0.076173924, -0.0036469682, -0.16645731, 0.0867253), target);\n\ttarget = MulAdd(na1, MF4x4(-0.11595775, 0.1284538, -0.05438797, 0.0022007078, -0.029448986, -0.07199994, 0.08756202, -0.07034043, -0.025051784, -0.033049546, 0.042392526, -0.06789869, -0.02947519, -0.045615688, -0.04309908, 0.08332548), target);\n\ttarget = MulAdd(nb1, MF4x4(0.004717529, -0.103543915, -0.1741877, -0.22649112, -0.11224518, 0.03693626, 0.033321906, -0.10395231, 0.0022406306, 0.0030015993, -0.086861975, -0.08997641, -0.101462744, 0.018904945, 0.30255163, 0.18846805), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.025068762, 0.117842294, -0.019883728, -0.30935752, 0.054619815, -0.00034203878, 0.045184523, -0.05716641, -0.0042491746, -0.014026439, 0.032082856, -0.076196544, 0.022468993, -0.03835101, 0.048660267, 0.11286454), target);\n\ttarget = MulAdd(nd1, MF4x4(0.02735938, -0.014684669, -0.08023435, 0.026778111, -0.0005380734, -0.11492771, 0.33912078, -0.042256307, 0.014511671, -0.0021652458, -0.032238156, -0.031997375, 0.0039656083, -0.023291625, 0.004515741, -0.08897747), target);\n\ttarget = MulAdd(ne1, MF4x4(0.19014491, -0.016315972, -0.042010665, 0.09270843, 0.023101632, 0.47071022, 0.17964542, -0.077132106, -0.0037992029, 0.10508138, 0.06516077, -0.062698394, -0.09827762, -0.08044165, 0.04393759, -0.09197626), target);\n\ttarget = MulAdd(nf1, MF4x4(0.032177076, -0.013111677, 0.074961565, -0.11895858, -0.027409771, -0.0819813, 0.1690814, -0.10718659, -0.011605623, -0.03553455, 0.057705663, 0.015013183, 0.056808244, 0.0005760722, -0.112802945, -0.077581756), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.05866174, -0.007548838, 0.06423205, 0.1352578, 0.0021120945, 0.038740613, 0.17343003, -0.1917378, -0.0038229288, 0.0017887303, -0.007761856, -0.040798064, 0.014540869, -0.03441534, 0.04668393, 0.03392203), target);\n\ttarget = MulAdd(nh1, MF4x4(0.108784005, -0.032867312, 0.0037662825, 0.11089765, 0.29503173, -0.08232824, -0.034738302, 0.06927913, 0.013991651, -0.025746813, -0.020098314, -0.06911749, 0.030166877, 0.0090379, 0.009309999, -0.10990043), target);\n\ttarget = MulAdd(ni1, MF4x4(0.07052432, 0.0040574945, -0.051168878, 0.03484591, 0.07261664, -0.07470608, -0.024008736, -0.021155195, 0.020727258, -0.03774776, -0.07994904, 0.0009939631, -0.06001779, 0.09822139, 0.08215828, -0.20103115), target);\n\ttarget = MulAdd(na2, MF4x4(0.04484158, -0.09804021, 0.030515645, 0.14875132, 0.10324463, 0.024846723, -0.067153946, 0.21652295, 0.025289498, -0.02001657, -0.0704581, 0.03809796, 0.022647271, -0.005611969, -0.036561944, -0.113084584), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.05300202, 0.021789892, 0.059347153, 0.31309023, -0.051712107, 0.12630393, -0.08832499, 0.051365335, 0.040092044, 0.05133063, 0.0385234, 0.12962072, 0.17568372, -0.0060678395, -0.1781195, -0.14315312), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.023102503, -0.0285927, -0.10403815, 0.09859985, -0.02698703, 0.08473415, -0.104872644, 0.05867982, 0.017683612, -0.03389112, 0.0026875678, 0.12684359, -0.009682843, -0.06191043, 0.054384083, -0.06014585), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.02089963, -0.052726943, 0.07328917, 0.09252698, -0.027794342, 0.096590534, -0.059459552, -0.016572969, -0.079190515, -0.101752184, -0.21771683, -0.08526713, -0.10136575, -0.19844209, -0.00960798, 0.18323036), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.12765591, -0.118523166, 0.2949308, 0.3062008, 0.006089219, -0.19795562, 0.10176345, 0.5433496, -0.13549669, 0.18662079, 0.34634838, 0.15632492, -0.3137212, 0.09296755, 0.40942043, 0.35158914), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.044083003, 0.046661552, -0.29044914, 0.18718201, 0.019889789, -0.038973954, -0.13862126, 0.019615972, 0.06718448, -0.078045554, -0.15514913, 0.20315526, 0.12544951, -0.059773993, 0.011969989, -0.13825978), target);\n\ttarget = MulAdd(ng2, MF4x4(0.024059854, -0.036478736, -0.06911277, -0.06703136, 0.018607026, 0.03248238, -0.045660738, -0.020493727, 0.07143626, -0.057682987, -0.14735365, -0.050512917, 0.086959876, -0.09022049, 0.17235179, -0.12725815), target);\n\ttarget = MulAdd(nh2, MF4x4(0.13649525, 0.12862304, -0.17249407, 0.068115726, -0.038493074, 0.05827213, -0.1687499, 0.065070905, 0.27157575, -0.07905134, -0.087201245, -0.08858087, 0.034717344, 0.044884644, 0.08977019, 0.13647328), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.119835004, -0.02438879, -0.18067439, 0.20293695, 0.015848989, -0.04166136, 0.071957104, 0.124382295, -0.072059005, 0.071483135, -0.13201202, 0.0012418783, -0.10581831, 0.058075972, -0.17210579, 0.004112411), target);\n\ttarget = MulAdd(na3, MF4x4(0.00090041093, 0.0011212958, 0.031937573, -0.054099638, -0.017531581, 0.04035068, 0.037017923, 0.0010776994, 0.12191318, -0.007862255, 0.36464828, 0.21806385, 0.049670342, -0.011668101, 0.022543898, -0.025934925), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.02645012, 0.02542059, 0.061260298, -0.029378504, 0.086143106, 0.030658819, -0.102650695, -0.10079073, -0.13305493, 0.121691555, 0.17571746, 0.20150271, -0.0353368, 0.13240956, -0.11879112, -0.09438184), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.030693492, 0.023771469, -0.058636706, -0.08192801, 0.04515666, -0.18397073, -0.012662945, 0.0027336187, -0.036037542, -0.0677095, -0.030037174, 0.09132202, -0.042739432, 0.0677498, -0.0044881506, -0.08441004), target);\n\ttarget = MulAdd(nd3, MF4x4(0.10048813, 0.009793138, -0.041463297, 0.044800177, 0.04865773, -0.013068343, 0.11084613, -0.021099264, -0.16284342, 0.059396107, 0.34094337, -0.00569898, -0.013943217, 0.0776132, -0.2202739, 0.08115887), target);\n\ttarget = MulAdd(ne3, MF4x4(0.09100969, -0.30055302, 0.027439067, 0.14045873, -0.06795197, 0.02795258, -0.3790362, -0.0782406, -0.044285815, 0.060324147, -0.06306254, 0.048571646, -0.010744797, 0.09238931, -0.30406076, -0.034953397), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.08555992, 0.30496204, -0.10318121, -0.109611206, 0.009205826, -0.13284884, -0.034745734, 0.116899915, 0.020474067, 0.087303326, -0.15484655, 0.07619201, 0.048834864, 0.09276454, 0.21443385, -0.16547905), target);\n\ttarget = MulAdd(ng3, MF4x4(0.029452972, -0.029714083, -0.034528464, 0.092740804, 0.059716754, -0.036405306, 0.054758668, 0.20863086, -0.09970437, 0.021823952, -0.057097975, -0.31107625, -0.014428003, -0.055435028, -0.079654545, -0.014873982), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.30689985, 0.18918608, 0.08052377, 0.013860911, 0.07167599, 0.012683613, 0.09667366, 0.23917674, -0.092894726, 0.12865026, -0.23075777, -0.08828766, -0.19403586, -0.0040206606, 0.25459036, -0.09281851), target);\n\ttarget = MulAdd(ni3, MF4x4(0.038235266, -0.028659683, 0.009189875, 0.035079453, 0.066741906, -0.09272636, 0.15878148, 0.22836047, 0.024399906, -0.15650764, 0.030108603, -0.02879869, 0.06306548, 0.020737246, 0.17805946, -0.0968242), target);\n\tconv2d_2_tf[gxy] = target;\n\t\n\ttarget = MF4(-0.020544212, -0.052849937, -0.027093843, 0.018372845);\n\ttarget = MulAdd(a1, MF4x4(-0.11049855, -0.018907964, 0.10167619, -0.07320527, 0.16380642, 0.042582814, 0.15773618, -0.11309016, 0.030760022, 0.013475277, 0.034111183, -0.10673562, -0.06446281, 0.03170585, 0.065783545, -0.08132259), target);\n\ttarget = MulAdd(b1, MF4x4(-0.10073572, -0.038558394, -0.18257987, 0.09736078, 0.07116485, 0.10689451, 0.037241623, 0.06911952, 0.15752609, 0.025548095, 0.09447296, -0.16955513, 0.015093913, 0.026273884, 0.26519024, -0.3108458), target);\n\ttarget = MulAdd(c1, MF4x4(-0.07013285, 0.012493501, -0.03444474, 0.10600023, 0.031901475, -0.07758261, -0.036816508, -0.008185776, 0.04998539, 0.026604375, 0.08036296, -0.18479921, -0.098254114, 0.009431431, -0.056532584, 0.02986586), target);\n\ttarget = MulAdd(d1, MF4x4(-0.0944328, -0.016084116, 0.057588827, -0.03322943, -0.21524993, -0.0121686235, 0.14730252, -0.23106548, 0.038413823, 0.03569419, 0.14861591, -0.10776637, -0.052853543, -0.019915907, 0.11759964, 0.11250295), target);\n\ttarget = MulAdd(e1, MF4x4(0.06219863, 0.04539895, 0.04698554, -0.31864423, -0.012272204, 0.36264813, 0.068282306, 0.2822775, 0.012628343, 0.02692176, 0.09148334, -0.08816395, -0.16482702, -0.06446881, -0.18384305, -0.29771352), target);\n\ttarget = MulAdd(f1, MF4x4(0.100148946, -0.09134751, -0.063103884, 0.1403596, -0.016843816, -0.046195876, 0.030014044, -0.004548106, 0.048431028, -0.040574916, 0.014735356, -0.15846166, -0.2263108, 0.13999973, -0.0633166, 0.27665257), target);\n\ttarget = MulAdd(g1, MF4x4(-0.12594071, 0.0677989, -0.049229424, -0.15385626, -0.12750685, 0.020224968, 0.072655775, -0.37103048, -0.013367309, 0.017096536, 0.07398892, -0.16839914, 0.006098842, 0.018147936, 0.055607572, 0.0040595555), target);\n\ttarget = MulAdd(h1, MF4x4(0.12726252, -0.06711981, 0.11226904, -0.034675833, 0.13163973, 0.09057499, 0.15357189, -0.35910082, 0.0003699172, 0.01971659, -0.041180152, -0.12111229, 0.00043315487, -0.053538464, -0.076018356, 0.042511243), target);\n\ttarget = MulAdd(i1, MF4x4(0.14136468, 0.06641704, 0.046442796, -0.025372686, 0.100791246, 0.03306327, 0.07611193, -0.17730577, -0.027955538, -0.0078110253, 0.008712534, -0.087275945, 0.08230878, -0.0052679684, -0.103350714, 0.0865688), target);\n\ttarget = MulAdd(a2, MF4x4(0.13361642, -0.039004393, -0.023543444, 0.07136099, -0.12098764, -0.02865035, 0.092850566, -0.082029596, 0.036575377, 0.14037344, 0.09989788, -0.06525852, 0.10002514, -0.026618406, -0.12002266, 0.04573298), target);\n\ttarget = MulAdd(b2, MF4x4(-0.28081807, -0.08057377, -0.06789116, 0.019678107, -0.027069533, -0.016614377, -0.01618704, 0.24995302, -0.052341353, -0.07172657, 0.12574856, 0.1313798, -0.15072265, -0.09125269, 0.16099194, -0.13485655), target);\n\ttarget = MulAdd(c2, MF4x4(-0.19550133, -0.04183744, 0.024049545, -0.09530149, 0.100007616, -0.05702025, -0.013796386, 0.04444768, 0.1344129, 0.0993129, 0.10404407, 0.09173625, 0.012862574, 0.06720736, 0.06611082, -0.055998694), target);\n\ttarget = MulAdd(d2, MF4x4(0.16142978, -0.03735292, -0.043507334, -0.110913426, 0.10257733, -0.041712806, -0.18747051, 0.13936411, 0.020649113, -0.02688488, 0.21794553, -0.0689589, 0.16157758, -0.031158462, 0.13341765, -0.097379625), target);\n\ttarget = MulAdd(e2, MF4x4(-0.14022216, 0.15108277, -0.12174897, 0.034505684, -0.28282407, -0.0030200025, 0.06294236, -0.44982272, 0.09119184, 0.02005879, -0.09758412, -0.13265614, -0.21872388, 0.039521, -0.087356746, -0.20212357), target);\n\ttarget = MulAdd(f2, MF4x4(0.12638997, 0.5495008, 0.17717126, -0.08970275, 0.018967377, 0.04660826, 0.059454307, 0.17593576, -0.23507589, 0.12473919, -0.08162357, -0.06400482, -0.02973915, 0.009761158, 0.005129572, 0.051037535), target);\n\ttarget = MulAdd(g2, MF4x4(0.021429846, -0.034670793, 0.08353943, 0.02352908, 0.05054778, -0.019557012, -0.09459167, 0.2277268, 0.05714867, 0.075109184, 0.060369328, -0.10815987, 0.039977793, -0.058211602, -0.070377484, -0.0347485), target);\n\ttarget = MulAdd(h2, MF4x4(0.017368738, -0.015973292, 0.07625957, -0.08961148, 0.047681917, 0.050915856, 0.0910593, -0.0091246255, 0.14573355, 0.052380197, 0.15116148, -0.068882786, -0.0140725635, 0.02823435, -0.1579844, 0.07299422), target);\n\ttarget = MulAdd(i2, MF4x4(0.061255533, 0.03280513, 0.060110033, -0.036644097, -0.037236962, -0.026364978, 0.052616216, -0.13499284, 0.05801061, -0.0673201, -0.14684524, 0.23741283, -0.025241269, -0.1356566, -0.05841229, 0.1051435), target);\n\ttarget = MulAdd(a3, MF4x4(0.00022173181, 0.0643927, 0.028364835, 0.03683199, -0.031283405, -0.09468918, -0.29093724, 0.15719903, -0.021024697, 0.043887176, 0.0935728, 0.03710646, -0.0015930429, 0.1128033, 0.035463266, -0.017833339), target);\n\ttarget = MulAdd(b3, MF4x4(0.016239017, 0.033160247, -0.0012980856, 0.1643084, -0.068570554, -0.011817288, 0.07238526, 0.09016985, -0.037720326, 0.039096065, 0.18127714, 0.040145792, -0.072754, -0.010240024, 0.003931741, 0.1961971), target);\n\ttarget = MulAdd(c3, MF4x4(0.1582716, 0.059197184, -0.07311528, 0.15047154, 0.11910138, -0.16538778, -0.05161302, -0.13114272, 0.06918401, 0.09988292, -0.009128961, 0.022979198, -0.05816623, -0.0010521389, 0.049138065, 0.025934359), target);\n\ttarget = MulAdd(d3, MF4x4(0.005232625, 0.06572209, 0.08158597, -0.041485008, 0.10972084, -0.100233644, -0.08123889, 0.22106615, -0.15856642, -0.00089599646, -0.2508091, -0.18100697, 0.05062669, 0.015029212, 0.037986293, -0.042927373), target);\n\ttarget = MulAdd(e3, MF4x4(-0.059474643, 0.027163196, -0.2604915, -0.010336377, -0.12445887, 0.13566798, -0.30654848, -0.060082927, 0.23085387, -0.091465, 0.39375424, 0.042889137, -0.056025308, 0.032562573, -0.24045426, -0.066820875), target);\n\ttarget = MulAdd(f3, MF4x4(0.37940925, 0.059039116, -0.23255952, 0.13268405, 0.09298355, -0.3546018, 0.20099486, 0.110705115, 0.1028718, 0.15027377, -0.052708015, 0.077674516, -0.012042469, -0.24452698, -0.0897586, -0.05299548), target);\n\ttarget = MulAdd(g3, MF4x4(-0.08723447, -0.04039763, 0.06555755, -0.01244263, 0.0631391, -0.07041029, 0.09457601, -0.07120963, -0.006443017, 0.022470789, 0.083783925, -0.21022923, 0.09100827, 0.004317152, 0.14609122, -0.058026843), target);\n\ttarget = MulAdd(h3, MF4x4(-0.0845435, 0.117686994, -0.12543106, 0.12503773, -0.10377896, -0.0026920936, 0.1349612, -0.069376774, 0.084404066, 0.11193638, 0.09126277, -0.054743435, -0.0032069946, 0.06509136, 0.0048303395, 0.10628396), target);\n\ttarget = MulAdd(i3, MF4x4(-0.029292313, 0.007759757, 0.025865927, 0.056625884, -0.07793367, -0.04091509, -0.003351621, -0.033380255, 0.07060131, -0.036421955, 0.081770964, -0.043511044, 0.017399874, 0.043617025, 0.005139266, -0.021786831), target);\n\ttarget = MulAdd(na1, MF4x4(-0.022271145, 0.00039645372, 0.010613543, -0.11776198, -0.02635221, 0.11864236, -0.0024596716, 0.03923893, 0.0029042386, 0.005011855, 0.0018216589, 0.008130081, 0.011119617, 0.06787836, -0.066421315, 0.08031844), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.09813517, 0.06568305, -0.13860098, -0.0010828839, 0.14380379, -0.13478349, -0.022100717, 0.17066574, -0.029020214, -0.022638777, -0.0070202127, 0.030224288, 0.16366352, -0.06265367, -0.18798734, 0.011478987), target);\n\ttarget = MulAdd(nc1, MF4x4(0.05996043, -0.053815104, 0.11500831, -0.08236374, 0.044013776, -0.041716296, 0.041496664, 0.14121005, 0.08279138, 0.009773295, -0.010372792, 0.025527438, 0.014913059, -0.066181764, -0.011920773, 0.10358109), target);\n\ttarget = MulAdd(nd1, MF4x4(0.05652108, -0.004097921, -0.062982805, 0.1622035, 0.16812254, 0.03779725, 0.09811821, -0.30795518, -0.03712885, 0.014134829, -0.07531538, -0.0353742, -0.014039425, -0.011970228, 0.036651116, -0.0004495905), target);\n\ttarget = MulAdd(ne1, MF4x4(0.11922151, -0.17507777, -0.04528375, -0.07090318, 0.19573775, -0.11706877, 0.0641675, -0.3705396, 0.0054832795, -0.048944287, -0.09650737, 0.09810468, -0.18202507, -0.08735016, 0.082755096, -0.018619625), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.2286063, 0.06487897, 0.041627876, -0.112286136, 0.055056084, -0.024040936, -0.072515465, 0.095542595, 0.017591938, 0.037572965, 0.086499356, -0.044066917, 0.09246921, -0.14498484, 0.017450534, -0.0031692435), target);\n\ttarget = MulAdd(ng1, MF4x4(0.120006956, 0.029871983, -0.04091446, 0.1845348, 0.07152837, 0.0031324874, 0.3271476, -0.3842661, 0.015676577, 0.007722651, -0.01355098, 0.03852728, -0.036933925, -0.055561922, -0.08608098, 0.016633974), target);\n\ttarget = MulAdd(nh1, MF4x4(0.042973485, -0.016934913, -0.054753687, 0.0057244487, 0.080229886, 0.07153676, 0.121217705, -0.1422365, -0.022736007, -0.005441552, 0.059987642, -0.06661513, -0.008356551, 0.026571274, 0.014096615, -0.034175288), target);\n\ttarget = MulAdd(ni1, MF4x4(-0.10869293, 0.020983249, 0.014934219, -0.048246913, -0.043031503, 0.014160269, 0.012524968, 9.1027774e-05, 0.06874907, 0.041440487, 0.04364499, -0.049117107, -0.11006862, -0.028361427, 0.0666895, -0.15525119), target);\n\ttarget = MulAdd(na2, MF4x4(-0.13360004, -0.040586635, -0.011065811, 0.07590281, -0.17862478, 0.03176052, -0.0060847234, 0.06482111, -0.10241082, -0.06991013, -0.04906971, 0.111663744, -0.20776138, -0.065589525, 0.16063885, -0.1169129), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.08239939, -0.016491726, -0.17447554, -0.17412238, -0.023073941, 0.024335802, 0.009998651, -0.2594834, 0.09212794, -0.047131993, 0.0023678474, -0.13931216, -0.093529895, 0.14654796, 0.2062498, -0.0979242), target);\n\ttarget = MulAdd(nc2, MF4x4(0.037110724, 0.16630705, -0.07703024, -0.09271235, -0.065290235, 0.011327393, 0.01392625, -0.08141591, -0.2544335, 0.11532231, -0.0038528284, -0.14333782, 0.052138682, 0.11441084, -0.13260897, 0.16820511), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.30918753, -0.024295764, -0.027942184, -0.0860215, -0.055746336, -0.016570807, 0.17202388, 0.035703283, -0.16252916, 0.058050476, -0.15769738, 0.15678713, -0.116991155, 0.043470733, -0.383855, 0.18544619), target);\n\ttarget = MulAdd(ne2, MF4x4(0.110480964, -0.0018562422, 0.11564728, -0.15973495, 0.28632364, 0.07150075, -0.02442135, 0.09562533, -0.031401016, -0.04514724, 0.31314585, -0.09337406, 0.108728535, 0.017531324, -0.024494028, -0.093123734), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.0803049, -0.23596147, -0.1215564, -0.07627238, -0.06644555, -0.02015921, -0.1534082, -0.0035896646, 0.20785846, -0.07450932, 0.083064035, 0.06505109, -0.06643723, -0.05675558, -0.06931419, -0.07988197), target);\n\ttarget = MulAdd(ng2, MF4x4(0.0042541623, 0.026418367, 0.06019002, -0.120204665, -0.041487366, 0.021887602, 0.060255744, -0.07371016, -0.12069726, -0.12678316, -0.049600363, -0.12936749, 0.23514399, 0.037363835, 0.014190557, 0.12650439), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.09167683, -0.04038391, -0.022526316, -0.009859018, 0.008543954, -0.021847846, -0.09823242, 0.100713, 0.090360984, 0.09792457, -0.20315544, -0.035371944, 0.1085808, -0.06695963, 0.02482221, 0.024650661), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.20332499, -0.07027695, -0.087853126, 0.18171547, -0.047613457, -0.024246145, -0.10522111, 0.23672101, 0.036521245, -0.08921485, -0.03288885, -0.031625647, -0.06543899, -0.069383, -0.00516059, -0.0017956651), target);\n\ttarget = MulAdd(na3, MF4x4(0.024934843, 0.03389753, -0.08901605, -0.037079386, -0.046384435, -0.02585016, 0.11197663, 0.00346106, -0.36492983, -0.093989864, -0.04062576, -0.026857732, -0.0070361346, -0.043496076, -0.015871098, 0.043276284), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.03606492, 0.004693198, 0.06704513, -0.06954089, -0.06506014, -0.037918013, -0.08111133, -0.009501841, 0.068508595, 0.08327213, -0.019518502, -0.022806957, 0.2190603, 0.17022887, 0.14800793, -0.08281432), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.064694725, -0.07497781, -0.04672195, 0.014982018, 0.043382764, 0.18891387, -0.038317963, 0.07969728, -0.063571155, 0.030154549, -0.08465413, 0.16925031, 0.12671013, -0.04915839, -0.096187495, -0.051536918), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.009621753, -0.0195934, -0.045811757, 0.13657679, -0.064056486, 0.038231816, -0.054827668, -0.12231228, 0.26552272, 0.12414302, 0.18624337, -0.046787616, -0.022237374, -0.053084116, 0.14358921, -0.042177454), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.07842658, 0.013456938, 0.032272052, 0.28887707, -0.10770709, -0.21856956, 0.37743518, 0.23959023, 0.37210184, 0.9503002, -0.025512097, -0.03633097, 0.022222593, 0.071377136, -0.20658484, 0.52729785), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.099430755, -0.24070781, 0.065863, -0.07808372, -0.16720702, 0.2676829, -0.27154264, -0.049355835, 0.19279453, 0.06852905, 0.06272968, 0.13116297, 0.07394523, 0.12975569, 0.26263225, 0.15205261), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.014191022, 0.018638015, -0.08631605, 0.061950725, -0.13144706, 0.084606856, -0.024304552, 0.0024966071, 0.021148616, 0.020798182, 0.13002335, -0.049378537, 0.017035907, -0.0116185695, -0.20568894, 0.2350694), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.013792852, -0.05215396, 0.06764889, -0.012962138, -0.11838281, -0.015625363, -0.12466692, 0.12504981, 0.14459728, 0.034634247, 0.14713274, -0.118111566, 0.18801935, -0.14544547, 0.04915958, -0.14483985), target);\n\ttarget = MulAdd(ni3, MF4x4(0.04480321, 0.029159583, -0.06726701, -0.065100566, 0.094168976, 0.012941809, -0.035608374, 0.086288646, 0.043504182, 0.057368, -0.054148387, 0.09442852, 0.07997, -0.050284415, 0.046459693, -0.11076571), target);\n\tconv2d_2_tf1[gxy] = target;\n\n\ttarget = MF4(0.057122286, 0.012267435, -0.008509618, -0.033430006);\n\ttarget = MulAdd(a1, MF4x4(0.039423067, 0.078436814, -0.069983914, -0.038171016, 0.14237583, -0.02642111, -0.20049703, 0.100611456, -0.029072462, -0.5085375, -0.018193128, 0.059373964, -0.030980011, -0.11949504, -0.06939915, -0.0759268), target);\n\ttarget = MulAdd(b1, MF4x4(0.059159596, 0.17550206, 0.05612233, 0.13204549, -0.0050658686, -0.21678181, 0.07797472, -0.09275905, -0.06803014, -0.65021074, -0.07766355, 0.018018546, -0.26769254, 0.16147457, -0.2786428, 0.117244564), target);\n\ttarget = MulAdd(c1, MF4x4(0.08737985, -0.10133755, -0.026567303, -0.03721374, 0.03300279, 0.15863386, 0.14206086, 0.10378439, -0.024067098, -0.41554677, -0.096829094, 0.037365302, 0.047267284, -0.014426036, 0.08224506, -0.02312597), target);\n\ttarget = MulAdd(d1, MF4x4(0.054744978, 0.0014223085, 0.107521415, 0.044979066, -0.039141048, 0.23803799, -0.19850029, 0.19078358, -0.053693853, -0.51473075, -0.026663598, -0.03709435, 0.068645775, -0.461768, 0.05462371, -0.034951005), target);\n\ttarget = MulAdd(e1, MF4x4(-0.29620552, -0.008875074, 0.07487369, -0.22165461, -0.19263655, 0.048992947, -0.19407378, -0.04266071, -0.0410519, -0.9824355, -0.04094819, 0.1591373, -0.003784664, -0.03243022, 0.18372828, -0.21720201), target);\n\ttarget = MulAdd(f1, MF4x4(0.009888709, 0.13686997, -0.094822176, 0.05202961, 0.07718702, -0.111160606, -0.008345299, -0.03728517, 0.08747702, -0.609868, -0.004057196, -0.044258054, 0.06356071, 0.25430042, 0.020177737, 0.0132764075), target);\n\ttarget = MulAdd(g1, MF4x4(0.11496065, 0.21552022, -0.04389089, -0.0086625945, 0.09537117, -0.13809446, 0.08995812, 0.112047695, 0.011121139, -0.5289336, -0.022189362, 0.038001932, -0.1164996, 0.23712026, 0.020787118, -0.0011653812), target);\n\ttarget = MulAdd(h1, MF4x4(-0.09048339, -0.39137346, 0.21572241, 0.051918186, 0.11814622, 0.3203632, 0.024965152, -0.04971828, 0.009413184, -0.27384368, -0.06055165, 0.011737885, 0.06622072, 0.004352992, -0.16232811, -0.04402811), target);\n\ttarget = MulAdd(i1, MF4x4(0.09248723, 0.0889905, 0.024224376, 0.030123342, 0.03877418, -0.08895352, -0.13702047, 0.108477026, 0.040580783, -0.38253292, -0.017656842, -0.02734635, -0.10592393, -0.078880526, 0.06576184, 0.08253187), target);\n\ttarget = MulAdd(a2, MF4x4(0.015141747, -0.1309331, -0.02695935, -0.17821482, 0.06992731, 0.008076907, 0.04242278, -0.041699618, -0.2879429, 0.19774953, 0.049024932, 0.2859851, 0.07940857, 0.119633004, -0.0559928, 0.030878706), target);\n\ttarget = MulAdd(b2, MF4x4(-0.24421887, 0.13531625, 0.16485777, -0.16606078, 0.013032199, 0.22538358, -0.08584098, -0.09070285, 0.2687854, 0.16989781, -0.032257568, -0.017058974, -0.009155003, 0.24833599, -0.037294723, -0.030808553), target);\n\ttarget = MulAdd(c2, MF4x4(0.02493932, 0.114831686, 0.033882387, 0.14481047, -0.01829352, 0.115675755, -0.03021338, -0.004733893, 0.015008595, -0.19344689, -0.12460783, 0.047182407, -0.1743983, -0.09997754, -0.27779073, 0.07800383), target);\n\ttarget = MulAdd(d2, MF4x4(-0.043531906, 0.07293452, -0.071971625, -0.0019219422, -0.04766082, -0.1400812, 0.025305094, 0.05111917, 0.08387639, -0.31426215, -0.004437485, 0.15080883, 0.046185132, -0.34772637, 0.1205064, -0.073153645), target);\n\ttarget = MulAdd(e2, MF4x4(-0.18307851, 0.09229181, -0.17735274, 0.50427365, 0.034740254, -0.13563888, 0.027704779, -0.10706108, 0.32057324, 0.1820803, -0.28548205, -0.20837711, 0.026674472, 0.015941067, -0.07913227, 0.10543624), target);\n\ttarget = MulAdd(f2, MF4x4(-0.19075814, -0.07901908, -0.09471109, 0.38521093, -0.051173307, 0.22712201, -0.0057217837, -0.008397543, -0.094950974, -0.07692618, 0.08312472, -0.1183983, 0.042578284, 0.055876415, 0.0013518286, -0.024476144), target);\n\ttarget = MulAdd(g2, MF4x4(0.07312584, -0.14143293, 0.039240487, -0.04388676, -0.040030226, 0.23504035, 0.049412448, 0.047472715, 0.01382807, -0.2750679, 0.21508247, 0.053023193, 0.029611293, -0.0056723547, -0.01997564, 0.03959638), target);\n\ttarget = MulAdd(h2, MF4x4(-0.15638126, -0.19253428, 0.10116556, 0.08715779, -0.11614563, 0.098930575, 0.087547146, -0.028423786, 0.21491656, 0.13664484, -0.24975125, -0.08325575, 0.032616112, -0.18295531, 0.065003626, 0.021616168), target);\n\ttarget = MulAdd(i2, MF4x4(-0.007087224, 0.3169042, 0.14880657, -0.18242247, 0.0064674197, 0.06109478, -0.059897806, -0.0011404125, 0.18070918, -0.08458671, -0.12923287, -0.08353918, -0.01897949, 0.06979917, 0.09025345, -0.017417897), target);\n\ttarget = MulAdd(a3, MF4x4(0.05179286, -0.034726117, 0.21951278, 0.082072996, 0.07295873, -0.08012756, 0.014272455, -0.056287043, -0.017637976, -0.013951062, 0.054536913, 0.017742792, -0.009336327, -0.03538978, 0.011911002, -0.11776655), target);\n\ttarget = MulAdd(b3, MF4x4(0.13707292, -0.023107344, -0.00069132133, -0.08294918, -0.23168655, -0.096478485, 0.08214384, -0.059408333, 0.18943588, -0.03707817, -0.08321206, -0.22239017, -0.15046118, 0.120259546, 0.07002098, -0.09866878), target);\n\ttarget = MulAdd(c3, MF4x4(-0.012951499, -0.27445596, -0.14348228, 0.0447087, 0.046177246, 0.017482923, 0.05994589, 0.015270621, 0.06457534, -0.05479883, 0.013528706, -0.12819076, -0.06994984, 0.07996559, -0.06996563, 0.054592125), target);\n\ttarget = MulAdd(d3, MF4x4(0.10614017, -0.053328507, 0.08286402, -0.10957647, -0.12656961, 0.040465187, 0.17095993, 0.051273175, 0.04530683, 0.18120332, -0.027397426, -0.08206453, 0.069643475, -0.12606093, -0.058229, 0.18432495), target);\n\ttarget = MulAdd(e3, MF4x4(0.17823172, 0.41447365, 0.11639968, -0.06486261, 0.19411229, -0.19174264, -0.038545858, -0.10247162, -0.019421054, -0.009120293, 0.13342139, 0.04569454, -0.11488296, 0.080402605, 0.13746685, 0.14873841), target);\n\ttarget = MulAdd(f3, MF4x4(-0.0829372, -0.30971724, 0.032577418, 0.07669426, 0.018960338, 0.1791047, -0.047290523, -0.008268177, -0.04843848, 0.06855169, -0.07592713, 0.04155206, 0.08097685, 0.051547952, 0.011747727, -0.033211578), target);\n\ttarget = MulAdd(g3, MF4x4(-0.1373094, 0.15334417, -0.06870011, -0.06123882, 0.00090525567, 0.1162759, -0.082836166, 0.11193168, -0.08798139, 0.035071023, 0.01123731, -0.05533123, -0.024120709, 0.050991498, -0.1336545, -0.043407314), target);\n\ttarget = MulAdd(h3, MF4x4(-0.06407508, -0.33745393, 0.23901443, 0.052661825, 0.10159286, 0.07630392, -0.15228964, -0.03295662, -0.0060571227, 0.0071413037, 0.17815827, -0.12300588, 0.1899591, -0.25670734, 0.0070533925, -0.043219138), target);\n\ttarget = MulAdd(i3, MF4x4(-0.1732961, 0.30729872, 0.2262359, -0.21156187, 0.06456767, 0.021306427, 0.05425214, -0.083489835, -0.044103798, 0.052490056, -0.0044859303, -0.02098116, -0.0504092, -0.00038908, 0.039689723, -0.07444564), target);\n\ttarget = MulAdd(na1, MF4x4(-0.033599377, -0.08571998, -0.10530651, -0.08143152, -0.12479356, -0.060760368, 0.121969484, 0.038539995, 0.013419648, -0.08396321, 0.05109183, 0.017426316, -0.07328041, 0.05684259, 0.070007846, 0.10744751), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.274972, 0.4282744, 0.22896598, -0.10019718, 0.16731918, 0.030695973, 0.041302808, 0.067710035, 0.023648342, -0.07225423, -0.038274363, 0.05649214, 0.2907932, -0.42040724, -0.012518357, -0.017642522), target);\n\ttarget = MulAdd(nc1, MF4x4(0.13465816, 0.25740397, 0.15255588, 0.095492624, 0.043392237, 0.020608524, 0.028149592, -0.02565965, 0.06586847, 0.0011866485, -0.037156094, 0.055193666, -0.04400515, 0.08791553, 0.010484813, -0.15319423), target);\n\ttarget = MulAdd(nd1, MF4x4(0.040082783, -0.06577737, -0.07995138, -0.16504121, 0.09325564, -0.22239633, 0.1648208, 0.028321613, 0.015860023, -0.08520523, -0.051657148, 0.061537597, 0.073225826, -0.14896914, 0.1299073, -0.006399767), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.09663643, -0.53566885, 0.025700806, 0.55880916, 0.2808175, 0.05318815, 0.062414836, 0.10828044, 0.05490069, -0.081015244, 0.09650798, -0.12189763, -0.07257968, 0.26949814, -0.012583941, 0.0008959956), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.011190751, 0.35855585, 0.1862791, 0.14002089, 0.027401952, 0.0042707003, -0.022745244, 0.10868378, -0.09141326, -0.17373067, 0.028805451, 0.017749606, 0.040033735, -0.011070057, -0.025801158, -0.13208073), target);\n\ttarget = MulAdd(ng1, MF4x4(0.024512364, 0.08858363, -0.18131207, -0.027412666, -0.04424581, 0.011799249, -0.082901396, 0.038419988, 0.024691217, 0.052292384, -0.009439586, -0.00092504063, 0.008878617, 0.025503607, 0.021490294, 0.056503642), target);\n\ttarget = MulAdd(nh1, MF4x4(-0.12956679, -0.34502396, 0.2046284, 0.026422406, -0.051775485, -0.004565459, 0.033549815, 0.24834748, -0.014039569, -0.008843974, -0.024532126, -0.028356941, 0.086490355, 0.19347343, -0.06651103, 0.01359097), target);\n\ttarget = MulAdd(ni1, MF4x4(0.026218938, -0.071594626, 0.058404952, -0.0064054746, 0.021394106, 0.003737053, 0.013854575, 0.11512703, 0.041950155, -0.12979212, 0.029137189, -0.035896428, -0.052289136, 0.14120553, -0.069520056, 0.083379924), target);\n\ttarget = MulAdd(na2, MF4x4(0.10193102, -0.011678638, -0.08350273, -0.1182253, -0.15432937, 0.20543317, -0.20413567, -0.080253944, 0.07646635, -0.020952104, -0.0104566, -0.10925271, 0.055971812, 0.032747865, 0.04048261, 0.08953569), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.016132157, -0.08411032, -0.14439175, 0.056656662, -0.12841295, -0.051562544, -0.040920693, -0.027162159, -0.05479628, -0.13349691, -0.28604138, 0.053583436, 0.13565014, 0.11799203, -0.28183892, -0.14269474), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.062003274, -0.048884556, -0.20334347, 0.22376512, -0.089073546, 0.11118097, -0.009234466, -0.07418679, -0.14703932, 0.16732392, -0.07114778, -0.06633442, 0.04149066, 0.061250567, 0.18997967, 4.3616074e-05), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.013199228, 0.04439229, 0.022987943, 0.031648617, 0.028317936, -0.065302536, 0.12444893, -0.10333742, -0.055278953, 0.0026120062, 0.292226, -0.048765816, 0.094359584, 0.080392964, 0.04476662, -0.05632204), target);\n\ttarget = MulAdd(ne2, MF4x4(0.30331823, -0.13950066, 0.046152875, -0.049017597, -0.030433452, -0.098067395, 0.05823237, 0.23484923, -0.052533124, -0.17569515, 0.043904085, 0.34406292, 0.09246567, 0.44028738, -0.1541278, 0.10462374), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.053813357, -0.06074867, -0.08128881, -0.015421247, 0.1122167, 0.06750029, -0.07663203, 0.06962623, 0.016814634, -0.018121587, -0.17165172, 0.06247406, -0.061192635, -0.21323347, -0.20642947, 0.024856035), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.017261975, 0.001956938, 0.03585212, -0.051244717, -0.012848608, 0.060172677, -0.110458344, -0.14227545, 0.074150845, 0.122560345, 0.0022584137, 0.124024406, -0.0020875141, -0.44394484, 0.21422713, -0.04319881), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.034175355, -0.010641907, -0.035431314, 0.009394309, 0.06870524, -0.020846654, 0.0075500663, -0.10564474, 0.031213112, 0.32362583, -0.01739634, -0.080315515, -0.026090765, -0.2125432, 0.17748094, 0.08196893), target);\n\ttarget = MulAdd(ni2, MF4x4(0.023425572, 0.058883358, -0.08460052, -0.06000809, -0.07512468, 0.15626664, 0.007509836, 0.019525077, 0.054792758, -0.23570415, -0.05554373, -0.14720254, -0.022515034, 0.04687545, -0.09122355, -0.08824173), target);\n\ttarget = MulAdd(na3, MF4x4(0.03242358, 0.009580177, 0.020231772, 0.022309156, -0.12902056, 0.14806129, -0.027296314, 0.063802026, -0.039501395, -0.01489755, -0.19859995, -0.10364646, 0.09310042, -0.028172733, -0.08560778, -0.030869158), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.101350136, 0.05526243, 0.0035860895, 0.09896092, 0.19400865, 0.2449927, -0.18022242, 0.09199169, -0.0077618533, -0.18838565, -0.45503637, 0.20625886, 0.041608825, -0.114395924, -0.0850152, 0.0733077), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.08502301, 0.15609683, 0.017885443, -0.02539383, -0.026503822, -0.036420856, 0.0021276672, 0.06999657, -0.046073034, 0.16763787, -0.14055778, -0.0049013835, 0.009052177, -0.09790551, 0.117615454, 0.048404485), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.028804805, 0.004398154, 0.02801529, -0.0806873, -0.03933947, 0.12910266, -0.1326506, 0.08548417, -0.5164903, 0.07406561, 0.22457983, 0.14813408, -0.05975599, -0.019444315, 0.07565449, -0.23129421), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.2850856, -0.12607557, 0.014540369, -0.08426361, -0.027262088, 0.20371006, -0.12156548, 0.17130668, -0.31521708, 0.049210936, -0.35247996, 0.18296543, 0.42723244, 0.2039884, -0.035021685, 1.1381091), target);\n\ttarget = MulAdd(nf3, MF4x4(0.08956528, -0.00317981, -0.07248739, -0.055904776, -0.03996253, 0.025405107, 0.00059332704, -0.037291884, -0.09004787, -0.23186557, -0.16186874, 0.0020177872, 0.022994975, -0.20395516, -0.17148314, 0.14748491), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.0061345818, -0.16014275, 0.17222595, -0.07567761, -0.061348878, -0.1720377, 0.12391044, -0.1664243, 0.20054317, 0.053534795, 0.18869756, -0.15747075, 0.023294995, 0.19970472, 0.14656426, 0.033892497), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.0951606, 0.114271455, -0.035583224, -0.0395411, -0.324703, -0.3520329, 0.32128307, -0.05776112, -0.12950924, 0.10391318, -0.0319499, -0.050979655, -0.13066222, -0.25933158, 0.021341946, 0.09927698), target);\n\ttarget = MulAdd(ni3, MF4x4(0.18134786, -0.057574477, -0.1466477, -0.046258144, -0.024677455, 0.04083935, 0.14517285, -0.25801346, 0.18157719, -0.090125926, -0.0036604172, -0.20966503, -0.00015470991, -0.016252374, -0.03844368, 0.06726928), target);\n\tconv2d_2_tf2[gxy] = target;\n}\n\n//!PASS 4\n//!DESC Conv-4x3x3x24\n//!IN conv2d_2_tf, conv2d_2_tf1, conv2d_2_tf2\n//!OUT conv2d_3_tf, conv2d_3_tf1, conv2d_3_tf2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_2_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_2_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_2_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_2_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 a3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = conv2d_2_tf2.SampleLevel(sam, pos, 0);\n\tMF4 f3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(0.06617475, 0.031411394, -0.08600086, -0.12331019);\n\ttarget = MulAdd(a1, MF4x4(0.04442572, -0.021079494, 0.08133416, -0.14203873, -0.07575563, -0.036278915, -0.02581178, 0.074260384, 0.110657595, 0.022575535, 0.14307183, 0.009784463, 0.0019734183, -0.022827094, -0.10990385, 0.018472824), target);\n\ttarget = MulAdd(b1, MF4x4(0.21470577, -0.102078706, -0.19685651, -0.10499778, -0.14538614, 0.12205785, -0.119196534, -0.12512656, -0.0157255, 0.06778767, 0.051144827, -0.061093763, -0.014912816, -0.10668368, 0.16782193, 0.04672345), target);\n\ttarget = MulAdd(c1, MF4x4(0.23532265, -0.06437796, -0.1636927, 0.096415624, -0.14463958, 0.07062449, -0.009412339, -0.053424593, -0.020204574, 0.048089918, -0.036215715, -0.140922, -0.11925414, -0.05972305, 0.0024522278, 0.09344713), target);\n\ttarget = MulAdd(d1, MF4x4(-0.007486091, -0.041294333, 0.03958969, 0.053319015, -0.0508917, -0.05159112, 0.11288304, 0.26939824, 0.024348699, 0.060014047, -0.034696687, 0.009803982, -0.019758658, -0.108922645, 0.14256927, -0.027265849), target);\n\ttarget = MulAdd(e1, MF4x4(0.08267747, 0.01354375, 0.33666995, 0.101669155, -0.110209286, 0.14248498, -0.16946654, -0.35839102, 0.20460105, 0.11426335, 0.11318654, -0.044304296, -0.076097116, 0.029738575, 0.15636109, -0.0552018), target);\n\ttarget = MulAdd(f1, MF4x4(0.14432563, 0.0046133446, -0.10694144, 0.022137064, -0.5636542, -0.13867012, -0.008164329, -0.12708999, 0.044234607, 0.115975946, -0.092227295, -0.07865807, 0.108110346, -0.017337924, 0.043074783, -0.041216116), target);\n\ttarget = MulAdd(g1, MF4x4(0.026432367, -0.06873426, 0.061831556, -0.00605308, -0.056780808, -0.07177329, -0.0057719476, 0.07050306, 0.027728474, 0.09348229, -0.09152759, -0.09133902, 0.024218138, 0.03562348, -0.018500235, 0.024786536), target);\n\ttarget = MulAdd(h1, MF4x4(-0.015634011, 0.00043256918, -0.08569041, 0.099786475, -0.13876541, 0.06958842, -0.21906306, 0.11165318, -0.09130837, 0.14580032, -0.102398746, 0.051243573, 0.059544906, 0.057559166, -0.033218343, 0.08339028), target);\n\ttarget = MulAdd(i1, MF4x4(0.006991434, -0.0743791, -0.088750206, -0.021417037, -0.29907656, 0.007902655, -0.036114752, -0.122924, -0.067659825, 0.029919846, 0.14793514, -0.097599104, 0.016503064, -0.1095046, -0.028360674, -0.058358364), target);\n\ttarget = MulAdd(a2, MF4x4(0.004909281, 0.071267895, 0.16850118, -0.054999575, -0.14304577, 0.02441106, 0.050973237, 0.009992714, -0.109278284, 0.07919291, 0.0077810627, 0.034462743, 0.047741413, 0.12163777, -0.12122584, 0.013382445), target);\n\ttarget = MulAdd(b2, MF4x4(0.0005590338, -0.015862202, -0.046375863, -0.091307804, -0.20246892, -0.059480507, 0.11874404, 0.17396803, -0.17960979, -0.034825385, 0.004660247, 0.1359996, 0.0032430585, 0.07977283, 0.148807, -0.05778742), target);\n\ttarget = MulAdd(c2, MF4x4(0.18160479, 0.043647032, -0.017925482, 0.017439943, 0.015033334, 0.011356719, 0.03396472, 0.004971239, -0.13910371, 0.044191893, -0.12855305, -0.056105338, 0.056831665, 0.133879, -0.063164115, 0.0071621994), target);\n\ttarget = MulAdd(d2, MF4x4(-0.113280386, 0.0025519284, 0.18671317, 0.08804424, 0.20677073, -0.0804015, -0.08834917, 0.09533873, 0.083148256, -0.048961774, -0.07908736, -0.02688625, 0.035848085, 0.10695606, -0.22634004, -0.13171262), target);\n\ttarget = MulAdd(e2, MF4x4(0.1707226, 0.08533742, 0.21622618, -0.21757056, -0.1274536, 0.08398028, 0.3202134, 0.022998685, 0.04880864, -0.34749946, 0.13356782, 0.054071113, 0.27817082, 0.082054846, 0.1917598, -0.028963286), target);\n\ttarget = MulAdd(f2, MF4x4(0.017651493, 0.026090013, -0.15366435, 0.04745487, -0.083071895, 0.04845406, 0.05552361, 0.096130624, -0.010397022, 0.053183064, -0.07440269, -0.027566215, -0.1770849, -0.02905562, 0.07577059, 0.01106056), target);\n\ttarget = MulAdd(g2, MF4x4(-0.09079958, 0.07023978, 0.013599515, 0.03719188, -0.029139029, -0.12541416, -0.1298324, -0.089526765, 0.026374, -0.03675827, -0.0664432, -0.10954637, -0.03706898, 0.07195458, 0.2083045, -0.13173243), target);\n\ttarget = MulAdd(h2, MF4x4(0.119648434, 0.085478894, 0.1322845, -0.217921, -0.0493358, 0.016056411, -0.008486342, 0.121576615, -0.15643454, 0.03276933, 0.096999034, -0.04267362, -0.0680802, 0.19929416, -0.09860732, -0.20886037), target);\n\ttarget = MulAdd(i2, MF4x4(-0.03567257, 0.09823424, 0.097885884, -0.0057406626, -0.007873974, -0.103281036, -0.013342071, -0.052842017, -0.15585557, -0.127313, -0.08575327, 0.012302473, 0.14850815, 0.1284913, -0.11507875, -0.053595018), target);\n\ttarget = MulAdd(a3, MF4x4(-0.054356705, 0.029001048, 0.017115368, 0.03151991, 0.18608244, 0.13901179, 0.57566303, 0.06494094, 0.028459521, 0.14781436, 0.06256118, 0.030419847, 0.07467109, -0.06440686, 0.053834237, -0.0071851187), target);\n\ttarget = MulAdd(b3, MF4x4(0.007199532, -0.121588215, 0.044833265, 0.27465758, 0.3438028, -0.023367146, 0.51061314, -0.238366, -0.2637815, 0.10414675, 0.23945883, 0.12390733, 0.23056524, -0.036144268, 0.029334458, -0.022119714), target);\n\ttarget = MulAdd(c3, MF4x4(-0.05376701, -0.06664099, 0.059821654, -0.0018416446, 0.2638233, 0.043670908, 0.3815553, -0.13832693, -0.0050786, 0.09253983, 0.23859836, 0.07963589, 0.07718028, -0.079752676, 0.11433723, 0.011501202), target);\n\ttarget = MulAdd(d3, MF4x4(0.1874364, -0.17093459, 0.010855328, 0.120664425, 0.111470625, 0.1484681, 0.5195336, -0.0069446685, 0.042319857, 0.05145161, -0.039009307, -0.01998825, -0.07303624, 0.09134541, 0.10079329, 0.030079208), target);\n\ttarget = MulAdd(e3, MF4x4(-0.2186243, -0.4428867, 0.092963874, 0.13073802, -0.019760692, 0.08763586, 0.34470505, -0.23975423, -0.49366876, 0.03650021, -0.26312304, -0.10178505, -0.19149905, 0.08961964, -0.03015555, -0.41838256), target);\n\ttarget = MulAdd(f3, MF4x4(-0.028188573, 0.031499006, -0.063600264, 0.24837458, 0.19443984, 0.058427423, 0.28769475, -0.08521067, -0.071029276, 0.14094949, 0.11166354, 0.049317956, -0.010624909, -0.06265303, 0.1114735, 0.02864904), target);\n\ttarget = MulAdd(g3, MF4x4(-0.052337993, -0.017547317, -0.03520667, 0.002673191, 0.1905491, 0.17264749, 0.32332307, 0.061626773, 0.136209, 0.19794804, 0.16509542, -0.04580146, 0.028514566, 0.041068107, 0.043710496, -0.13467996), target);\n\ttarget = MulAdd(h3, MF4x4(0.057524405, -0.0670017, 0.0016474138, 0.10262694, 0.036269784, 0.036402486, 0.44747186, 0.12797451, -0.047264162, 0.0766207, -0.23309897, -0.1266668, 0.074957475, 0.015929028, 0.2692563, 0.036415808), target);\n\ttarget = MulAdd(i3, MF4x4(0.17724822, -0.109371126, -0.0682871, 0.14675598, 0.054630626, 0.062969014, 0.36832303, -0.013787229, 0.024231227, 0.12613758, -0.055872746, -0.04053383, -0.006620505, 0.015584234, 0.035116877, 0.01693195), target);\n\ttarget = MulAdd(na1, MF4x4(0.19397566, 0.07098955, 0.18101004, 0.083367795, -0.070514366, -0.044412676, -0.062800385, 0.068795145, -0.19326128, -0.10733093, -0.1681797, 0.02347941, 0.09339788, 0.15950295, 0.057467394, 0.056237224), target);\n\ttarget = MulAdd(nb1, MF4x4(0.136637, -0.07271869, 0.26881287, 0.34395644, -0.04324773, 0.103202775, -0.16522674, -0.044781554, -0.086582124, 0.054414462, 0.065597564, 0.033376656, -0.111290336, -0.0014986617, -0.2212502, -0.25075877), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.06789657, -0.18068478, 0.09911924, -0.23166406, -0.044929348, -0.031290393, 0.13361748, 0.03413577, -0.040923, 0.049681865, -0.07380375, 0.08915985, 0.07288317, 0.06554518, -0.1643758, 0.055818856), target);\n\ttarget = MulAdd(nd1, MF4x4(0.2203703, -0.037368517, 0.09785233, -0.06491308, -0.092911914, -0.031082682, -0.104810245, 0.034624774, -0.023380022, 0.0052404683, 0.06841838, -0.023614911, -0.03593765, -0.046437703, -0.1844866, -0.14166127), target);\n\ttarget = MulAdd(ne1, MF4x4(0.05909365, -0.36332077, -0.2689632, 0.1739602, -0.45130134, 0.12989542, -0.005341447, -0.06824331, -0.15072067, -0.05676317, -0.13605535, -0.18169174, 0.07681412, 0.124912, -0.021684267, 0.0894891), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.035549298, -0.21778642, 0.097288795, -0.26111203, 0.10414918, 0.0061409012, -0.0556371, -0.032494467, 0.052588258, 0.06812076, -0.16265821, 0.118465446, -0.099786356, 0.0869041, -0.25942245, 0.009399633), target);\n\ttarget = MulAdd(ng1, MF4x4(0.11580169, -0.024714155, 0.010325179, 0.013701658, -0.076200895, 0.10303264, -0.094055474, -0.029318763, 0.07376417, 0.049632907, 0.032555673, 0.10790659, -0.101094194, 0.071630724, -0.109847575, 0.0077851396), target);\n\ttarget = MulAdd(nh1, MF4x4(0.1398949, -0.04883586, 0.23428173, -0.15378661, -0.100387186, 0.009293077, -0.008328632, -0.10520436, 0.035526622, 0.064958505, -0.1684589, -0.12430499, 0.13108692, 0.028732104, -0.0724291, -0.14364761), target);\n\ttarget = MulAdd(ni1, MF4x4(0.13408709, 0.037318103, 0.030060692, -0.02245396, -0.11561478, -0.07266053, -0.14419918, -0.15680459, 0.104011424, 0.0289589, -0.05245363, 0.02856205, -0.0973203, -0.009120509, 0.08775658, -0.08062229), target);\n\ttarget = MulAdd(na2, MF4x4(0.115849026, 0.06085271, -0.015712146, -0.035179697, 0.14623754, -0.027535545, 0.105676346, 0.28401312, 0.00610444, -0.18113948, 0.003972312, 0.022277411, 0.030053148, -0.06660701, -0.007032331, -0.026460487), target);\n\ttarget = MulAdd(nb2, MF4x4(0.105825655, 0.031863045, -0.011142612, -0.023293436, 0.0680703, 0.12657744, -0.31427047, -0.045503054, 0.019428464, 0.055280883, 0.033349436, -0.0824765, 0.04048357, -0.039309558, -0.13541335, -0.0711577), target);\n\ttarget = MulAdd(nc2, MF4x4(0.00587736, 0.066619515, -0.1982745, -0.12112423, -0.001499343, -0.06931127, -0.17176788, 0.030141942, -0.10718468, 0.07443775, -0.12964384, 0.122857764, -0.06771741, -0.07971639, -0.044493467, -0.0075695426), target);\n\ttarget = MulAdd(nd2, MF4x4(0.023990182, 0.052072257, -0.07704469, -0.05818583, 0.2703359, -0.1253082, 0.3321394, 0.51275367, -0.20541172, 0.087123945, -0.21254195, -0.21670723, 0.00083692186, -0.04276457, 0.10195174, 0.03721505), target);\n\ttarget = MulAdd(ne2, MF4x4(0.080449946, 0.18648995, -0.11595206, -0.15039912, -0.07889376, -0.31233358, -0.2996588, 0.551305, -0.20122233, 0.24880885, -0.04481761, -0.3973453, 0.10033973, 0.05511902, 0.029888729, 0.021694044), target);\n\ttarget = MulAdd(nf2, MF4x4(0.03702065, -0.088798195, 0.06667468, 0.044227604, 0.07188657, -0.04998249, 0.2439061, -0.1476103, -0.064125344, 0.034045372, -0.13339408, 0.109842144, 0.19029056, -0.029507356, -0.08236508, 0.07658855), target);\n\ttarget = MulAdd(ng2, MF4x4(0.028597932, -0.03854459, 0.047724374, 0.065792255, -0.09860975, -0.08000352, 0.10390718, 0.23593639, -0.11188388, 0.016842902, -0.11817977, 0.06368645, 0.055055078, 0.058349103, -0.08001618, -0.024517627), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.16921136, -0.04083932, -0.00835477, 0.2030543, -0.012638247, -0.27452287, 0.0956476, -0.04617994, 0.15653826, 0.06020273, -0.10202549, -0.06836085, 0.11841569, 0.048987422, -0.07977096, -0.012123196), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.0235341, -0.046976402, 0.032694343, -0.16520928, -0.017081633, -0.03708282, 0.07898976, -0.11212351, 0.11997062, 0.15722035, 0.06421537, 0.00097069755, 0.037570357, -0.040770754, -0.0743307, 0.0534563), target);\n\ttarget = MulAdd(na3, MF4x4(0.09699342, -0.09981163, -0.10912867, 0.10897145, -0.030223582, -0.014247349, -0.03482929, -0.01305651, -0.038396984, 0.009796579, -0.1132907, 0.077554524, 0.031296402, 0.014200385, 0.22940783, 0.13804206), target);\n\ttarget = MulAdd(nb3, MF4x4(0.1207108, -0.1887047, 0.15963583, 0.03816067, -0.017255, 0.008443818, -0.065400094, 0.044166937, 0.17263496, 0.14113733, 0.082817905, 0.082012236, 0.096803635, -0.06069386, -0.062445905, -0.04569513), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.03677858, 0.027012087, -0.20495425, 0.16764086, -0.025615353, -0.0020314269, 0.007159334, -0.0044264444, -0.04242938, -0.04116411, -0.063763745, -0.016643412, -0.022430163, -0.09297498, 0.0027288082, 0.09743419), target);\n\ttarget = MulAdd(nd3, MF4x4(0.098948084, -0.13285282, 0.19235732, 0.2794696, 0.004499766, -0.015963264, -0.0557736, 0.0024319638, -0.048159864, 0.029840004, -0.32350582, -0.21436322, 0.11063215, -0.07647232, -0.061627094, -0.09123133), target);\n\ttarget = MulAdd(ne3, MF4x4(0.13004114, -0.12624854, -0.1305723, -0.18789066, 0.041747153, 0.019262334, 0.17703997, 0.02054544, 0.16357894, 0.09787803, 0.07931654, 0.23711719, 0.07959038, -0.14655703, 0.19117653, 0.5182774), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.021226425, -0.15988874, -0.25700846, 0.08832854, 0.012499655, 0.011893902, 0.029938264, -0.0056565106, -0.047849346, -0.07041324, 0.1554268, -0.09428568, -0.057141136, 0.0027243465, 0.08234678, 0.028744241), target);\n\ttarget = MulAdd(ng3, MF4x4(0.011884608, -0.14763886, -0.021171318, 0.14934142, -0.018248998, -0.024268437, -0.014130621, -0.0027485457, -0.0809039, 0.05827554, -0.14076029, -0.1408414, 0.033655114, -0.113111265, 0.007957397, 0.024406865), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.03952874, -0.10756346, -0.21955557, 0.07950554, -0.05224832, -0.0015799722, 0.019645864, 0.046215426, 0.025174068, 0.05614136, -0.02355428, 0.12604117, -0.05630602, -0.104844145, 0.0040577715, 0.20292816), target);\n\ttarget = MulAdd(ni3, MF4x4(0.08337458, -0.04375854, 0.12814969, -0.0505745, -0.02162198, -0.022859862, -0.009827576, -0.06884463, -0.13378213, -0.024044786, -0.1587514, -0.09542159, -0.079674646, -0.118072495, -0.015328217, -0.034902822), target);\n\tconv2d_3_tf[gxy] = target;\n\t\n\ttarget = MF4(-0.06898461, -0.06177714, -0.06478548, 0.022993876);\n\ttarget = MulAdd(a1, MF4x4(0.104435995, 0.08523803, 0.13313451, 0.01485225, -0.067918435, 0.17933276, 0.021827344, 0.0296916, -0.07059249, 0.0037901546, 0.016877035, -0.029718481, 0.013821487, 0.0051245163, -0.009027754, -0.0703365), target);\n\ttarget = MulAdd(b1, MF4x4(-0.13151535, 0.05132924, 0.2739186, 0.48619145, 0.13476053, 0.3685631, -0.027353717, -0.07500873, -0.05480841, -0.014034983, -0.085864894, 0.08971871, 0.07406436, -0.01183941, 0.16449541, -0.06773314), target);\n\ttarget = MulAdd(c1, MF4x4(0.013538097, 0.1583598, -0.055277165, 0.07637614, 0.07473682, 0.22345996, 0.030919895, -0.06126728, 0.02978074, -0.10157281, -0.1264838, 0.00084818545, 0.10940815, -0.0269847, 0.063068226, -0.03479123), target);\n\ttarget = MulAdd(d1, MF4x4(0.043592498, 0.18918565, 0.21017411, -0.023375075, -0.021484343, -0.06985366, 0.21826547, -0.00875028, 0.07610231, -0.08861247, 0.03791508, 0.0031226536, -0.028661136, 0.060399413, 0.0592066, -0.06264682), target);\n\ttarget = MulAdd(e1, MF4x4(0.21633635, 0.22528979, 0.47684777, -0.058535807, 0.08307837, -0.19632038, 0.12323838, -0.02472063, 0.056115244, 0.07563149, -0.083180495, -0.07311292, 0.03583403, -0.2776853, -0.20366116, -0.022084663), target);\n\ttarget = MulAdd(f1, MF4x4(0.057834644, 0.19703801, -0.047718063, 0.079801254, 0.12549312, 0.026414996, 0.023341564, 0.082731344, 0.14167784, 0.048134133, -0.04772942, 0.09571532, -0.097056195, 0.007009441, 0.06857669, 0.026794193), target);\n\ttarget = MulAdd(g1, MF4x4(0.041096892, 0.006188847, 0.11750499, -0.13447829, 0.0017394158, 0.01783059, 0.15956202, -0.03767544, 0.02673659, -0.05342451, -0.14283001, 0.004724371, -0.024063434, 0.023162393, 0.054349884, -0.10900122), target);\n\ttarget = MulAdd(h1, MF4x4(0.07189023, 0.014259161, -0.028867813, -0.045834795, 0.14308538, 0.17444627, 0.17258337, 0.022358263, -0.05739824, 0.07874781, 0.00055093376, -0.12329737, -0.063672766, 0.025692929, -0.052464493, 0.17745042), target);\n\ttarget = MulAdd(i1, MF4x4(0.026802428, 0.13577338, -0.06985617, 0.074659124, 0.1569288, 0.08905961, 0.012837567, -0.052218303, -0.025591483, 0.119624466, 0.024393069, 0.19790728, -0.037801497, 0.05334152, 0.019320685, -0.012112278), target);\n\ttarget = MulAdd(a2, MF4x4(0.05892214, -0.032721363, -0.045643594, -0.030719811, -0.104445435, -0.1574105, -0.06973961, 0.0880568, -0.015203705, -0.13851601, -0.01675903, -0.025943246, 0.05482791, -0.08070468, 0.0048817545, -0.2195491), target);\n\ttarget = MulAdd(b2, MF4x4(0.21571757, -0.1806072, -0.010998025, 0.020393362, 0.021816706, -0.018158916, -0.11101471, 0.016325697, -0.12101562, -0.049236, -0.20187455, 0.1455995, 0.04611496, 0.08955074, -0.098323554, 0.009564463), target);\n\ttarget = MulAdd(c2, MF4x4(0.005143037, 0.031717982, -0.050139457, -0.1109613, 0.03775848, 0.00954106, -0.06293631, 0.0890101, -0.00040289984, -0.03748492, -0.06439364, 0.07678777, 0.08420904, -0.019876583, -0.122263946, -0.06204237), target);\n\ttarget = MulAdd(d2, MF4x4(-0.20215075, 0.050689973, -0.046013024, 0.0023596657, -0.15971628, -0.20731676, 0.12560777, 0.29917854, -0.111574054, -0.04077845, -0.11790463, 0.04522926, 0.18117487, -0.17887163, -0.09449106, -0.32954872), target);\n\ttarget = MulAdd(e2, MF4x4(-0.048394788, 0.0773854, 0.069474846, -0.15471548, -0.22533698, -0.03836189, 0.042107325, 0.07787484, -0.19023094, -0.31975862, 0.027023884, 0.22310641, -0.30156738, -0.18671185, 0.10680384, -0.17596984), target);\n\ttarget = MulAdd(f2, MF4x4(-0.049384125, -0.10053522, -0.02494229, 0.13089181, 0.12716612, -0.011930183, -0.055107582, -0.011396776, -0.037174955, -0.07332422, -0.037290994, -0.020584442, 0.12331001, -0.15849335, -0.11254808, -0.0070635113), target);\n\ttarget = MulAdd(g2, MF4x4(0.10335844, 0.014899349, -0.064154595, -0.0028669129, 0.034805696, -0.18495506, 0.005376811, 0.08496156, 0.013403576, -0.014818112, -0.01596864, -0.03724775, 0.07349724, -0.0763195, 0.0443468, -0.22289227), target);\n\ttarget = MulAdd(h2, MF4x4(0.121551886, 0.006529306, -0.013299677, -0.19693732, -0.0043474436, -0.19871178, -0.052884568, 0.074092165, -0.038850788, 0.033550348, -0.08163774, 0.06271596, 0.20859785, 0.0067883697, -0.046475146, -0.48063815), target);\n\ttarget = MulAdd(i2, MF4x4(0.083180554, 0.052318644, 0.03218632, 0.11313337, -0.031635284, -0.09441545, -0.004538136, 0.03766669, -0.15290408, 0.029063439, -0.08709602, 0.20032041, 0.10752559, -0.025936332, -0.16803461, -0.31867516), target);\n\ttarget = MulAdd(a3, MF4x4(-0.011112246, 0.05966688, 0.08825975, -0.06790863, -0.0754694, -0.19575286, 0.08554758, -0.18269138, -0.1280453, 0.18379766, -0.08955887, 0.17286651, -0.013172642, -0.0035751443, 0.055351105, -0.02254156), target);\n\ttarget = MulAdd(b3, MF4x4(-0.11329527, 0.181477, -0.054028887, 0.037797876, -0.14424248, -0.15426451, -0.0749264, -0.15829895, -0.09827482, 0.13866791, 0.013977896, 0.3066159, 0.03892076, 0.0022721966, 0.088637464, -0.18673263), target);\n\ttarget = MulAdd(c3, MF4x4(0.052434247, 0.1075718, 0.09951973, -0.026689908, -0.082213305, -0.068657055, -0.10954474, -0.36598998, 0.059983972, 0.071539626, 0.105706535, -0.014004922, -0.04493435, -0.00943364, 0.014306285, -0.086277805), target);\n\ttarget = MulAdd(d3, MF4x4(-0.07653824, -0.05569481, 0.12022612, -0.02960086, -0.0827238, -0.12082348, 0.018902717, -0.17416616, -0.03121552, 0.008206833, -0.10166017, 0.0037599066, -0.009543466, 0.0020527479, 0.050042894, -0.10293714), target);\n\ttarget = MulAdd(e3, MF4x4(0.14261888, -0.1898871, -0.15847605, 0.028050601, -0.016525509, -0.03094436, -0.19239494, -0.18140908, 0.14230183, -0.33403888, -0.39611194, 0.13778488, 0.1988197, -0.06581933, 0.002683303, -0.108148), target);\n\ttarget = MulAdd(f3, MF4x4(-0.037351307, -0.09952294, 0.024785696, -0.0168355, -0.07218153, -0.1065052, -0.081961505, -0.15091445, 0.18406965, 0.13677996, -0.14867578, 0.089149386, -0.05840212, -0.059798297, -0.0201243, -0.029525604), target);\n\ttarget = MulAdd(g3, MF4x4(-0.009857878, -0.087470345, 0.011972532, -0.13542594, 0.0354294, -0.20797616, -0.024621738, -0.08760984, 0.072218195, -0.13620329, -0.050354343, -0.17628804, 0.0071922955, 0.0018819867, -0.03858231, 0.018087402), target);\n\ttarget = MulAdd(h3, MF4x4(-0.1553403, -0.03627257, 0.004989727, -0.0921159, -0.05149391, -0.21778369, -0.06126919, -0.072652444, 0.22329745, -0.11201775, -0.122997835, 0.05540077, -0.07249663, 0.0042517297, -0.05706445, 0.017356722), target);\n\ttarget = MulAdd(i3, MF4x4(-0.05847665, -0.015685597, 0.14335254, -0.007372796, -0.0077773617, -0.08556339, 0.06739385, -0.04068274, 0.15799382, 0.038163103, 0.05265575, -0.08238097, 0.040807348, -0.07065019, 0.028166778, -0.15436243), target);\n\ttarget = MulAdd(na1, MF4x4(-0.16044334, 0.283655, -0.022656776, 0.08448171, -0.038254652, -0.044832315, 0.08454063, 0.007472126, -0.009800128, 0.18591672, 0.10872203, -0.058036473, -0.098420285, 0.023155827, -0.04196021, 0.09891162), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.17852576, 0.54625523, -0.081733584, 0.081366554, -0.069625385, -0.11218507, 0.028421586, 0.071588986, -0.014985082, -0.087979324, 0.3142317, -0.19760501, -0.16015647, 0.13895224, -0.2701074, 0.30648437), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.014566373, 0.02057931, 0.10014358, 0.06578205, -0.15359782, -0.11839336, 0.13061163, 0.076945096, -0.01413561, -0.013397205, 0.015244041, -0.10279087, 0.09975661, -0.023128696, -0.016278943, 0.18001132), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.06356644, 0.14646067, 0.016344864, -0.013904187, 0.064943634, -0.1281504, -0.06950529, -0.028252209, -0.011304186, 0.04061305, 0.09251525, -0.05251633, 0.09714447, -0.05430799, -0.17469239, 0.1850043), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.14378282, 0.22984904, 0.32252252, 0.26133427, 0.45289674, 0.14866802, -0.24101377, -0.18861331, -0.030501021, -0.1883431, -0.13604005, -0.15657176, 0.020317623, 0.23096721, 0.10420801, 0.15710264), target);\n\ttarget = MulAdd(nf1, MF4x4(0.06454669, -0.04189079, 0.056962494, -0.04948231, -0.2148223, -0.039649688, -0.0113121355, 0.20814565, 0.111416936, -0.035151463, -0.056465276, -0.080573045, -0.07819258, 0.018179936, -0.2283728, 0.12155499), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.02560027, 0.070398115, -0.02989104, 0.028688442, 0.04278315, 0.013474358, -0.07253673, 0.02276444, 0.12581308, -0.03901054, 0.08311041, -0.08153711, 0.02564736, -0.043852035, -0.028089473, -0.044236403), target);\n\ttarget = MulAdd(nh1, MF4x4(0.09625976, 0.005770156, 0.16631871, -0.1034893, -0.19147423, 0.004631949, -0.07540428, 0.015621006, 0.03929467, 0.04762953, -0.080173716, -0.10179307, 0.059833538, 0.05659006, -0.13382521, -0.0313998), target);\n\ttarget = MulAdd(ni1, MF4x4(0.07715199, -0.03317866, -0.024203375, -0.1298324, -0.09655965, -0.026206894, 0.18922973, 0.07624604, -0.007847103, -0.058786727, -0.049493928, 0.019805223, -0.008090047, -0.019503202, -0.064513676, 0.10351463), target);\n\ttarget = MulAdd(na2, MF4x4(0.022054255, -0.07858889, -0.10127163, -0.06832876, -0.07584891, 0.04215273, -0.0029053919, 0.08290376, -0.03475005, 0.08332925, 0.009553486, 0.07245685, -0.017920833, 0.015080806, -0.0002565289, 0.006093501), target);\n\ttarget = MulAdd(nb2, MF4x4(0.09178481, 0.013873079, -0.02395207, -0.133258, -0.08877421, -0.21369275, -0.11754095, 0.17205496, 0.012909828, 0.10264451, 0.23808923, 0.055029023, 0.034399036, -0.046347205, 0.0067525543, 0.0777463), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.02699122, 0.04746888, -0.113287434, -0.025223, -0.005920497, -0.21902934, -0.13731015, 0.014423957, 0.036004063, 0.05559045, -0.0655789, 0.13083544, -0.06181434, 0.042077873, 0.022695009, 0.043042142), target);\n\ttarget = MulAdd(nd2, MF4x4(0.05076442, -0.06772015, -0.044568565, -0.018430268, -0.046832457, 0.14489225, 0.118378006, 0.053310696, 0.117090195, 0.23086876, 0.058276806, -0.03198186, -0.026497893, 0.09645919, 0.08429416, -0.022437949), target);\n\ttarget = MulAdd(ne2, MF4x4(0.06788362, -0.071499035, -0.03412108, -0.1442882, -0.061426826, 0.15115702, 0.20443979, 0.42235458, 0.34301203, 0.15906362, -0.4573595, -0.38218448, 0.074763715, 0.03956433, -0.2741876, -0.045825735), target);\n\ttarget = MulAdd(nf2, MF4x4(0.042785604, 0.086842, 0.06526033, -0.26330376, -0.13392642, -0.09802622, -0.060285453, -0.04659627, 0.063904576, 0.030205727, -0.02990855, -0.03692373, 0.009259516, -0.033007562, -0.027945964, 0.12487634), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.04833785, 0.025812654, 0.09670586, -0.0398005, 0.084576905, 0.006827775, 0.21430464, -0.062337395, 0.01071662, 0.042277753, -0.07786652, 0.080589384, 0.050834, -0.018442666, -0.10043296, 0.0051965285), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.06940597, 0.0052362564, 0.11979121, 0.002420146, -0.014626038, -0.033247836, 0.07638099, 0.024731234, 0.13817027, -0.034607813, 0.069013715, -0.1591328, 0.017410269, 0.020814985, -0.071453065, 0.07467316), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.03586743, 0.0875829, 0.14604242, -0.08374493, -0.015870938, -0.037566822, -0.04257119, 0.013528102, 0.051471747, -0.00025074458, -0.043193746, -0.10538127, -0.0122199105, -0.0105835805, 0.096613646, -0.0008547738), target);\n\ttarget = MulAdd(na3, MF4x4(-0.09195929, -0.01251629, 0.1138194, -0.03152187, -0.027415436, 0.017695861, -0.05137721, -0.0006171527, 0.021749081, 0.070172004, 0.057883944, -0.031044329, -0.036268383, -0.17082807, -0.0331674, -0.03538632), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.27754265, -0.029477704, 0.34336638, -0.0011287191, -0.025141917, 0.034894004, 0.048627432, 0.053214233, -0.053281713, 0.03867139, -0.028029127, 0.09459172, 0.008080466, -0.122576915, -0.020655254, -0.1817124), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.1662597, -0.15292045, -0.0053951927, -0.067345075, 0.00020036062, -0.0026049272, -0.038856488, 0.00017393462, -0.03796784, -0.03248859, -0.024195418, 0.06486219, 0.09273242, -0.1581097, 0.03317699, -0.08153722), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.11341117, 0.036644243, 0.20370142, -0.12600902, 0.02261616, -0.033919003, 0.028898139, 0.019782161, 0.20895214, -0.09579635, -0.08383094, -0.04259736, 0.0101915635, -0.034835722, 0.05754228, 0.027356239), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.104123175, 0.122171596, 0.2642155, -0.08453785, 0.019124847, -0.03925304, 0.08668516, -0.16025878, -0.17377967, 0.3448709, 0.024630664, -0.080416046, -0.41245192, 0.062051725, 0.0105510065, -0.19370769), target);\n\ttarget = MulAdd(nf3, MF4x4(0.021447789, -0.06635468, 0.01480373, 0.04688862, 0.02536135, 0.031706117, 0.019310655, -0.045567643, -0.109611645, -0.11746073, 0.07113426, 0.16584454, 0.05936068, -0.027226295, 0.073482916, -0.12929685), target);\n\ttarget = MulAdd(ng3, MF4x4(0.0190673, 0.0045874445, 0.09324168, -0.13466571, 0.010220709, 0.037733227, -0.0111948475, 0.006582617, -0.027675852, 0.103390485, -0.15095036, 0.1242396, 0.04393306, -0.0034322627, 0.12748775, -0.08938276), target);\n\ttarget = MulAdd(nh3, MF4x4(0.05321518, 0.025193566, 0.17684115, -0.017202778, -0.019295435, -0.046254706, 0.055901498, 0.02723333, -0.1394657, 0.054581758, -0.0807223, -0.047655288, 0.048698746, -0.045940652, 0.19415994, 0.0033838819), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.017342623, 0.116635494, 0.012575626, 0.04339496, 0.0025065525, -0.004621888, -0.049964648, 0.0034235734, 0.04433295, 0.033285826, -0.11080989, 0.124883905, 0.06634157, -0.040422186, -0.04232008, 0.07501063), target);\n\tconv2d_3_tf1[gxy] = target;\n\n\ttarget = MF4(0.067609355, -0.057853002, -0.09608125, 0.087347224);\n\ttarget = MulAdd(a1, MF4x4(0.0349472, -0.09146782, -0.015455071, -0.02013195, -0.013576279, 0.1715199, -0.060827523, -0.060094133, -0.06020249, -0.02977466, -0.010053687, -0.0333128, 0.08293437, 0.08380394, -0.062162157, 0.09678952), target);\n\ttarget = MulAdd(b1, MF4x4(0.09930308, -0.07924828, 0.013899443, -0.44464898, -0.03707883, -0.006584696, -0.05389371, -0.060199857, -0.019344926, -0.01931973, -0.09749517, -0.0686553, -0.07339165, -0.048708685, 0.01131454, 0.1376503), target);\n\ttarget = MulAdd(c1, MF4x4(-0.26070634, 0.040811583, 0.116160385, 0.21038511, -0.27048224, 0.0031473516, 0.032511245, 0.121619865, 0.047579095, -0.114472836, 0.058695633, 0.019592037, -0.03866724, 0.15776725, -0.008668879, 0.05827778), target);\n\ttarget = MulAdd(d1, MF4x4(0.121598184, 0.08180447, -0.03398555, -0.063269034, 0.20604548, 0.0030689642, -0.009161656, -0.10142109, -0.09195833, -0.12376092, -0.05792068, 0.071478724, 0.055384632, 0.0047193686, -0.037130035, -0.04934333), target);\n\ttarget = MulAdd(e1, MF4x4(0.12193808, 0.1254089, 0.4908329, -0.21140434, 0.12811103, -0.15737641, -0.23926133, 0.43005112, 0.15134192, -0.08466868, 0.12739879, 0.0066337097, 0.16472779, -0.105588906, -0.22597887, 0.14652383), target);\n\ttarget = MulAdd(f1, MF4x4(-0.16729999, -0.03391507, 0.07358867, 0.060984816, -0.12153663, 0.06727532, 0.18193701, 0.08977565, 0.11250762, -0.018742424, -0.15230577, -0.14556353, 0.16327548, 0.095403135, -0.13089553, 0.072550654), target);\n\ttarget = MulAdd(g1, MF4x4(0.13752456, 0.03894747, 0.031068675, 0.023082117, 0.17917861, 0.07080096, -0.011008945, -0.09391019, -0.006836284, -0.015607849, 0.046196267, 0.015853055, -0.12630671, -0.081082314, -0.086036764, 0.1590758), target);\n\ttarget = MulAdd(h1, MF4x4(0.012728998, -0.09810741, 0.14294422, -0.059659157, 0.03056563, -0.024036996, -0.015403818, -0.118189946, -0.051906176, -0.17971419, -0.0959625, 0.08985921, 0.10979987, 0.10597462, -0.043452974, 0.03186385), target);\n\ttarget = MulAdd(i1, MF4x4(0.020659165, 0.049573228, 0.051704157, 0.028366942, 0.022190692, -0.051479015, 0.054295983, -0.017384693, 0.0026946815, 0.010077197, -0.012801315, 0.0016714733, 0.08869389, 0.05164402, 0.03406929, -0.037191015), target);\n\ttarget = MulAdd(a2, MF4x4(-0.10028344, -0.16634189, 0.019711684, 0.020383958, -0.084915325, 0.11053288, -0.07768085, -0.01981037, 0.107243344, -0.012217411, -0.023985125, -0.08483301, -0.19850655, -0.06305865, 0.03655547, 0.06864395), target);\n\ttarget = MulAdd(b2, MF4x4(0.20698719, -0.2885775, 0.059498087, -0.008909828, -0.08331985, 0.13849287, 0.032946825, 0.14271452, -0.104721665, 0.12004092, 0.14654724, -0.004502498, 0.006716589, -0.17328952, 0.014115839, -0.016801946), target);\n\ttarget = MulAdd(c2, MF4x4(0.041014872, -0.080156274, -0.043762606, 0.0528254, -0.04514068, -0.073835544, 0.04116111, -0.0028962197, 0.06113734, -0.00660851, 0.04496306, -0.19104107, 0.10144654, -0.19428198, -0.04189575, -0.027004357), target);\n\ttarget = MulAdd(d2, MF4x4(0.076202326, 0.031882156, -0.08089088, 0.02722187, -0.24690835, -0.035489604, 0.17377102, -0.046913855, 0.09538933, 0.13880032, 0.032495037, -0.053468306, 0.018272033, -0.13557187, -0.0016809801, 0.16564687), target);\n\ttarget = MulAdd(e2, MF4x4(-0.1318004, 0.0781202, 0.026608787, 0.2782413, -0.015252272, 0.06966941, 0.6830404, -0.21273687, 0.035827838, -0.013433616, -0.19725588, 0.115758345, 0.12179782, -0.1338549, -0.041967906, 0.3419551), target);\n\ttarget = MulAdd(f2, MF4x4(-0.06732849, -0.00047242, -0.09643446, -0.048419215, 0.030914927, -0.13920021, 0.08296221, 0.042942315, 0.18975921, 0.023672665, -0.08061805, -0.11823857, -0.055623423, -0.1345549, 0.1951731, 0.10466201), target);\n\ttarget = MulAdd(g2, MF4x4(-0.042122774, -0.14092919, 0.097806625, -0.16809812, -0.0017256415, 0.07320015, 0.02623979, 0.056631763, -0.059066445, 0.050315112, 0.022210397, 0.020917628, 0.07918204, -0.047513902, -0.022105288, 0.017238917), target);\n\ttarget = MulAdd(h2, MF4x4(-0.10645019, -0.2826466, 0.06739196, 0.09756199, 0.031106336, -0.08260654, -0.036933657, 0.050086416, 0.0987824, -0.033137392, 0.08894681, -0.23773453, 0.023050837, -0.23565383, -0.09519961, 0.09613443), target);\n\ttarget = MulAdd(i2, MF4x4(-0.05644008, -0.21541502, 0.11537729, -0.13721548, -0.020957267, 0.10175056, -0.052707233, 0.17628355, 0.028461214, 0.3014536, -0.038585383, -0.014727664, -0.044595238, -0.10416226, -0.04355546, 0.22365475), target);\n\ttarget = MulAdd(a3, MF4x4(-0.08733939, 0.08058479, -0.004023699, -0.025807053, -0.002117148, -0.23746334, 0.065963335, 0.020958645, -0.22460108, -0.009205423, -0.07651075, -0.15989082, 0.05807728, 0.023019457, -0.05400351, 0.075997986), target);\n\ttarget = MulAdd(b3, MF4x4(-0.18092917, 0.29806077, 0.024918934, 0.114404745, 0.049839694, -0.18546863, 0.12478854, 0.13304788, -0.15392973, 0.051560715, -0.06856269, -0.3036006, 0.08124072, -0.05298596, -0.030516481, 0.12273301), target);\n\ttarget = MulAdd(c3, MF4x4(-0.09820723, 0.08067553, 0.029639702, 0.03668786, -0.10049537, -0.19294576, 0.17826727, 0.1635976, -0.16384046, -0.1220917, 0.008744192, 0.012697882, -0.043205783, 0.10298051, 0.021135183, 0.15958472), target);\n\ttarget = MulAdd(d3, MF4x4(0.021761253, 0.1893263, -0.0020750812, 0.14222866, -0.103759706, -0.13740262, 0.08272797, -0.059319258, 0.13402042, -0.07973959, 0.08683529, -0.15174694, -0.1330933, -0.036825962, -0.0028282823, 0.021407785), target);\n\ttarget = MulAdd(e3, MF4x4(0.12504603, 0.2479715, -0.35803804, -0.026018003, 0.022745723, -0.07542199, 0.23766859, -0.056435704, 0.033115927, 0.22251359, 0.09025703, -0.39158693, 0.28631303, -0.13876301, -0.4956844, 0.55813307), target);\n\ttarget = MulAdd(f3, MF4x4(0.16973238, 0.107451506, -0.10936354, 0.025205612, -0.0154478075, -0.22515228, 0.0618484, -0.053435117, -0.1634102, -0.2720532, 0.22150621, 0.0012615388, 0.045661222, 0.028745374, 0.043213993, 0.014749005), target);\n\ttarget = MulAdd(g3, MF4x4(0.08600755, 0.11467286, -0.030524427, 0.025168872, -0.10489299, -0.37458676, 0.07771989, -0.0042441254, -0.11694848, -0.35681316, 0.04747507, -0.0027261428, -0.025253184, -0.08753649, -0.006478329, -0.027177837), target);\n\ttarget = MulAdd(h3, MF4x4(-0.0007465437, 0.28975293, -0.18405293, 0.119266, -0.10667221, -0.1802464, 0.19241495, 0.02650873, 0.010430683, -0.23149595, -0.031080026, -0.0006125235, 0.037027247, -0.09754189, 0.04630445, -0.018924896), target);\n\ttarget = MulAdd(i3, MF4x4(0.019050436, 0.17480409, -0.13520603, 0.09094483, -0.02445997, -0.21114577, 0.050991118, -0.029637761, -0.16994584, -0.2239252, 0.11126132, -0.06577722, 0.056996938, 0.006512977, -0.049459394, 0.07697084), target);\n\ttarget = MulAdd(na1, MF4x4(0.16364041, -0.058814153, -0.07960281, -0.22106613, 0.051421925, 0.13432528, 0.03029435, -0.053310465, -0.043934733, 0.28936264, -0.07070681, -0.04899224, -0.11805805, -0.028338438, 0.100599535, -0.048358817), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.14466347, 0.2542083, 0.114321895, 0.060320944, 1.432933e-05, -0.009625721, -0.037658967, -0.22428983, -0.0722048, 0.03882146, 0.17885631, 0.16377795, 0.112711646, -0.13564147, -0.022007236, -0.20185186), target);\n\ttarget = MulAdd(nc1, MF4x4(0.1199308, 0.065274626, 0.040273953, -0.029960137, 0.14304884, 0.059161276, -0.02586767, -0.19456553, -0.020681847, -0.03329421, 0.026978612, 0.06485361, 0.088268556, -0.0095202075, -0.1777034, -0.06573516), target);\n\ttarget = MulAdd(nd1, MF4x4(0.19750524, -0.124522515, 0.04549369, -0.14726287, -0.13690545, 0.06770214, 0.105929896, 0.10787474, 0.21234562, 0.15915224, 0.12821364, -0.10518945, -0.019162156, 0.060908437, 0.0070991656, -0.05853554), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.332194, -0.1090442, 0.11825454, 0.0843628, -0.03258615, 0.08459736, 0.11480732, -0.047636237, -0.095243596, 0.07337737, -0.11959047, 0.14512871, 0.034495726, -0.086968474, 0.19812642, -0.013120597), target);\n\ttarget = MulAdd(nf1, MF4x4(0.038461242, 0.03316589, 0.09561463, 0.18557192, -0.010941443, 0.0907286, -0.016086651, -0.23144832, -0.044253506, -0.058702238, -0.0011041966, -0.045634367, -0.09162548, -0.045157652, -0.021990022, 0.13162635), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.02456783, -0.03417151, 0.053517457, 0.0039862576, -0.005629444, -0.027595684, -0.09233445, -0.05521366, -0.028361535, -0.10314045, 0.05208228, -0.01962492, -0.096213296, -0.024513567, -0.05102384, 0.13520533), target);\n\ttarget = MulAdd(nh1, MF4x4(0.08790174, -0.1792104, 0.06702363, 0.036870077, -0.08648169, 0.2826172, -0.17046972, 0.019982012, -0.036582787, -0.055289216, -0.008255741, 0.004824183, 0.03871658, 0.032730278, -0.05807295, 0.06396422), target);\n\ttarget = MulAdd(ni1, MF4x4(0.032679293, -0.15864716, 0.06863736, 0.038946554, -0.009387644, 0.2248399, -0.022594031, -0.18380828, 0.08792525, -0.053283963, -0.112759285, 0.027726877, -0.086085774, -0.12300368, 0.05827494, -0.17386718), target);\n\ttarget = MulAdd(na2, MF4x4(0.08048039, -0.1314228, -0.037761286, 0.047317382, -0.08880487, 0.06179501, 0.07499687, 0.05924045, -0.045838207, 0.18014897, -0.025729936, 0.16530922, 0.06670338, 0.048252247, -0.012380218, 0.02654277), target);\n\ttarget = MulAdd(nb2, MF4x4(0.090738244, -0.07097098, 0.02538609, 0.025717502, -0.031697266, -0.09336655, -0.018525556, -0.18561147, 0.036027636, -0.044611387, -0.06725372, -0.183522, 0.0788194, -0.02451563, 0.034200825, -0.032755863), target);\n\ttarget = MulAdd(nc2, MF4x4(0.06220659, -0.042783756, -0.021792164, -0.0828951, -0.060966644, 0.0074828877, 0.10836738, 0.12144929, -0.07855744, -0.022806635, 0.02449449, -0.08472964, -0.00337497, 0.14822102, -0.0063337362, -0.022158459), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.015443758, -0.14636597, 0.092075996, -0.032396555, 0.57801515, -0.038087387, -0.002455976, -0.21212098, -0.25436863, -0.0014624707, -0.06944989, 0.041554075, 0.07314171, -0.031875722, -0.0898564, -0.009711315), target);\n\ttarget = MulAdd(ne2, MF4x4(0.39667594, -0.19510192, -0.15319824, 0.09397803, 0.11162815, 0.08910584, -0.17241088, -0.32170787, 0.099810265, -0.24704264, 0.3502755, 0.076993406, -0.011241086, -0.027046101, 0.24804646, -0.03629868), target);\n\ttarget = MulAdd(nf2, MF4x4(0.04532466, -0.025737574, 0.076878645, -0.022860521, -0.21166173, 0.0066573257, 0.11451736, 0.098494835, 0.054614626, 0.0324795, -0.07475363, -0.016862292, 0.12980871, -0.12060518, -0.078866445, -0.037514597), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.077329785, 0.20992881, -0.024529329, 0.032680444, 0.28252345, -0.053790633, 0.17370275, -0.14319752, -0.19114175, 0.012085368, 0.0410558, 0.08803704, -0.077949844, -0.15750417, 0.030377569, 0.0388851), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.063492425, 0.12690471, 0.008844376, -0.14553507, 0.17035894, 0.18411207, 0.21632117, -0.015488823, -0.02806988, -0.13371038, -0.12625034, 0.20475954, -0.059775293, -0.055161443, -0.05210265, 0.15280373), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.03649832, 0.09987268, 0.05120556, 0.025184184, -0.058899805, -0.07387821, 0.18710648, -0.10555811, -0.02759419, -0.19976474, -0.064043306, 0.030171674, 0.016179368, 0.04791283, -0.053911958, 0.050767425), target);\n\ttarget = MulAdd(na3, MF4x4(0.03843477, 0.25258064, 0.016070124, 0.028574495, -0.0068474114, 0.06865137, 0.022342455, -0.0075285095, -0.025927907, 0.029985406, 0.013440689, -0.012433278, 0.014569347, -0.11100144, 0.12033138, 0.010771042), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.015851736, 0.3167264, -0.0836191, -0.005717406, -0.064080216, 0.070136465, -0.06756247, -0.023658438, 0.011184833, -0.17086872, -0.01512278, -0.13807635, -0.077147275, 0.06359306, 0.044558518, 0.17371671), target);\n\ttarget = MulAdd(nc3, MF4x4(0.016337229, 0.2540961, -0.1538914, 0.05068191, 0.027084729, 0.00067840813, -0.00576344, -0.00596408, -0.011028981, 0.036047217, 0.03535427, -0.0008666505, -0.01604948, -0.035426773, 0.09279044, 0.16961862), target);\n\ttarget = MulAdd(nd3, MF4x4(0.26191124, 0.17618547, -0.060725193, -0.10107231, 0.028958656, 0.0012716176, 0.0041506914, -0.0021748038, -0.35696867, -0.09372129, 0.12742971, 0.23923989, 0.09219072, 0.024196591, 0.003192825, -0.041768644), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.17835465, 0.8621154, 0.32936049, -0.058551144, -0.021967549, -0.15256044, 0.07056792, -0.010208738, -0.25470692, -0.31490391, -0.16554967, 0.08553254, -0.14494352, 0.077428155, 0.29464936, -0.25275782), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.06149193, 0.16008708, 0.08229276, 0.027298545, -0.043383293, -0.025251184, 0.035522345, 0.043242358, -0.016117992, 0.0016717165, -0.011271885, -0.08116671, -0.06230632, -0.0059490846, 0.06996346, 0.087275974), target);\n\ttarget = MulAdd(ng3, MF4x4(0.2020623, 0.18089826, -0.052554823, 0.09357937, 0.007033659, 0.026354209, 0.013584589, -0.005457746, -0.22913294, 0.13770905, -0.056017175, 0.027802086, 0.18037985, 0.03405338, 0.006718533, 0.02469646), target);\n\ttarget = MulAdd(nh3, MF4x4(0.028112786, 0.16723098, 0.0066787126, 0.07016463, 0.046073828, 0.044055372, -0.047022585, -0.060435526, -0.041117955, 0.03657766, 0.0816698, -0.15707959, 0.22355783, 0.020610418, 0.0853779, -0.12445744), target);\n\ttarget = MulAdd(ni3, MF4x4(0.05012942, -0.045172162, 0.08681702, -0.06541369, -0.01762828, 0.011376011, 0.015611381, 0.027792938, 0.013394507, 0.034215946, 0.06960491, -0.064838886, 0.03150636, -0.038445942, 0.17026442, 0.023619778), target);\n\tconv2d_3_tf2[gxy] = target;\n}\n\n//!PASS 5\n//!DESC Conv-4x3x3x24\n//!IN conv2d_3_tf, conv2d_3_tf1, conv2d_3_tf2\n//!OUT conv2d_4_tf, conv2d_4_tf1, conv2d_4_tf2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_3_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_3_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_3_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_3_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 a3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = conv2d_3_tf2.SampleLevel(sam, pos, 0);\n\tMF4 f3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(0.07657865, -0.057940323, 0.09216576, 0.08710758);\n\ttarget = MulAdd(a1, MF4x4(0.0903666, 0.07326563, 0.12570351, -0.0861333, 0.08773195, 0.08107881, -0.23008522, 0.081658274, -0.080930784, 0.095189065, -0.09599475, -0.012844856, -0.057758823, -0.05387305, 0.035611577, 0.06831291), target);\n\ttarget = MulAdd(b1, MF4x4(0.10193587, 0.24297304, 0.052464593, -0.23271905, -0.051271625, -0.04671388, -0.41551715, 0.096072406, -0.08061266, 0.15575954, -0.02978901, 0.02782589, -0.12731546, 0.100969315, -0.036334585, 0.04111131), target);\n\ttarget = MulAdd(c1, MF4x4(-0.07986279, 0.06354848, 0.054493763, 0.02064465, 0.1899048, -0.23340854, -0.020978438, -0.11192701, 0.0894504, 0.10851951, 0.022597404, -0.093431845, 0.1323124, -0.037850555, -0.07144082, -0.11149757), target);\n\ttarget = MulAdd(d1, MF4x4(0.20984441, 0.1316296, 0.028271135, -0.3395805, -0.060018715, 0.09772287, 0.023952218, 0.09067281, -0.024634736, 0.11768398, 0.12226884, 0.11482385, 0.09000994, 0.17652623, 0.16630758, -0.11148413), target);\n\ttarget = MulAdd(e1, MF4x4(0.16063517, 0.05484425, -0.013026712, 0.09420388, -0.07708702, -0.15001677, -0.17628206, -0.29337302, -0.12929626, 0.19321969, -0.19692437, 0.18910687, -0.5376053, 0.0024577375, 0.18347259, -0.036233984), target);\n\ttarget = MulAdd(f1, MF4x4(-0.06877196, 0.057344403, -0.18521468, -0.26043263, -0.027829815, -0.3474636, 0.074399404, 0.02000891, 0.10101197, 0.18005812, 0.018405264, 0.16208377, 0.2572691, -0.061031613, 0.12526059, 0.015687834), target);\n\ttarget = MulAdd(g1, MF4x4(0.12139206, 0.10150127, 0.12223164, -0.0033110923, 0.025267506, 0.0043354593, 0.04014963, 0.054613993, 0.0041964273, 0.18711057, 0.1130988, -0.010105996, -0.11398717, 0.15550865, 0.011355651, 0.0013034486), target);\n\ttarget = MulAdd(h1, MF4x4(0.018920925, -0.1981446, -0.0015773224, 0.17280231, -0.1158759, 0.034413345, 0.18601055, -0.058082208, -0.05751512, -0.014871481, 0.026116839, 0.22214632, -0.109278515, -0.07075786, 0.14865029, 0.06923859), target);\n\ttarget = MulAdd(i1, MF4x4(-0.04858135, 0.06361807, 0.03608349, -0.35027486, -0.22905546, 0.228983, -0.080485426, -0.12832811, -0.08297812, 0.27370456, -0.040313505, 0.12175736, -0.0088722585, -0.027337799, 0.082081, 0.036823895), target);\n\ttarget = MulAdd(a2, MF4x4(-0.09081754, -0.121576175, -0.004420886, 0.03107195, -0.009208461, 0.093130514, -0.100094385, 0.07485617, 0.10638224, 0.10978887, 0.033434544, -0.0109705, 0.051747587, -0.04629124, 0.022032369, -0.061933544), target);\n\ttarget = MulAdd(b2, MF4x4(-0.026675375, 0.24803858, -0.3505403, 0.061843242, 0.22817075, -0.22713637, 0.030461052, -0.28470376, 0.021492813, 0.026554195, -0.014637818, 0.05059166, 0.26264945, 0.019178726, -0.084112, -0.11228049), target);\n\ttarget = MulAdd(c2, MF4x4(0.24368168, -0.09750266, -0.08355252, -0.19701716, -0.07022316, -0.021431576, -0.041753594, 0.097228795, 0.05831718, 0.046489198, -0.013535228, -0.1277287, -0.028432956, 0.11263107, -0.038870994, 0.052972272), target);\n\ttarget = MulAdd(d2, MF4x4(0.34507847, 0.16310076, 0.3261618, -0.08031221, -0.024778686, 0.030581996, -0.23252021, 0.07368026, -0.1457359, -0.05583193, -0.08619469, 0.025661029, 0.122622915, 0.107637696, 0.07717542, -0.0069369692), target);\n\ttarget = MulAdd(e2, MF4x4(-0.025063993, -0.32267594, 0.04222844, -0.6405562, 0.08737213, 0.05898279, -0.24921863, -0.37281784, 0.33026382, -0.037117995, -0.48083028, -0.1576151, 0.031603996, 0.13712752, 0.08525082, 0.13751547), target);\n\ttarget = MulAdd(f2, MF4x4(-0.1717367, 0.16379626, -0.080398574, 0.02730318, -0.08700865, 0.18012185, -0.039455075, 0.1875848, -0.058620475, 0.070274726, -0.07203947, -0.004408652, 0.11834384, -0.17019957, -0.1841911, -0.16539739), target);\n\ttarget = MulAdd(g2, MF4x4(-0.00306162, -0.009568686, 0.04615716, 0.29750574, -0.016171249, -0.22235759, -0.032884303, -0.09805467, -0.23468043, -0.03662323, -0.03754542, 0.031607516, 0.1192756, 0.037513345, 0.06270457, -0.010091852), target);\n\ttarget = MulAdd(h2, MF4x4(-0.03238403, 0.044085886, -0.15184736, -0.16677259, 0.21868308, 0.033742618, 0.12541051, -0.20726953, 0.21332125, 0.18820943, 0.11516147, -0.04046913, -0.099226944, 0.008198145, 0.0044930377, 0.10445432), target);\n\ttarget = MulAdd(i2, MF4x4(-0.04825399, -0.10125744, -0.016809255, -0.2170602, -0.008085673, -0.0055932486, -0.14474209, 0.12402969, -0.06304857, -0.058890864, -0.03977117, 0.08338651, 0.051681735, -0.046300244, -0.027098775, -0.07750968), target);\n\ttarget = MulAdd(a3, MF4x4(-0.110792324, -0.07082374, -0.07643967, 0.0007350921, 0.12548494, 0.027903408, 0.08646201, -0.060506143, -0.0042042546, -0.037406266, 0.13233368, -0.040573254, -0.011526989, 0.0017727965, -0.024684377, 0.023611743), target);\n\ttarget = MulAdd(b3, MF4x4(0.10507391, -0.11524923, -0.045419905, -0.018232401, 0.11517856, -0.017063787, -0.06844106, 0.01649028, 0.042487442, -0.0018217458, -0.048760284, -0.027432851, 0.0701538, -0.07122821, -0.040997203, -0.044356424), target);\n\ttarget = MulAdd(c3, MF4x4(-0.16667375, 0.08508152, -0.1130823, 0.10425934, 0.048882842, 0.0026840174, -0.03628384, 0.017808143, 0.06952142, 0.056811754, -0.06279424, -0.08361375, 0.02647836, 0.07310232, 0.077748105, -0.086376086), target);\n\ttarget = MulAdd(d3, MF4x4(-0.057241924, -0.0933121, -0.071363084, 0.04463695, 0.082285576, 0.11622887, 0.18159458, -0.109704174, -0.13580221, 0.07275989, 0.01771122, 0.05640307, 0.07454414, 0.14722411, 0.111302465, 0.07975774), target);\n\ttarget = MulAdd(e3, MF4x4(-0.1331026, -0.054009046, 0.12211443, 0.083527334, -0.13672769, -0.015313354, 0.13764748, -0.086164065, 0.12795652, -0.03282714, 0.1579073, 0.048787095, 0.012054846, -0.01882002, 0.13269778, -0.2241914), target);\n\ttarget = MulAdd(f3, MF4x4(-0.14854619, 0.11223546, -0.07340829, 0.17087477, -0.035288546, 0.073113, 0.031149026, 0.08732851, 0.11652912, 0.11133054, -0.011138846, -0.04347902, 0.22826026, -0.06315385, -0.083217576, -0.16983536), target);\n\ttarget = MulAdd(g3, MF4x4(6.0946622e-05, -0.1391396, -0.029762868, -0.07732276, 0.08408844, -0.0067310245, 0.018747361, 0.10870239, -0.14702435, 0.04659678, 0.049279176, -0.089539565, 0.008640545, -0.12693758, -0.012340728, -0.0010518627), target);\n\ttarget = MulAdd(h3, MF4x4(-0.031445112, -0.059538055, -0.10110316, -0.009243974, 0.07312848, -0.045987524, -0.07739988, -0.18289267, 0.19408458, 0.049652096, 0.1430416, 0.007823552, 0.12752487, 0.1404086, 0.014550228, -0.2000237), target);\n\ttarget = MulAdd(i3, MF4x4(-0.02328158, -0.055340275, -0.00890452, 0.05107875, 0.04028763, -0.033579618, -0.14551812, -0.07084914, 0.031724613, -0.11050497, 0.030539952, 0.017960407, 0.013022372, 0.048110507, -0.059791975, -0.069656074), target);\n\ttarget = MulAdd(na1, MF4x4(-0.011159195, 0.061231583, 0.023733439, 0.08318157, 0.051980533, -0.081164956, -0.12936994, 0.031314097, 0.038792897, -0.19316009, 0.012015963, 0.1274062, 0.007457571, -0.053334422, -0.06087007, -0.07500442), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.12612286, -0.059262786, 0.0013960898, 0.16076264, -0.02753848, -0.040280215, 0.11748305, -0.06767023, -0.08982183, -0.2259159, 0.021500308, -0.050233077, 0.0174376, 0.08059276, -0.011338266, -0.021669568), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.09231125, 0.05039252, 0.06589666, 0.0699502, -0.016866742, 0.16463608, 0.008424828, -0.044754602, 0.08277166, -0.26685247, -0.054916486, 0.035318345, 0.017051857, 0.004787585, 0.07064183, 0.08143896), target);\n\ttarget = MulAdd(nd1, MF4x4(0.040472284, 0.02196483, 0.019647326, -0.0042990106, -0.0111499615, 0.064750694, -0.1685468, 0.1236021, -0.14509638, -0.23636436, -0.03507012, -0.05882796, -0.003939107, -0.03427979, -0.15588285, 0.14955762), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.29209736, -0.056658156, 0.12503433, 0.059094626, 0.33155647, -0.31607324, -0.17409548, 0.28301534, -0.07269221, 0.31217432, -0.032151274, 0.13320662, 0.0067921844, 0.12724863, -0.079603665, -0.20445012), target);\n\ttarget = MulAdd(nf1, MF4x4(0.04944913, -0.24652547, 0.084156096, -0.044976614, 0.13094465, -0.041729383, -0.0043662624, -0.025976455, 0.10950043, -0.24576949, 0.07637044, -0.17560403, 0.03770707, -0.14604908, -0.13370425, -0.08169505), target);\n\ttarget = MulAdd(ng1, MF4x4(0.06215933, 0.014817449, -0.17584182, -0.119785294, 0.025916845, -0.0045085796, 0.051403407, -0.13932867, -0.029478246, -0.23803446, 0.026629616, -0.04838478, -0.05731936, -0.15141651, -0.014330421, 0.03173533), target);\n\ttarget = MulAdd(nh1, MF4x4(-0.18867792, 0.1690159, 0.0077506024, -0.08768171, 0.13987596, -0.10401963, -0.00020402495, 0.095776096, -0.059084885, -0.15369008, 0.121360734, 0.11111317, -0.06857354, -0.24787377, -0.07358934, 0.05282127), target);\n\ttarget = MulAdd(ni1, MF4x4(-0.05825966, 0.15936251, -0.009718466, 0.026246214, -0.054192465, 0.11259584, 0.106545866, 0.0037204623, 0.015858173, -0.2466447, -0.006608056, -0.08228397, 0.014153731, -0.024114707, -0.14019284, -0.008368259), target);\n\ttarget = MulAdd(na2, MF4x4(-0.12620875, -0.035311706, -0.017309954, 0.038676415, 0.010007554, 0.103891194, 0.2074349, -0.067182384, 0.04545331, 0.04189184, 0.04593296, 0.01145646, 0.027835514, 0.16188826, 0.12302215, 0.005847866), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.08673945, -0.03605757, 0.008751013, 0.006012169, -0.100793496, -0.06794951, 0.22445437, 0.16843331, -0.04668748, 0.15526527, 0.16405432, 0.08034733, 0.095660806, 0.13993011, 0.0714316, -0.2271875), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.051425643, -0.060941234, 0.014853939, -0.04170188, -0.040981892, 0.014460391, 0.06914827, -0.092892915, 0.011654809, -0.07164335, 0.05665548, -0.021757752, -0.15187486, 0.25099215, 0.06707618, 0.0014576896), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.21007836, -0.02975774, -0.17765106, 0.08210864, 0.04128445, -0.03473088, 0.13388512, -0.062689856, -0.024399463, 0.060575683, 0.016895741, 0.053625587, -0.16646849, 0.20665659, -0.097400986, -0.11676045), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.012981402, -0.0035834755, -0.19967668, -0.055962507, 0.05755364, 0.16290179, 0.16108987, 0.0443184, 0.022384012, -0.21550876, 0.1993019, 0.10249744, 0.027157044, -0.48223755, 0.14306773, -0.042821236), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.023187606, -0.0006282703, -0.030281521, -0.034422845, 0.1269488, -0.046393935, 0.056179423, -0.07986905, -0.08863301, 0.033617917, 0.28032312, -0.016831966, -0.09741306, 0.082168706, -0.07072508, 0.1714769), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.10699955, 0.004617793, -0.13971107, -0.08070923, -0.18738483, 0.37386385, 0.095100455, 0.057784997, -0.048351936, -0.19038375, -0.1161272, 0.088465944, 0.21603039, 0.14161706, -0.17377359, 0.053336773), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.1607158, 0.11756463, 0.050999135, -0.082914345, -0.13728271, -0.29792574, 0.28438056, 0.45129618, 0.024746796, 0.15315229, -0.117851384, 0.07257279, -0.108341694, 0.20533404, 0.026013765, -0.34590483), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.14288151, 0.040327024, -0.14112945, -0.08908226, 0.22330604, -0.015938131, 0.033910606, -0.16407411, -0.016470572, 0.09259821, 0.08344142, 0.014396606, -0.04143325, 0.10638457, 0.12549427, 0.016800882), target);\n\ttarget = MulAdd(na3, MF4x4(-0.07430705, -0.21602099, -0.02395794, 0.16806927, 0.18771775, 0.040755376, 0.2715868, -0.034169577, 0.00522744, -0.02654015, -0.020816373, 0.16446163, -0.087030225, 0.01551686, 0.0048509445, 0.022507116), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.024786156, 0.09243609, 0.09324701, 0.08799725, -0.03968033, -0.14894229, 0.0776629, -0.21654569, -0.099934116, -0.06997516, 0.10485336, 0.040500306, -0.25174686, -0.20299411, 0.13843295, 0.25696677), target);\n\ttarget = MulAdd(nc3, MF4x4(0.092044, -0.07171784, 0.23683146, -0.009319925, -0.08805518, 0.12598065, 0.06375242, 0.02844835, -0.029605612, -0.12549727, 0.022440229, 0.006380783, 0.1313304, 0.15739907, 0.08373962, 0.08992246), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.27224204, -0.26631516, -0.027027579, -0.030660763, 0.069010764, 0.00686249, -0.17444538, -0.05701314, -0.035538822, -0.26050144, -0.010451579, -0.061782375, 0.16745842, -0.108107746, 0.030468695, -0.16402762), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.07276476, -0.15297028, -0.25568548, 0.27668282, 0.09677458, 0.098981895, -0.0004217196, -0.00091525156, -0.3077419, 0.44434202, -0.09468051, -0.08462181, -0.26978543, 0.27369836, -0.03669818, 0.2912635), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.28734738, 0.14579459, 0.22083919, -0.2297294, 0.17505005, -0.04844878, 0.021834318, -0.16736999, 0.0016747294, -0.060896724, 0.028344678, -0.06341938, 0.43723574, -0.2615166, 0.05107712, -0.20119043), target);\n\ttarget = MulAdd(ng3, MF4x4(0.0272994, 0.22280678, 0.17716415, -0.093996234, -0.11316552, 0.18234952, -0.0010922098, -0.12163143, 0.04821719, 0.0022455743, -0.036408488, 0.022185026, -0.03437743, 0.022541165, -0.11003119, 0.14187692), target);\n\ttarget = MulAdd(nh3, MF4x4(0.00013664822, -0.34958616, 0.33965272, 0.4091369, 0.047315825, 0.18665253, -0.09821825, 0.070298485, -0.07052871, -0.2640913, -0.13192001, 0.017230166, -0.22303015, 0.0023083845, -0.1482968, 0.0031197562), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.053096205, -0.023291215, -0.038235445, -0.2354219, -0.012032332, 0.17776853, 0.03697497, -0.25305814, 0.043709055, -0.09948032, -0.08828663, -0.09534956, 0.036391728, 0.05996495, 0.038689792, 0.053753372), target);\n\tconv2d_4_tf[gxy] = target;\n\t\n\ttarget = MF4(0.050651863, 0.044697866, 0.016666446, -0.015238534);\n\ttarget = MulAdd(a1, MF4x4(0.12020708, 0.030450096, -0.022563199, 0.13941783, 0.42781577, 0.07196431, 0.03032568, -0.24368697, -0.12174075, 0.18298386, 0.09977972, 0.06440271, -0.021667495, -0.09582143, -0.02372221, -0.012161217), target);\n\ttarget = MulAdd(b1, MF4x4(-0.08614557, -0.16138618, 0.17409417, 0.06457713, 0.2130565, 0.3841125, -0.030690523, 0.014650334, -0.024490908, 0.09859328, -0.033240438, 0.21537182, -0.11260519, 0.3600062, -0.21786173, 0.29394957), target);\n\ttarget = MulAdd(c1, MF4x4(-0.065436006, 0.18217164, -0.009773951, 0.29613763, 0.15861033, 0.19769754, 0.026605047, -0.13012406, 0.049954694, -0.21985927, -0.114034064, -0.19775811, 0.15509593, -0.0096983, 0.04010453, -0.14786181), target);\n\ttarget = MulAdd(d1, MF4x4(-0.12755093, -0.15312608, -0.12672725, 0.14637707, -0.044712905, -0.018509148, 0.34769905, 0.094541386, 0.018899806, -0.068810396, 0.03567579, 0.010715141, 0.26642382, 0.021787789, -0.045413516, -0.0099886125), target);\n\ttarget = MulAdd(e1, MF4x4(0.09399624, -0.22073774, -0.03728268, -0.14593096, -0.14311165, 0.01572586, -0.043170083, 0.14196606, -0.0057723937, -0.22462656, 0.28189817, -0.27393398, -0.04240093, -0.22494912, 0.088402055, -0.15256752), target);\n\ttarget = MulAdd(f1, MF4x4(-0.054694295, 0.24343663, 0.042853344, 0.2742606, -0.16395031, 0.25720948, -0.12372541, 0.15020733, 0.07335946, 0.06307917, -0.0035989506, 0.045006167, 0.12430964, -0.20227802, 0.16280155, -0.060202613), target);\n\ttarget = MulAdd(g1, MF4x4(0.015143897, 0.21408756, -0.12505236, -0.21357507, -0.103595965, -0.074590206, 0.015860647, 0.16365165, 0.082501106, -0.015283817, -0.047005404, 0.048750408, 0.06636161, 0.2280071, 0.0033000826, 0.15148918), target);\n\ttarget = MulAdd(h1, MF4x4(0.051213, 0.121158004, -0.2882391, 0.048057787, -0.15921837, -0.04850743, -0.32060388, -0.11430066, 0.0148464935, -0.069417626, 0.11761673, -0.030637275, 0.0030618436, 0.2583576, -0.03774937, -0.23215541), target);\n\ttarget = MulAdd(i1, MF4x4(-0.06589957, -0.18402125, -0.1908057, -0.15999734, -0.20722501, -0.41220245, -0.08732743, -0.2800872, -0.11615179, 0.08338717, 0.070668146, 0.16140378, -0.07519341, 0.04610659, 0.025006918, 0.09886883), target);\n\ttarget = MulAdd(a2, MF4x4(-0.05963709, 0.021905743, 0.019461332, 0.30714118, 0.053338766, -0.0036449512, 0.051735114, 0.031359527, -0.055139918, -0.03070095, 0.035309043, 0.03333981, -0.028844094, 0.076006815, 0.05232068, -0.0012779629), target);\n\ttarget = MulAdd(b2, MF4x4(0.14548303, 0.08283497, 0.08181831, 0.015030586, 0.0053907307, -0.014007569, 0.051146433, 0.04916237, 0.15514989, 0.07423488, -0.08177836, 0.07886526, 0.05780981, 0.06978046, -0.015533511, 0.11043233), target);\n\ttarget = MulAdd(c2, MF4x4(0.2718494, -0.019822083, -0.0057829386, -0.22661845, -0.099374995, 0.009107718, -0.06340475, -0.0010754272, 0.028092189, -0.20054619, -0.051893793, -0.29571667, 0.093114756, 0.07853305, -0.100233726, -0.0047704247), target);\n\ttarget = MulAdd(d2, MF4x4(0.14986612, 0.0022451372, -0.062067125, -0.17486928, -0.0863647, 0.043254074, 0.2403272, 0.008611301, 0.022587517, -0.11991351, 0.021465946, -0.0043859156, 0.016005747, 0.15905066, -0.07992088, 0.0744741), target);\n\ttarget = MulAdd(e2, MF4x4(-0.28244218, 0.1579932, -0.53319496, -0.17382297, -0.015739711, -0.1284182, 0.14516716, 0.29700696, 0.11660257, 0.023022393, 0.07765215, -0.17613792, -0.0067801042, 0.103040695, 0.1726775, -0.05101466), target);\n\ttarget = MulAdd(f2, MF4x4(-0.07244159, 0.12475429, -0.15444236, 0.040789705, -0.12216188, 0.025828373, -0.15603372, 0.05882803, 0.18985634, -0.16016626, -0.068549834, -0.39872447, -0.018761588, 0.06250271, 0.16675957, -0.064201385), target);\n\ttarget = MulAdd(g2, MF4x4(0.11573142, 0.3193422, -0.07796038, 0.076522775, -0.17158118, -0.078293145, 0.100592226, 0.059703935, 0.12754959, -0.08411796, -0.18692641, -0.18266907, 0.06325651, -0.07590812, 0.16482389, 0.11334052), target);\n\ttarget = MulAdd(h2, MF4x4(0.043070253, -0.097845815, -0.16063489, 0.06901578, -0.12220174, 0.07733114, -0.057676736, -0.16375609, 0.14565262, 0.13176636, -0.16553006, 0.05554225, -0.09373497, -0.057028443, -0.23270036, -0.1320336), target);\n\ttarget = MulAdd(i2, MF4x4(0.004274229, -0.08707873, -0.07182644, -0.2983437, -0.04152557, 0.04764718, 0.18148302, 0.25483704, -0.079726525, 0.042573344, -0.108663455, -0.11411879, 0.04527909, -0.01938232, -0.0720563, -0.033436943), target);\n\ttarget = MulAdd(a3, MF4x4(-0.05914969, 0.03217603, 0.05620841, 0.11179769, 0.008934773, 0.13958941, -0.049832776, 0.011027975, 0.065970905, -0.0034222854, 0.03403987, 0.0469571, 0.046986744, 0.02688478, 0.10363807, -0.07991329), target);\n\ttarget = MulAdd(b3, MF4x4(-0.08938713, 0.10607981, -0.042589642, -0.15378094, 0.031732727, 0.066124596, 0.045595378, 0.0021127507, 0.054374907, 0.0107482, -0.10671928, 0.0074089314, 0.04903823, 0.09358932, -0.018505096, 0.07349409), target);\n\ttarget = MulAdd(c3, MF4x4(-0.010238883, 0.21940914, 0.007697137, 0.21205641, 0.06893976, 0.12995858, 0.057945974, 0.0840761, 0.08816238, 0.071576215, -0.042484447, 0.08113807, 0.08687212, -0.055440724, -0.08699462, -0.09570027), target);\n\ttarget = MulAdd(d3, MF4x4(-0.106894106, -0.2096638, 0.05298109, 0.010998865, -0.08867521, 0.12988189, 0.10647452, -0.097984925, 0.0915472, 0.20006137, 0.18479815, 0.16927278, 0.1631858, 0.008064966, 0.027587382, -0.03482675), target);\n\ttarget = MulAdd(e3, MF4x4(-0.19826272, -0.1342889, -0.26001906, 0.04669503, 0.010580549, 0.004505948, -0.01596666, 0.101886965, 0.51708573, 0.01397845, 0.26731327, 0.048002556, -0.41174927, 0.22574128, 0.117833406, -0.06960611), target);\n\ttarget = MulAdd(f3, MF4x4(-0.14917673, -0.13293903, -0.031218676, 0.049667537, -0.1060632, 0.10442213, -0.09595242, 0.12595569, -0.016390745, -0.14521241, -0.11187397, -0.09977547, 0.25035715, -0.16168214, 0.1920289, -0.15843187), target);\n\ttarget = MulAdd(g3, MF4x4(-0.02411851, -0.11056269, 0.055056043, 0.043598007, -0.0066189542, 0.04634859, 0.12737647, 0.06846502, 0.056652352, -0.10612263, 0.08477219, -0.13697919, -0.04940175, -0.04095268, -0.007203606, 0.16084097), target);\n\ttarget = MulAdd(h3, MF4x4(0.052976605, 0.04408607, 0.072765656, -0.08981313, -0.058496203, -0.13047524, 0.04112392, 0.10585218, -0.1758069, -0.015050289, 0.17501082, 0.042282905, -0.12833239, -0.16907021, 0.034734186, -0.117356636), target);\n\ttarget = MulAdd(i3, MF4x4(0.009886183, -0.1072079, 0.032444023, 0.008510553, -0.09062318, 0.087005824, 0.03727608, 0.009528718, -0.10054762, -0.10859511, -0.048893284, -0.07000767, 0.056854695, -0.10528974, 0.05492607, -0.07096842), target);\n\ttarget = MulAdd(na1, MF4x4(-0.17860578, -0.0105161, 0.029562278, 0.024690636, 0.33631963, -0.029712414, -0.005475538, -0.03374888, 0.11327619, -0.04078819, 0.0033871653, 0.02554949, -0.12539335, 0.043788597, -0.091408, 0.049923938), target);\n\ttarget = MulAdd(nb1, MF4x4(0.06232113, 0.12859604, -0.062801324, -0.054190084, 0.024198689, -0.03283934, -0.11320382, -0.17320402, -0.051317126, -0.05357262, 0.06503374, 0.010334861, 0.18220812, -0.23972702, 0.026034402, -0.094274506), target);\n\ttarget = MulAdd(nc1, MF4x4(0.0039012742, 0.03340159, 0.00041976577, -0.09593378, -0.08368581, -0.171641, -0.15441188, -0.05075565, 0.017398436, -0.15752153, 0.11208059, -0.07801636, -0.024276018, -0.14415129, 0.053215727, 0.05285977), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.0033036366, -0.0017531791, -0.06987429, 0.14468694, 0.32040435, -0.115356, -0.114271276, 0.08943164, -0.10405339, -0.08873277, -0.12369199, 0.10631109, 0.072591804, 0.07545677, 0.007450515, -0.062508635), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.32389352, 0.36626276, -0.24318767, 0.1114559, -0.041673217, 0.0123305125, 0.08265207, -0.089765444, 0.04077425, -0.10462959, 0.008208994, -0.24475563, 0.21966444, 0.4274681, 0.02538749, -0.072384804), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.060664598, -0.07931745, -0.04031839, 0.032503996, 0.09535501, 0.060271315, 0.050842766, -0.017118635, 0.20283295, 0.21311453, 0.048262708, 0.13562958, 0.09995353, 0.24902335, 0.166433, 0.1362172), target);\n\ttarget = MulAdd(ng1, MF4x4(0.09678776, -0.022411423, 0.031022416, 0.04797599, -0.038225997, -0.049748596, 0.0046548736, -0.1178436, -0.070659816, 0.11345608, -0.0496577, -0.04467185, -0.05449646, -0.13758712, 0.037184708, -0.050822448), target);\n\ttarget = MulAdd(nh1, MF4x4(-0.14028446, -0.019469494, 0.065940395, -0.058915302, -0.044744235, 0.20379432, 0.19095756, 0.077816576, 0.17204207, 0.1072162, -0.1361738, 0.08552834, 0.18237999, 0.08205425, -0.040794145, 0.20306163), target);\n\ttarget = MulAdd(ni1, MF4x4(0.10820412, -0.0103201205, 0.11818202, 0.05081286, -0.034519948, -0.022716366, 0.012558799, -0.061788525, -0.019103106, -0.024869766, -0.01484149, -0.0041896743, 0.10513332, 0.0644455, -0.0060386304, 0.119789764), target);\n\ttarget = MulAdd(na2, MF4x4(-0.12900162, -0.024052832, 0.091144815, 0.042586617, 0.023100799, -0.008685231, -0.18520203, 0.04126034, 0.22155929, -0.053283233, 0.010883973, -0.23124413, 0.015983205, -0.16272338, -0.047610354, 0.09509212), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.043675106, -0.13593669, 0.15423402, 0.006204822, -0.20298089, -0.24486437, 0.0793193, -0.04431099, -0.10573373, 0.14105141, 0.008124834, 0.08031386, -0.02944676, -0.0324013, -0.21952143, -0.14495796), target);\n\ttarget = MulAdd(nc2, MF4x4(0.096100524, 0.0038778677, 0.08775855, -0.061556816, -0.18265049, 0.10941394, 0.054334268, 0.21996409, -0.050350484, -0.004098584, 0.04015653, -0.022499854, -0.14539535, 0.14758524, -0.34231094, 0.010245374), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.23592138, 0.108827986, 0.011998022, 0.08459366, 0.0366679, 0.17635424, -0.09780912, -0.0835654, 0.118454255, 0.035510838, -0.05113816, -0.14397779, 0.07003334, -0.012582954, -0.08026196, -0.07726739), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.065133855, -0.1601996, 0.30335194, -0.07679822, 0.0087142885, 0.36574212, -0.5694481, -0.0020462046, -0.08609347, -0.020676374, -0.13731648, 0.0025803284, -0.07613569, 0.011341814, -0.238015, 0.17618194), target);\n\ttarget = MulAdd(nf2, MF4x4(0.056766525, -0.13898206, 0.031484123, 0.037802573, -0.11768987, 0.043203767, -0.12557015, 0.21512888, -0.20422752, 0.0033964422, -0.1128001, 0.031649, -0.18963163, -0.06865018, -0.015203186, 0.017272811), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.22707051, -0.12006254, 0.047220945, 0.033206593, -0.11796534, 0.14222418, -0.17649753, -0.07965604, -0.08325816, -0.04103228, 0.122222394, 0.05513519, 0.03045633, -0.014383039, 0.2659631, -0.14282666), target);\n\ttarget = MulAdd(nh2, MF4x4(0.050211295, 0.106638566, -0.12575938, 0.042698536, 0.4065789, 0.48643333, -0.40594426, 0.23580477, -0.09891945, -0.27204368, 0.38514468, -0.17403792, -0.00021442943, 0.036901742, -0.07350521, -0.1137957), target);\n\ttarget = MulAdd(ni2, MF4x4(0.08275032, -0.10175439, 0.024990086, 0.09118366, 0.054295644, 0.07601656, -0.17207645, 0.071827434, -0.09406783, -0.29794717, 0.062402938, -0.19291654, 0.057635557, 0.10152742, -0.16145273, 0.078694634), target);\n\ttarget = MulAdd(na3, MF4x4(-0.14024283, -0.020712407, -0.0006742049, -0.07990848, -0.2780156, 0.01990348, -0.007274932, 0.01683584, 0.058766432, -0.011117602, -0.11561118, -0.085818544, -0.07759575, -0.06813459, -0.117720075, 0.117459066), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.11406997, 0.00070567254, 0.0015214743, -0.13617793, -0.1844734, 0.10463744, 0.042494643, 0.09081247, -0.1682752, -0.12013825, 0.15428415, 0.003604667, -0.04138629, -0.37951693, 0.18619955, -0.12595965), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.09695181, 0.29682228, 0.042676754, 0.16024598, -0.094654515, -0.10530867, 0.02741278, -0.054255832, -0.02117601, -0.03741268, 0.10694513, -0.04951851, -0.106426254, -0.33196932, -0.14139625, -0.13504466), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.1909862, -0.25864232, -0.050149377, -0.01613201, -0.27878955, 0.15964217, -0.16596937, 0.061238922, -0.21866739, -0.15153229, -0.27351984, -0.052200224, -0.04497165, 0.12572336, -0.08926984, -0.13085754), target);\n\ttarget = MulAdd(ne3, MF4x4(0.1186159, -0.44323534, 0.24520016, -0.17869183, 0.07235415, 0.2055049, -0.15923528, -0.012734702, -0.7115807, -0.0783967, -0.48488334, -0.06875676, 0.2530569, -0.036582347, 0.029272651, 0.16227534), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.20962486, 0.36621055, -0.2653163, -0.12183859, -0.05926225, 0.19594035, 0.17680155, 0.3601037, 0.08084663, 0.076976806, 0.06040379, 0.16425474, 0.033630535, 0.1259935, 0.15317655, 0.16241911), target);\n\ttarget = MulAdd(ng3, MF4x4(0.05553488, 0.13082667, 0.07025236, -0.16599798, -0.0755003, -0.06938985, -0.038283534, 0.010487185, -0.0030434306, 0.101001985, -0.09891444, -0.057115134, -0.10988094, 0.13917845, -0.16996992, -0.06362086), target);\n\ttarget = MulAdd(nh3, MF4x4(0.052476093, 0.2736097, -0.34467006, 0.08840096, -0.2191552, 0.19051385, 0.04366143, 0.084381446, 0.24772783, 0.24381915, -0.19055025, 0.06811196, -0.049013868, 0.0047574267, -0.17637779, 0.18330449), target);\n\ttarget = MulAdd(ni3, MF4x4(0.061494384, 0.19728619, 0.05241455, -0.12846167, -0.035130713, 0.20945111, 0.08781453, 0.3240593, 0.16286173, 0.028478097, 0.11730352, -0.057671197, 0.04265479, 0.053791273, -0.017982712, 0.0750495), target);\n\tconv2d_4_tf1[gxy] = target;\n\n\ttarget = MF4(-0.052461267, 0.15198341, -0.02276772, -0.03120894);\n\ttarget = MulAdd(a1, MF4x4(-0.024237188, -0.10422616, 0.06723804, 0.1826598, 0.012947932, 0.45517665, -0.44863597, -0.23032583, -0.13114794, 0.09810647, 0.058437135, -0.08195182, 0.08179358, -0.039700896, -0.039574802, -0.14186196), target);\n\ttarget = MulAdd(b1, MF4x4(0.1629186, -0.2774174, 0.06411593, 0.07094711, -0.3600775, 0.32915217, -0.32015067, -0.28613016, -0.1612731, 0.010733298, -0.05708089, -0.15946425, 0.082519636, 0.09780667, 0.056797463, -0.11305572), target);\n\ttarget = MulAdd(c1, MF4x4(-0.04339018, -0.05268632, 0.012107386, -0.050289553, 0.055016138, 0.09554764, -0.088567086, 0.07149162, 0.040378995, 0.18996446, -0.07771632, 0.13777791, 0.135759, 0.00097233645, -0.05469941, -0.0403182), target);\n\ttarget = MulAdd(d1, MF4x4(-0.0817291, 0.21801636, 0.21970823, 0.32005847, 0.064489774, 0.06965839, -0.30358747, -0.11341012, -0.14858796, 0.11928792, -0.021813538, 0.17499882, 0.12947294, -0.051210806, -0.058405858, -0.025849868), target);\n\ttarget = MulAdd(e1, MF4x4(-0.017480569, -0.07665342, 0.055402935, 0.024532886, -0.103406206, 0.052755862, -0.13945164, -0.023136819, -0.08034683, 0.0090520345, -0.10195203, -0.11921826, -0.23000433, 0.35529178, 0.043689124, -0.39272285), target);\n\ttarget = MulAdd(f1, MF4x4(0.18001455, -0.19694266, 0.041117262, -0.004510925, 0.23145959, -0.119057, -0.27721423, 0.24195382, -0.10873344, 0.120489694, 0.0634931, 0.010593836, 0.12439531, 0.024893748, -0.34153914, 0.117560826), target);\n\ttarget = MulAdd(g1, MF4x4(0.10838369, 0.09057026, 0.051982816, 0.16478422, 0.18629162, -0.103127524, -0.14309822, -0.033989307, 0.021934774, -0.008789755, -0.04308787, -0.06250701, 0.12962283, -0.16955297, -0.14072357, -0.1573379), target);\n\ttarget = MulAdd(h1, MF4x4(-0.05150477, 0.19018193, -0.0018513565, 0.049800653, -0.0072638886, -0.09453535, 0.086251326, 0.19729123, -0.0754909, 0.14370134, -0.053820826, -0.04315332, -0.028823897, 0.075814255, -0.06760011, 0.010474355), target);\n\ttarget = MulAdd(i1, MF4x4(0.13249592, -0.12863821, -0.098677255, -0.008903099, -0.00075161987, -0.1422283, 0.1321076, -0.016739735, -0.052078467, 0.10682752, 0.072102524, 0.044046365, 0.016139982, 0.06351777, -0.09472882, -0.017490232), target);\n\ttarget = MulAdd(a2, MF4x4(-0.024706522, 0.048243694, -0.013107904, -0.19985148, 0.14576256, 0.06643448, -0.063278124, -0.037488308, 0.096271195, -0.05229867, -0.012707279, 0.004028418, -0.06064612, 0.12454419, 0.035423573, 0.19192193), target);\n\ttarget = MulAdd(b2, MF4x4(0.058306698, 0.4169323, -0.2137428, 0.39399233, -0.018209185, -0.047926553, 0.0047757244, 0.18491194, -0.047317795, 0.027071197, 0.065773524, -0.16662115, 0.1758542, 0.040357858, -0.16389023, -0.08795879), target);\n\ttarget = MulAdd(c2, MF4x4(0.1123842, -0.030895762, -0.027667578, -0.07902935, -0.102031484, -0.0044085253, 0.13276444, 0.0027152307, 0.11011939, -0.022880847, 0.08871766, 0.11890982, -0.16875012, 0.0763821, -0.01840331, 0.02001359), target);\n\ttarget = MulAdd(d2, MF4x4(-0.02286322, 0.024675928, 0.10812478, 0.3268884, 0.18656765, -0.089817695, -0.045856882, -0.048997983, 0.09179813, -0.14574316, -0.05584585, 0.04601508, -0.04663327, 0.13533741, -0.027007475, 0.13568604), target);\n\ttarget = MulAdd(e2, MF4x4(0.3305947, 0.003312709, 0.38421127, 0.29569045, 0.27463832, -0.15641807, 0.27655235, 0.02949218, -0.049430016, 0.09262954, -0.05639441, -0.0015801551, -0.0867195, 0.01903508, -0.18103446, -0.13115436), target);\n\ttarget = MulAdd(f2, MF4x4(0.032399632, 0.035522558, 0.02029329, -0.15271226, -0.22600263, 0.018570898, 0.2614411, -0.043230906, -0.16090661, -0.03576041, 0.1163746, -0.12655982, 0.14196678, 0.043999534, -0.003735901, 0.041733805), target);\n\ttarget = MulAdd(g2, MF4x4(-0.17129399, 0.035248592, 0.03326124, 0.05614414, 0.08734728, 0.00025759568, -0.017390147, -0.018484343, -0.18716696, -0.11577566, -0.09411038, -0.0005942758, 0.20385277, -0.1574145, -0.13516964, -0.011578805), target);\n\ttarget = MulAdd(h2, MF4x4(0.10666493, 0.04735373, -0.0013807884, 0.0704135, -0.09550784, 0.12478301, 0.13349667, 0.11381725, 0.10344638, 0.036749367, -0.07850732, 0.067993365, -0.27189222, 0.12209588, 0.039368622, -0.11650519), target);\n\ttarget = MulAdd(i2, MF4x4(-0.048749734, -0.015611218, -0.058593888, -0.11054869, 0.15889384, -0.027153673, -0.15524355, -0.14243808, -0.078478426, -0.0005193828, 0.12036652, -0.10402722, -0.02370969, 0.13715413, 0.06436259, 0.06815996), target);\n\ttarget = MulAdd(a3, MF4x4(-0.018909978, 0.18138056, -0.10334352, -0.021526821, 0.010916664, -0.048124075, 0.06859281, -0.076912865, 0.09164643, 0.057818342, -0.17802145, -0.090189666, 0.03645826, 0.10256138, -0.0069766566, 0.036947094), target);\n\ttarget = MulAdd(b3, MF4x4(-0.20622449, 0.012804213, 0.015042242, 0.19055699, -0.08001165, 0.03541219, -0.12968656, -0.030422881, -0.14057401, 0.13156182, -0.13859963, 0.00040263348, 0.10254204, -0.014539082, -0.107229605, -0.17474675), target);\n\ttarget = MulAdd(c3, MF4x4(-0.107353106, 0.0014355447, 0.028790096, -0.0302504, -0.10989408, 0.038959417, -0.110921286, 0.0625821, -0.05460621, 0.002502421, 0.000936639, 0.048315868, 0.011345627, 0.08441578, -0.048639838, 0.09363101), target);\n\ttarget = MulAdd(d3, MF4x4(0.028981669, 0.099419065, -0.14213188, -0.022163093, -0.05122637, -0.0046859765, 0.09862167, 0.049731493, 0.07676605, 0.003952691, -0.04136734, -0.24915272, 0.008263169, -0.22285973, -0.0962458, 0.172863), target);\n\ttarget = MulAdd(e3, MF4x4(-0.37248972, 0.11385456, 0.2061119, 0.022263438, 0.019234778, 0.00025653432, -0.050672278, 0.055690683, -0.123369195, 0.23665325, -0.071705356, 0.28199664, 0.22527444, -0.2209345, 0.109758556, -0.09677416), target);\n\ttarget = MulAdd(f3, MF4x4(-0.040162217, -0.076559134, -0.16174191, 0.04257142, -0.06335363, -0.014538781, 0.031642947, 0.07644203, 0.0073738038, 0.035876762, -0.025717935, 0.07372835, 0.07390335, 0.021775434, -0.0935753, 0.17936146), target);\n\ttarget = MulAdd(g3, MF4x4(0.038021766, 0.02849221, -0.04236583, -0.013963447, 0.019651154, 0.05580235, -0.13790283, -0.060389396, 0.021969974, 0.0056073754, -0.018980214, -0.025460985, -0.045908038, -0.010549833, -0.09338662, -0.057856735), target);\n\ttarget = MulAdd(h3, MF4x4(-0.08452829, 0.042145252, -0.0141162975, -0.07190146, 0.15463473, -0.063039616, 0.008285841, 0.0198927, 0.15278462, 0.023722362, -0.035441626, 0.09403419, 0.07525972, -0.044377264, -0.041365236, 0.043310255), target);\n\ttarget = MulAdd(i3, MF4x4(-0.0011264209, -0.06592647, 0.0049777217, -0.0060350257, 0.07328435, -0.18793981, -0.08557498, -0.04078665, 0.03258842, 0.07107648, 0.041932624, 0.037395928, 0.13042633, -0.032260742, -0.012588843, 0.023788324), target);\n\ttarget = MulAdd(na1, MF4x4(0.07511876, 0.019309277, -0.02078693, -0.14132647, 0.070082344, 0.04199505, -0.15632215, -0.032079816, 0.118265875, -0.08141349, -0.050177153, 0.11479062, 0.013268761, 0.1936229, -0.055244733, 0.020521875), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.07828548, 0.018267812, 0.0028122417, 0.08941742, -0.019510742, -0.0045468058, 0.07431564, 0.24580373, 0.03412491, -0.21398748, 0.13018401, -0.01707844, 0.029651346, 0.020107506, -0.032851487, -0.10630331), target);\n\ttarget = MulAdd(nc1, MF4x4(0.049285315, -0.036977254, 0.15186474, -0.041290153, 0.036063142, -0.045490168, 0.046358738, -0.09886548, 0.08557266, -0.0694686, -0.068183534, 0.020261671, -0.026039243, -0.033528827, -0.07751181, -0.019434886), target);\n\ttarget = MulAdd(nd1, MF4x4(0.07950834, -0.0741639, 0.061423566, -0.15268423, 0.06533783, -0.03808615, -0.013910495, 0.020066373, -0.017489634, 0.050359994, 0.00039101843, 0.019134337, 0.16694714, -0.024450665, -0.065044865, -0.10637288), target);\n\ttarget = MulAdd(ne1, MF4x4(0.24476409, -0.2805558, 0.10909579, 0.13605182, -0.01699378, 0.0065869414, -0.14624152, 0.1877048, -0.067427725, 0.21585129, 0.0055718115, -0.14159104, 0.31355727, -0.30447352, -0.13559367, -0.03584342), target);\n\ttarget = MulAdd(nf1, MF4x4(0.01840529, 0.03616268, -0.062101822, -0.03462444, -0.09809899, 0.05688681, -0.06383556, 0.054451026, 0.046791434, -0.046537004, 0.0062966137, 0.036369126, 0.091391616, -0.06889375, -0.034196682, -0.09181384), target);\n\ttarget = MulAdd(ng1, MF4x4(0.08672015, -0.15510495, 0.04554155, -0.05996463, -0.00072026957, -0.09829958, 0.15477605, 0.01794818, -0.012825052, 0.11114408, -0.040433116, -0.00646929, -0.043805078, 0.012829818, -0.008625017, -0.021682253), target);\n\ttarget = MulAdd(nh1, MF4x4(-0.053777024, -0.12807386, 0.20205054, -0.05613513, 0.08030871, 0.12273628, -0.19011892, -0.007974216, -0.111842796, 0.09764242, 0.072857365, 0.049412534, -0.1310995, 0.12386843, -0.16210727, -0.001777189), target);\n\ttarget = MulAdd(ni1, MF4x4(0.0018172731, 0.046203706, 0.16447084, -0.09419196, 0.0027008723, 0.037259165, 0.018473836, -0.007634073, -0.0017314702, -0.013679133, -0.061678763, 0.033567235, -0.073024705, 0.1608741, -0.093601726, 0.05785441), target);\n\ttarget = MulAdd(na2, MF4x4(-0.05863952, 0.07315827, 0.022440575, 0.035979047, 0.016238341, -0.24431372, 0.041630965, -0.0057747364, -0.10777149, -0.13047433, 0.070022196, 0.044547863, 0.13226376, -0.28246558, 0.062450863, -0.004404347), target);\n\ttarget = MulAdd(nb2, MF4x4(0.011212715, 0.05243611, -0.037797686, -0.15245487, 0.27008712, -0.40122086, 0.0011378871, 0.05367511, 0.07193383, -0.14046453, 0.12873498, 0.07182839, 0.1820151, 0.04283299, 0.11596543, 0.15673809), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.07652156, 0.02990215, -0.038398147, 0.04733479, -0.05695788, -0.04636123, -0.05849599, -0.05204433, 0.057833705, -0.18150161, -0.030429238, -0.06927262, -0.14094613, 0.046653654, 0.1901663, -0.12395862), target);\n\ttarget = MulAdd(nd2, MF4x4(0.14467525, -0.1326973, 0.10119535, -0.019431135, -0.06226663, -0.0053785043, 0.08981591, 0.07009579, -0.17320351, 0.023860384, 0.062086526, 0.053025734, 0.18955843, -0.22512685, 0.05108636, 0.022267245), target);\n\ttarget = MulAdd(ne2, MF4x4(0.10990955, 0.01449569, -0.17729793, -0.22559568, 0.011237511, -0.25115016, -0.24866548, -0.13571861, 0.072065, -0.10518834, 0.16031964, 0.33091673, 0.30525, -0.054976556, -0.051654782, 0.05343294), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.022414321, -0.03275696, 0.06263573, 0.0031694071, 0.08556633, -0.12222284, -0.01304348, -0.120147005, -0.04688651, -0.037210416, -0.072757326, 0.0537857, 0.08831744, -0.16069758, 0.07254542, -0.10207554), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.0033381188, -0.013647447, 0.05272343, 0.020168653, 0.064766616, 0.006531628, 0.08387307, 0.005267065, -0.1460191, 0.021020414, -0.012950353, -0.08051581, 0.11163487, -0.32247993, 0.04997282, 0.10706656), target);\n\ttarget = MulAdd(nh2, MF4x4(0.1307456, -0.044469688, 0.0073461267, 0.037865613, -0.37522125, 0.29075947, -0.14347716, -0.037057046, 0.08405833, -0.22944225, 0.048562963, 0.016957987, 0.3850271, -0.2642814, 0.24302341, -0.009866295), target);\n\ttarget = MulAdd(ni2, MF4x4(0.07751665, -0.07116216, -0.018697955, 0.013728456, 0.114070326, 0.082404934, -0.06866586, 0.0653056, -0.048189763, -0.094798714, 0.073528245, -0.09311469, 0.08910833, -0.0861494, -0.13601573, -0.03716929), target);\n\ttarget = MulAdd(na3, MF4x4(-0.3285286, -0.19887583, 0.22604318, -0.06683799, 0.07519015, -0.37451786, 0.341761, 0.47940642, -0.13582104, -0.0568941, 0.055691198, 0.077822134, -0.044976532, -0.16769643, 0.106551185, 0.06167237), target);\n\ttarget = MulAdd(nb3, MF4x4(0.2570433, -0.20537715, 0.057150505, 0.5306126, 0.23061736, -0.07200678, 0.23587582, -0.021194493, 0.0306967, -0.13228704, 0.05531426, 0.205256, -0.23213351, -0.32205653, 0.04496151, -0.114729114), target);\n\ttarget = MulAdd(nc3, MF4x4(0.08585821, -0.16611692, 0.19137008, 0.07955234, -0.07067079, -0.028957745, 0.116818264, 0.030655704, 0.044361178, 0.01137771, 0.13505548, -0.122196645, -0.120850466, 0.041478753, 0.1446364, 0.019547235), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.39282933, 0.15466502, 0.21281202, -0.10871069, 0.09141795, -0.047807757, 0.13347113, -0.0070413537, -0.30001637, 0.1590897, 0.13185735, 0.26315352, 0.060256246, 0.013501628, 0.21543017, 0.18577099), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.104001306, -0.5267066, -0.4119273, 0.08457817, -0.077629924, 0.16720273, 0.12549257, -0.1173481, 0.36272144, -0.7772537, 0.17534287, -0.23318143, -0.15383753, 0.095170036, 0.2495684, -0.122358866), target);\n\ttarget = MulAdd(nf3, MF4x4(0.12718932, -0.23085114, 0.44935048, -0.021294393, 0.005949905, 0.019026272, 0.075566776, 0.15591605, 0.115685046, -0.14728822, -0.05144243, 0.06136992, 0.13333684, -0.012480303, -0.088788785, 0.037873793), target);\n\ttarget = MulAdd(ng3, MF4x4(0.07020059, -0.06063198, 0.1457899, 0.0056248507, -0.008290764, -0.06342888, 0.18459271, 0.015399551, -0.11359522, 0.17675807, 0.069318, -0.040129766, -0.07564287, -0.026339471, 0.14574161, 0.23760302), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.4500806, 0.37602243, 0.13479808, -0.003117945, 0.063341856, 0.061276495, 0.1102818, 0.19250661, -0.25082627, 0.22803108, 0.08279026, -0.07739116, -0.05543028, -0.1009643, 0.28930148, -0.08104323), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.009021877, 0.16090877, -0.03602814, 0.1261343, 0.034350336, -0.052137982, 0.21462724, -0.02009136, -0.070031494, 0.03347469, -0.052788753, -0.05233215, -0.16940826, -0.09597297, 0.12662534, 0.019423395), target);\n\tconv2d_4_tf2[gxy] = target;\n}\n\n//!PASS 6\n//!DESC Conv-4x3x3x24\n//!IN conv2d_4_tf, conv2d_4_tf1, conv2d_4_tf2\n//!OUT conv2d_5_tf, conv2d_5_tf1, conv2d_5_tf2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_4_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_4_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_4_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_4_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 a3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = conv2d_4_tf2.SampleLevel(sam, pos, 0);\n\tMF4 f3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(-0.05178692, 0.012992142, -0.09760262, -0.088807374);\n\ttarget = MulAdd(a1, MF4x4(0.091359325, -0.047575854, -0.0801013, 0.20167087, -0.09074628, 0.14914455, 0.06205747, 0.08365782, -0.07602618, 0.12077156, -0.14313725, -0.00097601005, 0.1820761, -0.24430461, 0.02867478, -0.115407124), target);\n\ttarget = MulAdd(b1, MF4x4(-0.017759264, -0.17924258, -0.0345519, 0.08500409, -0.07076207, 0.080482826, 0.022080237, -0.007573794, 0.34499946, 0.008354738, 0.14645022, -0.3155209, 0.41903394, 0.008933743, -0.26766288, 0.12653211), target);\n\ttarget = MulAdd(c1, MF4x4(-0.003709739, 0.027829988, 0.14320208, -0.011639459, -0.03870455, -0.06727105, -0.23741855, -0.04182651, 0.09618168, 0.06922006, -0.03409518, -0.038725164, -0.07008305, -0.09782443, 0.06599439, -0.055400725), target);\n\ttarget = MulAdd(d1, MF4x4(0.12684472, 0.42739755, 0.05868158, 0.07929677, 0.062750086, 0.122842215, -0.2262321, -0.057169817, -0.10190911, 0.06661454, -0.2044338, -0.058569092, 0.06513055, -0.38419202, -0.2889477, 0.00075288495), target);\n\ttarget = MulAdd(e1, MF4x4(0.15597402, 0.050789982, 0.4612256, -0.1232455, 0.09143189, -0.056280397, 0.21547496, -0.043968584, -0.017269861, 0.1459616, -0.23092718, 0.27603424, 0.070095435, 0.42628354, 0.09857772, 0.023654036), target);\n\ttarget = MulAdd(f1, MF4x4(0.03566403, -0.089161746, -0.06622656, -0.043728504, 0.012655346, 0.07107657, 0.15460275, 0.09053651, -0.07001083, -0.09635171, 0.030271877, -0.010034998, 0.090245664, 0.11612592, -0.18119843, 0.115030274), target);\n\ttarget = MulAdd(g1, MF4x4(-0.055906393, 0.020972524, 0.04405409, -0.08206327, -0.030148225, 0.015709205, 0.056204747, -0.104014955, 0.044074293, -0.3603162, 0.009822444, -0.12735473, 0.0067433324, 0.21345942, -0.16173074, 0.062634476), target);\n\ttarget = MulAdd(h1, MF4x4(-0.048287738, 0.04504366, -0.16253331, -0.06976707, -0.13551746, -0.0069742347, -0.11613854, 0.13235438, 0.07955257, 0.14578325, -0.3022118, 0.02631827, 0.3573758, 0.12363717, -0.039339956, -0.21598001), target);\n\ttarget = MulAdd(i1, MF4x4(-0.075250365, -0.023891231, 0.13229692, -0.022614656, 0.08825453, 0.061776746, -0.0993127, -0.10578799, -0.1690626, 0.03054397, -0.07695639, -0.079353474, 0.0615981, 0.0034620631, 0.08599167, -0.085487425), target);\n\ttarget = MulAdd(a2, MF4x4(-0.13306135, 0.070102595, 0.0018800788, -0.09813606, -0.03170419, 0.01839398, -0.05142857, -0.010052865, -0.11429524, -0.07586167, -0.060972217, -0.022728505, -0.037173454, -0.01240384, 0.1636404, -0.1259204), target);\n\ttarget = MulAdd(b2, MF4x4(0.21663728, -0.0165655, -0.19682632, 0.13902938, -0.081392035, 0.02523787, 0.1569057, -0.016838314, -0.20710535, 0.10089684, 0.2759473, -0.06408284, -0.17343125, -0.050983876, -0.09340315, 0.042417858), target);\n\ttarget = MulAdd(c2, MF4x4(-0.44453263, -0.10516173, -0.056139067, 0.24120103, 0.14092721, 0.09527867, -0.10289124, 0.07447457, -0.07255724, -0.07065093, -0.19831358, -0.03145072, 0.062462587, -0.13137348, 0.1398097, -0.08052687), target);\n\ttarget = MulAdd(d2, MF4x4(-0.20226036, -0.089287, -0.20396022, 0.16342834, -0.0715875, 0.030659283, -0.09019761, -0.050632484, -0.087833114, -0.4390073, 0.19481303, 0.03432329, 0.22792237, 0.023274168, 0.029200593, -0.018187294), target);\n\ttarget = MulAdd(e2, MF4x4(0.46787158, 0.17991507, 0.0023480568, -0.031941783, -0.060549572, -0.09330203, 0.055897802, 0.12673432, 0.4230312, -0.4516835, -0.00064001186, 0.109839454, 0.2836279, 0.07375687, 0.17711547, -0.34547985), target);\n\ttarget = MulAdd(f2, MF4x4(0.06408312, 0.009809225, 0.12017534, 0.12778811, 0.01949525, 0.00639294, -0.022816632, -0.20515566, -0.026015112, -0.088214, 0.09398295, 0.14219733, 0.021610592, -0.0133708725, 0.15716344, 0.15374821), target);\n\ttarget = MulAdd(g2, MF4x4(-0.38632336, 0.1055968, -0.16746776, 0.031227939, 0.048837874, 0.08812276, 0.08459655, 0.037026476, -0.012736664, -0.032292336, -0.043989874, 0.030728273, -0.117319904, 0.13062797, -0.17748901, 0.20819202), target);\n\ttarget = MulAdd(h2, MF4x4(0.02485017, -0.08059275, -0.14782152, 0.16193154, 0.038559932, 0.16653356, -0.01829594, -0.32613558, 0.09611959, -0.14201616, 0.19360055, -0.16462325, 0.110373735, -0.013233708, 0.06437815, 0.05023126), target);\n\ttarget = MulAdd(i2, MF4x4(-0.0939555, 0.08396099, -0.19401367, -0.072351895, 0.0011377602, -0.08304909, 0.18247987, -0.06868134, -0.13975257, -0.072047986, 0.13241461, -0.027208991, -0.13384572, -0.04257672, -0.19476503, 0.1448576), target);\n\ttarget = MulAdd(a3, MF4x4(-0.014496433, -0.08627452, 0.013479882, 0.08189796, -0.39928418, -0.23446554, 0.033236828, -0.073348634, 0.20772837, -0.12541759, 0.12547676, 0.15118147, 0.06343077, 0.13170359, 0.07456327, 0.037460607), target);\n\ttarget = MulAdd(b3, MF4x4(0.22783525, -0.062255867, -0.015669081, 0.18545356, -0.14074744, -0.0977361, -0.15016074, 0.12626553, 0.025569597, 0.05259659, -0.1401111, 0.07791122, -0.25046918, 0.14517197, 0.051306423, 0.10093671), target);\n\ttarget = MulAdd(c3, MF4x4(0.10963008, 0.10075975, -0.09315192, 0.03928484, -0.05507595, -0.027855752, -0.17043641, 0.013336898, -0.14907023, -0.098712295, -0.055508208, -0.017730046, -0.11934544, -0.10822632, -0.07726361, 0.070103206), target);\n\ttarget = MulAdd(d3, MF4x4(-0.1622651, -0.12376016, -0.048875168, 0.030344466, -0.104258224, -0.30643496, 0.0542774, -0.21803202, -0.14617568, 0.3079984, -0.3006482, -0.116233975, -0.034087032, -0.21282312, -0.08974353, -0.21706651), target);\n\ttarget = MulAdd(e3, MF4x4(-0.17512108, -0.015798012, -0.2049979, 0.16415326, -0.037209652, -0.148847, 0.6209044, 0.35860595, 0.18044792, -0.030519703, 0.053781435, -0.4150754, 0.025012434, -0.049011238, -0.09130766, -0.12138916), target);\n\ttarget = MulAdd(f3, MF4x4(-0.044045687, 0.025672063, -0.021289285, -0.12346778, -0.12262819, -0.11085004, 0.15677044, -0.18353437, 0.35993704, -0.060050707, 0.36173448, 0.12406324, -0.006029473, -0.038038015, 0.10273825, 0.004656042), target);\n\ttarget = MulAdd(g3, MF4x4(0.08824971, 0.055099364, -0.029784897, -0.14293, 0.21541874, -0.3471079, 0.19006546, -0.25032708, 0.17953677, 0.07634346, 0.0943904, -0.14774932, -0.038256116, -0.043757852, -0.18224706, -0.0767931), target);\n\ttarget = MulAdd(h3, MF4x4(-0.14115013, -0.027943728, 0.043077346, 0.16837053, -0.30298868, -0.0012479749, -0.21017027, 0.08538537, -0.18856743, -0.1644689, 0.106126145, -0.05934489, -0.23814213, 0.089396715, -0.042591337, 0.07807625), target);\n\ttarget = MulAdd(i3, MF4x4(0.1340491, 0.052864898, 0.030508095, -0.053534534, 0.0763844, -0.083921455, -0.007467296, 0.10813974, -0.13826096, 0.07286494, 0.017945437, 0.12293839, -0.14042178, -0.02947513, -0.031838633, 0.12082989), target);\n\ttarget = MulAdd(na1, MF4x4(0.1102285, 0.19918683, 0.040284276, -0.0514123, -0.047394637, -0.021792434, 0.012939052, -0.0023403286, 0.23044759, 0.21366574, -0.1535014, 0.15519466, -0.006563226, 0.07491919, 0.122444265, -0.093628265), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.23274226, 0.104155675, 0.1884381, 0.02142028, 0.11323431, 0.1554841, 0.123437695, -0.03776226, -0.45464247, -0.25061348, -0.032978028, -0.018654265, -0.024727726, 0.06470798, -0.122398995, -0.21492854), target);\n\ttarget = MulAdd(nc1, MF4x4(0.14285532, 0.0013011715, -0.06574208, 0.086654305, -0.048436016, -0.16197361, 0.008795141, -0.018098531, 0.3623435, 0.12052228, 0.21655083, -0.057346217, -0.08660433, 0.20646246, -0.145056, 0.009912266), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.120041594, -0.25241104, -0.6336183, -0.12418686, 0.008573801, -0.06827598, -0.09228199, -0.07655123, 0.07855638, 0.089592285, 0.15033577, -0.2273755, 0.06294413, -0.011506087, -0.2499483, -0.35493052), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.06940104, -0.06756523, -0.53161937, 0.12494837, -0.06503322, 0.11604297, -0.34153852, 0.04156643, -0.45669356, -0.044081815, 0.004695825, -0.072227545, -0.02530914, -0.17312789, -0.09068418, -0.09982657), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.29282403, -0.010049017, -0.024964066, 0.017599167, 0.078072265, -0.02860973, 0.19687887, 0.19570877, 0.0462925, 0.09549612, -0.1492184, -0.23970652, 0.1505322, 0.019254023, -0.042950142, -0.015978891), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.03936397, -0.16615695, 0.031633284, -0.15845262, 0.07402319, -0.10969973, 0.1627256, -0.082409754, 0.25605643, 0.12996247, 0.0026216798, 0.09912746, 0.05241615, -0.19865209, 0.16946888, 0.05068021), target);\n\ttarget = MulAdd(nh1, MF4x4(0.01114184, 0.084049165, 0.21976121, 0.2706964, -0.1294367, -0.06303496, -0.023219386, 0.077690855, 0.27775633, 0.00947329, -0.15350725, -0.33890706, -0.11828109, 0.09787361, -0.016221395, 0.016552113), target);\n\ttarget = MulAdd(ni1, MF4x4(0.06600668, -0.038050972, 0.05673705, -0.074460626, -0.033874847, 0.04394138, -0.09962254, 0.024659669, 0.22614685, 0.0010322065, 0.09654571, -0.06633969, -0.10417394, -0.026023693, -0.022211308, 0.07900881), target);\n\ttarget = MulAdd(na2, MF4x4(0.036456246, -0.2124808, -0.012558569, -0.005300579, -0.00047140988, 0.35318285, -0.06906561, 0.17434907, 0.062296104, 0.07322263, 0.07417871, 0.018067235, -0.08858221, -0.14630227, 0.029234141, -0.15545718), target);\n\ttarget = MulAdd(nb2, MF4x4(0.0863986, -0.040072814, -0.06980794, 0.2665523, -0.16316326, 0.110833816, 0.095236875, -0.2692474, 0.04447339, 0.06251346, 0.22095545, -0.041103855, 0.06609487, -0.019505464, -0.05033705, 0.22964026), target);\n\ttarget = MulAdd(nc2, MF4x4(0.29361203, 0.13948435, -0.04883785, -0.055638783, -0.21016635, 0.06452464, 0.2573405, 0.015132235, -0.20484985, -0.21653354, 0.21269105, 0.0118991295, -0.081802815, 0.105966985, -0.3921394, 0.20990291), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.08627829, 0.03343112, 0.31935173, 0.20275539, 0.069561645, 0.44631377, -0.16738373, -0.35273424, 0.1321877, 0.41263857, 0.15853775, 0.1095465, -0.14425585, 0.046967953, 0.052787095, 0.20420372), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.6400273, -0.02383611, 0.002919604, 0.20062971, 0.22101505, 0.13407028, -0.3607917, 0.097198665, -0.009687387, 0.20925479, -0.22717565, -0.077685565, -0.10238261, -0.30386773, -0.07093403, 0.3789904), target);\n\ttarget = MulAdd(nf2, MF4x4(0.19998863, 0.11971228, -0.12407401, -0.020293633, 0.17083226, 0.07682446, 0.017597012, 0.16630399, -0.044776015, 0.038629167, 0.09155888, 0.2775535, 0.17645419, 0.05448149, 0.26603785, -0.23594949), target);\n\ttarget = MulAdd(ng2, MF4x4(0.13560197, -0.12419031, -0.001434453, 0.096761554, -0.025025826, 0.23237492, -0.22578233, 0.39105797, -0.1521174, 0.012731402, -0.12703973, 0.17032094, -0.23923986, 0.15013756, -0.079769395, 0.21047747), target);\n\ttarget = MulAdd(nh2, MF4x4(0.023834813, 0.042676624, -0.043734103, -0.0489564, 0.2968653, 0.12845509, 0.26865506, -0.1339746, 0.1031858, 0.06713386, 0.035661936, -0.008399658, -0.023008743, 0.14043713, -0.10849628, -0.29047936), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.15448047, 0.018301843, -0.11298581, 0.0643367, 0.19861038, 0.054608114, 0.053602763, -0.12229704, 0.1838333, 0.060085677, -0.054444484, -0.03963665, -0.09128162, -0.002571187, -0.011031746, 0.013937809), target);\n\ttarget = MulAdd(na3, MF4x4(-0.19042498, -0.10742417, -0.009482582, -0.13710654, 0.07004467, 0.054024436, -0.079347484, -0.069204524, -0.066065274, 0.029851453, 0.057536937, -0.10738562, -0.0019049636, -0.05961882, 0.015954375, -0.046048168), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.30546746, 0.026462605, -0.16525201, -0.14865883, -0.22890806, -0.064678855, -0.07405687, -0.060555395, 0.19689551, -0.10453069, -0.13507089, 0.044260368, 0.3549059, -0.2059544, -0.017047137, -0.085279755), target);\n\ttarget = MulAdd(nc3, MF4x4(0.15902059, 0.27806246, -0.02470931, -0.071123265, -0.10959986, -0.061866783, 0.18073395, 0.027781103, 0.01899935, 0.0068895225, 0.09553635, 0.014020304, 0.48340565, 0.1568511, 0.18551165, -0.03941332), target);\n\ttarget = MulAdd(nd3, MF4x4(0.18007858, -0.18097854, -0.032877125, -0.13505274, 0.12229551, -0.19246832, 0.07324526, 0.16423881, -0.07985383, 0.102822796, 0.022348268, 0.20718963, 0.1657745, 0.09994554, -0.044875868, -0.04791159), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.1522259, -0.15503414, 0.5213648, 0.048220746, -0.03673415, -0.048296932, -0.0035913677, -0.33058712, -0.37347135, -0.107429914, -0.27443045, 0.1444104, -0.12858333, -0.0898987, 0.18059024, 0.2385074), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.17812404, 0.027946725, -0.15453176, -0.16888796, -0.1454275, -0.08521876, -0.09842795, 0.017285218, -0.15038043, 0.12944756, -0.0074227825, 0.049601924, -0.2942431, 0.3029513, 0.2346801, -0.010824461), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.13489157, -0.19739941, 0.19581558, -0.08267463, -0.16068561, 0.019075824, 0.0042642844, 0.1025828, 0.009590443, -0.042244606, 0.0069560697, 0.18787669, 0.08875559, 0.12666185, 0.27844438, -0.014087231), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.15345146, -0.088549316, -0.2007104, 0.08694364, 0.097901054, -0.09112625, 0.17398718, -0.08376772, 0.13471653, -0.11526493, 0.09551537, 0.000994288, 0.10547293, 0.027825898, 0.13316914, 0.27184469), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.2831289, -0.1077123, -0.015594004, -0.15530941, 0.030916838, -0.007725551, -0.0013768732, -0.0542834, 0.14217895, -0.019043038, -0.121255994, 0.1774951, -0.02571608, 0.08931403, -0.05238016, 0.49422094), target);\n\tconv2d_5_tf[gxy] = target;\n\t\n\ttarget = MF4(0.06121498, 0.024510587, -0.012219787, 0.074479066);\n\ttarget = MulAdd(a1, MF4x4(0.06822733, 0.047476072, 0.010553384, -0.06512182, -0.014951614, -0.023422068, 0.12602834, -0.06063965, 0.11658996, -0.0075021465, -0.015290296, -0.18518211, 0.06179118, 0.06263638, 0.2701791, 0.03897366), target);\n\ttarget = MulAdd(b1, MF4x4(-0.005936342, 0.0046865293, 0.1009514, 0.113875, -0.22882754, 0.06882264, 0.044918634, -0.15084246, 0.27190965, -0.09802474, -0.17399205, -0.28109655, 0.115927316, 0.065323986, -0.07905437, 0.31301168), target);\n\ttarget = MulAdd(c1, MF4x4(-0.058077507, 0.060739186, -0.047071032, 0.08625859, 0.18279932, -0.062378623, -0.020198788, -0.020209447, -0.03725052, -0.17194895, -0.009185631, -0.061395645, -0.10394699, 0.13250858, -0.02054919, 0.17315096), target);\n\ttarget = MulAdd(d1, MF4x4(0.14755291, -0.15426354, -0.038297612, -0.002863782, 0.014281958, -0.1430333, -0.15214095, -0.25977355, 0.055283524, -0.020698514, -0.031711206, 0.043652818, -0.011913896, -0.15935701, 0.30120242, -0.07141416), target);\n\ttarget = MulAdd(e1, MF4x4(-0.07511256, 0.097857445, 0.1280642, -0.23440666, 0.07341128, 0.025019338, 0.2676868, -0.6392872, -0.018604822, -0.41209763, 0.036267836, 0.048222575, -0.049899656, 0.12035686, -0.415035, 0.111109026), target);\n\ttarget = MulAdd(f1, MF4x4(0.06660235, 0.10465846, 0.03231821, -0.057176817, -0.33603838, -0.117789224, -0.08611003, -0.14391285, -0.07540102, -0.049893077, 0.06534853, 0.014703251, 0.1686735, 0.21635768, -0.0004174196, -0.06970894), target);\n\ttarget = MulAdd(g1, MF4x4(-0.09123483, -0.02650008, -0.26045164, 0.008752753, -0.038899194, 0.056095514, -0.15680234, -0.21681328, -0.1807998, -0.08361851, -0.20086065, 0.13148476, 0.009767108, -0.0006198602, 0.15239619, -0.07983563), target);\n\ttarget = MulAdd(h1, MF4x4(0.07919758, -0.10799586, -0.11674191, 0.07721418, -0.02489812, 0.013862152, 0.14324659, -0.19167677, 0.47860634, 0.016703675, -0.025147682, -0.13012366, 0.021707488, -0.049213693, -0.049455807, -0.122704044), target);\n\ttarget = MulAdd(i1, MF4x4(-0.1036183, -0.0016137742, -0.010286528, 0.03161724, 0.111006066, -0.010090895, -0.13061818, -0.12827039, -0.06817742, -0.08191259, -0.010029781, 0.0756146, -0.024297824, 0.08189767, 0.0012347228, -0.061834745), target);\n\ttarget = MulAdd(a2, MF4x4(0.074035384, -0.0054270145, -0.054232355, 0.052020255, 0.039064236, 0.07612554, -0.07112709, -0.041343223, -0.04877365, -0.081693694, -0.19036053, -0.07976283, -0.019394593, 0.11878604, -0.17398894, 0.066551484), target);\n\ttarget = MulAdd(b2, MF4x4(0.021499138, 0.11031255, 0.07942792, 0.19678888, -0.1660272, 0.12142711, 0.053864148, -0.09273723, -0.04266638, -0.092488594, 0.052425362, -0.13612169, 0.055963192, -0.08253813, -0.03933135, 0.01831182), target);\n\ttarget = MulAdd(c2, MF4x4(-0.009105146, 0.25351846, 0.021370875, 0.07980244, 0.08131595, 0.0045822896, 0.024319764, 0.13540691, 0.10949155, -0.036669955, -0.0440662, 0.031805526, 0.0076850317, 0.0050480044, 0.010493236, -0.20307945), target);\n\ttarget = MulAdd(d2, MF4x4(0.035208475, -0.016913606, 0.06748526, 0.28376573, -0.09829214, 0.03491954, -0.048616122, -0.022004133, 0.033356942, 0.041457683, -0.1141923, 0.053526472, 0.1301348, 0.032898832, 0.14776024, 0.11034088), target);\n\ttarget = MulAdd(e2, MF4x4(0.25044763, 0.1022549, 0.13824631, 0.15358314, -0.01792875, -0.023492826, -0.16425751, -0.04925489, -0.5415385, 0.22712392, 0.32446757, 0.061109796, -0.016136007, 0.09170503, -0.020712415, 0.22309552), target);\n\ttarget = MulAdd(f2, MF4x4(-0.16366409, -0.017794464, -0.12714142, -0.021118859, 0.03178183, 0.067133196, 0.105975136, 0.009305183, 0.08399536, 0.15291104, -0.029605338, 0.0134068895, -0.09861506, -0.059872147, -0.03844756, -0.12674972), target);\n\ttarget = MulAdd(g2, MF4x4(-0.07806115, 0.043562375, -0.009290437, 0.04422061, 0.044749737, 0.06424069, 0.026669348, 0.03424551, 0.024359688, -0.07599093, -0.037592914, 0.054648582, 0.06240557, 0.061408926, 0.030988218, 0.08729672), target);\n\ttarget = MulAdd(h2, MF4x4(-0.010351677, 0.028773759, 0.12303081, -0.046040278, -0.06785082, -0.24544333, -0.14512034, 0.028818216, -0.030756637, -0.070427775, 0.029058386, 0.11266564, -0.0126586575, -0.099691354, 0.23675011, 0.021924842), target);\n\ttarget = MulAdd(i2, MF4x4(0.29327697, 0.04030911, -0.10077885, -0.048846, -0.16350128, -0.054487552, 0.070820816, 0.047305796, -0.12812468, 0.007919711, -0.09975894, 0.06570609, 0.041386835, -0.027804038, 0.054338817, -0.09551541), target);\n\ttarget = MulAdd(a3, MF4x4(-0.08264294, 0.0022153752, 0.17625731, 0.108203925, -0.1994716, 0.13532871, 0.004684368, -0.068710595, 0.118159816, -0.07109689, 0.0926224, -0.24703208, -0.01173713, 0.033426084, -0.016495464, 0.12449714), target);\n\ttarget = MulAdd(b3, MF4x4(-0.0937873, -0.065207124, 0.1289635, 0.17735708, -0.07141622, -0.116392545, -0.012032065, 0.2256439, -0.16182312, -0.12979633, 0.13266288, -0.029406255, -0.11667275, 0.010681019, -0.03679369, 0.12324768), target);\n\ttarget = MulAdd(c3, MF4x4(-0.08298939, -0.04220063, 0.03483479, 0.13134407, 0.21608235, -0.034893714, -0.12628594, 0.16904697, 0.021075964, 0.1242292, 0.049865, 0.0012191305, 0.02183184, 0.106443465, -0.097153716, 0.10045028), target);\n\ttarget = MulAdd(d3, MF4x4(-0.15327847, -0.03231816, 0.048716772, 0.04888897, 0.042859055, 0.15434006, -0.20086974, -0.05871333, -0.06012798, -0.16594929, -0.41956443, 0.02897127, 0.10374121, 0.0979167, -0.06796184, -0.16530903), target);\n\ttarget = MulAdd(e3, MF4x4(0.4286096, -0.29660472, -0.16605186, 0.27494267, 0.026896525, 0.28659457, -0.03428165, 0.2044704, 0.48915815, -0.33265522, 0.21135275, 0.33785677, 0.18982616, 0.10604258, -0.064662024, 0.096615575), target);\n\ttarget = MulAdd(f3, MF4x4(0.016727265, 0.17198113, -0.05871693, 0.054799933, -0.02786635, 0.15011124, -0.23983961, 0.033867355, -0.19206874, -0.13592441, 0.07261021, -0.043166462, -0.12164969, -0.07333818, 0.037067372, 0.08996417), target);\n\ttarget = MulAdd(g3, MF4x4(-0.070286445, -0.10659555, -0.04422945, -0.053230558, 0.0013350527, -0.017993074, -0.049735866, 0.11409308, 0.04892686, -0.06817943, -0.12813167, 0.039810136, 0.05252391, -0.06560004, -0.063294955, -0.07105003), target);\n\ttarget = MulAdd(h3, MF4x4(-0.13546339, 0.14185336, 0.006366223, -0.28422508, -0.21820036, 0.039592113, -0.07649182, -0.27793187, -0.2901769, -0.046293516, 0.25072086, -0.1427351, -0.0032531293, 0.03191745, -0.029102972, 0.050067473), target);\n\ttarget = MulAdd(i3, MF4x4(0.07247183, -0.0060611004, -0.04357295, -0.10875274, 0.12985152, 0.08760643, -0.19915642, -0.014556378, 0.1215484, 0.25098228, -0.21922487, 0.021113032, 0.0839372, 0.055542022, 0.13710897, -0.027615722), target);\n\ttarget = MulAdd(na1, MF4x4(0.19114621, 0.099159814, 0.011108828, 0.029784255, 0.08460498, 0.015443031, -0.044587217, 0.09834142, 0.10807179, -0.05328408, 0.13301793, 0.11193144, 0.18251152, 0.083096996, -0.08564835, -0.15828381), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.28161234, 0.1756162, 0.17534174, -0.15757571, -0.08024952, 0.05677887, -0.1527151, -0.035949282, -0.16559522, -0.03176932, -0.15242305, 0.026554676, 0.07632302, -0.07731726, -0.17139448, -0.3687111), target);\n\ttarget = MulAdd(nc1, MF4x4(0.08050096, -0.0065235267, 0.064694345, -0.014644451, -0.079178736, 0.042656552, 0.09551645, 0.036842708, -0.03371497, -0.088755935, 0.07605894, -0.10299958, 0.08336513, -0.1338214, -0.051605105, -0.19725145), target);\n\ttarget = MulAdd(nd1, MF4x4(0.051400978, -0.02814356, -0.5582187, 0.05216139, -0.12328604, 0.07732251, -0.16055895, 0.14309604, 0.017186563, 0.08711397, -0.17381294, -0.011499491, -0.0481547, -0.04854952, -0.46566048, -0.3058923), target);\n\ttarget = MulAdd(ne1, MF4x4(0.5119618, -0.38263124, 0.15986086, 0.010742568, 0.38711935, -0.336849, 0.040117126, 0.4004001, 0.19877116, 0.47289473, 0.021661036, -0.015238145, 0.09152666, 0.038322717, 0.06817698, 0.049476456), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.10441812, 0.21133856, -0.057014488, 0.23972808, -0.24930222, -0.050501857, 0.032259904, 0.12751378, 0.27306128, 0.30964115, -0.11031131, 0.12801209, 0.178222, -0.062289014, 0.022079576, -0.11246125), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.03134103, -0.22539799, 0.06857922, -0.10189109, -0.05753412, -0.024686527, 0.013851189, 0.1957986, -0.020091414, 0.14719157, 0.11946867, -0.09724786, 0.0028783937, 0.060009662, 0.013492387, 0.11172315), target);\n\ttarget = MulAdd(nh1, MF4x4(0.025690198, 0.23751663, 0.12185973, -0.019141376, -0.084277906, 0.11608392, 0.16283877, 0.042005546, 0.072981484, -0.2306133, -0.071143106, -0.18201771, -0.031751275, -0.020903533, 0.12043939, 0.20526986), target);\n\ttarget = MulAdd(ni1, MF4x4(-0.033504594, -0.09981515, 0.19222768, -0.00037204215, 0.07057902, 0.10403715, -0.03022699, 0.098804235, 0.18592818, 0.024603445, 0.11061402, -0.11533017, -0.12443965, 0.011813011, 0.07349946, 0.038668673), target);\n\ttarget = MulAdd(na2, MF4x4(-0.23181002, -0.17350966, 0.048837297, -0.08551675, 0.18603337, 0.058313303, 0.04316692, 0.058691278, -0.004881664, 0.0729517, -0.03626247, 0.15820287, -0.02682429, -0.0048006307, -0.094057836, -0.14746818), target);\n\ttarget = MulAdd(nb2, MF4x4(0.1383817, -0.1420967, 0.1424335, 0.22556119, -0.00086617674, 0.16489741, -0.26023895, -0.20425053, -0.034436412, 0.2758035, -0.059897684, -0.13402066, -0.16843258, -0.121999204, 0.3507855, 0.12512234), target);\n\ttarget = MulAdd(nc2, MF4x4(0.0632651, -0.025671296, -0.07224494, -0.037086867, -0.09273154, 0.0072819768, -0.049275056, -0.1953304, -0.17975083, 0.082679234, 0.053353265, -0.006074758, 0.20823684, 0.062092874, 0.11811291, 0.1815561), target);\n\ttarget = MulAdd(nd2, MF4x4(0.078111276, 0.25469536, 0.29218477, 0.004212939, -0.1232599, 0.021684207, -0.66154927, -0.343972, 0.010710011, -0.08535829, 0.18138462, 0.09095369, -0.103921935, 0.057450265, 0.25861067, -0.15153539), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.10782405, 0.18735452, -0.19443172, -0.15904504, 0.18990147, 0.48975512, 0.4310995, 0.1340281, 0.3089527, -0.10327674, -0.09608584, -0.123780966, -0.08807219, 0.14264533, -0.3084031, 0.02124611), target);\n\ttarget = MulAdd(nf2, MF4x4(0.15577073, -0.06495954, 0.060370963, -0.114554875, 0.0047810473, 0.3622068, -0.3659395, 0.15643036, -0.07608074, 0.04065042, -0.039538994, -0.02360629, -0.02197194, 0.0048276316, 0.110902175, -0.16704206), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.0020525095, -0.012990091, 0.094804876, -0.02951601, 0.24626282, 0.124219425, 0.0463335, 0.094997995, -0.048861977, -0.005314135, 0.0059577175, -0.105576694, 0.048093226, 0.09738743, 0.21545859, 0.054231316), target);\n\ttarget = MulAdd(nh2, MF4x4(0.07456489, 0.02194597, -0.20656359, -0.15409991, -0.04743203, -0.15427557, -0.24320696, 0.23521787, 0.016238466, -0.012914946, -0.05602358, 0.06522049, 0.102704614, -0.23755711, -0.08094957, 0.008219577), target);\n\ttarget = MulAdd(ni2, MF4x4(0.035681196, -0.033441707, -0.11075713, 0.055746105, 0.019134156, -0.049570475, 0.06607101, -0.0073855054, 0.07943337, -0.11261986, 0.0008748123, -0.10753691, -0.10877436, -0.0108197965, -0.04098305, 0.020095402), target);\n\ttarget = MulAdd(na3, MF4x4(0.027692698, -0.023028603, -0.100124516, -0.103564754, 0.039096612, -0.010974292, -0.02888593, 0.08225068, -0.022655668, -0.023619713, -0.04132294, 0.06264889, 0.11349463, 0.074886896, -0.026237458, -0.13935888), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.07625777, -0.02026929, -0.16509674, -0.07015678, 0.12159663, 0.11826456, -0.16222349, 0.02991282, 0.31014135, -0.18721381, 0.015715228, 0.013268594, -0.0226595, -0.086094275, 0.24472123, -0.10165225), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.0046345745, -0.08258393, -0.0949934, -0.18188646, -0.082375005, 0.07654353, 0.023176871, -0.020692138, 0.024534898, -0.115623355, -0.012813735, 0.06324557, 0.10770564, -0.08825215, 0.049195863, -0.076814786), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.038878765, -0.10554748, -0.03482947, -0.2024768, -0.09590611, -0.05518289, 0.17108603, 0.10745178, 0.14090835, 0.04451474, 0.33331943, -0.09338132, -0.13840568, -0.06591041, -0.13315365, 0.14895599), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.7184948, 0.20635058, -0.01087146, -0.25665486, 0.0694774, -0.08051657, -0.20419565, -0.29972658, -0.31587854, 0.26213837, -0.14282377, -0.14769338, -0.29376042, -0.24546684, 0.37429252, -0.01691138), target);\n\ttarget = MulAdd(nf3, MF4x4(0.010284815, -0.29481632, 0.18720046, 0.028168285, -0.025520338, -0.031638097, 0.07629401, 0.23760115, -0.06497784, -0.09899808, -0.025247818, -0.141932, 0.30421942, 0.0839128, 0.15210237, -0.2547937), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.11730973, 0.08676562, -0.12592962, 0.059735335, 0.036849916, 0.01789285, -0.02247672, 0.034570415, 0.069350585, -0.047193673, 0.06288105, -0.016742256, -0.06302216, 0.00919547, 0.12617198, -0.001655632), target);\n\ttarget = MulAdd(nh3, MF4x4(0.13489273, -0.05945722, 0.15636152, 0.10246266, -0.0492767, 0.13209876, -0.022542313, 0.1869006, 0.18273778, -0.009863488, 0.1475087, 0.009797511, 0.18775922, -0.08949364, 0.031399027, 0.16898693), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.17234778, -0.113925606, 0.0285368, 0.093877554, -0.010534175, 0.002686299, 0.033060588, -0.019788781, 0.12574218, 0.03520547, 0.0032812972, 0.04480523, 0.06951987, -0.25137702, 0.01562915, -0.02552195), target);\n\tconv2d_5_tf1[gxy] = target;\n\n\ttarget = MF4(0.06602671, 0.113320544, -0.04297089, 0.007400785);\n\ttarget = MulAdd(a1, MF4x4(-0.06058286, 0.2195084, 0.19780184, -0.05155375, 0.09216426, 0.03457752, -0.096646644, -0.015035897, -0.13803566, 0.025244685, 0.13735959, -0.009401512, -0.16166702, -0.1815502, 0.007993552, 0.0069571338), target);\n\ttarget = MulAdd(b1, MF4x4(0.047445912, 0.11488218, -0.17851587, -0.1392721, -0.038011838, 0.17368795, 0.106928326, -0.13197932, -0.2733485, -0.087136164, 0.07961574, 0.020573204, 0.029977003, -0.1667677, -0.17820576, 0.0118401665), target);\n\ttarget = MulAdd(c1, MF4x4(0.07106099, -0.00185452, -0.027270012, -0.09875212, 0.06354194, -0.16046102, -0.034993082, -0.053045254, 0.068700135, 0.09387552, -0.09717345, -0.06485704, 0.050274733, -0.015956623, -0.14531186, -0.023925254), target);\n\ttarget = MulAdd(d1, MF4x4(-0.020267177, 0.09845256, -0.22237779, -0.0704043, -0.03563008, 0.0058337585, -0.053230047, -0.0151015995, -0.004355268, -0.16663343, -0.022371203, 0.17783938, 0.27934113, 0.038911168, 0.053898126, 0.067584395), target);\n\ttarget = MulAdd(e1, MF4x4(-0.35373348, -0.04811985, -0.003069958, 0.22371289, 0.039519783, 0.08697823, 0.12242937, -0.05692152, 0.34154105, -0.30326834, -0.23093781, 0.060490705, -0.3779121, -0.12894416, 0.03531685, 0.27401015), target);\n\ttarget = MulAdd(f1, MF4x4(-0.27760014, 0.024816839, 0.16137716, 0.060659613, -0.0962453, -0.023302421, -0.0679713, 0.08072911, 0.10419372, -0.1286133, -0.06336595, -0.13529508, -0.033300906, 0.077698715, 0.13658288, -0.046092913), target);\n\ttarget = MulAdd(g1, MF4x4(0.004510119, -0.018816976, -0.023925988, -0.056694455, 0.021134097, 0.15678076, -0.034855466, -0.052143726, 0.11061209, -0.03679294, -0.15515395, 0.22478753, 0.030984117, 0.01664375, -0.010612448, -0.01799207), target);\n\ttarget = MulAdd(h1, MF4x4(0.18006827, 0.168574, 0.15232614, -0.1295002, -0.05264042, -0.12097018, -0.08624036, -0.20883065, 0.22397974, 0.041060217, -0.23898268, 0.09747489, 0.0005401559, -0.17116228, 0.03260164, 0.2373106), target);\n\ttarget = MulAdd(i1, MF4x4(0.0005155169, -0.10857663, -0.014398447, 0.004808808, -0.05587811, 0.1242163, 0.14578046, -0.09588132, 0.14351574, -0.10559421, -0.041078355, 0.0059864363, -0.061656762, -0.07678676, -0.10182491, -0.10634101), target);\n\ttarget = MulAdd(a2, MF4x4(-0.04443192, 0.13661186, -0.076222196, -0.081149, -0.041719135, -0.12614048, 0.018182557, 0.03125801, 0.06955725, 0.09229393, -0.0070879795, 0.038897008, 0.0052797156, 0.13088952, -0.073197, -0.11281815), target);\n\ttarget = MulAdd(b2, MF4x4(0.19961423, 0.13726334, 0.27169493, 0.05927113, 0.0028651909, -0.1287458, 0.026732842, -0.095184654, 0.016316563, -0.11783113, 0.2360606, -0.30774674, 0.108432285, 0.23025006, -0.085001394, 0.08807084), target);\n\ttarget = MulAdd(c2, MF4x4(-0.060046196, 0.15679826, 0.2430814, -0.13272808, 0.019943269, 0.015503196, -0.030504405, 0.06340887, 0.1670832, -0.13615952, -0.13015799, 0.042683575, -0.06566812, -0.062855676, 0.056155447, -0.13632087), target);\n\ttarget = MulAdd(d2, MF4x4(-0.04923022, 0.053739548, 0.23691703, 0.045897946, 0.08574055, 0.015698176, 0.30700058, 0.03893632, -0.09240451, 0.13776198, -0.01634878, 0.1086944, -0.10443478, -0.038250007, -0.16425894, 0.069837235), target);\n\ttarget = MulAdd(e2, MF4x4(-0.4527755, -0.16416265, 0.45300293, 0.11527787, 0.06872868, 0.03514386, -0.02678375, 0.04558898, -0.21735664, -0.38876057, 0.15125597, 0.20117617, -0.15160187, -0.2531804, 0.15049757, -0.018326014), target);\n\ttarget = MulAdd(f2, MF4x4(0.013021216, 0.07807231, -0.025769137, 0.13387477, -0.16259682, -0.054581523, 0.17289965, -0.08043052, 0.0063357623, 0.11866516, -0.13520378, 0.0152135575, 0.061740812, 0.052589882, -0.16574025, 0.024117855), target);\n\ttarget = MulAdd(g2, MF4x4(0.04268464, 0.06037914, 0.06682348, 0.054433875, -0.14284062, 0.007709387, 0.05249287, -0.008818238, 0.02744223, 0.026029283, -0.068422645, 0.104170494, 0.011463976, 0.10870952, 0.11592658, 0.07393047), target);\n\ttarget = MulAdd(h2, MF4x4(-0.03750191, 0.0014403146, 0.1580456, 0.1137993, 0.08569837, 0.0005632574, 0.08939288, -0.004063193, 0.03108807, -0.1707586, 0.06543877, -0.02108999, -0.044783764, -0.09259009, 0.0018684827, 0.10293258), target);\n\ttarget = MulAdd(i2, MF4x4(-0.072144635, 0.13235292, 0.13174231, 0.06512337, 0.061325137, -0.1140173, -0.10778849, -0.0933897, -0.0026419833, 0.031816084, -0.05882651, -0.05534951, 0.05234496, -0.03341018, -0.028817033, -0.034064483), target);\n\ttarget = MulAdd(a3, MF4x4(0.06916357, -0.11582247, -0.06554703, 0.09624395, 0.11644621, 0.019876527, -0.08696374, 0.017086076, -0.054255698, 0.28372917, -0.000972655, -0.06400794, 0.030290179, -0.08620439, -0.08410291, -0.012277875), target);\n\ttarget = MulAdd(b3, MF4x4(0.06226754, -0.040624045, -0.11270401, 0.10805481, 0.18899143, -0.1973884, -0.034787323, 0.05666152, -0.087144844, 0.032518808, -0.12266705, -0.12644689, 0.035625648, 0.13503525, 0.10947289, -0.02394309), target);\n\ttarget = MulAdd(c3, MF4x4(-0.022302793, 0.10360904, 0.016256806, -0.021677233, 0.12430526, 0.042963423, -0.18037538, -0.14628161, 0.016152794, -0.11254728, 0.06434654, -0.005073352, 0.016403137, -0.035858087, -0.06591741, 0.08597588), target);\n\ttarget = MulAdd(d3, MF4x4(0.004012092, -0.050453838, 0.07977573, 0.15305792, -0.05928047, -0.09349286, -0.14555392, 0.12337536, 0.16214384, -0.109313816, -0.044248413, -0.2963013, -0.14371789, -0.13369437, 0.07077758, 0.10006308), target);\n\ttarget = MulAdd(e3, MF4x4(0.06548829, -0.13058634, -0.26494655, -0.28315514, -0.45161557, -0.07177602, 0.10558368, 0.21007149, 0.45134485, 0.53428864, -0.24526665, -0.51175225, -0.16881745, 0.39553252, -0.059874248, -0.15100208), target);\n\ttarget = MulAdd(f3, MF4x4(-0.034883123, 0.09653819, 0.16275059, -0.10605186, -0.16961089, 0.15750273, -0.28543097, -0.12217311, 0.19074517, 0.00074714713, -0.07579063, 0.14993025, -0.013494211, 0.19434276, -0.038070716, 0.041972294), target);\n\ttarget = MulAdd(g3, MF4x4(0.077254616, 0.013449401, -0.068184, 0.10592368, 0.024376335, 0.0051301597, -0.13352032, 0.17067592, -0.07192257, 0.055784814, -0.12246667, 0.01487913, 0.116122164, 0.10971574, 0.026872944, -0.026666151), target);\n\ttarget = MulAdd(h3, MF4x4(0.05711798, -0.0010387006, -0.11265493, 0.27974793, 0.091452494, -0.20599814, -0.15438712, 0.32230932, -0.105436936, -0.35339028, -0.08469404, -0.03431861, -0.0006499669, -0.2701855, -0.011796139, -0.04423021), target);\n\ttarget = MulAdd(i3, MF4x4(-0.0829698, 0.06493657, -0.036546737, 0.024583373, 0.048521917, 0.1649191, -0.056993846, 0.08988572, -0.12735078, 0.3074979, 0.08563853, 0.119320676, 0.18576288, 0.14356904, -0.026636694, 0.05132804), target);\n\ttarget = MulAdd(na1, MF4x4(-0.0991048, -0.10884221, -0.12869547, 0.034603372, -0.06870907, -0.18230984, -0.021502903, 0.11301028, 0.18878941, -0.110253036, 0.040812176, -0.06389069, -0.15005918, 0.0037244866, 0.2132717, -0.013256287), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.08388061, -0.112235, 0.065214306, -0.13957025, -0.19478679, 0.11254506, 0.054630954, 0.053645436, -0.2522801, 0.15058047, -0.07061216, -0.096459135, -0.11855631, -0.056933407, 0.035139047, 0.068258055), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.06917721, 0.094096094, 0.07469013, 0.16470721, -0.11484115, -0.18424381, 0.016549148, 0.08468404, 0.04055001, -0.33645272, -0.0059957053, 0.08970189, 0.09028248, 0.04077987, -0.06547463, -0.006269863), target);\n\ttarget = MulAdd(nd1, MF4x4(0.21908568, 0.08401723, 0.0843042, 0.06545498, -0.08450129, -0.028926728, 0.19440761, 0.09694871, 0.07596912, 0.045503646, -0.006316475, -0.27986103, 0.06910375, -0.43196592, 0.03879253, 0.1638245), target);\n\ttarget = MulAdd(ne1, MF4x4(0.8879269, -0.02551214, -0.030510996, -0.36941388, 0.3126625, 0.21035604, -0.15371346, -0.2780625, 0.06461355, 0.18609639, -0.149495, -0.23149131, 0.46026996, 0.035948373, 0.18278143, -0.20113651), target);\n\ttarget = MulAdd(nf1, MF4x4(0.055903055, 0.08408526, 0.054170065, -0.2976025, 0.18558906, 0.029338092, -0.09893593, 0.059603147, -0.19218643, -0.008077081, 0.09550512, 0.051217057, -0.0276843, 0.33184877, -0.018644275, -0.11763111), target);\n\ttarget = MulAdd(ng1, MF4x4(0.23338239, 0.011580942, -0.0787839, 0.09754503, 0.009759483, -0.075707465, -0.10206689, 0.08720839, -0.3039172, -0.2001228, 0.30864987, -0.16379629, -0.03914539, -0.06503792, -0.03883409, -0.065077074), target);\n\ttarget = MulAdd(nh1, MF4x4(-0.1440983, 0.2827839, -0.07015957, 0.11515792, -0.1266345, -0.06969393, -0.009006173, 0.12875685, 0.031837627, 0.09990079, -0.1656627, 0.13870959, -0.08637978, 0.024281958, 0.12342855, -0.08816514), target);\n\ttarget = MulAdd(ni1, MF4x4(-0.015464915, -0.19240353, -0.01967364, -0.11796279, -0.06462456, 0.154628, 0.076811045, 0.098927125, -0.20375597, 0.023598116, -0.10710138, 0.08929812, 0.07584669, -0.11928781, 0.049687184, -0.06122156), target);\n\ttarget = MulAdd(na2, MF4x4(0.16479358, 0.19148158, 0.098467164, 0.0618447, 0.0751567, 0.010100359, 0.05155746, -0.0778876, 0.0011591897, -0.056076154, -0.041074045, 0.024008576, -0.017050695, -0.18685716, -0.08527556, 0.0037657958), target);\n\ttarget = MulAdd(nb2, MF4x4(0.16866666, -0.29083413, -0.18637179, 0.0018769886, -0.2018132, 0.46180528, 0.13246574, -0.23898588, -0.12212059, 0.3341523, 0.1091505, 0.08251535, 0.19041067, -0.16169062, 0.07583192, 0.050573617), target);\n\ttarget = MulAdd(nc2, MF4x4(0.0129842255, -0.008741855, -0.053530104, -0.03131398, -0.0020409364, -0.07680617, 0.33556506, -0.011717628, -0.13952619, -0.05453907, 0.10336836, -0.027125375, 0.1751553, -0.030947112, -0.025735123, 0.041072566), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.036542114, 0.10128076, -0.1880457, -0.17261198, 0.1431477, -0.18661828, 0.32769415, 0.0663247, 0.03365178, 0.19796737, -0.09132497, -0.21413301, 0.043885235, 0.20412171, 0.14644071, -0.06985309), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.2735308, 0.19792703, -0.21177524, 0.21988408, 0.32919964, 0.11183913, 0.2913821, 0.06404769, -0.004921694, 0.22249468, -0.010577357, -0.09632516, -0.15458032, -0.2982006, -0.041645106, 0.087833084), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.07113276, 0.07723143, -0.058266032, 0.08239994, -0.18380593, -0.09771933, 0.12499344, 0.031730324, 0.042094275, -0.010583603, 0.009981995, 0.107384935, -0.20355527, 0.017341057, 0.018268948, -0.15857501), target);\n\ttarget = MulAdd(ng2, MF4x4(0.0013823194, -0.044928502, 0.025921093, 0.0012451003, -0.30528855, 0.3374342, 0.34150144, -0.09229386, -0.08328619, -0.10615052, 0.16300991, -0.19953482, -0.10911166, -0.036731765, 0.098331414, -0.06403792), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.023653124, 0.04610296, -0.03044758, -0.025650993, -0.32529983, 0.062136825, 0.24734603, -0.019307928, 0.03787457, 0.34381005, 0.113464035, -0.02037722, 0.32398093, 0.05488551, 0.055344287, 0.017325766), target);\n\ttarget = MulAdd(ni2, MF4x4(0.0385026, 0.079174675, 0.059799727, -0.00725753, -0.0573653, -0.0420986, 0.16784842, 0.14938053, -0.009344561, -0.0778813, -0.017263457, -0.01132742, 0.077959225, -0.14751856, -0.20435876, -0.010041575), target);\n\ttarget = MulAdd(na3, MF4x4(-0.05931535, -0.08731735, 0.11970444, -0.09924397, 0.033911336, -0.0016364546, 0.0087679215, -0.076540634, 0.0077172252, 0.14911291, 0.11776904, -0.017065775, -0.059564207, 0.017132213, 0.06148217, -0.07582431), target);\n\ttarget = MulAdd(nb3, MF4x4(0.071270525, -0.24058339, -0.20233437, 0.001615171, 0.021383315, 0.09934347, -0.0011403296, -0.04854113, 0.12778723, 0.061408937, -0.071042776, 0.26612863, -0.10339047, -0.08749296, -0.04532682, -0.0615132), target);\n\ttarget = MulAdd(nc3, MF4x4(0.06391922, -0.016149543, -0.002464466, -0.00664347, -0.06338617, 0.04004229, 0.034720086, 0.054125533, 0.121965334, 0.2502773, -0.12270718, 0.011068944, -0.00047330794, 0.06449109, 0.17593135, 0.0040256707), target);\n\ttarget = MulAdd(nd3, MF4x4(0.03477346, -0.31120908, 0.28306037, 0.22833072, -0.017806482, -0.056919, 0.055360638, 0.020397838, -0.060393255, 0.02178207, -0.20644443, 0.088335134, 0.030195525, -0.19925289, -0.016580708, -0.007094466), target);\n\ttarget = MulAdd(ne3, MF4x4(0.028902626, 0.12521821, 0.29966938, 0.20124513, 0.11820484, 0.23270105, -0.27059364, 0.0034185604, -0.0808993, -0.21187486, 0.14866447, 0.2362522, 0.2997781, 0.25243583, -0.010675219, -0.21490887), target);\n\ttarget = MulAdd(nf3, MF4x4(0.017603166, -0.1354112, 0.07734325, -0.10108977, 0.095413536, -0.27478248, 0.15811092, 0.08514367, -0.0648521, -0.23040737, -0.015424236, -0.102597706, 0.018168293, 0.049426224, 0.24017967, -0.0076911957), target);\n\ttarget = MulAdd(ng3, MF4x4(0.040054902, 0.10045824, -0.00088240346, 0.10863258, 0.004609783, 0.08008685, 0.0008943593, 0.04380173, 0.04113014, 0.17802699, 0.19284193, -0.09775915, -0.082003035, -0.04828276, -0.2212439, -0.08810767), target);\n\ttarget = MulAdd(nh3, MF4x4(0.110144354, -0.17653003, -0.18453437, -0.13516864, -0.12592733, -0.031436298, 0.10997709, -0.26131755, 0.13670647, 0.33671942, 0.06641791, 0.022009498, -0.0843429, 0.2000657, 0.1431977, 0.23156545), target);\n\ttarget = MulAdd(ni3, MF4x4(0.18203191, -0.30493334, 0.0012451819, 0.040420715, -0.09400875, -0.058327, -0.092143685, 0.08411573, 0.06618551, 0.066164635, -0.08439327, 0.07001009, 0.22673227, -0.1294288, -0.46530777, 0.2499909), target);\n\tconv2d_5_tf2[gxy] = target;\n}\n\n//!PASS 7\n//!DESC Conv-4x3x3x24\n//!IN conv2d_5_tf, conv2d_5_tf1, conv2d_5_tf2\n//!OUT conv2d_6_tf, conv2d_6_tf1, conv2d_6_tf2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_5_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_5_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_5_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_5_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 a3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = conv2d_5_tf2.SampleLevel(sam, pos, 0);\n\tMF4 f3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(-0.06036478, 0.0356493, -0.059101366, 0.0024990432);\n\ttarget = MulAdd(a1, MF4x4(0.19466089, -0.10927993, 0.09179887, 0.15121523, -0.037340622, 0.06053471, 0.038131684, -0.008113673, -0.18904036, -0.09559259, -0.17113, 0.03717301, -0.043611653, -0.16189677, 6.720818e-05, 0.087884724), target);\n\ttarget = MulAdd(b1, MF4x4(-0.2376871, 0.07507205, 0.08144118, 0.266135, -0.0016601613, -0.075726755, 0.1405083, 0.05794102, 0.082300104, 0.42289656, -0.21715559, 0.066831395, 0.31216174, -0.14317952, 0.1725695, -0.17751537), target);\n\ttarget = MulAdd(c1, MF4x4(0.037299458, -0.11762432, -0.011837041, 0.1465751, 0.039899126, -0.049513657, -0.0037649425, -0.17213967, 0.13214532, -0.035151232, 0.098905504, 0.25259635, -0.034471225, 0.22866723, 0.056768697, 0.04517098), target);\n\ttarget = MulAdd(d1, MF4x4(-0.032002304, 0.0033130902, -0.11396168, -0.24947542, -0.01432499, 0.059397, 0.011829774, -0.039037425, 0.2855777, 0.38178965, 0.061862387, -0.3191097, 0.0013762182, 0.10873268, 0.13221635, 0.11438935), target);\n\ttarget = MulAdd(e1, MF4x4(-0.444183, 0.07429998, -0.24415193, 0.20763457, 0.005403234, -0.09182405, -0.33746308, 0.23260857, 0.80383587, 0.42822048, 0.15259221, 0.08751457, -0.18719546, 0.3931829, -0.3559663, 0.1288945), target);\n\ttarget = MulAdd(f1, MF4x4(0.038999066, 0.20546576, 0.17918825, 0.06601807, -0.09185307, 0.08308848, 0.3533222, 0.20337574, 0.2909968, -0.25924757, -0.18089646, -0.0856463, 0.1436575, -0.20405407, 0.08083093, -0.13420194), target);\n\ttarget = MulAdd(g1, MF4x4(-0.08427221, 0.029255591, 0.016859733, -0.011943696, 0.13574867, 0.040940672, 0.013232511, 0.026956066, 0.071955554, -0.06337127, -0.15357494, -0.026208352, -0.04108415, -0.06945617, 0.018760698, -0.023912333), target);\n\ttarget = MulAdd(h1, MF4x4(0.07994412, -0.00968056, 0.08030741, 0.16342168, 0.04104326, 0.073546335, 0.10782922, -0.27047744, -0.027339334, 0.012742752, 0.07632864, 0.3130092, -0.026107019, 0.14022668, 0.0019065946, 0.050307225), target);\n\ttarget = MulAdd(i1, MF4x4(-0.064752, -0.114935696, -0.101320885, -0.13594441, -0.0035874723, -0.21959865, -0.20514846, 0.06435263, -0.07910371, 0.22121632, -0.027385276, 0.11370377, -0.087538995, 0.02242176, 0.05138211, -0.055027794), target);\n\ttarget = MulAdd(a2, MF4x4(-0.07418348, -0.013085453, -0.23711763, 0.13872914, 0.10102951, 0.034057204, 0.09149018, 0.060473535, -0.00067378976, 0.05151344, -0.038349435, 0.05791031, 0.0049775504, -0.0063300184, 0.11502679, 0.11189162), target);\n\ttarget = MulAdd(b2, MF4x4(-0.17575283, -0.026091507, -0.012820658, 0.02245792, 0.15239143, -0.12657113, 0.062418584, -0.12840585, 0.07613884, 0.12033655, -0.05695382, 0.03669604, -0.17113449, -0.15366605, 0.17787598, 0.06278569), target);\n\ttarget = MulAdd(c2, MF4x4(0.015337286, -0.050423414, -0.08879978, 0.04760555, 0.12424041, -0.03367427, -0.0459138, 0.22050953, 0.12919267, 0.26828563, -0.1061058, -0.10099044, -0.04658635, -0.016307753, 0.14689955, -0.14597629), target);\n\ttarget = MulAdd(d2, MF4x4(-0.01102339, 0.014672111, 0.13931917, -0.1345445, 0.031524513, -0.32458848, -0.056687858, 0.22222418, -0.056350503, 0.035747256, -0.10304222, -0.21285744, 0.25462946, 0.09982579, 0.09516444, -0.016217945), target);\n\ttarget = MulAdd(e2, MF4x4(-0.076081604, -0.23594818, 0.15077876, -0.21414931, 0.2282169, 0.59579784, -0.12744917, 0.35256362, -0.074862994, 0.16357085, 0.19566183, -0.05933472, 0.6046422, 0.17888334, -0.015507464, -0.08096589), target);\n\ttarget = MulAdd(f2, MF4x4(-0.07068054, -0.0079010865, 0.036364477, 0.14502864, -0.021085994, -0.07906985, 0.09793876, 0.07399657, 0.12093952, -0.18547052, -0.110405356, -0.10768624, 0.016976682, -0.030136436, 0.3050347, 0.25278243), target);\n\ttarget = MulAdd(g2, MF4x4(-0.010475713, -0.10232612, -0.108958706, -0.011528059, 0.11610843, -0.0014788646, 0.17262968, 0.031911, 0.08343287, -0.0021717772, -0.021841958, 0.0973525, -0.046819497, -0.05605018, 0.1291599, 0.09826176), target);\n\ttarget = MulAdd(h2, MF4x4(0.04663343, 0.04400759, -0.035258498, 0.00895981, -0.23123324, -0.055122357, 0.089720264, 0.09339213, 0.16230758, 0.01740431, 0.0010832906, 0.019101601, -0.28437567, -0.017914291, 0.06484634, -0.00661367), target);\n\ttarget = MulAdd(i2, MF4x4(0.08788325, 0.017547041, -0.12180048, -0.01287628, 0.014391497, 0.0098254625, -0.1297012, -0.08183671, 0.018999657, 0.09840126, 0.047082353, 0.24155243, 0.12269502, -0.08142539, 0.10323659, -0.033276822), target);\n\ttarget = MulAdd(a3, MF4x4(-0.14859885, -0.03888739, -0.15384491, -0.17175777, 0.04767615, 0.042373076, 0.013757687, -0.13237329, -0.04965534, 0.020163631, -0.11415436, -0.056286413, -0.16989873, 0.024179472, 0.037168648, -0.12176204), target);\n\ttarget = MulAdd(b3, MF4x4(-0.05709518, -0.09206574, 0.04486005, -0.033150986, -0.017180622, 0.06052779, 0.16889273, -0.15518297, -0.24440864, 0.12658344, -0.139649, 0.037917744, -0.14727007, 0.038368758, -0.05098604, 0.09547945), target);\n\ttarget = MulAdd(c3, MF4x4(-0.08096385, -0.010406064, -0.057036124, 0.13355646, -0.00612782, -0.0033356852, -0.06850302, 0.029461807, -0.17608377, -0.10943067, 0.030028753, 0.08070524, 0.022253908, -0.005548474, -0.045125946, 0.02093025), target);\n\ttarget = MulAdd(d3, MF4x4(0.10988742, 0.27972367, -0.04232453, -0.43071312, -0.08219865, -0.12530999, -0.0016445538, 0.05443371, -0.014415479, -0.08840511, 0.066499956, -0.01336885, -0.15110426, 0.062335182, 0.052890446, 0.1044874), target);\n\ttarget = MulAdd(e3, MF4x4(0.33606815, -0.17963116, 0.34632006, 0.3946198, -0.10691484, -0.1038113, -0.019460114, 0.06895735, 0.59190637, -0.10203456, 0.008359275, 0.06353352, -0.32418385, -0.12430192, 0.24380416, -0.23094086), target);\n\ttarget = MulAdd(f3, MF4x4(-0.020480068, -0.01640171, -0.09763355, -0.02580198, -0.041970506, -0.042252183, -0.09769974, -0.045537427, 0.14187063, 0.06059797, 0.033730645, 0.020378796, -0.033819746, 0.09553117, -0.05334098, -0.09202247), target);\n\ttarget = MulAdd(g3, MF4x4(0.0246489, -0.086129375, 0.05148198, 0.16396165, -0.042565763, 0.047137372, 0.08882997, -0.0076635084, 0.020555299, -0.0018504986, -0.093162216, -0.002001032, -0.09805734, -0.09600409, -0.0027830484, -0.12433019), target);\n\ttarget = MulAdd(h3, MF4x4(-0.016701702, 0.19712164, -0.13269165, -0.10036325, -0.008542912, -0.006157372, -0.09184331, -0.097038, -0.11304494, 0.27655166, 0.060221743, 0.096516214, -0.043898825, 0.010273238, -0.07468758, -0.21701947), target);\n\ttarget = MulAdd(i3, MF4x4(-0.11392737, -0.15646808, -0.16859137, -0.1773589, 0.062430523, 0.0633658, 0.1578782, -0.02552433, -0.09023146, -0.03037661, -0.050063506, -0.018076949, 0.021033524, -0.06344241, 0.08951326, 0.06231262), target);\n\ttarget = MulAdd(na1, MF4x4(-0.094271734, 0.0114940265, -0.04097972, -0.06457978, 0.20086573, 0.035297886, -0.03792428, -0.15497704, 0.12542814, 0.006359964, 0.049963623, 0.06472255, -0.14664528, 0.10833471, 0.03922276, -0.1675095), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.18032873, 0.011285189, -0.061522707, 0.008256017, 0.13692558, 0.15130165, 0.13422745, -0.22135267, 0.19946684, 0.24516532, 0.10290738, -0.2294601, -0.052056555, -0.13473587, 0.23919931, -0.042362213), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.025423648, 0.026715705, 0.0060757576, -0.06410553, -0.04461674, -0.3029843, 0.092734374, 0.04524039, 0.033247333, -0.02790855, 0.056930248, -0.15256552, 0.02607904, 0.09423549, -0.18153918, 0.13832009), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.049555343, 0.017360087, 0.057959676, 0.07956772, -0.075296454, -0.1470046, 0.021892669, 0.10043102, -0.024857812, -0.10644472, 0.09769508, 0.1249294, 0.007206734, -0.028977863, 0.10593961, 0.26716354), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.029734008, -0.3227415, 0.23771009, -0.19591968, -0.51607347, -0.25314853, -0.056235682, -0.07140848, 0.111049965, -0.06368735, -0.2866811, 0.013670416, 0.06847308, 0.30838242, -0.12282098, 0.0034061049), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.12762555, -0.04628489, -0.12804574, -0.040225446, 0.20549247, 0.40988892, 0.046733934, 0.0011979616, 0.060588628, 0.15362865, -0.022557247, -0.09853034, 0.06939786, -0.08854213, 0.0033144224, -0.20143713), target);\n\ttarget = MulAdd(ng1, MF4x4(0.05962723, 0.05745424, -0.094456606, -0.20003895, -0.070974536, 0.026771205, 0.02564145, -0.02845018, -0.035351314, -0.0117768, 0.113437235, 0.08942642, 0.058360267, 0.024181651, 0.024502836, -0.073039465), target);\n\ttarget = MulAdd(nh1, MF4x4(0.12510774, 0.045879837, -0.010349814, -0.019377183, -0.008772124, -0.16534139, -0.13212264, -0.21540141, 0.036527056, -0.10918482, 0.0049819928, -0.019343467, 0.13203917, -0.08569981, -0.061810624, -0.05108862), target);\n\ttarget = MulAdd(ni1, MF4x4(0.04002694, -0.055285487, 0.053127788, 0.10067933, -0.027899982, -0.0050923983, -0.039490424, -0.121817835, -0.09340064, -0.0429694, 0.18118261, 0.049474712, 0.038677018, 0.14249925, 0.09504422, 0.122608855), target);\n\ttarget = MulAdd(na2, MF4x4(-0.14135127, 0.09016643, 0.025633719, 0.000614705, 0.070762664, -0.030985976, 0.042064067, 0.057410795, 0.0660935, -0.05050625, -0.10755477, 0.039620418, -0.10203836, -0.07814099, -0.014446629, 0.18048128), target);\n\ttarget = MulAdd(nb2, MF4x4(0.43030277, 0.18589582, 0.256173, -0.2844, 0.13945708, 0.14931135, 0.22740678, -0.3956166, -0.0724625, -0.08001986, 0.081810005, 0.025289046, 0.06736611, -0.07330548, -0.29192784, 0.21637453), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.08737932, -0.1372706, 0.03159939, -0.21679185, -0.09027622, -0.041193455, 0.11512235, -0.24278319, -0.08837681, -0.018710367, 0.041880753, -0.014190375, 0.033047616, 0.06708754, -0.03391409, -0.07711031), target);\n\ttarget = MulAdd(nd2, MF4x4(0.12588775, 0.4317977, 0.077132806, -0.42811748, 0.031082593, 0.23937033, 0.08018833, -0.22718322, 0.060632102, 0.08067565, -0.042863563, -0.091845684, -0.04759955, 0.009588551, -0.17780636, -0.22400473), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.06745702, -0.0795159, -0.4350959, 0.35561585, -0.13962667, -0.5940183, -0.54777396, -0.68051004, -0.16509765, -0.34696493, 0.038297307, 0.13719557, -0.040833995, 0.031406473, -0.5174053, -0.08789825), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.12779349, 0.2936602, 0.13704172, 0.13110651, 0.10102365, 0.24163464, -0.069620885, -0.16209678, -0.07489114, -0.019360917, -0.070400774, -0.023681173, -0.1102226, -0.09275758, -0.31730032, 0.03576276), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.0986982, -0.14386573, 0.06295539, 0.2667051, 0.029192172, 0.028653674, -0.13940518, -0.022916485, -0.091007926, -0.062984526, 0.026765045, 0.058111303, 0.028423572, -0.016102828, -0.09699887, 0.118749924), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.40428874, 0.45658726, 0.20199502, 0.020573912, -0.08588765, 0.15927678, 0.29527012, 0.40756142, -0.15820621, 0.009576386, -0.009194596, -0.08242508, 0.0012625816, -0.03771835, -0.22807057, 0.035798464), target);\n\ttarget = MulAdd(ni2, MF4x4(0.13749583, -0.04876742, -0.0065646684, -0.28335539, 0.117720984, 0.087982565, 0.16954121, 0.2363482, -0.17796999, -0.106926255, 0.0060180747, -0.11523375, 0.038097225, 0.09647209, -0.06873753, -0.056800433), target);\n\ttarget = MulAdd(na3, MF4x4(0.1768557, 0.13145363, 0.12556404, 0.03251624, -0.02287178, 0.12941027, -0.2394559, -0.37159434, 0.14269918, 0.08204633, 0.20483865, 0.05722901, 0.06699899, -0.04848409, 0.12399497, 0.124153495), target);\n\ttarget = MulAdd(nb3, MF4x4(0.14586149, 0.09655288, 0.03812125, 0.052801564, 0.065902874, -0.043486778, 0.0657983, 0.14589024, 0.011490019, -0.0021060712, -0.18636304, 0.24038431, 0.2249946, 0.14451164, -0.13322833, 0.109084174), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.03467399, 0.076331206, -0.047301926, -0.10028459, -0.069450885, 0.103480145, -0.08315761, -0.00030933326, 0.04021727, 0.06693238, -0.02885415, 0.12737286, -0.042063054, -0.075277805, 0.21915779, 0.14529525), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.21753858, 0.13885236, -0.03733484, 0.070192896, -0.42111662, 0.2257056, -0.0020320695, -0.4404435, -0.011731456, -0.031235369, -0.17156643, -0.00023724366, 0.16697505, 0.19261077, 0.054627284, -0.2635247), target);\n\ttarget = MulAdd(ne3, MF4x4(0.4114966, -0.21771282, -0.30367702, -0.24675573, -0.41803458, 0.31936127, 0.13296337, 0.2682109, -0.035749484, 0.22223838, 0.012987173, -0.20490278, 0.013631246, -0.34068218, -0.60729563, -0.13018902), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.011740597, 0.07837384, 0.12748203, -0.013336406, -0.07607798, -0.39041027, 0.1939761, -0.08242594, -0.008299102, -0.23057082, 0.13972911, -0.21057422, 0.18126678, 0.004605364, 0.27230838, 0.04088039), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.0761628, 0.08201472, 0.00067113456, -0.000108762404, 0.119982824, 0.0067928904, -0.048988946, -0.007609898, 0.049381327, 0.010086041, 0.025384359, 0.002726633, -0.009928298, 0.05588474, 0.050830763, 0.17467195), target);\n\ttarget = MulAdd(nh3, MF4x4(0.074037455, -0.16637659, -0.017491426, 0.013344787, 0.054212473, -0.29519126, -0.2467157, -0.17357266, -0.13876535, -0.04991683, 0.1392161, 0.05660303, 0.03868982, 0.10992501, 0.13167763, 0.060129613), target);\n\ttarget = MulAdd(ni3, MF4x4(0.027297564, 0.069763646, 0.15132809, 0.11143169, -0.08621777, 0.23928702, 0.00017447853, 0.115308166, -0.061112467, 0.044474706, -0.02718813, 0.19822854, -0.057888303, 0.06540743, -0.051538624, -0.002416074), target);\n\tconv2d_6_tf[gxy] = target;\n\t\n\ttarget = MF4(0.07303222, -0.017307714, -0.017054217, -0.004928735);\n\ttarget = MulAdd(a1, MF4x4(0.0023940788, -0.2570281, 0.021624887, -0.14413927, -0.042929508, 0.024798246, 0.06039514, -0.0385923, 0.18157732, -0.18974024, 0.3197193, -0.086097986, -0.23871095, -0.085877284, -0.15280978, 0.054582383), target);\n\ttarget = MulAdd(b1, MF4x4(-0.2892671, -0.35989672, 0.14361507, 0.10109185, -0.008244152, -0.07610182, 0.016237438, 0.109711155, -0.03325961, 0.056557924, 0.093826056, 0.16487189, 0.12098654, 0.26959404, -0.32664284, -0.33652756), target);\n\ttarget = MulAdd(c1, MF4x4(0.20426908, 0.00921726, -0.131825, -0.30112436, -0.29350808, -0.0059835073, -0.20881179, -0.15929249, 0.14798939, -0.039377835, 0.0022686112, -0.31745487, 0.1383128, 0.095711716, 0.24649502, 0.3734734), target);\n\ttarget = MulAdd(d1, MF4x4(0.08007145, 0.059220374, -0.11955456, 0.02726716, -0.012340195, -3.9396626e-05, 0.23562932, 0.02603672, 0.0024148317, 0.48585725, -0.25960997, 0.12831855, 0.034503214, 0.26429248, 0.19966535, 0.34653723), target);\n\ttarget = MulAdd(e1, MF4x4(0.16401817, 0.05824359, 0.23210622, -0.4564646, 0.09790885, 0.0017682983, 0.12023501, -0.34214047, -0.3808189, -0.59095186, 0.3224012, 0.054841924, -0.14028488, -0.35759392, -0.012464827, -0.42101544), target);\n\ttarget = MulAdd(f1, MF4x4(0.18710142, -0.022806095, -0.03905798, 0.050422203, 0.21642984, -0.071577035, 0.165218, 0.10126085, 0.18105839, -0.09810516, -0.43905553, 0.5793889, -0.16706131, 0.13636151, 0.029069345, 0.28394657), target);\n\ttarget = MulAdd(g1, MF4x4(0.03242417, 0.03540981, 0.06596982, -0.11404851, -0.043041103, 0.118582286, -0.16384825, -0.021553654, -0.12775607, -0.055402167, -0.016003367, -0.06356131, -0.063166484, -0.09225374, 0.21487807, 0.18778628), target);\n\ttarget = MulAdd(h1, MF4x4(-0.29311153, -0.09822076, 0.1706967, -0.30188912, -0.11062667, -0.08119463, -0.13738254, -0.24389322, 0.2796491, 0.21054858, -0.08765812, 0.3177179, 0.10164016, 0.14627174, 0.15129958, -0.13566513), target);\n\ttarget = MulAdd(i1, MF4x4(-0.12295195, -0.12036253, -0.040527046, 0.10602722, -0.19854495, -0.05223541, -0.032363445, 0.122390084, 0.27342895, 0.09667149, 0.0423871, -0.17246284, -0.031107228, -0.005470437, 0.051434256, 0.07954733), target);\n\ttarget = MulAdd(a2, MF4x4(0.17945234, 0.051398605, 0.3032336, -0.36277965, -0.015693031, 0.0847029, -0.1128904, 0.04994005, 0.08276063, 0.07031328, 0.06770377, -0.1687264, -0.17490897, -0.09989766, -0.07715023, -0.010953815), target);\n\ttarget = MulAdd(b2, MF4x4(0.014114998, -0.06209966, 0.057450738, 0.21318321, -0.093205266, -0.15646473, -0.22241333, -0.08228401, -0.4973326, -0.12547962, -0.07989991, -0.06822309, -0.106437586, -0.19071254, 0.14178663, 0.10448926), target);\n\ttarget = MulAdd(c2, MF4x4(-0.005078645, -0.028730195, -0.04966596, -0.024377774, 0.0039325077, 0.10179092, -0.105298065, -0.1688019, -0.23554938, 0.058782354, 0.19999442, -0.027954772, -0.10502022, 0.016704066, -0.033541992, 0.1382609), target);\n\ttarget = MulAdd(d2, MF4x4(-0.30713797, -0.0631538, -0.17524256, 0.12141287, 0.18175098, -0.13446523, -0.15921354, -0.0050512427, -0.00880753, -0.24464725, 0.10351903, -0.122694805, 0.2637432, 0.10111337, -0.05550657, -0.024864933), target);\n\ttarget = MulAdd(e2, MF4x4(-0.4845733, -0.13332175, 0.007910284, 0.5203373, 0.72870463, 0.15518989, -0.12580696, 0.04916096, 0.6244038, 0.3593719, 0.16328047, -0.14490198, 0.07803236, 0.26987454, -0.02258877, -0.21130653), target);\n\ttarget = MulAdd(f2, MF4x4(0.20343359, -0.048075967, 0.17489576, -0.18971623, -0.14069648, -0.029665243, -0.24902415, 0.07167198, -0.6412736, -0.041664686, 0.58569616, 0.02399211, 0.12831652, -0.058278285, -0.07922422, -0.108734205), target);\n\ttarget = MulAdd(g2, MF4x4(-0.004269588, -0.11554386, -0.0022618338, 0.12235181, 0.07379002, 0.0548718, -0.040107626, -0.040337294, -0.060385335, 0.119979575, -0.27628905, -0.023228448, -0.04064614, 0.0047100694, 0.048138026, 0.0057798214), target);\n\ttarget = MulAdd(h2, MF4x4(0.15257028, -0.005850462, -0.1434922, 0.07164339, -0.062233947, -0.0156128965, -0.019673312, -0.0002651659, -0.19478518, 0.11921539, -0.2361836, -0.09110679, 0.02719977, 0.0033712897, 0.17245373, 0.2532936), target);\n\ttarget = MulAdd(i2, MF4x4(0.0030309292, 0.10147757, -0.31425565, -0.10256, -0.05862195, -0.08736711, 0.084856585, 0.016700774, 0.06286386, -0.07443701, 0.08754631, -0.18171762, 0.06868201, -0.09278428, -0.053383432, 0.03826822), target);\n\ttarget = MulAdd(a3, MF4x4(-0.10183099, 0.06891697, 0.056318853, 0.13647571, -0.03353045, 0.016239524, 0.005603497, 0.035521563, 0.18905343, 0.041940115, 0.10048305, -0.04986043, 0.04298795, 0.050817303, 0.17744416, -0.010589751), target);\n\ttarget = MulAdd(b3, MF4x4(-0.31862193, -0.13207828, -0.1375938, -0.23549932, -0.06217893, 0.0019514537, -0.005417935, 0.13736913, -0.10263318, -0.18941346, 0.15843, 0.27492487, 0.058868844, -0.1804736, 0.24544486, 0.10051148), target);\n\ttarget = MulAdd(c3, MF4x4(0.15876879, 0.07879244, 0.0513651, 0.07673734, 0.015635801, 0.048305415, 0.019661602, -0.0479435, 0.027511599, -0.065881185, 0.21485852, -0.010372607, -0.19896457, -0.05555933, -0.054646876, -0.09143982), target);\n\ttarget = MulAdd(d3, MF4x4(0.21596268, 0.21091351, 0.234315, -0.0006641688, 0.03455969, -0.12185912, -0.03052869, 0.15622592, -0.18506715, -0.24213594, -0.19364369, -0.07659142, 0.0379824, 0.0091246925, 0.1708395, 0.036304265), target);\n\ttarget = MulAdd(e3, MF4x4(-0.2730932, -0.23328209, 0.6977438, -0.2445981, 0.031650152, -0.004327604, -0.050584223, -0.07061773, -0.10755705, 0.30620542, -0.15688588, 0.16850896, -0.088513345, 0.2162286, -0.4329111, -0.52770174), target);\n\ttarget = MulAdd(f3, MF4x4(-0.068270594, 0.039348822, -0.08555022, 0.23533496, -0.062174525, 0.0193457, -0.13714077, 0.060169753, -0.06355557, -0.010862508, -0.17664193, -0.24809086, 0.032538615, 0.08074848, 0.20644335, 0.085532546), target);\n\ttarget = MulAdd(g3, MF4x4(-0.07677775, 0.0007320281, 0.0139939515, 0.19423772, 0.02928719, 0.05200053, 0.012181974, -0.005785729, 0.08011629, 0.03698694, 0.15808755, 0.04080324, -0.21732025, -0.10937562, -0.050028726, 0.088937156), target);\n\ttarget = MulAdd(h3, MF4x4(-0.06772194, 0.09471782, -0.0830642, -0.13875008, 0.003456362, 0.010889541, 0.08989434, 0.03261672, 0.19459227, 0.18803298, 0.16107602, 0.1490853, -0.22943772, 0.0005637327, 0.052380536, -0.06956663), target);\n\ttarget = MulAdd(i3, MF4x4(-0.15136889, -0.2523378, -0.037718855, 0.1728913, 0.067127876, -0.038833655, 0.14237632, -0.07256634, 0.0052903728, -0.11813482, -0.06309155, -0.015444354, 0.044696916, 0.0011587966, -0.008295438, 0.045684442), target);\n\ttarget = MulAdd(na1, MF4x4(0.029596262, 0.013380705, 0.19451803, -0.0217206, -0.03430266, 0.066089645, -0.22101538, 0.016455501, 0.122556984, -0.018319963, -0.06570934, -0.05489828, -0.13112561, 0.10740249, -0.07405227, 0.23262945), target);\n\ttarget = MulAdd(nb1, MF4x4(0.039601505, -0.0795478, 0.1524426, 0.22525507, -0.18371256, 0.009809418, -0.09180862, 0.03985826, -0.17215611, 0.104956195, -0.012817112, 0.12702619, -0.119846344, -0.1763627, -0.010298178, 0.059241127), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.0823085, -0.07456769, 0.054212615, 0.009188054, 0.0017495407, -0.07561583, -0.17030309, 0.007888594, -0.11013637, -0.08417068, 0.061450012, -0.081912406, 0.11603573, 0.0490229, 0.119570516, -0.111465424), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.21657833, -0.1643494, 0.19958968, -0.042039983, -0.0037797047, -0.13965121, -0.019386362, -0.024111586, 0.06518915, -0.15928997, -0.08175624, 0.050481785, 0.37915838, -0.09272705, 0.4887356, -0.13048859), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.3364342, -0.08892259, 0.2356529, 0.22063124, 0.31071013, 0.101701945, 0.25302443, 0.25084528, 0.22127245, 0.23771746, 0.35111645, -0.14120491, 0.09563979, 0.2781042, -0.17586009, -0.09176989), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.11986394, -0.093885854, 0.11733581, 0.05637956, 0.23623823, -0.007359601, 0.28527632, -0.16477823, 0.0035151376, 0.042055942, -0.0062996866, 0.021584665, -0.28436866, 0.1456055, -0.25843173, -0.07554441), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.03815117, 0.07561848, -0.07897604, -0.012987363, 0.02319023, 0.04150643, -0.019950474, 0.041954774, -0.07800387, -0.011202695, -0.11299979, -0.00864291, -0.114811376, 0.124991566, -0.46519995, 0.060762767), target);\n\ttarget = MulAdd(nh1, MF4x4(-0.048102316, -0.04349749, -0.045696992, -0.06968446, -0.10201568, -0.10664441, -0.1271327, 0.014041653, -0.06944334, -0.024820644, 0.06449197, -0.118919216, -0.100525826, -0.081692286, -0.0036934754, -0.0950572), target);\n\ttarget = MulAdd(ni1, MF4x4(0.028598474, 0.101999335, -0.10409241, -0.0008725121, -0.24365604, 0.09376613, -0.10155709, -0.019243455, -0.08370451, -0.08886542, 0.15643747, 0.094012596, 0.0989398, -0.003263144, 0.24052359, -0.05086219), target);\n\ttarget = MulAdd(na2, MF4x4(0.22825857, -0.041577056, 0.3575971, -0.019246848, 0.09680159, 0.05570423, -0.20628895, -0.02993351, 0.05210484, -0.049776137, 0.005964223, -0.22305849, 0.030647328, -0.088792734, 0.0043907063, 0.08531383), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.30464846, -0.12842661, -0.3743522, 0.13156073, -0.32281575, 0.030088687, -0.09418602, 0.13464968, -0.0695602, 0.0936232, -0.038296524, 0.33601308, 0.17701761, 0.14289881, -0.047556065, -0.3338849), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.005924107, 0.043742385, -0.064937405, 0.15786234, -0.09955057, -0.082465865, -0.03392436, 0.21772122, 0.15173042, 0.10373368, 0.051570628, 0.11137272, 0.15423453, 0.09124828, -0.014710869, 0.030298932), target);\n\ttarget = MulAdd(nd2, MF4x4(0.043112267, 0.5992106, -0.32294464, 0.31510955, -0.25169763, 0.04839851, 0.16124408, -0.14096124, -0.097060055, 0.06045283, -0.27082244, -0.12048959, 0.009364686, 0.11915612, 0.008150039, 0.08678112), target);\n\ttarget = MulAdd(ne2, MF4x4(0.47620735, 0.6078475, -0.018170241, -0.50504035, -0.30020222, -0.24147978, 0.33480522, 0.43817788, -0.15983123, -0.19762735, 0.1549511, 0.292026, -0.31289634, -0.15204595, 0.3059814, 0.30576986), target);\n\ttarget = MulAdd(nf2, MF4x4(0.13746189, -0.039151277, 0.62028766, -0.19905351, 0.13143681, 0.1407726, 0.18850237, -0.057907805, 0.086882025, 0.107989915, -0.0065579475, 0.31578153, -0.15049165, -0.20889415, -0.13337761, -0.035084542), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.071805745, -0.18944815, 0.25147218, -0.03606807, 0.23967369, 0.02687493, 0.0513247, -0.18633473, 0.063457586, -0.08531119, 0.21456662, 0.07793248, -0.08192292, -0.11563025, -0.020568466, -0.15659434), target);\n\ttarget = MulAdd(nh2, MF4x4(0.17281517, 0.4232067, 0.32460606, -0.3712845, 0.41458213, 0.06034276, 0.2704778, 0.17323148, -0.06306892, -0.10192465, 0.17620242, -0.009122019, 0.1198333, 0.11001577, -0.3855991, 0.08933198), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.28324863, -0.041409206, 0.03248429, 0.24548076, 0.26409158, 0.24419361, -0.012711284, -0.30516157, -0.20289323, -0.13157755, 0.028014898, 0.16276212, 0.007050667, 0.08335203, 0.102254696, -0.11343822), target);\n\ttarget = MulAdd(na3, MF4x4(0.043687776, -0.004411872, -0.098016165, -0.055542797, 0.22615008, 0.13183828, 0.7488022, -0.33078304, 0.11318944, -0.047168892, 0.38564375, -0.030084245, 0.09062325, -0.16808534, -0.07371455, 0.20058438), target);\n\ttarget = MulAdd(nb3, MF4x4(0.19956557, -0.08747039, -0.029969914, 0.13122557, 0.049196698, -0.13465631, -0.22565748, -0.08703051, 0.26813537, 0.00821654, 0.032616418, -0.18458223, 0.17407443, 0.28091452, -0.16240835, -0.27060813), target);\n\ttarget = MulAdd(nc3, MF4x4(0.04535802, 0.037094936, 0.11686145, -0.002455908, 0.16012727, 0.14261092, -0.08348427, 0.18832053, 0.029025842, 0.054300968, 0.018998424, 0.014601349, 0.07728862, -0.034569506, 0.09937842, -0.076810405), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.42146468, -0.10226207, -0.03932444, -0.17184897, -0.21222934, 0.050341085, 0.19828026, -0.07519326, -0.016190661, 0.08705493, -0.14219207, -0.08652689, -0.095818594, 0.18254876, -0.29907924, 0.049119983), target);\n\ttarget = MulAdd(ne3, MF4x4(0.015439721, 0.24500765, -0.01930081, 0.24527666, -0.13847429, 0.5195186, 0.13352336, 0.12092768, -0.10859864, 0.043220174, -0.37466663, -0.0432489, -0.38647306, -0.33819455, 0.24641274, 0.6657115), target);\n\ttarget = MulAdd(nf3, MF4x4(0.15343782, -0.004420619, -0.047215153, -0.16960907, -0.0707756, -0.29501325, -0.09699802, -0.15991725, -0.19104993, -0.115666404, -0.3558544, -0.0149508845, -0.1138187, -0.07019453, -0.16961712, -0.1560539), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.0016192662, 0.041725244, 0.003358041, -0.027749699, -0.001091161, 0.06779037, -0.15775087, -0.04927482, 0.016525732, -0.061703153, -0.011079543, -0.04828491, 0.19724323, 0.11623055, 0.11814769, -0.08236815), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.009845684, -0.18635233, -0.09976992, 0.12431404, -0.34134167, -0.34342697, -0.026243573, 0.088327765, 0.056699544, 0.07774804, 0.062026564, 0.09743545, 0.14937103, 0.11164576, 0.11233316, -0.071940914), target);\n\ttarget = MulAdd(ni3, MF4x4(0.093613006, 0.08761063, 0.11849382, -0.06467931, 0.13939771, -0.05646352, -0.08747582, -0.3780521, 0.2270502, -0.042743817, 0.34419978, -0.11905452, 0.18841426, 0.044176128, 0.08761558, -0.0007557414), target);\n\tconv2d_6_tf1[gxy] = target;\n\n\ttarget = MF4(-0.003073506, -0.033630643, 0.028479056, -0.025402397);\n\ttarget = MulAdd(a1, MF4x4(0.07753503, 0.18257454, 0.16630161, 0.018181466, 0.032217313, -0.029755782, -0.09729085, 0.090185136, 0.036025215, -0.07385567, -0.11479112, -0.009775693, -0.09510068, 0.099653766, 0.12464123, 0.11700322), target);\n\ttarget = MulAdd(b1, MF4x4(0.63560385, 0.086338535, -0.13764763, 0.47561046, -0.124727264, 0.12672219, 0.070208505, -0.19783491, -0.17025535, -0.06808678, -0.020102726, -0.04832835, 0.036826584, -0.42171007, -0.06695269, 0.110764995), target);\n\ttarget = MulAdd(c1, MF4x4(-0.21227197, 0.007874801, 0.23701921, 0.1677161, -0.09035146, -0.078691766, -0.14215821, 0.124355234, 0.22710884, 0.033057146, -0.056999616, -0.23319073, 0.22966021, -0.06883101, 0.16328879, -0.06578935), target);\n\ttarget = MulAdd(d1, MF4x4(-0.054363396, -0.02026726, -0.3616366, 0.06780306, -0.04632169, 0.10096817, 0.0533077, -0.083695725, 0.23162244, 0.16473895, 0.19103514, 0.0071199746, 0.2165012, 0.04725686, 0.035206214, 0.022603447), target);\n\ttarget = MulAdd(e1, MF4x4(0.6271094, -0.09669194, 0.07382753, -0.30720463, 0.15260984, -0.36707088, -0.031697996, 0.01600927, -0.39879522, 0.101928055, -0.6943482, 0.14665292, -0.3587046, 0.021466898, -0.047919527, 0.2560715), target);\n\ttarget = MulAdd(f1, MF4x4(0.019088794, -0.0771604, -0.028177094, 0.088726945, -0.057697777, 0.2596943, 0.17144933, 0.058258526, 0.08891237, 0.106383145, 0.396072, 0.29374352, 0.06596987, -0.105576634, 0.055430118, -0.12292237), target);\n\ttarget = MulAdd(g1, MF4x4(-0.17208415, 0.12158739, 0.04662299, 0.21695717, 0.11738881, -0.067407556, -0.039283432, -0.1076609, 0.107738726, -0.121356055, -0.062349405, 0.048801728, 0.09052609, -0.11955365, 0.006165453, 0.06702327), target);\n\ttarget = MulAdd(h1, MF4x4(0.23194505, -0.2278423, -0.4579323, -0.4102899, -0.33038944, 0.10686308, 0.12578374, 0.14304528, -0.03290542, -0.22190952, -0.15582415, 0.10534921, 0.0939146, -0.04590803, -0.03591444, -0.030313203), target);\n\ttarget = MulAdd(i1, MF4x4(0.013647308, 0.16051029, 0.024319794, -0.10505089, 0.054013297, -0.06920784, -0.020672748, -0.08262819, 0.14681742, -0.07409691, -0.063802995, 0.05206, -0.041670747, -0.022410793, -0.034180272, 0.0044075833), target);\n\ttarget = MulAdd(a2, MF4x4(-0.16723743, -0.062276114, -0.06804346, -0.06663604, 0.14639418, -0.0013829652, 0.14537166, 0.08992991, 0.00034609268, -0.11339855, -0.24834645, -0.18017055, 0.08099037, -0.22302043, -0.1160269, 0.23041926), target);\n\ttarget = MulAdd(b2, MF4x4(0.19984062, 0.11262733, -0.021448923, 0.005645689, -0.22319363, 0.025013078, 0.050730385, 0.04427755, 0.10756255, 0.65996444, 0.17024773, -0.16237848, -0.032943483, 0.3259415, -0.08211643, -0.17815286), target);\n\ttarget = MulAdd(c2, MF4x4(0.022923036, 0.00817696, -0.024639564, -0.017746205, 0.08000752, -0.09480044, 0.049720343, -0.039725818, -0.07954878, -0.26012203, -0.053556137, 0.28696015, -0.145685, -0.12854065, -0.030942779, 0.15013586), target);\n\ttarget = MulAdd(d2, MF4x4(0.050982554, 0.067020066, -0.041660026, 0.07976747, -0.31219116, -0.1589965, -0.14711075, -0.2931567, -0.12886077, 0.108178794, 0.112790324, 0.18239829, 0.028661542, 0.066967815, 0.36810458, 0.07042916), target);\n\ttarget = MulAdd(e2, MF4x4(0.019871455, 0.13281262, -0.24303706, -0.053014435, 0.056483634, 0.2225138, 0.32238156, 0.09232671, 0.19425367, -0.96300596, 0.25233442, 0.34456885, 0.2688357, -0.14355205, 0.04201295, -0.09642235), target);\n\ttarget = MulAdd(f2, MF4x4(0.0021202683, 0.010281568, -0.009938761, 0.074630536, -0.23044111, 0.005154135, -0.04620688, -0.10301254, -0.17195332, -0.04863239, 0.07042225, -0.20654899, 0.029428456, 0.0045313304, 0.0051823566, 0.046590757), target);\n\ttarget = MulAdd(g2, MF4x4(0.061882593, -0.005337726, 0.10121195, 0.01023931, -0.1310065, 0.10085874, 0.13651021, -0.09158545, 0.09086723, -0.031106705, 0.03951561, 0.03958167, 0.00533062, -0.058091614, -0.11571378, -0.18051541), target);\n\ttarget = MulAdd(h2, MF4x4(0.012350476, 0.020112693, 0.0865518, 0.025516901, -0.2874268, 0.00638599, -0.3849406, 0.043449268, 0.27883583, -0.06104393, 0.17362429, 0.3229962, -0.18683271, -0.051683012, -0.14111629, 0.20863265), target);\n\ttarget = MulAdd(i2, MF4x4(0.06548792, -0.031812105, 0.032238998, 0.070259914, -0.0037810719, 0.106959336, 0.030661082, -0.11430295, 0.075470194, -0.035097398, -0.08884117, 0.15083537, -0.048511047, 0.09958945, 0.2043977, -0.14497246), target);\n\ttarget = MulAdd(a3, MF4x4(-0.025868082, 0.06237453, -0.034789152, -0.035199117, -0.021047676, -0.04558201, -0.0013141828, 0.033968918, -0.068529084, -0.06589172, -0.035473417, -0.03182408, 0.016299484, 0.07821524, -0.19162482, -0.06681627), target);\n\ttarget = MulAdd(b3, MF4x4(0.0052780746, 0.043558404, -0.24577554, 0.11166642, 0.016039649, 0.020174565, 0.0054034027, 0.023591455, 0.24817981, 0.08734375, -0.1477572, 0.1215117, -0.017666219, -0.012353692, -0.049153887, 0.0784066), target);\n\ttarget = MulAdd(c3, MF4x4(0.06988246, 0.06763118, 0.09934897, -0.042905882, -0.09801134, -0.033267114, 0.01741649, 0.059379116, -0.08127772, 0.010377487, -0.012631491, -0.077160686, -0.08947271, -0.067014046, -0.14255494, -0.03131322), target);\n\ttarget = MulAdd(d3, MF4x4(0.0059068906, 0.32045186, 0.3258453, 0.0071538044, -0.027888278, 0.0068888674, -0.0015216616, -0.050514743, -0.11685065, 0.02886966, -0.008737784, -0.09290019, -0.04111259, 0.0329059, -0.2584297, -0.07026411), target);\n\ttarget = MulAdd(e3, MF4x4(-0.25162768, -0.093273714, -0.029060591, 0.050672933, -0.025395831, 0.029609011, -0.13621128, -0.08097387, 0.39335665, -0.18867645, 0.8212168, 0.12602827, 0.5734114, 0.38603428, 0.23521046, 0.21041085), target);\n\ttarget = MulAdd(f3, MF4x4(0.020245805, -0.054311104, -0.0021298525, -0.08635577, 0.04203476, 0.054419816, 0.0032106396, 0.082799725, -0.03885507, -0.12756048, -0.19565445, -0.022734454, 0.10178226, 0.08269887, -0.0018781893, 0.11515606), target);\n\ttarget = MulAdd(g3, MF4x4(0.08051269, -0.25091916, -0.08014612, -0.29471904, -0.08183992, 0.02096263, -0.04595293, 0.053499684, -0.10576831, -0.01105415, 0.054239217, 0.05486181, -0.18503998, 0.06235187, -0.046460405, -0.072068095), target);\n\ttarget = MulAdd(h3, MF4x4(-0.14105208, 0.06913383, -0.129492, 0.18553926, 0.03405444, 0.0772168, 0.10576763, -0.04969428, 0.17356592, -0.10986026, -0.33151895, -0.11582152, -0.0016404261, -0.003514874, -0.2096539, 0.03649547), target);\n\ttarget = MulAdd(i3, MF4x4(0.020758089, 0.17374831, 0.039282177, -0.039052464, 0.050139774, -0.0005518581, -0.025435442, 0.023258803, -0.1458097, 0.090529695, 0.025673594, -0.026266405, 0.072392054, -0.055323754, 0.03383548, -0.033020195), target);\n\ttarget = MulAdd(na1, MF4x4(-0.09315446, -0.036772106, -0.09159718, -0.12479503, -0.018140549, -0.022523982, 0.047108658, -0.04837651, 0.007124631, -0.009751111, 0.055076525, -0.0057495553, 0.07268171, -0.054520987, -0.079869404, 0.28962412), target);\n\ttarget = MulAdd(nb1, MF4x4(0.040367916, 0.041719466, -0.07215196, -0.026521962, 0.23269388, 0.08115016, 0.10487475, 0.05837459, 0.09574069, 0.03150842, 0.12011107, 0.104198076, -0.25915185, 0.31970975, -0.053038772, -0.23452167), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.089933544, 0.00026363076, -0.037807353, -0.0067500956, -0.13427527, 0.11757816, 0.020407641, -0.15267986, -0.13672389, -0.07098531, -0.050623354, -0.04904697, 0.05156428, -0.07822598, 0.07232775, 0.12266631), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.050988704, -0.11840922, -0.06057243, -0.023974465, -0.047475163, -0.1388251, -0.052473098, 0.06360512, -0.016356083, -0.12530154, -0.044482324, -0.035020005, -0.02834032, -0.031647444, 0.07049413, -0.08899642), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.060299333, 0.2991397, 0.0035407627, -0.12897336, -0.39282677, 0.42156345, -0.22449674, -0.11054013, 0.04733773, -0.094842866, -0.11086912, 0.10083519, 0.13186517, 0.1557214, 0.11726571, -0.23863392), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.03155107, -0.002008898, -0.037107117, 0.04468562, 0.037719093, -0.10104318, -0.0021850376, -0.033998992, -0.033299964, -0.026892597, 0.012233978, -0.09816237, -0.15987061, -0.11821871, -0.11293413, 0.041385822), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.03189814, 0.028700352, 0.030834107, 0.008420813, -0.029382093, 0.10250884, 0.032190785, 0.042566366, -0.0066131293, 0.019135946, -0.06836444, -0.082475856, 0.0020301298, 0.06428329, 0.05401348, 0.10219137), target);\n\ttarget = MulAdd(nh1, MF4x4(0.09569376, -0.104563974, 0.04412079, 0.046004657, -0.179229, 0.07610759, 0.21264501, -0.03126616, -0.08888636, 0.049238402, 0.09623378, 0.08347852, 0.034179587, 0.04112591, 0.020796875, 0.016594669), target);\n\ttarget = MulAdd(ni1, MF4x4(-0.022230666, -0.06919777, 0.0070929914, -0.040181976, 0.04288458, -0.057510544, -0.15865, -0.046124704, -0.06199105, -0.033739343, -0.12126394, -0.053888205, 0.003457772, -0.05709056, 0.009589608, 0.061582502), target);\n\ttarget = MulAdd(na2, MF4x4(-0.2261687, -0.010483538, 0.070508964, 0.16609758, -0.07575776, 0.07133805, 0.108534805, 0.016434515, -0.06777619, -0.053581562, -0.009408219, -0.0219316, -0.009917843, -0.056226153, 0.09495687, 0.103568204), target);\n\ttarget = MulAdd(nb2, MF4x4(0.26707995, 0.038988136, 0.15722616, -0.15202025, 0.011516332, -0.22326125, -0.21010138, 0.021120701, 0.052979603, -0.052226435, 0.03128543, -0.02211858, 0.16997981, 0.060853012, 0.17988598, -0.042057697), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.19020362, -0.0019182847, 0.11082178, 0.18037713, -0.086572066, 0.072597384, -0.08759872, -0.064898625, 0.0427911, 0.101790726, 0.035692267, -0.17279546, 0.049133815, 0.08832157, 0.03645548, 0.011682866), target);\n\ttarget = MulAdd(nd2, MF4x4(0.27870035, 0.06836818, 0.36847374, -0.38926098, 0.05053419, -0.2971805, -0.22622849, 0.1165501, 0.037631556, 0.1250731, 0.059861004, 0.1194484, -0.002153221, 0.28717375, 0.071283594, 0.0974051), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.040311184, 0.21025413, 0.32822168, -0.031298842, -0.06347585, 0.1510298, 0.00070645136, -0.34678075, -0.21172246, 0.05277019, -0.15126394, -0.33598784, -0.36668247, -0.36057234, -0.2734601, -0.2903695), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.28878236, 0.100743115, -0.012016584, -0.15287946, 0.1262014, 0.015991366, 0.07392021, 0.06277959, 0.07709602, 0.060382154, 0.013840257, -0.1493553, 0.12138542, -0.032591913, -0.002609394, 0.13922709), target);\n\ttarget = MulAdd(ng2, MF4x4(0.13982488, -0.034557592, -0.35006866, -0.2928353, 0.11529845, 0.23494898, 0.0991676, 0.32742763, -0.03035729, 0.016935157, -0.04650478, -0.039851867, 0.16783717, -0.065768905, -0.102848, -0.03003262), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.53978115, 0.026080003, 0.018700078, 0.077284, 0.2975522, -0.11212302, 0.118295476, 0.088821776, -0.22738294, 0.030945897, -0.1766137, -0.098558865, 0.039936017, 0.046374835, 0.19131522, 0.19770078), target);\n\ttarget = MulAdd(ni2, MF4x4(0.16857389, -0.020288788, 0.04038437, -0.25337628, -0.034605104, -0.094041236, -0.0049146856, -0.10170456, -0.14423485, 0.021705322, -0.09162893, -0.15423405, 0.08731724, 0.114831835, -0.028548159, -0.09497847), target);\n\ttarget = MulAdd(na3, MF4x4(-0.019900214, 0.17017384, -0.0002794323, -0.021626309, -0.5123191, -0.23828037, -0.10549822, -0.48781806, -0.12835194, -0.049513552, 0.08051828, -0.3390981, 0.21935092, 0.012243462, 0.13521184, 0.09005778), target);\n\ttarget = MulAdd(nb3, MF4x4(0.090306774, -0.31387252, -0.1616645, -0.063887075, 0.3674563, 0.19566801, 0.042223614, -0.38199827, -0.08814569, -0.14486119, 0.087531656, 0.18280624, -0.041397072, -0.025872236, -0.02853888, -0.047817115), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.07662397, 0.10808078, 0.08065922, 0.033938166, 0.09167725, 0.09102921, 0.10393655, 0.09121259, 0.15521088, 0.026846137, 0.033644184, -0.006811738, -0.110427104, 0.0722537, 0.014346524, 0.019231822), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.14094852, -0.21157825, 0.2149605, 0.28070143, -0.24665649, -0.16250402, -0.0730695, -0.1935525, 0.02327017, -0.13742846, -0.20341669, -0.19092573, 0.3781883, -0.14726567, 0.0033765805, -0.026217941), target);\n\ttarget = MulAdd(ne3, MF4x4(0.23381747, -0.21297243, -0.16462179, -0.4404414, 0.2630713, -0.06808036, 0.5769483, 0.13606368, -0.14412731, 0.17307961, 0.15431021, -0.06048075, -0.93423635, 0.2661323, -0.27400798, -0.71388435), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.057459023, -0.044256542, -0.14173234, 0.17559054, 0.009228982, -0.20965119, -0.23656605, 0.0805913, -0.18358104, 0.04514636, -0.09859629, -0.00032626695, -0.10969266, -0.171687, -0.085197695, 0.067852624), target);\n\ttarget = MulAdd(ng3, MF4x4(0.0783408, 0.0022921865, -0.20093176, -0.094298504, -0.031999376, 0.03923688, 0.088507205, 0.1756585, 0.0325784, 0.09271384, 0.08411006, -0.011803396, 0.060698293, -0.0653917, -0.02558477, -0.02075619), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.10503856, -0.058553405, 0.38081455, 0.13121964, 0.5770783, -0.10269853, -0.4627, -0.4232826, 0.11166562, -0.058157276, -0.15944225, 0.048007622, 0.06506096, -0.0067857644, -0.03218101, 0.08807966), target);\n\ttarget = MulAdd(ni3, MF4x4(0.032330092, -0.07843012, -0.037207145, 0.06599961, -0.28124368, 0.14263964, -0.0070453, 0.14530747, -0.05910883, 0.16203453, 0.064827256, -0.0043987543, -0.03808922, 0.102124214, 0.06162945, 0.103994325), target);\n\tconv2d_6_tf2[gxy] = target;\n}\n\n//!PASS 8\n//!DESC Conv-4x1x1x120, Depth-to-Space\n//!IN INPUT, conv2d_2_tf, conv2d_2_tf1, conv2d_2_tf2, conv2d_3_tf, conv2d_3_tf1, conv2d_3_tf2, conv2d_4_tf, conv2d_4_tf1, conv2d_4_tf2, conv2d_5_tf, conv2d_5_tf1, conv2d_5_tf2, conv2d_6_tf, conv2d_6_tf1, conv2d_6_tf2\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass8(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\n\tMF4 g0 = conv2d_2_tf.SampleLevel(sam, pos, 0);\n\tMF4 g1 = conv2d_2_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g2 = conv2d_2_tf2.SampleLevel(sam, pos, 0);\n\tMF4 g3 = conv2d_3_tf.SampleLevel(sam, pos, 0);\n\tMF4 g4 = conv2d_3_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g5 = conv2d_3_tf2.SampleLevel(sam, pos, 0);\n\tMF4 g6 = conv2d_4_tf.SampleLevel(sam, pos, 0);\n\tMF4 g7 = conv2d_4_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g8 = conv2d_4_tf2.SampleLevel(sam, pos, 0);\n\tMF4 g9 = conv2d_5_tf.SampleLevel(sam, pos, 0);\n\tMF4 g10 = conv2d_5_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g11 = conv2d_5_tf2.SampleLevel(sam, pos, 0);\n\tMF4 g12 = conv2d_6_tf.SampleLevel(sam, pos, 0);\n\tMF4 g13 = conv2d_6_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g14 = conv2d_6_tf2.SampleLevel(sam, pos, 0);\n\n\tMF4 ng0 = max(-g0, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 ng4 = max(-g4, 0);\n\tMF4 ng5 = max(-g5, 0);\n\tMF4 ng6 = max(-g6, 0);\n\tMF4 ng7 = max(-g7, 0);\n\tMF4 ng8 = max(-g8, 0);\n\tMF4 ng9 = max(-g9, 0);\n\tMF4 ng10 = max(-g10, 0);\n\tMF4 ng11 = max(-g11, 0);\n\tMF4 ng12 = max(-g12, 0);\n\tMF4 ng13 = max(-g13, 0);\n\tMF4 ng14 = max(-g14, 0);\n\n\tg0 = max(g0, 0);\n\tg1 = max(g1, 0);\n\tg2 = max(g2, 0);\n\tg3 = max(g3, 0);\n\tg4 = max(g4, 0);\n\tg5 = max(g5, 0);\n\tg6 = max(g6, 0);\n\tg7 = max(g7, 0);\n\tg8 = max(g8, 0);\n\tg9 = max(g9, 0);\n\tg10 = max(g10, 0);\n\tg11 = max(g11, 0);\n\tg12 = max(g12, 0);\n\tg13 = max(g13, 0);\n\tg14 = max(g14, 0);\n\n\tMF4 target1 = MF4(-0.00339168, 0.022745693, -0.021186745, 0.007273877);\n\ttarget1 = MulAdd(g0, MF4x4(-0.06761509, 0.0010596798, 0.118115634, 0.14935187, -0.05466623, 0.091785856, -0.03665047, 0.076207176, -0.15206745, -0.074811794, -0.041557387, 0.020541618, -0.037649132, -0.07627772, -0.10156735, -0.07498991), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.0541389, 0.007155582, -0.06095953, -0.016313383, -0.13457695, -0.03827954, -0.034835886, 0.04974308, 0.008285558, -0.06611796, -0.067563675, -0.11533022, -0.08719109, 0.042913426, -0.083873115, 0.027492668), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.17322378, -0.07721062, 0.076297946, -0.1325289, 0.00692486, 0.019282155, 0.038707003, 0.056305885, -0.037604675, -0.17109787, 0.052209407, -0.11086336, 0.0052244705, 0.056766637, -0.017374612, 0.06740667), target1);\n\ttarget1 = MulAdd(ng0, MF4x4(0.053550255, 0.07344529, -0.10690144, -0.08243465, 0.028142922, -0.07358604, 0.070248306, 0.0053416835, 0.009705257, 0.09426246, 0.05850371, 0.08341002, 0.06166079, 0.102394834, 0.058707405, 0.19911417), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.009806288, 0.061949313, 0.011325549, 0.031676874, 0.113277406, 0.07123387, -0.0022331094, -0.05520811, -0.021068804, 0.0073448666, 0.031778157, 0.06381251, -0.022977686, -0.0044090333, -0.028826792, -0.005600321), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.13628425, -0.107186474, 0.010461016, 0.045646533, 0.010563035, 0.0005640543, 0.002957052, -0.01454462, 0.106655054, 0.13992403, -0.01641908, 0.0264948, 0.014378123, 0.024764376, -0.06435794, -0.076860085), target1);\n\ttarget1 = MulAdd(g3, MF4x4(0.031931117, 0.062713124, -0.049225837, -0.02620178, 0.20593183, 0.03311921, -0.02824421, -0.19422682, -0.017965427, 0.05093508, -0.07729694, -0.013976707, -0.054889455, -0.008431357, -0.00865999, 0.05323866), target1);\n\ttarget1 = MulAdd(g4, MF4x4(-0.07898102, 0.13033123, -0.24963257, -0.046712235, -0.017762529, -0.07267942, 0.039491024, -0.034781307, 0.02270499, -0.12520099, -0.02714401, -0.13284011, 0.014340563, -0.007257448, -0.07413879, -0.12837824), target1);\n\ttarget1 = MulAdd(g5, MF4x4(0.09598721, -0.006008832, 0.051995635, -0.07847789, 0.109905876, 0.18126504, -0.086034976, -0.0360382, 0.19074084, 0.054656357, 0.06871617, -0.041497722, 0.064660124, -0.10478427, 0.052080367, -0.1518587), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(-0.044614766, -0.08404386, 0.06729217, 0.03758003, -0.23567544, -0.0450765, 0.014905518, 0.19749434, 0.0070031853, -0.068472505, 0.04280405, -0.009026482, 0.03368337, 0.037044305, 0.014582284, -0.015817456), target1);\n\ttarget1 = MulAdd(ng4, MF4x4(0.05070276, -0.13125883, 0.24694905, 0.049511425, 0.021699967, 0.080548055, -0.03720478, 0.032441437, -0.01215519, 0.09360713, 0.024676912, 0.11170701, -0.024200387, 0.0021200276, 0.06300166, 0.10979445), target1);\n\ttarget1 = MulAdd(ng5, MF4x4(-0.1055991, 0.007073368, -0.07666124, 0.06573558, -0.10762247, -0.16527167, 0.09825201, 0.051373113, -0.1926851, -0.046607103, -0.07601954, 0.05199459, -0.06756806, 0.092222616, -0.026166819, 0.1535803), target1);\n\ttarget1 = MulAdd(g6, MF4x4(0.0067429054, 0.014872415, -0.019792963, 0.0014269215, 0.041500363, 0.018643422, 0.04487991, 0.031431414, -0.0278133, -0.028131608, -0.019798402, -0.041768856, -0.0063227355, 0.007656633, 0.0019235855, 0.00076331315), target1);\n\ttarget1 = MulAdd(g7, MF4x4(0.025489544, 0.023983652, 0.029175067, 0.0075372118, -0.010194142, -0.014977182, 0.011589661, 0.00036903258, -0.012841702, -0.010945794, -0.012143497, -0.0069256728, 0.007313037, 0.007576904, -0.016960602, 0.009170305), target1);\n\ttarget1 = MulAdd(g8, MF4x4(0.004188971, 0.017998729, -0.0046976185, -0.0034182668, 0.021841675, 0.012860078, 0.009202975, -0.0071324864, -0.0037808695, 0.01139587, -0.016267903, 0.007991299, 0.008879691, 0.007677154, 0.016209174, 0.011406443), target1);\n\ttarget1 = MulAdd(ng6, MF4x4(-0.008698401, -0.017972758, 0.026514322, -0.0024080887, 0.00012845756, 0.021530064, 0.0014967524, 0.0060274163, 0.017589558, 0.031043446, 0.014386793, 0.051733218, -0.013435874, -0.020567564, 0.011874828, 0.0030195254), target1);\n\ttarget1 = MulAdd(ng7, MF4x4(0.008565417, 0.0073839244, -0.012248247, -0.019089373, -0.04383907, 0.01000193, -0.003246391, 0.0502051, 0.012343873, 0.027492827, -0.011591099, 0.010474208, -0.009317595, -0.009244615, -0.00889853, -0.015167559), target1);\n\ttarget1 = MulAdd(ng8, MF4x4(-0.0149119655, -0.05737016, 0.027463723, 0.0013402153, 0.0012228708, 4.653676e-05, 5.3374144e-05, 0.010701133, 0.011828213, -0.012499855, -0.009720743, -0.035716657, -0.06976149, -0.05596556, 0.0028440042, 0.013388718), target1);\n\ttarget1 = MulAdd(g9, MF4x4(-0.010236228, 0.08551208, -0.060067203, 0.012999882, -0.0060008806, 0.003534564, 0.009385839, 0.010742909, 0.02672157, -0.17606625, 0.13504161, -0.035290483, -0.014812689, -0.0236554, 0.031493064, 0.01800991), target1);\n\ttarget1 = MulAdd(g10, MF4x4(0.0005283657, -0.032297328, 0.023884023, 0.024165852, 0.0017424148, -0.015371204, 0.0058860597, -0.04624227, 0.04947679, 0.09081732, -0.04592456, -0.03128466, 0.00023743653, -0.032846384, -0.0013158394, 0.0037953698), target1);\n\ttarget1 = MulAdd(g11, MF4x4(0.0034766623, -0.006661828, 0.027227342, 0.033958994, -0.007990619, 0.0025515554, -0.016197672, -0.0010064896, 0.022598108, 0.014734878, 0.021482255, -0.0059315437, -0.038538814, 0.03478085, -0.05926627, 0.012918195), target1);\n\ttarget1 = MulAdd(ng9, MF4x4(-0.023291608, -0.013129155, 0.0032865414, 0.026531553, -0.004495095, 0.0043812403, -0.027177097, -0.009125319, -0.006041235, -0.0031154896, -0.030664662, 0.005782464, -0.008880747, 0.015690446, -0.0108247, -0.022403536), target1);\n\ttarget1 = MulAdd(ng10, MF4x4(-0.07639219, 0.05440532, 0.016447276, -0.055569574, 0.0014948049, -0.03464865, -0.006925237, 0.024131197, 0.009468209, -0.011771851, 0.013548103, 0.004704814, 0.063868396, 0.04857746, 0.08745972, 0.0690927), target1);\n\ttarget1 = MulAdd(ng11, MF4x4(0.021505289, -0.06289818, 0.031038022, -0.047952045, 0.014759762, 0.10819852, -0.044093642, -0.020913709, -0.017672667, 0.007322798, -0.0030338434, -0.015471056, 0.017840479, -0.052742675, 0.044256743, -0.014589662), target1);\n\ttarget1 = MulAdd(g12, MF4x4(0.037849434, 0.04017271, 0.01840757, -0.05590355, 0.041468013, -0.015397055, -0.059170194, 0.08708615, 0.021914955, -0.0045240326, 0.03308673, 0.0141805615, -0.045770008, 0.048188016, -0.08913234, 0.046581928), target1);\n\ttarget1 = MulAdd(g13, MF4x4(-0.09374169, 0.07681035, -0.032266654, 0.066911325, 0.0071584303, 0.06599442, -0.0031403983, -0.062489454, 0.013248783, 0.018261025, -0.00095267413, -0.026741864, -0.0059258267, 0.03542517, -0.033440042, -0.0007421821), target1);\n\ttarget1 = MulAdd(g14, MF4x4(0.06491965, 0.0354909, -0.035559855, -0.07943817, 0.028543673, 0.026842002, -0.0029009457, -0.0022229373, 0.045988, -0.08896797, -0.04740724, 0.002011393, -0.067833476, -0.048432026, 0.025755037, 0.042066928), target1);\n\ttarget1 = MulAdd(ng12, MF4x4(-0.0011515832, -0.067060925, 0.02632549, 0.019017957, -0.0021755556, 0.004405696, 0.03028079, -0.043944478, -0.06373467, -0.032911435, -0.07619137, -0.055402283, -0.014293524, -0.009286333, 0.032950103, 0.0020192636), target1);\n\ttarget1 = MulAdd(ng13, MF4x4(0.033251163, -0.012636667, -0.019736348, -0.02221555, -0.035174683, -0.0024467881, -0.0020635366, 0.021488743, 0.054788366, -0.085087426, 0.06572526, -0.037050918, -0.06467607, -0.1047945, 0.10937466, 0.058931317), target1);\n\ttarget1 = MulAdd(ng14, MF4x4(-0.0015108787, 0.016789518, -0.02054971, 0.014368727, -0.083879344, -0.0024550394, 0.047329154, 0.018185811, -0.008528356, 0.04782707, 0.0019893225, 0.0095295245, -0.0024202724, -0.022640519, 0.0033455987, 0.010862984), target1);\n\n\tMF4 target2 = MF4(0.015986905, 0.006547183, 0.017682848, 0.0020978956);\n\ttarget2 = MulAdd(g0, MF4x4(0.016521078, 0.02344092, -0.04535869, -0.02916889, -0.06936641, -0.1118498, -0.07784149, -0.10769916, 0.042465053, 0.023522044, 0.0057797814, -0.00933453, 0.0013065349, 0.006887965, 0.019049056, 0.00018660461), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.047062866, 0.030671, 0.018363738, 0.015970303, 0.03619224, 0.0009964193, 0.027005734, -0.010791107, -0.027404316, -0.017589977, 0.0027660786, 0.0064380392, 0.003131181, -0.03881711, 0.017278498, -0.026646316), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.09417044, -0.030767195, -0.07023792, -0.015087274, -0.0007041566, -0.007214834, -0.010352469, -0.0208777, -0.006043107, 0.041942447, -0.027989924, 0.02058792, -0.004574836, -0.030063841, 0.0009874715, -0.030957421), target2);\n\ttarget2 = MulAdd(ng0, MF4x4(0.008398759, -0.014724292, 0.05661028, 0.03329433, 0.06970151, 0.09905173, 0.045296658, 0.06785315, -0.0044002533, -0.033776686, -0.018678186, -0.029671727, -0.019401457, -0.018823013, -0.015008842, -0.06645454), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.012770869, -0.039806906, -0.020173356, -0.033546574, -0.01800492, 0.005292071, -0.0040793624, 0.028466543, -0.0059105135, -0.01909232, -0.008970177, -0.023610232, 0.015667727, 0.021344513, 0.008805983, 0.012206504), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.09997275, 0.08955608, 0.035512842, 0.028650196, -0.0030424239, -0.0024058563, 0.0016431157, 0.006236751, -0.036105607, -0.04603557, 0.009145427, -0.0048202197, -0.020911733, -0.02017906, 0.016494693, 0.026199821), target2);\n\ttarget2 = MulAdd(g3, MF4x4(-0.038404938, -0.060263526, -6.756075e-05, -0.027351642, -0.088377364, -0.018328555, 0.0054546758, 0.080624446, 0.011837796, -0.020218652, 0.018197412, 0.0060563446, 0.025623528, 0.048627276, 0.023259064, 0.040498782), target2);\n\ttarget2 = MulAdd(g4, MF4x4(0.001184946, -0.010515342, 0.07386562, 0.059235208, 0.05555331, 0.062187005, 0.05260689, 0.053744275, -0.05839836, -0.037090734, -0.039248314, -0.020784492, -0.028018624, -0.019818485, 0.0076861596, 0.02911364), target2);\n\ttarget2 = MulAdd(g5, MF4x4(-0.00855134, 0.026217, 0.008748317, 0.044626243, -0.031007087, -0.040997487, 0.05034173, 0.048289847, -0.055651344, -0.0043054484, -0.022927478, 0.035169583, -0.008501671, 0.04446119, 0.011305084, 0.07596592), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(0.02517117, 0.04711998, 0.013574831, 0.035244223, 0.075724855, -0.0018857572, -0.01328286, -0.08398966, -0.018110974, 0.010837328, -0.040522598, -0.018411685, -0.059188075, -0.04547794, -0.029902466, -0.016604925), target2);\n\ttarget2 = MulAdd(ng4, MF4x4(-0.035855412, 0.046150643, -0.10446721, -0.026326178, -0.04509233, -0.059326984, -0.035487395, -0.047976315, 0.07541923, 0.014728924, 0.046932008, 0.015592031, 0.017363356, 0.009260565, -0.014755931, -0.04052638), target2);\n\ttarget2 = MulAdd(ng5, MF4x4(0.021554522, -0.011627397, -0.01343262, -0.04844844, 0.027149484, 0.05269421, -0.038861327, -0.034239817, 0.045947555, 0.0040015248, 0.007324502, -0.033051178, 0.0059830896, -0.069709964, 0.0073222807, -0.07108966), target2);\n\ttarget2 = MulAdd(g6, MF4x4(-0.009433482, 0.014257062, -0.034876116, -0.006570796, 0.01594308, 0.006663722, 0.025571914, 0.017348047, -0.00696648, 0.0012649806, -0.009151321, -0.016255042, -0.009809473, -0.0066239014, 0.013773972, 0.0009501933), target2);\n\ttarget2 = MulAdd(g7, MF4x4(0.026438858, 0.021545267, 0.028909115, -0.00084199436, -0.011350823, -0.010261177, 0.0064784726, 0.0028340816, 4.6254245e-05, 0.0022755957, 0.008798779, 0.010278017, -0.0011969887, 0.0035411653, -0.018417642, 0.0038709878), target2);\n\ttarget2 = MulAdd(g8, MF4x4(0.013238081, 6.1892446e-05, 0.002711564, -0.009014244, 0.03579594, 0.0009713739, 0.018199503, -0.010510502, -0.0019577555, -0.0035989769, -0.027621416, -0.000649344, 0.012450313, 0.005054388, 0.028295556, 0.016118951), target2);\n\ttarget2 = MulAdd(ng6, MF4x4(0.0014749946, -0.023122363, 0.03635473, 0.0058698757, -0.001502294, 0.0056668227, -0.00653508, -0.0045331884, 0.0019510906, -0.0004722523, 0.0015459604, 0.02002365, -0.012883676, -0.02313574, 0.0055781654, 0.00042050896), target2);\n\ttarget2 = MulAdd(ng7, MF4x4(0.010353148, 0.0061610388, -0.01620723, -0.025678562, -0.050585296, 0.0015720357, 0.006579174, 0.04645622, 0.0034451822, 0.01640892, -0.019171385, -0.002445667, 0.002142384, -0.00157746, -0.007453497, -0.012107003), target2);\n\ttarget2 = MulAdd(ng8, MF4x4(-0.023626367, -0.03362931, 0.02775251, 0.00854008, -0.00731221, 0.0058875666, -0.0042465483, 0.011091973, 0.01608576, 0.008776418, -0.005520655, -0.02189608, -0.07337467, -0.04255072, 0.008632718, 0.024232844), target2);\n\ttarget2 = MulAdd(g9, MF4x4(-0.012279061, 0.09683549, -0.058048066, 0.009577618, -0.007927522, 0.0030408904, 0.0026037316, 0.0097128665, 0.039862663, -0.18592681, 0.15766914, -0.02878756, -0.015735846, -0.025808172, 0.035324212, 0.025404148), target2);\n\ttarget2 = MulAdd(g10, MF4x4(0.006978013, -0.023965824, 0.04186123, 0.035988815, 0.009321329, -0.015712317, 0.0018002216, -0.052822754, 0.05654876, 0.111119345, -0.041984286, -0.029346094, -0.007712756, -0.034608763, -0.0036700158, 0.0038703915), target2);\n\ttarget2 = MulAdd(g11, MF4x4(0.010860362, 0.006824253, 0.03891404, 0.049122907, -0.008826647, -0.0010997625, -0.021827312, -0.007863293, 0.033063967, 0.022403365, 0.032778744, 0.007655028, -0.04496311, 0.041045222, -0.07040422, 0.004163393), target2);\n\ttarget2 = MulAdd(ng9, MF4x4(-0.024705354, -0.015902927, 0.0062216455, 0.032576248, -0.0073882695, 0.00312872, -0.034358293, -0.0108961025, -0.013837597, -0.01177598, -0.04495569, -0.0055595962, -0.01059331, 0.012361757, -0.014834784, -0.033682585), target2);\n\ttarget2 = MulAdd(ng10, MF4x4(-0.09480182, 0.03846278, -0.0028056598, -0.07323092, -0.005995085, -0.043553468, -0.005056617, 0.024003377, 0.004277762, -0.012972639, 0.012475677, 0.008617157, 0.10223809, 0.07649263, 0.12168736, 0.097682655), target2);\n\ttarget2 = MulAdd(ng11, MF4x4(0.015393864, -0.07291429, 0.02954706, -0.05294187, 0.013404429, 0.120944545, -0.042298347, -0.01288604, -0.019713184, 0.0020540208, -0.011201426, -0.02414191, 0.007575817, -0.07666445, 0.0432983, -0.026015261), target2);\n\ttarget2 = MulAdd(g12, MF4x4(0.03819905, 0.04372597, 0.01904637, -0.061578088, 0.040888324, -0.016588384, -0.064523876, 0.09287848, 0.01574791, -0.014614555, 0.02938285, 0.0042374404, -0.046039872, 0.056844704, -0.08844019, 0.052806962), target2);\n\ttarget2 = MulAdd(g13, MF4x4(-0.096315265, 0.07987954, -0.031859763, 0.072237074, 0.015652604, 0.07566605, -0.00032600394, -0.05746408, 0.014229001, 0.017113304, -0.0023968874, -0.03106284, -0.0069599864, 0.03968875, -0.038528994, -0.003121002), target2);\n\ttarget2 = MulAdd(g14, MF4x4(0.07314791, 0.03615158, -0.03678017, -0.0791755, 0.03634212, 0.039138626, 0.0035000257, 0.00436604, 0.044376615, -0.09974018, -0.051570408, -0.002901859, -0.06796205, -0.05585607, 0.02609314, 0.04431718), target2);\n\ttarget2 = MulAdd(ng12, MF4x4(0.0026970597, -0.07160132, 0.03102004, 0.022031954, 0.000259048, 0.004125086, 0.033309445, -0.04846637, -0.06566389, -0.029620873, -0.07882971, -0.053104673, -0.013712152, -0.015054757, 0.033180926, 0.00034900242), target2);\n\ttarget2 = MulAdd(ng13, MF4x4(0.034628514, -0.01001147, -0.021473913, -0.022840675, -0.045706123, -0.010280426, -0.0069577876, 0.01667532, 0.055181097, -0.087735586, 0.06744914, -0.034818206, -0.066513196, -0.10804274, 0.11681918, 0.06460058), target2);\n\ttarget2 = MulAdd(ng14, MF4x4(-0.005054911, 0.01865763, -0.021856284, 0.010207481, -0.090607546, -0.014940299, 0.04399175, 0.013478195, -0.0072319377, 0.057889264, 0.0061306353, 0.021376813, -0.00018109869, -0.022432365, 0.004136804, 0.011778294), target2);\n\n\tMF4 target3 = MF4(0.00428531, -0.011541925, 0.00898425, -0.01374321);\n\ttarget3 = MulAdd(g0, MF4x4(0.17312507, 0.18378204, 0.07926516, 0.1067288, 0.21052518, 0.13378853, 0.19536258, 0.14002354, 0.11711924, 0.08335183, 0.056983225, 0.028226014, 0.03449669, 0.044664416, 0.06761993, 0.044069722), target3);\n\ttarget3 = MulAdd(g1, MF4x4(0.049151406, 0.027747469, 0.013829845, 0.010793505, 0.16125697, 0.10510845, 0.13865222, 0.08505211, -0.20990449, -0.19430009, -0.15810025, -0.15454805, -0.035844944, -0.11059333, -0.018675208, -0.09188628), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.006685408, 0.11628241, 0.039672334, 0.1436817, 0.015559294, 0.009202889, 0.004621052, -0.006609141, 0.007991005, 0.08041883, -0.014427849, 0.057766948, -0.067192554, -0.10489045, -0.058118373, -0.10879217), target3);\n\ttarget3 = MulAdd(ng0, MF4x4(-0.13102308, -0.16938946, -0.049558997, -0.08738032, -0.15949999, -0.098247744, -0.21387893, -0.16764748, -0.036459852, -0.08977845, -0.063770026, -0.085683785, -0.04874994, -0.050357077, -0.040709995, -0.12104794), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(-0.0016424131, -0.04231474, -0.008843509, -0.026220948, -0.13888876, -0.10844901, -0.10787409, -0.067019746, 0.1705322, 0.16687205, 0.16005264, 0.15010779, 0.084698394, 0.092028156, 0.07699169, 0.079460666), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(0.0075197075, -0.020141402, -0.1006905, -0.11359611, -0.0085215755, -0.005612361, -0.0018493677, 0.007426326, -0.06751104, -0.08159549, 0.0120629985, -0.012342098, 0.03995728, 0.036384724, 0.09553051, 0.09851564), target3);\n\ttarget3 = MulAdd(g3, MF4x4(-0.029465627, -0.054333087, 0.02729686, -0.0045043076, -0.13339953, -0.032064863, 0.0070489575, 0.1158326, -0.0006455828, -0.05559491, 0.016300855, -0.016093824, 0.0035336027, 0.025718046, -0.002194457, 0.009156581), target3);\n\ttarget3 = MulAdd(g4, MF4x4(-0.03060067, -0.088183194, 0.08511207, 0.023555957, 0.030279126, 0.037585177, 0.016086163, 0.017970216, -0.05365472, 0.008709411, -0.022766082, 0.026308894, -0.026761275, -0.012835554, 0.02677239, 0.06120358), target3);\n\ttarget3 = MulAdd(g5, MF4x4(-0.030154163, 0.016827311, -0.0070917453, 0.049568735, -0.06463202, -0.095433265, 0.059520688, 0.039794426, -0.11667492, -0.040507805, -0.05257038, 0.025766404, -0.04885214, 0.042495333, -0.022887079, 0.08385772), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(0.024346549, 0.054313555, -0.005122175, 0.019812366, 0.13365328, 0.014708698, -0.010476813, -0.1185288, 0.0023148789, 0.052297566, -0.03189476, 0.005272433, -0.03835005, -0.026765257, -0.0094220815, 0.0047409064), target3);\n\ttarget3 = MulAdd(ng4, MF4x4(-0.007440264, 0.12066173, -0.12320844, 0.0016777752, -0.011408617, -0.029569637, 0.008827655, -0.007016294, 0.06650651, -0.031428255, 0.034667335, -0.023670185, 0.007218744, -0.004491109, -0.035605032, -0.07145819), target3);\n\ttarget3 = MulAdd(ng5, MF4x4(0.049787126, -0.0017957676, -0.006283968, -0.058967303, 0.05774073, 0.09960317, -0.059987612, -0.036502153, 0.07282059, 0.005348924, 0.013446346, -0.04757274, 0.045422055, -0.0634229, 0.024715338, -0.08555914), target3);\n\ttarget3 = MulAdd(g6, MF4x4(-0.005835691, 0.016965812, -0.028456861, -0.0033920892, 0.009836867, 0.0006767609, 0.01886044, 0.012588657, -0.00884555, -0.0037418597, -0.009430517, -0.019091168, -0.002798804, 0.0039561144, 0.017126411, 0.004825749), target3);\n\ttarget3 = MulAdd(g7, MF4x4(0.028191822, 0.029202491, 0.032901034, 0.011502915, -0.010819439, -0.0069572316, 0.006472295, 0.0053685335, 0.00079939753, 0.0037769184, 0.011775226, 0.01399779, 0.0033956952, 0.0052899374, -0.010259701, 0.0077763535), target3);\n\ttarget3 = MulAdd(g8, MF4x4(0.008361512, -0.0117131, -0.0049652294, -0.01998969, 0.022627737, -0.008692346, 0.0019018264, -0.023467707, -0.008756792, -0.017017934, -0.031440705, -0.008512948, 0.0054877545, -0.00070786494, 0.019616788, 0.00793716), target3);\n\ttarget3 = MulAdd(ng6, MF4x4(-0.013002159, -0.03813209, 0.026482832, -0.00023578315, -0.004977621, 0.0014138863, -0.0057627726, -0.0042974507, -0.007416917, -0.008726386, -0.011688116, 0.010687058, -0.011166254, -0.020983206, 0.0066195372, 0.003834876), target3);\n\ttarget3 = MulAdd(ng7, MF4x4(0.0048169903, 0.0076203775, -0.015507004, -0.023508213, -0.052957263, -0.0069484734, -0.0011737008, 0.03410549, 0.0030833874, 0.012800496, -0.019242208, -0.005873537, -0.005420416, -0.009030759, -0.01785444, -0.01966881), target3);\n\ttarget3 = MulAdd(ng8, MF4x4(-0.012387838, -0.014545728, 0.035943765, 0.024116462, 0.0008325086, 0.017050253, 0.0024911535, 0.019210132, 0.02221826, 0.020303903, 0.004521489, -0.009177796, -0.07020659, -0.040271588, 0.013064882, 0.028324096), target3);\n\ttarget3 = MulAdd(g9, MF4x4(-0.0069806273, 0.09828906, -0.049242873, 0.014799003, -0.008970328, 0.003844374, 0.0010211956, 0.008877965, 0.039977968, -0.17025097, 0.14956547, -0.02214056, -0.00973778, -0.018551195, 0.034893923, 0.027594449), target3);\n\ttarget3 = MulAdd(g10, MF4x4(0.011814281, -0.015895301, 0.04550156, 0.04049697, 0.0076704635, -0.018837227, 0.005477875, -0.04887477, 0.05526271, 0.11000575, -0.03529281, -0.023258513, -0.0022530397, -0.026560089, -0.0021712275, 0.0056000547), target3);\n\ttarget3 = MulAdd(g11, MF4x4(0.013357528, 0.014710138, 0.043349367, 0.053752452, -0.010020186, -0.0048438436, -0.023880936, -0.011357083, 0.033450976, 0.022771686, 0.0326334, 0.0068722614, -0.0512848, 0.026570365, -0.07270785, -0.006190101), target3);\n\ttarget3 = MulAdd(ng9, MF4x4(-0.025186045, -0.01740991, 0.003838567, 0.027091907, -0.0071685803, -0.00027341367, -0.02992052, -0.008542527, -0.013445479, -0.015780428, -0.042524435, -0.00881602, -0.011120149, 0.009015556, -0.013422532, -0.032560103), target3);\n\ttarget3 = MulAdd(ng10, MF4x4(-0.09606898, 0.025490688, -0.008527585, -0.075416856, -0.0028138838, -0.035580438, -0.006531162, 0.023687562, 0.0055310167, -0.010112962, 0.014539237, 0.01172912, 0.09965159, 0.075306684, 0.11886721, 0.095253), target3);\n\ttarget3 = MulAdd(ng11, MF4x4(0.011965668, -0.072057776, 0.024608271, -0.054251578, 0.012394993, 0.114785306, -0.0419942, -0.011279603, -0.021266261, -0.0042840955, -0.015289745, -0.029362924, 0.0103631085, -0.06942332, 0.042722963, -0.021691492), target3);\n\ttarget3 = MulAdd(g12, MF4x4(0.033176757, 0.04084371, 0.015103838, -0.057419725, 0.037109293, -0.016537853, -0.059167393, 0.08598897, 0.015969522, -0.010902342, 0.03118472, 0.008363948, -0.041729625, 0.057053857, -0.08161458, 0.052837733), target3);\n\ttarget3 = MulAdd(g13, MF4x4(-0.092430755, 0.07110693, -0.034382034, 0.062702626, 0.014907711, 0.07141848, -0.0019698131, -0.054372307, 0.0128283445, 0.013943152, -0.0034115645, -0.030608373, -0.005405216, 0.03866557, -0.034109335, -0.0013265307), target3);\n\ttarget3 = MulAdd(g14, MF4x4(0.06594738, 0.029660825, -0.037681, -0.07724883, 0.03563272, 0.041913237, 0.0042468007, 0.0069140824, 0.039035708, -0.09520566, -0.04894546, -0.0034723799, -0.06357319, -0.052821137, 0.022598358, 0.041650392), target3);\n\ttarget3 = MulAdd(ng12, MF4x4(0.004992455, -0.06508938, 0.030750059, 0.022826253, 0.002092941, 0.0037119875, 0.030300831, -0.0454966, -0.05877186, -0.024108075, -0.07177208, -0.047089674, -0.014241358, -0.015470063, 0.029174741, -0.0012050892), target3);\n\ttarget3 = MulAdd(ng13, MF4x4(0.033182934, -0.0073093693, -0.017909355, -0.018535342, -0.0415075, -0.010425076, -0.0039859596, 0.015540642, 0.05229552, -0.08504954, 0.06377993, -0.035305116, -0.06266023, -0.102613874, 0.10803333, 0.06006112), target3);\n\ttarget3 = MulAdd(ng14, MF4x4(-0.0026692066, 0.020269373, -0.018895708, 0.010902005, -0.084507205, -0.018323625, 0.03897616, 0.008709061, -0.005905961, 0.05540135, 0.0050392286, 0.019433267, -0.0011370446, -0.02185742, 0.004525434, 0.010520601), target3);\n\n\tfloat2 outputPt = GetOutputPt();\n\t\n\tpos -= 0.5f * outputPt;\n\tOUTPUT[gxy] = MF4(MF3(target1.x, target2.x, target3.x) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t++gxy.x;\n\tpos.x += outputPt.x;\n\tOUTPUT[gxy] = MF4(MF3(target1.y, target2.y, target3.y) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\t\n\t++gxy.y;\n\tpos.y += outputPt.y;\n\tOUTPUT[gxy] = MF4(MF3(target1.w, target2.w, target3.w) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t--gxy.x;\n\tpos.x -= outputPt.x;\n\tOUTPUT[gxy] = MF4(MF3(target1.z, target2.z, target3.z) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Upscale_Denoise_VL.hlsl",
    "content": "// Anime4K_Upscale_Denoise_CNN_x2_VL\n// 移植自 https://github.com/bloc97/Anime4K/blob/78e4f78f65b772e94bae6e7db5c49af1e889f784/glsl/Upscale%2BDenoise/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Upscale_Denoise_2\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_1_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_1_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_2_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_2_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_3_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_3_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_4_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_4_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_5_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_5_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_6_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_6_tf1;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT conv2d_tf, conv2d_tf1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\t\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = { 0.007907974, -0.035503313, 0.057224784, -0.19763541 };\n\t\t\ttarget1 = MulAdd(src[i - 1][j - 1], MF3x4(0.28296316, -0.020139743, 0.1038232, 0.09352482, -0.16964972, 0.07910997, -0.049914766, -0.10661066, -0.121037185, -0.029087039, -0.02511847, -0.078911744), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j], MF3x4(-0.3927183, 0.01805193, -0.031168332, -0.13300525, 0.20814548, 0.118818566, 0.1655351, 0.095023684, 0.17600809, -0.03928444, -0.014350658, 0.08458312), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j + 1], MF3x4(0.079089314, -0.0421829, 0.05452305, -0.22055493, 0.013279097, -0.12875281, 0.02452735, -0.101503745, -0.085946664, 0.05539176, 0.022408713, 0.14837204), target1);\n\t\t\ttarget1 = MulAdd(src[i][j - 1], MF3x4(-0.102643915, -0.011254746, 0.1478563, 0.1030208, 0.12396588, 0.0016621432, 0.2551224, -0.10399001, -0.01068436, 0.07155532, -0.104522154, 0.026937222), target1);\n\t\t\ttarget1 = MulAdd(src[i][j], MF3x4(-0.8789423, 0.35707328, -0.29964274, -0.064913996, 0.4962815, 0.26001287, -0.9511284, 0.49574667, 0.39539725, 0.16308042, 0.119878456, -0.30259115), target1);\n\t\t\ttarget1 = MulAdd(src[i][j + 1], MF3x4(-0.08852938, -0.32612664, -0.006712046, 0.28693515, 0.06320871, -0.3322611, 0.04651086, -0.11020996, 0.01821082, -0.22851005, -0.07803438, 0.021527015), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j - 1], MF3x4(0.12295851, -0.011285535, 0.015859747, 0.04005441, -0.018136669, 0.03171969, -0.0406123, -0.10731229, -0.12117574, 0.005033036, 0.047838476, 0.026843475), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j], MF3x4(0.4655988, 0.05519082, 0.039515793, 0.28410903, -0.36144528, 0.13039446, 0.11338478, -0.2141387, -0.10026682, -0.07903024, -0.09410254, 0.043833878), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j + 1], MF3x4(0.110124744, -0.024725702, 0.028102143, -0.09493807, -0.06455328, -0.15164614, 0.04425987, 0.15483347, -0.045039337, 0.07210396, -0.005390788, -0.03832707), target1);\n\n\t\t\tMF4 target2 = { 0.019286277, -0.033644073, 0.08196311, 0.0054393094 };\n\t\t\ttarget2 = MulAdd(src[i - 1][j - 1], MF3x4(-0.012326053, 0.050769784, 0.1278702, -0.100782245, 0.14329414, -0.054558773, 0.023473471, 0.056829426, 0.048292916, 0.0046510273, -0.11478287, 0.0011030561), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j], MF3x4(0.29542983, -0.55061895, -0.068554066, 0.1433222, -0.072878316, 0.30201668, -0.2223378, -0.06704077, 0.16955832, 0.3279914, 0.17619601, -0.1276919), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j + 1], MF3x4(0.09623417, 0.30559412, 0.094622105, -0.076706685, 0.07943858, -0.084815115, 0.12472551, 0.079850115, -0.13044213, -0.21300878, -0.095747225, 0.13412355), target2);\n\t\t\ttarget2 = MulAdd(src[i][j - 1], MF3x4(0.21291664, 0.17195296, -0.20080926, 0.1064855, 0.10228669, -0.09580175, -0.11217631, -0.09740562, -0.0033135475, -0.053094357, 0.2983595, 0.035281878), target2);\n\t\t\ttarget2 = MulAdd(src[i][j], MF3x4(-0.08955812, -0.45707774, -0.4606922, -0.5754473, -0.11395895, 0.33530128, 0.29705846, -0.18877256, -0.43502945, 0.114171304, -0.3750776, -0.081597246), target2);\n\t\t\ttarget2 = MulAdd(src[i][j + 1], MF3x4(-0.26109028, 0.02662961, -0.10441071, 0.11199392, -0.12038989, -0.09642296, -0.061320662, -0.33058178, 0.20212512, 0.00840794, 0.14357455, -0.038080238), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j - 1], MF3x4(-0.09533881, -0.13644339, 0.068756215, 0.079305276, -0.053370547, 0.19572955, 0.0682981, 0.14469264, 0.15582883, -0.057183057, -0.13919263, -0.016394936), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j], MF3x4(-0.041189935, 0.39878023, 0.028704925, 0.30194348, -0.04486593, -0.33899093, -0.103968106, 0.21802065, -0.077099144, -0.07389541, 0.18069103, 0.18894517), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j + 1], MF3x4(-0.12399862, 0.19246885, 0.034825478, -0.0044787163, 0.13121822, -0.13573012, -0.030162754, 0.1899518, 0.102326415, -0.061512686, -0.005647928, -0.0937634), target2);\n\n\t\t\tconv2d_tf[destPos] = target1;\n\t\t\tconv2d_tf1[destPos] = target2;\n\t\t}\n\t}\n}\n\n//!PASS 2\n//!DESC Conv-4x3x3x16\n//!IN conv2d_tf, conv2d_tf1\n//!OUT conv2d_1_tf, conv2d_1_tf1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.044073943, 0.12072677, -0.0022342638, -0.24414532 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.04088509, -0.06585775, -0.3094732, 0.12059048, 0.041417453, -0.06144871, -0.06655134, 0.03308842, 0.09287731, 0.010969216, 0.10343026, -0.11185897, 0.05685865, -0.09490512, 0.040908635, 0.03501189), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.04854754, -0.098667145, 0.67147833, -0.11299351, -0.022114437, -0.029202767, 0.014179382, 0.26027945, 0.22076549, -0.16490546, -0.0010764733, 0.08405975, 0.11849154, -0.19072372, -0.35719597, -0.059621073), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.079224996, 0.0669873, -0.1718969, -0.05002573, 0.044926763, -0.02904369, 0.017489236, 0.01144465, 0.059109706, 0.064998455, 0.14725484, -0.23879208, 0.039234288, -0.027365638, 0.26172164, -0.094598554), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.07159218, -0.03181544, 0.113837324, -0.053089984, -0.098298974, -0.29500297, 0.1608509, -0.044355504, 0.050882854, -0.19417204, -0.080487266, -0.00879743, 0.0007914453, 0.16640955, 0.21786706, 0.16398212), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.16324541, 0.19753313, -0.46597233, -0.2593132, -0.2781038, -0.21973547, -0.024623038, -0.16348499, 0.3628299, 0.044888914, 0.04054647, -0.63605887, 0.02099492, 0.060544077, -0.49359834, 0.36336297), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.16885692, 0.31907207, 0.020906802, 0.13290039, -0.037330728, -0.022859452, -0.020451576, -0.113437995, -0.085683934, 0.054102756, -0.044824492, 0.061346747, -0.038684413, 0.098444365, -0.06734984, -0.17084897), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.015821548, -0.119599186, 0.1614827, 0.08383641, -0.07933593, 0.12528986, -0.06300182, 0.09286327, -0.10199266, 0.02419403, 0.0028411683, -0.09028338, 0.07962534, -0.08676035, -0.19237737, -0.115502626), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.09471972, 0.21153462, -0.14393018, 0.055180002, 0.1817461, 0.016607309, -0.0771979, 0.11181317, -0.5491086, -0.102757886, -0.20952754, 0.022466583, -0.075119644, -0.14725658, 0.38451517, 0.12920731), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.0867803, 0.114654355, 0.21199988, -0.15367955, -0.01803536, 0.056378633, 0.0018388306, 0.024613786, -0.13306658, 0.017211098, 0.073351346, -0.12064064, -0.10484361, -0.067748636, 0.033206712, -0.13061953), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.002236411, -0.022144757, -0.04586377, 0.101181075, -0.03511624, 0.08440529, 0.18544284, -0.22786349, -0.042184375, 0.015734851, -0.038622506, 0.038529944, -0.09170703, 0.034527462, -0.07817406, 0.10547265), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.12135524, -0.07412039, -0.04979351, -0.082267545, 0.13343571, 0.29196215, -0.4364121, -0.10226428, 0.060835477, -0.23307934, -0.018231759, 0.15550235, 0.09095689, 0.18164484, 0.1322021, -0.022567045), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.0054531163, -0.039762255, -0.030490747, 0.04779882, -0.15290286, 0.056712102, -0.0776974, 0.04114215, 0.15946816, -0.03882117, 0.16770308, -0.026126247, -0.027203865, -0.064107865, -0.13670811, 0.1556276), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.092548385, -0.027285473, 0.084179096, 0.014961629, 0.2564254, 0.07626849, 0.28534448, 0.2588713, -0.018600503, -0.2433456, 0.041392803, -0.045712482, 0.26388907, -0.053502295, 0.14522223, 0.032808404), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.0013780193, 0.3482449, 0.071003586, -0.30707207, -0.05122194, -0.2833618, 0.07910779, 0.051078696, 0.021535402, 0.13021478, 0.022049015, -0.533547, 0.57265025, -0.12843914, -0.14913581, -0.1433724), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.07382619, -0.12152924, 0.13364957, 0.181974, 0.15804219, -0.10126773, 0.3029618, -0.12874149, 0.13743348, -0.23245592, -0.20119278, 0.029547188, 0.042436857, 0.04213892, -0.07975374, 0.023821082), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.022782229, -0.08359311, -0.060623147, 0.06565042, 0.09828792, 0.044808697, -0.28872305, -0.00092168007, 0.021737702, -0.08698349, 0.1950025, 0.07931995, 0.040952396, -0.07443172, -0.021157127, 0.0056698937), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.09995892, -0.2047294, 0.1414849, 0.062335726, -0.22492298, 0.05269799, -0.029233055, -0.050517935, -0.12534393, -0.12194023, -0.07035469, -0.070764475, 0.18903446, 0.07691209, 0.06153371, 0.011280912), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.036189888, -0.07586571, -0.05888163, 0.010425367, -0.028375402, -0.18870986, -0.19146784, 0.19274063, -0.18856238, 0.0064240266, -0.14537223, -0.06971656, 0.0852742, -0.04866623, -0.031686075, 0.031702038), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.0618941, 0.100858234, 0.2628019, -0.048507668, -0.051001363, -0.03195978, 0.035452217, -0.001991919, -0.09649028, -0.047445696, -0.09221298, 0.07602656, -0.02382384, -0.119645916, 0.085616075, -0.07076033), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.019222878, -0.0491929, -0.4902266, 0.18501294, 0.014529614, -0.077125326, 0.011563931, -0.20236616, -0.101982154, -0.021150962, -0.07537948, -0.1540349, 0.028949164, -0.06827332, 0.0067634755, 0.09582376), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.05995539, -0.031138182, 0.01334257, 0.06827176, -0.030762246, 0.006615233, -0.03562788, 0.016249394, -0.14797118, 0.014671043, -0.09325859, 0.25653747, -0.11474991, 0.05436232, 0.031051394, 0.04179694), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.032279838, -0.030521005, 0.0029688699, 0.005165139, 0.15907808, -0.20421815, -0.07713175, 0.067530625, -0.08619395, 0.026114263, 0.08821273, 0.011591694, 0.018677557, 0.057708874, -0.25859246, -0.18693781), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.10823143, -0.31875235, -0.24394153, -0.0025489891, 0.016761065, -0.19857498, -0.07858479, -0.07811158, -0.38551694, -0.049090322, -0.050053325, 0.23398961, 0.014974165, 0.17498055, 0.29105362, -0.353647), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.05621677, -0.19492444, 0.460332, 0.055917628, -0.06404381, -0.06684098, 0.053624872, 0.057300456, -0.019248677, -0.15110065, 0.032379635, -0.12673225, 0.0068658157, -0.13001235, -0.017716292, 0.064182095), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.06764552, 0.004707433, -0.13827331, -0.21957871, -0.03789028, -0.04962028, 0.022955444, -0.058468018, 0.13735814, -0.031270552, -0.018490225, 0.0063876202, -0.052979283, -0.030049473, -0.004811771, -0.0044099926), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.028652798, -0.027029367, 0.62600744, 0.0900562, 0.03869923, -0.20111556, 0.095930666, -0.13164565, 0.5562579, 0.011937122, 0.22882107, 0.030288015, 0.09856272, 0.04736032, -0.077492185, -0.10207275), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.10581002, -0.16504957, -0.5688921, 0.0414545, 0.04749444, -0.052849945, -0.011017121, -0.025284614, 0.14316759, -0.08547362, -0.09654446, 0.08682504, 0.050776027, 0.0678741, -0.04913651, 0.07527552), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.04126091, 0.0048704315, 0.041699376, -0.05820725, -0.09664279, 0.07648305, -0.17979898, 0.11698985, -0.025436765, 0.023232851, 0.010656572, 0.08157569, 0.19584864, -0.022928072, 0.053339157, 0.0039929505), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.040733483, 0.12260473, 0.08071146, 0.07257762, -0.016945919, -0.31637576, -0.24281953, -0.0038469466, -0.10203634, 0.13631973, 0.06505259, -0.13119389, -0.09723076, -0.139551, -0.07504509, 0.08645985), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.017005404, 0.049066268, -0.007544932, -0.04884536, 0.09984347, -0.04447364, 0.4902235, -0.062780835, -0.18389583, 0.07305648, -0.22014385, 0.08004685, 0.0992568, -0.08569604, 0.093966395, -0.07047139), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.0017705248, 0.020553982, -0.09167042, 0.0036356782, -0.11867446, -0.07055574, 0.40252638, 0.09657129, 0.0888632, 0.1031708, -0.022127641, -0.023769693, -0.0861388, 0.13420185, -0.11774454, 0.038774434), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.15173717, -0.13590458, -0.0891863, 0.12289548, 0.13942605, 0.22152588, -0.19292432, 0.14169839, 0.010543665, 0.07648361, -0.057333756, 0.09535759, -0.053601623, -0.026824495, 0.09365424, 0.17476946), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.070416056, -0.061970036, -0.039723337, -0.18874651, -0.07098426, -0.019835865, -0.5612458, 0.060437083, -0.03774378, 0.18536821, 0.28587544, 0.035555754, 0.15771326, -0.13527197, 0.13342534, -0.06564073), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.10967661, 0.025388904, 0.09003177, -0.04087592, 0.09531671, -0.11809294, -0.41613623, 0.038198076, 0.01019813, -0.018864965, -0.18400626, -0.038704176, 0.0105671035, 0.024449013, -0.008989595, -0.027171193), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.16193569, -0.21445285, -0.20130903, -0.13498883, -0.008031679, 0.050757203, 0.78938776, -0.03749514, 0.11998137, 0.19368882, 0.12328945, 0.0058578993, -0.13852382, -0.033867255, -0.018267661, 0.036348555), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.06254118, 0.087295115, 0.031116437, 0.0416281, 0.061828617, 0.34479564, -0.15537797, -0.17144552, 0.13989387, -0.13792284, 0.056215156, 0.12714528, -0.0198865, 0.04927947, 0.013614583, -0.041810013), target1);\n\t\n\tMF4 target2 = { -0.07235962, -0.019149294, 0.05072898, 0.03962245 };\n\ttarget2 = MulAdd(a1, MF4x4(0.07115729, 0.01065505, 0.19167988, -0.02504489, -0.15064801, 0.079008736, 0.05437936, 0.027479589, -0.021383656, 0.032731537, -0.06657876, 0.022649521, -0.06501893, -0.02335689, 0.010445489, -0.05430297), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.1178601, 0.07425715, 0.063272275, -0.18308601, -0.13955134, 0.005166404, -0.022591779, -0.016827974, -0.024990188, -0.13372071, -0.056342285, 0.12489847, 0.081861794, -0.07083351, 0.021897513, 0.0629395), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.051357627, -0.13874975, -0.09887168, -0.011908862, 0.03639772, -0.13195883, -0.05321156, 0.03913229, -0.08160194, -0.07128151, 0.043625016, 0.11966009, 0.03162217, 0.018834392, -0.0625129, 0.10726711), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.15922394, -0.043482754, -0.22571066, 0.009280428, -0.3882705, 0.08418719, 0.15329506, -0.028419001, -0.011272379, 0.15897545, 0.041217074, -0.0143014155, 0.09451862, -0.056342427, -0.14568482, 0.05556279), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.13879324, -0.23339099, -0.24573983, -0.09575104, 0.03823306, 0.4752516, -0.1696623, -0.18472373, -0.1510259, 0.23040254, 0.4196143, 0.3462817, 0.035172507, 0.18228662, 0.22475636, -0.19945027), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.08876766, 0.19567333, 0.25174314, -0.09637879, -0.007957943, 0.13510521, 0.030193076, -0.0018362573, -0.006884444, -0.41804117, -0.1026309, -0.053339038, -0.1283198, -0.03033918, 0.055674326, 0.094377995), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.06780768, -0.07774435, -0.0616546, -0.046531744, -0.11723141, 0.10792474, 0.013314576, -0.031451598, -0.009870351, 0.10215877, -0.13101454, -0.19878799, -0.09712651, 0.10423937, 0.14170039, -0.03359521), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.020114673, -0.015194169, 0.03657608, 0.17162928, 0.070458665, -0.08041664, 0.14067306, 0.19699603, -0.28763783, -0.033556152, -0.6588468, -0.48221052, -0.123711474, -0.080758795, -0.3187303, 0.121004865), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.074900605, 0.09297913, -0.08621144, 0.116730206, -0.034766622, -0.10381484, 0.060793545, -0.014790814, -0.123858415, -0.0010626495, 0.20547503, -0.07206306, -0.17324795, 0.023932874, 0.017495958, -0.09924652), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.015568068, 0.005394868, 0.15463537, 0.06416607, -0.045670815, -0.013540727, -0.12960619, 0.0006581649, 0.09432853, 0.05575682, -0.022219105, 0.022416297, 0.0148129435, -0.067619696, 0.022989385, -0.09695771), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.107209, 0.07072438, -0.10235772, -0.12078849, -0.02751833, -0.043195058, -0.17197154, 0.120612316, -0.17310137, -0.09429793, 0.06511165, 0.18072544, -0.21168593, 0.16383737, 0.25012484, -0.089589044), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.005439779, 0.0028433986, -0.09885586, -0.06572956, -0.0061691296, 0.15485546, -0.23724958, 0.004232802, 0.07794742, -0.012552598, 0.07554404, 0.10843201, -0.013223918, -0.08705092, -0.23228747, 0.03599732), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.043396916, -0.10680695, -0.019935586, -0.06703658, -0.30075943, -0.010179525, 0.30197874, 0.04888297, 0.00779067, 0.22583807, 0.2039884, -0.0074303118, -0.19240093, -0.024718538, 0.057117213, 0.19431825), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.37633005, 0.043971814, -0.21423087, 0.118503235, -0.15058799, 0.115756795, -0.13719647, 0.020510519, 0.1123193, 0.14797291, 0.05467349, 0.2039607, -0.31973588, 0.1667847, -0.017739004, -0.11280262), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.0084394775, -0.1281101, -0.20841378, 0.01986435, -0.04122467, -0.21089631, -0.08062371, 0.11315133, 0.05693114, -0.23773515, 0.03792205, -0.008872407, 0.04554895, -0.10683658, 0.10683206, 0.06875721), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.103948504, -0.007483217, -0.12571928, 0.054868475, -0.030646881, -0.010098222, 0.019018777, -0.07072212, -0.10689893, 0.16498323, 0.048089568, -0.10912806, -0.027318537, -0.025491163, 0.012588013, 0.072701246), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.14094622, -0.028118243, 0.016804086, -0.18000692, 0.33351874, 0.14980756, -0.07135749, -0.16573106, -0.17243773, 0.054617904, -0.2933543, -0.12602285, 0.08480712, -0.05704333, 0.22336398, 0.026583148), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.046759557, -0.03100408, 0.40000245, -0.08521555, 0.19592628, -0.15150753, 0.25288078, -0.061794683, -0.047818147, -0.12249124, 0.020410215, -0.11503924, 0.046108168, 0.030459814, -0.14096366, 0.09120256), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.087491795, -0.024289595, -0.09060237, 0.020922959, 0.09557061, -0.08556962, -0.0503455, -0.010846053, 0.0030694185, -0.008256591, 0.08290225, -0.034981687, 0.07342003, -0.021816112, -0.13905519, -0.06265962), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.08126147, -0.05866924, -0.015698025, 0.093630895, -0.02379264, 0.115918085, 0.19431724, 0.041815966, -0.051647816, 0.15277039, -0.03721037, -0.085520886, 0.041766718, 0.104392216, 0.0559556, 0.0049254233), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.11176419, 0.112272635, 0.1367475, -0.010482275, -0.06719008, 0.064003386, -0.08132314, 0.015465676, 0.052741583, 0.06779717, 0.038533892, -0.16428822, 0.040990274, 0.002559234, 0.097567044, -0.058192518), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.17228632, 0.008296625, 0.009418271, 0.037103783, -0.0601486, 0.04531715, 0.19613501, 0.112170085, -0.02256726, -0.093685195, -0.1341531, -0.038480807, 0.109840475, 0.062418167, 0.15140085, 0.050787117), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.15433665, 0.2104034, 0.12395812, 0.13799714, 0.14945604, 0.67457545, 0.27575177, -0.047493283, 0.24992993, -0.5305435, 0.0131732905, -0.36911693, 0.14442082, -0.18583177, -0.2861722, 0.19419897), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.040242445, -0.13234852, 0.10056324, 0.055854917, 0.07447713, -0.023067042, 0.00021051937, -0.0495407, -0.22037992, 0.68047297, 0.05774606, -0.012461005, 0.104557075, 0.04832623, 0.010292581, -0.050617047), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.060079176, 0.086553656, 0.0060872175, -0.012576339, 0.025149338, -0.07379716, -0.18048704, -0.007130346, 0.007826557, -0.095655076, -0.0032888134, 0.21027069, -0.09868755, -0.1180311, 0.0081250835, -0.05078016), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.19124818, -0.05949092, -0.36762074, -0.08203597, -0.10276991, 0.111005515, -0.2845309, 0.113985784, 0.07206471, -0.026585411, 0.20032002, 0.5691625, -0.0460136, 0.03874166, 0.09858682, -0.15913802), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.00397842, -0.014763085, 0.080231026, -0.09142265, 0.03637215, 0.064106315, -0.030963007, 0.0557953, 0.04173885, -0.024534896, -0.2092259, 0.06913638, 0.08103145, -0.0033994897, -0.10903093, 0.062850125), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.01206918, 0.024855271, -0.051995132, 0.013999821, -0.021517826, 0.06216198, -0.050853133, -0.064136736, -0.047408275, -0.07858566, 0.074464396, -0.038218755, -0.13216262, 0.008905726, 0.10333, 0.03049554), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.027152343, -0.069046065, -0.013017797, 0.0763, -0.08611993, -0.020867927, 0.012807627, -0.11971997, 0.025972975, 0.095127404, -0.070044935, -0.21399231, -0.22536097, -0.028828809, 0.123399965, -0.15967365), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.038314234, -0.014114242, 0.012115026, 0.05505015, 0.11785298, -0.08772618, 0.034408223, 0.09134674, -0.04727011, 0.020709611, -0.01780165, -0.14374214, -0.30412516, -0.011123043, -0.024216317, -0.007538433), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.17673545, 0.077738725, 0.056153737, 0.028693894, 0.05688375, 0.021928595, 0.014585902, 0.019364892, 0.029056642, -0.2072201, -0.17548367, 0.085471265, 0.16439342, -0.0052957633, 0.22321554, -0.19246858), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.1914782, -0.15620962, -0.16686897, -0.04141303, 0.07696967, -0.013115313, -0.057627093, -0.13849305, 0.08699377, -0.07339016, -0.053074118, -0.059418138, 0.19988623, -0.23852244, -0.12574267, -0.29139704), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.017691063, 0.18901291, 0.16250716, -0.11039392, 0.056900974, 0.036662772, -0.13399602, -0.11378214, -0.10924602, 0.2130181, -0.042094063, -0.012445028, 0.013168919, 0.119448364, -0.014406005, 0.0054324497), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.11552786, 0.090796515, -0.11559005, -0.035706047, -0.044022456, -0.027642358, 0.08824298, 0.035067793, 0.18125483, -0.15502097, 0.094219126, 0.07493505, 0.022493582, 0.038250685, -0.076567575, -0.059311453), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.08612596, 0.016376335, -0.0023271537, 0.32511148, 0.03789289, 0.13106889, 0.22370385, 0.21145949, 0.1844514, -0.0766592, 0.093758754, 0.13821359, -0.062405586, 0.0028724174, -0.13588348, 0.00024406122), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.08991004, 0.074423954, -0.020964831, -0.070288494, -0.1192369, -0.015506713, -0.28136373, 0.042911243, 0.08215164, 0.11065419, -0.006201638, 0.057742044, 0.0014476188, -0.01443158, 0.22631277, -0.06787264), target2);\n\n\tconv2d_1_tf[gxy] = target1;\n\tconv2d_1_tf1[gxy] = target2;\n}\n\n//!PASS 3\n//!DESC Conv-4x3x3x16\n//!IN conv2d_1_tf, conv2d_1_tf1\n//!OUT conv2d_2_tf, conv2d_2_tf1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_1_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_1_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_1_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_1_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.079253934, 0.001511763, 0.100159355, 0.01585197 };\n\ttarget1 = MulAdd(a1, MF4x4(0.14315613, -0.031299837, -0.011195234, 0.0073360316, 0.07264984, -0.110979274, 0.06560588, -0.040463638, 0.28964168, -0.05644335, -0.060729366, -0.15811591, 0.028339373, 0.027486937, 0.0360574, 0.05856459), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.16211128, 0.20672597, -0.30374205, -0.056202736, -0.10893948, 0.053066984, -0.18297112, 0.028844962, 0.22754766, -0.07141921, 0.07142953, -0.1357581, 0.008053467, 0.04668908, 0.17258649, 0.22506891), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.07014762, 0.032112304, 0.028849715, 0.09427007, 0.008323501, -0.085777245, 0.083501115, -0.16150802, 0.24127382, -0.1305689, -0.027557204, -0.15057805, 0.09748757, 0.08182083, -0.107643455, 0.020552907), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.04630706, -0.056070503, 0.058440026, -0.005662525, 0.08736355, 0.08821088, -0.049539115, 0.08171937, 0.28466523, -0.025859421, -0.0026971614, -0.15181617, -0.022231927, 0.3566104, -0.024887348, 0.12051598), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.20976813, -0.23778942, 0.28854275, -0.27583683, -0.27604774, -0.15861328, 0.09581984, 0.06572128, 0.092306405, -0.06962751, -0.042226445, 0.035234913, 0.084891975, -0.03846841, -0.1473667, 0.2810354), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.028011162, 0.08945262, 0.15859836, 0.18426442, 0.10649845, -0.0918649, -0.12257575, -0.00914911, 0.23701023, -0.030067213, -0.01938559, -0.11026175, -0.5953985, 0.28875506, -0.035278864, -0.05043055), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.14445779, -0.06907616, 0.13078876, -0.0089114, -0.110637166, -0.123719245, -0.094949, 0.046267383, 0.4727523, 0.0073195575, -0.014788787, -0.14922102, -0.021974785, -0.10706751, 0.00049029186, 0.09215345), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.20936993, -0.22377276, -0.07697398, 0.039161056, 0.044213686, 0.037542075, -0.06600642, 0.017124292, 0.3406197, 0.011907687, 0.019732054, -0.22745137, -0.22178015, 0.49051985, -0.03707166, 0.14849792), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.07833466, 0.10888627, 0.16015877, -0.049263358, 0.29002127, -0.010949114, 0.013081097, -0.071674205, 0.3532135, 0.013165473, -0.05282189, -0.16688257, 0.009552089, -0.2740816, 0.04927233, -0.37047002), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.23682123, -0.027914839, 0.02372468, -0.07127212, 0.053436097, 0.057737537, -0.008556659, -0.025973454, 0.06468388, 0.18805866, -0.08180048, 0.058999106, -0.3058321, -0.06642967, -0.092997625, 0.10527466), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.1353085, -0.016593851, 0.21518163, -0.10272456, 0.14382689, 0.05056661, -0.27799338, 0.11351653, 0.05838342, 0.28104934, -0.03777824, 0.003435516, 0.057915565, -0.17574134, -0.24437475, 0.13420977), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.13400255, -0.056437124, 0.11310834, 0.040429913, 0.098928474, -0.020769242, -0.079605736, 0.0494632, 0.0660877, 0.098982334, -0.055884495, -0.046533633, 0.17815505, 0.027310565, -0.24176653, -0.025550256), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.03637618, -0.012618673, 0.11865397, 0.19804053, -0.03522831, 0.24310908, -0.056454524, -0.44885796, 0.02212509, -0.20253624, 0.038810212, -0.17396528, 0.08970355, 0.005103078, 0.061075203, 0.44292897), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.25074747, -0.0015575301, -0.685015, 0.07345307, -0.08419402, 0.06640714, 0.43799296, -0.17571151, 0.0049855476, 0.09024738, 0.055744022, 0.018739637, 0.34734032, 0.114896655, 0.0404696, -0.11327049), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.12284062, -0.31131, -0.14712588, -0.18645866, 0.17581487, 0.1357234, 0.09913364, 0.005298711, -0.056155153, 0.042429443, 0.039454732, -0.04111384, 0.2623163, 0.09701166, 0.022825675, 0.050480727), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.058734808, 0.038528245, -0.042670116, -0.15190329, -0.028179986, -0.05362995, 0.017090468, -0.24449602, -0.08240927, -0.033122182, 0.009938243, -0.0052937623, 0.2171439, 0.06879817, -0.10361997, 0.018995138), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.027555468, 0.016337285, 0.19074728, 0.26690376, -0.088713005, -0.0021182299, -0.23062791, -0.32101163, -0.0040022335, 0.16835448, 0.05424022, -0.02156396, 0.24163729, 0.10243619, -0.04331782, -0.014350939), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.13836963, 0.053369813, 0.036432605, 0.062288612, -0.06264361, -0.049093347, -0.0315955, -0.11237456, -0.064744405, -0.0151798045, 0.044210885, 0.010166375, -0.038355727, -0.05203739, -0.075036794, 0.1664177), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.08583114, 0.08268218, -0.05771351, 0.10195048, -0.10128163, 0.10874855, -0.02580701, 0.028834302, 0.1950179, -0.0130183315, 0.0092119705, -0.060479227, 0.117747106, 0.061403573, -0.0028475628, -0.032362986), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.05310153, -0.061091065, 0.19438389, -0.10475873, 0.00045120303, -0.24876194, 0.017168125, -0.050173752, 0.012073283, 0.035660096, -0.017562328, -0.110271364, -0.015546384, 0.17965329, 0.10068208, -0.014481325), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.085558474, -0.0007109211, 0.20868625, 0.150163, -0.19283043, 0.025976779, 0.08384698, 0.031011146, 0.17268184, 0.008871077, -0.04097794, -0.12868725, 0.01336166, -0.038823843, 0.1703644, -0.067780636), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.06480841, -0.44256654, -0.19949587, -0.030677497, -0.27930573, -0.041867044, -0.15648738, 0.11573067, 0.28664824, 0.009770385, -0.058617204, -0.06607673, -0.038160402, 0.009497089, 0.03303058, -0.079379834), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.17752203, 0.10979527, -0.058749028, -0.30194217, 0.30484176, -0.20980492, -0.05234784, -0.2590473, 0.23003183, 0.21903595, -0.024891363, -0.14337292, -0.02971356, -0.29613075, -0.045642294, 0.23826689), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.018211683, -0.005840598, -0.19021381, -0.096696235, 0.39998052, -0.34746838, -0.039627917, 0.087701194, 0.15526368, -0.008095372, -0.044220537, -0.08634815, -0.121496454, -0.06792033, -0.14959472, 0.078917444), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.33109078, 0.012287281, -0.034155898, -0.04840956, 0.068748444, 0.006142039, 0.06598935, 0.024775596, 0.22379673, 0.056089353, -0.006119644, -0.018509025, 0.10084137, 0.15556572, -0.041211523, -0.21550669), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.058160853, 0.08899222, -0.17401625, -0.1449813, -0.015872562, -0.03780256, 0.15702572, 0.34013954, 0.1580772, 0.074823864, 0.035488904, -0.01627819, -0.15551315, -0.3638866, -0.09833458, 0.15037175), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.12707977, -0.19947061, -0.11524648, 0.09216174, -0.07161296, 0.05675567, 0.06843247, 0.2803306, 0.25222927, -0.044076066, 0.053775772, -0.09939824, 0.16903089, 0.11475717, -0.07015584, -0.036021322), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.12290332, -0.05469477, 0.02696626, 0.051133692, -0.05541504, -0.2811521, -0.13008943, 0.031793896, -0.32529324, -0.01663752, -0.0658181, 0.17300756, 0.22281154, -0.11001508, 0.09578194, -0.055437982), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.083753526, -0.048933715, -0.13912897, 0.10929772, -0.1789828, -0.1586524, -0.10964165, -0.08210391, -0.11568187, -0.04813496, -0.2417861, 0.24446528, 0.13570863, -0.26869404, 0.3013413, 0.11678686), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.21105368, 0.15749952, -0.18983693, -0.023642758, -0.1633653, 0.10107988, 0.052329395, -0.080253236, 0.15375629, -0.045091413, 0.05070866, 0.12416106, 0.16600485, -0.10412354, 0.061849747, -0.084013924), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.03863923, 0.03690167, -0.053106382, -0.07523278, -0.04214836, 0.53898096, 0.15308584, 0.22835171, -0.24771535, 0.1402687, 0.1000896, -0.08719167, 0.0886567, 0.15255097, 0.14695966, -0.06659865), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.110334344, -0.12696493, 0.24256139, 0.02536166, 0.08322421, 0.022147777, -0.35030407, 0.13734557, 0.053133942, 0.43650532, -0.30170345, 0.08751837, 0.012917502, 0.27496436, 0.11422729, 0.15508565), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.16684863, 0.26743406, 0.15951683, 0.033597723, -0.044719726, 0.1127182, 0.007923161, 0.06415458, -0.07269362, -0.07828715, 0.09216738, 0.11528897, -0.13371283, -0.124177165, 0.14804523, 0.14156726), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.041141883, 0.023617791, 0.11484465, 0.13131519, -0.14753738, 0.17067687, -0.017538434, 0.24042644, -0.058103643, 0.3143255, 0.02476919, -0.0024666793, -0.26759955, -0.06099211, 0.006415725, 0.10394301), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.04198037, 0.03277123, -0.25069895, -0.21043587, -0.27417016, 0.08047665, 0.29731026, 0.07629813, -0.15695353, -0.14299184, 0.026618432, 0.13265325, 0.07727133, 0.12872085, 0.13887435, 0.1347057), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.039232086, 0.117847264, -0.071643315, -0.040677182, -0.029160816, -0.06968689, 0.12880929, 0.037579957, -0.036671028, -0.022678757, -0.069731854, 0.10590314, 0.028034678, -0.015759282, 0.047180142, -0.16366881), target1);\n\t\n\tMF4 target2 = { 0.019374544, -0.050425697, -0.005817216, -0.0059976326 };\n\ttarget2 = MulAdd(a1, MF4x4(0.024126908, 0.01737047, 0.04563732, 0.08303721, -0.21339902, 0.00025652428, -0.09666459, -0.07654246, -0.01201168, 0.14373912, 0.22268519, 0.049181588, -0.0751725, 0.006847365, -0.025867194, 0.19233267), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.25251204, -0.34213448, -0.0022676045, 0.29270738, 0.08876456, 0.067294724, 0.2865476, -0.009144941, -0.074606106, 0.14566834, 0.14162645, 0.10980335, -0.7958991, -0.15410729, 0.038512416, -0.17033637), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.115404196, -0.11004134, 0.13174473, -0.0006875606, 0.0051814034, 0.058522645, -0.0795437, 0.0011465811, -0.019500278, 0.12752724, 0.16985136, -0.054932587, 0.16734739, -0.04686017, -0.072241016, 0.054562975), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.07528159, -0.113516726, 0.2081102, 0.009942251, 0.08256535, 0.050133914, 0.012745932, 0.13902397, 0.009369715, 0.083261885, 0.17366019, 0.069754004, 0.030654406, -0.045856245, -0.055254143, 0.16265897), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.14366727, 0.24948351, 0.12160293, 0.10929859, -0.116071545, -0.11725494, -0.13926856, -0.026759636, 0.12723772, 0.1938045, -0.02745115, -0.0644584, -0.23854719, 0.059308372, -0.446269, -0.06978486), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.21108554, -0.1717225, 0.066633105, 0.15418948, -0.08902029, 0.047925282, 0.15817304, -0.080941506, 0.007364865, 0.10506626, 0.20205018, -0.078695655, 0.14004812, -0.3195092, 0.19157887, -0.12697977), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.08145032, -0.14292753, 0.066565305, -0.061348185, -0.08738346, 0.011608093, -0.0024047727, -0.024741996, -0.11547277, 0.10013328, 0.21730538, 0.05598899, -0.17741105, 0.075944185, 0.027434295, -0.2550598), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.026223006, 0.11214396, -0.133987, 0.1303522, 9.32011e-05, -0.14755996, -0.14002979, -0.039624512, 0.045111652, 0.17618611, 0.17764348, 0.104528464, 0.20592515, 0.07240335, -0.27604735, 0.038880046), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.17734227, -0.002935363, 0.07505682, -0.029969893, -0.024536638, 0.11236127, 0.119374484, 0.08002781, -0.003541722, 0.1428466, 0.1729824, 0.055412393, -0.04790376, 0.18020035, 0.05376964, -0.1520942), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.11352182, -0.019249126, 0.10782615, 0.03079928, 0.020381734, -0.08998433, -0.09211494, -0.054406203, 0.1828849, -0.07692097, 0.004733955, -0.026685018, -0.08044814, -0.071961075, 0.029184176, -0.22562811), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.34489468, -0.07447471, 0.026422959, 0.33550653, 0.22130035, 0.059709545, -0.07646962, -0.18386386, 0.33911958, -0.07534871, 0.040870134, 0.051136248, 0.32681262, 0.20612194, -0.1609581, -0.70460784), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.27617922, 0.09758603, 0.05103887, -0.09281693, -0.007143339, 0.006635712, -0.055270564, -0.022629099, -0.13023081, -0.013819027, -0.038695697, 0.047280338, -0.13964762, 0.09852924, -0.10056262, -0.084967695), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.1370323, 0.030904075, -0.033860117, 0.08926374, -0.14616281, -0.29926816, -0.23738252, -0.21374625, -0.14039646, 0.11503669, 0.082101606, -0.061717354, 0.021357644, -0.10676707, 0.03214661, 0.029967157), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.29881296, -0.22195289, -0.3512607, -0.2277441, 0.033705913, -0.23267402, -0.119738854, -0.18925253, 0.068823405, -0.15160555, 0.2585695, 0.10484223, -0.012574211, 0.38808516, 0.2599094, -0.4991424), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.07474731, 0.22742131, 0.014462262, 0.08409484, 0.09579643, -0.0519534, 0.0007793075, -0.044820115, -0.010144471, -0.040506937, 0.0056340825, 0.057767954, -0.14988829, -0.05099549, 0.007204364, -0.07094934), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.05736621, 0.12072876, -0.02037183, 0.05012334, -0.1173538, -0.10062993, -0.0033958228, 0.0142556345, -0.011005385, -0.0066177617, -0.058390465, 0.048240293, 0.09835053, 0.17917523, -0.06466951, 0.017518612), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.1413101, -0.30268928, -0.17851736, -0.10797371, -0.01964573, 0.14356858, -0.06759965, 0.17416531, 0.13905385, -0.017476829, 0.06541924, -0.044690568, -0.080723755, -0.08610206, 0.095347285, -0.09233214), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.07254187, -0.091158785, 0.018472971, 0.03514051, 0.018888336, 0.107934274, -0.018830854, 0.10007211, -0.053966418, -0.035646267, -0.031214178, -0.05980228, -0.13045661, -0.011743741, -0.03325275, 0.071065165), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.037697386, 0.054388218, -0.010934479, 0.2266702, 0.049999133, 0.017648092, -0.044225454, 0.21611899, -0.03805845, 0.054236397, -0.018563407, -0.060588073, -0.031215845, 0.075081706, 0.07333242, -0.09651128), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.32236508, -0.0026381002, -0.30787975, 0.2963127, -0.13276175, 0.1058753, -0.12744896, 0.09749292, -0.02683677, -0.0041124597, 0.006103888, -0.09997201, 0.092101686, -0.08375288, 0.09641652, 0.053333007), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.027999232, -0.060004722, -0.009207874, -0.0952888, -0.038418446, -0.13316345, 0.099323496, 0.048450433, 0.0443969, 0.056023613, 0.1156147, 0.018980766, 0.040020484, 0.07555044, 0.0039174426, -0.044098593), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.101029314, 0.33333415, -0.22052327, -0.035329416, 0.17229559, 0.12564908, -0.07879576, -0.09248896, -0.03239869, 0.022611454, 0.05610472, -0.02181683, -0.06347532, -0.077292696, 0.02005389, -0.078899406), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.028139396, -0.04349171, -0.019393284, 0.42110333, 0.37065667, 0.5282552, 0.43816927, 0.19155908, 0.051832534, 0.02050813, 0.030795977, 0.023960136, -0.27617985, 0.19165507, -0.005492024, -0.13349663), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(5.0700226e-05, 0.21293098, -0.39902148, -0.058406413, -0.06766975, 0.1129277, -0.012398328, 0.025031524, 0.03519656, 0.06486415, 0.15710293, 0.014098051, 0.057754945, 0.116186336, -0.14429826, 0.051864166), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.012280755, 0.043744788, -0.06420968, 0.012739398, 0.043073926, 0.031230433, 0.00036492705, -0.039208546, -0.09329152, 0.06928111, 0.11622664, -0.009106846, 0.111528054, -0.020315262, 0.036427997, 0.15881014), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.066635534, 0.13901882, 0.0885122, 0.1030835, 0.08539728, -0.015466482, 0.0706688, -0.1611047, 0.02179479, -0.00048529037, 0.08708685, -0.00894464, -0.13046473, -0.21456988, -0.20666413, 0.049039323), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.100800075, -0.03772198, -0.095183305, -0.15150243, -0.08743059, -0.24299338, -0.019315414, -0.1574107, -0.013610722, 0.064871654, 0.058439128, 0.008972897, 0.10339555, -0.027356634, 0.07666196, 0.048524544), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.046309173, -0.03858991, -0.13260359, 0.0017626585, 0.1453724, 0.1402359, -0.079240486, 0.13017912, 0.0629575, -0.15448172, -0.1856442, -0.044694453, -0.17226808, -0.08065212, -0.008038736, -0.15994963), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.18369722, 0.03849556, -0.035185467, -0.20205377, 0.03879293, 0.02712859, -0.051278092, 0.14862835, 0.10261192, 0.18085574, -0.025982017, -0.029160796, 0.5301373, 0.09614058, 0.35518438, -0.014906588), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.31154996, -0.06868871, -0.012681131, 0.028093819, -0.37321633, -0.14738804, 0.06060776, 0.050054748, 0.013779029, -0.020390315, -0.12487434, -0.0029474346, -0.274524, -0.09142805, 0.0132142445, 0.1577639), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.02177336, -0.020817943, -0.0111796055, -0.0046033757, 0.45033064, 0.3573757, 0.55279994, 0.602122, -0.05536106, -0.33642644, -0.1851379, -0.052192084, 0.03683446, 0.13613251, 0.20098919, -0.090587094), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.1520822, 0.37173554, -0.061298244, 0.0019386727, 0.44656134, 0.13406622, 0.39018136, 0.5722051, -0.13074401, 0.012778576, -0.2837446, 0.16098566, 0.100189455, -0.40386122, 0.17464107, -0.17862785), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.01217905, -0.24295084, 0.08192982, -0.14160301, -0.05936872, -0.003312342, -0.07542139, 0.13488367, -0.21560493, -0.14342502, -0.19195864, -0.09448305, -0.1038431, -0.075766176, 0.03226791, 0.06455397), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.076916575, -0.10891301, 0.032635316, 0.03848802, 0.15750243, 0.48169684, 0.5410635, 0.017279895, 0.012730932, -0.0059071835, 0.030766146, -0.0225503, -0.030178519, -0.05866621, 0.033593398, -0.00033098995), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.10757409, 0.2644168, -0.025696747, -0.0077012815, 0.31728277, 0.29771668, 0.2443613, -0.047722775, -0.083712585, -0.12742844, -0.3138776, -0.059888497, 0.12291351, -0.14435866, 0.051414594, -0.11889901), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.063888945, 0.002844068, -0.06129518, 0.03381495, 0.10176077, -0.11625004, -0.10745763, -0.20636752, -0.03820934, 0.01926402, -0.20310643, 0.09767577, -0.00776684, 0.13453315, -0.036967937, 0.09780335), target2);\n\n\tconv2d_2_tf[gxy] = target1;\n\tconv2d_2_tf1[gxy] = target2;\n}\n\n//!PASS 4\n//!DESC Conv-4x3x3x16\n//!IN conv2d_2_tf, conv2d_2_tf1\n//!OUT conv2d_3_tf, conv2d_3_tf1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_2_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_2_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_2_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_2_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.052450567, 0.10404023, -0.059578225, 0.009724121 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.028328063, 0.038015317, 0.14893384, 0.10103896, 0.028176744, -0.02067147, -0.10970998, 0.015726602, -0.07402682, -0.075281784, -0.012586929, 0.053476278, 0.14823362, 0.20312984, 0.24213, 0.039118115), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.009731573, -0.019011121, 0.016360838, -0.0073153526, 0.14594506, -0.0427664, -0.094225354, -0.013891855, -0.037061375, 0.024959227, -0.12289382, -0.21792257, -0.33579424, 0.052678566, 0.04346115, 0.07943186), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.0022269129, 0.013298362, -0.045071404, -0.007918287, 0.010860651, -0.073057, -0.0042394064, 0.03340809, 0.04938919, -0.024218693, -0.008147567, 0.08848061, -0.06840333, 0.10077341, -0.272586, -0.06542769), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.15929016, -0.1415167, 0.057084452, 0.06830724, 0.0046992986, 0.068573505, 0.22142749, -0.18493174, -0.1006019, -0.11373546, 0.17520057, -0.12888812, 0.05176946, -0.14703397, -0.20610721, 0.16611591), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.0069309813, 0.22358349, -0.18569049, 0.13456121, -0.21528137, 0.04618922, -0.47261322, -0.09682613, 0.5402922, 0.15818685, 0.05288464, -0.09949312, 0.21833964, 0.06652228, -0.2694682, 0.58216536), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.040808782, 0.023110595, 0.12678777, -0.09057271, 0.03159572, 0.044006016, -0.10090222, 0.09940838, -0.08454473, -0.118349984, -0.053009644, 0.24352531, -0.103818566, 0.12536442, -0.17832974, 0.25161982), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.026323501, -0.14911288, -0.0073903934, 0.06902844, 0.07188603, -0.05006621, 0.06539817, -0.048083752, -0.08032579, -0.07449341, -0.015944218, 0.032426495, 0.069349505, -0.07441237, 0.055614363, 0.065174624), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.046432327, -0.051616143, 0.017791865, -0.047294978, 0.025944458, -0.0020909954, 0.083794415, -0.055740435, -0.3720184, 0.06654654, 0.1944378, 0.07806658, 0.00870193, 0.005404396, -0.059417505, -0.06270168), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.011699918, -0.03260685, 0.016413182, -0.02199741, -0.042898953, -0.018734168, -0.12387174, 0.06405199, -0.050764065, 0.07050078, 0.006969675, 0.05508108, -0.079687595, 0.12154926, 0.071177684, 0.046873443), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.2158498, 0.03612371, -0.05268691, -0.065594874, 0.06997431, -0.07327132, -0.03323361, -0.23306306, -0.00011140713, -0.1891967, -0.017328357, 0.15796778, -0.061359044, 0.008202449, -0.031317197, -0.020873578), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.022816254, -0.014594548, 0.0064240466, 0.07976367, -0.0070318123, -0.07651652, -0.111756384, -0.2788498, 0.16634429, -0.1583179, -0.10245271, 0.10480152, 0.345051, -0.07809675, 0.046080578, -0.32139245), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.020630263, 0.032152038, 0.0019161701, 0.05435833, 0.078139454, -0.10090956, 0.14244889, 0.017286595, 0.0039871824, -0.026395446, 0.14158171, 0.0010112645, 0.17055373, -0.08093189, -0.049234428, -0.33473247), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.10982378, 0.029386539, -0.15483, -0.04345961, -0.16869037, -0.30862433, 0.060743757, -0.032285906, 0.017884266, -0.09846199, -0.090971105, -0.1693697, -0.063690096, -0.08489718, 0.18247683, -0.19921213), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.1898742, 0.22187345, -0.28495324, -0.42578775, 0.12833633, -0.2251503, -0.025917793, 0.6011678, -0.36586264, 0.23302059, -0.072634645, 0.0064221635, 0.56792957, -0.4684677, 0.05015159, 0.30121225), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.10837159, 0.14743729, -0.03639783, -0.34797576, -0.18306817, -0.07957882, -0.111433275, 0.30104128, -0.102763996, -0.01020151, 0.016333267, -0.012390819, 0.11835027, -0.12597388, -0.006298998, 0.0513052), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.23662986, 0.23325302, -0.046104953, 0.36488137, 0.06990537, -0.06887873, -0.012611426, -0.02618366, -0.05296669, 0.195254, 0.016366778, 0.01693462, -0.08488424, -0.24656284, -0.035283253, -0.15318634), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.061704446, -0.26930714, -0.24598889, 0.27657726, 0.05046488, -0.341884, 0.10704377, -0.15971762, 0.072999336, -0.2005826, -0.05874223, -0.053938035, -0.08284583, -0.22792995, 0.1027033, -0.012932447), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.029079054, 0.14774945, 0.026151389, 0.12380946, 0.08926635, -0.08387116, -0.17018612, -0.09304499, 0.086990625, -0.27579373, 0.003823722, -0.024723161, 0.08762848, -0.10080674, -0.012214886, -0.30239874), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.25756493, 0.2537789, 0.21723714, 0.0017929028, -0.014724892, 0.086692676, 0.11934202, -0.025869334, 0.008618976, -0.0046638376, -0.06863114, -0.07598151, -0.17309345, 0.009138105, -0.099874064, 0.07377463), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.39971545, 0.16774859, 0.13102596, 0.30735064, -0.060374007, -0.036933452, 0.14408773, 0.06479284, 0.03806265, 0.045560133, 0.043136165, -0.019244662, 0.17573427, -0.11398941, -0.0751098, 0.041702736), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.074492976, 0.18349282, -0.009050458, 0.0869807, -0.23123743, -0.015426683, -0.14346392, 0.005445149, -0.05322614, 0.10287576, 0.16083732, -0.09557319, -0.13891783, -0.13752605, -0.023572346, 0.13608918), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.31140685, 0.40130782, 0.07704675, 0.27509958, 0.09711739, -0.18293281, -0.14500841, -0.15334702, 0.098314695, 0.22749798, 0.006017282, -0.013669673, 0.07147038, 0.022289474, -0.036797456, -0.0013958871), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.0547557, -0.03036202, 0.65113044, 0.10668893, 0.304707, -0.1456157, 0.27668485, 0.2279428, -0.42439902, -0.0073047588, 0.045635667, 0.271637, -0.19595222, -0.28107607, 0.3905438, -0.29898256), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.076843366, 0.037181348, 0.08652873, 0.1756985, 0.03728033, -0.22783624, 0.16810594, -0.022009399, 0.16058537, 0.24559903, 0.05266939, -0.13929726, 0.15964857, 0.0013167082, 0.015017631, 0.101646364), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.3022452, 0.20052882, 0.13433233, 0.04250016, -0.15248592, 0.014216527, -0.23489903, 0.13919333, 0.22891816, -0.0053335144, -0.05567782, -0.12769286, -0.05337762, -0.11429989, -0.00882089, -0.030790573), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.11763547, 0.1073185, 0.15810886, 0.013149736, -0.028268294, -0.24712053, 0.08592036, 0.075742744, 0.19626461, -0.10880887, -0.22599675, -0.37207767, -0.032548983, -0.011045266, -0.035218395, 0.099996395), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.05631665, 0.029538663, 0.043909863, 0.13720988, 0.10980592, -0.047748722, 0.080308706, -0.06828442, 0.1144396, -0.12510885, -0.067976676, 0.030742755, 0.07134681, -0.06652312, -0.0642328, -0.034490924), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.019588284, -0.15197967, -0.16797094, -0.026324488, 0.014429439, -0.028491383, 0.059453625, 0.23443304, 0.02504347, 0.08872467, 0.032782357, -0.085310735, 0.013040259, -0.09837991, 0.073533125, -0.03544458), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.02198588, -0.09614766, 0.024655875, 0.025384603, 0.012162857, 0.065071434, 0.018112874, 0.19828922, -0.33289856, 0.011323505, 0.13696423, 0.31772846, -0.06587399, -0.05569957, -0.16469179, -0.22545892), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.009093827, 0.086783886, 0.060070645, 0.049957857, 0.041628215, 0.082412794, 0.117729135, -0.178277, 0.08326062, -0.07120824, 0.1788718, 0.050748438, -0.08952197, -0.14609487, 0.05515471, 0.14784457), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.10823147, -0.05108019, 0.092807196, -0.13899301, 0.19123949, -0.044189975, 0.0030145745, 0.08935499, -0.10338727, 0.01996205, 0.15671325, -0.08229972, 0.05603653, 0.043324884, 0.13562247, -0.11487494), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.18872134, -0.07302765, 0.030137405, 0.30928415, -0.07689583, 0.045998566, 0.45554903, -0.1653404, 0.14705873, -0.10649596, 0.46833125, 0.17608039, -0.43967086, 0.056812476, -0.17908083, -0.40455228), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.08093384, 0.032636635, 0.124594346, 0.13655491, 0.16780408, -1.4671803e-05, 0.13044862, -0.397665, -0.013273644, 0.08253894, 0.16302188, -0.052874118, 0.04073075, -0.18063635, -0.00838661, -0.31084144), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.06804371, -0.14755388, -0.12055216, -0.00437858, -0.044694718, 0.22744909, 0.012434794, 0.06245207, 0.00560859, -0.15815294, -0.19711316, 0.07711764, 0.03078979, -0.09560189, 0.10509056, 0.010651465), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.026342146, 0.13919179, -0.0030414977, 0.06607403, 0.071292974, 0.065464914, -0.027091878, 0.10620255, -0.052090824, 0.06840278, -0.08457357, 0.08867469, 0.2976581, -0.6702739, -0.15472057, -0.3066263), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.00072869845, 0.046573937, -0.08363707, 0.07867379, 0.038065, 0.01228845, 0.031746328, -0.024448024, -0.065555945, 0.1220454, 0.032151606, -0.022336006, -0.0010816467, -0.026455112, 0.112422734, -0.10285581), target1);\n\t\n\tMF4 target2 = { 0.022815697, 0.012251767, 0.045309987, -0.0879881 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.037506457, -0.06573841, -0.087879084, -0.06359248, -0.0017873603, -0.009097742, 0.010108622, 0.026364084, 0.012306545, 0.12607974, -0.088268295, 0.14034338, 0.24951904, 0.0983314, 0.03635719, -0.047059253), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.05570699, 0.11044774, 0.04827364, -0.03185735, -0.032498132, -0.062959515, 0.2933071, 0.22244357, 0.061075654, 0.0064111133, 0.011452209, 0.11576761, 0.13969804, 0.20502032, 0.1114938, 0.022496287), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.054194342, 0.000389916, -0.039589155, -0.018707246, -0.036095835, -0.06873059, -0.077109694, 0.028726012, -0.08820959, -0.109247595, -0.05745309, 0.043230128, 0.033671502, 0.16398554, 0.030398889, -0.17000203), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.09218165, -0.12813722, -0.040984686, -0.016605416, 0.054269493, 0.12971285, -0.013961638, -0.17803082, -0.014683587, 0.2502267, -0.14249405, -0.025687713, -0.097426265, -0.30111355, -0.21776466, 0.008809217), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.21033873, 0.15221386, 0.18138756, -0.08248389, -0.10091519, -0.06940753, -0.014009188, -0.3009861, -0.02452202, -0.08800422, -0.36376888, 0.18485394, 0.35076657, -0.13293292, 0.24624826, 0.39373755), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.014170062, -0.029623963, 0.057001226, 0.09269898, -0.14630881, -0.16557585, 0.06735037, -0.015008042, -0.27238864, 0.081130914, -0.07869508, 0.098087415, 0.11217335, 0.48223323, 0.18613088, -0.035602476), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.21623239, -0.1125095, -0.09964635, 0.101452544, 0.11877652, 0.13471957, -0.10402355, 0.0077938605, 0.030518647, 0.22309083, -0.2115206, 0.017967062, -0.042780407, 0.099759325, -0.10465051, -0.033807248), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.059608232, 0.06684556, 0.00039066386, 0.08542961, 0.097183906, -0.1868667, 0.07778909, -0.06172202, 0.0021662437, -0.05387577, -0.4077133, -0.028940776, 0.110816136, -0.04154161, 0.030078325, 0.072834246), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.01881586, -0.06384429, -0.054874837, -0.016731417, -0.06570834, -0.13579571, 0.0033891131, -0.059161015, -0.11559389, 0.02149361, -0.08791608, -0.008113861, 0.08313892, -0.07327947, -0.013473171, 0.13254371), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.11458958, -0.08827364, -0.025030116, 0.12626298, 0.0070429775, 0.0337767, 0.051719055, -0.09654129, -0.04867615, -0.03609001, -0.06522421, -0.044131942, -0.048825134, 0.10652733, -0.015310965, -0.07341175), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.05782829, 0.014247012, 0.12126171, 0.100055166, 0.24079333, -0.20155986, 0.1640186, -0.12158374, -0.153708, -0.24445893, -0.10536192, 0.12758626, -0.19430119, -0.019024884, -0.080120996, -0.29866305), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.017357074, 0.04390695, 0.12889594, 0.11451521, 0.03333342, -0.16417275, 0.10196121, 0.13059081, 0.09948873, 0.15007107, 0.22664218, 0.35449567, -0.089776486, 0.025239054, 0.12463201, -0.13109131), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.064875744, 0.40551752, 0.11903257, 0.14822967, 0.14993542, -0.12758526, 0.23159283, -0.06080246, -0.084577255, 0.14307548, -0.02186462, 0.05793564, -0.050965074, 0.23895216, -0.07796932, -0.1624384), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.15942748, 0.07191155, 0.42204422, 0.35219797, 0.23286703, -0.283381, -0.2749432, 0.25922084, 0.10494953, 0.14575887, -0.19649154, -0.14563714, -0.03709703, 0.023375817, -0.05610175, -0.32548484), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.04872624, -0.3592348, -0.027413938, 0.0836858, 0.046842758, -0.35193914, 0.06154142, 0.05559191, -0.22538327, -0.097689696, -0.21317257, -0.033945527, -0.23628096, -0.016477302, 0.027297588, -0.04105733), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.11543502, -0.043297376, 0.118703, 0.15013209, 0.03191795, 0.014122794, 0.05156918, 0.023102578, 0.0808462, -0.06445798, 0.15860644, -0.062393136, -0.018691704, -0.00032888897, 0.01196705, -0.025045555), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.08301664, 0.12298539, 0.20151077, 0.2993159, 0.16968682, -0.18196446, -0.13322797, -0.13693243, -0.0048389523, -0.057406515, 0.21409932, -0.060822334, -0.08554752, -0.19363636, -0.35241908, -0.32256603), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.0523748, 0.17082025, 0.08556144, 0.19181536, -0.2445756, -0.3616732, -0.01641404, -0.078599006, 0.23907976, 0.025989126, 0.07574993, -0.06859337, -0.06667767, -0.022847861, -0.037942342, -0.21112117), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.15098672, 0.024212115, -0.19068481, -0.22606348, -0.15221487, -0.032165635, -0.06244531, -0.043535717, -0.07398802, -0.06088507, -0.013834592, -0.10145823, 0.06901983, -0.0862135, -0.05545454, 0.15514566), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.044767097, -0.07583697, -0.17739761, -0.25538698, 0.0966659, -0.0013492911, -0.23315248, -0.21652249, -0.14381947, 0.017784966, -0.15960035, -0.13297895, 0.009810349, -0.041348267, 0.05443229, 0.17781278), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.0052824756, 0.087268956, -0.022167318, -0.09450279, 0.1254372, 0.075806946, 0.028893303, -0.09019378, 0.03488572, 0.046265777, 0.026162563, 0.003914548, -0.0632334, -0.19494742, -0.03602023, 0.113897055), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.11311528, 0.2616239, 0.12303548, 0.13427438, -0.26537886, 0.015112677, -0.03641703, -0.014114427, -0.023280613, 0.03626403, 0.12833157, 0.19168468, 0.2119137, -0.02374797, 0.117919676, 0.07794395), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.13746078, 0.25739196, 0.008431936, -0.053867325, -0.13228695, -0.20661803, 0.026474724, 0.3205188, -0.41819036, 0.42812085, 0.17249924, -0.15810613, 0.39602605, -0.10873597, 0.1457145, -0.060503867), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.03706167, -0.036211733, 0.06519942, -0.2123978, 0.019934088, 0.17494182, -0.017252771, -0.067341134, -0.15416612, -0.114118524, -0.00028491023, -0.08172238, -0.11722721, -0.2647645, 0.13316637, 0.13562322), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.11832847, 0.22822993, 0.020318847, 0.0734738, -0.025950216, -0.072782144, 0.11133989, 0.18845533, -0.004584898, -0.10486471, 0.054522812, -0.14136603, 0.01940983, -0.039433163, 0.008390286, 0.013686628), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.042335663, 0.0035399816, -0.1813205, -0.25639042, 0.1042524, 0.07707001, -0.04922454, 0.18140413, -0.22322963, 0.030809738, -0.11041754, -0.040288754, 0.09431559, -0.08017892, -0.18317147, -0.019331435), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.061776266, 0.0069793356, 0.019964112, -0.14504445, -0.00070097746, -0.027107855, 0.030182542, -0.05625612, -0.04958449, 0.123165295, 0.0013953283, 0.017912487, 0.031161329, -0.31798717, 0.018331604, 0.030411277), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.0530594, -0.07933117, 0.024755973, 0.004785411, 0.045512546, 0.12833083, 0.023195961, -0.018028054, 0.014223835, 0.102213494, 0.052169293, -0.020509718, 0.017905682, 0.021354724, -0.0410789, -0.066523656), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.017061293, -0.08770806, -0.04889939, 0.01825556, -0.03228951, -0.06838898, -0.09249373, 0.18103507, 0.087000825, 0.04175679, -0.09305919, -0.2792485, 0.03405797, 0.062147446, -0.04757652, -0.021603985), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.04115162, 0.02547615, 0.07033616, 0.09814065, 0.2597489, -0.0335038, 0.14097647, 0.047022782, 0.1374654, -0.27390274, 0.02080897, -0.15251215, -0.025431091, 0.08871465, -0.22243279, -0.07792812), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.061674852, -0.051326606, -0.04885301, 0.08548189, -0.07100394, 0.044875987, -0.19810183, -0.09841128, -0.06628199, -0.041564234, 0.1111919, -0.044448826, 0.06980301, 0.00046094303, -0.045978926, -0.20736355), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.18405268, -0.28115878, -0.33536536, 0.0753763, 0.028309148, 0.0014874876, 0.28369543, -0.2133985, 0.16520546, 0.29562506, 0.109781906, 0.028433772, -0.02691105, -0.39038795, -0.12942268, -0.080103286), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.05387814, -0.04672615, 0.046064686, 0.2791977, 0.11359623, -0.204098, -0.018091407, 0.13550591, 0.04216003, -0.1631328, -0.043013666, -0.045698896, 0.032403514, 0.010206319, -0.25789943, -0.36328712), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.11280466, 0.11671405, -0.02122692, 0.021664057, -0.07836575, 0.014747725, 0.030007286, -0.10128616, -0.13695373, -0.10353946, -0.043571353, 0.05922437, -0.11293257, 0.0828006, -0.07322761, -0.08197273), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.0010509897, -0.1674067, 0.08191839, 0.056608744, 0.061343428, 0.19574693, 0.05302967, -0.006813754, -0.016064182, 0.22949885, -0.06631832, 0.034382205, 0.12674272, 0.06583508, 0.19319807, 0.011400221), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.032175347, -0.021227444, -0.027698517, 0.067299634, 0.23929007, 0.20669897, 0.004856941, 0.0009404045, 0.04919408, 0.020296812, 0.012571405, -0.16185577, -0.012276781, 0.16609742, -0.15718406, -0.20344186), target2);\n\n\tconv2d_3_tf[gxy] = target1;\n\tconv2d_3_tf1[gxy] = target2;\n}\n\n//!PASS 5\n//!DESC Conv-4x3x3x16\n//!IN conv2d_3_tf, conv2d_3_tf1\n//!OUT conv2d_4_tf, conv2d_4_tf1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_3_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_3_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_3_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_3_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.08911729, -0.027969634, -0.010653148, -0.08001697 };\n\ttarget1 = MulAdd(a1, MF4x4(0.010501252, -0.046741538, -0.0017120431, -0.04840009, 0.20547974, 0.3366821, -0.10182207, 0.17451541, -0.03404171, -0.15138055, 0.16771653, -0.07168161, 0.102572344, 0.08266354, 0.20205829, 0.13429944), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.05584234, 0.06844309, 0.025430907, 0.124140054, 0.36385667, 0.12099467, -0.41671994, 0.085477844, 0.19748127, -0.21473993, 0.005037813, -0.3973761, 0.04669592, -0.100342326, -0.09403772, -0.034248166), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.17654696, 0.009085064, 0.028360577, 0.033909567, 0.09377573, 0.27896938, 0.103994116, 0.0008595595, 0.064523555, 0.040994007, -0.06337235, 0.05662917, 0.0037455747, 0.017608117, -0.14610702, 1.2175746e-05), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.04631749, -0.14251712, -0.16420849, -0.16259338, 0.46187812, 0.17576592, 0.00049142196, 0.029193122, -0.003925961, -0.11218227, 0.007026237, -0.20583045, -0.0010964901, 0.19355829, 0.2221649, 0.1187224), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.041567978, -0.31510913, 0.01618704, 0.04979329, 0.101294376, 0.16356954, 0.21361789, 0.20735294, 0.1900854, -0.4151726, -0.30471593, -0.59483325, 0.033624128, 0.11495109, -0.15194787, 0.4920959), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.18910064, -0.06516878, -0.20508374, -0.063928686, 0.7289614, 0.26674315, 0.2929481, 0.4026098, -0.033123735, -0.090371035, -0.029094126, -0.15197921, -0.08723726, -0.060160585, -0.07908409, -0.08826931), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.08321312, -0.09749648, -0.08783197, -0.23072585, 0.24343425, 0.10888949, 0.17419606, 0.04136083, 0.0066000987, -0.06112787, -0.12176007, -0.20907228, -0.0008522778, -0.054704696, -0.07197735, -0.0877179), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.40559706, -0.3801705, 0.05970925, -0.6157092, 0.28944594, 0.1252121, 0.403247, -0.122819394, -0.096336536, -0.2324694, 0.05980106, -0.19970767, -0.16646989, -0.10164633, -0.09282806, -0.08897996), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.14336498, -0.12967408, -0.016268672, -0.021431219, -0.0850116, 0.37105832, -0.04093888, 0.08540873, 0.035717323, -0.07282701, -0.009123291, -0.0036565473, -0.02508944, -0.087611906, 0.03604423, -0.00089080486), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.1373875, 0.05283984, -0.11992707, 0.102294855, 0.3305128, 0.044920854, 0.31622922, -0.04711731, 0.001336024, 0.022799017, -0.062343203, 0.017140022, -0.07556853, -0.12864219, -0.25721326, -0.20741239), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.22062224, 0.09266222, 0.22466063, 0.18527372, -0.06940306, 0.1317168, 0.019784274, -0.07422301, 0.04061616, 0.0022494853, 0.21723995, 0.24732308, 0.14088804, 0.0116154915, 0.102064446, 0.020701224), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.025154127, 0.045180723, -0.05877639, -0.099235624, 0.13630918, 0.24653725, -0.05723323, -0.022995364, -0.10826078, 0.049667366, 0.12618053, 0.1557369, 0.037487056, -0.22215757, 0.005912914, -0.20549043), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.09641055, 0.098845296, -0.08192096, -0.03691394, -0.18450394, 0.29955688, -0.082493715, -0.06268039, -0.0754319, 0.21018648, -0.016580105, -0.1810546, 0.13857666, -0.0327626, 0.03161804, -0.32589525), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.18272439, -0.17595461, 0.047229152, 0.14596708, 0.40453747, 0.5658558, -0.17969102, 0.21557859, -0.34232348, 0.40355968, 0.53874254, 0.0012561383, 0.28154096, -0.06745097, -0.13049632, 0.42997465), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.081179485, -0.0041369614, -0.12001932, -0.102107175, -0.050293338, 0.29165673, 0.08062538, 0.22925815, 0.19389379, 0.28463286, -0.057207666, 0.23133168, -0.07545728, 0.06729763, -0.103593476, 0.014468794), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.069821335, -0.010299579, 0.069458775, 0.03894593, -0.054688405, 0.32758355, 0.13935772, 0.37506017, 0.24083133, -0.06105339, 0.25636867, 0.09627044, 0.08939188, 0.006728639, 0.10629504, 0.07887502), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.10563019, 0.077379815, 0.045456886, 0.09303406, 0.11326298, 0.28762257, -0.35142374, 0.10285745, 0.28762287, 0.3592446, 0.23816557, 0.22676824, 0.030372012, -0.028023086, -0.30956736, -0.27588373), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.110499, 0.009828844, 0.086689755, 0.1839749, 0.16656482, 0.083707325, 0.19506347, -0.01547141, 0.13804145, 0.2206598, -0.16484791, -0.0021595939, -0.06844408, -0.07861768, 0.040771082, -0.13347322), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.02667995, 0.019265587, -0.18211095, -0.102116466, -0.042541366, -0.07700912, -0.020587347, -0.03532171, 0.14816427, -0.1672272, -0.17522137, -0.04657808, 0.013430233, -0.0021270285, 0.109880306, 0.004838907), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.14285165, -0.1364756, 0.017568532, -0.27690783, -0.015461915, 0.045437083, 0.018187419, 0.12473493, 0.17991658, -0.15642665, 0.10009151, -0.19040193, 0.1734127, -0.13817501, 0.0710856, -0.12921426), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.14114712, -0.18893671, 0.16121174, 0.035988737, 0.17872387, -0.106395856, -0.23183517, 0.012380416, 0.043066982, -0.28539032, -0.049011275, -0.21125022, -0.11976977, -0.015564958, 0.18880925, -0.0034812456), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.05894521, 0.17266215, -0.0458901, 0.08049924, 0.0156061025, -0.0047465423, 0.09714626, 0.045990974, -0.08786066, -0.37803304, -0.19629405, -0.08546443, 0.014874948, 0.16931784, 0.24799919, 0.06316819), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(-0.28352743, 0.29973608, -0.014540065, 0.2865005, 0.048086923, 0.18976144, 0.22969759, 0.1643124, -0.11259408, -0.107592925, 0.184308, 0.30998367, -1.0860825, -0.29118305, -0.51242536, -0.38492215), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.17199941, -0.14274743, -0.14213641, -0.1691383, -0.17294803, -0.013992068, -0.12135059, 0.082377024, -0.11255549, -0.124990575, -0.32526177, -0.08199375, -0.25591666, 0.1882329, 0.07895415, 0.22012262), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.026025832, -0.07267515, 0.09738688, 0.074536435, -0.060470507, -0.037861936, 0.0507819, -0.054857653, 0.0043173633, -0.18107842, -0.02996759, 0.04072402, -0.012617744, 0.061665237, 0.0013981885, 0.08679919), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.27913737, 0.39656082, 0.1579819, 0.2774727, -0.007996453, 0.08704765, -0.016933938, 0.07066135, 0.12361742, -0.20802726, -0.13705719, -0.18794124, 0.037409827, -0.03351758, -0.2970392, -0.11001984), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.027419567, 0.043236237, -0.19843115, -0.056489736, -0.017010912, 0.070949584, -0.14881176, -0.0780235, 0.0039477753, -0.16772608, -0.009547604, -0.14060417, 0.0103197545, 0.07129672, 0.034949142, 0.014112084), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.06467971, 0.084101565, 0.26296136, 0.08878442, -0.11232121, -0.054373942, -0.17263442, 0.046408508, 0.032239515, 0.042490713, 0.036938053, -0.034339923, -0.07139367, 0.032505415, 0.0045828503, 0.24428385), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.053585388, -0.08175568, -0.04787236, 0.06061965, -0.0740297, 0.11113596, -0.12467945, 0.08229154, -0.01941305, 0.12903687, 0.09095716, -0.13062255, -0.0102068605, 0.107291475, 0.030279635, 0.07464777), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.11041978, -0.0123585425, 0.11147018, 0.07380536, 0.06632908, 0.011784447, 0.029638765, -0.01566135, 0.009105331, 0.05252663, -0.17972581, 0.01210126, -0.10749957, -0.028144639, -0.105761215, 0.083784826), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.058018316, 0.15083058, 0.2725673, 0.024263225, -0.067711554, 0.051117413, -0.31144425, -0.15761986, 0.017503206, -0.14361219, -0.38261738, -0.20354146, -0.04211545, 0.12921454, -0.01319619, 0.35809723), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.107978396, 0.3230084, -0.13806303, 0.12903036, 0.039864987, -0.006241628, 0.18701774, -0.10785807, 0.30056882, -0.3092082, -0.4273322, 0.3784662, -0.026107281, 0.23165871, 0.35258314, -0.06654702), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.15840323, 0.15210885, 0.04086692, 0.19169305, 0.11847602, 0.0009038581, 0.095951624, 0.043941673, 0.1512248, 0.0749449, -0.027045414, -0.19729601, 0.08265063, -0.045218006, -0.10732461, 0.05197371), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.13637526, 0.28841978, 0.10298119, -0.005948496, 0.020897362, -0.02186902, -0.16207378, -0.021084815, 0.029192554, 0.07076991, -0.07210881, -0.06752328, 0.0006557475, 0.08986717, -0.29430988, 0.21411087), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.18667863, 0.3117322, -0.0859705, -0.038189936, 0.10214859, -0.11244034, 0.2680223, -0.072901204, -0.07434324, -0.17855306, 0.23134363, -0.055360887, -0.020968167, 0.0858459, 0.078975916, 0.13254759), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.15676941, 0.03476677, -0.09922334, -0.15847856, -0.0033982224, 0.020932984, 0.12874377, 0.048792202, 0.06521213, 0.12456798, 0.15958112, 0.15981804, 0.07657683, 0.1759313, 0.012727211, 0.120304115), target1);\n\t\n\tMF4 target2 = { -0.04928105, -0.003357327, -0.03886671, 0.076106146 };\n\ttarget2 = MulAdd(a1, MF4x4(0.003206617, 0.04896987, 0.049652386, 0.10869342, 0.36313584, -0.070666805, 0.93581825, -0.52484274, -0.14278883, 0.064016834, -0.05534331, 0.02961736, -0.1319316, 0.05740655, 0.2405951, -0.12313382), target2);\n\ttarget2 = MulAdd(b1, MF4x4(0.014092832, 0.07058761, -0.07887866, -0.27478936, -0.31456405, -0.31036922, -0.18380909, -0.11277979, -0.034889866, -0.37914017, -0.056245584, 0.24008954, -0.03414483, -0.023189066, -0.010568316, -0.004604883), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.15443979, -0.050161768, -0.012300917, -0.08834887, 0.082193285, 0.06878423, 0.1478042, -0.3774468, -0.18659878, 0.14238152, 0.033605397, 0.13560006, -0.032682173, -0.024561955, 0.05656941, -0.034246165), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.04691462, 0.064624496, -0.15950382, 0.16081297, -0.1417951, -0.109690994, -0.021205869, 0.19361454, -0.006306647, 0.3401972, -0.00014070333, 0.11619607, -0.13437814, 0.05464789, 0.37712076, -0.12470751), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.40016884, 0.010666597, -0.005395378, 0.51084363, -0.009875391, 0.3969395, 0.47768033, -0.3392299, -0.1509509, -0.057620626, -0.1834601, -0.09998148, 0.10095897, -0.2213528, 0.02546703, -0.28506726), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.26652217, -0.106772706, -0.12609608, -0.0949661, -0.10869194, -0.55331933, -0.011515521, -0.27978876, -0.2124893, 0.03954004, 0.1691768, 0.05590268, 0.1539662, 0.10703386, -0.027286088, 0.2168544), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.04862511, 0.06919758, -0.12962708, 0.016036907, -0.030030789, -0.20159967, 0.0013158675, -0.07799172, -0.032236706, -0.0035921712, -0.085437834, -0.025374755, -0.06251374, -0.009269627, -0.07519051, -0.01884611), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.23940067, -0.19496065, -0.05494683, 0.11601073, -0.074225076, 0.24976431, 0.41665986, 0.12029472, 0.16815041, -0.115868434, 0.06333614, 0.032145746, 0.15990137, -0.14886795, 0.034102913, -0.07727595), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.14702639, -0.013711502, 0.011437429, -0.11201445, -0.2582659, 0.34539905, 0.058082145, -0.18346462, 0.0027891365, 0.072565466, 0.12716974, 0.050636146, 0.092657596, 0.08541754, -0.1266164, 0.027881607), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.043362036, 0.020758621, 0.09906072, -0.22401148, -0.19104514, -0.25774476, 0.074128486, 0.08558291, -0.075419895, 0.20380639, 0.06398196, 0.015925938, 0.089786015, -0.100721814, -0.1374862, 0.26110905), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.12547149, 0.08151811, -0.15953775, -0.33995447, -0.50784314, 0.46155545, 0.24986996, 0.03404644, -0.047789436, -0.12438347, -0.14143273, -0.17951359, -0.08057819, 0.023863006, -0.008539273, -0.06775414), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.1430169, 0.056971863, -0.021576611, -0.045342956, -0.22356391, -0.15344621, -0.0467977, -0.22970036, -0.0125351725, 0.16957329, -0.0069183917, -0.013949834, -0.048609708, 0.05261722, 0.023262242, 0.2123519), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.019523792, 0.008228363, -0.04616012, -0.14341992, -0.19307113, 0.005937241, 0.24048887, -0.04279845, 0.022574252, 0.15558265, -0.035000063, 0.18318397, -0.05392528, -0.26044658, -0.13493988, 0.056433514), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.28926027, -0.17381874, 0.07685766, -0.0061521684, -0.47455552, -0.49213487, 0.36924496, 0.29042044, 0.201094, -0.14280887, -0.4531411, -0.52902204, -0.28123, 0.1401882, 0.32054895, -0.11357518), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.14173324, -0.12069898, -0.07242415, 0.105665006, 0.017373435, -0.056042343, 0.07270201, 0.022111928, -0.01106541, 0.01666006, 0.013564169, -0.36628693, -0.25450787, -0.28179473, -0.04721874, -0.21912882), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.09464695, -0.027919646, 0.13088459, 0.17504032, -0.101641014, 0.29687008, 0.08832321, 0.020538324, -0.15108941, -0.21930224, -0.026915176, -0.07078217, 0.10723033, 0.034364715, 0.18183397, -0.119012214), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.21713468, -0.0846604, 0.046551514, -0.14989382, 0.08672032, -0.07933831, 0.08093595, -0.064147756, -0.15980323, 0.50000644, -0.091568656, 0.03201994, -0.1848647, -0.0646309, 0.03288009, 0.046442386), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.053532355, -0.054523747, -0.040242642, -0.31438905, 0.06452703, -0.18785381, -0.14987698, -0.067642935, -0.19892459, -0.057256676, 0.05943023, -0.17331842, 0.02588534, 0.13134238, -0.07121775, 0.23446162), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.20633182, 0.01686198, 0.17934167, -0.02063493, 0.042606052, -0.05289458, 0.031508356, 0.00082803797, 0.0756423, -0.047548845, 0.01456339, 0.15910533, -0.20119642, 0.029213727, 0.111036316, -0.047010012), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.09258436, -0.27904224, -0.086695746, 0.33095327, -0.20126075, -0.050745636, -0.048944805, -0.10536587, -0.012995092, 0.07926994, 0.15071853, -0.13644052, -0.05188447, -0.06750699, -0.14227037, 0.028751127), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.18562223, 0.10250865, -0.17573993, 0.20434102, -0.05187468, -0.06441594, -0.052127104, -0.01925564, 0.02927959, -0.12711872, 0.059629507, 0.15696885, -0.010168965, 0.09971862, -0.03177664, -0.022744441), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.21474063, -0.15679085, 0.09609374, 0.109079376, -0.049934637, -0.07393633, 0.16688468, -0.018888129, 0.04240162, -0.31895876, -0.106516436, 0.20008606, -0.054410245, 0.028970616, -0.18008347, -0.013362003), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.37891293, 0.042730846, -0.24735828, -0.5234527, -0.3681344, -0.06609157, -0.14993733, -0.020316398, 0.123008475, 0.29632482, 0.32149333, 0.35999274, -0.18967044, 0.46154186, -0.016041815, 0.097378336), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.14873263, 0.07600569, -0.051758345, 0.1803135, -0.23121934, 0.13574593, 0.043973465, -0.13992754, -0.061972607, -0.124083005, -0.049196843, -0.07700431, 0.21572952, -0.25241727, 0.1218322, -0.07773728), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.040287063, 0.024240922, 0.021917762, -0.050616946, -0.023174169, 0.05977014, 0.018892275, 0.04014965, 0.11715485, 0.062129, 0.024620812, 0.013617107, 0.075699426, 0.1858111, -0.11769179, -0.08085602), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.3194255, 0.08695645, -0.09453595, 0.2564516, 0.02192303, 0.08167247, -0.06257352, 0.043801844, 0.04392246, 0.2020571, 0.045180902, 0.18857521, 0.1835961, -0.043788187, -0.08768916, -0.14755538), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.22074097, 0.13768476, -0.16183749, 0.059949517, -0.011375954, 0.08581876, 0.004800447, 0.019403988, 0.014646056, 0.07363176, -0.058036458, 0.0706421, 0.08082624, 0.17740329, -0.05484784, 0.050796065), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.032330472, -0.067666024, 0.18980837, -0.19077848, 0.1111905, 0.03855666, -0.11272314, -0.00577739, 0.17697452, -0.053044144, -0.07510145, 0.061853852, -0.024240626, 0.14846492, 0.14804313, -0.20275854), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.17133904, -0.16356844, 0.1978664, 0.13877816, 0.28208038, 0.031539194, 0.11313891, -0.0014802719, 0.0033749861, 0.046372313, 0.054808807, -0.0024151779, 0.0068782056, -0.16414621, -0.07545907, -0.2521294), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.1746992, -0.037628956, -0.0044012754, -0.004390821, 0.0050341445, -0.112742625, 0.051241755, 0.01984483, 0.0003531837, 0.043500375, 0.030881992, 0.003503799, 0.13611782, -0.02509031, -0.007503557, -0.009321301), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.087250136, 0.12374122, 0.2959519, 0.11314702, 0.22080182, 0.106726184, -0.29768205, 0.14931595, 0.23356548, -0.008709153, -0.0797829, 0.046940215, -0.07027616, 0.20533602, 0.0723021, -0.1963585), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.00609982, 0.35277408, -0.22781096, -0.28912535, 0.42393112, -0.07654207, 0.12636793, 0.049337976, -0.0967726, -0.19349189, 0.36800626, 0.09745645, 0.47663373, 0.03876107, -0.042987954, 0.016161885), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.047490966, -0.05823166, 0.036158644, 0.025337253, -0.046618905, 0.108276576, -0.024148034, 0.0026794411, 0.1497962, -0.09328474, -0.03160641, 0.24351281, -0.05198027, 0.030720685, 0.00014528916, -0.2224931), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.007338369, 0.18710312, 0.14617369, -0.0070655346, 0.10464997, -0.029674934, -0.11842202, -0.09114357, 0.08524458, -0.08082762, 0.06479597, -0.023760766, 0.07523641, 0.0067315935, 0.101266846, -0.2780903), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.14181875, -0.19523518, 0.1068169, -0.10284853, 0.11634046, -0.117397435, 0.09113022, 0.009371062, -0.022120507, -0.1127032, 0.092574745, -0.021989716, -0.088107705, -0.13541982, 0.08130504, -0.0678927), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.09948295, 0.23699793, -0.042369924, 0.16744529, -0.10045506, -0.045623623, 0.04871897, -0.0023967526, 0.02602692, -0.089873284, -0.050681606, -0.09332558, -0.09596149, -0.06988313, 0.0007193808, -0.11936899), target2);\n\n\tconv2d_4_tf[gxy] = target1;\n\tconv2d_4_tf1[gxy] = target2;\n}\n\n//!PASS 6\n//!DESC Conv-4x3x3x16\n//!IN conv2d_4_tf, conv2d_4_tf1\n//!OUT conv2d_5_tf, conv2d_5_tf1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_4_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_4_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_4_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_4_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.0095873345, 0.04959374, -0.15246227, 0.0044831373 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.13425097, -0.23487093, 0.2480183, -0.2806276, -0.041303713, 0.100773126, -0.110890545, 0.036205858, -0.331331, -0.12929262, 0.16300063, 0.3776673, -0.20316373, -0.011239426, 0.10650887, -0.027857736), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.09517376, -0.3004956, 0.05033304, -0.07464521, 0.009204248, -0.23034886, 0.30492118, -0.1215848, 0.15728685, -0.10430078, 0.04038878, 0.08034804, 0.04320418, -0.2929594, -0.018968396, 0.02542387), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.10651935, -0.2736715, 0.19267319, -0.033337504, -0.06697293, 0.028424729, 0.047814637, 0.44929537, 0.02565344, -0.253426, -0.040931404, -0.05018104, 0.032979824, -0.035349697, -0.039578713, -0.3116414), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.09176126, 0.031713437, 0.24861507, 0.31351718, 0.36284143, 0.3622709, 0.16165464, 0.07319267, -0.6303202, -0.21209712, -0.02169929, 0.037275597, -0.1295319, 0.033090707, -0.029330662, 0.054679472), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.15021572, -0.15177831, 0.1318225, 0.46864823, 0.059443284, 0.07404233, 0.22612074, 0.21105285, 0.319694, 0.09397257, 0.14277866, -0.0235649, -0.037205156, -0.40715128, -0.18572816, 0.058741573), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.122751735, -0.20926422, 0.2099333, -0.11627138, 0.04171681, 0.0669586, -0.03831368, 0.27334675, 0.0492008, 0.12854317, 0.03308622, 0.45236585, 0.03122829, 0.13853219, 0.05084764, -0.3965012), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.0019293908, -0.15562099, 0.12418126, 0.0045440597, 0.05442391, -0.15613738, 0.14828286, -0.17687118, -0.053517755, -0.33350968, -0.062314924, -0.31358472, -0.09670371, 0.043190923, 0.008150662, 0.09928506), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.06698031, -0.099411525, 0.24259582, -0.1073659, 0.06762824, 0.059605874, -0.20944163, -0.1598055, 0.32746908, -0.17759447, 0.2859796, -0.1274256, 0.30796206, -0.00791448, 0.114059694, 0.14775705), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.16291203, -0.14958477, 0.14716864, 0.2056065, -0.019337546, 0.032286238, 0.0030445335, -0.08208513, -0.14208078, 0.13601872, -0.23367858, -0.19092909, -0.20207883, -0.016950991, 0.009309007, 0.1376546), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.11093091, -0.32362202, -0.041845415, 0.029758021, -0.07261404, -0.048653398, 0.19167832, 0.09343212, 0.030472826, -0.15078579, -0.0056376588, 0.0045257527, -0.24521805, -0.10473077, 0.11163019, -0.1724187), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.08601668, 0.16612485, -0.07751539, 0.07261594, -0.19028407, 0.23896623, -0.10416726, 0.23500614, 0.1955228, 0.08699591, -0.049277775, 0.13447775, 0.19434914, -0.11481196, 0.088043146, 0.13352895), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.013221233, 0.07521129, 0.042819552, -0.11163175, 0.066080205, -0.25043094, -0.010348969, -0.013258202, 0.09444396, 0.29623637, 0.025016114, 0.050744686, -0.12219596, -0.0735393, -0.024817836, -0.06897588), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.25720942, 0.19861753, -0.18535058, 0.12190362, -0.33756095, -0.0038898317, 0.09739055, 0.41227046, -0.10030796, 0.025445882, -0.23542109, 0.08677691, 0.08140194, -0.22716106, 0.14016968, -0.0927231), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.58745646, -0.12533307, 0.30129984, 0.08898194, -0.07972344, -0.37581098, 0.06863413, -0.13185541, 0.21801205, 0.31779078, -0.3804784, -0.3200699, 0.14534226, 0.05912262, 0.07938948, -0.34869507), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.024675166, -0.067802526, 0.030065436, 0.06509131, 0.14367498, 0.022554757, 0.014991865, -0.029914752, 0.5123549, -0.012557206, -0.13014166, -0.34184244, -0.09080884, 0.13782553, -0.018931886, -0.35642785), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.37336427, -0.02705006, 0.14392053, 0.024049882, -0.024705589, 0.14556128, -0.12120506, -0.06275598, -0.1284325, 0.11409197, -0.08397436, -0.075944416, 0.056465942, 0.04016099, 0.096723564, -0.08359723), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.20243345, -0.09287934, -0.11676041, 0.005206654, -0.2879361, 0.41677123, -0.16924824, 0.22429213, 0.082279116, -0.1780833, 0.20209241, 0.12970525, -0.030272234, -0.19200714, 0.0015769673, -0.1389732), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.04211243, 0.07331798, -0.055724114, 0.04086206, -0.04635456, 0.027212424, 0.021861525, 0.12424812, 0.43009162, 0.021664696, 0.20828371, 0.11859106, 0.07390811, -0.1861182, 0.034559406, 0.18561925), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.22596797, 0.025346763, -0.056839246, 0.09137385, 0.07363095, -0.12382036, 0.08911783, -0.012355983, -0.07869761, 0.051298574, 0.00816572, -0.044984274, 0.07962154, -0.2254524, -0.007821531, -0.04936664), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.06265961, -0.17783198, 0.11678783, -0.12965304, 0.014506855, -0.17513473, -0.23593299, 0.14054537, 0.1580306, 0.31872272, -0.0042505316, -0.070422255, -0.01316396, 0.0058355615, 0.062464185, -0.06086727), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.079526044, 0.23932967, -0.1139716, 0.15888569, 0.06526993, -0.06958436, -0.04070066, -0.12081254, 0.026716579, 0.014887845, 0.0061467467, 0.127956, 0.040913627, -0.0032820841, 0.086145625, 0.22520025), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.25577608, 0.02553098, -0.14822578, -0.11907723, -0.09787419, -0.03544863, -0.08098151, -0.01305555, 0.20404844, 0.11294246, 0.10096346, 0.15795162, 0.2554626, 0.09361069, 0.001985862, -0.0051444587), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(-0.24454486, -0.014714279, -0.2954907, -0.39995646, -0.15907967, 0.30107877, -0.34781745, 0.095281735, -0.12492393, -0.28375402, -0.16872306, 0.2531788, -0.52085644, 0.35986066, 0.07716912, 0.09565738), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.2493129, 0.06395661, -0.09491958, 0.19702488, 0.109871864, -0.051376317, 0.15404263, -0.21282886, 0.1188967, 0.07824094, -0.016752928, -0.14027214, 0.10949832, -0.27629098, 0.081909016, 0.1354018), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.18950915, -0.034574565, -0.10378051, -0.15800652, -0.06835184, -0.06987467, 0.035007782, 0.04686656, 0.054061133, 0.014833506, -0.0035361175, 0.016156103, 0.120767444, -0.10196722, 0.10668838, -0.09058739), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.032248627, 0.056413256, 0.042716432, 0.06681831, 0.047605485, -0.07629479, 0.14311917, -0.06909803, 0.10640394, 0.10701861, -0.0051839007, -0.15133362, -0.32146424, -0.039978918, -0.12280021, 0.0048507582), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.1954503, -0.09257865, 0.11023244, -0.01817947, -0.0035485283, -0.015536726, 0.0071826433, 0.042538714, -0.015454641, 0.079593316, -0.07242554, 0.031178504, 0.2319168, -0.10519467, 0.013837495, -0.040088437), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.12625901, 0.04531166, 0.038758352, -0.05790713, -0.10029771, -0.118265375, -0.23944628, 0.11955388, 0.070732996, 0.19404806, -0.019913414, 0.04609079, 0.06262817, 0.022330387, -0.029681094, 0.03719176), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.07737922, 0.0024623116, -0.037666153, -0.19271135, -0.015002153, -0.0059966356, 0.0024538909, -0.0401021, -0.18540399, -0.11140236, -0.11102473, -0.06390247, 0.016754225, 0.35000673, -0.19139731, 0.07363001), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.02150171, -0.2311761, -0.025124706, 0.16819553, -0.0013348719, 0.32091036, -0.061826598, 0.12579474, -0.036611024, -0.018266583, -0.11280143, 0.11073158, 0.050171874, -0.14706045, 0.029553955, 0.0052631944), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.19249865, -0.22854832, 0.09472751, 0.014705341, 0.059496958, 0.13427268, -0.06309558, -0.07153743, -0.31890163, -0.0657967, -0.040345218, 0.09544393, 0.07359761, 0.11245483, 0.00033233972, 0.031550154), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.24668917, -0.37181908, -0.50614715, -0.101197146, -0.1569055, 0.27734125, 0.17144768, -0.04336267, 0.03658949, 0.06747124, 0.30720958, 0.56301194, -0.11314631, -0.29258573, 0.16256689, 0.5221001), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.022761503, 0.13063031, 0.002526217, -0.03466151, -0.15225072, 0.40217137, -0.089131154, 0.19195192, -0.1379853, -0.04640692, 0.104670234, 0.12268618, -0.012009209, -0.20534724, 0.028777445, 0.22195113), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.23697586, 0.08793654, -0.10565018, 0.013993297, -0.025932996, -0.13859354, 0.14333159, -0.099132575, -0.049601994, -0.0917448, -0.0021633878, -0.009032609, -0.034750953, -0.30761167, 0.058994945, -0.19427797), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.26944515, 0.30523893, -0.17787015, 0.10827742, 0.06457236, -0.12202401, 0.15371302, 0.011699893, -0.06253491, -0.10976804, -0.37283847, -0.23996784, -0.2750512, -0.024101513, -0.094127975, -0.17462716), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.026286924, 0.06250577, 0.095423855, -0.02849258, -0.12916361, -0.10954709, -0.05825132, -0.102924265, -0.19550376, -0.11730307, 0.032346163, -0.17682706, 0.16651174, 0.031927045, -0.004800601, -0.06323844), target1);\n\t\n\tMF4 target2 = { -0.001935585, 0.05018077, -0.0154469935, -0.034524206 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.021453971, -0.108874515, 0.0005208881, -0.09774453, -0.0053757126, 0.20114918, 0.24454592, 0.04932251, -0.0037210248, -0.0240578, -0.07736935, 0.27604944, -0.12430849, -0.13093218, -0.014840212, 0.13450128), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.19143668, -0.23023333, -0.10232715, 0.24396868, 0.056112397, 0.14535592, -0.25882182, -0.26274678, -0.23119931, 0.07735849, -0.14785223, -0.21026523, -0.2064457, -0.34512606, -0.17808662, 0.30146623), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.0072161015, -0.013303738, 0.07591899, 0.027883789, 0.210858, 0.1422139, -0.027882019, 0.2618474, -0.048504543, 0.07377317, -0.05427271, -0.10014041, -0.12974857, -0.13140713, -0.02249253, 0.08203184), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.07855138, -0.13984342, 0.10037151, -0.056781758, 0.24686107, -0.0048190085, -0.2693424, 0.31722167, -0.28716075, -0.06422215, -0.06738793, -0.06723655, -0.08194382, -0.007975044, 0.20108353, -0.13338897), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.35129568, 0.27930936, 0.024239251, -0.10712293, 0.48684034, -0.04380574, -0.0064479653, 0.03754327, -0.13139078, -0.44939983, -1.0460628, -0.016004754, -0.14476573, -0.07113434, 0.515311, -0.400374), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.13104302, -0.23410062, 0.091530964, -0.003652217, 0.16696814, 0.16406855, -0.08138474, 0.047526445, 0.25358474, 0.37850454, 0.0362802, -0.046476766, -0.093869686, -0.4143772, 0.08641024, 0.115896136), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.04416574, -0.052188106, 0.05141859, -0.008132604, -0.013658864, 0.1021097, 0.19391364, -0.09257973, 0.15225394, -0.16920799, -0.16172324, 0.41466942, -0.07087308, 0.08632938, -0.07496043, -0.023530172), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.09337352, 0.062108494, -0.219173, -0.046151914, 0.22507025, -0.08966131, -0.123690315, 0.08666376, -0.10731867, -0.08518657, 0.024199447, 0.17898631, 0.120247275, 0.089923285, -0.08756211, 0.1775775), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.20326594, -0.060535498, -0.061659336, 0.113954924, -0.073462196, 0.15917051, 0.11728326, -0.072256014, -0.0752342, 0.06265616, -0.19494365, -0.25413772, -0.06641352, -0.015642308, 0.16825356, 0.0027654327), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.17029639, -0.05388927, -0.13159063, 0.0795609, 0.00501164, -0.0703107, -0.08229201, 0.07546247, 0.092942156, 0.059050936, -0.07987315, 0.010874322, 0.037708692, -0.0017377702, -0.030414931, 0.28946167), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.2692667, 0.2258295, 0.062060453, 0.1934921, -0.023051793, -0.038611185, 0.21473692, 0.33520013, 0.029885106, 0.103782356, 0.05217351, -0.13349791, -0.034186684, -0.3015818, 0.033423528, 0.21218027), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.013587494, 0.021273775, -0.022650799, -0.011939531, -0.11202949, 0.09365859, -0.042938907, -0.009910716, 0.27254924, 0.07752608, 0.029586637, 0.024899973, 0.04375618, 0.31453863, -0.006775175, 0.008228053), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.49562672, -0.12472124, -0.13618441, 0.09660054, -0.2275429, -0.0902811, 0.18311924, 0.11677185, -0.13325182, -0.061613016, -0.011462703, -0.12538978, 0.054934092, 0.06742866, 0.25515345, 0.35692096), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.5266911, -0.09655596, -0.41069564, -0.3174325, 0.1431904, -0.17732115, -0.36320353, 0.37975433, -0.5158582, -0.21019879, 0.06852925, -0.06648648, -0.18956456, -0.018139647, 0.35707653, 0.07378416), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.04151976, -0.037361674, 0.06936584, -0.10462262, -0.22264048, -0.043842267, -0.12742832, -0.21778631, 0.0715335, -0.17921853, -0.3856251, -0.16335362, 0.21045755, -0.5026229, 0.14405337, 0.23096423), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.32437655, 0.07860345, -0.0021187086, 0.123870686, -0.16616751, 0.11004699, 0.04754715, -0.0075211064, -0.08026408, 0.04284957, -0.018143758, 0.032623176, 0.06614686, -0.035856936, 0.13667971, -0.15696613), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.11260625, 0.03274457, -0.033769324, -0.11558525, -0.35377702, 0.0019119612, 0.24906515, -0.06853208, 0.0009843144, -0.0050376705, 0.063123666, 0.009872904, 0.19592324, 0.0028321196, -0.114693984, 0.16404222), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.03699667, 0.011842293, -0.12273219, 0.04081692, 0.008484447, -0.052331816, 0.07151068, 0.018538639, 0.077749036, 0.07189092, 0.22443593, -0.2436085, 0.023654116, -0.05127411, 0.27350748, 0.12180999), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.16090482, 0.059198547, 0.04856637, -0.19173436, 0.12747662, -0.079715036, -0.20203276, -0.13818277, -0.123076215, -0.07168488, 0.0644838, 0.03524764, 0.0005124138, -0.06789178, 0.048645556, -0.098922126), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.29220074, 0.25197285, 0.09825887, 0.030363245, -0.033246458, -0.08370418, -0.12231589, -0.023000835, 0.082732, -0.16907515, -0.052518822, 0.07991363, 0.06222654, -0.06747275, -0.18931144, -0.42009747), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.02667354, 0.03842717, -0.012755562, 0.061840586, 0.01060547, -0.29081437, 0.010907111, 0.07930905, 0.12273201, 0.017574295, 0.051024225, 0.019036688, 0.07671181, 0.049130872, -0.09734168, -0.070569195), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.08517651, 0.0767222, -0.15657257, 0.18501835, -0.13749431, -0.2833894, 0.109219365, 0.033763003, 0.18988928, 0.13461404, -0.036578514, -0.13256857, -0.097819485, -0.17316358, -0.06512401, 0.1937444), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.32173568, -0.072075866, 0.13004705, -0.15507852, -0.23741087, -0.29364398, 0.10723945, -0.11976219, 0.20620506, 0.17970093, 0.24463713, -0.12555319, -0.021192182, -0.1374317, 0.5359718, 0.59974134), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.01101575, 0.040466793, -0.009630791, 0.13422947, -0.13290837, -0.24789505, -0.061713737, -0.07838521, 0.05379315, -0.14643523, -0.09155805, -0.049997047, 0.06696885, 0.20043123, -0.07542329, -0.08041673), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.022160506, 0.01611432, -0.10189221, -0.022767285, -0.06682965, 0.047138248, 0.06860934, -0.012574086, 0.04010214, -0.041280016, -0.034621384, -0.018262599, 0.09731754, -0.059062295, 0.14786182, -0.15185094), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.052484483, 0.06899427, 0.18380043, -0.058414727, 0.07685985, -0.07206598, -0.101362616, -0.012002652, 0.008517392, 0.079471916, -0.30394664, 0.028600946, -0.03270232, -0.23564856, 0.045065008, -0.0034684737), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.049757, 0.07614825, 0.16394803, 0.027053174, 0.0451278, -0.09351286, -0.0042182617, 0.12332257, -0.025281021, -0.03843008, 0.12857373, -0.07611989, -0.0062898803, 0.022618141, -0.13122174, -0.03328411), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.12251631, 0.047008447, 0.027589995, -0.12207328, -0.1510795, 0.06724553, 0.17066906, 0.16992114, -0.0026905634, -0.035480864, 0.033738773, 0.018674552, 0.028614907, -0.019945908, -0.0156899, -0.09562145), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.116588935, 0.14205505, 0.099545434, -0.045527786, -0.049273346, 0.20760757, 0.053965498, -0.12198069, -0.14654607, 0.041820496, 0.038068503, 0.24565905, 0.09786504, 0.18309233, 0.23802327, -0.085740186), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.1262052, -0.011846116, -0.058820397, -0.019373653, -0.09569547, -0.08265971, -0.05178388, -0.020502446, -0.17525336, -0.22874829, 0.0075891856, -0.189923, 0.09809122, 0.109637566, -0.0005973885, -0.06477921), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.28209856, 0.11276813, 0.054377034, -0.00891202, -0.095922634, 0.071109876, -0.039932176, -0.047409832, -0.06504704, 0.11923986, 0.0013364811, -0.122095086, -0.20282102, -0.022717483, -0.115474045, 0.020858249), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.16130303, 0.072821185, -0.021358958, -0.11687897, -0.15543966, 0.05783285, 0.10317231, -0.12240756, 0.053357504, -0.090291016, -0.21943556, 0.46947235, 0.19072579, 0.017349033, -0.55443907, -0.10510661), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.4155687, 0.019206723, -0.20055711, 0.028732464, -0.1981807, 0.20637372, 0.03305817, -0.17949893, -0.21051097, 0.21483344, 0.0061496794, -0.48980987, -0.26750582, 0.09230394, -0.117223755, -0.07636286), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.20611528, -0.00095511036, -0.21555157, -0.07065484, 0.06880411, 0.068082534, -0.10104979, 0.16050354, -0.07437897, -0.13145325, -0.017651044, 0.055096775, -0.05443345, -0.018634815, -0.011232755, -0.10835), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.2637829, 0.07681072, 0.015995527, 0.004554211, 0.07495561, 0.18873464, -0.14303622, 0.25786543, -0.14117226, -0.008715274, -0.17176823, -0.0006595096, -0.06566383, -0.19184378, -0.18945406, 0.20968987), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.03293623, 0.003399063, 0.08051177, -0.0072856937, -0.07375858, 0.075319655, -0.10791501, -0.002204552, -0.093564905, -0.122712255, -0.10658267, -0.015067637, -0.033247817, 0.09952069, -0.13724248, 0.068189256), target2);\n\n\tconv2d_5_tf[gxy] = target1;\n\tconv2d_5_tf1[gxy] = target2;\n}\n\n//!PASS 7\n//!DESC Conv-4x3x3x16\n//!IN conv2d_5_tf, conv2d_5_tf1\n//!OUT conv2d_6_tf, conv2d_6_tf1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_5_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_5_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_5_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_5_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.036374483, 0.029420665, 0.04437756, -0.04474691 };\n\ttarget1 = MulAdd(a1, MF4x4(0.0053346683, 0.010174534, -0.050979972, -0.06134544, -0.007238652, -0.012790015, 0.036398683, -0.09181499, 0.11328388, -0.14236617, -0.17519625, -0.34661606, 0.008069393, -0.028871074, -0.02980949, -0.0853359), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.05187267, -0.09381704, 0.035209883, 0.29482442, -0.0018002815, -0.029504262, 0.2609028, -0.09480671, -0.0737553, -0.070559524, 0.081991084, 0.1513024, 0.048344653, -0.09336617, 0.0034569732, 0.10530542), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.06749591, 0.0065624053, 0.013237342, 0.14225115, 0.27183163, -0.15656447, 0.031672053, 0.009592649, -0.0202286, 0.26220062, 0.19387855, -0.18505628, 0.040554795, 0.07295961, -0.13291295, -0.12600344), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.039192002, 0.0846215, -0.06593224, 0.28147796, 0.06301313, 0.26323164, -0.16742979, 0.22004774, -0.17470881, 0.060716614, 0.15430811, 0.18970133, 0.08858931, -0.027321626, -0.037833836, 0.07344837), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.0633813, 0.35046157, -0.101075254, 0.015974075, 0.19010352, -0.7135035, -0.24324696, -0.42072615, 0.06825536, -0.052808974, 0.28965715, -0.0015640302, -0.27062586, 0.4279925, 0.035623744, 0.46321228), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.02639867, 0.26469797, -0.09086266, 0.07440796, -0.192054, 0.1010368, -0.04398074, 0.056824226, -0.27057743, -0.20455118, 0.19338831, -0.21843775, 0.20736177, -0.26259273, -0.07667085, -0.19504389), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.007056104, 0.04284205, 0.01933733, 0.07267832, 0.0012616975, -0.30140647, -0.019223223, -0.046687007, -0.037844718, -0.014929125, 0.022630794, 0.046716493, 0.057279173, -0.08055539, -0.027891241, 0.019557232), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.035518404, -0.10087327, 0.0011048123, -0.123707846, 0.37190285, 0.43751532, -0.022599256, -0.041709043, 0.11357196, -0.029839104, -0.056960747, -0.17228557, 0.08558022, 0.046361133, 0.021548864, 0.24297418), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.043598346, -0.09812348, 0.056599542, -0.09833163, -0.07193007, 0.015760094, -0.053177495, -0.015448543, 0.035163186, -0.03889347, 0.121799015, 0.15738566, -0.115644835, 0.043310717, 0.060173217, -0.059635755), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.111604795, 0.1678389, 0.049967546, 0.045353863, -0.013896185, 0.035128903, 0.040686198, -0.16442506, 0.1149577, -0.14343217, -0.08858, 0.02656137, 0.059526477, -0.13914491, 0.12757027, 0.034920372), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.15849945, 0.12067003, -0.1579611, 0.30790725, -0.041249942, 0.03948043, -0.12535375, -0.02566875, 0.3150059, 0.027081972, -0.026308673, -0.25326517, 0.016824603, -0.13551097, 0.1412756, 0.037750524), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.1562541, -0.041948073, -0.14951487, 0.119380556, -0.21773878, -0.019281754, 0.08185942, 0.09982689, 0.017187534, -0.18181366, -0.09270861, 0.08527679, 0.051988564, 0.08686172, -0.12665209, -0.07205808), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.08860466, -0.17931758, 0.10191625, -0.47623265, 0.1562338, -0.2960855, 0.013664795, 0.29452285, 0.1463958, 0.17562817, -0.41623253, -0.196999, -0.049113005, 0.0556021, 0.054452494, 0.14073615), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.5345973, -0.069205046, 0.37001884, 0.6955835, 0.22635284, -0.09021557, -0.04693607, -0.4458824, 0.25049326, -0.06503396, 0.07584689, 0.5394811, 0.33387923, -0.010540017, 0.038980547, -0.13371105), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.04414677, -0.22056313, 0.05580458, 0.11914465, 0.19864987, -0.1025625, -0.010050287, 0.15919746, -0.40589634, 0.4966349, -0.47632688, -0.022637444, 0.17247641, -0.51093113, 0.21157944, -0.2890017), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.034673482, -0.0075900992, -0.061077584, -0.03859898, 0.32444152, -0.14619137, -0.1375446, -0.030322462, 0.029679669, 0.079344586, -0.03862258, -0.05766807, 0.104488336, 0.006179548, -0.1168102, 0.069729604), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.08504003, 0.042162962, -0.17509954, -0.06258286, -0.45796555, -0.061748773, 0.25438437, -0.02988987, -0.06897794, 0.105180845, -0.08879189, -0.120605074, -0.1478659, -0.13201937, -0.01755498, 0.020606143), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.08932581, 0.1453785, -0.12802933, 0.049442187, 0.045360584, 0.16079827, -0.14142223, 0.10168491, 0.20244479, -0.17981426, 0.19759466, 0.05217847, 0.04889828, 0.06941533, -0.111836776, -0.08046399), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.011953735, 0.11362504, -0.122588776, -0.10408559, 0.051712614, -0.05161036, -0.068698496, -0.015663281, -0.06346889, 0.06561636, 0.03783044, 0.02756004, -0.036310352, -0.16962235, -0.062494226, 0.0069608325), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.16857432, -0.17322211, 0.15971284, 0.19980437, -0.007965961, -0.015480705, 0.036090557, 0.07414387, -0.2941106, -0.24430539, 0.01070864, 0.22401866, -0.34321144, 0.09537491, -0.08020218, 0.45404655), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.021609096, -0.11348408, -0.01450652, -0.063170746, 0.06990935, -0.035983834, -0.038010992, -0.10578655, 0.29232737, 0.048835874, 0.054028947, -0.12924139, -0.03058583, 0.028469706, 0.09563202, 0.085674495), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.01894022, 0.037628658, -0.102314636, -0.28041583, 0.07495663, -0.058895253, 0.16422969, -0.07163792, 0.039416216, -0.13800906, -0.039811566, -0.10612402, -0.047593113, -0.28491783, 0.41632858, 0.15253194), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.26240867, -0.05335849, -0.014135048, 0.055749495, -0.020126658, 0.2952794, -0.015241771, 0.36143306, 0.43075684, 0.1921996, -0.4329065, 0.5114495, 0.7326109, -0.054901246, -0.076693356, -0.26104695), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.14548428, 0.14578429, 0.17193514, -0.07973242, 0.011952286, -0.047767498, 0.025101405, 0.0016503566, -0.26948047, -0.16503395, -0.061791085, 0.030557185, 0.15400517, -0.054951698, -0.14611247, 0.3550633), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.05926111, -0.083442695, 0.046579204, -0.017723244, 0.12846185, 0.018434443, -0.17914511, -0.077696435, 0.060048338, 0.02956987, -0.11914462, 0.057770032, -0.054673657, -0.005353606, -0.39014184, 0.08306877), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.07357362, 0.23051825, -0.22640751, 0.080715515, -0.14467078, 0.009734264, 0.054320686, 0.24534328, -0.16038458, 0.06575425, 0.058553413, 0.17755087, 0.08184439, 0.17078212, 0.148369, -0.09309279), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.11160211, -0.07590204, -0.01676188, -0.062253337, 0.016433533, 0.0146132, -0.040350936, 0.06749202, -0.031521842, 0.1441664, -0.09916073, 0.050578352, -0.06560962, -0.31174552, 0.056873083, -0.077912), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.09344025, 0.075936995, -0.1627903, -0.04781558, -0.01878236, 0.045879602, -0.11507387, -0.025356822, -0.09113391, 0.07263937, 0.08232447, 0.08727616, -0.024921807, 0.051639438, 0.006532631, -0.018751068), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.022455849, -0.12924309, 0.26318657, -0.32464805, -0.09627585, 0.04496843, -0.09630052, -0.025761643, -0.090804085, 0.24410398, -0.03162944, -0.1961483, 0.14065808, -0.064709485, -0.0040163463, 0.05445074), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.020935195, -0.1028065, 0.0012804621, 0.02302866, -0.00924972, -0.0041193594, 0.0060590385, -0.003394384, -0.23241943, -0.023235107, 0.08077456, 0.15720141, 0.06568382, -0.09971436, 0.09056065, 0.04271102), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.20997737, -0.12892777, 0.4658528, 0.13622813, -0.2867294, -0.09359254, 0.18821026, 0.25550604, -0.18562363, 0.080713026, 0.13463654, 0.045504905, -0.013133853, -0.1316404, 0.08379897, -0.00047142128), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.3276134, 0.21952826, -0.80777377, -0.69810224, 0.34190908, -0.09293263, 0.33313555, -0.27255502, -0.24287084, -0.07741488, 0.06090265, -0.10161252, -0.37684909, 0.4678029, 0.13506591, 0.42470258), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.080790855, -0.09707547, -0.05506975, 0.027011644, -0.1434346, 0.01363872, 0.12616752, 0.16789167, 0.1656414, -0.11586835, 0.059612263, -0.074029386, -0.19813071, 0.46032718, -0.03935981, 0.0067143585), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.10322512, 0.0822636, -0.16766444, 0.041008063, -0.027768405, 0.23103505, 0.06737122, 0.15258405, 0.04557388, -0.18179403, 0.12489025, -0.09759324, -0.05925805, 0.04869987, 0.07329833, -0.09738542), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.10823879, -0.403376, 0.3264802, -0.16503738, -0.057512645, -0.20902547, -0.14862378, -0.3192005, -0.046263676, 0.12744917, -0.019174274, -0.02318789, -0.085088454, -0.05723332, 0.0039772973, 0.07991316), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.10313916, 0.04410904, 0.03286652, 0.059946325, 0.019948404, 0.070217304, -0.017572487, 0.20332281, 0.06776308, 0.029285522, -0.14116238, -0.05864782, -0.18382367, -0.06568212, 0.11855615, 0.101256005), target1);\n\t\n\tMF4 target2 = { -0.010602045, 0.053976092, 0.008913503, 0.0011945717 };\n\ttarget2 = MulAdd(a1, MF4x4(0.059325468, 0.10884231, 0.018158086, 0.031802185, 0.10368743, -0.06776637, 0.048326045, -0.06312353, -0.0025675546, 0.09309577, -0.025533969, 0.029684044, 0.017237723, 0.062099144, 0.047039766, 0.050348036), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.04767078, -0.06409279, 0.112965874, 0.04621161, -0.28172916, -0.13897015, -0.022806352, 0.26966885, 0.02019569, -0.10707113, -0.43058416, -0.14103983, -0.13225646, -0.020053176, -0.17319782, -0.009653082), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.0031349238, -0.060933832, 0.107986666, -0.019791966, -0.23946726, -0.18045186, 0.18286318, -0.05431065, 0.11742379, -0.019123906, 0.33327517, 0.07455424, -0.035427105, 0.18659347, -0.050884776, 0.019193258), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.22954239, 0.011265787, -0.026520751, -0.12629737, -0.07009803, 0.44925988, -0.15938939, 0.11956771, 0.11535644, -0.1302371, 0.1235775, 0.16483483, 0.022965495, 0.110546246, 0.00064579415, -0.12753843), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.047553673, 0.16213869, 0.7510964, 0.21228868, 0.40994287, 0.61919236, 0.3982374, -0.016163021, 0.3291035, 0.1134356, 0.12384387, -0.31114763, 0.21338554, -0.04721641, 0.122114286, 0.2717476), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.06529201, -0.08936482, 0.031857736, -0.02372691, 0.0416097, 0.28484538, -0.38181338, -0.05129518, 0.40150553, -0.01970737, 0.1043854, 0.11986372, -0.2267319, 0.0014845231, -0.035269983, 0.11712099), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.079867415, -0.09982735, 0.10313241, 0.055490237, -0.42685422, -0.3431141, -0.06037366, 0.17539841, -0.010511819, -0.09743252, 0.050748866, 0.11064108, -0.09785722, -0.10230299, -0.04106169, -0.016831731), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.06847075, -0.026447225, -0.123430386, 0.063637204, -0.37617612, -0.09615662, -0.26226708, -0.008175561, -0.08101131, 0.11093525, -0.13149206, -0.06363292, -0.0482858, -0.2771799, 0.10528571, 0.119109035), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.09151277, 0.029019276, 0.041349206, -0.011239478, 0.035083957, 0.05281079, -0.0742173, -0.018509442, -0.17175299, -0.4226507, -0.118186444, -0.0771296, 0.107038856, 0.0819975, 0.12445646, 0.07091557), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.1275357, -0.097659886, -0.0114354445, 0.023900568, -0.02511702, 0.005830569, -0.010882143, -0.04046068, -0.08638482, 0.08664022, -0.15654318, 0.03333846, -0.12521335, -0.11987078, 0.028556254, -0.020760164), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.38474286, -0.15288061, 0.04925842, 0.050009686, 0.23555282, 0.054784663, -0.0971203, 0.017791113, -0.35539824, -0.08806168, 0.08992579, 0.22714761, -0.047685623, -0.17510797, 0.1137738, -0.069451034), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.16623408, -0.08202571, -0.03291826, 0.0016267949, 0.20682698, 0.08788948, 0.10241089, 0.019209227, -0.14802241, 0.091788374, -0.238735, -0.06633396, 0.02360112, 0.1521805, -0.022510838, -0.08931379), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.034280665, -0.12431295, 0.092791, 0.15279225, -0.43373865, 0.20077267, -0.15919733, -0.27969292, -0.26948065, 0.19652127, -0.27456176, 0.04137772, 0.006545539, 0.0031402514, 0.03849979, -0.10978278), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.62025917, -0.32462567, 0.2817292, -0.18380783, -0.3338593, -0.49056754, 0.32645953, 0.4146035, 0.3773462, 0.54346967, -0.032203436, -0.14506778, -0.30044907, 0.40134314, 0.24155408, 0.24397472), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.089335114, -0.05529855, -0.18364899, -0.153323, -0.18347202, -0.060125064, -0.29216367, -0.2717291, 0.10592963, 0.38889876, 0.25363386, 0.33723134, -0.103703365, 0.14922962, -0.21206948, -0.20289616), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.035760924, 0.18820894, -0.12723185, -0.018780319, 0.124459654, 0.28909087, -0.2763883, -0.45110545, 0.098143585, 0.16052029, -0.055098705, -0.14840914, -0.0019514654, 0.07090622, -0.055036955, -0.0035953245), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.124669634, 0.23131305, -0.05750295, -0.056296032, 0.35691026, 0.2640789, 0.49912274, 0.26795143, -0.26460487, -0.026896512, -0.07179325, 0.17373477, -0.13186656, 0.0021319336, -0.016407885, 0.3014283), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.09491939, 0.11503968, -0.14077829, -0.043197304, -0.061866064, -0.1574549, 0.0054375776, 0.066160634, -0.17686372, -0.26767558, -0.038844116, 0.122724466, -0.05043839, 0.063884266, 0.0064002997, -0.13583377), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.031301867, -0.02947819, -0.0016769855, 0.12952408, -0.025022922, 0.065425046, -0.072289295, -0.071249105, 0.14579567, -0.09058119, 0.12663712, 0.1515388, 0.44767743, 0.02971349, 0.015892735, -0.08058422), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.2868111, -0.10812653, -0.29182926, -0.38444322, -0.0875354, -0.07220258, 0.05978065, 0.093328245, 0.058548283, -0.013913258, -0.20954674, -0.16400063, 0.3185215, 0.068897314, 0.15869021, 0.022877626), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.116845705, -0.12729645, 0.056697316, -0.21263942, -0.07000074, 0.073977455, -0.09006404, -0.029770354, -0.20823102, -0.20088868, 0.15658094, 0.24306639, -0.0453592, -0.16011035, 0.08521533, -0.032264974), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.1114789, -0.1083731, 0.10465276, -0.08903837, -0.06455987, 0.040030345, -0.07937248, -0.20654759, -0.26873547, -0.19390975, -0.039021965, -0.025602374, -0.5575801, -0.08876011, -0.19116728, -0.2401055), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.37626424, -0.0912155, -0.6153361, -0.71465075, 0.018208932, -0.14997734, 0.23627761, 0.20832567, 0.07427123, -0.37869486, -0.26574427, 0.187582, -0.37201726, 0.17809474, -0.02568795, 0.23900814), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.085337594, -0.50634587, 0.30636734, -0.2760558, 0.01893911, -0.08425695, -0.023656169, 0.021421626, 0.16813251, -0.039550815, 0.21165498, -0.027628547, -0.123874225, 0.013802332, -0.2732087, -0.09419671), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.07190724, -0.019237598, 0.020249542, 0.07541295, -0.03817686, 0.09266451, -0.12214172, -0.01344174, 0.03281797, 0.057655178, -0.059896503, 0.014948791, -0.13952477, 0.18810949, -0.19016883, 0.06842416), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.13111524, 0.14539744, -0.10212538, -0.2169032, 0.13810973, -0.12576458, 0.124372825, 0.04992259, 0.21758182, -0.22160134, 0.24321079, 0.017698256, 0.39995426, 0.074034885, 0.120019354, -0.15522505), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.023914235, 0.1424257, 0.010302871, 0.15150794, -0.040021677, 0.015862139, 0.14459212, 0.08632827, 0.04257336, 0.055059638, 0.0030461506, 0.011985334, -0.049230937, 0.07851301, -0.05119983, -0.111701734), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.04485158, 0.116597414, 0.00014909732, -0.012128512, 0.15801767, 0.18273115, -0.033926453, 0.05170487, -0.040683754, -0.18606974, 0.08324687, 0.069539666, 0.07098698, -0.014132968, 0.029499048, -0.07263477), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.04309544, 0.089722805, -0.018306322, 0.29061043, 0.15191254, 0.15917647, 0.0073858183, 0.039199475, 0.42514518, -0.053955313, 0.10820046, -0.09134685, -0.3087313, -0.16339037, -0.05226669, 0.044995327), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.008636428, 0.029086163, -0.09151674, -0.36466715, -0.0128008155, 0.018820466, -0.02700147, -0.0064047636, 0.28287655, 0.02709404, -0.05233492, -0.08967187, -0.042183813, -0.13990502, -0.005085154, -0.028511493), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.00022532263, -0.09108507, 0.0089569865, 0.052016005, -0.19314727, -0.355347, 0.08082937, 0.2134498, 0.21036889, -0.10165983, 0.20334485, 0.14575538, 0.017676214, -0.13149881, -0.018741794, -0.019599862), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.20513605, 0.47578803, -0.18631598, 0.2535432, -0.049522053, -0.37224755, 0.11227206, -0.37000927, 0.19969453, -0.47287735, -0.07506754, -0.0957071, 0.82927394, -0.54057014, 0.5800732, 0.08937558), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.022189412, 0.14622113, -0.4772564, -0.31178755, 0.10667427, -0.07335338, 0.06144331, 0.00056827103, -0.08263861, -0.009126272, -0.22802618, -0.20760304, 0.12688845, -0.061324466, 0.33361357, 0.38350767), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.021188622, 0.1151918, -0.10654739, -0.03341855, 0.24870358, -0.06689332, 0.11881217, -0.0045951125, -0.039464932, -0.030190004, 0.014174111, -0.025356272, 0.07469406, -0.0059695644, 0.008267219, -0.0991054), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.009981438, -0.36484948, 0.04801225, 0.22368562, -0.055985868, 0.229039, -0.10823553, 0.1477355, -0.0091677625, 0.06279847, 0.034393013, 0.031901076, 0.28783056, 0.086422645, 0.20860936, 0.054018307), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.08720452, -0.07756267, 0.018853918, -0.014108689, -0.019337144, 0.021249043, -0.05633926, -0.109904505, -0.088990815, 0.16876367, -0.13149975, -0.054357648, 0.08588134, -0.10262266, 0.12052009, 0.05154292), target2);\n\n\tconv2d_6_tf[gxy] = target1;\n\tconv2d_6_tf1[gxy] = target2;\n}\n\n//!PASS 8\n//!DESC Conv-4x1x1x112, Depth-to-Space\n//!IN INPUT, conv2d_tf, conv2d_tf1, conv2d_1_tf, conv2d_1_tf1, conv2d_2_tf, conv2d_2_tf1, conv2d_3_tf, conv2d_3_tf1, conv2d_4_tf, conv2d_4_tf1, conv2d_5_tf, conv2d_5_tf1, conv2d_6_tf, conv2d_6_tf1\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass8(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\n\tMF4 g0 = conv2d_tf.SampleLevel(sam, pos, 0);\n\tMF4 g1 = conv2d_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g2 = conv2d_1_tf.SampleLevel(sam, pos, 0);\n\tMF4 g3 = conv2d_1_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g4 = conv2d_2_tf.SampleLevel(sam, pos, 0);\n\tMF4 g5 = conv2d_2_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g6 = conv2d_3_tf.SampleLevel(sam, pos, 0);\n\tMF4 g7 = conv2d_3_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g8 = conv2d_4_tf.SampleLevel(sam, pos, 0);\n\tMF4 g9 = conv2d_4_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g10 = conv2d_5_tf.SampleLevel(sam, pos, 0);\n\tMF4 g11 = conv2d_5_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g12 = conv2d_6_tf.SampleLevel(sam, pos, 0);\n\tMF4 g13 = conv2d_6_tf1.SampleLevel(sam, pos, 0);\n\n\tMF4 ng0 = max(-g0, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 ng4 = max(-g4, 0);\n\tMF4 ng5 = max(-g5, 0);\n\tMF4 ng6 = max(-g6, 0);\n\tMF4 ng7 = max(-g7, 0);\n\tMF4 ng8 = max(-g8, 0);\n\tMF4 ng9 = max(-g9, 0);\n\tMF4 ng10 = max(-g10, 0);\n\tMF4 ng11 = max(-g11, 0);\n\tMF4 ng12 = max(-g12, 0);\n\tMF4 ng13 = max(-g13, 0);\n\n\tg0 = max(g0, 0);\n\tg1 = max(g1, 0);\n\tg2 = max(g2, 0);\n\tg3 = max(g3, 0);\n\tg4 = max(g4, 0);\n\tg5 = max(g5, 0);\n\tg6 = max(g6, 0);\n\tg7 = max(g7, 0);\n\tg8 = max(g8, 0);\n\tg9 = max(g9, 0);\n\tg10 = max(g10, 0);\n\tg11 = max(g11, 0);\n\tg12 = max(g12, 0);\n\tg13 = max(g13, 0);\n\n\tMF4 target1 = { -0.11952045, -0.10779418, -0.0626279, -0.042614873 };\n\ttarget1 = MulAdd(g0, MF4x4(-0.105475314, -0.07022547, -0.16326137, -0.12503424, -0.004623021, -0.0143323885, 0.042996034, 0.03422294, -0.38310882, -0.4431925, -0.28772846, -0.3213578, -0.018014904, 0.02429277, -0.07177951, -0.04458822), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.0973233, -0.032439478, -0.08420249, -0.054693196, 0.012960555, 0.06929602, 0.004247494, 0.061315402, -0.09607745, -0.16862066, 0.01537482, -0.038459156, 0.019662246, 0.059920583, -0.1071646, -0.06478967), target1);\n\ttarget1 = MulAdd(ng0, MF4x4(0.15711947, 0.0754732, 0.17891979, 0.098270796, 0.14122486, 0.14893766, 0.12408279, 0.14845194, 0.16199848, 0.14090912, 0.13496809, 0.1119815, 0.03974558, -0.057513904, 0.09213575, -0.0012252429), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.011343602, -0.02488338, 0.07799659, 0.06503721, 0.06380687, 0.048929837, -0.05555838, -0.050519127, 0.14673206, 0.18085165, 0.07261422, 0.09738158, 0.07395791, 0.005573146, -0.05454926, -0.13565786), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.08591514, -0.05664865, 0.23980616, 0.24876402, 0.19052829, 0.011938714, 0.21487322, 0.058656186, 0.036630988, 0.14918756, 0.013127693, 0.13092093, -0.37889576, -0.4068804, -0.27258882, -0.30605716), target1);\n\ttarget1 = MulAdd(g3, MF4x4(-0.25149816, -0.21979512, -0.24949454, -0.20483162, -0.10972783, -0.17315808, -0.08562763, -0.16086778, 0.044681527, 0.050807394, -0.019424994, -0.022418005, 0.10039492, -0.013666552, -0.22373566, -0.34493732), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.1419155, 0.081392206, -0.18103191, -0.2122926, -0.1445937, -0.015969204, -0.12368782, -0.0044421684, -0.09534078, -0.14815839, -0.1052107, -0.16341865, 0.3050403, 0.34488317, 0.16171226, 0.18700944), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(0.12444696, 0.08712589, 0.06266247, 0.031022022, 0.17707655, 0.24904409, 0.20961654, 0.2610619, -0.099262595, -0.06900819, -0.034567446, -0.020191457, -0.1468561, -0.04683958, 0.14910224, 0.244686), target1);\n\ttarget1 = MulAdd(g4, MF4x4(-0.002428158, -0.012889509, 0.0006541127, -0.0058380975, 0.096147396, 0.07791617, 0.119144954, 0.11699654, -0.024602454, -0.07894611, -0.00021709128, -0.03979557, 0.0028512406, -0.015790012, 0.0082511455, 0.029357092), target1);\n\ttarget1 = MulAdd(g5, MF4x4(-0.01410329, -0.004162405, -0.09005045, -0.07753674, 0.004509965, -0.024188736, 0.13799691, 0.10589621, -0.023018798, 0.0064198375, -0.103344224, -0.07463909, -0.060048997, -0.071094714, -0.13042289, -0.14482167), target1);\n\ttarget1 = MulAdd(ng4, MF4x4(-0.009015246, 0.01581748, -0.035448726, -0.012348933, -0.101627484, -0.05530413, -0.14063041, -0.121775225, 0.074719116, 0.033839386, 0.045573987, -0.006698053, 0.0015141299, 0.003634417, 0.017102007, 0.0074890694), target1);\n\ttarget1 = MulAdd(ng5, MF4x4(0.0042357175, 0.018735386, 0.058959343, 0.057424515, -0.021633089, -0.037194982, -0.14109972, -0.1506368, 0.004357002, -0.006871023, 0.05337361, 0.039684236, 0.087463334, 0.07772685, 0.12278512, 0.1224218), target1);\n\ttarget1 = MulAdd(g6, MF4x4(0.018359886, 0.046934873, -0.008225237, 0.020650858, -0.03961538, -0.014779162, -0.04161338, -0.00953579, 0.0017313146, 0.0068857935, -0.0024282748, 0.0047545764, 0.02635904, 0.027336216, 0.02701322, 0.029939381), target1);\n\ttarget1 = MulAdd(g7, MF4x4(-0.00067966996, 0.024480496, -0.015218739, -0.010472019, -0.03994461, -0.052318517, -0.04450191, -0.043226667, -0.03166469, -0.03799331, 0.015428865, -0.018422252, 0.00040845043, 0.03558268, -0.0099401595, -0.00054432114), target1);\n\ttarget1 = MulAdd(ng6, MF4x4(-0.0032104475, 0.019604867, -0.02486679, 0.002134673, 0.014368818, -0.0013395248, 0.017318068, 0.0021403218, -0.02198377, 0.010297547, -0.041619625, -0.02740482, -0.067249276, -0.03040953, -0.021304253, -0.009557115), target1);\n\ttarget1 = MulAdd(ng7, MF4x4(-0.019099236, -0.037010793, 0.013720462, 0.023708181, 0.016356282, -0.00028589502, -0.010570909, -0.009186907, 0.03493662, 0.055599142, -0.017043956, 0.004204044, -0.013573257, -0.013537684, 0.008151195, 0.0074913655), target1);\n\ttarget1 = MulAdd(g8, MF4x4(0.009309031, -0.0014795153, 0.025114728, -0.0066442797, -0.012085473, -0.0030560147, 0.002144206, 0.0009732741, 0.022301642, -0.0091133695, 0.0011837826, -0.020275833, -0.021349607, -0.011693419, -0.018912962, -0.022418445), target1);\n\ttarget1 = MulAdd(g9, MF4x4(-0.0045772395, 0.031085191, 0.01215795, 0.023887333, 0.023408212, 0.0005998807, 0.011254428, -0.004634461, 0.016601006, 0.046663348, 0.031117432, 0.04910873, -0.113230005, -0.035702843, -0.058746565, -0.053893737), target1);\n\ttarget1 = MulAdd(ng8, MF4x4(-0.020218112, 0.056803435, -0.0037077996, 0.05123925, -0.016713811, -0.05551032, -0.005916611, -0.037839632, -0.007671626, -0.009099201, -0.0010055836, 0.003332688, 0.020744357, 0.01957675, 0.057906736, 0.041446246), target1);\n\ttarget1 = MulAdd(ng9, MF4x4(0.022438819, 0.04616756, 0.035925094, 0.0639705, 0.0009332198, 0.020964272, -0.010805394, 0.031757344, 0.051255573, 0.032838948, 0.00055445684, -0.03195623, 0.04753827, 0.016436901, 0.04788274, 0.022093765), target1);\n\ttarget1 = MulAdd(g10, MF4x4(0.03479086, 0.035946105, 0.04343359, 0.04015664, 0.06081792, 0.061758887, 0.10128842, 0.007471392, -0.027261607, -0.01290544, -0.029938918, -0.050834358, -0.015550162, 0.0072828676, -0.04580556, -0.029642029), target1);\n\ttarget1 = MulAdd(g11, MF4x4(0.011150116, 0.029789668, -0.00354488, 0.045047592, -0.018265083, -0.020843878, 0.015457328, 0.0053232997, 0.0791804, -0.028661052, 0.079342775, -0.039631505, 0.14613943, 0.08323415, 0.049641483, 0.047863442), target1);\n\ttarget1 = MulAdd(ng10, MF4x4(-0.103034586, -0.107580125, 0.00044325445, 0.007830247, -0.017059505, 0.010152936, -0.02845979, -0.01841766, -0.10722863, -0.025262646, -0.07402096, -0.025055556, 0.0013303137, 0.12574737, -0.0161103, 0.06077798), target1);\n\ttarget1 = MulAdd(ng11, MF4x4(-0.0420636, -0.062703885, -0.06476972, -0.10516001, 0.018120673, 0.024305122, -0.013997766, 0.015815413, -0.06317691, -0.03968166, -0.054052643, -0.016300509, -0.08255892, -0.01612941, -0.04194852, -0.012637189), target1);\n\ttarget1 = MulAdd(g12, MF4x4(0.042659573, -0.10762496, -0.077143244, 0.12583935, -0.022020226, -0.0042312425, -0.016734738, 0.027007964, -0.06609771, -0.056038737, -0.0058528963, 0.035508137, -0.019722374, -0.055094264, 0.010977759, -0.009833099), target1);\n\ttarget1 = MulAdd(g13, MF4x4(0.063830875, -0.019885639, 0.055574782, 0.039456647, 0.01576898, -0.1389799, 0.063411795, -0.11600623, -0.013968303, -0.03318867, -0.06806915, -0.09373464, -0.022723546, -0.03329239, 0.014282872, 0.027576538), target1);\n\ttarget1 = MulAdd(ng12, MF4x4(-0.018100513, 0.06204485, 0.010761461, -0.045085587, 0.009286288, 0.02310671, 0.10633246, -0.090849996, 0.13112675, -0.01639808, 0.0022725316, -0.076779045, 0.11831251, 0.1460306, -0.10849466, -0.07749171), target1);\n\ttarget1 = MulAdd(ng13, MF4x4(-0.15850247, 0.118011266, -0.10121594, -0.007109052, 0.071873754, 0.06954878, 0.0377852, 0.044174008, -0.062925555, -0.01758927, 0.1416964, 0.17206357, -0.035632525, -0.04652215, 0.061932907, 0.034339), target1);\n\n\tMF4 target2 = { 0.05825913, 0.051491056, 0.038389463, 0.03321517 };\n\ttarget2 = MulAdd(g0, MF4x4(-0.009000901, -0.018048609, 0.013095594, 0.002321373, 0.0004716619, 0.00504148, -0.016826658, -0.014922383, 0.15059204, 0.16593806, 0.115392484, 0.12520894, 0.05049829, 0.060210057, 0.086421266, 0.07242362), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.06268658, 0.030466434, 0.07876877, 0.04129863, 0.04142328, 0.009963961, 0.051785357, 0.012811113, 0.1295883, 0.139931, 0.07733839, 0.08014211, 0.07156476, 0.0342396, 0.051614303, 0.043559864), target2);\n\ttarget2 = MulAdd(ng0, MF4x4(0.00041542648, 0.016051646, -0.011512418, 0.013076814, 0.03734479, 0.02791584, 0.012426691, 0.022044811, -0.034128398, -0.027107332, -0.021998279, -0.012139807, -0.033177473, -0.016310865, -0.078221664, -0.041203145), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.008398536, -0.010332053, -0.050231732, -0.039691273, -0.042082537, -0.030281143, -0.014039778, -0.0020190612, -0.11956351, -0.13638765, -0.09794402, -0.10228069, -0.08344795, -0.07944541, -0.004189214, -0.028206991), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.0002908945, -0.00831185, -0.06870294, -0.083311856, -0.024992501, 0.0038247898, -0.049389005, -0.020098582, -0.0135326125, -0.040408995, -0.012083491, -0.042174604, 0.16112538, 0.13720983, 0.13937058, 0.10870099), target2);\n\ttarget2 = MulAdd(g3, MF4x4(0.078961425, 0.082619205, 0.06910667, 0.06579004, -0.0077012256, -0.00038692637, 0.00015553503, -0.012561662, 0.00053048285, -0.01461681, 0.02600344, 0.024862211, -0.06958201, -0.048246548, 0.058762506, 0.036662634), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.023527982, -0.0028001352, 0.047800142, 0.09616409, 0.049143843, 0.030836122, 0.057244994, 0.025672587, 0.027565151, 0.039868724, 0.045296676, 0.04623187, -0.124759234, -0.14106254, -0.06337279, -0.076839216), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(-0.0911771, -0.064436875, -0.05308137, -0.022082496, -0.0040269364, 0.0014464161, -0.0029555515, 0.016098293, -0.026650434, -0.014081368, -0.06747348, -0.05481826, 0.097423114, 0.08620988, -0.01607732, -0.015440677), target2);\n\ttarget2 = MulAdd(g4, MF4x4(-0.014001735, -0.015001655, -0.013250577, -0.009930805, 0.04885879, 0.07092224, 0.025783395, 0.03792237, -0.04332465, -0.06244993, -0.046748653, -0.07132349, -0.0053951666, -0.016514057, 0.023807624, 0.044013456), target2);\n\ttarget2 = MulAdd(g5, MF4x4(-0.009097996, -0.016898679, -0.05043909, -0.063178614, -0.016210863, -0.02157998, -0.02654472, -0.042961173, 0.012103852, 0.019015301, 0.02492281, 0.03389976, 0.015276502, 0.009577683, 0.04132527, -0.00070621347), target2);\n\ttarget2 = MulAdd(ng4, MF4x4(-0.0057500796, 0.00728164, -0.003422421, 0.0038979584, -0.03127353, -0.019125199, -0.012988815, -0.031890683, 0.09352588, 0.019210607, 0.09824038, 0.016637104, 0.010692808, 0.022393884, 0.008312123, 0.014120716), target2);\n\ttarget2 = MulAdd(ng5, MF4x4(0.013895599, 0.023097904, 0.009370535, 0.014099512, 0.0124661345, -0.015076684, 0.03287286, 0.005912471, -0.03944815, -0.020340785, -0.06822037, -0.059383288, 0.03634978, 0.007832939, -0.007142306, -0.0061968984), target2);\n\ttarget2 = MulAdd(g6, MF4x4(0.033002097, 0.0516016, -0.021056438, 0.005715988, -0.02223013, -0.007962324, -0.024417123, -0.0014790733, 0.002167189, 0.00043749413, -0.007284963, -0.0027283782, 0.026238248, 0.01756047, 0.008969755, 0.014201024), target2);\n\ttarget2 = MulAdd(g7, MF4x4(0.011576685, 0.02087598, 0.0026766327, -0.0041780816, -0.05277701, -0.05412841, -0.05958835, -0.050426245, -0.00662945, -0.021645393, 0.03423904, -0.0064581474, -0.030403355, 0.018391011, -0.026089542, -0.0051510665), target2);\n\ttarget2 = MulAdd(ng6, MF4x4(-0.046202097, -0.0066081425, -0.03698851, 0.0034165455, -0.011859245, -0.020945566, -0.0028196946, -0.010053285, -0.011400397, 0.030595876, -0.018915813, 0.006780077, -0.060040582, -0.009586898, -0.004477886, 0.011279908), target2);\n\ttarget2 = MulAdd(ng7, MF4x4(-0.028692413, -0.032535568, 0.0017473884, 0.02207169, 0.0192618, 0.008956797, -0.0033381556, 0.006326402, 0.0169569, 0.041449737, -0.02611751, 0.0006410355, 0.006233776, 0.0008467914, 0.011884985, 0.009222136), target2);\n\ttarget2 = MulAdd(g8, MF4x4(0.017076496, -0.0045380928, 0.03444613, -0.009804047, -0.004829834, -0.004889702, 0.0057807956, 0.0015014127, 0.03458368, -0.0035773432, -0.007769679, -0.032449644, -0.021396799, -0.017612215, -0.012764735, -0.025224172), target2);\n\ttarget2 = MulAdd(g9, MF4x4(-0.011824532, 0.02335273, 0.00764845, 0.019215155, 0.022186808, 0.0066053392, 0.0071694753, -0.0036117272, 0.032144524, 0.05025988, 0.03982363, 0.052400436, -0.10555114, -0.03809396, -0.05334183, -0.05524487), target2);\n\ttarget2 = MulAdd(ng8, MF4x4(-0.024599254, 0.058805298, 0.00069874676, 0.06263439, -0.018460508, -0.053566024, -0.0022889362, -0.035818785, -0.0135854995, -0.015712813, 0.0012080368, 0.005957637, 0.009450094, 0.03186346, 0.059969924, 0.057706963), target2);\n\ttarget2 = MulAdd(ng9, MF4x4(0.026783831, 0.05475865, 0.027565574, 0.06032707, -0.0015639095, 0.024381682, -0.010199071, 0.037544634, 0.039889377, 0.03318851, -0.016529158, -0.0343188, 0.045666486, 0.021665907, 0.042189375, 0.02444145), target2);\n\ttarget2 = MulAdd(g10, MF4x4(0.03791853, 0.043746054, 0.056224477, 0.05098111, 0.075256795, 0.074653305, 0.116220035, 0.01853866, -0.04133627, -0.009134169, -0.0420953, -0.05210053, -0.021748418, 0.004422131, -0.05422814, -0.035721727), target2);\n\ttarget2 = MulAdd(g11, MF4x4(0.013814317, 0.03149986, -0.004971173, 0.04782029, -0.01693027, -0.017984565, 0.019328078, 0.008521426, 0.0845641, -0.027555496, 0.08150416, -0.04623306, 0.16494128, 0.09300831, 0.074097835, 0.0627848), target2);\n\ttarget2 = MulAdd(ng10, MF4x4(-0.10307174, -0.112654425, -0.005589254, -0.0062108496, -0.012491583, 0.011512013, -0.03142282, -0.023683488, -0.099848576, -0.031290524, -0.07236223, -0.037460987, 0.008760208, 0.1473594, -0.009216949, 0.07251379), target2);\n\ttarget2 = MulAdd(ng11, MF4x4(-0.04915367, -0.07121096, -0.06572174, -0.10967046, 0.019548079, 0.023992533, -0.019842865, 0.012366459, -0.07207817, -0.04237792, -0.054463565, -0.015374731, -0.092071235, -0.020860313, -0.054475963, -0.02303954), target2);\n\ttarget2 = MulAdd(g12, MF4x4(0.04160816, -0.118427366, -0.08661791, 0.12787233, -0.01990174, 0.0012960634, -0.016121056, 0.031429946, -0.06830865, -0.057132352, -0.0022302791, 0.03845933, -0.026981276, -0.063532256, 0.011805961, -0.009616678), target2);\n\ttarget2 = MulAdd(g13, MF4x4(0.07094465, -0.022284096, 0.060676746, 0.042626668, 0.011207256, -0.14960343, 0.05866539, -0.12742221, -0.021092903, -0.039463162, -0.07879986, -0.10232898, -0.026127055, -0.038111385, 0.019167708, 0.032637425), target2);\n\ttarget2 = MulAdd(ng12, MF4x4(-0.014270794, 0.07157703, 0.013714203, -0.047801998, 0.0060221693, 0.022788104, 0.10630103, -0.09606649, 0.12690987, -0.017079826, -0.0077072172, -0.082584485, 0.13256006, 0.16012523, -0.10966099, -0.07927409), target2);\n\ttarget2 = MulAdd(ng13, MF4x4(-0.17171615, 0.12114435, -0.10746857, -0.0074188868, 0.07854815, 0.07759372, 0.04310874, 0.051465522, -0.05963588, -0.014506484, 0.15522978, 0.18746643, -0.03845241, -0.0489534, 0.05837339, 0.032978524), target2);\n\n\tMF4 target3 = { 0.06614842, 0.045779686, 0.032838725, 0.017085627 };\n\ttarget3 = MulAdd(g0, MF4x4(0.2006987, 0.17832398, 0.26342955, 0.23500517, -0.012297829, -0.009008417, -0.039950736, -0.039973143, 0.34800097, 0.32196492, 0.30505183, 0.29214156, -0.21410535, -0.21166423, -0.16437815, -0.19172792), target3);\n\ttarget3 = MulAdd(g1, MF4x4(-0.008804151, -0.07085123, 0.013577994, -0.05192605, -0.08981402, -0.14702585, -0.09145975, -0.14835288, -0.15882517, -0.14785844, -0.2381482, -0.22867912, 0.010898514, 0.031957507, 0.040597558, 0.078252345), target3);\n\ttarget3 = MulAdd(ng0, MF4x4(-0.21658613, -0.1803885, -0.25954962, -0.20839214, -0.09597461, -0.09222647, -0.03909875, -0.03456191, -0.19723509, -0.16976605, -0.2041716, -0.1751425, 0.22901416, 0.24922715, 0.1800083, 0.23346905), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(0.110020064, 0.103858806, 0.052446555, 0.061105963, 0.032901537, 0.07140097, 0.11518793, 0.13860466, 0.13930707, 0.12712196, 0.19071707, 0.18399614, -0.08036458, -0.07349171, 0.021504594, 0.0024937368), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.059065036, 0.00698257, -0.099622436, -0.15676253, -0.10942482, -0.04869624, -0.13654554, -0.07341863, -0.014169851, -0.06390744, 0.016093008, -0.04540248, 0.29041344, 0.24451919, 0.26292154, 0.22136512), target3);\n\ttarget3 = MulAdd(g3, MF4x4(0.107946776, 0.097849295, 0.10266876, 0.09360328, 0.08931344, 0.08896482, 0.046495322, 0.044040844, -0.020361643, -0.030911373, 0.026598722, 0.019815676, -0.072677925, -0.042410247, 0.14127749, 0.13434973), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(-0.08809133, -0.03476601, 0.06420393, 0.14691353, 0.09296839, 0.06162562, 0.10992992, 0.0615685, 0.0168736, 0.06520281, 0.020010693, 0.046929173, -0.2219495, -0.21249783, -0.14622301, -0.14599061), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.13251069, -0.08977477, -0.08930347, -0.045490693, -0.10980218, -0.09510885, -0.07299872, -0.064053826, 0.011365247, 0.014091111, -0.054976214, -0.056936122, 0.10148144, 0.07451642, -0.08138598, -0.10161657), target3);\n\ttarget3 = MulAdd(g4, MF4x4(-0.0075518745, -0.005738622, -0.007577811, -0.00032088626, 0.032614008, 0.04858922, 0.00054855715, 0.011565026, -0.022675224, -0.034442738, -0.03580643, -0.05069376, -0.0020376542, -0.01505518, 0.019388825, 0.03746554), target3);\n\ttarget3 = MulAdd(g5, MF4x4(-0.011413172, -0.016877454, -0.048923567, -0.055012885, -0.007709447, -0.016109072, -0.047132388, -0.07146396, 0.002604099, 0.00014681708, 0.03429465, 0.043265607, 0.029014807, 0.03337814, 0.07582056, 0.041660666), target3);\n\ttarget3 = MulAdd(ng4, MF4x4(-0.020768544, -0.014378527, -0.01999972, -0.01385916, -0.012264676, -0.009959511, 0.0119015165, -0.016787319, 0.07266734, -0.0029914333, 0.08549183, 0.004367342, 0.008236065, 0.020370748, 0.0043428927, 0.007301017), target3);\n\ttarget3 = MulAdd(ng5, MF4x4(0.011654731, 0.025318999, -0.0029306612, 0.007426217, -0.00010868774, -0.020845588, 0.041991003, 0.024147986, -0.030741083, -0.012328637, -0.06617428, -0.06103115, 0.010491518, -0.013338451, -0.04666634, -0.046481613), target3);\n\ttarget3 = MulAdd(g6, MF4x4(0.0268538, 0.043785956, -0.01799385, 0.008743307, -0.013197458, -0.015049436, -0.017189734, -0.0047999253, -0.00059730676, -0.0008936153, -0.016006093, -0.0073406673, 0.014875853, 0.011491735, 9.819833e-05, 0.0073417514), target3);\n\ttarget3 = MulAdd(g7, MF4x4(0.019930955, 0.027112626, 0.01307941, 0.005268897, -0.060213763, -0.050415818, -0.069006495, -0.051405095, 0.0036414433, -0.008606397, 0.037427194, -0.0018103109, -0.037434716, 0.010187546, -0.026227329, -0.0033639795), target3);\n\ttarget3 = MulAdd(ng6, MF4x4(-0.03634798, 0.0007093891, -0.026819145, 0.009025687, -0.01750318, -0.020098133, -0.0063864207, -0.006606755, 0.0008565766, 0.028647956, -0.0024974607, 0.015250743, -0.048884176, -0.004310685, -0.0010757383, 0.00974984), target3);\n\ttarget3 = MulAdd(ng7, MF4x4(-0.031253602, -0.031743724, -0.009083253, 0.0145388115, 0.02048611, 0.0058071036, -0.0038228377, 0.00049654936, 0.0059105973, 0.03437731, -0.025785418, 0.004187733, 0.009980489, -4.08268e-05, 0.009384428, 0.0019492983), target3);\n\ttarget3 = MulAdd(g8, MF4x4(0.012587245, -0.0032654977, 0.029739188, -0.009440694, -0.0018237908, -0.0080032, 0.010499013, 0.0012466761, 0.03461923, -0.0060207327, -0.008771263, -0.034545746, -0.015023473, -0.008901684, -0.011490296, -0.01976464), target3);\n\ttarget3 = MulAdd(g9, MF4x4(-0.009444331, 0.020809013, 0.009985801, 0.020350901, 0.013234775, 0.004382635, -0.0007761826, -0.005247294, 0.034115106, 0.05190378, 0.039124765, 0.050993033, -0.0898732, -0.030428126, -0.044204578, -0.052484997), target3);\n\ttarget3 = MulAdd(ng8, MF4x4(-0.020434443, 0.053520404, 0.0007571144, 0.05895061, -0.018991265, -0.043982152, -0.004035192, -0.025452444, -0.012197152, -0.013770753, 0.0012919102, 0.003996682, 0.0056104586, 0.025686186, 0.05128293, 0.05105745), target3);\n\ttarget3 = MulAdd(ng9, MF4x4(0.030201769, 0.052521482, 0.029641917, 0.05559941, 0.0018870027, 0.020112835, -0.0043867202, 0.035877172, 0.02961142, 0.02163634, -0.027972858, -0.040669747, 0.03393723, 0.013455979, 0.03313782, 0.01968004), target3);\n\ttarget3 = MulAdd(g10, MF4x4(0.034817442, 0.04045217, 0.054816365, 0.05092461, 0.06600807, 0.062576495, 0.09923777, 0.006663677, -0.039958935, -0.010009866, -0.041522443, -0.04959681, -0.020962957, 0.003845031, -0.04910384, -0.03233655), target3);\n\ttarget3 = MulAdd(g11, MF4x4(0.015433112, 0.028965838, -0.0055138534, 0.042267464, -0.012690953, -0.009424165, 0.017896382, 0.01186686, 0.07231686, -0.038834292, 0.07033086, -0.052548733, 0.15721905, 0.09334892, 0.07676042, 0.06701375), target3);\n\ttarget3 = MulAdd(ng10, MF4x4(-0.09797534, -0.11201098, -0.0037222446, -0.008105951, -0.01152357, 0.012165641, -0.029051905, -0.021293389, -0.09600697, -0.028819272, -0.069084235, -0.035421908, 0.0054322914, 0.14168966, -0.0200274, 0.06505187), target3);\n\ttarget3 = MulAdd(ng11, MF4x4(-0.05034882, -0.06622497, -0.062471002, -0.100628324, 0.018115615, 0.019867867, -0.018836644, 0.007562053, -0.06317378, -0.034458403, -0.047243826, -0.009989589, -0.08270121, -0.018645251, -0.05160367, -0.023690399), target3);\n\ttarget3 = MulAdd(g12, MF4x4(0.03897899, -0.10862529, -0.081805214, 0.1202324, -0.021866674, -0.00041882638, -0.018235246, 0.027227063, -0.0656312, -0.053432237, -0.0029235696, 0.03549672, -0.022848906, -0.057047505, 0.013400545, -0.0072439364), target3);\n\ttarget3 = MulAdd(g13, MF4x4(0.06879516, -0.018637763, 0.058062725, 0.041045032, 0.011702424, -0.13693465, 0.05674195, -0.11679955, -0.022940686, -0.03856922, -0.07531371, -0.09692582, -0.019870926, -0.032572743, 0.026138868, 0.037639033), target3);\n\ttarget3 = MulAdd(ng12, MF4x4(-0.015270301, 0.06478719, 0.011016518, -0.04533957, 0.00688319, 0.024815995, 0.10159924, -0.08467507, 0.11939162, -0.01939453, -0.0058689644, -0.077881604, 0.118726775, 0.14489114, -0.10831982, -0.07972515), target3);\n\ttarget3 = MulAdd(ng13, MF4x4(-0.16734359, 0.10685446, -0.102714166, -0.010225307, 0.07306756, 0.07014447, 0.040464073, 0.04688462, -0.05489714, -0.01525318, 0.14690581, 0.17514132, -0.03250648, -0.03688211, 0.05047889, 0.03078089), target3);\n\n\tfloat2 outputPt = GetOutputPt();\n\n\tpos -= 0.5f * outputPt;\n\tOUTPUT[gxy] = MF4(MF3(target1.x, target2.x, target3.x) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t++gxy.x;\n\tpos.x += outputPt.x;\n\tOUTPUT[gxy] = MF4(MF3(target1.y, target2.y, target3.y) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\t\n\t++gxy.y;\n\tpos.y += outputPt.y;\n\tOUTPUT[gxy] = MF4(MF3(target1.w, target2.w, target3.w) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t--gxy.x;\n\tpos.x -= outputPt.x;\n\tOUTPUT[gxy] = MF4(MF3(target1.z, target2.z, target3.z) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Upscale_GAN_x2_M.hlsl",
    "content": "// Anime4K_Upscale_GAN_x2_M\n// 移植自 https://github.com/bloc97/Anime4K/blob/8e39551ce96ed172605c89b7dd8be855b5502cc9/glsl/Upscale/Anime4K_Upscale_GAN_x2_M.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Upscale_GAN_x2_2\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n// 圆括号内的输入只被采样一次\n// INPUT -> tf, tf1\n// tf, tf1 -> 1_tf, 3_tf, 3_tf1\n// 3_tf, 3_tf1, (1_tf) -> 4_tf, 6_tf, 6_tf1\n// 6_tf, 6_tf1, (1_tf), (4_tf) -> 7_tf, 9_tf, 9_tf1\n// 9_tf, 9_tf1, (1_tf), (4_tf), 7_tf -> 11_tf, 10_tf, 12_tf, 12_tf1\n// 12_tf, 12_tf1,  11_tf, (1_tf), (4_tf), (7_tf), (10_tf) ->  0ups, 0ups1, 0ups2\n// (INPUT), 0ups, 0ups1, 0ups2 -> OUTPUT\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex7;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex8;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex9;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex10;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1, tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = MF4(0.010385515, 0.011541315, -0.002942497, -0.00020902864);\n\t\t\tresult = MulAdd(src[i - 1][j - 1], MF3x4(-0.17498326, -0.14677401, -0.43065637, 0.10841958, 0.24096319, -0.008683959, -0.29844064, 0.3567803, 0.43360776, 0.11304715, -0.0802437, 0.190904), result);\n\t\t\tresult = MulAdd(src[i - 1][j], MF3x4(0.24688073, 0.086462855, 0.05716678, -0.1739644, 0.3236298, 0.23382919, 0.20481811, -0.022618154, -0.336325, -0.21624258, -0.18736486, -0.14936537), result);\n\t\t\tresult = MulAdd(src[i - 1][j + 1], MF3x4(0.38230455, 0.410552, 0.34809712, 0.2510045, 0.30689523, 0.09889703, -0.26991332, 0.1108426, 0.5083409, 0.2854462, -0.1912902, 0.40354714), result);\n\t\t\tresult = MulAdd(src[i][j - 1], MF3x4(0.46870667, -0.03530456, 0.13705169, -0.11884997, -0.0772201, 0.17073877, 0.03287621, -0.14975251, -0.18155691, 0.14545092, -0.1584816, 0.051269397), result);\n\t\t\tresult = MulAdd(src[i][j], MF3x4(-0.5830986, -0.009166566, 0.54358304, -0.4545001, -0.27541155, 0.6697277, -0.29205534, -0.61038095, -0.64781004, 0.32052672, 0.14704794, -0.6479083), result);\n\t\t\tresult = MulAdd(src[i][j + 1], MF3x4(-0.04402336, 0.05461938, -0.18035333, 0.5464947, 0.21475682, -0.6899343, 0.49390903, 0.62440956, 0.75365967, -0.26500008, 0.59187347, 0.10037025), result);\n\t\t\tresult = MulAdd(src[i + 1][j - 1], MF3x4(-0.25319895, -0.1764162, -0.22574338, 0.03075524, -0.29618785, -0.491323, 0.008427114, -0.363144, -0.17214127, -0.11891048, -0.19321653, -0.13424487), result);\n\t\t\tresult = MulAdd(src[i + 1][j], MF3x4(0.17425235, 0.07049646, -0.1759216, 0.05697634, -0.39496303, 0.35450256, -0.09984144, 0.15470548, -0.03375828, 0.06442114, 0.14598753, 0.46114844), result);\n\t\t\tresult = MulAdd(src[i + 1][j + 1], MF3x4(-0.19262458, -0.17141157, -0.11393742, -0.07778959, -0.006366565, -0.16713034, 0.2135569, 0.23494779, -0.37996295, -0.2767951, -0.1515432, -0.110363424), result);\n\t\t\ttex1[destPos] = result;\n\t\t\t\n\t\t\tresult = MF4(0.02648044, -0.0017647704, -0.016136197, 0.0011179475);\n\t\t\tresult = MulAdd(src[i - 1][j - 1], MF3x4(0.8031736, -0.1500194, -0.23398483, -0.060760673, 0.5049785, -0.099199474, -0.035531044, 0.0310586, -0.0310334, 0.15932913, 0.08973915, 0.08766925), result);\n\t\t\tresult = MulAdd(src[i - 1][j], MF3x4(-0.2187303, 0.20974335, 0.016500302, 0.15386087, 0.2381243, -0.176845, -0.003643712, 0.08195259, 0.18417378, -0.18228108, 0.19170114, -0.3758241), result);\n\t\t\tresult = MulAdd(src[i - 1][j + 1], MF3x4(0.4429508, -0.025832538, -0.021855514, 0.11322045, -0.08459551, -0.17815724, -0.19924322, -0.03736318, -0.22390507, -0.50430673, -0.13770194, 0.03014482), result);\n\t\t\tresult = MulAdd(src[i][j - 1], MF3x4(-0.15976174, 0.31052437, 0.2498092, -0.29137832, -0.10121105, 0.35164458, 0.4901633, -0.35297948, -0.2569739, -0.14258477, 0.12585007, -0.2552164), result);\n\t\t\tresult = MulAdd(src[i][j], MF3x4(-0.5260107, -0.8547037, 0.92173797, 0.37817466, -0.4162576, 0.10989847, 0.26875922, 0.8614761, 0.069195434, 0.045593478, 0.03790176, 0.7332446), result);\n\t\t\tresult = MulAdd(src[i][j + 1], MF3x4(0.14287843, -0.283008, -0.28487602, -0.13313514, -0.019538656, -0.02361782, 0.28037757, -0.10543745, 0.1586713, 0.12037641, 0.24249536, 0.2524637), result);\n\t\t\tresult = MulAdd(src[i + 1][j - 1], MF3x4(-0.037178896, 0.23858358, -0.18704462, -0.13747689, 0.07629898, 0.2710832, -0.71619016, -0.09074896, 0.30446374, -0.0052702115, -0.27990812, -0.1392364), result);\n\t\t\tresult = MulAdd(src[i + 1][j], MF3x4(-0.086045384, 0.695562, -0.23519892, -0.23438415, 0.16208446, 0.2172693, -0.16647956, -0.3718635, 0.024940055, 0.5650778, 0.20409326, -0.13530363), result);\n\t\t\tresult = MulAdd(src[i + 1][j + 1], MF3x4(-0.19389555, -0.028506106, -0.35060602, 0.22244014, 0.055054635, -0.17651209, -0.19871834, -0.02667603, -0.1402023, -0.02455308, -0.57856905, -0.2174221), result);\n\t\t\ttex2[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x16, Conv-4x1x1x32\n//!IN tex1, tex2\n//!OUT tex3, tex4, tex5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = tex2.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 conv2d_2_tf = MF4(0.051319666, 0.019196881, 0.0759832, 0.050857317);\n\tconv2d_2_tf = MulAdd(a1, MF4x4(-0.14656883, -0.044076134, -0.40314636, -0.08023388, 0.12564746, -0.21633625, -0.0210282, -0.19231434, -0.019945038, 0.020343186, -0.007134301, 0.013607319, 0.07334655, -0.050848506, 0.0011201366, 0.26975143), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(b1, MF4x4(-0.043205153, -0.13764456, -0.5368405, -0.04096279, 0.009450832, 0.23953767, -0.022408254, -0.124040656, 0.53450584, 0.02690831, 0.39857075, 0.42423433, 0.014167992, 0.055189077, -0.038074926, 0.12800713), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(c1, MF4x4(-0.05354771, -0.06626498, 0.0092389295, 0.100637995, 0.05051714, -0.0033487207, -0.0076860636, 0.013058279, 0.10727092, -0.31131467, 0.058990292, 0.46365786, 0.08736531, 0.038865663, -0.008022449, -0.067517675), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(d1, MF4x4(-0.25327486, -0.0041089035, 0.04877498, -0.36375836, 0.0003920389, -0.09273049, 0.016388323, 0.11530572, -0.14216854, 0.07370458, -0.27584067, -0.34536567, 0.0848517, -0.1954229, -0.22656868, -0.13531597), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(e1, MF4x4(0.7035245, 0.1131446, 0.1833189, 0.63726306, -0.20649737, 0.14149575, -0.084267326, 0.020898562, -0.026810758, -0.17932594, -0.08032681, 0.07790513, -0.01148237, -0.19930641, 0.33902612, -0.013703277), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(f1, MF4x4(-0.2862842, 0.01491211, -0.30474076, 0.19604082, 0.21565811, 0.29193363, 0.024934597, -0.17113955, 0.26136434, -0.12819171, 0.3874644, -0.30533502, 0.004006889, -0.07340657, -0.04817435, -0.013651047), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(g1, MF4x4(-0.14331155, -0.09605764, -0.06941299, -0.09740676, 0.0059936745, -0.27215815, -0.31393203, 0.17594862, 0.045626156, 0.060231503, 0.10607796, -0.030635068, 0.15021041, -0.19662435, -0.14648037, 0.028361326), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(h1, MF4x4(0.25090003, -0.2845429, -0.30109838, -0.070956856, -0.08051349, -0.07526823, 0.13524723, 0.14151429, -0.1232367, 0.08824123, 0.28804728, 0.31701297, 0.014839836, -0.09193038, 0.30188346, -0.07903937), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(i1, MF4x4(0.21150468, 0.13863595, -0.2624825, 0.1652623, -0.026336774, -0.45599234, 0.015901498, 0.23009071, 0.19700526, -0.11013044, 0.19850798, -0.19702299, 0.060643747, -0.03162518, -0.18272553, 0.24863112), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(a2, MF4x4(0.16361383, 0.0028921412, 0.18107067, 0.0720563, 0.06378758, -0.09442821, -0.3054202, 0.06843394, 0.20913927, -0.17700543, 0.14682317, 0.21683829, 0.02948067, -0.34866366, -0.04474257, -0.011365872), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(b2, MF4x4(0.008512374, 0.19717449, 0.4456541, -0.15356806, -0.24209222, 0.12543896, -0.18232138, 0.012759448, 0.052473016, 0.17268041, 0.25826934, -0.16848944, 0.10150518, -0.30244592, 0.38495708, -0.2090818), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(c2, MF4x4(-0.07227807, -0.10066125, -0.1090768, 0.13579647, 0.023154313, 0.079166815, -0.20014893, -0.21884407, 0.09634875, -0.22551452, 0.20771019, 0.16381831, -0.23455033, 0.12578821, -0.43342614, -0.23609087), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(d2, MF4x4(-0.11084086, -0.03875876, -0.17912252, -0.24158017, 0.070904315, 0.21862641, 0.02659038, -0.36572614, 0.06265698, 0.32029516, 0.12044166, 0.18424052, 0.050192874, 0.15095103, 0.13794746, -0.111053675), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(e2, MF4x4(-0.11362966, 0.5249116, 0.27814335, -0.023295242, 0.022581467, 0.3195408, -0.06865207, -0.13818301, 0.18826036, 0.21182717, -0.30241874, 0.02916674, -0.19999875, 0.8222055, -0.2981789, -0.31122693), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(f2, MF4x4(0.058648925, -0.39456168, -0.36158726, 0.4050607, 0.0609484, 0.01624418, -0.2699451, 0.25976416, 0.31131884, 0.18382475, 0.12856431, 0.3285595, 0.4798488, -0.26074353, 0.78901637, -0.071622506), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(g2, MF4x4(-0.038631868, -0.20723929, 0.045573164, 0.10398485, 0.20236868, 0.14958549, 0.18842755, -0.23352885, 0.18624173, 0.2800279, 0.23280786, -0.12909916, -0.037398554, 0.1557195, -0.04866289, -0.13633357), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(h2, MF4x4(-0.15441336, 0.0968205, -0.32649723, -0.021546176, -0.10667603, 0.18065608, 0.017242601, 0.027690934, -0.23079967, 0.093206555, -0.11170116, 0.19002458, -0.352287, 0.008375842, 0.2459501, -0.09389683), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(i2, MF4x4(0.2130623, -0.4781421, -0.53600657, 0.44947717, -0.018234696, -0.17257519, -0.063182175, 0.22729957, -0.037309792, 0.13939567, -0.013829814, -0.20586358, 0.052985236, -0.04452726, 0.1880475, 0.096934296), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(na1, MF4x4(0.026266143, -0.03171053, 0.2277772, 0.01093641, -0.007701242, 0.115488306, 0.029304042, 0.33619022, 0.14467055, 0.075788446, -0.076583475, -0.051929206, 0.02211152, 0.031270072, -0.075583085, -0.20198274), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nb1, MF4x4(-0.010648877, 0.21413183, 0.24339998, -0.22960022, -0.16156821, -0.45364898, -0.105244495, -0.07713787, -0.31945667, -0.097204186, -0.2457385, 0.04241939, -0.16228637, 0.13461526, 0.009693403, -0.13537757), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nc1, MF4x4(0.058250688, 0.007912516, -0.071061306, 0.01889538, -0.14592043, -0.10374761, 0.07840785, 0.008756123, -0.045008816, 0.05261628, -0.2615482, -0.01929421, -0.23048545, 0.010220507, -0.16385053, 0.031251106), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nd1, MF4x4(-0.03350765, 0.0737811, -0.09780837, -0.031780828, -0.1919008, 0.36382285, 0.19377235, -0.2797014, -0.12267188, 0.023496462, 0.38848102, -0.010005188, -0.09733866, 0.51535326, 0.47232744, 0.0073942994), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ne1, MF4x4(-0.27284998, 0.14916854, -0.25612846, -0.029941292, 0.18539569, -0.43832946, -0.119871736, 0.044226155, -0.106426276, 0.05740293, -0.046056107, -0.17616963, -0.52316684, 0.33400205, -0.08133327, 0.0948221), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nf1, MF4x4(0.32683802, -0.26026967, 0.19948171, -0.011760837, -0.30256173, -0.45944482, 0.051236197, 0.84710604, -0.08078167, 0.2675028, -0.27241448, 0.27764642, 0.13335843, 0.068502, -0.033614077, 0.19930291), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ng1, MF4x4(0.07075588, 0.029963106, 0.055358, 0.042518128, -0.1441339, 0.42236832, 0.1387107, -0.40421516, 0.02318193, -0.36765453, -0.21558793, 0.21393713, 0.31122518, -0.3358225, -0.4967671, 0.46344024), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nh1, MF4x4(-0.28364134, 0.19475235, 0.42310834, 0.060645495, -0.14013693, -0.049322303, -0.09870014, 0.23229486, -0.033104394, -0.37716264, -0.18488638, 0.17441164, -0.24427529, -0.26787207, -0.16721556, -0.10374529), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ni1, MF4x4(-0.3376618, -0.09682554, 0.3423445, 0.047880173, 0.3354013, -0.21854481, -0.40352795, 0.1841921, 0.008460585, -0.03459756, -0.22880521, 0.35112804, -0.01764322, -0.16448145, 0.107058726, -0.28482538), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(na2, MF4x4(-0.032480888, 0.0034003556, -0.032999255, 0.16414961, 0.098690405, 0.0887987, 0.32215804, -0.002440519, -0.16814353, 0.0029867117, -0.28380692, 0.060728613, 0.15944195, 0.16642234, 0.110365815, 0.22413619), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nb2, MF4x4(-0.088509634, 0.047311794, -0.30038288, -0.27227867, 0.41235012, 0.23889793, 0.7280631, 0.13555974, -0.08230139, 0.09955461, -0.13654864, 0.0314745, -0.275061, -0.10253638, -0.34706068, 0.03781376), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nc2, MF4x4(0.09819424, -0.017704371, -0.031446967, 0.061441656, -0.110502265, -0.19236599, 0.2783733, 0.12798637, -0.047672354, -0.018956421, -0.17555775, -0.018790504, 0.43967727, -0.62039405, 0.08790998, 0.4353703), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nd2, MF4x4(-0.019217307, 0.14623284, 0.015177701, 0.15983194, -0.106374666, -0.0131188845, 0.033161264, 0.41326195, 0.052029386, -0.11639186, -0.026856689, -0.020853983, -0.024652582, -0.12368135, -0.39344305, 0.17345576), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ne2, MF4x4(-0.047131967, -0.28568837, 0.4201909, -0.28901812, -0.13973507, 0.03312194, -0.16265458, -0.10710893, 0.21189946, -0.32837728, 0.12424836, -0.30587387, 0.036961686, -0.8623908, 0.3661179, -0.1692949), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nf2, MF4x4(0.1143412, 0.07707313, 0.3981437, -0.17059685, -0.094056316, -0.27234176, 0.12281097, -0.16966031, -0.1512859, -0.0524175, 0.1654043, 0.13700214, -0.3156236, -0.27636334, -0.52670264, 0.9250529), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ng2, MF4x4(0.16162306, -0.15842794, -0.06699449, 0.059618954, 0.06798694, -0.060685594, -0.14878511, 0.17194197, -0.05110082, -0.12152871, -0.2020905, 0.09337634, 0.0602552, -0.07327089, 0.07043988, 0.15926042), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nh2, MF4x4(-0.10312201, -0.13890414, -0.07694594, -0.29262447, 0.0597966, -0.228, -0.00046558332, 0.09373052, 0.2520174, -0.2992283, -0.01796473, -0.052195024, 0.09554047, -0.25678295, -0.38657847, 0.16130428), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ni2, MF4x4(0.21114396, -0.64854, -0.52819866, -0.67061704, 0.05760163, -0.121914886, 0.05448798, -0.1352843, 0.007051261, 0.065677196, -0.09763541, 0.032613076, -0.17908493, -0.7194699, -0.6342276, 0.031814635), conv2d_2_tf);\n\tMF4 nconv2d_2_tf = max(-conv2d_2_tf, 0);\n\tconv2d_2_tf = max(conv2d_2_tf, 0);\n\t\n\tMF4 conv2d_1_tf = MF4(-0.048558664, 0.11006767, -0.074099846, -0.016021004);\n\tconv2d_1_tf = MulAdd(a1, MF4x4(0.10187621, 0.11053595, 0.14810364, -0.18582201, 0.16617906, -0.011798966, 0.09280227, 0.13307849, -0.044728525, 0.10914104, 0.075626835, -0.10416733, -0.094498746, -0.06870642, -0.07571491, 0.04897303), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(b1, MF4x4(0.33485547, 0.03678466, -0.29866266, -0.048795477, -0.010474432, -0.10252797, 0.036609326, -0.013254512, -0.14475596, 0.011886287, 0.11828754, -0.13557065, -0.28870094, -0.17330378, 0.044048756, -0.019826433), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(c1, MF4x4(0.105582856, -0.039765045, 0.0818729, 0.09955303, 0.023201315, 0.09243788, 0.07389467, -0.012808492, 0.0492865, 0.19755632, -0.06548781, 0.08533675, -0.013952, 0.017339202, -0.20518751, -0.054678205), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(d1, MF4x4(-0.26653445, 0.04810761, -0.23108084, -0.19818014, 0.23671885, 0.016349426, 0.0045669116, 0.077428445, -0.140711, 0.11972277, 0.101062275, -0.18716832, -0.190941, -0.34035257, -0.09143259, 0.04359683), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(e1, MF4x4(-0.14573975, 0.23356283, -0.3772715, -0.22460096, -0.053278442, 0.069576025, 0.05169695, 0.17249753, 0.028048603, -0.25471392, -0.09931249, 0.2095619, 0.22173007, 0.38787642, -0.30738685, 0.01936576), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(f1, MF4x4(0.081078954, -0.16813248, 0.1542311, 0.17158946, -0.15383756, 0.025605323, 0.2360881, -0.14753577, -0.016537111, 0.048651446, -0.35849985, 0.01651406, 0.17044473, 0.13180882, 0.324054, -0.18812656), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(g1, MF4x4(-0.15537027, -0.08164218, 0.049979087, -0.31885874, -0.15126401, -0.14352658, 0.18948728, 0.020951044, 0.054829888, -0.18936221, -0.22699763, 0.14384085, 0.055476833, -0.011031805, -0.23653851, 0.02768591), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(h1, MF4x4(-0.34108123, -0.28492066, 0.50347435, 0.0034134283, 0.041766707, 0.12375689, -0.08600751, 0.22726676, 0.10521852, 0.16621545, 0.038216297, 0.029870255, 0.07065742, -0.03542451, 0.38924676, -0.117774665), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(i1, MF4x4(-0.19437145, -0.01827461, 0.15408134, -0.14991991, 0.13832837, 0.0668659, 0.092678316, 0.05341174, 0.21633142, 0.09575402, -0.111060366, -0.00874764, -0.21256353, -0.052944425, 0.16459747, 0.07091838), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(a2, MF4x4(0.022236984, 0.19067548, 0.049743406, 0.05148808, 0.23003219, 0.08688227, 0.030773275, -0.059972208, -0.039038613, 0.21701579, -0.11092254, -0.10850967, -0.17777155, -0.20399293, -0.006843039, 0.24139926), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(b2, MF4x4(-0.07928885, -0.011657496, -0.03982505, -0.031084592, -0.09403157, -0.13860224, 0.15166754, 0.1279725, -0.084909394, 0.18945958, 0.055481352, -0.24365151, -0.04130202, 0.105171725, -0.47306657, -0.2218246), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(c2, MF4x4(-0.06171395, 0.0029490888, 0.055825688, -0.01362009, 0.045571987, -0.04197536, -0.024671398, -0.11600467, 0.02611751, -0.06675449, 0.38841903, 0.109969236, 0.1846224, -0.22673915, -0.11488994, -0.18271959), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(d2, MF4x4(-0.08073766, -0.1512685, 0.09596278, 0.061552938, -0.23016383, 0.044725727, -0.1058148, -0.09081257, 0.25391936, 0.13075152, 0.1153331, 0.035533328, 0.14628118, 0.053434838, -0.061957166, -0.11092296), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(e2, MF4x4(0.004972408, 0.26720062, -0.0014180156, -0.15569477, 0.08964792, 0.39218047, -0.113748655, -0.20653862, -0.0182982, -0.009456181, 0.096566215, 0.19871894, -0.45192167, -0.19494532, 0.5282211, -0.033234302), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(f2, MF4x4(0.11633487, 0.055492207, -0.09550419, 0.019721292, 0.05191187, 0.110391244, 0.13541168, 0.108687185, -0.3231262, -0.071254596, 0.12103068, -0.063508354, 0.16086432, 0.22202429, -0.2793211, -0.059888415), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(g2, MF4x4(0.09845572, -0.11364447, -0.06817361, 0.20479278, 0.008171668, -0.10222864, -0.12512983, 0.11285637, 0.2092848, 0.12593135, -0.054839488, 0.1560058, 0.109415986, -0.04229047, -0.21525817, 0.10153635), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(h2, MF4x4(-0.26443723, 0.18267378, 0.2874903, -0.15007962, 0.23901714, -0.039331976, -0.4055973, 0.18869716, 0.060133275, -0.030050457, -0.16689767, -0.024223989, 0.43243858, -0.004281818, -0.5925553, 0.08473984), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(i2, MF4x4(-0.11769163, -0.6005158, -0.0700652, 0.0062212353, -0.022391787, 0.08070833, 0.10332995, 0.100591965, 0.1680161, 0.1209537, -0.11606606, -0.0032385625, -0.30508906, -0.11541758, 0.27825746, 0.18774803), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(na1, MF4x4(-0.06629365, -0.14032914, -0.2580204, 0.18303558, -0.1916567, 0.029803488, -0.12213443, -0.07165115, 0.012936617, -0.11358297, -0.19138688, 0.10422416, 0.18062063, 0.14369549, 0.10535131, -0.036331207), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nb1, MF4x4(-0.23739359, -0.14102252, 0.16535138, -0.055494435, 0.11510639, -0.02530117, 0.13571805, -0.11962709, 0.14311576, -0.11346015, -0.053082045, 0.23039193, 0.2412315, 0.34595123, -0.057626486, 0.1273758), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nc1, MF4x4(-0.031894613, 0.04056866, -0.14806709, -0.061261263, -0.05113628, -0.150074, -0.05885426, 0.025318084, -0.028839143, -0.14976048, -0.061418023, -0.10849576, 0.10669465, 0.025044547, 0.13002798, 0.033596892), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nd1, MF4x4(0.31830126, -0.109857574, 0.022382054, 0.19084917, -0.21992075, -0.06509279, 0.04586319, -0.10979886, 0.07565896, 0.008375114, -0.025531407, 0.112079956, 0.32532254, 0.39258766, 0.15983114, -0.047324624), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ne1, MF4x4(0.06333816, -0.43997836, 0.28480944, -0.037927028, -0.16247569, 0.14209846, -0.5309942, -0.23058164, -0.18387268, 0.3324917, 0.010288075, -0.2516956, -0.42476243, -0.19866063, 0.32058033, 0.052254338), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nf1, MF4x4(-0.019851776, 0.17185202, -0.14713249, -0.1373522, 0.23155597, -0.009191596, -0.15395427, 0.24423079, -0.11106813, -0.034888845, 0.17169674, -0.08786573, -0.08697707, -0.28842747, -0.25445274, 0.13578549), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ng1, MF4x4(0.2099323, 0.09262897, -0.08977398, 0.30791095, 0.12376861, 0.24654338, -0.097672515, 0.008614657, 0.006388779, 0.076170854, 0.25119394, -0.12392118, 0.3138793, -0.015998395, 0.15131904, -0.3009305), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nh1, MF4x4(0.33982292, 0.26557416, -0.3754559, -0.110353656, 0.08402225, -0.053171434, 0.051136248, -0.2696132, -0.14568366, -0.048726343, 0.06216166, 0.018804165, -0.084439, 0.15103953, -0.020082679, 0.15082058), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ni1, MF4x4(0.14522389, -0.0462971, -0.10824406, 0.14163211, -0.08392773, -0.22920173, -0.23795773, -0.2580316, -0.22207144, -0.15956368, 0.12665017, -0.08286834, 0.09581649, 0.12603259, -0.15513468, -0.010735423), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(na2, MF4x4(0.00818024, -0.15539199, -0.011369519, 0.05717366, -0.25330603, -0.018393422, 0.027386196, 0.121692196, 0.059138533, -0.1631142, 0.10282322, 0.08011751, 0.10027271, 0.255391, 0.010682224, -0.3095357), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nb2, MF4x4(0.117767766, 0.120644994, 0.09232613, -0.018057318, -0.038398392, 0.14537762, -0.016560853, -0.08958423, 0.06743331, -0.23562634, -0.123906426, 0.028323429, -0.09386831, -0.16833909, 0.019829117, -0.08108203), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nc2, MF4x4(0.05462869, -0.031615634, -0.121678494, 0.05315917, -0.012636353, -0.13374922, 0.18577711, 0.0005971412, -0.099537544, -0.060773082, -0.28754288, -0.20077203, -0.15873533, -0.11387871, -0.17841183, -0.120239034), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nd2, MF4x4(0.13845754, 0.223389, -0.20315485, -0.03479761, 0.1806296, 0.057029717, 0.010771242, 0.15245064, -0.0040082, 0.015283898, -0.34807077, 0.078581005, 0.026417086, -0.058825746, 0.07728649, 0.066044815), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ne2, MF4x4(-0.13820273, -0.050027788, 0.061389934, 0.11189863, 0.008062022, -0.17326912, 0.18159898, 0.08510656, 0.22065656, 0.3918094, -0.05124615, -0.22959533, 0.85480285, 0.5621734, -0.817405, 0.065126896), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nf2, MF4x4(-0.15309735, 0.1396192, 0.16662036, -0.10952867, -0.03473452, -0.08712044, -0.2422528, -0.19236326, 0.49887487, 0.2615184, -0.076631024, 0.16010238, -0.09836315, -0.27126545, 0.17968613, -0.21053861), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ng2, MF4x4(-0.18809205, 0.050410215, 0.1418759, -0.2876976, -0.13414268, 0.07458343, 0.096421175, -0.060676426, -0.17345451, -0.13678914, -0.06512698, -0.102106765, -0.12989639, 0.09089589, 0.07377932, -0.07263102), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nh2, MF4x4(0.45035192, 0.2393797, -0.045452517, -0.04553052, -0.26037264, -0.021321824, 0.24618645, -0.108074926, -0.030116243, 0.04612789, 0.2273845, -0.07468269, -0.48789972, 0.12628402, 1.0130231, -0.14672706), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ni2, MF4x4(0.5591947, -0.0326075, 0.12768768, -0.7916967, 0.023168698, -0.042015456, -0.12410894, -0.033611402, -0.14815444, -0.124497496, 0.08198418, -0.014488041, 0.4252749, -0.20253694, 0.042329047, -0.50953263), conv2d_1_tf);\n\ttex3[gxy] = conv2d_1_tf;\n\tMF4 nconv2d_1_tf = max(-conv2d_1_tf, 0);\n\tconv2d_1_tf = max(conv2d_1_tf, 0);\n\n\tMF4 target = MF4(-0.00089101185, -0.038285345, 0.023986168, -0.122330956);\n\ttarget = MulAdd(e1, MF4x4(-0.26519376, -0.45442572, -0.24128473, 0.56122154, 0.45048368, 0.32492852, -0.14123245, -0.027976234, -0.11764467, -0.47563952, -0.09401533, 0.024141679, -0.19278349, -0.5169275, -0.26203018, 0.04326379), target);\n\ttarget = MulAdd(e2, MF4x4(-0.14198317, 0.18704857, -0.20165806, 0.3868074, 0.26532957, 0.13556235, -0.5872983, 0.13357028, 0.48151335, -0.3750496, 0.020972235, -0.32213062, -0.46967435, 0.10506199, 0.24039303, -0.3906582), target);\n\ttarget = MulAdd(ne1, MF4x4(0.10981934, -0.0040414287, -0.0025180888, -0.23061854, -0.6781062, -0.27331296, -0.1538456, 0.31020573, -0.05341261, 0.45214307, 0.23456645, 0.3261386, -0.020520406, 0.46579385, 0.57791334, 0.441774), target);\n\ttarget = MulAdd(ne2, MF4x4(0.11475315, 0.18062253, 0.21255025, -0.1963313, -0.22190428, -0.19369084, 0.5878038, -0.051808596, -0.39728877, -0.044071846, 0.0066692936, -0.0066007506, 0.03501876, 0.27602142, 0.11396466, 0.81461775), target);\n\ttarget = MulAdd(conv2d_2_tf, MF4x4(-0.44411597, -0.11377309, 0.16160126, 0.47119814, 0.22932883, -0.43011594, 0.01986201, 0.01446102, -0.2783236, -0.07647468, -0.5016725, 0.4227215, 0.31808656, 0.23829709, -0.12855907, -0.15950239), target);\n\ttarget = MulAdd(nconv2d_2_tf, MF4x4(-0.4784548, -0.042179376, -0.4882858, -0.046462137, -0.21421364, -0.35029694, -0.15496174, 0.11386904, 0.22592051, 0.1590684, 0.49690887, -0.37077406, -0.48519966, -0.14407466, 0.24836525, 0.38462397), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(-0.043213595, -0.004892144, 0.29046863, 0.57064444, 0.37136674, -0.5603234, -0.30733815, 0.26740906, 0.016959883, -0.26567596, 0.101653986, 0.34387913, -0.13222592, -0.34239995, 0.32046688, 0.023962379), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.2955613, 0.44671535, 0.056253802, -0.6011664, -0.30715483, 0.16890973, 0.041257784, -0.1544008, 0.4653661, -0.22183, -0.23155628, -0.063779, 0.10350268, 0.02045104, -0.22509801, 0.14633855), target);\n\ttex4[gxy] = target;\n\t\n\ttarget = MF4(-0.010642331, -0.050244823, -0.009665539, 0.26457447);\n\ttarget = MulAdd(e1, MF4x4(-0.6336626, -0.23328744, 0.054100014, -0.6572063, 0.22899812, 0.47125596, 0.087406546, 0.5788615, -0.24324284, -0.17465535, 0.23223022, -0.4417298, -0.1195797, -0.14119461, -0.2301777, -0.1748931), target);\n\ttarget = MulAdd(e2, MF4x4(0.2554768, -0.0835268, 0.13054265, 0.033940453, -0.22754695, 0.053536188, -0.10300488, -0.10146903, 0.3104604, -0.5024146, 0.089460805, -0.20216464, 0.6033507, 0.12908716, -0.29953086, 0.292064), target);\n\ttarget = MulAdd(ne1, MF4x4(0.09586759, -0.037499018, -0.23253569, 0.63889295, 0.18920106, -0.6646685, 0.07218118, -0.61459464, -0.16397415, 0.3131906, -0.39399612, 0.36777702, 0.39545253, 0.030677503, 0.29420745, -0.02527333), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.2464485, -0.117239855, -0.13390337, 0.43170166, 0.10044111, -0.13811369, -0.007668335, 0.06387773, -0.11786689, 0.23223364, 0.12805769, 0.06410502, -0.2818576, 0.21286973, 0.17026524, -0.22247931), target);\n\ttarget = MulAdd(conv2d_2_tf, MF4x4(0.12590794, 0.25101408, -0.014941272, -0.06091461, -0.106272854, -0.23196393, 0.64016813, 0.0025616125, 0.16706267, 0.008579063, 0.04476896, -0.5403641, -0.011274305, -0.014704461, -0.068788156, 0.47190762), target);\n\ttarget = MulAdd(nconv2d_2_tf, MF4x4(0.10427173, -0.11386145, -0.6048206, -0.20245847, -0.011730377, -0.0119483, 0.06255473, -0.5017671, -0.07181296, -0.08626898, -0.035322662, 0.42718327, 0.041101683, 0.017210655, -0.07089471, -0.6541289), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(-0.43911383, -0.099413894, -0.22120018, -0.3121928, -0.32394376, 0.1159015, 0.04434728, 0.014404674, 0.040322874, 0.06727233, -0.046662346, -0.066591434, -0.004613069, -0.6566657, -0.13442427, -0.081967555), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(0.7393613, 0.059159152, 0.21900342, 0.26184326, 0.15656939, -0.05151207, -0.02730003, -0.055701576, -0.50296444, 0.09566756, -0.10248052, -0.39747316, 0.5877897, 0.83397114, -0.07968032, -0.3097048), target);\n\ttex5[gxy] = target;\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x16, Conv-4x1x1x40\n//!IN tex4, tex5, tex3\n//!OUT tex6, tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex4.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex4.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = tex5.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex5.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex5.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex5.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex5.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\t\n\tMF4 conv2d_1_tf = tex3.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_1_tf = max(-conv2d_1_tf, 0);\n\tconv2d_1_tf = max(conv2d_1_tf, 0);\n\n\tMF4 conv2d_5_tf = MF4(0.19016464, 0.19431238, -0.073604904, 0.101166695);\n\tconv2d_5_tf = MulAdd(a1, MF4x4(-0.11527973, 0.18487021, 0.0010509634, -0.3687562, -0.012861112, -0.37319645, -0.31061935, -0.051598914, 0.061436053, -0.2643697, -0.032551475, 0.59398615, 0.17265628, 0.1634019, 0.026527049, -0.0040123775), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(b1, MF4x4(-0.19826698, -0.29437867, 0.15727736, 0.44590214, 0.27655315, 0.28220633, 0.12990361, -0.09000104, -0.26396993, -0.53520125, 0.40639028, 0.7958488, 0.043264065, -0.08110669, -0.28618547, 0.12722827), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(c1, MF4x4(0.26455724, -0.36315665, -0.22116943, 0.049996275, 0.28526706, -0.0045478707, -0.20538875, 0.03192557, 0.04443011, -0.48084733, -0.32755423, 0.0075373487, 0.34481105, 0.04272154, -0.11092845, -0.07401724), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(d1, MF4x4(0.28374255, 0.13204694, 0.041846596, -0.57726663, 1.0038753, 0.42640173, -0.045806255, 0.3795911, 0.52897507, -0.2522673, 0.37759414, 0.158503, 0.111165345, -0.033814687, -0.37906894, 0.14007671), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(e1, MF4x4(0.30553007, -0.032092307, 0.6779135, -0.32720757, 0.29837027, 0.13522549, 0.21653146, 0.4553826, -0.22200927, -0.20921928, 0.36475468, 0.27989116, 0.6222863, -0.37027213, 0.06746388, 0.16675332), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(f1, MF4x4(0.31677073, -0.37482786, 0.4029838, 0.43627468, 0.32849845, -0.3442297, 0.1752726, 0.37502408, -0.1561963, -0.17489041, 0.7141825, -0.13179696, 0.17682795, 0.052273672, 0.07300372, 0.20322469), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(g1, MF4x4(0.07722791, 0.51997215, 0.2052519, -0.6162976, 0.07318059, -0.16653596, -0.0609372, -0.13199529, -0.011298448, -0.066250905, 0.11658636, -0.07317175, -0.068134755, 0.032443475, -0.27242857, 0.26479205), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(h1, MF4x4(-0.46400046, 0.34256476, -0.074927844, -0.082626544, 0.38616362, 0.10320202, 0.7306549, -0.41960227, -0.33295953, -0.35537082, 0.040369444, 0.18173583, 0.36835003, -0.078561984, -0.13071333, -0.06847678), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(i1, MF4x4(0.0951899, -0.21144655, 0.12174552, 0.09496668, -0.17025085, -0.36465582, 0.20724316, 0.07027979, 0.17988989, -0.16671456, -0.15068638, 0.26715076, 0.022114933, 0.14284599, -0.06316286, 0.017598677), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(a2, MF4x4(0.22179046, -0.19104601, 0.10500515, 0.22017653, -0.065115064, -0.027006533, -0.21086605, 0.00932852, -0.6196575, 0.04396425, 0.52487534, 0.61164427, 0.15172893, 0.219877, 0.103516005, -0.103571504), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(b2, MF4x4(0.122733794, 0.19491453, 0.22410785, -0.17341182, -0.18816754, 0.22092234, -0.055087283, -0.14617631, 0.4338981, -0.45366564, -1.4062341, 0.19594707, 0.2178627, 0.016837195, -0.2226328, 0.079190396), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(c2, MF4x4(0.16418308, 0.14917587, 0.35162288, 0.04064204, -0.037038237, 0.06579139, -0.08464511, -0.2156906, 0.22791082, -1.1695892, 0.53665465, -0.77753544, 0.0065266103, 0.15857838, 0.010236925, 0.14953533), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(d2, MF4x4(0.64548135, -0.02291521, -0.14370848, 0.049308565, 0.13637903, 0.14568083, -0.1488358, -0.0038734428, 0.0809154, -0.15466721, -0.06614126, -0.047732286, 0.311668, 0.22075401, 0.26094854, -0.27763176), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(e2, MF4x4(0.12075334, -0.23920162, 0.19115442, -0.33920774, 0.15199614, 0.27974042, -0.05022236, -0.15280685, 0.37271795, -0.76389724, -0.56503266, 1.4975219, 0.24002175, -0.12661129, 0.045953903, 0.2102559), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(f2, MF4x4(-0.02855315, -0.16729961, -0.27380818, -0.08810453, 0.061245166, 0.27268958, 0.2282609, 0.072155826, -0.65736717, -0.46307757, -0.5473049, 0.50772667, -0.1581774, 0.28763455, -0.1870661, -0.16523343), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(g2, MF4x4(0.23464368, 0.25850806, -0.054024473, -0.13788947, -0.24835043, -0.028147692, -0.23022775, 0.11494646, 0.31069988, -0.21450949, 0.40749013, -0.073832974, -0.16241223, 0.15673774, 0.23648019, -0.34203738), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(h2, MF4x4(-0.10198349, -0.052500926, 0.02638934, 0.19718044, -0.09078705, 0.07717591, 0.44648582, -0.30146563, -0.10124157, 0.12145466, -0.2133955, 0.16855773, -0.12310728, 0.35327804, -0.44273457, 0.20639896), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(i2, MF4x4(0.08033835, 0.0977811, 0.007069267, -0.110171854, -0.008568571, -0.10922981, 0.12048108, -0.0835261, 0.019930357, -0.12652875, 0.02870121, 0.12214532, -0.024486745, 0.3588685, -0.16501926, 0.11914434), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(na1, MF4x4(0.24003507, -0.040643565, -0.4267142, 0.34356147, -0.2618635, -0.1550601, -0.18566506, 0.33267352, -0.17584917, -0.24971883, 0.167064, -0.20808934, 0.3197215, 0.19626021, -0.16993162, -0.16976681), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nb1, MF4x4(0.159248, -0.33713767, -0.37823528, 0.25286102, -0.6171255, 0.01159639, 0.08387377, -0.0796005, -0.18405017, -0.11881008, -0.03026552, 0.030733835, 0.17692643, 0.17118043, 0.23938146, -0.40504465), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nc1, MF4x4(0.11274836, -0.023647472, 0.083114825, 0.5222033, -0.07415273, -0.3251913, -0.034298245, -0.07125199, 0.09593269, -0.23062208, -0.3168607, -0.13040248, -0.41249517, 0.39030293, 0.47400078, -0.109306306), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nd1, MF4x4(-0.49999082, 0.012254524, -0.035179958, 0.212335, -0.10354367, -0.19730526, 0.092015326, -0.07317916, -0.21900047, -0.13948579, -0.3228226, -0.22363624, -0.06421761, 0.16125691, 0.38075948, -0.31371582), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ne1, MF4x4(-1.0006356, -0.13763155, -0.8414047, -0.051852856, -0.44105098, 0.526086, 0.23091859, -0.6621191, -0.015348964, 0.37972412, -0.24986422, 0.13964157, -0.03184678, 0.25394693, -0.051659737, -0.34171197), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nf1, MF4x4(0.14520285, 0.1346628, 0.047271203, 0.64346415, -0.25639483, 0.052174076, 0.28681588, -0.32156095, 0.014350296, 0.028580237, 0.33776954, 0.06681965, -0.27312553, 0.44097883, -0.16519593, -0.7293824), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ng1, MF4x4(-0.65626615, -0.20801732, -0.18783297, 0.27998376, -0.51550066, -0.23272751, -0.3744558, 0.11267917, -0.1879591, 0.043539204, -0.17665562, 0.28546363, -0.20627682, 0.33176526, 0.34412766, -0.4310386), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nh1, MF4x4(0.51410156, -0.08615402, -0.2396778, -0.027256064, 0.11491742, -0.20842157, 0.3855824, -0.19823207, 0.0062098945, -0.2629099, 0.13158852, -0.08746773, -0.46980307, 0.57169086, -0.13392213, 0.13375558), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ni1, MF4x4(0.09988252, 0.19396676, -0.011215926, 0.2714918, 0.07985461, 0.30587563, 0.21915142, -0.14004244, -0.336268, 0.023702772, 0.15740578, -0.06307948, 0.06453276, 0.26978606, 0.45891464, -0.35511568), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(na2, MF4x4(-0.33263445, -0.13086738, -0.30128893, 0.03720744, 0.46366304, -0.13430476, -0.26493385, 0.14521147, -0.025578065, -0.043376725, 0.055235144, -0.08467402, 0.12879072, 0.2621278, -0.030150373, -0.079033755), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nb2, MF4x4(-0.15686864, 0.06962337, -0.24032803, 0.05093969, 0.12118379, 0.2144539, 0.21314697, -0.15564163, -0.15193312, -0.15797225, 0.061610706, 0.06689548, 0.42354256, 0.24339569, 0.14413804, -0.08890708), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nc2, MF4x4(0.021830576, -0.0682399, -0.25052184, 0.035374403, -0.0022370394, 0.23796171, 0.40747103, -0.14309348, -0.22325014, 0.12337428, -0.0727028, 0.12374459, -0.24148722, 0.34091887, 0.5052561, -0.13712624), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nd2, MF4x4(-0.583754, -0.10253819, -0.26736188, -0.084894784, 0.7130811, 0.5888696, 0.24837445, 0.20670207, 0.08242887, -0.03090308, 0.24002716, -0.04146999, 0.33550006, -0.006085788, -0.2078999, 0.016955601), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ne2, MF4x4(-0.23921615, 1.0534316, -0.29723012, -0.06626253, 0.022887046, -0.6139072, 0.22857629, 0.4203786, -0.02951169, 0.0501039, -0.054740574, -0.15496075, 0.9533812, 0.21038955, 0.33969748, 0.18853404), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nf2, MF4x4(-0.13571729, -0.045776337, 0.23663524, 0.1457326, -0.23159564, -0.44608104, -0.35497522, -0.14684997, 0.042379193, 0.16966693, 0.2560789, -0.07091574, 0.010749883, -0.26966086, -0.16322245, 0.095426805), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ng2, MF4x4(-0.027934154, -0.25037688, 0.19623838, 0.16128206, 0.21479255, 0.4066385, -0.06756232, -0.19681008, 0.09168842, 0.46935177, -0.059632402, -0.3419115, 0.2789002, 0.012714867, 0.15322958, 0.05255599), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nh2, MF4x4(0.2074098, -0.19564646, 0.21713807, -0.29207307, -0.08546043, 0.122562535, -0.5150736, 0.5190804, -0.116998374, 0.17080544, -0.29132518, 0.47585255, -0.14625762, -0.026589578, -0.13111407, 0.03473621), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ni2, MF4x4(-0.3399405, 0.063775875, -0.0121724615, 0.13809827, -0.1575877, 0.13529225, -0.28708464, -0.063552216, 0.08623843, 0.034867074, 0.25082812, -0.038863987, 0.08048017, -0.43998414, -0.05038377, -0.20123458), conv2d_5_tf);\n\tMF4 nconv2d_5_tf = max(-conv2d_5_tf, 0);\n\tconv2d_5_tf = max(conv2d_5_tf, 0);\n\t\n\tMF4 conv2d_4_tf = MF4(-0.021330277, -0.09496422, -0.1339419, 0.012216251);\n\tconv2d_4_tf = MulAdd(a1, MF4x4(0.259803, 0.14121838, -0.3216694, 0.16912009, -0.24997918, -0.024859427, 0.07951931, -0.17898253, 0.14770418, -0.38608834, 0.7155576, -0.008749993, 0.106385805, -0.08190305, 0.06277034, 0.05247095), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(b1, MF4x4(-0.10331291, 0.29847905, -0.20864278, -0.34607938, -0.0629403, 0.24202278, 0.15617771, 0.09471163, 0.29827452, -0.5237911, 0.8446165, -0.038001515, 0.085504964, -0.012998129, -0.12903701, -0.068084855), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(c1, MF4x4(-0.028803846, 0.117718086, 0.11924323, -0.23554896, -0.31169716, 0.2164557, 0.054745417, -0.2886858, 0.34304592, -0.15872054, 0.21533915, 0.23624876, -0.02507208, 0.16001348, -0.14645866, -0.013143789), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(d1, MF4x4(0.12311184, 0.16843726, -0.5478087, 0.036556758, -0.0024939126, -0.12264501, 0.090127975, -0.14638199, -0.33366996, 0.1817309, 0.018728942, -0.025097579, -0.00233696, 0.15182042, -0.072947, -0.15065937), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(e1, MF4x4(0.3238381, 0.19316678, 0.23307748, -0.10455285, -0.35405514, -0.06559013, 0.4206979, 0.08059919, -0.26130152, -0.23416454, -0.21285532, 0.07799376, 0.12372864, -0.3774056, 0.022239799, 0.22356819), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(f1, MF4x4(0.066345, 0.20370135, -0.01601085, 0.014701113, 0.27098605, 0.25511372, -0.048403386, -0.014162313, 0.11301996, -0.09638182, 0.12047054, -0.010323633, 0.21627729, 0.18377618, -0.12752205, -0.0668105), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(g1, MF4x4(0.18890683, -0.21100806, -0.38314816, 0.12188494, -0.09069559, 0.1785706, -0.19502263, -0.22853898, -0.096488185, 0.18105212, -0.0045291157, -0.018952737, 0.14934972, -0.17416078, 0.05363704, -0.17642738), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(h1, MF4x4(-0.15392087, 0.13997103, -0.12765433, -0.054465868, 0.0061383434, 0.03424787, -0.08585949, -0.10249745, -0.055375032, -0.047258787, -0.10105776, 0.09468892, 0.32030013, -0.14938186, 0.18287018, 0.007592655), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(i1, MF4x4(0.109669484, 0.02212132, 0.038995523, -0.0041161263, -0.12115841, -0.048061926, 0.06674463, -0.33846095, 0.04251217, -0.05917749, 0.17834029, 0.010219928, 0.2690458, 0.09282476, 0.077470005, -0.07310091), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(a2, MF4x4(0.4314233, 0.035379685, 0.27331847, 0.19597715, -0.09619968, -0.055907905, 0.07898602, 0.031254813, -0.09366987, -0.37436283, 0.061305135, -0.32644534, -0.16999187, 0.06906536, -0.1228417, -0.09826574), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(b2, MF4x4(0.6059936, -0.10060162, -0.18080838, 0.26205355, 0.033052504, -0.10625297, -0.0038814575, 0.026052764, 0.19484659, -0.24242568, 0.8054419, -0.3437365, -0.010305425, -0.079504244, 0.11879563, -0.14375582), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(c2, MF4x4(0.23313539, -0.026485069, 0.13332158, 0.28462213, -0.19786534, 0.048259735, 0.024113638, 0.23403068, -1.0330093, 0.0059400625, 0.23721488, -1.379481, 0.12166913, -0.07133997, 0.060898513, 0.092720084), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(d2, MF4x4(0.16513251, 0.013819962, -0.009859532, -0.037474833, 0.25651336, -0.131653, 0.03145131, -0.27886832, 0.27808505, -0.099978246, -0.11189488, 0.053313572, 0.11455811, 0.10826371, 0.0017301271, -0.041959), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(e2, MF4x4(-0.037442397, 0.061722398, 0.099159, -0.18970016, -0.13042277, 0.16767356, -0.028342545, 0.18715699, 0.22246139, 0.3154743, -0.39717823, 0.26053482, -0.012097491, 0.1746896, 0.3899962, -0.13013846), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(f2, MF4x4(-0.14552362, -0.26800197, 0.09035887, 0.24266347, -0.14494316, 0.033814326, -0.06647855, -0.16609156, 0.30540654, 0.037082594, 0.14951941, 0.12753695, -0.045153987, -0.28476146, 0.37640104, -0.04667195), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(g2, MF4x4(0.2071077, -0.09297775, -0.04906301, -0.24280597, 0.15925987, -0.05631783, 0.08169953, -0.20124075, 0.23060048, -0.05786468, 0.23959383, 0.1620485, 0.14333409, -0.12757483, -0.1424963, 0.13118197), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(h2, MF4x4(-0.101942524, -0.02240319, 0.11718157, -0.13591368, 0.11223302, -0.042933583, -0.07766777, 0.01667011, 0.07462998, 0.020704709, -0.04329035, -0.01358702, 0.13569939, 0.015980164, -0.08001042, 0.13890027), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(i2, MF4x4(0.01755685, -0.047599614, 0.06456479, -0.08004052, 0.08108282, 0.06789228, -0.14048836, -0.020240005, 0.039701223, 0.023405846, 0.06305444, -0.046804685, 0.040620867, 0.013529182, -0.094961315, 0.02959053), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(na1, MF4x4(-0.053775985, -0.0060494044, 0.14724614, 0.07248909, -0.056616947, 0.0004714896, -0.18737504, -0.15240799, -0.030883765, -0.007487297, -0.0044565946, 0.15024893, -0.16870505, 0.09338804, -0.21873595, -0.14493267), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nb1, MF4x4(-0.045113027, -0.2153715, 0.04520989, 0.26561612, -0.12634845, -0.10975088, -0.3677834, -0.4343602, -0.34146985, 0.29135808, 0.026339425, -0.0995021, 0.012693227, 0.07312179, 0.21671581, 0.11961088), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nc1, MF4x4(0.19766524, -0.31538734, 0.35708517, 0.33092737, 0.027086282, 0.024219114, -0.15289012, -0.18128034, -0.16041638, 0.057314564, 0.079830885, -0.08828221, 0.11828446, -0.13336371, -0.078453206, 0.21232514), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nd1, MF4x4(-0.13100033, -0.24849984, 0.3087074, 0.017271562, -0.17455627, -0.014364008, 0.077686995, -0.015820628, 0.18584616, -0.16705278, -0.3169503, 0.09107534, -0.04958684, -0.008202742, 0.024148908, -0.04654239), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ne1, MF4x4(-0.16020702, -0.18623418, -0.29434547, 0.5008317, 0.23796988, -0.11154579, -0.5167728, -0.14195764, 0.15495163, -0.028505204, -0.2105556, 0.22491512, -0.11658545, 0.31665426, 0.35085753, -0.40148884), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nf1, MF4x4(0.24866697, -0.3752738, 0.8472619, 0.16663249, -0.25808626, -0.037561346, -0.1440471, -0.107407264, 0.016663626, 0.1599037, -0.31926402, 0.15272903, -0.14700623, -0.05275371, 0.061130624, 0.084672675), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ng1, MF4x4(-0.24184473, -0.016008917, 0.040023588, 0.1517675, -0.1339458, 0.009985992, 0.15634708, -0.07649679, 0.0021696684, -0.07027257, -0.07509208, -0.27060902, -0.21299353, 0.12154156, -0.3159698, 0.2511261), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nh1, MF4x4(0.19845779, 0.023986215, -0.073409855, 0.0812208, 0.013382121, -0.049414996, -0.12990347, 0.052681953, -0.12787153, -0.100129806, -0.036296804, -0.13915883, -0.24022135, 0.167096, -0.15128131, 0.17779276), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ni1, MF4x4(-0.05787442, -0.19698323, 0.13090582, 0.1501304, -0.09954089, -0.008470983, -0.095334776, 0.114635326, -0.16330223, -0.046815667, -0.086304545, -0.15729928, -0.1982723, 0.10607274, -0.25540838, 0.09633669), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(na2, MF4x4(-0.25680968, -0.18444876, 0.053333476, 0.10470261, 0.17798793, -0.108659215, 0.1787569, -0.027407814, 0.12637395, -0.038193744, -0.16185284, 0.14068736, 0.092281684, 0.022276353, 0.013779975, 0.026369803), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nb2, MF4x4(-0.17329752, 0.21632285, -0.036964342, 0.30856085, 0.015225849, 0.04158692, -0.010607313, 0.16295516, 0.18873654, 0.24728407, 0.09787, -0.14381099, -0.091119304, 0.12914585, -0.039659716, -0.10700463), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nc2, MF4x4(-0.037163302, 0.05201725, -0.149489, -0.05682234, -0.022634465, -0.074764505, -0.010783339, 0.028970495, -0.045976285, -0.1923207, -0.037494432, -0.13024884, -0.1957353, 0.013454359, -0.30236122, -0.078870796), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nd2, MF4x4(-0.17753989, -0.1549664, 0.08087595, 0.046868976, -0.09354348, 0.22648604, 0.002651186, 0.11890617, -0.0073132347, 0.05030891, -0.08128038, 0.14395374, -0.001108739, -0.030957213, -0.03568773, 0.055131156), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ne2, MF4x4(-0.029484594, -0.013036961, -0.31721568, 0.11611545, -0.24111903, -0.33007705, 0.5950326, -0.070911475, -0.04757172, -0.037676062, -0.14590797, 0.076822214, -0.1672743, -0.41848892, 0.39202756, -0.30958134), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nf2, MF4x4(0.17605461, 0.12216047, -0.02412872, -0.14132546, -0.052373543, 0.08169531, 0.18497281, 0.074685514, -0.055427983, 0.14018987, -0.11671619, 0.108945735, -0.032986425, 0.11385016, 0.05801377, -0.1457665), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ng2, MF4x4(-0.27222672, -0.0074164676, 0.35768685, 0.0074552484, 0.16729778, 0.14860032, -0.3657366, 0.24510175, -0.0621289, -0.0137252435, -0.26145887, 0.0556681, -0.07332952, 0.13122542, -0.020396946, 0.113705456), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nh2, MF4x4(0.08118381, -0.06442098, 0.00044297878, 0.13279027, -0.20708169, 0.11252618, -0.033728387, -0.0105973175, -0.2138218, 0.34612998, -0.15597765, 0.18179017, -0.007853463, -0.045547944, 0.22064093, 0.0548327), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ni2, MF4x4(-0.10656318, -0.014200068, 0.062040597, -0.037210476, -0.07271065, -0.027337732, -0.14988437, -0.14711551, -0.028843492, -0.0046596485, -0.15023676, 0.08530336, -0.016875269, -0.024734195, 0.055177588, 0.010381644), conv2d_4_tf);\n\ttex6[gxy] = conv2d_4_tf;\n\tMF4 nconv2d_4_tf = max(-conv2d_4_tf, 0);\n\tconv2d_4_tf = max(conv2d_4_tf, 0);\n\n\tMF4 target = MF4(0.07878663, -0.045328207, -0.07142425, -0.006036755);\n\ttarget = MulAdd(e1, MF4x4(-0.4756803, -0.16041027, 0.30747655, 0.27719444, 0.33626345, -0.093426555, -0.08751585, -0.025898175, 0.12469858, 0.162526, 0.071950376, 0.36727026, -0.26165214, 0.17652564, -0.081568465, 0.17669047), target);\n\ttarget = MulAdd(e2, MF4x4(0.10045615, -0.47277164, 0.13970673, -0.036603283, 0.10723418, -0.0733819, 0.07046736, 0.04479655, -0.5100679, 0.4051206, -0.3043826, 0.07709692, 0.25090587, -0.5827475, 0.27195984, 0.42297873), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.34415862, -0.056642354, -0.32332316, 0.049897127, 0.08399151, 0.683046, -0.16349371, -0.4878456, -0.097749546, 0.7214421, -0.2821467, -0.16691755, 0.3712332, -0.71557045, 0.40365914, 0.37325174), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.333854, 0.11971563, -0.26533902, -0.033346854, 0.09896302, -0.19311592, -0.006087015, -0.104003794, 0.05347405, -0.16057043, 0.15876219, 0.1538847, -0.07954591, 0.24062383, -0.025401022, -0.33599105), target);\n\ttarget = MulAdd(conv2d_5_tf, MF4x4(0.11794056, -0.0031797416, 0.08360105, 0.12222232, -0.16638078, 0.26014742, -0.047267277, -0.27900735, 0.17616066, -0.12788172, 0.22856903, -0.39034957, -0.36313176, 0.12272574, 0.2235959, -0.31102005), target);\n\ttarget = MulAdd(nconv2d_5_tf, MF4x4(0.03297161, 0.19597028, -0.068131894, -0.059938233, 0.18935929, -0.12004069, 0.08705267, 0.26411813, -0.021374375, 0.24630849, -0.08980925, 0.15982057, 0.3533297, -0.15414584, -0.19008748, 0.11310849), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(-0.4622819, 0.31923467, -0.38989246, 0.5539857, -0.035433546, -0.12729715, -0.0669769, -0.048216928, -0.32078394, 0.26958883, 0.08897814, -0.31043166, 0.26743132, 0.38835636, -0.30535862, -0.22241123), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(0.47431698, -0.755935, -0.075302646, 0.27771655, 0.052087527, -0.17221431, 0.0008429987, 0.15527548, -0.04587466, -0.11802989, 0.39905685, -0.07758683, -0.11415051, 0.004637339, -0.19803126, 0.19956517), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.36277947, -0.13364364, 0.18459712, -0.1705512, -0.46083033, 0.43629453, 0.112646095, -0.18511245, 0.037818372, 0.1220617, -0.22268273, -0.11983507, -0.5432721, -0.2102279, -0.014456884, 0.16428374), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(0.22811654, 0.16262956, 0.18411161, 0.49102694, -0.15078211, -0.6144134, -0.11632199, 0.2740543, -0.11322067, -0.16751853, 0.18453367, 0.14305107, 0.36418238, -0.34248996, -0.055178564, 0.37168074), target);\n\ttex1[gxy] = target;\n\t\n\ttarget = MF4(-0.17363991, 0.071162574, -0.09289675, 0.013446863);\n\ttarget = MulAdd(e1, MF4x4(-0.35645446, -0.01804877, -0.53608185, 0.32968932, 0.13975728, -0.1716116, 0.09503091, -0.12088551, 0.30239868, 0.9217966, 0.016221086, -0.26894137, -0.0047026747, 0.54764843, -0.2826915, 0.0016894634), target);\n\ttarget = MulAdd(e2, MF4x4(-0.15123259, 0.2014175, 0.05961645, -0.32386652, -0.25275725, 0.3658508, -0.104193784, -0.02756655, 0.2696138, 0.17608197, 0.17685752, 0.6808081, -0.40293297, 0.48387393, 0.25278264, 0.28291366), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.18928573, -0.18908137, 0.47045723, 0.5454373, 0.31339395, -0.0064702537, -0.37307036, -0.37479213, 0.2235379, -0.370863, 0.02827034, 0.024350066, -0.32538193, -0.33686417, 0.8949382, 0.3324315), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.17215039, -0.14995, -0.4451278, 0.30758965, 0.21607, 0.08995007, 0.09553425, -0.21233945, -0.14442022, 0.09295349, -0.29228872, -0.3875935, 0.11704046, -0.4206096, 0.35226774, -0.08189522), target);\n\ttarget = MulAdd(conv2d_5_tf, MF4x4(-0.12517966, 0.060051568, -0.38888076, 0.08354471, 0.17010468, -0.34286287, -0.06961373, 0.032387406, -0.025718998, -0.1661844, -0.075671494, 0.10289619, -0.28309906, -0.14461538, 0.22726184, 0.4752376), target);\n\ttarget = MulAdd(nconv2d_5_tf, MF4x4(0.15411675, 0.17533994, 0.3406641, -0.0597274, -0.21072194, 0.1517182, 0.032032263, 0.18653658, 0.20970167, -0.10793765, -0.05335404, -0.095203936, 0.2917104, -0.1170929, -0.11652503, -0.46912733), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(-0.272871, 0.07467413, 0.16981912, 0.57318956, 0.35038894, -0.06679483, 0.3777534, -0.01522816, 0.2588504, -0.008976239, 0.31769443, 0.07070477, 0.059302222, 0.28855336, -0.14700443, -0.08605704), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.27067363, -0.2191635, -0.2377148, -1.0028448, -0.25673935, 0.10997322, -0.39032057, 0.06524818, 0.5248202, 0.40049195, 0.6711809, 0.2878331, 0.19606547, -0.092196286, 0.27838528, 0.03120515), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.3029178, -0.027027214, 0.13855064, -0.16550988, 0.2354576, -0.1715326, 0.12981784, 0.5013446, 0.24411377, -0.13030572, -0.08595908, -0.104394995, 0.16794646, -0.044388745, 0.2807999, 0.39108425), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.05535261, -0.15662162, 0.14935054, 0.10706811, 0.026958441, -0.15323113, -0.19261432, -0.24361719, -0.2607876, 0.038486157, -0.04509224, 0.18722118, -0.14478058, 0.03614682, -0.12608361, -0.5203596), target);\n\ttex2[gxy] = target;\n}\n\n\n//!PASS 4\n//!DESC Conv-4x3x3x16, Conv-4x1x1x48\n//!IN tex1, tex2, tex3, tex6\n//!OUT tex7, tex4, tex5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = tex2.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\t\n\tMF4 conv2d_1_tf = tex3.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_1_tf = max(-conv2d_1_tf, 0);\n\tconv2d_1_tf = max(conv2d_1_tf, 0);\n\t\n\tMF4 conv2d_4_tf = tex6.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_4_tf = max(-conv2d_4_tf, 0);\n\tconv2d_4_tf = max(conv2d_4_tf, 0);\n\n\tMF4 conv2d_8_tf = MF4(-0.009278051, 0.62221414, 0.22868732, 0.14880095);\n\tconv2d_8_tf = MulAdd(a1, MF4x4(-0.162897, -0.21250516, -0.11219427, 0.30969706, 0.078927204, -0.14922144, 0.5486932, 0.2884913, 0.07018745, 0.45946357, -0.23759702, -0.18914284, 0.19762751, 0.56881535, -0.2141465, 0.27216902), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(b1, MF4x4(-0.17507325, -0.577772, -0.46351492, 0.09431303, 0.023881523, -0.068162896, -0.0029204858, -0.076631226, -0.07645065, 0.28997856, -0.0349899, 0.087704636, 0.29194608, 0.7767595, 0.17478088, -0.295144), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(c1, MF4x4(0.23039296, -0.000184939, -0.032427344, 0.0926983, -0.4264918, -0.44138262, 0.39098918, -0.0102598835, 0.066287994, 0.15478721, -0.062338993, 0.15079321, 0.120016515, 0.7005824, -0.12260436, 0.090042405), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(d1, MF4x4(0.014269367, 0.21645544, -0.4203915, 0.0077638677, -0.18618487, 0.30165052, 0.6985895, -0.014695781, -0.071353786, -0.49996287, -0.79902583, -0.06343025, 0.291085, 0.28801495, 0.46547806, 0.1311194), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(e1, MF4x4(0.17163453, 0.21760814, -0.67896426, 0.1487859, 0.05881719, -0.08391752, 0.44536906, 0.24853623, -0.7685656, 0.45705163, -1.0204223, 0.1884743, -0.3251896, -0.49221343, 0.38116506, -0.09428967), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(f1, MF4x4(0.2759429, 0.22141403, -0.13269989, 0.06833041, -0.29562923, -0.26589182, -0.34452415, 0.36388424, -0.3184807, 0.08254464, -0.15477169, 0.03237491, -0.34190834, -0.2777646, -0.15713428, -0.22231084), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(g1, MF4x4(-0.36887082, -0.34607458, 0.5719879, 0.09200919, 0.12724651, 0.20281908, 0.39280674, 0.09216231, 0.3126475, -0.0075341803, -0.046779484, 0.10883631, 0.20136468, 0.70330596, -0.024237871, -0.061087623), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(h1, MF4x4(-0.08114617, -0.02456657, 0.1287709, 0.5486885, -0.10143632, -0.39116892, 0.24008204, 5.8133483e-05, -0.36640543, -0.52113515, 0.3836287, 0.09541327, 0.01115865, -0.2044513, 0.07734024, -0.29509112), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(i1, MF4x4(0.25962162, -0.05327207, -0.28945914, 0.320823, 0.049143463, 0.011241379, 0.004193257, 0.3872085, -0.47137228, -0.44385332, -0.2591483, -0.20189615, 0.08729277, -0.14813553, -0.29911307, 0.0067013856), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(a2, MF4x4(0.13526323, 0.6637005, 0.09491454, -0.038491655, -0.5078187, -0.5782128, -1.0748478, 0.18678135, 0.16064858, 0.0795754, 0.116070546, 0.06408978, 0.085641995, -0.39126787, -0.16669247, -0.024058852), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(b2, MF4x4(-0.30658495, -0.08933112, 0.38358685, -0.048228927, 0.050148476, -0.08750905, -0.5015779, 0.4012965, -0.068299964, 0.08993712, 0.03617703, -0.030809006, 0.05144756, -0.7659615, -0.33359128, 0.0054376507), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(c2, MF4x4(-0.24894494, 0.08617524, -0.095747314, 0.14710969, -0.09528072, 0.19016005, 0.060339417, -0.059556015, 0.01127292, -0.021082405, 0.5204205, 0.23831797, -0.035384487, 0.001653611, -0.28902745, -0.0060615037), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(d2, MF4x4(0.2978602, 0.2580722, 0.11472323, -0.06937241, -0.45087403, -0.35747236, -0.38835877, 0.22520676, 0.09162963, 0.50932664, -0.41183934, -0.08526183, -0.043625794, -0.27782285, -0.4119391, -0.339948), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(e2, MF4x4(-0.005034612, 0.010024151, 0.55194247, -0.16040643, 0.0072234212, -0.047230296, 0.011222393, -0.017184192, 0.2156304, 0.02429907, 0.41669923, -0.06159069, -0.39241523, 0.009254305, 0.35784644, -0.45379582), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(f2, MF4x4(-0.18008694, -0.35366225, 0.12110043, -0.102665015, 0.2763678, -0.61502653, 0.3051717, -0.23991431, 0.6076138, -1.142571, 1.2579885, 0.15013893, -0.13282573, -0.16185799, -0.26278257, 0.044563264), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(g2, MF4x4(-0.043284204, -0.1374118, -0.6523209, -0.1682561, -0.002918912, 0.2768846, 0.045174655, -0.046218265, 0.10686049, -0.004872297, 0.04118156, -0.07015327, -0.3329307, 0.19972506, -0.38307762, 0.11627049), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(h2, MF4x4(0.09306764, -0.5036807, -0.25358048, -0.033543527, 0.07199686, -0.28982875, -0.022885432, -0.078454, -0.0836088, -0.08261633, 0.38759607, 0.021209864, 0.09516953, -0.1896164, -0.12284774, 0.16532375), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(i2, MF4x4(0.27196047, -0.6199637, 0.12209493, -0.0055379267, -0.08997175, -0.0025996822, -0.20710677, 0.15223576, -0.07073166, -0.20732503, -0.044538528, 0.35751408, 0.33849528, -0.14603287, 0.19472563, 0.20992133), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(na1, MF4x4(0.018979501, 0.030001618, 0.09530055, -0.22441792, -0.11513775, -0.05383842, 0.042144198, -0.2824055, 0.20338169, 0.9622458, -0.20780474, 0.5217952, 0.11518432, 0.24126045, -0.046675194, -0.07326568), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nb1, MF4x4(-0.13768856, 0.17157272, -0.32123035, -0.08968111, 0.011915078, -0.08129057, -0.71480066, 0.24239756, 0.5093838, 0.29058817, -0.07181868, -0.22533971, 0.24244072, -0.2716092, 0.03331018, 0.008624937), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nc1, MF4x4(0.21304299, 0.5180637, 0.40324917, -0.078679435, 0.17033757, -0.4813804, -0.47702515, -0.017285354, -0.054009005, -0.5853617, -0.5427995, 0.13533083, 0.12440328, -0.6455633, 0.0012186684, 0.031838413), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nd1, MF4x4(0.04057183, -0.27768528, -0.07563423, 0.13400203, -0.03429928, -0.32794374, -0.085426375, -0.3724642, -0.19195397, 0.1349262, -0.2909766, -0.43096116, 0.056601644, 0.5106557, -0.267059, -0.046354882), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ne1, MF4x4(0.14343774, -0.29267886, -0.2406526, -0.30307195, -0.10270894, 0.008828463, -1.5378821, 0.017785087, 0.48302534, -0.310974, 1.5381073, 0.08598342, 0.82111055, -0.0049781636, 0.4820726, 0.301231), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nf1, MF4x4(0.012052944, -0.090234, 0.52199095, -0.3329521, 0.110252894, 0.2897882, -0.37447298, 0.17326026, 0.18148576, -0.23976558, 0.1848407, 0.5042414, 0.33321953, 0.2712571, 0.18124644, 0.20849751), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ng1, MF4x4(0.066107936, 0.035174694, -0.1587501, -0.22672103, 0.012212267, -0.05451626, -0.6004301, 0.013387352, -0.04113352, 0.53583735, -0.15342614, -0.0018758774, 0.09947345, -0.18213694, 0.02965846, -0.044368513), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nh1, MF4x4(0.099831305, 0.2666737, -0.12301129, -0.113591194, 0.018106552, 0.290373, 0.1480011, 0.032558106, 0.0024403003, 0.11745559, 0.7669008, -0.18195944, 0.21291047, 0.49549788, -0.04361018, 0.6138144), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ni1, MF4x4(-0.24335642, -0.023037815, -0.22853605, -0.49450716, 0.04834612, 0.040727314, 0.36239302, -0.076259434, -0.08173315, 0.14689375, 0.3357786, 0.34003472, -0.11701219, -0.35594055, 0.55640507, 0.3573448), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(na2, MF4x4(0.039600838, -0.08580259, -0.25375724, -0.41294497, 0.052295998, 0.34286344, 0.23627926, 0.08080187, 0.0015981429, 0.37459275, -0.11763548, 0.027264152, 0.11372706, 0.34742436, 0.30963847, -0.2995273), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nb2, MF4x4(-0.035936117, -0.42153218, -0.40176156, 0.20363232, 0.22382015, 0.48679677, 0.07365761, -0.20890754, 0.22791456, -0.28418672, -0.17189962, 0.0968373, -0.70834696, -0.41918173, -0.13482817, 0.037949625), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nc2, MF4x4(0.11910686, 0.0473921, 0.37869528, 0.17928337, 0.17311068, 0.21572089, 0.34996882, -0.26002827, -0.014036688, -0.6574892, -0.14409806, -0.06467717, -0.33688435, -0.18185017, 0.04036214, 0.06086553), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nd2, MF4x4(-0.15657301, -0.05661294, -0.36640826, -0.13215317, 0.060342815, 0.19098124, 0.18715985, -0.40765548, 0.090474375, -0.07720432, -0.016231487, 0.0885778, 0.0272616, 0.22065723, 0.1691866, -0.19491237), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ne2, MF4x4(-0.13054666, 0.3278881, -1.3170725, -0.4575742, -0.061401486, 0.15868792, 0.2789515, 0.13829961, 0.09607008, -0.7175924, 0.01804374, 0.41284522, 0.044577077, 0.04847126, -0.25607756, -0.02249741), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nf2, MF4x4(0.22145797, 0.8114419, -0.17527157, 0.09274125, -0.25224185, 0.2955128, -0.37553602, -0.17377761, -0.9684024, 0.42457148, -0.64265996, 0.10394252, -0.11231096, 0.064703405, 0.42858216, -0.21214609), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ng2, MF4x4(0.1910386, -0.0065560606, 0.18119961, -0.026436953, 0.07887997, 0.15127628, -0.11523928, -0.0679343, 0.031198656, 0.16947536, 0.05943052, 0.060350783, 0.32215032, -0.1347014, 0.017390233, -0.06527528), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nh2, MF4x4(-0.19811153, -0.033103824, 0.0053317053, 0.008003428, -0.020805335, 0.17872533, -0.3161484, -0.11559199, -0.24902378, -0.2596549, 0.034520704, -0.006125487, 0.13173361, -0.10967251, -0.7860965, -0.035326626), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ni2, MF4x4(-0.124631934, 0.21335506, 0.375809, -0.13598146, 0.047685858, 0.14553228, -0.068173625, -0.117949426, 0.07296198, 0.08935096, -0.26368606, 0.29653412, -0.27378097, 0.060699224, -0.09753418, -0.08484599), conv2d_8_tf);\n\tMF4 nconv2d_8_tf = max(-conv2d_8_tf, 0);\n\tconv2d_8_tf = max(conv2d_8_tf, 0);\n\t\n\tMF4 conv2d_7_tf = MF4(0.039428633, 0.032666046, 0.16482623, -0.016402772);\n\tconv2d_7_tf = MulAdd(a1, MF4x4(0.018128054, -0.14104486, -0.027475944, 0.22669935, -2.7264505e-05, 0.14775783, 0.13441783, 0.11450963, -0.09942102, 0.29735768, 0.04839269, -0.14066552, -0.024448555, 0.3104163, -0.03636913, 0.002947356), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(b1, MF4x4(-0.20438337, 0.35419708, 0.037506625, 0.100693576, -0.074241616, -0.15304284, 0.0054191337, -0.12816934, 0.028913809, -0.098240785, 0.5653599, -0.38662913, 0.018716848, 0.0021957273, 0.061397206, -0.111899704), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(c1, MF4x4(-0.18681246, -0.23609419, 0.21475013, 0.051762715, 0.04889926, -0.033886652, 0.26262638, -0.27322114, 0.049140245, 0.3380464, -0.13617653, -0.05796957, 0.080669545, 0.21348572, -0.10067047, -0.0016244814), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(d1, MF4x4(0.025566151, -0.027286734, -0.10856872, 0.108885765, -0.07635088, 0.13037659, 0.2892404, -0.2160093, -0.30649704, 0.34650138, -0.021391464, 0.08717436, -0.02000013, 0.027722841, 0.43060175, -0.04844848), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(e1, MF4x4(0.09925131, -0.11167345, -0.14262813, -0.21267861, -0.15972298, -0.1823657, -0.073309824, 0.15542479, 0.005081145, -0.40594074, 0.24862696, 0.19943975, -0.36283687, -0.38990027, 0.4759463, 0.45561194), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(f1, MF4x4(-0.13126811, 0.24284562, 0.06109369, -0.15402594, 0.016967572, -0.08234942, -0.053873185, 0.026438333, 0.13412815, -0.10839792, -0.345438, 0.0720746, 0.21260333, -0.15989558, -0.012461376, 0.20363508), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(g1, MF4x4(0.09231617, 0.17787862, 0.22783166, 0.09095521, -0.0935426, -0.22921127, 0.2591894, -0.19451278, -0.0046325484, -0.60839254, 0.061737422, -0.024267042, -0.04048761, 0.2450175, 0.14390652, 0.07999217), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(h1, MF4x4(-0.09204067, -0.05434134, 0.32136026, -0.053413626, 0.044170942, 0.10284346, 0.10827547, -0.03207593, -0.036979157, -0.37019014, -0.07072617, 0.07745549, 0.026007036, 0.13402742, 0.22873925, -0.09879518), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(i1, MF4x4(-0.039409183, -0.15304323, 0.110744946, 0.04479048, 0.073402554, -0.31955537, 0.13518381, 0.09020946, 0.21437532, -0.08866372, 0.062359575, -0.08147204, -0.012339588, 0.038986444, -0.059496317, 0.04353628), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(a2, MF4x4(-0.029447578, 0.18052183, 0.026130654, -0.18024941, -0.2357611, 0.92272073, -0.40873498, 0.3829195, -0.049990416, -0.2626007, 0.07313907, -0.20231684, 0.23846717, 0.06304234, -0.072538964, 0.34895507), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(b2, MF4x4(-0.21427542, 0.33398184, 0.19135003, -0.079177245, -0.047564022, 0.25006044, 0.19287021, -0.07119212, -0.0064072064, 0.14020945, -0.15136649, -0.04587045, -0.113710366, 0.05126853, -0.084781885, 0.1418395), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(c2, MF4x4(0.04655672, -0.010115347, 0.18253572, 0.017085062, -0.04543099, 0.08404545, 0.07929449, 0.17069206, -0.045596916, 0.12133366, 0.12615037, -0.11942128, -0.07431312, -0.0975234, 0.17188828, -0.021951154), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(d2, MF4x4(0.013333504, -0.22424631, -0.25461286, -0.09366057, -0.24168679, -0.1413706, -0.084172204, 0.1557298, 0.023721283, 0.18159337, -0.029377997, -0.12690134, -0.07779016, 0.49728185, 0.060146395, 0.17318316), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(e2, MF4x4(0.08302447, 0.86936367, -0.17584775, -0.2508983, 0.16770333, 0.106514744, 0.056097895, -0.1516464, -0.04237734, 0.3350473, 0.08797126, 0.053822745, 0.36157215, -0.04365805, -0.20060433, -0.23983552), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(f2, MF4x4(0.09215062, 0.0729301, 0.2564446, -0.09456067, -0.04279617, 0.009632537, -0.067693666, 0.07115211, -0.58410543, 0.7954688, -0.6856004, -0.0039867237, 0.05259691, -0.19899113, 0.34015554, -0.1301164), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(g2, MF4x4(-0.08229732, 0.22852908, -0.17944984, -0.053203765, 0.01401186, -0.01731911, -0.017196467, 0.017660033, -0.06473575, 0.11841842, -0.09651762, 0.08812678, 0.15789783, 0.41068667, -0.17433365, 0.112683386), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(h2, MF4x4(0.19192256, -0.048173536, -0.27452058, -0.086614236, 0.03459962, -0.076093, -0.13129567, 0.10529364, -0.003243667, -0.11558274, 0.15014142, -0.11415493, -0.058378108, -0.23308878, 0.016655494, -0.06092205), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(i2, MF4x4(0.053656723, -0.2520498, -0.06450468, 0.14063323, -0.07785553, 0.06996582, 0.043691944, -0.09447727, -0.19854756, 0.08710172, 0.103271045, -0.20072943, -0.10393605, -0.19852036, -0.01656043, 0.19936512), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(na1, MF4x4(-0.043692272, -0.15573448, -0.07609012, -0.25906095, 0.042468645, 0.06499704, 0.021691361, -0.14418614, 0.007778065, -0.04098781, 0.16854198, 0.1880123, -0.0024735837, -0.38171276, 0.29813913, -0.13975172), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nb1, MF4x4(0.0786739, -0.13743922, -0.16762766, 0.0551441, -0.16237186, 0.47069517, -0.16434868, 0.38760075, 0.29262593, 0.21078295, 0.1564407, -0.19921672, -0.07819381, 0.045407712, 0.25388238, 0.12049804), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nc1, MF4x4(0.13686253, 0.15139718, -0.14193471, -0.037212268, 0.017021572, -0.13029522, -0.07875422, 0.22883393, -0.117323294, -0.11999564, 0.074406326, 0.029792523, 0.071242705, 0.04940517, 0.27540857, 0.094216466), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nd1, MF4x4(0.05651692, -0.09319446, -0.15223487, -0.16004439, 0.09602424, 0.114855476, 0.13851804, 0.11632249, -0.15697844, -0.03465572, -0.6334014, 0.0043645306, -0.13810518, -0.24692737, -0.13962403, -0.17288178), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ne1, MF4x4(-0.1125169, 0.2582768, 0.14571975, 0.3412717, 0.046649273, 0.053606547, -0.5402628, -0.14801335, -0.12299524, 0.79026186, -0.3587726, -0.040698707, 0.18239951, 0.18461016, -0.13213885, -0.6929199), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nf1, MF4x4(-0.009360833, 0.22758053, -0.334423, 0.35250792, 0.05025162, -0.1640276, 0.21909785, -0.12123492, -0.33830088, -0.26451996, 0.09280175, -0.18673559, -0.20446195, 0.13918248, 0.09164517, -0.20213476), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ng1, MF4x4(-0.03443797, -0.25032473, -0.0018426777, -0.065064386, 0.03455914, 0.022166712, -0.2954429, 0.012212829, -0.0223488, 0.1161553, -0.106024936, 0.028343895, 0.15230536, -0.5538007, -0.24089493, 0.06740007), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nh1, MF4x4(0.09501347, -0.0845406, -0.13952151, 0.031915456, 0.05118853, -0.25089842, -0.113984115, 0.08745874, 0.14493734, 0.17449388, 0.037183553, 0.060414817, 0.045083977, -0.50209135, -0.25451177, 0.23309624), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ni1, MF4x4(0.08991499, 0.14019197, -0.12056033, -0.05024532, -0.07585356, 0.073596515, 0.017992107, -0.0009288775, -0.17292187, 0.07525249, 0.14620323, -0.058494095, 0.09669742, -0.28342497, 0.10102461, 0.0075472025), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(na2, MF4x4(-0.059322756, 0.07296391, -0.22688308, 0.17183779, 0.0921908, -0.18311407, -0.10553935, -0.2998603, -0.05373476, -0.08882287, 0.009316159, -0.09303765, 0.08415284, -0.044707574, 0.07481887, 0.06931905), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nb2, MF4x4(-0.26374707, 0.17429374, -0.54841083, 0.23039351, 0.1550329, -0.0991982, -0.07031106, -0.23306605, -0.076208115, 0.058818877, 0.48602778, -0.116065495, 0.13632986, 0.5399192, -0.088733315, -0.04031161), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nc2, MF4x4(-0.118198454, -0.04607605, -0.10619185, 0.034395956, 0.0023600461, 0.1470174, -0.21100855, -0.024570175, -0.0016899678, 0.1612513, -0.03985272, 0.01355469, 0.30949214, -0.056687307, 0.1295898, 0.031099077), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nd2, MF4x4(-0.37869355, 0.06961967, 0.2779311, 0.3090361, 0.23564096, -0.014765556, -0.097406775, -0.08233581, -0.05444356, -0.056364074, -0.13940345, -0.1710778, 0.053456437, -0.5668305, -0.21371025, -0.11354647), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ne2, MF4x4(-0.2009931, -0.46823156, 0.04674297, -0.33720648, -0.48212242, -0.022402052, 0.4083246, 0.3498801, -0.12801081, 0.080993176, 0.12559398, 0.30281347, -0.36876208, -0.19425368, 0.040795308, 0.4358033), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nf2, MF4x4(-0.008429336, -0.007929484, -0.21348138, 0.19799937, -0.0032136212, -0.037011284, 0.060586747, -0.012355498, 0.37488303, -0.626778, 0.45391387, -0.030982537, 0.26613617, -0.027296683, -0.094556324, 0.03054091), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ng2, MF4x4(-0.0032568173, -0.3056237, 0.0007252052, 0.052250773, -0.05099108, 0.23182255, -0.044636346, 0.08786388, -0.12470104, -0.16238213, 0.16018245, -0.11313074, -0.044513255, -0.2792024, 0.13793966, -0.20955163), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nh2, MF4x4(-0.14750522, -0.022307748, -0.15649515, 0.15537989, -0.061475005, 0.19822353, 0.0671258, -0.06628393, -0.04068137, 0.22010179, 0.12955783, -0.0517817, 0.02655539, 0.17269138, -0.1296634, 0.030146338), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ni2, MF4x4(0.061146796, 0.31339607, 0.034430694, 0.10376425, 0.03029668, -0.0401898, -0.1825413, 0.06257798, 0.08390942, -0.31551626, 0.010347497, -0.0031549276, 0.21435012, -0.13221692, -0.021980911, -0.1482502), conv2d_7_tf);\n\ttex7[gxy] = conv2d_7_tf;\n\tMF4 nconv2d_7_tf = max(-conv2d_7_tf, 0);\n\tconv2d_7_tf = max(conv2d_7_tf, 0);\n\n\tMF4 target = MF4(-0.027689768, -0.16386859, -0.009289161, 0.09287236);\n\ttarget = MulAdd(e1, MF4x4(0.13591515, 0.21395922, 0.040862843, 0.3054825, -0.088837944, -0.6928339, -0.15643471, 0.13081591, 0.07604966, 0.37446347, -0.34723157, -0.17870799, -0.2037286, -0.106576756, 0.25523958, -0.13762575), target);\n\ttarget = MulAdd(e2, MF4x4(0.21503459, 0.0373132, -0.008046219, -0.18440363, -0.09729587, 0.043958187, 0.23459528, -0.044009138, 0.1686642, -0.1615934, -0.13173419, -0.079085656, -0.07647595, -0.37286422, -0.06148421, 0.015342882), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.14785692, -0.2707874, -0.017647093, -0.2908642, 0.5612585, 0.4271698, -0.48191005, 0.11905855, -0.21741737, -0.2821245, 0.29278705, -0.20538986, 0.03150152, 0.03138199, 0.10423793, -0.045527548), target);\n\ttarget = MulAdd(ne2, MF4x4(0.31277063, 0.07915742, -0.34087706, 0.39680582, -0.022496004, -0.33672526, -0.111507386, 0.025953399, -0.15757395, 0.11465282, 0.28329894, 0.12420795, -0.36261007, 0.46334505, 0.30303243, -0.03249052), target);\n\ttarget = MulAdd(conv2d_8_tf, MF4x4(0.57927984, 0.06878386, -0.24236098, 0.31338137, 0.10464923, -0.07153124, 0.13588428, -0.02373762, -0.19124955, -0.1138502, 0.17388438, 0.01707623, -0.24228282, 0.04736911, 0.6398566, -0.32334659), target);\n\ttarget = MulAdd(nconv2d_8_tf, MF4x4(-0.54402775, -0.24674532, 0.11212342, -0.09593871, -0.17339998, 0.1323692, -0.1680261, 0.025882099, -0.19121705, 0.1832492, -0.08548955, -0.14068407, 0.13255714, 0.10409962, -0.01394588, 0.22216345), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.2702694, -0.56255573, -0.5357781, 0.05541389, 0.070275396, -0.08012564, -0.13473864, -0.113696516, 0.06642909, 0.23810093, 0.0728827, -0.17656006, 0.48172018, -0.25749484, -0.1752313, 0.33768335), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(0.46950498, 0.059317388, -0.09860531, -0.006304164, -0.4128484, -0.049649406, 0.2954393, -0.190237, -0.20938443, 0.034176145, 0.063109055, 0.07802573, -0.20652357, -0.23180202, -0.11936575, 0.2589604), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.3843954, -0.08686217, 0.18839231, 0.01876761, -0.03335079, -0.12043262, -0.42323095, -0.02321388, -0.22252762, -0.049455926, 0.2268798, 0.082169, 0.2473631, 0.23347862, 0.002254042, 0.2757807), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(0.1020188, -0.037612554, -0.33062017, 0.1570476, 0.19851524, 0.35976177, -0.016449552, 0.22057539, 0.20401593, 0.07004227, -0.062413715, -0.10547836, 0.14671406, -0.3905135, -0.038352408, -0.28926837), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(0.4110517, 0.06280497, 0.16709873, -0.49500167, -0.10045096, -0.2238529, 0.012172345, 0.19666891, -0.16135901, 0.017100533, 0.35809904, 0.35188627, 0.20347194, -0.14602524, 0.71737736, 0.14195462), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(-0.5236819, 0.4352016, -0.4066126, -0.04252335, 0.1086945, 0.145471, 0.21984594, -0.24670586, -0.07109616, -0.2711473, -0.89353126, -0.3953869, 0.17096898, 0.12978637, -0.42527854, -0.019720567), target);\n\ttex4[gxy] = target;\n\t\n\ttarget = MF4(-0.012729538, -0.13335368, 0.14840336, 0.025965473);\n\ttarget = MulAdd(e1, MF4x4(0.19380243, 0.020101497, 0.021015864, 0.40521726, 0.038862754, -0.3473658, 0.22289194, -0.2075226, -0.15960178, 0.20686232, -0.19066268, -0.24524036, -0.19289994, -0.6356018, 0.040245753, -0.22887161), target);\n\ttarget = MulAdd(e2, MF4x4(-0.06837712, -0.59243137, 0.08107887, -0.18099897, 0.08890105, -0.20113088, 0.0076543097, -0.28404838, -0.39403212, 0.124420464, 0.07661543, -0.16511264, 0.440653, 0.17841326, -0.40957427, -0.055862557), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.052128255, -0.17906874, -0.0063690864, -0.3027001, -0.12118662, 0.5986499, -0.35075194, 0.11334461, -0.13089949, 0.48732534, 0.31238684, 0.0636065, 0.21470545, -0.12680373, 0.20702313, -0.14277203), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.13521394, 0.5266374, -0.4765612, 0.32102558, -0.07704129, -0.26604977, 0.36475307, 0.27245706, 0.16729634, -0.04975267, 0.18763311, 0.07594951, -0.20137721, 0.07614109, -0.056586545, 0.35838535), target);\n\ttarget = MulAdd(conv2d_8_tf, MF4x4(0.22150421, -0.023909386, -0.30742592, 0.54860467, 0.038963366, -0.47929683, 0.001491465, -0.2016597, 0.14891255, -0.12298715, 0.12770613, 0.16882578, 0.52988553, -0.34417477, -0.11196754, 0.038432673), target);\n\ttarget = MulAdd(nconv2d_8_tf, MF4x4(0.10892675, 0.15687913, 0.4061297, -0.2549851, -0.12231971, 0.7066191, -0.038577385, 0.1871752, -0.23520122, 0.6384404, -0.04857454, -0.23879313, -0.26810166, -0.08090798, 0.3287431, 0.15214305), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.16076286, 0.08942198, 0.79264593, -0.5107746, -0.10051664, -0.18325275, 0.31161344, 0.023725776, 0.09911152, 0.1552438, -0.22447744, -0.2995641, 0.27984253, -1.107023, 0.010454479, 0.6606262), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(0.041668475, 0.16935597, -0.11855577, 0.2013473, 0.2991738, -0.38238418, 0.17906274, -0.27559698, -0.4381387, 0.39814267, -0.40905684, 0.57992136, 0.2830281, 0.12482517, -0.30402762, 0.47808015), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.05201121, 0.3396993, -0.04965309, -0.25744373, -0.13495848, -0.120026626, 0.15645088, -0.20658544, 0.414069, -0.03110071, 0.070210315, 0.028046172, -0.17324251, 0.14329922, -0.14353131, 0.028436944), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.15607943, 0.98266315, -0.15506491, 0.34884667, -0.16584046, 0.07532187, 0.0062847883, 0.8719761, -0.30521882, -0.34961814, -0.055313803, 0.041199762, 0.2634066, 0.31106153, 0.029962108, -0.017541675), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(0.1285044, 0.41011113, 0.16163284, -0.40202442, 0.33554438, -0.2626098, 0.18437132, 0.06627138, 0.26390168, -0.23918642, -0.17191365, -0.16348109, 0.30074367, -0.99079835, 0.60264456, 0.050881945), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(0.3971443, -0.034655187, 0.11870823, 0.39984652, -0.45068088, -0.054210827, -0.27554438, -0.16074227, -0.14983663, 0.35434055, 0.42479035, 0.07799301, -0.4260275, 0.66214204, -0.095251344, 0.09080398), target);\n\ttex5[gxy] = target;\n}\n\n\n//!PASS 5\n//!DESC Conv-4x3x3x16, Conv-4x1x1x56\n//!IN tex4, tex5, tex3, tex6, tex7\n//!OUT tex8, tex9, tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex4.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex4.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = tex5.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex5.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex5.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex5.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex5.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex5.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\t\n\tMF4 conv2d_1_tf = tex3.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_1_tf = max(-conv2d_1_tf, 0);\n\tconv2d_1_tf = max(conv2d_1_tf, 0);\n\t\n\tMF4 conv2d_4_tf = tex6.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_4_tf = max(-conv2d_4_tf, 0);\n\tconv2d_4_tf = max(conv2d_4_tf, 0);\n\t\n\tMF4 conv2d_7_tf = tex7.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_7_tf = max(-conv2d_7_tf, 0);\n\tconv2d_7_tf = max(conv2d_7_tf, 0);\n\n\tMF4 conv2d_11_tf = MF4(0.10656278, 0.12657918, 0.16990805, -0.12699938);\n\tconv2d_11_tf = MulAdd(a1, MF4x4(-0.22341304, 0.26908797, 0.04134543, 0.06961319, 0.32176727, 0.07702703, 0.03751845, -0.13761088, -0.09979559, 0.06891045, -0.01716057, -0.031486046, -0.016294012, 0.0262252, 0.012725462, -0.054174248), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(b1, MF4x4(0.0758998, 0.044578414, -0.058127478, -0.04941571, 0.1685694, 0.9547572, 0.3217995, 0.04913146, 0.08628588, -0.49687696, 0.05530926, -0.19010891, 0.0077229803, 0.3938303, 0.18076055, -0.048131783), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(c1, MF4x4(0.03656385, 0.23112705, 0.13059878, 0.16223684, -0.2766845, 0.053392846, 0.06446786, 0.19696166, -0.14884388, -0.23103243, -0.07006061, -0.021727445, 0.026394684, -0.31138313, -0.0976933, -0.062459927), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(d1, MF4x4(-0.36985022, -0.3396681, 0.035750575, 0.019713784, 0.10074354, -0.34114882, -0.01150834, -0.1436701, -0.36870074, -0.3272402, -0.03879516, -0.094077155, 0.016875539, 0.23895474, -0.14396004, -0.06785279), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(e1, MF4x4(0.057131216, -0.5966212, -0.13011967, -0.3684052, 0.6414469, 0.45823926, 0.043126952, -0.12702179, 0.029217511, 0.43957123, 0.06747733, 0.35508418, -0.13576074, 0.28117993, 0.1785782, 0.20060769), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(f1, MF4x4(0.112133466, 0.2773932, -0.047416527, -0.06561597, 0.093935706, 0.032524325, 0.02208551, 0.10400939, -0.0062363064, 0.20578235, 0.124429, 0.045867924, 0.024913216, -0.07508951, -0.1506746, -0.07368737), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(g1, MF4x4(0.029188056, 0.13675697, -0.10047892, -0.15162368, 0.11152231, 0.17758776, 0.04638467, -0.15375991, -0.08195171, -0.00092798605, -0.11137887, -0.20476487, -0.06701632, -0.38742077, 0.10833869, 0.07575963), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(h1, MF4x4(0.12579612, -0.13082299, 0.022704111, -0.049295194, 0.02813974, 0.06766161, 0.021488592, -0.22899324, -0.13967377, -0.42789128, -0.15561862, -0.13880157, -0.31957027, -0.051553562, -0.15501565, -0.17607704), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(i1, MF4x4(-0.014785312, -0.3358245, 0.09859993, 0.17852743, 0.06758491, 0.040827237, -0.014897847, -0.027630018, -0.041637477, -0.10967412, -0.10507281, 0.058183335, -0.01929858, 0.09047934, -0.19679205, -0.16896065), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(a2, MF4x4(-0.19059956, 0.059083544, -0.07367043, 0.10374235, -0.12928921, 0.16821185, 0.03542259, 0.07853399, -0.029948441, 0.045060057, 0.10522493, 0.15548709, 0.13417992, 0.12784965, 0.068737574, 0.024369959), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(b2, MF4x4(-0.2539489, -0.15361321, -0.024794202, 0.23387837, -0.021986792, 0.035640705, -0.053465687, 0.041275553, -0.12349385, 0.11599216, -0.12158652, -0.0016647653, 0.03552641, 0.15126309, 0.10521408, 0.022221778), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(c2, MF4x4(-0.09391041, 0.21640098, 0.06468435, 0.021124857, -0.017427467, 0.14731239, 0.0888631, 0.06669842, 0.16802992, -0.042000934, -0.007442969, -0.17762569, -0.106376246, -0.007006815, 0.048836768, 0.07634349), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(d2, MF4x4(-0.08242374, -0.35055616, 0.11752318, 0.06287576, -0.08078838, 0.015269983, 0.07802465, 0.036515962, -0.047435157, -0.23535018, 0.10882656, 0.00760307, 0.20816213, 0.16291322, -0.17480974, -0.09656055), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(e2, MF4x4(0.3776239, 0.48836887, 0.046571143, -0.0005301381, 0.111404456, -0.2056147, 0.0976322, -0.07087254, -0.23208277, 0.64508325, 0.029519977, -0.32163903, 0.12203931, 1.2488136, 0.0713469, -0.12589021), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(f2, MF4x4(-0.1458724, -0.2927259, -0.11825573, 0.050236594, 0.005908592, 0.009147886, 0.014676971, -0.09960781, -0.031219782, 0.0008116867, -0.16999915, -0.08393424, -0.017762119, 0.15271363, 0.17894958, 0.104973435), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(g2, MF4x4(0.15102111, -0.017580042, -0.009878415, 0.09603493, -0.14158034, 0.01766169, 0.026301328, 0.14016923, 0.07513633, 0.12250821, 0.14139763, 0.119470306, 0.056335848, 0.011718554, -0.051952817, -0.1087701), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(h2, MF4x4(0.12267096, 0.22258927, -0.23374331, -0.336529, -0.03149633, -0.26095635, 0.00365308, 0.048830956, 0.035902984, -0.04686918, -0.08079191, -0.17013429, 0.0254567, -0.05592242, 0.0968047, 0.07426071), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(i2, MF4x4(-0.16953564, 0.074455656, 0.0029755495, 0.20576377, -0.050961535, 0.060958825, 0.014226229, 0.104992926, 0.06942283, 0.29077423, 0.040234245, 0.12337425, -0.012045997, -0.11109262, 0.020255094, 0.08945579), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(na1, MF4x4(0.2978639, -0.24613461, -0.083074145, -0.2367985, -0.13995647, -0.21201506, -0.16809967, -0.08163256, 0.22451796, -0.21319884, 0.097241744, 0.17276905, 0.059754357, -0.21800114, 0.016986718, 0.059852242), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nb1, MF4x4(0.10399378, 0.016165858, 0.006949626, -0.00957426, -0.07206657, 0.85400176, -0.069736175, 0.11563255, -0.15550873, 0.21035826, -0.09730208, 0.21803263, -0.029731166, 0.07174115, -0.075019605, 0.06605764), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nc1, MF4x4(0.008660154, -0.1689362, -0.13275097, -0.14157207, -0.06571528, 0.2641335, 0.17738026, 0.016201235, -0.058384545, -0.089386165, -0.10691102, 0.03380599, 0.07696467, 0.010921241, -0.05858657, 0.044599395), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nd1, MF4x4(0.29438433, 0.39757052, -0.12448894, -0.14726874, 0.054101802, 0.19893955, 0.0081761405, -0.030686913, -0.09465847, -0.09517581, 0.0046200817, 0.2743172, 0.18768987, 0.2577441, 0.3185588, -0.0043636197), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ne1, MF4x4(0.30364004, 0.45719072, -0.002478791, -0.25550374, 0.044718135, 0.9974692, 0.27661783, 0.38724384, 0.20643012, -0.36335453, 0.04044719, -0.15773767, 0.019318745, -0.015368104, -0.13033883, -0.21446472), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nf1, MF4x4(0.17225221, -0.2870429, -0.11031537, -0.20985241, -0.1813215, 0.47034717, 0.19177493, 0.1565604, -0.22090979, -0.1778559, -0.15998572, 0.20591277, -0.27751637, -0.17734572, -0.22385214, 0.2001247), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ng1, MF4x4(0.09103924, 0.012440279, -0.11811386, -0.28955194, -0.024203198, -0.014690502, -0.041423846, 0.0062359073, 0.06732812, -0.040848043, -0.0807372, -0.06598595, -0.020464217, 0.35617942, 0.054869782, -0.06990699), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nh1, MF4x4(-0.22022852, -0.30250633, -0.008539953, -0.17535509, 0.048545327, -0.06961757, 0.1520779, 0.15551318, 0.145789, 0.41386685, 0.19608185, 0.02285933, 0.19650589, 0.1140758, 0.058065582, 0.06438903), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ni1, MF4x4(0.17500387, 0.009752107, -0.08735754, -0.40322778, -0.04718948, -0.1520063, 0.015334469, 0.055586398, -0.06315823, 0.01381341, 0.06333497, 0.20780154, -0.14789844, 0.008873181, 0.20424104, 0.18570045), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(na2, MF4x4(0.17809622, -0.054737452, 0.045792647, -0.05761767, 0.1530876, -0.058534857, -0.008100565, 0.036446143, 0.27693272, 0.3004126, -0.1283306, -0.50103384, -0.3350802, 0.09919993, -0.10481551, 0.059236333), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nb2, MF4x4(0.08178473, 0.01796507, 0.045470674, -0.1395204, -0.07053285, -0.15308544, -0.016434597, 0.09957456, 0.07303232, 0.5558379, 0.1058254, -0.12340164, -0.37540868, 0.20688659, 0.11254531, 0.08988308), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nc2, MF4x4(-0.115479395, -0.04145597, -0.02444945, -0.0012505532, -0.016777854, -0.21254961, -0.11969028, -0.10986302, 0.34061527, 0.35168666, 0.19457188, -0.25304377, 0.089430355, -0.13593785, -0.03715568, -0.07161111), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nd2, MF4x4(0.135465, 0.16024914, -0.16819438, -0.076060556, 0.14722055, -0.12402309, -0.091675736, -0.11345004, 0.3370019, 0.21161243, 0.08165217, 0.26650387, 0.11799823, 1.1248134, 0.031586587, 0.40626523), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ne2, MF4x4(-0.3881156, 0.075572714, -0.2955678, -0.04820779, -0.14431494, 0.17108414, -0.031334974, 0.14272547, 0.10431918, -0.92185026, -0.550305, -0.09849551, -0.19279402, 0.47034186, 0.38574138, 0.5469418), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nf2, MF4x4(0.07301299, -0.1655295, 0.0851716, 0.0349889, 0.037978686, -0.34476924, -0.09894407, -0.09279173, -0.017504893, 0.16626996, 0.23299451, -0.29538614, -0.035250418, 0.102075204, 0.014679606, 0.05283856), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ng2, MF4x4(0.082496785, -0.047353677, -0.1036778, -0.014507561, 0.091381975, -0.07229443, -0.03069601, -0.07463806, 0.2173226, 0.061551273, 0.01672064, 0.065622196, 0.1645865, 0.08651663, 0.18979368, 0.2012662), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nh2, MF4x4(-0.2116467, -0.26988897, -0.049475558, 0.18609211, -0.08837133, -0.219245, 0.05900789, -0.007832284, -0.028579885, 0.20587349, -0.07297767, -0.19551088, 0.052455146, -0.24630548, 0.12438646, -0.017073039), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ni2, MF4x4(0.15815273, -0.13286865, -0.036927793, -0.118895106, 0.06876401, -0.08193885, -0.073907554, -0.17851423, 0.025570622, -0.05206693, 0.0054880823, -0.14550385, 0.031355973, -0.0617539, -0.09522895, 0.007602468), conv2d_11_tf);\n\ttex8[gxy] = conv2d_11_tf;\n\tMF4 nconv2d_11_tf = max(-conv2d_11_tf, 0);\n\tconv2d_11_tf = max(conv2d_11_tf, 0);\n\t\n\tMF4 conv2d_10_tf = MF4(-0.11589812, -0.123082116, -0.003926807, -0.15363532);\n\tconv2d_10_tf = MulAdd(a1, MF4x4(-0.07384766, -0.027958225, 0.37361667, -0.082532816, 0.14156812, 0.02939518, 0.22737388, 0.19935979, -0.090212055, 0.04403584, 0.18456662, -0.026585983, 0.22868252, 0.09938934, -0.08726494, -0.115827106), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(b1, MF4x4(-0.09788985, -0.3116416, 0.35298944, -0.08990593, 0.16181462, -0.22193117, -0.5422943, 0.23932208, 0.15739329, -0.06103239, 0.7953177, -0.047183976, 0.21341586, 0.19858226, 0.0016054768, 0.054749873), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(c1, MF4x4(-0.026696216, 0.061291914, -0.35742328, 0.00082715444, 0.10632543, -0.09428293, -0.12645036, -0.043706786, 0.09915236, 0.13788143, 0.15950204, -0.089837976, 0.04461279, -0.054954246, 0.04740199, 0.07014664), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(d1, MF4x4(-0.12016896, 0.16669498, 0.26552972, -0.35876223, 0.045097463, -0.15016092, -0.0988156, -0.416339, -0.0101760905, 0.26459762, 0.31927487, -0.16307381, 0.12096833, -0.06770049, -0.017283063, 0.013299284), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(e1, MF4x4(0.15951112, 0.14506923, 0.6747884, -0.24716964, -0.3413045, -0.2017185, -0.9612693, 0.5421329, -0.16023788, 0.32216108, 0.062496744, 0.21633703, 0.004581572, 0.2359334, -0.35295007, 0.09726352), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(f1, MF4x4(0.13874753, -0.0063067, -0.14469895, 0.11554976, -0.019183924, -0.04544159, -0.29430693, -0.10431769, 0.15769906, 0.00601582, -0.454376, -0.11790236, 0.16000259, 0.29670846, -0.9759625, 0.31053123), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(g1, MF4x4(0.014491841, 0.0074491766, -0.09696308, -0.09127842, -0.03579932, -0.20163259, -0.21284793, -0.261139, 0.24359487, 0.14113441, 0.23983651, -0.16634561, -0.09547295, 0.10859189, 0.13468629, 0.33521304), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(h1, MF4x4(0.008276171, 0.12959969, 0.5093179, 0.002464717, 0.016199486, -0.03156574, -0.4428472, -0.10885838, -0.049632378, 0.2476587, 0.07033375, -0.20044556, 0.04982328, 0.19631135, -0.33776414, -0.6421577), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(i1, MF4x4(-0.04192616, 0.06393284, 0.07120974, 0.076716706, -0.09867013, -0.13239172, 0.012114291, -0.038557116, 0.029985918, 0.022090917, 0.07777519, 0.008410333, 0.0034299784, 0.062100925, -0.38884223, -0.01593217), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(a2, MF4x4(-0.013629574, -0.06545711, 0.14423661, -0.03981215, -0.052800525, -0.058425374, -0.05814048, -0.11337634, 0.05479856, -0.010584571, -0.22650285, 0.056241333, -0.1396656, -0.0010838923, -0.30166936, 0.040658727), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(b2, MF4x4(0.045267094, -0.086306006, -0.05226326, 0.1539859, -0.02723665, -0.13326567, 0.22143897, -0.018399606, 0.12181383, 0.1452545, -0.3973738, -0.10285705, -0.15147118, -0.28072536, 0.4379245, -0.06340889), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(c2, MF4x4(0.14590915, 0.034363795, -0.02217679, 0.15465777, -0.020056443, 0.06256286, 0.00068213895, -0.004845135, 0.10313473, 0.13895464, -0.0957288, 0.10452721, -0.06313026, -0.06739777, 0.16052145, -0.115432285), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(d2, MF4x4(-0.083468825, 0.15143521, 0.19880214, -0.0054416056, -0.1074472, 0.027439727, -0.16624895, -0.026701076, -0.046576414, -0.061388403, 0.34304553, -0.08921803, 0.09399348, -0.043658186, -1.3050584, -0.07285428), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(e2, MF4x4(-0.2544287, -0.38059148, 0.7181705, -0.44567156, 0.10387618, 0.06472145, 0.08178852, -0.016514499, -0.1630076, -0.16066378, -0.19193888, -0.24423774, -0.14821364, -0.28755048, -0.1322022, 0.25716448), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(f2, MF4x4(0.13228743, 0.24624044, 0.10462062, 0.26341802, 0.035913363, 0.09206641, 0.044785645, 0.010443224, 0.05206244, 0.008345797, -0.32408288, -0.2484674, -0.027154556, 0.0006338974, 0.09008037, 0.027416239), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(g2, MF4x4(-0.061936356, -0.07008738, -0.22344092, 0.20339371, 0.03216865, 0.103117235, 0.10232644, 0.10809929, 0.08320763, 0.058004253, -0.06520991, 0.038012277, -0.12916973, -0.1150849, -0.03713365, -0.0886423), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(h2, MF4x4(0.3213531, 0.1826207, 0.022152286, 0.025484305, -0.054090437, 0.08160166, 0.13491987, -0.06896833, 0.10781034, 0.08944192, -0.34036443, -0.018937334, -0.18917687, -0.13239872, 0.11581373, -0.038915917), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(i2, MF4x4(-0.20916902, 0.08310064, 0.19347866, 0.29880634, -0.007023385, 0.005319598, -0.06649972, 0.03248317, -0.04066817, -0.06176127, -0.41747397, 0.14132817, -0.021392342, -0.021360394, 0.101215124, -0.05375729), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(na1, MF4x4(-0.008702178, -0.03840238, 0.13321695, 0.065163925, -0.062342774, -0.030948557, 0.0069512874, -0.2634128, -0.09415655, 0.02985776, 0.021763485, 0.27137864, -0.21608604, -0.19126832, -0.37335086, -0.16941321), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nb1, MF4x4(0.04631249, 0.33492458, -0.6266605, 0.20180638, 0.039800193, -0.14341171, -0.8203481, 0.04878081, 0.008235832, 0.15065777, -0.32971388, 0.1828355, -0.1510293, -0.17637968, 0.125366, -0.06719769), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nc1, MF4x4(-0.014685718, -0.04156494, 0.2728874, -0.106735535, -0.1312142, -0.05991217, 0.15173748, -0.09276527, 0.027946949, 0.12980466, 0.017537035, 0.058945708, -0.11254791, -0.06708247, -0.28308856, -0.058375884), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nd1, MF4x4(0.2220684, -0.19030218, -0.1259754, 0.09647918, -0.20530927, -0.16737363, -0.055208467, -0.067288965, 0.1428622, 0.08903465, 0.494294, 0.28669015, -0.17464463, -0.2190753, 0.13515279, 0.24887499), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ne1, MF4x4(-0.24211104, -0.11129136, 0.03340221, 0.49835417, -0.11755811, -0.732711, -0.3876752, 0.6178176, 0.1437329, -0.05131951, -0.16705558, -0.3823752, -0.23198022, -0.27967533, 0.7223488, -0.5565778), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nf1, MF4x4(-0.04738433, -0.14606567, 0.22317784, 0.0055712103, -0.064653076, -0.16446865, -0.10802961, -0.10179589, 0.060855757, 0.22762765, -0.037358448, 0.24772792, -0.15458576, -0.0770241, 0.43480682, 0.008342627), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ng1, MF4x4(0.117756896, -0.06760757, 0.12629354, -0.13241243, -0.05329636, 0.031004142, 0.19809054, 0.1504123, -0.024029436, -0.011011192, -0.014698134, 0.12855798, 0.027526522, -0.102618076, -0.2597635, -0.23887417), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nh1, MF4x4(-0.012681944, 0.088339254, 0.58977854, 0.020116867, -0.30643263, -0.11593101, 0.2829653, -0.060883448, 0.027514484, -0.19997032, -0.12530403, 0.3302542, -0.10344085, -0.0644199, -0.11374762, 0.38778695), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ni1, MF4x4(0.073869206, -0.059440095, -0.016326021, -0.08571949, -0.04171866, 0.042949438, 0.13984677, -0.15829174, -0.025245706, 0.0059198164, -0.0432442, 0.20765327, -0.058762096, 0.11539401, 0.036120266, 0.24331446), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(na2, MF4x4(0.012567978, 0.07251118, -0.12190053, 0.10283353, 0.088345066, 0.0017397653, -0.2381744, 0.101314925, 0.022791719, -0.043069735, -0.15024713, -0.072577685, 0.19976862, -0.059844784, 0.38824072, 0.0020866133), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nb2, MF4x4(0.27314463, 0.0739519, 0.08960633, 0.03709254, 0.032681584, 0.22859, -0.41635752, -0.07382896, 0.13144481, -0.24017848, 0.07981319, 0.15370876, 0.059314378, 0.29214182, -0.39464346, -0.13867916), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nc2, MF4x4(-0.005685388, -0.039528795, -0.055917054, -0.06578973, 0.020702876, -0.00709528, 0.08486715, -0.0075865295, 0.05714374, -0.27417144, 0.4555885, 0.013780273, 0.05096835, 0.159233, -0.05228782, 0.15794256), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nd2, MF4x4(-0.0010807351, -0.022064442, 0.13078515, 0.11357431, 0.11269685, 0.029679844, 0.14385091, 0.10241993, 0.030162932, -0.016101424, 0.20761637, 0.4683215, 0.03091817, -0.58406824, -0.3438075, 0.3653469), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ne2, MF4x4(-0.016927537, 0.13944507, -0.38772225, -0.11645372, -0.1683389, -0.081295304, 0.271328, 0.14980802, 0.47266555, 0.04091753, 0.006903156, -0.00832747, -0.056511678, 0.06924621, -1.0780094, 0.1268596), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nf2, MF4x4(-0.21017683, -0.077091806, 0.28906518, 0.022843512, -0.062092084, -0.017447937, 0.25115407, -0.1367289, 0.0021664056, 0.0034106125, 0.5305142, -0.029012429, -0.014483031, 0.05575314, -0.35784876, -0.09252365), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ng2, MF4x4(0.008859689, 0.06481962, 0.09483335, 0.18473764, 0.0015982646, -0.06144117, 0.054042596, -0.19934553, -0.20250106, 0.096015476, 0.21697922, 0.6265738, -0.16049659, -0.33120447, 0.27775142, 0.14459921), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nh2, MF4x4(-0.11195867, 0.21663944, 0.5021048, 0.04712746, 0.08637696, 0.07792573, 0.23626573, -0.075164914, 0.06574307, -0.16795279, 0.06829719, -0.027584063, -0.015064924, -0.057976205, 0.14589287, -0.15683101), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ni2, MF4x4(0.07626267, -0.03523683, 0.106941625, -0.15825523, 0.032598946, 0.038718563, -0.016688785, -0.054390162, 0.05544311, 0.13933052, 0.078817375, -0.10183935, 0.041770034, 0.032732744, 0.062236354, 0.0068387473), conv2d_10_tf);\n\ttex9[gxy] = conv2d_10_tf;\n\tMF4 nconv2d_10_tf = max(-conv2d_10_tf, 0);\n\tconv2d_10_tf = max(conv2d_10_tf, 0);\n\n\tMF4 target = MF4(0.062238827, 0.069814906, -0.107347876, 0.64385885);\n\ttarget = MulAdd(e1, MF4x4(-0.25229862, 0.22394362, 0.0050771693, -0.07544911, -0.11078993, -0.14940143, 0.009394699, 0.0110528935, 0.044721916, 0.26324025, -0.046336185, 0.38099283, 0.053437576, -0.07238376, -0.090147175, 0.5568665), target);\n\ttarget = MulAdd(e2, MF4x4(0.036739275, -0.2334262, 0.032853063, 0.24364692, -0.122930475, 0.1975849, -0.01315444, -0.13528247, -0.014283123, 0.057573725, 0.058717266, 0.16260214, 0.03097313, -0.11750414, -0.18610783, -0.23006414), target);\n\ttarget = MulAdd(ne1, MF4x4(0.37318927, -0.26915783, 0.035015646, 0.2676218, 0.1748369, 0.094052985, -0.11020892, -0.14514406, 0.004877109, -0.26225975, 0.13958913, -0.16787122, 0.06908459, -0.10446216, -0.028498875, -0.28281447), target);\n\ttarget = MulAdd(ne2, MF4x4(0.1980342, 0.021963626, -0.03271427, 0.28889674, 0.043385092, -0.16916741, -0.008713317, 0.00013464666, 0.0819348, 0.0152427135, -0.14862345, -0.15659885, -0.050634, 0.04153691, 0.042288564, 0.00585241), target);\n\ttarget = MulAdd(conv2d_11_tf, MF4x4(-0.17560056, 0.3521319, 0.20137301, -0.25535235, 0.030570813, 0.2411823, 0.053508975, -0.34454364, 0.22279017, -0.41471666, -0.15029109, 0.22158626, -0.08751699, -0.09357398, 0.20704596, -0.20073438), target);\n\ttarget = MulAdd(nconv2d_11_tf, MF4x4(0.15419295, 0.31318265, 0.004593545, 0.78029615, -0.16751337, -0.32214537, -0.44051525, 0.22405408, -0.0064655836, 0.36599794, -0.26032063, 0.1850997, 0.13661511, -0.49070612, -0.34533858, 0.16373816), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.09806042, 0.36764845, 0.11531638, 0.073847674, -0.16854957, -0.19408809, -0.16800502, -0.12827317, -0.5168489, 0.030958507, -0.03509507, 0.086487584, 0.01842899, -0.10123225, -0.17940263, -0.028054722), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(0.21619087, -0.05322262, -0.31423846, 0.37783054, 0.20402598, 0.53124064, -0.012658878, 0.20003271, -0.17958061, -0.37326333, -0.24583863, 0.057008818, -0.13031931, -0.031875104, -0.2130229, 0.44612458), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.25865164, -0.28258085, 0.09512834, 0.054259088, 0.25939894, 0.38799945, -0.33007956, 0.6692063, -0.22719514, 0.16910313, 0.056874167, 0.016987909, -0.19956954, -0.20683451, -0.19937307, -0.41771019), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(0.23592101, -0.15792374, -0.06965535, 0.30855724, -0.22757038, 0.12033792, 0.3199687, 0.2674324, 0.112318985, -0.14153072, -0.13629095, 0.13337436, 0.09185144, 0.24124412, 0.028630963, 0.22709718), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(0.44043523, 0.32490492, -0.117098905, 0.38431495, 0.07962198, 0.1517891, 0.22628377, 0.13990402, 0.38505656, -0.014830039, 0.20684186, 0.065970615, -0.054330014, -0.046108313, 0.49422976, 0.13082288), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(-0.08174229, -0.013488396, -0.09494761, 0.31210786, -0.14530393, -0.22510533, -0.30971226, -0.17040919, -0.64233893, -0.07164386, -0.20537859, -0.17981663, -0.0060102916, -0.10167985, -0.24380594, 0.36305648), target);\n\ttarget = MulAdd(conv2d_10_tf, MF4x4(-0.23301682, -0.19649999, -0.0016176507, 0.7897105, -0.68460715, -0.06446943, -0.5841334, -0.17928797, 0.021772655, 0.46175778, 0.36450028, 0.27175686, -0.03546283, -0.19889158, -0.24603742, -0.090037055), target);\n\ttarget = MulAdd(nconv2d_10_tf, MF4x4(0.1085313, 0.04249687, 0.13247591, 0.09551512, -0.37197208, 0.3261908, -0.13848339, -0.13538006, 0.13875476, -0.3748712, -0.21430004, 0.09772982, -0.35635203, 0.13196826, -0.09840773, -0.21841893), target);\n\ttex1[gxy] = target;\n\t\n\ttarget = MF4(0.01866206, -0.01430976, -0.04231479, 0.06331023);\n\ttarget = MulAdd(e1, MF4x4(0.22607668, 0.021170171, -0.06774968, -0.019062893, -0.029051676, 0.029224426, 0.097410545, 0.07505055, 0.17470665, -0.025774082, -0.041022647, 0.07615996, 0.031361237, -0.18075092, -0.01981288, 0.30251572), target);\n\ttarget = MulAdd(e2, MF4x4(-0.2228827, -0.18372375, 0.17952546, 0.031262513, 0.10978829, 0.095414534, -0.11202218, -0.017824037, 0.13419671, -0.056704585, 0.086960495, 0.089463, 0.0436869, 0.1987542, -0.24825421, -0.14668585), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.2848745, -0.09242928, 0.24002336, -0.06059541, -0.0066300016, 0.050746392, -0.26092768, -0.060129635, -0.2699064, -0.13927452, 0.3134039, -0.21668927, 0.0028670141, 0.044556674, 0.040246494, -0.26040232), target);\n\ttarget = MulAdd(ne2, MF4x4(0.08408219, -0.038882803, -0.08522774, 0.1714629, -0.03067602, -0.10863579, 0.072058044, -0.012343554, -0.0076697394, 0.17840211, -0.2823912, 0.11976201, -0.05657313, 0.092938855, -0.060931504, 0.06991858), target);\n\ttarget = MulAdd(conv2d_11_tf, MF4x4(0.09868284, 0.054261737, 0.13327791, -0.14897001, -0.06348394, 0.11385057, 0.09684055, -0.084950894, -0.3038146, -0.08645148, 0.035114545, -0.07148952, -0.15862693, 0.26620075, -0.018059343, 0.35772058), target);\n\ttarget = MulAdd(nconv2d_11_tf, MF4x4(-0.4964452, -0.32340884, 0.5129584, -0.090460144, 0.28658384, -0.117274396, 0.25311428, 0.119918026, 0.27442876, -0.19332558, -0.40261742, -0.0627285, -0.36318043, -0.07865861, -0.11114984, -0.1290027), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.42158237, -0.032889403, 0.034080755, 0.25719455, -0.18799819, 0.0981468, 0.22785765, -0.07262642, 0.22532979, -0.09519116, -0.1005627, 0.1767603, -0.100850165, -0.06818755, 0.0059797456, -0.0718568), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(0.12787001, -0.20670003, 0.0034799385, -0.024907416, 0.04423561, -0.13276835, -0.102332935, 0.14673741, 0.08700579, 0.08124997, -0.009865786, 0.041748982, -0.076119795, 0.09744985, 0.13542135, 0.12240728), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(-0.1702021, 0.18497302, 0.06786661, -0.09040049, 0.15212716, 0.055503774, 0.020584844, 0.24927403, 0.23556694, -0.1571619, -0.02012801, 0.08423509, -0.114376806, -0.04171382, 0.040876187, -0.116261706), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.0854133, -0.023111762, 0.3320211, -0.21760856, -0.169973, 0.22671382, 0.4513697, 0.35962802, -0.1499719, 0.24696982, -0.29979527, 0.006662296, 0.20241787, -0.2276791, 0.059445832, 0.18853071), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(-0.026398154, 0.124663144, 0.20381314, 0.2053697, 0.010302614, -0.050437275, 0.033807695, 0.014369258, -0.20720173, 0.05919782, 0.008449617, -0.31949872, 0.011598942, -0.0432789, 0.12732887, 0.049919438), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(-0.06617085, 0.023928246, 0.1698239, 0.19584818, 0.022199618, -0.0040151025, -0.14364237, -0.06734091, 0.49634683, 0.40206975, -0.023004102, 0.16953272, 0.13243976, -0.47359994, 0.18358715, -0.15007599), target);\n\ttarget = MulAdd(conv2d_10_tf, MF4x4(0.03754883, -0.84370553, -0.0057923268, -0.06449944, 0.09488198, -0.09577232, 0.31362334, -0.09768442, 0.15369056, -0.16346063, 0.41194627, 0.10364933, -0.2073915, -0.15944852, -0.57649344, 0.1580545), target);\n\ttarget = MulAdd(nconv2d_10_tf, MF4x4(-0.3224099, -0.17332473, 0.12429976, -0.12284861, 0.32270268, 0.2888736, -0.20192772, 0.15415959, -0.10240418, 0.09524166, -0.14117688, -0.1239787, 0.0015336396, 0.10390812, 0.20461708, -0.12672688), target);\n\ttex2[gxy] = target;\n}\n\n//!PASS 6\n//!DESC Conv-4x3x3x16, Conv-4x1x1x64\n//!IN tex1, tex2, tex8, tex3, tex6, tex7, tex9\n//!OUT tex4, tex5, tex10\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = tex2.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\t\n\tMF4 conv2d_11_tf = tex8.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_11_tf = max(-conv2d_11_tf, 0);\n\tconv2d_11_tf = max(conv2d_11_tf, 0);\n\t\n\tMF4 conv2d_1_tf = tex3.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_1_tf = max(-conv2d_1_tf, 0);\n\tconv2d_1_tf = max(conv2d_1_tf, 0);\n\t\n\tMF4 conv2d_4_tf = tex6.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_4_tf = max(-conv2d_4_tf, 0);\n\tconv2d_4_tf = max(conv2d_4_tf, 0);\n\t\n\tMF4 conv2d_7_tf = tex7.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_7_tf = max(-conv2d_7_tf, 0);\n\tconv2d_7_tf = max(conv2d_7_tf, 0);\n\t\n\tMF4 conv2d_10_tf = tex9.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_10_tf = max(-conv2d_10_tf, 0);\n\tconv2d_10_tf = max(conv2d_10_tf, 0);\n\n\tMF4 conv2d_13_tf = MF4(-0.17614856, -0.14261112, 0.14600825, 0.20389698);\n\tconv2d_13_tf = MulAdd(a1, MF4x4(0.09638616, 0.041973136, 0.032690834, 0.0017506832, 0.035889357, 0.046528358, 0.06497702, 0.06353481, -0.07129311, -0.027845494, 0.003971696, 0.015161773, -0.016153565, -0.02228567, -0.011083082, 0.037676543), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(b1, MF4x4(0.2134379, 0.26289365, 0.1335757, 0.13036838, -0.08787389, -0.106764, -0.048054244, 0.17788094, -0.15528837, -0.11408854, -0.06642222, -0.07838564, -0.09646518, -0.116988175, -0.22729287, -0.11145718), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(c1, MF4x4(0.09568265, 0.006643416, 0.11656759, -0.049414653, 0.14153476, -0.04269765, 0.09150523, 0.26861703, 0.16641477, -0.1080059, 0.22390138, -0.08730618, -0.01928994, -0.06351, -0.0022028533, 0.04301657), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(d1, MF4x4(-0.11731019, -0.040432923, -0.1977298, -0.17696093, -0.09182833, 0.071209684, -0.120773874, 0.021507429, -0.016429326, 0.04448132, 0.0681032, 0.044070866, -0.14647268, 0.008662263, -0.06507026, -0.075289875), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(e1, MF4x4(0.5694518, -0.6138523, 0.28939885, -0.06047394, 0.11681902, -0.7026379, 0.20342608, 0.07128985, 0.06697409, 0.2678358, 1.1430641, 0.20436136, -1.6117494, 0.2799715, -0.01652429, -0.16711035), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(f1, MF4x4(0.15830286, 0.16772346, -0.03232187, 0.029600514, -0.18494213, -0.25623813, 0.15487063, 0.06255487, -0.058094956, 0.19903323, 0.4756497, 0.6381142, -0.036022857, -0.09470495, 0.046093524, 0.031300675), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(g1, MF4x4(-0.38466138, 0.16052443, -0.13819315, -0.059899956, 0.14069949, -0.1297194, 0.105595976, 0.13371274, 0.06298681, -0.038837492, 0.08675327, 0.1501906, 0.031129224, 0.029751344, -0.06775066, -0.047534525), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(h1, MF4x4(0.097809926, -0.14269543, -0.14661346, -0.1819761, -0.023082452, 0.19019675, -0.15678905, -0.07669464, -0.07322769, -0.30472377, 0.33603573, 0.22620338, 0.05328552, 0.030486144, -0.037603505, -0.081246674), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(i1, MF4x4(-0.15090303, -0.0650902, 0.11741429, -0.003369476, 0.043803368, 0.13717425, -0.038966697, -0.05230889, -0.0042353314, -0.017051768, 0.102879845, 0.044044945, -0.012893164, 0.0152335, 0.015073082, 0.08049258), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(a2, MF4x4(-0.07802851, -0.07544602, -0.0039040581, -0.03915584, 0.115673676, -0.024907975, -0.011459969, 0.026098263, 0.043594692, 0.10627707, 0.027093858, 0.051561285, 0.071452856, -0.1758179, 0.28485832, 0.28952092), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(b2, MF4x4(-0.052147392, 0.18546684, 0.19015399, -0.053752594, -0.29468048, 0.010600442, -0.09287294, -0.09246605, 0.17687573, -0.04858957, 0.06478161, -0.0035372626, 0.5927226, 0.38359696, 0.33155236, 0.13010578), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(c2, MF4x4(0.04136322, 0.11806175, 0.19966072, 0.07308716, -0.09563447, -0.064514905, -0.0077517326, 0.11964638, -0.1460613, 0.02240298, 0.014256963, -0.0123070385, 0.1897282, -0.0058207656, 0.040057864, -0.49406672), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(d2, MF4x4(-0.43775788, -0.25118434, -0.3468631, -0.30180287, -0.27033472, -0.0023914252, 0.053275872, -0.021835659, 0.02879347, 0.036559265, 0.044093054, 0.12771723, 0.2702892, -0.2581491, -0.059361164, -0.046974897), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(e2, MF4x4(-0.03310008, -0.5622936, 0.5419483, -0.3599514, 0.2634039, 0.3500813, 0.4152074, 0.24876466, -0.2629078, -0.18554081, -0.76194984, -0.54471385, 0.72921526, 0.3316481, -0.20936906, -0.16736485), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(f2, MF4x4(0.07884802, 0.16494922, 0.2734585, -0.09396988, -0.14178166, -0.105561115, 0.006780099, 0.063054875, 0.12384575, -0.163967, -0.19682601, -0.1647527, 0.59927565, 0.24755491, -0.29760644, -0.074884824), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(g2, MF4x4(-0.186745, 0.21136905, 0.027726538, 0.08498169, 0.009122279, 0.01566938, -0.051473126, 0.014151464, 0.04580383, 0.02071651, 0.14929157, 0.17253524, -0.034080226, 0.07048439, -0.11602547, -0.12655921), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(h2, MF4x4(-0.2831727, -0.21816732, -0.37266397, -0.26041594, -0.18912914, -0.13482115, -0.10902061, -0.110694066, -0.20758803, -0.07158453, 0.14401175, 0.1590672, 0.27700564, -0.3202948, -0.23177631, 0.060082316), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(i2, MF4x4(0.16861005, -0.13237478, -0.12109852, -0.16306286, 0.032467425, 0.009778175, -0.05084063, 0.02528882, -0.028993038, -0.06119019, 0.0124081755, -0.0819979, -0.2308113, -0.23910572, 0.3170529, 0.22742116), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(na1, MF4x4(-0.19654512, 0.037653327, -0.015190324, 0.038381096, 0.034783594, -0.16242851, 0.07052334, 0.0019672879, 0.08069976, 0.090035714, 0.12597767, -0.00065050717, -0.10528094, 0.015088367, -0.045706235, -0.14849594), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nb1, MF4x4(-0.0981129, -0.0044483114, 0.00918156, 0.28903985, 0.23872024, 0.11113565, 0.23359483, 0.21115206, 0.2144387, 0.106830046, 0.03875094, -0.14864162, 0.19366172, 0.21310017, 0.06280982, -0.0581721), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nc1, MF4x4(-0.22814496, -0.08812413, -0.25392863, -0.02752917, 0.05930787, 0.08304853, -0.04027662, -0.010756739, 0.034590207, 0.070662424, 0.15285444, 0.058270697, -0.022838322, 0.024096202, 0.01309858, -0.10489201), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nd1, MF4x4(0.17219496, -0.0066256993, 0.1442649, -0.07291206, 0.34312358, -0.24952441, 0.040031537, 0.18302973, 0.0015231773, 0.24825755, -0.01807878, -0.037405558, 0.21687117, 0.02481246, -0.08312088, -0.14397743), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ne1, MF4x4(0.2859165, 0.6145777, 0.060804237, 0.22117847, -0.25534254, 0.3753605, 0.4193899, 0.06387241, -0.13308842, 0.0012660836, -0.055252563, -0.2552111, 0.8831952, -0.16249466, 0.76958305, 0.3658401), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nf1, MF4x4(-0.14865848, -0.13086087, 0.17719927, 0.2801542, 0.3776111, 0.20903045, 0.1710449, 0.25524843, 0.11910105, 0.034738105, -0.12101939, -0.22116004, 0.11605619, 0.16838482, -0.07223086, -0.15225673), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ng1, MF4x4(0.101802975, -0.12683764, -0.21380596, -0.19243564, 0.017763488, 0.0076850834, -0.0107422285, 0.058099743, 0.03071978, 0.02958345, 0.09209252, -0.012379192, -0.058930825, -0.07321041, -0.09178575, -0.09764888), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nh1, MF4x4(0.2205578, -0.053928245, -0.14290524, -0.18790527, 0.002521159, -0.23389481, 0.11274272, 0.17174199, 0.2128134, 0.14586388, 0.08666812, 0.052028902, 0.024853414, -0.027658377, 0.033780072, -0.0045349374), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ni1, MF4x4(-0.053073518, 0.12716359, 0.008456044, 0.014315154, 0.01918925, -0.13495505, 0.08007481, 0.08627198, 0.024612406, 0.0021514448, 0.04478567, -0.034171678, 0.0027070146, 0.0149149615, -0.15999815, -0.1866448), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(na2, MF4x4(0.040357295, -0.12759757, 0.03543834, -0.029329961, -0.078925595, 0.07807751, 0.08971355, -0.05469623, -0.08630596, -0.11219292, -0.08082983, -0.020131797, -0.04191703, 0.22003745, -0.28878415, -0.132956), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nb2, MF4x4(0.021098461, 0.048261415, -0.121181525, -0.24724431, 0.32716268, 0.03046708, -0.28138334, -0.22871564, -0.15983087, 0.10721642, -0.14833531, -0.115366876, -0.393837, -0.62930757, -0.29534766, 0.02588463), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nc2, MF4x4(-0.03972534, -0.051577512, -0.04452277, -0.12650263, 0.15491997, -0.026459083, 0.009715449, -0.20551588, -0.042652152, 0.119186826, -0.13313279, -0.13183416, -0.20730016, 0.003008999, -0.19962612, 0.1760052), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nd2, MF4x4(0.1724579, -0.3179752, 0.18908302, 0.40730157, 0.44569418, -0.038390577, -0.13144472, -0.18369946, -0.1654486, -0.2106428, -0.084723935, 0.10262653, -0.26097777, 0.15257284, -0.36599034, -0.30871773), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ne2, MF4x4(-0.21338613, 0.680362, 0.079820015, 0.6081361, -0.9754953, -0.33735132, -1.2323227, -0.17950675, -0.31327835, 0.4732144, 0.22757599, 0.23051551, -0.8099572, -0.49106973, 0.96547806, 0.30975753), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nf2, MF4x4(0.16933723, 0.17994887, -0.38310486, -0.4208871, 0.373761, 0.20749316, -0.080664486, -0.26229286, -0.04797456, 0.28605196, -0.040223103, -0.034632236, -0.5650002, -0.38834664, 0.14565933, 0.1488285), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ng2, MF4x4(0.32558438, -0.18572666, 0.049500592, 0.2319145, -0.23547912, 0.2740939, 0.027905073, -0.022077003, 0.10860379, -0.15617043, -0.097419575, -0.11391895, -0.4266203, 0.060962453, -0.12154808, -0.19734453), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nh2, MF4x4(-0.07880791, -0.2247225, 0.445858, 0.3889803, 0.14111102, 0.378859, 0.040187526, -0.021096235, 0.04169405, -0.075737596, 0.046068836, 0.11624106, 0.08169536, 0.3022304, -0.24427707, -0.34422734), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ni2, MF4x4(0.13501012, -0.07389663, -0.010668981, -0.069029465, 0.06960202, -0.067375034, 0.08431378, 0.04207825, -0.121635035, -0.051126126, -0.1546829, 0.00073073455, -0.20674464, 0.27346626, -0.15771666, -0.024096), conv2d_13_tf);\n\tMF4 nconv2d_13_tf = max(-conv2d_13_tf, 0);\n\tconv2d_13_tf = max(conv2d_13_tf, 0);\n\n\tMF4 target = MF4(-0.24792486, -0.09899526, 0.3761066, 0.022595163);\n\ttarget = MulAdd(e1, MF4x4(-0.3378193, 0.013861057, 0.19208853, -0.05050854, 0.08691835, 0.16724123, 0.10351982, -0.40157926, -0.055889476, -0.040115904, -0.13351472, -0.7937818, 0.18700145, 0.109559685, -0.119053595, -0.12651901), target);\n\ttarget = MulAdd(e2, MF4x4(0.05863214, -0.011048432, 0.22007701, -0.21624403, -0.06139813, -0.06766812, 0.022506371, 0.17585056, -0.37994936, -0.018394569, 0.5127985, -0.19700864, -0.07880973, 0.15687309, -0.12574019, -0.19570859), target);\n\ttarget = MulAdd(ne1, MF4x4(0.5059051, -0.010676642, -0.47922808, -0.017590942, -0.20583269, -0.10777252, -0.33185184, -0.0025075034, -0.1518394, 0.14268444, 0.005011664, 0.09016961, -0.46011007, -0.09428751, 0.34915137, 0.13334215), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.15615676, 0.09427065, 0.006016912, -0.0003997069, 0.16170138, 0.09666374, 0.14158808, -0.23772424, 0.39373854, 0.004074768, -0.28073287, 0.0032489141, 0.23473479, -0.12678933, -0.24589436, -0.21988034), target);\n\ttarget = MulAdd(conv2d_11_tf, MF4x4(-0.12682347, 0.033012364, 0.18928578, 0.12523666, 0.12809147, 0.008567846, -0.10653368, -0.03712133, 0.075765386, -0.042196997, 0.039182812, 0.17273012, 0.21258987, 0.039698593, -0.0018848967, -0.07930902), target);\n\ttarget = MulAdd(nconv2d_11_tf, MF4x4(0.013454855, -0.18023406, -0.49323913, -0.032017395, 0.11903338, -0.043025218, -0.46579728, 0.21894619, -0.21387324, -0.13455649, 0.30638975, 0.3472243, 0.09305909, -0.015791988, 0.071368046, -0.038680866), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.012506262, 0.09754124, -0.092920735, 0.23061672, 0.08051618, -0.38472125, 0.17626029, 0.009075537, -0.18316247, -0.1338181, 0.2650675, 0.0516641, 0.080453254, 0.22033659, -0.13004474, -0.07781194), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.12412428, -0.11978811, 0.06780084, -0.1710261, -0.09355731, 0.31283846, -0.022725523, -0.16437142, -0.11865966, 0.10907317, 0.22463441, 0.017325362, 0.02512185, -0.49577957, 0.2016018, 0.14196795), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.02570746, 0.22231244, -0.10168496, -0.21518417, -0.0054759895, -0.32655567, -0.34048972, 0.11826245, -0.002854444, -0.11257602, -0.09318273, -0.10332744, 0.078923725, -0.11612356, -0.030546617, -0.12474622), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.11420135, -0.24489257, 0.15446539, 0.12646616, -0.07092042, 0.110105604, 0.054362826, 0.07867222, -0.15557991, 0.071640015, 0.21894808, 0.24164975, 0.0062167975, 0.10681122, -0.32373384, 0.06931269), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(0.0769479, -0.09528171, -0.38724712, 0.010703831, -0.016925508, -0.018486671, 0.035855293, -0.17932071, -0.078450575, -0.036463127, 0.20942347, 0.060895607, -0.16549253, -0.008952913, 0.20420915, -0.009001661), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(0.074243605, 0.015648128, -0.05003613, 0.10121142, -0.0218682, 0.006933849, 0.101385176, 0.16132122, 0.0013466089, 0.14042993, -0.25816667, -0.040413387, -0.19570185, -0.08637437, 0.17934911, 0.24961887), target);\n\ttarget = MulAdd(conv2d_10_tf, MF4x4(-0.40401492, -0.16131033, 0.454142, 0.56882274, -0.013024656, -0.04423676, -0.023137214, 0.36117804, -0.0901519, -0.03237353, 0.010538879, -0.033432953, 0.105834074, -0.0549062, 0.05576519, -0.092626475), target);\n\ttarget = MulAdd(nconv2d_10_tf, MF4x4(-0.0017419134, -0.022569131, 0.027351622, -0.1289159, -0.0823291, -0.020735232, -0.28244564, -0.21001048, -0.048950948, 0.022033915, 0.14678808, -0.010097721, -0.06839686, 0.031720705, 0.11333891, 0.05049834), target);\n\ttarget = MulAdd(conv2d_13_tf, MF4x4(-0.2191025, -0.005935159, 0.24627906, 0.058490098, -0.011270337, -0.019233467, -0.17698613, -0.0052346545, 0.2288101, -2.5289672e-05, 0.267102, -0.026019678, -0.17386179, -0.017672652, -0.35420522, 0.2836498), target);\n\ttarget = MulAdd(nconv2d_13_tf, MF4x4(0.19294678, 0.011570707, -0.34666267, -0.09040537, 0.18127288, 0.10182209, 0.08549184, -0.48737645, -0.040560674, 0.20645715, -0.68665904, -1.3146902, 0.18629448, 0.09806124, 0.09953519, -0.5450951), target);\n\ttex4[gxy] = target;\n\t\n\ttarget = MF4(-0.14657217, -0.04252579, -0.24773599, 0.13271233);\n\ttarget = MulAdd(e1, MF4x4(0.15938057, -0.23559119, -0.28445953, 0.05912659, 0.5229142, -0.02843545, -0.004113748, -0.056947608, 0.1367782, -0.026573306, -0.0056468234, 0.2564603, 0.25593445, 0.08957574, 0.26139608, -0.053708326), target);\n\ttarget = MulAdd(e2, MF4x4(0.1382045, -0.103480555, 0.05831098, 0.000735441, 0.20176832, -0.087079, -0.07839967, -0.0750771, -0.31373122, -0.27509713, -0.23071732, -0.2560584, 0.110963896, -0.052200988, 0.0015331429, -0.30707568), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.056460302, 0.2147989, 0.40628514, -0.058157466, -0.17940372, -0.033689886, -0.022241283, -0.0018471872, 0.26578268, -0.098452985, -0.01501511, -0.35676336, -0.07152056, -0.07245194, -0.32194778, 0.03888747), target);\n\ttarget = MulAdd(ne2, MF4x4(0.09541087, 0.24680884, -0.045627397, -0.08557985, 0.08790337, 0.10179883, 0.3007415, 0.044102084, 0.1064372, 0.2994135, 0.15280741, 0.2683849, 0.24750276, -0.021364288, -0.004039902, 0.28266376), target);\n\ttarget = MulAdd(conv2d_11_tf, MF4x4(-0.26525706, -0.08389754, -0.10918147, -0.06878537, -0.080960914, 0.03737948, 0.107663736, -0.0025957434, -0.10748625, 0.03004828, 0.03505711, 0.075969726, 0.06360464, -0.02740913, 0.025467616, 0.017698402), target);\n\ttarget = MulAdd(nconv2d_11_tf, MF4x4(-0.2370006, -0.07687027, 0.015225365, 0.17986605, 0.37507248, 0.2088343, 0.17946883, 0.2379337, -0.25194344, 0.035336476, -0.15362923, -0.008527836, 0.045963865, 0.025127884, 0.06973296, 0.063168526), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.09583503, 0.15350054, -0.15248272, 0.045916792, -0.18339546, -0.29747355, 0.027330166, -0.39461568, 0.095963046, -0.1775004, -0.19221638, -0.15368307, 0.056089737, 0.18232727, 0.03182419, 0.30851522), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.053062204, -0.0018095247, -0.04514637, 0.05689337, 0.07561519, 0.17035827, -0.0048587993, 0.38348997, -0.063476466, 0.09454219, 0.03969728, 0.11693653, -0.0012066896, -0.25955358, -0.14428577, -0.19967856), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.034378257, 0.16030714, 0.05160261, 0.21927983, -0.14469208, 0.041181874, 0.034202367, 0.07983977, 0.22149332, -0.08595994, -0.102985874, -0.07265774, -0.123233125, -0.12819915, 0.08662329, -0.12866889), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.1511104, -0.056531575, -0.023363205, -0.1909304, -0.15387732, 0.0671428, -0.15435332, 0.32735124, -0.3293996, 0.055349957, -0.043602336, 0.08102016, 0.200238, 0.13393362, 0.0044564987, 0.16932343), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(-0.09768015, 0.09503259, 0.12768175, 0.109941825, 0.006567291, -0.102840215, -0.05611706, -0.06865725, -0.2605998, 0.00585688, -0.035119556, -0.06810342, -0.090756536, -0.079376444, -0.22370447, -0.05727839), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(-0.101120085, 0.028628688, 0.07296149, 0.15868604, 0.047761433, 0.07732842, -0.016735386, 0.049528413, 0.45619023, 0.062347047, -0.026208224, 0.046785966, -0.05715451, 0.04459997, -0.13676195, 0.07778552), target);\n\ttarget = MulAdd(conv2d_10_tf, MF4x4(-0.051393595, -0.12524572, -0.36763692, 0.039426118, 0.0349489, 0.07154008, -0.12969223, 0.30249006, -0.15237582, -0.06685149, -0.042049125, -0.0065471376, 0.017375907, -0.07143284, -0.018227521, -0.02778629), target);\n\ttarget = MulAdd(nconv2d_10_tf, MF4x4(-0.048270147, -0.07275859, 0.05502608, -0.034233145, 0.12822276, -0.02580663, -0.035358194, 0.05195595, 0.044340245, 0.04435722, 0.017985033, 0.007126749, -0.052825354, -0.059360538, -0.09412195, 0.060212586), target);\n\ttarget = MulAdd(conv2d_13_tf, MF4x4(-0.18645881, -0.04506676, -0.035483524, 0.0063163475, -0.13747677, -0.046985928, 0.0015511635, 0.019160518, -0.4315584, -0.06979354, -0.001936674, 0.0034739177, 0.3490474, 0.15375568, -0.0085117165, 0.017511753), target);\n\ttarget = MulAdd(nconv2d_13_tf, MF4x4(0.20412005, 0.017221482, 0.08719384, -0.016668927, 0.10308073, -0.1013255, 0.087567665, -0.1004404, 0.9800944, -0.25387812, 0.36526182, -0.21970014, 0.36388537, -0.111629054, 0.21855496, -0.10375334), target);\n\ttex5[gxy] = target;\n\t\n\ttarget = MF4(0.25545248, -0.112931795, -0.073284395, 0.29349956);\n\ttarget = MulAdd(e1, MF4x4(-0.22553514, -0.086349756, -0.07735866, 0.48776403, -0.33010843, 0.28214008, -0.2242988, -0.11439686, -0.14720698, 0.2391116, 0.017813087, 0.4352493, -0.16412133, -0.12791261, -0.019643517, 0.19420698), target);\n\ttarget = MulAdd(e2, MF4x4(-0.9178235, -0.6335296, 0.11146894, -0.0759723, -0.4519685, -0.3007054, 0.014501872, 0.49081457, 0.10673664, 0.035011876, 0.10259641, 0.106546804, 0.5186602, 0.44900152, 0.20597687, -0.39562696), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.11399027, -0.19542706, 0.087422565, -0.70140034, -0.41029623, -0.049330976, 0.19682989, 0.22516033, -0.22858454, -0.12200487, -0.14852463, -0.40852943, -0.035900578, 0.1886829, 0.019452838, -0.16703403), target);\n\ttarget = MulAdd(ne2, MF4x4(0.077843145, 0.7323388, -0.022324003, 0.09445821, 0.026166735, -0.1790519, 0.086004496, -0.40011314, 0.01210975, -0.053515363, -0.2501869, 0.06671936, -0.71530163, -0.57196116, -0.38604704, 0.5024949), target);\n\ttarget = MulAdd(conv2d_11_tf, MF4x4(0.30748057, 0.12223383, 0.059069566, 0.18568543, 0.008148904, 0.009438993, 0.053996127, -0.19665428, 0.38345802, 0.20945628, 0.01368962, -0.2834185, -0.15974379, -0.4628119, -0.18307796, 0.22361058), target);\n\ttarget = MulAdd(nconv2d_11_tf, MF4x4(0.00833237, -0.10446639, -0.028896136, -0.18917766, -0.24016596, -0.034934085, -0.013062447, 0.079293504, -0.16635038, -0.11056953, 0.2618598, 0.07227063, 0.057050053, 0.013885738, 0.09385356, -0.27068567), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(-0.5675842, 0.13328329, -0.0252242, 0.34746942, 0.34712863, 0.13635597, 0.02356317, -0.1617803, -0.16861948, -0.018621348, 0.02680753, 0.30408886, -0.034069773, 0.08948961, -0.057724215, 0.111602895), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.03835732, -0.11742271, 0.025922403, 0.24378933, -0.36450952, -0.15091905, 0.1214089, 0.21004228, 0.28717628, 0.17053549, 0.10836553, -0.08449643, 0.17507422, -0.03195037, -0.03947606, 0.050725944), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(-0.21257977, -0.0043600267, -0.12929972, -0.233982, -0.26728988, -0.21511734, 0.07835361, -0.24275993, -0.359975, -0.23956355, -0.07852281, 0.40282407, 0.17184453, 0.11672362, 0.0433819, -0.032416925), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(0.20235331, 0.16114245, 0.015931258, -0.17612378, 0.2449233, 0.0031623375, -0.2784109, 0.3347522, 0.46005112, 0.20291579, 0.13030154, -0.23390344, -0.39526668, -0.09738018, 0.013237711, 0.15512206), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(-0.1434995, -0.12447443, 0.095140964, -0.08841888, -0.05424789, -0.11747197, -0.097216785, 0.12958516, 0.34194428, 0.111434594, -0.02794559, -0.22843723, -0.043816507, -0.16116165, -0.29044297, 0.33768278), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(0.39615574, 0.05410518, -0.07885892, -0.22024721, 0.011598219, 0.1446308, 0.11650995, -0.020602686, -0.51892537, 0.14221898, -0.01697185, 0.05188913, 0.07683384, 0.122416414, 0.02296055, 0.2932525), target);\n\ttarget = MulAdd(conv2d_10_tf, MF4x4(-0.058334768, -0.12389275, -0.02024463, 0.46323973, 0.17553197, 0.35435143, 0.19796194, 0.06836581, 0.15947883, -0.056819815, -0.091066726, 0.22499265, -0.21629064, -0.22203816, 0.053594038, 0.09816408), target);\n\ttarget = MulAdd(nconv2d_10_tf, MF4x4(-0.016514458, -0.14323495, 0.017527288, -0.19750872, -0.47891942, -0.073656894, -0.086305656, 0.38173944, 0.1016976, 0.15224999, 0.048396923, -0.19529565, 0.13985658, 0.07292602, 0.06549534, 0.210662), target);\n\ttarget = MulAdd(conv2d_13_tf, MF4x4(0.3459035, 0.0071707424, -0.019186711, 0.2527976, 0.29675815, 0.35949966, -0.06114439, -0.02610484, 0.5475115, -0.13828747, 0.019238133, 0.101953685, -0.52718824, 0.017254699, 0.08887026, -0.19507161), target);\n\ttarget = MulAdd(nconv2d_13_tf, MF4x4(-0.3064509, -0.031613164, 0.040971015, -0.24252266, -0.21725285, -0.35069898, 0.0951283, -0.065222666, -0.98867434, 0.08824426, 0.06094605, -0.21000125, -0.72066385, -0.34141323, 0.049487203, 0.0690126), target);\n\ttex10[gxy] = target;\n}\n\n//!PASS 7\n//!DESC Conv-3x3x3x24\n//!IN INPUT, tex4, tex5, tex10\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tconst float2 outputPt = GetOutputPt();\n\tconst float2 pos = (gxy + 0.5f) * outputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex4.SampleLevel(sam1, pos - outputPt, 0);\n\tMF4 b1 = tex4.SampleLevel(sam1, pos + float2(-outputPt.x, 0), 0);\n\tMF4 c1 = tex4.SampleLevel(sam1, pos + float2(-outputPt.x, outputPt.y), 0);\n\tMF4 d1 = tex4.SampleLevel(sam1, pos + float2(0, -outputPt.y), 0);\n\tMF4 e1 = tex4.SampleLevel(sam1, pos, 0);\n\tMF4 f1 = tex4.SampleLevel(sam1, pos + float2(0, outputPt.y), 0);\n\tMF4 g1 = tex4.SampleLevel(sam1, pos + float2(outputPt.x, -outputPt.y), 0);\n\tMF4 h1 = tex4.SampleLevel(sam1, pos + float2(outputPt.x, 0), 0);\n\tMF4 i1 = tex4.SampleLevel(sam1, pos + outputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = tex5.SampleLevel(sam1, pos - outputPt, 0);\n\tMF4 b2 = tex5.SampleLevel(sam1, pos + float2(-outputPt.x, 0), 0);\n\tMF4 c2 = tex5.SampleLevel(sam1, pos + float2(-outputPt.x, outputPt.y), 0);\n\tMF4 d2 = tex5.SampleLevel(sam1, pos + float2(0, -outputPt.y), 0);\n\tMF4 e2 = tex5.SampleLevel(sam1, pos, 0);\n\tMF4 f2 = tex5.SampleLevel(sam1, pos + float2(0, outputPt.y), 0);\n\tMF4 g2 = tex5.SampleLevel(sam1, pos + float2(outputPt.x, -outputPt.y), 0);\n\tMF4 h2 = tex5.SampleLevel(sam1, pos + float2(outputPt.x, 0), 0);\n\tMF4 i2 = tex5.SampleLevel(sam1, pos + outputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\t\n\tMF4 a3 = tex10.SampleLevel(sam1, pos - outputPt, 0);\n\tMF4 b3 = tex10.SampleLevel(sam1, pos + float2(-outputPt.x, 0), 0);\n\tMF4 c3 = tex10.SampleLevel(sam1, pos + float2(-outputPt.x, outputPt.y), 0);\n\tMF4 d3 = tex10.SampleLevel(sam1, pos + float2(0, -outputPt.y), 0);\n\tMF4 e3 = tex10.SampleLevel(sam1, pos, 0);\n\tMF4 f3 = tex10.SampleLevel(sam1, pos + float2(0, outputPt.y), 0);\n\tMF4 g3 = tex10.SampleLevel(sam1, pos + float2(outputPt.x, -outputPt.y), 0);\n\tMF4 h3 = tex10.SampleLevel(sam1, pos + float2(outputPt.x, 0), 0);\n\tMF4 i3 = tex10.SampleLevel(sam1, pos + outputPt, 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF3 target = MF3(-0.008654677, -0.008960475, -0.009207461);\n\ttarget = MulAdd(a1, MF4x3(0.009331738, 0.018572107, 0.022010602, 0.0039357482, -0.016444422, -0.02944063, -0.03631314, -0.056094132, -0.050672945, 0.0077923858, -0.023002634, 0.021950275), target);\n\ttarget = MulAdd(b1, MF4x3(-0.015352033, -0.018134398, -0.031076321, 0.09254242, 0.07433854, 0.094745025, 0.09154548, 0.10833595, 0.084574744, -0.06755486, 0.022037052, -0.09424632), target);\n\ttarget = MulAdd(c1, MF4x3(0.019884977, 0.021337362, 0.026944455, 0.11712925, 0.021360623, -0.017487818, -0.14924358, -0.1149652, -0.12671575, 0.012104617, -0.039750118, -0.002691512), target);\n\ttarget = MulAdd(d1, MF4x3(0.00344861, -0.0071971808, -0.011530234, 0.039175995, 0.12297611, 0.15838134, 0.033669177, 0.018021118, -0.010552058, -0.048705686, 0.03920792, -0.00043378037), target);\n\ttarget = MulAdd(e1, MF4x3(-0.09026871, -0.09393277, -0.0849584, -0.16249315, -0.15300421, -0.1383744, -0.10384136, -0.04767781, 0.022754611, 0.14949107, 0.06619118, 0.016498014), target);\n\ttarget = MulAdd(f1, MF4x3(0.0138111375, 0.0033931104, 0.010171692, -0.037168514, -0.029690385, -0.045251988, 0.074186325, 0.056937214, 0.06968052, -0.057218343, -0.060974367, -0.030270662), target);\n\ttarget = MulAdd(g1, MF4x3(-0.0028436058, 0.010812401, 0.012844112, 0.050941236, -0.035253663, -0.061899442, -0.01614737, 0.01752726, -0.023620276, -0.04961744, -0.06673698, 0.039417736), target);\n\ttarget = MulAdd(h1, MF4x3(0.042587858, 0.03904053, 0.028782798, -0.09807107, -0.01929461, -0.034585416, 0.029584344, -0.053522006, 0.0068953806, -0.04451219, 0.018451538, -0.029895604), target);\n\ttarget = MulAdd(i1, MF4x3(-0.0041629653, 0.0070575047, 0.004515914, 0.043267716, 0.0020689464, 0.010954458, -0.0013374113, 0.009222025, -0.0272451, 0.00645634, -0.037133303, -0.03209227), target);\n\ttarget = MulAdd(a2, MF4x3(-0.010575585, -0.00065620174, -0.009598815, -0.068592854, -0.06461729, -0.05058234, 0.03790364, 0.044340994, 0.049410254, -0.009466368, 0.081484325, 0.07265021), target);\n\ttarget = MulAdd(b2, MF4x3(-0.01598744, -0.025267042, -0.010857686, 0.0771284, 0.081469566, 0.07138724, -0.00555409, -0.006099002, -0.02123016, -0.29761449, -0.10614364, -0.1027762), target);\n\ttarget = MulAdd(c2, MF4x3(0.02664693, 0.027294884, 0.019080907, 0.010511018, 0.01179118, 0.02403106, 0.05436632, 0.07234358, 0.08310484, 0.03146414, -0.02122628, -0.021377526), target);\n\ttarget = MulAdd(d2, MF4x3(0.027889153, 0.018621879, 0.025370836, -0.14017807, -0.14772555, -0.14436993, -0.017539013, -0.028932836, -0.06139342, 0.0007456944, -0.00086823467, -0.05282406), target);\n\ttarget = MulAdd(e2, MF4x3(-0.0017060362, 0.00777287, 0.003343087, 0.20926197, 0.21706305, 0.23307496, -0.16601992, -0.183019, -0.139133, 0.13933188, -0.013340946, -0.021960167), target);\n\ttarget = MulAdd(f2, MF4x3(-0.018459205, -0.023415336, -0.0173199, 0.08558963, 0.10207333, 0.06444232, -2.5721886e-06, -0.015806457, -0.036833573, -0.20488425, -0.009690944, 0.020323949), target);\n\ttarget = MulAdd(g2, MF4x3(0.010601256, 0.007344732, 0.0056538777, 0.021578439, 0.017345639, 0.0032158173, 0.031785835, 0.04436094, 0.05920955, 0.23948166, -0.06085234, -0.14597872), target);\n\ttarget = MulAdd(h2, MF4x3(0.00777581, 0.012557825, 0.0123206265, -0.0691877, -0.0861206, -0.077578135, -0.018104369, -0.024902673, -0.036656447, 0.10611258, 0.09515675, 0.118361965), target);\n\ttarget = MulAdd(i2, MF4x3(0.0021278602, 0.003906813, 0.0016891633, -0.06379228, -0.060215514, -0.051921096, 0.039505195, 0.052035928, 0.05059492, -0.047328927, -0.0066980706, 0.09447027), target);\n\ttarget = MulAdd(a3, MF4x3(0.18920127, -0.045531996, -0.044905778, 0.013732142, 0.019208554, 0.011500921, -0.0040531917, -0.02001873, -0.0023935249, -0.033091005, -0.017751431, -0.009764133), target);\n\ttarget = MulAdd(b3, MF4x3(0.15241088, -0.13676398, -0.01825122, -0.003517022, -0.004041717, 0.003177141, 0.011362495, 0.03685609, 0.008397426, -0.08597375, -0.111830845, -0.110682696), target);\n\ttarget = MulAdd(c3, MF4x3(-0.046171717, 0.23827009, -0.119844295, 0.005446854, 0.00826863, 0.002206898, -0.11165099, -0.14702465, -0.1203897, 0.12169146, 0.11585612, 0.10473949), target);\n\ttarget = MulAdd(d3, MF4x3(-0.18456058, 0.13293917, 0.06901046, 0.010084839, -0.0006403412, -0.011852079, -0.062180433, -0.06781299, -0.08111614, -0.02218764, -0.015271581, -0.019768957), target);\n\ttarget = MulAdd(e3, MF4x3(0.034135204, -0.20479187, 0.27587336, -0.058966126, -0.065613195, -0.056132246, 0.07697151, 0.0706985, 0.098771244, 0.06747748, 0.10971204, 0.13186967), target);\n\ttarget = MulAdd(f3, MF4x3(0.017322296, -0.06730298, 0.07034802, 0.013449086, 0.007968637, 0.012679429, 0.0902275, 0.11269024, 0.08805874, -0.06179092, -0.06705483, -0.13040404), target);\n\ttarget = MulAdd(g3, MF4x3(-0.052505482, -0.018989135, 0.03388015, -0.068704374, -0.05350174, -0.057223134, 0.011537428, 0.017847707, 0.0270268, -0.008713432, -0.02698126, -0.017463546), target);\n\ttarget = MulAdd(h3, MF4x3(0.15220639, -0.05387876, -0.08352881, 0.026893694, 0.027608246, 0.025959803, 0.035518423, 0.035180617, 0.01858579, -0.021064412, -0.014214504, -0.0051168953), target);\n\ttarget = MulAdd(i3, MF4x3(-0.11906418, 0.13103563, -0.06997703, 0.005664134, 0.0075536724, 0.009519002, -0.025366528, -0.013528652, -0.015087253, 0.0071858848, -0.027586544, 0.016723866), target);\n\ttarget = MulAdd(na1, MF4x3(0.015307254, 0.02070064, 0.012568325, 0.06845904, -0.033312738, -0.0058661965, -0.016281582, -0.01631146, -0.021667928, -0.012522515, -0.020992521, -0.015833912), target);\n\ttarget = MulAdd(nb1, MF4x3(0.04937768, 0.0405066, 0.041023023, 0.05503905, -0.13230717, -0.14439866, 0.01618014, 0.0122084245, 0.016226485, 0.0014116488, 0.011495032, 0.002382562), target);\n\ttarget = MulAdd(nc1, MF4x3(-0.04847043, -0.050508745, -0.041216835, -0.067119725, -0.0448592, -0.011477939, -0.035635237, -0.037191708, -0.034170575, -0.016549444, -0.027191242, -0.017883684), target);\n\ttarget = MulAdd(nd1, MF4x3(0.034498286, 0.026938718, 0.052970096, -0.10511612, -0.13200648, -0.09493861, -0.0018118658, -0.0072637545, 0.0043198126, -0.038338073, -0.031448375, -0.035546694), target);\n\ttarget = MulAdd(ne1, MF4x3(0.048043568, 0.057704087, 0.06386534, 0.04542113, 0.20604704, 0.2598609, 0.049180254, 0.064697154, 0.05789202, 0.08370016, 0.08105142, 0.08807082), target);\n\ttarget = MulAdd(nf1, MF4x3(-0.018156562, 0.008306473, -0.014604633, 0.18912326, 0.024388695, -0.08006485, 0.009333483, 0.011596536, 0.0056475243, 0.027749287, 0.039271932, 0.02655462), target);\n\ttarget = MulAdd(ng1, MF4x3(-0.030157864, -0.035259083, -0.05771176, -0.22293729, 0.0768592, 0.14670776, -0.013287718, -0.011300663, -0.01670879, -0.009928094, -0.016364388, -0.013879692), target);\n\ttarget = MulAdd(nh1, MF4x3(-0.013415757, -0.013257486, -0.01940959, 0.014077903, 0.05088362, 0.04006286, -0.0033998038, -0.0062313867, -0.00833104, 0.015246904, 0.017004015, 0.01802002), target);\n\ttarget = MulAdd(ni1, MF4x3(-0.0016801689, -0.022088053, 0.0031654288, 0.027371893, -0.007083684, -0.10904292, -0.015408179, -0.01793058, -0.010933266, -0.023707654, -0.026440954, -0.025527867), target);\n\ttarget = MulAdd(na2, MF4x3(0.009003153, 0.0078040734, 0.037757806, 0.054483943, 0.058831017, 0.060899608, -0.011133613, -0.01601666, -0.007977876, -0.07686641, -0.049250316, -0.045481566), target);\n\ttarget = MulAdd(nb2, MF4x3(0.04344093, 0.07054628, 0.037604738, -0.0914579, -0.105631486, -0.108511426, 0.04426105, 0.0492282, 0.048829302, 0.14961997, 0.16839094, 0.16053638), target);\n\ttarget = MulAdd(nc2, MF4x3(-0.0032967671, -0.019857304, -0.014145445, -0.013525817, 0.001614058, -0.009782301, -0.044629153, -0.07325184, -0.07655591, -0.08667146, 0.024955297, 0.04591592), target);\n\ttarget = MulAdd(nd2, MF4x3(0.04816059, 0.030722216, 0.032487474, 0.09684092, 0.10024655, 0.101904154, 0.08137448, 0.092595905, 0.1118598, 0.0796932, 0.009548236, 0.0013610915), target);\n\ttarget = MulAdd(ne2, MF4x3(-0.17208904, -0.19137467, -0.17717223, -0.10827683, -0.11960323, -0.1204814, -0.030430049, -0.019306151, -0.05230355, -0.021787236, -0.015395303, -0.093210146), target);\n\ttarget = MulAdd(nf2, MF4x3(0.04527227, 0.057978027, 0.10569097, -0.1015645, -0.12595437, -0.097537845, 0.060087565, 0.09157804, 0.060251515, 0.05170573, 0.042533275, 0.08233745), target);\n\ttarget = MulAdd(ng2, MF4x3(-0.01908824, 0.0039797956, -0.015060464, 0.008187719, 0.013936167, 0.008152853, -0.02618239, -0.056918032, -0.0504624, -0.083657, 0.02122987, 0.022906482), target);\n\ttarget = MulAdd(nh2, MF4x3(0.058020473, 0.08750743, 0.032107625, 0.021999976, 0.030119067, 0.03513493, 0.06583862, 0.08137626, 0.09867312, -0.0021064964, -0.1227668, -0.0912879), target);\n\ttarget = MulAdd(ni2, MF4x3(0.022279112, -0.012710205, -0.0011416139, 0.05606448, 0.066590145, 0.061043978, -0.008292685, -0.019583363, -0.006212003, -0.053282585, -0.029954918, -0.021437356), target);\n\ttarget = MulAdd(na3, MF4x3(0.019198919, 0.020138288, 0.02048463, -0.012281223, -0.01964347, -0.010557296, 0.00830553, 0.02714052, 0.016606145, -0.0047117253, -0.0060619717, 0.0015284229), target);\n\ttarget = MulAdd(nb3, MF4x3(-0.01620369, -0.018634152, -0.018486649, -0.0037721654, -0.005256878, -0.0032221128, 0.048627518, 0.033200823, 0.05459796, 0.0064762663, 0.005607537, 0.0014544157), target);\n\ttarget = MulAdd(nc3, MF4x3(-0.0049319286, -0.003757374, -0.008033526, -0.009529666, -0.01023788, -0.011724289, 0.08779079, 0.11368912, 0.10699827, 0.014564745, 0.017019482, 0.018130492), target);\n\ttarget = MulAdd(nd3, MF4x3(-0.018128838, -0.020529313, -0.021291668, 0.022232227, 0.032956265, 0.030233478, 0.057042982, 0.052126013, 0.039634123, 0.04395578, 0.042147905, 0.047779605), target);\n\ttarget = MulAdd(ne3, MF4x3(-0.008916549, -0.011398656, -0.006473247, 0.07594334, 0.07910866, 0.0726948, -0.1670962, -0.17030263, -0.18856722, 0.0067814733, 0.01550948, 0.002108076), target);\n\ttarget = MulAdd(nf3, MF4x3(-0.0020052418, -0.0015789939, 0.0024248413, -0.018381692, -0.012541983, -0.016114611, -0.054943718, -0.08546223, -0.045788202, -0.02116913, -0.02479526, -0.02281286), target);\n\ttarget = MulAdd(ng3, MF4x3(0.004089441, 0.004577225, 0.009165186, -0.023352642, -0.03344756, -0.03359231, 0.051127084, 0.055484984, 0.06788994, -0.009284511, -0.0026670755, -0.011205212), target);\n\ttarget = MulAdd(nh3, MF4x3(-0.008048874, -0.003658728, -0.011127851, 0.0034879802, 0.014905489, 0.016252292, -0.07353042, -0.0754597, -0.09509333, 0.009990113, -0.0003871956, 0.0049740863), target);\n\ttarget = MulAdd(ni3, MF4x3(0.009073377, 0.006138898, 0.006741848, -0.009877169, -0.019738095, -0.015525384, 0.057441086, 0.06538757, 0.053950094, -0.0011834118, 0.0010558038, 0.004649949), target);\n\t\n\tOUTPUT[gxy] = MF4(target + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Upscale_GAN_x2_S.hlsl",
    "content": "// Anime4K_Upscale_GAN_x2_S\n// 移植自 https://github.com/bloc97/Anime4K/blob/8e39551ce96ed172605c89b7dd8be855b5502cc9/glsl/Upscale/Anime4K_Upscale_GAN_x2_S.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Upscale_GAN_x2_1\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex7;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex8;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = { -0.035786826, -3.2876174e-05, -0.029245647, 0.0141837 };\n\t\t\tresult = MulAdd(src[i - 1][j - 1], MF3x4(0.21797048, -0.212819, 0.04459435, -0.04423212, 0.33138385, -0.17247623, -0.120917134, 0.23732775, 0.19597639, -0.33451796, -0.021611832, -0.017377583), result);\n\t\t\tresult = MulAdd(src[i - 1][j], MF3x4(-0.12904494, -0.01359655, -0.40096298, 0.32336384, 0.25585845, 0.23335338, -0.4461792, 0.6704216, -0.13310009, 0.05402756, -0.5437191, 0.32286412), result);\n\t\t\tresult = MulAdd(src[i - 1][j + 1], MF3x4(0.062060427, 0.07804567, -0.016457668, 0.25662076, -0.1567372, -0.04152728, 0.15387323, -0.12621297, 0.097600766, 0.023655256, 0.052513056, 0.30542207), result);\n\t\t\tresult = MulAdd(src[i][j - 1], MF3x4(-0.18701962, -0.4233291, -0.086120665, -0.16739355, -0.63525766, -0.6932253, -0.1777197, -0.5140771, -0.19856504, -0.4475936, 0.12013144, -0.11179723), result);\n\t\t\tresult = MulAdd(src[i][j], MF3x4(-0.21761869, 0.65340257, 0.25189772, -0.20664653, 0.05614669, 0.81569123, 0.26439375, -0.22282092, -0.20241423, 0.71137106, 0.041106064, -0.558707), result);\n\t\t\tresult = MulAdd(src[i][j + 1], MF3x4(0.014729233, -0.09996152, 0.22300848, -0.04927536, -0.08988005, -0.12005097, -0.04899431, -0.18048033, -0.17237821, -0.03483246, 0.33783346, 0.22711775), result);\n\t\t\tresult = MulAdd(src[i + 1][j - 1], MF3x4(-0.010091276, -0.11388358, 0.15959989, 0.16021152, 0.353214, -0.3420636, 0.39659426, 0.14725044, 0.048077144, -0.06667417, 0.047712438, 0.1991372), result);\n\t\t\tresult = MulAdd(src[i + 1][j], MF3x4(-0.17764397, 0.014430492, -0.009073561, 0.052957222, -0.26687172, 0.21589288, 0.29830712, 0.15975259, -0.3100123, -0.03535766, 0.18167259, 0.07284526), result);\n\t\t\tresult = MulAdd(src[i + 1][j + 1], MF3x4(0.22984034, 0.11556983, -0.26964244, -0.31616172, 0.059412085, 0.10849835, -0.3704685, -0.16312528, 0.3656624, 0.11611945, -0.3790553, -0.4223729), result);\n\n\t\t\ttex1[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x8, Conv-4x1x1x24\n//!IN tex1\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i = tex1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na = max(-a, 0);\n\tMF4 nb = max(-b, 0);\n\tMF4 nc = max(-c, 0);\n\tMF4 nd = max(-d, 0);\n\tMF4 ne = max(-e, 0);\n\tMF4 nf = max(-f, 0);\n\tMF4 ng = max(-g, 0);\n\tMF4 nh = max(-h, 0);\n\tMF4 ni = max(-i, 0);\n\n\ta = max(a, 0);\n\tb = max(b, 0);\n\tc = max(c, 0);\n\td = max(d, 0);\n\te = max(e, 0);\n\tf = max(f, 0);\n\tg = max(g, 0);\n\th = max(h, 0);\n\ti = max(i, 0);\n\n\tMF4 conv2d_2_tf = { -0.041068032, 0.02181786, -0.02366552, 0.07215206 };\n\tconv2d_2_tf = MulAdd(a, MF4x4(0.02899383, 0.12331602, 0.1755303, 0.14228395, -0.23719487, 0.28783783, -0.15755224, 0.16501419, 0.09971766, -0.112085044, 0.15989542, 0.013457646, -0.21386063, -0.10184436, 0.2920392, 0.11544854), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(b, MF4x4(-0.09577094, 0.052495796, 0.5072853, -0.16720837, -0.030821526, -0.13200149, 0.061197, 0.09785798, 0.097248554, -0.056709435, -0.12684566, 0.25153175, 0.12550084, 0.5723225, -0.061046973, 0.2737185), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(c, MF4x4(0.14275773, 0.3116807, 0.020866666, -0.029567914, 0.054051064, -0.018836629, 0.16237853, 0.23302408, 0.23014219, -0.20245266, -0.040263597, 0.10550008, -0.1419676, -0.07544839, -0.04724355, 0.06713984), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(d, MF4x4(-0.36056906, 0.21647012, -0.21559654, -0.1321654, 0.26311335, -0.35098836, 0.08977303, -0.2912846, -0.03221502, -0.33539286, 0.55078757, 0.14826211, 0.12334663, 0.031169238, 0.0626983, 0.13543329), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(e, MF4x4(0.032711882, 0.53162986, 0.1736962, 0.22126123, 0.13229683, 0.12998195, -0.08843839, 0.3830243, -0.29015037, -0.13158421, 0.2987182, 0.0039998284, -0.4924434, -0.34931743, 0.3501415, -0.015819922), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(f, MF4x4(0.039777573, -0.039639533, -0.27015024, -0.33144557, -0.11338446, -0.19242573, 0.48813564, -0.24602202, 0.120988116, -0.12362437, 0.23984735, -0.33717445, 0.14359151, -0.09583342, -0.015998919, -0.19725454), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(g, MF4x4(0.17751572, -0.14914338, -0.24518701, 0.22713365, 0.10613938, 0.12027283, 0.1582502, 0.011725502, -0.02418084, 0.106176965, 0.10111444, 0.07009088, 0.017611375, 0.369643, -0.21788761, -0.15093188), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(h, MF4x4(0.0863035, -0.43148708, 0.0994751, 0.17801163, -0.42566994, -0.2744198, -0.028655952, -0.2481176, -0.26144302, -0.26753834, 0.11043684, -0.48341632, 0.41320416, 0.25118062, -0.31461874, 0.36563694), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(i, MF4x4(-0.04845539, -0.2790916, -0.1626853, 0.18036526, 0.2368911, -0.5688802, 0.05240968, -0.034105603, -0.14011742, -0.37861058, -0.096871816, -0.27824572, 0.41195226, 0.23514003, 0.12282304, 0.28447765), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(na, MF4x4(-0.13261828, -0.13148594, 0.05470859, -0.114724025, 0.17642413, -0.05585294, 0.44086194, -0.10915775, -0.23456413, -0.18385538, -0.4193869, 0.2708079, 0.03720121, 0.15744475, 0.092449814, -0.0922205), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nb, MF4x4(-0.14146912, 0.386554, -0.15197717, 0.1682067, -0.33229175, 0.18661757, 0.142476, -0.05811066, -0.12433686, 0.20817612, 0.17710523, 0.24227881, -0.3699883, -0.14644128, -0.066485085, -0.010829679), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nc, MF4x4(-0.02267665, -0.21349631, 0.05916224, 0.07111888, -0.3317847, -0.044436328, -0.08067249, -0.13602455, -0.2652356, -0.13666181, 0.022768881, -0.21616152, 0.10042784, 0.13159652, -0.062913835, -0.12882891), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nd, MF4x4(-0.21270499, 0.14776433, 0.26771793, 0.41242316, -0.22445452, 0.3885536, -0.36809587, 0.09838256, 0.030300573, -0.016225152, -0.41985163, -0.32797396, 0.3021247, -0.2566993, 0.24282119, 0.071926266), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ne, MF4x4(-0.14173156, 0.10360139, 0.03603846, 0.23004, -0.37078354, -0.7556456, 0.43359467, -0.42839774, -0.08143208, -0.061868757, -0.017048405, -0.1806454, 0.07700074, -0.028751602, -0.49057922, -0.07150736), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nf, MF4x4(-0.21411006, -0.039522924, -0.11006789, 0.30172586, -0.019509817, 0.34646508, 0.03348711, 0.3949624, 0.09367525, 0.11841692, 0.064099714, 0.30587056, 0.00071666663, 0.09569139, 0.07905173, -0.043038815), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ng, MF4x4(-0.1082019, -0.081530154, 0.1997084, 0.0064345463, -0.002075576, 0.0122295255, -0.21594198, -0.20039533, 0.023058774, 0.061136324, -0.043233447, 0.018114857, -0.12538326, -0.008044748, 0.08879177, 0.29855737), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nh, MF4x4(0.06425974, -0.162355, -0.07716668, -0.1783711, 0.08560717, 0.42500424, 0.15796345, 0.25115898, 0.39673963, 0.24484198, -0.16364126, 0.45589596, -0.54474986, -0.41130677, 0.15731613, -0.13945425), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ni, MF4x4(-0.4015527, -0.22220162, 0.088239804, -0.16343592, -0.05973259, -0.053600565, -0.11719207, 0.340347, 0.07810557, 0.06943392, 0.07088433, 0.36863637, -0.16925047, -0.09059371, -0.086145744, -0.26417965), conv2d_2_tf);\n\n\tMF4 target1 = { 0.022193057, 0.0031918385, 0.04232464, -0.0056721596 };\n\ttarget1 = MulAdd(a, MF4x4(-0.016554115, 0.41586095, -0.11134646, 0.041401796, -0.032285847, 0.07744446, 0.012422875, 0.08027069, -0.11944374, -0.4644861, -0.1625419, 0.09757052, 0.08459575, -0.32677624, -0.15526624, 0.13285875), target1);\n\ttarget1 = MulAdd(b, MF4x4(-0.05147117, -0.31841335, -0.07968151, -0.037866592, -0.1438723, 0.21164599, 0.042448167, 0.1660907, -0.03240849, 0.2866945, -0.123190455, -0.2005157, -0.100519955, -0.04109891, -0.14908177, -0.20055951), target1);\n\ttarget1 = MulAdd(c, MF4x4(-0.33594802, 0.17970876, -0.08458461, 0.22198248, 0.041744266, 0.053618595, -0.64927346, 0.43071616, -0.042823542, 0.36384553, 0.13817975, -0.23117469, -0.009722301, 0.043797005, -0.006320899, -0.056160737), target1);\n\ttarget1 = MulAdd(d, MF4x4(0.020939048, 0.15744017, -0.18557346, 0.2221421, 0.13683408, -0.17577636, -0.1028824, -0.05909411, -0.11116942, -0.23898265, 0.013275228, -0.10834194, -0.23541391, -0.045599524, 0.13663499, -0.061863456), target1);\n\ttarget1 = MulAdd(e, MF4x4(-0.9347821, -1.0879762, 0.029261602, 0.0058627487, 0.37568024, 0.07800278, 0.22918043, -0.22581682, -0.24621771, 0.0565432, -0.01175261, 0.20289935, -0.18791674, -0.34127015, -0.20261073, 0.24382167), target1);\n\ttarget1 = MulAdd(f, MF4x4(-0.42576772, -0.9465751, 0.36503372, 0.047452617, -0.03021601, 0.19896118, -0.9916106, 0.68441176, -0.097055614, -0.039465737, -0.3072724, 0.3834049, 0.044579748, 0.10185175, -0.07127564, 0.053964186), target1);\n\ttarget1 = MulAdd(g, MF4x4(-0.12718496, -0.20010719, -0.13560185, -0.28841987, -0.18198563, 0.06924996, 0.15375975, 0.007953754, -0.03143177, 0.24778824, -0.41971257, -0.15984616, 0.06914517, -0.15320878, -0.058414314, -0.1829401), target1);\n\ttarget1 = MulAdd(h, MF4x4(-0.05676951, -0.39852038, -0.0008664457, 0.073233515, -0.110736564, -0.12950265, -0.32641715, 0.05254214, -0.0013476483, 0.04590487, -0.6886247, -0.029103741, 0.13570555, -0.06356145, 0.26564398, 0.16304392), target1);\n\ttarget1 = MulAdd(i, MF4x4(-0.14373688, 0.2627747, 0.19523594, -0.04094942, -0.027800431, 0.080428846, -0.21676755, 0.22764, -0.08686052, -0.14352795, 0.012905041, 0.12002593, 0.096998215, -0.0822731, 0.25796455, 0.3244333), target1);\n\ttarget1 = MulAdd(na, MF4x4(0.13717347, -0.2534293, -0.08265135, 0.02238695, 0.061414074, -0.12315743, -0.105848454, -0.0324352, -0.019163579, 0.5106144, 0.111571215, -0.17051223, 0.14541212, 0.26512033, 0.17036803, -0.05180038), target1);\n\ttarget1 = MulAdd(nb, MF4x4(0.10731618, -0.011980742, -0.06125307, -0.043496255, 0.06382452, -0.53873694, -0.21860467, 0.076045096, 0.014617647, -0.12188417, -0.23983037, 0.20181973, -0.03130421, -0.23090406, 0.07917799, 0.11006313), target1);\n\ttarget1 = MulAdd(nc, MF4x4(-0.07749841, -0.17617406, -0.2105074, 0.20204528, 0.31133667, 0.045247886, 0.38000366, -0.23678038, 0.14622565, -0.077519946, 0.04709938, 0.28799757, -0.02295692, 0.021911716, 0.037108235, -0.050266817), target1);\n\ttarget1 = MulAdd(nd, MF4x4(-0.04620016, -0.053893, 0.07671593, -0.08702991, -0.31122503, 0.08491399, 0.39734617, 0.10588835, 0.1706988, -0.0030106953, -0.23740743, 0.119870976, 0.04136371, -0.08475979, -0.26021543, -0.26772037), target1);\n\ttarget1 = MulAdd(ne, MF4x4(0.013240527, 0.27298495, 0.061895885, -0.1766251, -0.35479823, -0.5952594, -0.2486822, 0.40527418, 0.017724868, -0.64586586, -0.056991536, -0.22597985, 0.1953091, -0.09300436, 0.28394333, -0.17164071), target1);\n\ttarget1 = MulAdd(nf, MF4x4(-0.0437722, 0.20237646, 0.1734046, 0.12661959, 0.3563361, 0.20119205, 0.49104276, -0.62781703, 0.10580526, 0.09021795, 0.2986983, 0.05439145, -0.030656314, -0.06551242, 0.06034035, 0.24646781), target1);\n\ttarget1 = MulAdd(ng, MF4x4(0.07150872, 0.2634299, -0.15512806, 0.032365914, -0.04214553, -0.32488832, -0.029638838, -0.11298656, 0.016363487, -0.20394005, 0.13789146, -0.1160082, -0.29543686, 0.056006238, 0.022565948, -0.0209169), target1);\n\ttarget1 = MulAdd(nh, MF4x4(-0.08222271, 0.1397535, 0.18386504, -0.029725704, 0.19525485, -0.26657727, 0.3193575, 0.39357802, 0.13274485, 0.063030235, 0.5509124, 0.076320685, -0.24871972, -0.23029849, -0.29287627, 0.0009975942), target1);\n\ttarget1 = MulAdd(ni, MF4x4(-0.11978757, -0.115064315, -0.32878634, -0.091591395, 0.011527068, -0.07584138, 0.20703748, -0.16326526, -0.07295838, -0.088844456, 0.0057264403, 0.08162376, -0.17551814, 0.10645812, -0.1522622, -0.18409562), target1);\n\n\tMF4 target2 = { 0.08279582, -0.12997188, 0.08899629, 0.018068794 };\n\ttarget2 = MulAdd(e, MF4x4(-0.5713254, 0.59251165, -0.14328027, 0.3463698, -0.6896771, -0.14296922, -0.3860265, 0.4501756, -0.39508528, 0.40213254, -0.16835114, -0.0029681697, 0.06473641, 0.18837942, 0.18787977, -0.14020114), target2);\n\ttarget2 = MulAdd(ne, MF4x4(0.08934268, -0.28500432, 0.45083842, 0.16448207, 0.10745752, -0.07937402, 0.17439699, -0.4361477, 0.35800517, -0.16299683, -0.112771064, 0.46456474, -0.016184373, -0.2676676, -0.09250065, 0.30093423), target2);\n\ttarget2 = MulAdd(max(conv2d_2_tf, 0), MF4x4(-0.23437534, 0.30892932, -0.3382499, -0.11436098, -0.09584061, 0.010766669, -0.6745943, 0.19373886, 0.19484869, 0.0063928245, 0.20636424, -0.6427624, 0.22710505, 0.580292, -0.56174964, -0.15055792), target2);\n\ttarget2 = MulAdd(max(-conv2d_2_tf, 0), MF4x4(-0.4264334, -0.43369257, 0.29302827, -0.2763896, 0.20638986, 0.066474296, 0.18825729, 0.14629841, -0.70805573, 0.3601201, -0.49326342, 0.4604217, -0.3331877, -0.30442527, 0.33416224, 0.08233912), target2);\n\ttarget2 = MulAdd(max(target1, 0), MF4x4(-0.043108743, 0.32130125, -0.13206981, 0.56653565, -0.069573626, -0.32312635, 0.17708589, 0.12717012, -0.39452434, 0.7504042, -0.563233, -0.38678297, -0.20246895, 0.399379, -0.1829332, -0.4856879), target2);\n\ttarget2 = MulAdd(max(-target1, 0), MF4x4(0.46322855, -0.14412759, 0.26863632, -0.37377957, 0.18703142, 0.12013766, -0.010468053, 0.36067548, 0.29069972, -0.5482968, 0.1952737, 0.42751312, 0.47847852, -0.13346007, 0.35286024, 0.23347002), target2);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x8, Conv-4x1x1x32\n//!IN tex4, tex3\n//!OUT tex2, tex5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a = tex4.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i = tex4.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na = max(-a, 0);\n\tMF4 nb = max(-b, 0);\n\tMF4 nc = max(-c, 0);\n\tMF4 nd = max(-d, 0);\n\tMF4 ne = max(-e, 0);\n\tMF4 nf = max(-f, 0);\n\tMF4 ng = max(-g, 0);\n\tMF4 nh = max(-h, 0);\n\tMF4 ni = max(-i, 0);\n\n\ta = max(a, 0);\n\tb = max(b, 0);\n\tc = max(c, 0);\n\td = max(d, 0);\n\te = max(e, 0);\n\tf = max(f, 0);\n\tg = max(g, 0);\n\th = max(h, 0);\n\ti = max(i, 0);\n\n\tMF4 conv2d_5_tf = { -0.0375635, -0.08823075, 0.0025748173, 0.014370204 };\n\tconv2d_5_tf = MulAdd(a, MF4x4(0.014682038, -0.12901896, -0.16721351, -0.14512789, 0.1975804, 0.31713018, -0.13655594, -0.07817547, -0.1379136, 0.012892589, 0.23835693, 0.18214643, 0.15153849, -0.16835038, 0.2145134, -0.10536737), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(b, MF4x4(0.020937767, 0.19783083, -0.54175997, 0.037820112, 0.2667656, 0.22040194, 0.37909588, 0.18100308, 0.020120522, -0.60052997, -0.043528315, -0.25213948, -0.15584327, 0.27506578, -0.092381746, 0.32063565), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(c, MF4x4(0.122979, -0.16768639, -0.31459492, -0.0615338, 0.2467096, 0.39879864, 0.30217072, 0.05501944, -0.036550965, 0.30801496, -0.21168339, -0.13092734, -0.10309731, 0.02561574, -0.28071794, 0.111772805), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(d, MF4x4(0.30419037, -0.27610013, -0.20951773, -0.4682423, 0.013910727, 0.45360255, 0.26947716, -0.28788614, -0.3465049, -0.027093071, 0.19358, -0.0759516, 0.05402844, 0.23829742, 0.14955573, 0.10131891), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(e, MF4x4(-0.18213613, 0.1460758, -0.13212326, -0.33431244, -0.038493834, -0.399577, 0.29018825, 0.046454914, 0.5486579, -0.37918556, -0.09230001, -0.06452045, -0.27307686, 0.16817085, -0.3927623, 0.4070809), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(f, MF4x4(0.3655112, 0.42978507, -0.20408633, -0.17724891, 0.018163562, 0.16742137, -0.20677765, -0.18758915, 0.08664044, 0.15635273, 0.04482592, -0.10135638, -0.042055663, 0.0120497495, -0.061840538, -0.23626032), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(g, MF4x4(0.29038852, -0.14159334, -0.07436412, -0.13352816, -0.3326411, 0.31299374, 0.2287002, 0.2508818, 0.26760912, -0.0037750339, 0.0058190194, -0.024687344, -0.1777058, -0.015039313, -0.07848877, -0.2052551), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(h, MF4x4(0.33255517, 0.45893422, 0.20505154, -0.11818784, -0.0353625, -0.2725971, 0.15468855, 0.14384854, -0.01441209, 0.12198328, -0.07893593, 0.0810518, 0.323934, -0.29967225, -0.24283892, -0.11573156), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(i, MF4x4(0.17880976, -0.20802346, 0.028815132, 0.22950941, 0.22764732, 0.32852155, -0.16896188, -0.22661959, 0.06486004, 0.00723564, -0.022966828, -0.05319699, 0.03109079, -0.00031444168, -0.16299056, -0.120937996), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(na, MF4x4(0.023376284, 0.029397544, -0.23599954, 0.15093243, -0.058068898, -0.022674788, 0.016787661, -0.100131355, -0.06670702, -0.0654595, 0.060609553, -0.24878198, 0.1184957, 0.12865701, -0.110585764, 0.027937055), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nb, MF4x4(-0.21986784, -0.044010285, 0.07705757, -0.06578579, -0.34479773, -0.27297345, 0.07099886, 0.043877546, -0.3284597, 0.60647607, -0.13495111, 0.39562428, 0.12766926, -0.26691958, -0.13183068, 0.19720052), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nc, MF4x4(-0.15688242, 0.02787055, 0.11245185, 0.010610981, 0.31926978, 0.6880586, -0.08503132, 0.2515481, -0.24620119, -0.3889153, 0.07599151, -0.04537119, -0.55283034, -0.170027, -0.14118128, -0.30742723), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nd, MF4x4(0.037949517, 0.0026801233, 0.013419875, -0.07403992, -0.17499912, 0.012353954, 0.15956756, -0.14248073, -0.0017226954, 0.052071165, -0.19224213, 0.00033604537, -0.1924897, -0.21002872, -0.23516886, -0.09922695), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ne, MF4x4(-0.21850063, -0.22287996, -0.046637002, -0.28330007, -0.106190234, 0.027529838, 0.5553775, 0.3273539, 0.0110251075, 0.0067749587, 0.18001638, 0.18281236, 0.19831169, -0.03785556, 0.06003045, -0.12625378), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nf, MF4x4(-0.44703564, -0.2896555, 0.72527117, 0.29206118, -0.004199225, 0.46381885, 0.049183566, 0.14319502, -0.3226642, -0.39931563, 0.23164241, 0.10428929, -0.598285, -0.21007223, -0.36386037, 0.09704366), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ng, MF4x4(0.0462183, -0.063166276, 0.14364852, 0.212176, 0.17403619, -0.09878261, 0.0017970221, -0.31676117, -0.1104441, -0.073732674, -0.12653485, -0.20641124, 0.024175802, 0.005339486, -0.08178427, -0.2761102), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nh, MF4x4(-0.19256714, -0.246452, 0.3358081, -0.16956173, -0.2549593, 0.21122634, -0.06487135, -0.051329695, 0.110607915, -0.09860077, 0.1355533, -0.1489809, 0.023808947, 0.29945812, -0.056281622, 0.0020249223), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ni, MF4x4(-0.34458768, -0.074856885, -0.01856148, 0.06707525, -0.3314005, -0.16196185, 0.33313355, 0.20943385, -0.266928, -0.27552158, 0.018665945, 0.013205852, -0.33579, -0.16876023, -0.031895302, -0.13143763), conv2d_5_tf);\n\n\tMF4 target1 = { 0.09810561, 0.044599928, -0.0019709724, 0.064204566 };\n\ttarget1 = MulAdd(a, MF4x4(0.23653865, 0.034179572, 0.2680533, 0.03070888, -0.34707117, 0.05323393, 0.20052955, -0.09135351, 0.031460114, -0.23158966, 0.08698448, -0.120006196, -0.11532645, -0.08093671, 0.0037868635, 0.10042472), target1);\n\ttarget1 = MulAdd(b, MF4x4(-0.018171439, -0.12269748, 0.09214298, 0.07735124, -0.38116398, 0.2625897, 0.045807257, 0.06052568, 0.15468815, -0.40968472, 0.37565818, 0.032876365, 0.058758568, 0.17787455, 0.11352259, 0.23624317), target1);\n\ttarget1 = MulAdd(c, MF4x4(-0.094512895, 0.15499377, -0.15345438, -0.18841587, -0.07849487, 0.037030153, -0.17632313, 0.10438565, -0.18453433, -0.079957336, 0.10274841, 0.07198532, -0.04770108, 0.16846456, 0.31273615, -0.13635644), target1);\n\ttarget1 = MulAdd(d, MF4x4(0.13088372, -0.008759914, 0.1716414, 0.082108594, -0.51469034, 0.18175006, -0.16164891, 0.1918173, 0.21287642, -0.094005, 0.20578988, 0.13113159, 0.07577773, 0.09737444, -0.08676422, -0.059179075), target1);\n\ttarget1 = MulAdd(e, MF4x4(-0.28462783, 0.42669204, 0.3224737, -0.29510942, -0.12424295, -0.16050552, -0.12770653, 0.0930919, -0.22179118, 0.33128613, -0.42117682, -0.14691186, 0.41048542, -0.040950067, -0.13896315, -0.24155742), target1);\n\ttarget1 = MulAdd(f, MF4x4(0.15060697, -0.088174045, 0.27417374, 0.0397946, 0.0078119785, 0.091031335, 0.008468849, -0.04850853, 0.03755719, -0.005380725, 0.13488528, -0.21345685, 0.12456556, 0.17801593, -0.21285392, -0.2111536), target1);\n\ttarget1 = MulAdd(g, MF4x4(0.13265789, 0.0058933417, -0.35399312, -0.10547572, 0.014682838, 0.03247095, -0.046823166, -0.086899005, 0.022227641, -0.10579067, 0.13096501, -0.020894872, 0.08426519, 0.068370126, -0.051551163, -0.02995364), target1);\n\ttarget1 = MulAdd(h, MF4x4(-0.19551872, 0.16199462, 0.31150326, 0.082667254, 0.20023693, -0.22914512, -0.29721177, -0.2741043, 0.08894789, -0.06843645, -0.019058365, -0.06370645, 0.11551113, 0.011740334, -0.17567629, -0.05505456), target1);\n\ttarget1 = MulAdd(i, MF4x4(0.043439314, 0.19573408, -0.17608817, 0.043509595, 0.22829561, 0.059223037, 0.05529666, -0.16555707, 0.2754871, 0.042527672, 0.09646824, 0.07046857, 0.10173791, 0.04030276, -0.0544029, -0.26882443), target1);\n\ttarget1 = MulAdd(na, MF4x4(0.022059897, -0.04408266, -0.18699357, -0.09142074, 0.044572234, -0.14162005, 0.108728774, -0.08984615, -0.14737117, 0.12838708, -0.0019777226, 0.21070306, -0.111902215, 0.23080471, 0.0134878885, 0.07111553), target1);\n\ttarget1 = MulAdd(nb, MF4x4(0.12182694, 0.063630685, 0.110018775, -0.03879438, 0.333222, -0.45207745, 0.3209222, 0.123050354, -0.40609705, 0.48236838, 0.14323111, -0.12578699, 0.0015041681, -0.019454073, 0.07013497, 0.093687624), target1);\n\ttarget1 = MulAdd(nc, MF4x4(0.07142873, -0.32094324, 0.3302099, -0.3693182, 0.15444939, -0.14791024, 0.07907135, -0.111387216, 0.045319714, -0.12518585, 0.13145387, 0.09406553, 0.038564056, -0.3085204, 0.39396307, 0.12083835), target1);\n\ttarget1 = MulAdd(nd, MF4x4(0.16042647, -0.16409212, 0.105187505, 0.14153793, 0.269689, -0.14337258, 0.0915773, -0.26669213, -0.059172913, 0.1121628, -0.06627627, -0.29320538, -0.038348313, 0.060661227, -0.09798249, -0.027975965), target1);\n\ttarget1 = MulAdd(ne, MF4x4(-0.4110324, -0.06847458, -0.22187959, -0.17196147, -0.2673298, 0.15388274, -0.20157869, 0.45323396, 0.419686, -0.15836199, -0.08358049, 0.2121381, -0.33858112, 0.06060976, -0.0400928, 0.047277283), target1);\n\ttarget1 = MulAdd(nf, MF4x4(0.040201366, 0.12845124, 0.6901938, -0.009195482, 0.014911491, -0.06885409, -0.08029354, 0.1280681, 0.13877457, 0.0048243836, -0.13357066, 0.02874182, -0.07086705, -0.08369575, 0.070227675, 0.1674778), target1);\n\ttarget1 = MulAdd(ng, MF4x4(-0.009859274, -0.06701725, 0.25491804, -0.035013054, 0.15333284, -0.055876795, -0.22912641, -0.30044466, 0.05092424, 0.15086575, -0.062285095, 0.05064704, 0.02725196, 0.0008295126, -0.24010411, -0.0076930025), target1);\n\ttarget1 = MulAdd(nh, MF4x4(-0.033275966, -0.25090593, 0.2981365, 0.12117296, -0.04844607, 0.12529893, 0.041575357, -0.10317985, 0.048691675, 0.13610789, -0.15120777, -0.21308705, -0.019387634, 0.20519307, -0.09056782, -0.04757386), target1);\n\ttarget1 = MulAdd(ni, MF4x4(-0.010075166, -0.08621876, -0.19569752, 0.1553574, -0.115346536, -0.009765705, -0.37459797, -0.017294222, -0.18065308, 0.052127127, 0.045157496, 0.11466202, 0.036598917, 0.1750653, -0.18558112, 0.13441156), target1);\n\n\tMF4 conv2d_1_tf = tex3.SampleLevel(sam, pos, 0);\n\n\tMF4 target2 = { -0.04242169, -0.0033301958, -0.016717333, -0.0006306486 };\n\ttarget2 = MulAdd(e, MF4x4(0.16594207, 0.47900248, 0.15186168, -0.38448718, -0.33396608, -0.12204449, -0.21397614, 0.22567725, 0.2399077, 0.16945037, 0.072409995, -0.015192162, -0.5004075, -0.10852234, 0.14456534, 0.36797065), target2);\n\ttarget2 = MulAdd(ne, MF4x4(-0.03527082, -0.13062008, 0.2529196, 0.16799021, 0.2743078, 0.22924475, 0.4391596, -0.34473032, -0.08008852, 0.14463465, -0.30243787, 0.0352092, 0.49160767, 0.18479864, -0.13473135, -0.40414095), target2);\n\ttarget2 = MulAdd(max(conv2d_5_tf, 0), MF4x4(0.14367065, 0.058683306, 0.091011606, 0.15336677, -0.119622074, 0.04199915, -0.19148684, -0.103310175, 0.116265774, -0.105254985, 0.6245667, -0.26108894, 0.18143174, -0.1839799, 0.048575178, -0.55331755), target2);\n\ttarget2 = MulAdd(max(-conv2d_5_tf, 0), MF4x4(0.35027766, 0.03997352, -0.023643266, -0.3330187, -0.10459313, -0.4023968, 0.07325048, -0.09424643, 0.06866858, 0.53465986, -0.44508684, 0.18428375, -0.23138772, 0.027757954, 0.17421234, 0.026670102), target2);\n\ttarget2 = MulAdd(max(conv2d_1_tf, 0), MF4x4(-0.4365351, 0.22217907, -0.6871689, 0.045348447, 0.15043557, -0.48645085, -0.29547492, 0.057184387, -0.03682008, 0.3751258, -0.3201267, -0.17569698, 0.3118066, -0.3671979, 0.41987854, -0.122571744), target2);\n\ttarget2 = MulAdd(max(-conv2d_1_tf, 0), MF4x4(0.44111615, -0.40698248, 0.0016049108, -0.25277275, -0.28967234, 0.016609022, 0.5386827, 0.069790244, -0.51845384, 0.024502689, -0.026591584, 0.17351557, 0.12391694, 0.08250939, -0.08813545, 0.43510008), target2);\n\ttarget2 = MulAdd(max(target1, 0), MF4x4(-0.15770161, -0.27004284, -0.56035084, 0.15914616, 0.22454856, 0.3096621, 0.45845222, -0.008859915, 0.10483775, 0.14181131, 0.026368458, -0.0063670245, 0.24472655, -0.038785648, -0.14339298, -0.10899222), target2);\n\ttarget2 = MulAdd(max(-target1, 0), MF4x4(-0.034405068, -0.2823658, 0.050728954, -0.08360402, -0.11867297, -0.20057304, -0.011291816, 0.08128843, 0.07198962, 0.41366118, -0.40760013, -0.05193347, -0.31802976, 0.11970909, 0.09838232, -0.08124989), target2);\n\n\ttex2[gxy] = target1;\n\ttex5[gxy] = target2;\n}\n\n\n//!PASS 4\n//!DESC Conv-4x3x3x8, Conv-4x1x1x40\n//!IN tex5, tex2, tex3\n//!OUT tex4, tex6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a = tex5.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b = tex5.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c = tex5.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = tex5.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e = tex5.SampleLevel(sam, pos, 0);\n\tMF4 f = tex5.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g = tex5.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex5.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i = tex5.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na = max(-a, 0);\n\tMF4 nb = max(-b, 0);\n\tMF4 nc = max(-c, 0);\n\tMF4 nd = max(-d, 0);\n\tMF4 ne = max(-e, 0);\n\tMF4 nf = max(-f, 0);\n\tMF4 ng = max(-g, 0);\n\tMF4 nh = max(-h, 0);\n\tMF4 ni = max(-i, 0);\n\n\ta = max(a, 0);\n\tb = max(b, 0);\n\tc = max(c, 0);\n\td = max(d, 0);\n\te = max(e, 0);\n\tf = max(f, 0);\n\tg = max(g, 0);\n\th = max(h, 0);\n\ti = max(i, 0);\n\n\tMF4 conv2d_8_tf = { 0.017177593, -0.03303642, 0.018293152, -0.0153594585 };\n\tconv2d_8_tf = MulAdd(a, MF4x4(-0.43036512, 0.052133385, 0.1917228, -0.0080327755, -0.13650647, 0.23129214, -0.03926996, -0.07268268, -0.039649602, -0.04959827, 0.04222682, 0.00578327, -0.6177682, -0.5984116, -0.055091057, -0.41249448), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(b, MF4x4(-0.41248822, 0.42497736, 0.3476831, 0.11943562, 0.071097784, 0.1390214, 0.05519766, -0.13476476, -0.36376685, 0.058813993, -0.05142066, 0.059006505, -0.17129485, 0.18402734, 0.412061, -0.38983205), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(c, MF4x4(-0.19183454, -0.11911039, 0.20892574, 0.1218832, -0.23423564, 0.10342528, 0.09782025, 0.027760351, -0.08676245, 0.07389133, 0.009934853, 0.015378812, 0.28361297, -0.23730409, -0.10037592, -0.24095006), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(d, MF4x4(0.035607535, -0.3156877, -0.013944192, 0.22095163, 0.20762561, -0.26094976, 0.049627785, -0.20424393, 0.07220507, 0.14855692, -0.04763761, 0.09102831, -0.6707187, 0.044909656, 0.73606086, 0.3112647), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(e, MF4x4(0.28717026, -0.027964758, 0.19860156, -0.18898363, -0.10064204, 0.05297523, 0.014720102, -0.10856063, -0.517343, -0.17088185, 0.21192405, 0.040609106, 0.07515164, -0.22581428, 0.54721195, 0.40544033), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(f, MF4x4(-0.021332845, -0.28534392, -0.053418603, -0.5890941, 0.3246433, 0.255651, 0.07088422, -0.10737213, -0.116894506, 0.13120323, 0.09616092, -0.0067616547, 0.085571416, 0.14623387, -0.26895332, -0.12028506), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(g, MF4x4(-0.052351072, -0.73936135, -0.07819111, -0.35983723, 0.13252614, -0.3479261, -0.07381629, 0.008948218, 0.0053645126, -0.039163757, -0.061387096, 0.0041966103, -0.22976315, -0.10269704, 0.5676015, -0.2502383), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(h, MF4x4(0.09443165, 0.13924311, 0.15899155, -0.029454758, 0.002642519, 0.4178081, -0.19227526, 0.25177202, -0.26731998, -0.14999937, -0.15141752, -0.16183105, -0.4617529, -0.43337283, 0.2787283, -0.72364557), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(i, MF4x4(0.18768649, -0.33622888, 0.10795176, -0.3965141, -0.1887279, 0.2281405, -0.45963305, -0.16073631, -0.015594818, 0.07035953, -0.16940016, -0.28909472, -0.017725285, -0.35240498, 0.30173686, 0.20117418), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(na, MF4x4(0.03129677, -0.04133618, -0.011259672, 0.03561297, 0.0852418, 0.04584553, 0.19103919, 0.09809102, -0.14594959, -0.4438363, 0.16297287, -0.20317835, 0.115456745, -0.06761671, 0.15409957, 0.04450018), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nb, MF4x4(0.039826628, -0.45614466, 0.0642495, 0.05919764, -0.44811794, 0.30939403, -0.09915154, 0.1356114, 0.24242148, -0.5744648, 0.051002555, 0.2401494, -0.24656531, -0.025525048, 0.0022000005, 0.16019441), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nc, MF4x4(-0.30609047, -0.44622147, -0.1323853, 0.27586594, 0.28131932, -0.1788347, -0.13601942, -0.056978267, 0.1390773, 0.023616405, 0.23695482, 0.014369665, 0.1065836, 0.2862605, 0.12936947, -0.08392774), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nd, MF4x4(-0.21285766, -0.19791842, -0.08064578, -0.15698087, -0.6196114, -0.30824217, -0.048959345, 0.30395007, -0.41899, -0.3358852, -0.097170554, 0.28982377, 0.087944746, 0.15887393, 0.12179637, -0.33221152), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ne, MF4x4(-0.13241346, 0.035703655, -0.4474765, 0.110112734, -0.27055773, 0.41301596, -0.6500781, -0.15217184, -0.2048386, 0.011350564, -0.45242086, 0.4019483, -0.13381444, -0.34816414, -0.5594909, 0.06767518), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nf, MF4x4(-0.16038893, 0.035530727, -0.029575568, 0.4231352, 0.024787677, 0.63239074, -0.039876997, -0.025136393, -0.51243687, 0.05607693, -0.26631242, 0.089419514, -0.051774174, 0.08727033, -0.055868924, -0.0934304), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ng, MF4x4(0.08607903, 0.10347359, -0.08568057, -0.04361689, -0.09244961, 0.032459106, 0.07126668, 0.40926656, -0.17473985, -0.2854381, -0.07475363, -0.16183083, 0.22286943, 0.068349905, -0.07890174, -0.18732166), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nh, MF4x4(0.17825048, -0.31030193, -0.21215369, 0.015413245, -0.0980228, -0.3963089, -0.09465454, -0.39197174, 0.22134416, -0.10105557, 0.3249675, -0.027290137, -0.10875647, -0.2393993, -0.015305307, 0.21288091), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ni, MF4x4(0.26367134, -0.11709682, 0.10634492, -0.13768406, 0.5535611, 0.6967819, -0.31092402, -0.5262172, 0.14721805, -0.05149995, 0.22435789, -0.21493623, 0.27388602, -0.14029293, -0.1060113, 0.083680965), conv2d_8_tf);\n\n\tMF4 target1 = { 0.034884464, 0.055267137, 0.03452981, 0.012002485 };\n\ttarget1 = MulAdd(a, MF4x4(0.43671334, -0.16534646, -0.13688485, -0.008512402, -0.10336664, -0.08822921, -0.116312236, -0.038849946, -0.035221335, 0.019403309, 0.060067646, -0.025432155, 0.090118125, -0.117073216, 0.16502255, 0.034231257), target1);\n\ttarget1 = MulAdd(b, MF4x4(0.17112842, -0.023511292, -0.2592198, -0.07303919, 0.048081987, -0.054403186, -0.060226068, -0.2663483, 0.16908844, -0.11529753, -0.036192283, 0.05631556, -0.12996213, 0.32429552, -0.17090482, 0.37093237), target1);\n\ttarget1 = MulAdd(c, MF4x4(-0.0398796, -0.21753207, -0.014232783, 0.04652695, 0.06361906, 0.11714849, -0.116917215, -0.0088206185, -0.15661797, 0.11036933, 0.043800946, 0.0088503305, 0.15252474, -0.21677117, -0.26665527, 0.11332868), target1);\n\ttarget1 = MulAdd(d, MF4x4(0.14935064, 0.03734691, 0.08192101, -0.28615516, 0.19225292, 0.09485945, -0.018961852, -0.04503368, -0.14962928, 0.14281853, 0.015293623, -0.0051231394, 0.31510183, 0.28869596, 0.1890055, -0.07833456), target1);\n\ttarget1 = MulAdd(e, MF4x4(0.2734724, 0.37409434, -0.2611236, 0.06528365, -0.1886752, 0.045421556, 0.25771844, 0.14760634, -0.02859129, -0.071093805, -0.1635561, 0.06800318, 0.44370538, 0.43510497, 0.15145455, -0.029246451), target1);\n\ttarget1 = MulAdd(f, MF4x4(0.17102292, 0.33519942, 0.2755555, -0.24724208, 0.042192735, -0.6907692, -0.10582406, 0.2008313, 0.04859614, -0.24115612, 0.015256011, -0.029317714, -0.057466604, -0.1004556, 0.24814546, -0.22135083), target1);\n\ttarget1 = MulAdd(g, MF4x4(0.20959556, 0.113371, -0.021680012, -0.054057337, -0.017139604, -0.082443535, -0.03216185, 0.13644056, -0.105473205, -0.033690784, 0.030838218, 0.013347346, 0.49752173, -0.14028637, -0.23801191, 0.059374087), target1);\n\ttarget1 = MulAdd(h, MF4x4(0.054281052, 0.04908332, 0.065993994, -0.09818599, 0.17124225, -0.22669722, -0.090717405, 0.20086871, 0.05861675, 0.09584638, 0.18013628, 0.026234226, 0.32684898, 0.28582916, -0.03517119, -0.21534745), target1);\n\ttarget1 = MulAdd(i, MF4x4(0.2143339, -0.009243758, -0.043321237, -0.18695052, 0.0707111, -0.052678097, 0.04782485, 0.06970353, -0.029827276, 0.10827879, 0.049044352, -0.09452859, -0.08516196, 0.11786405, -0.18170272, -0.117841594), target1);\n\ttarget1 = MulAdd(na, MF4x4(-0.23180094, 0.079831, -0.17606014, -0.06691572, 0.13079396, -0.054930445, 0.025274629, 0.059386294, 0.18818773, 0.071563244, -0.19136675, 0.031156426, 0.12569802, 0.057418842, -0.022066243, 0.09572557), target1);\n\ttarget1 = MulAdd(nb, MF4x4(0.13405065, -0.038109858, 0.19447789, -0.121862344, -0.5014013, 0.030394621, -0.11468341, 0.24658446, -0.2861801, 0.11453208, 0.17080295, 0.32403797, 0.01776269, 0.21879151, -0.1487332, -0.13659461), target1);\n\ttarget1 = MulAdd(nc, MF4x4(-0.16852567, 0.37488598, 0.103131816, 0.15805401, -0.5529941, -0.0106922565, 0.14309406, 0.018851891, 0.18253598, -0.18453355, -0.14344332, 0.14581451, 0.00017439971, -0.22823274, -0.02480218, -0.28830686), target1);\n\ttarget1 = MulAdd(nd, MF4x4(-0.036933262, -0.105577976, 0.02778643, 0.21757011, -0.0051288083, 0.036500473, 0.12934865, -0.18750058, 0.05384686, -0.14823805, 0.12996665, -0.0717687, 0.15035072, 0.00028661545, -0.4272515, 0.102082215), target1);\n\ttarget1 = MulAdd(ne, MF4x4(0.3707243, -0.34236187, -0.037726954, 0.19196671, 0.101593964, 0.3211922, -0.30584693, -0.09473774, -0.012873282, -0.26314828, -0.3015266, -0.05155332, -0.23810461, -0.17289765, 0.16493215, 0.07951415), target1);\n\ttarget1 = MulAdd(nf, MF4x4(-0.054548983, 0.20742553, -0.17368966, -0.11417929, -0.14998713, 0.14250377, 0.08688373, -0.39742398, -0.29795423, 0.3917638, -0.24611169, -0.007993072, -0.052766692, -0.05993209, -0.017495412, 0.2881331), target1);\n\ttarget1 = MulAdd(ng, MF4x4(-0.05283335, 0.081839375, 0.013510656, -0.097930856, -0.09817993, -0.10169309, -0.024573473, -0.061191153, 0.14742163, 0.12549889, 0.21033141, -0.11116201, -0.046900082, 0.052657153, -0.10784069, 0.0005640972), target1);\n\ttarget1 = MulAdd(nh, MF4x4(0.036850937, -0.004740191, -0.105057694, 0.16894996, -0.39845806, -0.11454543, 0.044997875, 0.10780206, -0.15164936, -0.030377366, -0.015979659, -0.16242398, -0.045865484, 0.04037505, -0.03663904, 0.24529697), target1);\n\ttarget1 = MulAdd(ni, MF4x4(0.0041185757, 0.0843081, 0.07231875, 0.100667596, -0.31684703, -0.2574812, -0.03461963, 0.11267055, -0.22542828, -0.104221806, -0.095156625, -0.08219916, 0.18497708, -0.08431334, -0.074380755, 0.07518058), target1);\n\n\tMF4 conv2d_1_tf = tex3.SampleLevel(sam, pos, 0);\n\tMF4 conv2d_4_tf = tex2.SampleLevel(sam, pos, 0);\n\n\tMF4 target2 = { -0.048349448, -0.027946962, -0.014499015, -0.017825816 };\n\ttarget2 = MulAdd(e, MF4x4(0.09644354, -0.12061228, -0.15139145, 0.010084075, 0.19283041, -0.15289722, 0.0028078665, 0.15971705, -0.03884288, -0.06906346, -0.04772131, 0.32280502, -0.42069855, 0.21643022, -0.8389786, -0.50325495), target2);\n\ttarget2 = MulAdd(ne, MF4x4(0.18034904, 0.037142154, 0.41413367, 0.08413125, -0.14397736, -0.4820656, 0.32794252, 0.2589487, 0.46948192, 0.26964813, -0.07420985, -0.16767345, 0.086358115, -0.10306444, 0.36070088, 0.1681583), target2);\n\ttarget2 = MulAdd(max(conv2d_8_tf, 0), MF4x4(0.35362276, 0.012461055, -0.77784586, 0.09078976, 0.19976044, 0.17758635, -0.37238386, -0.03503108, 0.13998942, -0.37809366, 0.016560063, 0.3934089, -0.25227416, -0.123653956, -0.05106222, 0.005900442), target2);\n\ttarget2 = MulAdd(max(-conv2d_8_tf, 0), MF4x4(0.057956465, -0.049570814, 0.0606723, -0.20321843, -0.26415482, -0.27723017, 0.116116256, 0.091267794, -0.14814565, 0.25946814, 0.17341542, 0.14638402, 0.2880723, 0.10809813, 0.025261842, -0.34984475), target2);\n\ttarget2 = MulAdd(max(conv2d_1_tf, 0), MF4x4(0.05510083, 0.17530598, -0.20630372, -0.027601322, 0.017287979, 0.1857018, -0.41756013, -0.14747128, 0.36301833, 0.13361412, 0.021245379, 0.08700895, -0.15968269, -0.32113054, 0.019964505, -0.15953153), target2);\n\ttarget2 = MulAdd(max(-conv2d_1_tf, 0), MF4x4(-0.12913038, -0.21853726, -0.14845535, -0.2878481, 0.060428645, -0.12468173, -0.0068141054, 0.044517014, -0.3603185, -0.21329117, -0.029232644, 0.033500195, 0.4367195, -0.048263986, 0.36913735, -0.015526651), target2);\n\ttarget2 = MulAdd(max(conv2d_4_tf, 0), MF4x4(0.15424874, 0.09803074, -0.4081566, -0.24807191, -0.21617292, -0.26116055, -0.19488858, 0.13665622, -0.23223704, 0.13516016, -0.19990326, -0.09589857, 0.2877168, -0.18335378, -0.12726076, -0.01706245), target2);\n\ttarget2 = MulAdd(max(-conv2d_4_tf, 0), MF4x4(0.17850566, 0.11283147, 0.0941847, 0.07064274, 0.23485339, 0.053585358, 0.038221374, -0.052291602, -0.085393615, -0.43200582, -0.3899717, -3.6526293e-05, -0.1805902, 0.15160961, -0.25388122, -0.10506431), target2);\n\ttarget2 = MulAdd(max(target1, 0), MF4x4(0.10518986, 0.4441116, -0.16333202, -0.15620118, -0.025791602, -0.2971725, 0.27621722, 0.15761738, 0.008179799, 0.4354704, 0.8792617, 0.98227674, 0.27862114, -0.28962052, 0.08527341, 0.06820025), target2);\n\ttarget2 = MulAdd(max(-target1, 0), MF4x4(-0.002976883, -0.220515, -0.2764896, 0.03840775, 0.09852327, 0.09890841, 0.6333531, 0.05949176, -0.12757486, 0.12711844, -0.103355624, -0.2612116, -0.92972547, 0.20546664, 0.43557793, 0.14573197), target2);\n\n\ttex4[gxy] = target1;\n\ttex6[gxy] = target2;\n}\n\n\n//!PASS 5\n//!DESC Conv-4x3x3x8, Conv-4x1x1x48\n//!IN tex6, tex3, tex2, tex4\n//!OUT tex1, tex5, tex7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a = tex6.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b = tex6.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c = tex6.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = tex6.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e = tex6.SampleLevel(sam, pos, 0);\n\tMF4 f = tex6.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g = tex6.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex6.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i = tex6.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na = max(-a, 0);\n\tMF4 nb = max(-b, 0);\n\tMF4 nc = max(-c, 0);\n\tMF4 nd = max(-d, 0);\n\tMF4 ne = max(-e, 0);\n\tMF4 nf = max(-f, 0);\n\tMF4 ng = max(-g, 0);\n\tMF4 nh = max(-h, 0);\n\tMF4 ni = max(-i, 0);\n\n\ta = max(a, 0);\n\tb = max(b, 0);\n\tc = max(c, 0);\n\td = max(d, 0);\n\te = max(e, 0);\n\tf = max(f, 0);\n\tg = max(g, 0);\n\th = max(h, 0);\n\ti = max(i, 0);\n\n\tMF4 target1 = { -0.10319947, 0.010868113, 0.0143356435, -0.007343647 };\n\ttarget1 = MulAdd(a, MF4x4(0.099030726, -0.06836123, 0.08793171, -0.08440806, 0.1367897, -0.18130925, -0.061028607, -0.0036578078, -0.2664728, 0.11683366, -0.106817886, 0.054352235, -0.037010342, -0.04099114, -0.024939198, 0.17543977), target1);\n\ttarget1 = MulAdd(b, MF4x4(-0.005120602, 0.033574037, 0.15293613, 0.14662915, 0.16131143, 0.14048538, -0.07979977, -0.09974233, 0.12065904, -0.027316207, 0.05308134, -0.39921048, -0.11916608, 0.05068417, -0.064156584, 0.0906338), target1);\n\ttarget1 = MulAdd(c, MF4x4(0.19719984, 0.031454016, 0.057130553, -0.08133089, -0.48387995, -0.20429122, -0.2968695, 0.17029694, 0.2686546, -0.32400158, 0.23564363, -0.12357238, -0.039444853, -0.25260264, -0.045210194, 0.009996893), target1);\n\ttarget1 = MulAdd(d, MF4x4(0.24888185, -0.16971394, 0.23991539, -0.20469886, -0.05449719, -0.22697294, -0.19475369, -0.14052935, 0.15595771, 0.09519395, -0.18674417, -0.19258659, -0.18656066, -0.07679601, 0.04305061, -0.052698307), target1);\n\ttarget1 = MulAdd(e, MF4x4(0.26016366, 0.37886587, 0.29538265, 0.13591415, 0.08657945, 0.2248858, 0.13191143, -0.27878642, 0.38287383, -0.24528888, 0.16275367, -0.4445379, -0.15009366, 0.21030647, 0.04707718, -0.36865705), target1);\n\ttarget1 = MulAdd(f, MF4x4(0.00060599507, -0.063061595, 0.09708327, 0.18096425, -0.18803552, -0.15204777, -0.21307996, 0.25915486, 0.180343, 0.15965502, 0.4193544, 0.11587751, -0.01724538, -0.0003311443, 0.118263096, 0.3388005), target1);\n\ttarget1 = MulAdd(g, MF4x4(-0.11013732, -0.24454343, 0.11523979, 0.16267157, 0.037852544, -0.018723588, -0.044225607, 0.010824283, -0.09449054, -0.43009904, 0.17163227, 0.058022983, 0.3704038, -0.124312826, -0.04090871, -0.41738933), target1);\n\ttarget1 = MulAdd(h, MF4x4(-0.08466185, -0.032986447, -0.12251885, -0.061746452, -0.28120902, -0.03351265, -0.07977477, 0.035497896, -0.40911916, -0.265343, 0.18400514, 0.18039864, 0.2885377, 0.17138512, -0.2672905, -0.17658347), target1);\n\ttarget1 = MulAdd(i, MF4x4(0.14892288, 0.054083705, 0.074718416, 0.011234817, -0.1644216, 0.10958687, 0.016626561, 0.13260235, 0.15622494, 0.028492622, 0.16308293, 0.0817191, 0.004302441, -0.03425889, 0.019733155, 0.20729025), target1);\n\ttarget1 = MulAdd(na, MF4x4(-0.10912273, 0.18627015, -0.12923245, -0.007432667, -0.15062776, 0.1132029, -0.039932206, -0.048926212, -0.19350322, -0.052288085, -0.062460408, 0.06341913, -0.22352171, 0.12735958, -0.030772611, 0.10314876), target1);\n\ttarget1 = MulAdd(nb, MF4x4(0.055571638, -0.29345444, -0.05150461, 0.038981512, -0.20368473, -0.1620652, 0.2212063, 0.16812243, -0.25869122, -0.055914585, 0.1699279, 0.09515419, -0.051229157, 0.029384349, 0.2958992, 0.33411613), target1);\n\ttarget1 = MulAdd(nc, MF4x4(-0.16893966, -0.11777383, -0.1890183, 0.3100362, 0.32964075, 0.1503138, 0.23687156, -0.1966872, -0.34989685, 0.018697567, -0.054476835, 0.2467992, 0.1404086, 0.042806204, 0.22713056, -0.07194008), target1);\n\ttarget1 = MulAdd(nd, MF4x4(0.1294499, 0.08734431, -0.27748963, -0.30450672, 0.347131, 0.10832939, 0.094416045, -0.021583052, -0.03705905, 0.13216147, 0.060019907, 0.17617045, -0.31731188, 0.055844136, -0.32436728, 0.09127553), target1);\n\ttarget1 = MulAdd(ne, MF4x4(-0.37301856, -0.59706587, 0.14188358, -0.11759082, -0.123990245, 0.17104799, -0.22897844, 0.044174567, 0.08194783, 0.5041956, 0.080176726, 0.30695775, 0.14737315, 0.06887362, -0.14944588, 0.041438155), target1);\n\ttarget1 = MulAdd(nf, MF4x4(0.028311472, -0.12458831, 0.09180698, 0.21692544, 0.26750755, -0.095768556, 0.37605208, -0.09700436, -0.43799365, -0.2001086, -0.22588708, 0.21119161, 0.017415013, 0.15119827, -0.015756091, -0.097044095), target1);\n\ttarget1 = MulAdd(ng, MF4x4(0.07018085, 0.07628864, 0.03961951, 0.032012466, 0.09119677, -0.11489552, 0.086640276, -0.10799725, -0.09006475, 0.18994014, 0.015971951, 0.025477583, 0.034011904, -0.07448855, -0.090691224, -0.08970111), target1);\n\ttarget1 = MulAdd(nh, MF4x4(-0.036299143, 0.14122474, -0.1863209, 0.1802412, 0.25498003, 0.12084085, -0.15148233, -0.15718026, 0.00034174722, 0.13090368, -0.17938401, -0.064941354, -0.42650834, -0.24431564, 0.1735792, -0.08763975), target1);\n\ttarget1 = MulAdd(ni, MF4x4(-0.018800588, -0.09828807, 0.022626605, 0.19307971, 0.2295834, 0.021806285, 0.17869954, -0.089709155, 0.039047185, 0.1444108, -0.058205944, -0.0141449645, 0.10705844, 0.17592433, -0.017586943, 0.100735694), target1);\n\n\tMF4 target2 = { -0.0891901, 0.05071113, -0.026449949, -0.0051819966 };\n\ttarget2 = MulAdd(a, MF4x4(-0.034931988, -0.10314893, 0.050731838, 0.008667428, 0.093605734, 0.18763398, 0.1329972, 0.32109565, 0.018679736, 0.16050446, -0.21393016, -0.5850818, -0.03595686, -0.06816087, 0.058053996, 0.14945738), target2);\n\ttarget2 = MulAdd(b, MF4x4(0.13086358, 0.1037956, 0.024482725, 0.28596595, 0.03427747, 0.03360277, -0.08412939, -0.09863662, -0.14649919, 0.049508557, -0.040583454, -0.3193693, 0.09898459, -0.055807225, -0.13826977, -0.24508655), target2);\n\ttarget2 = MulAdd(c, MF4x4(0.022690594, -0.049172435, -0.043048073, 0.28297383, -0.12327597, 0.12841734, 0.19118458, -0.14444864, 0.25481266, -0.1530131, -0.32560238, 0.28813502, 0.07987849, -0.081693284, 0.023993304, 0.051493756), target2);\n\ttarget2 = MulAdd(d, MF4x4(-0.21383128, 0.10948106, 0.29768178, 0.5630563, -0.097254336, 0.3000293, 0.27545682, -0.10354583, 0.064267136, -0.0722382, 0.16716443, -0.29272497, 0.124174535, -0.09405645, -0.07759505, -0.63239044), target2);\n\ttarget2 = MulAdd(e, MF4x4(-0.049770556, -0.2611922, -0.11767422, -0.056895554, -0.10655438, 0.15822971, -0.15873717, -0.034663625, -0.22618848, -0.037567407, 0.8648974, 0.15630767, 0.24981938, 0.15488663, -0.01769864, -0.05102535), target2);\n\ttarget2 = MulAdd(f, MF4x4(0.021745246, -0.019828277, -0.2533036, 0.08191131, 0.21484213, 0.07265768, 0.13022637, 0.12640825, 0.3097948, 0.1656624, 0.29834095, 0.26926345, 0.1445516, -0.096134044, 0.23720652, 0.104119554), target2);\n\ttarget2 = MulAdd(g, MF4x4(-0.0026226363, -0.11969785, -0.07630252, 0.48163646, 0.020707106, 0.098053664, 0.15194124, -0.067455925, -0.0072260266, -0.063311785, -0.13165388, -0.2720021, 0.056918275, -0.46139827, 0.062053606, -0.2062505), target2);\n\ttarget2 = MulAdd(h, MF4x4(0.18370466, -0.21412961, -0.08481129, 0.012198226, -0.08129054, 0.5550795, 0.047955874, 0.2502166, -0.07373375, 0.28914857, -0.0046189106, -0.014052611, -0.1366542, -0.4555943, -0.053266894, 0.4447608), target2);\n\ttarget2 = MulAdd(i, MF4x4(-0.028673984, -0.05453405, -0.118545935, -0.069395766, 0.17180833, 0.17611517, 0.13780451, 0.28597325, -0.07254466, 0.05339366, 0.0095731495, 0.17107281, 0.08671597, -0.06200009, -0.06297748, 0.08674916), target2);\n\ttarget2 = MulAdd(na, MF4x4(-0.040299665, 0.095958404, 0.052906267, -0.48397818, -0.1331588, -0.0012678325, -0.042020816, -0.33833674, -0.012395556, 0.07671447, -0.15005252, -0.083733305, 0.12279073, 0.13883469, -0.10359484, -0.31333458), target2);\n\ttarget2 = MulAdd(nb, MF4x4(0.14495945, -0.12174993, -0.11281622, -0.018538697, -0.14329918, 0.12817283, -0.046540275, -0.1030246, -0.1832771, -0.30401602, -0.33390167, -0.052471336, 0.12632851, 0.23514742, 0.0011784412, -0.49560672), target2);\n\ttarget2 = MulAdd(nc, MF4x4(0.08295849, 0.044828687, 0.27639604, 0.039427668, 0.02818349, -0.06210292, -0.27352595, 0.19817229, -0.18440844, -0.06898423, 0.0017214341, -0.18130824, -0.0071537187, 0.03517007, -0.2113949, 0.025240164), target2);\n\ttarget2 = MulAdd(nd, MF4x4(-0.2006673, -0.041704424, 0.16268894, -0.25376207, 0.07905478, -0.17365594, 0.10044552, -0.20418073, 0.085226685, -0.16344517, -0.11064805, -0.2824042, 0.00095205643, 0.31177342, -0.3084233, -0.0908839), target2);\n\ttarget2 = MulAdd(ne, MF4x4(0.26129997, 0.3127755, 0.06982181, 0.23317924, -0.05344337, 0.008762884, 0.20765801, 0.13311344, -0.021598162, 0.0038430444, -0.40633947, 0.09444498, -0.097569115, 0.1161639, 0.051482536, -0.13007577), target2);\n\ttarget2 = MulAdd(nf, MF4x4(0.1168701, 0.10319956, -0.26231092, 0.13755418, -0.31545812, 0.21018027, -0.2570223, 0.11072984, 0.169098, -0.092338, 0.19418359, -0.24841106, 0.2179265, 0.26306525, -0.030364338, 0.011455713), target2);\n\ttarget2 = MulAdd(ng, MF4x4(0.013165953, -0.027480505, 0.019355817, -0.22797722, 0.10252238, -0.13104701, 0.043106645, -0.113860615, 0.077017605, 0.16079858, -0.13723075, 0.08403468, 0.07229952, -0.07288171, 0.153157, -0.30485252), target2);\n\ttarget2 = MulAdd(nh, MF4x4(-0.18590495, -0.02694476, 0.14553905, 0.135362, 0.033088487, -0.49798432, -0.11869643, 0.15896079, 0.09456545, -0.14991766, -0.15788183, -0.13954063, -0.1400199, 0.47176227, 0.1710854, 0.24664737), target2);\n\ttarget2 = MulAdd(ni, MF4x4(0.15082799, -0.1990422, -0.07347236, 0.106623515, -0.054368034, -0.10389193, -0.0711653, -0.022524087, -0.056636613, -0.07881972, 0.09727487, -0.16494693, 0.13156064, 0.176482, 0.11008391, 0.16038191), target2);\n\n\tMF4 conv2d_1_tf = tex3.SampleLevel(sam, pos, 0);\n\tMF4 conv2d_4_tf = tex2.SampleLevel(sam, pos, 0);\n\tMF4 conv2d_7_tf = tex4.SampleLevel(sam, pos, 0);\n\n\tMF4 target3 = { 0.06043013, -0.057747327, -0.0260778, 0.034383494 };\n\ttarget3 = MulAdd(e, MF4x4(-0.2967133, -0.18581349, -0.03749059, 0.30880052, -0.11064016, -0.23309472, 0.05572459, 0.04502667, -0.12098995, 0.1875494, 0.17095889, 0.008563628, -0.16092524, 0.03845401, 0.1908294, 0.10556762), target3);\n\ttarget3 = MulAdd(ne, MF4x4(0.23697758, 0.11629349, 0.19466121, -0.41413772, -0.20402254, 0.0062864223, -0.13700421, -0.10543815, -0.03498975, 0.02710536, -0.32383642, 0.12299909, -0.06849518, -0.005379719, 0.15714374, -0.15514039), target3);\n\ttarget3 = MulAdd(max(target1, 0), MF4x4(-0.17502604, -0.24644612, -0.13557185, -0.16728596, -0.024457034, -0.28457522, 0.13460088, -0.21639405, 0.057475664, 0.1473123, 0.19220911, -0.12668033, 0.67518485, -0.36505973, -0.16904399, -0.010216019), target3);\n\ttarget3 = MulAdd(max(-target1, 0), MF4x4(-0.15164074, 0.2532923, -0.13278177, -0.11557631, -0.23019886, 0.115244605, 0.010407434, 0.044481948, -0.36745974, 0.6252675, -0.7489445, 0.31991, 0.04725299, 0.32507753, 0.3035176, -0.18355042), target3);\n\ttarget3 = MulAdd(max(conv2d_1_tf, 0), MF4x4(0.11328097, -0.09094802, -0.03745151, 0.12965176, 0.0051720524, 0.028558291, -0.047848992, 0.23055501, 0.18047509, -0.07151716, 0.05670166, -0.008592144, -0.092078224, -0.013172229, -0.017855234, -0.07338865), target3);\n\ttarget3 = MulAdd(max(-conv2d_1_tf, 0), MF4x4(0.123723745, -0.06312486, 0.0427355, -0.11981472, 0.028110307, 0.2275076, -0.019800344, -0.10352946, -0.23628815, 0.24896589, -0.07624697, -0.21491022, -0.13148311, 0.27282125, -0.053250857, -0.15992334), target3);\n\ttarget3 = MulAdd(max(conv2d_4_tf, 0), MF4x4(-0.23408101, 0.20139061, 0.0035646914, 0.16009186, -0.1912387, -0.0066828816, -0.13681525, -0.22325766, -0.056139376, -0.0638933, 0.0681208, 0.041838214, -0.016192758, 0.19360517, -0.21080317, 0.113634475), target3);\n\ttarget3 = MulAdd(max(-conv2d_4_tf, 0), MF4x4(0.1369719, 0.18950021, 0.019468868, -0.08180063, -0.31615034, 0.028354429, -0.1489749, -0.096815735, 0.22448029, 0.16501611, -0.11709639, -0.047612794, 0.10514418, -0.07882259, 0.2664075, 0.19011621), target3);\n\ttarget3 = MulAdd(max(conv2d_7_tf, 0), MF4x4(0.13804765, 0.01748137, 0.18502045, 0.058146507, -0.5661739, 0.14128609, -0.25875592, -0.6150388, -0.031642724, 0.3204696, -0.021026978, -0.3983191, 0.08609409, 0.0042772954, -0.3754959, -0.19454613), target3);\n\ttarget3 = MulAdd(max(-conv2d_7_tf, 0), MF4x4(0.09550674, 0.26413566, -0.15292425, -0.13285659, 0.14078279, 0.08191184, 0.066060774, -0.02605145, -0.08946464, 0.11715431, 0.05521046, -0.03218011, -0.31606913, -0.011917866, 0.11926112, 0.145299), target3);\n\ttarget3 = MulAdd(max(target2, 0), MF4x4(0.71071726, -0.8614542, -0.050295915, 0.41341305, -0.38318273, 0.1269644, 0.46467987, -0.15950991, -0.75483114, 0.6358254, -0.19257315, -0.5991311, 0.10807353, 0.083646335, 0.032484207, -0.20280145), target3);\n\ttarget3 = MulAdd(max(-target2, 0), MF4x4(-0.21395132, 0.37320906, 0.30284703, 0.054482624, 0.10859697, 0.21301107, -0.09715497, -0.047609363, 0.40013343, -0.22015318, 0.09944949, 0.4283713, 0.1767619, 0.15653327, -0.01787549, 0.22862214), target3);\n\n\ttex1[gxy] = target1;\n\ttex5[gxy] = target2;\n\ttex7[gxy] = target3;\n}\n\n\n//!PASS 6\n//!DESC Conv-4x3x3x8, Conv-4x1x1x56\n//!IN tex7, tex1, tex3, tex2, tex4, tex5\n//!OUT tex6, tex8\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a = tex7.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b = tex7.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c = tex7.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = tex7.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e = tex7.SampleLevel(sam, pos, 0);\n\tMF4 f = tex7.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g = tex7.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex7.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i = tex7.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na = max(-a, 0);\n\tMF4 nb = max(-b, 0);\n\tMF4 nc = max(-c, 0);\n\tMF4 nd = max(-d, 0);\n\tMF4 ne = max(-e, 0);\n\tMF4 nf = max(-f, 0);\n\tMF4 ng = max(-g, 0);\n\tMF4 nh = max(-h, 0);\n\tMF4 ni = max(-i, 0);\n\n\ta = max(a, 0);\n\tb = max(b, 0);\n\tc = max(c, 0);\n\td = max(d, 0);\n\te = max(e, 0);\n\tf = max(f, 0);\n\tg = max(g, 0);\n\th = max(h, 0);\n\ti = max(i, 0);\n\n\tMF4 conv2d_13_tf = { -0.03207076, 0.045260444, 0.040100798, -0.014172305 };\n\tconv2d_13_tf = MulAdd(a, MF4x4(0.122954965, 0.18889557, -0.050585095, -0.09285047, 0.041825704, -0.10147826, -0.0524878, 0.042394586, 0.26654795, -0.052367304, 0.32582784, 0.23248254, -0.18429202, -0.036516707, 0.034441825, 0.13747402), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(b, MF4x4(0.39325443, 0.12691088, -0.14018032, 0.2601387, -0.0128762275, 0.09533191, -0.15545139, -0.064879976, 0.4752176, -0.46358192, -0.048625924, 0.07356933, -0.030162415, -0.09837143, -0.34081137, 0.09620003), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(c, MF4x4(0.11647179, 0.020975508, -0.06064534, -0.1789612, 0.057696175, 0.11116113, -0.015037568, -0.024370348, -0.03656938, -0.2899815, -0.10285936, 0.055147626, 0.19246738, 0.30268162, -0.4149779, -0.0402745), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(d, MF4x4(-0.009147066, -0.17453548, 0.23320405, -0.009745345, 0.080975994, 0.07396582, -0.13413322, 0.17224005, -0.19477916, 0.16737588, 0.5310824, -0.48741058, 0.3713329, -0.061815146, -0.19980642, 0.25318542), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(e, MF4x4(0.34857947, 0.09298978, 0.20253287, 1.0750674, 0.074417695, 0.15859176, 0.17113946, 0.3587233, -0.3720992, 0.5499863, -0.3334931, -0.7303378, 0.28977355, -0.40827954, -0.15625797, 0.44504634), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(f, MF4x4(0.00963027, -0.103650935, -0.15111534, -0.054710496, 0.068436116, -0.04733752, -0.014022155, -0.06435892, 0.46522453, 0.06746723, -0.13256127, -0.354952, 0.036626723, -0.2881872, -0.20110025, 0.18387023), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(g, MF4x4(-0.042692482, -0.08184722, 0.29142103, 0.10918554, 0.022569105, -0.03967552, -0.029662814, 0.16549924, -0.06727612, 0.49291298, 0.12881728, -0.02918886, -0.01579875, -0.12708642, -0.21163678, -0.24313599), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(h, MF4x4(-0.044082023, -0.047357306, -0.044077095, 0.20591871, -0.015887344, 0.05115381, -0.19811073, -0.035676513, 0.019275555, 0.4578326, 0.5141636, 0.0702626, 0.13119744, -0.17745942, -0.1892288, -0.062224492), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(i, MF4x4(0.06651709, -0.016656881, -0.0052546742, 0.014599082, -0.032204926, 0.09341175, -0.010483702, -0.04786155, 0.23358113, 0.13316281, 0.21748747, 0.04741849, -0.11040673, 0.06230487, 0.16795471, -0.104242735), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(na, MF4x4(-0.06844235, -0.01974277, 0.03758873, 0.0437811, -0.057502225, -0.076013766, 0.05226354, 0.16626364, -0.15094693, -0.06513261, -0.07178063, -0.25390542, -0.046331745, 0.048600584, -0.09498597, -0.029823082), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nb, MF4x4(0.055906143, -0.09671702, -0.022703249, -0.074096285, -0.18490121, -0.14549334, 0.42093202, 0.087242134, -0.29526195, 0.31182536, 0.044069793, -0.17393354, -0.17096926, -0.15162584, 0.25237793, 0.047123164), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nc, MF4x4(-0.0007076463, 0.0037513115, -0.044519257, 0.05986656, -0.12090617, 0.17659539, -0.07153321, 0.043799683, -0.050228495, -0.04225425, 0.24785443, 0.19911547, -0.05966556, -0.19790268, 0.20703633, 0.0048266468), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nd, MF4x4(0.21739465, -0.046017647, -0.17681813, 0.21452186, 0.230653, -0.47062522, -0.23921433, 0.39329913, -0.036690675, 0.3303968, -0.47879925, -0.16289225, -0.1494594, 0.27207994, 0.1856394, -0.47609702), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ne, MF4x4(0.3214577, -0.023753606, 0.21297608, -0.7130707, 0.050221473, 0.9629573, 0.5004743, 0.10413513, 0.10723351, -0.07022509, 0.23218232, -0.5185978, -0.6921137, 0.0619471, 0.16877905, -0.60311705), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nf, MF4x4(0.0079998905, -0.066334635, 0.24110058, 0.06277327, -0.099571265, 0.28088686, 0.089555554, 0.049777288, -0.12143259, 0.19382764, 0.028673613, 0.14329565, -0.10053404, -0.07129261, -0.06196109, -0.54130787), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ng, MF4x4(0.0602462, -0.21520244, -0.17295553, 0.01296868, 0.09711833, 0.051904213, -0.20535164, -0.17658444, 0.27075645, 0.0784139, 0.13146368, -1.7129825e-05, -0.06117924, 0.24631894, -0.01026257, 0.0030612787), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nh, MF4x4(0.19062799, 0.122910775, 0.09640838, 0.06539721, 0.057701044, -0.20118104, -0.06261069, 0.107874714, 0.0973878, -0.20830666, -0.108459, -0.10059624, -0.08533175, -0.025608283, -0.07584223, -0.26741856), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ni, MF4x4(-0.1459836, -0.092159286, 0.05037609, 0.07709965, -0.18563168, -0.017586546, -0.16244653, -0.017426869, -0.20880185, -0.26068223, 0.037480514, 0.056800563, 0.14884543, 0.13592677, -0.1492276, 0.023280073), conv2d_13_tf);\n\n\tMF4 conv2d_11_tf = tex1.SampleLevel(sam, pos, 0);\n\tMF4 conv2d_1_tf = tex3.SampleLevel(sam, pos, 0);\n\tMF4 conv2d_4_tf = tex2.SampleLevel(sam, pos, 0);\n\tMF4 conv2d_7_tf = tex4.SampleLevel(sam, pos, 0);\n\tMF4 conv2d_10_tf = tex5.SampleLevel(sam, pos, 0);\n\n\tMF4 n_conv2d_11_tf = max(-conv2d_11_tf, 0);\n\tMF4 n_conv2d_1_tf = max(-conv2d_1_tf, 0);\n\tMF4 n_conv2d_4_tf = max(-conv2d_4_tf, 0);\n\tMF4 n_conv2d_7_tf = max(-conv2d_7_tf, 0);\n\tMF4 n_conv2d_10_tf = max(-conv2d_10_tf, 0);\n\tMF4 n_conv2d_13_tf = max(-conv2d_13_tf, 0);\n\n\tconv2d_11_tf = max(conv2d_11_tf, 0);\n\tconv2d_1_tf = max(conv2d_1_tf, 0);\n\tconv2d_4_tf = max(conv2d_4_tf, 0);\n\tconv2d_7_tf = max(conv2d_7_tf, 0);\n\tconv2d_10_tf = max(conv2d_10_tf, 0);\n\tconv2d_13_tf = max(conv2d_13_tf, 0);\n\n\tMF4 target1 = { -0.022439916, 0.020257013, 0.041364692, 0.0141367195 };\n\ttarget1 = MulAdd(e, MF4x4(0.06499131, -0.18188648, -0.3129073, 0.46508536, 0.12730247, -0.0048228996, -0.29037076, -0.040671512, -0.37960687, -0.014975028, 0.051478356, -0.17510629, 0.24467152, -0.3726265, -0.05205153, 0.29063764), target1);\n\ttarget1 = MulAdd(ne, MF4x4(-0.036466975, -0.021365412, 0.19166216, 0.2391551, 0.38419026, 0.16602032, 0.06468244, 0.7733659, 0.004007756, 0.03079535, -0.0030497843, -0.2033753, -0.3095698, 0.40909737, 0.067926906, -0.16948561), target1);\n\ttarget1 = MulAdd(conv2d_11_tf, MF4x4(-0.07662823, 0.021806711, 0.05107831, 0.09089961, -0.051882017, -0.00308805, -0.08946813, -0.085923605, 0.13135786, -0.040860962, -0.12652986, -0.17011258, -0.23838595, 0.16027555, -0.27720237, 0.3512776), target1);\n\ttarget1 = MulAdd(n_conv2d_11_tf, MF4x4(0.054664467, -0.012412156, -0.11934643, -0.20614244, 0.005247195, -0.07548066, 0.1898925, -0.08086777, -0.27888495, 0.08055913, 0.2733805, 0.05444851, 0.22015096, -0.15712278, 0.070828624, -0.12955543), target1);\n\ttarget1 = MulAdd(conv2d_1_tf, MF4x4(-0.19064794, 0.10234088, -0.07635815, 0.15928909, 0.25309163, -0.0055202493, -0.04807871, 0.1251584, -0.19122045, 0.050241888, 0.020203145, 0.12914757, 0.20982412, -0.042472344, 0.12709813, -0.10014193), target1);\n\ttarget1 = MulAdd(n_conv2d_1_tf, MF4x4(-0.025030518, -0.077239156, 0.12003885, -0.07962912, -0.17808792, -0.027223784, 0.13286914, -0.026946044, 0.044607714, -0.045288526, 0.12821364, -0.19116278, 0.053770527, -0.05832497, -0.14832996, -0.08657012), target1);\n\ttarget1 = MulAdd(conv2d_4_tf, MF4x4(0.17286317, -0.029046731, -0.06853154, -0.080361344, -0.14082976, -0.076902896, 0.08296736, -0.17621617, 0.10048785, -0.01766402, -0.06414528, -0.012933831, 0.13066664, -0.05233094, 0.09176876, 0.0053013414), target1);\n\ttarget1 = MulAdd(n_conv2d_4_tf, MF4x4(0.09860572, 0.0578288, 0.05035504, 0.017596964, 0.055266783, -0.084020205, 0.1214565, -0.04180339, -0.16650584, 0.02645373, 0.08516016, 0.123672284, -0.11207144, 0.03805417, 0.017909998, 0.08631275), target1);\n\ttarget1 = MulAdd(conv2d_7_tf, MF4x4(0.08567236, 0.11860556, -0.2603184, 0.04399533, -0.13169551, -0.14144541, 0.11864987, -0.19813964, -0.14435594, 0.0943669, 0.318387, -0.039731313, -0.05394642, 0.018096905, 0.11445131, -0.07224858), target1);\n\ttarget1 = MulAdd(n_conv2d_7_tf, MF4x4(-0.066673055, -0.0079072425, 0.15320915, 0.1241549, -0.03786454, 0.02686796, 0.062339537, 0.0921351, 0.24909046, -0.13677734, -0.08606315, -0.1311618, -0.11268947, 0.017006561, -0.010060483, -0.016905207), target1);\n\ttarget1 = MulAdd(conv2d_10_tf, MF4x4(0.11682704, -0.06385352, 0.048959445, 0.2103904, -0.24271931, -0.114691064, 0.106675364, -0.16527846, 0.20034032, -0.19069487, 0.13964948, -0.2999216, -0.05324707, 0.03835898, 0.002079623, -0.042824514), target1);\n\ttarget1 = MulAdd(n_conv2d_10_tf, MF4x4(0.021089941, 0.058709584, -0.026687654, 0.061108842, 0.13278545, 0.0154480925, -0.1858288, 0.07775379, -0.013820952, 0.04138522, 0.040989578, 0.19044249, -0.05938495, 0.049729984, 0.022488212, 0.13883443), target1);\n\ttarget1 = MulAdd(conv2d_13_tf, MF4x4(-0.12241166, 0.24528268, -0.5302565, 0.045535725, -0.054705787, -0.038350295, -0.0833044, 0.18413262, -0.16520579, 0.087780885, -0.42400438, 0.30506396, -0.05254002, 0.0068022306, -0.6969388, 1.901328), target1);\n\ttarget1 = MulAdd(n_conv2d_13_tf, MF4x4(-0.12879479, -0.13513997, -0.068150125, 0.34132335, 0.08568371, 0.086309135, -0.10726202, 0.053040955, -0.007894386, 0.0694188, 0.13861355, -0.06504751, 0.1669743, -0.06529014, -0.048758753, -0.10337064), target1);\n\n\tMF4 target2 = { -0.032370187, 0.008661155, 0.020123083, 0.04574251 };\n\ttarget2 = MulAdd(e, MF4x4(0.10813235, 0.05466766, -0.20426773, 0.03014769, -0.23742639, -0.18808678, -0.08507936, 0.11070251, -0.24421449, -0.047370236, -0.034263644, -0.36471045, 0.022079159, -0.13425855, -0.43840396, 0.14318791), target2);\n\ttarget2 = MulAdd(ne, MF4x4(0.006743051, 0.07216438, 0.14125177, 0.06620228, 0.42031923, 0.2496421, -0.07731219, -0.013831615, 0.15525927, 0.090886295, 0.019504324, -0.048566148, -0.21346657, 0.022109412, 0.26717573, -0.11774596), target2);\n\ttarget2 = MulAdd(conv2d_11_tf, MF4x4(-0.28528357, -0.17186452, -0.20616518, 0.034786828, -0.10506841, -0.12335915, 0.07619831, -0.23998813, 0.19965814, 0.103892386, 0.04367025, -0.19183081, -0.16918147, -0.056264214, 0.20310691, 0.3341895), target2);\n\ttarget2 = MulAdd(n_conv2d_11_tf, MF4x4(0.20581162, 0.02040467, 0.35530564, -0.15494272, -0.010262163, 0.07301455, -0.074129246, 0.17339204, -0.00919498, -0.11473048, 0.042003002, -0.050515488, 0.24150477, 0.14734265, -0.102072336, -0.03404688), target2);\n\ttarget2 = MulAdd(conv2d_1_tf, MF4x4(-0.022791447, -0.005725081, 0.057149626, 0.013613261, 0.017012713, 0.0022030922, 0.06826359, -0.1473429, -0.055662345, 0.015804563, 0.07033723, 0.0380571, -0.030761583, -0.06867299, -0.0004780991, -0.10686876), target2);\n\ttarget2 = MulAdd(n_conv2d_1_tf, MF4x4(0.11448204, 0.08165584, 0.56496936, 0.2275344, 0.050801918, 0.115319155, 0.11518415, 0.05895198, 0.06831797, 0.08119943, 0.34825838, -0.048232127, 0.028284775, -0.03452888, 0.1979006, -0.041894354), target2);\n\ttarget2 = MulAdd(conv2d_4_tf, MF4x4(0.11946663, 0.03388757, -0.13882776, -0.14631757, -0.07182763, -0.08768853, 0.14146432, 0.10330784, -0.012143934, -0.022009725, -0.15579993, -0.050503176, -0.016312446, -0.054338187, -0.07755307, -0.07889432), target2);\n\ttarget2 = MulAdd(n_conv2d_4_tf, MF4x4(-0.02631465, 0.05617023, 0.13298586, 0.045326687, -0.11627329, -0.087329924, -0.05144727, -0.13488398, 0.06281482, 0.054220017, 0.25243595, 0.002556835, -0.03581036, 0.10341262, 0.10574532, 0.15461436), target2);\n\ttarget2 = MulAdd(conv2d_7_tf, MF4x4(0.07718563, 0.038919166, -0.06910819, -0.059710544, -0.09481636, -0.1109951, 0.5187051, 0.045543563, -0.048131686, 0.072409846, 0.4892963, -0.086976275, -0.07343929, -0.12501429, 0.26566443, 0.08579102), target2);\n\ttarget2 = MulAdd(n_conv2d_7_tf, MF4x4(0.005692247, 0.042074066, 0.13430944, 0.10093059, 0.023651319, 0.019474167, -0.13077211, -0.07782639, 0.072300054, 0.011820138, -0.1379879, -0.033925157, 0.012152839, 0.005247593, 0.15555158, -0.10433893), target2);\n\ttarget2 = MulAdd(conv2d_10_tf, MF4x4(-0.14903626, -0.0649052, 0.103872776, 0.18057188, 0.02891697, 0.13026263, 0.45847327, 0.09324349, -0.039312128, -0.05299939, 0.4332103, -0.25727344, 0.006733611, 0.05955007, 0.24531682, 0.053989712), target2);\n\ttarget2 = MulAdd(n_conv2d_10_tf, MF4x4(0.111072116, 0.11529407, -0.26600304, -0.032266896, 0.09633932, 0.0094333775, 0.060893714, -0.08118885, -0.03830528, 0.0037902966, -0.11128639, 0.13511918, 0.06553124, 0.054722965, 0.08178846, 0.06025588), target2);\n\ttarget2 = MulAdd(conv2d_13_tf, MF4x4(0.095904954, 0.0008960944, 0.35145932, 0.28108585, -0.011538731, -0.09239871, -0.21972048, -0.0820484, 0.112448506, -0.10381135, 0.09701949, 0.023723679, 0.04458077, 0.04700858, -0.056815177, 0.33785793), target2);\n\ttarget2 = MulAdd(n_conv2d_13_tf, MF4x4(0.08533725, 0.05978557, -0.40020186, -0.13684823, -0.0074113654, 0.1310689, 0.12906975, 0.11596462, 0.007170312, 0.13460107, 0.08450185, -0.019635776, 0.0966497, 0.021586724, -0.06784809, 0.12102399), target2);\n\n\ttex6[gxy] = target1;\n\ttex8[gxy] = target2;\n}\n\n\n//!PASS 7\n//!DESC Conv-3x3x3x16\n//!IN tex6, tex8, INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 outputPt = GetOutputPt();\n\tfloat2 pos = (gxy + 0.5f) * outputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex6.SampleLevel(sam1, pos - outputPt, 0);\n\tMF4 b1 = tex6.SampleLevel(sam1, pos + float2(-outputPt.x, 0), 0);\n\tMF4 c1 = tex6.SampleLevel(sam1, pos + float2(-outputPt.x, outputPt.y), 0);\n\tMF4 d1 = tex6.SampleLevel(sam1, pos + float2(0, -outputPt.y), 0);\n\tMF4 e1 = tex6.SampleLevel(sam1, pos, 0);\n\tMF4 f1 = tex6.SampleLevel(sam1, pos + float2(0, outputPt.y), 0);\n\tMF4 g1 = tex6.SampleLevel(sam1, pos + float2(outputPt.x, -outputPt.y), 0);\n\tMF4 h1 = tex6.SampleLevel(sam1, pos + float2(outputPt.x, 0), 0);\n\tMF4 i1 = tex6.SampleLevel(sam1, pos + outputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex8.SampleLevel(sam1, pos - outputPt, 0);\n\tMF4 b2 = tex8.SampleLevel(sam1, pos + float2(-outputPt.x, 0), 0);\n\tMF4 c2 = tex8.SampleLevel(sam1, pos + float2(-outputPt.x, outputPt.y), 0);\n\tMF4 d2 = tex8.SampleLevel(sam1, pos + float2(0, -outputPt.y), 0);\n\tMF4 e2 = tex8.SampleLevel(sam1, pos, 0);\n\tMF4 f2 = tex8.SampleLevel(sam1, pos + float2(0, outputPt.y), 0);\n\tMF4 g2 = tex8.SampleLevel(sam1, pos + float2(outputPt.x, -outputPt.y), 0);\n\tMF4 h2 = tex8.SampleLevel(sam1, pos + float2(outputPt.x, 0), 0);\n\tMF4 i2 = tex8.SampleLevel(sam1, pos + outputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF3 result = { 0.00016753975, -0.00019302216, -0.0001663917 };\n\tresult = MulAdd(a1, MF4x3(0.03277269, -0.005261106, 0.017171703, 0.07399743, 0.06816794, 0.09821277, -0.013628815, -0.09454006, -0.2801339, -0.020518344, -0.008617738, -0.010507532), result);\n\tresult = MulAdd(b1, MF4x3(-0.0728787, -0.05837346, -0.06754399, -0.14260155, -0.11570593, -0.156841, -0.0050546993, 0.22888114, 0.21504444, 9.040898e-05, -0.023274591, -0.013553191), result);\n\tresult = MulAdd(c1, MF4x3(0.051917054, 0.05906303, 0.06952429, 0.0525386, 0.088182524, 0.058972485, -0.089566976, -0.11995993, -0.060805317, -0.0016516607, 0.014582383, 0.0018667864), result);\n\tresult = MulAdd(d1, MF4x3(-0.010195044, -0.0016970673, -0.007473783, 0.0048292056, 0.00090277405, -0.018349117, 0.33494812, 0.21826924, 0.07975424, 0.0313906, 0.023605483, 0.019729096), result);\n\tresult = MulAdd(e1, MF4x3(-0.04102709, -0.057343815, -0.053828835, -0.20089269, -0.14614193, -0.16869506, -0.48148197, -0.112935685, 0.15368614, 0.013808743, 0.019406663, 0.016180169), result);\n\tresult = MulAdd(f1, MF4x3(-0.06643282, -0.06502517, -0.07856252, 0.018638078, -0.022319186, -0.0067943106, 0.036783714, -0.05270904, -0.0070206574, 0.016395729, -0.004902533, 0.008296518), result);\n\tresult = MulAdd(g1, MF4x3(0.12068605, 0.15490896, 0.16064006, 0.065336704, 0.053270113, 0.041463483, -0.070910245, -0.16710983, -0.100286275, -0.00765049, 0.002855491, 0.005510328), result);\n\tresult = MulAdd(h1, MF4x3(0.020581165, 0.009990014, 0.020439452, 0.053358912, 0.019578407, 0.07360501, -0.01833616, 0.024298528, 0.09730532, 0.007911377, -0.0008312725, 0.0012658008), result);\n\tresult = MulAdd(i1, MF4x3(-0.029880082, -0.048992317, -0.06480165, 0.057186406, 0.02767247, 0.02632289, 0.3017522, 0.107764654, -0.082682736, -0.018429814, -0.0037222179, -0.008986925), result);\n\tresult = MulAdd(a2, MF4x3(0.05568391, 0.07143306, 0.11425685, 0.09023551, 0.07943949, 0.09341015, -0.006964977, 0.005051686, -0.0066025057, 0.016425984, 0.016140617, 0.017426701), result);\n\tresult = MulAdd(b2, MF4x3(-0.05428328, -0.05257552, -0.055414293, 0.07355084, 0.02099847, 0.02532324, -0.0059588687, 0.0026828237, 0.012020099, -0.02094392, -0.008076426, -0.004007557), result);\n\tresult = MulAdd(c2, MF4x3(0.078949526, 0.060797416, 0.06175456, 0.038563624, 0.1133258, 0.097543724, 0.009481104, 0.010644464, 0.017376821, -0.025299812, -0.034176692, -0.024242869), result);\n\tresult = MulAdd(d2, MF4x3(0.097633384, 0.08206449, 0.07688493, -0.13658656, -0.07185774, -0.046447344, 0.023979248, 0.007561647, 0.013846933, -0.05918984, -0.061709706, -0.05624362), result);\n\tresult = MulAdd(e2, MF4x3(-0.06739334, -0.08787811, -0.11320143, -0.21294294, -0.20553987, -0.212303, 0.03569362, 0.005086715, -0.008558981, -0.029743299, -0.01592082, -0.023579126), result);\n\tresult = MulAdd(f2, MF4x3(-0.06479095, -0.07233743, -0.0707415, 0.042067222, 0.020530105, -0.013605897, -0.024686582, -0.019044759, -0.028663088, -0.02459999, -0.022106387, -0.037910707), result);\n\tresult = MulAdd(g2, MF4x3(0.00047730867, 0.0074251383, -0.019326044, -0.0079797115, -0.028213829, -0.04960014, -0.007960453, 0.006997611, 0.008396939, 0.06343004, 0.049828995, 0.03993323), result);\n\tresult = MulAdd(h2, MF4x3(0.041342042, 0.04802731, 0.05910926, -0.06663181, -0.017722478, -0.063366435, -0.0066454113, -0.007623568, -0.0052808253, 0.019400312, 0.023122162, 0.014149712), result);\n\tresult = MulAdd(i2, MF4x3(-0.02667231, 0.00326689, 0.028842116, 0.1206443, 0.059932612, 0.11402581, -0.019962605, -0.012744165, -0.0043374747, 0.0076787886, -0.0029834688, 0.016930124), result);\n\tresult = MulAdd(na1, MF4x3(-0.048204165, -0.040773313, -0.048701975, -0.10603768, -0.0444273, -0.05195404, 0.0075067757, -0.018593295, -0.021308444, -0.03957737, -0.009982081, 0.010517069), result);\n\tresult = MulAdd(nb1, MF4x3(0.04416329, 0.0061665634, 0.006213014, 0.08318984, 0.10827006, 0.066440694, 0.020778455, 0.039835304, 0.043959253, 0.21019539, 0.20858723, 0.17247656), result);\n\tresult = MulAdd(nc1, MF4x3(-0.023037061, -0.040597446, -0.03936031, 0.038322993, -0.006460271, 0.008364464, 0.0013878595, -0.017040763, -0.008046535, 0.04411088, 0.0034189504, -0.00865711), result);\n\tresult = MulAdd(nd1, MF4x3(-0.04620107, -0.010026264, -0.018166702, -0.13721117, -0.13748127, -0.15809298, -0.015785996, -0.005124028, -0.02296112, 0.14735141, 0.17641969, 0.18629177), result);\n\tresult = MulAdd(ne1, MF4x3(0.06815282, 0.12910986, 0.1348522, 0.3159465, 0.39939725, 0.35339746, -0.003487101, 0.01400649, 0.03802699, -0.61086726, -0.60257083, -0.57637924), result);\n\tresult = MulAdd(nf1, MF4x3(0.051779903, 0.040781803, 0.057703253, 0.08762279, 0.058650948, 0.14592434, -0.0027639035, 0.019435523, 0.007374421, 0.14841707, 0.15387256, 0.18617661), result);\n\tresult = MulAdd(ng1, MF4x3(0.0061518056, -0.036338966, -0.01811052, -0.0409911, -0.10952732, -0.06394289, -0.03781909, -0.036061246, -0.017401218, 0.036531474, -0.009453272, -0.0205337), result);\n\tresult = MulAdd(nh1, MF4x3(0.011860616, -0.01409049, -0.0038651319, -0.026641136, 0.052935697, 0.024065036, -0.00801134, -0.021182325, -0.03668359, 0.17521855, 0.1884243, 0.21842308), result);\n\tresult = MulAdd(ni1, MF4x3(-0.04098353, -0.010698699, -0.042900108, -0.3209868, -0.37843677, -0.40212557, 0.016307857, 0.010040624, 0.0025999267, -0.008670373, 0.0011820213, -0.021262378), result);\n\tresult = MulAdd(na2, MF4x3(0.109322615, 0.072824165, 0.111781776, 0.056546386, -0.00393398, 0.004904314, 0.18162459, 0.1963156, 0.18083604, -0.11325025, 0.03739349, -0.034167226), result);\n\tresult = MulAdd(nb2, MF4x3(-0.16535625, -0.19053574, -0.19740228, -0.09285224, -0.18288574, -0.16264571, -0.15362014, -0.11303279, 0.023057505, -0.019013347, 0.025035419, 0.046823245), result);\n\tresult = MulAdd(nc2, MF4x3(0.051271398, 0.06677435, 0.071102865, -0.24909541, -0.24379867, -0.26372898, -0.051355038, 0.16958164, 0.12556365, -0.078110464, -0.09428601, -0.12403035), result);\n\tresult = MulAdd(nd2, MF4x3(-0.20382409, -0.21728146, -0.25310788, 0.0863418, 0.16670556, 0.13722113, 0.09728048, -0.05204764, -0.13571848, 0.011384012, -0.12616627, -0.121069506), result);\n\tresult = MulAdd(ne2, MF4x3(0.048272748, 0.056282464, 0.053991128, 0.24383838, 0.30037045, 0.2993122, -0.10345337, -0.28334868, -0.36417452, 0.289455, 0.26967737, 0.30849114), result);\n\tresult = MulAdd(nf2, MF4x3(0.08048932, 0.10012804, 0.13864101, 0.028471693, -0.10722793, -0.110060275, -0.09971538, -0.011243501, 0.17263469, 0.0536668, 0.08396721, 0.058851402), result);\n\tresult = MulAdd(ng2, MF4x3(-0.02470257, -0.0099621, 0.0018576515, -0.07751234, -0.0431258, -0.03958112, 0.07120911, 0.05517916, 0.18740316, -0.043790314, -0.0959628, -0.070550814), result);\n\tresult = MulAdd(nh2, MF4x3(0.10409344, 0.08135716, 0.04320299, 0.09303134, 0.073921256, 0.07716563, 0.09312593, 0.03623192, 0.06660019, -0.12193945, -0.16342056, -0.15565647), result);\n\tresult = MulAdd(ni2, MF4x3(0.068098865, 0.07742245, 0.04117883, -0.07239023, -0.0048315763, -0.0029638975, -0.053049978, 0.121163346, 0.048760712, -0.033619802, -0.010043663, -0.012648383), result);\n\n\tOUTPUT[gxy] = MF4(result + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Upscale_GAN_x3_L.hlsl",
    "content": "// Anime4K_Upscale_GAN_x3_L\n// 移植自 https://github.com/bloc97/Anime4K/blob/8e39551ce96ed172605c89b7dd8be855b5502cc9/glsl/Upscale/Anime4K_Upscale_GAN_x3_L.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n// 圆括号内的输入只被采样一次\n// INPUT -> tf, tf1, tf2\n// tf, tf1, tf2 -> 1_tf, 3_tf, 3_tf1, 3_tf2\n// 3_tf, 3_tf1, 3_tf2, (1_tf) -> 4_tf, 6_tf, 6_tf1, 6_tf2\n// 6_tf, 6_tf1, 6_tf2, (1_tf), (4_tf) -> 7_tf, 9_tf, 9_tf1, 9_tf2\n// 9_tf, 9_tf1, 9_tf2, (1_tf), (4_tf), (7_tf) -> 11_tf, 10_tf, 12_tf, 12_tf1, 12_tf2\n// 12_tf, 12_tf1, 12_tf2,  11_tf, (1_tf), (4_tf), (7_tf), (10_tf) -> 0ups, 0ups1, 0ups2\n// 0ups, 0ups1, 0ups2 -> 1ups, 1ups1\n// (INPUT), 1ups, 1ups1 -> OUTPUT\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 3\n//!HEIGHT INPUT_HEIGHT * 3\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex7;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex8;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex9;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex10;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex11;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 3\n//!HEIGHT INPUT_HEIGHT * 3\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv1ups;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 3\n//!HEIGHT INPUT_HEIGHT * 3\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv1ups1;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1, tex2, tex3\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 result = MF4(0.034235504, 0.039522275, -0.032817896, -0.0031068379);\n\t\t\tresult = MulAdd(src[i - 1][j - 1], MF3x4(-0.26345107, 0.18636681, 0.068192646, 0.06335259, -0.5026903, -0.39884016, -0.14562744, -0.24653248, -0.44533378, 0.52169526, -0.35453957, 0.25303423), result);\n\t\t\tresult = MulAdd(src[i - 1][j], MF3x4(-0.22396083, 0.1324318, 0.47152156, -0.3061965, -0.06026671, -0.26795772, 0.0081171375, -0.32897332, -0.16401465, -0.1018444, 0.48241594, -0.09054633), result);\n\t\t\tresult = MulAdd(src[i - 1][j + 1], MF3x4(0.25090155, -0.15917313, 0.028407926, -0.24014995, 0.4114972, -0.45535553, 0.08742311, 0.16796699, 0.0995656, -0.4009339, 0.21471445, 0.2708967), result);\n\t\t\tresult = MulAdd(src[i][j - 1], MF3x4(-0.16269766, 0.16389379, -0.12857921, -0.1602467, -0.16460834, 0.15754342, 0.46217716, 0.20442651, 0.0548621, -0.018400457, 0.38643107, -0.29171357), result);\n\t\t\tresult = MulAdd(src[i][j], MF3x4(-0.24035631, -0.33344224, -0.3904698, -0.4168555, -0.42237657, 0.36649242, 0.41396108, -0.38945103, -0.5806718, 0.035621256, 0.09171773, -0.54301006), result);\n\t\t\tresult = MulAdd(src[i][j + 1], MF3x4(0.15957133, -0.035278857, 0.1318051, 0.6896821, 0.18556473, 0.16378926, 0.32670698, 0.2675555, 0.08802092, 0.41140598, 0.05322177, 0.5030955), result);\n\t\t\tresult = MulAdd(src[i + 1][j - 1], MF3x4(-0.082798496, 0.24381381, -0.30908522, 0.04553323, 0.25664318, 0.4123797, -0.29377607, 0.15920162, 0.13717672, 0.027625162, 0.25476956, 0.21843456), result);\n\t\t\tresult = MulAdd(src[i + 1][j], MF3x4(0.14534818, -0.239681, 0.22961527, 0.3814783, 0.1233398, 0.2449555, 0.015051085, 0.1661234, -0.27740797, -0.29109767, -0.19438179, -0.027439274), result);\n\t\t\tresult = MulAdd(src[i + 1][j + 1], MF3x4(0.0011904882, -0.01287622, -0.1573707, -0.13167281, -0.12803882, -0.079415865, -0.04034391, -0.09625339, 0.23190106, -0.26743674, -0.48981485, -0.2063946), result);\n\t\t\ttex1[destPos] = result;\n\t\t\t\n\t\t\tresult = MF4(0.014904483, -0.009271063, 0.04884906, 0.0106121525);\n\t\t\tresult = MulAdd(src[i - 1][j - 1], MF3x4(-0.17155029, -0.084075995, 0.2281505, 0.38326037, 0.18672232, -0.2562305, 0.30811027, 0.30188802, -0.24588907, 0.088734694, 0.14092724, -0.18793459), result);\n\t\t\tresult = MulAdd(src[i - 1][j], MF3x4(-0.47514066, 0.51882815, 0.1561294, -0.043147214, -0.19554369, 0.19514531, -0.14636773, 0.11425865, -0.2772368, 0.5388449, 0.54875004, -0.4526634), result);\n\t\t\tresult = MulAdd(src[i - 1][j + 1], MF3x4(0.11270131, 0.44642356, -0.066219814, 0.15781905, 0.056682296, 0.026522577, 0.05600635, -0.13799536, 0.15637676, -0.15661198, 0.53794587, 0.09693692), result);\n\t\t\tresult = MulAdd(src[i][j - 1], MF3x4(-0.23679815, 0.16397353, 0.37343305, 0.07477207, -0.36061585, 0.24027273, 0.3222875, 0.05577238, -0.17547923, 0.11737104, 0.10193468, -0.056727592), result);\n\t\t\tresult = MulAdd(src[i][j], MF3x4(0.2335428, -0.5571976, 0.13586389, -0.3443148, 0.4537042, -0.59349614, -0.24114902, 0.08669349, 0.2881981, -0.29106617, -0.47775048, 0.22723311), result);\n\t\t\tresult = MulAdd(src[i][j + 1], MF3x4(0.006350133, -0.28196353, 0.22710627, 0.30080464, -0.3500525, 0.09254133, -0.48047104, -0.30452347, -0.077637784, -0.11856046, 0.07377078, 0.44280833), result);\n\t\t\tresult = MulAdd(src[i + 1][j - 1], MF3x4(0.2200762, 0.3665277, 0.043291833, 0.21484855, 0.15553318, -0.035003938, 0.14891839, -0.29007155, 0.23154758, -0.2348225, 0.48130423, 0.00733271), result);\n\t\t\tresult = MulAdd(src[i + 1][j], MF3x4(0.28228128, 0.054867495, 0.08010268, -0.2980908, 0.15146615, -0.058449056, -0.43990552, -0.5963296, 0.09321943, 0.20146254, -0.08043876, 0.017381484), result);\n\t\t\tresult = MulAdd(src[i + 1][j + 1], MF3x4(0.076894, 0.16354772, 0.25471574, 0.24382424, -0.15274979, -0.19706573, -0.30667382, 0.523845, 0.023073493, 0.34462887, -0.3384359, 0.18867111), result);\n\t\t\ttex2[destPos] = result;\n\t\t\t\n\t\t\tresult = MF4(-0.017981518, -0.012223751, -0.0033700857, 0.013441364);\n\t\t\tresult = MulAdd(src[i - 1][j - 1], MF3x4(-0.34360278, -0.28731042, -0.017787619, 0.36802426, 0.33655256, -0.24784079, 0.29148427, 0.28857, -0.3111454, 0.0030706236, -0.25914, 0.5528963), result);\n\t\t\tresult = MulAdd(src[i - 1][j], MF3x4(0.12459981, -0.17094392, -0.18776429, 0.37819883, 0.1320519, 0.21927781, -0.16188109, 0.050895408, -0.06871313, 0.16754176, 0.29934305, 0.052247107), result);\n\t\t\tresult = MulAdd(src[i - 1][j + 1], MF3x4(-0.016753385, -0.0935026, -0.3025131, 0.029084548, -0.17713268, 0.23525053, 0.015773006, 0.5464473, 0.49457568, 0.03073306, 0.18685353, 0.28700578), result);\n\t\t\tresult = MulAdd(src[i][j - 1], MF3x4(0.135332, 0.07585244, 0.05262212, -0.15484884, -0.13468477, 0.5161883, 0.10347934, -0.37127933, 0.12426171, 0.48973167, 0.19040361, -0.24403319), result);\n\t\t\tresult = MulAdd(src[i][j], MF3x4(-0.54557467, 0.07250278, 0.37912187, 0.0044768555, -0.47080016, -0.4050018, 0.64416456, -0.58235925, -0.28048036, -0.32962233, -0.28131053, 0.022653949), result);\n\t\t\tresult = MulAdd(src[i][j + 1], MF3x4(0.17059836, 0.016603703, 0.34638256, 0.028987328, 0.43271738, -0.15030707, 0.072848, 0.1422675, -0.23391044, -0.12179815, 0.37569857, -0.056668952), result);\n\t\t\tresult = MulAdd(src[i + 1][j - 1], MF3x4(-0.0428437, 0.15237094, -0.26750615, 0.053740855, -0.04772152, -0.13561963, -0.20043467, -0.018060924, 0.29031327, -0.17592178, -0.5016104, -0.36639994), result);\n\t\t\tresult = MulAdd(src[i + 1][j], MF3x4(0.39091983, -0.257284, -0.39293087, -0.1182859, -0.46328986, -0.1585645, -0.32158652, 0.41519204, 0.21179573, -0.3613411, -0.032484483, -0.03755994), result);\n\t\t\tresult = MulAdd(src[i + 1][j + 1], MF3x4(0.42772895, 0.11436431, -0.115817815, -0.29173127, 0.57807744, -0.21997264, -0.49362126, 0.021626333, 0.1258072, -0.062251803, -0.16541855, 0.061321106), result);\n\t\t\ttex3[destPos] = result;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x24, Conv-4x1x1x40\n//!IN tex1, tex2, tex3\n//!OUT tex4, tex5, tex6, tex7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = tex2.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\t\n\tMF4 a3 = tex3.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex3.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 conv2d_2_tf = MF4(-0.077597156, 0.024995416, 0.0048880246, -0.06210122);\n\tconv2d_2_tf = MulAdd(a1, MF4x4(0.1881249, -0.14544061, -0.022969106, 0.088232316, 0.0058642747, -0.049336948, -0.039974928, 0.06410949, -0.09211665, -0.034005307, -0.1095955, 0.10930763, -0.26397142, 0.1384094, 0.017342392, -0.21376696), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(b1, MF4x4(-0.14526816, -0.0639951, 0.11742242, -0.006982521, -0.05208895, 0.089485295, -0.19564004, -0.08121572, -0.11621622, 0.15375662, -0.15378582, 0.0596373, 0.14132364, -0.06385903, 0.05449634, -0.047440365), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(c1, MF4x4(-0.082622305, -0.23856479, 0.06367865, -0.019509695, 0.094882965, -0.04511791, 0.16706854, 0.20536391, 0.1409632, -0.10635743, 0.038904104, -0.0039008786, 0.16198882, -0.17409256, 0.13213669, 0.08329318), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(d1, MF4x4(-0.1186756, 0.2009846, -0.086417995, 0.20491274, -0.13763973, -0.0800847, 0.16069777, 0.10931271, 0.14152408, 0.047218926, 0.041168302, -0.054257084, -0.08315953, -0.1573787, 0.20787828, 0.118524544), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(e1, MF4x4(-0.19046788, 0.10213364, -0.112078644, -0.16287695, 0.011410189, -0.016858546, -0.09383451, -0.063516155, -0.17561492, -0.15199865, -0.112707786, -0.18099716, 0.19017689, -0.20048961, -0.5382596, -0.24332014), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(f1, MF4x4(-0.1465597, 0.044423096, 0.04632811, -0.015121401, -0.051081203, -0.09574356, -0.10018257, -0.019390205, -0.1562855, 0.041693382, -0.012624074, 0.057703923, 0.09825134, 0.1544577, 0.1683734, 0.018580355), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(g1, MF4x4(-0.22240564, -0.051839057, 0.12950379, 0.0048653902, 0.0144696245, -0.10698864, -0.08654499, -0.131132, 0.15429983, 0.025204081, -0.09136411, -0.053068906, -0.005858075, -0.02560129, 0.0469077, 0.018962694), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(h1, MF4x4(-0.4698737, -0.053354982, 0.27541625, -0.020424731, 0.06935965, 0.008045162, -0.11538889, -0.038876567, -0.049084928, 0.1629101, -0.012742019, 0.12038333, -0.0705842, 0.12735052, 0.17640172, 0.050716672), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(i1, MF4x4(-0.10064598, 0.016594354, -0.14633141, -0.09175336, -0.12889755, -0.1671076, 0.22031903, 0.0759859, 0.102435045, -0.072596334, -0.17714, 0.03531571, -0.022843607, 0.047148425, 0.105391234, 0.05260699), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(a2, MF4x4(-0.1057386, 0.020954097, -0.022159133, 0.064248964, -0.031145383, -0.008180922, -0.023611609, 0.05197287, -0.017418958, 0.02461813, 0.0584847, -0.10087345, -0.16315617, 0.15651843, 0.10478647, 0.08347392), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(b2, MF4x4(-0.01323452, 0.044956483, -0.007983463, 0.10643116, -0.030048033, -0.11766427, -0.101889476, 0.015120098, 0.031690307, 0.014470776, -0.10197176, -0.10045749, -0.065616645, -0.15230782, -0.26183948, -0.071056716), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(c2, MF4x4(0.026220636, -0.044518135, 0.17167594, 0.3016424, 0.12054841, 0.042369425, 0.04208856, 0.14938886, -0.07018442, -0.008244587, 0.14260693, -0.094418734, -0.032693435, 0.042990524, -0.053002246, -0.003936231), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(d2, MF4x4(-0.10141095, 0.17178011, -0.10951717, -0.28119737, 0.008288983, 0.14197187, 0.10903869, 0.017220182, 0.041842293, -0.03106527, -0.05892881, 0.02668739, 0.072505936, -0.060759444, 0.00032896115, -0.03440771), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(e2, MF4x4(0.13831837, -0.13864368, 0.15232176, 0.31198958, 0.033965178, 0.053397447, -0.30352455, -0.17199865, -0.06429645, 0.013913047, 0.10764071, -0.12238359, -0.04544379, 0.17074125, 0.024108075, -0.14521888), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(f2, MF4x4(-0.11011318, -0.0102100335, -0.37701187, -0.36465186, 0.16052358, -0.06683314, 0.16916892, 0.23348652, -0.17332914, 0.007918098, -0.055450343, 0.12134491, 0.002598775, 0.050541576, 0.16586582, -0.08609246), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(g2, MF4x4(0.055008903, -0.038048673, 0.12065314, -0.034293417, 0.026340824, 0.0635937, 0.0072025824, 0.1099919, -0.022833373, 0.06988719, 0.098066956, 0.09838032, 0.027212605, -0.10769643, 0.025036965, 0.07822364), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(h2, MF4x4(0.12550583, -0.015590264, -0.20009072, -0.2595937, -0.040573828, -0.07032441, 0.13428123, 0.0024277875, -0.103335135, -0.08461066, 0.05634581, -0.113169014, 0.05591198, -0.16420694, -0.06915715, -0.19497992), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(i2, MF4x4(0.088232726, -0.05118527, 0.119473234, 0.23262945, 0.06746001, 0.14686997, -0.25685823, 0.08349066, 0.120035954, 0.11132579, 0.1024914, 0.008478224, -0.054700002, -0.029634893, 0.050064556, -0.08939752), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(a3, MF4x4(0.022236016, -0.14602192, -0.011037687, 0.09127931, 0.14263593, 0.2303995, -0.07378528, 0.07426219, -0.25500375, 0.18845809, -0.065374866, 0.016772734, 0.02813176, 0.15021992, -0.032982655, 0.0046127643), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(b3, MF4x4(0.110158965, 0.02073459, 0.1380525, 0.017634321, -0.3546499, -0.099760525, -0.1195462, 0.057210118, -0.53130746, 0.23352407, -0.18252264, -0.19651698, -0.10013627, -0.006907238, -0.022171183, 0.023419948), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(c3, MF4x4(-0.009217382, 0.00943576, 0.005295363, 0.010542551, -0.21079898, -0.14469005, -0.19105618, 0.2098414, 0.18261504, 0.19765937, 0.044775106, -0.25939676, 0.072466746, -0.08828442, 0.066161856, 0.05692894), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(d3, MF4x4(-0.051633067, 0.019243274, 0.28932014, -0.029704608, -0.06255436, -0.4573925, -0.10963281, 0.121834375, 0.10874706, -0.093909726, 0.06983889, 0.048236616, -0.15379356, -0.06354611, -0.10668147, -0.02901699), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(e3, MF4x4(-0.044167574, 0.022249546, -0.3618917, -0.054136246, -0.105739385, -0.22325896, -0.070169605, -0.19650152, 0.07689512, -0.17047665, -0.07742679, 0.031095566, -0.01903123, -0.033752028, -0.2286711, 0.044381924), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(f3, MF4x4(-0.05709193, 0.15251294, -0.16776492, 0.09025173, 0.18235344, 0.3685535, -0.053927444, 0.10351524, -0.0938133, -0.26824594, -0.036424845, -0.106756285, -0.13051414, -0.07613318, -0.10721611, -0.13445549), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(g3, MF4x4(-0.0268394, 0.017245602, 0.1185864, 0.031915247, -0.037321728, 0.037805032, 0.13701047, 0.025731707, 0.03791209, -0.16549957, 0.08953334, -0.13901101, -0.1287722, 0.072961085, 0.06859001, 0.18934746), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(h3, MF4x4(-0.11152981, 0.13712928, -0.05714947, 0.05542204, -0.32208005, -0.015176284, 0.10014709, -0.030125491, -0.04422843, 0.12897238, 0.108573034, -0.025267191, 0.02247499, -0.058167085, -0.15205052, 0.043249656), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(i3, MF4x4(-0.12951276, -0.14417744, 0.012708804, -0.0040302873, 0.09192804, -0.092346616, -0.09659876, -0.13512622, -0.0737095, 0.002481852, 0.048459593, 0.05455724, -0.14035852, 0.07777282, 0.07471883, 0.107781895), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(na1, MF4x4(0.028793033, -0.039604917, -0.0045903274, -0.05023892, 0.04976248, -0.026074547, 0.1733191, -0.06694405, -0.12434122, 0.12477937, -0.105804294, 0.06170465, 0.33725888, -0.15944988, 0.09790923, 0.030690596), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nb1, MF4x4(0.005191585, 0.08373177, -0.018288689, 0.020527333, -0.055718876, -0.12754384, 0.17755422, 0.1597085, 0.17601304, -0.0258804, 0.16454586, 0.106551126, -0.20891763, -0.05360957, -0.24229631, -0.15886526), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nc1, MF4x4(0.03740399, -0.0043318006, -0.010840595, -0.01674406, -0.17876416, 0.09188681, -0.12203759, -0.09808559, 0.1243873, -0.184597, 0.07484877, 0.14448164, -0.15161137, 0.033237204, -0.054772068, -0.085399576), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nd1, MF4x4(0.071139924, 0.025827989, 0.021663137, -0.12484576, -0.07799051, 0.20053016, 0.014714873, -0.041652568, 0.046397317, -0.07650734, 0.06753141, 0.080667324, 0.4557549, -0.029605106, -0.25674006, -0.27842438), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ne1, MF4x4(0.16805562, -0.03722638, 0.021958483, -0.04969856, -0.15340807, -0.22158863, -0.25280216, -0.024268134, 0.085401855, 0.22427009, -0.04698029, -0.071075134, -0.10739174, 0.030285811, 0.31068414, 0.2882289), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nf1, MF4x4(-0.010069354, -0.045132317, -0.08054911, 0.19212297, -0.11246117, 0.203382, 0.10145021, 0.1476792, -0.022835081, 0.16916804, -0.018178321, 0.076025024, -0.29570428, -0.007177177, -0.1047155, -0.0178633), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ng1, MF4x4(0.076137505, 0.117270656, -0.077183075, -0.052782975, -0.08236995, 0.053947527, 0.13501388, 0.17139077, -0.2424162, -0.15007298, 0.123724684, 0.09327283, 0.19777925, 0.07314544, -0.18668725, -0.010371631), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nh1, MF4x4(0.15866037, 0.053233996, -0.026709981, -0.1574147, -0.012303242, 0.06893102, 0.031804018, 0.10116885, -0.016902728, -0.082480945, 0.05133729, -0.20160739, -0.012635841, 0.032104325, 0.00968726, -0.018941477), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ni1, MF4x4(-0.02683365, 0.14024723, 0.0020279875, 0.035137076, -0.019948762, 0.3120297, -0.018649966, -0.17814124, -0.14863688, -0.12977526, -0.09194036, 0.19637106, 0.12040974, 0.09383599, 0.10559805, -0.0319509), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(na2, MF4x4(-0.07015076, -0.07818044, 0.12413185, -0.0018199648, -0.015275738, -0.21548629, 0.046161238, -0.10475311, 0.082367115, 0.0053079966, 0.09559984, 0.039583992, -0.1681236, -0.23862287, -0.09229484, -0.12317666), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nb2, MF4x4(-0.17587087, -0.097817905, 0.08857801, 0.14012139, -0.20023742, 0.029083535, 0.056073546, -0.06810832, 0.08625035, 0.023427716, 0.1797412, 0.048568305, -0.09278378, -0.09250215, -0.12440772, 0.2587798), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nc2, MF4x4(-0.24181388, -0.016290328, -0.026988767, -0.005399553, -0.061761368, -0.0013004051, -0.1990831, -0.07799404, 0.03282008, 0.079514205, -0.07474829, -0.36701006, 0.078521594, -0.156468, 0.09041213, 0.1292482), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nd2, MF4x4(-0.21960634, 0.041841425, 0.122728646, 0.06800145, 0.07355482, 0.26123464, -0.13518283, -0.05085496, -0.099832244, 0.04960356, 0.066544525, 0.09741243, -0.10965899, -0.16163626, 0.09816793, -0.014595947), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ne2, MF4x4(0.07614604, -0.062298786, -0.07941662, -0.22525579, -0.29955792, 0.11145522, 0.123146005, 0.13863817, 0.15309983, 0.025902487, -0.08610474, -0.07598799, -0.26134565, -0.2818921, 0.0046356185, 0.007307074), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nf2, MF4x4(-0.15936229, -0.10145381, 0.058567517, 0.21258314, -0.18010478, -0.22477242, -0.039975245, -0.34447697, -0.21647838, 0.31467855, -0.0674453, -0.5146147, 0.05382176, -0.026282668, -0.24090777, 0.10222359), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ng2, MF4x4(-0.1045028, -0.027515164, 0.013251722, 0.108239084, 0.03163253, -0.030052185, 0.10836872, 0.15349132, 0.09593661, 0.0062710177, -0.19837233, -0.098303355, -0.23947543, -0.04082913, 0.16908304, -0.031784274), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nh2, MF4x4(-0.07773699, 0.30408737, 0.10054892, 0.36721498, 0.51369953, -0.11931886, -0.17019019, -0.3288588, 0.11095048, -0.29225063, -0.075574756, -0.18392691, -0.10289336, 0.06882282, 0.20403436, 0.12073833), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ni2, MF4x4(0.024539007, 0.053005982, -0.099204265, -0.084534295, -0.2587164, -0.31929657, 0.07193254, 0.18271501, -0.043669797, 0.062497724, -0.055462, 0.057130013, -0.015285072, -0.030743862, -0.07051513, -0.13783172), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(na3, MF4x4(-0.4343681, 0.35928357, -0.004770178, -0.079942055, 0.014088603, -0.20866469, -0.1378781, -0.06831558, 0.21436058, -0.08427488, 0.2455502, -0.065596916, -0.06559933, -0.027101375, 0.023555819, -0.20939256), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nb3, MF4x4(-0.37720296, -0.111260146, -0.25392932, -0.33377793, -0.17806955, -0.008747484, 0.17404033, 0.058826912, 0.0039355545, -0.18436235, 0.15803719, 0.15143508, 0.11155828, 0.09333553, -0.17960371, -0.036842924), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nc3, MF4x4(-0.087490946, 0.0959697, -0.08301798, -0.19364063, -0.00996324, 0.014655412, 0.021732382, 0.07269497, 0.012744119, 0.01542146, 0.109438084, 0.18674947, -0.05728511, 0.017406877, 0.036412247, -0.044986803), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nd3, MF4x4(0.30902067, 0.25019556, -0.079495244, -0.26099077, 0.08450634, -0.08346094, 0.004498276, -0.119334444, -0.08587327, -0.019446453, -0.1811446, -0.16136086, 0.006683898, 0.0005228834, -0.11937812, -0.2045503), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ne3, MF4x4(0.19326456, -0.052496854, 0.12926556, 0.10167019, 0.090374604, 0.07595169, -0.0048561483, 0.12414255, 0.19320521, -0.027459998, 0.08993327, -0.035830285, 0.006461366, 0.023297347, 0.0691706, -0.00831113), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nf3, MF4x4(0.13971736, 0.0788502, 0.12267767, 0.004433991, -0.053574555, -0.08087108, -0.26019198, -0.04175351, -0.13934188, 0.04144695, -0.070562504, -0.068388134, -0.1347503, -0.02173245, -0.1099242, -0.020897312), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ng3, MF4x4(0.07843604, 0.04441641, -0.016214373, -0.15351163, -0.021339556, 0.023823377, -0.01442564, -0.09113205, -0.02552644, 0.14885889, -0.16178642, 0.14472331, 0.14082494, 0.05760455, -0.11503234, -0.16907685), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(nh3, MF4x4(-0.042953692, -0.3268466, 0.13181087, -0.06399399, 0.17543526, 0.111214496, 0.07369484, -0.003378238, 0.040965978, -0.0073295045, 0.07711077, -0.033094298, -0.08758825, -0.01715938, 0.056862406, -0.010732023), conv2d_2_tf);\n\tconv2d_2_tf = MulAdd(ni3, MF4x4(-0.039256442, -0.07153648, 0.10314899, -0.1192048, -0.033410206, 0.13077301, 0.19343375, -0.07479033, 0.10759806, -0.037313893, 0.06156247, 0.021744521, -0.18148352, -0.15683053, 0.017884498, -0.11338723), conv2d_2_tf);\n\tMF4 nconv2d_2_tf = max(-conv2d_2_tf, 0);\n\tconv2d_2_tf = max(conv2d_2_tf, 0);\n\t\n\tMF4 conv2d_1_tf = MF4(-0.062293675, 0.09216847, 0.010529031, 0.03100192);\n\tconv2d_1_tf = MulAdd(a1, MF4x4(0.10368956, 0.09174666, 0.07265347, 0.009965846, 0.04307676, 0.018726716, 0.064217605, -0.024381645, 0.013237381, 0.039251406, 0.13164084, -0.05265028, -0.08619517, 0.015469731, 0.10171868, -0.11194108), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(b1, MF4x4(-0.055484463, 0.1386706, -0.22939423, -0.2222723, 0.04815343, 0.05425625, 0.08234074, 0.12962975, 0.030559294, -0.07823733, 0.12347866, -0.13917705, -0.031347297, 0.010592373, -0.38942683, -0.302033), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(c1, MF4x4(0.06968848, -0.03574659, 0.11817242, 0.044270225, 0.0481696, 0.045347195, -0.14479072, 0.06971279, 0.012434736, 0.03927546, 0.13076504, 0.032268204, 0.040274065, 0.053418823, -0.05195065, 0.1341056), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(d1, MF4x4(0.1314648, 0.08953099, -0.058160458, -0.098807305, -0.08652445, -0.19136623, -0.012327089, 0.14297265, 0.11436408, 0.031837817, -0.0038611747, 0.08295747, 0.19534546, -0.033664998, -0.51042134, -0.21606028), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(e1, MF4x4(-0.332711, -0.2260786, 0.35732532, 0.026584813, 0.16421017, 0.21153966, -0.112725854, -0.048803244, 0.059562314, -0.010458478, 0.0063304375, -0.007279937, -0.41918445, 0.10137393, -0.0989079, -0.17768846), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(f1, MF4x4(-0.22947264, 0.008074958, -0.03876367, 0.28019628, -0.18640186, 0.072562195, -0.001338717, 0.17349707, 0.13131878, 0.05085823, -0.11547487, -0.084437385, -0.18131672, 0.026830718, 0.0960529, -0.014084568), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(g1, MF4x4(0.13153158, 0.079937235, -0.14291838, -0.062477887, -0.0690248, 0.15090927, 0.060723048, -0.044703092, 0.005483621, -0.113471694, 0.048640195, -0.024538955, -0.01751092, 0.19206041, -0.1859277, -0.22007878), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(h1, MF4x4(-0.04971548, -0.38541326, -0.080354154, -0.1132633, -0.13348146, 0.11406493, 0.05543971, 0.022810424, -0.09030199, -0.053045455, -0.084034644, 0.0014670533, 0.0007018557, -0.24078067, 0.047226585, 0.08619653), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(i1, MF4x4(-0.08993396, -0.09246378, 0.11467184, 0.060891952, -0.022887891, -0.008537377, 0.13542707, 0.08030356, -0.06174077, -0.07314582, -0.111782126, -0.08939319, -0.09756803, -0.15771574, 0.073002145, 0.035939205), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(a2, MF4x4(-0.09398606, -0.118093155, 0.024832802, 0.049131367, 0.06665196, -0.039545495, -0.107865654, -0.043897964, -0.03278348, -0.111089505, 0.12056342, -0.10977613, -0.05880801, -0.08684503, -0.15480064, -0.09669209), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(b2, MF4x4(-0.12028866, -0.0130571015, 0.010480521, 0.28919983, 0.050575808, -0.07968808, -0.15499628, -0.13613448, 0.030993043, 0.13226634, -0.12666325, -0.010337325, -0.025353834, 0.017561335, -0.08171704, -0.17280379), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(c2, MF4x4(-0.0008190666, 0.017923795, -0.13926646, -0.00083633314, -0.14120303, 0.109396234, 0.026602108, 0.2108425, 0.15093753, -0.0016773659, 0.028220268, 0.09914804, -0.045055833, 0.040082425, 0.007756443, -0.04522211), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(d2, MF4x4(0.059589684, 0.04780217, 0.30785602, 0.25626636, 0.08686253, 0.11348654, 0.042249523, -0.2264382, -0.058502045, 0.05044742, 0.0031711252, -0.021721566, -0.011926813, 0.042892855, -0.08586602, -0.029168598), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(e2, MF4x4(0.09367661, -0.019030625, -0.34638473, -0.10968469, -0.16300671, 0.21311292, 0.11657136, -0.044009518, 0.10225506, -0.044505168, 0.20920436, -0.018161744, -0.018144146, 0.026626088, -0.056913715, 0.15370414), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(f2, MF4x4(-0.28757727, 0.14743091, -0.021321807, -0.048045393, -0.109708, -0.14760888, 0.15246773, -0.028329216, 0.009206364, -0.06396112, 0.12593451, 0.052947026, 0.066429235, -0.08044728, 0.0070432564, -0.057647638), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(g2, MF4x4(-0.023919886, -0.20876022, 0.05590491, 0.12671952, -0.07277091, 0.024939056, 0.03633482, -0.10239475, -0.12012349, -0.17192347, 0.014865882, 0.1858935, -0.013352806, -0.04451544, 0.0032296637, 0.09310079), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(h2, MF4x4(-0.29340369, 0.1377685, -0.018134177, -0.0819466, 0.2541578, -0.1270915, -0.12300359, 0.114513785, 0.21511158, -0.060876742, 0.07682154, 0.09775888, -0.09133818, 0.04477866, 0.058042303, -0.027626123), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(i2, MF4x4(-0.098641984, -0.09568759, 0.27307647, 0.044102278, -0.03640084, -0.10440432, -0.011212675, -0.22568303, -0.008232321, 0.14870772, -0.17107275, -0.023316732, 0.03395947, 0.14223643, -0.08063479, 0.14301774), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(a3, MF4x4(-0.08714423, -0.12230681, -0.22175795, -0.10298021, 0.0009175108, 0.19820437, 0.04215484, 0.2772454, 0.046766162, 0.023245906, 0.36313313, -0.29657102, 0.0010776661, 0.047935788, 0.113361314, -0.05614472), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(b3, MF4x4(0.15069975, 0.06458973, 0.08984772, -0.08219822, -0.37328726, -0.03008995, 0.31162828, 0.07075847, -0.13914284, -0.10216768, 0.22251949, -0.30631062, 0.17172062, 0.058428258, -0.11345689, 0.08461611), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(c3, MF4x4(0.007734305, 0.042484675, -0.15685312, -0.048171967, 0.10970874, 0.061090663, -0.08464978, 0.08347133, -0.17933917, 0.2308347, -0.053314723, 0.09323812, -0.04228206, 0.055042125, -0.046495847, -0.032692812), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(d3, MF4x4(-0.09439761, 0.03567186, -0.17220385, -0.103939146, -0.064900115, -0.16004047, 0.004621011, -0.014501001, -0.14071538, -0.05238438, -0.04519603, 0.21972013, -0.007383857, -0.07692677, -0.14034486, 0.08030412), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(e3, MF4x4(-0.22748968, 0.12067121, -0.05225513, 0.04308743, -0.081648685, 0.28658885, 0.37694585, -0.018508147, -0.019247225, 0.095557846, 0.015747357, 0.12365868, -0.076417744, -0.03912286, 0.18391648, -0.09244896), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(f3, MF4x4(-0.00221828, -0.0894836, 0.038467363, -0.019945016, 0.13546647, 0.17713489, -0.17275713, 0.08575425, -0.019129591, 0.16340882, -0.16357088, -0.0033604207, -0.06446814, -0.15712759, 0.18558913, -0.115558594), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(g3, MF4x4(-0.09995351, 0.18885328, -0.057601925, 0.01172547, -0.031203317, -0.1181948, 0.006120215, 0.25098777, -0.06316651, 0.047607217, -0.056073133, -0.029685916, 0.12195799, -0.056664392, -0.054523658, 0.03753435), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(h3, MF4x4(0.007936505, -0.021070726, 0.040594626, 0.061293513, -0.074233375, 0.10112329, -0.19424592, -0.14433385, -0.04661142, -0.09192385, 0.034151867, -0.11941847, 0.046759605, -0.15323174, 0.09908571, 0.18290807), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(i3, MF4x4(-0.012291647, 0.114136524, 0.10576901, -0.012061901, 0.2356885, 0.048024837, 0.18102467, -0.034004245, -0.06746709, 0.09405117, 0.12362687, 0.0254422, 0.22654915, 0.04224264, -0.049588405, 0.11478716), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(na1, MF4x4(-0.021690933, 0.13663062, -0.161411, 0.06806553, -0.1773275, -0.0940566, -0.18002738, 0.047475196, 0.0072157113, -0.008688586, -0.15493456, 0.022294179, 0.041401867, -0.10311516, -0.006603416, 0.059536614), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nb1, MF4x4(-0.13541889, 0.047185, -0.027699882, 0.060225613, -0.035152074, 0.05752177, -0.026204573, 0.11251955, -0.0049166707, 0.17533402, -0.15755837, 0.16124752, 0.04805776, -0.10309488, 0.15945134, 0.025226792), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nc1, MF4x4(-0.015074193, -0.094979845, 0.027753184, -0.071142055, -0.17082961, -0.06833402, 0.13620014, -0.24564765, 0.036582932, 0.13075556, 0.036705326, 0.03863992, -0.018921472, -0.0016482361, 0.13597268, -0.038188133), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nd1, MF4x4(-0.14212462, -0.1483275, 0.05649678, 0.05684924, -0.11407954, 0.13978885, 0.070467845, -0.07458527, -0.19702937, 0.23950967, -0.15242746, -0.26435548, -0.14437793, 0.21487178, 0.4991241, 0.18331984), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ne1, MF4x4(0.20045248, 0.066468574, -0.015601024, 0.012849705, -0.14952832, -0.06828453, 0.16009094, -0.09515789, -0.1071139, -0.021629127, -0.012993768, -0.022518635, 0.19255438, -0.09875012, 0.07555782, 0.0780372), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nf1, MF4x4(-0.028311213, -0.025465565, 0.020059558, -0.116105095, -0.042490575, 0.020179577, 0.010893176, -0.11184776, -0.1702318, -0.025035636, 0.008381181, 0.0586714, 0.03539251, -0.0448198, -0.056921933, -0.029987138), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ng1, MF4x4(0.049813945, 0.08434948, 0.09337763, 0.06701621, -0.061224304, -0.24754077, -0.017353527, -0.042758185, 0.013161995, -0.22947139, 0.019135898, 0.11039477, 0.16954716, -0.25619635, 0.18368678, 0.03542052), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nh1, MF4x4(-0.15430786, 0.07348774, 0.15545642, 0.20969617, 0.1067826, 0.15255202, 0.020220853, 0.09658389, -0.088782035, -0.19119574, 0.13885954, 0.15108526, -0.07552868, -0.11574438, -0.034102093, -0.031383175), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ni1, MF4x4(0.061409608, -0.00082869077, -0.08336049, -0.01866603, 0.07322213, -0.1152386, -0.004205211, -0.18793713, 0.091782115, 0.05387527, 0.069104694, 0.25387684, -0.101916246, 0.065856785, -0.020407397, 0.035098225), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(na2, MF4x4(0.06225989, -0.039721318, 0.19908188, 0.08382035, -0.024357362, 0.014932128, -0.060558856, -0.049815435, -0.03166011, 0.0339055, -0.12810327, 0.008812703, 0.06120202, 0.085533425, 0.21571258, -0.20605975), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nb2, MF4x4(-0.045329664, 0.02261115, -0.0335033, -0.058562186, -0.0099387, 0.0046313554, 0.21475597, 0.04558062, 0.17891279, 0.005057579, 0.22518916, 0.1998231, 0.09627137, -0.2318303, -0.08868813, -0.27863982), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nc2, MF4x4(-0.15865076, 0.077262044, 0.036153752, 0.07885703, 0.13166751, -0.12820594, -0.05823962, -0.2583444, -0.2245552, -0.04434666, -0.13453422, -0.27865237, 0.014107271, 0.045582164, 0.0064884513, -0.019007552), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nd2, MF4x4(0.0643133, 0.06440001, -0.14517003, -0.101694606, 0.058990445, 0.11955667, 0.45094532, 0.20261864, 0.07944409, -0.061399437, 0.022036074, 0.046660237, -0.17064287, -0.076766625, 0.25972953, 0.29821205), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ne2, MF4x4(-0.11031386, -0.05850727, 0.055557184, 0.11549242, 0.12120408, -0.33330265, 0.095613986, 0.09242419, -0.011835885, -0.19384164, -0.01893125, 0.27290896, -0.18104021, 0.044360142, 0.06759539, -0.0027218745), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nf2, MF4x4(0.19390257, -0.13378039, 0.07428329, 0.016053686, -0.18574655, 0.055462763, -0.2527128, -0.47279125, -0.17490762, 0.21626428, -0.1473371, -0.35594228, 0.054865763, -0.04086486, -0.061911695, 0.051812805), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ng2, MF4x4(-0.029701848, 0.24927482, 0.00581731, -0.10748679, -0.07500632, 0.033424605, 0.14734372, -0.18966366, 0.031880617, 0.17622112, -0.031867832, -0.10119831, -0.15391265, -0.14308685, 0.093484215, 0.18867014), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nh2, MF4x4(0.19035357, -0.19525306, -0.025621792, 0.09154427, -0.07798503, -0.22271548, 0.11034287, -0.04197031, -0.24772005, 0.43681505, -0.19703668, -0.2614237, 0.05807699, -0.2631317, -0.020604266, -0.048005704), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ni2, MF4x4(-0.08587588, 0.13374045, -0.09263761, -0.13216262, -0.11242246, -0.12541875, -0.09835177, 0.1586739, -0.21013282, 0.087373346, 0.107112356, 0.47657737, 0.0459955, -0.07181196, 0.07818155, -0.10435423), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(na3, MF4x4(-0.091803394, -0.32280564, 0.28972253, 0.12908047, 0.06683764, -0.039376236, 0.024078066, 0.18940936, -0.055246543, 0.12222864, -0.0177199, 0.09346665, 0.07164098, 0.065791056, -0.08516637, -0.10187257), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nb3, MF4x4(-0.12561126, -0.28730518, 0.190799, -0.17922764, 0.04376582, -0.08152354, -0.0690038, -0.10861494, -0.03100546, 0.10962334, -0.20492296, 0.12868984, 0.06536495, 0.08559974, 0.033028, -0.07235402), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nc3, MF4x4(-0.012734173, -0.12211726, 0.057524282, 0.015053666, -0.052275516, 0.11774483, 0.08221696, -0.024205929, 0.122006595, 0.054565493, -0.049608365, 0.02801238, 0.07593017, 0.074450806, 0.097137615, -0.008985974), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nd3, MF4x4(-0.32826158, -0.022971062, 0.37642807, 0.38614145, -0.06932448, 0.0641898, -0.09011684, -0.019884817, -0.004897904, 0.07661578, -0.050405186, -0.24849766, 0.04642452, 0.09120379, 0.26060387, -0.2533109), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ne3, MF4x4(0.09669597, -0.045555357, -0.24132517, -0.28401875, 0.11226361, 0.08378312, -0.07415474, -0.036874313, -0.001286788, 0.14013582, 0.14750466, -0.048925027, 0.13374946, 0.10844033, 0.123459235, -0.10933974), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nf3, MF4x4(-0.03275827, 0.27429518, -0.0983686, -0.010947437, -0.18409865, 0.12616666, -0.05766888, 0.07149005, -0.13777009, 0.022123039, 0.084938325, 0.015972659, 0.20145003, -0.09534558, -0.0082679195, -0.1515079), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ng3, MF4x4(0.13148536, -0.3421452, 0.08851102, 0.012056574, -0.1525749, 0.09364548, -0.02235517, -0.1775178, 0.18052714, -0.14639667, 0.07453223, 0.03912742, -0.284782, 0.023833552, 0.09671063, -0.168578), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(nh3, MF4x4(-0.24303597, -0.05585747, -0.21645154, -0.084838174, -0.15413773, -0.15403214, -0.021544017, 0.15751824, -0.027032627, -0.18457665, -0.02174098, -0.0070916233, -0.1609649, -0.32226282, -0.18423033, -0.29629233), conv2d_1_tf);\n\tconv2d_1_tf = MulAdd(ni3, MF4x4(0.1602529, 0.026087781, 0.01551678, 0.07093837, -0.007075046, -0.0061597642, -0.0057887356, -0.08935906, 0.0028665168, -0.1038671, -0.093715765, -0.035213456, -0.041290607, -0.15825188, 0.11327359, -0.20286629), conv2d_1_tf);\n\ttex4[gxy] = conv2d_1_tf;\n\tMF4 nconv2d_1_tf = max(-conv2d_1_tf, 0);\n\tconv2d_1_tf = max(conv2d_1_tf, 0);\n\n\tMF4 target = MF4(-0.049604952, -0.039514415, -0.06137416, -0.0015509313);\n\ttarget = MulAdd(e1, MF4x4(-0.02357968, 0.13800439, 0.054744735, -0.32328397, -0.2263118, -0.3222542, -0.15286992, -0.3053175, -0.20046607, 0.025345843, 0.032755207, 0.40165102, 0.03166696, 0.29110438, 0.28861988, 0.05585125), target);\n\ttarget = MulAdd(e2, MF4x4(0.11055126, -0.33034575, 0.039494887, -0.17843343, 0.35742196, 0.00032650787, 0.21049741, 0.18823248, -0.1741954, 0.27586365, -0.043366615, 0.02092058, -0.082515135, -0.15504313, 0.13261497, 0.14650741), target);\n\ttarget = MulAdd(e3, MF4x4(0.39276633, -0.031067554, -0.08830738, -0.23975314, -0.20294978, 0.030291535, 0.4623106, 0.06494191, 0.042467684, -0.28105733, -0.053258326, -0.17269841, 0.09479501, 0.11930515, 0.1258843, 0.11058792), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.18343425, -0.4381688, -0.08248827, -0.42846557, -0.08277779, 0.45192116, 0.21961756, 0.23076119, -0.2093829, -0.29050866, 0.26212537, -0.25469857, -0.4832557, -0.45126852, -0.35072148, -0.18368497), target);\n\ttarget = MulAdd(ne2, MF4x4(0.10529696, 0.5964488, 0.13258573, -0.07494986, -0.3341919, 0.19418421, -0.18307082, 0.34982273, -0.0430461, 0.21097268, 0.03212202, -0.015623122, 0.43791813, 0.16207397, 0.123477034, -0.087993294), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.01878982, 0.007308694, 0.25769314, 0.18407181, 0.00095180905, -0.2600526, -0.31043288, -0.24622385, 0.07832029, 0.05502411, 0.37793204, -0.07329948, -0.28405467, -0.15038961, 0.19259417, 0.105486296), target);\n\ttarget = MulAdd(conv2d_2_tf, MF4x4(0.047820415, 0.3303589, 0.035807017, -0.41168606, -0.2118325, -0.045765184, -0.15234827, 0.28021428, -0.2084036, -0.40200952, -0.3261011, -0.13480914, -0.06876906, -0.19167677, -0.20444186, -0.44851676), target);\n\ttarget = MulAdd(nconv2d_2_tf, MF4x4(-0.24726203, -0.0097923195, -0.23193192, 0.31947026, 0.4274281, -0.36929542, 0.10095328, -0.19663717, 0.3244895, 0.49458218, 0.24745567, 0.15722558, 0.43052208, 0.377559, 0.22543637, 0.13009055), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.01817998, 0.111477636, -0.12727399, 0.27395004, 0.19770023, -0.1636959, 0.25407487, -0.24871433, -0.08552937, 0.3223687, 0.30668882, 0.40221208, -0.20192504, 0.14656074, 0.5100356, -0.0948956), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(0.40383592, -0.043663148, 0.4813348, 0.10317451, -0.049076255, -0.022925228, 0.0872564, 0.21741754, 0.23656987, -0.22309794, -0.2260013, 0.20823886, -0.055542476, 0.016604664, -0.1964831, 0.11962174), target);\n\ttex5[gxy] = target;\n\t\n\ttarget = MF4(0.10388342, 0.00828351, 0.14884935, 0.034392886);\n\ttarget = MulAdd(e1, MF4x4(0.029635962, 0.08045753, 0.03622311, 0.06677362, 0.14780864, -0.087087184, 0.22309896, -0.1772139, -0.08716722, 0.1075154, 0.044472143, 0.021324798, 0.10346262, -0.24718447, -0.2489118, 0.4517737), target);\n\ttarget = MulAdd(e2, MF4x4(0.20637918, -0.11695054, 0.27656725, 0.009858572, -0.62555677, 0.12796827, -0.057749186, -0.02636826, 0.11764726, -0.034879886, -0.062285252, -0.048256125, 0.37146622, -0.17392562, 0.24782267, 0.3184173), target);\n\ttarget = MulAdd(e3, MF4x4(0.2624149, 0.007052751, 0.1595428, 0.26269603, -0.33775207, -0.66331345, 0.18036188, -0.25012106, -0.15003558, 0.12337829, -0.3230818, 0.06187628, 0.096601635, 0.24300486, -0.13784438, 0.27110842), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.180413, 0.039972585, 0.48966697, -0.4130023, -0.03654654, -0.27514896, -0.025462124, 0.06652415, 0.28900522, 0.035381883, 0.20655172, 0.0073647103, -0.5028713, -0.0061578755, -0.09185675, -0.52771837), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.3205473, -0.23172325, -0.20749244, 0.058195353, 0.20280065, -0.106998004, 0.08968707, 0.10981961, -0.13291806, 0.0028465164, 0.11793527, 0.11942547, 0.100123264, -0.14852245, -0.032194547, -0.118260525), target);\n\ttarget = MulAdd(ne3, MF4x4(0.004620961, -0.13271236, 0.110130526, -0.075169735, 0.35998157, -0.046072174, 0.02044828, -0.1019322, -0.038753018, -0.12328749, -0.28227237, 0.18373057, -0.23704045, 0.20384738, 0.097455874, -0.23102747), target);\n\ttarget = MulAdd(conv2d_2_tf, MF4x4(0.30397, -0.007688397, -0.2519374, -0.14401323, -0.031671453, 0.10171321, -0.18295656, -0.029794114, 0.19171898, 0.23662621, 0.09319509, -0.3479054, 0.036986895, 0.13572362, 0.1142681, -0.17851138), target);\n\ttarget = MulAdd(nconv2d_2_tf, MF4x4(-0.19525734, 0.36855492, 0.05751295, -0.12524441, 0.06309533, 0.20228319, -0.07533531, 0.26733333, -0.21407285, -0.2900094, -0.28743416, 0.18039729, -0.27968687, -0.23786859, -0.21049118, -0.006130187), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.34406897, -0.14967814, 0.56049985, -0.18166065, -0.061995413, 0.117799215, 0.3054206, 0.4034068, -0.2116504, -0.6017806, 0.004660423, 0.051566444, 0.4380975, -0.3172436, -0.09930328, -0.16182126), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.09316841, 0.036305115, -0.30209473, 0.098138526, -0.012532953, -0.050068337, -0.22571203, -0.30636647, -0.124337815, 0.07323685, -0.15504828, 0.19263308, -0.017216058, 0.34484297, -0.1460544, -0.24951003), target);\n\ttex6[gxy] = target;\n\t\n\ttarget = MF4(-0.022106458, -0.012578552, 0.016203664, 0.026009269);\n\ttarget = MulAdd(e1, MF4x4(-0.15275823, 0.31693572, 0.03429309, -0.06982273, 0.08535909, 0.019838037, -0.03189405, 0.3190016, 0.16633914, 0.48730284, -0.27923077, 0.31791112, 0.43154097, 0.005003616, -0.26277873, -0.009333685), target);\n\ttarget = MulAdd(e2, MF4x4(0.23504019, -0.12419379, 0.07217815, -0.090434305, -0.0380588, -0.14686479, -0.33812302, -0.20242776, -0.20776805, 0.24741934, -0.16489775, 0.07052134, -0.08030772, 0.23784883, -0.28709608, -0.17689173), target);\n\ttarget = MulAdd(e3, MF4x4(-0.05109775, -0.40860242, -0.003464472, -0.19893257, 0.23186824, -0.12760048, -0.22718583, 0.02299852, 0.27083093, 0.073904194, -0.056870755, -0.35324985, -0.023004858, -0.29591596, -0.020298446, -0.05753052), target);\n\ttarget = MulAdd(ne1, MF4x4(0.0035456547, -0.37682405, 0.047876693, 0.1168026, 0.015805494, -0.04388269, 0.12970346, 0.2497829, -0.009891778, 0.116980106, 0.13058232, 0.22570355, 0.13866597, 0.036246244, 0.10916998, -0.040503114), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.25300103, -0.065156855, 0.063345924, 0.11406543, -0.1902478, 0.16440767, 0.043949526, 0.43318078, -0.03932035, -0.08510957, 0.19621156, -0.045045726, -0.08339006, -0.04335483, 0.37129655, -0.22328225), target);\n\ttarget = MulAdd(ne3, MF4x4(0.16169593, 0.2758587, 0.38249364, 0.12606645, 0.4582731, 0.09374545, -0.10988087, -0.21678255, -0.004099455, -0.09436347, 0.33964127, 0.20880581, -0.06742301, -0.025149476, 0.12146305, 0.5012377), target);\n\ttarget = MulAdd(conv2d_2_tf, MF4x4(0.11523535, 0.31662583, -0.0709322, -0.066175185, 0.08868106, -0.042457394, 0.32469732, -0.1987238, 0.41399983, 0.015568244, 0.14037918, 0.2879998, -0.32157704, 0.22491854, -0.07769691, 0.2052648), target);\n\ttarget = MulAdd(nconv2d_2_tf, MF4x4(-0.299831, -0.247278, -0.2011737, -0.3759366, -0.14935663, -0.095033385, 0.06259881, -0.23891686, -0.4340098, 0.07340212, -0.0012697511, -0.16527005, 0.0814454, -0.43962866, -0.3040046, 0.06242604), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.11802704, 0.2323739, 0.13466287, -0.25053164, -0.08020803, 0.1628004, -0.030645542, -0.40872335, -0.24624921, 0.15931502, 0.40752286, -0.07906199, 0.4286516, -0.1651973, -0.07021073, 0.0867332), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.23617363, 0.053548977, -0.14130518, -0.37744048, -0.11805406, -0.13757266, -0.026939899, 0.028020354, 0.24626125, -0.06998214, -0.02793638, 0.10509643, 0.06577935, -0.17211749, -0.12747282, -0.16999653), target);\n\ttex7[gxy] = target;\n}\n\n\n//!PASS 3\n//!DESC Conv-4x3x3x24, Conv-4x1x1x48\n//!IN tex5, tex6, tex7, tex4\n//!OUT tex8, tex1, tex2, tex3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex5.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b1 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex5.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex5.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex5.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex5.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex5.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex5.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = tex6.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b2 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex6.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex6.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex6.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex6.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex6.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex6.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\t\n\tMF4 a3 = tex7.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b3 = tex7.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex7.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex7.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex7.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex7.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex7.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex7.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex7.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\t\n\tMF4 conv2d_1_tf = tex4.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_1_tf = max(-conv2d_1_tf, 0);\n\tconv2d_1_tf = max(conv2d_1_tf, 0);\n\n\tMF4 conv2d_5_tf = MF4(0.028852103, -0.003142654, 0.019121574, 0.026819304);\n\tconv2d_5_tf = MulAdd(a1, MF4x4(0.001049049, 0.017747996, -0.067229465, -0.020442853, -0.04868684, 0.09733606, -0.07313501, 0.02070675, 0.01012683, -0.034293324, -0.026002094, 0.008298949, -0.045532364, -0.069049254, 0.109774776, -0.092840426), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(b1, MF4x4(0.3071666, 0.108723, -0.018787129, 0.17321438, -0.07934712, 0.11855833, -0.032467257, -0.048425578, -0.091413595, -0.08235019, -0.050003942, -0.007800964, -0.07821158, 0.120108165, -0.15341766, -0.04518874), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(c1, MF4x4(-0.0038995466, 0.059817232, -0.13333397, 0.022390908, -0.054531172, -0.12521502, 0.061349645, 0.08832908, 0.015541151, -0.005833245, -0.103023596, -0.031728514, -0.1393958, 0.12932369, -0.024058655, -0.02949061), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(d1, MF4x4(0.10676212, -0.0919305, -0.045313094, 0.036725752, -0.2360789, 0.08090541, 0.08044168, -0.088691026, 0.05462964, -0.047420587, 0.011766264, -0.044065233, -0.09330811, -0.04302891, -0.09276843, 0.01615573), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(e1, MF4x4(0.14728056, 0.014297587, 0.20523176, -0.016391741, -0.25267518, -0.09126818, 0.14681858, 0.0720258, -0.034471154, -0.103409246, 0.029827712, 0.09607032, -0.12944661, -0.09812552, 0.19399726, 0.18891408), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(f1, MF4x4(0.0793041, -0.18886381, -0.08229493, -0.13476922, -0.034637094, -0.06667868, 0.09988945, -0.08209682, -0.07416632, 0.10529841, -0.14161663, -0.088301264, 0.0029876695, 0.11381751, 0.083498895, 0.15414985), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(g1, MF4x4(0.20285544, -0.16456522, 0.06494461, -0.013555718, -0.07797077, -0.13418226, -0.0014035929, 0.056061633, -0.024789125, -0.053674392, 0.048963223, 0.121051155, 0.064334966, -0.0482476, 0.068401285, -0.07039275), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(h1, MF4x4(0.098433256, -0.3636959, 0.2678772, -0.046356395, -0.1771877, -0.017444499, -0.06527938, 0.073921666, -0.1880833, 0.1873346, 0.10331725, -0.05711381, 0.049431477, -0.047258172, 0.13095368, -0.35352108), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(i1, MF4x4(0.10444254, -0.16424808, -0.00615067, 0.1023235, -0.122729294, -0.2563471, 0.00030699265, 0.09230543, 0.07732433, -0.03397466, -0.03141724, 0.2431111, 0.009742008, -0.07286298, -0.015188814, 0.025636861), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(a2, MF4x4(-0.06326144, -0.045018848, -0.130233, -0.015639791, -0.015171213, -0.009451374, 0.06830251, 0.07718799, 0.009820809, -0.10778585, 0.011396909, -0.067577444, 0.16482629, 0.099055305, 0.0517957, 0.008594935), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(b2, MF4x4(-0.037354734, 0.09272911, -0.11168438, 0.1708543, -0.12653585, -0.042765, 0.008014873, 0.22469266, 0.019282004, 0.0041092015, -0.029787902, 0.025127187, -0.05086034, 0.0077483514, 0.010261478, 0.07023893), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(c2, MF4x4(0.055195954, 0.004654069, -0.02118881, -0.05352797, -0.021830624, -0.010750989, -0.032053873, 0.18029462, -0.0703946, 0.06940036, 0.011578795, 0.049051903, 0.12236165, 0.1469314, -0.04752202, -0.02873477), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(d2, MF4x4(0.11799468, -0.022473548, 0.0045530205, 0.0870364, 0.1895775, -0.041058388, 0.079169616, -0.08769193, -0.012526104, 0.03904729, 0.016011083, -0.010498281, 0.08499936, -0.050380737, 0.14939919, 0.009984251), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(e2, MF4x4(0.10477428, 0.16810521, -0.1314053, 0.084377944, 0.17922944, -0.304226, 0.25293878, -0.15422472, 0.20214307, 0.10322054, -0.13431601, 0.04898287, 0.09717359, -0.07664543, 0.14711176, 0.15777126), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(f2, MF4x4(-0.027849296, -0.107415505, -0.048003152, -0.14503942, 0.16935585, -0.11120448, 0.19879252, 0.25992575, 0.10300595, 0.044460453, 0.095423825, -0.0006854256, 0.04321415, -0.042708825, 0.02633511, -0.06220348), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(g2, MF4x4(-0.004024937, 0.05021026, -0.00765448, 0.18315202, -0.078596614, -0.022813313, 0.09930163, 0.08525698, -0.0024254897, -0.06150155, 0.12159309, 0.056743085, -0.19437842, 0.02563038, -0.14668292, -0.0805431), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(h2, MF4x4(0.037370156, -0.13586049, -0.11521326, -0.07453397, -0.025900846, -0.0823091, -0.14436729, 0.14114335, 0.055820756, 0.05531836, -0.1474026, 0.10203739, 0.053665128, 0.00896543, 0.13431323, -0.12663968), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(i2, MF4x4(-0.20144333, 0.05849729, 0.06303023, -0.17678042, 0.03238696, -0.19829398, 0.12956308, -0.20013878, -0.1353999, -0.001031907, 0.10556917, -0.14760506, 0.03315909, -0.10838441, 0.16175537, -0.001477876), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(a3, MF4x4(0.087629505, -0.05908092, 0.16011593, -0.11285914, -0.4358247, 0.18938082, -0.31105244, -0.3638732, -0.0069619874, 0.029419519, -0.2156866, -0.13693112, -0.113110565, -0.09906378, -0.11164287, -0.084068194), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(b3, MF4x4(0.072181284, 0.035425037, 0.028820323, 0.12786204, 0.37121117, -0.076626934, 0.058864776, -0.20865935, -0.0014984896, 0.05978116, 0.117927864, 0.013273026, 0.088378325, 0.13492325, 0.018144222, 0.22580223), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(c3, MF4x4(0.045780275, 0.13346507, 0.056960598, -0.0019664192, -0.24231891, -0.13189796, 0.11114239, -0.07587297, 0.03099761, 0.10284658, 0.094186746, 0.04669001, -0.20374449, -0.12047404, -0.10640337, -0.03541381), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(d3, MF4x4(0.14384045, 0.12343541, -0.029074568, 0.13204664, 0.18878254, 0.115503244, -0.20217639, 0.16410889, -0.79949176, 0.5460196, -0.09889672, 0.27109572, 0.10628155, 0.13510233, -0.20859608, -0.07706875), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(e3, MF4x4(-0.11215904, 0.08981538, -0.10094039, -0.054024383, 0.2652237, -0.2002571, -0.15960355, 0.032049023, 0.007806114, 0.10592316, -0.3487021, 0.048408728, 0.10263737, -0.026020324, 0.072276175, -0.1190967), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(f3, MF4x4(-0.03184955, -0.00798831, -0.028087616, -0.010780139, -0.05444991, 0.09402867, 0.30834422, 0.14518146, -0.010965188, 0.14643683, -0.02568113, 0.068982124, 0.044459574, -0.05092265, -0.0028792082, 0.17158687), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(g3, MF4x4(0.0869746, 0.15908171, -0.0033584125, 0.049515188, -0.15995023, 0.20953654, -0.16041277, -0.08435643, 0.42034048, 0.096904315, -0.1927207, -0.0792477, 0.078221194, -0.10053459, -0.17969237, 0.08374661), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(h3, MF4x4(0.10612468, -0.23303585, -0.08996894, 0.10191982, 0.10724305, 0.1258089, -0.08111434, 0.103680536, 0.00824538, 0.2173516, -0.601468, -0.17365147, -0.09311857, -0.045947216, 0.20118287, 0.00016345571), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(i3, MF4x4(-0.07453406, 0.02476293, -0.089717, -0.14455949, -0.1427004, -0.21921235, 0.1878364, -0.023677701, -0.29442346, 0.13739492, -0.10435927, -0.35067815, 0.00956389, 0.049088918, -0.055482347, 0.1527778), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(na1, MF4x4(-0.20727113, 0.23718962, 0.17435564, -0.017858913, -0.042935595, 0.1996666, -0.059547734, 0.09735509, 0.019539079, -0.012399102, 0.057370137, 0.027493393, -0.10042333, -0.07915818, 0.07218426, 0.1309558), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nb1, MF4x4(-0.032295313, 0.07833535, 0.22808518, 0.012292011, 0.09856554, -0.01996994, -0.028461069, 0.029348027, -0.25023523, 0.21794361, 0.14906348, 0.039845698, -0.004544177, -0.031246802, 0.019103816, 0.07738693), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nc1, MF4x4(-0.15647748, -0.048666175, -0.03838509, 0.22003315, 0.048363995, -0.077338494, 0.109276325, -0.000109877525, -0.10441263, 0.18494262, -0.08754767, 0.12850273, 0.03408794, 0.15086798, -0.19896401, 0.048397515), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nd1, MF4x4(0.011858143, -0.121841036, 0.0048841173, -0.062427614, 0.14153655, 0.011297287, 0.12778129, 0.004588582, 0.021572713, 0.15850346, 0.06464319, 0.06260356, 0.0838926, 0.04272777, 0.0733926, -0.08732838), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ne1, MF4x4(0.20364462, 0.15701732, 0.053049877, -0.46085536, -0.037331745, -0.05813282, 0.036300424, 0.05660442, 0.14007641, 0.12849629, 0.08266283, -0.07872285, 0.07497584, -0.102409676, -0.12487048, -0.06305082), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nf1, MF4x4(0.26158065, -0.090300985, 0.3522249, 0.18087223, -0.06095069, -0.10725335, 0.285748, 0.15195337, -0.19382374, -0.11163994, -0.10937165, -0.05908017, 0.0042464877, -0.14594594, -0.16316739, -0.17099144), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ng1, MF4x4(-0.10028552, -0.18077525, 0.29705408, 0.12354066, 0.0198171, -0.08987044, 0.26377577, 0.075702764, 0.06952089, 0.0049671913, -0.3116211, 0.017268507, 0.37579817, -0.037516277, -0.09738986, 0.0917646), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nh1, MF4x4(0.17661515, -0.17850937, -0.0018308868, 0.18318558, -0.0013081668, -0.113424055, -0.22193146, 0.15262845, -0.13412614, -0.13704826, -0.22099695, 0.24989522, 0.0740908, -0.3789193, -0.05141985, 0.14818457), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ni1, MF4x4(0.31471825, 0.16524819, 0.03326876, -0.14611365, -0.1191457, -0.06510173, -0.13893965, -0.33106923, 0.13048746, -0.527816, 0.01877066, 0.26005507, -0.06294366, -0.24761125, -0.102864824, 0.094261676), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(na2, MF4x4(0.023637002, -0.07186282, 0.0946568, 0.13016573, 0.27244806, -0.08329611, 0.049762517, 0.14729369, 0.15868294, 0.07715838, -0.039478883, -0.06753388, 0.13460182, -0.092146814, -0.11814287, 0.12007007), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nb2, MF4x4(0.06190745, -0.023566067, 0.239366, -0.0068376404, -0.15343493, 0.043685004, -0.047154866, 0.06527902, 0.11998191, -0.2565534, -0.091910206, -0.24104144, -0.12814765, 0.18195467, 0.11766466, 0.06181653), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nc2, MF4x4(-0.06866098, 0.11969287, 0.00997188, 0.09261804, -0.14177154, -0.0052282973, 0.008734555, -0.20822202, 0.0068409014, -0.00470473, 0.031823143, -0.0601048, 0.05632819, 0.01690721, 0.01305342, -0.05824624), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nd2, MF4x4(0.20557542, -0.10924632, 0.012821291, -0.11472336, -0.012862975, -0.09720539, 0.016499901, 0.053605244, 0.2183789, -0.014083709, -0.052786104, -0.075659566, -0.15531872, -0.1454758, 0.032142643, 0.28776056), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ne2, MF4x4(-0.09832725, 0.3388722, -0.092447765, -0.16408351, -0.2557467, 0.031259898, 0.12057204, -0.018744074, -0.46363798, 0.042668946, 0.06506717, -0.25751963, 0.043604825, 0.11740889, 0.07365291, -0.027296776), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nf2, MF4x4(-0.060943104, -0.00371101, 0.13572243, 0.013030143, 0.01196217, -0.14187267, -0.016784329, -0.048273906, 0.2050283, -0.02000498, -0.069050424, -0.09851947, 0.028769497, 0.1289265, -0.0022706073, -0.00296877), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ng2, MF4x4(-0.015049836, 0.01153945, -0.006021933, -0.022156725, -0.030286482, 0.24230544, 0.040056467, -0.021735856, 0.20740065, -0.08999259, 0.006861033, -0.104062624, 0.26829463, 0.051726963, -0.12235904, 0.19572715), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nh2, MF4x4(0.12676726, 0.17367609, -0.03689342, -0.034580305, -0.006836569, -0.06386566, 0.30929026, 0.09361281, -0.06405332, 0.26401913, -0.33314535, -0.06335476, -0.10960964, 0.13062708, 0.058030583, -0.1269144), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ni2, MF4x4(0.03625719, 0.07449099, 0.021113826, 0.008309737, -0.09200202, -0.13108951, -0.0054502958, 0.19819209, -0.24836262, 0.22340319, -0.06844758, -0.22940424, -0.03410828, 0.03854127, -0.050844472, 0.019776637), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(na3, MF4x4(0.014228765, -0.013087027, -0.18055649, 0.001141047, 0.14329694, -0.008534367, 0.006927009, -0.058499523, -0.030727612, -0.07256724, 0.0025644915, 0.007111054, 0.036673337, -0.026148604, 0.120233335, 0.110904366), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nb3, MF4x4(-0.008129229, 0.047908727, -0.1769762, 0.013220415, 0.066762984, 0.06523022, -0.016525066, -0.014394631, -0.008272182, -0.029847749, -0.10351308, 0.036801845, 0.11523106, -0.055156656, 0.11873017, -0.128935), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nc3, MF4x4(0.21848068, -0.002019241, -0.06304477, 0.026670042, 0.039536465, -0.14145948, -0.06304873, 0.023532849, -0.122648045, 0.036414735, -0.037745856, -7.688992e-06, 0.059370764, -0.015019475, -0.029084614, 0.015826277), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nd3, MF4x4(-0.09427522, -0.001972529, -0.09509679, -0.104867265, 0.05705236, 0.00031401246, 0.096889675, 0.15868911, -0.033721585, 0.08299121, -0.095194876, -0.1062834, -0.029866459, -0.041780088, -0.023895228, -0.0026728562), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ne3, MF4x4(-0.27093527, -0.026471421, 0.09702481, 0.036061123, -0.1268649, 0.099340335, 0.15685195, -0.070615016, -0.13991052, -0.04212775, 0.096722156, 0.056507673, 0.02626438, 0.030435594, -0.00033173471, -0.024930432), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nf3, MF4x4(-0.21608484, 0.038410295, -0.10975598, 0.12944944, -0.034110125, 0.03908566, -0.030190451, 0.031670973, -0.018954927, 0.0726848, 0.023156218, 0.017966276, -0.09825987, 0.023912448, 0.07257811, -0.008502145), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ng3, MF4x4(0.044695053, -0.046481512, -0.098602146, -0.13273694, -0.09406325, -0.0062411693, 0.10242225, 0.025881069, 0.061662897, 0.019632077, -0.069696225, -0.14693011, 0.034227923, 0.037439592, -0.17188378, -0.19963826), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(nh3, MF4x4(-0.25531536, -0.050288115, 0.11258405, -0.24783169, -0.034263797, 0.054084245, 0.119918555, -0.027509615, 0.10056127, -0.09610037, 0.16208062, 0.005269051, 0.08660796, 0.11050934, -0.012584769, -0.0040703616), conv2d_5_tf);\n\tconv2d_5_tf = MulAdd(ni3, MF4x4(0.07649277, 0.13011539, -0.052341804, 0.07836859, 0.18562089, 0.07701519, -0.15669914, 0.007145429, 0.018427812, -0.12513049, -0.03395353, 0.14632194, -0.108091615, -0.01585824, 0.0602756, -0.11572579), conv2d_5_tf);\n\tMF4 nconv2d_5_tf = max(-conv2d_5_tf, 0);\n\tconv2d_5_tf = max(conv2d_5_tf, 0);\n\t\n\tMF4 conv2d_4_tf = MF4(-0.0542914, -0.045369092, 0.029350873, -0.018128533);\n\tconv2d_4_tf = MulAdd(a1, MF4x4(-0.032557677, 0.15826401, -0.11499422, -0.08640765, -0.09198991, -0.007192731, 0.010252954, 0.023780089, 0.15372203, -0.0009684923, 0.051660325, 0.011104123, 0.023871671, 0.005045307, 0.10722681, 0.065446004), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(b1, MF4x4(0.04723326, 0.21495502, -0.4453857, -0.020825233, 0.021379868, 0.04798187, 0.11383445, 0.08597329, 0.05730255, -0.046370696, -0.105095126, -0.03220056, -0.10122536, 0.06955123, -0.023051325, -0.04296927), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(c1, MF4x4(-0.02551809, 0.16179861, -0.15771814, -0.00045056897, 0.05842655, 0.11279471, 0.08018674, 0.05973765, 0.044070918, 0.08054599, -0.070336945, 0.05499731, -0.039118823, 0.003635353, -0.019759493, -0.040480837), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(d1, MF4x4(-0.04707628, 0.040738698, -0.013698143, -0.047391538, 0.031729057, -0.01837267, -0.10985463, -0.0028168112, -0.03167109, 0.0007989082, 0.011234699, 0.06895626, -0.12226361, 0.016290974, -0.055669673, -0.17432979), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(e1, MF4x4(-0.05069543, 0.15450205, 0.06981913, -0.377529, -0.14111535, 0.124757245, 0.021858096, 0.044034548, -0.16741593, 0.09746289, -0.045757677, -0.11644043, -0.09906484, 0.19128124, 0.061969943, -0.14589702), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(f1, MF4x4(0.12177423, 0.077437244, 0.059054222, 0.14925033, 0.016682645, -0.004765056, -0.2194741, 0.11314126, 0.2384071, -0.12049565, 0.12753354, 0.19679058, 0.03558123, 0.018636368, -0.11018761, -0.027520377), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(g1, MF4x4(-0.03618456, -0.030103968, 0.02968891, -0.00393875, -0.07128213, 0.022181263, -0.08430743, -0.027601235, -0.09228556, 0.04661313, 0.054729965, 0.052708175, 0.050483003, -0.022951633, 0.099321984, -0.043519083), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(h1, MF4x4(0.034695346, 0.10380181, -0.043013666, 0.037639238, 0.118943654, 0.027931944, 0.07628075, -0.12427217, 0.14970858, -0.065848, 0.0030750742, 0.011039123, 0.27721024, -0.055808693, 0.25105593, -0.1825985), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(i1, MF4x4(0.03627934, -0.17293514, 0.09188732, 0.11569783, -0.035355445, -0.10536353, -0.0068529076, -0.0929389, 0.09053234, 0.05907859, 0.049182277, 0.15194432, -0.09835422, 0.00061943196, 0.066343345, -0.06307589), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(a2, MF4x4(0.10120336, -0.10855617, 0.13412404, -0.018874792, 0.037988223, 0.0957435, 0.015402347, -0.08589699, -0.07694196, -0.03258571, 0.064437136, -0.0495422, 0.24836332, -0.0041739377, 0.093993485, -0.0076778256), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(b2, MF4x4(-0.20205948, 0.035698004, 0.0120531265, 0.03971649, 0.07550046, 0.047750015, -0.049045984, 0.04001014, -0.030263485, -0.0030697742, 0.05283423, -0.00014085052, -0.062447365, -0.0503476, -0.085151225, -0.04436882), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(c2, MF4x4(0.1516312, -0.073820546, -0.01047401, 0.0002717457, -0.17057727, 0.20856272, -0.09357496, -0.17346743, -0.068092465, -0.023344085, -0.03279074, -0.077289, -0.09844614, -0.035491887, 0.048796505, -0.03633584), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(d2, MF4x4(0.0073127835, 0.041834716, 0.015633723, -0.042742077, 0.08359733, -0.13898548, 0.1343008, 0.04692816, 0.051663343, -0.1277769, 0.029269615, 0.021745533, 0.09920264, 0.032076713, -0.05319438, 0.040574815), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(e2, MF4x4(0.052737534, -0.02136074, -0.18437223, 0.030766862, 0.23291707, -0.010449272, 0.032748792, 0.1304141, 0.27302903, 0.008562884, 0.13475919, 0.044446316, -0.17819557, 0.08270108, 0.06075267, -0.112788476), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(f2, MF4x4(-0.093748294, -0.004655885, -0.044859763, -0.11719146, -0.4701752, 0.09076277, -0.2283514, -0.34524822, -0.11999304, -0.010338027, 0.026785752, 0.029790966, -0.0635327, -0.024085084, -0.12074973, 0.080456585), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(g2, MF4x4(-0.023425102, -0.105786875, 0.1220016, 0.017974272, -0.12736784, -0.050550908, -0.1985566, 0.09139255, -0.18943925, -0.0067088404, -0.15007311, -0.015332959, 0.16430685, 0.006736225, -0.009263825, -0.08230126), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(h2, MF4x4(-0.15165123, 0.057155497, -0.09756418, 0.0475568, -0.14430566, 0.05169595, -0.24240975, 0.061147846, 0.0017831615, 0.028189357, -0.12519005, 0.03604646, -0.0460214, 0.05936097, -0.0213775, -0.28192145), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(i2, MF4x4(-0.019390648, 0.005514995, -0.0024649797, 0.056670878, -0.10385216, -0.05531206, 0.23233996, -0.16394126, 0.1718211, -0.08723329, 0.08580946, -0.028214762, -0.060853615, 0.0458013, 0.106201656, 0.031685878), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(a3, MF4x4(-0.105268896, 0.0106684705, -0.10355101, -0.07401398, 0.12425712, -0.21308881, 0.05200582, -0.024954682, -0.1120292, 0.07799603, -0.031506516, 0.0031533986, -0.05264893, -0.11141642, 0.107277475, 0.049987797), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(b3, MF4x4(0.08439962, -0.14181082, -0.20358182, 0.09080642, -0.061622817, 0.24017061, -0.12030436, 0.17224449, -0.0220505, 0.20025904, 0.1032571, 0.032335218, -0.09232964, -0.06172056, -0.1011141, -0.07322099), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(c3, MF4x4(-0.10896482, 0.06107763, -0.100641444, -0.018832406, 0.020139545, -0.0037260412, -0.10512619, -0.24599148, 0.014342631, 0.056689363, -0.06662091, 0.03999069, 0.00824376, 0.030449467, 0.027041748, -0.056902107), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(d3, MF4x4(-0.18174766, 0.040627997, 0.1140224, -0.20088135, 0.07404639, 0.01215843, -0.050341435, -0.0011868333, -0.5206288, 0.53214884, -0.60289955, 0.25364086, -0.05814184, 0.21600877, 0.07475344, 0.0624221), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(e3, MF4x4(-0.07710521, 0.030054979, -0.28164682, -0.13994755, 0.028757188, 0.04356096, -0.14357159, 0.2761477, -0.5300268, 0.44994202, -0.15364286, -0.18580483, 0.084563375, -0.13093601, 0.08291044, 0.017790407), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(f3, MF4x4(0.013963807, 0.0032885068, 0.0069646467, 0.03777879, -0.30103573, -0.047965538, 0.057550967, -0.3402889, 0.0026557294, 0.2289777, 0.01937088, 0.18484715, 0.083694465, -0.056240357, -0.0023172104, -0.13328342), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(g3, MF4x4(-0.05847699, 0.06990862, -0.0076244893, 0.03992696, 0.088809974, -0.059422277, -0.10557949, 0.058280375, -0.37764055, -0.19777957, -0.86350954, -0.21546844, 0.21863134, -0.074350335, 0.039010234, -0.021216504), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(h3, MF4x4(-0.18698102, -0.024641648, -0.16558538, -0.06499548, 0.10435924, 0.0030438402, -0.021636335, 0.046050593, -0.22217542, -0.14033853, -0.21516539, -0.4834089, 0.061894827, -0.024107188, 0.045805957, 0.20019397), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(i3, MF4x4(-0.0657418, 0.074276686, -0.07074239, -0.0101531055, -0.17146541, -0.016556345, -0.16196094, -0.13551502, -0.017605018, 0.065230414, 0.10717515, 0.41153327, 0.07095331, -0.05611257, -0.09297768, -0.054604497), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(na1, MF4x4(-0.051999312, 0.28559515, -0.09147715, 0.04536181, 0.077552326, 0.052161235, 0.006652824, 0.12593806, -0.07654755, 0.056134425, 0.029163264, -0.05461885, 0.04772557, 0.14073811, 0.07795857, -0.0397234), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nb1, MF4x4(-0.0698435, 0.17774913, -0.07301677, -0.14336437, -0.104051985, 0.14831689, 0.045199208, -0.1867252, 0.07530157, 0.12153924, 0.1397731, -0.026905237, 0.056165505, 0.21213025, 0.073159344, 0.03143804), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nc1, MF4x4(0.029820994, -0.079599164, 0.12901585, 0.014192698, -0.0816397, 0.02425821, 0.10938256, 0.0077257096, -0.009784561, 0.20602871, -0.07226973, -0.16234052, 0.0064664064, -0.023469927, 0.0037447219, 0.015258041), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nd1, MF4x4(-0.028296372, 0.23841251, 0.04076168, 0.061052933, -0.082375534, 0.11200519, 0.025308013, 0.1736187, 0.23024227, -0.004161287, 0.16408522, -0.0141539015, 0.01496407, -0.037708607, 0.15057993, 0.14573294), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ne1, MF4x4(0.22485349, -0.2217838, -0.011602474, 0.22668324, 0.2172098, -0.21826234, -0.09506227, -0.06592076, 0.14401191, 0.014868243, 0.41509256, 0.2799861, 0.04998898, -0.121938676, -0.29612163, 0.16926381), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nf1, MF4x4(0.009154201, -0.14300221, 0.0121250935, -0.049595118, -0.3256411, -0.07036471, -0.066481166, -0.32643607, 0.13287841, -0.096211806, -0.24969384, -0.36735064, -0.14625767, 0.07217462, 0.06205977, 0.13962744), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ng1, MF4x4(0.10122661, -0.042678952, 0.08920629, -0.022906423, -0.048781462, 0.008094098, 0.16410494, 0.01511925, 0.009355741, -0.034123767, 0.06522056, -0.04114966, 0.025140515, -0.046565775, 0.18292467, 0.009392873), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nh1, MF4x4(-0.06604219, -0.10034091, 0.10934946, 0.18707348, -0.19358878, 0.11417287, -0.024397675, 0.04772407, -0.10278711, -0.03847901, -0.025120566, 0.047323767, -0.26464674, 0.15394583, -0.042590924, -0.09511779), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ni1, MF4x4(-0.13339657, 0.13506593, 0.011463314, 0.077461444, -0.022262955, 0.06132727, -0.113292165, -0.1987806, 0.0027555283, -0.016475892, 0.14219329, -0.211625, 0.11405046, -0.12044097, -0.088240534, 0.17436995), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(na2, MF4x4(-0.08783496, 0.06564822, -0.10796846, -0.13460107, 0.10140343, 0.08105866, 0.0040176474, -0.045305755, -0.09299188, -0.18928377, -0.099694185, 0.11314726, -0.018881949, 0.04591721, 0.117965475, -0.00035760578), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nb2, MF4x4(0.043456256, 0.10901491, 0.010485461, -0.061420415, -0.04018357, 0.1689085, 0.015425885, 0.061508525, 0.069377325, -0.18156749, 0.19194232, -0.25884745, -0.036184482, -0.0069973134, 0.021037813, -0.08046543), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nc2, MF4x4(-0.044377886, 0.18098527, -0.07314578, -0.00287104, 0.038114406, -0.044841792, -0.063126855, 0.19896339, -0.09739791, -0.24212237, 0.19623765, -0.06326722, 0.062247403, 0.054567214, 0.10500492, 0.04231698), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nd2, MF4x4(0.12399143, -0.09728722, 0.06730315, -0.011540306, -0.116925925, 0.0074092527, 0.21276267, 0.068349704, -0.05713399, 0.17656437, -0.10295556, -0.12709019, 0.102335855, 0.2679535, -0.06597912, -0.022839248), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ne2, MF4x4(0.1265364, 0.16177331, -0.075765, -0.06347739, -0.056721687, 0.18794554, 0.006572088, -0.00011200755, 0.05219661, 0.21530084, -0.101604566, 0.04750483, -0.09394214, -0.11256657, 0.11389309, -0.011598962), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nf2, MF4x4(0.015922887, -0.046698473, 0.0130271325, -0.052948795, 0.16426764, 0.09934194, -0.07745314, 0.038738497, -0.040967297, 0.06423774, 0.034312535, -0.013723525, -0.0030767843, 0.041221425, 0.041528914, 0.027097305), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ng2, MF4x4(-0.13077654, 0.046842843, 0.034140635, 0.10109363, 0.20840693, -0.012975956, -0.041564208, 0.009877259, -0.033334266, -0.106034294, 0.2507187, -0.01512933, -0.008589095, 0.1849223, -0.06436464, 0.087347835), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nh2, MF4x4(0.13326278, -0.035467118, 0.12698379, -0.034838732, 0.023856519, 0.05274121, -0.09120117, 0.070493534, -0.14804247, 0.08772896, -0.1343374, -0.058013596, -0.1194792, -0.07288297, 0.074856065, 0.021033823), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ni2, MF4x4(0.023594514, -0.018284807, -0.037060708, -0.06051526, 0.13681069, 0.09436225, -0.044987947, 0.21031074, -0.14567234, 0.04987286, -0.24576813, -0.091558464, 0.0040201824, -0.045261826, 0.050834723, 0.04080285), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(na3, MF4x4(-0.12843935, 0.11059404, 0.035774253, 0.016019672, 0.13419932, -0.082884714, 0.086934, -0.027470622, -0.0055711996, 0.14726739, 0.00025540774, -0.082832016, 0.015134819, -0.1869738, -0.15580305, 0.118347436), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nb3, MF4x4(-0.03210018, -0.07439424, 0.09171389, 0.0061248797, -0.122092225, -0.0055175424, 0.060848907, 0.05447007, -0.1005626, -0.13843839, -0.11508479, 0.034595586, 0.16528612, 0.07630222, 0.10175574, -0.034656286), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nc3, MF4x4(0.05687666, -0.1130296, -0.038044114, 0.1376985, 0.02434624, -0.21984427, -0.0038558878, -0.10872551, 0.00807944, 0.019718373, 0.07016335, 0.001672884, -0.051990695, -0.04958167, -0.036594924, -0.0008506928), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nd3, MF4x4(-0.07842389, -0.0907049, 0.10945533, -0.14496571, 0.03524454, -0.12881151, -0.13281278, -0.023060825, -0.037150636, -0.0001619192, 0.07462792, 0.19251943, -0.048907887, -0.09152158, 0.077018015, -0.0076050037), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ne3, MF4x4(-0.06379491, 0.22390717, -0.044009656, -0.19816853, -0.14713046, 0.114638254, -0.008227305, -0.014490413, 0.04359834, 0.10032826, -0.17928778, -0.13981889, -0.07729277, 0.11685862, 0.21970165, -0.09117455), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nf3, MF4x4(0.21068226, 0.030921075, 0.109845765, 0.058498275, 0.015876649, -0.0067828237, -0.10064077, 0.13756661, 0.017506564, 0.041748323, 0.17195722, 0.012285508, -0.023290245, 0.07060226, 0.069730066, -0.018874977), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ng3, MF4x4(0.19153018, -0.07691863, -0.03687873, -0.069982305, -0.097453654, 0.060358603, -0.030159682, -0.048520114, 0.12498585, -0.07376571, -0.01039302, -0.099845245, 0.00042995642, 0.035783857, -0.12854497, -0.024975097), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(nh3, MF4x4(0.11177764, -0.02895167, 0.09053559, -0.24130683, -0.09276382, 0.04739869, -0.005453787, 0.031923447, 0.089385964, -0.048109047, 0.061177306, 0.117845595, 0.014615613, 0.1153759, -0.0007218852, -0.10042441), conv2d_4_tf);\n\tconv2d_4_tf = MulAdd(ni3, MF4x4(0.041179586, 0.00042151578, 0.07818137, 0.06354339, 0.0049364083, -0.055836283, -0.0073542926, 0.047470722, -0.15328479, 0.03497268, -0.17375292, 0.0006636334, -0.043640774, -0.007737031, 0.10040319, -0.09145891), conv2d_4_tf);\n\ttex8[gxy] = conv2d_4_tf;\n\tMF4 nconv2d_4_tf = max(-conv2d_4_tf, 0);\n\tconv2d_4_tf = max(conv2d_4_tf, 0);\n\n\tMF4 target = MF4(-0.02423156, 0.015124756, -0.02608139, 0.030428935);\n\ttarget = MulAdd(e1, MF4x4(0.15610647, -0.15150696, -0.076018915, 0.030773202, -0.13935511, 0.17644633, 0.028819937, 0.30125114, 0.38625193, 0.35517895, 0.0975343, 0.114022225, 0.25494647, -0.23291643, 0.29096943, 0.15063812), target);\n\ttarget = MulAdd(e2, MF4x4(-0.22949804, -0.1368772, -0.07729264, 0.08470473, -0.06426131, -0.0064847367, 0.08241476, -0.1476949, -0.13712044, -0.36110023, -0.081719294, 0.19409889, 0.05562042, 0.26609465, 0.020447321, 0.2567414), target);\n\ttarget = MulAdd(e3, MF4x4(0.03337578, 0.2905731, 0.21772428, -0.074480034, 0.071880735, 0.27764675, -0.17273173, -0.0037474795, -0.1842544, 0.21896398, -0.30134472, 0.1711769, 0.23913746, -0.0435854, -0.12745531, -0.050227556), target);\n\ttarget = MulAdd(ne1, MF4x4(0.34923258, -0.5455803, -0.2904644, -0.5446842, -0.040965725, -0.055288248, -0.50672686, -0.10309429, 0.045286313, -0.04284262, -0.19785875, -0.16594213, -0.10000842, 0.47245356, -0.32767087, 0.32854807), target);\n\ttarget = MulAdd(ne2, MF4x4(0.05952625, -0.062991776, 0.3438396, -0.08141334, -0.2488028, -0.04746144, 0.06563561, 0.45020792, -0.19996788, 0.015523991, -0.19214569, -0.24849077, -0.022107737, 0.28190804, 0.13384444, -0.12800638), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.37812218, 0.09970516, 0.015231938, 0.07226164, -0.33720142, -0.05899804, -0.0025790115, -0.17770731, 0.111127384, 0.008749534, -0.09077738, -0.060420215, -0.10196339, 0.09641038, 0.25222716, 0.12781976), target);\n\ttarget = MulAdd(conv2d_5_tf, MF4x4(0.24168618, 0.18625724, -0.012904225, -0.011732107, 0.085045695, -0.4754185, 0.10896487, 0.09179793, -0.31662637, -0.117563, 0.5133052, -0.09457646, -0.15872721, -0.09779008, 0.56810176, 0.3339073), target);\n\ttarget = MulAdd(nconv2d_5_tf, MF4x4(-0.09105348, -0.17617023, -0.21897802, -0.14157395, 0.16165406, -0.46579927, 0.24905841, 0.11579037, 0.09073764, 0.36771873, -0.29340085, -0.04271419, -0.11684365, -0.17138094, 0.12188604, -0.14749436), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.10943254, -0.17193961, -0.07027378, -0.26047203, 0.04288517, 0.21311204, 0.03997142, -0.17006959, 0.16181368, 0.28361118, 0.26655135, -0.097007245, -0.15998597, -0.09568138, -0.27558687, -0.11706871), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(0.365517, 0.5422966, -0.0013869518, 0.3447622, -0.25885904, -0.098901175, -0.048043057, 0.15867509, -0.12303401, -0.15362008, 0.270228, -0.2756776, -0.44207478, -0.0419657, 0.09387863, -0.07240854), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.15073416, -0.032387026, -0.039117433, -0.50999755, 0.073477276, -0.14495571, 0.15120687, -0.3443857, -0.29039595, -0.16189122, 0.14190345, -0.10934344, -0.21965231, -0.45768484, 0.11907852, 0.5091087), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(0.23260471, 0.16441877, 0.16760987, 0.10740154, -0.21663232, -0.10124566, -0.20843595, 0.066555224, 0.24608357, 0.16345865, -0.11965141, 0.18451719, 0.41683537, -0.044497896, 0.39102596, -0.11944608), target);\n\ttex1[gxy] = target;\n\t\n\ttarget = MF4(-0.0038817346, -0.052502215, 0.008882693, -0.017785465);\n\ttarget = MulAdd(e1, MF4x4(-0.12407633, -0.027812717, 0.23094666, 0.060302667, -0.16624144, -0.0007371851, -0.28186718, 0.22369424, 0.022404855, 0.09096415, 0.0017822908, 0.336001, -0.09130467, 0.034111694, 0.19113103, -0.14513424), target);\n\ttarget = MulAdd(e2, MF4x4(-0.014768806, -0.31290373, 0.015769936, -0.13507901, -0.010203078, 0.4945444, -0.01088852, -0.1582938, -0.14903755, -0.1840089, -0.009966903, -0.19425109, -0.21303283, 0.26285252, -0.046254523, -0.15465552), target);\n\ttarget = MulAdd(e3, MF4x4(0.07533467, 0.26080438, 0.024856985, 0.34277654, -0.3129344, 0.30575162, 0.06931557, -0.044698272, 0.18042412, 0.45999247, -0.5192437, 0.022618707, -0.020097036, -0.27706465, -0.0050434433, -0.12770803), target);\n\ttarget = MulAdd(ne1, MF4x4(0.098648146, -0.21701503, 0.10266521, -0.085537605, 0.02402345, -0.28643832, 0.19378376, -0.12658586, 0.115897186, 0.01580828, 0.11827048, 0.29019687, -0.19341177, 0.09564265, 0.03476779, 0.11699004), target);\n\ttarget = MulAdd(ne2, MF4x4(0.058346223, 0.25530934, -0.026972264, 0.3190419, 0.12263199, 0.124316074, 0.04734691, 0.011293402, -0.17419139, -0.15893947, 0.093723476, 0.23282392, 0.19400646, -0.0533148, 0.026266033, 0.19663234), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.06663804, 0.20435949, 0.044924624, -0.24982749, 0.20327586, 0.12442739, -0.3155765, -0.18541007, 0.18991531, -0.19276267, 0.21697456, 0.03178544, -0.3381796, -0.15325621, -0.25820518, -0.07297032), target);\n\ttarget = MulAdd(conv2d_5_tf, MF4x4(0.098007046, -0.17018083, 0.3390076, -0.2280134, 0.12989196, -0.044336785, -0.10702673, -0.37464848, 0.028437488, 0.24224928, -0.107826136, 0.0031239046, -0.34256136, -0.17936559, 0.091159485, -0.054418396), target);\n\ttarget = MulAdd(nconv2d_5_tf, MF4x4(0.053965975, -0.17428857, -0.43524495, -0.15119378, -0.25487635, 0.16371927, 0.1467712, -0.08216164, -0.5624722, -0.11886804, -0.058240388, 0.17669299, -0.15173754, 0.13094892, 0.39045286, -0.017048221), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(-0.15798661, -0.36355045, 0.1957264, -0.05392931, 0.098283805, 0.14677107, 0.16887192, -0.11125151, -0.113571666, 0.15960959, -0.09331763, -0.032195523, 0.17286941, 0.33965907, 0.09051416, -0.25542957), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(0.16866244, 0.05636189, -0.100324616, 0.20495924, -0.102705345, -0.08387417, -0.09328024, 0.21541446, 0.1430065, 0.0308464, -0.0793588, -0.029477509, -0.28854427, -0.29555637, 0.33754608, -0.18144317), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(-0.11338383, 0.019528843, -0.24414338, -0.36290777, 0.54908705, -0.083018646, 0.007534378, -0.1406417, 0.37853354, 0.09911941, -0.047861155, -0.3186758, 0.2125856, -0.114667036, -0.07411896, 0.050717812), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(0.2961511, 0.28937215, -0.36593223, -0.16141813, -0.087650776, -0.47516292, 0.0052091824, 0.033959586, -0.06072628, -0.0012637508, -0.037578013, -0.35235298, 0.11726439, 0.6064031, 0.34058803, 0.45300734), target);\n\ttex2[gxy] = target;\n\t\n\ttarget = MF4(-0.013587518, 0.049618572, -0.065549955, -0.007242324);\n\ttarget = MulAdd(e1, MF4x4(-0.21563801, -0.12204513, 0.31932783, 0.28290224, -0.17011476, -0.06448831, 0.004365267, -0.07169507, 0.21165244, -0.07712424, 0.14979824, 0.2240992, 0.48357385, -0.015724417, -0.3836641, 0.07599027), target);\n\ttarget = MulAdd(e2, MF4x4(-0.20743755, -0.119118474, 0.1009234, -0.2842955, -0.24531132, 0.062108602, 0.11733637, 0.06687575, -0.065953426, 0.15715389, 0.21475503, -0.1019138, 0.08085453, -0.24522887, -0.108375534, 0.29179853), target);\n\ttarget = MulAdd(e3, MF4x4(0.16713834, 0.030504826, -0.2423963, -0.41885766, -0.20249867, -0.061683156, -0.14999944, 0.54505223, 0.16486095, -0.023248592, -0.17566164, 0.089543514, -0.1884646, 0.15263423, 0.14438081, -0.21730141), target);\n\ttarget = MulAdd(ne1, MF4x4(0.37399703, 0.2731133, 0.11279373, 0.004775496, -0.19443156, -0.071899086, 0.17512012, -0.11265631, 0.01926881, -0.31321192, -0.32160205, -0.23714963, 0.097321026, 0.13937393, -0.28038052, -0.046872586), target);\n\ttarget = MulAdd(ne2, MF4x4(0.124041334, 0.083966166, 0.13945055, 0.087915726, 0.11154068, -0.09223973, -0.012948238, 0.16114026, 0.13717382, 0.11968761, 0.076536775, -0.15866219, -0.19017774, -0.11172013, 0.024816172, 0.096302085), target);\n\ttarget = MulAdd(ne3, MF4x4(0.081017025, -0.1537902, 0.193927, 0.22226687, 0.441012, 0.18478638, 0.30040395, 0.032401927, -0.13839063, 0.017778423, -0.42750338, -0.19760555, -0.21953818, -0.2148397, -0.084683254, 0.20916465), target);\n\ttarget = MulAdd(conv2d_5_tf, MF4x4(-0.3921892, 0.2123992, 0.14027761, 0.10175143, -0.11134986, -0.16432697, -0.1097465, -0.21807413, -0.09732297, -0.11108596, -0.39636138, -0.06654249, 0.18766358, -0.0061503067, 0.1286225, 0.2418667), target);\n\ttarget = MulAdd(nconv2d_5_tf, MF4x4(-0.0039234986, 0.17088562, 0.12906016, -0.13476452, -0.09124947, 0.3098052, 0.09895542, 0.18631962, -0.06776231, 0.19485205, 0.14722902, 0.32147923, -0.1811334, 0.15313488, 0.0796922, 0.0012897709), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.032229863, 0.025498863, 0.06695979, 0.019412167, -0.16543043, -0.12314033, 0.112201385, 0.16554663, 0.13644108, 0.3098045, 0.081390016, -0.006008416, -0.016406069, 0.22883923, 0.22282913, -0.13947442), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(0.010251363, 0.08210024, -0.33465254, -0.012109372, 0.027115503, 0.1481351, -0.081793204, -0.20716506, 0.0056828605, -0.30995828, 0.11498873, 0.15678942, -0.061227474, -0.14681229, 0.1498136, 0.11219651), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.21796124, -0.12195326, 0.44734144, -0.124715045, -0.05986958, -0.25252253, -0.13802508, 0.16756216, 0.28327593, 0.38355786, -0.27178785, -0.19969118, -0.26010805, -0.074593216, 0.10679648, 0.15610766), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.07648412, -0.18866923, -0.2592641, 0.32486007, -0.6200149, 0.09312683, 0.42827863, -0.2703639, 0.08144911, -0.054994784, -0.24911343, 0.41974616, 0.036914464, -0.32325324, 0.012920313, -0.48379797), target);\n\ttex3[gxy] = target;\n}\n\n\n//!PASS 4\n//!DESC Conv-4x3x3x24, Conv-4x1x1x56\n//!IN tex1, tex2, tex3, tex4, tex8\n//!OUT tex9, tex5, tex6, tex7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = tex2.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\t\n\tMF4 a3 = tex3.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex3.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\t\n\tMF4 conv2d_1_tf = tex4.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_1_tf = max(-conv2d_1_tf, 0);\n\tconv2d_1_tf = max(conv2d_1_tf, 0);\n\t\n\tMF4 conv2d_4_tf = tex8.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_4_tf = max(-conv2d_4_tf, 0);\n\tconv2d_4_tf = max(conv2d_4_tf, 0);\n\n\tMF4 conv2d_8_tf = MF4(-0.020329567, 0.07771538, 0.06740593, -0.00038238944);\n\tconv2d_8_tf = MulAdd(a1, MF4x4(-0.11553467, -0.14921814, -0.085377395, 0.10231987, 0.08155549, 0.07075523, 0.012124212, 0.013545821, 0.103393115, -0.007523045, 0.060739517, -0.05890024, 0.21902815, 0.020522034, -0.1402768, 0.1280077), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(b1, MF4x4(0.051253397, -0.040904667, 0.1898603, -0.11879134, 0.069219105, -0.04280286, -0.022459755, 0.14305754, -0.063906856, 0.21501009, 0.0023572869, 0.09840124, -0.072510734, 0.057598237, 0.06159614, -0.13078417), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(c1, MF4x4(0.09612547, -0.11506342, -0.0017697238, 0.082210004, 0.14244868, -0.018724512, 0.12827, -0.011984352, 0.08484893, 0.0534688, 0.06480922, 0.14134778, 0.0876346, -0.010892883, 0.15595037, -0.040623467), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(d1, MF4x4(-0.15201004, 0.0093916925, 0.25506935, 0.003084567, -0.06869725, -0.27494308, 0.12937209, -0.12043822, -0.1918611, -0.09398222, 0.045312967, -0.1111442, -0.1376949, 0.0053297062, -0.28389412, -0.1396928), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(e1, MF4x4(-0.12742004, -0.23415208, 0.12804613, -0.1406368, 0.09349193, -0.12212758, -0.05245734, -0.39274624, 0.23036338, 0.04170077, -0.12391477, -0.00871988, 0.012228075, 0.31633002, -0.17377669, -0.124939), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(f1, MF4x4(-0.01582657, 0.018224325, -0.01147676, -0.09984998, -0.026615107, -0.21468964, 0.21078119, 0.19190042, -0.096901044, -0.041285027, -0.014912263, 0.17798825, 0.06570931, 0.09232608, -0.1068993, 0.089612365), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(g1, MF4x4(0.051225413, -0.07643113, 0.058832865, 0.083958775, 0.11160564, -0.14167392, -0.021870648, 0.10238029, 0.047018003, 0.11449065, 0.08001371, -0.06804109, 0.033969186, 0.10051381, -0.0008517809, -0.07459736), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(h1, MF4x4(0.09263853, -0.09833199, 0.042132426, -0.13103375, -0.03731804, -0.039324153, 0.10190401, 0.024146391, 0.110644914, -0.12685625, -0.12852249, 0.021824492, 0.0784485, 0.11471671, -0.09116125, 0.010305502), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(i1, MF4x4(0.005317984, -0.055282168, 0.09082919, -0.10774655, 0.21394931, 0.0045357225, -0.06699662, 0.2507622, 0.15671767, 0.11952803, -0.06123182, 0.13399701, 0.046645127, 0.0026899239, 0.022635492, 0.07161002), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(a2, MF4x4(-0.017425103, 0.12552156, -0.093341894, -0.071356304, 0.15947455, 0.24979044, -0.03843421, 0.14001197, 0.15455416, -0.05550835, -0.011375887, -0.07661705, -0.12418336, 0.056913756, 0.16633298, 0.11513766), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(b2, MF4x4(-0.08778774, 0.057353538, -0.092138395, 0.002837398, 0.22633068, 0.120333284, 0.09834124, 0.05738123, 0.059130516, 0.22035405, -0.024255643, 0.02477418, 0.04645929, 0.39426094, 0.276884, -0.01479481), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(c2, MF4x4(0.18796739, 0.083501674, 0.07283311, 0.06415875, -0.024382524, 0.04679669, -0.15093789, -0.22831221, 0.058881074, 0.16446854, -0.028955745, 0.1956661, 0.0516941, 0.16135721, 0.11951658, 0.10451706), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(d2, MF4x4(0.008279574, 0.23456147, -0.12539841, -0.17107405, 0.12736088, -0.028486755, -0.18606788, -0.15545112, -0.025036227, 0.028735701, 0.17332946, -0.1413287, 0.050435208, -0.07583189, 0.14276801, 0.08007638), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(e2, MF4x4(0.23048489, -0.045157567, -0.014840823, 0.041994587, -0.0002087858, -0.01711496, -0.08994919, -0.05393212, -0.048546836, 0.18694918, -0.014523763, -0.14133967, 0.02896907, 0.08478857, 0.020594146, -0.0013243662), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(f2, MF4x4(-0.1141037, -0.11394802, 0.11164606, 0.12330282, -0.044497687, -0.06207866, 0.08016056, 0.16055691, -0.062488995, 0.051081542, 0.086364634, 0.10802774, 0.16742289, -0.08850773, 0.26072827, -0.34441397), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(g2, MF4x4(0.06775539, -0.19385163, 0.12488108, 0.11025669, 0.028568348, 0.051090416, -0.15175076, -0.17447716, -0.14535129, -0.15599817, -0.10742375, 0.23767987, -0.071634814, -0.19241351, -0.052424364, 0.105806515), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(h2, MF4x4(-0.044398658, 0.0027700714, -0.22429284, 0.11238373, -0.081747256, -0.016608216, 0.012278578, 0.036800906, 0.015081323, 0.12504977, -0.05880422, -0.05670147, -0.051358018, 0.03139849, -0.0058919964, -0.029613987), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(i2, MF4x4(-0.05326926, -0.06667389, -0.15082167, 0.011100974, -0.17428419, 0.06436674, 0.12850241, 0.07432186, 0.08191501, 0.24600182, -0.085727975, -0.22370532, 0.15681425, -0.112885654, 0.10803866, 0.09235784), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(a3, MF4x4(-0.15705872, -0.1011224, 0.11024848, 0.100342564, -0.112648144, -0.18259776, -0.0134320175, -0.19909476, 0.09715426, 0.015931793, -0.13415024, -0.1476672, -0.07625902, 0.11680044, -0.02269237, 0.013758246), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(b3, MF4x4(-0.24389952, 0.1949585, -0.08155146, -0.14432955, 0.061777957, 0.0053770593, 0.11755161, -0.053200334, -0.18301581, -0.015372121, -0.10212801, 0.27215135, 0.089837484, 0.011281987, -0.1765269, 0.060139008), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(c3, MF4x4(0.1613523, -0.051561244, -0.08003759, -0.15677674, -0.010480271, -0.05442542, 0.03414788, -0.054194316, -0.087549254, 0.22978279, -0.0047125067, 0.16779551, 0.0654713, 0.055772237, -0.009877759, 0.04076752), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(d3, MF4x4(-0.018052207, -0.07168355, -0.1447087, 0.2920458, 0.1345294, -0.0847823, 0.0014948811, -0.10205125, -0.044011697, -0.16249846, -0.052916005, -0.0181699, -0.08360677, -0.06418388, -0.036664434, -0.15985154), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(e3, MF4x4(-0.0043584667, 0.1973149, 0.07195116, 0.07608803, -0.10798404, 0.11076036, 0.23318382, -0.23839737, -0.29880977, -0.03647466, -0.13977784, -0.27129006, 0.14539374, 0.003516734, -0.17389128, -0.14548092), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(f3, MF4x4(-0.039712217, -0.14402422, 0.115726, 0.026172435, 0.088555016, 0.07606563, 0.047167692, -0.048009936, -0.19357018, 0.01590195, -0.08144182, 0.11633417, 0.044445038, -0.038849603, 0.02644488, 0.12953997), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(g3, MF4x4(-0.2535649, -0.09789916, -0.059466388, -0.17749946, -0.024909042, 0.07494422, -0.0817595, 0.20722246, 0.049061295, -0.26182574, 0.11551785, -0.11284367, -0.19183765, -0.075118415, 0.023913708, -0.13905819), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(h3, MF4x4(-0.009345336, 0.06655174, -0.002273717, -0.06538255, -0.015212964, 0.039716627, -0.08802585, -0.112940565, 0.018324325, 0.24168438, -0.2545027, 0.025853468, -0.11133557, -0.028638441, 0.026320668, -0.09357033), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(i3, MF4x4(-0.23745783, -0.032814, 0.2784286, -0.04626241, -0.02654139, -0.018567635, -0.0013748549, -0.064650096, 0.08974625, 0.04735343, -0.027304498, 0.14134395, 0.009515457, -0.0011779714, -0.001755572, 0.008599811), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(na1, MF4x4(-0.053202473, -0.17543721, 0.03065013, -0.11342283, 0.13609491, 0.15735649, 0.040357295, -0.062337715, 0.060803644, -0.0032487542, -0.13659185, -0.09013045, -0.058906827, -0.116660595, 0.03664988, 0.059270184), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nb1, MF4x4(0.21752366, -0.06447607, -0.083456226, -0.06617954, -0.013684511, -0.1191609, -0.2506009, -0.08164425, 0.1306491, 0.19933657, 0.13410534, 0.09191758, -0.039843913, -0.06834293, 0.08471115, -0.09353382), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nc1, MF4x4(-0.027393917, -0.08497713, 0.26017472, 0.2136785, -0.1488196, -0.07492567, 0.14468898, 0.16119008, 0.0121641755, 0.22242029, -0.06302512, 0.062499605, 0.06213177, -0.09802615, -0.30932772, 0.011748043), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nd1, MF4x4(0.1187535, 0.04582557, -0.12194581, -0.039476555, 0.20283094, -0.10453671, 0.09578921, -0.22217935, 0.2739068, 0.09089512, -0.3268319, 0.17347647, -0.08915248, -0.13531092, 0.14857613, -0.07792796), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ne1, MF4x4(-0.082583435, 0.16037074, 0.034193352, -0.07133332, -0.0669728, -0.24518156, 0.11620159, -0.10171298, -0.03303509, -0.0028717325, 0.0760564, -0.07741538, 0.046745025, -0.25254723, -0.01662034, 0.055250034), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nf1, MF4x4(0.12526712, -0.0023898773, -0.3012884, -0.047304068, -0.09815741, 0.013686822, -0.050375015, 0.14987841, -0.038195454, 0.040165856, 0.014663741, 0.16414583, -0.15489048, 0.0926139, -0.21309514, -0.1200608), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ng1, MF4x4(-0.09133431, -0.16783749, -0.062135316, 0.018470682, 0.022288319, -0.02211177, 0.13391319, -0.18012549, 0.49915206, 0.13974468, -0.08988157, 0.12178317, 0.0401673, 0.053748768, 0.019889776, 0.03453906), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nh1, MF4x4(0.14379664, 0.08435809, 0.036211815, 0.07440852, -0.06631962, -0.12839338, 0.14946012, -0.21335278, 0.34956563, 0.5433695, -0.2727362, -0.086059555, 0.15091617, -0.1394221, 0.19740397, 0.14155756), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ni1, MF4x4(-0.020419724, 0.07860248, -0.25041556, 0.043661647, -0.018286234, -0.059268583, -0.018467212, 0.04894847, -0.06933085, 0.31178948, -0.11954371, -0.0636989, 0.07150373, -0.04530066, -0.0018285213, 0.019425247), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(na2, MF4x4(0.09962638, -0.17088315, -0.06602017, -0.06087763, -0.1418266, -0.13101861, -0.13441323, -0.246784, -0.11813881, -0.28987116, 0.0533919, 0.058272794, -0.005445841, 0.015091582, 0.20249642, -0.105762914), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nb2, MF4x4(-0.21612363, -0.1450863, -0.23284402, 0.006895393, -0.017744822, -0.20156701, 0.012746878, 0.018686332, 0.07711055, -0.10632525, -0.12213612, 0.051344417, -0.0141962785, -0.08607468, -0.05173791, -0.012742015), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nc2, MF4x4(-0.35659614, 0.06504701, 0.0072779786, 0.3384698, -0.14741105, -0.107767306, -0.14098823, 0.22308472, -0.08386747, 0.09358457, 0.052461777, 0.16237038, -0.0059022917, -0.088671595, 0.14027567, -0.04549793), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nd2, MF4x4(-0.23274305, 0.087585405, -0.006931044, -0.23876844, 0.08388762, -0.3022666, -0.16896221, 0.06452799, 0.2715658, -0.10732195, -0.057401773, 0.11985068, -0.06397641, -0.04235397, -0.026778454, 0.21212392), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ne2, MF4x4(0.0082654, 0.28741485, -0.14546123, 0.20393674, -0.02755474, -0.120006405, 0.3581759, 0.12956442, 0.009266114, 0.012998164, 0.032407217, 0.06048391, 0.041528724, -0.13716324, 0.10482829, 0.084386185), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nf2, MF4x4(-0.11990044, 0.092382684, -0.27219963, 0.15899557, -0.001977273, 0.120091155, 0.046375066, -0.21674563, 0.055842437, 0.07407933, 0.123498544, -0.08587901, 0.06925744, -0.07803027, -0.18120557, -0.0013798468), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ng2, MF4x4(-0.025172636, 0.0014970741, -0.12216828, -0.07777998, -0.11570999, -0.2672482, -0.04927161, 0.047932815, 0.017598571, 0.06150582, -0.006943665, 0.06608355, 0.09816235, -0.02132959, 0.022629065, -0.11914383), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nh2, MF4x4(-0.03462315, 0.0662906, 0.043817297, -0.09336832, -0.02393236, 0.12857129, -0.08293834, -0.079446144, 0.07298153, -0.22665861, 0.19360217, -0.027094053, 0.067512356, 0.054872043, 0.07353051, -0.019753326), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ni2, MF4x4(0.052837294, 0.122079946, 0.10026166, -0.16611442, -0.20202795, 0.10773466, 0.016957153, -0.06257964, 0.065463126, -0.0070094382, 0.0057103466, 0.0263681, -0.083057486, 0.011921135, 0.18715331, -0.009138652), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(na3, MF4x4(-0.039395697, 0.047360536, 0.08876623, -0.051131938, 0.079491556, -0.062068135, -0.11143306, -0.1600982, 0.1182525, 0.0990501, 0.032290936, 0.16515383, 0.048210137, 0.27581617, 0.2143776, -0.26727012), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nb3, MF4x4(0.009885355, -0.10188308, 0.014354376, -0.07466153, -0.09686006, 0.03712243, -0.07547052, -0.2513815, -0.1224751, 0.28383356, -0.11245158, -0.0022227417, 0.10997654, -0.12797359, -0.026750803, -0.15781246), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nc3, MF4x4(-0.03825075, 0.0119200265, 0.13641061, 0.08023444, -0.05399191, -0.029703232, 0.11449091, 0.104263976, 0.13190906, 0.03559845, 0.00035285854, -0.24578363, -0.030404888, 0.03632663, 0.2665158, 0.287037), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nd3, MF4x4(0.19444078, 0.04411847, 0.10453107, 0.16204067, -0.10203096, -0.1057438, -0.10478279, -0.10320498, 0.0060342676, 0.20314808, -0.080608025, -0.13728383, 0.23798111, 0.03982377, 0.0018392511, -0.17587116), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ne3, MF4x4(0.093861975, -0.037806403, -0.023811158, 0.08989214, 0.16903597, -0.11738837, 0.057141513, 0.03039443, 0.07186046, -0.16815007, 0.041725967, 0.023349155, -0.21743254, -0.054814734, 0.21988024, -0.19913116), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nf3, MF4x4(-0.098907694, 0.12669978, -0.022410035, -0.09411821, -0.037412155, 0.04395231, -0.15797623, -0.14484851, -0.036790654, -0.038002916, 0.16846262, 0.21878582, -0.053109415, -0.03769754, -0.24775061, -0.010048842), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ng3, MF4x4(-0.12894969, 0.0033566963, 0.030691003, 0.033040218, -0.08500356, -0.043196633, 0.06903723, -0.17297482, -0.102706455, 0.13380836, 0.20812829, -0.054975122, -0.058504406, -0.08924625, 0.0967954, -0.12462231), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(nh3, MF4x4(-0.020506827, 0.040906876, 0.15277289, -0.11496513, 0.19803853, 0.011656168, 0.0041951393, 0.16394733, -0.052599292, -0.2028797, -0.012671829, 0.12447954, -0.042609632, 0.18015629, -0.047704864, -0.20819715), conv2d_8_tf);\n\tconv2d_8_tf = MulAdd(ni3, MF4x4(-0.04611932, -0.04080319, 0.1732811, -0.16310379, -0.0759677, -0.012633483, -0.12658887, -0.10228954, 0.11699648, 0.020952728, -0.1922721, 0.079663426, -0.017287953, 0.050658427, -0.061943304, -0.26140955), conv2d_8_tf);\n\tMF4 nconv2d_8_tf = max(-conv2d_8_tf, 0);\n\tconv2d_8_tf = max(conv2d_8_tf, 0);\n\t\n\tMF4 conv2d_7_tf = MF4(-0.034254678, 0.047492404, -0.00038721046, -0.00072104816);\n\tconv2d_7_tf = MulAdd(a1, MF4x4(0.09670644, -0.04566203, -0.10664036, -0.11654977, 0.10353238, -0.026668113, -0.06772906, -0.058057647, -0.04721855, -0.019877478, -0.16225834, -0.18661498, -0.1137224, 0.01452415, 0.09002202, -0.07991262), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(b1, MF4x4(0.12247382, 0.10237518, 0.04044118, -0.04867563, 0.106729075, 0.19503647, -0.01294371, 0.12316606, 0.08497549, -0.01606401, 0.031219587, 0.1474753, -0.14370713, -0.24351072, -0.17444824, 0.12567697), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(c1, MF4x4(-0.05373204, -0.11406721, -0.04307548, -0.0011615923, 0.09172633, -0.034839034, 0.12179155, -0.032049768, -0.036665026, 0.02375685, 0.01977139, -0.115673535, -0.065757565, 0.12521514, 0.03739438, -0.012122441), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(d1, MF4x4(0.0037090098, -0.09165263, -0.22216173, -0.09436383, -0.018459387, 0.15764487, 0.106846556, -0.15703869, -0.1056327, 0.100443825, 0.15728104, -0.07118126, -0.071113996, 0.07175751, 0.1066827, 0.015554562), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(e1, MF4x4(-0.08138076, -0.005017353, 0.0024575114, -0.0280491, -0.1689416, -0.24320668, -0.07413122, -0.026848925, -0.17659375, 0.095876895, 0.1875987, -0.0052445224, 0.0041429237, -0.13173698, -0.21236134, 0.14331093), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(f1, MF4x4(-0.023982342, -0.028810123, -0.1591679, -0.02026218, -0.16651444, 0.050990265, -0.1640659, -0.109770395, -0.06517823, 0.06647583, 0.09519326, -0.14313333, 0.061294477, 0.066543005, 0.12260083, -0.1436599), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(g1, MF4x4(0.07363797, -0.07069135, -0.01332299, -0.1166729, -0.17299873, 0.10319499, 0.17256232, -0.15059224, 0.12490272, 0.03816397, -0.07081764, -0.0005555199, 0.009463498, -0.080442056, 0.05372971, -0.01984048), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(h1, MF4x4(0.07747191, 0.038767997, -0.042611655, -0.025650622, -0.20976418, 0.11478602, 0.05521954, 0.03552756, 0.012396808, 0.10836491, 0.01147957, 0.17223893, -0.09354668, -0.061399113, 0.03731426, -0.095968515), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(i1, MF4x4(0.0029518164, -0.07522048, -0.30731654, 0.14996396, -0.09563301, -0.1635997, 0.16482228, -0.33490175, 0.034455117, -0.124511935, 0.003454064, -0.011791387, -0.08124914, -0.020552732, 0.14202276, -0.053646516), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(a2, MF4x4(0.029005067, -0.019747132, 0.041804817, 0.10725602, 0.09535564, 0.17670439, 0.18999198, 0.06499296, 0.09519827, -0.09794806, 0.10868586, -0.038871128, -0.092565574, -0.018548176, 0.028203959, -0.050549477), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(b2, MF4x4(0.10629401, -0.01204608, -0.0766338, 0.112705976, -0.103695825, 0.10200874, 0.008448839, 0.017780313, -0.024469525, 0.1860687, 0.14225325, 0.15677285, -0.14190355, -0.22543404, 0.024092557, -0.2790124), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(c2, MF4x4(0.08649951, 0.040031336, -0.010628009, -0.04257323, 0.052871518, 0.06654039, -0.07866483, 0.09136843, -0.10960993, -0.029104995, 0.18752916, 0.022354944, -0.15167497, -0.04915799, -0.03720373, 0.18194139), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(d2, MF4x4(-0.029030664, 0.063362755, 0.010331715, 0.034228537, -0.010749333, 0.026652085, -0.06266523, -0.047827587, 0.19567958, -0.07156196, 0.080418445, 0.040099807, 0.06901692, -0.10262759, 0.10190994, 0.1662688), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(e2, MF4x4(-0.04938947, 0.20808902, -0.012551209, 0.13833791, -0.08467056, -0.06768094, -0.0035055066, 0.2141383, 0.011813273, -0.094283104, -0.11627318, 0.0035407832, -0.16360888, -0.04307167, 0.18481791, 0.07308102), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(f2, MF4x4(0.058353335, 0.09541393, 0.013101275, -0.081891365, 0.08742119, -0.005137093, 0.025961146, -0.037318625, -0.14933549, 0.06090928, 0.12738119, -0.10817076, -0.13165309, 0.16108744, -0.13503371, 0.15482368), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(g2, MF4x4(-0.034848627, -0.0430948, -0.048124265, -0.04486795, -0.035008915, 0.08321689, -0.04977505, 0.048597503, 0.020555262, -0.07508485, 0.20037362, 0.06753769, 0.058704067, -0.009009662, -0.05421176, 0.20524938), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(h2, MF4x4(-0.12115005, 0.045643892, 0.112293474, 0.022908293, 0.073470674, -0.067966096, -0.017103313, -0.13648018, -0.07021163, 0.031020392, -0.048876107, 0.10397969, -0.005251243, -0.2611716, -0.07903786, 0.3444416), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(i2, MF4x4(0.10680049, -0.09858707, -0.0010306702, 0.10842332, -0.09013634, 0.02091661, 0.22192872, -0.15876925, 0.035971455, -0.04786045, 0.009500665, 0.09247623, 0.013221849, 0.1912487, -0.12753724, -0.061068386), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(a3, MF4x4(-0.03980972, -0.1474463, 0.22852057, -0.030534718, 0.103116564, -0.024893943, 0.023735823, -0.19768827, -0.088497065, -0.20338957, -0.022078201, -0.058560856, 0.16291575, 0.014483492, -0.093514696, 0.14760342), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(b3, MF4x4(-0.09319041, 0.08757541, 0.024344994, -0.004351115, 0.0023287807, 0.036806494, -0.02552934, -0.06227957, -0.1354203, 0.0283256, 0.2185213, -0.087060206, -0.022696337, -0.16076073, -0.20330715, 0.036380492), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(c3, MF4x4(-0.041115735, -0.023528732, -0.10124798, 0.21328308, -0.009342506, 0.07328608, 0.009285847, -0.23402044, 0.13117228, 0.1009154, 0.18027642, 0.074597865, 0.09881346, -0.00081656995, -0.002189424, -0.105243), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(d3, MF4x4(0.11213601, -0.23114498, 0.10217712, -0.083360896, 0.07913656, -0.039601568, 0.11367716, -0.034739245, -0.14472133, -0.035573903, -0.35375246, 0.040547356, -0.1504422, -0.15183373, -0.08146184, -0.015926573), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(e3, MF4x4(0.007678496, 0.045396518, 0.067442104, 0.357935, 0.1795549, -0.028398065, 0.26147032, -0.22306849, -0.028738718, -0.10074325, -0.08521542, -0.020190565, -0.175108, -0.26179528, -0.1149573, 0.05406529), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(f3, MF4x4(0.030697253, 0.06005289, 0.024412693, -0.013535843, 0.030500244, 0.14023077, -0.047582973, 0.07610684, 0.0571624, 0.19386198, 0.021660715, 0.03154867, -0.03788935, -0.08817162, 0.0053847465, -0.015165054), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(g3, MF4x4(-0.26646808, -0.2275448, -0.0619738, 0.104571655, 0.024079306, 0.033514917, 0.016844772, -0.14415953, -0.01694689, -0.0072623887, -0.12263149, 0.030444223, -0.03220662, 0.022894913, 0.03112325, -0.036533017), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(h3, MF4x4(-0.15611476, -0.19298914, -0.17546865, -0.080604054, 0.07597506, 0.097353615, 0.029924694, -0.078176685, -0.12268953, -0.05687716, -0.05294087, -0.18172315, -0.0773961, 0.084935166, -0.009803619, 0.040560953), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(i3, MF4x4(-0.10773278, -0.0012994999, 0.004722267, -0.057820093, -0.10506255, 0.029771779, 0.015667265, 0.14186347, -0.108355746, -0.11185942, 0.022062123, -0.123649485, -0.0666645, -0.0107138315, -0.0130763, -0.046252076), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(na1, MF4x4(-0.031815648, -0.0084208995, -0.072824255, -0.1508182, -0.064399414, 0.021369422, -0.18965991, 0.03649226, 0.15370539, -0.117377125, 0.15578026, 0.15059558, 0.1423233, 0.013444947, -0.16911474, -0.21899599), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nb1, MF4x4(-0.050074972, 0.06591971, -0.20185336, -0.19894198, -0.045794237, -0.09582899, 0.019117232, 0.054774716, 0.00469303, 0.08466791, -0.10310348, 0.03430011, -0.05189703, 0.08612288, -0.09612641, 0.15337339), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nc1, MF4x4(-0.058103696, -0.13447452, -0.06501768, -0.08269111, -0.043869898, 0.0398948, 0.033771295, -0.021524182, 0.0027115596, -0.030671224, 0.045388903, 0.04590158, -0.26087472, -0.16301683, 0.03324832, 0.024285218), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nd1, MF4x4(-0.051421262, 0.15028518, 0.06384462, -0.08590671, 0.101886876, -0.012882116, -0.051741008, 0.11888618, -0.15590154, -0.38625813, 0.042900138, 0.22492291, -0.09111901, -0.005388837, 0.051056426, 0.043860577), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ne1, MF4x4(-0.079883516, 0.05735032, 0.10719803, 0.16519663, -0.11724404, 0.25990528, 0.012375103, -0.010302452, 0.49185735, 0.1696493, 0.060474537, 0.3722603, 0.014323083, -0.16412182, -0.059749532, -0.24289557), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nf1, MF4x4(-0.034733526, -0.084441185, -0.04596736, -0.0042962483, -0.0392975, -0.11149175, 0.14051792, 0.0702665, 0.117540844, -0.102869704, 0.27858627, 0.069043316, 0.04871729, -0.24745311, -0.058776632, -0.0017110928), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ng1, MF4x4(-0.06277427, 0.16004023, -0.11507597, 0.15097888, 0.027060283, 0.1953599, -0.0031669976, -0.0005737168, -0.19876455, -0.23691651, 0.17741823, -0.12453466, -0.040428206, -0.0018632353, 0.023173677, -0.076046385), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nh1, MF4x4(0.13513252, 0.0295901, -0.006554118, 0.06786791, 0.15473233, 0.012762339, 0.1927368, -0.06255987, -0.30587965, -0.44131213, -0.086936355, 0.011615333, 0.097696826, 0.02502633, 0.08837973, -0.07914361), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ni1, MF4x4(-0.013541286, -0.034861088, 0.052821327, 0.037984103, 0.04338181, -0.0133451065, 0.041617934, -0.034278907, -0.053211715, -0.16200064, 0.11068738, -0.0867221, 0.04498939, 0.045188803, -0.05908562, 0.081477076), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(na2, MF4x4(-0.15266198, 0.22576767, 0.030019565, -0.045541495, 0.04881405, 0.0142783765, -0.1529103, 0.18320109, -0.00480197, 0.094124764, -0.010995377, 0.01641767, -0.010706163, 0.100903675, 0.19038767, -0.18477328), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nb2, MF4x4(0.008087569, 0.13434748, -0.32156894, 0.07736676, 0.10494717, -0.11782738, -0.0029439328, -0.09557844, 0.015514035, -0.089648925, -0.17554814, -0.14883392, -0.04063905, 0.050346915, -0.08932905, -0.010719376), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nc2, MF4x4(-0.11777635, -0.33014166, 0.34624732, 0.11740032, 0.1543961, -0.019076902, -0.12216481, -0.017081184, -0.00078788324, 0.031078909, -0.028584918, -0.026835786, 0.091864, 0.05272115, -0.12571204, 0.008416047), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nd2, MF4x4(-0.043549653, 0.1039711, -0.20336658, -0.010299696, -0.27827185, 0.019381372, -0.1632188, 0.077465065, 0.20229691, -0.069236994, 0.014810417, 0.22877559, 0.02143673, 0.17381601, 0.09082899, -0.053508762), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ne2, MF4x4(0.2391153, -0.19723871, -0.25610062, 0.07108974, -0.03182384, 0.2192639, -0.09241812, 0.048452295, -0.021405702, -0.2554734, -0.1965786, 0.20361422, -0.14465299, 0.058985952, -0.025833346, -0.10550291), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nf2, MF4x4(-0.39593056, -0.4537898, 0.023792682, 0.37393433, 0.041772638, -0.020854915, 0.050651625, 0.0766088, 0.23962118, -0.06411897, -0.106468715, 0.17854762, 0.03402648, 0.0236968, -0.033498786, -0.12094796), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ng2, MF4x4(-0.2517486, -0.011749091, -0.08157814, 0.1392019, 0.042420883, -0.23219018, 0.05053571, 0.13250825, -0.050171047, 0.15462638, -0.043420136, -0.014093825, 0.16176236, -0.14638837, -0.0071619265, -0.055462677), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nh2, MF4x4(-0.3264325, -0.30403548, -0.15088049, -0.010203428, -0.018360123, -0.060466267, -0.090672255, -0.13885537, -0.038393795, 0.20886149, -0.10593147, 0.017991208, 0.08373391, 0.20925963, 0.028997745, 0.06881825), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ni2, MF4x4(0.19107129, -0.16896184, -0.12929466, 0.07562441, 0.064231046, 0.0864716, -0.03966105, 0.09153016, -0.0628452, -0.015886426, -0.07048391, -0.24076262, 0.011216516, 0.07708032, -0.03814493, 0.13395755), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(na3, MF4x4(-0.05879415, -0.019550052, -0.023919582, -0.11289196, -0.0064408537, 0.07402445, 0.058795378, 0.15885338, -0.043667927, 0.10769252, 0.030309072, 0.048533317, -0.2524471, 0.059829284, 0.0797783, -0.019442867), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nb3, MF4x4(-0.0038486274, -0.04580634, 0.07400007, -0.031162377, 0.10273923, 0.008071164, 0.11991736, 0.026728682, 0.026876984, -0.07799812, 0.1297364, 0.14695424, -0.06859438, -0.10330936, -0.07446633, 0.02616857), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nc3, MF4x4(-0.16036308, 0.04957999, 0.01030331, -0.1962486, 0.103015296, -0.007340536, -0.049429756, 0.07165493, 0.008103339, 0.083655335, 0.098038, -0.1358248, -0.25885662, 0.029940864, -0.008321852, 0.2294651), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nd3, MF4x4(-0.06087098, 0.00019651231, 0.03534409, 0.03318348, -0.0879954, 0.034764756, -0.30367124, -0.09713905, -0.026543869, -0.089636214, 0.12096616, -0.034594636, 0.054902434, -0.09290082, -0.07779638, -0.0821119), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ne3, MF4x4(0.13779263, 0.18896884, -0.076830864, -0.09442952, -0.23735744, -0.014474691, 0.009051341, 0.10342686, 0.041046456, -0.10701024, -0.18442988, 0.02789949, -0.00074035715, -0.025513707, -0.040514592, 0.036068246), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nf3, MF4x4(-0.048401676, 0.20745294, 0.0070508514, -0.0705337, -0.022934115, -0.043547787, 0.04628692, -0.07658743, -0.10154497, -0.13417569, -0.0013773212, 0.14263885, -0.07437275, -0.13121726, 0.12632057, 0.034687687), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ng3, MF4x4(-0.027830327, -0.030560987, 0.12718935, -0.102934904, -0.02562363, 0.008175067, -0.0028858446, -0.015783066, 0.15272577, 0.10772941, 0.043485314, 0.014232708, 0.08577555, -0.16121073, 0.026591625, -0.055126593), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(nh3, MF4x4(-0.06485661, -0.11781964, -0.1421969, -0.16376711, 0.18121801, 0.123108625, -0.15428194, -0.06915854, 0.05089843, 0.08377868, 0.09607435, -0.02494757, -0.076740764, -0.19782536, -0.3470603, 0.037040427), conv2d_7_tf);\n\tconv2d_7_tf = MulAdd(ni3, MF4x4(0.10614744, 0.09086957, -0.02948694, 0.017862784, 0.027194018, 0.069870904, -0.021802098, 0.21401364, 0.11846571, -0.056183722, -0.071595654, 0.029162262, -0.124404505, -0.072095454, 0.040073395, -0.02816261), conv2d_7_tf);\n\ttex9[gxy] = conv2d_7_tf;\n\tMF4 nconv2d_7_tf = max(-conv2d_7_tf, 0);\n\tconv2d_7_tf = max(conv2d_7_tf, 0);\n\n\tMF4 target = MF4(-0.004266169, -0.020547107, -0.0031655694, 0.0643683);\n\ttarget = MulAdd(e1, MF4x4(-0.20878315, 0.073090814, 0.34913197, 0.04554434, -0.3036766, 0.04255219, 0.060676616, 0.24025755, -0.019680336, -0.15252031, -0.03416314, -0.072506554, 0.013241457, -0.10496547, 0.050562985, -0.033250205), target);\n\ttarget = MulAdd(e2, MF4x4(-0.18049034, 0.09664636, 0.41482204, 0.23575203, -0.05704124, -0.044852983, 0.1783455, -0.017561441, -0.06852369, 0.014129533, -0.21115111, -0.22699773, 0.38242704, 0.01165174, 0.04190493, -0.2141891), target);\n\ttarget = MulAdd(e3, MF4x4(-0.011946614, -0.16289592, 0.041371312, 0.40975794, 0.0041022287, -0.23657559, 0.10817027, -0.26924378, -0.12006245, 0.26678962, 0.072988346, -0.2085322, 0.0048250603, 0.12894252, 0.07966851, 0.24471562), target);\n\ttarget = MulAdd(ne1, MF4x4(0.18590502, 0.0845459, -0.12875262, 0.26096, 0.029233042, 0.36381075, 0.117661506, 0.006412487, 0.20946807, 0.07426911, 0.029169528, 0.0654646, 0.16450708, 0.12593012, -0.109644994, 0.14572893), target);\n\ttarget = MulAdd(ne2, MF4x4(0.1973355, -0.2275125, -0.28223652, 0.31719315, 0.3813502, 0.2693579, -0.037815563, -0.16148391, 0.12829015, -0.0030689894, 0.022164742, 0.035949815, -0.3378249, -0.13235879, 0.15883659, -0.17731927), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.2885664, 0.14904943, -0.19845994, 0.23251331, -0.30293494, 0.02003626, 0.20378608, 0.27291408, -0.16427508, -0.1587996, -0.22501752, -0.04937006, -0.115756296, 0.09290222, -0.26140857, -0.014537909), target);\n\ttarget = MulAdd(conv2d_8_tf, MF4x4(-0.1513065, -0.31879196, -0.2727547, -0.4583672, 0.3103975, -0.09158548, 0.009788355, -0.09834531, 0.011489709, 0.042706747, 0.37254226, 0.15954055, 0.2172001, 0.09373807, 0.29088458, -0.35286763), target);\n\ttarget = MulAdd(nconv2d_8_tf, MF4x4(0.23374696, 0.33407655, 0.23616461, -0.09521148, -0.14927168, 0.11939751, 0.42869845, -0.16612507, -0.2706815, 0.16172597, -0.5814591, -0.11577833, 0.065650895, -0.3334003, -0.41168052, 0.32357255), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.3248823, -0.27207342, -0.048840526, -0.217887, -0.018053366, -0.24292938, 0.1603505, 0.06505262, -0.010766065, 0.07076721, 0.22251016, -0.041497335, -0.09878612, 0.2061045, 0.080330074, -0.029014835), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.26376098, -0.04971863, -0.03045489, 0.009807002, 0.11108562, 0.0693266, 0.15279642, -0.1372833, 0.18326105, -0.059612468, -0.005589879, 0.021735538, -0.027800532, -0.14984077, -0.116767704, -0.06531209), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.19206688, 0.21824414, 0.03791829, 0.22117318, 0.01257811, -0.044042267, 0.25616458, 0.082941554, -0.1181948, -0.17940602, -0.20808466, -0.06987383, 0.0019713745, -0.1609917, 0.153718, -0.32214788), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.19472712, -0.007020553, -0.36049378, -0.24589752, -0.011828978, 0.38882232, -0.3257698, 0.08382738, -0.09556564, -0.20949766, -0.32732338, 0.08303877, -0.107999764, 0.2836336, -0.0661124, 0.24043255), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(-0.1972939, 0.12734106, -0.09953153, -0.45152718, -0.15855458, 0.08746372, 0.11452114, 0.030538268, 0.11946308, 0.17044471, -0.24375156, -0.10093911, 0.19120134, -0.14312318, -0.14860255, -0.1223525), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(0.14979935, -0.3136038, -0.25878516, 0.12995318, -0.075706124, -0.104598634, 0.1455947, -0.6167443, 0.06843719, -0.16347055, 0.04413483, 0.08870554, -0.29839858, 0.07214889, 0.049274225, -0.15555117), target);\n\ttex5[gxy] = target;\n\t\n\ttarget = MF4(-0.07107039, 0.0061239223, 0.0013546069, 0.02994767);\n\ttarget = MulAdd(e1, MF4x4(0.06760422, 0.16268754, -0.14517367, -0.023386402, -0.23272006, 0.48739922, 0.06399116, -0.032946702, -0.17306012, 0.334446, 0.17779559, -0.2660973, -0.3468709, 0.51220256, -0.010311926, -0.040047005), target);\n\ttarget = MulAdd(e2, MF4x4(-0.0538168, -0.048309397, 0.064760834, 0.09675621, 0.20269404, -0.2615111, -0.27282992, -0.12584937, 0.10904846, -0.15973651, -0.076846495, -0.09462694, 0.12722874, 0.21629119, -0.35314724, -0.086036965), target);\n\ttarget = MulAdd(e3, MF4x4(-0.049174394, -0.05765949, 0.21250841, 0.17151582, 0.15764381, 0.040890984, 0.05118504, -0.14658877, 0.05469671, 0.13701054, 0.20377803, -0.39008877, -0.0016028697, 0.13317284, -0.11653242, 0.12591232), target);\n\ttarget = MulAdd(ne1, MF4x4(0.21234287, -0.3048995, -0.12653783, -0.109162085, -0.050768167, -0.17156011, 0.05592974, 0.27197394, -0.19419932, -0.046344608, -0.05445905, -0.13253787, 0.05778321, 0.16979085, -0.04466505, -0.06867837), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.18974759, 0.22814974, -0.007522141, -0.10096491, -0.26759568, 0.32048568, 0.2660603, 0.112091035, 0.41875598, -0.1051111, 0.06525224, 0.27191457, 0.017352497, -0.31743342, 0.29108858, 0.26573792), target);\n\ttarget = MulAdd(ne3, MF4x4(0.031855166, -0.122523904, -0.28207538, 0.12833035, -0.025733596, 0.008542537, -0.1891138, 0.16361842, 0.058317598, -0.007289248, 0.03349703, -0.038986582, 0.18147361, -0.3912238, 0.024964351, 0.14339498), target);\n\ttarget = MulAdd(conv2d_8_tf, MF4x4(0.37369347, -0.012460246, -0.037854888, 0.067713045, -0.06288331, 0.26436228, -0.058873445, 0.04463945, -0.04286497, -0.04824939, 0.17835206, -0.036378298, 0.33058742, -0.14685723, 0.1025378, 0.051385757), target);\n\ttarget = MulAdd(nconv2d_8_tf, MF4x4(-0.131484, -0.040644694, -0.14443769, 0.1950223, 0.09507341, 0.48859578, -0.26267928, 0.24538381, -0.063596986, -0.18749404, -0.031884808, -0.07132067, -0.04606875, 0.03708701, -0.26145473, 0.2371378), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.094301306, -0.08795415, -0.035933804, 0.21765485, -0.29858732, 0.11440603, 0.14095801, 0.18262209, -0.08135902, -0.45404965, 0.20399955, -0.06393024, 0.023793167, 0.16001467, -0.11817577, -0.16322103), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(0.07168084, 0.0879652, -0.083207026, -0.045181375, 0.07845201, -0.15828066, 0.05710845, 0.05699917, -0.061211787, 0.039662443, 0.036026876, 0.14224064, -0.23701179, 0.01259322, -0.091701694, 0.42408752), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.017442457, -0.1311232, -0.22520894, -0.049517628, -0.20945188, -0.035541452, -0.13055338, -0.04001523, -0.09402065, -0.19641486, -0.10066238, 0.115912616, -0.10684873, 0.02787531, 0.28450257, 0.02690632), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.2659566, 0.43625832, -0.0695883, -0.2624756, -0.2827253, -0.22893822, 0.26025924, 0.24121284, 0.2272709, 0.2178127, -0.15199527, 0.32607552, 0.005909836, 0.056527212, 0.19446251, -0.010751997), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(0.1273358, -0.28996274, -0.19322409, 0.018734567, 0.48555133, -0.17389202, 0.13595583, 0.46163267, -0.08973322, -0.30239192, 0.49897516, 0.021815563, -0.2589829, 0.0039008032, 0.056682784, 0.048075546), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(0.415353, 0.112207405, 0.20997275, 0.033321556, -0.1327579, 0.12338585, 0.61820966, -0.3411527, 0.018252999, 0.05708125, -0.24571265, 0.11019793, 0.24145919, 0.20340635, -0.0693869, 0.16271423), target);\n\ttex6[gxy] = target;\n\t\n\ttarget = MF4(-0.07283617, -0.09245546, -0.006695486, -0.013076421);\n\ttarget = MulAdd(e1, MF4x4(0.0014731521, -0.15165007, 0.04889816, -0.23228844, 0.11362322, 0.07071926, -0.23770805, -0.04347728, -0.16787082, -0.008313435, -0.42370048, 0.08681679, 0.10611205, -0.012660734, 0.10022364, 0.027629996), target);\n\ttarget = MulAdd(e2, MF4x4(-0.35393402, 0.018436229, 0.10629333, 0.029471794, -0.21129252, -0.301571, 0.0045201713, -0.15636055, 0.298371, 0.11426107, 0.018450111, -0.13657977, 0.22216578, 0.009629214, 0.5373198, 0.30699998), target);\n\ttarget = MulAdd(e3, MF4x4(-0.1504586, -0.16447587, -0.2739809, -0.14074785, 0.39510623, -0.08384201, 0.14561974, -0.43195033, -0.055713434, 0.12800978, 0.2829296, -0.23494978, 0.14326042, -0.09509476, -0.3169162, 0.124649614), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.23705968, 0.15959233, 0.11467344, 0.15141489, -0.096755706, 0.023953263, 0.13856179, 0.024189185, 0.13272291, 0.46271062, 0.55494446, -0.14286532, 0.1501738, 0.28827608, 0.058801714, 0.029045105), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.002308931, 0.07281086, -0.5197955, 0.079986535, 0.38919175, 0.3164044, 0.35857818, 0.09364757, 0.17373051, -0.1447216, -0.05244769, 0.15533692, 0.046295535, -0.19459103, -0.33215967, -0.15369573), target);\n\ttarget = MulAdd(ne3, MF4x4(0.11478203, -0.29375935, -0.19501545, -0.081721894, -0.103483915, 0.041965716, 0.056954723, 0.19596405, -0.13819647, 0.010641367, -0.11124998, -0.08675409, 0.036859434, 0.23720297, 0.14129876, -0.044769786), target);\n\ttarget = MulAdd(conv2d_8_tf, MF4x4(0.08397742, -0.12651941, 0.17676216, -0.084249385, 0.36716628, 0.039452277, -0.27606088, -0.36796048, 0.31680533, 0.14186403, 0.4466997, 0.13315229, 0.011085958, -0.17513317, 0.13940759, 0.27495402), target);\n\ttarget = MulAdd(nconv2d_8_tf, MF4x4(-0.1870658, 0.18817395, 0.010469263, -0.39973256, -0.57167524, -0.38714117, -0.26255277, 0.14361858, 0.018649995, 0.15935089, -0.21745402, -0.0056655053, -0.15408997, -0.03154883, -0.29631105, 0.27472818), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(-0.07735958, 0.042861674, 0.36729267, -0.2362879, -0.15516327, -0.009109079, 0.063800156, -0.253287, 0.4471074, 0.0944695, -0.26948866, -0.07759066, 0.045151226, -0.13749917, 0.14566323, -0.13593693), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(0.28955856, 0.09293573, 0.07423561, 0.1616493, 0.22285056, 0.01639275, 0.026332684, -0.14958683, -0.32087958, -0.3138252, -0.17335242, -0.38171476, -0.25562596, -0.022701526, 0.17425084, -0.042576227), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.24964347, -0.07078707, 0.18416835, -0.054758202, -0.061644293, -0.0964391, 0.14583856, -0.34874785, -0.3402768, 0.14743538, 0.36047265, 0.04471611, 0.015971184, 0.25227246, -0.011749087, -0.18359871), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.059328917, -0.07904788, -0.23883855, -0.06956805, -0.040810965, 0.09536262, 0.0018617791, -0.1898438, 0.1794419, 0.11382087, -0.16192305, 0.22020166, 0.03995484, -0.19086155, -0.2970539, 0.14597812), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(-0.034995254, 0.060782332, -0.0519364, 0.41303346, -0.06989344, 0.21384521, 0.31474474, 0.12592849, 0.17633408, -0.2764535, 0.36884397, -0.015302021, 0.02951528, 0.094452016, 0.13392285, 0.14435606), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(0.13522784, 0.101011604, 0.04657966, -0.043399148, 0.008192044, 0.0027336285, 0.011269824, 0.09976881, -0.026473437, -0.124423906, -0.19602631, -0.09871594, -0.10603456, 0.057509303, -0.09007557, -0.14438893), target);\n\ttex7[gxy] = target;\n}\n\n\n//!PASS 5\n//!DESC Conv-4x3x3x24, Conv-4x1x1x64\n//!IN tex5, tex6, tex7, tex4, tex8, tex9\n//!OUT tex10, tex11, tex1, tex2, tex3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex5.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b1 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex5.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex5.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex5.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex5.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex5.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex5.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex5.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = tex6.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b2 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex6.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex6.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex6.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex6.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex6.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex6.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex6.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\t\n\tMF4 a3 = tex7.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b3 = tex7.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex7.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex7.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex7.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex7.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex7.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex7.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex7.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\t\n\tMF4 conv2d_1_tf = tex4.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_1_tf = max(-conv2d_1_tf, 0);\n\tconv2d_1_tf = max(conv2d_1_tf, 0);\n\t\n\tMF4 conv2d_4_tf = tex8.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_4_tf = max(-conv2d_4_tf, 0);\n\tconv2d_4_tf = max(conv2d_4_tf, 0);\n\t\n\tMF4 conv2d_7_tf = tex9.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_7_tf = max(-conv2d_7_tf, 0);\n\tconv2d_7_tf = max(conv2d_7_tf, 0);\n\n\tMF4 conv2d_11_tf = MF4(-0.022754392, 0.009821446, 0.06426939, -0.052443504);\n\tconv2d_11_tf = MulAdd(a1, MF4x4(-0.47819614, -0.0145807015, -0.14235033, -0.06459091, 0.051679384, -0.24727756, 0.16531977, 0.23668537, -0.044610042, -0.03163047, -0.024059737, 0.21251118, -0.02900184, -0.11218355, 0.085020125, -0.08413842), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(b1, MF4x4(-0.083133794, 0.08406656, 0.20940667, 0.21155417, -0.12855776, -0.061865382, 0.2486309, 0.13191856, -0.028019775, 0.11366226, 0.13459402, 0.18391807, -0.09688631, 0.011591497, -0.2466206, -0.02237942), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(c1, MF4x4(0.0037495645, 0.019915475, 0.07625364, 0.07119373, 0.18423386, 0.07686032, -0.013689673, -0.11513128, -0.12845139, 0.273121, 0.077030145, 0.13114497, 0.04543684, 0.09308563, 0.19357756, 0.24509594), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(d1, MF4x4(0.03458686, -0.42040396, -0.104271114, 0.1918791, -0.25708342, 0.03583752, 0.2589993, -0.050576445, 0.0043004244, 0.19324894, 0.080590524, 0.14723596, 0.041485116, 0.13033897, 0.28028202, -0.058933), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(e1, MF4x4(-0.09480703, -0.13742156, -0.30406207, -0.03582789, 0.12367775, 0.064455606, -0.061555192, 0.06453598, 0.0917327, 0.04270991, 0.21958654, 0.13570474, -0.12048236, -0.024039079, 0.11226094, 0.050419748), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(f1, MF4x4(0.02062305, -0.10862912, 0.12883052, 0.18951532, -0.03850205, 0.11498875, 0.16137509, 0.009759631, -0.09211893, 0.0708826, 0.15651149, 0.19246778, 0.056577608, -0.0871854, 0.090261444, -0.019027064), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(g1, MF4x4(0.2780629, -0.054287303, -0.13351089, 0.021154758, -0.12753387, 0.031183334, 0.29430825, -0.06750467, -0.044209514, -0.042159047, -0.12532234, 0.006239919, -0.1961551, 0.099502094, 0.11470277, 0.10832906), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(h1, MF4x4(-0.2063426, -0.24898255, -0.28594568, 0.15958025, 0.03609107, 0.06394462, 0.022269696, -0.058725126, -0.104284525, 0.16744058, -0.14197277, -0.0051877275, -0.14164501, 0.021519974, -0.12835859, -0.12090698), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(i1, MF4x4(-0.45966595, 0.015630098, -0.3182287, 0.10282032, 0.14680836, -0.23460387, 0.15356645, 0.017346757, 0.05120857, -0.035891768, -0.092325106, 0.005394217, -0.09328155, -0.012819384, 0.14028293, 0.012717323), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(a2, MF4x4(0.06736054, -0.0044496846, -0.061849196, -0.04067691, -0.06897966, 0.12449442, -0.2508966, -0.090206414, -0.0938398, 0.013633642, 0.1409954, -0.08719504, -0.06788997, 0.098299906, 0.06095718, -0.071988545), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(b2, MF4x4(-0.036788728, 0.0037640312, 0.0037646547, -0.021026969, 0.09899778, -0.054118365, 0.08308994, 0.10520542, -0.2592658, 0.113168575, -0.15985844, -0.15588784, -0.114530176, 0.0118468655, -0.08904175, -0.106764145), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(c2, MF4x4(-0.027948795, 0.004584627, -0.03517112, -0.0007581547, -0.025537577, -0.035759352, 0.0973176, 0.03644148, -0.16327894, -0.12705119, -0.028998915, 0.123633325, -0.19453679, 0.113648765, 0.012692621, 0.057508085), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(d2, MF4x4(-0.010877041, -0.03980561, 0.013339347, 0.061969575, 0.2810196, 0.058558464, -0.1776418, 0.16630451, 0.05817873, 0.07262613, -0.03700459, -0.04399585, -0.16587572, 0.08260915, -0.009857085, 0.04391152), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(e2, MF4x4(0.13224548, -0.074267186, 0.03054752, -0.07024831, 0.074185595, -0.02313642, 0.065747924, -0.004960654, 0.14500527, 0.04731656, -0.117002204, -0.08217113, -0.07336124, -0.084052, 0.12326484, 0.09011222), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(f2, MF4x4(-0.16047195, 0.076803066, -0.2786948, 0.1176941, -0.0131406775, 0.009936233, 0.1374073, -0.09565009, 0.10070214, 0.11528786, -0.0730813, -0.13431457, -0.21621323, -0.013119195, -0.18385343, -0.058667593), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(g2, MF4x4(0.0040132185, 0.134705, -0.011815555, -0.094924495, -0.05727005, 0.0950522, 0.04084158, 0.016365912, -0.02917897, -0.03862751, 0.012003192, 0.03835569, -0.096041076, 0.004406702, -0.10389978, -0.0009610953), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(h2, MF4x4(-0.10157398, -0.10319637, -0.012073916, -0.19039184, -0.02369365, -0.021698838, 0.015538155, -0.051231697, 0.041044284, -0.02691978, -0.1713024, -0.12904704, -0.03471921, 0.037977315, 0.064845525, 0.1264632), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(i2, MF4x4(-0.08406344, 0.044064984, 0.056877784, -0.13283873, -0.0058603142, 0.075482026, -0.09246969, -0.065718174, -0.025745329, 0.015633717, -0.06059284, 0.08149079, -0.022848418, 0.061127402, 0.047879003, 0.04544503), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(a3, MF4x4(-0.21875143, 0.053516608, 0.04243476, -0.08509983, 0.406294, -0.060116358, -0.13793904, -0.1559247, -0.017128536, 0.021633752, 0.08865264, -0.032922007, 0.08250139, -0.17353764, -0.16137601, 0.12943612), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(b3, MF4x4(-0.27127337, -0.057137657, 0.005031509, 0.10027777, 0.20500132, 0.0073007634, -0.09760265, -0.2428409, -0.16160156, 0.32289484, -0.096351616, -0.15562637, -0.24892123, 0.13368145, 0.31498823, 0.09549184), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(c3, MF4x4(0.01444343, 0.07115736, -0.17920075, -0.024846312, 0.057884447, 0.14358939, 0.043788955, -0.013016863, 0.087220736, -0.0060180086, 0.19609165, -0.025888423, -0.06294847, 0.03406598, -0.04250465, -0.04808649), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(d3, MF4x4(-0.02662509, 0.24295834, -0.07612864, -0.20615683, 0.16377121, -0.05186765, -0.1750536, -0.04726876, 0.29443663, 0.0983683, -0.18610948, -0.1949004, -0.1446201, 0.11045659, 0.013536009, 0.18919495), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(e3, MF4x4(-0.080005094, -0.29404542, 0.14548069, 0.013500291, -0.011395713, -0.048017073, -0.053436857, -0.13627477, 0.041908856, -0.30820572, 0.17044339, 0.22999896, -0.32405153, 0.12114645, -0.080108374, -0.06520369), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(f3, MF4x4(0.062350888, 0.170049, 0.04211445, 0.12288375, 0.010835714, -0.17722476, -0.18930283, 0.11607083, -0.054421842, -0.004191082, 0.14655825, -0.1229237, -0.058039404, 0.09008831, -0.017603457, 0.027497675), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(g3, MF4x4(0.24208143, 0.04073837, -0.014191606, -0.069054805, 0.33024073, 0.25458166, -0.062864356, 0.028975246, 0.17692459, 0.22093695, -0.17666881, -0.03709188, -0.2001521, -0.06491504, 0.199202, 0.08666711), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(h3, MF4x4(0.053933676, -0.058177974, 0.006558046, -0.018798346, -0.05610966, 0.21288905, -0.06513558, -0.012686734, 0.11635233, -0.039428618, 0.21562201, -0.07206132, 0.065123, -0.056875434, 0.08877115, -0.10216625), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(i3, MF4x4(-0.03294463, 0.011720216, 0.056083966, -0.05530083, -0.16838011, -0.0026962461, -0.17402422, -0.009680605, -0.0064969915, 0.14410603, 0.090527765, 0.048180934, -0.06482277, -0.17573984, 0.36281663, 0.14240478), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(na1, MF4x4(0.026252843, 0.01621395, -0.03018171, 0.20843759, -0.05987382, -0.13891932, 0.008612968, -0.03674587, 0.055803657, -0.020272622, -0.12338887, -0.21429133, -0.026188683, -0.08283737, -0.07952566, 0.11333926), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nb1, MF4x4(-0.03251504, -0.04554576, 0.012727539, 0.06115098, -0.23113467, -0.21784578, 0.10390341, -0.028863542, 0.1405748, -0.092941806, 0.04094931, 0.26037696, 0.014778488, -0.0012763811, 0.120576814, 0.017626097), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nc1, MF4x4(-0.18005073, 0.08914073, -0.19792715, 0.07666369, -0.040389247, 0.06043132, -0.068735644, 0.006061951, -0.09742132, -0.015570641, -0.05810036, -0.06305046, 0.06286483, -0.1669205, -0.15426171, 0.046022687), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nd1, MF4x4(-0.045976873, 0.028456753, 0.037186757, 0.05231241, -0.12909305, -0.16277504, -0.0035813665, -0.06294949, -0.04205357, -0.15816367, -0.021810539, -0.108161986, -0.08399507, -0.12965044, -0.00611913, -0.029711436), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ne1, MF4x4(0.2537032, -0.018604688, 0.16584206, -0.20883793, -0.10245589, -0.06570063, -0.16321684, 0.02899805, -0.1427425, 0.20915249, -0.1761724, -0.09594, -0.10995607, -0.11155546, 0.037878104, 0.028106442), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nf1, MF4x4(-0.1628865, -0.17466225, -0.14372015, 0.05667306, 0.10472602, -0.018716356, 0.087850116, -0.056246866, 0.083403885, -0.082255535, -0.10299376, -0.1840543, -0.35220358, -0.059505656, -0.21391232, 0.16591822), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ng1, MF4x4(0.040541083, -0.1146205, -0.021495365, -0.033008795, 0.007970957, 0.007984478, 0.02606323, 0.012668774, 0.12771203, -0.09947922, -0.14149466, -0.1890857, -0.14682727, 0.033072542, -0.11833484, -0.038956877), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nh1, MF4x4(-0.14274059, 0.08827524, 0.011712704, 0.10902492, 0.060481314, 0.003578728, 0.029129535, 0.08889746, -0.09685511, -0.095264345, -0.13920794, -0.11014531, -0.05436568, 0.060371455, 0.07251505, 0.20626338), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ni1, MF4x4(-0.07604635, -0.035359483, 0.010230144, 0.030468917, -0.008423673, 0.0273416, -0.10538517, 0.10806335, 0.03605524, -0.082360476, -0.06390322, -0.19094782, -0.10980772, 0.13070256, -0.009116851, 0.094997086), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(na2, MF4x4(0.06696349, 0.02884076, -0.21400648, 0.10645195, -0.15960447, 0.07844191, 0.09057932, -0.022310507, -0.20641366, -0.20897295, 0.05159085, -0.042257026, 0.16398512, -0.22846761, -0.033591952, 0.3359712), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nb2, MF4x4(-0.024236226, -0.13937415, 0.29392216, 0.075087205, 0.07763272, 0.27571923, -0.28625518, -0.37574485, -0.0041614594, 0.051519327, -0.1727601, -0.002199689, -0.32436445, 0.059740037, 0.006543187, 0.11488307), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nc2, MF4x4(-0.025740145, 0.10688955, 0.3432225, 0.04467087, 0.033870216, 0.16714002, 0.20819634, -0.11762629, 0.19059974, 0.0661928, 0.022394795, -0.14459209, -0.16684553, 0.08020461, -0.37147745, 0.04065124), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nd2, MF4x4(-0.006134667, -0.0031798254, -0.101459935, 0.15463492, 0.039860703, 0.077067874, 0.17671694, -0.06597644, -0.12203232, -0.058787927, 0.008942991, 0.0570718, -0.043793175, -0.06388724, 0.0247615, -0.09814649), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ne2, MF4x4(0.009333359, -0.10666345, 0.19417302, -0.08021104, 0.071850464, 0.18651992, 0.1487532, 0.03132098, -0.21202543, 0.02972519, 0.028346745, 0.17178747, -0.24139602, -0.18386513, -0.03009887, -0.17363264), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nf2, MF4x4(0.006349671, -0.0199598, 0.14889078, -0.14921328, -0.08713048, 0.14722322, 0.041971955, -0.019181551, 0.07069949, -0.12362262, 0.08554868, 0.16224997, -0.11218193, 0.3132043, -0.18114331, -0.104602315), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ng2, MF4x4(0.047690846, -0.26872492, 0.2183612, 0.19340567, -0.06084255, 0.04798949, 0.19492827, 0.14699973, -0.07016259, 0.14654481, -0.06714773, 0.07936776, 0.073397264, -0.10646918, -0.13238135, 0.07208961), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nh2, MF4x4(0.07382223, -0.044347115, -0.032497067, -0.02002406, 0.18200569, -0.09839878, -0.0027670355, -0.032592446, -0.05297432, 0.11200702, -0.019955616, 0.112369545, -0.2748285, -0.139697, -0.26332188, -0.303972), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ni2, MF4x4(-0.23713836, -0.003925555, 0.16436225, 0.15221255, 0.1077621, -0.027760457, 0.0059113647, -0.11066059, -0.0980858, 0.011830199, 0.040253483, 0.06447465, -0.0827841, 0.04048125, 0.04551489, -0.12471252), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(na3, MF4x4(0.010833946, -0.058524415, -0.19618602, -0.11400699, -0.088038966, -0.08249501, 0.025192872, -0.04508469, -0.017629553, 0.10654934, 0.007814974, 0.041299284, 0.054442752, 0.14059617, 0.09760092, -0.060198124), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nb3, MF4x4(-0.16173755, 0.14454803, -0.036523324, 0.016083395, -0.04597214, 0.019925527, 0.10551423, 0.07915449, -0.09191786, 0.040694106, 0.079085656, 0.04860138, -0.00920608, 0.015785221, 0.08149557, -0.070038155), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nc3, MF4x4(0.09396598, -0.27780503, 0.057351794, 0.17856738, 0.06403465, -0.019479418, 0.13132542, 0.09766009, -0.13038878, 0.106342256, 0.19923963, -0.107940085, -0.11207263, 0.07427199, 0.122141175, -0.17083314), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nd3, MF4x4(-0.0129763335, 0.029884486, -0.1591489, 0.05743726, -0.10154112, -0.05951815, 0.038755298, 0.31987077, 0.041023176, 0.15760195, 0.020455543, 0.117823385, 0.008611401, 0.10392111, -0.029049959, -0.00561999), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ne3, MF4x4(0.11115114, 0.13910228, -0.15370879, 0.14353245, -0.106912665, 0.16457058, -0.0007093892, -0.16065751, 0.12172275, -0.0071658283, -0.13790236, -0.05790294, 0.0258849, 0.047155324, 0.028826248, 0.077854194), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nf3, MF4x4(0.04222945, 0.016645031, -0.22052032, -0.108474314, -0.037527397, 0.1508435, 0.13960642, 0.051745985, 0.17182018, -0.0071819094, 0.13896792, 0.12522686, 0.1307583, 0.09315921, 0.031736225, -0.24318463), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ng3, MF4x4(0.12233872, 0.16193391, -0.045825243, -0.021991767, -0.06857775, 0.019997157, 0.26207915, 0.017674582, 0.14816906, -0.011254348, 0.11932189, -0.06385669, -0.08113471, 0.13287768, -0.008416972, -0.039866585), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(nh3, MF4x4(0.15459004, -0.029546147, -0.20761466, -0.12011381, -0.09814943, -0.12983616, 0.0019625768, 0.086729765, 0.22380745, 0.112912305, -0.073421806, -0.061414655, -0.00015528004, -0.10514693, 0.0449276, 0.1197672), conv2d_11_tf);\n\tconv2d_11_tf = MulAdd(ni3, MF4x4(0.031599533, -0.0699447, 0.10802751, -0.011152619, 0.08078543, 0.10828058, 0.10941837, -0.07911565, 0.16324246, -0.034676578, 0.04017893, 0.01809475, -0.0054880627, 0.027349245, -0.041267768, 0.041391887), conv2d_11_tf);\n\ttex10[gxy] = conv2d_11_tf;\n\tMF4 nconv2d_11_tf = max(-conv2d_11_tf, 0);\n\tconv2d_11_tf = max(conv2d_11_tf, 0);\n\t\n\tMF4 conv2d_10_tf = MF4(0.03802586, 0.06033134, 0.0405485, 0.00039835402);\n\tconv2d_10_tf = MulAdd(a1, MF4x4(0.31697825, -0.38101152, 0.26027805, 0.19195847, -0.15098146, 0.17915927, 0.263392, -0.108211316, 0.004631585, -0.06989657, 0.057514362, 0.013759571, -0.06416892, 0.033370133, -0.04808954, -0.1563251), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(b1, MF4x4(0.15827416, -0.17950794, 0.16834997, 0.13073751, 0.030396005, 0.040662624, 0.16062944, 0.041357074, -0.13926722, -0.06929913, 0.10808029, -0.06798461, 0.10745701, -0.102971874, -0.06641405, 0.0885879), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(c1, MF4x4(0.017569518, -0.074986644, -0.0381504, -0.108356364, -0.028105393, 0.107422166, 0.010693419, -0.03790183, -0.056355134, -0.17228265, 0.19153535, 0.014339309, -0.072250925, 0.25570604, 0.06766601, 0.10274542), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(d1, MF4x4(0.11808023, 0.03209569, -0.047605, 0.10232121, -0.089450955, 0.22296266, -0.031239472, 0.12547736, -0.13355453, 0.09658202, 0.14639929, 0.1722445, -0.16578807, -0.01587181, -0.06775275, 0.106690586), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(e1, MF4x4(-0.08015724, -0.09917064, 0.17005561, -0.11093009, -0.033904083, -0.18723048, -0.42410555, -0.34870258, -0.024956835, -0.057636626, -0.17249386, 0.3452565, -0.0781917, 0.048283495, -0.1849922, 0.10712763), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(f1, MF4x4(-0.19845031, 0.018594265, 0.11669769, 0.04427017, -0.13347605, 0.14735079, -0.20751207, -0.08490434, -0.077883884, -0.17200643, 0.03127422, 0.11106135, -0.04682848, -0.04392586, 0.11629085, -0.03191463), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(g1, MF4x4(-0.035416074, 0.032688126, -0.034218192, -0.35819814, -0.07167647, -0.032766674, -0.09849224, 0.27033108, -0.040135793, 0.11793038, 0.024326177, 0.056732934, 0.0072507905, -0.15076852, -0.007368895, -0.07758195), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(h1, MF4x4(0.03677586, 0.088763975, 0.04954433, -0.047844727, -0.07487822, -0.06698103, 0.12568145, -0.22909173, 0.1671084, -0.17893419, 0.09722236, 0.20345661, 0.057767022, 0.044742733, 0.06905004, -0.010992711), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(i1, MF4x4(0.0028451576, -0.27325574, 0.14329389, -0.07025869, -0.09781529, 0.0151023185, 0.08696752, -0.056844577, -0.19665222, 0.09358589, 0.16416575, 0.06988374, 0.16515698, 0.09760437, 0.023626767, 0.16473217), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(a2, MF4x4(-0.01080354, 0.014449004, 0.11467091, -0.07119837, 0.18900962, -0.06401898, -0.025841001, 0.13663737, -0.04860565, 0.15505394, 0.11083383, -0.06831929, -0.12395706, 0.04564376, -0.132784, 0.095948376), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(b2, MF4x4(-0.009644828, 0.05351468, -0.086626254, -0.07883177, 0.12082235, 0.16186416, 0.20026602, -0.12537873, -0.02765183, -0.19664048, -0.14943156, 0.17649364, -0.15099925, -0.16448402, 0.04770359, 0.08525748), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(c2, MF4x4(-0.07529481, 0.057762332, 0.02256763, 0.0037007954, 0.052606575, 0.008619477, 0.035252705, -0.060551647, 0.03680644, 0.1457205, 0.0970469, 0.00867666, -0.0931654, -0.046189044, -0.118787736, 0.059376143), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(d2, MF4x4(0.024567254, -0.07128407, -0.02618071, -0.16522972, 0.02537496, 0.09393943, -0.018046979, -0.12497053, 0.041589152, 0.028847594, 0.072174646, -0.12484334, -0.096903354, 0.07245438, -0.03219862, 0.037360255), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(e2, MF4x4(0.05599119, -0.0027604182, -0.004961665, -0.1297362, 0.10879746, 0.14088875, -0.031004267, -0.016735828, 0.07093551, 0.024946349, 0.16840066, -0.10094298, -0.04150052, 0.09933387, 0.09332617, -0.121228844), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(f2, MF4x4(0.099246845, -0.17000747, -0.17089754, 0.0021521626, 0.046584304, -0.037944607, 0.1009471, 0.110904016, 0.17920195, -0.00022254961, 0.07443117, 0.07490046, 0.1700909, -0.18371364, -0.15320961, -0.0344897), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(g2, MF4x4(0.10543544, 0.04469465, 0.14627467, -0.07649682, -0.082381524, 0.12919065, 0.090079635, -0.07820535, -0.06769879, -0.12625079, -0.06946243, -0.19333136, 0.02998107, 0.01594043, 0.12332583, 0.015775004), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(h2, MF4x4(0.025815854, 0.015107419, -0.045278236, 0.13242702, -0.059958965, 0.031560495, 0.047686167, 0.064922616, 0.09818797, -0.07938157, -0.08586279, 0.079509474, -0.031728156, 0.052335043, 0.046583798, 0.17072229), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(i2, MF4x4(-0.07827454, -0.033509843, 0.054832056, -0.011652403, -0.029872715, -0.13623856, 0.013034195, -0.009600983, -0.08374398, 0.0022505643, 0.042340405, 0.050227124, -0.072084844, -0.044353593, 0.06991293, -0.024949703), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(a3, MF4x4(0.08938938, -0.092218116, -0.016011834, 0.038319822, 0.12462916, 0.30430344, -0.2225195, 0.23016618, 0.16917962, -0.10025298, 0.03197825, -0.0028935818, -0.20949106, 0.16084236, 0.02389285, -0.07628905), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(b3, MF4x4(0.008811933, -0.07407284, 0.06164061, -0.08511243, 0.23705618, -0.04852394, -0.09615244, -0.14999956, 0.14771207, -0.31061637, 0.053693004, 0.12648372, 0.13281338, -0.052495755, -0.10527891, 0.055210527), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(c3, MF4x4(-0.002706158, -0.08600029, 0.067195736, 0.11638961, 0.22492133, 0.21856707, -0.07640264, -0.06916772, 0.06080084, 0.11333604, 0.06812178, -0.033994764, 0.18698989, -0.0062931813, -0.07839693, -0.19759217), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(d3, MF4x4(0.016470285, -0.08823432, 0.22680223, 0.09997554, 0.23114151, 0.19813643, -0.35361916, 0.2194339, 0.11047473, 0.068083756, 0.067214124, 0.43412095, -0.012517998, 0.15817562, 0.041793827, -0.12873247), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(e3, MF4x4(0.072530076, 0.13730067, 0.2244758, -0.07199118, -0.052385315, 0.10464238, 0.26556495, -0.2717685, -0.11540168, -0.018752037, 0.025696546, -0.12900795, -0.010386023, -0.020768933, 0.24903738, -0.14111607), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(f3, MF4x4(-0.24632111, -0.015176092, -0.02656606, 0.009465184, -0.0051622107, 0.14365524, 0.110313326, 0.075529456, -0.041912608, -0.012926297, 0.099115536, -0.043660834, 0.14709431, 0.069978856, 0.19860862, 0.30215213), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(g3, MF4x4(0.003388868, 0.000683922, 0.025133248, 0.004995937, -0.06642034, 0.028584523, -0.14691937, -0.2014579, 0.15427552, -0.027058927, 0.04456965, 0.084938034, -0.24065961, -0.014348999, -0.093859546, -0.032467082), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(h3, MF4x4(-0.067999065, -0.061825316, -0.056987073, 0.0009880592, -0.014163033, -0.30605268, 0.22628185, 0.01192761, -0.08495571, 0.17559315, -0.17546391, -0.0027795131, -0.289151, -0.41655365, 0.11138813, -0.18327911), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(i3, MF4x4(-0.032702215, 0.072819114, -0.06573772, -0.023648093, -0.28138083, 0.0492584, 0.17402509, -0.04257587, 0.109756455, 0.086533375, -0.017961387, 0.02175586, -0.12014975, 0.0101643065, 0.34295502, -0.04737776), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(na1, MF4x4(-0.043654937, 0.030818325, 0.009349365, 0.0058960635, 0.075968295, 0.10992966, -0.056467474, -0.053309787, -0.020969287, 0.13869311, 0.118167736, 0.20124547, -0.071703844, 0.16065824, 0.0333816, 0.16069882), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nb1, MF4x4(-0.00913058, 0.11581215, -0.08088577, 0.048499383, -0.002100561, 0.14013395, -0.021854091, 0.022357881, -0.007194664, 0.2258521, 0.28041685, 0.035750967, -0.17555529, -0.06302401, 0.006144002, 0.073763065), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nc1, MF4x4(0.13105561, 0.033134516, -0.123544686, 0.036164157, 0.081316054, -0.09048299, -0.034898795, -0.04975392, -0.118228555, 0.0013148085, -0.024866905, -0.07593515, -0.058713235, 0.081549294, 0.09502267, -0.06489622), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nd1, MF4x4(-0.013302538, 0.14520672, -0.041146558, 0.08169293, 0.1506187, 0.062507726, 0.19582897, 0.05240332, 0.015582799, 0.08783006, 0.016972601, -0.23824452, -0.056192238, -0.087197326, 0.0045260703, -0.012997719), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ne1, MF4x4(-0.074937195, -0.018988643, -0.07370074, 0.048774365, 0.07236563, 0.0904083, -0.10467449, 0.10507359, 0.12723474, -0.1263123, -0.17705469, -0.15779553, -0.23850663, -0.119912334, 0.21794695, 0.19370297), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nf1, MF4x4(-0.04097957, -0.0038975494, 0.11273524, -0.049562607, -0.041399803, 0.013795214, -0.07912852, 0.06913985, -0.039762158, 0.031136844, -0.22443683, -0.07978295, 0.15926225, -0.021239735, 0.02987538, 0.0073201153), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ng1, MF4x4(-0.00022499492, 0.07021377, 0.10080298, -0.049646243, 0.08742822, -0.05083212, 0.11067444, 0.0028296155, -0.06948983, -0.032108277, -0.17148562, 0.031176677, 0.028853005, 0.06482861, 0.0068417406, 0.20317557), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nh1, MF4x4(0.11648821, -0.17146581, 0.067954056, 0.08905258, -0.08075704, 0.019719714, -0.11522013, 0.07268729, 0.0639498, 0.19816676, 0.014075983, -0.032495353, -0.017302783, 0.001971279, -0.03852454, 0.13213885), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ni1, MF4x4(-0.043073803, 0.013491542, -0.0071037943, 0.104073495, 0.02311169, 0.058454588, -0.036697295, -0.048574958, -0.02161516, 0.10554709, 0.07252144, 0.013570617, -0.08058747, -0.050845098, 0.11659161, 0.12994757), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(na2, MF4x4(-0.065163076, 0.19974495, -0.4120684, 0.07145881, 0.113002166, 0.23591681, 0.09600776, -0.12980238, -0.032298863, -0.09617708, -0.09807077, -0.019956803, -0.0144692, -0.11556348, -0.080140986, -0.088292986), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nb2, MF4x4(-0.012835261, -0.04646276, 0.072318554, -0.08490823, 0.1648558, -0.15578964, 0.07145768, 0.12143512, 0.007787767, 0.07922046, -0.10203864, -0.15637778, 0.17195338, -0.16184372, -0.01940918, -0.0037627215), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nc2, MF4x4(-0.118128635, -0.06761304, 0.20045926, -0.11828058, 0.022446023, -0.09117082, 0.11077834, 0.12605691, -0.094919816, -0.016070768, -0.025274863, 0.13070245, 0.14234897, -0.080053166, -0.14352201, 0.24688406), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nd2, MF4x4(-0.038446598, 0.06076558, 0.011793446, -0.027539631, 0.12532312, 0.12770405, 0.05115926, 0.07202868, 0.00048553053, -0.20094085, 0.14294891, 0.27486032, 0.09690127, -0.19488129, -0.010087613, -0.32277402), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ne2, MF4x4(-0.03640304, -0.03347442, -0.14699876, 0.084367014, -0.0931957, 0.0046109143, -0.10012045, -0.21788213, -0.22289619, -0.15080798, 0.053079627, 0.058909237, 0.0033036254, -0.266638, 0.15794982, 0.15606833), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nf2, MF4x4(-0.16570765, -0.19292961, -0.040884703, 0.0350054, 0.044223823, -0.05094823, -0.10369617, -0.026184212, -0.07026344, 0.08071905, -0.05532503, -0.105882615, 0.11906692, -0.12926123, 0.18500324, 0.09285109), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ng2, MF4x4(-0.30376035, -0.015966324, -0.080935225, -0.054857124, 0.008181847, -0.051866602, 0.086870745, -0.205586, -0.13184556, -0.03217006, 0.029946566, -0.10589564, 0.045322973, -0.1656244, -0.08579307, -0.121582575), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nh2, MF4x4(-0.06772616, -0.14879958, -0.17823575, 0.020676576, -0.04157187, -0.019993478, -0.026832247, -0.22187601, -0.12282354, -0.101527624, 0.10540906, -0.09816911, 0.01171376, -0.35307917, -0.21599512, -0.12673624), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ni2, MF4x4(0.13506149, -0.12476234, -0.23067783, 0.0016245812, 0.27068454, 0.085986294, 0.08674341, 0.07736311, 0.04183122, 0.09630597, 0.005955931, -0.033355173, -0.19212, -0.2707448, -0.18517534, -0.035879433), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(na3, MF4x4(-0.0151614295, 0.047397353, 0.0923022, 0.08485078, 0.15618569, -0.11042138, 0.12418296, -0.07967247, 0.053651772, 0.015027734, 0.048835948, 0.07711154, 0.020557769, 0.023958597, 0.04587901, -0.0014006038), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nb3, MF4x4(0.038551513, -0.10045045, 0.06231501, 0.043190606, 0.011727592, 0.10791629, 0.022111481, -0.053163722, 0.11845128, -0.102105886, 0.08789077, -0.0027942352, -0.08893058, 0.008466707, 0.011015023, -0.047280762), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nc3, MF4x4(0.013820725, 0.1256963, 0.041195784, -0.057415746, -0.07633132, -0.025274424, 0.029755162, -0.046797376, -0.037444938, -0.09385259, 0.14993298, 0.040402364, 0.057619866, 0.0044342144, 0.044209216, 0.13005155), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nd3, MF4x4(0.07646884, 0.18639803, -0.021711063, 0.021434348, 0.11517055, 0.010340496, -0.0018932755, -0.3739696, 0.1309672, 0.08240308, 0.08870368, 0.09622062, -0.07567563, -0.08575518, 0.12712875, 0.16571298), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ne3, MF4x4(-0.028878238, -0.06821328, -0.048233025, 0.010556409, 0.08252249, 0.12659778, 0.10306397, 0.041443437, -0.008534995, -0.08196783, -0.13689299, 0.048229158, 0.12889823, 0.12517701, -0.06344265, 0.11288182), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nf3, MF4x4(0.20085302, 0.024324976, 0.012985146, 0.045487225, -0.14292689, 0.091915675, 0.030304266, -0.007919423, -0.09057523, -0.13942213, 0.22375956, -0.15821122, 0.13392857, 0.06950518, -0.009899817, -0.19455001), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ng3, MF4x4(-0.18937646, 0.13056205, -0.09389302, -0.06861626, 0.030355467, -0.07237441, 0.079272114, -0.018099891, -0.057733692, 0.14460595, -0.068894215, 0.073404275, -0.005731954, -0.16851021, 0.029365558, 0.04029561), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(nh3, MF4x4(-0.11247864, -0.026352342, -0.26439467, 0.021711655, -0.17112786, 0.09201832, 0.058435153, -0.18282679, -0.058647767, -0.0882594, -0.09513095, 0.046603747, 0.118426494, -0.06860188, 0.14646193, -0.10118678), conv2d_10_tf);\n\tconv2d_10_tf = MulAdd(ni3, MF4x4(-0.08203177, 0.049650684, 0.11541628, 0.07473622, -0.06572682, -0.018375592, -0.0739239, -0.08190655, -0.012673694, 0.0003337712, 0.041397918, -0.047579113, -0.13510825, 0.025625594, -0.035801806, -0.045355853), conv2d_10_tf);\n\ttex11[gxy] = conv2d_10_tf;\n\tMF4 nconv2d_10_tf = max(-conv2d_10_tf, 0);\n\tconv2d_10_tf = max(conv2d_10_tf, 0);\n\n\tMF4 target = MF4(0.011156243, 0.004168819, 0.082229175, 0.043994825);\n\ttarget = MulAdd(e1, MF4x4(0.2216899, -0.006199309, -0.14865121, 0.06256912, 0.082141966, 0.069441915, -0.064958416, -0.014999604, -0.017270254, 0.054063573, -0.30066323, 0.09460075, 0.17069338, -0.26000282, 0.026078973, -0.0024098607), target);\n\ttarget = MulAdd(e2, MF4x4(0.22918217, 0.2753827, -0.2260137, 0.0074888375, 0.007864308, 0.01738929, 0.036404576, 0.15125586, 0.12692557, -0.1064573, -0.105954304, 0.17095445, -0.295937, 0.2284073, -0.28089303, 0.17836742), target);\n\ttarget = MulAdd(e3, MF4x4(-0.23949356, -0.20830329, 0.043005105, 0.11848222, 0.26292896, 0.13052817, 0.14105777, -0.14028162, 0.033770017, -0.12098709, -0.19063175, -0.020637099, 0.032703582, -0.31454226, 0.07559202, 0.067997165), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.26934767, 0.25418487, 0.2089665, -0.15689164, 0.068669625, -0.19087234, 0.034052055, -0.038685646, 0.037284948, 0.14673525, -0.001882231, 0.07179596, -0.054052413, 0.2954734, 0.108455196, 0.21742904), target);\n\ttarget = MulAdd(ne2, MF4x4(0.24180835, 0.012385412, -0.017178789, 0.032714315, -0.26524556, 0.024244266, -0.226589, -0.0358992, -0.2241718, 0.08004254, -0.017615836, -0.2492002, 0.09387765, 0.18154638, -0.034240507, 0.3605678), target);\n\ttarget = MulAdd(ne3, MF4x4(0.24151021, -0.014141217, -0.1259467, -0.19366209, -0.07166293, 0.08856931, -0.08999051, 0.31848234, -0.07388433, -0.16038652, 0.28902727, 0.2382835, -0.15296587, -0.12924191, 0.16233487, 0.05408346), target);\n\ttarget = MulAdd(conv2d_11_tf, MF4x4(-0.18532315, 0.116318375, -0.043276392, -0.20643523, -0.1317004, -0.025412546, -0.32449946, 0.08039049, -0.18457016, -0.015615943, -0.01645252, 0.21732457, 0.082662076, 0.1900878, -0.11705433, 0.14767131), target);\n\ttarget = MulAdd(nconv2d_11_tf, MF4x4(0.052993804, -0.11595191, 0.32436988, -0.003765943, 0.2296748, 0.119828835, -0.019125028, -0.3126433, -0.039699726, -0.24760635, 0.08949547, -0.012501165, 0.33296522, -0.349697, -0.081094205, 0.061596226), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(-0.033869196, 0.12660468, 0.12152309, -0.18401411, 0.1442463, 0.18430543, 0.22487932, 0.29795903, 0.17951487, -0.24413475, -0.13472381, 0.3147198, -0.22021247, -0.15316834, 0.013162168, -0.20238425), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.0015613904, -0.09523476, 0.024224702, -0.17930624, -0.061623972, 0.06495367, 0.3776854, -0.17299566, -0.36212873, 0.13202415, 0.07052771, -0.1219512, 0.29942214, -0.011110212, 0.36104754, 0.0010065075), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.16467105, 0.29388088, 0.13385788, 0.118168965, 0.15695275, -0.2269201, 0.097460486, -0.04286567, 0.020316202, -0.07753041, -0.18018067, -0.111885116, -0.17371373, 0.04722513, 0.2188871, 0.1295067), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(0.2567296, 0.0027146419, -0.18108767, -0.10636566, -0.04075492, 0.08977396, 0.27601838, 0.041642547, -0.29131287, -0.0026349663, 0.16847563, 0.29684088, 0.23944439, -0.12667872, -0.31902757, -0.023768846), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(-0.12111429, 0.046077378, 0.07920395, -0.3619861, 0.0030046673, -0.21324079, -0.14134064, 0.07692796, 0.2308601, 0.050601542, -0.20067136, 0.1312576, 0.078878105, -0.07905382, 0.04887801, 0.11589316), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(0.18035689, 0.022012187, -0.05441432, -0.13895841, 0.1792498, 0.06579118, -0.3518265, 0.19284686, -0.36724597, -0.19384578, 0.052024953, 0.069351286, -0.17106277, 0.01428955, -0.022695465, -0.03882866), target);\n\ttarget = MulAdd(conv2d_10_tf, MF4x4(0.12341931, 0.21374431, 0.14095145, 0.11081035, -0.1377048, 0.2957615, 0.2647214, -0.21324296, 0.18657272, -0.16867872, 0.13558641, -0.14022234, -0.00384067, -0.19601567, -0.20603377, 0.006892211), target);\n\ttarget = MulAdd(nconv2d_10_tf, MF4x4(0.05891213, 0.17766091, -0.11099863, -0.10597074, 0.4759035, -0.20892517, -0.35479382, -0.057822235, -0.10161365, -0.11828349, -0.021581944, 0.057930104, -0.46801752, -0.25330284, 0.30126703, -0.31744412), target);\n\ttex1[gxy] = target;\n\t\n\ttarget = MF4(-0.01212462, -0.018702446, -0.0063916473, -0.015887083);\n\ttarget = MulAdd(e1, MF4x4(0.137003, -0.06089221, -0.108805895, 0.27130327, -0.3015222, -0.26373127, 0.019133324, 0.035202216, 0.040255867, 0.09030984, -0.46218738, -0.3097094, -0.057662863, 0.123317555, 0.037645355, 0.010423522), target);\n\ttarget = MulAdd(e2, MF4x4(0.29102653, -0.17060617, 0.31592718, -0.15487169, -0.09719322, 0.08212171, -0.24112037, -0.5323616, 0.050776903, 0.26745227, -0.0123307025, -0.0076298076, -0.044822518, -0.15961778, 0.26758936, 0.019300641), target);\n\ttarget = MulAdd(e3, MF4x4(0.19517086, -0.2878986, 0.12765801, -0.12057966, 0.27521843, 0.028182628, 0.32267106, 0.035355434, -0.065272234, -0.015919037, 0.38220987, 0.14314096, 0.052418232, 0.07207548, -0.41493666, -0.03195114), target);\n\ttarget = MulAdd(ne1, MF4x4(0.18309553, -0.11183888, -0.052814357, -0.08971906, -0.14353213, -0.20144752, -0.20325397, -0.16143575, 0.028960846, -0.16557908, 0.266044, -0.2373641, 0.12750591, -0.11190832, 0.35028338, 0.17638433), target);\n\ttarget = MulAdd(ne2, MF4x4(0.058721025, 0.21000905, -0.2719825, -0.16923684, 0.2887994, 0.08877727, -0.1274528, 0.12557751, -0.09804875, -0.37839252, -0.1465434, -0.1059692, 0.07212408, -0.101579584, -0.16375211, -0.09519384), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.145749, -0.15073515, -0.2661711, -0.21265043, -0.3345085, -0.16820145, 0.07732321, 0.13837157, 0.014605319, -0.14113256, -0.3269443, -0.100293055, 0.114504874, -0.4271041, -0.17389913, 0.0033216716), target);\n\ttarget = MulAdd(conv2d_11_tf, MF4x4(0.022264633, -0.19477129, 0.050657783, -0.08318149, -0.5125155, 0.030831251, 0.110084355, -0.25779435, 0.08368584, 0.48425493, -0.28335044, 0.23433922, 0.31263804, -0.12789254, -0.14072786, 0.10106589), target);\n\ttarget = MulAdd(nconv2d_11_tf, MF4x4(0.007650675, -0.082783565, -0.1599306, 0.22329025, -0.01190027, 0.09498623, -0.06526687, -0.074669816, 0.13880949, -0.0060707824, -0.044009406, 0.15161307, -0.121638715, 0.012903123, 0.047266923, -0.41495043), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.1315474, 0.2878135, -0.03521026, 0.31479505, 0.4425801, 0.22921802, -0.19864602, -0.0049938424, -0.39346734, 0.09232505, 0.20387846, 0.08173493, -0.2582244, -0.23351125, 0.04481434, -0.105453715), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.10668876, -0.026544912, 0.19446668, 0.0045490777, -0.024656052, -0.11874863, 0.21377616, 0.16957945, 0.36561254, -0.19234993, -0.16987774, 0.05442733, -0.13925838, -0.09912278, -0.06849117, 0.2862709), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.33045495, -0.13048914, -0.023560356, -0.21611182, 0.031752963, 0.14722162, -0.18900181, -0.214494, -0.014231522, 0.23605579, 0.04047805, 0.4060913, -0.13969432, -0.20286381, -0.29891747, -0.043839972), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(0.12433207, 0.20156589, -0.16986352, 0.07386095, -0.08681933, -0.055620465, -0.043641977, 0.25392216, -0.19010517, -0.018021587, -0.040169913, 0.3845108, -0.18094495, -0.07285529, 0.1848976, -0.24628341), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(-0.038218584, 0.1562106, -0.14935517, 0.14979756, -0.24085392, -0.32680586, -0.015209841, 0.31288582, 0.15819284, -0.084411524, -0.18117775, 0.16964395, 0.29338664, -0.020204993, 0.011733066, -0.03798886), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(-0.020065956, -0.043856975, 0.016091857, 0.19466555, 0.16528654, 0.049655683, -0.3676622, -0.14080617, -0.094320625, 0.27908608, -0.084430434, -0.07656003, 0.19461128, 0.11947404, -0.05046522, -0.12625407), target);\n\ttarget = MulAdd(conv2d_10_tf, MF4x4(-0.013265381, -0.015804514, -0.12068759, -0.06364535, -0.040848896, -0.07602193, -0.04744431, 0.29088646, 0.1358165, 0.010972456, -0.04270195, -0.091147564, -0.2690454, 0.23030208, -0.39135924, -0.22463588), target);\n\ttarget = MulAdd(nconv2d_10_tf, MF4x4(0.20590256, 0.098045684, 0.3285928, 0.04094028, 0.12415101, 0.244203, 0.048238404, 0.17298737, 0.22513592, 0.048016686, -0.11171281, 0.12644528, -0.40468216, -0.02186692, -0.09637657, -0.20869099), target);\n\ttex2[gxy] = target;\n\t\n\ttarget = MF4(0.019361967, -0.009793055, 0.03647491, -0.010136049);\n\ttarget = MulAdd(e1, MF4x4(0.06816948, 0.34817252, -0.046539452, 0.0051957658, -0.1393289, -0.123660676, -0.28295487, -0.09683893, -0.3166085, 0.112649016, 0.016630042, 0.12213537, 0.048850413, 0.10865108, 0.36645818, -0.1570077), target);\n\ttarget = MulAdd(e2, MF4x4(0.16992034, 0.15695556, 0.23111318, -0.07952356, 0.008467285, -0.11592582, -0.18852152, 0.11257074, 0.24210866, 0.1062648, -0.101493195, 0.04611632, -0.13289067, -0.07632904, 0.012860103, -0.08678244), target);\n\ttarget = MulAdd(e3, MF4x4(0.19332299, -0.06392618, -0.18013911, 0.23211008, -0.0025107847, 0.4468814, -0.15807462, -0.27148855, 0.24238719, 0.16024797, -0.22240195, 0.2425211, 0.008685379, -0.43995225, 0.28782377, -0.04508348), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.038411126, -0.0034189979, -0.10616163, -0.22397435, 0.005768774, 0.13181472, 0.091235116, 0.07068676, 0.08932033, 0.025967117, -0.053367026, -0.22340903, -0.13413511, 0.24192514, -0.011392121, -0.09885669), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.13691483, 0.058308467, 0.14866434, 0.005773672, -0.16254735, -0.03150588, 0.16304344, 0.31798756, -0.22399272, 0.033883456, -0.09658691, -0.12437203, -0.117079385, 0.21686973, -0.037619635, -0.085622996), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.24666454, -0.06097481, -0.08042751, -0.09151835, -0.09213628, 0.06706758, -0.12596707, 0.05328458, 0.25016794, -0.21868211, 0.22890028, -0.16557315, 0.036212686, 0.13603954, -0.20226133, -0.22868301), target);\n\ttarget = MulAdd(conv2d_11_tf, MF4x4(0.022882584, -0.023618432, 0.08065757, 0.33173925, 0.07162631, -0.010860303, 0.15222527, -0.21064946, 0.023574507, 0.06347729, -0.2955436, 0.31633475, -0.3643237, -0.087610714, -0.089636534, 0.13809934), target);\n\ttarget = MulAdd(nconv2d_11_tf, MF4x4(-0.22458415, -0.01961852, -0.014363966, -0.2820657, -0.20567393, 0.106780864, -0.43547606, 0.3259588, 0.42431846, -0.30789465, -0.053756483, 0.18392731, -0.43784657, 0.23359884, 0.25319567, -0.1464313), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.06667747, 0.011182004, 0.26176485, -0.15575507, -0.017922953, 0.0014675539, -0.13763407, -0.086996995, -0.00082739035, 0.03939667, -0.09286956, 0.29952076, 0.014103506, 0.10058367, 0.16165632, 0.23478027), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.1966405, 0.11404606, -0.12005759, -0.22895505, -0.0848272, 0.021871557, 0.044186037, -0.111861885, -0.16986093, -0.24633476, 0.07282808, -0.26975635, 0.34241816, 0.030470898, -0.09903839, -0.22579415), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.10059369, 0.010142443, 0.061046213, 0.6807189, 0.005402132, -0.21700516, 0.16900781, -0.09973772, -0.025505878, 0.14216411, 0.14366129, -0.02743741, 0.09240224, 0.055595424, -0.22342968, 0.32391673), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.24940865, -0.042881966, -0.19815244, -0.05011009, 0.32227826, 0.07563262, -0.22649106, 0.10700333, -0.14117172, 0.1359497, -0.14451554, 0.34859756, 0.060239617, 0.09917812, 0.13169186, 0.077682465), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(-0.0714192, 0.12607583, -0.3341241, 0.18375745, -0.18943295, 0.11634349, 0.06633747, -0.13485552, 0.045528308, 0.2432545, 0.26417813, 0.0074096527, 0.004411052, -0.5647283, 0.021793056, -0.1910634), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(0.04678379, 0.15781826, -0.14137928, -0.065010436, 0.1379615, -0.07252597, -0.05457498, 0.049137864, 0.054244712, -0.24069838, -0.11444052, 0.27642834, 0.19889133, 0.31845504, -0.102143094, 0.088378325), target);\n\ttarget = MulAdd(conv2d_10_tf, MF4x4(-0.1163185, 0.19226453, -0.1896929, -0.30681732, -0.013604632, -0.12468549, 0.018667353, 0.09807849, 0.030277459, 0.18578297, 0.14520812, 0.43598676, 0.24981564, 0.22188906, -0.12707953, 0.35956743), target);\n\ttarget = MulAdd(nconv2d_10_tf, MF4x4(-0.1817424, 0.27081814, -0.16284765, 0.033412658, -0.29831278, -0.1345311, 0.27491164, 0.14552177, -0.054520354, -0.2996891, -0.1279112, -0.64904505, 0.049450837, -0.021562194, -0.6366078, 0.15545636), target);\n\ttex3[gxy] = target;\n}\n\n//!PASS 6\n//!DESC Conv-4x3x3x24, Conv-4x1x1x72\n//!IN tex1, tex2, tex3, tex10, tex4, tex8, tex9, tex11\n//!OUT tex5, tex6, tex7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = tex2.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\t\n\tMF4 a3 = tex3.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f3 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = tex3.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\t\n\tMF4 conv2d_11_tf = tex10.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_11_tf = max(-conv2d_11_tf, 0);\n\tconv2d_11_tf = max(conv2d_11_tf, 0);\n\t\n\tMF4 conv2d_1_tf = tex4.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_1_tf = max(-conv2d_1_tf, 0);\n\tconv2d_1_tf = max(conv2d_1_tf, 0);\n\t\n\tMF4 conv2d_4_tf = tex8.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_4_tf = max(-conv2d_4_tf, 0);\n\tconv2d_4_tf = max(conv2d_4_tf, 0);\n\t\n\tMF4 conv2d_7_tf = tex9.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_7_tf = max(-conv2d_7_tf, 0);\n\tconv2d_7_tf = max(conv2d_7_tf, 0);\n\t\n\tMF4 conv2d_10_tf = tex11.SampleLevel(sam, pos, 0);\n\tMF4 nconv2d_10_tf = max(-conv2d_10_tf, 0);\n\tconv2d_10_tf = max(conv2d_10_tf, 0);\n\n\tMF4 conv2d_13_tf = MF4(-0.0258258, -0.014007201, -0.0051976936, 0.023554644);\n\tconv2d_13_tf = MulAdd(a1, MF4x4(0.18203236, 0.08024887, -0.036568414, 0.13316368, -0.04578262, -0.06611782, -0.006320991, 0.19218548, 0.21009454, -0.08195536, 0.02459481, 0.037244156, -0.09028578, 0.025431598, 0.118399516, -0.11004066), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(b1, MF4x4(-0.057694096, 0.016725041, 0.09517554, -0.063389495, -0.15092854, -0.17499524, -0.023841592, -0.0021040211, -0.15481879, 0.058758404, -0.11097904, -0.026721174, 0.0025346193, 0.05679149, 0.0072498247, -0.13605994), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(c1, MF4x4(-0.029078262, 0.009836967, 0.07132015, 0.06620542, -0.21533649, 0.13504961, -0.026253965, 0.15687846, -0.041120164, -0.11824143, -0.03505001, -0.069189556, -0.020444538, -0.040636882, 0.104192354, 0.02525567), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(d1, MF4x4(-0.0033649271, 0.11870954, -0.29426005, 0.06678275, -0.21843383, -0.06478074, 0.055388454, 0.03360907, 0.15619075, 0.03552764, -0.004492958, -0.11098848, 0.0945473, -0.12231036, 0.060498584, -0.017200515), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(e1, MF4x4(0.11771511, 0.19074214, 0.2556847, -0.00011035888, -0.06266651, -0.18949944, -0.08458407, -0.4617736, 0.049839392, 0.0028800126, 0.112179466, -0.23129073, 0.07304365, 0.08169297, 0.010470617, -0.10990468), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(f1, MF4x4(0.2365061, -0.011560716, 0.040669534, 0.05682574, -0.108832434, 0.108204864, -0.016406072, -0.35809964, 0.19385669, 0.011194286, 0.022534747, -0.18770002, 0.040628985, -0.106064685, -0.12965748, -0.11940811), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(g1, MF4x4(-0.07578536, 0.055741407, -0.07985701, -0.08520933, -0.119309366, -0.001639899, -0.045735355, 0.060324576, -0.04602573, -0.067629695, -0.024497611, 0.11022731, 0.0866483, 0.023369456, 0.092412636, -0.15647933), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(h1, MF4x4(0.1151201, -0.06150153, -0.007215896, -0.027420595, -0.27713504, -0.30414173, -0.25002155, 0.04579516, 0.07746921, -0.039378557, -0.0007037489, 0.05171079, 0.04729991, -0.24362347, -0.03316277, -0.029248973), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(i1, MF4x4(0.08882578, -0.089215234, -0.027231896, 0.09565371, -0.040585488, -0.0666667, -0.10971792, -0.18664278, 0.08676577, 0.011609924, -0.11474831, -0.0032087977, -0.14733344, -0.013885521, -0.0600112, -0.028661741), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(a2, MF4x4(-0.16421804, 0.13640842, -0.053869005, -0.105430946, 0.33498198, -0.19186987, -0.044760693, 0.12338264, 0.04087762, 0.35624924, 0.16211961, -0.16837841, -0.21358813, 0.07136877, 0.09507147, 0.15890902), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(b2, MF4x4(-0.3021354, -0.3319794, 0.070228204, 0.1157857, -0.23864768, -0.124694765, -0.035166927, -0.2196196, 0.11144565, 0.15449396, 0.31777796, 0.23201036, 0.36269313, 0.0791044, -0.14027423, -0.10298774), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(c2, MF4x4(0.0045441133, 0.14908041, -0.04037237, 0.012396483, -0.41045487, -0.049013153, -0.25163352, -0.18674599, -0.020136787, -0.04309944, 0.16324212, 0.20724443, 0.0013537789, 0.10984782, -0.050586786, 0.07564281), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(d2, MF4x4(-0.35524195, -0.08884062, -0.061092835, 0.0016606712, -0.18841584, -0.28330895, 0.110710636, -0.20210983, 0.01599891, -0.019640112, -0.06881855, -0.2822387, 0.16723692, 0.42387784, 0.17316435, 0.014779502), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(e2, MF4x4(-0.14352255, 0.2557878, 0.14022757, -0.09769558, -0.08192019, 0.4160667, 0.20182422, -0.29740554, -0.16924635, 0.044684824, -0.21592674, -0.04393559, -0.44846448, -0.2268265, -0.15033214, -0.1552571), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(f2, MF4x4(-0.46804324, -0.05876729, 0.0023225946, -0.1399195, -0.12917824, 0.12800436, 0.5672086, 0.42298177, -0.25502345, -0.15043756, -0.010454711, -0.16799574, 0.1695203, 0.31919575, 0.090758204, -0.03608345), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(g2, MF4x4(-0.20859653, -0.025662629, 0.11013811, 0.021071844, -0.21565554, -0.08014497, -0.041803278, 0.15999684, -0.09659372, -0.2930284, 0.22263159, -0.058361106, -0.06474458, -0.18948506, -0.22297342, 0.002085207), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(h2, MF4x4(-0.25466987, 0.07562997, -0.046997566, 0.01815494, 0.015587753, 0.19885786, 0.17028151, -0.20973559, -0.13089986, 0.056037027, -0.16056974, -0.09570157, 0.36515233, 0.2177508, -0.19389395, 0.042368103), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(i2, MF4x4(-0.09177028, 0.029719152, 0.035980605, -0.111842036, -0.14203559, -0.0016779151, -0.23984708, -0.24259119, -0.32218066, -0.16303101, -0.042665064, 0.018674236, 0.132396, -0.07117317, -0.11266681, -0.25140917), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(a3, MF4x4(-0.2254921, -0.089444794, -0.03250626, -0.002422312, -0.07599525, 0.06057337, 0.09297158, -0.13625564, -0.05718329, 0.1393445, -0.14238319, -0.035561938, 0.10357985, 0.14509755, -0.05125032, 0.071264446), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(b3, MF4x4(0.14345558, -0.13649228, 0.07141237, -0.31665677, -0.106410414, -0.024022767, 0.022847228, -0.066274576, 0.27855787, 0.27377915, 0.100737795, 0.2585287, 0.065262236, 0.3338305, 0.013705893, 0.15107758), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(c3, MF4x4(0.24887003, 0.27924842, 0.011750549, 0.02100809, -0.060978264, 0.09022114, 0.10060977, -0.117189266, -0.064989, 0.050291102, 0.02154075, 0.07428455, 0.0128874695, -0.0824151, -0.0955003, 0.1240542), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(d3, MF4x4(0.09787086, -0.038460266, -0.012216873, 0.020269781, -0.14274825, -0.10365878, 0.107120685, 0.005830931, 0.18160833, -0.039512586, 0.054537058, -0.10175313, 0.2583083, 0.12110453, 0.11164319, -0.097267024), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(e3, MF4x4(0.04403219, -0.06616097, -0.1881836, -0.17728293, -0.30001318, 0.14179994, 0.077847786, 0.009201645, 0.2055038, 0.10847946, 0.034566265, 0.0823046, 0.016860636, -0.029249087, -0.16692844, 0.15714505), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(f3, MF4x4(0.01654197, -0.005030059, 0.15659711, 0.029457249, -0.10084003, -0.17541635, 0.20056525, 0.11890777, 0.041007854, -0.021843065, -0.047474306, 0.02461869, 0.09578964, -0.054728534, -0.022951778, 0.1384323), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(g3, MF4x4(-0.17401876, 0.0050307186, -0.14960738, -0.06744025, -0.026341015, -0.015185451, 0.097973764, 0.01230041, 0.043848213, -0.022325305, -0.01173514, -0.12744233, -0.1192904, -0.019170178, 0.16593695, -0.11961721), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(h3, MF4x4(0.16905174, -0.05465901, -0.10304148, 0.06422409, -0.06595216, 0.032311443, 0.06506821, 0.06866468, 0.12749052, 0.2812222, 0.10223055, -0.009964554, 0.10145132, 0.05452548, 0.21845295, 0.060436632), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(i3, MF4x4(0.009076048, -0.075771615, -0.010236168, -0.049228482, -0.009111011, 0.0032872239, 0.030809326, -0.021389242, -0.13207865, -0.20758687, 0.06795314, 0.16716966, 0.022448925, 0.005127875, 0.14822717, 0.1543517), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(na1, MF4x4(0.15177163, -0.059483033, -0.061815593, -0.048359588, 0.08666249, 0.01303385, -0.0797276, 0.00045918894, 0.044986565, -0.16032507, 0.001627205, -0.11240742, 0.36031052, 0.3453977, 0.20082399, -0.0872419), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nb1, MF4x4(0.20732729, 0.29925603, -0.027490204, -0.07813189, -0.16492629, 0.13322815, 0.0031292376, 0.041497275, -0.08320837, 0.10200068, -0.17992872, -0.06903506, 0.12075557, 0.10240156, 0.17685287, -0.07302424), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nc1, MF4x4(0.09832397, 0.072229534, -0.038651302, 0.23663157, -0.049382553, -0.11816951, -0.095177956, -0.0063895187, -0.22133054, 0.027618079, -0.010867105, 0.20221426, -0.055768233, 0.123813964, -0.04770652, 0.031318672), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nd1, MF4x4(0.19019139, -0.0055707553, 0.26110023, 0.053353935, -0.09224678, 0.103274055, 0.054068115, -0.028470352, -0.050636273, 0.044128064, -0.1790452, -0.01937518, -0.22987902, 0.13224003, 0.06837358, -0.21524249), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ne1, MF4x4(-0.06441057, -0.14875272, 0.1966193, -0.19311902, 0.116319604, -0.015221862, 0.22331011, -0.12665007, 0.1492529, -0.060963593, -0.13987945, -0.00267954, 0.17791282, -0.017524656, 0.009128157, -0.19969128), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nf1, MF4x4(-0.15118724, -0.02174076, 0.18955654, 0.004134554, -0.074481554, -0.022116778, -0.23729491, -0.21471047, -0.17819612, 0.13824348, -0.0189012, 0.2410327, 0.122907236, 0.115833536, 0.07078602, 0.1497625), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ng1, MF4x4(-0.0030512493, -0.004724951, 0.13259876, 0.009409425, -0.09696517, -0.12920079, -0.13467522, -0.05229473, -0.03711706, -0.038291495, -0.1493357, 0.09193146, -0.11654958, -0.1384159, -0.0809269, 0.12138653), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nh1, MF4x4(-0.111716144, -0.033208963, 0.19639781, -0.28904846, 0.043729085, 0.016957026, -0.078926295, -0.19079417, 0.06363828, -0.019629745, 0.058766138, -0.120303996, -0.15203112, -0.16788657, -0.15019903, -0.20598294), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ni1, MF4x4(0.09737031, 0.19906493, 0.31577814, 0.09887659, -0.10737645, 0.03927124, 0.008865094, 0.030515334, -0.03767332, 0.19419806, 0.052343797, -0.12595782, 0.018560758, -0.004252203, 0.12685028, -0.19064935), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(na2, MF4x4(-0.107926846, 0.05654491, 0.039178263, -0.022938857, -0.055884767, 0.01403891, 0.040060706, -0.0876108, -0.08530536, 0.035486717, -0.1397322, -0.111439094, 0.3098693, 0.031957068, -0.1323169, 0.036736827), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nb2, MF4x4(-0.042637993, -0.13947937, -0.06313642, -0.013281999, -0.07746704, -0.0033614477, 0.062081654, -0.028974544, -0.09252038, 0.23787987, -0.03051402, 0.08857487, -0.10345242, 0.08111023, 0.012858327, 0.025468932), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nc2, MF4x4(-0.057991188, 0.06572571, -0.17195612, -0.18226011, 0.13167764, -0.029910656, 0.07416073, 0.011874738, 0.020921603, 0.1790944, -0.02713754, -0.04678265, 0.0025504003, -0.07831189, 0.0022889362, 0.17452945), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nd2, MF4x4(-0.08273035, -0.06628758, 0.09288723, 0.17525311, -0.015099176, -0.02920585, 0.01664239, 0.16360165, -0.058821842, 0.023668878, 0.13803177, 0.05805197, -0.033553623, -0.020296576, -0.2126249, 0.054712847), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ne2, MF4x4(0.11607657, 0.09721635, 0.076664194, 0.107737765, -0.18090104, -0.09323497, 0.1018825, 0.025112988, -0.037965916, 0.07314205, 0.16523585, -0.16451308, 0.011332593, 0.05381852, 0.053742763, -0.051402804), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nf2, MF4x4(0.08998201, -0.09690652, -0.090980336, 0.21645999, -0.1421605, 0.017344419, -0.080088496, -0.1686495, 0.13406368, 0.004237983, 0.028970357, -0.015848784, -0.07229926, -0.08199748, 0.14972275, 0.11688227), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ng2, MF4x4(-0.10923993, -0.006186229, -0.0059918985, -0.056261536, 0.12305135, 0.07601222, 0.015556293, 0.039497726, 0.004694121, 0.03006972, -0.11686323, -0.1083031, -0.053210545, 0.06765771, 0.1847543, 0.12722884), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nh2, MF4x4(-0.15110816, -0.114151604, 0.06755774, 0.1535812, -0.0055134855, 0.124444366, 0.116650686, 0.015837835, -0.13255565, -0.023659749, 0.012672263, -0.014328633, -0.25721112, 0.03517644, 0.07895924, 0.017762167), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ni2, MF4x4(-0.0048434106, -0.15848884, 0.07007013, -0.0040173456, 0.12461628, -0.006840197, 0.054776177, 0.030113375, 0.011075732, -0.12137928, 0.039907288, 0.041261338, -0.03539033, -0.010571816, 0.17591824, 0.07626049), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(na3, MF4x4(-0.09215494, -0.047397707, 0.020372266, -0.03961589, -0.2969749, -0.23441714, 0.041512486, -0.23838238, 0.15105574, 0.030688843, 0.10364508, -0.037372112, 0.24514282, 0.11799978, -0.25672802, -0.05064504), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nb3, MF4x4(-0.22321941, -0.22637981, 0.12784286, -0.15949993, -0.1747607, 0.019964136, -0.101212226, -0.14332725, -0.0040852833, 0.13991846, -0.121760346, -0.074741244, -0.14598946, 0.017030315, -0.21471639, 0.023562988), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nc3, MF4x4(-0.025941253, -0.085331805, 0.006736805, 0.080889955, -0.06974209, -0.20366986, -0.2243817, -0.18153073, -0.0024152526, 0.047323234, 0.03407195, 0.016644841, -0.0060426793, -0.1146607, 0.11816627, -0.09477427), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nd3, MF4x4(-0.11221949, -0.016993113, -0.028873868, 0.30510077, -0.10090775, -0.56358117, -0.2178131, -0.3253011, 0.05903533, 0.23069671, -0.040006876, -0.2242038, -0.10916342, -0.038909998, -0.081489064, 0.06539624), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ne3, MF4x4(-0.059550002, -0.07048971, 0.08075795, 0.07341893, 0.08720143, -0.08745607, -0.28628471, 0.004085622, -0.059510656, -0.07080941, -0.17805275, 0.010445313, 0.08262345, 0.14971328, 0.086313516, 0.4270992), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nf3, MF4x4(-0.25829327, -0.25821465, -0.025910528, -0.1256417, -0.32173184, -0.012251011, -0.31182033, -0.17723739, 0.05439974, -0.0018167618, 0.06974409, -0.024687098, 0.05163715, 0.011181801, 0.060559656, 0.18320788), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ng3, MF4x4(0.048055783, 0.030901788, 0.00014199098, -0.015663194, -0.27395675, -0.1374474, 0.055429243, 0.09942114, -0.037852254, -0.033255827, 0.022523645, 0.04666904, 0.16599222, -0.02004086, 0.21397619, -0.11373404), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(nh3, MF4x4(-0.23445702, -0.06371413, -0.08418856, 0.06907252, 0.20780656, -0.13808912, 0.018577656, -0.0046262434, 0.09724245, -0.114031695, 0.022883652, 0.107561804, -0.010228, 0.0033352477, 0.12142382, -0.035946723), conv2d_13_tf);\n\tconv2d_13_tf = MulAdd(ni3, MF4x4(0.058773417, -0.06617424, -0.13876313, -0.007238876, -0.17449926, 0.14130935, -0.17021981, 0.09241347, 0.018518088, 0.085447155, -0.14430992, 0.035074715, -0.02784563, 0.15934117, -0.00036379634, -0.040411446), conv2d_13_tf);\n\tMF4 nconv2d_13_tf = max(-conv2d_13_tf, 0);\n\tconv2d_13_tf = max(conv2d_13_tf, 0);\n\n\tMF4 target = MF4(0.0053140894, -0.030208405, 0.04287835, -0.059097543);\n\ttarget = MulAdd(e1, MF4x4(0.13381699, 0.17966591, -0.0866034, -0.15282217, -0.2567282, -0.38080183, 0.10091161, 0.32172382, -0.064547606, -0.08161712, -0.033353675, -0.0019234467, 0.027740227, 0.2277078, 0.06759129, -0.22699283), target);\n\ttarget = MulAdd(e2, MF4x4(-0.122093834, 0.20621717, -0.08142724, 0.16477586, 0.4863212, -0.24032472, 0.00055996195, 0.50562304, 0.028121283, 0.56215876, 0.014577866, 0.06960302, -0.15964645, 0.14526807, -0.026474794, -0.02554081), target);\n\ttarget = MulAdd(e3, MF4x4(-0.101622745, 0.022395104, -0.14208415, 0.09508211, 0.20496333, 0.11371943, -0.024784304, 0.09519364, 0.09233463, 0.03117482, -0.15262024, -0.16956648, -0.2432608, -0.12877996, -0.13148616, 0.043081667), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.28086182, -0.15846887, -0.058738094, -0.181707, -0.018847898, 0.05197007, 0.09753647, -0.19714034, -0.062462445, -0.17604835, 0.1268098, 0.15334699, 0.05568127, 0.16867611, -0.1686486, 0.28579247), target);\n\ttarget = MulAdd(ne2, MF4x4(0.20252296, -0.27393097, 0.06578763, -0.12628423, -0.10547165, 0.030740904, -0.19412865, -0.034658667, -0.09081653, -0.19958268, 0.16915733, 0.056093715, 0.10596871, -0.1742866, 0.004890009, 0.19515324), target);\n\ttarget = MulAdd(ne3, MF4x4(0.32077652, -0.004434404, -0.12717858, -0.13544025, -0.450333, 0.04072708, 0.04316467, -0.2578049, -0.011932833, 0.18828999, 0.12326536, -0.016795376, -0.0054118615, 0.061453808, 0.28015187, 0.13463841), target);\n\ttarget = MulAdd(conv2d_11_tf, MF4x4(0.08942177, -0.0021343376, 0.23693596, -0.15413974, -0.32839566, -0.010874302, 0.033822935, 0.038676813, 0.18920816, 0.019961799, -0.055697896, -0.042120066, 0.10387084, 0.047366753, 0.17899887, -0.071130194), target);\n\ttarget = MulAdd(nconv2d_11_tf, MF4x4(0.0010777018, -0.071475126, -0.16156957, -0.08781234, -0.08701292, 0.29084647, -0.34587428, 0.06969663, 0.036580127, 0.106745, -0.1534462, 0.106189206, -0.22758242, 0.20691736, -0.018554503, -0.056773946), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(0.14826776, -0.03700497, 0.066144, 0.023859248, -0.16708666, -0.23908418, 0.062023632, -0.16278005, 0.06265635, -0.039846748, -0.13978398, -0.027952245, 0.099891245, 0.18235108, 0.00991435, 0.0423486), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.17948383, -0.082759954, 0.10543674, -0.18660031, 0.0664088, -0.06837087, 0.04300318, 0.011699623, -0.017162412, -0.030628186, 0.07547453, 0.20060332, -0.19182351, 0.04914753, 0.040280227, -0.12417484), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.04074336, -0.041421015, -0.0372822, 0.1647266, -0.13993263, 0.0029407872, -0.39398977, -0.1778468, 0.21322449, 0.19134948, -0.02818874, 0.226251, 0.06352273, 0.12620094, 0.24221466, 0.20657893), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.094572894, -0.046852108, 0.21210444, -0.14082888, -0.050984625, -0.13443558, 0.24309658, 0.1573335, 0.21941295, 0.11642813, 0.09684106, -0.08597462, 0.15502413, -0.018070435, 0.1292023, -0.1557655), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(0.025215387, 0.16676718, -0.068287216, 0.017648363, 0.2779579, 0.059142746, -0.096408874, 0.22609432, 0.20962398, 0.24879578, 0.023621194, -0.29692242, 0.02272032, -0.33367038, 0.15799981, -0.1699598), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(0.08816878, 0.076234445, -0.06670541, 0.024926793, -0.12045598, 0.07443171, 0.22081238, -0.044906516, -0.02448027, -0.22067828, -0.016471038, 0.21801811, 0.16276583, 0.34590468, -0.18487914, 0.0554853), target);\n\ttarget = MulAdd(conv2d_10_tf, MF4x4(-0.085593045, -0.002904318, 0.049969394, -0.06931361, -0.10722648, -0.08499641, -0.25997344, 0.22650665, 0.069008924, -0.23179024, 0.20058884, -0.20237185, -0.1606995, 0.0758858, -0.09946377, -0.21032207), target);\n\ttarget = MulAdd(nconv2d_10_tf, MF4x4(0.11210572, 0.055658836, 0.041539114, 0.078087114, -0.060435783, 0.08331363, 0.07356019, 0.0842336, -0.38098484, 0.020591227, -0.45916042, 0.06386686, -0.19348675, 0.041925576, -0.23489946, -0.06711732), target);\n\ttarget = MulAdd(conv2d_13_tf, MF4x4(-0.13721304, 0.15404533, 0.102312036, -0.090253755, 0.08690545, 0.034154307, 0.07618604, -0.15844443, -0.10604342, 0.2646684, -0.08719668, 0.19331944, 0.10569642, -0.058054388, -0.0110980645, -0.08710107), target);\n\ttarget = MulAdd(nconv2d_13_tf, MF4x4(0.15567884, -0.11589786, 0.031855986, 0.005064268, 0.37850487, 0.30044487, -0.2604449, 0.061879188, -0.015081224, -0.30759993, -0.07571204, -0.0077929585, -0.08748009, 0.22546281, -0.06377379, 0.435342), target);\n\ttex5[gxy] = target;\n\t\n\ttarget = MF4(-0.015380624, 0.018387195, 0.052286647, 0.055403516);\n\ttarget = MulAdd(e1, MF4x4(0.0029025443, 0.021165721, 0.0070854356, 0.065646365, 0.024636142, 0.20825955, -0.0917655, -0.1706138, -0.1827491, 0.13347003, 0.12910214, 0.06828513, -0.026193604, -0.11451178, 0.0356333, -0.08071165), target);\n\ttarget = MulAdd(e2, MF4x4(-0.027241195, 0.032633994, -0.17490302, -0.5352789, -0.15734912, 0.24714436, 0.029301014, 0.212763, -0.051665317, -0.06783505, -0.040298667, 0.041179724, 0.49683514, -0.35600296, -0.2518442, -0.22965558), target);\n\ttarget = MulAdd(e3, MF4x4(-0.061614696, -0.10463926, 0.1594845, 0.036565617, 0.09095015, -0.15100475, -0.09242749, 0.08335822, -0.027257469, 0.4156707, 0.03322028, 0.19685929, 0.07034635, 0.10204465, 0.03657313, 0.30920812), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.20980133, -0.054115582, 0.031674277, -0.040077273, -0.21693806, 0.016596884, -0.029177245, -0.16924128, 0.121823296, -0.0004884774, 0.10644538, 0.068388954, 0.16517027, -0.12152921, -0.18299894, -0.17595083), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.0006413291, -0.09444853, 0.15260176, 0.23014128, 0.09366626, 0.06947763, 0.04956597, -0.07001088, -0.075523324, 0.16111156, -0.11700089, 0.14528704, -0.096407495, 0.027310526, -0.03946532, 0.15302157), target);\n\ttarget = MulAdd(ne3, MF4x4(0.086061105, -0.0070365844, -0.25230658, 0.18741103, -0.36380208, -0.058444727, 0.25284684, -0.26617825, -0.08817363, -0.12209333, 0.011920746, -0.031505488, -0.21880315, 0.16762236, 0.14518112, 0.13803998), target);\n\ttarget = MulAdd(conv2d_11_tf, MF4x4(-0.17088315, -0.06812898, -0.085912764, 0.25550255, -0.26439053, 0.23305506, 0.18186118, -0.06186191, 0.0075220955, 0.10316868, 0.04271979, -0.008083033, -0.19474187, -0.06700431, 0.15485007, -0.11886802), target);\n\ttarget = MulAdd(nconv2d_11_tf, MF4x4(0.06597312, -0.31435877, -0.08179224, -0.2568261, 0.29904976, 0.21664406, -0.15343861, -0.11589945, 0.12654455, -0.042093027, -0.17231914, -0.26832506, -0.12008876, 0.11483079, 0.10222754, 0.12562539), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(-0.09949413, 0.01479024, -0.16933955, 0.025359191, -0.2210058, -0.19663176, 0.19453603, -0.111461386, -0.12529027, 0.14243664, 0.122677036, -0.101476125, 0.011010597, -0.014422488, -0.048979994, 0.03657997), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.06923051, -0.1223873, 0.021781938, 0.1323696, -0.11582021, -0.018292433, 0.07495496, 0.043008957, 0.0070410958, -0.14431225, -0.06380941, -0.17411429, 0.052226365, 0.021460915, 0.097367965, 0.37138346), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(0.16420697, 0.008790036, 0.17185563, -0.025144322, -0.108827055, -0.13030754, -0.14254087, 0.05208047, 0.03751449, 0.06774824, -0.07746288, 0.2250457, 0.039049506, 0.101244815, -0.18138403, -0.12212992), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.05138809, 0.19150224, 0.05698308, 0.015970863, 0.23931703, -0.085039265, -0.18294281, 0.03647365, -0.041568805, -0.2920049, 0.013272974, -0.41181135, -0.08101046, 0.028989056, 0.2952233, 0.16312017), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(0.093839854, -0.038790308, -0.086285874, -0.17890124, -0.2598202, 0.069419555, -0.0065180454, 0.01453452, -0.090191156, 0.012278203, -0.13148692, -0.025104592, 0.09296121, -0.1833281, 0.074660525, -0.031280298), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(-0.05336347, 0.08608969, -0.074649446, 0.014608438, 0.22511393, 0.18610351, -0.0029040743, 0.096127085, -0.20254624, 0.14036441, -0.005226189, 0.055212848, 0.20482111, 0.06645607, -0.12018032, 0.062814355), target);\n\ttarget = MulAdd(conv2d_10_tf, MF4x4(0.13722958, -0.077169575, 0.07269382, 0.20902501, -0.103985704, -0.21184038, -0.12424109, -0.3059887, -0.185413, -0.1964241, -0.14370187, 0.07646031, -0.057924826, 0.28884047, -0.06701312, -0.14548934), target);\n\ttarget = MulAdd(nconv2d_10_tf, MF4x4(0.14129579, 0.12990993, -0.08791828, 0.07986884, -0.006362554, 0.005971629, 0.016816271, 0.075642705, -0.060138028, 0.13658188, 0.0020529197, -0.38745758, -0.16191563, 0.20532359, 0.34441018, 0.0071060034), target);\n\ttarget = MulAdd(conv2d_13_tf, MF4x4(-0.03236983, -0.08242242, 0.065607354, -0.072457135, 0.024461512, 0.15522943, 0.120296456, 0.052112654, 0.21442589, 0.19565494, 0.06760742, 0.37604833, 0.097620994, -0.002347599, 0.09269131, -0.34238556), target);\n\ttarget = MulAdd(nconv2d_13_tf, MF4x4(0.3276042, -0.17974046, -0.095954694, -0.123248585, 0.08306674, -0.3486506, -0.4620704, -0.40518835, -0.17438394, 0.24350463, 0.05616052, -0.14715664, 0.2078043, -0.007834002, -0.21199054, 0.026597755), target);\n\ttex6[gxy] = target;\n\t\n\ttarget = MF4(-0.0011628491, -0.0046341973, 0.0007886035, -0.04435556);\n\ttarget = MulAdd(e1, MF4x4(0.029018598, -0.09923186, -0.1346201, -0.084818475, 0.013764684, 0.054601744, -0.023713779, -0.16826102, 0.038605224, -0.17664196, -0.16562279, 0.14602208, -0.046339583, 0.08062112, 0.20166601, -0.15399997), target);\n\ttarget = MulAdd(e2, MF4x4(-0.022488657, 0.28881705, 0.22283012, -0.1935156, 0.22948948, -0.26604095, 0.12130448, 0.35176682, -0.044228308, -0.14734231, 0.07643742, -0.008511517, 0.04313213, -0.03179344, 0.048205808, -0.046295088), target);\n\ttarget = MulAdd(e3, MF4x4(-0.2531207, 0.10446124, 0.12730333, -0.13316457, 0.2988587, 0.025091104, -0.00482534, 0.037484948, -0.04006528, 0.14588606, -0.2078635, -0.18636562, 0.112230495, 0.15386717, -0.11122423, 0.1115416), target);\n\ttarget = MulAdd(ne1, MF4x4(0.058421213, 0.086035125, -0.042249937, -0.22377387, -0.055913106, 0.020280339, 0.10572877, 0.124147646, -0.16199678, 0.25662583, 0.051422223, -0.11681551, 0.3789257, -0.21530285, -0.18586366, -0.2222266), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.11123776, 0.056422785, -0.20566264, -0.07211227, -0.011873865, 0.30742383, 0.1306618, 0.06808572, 0.068643585, -0.045474447, -0.11596973, 0.0069175013, 0.0331586, -0.013221628, -0.089815594, -0.17750767), target);\n\ttarget = MulAdd(ne3, MF4x4(0.45630908, 0.11607409, -0.05464286, 0.013246808, -0.28643015, 0.025237702, -0.1445959, 0.05237954, -0.07100623, -0.34417382, 0.13903524, 0.21305767, -0.17371523, -0.13203263, -0.09479281, 0.018392125), target);\n\ttarget = MulAdd(conv2d_11_tf, MF4x4(-0.018931253, -0.14936836, -0.06770882, 0.10720343, -0.10476732, 0.1157603, -0.2245781, 0.23242487, -0.21631289, 0.12723672, 0.4190526, 0.38829032, -0.192142, 0.034754496, -0.1103798, -0.17207326), target);\n\ttarget = MulAdd(nconv2d_11_tf, MF4x4(0.10311498, 0.08424212, -0.048713315, -0.2784966, 0.034522116, -0.13184515, -0.22852737, 0.003882436, 0.36972147, -0.21263883, -0.3308556, 0.10331102, 0.2462766, -0.12618823, -0.040451203, 0.03362719), target);\n\ttarget = MulAdd(conv2d_1_tf, MF4x4(-0.0150432745, 0.11757923, 0.23359092, -0.19003578, -0.22206408, 0.15738077, -0.14019541, -0.14201044, 0.19273758, -0.003298494, -0.16530107, 0.17979017, 0.24293105, -0.049160067, -0.14296743, -0.12812854), target);\n\ttarget = MulAdd(nconv2d_1_tf, MF4x4(-0.0020534277, 0.016410163, -0.012038507, -0.0028629426, 0.016464395, 0.0755886, 0.20384903, -0.029324949, -0.13087441, 0.2138074, 0.03701677, -0.1671415, -0.10499825, -0.042930905, -0.007613907, -0.05984843), target);\n\ttarget = MulAdd(conv2d_4_tf, MF4x4(-0.07029106, 0.05386552, 0.101365924, -0.008048512, -0.090149835, 0.024272785, -0.16436198, 0.2721913, 0.17460534, 0.0034964401, -0.023265982, -0.0120567605, -0.10151709, 0.059922412, -0.13204409, -0.36116782), target);\n\ttarget = MulAdd(nconv2d_4_tf, MF4x4(-0.12569033, 0.08523279, -0.047763485, -0.0025170774, -0.108375974, -0.032045245, 0.232404, -0.24801816, -0.09875204, -0.14990453, -0.10958757, -0.23116525, 0.015989894, -0.09210713, 0.19653663, 0.14138049), target);\n\ttarget = MulAdd(conv2d_7_tf, MF4x4(0.17831743, 0.04722249, 0.22804007, -0.29099363, 0.29851902, 0.2542661, 0.0067702304, 0.17606215, 0.25847578, -0.3118978, 0.122089565, -0.07010249, 0.014281751, 0.16585219, -0.1659864, -0.30643156), target);\n\ttarget = MulAdd(nconv2d_7_tf, MF4x4(0.19042191, -0.028259574, -0.009187334, 0.21004388, -0.08070036, -0.07838277, -0.023598602, 0.13891627, -0.10481482, 0.05874796, -0.256131, 0.19640857, 0.19515458, -0.07920633, 0.020810237, 0.11040215), target);\n\ttarget = MulAdd(conv2d_10_tf, MF4x4(-0.093089096, -0.09344762, 0.24232084, 0.21563776, -0.23910145, 0.09092736, 0.12202717, 0.27240792, -0.008079913, 0.07417433, -0.11870247, -0.35385913, 0.107840456, 0.033915944, 0.16016287, 0.023731219), target);\n\ttarget = MulAdd(nconv2d_10_tf, MF4x4(0.21967673, 0.09896617, 0.04236673, -0.20100762, 0.02077549, -0.075936705, 0.008608214, -0.09693712, 0.44249, -0.31763947, -0.027664369, 0.6166134, -0.43993565, -0.025720617, -0.3275949, 0.041507874), target);\n\ttarget = MulAdd(conv2d_13_tf, MF4x4(0.20305479, -0.06975863, -0.18130508, -0.11641104, 0.119906515, -0.27588886, -0.15420493, -0.1399163, 0.075970694, -0.16776691, 0.05045285, 0.44775927, -0.036058784, -0.28161573, 0.1877619, 0.10209392), target);\n\ttarget = MulAdd(nconv2d_13_tf, MF4x4(-0.4250348, -0.007887921, 0.307136, -0.18842702, 0.30411714, 0.05816079, 0.26664746, -0.007951849, -0.18454021, 0.30914694, -0.34967366, -0.18838291, 0.06042888, 0.1902336, -0.062413342, 0.015706044), target);\n\ttex7[gxy] = target;\n}\n\n//!PASS 7\n//!DESC Conv-4x3x3x24\n//!IN tex5, tex6, tex7\n//!OUT conv1ups, conv1ups1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 outputPt = GetOutputPt();\n\tconst float2 pos = (gxy + 0.5f) * outputPt;\n\t\n\toutputPt *= 2;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex5.SampleLevel(sam1, pos - outputPt, 0);\n\tMF4 b1 = tex5.SampleLevel(sam1, pos + float2(-outputPt.x, 0), 0);\n\tMF4 c1 = tex5.SampleLevel(sam1, pos + float2(-outputPt.x, outputPt.y), 0);\n\tMF4 d1 = tex5.SampleLevel(sam1, pos + float2(0, -outputPt.y), 0);\n\tMF4 e1 = tex5.SampleLevel(sam1, pos, 0);\n\tMF4 f1 = tex5.SampleLevel(sam1, pos + float2(0, outputPt.y), 0);\n\tMF4 g1 = tex5.SampleLevel(sam1, pos + float2(outputPt.x, -outputPt.y), 0);\n\tMF4 h1 = tex5.SampleLevel(sam1, pos + float2(outputPt.x, 0), 0);\n\tMF4 i1 = tex5.SampleLevel(sam1, pos + outputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = tex6.SampleLevel(sam1, pos - outputPt, 0);\n\tMF4 b2 = tex6.SampleLevel(sam1, pos + float2(-outputPt.x, 0), 0);\n\tMF4 c2 = tex6.SampleLevel(sam1, pos + float2(-outputPt.x, outputPt.y), 0);\n\tMF4 d2 = tex6.SampleLevel(sam1, pos + float2(0, -outputPt.y), 0);\n\tMF4 e2 = tex6.SampleLevel(sam1, pos, 0);\n\tMF4 f2 = tex6.SampleLevel(sam1, pos + float2(0, outputPt.y), 0);\n\tMF4 g2 = tex6.SampleLevel(sam1, pos + float2(outputPt.x, -outputPt.y), 0);\n\tMF4 h2 = tex6.SampleLevel(sam1, pos + float2(outputPt.x, 0), 0);\n\tMF4 i2 = tex6.SampleLevel(sam1, pos + outputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\t\n\tMF4 a3 = tex7.SampleLevel(sam1, pos - outputPt, 0);\n\tMF4 b3 = tex7.SampleLevel(sam1, pos + float2(-outputPt.x, 0), 0);\n\tMF4 c3 = tex7.SampleLevel(sam1, pos + float2(-outputPt.x, outputPt.y), 0);\n\tMF4 d3 = tex7.SampleLevel(sam1, pos + float2(0, -outputPt.y), 0);\n\tMF4 e3 = tex7.SampleLevel(sam1, pos, 0);\n\tMF4 f3 = tex7.SampleLevel(sam1, pos + float2(0, outputPt.y), 0);\n\tMF4 g3 = tex7.SampleLevel(sam1, pos + float2(outputPt.x, -outputPt.y), 0);\n\tMF4 h3 = tex7.SampleLevel(sam1, pos + float2(outputPt.x, 0), 0);\n\tMF4 i3 = tex7.SampleLevel(sam1, pos + outputPt, 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(-0.01824226, 0.05140684, 0.010533643, 0.017739987);\n\ttarget = MulAdd(a1, MF4x4(-0.04461327, 0.026094772, -0.04326873, -0.022564206, 0.041758694, -0.13209347, -0.022546854, 0.004888482, 0.041229382, 0.078778535, -0.09928822, 0.045134705, 0.07555903, 0.095968306, 0.017260674, -0.16633268), target);\n\ttarget = MulAdd(b1, MF4x4(0.074613005, -0.024822153, 0.006285665, 0.064223155, 0.08983999, -0.04401517, 0.0021585347, -0.05762909, -0.04529031, -0.081778474, -0.006732511, -0.11184791, 0.10299652, -0.23328288, 0.15988354, 0.100146465), target);\n\ttarget = MulAdd(c1, MF4x4(0.035105877, -0.0018613822, -0.10513717, -0.033936206, -0.015839642, 0.036846053, 0.057443213, 0.0151035935, 0.073372714, -0.032272663, -0.10095864, 0.11976275, 0.019719468, -0.03309878, -0.09841568, 0.02204194), target);\n\ttarget = MulAdd(d1, MF4x4(0.030945469, -0.17030734, -0.012849732, 0.015892556, 0.056250833, 0.24895169, -0.13764419, 0.16325791, -0.01160465, 0.006647464, -0.026491588, -0.17801395, -0.02435574, -0.2039599, -0.02686966, -0.026576484), target);\n\ttarget = MulAdd(e1, MF4x4(-0.037470777, 0.019415256, 0.09230313, 0.018368619, 0.12947397, 0.055918667, 0.03108532, -0.112716034, -0.18622373, 0.13083778, 0.11290179, 0.02457941, -0.055062827, 0.2621282, -0.47111708, 0.14229195), target);\n\ttarget = MulAdd(f1, MF4x4(-0.028525796, -0.044668507, 0.0581049, -0.05924212, -0.16126277, 0.02257456, -0.08723546, 0.0291216, 0.08648604, 0.1816661, -0.10166446, 0.054426763, -0.049978323, -0.014283805, 0.08187003, -0.33347195), target);\n\ttarget = MulAdd(g1, MF4x4(0.0660737, 0.07962152, -0.08272859, 0.06791631, -0.055610694, -0.04899803, 0.001302826, 0.034116816, 0.055754438, -0.090739936, -0.058503445, -0.21402411, 0.08279316, -0.017558504, -0.06069706, -0.009158945), target);\n\ttarget = MulAdd(h1, MF4x4(0.004801658, 0.19979613, -0.12919085, -0.08680655, -0.07869315, 0.13493058, 0.09466464, -0.06683993, 0.45278597, -0.031217117, -0.36346734, 0.007986247, -0.034918886, -0.06899428, -0.17898467, 0.048572816), target);\n\ttarget = MulAdd(i1, MF4x4(-0.058319356, -0.11041357, -0.038064227, 0.008961388, 0.059284043, -0.006377162, -0.08503998, 0.08246113, -0.042524133, -0.009021081, -0.06406861, -0.036977306, 0.015088326, 0.007376721, 0.045255665, -0.048585415), target);\n\ttarget = MulAdd(a2, MF4x4(-0.04103631, -0.041285936, 0.032812588, 0.0030869239, 0.04834749, -0.0023517366, 0.01230978, 0.09776701, 0.08415344, 0.20653047, -0.19338459, -0.04812796, -0.084704414, 0.038988277, 0.075450994, -0.08053876), target);\n\ttarget = MulAdd(b2, MF4x4(0.13506958, -0.2392332, 0.07425533, -0.05262753, -0.06849319, -0.0686977, 0.09134643, 0.032770213, 0.0725978, -0.12106999, 0.068602145, 0.0030026592, -0.0808173, 0.06421806, -0.08257931, 0.21460927), target);\n\ttarget = MulAdd(c2, MF4x4(-0.008367152, 0.0035576785, -0.012087096, -0.08389121, -0.01598755, 0.12065467, 0.099018045, -0.14851409, 0.030730573, 0.028257858, -0.08153201, -0.08644078, -0.114632666, -0.03989634, 0.005787138, -0.080551155), target);\n\ttarget = MulAdd(d2, MF4x4(0.063049294, -0.13418451, -0.020768259, -0.12566003, -0.038050238, 0.024393935, 0.040856704, -0.10639481, -0.0021406382, 0.12272091, 0.039621927, 0.009142157, -0.12273027, 0.06595554, 0.03680899, -0.045653462), target);\n\ttarget = MulAdd(e2, MF4x4(0.14783141, 0.062921695, -0.2287169, 0.17810576, 0.12781417, -0.23455006, 0.08652726, -0.05671725, -0.0154688135, -0.0757278, 0.028468473, -0.055354204, 0.3387407, 0.06741395, -0.21965146, 0.28021505), target);\n\ttarget = MulAdd(f2, MF4x4(0.12927511, -0.083112024, -0.026347974, 0.11680802, -0.046030812, 0.04145888, 0.029390097, 0.07615963, 0.21023202, 0.015840504, -0.03812723, -0.03267151, -0.03871269, -0.009839764, 0.09856007, -0.07423972), target);\n\ttarget = MulAdd(g2, MF4x4(0.017651597, 0.020432748, 0.1884304, -0.004845205, 0.009974344, -0.022273665, 0.03930962, -0.035542846, 0.036834106, 0.14699532, -0.099249355, 0.10607033, -0.027745333, -0.0970868, 0.114169724, -0.023726419), target);\n\ttarget = MulAdd(h2, MF4x4(-0.028299367, -0.15123722, -0.00423565, 0.06813279, 0.00024022427, -0.025944803, 0.022504266, -0.08420193, -0.20596851, -0.1337249, 0.1062062, -0.01428787, 0.014752737, -0.012875446, 0.030165028, 0.035561644), target);\n\ttarget = MulAdd(i2, MF4x4(-0.09437882, 0.088986255, -0.019357264, -0.07609514, -0.11045937, -0.09335526, 0.0051609105, 0.046330493, -0.102482855, 0.16320266, -0.07661479, 0.033833966, -0.06805305, 0.051780142, -0.015298791, 0.010972507), target);\n\ttarget = MulAdd(a3, MF4x4(0.0022961323, 0.10782266, -0.06649802, -0.006361161, -0.13554603, 0.032311134, 0.01145253, -0.018523335, -0.051428523, -0.0073554716, -0.11821805, -0.0227195, -0.06375, 0.029970335, -0.038386237, -0.046592798), target);\n\ttarget = MulAdd(b3, MF4x4(-0.0839258, -0.0200528, 0.004925492, -0.035113, 0.08860089, 0.052822098, -0.16518101, -0.052028593, 0.042811155, 0.13656183, 0.06579406, -0.26585788, -0.00531827, -0.12001242, -0.07681884, -0.021055153), target);\n\ttarget = MulAdd(c3, MF4x4(0.0678669, 0.038901877, -0.096601896, -0.081621505, 0.0028282998, -0.04645044, 0.04284913, 0.015117329, 0.104568556, 0.006391826, -0.021010842, -0.036205173, 0.06698969, 0.08495347, 0.065073915, 0.07002784), target);\n\ttarget = MulAdd(d3, MF4x4(-0.041274223, -0.065267585, 0.0070607257, -0.067357324, 0.056948107, 0.04808867, 0.07966329, -0.017361488, 0.030913807, -0.119355716, -0.004582609, 0.050158955, 0.03867934, -0.13543603, -0.0011923639, -0.06866172), target);\n\ttarget = MulAdd(e3, MF4x4(0.11586327, -0.047302328, 0.062475067, 0.018575871, 0.12420718, -0.03602303, 0.021922488, 0.16011192, -0.16549775, 0.123044305, 0.065160766, -0.30708137, 0.07341779, -0.12929793, 0.08692529, 0.0007729847), target);\n\ttarget = MulAdd(f3, MF4x4(-0.013340411, 0.058056828, -0.028747091, -0.0020311237, -0.1070798, 0.13726988, 0.017587787, -0.06898856, 0.03802266, 0.13165978, -0.035371024, 0.098588474, -0.036178526, -0.1068027, -0.03172579, 0.0816444), target);\n\ttarget = MulAdd(g3, MF4x4(0.025470722, -0.010980958, -0.08286821, -0.031260632, -0.0134636145, 0.041295316, -0.09980376, 0.07899825, 0.046056226, 0.17291167, -0.066611394, 0.03685817, -0.020917175, 0.11551815, -0.016370535, -0.003991822), target);\n\ttarget = MulAdd(h3, MF4x4(-0.039056864, 0.011015572, 0.014014594, -0.08614736, -0.08130745, 0.045282196, -0.04879853, -0.07139807, 0.09670427, -0.07834781, -0.022022815, 0.053423326, -0.055300128, 0.23542596, -0.11442394, -0.05190056), target);\n\ttarget = MulAdd(i3, MF4x4(0.12978806, -0.020104066, -0.032463916, -0.04754379, 0.05811374, 0.029061198, -0.013163837, 0.051058855, 0.04294865, -0.12551701, 0.17822845, -0.16549106, 0.12024249, -0.0790749, 0.035424378, 0.0062358896), target);\n\ttarget = MulAdd(na1, MF4x4(0.030824278, 0.06636776, -0.047206167, 0.02480193, 0.071935624, -0.18845995, -0.028480597, -0.10213147, -0.03973547, 0.025171004, 0.016600806, -0.10615915, -0.07395773, -0.050147526, -0.011541545, -0.027081985), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.035749037, -0.052818663, -0.020621216, -0.023525307, -0.02461827, 0.3019646, -0.024478583, -0.1398278, 0.17499511, 0.22476715, -0.13090259, -0.05484457, -0.023759075, 0.002843161, 0.014099166, -0.011660793), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.008461302, 0.14787683, 0.07476249, -0.035538696, 0.007945418, 0.04992842, -0.2388183, 0.0061813896, 0.016805701, 0.019992555, 0.034271393, -0.040170603, -0.039961495, 0.009210595, 0.07606321, 0.05323195), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.017007355, -0.01304119, -0.011782462, 0.043480955, 0.041575707, 0.20513225, -0.16858323, 0.019438695, -0.02795952, -0.032667078, 0.08400571, 0.012488913, -0.025382128, 0.06756553, 0.14349163, -0.012960532), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.015847925, 0.035881996, 0.09946923, -0.2583748, -0.11036338, 0.02174868, 0.023047017, -0.023119839, 0.0014623358, -0.05400468, 0.1088209, 0.056070726, 0.09849772, 0.106276534, -0.2869582, 0.122843154), target);\n\ttarget = MulAdd(nf1, MF4x4(0.120457835, 0.0030220735, 0.011593652, 0.04870485, 0.051817082, -0.12444271, -0.0030080245, 0.03186695, -0.119991936, -0.03661239, 0.0462927, 0.047734156, 0.035473768, -0.050326344, 0.048162602, 0.0044394233), target);\n\ttarget = MulAdd(ng1, MF4x4(0.004526382, -0.040592365, 0.038592715, 0.06312635, -0.012543924, -0.03860053, 0.013131243, -0.11894808, -0.05983815, -0.09653036, 0.14409515, -0.022803063, 0.02864931, 0.014170389, 0.091406494, 0.08613508), target);\n\ttarget = MulAdd(nh1, MF4x4(0.12344745, -0.034350697, 0.10549495, -0.11843059, -0.041916244, -0.035728436, -0.052881684, -0.07620879, 0.06760638, -0.039527662, -0.006650022, -0.05049626, 0.12109734, -0.005554175, 0.17754045, -0.098896034), target);\n\ttarget = MulAdd(ni1, MF4x4(0.017840233, -0.0118570635, -0.080244206, -0.14309776, -0.03778345, 0.12812364, -0.011180574, -0.03749929, -0.013458457, 0.028993722, 0.03479446, -0.11635739, -0.01636896, -0.010422004, -0.022923285, 0.013722603), target);\n\ttarget = MulAdd(na2, MF4x4(0.0022784397, -0.026745517, 0.07457438, -0.023941608, -0.056146793, -0.012885049, 0.010106243, -0.13570426, -0.055139925, -0.0553148, 0.037558038, -0.015558114, 0.055840485, -0.08124391, -0.013017814, 0.18931141), target);\n\ttarget = MulAdd(nb2, MF4x4(0.10672792, 0.129464, 0.1233261, -0.062469885, -0.08835128, 0.17588028, -0.02560139, -0.07349341, -0.08052734, 0.03086464, 0.12930822, 0.107045054, 0.03136081, -0.11335949, 0.09541032, -0.015009924), target);\n\ttarget = MulAdd(nc2, MF4x4(0.023294786, -0.17904189, -0.036457974, -0.060965557, 0.088545635, 0.001061151, -0.016771115, 0.082081355, -0.0030623788, -0.05096391, 0.022067994, -0.078540295, -0.12912196, -0.045786213, 0.05568379, -0.16344398), target);\n\ttarget = MulAdd(nd2, MF4x4(0.043200932, 0.006267473, -0.081682056, 0.044593308, 0.03179784, 0.20806344, -0.038468197, 0.06644582, 0.01704569, -0.029287282, -0.0036700617, 0.018897371, -0.075105995, 0.09612947, -0.06442493, 0.012179776), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.21926114, 0.18097721, -0.037700515, 0.016763914, -0.057943042, -0.06129067, 0.04456528, -0.2304425, 0.013301696, 0.11028081, -0.18095498, 0.14712757, 0.2271199, -0.3185643, -0.19932592, -0.08554962), target);\n\ttarget = MulAdd(nf2, MF4x4(0.0117652705, -0.041661818, 0.029219367, -0.046232816, 0.047820047, 0.068789035, -0.113418594, 0.1141295, -0.027060978, 0.07267708, 0.093252845, -0.049717877, -0.087836266, 0.14460698, 0.10277318, -0.04977497), target);\n\ttarget = MulAdd(ng2, MF4x4(0.022564596, -0.037228584, -0.065915406, -0.011077084, 0.030235467, -0.04677627, -0.06419004, -0.018991074, 0.034164365, -0.019168181, 0.022525655, -0.029373096, -0.079060145, 0.13279332, -0.08545939, -0.045388315), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.14000517, -0.08309406, 0.13520917, -0.10369978, -0.016325317, 0.00970006, -0.048059512, 0.1412818, 0.040955327, 0.030759163, -0.108052924, 0.005294165, -0.10046129, 0.16592641, -0.035368618, -0.29051507), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.09455044, 0.0005962807, 0.0006215668, -0.038142636, -0.03929331, -0.01591621, 0.0056410446, -0.036902174, -0.056509133, -0.10841171, 0.07702632, -0.08160013, 0.040747657, -0.08348532, 0.019081287, 0.020851197), target);\n\ttarget = MulAdd(na3, MF4x4(-0.03399592, 0.10141488, -0.0077629937, -0.17129703, -0.025233645, 0.052428465, -0.019579021, -0.072962284, 0.022322712, -0.18443614, -0.00848578, 0.0376278, 0.055581484, 0.06439001, -0.026564457, 0.015072123), target);\n\ttarget = MulAdd(nb3, MF4x4(0.11295866, -0.1541795, 0.11074539, -0.12757398, -0.11353885, 0.12023232, -0.07913168, 0.25957996, -0.0064171744, 0.08077023, 0.09673833, 0.008732368, 0.03630595, 0.059769, 0.028521406, 0.029331883), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.081345834, -0.06722959, -0.13713932, 0.03613845, -0.084334835, 0.046838246, -0.004890033, -0.08524675, 0.15460378, -0.09410546, -0.058240023, 0.11844812, 0.00092362246, 0.028734036, 0.0028451593, 0.03558664), target);\n\ttarget = MulAdd(nd3, MF4x4(0.067000724, 0.08689177, 0.003695697, 0.08341895, -0.08124141, -0.20499983, 0.09505712, -0.07436812, -0.028131844, 0.050506454, -0.107579716, 0.058785282, 0.031196257, 0.021408495, -0.100359544, 0.07999305), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.16514844, 0.117525734, 0.24123909, 0.09518423, 0.17757961, -0.28094006, 0.081966326, 0.0802129, 0.0011662474, 0.06366135, 0.07578068, -0.08616794, 0.19857462, -0.10196374, -0.13831666, -0.18653043), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.06649859, 0.0935902, -0.19097336, 0.16118656, 0.2938468, -0.10315292, 0.08256489, -0.06169784, -0.05889727, -0.018046174, -0.17596339, 0.20343648, -0.08962845, -0.027532624, 0.059598826, -0.14278376), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.0070921015, -0.07634683, -0.066166356, -0.06432544, 0.050059035, 0.20213397, -0.071587585, 0.031234715, 0.10629024, 0.044645656, -0.023101477, -0.022136679, 0.009119783, -0.10172394, 0.024746796, -0.1161207), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.046572298, -0.06981039, 0.08314394, 0.043344617, 0.1914716, 0.0046652057, -0.0683364, 0.086023554, 0.06213587, -0.0077511827, -0.03336288, 0.1474879, -0.032717533, 0.078666836, -0.001740435, 0.048321523), target);\n\ttarget = MulAdd(ni3, MF4x4(0.18346673, -0.20763724, 0.05431475, -0.08291483, -0.0073792376, -0.053458065, 0.08561732, -0.103502, -0.06856406, 0.05193988, -0.009717332, 0.06446446, 0.050632656, 0.013681985, -0.02556495, 0.05056843), target);\n\tconv1ups[gxy] = target;\n\n\ttarget = MF4(0.003290131, -0.0154397, 0.04528908, -0.04218369);\n\ttarget = MulAdd(a1, MF4x4(0.070670135, -0.026429666, 0.09446684, -0.04920855, -0.08720965, -0.022478819, -0.15962029, 0.29240617, -0.10499224, 0.10415364, 0.11922523, -0.08293139, 0.07846739, -0.15612845, -0.19753109, -0.033664245), target);\n\ttarget = MulAdd(b1, MF4x4(-0.10003188, 0.088794544, -0.028137686, -0.1375475, 0.079632774, -0.012540568, -0.092962824, 0.10438857, -0.12865996, -0.040098958, -0.030862473, 0.009116932, -0.14513193, 0.13843827, -0.14862274, 0.27156416), target);\n\ttarget = MulAdd(c1, MF4x4(0.03148634, -0.13966283, -0.022684515, 0.080294125, -0.013548243, -0.01112399, 0.021930493, -0.24562296, -0.029252343, -0.0053704586, 0.088651545, -0.10468119, 0.0077052945, 0.027455118, -0.008439029, -0.08633876), target);\n\ttarget = MulAdd(d1, MF4x4(-0.073491044, 0.11097277, -0.02937573, 0.045977436, -0.015563786, 0.04763272, -0.17349051, 0.02479734, 0.12201058, -0.09606755, -0.064500526, -0.068423286, -0.10828311, 0.0025430934, 0.060595006, 0.10702606), target);\n\ttarget = MulAdd(e1, MF4x4(-0.10012673, -0.026187293, 0.039673958, 0.25377232, 0.16539277, 0.015475691, -0.017826023, -0.037547242, 0.27426562, 0.039105, -0.29495236, -0.20741108, 0.3893781, -0.00018520994, 0.18736628, 0.016120607), target);\n\ttarget = MulAdd(f1, MF4x4(-0.0902328, -0.035078812, 0.0423949, 0.10428684, -0.012309703, -0.0022217801, 0.12843162, 0.008824024, 0.10457806, -0.13958204, 0.042961385, -0.17798209, 0.13051195, -0.2078117, 0.014258071, 0.27743495), target);\n\ttarget = MulAdd(g1, MF4x4(0.0037268966, -0.002057136, -0.086700045, -0.04034686, -0.039582066, -0.05536445, -0.013854305, 0.13898304, 0.08383669, -0.1389377, 0.09724791, 0.27256468, 0.0012985421, 0.026786802, -0.09553305, -0.08505046), target);\n\ttarget = MulAdd(h1, MF4x4(0.047094945, -0.15165734, -0.16622189, 0.27696493, 0.04804586, 0.017589863, -0.048407666, -0.1423487, -0.18051605, -0.037678123, -0.083375834, 0.21356659, 0.056051373, 0.058305956, 0.020808164, 0.20114677), target);\n\ttarget = MulAdd(i1, MF4x4(-0.06873173, 0.056631878, -0.09389161, -0.026553899, -0.005246827, 0.011163956, 0.0807366, 0.018891184, 0.037806395, -0.08414753, -0.29572666, 0.12225136, 0.028108165, -0.12746434, -0.1242189, 0.06427617), target);\n\ttarget = MulAdd(a2, MF4x4(-0.054436807, 0.0463667, -0.3160585, -0.26496625, -0.0016307884, 0.0027304688, 0.13524249, 0.14023106, 0.15203272, -0.0055950717, -0.047067486, -0.1299749, -0.023347244, -0.011924935, 0.04708069, 0.14064), target);\n\ttarget = MulAdd(b2, MF4x4(-0.15567084, -0.03462954, 0.014766895, 0.28104082, -0.015955932, 0.048590813, 0.14149605, 0.016979203, 0.15654798, -0.124170296, -0.000571697, 0.18732761, -0.15969957, 0.036891263, -0.08222836, 0.007162299), target);\n\ttarget = MulAdd(c2, MF4x4(-0.027358167, -0.05515796, -0.21783291, -0.061588667, 0.14288566, 0.034540724, -0.0779948, -0.004935965, 0.087642424, -0.03457867, 0.26657468, -0.08798545, 0.06278833, 0.01650169, -0.15035287, 0.043133624), target);\n\ttarget = MulAdd(d2, MF4x4(0.05577383, 0.058146708, 0.0057744626, -0.043521628, 0.14279243, -0.22507532, 0.0896487, -0.03373711, -0.29882178, 0.12674153, 0.21856095, -0.03654502, 0.09770278, 0.011492664, 0.01397184, 0.11037485), target);\n\ttarget = MulAdd(e2, MF4x4(0.14057921, -0.18916433, -0.10062621, -0.19464967, -0.19286343, -0.08279728, 0.0062218676, -0.15246014, 0.0960211, -0.3964747, -0.016336296, 0.028859172, -0.047788087, 0.032031618, 0.054299697, -0.11431765), target);\n\ttarget = MulAdd(f2, MF4x4(-0.15350376, 0.1362609, -0.011803502, 0.2660655, -0.037387744, 0.18536955, -0.0015025261, -0.011900626, -0.023042146, -0.15995252, 0.060023192, 0.08954088, 0.07074839, 0.059100557, -0.08593189, -0.045180846), target);\n\ttarget = MulAdd(g2, MF4x4(-0.031948235, 0.07176401, -0.007034352, -0.12552954, 0.049458012, -0.07971771, 0.0093457, -0.10731874, 0.07024961, 0.27386668, 0.07679444, -0.28798524, -0.06428793, -0.0057761013, 0.014161652, -0.0065095956), target);\n\ttarget = MulAdd(h2, MF4x4(-0.1427731, 0.0833077, 0.13927783, 0.016691789, -0.16832228, 0.10298729, 0.1446675, -0.2656778, 0.0788247, 0.13420862, 0.050337754, -0.08008961, 0.07605825, 0.04659439, -0.054331373, 0.074493684), target);\n\ttarget = MulAdd(i2, MF4x4(0.07614274, -0.050090652, -0.066727035, 0.055715825, -0.07636078, 0.08155946, -0.061731443, -0.022193443, 0.057011697, -0.009381379, 0.176684, -0.05981099, -0.04690691, 0.051825907, -0.019666756, 0.0017494732), target);\n\ttarget = MulAdd(a3, MF4x4(0.12878093, -0.091072194, 0.03426444, -0.0014821129, 0.04648442, -0.056241687, 0.12965083, -0.2177644, 0.03271057, 0.013664906, -0.27382636, 0.009116637, -0.020398485, 0.026515692, 0.0059792865, -0.10869647), target);\n\ttarget = MulAdd(b3, MF4x4(0.017064014, 0.012380988, 0.015886486, 0.041969348, -0.056818817, 0.057386417, -0.19103225, 0.02042478, 0.022307403, -0.16955635, -0.25923833, -0.19144051, 0.044084065, 0.09931404, 0.08665806, -0.17140177), target);\n\ttarget = MulAdd(c3, MF4x4(-0.034919903, -0.00735085, -0.0040107057, 0.013110185, 0.008756165, -0.11104751, -0.03863784, 0.20081028, 0.008359515, 0.056265604, 0.0035791632, 0.14127707, 0.008306366, -0.061028276, -0.01180833, 0.11239347), target);\n\ttarget = MulAdd(d3, MF4x4(-0.055210557, -0.0047766017, -0.040911432, 0.04214669, 0.015301695, 0.035733294, -0.09534393, 0.3189227, -0.043539703, 0.10847848, 0.052175194, 0.25319937, -0.075755194, 0.07450996, -0.2392008, 0.17029741), target);\n\ttarget = MulAdd(e3, MF4x4(0.008697264, -0.062783785, 0.23503996, 0.06680282, -0.10700762, -0.05921618, 0.12575574, 0.12539467, 0.21779932, -0.27365687, -0.08419621, -0.23255387, -0.097952545, -0.33015022, -0.27839977, 0.54275817), target);\n\ttarget = MulAdd(f3, MF4x4(0.043178167, -0.07644931, -0.002126049, -0.0041748723, 0.12747553, 0.05624526, 0.08894693, 0.1273868, 0.13564228, -0.029284991, -0.1010155, 0.0144336475, -0.067769796, 0.12993337, 0.23458317, -0.1404509), target);\n\ttarget = MulAdd(g3, MF4x4(0.037086505, 0.04712714, 0.00080463936, 0.026554452, -0.032055024, -0.0346718, 0.14792679, 0.025423491, 0.045839246, 0.040022433, -0.010968567, -0.03638554, 0.03469138, -0.048995998, -0.080627054, -0.15703341), target);\n\ttarget = MulAdd(h3, MF4x4(0.0022719046, -0.11156194, -0.1660571, 0.07095863, 0.06325309, 0.03638195, 0.011129683, -0.16795434, 0.05859281, -0.050576515, 0.025492875, 0.14741158, 0.16042823, -0.021238782, -0.10693587, 0.062508605), target);\n\ttarget = MulAdd(i3, MF4x4(0.04699144, -0.06268154, -0.032550193, 0.1368816, -0.046266492, -0.09626834, 0.035877157, -0.017621659, -0.025884021, 0.016501589, -0.033517126, -0.16266182, 0.0063534426, -0.034565207, 0.107733876, -0.19080792), target);\n\ttarget = MulAdd(na1, MF4x4(-0.01089889, -0.046437796, -0.2864276, -0.059123863, 0.010273228, 0.035363402, -0.18365921, 0.002496715, 0.010531512, -0.044639286, -0.14159343, -0.04712995, 0.031355694, 0.041651487, 0.04172989, -0.072659165), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.29903612, 0.016968794, 0.2026591, 0.14354537, 0.210121, -0.1271222, 0.11928214, 0.075612746, 0.07222206, -0.113600664, -0.031380497, -0.04970697, -0.040690526, -0.024844045, -0.14514743, 0.10170265), target);\n\ttarget = MulAdd(nc1, MF4x4(0.00901007, -0.0077540767, -0.16780637, -0.0772044, -0.08349278, 0.035623573, -0.0036132522, -0.1559422, 0.079474956, -0.024358552, 0.05147624, -0.095216155, -0.001963766, 0.026185913, 0.041633602, -0.068779185), target);\n\ttarget = MulAdd(nd1, MF4x4(0.11536367, 0.06698426, -0.019352471, -0.027348887, 0.12543406, -0.017715944, -0.22333942, -0.07524913, -0.023550004, 0.09020137, 0.15082505, -0.019156344, 0.014714152, -0.100751296, -0.10988814, 0.013269792), target);\n\ttarget = MulAdd(ne1, MF4x4(0.23938964, -0.015321653, -0.085038215, -0.21858668, -0.15793826, -0.1725926, 0.16878416, -0.15579711, -0.21086636, -0.023652412, -0.10312092, 0.047774162, 0.11063097, 0.02804365, -0.049057744, -0.20330532), target);\n\ttarget = MulAdd(nf1, MF4x4(0.058630574, 0.10365072, -0.112122595, -0.10462442, -0.04204145, 0.0060419035, -0.038622607, -0.22971797, -0.081746876, 0.110261, -0.03279762, 0.10083948, -0.07525642, 0.096350044, -0.15403591, 0.01831559), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.013126955, 0.11560779, 0.06401061, -0.014257845, -0.078378044, 0.07452937, 0.030035159, 0.07133207, -0.072352365, -0.049404953, -0.2006817, -0.04745451, -0.0645119, 0.0849615, 0.053003483, 0.07766129), target);\n\ttarget = MulAdd(nh1, MF4x4(0.07683494, -0.47826648, 0.05708172, 0.12041683, 0.18084203, -0.08476069, 0.093064874, 0.016264802, 0.06801874, -0.01283242, -0.13347803, -0.035351828, -0.0011718989, -0.12699558, -0.0240836, -0.08060763), target);\n\ttarget = MulAdd(ni1, MF4x4(0.0521042, -0.062541164, 0.05483789, 0.14211908, 0.08606814, 0.06433033, -0.23270494, 0.05307593, 0.09299324, 0.04586578, -0.1193637, 0.12056507, -0.06442679, 0.06762315, -0.010547303, 0.031680685), target);\n\ttarget = MulAdd(na2, MF4x4(-0.09215318, -0.115724616, -0.061507307, 0.08273653, 0.0265886, -0.092683844, -0.22037667, -0.023114366, 0.028223295, -0.029118685, -0.088996224, 0.1023557, -0.089898214, 0.15436162, 0.16985597, 0.1431367), target);\n\ttarget = MulAdd(nb2, MF4x4(0.10560199, 0.13460231, 0.024534458, 0.1370791, 0.16920403, 0.013769043, -0.004941373, -0.22188903, -0.1193022, 0.07823969, -0.097713776, 0.044269208, 0.036816355, -0.11568587, -0.07947363, 0.022213666), target);\n\ttarget = MulAdd(nc2, MF4x4(0.002128253, 0.014331295, 0.09004623, -0.12958615, 0.0048723617, -0.072075516, 0.024190098, 0.011900665, 0.038696863, 0.07110043, -0.10347002, 0.082676366, 0.017796163, 0.004747536, 0.11188511, -0.21652836), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.051317807, 0.13453357, 0.05310306, -0.033790052, -0.06231268, 0.11130248, -0.075370945, 0.2774124, 0.04305133, -0.045057327, -0.04373203, -0.10055409, 0.042824138, -0.021799369, -0.08762204, -0.16729161), target);\n\ttarget = MulAdd(ne2, MF4x4(0.08727262, -0.074025065, -0.113067836, -0.07882044, 0.04476854, -0.14519121, -0.0434838, -0.010525559, -0.0425304, 0.106957085, -0.28644025, -0.105096966, 0.12650728, -0.15108573, 0.013723224, 0.5163331), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.021519013, -0.05317946, 0.0036545463, 0.0003156711, 0.12984163, -0.11362556, 0.061670557, -0.030158816, 0.04674806, 0.16352096, -0.23135264, 0.074876174, 0.0047455966, -0.120593436, 0.032926966, -0.20865184), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.029197322, -0.09204084, -0.13026133, -0.020570219, 0.043402288, -0.016610064, 0.08961119, -0.09460752, -0.057213686, -0.14044005, 0.080606215, 0.12573113, 0.094055034, 0.06523493, -0.16264567, -0.0716556), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.020557933, 0.077145614, 0.04620034, 0.22271551, 0.114781894, 0.11590448, -0.03233266, 0.13224865, -0.054499403, -0.01435028, -0.09684464, 0.022300925, 0.16768926, -0.019053463, 0.08804071, -0.14398381), target);\n\ttarget = MulAdd(ni2, MF4x4(0.0025323853, -0.016476262, 0.12608051, 0.016324151, -0.0035798363, 0.020308342, 0.06474364, -0.042083416, -0.08742628, 0.016960703, -0.120870225, 0.07373239, -0.06463355, -0.018745359, -0.02229239, -0.1039809), target);\n\ttarget = MulAdd(na3, MF4x4(-0.008440462, -0.15268475, -0.09420959, -0.07718843, 0.35601637, -0.0010803771, 0.050411247, -0.09859693, -0.008227993, 0.06407621, -0.19121973, -0.15547852, -0.033705134, 0.023920614, -0.12611681, 0.021967601), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.24474435, 0.07716706, -0.24876165, -0.18184067, -0.020811914, 0.07414089, -0.21809489, 0.015727887, 0.12278457, -0.08471355, -0.06071567, -0.07017344, -0.064291485, -0.07627711, 0.076017715, 0.2072293), target);\n\ttarget = MulAdd(nc3, MF4x4(0.013676314, -0.04966636, 0.06895822, 0.15210962, 0.07330876, -0.034188077, -0.0173066, 0.11160374, -0.12326202, -0.002551885, 0.0015338673, 0.1079974, 0.03733164, 0.077835836, -0.07733004, -0.0058571417), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.1854433, 0.02924247, -0.14843488, 0.18941449, -0.17652206, -0.13730201, -0.29041716, -0.12161381, -0.04599312, 0.16662349, 0.045855995, -0.005569671, -0.050993398, 0.019462017, -0.10552683, -0.19930908), target);\n\ttarget = MulAdd(ne3, MF4x4(0.08246259, 0.2602547, 0.16599776, -0.12149122, -0.048151806, 0.12042248, -0.16163243, 0.00087805535, 0.0536958, 0.05350576, 0.08406917, -0.060227945, 0.19056156, -0.2276745, -0.13755281, 0.39423308), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.0775391, 0.105803244, 0.08474868, -0.019011196, 0.026801828, -0.036453005, -0.018443616, -0.03005072, -0.10748735, 0.080679856, 0.07718584, 0.07871323, 0.030023575, 0.022230582, -0.090973295, -0.1363233), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.14770739, -0.09530047, 0.10400556, -0.115337685, 0.14459239, 0.1432794, -0.070606485, -0.053847175, 0.09378594, -0.09445331, 0.088633865, 0.071158156, 0.04437499, -0.04694172, -0.059354205, -0.00041449978), target);\n\ttarget = MulAdd(nh3, MF4x4(0.016041227, -0.2313572, -0.011389983, 0.030348316, 0.07260269, 0.009828401, -0.06116872, 0.026138552, -0.15607156, 0.042709354, 0.079162516, -0.16348995, -0.019872159, 0.13251646, 0.020712351, -0.16324571), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.08813695, 0.093021385, 0.019460218, 0.096429825, -0.010391231, 0.0216966, -0.1490125, -0.04100963, -0.024641959, 0.044109546, 0.08043847, -0.03676336, -0.026315603, 0.025947884, -0.10771212, 0.0010732685), target);\n\tconv1ups1[gxy] = target;\n}\n\n//!PASS 8\n//!DESC Conv-3x3x3x16\n//!IN INPUT, conv1ups, conv1ups1\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass8(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tconst float2 outputPt = GetOutputPt();\n\tconst float2 pos = (gxy + 0.5f) * outputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv1ups.SampleLevel(sam, pos - outputPt, 0);\n\tMF4 b1 = conv1ups.SampleLevel(sam, pos + float2(-outputPt.x, 0), 0);\n\tMF4 c1 = conv1ups.SampleLevel(sam, pos + float2(-outputPt.x, outputPt.y), 0);\n\tMF4 d1 = conv1ups.SampleLevel(sam, pos + float2(0, -outputPt.y), 0);\n\tMF4 e1 = conv1ups.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv1ups.SampleLevel(sam, pos + float2(0, outputPt.y), 0);\n\tMF4 g1 = conv1ups.SampleLevel(sam, pos + float2(outputPt.x, -outputPt.y), 0);\n\tMF4 h1 = conv1ups.SampleLevel(sam, pos + float2(outputPt.x, 0), 0);\n\tMF4 i1 = conv1ups.SampleLevel(sam, pos + outputPt, 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\t\n\tMF4 a2 = conv1ups1.SampleLevel(sam, pos - outputPt, 0);\n\tMF4 b2 = conv1ups1.SampleLevel(sam, pos + float2(-outputPt.x, 0), 0);\n\tMF4 c2 = conv1ups1.SampleLevel(sam, pos + float2(-outputPt.x, outputPt.y), 0);\n\tMF4 d2 = conv1ups1.SampleLevel(sam, pos + float2(0, -outputPt.y), 0);\n\tMF4 e2 = conv1ups1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv1ups1.SampleLevel(sam, pos + float2(0, outputPt.y), 0);\n\tMF4 g2 = conv1ups1.SampleLevel(sam, pos + float2(outputPt.x, -outputPt.y), 0);\n\tMF4 h2 = conv1ups1.SampleLevel(sam, pos + float2(outputPt.x, 0), 0);\n\tMF4 i2 = conv1ups1.SampleLevel(sam, pos + outputPt, 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF3 target = MF3(-0.0007544955, -0.0007692414, 0.00032997545);\n\ttarget = MulAdd(a1, MF4x3(-0.009692998, -0.008524317, 0.0010432196, 0.00057165127, -0.011818117, 0.0014487396, 0.0049518407, -0.001888361, -0.013262905, 0.05004511, 0.023134997, -0.016969386), target);\n\ttarget = MulAdd(b1, MF4x3(0.008501838, -0.001176035, -0.0035942376, 0.009015378, 0.011752493, 0.0061198603, -0.056669727, -0.035067406, -0.040517025, -0.039194923, 0.007251104, -0.0124227265), target);\n\ttarget = MulAdd(c1, MF4x3(0.010942934, 0.0100984, 0.0133265015, -0.019482462, -0.014820488, -0.021098822, -0.02860967, -0.10633767, -0.03296336, -0.011277147, -0.007915212, 0.008589044), target);\n\ttarget = MulAdd(d1, MF4x3(-0.004447993, -0.0019008318, 0.0054705385, -0.008042658, -0.0007432871, -0.0091506895, 0.010537624, 0.047716837, 0.01504048, -0.108882375, -0.06776622, -0.04354868), target);\n\ttarget = MulAdd(e1, MF4x3(-0.0030183722, 0.007729766, -0.007144855, 0.029383881, 0.024865916, 0.028182652, 0.16122057, 0.16675095, 0.18204775, 0.12284804, 0.031072017, 0.042543165), target);\n\ttarget = MulAdd(f1, MF4x3(0.0012941018, -0.00043673834, 0.009252594, 0.009156994, 0.0138289975, 0.015774839, -0.051840767, -0.07687406, -0.069361895, 0.017338578, 0.022834148, -0.0025963243), target);\n\ttarget = MulAdd(g1, MF4x3(0.01646397, 0.0028061832, 0.007990534, -0.0073729097, -0.011168949, -0.0024975399, -0.0066431006, -0.014508122, -0.005740217, -0.06746655, -0.02083968, -0.05371696), target);\n\ttarget = MulAdd(h1, MF4x3(-0.013606154, 0.0062064505, 0.008410423, 0.0038487792, 0.012054022, 0.007878108, 0.034913104, -0.008084116, 0.014990575, -0.005912989, 0.021872269, 0.055241022), target);\n\ttarget = MulAdd(i1, MF4x3(0.014251287, 0.0016604483, -0.006772879, 0.0028646574, 0.0015996173, -0.002210879, -0.0323296, 0.015729006, -0.017242312, -0.03718726, -0.03889927, -0.041001298), target);\n\ttarget = MulAdd(a2, MF4x3(0.007536155, 0.009848646, 0.007846354, 0.019176869, 0.019928271, 0.031777207, 0.026086887, 0.01971131, -0.017595863, 0.012899679, 0.0026994154, 0.008934449), target);\n\ttarget = MulAdd(b2, MF4x3(0.017639438, 0.01536491, 0.011161806, 0.034244597, 0.025257796, 0.031185368, -0.18240982, 0.038758054, 0.13050976, -0.0075258785, -0.0034674285, 0.008525112), target);\n\ttarget = MulAdd(c2, MF4x3(0.01788933, 0.017623115, 0.020215526, 0.0045994874, -0.0031487814, 0.003752946, -0.06494309, -0.07747321, 0.06544584, -0.004555707, -0.001776991, -0.017493976), target);\n\ttarget = MulAdd(d2, MF4x3(0.01359033, 0.02045422, 0.008234278, -0.008073938, -0.036093507, -0.0027978886, -0.37033105, 0.009709281, 0.28951523, 0.003258166, 0.0044517294, -0.003740991), target);\n\ttarget = MulAdd(e2, MF4x3(-0.036449786, -0.03035285, -0.025356997, 0.097153045, 0.10745537, 0.08421458, 0.043944303, -0.004867672, -0.15142196, 0.007044417, -0.00785739, 0.007504869), target);\n\ttarget = MulAdd(f2, MF4x3(-0.007951127, -0.008863303, -0.012213915, 0.007273406, 0.00944796, -0.002621692, 0.2919848, 0.06830943, -0.16119143, -0.0033908382, 0.007383878, 0.007847461), target);\n\ttarget = MulAdd(g2, MF4x3(0.011670784, 0.00805604, 0.013980011, -0.032067183, -0.045659855, -0.03957935, 0.14678614, 0.014678316, -0.11203954, -0.002894618, 0.008089503, 0.0056759617), target);\n\ttarget = MulAdd(h2, MF4x3(0.008941132, -0.008732514, -0.004122878, -0.01872218, 0.0058594598, -0.014218105, 0.15922345, -0.00061763515, -0.10605325, 0.0059564817, 0.0062196897, -0.0031137357), target);\n\ttarget = MulAdd(i2, MF4x3(-0.027044835, -0.0113663385, -0.018061407, -0.01064461, 0.0004394501, 0.0068360637, 0.12218274, -0.025980305, 0.060082816, 0.002298275, -0.005121948, -0.0018933173), target);\n\ttarget = MulAdd(na1, MF4x3(-0.014044151, -0.0055593867, -0.0091519095, 0.018282808, -0.054974634, -0.02104256, 0.004737865, 0.009833153, 0.0050819647, 0.009256364, 0.004517343, -0.0012567915), target);\n\ttarget = MulAdd(nb1, MF4x3(0.035084303, 0.019331766, -0.006399992, -0.08042094, -0.14020248, -0.13438301, -0.0014871466, -0.0071605383, -0.0070841024, 0.001705956, -0.010914731, -0.0022737188), target);\n\ttarget = MulAdd(nc1, MF4x3(-0.024562238, -0.025555398, 0.00043982622, 0.04687896, 0.062265635, 0.06194832, 0.016357735, 0.0056735775, 0.01868422, 0.0035063815, 0.0050708377, 0.009102912), target);\n\ttarget = MulAdd(nd1, MF4x3(0.024276884, 0.031309772, 0.053946678, 0.027081756, 0.023922514, 0.051302873, -0.005081098, -0.013981954, -0.007141123, -0.017242068, -0.00036468913, 0.0071311933), target);\n\ttarget = MulAdd(ne1, MF4x3(0.096000426, 0.12978247, 0.089689955, 0.03013154, 0.09065384, 0.010782777, -0.009774296, -0.010487119, -0.018002238, 0.027585275, 0.018800229, 0.007482455), target);\n\ttarget = MulAdd(nf1, MF4x3(-0.031725004, -0.05638542, -0.06471826, -0.038512804, -0.036520924, -0.026658544, 0.0019714478, 0.004168433, 0.0036675548, 0.009312959, -0.009726487, 0.003937418), target);\n\ttarget = MulAdd(ng1, MF4x3(0.008056586, -0.03609238, -0.0035044104, -0.0052967947, 0.010446542, 0.010737699, -0.00941154, -0.005599727, -0.0071648047, 0.0028106347, 0.0063315486, 0.0005620387), target);\n\ttarget = MulAdd(nh1, MF4x3(-0.10104362, -0.06228799, -0.057575073, -0.0008651546, -0.010849562, -0.0066441186, -0.016244762, -0.0053532585, -0.012414173, -0.012507298, 0.005470365, 0.0032063425), target);\n\ttarget = MulAdd(ni1, MF4x3(-0.019126823, -0.022827078, -0.01918732, -0.0049576303, -0.010899637, -0.01990915, 0.019013962, 0.007385637, 0.015615745, 0.025586424, 0.02317941, 0.019631773), target);\n\ttarget = MulAdd(na2, MF4x3(-0.011578009, -0.0037521352, -0.0044622095, -0.0022668878, 0.0022691146, -0.00570573, 0.0052153515, 0.005547525, 0.0033032992, 0.009927488, -0.0061824876, -0.016856432), target);\n\ttarget = MulAdd(nb2, MF4x3(-0.07627339, -0.0595728, -0.08247348, -0.016201988, -0.019643232, -0.021891698, -0.0033560628, 0.0056153075, 0.005510208, -0.0061155884, 0.004726241, 0.03613314), target);\n\ttarget = MulAdd(nc2, MF4x3(-0.026918657, -0.017315133, -0.021586075, -0.021625597, -0.008547036, -0.011233614, -0.0047514364, -0.0029167454, -0.00583421, 0.012949899, 0.0035817428, -0.0045735473), target);\n\ttarget = MulAdd(nd2, MF4x3(-0.08581085, -0.07063111, -0.06381294, -0.0040735947, -0.012934923, -0.0057904166, -0.0077691195, -0.00034605907, 0.0023017807, -0.00029635165, -0.042357627, -0.057994146), target);\n\ttarget = MulAdd(ne2, MF4x3(0.05193261, 0.047533646, 0.071092665, -0.015042884, -0.023481138, -0.020945435, 0.008216166, 0.004034294, 0.0030410702, 0.10532969, 0.13052966, 0.11042539), target);\n\ttarget = MulAdd(nf2, MF4x3(0.052652936, 0.045103617, 0.036393207, 0.0018712351, -0.009865708, -0.00591473, -0.0008652197, 7.966737e-05, -0.004292879, -0.013765752, -0.0603564, 0.032057546), target);\n\ttarget = MulAdd(ng2, MF4x3(0.0020095943, -0.014555452, -0.008721001, 0.00085926603, -0.0012287357, 0.007974135, 0.004697991, -1.4738258e-05, -0.0048043244, 0.047545042, 0.099660076, 0.09649951), target);\n\ttarget = MulAdd(nh2, MF4x3(0.024352267, 0.03303334, 0.02903438, 0.0062978864, 0.014672455, 0.0043003284, -0.0017531263, -0.0032476797, 0.001345206, -0.20736417, -0.1745426, -0.32957983), target);\n\ttarget = MulAdd(ni2, MF4x3(0.027512033, 0.029760962, 0.033007182, 9.0356014e-05, 0.0061743665, 0.0036443318, -0.016802983, -0.019364875, -0.014311061, 0.021530075, 0.059616566, 0.07120056), target);\n\t\n\tOUTPUT[gxy] = MF4(target + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Upscale_L.hlsl",
    "content": "// Anime4K_Upscale_CNN_x2_L\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Upscale/Anime4K_Upscale_CNN_x2_L.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Upscale_1\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1, tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = MF4(-0.0054077627, -0.15644358, 0.06612042, 0.014728144);\n\t\t\ttarget1 = MulAdd(src[i - 1][j - 1], MF3x4(-0.01802505, -0.06508559, 0.0017542128, -0.25521114, -0.024155967, 0.07601142, 0.07508073, -0.69212615, 0.06438325, 0.07916419, -0.07266247, -0.17089996), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j], MF3x4(-0.18881685, 0.063188724, 0.08637344, -0.20066689, -0.22774473, -0.10913083, -0.048009537, -0.27475306, -0.15950447, -0.027433012, 0.030303264, 0.018863251), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j + 1], MF3x4(0.19171959, 0.028070524, -0.09780952, 0.057611514, 0.26147488, 0.07180017, 0.09667393, 0.008605127, 0.011190245, 0.040944707, -0.025871381, -0.011468774), target1);\n\t\t\ttarget1 = MulAdd(src[i][j - 1], MF3x4(-0.08601777, 0.2180965, -0.052060187, -0.08091977, 0.3995336, 0.21213862, 0.105202965, 0.010929526, -0.080743685, -0.040439352, -0.07998862, 0.08096829), target1);\n\t\t\ttarget1 = MulAdd(src[i][j], MF3x4(-0.08608087, -0.10902571, 0.5245411, 0.53331816, -0.5507893, 0.6141555, 0.9744618, 0.89056116, 0.081408836, 0.28096125, 0.13647869, 0.026274862), target1);\n\t\t\ttarget1 = MulAdd(src[i][j + 1], MF3x4(0.13985278, -0.29691598, -0.26792645, -0.042485088, 0.27941233, -0.65306807, -0.360506, 0.03810829, 0.09663724, -0.26655033, 0.04372338, 0.063264176), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j - 1], MF3x4(0.18246013, -0.070464276, 0.04686214, 0.059332885, 0.16861221, 0.022623831, -0.09161491, 0.07130491, 0.15691474, 0.095743366, 0.059467375, -0.009469478), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j], MF3x4(-0.07830576, 0.17082681, -0.013175545, -0.035535168, 0.1573564, -0.16532823, -0.49614525, -0.050994795, 0.027053844, -0.20359018, 0.08111269, 0.018715343), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j + 1], MF3x4(-0.060515754, 0.13169582, -0.15245132, -0.045724656, -0.50778043, -0.11690067, -0.08320143, 0.01093529, -0.1954136, 0.07388989, -0.1360143, -0.023233788), target1);\n\n\t\t\tMF4 target2 = MF4(-0.001029383, 0.0058537456, 0.38202196, -0.028818231);\n\t\t\ttarget2 = MulAdd(src[i - 1][j - 1], MF3x4(0.12039797, 0.04008252, 0.073074624, -0.11763173, 0.091902, -0.040129073, 0.009170759, -0.10760076, -0.032387916, 0.07807673, -6.477932e-05, 0.040181372), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j], MF3x4(0.11585734, -0.0078019407, 0.063107856, 0.09835168, -0.029397847, 0.12520139, 0.078661725, -0.12675259, 0.05563671, -0.058422342, 0.01478436, -0.08239175), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j + 1], MF3x4(-0.14991632, -0.0134848505, -0.38663143, -0.10859369, -0.012961176, -0.09099144, -0.19593886, -0.08396245, -0.02676463, -0.0066295485, 0.026225863, -0.014788537), target2);\n\t\t\ttarget2 = MulAdd(src[i][j - 1], MF3x4(0.20830092, -0.07655779, 0.04518565, 0.16015635, 0.5536684, 0.09759215, -0.101477005, -0.5042874, 0.35608026, -0.15335238, 0.0796228, -0.05107349), target2);\n\t\t\ttarget2 = MulAdd(src[i][j], MF3x4(-0.3968312, 0.091579735, -0.085623756, -0.16367513, -0.48967922, -0.08557767, 0.34444988, 1.0766053, -0.2158915, 0.22244956, -0.033804208, 0.25898156), target2);\n\t\t\ttarget2 = MulAdd(src[i][j + 1], MF3x4(0.026278365, 0.1678205, -0.38981274, 0.16932413, -0.0146527905, 0.65131354, -0.08886725, 0.07017853, 0.012986331, 0.029087646, -0.034898676, 0.040925268), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j - 1], MF3x4(0.07614263, 0.015624113, -0.054716587, -0.04951801, 0.016731577, -0.08749623, 0.07815944, -0.015630174, -0.08723511, 0.077201165, -0.12674089, -0.08418575), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j], MF3x4(-0.07938198, -0.4056014, 0.26949093, 0.067213245, -0.47538033, -0.7786735, -0.25821188, 0.029314762, -0.1799233, -0.31132734, 0.17210929, -0.018579468), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j + 1], MF3x4(0.06732179, 0.18373649, -0.00039802346, 0.006567155, 0.36993378, 0.20254396, 0.12314272, -0.07356931, 0.12402926, 0.122744165, -0.07482636, 0.011531308), target2);\n\n\t\t\ttex1[destPos] = target1;\n\t\t\ttex2[destPos] = target2;\n\t\t}\n\t}\n}\n\n//!PASS 2\n//!DESC Conv-4x3x3x16\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = MF4(-0.021096209, -0.016017085, 0.009604813, -0.023907887);\n\ttarget1 = MulAdd(a1, MF4x4(0.29632062, 0.029882489, -0.14098296, -0.18291497, 0.2815667, -0.053558454, 0.10369031, -0.080831036, 0.06955536, -0.020830285, -0.2950748, -0.12086926, -0.023612294, -0.08531449, 0.0390424, 0.011767062), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.094862625, 0.10448947, -0.11741873, 0.18871774, 0.15733057, 0.029140847, 0.16012338, 0.24601823, -0.2918398, 0.09956984, 0.04739516, 0.24494317, -0.021442452, 0.014309354, -0.04935703, 0.13617574), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.1303212, -0.06284708, -0.23948738, -0.05782472, -0.024363542, -0.11251477, -0.07354371, -0.023819327, 0.13228065, 0.05485702, -0.068491034, 0.1938021, -0.046649717, -0.07752723, 0.031408865, 0.026424367), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.4484274, 0.10068111, -0.122855306, -0.0649749, 0.09444103, 0.119198084, -0.22159275, 0.08555494, -0.18764949, -0.16276829, 0.20377621, 0.13764401, -0.027324807, 0.1294057, 0.035147414, 0.010751216), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.23321865, -0.029401073, 0.064655, 0.28420436, 0.051707894, -0.27915454, 0.0037779005, -0.18335588, 0.2275033, -0.25828046, -0.005339017, -0.4358691, 0.30487007, -0.044198595, 0.08767978, -0.04610031), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.044556934, -0.06692216, -0.21124081, -0.1394273, -0.24693833, -0.11292927, -0.026020816, 0.08460799, -0.11183761, -0.020012703, 0.29486617, 0.3726646, -0.054298244, 0.0045891847, -0.23693855, -0.02848257), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.04877764, -0.011964396, -0.08024895, -0.12175299, -0.015131821, -0.048996765, 0.10887477, -0.053192, 0.09514728, 0.00918332, -0.08621957, -0.04674572, -0.06000914, -0.060330987, 0.20702218, -0.015094036), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.1651207, -0.024862131, 0.37494823, 0.10404018, -0.2891288, -0.38082635, 0.3194514, -0.055852838, -0.073994, -0.1566444, 0.08473525, 0.15672058, -0.08205729, 0.33623922, 0.2524126, 0.022668727), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.083043605, -0.2989435, -0.14887308, 0.008989406, 0.01214123, -0.29387334, 0.015363028, -0.027485376, 0.13046521, 0.12814927, -0.05615426, -0.08612421, -0.3833321, 0.30930206, 0.3397905, 0.095533006), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.24895187, 0.033672538, 0.024642626, 0.049984645, 0.09217451, 0.14135426, -0.36297384, 0.10239864, 0.14611131, -0.022452299, 0.009058074, -0.18909958, -0.0049156225, 0.10530887, -0.06942197, -0.06450979), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.14025575, 0.030043123, 0.07131405, -0.0675702, 0.17274232, 0.17896765, -0.4741036, 0.35670453, 0.03911085, 0.079387054, 0.04420335, -0.040182803, 0.078871965, 0.16641952, -0.101532914, -0.07683543), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.09527535, -0.014889733, 0.003928801, -0.0144131305, 0.16238941, -0.073573746, -0.18349837, 0.057071213, -0.056580186, -0.048254594, -0.02551881, 0.13056543, 0.15681924, 0.11329136, 0.026496707, -0.15252273), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.20110673, -0.17727304, 0.16747122, -0.060028642, -0.03426759, 0.34928, -0.16542526, -0.03665969, -0.11838656, 0.050624777, -0.11309917, 0.17241085, 0.07320429, -0.19349192, 0.36426768, -0.09952723), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.44797856, 0.13166381, 0.19358242, -0.17328072, 0.277866, 0.2704677, -0.3897292, -0.09388379, -0.11871803, 0.059352446, 0.02593061, 0.1112078, -0.44574997, -0.20000082, -0.06038736, 0.11825317), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.035831098, 0.03203473, 0.007270905, -0.2803515, -0.07803025, -0.044999845, 0.05503914, 0.02849373, -0.019534718, 0.109557584, -0.057618562, -0.22376212, 0.037630744, 0.07285683, -0.10327242, 0.15022281), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.22891119, -0.07055901, -0.06924297, 0.091851085, 0.079149276, 0.072282575, 0.1054971, -0.055115294, 0.15652373, -0.18508117, -0.044487055, -0.09513059, -0.007512581, 0.04595113, -0.16729085, -0.038352273), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.33190495, 0.024579005, 0.3356564, -0.24311046, -0.12634008, 0.08820384, -0.028739989, 0.0871991, -0.011547642, 0.07184339, 0.098442815, 0.13700496, -0.0665544, 0.18513693, 0.0956979, -0.15374076), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.18756114, -0.21920492, 0.06407122, -0.24816798, -0.061943263, -0.054488074, -0.081633896, 0.0920547, -0.08880129, -0.18094197, 0.006789256, 0.094598, 0.17799775, -0.26764068, -0.02588948, 0.17095666), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.17086025, -0.035769157, -0.11523461, 0.20404252, -0.0398533, -0.19902702, 0.0072308285, -0.099984154, -0.1378846, -0.14236672, 0.40502122, 0.13498029, 0.057273205, -0.06250679, 0.035283897, 0.01703995), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.12786144, -0.23442458, -0.047862124, -0.12505807, -0.23584808, -0.064344, 0.07848756, 0.08764069, 0.34468293, -0.29927257, -0.18664125, -0.20938, 0.07196786, -0.0116679, 0.16299239, -0.076479614), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.08299449, -0.065809734, 0.12079292, -0.14469329, -0.0102624465, 0.04364353, 0.080220595, -0.025435027, 0.010015513, -0.03863331, 0.28750968, -0.07637218, 0.049731467, -0.062238537, 0.04295189, -0.028037619), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.3443906, -0.04198392, -0.1612832, 0.2218389, -0.01519015, 0.093942635, -0.15996122, -0.00093763386, 0.024008257, 0.035953972, -0.15771267, -0.07148778, 0.044501238, -0.14950006, 0.087219894, -0.05831199), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.22099696, 0.117263354, -0.09403858, -0.20318906, 0.18389364, 0.13026148, 0.08169665, -0.014347075, -0.16660765, 0.026503418, 0.058967166, 0.26847002, -0.39771244, 0.36704144, 0.18202503, 0.15385705), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.015089774, 0.120200686, 0.114723265, 0.12578037, 0.16593805, 0.040399004, 0.11654924, 0.0025250788, -0.2342627, 0.05865, -0.16680475, -0.06301523, 0.07027856, 0.18853764, 0.5213158, -0.3325365), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.046818264, 0.04336355, 0.020795586, 0.09917639, -0.028305013, -0.14843199, 0.16168857, -0.18567303, 0.010514865, 0.06331522, 0.064430796, 0.034681283, 0.041065965, 0.06522019, 0.055882502, -0.015027999), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.18064371, -0.17903666, -0.24589087, 0.072444126, 0.13745096, -0.011904026, -0.19597653, 0.023044739, 0.01585197, -0.1759934, 0.2287553, -0.20533411, -0.2898527, 0.42946577, -0.07443011, 0.052736074), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.043961097, 0.10761276, -0.0034299751, 0.10491056, 0.004527805, 0.077598244, 0.077725716, 0.030323742, -0.20945124, -0.2235839, 0.05397613, 0.2072019, 0.008769854, 0.30513015, -0.104206346, -0.20982127), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.0858221, -0.013858144, 0.11189161, -0.005996965, 0.13058044, 0.23954146, -0.29756296, 0.1801562, -0.034966737, 0.16073282, -0.06920962, 0.16596314, -0.06746436, 0.18948093, -0.17374122, 0.035474796), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.23172139, -0.062111232, 0.028210253, -0.022090558, 0.2854972, 0.015097004, -0.2057132, -0.19835956, 0.14960685, 0.09755452, -0.17077617, -0.10259408, -0.11695073, 0.071428165, 0.18146773, 0.22237262), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.008571818, 0.2160462, 0.20442474, 0.008256999, -0.0054347264, -0.036963176, -0.023052184, -0.27406418, 0.0155730015, 0.13230084, 0.028925262, -0.22739749, -0.07608481, -0.059095357, -0.17677523, 0.020464322), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.09186881, 0.10612606, -0.29759738, 0.04590405, 0.042567376, 0.77174157, -0.3156031, 0.22815126, -0.0745266, -0.08352131, -0.03825007, -0.14752272, 0.14866033, -0.07303083, 0.01180863, 0.12170875), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.033268124, -0.08281718, 0.040441882, -0.05514993, 0.07650108, 0.5294327, -0.22229794, 0.049523506, 0.021545604, 0.03359928, 0.032059934, -0.0082821995, 0.036441952, -0.5097175, 0.38215104, 0.33496317), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.18900043, 0.3539563, 0.25134736, 0.21487151, 0.22043267, 0.13304482, -0.17353508, -0.15632114, -0.067851126, -0.08173108, 0.0035601144, 0.16791934, -0.07563204, -0.07128694, 0.10757592, 0.26915342), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.1761959, 0.025833737, 0.09164757, -0.030622564, -0.22870748, 0.11929823, -0.24930833, 0.07446655, -0.17372188, -0.66051316, 0.15344264, 0.20571554, 0.0620721, 0.08122408, -0.0952373, 0.04144613), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.053072393, -0.15877937, -0.065579735, 0.09932804, 0.06803561, 0.11719737, -0.0639249, -0.14433555, 0.1210262, 0.057197437, -0.19896421, 0.2387559, 0.35206345, -0.36237878, -0.12187686, 0.24411117), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.44384086, -0.063816145, 0.14313193, 0.042119484, 0.13939157, 0.02742546, -0.010837158, -0.11953808, 0.083049394, 0.22100104, 0.12818006, -0.27883413, -0.22672728, 0.28484213, 0.053133663, -0.2364556), target1);\n\t\n\tMF4 target2 = MF4(-0.010434646, -0.007589305, 0.03614506, 0.017320616);\n\ttarget2 = MulAdd(a1, MF4x4(-0.0028523596, -0.03346185, 0.30194005, 0.26316985, -0.108354695, 0.19872186, -0.14200853, 0.28833616, 0.009908957, 0.049258288, 0.18224198, -0.10260487, -0.011250263, -0.027236924, -0.03667901, 0.035038423), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.10311966, -0.07219459, 0.13850203, -0.07606934, 0.16186213, 0.20828444, -0.113131486, 0.21757083, -0.14668499, -0.015719058, -0.24257174, 0.33343476, 0.042950086, 0.014013289, -0.095338345, -0.10305408), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.054802764, -0.03977167, 0.058000274, 0.06520257, -0.06657145, 0.09240672, 0.18538313, -0.057592865, 0.11657067, 0.1435708, -0.10273095, -0.12743765, 0.031955425, -0.032504886, -0.043181136, -0.033146795), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.17017461, 0.023741657, 0.12772968, 0.054186005, -0.06654799, 0.13280976, -0.08608028, -0.18274061, -0.14409089, -0.07336282, -0.21611233, 0.3030394, -0.22331606, -0.04621103, 0.008330136, 0.13817237), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.12490482, -0.15037048, -0.308773, 0.015911192, -0.23533738, -0.3296806, -0.16643348, -0.18637176, 0.3725922, 0.22720487, 0.101118185, -0.1130553, 0.14583476, 0.25240546, 0.07148758, -0.023047412), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.21086755, 0.10873368, 0.23762812, -0.12715688, 0.07081291, -0.13914634, 0.23084821, -0.027778924, -0.011987815, -0.27076182, -0.037216157, -0.028230239, -0.055693954, -0.1835301, -0.19994727, -0.05208119), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.0063535348, -0.047104187, 0.16425404, -0.003719743, -0.048529398, -0.17317753, -0.048431315, 0.12659106, -0.10488035, 0.14231968, -0.042716738, -0.20889871, -0.17258343, -0.1703121, -0.08134935, -0.08982632), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.047956906, 0.02809404, -0.23035078, 0.017211597, 0.056016855, -0.16766964, 0.024528379, 0.15064329, -0.20351112, -0.16514936, -0.013601919, 0.056769293, -0.4962774, -0.315249, -0.11879433, 0.24711494), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.11659998, 0.23360188, -0.037019785, 0.01478414, -0.0056206854, -0.058505666, 0.05248197, 0.048921894, 0.014286839, -0.05282425, 0.12870628, 0.12335835, -0.2298834, -0.34117943, 0.07997886, 0.026714392), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.061862264, -0.024006715, 0.1239327, -0.06400159, -0.1736359, -0.13043079, -0.047287256, 0.092979684, -0.052144498, 0.046599787, 0.03391796, 0.10504723, 0.12802011, 0.05123276, 0.15974, 0.052002482), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.22270438, -0.15555483, 0.10334453, -0.033303298, -0.13101499, 0.37030843, -0.6013731, 0.22835553, 0.17596579, -0.0012125646, 0.000731955, -0.03726906, -0.033959538, 0.10808315, 0.043731548, 0.12308547), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.02969512, 0.029882276, -0.04630252, -0.029674841, 0.15309821, 0.35859957, -0.15453109, 0.12228518, -0.062312573, -0.030289005, 0.10737798, 0.01659783, -0.07855408, 0.090425, -0.07134876, 0.10678761), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.068100914, -0.16862309, 0.2094642, -0.02229975, -0.1045019, -0.043305863, 0.18030378, -0.085608065, -0.13514027, 0.11298315, -0.009570404, -0.03180812, 0.19233464, -0.058786966, -0.06211013, 0.1411384), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.025985425, 0.08034115, 0.14352584, 0.039992746, -0.034363434, 0.27888498, -0.21407174, -0.15813926, -0.10999899, -0.15183197, -0.23127002, 0.10193841, 0.029217485, 0.069463246, 0.093416885, -0.17118438), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.34840858, 0.18985972, 0.1336286, 0.11525281, -0.12827359, -0.14426456, 0.13312757, -0.06653705, 0.050836112, 0.06430556, 0.14759327, 0.043341596, 0.17556888, -0.14065917, 0.046736937, -0.01075016), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.13843128, -0.07928894, 0.09180436, -0.17497942, -0.0075141867, -0.13388832, 0.07851216, 0.16109377, 0.190535, -0.05877419, -0.010671232, 0.056779247, 0.005048462, 0.084110186, 0.053035934, -0.18244119), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.2849969, -0.045472432, -0.007433944, 0.1180168, 0.060636494, 0.13299662, -0.14055575, 0.045158602, -0.08960926, 0.013875276, -0.01840017, -0.06518111, -0.062131494, 0.13034189, -0.086812675, -0.302895), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.116545, 0.19018339, 0.015378095, 0.11349383, 0.097009905, 0.08176944, 0.033653412, -0.08137759, 0.03190533, 0.0014444767, -0.110253245, -0.075649016, -0.19349468, -0.22105742, -0.026897507, 0.11604942), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.1504224, -0.17498577, -0.111215115, -0.18127528, 0.01749777, 0.02000031, 0.10482995, 0.0281041, 0.14524435, 0.032341465, -0.1431526, 0.035199255, 0.07964384, 0.12253888, -0.04288506, 0.08354433), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.12756018, -0.09853538, -0.14765038, -0.14513035, -0.1674001, 0.041217312, 0.1293034, -0.14122911, 0.22340834, 0.026480576, 0.30324772, -0.14868121, -0.007565819, -0.118748344, 0.13285564, 0.00254272), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.049038395, -0.053402808, -0.20165808, -0.023086373, 0.11763773, -0.06335101, -0.033782937, 0.04164607, -0.18420623, -0.19549052, 0.046879902, 0.009774202, 0.01943834, 0.0056786705, -0.076153725, 0.02122122), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.26325268, -0.031591017, -0.009897877, 0.1264021, 0.17001875, -0.0703141, 0.09623203, -0.3370359, 0.18430787, 0.27577603, 0.24643779, -0.0070356624, 0.14593714, -0.0370321, -0.09890827, -0.2308416), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.07015072, 0.096860155, 0.237449, 0.02297801, 0.055075265, 0.27420217, 0.020077437, 0.18272734, -0.33312458, 0.10344985, -0.2324171, 0.065973476, -0.20755117, -0.27599007, -0.5285744, -0.4155286), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.07746828, -0.05007699, -0.0768586, 0.20854229, -0.03390625, 0.030966418, -0.019005757, -0.044068232, 0.107805826, 0.27990255, 0.20861949, -0.13380727, 0.11099171, -0.24434194, -0.44939178, 0.09977314), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.025078122, 0.1578438, -0.087854326, 0.20194288, 0.09858984, 0.05664248, 0.007542862, -0.08403176, 0.1984592, -0.18137619, 0.008725761, 0.1726853, -0.05140944, 0.011235891, -0.043068934, 0.0055390405), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.11204605, 0.12672849, 0.21329713, 0.022434214, 0.18346484, 0.15253071, -0.07683229, -0.023870528, 0.15187134, 0.16080903, -0.20011483, -0.055256322, 0.2351501, -0.10940274, 0.3296904, -0.08561938), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.116775244, -0.034662195, 0.09385859, 0.015938438, 0.04321025, 0.07417467, -0.020254206, -0.021971289, 0.082221195, -0.17118677, -0.0803086, -0.04383127, -0.040375095, 0.19555633, -0.02246454, -0.039880734), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.091371894, 0.07079164, -0.061235007, -0.074043915, -0.07527448, 0.20644194, -0.025892835, 0.288527, -0.0681896, -0.18799694, -0.02397431, -0.20931835, -0.23740639, -0.21364078, -0.066721395, 0.046312522), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.028192231, -0.076668344, -0.048378978, 0.08975191, 0.11627764, 0.1206538, 0.13604914, -0.32365093, -0.3457084, 0.038705852, -0.11968679, -0.03261415, -0.08069945, 0.06448551, -0.04925646, -0.112106614), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.02704155, -0.38007632, -0.12648691, 0.0065948786, -0.107972704, -0.07776103, -0.09248745, -0.034419768, 0.08890347, 0.005535876, -0.17764446, 0.01000324, 0.09786164, 0.0046856827, 0.071132, -0.07665281), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.084308736, 0.12159227, 0.09618809, -0.095442675, -0.19964129, 0.12708808, 0.13591234, -0.08824806, 0.13553478, 0.116799936, 0.2792844, 0.3961157, -0.21412137, 0.35075518, -0.4579121, 0.13404456), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.14321525, -0.2190369, -0.0017736118, 0.04966717, -0.21058443, 0.03795149, 0.024490742, 0.16852312, 0.23549259, 0.098397486, 0.39796385, -0.17331013, 0.57935876, 0.14168213, 0.10026468, 0.12272344), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.23204985, -0.13793765, -0.09148106, -0.24824184, 0.03669933, 0.40166143, -0.26450562, 0.1297136, -0.0033718192, -0.14882618, -0.027010696, 0.15510502, -0.13116877, 0.13243876, 0.29493085, -0.159246), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.14412704, -0.043252222, 0.038036022, 0.21720204, 0.16157351, 0.25108346, 0.05750981, -0.11665398, 0.15858066, 0.13024889, -0.30726764, -0.017599456, -0.13654993, 0.16810633, -0.22028227, 0.054728623), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.04761309, -0.1425047, 0.121673144, -0.0067104516, 0.13617267, 0.11343255, 0.14773287, -0.111807466, 0.29447448, 0.043634728, 0.040583152, -0.22446026, -0.17453341, -0.1746306, -0.27435815, 0.1823859), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.0914674, -0.1296898, 0.081237026, -0.03182429, -0.082685776, 0.08469174, -0.014075701, 0.043630067, -0.02028655, 0.043165345, 0.14293486, 0.03086512, 0.16910627, 0.32537475, -0.022409504, -0.15651123), target2);\n\t\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n//!PASS 3\n//!DESC Conv-4x3x3x16\n//!IN tex3, tex4\n//!OUT tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = MF4(0.0012513401, 0.026057906, 0.010539876, 0.009830541);\n\ttarget1 = MulAdd(a1, MF4x4(-0.13837793, -0.05485083, -0.11455316, -0.23340753, -0.0019060506, 0.014073009, -0.006939684, 0.013028122, 0.0070730825, 0.07576272, -0.046580516, -0.10440529, -0.14514132, 0.118322305, 0.15771718, -0.10368211), target1);\n\ttarget1 = MulAdd(b1 , MF4x4(0.0033887655, 0.105515614, -0.022994144, 0.20720185, 0.014884114, 0.04068789, 0.14153919, -0.20556916, -0.106429465, 0.15578473, 0.17493904, 0.27673894, 0.068228535, -0.17600566, 0.117449455, 0.1464803), target1);\n\ttarget1 = MulAdd(c1 , MF4x4(-0.13132714, 0.057890475, -0.15540479, -0.05904855, 0.10353088, -0.014439668, 0.10086415, -0.035871122, 0.15052663, -0.017041713, 0.039761867, -0.20937371, 0.034573525, -0.10553617, 0.054362305, -0.1131222), target1);\n\ttarget1 = MulAdd(d1 , MF4x4(0.043574177, -0.12957309, 0.06257102, 0.059841774, 0.025344899, -0.08974694, -0.02106646, -0.083086155, 0.044729084, 0.07391884, 0.026620472, 0.029281206, 0.0439835, -0.040075477, 0.20127645, 0.08995277), target1);\n\ttarget1 = MulAdd(e1 , MF4x4(0.4999535, -0.16519144, -0.082569085, 0.08618579, 0.20361039, -0.16703975, 0.013153, 0.19670624, 0.2853662, -0.11533776, -0.109247334, 0.06345074, 0.0635587, 0.104548655, 0.31481677, 0.2264137), target1);\n\ttarget1 = MulAdd(f1 , MF4x4(0.029020509, 0.24992752, 0.5356852, 0.16753946, -0.057788625, 0.02481026, 0.2059601, 0.16616577, -0.078577444, 0.307072, -0.08813778, 0.09565001, 0.02336261, -0.1928066, -0.0876608, -0.15015014), target1);\n\ttarget1 = MulAdd(g1 , MF4x4(0.079325944, 0.062302455, -0.10960886, -0.0025239969, 0.02924214, 0.026142644, 0.0821952, 0.008034841, 0.121127814, 0.109858714, -0.053383715, 0.22161359, 0.03572371, 0.013655175, -0.27442926, 0.038870957), target1);\n\ttarget1 = MulAdd(h1 , MF4x4(-0.057337154, 0.03110442, 0.07781571, 0.17697155, 0.10287903, 0.10192227, -0.036485553, -0.07374302, 0.081604324, 0.1566476, 0.23592737, 0.09747013, -0.095862515, -0.1456753, 0.057745866, -0.17291927), target1);\n\ttarget1 = MulAdd(i1 , MF4x4(-0.070838295, 0.15307118, -0.16363588, 0.08716062, -0.012117197, 0.09717453, -0.057428412, 0.019387208, -0.011734471, 0.28442237, -0.0138647, 0.1619097, 0.046210334, -0.06327717, 0.035489302, -0.055681925), target1);\n\ttarget1 = MulAdd(a2 , MF4x4(0.03013589, -0.16602181, 0.00417107, -0.022452664, 0.03615902, 0.09972378, -0.043409757, -0.028448848, -0.055032104, 0.08841848, -0.12667881, -0.06865927, -0.020555131, -0.09292043, 0.03676055, 0.1469838), target1);\n\ttarget1 = MulAdd(b2 , MF4x4(-0.03413294, 0.1853497, -0.21196875, -0.2122292, -0.046451584, 0.33640862, 0.11074589, 0.0038315703, -0.32845765, -0.018679257, -0.24653831, 0.15887207, 0.018353334, -0.32828686, 0.070055164, 0.22649562), target1);\n\ttarget1 = MulAdd(c2 , MF4x4(-0.11916958, -0.11415976, 0.10442459, 0.026471134, 0.15098315, 0.030927312, 0.08758737, 0.04333666, -0.40113255, -0.22881064, -0.18026584, 0.010727328, 0.04185913, -0.033592816, 0.019705769, -0.09931264), target1);\n\ttarget1 = MulAdd(d2 , MF4x4(-0.024548884, 0.070657834, 0.04315053, -0.09292352, -0.023722034, -0.06946775, -0.017095754, 0.14835307, -0.030104019, 0.13317905, 0.052319784, 0.18717423, 0.024163181, 0.04198584, 0.024550296, 0.09124823), target1);\n\ttarget1 = MulAdd(e2 , MF4x4(0.36571705, 0.28200173, -0.031241365, 0.32836193, 0.15685938, 0.14499408, -0.03710283, -0.105348445, 0.2111411, -0.14371765, 0.22234774, 0.12241296, 0.12288187, -0.29133305, -0.23992771, 0.102442585), target1);\n\ttarget1 = MulAdd(f2 , MF4x4(-0.30764952, -0.38244587, -0.021552043, 0.02371933, -0.043024007, -0.09969857, -0.08754052, -0.05584622, 0.32374346, 0.21340463, 0.110945925, -0.19904156, -0.1425847, -0.16605812, -0.14231746, -0.14958249), target1);\n\ttarget1 = MulAdd(g2 , MF4x4(0.07996341, 0.036993798, 0.013508032, 0.015037227, -0.05188829, -0.08953449, 0.024801137, 0.20462893, -0.013199976, -0.19138044, -0.056084607, 0.14518543, -0.029846137, 0.033994604, 0.006321045, -0.19919403), target1);\n\ttarget1 = MulAdd(h2 , MF4x4(0.09230355, 0.17356168, -0.057000663, -0.10861382, 0.038658872, 0.01218888, 0.19109936, 0.021123217, 0.042241503, 0.008514072, 0.031998653, 0.014464009, -0.036506813, 0.27310863, -0.052563597, -0.21396813), target1);\n\ttarget1 = MulAdd(i2 , MF4x4(-0.036255296, -0.11269877, -0.07659167, -0.09690911, -0.027218975, 0.105712906, 0.05750272, 0.14222133, 0.016676722, 0.0962918, 0.05514509, -0.023851087, -0.07117767, -0.020666543, -0.23072378, -0.043072045), target1);\n\ttarget1 = MulAdd(na1 , MF4x4(0.1542571, -0.13077767, -0.0881844, -0.00536349, 0.019526271, -0.1529528, -0.11660246, -0.1698449, 0.019345785, -0.039716557, 0.14421196, 0.08003151, 0.15334103, -0.16667187, 0.006088769, 0.13378714), target1);\n\ttarget1 = MulAdd(nb1 , MF4x4(-0.08746076, 0.060209457, 0.051582757, 0.02863364, 0.1454257, 0.42194176, 0.09892967, 0.26043537, -0.06934357, -0.1020657, 0.23833197, 0.15991127, 0.09294198, 0.017690487, 0.11748737, -0.2849694), target1);\n\ttarget1 = MulAdd(nc1 , MF4x4(0.12285264, 0.073884204, -0.027040116, 0.03438263, -0.060739577, 0.17927702, 0.16900496, 0.3545027, 0.1545223, -0.09951323, 0.42339948, 0.14226453, 0.10644413, 0.15645456, -0.03346077, -0.009488195), target1);\n\ttarget1 = MulAdd(nd1 , MF4x4(-0.080912456, 0.16929491, 0.027275667, -0.020797532, 0.05746718, -0.071174294, 0.3193612, 0.055932105, 0.031726856, -0.03390961, 0.13757136, -0.017296424, -0.041106436, 0.02487556, -0.29788992, -0.29300368), target1);\n\ttarget1 = MulAdd(ne1 , MF4x4(-0.32740706, 0.4221705, 0.35447162, 0.13970987, 0.07307587, 0.65598255, 0.7267268, 0.35669217, -0.24410655, 0.30564576, -0.033510603, 0.20394838, -0.012135275, -0.12212605, 0.00741055, -0.12938774), target1);\n\ttarget1 = MulAdd(nf1 , MF4x4(0.17577599, -0.075835876, -0.06821395, -0.19289997, 0.048764437, 0.11093425, 0.15844633, 0.21540429, -0.14261006, -0.12678951, -0.05380409, 0.21502183, -0.053737447, -0.23268248, 0.077271536, -0.11794149), target1);\n\ttarget1 = MulAdd(ng1 , MF4x4(-0.06283879, -0.11581014, -0.0077474653, -0.051150266, 0.017263902, -0.12403667, 0.13689952, -0.13955206, -0.036969677, 0.04593233, 0.31484202, -0.021023672, 0.006109164, -0.022175733, 0.32699695, -0.26805824), target1);\n\ttarget1 = MulAdd(nh1 , MF4x4(0.07529928, -0.020912366, -0.14532542, -0.13928838, 0.07875855, -0.18651104, 0.47042093, 0.342289, -0.06575549, -0.13776249, 0.21936299, 0.124723375, 0.05280059, -0.07600857, 0.0027616988, 0.11619774), target1);\n\ttarget1 = MulAdd(ni1 , MF4x4(0.06760704, -0.11735106, 0.07262433, -0.040624633, 0.35947633, 0.29390943, 0.025136888, -0.12812558, 0.17102966, -0.15462054, 0.37353945, 0.030337518, -0.01959842, -0.07917661, 0.036980435, -0.008516924), target1);\n\ttarget1 = MulAdd(na2 , MF4x4(-0.07072042, 0.19770962, -0.039348952, 0.06489617, -0.03382829, -0.11054973, -0.035438936, 0.011020459, -0.050599303, -0.07308136, -0.029521624, 0.0694216, 0.021597218, 0.07275136, 0.1196986, -0.021191286), target1);\n\ttarget1 = MulAdd(nb2 , MF4x4(0.027155813, -0.024280313, -0.1322834, 0.219577, 0.013412778, 0.027934693, -0.10113296, 0.16649272, 0.029343246, 0.08333487, -0.09067474, -0.06318277, 0.016611677, 0.22737436, 0.11019619, -0.11105013), target1);\n\ttarget1 = MulAdd(nc2 , MF4x4(-0.10233781, 0.04936236, -0.12536384, 0.1270058, -0.07842266, 0.0018531404, 0.021235077, -0.13014361, -0.06192502, -0.07054751, -0.05475905, 0.053059015, 0.15269022, 0.11485296, -0.09188326, -0.13495958), target1);\n\ttarget1 = MulAdd(nd2 , MF4x4(-0.038748156, 0.17470013, 0.008070423, 0.47245374, 0.14041074, 0.0029743444, 0.09280988, -0.16300924, 0.025588343, 0.042092193, 0.021749513, -0.07912978, -0.08887605, -0.06223286, -0.017056612, 0.11412155), target1);\n\ttarget1 = MulAdd(ne2 , MF4x4(-0.62907135, -0.054125126, -0.3091851, -0.2599738, 0.24917828, 0.36420155, 0.07772076, 0.039711658, -0.25157338, -0.023638945, -0.054642107, 0.25950512, -0.26855794, 0.16737756, -0.011335203, -0.383141), target1);\n\ttarget1 = MulAdd(nf2 , MF4x4(0.019852921, 0.2599611, -0.17794183, 0.086149536, 0.27634904, 0.21865687, -0.047085866, -0.08818839, 0.013813605, 0.21364933, -0.22009525, -0.030338509, -0.1512191, 0.042633552, -0.17577383, 0.0662118), target1);\n\ttarget1 = MulAdd(ng2 , MF4x4(-0.15513746, -0.07846239, -0.13220623, 0.106471166, 0.05573645, 0.16334842, -0.07945537, -0.19104981, -0.013032576, 0.08952008, 0.055789266, -0.035824023, -0.017594192, -0.04652965, -0.30483812, 0.054347165), target1);\n\ttarget1 = MulAdd(nh2 , MF4x4(0.054959666, -0.055990525, 0.142193, 0.09890494, 0.047798425, 0.15105279, -0.16933344, -0.08214855, -0.11551477, 0.06605292, -0.20606443, -0.04266445, 0.01709317, -0.097884715, -0.21919689, 0.024738865), target1);\n\ttarget1 = MulAdd(ni2 , MF4x4(0.009435747, -0.0011143036, 0.08239794, 0.06413721, -0.09412612, -0.07816752, 0.0070877066, -0.054295234, -0.02152047, -0.057394918, -0.02919309, 0.020081067, -0.03086805, -0.056924064, 0.026491363, 0.015115628), target1);\n\t\n\tMF4 target2 = MF4(-0.03782637, -0.0035752894, -0.010155095, -0.025359483);\n\ttarget2 = MulAdd(a1, MF4x4(0.057580933, 0.01911187, -0.008719538, -0.017969212, -0.24201718, -0.058988657, -0.0025294814, -0.011815471, -0.10723921, -0.19644037, 0.020027963, 0.035667516, 0.08559372, 0.27885816, 0.064953476, -0.05350714), target2);\n\ttarget2 = MulAdd(b1 , MF4x4(0.045166798, -0.10751055, 0.053228382, 0.12519331, 0.25117958, 0.06537292, -0.15587787, -0.07206778, 0.06837826, -0.043205425, -0.12318706, -0.15438488, 0.03246428, 0.074852064, 0.062248066, -0.009753593), target2);\n\ttarget2 = MulAdd(c1 , MF4x4(0.09432274, 0.011490796, -0.04061421, -0.16661306, 0.05983951, -0.020288106, 0.029864697, 0.013547436, 0.021477815, -0.07964464, 0.045970913, 0.16307391, -0.04462305, 0.046968628, 0.029862186, 0.11649774), target2);\n\ttarget2 = MulAdd(d1 , MF4x4(-0.14416671, 0.12803924, -0.18187119, -0.15840115, -0.10262368, 0.043705128, -0.10072281, -0.06468493, -0.043781534, -0.015372785, -0.16681372, 0.05544772, 0.03745967, -0.30812827, 0.007939141, -0.14296778), target2);\n\ttarget2 = MulAdd(e1 , MF4x4(-0.10959357, -0.23731256, 0.17797269, 0.1566764, -0.04658083, -0.08226227, 0.065335095, 0.12799698, -0.04347693, 0.07439239, 0.124068074, -0.12433461, 0.39953944, -0.4547675, -0.15020098, 0.029323136), target2);\n\ttarget2 = MulAdd(f1 , MF4x4(0.008521254, -0.42012635, -0.103437595, -0.14140712, -0.13161388, -0.04296955, -0.03418078, -0.11619488, -0.113280736, -0.04337926, -0.15152383, -0.025833655, -0.037376937, 0.028724195, 0.035038933, 0.07584188), target2);\n\ttarget2 = MulAdd(g1 , MF4x4(-0.0015208189, 0.02739281, 0.07880385, -0.05264596, 0.0006570586, -0.053559244, -0.060818747, 0.0014127572, -0.12706065, -0.22151639, 0.0050813453, 0.03868026, 0.017800469, 0.08653453, 0.12580872, 0.10975057), target2);\n\ttarget2 = MulAdd(h1 , MF4x4(-0.016247116, 0.060199317, 0.08806292, -0.0053588278, -0.036467995, 0.14757904, 0.010754306, 0.060899615, -0.1110678, -0.050623085, -0.021320427, -0.1970179, 0.1138183, 0.02913883, 0.011708719, -0.0031000238), target2);\n\ttarget2 = MulAdd(i1 , MF4x4(-0.07490824, 0.26012638, 0.023562372, -0.04637545, 0.015996248, -0.02646302, 0.0035619289, 0.009863964, 0.004463742, -0.13282667, 0.04664953, -0.07782132, 0.026051573, -0.13182716, -0.03470513, 0.082064465), target2);\n\ttarget2 = MulAdd(a2 , MF4x4(-0.04953172, 0.055778302, -0.007956572, 0.06453463, -0.112365015, 0.031204617, -0.031123973, 0.13237885, -0.08588153, -0.15947914, 0.25160727, -0.0101198545, -0.09021632, 0.0047894586, -0.008986191, -0.11622616), target2);\n\ttarget2 = MulAdd(b2 , MF4x4(-0.07868324, -0.03463213, 0.011006695, 0.0033356217, 0.032993857, -0.10459223, -0.11331984, -0.17686851, -0.13263261, -0.22213052, 0.10728409, -0.1332059, -0.0019830016, -0.062202223, -0.12468388, -0.102955), target2);\n\ttarget2 = MulAdd(c2 , MF4x4(0.06774758, -0.019607622, -0.054707706, -0.032572657, -0.056999106, 0.0063034142, -0.0040720105, 0.04574635, 0.21903323, 0.13402393, -0.07107346, -0.08973124, 0.020255536, -0.021238161, -0.104306765, -0.009237116), target2);\n\ttarget2 = MulAdd(d2 , MF4x4(0.10643413, -0.116414584, -0.097003944, -0.07626372, -0.28920346, 0.023803055, 0.07691808, 0.015008518, -0.1373578, 0.01935071, -0.07574301, 0.052712873, 0.09657614, -0.02497193, -0.0043158466, -0.09333523), target2);\n\ttarget2 = MulAdd(e2 , MF4x4(-0.25414145, -0.26243624, 0.12937985, -0.17944777, 0.3664257, -0.06487048, -0.10509681, -0.10630014, 0.075283855, 0.4662916, -0.0014712083, -0.29535007, -0.13022043, 0.25766194, 0.14769283, 0.10512634), target2);\n\ttarget2 = MulAdd(f2 , MF4x4(0.0689302, 0.022661772, -0.043984957, 0.13596754, -0.06885858, 0.059424106, 0.017230453, 0.08873089, 0.32940426, -0.12071059, -0.08323642, 0.23238598, -0.06291085, 0.09859973, -0.00700876, 0.12986307), target2);\n\ttarget2 = MulAdd(g2 , MF4x4(-0.060717613, 0.030503884, -0.06323549, 0.0059739, 0.08190414, 0.047006775, -0.0023143853, -0.027005509, -0.17168896, 0.20450558, 0.047933526, -0.03124133, 0.14688456, 0.044616744, -0.07474459, 0.13730273), target2);\n\ttarget2 = MulAdd(h2 , MF4x4(0.16486372, 0.13952915, 0.1093748, -0.031850196, -0.14090009, -0.120079, 0.023628023, -0.077027865, 0.09811187, -0.033171307, -0.03331771, -0.038893215, 0.011286584, -0.15111947, -0.017341943, 0.0015878569), target2);\n\ttarget2 = MulAdd(i2 , MF4x4(-0.09481133, 0.107053526, 0.047643233, 0.16805217, -0.0678524, -0.07519125, -0.02258995, -0.13705339, 0.16563395, -0.16972524, 0.04326224, 0.024816778, 0.010601283, -0.041156873, 0.062542215, 0.047571044), target2);\n\ttarget2 = MulAdd(na1 , MF4x4(0.12500185, -0.006936863, 0.024489427, 0.1740798, -0.036525737, -0.12511401, 0.07990025, 0.02839474, -0.12753619, -0.06010621, 0.08279232, -0.081194244, -0.09039855, -0.18112564, -0.26476932, -0.031485114), target2);\n\ttarget2 = MulAdd(nb1 , MF4x4(-0.100102335, 0.22857793, 0.14938287, -0.014803003, -0.17217094, -0.62685734, 0.095959224, 0.17851897, 0.06559054, 0.10896349, 0.0067452556, -0.07877991, 0.15820199, -0.19860643, -0.23554341, 0.108216554), target2);\n\ttarget2 = MulAdd(nc1 , MF4x4(-0.06440183, -0.086768515, 0.06501931, -0.013325654, 0.048092242, -0.2516782, -0.07378936, -0.5093634, -0.21180914, 0.028729467, 0.097722694, -0.10443471, 0.087278105, -0.13554108, -0.07925715, 0.025918096), target2);\n\ttarget2 = MulAdd(nd1 , MF4x4(0.101379745, -0.098901495, 0.088425554, 0.10312074, -0.06832467, -0.14247051, -0.06577163, 0.038505282, -0.058837283, -0.041290045, 0.024700344, -0.03952513, 0.050091445, 0.20111398, -0.12729187, 0.17162229), target2);\n\ttarget2 = MulAdd(ne1 , MF4x4(-0.14357474, -0.52516335, -0.28848764, -0.25948864, -0.6469683, -0.25461218, -0.12740892, -0.23631012, -0.14096075, -0.28670883, 0.12026559, -0.17575467, 0.40593022, 0.09236864, 0.11895183, -0.21580887), target2);\n\ttarget2 = MulAdd(nf1 , MF4x4(-0.027686533, -0.014736693, 0.11776454, 0.104835264, -0.1122669, -0.10067572, 0.054669123, -0.3256272, -0.1618158, 0.24705333, 0.07530265, -0.16693603, 0.11981224, -0.01764311, 0.035309367, 0.18991415), target2);\n\ttarget2 = MulAdd(ng1 , MF4x4(0.075753845, 0.030512655, -0.033218108, -0.0020751022, -0.059813447, 0.13577273, -0.17669228, -0.015658198, -0.03524086, -0.027248759, 0.011696296, -0.13176118, 0.13976848, -0.11381985, -0.069327734, -0.04551793), target2);\n\ttarget2 = MulAdd(nh1 , MF4x4(0.025345126, -0.017192554, -0.10062235, 0.19348828, -0.1404843, 0.19161314, -0.266943, -0.30460906, -0.25685784, 0.023311002, -0.21997964, -0.04452797, 0.039271735, -0.0077815196, 0.05758964, 0.08804478), target2);\n\ttarget2 = MulAdd(ni1 , MF4x4(0.04886391, -0.017406208, -0.038027596, 0.012643386, 0.14007851, 0.0012767792, -0.115759425, 0.097489856, 0.17599659, -0.050711423, -0.084151536, -0.15770845, -0.08287477, 0.120081306, 0.015947923, -0.06668065), target2);\n\ttarget2 = MulAdd(na2 , MF4x4(-0.10980535, 0.12270783, 0.063907675, -0.07847296, 0.10355225, -0.31747913, -0.10403689, 0.005290646, 0.07667107, -0.10277437, -0.08069292, -0.02559804, -0.047999926, 0.29834297, -0.036717292, -0.05650061), target2);\n\ttarget2 = MulAdd(nb2 , MF4x4(-0.103821196, -0.009593053, 0.066295676, -0.38370672, -0.037927628, -0.2711836, 0.1377398, -0.08418159, -0.0737972, -0.039782777, 0.13933297, 0.04516865, -0.06268818, 0.337236, -0.121655226, -0.008400626), target2);\n\ttarget2 = MulAdd(nc2 , MF4x4(-0.15113829, 0.0017028727, -0.02523152, 0.020020628, 0.14301538, -0.20421621, -0.07266804, 0.04835691, -0.03385325, 0.06579219, -0.026479365, -0.037032843, 0.038153037, 0.014210751, -0.03542229, 0.0710242), target2);\n\ttarget2 = MulAdd(nd2 , MF4x4(0.0054667736, 0.01744876, 0.3065127, 0.049586684, 0.18856415, 0.2730343, -0.2333077, 0.0068653813, 0.3263104, 0.1581569, -0.067741506, -0.10893117, -0.23163976, 0.0029724934, 0.21427019, -0.05729933), target2);\n\ttarget2 = MulAdd(ne2 , MF4x4(0.2783585, 0.17852917, -0.1389073, 0.1369532, -0.10491301, 0.3753245, -0.2739856, 0.18703647, -0.64889586, 0.06298504, -0.29364008, 0.17944366, 0.09733316, -0.21755181, 0.090409346, -0.022404745), target2);\n\ttarget2 = MulAdd(nf2 , MF4x4(-0.08643692, 0.043516237, 0.07125337, -0.23520306, 0.042653214, 0.058355685, -0.13027787, -0.0015239809, 0.06168663, 0.04952333, 0.03217504, -0.094814256, 0.25104445, 0.06959146, -0.14522897, -0.034003105), target2);\n\ttarget2 = MulAdd(ng2 , MF4x4(0.10193368, 0.109207876, 0.06922978, -0.035177775, 0.08234648, -0.24269609, 0.05216447, 0.07194904, 0.08424774, -0.023948545, 0.1292036, -0.16073976, -0.11004149, -0.14011864, 0.05699544, 0.08603814), target2);\n\ttarget2 = MulAdd(nh2 , MF4x4(-0.159505, 0.011439578, 0.031358175, -0.074699186, 0.16425711, -0.29734048, 0.06415531, 0.09782104, -0.047154855, -0.053923853, 0.13791925, 0.01920221, 0.2510621, 0.011180524, -0.02389365, 0.22188987), target2);\n\ttarget2 = MulAdd(ni2 , MF4x4(-0.052833233, -0.0011790307, 0.01832988, -0.087143995, 0.16383314, -0.018386772, 0.018473852, 0.022136362, 0.00095872144, 0.059976995, 0.00461632, 0.006194564, -0.05576084, 0.19239509, 0.07017777, -0.0542914), target2);\n\t\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n}\n\n//!PASS 4\n//!DESC Conv-4x3x3x16, Depth-to-Space\n//!IN INPUT, tex1, tex2\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 f2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = MF4(-0.0010649486, -0.00016483334, -0.0012494534, -0.00068970193);\n\ttarget1 = MulAdd(a1, MF4x4(0.02066797, -0.013601862, -0.007048889, -0.010436224, -0.013475746, 0.017484829, 0.003569871, 0.010704422, -0.013622159, 0.0051929723, -0.01672668, -0.011980923, 0.03233822, -0.008870257, 0.024951939, 0.011703474), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.09294306, 0.0014346406, 0.08119577, -0.008968148, -0.003100696, 0.026659792, -0.012744048, 0.02888033, -0.032950055, 0.016204342, -0.017369213, 0.022491494, 0.049124617, -0.027378289, 0.02111168, -0.037705775), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.008216952, -0.021160914, 0.040945128, -0.010472813, -0.005768232, 0.0016923469, -0.0061864546, 0.0007168136, -0.014967856, -0.0013775446, -0.03696006, -0.0011331941, 0.006405253, 0.0030893548, 0.052975312, -0.0077081146), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.1026977, 0.06607977, -0.025372373, -0.03354179, -0.034359697, -0.046674587, -0.012842571, 0.0041260347, 0.0189941, -0.029389031, 0.028211223, 0.010089593, -0.0057367194, 0.053311557, -0.037211698, 0.0035831304), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.21819879, 0.24159485, 0.25479653, 0.22689046, -0.14693534, -0.101709016, -0.12968269, -0.11193918, -0.17564386, -0.09321151, -0.1088182, -0.098540194, 0.016255755, 0.11983511, 0.07260058, 0.11377339), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.0065045636, -0.014916138, 0.08657154, 0.08976987, -0.013105138, -0.014341284, -0.07822386, -0.05141758, -0.008127414, -0.023220202, -0.07729052, -0.05847569, -0.014462153, -0.008247349, -0.029479884, 0.053986717), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.05111642, 0.013267287, -0.010962933, -0.0062592067, 0.031603336, 0.017792836, 0.040512457, 0.021096494, 0.025952626, 0.03858803, 0.009819873, 0.014087486, -0.016874991, -0.021088999, 0.0048008533, -0.014261808), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.054689944, 0.019172559, -0.10202758, 0.01563535, 0.024953881, -0.042438734, 0.03068713, -0.019600231, 0.0026854384, -0.08990359, 0.038635172, -0.0014791996, -0.045267813, -0.06297795, -0.050205074, -0.036708377), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.009820029, -0.007953665, -0.0030171487, 0.025994476, 0.0055633057, 0.0023106632, -0.0011157666, -0.032652337, 0.02231576, 0.0150678335, -0.00035031908, -0.049004823, -0.0048957765, -0.007189859, -0.022652647, -0.039600767), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.025157524, 0.005564745, 0.0077270563, -0.007929144, 0.07835409, -0.03961485, 0.0042581395, -0.012796515, 0.018968092, 0.0065416014, -0.018439304, -0.031132344, -0.008802365, -0.019820224, -0.053818177, 0.019140625), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.024769353, -0.016378574, 0.11481205, -0.026075391, -0.028652724, -0.008835214, 0.06427986, -0.04859151, -0.014552956, -0.028410029, 0.111585446, 0.009804185, -0.042241797, 0.0019805022, 0.03361954, -0.017370641), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.034053475, 0.038674638, -0.04696516, -0.0045251776, -0.0039383816, -0.0021523088, -0.021408198, -0.0003014931, -0.023644248, 0.020932276, -0.108067356, 0.030942762, -0.026552102, -0.0056460355, 0.008178258, -0.0009253607), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.078304745, 0.011302627, -0.036976036, -0.013908656, -0.10690595, 0.016818136, 0.015758326, -0.016121918, -0.037873853, 0.00037048876, -0.009456388, -0.016097274, 0.057774395, 0.15647416, 0.00012419945, -0.085859895), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.2873381, -0.16951321, 0.14959157, 0.36375824, -0.16162755, 0.30172205, -0.28958184, 0.2487593, -0.10533105, 0.42946494, -0.20263031, 0.23740861, 0.023840647, -0.06442918, -0.29647085, -0.12943329), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.0029997546, 0.023317888, -0.023340696, -0.09114311, -0.05119816, -0.08453361, -0.041490365, 0.006037165, 0.016185664, -0.08495001, 0.08690409, 0.10635855, -0.0121372985, -0.0061607, -0.03049874, 0.03893408), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.010922993, 0.03413124, -0.011615248, -0.016528865, 0.015621528, 0.08856427, 0.01220382, 0.0052098404, 0.04833281, 0.037831176, 0.026502393, 0.0107578635, 0.029293455, -0.0051649977, 0.007572071, 0.010101437), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.0016892543, -0.086751014, -0.0041350387, -0.06005637, 0.041606825, -0.19200447, 0.028292444, -0.017876074, 0.0101423515, -0.08625792, 0.09077659, 0.024676733, -0.046471898, -0.021680003, 0.007921834, -0.079603985), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.017057033, -0.008013634, -0.018102577, -0.01345755, 0.0620006, -0.025968201, 0.07138734, -0.09975251, -0.005465781, -0.011184834, -0.0651285, -0.079556055, -0.00055764546, -0.007492052, -0.029603545, -0.07078825), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.10589389, 0.021210285, -0.028930133, 0.016055413, -0.18338472, -0.051082015, 0.1020663, 0.014365114, 0.11688869, -0.039388333, 0.009866559, -0.03795289, 0.013310502, 0.023231732, 0.007659133, -0.0027602138), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.0025395593, 0.0073232944, -0.04352944, 0.019918712, 0.020041449, -0.073162615, 0.096950345, 0.021914015, -0.17350666, 0.12829295, 0.07900105, 0.03115375, -0.012729986, 0.025017815, -0.19016227, 0.03532046), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.004561337, 0.018127436, -0.03147566, 0.014196702, 0.016791651, -0.0021540376, -0.021546744, -0.006671925, -0.008601794, 0.0384946, -0.16477007, 0.122372, -0.03592093, -0.016040638, 0.025269061, 0.023783052), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.17777547, -0.29313773, 0.15184408, -0.026345825, 0.046505112, -0.2121665, 0.08373203, 0.1717021, -0.028687157, -0.07293457, -0.062076677, 0.056581914, -0.19576493, -0.1566389, 0.11269683, 0.12300568), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(-0.2722888, -0.23436427, -0.1575821, -0.48185775, 0.38314724, 0.34028763, -0.22216766, 0.007053101, 0.43936196, -0.106232345, 0.3447898, -0.23145236, 0.17801034, 0.107395455, -0.10301275, -0.37671486), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.027849002, 0.005493108, -0.07151169, -0.037706394, -0.030193258, 0.010484296, 0.12785462, 0.013065869, -0.02244137, 0.07738321, 0.1428445, 0.113706514, -0.016278854, -0.042375315, -0.014864632, 0.009536567), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.016663784, 0.05133444, -0.036621124, -0.008492059, 0.006291255, 0.11044035, -0.06309081, -0.069970004, -0.080658376, 0.09237095, -0.034645274, 0.008006193, 0.0027648888, -0.055031255, 0.03726407, 0.04109432), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.020757113, -0.037167564, 0.10940448, 0.10017512, -0.0557746, 0.068767264, 0.004170172, -0.13714421, -0.03749213, 0.06711421, -0.106826246, 0.11498757, 0.04753172, 0.10241908, 0.029435748, 0.07990668), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(0.006560853, 0.023810847, -0.024475241, -0.058117945, -0.035195846, -0.04271988, 0.049571864, 0.15042038, -0.007620832, -0.025544636, 0.008050735, 0.01056782, 0.003100258, 0.004679245, 0.006587324, 0.018110644), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.02249566, 0.007422409, 0.012279647, 0.010022545, 0.009818794, -0.0038862806, 0.0011564652, -0.0012341562, 0.025019286, -0.0007220492, 0.0124062635, -0.0023235283, 0.007858289, 0.005228454, -0.012827192, -0.007885503), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.006161589, -0.00088863634, -0.023869669, 0.0018966346, -0.029431801, -0.02086368, -0.0028806294, -0.018974712, -0.061033156, 0.0062700063, -0.013323617, -0.002422788, 0.006092313, 0.023675537, 0.024895974, 0.028143935), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.01571405, -0.011126691, -0.023274293, -0.011942278, 0.008145339, 0.002989056, -0.009912996, 0.003355017, 0.027048714, -0.0027421801, -0.017191814, 0.011846277, -0.0014130942, -0.007118815, -0.006929838, 0.0016808703), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.008867632, -0.054621387, 0.00521757, -0.001299046, -0.011991457, 0.01253288, 0.007283377, 0.008240456, -0.0328741, 0.030364394, 0.020916186, 0.046377357, -0.0025963385, 0.01801948, 0.017200526, 0.00594781), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.049747035, -0.019024936, -0.037307423, -0.08635432, 0.06362242, -0.031690367, 0.0065028532, -0.008046128, -0.05511954, -0.10017574, -0.105036125, -0.07040073, 0.17360815, 0.01423494, 0.08344793, 0.034444667), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.017059349, 0.018542623, 0.08186985, 0.032335408, 0.025869634, 0.05591529, 0.06690499, 0.03575357, -0.012014303, 0.0105476575, 5.6129655e-05, -0.048691276, 0.018272987, 0.006864036, 0.07919666, 0.011271695), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.0083691375, 0.019432282, -0.0020216214, 0.010078488, -0.010552234, -0.018613037, -0.01894401, -0.019692581, -0.018510802, -0.05016945, -0.019306058, -0.026060628, -0.022509305, -0.026064832, -0.022758938, -0.0126465075), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.014892795, 0.05182727, 0.029640755, 0.042491425, 0.002331018, 0.049497634, 0.023474293, 0.03618418, 0.042020023, 0.022141129, -0.01769678, -0.05579617, 0.01911445, 0.12306055, -0.01590528, 0.034323514), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.006270243, 0.007303163, 0.00036148846, 0.03448912, -0.012123668, -0.009662251, -0.024768578, 0.011880113, 0.022290664, 0.020946119, 0.080712624, 0.07576267, -0.019421795, -0.0020419061, 0.018644858, 0.06175357), target1);\n\t\n\tMF4 target2 = MF4(-0.0009943815, -0.0009860148, -0.0010532598, -0.0012024855);\n\ttarget2 = MulAdd(a1, MF4x4(0.0035857174, 0.0015660138, 0.020620639, 0.005492695, 0.001423522, -0.0054458505, 0.012705879, -0.0034037326, 0.0149765, 0.013593896, -0.010144564, -0.0033618324, -0.025044372, -0.015873099, 0.004778018, 0.0032093422), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.048154887, 0.0020999224, -0.025491469, 0.006954485, 0.033840816, -0.004235974, -0.0017972046, -0.016532846, 0.021911, -0.019167153, 0.028508998, -0.009081471, -0.007042987, 0.01162185, -0.04339448, 0.0007982697), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.00692694, 0.0055899867, -0.023532946, -0.005534464, 0.0065109115, -0.0013627014, 0.030455293, -0.0042733895, 0.003067062, -0.0019513131, 0.006832627, -0.009393006, -0.000787669, 0.0077676126, 0.017214414, 0.0005746928), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.04131343, 0.0061334246, 0.04663622, 0.034750223, 0.08184925, 0.054405987, 0.024695259, 0.049768113, 0.018208977, -0.008268458, -0.0025095541, -0.008479898, -0.024029268, -0.010577515, -0.005219355, 0.018835438), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.06885562, -0.093354285, -0.048095718, -0.09125787, 0.010425496, 0.05662435, 0.063850805, 0.052370857, 0.005560605, 0.10203871, 0.011031155, 0.0477262, -0.18752532, -0.11192383, -0.101294495, -0.109485805), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.036398027, 0.014735432, 0.016239874, -0.01584611, -0.01778564, -0.004402638, -0.023574408, 0.02128348, -0.0046439893, -0.009485744, 0.0150541775, 0.042738233, 0.002258786, -0.0077040903, -0.10126805, -0.032423664), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.017738108, -0.005236546, 0.017476387, 0.024146654, -0.008857861, 0.030536365, 0.00078645826, -0.0040980624, 0.011337365, 0.02425144, 0.00035175736, -0.006825428, 0.0052930177, -0.0023696972, 0.005261922, -0.005584412), target2);\n\ttarget2 = MulAdd(h1, MF4x4(9.1015834e-05, -0.025756188, -0.03374904, -0.04208741, -0.0063595036, -0.013884236, -0.01298973, 0.017781528, 0.00026187245, -0.03274113, 0.02486941, 0.028255679, 0.035963513, -0.0581295, 0.035199746, -0.0104088895), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.01260853, 0.0062392578, -0.003071281, 0.01035934, 0.0057190065, -0.0017513676, -0.0026357982, -0.017834812, 0.00678827, 0.008202837, -0.009278475, -0.020972013, 0.010203599, 0.001279875, 0.011321498, -0.041021187), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.016318664, 0.010274144, 0.0058704168, -0.0003722195, 0.08622261, -0.056748323, 0.012796814, -0.015498583, -0.014841128, -0.013023518, -0.017376468, -0.011344732, -0.0011321327, -0.004839438, -0.065831445, 0.0170905), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.029771782, -0.029376734, 0.12636128, -0.041424155, -0.037272833, -0.028138392, 0.05147389, -0.071253724, -0.058589596, -0.0038131222, 0.07219576, -0.018886834, -0.03175935, 0.022464748, 0.04460918, 0.007712493), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.031791184, 0.03750064, -0.04815924, -0.0037787687, 0.027883058, 0.0017699281, 0.00868531, -0.00061983714, 0.014328159, 0.011008469, -0.1027948, 0.061321545, -0.0232413, -0.0036074712, 0.013003957, 0.005047646), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.061875354, 0.013966958, -0.057976823, -0.027396917, -0.07729206, 0.037510768, 0.05148819, 0.013505393, -0.009836167, 0.017979803, 0.014434765, 0.011236566, 0.038901612, 0.14647634, 0.023550952, -0.05943926), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.2863236, -0.16270663, 0.13858683, 0.38562158, -0.18246396, 0.30728486, -0.30314833, 0.23621106, -0.09020211, 0.39363787, -0.14761628, 0.27088004, 0.023005886, -0.10956146, -0.33344752, -0.20269877), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.032677263, 0.04735152, 0.013321085, -0.07145408, -0.0017462671, -0.02075628, -0.005706266, 0.07966981, 0.003467664, -0.07971056, 0.053607278, 0.04101255, -0.035280924, -0.01813141, -0.044000223, 0.025542235), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.008210569, 0.019704876, -0.015133452, -0.03008762, 0.0049174884, 0.08061308, 0.0038117717, -0.002029503, 0.042190753, 0.032804105, 0.014783755, -0.002336826, 0.054137956, 0.005509952, 0.008481185, 0.009885271), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.013837548, -0.07767153, 0.022879202, -0.056488827, 0.065868095, -0.18863344, 0.03467011, -0.010413688, 0.021961903, -0.081908144, 0.088906504, 0.03597804, -0.00019099779, 0.031379074, 0.058308717, -0.026305178), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.0014572622, -0.011619552, -0.026434032, -0.0043500545, 0.047792483, -0.024726411, 0.06545127, -0.11275325, 0.013236977, -0.00022499474, -0.029280944, -0.06866851, 0.006890194, -0.011312297, 0.0012165548, -0.04664351), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.047752246, 0.0029728701, -0.05373465, -0.005998469, -0.22396794, -0.029485608, 0.09026242, 0.02158353, 0.109403, -0.05481592, 0.010041409, -0.04743197, 0.055757776, 0.02585569, 0.02746905, -0.0030442658), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.099528484, -0.015010706, 0.100571565, -0.0034939381, 0.012570407, -0.043869816, 0.086886376, 0.05987024, -0.22607432, 0.16655043, 0.061426442, 0.05697152, 0.064990446, -0.005531908, -0.14511855, 0.0076572066), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.012711154, -0.003635479, -0.0075224554, -0.0052927425, 0.0028822776, 0.0072370963, -0.056621686, 0.0026998962, -0.03712505, 0.042426053, -0.22980946, 0.14261132, -0.03626141, -0.039392795, 0.085727766, 0.012577211), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.2062136, -0.19833934, 0.07369608, -0.09740325, -0.034611486, -0.32579082, 0.07641666, 0.15784128, -0.039162353, -0.07734512, -0.033959284, 0.084764875, -0.1607926, -0.11135721, 0.10387057, 0.1112244), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.042789772, 0.07384808, 0.13794817, -0.10090421, 0.22263366, 0.2233975, -0.42347354, -0.17161362, 0.277786, -0.30926275, 0.22161394, -0.37332773, 0.3831451, 0.37317204, 0.079320274, -0.17581266), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.008462805, -0.017743077, 0.006631768, 0.02413771, -0.03139262, -0.016224122, 0.08141759, -0.057388183, -0.031753678, 0.048525933, 0.058724694, -0.0065176883, -0.022200955, -0.042803597, 0.038398843, 0.10740149), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.02273882, 0.02042988, -0.04352726, -0.04365105, 0.031618606, 0.12397989, -0.0446275, -0.047745094, -0.07272708, 0.087981805, -0.022883464, 0.021518158, -0.033805974, -0.061570108, 0.029978301, 0.047310177), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.024014544, 0.03312975, 0.013067503, 0.11282178, -0.024482794, 0.008091268, 0.06432778, -0.15766713, -0.048687667, 0.0051038596, -0.10650007, 0.074438654, -0.031920508, 0.07880885, -0.063074075, 0.053531222), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.007602651, 0.003247358, -0.010531292, -0.014522784, -0.045127477, -0.04641428, 0.034592852, 0.11708857, 0.016080456, -0.010862374, 0.012204836, -0.019624028, -0.005596978, 0.002570303, -0.01718452, 0.007036096), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.03400744, 0.0074553913, 0.0043038665, 7.957602e-05, 0.014352309, -0.003674803, -0.014835324, -0.0055977562, 0.033462152, 0.0068732416, 0.0065420493, -0.0026703794, 0.011938421, 0.001983706, -0.0049862997, 0.00021165576), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.0033091118, 0.018994803, -0.026634768, 0.020428555, -0.020792423, 0.009742637, 0.032050136, 0.0071278135, -0.052302815, 0.013190179, -0.004127084, 0.009925822, -0.009661492, -0.0073792427, 0.019004244, 0.00037218904), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.009932352, -0.00995933, -0.02146786, -0.0038179306, -0.016922737, -0.000982855, -0.03880165, 0.0100428425, 0.018592497, -0.011936452, -0.00839573, 0.012914954, -0.0023291495, 0.0014392055, -0.013602821, -0.00075313775), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.005934442, -0.067556374, 0.022733796, -0.00048716593, -0.03944287, -0.0031405275, -0.021329157, -0.023225859, -0.048807576, 0.013591428, -0.0012470218, 0.012172492, -0.01362018, 0.01908229, -0.009989492, -0.013456593), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.0331533, -0.038016763, -0.024796762, -0.097570956, 0.040756926, -0.038999844, 0.004969716, 0.02203622, -0.07773537, -0.095957406, -0.13685504, -0.08225932, 0.21070166, 0.06672545, 0.12035284, 0.0874353), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.011405352, 0.008514039, 0.04049351, 0.003270972, -0.01190376, -0.00082049094, 0.011982737, -0.03732464, -0.008393462, 0.019479843, -0.0030869786, -0.028394854, 0.008670484, 0.0026366632, 0.07985739, 0.020958235), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.009845008, 0.039659, -0.0024999548, 0.025727686, -0.008037673, -0.020821366, -0.016814344, -0.023053886, -0.0108242845, -0.03981645, -0.0041943905, -0.0074299327, -0.040454514, -0.05054933, -0.0098485295, -0.015317222), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.0010468375, 0.035403077, 0.008057769, 0.041717537, 0.01396972, 0.04731576, 0.025122687, 0.038469587, 0.0198318, -0.012237324, -0.030784154, -0.08214199, -0.0328875, 0.080247246, -0.06950492, -0.015201896), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.011373379, 0.00011919624, 0.0068450207, 0.0220856, 0.0008673803, -0.011897817, -0.0020893042, 0.0056429924, 0.021536274, 0.017342292, 0.06635433, 0.056875907, -0.03351322, -0.008332283, -0.015365816, 0.037228417), target2);\n\t\n\tMF4 target3 = MF4(-0.00052569207, -0.0009582512, -0.00071018364, -0.0011515211);\n\ttarget3 = MulAdd(a1, MF4x4(-0.009554673, -0.0051532127, 0.016102737, 0.0012649148, 0.0077584987, -0.0057105157, 0.014400071, -0.003925339, 0.017135408, 0.013764417, -0.009086141, -0.0025339578, -0.03264511, -0.016280945, 0.00085838477, 0.0019880894), target3);\n\ttarget3 = MulAdd(b1, MF4x4(-0.076804005, -0.0037365195, -0.050517682, 0.0020104242, 0.043787587, -0.0023654283, 0.008199321, -0.016990408, 0.042490408, -0.010710564, 0.040960148, -0.0044487948, -0.019470902, 0.010283459, -0.05382899, 0.0012054538), target3);\n\ttarget3 = MulAdd(c1, MF4x4(0.005319574, 0.008546302, -0.037447132, -0.006825204, 0.012196145, 0.0007432002, 0.03959715, -0.00010419698, 0.010211025, -0.00066449976, 0.023840206, -0.0033524157, -0.003079352, 0.010155542, 0.008363695, 0.00091413554), target3);\n\ttarget3 = MulAdd(d1, MF4x4(0.020189503, -0.01584555, 0.048491407, 0.03190471, 0.09146135, 0.066083826, 0.026668968, 0.0508916, 0.025873413, 9.346497e-05, -0.0008600848, -0.0056697717, -0.02856373, -0.023208767, -0.0029442043, 0.015996031), target3);\n\ttarget3 = MulAdd(e1, MF4x4(-0.1150775, -0.14330095, -0.09502353, -0.13884564, 0.03178533, 0.07732762, 0.08540057, 0.07563651, 0.024709824, 0.122676425, 0.025598785, 0.062055748, -0.19433355, -0.13121647, -0.1121546, -0.12868516), target3);\n\ttarget3 = MulAdd(f1, MF4x4(0.029061472, 0.0073350146, -0.009606754, -0.043715715, -0.018559197, -0.0032290102, -0.01473082, 0.030312086, 0.0055792383, 0.0023610878, 0.03392709, 0.0651179, -0.004296543, -0.016898727, -0.1092547, -0.05084782), target3);\n\ttarget3 = MulAdd(g1, MF4x4(-0.016137538, -0.012792734, 0.017391363, 0.026128957, -0.010817838, 0.032218445, -0.0013944196, -0.004525187, 0.009840227, 0.027271513, -0.0024920607, -0.007501888, 0.009476934, 0.00032995836, 0.0041257427, -0.005625152), target3);\n\ttarget3 = MulAdd(h1, MF4x4(0.0126353195, -0.03399586, -0.016907396, -0.04899062, -0.007695538, -0.00612431, -0.017332746, 0.021991903, -0.00045945324, -0.02436651, 0.022777557, 0.032261726, 0.050632916, -0.04296159, 0.049930036, 0.0025758578), target3);\n\ttarget3 = MulAdd(i1, MF4x4(-0.017934766, 0.0015081838, -0.007909493, -0.00010294505, 0.014974485, 0.0058351695, 0.0057603214, -0.0069939885, 0.00735945, 0.011284126, -0.008253157, -0.013189189, 0.011712553, 0.004176325, 0.019821197, -0.031529877), target3);\n\ttarget3 = MulAdd(a2, MF4x4(-0.01832641, 0.011409, 0.0062228036, 0.0012198171, 0.087020114, -0.048004452, 0.019594414, -0.008977235, -0.021853259, -0.025875412, -0.015291018, -0.017832348, -0.0019894738, -0.003139117, -0.05734562, 0.019568626), target3);\n\ttarget3 = MulAdd(b2, MF4x4(0.019767432, -0.032121878, 0.10731837, -0.04160946, -0.038930662, -0.023509357, 0.04353874, -0.06393884, -0.07079979, -0.011297704, 0.055680044, -0.031674873, -0.02432217, 0.022975061, 0.044791207, 0.008831304), target3);\n\ttarget3 = MulAdd(c2, MF4x4(0.026333796, 0.027133184, -0.05641698, -0.015003387, 0.036531202, 0.001104644, 0.017913498, 0.00035784056, 0.010045828, 0.009374881, -0.112320945, 0.055523388, -0.017043058, -0.0012098805, 0.01718199, 0.0069912164), target3);\n\ttarget3 = MulAdd(d2, MF4x4(0.05305516, 0.0041708737, -0.05804445, -0.028278397, -0.07342492, 0.038176447, 0.045486677, 0.014904428, -0.0017618206, 0.02097501, 0.019868117, 0.019373845, 0.052739795, 0.14912929, 0.037314087, -0.041035987), target3);\n\ttarget3 = MulAdd(e2, MF4x4(-0.2646953, -0.15668106, 0.12151133, 0.34568876, -0.16625103, 0.28626326, -0.2804781, 0.22248842, -0.09251715, 0.35097396, -0.13397448, 0.244039, 0.02513416, -0.09538499, -0.29833388, -0.17769372), target3);\n\ttarget3 = MulAdd(f2, MF4x4(0.04070677, 0.052483205, 0.024028141, -0.06267387, 0.010479897, -0.006137579, 0.005726815, 0.084615536, 0.0029081039, -0.08204673, 0.040788963, 0.018049795, -0.031891953, -0.019043325, -0.041718785, 0.021308724), target3);\n\ttarget3 = MulAdd(g2, MF4x4(-0.001575907, 0.022952983, -0.012997063, -0.02844319, 0.0009266049, 0.06976445, -0.0020330409, -0.008372886, 0.028383447, 0.028487694, 0.0039281887, -0.0070809238, 0.041292112, 0.0025322342, -0.002103223, 0.0054210713), target3);\n\ttarget3 = MulAdd(h2, MF4x4(0.024716897, -0.05894056, 0.033999596, -0.044356048, 0.063092224, -0.18046258, 0.033589583, -0.014151911, 0.015899418, -0.07901728, 0.073378325, 0.03326658, 0.0032687644, 0.035330176, 0.05457883, -0.017820554), target3);\n\ttarget3 = MulAdd(i2, MF4x4(0.001996882, -0.004963775, -0.020151457, 0.0057843816, 0.040995013, -0.019961083, 0.05682041, -0.10547617, 0.02503235, 0.0036294905, -0.013947642, -0.060715917, 0.01876786, 0.0032777768, 0.01927007, -0.025088508), target3);\n\ttarget3 = MulAdd(na1, MF4x4(-0.029518202, 0.0065702717, -0.04704605, -0.0048227045, -0.22110744, -0.029372428, 0.08053116, 0.018663822, 0.105733156, -0.04344413, 0.012286602, -0.038484503, 0.060564645, 0.02851022, 0.032352086, -0.001444222), target3);\n\ttarget3 = MulAdd(nb1, MF4x4(0.11888213, -0.007396298, 0.12236374, 0.0014036719, 0.006478195, -0.039041974, 0.07476124, 0.05907462, -0.2318871, 0.15429306, 0.048975263, 0.058071293, 0.07446568, -0.0038836622, -0.12506978, 0.006849885), target3);\n\ttarget3 = MulAdd(nc1, MF4x4(-0.007815376, -0.0046987617, 0.0045718704, -0.00088239316, -0.006927552, -0.0014817615, -0.060644537, -0.001377785, -0.052053373, 0.030922025, -0.24218674, 0.121679045, -0.025974795, -0.033550926, 0.09225413, 0.015534639), target3);\n\ttarget3 = MulAdd(nd1, MF4x4(0.21073256, -0.14790624, 0.06557328, -0.07896083, -0.048564, -0.32713607, 0.070434004, 0.1443138, -0.046067085, -0.08069691, -0.030934528, 0.0787659, -0.1532774, -0.10070167, 0.088510044, 0.10279543), target3);\n\ttarget3 = MulAdd(ne1, MF4x4(0.08564646, 0.11520261, 0.17513204, -0.039576255, 0.17702763, 0.18044637, -0.434279, -0.1977341, 0.22995597, -0.3259109, 0.17992231, -0.37692067, 0.376483, 0.3755724, 0.09422753, -0.13918276), target3);\n\ttarget3 = MulAdd(nf1, MF4x4(-0.0013641209, -0.0061978037, 0.030735753, 0.04674489, -0.01888518, -0.0114997085, 0.072051995, -0.059909277, -0.029514287, 0.037226655, 0.03950886, -0.030156244, -0.017026234, -0.029231733, 0.049310546, 0.12158501), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(-0.01796674, 0.021739075, -0.035811454, -0.04138176, 0.032448296, 0.11651916, -0.03788447, -0.03756297, -0.06638623, 0.07866896, -0.020593246, 0.021115394, -0.03838543, -0.065531924, 0.024438148, 0.038348224), target3);\n\ttarget3 = MulAdd(nh1, MF4x4(-0.032326736, 0.041176587, -0.0014080614, 0.110470615, -0.030802252, -0.012258527, 0.059453994, -0.16016562, -0.03715787, -0.0005157213, -0.08924785, 0.06535089, -0.043620374, 0.06014967, -0.07529656, 0.03737166), target3);\n\ttarget3 = MulAdd(ni1, MF4x4(-0.005197623, 0.0025410433, -0.0057371682, -0.005702406, -0.047433604, -0.045016363, 0.022881668, 0.097284265, 0.0050103525, -0.017835459, 0.002082661, -0.031085419, -0.0127113415, -0.010034892, -0.029547364, -0.008159356), target3);\n\ttarget3 = MulAdd(na2, MF4x4(-0.030834803, 0.0057913456, 0.0045642396, -0.0023247486, 0.013091116, -0.0019978182, -0.016291631, -0.0063495245, 0.03679821, 0.0111187175, 0.006293907, -0.00159841, 0.008976987, 0.0016699543, -0.002045872, 0.0021225133), target3);\n\ttarget3 = MulAdd(nb2, MF4x4(-0.0015449662, 0.018941572, -0.0231217, 0.019913983, -0.02159856, 0.011715352, 0.03145841, 0.011557888, -0.04381463, 0.016269097, 0.003801907, 0.017497942, -0.01846834, -0.011969666, 0.0077923136, -0.00425442), target3);\n\ttarget3 = MulAdd(nc2, MF4x4(-0.006369402, -0.0054975, -0.016373185, 0.0015303852, -0.018976817, -0.0020408076, -0.04186448, 0.00862744, 0.013957444, -0.016489068, -0.00876064, 0.0072258003, -0.0065470496, -0.002731135, -0.01953136, -0.0069286725), target3);\n\ttarget3 = MulAdd(nd2, MF4x4(0.01150196, -0.057684112, 0.025627816, 0.0045186444, -0.043896675, -0.0073078806, -0.024036214, -0.025075085, -0.041793358, 0.014898103, -0.0012467141, 0.009073226, -0.025522837, 0.0077871215, -0.016588857, -0.016728807), target3);\n\ttarget3 = MulAdd(ne2, MF4x4(0.03427146, -0.03154995, -0.014622754, -0.083448716, 0.037077904, -0.042196143, 0.0002654827, 0.016835919, -0.05883882, -0.07723022, -0.12151369, -0.06892644, 0.18169776, 0.04656827, 0.09332061, 0.06265968), target3);\n\ttarget3 = MulAdd(nf2, MF4x4(-0.020037629, 0.0017381558, 0.028106472, -0.0037192027, -0.015639286, -0.0048114993, 0.006957652, -0.04234011, -0.0035926187, 0.02475383, 0.009671758, -0.013367782, 0.009844827, 0.004127156, 0.072107606, 0.018165117), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(0.0024197982, 0.034167156, -0.00615297, 0.022378683, -0.005956443, -0.0206202, -0.014193571, -0.0220195, -0.004417834, -0.030854845, 0.0032532495, -0.0012370368, -0.031531993, -0.049196836, -0.0011905541, -0.011573349), target3);\n\ttarget3 = MulAdd(nh2, MF4x4(-0.012435409, 0.023669207, -0.007541224, 0.030453008, 0.009036608, 0.04195238, 0.019962423, 0.033735633, 0.017467575, -0.008318013, -0.0268461, -0.07455821, -0.035670403, 0.06528855, -0.064557284, -0.022101114), target3);\n\ttarget3 = MulAdd(ni2, MF4x4(0.011575822, -0.0029453707, 0.0029919853, 0.014933897, -0.00034664775, -0.015719024, -0.002594161, 0.0012937526, 0.006969654, 0.008678383, 0.04876611, 0.049061276, -0.037455864, -0.013019295, -0.02504076, 0.024031559), target3);\n\t\n\tfloat2 outputPt = GetOutputPt();\n\n\tpos -= 0.5f * outputPt;\n\tOUTPUT[gxy] = MF4(MF3(target1.x, target2.x, target3.x) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t++gxy.x;\n\tpos.x += outputPt.x;\n\tOUTPUT[gxy] = MF4(MF3(target1.y, target2.y, target3.y) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t++gxy.y;\n\tpos.y += outputPt.y;\n\tOUTPUT[gxy] = MF4(MF3(target1.w, target2.w, target3.w) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t--gxy.x;\n\tpos.x -= outputPt.x;\n\tOUTPUT[gxy] = MF4(MF3(target1.z, target2.z, target3.z) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Upscale_S.hlsl",
    "content": "// Anime4K_Upscale_CNN_x2_S\n// 移植自 https://github.com/bloc97/Anime4K/blob/master/glsl/Upscale/Anime4K_Upscale_CNN_x2_S.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Upscale_0\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nMF4 A4KS1(MF3 src[4][4], int i, int j) {\n\tMF4 result = { -0.01050964, -0.00939481, 0.17684458, 0.027366742 };\n\tresult = MulAdd(src[i - 1][j - 1], MF3x4(-0.0057322932, 0.12928207, -0.056848746, 0.18680117, -0.0306273, 0.25602463, 0.053723164, 0.20419341, 0.0018709862, 0.022848232, -0.04105527, 0.101690340), result);\n\tresult = MulAdd(src[i - 1][j], MF3x4(0.009471417, -0.12957802, 0.096014425, 0.21836184, 0.00021601951, -0.22997683, 0.23666254, 0.41192335, 0.021762101, 0.0047863554, 0.008233427, 0.108514786), result);\n\tresult = MulAdd(src[i - 1][j + 1], MF3x4(-0.01156376, -0.18988979, 0.04614705, -0.044767227, 0.01050636, -0.26426336, 0.23741047, 0.0027636609, -0.027718676, -0.14202335, -0.016650287, -0.06637125), result);\n\tresult = MulAdd(src[i][j - 1], MF3x4(0.057809234, -0.11033858, 0.056533534, -0.06292466, 0.13880666, -0.18710336, 0.2441031, -0.25326246, 0.0032683122, -0.026437074, 0.0023248852, 7.640766e-05), result);\n\tresult = MulAdd(src[i][j], MF3x4(-0.49110603, 0.4429004, -0.44015464, -0.41174838, -0.87738293, 0.7808468, -1.0929365, -0.59699076, -0.18409836, 0.185138, -0.11773224, -0.17097276), result);\n\tresult = MulAdd(src[i][j + 1], MF3x4(0.10580959, -0.055947904, -0.03431237, -0.080236495, 0.14862584, -0.15393938, -0.18872876, -0.3170681, 0.03559387, -0.003990826, 0.021298569, 0.012844483), result);\n\tresult = MulAdd(src[i + 1][j - 1], MF3x4(-0.040715586, -0.25781113, 0.08896714, -0.1225879, -0.15790503, -0.54010904, 0.29588607, 0.10401059, 0.003413123, -0.108357325, 0.0112870345, -0.11888622), result);\n\tresult = MulAdd(src[i + 1][j], MF3x4(0.0049315444, 0.02376202, -0.08224771, 0.121118225, -0.041512914, -0.027994309, -0.585988, -0.069672115, -0.017247835, 0.0056576864, 0.04319012, 0.055003505), result);\n\tresult = MulAdd(src[i + 1][j + 1], MF3x4(0.37521392, 0.15916082, 0.059708964, 0.19046007, 0.8120325, 0.38343868, 0.3436578, 0.5287958, 0.16570656, 0.06957687, 0.014022592, 0.074799836), result);\n\treturn result;\n}\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (uint i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\t\n\ttex1[gxy] = A4KS1(src, 1, 1);\n\t++gxy.x;\n\ttex1[gxy] = A4KS1(src, 2, 1);\n\t++gxy.y;\n\ttex1[gxy] = A4KS1(src, 2, 2);\n\t--gxy.x;\n\ttex1[gxy] = A4KS1(src, 1, 2);\n}\n\n\n//!PASS 2\n//!DESC Conv-4x3x3x8\n//!IN tex1\n//!OUT tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nMF4 A4KS2(MF4 src[4][4], int i, int j) {\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\n\tMF4 result = { 0.012077211, 0.013045883, 0.0380778, -0.02908858 };\n\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.011029496, 0.05866063, -0.09460646, -0.017664742, -0.022488879, 0.18384217, -0.00397663, -0.064733066, 0.08466802, 0.10667488, 8.0212536e-05, 0.0908869, 0.13580276, 0.00097438256, 0.12176522, -0.08218466), result);\n\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(0.16062798, -0.10190268, 0.03280682, 0.05621916, -0.009684231, -0.08464307, 0.17058301, -0.096469186, 0.1967505, -0.1450099, 0.093607284, -0.28240147, -0.21377413, 0.10079291, -0.1741522, 0.17330575), result);\n\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.060160473, 0.06316997, 0.0046929033, -0.049405966, 0.13851729, 0.06830702, -0.0586872, -0.040827133, 0.007052838, -0.03576886, -0.111261636, 0.039155316, -0.07380389, -0.09369825, 0.04471156, 0.09678487), result);\n\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(-0.36683616, -0.035950605, -0.24414362, -0.009159744, 0.19335322, -0.099253505, 0.075083904, -0.00076695543, 0.65291303, -0.25599423, 0.19827642, 0.065899536, -0.07423247, -0.068967685, 0.0050554527, -0.060272824), result);\n\tresult = MulAdd(max(src[i][j], 0), MF4x4(-0.020688485, -0.83178276, 0.11104878, 0.26454413, 0.13655476, 0.37675047, -0.22219229, -0.01751935, 0.44552696, 0.92510307, 0.16063261, -0.62011045, 0.19366647, -0.06996067, -0.2504841, 0.00803723), result);\n\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.0051537007, -0.057168536, -0.16110587, 0.25232598, -0.04447099, 0.11997351, 0.14808103, -0.34443566, -0.26212573, -0.21970181, 0.2724405, 0.21050811, -0.07949061, -0.064808235, -0.21208277, -0.0042361654), result);\n\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(-0.0888952, -0.20169449, 0.19144905, -0.016882861, -0.013283103, 0.07552998, -0.24686803, 0.012453213, -0.065454446, -0.016123284, -0.47316182, 0.070926026, 0.09219782, 0.13118166, 0.074736096, 0.0077910526), result);\n\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(0.5832154, 0.1138069, -0.039765622, 0.3182784, -0.25497997, 0.0013993139, 0.39285088, -0.48511526, -0.39891505, -0.19094779, -0.082146175, -0.20826934, 0.020590555, -0.0012490178, -0.4398621, 0.14377014), result);\n\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(0.21917395, 3.4314657e-05, 0.25734863, -0.3433305, 0.015720673, 0.2676127, -0.06807297, 0.15040149, -0.23638041, -0.0050233034, -0.13666134, 0.4542111, -0.033572577, -0.08450588, -0.23341487, 0.053490847), result);\n\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(-0.17482175, 0.057647135, 0.33135444, 0.0850751, -0.1718849, -0.0854123, 0.036795795, -0.13874969, -0.10903869, -0.19007301, -0.06064334, -0.03786032, -0.036696054, 0.07844446, 0.012523185, -0.01562906), result);\n\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(-0.04411997, -0.10331819, 0.10050193, 0.12406485, 0.07431592, 0.30109692, -0.17511666, -0.13263564, -0.10192587, 0.07821255, -0.22415096, 0.25552443, 0.17881326, -0.13914281, 0.109979235, -0.0016463579), result);\n\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(-0.01911644, -0.15412527, 0.028903123, 0.20831817, 0.00375175, 0.08110953, 0.074919395, -0.17581624, -0.015677985, 0.06504228, 0.08817818, -0.12518327, -0.09537373, 0.028905088, -0.051288474, 0.054334078), result);\n\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(0.2852779, -0.28924024, 0.36805123, 0.21079305, -0.28336474, 0.1679663, -0.08641141, -0.10699407, -0.16090055, 0.1287612, -0.15910125, 0.05734755, 0.15883245, 0.0053026294, 0.080674745, 0.0505137), result);\n\tresult = MulAdd(max(-src[i][j], 0), MF4x4(0.17639062, 0.3790122, -0.19588692, -0.020314282, 0.26197383, 0.09014768, 0.19696823, -0.41025418, -0.08308115, -0.33279485, -0.22528782, 0.06172439, -0.1365661, -0.13094363, -0.005086559, 0.089024484), result);\n\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(0.05262993, 0.0006296959, 0.1657725, -0.32591924, 0.12126701, 0.061543245, -0.10526848, 0.041583937, 0.094976954, 0.09416157, -0.22019257, -0.058390073, -0.2073888, 0.057273377, 0.19558284, 0.004208022), result);\n\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.30005738, 0.18478931, -0.23342943, 0.22455733, -0.016488122, 0.099634305, 0.31620836, -0.15731157, 0.09595808, 0.0013774688, 0.48273298, -0.07027936, -0.18764344, -0.26194447, -0.11794225, -0.012173601), result);\n\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(0.117986746, -0.13846518, -0.019614812, -0.3011192, 0.5501164, 0.3408611, -0.40090847, 0.15706886, 0.13050972, 0.051776595, 0.20792943, 0.23389706, -0.22965533, -0.053367328, 0.3911586, -0.032988597), result);\n\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(0.054753624, -0.008485731, -0.2451672, 0.17528129, 0.13657846, 0.010480436, 0.07651423, -0.43316832, 0.12736236, 0.13804524, 0.12529011, -0.30946237, -0.14423579, 0.08403089, 0.24335162, 0.057288036), result);\n\treturn result;\n}\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (uint i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex1.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex1.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex1.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex1.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\ttex2[gxy] = A4KS2(src, 1, 1);\n\t++gxy.x;\n\ttex2[gxy] = A4KS2(src, 2, 1);\n\t++gxy.y;\n\ttex2[gxy] = A4KS2(src, 2, 2);\n\t--gxy.x;\n\ttex2[gxy] = A4KS2(src, 1, 2);\n}\n\n//!PASS 3\n//!DESC Conv-4x3x3x8\n//!IN tex2\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nMF4 A4KS3(MF4 src[4][4], int i, int j) {\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\n\tMF4 result = { 0.018736731, -0.0026039074, 0.050130025, -0.055364225 };\n\tresult = MulAdd(max(src[i - 1][j - 1], 0), MF4x4(-0.036115196, -0.06971895, -0.07508942, 0.016036168, 0.12120111, 0.24536026, 0.044755507, -0.20663576, 0.029635755, -0.15427187, 0.027148994, -0.20795093, 0.10170582, 0.077919215, 0.66063017, -0.4632968), result);\n\tresult = MulAdd(max(src[i - 1][j], 0), MF4x4(-0.0052889925, -0.019060908, -0.08660142, -0.022095207, -0.08097976, -0.015142803, -0.18552722, -0.078493506, -0.16293915, -0.20099808, -0.08370822, 0.3701389, 0.09094984, 0.2487225, 0.24338846, 0.044003833), result);\n\tresult = MulAdd(max(src[i - 1][j + 1], 0), MF4x4(-0.061406493, -0.017232792, -0.10917424, 0.11203319, 0.040699825, -0.019294346, 0.084953666, -0.018133596, 0.07209552, 0.016069936, 0.17805555, -0.089537814, 0.15809004, 0.1027023, 0.15044671, -0.15530108), result);\n\tresult = MulAdd(max(src[i][j - 1], 0), MF4x4(0.0948676, -0.040305693, -0.005591629, -0.048048403, -0.07547777, 0.056606572, 0.021390207, 0.32600567, -0.20805131, -0.099587254, 0.029613169, 0.0092129605, -0.29429698, -0.09898621, 0.44470885, -0.89487344), result);\n\tresult = MulAdd(max(src[i][j], 0), MF4x4(-0.122259885, 0.11445877, 0.06666907, 0.1869428, -0.1553992, -0.1658741, 0.2988138, -0.57746625, -0.34609964, 0.11169158, -0.41877756, 0.38075635, 0.21293911, 0.09640372, -0.12754214, -0.08026104), result);\n\tresult = MulAdd(max(src[i][j + 1], 0), MF4x4(0.15128808, 0.050087795, 0.09219755, -0.18080945, 0.0044571217, -0.046019405, -0.1289922, 0.20305426, 0.19601224, 0.04667917, 0.17465587, 0.027672665, 0.18441725, 0.06845396, 0.11288585, -0.23283863), result);\n\tresult = MulAdd(max(src[i + 1][j - 1], 0), MF4x4(-0.072962, -0.06639447, 0.049347494, -0.1386401, 0.10396071, 0.08187777, -0.04280746, 0.07390891, 0.06628344, 0.037797406, 0.021885803, -0.013147403, 0.22376558, 0.36243078, 0.12874891, -0.0023783944), result);\n\tresult = MulAdd(max(src[i + 1][j], 0), MF4x4(0.074945286, 0.16045591, -0.11798349, 0.12910712, 0.054760084, -0.095626175, -0.047832094, 0.03493912, 0.11817307, 0.037452437, -0.14301221, -0.027356789, -0.052390423, 0.11373512, 0.07686775, 0.010008694), result);\n\tresult = MulAdd(max(src[i + 1][j + 1], 0), MF4x4(-0.023999173, -0.091900624, 0.02388157, 0.03173873, 0.0065633506, -0.033716757, -0.1198324, 0.12057766, 0.026465805, -0.07517131, -0.07760598, 0.060463097, 0.07345541, 0.046037503, 0.21101558, -0.26785463), result);\n\tresult = MulAdd(max(-src[i - 1][j - 1], 0), MF4x4(0.15544604, -0.03902825, 0.04630384, -0.25173616, -0.0691359, 0.07476507, 0.009071253, 0.089964196, -0.26539803, -0.3958477, -0.22155671, 0.20735882, -0.105860494, -0.003996804, -0.044815883, 0.39544627), result);\n\tresult = MulAdd(max(-src[i - 1][j], 0), MF4x4(0.6169709, 0.23717614, -0.37884676, -0.7484867, 0.020169826, -0.30718836, 1.0965588, -0.20711036, -0.39149985, -0.06843563, -0.06522909, 0.103805855, 0.03265825, -0.15137726, 0.12837899, -0.01294922), result);\n\tresult = MulAdd(max(-src[i - 1][j + 1], 0), MF4x4(-0.23638196, -0.4560866, -0.11948684, -0.1464144, 0.10690008, 0.007835961, 0.11864342, -0.13101323, -0.16509797, 0.075027354, 0.08122998, 0.13451207, 0.0011890623, 0.052157886, 0.08372405, -0.07085038), result);\n\tresult = MulAdd(max(-src[i][j - 1], 0), MF4x4(-0.21997726, -0.16488647, -0.0291317, 0.17997476, 0.1493211, 0.027494298, 0.0034613227, -0.3207727, 0.18699001, 0.14728633, -0.042895135, -0.07612043, 0.125076, -0.14714554, -0.03480009, -0.22753975), result);\n\tresult = MulAdd(max(-src[i][j], 0), MF4x4(-0.5342686, -0.7426105, -0.38294584, 0.42549992, 0.46053204, 0.7867879, 0.106234804, -0.041163098, 0.5198579, -0.5219404, 0.14809476, -0.41802374, 0.06810794, -0.15122683, -0.047409, 0.13178343), result);\n\tresult = MulAdd(max(-src[i][j + 1], 0), MF4x4(-0.50428164, 0.18220626, 0.35510704, -0.081787474, 0.03155813, 0.019284263, 0.0032388573, -0.20513348, -0.05385551, 0.17803182, -0.26206362, 0.2870375, 0.008557827, 0.08401449, -0.027598893, -0.010791235), result);\n\tresult = MulAdd(max(-src[i + 1][j - 1], 0), MF4x4(0.16657415, 0.067647465, 0.093076974, -0.14438486, -0.10017002, 0.0022367141, 0.03250936, -0.052794546, -0.009178676, -0.019673595, -0.0016697067, -0.15424626, -0.112123474, -0.11079971, 0.011987111, -0.11747758), result);\n\tresult = MulAdd(max(-src[i + 1][j], 0), MF4x4(-0.023021797, -0.058703423, -0.037978355, -0.062433913, -0.13130441, 0.048656322, 0.056839373, 0.109036915, -0.07823158, 0.14785293, 0.058555078, -0.11679035, -0.14002073, 0.07395252, 0.098268874, -0.06710464), result);\n\tresult = MulAdd(max(-src[i + 1][j + 1], 0), MF4x4(0.14906375, 0.030001195, -0.10338215, 0.0662968, -0.161953, -0.13682815, 0.09563142, 0.009514228, -0.009491218, 0.06737101, -0.1393389, 0.15231515, -0.073147796, 0.00767062, 0.028675212, 0.014213088), result);\n\treturn result;\n}\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\tfloat2 inputPt = GetInputPt();\n\n\tMF4 src[4][4];\n\t[unroll]\n\tfor (uint i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = tex2.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = tex2.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = tex2.GatherBlue(sam, tpos);\n\t\t\tconst MF4 sa = tex2.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc[i][j + 1] = MF4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc[i + 1][j] = MF4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc[i + 1][j + 1] = MF4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\ttex1[gxy] = A4KS3(src, 1, 1);\n\t++gxy.x;\n\ttex1[gxy] = A4KS3(src, 2, 1);\n\t++gxy.y;\n\ttex1[gxy] = A4KS3(src, 2, 2);\n\t--gxy.x;\n\ttex1[gxy] = A4KS3(src, 1, 2);\n}\n\n\n//!PASS 4\n//!DESC Conv-4x3x3x8, Depth-to-Space\n//!IN INPUT, tex1\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nMF4 A4KS4(float2 pos) {\n\tfloat2 inputPt = GetInputPt();\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 b = tex1.SampleLevel(sam, pos + MF2(-inputPt.x, 0), 0);\n\tMF4 c = tex1.SampleLevel(sam, pos + MF2(-inputPt.x, inputPt.y), 0);\n\tMF4 d = tex1.SampleLevel(sam, pos + MF2(0, -inputPt.y), 0);\n\tMF4 e = tex1.SampleLevel(sam, pos, 0);\n\tMF4 f = tex1.SampleLevel(sam, pos + MF2(0, inputPt.y), 0);\n\tMF4 g = tex1.SampleLevel(sam, pos + MF2(inputPt.x, -inputPt.y), 0);\n\tMF4 h = tex1.SampleLevel(sam, pos + MF2(inputPt.x, 0), 0);\n\tMF4 i = tex1.SampleLevel(sam, pos + MF2(inputPt.x, inputPt.y), 0);\n\n\tMF4 result = { -0.00346731, -0.0046263863, -0.004627155, -0.0057769152 };\n\tresult = MulAdd(max(a, 0), MF4x4(0.019100675, -0.014241565, 0.004667036, -0.03865062, 0.106731094, 0.026099661, 0.014594411, -0.011881356, 0.0040967264, -0.004626336, 0.006469508, 0.010875305, -0.033909045, -0.085905954, 0.07861378, 0.019452631), result);\n\tresult = MulAdd(max(b, 0), MF4x4(0.20777655, -0.060354974, 0.0023840065, -0.064121604, -0.17397617, 0.019293457, -0.09707183, 0.080641985, 0.01025124, -0.017382381, 0.008661793, -0.010995665, 0.21943407, -0.115574986, 0.14471593, -0.068836235), result);\n\tresult = MulAdd(max(c, 0), MF4x4(0.057942886, -0.06311754, 0.2253396, -0.04159292, -0.020731755, 0.007877151, 0.041525815, 0.025278691, 0.03041967, -0.025137542, 0.024364179, -0.024543528, 0.029438615, -0.015506873, 0.081686, -0.07812221), result);\n\tresult = MulAdd(max(d, 0), MF4x4(0.054237515, 0.0676094, -0.0047708177, 0.0043467237, -0.10032304, -0.020498628, 0.04240586, 0.07272254, 0.0784221, 0.017945962, -0.022310399, -0.013134622, 0.015638694, -0.10001543, 0.1043031, 0.05898838), result);\n\tresult = MulAdd(max(e, 0), MF4x4(-0.021652509, 0.35796642, 0.059497777, 0.23948468, 0.15454951, -0.10017235, -0.19072174, -0.44812536, -0.03974552, 0.04529369, 0.22207436, 0.026222564, -0.09705454, 0.5623026, -0.3354105, -0.017278556), result);\n\tresult = MulAdd(max(f, 0), MF4x4(-0.053682446, -0.03411237, -0.09399936, 0.15128824, -0.07463, -0.042020727, 0.0031783928, 0.13481957, -0.07731454, 0.044114403, -0.23085599, 0.060444202, -0.15015422, 0.0018040676, -0.18684982, 0.2812511), result);\n\tresult = MulAdd(max(g, 0), MF4x4(0.0029329916, 0.001596018, 0.0007512241, 0.016544111, -0.04876942, -0.05272409, 0.037884697, 0.049948208, 0.015518177, 0.11368592, -0.03815777, -0.013149978, -0.027638039, 0.107719295, -0.04115787, 0.02745414), result);\n\tresult = MulAdd(max(h, 0), MF4x4(0.016691081, 0.010204119, 0.04078854, 0.01613337, 0.03325829, 0.0114824055, -0.017286912, -0.07284126, -0.110984206, -0.21041764, 0.0089543555, 0.18986733, 0.01537506, -0.2059135, 0.029074017, 0.013117443), result);\n\tresult = MulAdd(max(i, 0), MF4x4(0.013965926, 0.029871881, 0.0034499036, -0.011343668, 0.022120327, -0.0068748263, 0.009324342, -0.039081004, 0.08032371, 0.050809264, 0.035050742, -0.2032847, 0.06305391, -0.021958945, 0.038569167, -0.22465245), result);\n\tresult = MulAdd(max(-a, 0), MF4x4(0.046307724, -0.012419472, 0.007673863, -0.042344846, 0.011042414, 0.016994251, -0.018166406, -0.016955731, -0.13240299, 0.01768431, -0.027607648, 0.0699927, -0.02840628, 0.004414203, 0.0049618417, 0.011084679), result);\n\tresult = MulAdd(max(-b, 0), MF4x4(-0.119954154, -0.007455482, -0.031108133, -0.009946449, 0.0077065965, 0.01660345, 0.032943666, 0.016376585, 0.10273124, 0.1556573, -0.24643841, 0.107307844, -0.068235755, 0.0561896, -0.0104672015, 0.042693343), result);\n\tresult = MulAdd(max(-c, 0), MF4x4(-0.01634601, 0.04195375, -0.10401894, 0.047641944, -0.034602515, -0.0034419263, -0.010457858, 0.015194475, -0.03962551, -0.030031368, 0.16036317, 0.019283568, -0.05877721, 0.016504882, -0.15523468, 0.018161612), result);\n\tresult = MulAdd(max(-d, 0), MF4x4(-0.08083991, 0.0024665035, -0.049373373, 0.030371357, 0.0113322195, -0.014676956, 0.011646689, -0.01142667, 0.124930486, 0.06625774, -0.045840867, -0.009693036, -0.012649251, -0.07388084, 0.008790075, 0.0013844534), result);\n\tresult = MulAdd(max(-e, 0), MF4x4(-0.33941835, -0.2763476, -0.118311435, -0.063535266, 0.20936015, 0.13731301, 0.13443594, 0.07464433, 0.059650812, -0.36973104, 0.16444235, -0.37082872, 0.06432777, -0.18283032, -0.044489607, -0.13895285), result);\n\tresult = MulAdd(max(-f, 0), MF4x4(0.13533665, 0.08268915, -0.03675727, -0.14348659, 0.0186255, -0.05051692, 0.056702953, 0.0061717895, 0.047663026, -0.088188455, 0.23254345, -0.014015464, 0.08400204, -0.0073777726, 0.2202068, -0.12366078), result);\n\tresult = MulAdd(max(-g, 0), MF4x4(0.04361004, 0.046543695, 0.0064863074, -0.03358146, -0.022602187, 0.018138997, -0.011071864, 0.010244091, -0.019814799, -0.17250171, 0.040823266, -0.040131986, 0.010125854, 0.020660749, 0.0020435036, -0.010819304), result);\n\tresult = MulAdd(max(-h, 0), MF4x4(-0.004810193, -0.11286074, 0.051985834, 0.04788631, -0.023950428, 0.036145125, -0.038203828, 0.052401308, 0.022986965, 0.26420745, -0.06076917, -0.09252999, 0.03164547, 0.15652153, -0.037934, -0.0035418556), result);\n\tresult = MulAdd(max(-i, 0), MF4x4(0.03358366, -0.005219482, 0.007060882, -0.06569114, -0.02941682, 0.00966056, -0.0153679885, 0.019905418, -0.107232265, -0.03405676, -0.044340115, 0.26892832, -0.04723829, -0.02589829, 0.004563232, 0.19318114), result);\n\treturn result;\n}\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 outputPt = GetOutputPt();\n\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\tMF4 c = A4KS4(pos);\n\n\tpos -= 0.5f * outputPt;\n\tOUTPUT[gxy] = MF4(c.x + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t++gxy.x;\n\tpos.x += outputPt.x;\n\tOUTPUT[gxy] = MF4(c.y + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\t\n\t++gxy.y;\n\tpos.y += outputPt.y;\n\tOUTPUT[gxy] = MF4(c.w + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t--gxy.x;\n\tpos.x -= outputPt.x;\n\tOUTPUT[gxy] = MF4(c.z + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Upscale_UL.hlsl",
    "content": "// Anime4K_Upscale_CNN_x2_UL\n// 移植自 https://github.com/bloc97/Anime4K/blob/78e4f78f65b772e94bae6e7db5c49af1e889f784/glsl/Upscale/Anime4K_Upscale_CNN_x2_UL.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Upscale_3\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_tf2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_1_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_1_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_1_tf2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_2_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_2_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_2_tf2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_3_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_3_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_3_tf2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_4_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_4_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_4_tf2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_5_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_5_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_5_tf2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_6_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_6_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_6_tf2;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT conv2d_tf, conv2d_tf1, conv2d_tf2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\t\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = { 0.0357343, 0.024812812, 0.040654864, -0.002103711 };\n\t\t\ttarget1 = MulAdd(src[i - 1][j - 1], MF3x4(-0.27576035, -0.07072761, -0.1630093, -0.11306897, 0.14765891, -0.039999995, 0.04671886, -0.06138944, 0.11445724, 0.10989976, 0.12772457, 0.19654717), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j], MF3x4(-0.076798744, -0.026944768, -0.24994318, 0.2515569, -0.16839856, 0.17563075, 0.30983326, -0.26057217, -0.07267306, -0.16690817, -0.028771983, -0.32779765), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j + 1], MF3x4(-0.22670166, -0.08031973, 0.1576897, -0.09411961, 0.10889907, 0.09876773, -0.12708376, 0.20890583, 0.13792023, 0.046159253, 0.008415701, 0.028718324), target1);\n\t\t\ttarget1 = MulAdd(src[i][j - 1], MF3x4(0.123937644, -0.0040695923, 0.1577942, -0.25086892, -0.11906424, 0.024612824, 0.04019426, -0.20309904, -0.001790695, -0.022292957, -0.24705121, -0.020513516), target1);\n\t\t\ttarget1 = MulAdd(src[i][j], MF3x4(-0.12275696, 0.087533146, 0.22975677, 0.3249744, -0.46705425, 0.049937986, -0.3746097, 0.6908184, -0.02694045, 0.10467642, 0.24765752, 0.29053956), target1);\n\t\t\ttarget1 = MulAdd(src[i][j + 1], MF3x4(-0.085650265, 0.06399875, 0.16803174, -0.000924935, -0.012419805, 0.3505107, -0.013437306, -0.37681264, -0.06174721, 0.3525594, -0.7133205, 0.16013019), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j - 1], MF3x4(0.2400495, 0.08462758, 0.025238732, -0.019882765, -0.09665332, -0.030001955, -0.10374011, -0.2661804, -0.1017717, -0.04910443, 0.102630705, -0.01290848), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j], MF3x4(0.13510828, -0.09396734, -0.30896646, 0.13402982, 0.7047196, -0.09083812, 0.29420912, -0.30652946, 0.089854665, -0.04834406, 0.017005004, -0.22518355), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j + 1], MF3x4(0.28510967, 0.04660653, 0.24457681, -0.21047631, -0.12409636, -0.5526988, -0.1340479, 0.2336875, -0.048938934, -0.31569406, -0.021553513, -0.084858574), target1);\n\n\t\t\tMF4 target2 = { -0.041260406, 0.20480168, -0.016556341, 0.021896001 };\n\t\t\ttarget2 = MulAdd(src[i - 1][j - 1], MF3x4(0.058698863, -0.07291426, 0.04927266, 0.09258057, -0.048297565, 0.05610951, 0.07047442, -0.07120319, -0.03516866, 0.0076037147, 0.07701455, -0.059423756), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j], MF3x4(-0.0055849426, 0.26572028, -0.21616961, -0.042883366, 0.04323887, 0.04128688, -0.1975783, 0.15745145, 0.017314252, -0.26768935, 0.080519766, 0.021246549), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j + 1], MF3x4(-0.045365453, 0.16887768, -0.21514243, -0.49443442, 0.016238604, -0.12318089, 0.21210986, 0.29339197, 0.008509125, -0.0120522, 0.14660002, 0.16444208), target2);\n\t\t\ttarget2 = MulAdd(src[i][j - 1], MF3x4(-0.18049234, 0.27750164, 0.48953623, 0.32381085, 0.13180427, -0.19170003, -0.042992454, -0.24161138, 0.02187773, -0.052547548, -0.23762631, -0.17446616), target2);\n\t\t\ttarget2 = MulAdd(src[i][j], MF3x4(0.10295366, -0.06758289, 0.3209139, -0.089126036, 0.045649666, 0.061549887, -0.22704688, 0.08373262, 0.062346827, -0.012463345, -0.2679532, -0.033193), target2);\n\t\t\ttarget2 = MulAdd(src[i][j + 1], MF3x4(0.028882261, -0.41653237, -0.55437064, -0.23836315, -0.10729088, 0.056782994, 0.2587744, 0.3095401, -0.057483524, 0.2876223, 0.21580297, 0.07463114), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j - 1], MF3x4(0.014345448, 0.05962805, -0.2022189, -0.08993287, 0.070023656, 0.08089038, 0.114226155, 0.0025734142, -0.010230871, -0.0990795, 0.17906278, 0.048965868), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j], MF3x4(0.26569575, -0.20329566, 0.40301713, 0.5406432, 0.4320893, 0.09291447, -0.24186778, -0.40646008, 0.08337033, 0.114029825, -0.17575161, -0.21976136), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j + 1], MF3x4(-0.23839538, -0.5789523, -0.0655242, -0.0007585647, -0.58420926, -0.0028022572, 0.040551513, -0.14223239, -0.08617295, 0.22481681, -0.015953997, 0.18862534), target2);\n\n\t\t\tMF4 target3 = { -0.32573584, 0.02118458, 0.06321103, 0.01701115 };\n\t\t\ttarget3 = MulAdd(src[i - 1][j - 1], MF3x4(0.07228457, 0.007666297, 0.0023270524, -0.13672906, -0.06545506, -0.049757745, 0.16956232, 0.048654493, 0.05838961, 0.02529347, -0.21557869, -0.12801598), target3);\n\t\t\ttarget3 = MulAdd(src[i - 1][j], MF3x4(0.14399123, 0.33404213, 0.30544546, -0.024566652, -0.07515048, -0.18194102, -0.3067775, -0.3386222, -0.06924871, 0.08277239, 0.30782035, 0.1812733), target3);\n\t\t\ttarget3 = MulAdd(src[i - 1][j + 1], MF3x4(-0.0034141026, 0.03465326, 0.13170029, 0.19363083, 0.07877697, 0.12887354, 0.31288412, 0.039260264, -0.14135145, -0.21657607, -0.08192631, -0.016260598), target3);\n\t\t\ttarget3 = MulAdd(src[i][j - 1], MF3x4(0.2796338, 0.3380564, -0.2591034, 0.053368755, 0.017104708, -0.18027966, -0.083344355, 0.29481766, -0.088741906, -0.03886714, 0.15531075, 0.34214082), target3);\n\t\t\ttarget3 = MulAdd(src[i][j], MF3x4(-0.35849893, 0.39669302, -0.4743166, -0.30070198, -0.04679741, 0.029014967, -0.11585943, 0.547813, 0.037943944, -0.3137137, -0.16505164, 0.1461349), target3);\n\t\t\ttarget3 = MulAdd(src[i][j + 1], MF3x4(-0.19912307, -0.69915354, 0.12588218, -0.25780293, 0.06785873, -0.06666295, 0.21257555, -0.30608517, 0.22777, 0.47556394, 0.12453673, -0.23966943), target3);\n\t\t\ttarget3 = MulAdd(src[i + 1][j - 1], MF3x4(-0.066451795, 0.036735266, 0.0883064, 0.2535588, 0.111621, 0.026139118, 0.02632312, -0.37550557, -0.026438652, -0.042137396, 0.026273955, -0.24945815), target3);\n\t\t\ttarget3 = MulAdd(src[i + 1][j], MF3x4(0.550942, -0.4508381, 0.0018671635, 0.21252398, -0.10602345, 0.13596801, -0.0023862422, 0.029529708, -0.06045382, 0.22975087, -0.1594863, -0.33607775), target3);\n\t\t\ttarget3 = MulAdd(src[i + 1][j + 1], MF3x4(-0.0114465775, 0.011813566, 0.09969644, 0.055403743, 0.02460606, 0.13673273, -0.22494976, -0.24256726, 0.024602994, -0.1862818, 0.015388349, 0.39983493), target3);\n\n\t\t\tconv2d_tf[destPos] = target1;\n\t\t\tconv2d_tf1[destPos] = target2;\n\t\t\tconv2d_tf2[destPos] = target3;\n\t\t}\n\t}\n}\n\n//!PASS 2\n//!DESC Conv-4x3x3x24\n//!IN conv2d_tf, conv2d_tf1, conv2d_tf2\n//!OUT conv2d_1_tf, conv2d_1_tf1, conv2d_1_tf2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 a3 = conv2d_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = conv2d_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = conv2d_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = conv2d_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = conv2d_tf2.SampleLevel(sam, pos, 0);\n\tMF4 f3 = conv2d_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = conv2d_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = conv2d_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = conv2d_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(-0.09062037, 0.013100331, -0.030562, -0.0064230394);\n\ttarget = MulAdd(a1, MF4x4(-0.009462198, 0.067644134, 0.09776196, -0.06859017, -0.1816813, 0.053423163, -0.02265236, 0.06604943, 0.15899086, -0.15651219, 0.2919677, 0.00591133, 0.09306437, 0.047243804, -0.1389423, -0.0076663005), target);\n\ttarget = MulAdd(b1, MF4x4(0.23136483, 0.20969442, -0.25250545, -0.038510673, 0.06916893, -0.19306515, -0.07070081, 0.016512204, 0.05914443, 0.31841832, -0.15109769, 0.058795422, 0.0418041, -0.13008581, 0.15338552, 0.037921127), target);\n\ttarget = MulAdd(c1, MF4x4(0.023348259, 0.15947549, 0.16773324, 0.04159353, 0.113954544, -0.071491666, 0.12837915, -0.043326825, 0.058823302, 0.09453112, 0.017051624, 0.048308555, -0.10970718, -0.25019458, 0.074912935, -0.04076737), target);\n\ttarget = MulAdd(d1, MF4x4(0.036305163, -0.22121401, 0.120393604, -0.05099148, -0.10198376, -0.04498367, -0.08815256, 0.024565894, -0.04884751, -0.036884382, -0.24040928, -0.112012394, 0.005314592, -0.14346673, 0.04090868, 0.040303618), target);\n\ttarget = MulAdd(e1, MF4x4(0.32364944, 0.2346947, 0.13479401, -0.071001865, -0.092296354, -0.13325988, 0.18273465, 0.16443633, -0.138694, -0.1538144, 0.0001256584, 0.23658273, -0.055330865, 0.18081205, -0.14958258, 0.18050644), target);\n\ttarget = MulAdd(f1, MF4x4(0.30818513, -0.10282234, -0.14460294, 0.11525818, 0.15799633, -0.038440127, 0.07736027, -0.113209635, -0.03558696, 0.0027641046, 0.09750022, -0.035741746, -0.06724116, -0.11298426, -0.23708679, -0.08182236), target);\n\ttarget = MulAdd(g1, MF4x4(0.16450825, 0.014239063, -0.15482663, 0.011389393, 0.121237025, -0.056966547, -0.23891398, -0.07385608, -0.0919129, 0.1384911, 0.10602064, -0.08549364, -0.117471084, 0.045140628, -0.055791426, 0.11584021), target);\n\ttarget = MulAdd(h1, MF4x4(0.053284578, 0.084236816, 0.16935693, -0.16279462, -0.060930096, 0.13849908, 0.16018802, -0.007871505, 0.12076791, -0.06930294, -0.16473438, 0.12876272, -0.039502293, -0.064467184, 0.13885021, -0.09353176), target);\n\ttarget = MulAdd(i1, MF4x4(0.04007251, -0.0423664, -0.20841573, 0.025270352, 0.051647697, -0.086622365, -0.108722195, 0.03807204, 0.059649065, -0.0070362207, 0.04048331, 0.06589983, -0.014079206, -0.10045001, 0.09532272, -0.12775785), target);\n\ttarget = MulAdd(a2, MF4x4(0.15776722, -0.1468444, -0.026526975, -0.038875956, -0.36817524, -0.09478588, -0.27826226, 0.016944334, 0.009886105, -0.061800323, 0.0800291, -0.081642725, 0.051763505, -0.14510322, -0.12901913, 0.06997819), target);\n\ttarget = MulAdd(b2, MF4x4(-0.17539172, -0.29509535, 0.14361212, -0.09461951, 0.02858693, 0.1989715, 0.05904459, -0.09012477, 0.03901393, -0.09044802, 0.08358012, 0.052188553, -0.05505933, -0.048021372, 0.27836508, -0.035614084), target);\n\ttarget = MulAdd(c2, MF4x4(0.034031298, -0.034978155, -0.038415093, -0.09294941, 0.049487505, 0.15056923, -0.010052316, 0.08712324, 0.07430246, 0.17897835, -0.060980003, -0.08634773, -0.07403975, -0.026423855, -0.18169394, 0.007463145), target);\n\ttarget = MulAdd(d2, MF4x4(0.048213437, 0.16104779, 0.038785655, -0.033407986, 0.22063074, -0.053561423, 0.13353224, -0.26674026, 0.04884891, 0.030459542, -0.22288404, 0.06640239, 0.12854575, 0.029917246, 0.24786973, -0.1690474), target);\n\ttarget = MulAdd(e2, MF4x4(0.14981748, 0.17726701, 0.3075169, -0.0061602336, 0.070802234, 0.012225174, -0.11732834, -0.04439886, 0.062125243, 0.09351938, 0.4337808, -0.08277167, 0.25400677, -0.08523749, -0.3210451, -0.17889985), target);\n\ttarget = MulAdd(f2, MF4x4(-0.013666365, 0.09298701, -0.22515774, 0.06844796, -0.056414075, -0.04622639, 0.2661024, 0.16837521, -0.060347248, 0.42006207, 0.31325382, 0.040558435, -0.23408552, -0.3959543, 0.08528746, 0.04711839), target);\n\ttarget = MulAdd(g2, MF4x4(-0.21203883, 0.14807487, 0.10670431, 0.09823839, -0.0029566926, -0.14064936, -0.0062036305, 0.058999464, -0.119635604, -0.017831627, -0.024394974, -0.09484209, -0.05494034, 0.2234736, -0.18613186, 0.10272367), target);\n\ttarget = MulAdd(h2, MF4x4(-0.026449624, -0.07470873, -0.103021905, 0.036553413, -0.16811648, 0.010706488, -0.11658722, 0.16098383, -0.118867725, -0.30606326, -0.38222322, 0.08585665, 0.07455366, -0.083553374, 0.11151869, -0.19190635), target);\n\ttarget = MulAdd(i2, MF4x4(-0.113795616, 0.1331456, 0.114444636, 0.0071249725, 0.12230587, -0.017298486, -0.005261545, 0.01930602, 0.19144222, -0.0868461, -0.13227822, 0.18046889, 0.12061947, 0.107320294, -0.07637172, -0.034593552), target);\n\ttarget = MulAdd(a3, MF4x4(0.049325835, 0.020729464, -0.23382401, 0.15919043, -0.008479369, 0.15347077, 0.41359872, -0.061457418, 0.024845408, -0.15185645, -0.057010442, -0.09998088, 0.10153512, -0.09882405, 0.039735407, -0.077833496), target);\n\ttarget = MulAdd(b3, MF4x4(-0.36701423, 0.12649989, 0.018880492, -0.23008151, -0.052118823, 0.15917695, -0.11396803, 0.21387778, 0.08706439, -0.0038190812, 0.12580395, -0.18743886, 0.005943777, -0.055926796, 0.22107217, -0.15519042), target);\n\ttarget = MulAdd(c3, MF4x4(-0.117441535, 0.11953572, -0.15477178, -0.21330307, 0.033542704, -0.086117126, 0.040748667, 0.113893, -0.039779708, 0.06455176, -0.033797383, 0.045687508, 0.06263807, 0.040957358, -0.0007738094, -0.053097825), target);\n\ttarget = MulAdd(d3, MF4x4(0.14710459, -0.06704273, -0.021150973, -0.15517733, -0.011780557, -0.123433016, -0.5554903, 0.07073845, 0.037211616, -0.14225942, -0.13862026, -0.12025682, 0.09802159, 0.045993954, 0.21416502, -0.12655829), target);\n\ttarget = MulAdd(e3, MF4x4(0.33932889, -0.10832225, -0.10277331, -0.043458294, -0.080375, 0.07122225, 0.5117161, 0.45102793, 0.08851493, -0.19836949, 0.1128087, 0.14412156, 0.15872803, 0.35519516, -0.36955422, 0.22665614), target);\n\ttarget = MulAdd(f3, MF4x4(-0.2083875, 0.005418101, 0.1154246, 0.16369523, 0.0066285534, -0.15079136, -0.0024386873, -0.006123944, 0.1329886, 0.007733818, -0.078484625, 0.0073881904, 0.045415893, 0.13548672, -0.04421294, 0.17557195), target);\n\ttarget = MulAdd(g3, MF4x4(-0.06733927, 0.061143715, 0.11623754, 0.035660855, -0.16833517, 0.25015733, 0.16666088, 0.3536397, -0.17156921, 0.14590204, 0.0319748, -0.022740254, -0.081528045, -0.029098801, 0.106823295, 0.05240602), target);\n\ttarget = MulAdd(h3, MF4x4(-0.030105693, 0.07486713, 0.07255324, 0.26833382, 0.13944457, -0.12094807, -0.119364485, 0.008746426, -0.0543321, -0.23814397, 0.21626633, 0.19788063, -0.060222488, 0.013993159, -0.044926863, 0.10624144), target);\n\ttarget = MulAdd(i3, MF4x4(0.04872421, -0.1731085, 0.120799415, -0.262767, -0.01584661, 0.066874966, -0.23661989, -0.18333362, 0.04360596, 0.16124529, -0.024604535, -0.02463142, -0.051435392, -0.015720569, -0.08187193, 0.048288688), target);\n\ttarget = MulAdd(na1, MF4x4(0.049077168, -0.07886619, -0.061759558, -0.04904181, 0.39755592, -0.030000389, 0.13741177, 0.035482008, -0.0356009, 0.031532627, -0.2654997, 0.022695553, -0.12488769, 0.015674936, 0.10053729, -0.016251108), target);\n\ttarget = MulAdd(nb1, MF4x4(0.034757115, -0.22141235, 0.34255457, -0.01785397, 0.13844466, -0.17758907, 0.06551371, -0.054463834, 0.03203843, -0.13669081, 0.13089286, -0.08061962, 0.015957424, -0.0024440098, -0.10206851, -0.089845166), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.0511128, -0.10826102, -0.28195792, 0.0077595203, -0.1147427, -0.0022921658, -0.07577954, -0.02045415, -0.060518377, -0.11451084, 0.018158037, -0.0758857, -0.04422985, 0.012489414, -0.016101263, 0.061439708), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.03760036, 0.13497229, -0.13668093, 0.07768455, -0.15663894, -0.015719853, 0.21031374, 0.1781295, -0.14109309, -0.03143449, -0.020708034, 0.082145125, 0.029068671, 0.16775839, -0.060003906, 0.071289144), target);\n\ttarget = MulAdd(ne1, MF4x4(0.33949512, 0.11439767, -0.030989401, 0.048677433, 0.21668954, -0.09781232, -0.14430745, -0.34149325, 0.04961082, 0.13556859, -0.02967883, -0.019534707, 0.112177946, -0.0950136, 0.02612632, -0.1142915), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.16193709, 0.12953411, 0.12638013, 0.07118955, -0.09868655, 0.05682677, -0.03974761, 0.14830436, 0.016494498, 0.04290563, -0.107214145, -0.0006455558, 0.15607493, 0.22610466, 0.23997377, 0.21541154), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.13969646, -0.03359856, 0.12332616, 0.024957852, -0.264063, -0.027087519, 0.16026239, 0.18871038, 0.12738967, -0.070992924, 0.058890942, -0.055569854, 0.07901736, -0.10643202, 0.08499172, -0.07838089), target);\n\ttarget = MulAdd(nh1, MF4x4(0.124158695, 0.04502674, -0.080311716, 0.013808018, 0.0370118, -0.16594483, -0.16791067, 0.05448626, -0.03551704, 0.006355477, 0.26084647, 0.12521335, -0.004537222, -0.017335514, -0.12183743, 0.021074474), target);\n\ttarget = MulAdd(ni1, MF4x4(-0.022497809, 0.04964908, 0.14643028, -0.04685759, -0.06790267, 0.11746793, 0.12926494, -0.082243346, -0.053480923, 0.06610809, -0.04575657, -0.14319976, -0.09223617, 0.10878509, -0.05621081, 0.16550247), target);\n\ttarget = MulAdd(na2, MF4x4(-0.28332457, 0.05198234, 0.021976635, -0.1545899, -0.26678282, -0.047813956, -0.023821756, -0.101214804, 0.07505883, 0.05556278, 0.017566912, 0.00901856, -0.022323653, 0.1653073, 0.08053188, -0.18955535), target);\n\ttarget = MulAdd(nb2, MF4x4(0.084919475, 0.03962379, -0.13510302, 0.24873632, -0.06863436, 0.029294679, 0.016317705, -0.043712415, -0.028959788, 0.017755143, -0.05474792, -0.055838227, 0.08769533, -0.09412337, -0.023203408, -0.0640265), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.110101126, -0.032489337, 0.02593033, 0.15959314, -0.044097103, -0.18824866, 0.08125642, -0.0077189617, -0.054190274, -0.14331457, 0.1452974, 0.07808066, 0.0021549438, -0.03174141, 0.017612346, -0.15539496), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.088953294, -0.029799841, 0.11556197, 0.04862062, 0.066503406, -0.114064194, 0.09255826, -0.1833335, -0.01641819, -0.119497, 0.2961799, -0.2780695, -0.12567733, 0.0024600243, -0.11751205, 0.085669436), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.21532503, -0.06343075, -0.27015615, 0.068540476, -0.06858675, -0.062484156, 0.03682217, -0.1015083, 0.107420795, 0.012092155, -0.22166798, 0.028644597, -0.10172646, 0.19677241, 0.37931946, -0.11699309), target);\n\ttarget = MulAdd(nf2, MF4x4(0.07044547, -0.03793531, 0.17182013, 0.008134154, 0.0050753267, 0.058524463, -0.29959077, -0.079782486, 0.06422465, -0.44226143, -0.27561387, -0.14839257, 0.24578299, 0.24039108, -0.07351824, 0.034930374), target);\n\ttarget = MulAdd(ng2, MF4x4(0.1892026, -0.054502696, -0.05670299, -0.03181167, 0.035967033, 0.18241122, 0.00743329, 0.015681073, -0.056629453, 0.11829241, -0.07440575, -0.023615826, -0.009568993, -0.03544514, -0.05925388, -0.40062532), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.012591867, 0.069327325, 0.20525102, -0.0013599707, 0.20637867, 0.053142715, 0.08542395, 0.0015770206, 0.0006431645, 0.21245757, 0.16769366, -0.0030028354, -0.19049928, -0.07689201, -0.031236758, 0.22773638), target);\n\ttarget = MulAdd(ni2, MF4x4(0.08173383, -0.095775105, -0.08555914, -6.735811e-05, -0.038772196, 0.021698473, 0.04046729, 0.07664872, -0.00024131182, 0.20962766, 0.18627205, -0.035633747, -0.13656121, -0.050837196, 0.07260766, -0.019978348), target);\n\ttarget = MulAdd(na3, MF4x4(-0.16073698, 0.14160293, 0.12324934, 0.20341478, -0.0019186502, -0.095708326, -0.2297202, 0.35728905, -0.09427626, 0.062210754, -0.012826292, 0.118804015, -0.08991538, 0.06391433, -0.023036718, -0.017481891), target);\n\ttarget = MulAdd(nb3, MF4x4(0.21371883, -0.16740565, -0.10288582, -0.061600383, 0.020964885, -0.023439301, 0.18262915, -0.31056783, -0.093428515, -0.30865392, -0.040038906, 0.069449544, 0.07479101, -0.07418401, -0.2324029, 0.1234252), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.24855302, -0.12967765, 0.02631683, 0.08294003, -0.016402971, 0.14255002, 0.0048186355, -0.0011596545, 0.06271189, -0.026687965, 0.020020025, -0.05608053, -0.04504705, -0.10878176, 0.0013364048, 0.006674377), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.05265867, 0.039263245, 0.08444624, 0.025635105, 0.080403246, 0.3593395, 0.3254258, 0.043744642, 0.049711503, -0.17298554, 0.076980025, 0.08564068, 0.055967227, -0.025387138, -0.12774122, 0.06460898), target);\n\ttarget = MulAdd(ne3, MF4x4(0.10153962, 0.1773, 0.39640376, -0.19406912, 0.21126994, 0.082484245, -0.49809954, -0.026066823, -0.069782086, 0.24188274, -0.13548844, -0.29941857, 0.06539237, -0.2640235, 0.34804615, -0.12240826), target);\n\ttarget = MulAdd(nf3, MF4x4(0.0077373167, -0.1192639, -0.11340615, -0.22332144, 0.024052242, 0.07247779, 0.01824934, 0.27204347, -0.12280574, -0.15037231, 0.095412664, -0.09667618, -0.045748595, -0.069017254, 0.04676958, -0.11994603), target);\n\ttarget = MulAdd(ng3, MF4x4(0.11430846, -0.07280232, -0.12316846, -0.076348506, 0.14808905, -0.29144016, -0.24595666, 0.18917578, 0.12346525, 0.06044025, -0.2605574, -0.2944082, 0.029403422, 0.10978217, -0.14474128, 0.016708253), target);\n\ttarget = MulAdd(nh3, MF4x4(0.05979043, -0.07152787, -0.19449393, 0.003888642, -0.07616637, 0.18699367, -0.028180948, 0.29517344, 0.09553033, 0.07179247, -0.30424592, -0.13225375, 0.028066052, 0.012709331, 0.006618433, -0.1427098), target);\n\ttarget = MulAdd(ni3, MF4x4(0.041162595, 0.18586132, -0.009566293, 0.029985288, -0.13142577, -0.18026744, 0.20692593, -0.03168997, -0.032814153, -0.18140802, 0.10108317, -0.004236778, 0.035565984, 0.0060556303, -0.0098911915, -0.08988839), target);\n\tconv2d_1_tf[gxy] = target;\n\t\n\ttarget = MF4(0.07955021, -0.009849892, 0.05029401, -0.12505546);\n\ttarget = MulAdd(a1, MF4x4(0.064515434, 0.07896172, 0.056155425, 0.044425253, 0.03319016, -0.054605387, -0.4591473, 0.15511878, 0.034813322, 0.0672562, 0.05701353, 0.040412407, -0.038797975, -0.111860834, 0.053084996, -0.09889108), target);\n\ttarget = MulAdd(b1, MF4x4(-0.19500382, -0.38966596, 0.27081028, -0.20423058, -0.035951976, -0.22931336, -0.094351776, 0.07632106, -0.16903882, -0.09205736, -0.0133898435, -0.025871782, 0.026594864, 0.09540177, -0.19411358, -0.019835787), target);\n\ttarget = MulAdd(c1, MF4x4(0.033789452, 0.070497066, -0.072486654, 0.15952013, 0.005707006, 0.099570274, 0.10225775, 0.14358646, 0.030362945, 0.04101203, 0.041384347, -0.07857492, 0.0101447, -0.13572751, -0.0014982093, -0.21828102), target);\n\ttarget = MulAdd(d1, MF4x4(-0.06541299, -0.065143906, 0.070729114, 0.16001381, 0.03785971, 0.10330557, -0.12786262, 0.23345129, -0.079743266, -0.19548073, 0.06546381, -0.3466734, 0.052256253, 0.17547274, 0.08082544, -0.002740424), target);\n\ttarget = MulAdd(e1, MF4x4(-0.25474778, 0.3409222, -0.16752993, -0.2593963, 0.22428669, 0.12370032, 0.201332, 0.2880896, 0.05886888, 0.28148982, -0.078226954, -0.10041725, -0.046689507, 0.0326885, 0.10199703, 0.13900283), target);\n\ttarget = MulAdd(f1, MF4x4(0.13756008, -0.007290373, -0.3277049, -0.081920624, -0.13261138, 0.10012489, 0.16701259, 0.095596135, 0.11018003, 0.08671664, 0.007405438, -0.069064125, -0.06399627, -0.20199764, -0.14141648, -0.18114863), target);\n\ttarget = MulAdd(g1, MF4x4(-0.06398666, -0.14905818, -0.08662983, -0.14592336, -0.019165145, -0.16002633, 0.02595079, -0.032384723, -0.06226262, 0.11195063, -0.059623078, 0.08347643, -0.07747154, -0.05067411, -0.011761259, 0.04478109), target);\n\ttarget = MulAdd(h1, MF4x4(-0.110994905, 0.16579364, 0.05735814, 0.08335136, 0.0023429485, -0.035295088, -0.00767387, 0.039022036, 0.045022078, -0.14819291, -0.11657396, 0.114125244, -0.112737395, 0.03421371, 0.123605475, -0.094038226), target);\n\ttarget = MulAdd(i1, MF4x4(0.14619811, -0.13335696, -0.09799096, -0.015030551, -0.027455918, -0.052438136, -0.014773566, -0.06363389, 0.12765555, -0.060070448, -0.05204619, 0.20176068, 0.020521173, 0.0805951, 0.064473, -0.0071453564), target);\n\ttarget = MulAdd(a2, MF4x4(-0.5381485, 0.016816406, 0.03575291, 0.15307717, -0.18513149, -0.029921992, 0.2622421, 0.17963228, -0.002844402, -0.058329333, 0.072945744, -0.11042211, 0.006249197, 0.11601606, 0.058575515, 0.064850174), target);\n\ttarget = MulAdd(b2, MF4x4(-0.42793107, 0.36473498, 0.11899247, 0.26988775, 0.11106695, 0.08952316, 0.014755224, -0.08844807, -0.08071252, -0.043227013, -0.043939825, -0.18867648, 0.051046275, 0.21520744, 0.005522403, -0.054136444), target);\n\ttarget = MulAdd(c2, MF4x4(-0.09239439, -0.12671697, -0.02282582, 0.1047466, -0.043446694, 0.024044901, -0.0021552334, -0.15775962, 0.028607333, -0.097138464, -0.043680545, -0.07058451, 0.11537684, 0.113663144, 0.18539715, -0.02583076), target);\n\ttarget = MulAdd(d2, MF4x4(0.06783846, -0.030368762, -0.032593627, -0.115257286, -0.14801481, -0.08790775, 0.15180242, 0.09927532, -0.13861379, 0.02403033, 0.07966528, -0.02592995, 0.18966958, 0.13048325, -0.07206841, 0.07954041), target);\n\ttarget = MulAdd(e2, MF4x4(0.01556961, -0.025707101, -0.035667323, 0.019550703, -0.06561516, 0.029371614, -0.04590116, 0.004590475, 0.3857005, 0.15660062, 0.2047054, -0.22268668, -0.15727302, -0.24878927, -0.13349286, 0.09746729), target);\n\ttarget = MulAdd(f2, MF4x4(-0.06613807, -0.35448387, -0.03103906, -0.14949797, 0.2575997, 0.24856186, -0.12529412, -0.096302986, 0.077257074, -0.24450381, 0.115296856, -0.15376714, 0.02283929, 0.020484464, -0.057252582, 0.07690077), target);\n\ttarget = MulAdd(g2, MF4x4(0.03167533, 0.14044689, 0.03394118, 0.02033927, -0.058176804, 0.09426579, -0.047503363, 0.050972216, 0.08332001, 0.13845564, 0.0054333988, 0.0060199215, -0.041817743, -0.055159353, -0.033139117, -0.06767), target);\n\ttarget = MulAdd(h2, MF4x4(0.13912874, 0.042053323, 0.14049628, -0.05678915, 0.096634954, -0.026468944, -0.05657413, -0.018260032, 0.2512966, 0.12660152, 0.11393381, 0.16540478, -0.1303705, 0.13751519, -0.069556914, 0.0981919), target);\n\ttarget = MulAdd(i2, MF4x4(0.02321638, 0.10667205, 0.027153758, 0.009282765, 0.07528545, -0.17536609, -0.030338852, 0.07694229, 0.058190364, -0.052485015, -0.16589753, 0.0053109983, -0.062089816, 0.016174713, 0.1266296, 0.16837646), target);\n\ttarget = MulAdd(a3, MF4x4(-0.065759346, 0.06169766, -0.00085500855, -0.008405182, -0.0017208391, 0.0891801, -0.002727633, -0.09190625, -0.055329803, -0.078719944, 0.13154171, 0.022970447, -0.032412775, 0.06774816, -0.08766216, 0.005649683), target);\n\ttarget = MulAdd(b3, MF4x4(-0.05727856, 0.41547912, 0.09231337, 0.21398218, -0.04456715, -0.16443647, -0.33590144, 0.054098953, 0.0049725566, -0.1778281, 0.14938372, -0.13269553, 0.103052735, 0.09907562, -0.09025013, 0.071525946), target);\n\ttarget = MulAdd(c3, MF4x4(0.06079739, -0.15564673, 0.017866762, -0.17732425, -0.01921053, 0.20981815, 0.07016076, 0.012785, 0.039263856, 0.071297675, -0.031223306, 0.0012242222, 0.008279209, -0.11378741, 0.14638698, 0.015245047), target);\n\ttarget = MulAdd(d3, MF4x4(0.07295158, 0.14406429, -0.009283162, -0.08257508, 0.24989437, -0.101510875, -0.20831217, -0.14678863, -0.20545089, -0.03671918, -0.024620444, 0.0022859722, 0.16560118, 0.10648521, 0.01309449, -0.16882543), target);\n\ttarget = MulAdd(e3, MF4x4(-0.3688647, -0.06613055, -0.118553065, 0.066723585, -0.05839009, -0.05345417, -0.025808314, -0.051553134, 0.013860212, 0.1380767, -0.15950254, 0.039316524, 0.004648086, -0.49201876, -0.086399294, 0.067151815), target);\n\ttarget = MulAdd(f3, MF4x4(0.00816185, -0.094140545, -0.03045964, 0.005748951, -0.10508545, 0.06579157, -0.03133883, -0.036670756, 0.0965362, -0.059619486, 0.011463898, -0.13590227, -0.007581943, 0.014755039, 0.009631372, 0.05379326), target);\n\ttarget = MulAdd(g3, MF4x4(-0.16141598, 0.09554762, 0.033254117, 0.16967952, 0.035996404, -0.013887896, -0.06629002, 0.0038405391, 0.056517866, 0.024495421, -0.09365325, 0.08944311, 0.08264677, 0.05784231, -0.0544246, 0.034719754), target);\n\ttarget = MulAdd(h3, MF4x4(0.16916971, -0.04140406, -0.17009412, -0.057115063, -0.052563947, 0.12703355, 0.13672756, 0.055926114, 0.2646138, 0.08260617, -0.06438002, 0.34781212, 0.09432193, 0.002425348, 0.108481385, -0.011278688), target);\n\ttarget = MulAdd(i3, MF4x4(0.044969093, -0.048657022, 0.06174559, -0.00028727736, -0.20242731, -0.0149739245, 0.14471562, 0.06956492, -0.008388136, -0.059729554, 0.063841276, 0.04924184, 0.025793945, 0.06710163, -0.033776682, -0.035713058), target);\n\ttarget = MulAdd(na1, MF4x4(0.076875985, -0.101878025, -0.15802802, -0.124973774, -0.009670392, 0.013886556, -0.17401616, 0.13792926, 0.10774549, -0.30876774, -0.11229718, 0.010819886, 0.1175339, 0.08548831, -0.045388985, 0.05727834), target);\n\ttarget = MulAdd(nb1, MF4x4(0.11111217, 0.46312273, -0.4471567, 0.019250406, -0.040287044, 0.24528493, 0.21994363, -0.070748396, 0.20804761, 0.24140677, -0.07676276, 0.07941381, 0.1852395, -0.083701044, 0.04119184, -0.034684047), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.11130858, -0.15563098, -0.16141221, -0.014236188, -0.0009617971, -0.11093832, -0.088078424, -0.1321414, -0.056676403, -0.09986668, -0.013136506, 0.064173006, -0.02908289, 0.028941281, 0.1568584, 0.13180308), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.07680166, 0.147653, -0.029404428, -0.07403926, -0.3100197, 0.055024274, -0.1506152, 0.48132184, 0.11450713, -0.18744734, -0.092221424, -0.035802577, -0.060549777, -0.14425454, -0.08181204, 0.03446898), target);\n\ttarget = MulAdd(ne1, MF4x4(0.102829054, -0.19427535, -0.038133133, -0.0026712175, -0.1435574, -0.15067317, 0.1119409, 0.1685437, -0.10200671, 0.13222018, 0.08152995, 0.0024931647, 0.0691679, 0.048254304, -0.17357215, -0.13524754), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.14587823, -0.15835984, -0.11198749, 0.0052520167, 0.1467123, -0.2707834, -0.072800644, -0.055191144, -0.10704317, -0.086199924, -0.014983923, 0.14019626, 0.017186088, 0.11358031, 0.15477349, 0.15759338), target);\n\ttarget = MulAdd(ng1, MF4x4(0.083639115, 0.14501223, -0.0065951888, 0.13890846, 0.09335459, 0.042398855, -0.09189259, 0.24306288, 0.020636987, 0.04164843, 0.04502632, -0.13329937, 0.058893397, 0.049639706, 0.071825825, -0.049217906), target);\n\ttarget = MulAdd(nh1, MF4x4(0.07009161, -0.03437479, -0.013031761, -0.093077734, 0.08663319, 0.085103504, 0.16337705, -0.027592715, -0.12227255, 0.14818181, 0.040996075, -0.055277664, -0.040362116, -0.030087778, -0.003645583, 0.056727875), target);\n\ttarget = MulAdd(ni1, MF4x4(-0.11545688, 0.060049064, -0.093949065, 0.02338161, 0.026170302, 0.026379922, 0.069043785, 0.05519452, -0.16188988, 0.04973363, 0.06749572, -0.14809126, -0.14064413, -0.041582227, -0.023158424, -0.039642867), target);\n\ttarget = MulAdd(na2, MF4x4(-0.28626567, 0.29348546, 0.07102445, -0.050440844, 0.15740375, -0.17452855, -0.16708957, 0.06744935, 0.06025843, 0.06482132, -0.034723394, -0.017227422, 0.12390885, 0.04888057, 0.006409584, -0.010196381), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.07097389, -0.15076311, 0.13472012, -0.13246837, -0.064360276, 0.16760628, -0.12776206, 0.015533123, 0.13487455, -0.20071363, 0.0923309, 0.08138427, -0.009274919, -0.15565452, 0.17644402, -0.024042914), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.023358675, 0.10211017, -0.036640793, -0.108112216, 0.06913507, -0.09594437, 0.036107562, 0.05066462, 0.08739385, 0.0011691673, 0.09453315, -0.02394334, -0.14005467, -0.016525272, -0.0994038, 0.06565737), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.371338, 0.19144624, 0.095799066, 0.093133144, 0.09130418, 0.03945617, -0.018656345, -0.12886268, 0.20124264, 0.029764706, -0.13751945, -0.026953662, -0.1874983, -0.040866558, 0.05003749, 0.17660773), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.051123757, 0.21025416, 0.0123157445, -0.069181696, -0.091609724, -0.079943225, 0.130711, 0.14694354, -0.12574539, -0.30329394, -0.10366516, -0.22330226, 0.24131827, 0.45112535, 0.07089889, 0.13600409), target);\n\ttarget = MulAdd(nf2, MF4x4(0.15595976, 0.24464798, 0.002488955, 0.050141588, -0.29219496, -0.17198776, 0.123318285, 0.054613084, 0.0036146704, 0.1652407, 0.0265562, 0.093859114, -0.08342194, -0.18661366, 0.07525819, -0.13866663), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.12563816, -0.08927056, 0.025488816, -0.062464394, 0.038224597, -0.057591602, 0.016130082, 0.004603661, -0.105193645, -0.116210036, -0.0005738929, 0.03006333, 0.15265524, 0.157916, 0.009369363, 0.00011561189), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.1587168, -0.06610889, -0.11454969, 0.09324059, -0.073291466, 0.011250312, -0.0021259703, 0.03251535, -0.021842942, 0.031610303, -0.08053953, -0.17813778, -0.01840217, 0.019417001, 0.12612307, 0.0890873), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.0463806, -0.13481244, 0.022312263, -0.0063249297, -0.00767204, 0.1365426, 0.041454747, -0.077865794, 0.037678037, 0.09067563, 0.12991777, -0.03874696, 0.13317509, -0.019026265, -0.14676699, -0.13473623), target);\n\ttarget = MulAdd(na3, MF4x4(0.037564214, -0.0032738533, -0.03767511, 0.03820596, -0.14136639, 0.17992534, 0.058318965, -0.063095406, -0.006603518, 0.0120609235, -0.025056547, 0.032933716, 0.12113113, -0.10462842, 0.063647404, -0.04450857), target);\n\ttarget = MulAdd(nb3, MF4x4(0.24578053, -0.3156469, -0.35252848, -0.1055502, 0.036395214, 0.27580422, 0.036550306, -0.006894677, 0.10412757, 0.08568412, -0.022747902, -0.008680229, -0.05400555, -0.11050038, 0.051955782, -0.114774995), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.15854524, 0.23624359, 0.07096151, 0.15719925, -0.0011587485, -0.30296972, -0.1931699, -0.08979758, 0.0246722, -0.028834311, 0.06220738, -0.01632116, -0.008921576, 0.033888046, -0.09395318, -0.011260361), target);\n\ttarget = MulAdd(nd3, MF4x4(0.018795056, -0.02822718, 0.009791691, 0.06166571, -0.20967379, 0.34762847, 0.077140674, 0.086514324, 0.28947103, -0.14330834, -0.078796394, 0.09474662, -0.092306405, -0.14832185, -0.050533596, 0.049030673), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.045679964, 0.23489015, 0.15668613, 0.1235559, -0.22028416, -0.13657422, -0.033590022, -0.15810567, 0.18728013, -0.18127815, 0.36396962, -0.053243574, -0.06456213, 0.49338925, 0.026941797, -0.009633453), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.16466625, -0.24371772, -0.03436447, -0.07062408, 0.059187494, -0.26871908, -0.12203007, -0.05496175, 0.057084855, 0.1304957, 0.08178971, 0.15224245, 0.023345131, -0.019234858, -0.034386877, 0.03538095), target);\n\ttarget = MulAdd(ng3, MF4x4(0.114277564, -0.008035584, 0.023078745, -0.14307536, -0.038258925, -0.122582935, 0.0015441746, 0.030634085, 0.2552187, -0.11622358, 0.025188513, -0.30211052, -0.048941914, -0.060030323, 0.019205015, -0.056735426), target);\n\ttarget = MulAdd(nh3, MF4x4(0.038009048, -0.025127387, 0.053799044, 0.09742052, -0.039442886, -0.2847006, -0.14175558, -0.06777446, -0.103426784, -0.18430014, 0.047908068, -0.11819306, -0.09634806, -0.020778535, -0.09947065, 0.057285), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.11968771, -0.02741084, -0.006469873, -0.028502962, 0.05344909, -0.0045341062, -0.06826778, -0.10911563, 0.004165804, 0.18168798, 0.06862181, 0.041413423, -0.015367704, -0.08168733, 0.031232912, -0.00019088654), target);\n\tconv2d_1_tf1[gxy] = target;\n\n\ttarget = MF4(-0.02066643, 0.05799956, -0.04733981, 0.08521742);\n\ttarget = MulAdd(a1, MF4x4(0.051907405, 0.16668987, -0.041336834, 0.05314295, 0.10121027, -0.14798506, -0.19019037, 0.043592982, 0.12040883, 0.09233267, 0.11772148, -0.041334935, -0.07539924, 0.09756673, 0.052319244, -0.10528184), target);\n\ttarget = MulAdd(b1, MF4x4(-0.31250992, 0.30685386, -0.055270895, 0.06475109, -0.08800503, -0.26494658, 0.31591013, -0.11202835, -0.15133889, 0.10488629, 0.078151636, -0.043050244, -0.060199156, 0.044168193, -0.001986329, -0.1915024), target);\n\ttarget = MulAdd(c1, MF4x4(0.068178676, -0.10042213, 0.010896375, -0.08526234, 0.091550335, 0.03174787, -0.098797485, 0.0638641, 0.0039022998, -0.078803785, -0.08426419, -0.06165455, -0.17049576, 0.056151845, 0.05997152, -0.117358774), target);\n\ttarget = MulAdd(d1, MF4x4(-0.15624808, 0.1027479, -0.067923464, 0.0570026, 0.107332714, -0.14162563, -0.17560329, 0.063346066, 0.09616241, 0.15213029, 0.024794457, -0.16448957, 0.21509686, 0.084382094, 0.102330364, -0.21816911), target);\n\ttarget = MulAdd(e1, MF4x4(0.11183052, -0.00036459934, 0.09746083, -0.1979322, -0.32267392, -0.084034644, 0.051167414, -0.029009778, -0.03322436, 0.13016255, -0.048553534, -0.20068704, -0.16644834, 0.24280354, -0.14127132, -0.05889483), target);\n\ttarget = MulAdd(f1, MF4x4(0.116823174, -0.2189612, -0.18030761, -0.14347109, 0.09478377, 0.15303472, 0.020818545, 0.15843435, 0.17000113, -0.047443952, 0.023488792, -0.060115594, 0.04487726, 0.04284613, 0.28725752, -0.47257307), target);\n\ttarget = MulAdd(g1, MF4x4(-0.15223634, 0.060410198, 0.0061263107, 0.0069172834, 0.13158661, -0.0036422606, 0.051183105, 0.04613147, -0.00075578305, 0.08267924, -0.010239358, 0.12761061, -0.07420807, 0.073114, 0.0007402298, 0.1350364), target);\n\ttarget = MulAdd(h1, MF4x4(0.13506427, -0.10019588, 0.009954305, -0.177603, -0.2014582, 0.019459682, 0.05640779, 0.047030263, -0.05054245, -0.104332894, 0.0075405543, 0.1964969, -0.017293537, -0.19851471, -0.06654235, -0.20962352), target);\n\ttarget = MulAdd(i1, MF4x4(-0.038729187, -0.01076603, 0.004724392, 0.122694254, 0.04339784, -0.029253284, -0.014725128, -0.0014454263, -0.100780874, -0.14574462, -0.2107873, 0.042566143, 0.052845504, -0.12460765, -0.12877604, -0.165259), target);\n\ttarget = MulAdd(a2, MF4x4(-0.30916938, -0.21853267, 0.074507885, 0.06950878, 0.15405503, 0.19704042, 0.07762092, -0.0027483252, -0.047830105, 0.19999562, 0.06641897, -0.07683977, -0.04574573, -0.026720403, 0.06741639, -0.040291373), target);\n\ttarget = MulAdd(b2, MF4x4(-0.1436382, -0.14481016, 0.3962691, 0.4429137, -0.14254951, 0.1000112, 0.044832285, -0.11440693, -0.05707115, 0.036592014, 0.16755657, -0.106351, 0.06614667, -0.022506362, -0.020292178, -0.057136156), target);\n\ttarget = MulAdd(c2, MF4x4(0.073906116, -0.10937066, 0.086583436, 0.08275346, 0.02353698, -0.0046872413, -0.03486367, -0.08950485, -0.08803857, 0.056406617, 0.031082897, 0.06083862, 0.045077324, -0.061910506, -0.11063123, -0.01527173), target);\n\ttarget = MulAdd(d2, MF4x4(0.2718467, -0.21935192, -0.062664755, -0.1255679, 0.10553025, -0.006460559, -0.027146982, -0.015253822, -0.07748728, 0.073824674, 0.06018315, 0.1002592, 0.08035026, -0.15977937, -0.055322386, -0.040088616), target);\n\ttarget = MulAdd(e2, MF4x4(0.028033856, -0.016236208, -0.12429306, 0.13901961, 0.04981061, -0.05739222, -0.13064933, -0.16948193, -0.008593147, -0.031754505, 0.10665931, -0.13934475, 0.01627173, 0.072957866, -0.087536804, 0.12674862), target);\n\ttarget = MulAdd(f2, MF4x4(-0.1523727, -0.00082214887, 0.14283441, -0.031603288, -0.045878753, -0.19672535, -0.05026138, 0.042562414, 0.14194039, 0.04421849, -0.20919429, 0.18679811, -0.10887334, -0.032573055, 0.22349553, -0.065408655), target);\n\ttarget = MulAdd(g2, MF4x4(0.027553588, -0.122095294, -0.046353463, -0.111806914, -0.08844832, 0.13921359, -0.0010978511, 0.008194451, 0.13961516, 0.046672624, 0.10129705, -0.09637145, -0.08699736, 0.0083460985, -0.044584583, 0.14229134), target);\n\ttarget = MulAdd(h2, MF4x4(0.07393346, 0.1147128, -0.02851608, 0.021714512, 0.025452064, -0.17753085, 0.0027432854, 0.040008847, 0.16259173, -0.08370451, 0.13976301, -0.07063936, -0.24262139, -0.07672828, -0.2021094, 0.29102072), target);\n\ttarget = MulAdd(i2, MF4x4(0.009530462, 0.04909453, 0.018228829, -0.005528198, -0.04922174, -0.024972908, -0.07065127, 0.04544319, -0.025519563, -0.13601463, -0.18582825, 0.035100814, -0.03548451, 0.061287835, 0.20247467, -0.15797156), target);\n\ttarget = MulAdd(a3, MF4x4(0.32211515, -0.080116086, 0.021152286, -0.08237667, -0.23303492, 0.008709412, -0.1473173, 0.07000086, 0.03955907, 0.14984958, -0.0121722715, -0.055429686, -0.016413981, -0.08430293, 0.025234051, -0.062006578), target);\n\ttarget = MulAdd(b3, MF4x4(-0.42957792, 0.006551594, -0.022962485, 0.1400893, 0.28009745, 0.11802908, 0.015169489, 0.0024414742, -0.22848248, -0.020315299, -0.010993182, 0.0418814, -0.13582, -0.17743196, -0.018863266, -0.12331709), target);\n\ttarget = MulAdd(c3, MF4x4(-0.08963217, -0.07752845, -0.019306721, 0.061603975, 0.112303145, 0.09211919, -0.08167867, 0.05052119, 0.020961992, -0.037811935, 0.016923647, -0.026790423, 0.10175015, -0.006385778, -0.063822776, 0.028055048), target);\n\ttarget = MulAdd(d3, MF4x4(-0.10889496, 0.2475616, -0.023258686, -0.14437376, 0.049249854, -0.063944146, -0.0240011, -0.17432576, -0.18791446, 0.11263927, 0.0078009875, -0.080485724, 0.26911402, -0.12907211, -0.01755262, -0.16863008), target);\n\ttarget = MulAdd(e3, MF4x4(0.35460088, -0.17767274, -0.16858551, -0.23729539, 0.18419053, 0.20926027, -0.088426255, 0.023356354, 0.26511818, -0.0020759383, 0.2859238, -0.07675482, 0.12014907, 0.14443012, -0.12332029, -0.11205155), target);\n\ttarget = MulAdd(f3, MF4x4(0.19667232, 0.07352294, -0.014793962, 0.063952744, -0.01725952, 0.071818754, 0.064658605, -0.0009676536, -0.029578352, -0.18851563, -0.037685324, -0.26275456, -0.123520866, 0.12790628, -0.1469099, 0.12465433), target);\n\ttarget = MulAdd(g3, MF4x4(0.05387382, -0.030488258, 0.04638846, 0.20085673, -0.11875065, -0.029343707, -0.022595167, 0.06786304, 0.23092568, 0.018377172, -0.010349685, 0.14835137, -0.0047257696, -0.027649017, 0.0489728, -0.031893965), target);\n\ttarget = MulAdd(h3, MF4x4(-0.25763837, -0.075889885, 0.17264624, 0.035472356, -0.124957025, 0.00060394197, 0.022995198, 0.05463222, 0.0093447, 0.060911383, 0.07876506, 0.10564838, -0.05013418, 0.06583616, -0.025807798, -0.2883304), target);\n\ttarget = MulAdd(i3, MF4x4(0.043661144, -0.1159315, -0.1831051, 0.07473963, 0.07783108, 0.1876957, 0.01314648, -0.10861117, -0.088689655, 0.07296666, -0.026898766, 0.12702313, 0.032419875, 0.051234853, -0.06522966, 0.014740134), target);\n\ttarget = MulAdd(na1, MF4x4(-0.023981575, 0.0260433, 0.008456327, -0.041390125, 0.23708202, 0.027028535, 0.011300614, 0.25251132, -0.041091874, -0.113069616, -0.1017581, 0.12629594, 0.19936833, -0.044576302, -0.03986123, -0.045146126), target);\n\ttarget = MulAdd(nb1, MF4x4(0.04021637, -0.23936734, 0.089715995, -0.09695566, 0.05547677, 0.18304437, -0.07833711, 0.112606, 0.0744301, -0.121345356, -0.027121276, -0.039470885, -0.17090486, -0.08291478, -0.06501107, 0.06060779), target);\n\ttarget = MulAdd(nc1, MF4x4(0.06427166, 0.17954405, -0.24260868, 0.18583788, -0.03080801, 0.011544634, 0.021221055, -0.019622765, -0.022112694, 0.0568264, 0.117274575, 0.041028306, 0.093058385, -0.023635406, -0.04134845, 0.00012594834), target);\n\ttarget = MulAdd(nd1, MF4x4(0.01102109, -0.07289346, 0.0040596994, -0.07953831, -0.1976572, -0.11829853, 0.11517921, -0.051805526, 0.0055726753, 0.06592285, -0.16681968, -0.08300715, -0.28577968, -0.08173121, -0.13457035, 0.1885804), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.043770324, 0.048198868, -0.18608971, 0.17838612, -0.046778083, 0.19665273, -0.16118616, -0.057293214, -0.10633619, -0.09953019, 0.1862994, 0.18493782, 0.25938433, -0.149985, 0.04676386, -0.014036956), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.0003725085, 0.1989401, 0.16909252, 0.22780822, -0.015987061, -0.054565016, -0.05243573, -0.09775517, -0.120326936, 0.032995265, -0.0036331255, 0.13726561, 0.010277991, 0.06425755, -0.19020142, 0.23083436), target);\n\ttarget = MulAdd(ng1, MF4x4(0.010936359, -0.02849875, 0.026482444, 0.047691442, -0.19206773, -0.044349756, -0.054649103, -0.07385235, 0.05956405, -0.053711556, -0.07337501, -0.119425744, 0.076072186, -0.049311332, 0.03184111, -0.17484605), target);\n\ttarget = MulAdd(nh1, MF4x4(-0.04350626, 0.1328187, -0.003457409, 0.19061741, 0.09211707, 0.035870664, -0.09363488, -0.01568525, 0.05562321, 0.14633514, -0.04855048, -0.24370678, 0.0069594583, 0.14880905, 0.06160373, 0.1566208), target);\n\ttarget = MulAdd(ni1, MF4x4(0.08560771, -0.031726982, 0.005994847, -0.115577385, -0.045169592, 0.034692086, 0.0039135055, -0.008828711, 0.08696738, 0.08552442, 0.21965103, 0.0065012877, -0.017958874, 0.15068494, 0.07910082, 0.09843224), target);\n\ttarget = MulAdd(na2, MF4x4(0.2618397, -0.113963105, 0.06466962, -0.09055511, 0.007243974, -0.37684396, -0.18955688, 0.100891486, 0.062019303, -0.06868768, 0.0066693923, 0.09453199, -0.11875178, -0.09406968, -0.009971733, -0.057884283), target);\n\ttarget = MulAdd(nb2, MF4x4(0.016240982, 0.045132026, 0.2496788, 0.0119000245, 0.019433737, -0.11958368, 0.07371615, -0.022081666, 0.23179133, 0.10534677, -0.13151011, 0.139116, -0.17987, -0.11249553, 0.097996086, 0.054070864), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.057584394, 0.11625342, -0.06034331, 0.063899584, 0.0044478853, 0.048200164, 0.055355098, 0.10972887, 0.16012698, -0.006732891, 0.015804278, -0.14185822, -0.19013652, -0.062766224, 0.045399975, 0.14899541), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.077381015, 0.11935363, 0.12262458, 0.018346768, -0.2634294, -0.2107294, -0.048516907, -0.09564381, -0.10719365, -0.115967, -0.13483748, -0.036267295, -0.012578293, 0.069732994, 0.017012898, 0.097437724), target);\n\ttarget = MulAdd(ne2, MF4x4(0.081788, -0.11083114, 0.4005737, -0.055207055, 0.1418393, -0.06587734, 0.088737585, 0.08120421, -0.16296746, 0.17222044, 0.046313863, 0.10915246, 0.05388926, -0.19152795, 0.03076327, -0.14683272), target);\n\ttarget = MulAdd(nf2, MF4x4(0.11940256, -0.033606835, -0.11385313, -0.012965868, 0.0049813213, 0.20263551, 0.029295778, 0.002276154, -0.1504537, 0.0381973, 0.3823588, -0.1798354, 0.17070186, 0.02357347, -0.2709012, 0.105102755), target);\n\ttarget = MulAdd(ng2, MF4x4(0.041491576, 0.07074733, 0.029625034, 0.102119364, 0.023521155, -0.05969154, -0.00814052, 0.032964356, 0.055066362, -0.07298709, -0.121119626, 0.016125243, 0.2734818, -0.028699303, 0.09567124, -0.1437524), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.09484942, -0.15358907, 0.09471094, -0.114015654, -0.051614996, 0.19810407, -0.011734439, -0.057111017, -0.17113343, 0.06991598, -0.16437295, 0.2067726, 0.23162523, -0.036471117, 0.22033283, -0.29183832), target);\n\ttarget = MulAdd(ni2, MF4x4(0.009506645, -0.041623287, -0.03679158, -0.010971644, 0.08336135, 0.11131871, 0.1109166, -0.08703141, 0.056035098, 0.124049544, 0.2795689, -0.019536458, 0.03888329, -0.0442052, -0.23853621, 0.13220637), target);\n\ttarget = MulAdd(na3, MF4x4(-0.14223816, -0.05481326, -0.106896244, 0.07581965, 0.26316708, 0.15500818, 0.14914538, -0.087868035, 0.15062201, -0.12426363, -0.04299309, 0.040522538, 0.04150885, 0.073053494, -0.041965067, 0.04128295), target);\n\ttarget = MulAdd(nb3, MF4x4(0.051048342, -0.21921599, 0.058443762, -0.055652432, -0.24098797, 0.092578836, -0.17062624, 0.09491869, 0.13260794, -0.024925478, 0.056296505, 0.019934958, 0.003565539, 0.09137244, -0.061169084, 0.04022485), target);\n\ttarget = MulAdd(nc3, MF4x4(0.115069486, 0.16206908, 0.004882299, 0.12614444, -0.03246297, -0.039095636, 0.09410652, -0.039889894, -0.08477494, 0.013032491, -0.055409547, -0.0090540685, -0.035735607, 0.057657916, 0.05354303, 0.0075290967), target);\n\ttarget = MulAdd(nd3, MF4x4(0.004056719, -0.15240185, 0.09084391, 0.037376285, -0.044079285, 0.31589335, 0.026515607, 0.14028117, -0.19225578, -0.002587953, 0.0090361675, 0.14138633, -0.38758466, 0.102398396, -0.07574637, 0.11732128), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.030521149, 0.09753763, 0.052158583, 0.048188724, 0.011470252, -0.110833496, 0.32450467, 0.04464802, -0.0646964, 0.045225292, -0.25168836, 0.20104809, -0.15454476, -0.083546594, 0.21034841, -0.0058077993), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.07213084, -0.17950292, -0.051891763, -0.067120604, -0.02192382, -0.11469988, -0.1409072, 0.006448966, -0.00049237284, 0.13916697, 0.0894537, 0.16725081, 0.18191423, -0.06112781, 0.19929808, -0.10002286), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.02475302, -0.010589183, -0.015627548, -0.16213211, 0.123653755, 0.0245485, 0.0997649, -0.09865162, -0.07168899, 0.15398216, -0.07207907, -0.07172799, 0.028756795, 0.07118634, -0.0511127, -0.0056653675), target);\n\ttarget = MulAdd(nh3, MF4x4(0.21074565, 0.086340725, -0.06073654, -0.04343985, -0.02840264, -0.053368784, 0.037268292, -0.008291989, -0.045832828, 0.023931399, 0.1709933, -0.13587636, 0.051735718, -0.06827666, -0.051731657, 0.17399976), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.13356943, 0.086585164, 0.13944262, -0.026031096, -0.16735698, -0.08396402, -0.12688719, 0.12656367, 0.14114396, 0.018382069, 0.05972302, -0.08622411, -0.062958784, -0.056109, 0.045292944, -0.008465162), target);\n\tconv2d_1_tf2[gxy] = target;\n}\n\n//!PASS 3\n//!DESC Conv-4x3x3x24\n//!IN conv2d_1_tf, conv2d_1_tf1, conv2d_1_tf2\n//!OUT conv2d_2_tf, conv2d_2_tf1, conv2d_2_tf2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_1_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_1_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_1_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_1_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 a3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = conv2d_1_tf2.SampleLevel(sam, pos, 0);\n\tMF4 f3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = conv2d_1_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(-0.0010391332, 0.00068204466, -0.030266605, 0.058793433);\n\ttarget = MulAdd(a1, MF4x4(-0.037910778, -0.035500437, -0.021893462, 0.054371376, 0.09471609, -0.013197591, 0.07086438, -0.11686955, 0.022289908, 0.0025881499, 0.08467518, -0.057070434, 0.03195129, 0.06176325, 0.27392688, 0.10100888), target);\n\ttarget = MulAdd(b1, MF4x4(-0.004817188, -0.11114106, -0.03836096, -0.16221185, 0.08728879, -0.05551734, 0.09426232, -0.08904898, -0.075777575, 0.0001265835, 0.25881302, 0.22047207, 0.026294703, -0.07252985, -0.056022674, 0.25379947), target);\n\ttarget = MulAdd(c1, MF4x4(-0.0013540969, 0.013188547, 0.060211327, 0.041778293, 0.0012638031, 0.022573406, 0.015312594, -0.08047488, -0.029625304, -0.10852883, 0.108838476, 0.13623391, -0.0051957406, -0.034240637, -0.032037422, 0.0045633493), target);\n\ttarget = MulAdd(d1, MF4x4(0.041612104, 0.027505638, 0.025826843, 0.04501326, -0.062472913, 0.1431332, -0.012212282, -0.07516733, -0.08864002, -0.07006836, 0.046692412, -0.124091975, 0.06427506, -0.051631026, 0.12263653, 0.27044338), target);\n\ttarget = MulAdd(e1, MF4x4(0.034103375, 0.08673059, 0.0459527, -0.23862843, -0.055772513, -0.41714105, -0.08171965, -0.14642227, 0.04656934, -0.18259554, -0.13177022, -0.28559983, 0.0552958, -0.016403524, -0.5513842, 0.0053697815), target);\n\ttarget = MulAdd(f1, MF4x4(-0.11872737, -0.028105678, 0.049640797, -0.037546065, -0.010099046, 0.008806696, 0.006435101, -0.10383732, -0.0073283147, 0.08962551, -0.07394422, 0.108856045, -0.014820589, 0.023872554, -0.08112636, 0.10347607), target);\n\ttarget = MulAdd(g1, MF4x4(0.0022989328, 0.046885073, 0.011864779, 0.10420016, -0.0077429335, 0.048106942, 0.032495916, -0.062273387, -0.016874082, -0.06954098, -0.10819509, -0.056219935, -0.020670906, 0.0021182857, -0.009832249, 0.18701169), target);\n\ttarget = MulAdd(h1, MF4x4(0.105950266, 0.040404048, 0.19594736, 0.06012987, -0.3698849, 0.10401502, 0.12703699, -0.23428011, 0.083823904, -0.03521832, -0.006525461, 0.009951793, -0.074361816, -0.035402164, -0.3206954, 0.110812664), target);\n\ttarget = MulAdd(i1, MF4x4(-0.12013042, -0.06367559, 0.021684205, 0.0130499415, 0.009942601, 0.047442563, 0.08855212, -0.10024017, 0.056777865, 0.0051039625, 0.048569407, -0.04560259, 0.19188851, -0.039756753, 0.042021576, -0.09870584), target);\n\ttarget = MulAdd(a2, MF4x4(-0.03247849, -0.02753363, 0.071279705, 0.09104136, -0.0641851, -0.01594897, 0.232652, 0.003967937, 0.0111541925, 0.07306814, -0.0010335519, -0.04429391, 0.031370234, -0.026928704, -0.07516576, -0.055082712), target);\n\ttarget = MulAdd(b2, MF4x4(-0.006180861, -0.10843575, -0.10045209, 0.067148104, 0.057421815, -0.068374164, -0.025756257, 0.1257984, 0.013264953, -0.0018182937, 0.05816216, -0.053461242, -0.085824065, -0.090526566, 0.09129818, 0.01570347), target);\n\ttarget = MulAdd(c2, MF4x4(-0.0017998819, 0.022640059, 0.023404252, 0.03338553, 0.044353716, -0.014139882, -0.07758573, 0.021012677, 0.005980595, 0.04550881, 0.029285448, 0.091678455, 0.053803694, 0.05237155, -0.10997527, -0.10318552), target);\n\ttarget = MulAdd(d2, MF4x4(-0.061029036, 0.0993827, 0.06381772, -0.089550115, 0.03308348, -0.03782301, 0.24164158, 0.31569025, 0.113647655, 0.15545848, 0.11519764, 0.0094105825, -0.11816621, 0.0978243, 0.10073588, -0.1117752), target);\n\ttarget = MulAdd(e2, MF4x4(0.3734672, -0.11816779, -0.23627514, -0.14588231, -0.12371406, 0.2616982, -0.29942805, -0.31744456, 0.12686929, -0.10511419, -0.33209988, 0.0784947, -0.09980473, -0.08277972, -0.119013116, -0.1052021), target);\n\ttarget = MulAdd(f2, MF4x4(0.11694942, -0.009177821, 0.16751128, -0.058083236, -0.029300451, 0.0151769, -0.10590713, 0.006317685, -0.07721141, -0.037264653, -0.09573406, 0.082819514, -0.15364629, 0.07974328, 0.05129384, 0.021289254), target);\n\ttarget = MulAdd(g2, MF4x4(0.026528852, -0.018197816, 0.06862055, -0.025078347, 0.06341248, -0.022047924, 0.16852759, 0.20795865, -0.12899017, 0.11940279, 0.049954895, -0.106641375, 0.003286302, 0.04101139, -0.014838044, -0.038886186), target);\n\ttarget = MulAdd(h2, MF4x4(-0.043906186, -0.09395722, 0.15171658, -0.060511537, -0.012321243, -0.23226517, -0.06977063, 0.021510785, -0.5478768, 0.17448187, -0.05923425, -0.028172622, -0.051738627, 0.06815423, 0.029064734, 0.044883635), target);\n\ttarget = MulAdd(i2, MF4x4(0.17660363, -0.09060859, 0.05569762, -0.034592126, -0.068783976, -0.039074708, -0.04003811, -0.08994642, 0.00041321313, -0.032173786, 0.004815178, -0.044516895, 0.1984147, -0.056799933, 0.051942617, 0.0849639), target);\n\ttarget = MulAdd(a3, MF4x4(-0.029470835, 0.0010429046, 0.09949836, -0.057022177, -0.001196081, -0.017638477, 0.054664012, 0.06374254, 0.005238237, -0.17255385, -0.042707976, -0.0863512, 0.00061518815, 0.054800972, -0.05120795, -0.047205627), target);\n\ttarget = MulAdd(b3, MF4x4(0.04392789, 0.046026394, 0.11252635, -0.124906264, -0.08496978, -0.03472233, -0.05066398, 0.08292728, 0.0370577, -0.15259257, 0.0023178253, -0.017130997, 0.052111663, 0.059383318, -0.0734842, -0.052565083), target);\n\ttarget = MulAdd(c3, MF4x4(-0.0148467785, 0.025143752, 0.17002934, -0.019566009, -0.12469424, 0.111287884, 0.030433882, 0.045797966, 0.0013495206, -0.04792389, 0.01556216, 0.047324177, 0.05905737, -0.053480197, 0.033480287, -0.060852114), target);\n\ttarget = MulAdd(d3, MF4x4(-0.09745605, 0.009108342, 0.058276523, -0.09670028, 0.008513788, 0.0774033, 0.038419556, -0.012280158, -0.027220225, -0.19755986, -0.10123508, -0.24532557, 0.002611559, 0.058633193, 0.08722474, 0.019499615), target);\n\ttarget = MulAdd(e3, MF4x4(-0.097140476, 0.36332083, -0.12693818, -0.26086056, 0.18138097, -0.063169576, 0.09627784, -0.29556775, -0.010828089, 0.016550604, 0.19736116, -0.14276053, 0.2359206, -0.308187, 0.17120488, 0.17035627), target);\n\ttarget = MulAdd(f3, MF4x4(0.06563522, -0.00202452, 0.08656298, -0.068018384, 0.01052145, 0.12411763, -0.027613457, 0.046576608, -0.028641906, 0.030090526, 0.014531246, 0.028142689, -0.019974183, -0.015619782, 0.0913814, -0.07086511), target);\n\ttarget = MulAdd(g3, MF4x4(-0.021320846, 0.0272274, -0.079895236, 0.00012995047, -0.0070819, -0.028833998, -0.022662425, -0.07660687, 0.046270683, -0.11193344, 0.09937696, -0.006931022, -0.03781205, 0.011890765, 0.07618696, -0.004474331), target);\n\ttarget = MulAdd(h3, MF4x4(0.2012585, 0.05607582, -0.13407731, -0.0008222547, -0.10648238, 0.13230269, -0.0038185061, -0.058967687, 0.21021713, -0.12308194, 0.18324743, -0.045672223, -0.07443494, 0.061296284, -0.10310777, -0.03480636), target);\n\ttarget = MulAdd(i3, MF4x4(-0.042971224, 0.03137188, -0.029815951, -0.035710253, -0.17403825, 0.040264893, -0.18175416, 0.13371879, 0.004413511, -0.0062794136, -0.020018531, -0.009863606, -0.08686421, -0.0011867149, -0.13477059, 0.09668236), target);\n\ttarget = MulAdd(na1, MF4x4(-0.08406905, 0.017502543, -0.13238557, -0.06540308, -0.030992452, -0.027247543, 0.1152638, -0.027957149, -0.020494465, -0.016736055, 0.011691886, -0.07697167, -0.031962387, 0.03275166, 0.009455422, 0.00013493745), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.003264767, -0.006133971, -0.14870334, -0.22470197, -0.12281174, 0.0477529, -0.039383784, -0.16171986, 0.049935117, 0.040750828, -0.11027704, -0.18039477, -0.042500887, 0.021469388, 0.19601227, 0.061283164), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.14063793, 0.12379436, -0.091903225, -0.19485305, 0.030889416, 0.023173934, 0.06269456, -0.017552888, 0.042706978, 0.008942839, 0.007431359, -0.08055777, -0.024079857, -0.050207764, 0.03883315, 0.054677337), target);\n\ttarget = MulAdd(nd1, MF4x4(0.043164276, -0.06845965, -0.022847408, 0.026803896, 0.077586755, -0.18144956, 0.24237816, -0.062269997, 0.03350464, 0.022612114, -0.20257936, -0.049737748, 0.0026508393, -0.04457029, 0.08698817, -0.0057848943), target);\n\ttarget = MulAdd(ne1, MF4x4(0.19637893, -0.041842524, 0.08093373, 0.061292946, 0.025697658, 0.43139693, 0.12997067, -0.14218695, 0.06652134, 0.16816506, 0.1798584, 0.19504555, -0.18834472, 0.11258412, 0.07003108, -0.0691332), target);\n\ttarget = MulAdd(nf1, MF4x4(0.0864983, -0.0044556237, 0.1519761, -0.13158719, 0.01852619, -0.045526046, 0.09956223, -0.11713047, -0.024078155, -0.060722336, -0.057925105, 0.073217146, 0.06373482, -0.024553156, -0.14688796, -0.13317719), target);\n\ttarget = MulAdd(ng1, MF4x4(0.035958245, -0.04845082, 0.087631844, 0.040034134, -0.026027406, -0.036821436, 0.06533815, -0.080381244, 0.07234854, -0.001883384, -0.07122587, 0.08832016, 0.036729597, 0.021539502, 0.027530821, -0.010070853), target);\n\ttarget = MulAdd(nh1, MF4x4(0.08983327, 0.01506289, 0.028762873, 0.13285533, 0.2895279, -0.06620886, -0.12341643, 0.005919442, -0.06404377, -0.030869035, -0.040210303, -0.13364644, 0.03067747, -0.0035035561, -0.0012897043, -0.120404474), target);\n\ttarget = MulAdd(ni1, MF4x4(0.12848322, -0.016383486, -0.09702801, 0.056479152, 0.066560045, -0.048578385, -0.031433776, -0.024350693, -0.03682033, -0.07085884, -0.03814125, -0.0005977634, -0.119241685, 0.027776804, 0.07646508, -0.079195194), target);\n\ttarget = MulAdd(na2, MF4x4(0.024724264, 0.0015230086, -0.05821472, 0.10433403, 0.078276865, 0.0020044958, -0.07082553, 0.21335958, -0.0192252, -0.046226356, -0.02576458, -0.005851255, 0.0061004073, -0.011763933, 0.052182812, -0.0148038035), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.090289906, 0.07818745, 0.005133399, 0.2921895, -0.028104218, 0.010640733, -0.16721979, 0.11722157, 0.026559753, 0.06893593, -0.05803866, 0.10257745, 0.16412877, 0.08355433, -0.16449857, -0.19565444), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.01625647, 0.014653339, -0.19772816, 0.035248496, -0.06315719, 0.053839743, -0.19860831, 0.060684476, 0.036236748, -0.06486933, -0.00240829, 0.049791906, 0.012847281, -0.12640457, 0.03785943, -0.066897415), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.04193157, -0.043217663, 0.028713515, 0.034761403, -0.08618379, 0.07707441, 0.051029418, 0.042290796, -0.020135805, -0.1441393, -0.17698085, 0.011781508, -0.047712356, -0.09853696, 0.044760805, 0.07639903), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.04970899, -0.06206872, 0.32036147, 0.38422447, 0.02741357, -0.14773113, 0.026606748, 0.42104495, -0.16836561, 0.2612918, 0.32872567, 0.23574458, -0.48027223, 0.19769326, 0.40519443, 0.28430668), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.119522125, 0.045909975, -0.32532844, 0.16027172, 0.05406689, -0.0002717805, -0.10895223, -0.06700742, 0.11265451, -0.009777009, -0.054376923, 0.15653811, 0.07952248, -0.07323665, -0.030681474, -0.14271308), target);\n\ttarget = MulAdd(ng2, MF4x4(0.021888081, -0.015081948, -0.08500391, -0.0566363, -0.02412306, 0.024970217, -0.08783075, -0.144119, 0.15955818, -0.09113594, -0.09460523, -0.013640705, 0.048579562, -0.051078796, 0.12259883, -0.12369713), target);\n\ttarget = MulAdd(nh2, MF4x4(0.061307143, 0.12150064, -0.16097173, 0.054234862, 0.038454264, 0.19086266, -0.20866115, 0.17528693, 0.23780084, -0.085481875, -0.09336333, -0.03828183, 0.08448641, -0.01021121, 0.108555876, 0.10073375), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.07457479, 0.03767845, -0.04527163, 0.10312832, 0.018638285, 0.012303309, 0.068570994, 0.10636223, -0.046746258, -0.019519145, -0.09643553, 0.08668433, -0.08180716, -0.020997278, -0.19613801, 0.01197474), target);\n\ttarget = MulAdd(na3, MF4x4(0.038627718, -0.037348352, -0.0016635836, -0.029068137, -0.0026173298, 0.04695015, 0.011762658, 0.06046751, 0.03098801, 0.111461185, 0.196085, 0.087878406, 0.075701654, -0.09116793, -0.017858198, 0.019194437), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.033022836, 0.00017579814, -0.04213397, -0.003223962, 0.109210424, 0.047623046, 0.036035728, 0.017458893, -0.01845847, 0.024312373, 0.15710357, 0.05525064, -0.011054537, 0.02045055, -0.059532605, -0.007326871), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.027690193, 0.06131419, -0.17661297, -0.13770969, 0.10287112, -0.07097745, 0.004205589, 0.028562127, -0.047289394, -0.04858619, -0.029686142, 0.025106741, 0.0023360238, 0.09964466, -0.061582137, 0.03198441), target);\n\ttarget = MulAdd(nd3, MF4x4(0.10689288, 0.008829629, 0.016441079, 0.036601987, -0.054011513, -0.009619861, -0.087633766, -0.0066380203, -0.12721415, 0.0904403, 0.33278695, -0.07447129, -0.03637649, 0.0784043, -0.20029514, 0.04795142), target);\n\ttarget = MulAdd(ne3, MF4x4(0.073388234, -0.18476517, 0.06697527, 0.15738879, -0.11097766, 0.0031603684, -0.46672878, 0.055933684, -0.13741222, 0.10608221, -0.09634478, 0.12178066, 0.20948799, 0.32808498, -0.30967075, 0.002408044), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.1276311, 0.2165364, -0.20479621, -0.04220272, -0.11207731, -0.07808082, 0.024846211, 0.1822824, 0.055696778, 0.04820076, -0.09683677, 0.10400354, -0.017928122, 0.13301387, 0.18256992, -0.12553082), target);\n\ttarget = MulAdd(ng3, MF4x4(0.043751966, -0.021505235, 0.07481632, 0.07004997, 0.09292071, -0.06297265, 0.010273411, 0.14864413, -0.06774047, -0.046168163, -0.007962312, -0.25100794, -0.037582185, 0.05529135, -0.028888226, -0.08730092), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.27975065, 0.06358462, 0.037314422, 0.008414804, 0.09947835, -0.05693826, 0.035390552, 0.16577837, -0.117649436, -0.035677984, -0.23139963, -0.11336497, -0.26102057, 0.16566856, 0.19760732, -0.1030265), target);\n\ttarget = MulAdd(ni3, MF4x4(0.06606493, -0.004958344, 0.012705852, 0.003391442, 0.15169266, -0.087174624, 0.17418364, 0.114550345, 0.017576916, -0.076570995, 0.014861571, -0.056111492, 0.08879636, 0.05000804, 0.08393709, -0.05148531), target);\n\tconv2d_2_tf[gxy] = target;\n\t\n\ttarget = MF4(-0.031869058, -0.049291052, -0.05604242, 0.01975563);\n\ttarget = MulAdd(a1, MF4x4(0.07575434, -0.040653445, 0.007225497, -0.043918904, 0.119574465, 0.011380923, 0.16722572, -0.013146596, 0.024970967, -0.028010864, 0.007539211, 0.009367542, 0.0053172954, 0.003149008, -0.06781401, 0.022353206), target);\n\ttarget = MulAdd(b1, MF4x4(-0.24854389, -0.013649374, -0.17061508, 0.04292164, -0.005861008, 0.03951371, -0.0047152913, 0.015763909, 0.076025434, 0.0020614571, 0.035092413, -0.15013616, 0.07448282, -0.06402445, 0.2066371, -0.15285529), target);\n\ttarget = MulAdd(c1, MF4x4(0.020919988, -0.023931077, -0.0026673493, 0.08726077, 0.08519901, 0.038367324, 0.012967744, -0.014597907, 0.03273228, 0.03425027, 0.11657879, -0.10561241, -0.10698567, 0.08750399, -0.029988581, 0.055827994), target);\n\ttarget = MulAdd(d1, MF4x4(-0.05367477, -0.078411445, 0.107682705, -0.05179454, -0.101149, -0.016185397, 0.2755446, -0.2408976, 0.015464319, 0.042289484, 0.1908763, -0.15750426, -0.06516995, 0.072354965, 0.06715771, 0.26282984), target);\n\ttarget = MulAdd(e1, MF4x4(0.062333807, 0.06013844, -0.040104974, -0.33716065, 0.06652305, 0.3144661, -0.08150677, 0.17847258, 0.025293501, 0.085246235, 0.1500923, -0.028793348, -0.008922378, -0.023754073, -0.15999489, -0.10776248), target);\n\ttarget = MulAdd(f1, MF4x4(0.013679765, -0.0068315254, -0.0063317283, 0.04092541, -0.024292475, -0.08490433, 0.052840695, -0.056294404, 0.1751175, -0.03373209, 0.031306665, -0.14522974, -0.1688535, 0.09737534, -0.06616412, 0.2202574), target);\n\ttarget = MulAdd(g1, MF4x4(0.019336289, 0.054557003, -0.08372398, 0.013064762, 0.014936632, 0.031539556, 0.046100393, -0.14767817, -0.03333652, 0.020777406, 0.070448704, -0.009688919, -0.090416685, -0.025141802, 0.030440604, -0.11709335), target);\n\ttarget = MulAdd(h1, MF4x4(-0.019530639, -0.017071763, 0.16344751, -0.09003354, 0.049499974, 0.066197686, 0.17537111, -0.10965739, 0.027256027, -0.04720143, 0.03044248, -0.10484599, -0.051237702, 0.038487937, -0.072922744, 0.023582684), target);\n\ttarget = MulAdd(i1, MF4x4(0.06786746, 0.08613347, 0.058307048, -0.02357511, 0.14101249, 0.05510837, 0.082233034, -0.011995293, 0.022474831, 0.010892606, -0.01492494, -0.11511058, 0.055903982, 0.02207162, -0.098973624, 0.040012434), target);\n\ttarget = MulAdd(a2, MF4x4(-0.064766414, -0.051125515, 0.03402284, 0.057396293, -0.117072344, -0.019163232, 0.037863698, -0.052369513, -0.0061165625, 0.061819155, 0.028041245, -0.09490486, 0.1093347, -0.00664147, -0.08768312, 0.0070511065), target);\n\ttarget = MulAdd(b2, MF4x4(-0.29905078, -0.09995567, -0.08120736, -0.03129106, -0.098326, 0.011130474, 0.036129285, 0.17871866, -0.084457494, -0.012659195, -0.02691152, 0.14104512, -0.21426772, -0.07243515, 0.11658849, -0.002852482), target);\n\ttarget = MulAdd(c2, MF4x4(-0.17713405, 0.06941797, -0.062077515, -0.030658305, 0.08999236, -0.06921259, -0.095924884, 0.07375469, 0.11921843, 0.03554809, 0.058501836, 0.061609276, 0.21009676, 0.0685857, 0.04634768, -0.011610212), target);\n\ttarget = MulAdd(d2, MF4x4(0.23054165, -0.039558277, -0.08045203, 0.06898775, -0.029158285, -0.037750367, -0.24264999, 0.05567059, 0.033564106, 0.03715445, 0.21824217, -0.043530416, 0.14731471, -0.07235384, 0.089611664, 0.026031008), target);\n\ttarget = MulAdd(e2, MF4x4(-0.098505996, 0.076161414, -0.09749997, 0.08872072, -0.12537481, 0.004141966, -0.067040585, -0.39046898, 0.055973317, 0.042723298, -0.13534929, -0.04335705, -0.09676344, -0.030532371, -0.07493259, -0.204519), target);\n\ttarget = MulAdd(f2, MF4x4(0.092057995, 0.56036115, 0.035873197, 0.057625197, -0.027210712, 0.06758173, 0.03869267, 0.058112122, -0.17431425, 0.06694562, -0.023299959, -0.036024995, -0.08311603, -0.13028675, 0.030961594, -0.09352405), target);\n\ttarget = MulAdd(g2, MF4x4(-0.04974338, -0.018803855, 0.10142671, -0.011776798, 0.06506589, -0.028476488, -0.019591449, -0.009582206, -0.039581254, 0.08912891, 0.15407297, -0.1111981, 0.018480325, -0.020779947, 0.031039927, -0.028463457), target);\n\ttarget = MulAdd(h2, MF4x4(0.03755804, -0.03275704, 0.05746246, -0.20568763, -0.043458223, 0.101914786, 0.09678074, 0.020130953, 0.14230555, -0.059717167, 0.16945612, -0.037695907, 0.005530407, 0.03836577, -0.13570379, 0.07553547), target);\n\ttarget = MulAdd(i2, MF4x4(0.1345541, -0.060120266, 0.053173084, -0.049932115, -0.064288326, -0.04958125, -0.0018103139, -0.006733389, 0.09001299, -0.04224858, -0.029498586, 0.18575308, -0.04561738, -0.07796082, -0.053623714, 0.10945586), target);\n\ttarget = MulAdd(a3, MF4x4(0.038186714, -0.012922114, -0.019606752, 0.10890265, -0.026697423, -0.031865556, -0.15932839, -0.026640827, -0.04705261, 0.037437834, 0.10179085, -0.0104858745, 0.07226553, 0.086646274, 0.101131245, -0.013259711), target);\n\ttarget = MulAdd(b3, MF4x4(-0.023795605, -0.03550652, -0.107414104, 0.24193193, -0.14496972, -0.0053217285, 0.07148466, 0.12643136, -0.028414654, -0.022065196, 0.22527543, 0.03852106, -0.06697379, 0.022275146, -0.04764777, 0.120496206), target);\n\ttarget = MulAdd(c3, MF4x4(0.23702599, 0.0025132557, -0.09258897, 0.19450943, 0.16891776, -0.13970126, -0.011847789, -0.11160886, -0.027799755, 0.044170912, -0.01895572, -0.031032356, 0.050352756, 0.021191083, 0.020041477, 0.043741606), target);\n\ttarget = MulAdd(d3, MF4x4(-0.009787904, -0.0031327195, 0.13239524, -0.02248145, 0.017299512, -0.081802346, -0.026019929, 0.18054922, -0.14968066, 0.008379352, -0.13506816, -0.39034408, -0.01510947, 0.050189696, 0.037722163, -0.0402762), target);\n\ttarget = MulAdd(e3, MF4x4(-0.009644101, -0.07043924, -0.21935566, -0.12265316, -0.10996126, 0.106311634, -0.23956922, -0.015151155, 0.305456, -0.012311232, 0.3604329, 0.042090364, -0.07823785, 0.0045187594, -0.14659731, -0.13044918), target);\n\ttarget = MulAdd(f3, MF4x4(0.056163978, 0.08190758, -0.21001509, -0.033524346, 0.06273405, -0.2997634, 0.17979006, 0.056670144, 0.17271192, 0.18963227, 0.014150318, 0.06472095, 0.011062292, -0.18754636, -0.11784225, -0.03410013), target);\n\ttarget = MulAdd(g3, MF4x4(-0.0030782006, -0.039169632, -0.012148773, 0.007969146, 0.08711546, -0.037726182, 0.083651684, -0.08435948, -0.019397778, -0.0052067027, 0.08074589, -0.30207992, 0.047031336, 0.002789317, 0.15840194, -0.015054001), target);\n\ttarget = MulAdd(h3, MF4x4(-0.09078356, 0.12796444, -0.18432406, 0.16723672, -0.05772405, -0.030571923, 0.116594106, 0.06573904, 0.09887476, 0.09740928, 0.106751874, -0.00070329773, 0.010173095, -0.01197216, -0.06333568, 0.09718661), target);\n\ttarget = MulAdd(i3, MF4x4(-0.110290706, -0.005412752, 0.003918915, 0.0149365235, -0.12237922, -0.0941654, -0.034798037, 0.015760876, 0.04696292, -0.029291628, 0.045765277, -0.015127902, -0.09263057, 0.05402446, -0.0015908936, -0.033567302), target);\n\ttarget = MulAdd(na1, MF4x4(-0.1546162, -0.046554644, -0.0391521, -0.09454174, -0.0145587865, 0.07268975, -0.02036403, 0.015187209, 0.026502129, 0.032875117, 0.12548845, -0.19535835, 0.010370751, 0.030553613, -0.042921092, 0.11908), target);\n\ttarget = MulAdd(nb1, MF4x4(0.008709621, 0.12762955, 0.02271395, -0.031447556, 0.2041771, -0.029859964, -0.015839372, 0.10484876, 0.09285942, -0.020085273, 0.2329937, -0.29332286, 0.08294215, 0.011051319, -0.04993451, 0.042096935), target);\n\ttarget = MulAdd(nc1, MF4x4(0.18800123, -0.03135053, 0.039468758, -0.1393591, -0.055419687, -0.06350931, 0.017772222, 0.05357081, 0.10056033, 0.017571677, 0.05918185, -0.18371263, 0.0045149303, -0.077885784, -0.00043915678, -0.008647403), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.011838485, 0.07350019, 0.0420831, 0.16229297, 0.009401042, 0.063198246, 0.060701136, -0.24234499, -0.098218255, 0.0034951624, -0.010836201, -0.07096872, -0.066027485, -0.008603827, -0.0023365172, 0.036595766), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.007935683, -0.26162764, 0.04059723, -0.059729014, 0.13929102, -0.09995081, 0.26922408, -0.29116368, -0.091238625, -0.07413519, -0.08951079, -0.030239927, -0.1368917, -0.11178951, -0.028913764, 0.15466857), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.1720602, 0.049961366, -0.035956968, 0.01072738, 0.093655944, -0.028308686, -0.07628571, 0.09549064, -0.002988198, 0.06946468, 0.17164339, -0.16626763, 0.11002801, -0.13791496, -0.05334689, 0.050957866), target);\n\ttarget = MulAdd(ng1, MF4x4(0.067476556, 0.018401565, 0.02231447, 0.14312652, 0.14491569, 0.03304159, 0.2667232, -0.23096946, 0.011412218, -0.033295278, 0.006336338, 0.054895587, 0.031594772, -0.03772589, -0.08373306, 0.040909506), target);\n\ttarget = MulAdd(nh1, MF4x4(0.03497658, -0.025716685, -0.16338083, 0.028354604, 0.13035797, 0.0010428666, 0.13506557, -0.23274136, 0.016426807, 0.005891126, -0.030560384, 0.054110117, 0.012959187, -0.033846233, 0.079321414, -0.08366125), target);\n\ttarget = MulAdd(ni1, MF4x4(-0.17821713, 0.0037684473, 0.057483234, 0.038107146, -0.10401292, 0.020576356, -0.012016484, 0.010923387, 0.028446645, -0.027637433, 0.11687413, -0.07261914, -0.049263023, -0.06475644, -0.024119789, -0.029610662), target);\n\ttarget = MulAdd(na2, MF4x4(-0.022396808, -0.048420932, -0.02559588, 0.064104095, -0.2238012, -0.041249584, -0.09579613, 0.07697319, -0.058794957, -0.0134507725, -0.037161227, 0.08851301, -0.06766741, -0.036019377, 0.13610823, -0.063773625), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.111936666, 0.0015700395, -0.18472138, -0.09797969, 0.010897245, 0.036488175, -0.08795422, -0.07408578, 0.1483729, -0.06495232, 0.080542035, -0.10570226, -0.01910507, 0.083303586, 0.15487678, 0.09761835), target);\n\ttarget = MulAdd(nc2, MF4x4(0.013546343, 0.12007825, -0.08906977, -0.032903753, -0.07735022, 0.074112795, 0.019404477, 0.012522555, -0.23720813, 0.03610346, -0.011151242, -0.09428033, -0.04208847, 0.08472888, -0.0941527, 0.1656356), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.25968832, 0.023167782, -0.03399193, -0.025605416, 0.101124994, -0.03928416, 0.046708047, 0.0940108, -0.25001726, 0.06509968, -0.13399917, 0.14300269, 0.020019464, 0.09823798, -0.2859548, 0.15752983), target);\n\ttarget = MulAdd(ne2, MF4x4(0.06779552, -0.048957087, 0.14341845, 0.008796376, 0.30520636, 0.085243754, 0.09708159, 0.120880716, -0.082815446, -0.10173312, 0.21042523, -0.0104252035, 0.012946593, 0.048153225, -0.023779962, -0.22626428), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.045614652, -0.1368418, -0.07421652, 0.010353576, 0.022773737, -0.034736004, -0.030603807, 0.0408453, 0.16829208, -0.028303532, 0.115394354, 0.0016284953, 0.06252144, 0.0025463477, -0.035674695, -0.09269994), target);\n\ttarget = MulAdd(ng2, MF4x4(0.029739881, 0.010787098, 0.0037744232, -0.031569265, -0.040358283, 0.031814087, 0.018036583, -0.035894874, -0.063151926, -0.109803386, -0.07274231, 0.0032429527, 0.0074872132, 0.05725981, 0.060606975, 0.061117698), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.090809055, -0.03279648, -0.039354723, 0.14036313, -0.013013246, -0.07712587, -0.05239944, 0.03066829, 0.10737496, 0.076186314, -0.19699359, -0.036594667, 0.21938333, -0.04839966, 0.1286612, 0.013338615), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.1429745, -0.07955227, -0.115608715, 0.14228356, -0.05602207, 0.02558927, -0.11061171, 0.06673638, -0.049651172, -0.021392899, -0.06468659, 0.039141133, -0.039755132, -0.050199732, 0.011340825, -0.00960286), target);\n\ttarget = MulAdd(na3, MF4x4(-0.065777004, 0.025236372, -0.098756045, -0.0066504143, -0.0832726, -0.040675264, 0.04911827, 0.033635136, -0.28793526, -0.10226347, 0.068537354, -0.2860185, -0.0550898, -0.033459336, -0.04448749, 0.11041132), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.00013023219, 0.007373967, 0.04127884, -0.04456252, 0.06467729, -0.023159763, -0.098877944, 0.015409203, 0.15005386, 0.17018975, -0.047596633, -0.08832008, 0.261034, 0.14298894, 0.10107278, 0.0667279), target);\n\ttarget = MulAdd(nc3, MF4x4(0.07939445, -0.08513146, -0.056983568, 0.040726192, 0.020092426, 0.18478346, 0.025876757, 0.030642727, -0.12265552, 0.002464858, -0.020372186, 0.070551656, -0.016353855, -0.11511243, -0.09484669, -0.08860525), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.08422405, 0.022759112, -0.12475361, 0.15862978, 0.111085795, 0.07579316, -0.007671498, -0.2048156, 0.17000435, 0.05883048, 0.18549366, -0.228149, -0.14611648, -0.1293601, 0.12878643, -0.07917457), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.08697763, 0.0049046283, 0.06277697, 0.25657007, -0.037057158, -0.13358995, 0.2738289, 0.23121043, 0.32146227, 0.9468732, -0.09779261, -0.009769717, 0.0027131666, 0.118656114, 0.0898452, 0.22487496), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.009855616, -0.26240128, 0.0801256, 0.05871007, -0.21371177, 0.18926387, -0.23380044, -0.09474009, 0.06469363, -0.011632477, 0.025565358, 0.07108313, 0.10727917, -0.00026592708, 0.10903209, -0.03030383), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.0053380155, 0.033946496, -0.06860304, 0.0837713, -0.19269274, 0.08148278, -0.024386114, 0.022558022, -0.10444353, -0.042082686, 0.1903784, -0.077984534, -0.0065324833, 0.014674045, -0.18835127, 0.0013458942), target);\n\ttarget = MulAdd(nh3, MF4x4(0.003491147, -0.0619422, 0.038574003, 0.059497047, -0.15528834, -0.007080539, -0.16295113, -0.044733614, -0.0067163864, 0.08186305, 0.11124116, -0.12240357, 0.12911586, -0.020327786, 0.084354304, 0.0617812), target);\n\ttarget = MulAdd(ni3, MF4x4(0.07007616, 0.011843434, -0.029149607, -0.0033018868, 0.027770158, 0.13727912, -0.12729046, 0.2015703, 0.096229255, 0.013653448, 0.053937647, -0.029171295, 0.034246232, -0.09088042, 0.080427885, -0.114031985), target);\n\tconv2d_2_tf1[gxy] = target;\n\n\ttarget = MF4(0.016709281, 0.012619587, -0.017232165, -0.04396106);\n\ttarget = MulAdd(a1, MF4x4(0.036752462, 0.029649748, -0.09748701, 0.059650358, 0.13616882, 0.013703124, -0.14998761, 0.009004554, 0.07992881, 0.022163173, -0.018146321, -0.08414139, -0.10911252, -0.016669272, 0.056696363, -0.08302073), target);\n\ttarget = MulAdd(b1, MF4x4(0.12478577, 0.028158983, 0.07586349, 0.12842986, -0.006957239, -0.1160528, 0.023359532, -0.0074758576, -0.15942998, -0.06529529, -0.153319, -0.078501165, -0.18118988, 0.2001499, -0.31065115, -0.055492736), target);\n\ttarget = MulAdd(c1, MF4x4(0.03806193, 0.00058707164, -0.06611409, -0.045297977, 0.024692483, 0.09514936, 0.12853955, 0.11280573, -0.023200573, -0.1503142, -0.19710632, -0.033298586, 0.00087093137, 0.061145596, -0.004629127, -0.014288893), target);\n\ttarget = MulAdd(d1, MF4x4(0.01509754, 0.000975345, 0.043960508, 0.022261515, -0.07704468, 0.086596936, -0.13879523, 0.26205274, -0.014519523, -0.12089183, 0.0046606623, -0.028361473, 0.034736868, -0.12085262, -0.019312797, -0.1901168), target);\n\ttarget = MulAdd(e1, MF4x4(-0.22042033, -0.067241855, -0.0011751472, -0.3089443, -0.17684302, -0.07348887, -0.037950914, 0.07932659, -0.13587996, -0.19734861, 0.27510792, 0.15798965, 0.070934966, -0.24996722, 0.22142075, -0.1549704), target);\n\ttarget = MulAdd(f1, MF4x4(-0.06863547, 0.12449067, 0.00033030356, -0.07413546, 0.124544054, 0.049810465, 0.012467352, -0.040705148, 0.2043941, -0.1648197, 0.047376834, -0.072514415, 0.051701315, 0.22315136, 0.24103536, 0.042497516), target);\n\ttarget = MulAdd(g1, MF4x4(0.123373166, 0.16414459, -0.08505689, -0.052690018, 0.11099723, -0.008846635, 0.03483504, 0.03459058, 0.036431137, -0.022281377, -0.0747196, -0.06604844, 0.0034591674, 0.10690525, -0.01045302, -0.036992412), target);\n\ttarget = MulAdd(h1, MF4x4(-0.19597553, -0.32721582, 0.20590895, 0.07775533, 0.1393974, 0.10618747, 0.034401745, -0.0008929772, 0.014548279, -0.066054046, -0.051273774, 0.043616574, -0.10099313, 0.021435626, -0.021498548, -0.09212177), target);\n\ttarget = MulAdd(i1, MF4x4(0.15320238, 0.16471805, 0.032097213, 0.020770807, 0.025557829, -0.10821472, -0.13672188, 0.07703349, -0.013789304, 0.07158349, 0.07591088, 0.017019821, -0.14680074, -0.14204682, -0.0040901196, 0.04855082), target);\n\ttarget = MulAdd(a2, MF4x4(0.092040926, -0.1696223, 0.0035175297, -0.1266837, -0.017807435, -0.05324885, 0.052235745, 0.0053132256, -0.26360056, 0.044413272, -0.07820576, 0.09869417, 0.05975259, 0.058592863, -0.03391289, -0.0463601), target);\n\ttarget = MulAdd(b2, MF4x4(-0.17156146, -0.06575004, 0.18721104, -0.028241588, 0.09805437, 0.15232502, -0.09398395, -0.14233524, 0.07775248, 0.14465685, 0.045949064, -0.03276368, -0.0028104451, 0.15150578, -0.04324162, -0.054190543), target);\n\ttarget = MulAdd(c2, MF4x4(-0.025806474, 0.122085676, 0.06087487, 0.10123448, -0.021339104, -0.082396485, -0.049415596, 0.016665734, -0.01075966, -0.18270788, -0.21377993, 0.0107189575, -0.14957522, -0.23296382, -0.20353965, 0.12026796), target);\n\ttarget = MulAdd(d2, MF4x4(-0.03165497, 0.20380338, 0.03153878, 0.08439275, 0.010899999, 0.031973626, 0.05603482, -0.050522227, -0.08342698, -0.23481508, -0.042175133, 0.008809877, 0.06622943, -0.08636996, 0.072220184, -0.06921989), target);\n\ttarget = MulAdd(e2, MF4x4(-0.07053526, 0.061910875, 0.0023930974, 0.28627953, 0.14615639, 0.058881626, -0.14786066, -0.06661333, 0.30343568, 0.3641429, -0.18411386, -0.16842756, 0.17510016, 0.05421069, -0.10123317, 0.06964223), target);\n\ttarget = MulAdd(f2, MF4x4(-0.21576017, -0.06363907, -0.18081437, 0.24664907, -0.09735165, 0.057592265, -0.083031796, 0.01964763, -0.031470213, -0.18838522, 0.05072108, -0.10001062, -0.008070019, -0.111055255, -0.07987868, -0.00753598), target);\n\ttarget = MulAdd(g2, MF4x4(0.061441302, -0.078763954, 0.005878039, 0.00055347115, -0.09499128, 0.09156834, 0.13328615, 0.043168213, -0.029688388, -0.36990175, 0.1696049, -0.034198307, -0.019164128, -0.09315934, -0.0028499612, 0.043170534), target);\n\ttarget = MulAdd(h2, MF4x4(-0.1382709, -0.24728169, 0.06712876, 0.08034291, -0.091681674, 0.007854249, 0.23301663, -0.055606913, 0.28568286, 0.2942446, -0.059362978, -0.074468486, 0.11220201, 0.1190768, -0.025883239, 0.05220736), target);\n\ttarget = MulAdd(i2, MF4x4(0.11531199, 0.3396637, 0.0085975, 0.013585601, 0.080540046, 0.049160656, -0.05710246, 0.005991695, 0.1438699, -0.3402577, -0.07053711, -0.16263331, -0.09119706, 0.0076426715, 0.08115436, -0.04297937), target);\n\ttarget = MulAdd(a3, MF4x4(0.052113753, 0.026635656, 0.10596492, 0.022013694, -0.010665535, -0.077066846, 0.06217549, -0.05517532, -0.056953914, -0.08185771, -0.020402161, -0.043208323, -0.012995452, -0.019643994, 0.006990098, -0.045173813), target);\n\ttarget = MulAdd(b3, MF4x4(0.17718889, 0.0038756612, -0.11827346, -0.2329743, -0.1793552, -0.08469043, 0.13127111, 0.051736213, 0.2438145, -0.12342349, -0.11737657, -0.20728126, -0.1685289, 0.11266314, 0.076692104, -0.1616657), target);\n\ttarget = MulAdd(c3, MF4x4(-0.020399734, -0.23063114, -0.21987145, -0.082217745, 0.116614126, 0.10273191, 0.101865344, 0.011308658, 0.056851316, -0.050016683, -0.009367647, -0.09125666, -0.07041454, 0.051433813, -0.006439021, 0.014740233), target);\n\ttarget = MulAdd(d3, MF4x4(0.051031563, -0.03535238, -0.080701895, -0.055633444, -0.03865236, 0.04696362, -0.016610028, -0.031190962, -0.06230007, 0.11438899, 0.002950869, 0.056986533, 0.06503178, -0.07315137, -0.108793534, 0.1280907), target);\n\ttarget = MulAdd(e3, MF4x4(0.13356781, 0.0902099, 0.0018598923, 0.054726165, 0.13937949, -0.14195664, -0.09394637, -0.23538189, 0.15451878, 0.07872618, 0.12278696, 0.07883152, -0.079190545, 0.0060577407, 0.12348955, 0.1273284), target);\n\ttarget = MulAdd(f3, MF4x4(-0.2844292, -0.043685716, 0.16975491, -0.03931876, -0.045410622, -0.043887924, -0.06207469, -0.095141575, -0.01910207, 0.036241893, -0.099487804, 0.006061581, 0.058822997, -0.0017064888, 0.04472078, 0.10879998), target);\n\ttarget = MulAdd(g3, MF4x4(-0.0531857, 0.20407021, -0.048386984, 0.02700043, -0.024223981, -0.075209916, 0.022038897, 0.14877595, -0.13606672, -0.12767786, 0.06151931, -0.05388265, -0.013327909, 0.03979459, -0.065765746, -0.07282832), target);\n\ttarget = MulAdd(h3, MF4x4(-0.037340526, -0.21573111, 0.1269642, 0.04037458, 0.12398714, 0.2021396, -0.17674391, 0.0147291655, 0.058955196, -0.0015507584, 0.23541385, -0.145222, 0.20797801, -0.13098398, 0.003790887, -0.037615184), target);\n\ttarget = MulAdd(i3, MF4x4(-0.09600365, 0.22067653, 0.09930907, -0.07818997, 0.08789531, -0.011831723, -0.07886167, -0.020031728, 0.00084014103, 0.081453785, -0.007063985, -0.007725119, -0.054167047, 0.041189484, 0.007090602, -0.037227746), target);\n\ttarget = MulAdd(na1, MF4x4(-0.017512068, -0.22621062, -0.011807716, -0.064745784, -0.06731377, -0.05784807, 0.050968435, 0.0674237, -0.10051867, -0.08823096, 0.015287385, 0.057430997, -0.08142708, 0.06392106, 0.062179778, 0.02986153), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.23300487, 0.0051065637, 0.23627552, 0.053352736, 0.15926725, 0.088776834, 0.06346916, 0.10811631, -0.05167443, -0.0029013795, -0.14792533, 0.0027736027, 0.31416926, -0.083981514, -0.051183276, -0.07321588), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.008830604, 0.2482698, 0.14781001, 0.096101865, -0.021321455, 0.060337346, 0.015929816, -0.039313477, 0.09857251, -0.04800572, -0.101969965, 0.09313578, 0.048235282, 0.05253759, 0.04893083, -0.1115041), target);\n\ttarget = MulAdd(nd1, MF4x4(0.14629705, 0.10310787, 0.07421539, -0.2541191, 0.061346315, -0.12419151, 0.08524945, -0.029404115, 0.022251071, -0.12156319, -0.011553011, -0.012188503, 0.10256824, -0.010299354, 0.06765391, -0.08820727), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.21080357, -0.4021113, 0.035816908, 0.7000948, 0.21632199, 0.111284, -0.012059465, 0.023438603, 0.25428426, -0.15475942, 0.09260869, 0.14866553, -0.14576761, 0.22147575, 0.023831703, 0.074204154), target);\n\ttarget = MulAdd(nf1, MF4x4(0.049143, 0.2896474, 0.18784785, 0.036332216, -0.019188514, -0.0049673393, -0.012528154, 0.13640659, -0.16241746, -0.09813068, 0.019516123, -0.0084478175, 0.058226462, -0.22123648, -0.14045192, -0.023666197), target);\n\ttarget = MulAdd(ng1, MF4x4(0.05800501, 0.060431264, -0.04097961, 0.03453522, -0.06560738, -0.092472866, -0.06397347, 0.14444739, 0.025983555, -0.030899955, -0.042766206, -0.06060983, -0.01918705, -0.040768683, 0.052782744, 0.09638819), target);\n\ttarget = MulAdd(nh1, MF4x4(-0.10073037, -0.22703889, -0.0010382081, 0.05074596, 0.03396179, -0.068848714, 0.0861629, 0.26089123, 0.022775311, -0.014949607, -0.094047025, -0.0027702095, 0.1917307, 0.11404618, -0.10283004, 0.025103435), target);\n\ttarget = MulAdd(ni1, MF4x4(0.030860173, 0.13404387, 0.05976607, -0.093795955, 0.016835473, -0.020731337, 0.037207656, 0.126881, 0.0074429302, -0.10216514, -0.031499624, -0.083616905, -0.023030072, 0.014815519, -0.08937133, 0.11519909), target);\n\ttarget = MulAdd(na2, MF4x4(0.13568272, 0.122503586, -0.04963004, -0.0010412488, -0.10429815, 0.068515815, -0.2886607, -0.09816482, 0.051498115, 0.0017436935, -0.03835064, -0.13563691, 0.035978988, 0.06407808, 0.035696708, 0.10724592), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.01266009, -0.0073259426, 0.006877496, 0.054289263, -0.07651681, -0.1118919, -0.012793396, -0.07368392, -0.01061065, -0.10134513, -0.1434462, 0.04688037, 0.19463971, 0.15506972, -0.23626265, 0.023359938), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.09461492, -0.036462337, -0.16172805, 0.15837577, -0.08643621, 0.035166703, 0.061290734, -0.108064786, -0.12176273, 0.026083494, 0.06523428, -0.053249013, 0.12905678, -0.11907856, 0.015970876, -0.064191975), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.042738717, -0.022231134, -0.03853537, -0.08111096, 0.040522724, 0.1349429, 0.1058772, -0.13941672, -0.04256023, -0.05742218, 0.19752051, -0.0942069, 0.0080565745, 0.06621899, -0.0018314277, -0.10499731), target);\n\ttarget = MulAdd(ne2, MF4x4(0.30080974, -0.053357773, -0.054159783, -0.13733824, -0.22567864, 0.0092003625, 0.055152208, 0.1307246, -0.05244466, 0.041202605, 0.04831643, 0.33047366, 0.11396535, 0.42621002, 0.03459549, 0.0347411), target);\n\ttarget = MulAdd(nf2, MF4x4(0.05305111, 0.076122396, -0.08781792, -0.0069180895, 0.050885174, -0.0042734225, -0.04444145, 0.012016987, 0.122985676, -0.048455186, -0.17231132, -0.013408545, -0.12154411, -0.39617026, -0.13028972, 0.075709775), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.0041923127, 0.027921822, 0.026247777, -0.020477489, 0.042308033, 0.01580411, -0.066128924, -0.058847815, 0.00095708045, 0.061050877, 0.042081635, 0.09856459, -0.038021386, -0.18332537, 0.12586181, -0.085686505), target);\n\ttarget = MulAdd(nh2, MF4x4(0.02818681, 0.2021728, -0.059565738, -0.02425082, 0.12646812, -0.02011973, -0.0052335905, -0.13634421, -0.036117353, 0.102945946, -0.025090111, 0.06759408, 0.08294928, 0.06963724, 0.07145511, 0.061311223), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.04572639, -0.1857778, -0.020896941, -0.1320479, -0.08060074, 0.15807647, 0.08087496, 0.09661483, 0.068133175, -0.03192162, -0.059143748, -0.023069799, 0.06820739, -0.10254724, -0.08489362, -0.12950915), target);\n\ttarget = MulAdd(na3, MF4x4(-0.0701631, -0.06492232, 0.07158485, -0.0474961, -0.08277424, -0.0046874695, -0.036980134, 0.032411482, -0.040205367, -0.11806291, -0.12003579, 0.09404628, 0.13509527, -0.07151287, -0.17165148, -0.082828976), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.23416395, -0.005059655, 0.03932381, 0.15610525, 0.1310776, 0.10495845, -0.23422901, -0.017912678, 0.010918836, -0.18813089, -0.287215, 0.21294762, 0.10265387, -0.06561, -0.11778113, 0.06950684), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.0028815586, 0.07538225, -0.03291754, 0.047160495, -0.07666219, -0.15290219, -0.17513353, 0.04385531, 0.005002826, -0.01648364, -0.11297704, -0.03472268, -3.882572e-05, -0.16454723, -0.023212174, 0.15911958), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.08348401, 0.029882649, 0.21708311, -0.05323357, -0.07704958, -0.016631678, -0.060494706, 0.10649385, -0.29307103, 0.052837957, 0.120730795, 0.034656238, -0.0004268264, 0.20290168, 0.10882499, -0.04060937), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.27893996, -0.18981667, 0.15798293, -0.030922053, -0.09654163, 0.27498308, -0.019050546, 0.16028336, -0.09720187, 0.10653666, -0.23317258, 0.20285597, 0.38110915, 0.022553165, 0.1321882, 1.1575677), target);\n\ttarget = MulAdd(nf3, MF4x4(0.124580376, 0.067915864, -0.060147874, 0.053467464, -0.0038043377, 0.0289266, 0.118544504, -0.13358372, -0.076356836, -0.09143476, -0.0685938, -0.067568906, -0.0121121425, 0.040102568, -0.2717469, 0.16300786), target);\n\ttarget = MulAdd(ng3, MF4x4(0.002691588, -0.12474235, 0.12467866, -0.09753572, -0.010205263, -0.0006359913, 0.015651824, -0.24048246, 0.1586161, 0.004588076, 0.04444844, -0.01231289, -0.06640105, -0.063054025, 0.102068566, 0.1259912), target);\n\ttarget = MulAdd(nh3, MF4x4(0.0028770883, 0.16986279, 0.060900114, -0.08368565, -0.26938817, -0.24303895, 0.29375112, -0.059524175, -0.13170256, 0.11625376, -0.1326183, -0.0012333714, -0.13267988, -0.0071024853, -0.031031137, 0.07532496), target);\n\ttarget = MulAdd(ni3, MF4x4(0.12214155, -0.041841783, -0.052751888, 0.062362764, -0.04766777, 0.0540806, 0.3322733, -0.3677417, 0.12217059, 0.05566961, -0.012429841, -0.10585391, -0.056920152, 0.14918473, -0.0054139746, 0.04940436), target);\n\tconv2d_2_tf2[gxy] = target;\n}\n\n//!PASS 4\n//!DESC Conv-4x3x3x24\n//!IN conv2d_2_tf, conv2d_2_tf1, conv2d_2_tf2\n//!OUT conv2d_3_tf, conv2d_3_tf1, conv2d_3_tf2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_2_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_2_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_2_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_2_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 a3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = conv2d_2_tf2.SampleLevel(sam, pos, 0);\n\tMF4 f3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = conv2d_2_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(0.15373076, 0.023519197, -0.049319107, -0.08283358);\n\ttarget = MulAdd(a1, MF4x4(0.060878627, -0.041988216, 0.104058675, -0.088971175, 0.037815195, -0.033195835, 0.014279358, 0.06304454, 0.02948025, 0.006056027, -0.02087268, -0.1090193, -0.0034371826, -0.03975976, -0.06009851, 0.12365947), target);\n\ttarget = MulAdd(b1, MF4x4(0.079548575, -0.16905668, -0.13728581, -0.03805935, 0.050417993, 0.04001516, -0.045917254, 0.043337673, -0.07575137, 0.017724466, -0.023716906, 0.012353904, -0.0853222, -0.09868139, 0.044824444, -0.0141505785), target);\n\ttarget = MulAdd(c1, MF4x4(0.09399756, -0.14398341, -0.2721442, 0.016207851, -0.10623493, 0.057902634, 0.10767521, 0.0003635082, 0.014634943, 0.09112885, 0.11872027, 0.036644384, -0.046260875, -0.0743102, -0.19018789, 0.036393598), target);\n\ttarget = MulAdd(d1, MF4x4(0.09814595, 0.0044509294, 0.13141516, 0.091252774, -0.09662514, -0.033599697, 0.12196037, 0.21599433, 0.1194499, 0.04127431, 0.039627396, -0.031521305, -0.14756238, -0.09555712, -0.010698389, -0.09642848), target);\n\ttarget = MulAdd(e1, MF4x4(-0.008813449, 0.015096444, 0.23331937, 0.097849704, -0.0094626965, 0.09468486, -0.14536959, -0.48678625, 0.11508988, 0.13658337, 0.07481205, -0.14646451, -0.056061424, -0.013553051, 0.1893297, -0.07424693), target);\n\ttarget = MulAdd(f1, MF4x4(0.092239104, -0.079855025, -0.12919873, -0.006577375, -0.4529186, 0.08633541, -0.027304357, -0.21013555, -0.03914936, 0.074918106, -0.009362854, -0.015590051, 0.23523058, 0.075767435, -0.042212676, -0.0037648496), target);\n\ttarget = MulAdd(g1, MF4x4(0.06423107, -0.080711946, 0.014235396, 0.017949343, 0.048689805, -0.10082265, 0.04964177, 0.103560664, 0.056355603, 0.09673206, -0.062948905, -0.036618367, -0.07845171, -0.010790115, -0.13978757, -0.025738737), target);\n\ttarget = MulAdd(h1, MF4x4(0.064559884, -0.042264454, -0.110668264, 0.124921605, 0.0047526294, 0.044878427, -0.15133426, -0.050278753, 0.08540561, 0.10420466, -0.021862527, 0.06804833, 0.094847456, 0.14177199, 0.04205903, 0.027875852), target);\n\ttarget = MulAdd(i1, MF4x4(-0.025060967, -0.04341538, -0.005267881, -0.06606841, -0.06347963, 0.062125452, 0.024389729, -0.08982404, -0.0062638335, 0.11981404, 0.054283164, -0.084352404, 0.0069115954, -0.064623505, 0.028570656, -0.069944404), target);\n\ttarget = MulAdd(a2, MF4x4(-0.026635213, -0.031471547, 0.12941289, 0.014990064, -0.06946961, 0.034871764, -0.0023429494, 0.039788067, -0.014846336, 0.07696896, 0.009524336, 0.06702693, 0.06922799, 0.15218733, -0.108957425, 0.02397873), target);\n\ttarget = MulAdd(b2, MF4x4(0.04425317, -0.019614218, 0.020195834, -0.06853279, -0.10681463, -0.038610324, 0.1985278, 0.1917614, -0.15072219, 0.019215003, -0.07190246, -0.0710555, 0.06319588, 0.123843595, 0.037890248, -0.10028418), target);\n\ttarget = MulAdd(c2, MF4x4(0.059803672, 0.08516648, 0.03677657, -0.010275112, -0.047332514, 0.0123374835, 0.06696025, -0.016793806, -0.086841464, 0.016270785, -0.12735787, -0.12676108, 0.16822693, 0.15760474, -0.07559359, -0.07678976), target);\n\ttarget = MulAdd(d2, MF4x4(-0.104641154, 0.07192061, 0.23210934, 0.11417999, 0.04492395, -0.118827716, -0.12041658, 0.19749922, 0.09203569, 0.019726515, -0.055105124, 0.05295804, -0.005788939, 0.056638427, 0.065282024, -0.09013673), target);\n\ttarget = MulAdd(e2, MF4x4(0.028824141, 0.27045545, 0.073205985, -0.082846776, -0.2143439, -0.026223134, 0.16712476, 0.07194315, -0.019990921, -0.28113925, 0.13138968, 0.053820554, 0.3113366, 0.20013627, 0.010963992, 0.07630061), target);\n\ttarget = MulAdd(f2, MF4x4(0.15658687, 0.07025806, -0.09104068, 0.07163445, -0.03478211, 0.015337765, 0.083114274, 0.010839639, -0.0542002, 0.0768983, 0.074233785, -0.10077115, -0.12870364, -0.08656189, -0.04770647, -0.025078414), target);\n\ttarget = MulAdd(g2, MF4x4(-0.08102263, -0.07714586, -0.042745892, 0.0374993, -0.09478303, -0.07571532, -0.062317267, -0.034587506, -0.01396296, -0.053482197, -0.04521547, -0.116828814, -0.07759964, 0.07154679, 0.06632562, -0.069989264), target);\n\ttarget = MulAdd(h2, MF4x4(0.0066547785, 0.13140622, 0.08087736, -0.25154832, -0.039879136, -0.010373583, -0.05184014, 0.012249648, -0.096870914, -0.020647451, 0.087357886, 0.042756695, 0.09706797, 0.16477491, 0.12650236, -0.0839691), target);\n\ttarget = MulAdd(i2, MF4x4(-0.010547578, -0.013264216, 0.07298194, -0.06801917, -0.020884428, -0.071191095, 0.0041795867, -0.03743981, -0.19142745, -0.023131248, 0.0381656, -0.014476577, 0.076137036, 0.08133924, -0.085573785, 0.01067451), target);\n\ttarget = MulAdd(a3, MF4x4(-0.15004109, -0.04713592, -0.05823828, -0.03564525, -0.18593709, 0.11510138, 0.10260254, 0.10952684, -0.056938007, 0.11468128, -0.07422465, 0.013310582, 0.03276255, -0.08601149, 0.074078046, 0.06268768), target);\n\ttarget = MulAdd(b3, MF4x4(-0.03183145, -0.080839306, 0.0077147027, 0.2783979, -0.020172173, 0.11772608, 0.19941199, 0.089674905, -0.1645803, 0.09871185, 0.103870094, -0.02221705, 0.18880293, -0.02838061, 0.1329911, 0.110804334), target);\n\ttarget = MulAdd(c3, MF4x4(-0.0727793, -0.15429437, 0.07309872, 0.052409347, 0.07621416, 0.014342246, 0.09742559, -0.006178975, -0.00049866503, 0.01627198, 0.1749332, -0.023455271, 0.084430106, -0.074995294, 0.024229486, 0.006074203), target);\n\ttarget = MulAdd(d3, MF4x4(0.096733555, -0.04178045, -0.016891489, 0.06953366, 0.005025407, 0.13799861, 0.003864609, -0.0056246608, 0.04448754, 0.14127962, -0.08169796, 0.049868934, -0.07307801, 0.0970107, 0.042104065, 0.012651146), target);\n\ttarget = MulAdd(e3, MF4x4(-0.17528427, -0.42639711, 0.11246585, 0.26789048, -0.045942087, 0.23083447, 0.2616979, 0.0051987628, -0.3405826, -0.02898998, -0.12387437, -0.06811704, -0.13623591, 0.085379034, 0.1163564, -0.3684051), target);\n\ttarget = MulAdd(f3, MF4x4(0.105229065, -0.009456556, -0.09346365, 0.16764155, 0.053806845, 0.032471523, 0.22268786, -0.00045551482, -0.038868275, 0.09682891, -0.072218366, -0.15059048, -0.06828941, -0.08986867, 0.009097031, 0.1784724), target);\n\ttarget = MulAdd(g3, MF4x4(0.015004372, 0.0059916377, 0.06578616, -0.03323271, -0.016655194, -0.0037565026, -0.016965717, 0.123583436, 0.05276917, 0.07713196, -0.08393188, -0.06575901, -0.026482249, 0.07345747, -0.029773988, -0.098376736), target);\n\ttarget = MulAdd(h3, MF4x4(0.0015305893, -0.09495176, 0.038808357, 0.0035307724, -0.08659931, 0.12207447, 0.08526738, 0.19026709, 0.05297383, 0.02768884, -0.1678504, -0.30386385, 0.025181111, 0.03945659, 0.17099062, 0.029333467), target);\n\ttarget = MulAdd(i3, MF4x4(0.21933754, -0.10313659, -0.04901954, 0.10964564, -0.13104112, -0.020108605, 0.027046354, -0.07801803, 0.12369789, 0.1183686, -0.2176958, -0.041832034, 0.047641497, -0.04469799, -0.010872767, 0.046445683), target);\n\ttarget = MulAdd(na1, MF4x4(0.148908, 0.119546995, 0.09599242, 0.026430191, 0.004287343, -0.01410569, -0.026667995, -0.0033883103, -0.114997216, -0.117683105, -0.083241284, 0.0925183, 0.04929814, 0.1384929, 0.067604244, -0.010090262), target);\n\ttarget = MulAdd(nb1, MF4x4(0.17913392, -0.027995758, 0.25155705, 0.38675678, -0.0084490245, 0.11703253, -0.13717517, 0.024913544, -0.022265881, 0.029341036, -0.021509588, 0.021925684, -0.06447644, 0.055588942, -0.23970391, -0.24156545), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.09896528, -0.17248964, 0.20294617, -0.16814777, 0.014902548, -0.032280933, 0.04340094, 0.016689163, -0.04480586, 0.04256907, -0.18132643, -0.0063551413, 0.061819937, 0.04628381, 0.006767698, 0.0061162747), target);\n\ttarget = MulAdd(nd1, MF4x4(0.15260129, -0.06680908, 0.032037478, -0.11269483, 0.02655564, -0.021874784, -0.06829202, -0.06577833, -0.009562943, 0.0015011907, 0.0124588655, 0.06603201, 0.011123314, 0.027462086, 0.057987396, -0.18905073), target);\n\ttarget = MulAdd(ne1, MF4x4(0.16752581, -0.48974037, -0.23990577, 0.27223033, -0.3773399, 0.08863033, -0.008062138, -0.077350825, -0.35848886, -0.053652804, 0.028900446, -0.06633484, 0.08034644, 0.10832985, 0.11753572, 0.09361), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.070450164, -0.25812992, 0.11410226, -0.21115066, 0.21403445, 0.077668846, -0.11741976, 0.011133417, 0.120277226, -0.08427091, -0.057168204, 0.1925855, -0.11746336, 0.10269434, -0.07322618, -0.10409009), target);\n\ttarget = MulAdd(ng1, MF4x4(0.03575297, 0.047510248, -0.007979737, 0.031025993, -0.03234521, 0.08676478, 0.0035725946, -0.057138126, 0.022418533, 0.0050477074, -0.07923602, 0.030552208, -0.006946033, 0.013259726, -0.066337876, -0.01595059), target);\n\ttarget = MulAdd(nh1, MF4x4(0.022808606, -0.08600189, -0.0021296823, -0.12722832, -0.061637733, 0.03429111, 0.1716912, 0.012061466, -0.037751373, -0.043379158, 0.004443852, 0.006374207, 0.04551323, 0.13964722, 0.011221888, -0.058265697), target);\n\ttarget = MulAdd(ni1, MF4x4(0.1531455, -0.030335607, -0.00045989535, 0.016067028, 0.0050904215, -0.088213325, -0.09847688, -0.061282493, 0.040786967, 0.049954005, -0.015633572, 0.020150138, -0.086479515, -0.04847328, 0.008594881, -0.06341954), target);\n\ttarget = MulAdd(na2, MF4x4(0.022407485, 0.051172994, -0.07005926, 0.0029726303, 0.11993554, -0.027608547, 0.06194104, 0.19056575, -0.04243877, -0.114722855, 0.06236797, -0.06036638, -0.089428924, -0.07503292, -0.0024683257, 0.060040735), target);\n\ttarget = MulAdd(nb2, MF4x4(0.06874307, 0.029475406, -0.05025358, -0.04228223, 0.08292351, 0.0686724, -0.4738799, -0.041531645, 0.0615269, 0.03603044, -0.009950976, -0.030149357, 0.06910009, -0.016899468, -0.16924357, -0.066745326), target);\n\ttarget = MulAdd(nc2, MF4x4(0.012021045, -0.0028476904, -0.23050983, -0.11764533, 0.033747047, -0.0668547, -0.17645846, 0.058430642, 0.025553009, 0.11809977, -0.34416163, 0.029323732, -0.054547835, -0.0160696, 0.03192446, -0.11135748), target);\n\ttarget = MulAdd(nd2, MF4x4(0.19059187, 0.11761485, 0.06828622, -0.071383595, 0.17573558, -0.07326583, 0.29549947, 0.5370607, -0.1592557, 0.012467725, -0.02284002, -0.15567715, -0.022485673, -0.075606614, 0.02638997, 0.06499531), target);\n\ttarget = MulAdd(ne2, MF4x4(0.061065406, 0.034856595, 0.121818274, -0.28799838, -0.0054412605, -0.25181246, -0.3095022, 0.59951264, -0.14887947, 0.310832, 0.42532226, -0.50458944, 0.09077006, 0.0012851865, -0.049090795, -0.018807344), target);\n\ttarget = MulAdd(nf2, MF4x4(0.08625662, -0.08079708, 0.03560689, 0.021092743, 0.03330426, -0.10841074, 0.03042436, -0.10980985, -0.056732696, -0.02562971, -0.1828409, 0.25399944, 0.2152503, -0.019375121, -0.073344804, 0.04161207), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.021478724, 0.015574761, 0.092981905, 0.04195265, -0.050123077, -0.13362321, 0.14641477, 0.22193475, -0.112343, 0.02624443, -0.13018239, 0.00833514, -0.0092335045, 0.015253402, -0.013441764, 0.028822897), target);\n\ttarget = MulAdd(nh2, MF4x4(0.025862357, -0.021355819, 0.10295669, 0.0615911, -0.102607384, -0.21350992, -0.0051344573, 0.062845446, -0.068726346, 0.10714023, -0.016227763, -0.055759374, 0.10889699, 0.07502395, -0.09149433, -0.00020285786), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.0676785, -0.11517699, 0.012390956, -0.120551035, -0.1695143, -0.027560102, -0.04481715, -0.06955313, 0.03983824, 0.097748354, -0.02457515, -0.025119185, -0.003987165, -0.034221396, -0.004371428, 0.045199845), target);\n\ttarget = MulAdd(na3, MF4x4(0.1732521, -0.022186914, 0.023095943, 0.034811586, 0.05579798, 0.030366201, 0.050261993, 0.029239386, 0.012046298, 0.024326274, -0.06705734, -0.028883696, 0.019890117, 0.018180113, 0.15856597, 0.18605316), target);\n\ttarget = MulAdd(nb3, MF4x4(0.14001346, -0.21155912, -0.04503595, 0.053345755, -0.090209134, 0.023596361, 0.109940544, 0.04495405, 0.1154255, 0.08557325, 0.028999878, 0.06572874, -0.06701647, -0.059574578, -0.035772696, -0.25112775), target);\n\ttarget = MulAdd(nc3, MF4x4(0.06629787, 0.08039307, -0.13807642, 0.07134196, -0.04295903, -0.006060854, 0.08699088, 0.018854614, 0.024055403, 0.024039935, -0.08500348, -0.03041994, -0.12469508, -0.06752729, 0.023455527, 0.06100103), target);\n\ttarget = MulAdd(nd3, MF4x4(0.06566045, -0.19818264, 0.13119479, 0.25947747, -0.17939506, 0.005642733, 0.09516572, -0.015004266, -0.048418473, -0.0120703075, -0.18966949, -0.23252305, 0.04602659, -0.07620238, -0.08963158, -0.082796745), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.01332639, -0.20567879, -0.027533831, -0.055890594, -0.06562438, 0.05992528, 0.15381408, -0.015261545, 0.14442064, 0.100258596, -0.0497336, 0.00076529477, 0.08915382, -0.25916958, 0.11629673, 0.50717276), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.09708679, -0.17440423, -0.06424349, 0.024765793, -0.068865195, -0.030870711, -0.019785484, -0.09489355, 0.0029501836, -0.030186258, -0.059128, 0.02353537, -0.056624137, -0.03159645, -0.016295215, -0.07160536), target);\n\ttarget = MulAdd(ng3, MF4x4(0.006727234, -0.21366745, -0.07577386, -0.007462938, -0.17185695, -0.034567107, 0.15243205, 0.033333488, -0.08533551, 0.10143909, 0.02578666, -0.09097233, 0.026171222, -0.18809001, -0.03344314, 0.075811416), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.007549739, -0.18698569, -0.12967056, 0.23008282, -0.21573843, -0.034550514, 0.13685697, -0.11938899, 0.14835912, 0.1284512, 0.034902997, 0.086076915, 0.016294781, -0.068496056, -0.01920739, 0.14567302), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.04698844, 0.011898311, 0.1046441, 0.01991676, -0.042640552, -0.0012635426, 0.019563822, -0.16339815, -0.15451749, 0.0122954445, -0.15720376, -0.047094855, -0.047507558, -0.021503676, -0.04172817, -0.040319066), target);\n\tconv2d_3_tf[gxy] = target;\n\t\n\ttarget = MF4(-0.089817494, -0.046376515, -0.016165316, 0.0076574814);\n\ttarget = MulAdd(a1, MF4x4(0.051532425, 0.091096826, 0.14191705, 0.021257475, -0.043796312, 0.093881994, -0.005066956, -0.0023505734, -0.05945693, 0.009556036, -0.085642494, -0.0014123443, -0.0058722594, -0.024343085, 0.061728872, -0.0039950665), target);\n\ttarget = MulAdd(b1, MF4x4(-0.26865405, 0.009443461, 0.16867341, 0.622584, 0.058818102, 0.35006693, -0.059381735, -0.06257525, 0.09936295, -0.00443078, -0.10469712, 0.028571106, -0.040493533, 0.064946294, 0.06706766, -0.09373991), target);\n\ttarget = MulAdd(c1, MF4x4(0.06543985, 0.09986878, -0.19543362, 0.09373655, 0.0541375, 0.16537385, 0.026011372, -0.03605416, 0.019205978, -0.07212895, 0.024384554, -0.007675373, 0.12836097, -0.04166636, 0.055825308, -0.020801648), target);\n\ttarget = MulAdd(d1, MF4x4(-0.0015450468, 0.13572882, 0.12091456, 0.1166015, -0.009230995, -0.02709468, 0.24357562, -0.041073736, 0.10431756, -0.09081733, 0.024183141, -0.12385413, 0.009050871, 0.04241893, -0.07000264, -0.045027476), target);\n\ttarget = MulAdd(e1, MF4x4(0.1844817, 0.26336753, 0.3737102, -0.06259004, 0.1617452, -0.25852692, 0.09539696, 0.077052556, -0.1127802, -0.04362702, -0.07532252, 0.01843211, 0.20906034, -0.22169475, -0.3050946, 0.005795682), target);\n\ttarget = MulAdd(f1, MF4x4(0.050782137, 0.09285482, 0.013463424, 0.09382983, 0.15679222, 0.097184785, -0.102737166, 0.010083802, 0.25101736, -0.057440706, -0.0068231933, 0.031670235, -0.15177655, 0.06184211, 0.035385065, 0.094532885), target);\n\ttarget = MulAdd(g1, MF4x4(-0.021981591, -0.010338387, 0.0173951, 0.011672829, -0.07322482, 0.026766973, 0.19942865, -0.054371774, -0.039344914, -0.031175368, -0.104145624, -0.033964705, 0.059924334, 0.10030723, 0.05287642, -0.011525114), target);\n\ttarget = MulAdd(h1, MF4x4(0.010477996, -0.027564188, -0.07299184, 0.0031628401, 0.053592954, 0.14721608, 0.050443165, 0.054701533, -0.05194661, 0.10187985, 0.0841449, -0.16591024, -0.120705724, 0.04835826, 0.022117713, 0.14320303), target);\n\ttarget = MulAdd(i1, MF4x4(0.05366802, 0.04450724, -0.07116873, 0.018092519, 0.12960574, 0.010524704, 0.021397214, -0.10124951, 0.021492062, 0.15726486, 0.018809538, 0.16718598, -0.079331905, 0.014389413, -0.043786433, -0.031617466), target);\n\ttarget = MulAdd(a2, MF4x4(0.061123163, -0.008527182, 0.056948926, -0.10627774, -0.051381204, -0.098056376, -0.07355251, 0.058251213, 0.03027771, -0.059726343, -0.004039657, -0.060454708, 0.03326807, -0.017245874, -0.018002514, -0.19221961), target);\n\ttarget = MulAdd(b2, MF4x4(0.13269426, -0.14521386, 0.07024693, -0.044345845, 0.064260505, -0.08186043, -0.018553255, 0.013000457, -0.034331907, 0.0110434955, -0.15152079, 0.062666364, 0.0064793793, 0.03943717, -0.07121982, -0.0122420695), target);\n\ttarget = MulAdd(c2, MF4x4(0.0022909308, -0.027821459, 0.007666231, -0.09402207, 0.06378703, 0.0025306912, -0.011908118, 0.052943528, 0.03777223, 0.015253876, -0.0911553, 0.020581577, 0.04024302, -0.059131015, -0.12878624, -0.14937729), target);\n\ttarget = MulAdd(d2, MF4x4(-0.20060766, 0.10550035, 0.040319964, 0.02203861, -0.21334945, -0.09129617, 0.14950722, 0.27330917, -0.13043684, -0.011455554, -0.059163526, 0.061363168, 0.07198159, -0.14392267, -0.049279723, -0.16368888), target);\n\ttarget = MulAdd(e2, MF4x4(-0.005726934, 0.061809737, 0.26571175, -0.0508786, -0.13768773, 0.0084726615, 0.064867355, 0.24021354, -0.16612366, -0.32611376, -0.0056967433, 0.058649994, -0.14098184, -0.13195637, 0.17463897, -0.072706945), target);\n\ttarget = MulAdd(f2, MF4x4(-0.004255773, 0.050221432, 0.03511493, 0.13059683, 0.090276234, -0.014923911, -0.0297545, -0.047384452, -0.017452974, -0.014603175, -0.040555496, -0.040129393, 0.15767246, -0.12933423, -0.10411603, -0.059705585), target);\n\ttarget = MulAdd(g2, MF4x4(0.01499572, 0.038021356, -0.038655262, 0.10332636, 0.06107952, -0.124987125, 0.00839781, 0.026839726, 0.05667281, -0.06502034, -0.04158296, 0.020352334, 0.012855494, -0.16884436, 0.07456417, -0.27250993), target);\n\ttarget = MulAdd(h2, MF4x4(0.16625583, 0.111739345, -0.14115168, 0.07775498, 0.07964054, -0.19943264, -0.076579675, 0.114146315, -0.06924165, -0.008523757, -0.012369684, 0.084825546, 0.077360824, 0.015640896, -0.09014757, -0.2562427), target);\n\ttarget = MulAdd(i2, MF4x4(0.043598585, -1.7944143e-05, 0.020020347, 0.163202, -0.009320151, -0.060290903, -0.08029752, 0.00470786, -0.052253775, 0.0523158, -0.048120454, 0.027237004, 0.19543527, -0.053322367, -0.07795532, -0.26097637), target);\n\ttarget = MulAdd(a3, MF4x4(0.040829513, 0.027344912, 0.039350614, -0.018052671, 0.047116775, -0.21742846, 0.021800093, 0.04727935, 0.006476431, 0.109050065, -0.15855633, 0.06528196, 0.01749025, 0.0801408, 0.050908446, 0.025161307), target);\n\ttarget = MulAdd(b3, MF4x4(0.0039109145, 0.20262106, 0.010640377, 0.00073508086, 0.035609048, -0.3178805, -0.114064306, -0.08717052, 0.041919455, 0.100822195, 0.052280337, 0.14264041, -0.019835107, -0.01742497, 0.069859706, -0.136094), target);\n\ttarget = MulAdd(c3, MF4x4(-0.016050965, 0.0017023965, 0.07463478, 0.029397288, 0.012884667, -0.15340297, -0.12145311, -0.084504604, 0.031719554, 0.10176259, 0.17917578, -0.081466235, -0.070475176, -0.036569543, 0.030817369, 0.00093004206), target);\n\ttarget = MulAdd(d3, MF4x4(0.005175143, 0.038541757, -0.04611391, 0.012687734, -0.08482585, -0.13420677, -0.022602718, -0.023248335, -0.009379305, -0.024914416, -0.1556873, 0.07716233, 0.040030897, 0.019588439, -0.00020326633, -0.035921823), target);\n\ttarget = MulAdd(e3, MF4x4(0.09277081, -0.14604849, -0.10315272, -0.10218238, -0.019299058, 0.039892927, -0.12305097, 0.08282308, 0.20785542, -0.25430942, -0.5786373, 0.08361619, 0.29766968, -0.13651149, 0.05433396, -0.002326487), target);\n\ttarget = MulAdd(f3, MF4x4(0.0022918757, -0.13288023, 0.03507073, -0.1270022, -0.08303009, -0.11835682, -0.043386355, -0.049939554, 0.17220426, 0.20690584, -0.12607607, 0.01630364, -0.12909384, -0.015639398, 0.008538845, 0.011814694), target);\n\ttarget = MulAdd(g3, MF4x4(-0.07323993, 0.0038193578, -0.04499547, -0.028330965, 0.09958232, -0.19099899, 0.11461582, 0.034137066, 0.11563113, -0.080109045, -0.046825726, -0.076518156, 0.02142076, 0.023689395, -0.06716457, 0.055380866), target);\n\ttarget = MulAdd(h3, MF4x4(-0.16992791, -0.11073775, 0.030314503, -0.040741265, 0.14471209, -0.08543357, 0.03936064, 0.08363683, 0.25784957, -0.013240934, -0.2611622, 0.058637217, -0.054403603, 0.07538569, -0.01460606, 0.0033586712), target);\n\ttarget = MulAdd(i3, MF4x4(-0.030334603, -0.06705014, 0.115312725, -0.088085726, 0.06702929, -0.0011495374, -0.034704637, 0.1343799, 0.09259208, -0.015164439, -0.07946157, -0.08280861, 0.05221832, -0.020103397, 0.07027518, -0.06577655), target);\n\ttarget = MulAdd(na1, MF4x4(-0.15953599, 0.19717984, -0.068774864, -0.013231801, -0.0049428963, 0.035260137, 0.06719697, 0.053744193, -0.0061586886, 0.12468824, 0.082771085, -0.06338266, -0.11161943, 0.020903619, -0.06662881, 0.106410764), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.12648551, 0.59016633, -0.058449466, 0.05027184, -0.1268186, -0.16503315, 0.06283211, 0.15491466, -0.030275421, -0.017137839, 0.35572198, -0.20102905, -0.13933317, 0.064168975, -0.25148913, 0.19831786), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.020623447, 0.10436603, 0.032505494, 0.10330747, -0.13537021, -0.12852004, 0.043470673, 0.15594596, -0.04079206, -0.006578484, 0.014639443, -0.1305668, 0.12742941, 0.035377916, -0.020666048, 0.12913902), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.093957245, 0.14227086, -0.052876893, -0.017023886, 0.02895226, -0.049363572, -0.103803545, -0.020201692, -0.017122371, 0.020107223, 0.17466359, -0.045727585, 0.008829902, -0.090555556, -0.15374495, 0.038008567), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.12761056, 0.28135148, 0.27574867, 0.382931, 0.37396768, 0.16042046, -0.21978071, -0.09570819, -0.03657776, -0.14994064, -0.21335132, -0.14469749, -0.008334839, 0.076127745, 0.12596962, 0.044469625), target);\n\ttarget = MulAdd(nf1, MF4x4(0.062693655, -0.0020995673, -0.03578003, -0.008693218, -0.20448913, -0.0012052114, -0.05517855, 0.07709973, 0.00019773244, -0.033441383, 0.10124644, -0.029133243, 0.011188245, 0.049480632, -0.15774047, 0.026462583), target);\n\ttarget = MulAdd(ng1, MF4x4(0.07708541, 0.032094687, -0.06590399, -0.044917103, 0.030699087, 0.013791041, -0.027715903, 0.034989886, 0.12644286, -0.053212583, 0.030144867, 0.03191328, -0.0022030976, -0.03517952, -0.031239145, -0.011541516), target);\n\ttarget = MulAdd(nh1, MF4x4(0.13605243, -0.0036643173, 0.054759923, -0.0874578, -0.095541336, -0.07717009, -0.0044404124, -0.07789377, 0.022223033, 0.042040557, 0.03963188, -0.06923746, 0.050515573, 0.021173706, -0.1588929, -0.016566718), target);\n\ttarget = MulAdd(ni1, MF4x4(0.03642868, 0.0019571134, -0.06462001, -0.025783904, -0.092446275, 0.07034372, 0.13513735, 0.049418043, 0.0469767, -0.034647983, -0.028358156, 0.029821971, -0.0012547448, -0.0215142, -0.00575001, -0.015822617), target);\n\ttarget = MulAdd(na2, MF4x4(0.05991972, -0.07097606, -0.0021673026, -0.057737365, -0.07414523, 0.0848901, -0.010813947, 0.098590545, -0.053975012, -0.01418897, -0.003842304, -0.08890115, -0.036108535, -0.028888565, 0.083571434, 0.031539794), target);\n\ttarget = MulAdd(nb2, MF4x4(0.06793972, -0.04307121, -0.06749134, -0.2220419, -0.027158843, -0.12549289, -0.12074319, 0.15725835, 0.031145409, 0.029780883, 0.1666359, -0.19247383, 0.049615867, 0.007585922, 0.043383103, 0.059999026), target);\n\ttarget = MulAdd(nc2, MF4x4(0.049211416, 0.017562263, -0.16941698, 0.020431092, 0.03291002, -0.16847964, -0.13768122, 0.023552107, 0.066443734, 0.04457845, -0.06422816, 0.026246335, -0.068408854, -0.005691881, -0.016129443, -0.04373907), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.05238576, 0.0040802117, -0.048386503, -0.091417626, -0.12426567, 0.057714116, 0.13877256, 0.07984798, 0.1273961, 0.053779654, 0.005539249, -0.15763973, 0.01229652, 0.028854318, 0.03565122, 0.008969873), target);\n\ttarget = MulAdd(ne2, MF4x4(0.0557266, -0.08987834, 0.084733, -0.092816025, -0.11559604, 0.078937136, 0.2510453, 0.43310538, 0.25558868, 0.11473004, -0.38432416, -0.5493848, 0.11698362, 0.0031592897, -0.25226787, -0.16275169), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.057126086, 0.02864368, 0.03450892, -0.21388105, -0.09301064, -0.08352118, -0.03985245, 0.03851764, 0.052544933, -0.11187719, 0.1202711, -0.025741827, -0.049562898, 0.030661782, -0.13272884, 0.11825087), target);\n\ttarget = MulAdd(ng2, MF4x4(0.00022974834, 0.009710421, 0.017583983, -0.033309694, -0.0051363627, -0.04150162, 0.14076383, -0.02493734, 0.03662216, 0.013816948, -0.093910635, -0.016845183, -0.005615691, 0.057093993, -0.04766084, 0.02399329), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.105166085, 0.043123998, -0.0127380835, 0.002625806, 0.015331415, -0.06932662, 0.12627512, -0.007400604, 0.0795737, -0.06656376, 0.10450256, -0.21649025, 0.018006608, 0.023881756, 0.017293494, 0.028394276), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.02119481, 0.08968183, 0.05052849, -0.12967895, -0.040222317, -0.05005715, -0.03269384, 0.12692185, -0.026795395, -0.010976929, 0.09932758, -0.10000184, -0.029375391, -0.0059517818, 0.11153912, -0.021110825), target);\n\ttarget = MulAdd(na3, MF4x4(-0.18823478, -0.07471848, 0.10086466, -0.0802164, -0.08827184, 0.120874256, -0.10013822, -0.041975964, 0.03392259, 0.02487604, 0.0055046408, -0.031607714, -0.046583664, -0.08023409, 0.01050265, 0.018952131), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.27866688, 0.01744233, 0.22286561, -0.12082279, -0.09129484, 0.18733421, 0.13702172, 0.11011228, -0.102656946, 0.008688805, 0.017221048, 0.05698448, 0.047090173, -0.11221888, -0.011405661, -0.0803902), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.015040312, -0.06936747, -0.051856115, -0.23413056, 0.038837086, -0.05748699, 0.008432868, 0.013003123, 0.015453204, -0.025663814, -0.14024237, 0.05792928, 0.16071676, -0.06444115, -0.025555203, -0.0329603), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.17098702, -0.03307113, 0.39276683, -0.2675735, 0.11513026, 0.022623973, 0.09215052, -0.035489403, 0.15498714, -0.033512514, -0.12328384, 0.06450136, -0.0857012, -0.05533978, 0.084712565, 0.060517173), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.22476391, 0.043400906, 0.27170894, -0.08536195, 0.081583224, -0.12228048, 0.11090993, -0.17015494, -0.2305381, 0.3388885, 0.04737424, -0.039380115, -0.4384285, 0.108392686, -0.04265109, -0.076380804), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.005365885, 0.019079542, 0.101035826, 0.019317945, 0.090604626, 0.060402036, 0.03897374, -0.013627864, -0.06286203, -0.10721233, -0.04124434, 0.15492818, 0.08468363, 0.02096242, 0.16306227, -0.121712595), target);\n\ttarget = MulAdd(ng3, MF4x4(0.076783404, -0.10820704, 0.1928273, -0.26549062, -0.019718567, 0.014522923, 0.03307578, 0.05146496, -0.037891667, 0.06871848, -0.040733065, -0.06625803, 0.044294454, -0.03430605, 0.17273937, -0.097373515), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.01684758, 0.11004352, 0.18195264, 0.021141363, -0.06384991, -0.046188932, 0.14583582, -0.042456772, -0.19739406, 0.0716079, -0.14497757, -0.11471601, -0.05790205, -0.031198889, 0.16930245, -0.050601408), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.0004969313, 0.052198816, 0.044516873, -0.0004902391, -0.01417575, 0.007150018, -0.058823355, -0.10758816, 0.11552376, -0.009542674, -0.02952017, 0.057716407, 0.036378585, -0.014639986, -0.102228165, 0.014733783), target);\n\tconv2d_3_tf1[gxy] = target;\n\n\ttarget = MF4(0.05188569, -0.059999112, -0.083425395, 0.082997724);\n\ttarget = MulAdd(a1, MF4x4(0.030038383, -0.021750828, -0.05673787, -0.020782128, -0.09773039, 0.039174426, 0.06708796, -0.049333632, -0.04537355, 0.0038014427, 0.03591195, -0.044637557, 0.050968885, 0.09330693, -0.031212635, 0.07429358), target);\n\ttarget = MulAdd(b1, MF4x4(0.12775251, 0.040986136, -0.04009791, -0.46938616, -0.019962156, 0.020210423, 0.006611632, -0.12218599, -0.034447394, -0.042804014, 0.03643364, 0.008767333, 0.011725782, 0.12548617, -0.04463093, -0.0003086673), target);\n\ttarget = MulAdd(c1, MF4x4(-0.17495006, 0.09364223, 0.21191445, 0.3689361, -0.17039227, 0.046119362, 0.0004103469, 0.005220074, -0.030711368, -0.16689484, -0.0033276859, 0.0019133807, 0.039146427, 0.24162926, -0.06682649, 0.015280382), target);\n\ttarget = MulAdd(d1, MF4x4(0.14416052, -0.04350349, -0.05997498, -0.033882197, 0.094997644, -0.074338906, -0.018996352, -0.11358834, -0.056317985, -0.09744033, -0.0649357, 0.13987495, -0.11759386, 0.04025934, 0.014363531, 0.04545393), target);\n\ttarget = MulAdd(e1, MF4x4(-0.025082601, 0.15925029, 0.26535234, -0.11123376, 0.2440576, -0.22252248, -0.33604595, 0.41823947, 0.041226815, -0.018212054, 0.029909294, -0.18397939, -0.008992709, -0.053265553, -0.33006796, 0.1679767), target);\n\ttarget = MulAdd(f1, MF4x4(-0.15396369, 0.047922403, 0.081095986, 0.113559745, -0.15644477, -0.053599257, 0.13369486, -0.042834673, 0.053572267, 0.008784489, -0.07328086, -0.09134024, 0.13616152, 0.07166517, -0.13828607, 0.03351486), target);\n\ttarget = MulAdd(g1, MF4x4(0.14226072, 0.03835179, 0.037692476, 0.028272923, 0.1739552, 0.060204353, 0.025946103, -0.11801499, -0.013297981, 0.017026937, 0.03560745, 0.013458226, -0.13805607, -0.0465596, -0.10789218, 0.05573865), target);\n\ttarget = MulAdd(h1, MF4x4(0.086809635, -0.079763696, 0.09985947, -0.005514354, 0.03096031, -0.11669026, -0.022280462, -0.13622472, -0.14020382, -0.19116089, -0.19539164, 0.19047521, 0.052646037, 0.16117837, -0.03884808, 0.00616069), target);\n\ttarget = MulAdd(i1, MF4x4(0.0559758, 0.034724902, 0.0734068, 0.05364228, 0.038033064, -0.17287946, 0.079264306, -0.108767435, 0.061889466, 0.008698587, -0.09496613, 0.005716793, 0.016187228, 0.029243872, 0.0018449439, -0.049501143), target);\n\ttarget = MulAdd(a2, MF4x4(-0.07022979, -0.048978336, -0.03554127, 0.059115365, -0.044639688, 0.09438233, -0.08497962, 0.0090867905, 0.10578026, -0.05330054, -0.096712135, -0.066838026, -0.14796714, -0.068573944, -0.062214892, -0.041214455), target);\n\ttarget = MulAdd(b2, MF4x4(0.1073234, -0.18741827, -0.11151789, 0.015686441, -0.051570714, 0.11938432, -0.10913929, 0.19924664, 0.004670323, 0.12700799, 0.10854721, 0.011548006, 0.027806178, -0.056173198, -0.0735823, -0.032703802), target);\n\ttarget = MulAdd(c2, MF4x4(0.021739235, -0.0762548, -0.07841973, -0.026117647, -0.020196462, -0.032511126, -0.013573442, -0.0064681806, -0.001557182, -0.025993003, 0.042057555, -0.07787966, -0.0032753355, -0.20890261, -0.11667297, 0.014360282), target);\n\ttarget = MulAdd(d2, MF4x4(0.112155125, 0.08103959, -0.16235179, -0.044133063, -0.22261354, 0.08284279, 0.18919945, -0.12323681, 0.07951254, 0.07377466, 0.040439017, -0.085686415, -0.05438964, -0.0856376, -0.03426205, 0.16813913), target);\n\ttarget = MulAdd(e2, MF4x4(-0.07694995, -0.14575966, 0.16244434, 0.069700025, -0.09374663, 0.20785992, 0.6321536, -0.14662765, 0.049012557, -0.11849355, -0.17823172, 0.12648977, 0.23761982, -0.27029783, -0.25868917, 0.3413623), target);\n\ttarget = MulAdd(f2, MF4x4(-0.054794446, -0.07828729, -0.09556604, -0.07134157, 0.036704887, -0.10364276, 0.06125657, 0.09165867, 0.118566066, -0.049238298, -0.047849175, -0.111805685, -0.12598202, -0.059178207, 0.19201007, 0.23574536), target);\n\ttarget = MulAdd(g2, MF4x4(0.08980732, 0.02026105, 0.0129340505, -0.09411272, 0.050741844, 0.08491761, -0.0047545866, 0.08226705, -0.043336462, -0.031396918, 0.067547105, 0.062342398, -0.17352124, 0.023412999, -0.040013775, 0.1298339), target);\n\ttarget = MulAdd(h2, MF4x4(-0.14172035, -0.24607244, 0.047379315, 0.07706968, 0.021247461, -0.052120127, -0.059468146, 0.119869955, 0.053620726, 0.004084994, 0.13461955, -0.18420613, -0.08815453, -0.2254551, -0.12617877, 0.08785496), target);\n\ttarget = MulAdd(i2, MF4x4(-0.077065945, -0.2423904, 0.1552825, -0.03647555, 0.06480191, 0.1330156, -0.0269433, 0.15451622, 0.035751514, 0.20464808, -0.025265023, 0.020420134, 0.083485104, -0.21048307, 0.02272924, 0.08510558), target);\n\ttarget = MulAdd(a3, MF4x4(0.060760673, 0.09824782, -0.021633951, -0.01997114, -0.057572138, -0.09888247, 0.028583184, -0.07609289, -0.15944918, -0.068560906, 0.0012401744, -0.1439598, 0.062566355, 0.038748585, -0.049428593, 0.06488477), target);\n\ttarget = MulAdd(b3, MF4x4(-0.14030106, 0.3072454, 0.06573317, 0.11125419, -0.056651082, -0.38036165, 0.14607264, 0.025300123, -0.21910849, 0.086184375, -0.07718454, -0.22798067, 0.06774617, -0.030094463, -0.061885186, 0.17065558), target);\n\ttarget = MulAdd(c3, MF4x4(-0.010125824, 0.103072144, 0.1279997, 0.050760243, -0.044088285, -0.22203995, 0.14531416, 0.14237681, -0.09475585, -0.031036694, -0.06487942, -0.06685459, 0.044411752, 0.102043316, -0.02298463, 0.13894531), target);\n\ttarget = MulAdd(d3, MF4x4(0.078136265, 0.09181613, -0.0738238, 0.11729893, -0.0353268, -0.045860678, 0.015761107, -0.2393765, 0.16983439, -0.19721702, -0.04424538, -0.19921613, -0.15987086, -0.053151198, -0.021123309, 0.017046373), target);\n\ttarget = MulAdd(e3, MF4x4(0.12818108, 0.110156946, -0.312964, -0.039435193, -0.013887782, 0.023616536, -0.10395611, -0.10312674, 0.16714245, -0.011764259, 0.013490144, -0.27647623, 0.2815708, -0.077260576, -0.48344976, 0.45566863), target);\n\ttarget = MulAdd(f3, MF4x4(0.13948695, 0.16520035, -0.10736998, 0.11894474, 0.04268327, -0.06891544, -0.12176657, -0.010123764, -0.12706108, -0.09380579, 0.20031494, 0.013033486, 0.045285974, 0.24856701, 0.017390171, 0.008171071), target);\n\ttarget = MulAdd(g3, MF4x4(0.10275033, 0.044178646, -0.07312131, 0.032645803, 0.06477659, -0.23516645, 0.067890026, -0.10182108, -0.06428725, -0.30921656, 0.0689789, -0.12003374, -0.0762646, -0.054030195, -0.032199256, -0.01721715), target);\n\ttarget = MulAdd(h3, MF4x4(0.030139906, 0.34553978, -0.10791494, 0.10865321, -0.027569076, -0.3618259, 0.08197652, -0.18512005, -0.052365016, -0.2031043, 0.022174975, 0.112072885, -0.010841792, -0.056213304, -0.01889174, -0.021815313), target);\n\ttarget = MulAdd(i3, MF4x4(0.07941464, 0.10613619, -0.17120236, 0.11736614, -0.067713745, -0.04955237, 0.07884793, 0.028317591, -0.08577812, -0.23818578, 0.028565563, -0.09763123, 0.021688502, -0.014520022, -0.0022332326, 0.06084232), target);\n\ttarget = MulAdd(na1, MF4x4(0.17416538, -0.055337753, -0.086784735, -0.19203298, -0.022859348, 0.052769832, 0.01801499, 0.021157248, -0.003430855, 0.28804642, -0.12915777, -0.007967927, -0.062051505, -0.035990898, 0.14486398, -0.045551952), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.06697477, 0.21398899, 0.15626886, 0.09518566, -0.04784873, -0.043016933, 0.028028524, -0.2202801, 0.009475978, 0.023302117, 0.086636774, 0.08466187, 0.027134296, -0.12477319, -0.0066038263, -0.13377169), target);\n\ttarget = MulAdd(nc1, MF4x4(0.073002495, 0.019882409, 0.13465437, 0.095742665, 0.02877812, -0.07978304, 0.04799434, -0.08633761, 0.053829532, 0.028266488, 0.016496865, -0.017649772, 0.007504453, -0.08132136, -0.032084428, -0.06213031), target);\n\ttarget = MulAdd(nd1, MF4x4(0.22638816, 0.021791125, -0.05373062, -0.11881955, -0.16027248, 0.1248117, 0.09711232, 0.12850693, 0.1430744, 0.016074827, 0.28289175, -0.02841633, -0.071616, 0.123623274, 0.034697633, -0.04540337), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.32847854, 0.03362345, 0.1570183, -0.03396035, 0.010754796, 0.050622255, 0.1397359, -0.0694123, -0.08154277, 0.07327178, -0.19398023, 0.19549695, 0.016365696, -0.094511, 0.1962987, -0.1624034), target);\n\ttarget = MulAdd(nf1, MF4x4(0.058889385, -7.546345e-05, 0.24408817, 0.2477949, -0.09436003, 0.012569106, -0.008978321, -0.24843621, -0.05341815, 0.042606987, -0.034251466, -0.032898013, 0.024249421, -0.13529354, -0.009598037, -0.010006772), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.008468843, -0.096458435, -0.03669067, 0.07894181, -0.05088269, -0.02165748, -0.092161335, 0.027510274, -0.063793465, -0.016722348, 0.04017869, -0.08391233, -0.02473415, -0.002307846, -0.050660677, 0.13024652), target);\n\ttarget = MulAdd(nh1, MF4x4(0.106820665, -0.079599075, 0.119992964, 0.052486505, -0.13353048, 0.17465922, -0.06353679, 0.08188179, -0.06733727, -0.076294705, 0.06284326, 0.03576611, -0.07740004, -0.022198483, -0.02510401, 0.013377264), target);\n\ttarget = MulAdd(ni1, MF4x4(0.05380906, -0.13063669, 0.0502729, 0.08910364, -0.063234136, 0.12828088, -0.018460963, -0.075440355, 0.009794487, -0.06512296, -0.06974687, 0.055644996, -0.06760934, -0.051190425, 0.015056534, -0.076578766), target);\n\ttarget = MulAdd(na2, MF4x4(0.11306755, -0.14152966, 0.017199567, -0.07927823, -0.07652898, 0.049704805, 0.08694966, 0.023250965, -0.0097414795, 0.18923178, -0.009095949, 0.19534774, 0.07291539, 0.08211279, -0.03250076, -0.004571515), target);\n\ttarget = MulAdd(nb2, MF4x4(0.054340266, -0.06225541, 0.079742216, 0.08922402, 0.038130082, 0.03440285, -0.09214123, -0.079534784, -0.056612004, -0.11120479, -0.022306368, -0.12771012, -0.03189213, -0.06106299, 0.07653171, -0.017988201), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.01483085, -0.07492041, 0.09557763, 0.018514846, -0.063029274, -0.0042385045, 0.095838405, 0.25916252, 0.007743448, -0.03838592, -0.0017389939, -0.21538797, 0.030113945, 0.052143387, 0.042328425, -0.021920057), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.054446265, -0.15103836, 0.0337641, -0.17766273, 0.59812796, 0.16621551, -0.1396398, -0.10765044, -0.20137207, -0.058399063, 0.015214646, 0.08948676, 0.10885861, -0.07048783, -0.036039792, -0.0139106875), target);\n\ttarget = MulAdd(ne2, MF4x4(0.44016132, -0.15730812, -0.18961212, 0.054028135, 0.20437379, 0.22306874, -0.16968171, -0.3039991, 0.16289267, -0.13677506, 0.393345, 0.14750478, 0.030973857, -0.15711813, 0.29814583, -0.079453215), target);\n\ttarget = MulAdd(nf2, MF4x4(0.111330524, 0.034477763, -0.035662375, 0.0040829857, -0.21120815, -0.0015638896, 0.16000211, 0.11780304, 0.117233016, 0.027888954, -0.11743133, -0.10117133, 0.09182776, -0.15051128, -0.050599564, -0.07859627), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.07528831, 0.07377095, -0.012035711, 0.14641845, 0.19885515, -0.027350847, 0.15891771, -0.032186788, -0.18568198, 0.08516914, 0.0194725, 0.113679186, -0.07321446, -0.006814611, 0.024363022, -0.041401975), target);\n\ttarget = MulAdd(nh2, MF4x4(0.03670741, -0.05319249, 0.051785614, -0.16903248, 0.17325033, 0.1144905, 0.20689905, -0.018909017, 0.05619651, -0.01838476, -0.18826057, 0.04974103, -0.048423767, -0.038877293, -0.07345023, 0.112472065), target);\n\ttarget = MulAdd(ni2, MF4x4(0.010864774, 0.16668274, 0.068780385, 0.08308156, -0.034339216, 0.011294274, 0.14058082, -0.13272302, -0.049348705, -0.043334674, -0.055829912, -0.08535909, 0.0064629056, 0.023997806, -0.016735112, -0.011942476), target);\n\ttarget = MulAdd(na3, MF4x4(0.086142346, 0.2292178, -0.010219403, 0.0593476, -0.083634034, 0.12259535, -0.07327748, 0.024673425, -0.045079265, -0.02530776, 0.02248951, 0.008393773, 0.077611506, -0.11509985, 0.059175193, -0.042087976), target);\n\ttarget = MulAdd(nb3, MF4x4(0.04044624, 0.26444176, 0.01946967, 0.11972864, -0.17220415, 0.2603537, -0.14230311, -0.12086888, -0.0016741497, -0.15089966, 0.024180984, -0.15758742, 0.008668386, 0.031713035, 0.005303394, 0.12022453), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.010897276, 0.11987153, -0.13000685, 0.19799784, 0.078611284, -0.03090101, -0.053625334, -0.004184015, 0.010114269, -0.116182365, 0.0914601, 0.018809833, -0.06429345, -0.038116198, 0.07993482, 0.1780351), target);\n\ttarget = MulAdd(nd3, MF4x4(0.31573543, 0.27823564, -0.044864718, -0.06798315, -0.028597904, -0.12924606, 0.011233994, 0.014880406, -0.2519176, -0.013868341, 0.079987615, 0.24702698, 0.18798052, 0.12141515, -0.07526576, -0.09506396), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.11081675, 0.8964764, 0.23946989, 0.2148404, 0.021539357, -0.28177392, 0.11052179, -0.20627522, -0.17099018, -0.18601313, -0.14564027, -0.009660313, -0.074333444, 0.16385522, 0.2510857, -0.18929671), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.099951014, 0.15615578, 0.0872118, 0.085872896, -0.050993633, -0.034744546, 0.11654366, 0.099523395, -0.026343498, -0.06509954, -0.036859628, -0.064830914, -0.04815342, -0.045304768, 0.09685562, 0.034938518), target);\n\ttarget = MulAdd(ng3, MF4x4(0.38825148, 0.22435588, -0.038768243, 0.12891662, -0.020507365, 0.02433332, 0.10165365, -0.06321467, -0.27405342, 0.21058224, -0.056151077, 0.0893715, 0.2074139, 0.075082846, 0.05353601, 0.07657649), target);\n\ttarget = MulAdd(nh3, MF4x4(0.1015844, 0.17984828, 0.09339243, 0.03871665, 0.0317625, 0.09201323, 0.025318913, -0.14218892, -0.0707927, -0.08178308, 0.027679168, -0.0876631, 0.10087377, 0.120364726, 0.04277295, -0.045731667), target);\n\ttarget = MulAdd(ni3, MF4x4(0.028319372, -0.071746595, 0.06251333, -0.01576269, -0.010277642, 0.0071051405, 0.05409803, -0.031315167, -0.029280229, 0.062258944, 0.011841519, -0.035734437, -0.04741583, -0.03989569, 0.09797028, 0.015404385), target);\n\tconv2d_3_tf2[gxy] = target;\n}\n\n//!PASS 5\n//!DESC Conv-4x3x3x24\n//!IN conv2d_3_tf, conv2d_3_tf1, conv2d_3_tf2\n//!OUT conv2d_4_tf, conv2d_4_tf1, conv2d_4_tf2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_3_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_3_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_3_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_3_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 a3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = conv2d_3_tf2.SampleLevel(sam, pos, 0);\n\tMF4 f3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = conv2d_3_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(0.059486926, -0.04431698, 0.13264082, 0.054302923);\n\ttarget = MulAdd(a1, MF4x4(0.24241452, -0.100528784, 0.084611595, -0.08080715, -0.080256924, 0.32367775, -0.08305123, 0.14469719, -0.12750244, 0.011761777, -0.032910027, -0.09281193, -0.08873951, -0.048546325, 0.074183516, 0.045072023), target);\n\ttarget = MulAdd(b1, MF4x4(0.010939742, 0.098544136, 0.049292147, -0.22430013, -0.08015333, -0.031508088, -0.36106005, 0.12460627, 6.643176e-05, 0.018857447, 0.031020487, 0.12757821, -0.19238578, 0.30933842, -0.0045448663, 0.06171628), target);\n\ttarget = MulAdd(c1, MF4x4(-0.108574405, 0.09914063, -0.041833777, -0.039154854, 0.23846108, -0.1906441, -0.039134666, -0.25513512, -0.0050513004, 0.01407854, -0.022056133, -0.1184478, 0.066072665, 0.0785561, -0.020216426, -0.18292157), target);\n\ttarget = MulAdd(d1, MF4x4(0.12959838, 0.026440006, -0.0011596913, -0.31726244, -0.07676252, 0.027959237, 0.05895619, 0.12172022, -0.024327997, 0.21279183, 0.13060385, 0.13505119, -0.031498447, 0.16705142, 0.09434212, -0.023264466), target);\n\ttarget = MulAdd(e1, MF4x4(0.03360758, 0.31829336, 0.097372435, 0.066172324, -0.0873371, -0.07164736, -0.116273776, -0.15921108, -0.024977256, -0.11765985, -0.049553525, -0.032468632, -0.44380078, -0.08507502, 0.0327261, 0.019686563), target);\n\ttarget = MulAdd(f1, MF4x4(-0.25682133, 0.22201401, -0.18396896, -0.2420858, -0.09842399, 0.055608753, 0.25748596, 0.23556975, 0.026250778, 0.040285446, -0.07382262, 0.046680715, 0.18008539, -0.09701798, 0.19753018, -0.1137251), target);\n\ttarget = MulAdd(g1, MF4x4(0.11319255, -0.03126501, 0.07208281, 0.07807037, 0.004573684, -0.06784475, 0.1179848, 0.020895153, -0.06185304, 0.14311057, 0.046281323, 0.008271052, 0.026759004, 0.08469016, 0.028041905, -0.03963556), target);\n\ttarget = MulAdd(h1, MF4x4(-0.07507896, -0.11879082, -0.10246563, 0.035149485, -0.06570499, 0.1419997, 0.12152748, -0.12301691, 0.1762615, -0.23543337, -0.02367177, 0.09385406, -0.09039412, -0.009186869, 0.14061865, 0.034911305), target);\n\ttarget = MulAdd(i1, MF4x4(-0.090208784, 0.032296423, -0.027498133, -0.20286347, -0.23917037, 0.121174216, -0.17504627, -0.07068821, -0.023061762, 0.19171213, 0.08966504, 0.026315464, -0.01362642, -0.06647785, 0.013971816, 0.0012104128), target);\n\ttarget = MulAdd(a2, MF4x4(-0.161861, 0.014416416, -0.15422133, -0.038345456, -0.01926263, 0.05678733, -0.08679306, 0.12459709, 0.09292243, 0.086677715, 0.02556416, 0.00951428, 0.044389777, -0.098340936, -0.0022571671, -0.11948745), target);\n\ttarget = MulAdd(b2, MF4x4(-0.03355483, 0.18284513, -0.40516412, -0.08310888, 0.072258465, -0.031982094, -0.08194034, -0.20847136, 0.053745344, 0.14951777, -0.09529998, -0.02916081, 0.3393585, -0.05936077, -0.052002147, -0.09378778), target);\n\ttarget = MulAdd(c2, MF4x4(0.022535978, -0.013279629, -0.18767136, -0.1950165, -0.08899123, 0.06262896, -0.03814574, 0.06236617, 0.020036899, 0.11593139, -0.07205022, -0.07774045, -0.03650935, 0.123902336, -0.013660339, 0.0100182695), target);\n\ttarget = MulAdd(d2, MF4x4(0.41049683, -0.13173875, 0.30123588, -0.114987805, -0.032382715, 0.010663058, -0.160782, 0.080483064, -0.15371633, -0.13527736, -0.007258104, 0.038761474, 0.13176364, 0.03947656, 0.19999593, 0.017623467), target);\n\ttarget = MulAdd(e2, MF4x4(-0.36690325, -0.11513609, -0.07545344, -0.48683265, -0.06626628, -0.1879703, -0.26255432, -0.27202544, 0.23177272, 0.22095495, -0.48685974, -0.15628079, 0.034569174, 0.11856782, 0.09302504, 0.058153495), target);\n\ttarget = MulAdd(f2, MF4x4(-0.11159616, 0.3598168, -0.040168233, -0.017913736, 0.05656028, 0.080021836, -0.0057910853, 0.09907919, -0.018118931, 0.104529314, -0.06623353, -0.05187142, 0.042655, -0.06037208, -0.13814276, -0.13877125), target);\n\ttarget = MulAdd(g2, MF4x4(0.07689434, -0.02957611, 0.059183944, 0.18732947, -0.012570976, -0.050425645, -0.04667911, -0.01714018, -0.1811952, -0.10611838, -0.06517356, 0.042284686, 0.14040054, -0.0044124937, 0.088569656, -0.09631004), target);\n\ttarget = MulAdd(h2, MF4x4(-0.041964065, -0.03648969, -0.06585285, -0.14997002, 0.14896095, 0.10991836, 0.035850056, -0.20629084, 0.20721185, 0.009481607, 0.059676703, 0.029152349, 0.048996776, 0.013181292, 0.012264018, 0.11202655), target);\n\ttarget = MulAdd(i2, MF4x4(-0.0025412547, 0.17166725, -0.029921697, -0.095596656, -0.01471627, -0.073273055, -0.07374642, 0.12182166, -0.032026254, 0.026899092, 0.010827608, 0.025221692, -0.023959257, 0.029916659, -0.082857594, -0.08647804), target);\n\ttarget = MulAdd(a3, MF4x4(0.0033231457, 0.025150223, -0.03726759, 0.00018312124, 0.07642118, 0.014045985, 0.12287268, -0.004507867, 0.020656586, -0.047215212, 0.06898793, -0.07950119, -0.012468573, -0.048340544, -0.018446337, 0.027170202), target);\n\ttarget = MulAdd(b3, MF4x4(0.10788957, -0.12736209, -0.013289646, -0.022522524, 0.021718934, 0.020739023, -0.036677744, -0.020026676, 0.02461253, -0.092075236, 0.020083528, 0.082641564, 0.075953014, -0.27012607, 0.008537513, -0.014810857), target);\n\ttarget = MulAdd(c3, MF4x4(-0.08193019, 0.12357896, -0.06672417, -0.0010150888, 0.04195979, 0.0720302, -0.04809725, 0.055789728, 0.029061116, 0.10846966, -0.04579666, -0.01037483, 0.12933455, -0.053652834, 0.016493477, -0.0990554), target);\n\ttarget = MulAdd(d3, MF4x4(-0.09004879, -0.07116469, -0.06171522, 0.03694901, 0.13067593, 0.014719711, 0.120604895, -0.16505042, -0.13472416, 0.21027507, -0.022027668, 0.07578348, 0.14807276, -0.08320662, 0.0676947, 0.015872132), target);\n\ttarget = MulAdd(e3, MF4x4(-0.013147318, -0.13990307, 0.1424338, 0.115681306, -0.096111625, -0.044169232, 0.11619919, -0.12927286, 0.2216329, -0.3785249, 0.11881006, 0.05548364, 0.042547792, 0.01991183, 0.18072614, -0.12253586), target);\n\ttarget = MulAdd(f3, MF4x4(0.00507553, 0.06520682, -0.046696853, 0.09873781, -0.007926131, -0.046024855, 0.007177778, 0.067222506, 0.061948813, -0.049535032, -0.12687485, -0.07812312, 0.10864703, -0.005380493, -0.015591806, -0.12866366), target);\n\ttarget = MulAdd(g3, MF4x4(0.019687995, -0.08136337, -0.023699999, -0.0323895, 0.12587894, 0.08024744, 0.08909513, -0.0005001073, -0.11161824, -0.016753444, 0.044748716, -0.11397051, 0.06295226, -0.0628124, 0.009678967, -0.1027119), target);\n\ttarget = MulAdd(h3, MF4x4(-0.032145683, -0.008628118, -0.06487987, -0.010637064, -0.09447084, -0.20124236, -0.122117415, -0.12410895, 0.10209157, 0.068115994, 0.19661677, 0.043781675, 0.11948784, 0.15049894, 0.021160888, -0.21148479), target);\n\ttarget = MulAdd(i3, MF4x4(-0.0033451298, 0.062234465, -0.03359657, 0.077990666, -0.011020787, 0.050606657, -0.11445393, -0.057500027, -0.10895705, -0.05061424, -0.0075792223, 0.0826572, 0.03529453, -0.04615097, -0.049622457, -0.02728514), target);\n\ttarget = MulAdd(na1, MF4x4(-0.047170192, -0.063528895, 0.02639375, 0.06133726, 0.07981049, 0.034422956, -0.13669443, -0.027895411, -0.010747354, -0.0295917, 0.023415035, 0.104463466, -0.011863274, 0.12199949, -0.056722328, -0.0074905828), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.16876027, 0.042861532, -0.042729948, 0.13059488, -0.009925716, -0.16374534, 0.1027359, -0.0023175783, -0.08118241, -0.18233776, 0.003640569, -0.04086481, -0.07530675, 0.046155393, -0.09668895, -0.040498324), target);\n\ttarget = MulAdd(nc1, MF4x4(0.0208792, -0.041296285, 0.06495765, -0.014825306, -0.09760564, 0.143414, -0.013952, 0.012976426, 0.07446454, -0.069237985, -0.002300383, 0.039793592, 0.10446527, -0.15101886, 0.041385327, 0.045380514), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.12573302, 0.26293075, 0.021182856, 0.02212639, -0.00491492, -0.09508161, -0.17054123, 0.0334656, -0.14494689, -0.13223654, -0.16647294, -0.20494382, 0.035838082, -0.02903287, -0.07826274, 0.10065476), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.19727297, -0.2761233, 0.052405518, 0.060891774, 0.35287574, -0.112983346, -0.1780347, 0.29627487, 0.15366785, -0.0058370745, -0.12529264, 0.290549, -0.0019844156, 0.10950049, -0.11683605, -0.31868842), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.065610245, 0.11033488, 0.0847139, 0.08285523, 0.12131332, 0.03140868, 0.019243333, -0.023314001, 0.12372892, -0.048462555, 0.07601431, -0.21340725, 0.094367005, -0.17915425, -0.16658746, -0.113485895), target);\n\ttarget = MulAdd(ng1, MF4x4(0.033004273, -0.070222795, -0.22679015, -0.11107499, -0.02167688, 0.039476246, 0.023125345, -0.06782998, 0.039133113, -0.093893945, -0.0107462, 0.013814576, -0.050011426, 0.04277595, -0.011378756, 0.0350182), target);\n\ttarget = MulAdd(nh1, MF4x4(-0.086395636, 0.2250359, 0.0071665626, -0.14477696, 0.08346748, -0.104350545, 0.066446565, 0.07878673, -0.09608493, 0.034221467, 0.056161933, 0.1631777, -0.04652218, -0.16019695, -0.14100033, 0.0012826526), target);\n\ttarget = MulAdd(ni1, MF4x4(0.010050049, 0.069934174, -0.019675957, -0.08841736, -0.084199436, 0.038151644, 0.08524713, -0.010469705, 0.08203982, -0.16461739, 0.0085432455, -0.018949067, -0.03917674, -0.06079645, -0.08174396, -0.06611958), target);\n\ttarget = MulAdd(na2, MF4x4(-0.11630934, 0.06403295, -0.015545311, 0.04184985, -0.010742663, 0.09900252, 0.16177145, -0.08190314, 0.026068239, -0.11228535, 0.07040219, 0.026017435, 0.027691854, 0.05901074, 0.063722596, 0.061167255), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.079639085, -0.073422454, 0.022079231, 0.099202864, -0.0395308, -0.22311744, 0.2558813, 0.1212435, 0.015039178, 0.22544971, 0.18809341, 0.023819689, 0.031049373, 0.14752339, 0.021717936, -0.07462568), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.04292503, -0.049489103, 0.005655617, -0.072831966, -0.13834368, 0.096430235, 0.11431599, 0.034313705, -0.081960544, -0.05398357, 0.17004605, 0.018943321, -0.057367492, 0.109905675, 0.03622088, 0.10881282), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.10108816, 0.022445837, -0.16971505, 0.15245505, -0.049302544, -0.038824387, 0.1386521, -0.02240345, 0.08463246, 0.03382031, 0.029146284, -0.022780763, -0.10378809, 0.12192778, -0.10930472, -0.13424326), target);\n\ttarget = MulAdd(ne2, MF4x4(0.011400255, 0.1136756, -0.12854446, -0.02158332, 0.041146938, 0.23310283, 0.20242867, 0.13700607, 0.06842123, -0.2627286, 0.15257023, 0.109742284, -0.06880218, -0.12513116, 0.36323714, -0.08309059), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.06563699, -0.19518705, -0.16528322, 0.0077345036, 0.07426379, 0.01273623, -0.02538561, -0.13874102, -0.17633066, -0.011773621, 0.11594737, 0.036010545, -0.100552164, 0.17657241, 0.008071872, 0.15612179), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.092973836, 0.082076035, -0.10813946, 0.020986248, -0.0980453, 0.088257805, 0.12294689, 0.06353175, -0.0555235, -0.07203055, 0.0012230835, 0.031788144, 0.09232316, 0.07080032, -0.13878204, 0.1324983), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.09405708, 0.08027049, -0.029044298, 0.004413014, -0.031831603, -0.10639057, 0.22791572, 0.29128549, -0.019287571, -0.07344137, -0.06703681, 0.06482271, -0.16929443, 0.18714571, 0.0076980256, -0.3553443), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.08177233, -0.03985184, -0.05898491, -0.084218055, 0.13517176, -0.064535744, 0.023212295, -0.104104936, 0.06286191, -0.0183956, -0.014526215, 0.022721317, 0.13015802, -0.012955069, 0.04760935, -0.024741875), target);\n\ttarget = MulAdd(na3, MF4x4(-0.11811978, -0.258122, -0.0524529, 0.013679023, 0.3381383, -0.15303107, 0.15624695, -0.041717052, -0.09521123, -0.02555037, -0.055241242, 0.1292656, -0.053962484, 0.061827328, 0.007066458, -0.030455371), target);\n\ttarget = MulAdd(nb3, MF4x4(0.011406645, 0.03625852, 0.17662852, 0.22849263, 0.008301044, -0.06586813, 0.06535347, -0.1422378, -0.21197955, 0.09594126, -0.019065345, 0.07993183, -0.18870543, -0.100329205, 0.106410205, 0.19904357), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.010716086, 0.019676654, 0.14609855, 0.023858106, -0.09101523, 0.04618942, 0.019114424, 0.063025944, 0.017177893, -0.17157322, 0.041316323, 0.008979556, -0.012944043, 0.00247818, 0.06370907, 0.21294525), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.35886058, -0.21411636, -0.102139756, -0.091692075, 0.06896005, 0.031774938, -0.11289269, 0.018020328, -0.07621171, -0.20134668, -0.03170399, -0.15741387, 0.21397352, 0.020581603, 0.058037966, -0.060088705), target);\n\ttarget = MulAdd(ne3, MF4x4(0.08237236, -0.40777692, -0.30334964, 0.17960687, 0.15861799, 0.38422614, 0.07123272, -0.14411296, -0.18338335, 0.20555314, -0.24229437, 0.11125418, -0.25821567, 0.21951115, -0.0689347, 0.30991623), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.1809837, 0.2020823, 0.18093042, -0.28097653, 0.04832372, 0.05197796, 0.0411827, -0.038122583, -0.12748396, 0.2147528, 0.03581702, -0.06162546, 0.35705167, -0.17073934, 0.05283743, -0.1553281), target);\n\ttarget = MulAdd(ng3, MF4x4(0.049231995, 0.104612015, 0.13789916, 0.11476952, -0.08613189, 0.12533712, -0.11062187, -0.06180441, 0.0076576895, -0.07606035, -0.13825357, 0.05541409, -0.11110464, 0.027096856, -0.059329435, 0.07901976), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.07326118, -0.05398769, 0.3154168, 0.25846845, 0.20782405, 0.157769, -0.02310168, 0.017850745, -0.08339611, 0.14059362, -0.12403927, 0.023322403, -0.19284059, 0.0866216, -0.06948787, 0.019149296), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.035457414, -0.22270168, 0.16388698, -0.103444144, -0.18057363, 0.2918497, 0.10467282, -0.0905526, 0.13966475, -0.098633334, -0.01834713, -0.035242856, -0.05306878, 0.02205429, 0.07744791, 0.10596783), target);\n\tconv2d_4_tf[gxy] = target;\n\t\n\ttarget = MF4(0.045264397, 0.05760936, 0.027744984, -0.03773891);\n\ttarget = MulAdd(a1, MF4x4(0.19755663, 0.0316557, -0.026239445, -0.02093631, 0.34920403, 0.089713775, 0.15791516, -0.07875456, -0.10947356, 0.0650924, -0.018307874, 0.10422799, -0.06709603, -0.11965746, 0.02718723, 0.011129028), target);\n\ttarget = MulAdd(b1, MF4x4(-0.11617485, -0.031335115, 0.19744423, 0.10993791, 0.019927517, 0.3689939, -0.09384358, 0.15150148, -0.08009817, 0.0921147, -0.010306458, 0.10003431, -0.041360963, 0.29798675, -0.1715826, 0.19668113), target);\n\ttarget = MulAdd(c1, MF4x4(-0.053691022, 0.18052101, -0.046081945, 0.19882767, 0.22020999, 0.34823263, 0.106327124, -0.022915896, 0.01570857, -0.007507703, -0.012257527, 0.036691625, 0.086023636, 0.050882597, -0.05192003, -0.05078049), target);\n\ttarget = MulAdd(d1, MF4x4(-0.07258528, -0.19264953, 0.0077820197, 0.15891895, -0.02311384, -0.008074125, 0.3110597, 0.049998533, 0.02290246, 0.03217235, 0.15498875, -0.03103216, 0.24216467, 0.13539337, -0.051235467, -0.06826195), target);\n\ttarget = MulAdd(e1, MF4x4(-0.110576056, -0.3145707, -0.13334544, -0.005337209, -0.038422424, 0.13821185, -0.15107699, 0.14623423, -0.08636853, 0.107583255, 0.17422204, 0.18080167, 0.050008878, -0.12324271, 0.2247043, -0.27508256), target);\n\ttarget = MulAdd(f1, MF4x4(-0.05137364, 0.16223, -0.03729107, 0.31266937, -0.17589277, 0.21317652, -0.33287808, 0.21178558, -0.045284536, 0.07560065, 0.05269868, 0.14920329, 0.16866954, -0.1268599, 0.20590475, -0.011014125), target);\n\ttarget = MulAdd(g1, MF4x4(0.034846842, 0.2524156, 0.03403225, -0.11323429, -0.14184852, 0.017702477, -0.02463918, 0.10044771, 0.19502714, -0.0025532132, 0.053394504, 0.26317486, -0.027531786, 0.17660192, -0.0288518, 0.10305002), target);\n\ttarget = MulAdd(h1, MF4x4(0.0015593453, 0.080029555, -0.1503097, 0.18303742, -0.20101264, -0.21629538, -0.22573662, 0.083415814, -0.17538182, -0.14721964, 0.14281827, 0.059842914, 0.011950429, 0.24764334, -0.1454325, -0.30143398), target);\n\ttarget = MulAdd(i1, MF4x4(-0.035138246, -0.21716589, -0.16935606, -0.10491116, -0.2616234, -0.65694314, -0.055407632, -0.37251663, -0.15059815, -0.070271164, 0.041637342, 0.012102054, -0.1284768, -0.045593116, 0.053494472, -0.046751507), target);\n\ttarget = MulAdd(a2, MF4x4(-0.12646478, -0.119142495, 0.0041090506, 0.16849291, 0.00027152186, 0.0060362555, -0.055415455, -0.010880626, -0.017593162, -0.012767872, 0.017386466, -0.07673884, -0.12813187, -0.06382475, -0.017622227, -0.030992843), target);\n\ttarget = MulAdd(b2, MF4x4(0.2330042, 0.23233213, -0.064918295, -0.028516663, 0.0043700417, -0.009412538, 0.020097204, 0.078027494, 0.22039704, 0.09681993, -0.1377131, 0.04463947, 0.053339735, -0.015651379, 0.013501266, 0.108578116), target);\n\ttarget = MulAdd(c2, MF4x4(0.23399013, 0.055069428, 0.0113888625, 0.0061372546, -0.07836111, -0.034460228, 0.0017155824, -0.088409096, 0.03733338, -0.17709526, -0.09718914, -0.25720972, 0.0175349, 0.15622771, -0.1188024, 0.018442187), target);\n\ttarget = MulAdd(d2, MF4x4(0.06318714, 0.061475955, 0.060729396, -0.2142427, -0.10224866, 0.034940694, 0.19492944, 0.018143132, 0.07064079, -0.22845416, 0.010652238, -0.0011233883, 0.029130183, 0.17482844, -0.009811812, 0.019755777), target);\n\ttarget = MulAdd(e2, MF4x4(-0.21866481, 0.21452273, -0.5259575, -0.039219536, 0.15874244, -0.057900973, 0.10559354, 0.23824032, 0.108966984, -0.098509155, 0.007014109, -0.19821534, -0.05215934, 0.10909223, 0.100663096, -0.06883611), target);\n\ttarget = MulAdd(f2, MF4x4(-0.12868437, 0.006826078, -0.21385023, 0.069496915, -0.06559356, 0.090547845, -0.07395987, -0.06983689, 0.06552238, -0.12867814, -0.08192026, -0.33435416, -0.051290937, -0.02937074, 0.090245195, -0.026612237), target);\n\ttarget = MulAdd(g2, MF4x4(0.23456517, 0.27903032, -0.039212193, -0.012552891, -0.19781788, -0.035103757, -0.009250316, 0.10727226, 0.19742231, -0.079642996, -0.2613758, -0.15201536, 0.102801695, -0.0107969325, 0.16421579, 0.12108303), target);\n\ttarget = MulAdd(h2, MF4x4(-0.081254065, -0.088084355, -0.091935016, 0.24067412, -0.020433908, -0.01316852, -0.06662833, -0.2533817, 0.14042647, -0.02623474, 0.05427906, 0.041403648, -0.13581693, -0.08902222, -0.15670143, 0.013441458), target);\n\ttarget = MulAdd(i2, MF4x4(-0.015764505, -0.113010205, -0.15281607, -0.077271774, 0.0904112, 0.09933737, 0.067184925, 0.2099568, -0.101301536, 0.06434189, -0.0758522, -0.12554163, 0.06781772, 0.007166253, -0.085833766, 0.06006488), target);\n\ttarget = MulAdd(a3, MF4x4(-0.0008048365, 0.0912284, -0.0055085155, 0.023269827, -0.022154478, 0.08539601, 0.035023473, -0.0037330675, 0.11452262, 0.047892746, 0.008300871, -0.01195116, 0.047538597, -0.10830887, 0.05510819, -0.08836116), target);\n\ttarget = MulAdd(b3, MF4x4(-0.038602248, 0.023333155, 0.017770592, -0.1674776, 0.06629619, 0.083431914, 0.026809458, 0.08592056, 0.14014852, -0.14666164, 0.019641537, -0.0573306, -0.020499265, 0.007868977, -0.04190651, 0.020347582), target);\n\ttarget = MulAdd(c3, MF4x4(-0.1610257, 0.21653429, 0.10658098, 0.15106596, 0.029077698, 0.16445225, 0.15524676, 0.09390834, 0.096011646, -0.032807898, -0.09418951, -0.0093525015, 0.06159448, -0.009395444, -0.10014662, -0.030301452), target);\n\ttarget = MulAdd(d3, MF4x4(-0.022683617, -0.23651919, -0.031805664, 0.023116864, -0.07386424, 0.20458803, 0.08983447, -0.08244156, 0.08310062, 0.14591648, 0.17395934, 0.0062589166, 0.22174175, 0.14258352, -0.028493408, -0.115363955), target);\n\ttarget = MulAdd(e3, MF4x4(-0.08310355, -0.17647965, -0.19287375, 0.10848365, 0.120546475, -0.1464013, -0.038455628, 0.10530652, 0.49538115, 0.023421936, 0.3173384, 0.058539134, -0.27795956, 0.08117526, 0.033342082, -0.12135774), target);\n\ttarget = MulAdd(f3, MF4x4(-0.08346938, -0.034818605, 0.06265251, 0.09470142, -0.014027538, 0.013816392, -0.047068585, -0.007864913, -0.073640525, -0.1490151, -0.09421087, -0.07231172, 0.21453248, -0.053285554, 0.09661593, -0.07566676), target);\n\ttarget = MulAdd(g3, MF4x4(-0.08119892, -0.011698777, -0.0014542739, -0.0031197777, -0.093343884, 0.07836053, 0.14061041, 0.032417424, 0.032266736, -0.039402176, 0.0857551, -0.14606103, -0.106497854, -0.021479463, -0.036599685, 0.04007321), target);\n\ttarget = MulAdd(h3, MF4x4(0.011121453, -0.020399215, 0.016996361, 0.048273075, -0.07153608, -0.044302233, -0.0035937368, 0.16915803, -0.014105862, 0.1021961, 0.15072922, 0.015028268, -0.009132996, -0.06612329, -0.034465823, -0.142786), target);\n\ttarget = MulAdd(i3, MF4x4(-0.020469163, -0.117958315, 0.0012601769, 0.007204419, 0.009460007, -0.021850191, -0.014184652, 0.06922846, -0.1432164, -0.02172806, -0.0671699, -0.039830353, 0.011462847, -0.021253375, 0.084333375, 0.026236529), target);\n\ttarget = MulAdd(na1, MF4x4(-0.32116294, 0.022814747, 0.053154226, 0.08573102, 0.24082868, -0.11634813, -0.12103037, -0.072189964, 0.07916793, 0.005124598, -0.038430523, -0.020428248, -0.074155636, 0.0026447256, -0.12052403, -0.0008143328), target);\n\ttarget = MulAdd(nb1, MF4x4(0.15720156, 0.12637223, -0.014097743, -0.1463337, -0.11050782, -0.1272711, -0.14383449, -0.18176568, 0.016586874, -0.07671649, 0.061175086, -0.011885735, 0.16967547, -0.19338857, 0.033413097, -0.15828142), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.04272862, 0.08448119, 0.03642693, 0.013086318, -0.18102542, -0.13177295, -0.12725672, 0.033150475, -0.022273265, -0.1913372, 0.12102487, -0.06349284, 0.02544458, -0.17942795, 0.13517797, -0.03200014), target);\n\ttarget = MulAdd(nd1, MF4x4(0.037924215, 0.18611626, -0.17951478, 0.13935459, 0.27325365, -0.083892785, -0.022289941, 0.14084025, -0.106356315, 0.046254314, -0.17703468, 0.116976924, -0.08896167, -0.0025314027, 0.010913456, -0.070031345), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.28527796, 0.19547825, -0.30854046, -0.033967514, 0.060653128, -0.019419098, -0.0060284995, -0.0987247, 0.07500941, -0.023585685, -0.03395071, -0.17988594, 0.21953014, 0.4072299, -0.031897858, -0.18284276), target);\n\ttarget = MulAdd(nf1, MF4x4(0.06912873, -0.05407648, 0.008376532, 0.020522904, -0.026434029, 0.09916825, 0.030747496, 0.022514053, 0.25722584, 0.115966186, 0.08143656, 0.015693888, 0.1200375, 0.11970545, 0.19118182, 0.05830196), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.03685362, -0.12470895, -0.0010968394, 0.021243107, 0.054362122, 0.00057743577, -0.016307356, -0.124212846, -0.1504553, 0.18175974, -0.14346407, -0.1288348, 0.004379253, -0.09421467, 0.07276572, 0.01464248), target);\n\ttarget = MulAdd(nh1, MF4x4(-0.0058593387, -0.009850785, 0.08837556, -0.13175677, -0.02959981, 0.22543302, 0.08877934, 0.10847382, 0.105746165, 0.07286193, -0.1591772, -0.07605538, 0.16931008, 0.12505956, -0.02318999, 0.3341336), target);\n\ttarget = MulAdd(ni1, MF4x4(0.07958676, 0.019705648, 0.17511873, -0.027326066, -0.049889054, -0.08413224, -0.0232099, -0.16867599, 0.010381808, -0.015460935, 0.04096288, -0.013190291, 0.12450602, 0.065210946, 0.015979856, 0.15937561), target);\n\ttarget = MulAdd(na2, MF4x4(-0.10023914, -0.05083627, 0.09159179, 0.104829505, 0.08269442, 0.055139758, -0.060481716, -0.040459175, 0.16207811, -0.1342935, 0.0010139308, -0.13080461, 0.04637847, -0.111120075, -0.017309861, 0.021282183), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.0018206073, -0.13991879, 0.08375063, -0.003037848, -0.17680502, -0.20550339, 0.16136415, -0.06376335, -0.0617298, 0.15906328, -0.057181396, -0.028893461, 0.04224926, -0.0398277, -0.19131757, -0.16473022), target);\n\ttarget = MulAdd(nc2, MF4x4(0.093972325, 0.0698625, 0.07116559, 0.014768529, -0.097781256, 0.15581349, 0.03573931, 0.22741152, -0.091118366, 0.028577322, -0.026862804, 0.0152023, -0.23760842, 0.14840253, -0.14937884, 0.042642627), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.2281663, 0.22290257, 0.017739927, 0.12094125, 0.03124976, -0.00534154, -0.24323007, -0.088304035, 0.2465856, 0.16869143, -0.06888532, -0.09435835, 0.049901593, 0.12926158, 0.022874845, -0.02944982), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.066828735, -0.04649895, 0.28869498, -0.09773703, -0.056571167, 0.48939937, -0.56230384, -0.034113284, -0.13833, 0.039226096, -0.12087815, 0.032742836, 0.040849674, -0.017160047, -0.11052594, 0.246754), target);\n\ttarget = MulAdd(nf2, MF4x4(0.04952853, -0.090852216, 0.034561165, 0.038246352, -0.19297872, 0.054810636, 0.019495303, 0.2522964, -0.19981322, -0.07192788, -0.12085502, -0.028823836, -0.19763254, -0.20398128, -0.14728573, -0.11571746), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.22692326, -0.050723083, 0.052394703, 0.061108653, 0.086359546, 0.25432214, -0.1922104, 0.07316734, -0.12277421, -0.0070557455, 0.021929247, 0.09811275, -0.10974717, -0.1871087, 0.1836082, -0.101442546), target);\n\ttarget = MulAdd(nh2, MF4x4(0.12952654, 0.126504, -0.07590766, -0.022820955, 0.40705776, 0.6374981, -0.5181212, 0.38906044, -0.10114032, -0.24955663, 0.30309865, -0.13581154, 0.048173904, -0.061500076, 0.014717425, -0.13521792), target);\n\ttarget = MulAdd(ni2, MF4x4(0.06257947, -0.06779901, 0.043823577, 0.13284041, 0.020754592, 0.042710133, -0.1584648, 0.049175818, 0.022709293, -0.1911205, 0.030108612, -0.15437542, 0.05411346, 0.12631242, -0.017832479, 0.0029719612), target);\n\ttarget = MulAdd(na3, MF4x4(-0.30879283, -0.13608143, 0.051477402, -0.0146274315, -0.17261262, 0.014548273, 0.013784603, -0.082064405, -0.054273766, 0.050572615, -0.08670705, 0.048421264, 0.0028941107, -0.049762383, -0.08087372, 0.03134621), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.12345668, -0.0679132, -0.06099901, -0.09764733, -0.1938452, 0.007824728, 0.21290497, 0.07214579, -0.11728738, -0.01631362, 0.18290576, 0.11172875, 0.0070077768, -0.31685776, 0.20877774, -0.068262406), target);\n\ttarget = MulAdd(nc3, MF4x4(0.023581397, 0.21787596, 0.24790402, 0.1827894, -0.12552118, -0.15526615, -0.049397513, -0.09088568, 0.02361005, -0.1624447, 0.10663829, -0.08762141, -0.089876376, -0.23469001, -0.22833428, -0.08547564), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.20836076, -0.38739493, -0.08088587, 0.056517366, -0.19016425, 0.18150248, -0.20127869, -0.0034698115, -0.12240914, -0.16373073, -0.23683731, 0.08775501, -0.115361534, 0.058962952, 0.03591275, -0.12650393), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.12940276, -0.20929182, 0.1972825, -0.09083828, -0.062463745, 0.18738677, -0.12602556, -0.102121696, -0.71687216, 0.005637694, -0.51085055, -0.182672, 0.21876547, 0.032868937, 0.12119801, -0.034960978), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.2834514, 0.5645042, -0.40262035, -0.050943233, -0.06192488, 0.27314487, 0.2216658, 0.241159, 0.19821955, 0.07347663, 0.12771457, 0.09401408, 0.0923556, 0.037260618, 0.14539954, 0.20723365), target);\n\ttarget = MulAdd(ng3, MF4x4(0.17254238, 0.17086907, 0.1689637, -0.12215918, 0.019369515, -0.101492874, -0.0068981387, -0.052212972, -0.09072614, 0.06295019, -0.03507004, 0.020812936, 0.049310055, 0.041793864, -0.1676009, -0.020666601), target);\n\ttarget = MulAdd(nh3, MF4x4(0.12045707, 0.34878096, -0.42983723, 0.00031615017, -0.1935727, 0.04406262, 0.14843978, -0.09603145, 0.27862465, 0.1575749, -0.19306137, 0.2065606, -0.09507491, -0.008450778, -0.18955202, 0.099690795), target);\n\ttarget = MulAdd(ni3, MF4x4(0.039927684, 0.074257486, 0.034648035, -0.05261268, -0.09017409, 0.20786566, 0.06129257, 0.1432679, 0.13264295, -0.08895135, 0.09662802, -0.06903006, 0.12193372, 0.059526477, 0.059548043, -0.03190614), target);\n\tconv2d_4_tf1[gxy] = target;\n\n\ttarget = MF4(-0.05222755, 0.09198729, -0.07302347, 0.0022074024);\n\ttarget = MulAdd(a1, MF4x4(0.07583615, -0.048960842, 0.013508587, 0.2201662, 0.0375764, 0.27756596, -0.33754793, -0.38809955, -0.21281771, 0.15472671, 0.02073204, -0.050901294, 0.090472914, -0.047557913, -0.017766517, -0.20457055), target);\n\ttarget = MulAdd(b1, MF4x4(0.17282517, -0.18378912, 0.13851488, 0.021213405, -0.36854526, 0.37494987, -0.22338714, -0.17190737, -0.13889556, 0.16321859, 0.009137597, -0.16061524, 0.10725205, 0.047671694, 0.00692477, -0.20811509), target);\n\ttarget = MulAdd(c1, MF4x4(-0.15370452, 0.03701021, -0.055506952, -0.07852536, 0.09814061, 0.15283902, -0.048923336, 0.10439438, 0.05341204, -0.04028067, -0.050656542, 0.08114064, 0.1721227, -0.064678125, -0.07158856, 0.04002012), target);\n\ttarget = MulAdd(d1, MF4x4(-0.02824745, 0.29039058, 0.25719696, 0.33553144, 0.07964746, -0.08963374, -0.26119536, -0.1704102, 0.114965275, 0.0677081, 0.027690304, 0.0298201, 0.10237492, -0.18169363, -0.12240578, -0.067747764), target);\n\ttarget = MulAdd(e1, MF4x4(-0.05635207, -0.013902026, 0.15410937, -0.07788553, 0.09099828, -0.018942324, 0.03290936, -0.0029388326, 0.018940244, 0.011952412, 0.011450913, -0.07999776, -0.21413402, 0.39397267, -0.09774473, -0.2009581), target);\n\ttarget = MulAdd(f1, MF4x4(0.10084101, -0.086656086, 0.13495307, -0.028954845, 0.05104348, -0.046465315, -0.037925158, 0.10368827, -0.14589089, 0.12413491, -0.007988239, -0.02158783, 0.10073373, -0.0029589783, -0.3387392, 0.19062865), target);\n\ttarget = MulAdd(g1, MF4x4(0.076070085, 0.12063033, -0.07693161, 0.13905032, -0.07355619, -0.23172334, 0.05373458, -0.06742532, 0.01403963, -0.021842232, 0.101363756, -0.0811199, 0.088289686, -0.10678228, -0.08785652, -0.08524422), target);\n\ttarget = MulAdd(h1, MF4x4(-0.063252464, 0.122554146, -0.08701854, -0.013642947, 0.25842702, -0.113629796, 0.18287642, 0.2543394, -0.008996402, 0.14150178, -0.018443773, -0.037387278, 0.01677981, 0.09373098, -0.03942739, 0.020894075), target);\n\ttarget = MulAdd(i1, MF4x4(0.06455971, -0.060106214, -0.07037024, -0.051795334, 0.033154495, -0.25538102, 0.20138124, -0.15417135, -0.11027817, 0.027104143, 0.075549774, 0.021436706, 0.04445013, 0.12956707, -0.13284694, 0.03516967), target);\n\ttarget = MulAdd(a2, MF4x4(0.009175639, 0.25271195, -0.0853253, -0.036355734, 0.10765164, 0.0524366, -0.038031954, -0.012370962, 0.038269047, -0.0074043465, -0.055629972, -0.028956192, -0.10555365, 0.053293, 0.04761788, 0.19511466), target);\n\ttarget = MulAdd(b2, MF4x4(-0.026226144, 0.45355338, -0.2787842, 0.40786192, 0.0040905946, -0.01837184, -0.009942586, 0.2053553, -0.0030270698, 0.069373004, 0.07934941, -0.03093551, 0.16749686, 0.050042853, -0.11040056, -0.073083684), target);\n\ttarget = MulAdd(c2, MF4x4(0.05996956, -0.016178278, 0.039540496, -0.027844483, -0.06289786, -0.046466228, 0.19139567, -0.073992915, 0.06776269, -0.019077418, 0.14830731, 0.095275655, -0.14347468, 0.1072097, 0.005600533, 0.04901071), target);\n\ttarget = MulAdd(d2, MF4x4(-0.16952017, -0.032340128, 0.19480783, 0.2601324, 0.29126725, -0.0715444, -0.009702548, 0.0042752293, 0.024718119, -0.08628732, -0.064047016, -0.116904415, -0.06644218, 0.09953292, -0.033268385, 0.17125584), target);\n\ttarget = MulAdd(e2, MF4x4(0.3325542, -0.03779118, 0.33856392, 0.3304049, 0.104141004, -0.053430308, 0.31669936, 0.0130112395, 0.09034627, -0.02017166, -0.025744867, 0.026532227, 0.0200407, -0.08722534, -0.30203685, -0.14907038), target);\n\ttarget = MulAdd(f2, MF4x4(-0.01891194, 0.093512826, 0.026973069, -0.24845296, -0.072510146, 0.025618952, 0.19024812, -0.07557172, -0.027113652, -0.03626637, 0.2683275, -0.10471766, -0.008031393, 0.13384898, 0.00395866, 0.020902868), target);\n\ttarget = MulAdd(g2, MF4x4(-0.041550912, 0.08089579, 0.026400283, 0.017546514, 0.10747152, 0.07966492, 0.02695042, 0.014157312, -0.13807489, -0.12708282, -0.10057461, 0.014437817, 0.26250824, -0.16103023, -0.13342577, 0.05060978), target);\n\ttarget = MulAdd(h2, MF4x4(0.06584065, -0.035929736, 0.0042849337, -0.10942049, -0.16394515, 0.08045988, 0.13154416, -0.0028894013, 0.0023928252, 0.04469802, -0.10695226, 0.05558777, -0.25354344, 0.14010456, 0.05542217, -0.114946045), target);\n\ttarget = MulAdd(i2, MF4x4(0.050993685, 0.13932824, 0.0033797733, -0.035310924, 0.022385782, 0.017365059, -0.17256701, -0.07757648, -0.0912558, 0.01864556, 0.13062927, -0.07577928, -0.07418382, 0.19597183, 0.03150399, 0.023021322), target);\n\ttarget = MulAdd(a3, MF4x4(0.052010637, 0.050168213, -0.07215345, 0.05805453, -0.0041914587, 0.022057746, 0.12245675, -0.014609538, 0.05546434, 0.03802747, -0.10866313, 0.00012593597, 0.025002997, 0.03302225, -0.10627746, -0.022926291), target);\n\ttarget = MulAdd(b3, MF4x4(-0.17316228, 0.0423441, 0.038386445, 0.15334567, -0.11682614, 0.04387397, -0.034430787, 0.05456901, -0.10287161, 0.09251676, -0.15516847, 0.01151086, 0.062166303, -0.06404339, -0.1341287, -0.11250874), target);\n\ttarget = MulAdd(c3, MF4x4(0.0041548237, -0.05339408, 0.12976702, -0.091956094, -0.07106556, 0.1537892, -0.14351088, 0.049248494, 0.0017415709, -0.03980619, 0.022205863, 0.07874843, 0.0486586, 0.07449563, -0.07935637, 0.035376832), target);\n\ttarget = MulAdd(d3, MF4x4(-0.032703526, 0.049651176, -0.14031135, -0.03314136, -0.05597869, 0.10001647, 0.134734, -0.050313897, 0.096650064, 0.06294751, -0.064859584, -0.1544743, 0.0041159303, -0.21177946, -0.08641454, 0.20853557), target);\n\ttarget = MulAdd(e3, MF4x4(-0.26784652, 0.045316227, 0.24048522, 0.0205891, -0.0044153836, -0.00084845145, -0.13039418, 0.008880892, -0.022925006, 0.25047663, -0.10610026, 0.26862314, 0.1495082, -0.30531225, 0.17336509, -0.095686845), target);\n\ttarget = MulAdd(f3, MF4x4(0.16892208, -0.04892237, -0.12343488, 0.076279886, -0.088687725, -0.031417985, 0.036753975, -0.02488052, -0.020715091, 0.037822228, 0.017967682, 0.09978998, 0.10307546, 0.021783398, -0.03838329, 0.16863413), target);\n\ttarget = MulAdd(g3, MF4x4(0.0030781403, 0.046299078, 0.021687783, 0.0070031965, 0.06806685, 0.08483792, -0.078655794, 0.046040457, 0.037727088, -0.07263033, -0.036312647, 0.055449635, -0.038422115, 0.0009298235, 0.024799686, 0.05429828), target);\n\ttarget = MulAdd(h3, MF4x4(-0.018482856, -0.035400447, 0.06548978, -0.116905235, 0.103153236, -0.020226527, -0.04428763, -0.0505854, 0.13939099, 0.06169983, 0.07293202, 0.1059522, 0.05596004, 0.022870086, 0.06962978, -0.024740675), target);\n\ttarget = MulAdd(i3, MF4x4(0.0098381555, -0.110539526, -0.0029312337, 0.051618274, -0.040557995, -0.11799748, -0.09392277, -0.04956917, -0.05159161, 0.030810604, 0.04230067, -0.04746804, 0.080403574, 0.012429489, -0.029210133, 0.05341304), target);\n\ttarget = MulAdd(na1, MF4x4(0.06609526, -0.18755382, -0.03701953, -0.1743458, 0.069703676, 0.0006303799, -0.15638213, 0.10318732, 0.08893642, -0.1195937, -0.055782318, -0.0185906, 0.012925918, 0.123628914, 0.04870321, 0.116520494), target);\n\ttarget = MulAdd(nb1, MF4x4(0.04936669, -0.14093854, 0.0012639028, 0.10475395, -0.096697986, 0.019948844, 0.05699649, 0.09687703, 0.016553551, -0.17477356, 0.0358826, 0.003379147, 0.0027950767, 0.061992507, -0.038799245, -0.029348955), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.0073947236, -0.016064813, 0.17795284, -0.081998095, -0.07971293, -0.021884581, 0.07818178, -0.1183752, 0.041862104, -0.049028065, 0.06426883, 0.047562487, 0.03306496, 0.024669351, -0.102706164, 0.06250834), target);\n\ttarget = MulAdd(nd1, MF4x4(0.03841001, -0.121903636, 0.009876164, -0.20964918, 0.16115156, -0.03041022, 0.024465065, 0.06145637, -0.096132785, 0.073770344, 0.030677194, 0.012882628, 0.1854335, 0.051307946, -0.05652639, -0.017714364), target);\n\ttarget = MulAdd(ne1, MF4x4(0.14671369, -0.21775708, 0.037446484, 0.19568916, -0.08120511, 0.009589117, -0.26862335, 0.10114162, -0.280923, 0.40576807, 0.07634094, -0.022802232, 0.26644167, -0.29799074, -0.07520144, -0.09298707), target);\n\ttarget = MulAdd(nf1, MF4x4(0.12787306, -0.03597792, -0.0501856, 0.0003554054, -0.016662559, 0.01793402, 0.036731128, 0.057142165, 0.14208297, -0.07816983, -0.06547921, 0.12818106, 0.03593736, -0.15703554, -0.039033424, -0.0044069514), target);\n\ttarget = MulAdd(ng1, MF4x4(0.058662556, -0.080323815, -0.02522527, -0.1580162, 0.034481227, -0.0857634, 0.040548056, 0.089334026, -0.3016336, 0.15299423, -0.04793492, 0.0012853529, 0.05151393, 0.03197434, 0.05723357, -0.06894418), target);\n\ttarget = MulAdd(nh1, MF4x4(0.12040549, -0.2529116, 0.10356855, -0.04598697, 0.0062763286, 0.11428357, -0.16604745, -0.037279624, 0.018803852, 0.17792255, 0.059715357, -0.011601418, -0.17485033, 0.1352793, -0.09469166, -0.009272873), target);\n\ttarget = MulAdd(ni1, MF4x4(0.07145802, -0.048490215, 0.14784634, -0.052574188, -0.023536265, -0.03715718, 0.02188599, -0.009487062, 0.095758304, -0.05260447, -0.04488383, -0.0022170001, -0.010753989, 0.1285623, -0.078049324, 0.07791392), target);\n\ttarget = MulAdd(na2, MF4x4(-0.08608365, 0.024032418, 0.03376676, -0.06672097, 0.14239122, -0.20172556, 0.059492715, 0.039168652, -0.05975819, -0.14009707, 0.06505314, 0.005366894, 0.023043798, -0.14035852, 0.06564292, -0.01975755), target);\n\ttarget = MulAdd(nb2, MF4x4(0.06098348, 0.020505348, -0.071457036, -0.088892065, 0.25814053, -0.4024066, 0.04613967, -0.009115204, 0.053136446, -0.10263362, 0.08311103, 0.010236834, 0.06737908, 0.13245155, 0.036181718, 0.21113388), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.013562919, -0.008662602, -0.10824871, -0.005553834, -0.10970149, 0.013045041, -0.07641659, -0.06609716, 0.08249468, -0.21136107, -0.08410633, -0.020448437, -0.25199074, 0.0641994, 0.07502806, -0.19701128), target);\n\ttarget = MulAdd(nd2, MF4x4(0.18910834, -0.15423289, 0.023417983, 0.005038285, -0.059044287, 0.077326454, 0.042352542, 0.06904583, -0.118472, -0.025113037, 0.008691595, 0.04278817, 0.1968958, -0.23562303, 0.0124163935, -0.011455441), target);\n\ttarget = MulAdd(ne2, MF4x4(0.033834323, -0.08521952, -0.164473, -0.18196565, 0.056635767, -0.22095878, -0.21966869, -0.24707489, 0.055047844, -0.0854704, 0.044351656, 0.31924927, 0.3393569, -0.09816152, -0.024666212, 0.12658896), target);\n\ttarget = MulAdd(nf2, MF4x4(0.03546097, -0.084772296, -0.017927025, -0.03168567, 0.018861301, -0.19742817, -0.023542268, -0.11313523, 0.013870798, -0.057313353, -0.048428833, -0.011003569, 0.060736526, -0.16871192, 0.12989289, -0.13272311), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.067924276, 0.042576067, 0.08058409, -0.05704767, 0.047355015, -0.009834332, -0.021743877, -0.09313564, -0.23810904, 0.071954355, 0.026877925, -0.06419035, 0.11408852, -0.094918594, -0.015347595, 0.15758565), target);\n\ttarget = MulAdd(nh2, MF4x4(0.016378017, 0.04923884, 0.042090666, -0.020616362, -0.3205589, 0.29866445, -0.09028968, 0.17835416, 0.069200985, -0.19676962, -0.038767412, 0.0066911504, 0.23217689, -0.32092544, 0.21888864, -0.031248417), target);\n\ttarget = MulAdd(ni2, MF4x4(0.1240904, -0.057505004, 0.008518463, -0.0013766377, 0.13912258, 0.25812533, -0.10721238, 0.041414622, -0.014356129, -0.11711117, -0.07339878, -0.042370543, 0.030094689, -0.083110586, -0.15375537, 0.008313004), target);\n\ttarget = MulAdd(na3, MF4x4(-0.42602807, -0.14819323, 0.24997748, -0.07033313, 0.053972986, -0.2672035, 0.16919206, 0.5153194, -0.12283088, -0.007163936, 0.050310373, -0.005151009, -0.0050212573, -0.07570248, 0.12484032, 0.028931405), target);\n\ttarget = MulAdd(nb3, MF4x4(0.21234803, -0.17263128, 0.108827524, 0.36454353, 0.15589741, -0.09056867, 0.18670312, -0.0886985, 0.09418289, -0.1530667, 0.07014518, 0.05093901, -0.314724, -0.09647151, 0.10014826, -0.05449102), target);\n\ttarget = MulAdd(nc3, MF4x4(0.083997354, -0.19228217, 0.17081402, 0.07869603, -0.07707866, -0.1114649, 0.14544345, -0.04913886, 0.114071324, 0.039774146, 0.026449671, -0.0046011102, -0.26660243, 0.06624741, 0.04318286, 0.025324916), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.34038183, 0.3126945, 0.25694248, -0.0694824, 0.09484312, -0.08968785, 0.07317779, 0.1351912, -0.3336016, 0.16971526, 0.09233206, 0.16124597, 0.01231051, -0.021199688, 0.1954184, 0.11741164), target);\n\ttarget = MulAdd(ne3, MF4x4(0.07364691, -0.46501446, -0.3260576, 0.019369395, 0.12856261, 0.01518898, 0.18648395, -0.06153823, 0.1424968, -0.4844148, 0.06327706, -0.23134615, -0.21754341, 0.16389093, 0.1828624, -0.16564755), target);\n\ttarget = MulAdd(nf3, MF4x4(0.13003388, -0.33331057, 0.5363979, -0.067382425, 0.0024128144, 0.10726199, 0.120562315, 0.027075078, 0.044253387, -0.22810216, -0.14027081, 0.05570364, -0.0012832935, 0.0066472166, -0.09584242, 0.038570657), target);\n\ttarget = MulAdd(ng3, MF4x4(0.15075065, -0.14929996, 0.12013421, -0.053535018, -0.059225604, 0.04993067, 0.12190514, -0.07199992, -0.12612323, 0.08610025, 0.0055669006, -0.01092246, -0.12504235, 0.071841165, 0.04702684, 0.04890323), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.59378284, 0.28029972, 0.041228425, 0.088731185, 0.10143785, -0.0147893205, 0.043729015, 0.22425093, -0.27061638, 0.23045406, 0.025149027, -0.09266012, -0.10645805, -0.021057274, 0.20209946, -0.07459568), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.003925717, 0.19509377, -0.0011443064, -0.07948601, 0.0008185968, -0.072344884, 0.2925546, -0.14168583, -0.04355419, 0.048995577, -0.090038754, -0.020567076, -0.1507524, 0.0033320382, 0.11161536, 0.048364066), target);\n\tconv2d_4_tf2[gxy] = target;\n}\n\n//!PASS 6\n//!DESC Conv-4x3x3x24\n//!IN conv2d_4_tf, conv2d_4_tf1, conv2d_4_tf2\n//!OUT conv2d_5_tf, conv2d_5_tf1, conv2d_5_tf2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_4_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_4_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_4_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_4_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 a3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = conv2d_4_tf2.SampleLevel(sam, pos, 0);\n\tMF4 f3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = conv2d_4_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(-0.08908616, -0.020727161, -0.10065884, -0.042632345);\n\ttarget = MulAdd(a1, MF4x4(0.10303006, -0.024129005, -0.006376188, 0.08361518, -0.030736713, 0.059527945, -0.05874042, 0.04269124, -0.09319534, 0.09713511, -0.08360228, 0.022383748, 0.27456298, -0.10364148, 0.011523791, 0.0006774627), target);\n\ttarget = MulAdd(b1, MF4x4(-0.05541989, -0.08698082, 0.055311147, 0.013819714, 0.10675169, -0.046272285, 0.0027710905, 0.097424075, 0.40062046, 0.012139614, 0.06539418, -0.26190186, 0.26748738, 0.010693152, -0.26337343, 0.1396046), target);\n\ttarget = MulAdd(c1, MF4x4(-0.0038561742, 0.06331599, 0.07280889, 0.0049921786, 0.046265908, 0.1273493, -0.0657387, -0.039872307, 0.036709707, 0.040611606, 0.10370152, -0.07017421, -0.15158589, -0.0944041, 0.16055441, 0.026905995), target);\n\ttarget = MulAdd(d1, MF4x4(0.13568372, 0.42744243, 0.03610402, 0.13057254, -0.15189639, 0.3270829, 0.07523759, -0.03377655, -0.11991776, 0.043995053, -0.04695395, 0.057843372, 0.123827286, -0.5117275, -0.27580252, -0.06490049), target);\n\ttarget = MulAdd(e1, MF4x4(0.20916292, 0.14519285, 0.29285586, -0.14002982, -0.02903087, 0.07725845, 0.42922875, 0.22422947, -0.006809662, 0.25789696, -0.23387176, 0.18227082, 0.1949605, 0.39381132, 0.13233, -0.03979206), target);\n\ttarget = MulAdd(f1, MF4x4(0.050690006, -0.016765494, -0.06890609, -0.06165983, -0.1547756, 0.030649774, -0.10065935, -0.123401724, -0.2001527, -0.14910932, -0.030470714, -0.036002573, 0.13485923, 0.09405768, -0.14694588, 0.12113117), target);\n\ttarget = MulAdd(g1, MF4x4(-0.09391889, 0.13889499, 0.0544932, -0.06221289, -0.13378021, 0.18230891, -0.04311924, 0.09056919, -0.00071865856, -0.1485109, -0.18140738, -0.22380811, -0.052037843, 0.07200541, -0.08552131, 0.039394405), target);\n\ttarget = MulAdd(h1, MF4x4(-0.1129644, -0.08789729, -0.20112263, -0.14140582, 0.13343073, 0.15928635, -0.0004416807, -0.08655255, 0.11923446, 0.14782757, -0.2526453, 0.06534483, 0.28670022, 0.08661807, -0.05939282, -0.1264073), target);\n\ttarget = MulAdd(i1, MF4x4(-0.069123454, -0.024052331, 0.08405668, 0.0024100337, -0.0091934, 0.06140827, 0.07263404, -0.09847185, -0.15793528, -0.043271005, -0.051817372, -0.060237445, -0.0066771735, 0.12329388, 0.061106086, 0.036974255), target);\n\ttarget = MulAdd(a2, MF4x4(-0.05637151, -0.10100362, 0.03314885, -0.10366338, 0.030021148, 0.03372163, -0.032138795, 0.01293222, -0.11080214, 0.010572153, -0.01362632, 0.010574912, -0.16158684, -0.08245153, 0.118470125, -0.13403644), target);\n\ttarget = MulAdd(b2, MF4x4(0.1868926, -0.01747845, -0.18130527, 0.13928702, -0.05539085, 0.032680083, 0.074883655, 0.018892298, -0.17280246, -0.047390517, 0.27345997, -0.022709364, -0.08344301, -0.014933963, -0.09545577, -0.033305403), target);\n\ttarget = MulAdd(c2, MF4x4(-0.30393317, -0.05171247, 0.00841183, 0.14072971, 0.08149488, 0.018601093, 0.021672362, 0.060667925, -0.0843176, -0.10364707, -0.21641973, -0.042780574, 0.08775126, -0.1777216, 0.13253935, -0.06866668), target);\n\ttarget = MulAdd(d2, MF4x4(-0.09160829, -0.026550675, -0.2643876, 0.23035419, -0.092297986, -0.0631223, -0.094887145, -0.04810445, -0.17819802, -0.36207268, 0.21447507, -0.055772606, 0.15652925, -0.045815215, 0.026055578, -0.08619429), target);\n\ttarget = MulAdd(e2, MF4x4(0.31203738, 0.1421051, 0.047671713, 0.043899603, -0.0063436944, -0.05302037, 0.10466757, 0.055510703, 0.26608247, -0.5555844, 0.1569081, 0.06456405, 0.3684636, 0.25736332, 0.074449226, -0.44859105), target);\n\ttarget = MulAdd(f2, MF4x4(0.17698939, -0.022741819, 0.060476527, 0.25612378, 0.020842008, 0.06931272, -0.019117761, -0.087975, -0.13561797, -0.1362288, 0.29442817, 0.13402307, -0.039556194, -0.019829288, 0.17118609, 0.1278197), target);\n\ttarget = MulAdd(g2, MF4x4(-0.31739852, 0.14773282, -0.24623321, 0.108611636, 0.14553224, -0.011245446, 0.12459254, 0.010767416, -0.03386007, -0.21067396, -0.07546396, 0.04937681, -0.1519659, 0.012008841, -0.115991235, 0.10733518), target);\n\ttarget = MulAdd(h2, MF4x4(0.03970365, -0.024820864, -0.20029032, 0.29602152, 0.09690361, 0.08654618, -0.012617663, -0.12546124, 0.20103471, 0.00038131204, 0.1211002, -0.1292234, 0.11913651, -0.11322767, -0.01288022, -0.041910112), target);\n\ttarget = MulAdd(i2, MF4x4(-0.009281656, 0.1297087, -0.05293133, -0.1246988, -0.022248892, -0.034976568, 0.08893194, -0.11639006, -0.17021456, -0.069115035, 0.17411986, -0.0622714, -0.13591176, -0.052181553, -0.3032676, 0.19398004), target);\n\ttarget = MulAdd(a3, MF4x4(0.0135761835, -0.03810734, 0.046213724, 0.010946248, -0.21182157, -0.18424067, 0.0072398814, -0.06510514, 0.25013617, 0.021596389, 0.20208448, 0.06570989, 0.040997196, 0.11164517, 0.0758064, 0.055730976), target);\n\ttarget = MulAdd(b3, MF4x4(0.27164775, -0.02738497, -0.07753674, 0.14808752, 0.035788253, -0.1008786, -0.21798207, 0.12514383, 0.12547313, -0.046524163, -0.069985755, -0.05973989, -0.12339831, 0.09729143, 0.062413983, 0.054448497), target);\n\ttarget = MulAdd(c3, MF4x4(0.12982179, 0.121222205, -0.012715672, 0.026885295, 0.06398589, -0.050220918, 0.011918637, 0.02942106, -0.049117237, -0.091542035, -0.08816891, 0.014023178, -0.22852097, -0.06725802, -0.058409374, 0.0413034), target);\n\ttarget = MulAdd(d3, MF4x4(-0.028438574, -0.17127529, -0.1611554, 0.020367429, -0.10448821, -0.44258052, 0.055850565, -0.1832564, -0.055781726, 0.1632947, -0.3766877, -0.14964445, -0.022300515, -0.15305346, -0.109381065, -0.115521505), target);\n\ttarget = MulAdd(e3, MF4x4(-0.26233345, 0.016659187, -0.16647589, 0.187565, 0.012088588, -0.07336387, 0.5486782, 0.3620359, 0.033402268, 0.009075903, -0.11902273, -0.37233996, -0.013799898, -0.008520962, -0.007579324, -0.018678436), target);\n\ttarget = MulAdd(f3, MF4x4(0.043346863, 0.10735683, -0.13174124, -0.121098995, -0.0044274325, -0.01888604, 0.12524483, -0.15453935, 0.10062332, -0.039168928, 0.34596562, 0.10575704, -0.04829014, -0.07308859, 0.17704462, 0.009876651), target);\n\ttarget = MulAdd(g3, MF4x4(0.16003962, -0.048122417, 0.04131919, -0.14133601, 0.11822638, -0.151548, 0.07274908, -0.253861, 0.11097183, -0.020288134, 0.06425395, -0.046268225, -0.07545768, -0.034767404, -0.111868136, 0.04605878), target);\n\ttarget = MulAdd(h3, MF4x4(-0.15711343, -0.04597314, -0.054248903, 0.10960686, -0.197342, 0.017807756, -0.17929378, 0.0669755, -0.14432156, -0.15553066, 0.1257169, -0.10205468, -0.11606485, 0.10992325, -0.026786113, 0.07244239), target);\n\ttarget = MulAdd(i3, MF4x4(0.24323255, 0.062938176, -0.10080858, 0.023388771, 0.08971783, -0.121303156, 0.030533563, 0.034501072, -0.070121005, -0.015707897, -0.008001506, 0.089416444, 0.08043049, 0.0414907, -0.051737808, 0.16745205), target);\n\ttarget = MulAdd(na1, MF4x4(0.045207355, 0.17343028, 0.038214743, 0.0124091925, 0.06772331, 0.16741976, -0.069976054, -0.09214925, 0.26161152, 0.21708632, -0.074641965, 0.10069592, -0.007335202, 0.0023308273, 0.102324076, -0.04463461), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.029115323, 0.09462037, 0.12704706, -0.0028017738, -0.20877443, 0.14758751, 0.11664195, -0.14800303, -0.42558858, -0.18685985, 0.019180436, -0.14385854, 0.13955534, 0.04206586, -0.1564317, -0.14350334), target);\n\ttarget = MulAdd(nc1, MF4x4(0.18595266, -0.038219437, 0.04847514, 0.093401335, 0.01025365, -0.009859873, -0.068309866, -0.025273895, 0.38261253, 0.097571604, 0.15044056, 0.012236991, -0.050778836, 0.01948223, -0.09681198, -0.0725782), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.15834534, -0.13884525, -0.41221318, -0.14256534, 0.14789878, -0.41153955, -0.10059337, -0.11296314, 0.067884445, 0.08605005, 0.05261639, -0.082988836, -0.121354714, 0.0412593, -0.22355177, -0.33940288), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.09894384, 0.011797632, -0.37582433, 0.13686092, -0.114456564, 0.10519318, -0.531876, 0.20149896, -0.40502954, -0.18473613, -0.027613513, -0.1229287, -0.15272947, -0.19752924, -0.009277203, -0.13704798), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.16676758, 0.06472998, -0.02979381, 0.028654594, 0.013178715, 0.0011208704, -0.14250684, 0.024595363, -0.0024331086, 0.15876009, -0.18146951, -0.21787827, -0.039896637, 0.022137187, 0.096943565, 0.1463433), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.020311443, -0.11862785, 0.024973717, -0.19604981, -0.07155344, -0.21432653, -0.032866854, -0.009850146, 0.20013084, 0.124072924, 0.09021492, 0.13809857, 0.21196319, -0.039707713, 0.18131028, 0.022565559), target);\n\ttarget = MulAdd(nh1, MF4x4(0.015458234, 0.19860977, 0.25325814, 0.32606927, -0.10935829, -0.10354393, -0.069758624, 0.016730295, 0.13970691, -0.026566936, -0.055172898, -0.39109713, -0.15070316, 0.07282636, 0.059083372, 0.01492328), target);\n\ttarget = MulAdd(ni1, MF4x4(0.016830033, -0.024868606, 0.05206643, -0.09652772, 0.0023192533, 0.008338291, -0.092116445, -0.05736829, 0.18136622, 0.046195503, 0.07144144, -0.0051190723, -0.0750335, -0.06531934, -0.011301411, 0.048583686), target);\n\ttarget = MulAdd(na2, MF4x4(0.04040649, -0.14777681, -0.0367592, 0.025550898, 0.0519472, 0.25573796, -0.041682925, 0.092338845, 0.025231685, 0.06609314, 0.020205751, 0.010512631, -0.12048031, -0.063682325, -0.017069822, 0.0103084585), target);\n\ttarget = MulAdd(nb2, MF4x4(0.09606588, 0.004819853, -0.010837633, 0.24923539, -0.1006792, 0.13619965, 0.15648063, -0.15472235, 0.074816, 0.061060935, 0.12031998, -0.07962363, -0.019762445, -0.08738595, 0.035822686, 0.19986363), target);\n\ttarget = MulAdd(nc2, MF4x4(0.25893176, 0.08258401, -0.08531076, -0.023176214, -0.13755056, 0.14691706, 0.17879073, -0.025577985, -0.28195706, -0.10409214, 0.06793316, -0.06837923, -0.122581184, 0.038157687, -0.265953, 0.19280349), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.113429695, 0.057516146, 0.3503902, 0.2084302, 0.095209785, 0.4323637, 0.036503337, -0.37528926, 0.17068225, 0.28902432, 0.08930841, 0.11777051, -0.11170577, -0.030996192, -0.050521877, 0.18092346), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.36534205, 0.0657259, -0.036097083, 0.1666858, 0.16353793, -0.055323638, -0.2819786, -0.049529333, -0.06722856, 0.07748645, -0.34818858, -0.15242954, -0.11060249, -0.27319375, 0.15099055, 0.4111536), target);\n\ttarget = MulAdd(nf2, MF4x4(0.19415127, 0.17859334, -0.043898348, -0.050272048, 0.16689122, 0.012172907, -0.15645516, 0.14623365, -0.0016135718, -0.0029198902, -0.07367009, 0.18115741, 0.095786035, 0.083239935, 0.12505479, -0.009228445), target);\n\ttarget = MulAdd(ng2, MF4x4(0.04141629, -0.09798292, -0.02985331, 0.13288854, 0.0029625932, 0.29050517, -0.14383948, 0.33147556, -0.19490755, -0.08341335, -0.049894527, 0.110408075, -0.185923, 0.12881704, -0.04483314, 0.13530989), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.025660308, -0.04277649, -0.044980843, -0.057717774, 0.48945707, 0.16011417, 0.35871124, -0.39541483, -0.0025785516, -0.055724356, 0.119274266, 0.009319305, -0.055367954, 0.07492857, -0.078998685, -0.10131247), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.16801779, -0.04895317, -0.21586019, 0.04615353, 0.09740849, 0.030762976, 0.17467776, 0.0120422365, 0.19799858, 0.049733654, -0.024367984, -0.008110729, -0.14235103, 0.03514316, 0.041790742, -0.09109183), target);\n\ttarget = MulAdd(na3, MF4x4(-0.26878524, -0.19208838, 0.0124758, -0.13010885, -0.0144377565, -0.015653338, -0.11066211, -0.05679906, -0.114442214, -0.04127417, 0.036079098, -0.04462267, 0.05359463, 0.021078862, -0.017311526, -0.05955371), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.42738852, 0.08011972, -0.120668575, -0.11827848, -0.16975085, -0.08911275, -0.076764226, -0.0891852, 0.19799769, -0.068180755, -0.109158665, 0.033777766, 0.23276065, -0.14431503, -0.011219252, -0.04819201), target);\n\ttarget = MulAdd(nc3, MF4x4(0.20798479, 0.20048247, -0.056686644, -0.12528493, -0.10292887, 0.008766131, 0.22832678, 0.009819724, 0.014666803, -0.032819923, 0.061416402, -0.052261874, 0.3986435, 0.2218756, 0.04587176, -0.056256443), target);\n\ttarget = MulAdd(nd3, MF4x4(0.006675663, -0.2561866, -0.013982697, -0.08625728, 0.12800391, -0.030867307, 0.104720816, 0.14650136, -0.100959726, 0.19566104, 0.057220545, 0.24033053, 0.08719554, 0.018098617, -0.07996598, -0.015701583), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.0354034, -0.06831094, 0.42055416, 0.11949096, -0.05344659, -0.1860165, -0.07301184, -0.30869538, -0.1953362, -0.13361058, -0.19827844, 0.078833625, -0.18285057, -0.116519555, 0.029914267, 0.21471292), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.12320904, -0.06025351, -0.12828222, -0.11336264, -0.15036534, -0.13378584, -0.18584451, 0.045040403, -0.0675013, 0.04541515, 0.028214835, 0.06800308, -0.21156439, 0.24866186, 0.21416123, -0.040026035), target);\n\ttarget = MulAdd(ng3, MF4x4(0.0753877, -0.04430112, 0.15395011, -0.07991276, -0.08305846, 0.055565085, -0.031790998, 0.10893703, -0.057524715, 0.012498553, 0.010330039, 0.12658505, 0.09117975, -0.08158854, 0.26708308, -0.16074498), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.29645425, -0.039365437, -0.18364744, 0.16236888, 0.04460683, -0.12283852, 0.23568133, -0.08579463, 0.08793187, -0.057041798, 0.1710201, 0.07482411, -0.13072757, 0.0841477, 0.13957432, 0.1679739), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.29222, -0.12256286, 0.02170915, -0.21209532, 0.024504298, 0.02795105, 0.07216779, -0.032558184, 0.14820465, 0.025545621, -0.054377284, 0.071698785, 0.017161021, 0.07144609, 0.11378573, 0.3110773), target);\n\tconv2d_5_tf[gxy] = target;\n\t\n\ttarget = MF4(0.046015948, 0.05442024, -0.016241902, 0.020935621);\n\ttarget = MulAdd(a1, MF4x4(0.064056724, -0.07093631, 0.04779868, -0.02587647, -0.071125306, -0.074813634, -0.068414815, -0.08501005, 0.063606724, 0.034935262, -0.03552888, -0.24985667, 0.11153104, 0.0071351845, 0.19171661, -0.029433867), target);\n\ttarget = MulAdd(b1, MF4x4(-0.09995801, -0.09326525, 0.06775157, -0.038214244, -0.10054348, -0.16220573, 0.102754906, 0.071962886, 0.23763078, 0.013961893, 0.015597981, -0.2632074, 0.22045082, 0.071685486, -0.08206874, 0.13892207), target);\n\ttarget = MulAdd(c1, MF4x4(-0.01934266, -0.006904077, -0.10715261, 0.17485306, 0.013713242, -0.12410888, -0.007832815, -0.03868287, -0.15776807, -0.2635318, 0.003962659, -0.18496422, -0.11876284, -0.039445885, 0.06629498, 0.22338709), target);\n\ttarget = MulAdd(d1, MF4x4(-0.034078594, -0.1805506, -0.025518876, 0.014371885, 0.030084224, -0.014354998, -0.0109806815, -0.20827125, 0.042328708, -0.018653959, 0.059650034, 0.029813247, 0.19455545, -0.113774136, 0.26678622, 0.11695122), target);\n\ttarget = MulAdd(e1, MF4x4(-0.023987826, -0.023700913, 0.08644919, -0.1750627, -0.26300937, 0.29743475, 0.1503612, -0.42041445, -0.011562484, -0.3249365, 0.01101664, -0.09328339, -0.09930711, 0.14022289, -0.32576883, 0.026680376), target);\n\ttarget = MulAdd(f1, MF4x4(0.06988121, 0.109367564, 0.03402709, -0.17185646, -0.058330853, 0.04632417, -0.010930606, -0.107686765, 0.022882087, -0.08536933, 0.10469813, -0.0737954, 0.16710569, 0.18354355, -0.06688489, -0.019448377), target);\n\ttarget = MulAdd(g1, MF4x4(0.019293351, 0.0123047, -0.15684208, 0.054855164, -0.09483187, 0.007899257, -0.07996407, 0.06905782, -0.014882362, -0.17087294, -0.17222148, -0.018799115, 0.042367876, 0.15077937, 0.08865754, -0.10869854), target);\n\ttarget = MulAdd(h1, MF4x4(-0.002714694, -0.1375695, -0.1394463, 0.035844512, 0.0085730525, -0.14237584, 0.10053908, 0.07594752, 0.26822913, -0.07813585, 0.10951651, 0.036110748, -0.008980184, -0.018826121, -0.027037399, -0.010021858), target);\n\ttarget = MulAdd(i1, MF4x4(-0.028075742, 0.069354035, -0.00936207, -0.07844518, -0.022958742, -0.014102934, 0.031117663, -0.009953486, -0.078456596, -0.0880605, 0.063174024, 0.018579911, -0.0015331954, 0.15179089, 0.003745209, -0.029687254), target);\n\ttarget = MulAdd(a2, MF4x4(0.018290054, -0.014245797, -0.17358118, -0.056127924, 0.07084526, 0.03571643, 0.02986269, -0.106873244, -0.048314985, 0.025376959, -0.09932602, 0.011822442, -0.038084786, 0.018717794, -0.18553552, 0.025297863), target);\n\ttarget = MulAdd(b2, MF4x4(0.07225246, -0.029364137, 0.011361293, 0.093667194, -0.10645156, 0.0865526, -0.008865539, -0.011799614, -0.21514468, -0.06500061, 0.08485134, 0.23484601, 0.18280883, 0.0598522, -0.13781232, -0.03465513), target);\n\ttarget = MulAdd(c2, MF4x4(0.060355596, 0.22477956, 0.01595966, 0.094911985, 0.047214787, 0.042830862, 0.029644348, 0.08143906, 0.02341161, -0.053311694, 0.005260219, 0.04425682, -0.04813383, -0.062679216, 0.019290956, -0.05866764), target);\n\ttarget = MulAdd(d2, MF4x4(0.09550533, -0.0281284, 0.18278416, 0.15003324, -0.06580779, 0.041769683, -0.08509133, 0.11734207, 0.049989708, 0.08702604, -0.06486799, 0.063569345, 0.11966632, -0.026014533, 0.03127322, -0.12456593), target);\n\ttarget = MulAdd(e2, MF4x4(0.31493753, 0.21239288, 0.23353736, 0.023554513, -0.052986618, -0.0902623, -0.2293566, 0.021443173, -0.5114285, 0.19488071, 0.27000505, -0.1988818, 0.065105505, 0.04904789, -0.0014040003, -0.057719957), target);\n\ttarget = MulAdd(f2, MF4x4(-0.1556567, 0.03353479, -0.13394126, -0.017714672, 0.057949618, 0.013137359, 0.058261257, -0.07417554, -0.115135044, 0.17160247, -0.006379533, 0.1885825, -0.22129406, -0.043042038, 0.024051858, 0.17637861), target);\n\ttarget = MulAdd(g2, MF4x4(-0.035570182, 0.06328232, 0.016843708, -0.06668748, -0.0056720893, 0.08904317, 0.052788604, -0.0017134451, -0.018143848, 0.040248383, 0.015489914, -0.028669124, 0.008654496, 0.046033252, 0.1050059, 0.0273359), target);\n\ttarget = MulAdd(h2, MF4x4(0.022325872, 0.019782262, 0.13855061, -0.095333435, -0.017554015, -0.2036992, -0.17955759, 0.051069602, 0.06197425, -0.1524745, 0.06332084, 0.16367467, 0.012856071, -0.067313105, 0.26188868, 0.014297151), target);\n\ttarget = MulAdd(i2, MF4x4(0.24847886, 0.037001565, 0.02012791, -0.08560085, -0.07295144, -0.09001876, 0.09916956, -0.056165274, -0.13455103, 0.025426334, -0.040519975, 0.10362695, 0.1720182, -0.003640278, 0.0108676655, -0.006747253), target);\n\ttarget = MulAdd(a3, MF4x4(0.035146076, 0.0751456, 0.074510865, -0.009687164, -0.059647426, 0.11068295, 0.005034347, -0.0094476575, 0.15726817, 0.06547935, -0.003077329, -0.095212325, -0.033507027, 0.044296283, -0.053546224, 0.0667459), target);\n\ttarget = MulAdd(b3, MF4x4(0.026525194, -0.10907353, 0.17279102, -0.057787284, 0.0054999366, -0.104058325, 0.04222895, 0.2964297, -0.123814896, -0.12381756, 0.08017246, -0.41211042, -0.09396297, 0.006370269, -0.051667687, 0.1595841), target);\n\ttarget = MulAdd(c3, MF4x4(-0.057249974, -0.11224924, 0.04510644, 0.031252895, 0.13152118, -0.061255917, -0.1275758, 0.24736635, 0.15261558, -0.02695863, -0.04368786, 0.077176146, -0.07857015, 0.10112319, -0.09226026, 0.096964024), target);\n\ttarget = MulAdd(d3, MF4x4(-0.17078993, 0.007348804, -0.005015552, 0.05306818, 0.055224724, 0.11567237, -0.20675188, -0.003248449, -0.112982295, -0.1578056, -0.46721724, 0.10590234, 0.20476797, 0.10101496, -0.04983351, -0.2430514), target);\n\ttarget = MulAdd(e3, MF4x4(0.41511732, -0.14909638, -0.20466527, 0.32993126, 0.034264483, 0.35299808, 0.047212206, 0.22853905, 0.44917694, -0.26854274, 0.28782642, 0.28775322, 0.10682206, -0.036426, -0.05926136, -0.09808791), target);\n\ttarget = MulAdd(f3, MF4x4(0.1623692, 0.04208961, -0.12735078, 0.119587936, -0.018460283, 0.01926331, -0.16922039, -0.020692306, -0.23654786, -0.09682156, 0.02356279, 0.292154, -0.12550685, -0.039114326, -0.010045899, 0.009884463), target);\n\ttarget = MulAdd(g3, MF4x4(-0.024572646, -0.04915667, -0.0891658, -0.101300426, 0.09721007, -0.027222471, -0.08186617, -0.08800145, 0.16128908, 0.017369738, -0.17755122, 0.030553974, -0.04786194, -0.033306226, -0.11137265, 0.097252734), target);\n\ttarget = MulAdd(h3, MF4x4(-0.13219555, 0.14680044, -0.020835813, -0.19928418, -0.17540939, 0.08884416, -0.16007939, -0.2782367, -0.26362786, -0.053185944, 0.21527831, -0.12771867, 0.09537403, 0.06372314, 0.07092338, 0.016300872), target);\n\ttarget = MulAdd(i3, MF4x4(0.06020855, -0.027582346, -0.060386427, -0.16418251, 0.13412488, 0.0635046, -0.16844325, -0.031885087, 0.19441758, 0.21037033, -0.21288314, 0.0033019097, 0.07076219, 0.1341822, 0.07913143, 0.025000073), target);\n\ttarget = MulAdd(na1, MF4x4(0.1165525, 0.1224346, -0.049421676, -0.09238292, -0.009945548, 0.095751256, -0.09618111, -0.031556837, 0.08579153, -0.11566272, 0.1746714, 0.2033271, 0.21790707, 0.11779413, -0.024555488, -0.06705437), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.17143509, 0.076514326, 0.18922825, -0.2367472, -0.0980002, 0.28013328, -0.12218669, -0.043787587, 0.0058879694, -0.024139067, -0.26422662, -0.11571965, 0.14444259, 0.017443683, -0.08909287, -0.2847621), target);\n\ttarget = MulAdd(nc1, MF4x4(0.025492875, -0.079289034, 0.08755382, 0.032952707, 0.066548645, 0.047626834, -0.022007272, -0.053937066, -0.005625632, -0.20218278, 0.081909254, 0.10763452, 0.025432698, -0.008357586, 0.052571986, -0.13281691), target);\n\ttarget = MulAdd(nd1, MF4x4(0.19026323, -0.03131676, -0.6082668, 0.18015681, -0.08726318, -0.10005449, -0.12227455, 0.09603944, -0.10222641, -0.04765289, -0.25651884, 0.09121576, -0.13599087, 0.004900871, -0.37133986, -0.17672789), target);\n\ttarget = MulAdd(ne1, MF4x4(0.45967895, -0.39018512, 0.050611064, 0.03249431, 0.30238965, -0.3105947, 0.06669453, 0.32732725, 0.066052265, 0.49977377, -0.050907653, -0.03348076, 0.029122408, 0.0600764, -0.07822951, 0.20902982), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.08013542, 0.10021573, -0.11628576, 0.14346479, 0.057000324, -0.108649634, 0.019887695, 0.103890195, 0.1409188, 0.20089024, -0.102009736, 0.1325033, 0.044806838, -0.05788581, 0.048131753, -0.06652887), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.16966644, -0.24639672, 0.019028572, -0.06812002, 0.03262217, 0.09131447, 0.013230795, -0.11368682, -0.06550434, 0.13262247, 0.08878271, -0.08202508, 0.015975898, -0.060910717, 0.06115912, 0.15341121), target);\n\ttarget = MulAdd(nh1, MF4x4(0.15634352, 0.17069998, 0.14901571, 0.009626357, -0.06694675, 0.17337729, -0.19245732, -0.053627927, 0.1267725, -0.21431756, -0.07327218, -0.05756576, -0.032537382, -0.02760317, 0.13781238, 0.13548511), target);\n\ttarget = MulAdd(ni1, MF4x4(-0.028399123, -0.1360119, 0.2317893, -0.025993945, 0.03924595, -0.042272273, -0.116523296, -0.09528808, 0.1524186, 0.055862464, 0.03739477, -0.09871636, -0.07834257, -0.041219592, 0.04540839, 0.1291419), target);\n\ttarget = MulAdd(na2, MF4x4(-0.19614807, -0.09363595, 0.056008626, 0.005871811, 0.16565295, -0.0842474, 0.11023916, 0.13774084, -0.042277314, -0.021777004, -0.03129473, 0.1514441, -0.039998986, 0.071076415, 0.01945138, -0.12146891), target);\n\ttarget = MulAdd(nb2, MF4x4(0.06687245, -0.1199503, 0.21189997, 0.35098252, 0.033946924, 0.3198622, -0.22240919, -0.1667172, -0.036933, 0.229118, -0.11569919, -0.16484495, -0.11610055, 0.015235093, 0.3831026, 0.1465072), target);\n\ttarget = MulAdd(nc2, MF4x4(0.03791039, 0.018180382, -0.042332668, 0.013624834, -0.18835816, -0.0509036, -0.021141365, -0.004950831, -0.08342777, 0.1390103, 0.015515743, -0.19880094, 0.11614853, 0.06523873, 0.13055101, 0.1372081), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.0018500675, 0.18703233, 0.30595052, -0.016893126, -0.22149622, 0.15263912, -0.66434824, -0.02816733, -0.046903886, -0.111711785, 0.24890791, 0.045937214, -0.17543675, 0.0062527983, 0.19804789, 0.017593222), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.04760463, 0.05421001, -0.28332436, -0.025446368, 0.21688665, 0.5815682, 0.46906602, -0.05001719, 0.23411441, -0.07280948, -0.13070935, -0.015438214, -0.13005666, 0.1889405, -0.2580563, -0.15314907), target);\n\ttarget = MulAdd(nf2, MF4x4(0.12959057, -0.0948774, 0.06675651, -0.17425562, 0.10021383, 0.33856025, -0.31008336, -0.025042048, -0.052502744, 0.029178401, -0.0048839073, 0.038400315, -0.018125525, -0.0767934, 0.094993874, -0.18367463), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.022678657, -0.0065315845, 0.06314526, -0.054645326, 0.13771887, 0.046705935, -0.04636017, 0.14018759, -0.04231133, -0.021541214, 0.017565796, 0.003035773, 0.08540473, 0.08129922, 0.11075298, 0.013874024), target);\n\ttarget = MulAdd(nh2, MF4x4(0.08197226, -0.0058128256, -0.18930762, -0.036673985, 0.02281235, -0.08467056, -0.2223147, 0.2896992, 0.05395775, 0.11151909, -0.06499754, 0.1251099, -0.03142789, -0.030318923, -0.007785477, -0.04529621), target);\n\ttarget = MulAdd(ni2, MF4x4(0.080762245, -0.018930724, -0.20362908, 0.056379218, -0.11373313, -0.12011991, 0.16567366, 0.08657685, 0.044468362, -0.08876271, -0.029667072, 0.035950437, -0.14428492, 0.029389331, 0.05124434, 0.0045285597), target);\n\ttarget = MulAdd(na3, MF4x4(-0.02969669, -0.008931901, -0.100618705, -0.052917536, 0.020904265, -0.13654597, -0.06518564, 0.10012143, -0.02225236, -0.0429339, -0.048810348, -0.05469844, 0.08333708, 0.030906782, -0.018940724, -0.026514838), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.08655406, 0.114238694, -0.16437472, -0.08736896, 0.127443, 0.06291038, -0.2604087, 0.12457613, 0.24516857, -0.13755949, -0.0030577497, 0.10744015, 0.04641038, 0.05981727, 0.31352815, -0.18235594), target);\n\ttarget = MulAdd(nc3, MF4x4(0.008475862, 0.017425679, -0.08991029, -0.12069009, -0.08269583, 0.10742468, -0.014932612, -0.02626661, -0.016236676, -0.005973882, -0.027453009, -0.11351438, 0.047109496, -0.145119, 0.07747088, -0.07215372), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.034174602, -0.060812023, -0.0006432491, -0.20983042, 0.046102066, 0.008952892, 0.15442203, -0.10698656, 0.17119479, -0.004389315, 0.3144101, -0.110222265, -0.14246719, 0.045711346, -0.13565831, 0.26117173), target);\n\ttarget = MulAdd(ne3, MF4x4(-0.6470008, 0.04084706, -0.051462423, -0.06546568, -0.014792661, -0.15924191, -0.18878494, -0.23083107, -0.24585818, 0.2259637, -0.10123358, -0.19765808, -0.20856747, -0.228083, 0.37406453, 0.08601305), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.064584635, -0.21230863, 0.14970647, -0.11542264, 0.036966026, 0.029235318, 0.10329525, 0.044501476, -0.0177942, -0.109035276, 0.043533962, 0.028927831, 0.1558056, 0.10556724, 0.10270152, -0.14039369), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.066995785, 0.06306309, -0.13572344, 0.11198968, -0.0037865653, 0.015525267, 0.03302228, 0.11591493, -0.0528039, -0.059212606, 0.082170166, 0.0794709, -0.03251824, -0.026491115, 0.0763021, -0.13832395), target);\n\ttarget = MulAdd(nh3, MF4x4(0.006861719, -0.07674664, 0.19552138, 0.041278, -0.04972735, 0.028953623, -0.05129196, 0.102604896, 0.09264856, 0.08714556, 0.14463316, 0.016883003, 0.26475173, -0.089217745, -0.10327653, 0.23053643), target);\n\ttarget = MulAdd(ni3, MF4x4(-0.13946633, -0.07468852, 0.00806054, 0.075793736, 0.0094534205, 0.053835806, 0.053700656, -0.09649038, 0.011497834, -0.004986816, -0.019868635, 0.065568306, -0.026551232, -0.35115397, 0.015588715, 0.0713471), target);\n\tconv2d_5_tf1[gxy] = target;\n\n\ttarget = MF4(0.0016613394, 0.059301294, -0.038810123, 0.10673296);\n\ttarget = MulAdd(a1, MF4x4(0.06520908, 0.11980297, 0.017079262, -0.0644185, 0.058950376, 0.31555367, -0.026817605, -0.07509471, -0.12542972, 0.17405558, 0.03727982, -0.116224065, -0.062435534, -0.19364153, -0.026986435, -0.03134909), target);\n\ttarget = MulAdd(b1, MF4x4(0.038656387, 0.13447802, -0.16709015, -0.14351036, 0.103892356, 0.016569376, -0.07983408, -0.16095364, -0.11789444, -0.03072205, 0.123185664, -0.10082752, 0.21694018, -0.1617907, -0.011660872, 0.13927431), target);\n\ttarget = MulAdd(c1, MF4x4(0.008439822, 0.122972764, -0.016326487, -0.078567974, 0.059017945, 0.06353737, 0.082813956, -0.0949065, -0.08315884, 0.021347238, -0.08931161, -0.16035163, 0.037683185, 0.06533404, -0.028883474, -0.09627357), target);\n\ttarget = MulAdd(d1, MF4x4(0.08366899, 0.21790943, -0.22688796, -0.12604184, -0.043983214, 0.1403515, -0.36661214, -0.06573482, -0.0013522038, -0.06833309, -0.01641999, 0.069110356, 0.37018904, 0.10410086, 0.061855968, -0.1666379), target);\n\ttarget = MulAdd(e1, MF4x4(-0.2989202, -0.117328055, -0.050487056, -0.061127234, 0.1033415, 0.16767837, 0.18385236, 0.02724901, 0.35696694, -0.25828066, -0.074384004, -0.042253643, -0.41383776, -0.050653316, 0.14413886, 0.32937947), target);\n\ttarget = MulAdd(f1, MF4x4(-0.15808704, -0.106030256, 0.28908083, 0.008596225, -0.110294454, -0.08877176, 0.08842803, -0.039414957, 0.20766397, -0.17327146, -0.19335231, -0.061150387, -0.000814753, 0.1034041, -0.009765378, -0.07323427), target);\n\ttarget = MulAdd(g1, MF4x4(-0.01879742, -0.044466518, -0.09159235, -0.1501768, -0.0056229457, 0.18997125, 0.08428035, -0.13449019, 0.18263818, -0.10028305, -0.09866498, 0.117869616, -0.012634524, -0.029524704, -0.07730064, 0.00546821), target);\n\ttarget = MulAdd(h1, MF4x4(0.15762568, 0.105768956, 0.13892855, 0.00044988963, 0.12257598, -0.01147673, 0.006341714, -0.26212972, 0.40007222, 0.08705139, -0.2118067, 0.026638128, 0.03797633, -0.11589773, 0.0049106814, 0.12900658), target);\n\ttarget = MulAdd(i1, MF4x4(-0.121532075, -0.10590698, -0.03897105, -0.0071686152, 0.0033759288, -0.1396647, -0.028675696, -0.015227962, 0.18511333, -0.102051884, -0.016090686, 0.059021857, -0.11331271, -0.11874948, 0.018710922, 0.017408015), target);\n\ttarget = MulAdd(a2, MF4x4(-0.12550953, 0.16510391, 0.10619754, -0.016266964, -0.019227408, -0.18954511, -0.109888494, 0.016605422, -0.0005352285, 0.044191238, -0.088420294, 0.009006945, -0.022495952, 0.048431057, -0.020784441, 0.010173064), target);\n\ttarget = MulAdd(b2, MF4x4(0.16963533, 0.18744309, 0.21297795, 0.08332983, -0.023056686, -0.07087108, -0.036333352, -0.015268741, -0.07492767, -0.045910314, 0.21631542, -0.16564575, 0.02388003, 0.13383305, -0.039016947, 0.0631532), target);\n\ttarget = MulAdd(c2, MF4x4(0.02557174, 0.08842321, 0.16087292, -0.023776071, 0.031170124, 0.066140614, 0.05342162, -0.013030745, 0.124961995, -0.22359067, -0.036988057, 0.13611913, -0.1263602, -0.16664241, 0.01858248, 0.0013771311), target);\n\ttarget = MulAdd(d2, MF4x4(0.015695665, 0.015101046, 0.17278792, -0.03986969, 0.14098491, -0.024497505, 0.21574442, 0.04450794, -0.10986037, 0.16416681, -0.09933916, 0.14197138, 0.0015567777, -0.0047904793, -0.21008217, 0.14554296), target);\n\ttarget = MulAdd(e2, MF4x4(-0.31723288, -0.11801757, 0.54204303, 0.21924974, -0.063086554, 0.031983662, -0.044489764, -0.044983335, -0.19877149, -0.34737584, 0.14496867, 0.24102491, -0.12645286, -0.12267188, 0.108755745, -0.042033415), target);\n\ttarget = MulAdd(f2, MF4x4(-0.12381552, 0.21796867, 0.047182925, 0.13479555, -0.07008901, 0.030664185, 0.10611406, -0.109855235, -0.035448074, 0.11677155, -0.21266608, 0.13169904, 0.031983715, 0.023444392, -0.17469533, 0.17422527), target);\n\ttarget = MulAdd(g2, MF4x4(0.022972934, -0.00795407, 0.05136999, 0.035493083, -0.17333633, -0.027870687, 0.02908348, 0.053750556, -0.014127204, 0.03970615, 0.04342455, 0.124589466, 0.16470553, 0.06732464, 0.043155663, -0.03983377), target);\n\ttarget = MulAdd(h2, MF4x4(-0.032124814, 0.032697737, 0.14967397, 0.0065929573, 0.1047251, 0.039273106, 0.08134817, -0.003973153, 0.040370148, -0.18200004, 0.089256786, -0.09854591, -0.0060806563, -0.1029578, -0.091431744, 0.10011842), target);\n\ttarget = MulAdd(i2, MF4x4(-0.037540972, 0.02491563, 0.18000527, -0.05821429, 0.05302547, -0.104025975, -0.10679022, -0.030143606, 0.0072812764, 0.06054551, -0.1211288, 0.04456214, 0.023387795, -0.003822218, 0.0058639925, -0.022066886), target);\n\ttarget = MulAdd(a3, MF4x4(0.06184228, -0.056854323, -0.040505715, 0.06577085, 0.09438042, 0.08642222, -0.070353776, 0.053747497, -0.1001193, 0.1620346, 0.0022546488, -0.084673025, -0.063821726, -0.06516542, 0.021665785, -0.01931425), target);\n\ttarget = MulAdd(b3, MF4x4(0.07393532, -0.030919692, -0.05093964, 0.041760188, 0.20542595, -0.14245859, -0.08730749, 0.066625066, -0.030148488, 0.04094324, -0.17595454, -0.16575092, -0.015094979, 0.08206526, 0.1878202, 0.030275505), target);\n\ttarget = MulAdd(c3, MF4x4(0.04596692, 0.24388434, 0.075821444, -0.11463937, 0.04743361, 0.073697835, -0.12414068, -0.13001998, -0.016750317, -0.115090236, 0.029251577, -0.00256914, 0.01848034, 0.020216811, -0.050685663, 0.15878099), target);\n\ttarget = MulAdd(d3, MF4x4(-0.07033339, -0.10033772, 0.13496423, 0.05642528, -0.035572313, -0.17283621, -0.116152726, 0.05493664, 0.09753486, -0.03360219, -0.0357413, -0.18149517, -0.121751696, -0.07030741, 0.013601298, 0.033133104), target);\n\ttarget = MulAdd(e3, MF4x4(0.09432236, -0.09759138, -0.119828485, -0.14183357, -0.5797675, -0.07471831, 0.04211549, 0.26251101, 0.5751412, 0.5531362, -0.20901033, -0.44464877, -0.1050692, 0.35440886, -0.06443669, -0.27186042), target);\n\ttarget = MulAdd(f3, MF4x4(-0.069436476, 0.10357919, 0.09300722, -0.0992018, -0.15164262, 0.12421031, -0.20876148, -0.18715572, 0.020070476, -0.06525974, 0.0032806133, -0.007204605, -0.047449, 0.23941353, 0.074678384, 0.059585877), target);\n\ttarget = MulAdd(g3, MF4x4(0.01769955, -0.010905215, -0.048443984, 0.07100768, 0.037357494, -0.014723261, -0.15591852, 0.10612296, -0.13143727, -0.029275576, 0.021462034, 0.011848447, 0.08220801, 0.15958358, -0.022226475, -0.06178906), target);\n\ttarget = MulAdd(h3, MF4x4(-0.043331016, -0.060601693, -0.13266426, 0.2410773, -0.09411715, -0.054481134, -0.010012133, 0.07868362, -0.03723713, -0.32002482, -0.19103771, 0.024575114, 0.12048997, -0.33372483, -0.13358098, -0.11907925), target);\n\ttarget = MulAdd(i3, MF4x4(-0.06852358, -0.025769785, 0.16419932, 0.028622756, 0.07738885, 0.19097409, 0.030017732, 0.08942453, -0.103945315, 0.27710587, 0.07438472, 0.04317445, 0.07197963, 0.23000222, -0.025056513, 0.09491253), target);\n\ttarget = MulAdd(na1, MF4x4(-0.14467122, -0.010201622, 0.0076316656, -0.07795532, -0.062397595, -0.20432428, -0.008252111, 0.0849895, 0.16180839, -0.12278075, -0.011521546, 0.03288935, -0.14986265, 0.06768003, 0.18093173, 0.036510453), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.13757493, -0.022130862, -0.14063741, -0.15224035, -0.16418923, 0.02701367, 0.034051962, -0.02580273, -0.21267697, 0.1778992, -0.11384793, -0.14056513, -0.12628116, -0.119479865, -0.08586524, -0.042770755), target);\n\ttarget = MulAdd(nc1, MF4x4(0.034048863, 0.043504484, 0.14368454, 0.0682472, -0.1318885, -0.09097908, -0.022142543, 0.045874257, -0.00010490822, -0.35216293, 0.04821174, 0.1037435, 0.11491783, -0.03074008, -0.15504418, 0.002481289), target);\n\ttarget = MulAdd(nd1, MF4x4(0.15464644, 0.13155764, -0.025967255, -0.122360244, 0.0050367275, -0.030188441, 0.26694667, 0.09298438, 0.12436595, 0.1894544, 0.097955175, -0.1976165, 0.17701727, -0.39169946, 0.07254687, 0.18344238), target);\n\ttarget = MulAdd(ne1, MF4x4(0.7450363, -0.021375138, 0.1908325, -0.43873882, 0.32581338, 0.06003156, -0.16481178, -0.097786136, 0.07664747, 0.083530955, -0.19303781, -0.2208752, 0.2954345, -0.020337705, 0.14045238, -0.19992891), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.13618276, 0.1301855, 0.07342773, -0.28985927, 0.1162901, -0.20089008, -0.036014035, 0.13122658, -0.121863954, 0.012138018, 0.17843567, 0.03828356, 0.048146408, 0.2968513, 0.069999285, -0.130018), target);\n\ttarget = MulAdd(ng1, MF4x4(0.21915652, 0.05540849, 0.10738131, 0.07626957, -0.13932791, -0.26324788, -0.024981115, 0.100521, -0.3060648, -0.21207786, 0.1482194, -0.114556216, -0.09286606, 0.01816721, 0.018395979, -0.03223082), target);\n\ttarget = MulAdd(nh1, MF4x4(0.007953473, 0.41586113, -0.12301476, -0.0714516, -0.18429835, 0.05822646, 0.003684946, 0.18452546, 0.07199102, -0.038058747, -0.11968186, 0.057275392, 0.018090919, 0.15575454, 0.14568369, -0.008162466), target);\n\ttarget = MulAdd(ni1, MF4x4(0.0046069925, -0.14948042, -0.06077474, -0.18606511, -0.046001855, 0.072694264, 0.0853064, -0.07509439, -0.16638888, 0.008207148, -0.06407435, 0.0832239, 0.11806991, 0.08564391, -0.09793387, -0.009962631), target);\n\ttarget = MulAdd(na2, MF4x4(0.17163257, 0.17926122, 0.08094341, 0.01562118, 0.08006863, 0.16360049, 0.061501157, 0.015167974, 0.038785663, -0.024147237, 0.04187129, 0.020464495, 0.0043754554, -0.12979902, -0.116078086, 0.02519678), target);\n\ttarget = MulAdd(nb2, MF4x4(0.1390449, -0.31678367, -0.05487266, 0.028750261, -0.2432485, 0.4501461, 0.16770184, -0.21504217, -0.113885716, 0.24819264, 0.10844277, 0.16599967, 0.07485992, -0.15028708, -0.050178476, 0.058082305), target);\n\ttarget = MulAdd(nc2, MF4x4(0.025873372, 0.0873282, -0.00070206827, 0.038967356, -0.12720318, -0.036212232, 0.37016478, 0.08430346, -0.18743254, -0.075341664, -0.027113464, 0.0478065, 0.30386332, 0.03854462, -0.08687961, 0.043612193), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.1514979, 0.20321548, -0.12928946, -0.08803361, 0.062216565, -0.26570085, 0.26420683, -0.0777953, 0.008385508, 0.112346895, -0.09958432, -0.1247562, 0.114825696, 0.12035607, 0.06491033, -0.036797147), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.24817157, 0.12276732, -0.21231028, 0.23803027, 0.43308944, 0.39496094, 0.15699469, 0.12618075, -0.037870817, 0.13224195, 0.007822175, -0.13612692, -0.07763684, -0.33213237, -0.0121766785, 0.16685596), target);\n\ttarget = MulAdd(nf2, MF4x4(0.038585283, 0.04452951, 0.050363973, 0.027282275, -0.08253728, -0.06062145, 0.25581127, 0.04032097, 0.05333845, 0.023140023, -0.009572385, 0.16059966, -0.11572228, 0.044278048, 0.09749187, -0.15032573), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.03934602, -0.02766789, 0.026940307, 0.012599063, -0.31656685, 0.23716804, 0.44959545, -0.22446568, -0.054772135, -0.12735057, 0.057908695, -0.13251308, -0.08269784, 0.11659682, 0.098460965, 0.026333362), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.034531243, -0.034659956, 0.05089446, -0.039471556, -0.30950317, 0.10350312, 0.11603813, 0.08672152, -0.07706643, 0.29062438, 0.16422673, 0.074333824, 0.15247595, 0.068041846, -0.05291157, -0.15924777), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.008430657, 0.1884767, 0.15917906, 0.0063428413, -0.07987644, -0.04325211, -0.011584678, -0.010605869, -0.061187085, -0.09864619, -0.003040298, -0.08468758, 0.07886262, -0.14624445, -0.16320829, -0.01452985), target);\n\ttarget = MulAdd(na3, MF4x4(-0.08527653, -0.23416738, 0.06975244, 0.05253521, 0.061039444, -0.00083986257, 0.030380005, -0.023494298, -0.043048684, 0.14088461, 0.2651013, -0.069660574, -0.016013842, -0.051780187, -0.012583422, -0.033116736), target);\n\ttarget = MulAdd(nb3, MF4x4(-0.0006501486, -0.30294704, -0.22532716, 0.05011193, 0.065113634, 0.016704703, -0.045390636, 0.04377115, 0.11699081, 0.08135687, 0.020165889, 0.19826801, -0.018285288, -0.08564773, -0.26595154, -0.038110998), target);\n\ttarget = MulAdd(nc3, MF4x4(0.039095376, -0.0013404419, 0.012190645, 0.09428582, -0.11419318, 0.06917013, 0.034134097, 0.06616537, 0.03412512, 0.19301844, -0.055202305, 0.04042837, 0.04970565, -0.038846236, 0.13749482, -0.10204081), target);\n\ttarget = MulAdd(nd3, MF4x4(0.11721501, -0.12578778, 0.3620872, 0.21225488, -0.016926143, 0.006788099, -0.098553024, 0.07850037, 0.011090844, 0.029607147, -0.10133182, 0.09209217, -0.022987554, -0.20880799, 0.11736945, 0.051316652), target);\n\ttarget = MulAdd(ne3, MF4x4(0.07336128, 0.12248782, 0.15166189, 0.19264354, 0.04438999, 0.14751169, -0.20144647, -0.13824841, -0.007747583, -0.16739956, 0.06877802, 0.35830194, 0.26836118, 0.16978757, 0.020257233, -0.13465263), target);\n\ttarget = MulAdd(nf3, MF4x4(0.13214944, -0.06876062, 0.23750784, -0.021269983, 0.024918383, -0.26376384, 0.045127794, 0.13623215, 0.006213376, -0.08169226, -0.073229134, -0.007930807, -0.044477753, -0.0316362, 0.18907334, 0.11666457), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.043125346, 0.11734928, -0.075487934, 0.045608267, 0.0019688043, 0.050239112, 0.04037272, -0.05889949, 0.06669761, 0.12751873, 0.05863783, 0.0125279, -0.089946836, -0.12018046, -0.18921909, 0.023329671), target);\n\ttarget = MulAdd(nh3, MF4x4(0.2132003, -0.31702018, -0.13358426, -0.08583953, 0.0059259925, -0.094208315, -0.11922049, -0.099796474, 0.09348341, 0.32579756, 0.1124768, -0.049808096, -0.23310517, 0.26437998, 0.11376541, 0.13568696), target);\n\ttarget = MulAdd(ni3, MF4x4(0.20872836, -0.18229747, -0.24334186, 0.055828214, -0.05096774, -0.038215697, -0.15330918, 0.010210672, 0.018509107, 0.06662855, 0.029773839, 0.050827213, 0.18775174, -0.24382128, -0.28635338, 0.019148426), target);\n\tconv2d_5_tf2[gxy] = target;\n}\n\n//!PASS 7\n//!DESC Conv-4x3x3x24\n//!IN conv2d_5_tf, conv2d_5_tf1, conv2d_5_tf2\n//!OUT conv2d_6_tf, conv2d_6_tf1, conv2d_6_tf2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_5_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_5_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_5_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_5_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 a3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e3 = conv2d_5_tf2.SampleLevel(sam, pos, 0);\n\tMF4 f3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i3 = conv2d_5_tf2.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na3 = max(-a3, 0);\n\tMF4 nb3 = max(-b3, 0);\n\tMF4 nc3 = max(-c3, 0);\n\tMF4 nd3 = max(-d3, 0);\n\tMF4 ne3 = max(-e3, 0);\n\tMF4 nf3 = max(-f3, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 nh3 = max(-h3, 0);\n\tMF4 ni3 = max(-i3, 0);\n\n\ta3 = max(a3, 0);\n\tb3 = max(b3, 0);\n\tc3 = max(c3, 0);\n\td3 = max(d3, 0);\n\te3 = max(e3, 0);\n\tf3 = max(f3, 0);\n\tg3 = max(g3, 0);\n\th3 = max(h3, 0);\n\ti3 = max(i3, 0);\n\n\tMF4 target = MF4(-0.12422661, 0.036567487, -0.031888038, -0.011536189);\n\ttarget = MulAdd(a1, MF4x4(0.063551076, -0.16613434, 0.12519288, 0.2613413, 0.026815815, 0.07070773, -0.021043811, -0.0669755, -0.19316983, -0.19476847, -0.15389214, -0.009875319, -0.0604898, -0.114369385, 0.027538, 0.13774374), target);\n\ttarget = MulAdd(b1, MF4x4(-0.37544233, 0.12914102, 0.1366593, 0.31378758, 0.013987432, -0.06746779, -0.0083432635, 0.18277366, 0.09763598, 0.37610903, -0.04690116, -0.012697733, 0.26701328, -0.28395116, 0.20111044, -0.14729187), target);\n\ttarget = MulAdd(c1, MF4x4(-0.11672882, -0.07698176, 0.128088, 0.04008766, 0.10915507, -0.06849285, 0.10052956, -0.043884028, 0.07211199, -0.10226781, -0.022282045, 0.23409745, -0.12000992, 0.24038276, -0.09234301, 0.0005270855), target);\n\ttarget = MulAdd(d1, MF4x4(-0.09490642, -0.015582241, -0.19492888, -0.32142976, -0.08206514, -0.015905589, -0.058852483, 0.07062659, 0.26403823, 0.3431253, -0.026066927, -0.3181394, 0.08491617, 0.119145595, -0.13182211, 0.11299775), target);\n\ttarget = MulAdd(e1, MF4x4(-0.46511695, 0.041131947, -0.033913054, -0.02365193, -0.05553107, -0.07035273, -0.054731946, 0.14872038, 0.6574225, 0.43335545, -0.104082294, 0.07509184, -0.17075175, 0.45012367, -0.23016582, 0.11691375), target);\n\ttarget = MulAdd(f1, MF4x4(-0.11270771, 0.16805078, 0.06826135, 0.0033254998, -0.024538545, 0.09819631, 0.1497868, 0.07361046, 0.44126564, -0.08262802, -0.093892835, -0.017575772, 0.201439, -0.16137156, 0.020603918, -0.11584951), target);\n\ttarget = MulAdd(g1, MF4x4(-0.05802347, -0.008502925, 0.040704407, -0.018153232, 0.13748057, -0.01657812, 0.051693555, 0.049377594, 0.055863917, 0.033657834, -0.07277932, -0.090057924, -0.020979507, 0.045863025, -0.07975761, -0.051979877), target);\n\ttarget = MulAdd(h1, MF4x4(0.04014975, -0.08892218, 0.010484573, 0.10302432, 0.15378693, 0.08408517, 0.2501461, -0.24654758, 0.098134525, 0.02121331, -0.12720452, 0.18055904, -0.095695384, 0.07188886, -0.06675107, 0.024970558), target);\n\ttarget = MulAdd(i1, MF4x4(0.0036642263, -0.06313773, -0.037577838, -0.08352694, 0.015351579, -0.26856104, 0.006624689, 0.13869932, -0.17476316, 0.18687174, -0.10394873, 0.13418272, -0.079220034, 0.022169832, -0.031236127, -0.0339237), target);\n\ttarget = MulAdd(a2, MF4x4(-0.08630612, -0.0337143, -0.23126788, 0.06343892, 0.033023622, -0.03573692, 0.038431164, 0.13653663, -0.038872983, 0.0037933413, -0.04555905, 0.08925922, -0.13711931, -0.09402758, -0.010433323, 0.063199304), target);\n\ttarget = MulAdd(b2, MF4x4(-0.097609736, -0.078787506, -0.08567856, 0.013807229, 0.07355257, -0.06374568, 0.14115064, -0.044682432, 0.14670128, 0.18986551, -0.15207475, 0.06219552, 0.06450654, 0.124214396, 0.009615842, 0.10263959), target);\n\ttarget = MulAdd(c2, MF4x4(0.055290207, -0.040181328, -0.04919303, 0.020920292, 0.012198339, -0.06364409, -0.07055407, 0.036359143, 0.05182031, 0.23724687, 0.08679922, -0.18439333, 0.033763815, -0.011830226, 0.032295715, -0.07224721), target);\n\ttarget = MulAdd(d2, MF4x4(-0.018177355, 0.05537294, 0.09365121, -0.11162771, 0.032960154, -0.3631022, 0.020872682, 0.026997598, 0.008251562, 0.0121242, 0.08893235, -0.2972536, 0.31769535, 0.21222967, 0.26210263, -0.07804949), target);\n\ttarget = MulAdd(e2, MF4x4(-0.09234649, -0.2313192, 0.2007695, -0.16570407, 0.4998518, 0.5021211, -0.23046456, 0.4675977, -0.04418793, 0.15888585, 0.634594, 0.08088828, 0.72703683, -0.10338289, 0.39535734, 0.08798907), target);\n\ttarget = MulAdd(f2, MF4x4(-0.07732275, 0.03470451, -0.0053107208, 0.12719902, 0.059666194, -0.09585871, 0.1990709, 0.071376435, 0.3475797, -0.22143288, -0.20879894, -0.07166567, 0.12787548, -0.02100069, 0.19628522, 0.30982283), target);\n\ttarget = MulAdd(g2, MF4x4(-0.0066751963, -0.10570687, -0.040173814, -0.111826494, 0.12028746, -0.011818079, 0.100319766, 0.050529975, -0.031993337, -0.0011481771, 0.028475156, 0.035728168, -0.104264215, -0.1322591, -0.0906199, 0.18882063), target);\n\ttarget = MulAdd(h2, MF4x4(0.08835854, 0.07846953, -0.00819189, 0.016579857, -0.12914272, 0.07969864, -0.11249944, 0.09885958, 0.05813271, 0.034933876, -0.10564021, 0.039766613, -0.34965426, 0.22660616, -0.37486964, -0.12369291), target);\n\ttarget = MulAdd(i2, MF4x4(0.11392956, 0.030622995, -0.04730621, -0.015045563, 0.085018255, -0.007865196, -0.025682064, -0.133319, -0.054862365, 0.062044714, 0.05505255, 0.16293961, 0.016092334, -0.02829063, 0.022702925, -0.12809299), target);\n\ttarget = MulAdd(a3, MF4x4(0.02367039, -0.10482778, -0.08608669, -0.062093236, 0.011747762, 0.022175042, 0.0071996297, -0.11276182, 0.028712617, 0.04126311, -0.0038132998, -0.1115989, -0.083056234, -0.009934547, -0.040698178, -0.12683636), target);\n\ttarget = MulAdd(b3, MF4x4(-0.03936176, 0.013684187, -0.010472024, -0.10460055, 0.023214165, -0.010684623, 0.1418631, -0.09054893, -0.12086315, 0.17628363, -0.09017983, 0.058750905, -0.017493812, -0.017450733, 0.026728105, 0.00935395), target);\n\ttarget = MulAdd(c3, MF4x4(-0.027332857, 0.0099790655, -0.08163504, 0.17689545, 0.0068078213, -0.023418542, 0.008682474, 0.02548335, -0.094120994, -0.06916872, -0.010798773, 0.08256571, 0.054553654, -0.06724611, 0.10275257, -0.03569369), target);\n\ttarget = MulAdd(d3, MF4x4(0.08478009, 0.24308196, -0.05788887, -0.30866814, -0.01677214, -0.13036685, 0.114544466, 0.13763347, -0.1287353, -0.106372125, 0.06294474, -0.017131003, -0.036178716, 0.042261317, -0.04916793, 0.22008154), target);\n\ttarget = MulAdd(e3, MF4x4(0.113098085, -0.16627797, 0.2243724, 0.39611307, -0.14763622, -0.08843169, -0.041247193, 0.02559566, 0.26896805, -0.05941676, 0.081289455, -0.03463428, -0.32648194, -0.01743883, 0.14692393, -0.1419451), target);\n\ttarget = MulAdd(f3, MF4x4(-0.08624417, 0.039859742, -0.1319016, -0.13784388, -0.037280608, 0.04094322, -0.09264864, -0.14406647, 0.08943151, -0.012913666, 0.07797073, -0.011788144, 0.00781559, 0.09687341, -0.075485185, 0.029234888), target);\n\ttarget = MulAdd(g3, MF4x4(-0.03461818, -0.0578239, -0.11940533, 0.19817612, -0.06190108, 0.009414874, 0.00055699307, -0.032922342, 0.09611396, 0.017270042, 0.031782333, 0.053475976, -0.06507406, -0.11098162, 0.021986434, -0.15281019), target);\n\ttarget = MulAdd(h3, MF4x4(0.03300026, 0.14729956, -0.11484497, -0.09993908, 0.049616348, -0.075125255, 0.0945234, -0.071549594, -0.12840901, 0.17766954, -0.19627832, 0.115563445, 0.021435678, -0.13213344, 0.106521055, -0.045743156), target);\n\ttarget = MulAdd(i3, MF4x4(-0.07923801, -0.10016722, -0.15136302, -0.09258758, 0.041234676, 0.03441316, 0.112843126, 0.06979639, -0.10960315, 0.024976972, -0.11591057, 0.0046735895, 0.043591797, -0.1226487, 0.06454461, 0.1111232), target);\n\ttarget = MulAdd(na1, MF4x4(-0.029166799, 0.024781128, -0.04604433, -0.17043193, 0.04155139, -0.024739308, -0.00026802288, -0.07082753, 0.0899422, 0.09071587, 0.06616202, 0.06050842, -0.05764436, 0.10596236, 0.02040071, -0.17497559), target);\n\ttarget = MulAdd(nb1, MF4x4(-0.09035089, 0.0659, -0.14361084, -0.021721302, 0.016794743, 0.09347604, 0.1380016, -0.25160387, 0.17140736, 0.29569083, 0.121337526, -0.26241425, 0.06574208, -0.08532672, 0.09675172, 0.061919414), target);\n\ttarget = MulAdd(nc1, MF4x4(0.0777134, 0.021917641, 0.08300268, 0.025749028, -0.109934434, -0.25188968, -0.0045595216, -0.05616794, 0.028348224, -0.020761484, 0.06998775, -0.21368878, 0.03502115, 0.084822185, -0.053608585, 0.0076402165), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.019782236, -0.02927372, 0.08717013, 0.073102064, 0.00052576384, -0.015302635, 0.0621273, -0.00017607084, -0.029963085, -0.13835284, 0.11283739, 0.112313755, -0.01647687, -0.07729588, 0.04615463, 0.24352066), target);\n\ttarget = MulAdd(ne1, MF4x4(0.021634975, -0.23471251, 0.2007633, -0.07243054, -0.34169427, -0.3459408, -0.49702102, 0.062072285, 0.29644236, 0.0050523616, -0.27118742, -0.06865384, 0.101680025, 0.38019192, 0.13146457, 0.027077101), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.013608211, -0.077774465, -0.045174483, -0.023265246, 0.1321979, 0.3753417, 0.16121203, 0.019047128, 0.064994924, 0.052409865, 0.10563419, -0.00085220096, 0.11251547, -0.10566402, 0.0028090205, -0.10063887), target);\n\ttarget = MulAdd(ng1, MF4x4(0.046679504, 0.058594946, -0.06533285, -0.15811534, -0.07416471, 0.06988486, -0.04314425, 0.009497584, -0.009757547, -0.038767483, 0.17787239, 0.077745095, -0.0020354164, -0.058167685, 0.105233066, -0.06689146), target);\n\ttarget = MulAdd(nh1, MF4x4(0.12626402, 0.039072312, 0.10418004, -0.07277218, -0.02922791, -0.19852047, 0.24927165, -0.18751998, -0.08083378, -0.14444499, -0.058351975, -0.02419644, 0.12217534, -0.048507757, -0.08333956, 0.00162865), target);\n\ttarget = MulAdd(ni1, MF4x4(-0.029149413, -0.023871707, 0.022741226, 0.10378588, -0.0073062726, 0.036854163, -0.1929113, -0.12620242, -0.03716381, -0.018090466, 0.10779782, -0.019924738, 0.068666615, 0.07481716, 0.10826988, 0.14435701), target);\n\ttarget = MulAdd(na2, MF4x4(-0.107568674, 0.12906614, -0.11304603, -0.07186676, 0.12917557, 0.04622498, 0.052623924, 0.027181726, 0.03726036, -0.05536048, -0.056134712, 0.0692713, -0.0931205, -0.013530341, -0.079496436, 0.07122584), target);\n\ttarget = MulAdd(nb2, MF4x4(0.21643913, 0.008973324, 0.2473282, -0.22151545, 0.10534174, 0.014311179, 0.12648374, -0.33117563, -0.115273096, -0.07306515, -0.019514188, 0.03442445, 0.02174929, 0.15782723, -0.15441503, -0.024714287), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.09689197, 0.019095143, -0.034944948, -0.20796263, 0.06224929, -0.0023227853, 0.07867864, -0.046337705, -0.097502016, -0.0011326018, -0.047669414, 0.07279011, -0.04423047, 0.014121719, -0.026950205, 0.14154369), target);\n\ttarget = MulAdd(nd2, MF4x4(0.11617495, 0.46741408, 0.07166562, -0.3171231, -0.06699714, 0.12959749, 0.10611542, -0.08962664, -0.055559576, 0.08383856, -0.07885361, -0.076587684, -0.0048291516, -0.04309975, 0.045905527, 0.036698442), target);\n\ttarget = MulAdd(ne2, MF4x4(0.0036613978, -0.03133137, -0.09741661, 0.4476952, -0.05623356, -0.5347433, -0.15121926, -0.62327516, -0.34650013, -0.3848976, -0.1020635, 0.12372888, -0.17733924, -0.3116026, -0.26149738, -0.12756832), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.18341129, 0.27638572, 0.18640736, 0.07301684, 0.0031105333, 0.10374691, -0.118262894, -0.12854561, -0.07307097, -0.0043694526, -0.103828765, 0.0033327888, -0.11450939, -0.036062073, -0.08388783, -0.18569045), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.06513565, -0.0906451, -0.07992863, 0.1555351, 0.053517826, 0.059623975, -0.04589495, -0.06759139, 0.041854616, -0.022462321, -0.03875089, 0.099266365, -0.04334954, -0.011625454, -0.03120097, -0.028311051), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.2698161, 0.4855855, 0.29649052, 0.08579708, -0.17665233, 0.11236429, 0.17814405, 0.2936427, 0.0014580752, -0.01460852, 0.12992013, -0.06554696, 0.08688421, 0.016707266, -0.035805132, -0.21390212), target);\n\ttarget = MulAdd(ni2, MF4x4(0.087546945, -0.08082606, 0.026020724, -0.22158769, 0.079808585, 0.008027633, 0.17506911, 0.24715161, -0.089454755, -0.12723146, -0.014873311, -0.080931105, -0.037702024, 0.069683395, 0.03398877, 0.050660603), target);\n\ttarget = MulAdd(na3, MF4x4(0.18083133, 0.072747, 0.026843961, 0.060125593, -0.0028814252, 0.055027924, -0.23592432, -0.3128924, 0.07353004, -0.040734287, 0.063891344, 0.12827826, 0.035035152, -0.07543958, 0.084599234, 0.13021721), target);\n\ttarget = MulAdd(nb3, MF4x4(0.063158885, 0.08223479, 0.069820456, 0.021643702, 0.07788084, -0.078388534, 0.13722488, 0.25833505, -0.10396639, 0.0041446807, 0.023278937, 0.22537926, 0.17745169, 0.22081025, -0.09535902, -0.12220001), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.05432123, 0.087425314, 0.018276695, -0.124169916, -0.00543602, 0.12574154, -0.06011572, 0.04701218, -0.10479224, 0.032153737, -0.06034692, 0.16422245, -0.13862014, -0.06484846, -0.064395554, 0.20665741), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.11319914, 0.18695734, 0.3806953, -0.069110036, -0.24979821, 0.26608357, 0.45578855, -0.37055442, 0.08747221, 0.11386838, -0.09471413, -0.17466134, 0.20953615, 0.20999484, 0.12287149, -0.41018328), target);\n\ttarget = MulAdd(ne3, MF4x4(0.5564517, -0.2048937, -0.3816632, -0.06279082, -0.38774204, 0.21217284, -0.18890436, 0.14043479, 0.024926476, 0.17045365, 0.048644193, -0.17100555, -0.15697347, -0.35342333, 0.068213716, -0.41174227), target);\n\ttarget = MulAdd(nf3, MF4x4(0.045869917, -0.0015854153, 0.08683202, 0.09068768, -0.083463475, -0.31756514, 0.1342369, -0.088171095, 0.056276016, -0.23685989, 0.014580776, -0.2547697, 0.0940006, -0.043395106, 0.2034087, -0.022825241), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.103751905, 0.069453366, -0.109700166, 0.042392224, 0.080248766, 0.094016075, -0.17143534, 0.05994925, -0.018760482, -0.04515021, 0.014608747, 0.06235974, -0.04300025, 0.093254045, -0.048682634, 0.28064325), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.014232481, -0.08903044, 0.019999523, -0.020324621, -0.24016748, -0.2474486, -0.40321103, -0.15829015, -0.13566887, -0.041250605, -0.04751285, 0.057329945, 0.10219304, 0.05605011, -0.025595296, -0.01614233), target);\n\ttarget = MulAdd(ni3, MF4x4(0.025537677, 0.12660079, 0.051864993, 0.075601384, -0.021362955, 0.19969231, 0.123610884, 0.07575372, -0.061927922, 0.06550312, -0.05508335, 0.11704227, -0.13762979, 0.1817394, -0.18983638, -0.049257904), target);\n\tconv2d_6_tf[gxy] = target;\n\t\n\ttarget = MF4(0.07794292, -0.028107546, -0.059174247, 0.018621715);\n\ttarget = MulAdd(a1, MF4x4(-0.031695515, -0.31290495, 0.17557557, -0.10072623, 0.037879907, 0.07773684, 0.015941558, -0.1166975, 0.19065462, -0.18290205, 0.233234, 0.028230593, -0.16707195, -0.10103979, -0.1561307, 0.09858236), target);\n\ttarget = MulAdd(b1, MF4x4(-0.37433225, -0.37697765, 0.15590142, 0.3016965, 0.014981114, -0.07988245, 0.014191019, -0.0011213939, -0.11375956, -0.052503657, -0.013733191, 0.15110013, 0.009139605, 0.1890766, -0.29809618, -0.31938305), target);\n\ttarget = MulAdd(c1, MF4x4(0.043140218, -0.1566104, -0.002536191, -0.16493355, -0.211366, -0.021915436, -0.28728947, -0.14439434, 0.095511094, 0.056860972, -0.08280981, -0.21611294, 0.13561454, 0.0033129812, 0.14235094, 0.3003919), target);\n\ttarget = MulAdd(d1, MF4x4(0.010960085, 0.00600542, -0.2367317, 0.021453537, -0.03856116, -0.034778543, 0.164726, 0.13019681, -0.07757383, 0.33985314, -0.23832978, 0.095343575, 0.022204291, 0.20711215, 0.15877703, 0.2751253), target);\n\ttarget = MulAdd(e1, MF4x4(0.19641247, 0.032707132, 0.04379372, -0.21997298, -0.035852924, 0.06185132, 0.1484587, -0.36117685, -0.46992078, -0.41587535, 0.37467077, 0.09044606, -0.06615961, -0.4794214, 0.039470922, -0.3396352), target);\n\ttarget = MulAdd(f1, MF4x4(0.16657054, -0.039237928, 0.03857829, 0.049146365, 0.0401756, -0.03342998, 0.20032202, 0.05834436, 0.088986784, -0.16494772, -0.33883873, 0.18655993, -0.15986481, 0.091252044, 0.041209027, 0.15528268), target);\n\ttarget = MulAdd(g1, MF4x4(0.048688952, -0.009118804, 0.02290845, -0.17133589, -0.17210291, -0.027337966, -0.13893692, -0.07628787, -0.011510589, -0.04428704, 0.0015265835, -0.1197242, -0.011102018, -0.012120708, 0.06624063, 0.009720241), target);\n\ttarget = MulAdd(h1, MF4x4(-0.27416044, -0.120502286, 0.17721373, -0.16811286, -0.014482372, 0.02126685, -0.091303095, -0.16043608, 0.27898774, 0.17883328, -0.2844939, 0.21557346, 0.090356916, 0.10218719, 0.011249428, -0.10255321), target);\n\ttarget = MulAdd(i1, MF4x4(-0.12067477, -0.07217142, -0.04221149, 0.019745756, -0.26648012, -0.19199371, 0.029601155, 0.13147698, 0.23245896, 0.11450761, 0.1694102, -0.2318312, 0.0016206031, -0.0178794, 0.11511889, 0.04575681), target);\n\ttarget = MulAdd(a2, MF4x4(0.18695508, 0.045567334, 0.17440668, -0.42288253, -0.02287028, 0.05679073, -0.05641905, 0.12937486, 0.08140183, 0.013775387, 0.085393906, -0.124689564, 0.02426034, -0.08368493, -0.03149937, 0.12990832), target);\n\ttarget = MulAdd(b2, MF4x4(-0.10630359, -0.05139905, -0.14252634, 0.12539144, -0.07805999, -0.16011941, -0.12794735, 0.0023225932, -0.29767594, -0.0324489, -0.08008453, -0.10285779, 0.10714244, 0.07701981, 0.0861595, 0.032702547), target);\n\ttarget = MulAdd(c2, MF4x4(-0.011266752, 0.032032244, -0.16621222, 0.025718216, -0.13606001, 0.049900856, -0.12395804, -0.023709433, -0.019833436, 0.05525729, 0.043920193, 0.07480689, -0.06805129, -0.050729908, 0.015684852, -0.07608439), target);\n\ttarget = MulAdd(d2, MF4x4(-0.2432357, -0.08149558, -0.0954787, 0.13050736, 0.0658002, -0.15775995, -0.26192164, 0.07967364, -0.050966308, -0.15967421, -0.09035987, -0.19794956, 0.040908057, 0.1914722, -0.1416288, 0.20905873), target);\n\ttarget = MulAdd(e2, MF4x4(-0.31780317, -0.0037020883, 0.057150707, 0.4200519, 0.5618687, -0.047172155, -0.12254693, -0.014847399, 0.37398118, 0.3375763, 0.16677848, -0.06745357, 0.17024885, -0.22058573, -0.30246857, -0.5453735), target);\n\ttarget = MulAdd(f2, MF4x4(0.30349696, 0.009769963, 0.28675693, -0.118276045, 0.0057877507, 0.10974996, -0.072690375, 0.030470189, -0.6150014, 0.17645302, 0.2928011, 0.07855985, 0.17192386, 0.12024906, -0.07183019, 0.10537094), target);\n\ttarget = MulAdd(g2, MF4x4(-0.088262424, -0.14806455, 0.08148428, 0.10594823, 0.049873143, -0.013990187, 0.07425902, -0.030937834, 0.016817184, 0.08583546, -0.111037634, 0.09831576, 0.052983984, 0.024797885, 0.15503147, -0.052295715), target);\n\ttarget = MulAdd(h2, MF4x4(0.09108395, 0.025693672, -0.17206948, -0.02877885, 0.008410392, -0.08324596, -0.05451186, 0.10528576, -0.09902025, 0.20654637, -0.15849939, -0.022103371, 0.06444531, -0.12143805, 0.20113671, 0.14274625), target);\n\ttarget = MulAdd(i2, MF4x4(0.005467573, 0.16239832, -0.28808126, -0.21795005, -0.06378709, -0.0672865, -0.052615914, -0.08036216, 0.10728027, -0.09125139, -0.0835933, -0.08187764, 0.05370785, -0.019258037, -0.23184206, 0.2632737), target);\n\ttarget = MulAdd(a3, MF4x4(-0.05926071, 0.07018913, -0.021344975, 0.054756, -0.052149706, 0.0037597087, 0.0025042086, -0.04395278, 0.12245118, 0.04250789, 0.082335964, -0.014749995, -0.08621224, -0.023798082, 0.06332712, -0.11675374), target);\n\ttarget = MulAdd(b3, MF4x4(-0.32227162, -0.14337637, -0.23739144, -0.19812642, -0.09722166, 0.009280866, 0.04054724, 0.15704393, 0.07489584, -0.11492752, 0.09819001, 0.15120374, -0.14586051, -0.16354702, 0.23314816, -0.0022859343), target);\n\ttarget = MulAdd(c3, MF4x4(0.16142578, 0.075490505, -0.021885784, 0.06261672, 0.041199893, 0.03871687, 0.023842737, -0.011376236, 0.0767961, -0.045730814, 0.22563088, -0.09038255, -0.18399398, -0.04494118, -0.095894225, 0.030498588), target);\n\ttarget = MulAdd(d3, MF4x4(0.12479204, 0.101474956, 0.36386368, -0.050215095, 0.07824311, -0.10407957, -0.04313255, 0.32900745, -0.192804, -0.19723284, -0.06199248, 0.024969265, 0.22347516, 0.0065552266, 0.16316769, -0.03117915), target);\n\ttarget = MulAdd(e3, MF4x4(-0.41610017, -0.26189142, 0.9749233, -0.2030862, -0.018032711, 0.010767388, 0.021800261, -0.0042601344, -0.23240276, 0.3338158, -0.17494468, 0.17937262, 0.07974937, 0.33006057, -0.1869896, -0.37869284), target);\n\ttarget = MulAdd(f3, MF4x4(-0.071573325, 0.007554784, -0.102258176, 0.10642047, -0.09556476, -0.017912954, -0.14906247, 0.026633078, -0.08621331, 0.0017594047, -0.19624764, -0.115420476, 0.080624446, 0.05765888, 0.13215272, -0.035700615), target);\n\ttarget = MulAdd(g3, MF4x4(-0.0699439, -0.031065576, -0.1347926, 0.04561651, 0.026325148, 0.04517171, 0.027460657, 0.07887253, 0.09662138, -0.032300167, 0.18762928, 0.017682185, -0.21272552, -0.120953396, 0.07463968, 0.16759431), target);\n\ttarget = MulAdd(h3, MF4x4(0.031983048, 0.091939285, -0.29471913, -0.17392102, -0.029960087, -0.045441393, 0.11517783, 0.043017738, 0.19772391, 0.18100426, -0.023260262, 0.047123328, -0.34043354, -0.14247705, 0.2169891, -0.022246636), target);\n\ttarget = MulAdd(i3, MF4x4(-0.17198563, -0.23428284, 0.004200898, -0.024755895, 0.08732965, -0.0014298835, 0.14354117, -0.04866547, 0.040317383, -0.06782393, -0.098272204, 0.0007879826, -0.09150929, -0.013316801, 0.001446828, 0.017795574), target);\n\ttarget = MulAdd(na1, MF4x4(0.047712177, 0.050632354, 0.16054401, 0.043701835, -0.0639787, -0.027759142, -0.1216413, 0.06168221, 0.09751688, -0.0066430112, -0.06975059, -0.10249115, -0.12326384, -0.0046392973, -0.03523632, 0.11676963), target);\n\ttarget = MulAdd(nb1, MF4x4(0.0820976, -0.011279764, 0.06630965, 0.09390872, -0.24890396, -9.822562e-05, -0.114006236, 0.16826034, -0.082640596, 0.019303065, 0.14685081, 0.07503404, -0.17926271, -0.07983414, -0.04422908, 0.11301981), target);\n\ttarget = MulAdd(nc1, MF4x4(0.03553145, 0.0047965297, 0.08901363, 0.004263101, -0.15945294, -0.114194945, -0.059667293, 0.049415316, -0.09466441, -0.05142749, 0.15767507, -0.11340187, 0.10369652, 0.085223176, -0.06318044, -0.11618208), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.17031148, -0.11489388, 0.24808751, 0.030365555, 0.054884836, -0.041506488, 0.038115, -0.064155854, 0.120106734, -0.100374915, -0.2048057, 0.09855774, 0.34214836, 0.01592769, 0.3974824, -0.009733501), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.37295908, 0.05345721, 0.24855454, 0.18375815, 0.41732857, 0.059994586, 0.14148045, 0.15674202, 0.2914617, 0.28635538, 0.21487242, -0.16498509, 0.26191583, 0.34904888, -0.001136933, -0.047465373), target);\n\ttarget = MulAdd(nf1, MF4x4(-0.12775165, -0.13414834, 0.035279494, 0.0065703453, 0.21533409, -0.025021361, 0.3468732, -0.08434002, -0.0125741605, 0.0472579, -0.006702024, 0.03674878, -0.1543125, 0.12252382, -0.15259196, -0.10377763), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.05423773, 0.076934956, -0.03817735, -0.0006111581, 0.017648958, 0.061248343, -0.01635863, 0.015901048, -0.14749493, -0.041009318, 0.030646784, 0.021186778, -0.15973417, 0.032205433, -0.36817935, 0.17054902), target);\n\ttarget = MulAdd(nh1, MF4x4(0.009821799, 0.023463782, -0.04574981, -0.03205052, -0.11479379, -0.1499543, -0.10254226, 0.14878044, -0.18908015, -0.057776958, 0.22117394, -0.008997101, -0.10566478, 0.029807804, 0.06296724, -0.09863535), target);\n\ttarget = MulAdd(ni1, MF4x4(0.012764414, 0.08003188, -0.079312325, 0.10915366, -0.14269702, 0.15378389, -0.11343741, -0.07815755, -0.028972412, -0.07575102, 0.104069054, 0.16929798, 0.08356986, -0.008557804, 0.1077067, -0.104730316), target);\n\ttarget = MulAdd(na2, MF4x4(0.14354274, 0.027146077, 0.06354999, -0.15823694, 0.11064279, 0.05926018, -0.09556645, -0.13623793, 0.064755484, -0.009504007, -0.04298976, -0.22026266, 0.19957776, -0.009840124, 0.08703728, 0.07162153), target);\n\ttarget = MulAdd(nb2, MF4x4(-0.2091648, -0.0857283, -0.30748418, 0.21271354, -0.18100224, -0.0055695246, -0.06332844, 0.17306994, 0.0077473186, 0.037243642, 0.012746569, 0.37735906, 0.23314455, 0.19154081, 0.05688001, -0.23929437), target);\n\ttarget = MulAdd(nc2, MF4x4(0.063928135, 0.058101837, -0.07964053, 0.09656037, 0.06193066, 0.052388765, 0.019220868, 0.09141577, 0.07279361, 0.03293571, 0.04207099, 0.100502975, 0.07098165, -0.03792573, 0.029752802, 0.00073165854), target);\n\ttarget = MulAdd(nd2, MF4x4(-0.061411377, 0.44493172, -0.2499116, 0.16028905, -0.24095571, -0.09098111, 0.2505775, -0.20317478, -0.046060897, 0.026942013, -0.1443618, -0.09946402, -0.2845509, 0.02574587, -0.10171842, 0.32726362), target);\n\ttarget = MulAdd(ne2, MF4x4(0.41548893, 0.55772763, 0.21224521, -0.2974941, -0.1518538, -0.096886665, 0.25241733, 0.48857507, -0.23768853, -0.24405806, 0.04989141, 0.18301181, -0.39112365, -0.29253578, 0.059537925, -0.01779737), target);\n\ttarget = MulAdd(nf2, MF4x4(0.038118728, 0.02858742, 0.6223735, -0.2673519, -0.0107285725, -0.05190993, 0.009639665, -0.01759551, 0.056182634, 0.0017370619, 0.015566999, 0.37397447, -0.18057133, -0.16243981, -0.06748175, 0.057786137), target);\n\ttarget = MulAdd(ng2, MF4x4(-0.011669291, -0.110343516, 0.28674936, -0.04969038, 0.32003263, 0.064857155, 0.013674471, -0.039692417, 0.040436286, -0.06889466, 0.037186123, -0.05564364, -0.025551032, -0.11479799, -0.12857372, -0.052941844), target);\n\ttarget = MulAdd(nh2, MF4x4(0.28328392, 0.39322296, 0.36961278, -0.3133618, 0.4632272, 0.11075263, 0.14776857, 0.29629925, -0.106794536, -0.17243811, 0.06743955, -0.06816463, 0.19705069, 0.16638671, -0.47120842, 0.15028188), target);\n\ttarget = MulAdd(ni2, MF4x4(-0.24694128, -0.13387236, 0.013511744, 0.23480985, 0.15844229, 0.15348844, 0.08692795, -0.026089827, -0.18550861, -0.105919205, 0.13584319, 0.14189197, 0.098633386, 0.03923177, 0.17303325, 0.0035986274), target);\n\ttarget = MulAdd(na3, MF4x4(0.07525532, -0.049425937, -0.045742936, -0.34401855, 0.23614922, 0.1365458, 0.5367143, -0.34322664, 0.08580669, -0.021081364, 0.32258797, 0.054717902, 0.011307636, -0.13174307, 0.10635861, 0.15759683), target);\n\ttarget = MulAdd(nb3, MF4x4(0.2053648, 0.11536576, 0.06543424, 0.273532, 0.004836322, -0.1135091, -0.13175261, -0.010553481, 0.26788777, 0.0052754665, 0.21684328, -0.038834624, 0.15681003, 0.2551737, -0.08061695, -0.2621798), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.0026197245, -0.04237014, 0.15965913, 0.011015912, 0.13959743, 0.0613557, -0.057478882, 0.04333705, 0.02150156, 0.02613718, 0.029849462, 0.04144389, 0.060642015, -0.055863846, 0.07513707, -0.030098947), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.25804156, 0.07992937, -0.2194363, -0.07638968, -0.31182626, 0.06877212, 0.26326504, -0.07852368, 0.005371965, 0.13532336, -0.27899355, -0.21762428, -0.11019938, 0.3272873, -0.18966602, 0.13429517), target);\n\ttarget = MulAdd(ne3, MF4x4(0.13235348, 0.19412184, -0.14834474, 0.045169294, -0.12562896, 0.42018193, -0.111528605, 0.14010738, -0.19459967, 0.013526394, -0.41562226, 0.0028783067, -0.62609005, -0.3033415, 0.4712338, 0.8222809), target);\n\ttarget = MulAdd(nf3, MF4x4(0.09286205, 0.09806087, -0.07340961, -0.17533489, 0.027318375, -0.10870942, -0.038293675, -0.16472916, -0.1825589, -0.052559845, -0.30276018, -0.14359148, -0.21606436, -0.110118784, 0.016834917, -0.17742018), target);\n\ttarget = MulAdd(ng3, MF4x4(-0.020260928, 0.087848864, 0.047859445, -0.047904506, 0.048111416, 0.1583765, -0.20442098, -0.100690275, -0.0013411752, -0.07799378, 0.15336171, -0.10123076, 0.17678842, 0.17897983, -0.09674411, -0.011004586), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.018577576, -0.06431042, 0.09155964, 0.015572989, -0.2997381, -0.27266306, -0.038626052, 0.049783256, -0.0104627805, -0.00770176, 0.11773571, 0.1784294, 0.09392711, 0.034571096, 0.11028318, -0.09109526), target);\n\ttarget = MulAdd(ni3, MF4x4(0.16055113, 0.090300724, -0.03638531, -0.04085534, 0.08429917, 0.020470984, -0.19414762, -0.3244146, 0.14926222, -0.04275537, 0.3243775, -0.27660474, 0.21811403, 0.00095158996, -0.029139725, -0.14773428), target);\n\tconv2d_6_tf1[gxy] = target;\n\n\ttarget = MF4(-0.024488186, -0.041086167, 0.026466459, -0.025512012);\n\ttarget = MulAdd(a1, MF4x4(0.24537118, 0.17905983, 0.07789307, 0.016952513, 0.0141091775, -0.011334478, -0.031922385, -0.002754333, -0.09490796, 0.056371696, -0.011801579, -0.13965698, -0.035000853, -0.004262493, 0.07772451, 0.08179461), target);\n\ttarget = MulAdd(b1, MF4x4(0.49467468, 0.0060151266, -0.16210476, 0.44510034, 0.032212194, 0.028270312, -0.002976181, -0.0750645, -0.120187126, -0.3223084, -0.036695287, -0.27901456, 0.026024181, -0.38380507, -0.107403666, 0.106261775), target);\n\ttarget = MulAdd(c1, MF4x4(-0.27276495, 0.07816642, 0.16584107, 0.3256445, -0.003785352, -0.05884198, -0.028097598, 0.09085398, 0.18065354, 0.12995216, -0.012668798, -0.18628691, 0.14217433, 0.060047373, 0.13106324, 0.002042596), target);\n\ttarget = MulAdd(d1, MF4x4(-0.086455494, -0.14862305, -0.525558, 0.16174366, -0.07319531, 0.15502526, -0.010380826, -0.07271152, 0.19700976, 0.046370283, 0.11651438, 0.081478894, 0.19148621, 0.03100971, 0.1023476, 0.07874108), target);\n\ttarget = MulAdd(e1, MF4x4(0.6140143, -0.027726987, -0.009253838, -0.2904735, -0.0004950705, -0.17041264, -0.16776061, 0.0082762465, -0.3594797, 0.2532505, -0.6598625, 0.19527398, -0.2580451, -0.047699004, -0.19487855, 0.26656064), target);\n\ttarget = MulAdd(f1, MF4x4(-0.05993486, 0.05261301, -0.11092236, -0.07093469, -0.12740676, 0.28895375, -0.024522636, 0.10566457, 0.25105092, -0.19367103, 0.31918752, -0.08284367, 0.010306112, -0.16058734, 0.025336768, -0.1421889), target);\n\ttarget = MulAdd(g1, MF4x4(-0.30034626, 0.20041251, 0.038978297, 0.24891369, 0.16952564, -0.08357092, 0.0041356883, -0.11644513, 0.09228839, -0.112779655, 0.026311902, 0.06545678, 0.0698254, -0.112796366, 0.0029497906, 0.03857845), target);\n\ttarget = MulAdd(h1, MF4x4(0.16609864, -0.22584435, -0.24474208, -0.27484784, -0.31675163, 0.07935485, 0.18763326, 0.13037825, 0.11668147, -0.2776588, -0.11885876, -0.051946215, 0.0821847, 0.012703901, -0.0351841, -0.10732197), target);\n\ttarget = MulAdd(i1, MF4x4(0.14786936, 0.04071705, 0.030221082, -0.120953605, -0.013662891, -0.14799207, -0.028566806, -0.13245614, 0.09371325, 0.0018758543, -0.075789824, 0.021227634, -0.0687209, 0.04126068, 0.01861056, 0.00038673988), target);\n\ttarget = MulAdd(a2, MF4x4(-0.2150947, 0.019924847, -0.057041053, -0.055024747, 0.04864997, -0.010266812, 0.12674728, 0.0916339, 0.02709077, -0.042510916, -0.15185884, -0.1128658, 0.054390796, -0.12276366, -0.07853503, 0.16050841), target);\n\ttarget = MulAdd(b2, MF4x4(0.14254624, 0.09403803, -0.077061795, -0.040265787, -0.1851944, 0.03568108, -0.064231634, 0.057467405, 0.10839864, 0.67165095, 0.31980324, -0.22381754, -0.094957665, 0.081498906, 0.061563525, -0.061372254), target);\n\ttarget = MulAdd(c2, MF4x4(-0.026212232, -0.016600188, -0.032421675, -0.018441828, -0.0039220974, -0.092276715, -0.05251956, -0.0014283194, -0.07582186, -0.34406552, 0.012223887, 0.16421928, 0.067920506, -0.04867461, -0.025583208, -0.02245058), target);\n\ttarget = MulAdd(d2, MF4x4(0.06561416, 0.08525047, -0.06454739, 0.03325223, -0.2756252, -0.07606139, -0.16622546, -0.19015047, -0.0942788, 0.055729307, 0.08911129, 0.036073096, 0.2819285, 0.27803645, 0.41541302, -0.46012112), target);\n\ttarget = MulAdd(e2, MF4x4(0.116886355, 0.25485554, -0.08467562, 0.015698416, 0.120505005, 0.14997847, 0.35307086, 0.06391821, 0.2480685, -0.91017604, 0.30765083, 0.41334546, -0.2484761, 0.0036243596, -0.17822865, -0.0688765), target);\n\ttarget = MulAdd(f2, MF4x4(-0.018610235, 0.10026272, 0.09050735, 0.09349237, -0.32725444, -0.04461541, -0.08524241, -0.07169624, -0.17375232, -0.04668291, 0.1105147, -0.21981657, 0.14551818, -0.09236485, 0.22311887, 0.22838955), target);\n\ttarget = MulAdd(g2, MF4x4(-0.046239845, 0.092623316, 0.06968011, -0.07118946, -0.112399414, 0.12900421, 0.1622531, -0.06568552, -0.0046933675, -0.015529387, -0.035191614, 0.01626195, -0.081475765, -0.05045334, -0.087063916, -0.2726226), target);\n\ttarget = MulAdd(h2, MF4x4(0.20086902, -0.105082855, 0.064632416, 0.032850675, -0.14514364, -0.08420714, -0.49481058, 0.20139864, 0.17293651, -0.013185847, 0.061619177, 0.3313921, -0.3385868, 0.23518777, -0.33251905, 0.17975967), target);\n\ttarget = MulAdd(i2, MF4x4(0.06966267, -0.06778524, -0.013489221, 0.08452447, -0.06677413, 0.024880748, 0.0966029, -0.14441288, 0.117813595, -0.021073775, -0.10008402, 0.16905701, 0.1681992, 0.023752017, 0.10749209, 0.12432793), target);\n\ttarget = MulAdd(a3, MF4x4(-0.1513078, -0.093761355, -0.0030828249, -0.110072024, -0.055719357, -0.009922474, -0.043953415, 0.050671145, -0.060472284, 0.028386949, -0.013459928, -0.081548885, -0.0835807, 0.02647864, -0.20652756, -0.0060736574), target);\n\ttarget = MulAdd(b3, MF4x4(0.028220167, -0.028944401, -0.19519375, 0.13515931, -0.00042262973, 0.08360426, 0.010636624, -0.030487528, 0.27422678, -0.045074224, 0.07301797, 0.006780949, -0.08468292, -0.04887693, -0.09148827, 0.018867895), target);\n\ttarget = MulAdd(c3, MF4x4(0.1262579, 0.018898701, 0.13322218, 0.035301305, -0.07070634, -0.0078546405, 0.027999826, 0.048316766, -0.15131034, 0.0023264016, 0.013600765, -0.034428634, -0.07507105, -0.08255354, -0.08881507, -0.071658276), target);\n\ttarget = MulAdd(d3, MF4x4(-0.02041055, 0.22154346, 0.26627985, 0.0605345, -0.058928274, -0.06632422, 0.009541804, 0.030693937, -0.11625062, 0.050398614, -0.08913635, -0.048804708, 0.05243602, 0.07607664, -0.11982216, -0.030418042), target);\n\ttarget = MulAdd(e3, MF4x4(-0.17171955, -0.1251785, -0.03278011, -0.027012454, -0.14810622, 0.011841085, -0.17640975, -0.15179725, 0.28515115, -0.14059372, 0.7398977, 0.016162258, 0.39136347, 0.39292285, 0.1379987, 0.3367675), target);\n\ttarget = MulAdd(f3, MF4x4(-0.010929663, -0.06879933, -0.08348263, 0.03733299, 0.062476087, 0.01568991, -0.05271144, 0.04062246, 0.032427862, -0.113407016, -0.12636085, -0.016191803, 0.17277598, 0.08344308, 0.038378276, 0.073893026), target);\n\ttarget = MulAdd(g3, MF4x4(0.17167374, -0.121874295, -0.088408865, -0.235186, -0.13921842, 0.07555293, -0.041501705, 0.050021265, -0.087886505, -0.08035099, 0.09180792, 0.05183994, -0.26203418, 0.04711709, -0.10731481, -0.14843997), target);\n\ttarget = MulAdd(h3, MF4x4(-0.036347087, 0.01029584, -0.056132622, 0.0878486, -0.064945646, 0.07907602, 0.12751542, 0.02885936, 0.23358488, -0.029665042, -0.29615182, -0.10431463, 0.023203064, 0.069443814, -0.1002703, -0.096389264), target);\n\ttarget = MulAdd(i3, MF4x4(0.035990857, 0.10344318, 0.022896135, -0.07152821, 0.05887347, -0.015482111, -0.014297709, 0.055369038, -0.02750558, 0.08424956, 0.04510472, 0.017769516, 0.04108422, -0.07342653, -0.08320298, 0.066610456), target);\n\ttarget = MulAdd(na1, MF4x4(-0.066317484, 0.04255107, -0.07966337, -0.124135956, -0.018745063, -0.010161496, -0.011399174, 0.039982356, 0.15349951, 0.062997095, 0.045578636, 0.107150234, -0.032815512, -0.13440657, -0.040952615, 0.18263227), target);\n\ttarget = MulAdd(nb1, MF4x4(0.10633369, -0.018656015, -0.016764622, -0.04388912, 0.08758304, 0.19932802, 0.046600826, 0.016901758, 0.21165867, -0.025475888, 0.07850137, 0.06617148, -0.16846764, 0.40805286, -0.06401491, -0.080602095), target);\n\ttarget = MulAdd(nc1, MF4x4(-0.123656854, -0.014010881, 0.028575048, -0.069250524, -0.15018106, 0.103246264, -0.11777147, -0.05850124, -0.1353436, -0.0013566307, -0.015963338, -0.023948817, 0.095956124, -0.039555125, 0.076399274, 0.07427479), target);\n\ttarget = MulAdd(nd1, MF4x4(-0.015483045, -0.12661438, 0.04873668, -0.08844129, -0.011324154, -0.109799534, -0.023892801, 0.05610018, -0.05156818, -0.046244036, -0.119778745, -0.072065085, -0.106656425, 0.088378794, 0.011626502, -0.11913755), target);\n\ttarget = MulAdd(ne1, MF4x4(-0.04775599, 0.16536692, 0.07654365, -0.180473, -0.2773871, 0.16781096, -0.15096998, -0.15038413, 0.09663952, -0.12574138, -0.079353325, 0.15394118, 0.19871943, 0.1274317, -0.015473073, -0.13977093), target);\n\ttarget = MulAdd(nf1, MF4x4(0.046030425, -0.0035080586, 0.00019108523, -0.061198276, 0.10959022, -0.08084982, 0.17658228, -0.077856205, -0.06706116, -0.021110784, -0.014351807, -0.13647127, -0.15924501, -0.045259945, -0.08266116, 0.18638277), target);\n\ttarget = MulAdd(ng1, MF4x4(-0.016468504, -0.0060328534, -0.027133752, -0.011417157, -0.0060868333, 0.14410168, -0.02163876, 0.02426387, -0.045196433, -0.050631806, -0.03250163, -0.05960187, -0.032833368, 0.07025108, -0.008574312, 0.04666302), target);\n\ttarget = MulAdd(nh1, MF4x4(0.16550453, -0.12357287, 0.10894651, 0.061207913, -0.26402593, 0.05317881, 0.17066815, 0.035360787, -0.2500221, 0.0465414, -0.07445082, 0.08822553, 0.09093388, 0.026007025, 0.02103897, -0.008406647), target);\n\ttarget = MulAdd(ni1, MF4x4(0.008951011, -0.011805461, -0.041415952, -0.004712088, 0.107074626, -0.040568706, -0.09944574, -0.06400702, -0.033343032, 0.013737211, -0.0889104, -0.013806611, -0.0331564, 0.0051299958, 0.015190706, 0.02362979), target);\n\ttarget = MulAdd(na2, MF4x4(-0.122751765, 0.1503006, -0.08277906, 0.18938261, 0.004363168, 0.07933008, 0.07121668, -0.0833466, -0.014839421, -0.066141434, 0.015289756, -0.040877122, -0.028999893, 0.1169574, 0.043211922, -0.05808607), target);\n\ttarget = MulAdd(nb2, MF4x4(0.18331528, 0.39588076, 0.20556965, -0.10883933, -0.0004949832, -0.15585636, -0.040524032, -0.057982635, -0.028523464, -0.06929509, -0.058184557, 0.025949743, 0.027700417, -0.22790357, 0.06694592, -0.020108582), target);\n\ttarget = MulAdd(nc2, MF4x4(-0.11836253, -0.04298726, 0.032929875, 0.2242861, -0.11389548, 0.068775766, 0.019789936, -0.03006107, 0.08794808, 0.12770821, 0.0149423, -0.091368824, 0.015293162, 0.019910589, 0.035969447, 0.04707816), target);\n\ttarget = MulAdd(nd2, MF4x4(0.26466385, 0.136147, 0.21548775, -0.3231222, 0.004888472, -0.3866182, -0.20606667, 0.15087834, 0.02862634, 0.0817037, 6.5014992e-06, 0.2008316, 0.09526983, 0.042665128, -0.040663883, 0.003764197), target);\n\ttarget = MulAdd(ne2, MF4x4(-0.2112101, 0.088516004, 0.558493, 0.06698759, -0.10676672, 0.15699397, -0.043309934, -0.52478033, -0.17806827, 0.017635964, -0.082869515, -0.5656354, -0.18426882, -0.12042118, -0.01596299, -0.06495108), target);\n\ttarget = MulAdd(nf2, MF4x4(-0.21135955, 0.05781414, -0.09844541, 0.022916462, 0.14397569, 0.022936279, 0.097970665, 0.042522192, -0.00126595, 0.0038257148, 0.07008256, -0.1824468, 0.048791062, -0.07465642, -0.046671294, 0.03230469), target);\n\ttarget = MulAdd(ng2, MF4x4(0.19789836, -0.116786405, -0.1616968, -0.22459605, -0.024078539, 0.17570955, 0.16125445, 0.3992117, 0.052064337, 0.036609706, 0.05254302, -0.050398353, 0.036562983, 0.049556475, 0.08297576, 0.2054982), target);\n\ttarget = MulAdd(nh2, MF4x4(-0.5742053, 0.098297775, 0.0633016, 0.14853445, 0.16893868, 0.11639841, 0.07855964, 0.15836205, -0.16521858, -0.09322673, -0.005118043, -0.05021679, 0.22580391, 0.07365953, 0.1695237, 0.031488914), target);\n\ttarget = MulAdd(ni2, MF4x4(0.16460675, -0.03634353, 0.073270105, -0.19762266, 0.0013135028, -0.096437894, 0.06374399, -0.024057448, -0.16969606, 0.036301896, -0.06406477, -0.16757035, -0.038686167, -0.024916979, 0.03403845, -0.05160279), target);\n\ttarget = MulAdd(na3, MF4x4(0.050821684, 0.105403356, -0.022229152, 0.023213169, -0.46897453, -0.16244169, -0.082473665, -0.27779078, -0.033359285, 0.12679179, 0.12876998, -0.24077201, 0.10091285, 0.02276067, 0.25290954, 0.010847028), target);\n\ttarget = MulAdd(nb3, MF4x4(0.112502374, -0.3518416, -0.079604715, -0.039383356, 0.312556, 0.25550213, 0.13873889, -0.37628496, -0.14580576, -0.1397425, -0.02574422, 0.12305562, 0.1102169, -0.052005965, -0.1393713, -0.037981503), target);\n\ttarget = MulAdd(nc3, MF4x4(-0.084098294, 0.14593758, 0.011593753, -0.07939934, 0.10820567, -0.036130577, 0.114290334, 0.083149664, 0.036933735, 0.08104934, -0.05769655, 0.027683796, 0.05024431, 0.07313829, -0.010789726, 0.12981457), target);\n\ttarget = MulAdd(nd3, MF4x4(-0.11338103, -0.150482, 0.20733237, 0.29369837, -0.102634065, -0.15092887, -0.014666432, -0.091397986, 0.0947413, -0.12863293, -0.027620759, 0.005695903, 0.31916696, 0.035850845, -0.031173147, -0.022860976), target);\n\ttarget = MulAdd(ne3, MF4x4(0.23157911, -0.2946123, -0.16097677, -0.45535967, 0.36959732, -0.026627757, 0.6321515, 0.105474636, -0.053087663, 0.096396655, 0.12052069, -0.06778611, -1.0060586, 0.3678515, -0.17115732, -0.581296), target);\n\ttarget = MulAdd(nf3, MF4x4(-0.08702807, 0.0025244744, -0.057799466, 0.045048367, -0.068116546, -0.08659905, -0.13093567, 0.16046713, -0.29240185, 0.2164886, -0.20268321, 0.018693617, -0.15281823, -0.17188364, -0.25272366, 0.026025953), target);\n\ttarget = MulAdd(ng3, MF4x4(0.15970327, -0.011031381, -0.20033363, -0.04695719, 0.048352227, -0.0016179485, -0.057843156, 0.08184532, 0.029011851, 0.12288869, -0.0007196704, -0.12196297, 0.25427872, -0.09587006, -0.07603035, 0.0067141145), target);\n\ttarget = MulAdd(nh3, MF4x4(-0.18811099, -0.0076463297, 0.17162384, 0.001552174, 0.5296002, 0.012637236, -0.4305403, -0.44700608, 0.024435172, -0.023834689, -0.17837442, 0.030023761, 0.025391584, -0.10389408, 0.028054329, -0.069815405), target);\n\ttarget = MulAdd(ni3, MF4x4(0.10198799, -0.017247394, -0.102331705, 0.13685812, -0.27715954, 0.10640225, 0.033743538, 0.045423724, -0.13994834, 0.055460025, -0.009399727, 0.015256073, 0.05103997, 0.120834984, 0.0033520947, 0.053223636), target);\n\tconv2d_6_tf2[gxy] = target;\n}\n\n//!PASS 8\n//!DESC Conv-4x1x1x120, Depth-to-Space\n//!IN INPUT, conv2d_2_tf, conv2d_2_tf1, conv2d_2_tf2, conv2d_3_tf, conv2d_3_tf1, conv2d_3_tf2, conv2d_4_tf, conv2d_4_tf1, conv2d_4_tf2, conv2d_5_tf, conv2d_5_tf1, conv2d_5_tf2, conv2d_6_tf, conv2d_6_tf1, conv2d_6_tf2\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass8(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\n\tMF4 g0 = conv2d_2_tf.SampleLevel(sam, pos, 0);\n\tMF4 g1 = conv2d_2_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g2 = conv2d_2_tf2.SampleLevel(sam, pos, 0);\n\tMF4 g3 = conv2d_3_tf.SampleLevel(sam, pos, 0);\n\tMF4 g4 = conv2d_3_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g5 = conv2d_3_tf2.SampleLevel(sam, pos, 0);\n\tMF4 g6 = conv2d_4_tf.SampleLevel(sam, pos, 0);\n\tMF4 g7 = conv2d_4_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g8 = conv2d_4_tf2.SampleLevel(sam, pos, 0);\n\tMF4 g9 = conv2d_5_tf.SampleLevel(sam, pos, 0);\n\tMF4 g10 = conv2d_5_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g11 = conv2d_5_tf2.SampleLevel(sam, pos, 0);\n\tMF4 g12 = conv2d_6_tf.SampleLevel(sam, pos, 0);\n\tMF4 g13 = conv2d_6_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g14 = conv2d_6_tf2.SampleLevel(sam, pos, 0);\n\n\tMF4 ng0 = max(-g0, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 ng4 = max(-g4, 0);\n\tMF4 ng5 = max(-g5, 0);\n\tMF4 ng6 = max(-g6, 0);\n\tMF4 ng7 = max(-g7, 0);\n\tMF4 ng8 = max(-g8, 0);\n\tMF4 ng9 = max(-g9, 0);\n\tMF4 ng10 = max(-g10, 0);\n\tMF4 ng11 = max(-g11, 0);\n\tMF4 ng12 = max(-g12, 0);\n\tMF4 ng13 = max(-g13, 0);\n\tMF4 ng14 = max(-g14, 0);\n\n\tg0 = max(g0, 0);\n\tg1 = max(g1, 0);\n\tg2 = max(g2, 0);\n\tg3 = max(g3, 0);\n\tg4 = max(g4, 0);\n\tg5 = max(g5, 0);\n\tg6 = max(g6, 0);\n\tg7 = max(g7, 0);\n\tg8 = max(g8, 0);\n\tg9 = max(g9, 0);\n\tg10 = max(g10, 0);\n\tg11 = max(g11, 0);\n\tg12 = max(g12, 0);\n\tg13 = max(g13, 0);\n\tg14 = max(g14, 0);\n\n\tMF4 target1 = MF4(0.00032424182, 0.027523492, -0.021710647, 0.0054222327);\n\ttarget1 = MulAdd(g0, MF4x4(-0.01801902, 0.016983684, 0.14704974, 0.13775583, -0.06568407, 0.031903602, -0.057818945, 0.03639395, -0.16158727, -0.11652214, -0.0512031, -0.017740106, 0.0073386175, -0.12396601, -0.08410588, -0.13822778), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.14072196, 0.013641312, -0.110022426, 0.022624938, -0.053968057, -0.07968724, 0.036026128, 0.034548678, -0.006345876, -0.04177406, -0.10516601, -0.14248538, -0.10635475, 0.032888547, -0.07574279, 0.037366178), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.20902354, -0.03131852, 0.053658944, -0.13953559, -0.0022027926, 0.022661211, 0.02766268, 0.051950134, 0.022593375, -0.16854303, -0.00068382383, -0.15171093, -0.0011307014, 0.03237067, 0.0022356252, 0.05513321), target1);\n\ttarget1 = MulAdd(ng0, MF4x4(0.057087313, 0.030007327, -0.04517254, -0.10142689, 0.049131192, -0.009568129, 0.07815266, 0.07463051, 0.061763447, 0.15247895, 0.06213266, 0.08260832, 0.08928647, 0.08173359, 0.078985415, 0.20306781), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.024888368, 0.050323978, 0.019135669, 0.042805452, 0.021970041, 0.06761805, -0.021047724, -0.029622229, -0.024018591, -0.013619991, 0.050196014, 0.094873905, 6.3763815e-05, 0.022800315, -0.038917273, -0.023665745), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.10751045, -0.08052679, 0.0021425171, 0.018060567, 0.0002820803, -0.042460952, -0.0037310636, -0.048854582, 0.07688915, 0.1803434, -0.021755088, 0.076342724, 0.006899015, 0.010482747, -0.04608032, -0.07149793), target1);\n\ttarget1 = MulAdd(g3, MF4x4(0.017074876, 0.080092184, -0.096824504, -0.030697478, 0.19260724, 0.031606834, -0.001376051, -0.19222017, -0.029233975, 0.07513273, -0.061539974, 0.004413319, -0.011706104, 0.037078228, 0.0053027975, 0.079575956), target1);\n\ttarget1 = MulAdd(g4, MF4x4(-0.08378676, 0.1326312, -0.2575891, -0.055032767, -0.0205247, -0.11107971, 0.048341025, -0.048915315, 0.059188437, -0.111718066, -0.039619286, -0.165657, 0.018990505, 0.0017499351, -0.038804792, -0.086953335), target1);\n\ttarget1 = MulAdd(g5, MF4x4(0.08722738, -0.005039459, 0.07542034, -0.061049137, 0.025591044, 0.16946335, -0.114563115, -0.034830607, 0.17842476, 0.11199776, 0.008686021, -0.04142143, 0.09293036, -0.08505899, 0.087229416, -0.102381825), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(-0.05071452, -0.11384357, 0.11169348, 0.05153077, -0.24056591, -0.056497227, -0.022856226, 0.19383447, 0.02966522, -0.08128601, 0.07467419, -0.019276833, 0.0020969608, 0.029036064, -0.018299947, -0.043434255), target1);\n\ttarget1 = MulAdd(ng4, MF4x4(0.043311678, -0.102582484, 0.24798667, 0.06873956, 0.0067927428, 0.098214865, -0.04124763, 0.04490437, -0.06492586, 0.07359665, 0.033324532, 0.120802104, -0.02277019, 0.0021284765, 0.028036185, 0.0687184), target1);\n\ttarget1 = MulAdd(ng5, MF4x4(-0.090083234, -0.0073258677, -0.089089446, 0.04679012, -0.025320487, -0.14760749, 0.13109742, 0.039976012, -0.19494978, -0.10603485, -0.02347976, 0.050328556, -0.098470725, 0.05546942, -0.0589479, 0.09333735), target1);\n\ttarget1 = MulAdd(g6, MF4x4(0.011967837, 0.043009043, -0.031999476, 0.022178393, -0.0044910796, -0.023010693, -0.0062060836, -0.031039031, -0.06364646, -0.06365887, -0.029040523, -0.06675782, 0.042098384, 0.032490075, 0.014491912, -0.0011224645), target1);\n\ttarget1 = MulAdd(g7, MF4x4(0.018761864, 0.040258046, 0.015349441, 0.018706307, 0.00089981244, -0.02443291, 0.015173669, -0.008663882, -0.028121095, -0.026123954, -0.011663427, 0.007668493, 0.014926302, 0.03380763, -0.031567805, 0.018132508), target1);\n\ttarget1 = MulAdd(g8, MF4x4(0.011394552, 0.0090883775, 0.011154194, -0.0044680317, 0.0067254594, -0.013079778, 0.019036228, -0.0028701108, -0.014439092, 0.009564524, -0.0135836145, 0.038879603, 0.009461635, -0.014671546, 0.019386383, -0.007752184), target1);\n\ttarget1 = MulAdd(ng6, MF4x4(-0.025151528, -0.044746082, 0.030572962, -0.02323665, 0.00077518023, 0.01415367, 0.0053574373, 0.022526693, 0.013129106, 0.03534322, 0.004773132, 0.077551566, -0.04895647, -0.03762353, -5.172888e-05, 0.012251733), target1);\n\ttarget1 = MulAdd(ng7, MF4x4(0.03152615, 0.018333036, -1.679869e-05, -0.021737477, -0.076627344, 0.014928358, -0.010456622, 0.07781939, 0.027225398, 0.04659384, -0.0070413146, 0.026454208, -0.017691148, -0.045554973, 0.006093557, -0.03178835), target1);\n\ttarget1 = MulAdd(ng8, MF4x4(-0.018481147, -0.05547381, 0.013941934, -0.024416983, 0.027262108, 0.024724096, 0.0063773487, 0.017461762, 0.027166976, -0.02301659, -0.0051281936, -0.0556913, -0.08051738, -0.04638631, 0.015620527, 0.05266176), target1);\n\ttarget1 = MulAdd(g9, MF4x4(0.009157959, 0.08455516, -0.0602788, -0.002439282, -0.02327793, -0.021213762, 0.005698031, 0.002378188, 0.005837403, -0.17286417, 0.13316536, -0.03154805, -0.022410449, -0.047884528, 0.043882124, 0.047745265), target1);\n\ttarget1 = MulAdd(g10, MF4x4(-0.008956661, -0.010137066, -0.007736993, 0.012567491, 0.017111477, -0.050893363, 0.001874233, -0.059543177, 0.043244537, 0.07476611, -0.045336626, -0.05902348, 0.006996905, -0.0718768, -0.004126288, -0.0642003), target1);\n\ttarget1 = MulAdd(g11, MF4x4(0.015879916, 0.040725194, 0.013168297, 0.045075603, -0.01297648, -0.0059797773, -0.015060089, -0.010935342, 0.02049647, 0.034105264, 0.014809084, 0.008366516, -0.051084228, 0.008029285, -0.04545378, 0.023945345), target1);\n\ttarget1 = MulAdd(ng9, MF4x4(-0.019541753, 0.0043494124, -0.0001693803, 0.025214057, 0.018182391, 0.027842158, -0.024553766, 0.006766178, -0.029599829, -0.040605135, -0.048153292, -0.018185124, -0.011694039, -0.01453888, -0.022709226, -0.057430573), target1);\n\ttarget1 = MulAdd(ng10, MF4x4(-0.08764812, 0.075131916, 0.020414736, -0.050893847, -0.004293497, -0.021197274, -0.0018027405, 0.038802553, 0.021213993, 0.04283625, 0.016089795, 0.03304562, 0.028084677, 0.029016564, 0.03612216, 0.057901673), target1);\n\ttarget1 = MulAdd(ng11, MF4x4(0.0057912855, -0.098451905, 0.036739763, -0.06572119, 0.033765186, 0.12279821, -0.025154155, 0.013806011, -0.024162477, -0.009859432, -0.0021075422, -0.02089062, -0.0021298097, 0.0015791449, -0.020502191, -0.033028405), target1);\n\ttarget1 = MulAdd(g12, MF4x4(0.056495182, 0.054205123, 0.032467738, -0.038979713, 0.051377665, -0.0017128112, -0.08553907, 0.08154442, 0.005708859, -0.030467357, 0.056872, 0.033040885, -0.044282306, 0.06320046, -0.077476226, 0.057799205), target1);\n\ttarget1 = MulAdd(g13, MF4x4(-0.10876674, 0.08259616, -0.051354583, 0.08138756, 0.012491528, 0.05439006, 0.030529, -0.058732726, 0.018389955, 0.008327744, 0.013216314, -0.017489955, 0.004981595, 0.023339638, -0.019406691, -0.0027005207), target1);\n\ttarget1 = MulAdd(g14, MF4x4(0.070612185, 0.053251043, -0.045872025, -0.08984753, 0.02582859, 0.011240578, 0.019407703, 0.006788904, 0.036534656, -0.07338343, -0.06434088, -0.023382546, -0.052568957, -0.065474, 0.047638886, 0.050624263), target1);\n\ttarget1 = MulAdd(ng12, MF4x4(-0.018035047, -0.078713804, 0.01140521, 0.00012953136, -0.014339465, -0.018948816, 0.04643105, -0.04246953, -0.026791897, 0.02513823, -0.045333434, -0.06504635, -0.024868866, -0.017653162, 0.01686154, -0.007936053), target1);\n\ttarget1 = MulAdd(ng13, MF4x4(0.042380203, -0.007992952, -0.012940898, -0.018271092, -0.036340363, 0.02297692, -0.0260716, 0.011647489, 0.055189207, -0.089658745, 0.05829902, -0.05787894, -0.08049513, -0.091856234, 0.09487785, 0.060702115), target1);\n\ttarget1 = MulAdd(ng14, MF4x4(0.0022311446, 0.0078554, -0.021208685, 0.009572731, -0.09023339, 0.016889412, 0.029632647, -0.0034283176, 0.00453538, 0.040616557, 0.023657676, 0.03687379, -0.021128353, -0.020249786, -0.006316465, 0.017151888), target1);\n\n\tMF4 target2 = MF4(0.026287671, 0.015689341, 0.021467328, 0.0052872337);\n\ttarget2 = MulAdd(g0, MF4x4(-0.016576298, -0.013039568, -0.07158028, -0.056509558, -0.06965122, -0.1272158, -0.07288651, -0.10423224, 0.048223313, 0.03172697, 0.014178331, 0.002855858, 0.004538786, 0.034928907, 0.03173054, 0.03412037), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.09168274, 0.056355372, 0.023804985, 0.009515965, 0.024203284, 0.01641063, 0.016683895, -0.012702561, -0.038824845, -0.037673414, -0.010391583, -0.014636746, 0.03192526, -0.02340906, 0.027524544, -0.015568387), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.0966996, -0.041418746, -0.055650715, 0.002117608, 0.00031688716, -0.008733063, -0.024573568, -0.03425321, -0.036262326, 0.04404278, -0.014729649, 0.05618371, 0.008530102, -0.015607405, 0.015309457, -0.013621667), target2);\n\ttarget2 = MulAdd(ng0, MF4x4(0.0361472, 0.025806008, 0.0583716, 0.06861344, 0.06315231, 0.10136267, 0.050169814, 0.07334672, -0.029601635, -0.06431154, -0.030672554, -0.042512666, -0.051434014, -0.039382752, -0.050772913, -0.08629934), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.02201249, -0.03920109, -0.030633967, -0.0530296, -0.016168922, 0.0019067918, -0.014961821, 0.017761061, 0.012465623, 0.01857369, 0.009440995, -0.014336409, 0.0056113736, 0.012547043, 0.019320931, 0.025894852), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.079413086, 0.055332463, 0.023716403, 0.005429431, 0.0043804864, 0.026764238, 0.011610661, 0.03245363, -0.032408644, -0.056873523, -0.0019144824, -0.026196169, -0.03347332, -0.0174185, -0.00020654689, 0.023554688), target2);\n\ttarget2 = MulAdd(g3, MF4x4(-0.055310458, -0.079070315, 0.0066684894, -0.034588877, -0.07334732, -0.000985991, -0.011984627, 0.08308032, 0.011794159, -0.0144758625, 0.03586815, 0.009038553, -0.0016798767, 0.045218308, 0.016524237, 0.045677744), target2);\n\ttarget2 = MulAdd(g4, MF4x4(0.0083010085, 0.028407311, 0.06600332, 0.07460616, 0.071611166, 0.09643883, 0.034676284, 0.05824412, -0.07973774, -0.030707551, -0.03709346, 0.012161441, -0.02977386, -0.018077906, 0.0017052453, 0.012292145), target2);\n\ttarget2 = MulAdd(g5, MF4x4(0.01893072, 0.032129273, 0.010857875, 0.037224095, -0.01413747, -0.047471486, 0.05192984, 0.03202811, -0.05082615, -0.027038824, -0.008331923, 0.03062506, -0.01725524, 0.039917417, -0.010607958, 0.04724454), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(0.03497211, 0.07911703, 0.016746478, 0.057458322, 0.06088827, -0.0053583174, -0.013933355, -0.10673472, -0.005456845, 0.020259444, -0.03139623, -0.008973998, -0.054345034, -0.035464175, -0.025964592, -0.0021018258), target2);\n\ttarget2 = MulAdd(ng4, MF4x4(-0.047960743, 0.021779433, -0.11492737, -0.033511925, -0.067273304, -0.07730279, -0.04037016, -0.045080706, 0.09207083, 0.009399112, 0.03178142, -0.011313022, 0.021366931, 0.0051248465, -0.008097426, -0.018301165), target2);\n\ttarget2 = MulAdd(ng5, MF4x4(0.014282785, -0.01572224, -0.027472818, -0.050844453, 0.0054380163, 0.052591007, -0.04270195, -0.02309884, 0.05152891, 0.03629938, -0.004667278, -0.024925238, 0.010567401, -0.07481508, 0.037315298, -0.04241005), target2);\n\ttarget2 = MulAdd(g6, MF4x4(-0.0013873621, 0.028364213, -0.031026626, 0.015620681, 0.004142558, -0.004863661, -0.013809934, -0.021330781, -0.0016021075, -0.002762517, -0.024034528, -0.03442779, -0.0013054899, -0.0042632925, 0.020974873, -0.0022553254), target2);\n\ttarget2 = MulAdd(g7, MF4x4(0.018562179, 0.034197688, 0.015277717, -0.01111744, -0.0032272537, -0.013426753, 0.017978273, -0.0015077988, -0.0051653306, 0.012690824, 0.001157489, 0.021362923, -0.01262595, 0.0054670637, -0.03031384, 0.012800636), target2);\n\ttarget2 = MulAdd(g8, MF4x4(0.012069964, -0.016048005, 0.01373877, -0.013298124, 0.03194061, -0.013332437, 0.016943898, -0.0058277305, -0.009428097, -0.023061408, -0.013659186, 0.015731167, -0.001986914, -0.019521309, 0.014714155, -0.00522106), target2);\n\ttarget2 = MulAdd(ng6, MF4x4(0.0007342483, -0.026249036, 0.030117435, -0.015873922, -0.008929299, -0.0023522351, 0.0164302, 0.023790896, -0.03889036, -0.024644645, 0.006634364, 0.046513416, -0.013473101, -0.0140229, 0.0019859916, 0.011869367), target2);\n\ttarget2 = MulAdd(ng7, MF4x4(0.02573362, 0.02375676, 0.00059617084, -0.016921667, -0.0671785, 0.008825013, -0.0013130646, 0.07261784, 0.010327604, 0.019814448, -0.008936156, 0.013669365, 0.020260049, -0.013921513, 0.018746642, -0.02843792), target2);\n\ttarget2 = MulAdd(ng8, MF4x4(-0.023912461, -0.02845122, 0.017157353, -0.0075884, 0.00036027908, 0.012657872, 0.0061078435, 0.014107368, 0.032003447, 0.020891502, -0.0067286897, -0.030822601, -0.06574523, -0.028198881, 0.032242246, 0.061325297), target2);\n\ttarget2 = MulAdd(g9, MF4x4(0.0074854135, 0.085437536, -0.06426021, -0.011461227, -0.023055596, -0.025802588, 0.005154878, 0.0056105317, 0.0058093905, -0.1922738, 0.14643134, -0.035682995, -0.026076004, -0.053763065, 0.04269994, 0.05141156), target2);\n\ttarget2 = MulAdd(g10, MF4x4(-0.011764035, -0.011518187, -0.010223651, 0.015880484, 0.023317069, -0.05618372, 0.0059863995, -0.059199195, 0.04408538, 0.084830545, -0.042056326, -0.057687927, 0.0037303802, -0.082143255, -0.0018375175, -0.071053974), target2);\n\ttarget2 = MulAdd(g11, MF4x4(0.0044008377, 0.03906328, 0.010832349, 0.046560295, -0.011535675, -0.004254791, -0.011572009, -0.008665021, 0.021482797, 0.0338495, 0.019407712, 0.010986841, -0.05098764, 0.009778762, -0.05300968, 0.021800417), target2);\n\ttarget2 = MulAdd(ng9, MF4x4(-0.021229895, 0.003305197, 0.0024396733, 0.02508984, 0.012702334, 0.033208802, -0.03008867, 0.0046940153, -0.030033346, -0.03792949, -0.05176272, -0.022788247, -0.012390274, -0.0135713285, -0.021557398, -0.06371822), target2);\n\ttarget2 = MulAdd(ng10, MF4x4(-0.08850463, 0.0793453, 0.020550407, -0.05461798, -0.009402199, -0.027972376, -0.005156784, 0.02965216, 0.017268548, 0.04429356, 0.009809255, 0.031682562, 0.031172305, 0.03379402, 0.04395453, 0.062268186), target2);\n\ttarget2 = MulAdd(ng11, MF4x4(0.01247631, -0.100407876, 0.042796645, -0.06502109, 0.032900713, 0.13428093, -0.033733122, 0.016222714, -0.0178732, -0.002501202, 0.0035485916, -0.015802957, -0.012150594, -0.0022097295, -0.023347225, -0.038795106), target2);\n\ttarget2 = MulAdd(g12, MF4x4(0.05938152, 0.059704512, 0.030237982, -0.04353414, 0.055702258, -0.0029182534, -0.09416582, 0.08440017, 0.008828504, -0.03065552, 0.0646233, 0.03629834, -0.04788823, 0.071730554, -0.084519096, 0.05947715), target2);\n\ttarget2 = MulAdd(g13, MF4x4(-0.109025195, 0.08866299, -0.047770992, 0.08894294, 0.014965939, 0.059702646, 0.032068793, -0.053778123, 0.019529643, 0.008203253, 0.014628202, -0.017464165, 0.0060448833, 0.027196955, -0.018907491, -0.0026503608), target2);\n\ttarget2 = MulAdd(g14, MF4x4(0.081304245, 0.06199502, -0.045204166, -0.08596196, 0.028582547, 0.011568329, 0.024607504, 0.007910688, 0.035362624, -0.08241612, -0.06848065, -0.026512494, -0.04969066, -0.065509185, 0.050000466, 0.05400427), target2);\n\ttarget2 = MulAdd(ng12, MF4x4(-0.015837632, -0.087357126, 0.015269297, 0.00058823347, -0.01621553, -0.020170743, 0.049107697, -0.043301217, -0.025253763, 0.021026319, -0.047297694, -0.06751796, -0.020940255, -0.019703854, 0.020391362, -0.0049682967), target2);\n\ttarget2 = MulAdd(ng13, MF4x4(0.042480465, -0.010125742, -0.016281988, -0.023186147, -0.040653005, 0.022371864, -0.028837234, 0.009938319, 0.0576169, -0.09105783, 0.06033278, -0.057518024, -0.08265035, -0.094854854, 0.10116602, 0.06394465), target2);\n\ttarget2 = MulAdd(ng14, MF4x4(-0.0027242866, 0.007224464, -0.026375424, 0.0052841473, -0.09330453, 0.010634226, 0.024063759, -0.005130613, 0.0070950384, 0.048039638, 0.029983977, 0.042704105, -0.018214077, -0.020184115, -0.0073092347, 0.01891303), target2);\n\n\tMF4 target3 = MF4(0.0113136405, -0.0063769994, 0.010973808, -0.011560247);\n\ttarget3 = MulAdd(g0, MF4x4(0.20584391, 0.22176251, 0.12817344, 0.16349226, 0.24339934, 0.17479841, 0.23518398, 0.19196586, 0.10900553, 0.080384456, 0.049235467, 0.027794728, -0.05141681, 0.0007015638, -0.010815038, 0.0042753317), target3);\n\ttarget3 = MulAdd(g1, MF4x4(0.0714463, 0.026722606, -0.01580307, -0.036710627, 0.13722661, 0.1325067, 0.12155393, 0.092651665, -0.21974826, -0.22233371, -0.16056158, -0.16607761, -0.10291634, -0.19475317, -0.117747545, -0.18824245), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.0385657, 0.12090414, 0.09484494, 0.18811698, 0.015320313, 0.0051719607, -0.016927784, -0.03450855, -0.06506198, 0.05625437, -0.02982918, 0.06270707, -0.13614634, -0.16412087, -0.1319045, -0.1733402), target3);\n\ttarget3 = MulAdd(ng0, MF4x4(-0.2033194, -0.2067332, -0.16234529, -0.13661149, -0.22975448, -0.1841141, -0.26185742, -0.23617432, -0.058616254, -0.11470092, -0.064833924, -0.082624085, 0.0018012474, 0.010971402, -0.0015926235, -0.056720145), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(0.012773226, -0.013976976, 0.007706423, -0.022663448, -0.13764867, -0.121803656, -0.12158649, -0.090470046, 0.22548035, 0.22929274, 0.19819829, 0.16713546, 0.15709636, 0.16574621, 0.17671035, 0.18283793), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(-0.042175665, -0.07863977, -0.1209475, -0.14067635, 0.0041970555, 0.03598768, 0.009632853, 0.040009186, -0.014479617, -0.060088724, 0.041292075, -0.004627034, 0.09958161, 0.120460846, 0.15672928, 0.18279101), target3);\n\ttarget3 = MulAdd(g3, MF4x4(-0.03370265, -0.07010845, 0.04648067, -0.007877368, -0.11963536, -0.014810524, -0.01556151, 0.11850641, -0.0021221144, -0.050126694, 0.03193186, -0.012815193, -0.019450104, 0.017504638, -0.007544723, 0.0028710878), target3);\n\ttarget3 = MulAdd(g4, MF4x4(-0.018643383, -0.04445287, 0.07541755, 0.043240048, 0.027209729, 0.06499946, -0.018240616, 0.014570308, -0.058010563, 0.019799259, 0.0030194358, 0.06929909, -0.0056114118, 0.009093819, 0.03223382, 0.053046633), target3);\n\ttarget3 = MulAdd(g5, MF4x4(-0.0133113945, 0.019222038, -0.019711712, 0.03676041, -0.040668692, -0.09569124, 0.053240422, 0.02388429, -0.12218938, -0.08086858, -0.043406986, 0.009516919, -0.04289723, 0.056066234, -0.035658766, 0.061961327), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(0.023964832, 0.07624368, -0.020873679, 0.0256053, 0.12444348, 0.017517762, 0.0049669463, -0.13534403, 0.0061981925, 0.052108612, -0.02908856, 0.0135363275, -0.030678025, -0.015180554, -0.003328521, 0.021289025), target3);\n\ttarget3 = MulAdd(ng4, MF4x4(-0.02231607, 0.09188703, -0.13311718, -0.009214322, -0.021628553, -0.047853045, 0.014602204, 0.00086198986, 0.06729613, -0.04228859, -0.0030271288, -0.066696614, -0.0071333526, -0.019973027, -0.036203787, -0.056756962), target3);\n\ttarget3 = MulAdd(ng5, MF4x4(0.05850421, -0.0047896104, -0.0036014696, -0.05261781, 0.020924669, 0.093680315, -0.061118666, -0.020405825, 0.100053616, 0.061513033, 0.018219335, -0.02082051, 0.039510462, -0.08404035, 0.050883695, -0.052642383), target3);\n\ttarget3 = MulAdd(g6, MF4x4(0.0018722751, 0.020684525, -0.02356179, 0.009360695, 0.0036660347, -0.006931955, -0.015446396, -0.02027952, 0.006836204, 0.00341897, -0.020235445, -0.029695021, -0.0053638928, -0.003108307, 0.016338514, -0.0058539147), target3);\n\ttarget3 = MulAdd(g7, MF4x4(0.021255454, 0.036906153, 0.019704418, -0.009486708, -0.009084271, -0.012694315, 0.012314602, -0.002121502, -0.0047310013, 0.0051953527, 0.005284111, 0.019026738, -0.0082058, 0.0032704875, -0.02295881, 0.009902225), target3);\n\ttarget3 = MulAdd(g8, MF4x4(0.01866446, -0.012482591, 0.011301323, -0.011294572, 0.035305023, -0.002237504, 0.010679519, -0.000508338, 8.54808e-05, -0.02033275, -0.008063064, 0.013109392, 0.0002144853, -0.007573196, 0.015446864, 0.0023629267), target3);\n\ttarget3 = MulAdd(ng6, MF4x4(-0.00978586, -0.025148384, 0.024103062, -0.009535831, -0.002879648, 0.0012579657, 0.018271701, 0.02113783, -0.03735869, -0.02581921, 0.005823926, 0.04087479, -0.0077521144, -0.012728182, 0.0067631016, 0.012669306), target3);\n\ttarget3 = MulAdd(ng7, MF4x4(0.018013993, 0.026847519, 0.0021338093, -0.010125906, -0.07225123, -0.0025745684, -0.012799456, 0.056836564, 0.011377961, 0.017062144, -0.007494936, 0.010489539, 0.012431433, -0.019703059, 0.007082196, -0.031403106), target3);\n\ttarget3 = MulAdd(ng8, MF4x4(-0.027560756, -0.030534893, 0.019047359, -0.0068690516, -0.0069791237, 0.0081298705, 0.0028945836, 0.009644792, 0.023117492, 0.020431874, -0.0056545194, -0.02480413, -0.07047867, -0.037890248, 0.025276575, 0.049277883), target3);\n\ttarget3 = MulAdd(g9, MF4x4(0.015748044, 0.086017504, -0.051286206, -0.003599236, -0.023193073, -0.023733998, 0.002799065, 0.005258185, 0.010922322, -0.17615142, 0.14165695, -0.029909663, -0.017889502, -0.046552524, 0.03964598, 0.049426638), target3);\n\ttarget3 = MulAdd(g10, MF4x4(-0.0073433192, -0.011656557, -0.0068763834, 0.014078096, 0.018000547, -0.053453963, 0.00786442, -0.050999343, 0.04133596, 0.079854034, -0.038685665, -0.053702615, -0.0019746814, -0.07859513, -0.0076702842, -0.067455895), target3);\n\ttarget3 = MulAdd(g11, MF4x4(0.009444058, 0.043747634, 0.018948376, 0.05009854, -0.011580162, -0.0065071583, -0.013997229, -0.011439345, 0.023656886, 0.030394329, 0.02134696, 0.009440647, -0.048070773, 0.007841886, -0.05323206, 0.013742174), target3);\n\ttarget3 = MulAdd(ng9, MF4x4(-0.019898156, 0.000818382, 0.0010332671, 0.01928002, 0.013191405, 0.029638033, -0.02320344, 0.007421591, -0.02833562, -0.033782348, -0.04978492, -0.020176657, -0.0138621945, -0.013926801, -0.021230116, -0.058447562), target3);\n\ttarget3 = MulAdd(ng10, MF4x4(-0.08644919, 0.073316105, 0.017838318, -0.049475558, -0.007295481, -0.025924034, -0.0068463665, 0.024905838, 0.016891189, 0.041490942, 0.011466327, 0.029829478, 0.034047317, 0.036229853, 0.04733451, 0.062059373), target3);\n\ttarget3 = MulAdd(ng11, MF4x4(0.008540078, -0.09782984, 0.037032314, -0.063398704, 0.028395759, 0.12369336, -0.03458798, 0.012534729, -0.02110072, -0.007954169, -0.002136603, -0.019739889, -0.01087704, -0.004243762, -0.019832188, -0.03347458), target3);\n\ttarget3 = MulAdd(g12, MF4x4(0.054272063, 0.053247515, 0.025393743, -0.043571323, 0.05035569, -0.0042993715, -0.08645438, 0.07723826, 0.009475109, -0.026420964, 0.06111581, 0.03551816, -0.040812302, 0.07295332, -0.07636345, 0.059867676), target3);\n\ttarget3 = MulAdd(g13, MF4x4(-0.103165455, 0.07943813, -0.04935193, 0.0776962, 0.0149123045, 0.056066703, 0.028792242, -0.051936194, 0.015754307, 0.004817783, 0.011213326, -0.018288456, 0.004715879, 0.02536934, -0.015915168, -0.0008426239), target3);\n\ttarget3 = MulAdd(g14, MF4x4(0.0723322, 0.054040924, -0.0476729, -0.08399067, 0.024805048, 0.0118207345, 0.022066418, 0.006886721, 0.031156952, -0.07442044, -0.06636254, -0.023382878, -0.051537152, -0.06360144, 0.045075376, 0.050795015), target3);\n\ttarget3 = MulAdd(ng12, MF4x4(-0.013090917, -0.0783513, 0.014832963, 0.0033018794, -0.014636453, -0.020164138, 0.043610837, -0.04028102, -0.024922965, 0.017962486, -0.045353472, -0.065985985, -0.020156763, -0.019561546, 0.01627726, -0.0065625296), target3);\n\ttarget3 = MulAdd(ng13, MF4x4(0.038890418, -0.007016582, -0.01374995, -0.01861392, -0.03940205, 0.019309007, -0.026372327, 0.0079260105, 0.05348645, -0.087648585, 0.057326347, -0.055338904, -0.07803935, -0.09048593, 0.09173596, 0.05747143), target3);\n\ttarget3 = MulAdd(ng14, MF4x4(0.001742558, 0.010703091, -0.021057613, 0.006859906, -0.086059436, 0.008977797, 0.021366948, -0.0043655075, 0.005885378, 0.042646274, 0.028150525, 0.037941158, -0.014817959, -0.016695084, -0.0056764153, 0.019049013), target3);\n\n\tfloat2 outputPt = GetOutputPt();\n\n\tpos -= 0.5f * outputPt;\n\tOUTPUT[gxy] = MF4(MF3(target1.x, target2.x, target3.x) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t++gxy.x;\n\tpos.x += outputPt.x;\n\tOUTPUT[gxy] = MF4(MF3(target1.y, target2.y, target3.y) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\t\n\t++gxy.y;\n\tpos.y += outputPt.y;\n\tOUTPUT[gxy] = MF4(MF3(target1.w, target2.w, target3.w) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t--gxy.x;\n\tpos.x -= outputPt.x;\n\tOUTPUT[gxy] = MF4(MF3(target1.z, target2.z, target3.z) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n"
  },
  {
    "path": "src/Effects/Anime4K/Anime4K_Upscale_VL.hlsl",
    "content": "// Anime4K_Upscale_CNN_x2_VL\n// 移植自 https://github.com/bloc97/Anime4K/blob/78e4f78f65b772e94bae6e7db5c49af1e889f784/glsl/Upscale/Anime4K_Upscale_CNN_x2_VL.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME Anime4K_Upscale_2\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_1_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_1_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_2_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_2_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_3_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_3_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_4_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_4_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_5_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_5_tf1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_6_tf;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D conv2d_6_tf1;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n\n//!PASS 1\n//!DESC Conv-4x3x3x3\n//!IN INPUT\n//!OUT conv2d_tf, conv2d_tf1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\t\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\n\t\t\tif (i != 1 || j != 1) {\n\t\t\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tMF4 target1 = { 0.0072128535, -0.05658625, 0.052939568, -0.1760861 };\n\t\t\ttarget1 = MulAdd(src[i - 1][j - 1], MF3x4(0.3053028, -0.037464816, 0.113983095, 0.12537485, -0.18630321, 0.084269725, -0.01351514, -0.20190673, -0.12298384, -0.037622184, -0.070214555, -0.19367279), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j], MF3x4(-0.41849324, 0.099702746, -0.04276645, -0.047299717, 0.20074473, 0.14217933, 0.15571699, 0.19553481, 0.21868695, -0.053848714, 0.016413521, 0.14117444), target1);\n\t\t\ttarget1 = MulAdd(src[i - 1][j + 1], MF3x4(0.030540446, -0.052293833, 0.0715466, -0.31160545, 0.07808315, -0.16860045, 0.032828577, -0.2955024, -0.110374965, 0.04043687, -0.014024628, 0.058699366), target1);\n\t\t\ttarget1 = MulAdd(src[i][j - 1], MF3x4(-0.10727635, 0.054200135, 0.20853694, 0.21086875, 0.122690216, -0.091823794, 0.310609, -0.01738923, -0.0013488946, 0.10835534, -0.077265196, 0.086751856), target1);\n\t\t\ttarget1 = MulAdd(src[i][j], MF3x4(-0.77150255, 0.40530515, -0.41257596, -0.14367618, 0.46888494, 0.2650122, -0.934199, 0.40476102, 0.32293493, 0.20251967, 0.19891106, -0.29698747), target1);\n\t\t\ttarget1 = MulAdd(src[i][j + 1], MF3x4(-0.12505147, -0.41904053, -0.065798186, 0.34075752, 0.026240354, -0.2977496, 0.032647505, -0.003566783, 0.10290523, -0.23417123, -0.06014203, 0.094735645), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j - 1], MF3x4(0.11207838, -0.04062474, 0.023897955, 0.08605987, -0.020888371, 0.045541205, -0.07231824, -0.25884083, -0.11796847, -0.002691391, 0.0050435597, 0.02756291), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j], MF3x4(0.4615728, 0.041790638, 0.08971143, 0.20213957, -0.38537467, 0.19938901, 0.08594364, -0.08621994, -0.08163473, -0.133266, -0.09561729, -0.014209637), target1);\n\t\t\ttarget1 = MulAdd(src[i + 1][j + 1], MF3x4(0.0787417, -0.0483673, 0.07621572, -0.060169693, -0.013465177, -0.17152289, 0.02515561, 0.17675288, -0.05173998, 0.10768042, -0.029858522, -0.013957215), target1);\n\n\t\t\tMF4 target2 = { 0.007717166, -0.027800834, 0.0795002, 0.0053199283 };\n\t\t\ttarget2 = MulAdd(src[i - 1][j - 1], MF3x4(-0.112743355, 0.0422517, 0.21350034, -0.0967133, 0.16265953, 0.0022497, 0.015078242, 0.08204187, 0.035236806, -0.0468228, -0.09464228, -0.001864949), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j], MF3x4(0.25631642, -0.41485596, -0.16662048, 0.13201024, 0.057921384, 0.2240005, -0.30038536, -0.08305622, 0.2228756, 0.32263795, 0.10608189, -0.18616734), target2);\n\t\t\ttarget2 = MulAdd(src[i - 1][j + 1], MF3x4(0.08997524, 0.11516871, 0.19212262, -0.035154644, 0.11612274, -0.04056247, 0.14974374, 0.029173585, -0.07629641, -0.14353512, 0.041081246, 0.20230265), target2);\n\t\t\ttarget2 = MulAdd(src[i][j - 1], MF3x4(0.2262286, 0.055954933, -0.14499907, 0.17314723, 0.16590612, -0.06688698, -0.11118816, -0.012938116, -0.043101817, 0.026133137, 0.2958395, 0.06543993), target2);\n\t\t\ttarget2 = MulAdd(src[i][j], MF3x4(-0.07311521, -0.3041244, -0.47978505, -0.6350967, -0.17432262, 0.34965977, 0.25399777, -0.16590433, -0.49957857, 0.0549526, -0.40869385, -0.08780993), target2);\n\t\t\ttarget2 = MulAdd(src[i][j + 1], MF3x4(-0.3014447, -0.00021343959, -0.14953177, 0.028001398, -0.14931908, -0.14910097, -0.13287953, -0.45026535, 0.17378895, 0.024704922, -0.027308129, -0.10292025), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j - 1], MF3x4(-0.06732655, -0.13119644, 0.066014715, 0.081011154, -0.15154321, 0.2407805, 0.07733481, 0.12312706, 0.1741804, 0.008495716, -0.14125362, -0.043644864), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j], MF3x4(0.11465958, 0.42001364, 0.011069392, 0.3203028, -0.058801666, -0.37830314, -0.030540617, 0.2245139, -0.11310525, -0.14845212, 0.19957744, 0.25789997), target2);\n\t\t\ttarget2 = MulAdd(src[i + 1][j + 1], MF3x4(-0.16037206, 0.21326372, 0.020099448, 0.018666709, 0.122083254, -0.16033986, -0.10725163, 0.2556128, 0.1650688, -0.10475823, 0.048623525, -0.103755645), target2);\n\n\t\t\tconv2d_tf[destPos] = target1;\n\t\t\tconv2d_tf1[destPos] = target2;\n\t\t}\n\t}\n}\n\n//!PASS 2\n//!DESC Conv-4x3x3x16\n//!IN conv2d_tf, conv2d_tf1\n//!OUT conv2d_1_tf, conv2d_1_tf1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.0216415, 0.09015036, -0.030761974, -0.26541537 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.0056740534, -0.21186607, -0.18014967, 0.118979976, -0.0015611284, -0.07708486, 0.060131397, 0.11653345, 0.027150517, 0.10837246, 0.08583816, -0.14032431, 0.017552888, 0.0035846964, 0.03980114, 0.064649396), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.03289318, -0.12004539, 0.26514888, -0.15079662, 0.04214227, -0.027273783, -0.027950313, 0.19614808, 0.18510003, -0.10346252, -0.029836183, 0.09174428, -0.0088710375, -0.18273513, 0.06601674, 0.009983851), target1);\n\ttarget1 = MulAdd(c1, MF4x4(0.08476211, 0.043996535, 0.056711517, 0.009976895, 0.07039107, -0.024862664, -0.059921104, 0.046850603, 0.04983447, 0.04863198, 0.21777405, -0.0576961, 0.045321796, -0.0060038245, 0.096396215, -0.10842004), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.15746164, 0.041757874, 0.035169285, -0.1734288, -0.24219254, -0.13318908, 0.2272079, -0.02902605, 0.07750601, -0.1467191, -0.12296749, -0.07533314, -0.07073083, 0.17909113, 0.04789308, 0.17245363), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.057547905, 0.1464685, -0.33115456, -0.26956198, -0.26298407, -0.059824817, 0.022509675, -0.09251868, 0.36277944, -0.2072429, 0.21095088, -0.45492023, 0.07428653, 0.1593302, -0.2945834, 0.12825087), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.1318458, 0.27804148, 0.037600737, 0.12047866, 0.0065036337, 0.0017241207, 0.060497303, -0.14786585, -0.15149063, 0.02731698, 0.048886403, -0.0025970868, -0.026979815, 0.07348884, 0.015636757, -0.107966796), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.079988025, -0.01626299, 0.06517438, 0.086406484, -0.1484504, 0.070595, 0.20620634, 0.09713373, -0.13620836, 0.012067949, -0.00068703433, -0.038030174, 0.22300471, -0.0012400965, -0.014827909, -0.08927486), target1);\n\ttarget1 = MulAdd(h1, MF4x4(0.15634936, 0.052028038, 0.038081627, 0.12720168, 0.07342066, -0.04318368, -0.0065998454, 0.12109317, -0.45398173, 0.03666754, -0.17773737, 0.038516667, -0.13009632, -0.007457001, -0.013938809, 0.09776142), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.029636936, 0.12864171, 0.11347291, -0.11812842, -0.0870342, 0.035678383, 0.050338242, 0.045754932, -0.07072752, 0.010447726, 0.039642975, -0.08795004, -0.1191525, 0.00967509, 0.13485421, -0.053204738), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.011072695, -0.09613245, -0.09094804, 0.028029291, -0.04031162, 0.15690295, 0.25094184, -0.21776834, 0.06524669, 0.06412185, -0.052852992, -0.08097702, -0.039127756, 0.036357917, 0.104585476, 0.25095442), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.08328618, -0.006246033, 0.099708706, -0.014916097, 0.17727195, 0.4369228, 0.14760216, 0.06707674, 0.025167737, -0.022487842, -0.038962565, 0.15380669, 0.08125089, 0.09844594, 0.33538374, -0.003161368), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.0128195705, -0.05475118, -0.037705053, -0.0012077648, -0.17425515, 0.091487505, -0.12909423, 0.0074876705, 0.13438368, 5.778033e-05, 0.04563314, -0.12185897, -0.053612474, -0.049824294, -0.12851205, 0.12856449), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.025741795, 0.01867236, -0.00027440622, 0.10502768, 0.27042285, -0.14947751, 0.11143123, 0.2575913, -0.07414089, -0.33919522, -0.13194235, -0.20088726, 0.23121537, -0.08197353, 0.06693911, 0.015411386), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.09143717, 0.22842278, 0.06501074, -0.20009698, -0.042117566, -0.23452093, -0.074082755, -0.10612558, 0.077631965, 0.08343657, -0.07657599, -0.43297377, 0.7092466, -0.16272525, 0.17222248, -0.056038965), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.081200436, 0.046752565, 0.028254949, 0.18820632, 0.096592255, 0.05896745, 0.14845169, 0.034777895, 0.07195204, -0.1908046, -0.015341971, 0.02606145, -0.010377239, 0.0755547, -0.15285216, 0.047916733), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.06825636, -0.049540907, -0.024328846, 0.03506251, 0.2060094, 0.054119263, -0.06671269, 0.052428722, 0.055792283, -0.14336903, -0.03180757, 0.013760968, -0.037398104, -0.06880077, -0.023608573, 0.0360965), target1);\n\ttarget1 = MulAdd(h2, MF4x4(-0.16937497, -0.30156836, 0.0021435453, 0.025772978, -0.17990975, 0.046133514, -0.32447076, -0.083382785, -0.081322014, -0.022132374, -0.05319431, 0.11794733, 0.08943906, 0.12927428, 0.105764806, -0.051034793), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.011012306, 0.047636557, 0.050260928, 0.051847618, 0.010985655, -0.13752967, 0.023869954, 0.07011459, -0.18244945, 0.07239806, -0.013638856, -0.026982805, 0.11395993, -0.031304818, -0.08714153, 0.077115685), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.08707592, 0.2265186, 0.13363098, -0.039588258, -0.029561255, 0.019238092, 0.024606103, -0.0019022018, -0.062285982, -0.0629511, -0.03753033, 0.109805316, 0.016018672, -0.08284564, -0.04092752, -0.030386891), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.0016500859, 0.01616536, -0.099148355, 0.24161765, 0.028064307, -0.028680569, 0.054400917, -0.1978921, -0.08584302, -0.096797146, -0.06546965, -0.09342837, 0.030265866, 0.07057579, -0.02080932, 0.053178705), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.030304352, 0.047440585, -0.04248429, 0.08568772, -0.051317703, 0.036739342, 0.00865767, -0.018183297, -0.07335176, 0.025001721, -0.068509035, 0.1814819, -0.09756565, -0.024179723, -0.05959287, 0.0352454), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.023015196, -0.022870664, -0.12028372, -0.111095205, 0.11065281, -0.19900022, -0.24012049, -0.017028643, -0.13484617, 0.050107025, 0.10741765, 0.037951697, 0.013090438, -0.0010045726, -0.029447839, -0.1859787), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.17922719, -0.24138594, -0.44595388, -0.032014426, 0.06897096, 0.07125395, 0.1944457, -0.035794795, -0.24022278, -0.13230884, -0.1277025, 0.21229011, -0.12249393, 0.06141907, 0.2687936, -0.26896995), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.0397242, -0.30710965, 0.28815824, -0.06642567, -0.07588877, -0.019552408, 0.0057806037, 0.11465521, 0.03560534, -0.10640553, 0.023589289, -0.16667193, 0.02066607, -0.01026633, -0.02655378, 0.082493655), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.007902949, -0.08501038, -0.029395591, -0.07072227, -0.01800967, -0.14564751, -0.08372804, -0.049974415, 0.1756957, -0.02042449, -0.04413007, -0.016873527, -0.2385717, -0.001741017, 0.08298281, -0.019873247), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.01803727, 0.0642893, 0.21513617, 0.066888265, -0.042107955, -0.123470366, 0.045296013, -0.11958806, 0.48208967, -0.027188249, 0.12136116, 0.05246265, 0.13522038, -0.016297493, 0.028486907, -0.059840377), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.1373251, -0.11281026, -0.06418318, 0.08444032, 0.062874556, -0.009133875, -0.049571835, -0.042995855, 0.12483249, -0.025967957, -0.11202483, 0.09862257, 0.099986054, 0.009230306, -0.09042664, 0.046612263), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.03203309, 0.106030256, 0.045741174, -0.020529225, -0.028610658, -0.055219248, -0.21404657, 0.07746393, -0.059359375, 0.0033258004, -0.0054513607, 0.06856653, 0.18043655, -0.119936846, -0.05639265, -0.10240379), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.0004331875, 0.10426754, -0.008130048, 0.012795991, -0.14372933, -0.40797862, 0.105197415, -0.0041354536, -0.079792455, 0.0914027, 0.012418237, -0.11449173, 0.020261409, -0.14681602, -0.13355242, 0.18290488), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.052306626, 0.010864275, -0.072627716, -0.009773121, 0.09484167, -0.09631301, 0.14896165, -0.21220942, -0.11994051, -0.002957136, -0.118194886, 0.08661347, 0.10005298, -0.029620873, 0.101668894, 0.0242806), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.055188183, -0.06322889, 0.12994595, 0.03140751, -0.092755616, 0.04239107, 0.18460171, 0.08471877, 0.014203371, 0.13608724, 0.035351243, -0.07883493, -0.10067456, 0.14417742, 0.0054235114, 0.100745104), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.043811034, -0.16055201, -0.11927185, 0.20517266, 0.16734722, 0.27720267, 0.1205665, 0.045803893, -0.07874647, 0.06764307, -0.11157022, 0.080770165, -0.044105835, -0.03276538, -0.10945451, 0.100562036), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.044731796, -0.12854387, -0.061937924, -0.21604767, -0.036132332, -0.024353411, -0.16718283, 0.14903957, -0.11620588, 0.14563644, 0.23363836, 0.08400659, 0.15248756, -0.1424437, 0.112882614, -0.04096889), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.0486021, -0.05714939, 0.042517707, -0.06106919, -0.12970918, -0.071898215, -0.044727243, -0.026308542, 0.05687118, -0.0394057, -0.109454155, -0.0021216893, 0.018588595, 0.08061093, 0.0500373, -0.0034918839), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.11269324, -0.17924047, -0.12965205, -0.07287767, -0.015830642, -0.044497102, 0.20014328, -0.14054494, 0.1232692, 0.2395109, 0.14093149, 0.03518561, -0.14088139, -0.09045081, -0.07283352, 0.053434785), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.020512339, 0.026349569, -0.06666101, 0.05554806, -0.03044066, 0.26656216, 0.019155584, -0.12118906, 0.087923005, -0.1716557, 0.050843164, 0.037432503, -0.030232614, 0.030457936, 0.04232163, -0.066400655), target1);\n\t\n\tMF4 target2 = { -0.060742114, -0.037577342, 0.055704296, 0.03134311 };\n\ttarget2 = MulAdd(a1, MF4x4(0.04688368, 0.13853125, 0.1714716, -0.03034447, -0.08090605, 0.1225867, 0.17535992, 0.012508419, -0.0010665918, -0.07481546, -0.15541986, 0.0671128, -0.029307734, -0.076674186, 0.03925896, -0.07140553), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.13273083, 0.062933214, 0.04200143, -0.0080243945, -0.120439716, -0.090192355, -0.022639645, 0.00020024918, -0.11211478, -0.12949537, 0.025783822, 0.009155746, 0.01004339, -0.0661901, 0.10630156, 0.053137038), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.07113487, -0.16011865, -0.10838903, -0.0034704183, 0.110606894, -0.14915739, 0.036511585, -0.003103608, -0.0551775, -0.13140677, 0.05270299, 0.12139221, 0.02226174, 0.008415268, -0.06647426, 0.118130066), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.045172617, -0.0020388453, -0.27287582, 0.002428232, -0.2833772, 0.13788106, 0.073339015, 0.10666715, 0.08455194, 0.16499293, 0.089058325, 0.008815447, 0.034657538, -0.109856166, -0.11499077, -0.02918854), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.07910854, -0.26334837, -0.3246593, -0.08246522, 0.09211476, 0.40793833, -0.09658794, -0.14430091, -0.50632644, 0.087234974, 0.26298127, 0.3687086, 0.06492316, 0.23082961, 0.18233871, -0.09283792), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.022744032, 0.21690565, 0.2694824, -0.12230013, -0.07969618, 0.21595429, -0.034979805, 0.008938489, 0.21289209, -0.446482, -0.042927746, -0.13587558, -0.032581557, -0.07182814, -0.054092336, -0.009542036), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.0034912943, -0.080354184, -0.08577375, -0.1521193, 0.09809233, 0.034529503, -0.100664355, 0.008191219, -0.014303411, -0.02862216, -0.18669915, -0.12384598, 0.046499267, 0.093707144, 0.10661308, 0.15079576), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.031025652, -0.0384342, 0.14258307, 0.25531343, 0.0075049917, -0.03966595, 0.062381975, 0.19593526, -0.2868182, 0.03162008, -0.4391041, -0.524017, -0.034463473, -0.0066741486, -0.24586639, 0.10521736), target2);\n\ttarget2 = MulAdd(i1, MF4x4(-0.07452321, -0.0227877, -0.025402244, 0.115727395, -0.039511252, -0.07785703, -0.013689458, 0.0066024344, -0.052957747, 0.011206241, -0.0021671024, 0.077190824, -0.11709912, 0.046635598, 0.123751156, -0.03712064), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.055411004, -0.0020031065, 0.06685547, -0.018829947, -0.06378933, -0.18389674, -0.0023551763, 0.0670314, 0.13038594, 0.0601923, -0.03035789, -0.019537423, -0.014483204, -0.056800704, 0.08663347, -0.106859975), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.06603686, 0.07360526, -0.0072026253, -0.06778907, -0.039178446, 0.012397263, -0.13482279, 0.05745685, -0.055182382, -0.10545766, 0.003857615, 0.041947857, -0.15239377, 0.041826613, 0.058879383, -0.0042669442), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.0697229, -0.010702144, -0.032265816, 0.013317131, 0.105028264, 0.21032134, 0.06845646, -0.018358687, 0.064568676, 0.08437135, -0.000723181, 0.1324007, 0.05527932, -0.049871888, -0.10125047, -0.005040889), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.006467578, -0.05120533, -0.011780779, -0.011742203, -0.34242442, -0.020819988, 0.17381702, -0.059836414, -0.028882682, 0.23210457, 0.16579404, -0.03708216, -0.23541835, -0.03290251, 0.029319672, 0.26189178), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.30955994, -0.06408282, -0.16872866, 0.10767772, -0.041430887, 0.051697977, 0.12523535, -0.060389146, 0.026289431, 0.06359533, 0.13526368, 0.2479901, -0.3263977, 0.10216362, -0.0030894123, 0.046437826), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.10061438, -0.17047118, -0.21593021, -0.023389054, -0.17507865, -0.30822313, -0.22044766, 0.16078933, 0.07099252, -0.11573018, 0.24712858, -0.0659458, -0.037504572, -0.12297423, 0.03342632, -0.058119852), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.020957774, -0.0224927, 0.04069268, -0.07911167, 0.074009344, 0.065916434, 0.008222278, 0.11625076, -0.25299504, 0.03357169, -0.021988, 0.015821831, -0.0021187372, -0.030700417, -0.004374924, 0.027358979), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.06549052, -0.048067164, 0.05489091, -0.28851983, 0.13378961, 0.026875904, -0.09877994, -0.19947459, -0.1274035, -0.022928834, -0.26344195, -0.025870804, 0.022505255, 0.0070861108, 0.121051334, -0.025964163), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.059426542, -0.0327433, 0.2313695, -0.07046268, 0.20479666, 0.027021704, 0.2564928, -0.11689885, -0.07407976, -0.019611249, 0.093463086, -0.121553615, 0.035009407, -0.008135333, -0.075931996, 0.047803063), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.059434246, -0.1652242, -0.124611154, 0.04743711, 0.10530296, -0.13869187, -0.036534663, -0.035206333, 0.06067593, 0.06126907, 0.120151915, -0.06722673, 0.008103894, 0.037225723, -0.007520425, 0.065720856), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-3.6759695e-05, -0.036789574, 0.013370567, -0.037871476, -0.013454664, 0.15086569, 0.10164699, 0.057703357, -0.12871023, 0.12827681, -0.055057358, -0.040753044, -0.0142621, 0.08563361, -0.04615499, -0.03130452), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.117965914, 0.09056485, 0.07272314, 0.009695964, -0.11331058, 0.07467256, -0.08291521, 0.00937355, -0.04097737, 0.07752905, -0.017335521, -0.12539999, 0.039462104, -0.0007037007, 0.06034812, -0.09497377), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.20828065, 0.0400099, 0.047638226, -0.046423353, -0.026133502, 0.098207295, 0.056742374, 0.017029466, -0.058164768, -0.046973787, -0.17328712, -0.0012984811, 0.050085854, 0.11296557, 0.12639083, 0.058543045), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.098907426, 0.22031747, 0.101559944, 0.06616554, 0.026110496, 0.56487054, 0.23754556, -0.07540935, 0.31768414, -0.47653618, 0.015073956, -0.33731326, 0.087285936, -0.24593173, -0.26141426, 0.15003823), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.046026446, -0.13767281, 0.064847544, 0.07717139, 0.08544123, -0.11092969, 0.072325274, 0.010849038, -0.3055905, 0.66436774, 0.1434729, 0.0494463, 0.07115603, 0.083811216, 0.020431712, 0.06537088), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.15532711, 0.030139687, 0.040853374, 0.11089222, -0.08150315, -0.015851755, -0.06787692, 0.096075505, -0.011956207, -0.0017758606, 0.1277494, 0.16156575, -0.038588695, -0.0626418, -0.041797023, -0.19467135), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.12917455, 0.017410474, -0.20125067, -0.08040003, -0.13494664, 0.17789102, -0.19909395, 0.08441434, 0.078570575, -0.06330619, 0.23767303, 0.5442659, -0.009227878, -0.021818208, 0.14318731, -0.09042824), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(0.097801, 0.09345441, 0.17846581, -0.14773296, 0.06536365, 0.07642184, -0.011880635, 0.02086135, 0.013336972, -0.053295113, -0.13410404, 0.027241753, 0.087728985, -0.044033397, -0.13098569, 0.009423933), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.02488427, 0.0134966355, -0.0075000813, 0.07272353, 0.015842725, 0.13765687, 0.028079558, -0.08384948, -0.06666623, -0.023220664, 0.025091043, -0.055167805, -0.18826278, 0.04423603, 0.13499942, 0.059128854), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.01935146, -0.030980906, -0.031569187, -0.0036869382, 0.036753897, 0.118464164, 0.15871695, -0.09842428, 0.023324292, 0.071796335, -0.07869346, -0.10751301, -0.2588698, 0.064011686, 0.17386378, -0.039197855), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(0.08590827, 0.005497696, -0.026512025, 0.015661815, 0.1102415, -0.08268483, -0.0032903247, 0.10049029, -0.008157236, -0.035823178, -0.017570151, -0.081716835, -0.3531045, 0.010005245, 0.017141227, -0.016376914), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.16617337, -0.007689783, 0.00954665, 0.07117733, -0.001669262, -0.012331606, 0.051613946, 0.062780835, 0.06123557, -0.20243123, -0.19181818, 0.032895602, 0.19760677, 0.004464939, 0.12754539, -0.27360034), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(0.15006685, -0.083587274, -0.03215495, -0.16992462, -0.011944293, 0.058361508, -0.088097006, 0.023880545, -0.04168166, -0.06960282, -0.092672385, -0.057278465, 0.23540072, -0.1721208, -0.018213503, -0.23494521), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.124885194, 0.1905868, 0.11108704, 0.03163991, 0.11383064, 0.101223364, 0.069428995, -0.14298953, -0.07609092, 0.13704266, -0.07749446, -0.0005389336, -0.04617235, 0.18011934, 0.08350316, 0.09416366), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.073356606, 0.067966126, -0.21285574, 0.0782625, -0.0034364646, -0.032581426, -0.05538558, -0.1317288, 0.14552782, -0.1132393, 0.13063973, -0.00833602, 0.0026844777, 0.028135289, -0.02536825, -0.028372496), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.318728, 0.07862527, -0.12176221, 0.35010242, -0.029198067, 0.016302662, 0.17667587, 0.12605923, 0.1556697, -0.06061443, 0.05843511, 0.10891248, 0.01267106, -0.018492714, -0.15945031, -0.050723754), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.21555941, -0.016813517, -0.084676236, -0.07545412, -0.14518794, -0.014592766, -0.2446481, 0.0530632, 0.0847341, 0.12342537, -0.028644923, 0.083479315, -0.04179012, 0.0025225023, 0.16006976, -0.026940256), target2);\n\n\tconv2d_1_tf[gxy] = target1;\n\tconv2d_1_tf1[gxy] = target2;\n}\n\n//!PASS 3\n//!DESC Conv-4x3x3x16\n//!IN conv2d_1_tf, conv2d_1_tf1\n//!OUT conv2d_2_tf, conv2d_2_tf1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_1_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_1_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_1_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_1_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_1_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_1_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_1_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { -0.06427697, -0.00039365015, 0.011889719, 0.060232002 };\n\ttarget1 = MulAdd(a1, MF4x4(0.13129333, -0.022117995, -0.009753253, 0.020439912, 0.044090994, -0.0916335, 0.0036765633, -0.11719207, -0.06413809, 0.04079378, -0.00085516454, -0.06306388, -0.12660664, -0.054126263, -0.005513979, 0.06364538), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.028422508, 0.23270117, -0.28674677, -0.10820166, 0.024321957, -0.0811145, -0.07290707, -0.02125165, -0.064260505, 0.052076746, -0.009654081, 0.08363882, -0.02037171, 0.15006389, 0.121593125, -0.011237004), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.14672333, 0.015381624, 0.1028172, -0.041823238, 0.0072677187, -0.042953942, 0.06426537, -0.0938381, -0.05990813, -0.04599802, -0.11264726, -0.027826328, -0.058160868, 0.10747306, -0.07327458, 0.07998872), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.08702181, -0.03750975, -0.045659006, 0.04488332, 0.09102003, 0.066556975, -0.04353586, 0.08994567, -0.13561495, -0.10653702, 0.006989605, 0.028230097, 0.07177144, 0.2938447, -0.00943923, 0.022120917), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.1801194, -0.11119162, 0.1977298, -0.247902, -0.16654298, -0.07423158, 0.114130594, 0.0014401592, 0.006954727, -0.09810646, -0.051310766, 0.19487657, 0.2545855, -0.06328558, -0.04617056, 0.09444692), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.011378825, 0.16044368, 0.017211074, 0.14472178, 0.032992378, -0.008925819, 0.035120245, -0.012409223, 0.074333005, 0.1178002, -0.128956, -0.13624239, -0.2791275, 0.21457297, -0.1476131, 0.04874687), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.03491764, -0.061763793, 0.05779039, 0.0054837577, -0.023937583, 0.08281698, 0.032306053, -0.014566218, 0.12738499, -0.0132100545, -0.051833414, 0.0057818824, 0.012158851, -0.20231532, -0.0043795826, 0.10285843), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.22269921, -0.15135509, -0.039143335, 0.033390045, 0.06770212, -0.14538582, -0.08011057, 0.03796648, -0.025913516, 0.13925864, 0.18309896, 0.012709204, -0.24912506, 0.3217706, 0.0394195, 0.017977878), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.00080196525, 0.059145816, 0.05720508, 0.0056548906, 0.005168018, 0.09938438, 0.0200503, -0.05516137, 0.061309986, -0.019621318, -0.1541441, 0.019540716, 0.030571707, -0.09054893, 0.032851614, -0.27210873), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.27061436, -0.114008114, -0.0020118617, -0.1656827, 0.09770587, 0.029897455, -0.03307522, -0.04661818, 0.033011347, 0.18498488, -0.05162084, 0.087471776, -0.24665618, -0.12538423, -0.08123797, -0.010210389), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.075188264, 0.0020608555, 0.18558815, 0.041179713, 0.11232638, 0.05507779, -0.19599183, 0.027942855, 0.06199144, 0.22141005, -0.06121163, 0.014993597, 0.24105869, -0.019737717, -0.112485714, 0.0157406), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.09425698, 0.0207658, 0.12074599, 0.009430481, 0.11889248, -0.025782838, 0.0034711843, 0.05113582, 0.012531833, -0.0018606635, -0.09137569, 0.018120576, 0.4051155, 0.02222076, -0.16001017, 0.10981527), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.03582557, 0.014994796, -6.4688604e-05, 0.24618183, -0.11697727, 0.24388117, 0.038502026, -0.3511993, 0.101741396, -0.10748137, 0.035059888, -0.017535849, 0.09450039, 0.06541661, 0.12149035, 0.28798738), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.27143848, 0.017990451, -0.69144464, 0.037944376, -0.04551905, 0.09263134, 0.4259611, -0.14107811, -0.10641847, 0.23065196, 0.040813655, -0.07789163, 0.3087666, 0.08190437, 0.16409059, -0.06455426), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.08290655, -0.35286915, -0.18082355, -0.32229406, 0.1608227, 0.030915622, 0.09207708, 0.02655054, 0.039464593, 0.026095424, 0.052584656, 0.033881903, -0.01751319, -0.0011676399, 0.04002607, 0.1630013), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.012021132, 0.12163766, -0.07410629, -0.06879096, 0.017859738, -0.039261997, -0.028677614, -0.23610398, -0.15963873, -0.0006119958, 0.11275506, 0.0082659265, 0.05677582, 0.08676638, -0.08669759, -0.10475464), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.12792721, 0.06888765, 0.31803077, 0.26002547, -0.067599155, -0.011822328, -0.2589909, -0.30024147, 0.11076704, 0.15200609, -0.018180368, -0.19146141, 0.22298847, 0.059484895, 0.034478076, 0.15610938), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.0870121, -0.016420847, -0.011579898, 0.097182855, -0.120095566, -0.06843338, -0.043460473, -0.060684606, -0.027540063, -0.008499213, 0.033570655, -0.06866259, 0.01429712, -0.07424434, 0.0009466247, 0.09142678), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.03781424, 0.04587032, 0.03744051, 0.02712279, -0.051038064, 0.0669144, -0.02640278, 0.12384894, -0.0022533627, -0.010022036, 0.07536463, -0.030489929, 0.09418577, 0.155089, -0.011290433, -0.02102941), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.0053278613, -0.07160643, 0.039028414, 0.04123311, -0.10693177, -0.1170874, 0.07230816, -0.033255517, -0.119176835, 0.0786526, -0.11880206, -0.11354601, -0.037539184, 0.14404313, 0.069760695, 0.024738638), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(0.03413808, -0.006487654, 0.10006853, 0.22228058, -0.13796462, -0.14042488, 0.04017443, -0.031790894, -0.06673143, 0.009888688, 0.08831443, -0.0045771743, -0.028375361, -0.04704813, 0.07128581, -0.07012518), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.06954315, -0.23728988, -0.14192343, -0.08236467, -0.2552115, 0.04102959, -0.06355397, -0.08340241, 0.17617856, 0.20281969, -0.16249381, 0.10843737, -0.04392261, -0.08587206, 0.053069845, -0.15482199), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.124981806, 0.12828638, -0.061472785, -0.20108232, -0.14905351, -0.40766275, -0.35427195, -0.13183996, 0.09307428, -0.07697028, 0.06702549, -0.22656697, 0.019868268, -0.19361132, 0.08784669, 0.20249842), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.004661343, -0.09333453, -0.24876262, -0.07906779, 0.110697776, -0.37069768, -0.042212646, -0.0046135853, -0.2254257, -0.023392014, 0.031476703, -0.045574382, -0.12675518, -0.076056994, -0.08228006, -0.040303517), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.16182694, 0.0512523, 0.051189836, 0.048962783, -0.05156489, -0.17987493, -0.012037288, 0.06953726, -0.09458492, 0.1610021, -0.004063283, -0.032922342, 0.08995396, 0.1939926, -0.018710036, -0.08153231), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.064830944, 0.06121252, -0.18886387, -0.12976822, -0.031117212, 0.12219633, 0.19070715, 0.12495262, -0.11994464, -0.24687837, -0.08425294, -0.016920334, -0.13286817, -0.3260188, -0.11776061, 0.1651019), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.17652592, 0.002499805, -0.030541016, -0.01393431, 0.031418208, 0.08209422, 0.12430871, 0.4387016, -0.108871914, -0.09041422, 0.031226631, -0.1638517, 0.20756467, 0.014476537, -0.012701195, -0.03440563), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.005320072, -0.0032291536, -0.017209187, 0.031944863, -0.2479921, -0.24433962, -0.13832912, 0.07835928, -0.17707248, 0.028202811, -0.19121435, 0.164587, 0.123152815, 0.0050288937, 0.084104605, -0.0380019), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.16008669, -0.018608516, -0.013778938, 0.033447385, -0.01242472, -0.070916265, 0.026909694, -0.07318777, 0.15158044, 0.12047607, -0.1709358, 0.2031767, 0.0025611701, -0.21457459, 0.2791286, 0.10159932), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.14320926, 0.020023825, -0.0484187, 0.011563084, -0.2640472, -0.013056275, 0.004234292, -0.095376395, 0.28363484, -0.0058227647, -0.0777649, 0.05238444, 0.41757923, -0.07081097, 0.012567031, -0.13029522), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.07266207, 0.042793367, -0.08212271, -0.23401663, -0.19457819, 0.4191269, -0.03095442, 0.15339781, -0.28451788, 0.09316364, 0.10231693, -0.22844811, 0.111623526, 0.120017685, 0.18777381, 0.014420896), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.15037206, -0.29763284, 0.2601235, 0.0193363, 0.13686465, 0.009907918, -0.37781665, 0.04916627, 0.14114739, 0.5043813, 0.0447959, -0.029427614, 0.041768756, 0.27211213, 0.14163221, 0.086162075), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.19159287, 0.21363218, 0.15053211, 0.08992885, 0.100828275, 0.09379921, 0.030783929, 0.11664482, -0.059145752, -0.19400764, -0.09351283, -0.016430443, -0.12910964, -0.067078374, 0.11760082, 0.121194765), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.055059325, 0.09299572, 0.06848913, 0.06334532, -0.1476285, 0.111801244, -0.033960916, 0.06474366, -0.04952303, 0.27885208, -0.052447475, 0.09226763, -0.15024844, -0.0033919013, 0.013498364, 0.09135676), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.017010042, -0.122343406, -0.19097193, -0.27957183, -0.18206005, 0.102321096, 0.22794476, 0.0439245, -0.23710132, -0.08070259, 0.17377135, 0.23811814, 0.17799385, 0.049567625, 0.1470908, 0.07329385), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.0038071256, 0.19454515, -0.01222965, -0.07390379, -0.0532754, 0.03942833, 0.123840906, 0.023459576, -0.0658742, -0.023957543, -0.14682837, 0.1221027, -0.010986398, -0.066184506, 0.03026491, -0.0638446), target1);\n\t\n\tMF4 target2 = { -0.0063728676, -0.029053684, -0.052831043, 0.006475641 };\n\ttarget2 = MulAdd(a1, MF4x4(-0.012110923, 0.07818654, 0.07964548, 0.11885079, -0.07694473, -0.01378252, 0.006632789, -0.12876098, 0.0069211307, 0.022278586, 0.069553085, 0.16569804, -0.11123615, 0.06125189, -0.11232848, 0.1559266), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.3261174, -0.25586754, 0.21129315, 0.3135101, 0.1509055, 0.0044283345, 0.024674175, -0.08000473, 0.01213029, 0.09093019, 0.04942677, 0.09806723, -0.16454464, -0.14433062, -0.058094524, -0.060819894), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.023174008, 0.02858724, 0.07685972, 0.036857616, -0.10415571, 0.10241035, -0.01893166, 0.02065923, 0.058356714, 0.096426114, -0.03772327, -0.1529002, 0.13740575, -0.048291504, -0.06152548, -0.15199897), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.029300174, -0.13222043, 0.0139825605, -0.02274408, 0.062944874, 0.028447356, 0.05960515, 0.034447193, 0.03133432, -0.019283533, -0.024591971, -0.0043914663, 0.15245225, 0.006851478, -0.051783554, 0.17453748), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.09125915, 0.081739366, 0.01196335, 0.23130219, -0.22557035, -0.13537665, 0.0022028848, -0.043430023, 0.22759882, 0.07920754, -0.027986467, -0.14051494, -0.19557038, -0.03585936, -0.4258294, -0.03856216), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.18511422, -0.09368415, 0.1551229, 0.04322566, -0.023400841, -0.02261204, 0.15129441, -0.007954805, -0.10739125, 0.019459398, 0.013128325, 0.018073296, 0.20886365, -0.20662378, -0.03814699, -0.09272838), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.027352437, -0.039882626, 0.12598103, -0.093930446, 0.030846786, -0.09325075, -0.009084744, -0.024584265, 0.07159868, 0.14162529, 0.19019091, 0.058855128, -0.09880401, -0.01843218, 0.14753596, -0.2449532), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.06565521, 0.09150168, -0.08654865, 0.0829788, -0.07596146, -0.01815166, -0.08786775, -0.03477514, 0.20538878, -0.012766377, 0.020719538, 0.088188395, -0.034300096, 0.29972988, -0.20005241, 0.018425167), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.11713916, 0.024167519, 0.05167596, -0.0027117804, -0.016994188, 0.048177514, -0.012556207, 0.010979094, 0.09098878, 0.028514355, 0.06063336, -0.06624107, 0.012754856, 0.013208708, -0.061374772, -0.0025992664), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.09053513, 0.03183455, 0.017340872, 0.12934409, -0.022161964, -0.0015361432, -0.049972344, -0.12763855, 0.12779881, -0.04697911, 0.018968226, -0.119873665, 0.05462772, -0.13919477, -0.10226718, -0.2540179), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.29912186, -0.09291771, 0.050926663, 0.49361777, 0.21372582, 0.076717265, -0.058968987, -0.1572678, 0.3194591, -0.120582424, 0.03942037, 0.023128232, 0.24321598, 0.07046334, -0.21204855, -0.648296), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.05366883, -0.020366706, 0.020979457, -0.06893884, 0.04837168, 0.017253762, 0.008874203, -0.020785445, -0.20425391, 0.060179923, 0.046167206, 0.09863377, -0.14381303, 0.038928367, -0.06590863, -0.18408588), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.07099762, 0.2029403, -0.033945918, 0.15202214, 0.0901113, -0.27336198, -0.17693861, -0.16206753, -0.17642029, 0.09400492, -0.11165698, -0.07863893, -0.16306102, -0.056210615, 0.22173557, 0.013508989), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.08541511, -0.27093616, -0.35273993, -0.48919773, 0.038383547, -0.16013749, 0.012996215, -0.03434873, 0.07024113, -0.28971404, 0.10623425, -0.0019642068, -0.062374946, 0.3291145, 0.22468035, -0.42971882), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.020427933, 0.15062793, 0.08308975, -0.025095072, 0.030093266, -0.09649862, -0.03382388, -0.0016017791, 0.105402954, 0.020693144, -0.051065, 0.07704679, 0.02864139, -0.00135146, 0.03762216, 0.029277142), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.01700994, 0.12214317, 0.06749582, 0.07354159, -0.093085855, -0.065021954, 0.010773045, -0.00095128635, -0.045384295, -0.072611265, -0.043900184, 0.049471326, 0.029131187, 0.03180158, -0.13313527, 0.05280797), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.14751251, -0.15087761, 0.09932281, -0.099232934, -0.062390897, 0.112391844, -0.09159478, 0.15856399, 0.034708973, 0.01819943, -0.02730164, -0.13562973, -0.05687333, -0.0114601655, 0.07025971, 0.02496533), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.0117268525, -0.026162883, 0.07481553, 0.13420302, 0.029870516, 0.07405776, -0.06379041, 0.09631234, -0.07754842, 0.035888605, 0.0034764851, -0.040771756, -0.092022054, -0.034230903, -0.02281844, -0.0028173258), target2);\n\ttarget2 = MulAdd(na1, MF4x4(-0.059846643, 0.016772347, -0.02287152, 0.07036337, -0.024946844, 0.09826078, -0.068491876, 0.20852126, 0.073890835, -0.058288682, 0.013093785, -0.05776076, 0.0516503, 0.052794468, 0.10837015, 0.038539834), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.16391893, -0.008062687, -0.35022175, 0.2510062, -0.15820411, 0.048403125, 0.024878092, 0.037888516, -0.035924178, -0.068953894, -0.025386479, 0.24405715, -0.018495679, -0.051277515, 0.14754932, -0.031538483), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.038429607, -0.047140498, -0.018157095, -0.029318782, -0.04094171, -0.11870087, 0.11214255, 0.07142628, 0.021007229, -0.005681072, 0.1662777, 0.10829575, 0.112268396, 0.03567479, -0.06738845, 0.0032037434), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.032217573, 0.2102397, -0.20617546, -0.07920811, 0.12918773, 0.054486286, -0.13656865, 0.05806265, 0.01963165, 0.049910642, 0.15538268, 0.10724465, -0.09697837, -0.03070673, -0.0071386313, -0.11899626), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.130827, 0.0051715383, -0.07212691, 0.45726067, 0.2773031, 0.2973666, 0.3951691, 0.01333662, -0.14561643, 0.04508669, 0.121690124, 0.13326228, -0.22579186, 0.058161184, 0.09281702, -0.00079749606), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.00771113, 0.09912341, -0.41895548, -0.06705759, 0.029148718, 0.052991726, 0.18665347, -0.031787418, 0.23053595, 0.09444956, 0.10691037, -0.06325714, -0.05335701, 0.1917427, -0.0065284846, 0.032622546), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.056801565, -0.019131258, -0.0939022, -0.08130343, -0.11051993, 0.0035269214, -0.047361933, -0.0543875, 0.10854369, 0.06445185, 0.016828364, -0.022595318, 0.1450623, 0.033027507, -0.020425137, 0.16169788), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.08747717, 0.07770065, 0.018155783, 0.07160794, 0.09860347, -0.04329888, -0.0043579484, -0.2014418, -0.060260013, 0.0036374568, -0.17566042, -0.2268221, 0.001273691, -0.2609373, -0.19417606, -0.04102927), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.086845055, -0.114253804, -0.13433142, -0.025941795, -0.0155711295, -0.13578776, 0.12059696, -0.08760523, -0.0057348222, 0.12164273, 0.07270617, -0.06352636, 0.08894258, 0.04140841, 0.1230304, -0.030357126), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.03320213, 0.015911903, -0.06288296, -0.121976145, 0.2713457, 0.13913193, -0.092420585, 0.105714336, 0.10294281, -0.04591945, -0.11767934, 0.032249406, -0.06506192, -0.04639334, 0.08137017, -0.031746846), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.13717805, 0.0071242675, -0.077256985, -0.14974317, -0.08467893, -0.20126395, -0.06240603, 0.09554399, -0.075844854, 0.28380412, 0.046030026, 0.053188596, 0.50943077, 0.1179795, 0.32203588, -0.06712207), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.18528835, 0.0016975187, -0.0041140947, 0.11234392, -0.34049067, -0.056880493, -0.04325441, 0.09905571, 0.10978758, 0.009608353, -0.10801905, -0.04071131, -0.09096832, -0.12350487, 0.011801418, 0.22521795), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.040283076, -0.034117915, -0.026142653, -0.06058959, 0.12511659, 0.4131219, 0.59190845, 0.39758852, 0.16032091, -0.5975032, -0.14516282, 0.115154505, 0.03874097, 0.18462797, 0.22934213, 0.05285643), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.17804009, 0.33769128, -0.14572927, -0.029545018, 0.3897, -0.055615567, 0.15232995, 0.48788264, -0.21422523, 0.03397293, 0.0337794, -0.19830915, -0.022457365, -0.35096076, 0.42616987, -0.19268763), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.13191561, -0.18337126, 0.017879983, -0.070472844, -0.09409196, -0.025770849, -0.060219247, 0.10869267, -0.17341033, -0.09199785, -0.0667796, -0.093538545, -0.21300837, 0.030474098, -0.04540468, 0.041321553), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.0998177, -0.08669185, -0.0090886615, 0.0021083376, 0.08900095, 0.5062186, 0.45537788, 0.029077586, -0.1001008, -0.0077697043, -0.0096318, 0.11706454, 0.07401959, -0.00650215, 0.06092762, 0.037442297), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.18500404, 0.0024998419, -0.11761331, -0.026825588, 0.27255726, 0.093010515, 0.3281413, -0.051473666, -0.050259475, -0.17258662, -0.23394547, 0.104795866, 0.035074063, -0.061560635, 0.05975411, -0.094255395), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.023440497, -0.021479638, 0.0036277648, 0.004972212, 0.02416659, -0.09856867, -0.03971455, -0.27094853, 0.026615402, -0.0047890246, -0.13755885, 0.16591635, -0.0016293586, 0.133207, 0.047790572, 0.029041538), target2);\n\n\tconv2d_2_tf[gxy] = target1;\n\tconv2d_2_tf1[gxy] = target2;\n}\n\n//!PASS 4\n//!DESC Conv-4x3x3x16\n//!IN conv2d_2_tf, conv2d_2_tf1\n//!OUT conv2d_3_tf, conv2d_3_tf1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_2_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_2_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_2_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_2_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_2_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_2_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_2_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.056541316, 0.041788545, -0.036094554, -0.021763096 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.0431447, 0.047972627, 0.09522898, 0.19048582, 0.0015511789, 0.1182684, -0.065335006, 0.061233886, -0.02451869, 0.065670215, -0.015341636, 0.06836347, 0.10215459, 0.17516296, 0.0857072, 0.072732896), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.10117189, 0.049022958, -0.016017418, -0.12119866, 0.089112304, 0.016286526, -0.025251161, 0.03239003, -0.0783818, -0.086096615, -0.13673106, -0.15934734, -0.51308054, -0.061430074, -0.16208844, 0.2227776), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.011567444, 0.025550444, -0.018439503, -0.015003767, 0.11606929, -0.11613111, -0.040906087, -0.015202219, 0.03932618, -0.1106059, 0.03703376, 0.018548314, -0.12761284, -0.038109995, -0.23577367, 0.20272344), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.025444161, -0.075270735, 0.10999789, 0.16305386, 0.016178958, -0.074034974, 0.1177035, -0.077481024, -0.047774278, -0.029782977, 0.23137823, -0.2389453, 0.033015423, -0.10381626, -0.16437943, 0.20906886), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.098473966, 0.11013442, -0.18486807, 0.1907086, -0.17564997, -0.08509439, -0.42472756, -0.17446618, 0.3440862, 0.12719585, -0.12213955, -0.02246555, 0.18982963, 0.20809166, -0.36067408, 0.51116616), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.019805575, 0.07812505, 0.061653323, -0.08379226, 0.026396899, 0.009063019, -0.10845824, 0.0827647, 0.045301896, -0.07748021, -0.07435832, 0.14860612, -0.077515624, 0.010588131, -0.22704287, 0.26849246), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.02884339, -0.09512523, -0.038564682, 0.08862835, 0.041666254, -0.10532901, 0.040582962, -0.10063983, -0.15736029, -0.03644334, -0.005061672, 0.04302295, -0.046482194, -0.05262547, 0.05110866, 0.03204655), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.005932702, 0.033263832, 0.0044865874, -0.02328917, 0.056534443, -0.14084046, 0.022353357, 0.015087431, -0.2734596, -0.026544483, 0.06297078, 0.11277746, 0.06127936, 0.02466357, -0.04970561, 0.02098484), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.013603583, 0.036264602, 0.10985147, 0.01532773, -0.09012781, 0.1132652, -0.17016481, 0.025332611, -0.077462606, 0.02990799, -0.10627784, -0.006231141, -0.089164406, -0.051507175, -0.043900985, 0.09049239), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.15391691, 0.1915742, 0.014101639, -0.022153432, 0.06291936, -0.017871676, -0.016763045, -0.14741553, -0.011252563, -0.20720159, -0.030648025, -0.0142307645, 0.010291614, -0.09243969, -0.052940153, 0.0061574522), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.032283742, 0.030768922, 0.1070225, -0.027818602, 0.10032608, 0.0061178426, -0.03561339, -0.26687133, 0.14369439, -0.11362691, -0.08980895, 0.066520914, 0.33414948, 0.006998835, 0.09193012, -0.2857383), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.059588976, -0.02046844, -0.042585023, 0.031939838, 0.12796514, -0.06155685, 0.03540324, 0.009929082, -0.0039611827, 0.10790477, 0.049435645, -0.083034374, 0.23874004, -0.07460337, -0.020173345, -0.2006587), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.13217632, 0.052319963, -0.026713084, -0.0051368694, -0.10380872, -0.28659084, 0.0044393227, 0.005174543, -0.05092618, -0.07092548, -0.027397033, -0.01609789, 0.13699281, -0.14706929, 0.17737861, -0.23746766), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.19268502, 0.14133929, -0.1305119, -0.4034132, 0.057504695, -0.24550998, -0.081932545, 0.45489246, -0.29331785, 0.19625074, 0.063166246, 0.15158689, 0.6715147, -0.4610189, 0.08921431, 0.17761138), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.044718128, -0.011809122, 0.024131307, -0.30093196, -0.05607289, 0.047759805, 0.004210022, 0.098192796, 0.030430846, 0.008207501, 0.12266905, -0.10549182, 0.11584339, -0.091016166, -0.08635591, -0.13889709), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.19226642, 0.07147627, -0.14759602, 0.4041079, 0.0744628, -0.19612685, 0.1498252, -0.06273549, 0.017959936, 0.10858338, -0.14985329, 0.062042814, -0.13240446, -0.24362786, 0.113626175, -0.15332204), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.08383099, -0.13935047, -0.25981048, 0.16491203, 0.07513876, -0.28346774, 0.19722275, -0.044425573, 0.020889329, -0.22140723, 0.025403097, -0.09183192, 0.014202567, -0.18666178, 0.062913105, -0.047674105), target1);\n\ttarget1 = MulAdd(i2, MF4x4(-0.1862771, 0.25878942, -0.043018065, 0.22144824, 0.016088247, 0.12113542, -0.11965952, -0.01587184, 0.07830932, -0.16069177, 0.13421321, 0.018718706, 0.09548377, 0.018543294, 0.013614677, -0.1054485), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.2121733, -0.015635416, 0.027564054, -0.085904464, 0.064805664, -0.070543915, 0.08966146, -0.06359783, 0.01131311, 0.046913184, -0.09809833, -0.092063695, -0.087217696, 0.012411829, 0.0045399712, 0.027389864), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.19307798, 0.09449126, 0.084036835, 0.30262446, 0.011706106, 0.029800637, 0.04612629, 0.006186647, 0.11228541, 0.055147965, 0.17659879, -0.023410015, 0.19965266, -0.06684007, -0.081968054, -0.052410994), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.058564443, 0.08252549, 0.058217794, 0.0864448, -0.25663558, 0.080260284, -0.0010294432, 0.05830051, -0.07684524, 0.1820709, 0.04438993, 0.019178499, -0.12425012, -0.04596089, -0.010032888, -0.0012803525), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.43352658, 0.15262963, 0.25620222, 0.22428556, 0.09667152, 0.0037820593, -0.07951691, -0.11553085, 0.12982155, 0.17988266, -0.14283511, 0.074744284, 0.03604327, 0.00452661, -0.12865154, -0.020020623), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.06850602, -0.18057181, 0.2093389, -0.07333886, 0.28406742, -0.048766967, 0.18114483, 0.47292945, -0.2340266, -0.06862712, 0.28263155, 0.3150323, -0.054724697, -0.16958356, 0.27928987, -0.19666018), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.03281329, 0.0038649621, -0.07108877, 0.10791149, 0.15235375, -0.3083721, 0.168294, 0.10379698, 0.029038485, 0.16282903, 0.04483725, -0.018684763, 0.108186625, 0.027885616, -0.019351846, 0.1623065), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.110499054, 0.31347123, 0.030852, 0.01631416, -0.1466389, 0.080429435, -0.18689284, 0.10667815, 0.20645237, -0.18004708, -0.10570413, -0.15435064, -0.019000605, -3.126077e-06, 0.037761535, -0.015040956), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.023364332, -0.023399066, 0.2712722, 0.049637552, -0.10222765, -0.2698945, 0.20991959, 0.04921932, 0.21510898, -0.0751939, -0.19781734, -0.28162366, -0.041881047, 0.0065111094, -0.04102195, 0.0982682), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.032176614, 0.019144032, -0.08985387, 0.091637276, 0.1012352, 0.0003583357, 0.07897295, -0.09531175, -0.001155058, 0.074372366, -0.026186578, 0.07283374, 0.06052053, 0.009307753, -0.03874333, -0.06228009), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.022224072, -0.15717922, -0.1406057, -0.05941157, -0.028769474, -0.21226564, -0.036570027, 0.22266355, 0.14120889, 0.014577123, 0.10216447, 0.018429281, 0.056729726, -0.055834044, 0.058146577, -0.11999068), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.009995364, -0.020045493, -0.0057422677, 0.0643022, 0.016475432, -0.030856136, 0.042140726, 0.15077904, -0.32955253, 0.0694449, 0.17931722, 0.3439302, -0.12484157, -0.10958869, -0.15755124, -0.09755644), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.008314924, 0.07704758, 0.043228816, -0.08110893, 0.099286236, -0.053224478, 0.22877018, -0.189486, -0.00798416, 0.018341504, 0.10734141, 0.0752633, -0.042524844, -0.086395286, 0.14299925, 0.026488977), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.052531082, 0.19139186, 0.12205995, -0.2573172, 0.15157184, 0.0073150825, 0.089774385, 0.06604469, -0.16528498, -0.002511137, 0.14287429, -0.07819732, 0.025014274, 0.15338829, 0.0761692, -0.02803716), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.21000335, 0.15277153, 0.08546171, 0.2816124, -0.16559112, -0.11068559, 0.47053605, -0.009787771, -0.0013089112, -0.06985127, 0.44743782, 0.25142467, -0.32670796, 0.044035822, -0.12545367, -0.2996084), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(-0.11526387, 0.15654811, 0.099616654, 0.15473685, 0.21278231, 0.046207245, 0.117993094, -0.26825273, -0.12539764, 0.14013724, 0.17357737, -0.05387817, 0.076738276, -0.13339446, 0.15005626, -0.2108176), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(-0.0008846504, -0.05998622, -0.028892396, 0.04784136, 0.0104263965, 0.10899508, -0.073364735, 0.077516064, -0.074248806, -0.21749993, -0.26203, 0.041161157, 0.09366407, -0.026498007, 0.0122177545, 0.03892727), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(0.04349908, 0.13671173, 0.2242545, -0.028021423, -0.03802222, 0.0052366396, -0.010709643, 0.031290106, 0.06291333, -0.024909683, -0.15439379, -0.04502091, 0.2062182, -0.5983536, -0.09670497, -0.38446042), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.008962513, 0.13044207, 0.04964221, 0.012250417, 0.012129821, 0.019985713, -0.06421885, 0.009168735, -0.044516414, 0.071368866, -0.006634213, 0.06497366, 0.08578495, -0.10586125, 0.06628038, -0.14006054), target1);\n\t\n\tMF4 target2 = { 0.07722432, -0.025165567, 0.034291282, -0.09902708 };\n\ttarget2 = MulAdd(a1, MF4x4(0.0647927, 0.053666476, -0.14723225, 0.027874574, -0.0003166473, 0.07337155, -0.061972085, -0.012667777, -0.17071614, 0.091927536, -0.051160213, 0.21336353, 0.13854574, 0.09582817, 0.032316446, 0.13838023), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.0398984, 0.108049214, 0.093780346, -0.022015186, -0.15188989, -0.1381083, 0.2998843, 0.21623154, -0.08862326, 0.025862623, 0.06895634, 0.13529755, 0.06957801, -0.0011681129, 0.105972745, -0.04722446), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.026321493, -0.04828038, -0.012545767, -0.005490858, -0.054038163, 0.075943105, -0.11526662, 0.022242405, -0.03543104, -0.12451852, -0.14911178, 0.013503498, 0.08773292, 0.09695139, -0.013498657, -0.27424073), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.018575635, -0.11321618, -0.07853153, 0.04104883, 0.0018416744, 0.11579002, 0.03685964, -0.031546146, -0.1755398, 0.23517849, -0.08095411, 0.031999595, -0.18542038, -0.26171613, -0.20567231, -0.05683613), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.1538556, 0.21723682, 0.12131733, -0.15308167, 0.103326, -0.006956118, 0.043583486, -0.23811384, -0.103285454, 0.05543916, -0.37894246, 0.32072112, 0.22651967, 0.03516268, 0.34612176, 0.23688535), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.040021293, 0.0029912095, 0.04885362, 0.061496444, 0.016926387, -0.118446946, 0.038948335, -0.0934512, -0.25194243, -0.054018084, -0.07149527, 0.017903058, 0.0845516, 0.33802906, 0.11953944, -0.081294954), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.09558082, -0.36974236, -0.07524102, 0.11131445, 0.047626104, 0.12854609, -0.10264962, -0.044669047, -0.05572307, 0.34475142, -0.16806377, -0.0037204176, 0.03400533, -0.04047774, 0.024379745, 0.09056291), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.039392482, 0.2553437, 0.11705501, 0.03219211, 0.073977776, -0.16610906, -0.032796364, -0.054669864, -0.07123178, 0.00079619256, -0.36920992, -0.029054813, 0.12830003, 0.004987549, 0.08724278, -0.029499404), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.021272454, -0.063295126, 0.011779576, 0.103093, -0.011095461, 0.027948728, -0.014605259, -0.04723974, -0.05334346, -0.044831257, -0.07296399, -0.03314197, -0.01687865, -0.09261895, -0.06128567, 0.092708185), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.0077418387, 0.00871427, 0.060824487, 0.1093608, -0.021077013, -0.057341542, -0.04769576, -0.08144089, 0.0212823, -0.06731425, -0.04134463, -0.0016761447, -0.03402026, 0.036424547, 0.11689576, -0.14946719), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.18536687, 0.020073935, 0.17041959, 0.024790209, 0.08397728, -0.13884324, 0.013950321, -0.055075396, -0.09317963, -0.05723721, -0.060491834, 0.0017911601, -0.109154835, 0.010338362, -0.1982491, -0.21752335), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.031852514, 0.031424347, 0.07817056, 0.07770759, 0.019805199, -0.091223724, 0.11914662, 0.1673029, -0.018734453, 0.16275099, 0.23245652, 0.36139074, -0.1396047, -0.14774057, 0.13756078, -0.123794965), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.034937833, 0.20777488, 0.10104809, -0.035140667, 0.2536575, 0.010970045, 0.16896339, -0.081219964, -0.062478427, -0.0010431948, -0.027980985, 0.11446318, -0.127309, 0.21002083, 0.044436257, -0.16986957), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.06309646, -0.042341243, 0.36642808, 0.18653205, 0.06973023, 0.06315932, -0.323688, 0.25672218, 0.042820994, 0.13792914, -0.12892757, -0.09220378, -0.18939693, 0.03862022, -0.17376114, -0.24673308), target2);\n\ttarget2 = MulAdd(f2, MF4x4(-0.02130602, -0.35428852, -0.011634983, -3.9823462e-05, 0.110818714, -0.2981158, 0.060209107, 0.012538829, -0.0744833, -0.050204318, -0.12676497, -0.031484153, -0.28799182, 0.22338839, -0.070876874, -0.02102363), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.07929991, 0.014598492, 0.23034762, 0.024872296, 0.07480494, -0.17139243, -0.014421178, 0.056448363, -0.028626937, -0.022152562, 0.044871796, -0.048653606, 0.009350802, 0.019022083, -0.08554845, -0.0922645), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.027405115, 0.1831188, 0.28516722, 0.19882526, 0.27299204, -0.06910511, 0.03244419, -0.0031333128, 0.061055277, -0.114398144, 0.03729459, -0.07840815, -0.37776002, -0.24129418, -0.54815483, -0.2702045), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.053723935, 0.13472083, 0.09563273, 0.19009806, -0.18722993, -0.25939655, -0.016197463, -0.067061596, 0.1647598, 0.061905228, 0.06191816, -0.018582113, -0.07218153, 0.11278394, 0.05478068, -0.104871586), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.0036616288, -0.045782693, -0.226954, -0.05043515, -0.078096785, -0.036197383, 0.09269631, 0.016823346, -0.0060579977, -0.041455746, 0.09032774, -0.09217121, 0.058089796, 0.060311552, 0.033079024, 0.022586476), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.0436363, -0.079482526, 0.0027447809, 0.039558932, 0.13275702, 6.898711e-05, -0.21961488, -0.11315821, 0.0076181027, -0.025279062, -0.15829584, -0.063141204, 0.062049046, 0.13117202, -0.02435016, 0.109555416), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.010148116, 0.056620967, -0.015910713, -0.07370375, 0.1529919, 0.005792597, 0.02771225, -0.17027487, 0.096740395, 0.063347995, 0.17823112, 0.054105148, 0.04995114, -0.28613812, 0.06369567, 0.15978208), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(-0.13688345, 0.16967694, -0.061759472, 0.013682004, -0.1290496, 0.07167547, -0.065592445, -0.17897636, 0.057080988, 0.035630587, 0.09140394, -0.08695068, 0.16807681, 0.014749346, 0.07875138, 0.034913708), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.098915346, -0.31459075, -0.10892429, 0.1557498, -0.19764107, -0.26881596, -0.03589311, 0.45288458, -0.34171388, 0.12675741, 0.18415868, -0.19770056, 0.29025507, -0.15812592, 0.09685835, 0.0027761247), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(0.06425249, -0.01169722, 0.06379363, 0.053835012, -0.07356561, -0.06367294, 0.108630784, -0.14137438, 0.08536725, -0.03209748, 0.07250959, -0.014214082, 0.07170588, -0.25647813, 0.1092683, 0.18791042), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.023783233, 0.14261739, 0.102011986, -0.03633555, -0.05032627, 0.09378387, 0.11764051, 0.1353335, 0.032817088, -0.1352964, -0.00667997, -0.13388929, 0.022861317, 0.0037358075, 0.018605746, -0.0009892831), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(0.22419162, -0.23105696, -0.09900454, -0.15831396, 0.12398773, 0.097933106, -0.13189293, 0.1330756, -0.19673057, -0.037342317, -0.13462654, -0.08974021, 0.030326528, -0.0815862, -0.118352115, 0.009187904), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.012130391, -0.06408448, 0.13710785, -0.06678414, -0.09970725, -0.14895032, -0.02366641, 0.029581001, -0.07101809, 0.09414698, 0.018300869, 0.009139046, -0.0027311493, -0.2359952, -0.011602826, -0.007582444), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.15473361, -0.06868751, -0.030721204, -0.08650113, 0.071349874, -0.08177769, 0.1611948, 0.18305337, -0.0144878505, 0.10975452, -0.026968453, -0.04909913, -0.059665974, 0.056036238, -0.11623168, -0.10584912), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.096973225, 0.054132458, -0.010600018, 0.089397885, -0.0031138035, 0.037452973, 0.041115325, 0.1924831, 0.14759748, 0.032560788, -0.082884625, 0.0324635, -0.083511285, -0.050381303, 0.025589975, -0.0981257), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.09183111, 0.034952193, -0.048511654, 0.020719057, 0.1863456, 0.01902738, 0.14455654, -0.008500172, 0.16385981, -0.07806569, -0.031216217, -0.17002788, -0.08882952, 0.07335293, -0.2223089, 0.01706056), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.08361569, 0.046698716, -0.016646344, 0.09351987, 0.0054158634, -0.13641126, -0.12396605, 0.011380122, 0.040951792, -0.11222528, -0.0031548145, -0.0022303525, 0.0350846, -0.03280425, -0.09972476, -0.113325305), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.19961461, -0.27561286, -0.12783135, -0.062596925, 0.005870981, -0.24796526, 0.18717633, -0.16945636, -0.076396205, -0.08411448, 0.13751988, 0.21014418, -0.008655945, -0.09848541, -0.14536901, -0.2132181), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(0.14118621, 0.20831147, -0.020545695, 0.008340737, 0.016840864, -0.16912372, -0.121718146, 0.15108089, -0.19803092, -0.07827729, -0.047639225, -0.12277847, 0.04974115, -0.09349339, -0.2756667, -0.19581003), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.0036992705, 0.16539848, 0.022026122, 0.07740234, -0.035687633, -0.004568715, 0.017408118, -0.09757294, -0.094941914, -0.3381112, -0.12724453, 0.025583982, -0.18571027, 0.047607586, -0.0704089, -0.055323426), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.13821335, 0.028168043, 0.09990671, -0.032266147, -0.067236245, 0.11512147, -0.112986445, -0.10818019, -0.10062181, 0.21276556, 0.01681818, 0.069806606, 0.09628121, 0.06456379, 0.10394843, -0.02343886), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.041937463, 0.072631165, 0.045366894, -0.0046993676, 0.03946691, 0.121010706, -0.030089365, -0.007266469, 0.0092267515, 0.14853416, -0.033248078, -0.027284347, -0.10031526, 0.15864117, -0.16782752, -0.18466589), target2);\n\n\tconv2d_3_tf[gxy] = target1;\n\tconv2d_3_tf1[gxy] = target2;\n}\n\n//!PASS 5\n//!DESC Conv-4x3x3x16\n//!IN conv2d_3_tf, conv2d_3_tf1\n//!OUT conv2d_4_tf, conv2d_4_tf1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_3_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_3_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_3_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_3_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_3_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_3_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_3_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.04244928, -0.014280219, 0.017129054, -0.08807801 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.004729794, -0.0124398535, -0.08538641, -0.058604605, 0.008671952, 0.25604513, 0.020800482, 0.24144122, -0.028920606, -0.04705229, 0.030192787, 0.0010597534, 0.017666103, 0.0041322373, 0.20027764, 0.08919112), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.0001626656, 0.05816014, -0.0060765734, 0.08811165, 0.35835367, -0.016291425, -0.56892496, 0.083845764, 0.15026698, -0.15916558, 0.08069463, -0.3931291, -0.0123534845, -0.111639686, -0.14637001, -0.08171439), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.114976816, 0.023376396, 0.13855027, 0.07438716, -0.069991484, 0.20377779, 0.23929878, -0.040769435, 0.018832395, 0.005638609, -0.091848075, 0.027843866, 0.023744943, -0.06620523, -0.11678267, 0.0844119), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.0035854098, -0.08432094, -0.17799544, -0.10041983, 0.25605857, 0.021009786, 0.030499447, -0.09928291, 0.052178737, -0.08286175, -0.057888374, 0.024606042, 0.046342995, 0.13875343, 0.11279266, 0.19826262), target1);\n\ttarget1 = MulAdd(e1, MF4x4(-0.016232021, -0.21539623, 0.0936961, 0.021143785, 0.094262615, 0.049040064, 0.40978724, 0.15347758, 0.08884813, -0.24887115, -0.14756748, -0.5020875, 0.112477, 0.1466549, -0.33418837, 0.5769466), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.16832942, -0.07354198, -0.12081261, -0.055348314, 0.39716053, 0.25583258, 0.09870877, 0.2151021, -0.025700683, -0.1801462, -0.04616654, -0.02782245, -0.054461803, -0.00042802413, -0.00163228, -0.004240747), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.05193433, -0.0018198475, -0.17647028, -0.19462106, 0.1538165, 0.054894235, 0.12183955, 0.07340974, -0.0019901982, 0.0357373, -0.07597063, -0.06681543, -0.00090057997, -0.053894397, -0.010301875, -0.16553953), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.30873474, -0.2836045, 0.057037193, -0.5016378, 0.11952749, 0.102353275, 0.2351629, -0.14635189, -0.019398788, -0.08776502, 0.021669978, -0.089918956, -0.2187901, -0.1180891, -0.049789533, -0.16109149), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.078335494, -0.08867304, 0.03349591, -0.1000293, -0.20235832, 0.22917585, -0.09905303, 0.08381748, 0.014350217, -0.14478815, -0.027479894, -0.026432173, -0.10309177, -0.09860884, -0.019177807, -0.06963025), target1);\n\ttarget1 = MulAdd(a2, MF4x4(0.008169383, 0.12532842, -0.23369955, 0.077973194, 0.09076616, -0.021277165, 0.1721421, -0.26914293, -0.014729218, -0.023279984, -0.057670787, 0.003598546, -0.015225789, -0.0115396585, -0.26196182, -0.10724508), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.16542235, 0.06589374, 0.07410237, 0.26753154, -0.3356288, 0.3096256, 0.07112498, -0.0992165, 0.15020338, -0.11021673, 0.18803611, 0.12918204, 0.109007336, -0.031968266, 0.057093572, 0.035949256), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.065006174, 0.031055925, 0.0390232, -0.01678507, -0.21553491, 0.14171642, -0.19541772, -0.033691674, -0.06241631, 0.07497651, 0.024557155, 0.056778047, -0.060191352, -0.0261998, 0.07493729, -0.0699132), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.008541382, 0.020270415, -0.027760057, -0.040962905, -0.26732433, 0.34379438, -0.23012447, 0.0051356517, -0.04059567, 0.0972959, 0.039965224, -0.14796777, -0.0016924662, -0.116963714, -0.026353523, -0.29799464), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.03329303, -0.12663862, -0.0004959157, -0.11162377, 0.26238343, 0.43260252, -0.16504994, 0.10727678, -0.22505566, 0.43474057, 0.43304008, 0.05143919, 0.40494493, 0.08689636, -0.035733614, 0.25727916), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.12175736, -0.014467151, -0.17461288, -0.18480565, -0.26439998, 0.307935, -0.058916792, -0.014292711, -0.0569471, 0.10751278, -0.04134206, 0.1847734, -0.07519831, -0.033909313, -0.05001451, -0.136606), target1);\n\ttarget1 = MulAdd(g2, MF4x4(0.1424893, -0.026820501, 0.19645774, -0.0011315406, -0.14680974, 0.07662838, 0.21108222, 0.13260938, 0.17923595, -0.085527614, 0.08217639, 0.06579479, 0.05985784, -0.09016323, 0.11172888, 0.111903176), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.19842595, 0.0093640275, 0.10433465, 0.13341904, -0.082806975, 0.22555825, -0.1315717, 0.11907785, 0.24012424, 0.47776055, 0.1835734, 0.17483878, 0.079803735, 0.01155073, -0.21146573, -0.16484722), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.15064004, 0.021381427, 0.18301587, 0.21225913, 0.054995645, 0.03212186, 0.052798916, -0.048424408, 0.03609021, 0.0964704, -0.059469886, -0.05133066, -0.08157349, 0.051145166, -0.09107608, -0.1362262), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.090521574, -0.014747857, -0.081675015, -0.118686825, 0.04848682, -0.033071827, 0.008534588, 0.023765508, 0.16849907, -0.21797262, -0.17049783, -0.07824179, -0.033794608, 0.052612655, 0.095820345, -0.07262317), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.22816367, -0.13772108, -0.036353834, -0.47638395, -0.0530902, 0.14089061, 0.076203234, 0.18006112, 0.121814854, -0.20750527, 0.08266107, -0.28634354, 0.14301859, -0.13458411, 0.00501663, -0.039783802), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.103384845, -0.14389835, 0.08275834, -0.068423435, 0.22643796, -0.02966374, -0.2847584, 0.037081387, 0.02349005, -0.19353923, -0.00095957273, -0.13623689, -0.073120415, 0.03941467, 0.21864155, -0.014019576), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(-0.082576886, 0.17085212, 0.08971252, -0.04213377, -0.032548156, 0.022137715, 0.08399252, -0.0011743539, -0.09410863, -0.41728264, -0.20709297, -0.18933547, 0.027059928, 0.09743364, 0.2504647, -0.041173562), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(-0.20924084, 0.291118, 0.029851688, 0.16953468, 0.02936709, 0.12213576, 0.22944322, 0.108747594, 0.0001881129, -0.27398208, -0.009702691, 0.15449248, -0.9472944, -0.26114875, -0.28161275, -0.3495961), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(-0.12994622, -0.2758638, -0.1091727, -0.0968308, -0.14323105, 0.035175014, -0.08023811, 0.006023802, -0.031529594, -0.1486306, -0.3398172, -0.23240276, -0.29163983, 0.173475, 0.18809283, 0.22197202), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.048254848, -0.083444916, -0.014334202, 0.060992356, -0.023099286, -0.09492961, 0.05592045, 0.0026059286, 0.08998117, -0.108810075, -0.053304546, 0.045926623, 0.068255246, 0.099023566, 0.01595483, 0.1336309), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.21916585, 0.2837387, 0.14624594, 0.18843961, -0.06747584, 0.054924384, -0.082568415, 0.05011459, 0.014297759, -0.3884833, -0.054417178, -0.18970548, 0.088336475, -0.030646667, -0.2980552, -0.030035203), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.02748568, -0.011897529, -0.2370837, -0.016740574, -0.0282112, 0.050353892, -0.10761107, -0.00036999505, 0.037646662, -0.17742962, 0.06489219, -0.158852, -0.08016933, 0.07808515, -0.105895035, 0.079869986), target1);\n\ttarget1 = MulAdd(na2, MF4x4(-0.0058994526, -0.037170693, 0.2574696, 0.06199102, -0.04497728, -0.10667442, -0.15183865, 0.0212881, -0.030842574, 0.073473394, 0.010764398, -0.00084518327, -0.03893014, -0.009649613, 0.07443129, 0.15108284), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.11325495, -0.096435815, -0.097331434, -0.049700152, -0.17231967, 0.047090057, -0.019111065, 0.104790315, -0.15004838, 0.13950798, 0.055996202, -0.070548095, 0.047154237, -0.007650949, -0.053611025, -0.012242293), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.12787002, -0.04958212, 0.053988468, 0.0017896162, 0.049493514, -0.009475431, -0.0022641935, 0.03933694, -0.005174597, 0.043754533, -0.1432976, 0.037084177, -0.04601288, -0.032077815, -0.059897035, 0.12584484), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.019409029, 0.10492923, 0.268368, 0.12597778, -0.17733063, -0.0085961, -0.27136415, -0.049664587, 0.012515404, -0.21444482, -0.39275557, -0.12297177, 0.06800057, 0.19228315, 0.06245887, 0.35772634), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.16317715, 0.2288402, -0.23235172, 0.22230752, -0.1646375, 0.13366091, 0.16681044, -0.17399235, 0.33997267, -0.3179832, -0.34756508, 0.39843196, -0.10748536, 0.322923, 0.23339489, 0.08684083), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.02835275, 0.12314228, 0.24030593, 0.30856124, 0.055735108, -0.044914473, 0.0031432225, 0.07469899, 0.1778018, 0.107083894, -0.023706734, -0.15501897, 0.0943098, -0.034707237, -0.18622099, 0.05257965), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.042839274, 0.12597966, 0.08979042, -0.0647561, -0.050434645, 0.049438696, -0.20008127, -0.05572608, 0.046238814, 0.12622325, -0.019017145, -0.13960391, -0.040050175, 0.14298008, -0.20270552, 0.13391526), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.0073277587, 0.10606624, -0.08940439, -0.09656414, 0.12387374, -0.0013147948, 0.23607181, -0.00037969893, 0.050353236, -0.17266603, 0.27796733, -0.09877832, 0.02711225, 0.096394345, 0.07457944, 0.21541388), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.18612787, -0.00027517386, -0.17136407, -0.06413671, 0.025629476, -0.04570916, 0.0008431566, -0.03419168, 0.08123608, 0.09465922, 0.11975521, 0.1269741, 0.08413221, 0.12125001, 0.04727287, 0.072378494), target1);\n\t\n\tMF4 target2 = MF4(-0.14375664, -0.0056876075, 0.052177623, 0.07152566);\n\ttarget2 = MulAdd(a1, MF4x4(0.01973856, -0.05053795, 0.015545361, 0.10867395, 0.33441806, 0.14731607, 0.6793983, -0.21394718, -0.00846322, 0.09146322, -0.07427475, -0.078477465, -0.090998545, 0.133366, 0.105515696, -0.13784988), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.05404873, 0.09784018, -0.1337389, -0.18082313, 0.13461179, -0.3816801, 0.12209786, 0.08176651, 0.10461896, -0.43315184, 0.017470734, 0.20423968, -0.03941875, -0.101959296, -0.09440259, 0.09154717), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.17229515, -0.06907825, -0.008382803, -0.16671611, -0.01576541, 0.03985307, 0.08209482, -0.11707446, -0.11793074, 0.13702396, -0.02013158, 0.07302033, -0.022301994, -0.11464677, 0.036753565, -0.093276784), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.017650167, 0.009475923, -0.17856382, 0.15925962, 0.06434641, -0.15568036, 0.038135886, 0.18855911, -0.04427734, 0.1878215, 0.10856261, 0.0041275816, -0.12046199, 0.13610138, 0.3741596, -0.12934728), target2);\n\ttarget2 = MulAdd(e1, MF4x4(-0.24631616, 0.0169485, -0.035534818, 0.37795424, -0.08546174, 0.07817259, 0.42897213, -0.47965595, -0.0146556785, -0.20510523, -0.18889453, 0.06476019, 0.1021008, -0.35398817, -0.031071864, -0.21416448), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.32810766, 0.050585747, -0.17658374, -0.13881154, 0.16417882, -0.21286008, -0.106835455, -0.1722344, -0.14151084, 0.08962986, 0.057395387, -0.01623662, 0.02570415, 0.15626897, -0.12687978, 0.080729105), target2);\n\ttarget2 = MulAdd(g1, MF4x4(-0.050597478, -0.018753758, -0.036346875, -0.017908493, 0.058593344, 0.008303028, 0.05254987, -0.06635018, -0.022532012, 0.029511122, 0.026682215, -0.054647952, 0.069466785, -0.08892492, 0.025351115, -0.023130694), target2);\n\ttarget2 = MulAdd(h1, MF4x4(0.2412473, -0.16138165, -0.15117447, 0.11851003, -0.096868426, 0.082690425, 0.27923304, 0.11590443, 0.19363573, -0.15770023, -0.066793665, 0.011681678, 0.14037277, -0.112065665, -0.048159517, 0.009453693), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.1580054, -0.0060506654, 0.05267837, -0.09178131, -0.09107123, 0.23191126, 0.21108283, -0.070422985, 0.024321035, 0.06131459, 0.066626504, 0.032481454, 0.044402298, 0.1390604, -0.14432502, 0.040869843), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.10264861, 0.013504324, 0.012482852, -0.1781206, -0.12799414, -0.27026084, -0.123830505, 0.098105, -0.039127555, 0.09367889, 0.122323096, 0.1416734, 0.044763107, -0.21801683, -0.14018978, 0.17646866), target2);\n\ttarget2 = MulAdd(b2, MF4x4(0.017453065, 0.11498537, -0.10998983, -0.3116098, -0.3099762, 0.5024706, 0.051817298, 0.03170681, -0.18937826, 0.07946567, -0.11978771, -0.09523745, -0.0033551592, -0.11768945, 0.08932359, -0.06689581), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.1507582, -0.013266159, -0.073085934, -0.07252967, -0.06301927, -0.13218755, 0.12984878, -0.13678701, 0.023422396, 0.082123175, 0.006906731, -0.004018426, -0.15813835, 0.13711788, 0.016018609, 0.13443229), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.06960673, 0.16156524, -0.1374069, -0.05803206, -0.077960715, -0.10676749, 0.26282015, 0.03521529, 0.058099385, -0.014738148, 0.0011174522, 0.24279532, -0.023991548, -0.108812414, -0.08886019, 0.20584475), target2);\n\ttarget2 = MulAdd(e2, MF4x4(-0.08043308, 0.063343, 0.055290066, -0.15991378, -0.08096304, -0.23888679, 0.019161629, 0.38381267, 0.3672934, -0.119608454, -0.43623593, -0.46014485, -0.5323366, 0.1318621, 0.087373205, -0.05535459), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.20640239, -0.1369444, -0.21677823, 0.08202178, 0.10515278, 0.06810837, 0.073207974, 0.23623931, 0.102422275, -0.05016664, -0.0039228587, -0.1810343, -0.2235563, -0.1246854, 0.1428113, -0.10609135), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.031941894, -0.08905056, 0.21501167, 0.11244667, -0.011811734, 0.21630247, 0.07589472, -0.040489636, -0.11824066, -0.11520391, -0.10075633, -0.035642453, 0.062144946, 0.0073282206, 0.14119269, -0.060479023), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.29382935, -0.056808118, 0.051812876, -0.061358813, -0.08344258, 0.124203674, 0.037964176, -0.01961274, -0.000951725, 0.50005037, -0.24176972, 0.06487161, -0.15469861, 0.04336187, 0.17826353, 0.040010225), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.02044482, -0.0879271, -0.01053958, -0.31148303, 0.07497373, -0.11548258, -0.1666126, 0.02369657, -0.058044076, 0.010801491, -0.005933901, -0.08910467, 0.007953008, 0.03761974, -0.029501524, 0.16816042), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.1779597, -0.10213089, 0.29942423, -0.016642543, -0.015537001, -0.04676146, 0.09585872, -0.0055750017, -0.014361908, -0.20667697, -0.11348746, 0.13081487, -0.10437329, 0.14328459, 0.11648822, -0.09163837), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.019033967, -0.12420627, -0.07748253, 0.43203858, -0.109799065, 0.07605535, 0.060791396, -0.24517195, -0.15674245, 0.21267459, 0.10665515, -0.073150024, -0.1358355, 0.0054066703, -0.16434059, -0.06031853), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(-0.18834068, 0.26840356, -0.12937617, 0.16103932, -0.0062331813, -0.13630053, -0.013911821, 0.022389365, -0.044232946, -0.056454606, 0.022426741, 0.18010215, 0.041900013, 0.03375041, -0.11376866, -0.010313381), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.12497669, -0.31161824, 0.097568035, 0.19443443, -0.05056519, -0.0031457904, 0.1055554, -0.083650924, 0.07630523, -0.34177595, -0.093093194, 0.20701368, -0.030962149, -0.054470222, -0.23853977, 0.004326528), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.34370202, 0.085750066, -0.16071722, -0.54335934, -0.35595295, -0.050744478, -0.17405547, 0.008628697, -0.007086256, 0.23164117, 0.340156, 0.5475976, -0.15292351, 0.28019544, 0.038059216, 0.0044727), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.08231968, -0.0052294536, 0.07451547, 0.22278999, -0.3305531, 0.0017458396, 0.10818422, -0.21325395, -0.08807993, -0.110342845, 0.10082142, -0.051594347, 0.24192205, -0.18042035, -0.0095462985, -0.08757798), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.096379586, 0.021887815, -0.05097233, -0.06797989, -0.026171045, 0.022944937, -0.015915364, 0.037667938, 0.17216732, -0.014889412, 0.07343887, 0.028236505, 0.0015047621, 0.1355103, -0.09918284, -0.07673695), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.25385055, 0.15163356, 0.0030003798, 0.18464413, 0.05611221, 0.099498056, -0.07128191, 0.042955168, 0.027493173, 0.07440157, 0.07814497, 0.096160784, 0.13571084, 0.056412842, -0.031997006, -0.16073681), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.21634746, 0.025153082, -0.064477116, 0.0005679147, -0.0029436245, 0.12794618, 0.024849026, 0.03018052, 0.11723976, 0.059955597, -0.013594654, 0.09091745, 0.04775348, 0.21260159, -0.07463213, -0.06727042), target2);\n\ttarget2 = MulAdd(na2, MF4x4(-0.12166018, 0.024545137, 0.08611618, -0.17627168, 0.09042604, -0.14157623, -0.22147785, 0.09100581, 0.11078359, 0.031410985, -0.17170976, 0.09532806, -0.059569277, 0.09392676, 0.11784347, -0.21471368), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.1483187, -0.2217563, 0.12032977, 0.14932398, 0.27428308, -0.04568031, 0.12670338, 0.09586169, 0.06700745, 0.005126449, 0.0027694793, -0.033667028, 0.06447861, -0.08585174, -0.05509812, -0.11358761), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.22750492, 0.032906335, -0.029479047, 0.11580199, -0.05812372, -0.032269973, 0.05219915, 0.041658226, 0.010897959, 0.065550454, 0.0076911976, -0.045743827, 0.11614996, -0.10393113, -0.0012606392, -0.034367524), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.09350742, 0.09561609, 0.3735968, 0.031685118, -0.042026598, 0.17006761, -0.3910107, 0.16984761, 0.25679177, 0.036610503, -0.13772772, 0.11101589, -0.1137049, 0.07211461, 0.18065079, -0.12324793), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.020749722, 0.14413361, -0.061903823, -0.21550268, 0.31306142, -0.11532895, 0.029482557, 0.03282164, -0.09800627, -0.20765196, 0.33030233, 0.075725295, 0.49252015, 0.042455837, -0.07264194, -0.10401895), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.22697076, -0.15738785, 0.09740376, -0.072098814, -0.06638972, 0.12336611, 0.0073687397, 0.048267826, 0.06717852, -0.027047804, -0.123397194, 0.17829034, 0.04215185, 0.066311836, -0.061742183, -0.046373066), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.041311592, 0.2813485, 0.055084586, -0.01823069, 0.08105147, -0.087944716, -0.10135052, -0.02653456, 0.063169874, -0.1351186, 0.06722432, -0.016406318, 0.08666922, 0.0555909, 0.12086502, -0.17224412), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(0.26026788, -0.18303715, 0.029279215, -0.12858874, 0.027197823, 0.0919464, 0.00849638, 0.10547888, -0.12952055, -0.14414985, 0.1903315, 0.05004528, -0.12657289, 0.038008716, -0.036606666, -0.054025438), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.069167465, 0.2699947, -0.11137602, -0.05888806, -0.107324794, -0.07598601, 0.06042177, 0.0064530694, -0.039780665, -0.076666445, -0.00846108, -0.06165907, -0.06978219, -0.19108103, -0.040026028, -0.120319635), target2);\n\n\tconv2d_4_tf[gxy] = target1;\n\tconv2d_4_tf1[gxy] = target2;\n}\n\n//!PASS 6\n//!DESC Conv-4x3x3x16\n//!IN conv2d_4_tf, conv2d_4_tf1\n//!OUT conv2d_5_tf, conv2d_5_tf1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_4_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_4_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_4_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_4_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_4_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_4_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_4_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.024455175, 0.01669877, -0.066231176, 0.036848705 };\n\ttarget1 = MulAdd(a1, MF4x4(-0.15667982, -0.31441393, 0.29112124, -0.15737213, 0.022372838, 0.10690639, -0.12019085, -0.051941186, -0.30367845, 0.02612279, 0.2372532, 0.2021648, -0.20481086, -0.003770439, 0.14981231, 0.066780254), target1);\n\ttarget1 = MulAdd(b1, MF4x4(0.03270688, -0.42270073, 0.044317324, 0.15907793, 0.14681059, -0.2934784, 0.24933252, -0.067273855, 0.07752533, -0.23194817, 0.0686707, 0.08999225, 0.121678345, -0.12916678, 0.012397381, 0.012315053), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.10090412, -0.20792678, 0.11076032, -0.02938975, -0.1944187, -0.2003259, 0.04438032, 0.36946484, -0.019868722, -0.15830222, 0.042811528, 0.015641417, 0.113098525, 0.080257006, 0.011135628, -0.2877629), target1);\n\ttarget1 = MulAdd(d1, MF4x4(0.15482685, 0.06579119, 0.28301102, 0.23729764, 0.15990537, 0.4529694, 0.107880585, 0.10668121, -0.42430598, -0.2631025, 0.10513542, -0.036242936, -0.09827965, -0.0069260495, -0.11689201, -0.041436482), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.08472191, -0.13051608, 0.047930017, 0.36831668, 0.1164478, 0.21384816, 0.22062506, 0.2094167, 0.48668453, 0.32302913, 0.36268055, -0.091801375, -0.079141125, -0.26613805, -0.16608004, 0.03810683), target1);\n\ttarget1 = MulAdd(f1, MF4x4(-0.13474251, -0.04824603, 0.23303726, -0.116136365, 0.0056330245, 0.15829784, 0.0012259148, 0.12648389, 0.038680512, 0.05131116, 0.024099711, 0.4555406, 0.0035716395, 0.11633299, 0.094744846, -0.2457627), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.0576871, -0.04037522, 0.16857862, 0.0031084458, -0.027274646, -0.18154246, 0.13337846, 0.035422433, -0.0030749738, -0.17288287, 0.019983152, -0.31871706, -0.03280405, 0.06825421, -0.1563798, 0.05031885), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.066631876, 0.012560506, 0.1690693, -0.018248236, 0.0450104, 0.016296914, -0.14910112, -0.16191053, 0.5078224, -0.017615631, 0.15226597, -0.13373777, 0.20148668, 0.060258996, 0.13215344, 0.18430072), target1);\n\ttarget1 = MulAdd(i1, MF4x4(0.12976126, -0.072738245, 0.053067926, 0.09752956, -0.04716214, 0.04136464, 0.014162617, -0.06621296, -0.09617736, 0.057469178, 0.01280261, -0.042976785, -0.12570308, 0.006027807, 0.031038594, 0.06569918), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.12655424, -0.41563693, -0.030971345, -0.06357555, -0.14121394, -0.15667427, 0.14398985, 0.05995984, 0.0821605, 0.12462943, 0.007492498, -0.0030187522, -0.22804567, -0.10487421, 0.13180672, -0.13978589), target1);\n\ttarget1 = MulAdd(b2, MF4x4(-0.075991526, 0.12352044, -0.17844258, 0.010614991, -0.18293494, 0.25009897, -0.080779895, 0.21548378, 0.22215544, 0.048670914, -0.057372037, 0.078176, 0.17490411, 0.004919551, 0.059619516, 0.12660357), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.06282951, 0.10929357, 0.026720649, -0.15939257, 0.17107709, -0.04334904, -0.03047162, -0.101681694, 0.03118431, 0.19994627, 0.025729552, 0.035035726, -0.0012207883, -0.08618888, 0.061205562, 0.009940555), target1);\n\ttarget1 = MulAdd(d2, MF4x4(-0.23581573, 0.08002133, -0.15170844, 0.08872338, -0.25767094, -0.09273545, 0.18153891, 0.2544269, -0.084598936, -0.089766875, -0.14610913, 0.002247754, 0.1802837, -0.019625561, 0.30239686, -0.032793984), target1);\n\ttarget1 = MulAdd(e2, MF4x4(0.5223286, 0.10347663, 0.4000593, 0.25440502, -0.07646958, -0.31940606, 0.053407036, -0.09356492, 0.2738851, 0.23945184, -0.2907089, -0.45822915, 0.13415676, 0.17187089, 0.08731114, -0.27670014), target1);\n\ttarget1 = MulAdd(f2, MF4x4(0.059273496, -0.107137166, 0.12087539, 0.179237, -0.021209063, -0.02548005, 0.061256204, 0.033822674, 0.54491127, -0.2475085, 0.08055858, -0.4071213, -0.045093834, 0.07161349, 0.08219979, -0.31735933), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.29527053, 0.021469543, 0.07202354, -0.07103959, 0.03990857, 0.2490762, -0.19419849, -0.13916986, -0.05325315, 0.12922864, -0.041463424, -0.031249814, 0.073991664, -0.09723187, 0.35132217, 0.024760868), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.09606787, -0.0951808, -0.0059865676, -0.052033573, -0.3118038, 0.4432636, -0.12943317, 0.09484738, 0.10621756, -0.10550469, 0.11264014, 0.1402276, -0.012679125, -0.08809835, 0.029994955, -0.15121669), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.123397775, 0.048338536, -0.00975707, -0.103767075, -0.041053303, -0.07228534, 0.046792876, 0.0668788, 0.29554394, 0.012451002, 0.19568972, 0.112091154, 0.10882395, -0.0995439, 0.051324263, 0.24967718), target1);\n\ttarget1 = MulAdd(na1, MF4x4(0.2699648, 0.17300771, -0.16056584, 0.1099392, 0.11674778, -0.19811755, 0.111880325, -0.06075038, -0.095849104, -0.04510651, -0.04180761, -0.0052786698, 0.11037549, -0.24115366, 0.018509468, -0.07819484), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(0.10981622, 0.044488225, 0.050722387, -0.3146652, -0.0013019707, -0.24084032, -0.10475088, 0.026944289, 0.1592903, 0.33087498, 0.061839584, -0.043863457, -0.06904603, -0.08635262, 0.088630445, -0.15485142), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.06810522, 0.19927117, -0.08130387, 0.11612667, -0.015104349, -7.738651e-05, -0.06419643, -0.14813533, 0.026650215, 0.015038833, 0.08161237, 0.058321163, 0.015005185, -0.16189656, 0.024501886, 0.1927279), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.31858218, 0.11962043, -0.20560326, -0.13190113, 0.02138715, -0.057066392, -0.085771754, -0.124566585, 0.044749223, 0.13687828, 0.1195792, 0.14021616, 0.26204133, 0.05119197, -0.13980037, 0.050747477), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(-0.21238558, -0.0734057, -0.2036023, -0.34308743, -0.29370925, 0.2393742, -0.37877437, 0.036869828, -0.17053255, -0.26900926, -0.23330869, 0.32902205, -0.4882585, 0.27430108, -0.033711653, 0.15501487), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.23487025, 0.085289046, -0.14281847, 0.12543266, 0.15871634, -0.13858907, 0.14810285, -0.0239261, 0.1286852, 0.07754033, 0.01072327, -0.14313328, 0.05480442, -0.12195059, 0.11341822, 0.08224607), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.19490337, 0.023521842, -0.24548791, 0.0035114093, -0.07937166, -0.07674376, 0.08365873, -0.003286068, 0.023862893, 0.009626835, 0.032829892, 0.0078141205, 0.053484406, -0.08297165, 0.09303188, 0.004273738), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(-0.0032906602, 0.13636959, 0.027821168, 0.06270053, 0.024775786, -0.077529594, 0.03799126, 0.030000908, 0.031749167, 0.04360487, 0.004448846, -0.17835903, -0.30834544, 0.013150946, -0.13758293, -0.03296242), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.14166978, 0.034131095, 0.049779188, 0.09453289, -0.011406557, -0.07020709, -0.0031981543, -0.03443845, -0.00010218944, 0.0855161, -0.10951453, 0.042758763, 0.1718446, -0.1577923, 0.0410027, -0.04992991), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.1219178, 0.105126485, -0.041097324, -0.08110963, -0.04857337, -0.11544925, -0.14572923, 0.092435546, 0.091857366, 0.15425235, -0.020324683, -0.05764375, -0.020458939, -0.10527823, -0.085554086, 0.16358297), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(-0.12372687, -0.009976829, 0.14252265, -0.1321053, -0.05965866, -0.1393898, -0.017603246, -0.02714342, -0.16824952, -0.23083204, -0.012299022, -0.06689838, -0.015830487, 0.21299921, -0.11637202, 0.0074968333), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(-0.01979935, -0.182785, -0.015397454, 0.14175794, -0.011465284, 0.11285164, -0.036115747, 0.07150463, -0.083641894, -0.10221778, -0.13871445, 0.099696055, 0.04603662, -0.06463785, -0.007984529, -0.0032940735), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(0.072830334, -0.057334073, 0.09086239, 0.13039105, 0.06350303, 0.17130788, -0.2181585, -0.09137403, -0.31397742, -0.019071499, -0.017274613, 0.13762084, 0.10195637, -0.021455176, 0.04011394, -0.08029658), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(-0.26982597, -0.40265098, -0.4151411, 0.038557775, -0.095602125, 0.3503172, -0.029988842, -0.03484708, 0.095536314, -0.0030311556, 0.31589827, 0.52763534, -0.12629713, -0.24356791, 0.0059487303, 0.42298427), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.054166105, 0.18827972, -0.081673265, -0.06720384, 0.09375001, 0.22173035, -0.14050071, 0.108400136, -0.15553835, -0.08716729, -0.037366748, 0.10971073, -0.02560103, -0.26702073, -0.05201882, 0.2432563), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.16196893, 0.0889265, -0.09887943, -0.042956755, -0.054403376, -0.123823255, 0.045847844, 0.017027669, 0.00539936, -0.112265736, 0.050549984, -0.104931094, -0.06883012, -0.25745714, 0.11155538, -0.15363649), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.22157209, 0.18200903, -0.13290548, 0.026721261, -0.06066069, -0.18150693, 0.08768983, 0.037362453, -0.1073367, -0.070236765, -0.41223463, -0.168915, -0.15517351, -0.13949952, -0.13307643, -0.15935421), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(-0.026589906, 0.0930502, 0.05195435, 0.06301585, -0.01107014, -0.019382332, 0.027223695, -0.004045145, -0.15238355, -0.0345132, 0.06355168, 0.0011230056, 0.16690113, 0.0017829507, -0.0023939044, -0.09471834), target1);\n\t\n\tMF4 target2 = { -0.023832673, 0.03702965, -0.04749135, -0.10982549 };\n\ttarget2 = MulAdd(a1, MF4x4(0.01763509, -0.17156707, -0.06841296, -0.026132878, -0.10600523, 0.11245994, 0.121395074, -0.09331501, 0.12764473, 0.0428028, -0.11837395, 0.2092563, -0.04357652, -0.0490096, 0.024701532, 0.10518723), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.17130826, -0.31987694, -0.07639005, 0.21362033, 0.058639023, 0.066175915, -0.25344703, -0.07923442, -0.14766373, 0.040518284, -0.031103026, -0.040075514, -0.051108997, -0.28214613, -0.18504949, 0.27544948), target2);\n\ttarget2 = MulAdd(c1, MF4x4(0.030991005, -0.011353306, 0.15237464, 0.15458584, 0.1250524, 0.19959912, 0.14049476, 0.38410887, 0.07378578, -0.017728366, 0.0963528, -0.043756213, -0.039577194, -0.11800575, -0.08392266, -0.07599512), target2);\n\ttarget2 = MulAdd(d1, MF4x4(0.022089608, -0.027317125, 0.051330008, -0.0075439885, 0.021650828, -0.0009390209, -0.12043464, 0.049332134, -0.055557396, -0.053297505, -0.0918705, -0.13089466, -0.10994107, 0.072746456, 0.11496739, -0.05225977), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.29730305, 0.26317745, 0.052159555, -0.32006654, 0.48288685, -0.049926184, -0.08091092, -0.13825637, -0.1485706, -0.288657, -0.41443697, 0.06856032, -0.23809211, -0.12953928, 0.4783034, -0.47557938), target2);\n\ttarget2 = MulAdd(f1, MF4x4(0.026139118, -0.23031352, 0.04861487, 0.033556074, 0.2702056, 0.22802536, -0.15385233, 0.1664119, 0.18749923, 0.36927548, -0.011473684, -0.11771165, -0.16859052, -0.4513202, 0.12863952, 0.02482837), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.0073229345, -0.061915245, 0.06710329, 0.0062416573, -0.00555983, 0.14592186, 0.11201052, -0.123630054, 0.32611257, -0.11279885, -0.059449438, 0.2891043, -0.10519016, 0.040108994, -0.012468261, 0.02083298), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.057483062, 0.08454755, -0.15529329, -0.12572923, 0.2600099, -0.02319978, -0.04037675, 0.11496361, 0.07728194, -0.12908956, -0.025529336, 0.112581626, 0.02971823, 0.11659056, -0.01298622, 0.017061908), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.22417091, -0.00222947, 0.04980858, 0.12260437, -0.025507605, 0.042577885, 0.120813504, -0.048522256, -0.038494784, -0.0072195013, -0.23012944, -0.020850847, -0.078296244, -0.014830018, 0.19759563, -0.10000253), target2);\n\ttarget2 = MulAdd(a2, MF4x4(-0.032090195, 0.023757193, -0.08989734, 0.14419042, 0.0112194475, -0.093776144, -0.020197887, 0.29295877, 0.06872183, 0.09511462, -0.03245769, -0.06504889, 0.05132126, 0.00399527, 0.075911656, 0.250893), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.3418496, 0.25525784, 0.0018161442, 0.028484365, -0.17573346, -0.12457501, 0.18466166, 0.20209278, 0.10282706, 0.16353399, 0.025052028, -0.059714165, -0.055806916, -0.28651386, 0.112798095, 0.11624314), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.018793896, 0.07500149, -0.01728254, -0.1726998, -0.13333, 0.09590344, -0.036537904, -0.11522523, 0.19445558, 0.22680458, 0.12061006, -0.06225618, 0.1127748, 0.28380096, -0.07099846, -0.007440302), target2);\n\ttarget2 = MulAdd(d2, MF4x4(-0.43887648, -0.10018577, -0.29267642, 0.12149727, -0.14333835, 0.04161915, 0.19442867, 0.16506511, 0.09655387, -0.0014398015, 0.13189743, -0.14068556, 0.049408, 0.0829072, 0.2950336, 0.36965907), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.41486958, -0.023498302, -0.37900022, -0.31752598, 0.13758768, -0.18782206, -0.31358528, 0.3330786, -0.4039293, -0.06539036, 0.032599606, 0.10663507, -0.26369813, -0.17365438, 0.20723309, 0.1801556), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.004117444, -0.14894462, 0.14915143, -0.047375835, -0.2609916, -0.10172324, -0.14925237, -0.33830285, 0.12131607, -0.18156646, -0.42382464, -0.052582145, 0.2329045, -0.4576963, 0.13756892, 0.055571318), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.31689477, 0.017058033, -0.01904924, -0.016893756, -0.011479519, 0.07316262, -0.07086077, 0.08923511, -0.08190091, -0.025866933, -0.06909204, -0.028601022, 0.023224542, 0.03082087, 0.2230426, -0.16713654), target2);\n\ttarget2 = MulAdd(h2, MF4x4(0.13457374, 0.110913865, -0.1130815, -0.031438913, -0.55201167, 0.04831016, 0.25107765, -0.014003224, 0.19532952, 0.02062346, 0.04839241, 0.088673405, 0.30325848, -0.20222804, -0.085780576, 0.22512968), target2);\n\ttarget2 = MulAdd(i2, MF4x4(0.076354, 0.021940092, -0.16170324, 0.0025543426, -0.0032400405, -0.0046705627, 0.06241069, -0.031247333, 0.098353796, 0.03723474, 0.22971998, -0.017877292, 0.119858086, 0.008041448, 0.2140585, 0.10343376), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.08627595, 0.04532834, 0.027579082, -0.16222088, 0.15583228, -0.14371829, -0.07243855, -0.111895435, -0.14438897, -0.10250594, 0.0034202964, -0.066547595, -0.034390844, -0.021545287, 0.014540157, -0.10215731), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(0.19720152, 0.21534947, 0.1130938, -0.011730973, 0.013247983, -0.10344174, -0.1906514, -0.015767017, -0.020093633, -0.26487067, -0.005960781, -0.057149183, 0.030110173, 0.047692046, -0.19308545, -0.25292158), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.039498243, 0.053682897, -0.01844695, -0.017540915, 0.039454967, -0.27696076, 0.09503274, -0.038958035, 0.17321438, -0.036311295, 0.03123055, 0.02310311, 0.040591653, 0.0054627894, -0.03520426, -0.026101988), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.055991564, 0.06512919, -0.12532505, 0.024075158, -0.04926237, -0.11701171, 0.026792146, 0.013033238, -0.052847516, -0.01550091, -0.008442071, -0.077945165, -0.033220004, -0.13678443, -0.07040586, 0.121846326), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(-0.19537796, -0.016634773, 0.10707109, -0.024361614, -0.16002733, -0.44066608, 0.16488662, 0.013152995, 0.22407806, 0.12854017, 0.19028598, -0.08379244, -0.05594235, -0.15909895, 0.511962, 0.39027596), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.032652248, 0.06004893, 0.011166194, 0.102761306, -0.035113614, -0.29961765, -0.013817978, 0.20938557, 0.08488225, -0.1118558, -0.0375328, -0.035511103, 0.0046933405, 0.20203683, -0.13552529, -0.12685429), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(0.03054923, 0.08224908, -0.059128158, -0.02583655, -0.02133876, 0.0048713544, 0.10848829, 0.06324404, 0.028332822, -0.011002306, -0.027557913, -0.06072362, 0.1019048, -0.02587316, 0.08563405, -0.08119947), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.10568117, 0.1075248, 0.19379964, -0.14337265, 0.019374132, -0.0907804, -0.13827625, -0.03628561, 0.014735499, -0.026882607, -0.25948793, 0.034926686, -0.05988073, -0.22735636, 0.053511668, 0.04765336), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.029848114, 0.09183966, 0.084713496, 0.09422864, 0.069713995, -0.10584984, -0.020899031, 0.059645247, -0.075805016, -0.01828552, 0.06689195, -0.13804196, -0.023465823, -0.034038994, -0.12946706, 0.058709413), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.061918218, 0.038984764, 0.013660938, -0.19340219, -0.014949839, 0.12946278, 0.12725051, 0.13429146, 0.05993008, -0.015394284, 0.011232483, 0.0344157, 0.022161875, -0.023923954, 0.061736204, 0.025963215), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(0.048136763, 0.03162042, -0.01967249, 0.06374493, 0.034645267, 0.22403605, 0.036197048, -0.06903216, -0.1024706, -0.0005459356, 0.049185563, 0.16309108, 0.07394778, 0.10351343, 0.28430694, -0.13531347), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.14705071, -0.09458433, 0.03063114, 0.07901115, -0.11911086, -0.06428132, -0.013549552, -0.041342866, -0.20770676, -0.15104479, 0.054365363, -0.11652907, 0.05639815, 0.070518605, 0.0017846811, -0.00056205114), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(0.27148908, 0.07358356, 0.13644488, -0.13824654, 0.0112991175, -0.021521023, -0.10197379, 0.007816017, -0.13314332, 0.12318473, -0.043214846, -0.15759036, -0.19744353, -0.10267182, -0.28249928, 0.11233295), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.096474804, 0.17893109, 0.014679829, -0.21218887, -0.24170275, 0.10603527, 0.05375366, -0.059315052, 0.17087384, 0.13633691, -0.37958893, 0.43264794, 0.17829923, 0.06485103, -0.37551817, -0.22082718), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.30536333, -0.033212308, -0.25232, 0.11730442, -0.11176368, 0.26223183, -0.049025323, -0.01375941, -0.29028055, 0.16842811, -0.035684332, -0.4180911, -0.1611732, 0.07683385, -0.14263596, 0.17508087), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.23580009, 0.025621435, -0.15757325, 0.008123166, -0.021905439, -0.02162503, -0.059497356, -0.01636353, 0.047654126, -0.084423855, -0.033733923, 0.0127116265, -0.059593942, -0.053935718, -0.050729543, 0.013887048), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.19232626, 0.07915767, -0.05909752, 0.007695347, 0.058876406, 0.057521783, -0.080253534, 0.2011056, -0.27965516, -0.08033169, -0.13025513, 0.12854645, 0.053400308, -0.18445957, -0.18463044, 0.27920377), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(-0.061806213, -0.020037206, 0.003183183, -0.029844081, -0.039553937, 0.028905323, -0.11367984, -0.097321615, -0.10112643, 0.0039709485, -0.06020118, -0.23871279, -0.077974856, 0.05806996, -0.21440302, 0.11898043), target2);\n\n\tconv2d_5_tf[gxy] = target1;\n\tconv2d_5_tf1[gxy] = target2;\n}\n\n//!PASS 7\n//!DESC Conv-4x3x3x16\n//!IN conv2d_5_tf, conv2d_5_tf1\n//!OUT conv2d_6_tf, conv2d_6_tf1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass7(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [ a, d, g ]\n\t// [ b, e, h ]\n\t// [ c, f, i ]\n\tMF4 a1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c1 = conv2d_5_tf.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d1 = conv2d_5_tf.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e1 = conv2d_5_tf.SampleLevel(sam, pos, 0);\n\tMF4 f1 = conv2d_5_tf.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i1 = conv2d_5_tf.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na1 = max(-a1, 0);\n\tMF4 nb1 = max(-b1, 0);\n\tMF4 nc1 = max(-c1, 0);\n\tMF4 nd1 = max(-d1, 0);\n\tMF4 ne1 = max(-e1, 0);\n\tMF4 nf1 = max(-f1, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 nh1 = max(-h1, 0);\n\tMF4 ni1 = max(-i1, 0);\n\n\ta1 = max(a1, 0);\n\tb1 = max(b1, 0);\n\tc1 = max(c1, 0);\n\td1 = max(d1, 0);\n\te1 = max(e1, 0);\n\tf1 = max(f1, 0);\n\tg1 = max(g1, 0);\n\th1 = max(h1, 0);\n\ti1 = max(i1, 0);\n\n\tMF4 a2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0);\n\tMF4 b2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 c2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 d2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 e2 = conv2d_5_tf1.SampleLevel(sam, pos, 0);\n\tMF4 f2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 g2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 h2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 i2 = conv2d_5_tf1.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0);\n\n\tMF4 na2 = max(-a2, 0);\n\tMF4 nb2 = max(-b2, 0);\n\tMF4 nc2 = max(-c2, 0);\n\tMF4 nd2 = max(-d2, 0);\n\tMF4 ne2 = max(-e2, 0);\n\tMF4 nf2 = max(-f2, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 nh2 = max(-h2, 0);\n\tMF4 ni2 = max(-i2, 0);\n\n\ta2 = max(a2, 0);\n\tb2 = max(b2, 0);\n\tc2 = max(c2, 0);\n\td2 = max(d2, 0);\n\te2 = max(e2, 0);\n\tf2 = max(f2, 0);\n\tg2 = max(g2, 0);\n\th2 = max(h2, 0);\n\ti2 = max(i2, 0);\n\n\tMF4 target1 = { 0.00590038, 0.03082865, 0.002111702, -0.03330112 };\n\ttarget1 = MulAdd(a1, MF4x4(0.030931145, 0.013683292, -0.0650242, -0.028732346, 0.120067924, -0.029404473, 0.0038229884, -0.14631765, 0.041900825, -0.076596744, -0.11096378, -0.27100095, 0.0052598766, -0.05929686, -0.06816563, -0.086864315), target1);\n\ttarget1 = MulAdd(b1, MF4x4(-0.043620087, -0.16360405, 0.006527374, 0.15706524, 0.08338088, -0.19027525, 0.22595987, -0.054963548, 0.01825031, -0.03149212, 0.025471251, 0.06429379, -0.011633275, -0.079389006, -0.0030728737, 0.17345747), target1);\n\ttarget1 = MulAdd(c1, MF4x4(-0.011275288, -0.10668036, 0.05718997, 0.010336089, 0.33393976, -0.2029354, 0.075444475, -0.092244044, 0.07605498, 0.20125951, 0.10493973, -0.12306946, 0.03658231, 0.08233366, -0.12205888, -0.116969004), target1);\n\ttarget1 = MulAdd(d1, MF4x4(-0.0070305974, 0.105127215, 0.006041873, 0.26743913, 0.028119443, 0.14823505, -0.28344348, 0.12362866, -0.1215781, 0.08104382, 0.102011785, 0.085380934, 0.061244503, -0.06230063, -0.05353345, 0.1166729), target1);\n\ttarget1 = MulAdd(e1, MF4x4(0.08945733, 0.4101902, -0.06404005, 0.040728435, 0.13076581, -0.20805469, -0.10897316, -0.14924604, 0.10090762, 0.015475414, 0.26346552, 0.12096677, -0.20199244, 0.2780031, 0.18515368, 0.35105625), target1);\n\ttarget1 = MulAdd(f1, MF4x4(0.07463155, 0.26932517, -0.06768551, 0.10470878, -0.1423996, 0.013550665, -0.06167201, -0.1022994, -0.3107166, -0.15609552, 0.1695213, -0.1277181, 0.12582655, -0.1596128, 0.015612055, -0.19826376), target1);\n\ttarget1 = MulAdd(g1, MF4x4(0.011745468, 0.006471601, 0.008110513, 0.025831396, 0.1272883, -0.221959, 0.11993834, -0.007903633, 0.009993582, -0.10170755, 0.026594637, -0.027883623, 0.030666083, -0.036415886, 0.007469573, 0.0674783), target1);\n\ttarget1 = MulAdd(h1, MF4x4(-0.022760388, -0.10911659, -0.012589904, -0.046462692, 0.36987287, 0.71668935, -0.04466556, 0.12082762, 0.0026539841, 0.07070946, -0.00020439121, -0.13925348, 0.08672072, 0.20075354, -0.066352285, 0.14655356), target1);\n\ttarget1 = MulAdd(i1, MF4x4(-0.081081845, -0.21956222, 0.06781787, -0.106362104, -0.03016425, -0.010460211, -0.009725996, -0.009805538, 0.07037355, 0.19254607, 0.038890257, 0.29580075, -0.10355764, 0.12613009, 0.02485986, -0.031927988), target1);\n\ttarget1 = MulAdd(a2, MF4x4(-0.13882205, 0.21770848, 0.015392157, 0.010310204, 0.008225721, 0.07457836, 0.09984027, -0.25452816, 0.2193511, -0.22262146, -0.12950355, 0.026151875, 0.022114651, -0.030566849, 0.034688126, 0.03047327), target1);\n\ttarget1 = MulAdd(b2, MF4x4(0.0363441, 0.19290726, -0.1143055, 0.30871987, -0.05780708, 0.082128406, -0.115280904, 0.07636388, 0.48947453, -0.29715258, 0.146737, -0.3275992, -0.055972476, -0.09991753, 0.17435446, 0.10917291), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.026389305, 0.054523308, -0.028950177, 0.06913328, -0.18626037, 0.08829993, 0.10407121, 0.001246911, 0.103938825, -0.3117343, -0.045564886, 0.07316613, 0.0027089121, 0.099437356, -0.046500806, -0.0927284), target1);\n\ttarget1 = MulAdd(d2, MF4x4(0.051037624, -0.2068234, 0.061572235, -0.3345198, 0.16960172, -0.30289862, -0.002583443, 0.39312238, 0.08246557, 0.16374862, -0.31902805, -0.13205275, -0.032050006, 0.01670186, 0.13852347, 0.120012194), target1);\n\ttarget1 = MulAdd(e2, MF4x4(-0.67096996, -0.06274476, 0.18575665, 0.80282855, 0.23201196, -0.0054729837, 0.050396994, -0.42014772, 0.34904522, 0.26281372, 0.24697208, 0.55475426, 0.49850988, -0.06581312, -0.0068906257, -0.15741143), target1);\n\ttarget1 = MulAdd(f2, MF4x4(-0.04252036, -0.28224963, 0.009723064, 0.116357096, 0.2992567, -0.26702902, -0.05648925, 0.12729199, -0.37574205, 0.54211813, -0.25248805, -0.13023548, 0.18903324, -0.5182459, 0.0141203115, -0.19444294), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.0017735233, -0.010132458, -0.040924776, -0.13767008, 0.20757031, -0.06509882, -0.09756446, 0.018974079, 0.090851985, -0.010158765, -0.03999607, -0.12055641, 0.03629025, -0.018645551, -0.05506811, -0.014202848), target1);\n\ttarget1 = MulAdd(h2, MF4x4(0.16203491, 0.011118734, -0.18486023, -0.024290733, -0.3673846, -0.20295864, 0.23055002, -0.1555852, -0.02706522, 0.03262891, 0.008724611, -0.03760652, -0.20946771, -0.01951837, 0.16955496, 0.11690098), target1);\n\ttarget1 = MulAdd(i2, MF4x4(0.0783421, 0.22656651, -0.15715368, -0.024174158, 0.020260733, 0.032390315, -0.029133298, 0.086601086, 0.13871798, -0.12525433, 0.16097449, 0.058946393, 0.029865682, 0.08508385, 0.040569812, -0.09402932), target1);\n\ttarget1 = MulAdd(na1, MF4x4(-0.05063873, 0.11269313, -0.057484943, -0.13579641, 0.047973365, -0.07103839, -0.07838756, -0.0028928046, -0.019466015, 0.018428024, 0.010016324, -0.057396665, -0.19495595, 0.034307264, -0.022888038, 0.08112259), target1);\n\ttarget1 = MulAdd(nb1, MF4x4(-0.09790086, 0.10613111, 0.06611674, 0.19356097, -0.00073371036, -0.019078335, 0.076719105, -0.016212497, -0.3283475, -0.07547389, -0.08140701, 0.3185625, -0.25060275, 0.16820994, -0.123497784, 0.43272668), target1);\n\ttarget1 = MulAdd(nc1, MF4x4(-0.06365342, 0.11186735, -0.17493224, -0.04207358, 0.0003117533, 0.034089327, -3.067692e-05, -0.03422754, 0.16267666, 0.054771993, 0.048384454, -0.041866794, 0.0036008756, 0.0021496525, 0.20258942, -0.06297619), target1);\n\ttarget1 = MulAdd(nd1, MF4x4(0.03578836, 0.08763908, -0.22370125, -0.32465744, 0.019142643, 0.011316954, 0.17920344, 0.031633645, 0.03766343, -0.116487674, -0.05281752, -0.018965483, 0.049297336, -0.34511214, 0.42598158, 0.051361635), target1);\n\ttarget1 = MulAdd(ne1, MF4x4(0.26638633, -0.33628765, 0.04437907, 0.09616201, -0.020049393, 0.2560829, -0.027108455, 0.255752, 0.3666511, 0.052277412, -0.46667686, 0.48482272, 0.51302284, -0.06941614, -0.17967525, -0.07889891), target1);\n\ttarget1 = MulAdd(nf1, MF4x4(0.18503937, 0.088710256, 0.2083147, -0.20758459, -0.036416974, 0.018303726, 0.03729963, -0.035969947, -0.2685231, -0.42169708, -0.039593916, -0.02642618, 0.29050872, -0.25723743, -0.111259766, 0.15001127), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(-0.026473878, -0.07241443, 0.022400148, -0.03214132, 0.0859297, -0.0036677981, -0.07039137, 0.03703108, 0.042322673, -0.01222808, -0.08151938, 0.033109214, -0.048737407, 0.25929528, -0.40535828, -0.123594694), target1);\n\ttarget1 = MulAdd(nh1, MF4x4(0.10233285, 0.22455986, -0.13368733, 0.033236265, -0.052114893, -0.11709317, 0.009709581, 0.19201641, -0.02973698, 0.032114245, -0.09771862, 0.085680574, 0.15827927, -0.15042172, 0.21833214, -0.13262676), target1);\n\ttarget1 = MulAdd(ni1, MF4x4(-0.08460587, -0.09473209, 0.019323658, -0.057233352, 0.0019434267, -0.14437936, 0.034232683, 0.0030602294, -0.023598112, 0.10692026, -0.09960999, 0.005887181, 0.014738836, -0.32473162, -0.10886747, -0.08365826), target1);\n\ttarget1 = MulAdd(na2, MF4x4(0.10900178, 0.00080280803, -0.14009437, -0.053074867, -0.07811151, -0.03456029, -0.104943685, 0.016918905, -0.11335709, 0.079421654, 0.13481963, 0.037818357, -0.027339859, 0.05856774, -0.044562265, 0.03908084), target1);\n\ttarget1 = MulAdd(nb2, MF4x4(0.07628258, -0.23815769, 0.2840278, -0.3541637, -0.044292126, -0.09310441, -0.1335055, -0.031899665, -0.11981227, 0.24012394, -0.041896038, -0.10168982, 0.20248915, -0.10036763, -0.044115108, 0.08520525), target1);\n\ttarget1 = MulAdd(nc2, MF4x4(0.07234102, -0.119480744, -0.01401321, -0.025182616, -0.031284854, -0.050089385, 0.014808948, 0.038662236, -0.18539418, 0.017342187, 0.023812262, 0.13428104, 0.020824855, -0.07433546, 0.054307282, 0.08511016), target1);\n\ttarget1 = MulAdd(nd2, MF4x4(-0.11046813, -0.04663274, 0.33497185, 0.023273284, -0.24681108, 0.116665915, 0.12045893, 0.13306482, -0.039098527, 0.04747061, 0.042796664, 0.053514794, 0.011861975, -0.048702, 0.008408589, -0.09497112), target1);\n\ttarget1 = MulAdd(ne2, MF4x4(0.34634927, 0.37973458, -0.79267627, -0.7362719, 0.35489878, -0.07635863, 0.24082923, -0.27480397, -0.3236968, -0.25523046, 0.05118527, -0.040529836, -0.6000509, 0.39020586, 0.27632973, 0.5141453), target1);\n\ttarget1 = MulAdd(nf2, MF4x4(0.16761221, -0.033125393, 0.00561569, 0.083019435, -0.101278506, 0.07810264, 0.12060661, 0.16048536, 0.14257826, -0.15996903, 0.018831912, -0.094429865, -0.22227801, 0.426937, -0.054677445, 0.05067348), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.02233958, 0.02608942, -0.045318656, 0.06509929, 0.035911568, 0.025316885, 0.0840986, 0.08326237, 0.048455603, -0.13630742, 0.07230253, -0.047261715, -0.092630014, 0.04786565, 0.10354939, -0.07094341), target1);\n\ttarget1 = MulAdd(nh2, MF4x4(-0.1463382, -0.14900577, 0.2835977, -0.106733374, -0.11554754, -0.168429, -0.1411373, -0.20654152, -0.06388508, 0.039648015, 0.08543832, -0.13253337, 0.017264463, -0.06346233, -0.10823598, 0.067361064), target1);\n\ttarget1 = MulAdd(ni2, MF4x4(0.04419582, 0.039152585, 0.06222691, 0.05757103, 0.012084537, 0.051425997, -0.061130576, 0.16752882, 0.07497411, 0.13495837, -0.15585983, -0.02050144, -0.08555421, -0.09147339, 0.025115604, 0.05948922), target1);\n\t\n\tMF4 target2 = { -0.03573331, 0.032919675, 0.011109369, 0.008329268 };\n\ttarget2 = MulAdd(a1, MF4x4(0.009029573, 0.029218858, 0.029705316, -0.019268971, -0.0023235187, -0.072589695, 0.1424836, 0.09049359, 0.04342995, 0.18134294, 0.018145641, 0.14789368, 0.050923645, 0.06524081, 0.036812488, 0.11108108), target2);\n\ttarget2 = MulAdd(b1, MF4x4(-0.026506428, 0.016968496, 0.015961196, 0.010030791, -0.3141888, -0.06769598, -0.23920257, -0.031002127, -0.07351358, -0.19290134, -0.24282931, -0.18831016, -0.0928966, 0.075177215, -0.19699521, -0.05810917), target2);\n\ttarget2 = MulAdd(c1, MF4x4(-0.017991852, -0.079427645, 0.035970494, -0.017095685, -0.27197137, -0.20046075, 0.2616644, 0.021876303, -0.077394076, -0.04978692, 0.20363241, -0.013741705, -0.032103598, 0.14403099, 0.01442474, 0.048115995), target2);\n\ttarget2 = MulAdd(d1, MF4x4(-0.16939245, -0.001777, 0.026244136, -0.14122388, -0.056853324, 0.54357284, -0.19769607, -0.03187079, 0.04559263, -0.16048127, 0.12830622, 0.1442168, 0.006611398, -0.01618195, 0.012860053, -0.16539487), target2);\n\ttarget2 = MulAdd(e1, MF4x4(0.13116026, -0.006161343, 0.7209969, 0.18338475, 0.3099777, 0.6500026, 0.3883795, -0.021434233, 0.31667513, 0.008917659, 0.14124091, -0.22335114, 0.12198921, -0.16449445, 0.08773425, 0.30054978), target2);\n\ttarget2 = MulAdd(f1, MF4x4(-0.10413989, -0.10316161, 0.04342709, -0.021252686, 0.120892406, 0.37798002, -0.35963747, 0.021069285, 0.37587845, -0.08159587, 0.011139747, 0.2501104, -0.094568014, 0.037900843, -0.025109999, -0.030106556), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.09680291, -0.040868275, 0.051731605, 0.089064725, -0.56098557, -0.38148618, -0.017037416, 0.08508287, -0.019247344, 0.019857002, -0.03512887, 0.031057188, -0.09648583, -0.04474188, 0.028748507, -0.11880965), target2);\n\ttarget2 = MulAdd(h1, MF4x4(-0.010236943, 0.04257042, -0.08202597, -0.004203426, -0.26801527, -0.11716526, -0.017402772, -0.05819106, -0.13394608, 0.0234606, -0.15404865, -0.06801164, -0.0047627664, -0.1975249, 0.09420144, 0.23249897), target2);\n\ttarget2 = MulAdd(i1, MF4x4(0.107361935, 0.07373787, 0.06242962, 0.05236332, -0.028867323, 0.025924044, -0.042526353, -0.0015729597, -0.1323144, -0.4040712, 0.023919407, -0.09535502, 0.049100045, 0.081110805, 0.08946112, 0.058505684), target2);\n\ttarget2 = MulAdd(a2, MF4x4(0.13236825, -0.04468476, -0.04426802, 0.031087106, -0.09093992, -0.07470971, -0.01591504, 0.05924266, -0.21910913, 0.065537, -0.18358919, -0.02533145, -0.1512009, -0.04953928, 0.015540006, -0.0043442883), target2);\n\ttarget2 = MulAdd(b2, MF4x4(-0.14016777, -0.1086958, 0.16316028, 0.050777458, 0.23148167, 0.04944809, -0.10599886, -0.10447021, -0.40729257, -0.10926556, 0.069055155, 0.110635415, 0.108922414, -0.1716362, 0.10743909, -0.102534756), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.017795928, -0.066930935, 0.09396082, 0.092585504, 0.14223933, 0.059458215, 0.072033696, -0.04507726, -0.19956456, 0.1251282, -0.31733638, -0.10465904, 0.08546377, 0.048638333, 0.031372465, -0.08720661), target2);\n\ttarget2 = MulAdd(d2, MF4x4(0.108719654, -0.092161916, -0.014724377, 0.20068261, -0.24350016, 0.2113636, -0.07483714, -0.45665312, -0.25134233, 0.2753893, -0.11324696, -0.04472, 0.1576102, -0.045395147, 0.06013951, -0.12507361), target2);\n\ttarget2 = MulAdd(e2, MF4x4(0.546225, -0.281897, 0.19477816, -0.116612464, -0.3145171, -0.41660902, 0.333625, 0.35902345, 0.48333502, 0.4662005, 0.10222491, -0.15314859, -0.3036888, 0.22849742, 0.20740797, 0.41399437), target2);\n\ttarget2 = MulAdd(f2, MF4x4(0.007284074, 0.0393942, -0.31192186, -0.15687793, -0.289214, -0.015956698, -0.24718472, -0.1637855, -0.00765037, 0.26677555, 0.20215511, 0.37790874, -0.22096673, 0.25287116, -0.2446764, -0.13610223), target2);\n\ttarget2 = MulAdd(g2, MF4x4(-0.16734968, 0.16721225, -0.053508647, -0.041097626, 0.062356673, 0.07812319, -0.263546, -0.39739034, 0.003389846, 0.12676363, -0.13175991, -0.19019242, -0.011847587, -0.007580052, -0.023946386, 0.046034034), target2);\n\ttarget2 = MulAdd(h2, MF4x4(-0.17047611, 0.13298693, -0.07506747, -0.045542978, 0.33571973, 0.20192616, 0.30674616, 0.25668672, -0.24134545, 0.031693842, -0.009647641, 0.040534843, 0.03159419, -0.1100516, 0.11371316, 0.06098735), target2);\n\ttarget2 = MulAdd(i2, MF4x4(-0.05518961, 0.19402988, -0.09646874, -0.059196774, -0.0073436056, -0.1381309, 0.06868669, 0.061328378, -0.1480867, -0.15774113, -0.022572191, 0.122521356, -0.04067007, -0.10145177, 0.13006335, -0.099452734), target2);\n\ttarget2 = MulAdd(na1, MF4x4(0.06962972, 0.07768411, 0.021085173, 0.108355984, -0.03132525, 0.10220273, -0.11626593, -0.14104277, 0.018778645, -0.024237925, 0.048783034, 0.09074447, 0.4120426, -0.01948466, 0.073218934, 0.055681944), target2);\n\ttarget2 = MulAdd(nb1, MF4x4(-0.22553118, -0.12923603, -0.22068842, -0.35037905, 0.005709937, -0.09528472, 0.08718399, 0.13200706, 0.17220478, 0.096844435, -0.30439013, -0.14122063, 0.15733318, -0.1014675, 0.33836862, 0.042193163), target2);\n\ttarget2 = MulAdd(nc1, MF4x4(0.15826897, -0.034870047, 0.09295099, -0.17674965, -0.042326324, 0.06680338, -0.074267656, -0.0631393, -0.11267909, -0.19795708, 0.22005288, 0.35703793, 0.033995766, -0.12663686, -0.02449896, -0.123250045), target2);\n\ttarget2 = MulAdd(nd1, MF4x4(0.021434195, 0.058398597, 0.04828315, -0.0016824572, -0.04291545, -0.0744907, -0.07698706, -0.15937585, -0.18852457, -0.17966963, 0.023800725, 0.025979731, -0.51412296, -0.018316887, -0.23076254, -0.12298674), target2);\n\ttarget2 = MulAdd(ne1, MF4x4(0.16054317, -0.0002730893, -0.54173076, -0.62443435, 0.04300197, -0.08529622, 0.15392275, 0.15742144, 0.025834514, -0.2800517, -0.17600477, 0.0020806703, -0.3010582, 0.45233512, 0.25595665, 0.103661336), target2);\n\ttarget2 = MulAdd(nf1, MF4x4(-0.024034392, -0.43800178, 0.28606912, -0.20908915, 0.078471914, -0.030501373, -0.059055753, 0.050494444, 0.063274644, -0.025071034, 0.17561312, -0.100698635, -0.25631955, 0.039981876, -0.18506624, 0.08366402), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.1413656, 0.03589635, -0.020917566, 0.017598262, 0.020156413, -0.018854238, 0.027228508, -0.03806087, -0.021715842, 0.071974196, -0.040065665, 0.08459291, -0.23530225, 0.16599682, -0.2772327, 0.10041177), target2);\n\ttarget2 = MulAdd(nh1, MF4x4(-0.055056706, 0.1286236, -0.11890451, -0.1790546, 0.16517544, -0.040448934, 0.12548013, 0.017075695, 0.07185459, -0.13236302, 0.19354409, 0.12767012, 0.31120765, 0.16378082, -0.036915366, -0.19724306), target2);\n\ttarget2 = MulAdd(ni1, MF4x4(-0.02225051, 0.033263147, 0.003279449, 0.08826271, -0.047833472, 6.574577e-05, 0.13721916, 0.04801998, -0.014958419, 0.08791209, -0.08076282, 0.024002168, -0.18028922, 0.23835851, -0.23309888, -0.119310364), target2);\n\ttarget2 = MulAdd(na2, MF4x4(0.044960875, 0.18821983, 0.027640678, 0.013462449, 0.19011214, 0.21559924, -0.03329638, 0.07234414, 0.030880248, -0.11273214, 0.102028474, 0.12203351, 0.035855662, 0.008828778, 0.007218363, -0.012421797), target2);\n\ttarget2 = MulAdd(nb2, MF4x4(-0.09450626, 0.025191775, -0.10738468, 0.16237053, 0.073676676, 0.12488881, -0.048748355, 0.007877263, 0.3572506, -0.07911043, 0.14684045, 0.0015310893, -0.33411503, -0.1151223, 0.004201752, 0.017775744), target2);\n\ttarget2 = MulAdd(nc2, MF4x4(-0.10607509, -0.008143826, -0.08448629, -0.27557802, 0.0046665915, 0.008158659, 0.030826218, 0.020516023, 0.2333065, -0.017463414, -0.041772116, -0.03027809, -0.028166672, -0.080471426, 0.048199337, 0.08341059), target2);\n\ttarget2 = MulAdd(nd2, MF4x4(-0.14640257, -0.18334304, -0.061674733, 0.0008892598, -0.2374775, -0.2721524, -0.040371176, 0.26362613, 0.19872928, -0.11246391, 0.0842288, 0.11188515, 0.0045209546, -0.04250933, -0.0738212, -0.069005966), target2);\n\ttarget2 = MulAdd(ne2, MF4x4(-0.08760266, 0.4816288, -0.21241407, 0.22734411, -0.1783721, -0.26842996, 0.099888, -0.2867675, 0.085521065, -0.3780281, -0.018543908, -0.039699722, 0.75688565, -0.5333645, 0.47567275, 0.09518891), target2);\n\ttarget2 = MulAdd(nf2, MF4x4(-0.04072665, 0.05998423, -0.48314768, -0.29495844, 0.10358383, -0.09816629, 0.028586809, -0.047708735, 0.008320228, 0.04089551, -0.18359782, -0.27615002, 0.12414414, -0.072417594, 0.25932562, 0.30268723), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(0.14481631, 0.06484443, -0.09898657, -0.06553556, 0.25750044, -0.07265585, 0.12903488, -0.022347894, -0.04693863, -0.000107379274, 0.030295763, -0.0325354, 0.086214684, -0.021326948, 0.039682828, -0.034843277), target2);\n\ttarget2 = MulAdd(nh2, MF4x4(-0.031971477, -0.25145087, 0.03931631, 0.14262606, -0.06044626, 0.22820354, -0.10506207, 0.18064679, 0.0069641788, 0.01477993, -0.003626875, 0.118767865, 0.109416224, -0.002998205, 0.035680585, 0.07843882), target2);\n\ttarget2 = MulAdd(ni2, MF4x4(0.03375426, -0.059815384, 0.11632834, -0.12411481, 0.022583738, 0.02544465, -0.054889992, -0.07031964, -0.10140042, 0.16750422, -0.1448294, -0.09316004, 0.035582513, -0.026138382, -0.031955894, 0.040148776), target2);\n\n\tconv2d_6_tf[gxy] = target1;\n\tconv2d_6_tf1[gxy] = target2;\n}\n\n//!PASS 8\n//!DESC Conv-4x1x1x112, Depth-to-Space\n//!IN INPUT, conv2d_tf, conv2d_tf1, conv2d_1_tf, conv2d_1_tf1, conv2d_2_tf, conv2d_2_tf1, conv2d_3_tf, conv2d_3_tf1, conv2d_4_tf, conv2d_4_tf1, conv2d_5_tf, conv2d_5_tf1, conv2d_6_tf, conv2d_6_tf1\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nvoid Pass8(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\n\tMF4 g0 = conv2d_tf.SampleLevel(sam, pos, 0);\n\tMF4 g1 = conv2d_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g2 = conv2d_1_tf.SampleLevel(sam, pos, 0);\n\tMF4 g3 = conv2d_1_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g4 = conv2d_2_tf.SampleLevel(sam, pos, 0);\n\tMF4 g5 = conv2d_2_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g6 = conv2d_3_tf.SampleLevel(sam, pos, 0);\n\tMF4 g7 = conv2d_3_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g8 = conv2d_4_tf.SampleLevel(sam, pos, 0);\n\tMF4 g9 = conv2d_4_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g10 = conv2d_5_tf.SampleLevel(sam, pos, 0);\n\tMF4 g11 = conv2d_5_tf1.SampleLevel(sam, pos, 0);\n\tMF4 g12 = conv2d_6_tf.SampleLevel(sam, pos, 0);\n\tMF4 g13 = conv2d_6_tf1.SampleLevel(sam, pos, 0);\n\n\tMF4 ng0 = max(-g0, 0);\n\tMF4 ng1 = max(-g1, 0);\n\tMF4 ng2 = max(-g2, 0);\n\tMF4 ng3 = max(-g3, 0);\n\tMF4 ng4 = max(-g4, 0);\n\tMF4 ng5 = max(-g5, 0);\n\tMF4 ng6 = max(-g6, 0);\n\tMF4 ng7 = max(-g7, 0);\n\tMF4 ng8 = max(-g8, 0);\n\tMF4 ng9 = max(-g9, 0);\n\tMF4 ng10 = max(-g10, 0);\n\tMF4 ng11 = max(-g11, 0);\n\tMF4 ng12 = max(-g12, 0);\n\tMF4 ng13 = max(-g13, 0);\n\n\tg0 = max(g0, 0);\n\tg1 = max(g1, 0);\n\tg2 = max(g2, 0);\n\tg3 = max(g3, 0);\n\tg4 = max(g4, 0);\n\tg5 = max(g5, 0);\n\tg6 = max(g6, 0);\n\tg7 = max(g7, 0);\n\tg8 = max(g8, 0);\n\tg9 = max(g9, 0);\n\tg10 = max(g10, 0);\n\tg11 = max(g11, 0);\n\tg12 = max(g12, 0);\n\tg13 = max(g13, 0);\n\n\tMF4 target1 = { -0.10795144, -0.09953324, -0.055413827, -0.03875493 };\n\ttarget1 = MulAdd(g0, MF4x4(-0.11498094, -0.053904895, -0.11520678, -0.05479549, 0.028396055, 0.032767884, 0.052479446, 0.05257866, -0.25706592, -0.3454966, -0.24713765, -0.2854201, -0.10287636, 0.0023146886, -0.09190338, -0.011193905), target1);\n\ttarget1 = MulAdd(g1, MF4x4(-0.05461422, 0.008780496, -0.07738697, -0.032230727, -0.047554165, -0.025061952, -0.051897213, -0.009545297, -0.14548294, -0.15184018, -0.01313442, -0.015299784, -0.0007883845, -0.12866738, -0.15260352, -0.27081275), target1);\n\ttarget1 = MulAdd(ng0, MF4x4(0.11007706, 0.035344437, 0.11020841, 0.0425353, 0.1613199, 0.18417408, 0.09274313, 0.11943135, 0.106862, 0.079875536, 0.0937752, 0.068030775, 0.029093558, -0.06441164, 0.06467169, -0.021989612), target1);\n\ttarget1 = MulAdd(ng1, MF4x4(0.049548414, -0.012455486, 0.07185561, 0.021865537, 0.020969186, -0.03374196, -0.024260623, -0.07739141, 0.07164591, 0.12741035, 0.0379913, 0.076403245, 0.07049977, 0.0744538, 0.0062989634, 0.01818882), target1);\n\ttarget1 = MulAdd(g2, MF4x4(-0.12511204, -0.010836819, 0.13709816, 0.22472954, 0.21280868, -0.006484726, 0.17554289, -0.009977173, 0.078398876, 0.20698707, 0.13432744, 0.29740283, -0.24750128, -0.32757792, -0.19807857, -0.2537023), target1);\n\ttarget1 = MulAdd(g3, MF4x4(-0.27207088, -0.1385644, -0.2166476, -0.07687419, -0.20300622, -0.29678395, -0.13135734, -0.20851587, 0.0361364, 0.011243289, -0.06845459, -0.11796941, 0.11575868, 0.070215136, -0.10295678, -0.12281369), target1);\n\ttarget1 = MulAdd(ng2, MF4x4(0.13619795, -0.0019436983, -0.12701888, -0.25933513, -0.20134166, 0.00062823144, -0.076756015, 0.11002947, 0.0059049693, -0.18756741, -0.0718802, -0.2589954, 0.23413423, 0.30107784, 0.14445266, 0.18920745), target1);\n\ttarget1 = MulAdd(ng3, MF4x4(0.1494216, 0.0587532, 0.05478662, -0.039123338, 0.23322394, 0.29950607, 0.24384268, 0.27843767, -0.16094431, -0.04705998, -0.016345032, 0.028868208, -0.102872886, -0.04659664, 0.104105346, 0.14305067), target1);\n\ttarget1 = MulAdd(g4, MF4x4(-0.001037014, 0.010001526, -0.0052278573, 0.024779709, 0.06857274, 0.067640975, 0.085439384, 0.09242789, -0.066597246, -0.055928994, 0.0015658981, 0.016131008, -0.03524695, -0.018364554, -0.047754433, -0.014295886), target1);\n\ttarget1 = MulAdd(g5, MF4x4(-0.042207, 0.02835915, -0.1404656, -0.08563323, -0.030979915, -0.0673764, 0.10733943, 0.057902794, 0.00022424995, -0.0023634837, -0.10778953, -0.10202357, -0.020368295, -0.019088887, -0.06875738, -0.08504131), target1);\n\ttarget1 = MulAdd(ng4, MF4x4(-0.00043458896, 0.00045652856, -0.02016843, -0.020062413, -0.08740103, -0.042085808, -0.10644177, -0.09226477, 0.11212161, -0.00048174805, 0.021872435, -0.05868698, 0.0333954, 0.058184672, 0.05532576, 0.07621587), target1);\n\ttarget1 = MulAdd(ng5, MF4x4(0.054245148, 0.001020329, 0.09106849, 0.05303779, 0.009889632, 0.01309413, -0.09187347, -0.08618193, -0.011621187, 0.016222361, 0.061095525, 0.060885344, 0.078050986, 0.0111776795, 0.08829944, 0.032022282), target1);\n\ttarget1 = MulAdd(g6, MF4x4(0.01643529, 0.02285545, -0.03498564, 0.00769657, -0.0042474116, 0.015836312, -0.025771018, -0.0016368, -0.008897948, -0.012588166, -0.01416411, -0.003578984, 0.025991246, 0.021237152, 0.017450012, 0.025172485), target1);\n\ttarget1 = MulAdd(g7, MF4x4(0.014568868, 0.017796224, -0.036679734, -0.03138748, 0.019457601, -0.027607411, -0.004529679, -0.038048342, -0.054055385, -0.03876025, 0.041948095, 0.005869784, 0.02439633, 0.05177997, 0.016000897, 0.0057169925), target1);\n\ttarget1 = MulAdd(ng6, MF4x4(-0.03021866, 0.017678728, -0.01371109, 0.013548159, -0.0038099394, -0.014066414, 0.028093752, 0.0027308422, -0.010615999, 0.012673458, -0.03028171, -0.016818244, -0.06530097, -0.018845048, -0.0072947564, -0.0038243714), target1);\n\ttarget1 = MulAdd(ng7, MF4x4(-0.019006258, -0.007847591, 0.03690709, 0.06714211, 0.0073993434, -0.009766907, -0.0021441753, -0.01308625, 0.06658726, 0.06701995, -0.027305668, -0.016032105, -0.028976806, -0.0036668575, -0.0027825525, 0.0105632655), target1);\n\ttarget1 = MulAdd(g8, MF4x4(0.028945107, -0.0014701135, 0.048950657, -0.01923516, -0.0014054152, 0.002650635, -0.005300331, 0.004860559, 0.011158468, 0.005940625, -0.012095051, 0.0041518128, -0.020433836, -0.025870577, -0.0007547932, -0.026509356), target1);\n\ttarget1 = MulAdd(g9, MF4x4(-0.004545374, 0.04264545, 0.021741537, 0.029115127, 0.04225599, -0.0055392785, 0.026570829, -0.031795148, -0.008307126, 0.020176455, 0.010904648, 0.017765503, -0.10806103, -0.01776947, 0.00070428237, -0.06356262), target1);\n\ttarget1 = MulAdd(ng8, MF4x4(-0.05663172, 0.05908046, -0.03837452, 0.06636983, -0.007960516, -0.06384041, 0.023125881, -0.030108837, 0.0038054318, -0.023263922, 0.020264054, -0.0062937695, 0.031630237, 0.020909082, 0.03594235, 0.035879835), target1);\n\ttarget1 = MulAdd(ng9, MF4x4(-0.0050448794, 0.033650696, -0.002830413, 0.035174295, -0.024521282, 0.013054315, -0.020833842, 0.037953895, 0.08249671, 0.024239466, -0.012758333, -0.027316988, 0.051040914, 0.0005025873, 0.039778862, 0.0024668393), target1);\n\ttarget1 = MulAdd(g10, MF4x4(0.017232442, 0.022482058, 0.020233413, 0.024337437, 0.07986929, 0.06234036, 0.12662584, -0.05271183, -0.009718745, -0.0046989853, -0.0030333172, -0.04034237, -0.0113442, 0.022746231, -0.035293855, -0.009433693), target1);\n\ttarget1 = MulAdd(g11, MF4x4(0.015766997, 0.013647276, -0.029327558, 0.039106004, -0.010398323, -0.032851525, 0.02908329, -0.003789618, 0.12963496, 0.010851003, 0.1126276, -0.049255487, 0.06867432, 0.07970792, 0.017840397, -0.026481882), target1);\n\ttarget1 = MulAdd(ng10, MF4x4(-0.058729574, -0.07886952, 0.033267397, 0.02755372, -0.0172006, 0.012404398, -0.0230168, -0.015059758, -0.09239916, -0.029533267, -0.043251917, 0.0035152994, 0.022931995, 0.101714484, -0.044946067, 0.094993), target1);\n\ttarget1 = MulAdd(ng11, MF4x4(-0.04708704, -0.032475296, -0.03228093, -0.08810475, 0.013745045, 0.027828002, -0.031922746, 0.022986397, -0.061620213, -0.03694645, -0.055026993, 0.0031291894, -0.028799903, -0.0025357977, -0.03441407, 0.0028600092), target1);\n\ttarget1 = MulAdd(g12, MF4x4(0.058981724, -0.10447273, -0.088705614, 0.16546178, -0.023549391, -0.008831522, -0.018411588, 0.029640056, -0.068086684, -0.05414636, -0.029401174, 0.036180343, -0.031988926, -0.047249753, 0.008162177, 0.00548062), target1);\n\ttarget1 = MulAdd(g13, MF4x4(0.05287462, -0.030657746, 0.02821435, 0.037005343, 0.03534311, -0.15614955, 0.07085459, -0.11997641, -0.009156166, -0.021968868, -0.054147746, -0.07307657, -0.006428544, -0.017528288, 0.012614676, 0.037840024), target1);\n\ttarget1 = MulAdd(ng12, MF4x4(-0.021977803, 0.047799855, 0.02660416, -0.07292106, 0.045195807, -0.0056674764, 0.10824326, -0.112114795, 0.1447127, -0.0119616175, 0.0011661504, -0.04553905, 0.13048342, 0.14574122, -0.105522245, -0.102792375), target1);\n\ttarget1 = MulAdd(ng13, MF4x4(-0.16397473, 0.15785863, -0.06666504, -0.01682913, 0.06070918, 0.070222184, 0.037701584, 0.026657054, -0.0835267, -0.009457008, 0.13232987, 0.13508691, -0.056414206, -0.06818828, 0.079076104, 0.032249212), target1);\n\n\tMF4 target2 = { 0.06026231, 0.040204916, 0.037672628, 0.023496555 };\n\ttarget2 = MulAdd(g0, MF4x4(0.024905335, -0.0020974763, 0.02695263, 0.00016802056, -0.024053082, -0.02133723, -0.031614035, -0.031826317, 0.120421864, 0.10555479, 0.08609448, 0.116875134, 0.046175968, 0.04224941, 0.059216674, 0.035143953), target2);\n\ttarget2 = MulAdd(g1, MF4x4(0.059397914, 0.016519934, 0.07189327, 0.047407165, 0.04808963, 0.02792908, 0.057017103, 0.034324065, 0.14228246, 0.11275426, 0.088058695, 0.059600517, 0.02063494, 0.052596953, 0.047207687, 0.08789091), target2);\n\ttarget2 = MulAdd(ng0, MF4x4(-0.013453174, 0.008474715, -0.017593835, 0.009218917, 0.070580654, 0.040542338, 0.08812338, 0.074653216, -0.016356857, 0.015809007, -0.008739107, 0.0097674895, -0.018381525, -0.007775341, -0.040571664, -0.011188163), target2);\n\ttarget2 = MulAdd(ng1, MF4x4(-0.026196122, -0.034825727, -0.042998232, -0.033436514, -0.01678153, -0.004592797, -0.010311677, 0.0008815291, -0.08899181, -0.10274026, -0.066960976, -0.082430154, -0.057137426, -0.07554528, -0.030993424, -0.050372377), target2);\n\ttarget2 = MulAdd(g2, MF4x4(0.022921838, -0.010479244, -0.050794605, -0.073633075, -0.053708922, 0.009594084, -0.071259, -0.01054356, 0.005165821, -0.08024963, -0.049251772, -0.09581235, 0.17995799, 0.09743011, 0.13533138, 0.11643848), target2);\n\ttarget2 = MulAdd(g3, MF4x4(0.09727046, 0.07292666, 0.06820908, 0.041535784, -0.0049705, 0.0048759184, -0.035702795, -0.015944308, -0.010730028, 0.018847652, 0.06466244, 0.086318985, -0.05661574, -0.040698618, 0.010839972, 0.0027009705), target2);\n\ttarget2 = MulAdd(ng2, MF4x4(-0.04628466, 0.010060396, 0.02609333, 0.08664702, 0.057045907, 0.033591177, 0.02186063, -0.024303377, 0.006569828, 0.08025825, 0.016128821, 0.10180713, -0.12228169, -0.112990454, -0.078443415, -0.09126021), target2);\n\ttarget2 = MulAdd(ng3, MF4x4(-0.12733299, -0.087755, -0.07374111, -0.044979006, -0.025347412, -0.004083168, 0.023782173, 0.02900392, -0.017815407, -0.041119996, -0.057978686, -0.13521095, 0.08364004, 0.06950181, 0.023554614, 0.008043734), target2);\n\ttarget2 = MulAdd(g4, MF4x4(0.009062775, -0.003570175, -0.007378757, -0.0018487388, 0.01145638, 0.05217187, -0.008250244, 0.008433307, -0.056756936, -0.044681005, -0.08096105, -0.08033185, -0.023784965, -0.01859799, 0.013042476, 0.021188647), target2);\n\ttarget2 = MulAdd(g5, MF4x4(-0.0071619656, -0.012498299, -0.05144986, -0.078112476, -0.034992415, -0.017038302, -0.04464615, -0.044504963, 0.024249, -0.004297534, 0.03674578, 0.03090718, 0.04698553, 0.008344952, 0.057619847, -0.0338724), target2);\n\ttarget2 = MulAdd(ng4, MF4x4(-0.011845145, -0.0045043705, -1.6646482e-06, -0.0038495932, -0.01992515, 0.004827126, 0.019493148, 0.00862289, 0.10151322, 0.0021909082, 0.09940764, 0.03728846, 0.027824005, 0.04358071, 0.014909185, 0.036326095), target2);\n\ttarget2 = MulAdd(ng5, MF4x4(0.022513246, 0.028257169, 0.0102195935, 0.03301329, 0.052253865, -0.0021944977, 0.08247392, 0.03256867, -0.040685873, -0.0052207555, -0.0451257, -0.054165114, 0.01647699, 0.0028809097, -0.015233776, -0.0008741886), target2);\n\ttarget2 = MulAdd(g6, MF4x4(0.017371105, 0.01597189, -0.052552313, -0.008554715, -0.0023150423, 0.006076517, -0.012868931, 0.0039361073, -0.007524978, -0.004284313, -0.021520883, -0.010327569, 0.02543678, 0.008725823, -0.0073885336, 0.005528395), target2);\n\ttarget2 = MulAdd(g7, MF4x4(0.019192757, 0.016561812, 0.0027538154, 0.0013078215, 0.007916496, -0.042525183, -0.013173432, -0.05265476, -0.062195376, -0.011255499, 0.020898128, 0.021532273, -0.001524097, 0.034835674, -0.004051403, -0.0292426), target2);\n\ttarget2 = MulAdd(ng6, MF4x4(-0.049191684, -9.43322e-06, -0.009106849, 0.012845289, -0.019482708, -0.011163468, 0.0034011535, -0.007062845, -0.006469714, 0.03177786, -0.033006195, -0.0006813464, -0.053963087, 0.00085209147, 0.02734121, 0.034086403), target2);\n\ttarget2 = MulAdd(ng7, MF4x4(-0.03232248, -0.004037002, -0.010319106, 0.030889064, 0.019604538, 0.0020888883, 0.010277864, 0.000661223, 0.057915937, 0.030683514, 0.00042533095, -0.013019287, -0.015896408, 0.0038484468, -0.0042103594, 0.02174542), target2);\n\ttarget2 = MulAdd(g8, MF4x4(0.032975145, 0.0011456647, 0.04913679, -0.017063798, 0.0117176045, 0.007440557, 0.0020480808, 0.009415731, 0.027573857, 0.015140836, -0.01679426, -0.006124731, -0.03206279, -0.029842237, -0.010428016, -0.028513178), target2);\n\ttarget2 = MulAdd(g9, MF4x4(-0.00506859, 0.055869613, 0.010164368, 0.027031485, 0.042289548, -0.0054258504, 0.032214936, -0.029970925, -0.0058315448, 0.022889478, 0.01681123, 0.02985076, -0.111186065, -0.02202099, 0.0030994313, -0.062343158), target2);\n\ttarget2 = MulAdd(ng8, MF4x4(-0.060951103, 0.06079555, -0.0396464, 0.070911355, -0.011480358, -0.06803282, 0.01637355, -0.043100975, -0.00423709, -0.028337711, 0.021635853, 0.0014857082, 0.030084312, 0.018155476, 0.043694943, 0.038795974), target2);\n\ttarget2 = MulAdd(ng9, MF4x4(-0.0060662925, 0.029721662, -0.008117774, 0.034551267, -0.024477571, 0.018841071, -0.027095588, 0.034495078, 0.082398005, 0.008998768, -0.016399248, -0.043801688, 0.05936684, 0.006066549, 0.045399766, 3.5319943e-05), target2);\n\ttarget2 = MulAdd(g10, MF4x4(0.019259382, 0.02494012, 0.029301709, 0.028329274, 0.09122267, 0.06900443, 0.1412115, -0.043169618, -0.01627418, -0.004989528, -0.0042651827, -0.04556752, -0.023623291, 0.013007996, -0.04483056, -0.015727345), target2);\n\ttarget2 = MulAdd(g11, MF4x4(0.016332543, 0.016384754, -0.030676385, 0.045312885, -0.0100853555, -0.032632045, 0.031514473, -0.0070776115, 0.13642761, 0.0023589598, 0.12214136, -0.062155515, 0.08240989, 0.08894205, 0.03325406, -0.016589595), target2);\n\ttarget2 = MulAdd(ng10, MF4x4(-0.06494277, -0.08158925, 0.030425413, 0.019835634, -0.012624623, 0.013942616, -0.030527417, -0.021668324, -0.09444672, -0.033064254, -0.044167448, 0.0011024752, 0.03210801, 0.12662941, -0.03912534, 0.1112649), target2);\n\ttarget2 = MulAdd(ng11, MF4x4(-0.04716062, -0.03751481, -0.031030515, -0.09067383, 0.0077815712, 0.02169541, -0.035285182, 0.02290573, -0.0704085, -0.03916127, -0.058103334, 0.004915147, -0.0333844, -0.011548617, -0.031151932, -0.00043817286), target2);\n\ttarget2 = MulAdd(g12, MF4x4(0.05976319, -0.107285, -0.097245865, 0.17706421, -0.021453341, -0.0047738464, -0.017621001, 0.033400454, -0.07225561, -0.05599672, -0.027600193, 0.038664024, -0.03762786, -0.052429967, 0.0104017975, 0.007116869), target2);\n\ttarget2 = MulAdd(g13, MF4x4(0.06014114, -0.029824806, 0.03209269, 0.04392036, 0.031300627, -0.16249833, 0.06878509, -0.12658615, -0.012383169, -0.025043553, -0.06527381, -0.08149099, -0.014006842, -0.018669648, 0.014510818, 0.042045828), target2);\n\ttarget2 = MulAdd(ng12, MF4x4(-0.023342922, 0.047104675, 0.029629575, -0.082307704, 0.04035797, -0.0013049254, 0.11085582, -0.11031226, 0.14778149, -0.016699014, -0.00634342, -0.055320874, 0.14306462, 0.15896587, -0.110229075, -0.1069649), target2);\n\ttarget2 = MulAdd(ng13, MF4x4(-0.17449625, 0.15787153, -0.06711028, -0.023110518, 0.06862914, 0.074063435, 0.042682912, 0.029800726, -0.08768606, -0.009814701, 0.14180017, 0.14780663, -0.05672417, -0.074305914, 0.07873489, 0.028458012), target2);\n\n\tMF4 target3 = { 0.069033325, 0.040207114, 0.027286075, 0.0065334598 };\n\ttarget3 = MulAdd(g0, MF4x4(0.1765669, 0.14268716, 0.19186598, 0.15799578, 0.016374417, 0.018578433, 0.0039475, 0.0046772263, 0.39840183, 0.36909792, 0.35409746, 0.37422222, -0.108508386, -0.1331279, -0.10336035, -0.14776541), target3);\n\ttarget3 = MulAdd(g1, MF4x4(-0.057757027, -0.14071062, -0.025283009, -0.09397916, -0.09031894, -0.14219165, -0.08299535, -0.13970287, -0.12259208, -0.14382727, -0.22002274, -0.25016093, -0.048906635, 0.06620249, 0.016965045, 0.1295978), target3);\n\ttarget3 = MulAdd(ng0, MF4x4(-0.16748372, -0.13718611, -0.18565705, -0.15029612, -0.080749065, -0.09955825, 0.032431383, 0.023855643, -0.2748885, -0.23232168, -0.29121292, -0.26405892, 0.16556135, 0.18657646, 0.1424068, 0.18855052), target3);\n\ttarget3 = MulAdd(ng1, MF4x4(0.10960496, 0.10851629, 0.095003806, 0.11053746, 0.09885307, 0.14437789, 0.13191165, 0.17365928, 0.16558935, 0.15473324, 0.21136154, 0.19976667, -0.07267957, -0.11469687, -0.029134216, -0.06817615), target3);\n\ttarget3 = MulAdd(g2, MF4x4(0.10202856, 0.04216857, -0.03959349, -0.09849683, -0.1576996, -0.049997438, -0.1579918, -0.058789205, 0.029792828, -0.07311781, -0.045432188, -0.11312683, 0.24257647, 0.16204113, 0.17869382, 0.16024388), target3);\n\ttarget3 = MulAdd(g3, MF4x4(0.17193612, 0.12692013, 0.13177487, 0.0796725, 0.0797928, 0.08952722, -0.012468046, 0.011071511, -0.068559825, -0.024852324, 0.0526428, 0.07917346, -0.085534215, -0.09591339, 0.04615827, 0.024577664), target3);\n\ttarget3 = MulAdd(ng2, MF4x4(-0.14653449, -0.067267366, -0.002524394, 0.086243175, 0.13660401, 0.08039592, 0.09179008, 0.022573143, -0.024744196, 0.09120211, 0.017654825, 0.14114714, -0.16093308, -0.14538004, -0.09950235, -0.111152865), target3);\n\ttarget3 = MulAdd(ng3, MF4x4(-0.188637, -0.12968326, -0.1200479, -0.06537649, -0.12589337, -0.106242515, -0.02788782, -0.025949068, 0.04948153, 0.02222735, -0.025291357, -0.12379292, 0.11074645, 0.11902375, -0.00056989543, -0.0024386419), target3);\n\ttarget3 = MulAdd(g4, MF4x4(0.018286629, 0.0072215167, 0.00037828335, 0.0047001047, 0.011478272, 0.041745186, -0.015742473, -0.002282524, -0.03440817, -0.02196847, -0.07838253, -0.07993771, -0.010155526, -0.017590692, 0.027141469, 0.029741213), target3);\n\ttarget3 = MulAdd(g5, MF4x4(0.016512005, 0.004950637, -0.0238836, -0.05587327, -0.03164328, -0.009499985, -0.059880238, -0.061794154, 0.023154303, -0.013266373, 0.04701534, 0.0415862, 0.06357814, 0.033057794, 0.08389772, 0.00035060212), target3);\n\ttarget3 = MulAdd(ng4, MF4x4(-0.016403968, -0.012538788, -0.0015746636, -0.004771009, -0.021361275, -0.009695242, 0.020548422, -0.0024130535, 0.07796766, -0.01516671, 0.09961382, 0.042754963, 0.017363647, 0.03729065, -0.004795824, 0.01550197), target3);\n\ttarget3 = MulAdd(ng5, MF4x4(-0.0028093113, 0.011869523, -0.02216933, 0.011177349, 0.033342455, -0.021146454, 0.07830085, 0.032490104, -0.03281833, 0.0060484232, -0.04081057, -0.04945058, -0.0056189033, -0.010636801, -0.041949317, -0.025739705), target3);\n\ttarget3 = MulAdd(g6, MF4x4(0.012979897, 0.016758928, -0.049062215, -0.0035748442, 0.0085972, 0.0036381132, -0.0055621094, 0.0041307937, -0.0008907763, -0.0034079372, -0.025680453, -0.015531803, 0.012816766, 0.009977763, -0.016416566, 0.0034859509), target3);\n\ttarget3 = MulAdd(g7, MF4x4(0.021753248, 0.016452711, 0.009833835, 0.0065052663, 0.0014061348, -0.046160888, -0.0132271005, -0.05051269, -0.05746351, -0.0012690664, 0.017191738, 0.018192926, -0.008879476, 0.026354216, -0.012801991, -0.029587373), target3);\n\ttarget3 = MulAdd(ng6, MF4x4(-0.04220692, -0.0015560482, -0.0019648245, 0.013402305, -0.018259782, -0.0036008905, 0.0035650074, -0.0019178417, 0.00051580026, 0.027355857, -0.017914988, 0.004937948, -0.046335887, 0.00013612259, 0.030293299, 0.030688645), target3);\n\ttarget3 = MulAdd(ng7, MF4x4(-0.036683388, -0.0031274238, -0.026074665, 0.021684237, 0.022639066, 0.0022493738, 0.011508554, -0.0006385944, 0.04890418, 0.020119468, 0.004167364, -0.008356099, -0.008598796, 0.0089028, -0.0029575853, 0.016687104), target3);\n\ttarget3 = MulAdd(g8, MF4x4(0.027207986, 0.0011099194, 0.042383645, -0.015179333, 0.014744431, 0.006148344, 0.005165422, 0.0070196544, 0.030286826, 0.016620956, -0.01611366, -0.00667594, -0.029524863, -0.024751091, -0.013321004, -0.025199674), target3);\n\ttarget3 = MulAdd(g9, MF4x4(0.0027477827, 0.054622147, 0.010154094, 0.025437292, 0.031773083, -0.01055473, 0.022864206, -0.029010754, -0.0029999653, 0.025018329, 0.015316208, 0.027188798, -0.10096525, -0.017268656, 0.0012529213, -0.062078856), target3);\n\ttarget3 = MulAdd(ng8, MF4x4(-0.053670805, 0.057336535, -0.037418038, 0.06443577, -0.016027879, -0.058168363, 0.007034215, -0.03390141, -0.0019346164, -0.027947908, 0.021723913, -0.0018286633, 0.030507812, 0.018293543, 0.042917266, 0.033528328), target3);\n\ttarget3 = MulAdd(ng9, MF4x4(-0.004559579, 0.029667616, -0.001870353, 0.0378995, -0.017147437, 0.020192018, -0.021574946, 0.031568103, 0.07487145, 0.0032376775, -0.018893708, -0.041981626, 0.054478757, 0.0061423797, 0.041280247, 0.000878061), target3);\n\ttarget3 = MulAdd(g10, MF4x4(0.017076394, 0.023647636, 0.029403262, 0.029923365, 0.08866472, 0.060613394, 0.1314274, -0.04490231, -0.016304834, -0.0062647443, -0.0031828512, -0.03989252, -0.024330825, 0.00741213, -0.04075287, -0.01615817), target3);\n\ttarget3 = MulAdd(g11, MF4x4(0.017866978, 0.017720113, -0.02846163, 0.040761847, -0.0063438355, -0.02347501, 0.029564403, -0.0029562064, 0.12505588, -0.0073986333, 0.11250363, -0.06179967, 0.07854423, 0.08546533, 0.034743227, -0.010757377), target3);\n\ttarget3 = MulAdd(ng10, MF4x4(-0.06416677, -0.08344284, 0.030138884, 0.017635904, -0.012087523, 0.014205202, -0.03221233, -0.023834767, -0.091186255, -0.028958676, -0.04724334, 0.00013161585, 0.027391518, 0.1249978, -0.045047652, 0.10737729), target3);\n\ttarget3 = MulAdd(ng11, MF4x4(-0.04326348, -0.03543181, -0.029558217, -0.08582413, 0.007812453, 0.014296562, -0.028779754, 0.018517692, -0.063755795, -0.036619596, -0.050809663, 0.005431336, -0.029205568, -0.011827915, -0.031110523, -0.005648626), target3);\n\ttarget3 = MulAdd(g12, MF4x4(0.05499293, -0.10000709, -0.0943537, 0.16143042, -0.019952895, -0.0039807972, -0.014841254, 0.0320363, -0.065173544, -0.049425576, -0.023904482, 0.03759679, -0.03207411, -0.047782745, 0.01352581, 0.008140566), target3);\n\ttarget3 = MulAdd(g13, MF4x4(0.055923894, -0.025134467, 0.029583648, 0.04096879, 0.027551858, -0.14995384, 0.06467113, -0.11633077, -0.01563784, -0.026909819, -0.06292879, -0.078409635, -0.009081105, -0.015533088, 0.019585673, 0.04334208), target3);\n\ttarget3 = MulAdd(ng12, MF4x4(-0.021717606, 0.042464726, 0.02743202, -0.07388838, 0.03460472, 0.0038285658, 0.099842004, -0.098247, 0.13276267, -0.020793032, -0.008603039, -0.051913783, 0.12959045, 0.14735717, -0.10888226, -0.10263746), target3);\n\ttarget3 = MulAdd(ng13, MF4x4(-0.16819532, 0.141579, -0.062480718, -0.021918943, 0.06348125, 0.06849444, 0.03888676, 0.027375204, -0.08194279, -0.012574497, 0.13523251, 0.13739482, -0.047547445, -0.058767617, 0.07009549, 0.028136581), target3);\n\n\tfloat2 outputPt = GetOutputPt();\n\n\tpos -= 0.5f * outputPt;\n\tOUTPUT[gxy] = MF4(MF3(target1.x, target2.x, target3.x) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t++gxy.x;\n\tpos.x += outputPt.x;\n\tOUTPUT[gxy] = MF4(MF3(target1.y, target2.y, target3.y) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\t\n\t++gxy.y;\n\tpos.y += outputPt.y;\n\tOUTPUT[gxy] = MF4(MF3(target1.w, target2.w, target3.w) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n\n\t--gxy.x;\n\tpos.x -= outputPt.x;\n\tOUTPUT[gxy] = MF4(MF3(target1.z, target2.z, target3.z) + INPUT.SampleLevel(sam1, pos, 0).rgb, 1);\n}\n"
  },
  {
    "path": "src/Effects/Bicubic.hlsl",
    "content": "// Bicubic 插值算法\n// 移植自 https://github.com/ActualMandM/cemu_graphic_packs/blob/468d165cf27dae13a06e8bdc3d588d0af775ad91/Filters/Bicubic/output.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n#include \"StubDefs.hlsli\"\n\n//!PARAMETER\n//!LABEL B\n//!DEFAULT 0.33\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\n\nfloat paramB;\n\n//!PARAMETER\n//!LABEL C\n//!DEFAULT 0.33\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\n\nfloat paramC;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam;\n\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\n\nfloat weight(float x) {\n\tconst float B = paramB;\n\tconst float C = paramC;\n\n\tfloat ax = abs(x);\n\n\tif (ax < 1.0) {\n\t\treturn (x * x * ((12.0 - 9.0 * B - 6.0 * C) * ax + (-18.0 + 12.0 * B + 6.0 * C)) + (6.0 - 2.0 * B)) / 6.0;\n\t} else if (ax >= 1.0 && ax < 2.0) {\n\t\treturn (x * x * ((-B - 6.0 * C) * ax + (6.0 * B + 30.0 * C)) + (-12.0 * B - 48.0 * C) * ax + (8.0 * B + 24.0 * C)) / 6.0;\n\t} else {\n\t\treturn 0.0;\n\t}\n}\n\nfloat4 weight4(float x) {\n\treturn float4(\n\t\tweight(x - 2.0),\n\t\tweight(x - 1.0),\n\t\tweight(x),\n\t\tweight(x + 1.0)\n\t);\n}\n\n\nfloat4 Pass1(float2 pos) {\n\tconst float2 inputPt = GetInputPt();\n\tconst float2 inputSize = GetInputSize();\n\n\tpos *= inputSize;\n\tfloat2 pos1 = floor(pos - 0.5) + 0.5;\n\tfloat2 f = pos - pos1;\n\n\tfloat4 rowtaps = weight4(1 - f.x);\n\tfloat4 coltaps = weight4(1 - f.y);\n\n\t// make sure all taps added together is exactly 1.0, otherwise some (very small) distortion can occur\n\trowtaps /= rowtaps.r + rowtaps.g + rowtaps.b + rowtaps.a;\n\tcoltaps /= coltaps.r + coltaps.g + coltaps.b + coltaps.a;\n\n\tfloat2 uv1 = pos1 * inputPt;\n\tfloat2 uv0 = uv1 - inputPt;\n\tfloat2 uv2 = uv1 + inputPt;\n\tfloat2 uv3 = uv2 + inputPt;\n\n\tfloat u_weight_sum = rowtaps.y + rowtaps.z;\n\tfloat u_middle_offset = rowtaps.z * inputPt.x / u_weight_sum;\n\tfloat u_middle = uv1.x + u_middle_offset;\n\n\tfloat v_weight_sum = coltaps.y + coltaps.z;\n\tfloat v_middle_offset = coltaps.z * inputPt.y / v_weight_sum;\n\tfloat v_middle = uv1.y + v_middle_offset;\n\n\tint2 coord_top_left = int2(max(uv0 * inputSize, 0.5));\n\tint2 coord_bottom_right = int2(min(uv3 * inputSize, inputSize - 0.5));\n\n\tfloat3 top = INPUT.Load(int3(coord_top_left, 0)).rgb * rowtaps.x;\n\ttop += INPUT.SampleLevel(sam, float2(u_middle, uv0.y), 0).rgb * u_weight_sum;\n\ttop += INPUT.Load(int3(coord_bottom_right.x, coord_top_left.y, 0)).rgb * rowtaps.w;\n\tfloat3 total = top * coltaps.x;\n\n\tfloat3 middle = INPUT.SampleLevel(sam, float2(uv0.x, v_middle), 0).rgb * rowtaps.x;\n\tmiddle += INPUT.SampleLevel(sam, float2(u_middle, v_middle), 0).rgb * u_weight_sum;\n\tmiddle += INPUT.SampleLevel(sam, float2(uv3.x, v_middle), 0).rgb * rowtaps.w;\n\ttotal += middle * v_weight_sum;\n\n\tfloat3 bottom = INPUT.Load(int3(coord_top_left.x, coord_bottom_right.y, 0)).rgb * rowtaps.x;\n\tbottom += INPUT.SampleLevel(sam, float2(u_middle, uv3.y), 0).rgb * u_weight_sum;\n\tbottom += INPUT.Load(int3(coord_bottom_right, 0)).rgb * rowtaps.w;\n\ttotal += bottom * coltaps.w;\n\n\treturn float4(total, 1);\n}\n"
  },
  {
    "path": "src/Effects/Bilinear.hlsl",
    "content": "//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam;\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\nfloat4 Pass1(float2 pos) {\n\treturn INPUT.SampleLevel(sam, pos, 0);\n}\n"
  },
  {
    "path": "src/Effects/CAS/CAS.hlsl",
    "content": "// 移植自 https://github.com/GPUOpen-Effects/FidelityFX-CAS/blob/master/ffx-cas/ffx_cas.h\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!PARAMETER\n//!LABEL Sharpness\n//!DEFAULT 0.4\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat sharpness;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n// 取消注释此行将降低速度并提高输出质量\n// #define CAS_BETTER_DIAGONALS\n\n#define min3(x, y, z) (min(x, min(y, z)))\n#define max3(x, y, z) (max(x, max(y, z)))\n\n#ifdef MP_FP16\n\nvoid CasFilterH(\n\t// Output values are for 2 8x8 tiles in a 16x8 region.\n\t//  pix<R,G,B>.x = right 8x8 tile\n\t//  pix<R,G,B>.y =  left 8x8 tile\n\t// This enables later processing to easily be packed as well.\n\tout MF2 pixR,\n\tout MF2 pixG,\n\tout MF2 pixB,\n\tMF3 src[4][4],\n\tuint pos,\n\tMF peak\n) {\n\t// AOS to SOA conversion.\n\tMF2 aR = MF2(src[0][pos + 0].r, src[1][pos + 0].r);\n\tMF2 aG = MF2(src[0][pos + 0].g, src[1][pos + 0].g);\n\tMF2 aB = MF2(src[0][pos + 0].b, src[1][pos + 0].b);\n\tMF2 bR = MF2(src[1][pos + 0].r, src[2][pos + 0].r);\n\tMF2 bG = MF2(src[1][pos + 0].g, src[2][pos + 0].g);\n\tMF2 bB = MF2(src[1][pos + 0].b, src[2][pos + 0].b);\n\tMF2 cR = MF2(src[2][pos + 0].r, src[3][pos + 0].r);\n\tMF2 cG = MF2(src[2][pos + 0].g, src[3][pos + 0].g);\n\tMF2 cB = MF2(src[2][pos + 0].b, src[3][pos + 0].b);\n\tMF2 dR = MF2(src[0][pos + 1].r, src[1][pos + 1].r);\n\tMF2 dG = MF2(src[0][pos + 1].g, src[1][pos + 1].g);\n\tMF2 dB = MF2(src[0][pos + 1].b, src[1][pos + 1].b);\n\tMF2 eR = MF2(src[1][pos + 1].r, src[2][pos + 1].r);\n\tMF2 eG = MF2(src[1][pos + 1].g, src[2][pos + 1].g);\n\tMF2 eB = MF2(src[1][pos + 1].b, src[2][pos + 1].b);\n\tMF2 fR = MF2(src[2][pos + 1].r, src[3][pos + 1].r);\n\tMF2 fG = MF2(src[2][pos + 1].g, src[3][pos + 1].g);\n\tMF2 fB = MF2(src[2][pos + 1].b, src[3][pos + 1].b);\n\tMF2 gR = MF2(src[0][pos + 2].r, src[1][pos + 2].r);\n\tMF2 gG = MF2(src[0][pos + 2].g, src[1][pos + 2].g);\n\tMF2 gB = MF2(src[0][pos + 2].b, src[1][pos + 2].b);\n\tMF2 hR = MF2(src[1][pos + 2].r, src[2][pos + 2].r);\n\tMF2 hG = MF2(src[1][pos + 2].g, src[2][pos + 2].g);\n\tMF2 hB = MF2(src[1][pos + 2].b, src[2][pos + 2].b);\n\tMF2 iR = MF2(src[2][pos + 2].r, src[3][pos + 2].r);\n\tMF2 iG = MF2(src[2][pos + 2].g, src[3][pos + 2].g);\n\tMF2 iB = MF2(src[2][pos + 2].b, src[3][pos + 2].b);\n\n\t// Soft min and max.\n\tMF2 mnR = min(min(fR, hR), min(min(bR, dR), eR));\n\tMF2 mnG = min(min(fG, hG), min(min(bG, dG), eG));\n\tMF2 mnB = min(min(fB, hB), min(min(bB, dB), eB));\n#ifdef CAS_BETTER_DIAGONALS\n\tMF2 mnR2 = min(min(gR, iR), min(min(aR, cR), mnR));\n\tMF2 mnG2 = min(min(gG, iG), min(min(aG, cG), mnG));\n\tMF2 mnB2 = min(min(gB, iB), min(min(aB, cB), mnB));\n\tmnR = mnR + mnR2;\n\tmnG = mnG + mnG2;\n\tmnB = mnB + mnB2;\n#endif\n\tMF2 mxR = max(max(fR, hR), max(max(bR, dR), eR));\n\tMF2 mxG = max(max(fG, hG), max(max(bG, dG), eG));\n\tMF2 mxB = max(max(fB, hB), max(max(bB, dB), eB));\n#ifdef CAS_BETTER_DIAGONALS\n\tMF2 mxR2 = max(max(gR, iR), max(max(aR, cR), mxR));\n\tMF2 mxG2 = max(max(gG, iG), max(max(aG, cG), mxG));\n\tMF2 mxB2 = max(max(gB, iB), max(max(aB, cB), mxB));\n\tmxR = mxR + mxR2;\n\tmxG = mxG + mxG2;\n\tmxB = mxB + mxB2;\n#endif\n\t// Smooth minimum distance to signal limit divided by smooth max.\n\tMF2 rcpMR = rcp(mxR);\n\tMF2 rcpMG = rcp(mxG);\n\tMF2 rcpMB = rcp(mxB);\n\n#ifdef CAS_BETTER_DIAGONALS\n\tMF2 ampR = saturate(min(mnR, 2.0 - mxR) * rcpMR);\n\tMF2 ampG = saturate(min(mnG, 2.0 - mxG) * rcpMG);\n\tMF2 ampB = saturate(min(mnB, 2.0 - mxB) * rcpMB);\n#else\n\tMF2 ampR = saturate(min(mnR, 1.0 - mxR) * rcpMR);\n\tMF2 ampG = saturate(min(mnG, 1.0 - mxG) * rcpMG);\n\tMF2 ampB = saturate(min(mnB, 1.0 - mxB) * rcpMB);\n#endif\n\t// Shaping amount of sharpening.\n\n\tampR = sqrt(ampR);\n\tampG = sqrt(ampG);\n\tampB = sqrt(ampB);\n\n\t// Filter shape.\n\tMF2 wR = ampR * peak;\n\tMF2 wG = ampG * peak;\n\tMF2 wB = ampB * peak;\n\t// Filter.\n\n\tMF2 rcpWeight = rcp(1.0 + 4.0 * wG);\n\n\tpixR = saturate((bR * wG + dR * wG + fR * wG + hR * wG + eR) * rcpWeight);\n\tpixG = saturate((bG * wG + dG * wG + fG * wG + hG * wG + eG) * rcpWeight);\n\tpixB = saturate((bB * wG + dB * wG + fB * wG + hB * wG + eB) * rcpWeight);\n}\n\n#else\n\nMF3 CasFilter(MF3 src[4][4], uint2 pos, MF peak) {\n\t// a b c \n\t// d e f\n\t// g h i\n\tMF3 a = src[pos.x - 1][pos.y - 1];\n\tMF3 b = src[pos.x][pos.y - 1];\n\tMF3 c = src[pos.x + 1][pos.y - 1];\n\tMF3 d = src[pos.x - 1][pos.y];\n\tMF3 e = src[pos.x][pos.y];\n\tMF3 f = src[pos.x + 1][pos.y];\n\tMF3 g = src[pos.x - 1][pos.y + 1];\n\tMF3 h = src[pos.x][pos.y + 1];\n\tMF3 i = src[pos.x + 1][pos.y + 1];\n\n\t// Soft min and max.\n\t//  a b c             b\n\t//  d e f * 0.5  +  d e f * 0.5\n\t//  g h i             h\n\t// These are 2.0x bigger (factored out the extra multiply).\n\tMF mnR = min3(min3(d.r, e.r, f.r), b.r, h.r);\n\tMF mnG = min3(min3(d.g, e.g, f.g), b.g, h.g);\n\tMF mnB = min3(min3(d.b, e.b, f.b), b.b, h.b);\n#ifdef CAS_BETTER_DIAGONALS\n\tMF mnR2 = min3(min3(mnR, a.r, c.r), g.r, i.r);\n\tMF mnG2 = min3(min3(mnG, a.g, c.g), g.g, i.g);\n\tMF mnB2 = min3(min3(mnB, a.b, c.b), g.b, i.b);\n\tmnR = mnR + mnR2;\n\tmnG = mnG + mnG2;\n\tmnB = mnB + mnB2;\n#endif\n\tMF mxR = max3(max3(d.r, e.r, f.r), b.r, h.r);\n\tMF mxG = max3(max3(d.g, e.g, f.g), b.g, h.g);\n\tMF mxB = max3(max3(d.b, e.b, f.b), b.b, h.b);\n#ifdef CAS_BETTER_DIAGONALS\n\tMF mxR2 = max3(max3(mxR, a.r, c.r), g.r, i.r);\n\tMF mxG2 = max3(max3(mxG, a.g, c.g), g.g, i.g);\n\tMF mxB2 = max3(max3(mxB, a.b, c.b), g.b, i.b);\n\tmxR = mxR + mxR2;\n\tmxG = mxG + mxG2;\n\tmxB = mxB + mxB2;\n#endif\n\t// Smooth minimum distance to signal limit divided by smooth max.\n\n\tMF rcpMR = rcp(mxR);\n\tMF rcpMG = rcp(mxG);\n\tMF rcpMB = rcp(mxB);\n\n#ifdef CAS_BETTER_DIAGONALS\n\tMF ampR = saturate(min(mnR, 2.0 - mxR) * rcpMR);\n\tMF ampG = saturate(min(mnG, 2.0 - mxG) * rcpMG);\n\tMF ampB = saturate(min(mnB, 2.0 - mxB) * rcpMB);\n#else\n\tMF ampR = saturate(min(mnR, 1.0 - mxR) * rcpMR);\n\tMF ampG = saturate(min(mnG, 1.0 - mxG) * rcpMG);\n\tMF ampB = saturate(min(mnB, 1.0 - mxB) * rcpMB);\n#endif\n\t// Shaping amount of sharpening.\n\tampR = sqrt(ampR);\n\tampG = sqrt(ampG);\n\tampB = sqrt(ampB);\n\n\t// Filter shape.\n\t//  0 w 0\n\t//  w 1 w\n\t//  0 w 0\n\tMF wR = ampR * peak;\n\tMF wG = ampG * peak;\n\tMF wB = ampB * peak;\n\t// Filter.\n\t// Using green coef only, depending on dead code removal to strip out the extra overhead.\n\tMF rcpWeight = rcp(1.0 + 4.0 * wG);\n\n\treturn MF3(\n\t\tsaturate((b.r * wG + d.r * wG + f.r * wG + h.r * wG + e.r) * rcpWeight),\n\t\tsaturate((b.g * wG + d.g * wG + f.g * wG + h.g * wG + e.g) * rcpWeight),\n\t\tsaturate((b.b * wG + d.b * wG + f.b * wG + h.b * wG + e.b) * rcpWeight)\n\t);\n}\n\n#endif\n\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = blockStart + (Rmp8x8(threadId.x) << 1);\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tMF3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = MF3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = MF3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = MF3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = MF3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\tconst MF peak = -rcp(lerp(8.0, 5.0, (MF)sharpness));\n\n#ifdef MP_FP16\n\tMF2 pixR, pixG, pixB;\n\tCasFilterH(pixR, pixG, pixB, src, 0, peak);\n\n\tOUTPUT[gxy] = MF4(pixR.x, pixG.x, pixB.x, 1);\n\n\t++gxy.x;\n\tOUTPUT[gxy] = MF4(pixR.y, pixG.y, pixB.y, 1);\n\n\tCasFilterH(pixR, pixG, pixB, src, 1, peak);\n\n\t++gxy.y;\n\tOUTPUT[gxy] = MF4(pixR.y, pixG.y, pixB.y, 1);\n\n\t--gxy.x;\n\tOUTPUT[gxy] = MF4(pixR.x, pixG.x, pixB.x, 1);\n#else\n\tOUTPUT[gxy] = MF4(CasFilter(src, uint2(1, 1), peak), 1);\n\n\t++gxy.x;\n\tOUTPUT[gxy] = MF4(CasFilter(src, uint2(2, 1), peak), 1);\n\t\n\t++gxy.y;\n\tOUTPUT[gxy] = MF4(CasFilter(src, uint2(2, 2), peak), 1);\n\n\t--gxy.x;\n\tOUTPUT[gxy] = MF4(CasFilter(src, uint2(1, 2), peak), 1);\n#endif\n}\n"
  },
  {
    "path": "src/Effects/CAS/CAS_Scaling.hlsl",
    "content": "// 移植自 https://github.com/GPUOpen-Effects/FidelityFX-CAS/blob/9fabcc9a2c45f958aff55ddfda337e74ef894b7f/ffx-cas/ffx_cas.h\n\n//!MAGPIE EFFECT\n//!VERSION 4\n// FP16 会使性能下降\n\n#include \"../StubDefs.hlsli\"\n\n//!PARAMETER\n//!LABEL Sharpness\n//!DEFAULT 0.4\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat sharpness;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n// 取消注释此行将降低速度并提高输出质量\n// #define CAS_BETTER_DIAGONALS\n\n#define min3(x, y, z) (min(x, min(y, z)))\n#define max3(x, y, z) (max(x, max(y, z)))\n\n#ifdef MP_FP16\n\nMF2 MF2_x(MF1 a) { return MF2(a, a); }\n#define MF2_(a) MF2_x(MF1(a))\n\nvoid CasFilterH(\n\t// Output values are for 2 8x8 tiles in a 16x8 region.\n\t//  pix<R,G,B>.x = right 8x8 tile\n\t//  pix<R,G,B>.y =  left 8x8 tile\n\t// This enables later processing to easily be packed as well.\n\tout MF2 pixR,\n\tout MF2 pixG,\n\tout MF2 pixB,\n\tuint2 ip,\n\tfloat4 const0,\n\tfloat offset,\n\tMF peak\n) {\n\t// Scaling algorithm adaptively interpolates between nearest 4 results of the non-scaling algorithm.\n\tfloat2 pp = float2(ip) * const0.xy + const0.zw;\n\t// Tile 0.\n\t// Fractional position is needed in high precision here.\n\tfloat2 fp0 = floor(pp);\n\tMF2 ppX;\n\tppX.x = MF1(pp.x - fp0.x);\n\tMF1 ppY = MF1(pp.y - fp0.y);\n\tint2 sp0 = int2(fp0);\n\tMF3 a0 = INPUT.Load(int3(sp0 + int2(-1, -1), 0)).rgb;\n\tMF3 b0 = INPUT.Load(int3(sp0 + int2(0, -1), 0)).rgb;\n\tMF3 e0 = INPUT.Load(int3(sp0 + int2(-1, 0), 0)).rgb;\n\tMF3 f0 = INPUT.Load(int3(sp0, 0)).rgb;\n\tMF3 c0 = INPUT.Load(int3(sp0 + int2(1, -1), 0)).rgb;\n\tMF3 d0 = INPUT.Load(int3(sp0 + int2(2, -1), 0)).rgb;\n\tMF3 g0 = INPUT.Load(int3(sp0 + int2(1, 0), 0)).rgb;\n\tMF3 h0 = INPUT.Load(int3(sp0 + int2(2, 0), 0)).rgb;\n\tMF3 i0 = INPUT.Load(int3(sp0 + int2(-1, 1), 0)).rgb;\n\tMF3 j0 = INPUT.Load(int3(sp0 + int2(0, 1), 0)).rgb;\n\tMF3 m0 = INPUT.Load(int3(sp0 + int2(-1, 2), 0)).rgb;\n\tMF3 n0 = INPUT.Load(int3(sp0 + int2(0, 2), 0)).rgb;\n\tMF3 k0 = INPUT.Load(int3(sp0 + int2(1, 1), 0)).rgb;\n\tMF3 l0 = INPUT.Load(int3(sp0 + int2(2, 1), 0)).rgb;\n\tMF3 o0 = INPUT.Load(int3(sp0 + int2(1, 2), 0)).rgb;\n\tMF3 p0 = INPUT.Load(int3(sp0 + int2(2, 2), 0)).rgb;\n\t// Tile 1 (offset only in x).\n\tfloat1 pp1 = pp.x + offset;\n\tfloat1 fp1 = floor(pp1);\n\tppX.y = MF1(pp1 - fp1);\n\tint2 sp1 = int2(fp1, sp0.y);\n\tMF3 a1 = INPUT.Load(int3(sp1 + int2(-1, -1), 0)).rgb;\n\tMF3 b1 = INPUT.Load(int3(sp1 + int2(0, -1), 0)).rgb;\n\tMF3 e1 = INPUT.Load(int3(sp1 + int2(-1, 0), 0)).rgb;\n\tMF3 f1 = INPUT.Load(int3(sp1, 0)).rgb;\n\tMF3 c1 = INPUT.Load(int3(sp1 + int2(1, -1), 0)).rgb;\n\tMF3 d1 = INPUT.Load(int3(sp1 + int2(2, -1), 0)).rgb;\n\tMF3 g1 = INPUT.Load(int3(sp1 + int2(1, 0), 0)).rgb;\n\tMF3 h1 = INPUT.Load(int3(sp1 + int2(2, 0), 0)).rgb;\n\tMF3 i1 = INPUT.Load(int3(sp1 + int2(-1, 1), 0)).rgb;\n\tMF3 j1 = INPUT.Load(int3(sp1 + int2(0, 1), 0)).rgb;\n\tMF3 m1 = INPUT.Load(int3(sp1 + int2(-1, 2), 0)).rgb;\n\tMF3 n1 = INPUT.Load(int3(sp1 + int2(0, 2), 0)).rgb;\n\tMF3 k1 = INPUT.Load(int3(sp1 + int2(1, 1), 0)).rgb;\n\tMF3 l1 = INPUT.Load(int3(sp1 + int2(2, 1), 0)).rgb;\n\tMF3 o1 = INPUT.Load(int3(sp1 + int2(1, 2), 0)).rgb;\n\tMF3 p1 = INPUT.Load(int3(sp1 + int2(2, 2), 0)).rgb;\n\t// AOS to SOA conversion.\n\tMF2 aR = MF2(a0.r, a1.r);\n\tMF2 aG = MF2(a0.g, a1.g);\n\tMF2 aB = MF2(a0.b, a1.b);\n\tMF2 bR = MF2(b0.r, b1.r);\n\tMF2 bG = MF2(b0.g, b1.g);\n\tMF2 bB = MF2(b0.b, b1.b);\n\tMF2 cR = MF2(c0.r, c1.r);\n\tMF2 cG = MF2(c0.g, c1.g);\n\tMF2 cB = MF2(c0.b, c1.b);\n\tMF2 dR = MF2(d0.r, d1.r);\n\tMF2 dG = MF2(d0.g, d1.g);\n\tMF2 dB = MF2(d0.b, d1.b);\n\tMF2 eR = MF2(e0.r, e1.r);\n\tMF2 eG = MF2(e0.g, e1.g);\n\tMF2 eB = MF2(e0.b, e1.b);\n\tMF2 fR = MF2(f0.r, f1.r);\n\tMF2 fG = MF2(f0.g, f1.g);\n\tMF2 fB = MF2(f0.b, f1.b);\n\tMF2 gR = MF2(g0.r, g1.r);\n\tMF2 gG = MF2(g0.g, g1.g);\n\tMF2 gB = MF2(g0.b, g1.b);\n\tMF2 hR = MF2(h0.r, h1.r);\n\tMF2 hG = MF2(h0.g, h1.g);\n\tMF2 hB = MF2(h0.b, h1.b);\n\tMF2 iR = MF2(i0.r, i1.r);\n\tMF2 iG = MF2(i0.g, i1.g);\n\tMF2 iB = MF2(i0.b, i1.b);\n\tMF2 jR = MF2(j0.r, j1.r);\n\tMF2 jG = MF2(j0.g, j1.g);\n\tMF2 jB = MF2(j0.b, j1.b);\n\tMF2 kR = MF2(k0.r, k1.r);\n\tMF2 kG = MF2(k0.g, k1.g);\n\tMF2 kB = MF2(k0.b, k1.b);\n\tMF2 lR = MF2(l0.r, l1.r);\n\tMF2 lG = MF2(l0.g, l1.g);\n\tMF2 lB = MF2(l0.b, l1.b);\n\tMF2 mR = MF2(m0.r, m1.r);\n\tMF2 mG = MF2(m0.g, m1.g);\n\tMF2 mB = MF2(m0.b, m1.b);\n\tMF2 nR = MF2(n0.r, n1.r);\n\tMF2 nG = MF2(n0.g, n1.g);\n\tMF2 nB = MF2(n0.b, n1.b);\n\tMF2 oR = MF2(o0.r, o1.r);\n\tMF2 oG = MF2(o0.g, o1.g);\n\tMF2 oB = MF2(o0.b, o1.b);\n\tMF2 pR = MF2(p0.r, p1.r);\n\tMF2 pG = MF2(p0.g, p1.g);\n\tMF2 pB = MF2(p0.b, p1.b);\n\t// Soft min and max.\n\t// These are 2.0x bigger (factored out the extra multiply).\n\t//  a b c             b\n\t//  e f g * 0.5  +  e f g * 0.5  [F]\n\t//  i j k             j\n\tMF2 mnfR = min3(min3(bR, eR, fR), gR, jR);\n\tMF2 mnfG = min3(min3(bG, eG, fG), gG, jG);\n\tMF2 mnfB = min3(min3(bB, eB, fB), gB, jB);\n#ifdef CAS_BETTER_DIAGONALS\n\tMF2 mnfR2 = min3(min3(mnfR, aR, cR), iR, kR);\n\tMF2 mnfG2 = min3(min3(mnfG, aG, cG), iG, kG);\n\tMF2 mnfB2 = min3(min3(mnfB, aB, cB), iB, kB);\n\tmnfR = mnfR + mnfR2;\n\tmnfG = mnfG + mnfG2;\n\tmnfB = mnfB + mnfB2;\n#endif\n\tMF2 mxfR = max3(max3(bR, eR, fR), gR, jR);\n\tMF2 mxfG = max3(max3(bG, eG, fG), gG, jG);\n\tMF2 mxfB = max3(max3(bB, eB, fB), gB, jB);\n#ifdef CAS_BETTER_DIAGONALS\n\tMF2 mxfR2 = max3(max3(mxfR, aR, cR), iR, kR);\n\tMF2 mxfG2 = max3(max3(mxfG, aG, cG), iG, kG);\n\tMF2 mxfB2 = max3(max3(mxfB, aB, cB), iB, kB);\n\tmxfR = mxfR + mxfR2;\n\tmxfG = mxfG + mxfG2;\n\tmxfB = mxfB + mxfB2;\n#endif\n\t//  b c d             c\n\t//  f g h * 0.5  +  f g h * 0.5  [G]\n\t//  j k l             k\n\tMF2 mngR = min3(min3(cR, fR, gR), hR, kR);\n\tMF2 mngG = min3(min3(cG, fG, gG), hG, kG);\n\tMF2 mngB = min3(min3(cB, fB, gB), hB, kB);\n#ifdef CAS_BETTER_DIAGONALS\n\tMF2 mngR2 = min3(min3(mngR, bR, dR), jR, lR);\n\tMF2 mngG2 = min3(min3(mngG, bG, dG), jG, lG);\n\tMF2 mngB2 = min3(min3(mngB, bB, dB), jB, lB);\n\tmngR = mngR + mngR2;\n\tmngG = mngG + mngG2;\n\tmngB = mngB + mngB2;\n#endif\n\tMF2 mxgR = max3(max3(cR, fR, gR), hR, kR);\n\tMF2 mxgG = max3(max3(cG, fG, gG), hG, kG);\n\tMF2 mxgB = max3(max3(cB, fB, gB), hB, kB);\n#ifdef CAS_BETTER_DIAGONALS\n\tMF2 mxgR2 = max3(max3(mxgR, bR, dR), jR, lR);\n\tMF2 mxgG2 = max3(max3(mxgG, bG, dG), jG, lG);\n\tMF2 mxgB2 = max3(max3(mxgB, bB, dB), jB, lB);\n\tmxgR = mxgR + mxgR2;\n\tmxgG = mxgG + mxgG2;\n\tmxgB = mxgB + mxgB2;\n#endif\n\t//  e f g             f\n\t//  i j k * 0.5  +  i j k * 0.5  [J]\n\t//  m n o             n\n\tMF2 mnjR = min3(min3(fR, iR, jR), kR, nR);\n\tMF2 mnjG = min3(min3(fG, iG, jG), kG, nG);\n\tMF2 mnjB = min3(min3(fB, iB, jB), kB, nB);\n#ifdef CAS_BETTER_DIAGONALS\n\tMF2 mnjR2 = min3(min3(mnjR, eR, gR), mR, oR);\n\tMF2 mnjG2 = min3(min3(mnjG, eG, gG), mG, oG);\n\tMF2 mnjB2 = min3(min3(mnjB, eB, gB), mB, oB);\n\tmnjR = mnjR + mnjR2;\n\tmnjG = mnjG + mnjG2;\n\tmnjB = mnjB + mnjB2;\n#endif\n\tMF2 mxjR = max3(max3(fR, iR, jR), kR, nR);\n\tMF2 mxjG = max3(max3(fG, iG, jG), kG, nG);\n\tMF2 mxjB = max3(max3(fB, iB, jB), kB, nB);\n#ifdef CAS_BETTER_DIAGONALS\n\tMF2 mxjR2 = max3(max3(mxjR, eR, gR), mR, oR);\n\tMF2 mxjG2 = max3(max3(mxjG, eG, gG), mG, oG);\n\tMF2 mxjB2 = max3(max3(mxjB, eB, gB), mB, oB);\n\tmxjR = mxjR + mxjR2;\n\tmxjG = mxjG + mxjG2;\n\tmxjB = mxjB + mxjB2;\n#endif\n\t//  f g h             g\n\t//  j k l * 0.5  +  j k l * 0.5  [K]\n\t//  n o p             o\n\tMF2 mnkR = min3(min3(gR, jR, kR), lR, oR);\n\tMF2 mnkG = min3(min3(gG, jG, kG), lG, oG);\n\tMF2 mnkB = min3(min3(gB, jB, kB), lB, oB);\n#ifdef CAS_BETTER_DIAGONALS\n\tMF2 mnkR2 = min3(min3(mnkR, fR, hR), nR, pR);\n\tMF2 mnkG2 = min3(min3(mnkG, fG, hG), nG, pG);\n\tMF2 mnkB2 = min3(min3(mnkB, fB, hB), nB, pB);\n\tmnkR = mnkR + mnkR2;\n\tmnkG = mnkG + mnkG2;\n\tmnkB = mnkB + mnkB2;\n#endif\n\tMF2 mxkR = max3(max3(gR, jR, kR), lR, oR);\n\tMF2 mxkG = max3(max3(gG, jG, kG), lG, oG);\n\tMF2 mxkB = max3(max3(gB, jB, kB), lB, oB);\n#ifdef CAS_BETTER_DIAGONALS\n\tMF2 mxkR2 = max3(max3(mxkR, fR, hR), nR, pR);\n\tMF2 mxkG2 = max3(max3(mxkG, fG, hG), nG, pG);\n\tMF2 mxkB2 = max3(max3(mxkB, fB, hB), nB, pB);\n\tmxkR = mxkR + mxkR2;\n\tmxkG = mxkG + mxkG2;\n\tmxkB = mxkB + mxkB2;\n#endif\n\t// Smooth minimum distance to signal limit divided by smooth max.\n\tMF2 rcpMfR = rcp(mxfR);\n\tMF2 rcpMfG = rcp(mxfG);\n\tMF2 rcpMfB = rcp(mxfB);\n\tMF2 rcpMgR = rcp(mxgR);\n\tMF2 rcpMgG = rcp(mxgG);\n\tMF2 rcpMgB = rcp(mxgB);\n\tMF2 rcpMjR = rcp(mxjR);\n\tMF2 rcpMjG = rcp(mxjG);\n\tMF2 rcpMjB = rcp(mxjB);\n\tMF2 rcpMkR = rcp(mxkR);\n\tMF2 rcpMkG = rcp(mxkG);\n\tMF2 rcpMkB = rcp(mxkB);\n#ifdef CAS_BETTER_DIAGONALS\n\tMF2 ampfR = saturate(min(mnfR, MF2_(2.0) - mxfR) * rcpMfR);\n\tMF2 ampfG = saturate(min(mnfG, MF2_(2.0) - mxfG) * rcpMfG);\n\tMF2 ampfB = saturate(min(mnfB, MF2_(2.0) - mxfB) * rcpMfB);\n\tMF2 ampgR = saturate(min(mngR, MF2_(2.0) - mxgR) * rcpMgR);\n\tMF2 ampgG = saturate(min(mngG, MF2_(2.0) - mxgG) * rcpMgG);\n\tMF2 ampgB = saturate(min(mngB, MF2_(2.0) - mxgB) * rcpMgB);\n\tMF2 ampjR = saturate(min(mnjR, MF2_(2.0) - mxjR) * rcpMjR);\n\tMF2 ampjG = saturate(min(mnjG, MF2_(2.0) - mxjG) * rcpMjG);\n\tMF2 ampjB = saturate(min(mnjB, MF2_(2.0) - mxjB) * rcpMjB);\n\tMF2 ampkR = saturate(min(mnkR, MF2_(2.0) - mxkR) * rcpMkR);\n\tMF2 ampkG = saturate(min(mnkG, MF2_(2.0) - mxkG) * rcpMkG);\n\tMF2 ampkB = saturate(min(mnkB, MF2_(2.0) - mxkB) * rcpMkB);\n#else\n\tMF2 ampfR = saturate(min(mnfR, MF2_(1.0) - mxfR) * rcpMfR);\n\tMF2 ampfG = saturate(min(mnfG, MF2_(1.0) - mxfG) * rcpMfG);\n\tMF2 ampfB = saturate(min(mnfB, MF2_(1.0) - mxfB) * rcpMfB);\n\tMF2 ampgR = saturate(min(mngR, MF2_(1.0) - mxgR) * rcpMgR);\n\tMF2 ampgG = saturate(min(mngG, MF2_(1.0) - mxgG) * rcpMgG);\n\tMF2 ampgB = saturate(min(mngB, MF2_(1.0) - mxgB) * rcpMgB);\n\tMF2 ampjR = saturate(min(mnjR, MF2_(1.0) - mxjR) * rcpMjR);\n\tMF2 ampjG = saturate(min(mnjG, MF2_(1.0) - mxjG) * rcpMjG);\n\tMF2 ampjB = saturate(min(mnjB, MF2_(1.0) - mxjB) * rcpMjB);\n\tMF2 ampkR = saturate(min(mnkR, MF2_(1.0) - mxkR) * rcpMkR);\n\tMF2 ampkG = saturate(min(mnkG, MF2_(1.0) - mxkG) * rcpMkG);\n\tMF2 ampkB = saturate(min(mnkB, MF2_(1.0) - mxkB) * rcpMkB);\n#endif\n\t// Shaping amount of sharpening.\n\tampfR = sqrt(ampfR);\n\tampfG = sqrt(ampfG);\n\tampfB = sqrt(ampfB);\n\tampgR = sqrt(ampgR);\n\tampgG = sqrt(ampgG);\n\tampgB = sqrt(ampgB);\n\tampjR = sqrt(ampjR);\n\tampjG = sqrt(ampjG);\n\tampjB = sqrt(ampjB);\n\tampkR = sqrt(ampkR);\n\tampkG = sqrt(ampkG);\n\tampkB = sqrt(ampkB);\n\t// Filter shape.\n\tMF2 wfR = ampfR * peak;\n\tMF2 wfG = ampfG * peak;\n\tMF2 wfB = ampfB * peak;\n\tMF2 wgR = ampgR * peak;\n\tMF2 wgG = ampgG * peak;\n\tMF2 wgB = ampgB * peak;\n\tMF2 wjR = ampjR * peak;\n\tMF2 wjG = ampjG * peak;\n\tMF2 wjB = ampjB * peak;\n\tMF2 wkR = ampkR * peak;\n\tMF2 wkG = ampkG * peak;\n\tMF2 wkB = ampkB * peak;\n\t// Blend between 4 results.\n\tMF2 s = (MF2_(1.0) - ppX) * (MF2_(1.0) - MF2_(ppY));\n\tMF2 t = ppX * (MF2_(1.0) - MF2_(ppY));\n\tMF2 u = (MF2_(1.0) - ppX) * MF2_(ppY);\n\tMF2 v = ppX * MF2_(ppY);\n\t// Thin edges to hide bilinear interpolation (helps diagonals).\n\tMF2 thinB = MF2_(1.0 / 32.0);\n\ts *= rcp(thinB + (mxfG - mnfG));\n\tt *= rcp(thinB + (mxgG - mngG));\n\tu *= rcp(thinB + (mxjG - mnjG));\n\tv *= rcp(thinB + (mxkG - mnkG));\n\t// Final weighting.\n\tMF2 qbeR = wfR * s;\n\tMF2 qbeG = wfG * s;\n\tMF2 qbeB = wfB * s;\n\tMF2 qchR = wgR * t;\n\tMF2 qchG = wgG * t;\n\tMF2 qchB = wgB * t;\n\tMF2 qfR = wgR * t + wjR * u + s;\n\tMF2 qfG = wgG * t + wjG * u + s;\n\tMF2 qfB = wgB * t + wjB * u + s;\n\tMF2 qgR = wfR * s + wkR * v + t;\n\tMF2 qgG = wfG * s + wkG * v + t;\n\tMF2 qgB = wfB * s + wkB * v + t;\n\tMF2 qjR = wfR * s + wkR * v + u;\n\tMF2 qjG = wfG * s + wkG * v + u;\n\tMF2 qjB = wfB * s + wkB * v + u;\n\tMF2 qkR = wgR * t + wjR * u + v;\n\tMF2 qkG = wgG * t + wjG * u + v;\n\tMF2 qkB = wgB * t + wjB * u + v;\n\tMF2 qinR = wjR * u;\n\tMF2 qinG = wjG * u;\n\tMF2 qinB = wjB * u;\n\tMF2 qloR = wkR * v;\n\tMF2 qloG = wkG * v;\n\tMF2 qloB = wkB * v;\n\t// Filter.\n\tMF2 rcpWG = rcp(MF2_(2.0) * qbeG + MF2_(2.0) * qchG + MF2_(2.0) * qinG + MF2_(2.0) * qloG + qfG + qgG + qjG + qkG);\n\tpixR = saturate((bR * qbeG + eR * qbeG + cR * qchG + hR * qchG + iR * qinG + nR * qinG + lR * qloG + oR * qloG + fR * qfG + gR * qgG + jR * qjG + kR * qkG) * rcpWG);\n\tpixG = saturate((bG * qbeG + eG * qbeG + cG * qchG + hG * qchG + iG * qinG + nG * qinG + lG * qloG + oG * qloG + fG * qfG + gG * qgG + jG * qjG + kG * qkG) * rcpWG);\n\tpixB = saturate((bB * qbeG + eB * qbeG + cB * qchG + hB * qchG + iB * qinG + nB * qinG + lB * qloG + oB * qloG + fB * qfG + gB * qgG + jB * qjG + kB * qkG) * rcpWG);\n}\n\n#else\n\nfloat3 CasFilter(uint2 ip, float4 const0, float peak) {\n\t// Scaling algorithm adaptively interpolates between nearest 4 results of the non-scaling algorithm.\n\t//  a b c d\n\t//  e f g h\n\t//  i j k l\n\t//  m n o p\n\t// Working these 4 results.\n\t//  +-----+-----+\n\t//  |     |     |\n\t//  |  f..|..g  |\n\t//  |  .  |  .  |\n\t//  +-----+-----+\n\t//  |  .  |  .  |\n\t//  |  j..|..k  |\n\t//  |     |     |\n\t//  +-----+-----+\n\tfloat2 pp = float2(ip) * const0.xy + const0.zw;\n\tfloat2 fp = floor(pp);\n\tpp -= fp;\n\tint2 sp = int2(fp);\n\tfloat3 a = INPUT.Load(int3(sp + int2(-1, -1), 0)).rgb;\n\tfloat3 b = INPUT.Load(int3(sp + int2(0, -1), 0)).rgb;\n\tfloat3 e = INPUT.Load(int3(sp + int2(-1, 0), 0)).rgb;\n\tfloat3 f = INPUT.Load(int3(sp, 0)).rgb;\n\tfloat3 c = INPUT.Load(int3(sp + int2(1, -1), 0)).rgb;\n\tfloat3 d = INPUT.Load(int3(sp + int2(2, -1), 0)).rgb;\n\tfloat3 g = INPUT.Load(int3(sp + int2(1, 0), 0)).rgb;\n\tfloat3 h = INPUT.Load(int3(sp + int2(2, 0), 0)).rgb;\n\tfloat3 i = INPUT.Load(int3(sp + int2(-1, 1), 0)).rgb;\n\tfloat3 j = INPUT.Load(int3(sp + int2(0, 1), 0)).rgb;\n\tfloat3 m = INPUT.Load(int3(sp + int2(-1, 2), 0)).rgb;\n\tfloat3 n = INPUT.Load(int3(sp + int2(0, 2), 0)).rgb;\n\tfloat3 k = INPUT.Load(int3(sp + int2(1, 1), 0)).rgb;\n\tfloat3 l = INPUT.Load(int3(sp + int2(2, 1), 0)).rgb;\n\tfloat3 o = INPUT.Load(int3(sp + int2(1, 2), 0)).rgb;\n\tfloat3 p = INPUT.Load(int3(sp + int2(2, 2), 0)).rgb;\n\n\t// Soft min and max.\n\t// These are 2.0x bigger (factored out the extra multiply).\n\t//  a b c             b\n\t//  e f g * 0.5  +  e f g * 0.5  [F]\n\t//  i j k             j\n\tfloat mnfR = min3(min3(b.r, e.r, f.r), g.r, j.r);\n\tfloat mnfG = min3(min3(b.g, e.g, f.g), g.g, j.g);\n\tfloat mnfB = min3(min3(b.b, e.b, f.b), g.b, j.b);\n#ifdef CAS_BETTER_DIAGONALS\n\tfloat mnfR2 = min3(min3(mnfR, a.r, c.r), i.r, k.r);\n\tfloat mnfG2 = min3(min3(mnfG, a.g, c.g), i.g, k.g);\n\tfloat mnfB2 = min3(min3(mnfB, a.b, c.b), i.b, k.b);\n\tmnfR = mnfR + mnfR2;\n\tmnfG = mnfG + mnfG2;\n\tmnfB = mnfB + mnfB2;\n#endif\n\tfloat mxfR = max3(max3(b.r, e.r, f.r), g.r, j.r);\n\tfloat mxfG = max3(max3(b.g, e.g, f.g), g.g, j.g);\n\tfloat mxfB = max3(max3(b.b, e.b, f.b), g.b, j.b);\n#ifdef CAS_BETTER_DIAGONALS\n\tfloat mxfR2 = max3(max3(mxfR, a.r, c.r), i.r, k.r);\n\tfloat mxfG2 = max3(max3(mxfG, a.g, c.g), i.g, k.g);\n\tfloat mxfB2 = max3(max3(mxfB, a.b, c.b), i.b, k.b);\n\tmxfR = mxfR + mxfR2;\n\tmxfG = mxfG + mxfG2;\n\tmxfB = mxfB + mxfB2;\n#endif\n\t//  b c d             c\n\t//  f g h * 0.5  +  f g h * 0.5  [G]\n\t//  j k l             k\n\tfloat mngR = min3(min3(c.r, f.r, g.r), h.r, k.r);\n\tfloat mngG = min3(min3(c.g, f.g, g.g), h.g, k.g);\n\tfloat mngB = min3(min3(c.b, f.b, g.b), h.b, k.b);\n#ifdef CAS_BETTER_DIAGONALS\n\tfloat mngR2 = min3(min3(mngR, b.r, d.r), j.r, l.r);\n\tfloat mngG2 = min3(min3(mngG, b.g, d.g), j.g, l.g);\n\tfloat mngB2 = min3(min3(mngB, b.b, d.b), j.b, l.b);\n\tmngR = mngR + mngR2;\n\tmngG = mngG + mngG2;\n\tmngB = mngB + mngB2;\n#endif\n\tfloat mxgR = max3(max3(c.r, f.r, g.r), h.r, k.r);\n\tfloat mxgG = max3(max3(c.g, f.g, g.g), h.g, k.g);\n\tfloat mxgB = max3(max3(c.b, f.b, g.b), h.b, k.b);\n#ifdef CAS_BETTER_DIAGONALS\n\tfloat mxgR2 = max3(max3(mxgR, b.r, d.r), j.r, l.r);\n\tfloat mxgG2 = max3(max3(mxgG, b.g, d.g), j.g, l.g);\n\tfloat mxgB2 = max3(max3(mxgB, b.b, d.b), j.b, l.b);\n\tmxgR = mxgR + mxgR2;\n\tmxgG = mxgG + mxgG2;\n\tmxgB = mxgB + mxgB2;\n#endif\n\t//  e f g             f\n\t//  i j k * 0.5  +  i j k * 0.5  [J]\n\t//  m n o             n\n\tfloat mnjR = min3(min3(f.r, i.r, j.r), k.r, n.r);\n\tfloat mnjG = min3(min3(f.g, i.g, j.g), k.g, n.g);\n\tfloat mnjB = min3(min3(f.b, i.b, j.b), k.b, n.b);\n#ifdef CAS_BETTER_DIAGONALS\n\tfloat mnjR2 = min3(min3(mnjR, e.r, g.r), m.r, o.r);\n\tfloat mnjG2 = min3(min3(mnjG, e.g, g.g), m.g, o.g);\n\tfloat mnjB2 = min3(min3(mnjB, e.b, g.b), m.b, o.b);\n\tmnjR = mnjR + mnjR2;\n\tmnjG = mnjG + mnjG2;\n\tmnjB = mnjB + mnjB2;\n#endif\n\tfloat mxjR = max3(max3(f.r, i.r, j.r), k.r, n.r);\n\tfloat mxjG = max3(max3(f.g, i.g, j.g), k.g, n.g);\n\tfloat mxjB = max3(max3(f.b, i.b, j.b), k.b, n.b);\n#ifdef CAS_BETTER_DIAGONALS\n\tfloat mxjR2 = max3(max3(mxjR, e.r, g.r), m.r, o.r);\n\tfloat mxjG2 = max3(max3(mxjG, e.g, g.g), m.g, o.g);\n\tfloat mxjB2 = max3(max3(mxjB, e.b, g.b), m.b, o.b);\n\tmxjR = mxjR + mxjR2;\n\tmxjG = mxjG + mxjG2;\n\tmxjB = mxjB + mxjB2;\n#endif\n\t//  f g h             g\n\t//  j k l * 0.5  +  j k l * 0.5  [K]\n\t//  n o p             o\n\tfloat mnkR = min3(min3(g.r, j.r, k.r), l.r, o.r);\n\tfloat mnkG = min3(min3(g.g, j.g, k.g), l.g, o.g);\n\tfloat mnkB = min3(min3(g.b, j.b, k.b), l.b, o.b);\n#ifdef CAS_BETTER_DIAGONALS\n\tfloat mnkR2 = min3(min3(mnkR, f.r, h.r), n.r, p.r);\n\tfloat mnkG2 = min3(min3(mnkG, f.g, h.g), n.g, p.g);\n\tfloat mnkB2 = min3(min3(mnkB, f.b, h.b), n.b, p.b);\n\tmnkR = mnkR + mnkR2;\n\tmnkG = mnkG + mnkG2;\n\tmnkB = mnkB + mnkB2;\n#endif\n\tfloat mxkR = max3(max3(g.r, j.r, k.r), l.r, o.r);\n\tfloat mxkG = max3(max3(g.g, j.g, k.g), l.g, o.g);\n\tfloat mxkB = max3(max3(g.b, j.b, k.b), l.b, o.b);\n#ifdef CAS_BETTER_DIAGONALS\n\tfloat mxkR2 = max3(max3(mxkR, f.r, h.r), n.r, p.r);\n\tfloat mxkG2 = max3(max3(mxkG, f.g, h.g), n.g, p.g);\n\tfloat mxkB2 = max3(max3(mxkB, f.b, h.b), n.b, p.b);\n\tmxkR = mxkR + mxkR2;\n\tmxkG = mxkG + mxkG2;\n\tmxkB = mxkB + mxkB2;\n#endif\n\t// Smooth minimum distance to signal limit divided by smooth max.\n\tfloat rcpMfR = rcp(mxfR);\n\tfloat rcpMfG = rcp(mxfG);\n\tfloat rcpMfB = rcp(mxfB);\n\tfloat rcpMgR = rcp(mxgR);\n\tfloat rcpMgG = rcp(mxgG);\n\tfloat rcpMgB = rcp(mxgB);\n\tfloat rcpMjR = rcp(mxjR);\n\tfloat rcpMjG = rcp(mxjG);\n\tfloat rcpMjB = rcp(mxjB);\n\tfloat rcpMkR = rcp(mxkR);\n\tfloat rcpMkG = rcp(mxkG);\n\tfloat rcpMkB = rcp(mxkB);\n\n#ifdef CAS_BETTER_DIAGONALS\n\tfloat ampfR = saturate(min(mnfR, 2.0 - mxfR) * rcpMfR);\n\tfloat ampfG = saturate(min(mnfG, 2.0 - mxfG) * rcpMfG);\n\tfloat ampfB = saturate(min(mnfB, 2.0 - mxfB) * rcpMfB);\n\tfloat ampgR = saturate(min(mngR, 2.0 - mxgR) * rcpMgR);\n\tfloat ampgG = saturate(min(mngG, 2.0 - mxgG) * rcpMgG);\n\tfloat ampgB = saturate(min(mngB, 2.0 - mxgB) * rcpMgB);\n\tfloat ampjR = saturate(min(mnjR, 2.0 - mxjR) * rcpMjR);\n\tfloat ampjG = saturate(min(mnjG, 2.0 - mxjG) * rcpMjG);\n\tfloat ampjB = saturate(min(mnjB, 2.0 - mxjB) * rcpMjB);\n\tfloat ampkR = saturate(min(mnkR, 2.0 - mxkR) * rcpMkR);\n\tfloat ampkG = saturate(min(mnkG, 2.0 - mxkG) * rcpMkG);\n\tfloat ampkB = saturate(min(mnkB, 2.0 - mxkB) * rcpMkB);\n#else\n\tfloat ampfR = saturate(min(mnfR, 1.0 - mxfR) * rcpMfR);\n\tfloat ampfG = saturate(min(mnfG, 1.0 - mxfG) * rcpMfG);\n\tfloat ampfB = saturate(min(mnfB, 1.0 - mxfB) * rcpMfB);\n\tfloat ampgR = saturate(min(mngR, 1.0 - mxgR) * rcpMgR);\n\tfloat ampgG = saturate(min(mngG, 1.0 - mxgG) * rcpMgG);\n\tfloat ampgB = saturate(min(mngB, 1.0 - mxgB) * rcpMgB);\n\tfloat ampjR = saturate(min(mnjR, 1.0 - mxjR) * rcpMjR);\n\tfloat ampjG = saturate(min(mnjG, 1.0 - mxjG) * rcpMjG);\n\tfloat ampjB = saturate(min(mnjB, 1.0 - mxjB) * rcpMjB);\n\tfloat ampkR = saturate(min(mnkR, 1.0 - mxkR) * rcpMkR);\n\tfloat ampkG = saturate(min(mnkG, 1.0 - mxkG) * rcpMkG);\n\tfloat ampkB = saturate(min(mnkB, 1.0 - mxkB) * rcpMkB);\n#endif\n\t// Shaping amount of sharpening.\n\tampfR = sqrt(ampfR);\n\tampfG = sqrt(ampfG);\n\tampfB = sqrt(ampfB);\n\tampgR = sqrt(ampgR);\n\tampgG = sqrt(ampgG);\n\tampgB = sqrt(ampgB);\n\tampjR = sqrt(ampjR);\n\tampjG = sqrt(ampjG);\n\tampjB = sqrt(ampjB);\n\tampkR = sqrt(ampkR);\n\tampkG = sqrt(ampkG);\n\tampkB = sqrt(ampkB);\n\n\t// Filter shape.\n\t//  0 w 0\n\t//  w 1 w\n\t//  0 w 0\n\tfloat wfR = ampfR * peak;\n\tfloat wfG = ampfG * peak;\n\tfloat wfB = ampfB * peak;\n\tfloat wgR = ampgR * peak;\n\tfloat wgG = ampgG * peak;\n\tfloat wgB = ampgB * peak;\n\tfloat wjR = ampjR * peak;\n\tfloat wjG = ampjG * peak;\n\tfloat wjB = ampjB * peak;\n\tfloat wkR = ampkR * peak;\n\tfloat wkG = ampkG * peak;\n\tfloat wkB = ampkB * peak;\n\t// Blend between 4 results.\n\t//  s t\n\t//  u v\n\tfloat s = (1.0 - pp.x) * (1.0 - pp.y);\n\tfloat t = pp.x * (1.0 - pp.y);\n\tfloat u = (1.0 - pp.x) * pp.y;\n\tfloat v = pp.x * pp.y;\n\t// Thin edges to hide bilinear interpolation (helps diagonals).\n\tfloat thinB = 1.0 / 32.0;\n\n\ts *= rcp(thinB + (mxfG - mnfG));\n\tt *= rcp(thinB + (mxgG - mngG));\n\tu *= rcp(thinB + (mxjG - mnjG));\n\tv *= rcp(thinB + (mxkG - mnkG));\n\n\t// Final weighting.\n\t//    b c\n\t//  e f g h\n\t//  i j k l\n\t//    n o\n\t//  _____  _____  _____  _____\n\t//         fs        gt \n\t//\n\t//  _____  _____  _____  _____\n\t//  fs      s gt  fs  t     gt\n\t//         ju        kv\n\t//  _____  _____  _____  _____\n\t//         fs        gt\n\t//  ju      u kv  ju  v     kv\n\t//  _____  _____  _____  _____\n\t//\n\t//         ju        kv\n\tfloat qbeR = wfR * s;\n\tfloat qbeG = wfG * s;\n\tfloat qbeB = wfB * s;\n\tfloat qchR = wgR * t;\n\tfloat qchG = wgG * t;\n\tfloat qchB = wgB * t;\n\tfloat qfR = wgR * t + wjR * u + s;\n\tfloat qfG = wgG * t + wjG * u + s;\n\tfloat qfB = wgB * t + wjB * u + s;\n\tfloat qgR = wfR * s + wkR * v + t;\n\tfloat qgG = wfG * s + wkG * v + t;\n\tfloat qgB = wfB * s + wkB * v + t;\n\tfloat qjR = wfR * s + wkR * v + u;\n\tfloat qjG = wfG * s + wkG * v + u;\n\tfloat qjB = wfB * s + wkB * v + u;\n\tfloat qkR = wgR * t + wjR * u + v;\n\tfloat qkG = wgG * t + wjG * u + v;\n\tfloat qkB = wgB * t + wjB * u + v;\n\tfloat qinR = wjR * u;\n\tfloat qinG = wjG * u;\n\tfloat qinB = wjB * u;\n\tfloat qloR = wkR * v;\n\tfloat qloG = wkG * v;\n\tfloat qloB = wkB * v;\n\t// Filter.\n\t// Using green coef only, depending on dead code removal to strip out the extra overhead.\n\tfloat rcpWG = rcp(2.0 * qbeG + 2.0 * qchG + 2.0 * qinG + 2.0 * qloG + qfG + qgG + qjG + qkG);\n\n\treturn float3(\n\t\tsaturate((b.r * qbeG + e.r * qbeG + c.r * qchG + h.r * qchG + i.r * qinG + n.r * qinG + l.r * qloG + o.r * qloG + f.r * qfG + g.r * qgG + j.r * qjG + k.r * qkG) * rcpWG),\n\t\tsaturate((b.g * qbeG + e.g * qbeG + c.g * qchG + h.g * qchG + i.g * qinG + n.g * qinG + l.g * qloG + o.g * qloG + f.g * qfG + g.g * qgG + j.g * qjG + k.g * qkG) * rcpWG),\n\t\tsaturate((b.b * qbeG + e.b * qbeG + c.b * qchG + h.b * qchG + i.b * qinG + n.b * qinG + l.b * qloG + o.b * qloG + f.b * qfG + g.b * qgG + j.b * qjG + k.b * qkG) * rcpWG)\n\t);\n}\n\n#endif\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = blockStart + Rmp8x8(threadId.x);\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat4 const0;\n\tconst0.xy = GetInputSize() * GetOutputPt();\n\tconst0.zw = 0.5 * const0.xy - 0.5;\n\n\tconst MF peak = MF(-rcp(lerp(8.0, 5.0, sharpness)));\n\n#ifdef MP_FP16\n\tconst float offset = 8 / GetScale().x;\n\n\tMF2 pixR, pixG, pixB;\n\tCasFilterH(pixR, pixG, pixB, gxy, const0, offset, peak);\n\n\tOUTPUT[gxy] = MF4(pixR.x, pixG.x, pixB.x, 1);\n\n\tgxy.x += 8u;\n\tOUTPUT[gxy] = MF4(pixR.y, pixG.y, pixB.y, 1);\n\n\tgxy += int2(-8, 8);\n\tCasFilterH(pixR, pixG, pixB, gxy, const0, offset, peak);\n\n\tOUTPUT[gxy] = MF4(pixR.x, pixG.x, pixB.x, 1);\n\n\tgxy.x += 8u;\n\tOUTPUT[gxy] = MF4(pixR.y, pixG.y, pixB.y, 1);\n#else\n\tOUTPUT[gxy] = float4(CasFilter(gxy, const0, peak), 1);\n\n\tgxy.x += 8u;\n\tOUTPUT[gxy] = float4(CasFilter(gxy, const0, peak), 1);\n\n\tgxy.y += 8u;\n\tOUTPUT[gxy] = float4(CasFilter(gxy, const0, peak), 1);\n\n\tgxy.x -= 8u;\n\tOUTPUT[gxy] = float4(CasFilter(gxy, const0, peak), 1);\n#endif\n}\n"
  },
  {
    "path": "src/Effects/CRT/CRT_Easymode.hlsl",
    "content": "// CRT-Easymode\n// 移植自 https://github.com/libretro/common-shaders/blob/master/crt/shaders/crt-easymode.cg\n\n/*\n\tCRT Shader by EasyMode\n\tLicense: GPL\n\n\tA flat CRT shader ideally for 1080p or higher displays.\n\n\tRecommended Settings:\n\n\tVideo\n\t- Aspect Ratio: 4:3\n\t- Integer Scale: Off\n\n\tShader\n\t- Filter: Nearest\n\t- Scale: Don't Care\n\n\tExample RGB Mask Parameter Settings:\n\n\tAperture Grille (Default)\n\t- Dot Width: 1\n\t- Dot Height: 1\n\t- Stagger: 0\n\n\tLottes' Shadow Mask\n\t- Dot Width: 2\n\t- Dot Height: 1\n\t- Stagger: 3\n*/\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!LABEL Sharpness Horizontal\n//!DEFAULT 0.5\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat sharpnessH;\n\n//!PARAMETER\n//!LABEL Sharpness Vertical\n//!DEFAULT 1\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat sharpnessV;\n\n//!PARAMETER\n//!LABEL Mask Strength\n//!DEFAULT 0.3\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat maskStrength;\n\n//!PARAMETER\n//!LABEL Mask Dot Width\n//!DEFAULT 1\n//!MIN 1\n//!MAX 100\n//!STEP 1\nint maskDotWidth;\n\n//!PARAMETER\n//!LABEL Mask Dot Height\n//!DEFAULT 1\n//!MIN 1\n//!MAX 100\n//!STEP 1\nint maskDotHeight;\n\n//!PARAMETER\n//!LABEL Mask Stagger\n//!DEFAULT 0\n//!MIN 0\n//!MAX 100\n//!STEP 1\nint maskStagger;\n\n//!PARAMETER\n//!LABEL Mask Size\n//!DEFAULT 1\n//!MIN 1\n//!MAX 100\n//!STEP 1\nint maskSize;\n\n//!PARAMETER\n//!LABEL Scanline Strength\n//!DEFAULT 1\n//!MIN 0\n//!MAX 1\n//!STEP 1\nfloat scanlineStrength;\n\n//!PARAMETER\n//!LABEL Scanline Beam Width Min\n//!DEFAULT 1.5\n//!MIN 0.5\n//!MAX 5\n//!STEP 0.1\nfloat scanlineBeamWidthMin;\n\n//!PARAMETER\n//!LABEL Scanline Beam Width Max\n//!DEFAULT 1.5\n//!MIN 0.5\n//!MAX 5\n//!STEP 0.1\nfloat scanlineBeamWidthMax;\n\n//!PARAMETER\n//!LABEL Scanline Brightness Min\n//!DEFAULT 0.35\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat scanlineBrightMin;\n\n//!PARAMETER\n//!LABEL Scanline Brightness Max\n//!DEFAULT 0.65\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat scanlineBrightMax;\n\n//!PARAMETER\n//!LABEL Scanline Cutoff\n//!DEFAULT 400\n//!MIN 1\n//!MAX 1000\n//!STEP 1\nint scanlineCutoff;\n\n//!PARAMETER\n//!LABEL Gamma Input\n//!DEFAULT 2\n//!MIN 0.1\n//!MAX 5\n//!STEP 0.01\nfloat gammaInput;\n\n//!PARAMETER\n//!LABEL Gamma Output\n//!DEFAULT 1.8\n//!MIN 0.1\n//!MAX 5\n//!STEP 0.01\nfloat gammaOutput;\n\n//!PARAMETER\n//!LABEL Brightness Boost\n//!DEFAULT 1.2\n//!MIN 1\n//!MAX 2\n//!STEP 0.01\nfloat brightBoost;\n\n//!PARAMETER\n//!LABEL Dilation\n//!DEFAULT 1\n//!MIN 0\n//!MAX 1\n//!STEP 1\nint dilation;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\n\n#pragma warning(disable: 3571) // X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them\n\n#define FIX(c) max(abs(c), 1e-5)\n#define PI 3.141592653589\n#define TEX2D(c) dilate(INPUT.SampleLevel(sam, c, 0))\n#define mod(x,y) (x - y * trunc(x/y))\n\n// Set to 0 to use linear filter and gain speed\n#define ENABLE_LANCZOS 1\n\nfloat4 dilate(float4 col) {\n\tfloat4 x = lerp(float4(1, 1, 1, 1), col, dilation);\n\n\treturn col * x;\n}\n\nfloat curve_distance(float x, float sharp) {\n\t/*\n\t\tapply half-circle s-curve to distance for sharper (more pixelated) interpolation\n\t\tsingle line formula for Graph Toy:\n\t\t0.5 - sqrt(0.25 - (x - step(0.5, x)) * (x - step(0.5, x))) * sign(0.5 - x)\n\t*/\n\n\tfloat x_step = step(0.5, x);\n\tfloat curve = 0.5 - sqrt(0.25 - (x - x_step) * (x - x_step)) * sign(0.5 - x);\n\n\treturn lerp(x, curve, sharp);\n}\n\nfloat4x4 get_color_matrix(float2 co) {\n\tfloat2 inputPt = GetInputPt();\n\treturn float4x4(TEX2D(co - float2(inputPt.x, 0)), TEX2D(co), TEX2D(co + float2(inputPt.x, 0)), TEX2D(co + float2(2.0 * inputPt.x, 0)));\n}\n\nfloat3 filter_lanczos(float4 coeffs, float4x4 color_matrix) {\n\tfloat4 col = mul(coeffs, color_matrix);\n\tfloat4 sample_min = min(color_matrix[1], color_matrix[2]);\n\tfloat4 sample_max = max(color_matrix[1], color_matrix[2]);\n\n\tcol = clamp(col, sample_min, sample_max);\n\n\treturn col.rgb;\n}\n\nfloat4 Pass1(float2 pos) {\n\tfloat2 inputPt = GetInputPt();\n\tint2 inputSize = GetInputSize();\n\tint2 outputSize = GetOutputSize();\n\tfloat2 outputPt = GetOutputPt();\n\n\tfloat2 pix_co = pos * inputSize - 0.5f;\n\t\n\tfloat2 tex_co = (floor(pix_co) + 0.5) * inputPt;\n\tfloat2 dist = frac(pix_co);\n\tfloat curve_x;\n\tfloat3 col, col2;\n\n#if ENABLE_LANCZOS\n\tcurve_x = curve_distance(dist.x, sharpnessH * sharpnessH);\n\n\tfloat4 coeffs = PI * float4(1.0 + curve_x, curve_x, 1.0 - curve_x, 2.0 - curve_x);\n\n\tcoeffs = FIX(coeffs);\n\tcoeffs = 2.0 * sin(coeffs) * sin(coeffs / 2.0) / (coeffs * coeffs);\n\tcoeffs /= dot(coeffs, 1.0);\n\n\tcol = filter_lanczos(coeffs, get_color_matrix(tex_co));\n\tcol2 = filter_lanczos(coeffs, get_color_matrix(tex_co + float2(0, inputPt.y)));\n#else\n\tcurve_x = curve_distance(dist.x, sharpnessH);\n\n\tcol = lerp(TEX2D(tex_co).rgb, TEX2D(tex_co + float2(inputPt.x, 0)).rgb, curve_x);\n\tcol2 = lerp(TEX2D(tex_co + float2(0, inputPt.y)).rgb, TEX2D(tex_co + float2(inputPt.x, inputPt.y)).rgb, curve_x);\n#endif\n\n\tcol = lerp(col, col2, curve_distance(dist.y, sharpnessV));\n\tcol = pow(col, gammaInput / (dilation + 1.0));\n\n\tfloat luma = dot(float3(0.2126, 0.7152, 0.0722), col);\n\tfloat bright = (max(col.r, max(col.g, col.b)) + luma) / 2.0;\n\tfloat scan_bright = clamp(bright, scanlineBrightMin, scanlineBrightMax);\n\tfloat scan_beam = clamp(bright * scanlineBeamWidthMax, scanlineBeamWidthMin, scanlineBeamWidthMax);\n\tfloat scan_weight = 1.0 - pow(cos(pos.y * 2.0 * PI * inputSize.y) * 0.5 + 0.5, scan_beam) * scanlineStrength;\n\n\tfloat mask = 1.0 - maskStrength;\n\tfloat2 mod_fac = floor(pos * outputSize / float2(maskSize, maskDotHeight * maskSize));\n\tint dot_no = int(mod((mod_fac.x + mod(mod_fac.y, 2.0) * maskStagger) / maskDotWidth, 3.0));\n\tfloat3 mask_weight;\n\n\tif (dot_no == 0) mask_weight = float3(1.0, mask, mask);\n\telse if (dot_no == 1) mask_weight = float3(mask, 1.0, mask);\n\telse mask_weight = float3(mask, mask, 1.0);\n\n\tif (inputSize.y >= scanlineCutoff) scan_weight = 1.0;\n\n\tcol2 = col.rgb;\n\tcol *= scan_weight;\n\tcol = lerp(col, col2, scan_bright);\n\tcol *= mask_weight;\n\tcol = pow(col, 1.0 / gammaOutput);\n\n\treturn float4(col * brightBoost, 1);\n}\n"
  },
  {
    "path": "src/Effects/CRT/CRT_Geom.hlsl",
    "content": "// CRT-Geom\n// 移植自 https://github.com/libretro/common-shaders/blob/master/crt/shaders/crt-geom.cg\n\n/*\n\tCRT-interlaced\n\n\tCopyright (C) 2010-2012 cgwg, Themaister and DOLLS\n\n\tThis program is free software; you can redistribute it and/or modify it\n\tunder the terms of the GNU General Public License as published by the Free\n\tSoftware Foundation; either version 2 of the License, or (at your option)\n\tany later version.\n\n\t(cgwg gave their consent to have the original version of this shader\n\tdistributed under the GPL in this message:\n\n\t\thttp://board.byuu.org/viewtopic.php?p=26075#p26075\n\n\t\t\"Feel free to distribute my shaders under the GPL. After all, the\n\t\tbarrel distortion code was taken from the Curvature shader, which is\n\t\tunder the GPL.\"\n\t)\n\tThis shader variant is pre-configured with screen curvature\n*/\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!LABEL Target Gamma\n//!DEFAULT 2.4\n//!MIN 0.1\n//!MAX 5\n//!STEP 0.01\nfloat CRTGamma;\n\n//!PARAMETER\n//!LABEL Monitor Gamma\n//!DEFAULT 2.2\n//!MIN 0.1\n//!MAX 5\n//!STEP 0.01\nfloat monitorGamma;\n\n//!PARAMETER\n//!LABEL Distance\n//!DEFAULT 1.5\n//!MIN 0.1\n//!MAX 3.0\n//!STEP 0.01\nfloat distance;\n\n//!PARAMETER\n//!LABEL Curvature\n//!DEFAULT 1\n//!MIN 0\n//!MAX 1\n//!STEP 1\nint curvature;\n\n//!PARAMETER\n//!LABEL Curvature Radius\n//!DEFAULT 2\n//!MIN 0.1\n//!MAX 10\n//!STEP 0.1\nfloat radius;\n\n//!PARAMETER\n//!LABEL Corner Size\n//!DEFAULT 0.03\n//!MIN 0\n//!MAX 1.0\n//!STEP 0.01\nfloat cornerSize;\n\n//!PARAMETER\n//!LABEL Corner Smoothness\n//!DEFAULT 1000\n//!MIN 80\n//!MAX 2000\n//!STEP 1\nint cornerSmooth;\n\n//!PARAMETER\n//!LABEL Horizontal Tilt\n//!DEFAULT 0\n//!MIN -0.5\n//!MAX 0.5\n//!STEP 0.01\nfloat xTilt;\n\n//!PARAMETER\n//!LABEL Vertical Tilt\n//!DEFAULT 0\n//!MIN -0.5\n//!MAX 0.5\n//!STEP 0.01\nfloat yTilt;\n\n//!PARAMETER\n//!LABEL Horizontal Overscan\n//!DEFAULT 100\n//!MIN -125\n//!MAX 125\n//!STEP 1\nint overScanX;\n\n//!PARAMETER\n//!LABEL Vertical Overscan\n//!DEFAULT 100\n//!MIN -125\n//!MAX 125\n//!STEP 1\nint overScanY;\n\n//!PARAMETER\n//!LABEL Dot Mask\n//!DEFAULT 0.3\n//!MIN 0\n//!MAX 0.3\n//!STEP 0.01\nfloat dotMask;\n\n//!PARAMETER\n//!LABEL Sharpness\n//!DEFAULT 1\n//!MIN 1\n//!MAX 3\n//!STEP 1\nint sharper;\n\n//!PARAMETER\n//!LABEL Scanline Weight\n//!DEFAULT 0.3\n//!MIN 0.1\n//!MAX 0.5\n//!STEP 0.01\nfloat scanlineWeight;\n\n//!PARAMETER\n//!LABEL Luminance Boost\n//!DEFAULT 0\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat lum;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\n\n#pragma warning(disable: 3571) // X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them\n\n// Use the older, purely gaussian beam profile; uncomment for speed\n// #define USEGAUSSIAN\n\n// Macros.\n#define FIX(c) max(abs(c), 1e-5)\n#define PI 3.141592653589\n\n#define TEX2D(c) pow(INPUT.SampleLevel(sam, (c), 0), CRTGamma)\n\n// aspect ratio\n#define aspect float2(1.0, 0.75)\n\nfloat intersect(float2 xy, float4 sin_cos_angle) {\n\tfloat A = dot(xy, xy) + distance * distance;\n\tfloat B = 2.0 * (radius * (dot(xy, sin_cos_angle.xy) - distance * sin_cos_angle.zw.x * sin_cos_angle.zw.y) - distance * distance);\n\tfloat C = distance * distance + 2.0 * radius * distance * sin_cos_angle.zw.x * sin_cos_angle.zw.y;\n\treturn (-B - sqrt(B * B - 4.0 * A * C)) / (2.0 * A);\n}\n\nfloat2 bkwtrans(float2 xy, float4 sin_cos_angle) {\n\tfloat c = intersect(xy, sin_cos_angle);\n\tfloat2 point_ = c * xy;\n\tpoint_ += radius * sin_cos_angle.xy;\n\tpoint_ /= radius;\n\tfloat2 tang = sin_cos_angle.xy / sin_cos_angle.zw;\n\tfloat2 poc = point_ / sin_cos_angle.zw;\n\tfloat A = dot(tang, tang) + 1.0;\n\tfloat B = -2.0 * dot(poc, tang);\n\tfloat C = dot(poc, poc) - 1.0;\n\tfloat a = (-B + sqrt(B * B - 4.0 * A * C)) / (2.0 * A);\n\tfloat2 uv = (point_ - a * sin_cos_angle.xy) / sin_cos_angle.zw;\n\tfloat r = FIX(radius * acos(a));\n\treturn uv * r / sin(r / radius);\n}\n\nfloat2 fwtrans(float2 uv, float4 sin_cos_angle) {\n\tfloat r = FIX(sqrt(dot(uv, uv)));\n\tuv *= sin(r / radius) / r;\n\tfloat x = 1.0 - cos(r / radius);\n\tfloat D = distance / radius + x * sin_cos_angle.z * sin_cos_angle.w + dot(uv, sin_cos_angle.xy);\n\treturn distance * (uv * sin_cos_angle.zw - x * sin_cos_angle.xy) / D;\n}\n\nfloat3 maxscale(float4 sin_cos_angle) {\n\tfloat2 c = bkwtrans(-radius * sin_cos_angle.xy / (1.0 + radius / distance * sin_cos_angle.z * sin_cos_angle.w), sin_cos_angle);\n\tfloat2 a = 0.5 * aspect;\n\tfloat2 lo = float2(fwtrans(float2(-a.x, c.y), sin_cos_angle).x,\n\t\tfwtrans(float2(c.x, -a.y), sin_cos_angle).y) / aspect;\n\tfloat2 hi = float2(fwtrans(float2(+a.x, c.y), sin_cos_angle).x,\n\t\tfwtrans(float2(c.x, +a.y), sin_cos_angle).y) / aspect;\n\treturn float3((hi + lo) * aspect * 0.5, max(hi.x - lo.x, hi.y - lo.y));\n}\n\n// Calculate the influence of a scanline on the current pixel.\n//\n// 'distance' is the distance in texture coordinates from the current\n// pixel to the scanline in question.\n// 'color' is the colour of the scanline at the horizontal location of\n// the current pixel.\nfloat4 scanlineWeights(float distance1, float4 color) {\n\t// \"wid\" controls the width of the scanline beam, for each RGB\n\t// channel The \"weights\" lines basically specify the formula\n\t// that gives you the profile of the beam, i.e. the intensity as\n\t// a function of distance from the vertical center of the\n\t// scanline. In this case, it is gaussian if width=2, and\n\t// becomes nongaussian for larger widths. Ideally this should\n\t// be normalized so that the integral across the beam is\n\t// independent of its width. That is, for a narrower beam\n\t// \"weights\" should have a higher peak at the center of the\n\t// scanline than for a wider beam.\n#ifdef USEGAUSSIAN\n\tfloat4 wid = 0.3 + 0.1 * pow(color, 3.0);\n\tfloat v = distance1 / (wid * scanline_weight / 0.3);\n\tfloat4 weights = { v, v, v, v };\n\treturn (lum + 0.4) * exp(-weights * weights) / wid;\n#else\n\tfloat4 wid = 2.0 + 2.0 * pow(color, 4.0);\n\tfloat v = distance1 / scanlineWeight;\n\tfloat4 weights = float4(v, v, v, v);\n\treturn (lum + 1.4) * exp(-pow(weights * rsqrt(0.5 * wid), wid)) / (0.6 + 0.2 * wid);\n#endif\n}\n\nfloat4 Pass1(float2 pos) {\n\tconst uint2 outputSize = GetOutputSize();\n\tconst uint2 inputSize = GetInputSize();\n\n\tfloat4 sin_cos_angle = { sin(float2(xTilt, yTilt)), cos(float2(xTilt, yTilt)) };\n\tfloat3 stretch = maxscale(sin_cos_angle);\n\tfloat2 TextureSize = float2(sharper * inputSize.x, inputSize.y);\n\t// Resulting X pixel-coordinate of the pixel we're drawing.\n\tfloat mod_factor = pos.x * outputSize.x;\n\tfloat2 ilfac = { 1.0, clamp(floor(inputSize.y / 1000.0), 1.0, 2.0)};\n\tfloat2 one = ilfac / TextureSize;\n\n\t// Here's a helpful diagram to keep in mind while trying to\n\t// understand the code:\n\t//\n\t//  |      |      |      |      |\n\t// -------------------------------\n\t//  |      |      |      |      |\n\t//  |  01  |  11  |  21  |  31  | <-- current scanline\n\t//  |      | @    |      |      |\n\t// -------------------------------\n\t//  |      |      |      |      |\n\t//  |  02  |  12  |  22  |  32  | <-- next scanline\n\t//  |      |      |      |      |\n\t// -------------------------------\n\t//  |      |      |      |      |\n\t//\n\t// Each character-cell represents a pixel on the output\n\t// surface, \"@\" represents the current pixel (always somewhere\n\t// in the bottom half of the current scan-line, or the top-half\n\t// of the next scanline). The grid of lines represents the\n\t// edges of the texels of the underlying texture.\n\n\t// Texture coordinates of the texel containing the active pixel.\n\tfloat2 xy = 0.0;\n\tif (curvature > 0) {\n\t\tfloat2 cd = pos;\n\t\tcd = (cd - 0.5) * aspect * stretch.z + stretch.xy;\n\t\txy = bkwtrans(cd, sin_cos_angle) / float2(overScanX / 100.0, overScanY / 100.0) / aspect + float2(0.5, 0.5);\n\t} else {\n\t\txy = pos;\n\t}\n\n\tfloat2 cd2 = xy;\n\tcd2 = (cd2 - 0.5) * float2(overScanX, overScanY) / 100.0 + 0.5;\n\tcd2 = min(cd2, 1.0 - cd2) * aspect;\n\tfloat2 cdist = float2(cornerSize, cornerSize);\n\tcd2 = (cdist - min(cd2, cdist));\n\tfloat dist = sqrt(dot(cd2, cd2));\n\tfloat cval = clamp((cdist.x - dist) * cornerSmooth, 0.0, 1.0);\n\n\tfloat2 ratio_scale = (xy * TextureSize - 0.5) / ilfac;\n\n\tfloat filter = rcp(GetScale().y);\n\tfloat2 uv_ratio = frac(ratio_scale);\n\n\t// Snap to the center of the underlying texel.\n\n\txy = (floor(ratio_scale) * ilfac + 0.5) / TextureSize;\n\n\t// Calculate Lanczos scaling coefficients describing the effect\n\t// of various neighbour texels in a scanline on the current\n\t// pixel.\n\tfloat4 coeffs = PI * float4(1.0 + uv_ratio.x, uv_ratio.x, 1.0 - uv_ratio.x, 2.0 - uv_ratio.x);\n\n\t// Prevent division by zero.\n\tcoeffs = FIX(coeffs);\n\n\t// Lanczos2 kernel.\n\tcoeffs = 2.0 * sin(coeffs) * sin(coeffs / 2.0) / (coeffs * coeffs);\n\n\t// Normalize.\n\tcoeffs /= dot(coeffs, float4(1.0, 1.0, 1.0, 1.0));\n\n\t// Calculate the effective colour of the current and next\n\t// scanlines at the horizontal location of the current pixel,\n\t// using the Lanczos coefficients above.\n\tfloat4 col = clamp(mul(coeffs, float4x4(\n\t\tTEX2D(xy + float2(-one.x, 0.0)),\n\t\tTEX2D(xy),\n\t\tTEX2D(xy + float2(one.x, 0.0)),\n\t\tTEX2D(xy + float2(2.0 * one.x, 0.0)))),\n\t\t0.0, 1.0);\n\tfloat4 col2 = clamp(mul(coeffs, float4x4(\n\t\tTEX2D(xy + float2(-one.x, one.y)),\n\t\tTEX2D(xy + float2(0.0, one.y)),\n\t\tTEX2D(xy + one),\n\t\tTEX2D(xy + float2(2.0 * one.x, one.y)))),\n\t\t0.0, 1.0);\n\n\tcol = pow(col, CRTGamma);\n\tcol2 = pow(col2, CRTGamma);\n\n\t// Calculate the influence of the current and next scanlines on\n\t// the current pixel.\n\tfloat4 weights = scanlineWeights(uv_ratio.y, col);\n\tfloat4 weights2 = scanlineWeights(1.0 - uv_ratio.y, col2);\n\n\tuv_ratio.y = uv_ratio.y + 1.0 / 3.0 * filter;\n\tweights = (weights + scanlineWeights(uv_ratio.y, col)) / 3.0;\n\tweights2 = (weights2 + scanlineWeights(abs(1.0 - uv_ratio.y), col2)) / 3.0;\n\tuv_ratio.y = uv_ratio.y - 2.0 / 3.0 * filter;\n\tweights = weights + scanlineWeights(abs(uv_ratio.y), col) / 3.0;\n\tweights2 = weights2 + scanlineWeights(abs(1.0 - uv_ratio.y), col2) / 3.0;\n\n\tfloat3 mul_res = (col * weights + col2 * weights2).rgb;\n\tmul_res *= float3(cval, cval, cval);\n\n\t// dot-mask emulation:\n\t// Output pixels are alternately tinted green and magenta.\n\tfloat3 dotMaskWeights = lerp(\n\t\tfloat3(1.0, 1.0 - dotMask, 1.0),\n\t\tfloat3(1.0 - dotMask, 1.0, 1.0 - dotMask),\n\t\tfloor(fmod(mod_factor, 2.0))\n\t);\n\tmul_res *= dotMaskWeights;\n\n\t// Convert the image gamma for display on our output device.\n\tmul_res = pow(mul_res, 1.0 / monitorGamma);\n\n\t// Color the texel.\n\treturn float4(mul_res, 1.0);\n}\n"
  },
  {
    "path": "src/Effects/CRT/CRT_Hyllian.hlsl",
    "content": "// CRT-Hyllian\n// 移植自 https://github.com/libretro/common-shaders/blob/master/crt/shaders/crt-hyllian.cg\n// 要求整数倍缩放\n\n/*\n   Hyllian's CRT Shader\n\n   Copyright (C) 2011-2016 Hyllian - sergiogdb@gmail.com\n\n   Permission is hereby granted, free of charge, to any person obtaining a copy\n   of this software and associated documentation files (the \"Software\"), to deal\n   in the Software without restriction, including without limitation the rights\n   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n   copies of the Software, and to permit persons to whom the Software is\n   furnished to do so, subject to the following conditions:\n\n   The above copyright notice and this permission notice shall be included in\n   all copies or substantial portions of the Software.\n\n   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n   THE SOFTWARE.\n\n*/\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!LABEL Phosphor\n//!DEFAULT 1\n//!MIN 0\n//!MAX 1\n//!STEP 1\nint phosphor;\n\n//!PARAMETER\n//!LABEL Vertical Scanlines\n//!DEFAULT 0\n//!MIN 0\n//!MAX 1\n//!STEP 1\nint vScanlines;\n\n//!PARAMETER\n//!LABEL Input Gamma\n//!DEFAULT 2.5\n//!MIN 0\n//!MAX 5\n//!STEP 0.01\nfloat inputGamma;\n\n//!PARAMETER\n//!LABEL Output Gamma\n//!DEFAULT 2.2\n//!MIN 0\n//!MAX 5\n//!STEP 0.01\nfloat outputGamma;\n\n//!PARAMETER\n//!LABEL Sharpness\n//!DEFAULT 1\n//!MIN 1\n//!MAX 5\n//!STEP 1\nint sharpness;\n\n//!PARAMETER\n//!LABEL Color Boost\n//!DEFAULT 1.5\n//!MIN 1\n//!MAX 2\n//!STEP 0.01\nfloat colorBoost;\n\n//!PARAMETER\n//!LABEL Red Boost\n//!DEFAULT 1\n//!MIN 1\n//!MAX 2\n//!STEP 0.01\nfloat redBoost;\n\n//!PARAMETER\n//!LABEL Green Boost\n//!DEFAULT 1\n//!MIN 1\n//!MAX 2\n//!STEP 0.01\nfloat greenBoost;\n\n//!PARAMETER\n//!LABEL Blue Boost\n//!DEFAULT 1\n//!MIN 1\n//!MAX 2\n//!STEP 0.01\nfloat blueBoost;\n\n//!PARAMETER\n//!LABEL Scanline Strength\n//!DEFAULT 0.5\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat scanlinesStrength;\n\n//!PARAMETER\n//!LABEL Min Beam Width\n//!DEFAULT 0.86\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat beamMinWidth;\n\n//!PARAMETER\n//!LABEL Max Beam Width\n//!DEFAULT 1\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat beamMaxWidth;\n\n//!PARAMETER\n//!LABEL Anti-Ringing\n//!DEFAULT 0.8\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat crtAntiRinging;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\n\n#pragma warning(disable: 3571) // X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them\n\n#define GAMMA_IN(color)     pow(color, float3(inputGamma, inputGamma, inputGamma))\n#define GAMMA_OUT(color)    pow(color, float3(1.0 / outputGamma, 1.0 / outputGamma, 1.0 / outputGamma))\n\n// Horizontal cubic filter.\n\n// Some known filters use these values:\n\n//    B = 0.0, C = 0.0  =>  Hermite cubic filter.\n//    B = 1.0, C = 0.0  =>  Cubic B-Spline filter.\n//    B = 0.0, C = 0.5  =>  Catmull-Rom Spline filter. This is the default used in this shader.\n//    B = C = 1.0/3.0   =>  Mitchell-Netravali cubic filter.\n//    B = 0.3782, C = 0.3109  =>  Robidoux filter.\n//    B = 0.2620, C = 0.3690  =>  Robidoux Sharp filter.\n//    B = 0.36, C = 0.28  =>  My best config for ringing elimination in pixel art (Hyllian).\n\n\n// For more info, see: http://www.imagemagick.org/Usage/img_diagrams/cubic_survey.gif\n\n// Change these params to configure the horizontal filter.\nconst static float  B = 0.0;\nconst static float  C = 0.5;\n\nconst static float4x4 invX = float4x4((-B - 6.0 * C) / 6.0, (3.0 * B + 12.0 * C) / 6.0, (-3.0 * B - 6.0 * C) / 6.0, B / 6.0,\n    (12.0 - 9.0 * B - 6.0 * C) / 6.0, (-18.0 + 12.0 * B + 6.0 * C) / 6.0, 0.0, (6.0 - 2.0 * B) / 6.0,\n    -(12.0 - 9.0 * B - 6.0 * C) / 6.0, (18.0 - 15.0 * B - 12.0 * C) / 6.0, (3.0 * B + 6.0 * C) / 6.0, B / 6.0,\n    (B + 6.0 * C) / 6.0, -C, 0.0, 0.0);\n\nfloat4 Pass1(float2 pos) {\n    uint2 inputSize = GetInputSize();\n    uint2 outputSize = GetOutputSize();\n    float3 color;\n\n    float2 TextureSize = float2(sharpness * inputSize.x, inputSize.y);\n\n    float2 dx = lerp(float2(1.0 / TextureSize.x, 0.0), float2(0.0, 1.0 / TextureSize.y), vScanlines);\n    float2 dy = lerp(float2(0.0, 1.0 / TextureSize.y), float2(1.0 / TextureSize.x, 0.0), vScanlines);\n\n    float2 pix_coord = pos * TextureSize + float2(-0.5, 0.5);\n\n    float2 tc = lerp((floor(pix_coord) + float2(0.5, 0.5)) / TextureSize, (floor(pix_coord) + float2(1.0, -0.5)) / TextureSize, vScanlines);\n\n    float2 fp = lerp(frac(pix_coord), frac(pix_coord.yx), vScanlines);\n\n    float3 c00 = GAMMA_IN(INPUT.SampleLevel(sam, tc - dx - dy, 0).xyz);\n    float3 c01 = GAMMA_IN(INPUT.SampleLevel(sam, tc - dy, 0).xyz);\n    float3 c02 = GAMMA_IN(INPUT.SampleLevel(sam, tc + dx - dy, 0).xyz);\n    float3 c03 = GAMMA_IN(INPUT.SampleLevel(sam, tc + 2.0 * dx - dy, 0).xyz);\n    float3 c10 = GAMMA_IN(INPUT.SampleLevel(sam, tc - dx, 0).xyz);\n    float3 c11 = GAMMA_IN(INPUT.SampleLevel(sam, tc, 0).xyz);\n    float3 c12 = GAMMA_IN(INPUT.SampleLevel(sam, tc + dx, 0).xyz);\n    float3 c13 = GAMMA_IN(INPUT.SampleLevel(sam, tc + 2.0 * dx, 0).xyz);\n\n    //  Get min/max samples\n    float3 min_sample = min(min(c01, c11), min(c02, c12));\n    float3 max_sample = max(max(c01, c11), max(c02, c12));\n\n    float4x3 color_matrix0 = float4x3(c00, c01, c02, c03);\n    float4x3 color_matrix1 = float4x3(c10, c11, c12, c13);\n\n    float4 invX_Px = mul(invX, float4(fp.x * fp.x * fp.x, fp.x * fp.x, fp.x, 1.0));\n    float3 color0 = mul(invX_Px, color_matrix0);\n    float3 color1 = mul(invX_Px, color_matrix1);\n\n    // Anti-ringing\n    float3 aux = color0;\n    color0 = clamp(color0, min_sample, max_sample);\n    color0 = lerp(aux, color0, crtAntiRinging);\n    aux = color1;\n    color1 = clamp(color1, min_sample, max_sample);\n    color1 = lerp(aux, color1, crtAntiRinging);\n\n    float pos0 = fp.y;\n    float pos1 = 1 - fp.y;\n\n    float3 lum0 = lerp(beamMinWidth, beamMaxWidth, color0);\n    float3 lum1 = lerp(beamMinWidth, beamMaxWidth, color1);\n\n    float3 d0 = clamp(pos0 / (lum0 + 0.0000001), 0.0, 1.0);\n    float3 d1 = clamp(pos1 / (lum1 + 0.0000001), 0.0, 1.0);\n\n    d0 = exp(-10.0 * scanlinesStrength * d0 * d0);\n    d1 = exp(-10.0 * scanlinesStrength * d1 * d1);\n\n    color = clamp(color0 * d0 + color1 * d1, 0.0, 1.0);\n\n    color *= colorBoost * float3(redBoost, greenBoost, blueBoost);\n\n    float mod_factor = lerp(pos.x * outputSize.x, pos.y * outputSize.y, vScanlines);\n\n    float3 dotMaskWeights = lerp(\n        float3(1.0, 0.7, 1.0),\n        float3(0.7, 1.0, 0.7),\n        floor(fmod(mod_factor, 2.0))\n    );\n\n    color.rgb *= lerp(1.0, dotMaskWeights, phosphor);\n\n    color = GAMMA_OUT(color);\n\n    return float4(color, 1.0);\n}\n"
  },
  {
    "path": "src/Effects/CRT/CRT_Lottes.hlsl",
    "content": "// CRT-Lottes\n// 移植自 https://github.com/libretro/common-shaders/blob/master/crt/shaders/crt-lottes.cg\n\n\n// PUBLIC DOMAIN CRT STYLED SCAN-LINE SHADER\n//\n//   by Timothy Lottes\n//\n// This is more along the style of a really good CGA arcade monitor.\n// With RGB inputs instead of NTSC.\n// The shadow mask example has the mask rotated 90 degrees for less chromatic aberration.\n//\n// Left it unoptimized to show the theory behind the algorithm.\n//\n// It is an example what I personally would want as a display option for pixel art games.\n// Please take and use, change, or whatever.\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!PARAMETER\n//!LABEL Scanline Hardness\n//!DEFAULT -8\n//!MIN -20\n//!MAX 0\n//!STEP 1\nint hardScan;\n\n//!PARAMETER\n//!LABEL Pixel Hardness\n//!DEFAULT -3\n//!MIN -20\n//!MAX 0\n//!STEP 1\nint hardPix;\n\n//!PARAMETER\n//!LABEL Horizontal Display Warp\n//!DEFAULT 0.031\n//!MIN 0\n//!MAX 0.125\n//!STEP 0.001\nfloat warpX;\n\n//!PARAMETER\n//!LABEL Vertical Display Warp\n//!DEFAULT 0.041\n//!MIN 0\n//!MAX 0.125\n//!STEP 0.001\nfloat warpY;\n\n//!PARAMETER\n//!LABEL Mask Dark\n//!DEFAULT 0.5\n//!MIN 0\n//!MAX 2\n//!STEP 0.01\nfloat maskDark;\n\n//!PARAMETER\n//!LABEL Mask Light\n//!DEFAULT 1.5\n//!MIN 0\n//!MAX 2\n//!STEP 0.01\nfloat maskLight;\n\n//!PARAMETER\n//!LABEL Shadow Mask\n//!DEFAULT 3\n//!MIN 0\n//!MAX 4\n//!STEP 1\nint shadowMask;\n\n//!PARAMETER\n//!LABEL Brightness Boost\n//!DEFAULT 1\n//!MIN 0\n//!MAX 2\n//!STEP 0.01\nfloat brightBoost;\n\n//!PARAMETER\n//!LABEL Bloom-X Soft\n//!DEFAULT -1.5\n//!MIN -2\n//!MAX -0.5\n//!STEP 0.01\nfloat hardBloomPix;\n\n//!PARAMETER\n//!LABEL Bloom-Y Soft\n//!DEFAULT -2\n//!MIN -4\n//!MAX -1\n//!STEP 0.01\nfloat hardBloomScan;\n\n//!PARAMETER\n//!LABEL Bloom Amount\n//!DEFAULT 0.15\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat bloomAmount;\n\n//!PARAMETER\n//!LABEL Filter Kernel Shape\n//!DEFAULT 2\n//!MIN 0\n//!MAX 10\n//!STEP 0.01\nfloat shape;\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\n#pragma warning(disable: 3571) // X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them\n\n#define DO_BLOOM 1\n#define warp float2(warpX, warpY)\n\n\n// Nearest emulated sample given floating point position and texel offset.\n// Also zero's off screen.\nfloat3 Fetch(float2 pos, float2 off, float2 texture_size) {\n\tpos = (floor(pos * texture_size.xy + off) + float2(0.5, 0.5)) / texture_size.xy;\n\treturn brightBoost * pow(INPUT.SampleLevel(sam, pos, 0).rgb, 2.2f);\n}\n\n// Distance in emulated pixels to nearest texel.\nfloat2 Dist(float2 pos, float2 texture_size) { pos = pos * texture_size.xy; return -((pos - floor(pos)) - float2(0.5, 0.5)); }\n\n// 1D Gaussian.\nfloat Gaus(float pos, float scale) { return exp2(scale * pow(abs(pos), shape)); }\n\n// 3-tap Gaussian filter along horz line.\nfloat3 Horz3(float2 pos, float off, float2 texture_size) {\n\tfloat3 b = Fetch(pos, float2(-1.0, off), texture_size);\n\tfloat3 c = Fetch(pos, float2(0.0, off), texture_size);\n\tfloat3 d = Fetch(pos, float2(1.0, off), texture_size);\n\tfloat dst = Dist(pos, texture_size).x;\n\t// Convert distance to weight.\n\tfloat scale = hardPix;\n\tfloat wb = Gaus(dst - 1.0, scale);\n\tfloat wc = Gaus(dst + 0.0, scale);\n\tfloat wd = Gaus(dst + 1.0, scale);\n\t// Return filtered sample.\n\treturn (b * wb + c * wc + d * wd) / (wb + wc + wd);\n}\n\n// 5-tap Gaussian filter along horz line.\nfloat3 Horz5(float2 pos, float off, float2 texture_size) {\n\tfloat3 a = Fetch(pos, float2(-2.0, off), texture_size);\n\tfloat3 b = Fetch(pos, float2(-1.0, off), texture_size);\n\tfloat3 c = Fetch(pos, float2(0.0, off), texture_size);\n\tfloat3 d = Fetch(pos, float2(1.0, off), texture_size);\n\tfloat3 e = Fetch(pos, float2(2.0, off), texture_size);\n\tfloat dst = Dist(pos, texture_size).x;\n\t// Convert distance to weight.\n\tfloat scale = hardPix;\n\tfloat wa = Gaus(dst - 2.0, scale);\n\tfloat wb = Gaus(dst - 1.0, scale);\n\tfloat wc = Gaus(dst + 0.0, scale);\n\tfloat wd = Gaus(dst + 1.0, scale);\n\tfloat we = Gaus(dst + 2.0, scale);\n\t// Return filtered sample.\n\treturn (a * wa + b * wb + c * wc + d * wd + e * we) / (wa + wb + wc + wd + we);\n}\n\n// 7-tap Gaussian filter along horz line.\nfloat3 Horz7(float2 pos, float off, float2 texture_size) {\n\tfloat3 a = Fetch(pos, float2(-3.0, off), texture_size);\n\tfloat3 b = Fetch(pos, float2(-2.0, off), texture_size);\n\tfloat3 c = Fetch(pos, float2(-1.0, off), texture_size);\n\tfloat3 d = Fetch(pos, float2(0.0, off), texture_size);\n\tfloat3 e = Fetch(pos, float2(1.0, off), texture_size);\n\tfloat3 f = Fetch(pos, float2(2.0, off), texture_size);\n\tfloat3 g = Fetch(pos, float2(3.0, off), texture_size);\n\tfloat dst = Dist(pos, texture_size).x;\n\t// Convert distance to weight.\n\tfloat scale = hardBloomPix;\n\tfloat wa = Gaus(dst - 3.0, scale);\n\tfloat wb = Gaus(dst - 2.0, scale);\n\tfloat wc = Gaus(dst - 1.0, scale);\n\tfloat wd = Gaus(dst + 0.0, scale);\n\tfloat we = Gaus(dst + 1.0, scale);\n\tfloat wf = Gaus(dst + 2.0, scale);\n\tfloat wg = Gaus(dst + 3.0, scale);\n\t// Return filtered sample.\n\treturn (a * wa + b * wb + c * wc + d * wd + e * we + f * wf + g * wg) / (wa + wb + wc + wd + we + wf + wg);\n}\n\n// Return scanline weight.\nfloat Scan(float2 pos, float off, float2 texture_size) {\n\tfloat dst = Dist(pos, texture_size).y;\n\treturn Gaus(dst + off, hardScan);\n}\n\n// Return scanline weight for bloom.\nfloat BloomScan(float2 pos, float off, float2 texture_size) {\n\tfloat dst = Dist(pos, texture_size).y;\n\treturn Gaus(dst + off, hardBloomScan);\n}\n\n// Allow nearest three lines to effect pixel.\nfloat3 Tri(float2 pos, float2 texture_size) {\n\tfloat3 a = Horz3(pos, -1.0, texture_size);\n\tfloat3 b = Horz5(pos, 0.0, texture_size);\n\tfloat3 c = Horz3(pos, 1.0, texture_size);\n\tfloat wa = Scan(pos, -1.0, texture_size);\n\tfloat wb = Scan(pos, 0.0, texture_size);\n\tfloat wc = Scan(pos, 1.0, texture_size);\n\treturn a * wa + b * wb + c * wc;\n}\n\n// Small bloom.\nfloat3 Bloom(float2 pos, float2 texture_size) {\n\tfloat3 a = Horz5(pos, -2.0, texture_size);\n\tfloat3 b = Horz7(pos, -1.0, texture_size);\n\tfloat3 c = Horz7(pos, 0.0, texture_size);\n\tfloat3 d = Horz7(pos, 1.0, texture_size);\n\tfloat3 e = Horz5(pos, 2.0, texture_size);\n\tfloat wa = BloomScan(pos, -2.0, texture_size);\n\tfloat wb = BloomScan(pos, -1.0, texture_size);\n\tfloat wc = BloomScan(pos, 0.0, texture_size);\n\tfloat wd = BloomScan(pos, 1.0, texture_size);\n\tfloat we = BloomScan(pos, 2.0, texture_size);\n\treturn a * wa + b * wb + c * wc + d * wd + e * we;\n}\n\n// Distortion of scanlines, and end of screen alpha.\nfloat2 Warp(float2 pos) {\n\tpos = pos * 2.0 - 1.0;\n\tpos *= float2(1.0 + (pos.y * pos.y) * warp.x, 1.0 + (pos.x * pos.x) * warp.y);\n\treturn pos * 0.5 + 0.5;\n}\n\n// Shadow mask \nfloat3 Mask(float2 pos) {\n\tfloat3 mask = float3(maskDark, maskDark, maskDark);\n\n\t// Very compressed TV style shadow mask.\n\tif (shadowMask == 1) {\n\t\tfloat mask_line = maskLight;\n\t\tfloat odd = 0.0;\n\t\tif (frac(pos.x / 6.0) < 0.5) odd = 1.0;\n\t\tif (frac((pos.y + odd) / 2.0) < 0.5) mask_line = maskDark;\n\t\tpos.x = frac(pos.x / 3.0);\n\n\t\tif (pos.x < 0.333)mask.r = maskLight;\n\t\telse if (pos.x < 0.666)mask.g = maskLight;\n\t\telse mask.b = maskLight;\n\t\tmask *= mask_line;\n\t}\n\n\t// Aperture-grille.\n\telse if (shadowMask == 2) {\n\t\tpos.x = frac(pos.x / 3.0);\n\n\t\tif (pos.x < 0.333)mask.r = maskLight;\n\t\telse if (pos.x < 0.666)mask.g = maskLight;\n\t\telse mask.b = maskLight;\n\t}\n\n\t// Stretched VGA style shadow mask (same as prior shaders).\n\telse if (shadowMask == 3) {\n\t\tpos.x += pos.y * 3.0;\n\t\tpos.x = frac(pos.x / 6.0);\n\n\t\tif (pos.x < 0.333)mask.r = maskLight;\n\t\telse if (pos.x < 0.666)mask.g = maskLight;\n\t\telse mask.b = maskLight;\n\t}\n\n\t// VGA style shadow mask.\n\telse if (shadowMask == 4) {\n\t\tpos.xy = floor(pos.xy * float2(1.0, 0.5));\n\t\tpos.x += pos.y * 3.0;\n\t\tpos.x = frac(pos.x / 6.0);\n\n\t\tif (pos.x < 0.333)mask.r = maskLight;\n\t\telse if (pos.x < 0.666)mask.g = maskLight;\n\t\telse mask.b = maskLight;\n\t}\n\n\treturn mask;\n}\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 pos = (gxy + 0.5f) * GetOutputPt();\n\n\tuint2 inputSize = GetInputSize();\n\tfloat2 pos1 = Warp(pos);\n\tfloat3 outColor = Tri(pos1, inputSize);\n\n#ifdef DO_BLOOM\n\t//Add Bloom\n\toutColor.rgb += Bloom(pos1, inputSize) * bloomAmount;\n#endif\n\n\tif (shadowMask) {\n\t\toutColor.rgb *= Mask(gxy + 0.5f);\n\t}\n\n\tOUTPUT[gxy] = float4(pow(outColor.rgb, 1.0f / 2.2f), 1);\n}\n"
  },
  {
    "path": "src/Effects/CRT/GTU_v050.hlsl",
    "content": "// GTU-v050\n// 移植自 https://github.com/libretro/common-shaders/tree/master/crt/shaders/gtu-v050\n\n////////////////////////////////////////////////////////\n// GTU version 0.50\n// Author: aliaspider - aliaspider@gmail.com\n// License: GPLv3\n////////////////////////////////////////////////////////\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!LABEL Composite Connection\n//!DEFAULT 0\n//!MIN 0\n//!MAX 1\n//!STEP 1\nint compositeConnection;\n\n//!PARAMETER\n//!LABEL No Scanlines\n//!DEFAULT 0\n//!MIN 0\n//!MAX 1\n//!STEP 1\nint noScanlines;\n\n//!PARAMETER\n//!LABEL Signal Resolution Y\n//!DEFAULT 256\n//!MIN 16\n//!MAX 1024\n//!STEP 16\nint signalResolution;\n\n//!PARAMETER\n//!LABEL Signal Resolution I\n//!DEFAULT 83\n//!MIN 1\n//!MAX 350\n//!STEP 1\nint signalResolutionI;\n\n//!PARAMETER\n//!LABEL Signal Resolution Q\n//!DEFAULT 25\n//!MIN 1\n//!MAX 350\n//!STEP 1\nint signalResolutionQ;\n\n//!PARAMETER\n//!LABEL TV Vertical Resolution\n//!DEFAULT 250\n//!MIN 20\n//!MAX 1000\n//!STEP 10\nint tvVerticalResolution;\n\n//!PARAMETER\n//!LABEL Black Level\n//!DEFAULT 0.07\n//!MIN -0.3\n//!MAX 0.3\n//!STEP 0.01\nfloat blackLevel;\n\n//!PARAMETER\n//!LABEL Contrast\n//!DEFAULT 1\n//!MIN 0\n//!MAX 2\n//!STEP 0.01\nfloat contrast;\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH OUTPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT tex1\n\n#define RGB_to_YIQ   transpose(float3x3( 0.299 , 0.595716 , 0.211456 , 0.587 , -0.274453 , -0.522591 , 0.114 , -0.321263 , 0.311135 ))\n#define YIQ_to_RGB   transpose(float3x3( 1.0 , 1.0  , 1.0 , 0.9563 , -0.2721 , -1.1070 , 0.6210 , -0.6474 , 1.7046 ))\n#define pi        3.14159265358\n\nfloat d(float x, float b) {\n\treturn pi * b * min(abs(x) + 0.5, 1.0 / b);\n}\n\nfloat e(float x, float b) {\n\treturn (pi * b * min(max(abs(x) - 0.5, -1.0 / b), 1.0 / b));\n}\n\nfloat STU(float x, float b) {\n\treturn ((d(x, b) + sin(d(x, b)) - e(x, b) - sin(e(x, b))) / (2.0 * pi));\n}\n\nfloat4 Pass1(float2 pos) {\n\tfloat2 inputSize = GetInputSize();\n\tfloat2 inputPt = GetInputPt();\n\n\tfloat offset = frac((pos.x * inputSize.x) - 0.5);\n\tfloat3   tempColor = 0;\n\tfloat    X;\n\tfloat3   c;\n\tfloat range;\n\tfloat i;\n\n\tif (compositeConnection) {\n\t\trange = ceil(0.5 + inputSize.x / min(min(signalResolution, signalResolutionI), signalResolutionQ));\n\n\t\tfor (i = -range; i < range + 2.0; i++) {\n\t\t\tX = (offset - (i));\n\t\t\tc = INPUT.SampleLevel(sam, float2(pos.x - X * inputPt.x, pos.y), 0).rgb;\n\t\t\tc = mul(RGB_to_YIQ, c);\n\t\t\ttempColor += float3((c.x * STU(X, (signalResolution * inputPt.x))), (c.y * STU(X, (signalResolutionI * inputPt.x))), (c.z * STU(X, (signalResolutionQ * inputPt.x))));\n\t\t}\n\n\t\ttempColor = clamp(mul(YIQ_to_RGB, tempColor), 0.0, 1.0);\n\t} else {\n\t\trange = ceil(0.5 + inputSize.x / signalResolution);\n\n\t\tfor (i = -range; i < range + 2.0; i++) {\n\t\t\tX = (offset - (i));\n\t\t\tc = INPUT.SampleLevel(sam, float2(pos.x - X * inputPt.x, pos.y), 0).rgb;\n\t\t\ttempColor += (c * STU(X, (signalResolution * inputPt.x)));\n\t\t}\n\n\t\ttempColor = clamp(tempColor, 0.0, 1.0);\n\t}\n\n\treturn float4(tempColor, 1.0);\n}\n\n\n//!PASS 2\n//!STYLE PS\n//!IN tex1\n//!OUT OUTPUT\n\n#define pi        3.14159265358\n#define normalGauss(x) ((exp(-(x)*(x)*0.5))/sqrt(2.0*pi))\n\nfloat normalGaussIntegral(float x) {\n\tfloat a1 = 0.4361836;\n\tfloat a2 = -0.1201676;\n\tfloat a3 = 0.9372980;\n\tfloat p = 0.3326700;\n\tfloat t = 1.0 / (1.0 + p * abs(x));\n\treturn (0.5 - normalGauss(x) * (t * (a1 + t * (a2 + a3 * t)))) * sign(x);\n}\n\nfloat3 scanlines(float x, float3 c) {\n\tfloat inputHeight = GetInputSize().y;\n\tfloat inputPtY = GetInputPt().y;\n\tfloat outputHeight = GetOutputSize().y;\n\tfloat outputPtY = GetOutputPt().y;\n\n\tfloat temp = sqrt(2 * pi) * (tvVerticalResolution * inputPtY);\n\n\tfloat rrr = 0.5 * (inputHeight  * outputPtY);\n\tfloat x1 = (x + rrr) * temp;\n\tfloat x2 = (x - rrr) * temp;\n\tc.r = (c.r * (normalGaussIntegral(x1) - normalGaussIntegral(x2)));\n\tc.g = (c.g * (normalGaussIntegral(x1) - normalGaussIntegral(x2)));\n\tc.b = (c.b * (normalGaussIntegral(x1) - normalGaussIntegral(x2)));\n\tc *= GetScale().y;\n\treturn c;\n}\n\n\nfloat d(float x, float b) {\n\treturn pi * b * min(abs(x) + 0.5, 1.0 / b);\n}\n\nfloat e(float x, float b) {\n\treturn (pi * b * min(max(abs(x) - 0.5, -1.0 / b), 1.0 / b));\n}\n\nfloat STU(float x, float b) {\n\treturn ((d(x, b) + sin(d(x, b)) - e(x, b) - sin(e(x, b))) / (2.0 * pi));\n}\n\nfloat4 Pass2(float2 pos) {\n\tuint2 inputSize = GetInputSize();\n\tfloat2 inputPt = GetInputPt();\n\n\tfloat2   offset = frac((pos * uint2(GetOutputSize().x, inputSize.y)) - 0.5);\n\tfloat3   tempColor = 0;\n\tfloat3\tCj;\n\n\tfloat range = ceil(0.5 + inputSize.y / tvVerticalResolution);\n\n\tfloat i;\n\n\tif (noScanlines) {\n\t\tfor (i = -range; i < range + 2.0; i++) {\n\t\t\tCj = tex1.SampleLevel(sam, float2(pos.x, pos.y - (offset.y - (i)) * inputPt.y), 0).xyz;\n\t\t\ttempColor += Cj * STU(offset.y - (i), (tvVerticalResolution * inputPt.y));\n\t\t}\n\t} else {\n\t\tfor (i = -range; i < range + 2.0; i++) {\n\t\t\tCj = tex1.SampleLevel(sam, float2(pos.x, pos.y - (offset.y - (i)) * inputPt.y), 0).xyz;\n\t\t\ttempColor += scanlines(offset.y - (i), Cj);\n\t\t}\n\t}\n\n\ttempColor -= blackLevel;\n\ttempColor *= contrast / (1.0 - blackLevel);\n\treturn float4(tempColor, 1.0);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-16x16C-NVL-DN.hlsl",
    "content": "// CuNNy 16x16C BILINEAR RGB NVL DN - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-DN-D16N16\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t7;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) (dot(MF3(1.813e-01, 3.616e-01, 7.758e-02), O(INPUT, float2(x, y)).rgb) + MF(-1.943e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 2.289e-02, -9.738e-03, -1.114e-02, -6.420e-03 };\n\tr = mad(s0_0, V4(-7.980e-03, -3.076e-02, -4.968e-02, -5.507e-02), r);\n\tr = mad(s0_1, V4(-1.630e-03, 9.011e-02, 1.569e-01, -1.171e-01), r);\n\tr = mad(s0_2, V4(6.748e-03, 3.943e-02, -2.483e-02, 8.049e-02), r);\n\tr = mad(s0_3, V4(1.366e-02, 7.292e-03, 1.892e-01, -7.788e-02), r);\n\tr = mad(s0_4, V4(-1.200e-01, -4.487e-01, -6.842e-02, 5.161e-02), r);\n\tr = mad(s0_5, V4(-6.519e-02, 2.036e-01, -1.251e-02, 1.274e-01), r);\n\tr = mad(s0_6, V4(-3.159e-02, 2.875e-02, -1.077e-01, 1.257e-02), r);\n\tr = mad(s0_7, V4(2.857e-01, -6.175e-02, -1.141e-01, 1.544e-01), r);\n\tr = mad(s0_8, V4(4.700e-02, 1.641e-01, 1.432e-02, -1.952e-01), r);\n\treturn r;\n}\n\nV4 f1(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 1.315e-02, -4.822e-02, 1.570e-03, 1.289e-02 };\n\tr = mad(s0_0, V4(2.687e-01, -3.137e-02, 2.714e-02, -4.394e-02), r);\n\tr = mad(s0_1, V4(2.045e-02, 8.505e-02, -4.982e-03, -9.058e-02), r);\n\tr = mad(s0_2, V4(6.386e-02, -5.317e-02, -6.019e-02, -6.573e-03), r);\n\tr = mad(s0_3, V4(-1.215e-01, -1.615e-02, 9.762e-02, 9.438e-02), r);\n\tr = mad(s0_4, V4(-7.273e-02, -8.166e-02, -1.773e-01, 1.022e-01), r);\n\tr = mad(s0_5, V4(-1.313e-01, -2.619e-01, 1.178e-01, 4.578e-02), r);\n\tr = mad(s0_6, V4(1.567e-01, 7.322e-02, -6.227e-02, -2.403e-03), r);\n\tr = mad(s0_7, V4(-2.226e-01, -9.741e-02, -2.121e-02, -7.671e-02), r);\n\tr = mad(s0_8, V4(2.273e-02, 1.006e-01, 2.815e-02, -3.005e-02), r);\n\treturn r;\n}\n\nV4 f2(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 8.704e-03, 3.978e-02, -2.434e-02, 9.064e-03 };\n\tr = mad(s0_0, V4(-1.161e-02, 9.096e-02, 1.460e-01, 9.043e-02), r);\n\tr = mad(s0_1, V4(4.599e-02, 1.247e-01, 1.297e-02, 2.141e-01), r);\n\tr = mad(s0_2, V4(-7.605e-03, -8.120e-02, 8.736e-02, 6.155e-02), r);\n\tr = mad(s0_3, V4(9.851e-02, -1.175e-02, -4.543e-03, -1.553e-01), r);\n\tr = mad(s0_4, V4(-1.685e-01, 1.256e-01, -2.056e-01, -6.121e-02), r);\n\tr = mad(s0_5, V4(4.006e-03, 6.040e-02, -1.224e-02, 1.277e-01), r);\n\tr = mad(s0_6, V4(4.245e-02, 3.785e-02, 8.967e-02, -1.193e-01), r);\n\tr = mad(s0_7, V4(-2.506e-02, -2.161e-03, -2.012e-01, -1.872e-01), r);\n\tr = mad(s0_8, V4(5.837e-02, -1.905e-02, -9.231e-02, 2.377e-02), r);\n\treturn r;\n}\n\nV4 f3(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 1.194e-02, 7.492e-03, -1.938e-01, 6.217e-03 };\n\tr = mad(s0_0, V4(2.014e-03, -5.120e-03, 1.469e-01, -2.760e-03), r);\n\tr = mad(s0_1, V4(6.458e-03, -3.387e-02, 1.152e-01, -1.061e-01), r);\n\tr = mad(s0_2, V4(-6.233e-03, 7.249e-02, 2.964e-03, 9.741e-02), r);\n\tr = mad(s0_3, V4(-4.754e-03, -1.019e-01, 2.455e-01, -8.219e-02), r);\n\tr = mad(s0_4, V4(6.881e-03, 1.177e-01, 2.419e-02, 4.032e-02), r);\n\tr = mad(s0_5, V4(2.764e-01, -9.610e-02, -5.004e-02, 1.126e-01), r);\n\tr = mad(s0_6, V4(1.787e-02, 1.606e-01, 1.749e-02, -1.304e-01), r);\n\tr = mad(s0_7, V4(-2.934e-02, -9.155e-02, -5.788e-02, -2.840e-02), r);\n\tr = mad(s0_8, V4(-2.607e-01, 5.171e-03, 2.436e-02, 1.191e-01), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.169e-02, -7.251e-02, -1.396e-01, 3.650e-02 };\n\tr = MulAdd(s0_0, M4(8.232e-03, -1.263e-02, 1.604e-02, 1.024e-01, -3.414e-01, -6.902e-02, -2.683e-02, -9.299e-02, -7.921e-02, -9.931e-02, 1.531e-02, 2.957e-02, 1.157e-01, 1.279e-01, -1.983e-02, -2.226e-01), r);\n\tr = MulAdd(s0_1, M4(4.282e-02, 4.810e-02, 2.519e-02, -2.683e-02, -2.278e-01, 1.087e-01, 2.035e-01, -2.022e-02, -4.101e-02, -2.410e-01, -1.590e-01, -1.869e-01, 2.409e-01, -7.862e-02, 5.305e-02, -2.379e-01), r);\n\tr = MulAdd(s0_2, M4(6.824e-02, 4.298e-03, -3.620e-02, 6.571e-02, 1.014e-01, -6.163e-02, -4.906e-03, 1.129e-01, -4.051e-01, 1.088e-01, 4.718e-02, 9.828e-02, 2.015e-01, -1.438e-01, -3.376e-02, -3.588e-01), r);\n\tr = MulAdd(s0_3, M4(-1.032e-01, -3.451e-02, 1.023e-01, 1.668e-01, -3.269e-02, 1.371e-01, 2.365e-01, 1.415e-02, 1.336e-01, 2.168e-01, 1.946e-02, -8.461e-02, -7.150e-02, -3.241e-01, -6.226e-02, -1.517e-01), r);\n\tr = MulAdd(s0_4, M4(-3.957e-02, 1.035e-01, 2.231e-01, 1.377e-01, -1.762e-01, -8.220e-02, -6.978e-02, 2.561e-01, -9.208e-02, -1.297e-01, 3.774e-02, -2.095e-01, -1.958e-03, -3.276e-01, 1.283e-01, -1.089e-01), r);\n\tr = MulAdd(s0_5, M4(5.492e-03, 6.888e-02, 4.573e-04, 1.222e-03, -7.004e-02, 1.235e-01, 7.911e-02, 1.326e-01, 1.109e-01, -5.032e-02, 2.981e-02, -7.277e-02, -1.899e-01, -3.998e-01, 3.372e-02, 1.580e-02), r);\n\tr = MulAdd(s0_6, M4(9.754e-02, -2.830e-02, -5.702e-02, 5.207e-02, -3.047e-01, -2.664e-01, -1.230e-02, 8.129e-02, 1.607e-02, -1.711e-01, -2.426e-02, -1.682e-01, -1.057e-01, 5.643e-02, 8.680e-02, 7.754e-02), r);\n\tr = MulAdd(s0_7, M4(-3.861e-02, 6.737e-02, -1.089e-01, -8.752e-02, -3.457e-01, -1.598e-01, -8.906e-03, 7.005e-02, -1.116e-01, 1.432e-01, -3.431e-02, -1.621e-01, 7.981e-02, 5.537e-02, -1.455e-01, 4.108e-01), r);\n\tr = MulAdd(s0_8, M4(3.274e-02, 7.273e-03, -4.861e-02, -5.922e-02, 1.132e-01, 2.571e-02, 1.105e-01, 6.493e-04, -2.355e-01, -1.652e-01, -9.999e-02, -2.700e-01, -1.294e-01, 5.101e-02, -1.395e-01, -7.676e-02), r);\n\tr = MulAdd(s1_0, M4(-2.194e-03, -7.369e-02, -1.714e-01, -1.710e-01, -7.343e-02, -2.065e-02, -6.641e-02, -5.477e-02, 1.710e-01, -1.409e-01, -1.086e-02, -2.295e-02, 1.003e-01, -1.355e-01, 8.370e-02, -3.968e-02), r);\n\tr = MulAdd(s1_1, M4(1.456e-01, -2.707e-01, 5.298e-02, -4.356e-01, -4.610e-02, -1.830e-01, 8.627e-02, -7.877e-02, -1.260e-01, 3.420e-02, -4.331e-02, 6.292e-02, -1.356e-01, 3.717e-02, 9.696e-03, 1.419e-01), r);\n\tr = MulAdd(s1_2, M4(-4.370e-02, 1.515e-01, -1.471e-01, 5.180e-02, 1.941e-01, -3.475e-02, -2.119e-02, 4.992e-02, -7.970e-02, 1.016e-01, 4.215e-02, -6.728e-02, -9.104e-02, 1.109e-01, 2.284e-02, 1.356e-01), r);\n\tr = MulAdd(s1_3, M4(-4.121e-01, 2.762e-01, -1.719e-01, 3.415e-02, 1.492e-01, 2.398e-01, 1.802e-01, -1.359e-01, 1.048e-01, -1.091e-01, 5.598e-02, 5.408e-02, 8.922e-02, 1.237e-01, -1.087e-01, -2.341e-02), r);\n\tr = MulAdd(s1_4, M4(-4.086e-01, 3.231e-02, -8.000e-01, 1.567e-01, -3.440e-02, 1.166e-01, -8.848e-02, 2.378e-01, -5.513e-02, -6.543e-03, -9.741e-02, -3.948e-02, 1.110e-01, -7.642e-02, 6.105e-02, 1.034e-01), r);\n\tr = MulAdd(s1_5, M4(-2.552e-01, 4.160e-02, 1.345e-01, 2.989e-02, -8.820e-02, -3.577e-02, 1.492e-01, -4.709e-02, -4.680e-02, -1.114e-01, 3.098e-02, -5.875e-02, 5.616e-02, -6.438e-03, 4.510e-02, 1.104e-02), r);\n\tr = MulAdd(s1_6, M4(-3.260e-01, -2.310e-02, 9.558e-04, -8.444e-02, -1.877e-01, 9.342e-02, 1.272e-01, -2.466e-01, 1.322e-01, 1.308e-02, -1.377e-02, 5.056e-02, -1.029e-01, -8.177e-02, 6.398e-02, -9.232e-02), r);\n\tr = MulAdd(s1_7, M4(-4.628e-01, -2.434e-01, -1.955e-02, -1.592e-01, -1.218e-01, 1.512e-01, -3.348e-01, -1.380e-01, -5.974e-02, 6.669e-02, 2.932e-02, 7.818e-02, -9.201e-02, 9.057e-02, -5.445e-02, -2.324e-02), r);\n\tr = MulAdd(s1_8, M4(-1.298e-01, -3.600e-01, -1.398e-02, 2.785e-01, 3.239e-02, 1.024e-01, 4.002e-02, -1.654e-01, 1.207e-01, 1.935e-01, 2.551e-02, -3.661e-03, 7.205e-02, -5.778e-02, -4.316e-02, -1.053e-01), r);\n\tr = MulAdd(s2_0, M4(-7.089e-02, -8.723e-02, 5.822e-02, -1.300e-01, -2.327e-01, -1.664e-01, 5.151e-02, 7.662e-02, -2.503e-03, 1.583e-01, -7.790e-02, -2.311e-02, -4.394e-03, -6.863e-02, -7.991e-02, 6.175e-02), r);\n\tr = MulAdd(s2_1, M4(-1.789e-01, -5.748e-02, 6.327e-02, -4.628e-02, -1.190e-02, -5.142e-02, -1.517e-01, 3.932e-01, -1.007e-02, 3.506e-01, -3.729e-02, -2.814e-02, 8.168e-02, 4.268e-02, -1.572e-02, 6.749e-02), r);\n\tr = MulAdd(s2_2, M4(-6.394e-02, 6.625e-02, -3.661e-02, -3.363e-02, -1.152e-01, 9.530e-02, 1.485e-01, 1.582e-01, -2.685e-01, 6.743e-02, 1.000e-01, 1.363e-01, -2.344e-02, 1.054e-01, -9.292e-03, -3.414e-02), r);\n\tr = MulAdd(s2_3, M4(-1.325e-02, 5.769e-02, 9.497e-02, -1.102e-01, -8.531e-02, 4.940e-01, -2.478e-01, 5.556e-02, 1.253e-01, 1.196e-01, -7.608e-02, -9.433e-02, -2.328e-01, 5.913e-02, 2.705e-02, 6.825e-02), r);\n\tr = MulAdd(s2_4, M4(-2.225e-02, 2.734e-02, -2.433e-01, -4.216e-02, 1.270e-01, 5.062e-01, 7.176e-02, 3.093e-01, 1.390e-01, 1.153e-02, 6.485e-02, 5.247e-02, -1.734e-02, -6.897e-02, -5.755e-02, -5.145e-02), r);\n\tr = MulAdd(s2_5, M4(-4.082e-02, 1.448e-01, 9.686e-02, 3.773e-02, -1.496e-02, 3.650e-01, 6.160e-02, -2.780e-02, -1.849e-01, 4.693e-02, -1.304e-01, -1.975e-01, 1.455e-01, -1.066e-01, -2.135e-02, -4.541e-02), r);\n\tr = MulAdd(s2_6, M4(-1.796e-02, -7.124e-02, -5.399e-02, 6.812e-02, 1.207e-01, 4.614e-01, 1.302e+00, -2.446e-01, -2.134e-01, -9.068e-02, -8.372e-02, -2.020e-02, -1.306e-01, 1.112e-01, 1.321e-02, 7.761e-02), r);\n\tr = MulAdd(s2_7, M4(4.480e-02, 6.023e-02, -1.196e-01, 4.332e-02, 3.713e-01, 3.954e-01, 8.121e-01, -3.093e-01, 2.232e-01, 5.831e-02, -4.077e-02, -1.415e-01, 1.256e-01, -9.794e-03, 6.676e-02, 8.091e-03), r);\n\tr = MulAdd(s2_8, M4(-6.303e-02, 1.297e-01, -2.822e-01, 1.475e-01, 1.822e-01, 2.403e-01, 6.199e-01, 1.607e-01, -1.782e-02, 6.645e-02, -3.818e-02, 4.054e-01, 1.471e-01, -1.032e-01, 4.629e-02, 2.921e-02), r);\n\tr = MulAdd(s3_0, M4(2.935e-01, 1.957e-01, -2.266e-02, 3.264e-02, -3.908e-02, 1.400e-01, -6.904e-02, -1.184e-01, 1.400e-01, -3.520e-02, -5.787e-02, -3.441e-02, 2.693e-02, -1.742e-01, -2.707e-02, 1.949e-02), r);\n\tr = MulAdd(s3_1, M4(-2.875e-02, -6.801e-02, 4.792e-03, 1.226e-02, 1.318e-03, -3.648e-02, -2.690e-02, 5.585e-03, 4.851e-02, 4.054e-03, 7.015e-02, 8.548e-02, -6.633e-02, 4.076e-01, 8.485e-03, -2.852e-01), r);\n\tr = MulAdd(s3_2, M4(2.192e-03, -1.598e-02, -5.636e-02, -1.786e-02, -8.461e-03, -7.038e-02, -4.633e-02, 7.459e-02, -4.072e-02, -2.260e-02, -2.599e-02, -1.689e-01, -2.695e-01, 3.035e-01, 1.049e-01, -5.409e-02), r);\n\tr = MulAdd(s3_3, M4(1.142e-01, 1.198e-01, 3.545e-02, 1.778e-01, 9.564e-03, -4.826e-02, 7.830e-02, 1.123e-01, 2.424e-02, 9.883e-02, 3.808e-02, 9.802e-03, -7.263e-02, 2.442e-01, 1.354e-02, -8.291e-03), r);\n\tr = MulAdd(s3_4, M4(-8.273e-02, -1.434e-01, -2.165e-01, 1.566e-01, -5.180e-02, 4.937e-02, 5.564e-03, 1.229e-01, -4.729e-02, -1.214e-01, 3.427e-02, 9.345e-02, -2.942e-01, -5.558e-02, -4.219e-01, -1.772e-01), r);\n\tr = MulAdd(s3_5, M4(5.593e-02, 1.818e-02, 2.035e-01, 1.659e-01, -4.378e-02, -6.190e-02, -8.371e-02, 2.842e-02, 4.158e-02, -8.044e-02, 2.686e-02, 4.061e-02, -1.102e-01, 3.095e-01, -7.692e-02, 3.397e-03), r);\n\tr = MulAdd(s3_6, M4(-7.776e-02, 2.238e-01, -1.441e-01, 4.501e-02, 2.254e-01, -1.272e-01, 1.171e-02, 1.119e-02, -7.533e-02, 1.687e-01, -1.100e-03, 1.080e-03, -2.423e-02, -3.446e-01, -2.180e-01, -9.774e-03), r);\n\tr = MulAdd(s3_7, M4(5.486e-02, -1.573e-01, -9.305e-02, -6.218e-02, 5.573e-02, -7.214e-02, -1.015e-01, -7.444e-03, -4.333e-02, -2.102e-01, -7.572e-02, -9.376e-02, -3.271e-01, 1.398e-01, 7.296e-01, 6.384e-02), r);\n\tr = MulAdd(s3_8, M4(1.001e-01, -2.694e-01, -4.672e-02, -1.425e-01, -7.395e-02, -5.039e-03, -2.449e-02, -3.480e-03, 2.517e-02, -2.365e-02, -2.376e-02, -4.630e-03, 1.519e-01, -4.867e-02, 9.130e-02, 4.954e-02), r);\n\tr = MulAdd(s4_0, M4(-1.190e-02, 3.105e-02, -5.302e-02, 2.839e-02, -1.766e-01, -2.932e-02, 3.040e-02, 4.314e-02, 2.831e-01, 2.573e-01, -4.039e-02, 2.720e-01, 9.287e-02, 4.324e-02, 3.882e-03, 1.599e-01), r);\n\tr = MulAdd(s4_1, M4(8.672e-03, -5.654e-02, 1.299e-02, -1.554e-02, 5.415e-02, -4.059e-02, 3.943e-02, 2.054e-02, 3.076e-01, 3.693e-01, -2.222e-01, 1.096e-01, -6.335e-02, -2.677e-02, 1.427e-02, -9.692e-02), r);\n\tr = MulAdd(s4_2, M4(1.783e-01, -3.502e-02, 7.618e-03, 7.304e-02, 9.326e-02, 8.295e-03, -1.252e-02, -2.887e-03, -3.823e-01, 4.908e-02, 2.382e-02, -3.313e-02, 5.280e-02, -4.991e-02, -7.152e-03, -1.737e-01), r);\n\tr = MulAdd(s4_3, M4(-5.825e-02, 1.393e-01, -3.566e-02, 6.874e-02, -1.361e-01, 9.102e-02, -4.185e-02, -4.120e-02, -2.030e-01, 1.278e-01, -6.667e-02, -3.361e-02, 1.890e-01, 1.746e-01, 8.857e-02, 3.206e-02), r);\n\tr = MulAdd(s4_4, M4(-5.837e-02, -4.659e-02, -1.099e-02, 9.193e-02, 1.919e-01, 9.881e-02, 2.039e-02, -6.581e-02, -1.028e-01, 2.360e-01, 6.861e-02, 8.700e-02, 8.960e-02, 1.889e-02, -1.942e-01, 3.711e-02), r);\n\tr = MulAdd(s4_5, M4(1.235e-01, -6.465e-02, 6.970e-03, -1.458e-01, 1.019e-02, 7.978e-02, 1.156e-01, -1.568e-01, -3.517e-01, -1.489e-01, -7.682e-02, 2.566e-01, -3.646e-03, 8.862e-02, -4.665e-02, -1.264e-01), r);\n\tr = MulAdd(s4_6, M4(-1.168e-01, 7.567e-02, 4.442e-02, -1.496e-01, 2.950e-02, 2.805e-02, 1.348e-01, -6.303e-03, -2.002e-02, -7.925e-02, 1.072e-01, 1.361e-01, 9.353e-02, -5.266e-03, 3.989e-03, 8.648e-02), r);\n\tr = MulAdd(s4_7, M4(6.570e-02, 3.402e-02, 1.471e-04, -4.474e-02, -4.834e-03, -5.764e-02, 8.183e-02, -9.186e-02, 5.233e-02, 2.400e-01, 3.102e-01, -3.024e-02, -7.292e-02, 1.583e-02, -4.936e-02, -2.610e-01), r);\n\tr = MulAdd(s4_8, M4(-3.826e-03, -6.294e-02, 2.547e-02, -2.491e-02, -5.972e-02, 2.935e-02, 1.576e-02, -9.063e-02, 2.044e-02, 6.679e-03, 1.096e-03, 2.228e-01, -2.407e-01, 1.354e-01, -7.616e-02, 9.792e-02), r);\n\tr = MulAdd(s5_0, M4(5.608e-03, 8.229e-03, -2.456e-02, -1.006e-01, -4.599e-01, -8.566e-02, -1.052e-01, 3.307e-01, -4.093e-02, -2.267e-02, 1.253e-02, -6.191e-02, 8.924e-02, 8.230e-02, 1.199e-02, 5.318e-02), r);\n\tr = MulAdd(s5_1, M4(-2.619e-01, -4.897e-01, 1.833e-02, -2.030e-01, -1.539e-01, -1.435e-01, -2.970e-01, -6.604e-02, -1.095e-01, -3.638e-03, -1.213e-01, 1.524e-02, 2.464e-02, -1.593e-01, -2.723e-02, 1.168e-01), r);\n\tr = MulAdd(s5_2, M4(-1.785e-01, 2.530e-01, -2.439e-01, 2.566e-01, 1.387e-01, -1.182e-01, -3.776e-01, -4.125e-01, -3.954e-02, 1.032e-01, 7.002e-02, 2.044e-01, -4.406e-02, -8.684e-03, 1.155e-02, -2.161e-01), r);\n\tr = MulAdd(s5_3, M4(-1.777e-01, -2.579e-01, -4.535e-02, 2.068e-01, -9.316e-02, -4.666e-01, -9.052e-02, 6.572e-02, 1.703e-01, -1.078e-01, -5.785e-02, -6.235e-02, -1.023e-01, -8.569e-02, 6.376e-02, -3.068e-01), r);\n\tr = MulAdd(s5_4, M4(-4.940e-01, 3.483e-01, -6.921e-02, 2.380e-01, 1.427e-01, -6.275e-01, -4.544e-01, -3.053e-01, -5.621e-02, 1.289e-01, -1.396e-01, 6.402e-02, 1.020e-01, -8.552e-02, -1.554e-01, 5.649e-02), r);\n\tr = MulAdd(s5_5, M4(9.104e-03, -3.946e-02, -3.489e-01, 3.821e-02, 1.626e-01, -5.198e-01, -5.062e-01, -6.730e-02, 8.234e-03, 8.062e-02, -2.827e-02, 7.927e-02, -5.086e-02, 2.596e-02, -1.753e-01, -3.009e-02), r);\n\tr = MulAdd(s5_6, M4(-3.913e-01, 1.101e-01, 1.442e-01, 7.216e-02, -2.240e-01, -7.264e-01, -4.422e-01, 5.701e-01, -1.410e-01, 3.260e-02, -4.088e-02, -2.344e-02, 8.190e-03, -9.536e-02, 5.690e-02, 1.618e-02), r);\n\tr = MulAdd(s5_7, M4(-9.386e-01, -1.086e-01, -1.548e-01, 8.514e-04, -8.171e-02, -8.063e-01, -1.166e+00, -2.847e-01, -5.213e-02, -1.733e-01, -1.278e-01, 4.072e-04, 2.080e-01, -1.636e-01, 8.938e-02, 1.357e-01), r);\n\tr = MulAdd(s5_8, M4(-3.893e-01, 2.112e-01, 2.145e-01, 3.330e-01, -1.034e-01, -6.189e-01, -8.157e-01, -2.690e-01, 3.968e-02, -5.141e-02, 2.373e-02, 7.592e-02, -9.925e-02, -2.414e-02, -2.636e-02, 2.153e-02), r);\n\tr = MulAdd(s6_0, M4(1.136e-01, 8.093e-02, -9.985e-02, 1.499e-02, -6.009e-02, 1.862e-02, -5.180e-02, 1.059e-02, 2.233e-01, -8.905e-01, 1.255e-01, -1.679e-01, 1.036e-01, 9.730e-02, -6.267e-02, -5.428e-02), r);\n\tr = MulAdd(s6_1, M4(-2.109e-03, 6.298e-02, 3.134e-03, -1.532e-01, -1.769e-01, -1.546e-01, 3.674e-02, -8.395e-02, 3.887e-01, 3.715e-01, 2.054e-01, -7.510e-01, 1.340e-01, -1.268e-02, -5.245e-02, 7.880e-02), r);\n\tr = MulAdd(s6_2, M4(-1.101e-01, -2.842e-02, -1.595e-04, 5.668e-02, 7.653e-02, 1.617e-02, -6.329e-02, 9.278e-02, 4.830e-01, 2.833e-02, 4.292e-01, -2.053e-01, 2.326e-02, 1.637e-01, -1.947e-02, -8.910e-02), r);\n\tr = MulAdd(s6_3, M4(-1.725e-02, 1.329e-01, -2.409e-01, -1.431e-01, -6.088e-02, -1.209e-01, 6.302e-03, -4.155e-03, 2.497e-01, -1.025e+00, 1.091e-01, -8.530e-01, -1.597e-01, -1.489e-01, 1.854e-01, -6.847e-02), r);\n\tr = MulAdd(s6_4, M4(8.771e-02, -1.043e-01, -6.309e-02, -3.651e-03, -9.639e-02, -1.604e-02, -8.599e-02, -2.125e-02, -1.450e-01, 2.313e-01, 1.777e-01, -5.452e-01, -2.405e-03, -1.849e-01, 4.595e-02, 2.129e-03), r);\n\tr = MulAdd(s6_5, M4(6.450e-02, -4.157e-02, 1.194e-01, 1.012e-01, 1.620e-01, 1.771e-01, 8.360e-02, 1.448e-02, 1.998e-01, 5.925e-01, 4.185e-01, -5.502e-01, 8.328e-02, -4.896e-02, -1.595e-01, -1.282e-02), r);\n\tr = MulAdd(s6_6, M4(-1.301e-01, -5.223e-02, 1.743e-01, 1.901e-01, -1.524e-01, 1.624e-01, 2.464e-02, -2.137e-02, -4.599e-01, 4.252e-02, 4.269e-01, -8.681e-01, -3.066e-01, 4.993e-02, 1.657e-02, 1.455e-02), r);\n\tr = MulAdd(s6_7, M4(7.055e-02, -1.138e-02, -3.697e-02, 6.304e-02, 7.056e-02, 8.624e-02, 3.157e-02, 1.738e-03, -5.091e-02, -1.116e-01, 6.074e-01, -8.667e-01, 4.539e-02, -1.009e-02, 3.756e-02, 2.695e-02), r);\n\tr = MulAdd(s6_8, M4(2.303e-03, -2.149e-02, 8.215e-02, 9.044e-02, 1.001e-01, -1.099e-01, 2.439e-02, -6.588e-02, 1.238e+00, 1.123e-01, 1.204e+00, -5.638e-01, 4.821e-02, 2.375e-03, -5.836e-03, 3.382e-02), r);\n\tr = MulAdd(s7_0, M4(2.280e-01, -4.209e-01, 6.084e-03, -2.358e-01, 1.567e-01, -1.142e-01, -2.985e-02, 1.016e-01, -6.077e-02, -3.948e-02, -7.984e-03, -6.340e-02, -2.348e-01, -6.651e-02, -3.006e-02, -1.758e-01), r);\n\tr = MulAdd(s7_1, M4(4.794e-02, -9.253e-02, -6.952e-02, 1.584e-01, -3.184e-01, 1.867e-01, 8.533e-02, 5.744e-03, 9.830e-03, 6.881e-02, 8.306e-02, 1.439e-01, -1.774e-01, -1.299e-01, 3.531e-02, 2.743e-01), r);\n\tr = MulAdd(s7_2, M4(2.150e-01, -9.738e-02, -2.491e-02, 1.611e-01, 5.285e-01, -1.843e-01, -9.378e-02, 5.800e-02, -1.332e-02, 2.594e-02, 4.409e-03, -2.908e-02, -1.850e-01, 5.331e-02, 1.562e-02, 2.035e-02), r);\n\tr = MulAdd(s7_3, M4(1.859e-02, -3.335e-03, -1.779e-01, -2.356e-02, -6.775e-02, -3.462e-01, 6.554e-03, 4.673e-01, -3.758e-02, -7.708e-02, 1.072e-01, 7.910e-02, -2.035e-01, -1.150e-01, 2.485e-01, 4.250e-02), r);\n\tr = MulAdd(s7_4, M4(1.317e-01, 4.584e-02, -1.015e-01, 1.026e-01, 2.818e-02, -6.962e-02, -2.352e-01, 8.511e-03, -1.362e-01, 1.974e-01, -4.170e-02, 5.235e-02, -8.838e-02, 6.127e-02, -5.776e-02, 2.008e-01), r);\n\tr = MulAdd(s7_5, M4(4.451e-02, 1.866e-01, 3.327e-02, -9.457e-02, 1.774e-01, -3.330e-01, -1.942e-02, -1.345e-01, -1.723e-02, -1.108e-01, 7.892e-02, 4.799e-02, 8.422e-02, 2.290e-02, -1.273e-01, -7.738e-02), r);\n\tr = MulAdd(s7_6, M4(9.301e-02, -9.386e-02, -1.273e-01, -2.132e-02, 8.577e-02, -5.984e-02, -3.506e-03, 3.370e-01, 1.480e-01, -1.095e-01, 1.172e-01, -3.318e-02, -7.578e-02, -1.567e-01, 9.427e-02, 8.845e-02), r);\n\tr = MulAdd(s7_7, M4(-3.632e-02, 1.124e-01, 8.124e-02, 1.514e-01, -2.447e-01, -7.509e-02, 1.311e-01, -5.810e-02, 5.562e-02, 1.533e-02, 1.313e-01, -3.108e-02, -9.952e-02, 7.539e-02, 2.049e-01, 3.185e-01), r);\n\tr = MulAdd(s7_8, M4(-9.766e-02, -1.952e-03, 4.433e-02, 1.406e-01, 6.114e-02, 1.562e-01, 1.502e-02, -2.778e-01, 6.818e-02, 8.618e-02, 1.895e-01, 7.110e-02, 4.375e-02, 5.454e-02, 9.155e-03, 1.353e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.017e-03, -3.288e-02, -1.861e-02, -1.819e-02 };\n\tr = MulAdd(s0_0, M4(-1.775e-01, -1.666e-02, 2.113e-02, -1.239e-01, 1.264e-02, 2.318e-01, -5.209e-03, 9.788e-02, 3.047e-01, -6.490e-02, -3.152e-02, -3.440e-01, -1.708e-01, 1.047e-01, 2.269e-01, -2.688e-02), r);\n\tr = MulAdd(s0_1, M4(7.222e-02, -1.354e-02, -9.023e-02, 7.743e-02, -1.774e-01, 1.933e-02, 1.082e-01, 1.154e-01, 7.841e-02, -1.001e-01, 2.004e-01, -3.504e-01, -2.600e-02, 6.343e-02, -2.025e-01, -1.070e-02), r);\n\tr = MulAdd(s0_2, M4(-1.828e-02, 2.302e-02, 3.921e-02, 3.057e-02, 6.901e-02, -1.374e-01, 1.080e-01, -6.520e-02, -1.584e-01, -2.177e-02, -9.491e-02, -1.289e-01, -1.461e-01, -2.556e-02, 1.921e-01, 1.474e-01), r);\n\tr = MulAdd(s0_3, M4(-1.343e-01, 6.336e-02, 1.862e-01, 9.577e-02, -4.924e-02, 1.149e-01, -3.575e-02, 2.123e-01, -1.659e-01, 9.363e-02, 3.628e-01, 3.677e-02, 2.087e-01, -1.171e-01, -1.263e-01, -3.249e-02), r);\n\tr = MulAdd(s0_4, M4(3.837e-02, -6.882e-02, 2.254e-01, 8.898e-02, -8.437e-02, -1.221e-01, 3.803e-01, -1.880e-01, -2.448e-01, -1.350e-01, 2.000e-01, 5.808e-02, 6.826e-02, 9.996e-03, -2.128e-01, 7.567e-03), r);\n\tr = MulAdd(s0_5, M4(3.019e-02, -3.115e-02, -3.425e-02, 3.495e-02, 8.757e-02, 1.741e-02, 7.830e-02, 2.187e-01, 3.421e-01, 1.835e-01, 1.304e-01, 2.987e-01, 5.425e-03, 5.812e-02, 3.939e-02, 8.306e-02), r);\n\tr = MulAdd(s0_6, M4(-1.755e-02, 1.265e-02, -6.516e-02, -4.036e-02, -1.449e-01, 8.036e-02, -9.509e-02, -2.841e-01, 6.021e-02, 1.190e-01, 3.651e-02, -1.777e-01, -8.464e-02, 7.716e-02, -5.514e-02, -3.438e-01), r);\n\tr = MulAdd(s0_7, M4(6.529e-02, 6.229e-02, -6.483e-02, -3.224e-02, 1.174e-02, -2.118e-01, -3.957e-01, -9.645e-02, 1.996e-01, -5.530e-02, -9.620e-03, -3.575e-02, -1.937e-01, -4.422e-02, -1.885e-01, -1.128e-01), r);\n\tr = MulAdd(s0_8, M4(-6.677e-02, 4.985e-03, 5.960e-05, -5.510e-02, -1.532e-03, -2.686e-02, 8.343e-02, 1.080e-01, 7.810e-02, 1.712e-01, -9.339e-03, 2.619e-02, 1.932e-01, -1.233e-01, 2.490e-02, -1.811e-01), r);\n\tr = MulAdd(s1_0, M4(1.961e-01, 1.267e-02, -1.162e-02, -9.608e-02, 2.658e-01, -5.419e-02, -1.469e-02, -1.295e-01, 7.791e-02, 9.548e-02, 7.228e-02, 1.439e-02, 7.483e-02, -8.509e-02, 1.010e-01, -6.508e-02), r);\n\tr = MulAdd(s1_1, M4(2.794e-01, 2.878e-01, -5.265e-01, 1.560e-01, -1.515e-01, 9.347e-02, 7.951e-02, -9.054e-02, 5.093e-02, -2.977e-02, 1.010e-01, 4.830e-03, 1.338e-02, 2.748e-02, -2.289e-01, -1.024e-01), r);\n\tr = MulAdd(s1_2, M4(7.681e-02, -8.505e-03, 3.200e-01, -5.171e-02, 1.745e-02, -5.962e-02, -4.359e-02, 6.329e-02, 1.122e-01, -6.580e-02, 1.511e-02, -2.182e-02, 1.381e-02, 5.334e-02, 9.869e-03, -3.874e-03), r);\n\tr = MulAdd(s1_3, M4(-5.790e-02, 4.297e-01, 2.180e-01, -3.490e-01, 5.206e-01, 1.042e-01, -2.797e-03, -8.630e-02, -5.800e-02, -1.127e-01, -1.039e-02, -6.326e-02, 4.866e-02, 4.524e-02, -1.471e-01, 5.535e-02), r);\n\tr = MulAdd(s1_4, M4(2.486e-02, 5.458e-01, -1.845e-01, -2.061e-01, -3.408e-01, 4.788e-03, 4.484e-01, -7.937e-02, -3.388e-02, 9.579e-02, -1.823e-01, 4.135e-02, 6.400e-02, 3.829e-03, -1.028e-02, -1.141e-01), r);\n\tr = MulAdd(s1_5, M4(-2.133e-01, -1.242e-01, -1.956e-01, 6.902e-02, 1.134e-02, 6.592e-02, 1.245e-01, 1.885e-01, 5.202e-02, 3.551e-02, -7.043e-02, -3.911e-02, -3.874e-02, -3.652e-02, 1.795e-01, 1.084e-01), r);\n\tr = MulAdd(s1_6, M4(-7.038e-02, -1.997e-02, -7.819e-02, -6.066e-02, 2.418e-01, -1.132e-01, -2.147e-02, 1.733e-01, 4.530e-02, 6.559e-02, -2.115e-02, 1.483e-01, -7.494e-02, -1.038e-01, 3.806e-02, 1.279e-01), r);\n\tr = MulAdd(s1_7, M4(-1.047e-01, 1.030e-01, -1.559e-01, -2.634e-01, -7.276e-02, -1.085e-01, -4.366e-01, -1.306e-01, 3.752e-02, -7.724e-02, -1.336e-01, -1.201e-01, 6.546e-02, 8.972e-02, 1.402e-01, 6.884e-02), r);\n\tr = MulAdd(s1_8, M4(-3.296e-02, -5.481e-02, -8.518e-02, 5.481e-02, -5.662e-02, -1.010e-01, -8.579e-02, -2.996e-02, -2.077e-02, -3.781e-02, 1.152e-01, 5.694e-02, -6.651e-02, -2.632e-02, 1.062e-02, -6.098e-02), r);\n\tr = MulAdd(s2_0, M4(6.375e-02, 5.409e-02, 4.370e-02, -3.229e-02, -9.817e-02, -1.247e-01, -1.783e-01, 2.652e-01, -1.650e-01, 6.811e-02, 1.056e-01, -1.367e-01, 9.807e-02, -3.406e-02, 2.187e-02, 2.229e-01), r);\n\tr = MulAdd(s2_1, M4(-1.144e-01, 3.300e-02, 1.841e-01, 2.472e-02, -3.033e-01, -5.392e-01, 4.039e-01, -7.624e-03, 1.104e-01, -4.457e-02, 1.784e-01, 2.715e-01, 2.169e-02, 1.997e-02, 3.160e-02, 1.185e-02), r);\n\tr = MulAdd(s2_2, M4(5.688e-02, -2.599e-02, -2.319e-01, -1.469e-01, 7.917e-02, 1.217e-01, -5.545e-02, -1.032e-01, -1.998e-01, 5.322e-02, 6.770e-03, -1.039e-01, -8.576e-02, -6.547e-02, -7.809e-02, -2.821e-01), r);\n\tr = MulAdd(s2_3, M4(1.753e-02, 2.562e-02, 3.190e-02, 5.736e-02, -5.852e-01, 3.539e-03, 3.772e-01, 1.215e-01, -3.855e-02, 2.189e-01, -1.070e-01, 4.810e-02, -2.566e-02, -1.954e-02, -6.151e-02, 6.944e-02), r);\n\tr = MulAdd(s2_4, M4(-6.889e-02, 3.412e-03, 6.761e-03, -2.931e-02, -6.143e-01, -3.518e-01, 5.373e-02, 7.054e-02, -1.948e-02, -1.110e-01, 1.130e-01, -8.545e-02, 2.696e-02, -3.268e-02, -9.364e-02, -4.108e-02), r);\n\tr = MulAdd(s2_5, M4(-1.225e-01, 6.195e-02, -1.952e-02, 9.308e-02, -2.384e-01, 1.145e-01, -1.627e-01, 2.213e-01, -1.555e-03, 9.597e-02, -1.522e-01, 1.507e-01, -2.537e-02, 1.745e-02, -7.436e-02, -1.538e-02), r);\n\tr = MulAdd(s2_6, M4(-3.516e-02, 1.166e-01, -1.581e-01, -7.152e-02, -2.311e-01, -5.554e-01, 1.196e-01, 9.133e-02, -5.553e-02, -7.650e-02, 6.208e-03, 9.953e-02, -3.923e-02, 1.282e-01, 8.115e-02, -9.125e-02), r);\n\tr = MulAdd(s2_7, M4(-4.273e-02, -1.592e-02, -2.201e-01, 1.755e-01, 2.373e-01, -3.873e-01, -2.481e-01, -2.088e-01, -3.757e-02, -6.478e-02, -1.204e-01, -4.478e-02, -3.462e-02, 2.490e-02, 1.454e-01, -2.777e-02), r);\n\tr = MulAdd(s2_8, M4(6.972e-03, -1.572e-01, -2.195e-01, -1.669e-01, 9.833e-02, -9.097e-02, -2.890e-01, 4.248e-01, -5.493e-02, 1.569e-01, -1.205e-01, -3.168e-02, -2.535e-02, 7.545e-02, 6.862e-02, 3.931e-02), r);\n\tr = MulAdd(s3_0, M4(7.353e-02, -3.805e-04, 3.388e-02, 1.743e-01, -4.692e-03, -5.937e-02, 2.209e-02, -2.106e-02, 4.100e-02, -7.074e-02, 3.180e-02, -9.841e-02, 3.646e-02, -5.433e-02, -1.609e-01, 8.015e-03), r);\n\tr = MulAdd(s3_1, M4(-1.315e-01, 1.033e-03, 1.096e-01, -7.715e-02, -1.812e-01, 1.179e-02, 1.870e-02, 3.131e-02, -2.752e-02, 1.077e-01, -9.963e-03, 1.084e-01, -6.595e-02, -2.094e-01, 1.140e-01, -4.945e-02), r);\n\tr = MulAdd(s3_2, M4(5.571e-02, 6.210e-02, -1.623e-02, 8.368e-03, -1.408e-01, -9.622e-03, 4.700e-02, 1.432e-02, -7.276e-03, 1.324e-02, 5.876e-02, -1.067e-01, -4.464e-02, -9.793e-02, -9.425e-02, -1.411e-01), r);\n\tr = MulAdd(s3_3, M4(-3.458e-02, -5.870e-02, 6.770e-02, 1.029e-02, 6.527e-02, -1.635e-02, 5.908e-02, -4.672e-02, 9.661e-02, -1.748e-02, -1.440e-01, -1.449e-01, -1.096e-01, -3.897e-02, -3.221e-02, -1.150e-01), r);\n\tr = MulAdd(s3_4, M4(1.564e-02, -8.144e-02, 5.939e-02, -4.613e-02, -1.032e-01, -7.433e-02, 1.248e-01, 1.520e-02, -4.192e-02, -1.883e-02, 1.772e-01, 5.885e-02, -1.387e-01, -1.972e-01, 1.235e-01, 7.554e-02), r);\n\tr = MulAdd(s3_5, M4(-1.157e-01, 4.967e-02, 1.229e-01, 1.896e-03, -1.007e-01, -4.251e-02, 5.625e-02, 9.364e-02, 6.603e-02, -7.735e-03, -6.559e-02, -1.652e-01, -4.909e-02, -1.829e-02, -1.763e-01, -3.099e-02), r);\n\tr = MulAdd(s3_6, M4(1.098e-02, 2.031e-01, 9.523e-02, 1.802e-01, -2.358e-02, -2.145e-02, -1.352e-01, -1.158e-01, 9.923e-02, 8.149e-03, 1.769e-02, 8.410e-02, -1.697e-01, 1.352e-01, 1.234e-01, 1.555e-01), r);\n\tr = MulAdd(s3_7, M4(2.095e-01, 3.668e-02, -1.419e-01, -1.490e-01, 5.141e-02, -1.244e-01, -5.789e-02, -2.059e-02, 2.748e-02, -3.486e-02, -7.727e-02, -5.393e-02, -1.747e-01, -1.610e-01, -1.276e-02, -9.515e-02), r);\n\tr = MulAdd(s3_8, M4(1.033e-02, -3.392e-02, -2.311e-01, -3.520e-02, 1.150e-01, -3.758e-02, 7.600e-03, 1.172e-01, -1.360e-02, 1.151e-02, -2.404e-02, 2.077e-01, 2.845e-01, -1.232e-01, -8.156e-02, -1.894e-01), r);\n\tr = MulAdd(s4_0, M4(-9.735e-02, -3.486e-02, -6.713e-02, -2.585e-02, -6.854e-02, 6.316e-02, 8.265e-03, -6.834e-02, 7.139e-02, -5.798e-02, 6.760e-02, -1.391e-01, 7.996e-02, -2.167e-02, -1.062e-01, 2.066e-01), r);\n\tr = MulAdd(s4_1, M4(-8.635e-02, 2.987e-02, -4.322e-02, -3.828e-02, 5.137e-03, 4.678e-02, -1.404e-01, 5.578e-02, -2.783e-01, -1.015e-01, 3.459e-01, -2.319e-01, 1.553e-01, 2.762e-04, 1.473e-01, 1.165e-01), r);\n\tr = MulAdd(s4_2, M4(-7.463e-02, -4.850e-02, -7.089e-02, -2.267e-02, -4.120e-02, -5.133e-02, -4.900e-02, 1.918e-02, -1.260e-01, 2.254e-03, -2.160e-01, 6.045e-02, 2.996e-02, -6.463e-03, -1.101e-02, 5.736e-02), r);\n\tr = MulAdd(s4_3, M4(1.193e-02, -2.418e-02, 4.533e-02, 5.430e-02, -9.467e-02, 3.288e-02, -5.260e-02, 8.023e-02, 1.474e-01, -4.439e-02, -8.914e-02, -1.458e-01, -3.892e-02, 8.081e-02, -9.803e-02, 1.021e-01), r);\n\tr = MulAdd(s4_4, M4(-2.304e-01, 1.246e-02, 1.935e-01, -1.178e-01, 1.601e-01, 4.687e-02, 4.043e-02, 8.424e-03, 7.338e-03, -1.905e-01, 1.704e-01, 1.178e-01, -3.089e-02, -1.439e-02, -1.412e-01, -1.774e-01), r);\n\tr = MulAdd(s4_5, M4(1.828e-02, -1.877e-03, 1.229e-02, 7.833e-02, 1.167e-02, 1.347e-01, -1.139e-02, -1.327e-02, -1.475e-01, 5.962e-02, -2.596e-01, -1.411e-01, 9.417e-02, 3.386e-02, -3.430e-02, -5.016e-02), r);\n\tr = MulAdd(s4_6, M4(1.449e-02, 2.653e-03, 2.908e-02, 6.208e-02, 6.766e-02, 1.268e-01, 1.136e-01, 1.258e-01, -1.932e-02, 3.102e-02, -1.572e-02, 3.379e-02, 5.706e-02, -4.562e-02, 7.471e-02, 5.423e-02), r);\n\tr = MulAdd(s4_7, M4(6.315e-02, -1.922e-02, -7.600e-02, -1.088e-01, 5.920e-02, 5.026e-02, 4.642e-02, 8.855e-02, 3.478e-02, -2.381e-01, -4.820e-02, -1.841e-01, 4.603e-02, 1.440e-02, -2.844e-01, -6.164e-02), r);\n\tr = MulAdd(s4_8, M4(5.340e-02, 3.927e-02, -3.356e-02, 9.408e-02, 6.674e-02, 1.403e-01, -1.937e-02, -3.005e-02, -1.384e-01, -7.463e-02, -2.501e-01, -1.620e-01, -9.500e-03, -1.138e-01, -1.036e-01, 2.868e-02), r);\n\tr = MulAdd(s5_0, M4(2.800e-01, -1.215e-01, -1.408e-01, -5.378e-01, 5.833e-03, 2.368e-02, -9.039e-03, -3.018e-01, 5.485e-02, 7.920e-02, 4.624e-02, -4.291e-02, 5.511e-02, -2.629e-02, -8.483e-02, -1.310e-02), r);\n\tr = MulAdd(s5_1, M4(2.315e-01, 2.562e-01, 5.922e-02, 5.734e-01, 1.729e-01, 2.301e-02, -1.977e-01, 1.018e-01, -1.037e-01, -6.595e-02, 6.467e-02, -1.063e-01, -2.122e-02, -1.615e-01, 5.164e-02, 5.493e-02), r);\n\tr = MulAdd(s5_2, M4(1.994e-02, -5.266e-02, -5.133e-02, -1.698e-01, 2.320e-01, 2.233e-01, -1.157e-01, 4.154e-01, -2.680e-02, -9.549e-02, 7.711e-03, 4.158e-02, 6.469e-02, 1.245e-01, -3.013e-02, -7.501e-04), r);\n\tr = MulAdd(s5_3, M4(2.144e-01, 1.362e-01, -2.548e-02, -1.641e-01, -2.607e-02, 1.424e-01, -1.871e-01, -2.545e-01, 1.510e-01, 4.586e-02, -1.526e-01, 1.189e-01, 1.640e-02, -7.506e-02, -5.653e-03, -3.108e-03), r);\n\tr = MulAdd(s5_4, M4(-1.110e-01, -8.102e-02, 1.704e-01, 1.739e-01, 8.720e-02, -2.242e-02, -1.892e-01, -3.763e-01, -1.164e-01, -4.511e-02, 1.446e-01, -4.661e-03, -3.799e-02, -1.243e-01, -8.787e-03, -1.173e-01), r);\n\tr = MulAdd(s5_5, M4(2.429e-01, -4.189e-03, -1.239e-01, 7.303e-02, -3.365e-04, 2.011e-01, -1.538e-01, -4.140e-02, -1.297e-01, -6.552e-02, -3.407e-04, 5.280e-02, -1.188e-01, 1.448e-02, 6.314e-02, 6.178e-02), r);\n\tr = MulAdd(s5_6, M4(2.389e-01, 3.353e-02, 9.744e-02, -4.271e-01, -3.359e-01, 1.520e-01, 7.034e-02, 6.372e-02, 1.122e-01, -6.739e-02, -1.923e-01, 7.455e-02, -3.936e-02, -2.021e-02, 1.964e-02, 1.082e-01), r);\n\tr = MulAdd(s5_7, M4(2.993e-01, 9.326e-02, 2.733e-02, 2.784e-01, -8.332e-02, 2.112e-01, 1.602e-01, 6.696e-02, -9.538e-03, -1.055e-01, -1.819e-01, 5.099e-02, 1.543e-01, -6.303e-02, -1.475e-01, 1.866e-01), r);\n\tr = MulAdd(s5_8, M4(-4.296e-02, 7.301e-02, -1.854e-01, 1.012e-01, -1.827e-02, 1.379e-01, 2.076e-02, 4.075e-01, -9.882e-02, -5.355e-02, -2.266e-01, -2.860e-02, 1.387e-01, -6.984e-02, 1.198e-02, 4.958e-02), r);\n\tr = MulAdd(s6_0, M4(-4.199e-02, -6.949e-02, 6.321e-03, 1.020e-01, 1.012e-01, 1.717e-02, -1.264e-01, -1.463e-03, 1.513e-01, 3.324e-01, 2.602e-01, 5.010e-01, -9.360e-02, 6.098e-02, 5.095e-02, 1.808e-01), r);\n\tr = MulAdd(s6_1, M4(-2.671e-02, 3.535e-02, -3.235e-02, 1.113e-02, -5.662e-02, -2.013e-02, -3.218e-02, -1.404e-01, -2.585e-01, 3.519e-01, 3.055e-02, 1.426e+00, -5.909e-02, -8.276e-02, 1.303e-01, 4.591e-02), r);\n\tr = MulAdd(s6_2, M4(2.104e-02, -1.997e-02, -1.282e-02, -1.288e-01, -4.834e-02, -8.819e-03, -1.001e-01, 1.190e-01, -6.097e-01, 4.538e-01, 3.375e-02, 7.287e-01, -4.996e-02, 1.007e-02, -6.780e-02, -9.774e-02), r);\n\tr = MulAdd(s6_3, M4(8.145e-02, -1.226e-02, -2.695e-01, -1.840e-01, -2.791e-03, 3.953e-02, 5.544e-02, 1.626e-01, -8.656e-02, 8.049e-01, 8.527e-02, 1.007e+00, 1.289e-01, 6.034e-02, 5.650e-02, 5.077e-02), r);\n\tr = MulAdd(s6_4, M4(-5.059e-02, -5.942e-02, -1.618e-01, -1.326e-01, 4.363e-02, -8.956e-02, -1.675e-02, 5.685e-02, -7.273e-02, 7.846e-01, -1.943e-01, 9.296e-01, -1.506e-02, -6.739e-04, -1.322e-01, -5.708e-02), r);\n\tr = MulAdd(s6_5, M4(-5.501e-02, 7.983e-02, 8.777e-02, 6.892e-02, 2.920e-02, -7.697e-02, 1.084e-01, 8.862e-02, -2.660e-01, 6.913e-01, -4.073e-01, 9.941e-01, -1.284e-01, 5.222e-03, -3.999e-02, 8.610e-03), r);\n\tr = MulAdd(s6_6, M4(6.583e-02, 4.271e-02, 2.569e-01, 8.534e-02, -1.704e-01, 5.589e-02, -3.546e-03, -1.523e-01, -1.311e-01, 8.730e-01, 3.699e-02, 6.776e-01, 6.118e-02, 1.445e-02, 1.026e-02, 2.652e-02), r);\n\tr = MulAdd(s6_7, M4(1.279e-02, -1.900e-03, 7.960e-02, -1.289e-01, 8.040e-02, 2.170e-02, 7.302e-02, -1.060e-01, 1.450e-01, 7.483e-01, 9.028e-02, 1.651e-01, -2.201e-01, 9.073e-02, 2.536e-01, -1.352e-01), r);\n\tr = MulAdd(s6_8, M4(-2.910e-02, 4.179e-03, 1.675e-02, -3.174e-02, -2.982e-02, -2.929e-02, 1.555e-03, 2.411e-03, -3.180e-01, 9.460e-01, 1.352e-01, -1.250e-01, -2.457e-02, 6.235e-02, -4.464e-02, 7.891e-03), r);\n\tr = MulAdd(s7_0, M4(-6.169e-02, -1.517e-01, -1.996e-02, 1.295e-01, -2.849e-02, -1.885e-01, -1.792e-01, -8.735e-02, -8.643e-02, -1.027e-01, -2.212e-02, 1.958e-02, -9.077e-02, 1.214e-01, -8.204e-02, -1.169e-01), r);\n\tr = MulAdd(s7_1, M4(-2.212e-01, -7.720e-02, 1.765e-02, -3.732e-01, 1.117e-01, -2.174e-01, 1.636e-01, -8.238e-02, 2.783e-02, 2.234e-02, -1.158e-01, -1.121e-01, 7.623e-02, -8.504e-02, -1.329e-01, 9.974e-02), r);\n\tr = MulAdd(s7_2, M4(-6.344e-02, 2.761e-02, -1.002e-01, -8.684e-02, 2.075e-01, 1.503e-01, -1.899e-01, 8.479e-03, 1.561e-02, -6.885e-02, 1.325e-02, -4.810e-02, -5.711e-02, -1.432e-02, -6.513e-02, -7.492e-02), r);\n\tr = MulAdd(s7_3, M4(-2.427e-01, 2.396e-01, 8.939e-02, 4.002e-01, 1.633e-01, 7.055e-02, 2.189e-01, -6.663e-02, -1.279e-02, 4.636e-02, -8.664e-03, 1.132e-02, -2.329e-01, 6.385e-02, -8.100e-02, 2.979e-02), r);\n\tr = MulAdd(s7_4, M4(-2.821e-02, 5.042e-02, 1.950e-01, 2.954e-02, 2.501e-01, 8.593e-02, 1.409e-02, 2.578e-01, -1.368e-01, 1.928e-01, -6.146e-02, -7.787e-02, -8.456e-02, -1.480e-01, -2.411e-02, 3.021e-02), r);\n\tr = MulAdd(s7_5, M4(-1.217e-01, 1.643e-01, -3.103e-02, -7.779e-02, -1.296e-01, 1.216e-01, 1.362e-01, 2.597e-01, 6.748e-02, -9.254e-04, -4.988e-02, -1.005e-01, -5.144e-02, -1.559e-01, -8.093e-02, -7.864e-02), r);\n\tr = MulAdd(s7_6, M4(-1.545e-01, 1.825e-01, 2.664e-01, 3.557e-01, -2.919e-01, 3.683e-02, 1.001e-01, -5.162e-03, -5.217e-02, -1.259e-01, 3.705e-02, 6.868e-02, 2.186e-01, -6.010e-02, -1.280e-01, -8.277e-02), r);\n\tr = MulAdd(s7_7, M4(1.190e-01, 2.876e-02, 1.043e-02, 4.347e-01, 5.788e-02, -8.798e-02, 1.988e-01, -1.649e-01, 1.316e-02, 3.971e-02, -6.393e-03, 1.290e-01, -2.058e-03, -1.706e-01, 1.685e-01, 2.529e-01), r);\n\tr = MulAdd(s7_8, M4(-7.538e-02, 1.036e-01, -1.008e-01, 2.185e-01, -3.579e-02, 2.764e-01, 1.386e-03, -1.145e-01, -2.264e-02, -2.090e-02, 5.644e-02, -1.025e-01, -1.019e-01, 1.294e-01, -2.593e-02, 8.675e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.179e-02, -2.914e-02, 6.564e-02, 3.234e-02 };\n\tr = MulAdd(s0_0, M4(-7.581e-03, 5.764e-02, 6.289e-02, 1.514e-02, 1.221e-01, 4.928e-01, -5.057e-02, -1.483e-02, -1.792e-01, 8.489e-03, -1.431e-01, 5.868e-02, -3.492e-02, -7.226e-02, -2.105e-01, -1.764e-01), r);\n\tr = MulAdd(s0_1, M4(-6.464e-02, 1.506e-01, 1.133e-01, -3.755e-02, -2.756e-01, 5.449e-02, -7.036e-02, -1.405e-01, -1.942e-01, -2.099e-01, 2.038e-02, -1.083e-01, -1.265e-01, 5.352e-04, -8.953e-02, 1.424e-01), r);\n\tr = MulAdd(s0_2, M4(1.567e-01, 6.428e-03, -5.115e-02, -1.072e-01, -2.739e-01, 1.045e-01, 8.730e-02, -8.456e-02, -4.602e-02, -2.847e-01, 1.083e-01, -1.294e-01, -1.015e-01, -1.025e-02, 1.041e-02, -1.304e-01), r);\n\tr = MulAdd(s0_3, M4(-4.572e-02, -1.455e-02, 5.614e-02, -2.425e-02, 2.413e-01, -1.611e-01, 1.586e-02, -8.876e-02, -1.026e-01, -1.917e-01, -2.480e-03, 2.035e-01, 6.331e-03, -3.646e-01, -1.175e-01, 2.484e-01), r);\n\tr = MulAdd(s0_4, M4(1.387e-01, 4.597e-02, -1.948e-01, -1.308e-01, 1.082e-01, 3.149e-01, -1.774e-01, 6.195e-02, -2.746e-01, -7.085e-02, -3.781e-01, -5.056e-02, -2.648e-01, -3.117e-01, 4.133e-02, -8.854e-02), r);\n\tr = MulAdd(s0_5, M4(-1.232e-01, 7.906e-02, -1.870e-01, 2.458e-02, -5.047e-02, -1.065e-01, 3.048e-02, -4.759e-02, -2.323e-01, -2.952e-02, -2.927e-01, -1.625e-01, -3.878e-02, -1.678e-02, -1.532e-01, 1.148e-01), r);\n\tr = MulAdd(s0_6, M4(1.387e-02, -2.661e-02, -2.866e-04, 5.459e-02, -3.236e-01, 1.805e-02, -1.612e-01, -1.243e-01, -1.931e-01, -8.690e-02, 1.062e-01, -2.763e-01, -1.862e-01, 1.799e-01, -7.901e-02, 1.175e-02), r);\n\tr = MulAdd(s0_7, M4(-2.899e-02, -2.938e-02, 8.832e-02, -9.537e-04, -3.940e-02, 2.951e-03, 1.549e-01, 7.872e-02, -8.307e-02, -9.757e-02, -6.711e-02, 1.056e-02, 2.290e-01, 2.113e-01, -4.343e-02, -3.240e-01), r);\n\tr = MulAdd(s0_8, M4(-4.447e-02, -4.737e-02, -8.591e-02, -1.686e-01, 2.065e-02, 2.123e-01, 1.514e-01, -1.460e-01, -6.031e-02, 1.517e-01, -1.982e-01, -1.426e-01, -4.185e-02, -1.391e-01, -1.208e-01, -3.198e-04), r);\n\tr = MulAdd(s1_0, M4(-2.046e-02, 4.678e-03, 2.224e-01, 3.020e-01, -3.632e-02, -7.535e-02, 1.002e-02, -8.862e-02, -6.067e-03, -1.110e-01, 5.225e-02, 1.497e-01, -1.390e-01, -1.191e-01, -2.232e-02, -6.692e-03), r);\n\tr = MulAdd(s1_1, M4(-1.366e-01, -5.478e-02, 2.148e-01, 2.632e-01, -2.041e-01, -2.066e-01, -2.040e-01, -1.025e-01, 7.493e-02, 3.911e-02, -1.173e-04, 7.517e-02, 3.558e-02, 9.945e-02, 6.047e-02, 4.600e-02), r);\n\tr = MulAdd(s1_2, M4(4.576e-01, 1.579e-01, -3.173e-02, -2.815e-01, -1.532e-01, 2.862e-02, 5.831e-02, 1.509e-01, 3.045e-02, 9.582e-02, 1.986e-02, -6.961e-02, 1.850e-02, -1.108e-01, 4.282e-02, -3.387e-02), r);\n\tr = MulAdd(s1_3, M4(1.732e-01, 1.267e-01, 4.647e-01, 2.656e-02, 2.940e-01, -1.993e-01, -4.426e-02, 9.008e-02, 8.253e-02, 7.108e-03, -1.494e-01, -1.288e-01, 9.136e-02, 3.714e-02, 2.129e-02, -1.684e-01), r);\n\tr = MulAdd(s1_4, M4(-5.636e-02, -2.412e-01, 4.480e-01, -2.122e-01, 2.270e-01, 3.985e-01, -2.752e-01, 9.774e-02, -3.704e-03, 2.587e-01, 1.135e-02, 3.374e-02, -1.561e-01, 1.880e-02, 1.153e-01, -1.707e-01), r);\n\tr = MulAdd(s1_5, M4(7.268e-02, -3.111e-01, -8.362e-02, -1.898e-01, 3.023e-02, 1.225e-01, 4.258e-02, -9.576e-03, -8.835e-02, 7.056e-02, 6.475e-02, -1.310e-01, 1.088e-02, -2.065e-02, -1.054e-01, -1.411e-01), r);\n\tr = MulAdd(s1_6, M4(-8.884e-02, 2.483e-01, -6.000e-02, 1.005e-01, -1.314e-01, -3.988e-02, -1.323e-01, 1.256e-01, -1.535e-03, -2.209e-02, -3.661e-02, 6.688e-02, 5.027e-02, 3.482e-02, 6.547e-03, 1.188e-01), r);\n\tr = MulAdd(s1_7, M4(6.344e-02, 1.579e-01, 1.679e-01, 2.667e-01, 1.531e-01, -2.901e-02, 1.724e-01, 2.930e-01, -1.711e-02, 8.647e-02, 1.046e-01, 1.191e-02, 1.342e-01, 8.340e-02, 8.214e-03, 2.079e-01), r);\n\tr = MulAdd(s1_8, M4(-3.021e-01, 1.907e-02, -2.016e-01, 1.267e-01, -2.294e-02, -5.400e-02, 9.827e-02, -5.517e-02, -5.363e-02, -4.889e-02, 6.296e-02, -9.737e-03, 3.925e-02, 5.326e-02, 7.340e-03, -7.322e-04), r);\n\tr = MulAdd(s2_0, M4(-1.444e-01, 1.028e-01, -1.690e-01, 4.507e-03, -3.979e-01, -5.055e-01, 8.414e-02, -2.992e-01, -1.153e-01, 1.809e-01, 4.605e-02, -5.255e-02, 1.754e-01, 2.028e-02, 8.436e-02, 2.540e-02), r);\n\tr = MulAdd(s2_1, M4(-1.711e-01, -4.863e-02, -6.410e-02, -1.019e-01, -4.134e-01, 4.277e-02, -2.486e-01, -3.703e-01, -2.274e-01, -2.226e-01, 1.523e-01, 2.370e-01, -4.884e-02, -1.029e-01, -1.104e-01, 8.226e-02), r);\n\tr = MulAdd(s2_2, M4(-8.140e-02, 1.081e-01, 1.777e-01, 1.003e-02, -3.272e-01, 9.784e-03, 2.820e-01, -8.613e-03, 9.318e-02, -3.326e-01, -3.971e-02, 1.246e-01, 1.257e-01, -6.054e-02, -6.647e-02, 7.432e-02), r);\n\tr = MulAdd(s2_3, M4(1.508e-01, -8.128e-02, -5.221e-02, -6.611e-02, 3.457e-01, 4.610e-01, -4.847e-01, -7.489e-01, -4.416e-02, 1.110e-02, 1.604e-02, -1.602e-01, 2.462e-02, -1.182e-01, -1.151e-02, -5.689e-03), r);\n\tr = MulAdd(s2_4, M4(1.936e-01, 6.475e-02, 4.692e-03, 1.287e-01, 1.099e-01, -6.930e-04, -6.362e-01, -8.032e-01, 3.933e-03, 6.387e-02, -1.938e-01, -5.386e-02, -1.930e-01, -1.201e-01, -5.197e-02, 2.089e-02), r);\n\tr = MulAdd(s2_5, M4(1.472e-01, 1.752e-02, 1.642e-01, 5.075e-02, -1.939e-01, -1.430e-02, -2.506e-01, -2.485e-01, -1.068e-01, -1.327e-01, -6.546e-02, -2.278e-01, 2.349e-02, 3.054e-02, 1.091e-01, -1.302e-01), r);\n\tr = MulAdd(s2_6, M4(-8.224e-02, 3.867e-02, -4.681e-02, -6.327e-02, 3.796e-01, -2.604e-01, -1.010e-01, -2.640e-01, 1.778e-01, 2.419e-02, 1.026e-01, -6.207e-02, -7.240e-03, -1.114e-02, 1.119e-01, 1.810e-02), r);\n\tr = MulAdd(s2_7, M4(-5.650e-04, 1.023e-02, -8.498e-03, -1.265e-02, 1.975e-01, -1.816e-01, -1.205e-01, -3.322e-01, -1.140e-01, 1.550e-01, 3.409e-02, 1.268e-01, -1.322e-02, 5.101e-02, -2.385e-02, -1.287e-01), r);\n\tr = MulAdd(s2_8, M4(-1.391e-01, 8.706e-02, 2.942e-01, 1.300e-01, 4.721e-02, -3.099e-01, -2.001e-01, -5.063e-01, 4.158e-02, 4.024e-02, -1.037e-01, 2.470e-02, -2.557e-02, 1.965e-02, -2.441e-02, 9.164e-02), r);\n\tr = MulAdd(s3_0, M4(1.647e-01, -1.805e-02, -3.406e-02, -1.294e-01, -1.415e-01, -4.049e-02, 2.216e-02, 1.185e-01, 1.929e-02, -5.613e-02, 8.207e-02, 6.108e-02, 3.670e-02, -2.089e-01, -7.717e-02, 2.253e-01), r);\n\tr = MulAdd(s3_1, M4(-7.123e-02, -3.315e-01, -4.448e-02, -5.631e-02, -3.428e-02, -1.262e-01, -4.484e-02, -1.613e-02, -2.587e-03, -1.097e-01, 1.216e-01, -1.016e-01, 5.639e-02, -4.027e-01, 5.756e-02, -1.267e-02), r);\n\tr = MulAdd(s3_2, M4(-7.166e-02, 2.423e-01, 3.399e-02, 6.326e-02, -1.613e-01, 5.102e-02, 3.494e-02, 7.078e-03, -8.212e-02, 5.988e-02, -3.490e-02, -8.170e-02, -2.060e-01, 3.550e-02, 7.665e-02, -6.092e-03), r);\n\tr = MulAdd(s3_3, M4(3.093e-02, -6.196e-02, -1.018e-01, 1.027e-02, 2.010e-03, -2.233e-02, -3.281e-02, -7.155e-02, 1.719e-01, -2.694e-02, 3.917e-03, -3.190e-02, -2.370e-01, 2.511e-01, 2.929e-02, 8.000e-02), r);\n\tr = MulAdd(s3_4, M4(-8.777e-02, 9.786e-02, 4.368e-02, 5.115e-02, 1.074e-01, 4.259e-02, 1.114e-01, 2.402e-01, 2.019e-02, 1.234e-01, -1.880e-01, -6.301e-04, -2.513e-01, -8.639e-03, -7.225e-02, 1.418e-01), r);\n\tr = MulAdd(s3_5, M4(-2.268e-01, 2.029e-01, -1.185e-01, -5.495e-02, -1.163e-01, 4.372e-02, 8.053e-02, -1.812e-02, -9.069e-02, -3.884e-02, 8.661e-02, 2.608e-01, 1.140e-01, -7.601e-03, 5.186e-02, 3.865e-02), r);\n\tr = MulAdd(s3_6, M4(2.052e-02, 4.939e-03, 1.158e-01, -6.508e-02, 8.047e-02, -4.546e-02, 3.617e-02, -1.138e-01, -2.398e-02, -6.332e-02, -1.038e-01, 8.081e-02, -2.302e-01, 8.088e-02, 3.060e-01, 2.446e-01), r);\n\tr = MulAdd(s3_7, M4(1.062e-01, 1.106e-01, 1.035e-02, 1.028e-01, 1.072e-01, -3.130e-02, 1.465e-01, -1.049e-01, -4.924e-02, 1.304e-02, -9.063e-02, 6.612e-02, 4.834e-01, -1.259e-01, 7.290e-02, 4.857e-01), r);\n\tr = MulAdd(s3_8, M4(1.174e-02, 5.546e-02, 1.373e-01, 7.799e-02, -1.851e-02, -6.496e-03, -1.534e-02, -1.367e-02, 5.389e-02, 8.490e-02, 6.008e-02, -2.141e-02, -1.899e-01, 8.971e-02, 1.200e-01, -4.990e-01), r);\n\tr = MulAdd(s4_0, M4(-7.002e-03, 5.508e-02, 1.741e-02, 6.846e-02, 4.935e-02, 1.226e-01, 5.007e-02, -2.383e-02, -1.428e-01, 8.378e-02, -5.937e-02, -1.099e-01, 2.281e-01, -2.436e-02, 1.209e-01, -3.198e-02), r);\n\tr = MulAdd(s4_1, M4(-7.399e-02, -4.566e-02, -7.268e-02, -1.275e-02, -5.746e-02, 7.156e-02, 4.005e-02, 1.183e-01, 5.846e-02, 2.354e-01, -3.516e-02, -5.764e-02, 1.953e-01, 3.119e-02, 1.454e-01, -1.406e-02), r);\n\tr = MulAdd(s4_2, M4(3.127e-02, -8.150e-02, 8.277e-02, 1.413e-01, 5.123e-02, 2.205e-02, 3.230e-02, 5.683e-02, 4.894e-03, -1.257e-01, 9.340e-02, 2.224e-02, 1.370e-01, 7.398e-02, -6.368e-03, 1.608e-02), r);\n\tr = MulAdd(s4_3, M4(6.881e-02, -3.375e-03, 1.056e-01, -5.304e-02, -1.064e-01, -4.148e-02, 8.624e-02, -4.904e-02, -7.752e-03, -7.298e-02, -7.932e-04, -1.262e-01, 2.048e-01, 3.475e-02, -1.271e-01, 1.224e-02), r);\n\tr = MulAdd(s4_4, M4(2.041e-04, -4.132e-02, -2.237e-01, -3.584e-02, 3.167e-02, -3.019e-03, 2.618e-02, -5.664e-02, 1.946e-01, 1.340e-01, -1.109e-01, -2.126e-01, 3.268e-01, 2.296e-01, -9.041e-02, 1.938e-01), r);\n\tr = MulAdd(s4_5, M4(-3.432e-02, 1.126e-01, -1.291e-02, 1.289e-01, 3.903e-02, -1.367e-01, 6.517e-02, -5.216e-04, -4.940e-02, 1.556e-01, -2.347e-02, -1.418e-01, 2.151e-01, 2.646e-01, -6.822e-02, 4.200e-02), r);\n\tr = MulAdd(s4_6, M4(-2.471e-02, 7.440e-02, -5.017e-02, -1.015e-01, -6.059e-02, -3.496e-02, 4.484e-02, -9.797e-03, 2.390e-01, 4.988e-02, 6.820e-02, 1.513e-01, -4.653e-02, 7.645e-02, 1.273e-01, 2.260e-02), r);\n\tr = MulAdd(s4_7, M4(3.388e-02, -1.471e-01, 4.271e-02, -2.965e-05, -6.814e-02, -4.665e-04, -4.201e-02, -4.251e-02, 3.050e-01, 1.337e-01, -1.464e-01, 8.366e-02, 8.331e-03, 2.890e-02, -4.571e-03, 8.624e-02), r);\n\tr = MulAdd(s4_8, M4(1.735e-02, -4.533e-02, 5.140e-02, -1.281e-01, -8.486e-03, 4.054e-03, -8.573e-03, -1.170e-02, -1.231e-01, -1.433e-01, 9.381e-02, 3.782e-02, 2.768e-02, -7.110e-02, 5.206e-02, 8.258e-02), r);\n\tr = MulAdd(s5_0, M4(-2.181e-01, 6.178e-02, -8.720e-02, -1.409e-01, 1.476e-01, 3.411e-01, 9.144e-02, 6.769e-02, -8.762e-02, -7.521e-02, 2.938e-02, -1.200e-02, 2.207e-02, 1.687e-01, -3.703e-02, -3.066e-02), r);\n\tr = MulAdd(s5_1, M4(9.949e-02, 3.700e-01, 1.149e-01, 2.050e-01, 2.727e-02, 9.261e-02, 9.753e-02, 3.320e-01, -6.206e-03, -8.850e-02, -1.404e-01, 2.072e-02, 7.878e-03, 1.309e-01, 8.403e-03, -1.107e-01), r);\n\tr = MulAdd(s5_2, M4(-2.403e-01, 2.991e-02, 2.990e-01, -2.211e-01, 4.919e-02, 2.493e-01, 8.766e-02, 2.302e-01, -7.887e-02, 9.146e-02, 4.180e-02, 1.044e-01, 3.087e-02, -4.650e-02, 2.782e-03, -9.519e-02), r);\n\tr = MulAdd(s5_3, M4(-6.979e-02, -2.377e-01, 1.708e-01, -1.276e-02, 1.923e-02, 8.070e-02, 3.884e-01, 8.077e-02, 2.241e-01, 1.601e-02, -1.076e-01, -1.517e-02, -1.445e-01, -1.506e-01, -6.133e-02, -1.256e-02), r);\n\tr = MulAdd(s5_4, M4(4.506e-01, 7.498e-01, -3.484e-02, -4.042e-02, -9.386e-02, -1.795e-01, 1.740e-01, 4.823e-01, -5.567e-02, 3.168e-02, 1.078e-01, 8.777e-02, 1.062e-01, 8.114e-02, -1.237e-01, -1.974e-03), r);\n\tr = MulAdd(s5_5, M4(-1.471e-01, -6.964e-02, -1.597e-02, 3.554e-02, 6.958e-02, 7.652e-02, 4.270e-02, 4.024e-01, -1.123e-01, 1.554e-03, 1.842e-01, -1.366e-01, 2.237e-02, 5.522e-02, -9.837e-02, -3.022e-02), r);\n\tr = MulAdd(s5_6, M4(5.915e-02, -1.744e-01, -4.662e-04, 2.549e-01, -1.787e-01, 4.083e-01, 3.959e-01, 2.818e-01, 2.729e-01, -8.656e-02, -4.996e-02, -2.870e-04, 5.173e-03, -1.345e-01, 2.743e-02, 7.207e-02), r);\n\tr = MulAdd(s5_7, M4(-4.325e-02, -1.319e-01, 3.855e-01, 2.217e-01, -3.173e-01, -8.804e-02, 1.035e-01, 5.375e-01, 4.128e-02, -3.985e-03, 7.725e-02, -1.015e-01, -2.278e-02, -1.185e-01, 2.272e-01, -1.947e-01), r);\n\tr = MulAdd(s5_8, M4(-4.690e-03, -7.318e-02, 1.432e-01, 4.873e-01, 4.692e-02, 2.026e-01, 1.888e-01, 4.836e-01, 4.146e-02, 8.686e-03, 1.694e-01, 5.939e-02, -8.867e-03, -9.594e-02, -6.524e-02, -1.929e-01), r);\n\tr = MulAdd(s6_0, M4(1.568e-01, -2.073e-02, 8.341e-02, -2.046e-01, -9.280e-03, 2.334e-02, -2.938e-02, -5.672e-02, 4.066e-01, 2.305e-01, -1.271e-02, 6.631e-01, 1.497e-01, 4.212e-02, 8.599e-02, -7.885e-02), r);\n\tr = MulAdd(s6_1, M4(2.515e-01, -9.740e-02, 3.432e-02, -1.194e-01, -9.355e-02, 3.657e-02, -5.205e-02, 8.594e-02, 5.878e-02, 7.739e-01, -1.422e-01, 3.957e-01, 1.517e-01, 3.349e-02, 9.690e-02, -7.139e-03), r);\n\tr = MulAdd(s6_2, M4(1.954e-02, -1.181e-01, 4.747e-02, 1.045e-01, 4.518e-02, 1.305e-01, -2.697e-02, 6.527e-02, 7.863e-02, 8.908e-01, -1.274e-01, 4.605e-01, 1.267e-02, 9.088e-02, -1.163e-01, -5.796e-03), r);\n\tr = MulAdd(s6_3, M4(1.233e-02, -6.354e-02, 3.720e-02, 7.892e-02, -5.153e-02, 1.068e-01, -1.965e-02, 8.320e-02, 8.402e-01, 4.660e-01, -3.976e-01, 4.275e-01, -2.392e-02, -1.018e-01, -6.422e-02, 5.182e-02), r);\n\tr = MulAdd(s6_4, M4(-2.903e-02, 3.879e-02, 2.918e-02, 8.715e-02, 4.102e-02, -1.282e-01, 1.751e-01, 8.530e-02, 4.392e-01, 1.070e+00, -6.528e-01, 9.735e-02, 2.811e-02, -6.109e-02, -1.582e-01, 1.365e-01), r);\n\tr = MulAdd(s6_5, M4(-2.513e-02, 1.878e-02, -2.251e-02, -2.193e-02, 1.118e-01, 1.221e-02, -1.193e-01, -4.231e-02, 3.048e-01, 9.500e-01, -5.301e-01, 6.359e-01, 1.858e-02, -3.289e-02, -1.076e-01, 4.126e-02), r);\n\tr = MulAdd(s6_6, M4(-4.805e-02, 1.302e-01, 9.917e-02, -1.466e-02, -7.287e-02, -2.519e-02, 3.926e-02, -9.813e-02, -9.269e-02, 4.149e-01, -4.088e-01, 9.631e-01, 9.875e-02, -9.482e-02, 5.801e-02, 4.301e-02), r);\n\tr = MulAdd(s6_7, M4(-9.555e-02, -8.370e-02, -6.806e-02, 2.162e-02, -1.121e-02, -7.891e-02, -4.695e-02, -5.281e-03, -3.754e-01, -2.820e-01, 1.180e-02, 1.720e-01, -3.990e-02, 1.057e-01, -5.257e-02, 1.805e-02), r);\n\tr = MulAdd(s6_8, M4(-2.579e-02, -1.194e-01, -8.538e-03, 1.739e-01, 3.480e-02, -4.258e-02, 4.300e-02, 2.388e-02, 5.042e-02, 2.960e-01, 1.991e-01, 1.114e+00, -5.936e-03, -3.309e-02, -1.775e-03, -1.074e-02), r);\n\tr = MulAdd(s7_0, M4(-4.948e-01, -5.235e-01, -5.783e-02, 1.154e-01, 3.577e-02, 2.507e-01, -7.143e-02, -4.314e-01, -6.553e-03, -4.330e-02, 3.033e-02, -3.339e-02, -1.357e-01, 8.840e-02, -1.361e-01, -3.746e-02), r);\n\tr = MulAdd(s7_1, M4(-3.641e-01, 5.871e-02, -8.952e-02, 4.781e-01, -1.201e-01, -2.183e-01, -1.605e-01, -4.684e-01, 1.597e-01, -1.616e-01, 1.642e-02, -2.894e-02, -1.706e-01, -4.990e-02, 2.802e-02, 6.643e-02), r);\n\tr = MulAdd(s7_2, M4(-4.576e-02, 1.907e-01, 1.280e-01, -1.856e-02, 1.723e-01, -3.408e-01, -1.564e-02, -6.472e-02, 1.314e-01, -7.113e-02, -7.765e-02, 8.551e-02, 5.081e-02, -3.404e-01, -1.670e-01, -3.953e-02), r);\n\tr = MulAdd(s7_3, M4(-1.001e-01, -4.048e-01, -1.702e-01, 1.433e-01, -1.750e-02, -1.612e-02, 1.528e-02, -1.222e-01, -3.094e-02, 7.821e-02, -2.875e-02, -4.723e-02, 1.174e-01, 5.041e-02, -3.062e-03, -1.971e-01), r);\n\tr = MulAdd(s7_4, M4(-1.204e-01, -7.649e-02, -1.210e-01, 5.221e-02, 2.542e-01, 5.947e-02, 2.175e-01, 2.127e-01, -7.925e-02, 7.789e-02, 1.044e-01, 9.239e-02, -2.241e-01, 1.293e-01, 2.459e-01, -1.729e-01), r);\n\tr = MulAdd(s7_5, M4(-1.291e-01, 1.958e-01, -1.094e-01, 1.646e-01, 1.794e-01, -1.150e-01, 1.523e-01, 1.430e-02, -3.675e-02, -5.951e-02, 1.841e-01, -7.548e-02, -7.641e-02, 7.561e-02, 1.775e-01, 9.342e-03), r);\n\tr = MulAdd(s7_6, M4(-1.779e-01, 1.218e-01, -6.176e-02, 2.127e-01, -1.294e-01, -1.136e-01, 6.021e-02, 1.557e-02, 2.650e-02, 7.300e-02, 4.451e-02, 3.111e-03, 1.138e-01, 2.764e-02, -7.746e-02, 3.992e-02), r);\n\tr = MulAdd(s7_7, M4(-1.950e-01, -2.336e-02, -1.849e-01, 6.938e-02, -1.039e-01, -3.789e-02, 3.041e-02, -2.017e-01, -1.126e-01, -6.084e-02, 1.352e-01, 1.157e-02, -6.909e-02, 5.668e-02, 2.388e-01, 7.445e-03), r);\n\tr = MulAdd(s7_8, M4(2.975e-02, -7.086e-02, -5.371e-02, -1.105e-02, -1.465e-01, -8.496e-02, 6.396e-02, 2.739e-01, 2.182e-03, 4.118e-02, -1.874e-01, -7.968e-02, -3.285e-02, -3.565e-02, 1.240e-02, 8.849e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.312e-02, 1.493e-02, 4.529e-02, 2.631e-02 };\n\tr = MulAdd(s0_0, M4(1.753e-02, 1.160e-01, -1.269e-01, 9.143e-02, 1.019e-01, 7.000e-02, -6.194e-02, -5.348e-02, 5.273e-01, 4.315e-02, -2.275e-01, 1.919e-01, -3.212e-01, -2.432e-01, -1.944e-01, 2.996e-01), r);\n\tr = MulAdd(s0_1, M4(-4.951e-02, 1.357e-03, 1.031e-01, -4.953e-02, -1.417e-01, -1.463e-01, -6.715e-02, -1.217e-01, -6.400e-01, -5.599e-02, -2.127e-01, 3.810e-02, -8.862e-03, 2.585e-02, -3.099e-02, 1.269e-01), r);\n\tr = MulAdd(s0_2, M4(-8.903e-02, -1.431e-01, 1.724e-01, 8.231e-03, 6.244e-02, 4.866e-02, 8.680e-02, 1.017e-01, -2.014e-01, -7.754e-02, -3.044e-03, -2.485e-01, -2.124e-01, 7.233e-02, -9.456e-02, 1.639e-01), r);\n\tr = MulAdd(s0_3, M4(1.051e-02, 6.900e-02, -3.804e-02, 7.057e-02, -2.420e-01, 1.190e-01, -1.950e-02, 9.890e-02, 1.897e-02, -1.311e-01, -2.827e-01, 2.823e-01, 5.921e-02, 3.560e-01, -3.249e-01, -1.611e-01), r);\n\tr = MulAdd(s0_4, M4(6.422e-02, -3.729e-02, -1.152e-01, 6.029e-02, 2.641e-01, -1.811e-01, -1.823e-01, 6.399e-03, -2.417e-01, -1.529e-01, -5.156e-02, 2.731e-01, 3.111e-01, 5.217e-02, 2.734e-02, -4.023e-04), r);\n\tr = MulAdd(s0_5, M4(5.829e-02, -5.505e-02, -1.138e-01, -4.952e-02, -6.139e-02, 2.337e-01, -1.819e-01, 8.360e-02, 4.169e-02, -3.438e-02, 2.903e-02, 2.498e-01, 6.296e-02, -4.415e-02, 1.939e-02, 7.194e-02), r);\n\tr = MulAdd(s0_6, M4(1.292e-01, 4.660e-02, -1.532e-02, -9.872e-03, 4.496e-02, 2.380e-01, 1.217e-01, -1.109e-01, -5.028e-02, 1.675e-01, -1.568e-01, 6.519e-02, -1.263e-01, -1.036e-01, 1.377e-02, -1.131e-01), r);\n\tr = MulAdd(s0_7, M4(-1.659e-02, -7.879e-02, -2.418e-02, -3.019e-02, -1.356e-01, 4.405e-02, 2.832e-01, -3.750e-02, -1.432e-01, -8.256e-02, 1.373e-02, 3.424e-02, -1.050e-01, 1.883e-01, 4.134e-02, 7.965e-02), r);\n\tr = MulAdd(s0_8, M4(2.675e-02, -5.278e-02, -1.958e-01, -2.066e-02, -1.344e-01, 2.913e-02, 7.606e-02, -2.964e-02, -1.313e-01, -9.613e-03, -1.319e-01, 1.505e-02, 1.136e-01, 1.523e-01, -1.058e-01, 4.408e-02), r);\n\tr = MulAdd(s1_0, M4(-3.900e-01, 2.456e-01, -4.285e-02, 2.658e-01, -6.556e-02, -3.491e-02, 5.756e-02, 1.538e-01, 1.134e-01, -2.795e-02, 7.565e-03, -7.198e-02, 9.609e-02, -1.510e-01, -5.964e-02, -2.881e-01), r);\n\tr = MulAdd(s1_1, M4(1.668e-01, 2.787e-01, 4.333e-02, -2.974e-01, 1.094e-01, -2.211e-01, -8.154e-02, -2.189e-01, 1.551e-01, -3.197e-02, -8.719e-02, -1.484e-01, 4.442e-02, 7.316e-02, -2.625e-02, -8.610e-02), r);\n\tr = MulAdd(s1_2, M4(5.845e-02, -1.389e-01, -3.456e-01, -1.044e-01, 3.292e-02, 1.487e-01, -7.203e-02, 8.379e-02, 3.166e-02, 3.898e-02, -5.670e-02, 2.292e-02, 6.872e-02, -4.522e-02, -1.448e-01, 6.844e-02), r);\n\tr = MulAdd(s1_3, M4(-3.155e-01, -2.408e-01, -5.448e-02, 4.171e-02, -2.457e-01, -9.897e-02, 8.344e-02, -4.598e-02, 1.920e-02, 4.171e-02, -6.982e-02, 4.977e-02, -6.839e-02, 5.980e-03, 1.086e-01, -1.904e-01), r);\n\tr = MulAdd(s1_4, M4(-2.159e-01, 2.080e-01, -9.792e-02, 3.998e-01, 2.786e-01, -1.400e-01, -2.510e-01, 3.333e-01, 2.438e-01, 1.157e-02, 4.421e-02, -2.785e-02, -1.499e-01, 1.087e-01, -1.468e-01, -6.480e-02), r);\n\tr = MulAdd(s1_5, M4(1.131e-01, -8.773e-02, 1.201e-01, -3.160e-02, -2.395e-02, 2.306e-01, -2.283e-02, 3.290e-02, -5.039e-02, -1.410e-02, -4.766e-02, 8.466e-02, 9.510e-02, -9.014e-02, 1.913e-01, 4.092e-02), r);\n\tr = MulAdd(s1_6, M4(-1.842e-01, -1.553e-01, 9.553e-02, 9.113e-02, -1.162e-01, 7.742e-02, -2.725e-03, -1.880e-02, -1.337e-01, 1.846e-02, 5.310e-02, -5.656e-02, -4.915e-02, 7.530e-03, 8.957e-02, 1.642e-01), r);\n\tr = MulAdd(s1_7, M4(-4.356e-01, -1.068e-01, 1.175e-01, -1.185e-01, -1.105e-01, -7.094e-02, 2.674e-01, -5.722e-02, -1.175e-01, 3.593e-02, 5.452e-02, 5.885e-02, 8.733e-02, -2.635e-03, 5.368e-02, -6.987e-03), r);\n\tr = MulAdd(s1_8, M4(8.769e-02, 1.854e-01, -1.942e-02, -4.662e-02, -5.551e-03, 4.066e-03, -1.519e-01, 8.958e-02, -6.454e-02, -1.071e-02, 4.913e-02, -7.078e-02, -4.383e-02, -1.590e-02, 6.319e-02, 1.095e-01), r);\n\tr = MulAdd(s2_0, M4(-1.729e-01, -2.021e-02, -4.229e-02, 9.926e-02, -3.796e-01, -1.775e-01, -7.721e-01, 4.283e-01, -4.649e-02, -8.597e-02, 7.155e-02, -1.387e-01, -8.587e-02, 5.203e-02, 2.037e-01, 1.290e-01), r);\n\tr = MulAdd(s2_1, M4(-9.028e-02, -1.608e-02, 4.919e-02, 4.651e-02, 7.455e-02, 3.268e-01, -1.519e-01, -3.667e-01, -9.927e-02, -2.468e-01, 2.008e-01, 2.132e-01, -1.325e-01, -8.896e-06, 1.261e-01, -4.802e-02), r);\n\tr = MulAdd(s2_2, M4(-1.879e-02, 2.161e-01, -1.026e-01, 6.351e-02, -1.240e-01, -1.133e-01, -3.072e-01, -4.096e-01, -2.990e-02, 1.434e-01, -7.412e-02, -1.324e-01, 7.264e-02, 9.586e-02, -4.112e-02, 1.843e-02), r);\n\tr = MulAdd(s2_3, M4(2.250e-02, 1.458e-02, -6.317e-02, 1.976e-01, 7.670e-01, -1.387e-01, 1.173e-01, 2.007e-01, -9.971e-02, -2.958e-03, 1.879e-01, -1.306e-01, 8.892e-03, -2.086e-02, 1.666e-01, 9.401e-03), r);\n\tr = MulAdd(s2_4, M4(1.537e-01, 3.129e-02, 6.454e-02, -4.913e-02, 4.720e-01, -1.061e-01, -3.422e-01, 1.372e-01, 2.658e-01, -1.857e-01, -2.166e-01, -2.046e-01, 1.218e-01, -2.499e-02, -2.471e-02, -1.758e-01), r);\n\tr = MulAdd(s2_5, M4(3.431e-01, 1.888e-01, -1.755e-01, -1.416e-01, 3.933e-01, -3.451e-01, 9.913e-03, 2.057e-01, 4.078e-02, 1.771e-01, 5.514e-02, 1.610e-01, 2.854e-02, 2.748e-02, -1.872e-01, 3.411e-02), r);\n\tr = MulAdd(s2_6, M4(-1.003e-01, 8.879e-03, 2.002e-01, 7.435e-03, 2.879e-01, 1.927e-01, 5.846e-02, 5.309e-01, 2.174e-02, -5.902e-02, 2.934e-02, -2.275e-01, -4.843e-02, 3.327e-02, -2.839e-02, 4.788e-04), r);\n\tr = MulAdd(s2_7, M4(-6.818e-03, 5.386e-02, 1.705e-01, 1.055e-01, -2.552e-01, 2.348e-01, -5.376e-01, 8.415e-01, 9.206e-02, -2.165e-01, -6.736e-03, 1.054e-01, -5.970e-02, -2.189e-02, 2.291e-02, 8.281e-02), r);\n\tr = MulAdd(s2_8, M4(-9.683e-02, 7.370e-02, -1.486e-03, 5.930e-02, -1.231e-01, 5.585e-02, -2.850e-02, 3.915e-01, -1.038e-01, 2.451e-01, 9.171e-03, -8.992e-02, 1.089e-02, -5.349e-02, -7.425e-02, 2.983e-02), r);\n\tr = MulAdd(s3_0, M4(6.806e-02, -4.765e-02, -4.098e-02, -1.450e-02, 1.719e-01, -1.118e-01, 7.612e-02, 2.340e-02, -3.503e-02, -1.497e-01, -1.946e-01, 6.818e-02, 2.024e-01, -8.164e-02, -1.750e-01, -1.483e-01), r);\n\tr = MulAdd(s3_1, M4(-1.791e-01, -2.131e-01, -1.254e-02, 1.586e-02, 1.273e-01, 1.195e-01, -6.582e-02, 8.326e-02, 4.553e-02, -1.516e-02, 1.181e-01, -4.220e-02, -3.388e-03, 4.326e-02, -2.783e-01, 2.707e-02), r);\n\tr = MulAdd(s3_2, M4(-8.434e-02, 1.290e-01, 1.284e-01, 5.182e-02, 1.122e-01, 5.347e-02, 1.215e-01, 1.662e-01, -9.834e-02, 8.082e-04, 1.051e-02, 5.248e-02, -9.915e-02, -2.159e-01, 5.827e-02, -1.049e-01), r);\n\tr = MulAdd(s3_3, M4(1.346e-01, -8.483e-02, -1.476e-01, 2.748e-02, 1.791e-02, -4.909e-02, -1.327e-02, -6.284e-02, -4.048e-02, -2.921e-03, 2.202e-02, 8.188e-02, 3.256e-01, 1.427e-01, -9.825e-02, 2.977e-02), r);\n\tr = MulAdd(s3_4, M4(-1.412e-01, -1.176e-01, 1.140e-01, 1.489e-01, -6.777e-02, -4.582e-02, 9.809e-02, 2.975e-02, 5.165e-02, -8.093e-02, -6.055e-02, 7.214e-02, 3.706e-01, -4.749e-01, -2.525e-02, -2.335e-01), r);\n\tr = MulAdd(s3_5, M4(8.684e-02, 4.703e-02, -1.277e-01, 2.117e-01, -2.123e-02, 1.276e-01, -6.533e-02, 7.431e-02, -6.904e-02, 1.692e-01, 1.729e-02, 1.353e-01, -2.167e-01, 1.675e-01, 1.109e-01, 2.392e-01), r);\n\tr = MulAdd(s3_6, M4(3.277e-02, -2.271e-02, -4.455e-02, -1.837e-02, -1.161e-01, -1.299e-01, -3.771e-02, -1.140e-01, -6.393e-02, 1.766e-02, 6.553e-03, -4.404e-02, 6.962e-02, 1.692e-01, -6.897e-02, -6.590e-05), r);\n\tr = MulAdd(s3_7, M4(-1.314e-01, -1.961e-01, 8.045e-02, -1.115e-01, -8.862e-02, -4.149e-02, -2.506e-02, -1.571e-03, -6.118e-02, 6.175e-02, 1.056e-01, -1.248e-01, 1.067e-01, -1.729e-01, -8.977e-02, -1.716e-01), r);\n\tr = MulAdd(s3_8, M4(-1.046e-01, 1.136e-01, -8.508e-03, 1.211e-01, -8.917e-02, 3.733e-02, 8.172e-02, -5.733e-03, 2.049e-01, 1.795e-01, -1.721e-01, -5.420e-02, 2.037e-01, 2.319e-02, 3.012e-01, -3.095e-01), r);\n\tr = MulAdd(s4_0, M4(-6.174e-02, 1.823e-01, 6.577e-02, 7.931e-02, 5.619e-02, 6.599e-02, -2.907e-02, -1.747e-02, 2.922e-02, 4.411e-02, -2.690e-02, -2.129e-01, 2.936e-02, -2.412e-02, -1.066e-02, 3.026e-02), r);\n\tr = MulAdd(s4_1, M4(-9.450e-02, -1.038e-01, -1.717e-02, 7.076e-02, -2.367e-01, 1.526e-02, -1.049e-02, 1.390e-02, 8.487e-02, -1.204e-02, -6.444e-02, 1.747e-01, -4.432e-02, -1.778e-01, 5.627e-02, -3.594e-02), r);\n\tr = MulAdd(s4_2, M4(1.912e-02, -1.306e-02, -1.746e-01, -4.288e-02, -4.139e-02, 2.986e-02, -4.016e-02, -4.361e-02, 1.453e-01, 6.837e-02, -8.332e-02, -1.564e-01, -3.011e-02, 2.196e-02, -2.421e-02, -2.315e-01), r);\n\tr = MulAdd(s4_3, M4(1.118e-01, 6.878e-02, 5.315e-02, 1.246e-01, 3.269e-02, 7.104e-02, 4.679e-02, 3.018e-03, -9.116e-02, -4.459e-02, 8.972e-02, -6.690e-02, -3.056e-02, 1.471e-01, 6.756e-02, 6.757e-02), r);\n\tr = MulAdd(s4_4, M4(1.698e-01, -7.062e-02, 6.763e-02, -7.260e-02, -8.372e-02, 4.456e-02, 7.913e-02, -9.825e-02, 1.527e-01, -4.960e-02, -1.660e-01, 1.954e-01, 3.782e-02, -1.666e-01, 1.953e-02, 1.209e-01), r);\n\tr = MulAdd(s4_5, M4(-9.017e-02, -1.464e-02, -1.876e-02, 1.001e-01, -1.053e-01, -7.557e-02, -1.448e-01, -9.475e-02, 1.274e-01, 3.928e-01, -4.408e-02, 1.633e-01, 4.701e-02, -2.134e-01, -1.312e-02, 1.216e-02), r);\n\tr = MulAdd(s4_6, M4(4.620e-02, -1.978e-02, 6.714e-02, -6.474e-02, 1.636e-02, 9.339e-02, -4.837e-03, 1.756e-03, 8.870e-03, -5.370e-02, -5.992e-02, -1.971e-01, -9.497e-02, -2.736e-02, 6.098e-02, -1.200e-01), r);\n\tr = MulAdd(s4_7, M4(-8.177e-02, -8.742e-03, -3.711e-02, 2.097e-02, 8.538e-02, 5.007e-02, -2.769e-02, 6.117e-02, 1.209e-01, -5.349e-02, 2.031e-01, -1.272e-01, -1.418e-01, 8.815e-02, 1.173e-01, 4.758e-02), r);\n\tr = MulAdd(s4_8, M4(-2.341e-02, -4.843e-02, -6.954e-02, -1.073e-01, 1.958e-02, -1.200e-02, -1.276e-01, 5.947e-02, -2.526e-01, 1.087e-01, -4.189e-01, -3.295e-02, -7.157e-03, -9.873e-02, -3.551e-02, 2.754e-02), r);\n\tr = MulAdd(s5_0, M4(2.855e-01, -9.893e-02, 4.629e-01, 3.685e-01, 1.554e-01, 2.264e-01, 8.320e-02, 3.088e-01, -7.983e-02, -1.085e-01, -1.017e-02, 9.117e-02, 1.422e-01, 1.047e-01, 5.215e-03, -1.489e-01), r);\n\tr = MulAdd(s5_1, M4(2.404e-01, 8.492e-02, 1.039e-01, 2.752e-03, 2.740e-01, 1.184e-02, 3.245e-01, 3.345e-01, -4.420e-02, 5.843e-02, -5.644e-02, 5.527e-02, -8.163e-02, -6.649e-02, -8.762e-02, 4.387e-02), r);\n\tr = MulAdd(s5_2, M4(-5.425e-02, 1.489e-01, -1.437e-01, -2.529e-01, -1.157e-01, -6.165e-02, 1.275e-01, 3.054e-01, 1.627e-02, 2.292e-01, -4.550e-02, 1.312e-02, -2.202e-01, -9.887e-02, 1.580e-01, -1.435e-02), r);\n\tr = MulAdd(s5_3, M4(-1.697e-01, 1.959e-02, 6.914e-02, 4.129e-02, 1.584e-01, 8.147e-02, 1.958e-01, -4.450e-01, 6.746e-02, -1.768e-02, 6.434e-02, 1.126e-01, 3.588e-02, -3.752e-02, -2.925e-02, -2.701e-02), r);\n\tr = MulAdd(s5_4, M4(-2.298e-01, 2.289e-01, -2.091e-01, 2.205e-01, 1.286e-01, 3.793e-02, 2.837e-01, 8.140e-02, 2.141e-01, -1.052e-01, -5.835e-02, 1.332e-01, -1.450e-01, -2.986e-02, 5.020e-02, -7.013e-02), r);\n\tr = MulAdd(s5_5, M4(-1.075e-01, -3.479e-01, 1.246e-01, -1.686e-01, -7.951e-02, -4.929e-02, 3.006e-01, -2.037e-01, 9.014e-02, 1.676e-01, 5.972e-02, 8.490e-03, -9.535e-02, -8.521e-03, 6.319e-02, 9.563e-02), r);\n\tr = MulAdd(s5_6, M4(-1.586e-01, -8.457e-02, 4.014e-01, -2.831e-01, -3.806e-01, 8.747e-02, 7.486e-02, 9.824e-02, -2.501e-02, -8.783e-02, -1.230e-01, 7.386e-02, 2.113e-01, -3.155e-02, -8.221e-02, 4.656e-02), r);\n\tr = MulAdd(s5_7, M4(1.175e-02, -9.179e-02, 1.514e-02, 2.905e-01, -3.416e-01, -7.666e-02, -2.358e-01, -5.337e-02, -1.582e-01, 6.928e-02, 1.278e-01, -1.203e-01, 5.235e-02, 6.887e-02, 3.206e-02, -4.626e-02), r);\n\tr = MulAdd(s5_8, M4(3.329e-01, -3.605e-02, 2.378e-01, -6.314e-02, -4.085e-01, -1.875e-01, -1.258e-01, -3.102e-01, -4.072e-02, 1.975e-01, 2.059e-02, -3.668e-02, -1.472e-01, -1.499e-01, 6.695e-02, 2.047e-02), r);\n\tr = MulAdd(s6_0, M4(-2.750e-01, 5.779e-02, 1.428e-01, -2.794e-03, 1.336e-02, 3.631e-02, 9.575e-02, 1.314e-01, -2.453e-03, 2.720e-01, 3.414e-01, 7.753e-01, 2.981e-01, 2.486e-02, 1.996e-02, 5.238e-02), r);\n\tr = MulAdd(s6_1, M4(-2.172e-01, -3.708e-02, -5.879e-02, 9.169e-02, -3.380e-02, -6.326e-02, -2.337e-01, -3.298e-02, 1.424e-01, 5.494e-01, -1.648e-01, 5.078e-01, -1.090e-02, 3.645e-02, 2.296e-02, 1.901e-02), r);\n\tr = MulAdd(s6_2, M4(3.577e-02, 6.006e-02, 6.164e-02, 1.085e-01, 6.524e-02, 5.457e-02, -1.931e-01, 4.378e-02, -5.000e-01, 3.868e-01, -2.808e-01, 1.434e+00, -2.766e-01, -1.873e-01, 1.011e-01, -2.703e-01), r);\n\tr = MulAdd(s6_3, M4(-4.899e-03, -3.966e-02, 2.964e-01, -1.368e-01, 3.748e-02, 3.274e-02, 5.521e-02, 1.617e-02, 1.966e-02, 2.033e-01, -3.028e-01, 8.351e-01, -3.167e-02, -3.855e-02, -6.558e-02, 1.280e-01), r);\n\tr = MulAdd(s6_4, M4(7.920e-02, -2.379e-02, 1.778e-02, 1.055e-03, -2.762e-02, 1.177e-01, 9.482e-02, -6.561e-02, 4.040e-01, 6.195e-01, 1.967e-01, 1.053e+00, -5.925e-02, -1.213e-01, 9.595e-02, -1.081e-01), r);\n\tr = MulAdd(s6_5, M4(-2.577e-02, 6.871e-03, 1.317e-01, -4.759e-02, -1.998e-02, -2.636e-02, 1.609e-02, -1.392e-01, -8.404e-01, 3.874e-01, 1.802e-01, 1.588e+00, -1.716e-03, -1.695e-01, 1.894e-01, -4.657e-02), r);\n\tr = MulAdd(s6_6, M4(-2.028e-03, 5.885e-02, 1.136e-02, 9.104e-02, 7.997e-03, 3.105e-02, 1.839e-03, 1.654e-01, -4.107e-01, 8.543e-02, 1.357e-01, 1.067e+00, -1.180e-01, -1.710e-02, 8.009e-02, 5.065e-02), r);\n\tr = MulAdd(s6_7, M4(7.280e-02, 4.661e-02, -9.582e-02, -1.309e-01, -2.232e-03, -9.439e-02, 3.515e-02, -1.917e-01, -7.614e-01, 6.188e-01, 3.196e-01, 9.877e-01, -9.609e-02, 1.005e-02, -1.771e-01, 1.163e-01), r);\n\tr = MulAdd(s6_8, M4(-1.872e-02, -9.173e-02, 1.890e-02, 7.081e-03, -5.329e-02, -5.919e-02, 2.833e-02, 1.134e-01, -9.223e-01, 3.772e-01, -1.301e-01, 6.352e-01, -2.958e-02, -1.044e-01, -1.302e-01, -7.854e-02), r);\n\tr = MulAdd(s7_0, M4(1.434e-01, -3.259e-01, -8.240e-02, -1.579e-01, 1.615e-01, -6.471e-02, -4.002e-02, -1.113e-01, -1.132e-02, 4.376e-02, -6.766e-02, -9.032e-02, 5.690e-02, 1.125e-01, -1.094e-01, -1.650e-01), r);\n\tr = MulAdd(s7_1, M4(-2.541e-02, 6.512e-02, -9.465e-02, -2.184e-01, -2.772e-01, 7.455e-03, -3.263e-02, 2.454e-01, 4.006e-02, 3.165e-02, 1.181e-02, -5.626e-02, 1.704e-01, 1.682e-01, -8.115e-02, 2.731e-02), r);\n\tr = MulAdd(s7_2, M4(-2.395e-02, -9.132e-02, -9.520e-02, 6.978e-03, 1.864e-03, -1.293e-01, -9.969e-02, 3.719e-01, 1.173e-01, -6.817e-03, 6.705e-02, 8.744e-02, -1.032e-02, -7.968e-02, -3.208e-02, -1.314e-01), r);\n\tr = MulAdd(s7_3, M4(9.108e-02, 7.856e-02, 4.842e-02, 1.747e-01, 2.279e-01, 9.139e-02, -8.356e-02, 1.165e-01, -7.116e-02, 9.958e-02, -5.151e-02, -4.524e-02, 1.658e-01, 2.940e-01, 8.399e-02, -2.767e-01), r);\n\tr = MulAdd(s7_4, M4(5.245e-01, -4.385e-01, -2.367e-01, 3.836e-02, -3.209e-01, -4.128e-02, 3.896e-03, 3.336e-01, 4.742e-02, 4.354e-02, 1.015e-01, 2.345e-02, -5.708e-02, 1.239e-01, 2.494e-02, -3.044e-02), r);\n\tr = MulAdd(s7_5, M4(1.659e-01, -1.262e-01, -2.488e-01, 1.157e-01, -1.470e-01, -5.262e-01, -3.503e-03, -1.144e-01, 9.953e-03, -4.331e-02, 6.715e-02, -4.391e-02, 2.829e-02, -8.685e-02, -1.009e-01, 1.625e-01), r);\n\tr = MulAdd(s7_6, M4(3.642e-01, 6.941e-03, -3.161e-01, 1.724e-01, -1.356e-01, 8.346e-02, -1.899e-02, -2.575e-01, 5.002e-03, 3.191e-02, 6.711e-02, 6.119e-03, 9.062e-02, -5.186e-02, 3.093e-01, -8.964e-02), r);\n\tr = MulAdd(s7_7, M4(1.857e-01, -4.822e-02, 7.918e-02, -1.658e-02, 1.364e-01, -5.057e-03, -1.313e-01, 5.012e-01, -6.122e-04, 1.199e-02, -3.115e-02, 1.149e-01, 2.614e-01, 1.622e-01, -1.727e-01, 1.666e-01), r);\n\tr = MulAdd(s7_8, M4(-5.647e-02, -1.514e-01, -1.514e-01, 5.845e-02, -1.107e-01, -1.344e-01, -1.261e-01, 7.256e-02, -3.303e-02, -1.809e-01, 5.185e-02, 1.081e-01, 1.400e-01, 5.002e-02, 2.903e-01, -1.358e-01), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -4.037e-02, -1.675e-02, 3.704e-02, 1.400e-02 };\n\tr = MulAdd(s0_0, M4(-1.106e-01, 7.670e-03, -1.286e-01, 3.018e-01, 4.581e-02, -1.217e-01, 1.187e-01, -1.327e-02, -3.080e-01, 4.486e-01, -2.847e-01, 5.405e-01, -1.992e-01, -2.933e-01, -1.790e-01, 2.018e-01), r);\n\tr = MulAdd(s0_1, M4(6.861e-02, -2.420e-01, 1.315e-01, 7.517e-02, -4.806e-02, -1.086e-01, -9.308e-02, 1.835e-01, 1.853e-01, 3.102e-01, -9.225e-02, 2.640e-01, -1.481e-01, -1.542e-01, -2.495e-01, 3.864e-01), r);\n\tr = MulAdd(s0_2, M4(-2.908e-02, 4.023e-03, 7.872e-03, 3.708e-03, -1.186e-01, -4.844e-02, 3.922e-02, -4.161e-02, -4.872e-01, -2.191e-02, 3.183e-01, 5.081e-01, -8.175e-02, 7.931e-02, 2.249e-01, -1.870e-01), r);\n\tr = MulAdd(s0_3, M4(2.636e-02, 1.090e-01, -1.625e-01, -2.987e-01, 1.163e-01, 5.129e-02, -2.591e-01, 7.786e-03, 3.786e-01, -1.351e-02, -2.464e-01, 1.982e-01, -2.095e-01, 1.984e-01, 6.387e-02, -3.157e-02), r);\n\tr = MulAdd(s0_4, M4(-2.258e-01, 4.148e-02, -4.479e-01, -3.390e-01, -9.786e-03, 2.094e-01, -3.566e-02, 5.195e-02, -2.070e-01, 2.975e-02, -1.083e-01, 5.773e-01, 5.147e-01, -5.604e-02, 4.930e-02, 1.321e-01), r);\n\tr = MulAdd(s0_5, M4(3.594e-01, 1.268e-02, 1.728e-01, 7.189e-02, 1.150e-01, 5.564e-02, -9.940e-02, -1.487e-02, -1.964e-01, -3.537e-01, 2.455e-01, 2.112e-01, -3.369e-01, 1.388e-01, 8.150e-02, 1.431e-01), r);\n\tr = MulAdd(s0_6, M4(-1.118e-01, -1.718e-03, 1.401e-01, 1.372e-01, 2.374e-02, -5.415e-02, -1.005e-01, 7.274e-02, -2.817e-01, 1.803e-01, 3.102e-02, 5.768e-01, 1.678e-02, -1.261e-01, -8.865e-02, 1.719e-01), r);\n\tr = MulAdd(s0_7, M4(-2.923e-02, 2.963e-01, 1.036e-01, -8.971e-02, 7.788e-02, 1.097e-02, 1.250e-01, 1.545e-01, 1.096e-01, 1.449e-01, -1.111e-01, 1.741e-01, 9.997e-02, -1.627e-01, -5.352e-02, 4.582e-02), r);\n\tr = MulAdd(s0_8, M4(1.907e-01, 7.104e-02, 3.369e-01, 4.789e-02, 2.948e-02, 5.076e-02, 1.535e-01, 1.651e-03, -1.650e-02, -4.324e-01, 8.895e-02, 5.674e-02, -5.023e-04, 1.787e-01, -3.778e-01, -2.155e-02), r);\n\tr = MulAdd(s1_0, M4(-5.160e-02, 3.976e-02, -9.952e-02, -4.953e-02, -9.583e-02, 7.235e-02, 8.871e-02, 5.601e-02, -1.450e-01, -7.690e-02, -9.010e-02, 5.021e-02, -1.281e-01, 1.148e-01, 3.020e-02, -2.530e-02), r);\n\tr = MulAdd(s1_1, M4(1.300e-02, -9.556e-02, -1.150e-01, 3.666e-02, 3.252e-02, 3.251e-03, -1.276e-01, 1.543e-01, 7.399e-02, -1.355e-01, -1.185e-01, -2.143e-01, 1.719e-01, 2.554e-02, 6.463e-02, 3.932e-02), r);\n\tr = MulAdd(s1_2, M4(-7.282e-02, -1.820e-02, 1.919e-02, 1.074e-02, -2.097e-01, 9.752e-02, -1.958e-02, -8.647e-02, 6.535e-02, -2.755e-02, 1.022e-01, -2.680e-02, -3.509e-03, -7.656e-02, -3.162e-02, -1.080e-01), r);\n\tr = MulAdd(s1_3, M4(4.049e-02, 1.557e-01, -1.394e-02, -2.459e-02, -1.799e-01, 1.076e-02, 3.295e-02, -7.567e-03, -4.113e-02, -1.389e-01, 7.414e-03, -6.812e-02, 4.436e-02, -7.321e-02, -6.320e-02, 3.476e-02), r);\n\tr = MulAdd(s1_4, M4(6.296e-02, 1.105e-02, 8.425e-02, -1.598e-02, -1.032e-02, 1.704e-02, -7.022e-02, 6.957e-03, 2.220e-02, 6.579e-02, 5.622e-02, 6.265e-02, -8.197e-02, 2.071e-02, 9.494e-02, 1.237e-01), r);\n\tr = MulAdd(s1_5, M4(-9.015e-02, -1.011e-01, -4.560e-02, 7.887e-02, 5.623e-02, 2.528e-02, 5.075e-03, -1.046e-02, 3.357e-02, -3.218e-02, -2.049e-02, 1.284e-02, -3.689e-02, -1.521e-01, -7.719e-02, 1.521e-01), r);\n\tr = MulAdd(s1_6, M4(1.903e-01, -1.253e-01, 7.906e-02, 7.562e-02, -1.305e-01, -9.010e-02, -2.324e-02, 7.094e-02, 5.681e-03, 8.103e-02, -1.556e-02, -1.164e-02, -7.473e-03, -7.018e-02, 7.782e-02, 2.081e-02), r);\n\tr = MulAdd(s1_7, M4(-5.258e-02, 4.002e-02, -2.441e-03, 2.738e-02, 2.307e-01, 1.964e-02, 5.693e-02, 5.497e-02, -9.583e-02, -2.712e-02, 6.319e-02, 4.404e-02, -1.437e-02, -5.799e-02, 2.038e-02, -1.081e-01), r);\n\tr = MulAdd(s1_8, M4(-1.771e-01, -3.819e-02, 4.159e-02, -7.371e-03, 1.103e-01, -3.843e-02, 1.053e-01, 9.504e-03, -6.042e-03, 1.495e-01, 6.809e-02, 1.753e-02, 1.258e-01, -2.334e-01, 3.983e-03, 9.594e-02), r);\n\tr = MulAdd(s2_0, M4(8.470e-02, -1.773e-01, 9.455e-03, 4.759e-02, -1.431e-01, 3.932e-03, -1.545e-01, -7.367e-02, -4.871e-02, 6.728e-02, 3.994e-02, -4.476e-02, -2.842e-01, 1.265e-01, 1.751e-01, -3.460e-02), r);\n\tr = MulAdd(s2_1, M4(5.692e-02, -3.552e-02, 1.946e-02, -1.704e-02, 6.537e-02, -1.294e-01, -2.161e-03, 7.778e-02, 1.616e-01, 1.401e-01, 2.866e-02, -9.264e-02, 1.368e-01, 1.787e-01, -1.987e-02, -8.060e-02), r);\n\tr = MulAdd(s2_2, M4(-1.114e-01, -1.410e-02, 4.794e-02, -2.637e-02, -2.495e-02, -4.884e-03, -7.775e-02, -6.720e-02, -5.142e-04, 1.518e-01, -1.261e-02, -2.380e-01, 8.331e-02, -1.208e-01, -7.970e-02, -6.441e-02), r);\n\tr = MulAdd(s2_3, M4(1.778e-01, 1.209e-02, -1.997e-01, 3.192e-02, 2.430e-01, 4.024e-02, -5.513e-02, 7.519e-02, -1.167e-01, -1.249e-01, 1.249e-01, -1.446e-01, 7.126e-02, -6.795e-02, -8.406e-02, 1.305e-02), r);\n\tr = MulAdd(s2_4, M4(-9.427e-02, -8.138e-03, -8.036e-02, -1.474e-01, 7.301e-02, -1.313e-01, 8.006e-02, 5.452e-02, 1.127e-01, 4.325e-03, 2.758e-01, 2.219e-01, 1.501e-02, 1.454e-01, 1.056e-01, 3.213e-02), r);\n\tr = MulAdd(s2_5, M4(3.789e-02, 9.747e-02, 3.788e-02, 9.989e-02, 1.223e-01, -3.660e-02, 8.788e-02, 4.626e-02, -1.673e-01, 5.030e-02, 7.130e-02, -6.818e-02, 1.002e-01, -5.157e-02, 2.846e-02, -1.019e-01), r);\n\tr = MulAdd(s2_6, M4(5.866e-02, -1.172e-01, 5.294e-02, 1.291e-02, -1.841e-01, 1.076e-01, -1.009e-01, -6.028e-02, 1.089e-02, 4.124e-02, 3.907e-02, 6.840e-02, 1.165e-01, -1.340e-01, 8.841e-02, -5.944e-02), r);\n\tr = MulAdd(s2_7, M4(-8.505e-02, 3.822e-02, 1.127e-01, 5.977e-02, 2.905e-02, 1.477e-01, 3.378e-02, -3.830e-02, 7.395e-02, 7.332e-02, 2.368e-01, -1.645e-01, 7.004e-02, 5.115e-02, -4.602e-02, 9.389e-02), r);\n\tr = MulAdd(s2_8, M4(1.146e-01, 1.376e-01, 1.859e-01, -1.260e-03, 4.046e-02, 1.407e-01, 5.402e-02, -3.509e-02, -8.465e-02, 7.918e-02, -2.051e-01, 1.289e-01, 3.716e-02, -6.743e-02, -1.306e-01, 9.368e-02), r);\n\tr = MulAdd(s3_0, M4(-8.518e-02, 2.708e-02, -5.449e-03, -3.024e-02, 2.116e-01, -1.750e-01, -5.726e-02, 1.729e-01, -1.523e-01, 1.187e-02, -6.049e-02, 8.550e-02, -1.797e-01, 5.282e-02, -7.250e-02, -4.983e-02), r);\n\tr = MulAdd(s3_1, M4(1.751e-02, 1.192e-02, 1.091e-01, -3.897e-02, -1.735e-01, -1.346e-01, 2.168e-02, -2.314e-01, 3.644e-03, 1.259e-01, 3.968e-02, 7.563e-02, -5.672e-02, 9.338e-02, 4.882e-03, -1.688e-01), r);\n\tr = MulAdd(s3_2, M4(4.182e-02, 8.886e-02, 1.246e-01, -2.448e-01, -1.897e-01, 1.382e-02, 8.624e-02, 1.035e-01, -1.952e-02, 6.874e-02, 2.193e-01, -9.409e-02, 5.727e-02, -1.276e-01, 9.849e-03, -8.370e-02), r);\n\tr = MulAdd(s3_3, M4(-1.089e-02, -1.891e-01, 8.993e-03, 8.074e-03, 2.076e-01, -1.243e-01, -1.613e-01, -3.196e-02, 1.255e-01, 4.043e-03, -3.341e-02, -8.549e-02, -1.131e-01, 1.215e-01, -1.069e-01, 7.707e-03), r);\n\tr = MulAdd(s3_4, M4(2.400e-01, -1.286e-01, -1.168e-01, -1.283e-01, -3.051e-01, -1.333e-01, -1.961e-01, 1.049e-01, -6.058e-03, 2.434e-01, -5.507e-02, 2.330e-01, 5.414e-02, -4.292e-02, -6.215e-03, 6.113e-02), r);\n\tr = MulAdd(s3_5, M4(1.987e-01, -1.559e-01, 5.049e-02, -6.321e-02, -1.371e-01, -4.967e-02, 7.531e-02, 4.293e-01, 6.067e-02, 2.865e-01, 8.815e-02, -5.601e-02, -7.575e-02, 3.643e-02, 6.242e-02, 5.949e-02), r);\n\tr = MulAdd(s3_6, M4(1.069e-01, -4.535e-03, -4.047e-02, 2.504e-01, 7.440e-02, 2.122e-03, 7.750e-02, -3.155e-01, -6.375e-02, 6.073e-02, -2.885e-02, 1.821e-01, 1.692e-01, -2.458e-02, 6.111e-02, 7.549e-03), r);\n\tr = MulAdd(s3_7, M4(8.820e-02, -4.547e-03, -4.999e-02, 1.704e-01, 1.116e-01, 4.329e-01, 2.396e-02, 1.519e-01, 1.402e-01, 1.259e-01, -8.280e-02, 2.102e-02, -1.875e-02, 8.996e-02, -1.889e-02, 3.921e-02), r);\n\tr = MulAdd(s3_8, M4(1.528e-01, -2.168e-01, -4.028e-03, -1.300e-01, 1.285e-01, 4.750e-01, 1.400e-01, 2.065e-01, 2.631e-02, 1.038e-01, -4.665e-02, 6.579e-02, 1.235e-01, 7.133e-02, -1.172e-01, -5.303e-03), r);\n\tr = MulAdd(s4_0, M4(-1.340e-02, 2.074e-01, -1.705e-02, -7.420e-02, 1.053e-02, -9.147e-02, 2.526e-02, 1.026e-02, -7.592e-02, -1.404e-01, 8.351e-03, 1.730e-02, 4.360e-02, -6.868e-02, -1.140e-01, -1.605e-02), r);\n\tr = MulAdd(s4_1, M4(8.707e-02, 1.055e-01, -1.279e-02, -3.775e-02, -5.099e-02, 6.661e-02, -1.315e-02, -4.065e-02, 2.320e-02, -4.357e-02, -1.313e-01, 1.870e-02, 2.267e-02, 9.643e-02, 3.252e-02, 6.173e-02), r);\n\tr = MulAdd(s4_2, M4(-1.146e-01, 1.701e-01, -2.906e-02, 4.315e-02, -2.166e-02, -1.823e-02, -4.847e-02, 4.414e-02, 8.021e-02, -1.982e-01, -1.249e-01, 1.342e-01, -1.880e-01, 1.307e-02, 8.718e-02, -1.784e-02), r);\n\tr = MulAdd(s4_3, M4(-1.524e-01, 1.792e-02, 1.293e-01, -1.338e-01, -9.022e-02, 2.274e-02, 9.638e-03, -2.646e-01, -1.919e-01, -1.435e-01, -2.097e-01, 1.255e-01, 1.651e-01, -3.011e-02, 8.854e-02, -8.389e-02), r);\n\tr = MulAdd(s4_4, M4(-2.367e-01, -9.871e-02, -2.830e-03, -8.051e-02, 3.013e-01, 4.373e-02, -2.674e-02, 3.491e-02, 2.304e-01, -5.362e-02, -9.155e-02, -1.227e-01, -7.575e-03, 8.455e-02, -9.711e-02, -1.671e-01), r);\n\tr = MulAdd(s4_5, M4(6.942e-02, 9.524e-02, -9.299e-02, 8.153e-03, 5.888e-02, -7.219e-02, -6.424e-02, 1.187e-01, -1.179e-01, -7.678e-02, 6.407e-02, 3.443e-02, 3.539e-02, -1.277e-02, 1.201e-01, -5.887e-02), r);\n\tr = MulAdd(s4_6, M4(-4.164e-02, 5.339e-02, 3.651e-02, -3.101e-02, 9.081e-02, 1.674e-01, -1.281e-01, -6.046e-02, 1.913e-01, 3.205e-02, -9.261e-02, 5.055e-06, 2.909e-02, -8.520e-02, -1.762e-02, -4.433e-02), r);\n\tr = MulAdd(s4_7, M4(1.197e-01, 6.880e-02, -3.625e-02, 1.798e-01, -2.881e-01, 1.125e-01, -5.999e-02, -2.046e-01, -1.051e-01, -1.701e-01, 9.698e-02, 2.261e-02, 2.416e-02, -1.367e-01, -5.911e-02, 9.895e-02), r);\n\tr = MulAdd(s4_8, M4(4.871e-02, 1.336e-01, -2.433e-02, 1.234e-02, -1.234e-01, 1.144e-01, 1.246e-01, 8.938e-02, 7.953e-02, -9.458e-02, 6.365e-02, -1.207e-01, -7.731e-03, -1.426e-02, -1.368e-01, 9.274e-02), r);\n\tr = MulAdd(s5_0, M4(-1.005e-01, 2.445e-03, 5.230e-02, 1.152e-01, -1.592e-01, -2.043e-01, -7.492e-02, 1.011e-01, -1.755e-01, -8.817e-02, -1.179e-02, -4.539e-02, -4.091e-02, -5.761e-02, 2.523e-01, 1.103e-01), r);\n\tr = MulAdd(s5_1, M4(1.641e-02, -3.067e-01, 9.185e-02, 9.128e-02, 3.286e-02, 1.947e-02, -4.989e-02, 5.360e-02, -1.157e-01, 4.087e-02, 8.444e-02, 1.411e-01, 3.768e-02, 1.976e-02, 2.049e-01, 1.071e-01), r);\n\tr = MulAdd(s5_2, M4(1.134e-01, -6.178e-02, 3.290e-02, 6.283e-02, 1.023e-04, 8.330e-02, 2.145e-01, -1.397e-01, -8.124e-02, 1.013e-01, -2.137e-02, -7.958e-02, 1.534e-01, -5.867e-03, -6.494e-02, -9.285e-02), r);\n\tr = MulAdd(s5_3, M4(-2.051e-02, 6.925e-02, 6.149e-02, 3.242e-01, -6.243e-01, 1.179e-01, 2.106e-01, -3.046e-01, -5.706e-04, -1.155e-01, 8.130e-03, 3.356e-02, -2.281e-03, 1.334e-01, -1.241e-01, -6.799e-02), r);\n\tr = MulAdd(s5_4, M4(-2.705e-02, 1.060e-01, 1.528e-01, 1.223e-01, 3.211e-01, -1.730e-01, 1.253e-01, 5.410e-01, 1.508e-01, 2.882e-03, -9.738e-02, -4.871e-03, 6.994e-02, 2.571e-02, -9.819e-02, -1.700e-01), r);\n\tr = MulAdd(s5_5, M4(4.869e-02, 2.421e-01, -7.101e-02, 1.245e-01, 2.406e-01, -1.675e-01, -4.183e-01, -1.827e-01, -2.084e-01, -1.768e-02, 1.672e-01, 7.756e-02, 1.056e-02, 1.765e-01, -1.561e-01, -7.703e-02), r);\n\tr = MulAdd(s5_6, M4(6.569e-02, 1.023e-01, -4.162e-02, -4.910e-02, 2.085e-01, -2.971e-01, 1.728e-01, -2.518e-01, 1.621e-01, 1.735e-02, 3.280e-02, 9.486e-02, 5.738e-02, 1.501e-01, 4.067e-02, 5.826e-02), r);\n\tr = MulAdd(s5_7, M4(1.475e-01, -1.313e-01, -3.392e-01, -6.234e-02, 1.607e-01, -8.255e-02, 9.700e-02, 5.601e-01, -9.607e-02, -5.716e-04, 9.148e-02, -2.466e-02, -1.983e-01, 2.422e-02, 6.771e-02, 6.628e-02), r);\n\tr = MulAdd(s5_8, M4(1.197e-01, -2.585e-02, -9.683e-02, 8.054e-02, -3.877e-01, -4.829e-02, 5.832e-02, -9.984e-02, 1.697e-01, 2.958e-02, -1.363e-01, 1.280e-01, 2.276e-01, -1.047e-01, -2.271e-01, 8.008e-02), r);\n\tr = MulAdd(s6_0, M4(-2.387e-01, -2.552e-01, 3.395e-01, -5.265e-02, -4.866e-03, 1.072e-02, 7.850e-02, 8.140e-02, 1.753e-01, 1.958e-01, 1.330e-01, 1.653e-01, 6.228e-02, 1.308e-02, -8.889e-02, -2.958e-02), r);\n\tr = MulAdd(s6_1, M4(1.223e-01, -2.539e-02, -2.974e-01, 3.280e-03, 1.140e-01, -2.521e-02, -1.109e-01, -1.236e-01, 3.579e-02, -4.744e-02, 3.749e-02, 1.404e-01, -2.275e-02, -1.076e-02, -1.870e-02, -1.125e-01), r);\n\tr = MulAdd(s6_2, M4(6.481e-02, 1.559e-01, 8.548e-02, -1.091e-01, 4.069e-02, 9.493e-04, 1.436e-02, -9.013e-02, -2.222e-02, 4.476e-02, -1.482e-01, 1.574e-01, -2.415e-02, 2.352e-01, 1.177e-01, 1.094e-01), r);\n\tr = MulAdd(s6_3, M4(-3.810e-02, 8.932e-02, 1.747e-02, -1.814e-01, 2.592e-01, -7.350e-02, -2.803e-01, 8.401e-02, 4.885e-01, -4.088e-02, 1.891e-01, 1.402e-01, -1.697e-01, 3.032e-01, -6.832e-02, 2.520e-01), r);\n\tr = MulAdd(s6_4, M4(5.080e-01, -1.330e-01, 4.702e-02, 3.560e-01, 1.971e-01, -5.934e-02, -2.050e-01, -1.404e-01, -2.276e-01, 9.001e-02, -1.257e-02, -1.844e-01, -3.716e-01, -5.842e-02, 1.151e-01, -1.315e-01), r);\n\tr = MulAdd(s6_5, M4(-8.018e-02, 2.536e-01, -1.156e-01, -1.679e-01, -9.114e-02, 6.778e-03, -6.799e-02, 1.115e-02, -1.072e-02, 1.227e-01, 1.080e-01, 7.753e-02, 1.393e-01, -2.807e-01, 2.770e-02, 2.628e-01), r);\n\tr = MulAdd(s6_6, M4(3.951e-02, -1.216e-01, 1.179e-01, -6.518e-02, -1.211e-02, 4.296e-02, -2.270e-01, 1.071e-01, 9.939e-02, 2.098e-01, -1.493e-02, -2.716e-02, 2.526e-01, -2.241e-02, 7.088e-02, 3.245e-02), r);\n\tr = MulAdd(s6_7, M4(2.067e-01, -4.707e-01, -7.482e-02, 3.539e-01, 1.177e-01, -1.092e-01, -1.023e-01, 4.164e-02, -3.600e-02, 1.516e-01, -2.437e-01, 8.298e-02, -9.193e-02, -1.452e-01, 4.257e-02, -2.124e-01), r);\n\tr = MulAdd(s6_8, M4(-2.915e-01, 1.080e-02, 9.993e-03, -8.805e-02, -2.745e-02, -5.484e-02, -7.195e-02, -8.099e-03, 5.414e-02, 3.017e-01, 9.490e-02, 2.250e-02, 1.981e-01, -1.306e-01, -1.162e-02, -3.500e-02), r);\n\tr = MulAdd(s7_0, M4(-7.985e-02, 8.566e-02, -7.230e-02, -3.377e-02, 4.579e-02, 6.077e-02, -1.418e-01, 1.145e-01, 3.962e-02, -1.011e-01, -1.120e-01, -8.656e-02, 2.178e-02, 9.423e-02, 2.644e-02, 1.217e-01), r);\n\tr = MulAdd(s7_1, M4(-3.308e-02, 1.354e-01, -1.195e-01, -9.986e-02, -1.597e-01, 7.120e-02, 9.256e-02, -9.827e-02, 1.653e-02, 4.166e-02, -4.236e-02, -7.087e-02, 2.284e-02, 6.135e-02, -7.818e-02, 5.338e-02), r);\n\tr = MulAdd(s7_2, M4(-7.062e-02, -3.890e-02, -4.435e-02, -2.382e-02, 1.791e-02, -1.045e-01, -3.526e-02, 9.678e-02, -7.565e-02, 7.253e-02, -1.510e-01, 3.099e-03, -5.306e-02, 9.983e-02, 3.110e-02, -1.298e-01), r);\n\tr = MulAdd(s7_3, M4(1.554e-02, -1.892e-02, 6.554e-02, -9.729e-04, -1.477e-01, 6.217e-02, 5.542e-03, 6.975e-02, 3.759e-02, 4.232e-02, 3.292e-02, 1.204e-01, 5.064e-04, -4.057e-02, 6.802e-02, 3.772e-02), r);\n\tr = MulAdd(s7_4, M4(3.781e-02, -9.765e-02, 7.612e-02, -4.848e-02, -2.151e-01, 7.928e-03, -4.992e-02, -6.911e-02, 9.894e-02, -4.879e-02, 9.217e-02, -1.417e-01, 5.228e-05, -6.974e-02, -1.455e-02, 5.341e-02), r);\n\tr = MulAdd(s7_5, M4(-2.148e-02, 9.837e-02, 6.053e-02, 1.387e-01, -6.492e-02, 8.200e-02, -4.534e-02, 6.754e-02, 1.607e-02, 7.394e-02, -3.567e-02, -8.860e-02, -6.110e-02, -2.350e-03, 1.426e-02, -1.123e-01), r);\n\tr = MulAdd(s7_6, M4(-3.090e-02, -4.675e-03, 3.797e-03, 1.764e-01, -1.302e-02, 4.235e-02, -1.232e-01, -1.248e-01, 1.384e-02, 1.040e-01, 1.289e-01, 1.555e-03, -1.215e-01, -1.021e-02, 6.856e-02, 2.160e-02), r);\n\tr = MulAdd(s7_7, M4(1.848e-02, -1.505e-02, 4.518e-02, -2.168e-01, 1.555e-02, -1.385e-01, 1.732e-01, 5.792e-02, -8.967e-02, -1.573e-01, -6.748e-02, 6.622e-02, 1.793e-01, -1.737e-02, -8.133e-02, 3.772e-02), r);\n\tr = MulAdd(s7_8, M4(-1.528e-01, -4.560e-02, 4.371e-03, 6.002e-02, 1.841e-01, 5.361e-02, 1.400e-02, -4.889e-02, -1.744e-01, -4.758e-04, 2.771e-02, -1.233e-01, -1.299e-02, 1.363e-01, -2.682e-01, -2.026e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.849e-02, -1.365e-02, -7.279e-03, 4.354e-02 };\n\tr = MulAdd(s0_0, M4(5.359e-02, 9.392e-02, -1.478e-01, 8.028e-02, 2.418e-02, -1.892e-02, 6.965e-02, -9.329e-03, 2.970e-01, -2.939e-01, 1.871e-01, -4.107e-02, -1.957e-01, 9.889e-02, -2.289e-01, -1.716e-01), r);\n\tr = MulAdd(s0_1, M4(7.159e-02, 7.395e-02, 1.411e-02, 1.908e-01, -1.529e-01, 5.522e-02, 6.274e-02, -4.293e-02, 7.288e-02, -4.996e-01, -1.728e-01, 7.171e-02, 3.953e-01, 3.121e-02, -1.144e-01, -2.980e-01), r);\n\tr = MulAdd(s0_2, M4(1.281e-01, 2.113e-01, -1.793e-02, -1.434e-01, -3.459e-02, -1.502e-01, -1.265e-01, -8.224e-02, 2.602e-02, -1.770e-01, 1.371e-01, 2.355e-01, -1.329e-01, 8.931e-02, 1.303e-01, -1.144e-01), r);\n\tr = MulAdd(s0_3, M4(7.054e-02, -3.927e-02, 2.427e-01, 8.472e-02, 4.186e-02, 3.723e-02, 8.074e-02, -9.314e-02, 5.253e-01, -1.610e-01, 1.036e-01, 3.180e-01, -7.711e-02, -2.627e-01, -1.591e-01, -1.161e-01), r);\n\tr = MulAdd(s0_4, M4(1.364e-01, -7.588e-02, 1.185e-01, 1.617e-01, 1.008e-02, 1.126e-01, -1.458e-01, -1.110e-01, 3.619e-01, -4.962e-02, -1.534e-01, 2.996e-01, -4.501e-01, 1.993e-01, -3.799e-01, 4.546e-02), r);\n\tr = MulAdd(s0_5, M4(-4.318e-01, 1.466e-01, -3.836e-02, -2.268e-01, 3.750e-02, -7.447e-02, 1.090e-02, -1.200e-01, 5.559e-01, -6.123e-02, -1.486e-01, -1.172e-01, -2.707e-02, -1.418e-01, -2.744e-01, -7.687e-02), r);\n\tr = MulAdd(s0_6, M4(2.797e-01, 6.728e-02, 1.223e-01, -1.082e-04, -2.560e-03, 6.357e-02, 1.290e-01, -4.615e-02, 3.593e-01, -1.852e-01, -1.198e-01, -5.259e-02, -8.925e-02, -9.296e-02, 5.557e-02, 1.834e-01), r);\n\tr = MulAdd(s0_7, M4(-9.005e-02, -1.121e-01, -1.477e-01, 1.781e-02, -1.100e-01, 1.190e-01, -5.723e-02, -1.282e-01, 2.722e-01, -1.359e-01, 4.613e-01, 3.558e-01, -2.149e-01, -3.125e-02, 3.621e-02, -4.010e-02), r);\n\tr = MulAdd(s0_8, M4(-4.799e-02, 2.708e-03, -5.212e-03, -1.705e-01, -1.316e-01, -1.425e-01, 1.505e-01, -5.512e-02, 3.036e-01, -1.299e-02, -2.344e-03, -1.990e-02, 1.391e-02, -1.951e-01, 1.276e-01, -1.054e-01), r);\n\tr = MulAdd(s1_0, M4(3.800e-02, 9.656e-02, -6.685e-02, 1.867e-01, 4.085e-02, 1.031e-02, 9.019e-02, -2.565e-02, -1.535e-02, 9.396e-02, 1.368e-01, -6.468e-03, 5.725e-02, -4.208e-02, 7.414e-02, -2.342e-02), r);\n\tr = MulAdd(s1_1, M4(-6.740e-02, 3.539e-02, 2.409e-02, 1.803e-02, 6.601e-02, 1.697e-02, -2.279e-02, 1.011e-01, 9.741e-02, -3.994e-02, -5.265e-02, -6.697e-03, 2.065e-03, -4.452e-02, 8.573e-02, 1.119e-01), r);\n\tr = MulAdd(s1_2, M4(-3.638e-03, 1.285e-02, 4.366e-02, -5.360e-02, 5.436e-02, 6.215e-03, -5.649e-02, 6.265e-02, -2.411e-02, 8.766e-02, -8.103e-02, -3.148e-02, 8.132e-02, 9.113e-03, 4.695e-02, 4.233e-02), r);\n\tr = MulAdd(s1_3, M4(7.019e-02, -2.512e-01, -5.508e-02, -4.033e-02, -2.620e-01, 3.060e-02, -5.995e-02, 2.043e-01, -4.539e-02, -6.491e-02, 1.768e-01, 7.705e-02, 4.870e-02, 1.053e-02, 4.352e-02, 1.674e-02), r);\n\tr = MulAdd(s1_4, M4(1.164e-01, -9.858e-03, 1.457e-01, 6.112e-02, 6.947e-04, 4.087e-02, -2.676e-02, 8.315e-02, -7.122e-02, 2.029e-02, -9.414e-02, -5.512e-03, 1.954e-02, 1.362e-01, -9.850e-03, -1.051e-01), r);\n\tr = MulAdd(s1_5, M4(6.618e-02, 5.335e-02, 5.182e-02, -1.430e-01, -1.251e-02, -8.332e-02, 1.674e-01, -3.576e-02, 1.417e-02, -4.650e-02, 2.594e-02, -6.467e-02, 2.801e-03, -4.410e-02, -1.009e-01, -2.563e-02), r);\n\tr = MulAdd(s1_6, M4(-6.718e-02, 6.018e-02, 9.142e-02, -4.475e-02, 1.592e-02, -1.879e-02, 2.796e-02, -5.731e-02, -8.798e-02, -3.738e-02, -5.375e-02, -4.677e-02, 5.755e-02, -1.558e-01, -2.621e-04, 7.923e-02), r);\n\tr = MulAdd(s1_7, M4(-7.345e-02, -2.241e-02, -1.339e-01, 3.816e-02, -2.457e-02, 6.471e-02, 2.474e-02, 3.074e-02, -3.547e-02, 2.760e-02, 7.020e-02, 6.069e-03, -7.161e-02, -4.419e-02, 5.787e-02, 5.445e-02), r);\n\tr = MulAdd(s1_8, M4(-1.805e-01, -5.921e-02, 3.022e-02, -8.273e-02, -1.053e-01, -1.721e-02, -4.414e-02, -2.392e-02, -6.442e-02, 3.035e-03, -7.375e-02, 2.852e-02, -4.651e-02, 1.898e-02, 9.078e-02, -1.200e-01), r);\n\tr = MulAdd(s2_0, M4(-1.281e-01, 5.373e-02, 2.685e-02, 1.292e-02, 8.557e-02, 5.859e-02, -1.068e-02, 1.038e-01, 5.150e-02, -1.111e-01, 6.592e-02, 3.929e-02, -1.668e-01, -1.356e-01, 1.001e-01, -3.902e-02), r);\n\tr = MulAdd(s2_1, M4(1.962e-02, 6.647e-02, 4.700e-02, 9.000e-02, 9.737e-03, -4.224e-03, -7.276e-02, 5.652e-02, -2.292e-04, -1.822e-01, -3.527e-02, 7.265e-02, 9.374e-02, 1.317e-01, -3.114e-02, 2.456e-02), r);\n\tr = MulAdd(s2_2, M4(1.597e-02, -2.637e-02, 9.580e-02, -6.369e-02, 5.057e-02, 8.468e-02, 4.267e-03, 7.474e-02, 1.078e-01, -9.482e-03, -1.727e-01, 2.970e-02, 5.134e-02, 1.363e-01, -6.067e-02, 4.048e-02), r);\n\tr = MulAdd(s2_3, M4(-2.884e-02, -8.832e-02, -6.075e-02, -3.294e-03, 3.834e-02, -2.263e-02, -5.452e-02, 6.482e-03, 1.428e-02, 5.782e-02, 3.720e-01, -4.082e-02, -1.178e-01, 9.901e-03, 1.791e-01, 4.845e-02), r);\n\tr = MulAdd(s2_4, M4(-5.438e-02, -9.899e-02, -2.456e-01, 1.285e-01, 4.232e-02, -1.557e-02, 5.495e-02, 1.077e-01, -3.258e-02, 7.771e-02, 2.900e-01, 1.432e-01, -1.675e-02, 5.543e-03, 1.078e-02, 1.532e-01), r);\n\tr = MulAdd(s2_5, M4(2.182e-02, 1.227e-01, -5.033e-02, -6.187e-02, 1.330e-01, -6.431e-02, -9.959e-02, 1.091e-01, 2.743e-02, 1.172e-01, -2.246e-01, -1.348e-01, -5.197e-02, -8.711e-04, -5.547e-02, 9.522e-03), r);\n\tr = MulAdd(s2_6, M4(-1.206e-01, 7.882e-03, -1.090e-02, 2.974e-02, 3.590e-03, -1.111e-01, 8.554e-02, 1.091e-01, -1.601e-02, 1.324e-01, -1.966e-03, -3.257e-02, 5.852e-02, -2.458e-02, 1.611e-02, -3.468e-02), r);\n\tr = MulAdd(s2_7, M4(-1.929e-01, 1.215e-02, 8.072e-03, -1.662e-01, 1.130e-01, -6.542e-03, 2.019e-02, 6.547e-02, 7.990e-02, -4.069e-02, 9.728e-02, -2.795e-01, 1.114e-01, -8.817e-03, -8.428e-02, 6.218e-02), r);\n\tr = MulAdd(s2_8, M4(1.551e-01, -3.498e-02, -7.700e-03, 1.575e-02, 1.430e-01, -4.726e-02, -1.064e-02, -6.947e-03, 9.397e-02, 3.900e-03, 1.258e-01, -3.835e-02, 1.277e-01, 2.509e-02, 8.729e-02, -9.870e-04), r);\n\tr = MulAdd(s3_0, M4(-2.635e-02, 1.782e-01, -1.694e-02, 5.306e-02, 1.580e-01, 6.969e-03, 3.944e-02, 6.108e-02, -4.229e-04, -1.987e-01, 3.180e-02, 7.524e-02, -4.798e-02, -1.567e-01, 7.564e-02, -1.183e-01), r);\n\tr = MulAdd(s3_1, M4(6.275e-02, 5.701e-02, -7.258e-02, 7.556e-02, 1.801e-01, 7.088e-02, -1.084e-01, 2.409e-01, -1.257e-01, -5.239e-01, -8.246e-02, -3.461e-02, -1.147e-01, 2.545e-01, 1.385e-01, -1.835e-01), r);\n\tr = MulAdd(s3_2, M4(5.300e-02, 4.263e-02, -6.859e-02, -1.132e-01, 1.989e-01, 2.543e-01, -1.528e-01, -4.319e-02, 3.084e-02, -9.744e-02, 6.969e-02, 8.086e-02, -1.547e-01, -6.636e-02, 1.025e-01, -1.728e-01), r);\n\tr = MulAdd(s3_3, M4(1.060e-01, 5.446e-02, 1.170e-01, -2.163e-02, -1.162e-01, 2.090e-02, 2.091e-01, -9.561e-02, 9.790e-02, 2.899e-02, -1.844e-01, 1.636e-01, 6.397e-02, 1.750e-01, -1.875e-02, -8.913e-02), r);\n\tr = MulAdd(s3_4, M4(2.836e-01, 9.436e-02, 4.142e-02, 2.304e-01, 2.979e-02, -3.237e-01, -1.735e-02, 3.771e-01, -1.150e-01, 2.209e-01, 2.394e-01, 7.586e-02, -1.756e-01, -1.931e-01, 8.589e-02, -2.265e-04), r);\n\tr = MulAdd(s3_5, M4(1.088e-01, 6.678e-02, -2.916e-02, -3.234e-02, 5.359e-02, -1.229e-01, -8.072e-02, 2.183e-01, -4.825e-02, 1.674e-03, -2.927e-02, 8.313e-02, -1.081e-01, -7.192e-02, -2.553e-01, -1.865e-01), r);\n\tr = MulAdd(s3_6, M4(1.575e-02, 2.193e-02, 4.950e-02, 8.411e-02, -5.007e-02, -6.622e-02, 1.987e-01, 2.368e-01, -1.061e-01, 1.255e-01, -4.007e-02, -2.425e-02, 7.443e-02, 4.368e-02, 1.239e-02, -1.162e-02), r);\n\tr = MulAdd(s3_7, M4(6.849e-03, 9.556e-03, 2.016e-01, 2.675e-01, -2.552e-01, 8.692e-02, -1.800e-02, 2.611e-01, -5.581e-02, 3.036e-02, 7.863e-03, -1.557e-01, 3.245e-02, 8.553e-02, -1.081e-01, -1.361e-01), r);\n\tr = MulAdd(s3_8, M4(2.556e-02, 9.324e-02, 8.321e-02, -4.573e-03, 7.401e-02, 4.903e-02, -9.715e-02, -1.496e-01, -4.412e-02, 2.469e-02, 7.537e-02, 4.379e-02, -1.750e-02, 1.513e-02, 1.219e-01, -1.819e-01), r);\n\tr = MulAdd(s4_0, M4(-3.690e-02, -3.441e-02, -3.924e-02, -6.007e-02, 5.748e-02, -9.919e-03, -1.154e-01, -1.501e-02, -3.522e-02, 6.309e-04, 4.868e-02, 9.365e-02, 6.030e-02, 3.201e-03, 2.582e-02, -1.564e-02), r);\n\tr = MulAdd(s4_1, M4(3.904e-02, -7.788e-02, 4.307e-02, 2.538e-02, -2.324e-01, 7.691e-02, 6.854e-03, 4.209e-02, -2.631e-02, 1.592e-01, -3.820e-02, -5.688e-02, -1.343e-01, -1.334e-01, 3.546e-02, -5.380e-04), r);\n\tr = MulAdd(s4_2, M4(9.549e-02, -7.248e-02, -1.325e-01, -1.463e-02, -1.133e-01, -1.068e-02, 3.268e-02, 8.634e-03, 7.654e-02, -1.712e-01, -2.000e-01, -8.355e-02, 2.194e-02, 5.199e-02, 6.314e-02, -2.819e-02), r);\n\tr = MulAdd(s4_3, M4(-4.752e-02, 2.464e-02, -1.639e-02, 1.384e-02, 3.763e-02, 7.014e-03, 7.251e-03, -3.992e-02, -2.566e-02, 1.835e-02, 2.827e-01, -1.739e-01, 1.858e-01, -4.782e-02, -1.730e-01, -8.191e-02), r);\n\tr = MulAdd(s4_4, M4(4.778e-02, 4.010e-01, 5.081e-03, -9.438e-02, -7.711e-03, -1.183e-02, 4.648e-02, 3.270e-02, 2.426e-02, -1.146e-01, -9.082e-02, -4.269e-02, -1.494e-01, 8.305e-03, -1.883e-02, -8.324e-02), r);\n\tr = MulAdd(s4_5, M4(-9.889e-02, 1.005e-01, 1.832e-01, 4.781e-02, -8.160e-02, -7.781e-02, 1.390e-01, 1.247e-03, -1.654e-01, -2.202e-02, 8.227e-02, 1.056e-02, -8.250e-02, 7.482e-02, -1.573e-02, 1.059e-01), r);\n\tr = MulAdd(s4_6, M4(1.319e-01, -6.502e-03, -5.332e-02, -7.135e-02, -6.270e-03, -6.166e-02, 6.672e-02, 5.700e-02, 7.430e-02, 1.376e-02, 3.540e-02, 9.783e-02, 5.452e-02, -2.676e-02, -2.449e-02, -1.114e-01), r);\n\tr = MulAdd(s4_7, M4(-1.140e-01, 8.221e-02, -9.009e-02, -2.045e-02, 1.120e-01, 3.351e-02, 9.168e-02, 8.984e-02, 6.165e-02, 5.846e-03, -1.170e-01, 9.888e-02, -5.968e-02, -1.768e-02, -1.493e-02, 3.218e-02), r);\n\tr = MulAdd(s4_8, M4(-3.808e-03, 6.917e-02, -1.208e-02, -8.708e-02, 1.538e-01, -1.203e-02, -3.871e-02, -6.714e-02, 5.404e-02, -1.747e-02, -9.208e-02, 1.674e-03, 2.795e-02, -2.504e-02, 8.272e-02, -1.598e-02), r);\n\tr = MulAdd(s5_0, M4(1.849e-02, -1.106e-01, -1.307e-01, -1.809e-02, 2.501e-01, 3.170e-02, -3.167e-02, 1.846e-02, -5.607e-02, 3.111e-02, 1.516e-01, 1.052e-01, -8.117e-02, 2.545e-03, 1.696e-01, 5.196e-02), r);\n\tr = MulAdd(s5_1, M4(-3.450e-02, 3.294e-02, 1.150e-01, -9.631e-02, -2.406e-01, -2.215e-01, 1.461e-02, 9.308e-02, 9.157e-02, 2.553e-01, 7.148e-02, 1.042e-02, 7.841e-02, -7.270e-02, 9.864e-02, 1.496e-01), r);\n\tr = MulAdd(s5_2, M4(5.166e-02, 4.302e-02, -7.258e-03, 5.968e-02, -1.219e-02, -4.505e-02, 2.568e-01, -9.986e-02, -2.914e-02, 1.338e-01, 4.162e-02, 5.395e-02, -1.360e-01, -2.342e-02, 1.640e-01, 1.126e-01), r);\n\tr = MulAdd(s5_3, M4(5.679e-03, -1.634e-02, -2.614e-01, 6.877e-03, -2.579e-02, -2.627e-01, -4.804e-02, -5.215e-02, -3.290e-02, -6.036e-02, 5.714e-02, -1.647e-01, 2.247e-01, -1.278e-02, -1.708e-01, 1.154e-01), r);\n\tr = MulAdd(s5_4, M4(-3.261e-02, 4.729e-02, 5.397e-02, -1.239e-01, 6.622e-02, 3.045e-01, 2.128e-01, -4.741e-01, 2.397e-01, 1.441e-02, 8.847e-03, 1.231e-01, 1.921e-01, -3.118e-02, -1.782e-02, -1.320e-01), r);\n\tr = MulAdd(s5_5, M4(-6.610e-04, 2.221e-02, 1.163e-01, 2.642e-02, 1.497e-03, -2.122e-01, 1.083e-01, 7.362e-02, 7.281e-02, 1.397e-01, 4.682e-02, 3.093e-01, 7.155e-02, 1.126e-02, -1.913e-01, 1.475e-02), r);\n\tr = MulAdd(s5_6, M4(-8.450e-02, -1.207e-01, -1.391e-01, -4.209e-02, 1.201e-01, -1.023e-01, 2.736e-01, 2.171e-01, -4.266e-02, 9.532e-02, 6.658e-02, 4.056e-03, -9.055e-02, 3.366e-02, 1.447e-01, 5.828e-02), r);\n\tr = MulAdd(s5_7, M4(1.398e-01, 1.394e-01, -3.104e-01, -1.527e-02, -1.108e-01, -2.226e-01, -3.162e-01, 4.604e-01, -1.103e-01, -2.872e-02, 5.296e-02, 6.879e-02, 1.880e-01, -2.118e-03, 3.585e-02, 2.129e-01), r);\n\tr = MulAdd(s5_8, M4(6.985e-02, -2.443e-02, -4.665e-02, -5.924e-02, -1.070e-01, 1.001e-01, 2.506e-02, -8.091e-02, 1.955e-02, 1.376e-02, 1.636e-01, -3.354e-02, -1.254e-01, -1.351e-02, 1.439e-01, 1.434e-01), r);\n\tr = MulAdd(s6_0, M4(2.055e-01, -9.397e-02, 1.412e-01, 1.193e-01, -7.398e-02, 2.422e-02, 4.889e-02, 6.445e-02, -1.966e-01, -1.331e-01, 8.664e-02, 1.070e-01, -1.076e-01, -3.743e-03, -3.440e-02, 1.573e-01), r);\n\tr = MulAdd(s6_1, M4(-1.183e-01, -2.183e-01, 1.809e-01, -2.173e-01, 1.747e-01, -7.500e-02, 7.648e-02, 2.389e-02, -1.144e-01, -3.135e-02, -1.397e-01, -4.562e-02, 1.011e-01, -5.550e-02, 3.267e-02, 6.254e-02), r);\n\tr = MulAdd(s6_2, M4(-1.003e-01, 8.644e-03, -1.189e-01, 2.301e-02, -2.309e-02, 1.970e-02, -9.311e-02, 1.215e-02, -1.689e-01, 8.210e-02, -1.385e-02, 4.341e-02, 1.155e-01, -1.890e-01, -5.568e-02, -6.058e-02), r);\n\tr = MulAdd(s6_3, M4(-9.299e-02, -2.571e-01, -2.069e-01, 3.947e-02, 4.162e-02, 1.204e-01, 2.203e-01, -9.760e-02, -4.572e-02, -1.029e-01, -4.367e-03, 9.108e-02, -2.537e-01, -6.520e-02, 3.719e-02, -1.694e-01), r);\n\tr = MulAdd(s6_4, M4(2.415e-01, 3.740e-01, 3.292e-01, -1.215e-01, -1.114e-01, -4.160e-02, 5.061e-03, 4.549e-02, 2.401e-02, -6.357e-02, -2.312e-01, -3.438e-02, 4.018e-02, -5.289e-02, -1.294e-01, -1.304e-01), r);\n\tr = MulAdd(s6_5, M4(-1.445e-01, -2.017e-01, -9.538e-02, -1.315e-02, 2.716e-02, 4.953e-02, -9.832e-02, 1.230e-02, 5.241e-02, 1.703e-01, 1.064e-01, -8.697e-02, 5.406e-02, 2.517e-02, -7.605e-02, -1.602e-02), r);\n\tr = MulAdd(s6_6, M4(1.227e-01, -1.989e-01, -1.872e-02, 2.003e-01, 2.548e-01, -6.034e-02, 1.542e-01, -4.469e-03, 8.203e-02, 4.234e-02, 1.523e-01, 2.219e-02, 1.997e-01, -1.103e-01, -3.337e-01, 7.199e-02), r);\n\tr = MulAdd(s6_7, M4(-1.763e-01, 2.622e-02, 8.851e-02, 3.764e-01, -8.470e-02, -2.142e-02, 1.045e-01, 5.815e-02, 4.777e-02, -1.656e-03, -2.274e-02, 3.622e-03, -1.004e-01, 1.950e-02, -3.939e-01, 9.619e-03), r);\n\tr = MulAdd(s6_8, M4(1.669e-01, 3.680e-02, -2.683e-01, -1.763e-01, 7.757e-02, 1.858e-02, 5.891e-02, 7.372e-03, -1.652e-01, -6.328e-02, 1.398e-02, 1.452e-01, -2.534e-01, 1.047e-01, 6.606e-02, 1.251e-01), r);\n\tr = MulAdd(s7_0, M4(-4.698e-02, 4.001e-02, 1.513e-02, -6.184e-02, -1.538e-01, -5.059e-02, 1.702e-01, 5.881e-02, 2.812e-02, 8.479e-02, -1.627e-01, 7.281e-02, 1.658e-01, -3.580e-02, -1.803e-01, -4.138e-02), r);\n\tr = MulAdd(s7_1, M4(-3.242e-02, 2.335e-02, 2.019e-02, -1.190e-01, 3.045e-03, 7.206e-02, 3.620e-02, -3.594e-02, 7.757e-02, 8.746e-02, 1.343e-01, -1.438e-02, -1.177e-01, -3.528e-02, -4.854e-03, -3.678e-02), r);\n\tr = MulAdd(s7_2, M4(1.456e-01, 9.068e-02, -8.379e-02, -4.816e-02, -1.514e-02, 1.022e-03, -4.484e-02, 1.095e-01, 8.802e-03, 1.059e-02, -1.524e-02, 5.501e-02, 4.891e-02, -4.176e-02, 6.690e-02, 2.803e-02), r);\n\tr = MulAdd(s7_3, M4(4.880e-02, -9.778e-02, 7.139e-02, -3.403e-02, -1.265e-01, 1.243e-01, 4.718e-03, -9.577e-02, 1.154e-01, -6.257e-02, -5.989e-02, -1.084e-01, 1.630e-02, 1.882e-02, 3.142e-02, -1.523e-01), r);\n\tr = MulAdd(s7_4, M4(1.631e-02, 5.055e-02, 1.642e-01, 5.091e-02, 2.055e-01, -4.724e-02, -6.370e-02, 2.239e-02, -1.355e-01, -9.611e-02, 4.697e-03, -3.559e-02, 4.487e-02, 1.632e-01, 5.328e-02, 4.724e-02), r);\n\tr = MulAdd(s7_5, M4(-2.235e-02, 3.882e-02, -3.194e-02, 9.299e-02, -1.983e-02, 7.830e-02, 6.663e-02, -1.378e-01, 5.669e-02, 9.130e-03, 1.249e-01, 3.432e-02, 4.857e-02, -1.639e-01, -2.301e-02, 7.515e-02), r);\n\tr = MulAdd(s7_6, M4(-1.004e-01, 4.822e-02, 3.599e-02, -1.124e-02, 2.083e-01, 1.402e-01, -7.544e-02, -5.453e-02, -9.656e-03, -8.927e-02, -5.573e-03, -6.093e-02, 6.438e-02, 9.692e-03, -8.695e-03, 1.205e-02), r);\n\tr = MulAdd(s7_7, M4(2.545e-02, -9.701e-02, 3.757e-02, -6.665e-02, -9.585e-02, -9.654e-02, -2.686e-01, 1.593e-02, 2.550e-02, 2.506e-02, -8.576e-02, 1.587e-01, -1.345e-01, 7.874e-03, -1.132e-02, 7.404e-02), r);\n\tr = MulAdd(s7_8, M4(-9.947e-02, 2.029e-02, -9.657e-03, -9.297e-02, -3.285e-02, 2.794e-03, -1.467e-01, -1.324e-01, 1.945e-02, -4.082e-02, -3.194e-02, -5.236e-03, 2.245e-01, 1.092e-01, 8.064e-02, -4.513e-04), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.010e-02, -1.824e-02, 2.032e-02, -3.652e-02 };\n\tr = MulAdd(s0_0, M4(-2.802e-02, -5.156e-02, 1.206e-01, -3.892e-01, 9.234e-03, -2.731e-02, 1.182e-01, -6.746e-02, -2.030e-01, 6.598e-02, 3.799e-01, 3.176e-01, 3.402e-02, 3.375e-03, -2.049e-01, 3.869e-01), r);\n\tr = MulAdd(s0_1, M4(5.085e-02, 9.497e-03, -1.361e-01, 1.211e-01, 2.047e-02, -2.909e-02, 7.192e-02, -3.160e-02, 6.266e-01, -7.379e-01, 3.400e-01, 4.910e-01, -3.014e-02, -2.511e-01, -7.872e-02, 5.207e-03), r);\n\tr = MulAdd(s0_2, M4(5.088e-02, 2.924e-01, 2.247e-01, 3.032e-01, -9.986e-02, 9.435e-02, -9.937e-02, 6.549e-02, 1.634e-01, 3.651e-01, 7.896e-02, 4.499e-01, 1.107e-01, -8.795e-02, 1.298e-02, 3.925e-01), r);\n\tr = MulAdd(s0_3, M4(-1.226e-01, -2.052e-01, 9.700e-02, 3.455e-01, -9.883e-03, 5.352e-02, -1.109e-01, 1.370e-01, -3.751e-01, 1.816e-02, -1.321e-01, 2.390e-01, -2.378e-01, -3.816e-02, 3.457e-01, 2.798e-01), r);\n\tr = MulAdd(s0_4, M4(1.096e-01, -1.880e-02, -6.901e-02, 3.486e-01, 9.603e-02, -1.650e-01, 1.648e-02, 2.145e-01, 1.302e-01, 8.368e-02, 1.101e-01, 1.574e-01, -4.341e-01, 3.264e-01, -4.945e-02, -3.723e-02), r);\n\tr = MulAdd(s0_5, M4(-1.711e-01, 2.180e-01, 2.788e-02, -1.105e-01, -4.460e-02, 1.254e-01, -3.483e-02, 4.794e-03, 1.091e-01, 6.501e-02, 1.169e-01, 3.037e-01, -1.726e-01, -1.524e-01, 1.148e-01, -6.807e-02), r);\n\tr = MulAdd(s0_6, M4(-1.816e-02, 2.070e-01, 3.857e-03, -7.230e-02, 5.213e-02, -1.013e-01, -1.852e-02, 5.578e-02, -1.822e-01, 5.943e-02, -6.860e-02, 3.346e-01, 1.336e-02, 1.881e-03, 1.706e-04, -1.993e-02), r);\n\tr = MulAdd(s0_7, M4(-1.091e-01, -1.831e-01, 7.351e-02, 5.954e-02, -1.961e-01, 3.039e-02, 3.556e-02, 1.123e-01, -1.606e-01, -8.329e-02, -3.582e-02, 1.874e-01, 2.041e-01, 1.687e-01, 1.214e-01, -2.145e-01), r);\n\tr = MulAdd(s0_8, M4(-1.759e-01, 3.716e-01, 1.810e-01, 1.497e-01, 2.445e-01, 3.580e-02, -4.696e-02, 6.966e-02, -1.795e-01, -1.277e-01, 8.469e-02, 2.548e-01, 2.237e-02, -1.727e-01, 9.870e-02, -1.800e-01), r);\n\tr = MulAdd(s1_0, M4(-4.170e-02, -5.407e-02, -2.206e-02, -4.477e-02, 7.677e-02, -1.467e-01, 1.297e-01, -7.096e-02, -7.251e-02, 1.257e-02, -1.232e-01, -8.921e-02, 5.899e-02, 2.376e-02, -1.022e-02, 3.457e-02), r);\n\tr = MulAdd(s1_1, M4(-4.335e-02, 1.874e-03, -1.954e-02, -5.067e-02, -3.084e-02, -7.801e-02, -5.762e-02, -4.240e-02, -1.198e-02, 2.986e-02, 9.301e-02, 2.905e-02, 3.990e-02, -1.610e-01, 1.314e-02, 3.194e-02), r);\n\tr = MulAdd(s1_2, M4(4.938e-02, 1.901e-03, -2.677e-02, -9.100e-02, 2.205e-03, 1.424e-01, -6.446e-02, -1.117e-01, -6.649e-02, -5.324e-03, 4.897e-02, -7.976e-02, 1.293e-03, -5.757e-02, 4.666e-02, -8.052e-03), r);\n\tr = MulAdd(s1_3, M4(-1.181e-01, 8.895e-02, -3.002e-02, 2.494e-03, 6.048e-02, 9.794e-02, 7.071e-02, -1.105e-01, 2.595e-03, -4.194e-02, 9.149e-02, 5.148e-02, 4.510e-02, -1.003e-01, -2.136e-01, -9.856e-02), r);\n\tr = MulAdd(s1_4, M4(8.952e-02, 4.227e-02, -9.305e-02, -5.687e-02, 5.234e-02, -1.249e-01, 2.152e-02, 6.812e-02, 1.520e-01, -8.037e-02, -1.195e-01, 1.176e-01, 1.126e-02, 1.979e-01, -1.536e-01, 6.813e-02), r);\n\tr = MulAdd(s1_5, M4(7.858e-03, -1.131e-01, -1.845e-02, -2.885e-02, -1.907e-01, -2.352e-02, -9.424e-02, 7.438e-02, -1.977e-03, 1.714e-02, -9.526e-04, 1.184e-01, -7.097e-02, -1.900e-01, 1.357e-01, -1.178e-02), r);\n\tr = MulAdd(s1_6, M4(1.399e-02, 1.570e-02, 8.513e-02, 4.497e-02, -5.835e-02, -1.206e-01, 2.929e-02, -7.731e-02, -2.053e-02, -1.783e-02, 1.242e-02, -7.639e-02, 1.098e-02, 1.347e-01, -2.134e-02, -9.737e-02), r);\n\tr = MulAdd(s1_7, M4(5.280e-02, 1.558e-02, 5.262e-02, -2.740e-02, -9.981e-02, 1.174e-01, 1.792e-01, -5.477e-02, 2.825e-03, 1.184e-02, -1.019e-01, 4.856e-02, -7.495e-02, 2.933e-02, 3.793e-02, -4.763e-02), r);\n\tr = MulAdd(s1_8, M4(4.504e-02, -6.129e-02, -8.692e-02, 2.067e-01, 1.957e-01, 2.407e-01, -9.113e-02, -1.615e-01, -2.641e-03, -9.470e-02, -1.203e-02, 4.439e-02, 3.156e-02, -1.854e-02, 4.911e-02, -5.385e-02), r);\n\tr = MulAdd(s2_0, M4(-2.898e-02, 1.585e-02, -6.785e-02, -3.388e-02, -5.240e-02, -7.491e-02, 5.920e-03, 8.501e-02, -2.700e-02, 2.790e-02, -6.616e-02, 9.314e-02, 2.613e-03, 4.740e-02, -1.952e-02, 3.159e-02), r);\n\tr = MulAdd(s2_1, M4(2.105e-01, -1.568e-01, 7.612e-02, -8.321e-02, 4.020e-02, 6.669e-02, 6.664e-02, 1.237e-01, -1.096e-01, -1.486e-01, 3.096e-02, 2.008e-02, -4.263e-02, 1.113e-02, 1.185e-01, 1.281e-01), r);\n\tr = MulAdd(s2_2, M4(-1.161e-02, 1.698e-02, -4.592e-02, 6.924e-02, 4.046e-02, 1.279e-01, -4.622e-02, 3.728e-02, 3.625e-02, 7.702e-02, -6.480e-02, 1.553e-01, -1.106e-01, 2.186e-02, 1.083e-02, -1.135e-02), r);\n\tr = MulAdd(s2_3, M4(-1.065e-01, -9.866e-02, -5.545e-02, -9.504e-03, -4.676e-02, -4.768e-02, 3.364e-02, 1.528e-01, 2.147e-01, 4.792e-02, -2.744e-01, 1.018e-01, 3.624e-02, -5.829e-02, 5.161e-02, 1.064e-01), r);\n\tr = MulAdd(s2_4, M4(2.242e-01, -6.267e-02, 7.893e-02, -3.285e-03, 6.343e-02, -1.234e-02, -8.881e-03, 5.795e-02, -2.264e-01, 2.534e-01, -4.626e-01, 6.956e-02, 8.826e-02, -1.142e-01, -2.645e-01, -1.276e-02), r);\n\tr = MulAdd(s2_5, M4(3.328e-02, -2.416e-02, -1.345e-01, -1.615e-02, 5.329e-02, 2.259e-02, 1.267e-02, -2.176e-02, 4.219e-02, 2.430e-03, -2.007e-01, 6.283e-02, 9.299e-02, -5.957e-02, 1.196e-01, -1.401e-01), r);\n\tr = MulAdd(s2_6, M4(-1.372e-01, 5.980e-02, -4.472e-02, -2.230e-04, -2.846e-02, -1.046e-02, 9.732e-02, 7.188e-02, 8.358e-02, -9.484e-03, -4.320e-02, 4.657e-02, -1.000e-01, 6.414e-02, 5.864e-02, -4.058e-02), r);\n\tr = MulAdd(s2_7, M4(2.689e-01, 5.418e-02, 1.132e-01, 5.436e-02, 2.305e-02, 8.284e-02, -8.678e-02, 7.193e-02, -1.923e-01, 6.689e-03, 4.396e-03, -1.197e-01, 3.617e-02, -5.872e-02, -1.023e-01, 1.241e-02), r);\n\tr = MulAdd(s2_8, M4(2.724e-02, -6.824e-02, -3.476e-02, -6.227e-03, 1.405e-02, 1.160e-01, 2.937e-02, 1.500e-01, 5.183e-02, -6.483e-02, -3.462e-02, -1.028e-02, -2.252e-02, 3.933e-02, 9.059e-03, -1.151e-02), r);\n\tr = MulAdd(s3_0, M4(-6.616e-02, 7.941e-03, -7.667e-02, 9.626e-02, -5.899e-02, 5.067e-02, 1.123e-01, -7.155e-02, -9.984e-02, 8.379e-03, 1.885e-01, -4.505e-02, -1.377e-01, -7.615e-02, -1.460e-01, 1.968e-02), r);\n\tr = MulAdd(s3_1, M4(-6.391e-02, -1.772e-01, -5.519e-02, -1.564e-01, 2.967e-03, -1.374e-01, -2.468e-01, -3.889e-01, -2.793e-02, -1.800e-01, 1.317e-01, 3.061e-02, -2.984e-02, 7.570e-02, -9.489e-02, 2.382e-01), r);\n\tr = MulAdd(s3_2, M4(-7.658e-02, 1.526e-02, -1.444e-02, 1.143e-01, 3.034e-03, 3.447e-02, 1.152e-01, 6.495e-02, 8.716e-02, 4.289e-02, 2.336e-02, 6.799e-02, -1.327e-01, 1.032e-01, 6.880e-03, 8.986e-02), r);\n\tr = MulAdd(s3_3, M4(-3.334e-02, -4.563e-02, -7.153e-02, 5.970e-02, 1.871e-01, -6.696e-02, -6.439e-02, 2.520e-01, -1.090e-01, 3.417e-02, -1.971e-02, -9.568e-02, -1.305e-02, 1.863e-01, 1.025e-01, -2.313e-03), r);\n\tr = MulAdd(s3_4, M4(-1.017e-01, -3.506e-01, -9.725e-02, -3.023e-02, 1.184e-01, 7.168e-02, -4.717e-01, 3.008e-01, -3.493e-01, -6.348e-02, -9.199e-02, -7.848e-03, 1.379e-01, -1.452e-01, -2.035e-01, 8.566e-02), r);\n\tr = MulAdd(s3_5, M4(-9.457e-02, -1.684e-01, 7.912e-02, -4.504e-02, -1.344e-01, 1.922e-01, 2.359e-01, 3.596e-01, 7.699e-02, 2.859e-02, -5.206e-02, -2.060e-01, 9.835e-02, 3.742e-02, -4.881e-02, -3.242e-03), r);\n\tr = MulAdd(s3_6, M4(-8.423e-02, -5.352e-02, -8.182e-02, 9.426e-02, -2.998e-02, 3.028e-02, 5.481e-02, -2.197e-01, 1.147e-01, 6.420e-04, 1.152e-01, -3.011e-03, 8.877e-02, 9.533e-03, -2.035e-01, 1.808e-01), r);\n\tr = MulAdd(s3_7, M4(-5.532e-02, -3.217e-01, 1.923e-02, -1.066e-02, 6.336e-02, 3.110e-02, 7.060e-02, -6.651e-02, -1.623e-01, -1.309e-01, 3.931e-02, -1.972e-02, 7.495e-02, -2.356e-01, 5.781e-02, 3.142e-03), r);\n\tr = MulAdd(s3_8, M4(-8.396e-02, -7.026e-02, 3.163e-02, -4.612e-02, 2.304e-01, 1.903e-01, 6.762e-03, 3.414e-01, -1.054e-03, -1.374e-02, 2.692e-02, -8.614e-02, 1.355e-02, -5.218e-03, -1.359e-02, -6.684e-03), r);\n\tr = MulAdd(s4_0, M4(-4.822e-02, 6.151e-03, 1.156e-02, 1.258e-01, 1.186e-01, -3.688e-02, -4.881e-02, -2.237e-02, -1.432e-01, 1.391e-01, -7.915e-02, -4.125e-02, -9.872e-03, -1.622e-01, 5.435e-02, 9.903e-02), r);\n\tr = MulAdd(s4_1, M4(2.703e-02, 1.311e-01, 6.639e-02, 5.176e-03, -5.718e-02, -3.089e-02, -8.949e-03, -8.158e-03, -1.306e-01, 5.654e-02, 8.562e-02, 3.945e-02, -1.173e-01, 8.266e-02, -1.476e-01, 1.633e-03), r);\n\tr = MulAdd(s4_2, M4(-5.208e-02, 4.768e-02, 1.031e-02, 1.786e-01, 7.597e-03, 2.836e-01, -4.354e-02, -8.829e-02, 5.808e-02, 1.167e-01, 2.405e-03, 1.354e-01, 4.777e-02, -3.373e-02, -6.581e-02, -5.401e-02), r);\n\tr = MulAdd(s4_3, M4(1.481e-01, 3.910e-02, 1.066e-02, 2.328e-02, 3.709e-02, -5.371e-02, 3.497e-02, -1.132e-01, 1.859e-02, -6.759e-02, 3.889e-02, -5.446e-02, 5.095e-02, -8.579e-02, 4.652e-02, 1.072e-01), r);\n\tr = MulAdd(s4_4, M4(-9.275e-02, 1.607e-02, -8.003e-02, 3.099e-02, -7.704e-02, 7.382e-02, 8.479e-02, 5.053e-02, -9.539e-02, 8.376e-02, 1.122e-01, 7.184e-03, 5.598e-02, 1.336e-01, 4.726e-02, 5.561e-02), r);\n\tr = MulAdd(s4_5, M4(-6.532e-02, -1.142e-02, 2.389e-02, 6.100e-02, -5.159e-03, -8.185e-02, -1.234e-01, 9.162e-02, 3.504e-02, 1.170e-01, -1.275e-01, -1.137e-01, 2.591e-02, -1.459e-01, -1.475e-01, -8.061e-03), r);\n\tr = MulAdd(s4_6, M4(-5.724e-02, -7.243e-02, -1.139e-02, -1.672e-01, -4.244e-02, -1.267e-01, -2.326e-02, -9.063e-02, -5.881e-02, -4.040e-02, -7.768e-02, -2.173e-01, -1.426e-01, 9.559e-02, 6.449e-02, -7.141e-02), r);\n\tr = MulAdd(s4_7, M4(1.598e-01, 1.262e-01, 1.558e-01, -5.444e-02, 3.989e-02, -2.002e-02, 1.427e-01, 8.954e-03, -1.607e-02, 1.143e-01, -1.499e-02, 1.431e-01, 1.431e-01, 1.025e-01, -3.980e-03, 3.351e-02), r);\n\tr = MulAdd(s4_8, M4(-4.759e-02, -1.156e-03, -4.510e-02, -1.927e-02, 5.402e-02, 2.333e-01, 1.037e-01, 8.638e-02, 4.829e-02, 8.402e-02, 6.311e-02, -1.432e-01, 1.010e-02, -9.231e-02, -1.179e-01, -6.892e-02), r);\n\tr = MulAdd(s5_0, M4(2.913e-02, -2.549e-03, -1.849e-02, -1.047e-01, 1.137e-01, -1.432e-01, -1.483e-02, -2.535e-01, 1.068e-01, -2.117e-02, -5.043e-02, 7.363e-03, 1.117e-01, 1.255e-02, 3.333e-02, -1.697e-01), r);\n\tr = MulAdd(s5_1, M4(1.014e-01, 2.990e-02, -1.086e-01, -4.205e-02, 8.811e-02, 1.411e-01, 4.324e-02, 2.712e-02, -1.168e-01, -6.908e-02, 7.386e-02, -3.770e-02, -1.730e-02, 3.807e-01, -2.026e-02, -2.077e-01), r);\n\tr = MulAdd(s5_2, M4(7.198e-03, -1.615e-02, -7.113e-02, -7.417e-02, 3.233e-02, 1.465e-01, 3.877e-02, 1.170e-01, 1.342e-01, -3.204e-02, 1.353e-01, 1.315e-01, -1.601e-02, 1.509e-03, -1.582e-01, -1.458e-01), r);\n\tr = MulAdd(s5_3, M4(1.164e-01, 5.345e-03, 2.005e-02, -3.676e-02, 2.190e-01, 1.469e-01, -8.587e-02, -6.513e-02, -3.172e-01, -3.607e-02, 1.723e-01, 2.307e-02, 1.115e-02, -3.679e-02, 1.605e-01, 2.028e-01), r);\n\tr = MulAdd(s5_4, M4(2.060e-01, 2.299e-02, -2.166e-02, 4.765e-02, -2.165e-01, 2.464e-01, -2.905e-01, -5.862e-02, 3.866e-02, 3.496e-02, 1.835e-01, -1.279e-02, -1.741e-01, 2.865e-01, 6.864e-02, -1.401e-01), r);\n\tr = MulAdd(s5_5, M4(-1.086e-01, -2.790e-01, -1.446e-01, 1.313e-01, -1.805e-01, -2.065e-02, 9.124e-02, -1.430e-01, 3.229e-02, 1.767e-02, -1.588e-01, -7.295e-02, 6.204e-02, 1.200e-01, -1.326e-01, -5.273e-03), r);\n\tr = MulAdd(s5_6, M4(2.269e-01, -9.886e-02, 1.361e-01, -1.473e-01, -2.404e-01, 7.051e-02, -9.116e-02, -1.986e-01, -8.099e-02, -9.891e-02, -4.235e-02, -6.047e-02, -1.654e-01, 1.165e-01, 1.611e-01, -9.142e-03), r);\n\tr = MulAdd(s5_7, M4(2.170e-02, 2.024e-01, 2.867e-01, -8.679e-02, 3.076e-01, 3.922e-02, -8.530e-02, 5.478e-01, 5.273e-02, -2.640e-02, -1.919e-01, 1.131e-01, 1.696e-01, 5.603e-03, -3.013e-02, -1.121e-01), r);\n\tr = MulAdd(s5_8, M4(-8.068e-03, 3.940e-02, 3.067e-01, 6.644e-03, -6.139e-02, -2.007e-01, -9.687e-03, 3.392e-01, 1.211e-01, -1.120e-01, -1.171e-02, -3.860e-02, 1.217e-01, -2.424e-02, 1.843e-01, -1.736e-01), r);\n\tr = MulAdd(s6_0, M4(6.439e-02, -6.336e-02, -1.081e-01, 4.337e-02, -3.236e-02, 1.752e-02, 8.909e-02, -4.700e-02, -3.128e-02, -4.913e-02, 1.235e-01, -9.853e-02, -1.651e-02, 3.878e-01, -3.516e-02, -3.919e-02), r);\n\tr = MulAdd(s6_1, M4(2.277e-01, 4.336e-02, 7.852e-02, 1.576e-01, -1.563e-02, -1.959e-01, 1.693e-01, 1.596e-01, -1.672e-01, -6.992e-02, -5.763e-02, -2.148e-02, 6.415e-02, -1.158e-01, 7.301e-02, -8.661e-02), r);\n\tr = MulAdd(s6_2, M4(-4.668e-02, 8.039e-02, 2.044e-02, 2.014e-02, 4.289e-02, -9.399e-02, -9.409e-02, 1.101e-01, 6.680e-02, 1.579e-01, 1.659e-01, 6.766e-02, -1.477e-01, 8.359e-02, 5.109e-02, 9.460e-02), r);\n\tr = MulAdd(s6_3, M4(3.234e-01, 1.618e-01, -1.801e-01, -1.483e-01, -2.036e-01, 2.286e-02, 3.435e-02, 9.168e-03, 1.707e-01, 1.538e-01, -1.954e-01, 6.670e-02, -1.488e-01, 3.419e-04, 1.204e-01, -1.939e-02), r);\n\tr = MulAdd(s6_4, M4(-2.884e-01, 1.031e-01, -2.009e-01, -2.042e-01, -2.182e-02, -4.738e-02, -2.117e-03, -6.116e-02, 2.673e-02, -4.994e-01, 1.248e-01, -1.820e-01, -1.018e-01, 7.883e-02, -8.556e-02, -1.523e-01), r);\n\tr = MulAdd(s6_5, M4(-6.129e-03, 3.436e-01, -4.294e-02, 3.408e-02, -5.108e-02, 1.636e-02, 1.194e-01, -2.425e-02, -1.486e-01, 1.052e-01, -2.564e-02, 6.141e-03, -7.817e-02, -7.600e-02, 2.309e-02, -1.317e-01), r);\n\tr = MulAdd(s6_6, M4(-3.343e-01, 1.562e-01, 2.314e-02, -8.994e-02, -1.566e-01, -1.302e-01, -1.503e-01, -3.620e-02, 3.442e-02, -4.477e-02, 8.212e-02, 1.376e-02, -1.104e-01, 2.407e-01, 8.167e-02, 1.373e-01), r);\n\tr = MulAdd(s6_7, M4(1.755e-01, -2.458e-01, -8.140e-02, 5.062e-02, -7.652e-02, 1.068e-02, 1.579e-01, 7.307e-02, -5.127e-02, -1.075e-01, -1.052e-01, -1.181e-01, -1.447e-01, -1.229e-01, 7.682e-02, -3.210e-01), r);\n\tr = MulAdd(s6_8, M4(7.308e-04, -1.060e-01, 1.500e-02, 2.670e-01, -3.298e-02, -1.744e-02, 4.964e-02, -2.915e-02, 1.542e-01, 3.643e-02, -2.617e-02, 8.074e-02, -1.216e-01, -2.563e-02, -2.689e-02, 1.399e-01), r);\n\tr = MulAdd(s7_0, M4(9.782e-02, -5.249e-02, -1.006e-01, 1.151e-01, -1.402e-01, -3.647e-02, 6.410e-02, 9.094e-03, 4.262e-02, -3.584e-02, -1.978e-02, 5.485e-02, -2.607e-04, 7.551e-02, -6.126e-02, -1.940e-02), r);\n\tr = MulAdd(s7_1, M4(6.846e-02, 2.305e-01, -4.094e-02, 1.400e-01, -1.560e-02, -1.438e-02, 5.824e-05, -1.448e-02, -9.337e-02, -5.603e-03, 1.820e-02, 2.381e-02, 2.165e-02, -9.807e-02, -3.444e-02, -3.379e-02), r);\n\tr = MulAdd(s7_2, M4(-4.101e-02, -7.144e-02, 3.168e-02, -1.573e-02, -5.890e-04, 7.380e-02, -7.336e-02, -4.920e-03, 3.547e-02, 1.015e-01, 5.512e-02, 4.064e-02, -6.814e-02, -3.267e-02, -5.650e-02, 2.536e-02), r);\n\tr = MulAdd(s7_3, M4(1.159e-01, 4.143e-02, -7.666e-02, -3.528e-02, -1.557e-01, 1.066e-01, -1.218e-01, 1.546e-04, 1.202e-01, 2.015e-01, -5.828e-02, -1.662e-02, 1.083e-01, 1.395e-01, 4.536e-02, 3.132e-02), r);\n\tr = MulAdd(s7_4, M4(-5.859e-02, 3.619e-02, -4.449e-02, 3.329e-03, 1.145e-01, -1.256e-01, -1.127e-01, 3.612e-02, 5.740e-02, 1.154e-01, 1.674e-01, -1.153e-03, 1.617e-02, -1.630e-02, -9.418e-02, 8.744e-02), r);\n\tr = MulAdd(s7_5, M4(3.250e-02, -7.466e-03, 1.048e-01, 2.813e-02, 3.007e-02, -6.485e-02, -2.396e-02, 1.130e-01, 1.517e-02, -1.140e-01, 3.263e-02, 4.794e-02, 9.150e-03, -1.624e-01, -7.188e-02, -2.948e-02), r);\n\tr = MulAdd(s7_6, M4(-5.930e-02, -9.788e-02, 1.161e-01, 1.467e-02, -1.963e-02, 5.350e-02, 1.978e-02, -3.094e-02, -6.057e-02, 1.543e-01, -5.657e-02, -1.053e-01, -2.314e-02, 1.829e-02, 3.077e-02, 3.972e-02), r);\n\tr = MulAdd(s7_7, M4(-1.266e-01, 4.303e-02, -4.994e-02, 3.032e-02, -9.509e-02, 1.854e-01, -1.631e-02, 4.650e-02, -5.716e-02, -1.233e-02, -3.943e-02, -1.468e-01, -1.487e-02, 2.762e-02, 9.000e-02, 3.216e-02), r);\n\tr = MulAdd(s7_8, M4(1.010e-02, -6.407e-02, -2.538e-02, -5.266e-02, 7.357e-03, -6.038e-02, -1.984e-02, 3.594e-02, -7.398e-03, -1.875e-01, -3.417e-02, -1.130e-03, -7.340e-02, -7.423e-02, -4.463e-02, 3.237e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.679e-02, 2.861e-03, 2.983e-03, 1.786e-02 };\n\tr = MulAdd(s0_0, M4(1.458e-01, -1.057e-01, -3.860e-01, 3.604e-01, -5.817e-02, -8.183e-02, -6.805e-02, 8.234e-02, -5.423e-03, 5.963e-02, 2.290e-01, 3.974e-04, 2.429e-01, -1.556e-02, -9.961e-02, -1.299e-01), r);\n\tr = MulAdd(s0_1, M4(2.341e-01, -4.703e-02, 2.257e-02, 5.068e-01, 1.539e-01, 6.969e-02, -1.353e-01, 3.199e-04, -1.972e-01, 9.778e-02, -4.482e-01, 3.351e-01, 8.723e-02, -1.328e-01, 3.968e-01, -6.975e-02), r);\n\tr = MulAdd(s0_2, M4(-2.142e-01, 3.969e-02, -3.004e-01, -2.884e-02, -1.830e-02, 1.636e-01, 2.705e-02, -6.598e-02, 1.193e-01, -4.205e-02, -6.471e-01, 6.102e-01, 2.572e-01, -1.189e-01, -2.108e-01, -2.460e-01), r);\n\tr = MulAdd(s0_3, M4(3.241e-02, -1.809e-01, -6.209e-02, -2.740e-01, -9.664e-02, -4.631e-02, 1.004e-02, -8.167e-03, -2.651e-01, 1.124e-01, -3.589e-01, -5.007e-01, -5.856e-02, -2.368e-01, 1.615e-01, -4.301e-01), r);\n\tr = MulAdd(s0_4, M4(2.754e-02, 8.503e-02, 1.093e-01, -2.404e-01, -2.841e-03, -3.447e-02, 4.092e-02, 2.156e-01, -4.043e-01, 3.334e-01, -2.567e-01, -7.555e-01, 4.484e-01, -2.664e-01, -2.881e-02, -1.850e-01), r);\n\tr = MulAdd(s0_5, M4(-4.196e-02, 1.179e-01, -2.343e-02, -2.367e-01, 2.046e-01, 3.918e-02, 1.311e-01, 1.751e-01, 3.000e-01, -1.206e-01, -4.298e-01, 4.896e-01, 6.354e-01, 5.186e-01, 3.271e-01, -2.650e-01), r);\n\tr = MulAdd(s0_6, M4(-2.206e-01, -1.766e-01, 1.442e-01, 1.336e-01, 1.546e-01, 1.824e-02, 1.466e-01, -2.096e-01, -3.067e-01, 3.769e-01, -1.642e-01, 3.411e-01, -2.238e-01, 2.257e-01, -1.335e-01, -2.824e-01), r);\n\tr = MulAdd(s0_7, M4(5.319e-02, -1.473e-01, 9.736e-02, 2.883e-02, -3.570e-01, -6.722e-02, -7.487e-02, 2.148e-01, -4.199e-01, 3.485e-02, -5.580e-02, -3.259e-01, -2.798e-02, 1.914e-01, 2.524e-01, -1.967e-01), r);\n\tr = MulAdd(s0_8, M4(-1.292e-01, 1.673e-01, -1.227e-01, 2.136e-01, 3.612e-02, 5.502e-02, -4.655e-03, -9.540e-02, 2.594e-02, -4.818e-02, -1.172e-01, -4.448e-03, -7.485e-02, 6.047e-02, 1.883e-01, 3.448e-02), r);\n\tr = MulAdd(s1_0, M4(2.700e-02, -5.188e-02, 5.934e-02, 1.762e-01, 5.025e-02, -4.472e-02, -7.632e-02, -1.632e-02, -3.359e-02, 5.183e-02, 5.725e-02, 1.816e-01, 2.679e-02, -1.176e-01, 1.402e-01, 4.902e-02), r);\n\tr = MulAdd(s1_1, M4(1.645e-01, -4.533e-02, 1.421e-01, -2.275e-02, -4.301e-02, 4.713e-02, 2.986e-01, 6.367e-02, -6.663e-02, 1.499e-01, -4.491e-02, 2.421e-03, 1.310e-01, -9.423e-03, 7.218e-02, -6.969e-02), r);\n\tr = MulAdd(s1_2, M4(-3.249e-02, 1.498e-01, 6.415e-02, 1.244e-01, -1.128e-01, -4.648e-02, -1.526e-02, 8.026e-02, -5.200e-02, 5.942e-02, 1.186e-01, -1.078e-01, -2.788e-02, -1.210e-01, -1.752e-02, -4.173e-02), r);\n\tr = MulAdd(s1_3, M4(-6.615e-02, -3.023e-02, -2.472e-02, -9.554e-02, 5.002e-03, 4.139e-02, -1.589e-01, -1.873e-01, 1.275e-01, -7.109e-02, -9.129e-02, 7.003e-02, -2.288e-02, 2.433e-02, 9.158e-02, -2.862e-02), r);\n\tr = MulAdd(s1_4, M4(-6.587e-02, -3.614e-02, 1.100e-03, 6.735e-02, 1.356e-01, 9.111e-02, 9.717e-02, -1.448e-01, 8.483e-02, -1.013e-01, 3.991e-02, -1.816e-02, -1.464e-02, -1.150e-02, -4.866e-02, 2.912e-03), r);\n\tr = MulAdd(s1_5, M4(-4.282e-02, 1.452e-01, -9.649e-02, -1.703e-01, -3.860e-02, 5.221e-02, -2.984e-01, -2.036e-01, -1.365e-02, 8.505e-02, -9.315e-03, 2.664e-02, 6.935e-02, 5.125e-02, -1.443e-01, -1.144e-01), r);\n\tr = MulAdd(s1_6, M4(-1.330e-01, 2.596e-02, 1.121e-01, 5.089e-02, -1.685e-02, -1.642e-01, 2.425e-01, 1.509e-01, -2.067e-02, -1.228e-01, -5.734e-02, -2.298e-02, -7.177e-02, -2.879e-02, -5.220e-02, -5.664e-02), r);\n\tr = MulAdd(s1_7, M4(-4.861e-02, -1.351e-01, -4.328e-02, -4.571e-02, -5.402e-02, 4.793e-03, 3.349e-01, 5.714e-02, -1.283e-02, -3.564e-02, 1.486e-02, 5.641e-02, -4.300e-02, 1.057e-01, -7.635e-03, 1.724e-01), r);\n\tr = MulAdd(s1_8, M4(7.989e-02, 3.316e-02, -8.216e-02, -6.660e-02, -1.776e-01, -6.948e-02, 2.577e-02, 2.058e-01, -2.778e-02, -3.578e-02, -1.244e-02, -2.773e-02, -2.935e-02, 1.343e-02, -8.059e-02, 1.333e-01), r);\n\tr = MulAdd(s2_0, M4(6.232e-02, -3.149e-02, 1.008e-01, -1.106e-02, -3.848e-02, -8.277e-02, 6.132e-02, 5.282e-02, -3.018e-02, -3.332e-02, -4.491e-02, -4.111e-03, 2.646e-01, 6.702e-03, 8.115e-02, -9.399e-02), r);\n\tr = MulAdd(s2_1, M4(-5.254e-02, 1.544e-02, -1.533e-01, 9.559e-03, 1.267e-01, 1.300e-01, -6.107e-02, 3.549e-03, 7.784e-02, -2.019e-01, 4.710e-02, 1.812e-02, -1.439e-01, -5.178e-02, -3.601e-02, -1.172e-02), r);\n\tr = MulAdd(s2_2, M4(1.030e-02, 1.181e-01, 1.131e-02, 1.816e-02, -2.074e-02, 6.633e-02, -6.371e-02, 3.127e-02, 5.810e-02, -1.121e-01, -4.048e-02, 5.210e-02, 4.552e-02, -1.315e-01, 2.048e-02, 9.477e-02), r);\n\tr = MulAdd(s2_3, M4(-9.004e-03, 6.638e-02, 2.992e-02, 7.252e-02, -8.015e-03, 3.287e-02, -1.135e-01, 9.058e-02, -1.739e-01, 7.196e-02, 1.993e-01, 1.446e-02, -1.300e-01, 1.280e-01, -1.393e-01, -3.597e-02), r);\n\tr = MulAdd(s2_4, M4(-1.705e-01, 1.210e-03, 3.184e-02, 9.400e-02, 3.255e-02, 1.192e-01, -7.085e-03, -7.351e-02, -8.781e-03, -5.180e-02, 2.926e-02, -1.694e-01, 8.069e-02, 1.388e-01, 1.032e-01, 1.272e-01), r);\n\tr = MulAdd(s2_5, M4(-1.014e-01, 1.645e-02, -2.046e-02, -4.512e-02, 6.069e-02, 1.121e-01, -6.333e-02, -5.930e-03, 1.885e-01, 5.901e-03, 1.992e-01, -1.039e-01, 2.526e-02, 5.944e-02, 1.636e-01, -2.309e-02), r);\n\tr = MulAdd(s2_6, M4(3.584e-02, 2.289e-02, 4.466e-02, -1.670e-01, 3.483e-02, -1.253e-01, -4.845e-02, -1.067e-01, -3.520e-02, -4.303e-02, 7.572e-02, 7.915e-03, -6.681e-02, 5.621e-02, -9.969e-03, 7.440e-03), r);\n\tr = MulAdd(s2_7, M4(-1.897e-01, -9.183e-02, -7.758e-02, -2.510e-03, -5.537e-02, 1.171e-03, -2.415e-02, -3.851e-02, 8.360e-02, -5.710e-02, 2.774e-02, 2.952e-02, 1.164e-01, 8.237e-02, -1.203e-01, -2.561e-02), r);\n\tr = MulAdd(s2_8, M4(9.266e-03, -5.956e-02, 9.509e-02, 5.436e-02, -1.968e-02, -2.842e-02, -6.990e-02, -1.198e-01, -4.262e-02, -1.328e-01, 1.243e-01, -6.755e-02, 6.468e-02, -1.296e-01, -1.240e-01, -7.022e-02), r);\n\tr = MulAdd(s3_0, M4(1.413e-02, 4.781e-02, 1.564e-01, -6.482e-02, 1.809e-01, -9.167e-02, -2.371e-02, 2.177e-01, 7.312e-02, -1.957e-01, 8.278e-02, -1.701e-02, -1.665e-01, 2.045e-02, 2.567e-01, -3.322e-02), r);\n\tr = MulAdd(s3_1, M4(2.266e-01, 1.190e-01, -1.189e-01, -4.612e-03, -2.023e-01, 3.506e-01, 5.051e-02, -5.788e-03, 9.186e-02, -5.926e-02, -6.753e-02, 7.830e-03, -7.641e-02, 7.843e-03, 2.000e-01, -1.995e-01), r);\n\tr = MulAdd(s3_2, M4(-3.059e-01, 1.439e-02, -2.829e-02, -9.502e-02, -1.778e-01, 5.261e-02, 1.083e-01, 2.346e-01, 1.277e-02, 2.619e-02, -1.854e-01, 1.131e-01, -4.176e-03, 5.011e-03, 6.163e-02, 8.296e-02), r);\n\tr = MulAdd(s3_3, M4(-2.323e-02, -3.141e-02, -1.047e-01, -1.028e-01, 1.246e-01, 9.232e-02, -2.727e-01, -2.723e-01, -1.058e-01, 2.544e-02, -6.973e-02, -1.832e-01, -1.606e-01, -9.955e-02, -4.539e-02, 9.036e-03), r);\n\tr = MulAdd(s3_4, M4(2.623e-02, -4.559e-02, -1.179e-01, 9.006e-02, -4.979e-02, -1.042e-02, -3.673e-02, -4.996e-01, 7.021e-02, -1.124e-01, -5.125e-03, -1.706e-01, 5.848e-03, -1.593e-01, 1.029e-02, -5.513e-02), r);\n\tr = MulAdd(s3_5, M4(-7.010e-02, -3.848e-02, 1.459e-01, -1.935e-02, 3.735e-01, 1.714e-01, 8.493e-02, 1.259e-01, 4.226e-03, -7.313e-02, 4.575e-02, -6.714e-02, 5.353e-02, 1.139e-01, -4.538e-02, 4.854e-02), r);\n\tr = MulAdd(s3_6, M4(4.551e-02, -4.272e-02, 5.300e-02, -6.099e-03, -5.680e-02, -3.682e-01, 4.008e-02, 3.812e-01, 6.084e-03, 4.887e-02, 3.415e-02, 5.117e-02, 1.555e-03, -5.922e-02, 8.022e-02, 2.330e-04), r);\n\tr = MulAdd(s3_7, M4(2.511e-01, -1.463e-01, -1.421e-01, 3.722e-01, -1.537e-01, -3.415e-01, -4.897e-02, 1.385e-01, 2.084e-01, -6.924e-02, 4.013e-02, -7.006e-03, 1.067e-01, 1.622e-01, 8.471e-02, 1.176e-01), r);\n\tr = MulAdd(s3_8, M4(4.099e-02, 1.062e-02, -8.365e-02, 2.326e-01, -7.736e-02, 2.510e-02, 4.253e-02, -5.139e-02, -7.250e-02, 2.679e-02, -5.142e-02, 1.117e-02, -1.339e-01, -3.943e-02, -9.308e-02, 6.173e-02), r);\n\tr = MulAdd(s4_0, M4(-3.013e-02, 1.576e-01, 1.254e-02, 1.647e-02, 5.044e-03, -5.229e-02, -4.009e-03, -1.699e-02, 3.875e-02, -5.560e-02, 8.825e-02, 4.523e-02, 7.351e-02, 1.831e-02, -2.503e-02, -2.665e-02), r);\n\tr = MulAdd(s4_1, M4(6.452e-02, -5.458e-02, -5.632e-02, 1.595e-01, -7.125e-02, 1.512e-01, -9.220e-02, 1.126e-01, -7.965e-02, -1.315e-01, 1.354e-01, 5.626e-02, -2.081e-02, 5.125e-03, 6.471e-03, 6.599e-02), r);\n\tr = MulAdd(s4_2, M4(1.958e-02, 6.594e-02, 1.108e-01, 2.743e-02, 1.106e-01, 8.074e-02, 1.238e-02, 1.530e-01, -1.547e-03, -7.476e-02, -2.067e-02, 2.805e-02, 4.422e-02, -1.744e-02, -3.843e-02, 6.642e-02), r);\n\tr = MulAdd(s4_3, M4(-1.299e-01, 6.686e-02, 1.589e-01, -7.593e-02, 1.923e-01, 5.234e-02, -8.208e-03, -1.401e-03, 1.549e-01, -1.942e-01, -1.506e-01, 1.181e-01, 9.531e-02, 6.049e-02, 1.813e-01, 8.355e-02), r);\n\tr = MulAdd(s4_4, M4(-2.774e-02, -1.567e-01, -7.373e-02, 6.260e-02, 5.863e-02, -1.018e-02, -1.111e-01, -3.510e-02, -1.002e-01, 6.370e-02, -1.535e-03, 1.797e-01, 7.641e-02, -4.574e-02, -1.022e-01, -9.351e-02), r);\n\tr = MulAdd(s4_5, M4(-1.200e-01, -1.160e-02, -6.534e-02, -1.067e-01, 5.484e-02, 1.177e-01, 1.267e-01, -1.225e-01, -2.964e-02, 2.300e-02, -1.816e-01, -2.683e-01, -8.582e-02, 1.671e-02, -6.333e-02, 4.319e-02), r);\n\tr = MulAdd(s4_6, M4(4.055e-02, 7.781e-02, -3.199e-02, -2.787e-02, -1.216e-02, -7.212e-03, -1.433e-01, 2.704e-02, 4.327e-02, -4.886e-02, -9.572e-02, -6.567e-02, 3.094e-02, -1.714e-02, 7.660e-02, 1.517e-01), r);\n\tr = MulAdd(s4_7, M4(-1.141e-01, 1.709e-02, -1.614e-01, -1.094e-01, 9.059e-02, -7.837e-02, -4.849e-02, -8.270e-02, -6.884e-02, 1.992e-01, -8.652e-03, 1.141e-01, -1.778e-01, 8.916e-02, 6.338e-03, 3.520e-02), r);\n\tr = MulAdd(s4_8, M4(5.285e-02, 1.784e-02, 9.877e-02, -4.795e-02, -1.474e-02, 5.813e-02, 1.600e-02, -2.331e-01, 6.161e-02, 1.326e-02, -2.269e-02, -9.264e-02, -7.120e-02, -6.561e-02, -1.330e-01, -1.070e-01), r);\n\tr = MulAdd(s5_0, M4(-3.443e-02, 1.211e-02, 7.835e-02, 8.088e-02, 6.290e-02, -1.237e-01, 3.414e-02, -4.064e-02, -3.365e-02, -8.764e-02, 1.468e-01, -1.177e-01, 1.902e-01, 3.332e-03, 7.480e-02, 2.019e-01), r);\n\tr = MulAdd(s5_1, M4(1.156e-01, 1.688e-01, -1.575e-01, 2.182e-02, 2.382e-01, -1.034e-01, 9.477e-02, 1.114e-01, -4.447e-02, 1.162e-01, -1.532e-02, -1.506e-01, -2.357e-01, -2.335e-02, -2.261e-01, 9.156e-02), r);\n\tr = MulAdd(s5_2, M4(1.047e-01, -3.653e-02, -6.395e-02, 6.790e-03, -8.731e-02, 1.351e-02, -1.481e-01, 3.597e-02, -7.186e-02, -1.126e-01, -4.724e-02, 1.909e-02, 5.390e-02, 1.135e-01, 7.112e-02, 1.034e-01), r);\n\tr = MulAdd(s5_3, M4(1.474e-01, 1.468e-01, -4.779e-02, 3.081e-02, 2.681e-03, 2.823e-01, 2.609e-01, 1.840e-01, 5.953e-02, -6.490e-02, 6.995e-02, 1.097e-01, 1.500e-03, 9.816e-02, -7.883e-02, -2.856e-01), r);\n\tr = MulAdd(s5_4, M4(1.473e-01, 3.564e-01, -1.592e-01, 9.082e-02, 3.926e-01, 3.493e-02, 3.395e-02, -1.690e-01, -1.149e-01, 3.361e-01, 1.345e-01, -7.451e-02, -3.164e-01, -6.502e-02, -7.120e-02, -7.121e-02), r);\n\tr = MulAdd(s5_5, M4(1.170e-01, 6.699e-02, -9.870e-03, -2.853e-03, 6.475e-02, 6.402e-02, 3.185e-01, -5.999e-01, -1.418e-02, -6.196e-02, -2.738e-01, 1.501e-02, 1.551e-01, -9.429e-02, 9.613e-02, 1.801e-01), r);\n\tr = MulAdd(s5_6, M4(1.714e-01, 9.871e-03, 7.027e-02, -1.070e-01, 1.474e-01, 1.584e-01, -5.971e-02, -3.344e-01, -7.838e-02, -1.431e-01, 9.112e-02, -1.975e-02, -1.336e-01, 5.051e-02, 7.399e-02, -2.969e-01), r);\n\tr = MulAdd(s5_7, M4(6.431e-02, 1.743e-01, 6.981e-02, 1.151e-01, 1.525e-01, 3.157e-02, 2.851e-01, 1.275e-02, -2.096e-01, 2.519e-02, 9.657e-02, 1.002e-01, -9.906e-02, 2.752e-01, -4.120e-02, -3.626e-01), r);\n\tr = MulAdd(s5_8, M4(9.874e-02, 1.203e-01, 5.129e-02, 1.009e-02, 3.056e-01, -6.610e-03, 5.447e-03, 7.317e-01, -1.282e-01, -3.201e-02, 4.725e-02, 9.542e-02, 1.964e-02, -2.541e-01, -1.279e-01, -1.049e-01), r);\n\tr = MulAdd(s6_0, M4(1.578e-01, -3.237e-01, 2.350e-02, -6.793e-02, 8.381e-02, 4.005e-02, -7.837e-02, 1.254e-01, 1.684e-01, -1.441e-01, -1.255e-01, -9.504e-02, -8.860e-02, 5.765e-02, 8.474e-02, 2.351e-02), r);\n\tr = MulAdd(s6_1, M4(-1.006e-02, 1.862e-01, 9.833e-02, 2.697e-01, -1.419e-02, 1.021e-02, 5.005e-02, -1.079e-01, 2.202e-01, 3.633e-02, 1.289e-01, 2.221e-01, -1.699e-01, -1.060e-01, -1.264e-01, 1.018e-01), r);\n\tr = MulAdd(s6_2, M4(6.856e-02, -1.482e-01, -4.429e-02, -2.246e-02, -3.099e-02, -1.002e-01, -3.366e-03, -1.192e-01, -2.949e-02, 1.752e-01, -1.146e-01, 1.870e-01, -1.321e-01, -3.956e-02, -4.185e-02, -1.567e-01), r);\n\tr = MulAdd(s6_3, M4(4.985e-02, 3.060e-01, 1.996e-01, -2.055e-01, 8.430e-02, -2.116e-01, -1.391e-01, 6.589e-02, -1.074e-01, 1.493e-01, -1.257e-01, -9.184e-02, 2.587e-01, -9.467e-02, -1.248e-01, 3.444e-01), r);\n\tr = MulAdd(s6_4, M4(2.068e-01, -8.650e-02, -3.576e-01, -1.830e-01, 2.032e-01, 6.428e-02, 6.387e-02, -1.238e-01, 1.180e-01, -6.822e-02, -9.796e-02, -3.811e-02, -3.004e-02, -1.787e-01, 1.575e-01, 1.338e-01), r);\n\tr = MulAdd(s6_5, M4(4.840e-02, 3.701e-01, -1.104e-01, 8.398e-02, 2.643e-02, -7.537e-02, 5.299e-02, 3.334e-02, -2.874e-01, -1.612e-02, 8.122e-02, 8.529e-02, 5.994e-02, -4.841e-02, 3.470e-02, -9.663e-02), r);\n\tr = MulAdd(s6_6, M4(2.399e-01, -1.344e-02, 4.854e-02, -7.704e-02, 2.154e-01, -7.763e-02, -1.018e-01, 1.362e-01, -1.389e-02, -8.421e-02, 2.387e-02, 1.391e-01, -1.868e-01, -1.023e-02, 9.095e-02, 7.046e-04), r);\n\tr = MulAdd(s6_7, M4(-3.735e-01, -1.332e-01, -3.959e-03, -1.446e-01, -6.002e-02, 6.089e-02, 8.194e-02, -1.282e-01, -9.532e-02, -6.605e-02, 5.474e-02, -2.218e-02, 9.658e-02, -1.103e-01, -5.073e-01, 1.831e-01), r);\n\tr = MulAdd(s6_8, M4(-6.805e-02, -1.718e-01, -1.616e-01, 8.859e-01, -9.957e-02, -2.877e-02, 8.855e-02, 1.533e-03, 2.438e-01, -3.730e-02, 7.614e-03, -2.106e-02, -1.311e-01, 4.054e-02, -3.424e-01, -1.383e-01), r);\n\tr = MulAdd(s7_0, M4(6.965e-03, -5.751e-02, -8.842e-03, 1.654e-02, 9.443e-02, 3.511e-02, -8.971e-02, 2.087e-01, -1.560e-01, -1.594e-01, -4.946e-03, -1.539e-01, -5.362e-02, 3.822e-02, 1.008e-01, -8.965e-02), r);\n\tr = MulAdd(s7_1, M4(-7.483e-02, 1.594e-01, 1.747e-02, -4.957e-02, -8.034e-02, 3.226e-03, -9.016e-02, 6.601e-02, 6.784e-02, 9.068e-02, 1.376e-02, 1.284e-01, -6.647e-02, -1.523e-01, 1.083e-01, -1.671e-01), r);\n\tr = MulAdd(s7_2, M4(3.809e-02, -2.300e-01, 9.337e-02, -7.427e-02, 2.687e-02, 7.178e-02, -3.732e-02, 1.850e-01, 9.315e-02, -5.495e-02, -1.183e-02, -1.315e-02, -3.891e-02, -5.993e-02, 3.488e-02, 6.137e-03), r);\n\tr = MulAdd(s7_3, M4(-3.894e-02, -1.127e-02, -3.305e-03, -1.909e-01, 7.313e-02, -2.764e-02, -1.817e-03, 6.986e-02, 1.268e-03, 7.042e-02, -4.240e-02, 8.969e-02, -4.727e-02, 7.670e-02, 4.900e-02, 4.966e-02), r);\n\tr = MulAdd(s7_4, M4(-4.756e-04, 5.827e-02, -1.501e-02, -2.065e-02, -3.107e-02, 5.694e-02, -1.732e-01, 1.295e-01, 9.486e-02, 4.963e-03, 1.125e-01, -1.603e-02, -1.566e-02, 8.881e-03, -1.428e-01, 1.537e-02), r);\n\tr = MulAdd(s7_5, M4(-1.593e-01, -3.419e-02, -6.503e-02, 2.058e-01, 5.016e-02, -6.579e-02, -5.439e-02, 5.561e-03, -1.958e-02, -5.906e-02, -5.460e-02, -1.838e-01, 1.928e-01, 8.075e-02, 3.020e-02, -4.424e-02), r);\n\tr = MulAdd(s7_6, M4(9.986e-02, -1.588e-02, 4.622e-02, 7.410e-02, 1.925e-01, -6.696e-02, -4.680e-02, 4.967e-02, -1.223e-01, 2.824e-02, -2.625e-02, 3.808e-02, -8.269e-02, -1.127e-01, 2.749e-02, 9.222e-03), r);\n\tr = MulAdd(s7_7, M4(6.322e-02, 1.169e-01, -5.795e-02, -1.079e-03, -7.010e-02, 1.980e-01, -3.895e-02, -6.577e-02, -1.422e-01, 3.416e-02, -4.720e-02, -1.617e-01, 2.709e-02, 8.447e-02, -1.373e-01, 3.151e-02), r);\n\tr = MulAdd(s7_8, M4(-1.497e-01, -5.371e-02, 1.870e-02, 4.774e-02, 6.793e-03, -8.559e-02, 3.785e-02, -5.313e-03, 1.966e-02, 2.851e-02, -6.064e-03, 1.514e-01, 2.522e-01, 1.173e-01, 9.527e-02, 1.197e-01), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 5.171e-03, -3.519e-03, 1.162e-02, 4.614e-03 };\n\tr = MulAdd(s0_0, M4(-3.824e-03, 1.984e-02, -1.947e-01, 9.803e-03, 2.174e-01, -3.263e-02, -1.526e-01, 1.593e-03, -1.912e-02, -1.175e-01, -1.088e-01, -8.861e-02, -8.019e-02, 3.020e-02, 4.746e-02, -3.358e-02), r);\n\tr = MulAdd(s0_1, M4(-1.177e-01, 8.201e-02, 1.411e-01, 3.350e-03, 4.358e-02, -1.561e-01, -6.960e-02, 2.106e-01, 1.618e-01, -6.133e-02, -2.230e-03, -3.605e-03, -1.173e-02, -1.137e-01, 6.437e-03, -1.214e-02), r);\n\tr = MulAdd(s0_2, M4(8.418e-02, -1.156e-02, -1.589e-02, 7.733e-04, 1.901e-02, -2.164e-01, 7.217e-03, -5.674e-02, 1.313e-01, -2.424e-01, 3.826e-02, 5.194e-02, 8.220e-02, -1.985e-01, 3.844e-02, 2.949e-02), r);\n\tr = MulAdd(s0_3, M4(1.491e-01, -1.970e-01, 1.615e-02, 4.271e-02, 5.862e-02, 5.701e-02, -6.334e-02, 7.912e-02, -9.144e-02, -1.073e-01, 3.700e-02, 1.672e-02, 1.982e-03, -1.455e-03, -1.904e-02, 7.679e-02), r);\n\tr = MulAdd(s0_4, M4(-1.377e-01, -1.900e-01, -8.234e-02, -6.595e-02, 1.306e-02, 1.309e-01, -5.066e-02, 8.366e-02, -1.082e-01, -9.153e-02, 8.381e-02, 1.153e-01, -1.096e-01, 4.144e-02, 1.572e-01, -9.698e-02), r);\n\tr = MulAdd(s0_5, M4(6.954e-02, 1.007e-01, 5.669e-03, 6.376e-02, -8.465e-02, -1.026e-01, -9.748e-02, -6.989e-03, 5.987e-02, -9.004e-02, -1.457e-01, 1.234e-01, 1.343e-01, 6.650e-02, 4.572e-02, 1.591e-02), r);\n\tr = MulAdd(s0_6, M4(-1.079e-02, 2.281e-01, -5.435e-03, -4.308e-03, -3.168e-02, 1.446e-02, 5.164e-02, -1.238e-01, 1.077e-01, -1.439e-01, 3.583e-02, 7.127e-03, -2.933e-02, 1.393e-01, -4.583e-02, -2.124e-02), r);\n\tr = MulAdd(s0_7, M4(-9.039e-02, -1.761e-02, 1.885e-01, 1.782e-02, 3.468e-02, 1.284e-01, 1.500e-01, 1.329e-01, 4.006e-02, 7.862e-02, -4.609e-02, 8.688e-02, 6.303e-02, -2.599e-01, -7.164e-02, -9.295e-02), r);\n\tr = MulAdd(s0_8, M4(-9.183e-02, 9.019e-02, -1.442e-01, 3.553e-02, -1.751e-02, -2.352e-01, -1.772e-01, 1.164e-01, 2.843e-02, -1.063e-01, -3.228e-02, 9.867e-02, -2.188e-01, 8.323e-02, 6.436e-02, 7.404e-03), r);\n\tr = MulAdd(s1_0, M4(1.096e-01, -7.150e-02, -2.326e-01, 3.074e-02, 6.687e-02, 4.780e-02, -2.172e-02, 6.202e-02, -3.545e-02, -8.431e-02, 2.420e-02, 9.476e-03, 2.568e-02, -5.384e-02, -2.290e-02, 5.260e-02), r);\n\tr = MulAdd(s1_1, M4(4.047e-02, -1.417e-01, 3.742e-01, 2.130e-01, -1.026e-02, 2.140e-01, -2.203e-01, 8.287e-02, 3.059e-03, -5.168e-02, 7.797e-02, -7.983e-03, -4.622e-02, -1.208e-02, -2.153e-01, 1.757e-01), r);\n\tr = MulAdd(s1_2, M4(3.949e-02, -3.499e-01, 2.211e-02, -4.854e-02, -3.249e-02, -8.875e-02, 1.019e-01, 9.838e-02, -2.568e-02, 6.213e-02, 1.026e-01, 8.773e-02, 3.195e-02, -2.138e-01, -9.769e-03, 1.023e-01), r);\n\tr = MulAdd(s1_3, M4(3.489e-01, 7.578e-02, -1.384e-01, -1.000e-01, 2.159e-01, -1.537e-01, 8.139e-02, 1.081e-01, 6.928e-02, 3.479e-03, -2.065e-01, 4.685e-02, 1.345e-01, -5.114e-02, 1.397e-03, -3.190e-04), r);\n\tr = MulAdd(s1_4, M4(-1.131e-02, -3.310e-01, -2.831e-01, -1.713e-01, -4.212e-02, 1.771e-02, 2.622e-02, 7.984e-02, -1.656e-02, 3.108e-02, 1.089e-01, -3.210e-02, -1.209e-01, -7.105e-02, -2.352e-01, -4.034e-03), r);\n\tr = MulAdd(s1_5, M4(4.338e-01, 2.230e-01, 1.184e-01, 1.444e-01, -2.695e-01, -2.069e-01, -5.883e-02, 5.791e-02, 1.479e-01, -6.455e-02, -4.461e-02, 5.482e-02, 9.545e-02, 2.171e-01, -8.118e-02, 6.398e-02), r);\n\tr = MulAdd(s1_6, M4(-3.037e-02, -4.636e-02, 1.223e-01, -1.255e-01, -8.541e-02, 3.001e-02, 1.393e-01, -4.605e-02, -8.531e-02, 9.275e-02, 1.362e-01, -9.073e-03, -2.249e-02, 3.716e-03, 1.433e-01, 1.285e-01), r);\n\tr = MulAdd(s1_7, M4(3.612e-02, 3.724e-02, 2.517e-01, 3.506e-02, 6.147e-02, 1.538e-01, -2.245e-02, 3.803e-02, -1.459e-01, -4.336e-02, 3.873e-02, 2.860e-02, -5.779e-02, 2.527e-02, -8.128e-02, -1.848e-01), r);\n\tr = MulAdd(s1_8, M4(-2.045e-01, 3.185e-01, 1.897e-01, -3.090e-01, 1.303e-01, -4.772e-02, -1.929e-02, 5.857e-03, -8.579e-02, 1.297e-01, 3.964e-02, -1.187e-01, -5.910e-02, 8.492e-02, 7.102e-02, 2.462e-02), r);\n\tr = MulAdd(s2_0, M4(-5.622e-02, -3.406e-02, 1.625e-01, -2.395e-02, 7.981e-02, -8.697e-02, -1.340e-02, -7.849e-02, 8.512e-02, -6.636e-02, 6.628e-02, 1.257e-01, 9.518e-02, -1.967e-02, 3.263e-02, -1.632e-02), r);\n\tr = MulAdd(s2_1, M4(-8.568e-02, -2.104e-02, -9.114e-02, 2.791e-02, 4.465e-02, 5.472e-02, -1.561e-01, -8.667e-02, -8.310e-02, -2.272e-01, 8.860e-02, 3.920e-02, 2.148e-02, -4.088e-04, -3.415e-02, -9.479e-02), r);\n\tr = MulAdd(s2_2, M4(1.967e-02, -1.177e-01, -8.033e-02, -1.082e-02, 8.279e-02, -4.859e-02, 8.015e-03, -1.620e-03, -5.299e-02, -1.518e-01, 1.951e-02, -9.250e-02, 1.210e-03, 8.942e-03, 6.476e-02, 8.816e-02), r);\n\tr = MulAdd(s2_3, M4(6.961e-02, -2.541e-02, -8.874e-02, -8.571e-02, -6.565e-02, -8.235e-02, -7.851e-02, -2.462e-02, -5.045e-02, 1.492e-02, -1.060e-01, 9.583e-02, 7.954e-02, 1.517e-01, 9.226e-02, -5.570e-03), r);\n\tr = MulAdd(s2_4, M4(4.027e-03, 5.900e-02, -9.730e-02, 9.346e-02, 2.364e-02, -5.125e-02, -1.369e-01, -1.545e-01, -2.032e-01, -1.652e-01, -1.208e-01, -1.012e-01, 4.560e-02, -1.362e-01, 4.839e-02, 3.833e-02), r);\n\tr = MulAdd(s2_5, M4(-1.356e-01, -9.492e-02, 6.686e-03, 1.573e-01, 1.015e-01, -4.342e-03, -6.012e-02, 5.045e-02, -1.773e-01, 2.489e-02, -6.572e-02, -8.431e-02, 1.251e-01, 1.012e-01, -7.313e-02, 1.060e-01), r);\n\tr = MulAdd(s2_6, M4(4.918e-02, -2.224e-02, 1.051e-02, -7.640e-02, -4.369e-02, -3.976e-02, -1.676e-01, -2.006e-02, 8.876e-02, 2.020e-02, 5.471e-02, -9.058e-02, 4.734e-02, -6.211e-02, 9.784e-02, -5.968e-02), r);\n\tr = MulAdd(s2_7, M4(-3.554e-03, 1.414e-01, -7.057e-02, 2.734e-04, -1.762e-01, 2.698e-02, -4.323e-02, 6.518e-02, -2.096e-03, 2.544e-02, 1.057e-01, -1.179e-01, -3.325e-02, -9.233e-02, -9.906e-02, 5.904e-03), r);\n\tr = MulAdd(s2_8, M4(-5.982e-02, 1.036e-01, -7.251e-02, -5.751e-02, 2.274e-02, -5.704e-02, -2.759e-02, -3.227e-03, 3.411e-02, -2.169e-01, 4.238e-02, -5.646e-02, 6.166e-02, -8.737e-02, -5.433e-02, -2.193e-02), r);\n\tr = MulAdd(s3_0, M4(9.979e-02, 6.667e-02, -2.051e-01, 3.280e-01, 6.811e-02, 8.896e-03, -6.806e-03, -5.281e-02, -1.662e-02, 7.599e-02, -2.618e-02, -9.118e-04, -1.773e-01, -1.096e-01, 2.660e-01, -3.410e-02), r);\n\tr = MulAdd(s3_1, M4(7.067e-02, 1.609e-01, -4.891e-01, 1.395e-01, -2.836e-02, 4.949e-02, 5.419e-02, -1.912e-02, 1.265e-01, 9.371e-02, -2.274e-01, -2.388e-02, 1.294e-01, 1.215e-01, -6.401e-02, 2.552e-02), r);\n\tr = MulAdd(s3_2, M4(-3.948e-01, 1.481e-01, 1.238e-01, 8.896e-02, 5.564e-02, -4.630e-02, 8.182e-02, -5.120e-02, 3.065e-02, 2.289e-02, -4.132e-02, 5.470e-02, -5.811e-04, 4.488e-02, 4.771e-02, 1.252e-01), r);\n\tr = MulAdd(s3_3, M4(1.083e-01, 3.190e-01, 3.322e-02, 1.615e-02, -6.420e-03, 7.514e-02, 1.930e-02, 9.305e-02, -1.854e-02, -6.599e-02, -1.284e-01, 4.180e-02, -2.438e-01, -3.204e-01, -1.481e-01, 2.012e-01), r);\n\tr = MulAdd(s3_4, M4(1.541e-01, -1.294e-01, 3.407e-01, -2.888e-02, 2.320e-02, -1.261e-01, 1.244e-01, -9.444e-02, 1.904e-01, 7.003e-02, -2.908e-02, -4.724e-02, -1.739e-01, -1.706e-01, 2.284e-01, 3.447e-01), r);\n\tr = MulAdd(s3_5, M4(2.852e-01, -3.790e-02, -1.617e-01, 3.981e-01, 4.763e-02, -9.060e-02, -5.601e-02, -3.278e-02, 3.698e-02, 1.148e-01, 7.054e-02, 2.161e-02, -5.027e-02, 1.229e-01, 3.213e-01, -2.440e-02), r);\n\tr = MulAdd(s3_6, M4(6.498e-02, -2.845e-02, 4.051e-01, -4.428e-02, 6.620e-03, -6.252e-02, -1.915e-02, -8.686e-02, -8.271e-02, 5.187e-02, -2.114e-02, 3.542e-02, 3.496e-02, 4.899e-02, -1.401e-01, -2.056e-01), r);\n\tr = MulAdd(s3_7, M4(-8.188e-02, 8.977e-02, 3.044e-02, -3.808e-01, -1.818e-02, -8.713e-02, 1.459e-01, -1.006e-01, 6.703e-02, 7.376e-02, 4.647e-02, -8.068e-03, -8.089e-02, -4.263e-02, -1.011e-02, -5.059e-02), r);\n\tr = MulAdd(s3_8, M4(4.991e-03, 1.335e-01, 2.895e-01, -2.575e-02, 2.970e-02, 1.426e-02, -3.004e-02, -9.444e-02, -7.585e-02, 7.416e-02, 1.773e-01, 2.740e-02, -1.133e-01, -1.625e-01, -2.058e-01, 1.230e-01), r);\n\tr = MulAdd(s4_0, M4(-2.102e-02, 3.131e-02, -1.211e-01, -7.470e-03, -1.591e-02, -7.396e-02, 1.130e-01, 8.145e-02, 9.655e-02, -1.283e-01, -2.491e-02, -9.100e-02, -7.133e-02, 8.901e-03, -6.968e-03, 6.504e-02), r);\n\tr = MulAdd(s4_1, M4(-3.988e-02, 3.759e-02, -2.350e-01, -3.543e-02, -1.110e-02, -1.670e-01, -2.306e-01, -6.088e-02, 4.749e-02, 4.387e-02, 4.186e-02, -8.751e-02, 5.597e-02, -1.072e-01, -3.988e-03, 1.393e-01), r);\n\tr = MulAdd(s4_2, M4(1.889e-02, -4.900e-02, 1.151e-01, 5.871e-02, 1.303e-01, 5.656e-02, 2.618e-02, -2.952e-02, 1.727e-01, 1.147e-03, -1.948e-01, -1.243e-01, -4.239e-02, 7.484e-02, -9.689e-02, 9.238e-02), r);\n\tr = MulAdd(s4_3, M4(1.297e-01, -4.217e-02, -3.800e-02, -6.907e-02, 1.070e-01, -4.291e-02, -1.046e-01, 3.485e-02, -5.988e-02, 2.235e-02, -1.191e-01, 7.352e-02, -2.498e-01, 9.790e-02, -6.694e-02, 2.014e-02), r);\n\tr = MulAdd(s4_4, M4(-2.211e-02, 1.964e-01, -6.388e-03, 2.147e-01, -9.189e-02, 2.813e-02, 1.456e-01, -6.744e-02, -8.596e-02, 1.435e-01, -8.166e-02, -3.708e-02, 2.932e-02, -3.732e-03, -5.609e-02, 4.482e-02), r);\n\tr = MulAdd(s4_5, M4(5.921e-02, 2.883e-02, -3.935e-02, 9.551e-03, -4.956e-02, 6.194e-02, -4.123e-02, -1.835e-03, -1.528e-01, -9.703e-02, -1.265e-01, -5.136e-02, -4.934e-03, 2.766e-02, -2.725e-02, 1.749e-01), r);\n\tr = MulAdd(s4_6, M4(-2.997e-02, 6.308e-02, -9.442e-02, -5.405e-02, -4.856e-02, 1.301e-04, -2.347e-02, -3.285e-02, -5.298e-03, 1.065e-01, 9.091e-02, 1.112e-01, 1.438e-01, -2.032e-02, 9.683e-03, -7.034e-02), r);\n\tr = MulAdd(s4_7, M4(-6.707e-02, -1.933e-01, 1.524e-01, 1.439e-01, -7.010e-02, 1.156e-01, 3.741e-03, -5.321e-02, 1.095e-01, 3.952e-02, 1.725e-01, 5.637e-02, 2.454e-02, -1.182e-02, 3.138e-02, 4.080e-02), r);\n\tr = MulAdd(s4_8, M4(7.707e-02, -1.650e-01, -5.874e-02, 9.839e-02, 9.945e-03, -7.412e-02, -2.603e-02, -1.213e-02, -3.176e-02, 1.431e-01, 1.369e-01, -2.394e-02, 4.046e-02, -1.273e-01, 2.042e-03, 5.492e-02), r);\n\tr = MulAdd(s5_0, M4(-6.479e-02, -3.666e-02, 3.631e-02, -1.134e-01, 1.970e-01, -2.427e-02, 2.536e-01, 1.759e-01, 3.687e-02, -2.974e-02, -1.511e-01, -1.112e-01, 3.452e-03, 1.038e-01, -3.214e-02, -6.203e-03), r);\n\tr = MulAdd(s5_1, M4(-9.080e-02, -1.463e-02, 8.569e-02, -1.903e-02, -3.211e-01, -5.551e-02, -4.583e-02, 1.149e-01, 9.762e-02, 9.307e-02, 4.994e-02, -7.576e-03, 2.918e-01, 1.427e-01, -1.242e-01, -1.260e-02), r);\n\tr = MulAdd(s5_2, M4(1.430e-02, -1.786e-01, 8.093e-02, -7.370e-02, 2.378e-01, 7.734e-02, 6.844e-02, 2.921e-01, -3.155e-02, -2.868e-02, -4.562e-02, 9.424e-02, -2.106e-01, -1.462e-01, 2.395e-01, 4.309e-02), r);\n\tr = MulAdd(s5_3, M4(9.591e-02, -9.144e-02, -4.656e-02, 4.231e-02, 2.264e-02, 1.354e-02, -2.381e-01, -1.298e-01, -3.961e-02, -4.566e-02, -5.357e-02, -1.811e-01, -1.441e-01, 5.399e-02, 3.584e-01, 7.013e-02), r);\n\tr = MulAdd(s5_4, M4(-3.230e-02, -8.598e-02, -1.194e-01, 1.281e-01, 4.380e-01, -2.147e-01, 1.278e-01, -2.084e-01, 1.027e-01, -5.091e-02, 1.104e-02, -2.743e-02, 2.803e-01, -4.974e-02, 6.860e-02, -4.789e-02), r);\n\tr = MulAdd(s5_5, M4(-1.439e-01, -1.892e-01, -5.241e-02, -2.163e-02, -1.568e-01, 3.539e-01, 2.662e-02, -1.477e-01, -1.227e-01, -1.204e-01, -6.518e-02, 8.005e-02, 5.432e-02, 1.226e-03, -2.454e-03, 4.690e-02), r);\n\tr = MulAdd(s5_6, M4(-3.239e-02, 1.420e-02, -3.429e-02, -3.895e-02, 6.057e-01, 4.380e-02, -6.836e-01, 1.556e-01, 6.391e-03, -7.455e-02, 2.477e-02, -5.640e-02, -3.121e-01, 4.938e-02, -9.663e-02, 1.507e-01), r);\n\tr = MulAdd(s5_7, M4(3.230e-03, -5.809e-02, -1.020e-02, 4.602e-02, 1.941e-02, 9.688e-02, 3.482e-01, 9.593e-02, 6.448e-02, 1.075e-01, 7.606e-02, 3.724e-02, -6.785e-02, 3.216e-01, -3.050e-01, 1.372e-01), r);\n\tr = MulAdd(s5_8, M4(2.103e-01, 1.393e-01, 1.636e-01, -9.668e-02, 4.504e-02, -1.291e-01, -8.852e-04, -1.928e-01, 7.878e-02, -3.617e-02, 6.621e-02, 4.323e-02, -1.529e-01, 8.576e-02, 5.715e-02, 1.650e-01), r);\n\tr = MulAdd(s6_0, M4(-2.095e-01, 9.915e-02, -4.596e-02, -1.748e-01, -1.098e-01, -6.448e-02, 1.780e-01, 1.125e-01, -2.114e-01, 4.083e-01, 1.558e-03, 1.899e-02, 4.266e-02, 1.046e-01, 3.426e-02, -9.806e-03), r);\n\tr = MulAdd(s6_1, M4(1.583e-01, -9.478e-02, 4.572e-02, -1.527e-02, 1.246e-01, -7.757e-02, -2.957e-02, -4.569e-02, 3.186e-01, 1.932e-01, -3.262e-02, 1.058e-01, 2.350e-01, -1.374e-01, 2.152e-01, 1.027e-01), r);\n\tr = MulAdd(s6_2, M4(4.265e-02, 1.480e-01, 1.762e-01, -2.729e-01, -7.674e-02, -2.616e-01, -5.785e-02, -6.605e-02, -9.494e-02, -7.623e-03, 5.629e-02, 1.979e-02, 6.318e-02, 1.119e-01, -1.775e-01, 4.471e-02), r);\n\tr = MulAdd(s6_3, M4(1.416e-01, 6.286e-02, 2.753e-01, 4.370e-02, 2.555e-02, 1.217e-01, 2.916e-02, -8.370e-02, -3.478e-01, 9.489e-03, -2.076e-01, 6.405e-02, 7.222e-02, 8.956e-02, 1.820e-02, -1.510e-01), r);\n\tr = MulAdd(s6_4, M4(-4.919e-02, 3.645e-02, -2.264e-01, -1.779e-02, 3.702e-02, -1.291e-01, -1.130e-01, 8.156e-02, 7.529e-02, -1.063e-01, 9.065e-02, -3.642e-02, -2.478e-02, -5.106e-02, 2.422e-02, 1.540e-01), r);\n\tr = MulAdd(s6_5, M4(-2.097e-02, -9.303e-02, -5.754e-02, -1.113e-01, -2.005e-02, 2.385e-02, 2.058e-02, -8.553e-02, -2.611e-01, -2.323e-01, -2.546e-02, 9.836e-02, -3.118e-02, 1.810e-01, 4.481e-02, 6.158e-02), r);\n\tr = MulAdd(s6_6, M4(-1.205e-01, 3.792e-02, -2.491e-01, 1.104e-02, 6.093e-02, -6.249e-03, 2.042e-02, -4.415e-02, -7.268e-02, 4.343e-01, 2.416e-01, 8.859e-02, 1.997e-01, 2.222e-01, -1.322e-01, 3.828e-02), r);\n\tr = MulAdd(s6_7, M4(5.871e-02, -3.529e-01, 2.206e-02, 3.605e-03, -2.877e-01, 1.420e-01, -1.695e-02, -5.085e-02, 1.826e-01, -1.024e-01, -1.523e-01, -1.639e-01, 5.823e-02, -1.405e-01, -1.124e-01, -2.890e-02), r);\n\tr = MulAdd(s6_8, M4(4.023e-02, -3.477e-02, -7.664e-02, 6.820e-02, 5.723e-02, 1.819e-01, -9.973e-02, -1.035e-01, -1.219e-01, -2.891e-01, 2.666e-01, -3.550e-02, -1.744e-01, -7.098e-02, -9.127e-02, -9.753e-02), r);\n\tr = MulAdd(s7_0, M4(9.776e-02, 3.419e-02, 7.676e-02, -4.181e-02, -1.284e-01, 7.161e-02, 5.880e-02, -9.813e-02, 1.232e-01, -7.420e-02, -6.708e-02, -7.536e-02, -3.379e-02, -3.744e-02, -4.778e-02, 2.363e-02), r);\n\tr = MulAdd(s7_1, M4(-1.066e-01, -1.720e-02, 1.412e-01, 3.237e-03, 7.086e-03, 9.996e-02, -1.067e-01, 3.318e-02, -7.187e-02, 1.859e-01, 1.658e-02, 5.164e-02, 1.636e-01, 5.624e-02, -5.522e-02, 2.799e-02), r);\n\tr = MulAdd(s7_2, M4(-3.080e-02, 5.477e-02, -6.302e-02, 2.429e-02, -1.038e-01, -1.639e-03, 4.041e-02, -2.281e-02, 9.072e-02, -6.279e-02, 1.764e-02, -2.716e-02, -4.723e-02, -2.239e-02, -3.870e-02, -2.529e-02), r);\n\tr = MulAdd(s7_3, M4(-9.795e-02, -1.404e-01, 3.984e-02, 5.945e-02, -2.916e-01, -7.429e-02, -3.369e-02, 5.798e-02, -3.809e-02, -8.103e-02, 9.385e-02, -9.303e-02, -2.433e-02, 1.103e-01, 6.621e-02, -5.597e-02), r);\n\tr = MulAdd(s7_4, M4(6.292e-03, -4.406e-02, -3.898e-02, 1.096e-01, 1.658e-01, -3.856e-02, 2.735e-02, 1.190e-01, 1.086e-02, 6.992e-02, -6.964e-02, 1.049e-01, -8.304e-02, -2.879e-01, -2.934e-03, -6.641e-02), r);\n\tr = MulAdd(s7_5, M4(9.370e-03, -1.240e-01, 3.014e-02, 5.018e-02, 2.381e-01, -6.004e-02, -3.740e-02, -4.776e-03, -2.297e-02, 1.405e-01, -5.090e-02, -2.799e-02, -1.277e-02, 6.238e-02, -7.780e-03, -8.577e-02), r);\n\tr = MulAdd(s7_6, M4(-5.754e-02, 1.323e-01, 1.598e-01, 1.861e-03, 7.371e-02, 3.565e-02, -5.038e-02, -3.091e-02, -1.125e-02, -1.466e-02, 3.518e-02, 1.336e-02, 1.662e-01, 1.033e-02, 1.263e-02, 7.036e-03), r);\n\tr = MulAdd(s7_7, M4(3.799e-02, 7.738e-02, -1.830e-01, 1.088e-02, 2.345e-02, -8.913e-02, 4.484e-03, -7.087e-04, 2.995e-02, 6.962e-02, 6.441e-03, -1.072e-01, -1.717e-01, -6.303e-02, -6.593e-03, -3.927e-02), r);\n\tr = MulAdd(s7_8, M4(-5.977e-02, 3.553e-02, -5.340e-02, -1.383e-03, -1.593e-01, -5.221e-02, -6.791e-02, -4.706e-03, -3.981e-02, -8.876e-02, -5.683e-02, -4.046e-02, -4.187e-02, 6.329e-02, 1.353e-01, -4.508e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.995e-03, -1.224e-02, -1.444e-02, -2.582e-02 };\n\tr = MulAdd(s0_0, M4(1.748e-01, -1.615e-01, 1.196e-01, 9.843e-02, 4.946e-02, 1.034e-01, -1.539e-01, 1.314e-01, 7.507e-02, -2.103e-01, -4.577e-02, 4.777e-02, -1.197e-03, -7.288e-02, -3.140e-02, 3.566e-02), r);\n\tr = MulAdd(s0_1, M4(-7.328e-02, 1.621e-03, -1.413e-01, -1.474e-01, 2.385e-02, 7.395e-02, 1.558e-02, -1.473e-01, -2.019e-03, -1.272e-01, -8.000e-02, 8.127e-02, -5.842e-02, 1.357e-01, 1.823e-02, 3.446e-02), r);\n\tr = MulAdd(s0_2, M4(7.100e-02, 2.505e-01, 5.390e-02, -2.937e-02, -7.170e-02, -7.104e-02, -1.392e-01, 5.778e-02, 1.155e-01, -2.112e-01, -1.450e-02, 7.374e-02, 1.321e-02, 8.969e-02, 1.288e-02, -5.910e-02), r);\n\tr = MulAdd(s0_3, M4(1.684e-02, 2.163e-02, 7.136e-02, 8.144e-02, 1.947e-01, -2.859e-02, 9.785e-02, 1.356e-01, -9.415e-03, -1.112e-01, 7.570e-02, -1.091e-01, -2.500e-01, 1.681e-01, -9.164e-02, 8.519e-02), r);\n\tr = MulAdd(s0_4, M4(-1.422e-01, -9.273e-03, -1.359e-02, -3.367e-02, 1.059e-01, -5.308e-02, 1.559e-01, -9.744e-02, 2.041e-01, 1.342e-01, -6.243e-02, 9.553e-02, -1.557e-02, 2.216e-01, 4.646e-02, 3.626e-02), r);\n\tr = MulAdd(s0_5, M4(5.181e-02, -4.935e-02, 6.051e-02, 6.619e-02, 1.311e-01, -5.899e-02, -1.714e-02, 9.745e-02, 8.865e-02, -1.504e-01, -1.081e-01, -6.180e-02, -1.285e-01, 6.585e-02, -5.292e-02, -1.062e-01), r);\n\tr = MulAdd(s0_6, M4(4.277e-02, 1.043e-01, -1.369e-01, 6.853e-02, 5.930e-02, 3.663e-02, -4.107e-02, -1.006e-01, -9.768e-03, -3.706e-02, 6.806e-02, -9.002e-02, 5.096e-02, -1.300e-01, -7.291e-02, 1.431e-01), r);\n\tr = MulAdd(s0_7, M4(1.037e-01, -9.086e-02, 7.090e-03, 8.210e-02, -7.251e-02, -9.346e-02, -3.284e-02, 8.748e-02, 4.957e-02, 9.675e-02, 6.061e-02, -5.284e-02, 6.728e-03, -7.363e-02, 9.566e-02, 6.330e-02), r);\n\tr = MulAdd(s0_8, M4(-2.623e-02, 1.047e-01, -8.739e-04, -2.738e-02, 1.967e-01, 3.078e-02, 1.638e-01, 8.194e-02, -3.152e-02, 5.328e-02, 1.483e-02, -5.355e-02, -1.456e-01, -1.638e-03, 5.093e-02, 8.867e-02), r);\n\tr = MulAdd(s1_0, M4(-2.947e-01, -4.130e-01, 9.883e-02, -6.187e-02, -9.668e-02, -6.321e-02, 9.855e-02, 1.098e-01, 3.308e-02, -2.460e-02, 8.938e-02, 1.724e-01, 1.259e-01, 4.671e-02, -5.314e-02, 1.246e-02), r);\n\tr = MulAdd(s1_1, M4(1.907e-01, -3.510e-02, 1.183e-01, -2.284e-02, -4.719e-02, 2.314e-01, -2.440e-01, 7.838e-02, 3.864e-02, -1.380e-01, 4.039e-02, 6.139e-02, -5.638e-02, 1.308e-02, -5.999e-02, -8.289e-02), r);\n\tr = MulAdd(s1_2, M4(-6.946e-02, -2.491e-01, -3.473e-01, -3.905e-03, -2.543e-02, -1.474e-01, 1.076e-01, 6.376e-02, -1.941e-01, 1.551e-01, 9.853e-02, 2.544e-02, 1.372e-01, -2.749e-02, -7.466e-02, 1.019e-01), r);\n\tr = MulAdd(s1_3, M4(-5.817e-03, 1.422e-01, 2.063e-02, -1.789e-01, 2.091e-02, 1.212e-01, 9.807e-02, -2.877e-02, 1.791e-02, 5.875e-02, 7.261e-02, -4.916e-02, -1.170e-01, -1.439e-01, -3.418e-02, 7.885e-02), r);\n\tr = MulAdd(s1_4, M4(-5.330e-01, -6.688e-02, -8.916e-03, 1.409e-01, 1.859e-01, 2.055e-03, 8.773e-02, 1.338e-01, 1.177e-01, -1.205e-01, 2.362e-01, 9.410e-02, 2.480e-01, 2.385e-01, 5.357e-02, -3.786e-03), r);\n\tr = MulAdd(s1_5, M4(2.259e-01, 1.886e-01, -3.190e-01, -3.224e-01, 5.312e-02, -2.302e-02, -3.165e-02, -1.275e-01, -7.705e-02, 1.638e-01, -6.539e-02, -4.015e-02, -3.581e-03, 1.161e-02, -2.000e-02, 1.375e-03), r);\n\tr = MulAdd(s1_6, M4(-4.769e-02, 1.558e-01, -1.516e-01, -9.477e-02, -4.890e-02, 8.982e-02, -4.474e-02, 5.636e-02, -1.303e-01, -2.098e-02, 8.743e-02, 7.577e-02, 7.475e-02, -3.978e-02, 1.887e-03, 4.019e-02), r);\n\tr = MulAdd(s1_7, M4(4.887e-01, 1.727e-01, 1.540e-01, 1.387e-01, -6.586e-03, 1.452e-01, -1.666e-01, -3.717e-02, 1.178e-01, -7.970e-02, 1.419e-01, 1.066e-01, -4.486e-02, -1.489e-01, 1.204e-01, 9.282e-03), r);\n\tr = MulAdd(s1_8, M4(7.865e-03, 2.430e-01, 9.405e-02, 2.463e-01, -9.942e-02, -1.766e-02, 8.818e-02, 4.626e-02, -1.734e-01, 1.733e-01, 6.431e-02, 1.807e-02, 1.419e-01, 1.384e-03, 1.402e-01, -4.538e-03), r);\n\tr = MulAdd(s2_0, M4(-5.657e-02, 1.028e-01, 3.944e-02, -6.775e-03, -1.748e-02, 4.732e-02, -7.919e-02, 5.948e-03, -1.338e-02, -5.615e-02, -7.276e-02, 9.564e-02, 2.020e-02, -4.129e-02, -7.555e-02, -1.745e-01), r);\n\tr = MulAdd(s2_1, M4(5.225e-02, -4.729e-02, 1.293e-02, -3.269e-02, 1.056e-01, -7.550e-02, 4.480e-02, -1.898e-02, -6.565e-02, 7.022e-02, -7.420e-02, -2.915e-02, -4.022e-02, -1.859e-01, -3.307e-02, -6.515e-02), r);\n\tr = MulAdd(s2_2, M4(7.045e-04, 3.107e-03, 7.490e-02, -1.396e-02, -1.606e-02, -7.554e-02, 7.387e-02, 8.452e-02, 9.357e-02, -3.828e-02, -4.244e-02, 8.902e-02, 1.833e-03, -5.397e-02, -8.971e-02, 1.277e-01), r);\n\tr = MulAdd(s2_3, M4(1.095e-02, 1.951e-01, 2.717e-02, -1.180e-02, 1.469e-02, -6.277e-02, 4.388e-02, -2.989e-02, -6.168e-02, -1.791e-01, 5.965e-02, -2.100e-02, -3.944e-02, 4.708e-02, -5.720e-02, 9.102e-02), r);\n\tr = MulAdd(s2_4, M4(7.482e-02, 7.287e-02, 1.403e-02, -9.716e-03, 7.961e-02, -1.097e-01, -3.964e-02, 1.354e-01, 3.683e-02, 1.352e-01, 1.112e-01, 1.081e-01, -4.575e-02, -1.005e-01, 6.648e-02, 6.886e-02), r);\n\tr = MulAdd(s2_5, M4(-7.712e-02, -7.929e-02, 3.142e-02, 4.174e-02, -7.125e-04, 6.194e-02, -5.649e-02, 3.229e-02, -1.864e-02, 6.764e-03, 6.032e-02, 2.846e-02, 1.494e-01, -8.652e-03, -1.685e-02, -4.379e-03), r);\n\tr = MulAdd(s2_6, M4(6.293e-02, 1.324e-01, 9.080e-02, -1.523e-01, 7.835e-02, 1.507e-01, -3.016e-02, 2.567e-02, -6.138e-02, -7.353e-02, 3.133e-02, 3.352e-02, -2.064e-02, 9.068e-02, -8.710e-02, -7.440e-02), r);\n\tr = MulAdd(s2_7, M4(2.154e-02, 8.069e-02, -1.166e-02, 5.221e-02, 1.772e-01, -3.329e-03, 5.671e-02, -5.385e-02, 4.746e-02, 1.224e-01, 9.627e-02, -5.288e-02, 2.469e-02, 1.710e-01, -1.491e-02, 1.499e-01), r);\n\tr = MulAdd(s2_8, M4(-6.704e-04, 1.070e-01, 2.679e-02, -5.011e-02, 1.453e-01, 7.252e-02, -1.393e-01, -1.075e-01, -4.456e-04, 2.186e-02, -4.725e-02, -1.362e-01, 1.527e-02, 2.724e-02, 2.545e-02, 8.717e-02), r);\n\tr = MulAdd(s3_0, M4(3.017e-01, -1.501e-01, -1.961e-01, -7.417e-02, 1.654e-02, -1.148e-01, -6.167e-02, 7.964e-02, 9.864e-02, 9.110e-02, 5.213e-02, -4.144e-02, 1.049e-01, 1.637e-01, 8.912e-02, -1.214e-02), r);\n\tr = MulAdd(s3_1, M4(-3.045e-02, -2.177e-02, -3.691e-02, 4.217e-01, 2.646e-02, -9.921e-02, -2.771e-02, -3.207e-02, 6.110e-02, 1.510e-02, -1.159e-01, -3.572e-02, -6.402e-02, -1.384e-01, -6.026e-02, -3.557e-01), r);\n\tr = MulAdd(s3_2, M4(1.718e-02, -1.570e-01, 3.399e-01, -3.092e-01, 2.826e-02, 2.188e-02, 2.107e-02, -4.435e-02, 1.802e-01, -1.031e-01, -7.824e-03, 1.364e-02, -1.114e-02, -2.933e-01, 1.581e-01, -1.537e-01), r);\n\tr = MulAdd(s3_3, M4(2.864e-01, 1.998e-01, -2.899e-01, -1.224e-01, 2.005e-02, -1.923e-02, -1.397e-02, 1.772e-01, -5.151e-02, -2.643e-02, 2.733e-02, -6.762e-02, -2.189e-02, 8.119e-02, -5.560e-02, -2.332e-01), r);\n\tr = MulAdd(s3_4, M4(-1.826e-01, -1.490e-01, -2.736e-01, -4.559e-02, 1.390e-01, 6.365e-03, 1.035e-01, 9.957e-02, 1.353e-01, -5.694e-02, 5.557e-02, -9.781e-03, 1.258e-01, -5.048e-02, -3.724e-01, -2.814e-01), r);\n\tr = MulAdd(s3_5, M4(1.173e-01, -9.484e-02, -8.183e-02, 1.112e-01, -8.685e-02, 2.307e-01, 4.268e-02, 7.449e-02, 5.437e-03, -2.596e-02, 6.978e-02, 9.838e-02, -6.126e-02, -2.213e-01, 2.726e-02, -1.269e-01), r);\n\tr = MulAdd(s3_6, M4(-2.323e-02, -3.830e-02, 1.485e-01, -1.917e-01, 3.082e-02, 1.853e-02, -6.795e-02, 7.886e-02, 9.713e-03, 1.821e-01, 5.631e-02, 9.517e-02, -1.825e-01, -1.390e-01, 1.019e-01, 1.430e-01), r);\n\tr = MulAdd(s3_7, M4(1.461e-02, -1.586e-01, -2.037e-01, -6.212e-02, -2.341e-01, 4.101e-02, -4.673e-02, -5.431e-02, -1.974e-01, -5.334e-02, 1.144e-02, 1.407e-03, -3.401e-02, -9.971e-02, 7.023e-02, 1.888e-01), r);\n\tr = MulAdd(s3_8, M4(-9.911e-03, 5.079e-02, 1.603e-03, 1.441e-01, -1.524e-01, 2.441e-01, 3.075e-02, -7.364e-02, 6.665e-03, 5.184e-02, -3.165e-02, -1.421e-01, -1.619e-01, 6.534e-03, -1.063e-01, -2.173e-02), r);\n\tr = MulAdd(s4_0, M4(1.057e-01, 9.868e-02, 2.256e-02, -3.395e-02, -3.246e-03, 1.111e-01, -3.631e-02, 1.443e-02, -1.252e-01, 3.224e-02, 3.818e-02, 1.087e-02, -2.653e-02, 1.160e-01, 6.845e-03, 1.214e-01), r);\n\tr = MulAdd(s4_1, M4(3.058e-02, -6.265e-03, 1.794e-01, -8.032e-02, -2.890e-02, 8.468e-02, 1.151e-01, 1.418e-02, -4.156e-02, 5.453e-02, 1.970e-01, 5.255e-02, 1.206e-01, -4.842e-02, -1.200e-01, 5.315e-02), r);\n\tr = MulAdd(s4_2, M4(1.562e-01, -8.529e-02, -1.301e-01, -6.048e-02, -1.460e-01, 1.099e-01, -2.493e-02, -1.052e-01, 3.668e-02, -4.395e-02, 2.758e-02, 9.260e-02, -6.341e-03, 1.488e-01, 1.854e-02, -1.228e-01), r);\n\tr = MulAdd(s4_3, M4(7.929e-02, -9.089e-02, -1.114e-01, -9.822e-02, -1.339e-03, 4.170e-02, -3.721e-02, 1.412e-02, -1.804e-01, -2.298e-03, -8.089e-02, 5.274e-02, -6.457e-03, -2.378e-01, -1.845e-02, -1.076e-01), r);\n\tr = MulAdd(s4_4, M4(-1.244e-02, 1.377e-01, -3.954e-02, -1.343e-01, 1.463e-03, -7.157e-03, 1.271e-02, -3.069e-02, -1.434e-01, 7.176e-02, 1.542e-01, -1.758e-02, -4.979e-02, -3.072e-02, -1.705e-02, -4.326e-02), r);\n\tr = MulAdd(s4_5, M4(1.421e-01, -7.427e-02, -4.890e-02, 1.688e-02, 9.534e-02, -2.860e-02, -5.040e-02, -5.590e-02, -1.669e-01, 1.852e-02, 8.911e-02, -1.499e-03, 9.191e-02, -7.256e-02, -5.635e-02, -1.770e-01), r);\n\tr = MulAdd(s4_6, M4(9.657e-02, 1.743e-01, -6.738e-03, 9.367e-02, 5.639e-02, -1.266e-01, -5.179e-02, -1.271e-01, 1.155e-01, 9.245e-02, 8.212e-02, -8.191e-02, 3.643e-02, -1.235e-01, -5.844e-03, -1.685e-01), r);\n\tr = MulAdd(s4_7, M4(-6.505e-02, -1.373e-01, -7.947e-03, -4.844e-02, 1.172e-01, -5.261e-02, -3.373e-02, 2.592e-02, 1.092e-01, 5.494e-02, 5.989e-02, 1.640e-02, -1.102e-01, -1.626e-02, -2.203e-01, 2.464e-02), r);\n\tr = MulAdd(s4_8, M4(-1.233e-01, 2.385e-02, -1.691e-03, -1.214e-01, 7.522e-02, -1.268e-01, 4.043e-02, 2.823e-02, 3.916e-02, 5.684e-02, -3.064e-02, -5.190e-02, -3.799e-02, 5.107e-02, -1.892e-01, -4.348e-02), r);\n\tr = MulAdd(s5_0, M4(-5.303e-02, 5.702e-02, -8.550e-02, 7.232e-02, -7.413e-01, 4.604e-01, -4.028e-02, 3.394e-01, 1.833e-01, -1.569e-01, -1.436e-01, -3.062e-02, -1.673e-01, 8.320e-02, 4.586e-02, -7.652e-03), r);\n\tr = MulAdd(s5_1, M4(-8.396e-02, 7.796e-02, -6.078e-02, 6.849e-02, -1.824e-01, 3.107e-01, 1.817e-02, -1.860e-01, 5.479e-02, -6.675e-02, 1.574e-02, 2.615e-02, -5.817e-02, -7.982e-02, 1.045e-01, -1.335e-01), r);\n\tr = MulAdd(s5_2, M4(5.750e-02, -9.499e-02, -1.621e-01, 4.559e-02, -2.783e-01, -1.867e-01, 3.312e-02, 1.404e-01, 1.107e-01, 1.630e-01, -1.072e-01, 1.740e-01, -1.165e-01, 8.215e-02, 2.852e-01, -1.126e-01), r);\n\tr = MulAdd(s5_3, M4(-1.659e-02, -7.775e-02, 5.727e-02, -1.463e-01, 4.364e-02, -3.235e-02, 2.315e-01, -2.474e-01, 1.484e-01, -1.107e-01, 3.104e-03, -1.521e-01, 6.964e-02, -2.303e-02, -6.717e-02, 1.543e-01), r);\n\tr = MulAdd(s5_4, M4(-1.395e-01, -2.826e-02, -4.643e-02, -1.125e-01, 3.335e-01, 5.176e-01, 2.013e-01, 3.713e-01, 8.691e-02, -6.559e-02, -1.357e-01, -4.651e-02, 5.091e-02, -2.091e-01, -1.030e-01, -1.264e-01), r);\n\tr = MulAdd(s5_5, M4(-1.997e-01, -1.546e-01, 1.519e-01, 7.314e-02, 4.439e-01, 2.572e-01, 2.348e-02, -5.472e-02, 1.685e-01, -8.481e-02, 3.522e-03, 5.953e-02, -5.739e-03, -2.416e-01, -1.984e-02, -8.440e-02), r);\n\tr = MulAdd(s5_6, M4(-1.437e-01, -1.509e-02, -1.688e-02, -4.559e-02, 1.703e-01, 8.404e-02, -1.447e-01, 2.836e-01, 6.791e-02, -4.945e-02, 1.353e-02, 9.114e-02, -2.826e-01, 1.348e-01, 1.145e-02, 1.919e-01), r);\n\tr = MulAdd(s5_7, M4(5.095e-02, 1.377e-01, -5.523e-02, 1.399e-02, -4.539e-01, 6.555e-02, 2.816e-01, -7.605e-02, -3.078e-02, -3.283e-02, -6.590e-02, 8.787e-02, 6.161e-03, 4.405e-01, -4.672e-02, 7.676e-02), r);\n\tr = MulAdd(s5_8, M4(-1.126e-01, 2.139e-01, 1.042e-02, 8.322e-02, -1.688e-01, -1.951e-01, -1.810e-01, -5.828e-02, 3.061e-03, 8.707e-02, -8.261e-02, 9.187e-02, -2.217e-01, -1.355e-01, -5.980e-02, 8.894e-02), r);\n\tr = MulAdd(s6_0, M4(3.375e-02, -6.837e-03, 8.504e-03, 7.628e-02, -2.573e-02, 7.264e-02, 1.587e-01, 1.557e-02, -1.811e-01, -1.192e-01, 1.897e-01, 2.055e-01, -3.040e-02, -1.131e-03, 8.485e-02, 1.370e-01), r);\n\tr = MulAdd(s6_1, M4(4.436e-03, 1.918e-01, -5.534e-02, 1.431e-01, -2.456e-01, 6.074e-02, 9.280e-02, -2.043e-02, 2.538e-01, -3.557e-01, -1.565e-01, 3.277e-01, -6.989e-02, -8.344e-02, 4.863e-01, 1.682e-01), r);\n\tr = MulAdd(s6_2, M4(9.147e-02, 1.444e-01, 4.041e-02, 9.281e-02, -4.971e-02, -6.443e-02, -9.659e-02, 9.822e-02, -4.897e-01, 1.339e-01, 1.057e-01, -8.598e-02, 7.949e-02, 1.796e-01, 1.406e-01, -1.317e-01), r);\n\tr = MulAdd(s6_3, M4(-3.108e-02, 1.187e-01, -1.405e-01, -2.096e-02, -1.240e-02, 2.296e-02, -7.784e-02, 1.341e-02, -1.308e-02, 1.270e-01, -2.542e-02, -5.869e-02, -4.655e-02, 6.312e-02, -6.959e-02, -2.146e-02), r);\n\tr = MulAdd(s6_4, M4(-6.897e-02, -1.439e-01, 1.375e-02, -5.901e-02, 8.027e-02, -9.178e-02, -1.270e-01, -3.970e-02, 3.945e-02, -1.408e-01, -6.189e-01, -5.693e-02, -2.586e-01, -7.398e-02, 3.017e-01, 6.918e-02), r);\n\tr = MulAdd(s6_5, M4(2.303e-02, 6.761e-02, -2.823e-02, -2.381e-01, 6.317e-02, -2.130e-01, 9.502e-02, 1.910e-01, -3.220e-01, -1.783e-01, -8.975e-02, 2.929e-01, -2.166e-01, -3.300e-04, -8.396e-02, 4.748e-02), r);\n\tr = MulAdd(s6_6, M4(8.997e-02, 9.390e-02, 3.089e-02, 6.613e-02, -7.310e-02, -6.031e-02, 4.047e-03, 3.567e-02, -6.620e-02, -4.536e-02, 4.968e-02, 1.109e-01, 7.025e-02, 1.981e-02, 1.885e-01, -1.674e-01), r);\n\tr = MulAdd(s6_7, M4(9.632e-02, -1.427e-01, 6.963e-02, 8.605e-03, -1.484e-01, 2.370e-02, -2.559e-02, -9.231e-02, 1.958e-01, 2.344e-01, -3.780e-02, 5.337e-02, -8.072e-03, -2.691e-01, 1.615e-01, 6.801e-03), r);\n\tr = MulAdd(s6_8, M4(3.382e-02, 3.745e-02, -1.950e-01, -3.597e-02, -9.278e-03, -5.420e-02, -5.932e-02, -7.582e-02, -9.291e-02, 2.071e-02, 6.282e-02, -2.184e-01, 7.254e-02, -8.537e-02, 1.136e-01, 3.059e-02), r);\n\tr = MulAdd(s7_0, M4(5.663e-02, -1.343e-02, 5.780e-02, -8.611e-02, 6.815e-03, -5.406e-02, 3.681e-02, 1.104e-01, -3.168e-02, -8.807e-02, 1.690e-01, 5.809e-02, -4.456e-02, -1.519e-02, 2.311e-02, 5.913e-02), r);\n\tr = MulAdd(s7_1, M4(5.982e-02, -1.091e-01, 5.650e-02, 6.565e-02, -9.883e-02, 2.926e-02, -1.342e-01, -1.565e-01, 7.153e-02, 1.869e-01, 8.656e-02, -3.569e-02, -5.679e-02, -6.900e-02, -1.143e-02, 4.873e-02), r);\n\tr = MulAdd(s7_2, M4(-4.890e-02, 2.329e-02, 4.757e-02, -4.350e-02, 1.223e-01, -9.936e-02, -1.299e-01, 1.133e-01, 4.006e-02, -1.584e-01, -2.698e-02, -4.945e-02, 6.293e-02, 7.017e-02, -1.704e-01, -1.799e-01), r);\n\tr = MulAdd(s7_3, M4(2.485e-02, -5.407e-02, -8.527e-02, -1.510e-01, 1.643e-01, -5.463e-02, -6.835e-03, 5.878e-02, -5.531e-02, -2.257e-03, -5.767e-02, -6.246e-02, 1.384e-01, 8.035e-02, -6.237e-03, 5.670e-02), r);\n\tr = MulAdd(s7_4, M4(8.087e-02, -7.150e-02, -5.149e-02, 1.542e-01, -1.815e-01, 1.715e-02, -1.012e-01, -2.905e-03, 2.317e-02, 1.235e-01, -1.332e-02, -2.943e-02, 8.026e-02, 1.686e-01, 2.589e-02, 1.300e-01), r);\n\tr = MulAdd(s7_5, M4(-1.076e-01, 5.289e-03, 1.478e-02, -5.922e-02, 6.083e-02, 1.112e-01, 5.104e-02, -2.085e-02, -8.144e-02, 1.094e-01, 2.394e-02, -2.996e-02, -3.953e-02, 6.552e-02, -1.242e-01, 3.664e-02), r);\n\tr = MulAdd(s7_6, M4(-2.648e-02, 3.515e-02, 1.103e-01, 7.541e-02, 9.822e-02, 1.516e-01, 6.112e-02, -9.476e-02, 5.026e-02, -4.293e-02, -7.005e-02, -8.219e-02, -1.015e-01, -8.383e-02, -1.067e-01, -2.989e-03), r);\n\tr = MulAdd(s7_7, M4(-9.236e-02, -5.836e-02, -2.822e-02, 1.138e-01, 1.048e-01, 9.065e-02, -5.784e-02, -1.620e-01, -1.461e-01, 1.087e-01, 2.606e-02, 3.185e-02, 1.948e-01, -2.235e-02, -6.895e-03, -4.220e-02), r);\n\tr = MulAdd(s7_8, M4(6.419e-02, 2.451e-02, -7.139e-02, -7.798e-02, 1.275e-01, 3.751e-02, 8.619e-02, 4.441e-02, -1.117e-01, -1.395e-02, 7.185e-02, -1.220e-02, 2.262e-02, -4.089e-02, 8.666e-02, -2.434e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.792e-02, 6.402e-03, 2.704e-02, 8.885e-03 };\n\tr = MulAdd(s0_0, M4(5.957e-02, -3.049e-03, 2.515e-03, 7.423e-03, 9.982e-02, 1.812e-01, 1.187e-01, 2.259e-01, 1.165e-01, -1.347e-02, -3.428e-02, 8.958e-02, -1.029e-01, 2.937e-02, 2.708e-02, -1.298e-01), r);\n\tr = MulAdd(s0_1, M4(-1.847e-01, -5.502e-02, -1.051e-01, -7.236e-02, -1.206e-01, 1.803e-01, 1.486e-01, -7.366e-02, 3.302e-02, -7.880e-02, 5.818e-02, 1.179e-01, 1.430e-01, 1.488e-01, -5.780e-02, 2.994e-02), r);\n\tr = MulAdd(s0_2, M4(1.800e-01, -1.022e-01, -1.171e-03, -6.833e-03, -1.753e-02, -1.434e-01, 1.970e-02, -3.685e-02, 4.655e-02, 1.126e-01, -2.728e-02, 7.717e-02, -2.154e-02, 4.008e-02, 1.455e-01, 4.344e-02), r);\n\tr = MulAdd(s0_3, M4(-3.641e-02, 5.033e-03, -1.325e-02, -1.015e-01, 8.481e-02, 2.554e-01, -1.070e-01, 1.024e-01, 1.923e-02, -1.010e-03, -4.799e-02, 1.288e-01, -7.996e-02, -1.427e-01, -2.689e-01, 5.776e-02), r);\n\tr = MulAdd(s0_4, M4(1.833e-01, -4.067e-03, 7.679e-03, 5.957e-02, -8.062e-02, -2.109e-02, 8.797e-02, -7.552e-02, 1.492e-01, -1.806e-01, -4.736e-02, 1.260e-01, 9.266e-02, 5.566e-02, 7.952e-02, -1.757e-01), r);\n\tr = MulAdd(s0_5, M4(-7.300e-02, 7.447e-02, 5.468e-02, 3.852e-02, -4.063e-02, -7.468e-03, -1.014e-01, 3.237e-02, 1.435e-01, -8.569e-02, 3.054e-02, -4.666e-02, 1.150e-01, 6.880e-03, 7.433e-02, 1.294e-01), r);\n\tr = MulAdd(s0_6, M4(-7.807e-02, -3.489e-02, 9.954e-02, -2.053e-02, 1.920e-02, -6.982e-02, -7.709e-02, 4.164e-02, -2.460e-02, 4.299e-02, -2.332e-02, 6.819e-02, -8.945e-02, -5.789e-02, -9.769e-02, -9.254e-03), r);\n\tr = MulAdd(s0_7, M4(-3.709e-02, 1.226e-03, -1.219e-01, 4.918e-03, -7.907e-02, -4.814e-02, 9.349e-02, -8.402e-02, -2.609e-02, -4.457e-02, 8.509e-03, 7.508e-02, 8.673e-02, -9.438e-02, -9.328e-02, 5.861e-03), r);\n\tr = MulAdd(s0_8, M4(3.006e-02, 1.393e-02, 7.983e-02, 8.630e-02, 1.689e-02, -8.399e-02, -1.049e-01, -5.334e-02, 1.484e-01, -7.935e-02, 1.386e-01, 4.845e-02, -5.598e-02, -2.523e-02, 8.228e-02, -8.778e-02), r);\n\tr = MulAdd(s1_0, M4(-2.164e-01, -9.404e-02, 1.043e-01, 2.007e-01, 8.723e-02, 2.391e-01, 9.450e-02, 7.558e-02, -4.033e-02, 3.938e-02, -1.114e-01, 1.119e-02, 5.581e-02, -7.281e-03, 1.876e-02, -1.019e-01), r);\n\tr = MulAdd(s1_1, M4(-9.791e-02, -7.794e-02, 2.162e-02, -3.561e-02, -5.282e-02, -1.422e-02, 8.914e-02, -2.121e-02, -8.363e-02, 2.216e-01, 4.317e-02, 1.991e-01, 1.373e-01, 8.835e-02, -1.499e-02, 6.239e-02), r);\n\tr = MulAdd(s1_2, M4(4.177e-01, -2.990e-01, 5.412e-03, 7.816e-02, -2.068e-01, -1.488e-01, -3.840e-02, -4.823e-03, -2.806e-02, 2.133e-01, 2.451e-03, 1.602e-02, -2.125e-01, -1.082e-01, -1.455e-02, 2.847e-03), r);\n\tr = MulAdd(s1_3, M4(2.299e-02, -8.708e-02, -3.546e-02, 1.070e-01, 8.130e-02, 1.195e-01, -7.525e-02, 1.726e-01, -2.942e-02, 2.129e-01, -9.805e-02, 5.453e-02, -4.581e-02, 1.577e-02, -8.092e-02, 1.111e-01), r);\n\tr = MulAdd(s1_4, M4(4.460e-03, -1.676e-02, -9.924e-02, -1.566e-02, -1.788e-01, 1.211e-02, 5.756e-02, -9.596e-02, 2.085e-01, 5.858e-02, -5.055e-02, 2.971e-02, 2.450e-01, -1.739e-01, 2.155e-01, -1.562e-01), r);\n\tr = MulAdd(s1_5, M4(2.001e-01, 7.301e-02, 2.093e-01, 1.053e-01, -1.331e-02, -3.578e-02, -7.708e-02, 3.420e-02, -8.389e-02, 4.010e-02, -2.524e-04, -3.785e-02, 1.020e-01, -1.071e-01, 3.095e-03, 1.411e-01), r);\n\tr = MulAdd(s1_6, M4(7.020e-02, -1.008e-03, 1.983e-02, -6.337e-02, 5.443e-02, 2.197e-02, -1.557e-02, 2.523e-02, -2.901e-02, 9.682e-02, -7.168e-02, -4.479e-02, -5.737e-02, -7.622e-02, -1.268e-01, 5.257e-02), r);\n\tr = MulAdd(s1_7, M4(-8.855e-02, -8.280e-03, -1.156e-01, -3.358e-02, -1.597e-01, -1.030e-01, 1.370e-02, 4.266e-02, -8.264e-02, 1.193e-01, -9.311e-02, -2.361e-02, 6.552e-03, -2.326e-02, -1.029e-01, 2.257e-02), r);\n\tr = MulAdd(s1_8, M4(8.102e-02, 1.553e-01, -1.178e-01, 6.726e-02, 6.600e-02, -1.267e-02, -4.002e-03, -4.638e-02, 5.313e-02, 8.323e-03, 6.413e-02, 9.978e-02, 1.108e-01, -9.390e-02, -1.744e-02, -8.957e-02), r);\n\tr = MulAdd(s2_0, M4(4.738e-02, -9.025e-02, -1.875e-02, 1.161e-01, -1.321e-02, 1.354e-01, 1.405e-02, 1.416e-01, -1.197e-01, -1.130e-02, 5.646e-03, 1.371e-02, 1.499e-01, -1.998e-01, 6.524e-02, -1.900e-01), r);\n\tr = MulAdd(s2_1, M4(-3.611e-02, 1.329e-01, -6.656e-03, -1.775e-01, 1.026e-02, 9.408e-02, -5.093e-02, 1.961e-02, -2.624e-01, 2.131e-02, 4.280e-02, -1.226e-01, 1.730e-01, 1.343e-01, -1.671e-01, -6.461e-03), r);\n\tr = MulAdd(s2_2, M4(2.938e-02, -1.179e-01, 7.802e-02, -1.769e-02, -5.427e-02, -3.815e-02, 2.688e-02, 3.222e-02, 1.737e-01, 5.565e-02, -8.783e-02, 5.011e-02, 2.056e-01, 3.965e-02, -7.423e-02, 7.593e-02), r);\n\tr = MulAdd(s2_3, M4(-4.279e-02, 1.892e-02, -1.629e-01, 8.270e-02, 5.401e-02, -6.041e-02, -9.506e-02, 2.218e-01, -5.125e-02, 1.004e-01, -3.841e-02, 9.423e-02, -6.710e-02, 8.415e-02, 1.696e-02, -1.256e-01), r);\n\tr = MulAdd(s2_4, M4(-3.843e-02, 2.114e-02, -1.109e-01, -8.447e-02, -5.302e-02, -2.032e-01, 1.450e-01, 3.852e-02, -1.481e-01, -5.735e-02, 2.225e-01, 9.101e-03, -1.746e-01, 8.228e-02, 4.341e-02, 1.278e-01), r);\n\tr = MulAdd(s2_5, M4(-1.138e-02, 3.630e-02, 1.412e-01, 3.819e-02, -9.534e-02, 1.548e-01, 1.390e-01, -3.959e-02, -4.372e-02, 1.395e-01, 7.127e-02, 2.372e-02, -9.610e-03, -9.713e-02, -3.195e-02, 2.132e-02), r);\n\tr = MulAdd(s2_6, M4(1.045e-01, 8.938e-02, 9.943e-02, 1.064e-02, -1.489e-02, -6.177e-02, -7.106e-02, -5.035e-02, 8.367e-02, -5.951e-02, 1.692e-02, -1.152e-02, -8.637e-03, 7.272e-02, -2.973e-02, -9.375e-02), r);\n\tr = MulAdd(s2_7, M4(-1.147e-01, 7.269e-02, -1.572e-02, 1.538e-01, -1.678e-01, 1.536e-01, 7.278e-02, 6.957e-02, -2.188e-02, 9.501e-02, -3.409e-02, 1.484e-01, -7.706e-02, -5.266e-02, 1.234e-01, 1.243e-02), r);\n\tr = MulAdd(s2_8, M4(1.371e-01, -6.741e-02, -1.627e-01, -3.880e-02, -4.867e-02, 1.805e-01, 1.315e-01, 9.806e-02, -2.459e-02, -1.065e-02, -6.366e-02, -7.442e-02, -3.105e-02, 3.967e-02, 9.181e-02, 3.679e-02), r);\n\tr = MulAdd(s3_0, M4(-4.685e-02, 2.092e-01, -3.243e-02, 1.201e-01, -9.950e-02, 1.814e-01, 2.770e-02, -1.061e-01, 6.173e-02, -3.614e-02, -3.884e-03, -1.754e-02, -6.866e-02, 1.386e-02, 4.887e-02, -2.357e-02), r);\n\tr = MulAdd(s3_1, M4(-2.743e-01, -9.328e-02, 3.926e-01, -2.396e-01, -5.040e-02, 5.586e-02, -3.486e-02, -7.192e-02, 1.664e-02, 2.172e-02, 3.996e-02, -1.952e-01, 1.958e-01, 1.802e-02, -1.209e-01, 2.013e-02), r);\n\tr = MulAdd(s3_2, M4(-7.065e-02, -2.231e-01, -1.740e-01, -1.036e-01, -4.724e-02, 1.182e-02, 9.885e-02, 1.422e-02, 1.404e-01, -7.340e-02, -1.123e-04, -1.421e-01, 2.634e-01, -7.101e-02, -2.584e-02, 1.234e-01), r);\n\tr = MulAdd(s3_3, M4(1.386e-01, -1.280e-01, -3.779e-01, -3.310e-01, 7.156e-02, -1.150e-01, 1.079e-02, 7.545e-02, -1.125e-02, -1.691e-02, -1.538e-01, -3.010e-02, -8.678e-02, 2.458e-02, 5.418e-02, -7.666e-02), r);\n\tr = MulAdd(s3_4, M4(1.449e-01, 9.721e-02, -2.594e-01, 2.108e-01, 2.351e-01, -3.130e-01, -8.903e-02, -4.188e-02, 2.007e-01, -2.197e-01, 1.613e-01, -3.164e-01, -3.532e-01, 6.255e-02, 2.272e-01, 7.759e-03), r);\n\tr = MulAdd(s3_5, M4(-2.253e-02, -7.612e-02, -9.930e-02, -1.385e-01, -1.933e-01, -1.089e-01, -1.863e-02, 3.789e-02, 2.229e-02, 6.735e-02, 3.127e-01, -1.855e-02, -1.775e-01, -2.837e-02, 1.607e-01, 7.195e-02), r);\n\tr = MulAdd(s3_6, M4(1.558e-01, 2.682e-02, 1.504e-01, 9.806e-02, 6.693e-02, 3.296e-02, -1.118e-01, -3.649e-02, 2.780e-02, -5.672e-02, -3.103e-02, 1.411e-01, 1.649e-02, 9.769e-02, 1.311e-01, -3.010e-02), r);\n\tr = MulAdd(s3_7, M4(2.929e-02, 1.012e-01, -5.385e-02, 3.901e-02, 3.679e-02, 8.885e-03, -2.742e-01, 5.118e-02, 2.344e-03, 1.122e-03, -6.791e-02, -5.733e-02, 3.292e-01, 6.902e-02, -5.233e-02, 8.570e-02), r);\n\tr = MulAdd(s3_8, M4(-7.097e-02, 1.848e-02, -3.787e-02, 4.900e-03, 6.421e-02, 7.465e-02, -1.535e-01, 1.406e-02, -1.187e-01, 2.577e-03, 9.254e-02, 5.308e-02, 2.464e-02, -7.548e-02, -1.966e-01, -1.053e-01), r);\n\tr = MulAdd(s4_0, M4(3.893e-02, -4.947e-02, -7.893e-03, 6.037e-03, 6.807e-02, -8.136e-03, 7.377e-02, 5.098e-02, -5.985e-02, -3.314e-02, -1.090e-01, -1.603e-01, -6.519e-02, 1.479e-02, -4.851e-02, -6.077e-02), r);\n\tr = MulAdd(s4_1, M4(1.111e-01, 1.671e-01, -1.255e-01, -3.826e-03, -6.154e-03, 1.481e-01, -2.236e-02, 2.436e-04, -1.970e-02, -2.319e-01, -3.602e-02, 7.956e-02, -1.163e-01, 1.890e-01, -5.660e-02, 3.174e-02), r);\n\tr = MulAdd(s4_2, M4(1.580e-02, 4.120e-02, 6.110e-02, -1.322e-01, 3.182e-03, 3.036e-02, 7.864e-02, -1.343e-02, -1.131e-01, -2.483e-02, 3.549e-03, 1.102e-01, 1.428e-01, 5.457e-03, 1.126e-02, 5.344e-02), r);\n\tr = MulAdd(s4_3, M4(-1.522e-01, 1.218e-02, 3.848e-04, -1.357e-01, -7.722e-02, -6.365e-02, -1.327e-02, 1.026e-01, -1.313e-01, -8.871e-02, -4.374e-03, -2.673e-02, -2.268e-02, 6.203e-02, 2.476e-02, -7.891e-02), r);\n\tr = MulAdd(s4_4, M4(1.277e-01, 2.146e-01, -1.622e-01, 3.286e-02, -1.704e-01, 9.845e-03, 2.795e-02, -7.210e-02, -3.702e-01, 5.903e-02, -2.025e-01, 2.572e-02, -2.745e-02, -2.299e-02, 3.136e-02, 9.026e-02), r);\n\tr = MulAdd(s4_5, M4(5.797e-03, -3.580e-02, -4.552e-03, -1.105e-01, 8.373e-02, -4.397e-02, -5.189e-03, -6.894e-02, -2.798e-02, -5.324e-02, -5.876e-02, 9.981e-03, 1.140e-01, -7.434e-02, 7.077e-02, 2.092e-02), r);\n\tr = MulAdd(s4_6, M4(1.196e-02, -8.666e-02, 1.137e-01, 4.510e-02, 4.648e-02, -1.031e-01, -7.070e-02, 1.777e-02, -5.807e-02, 6.463e-02, 3.425e-02, 5.167e-02, 1.442e-02, -4.559e-02, 7.944e-03, -9.425e-02), r);\n\tr = MulAdd(s4_7, M4(-5.318e-02, 5.288e-02, 1.233e-01, -1.647e-02, 5.040e-02, 3.649e-03, -2.084e-02, -3.695e-02, 3.423e-02, 1.215e-01, 7.316e-02, 4.451e-02, -1.786e-01, 9.964e-02, 7.429e-02, -2.555e-02), r);\n\tr = MulAdd(s4_8, M4(-1.145e-02, -4.109e-02, -1.333e-01, 9.021e-02, 8.219e-02, 4.919e-02, -1.678e-02, 6.022e-02, 3.826e-04, -9.322e-02, 5.648e-02, -4.974e-02, -5.503e-02, -2.237e-02, 2.452e-02, 1.236e-01), r);\n\tr = MulAdd(s5_0, M4(-3.120e-02, -2.506e-02, 8.325e-03, 4.761e-02, -4.672e-01, -2.430e-01, 5.374e-02, -1.592e-01, 1.392e-01, 9.341e-02, -1.893e-01, 8.724e-03, -5.083e-02, -7.755e-02, 3.613e-02, -1.841e-01), r);\n\tr = MulAdd(s5_1, M4(4.977e-02, 1.632e-01, -9.581e-02, 3.688e-01, 2.764e-01, 1.806e-01, -1.471e-01, -9.434e-02, -1.930e-01, -1.048e-02, 1.817e-02, 1.018e-01, 4.963e-02, -2.904e-02, -1.284e-01, -8.687e-02), r);\n\tr = MulAdd(s5_2, M4(-2.475e-01, 1.064e-01, -2.106e-02, -1.520e-02, -5.434e-02, -9.044e-02, -2.736e-03, 1.030e-01, -2.364e-01, 2.136e-01, 1.391e-01, -1.069e-01, 1.714e-01, -1.077e-02, -9.362e-02, 7.189e-02), r);\n\tr = MulAdd(s5_3, M4(-1.841e-01, -3.266e-02, 9.362e-02, -3.814e-02, -5.682e-01, 3.984e-01, 4.681e-01, 2.657e-01, -2.097e-02, -9.244e-03, 9.430e-03, -2.963e-02, -9.612e-02, 7.458e-02, 4.870e-02, -5.087e-02), r);\n\tr = MulAdd(s5_4, M4(-1.757e-01, 1.198e-01, -1.528e-01, 3.579e-01, 6.719e-01, -5.689e-01, -1.907e-01, -2.981e-01, -3.525e-02, 8.262e-02, 2.617e-03, -7.026e-02, 3.087e-01, -2.135e-02, -1.579e-02, 8.239e-02), r);\n\tr = MulAdd(s5_5, M4(1.460e-01, -9.163e-02, -6.629e-02, 2.753e-02, -1.082e-01, 2.592e-02, -7.397e-02, -1.469e-01, 9.262e-02, -1.249e-02, 5.569e-02, 9.788e-02, 2.121e-02, -1.666e-01, -1.258e-01, 1.772e-01), r);\n\tr = MulAdd(s5_6, M4(6.194e-02, -3.392e-02, 5.301e-02, -7.029e-02, 1.058e-01, 2.590e-02, 3.245e-01, 2.971e-01, 8.965e-02, 1.275e-01, -5.641e-03, -4.784e-02, -7.069e-02, 2.989e-02, -1.026e-01, -1.121e-01), r);\n\tr = MulAdd(s5_7, M4(-4.134e-02, 9.351e-02, -2.658e-02, 1.898e-02, -1.142e-01, -9.247e-02, -1.610e-01, -8.344e-02, -1.560e-01, -7.492e-02, 5.762e-02, -2.066e-02, -1.029e-01, 1.144e-01, 1.237e-01, 1.510e-02), r);\n\tr = MulAdd(s5_8, M4(1.234e-01, 1.372e-02, -3.129e-02, 1.210e-02, -1.381e-01, 7.946e-02, 4.540e-02, -4.533e-02, -8.761e-03, -4.579e-02, -4.991e-02, -1.097e-01, -3.653e-01, -1.008e-01, 9.064e-02, -1.664e-02), r);\n\tr = MulAdd(s6_0, M4(1.035e-01, -5.898e-02, 7.442e-02, 4.579e-02, 9.165e-02, -8.487e-02, -7.653e-02, -1.472e-01, 1.458e-01, -2.610e-01, 5.489e-02, -3.148e-02, -1.961e-02, -1.283e-01, -1.550e-03, 1.396e-01), r);\n\tr = MulAdd(s6_1, M4(3.029e-02, 1.203e-01, 1.137e-01, -4.167e-02, 2.036e-01, 5.974e-02, 9.833e-03, -4.837e-03, 2.107e-02, 5.559e-02, -1.459e-01, 8.987e-02, -2.228e-01, -1.185e-01, -1.612e-01, -1.318e-01), r);\n\tr = MulAdd(s6_2, M4(2.158e-01, 1.618e-01, 4.534e-02, 1.148e-01, 7.521e-02, 8.428e-02, -3.577e-02, 8.668e-02, -2.172e-01, 1.231e-01, -3.659e-02, -7.905e-02, -9.192e-02, -2.736e-02, -1.080e-01, -3.183e-02), r);\n\tr = MulAdd(s6_3, M4(-5.911e-02, -1.347e-01, 3.753e-02, 5.744e-02, 1.702e-01, 9.262e-02, -7.533e-02, 1.787e-02, 2.806e-02, -6.910e-02, 7.101e-02, -3.144e-02, -6.674e-02, 1.759e-02, 8.950e-02, 1.166e-01), r);\n\tr = MulAdd(s6_4, M4(2.470e-01, 4.738e-02, 9.160e-02, 1.635e-02, -1.139e-02, -7.980e-02, -8.763e-02, 2.369e-01, 8.297e-02, -3.180e-01, 1.388e-02, -3.104e-02, 1.348e-02, 2.618e-01, 2.261e-02, -1.885e-01), r);\n\tr = MulAdd(s6_5, M4(-7.889e-02, 1.627e-01, 9.866e-03, -2.770e-02, 6.266e-02, -4.376e-02, -6.148e-03, 1.318e-01, 3.748e-02, -1.347e-01, 3.466e-02, -7.621e-02, -4.696e-02, 8.234e-02, 1.539e-01, 4.679e-02), r);\n\tr = MulAdd(s6_6, M4(-9.591e-03, -9.131e-02, -2.189e-02, -3.906e-03, -8.384e-02, -1.096e-01, -4.869e-02, 1.044e-01, 6.963e-03, 3.361e-02, -4.759e-03, 7.508e-02, -3.060e-03, -1.384e-01, -3.605e-02, 1.665e-02), r);\n\tr = MulAdd(s6_7, M4(1.625e-01, -3.431e-02, -3.472e-02, 6.639e-02, 4.569e-02, 2.451e-02, -1.030e-01, 5.134e-02, 3.258e-01, 9.507e-02, 9.125e-03, 1.037e-01, 1.091e-01, 3.748e-02, 6.382e-02, 2.083e-02), r);\n\tr = MulAdd(s6_8, M4(-4.303e-02, -4.050e-02, -1.151e-01, -6.843e-02, 5.202e-02, -3.790e-02, 4.180e-03, -6.684e-02, 1.225e-01, 1.198e-01, 4.950e-02, 7.972e-02, 2.018e-02, 1.512e-01, 1.024e-01, 1.460e-02), r);\n\tr = MulAdd(s7_0, M4(-1.173e-01, 1.072e-01, 5.356e-03, 1.385e-01, -6.036e-02, -1.034e-01, -6.001e-02, 6.160e-02, -4.321e-02, 5.623e-02, -1.003e-01, 1.845e-03, -4.557e-02, 2.336e-03, -5.258e-02, 6.187e-02), r);\n\tr = MulAdd(s7_1, M4(-1.835e-02, 8.510e-03, 9.641e-02, -6.166e-02, -6.591e-02, 1.562e-02, -1.011e-01, -5.767e-02, -1.791e-01, -4.820e-02, -4.084e-02, 3.447e-02, 7.111e-02, -8.455e-02, 9.572e-02, -2.570e-02), r);\n\tr = MulAdd(s7_2, M4(2.063e-04, 7.999e-02, -2.165e-02, 1.236e-02, 1.408e-02, -5.522e-02, -3.566e-02, 8.257e-02, -1.279e-01, 1.305e-01, -1.413e-03, 4.585e-02, 2.789e-03, 1.053e-02, -7.205e-02, -6.562e-02), r);\n\tr = MulAdd(s7_3, M4(4.291e-02, -4.951e-02, 8.818e-02, 3.302e-02, 1.800e-02, -7.639e-02, 2.755e-02, -7.894e-02, 5.420e-02, -3.219e-02, -1.015e-01, -5.315e-02, -4.991e-02, 7.107e-02, 1.468e-02, -2.473e-02), r);\n\tr = MulAdd(s7_4, M4(1.823e-01, -8.644e-03, 7.152e-02, -2.014e-01, -3.008e-02, 3.164e-02, -2.384e-01, 1.322e-01, -6.781e-02, 5.100e-02, 3.457e-02, 1.042e-02, 4.205e-02, 6.503e-02, -3.424e-02, -4.911e-02), r);\n\tr = MulAdd(s7_5, M4(1.248e-01, -2.998e-02, 2.813e-03, -5.579e-02, 8.234e-02, -6.763e-02, -7.895e-02, 2.507e-04, 5.331e-03, -9.873e-02, 1.283e-01, 4.402e-02, 2.722e-02, -6.559e-02, -8.504e-02, 1.554e-02), r);\n\tr = MulAdd(s7_6, M4(-8.137e-02, -3.382e-02, -4.983e-03, 1.141e-01, -7.500e-02, -1.591e-01, 7.594e-02, 1.251e-01, 7.075e-02, 4.401e-02, -5.485e-02, -1.526e-02, -1.338e-01, -1.707e-01, -2.600e-02, 2.292e-02), r);\n\tr = MulAdd(s7_7, M4(-8.672e-02, -2.362e-02, -7.777e-02, 1.356e-02, -3.393e-02, -7.631e-02, -2.710e-01, -6.589e-02, 1.881e-01, -9.581e-02, 2.370e-02, -8.766e-02, -4.940e-02, 5.028e-02, 2.167e-02, 4.738e-03), r);\n\tr = MulAdd(s7_8, M4(4.778e-02, 7.154e-02, 5.355e-02, -2.512e-02, -8.144e-02, 1.947e-02, -1.547e-01, -2.908e-02, -3.783e-02, 3.476e-02, 3.998e-02, 4.067e-02, 1.007e-02, 2.896e-03, -3.280e-02, -2.884e-03), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.309e-02, -2.129e-02, 4.474e-03, 1.972e-02 };\n\tr = MulAdd(s0_0, M4(2.150e-02, 2.098e-02, -1.908e-03, 1.370e-01, -1.004e-01, 3.667e-02, 1.652e-01, -1.928e-01, -1.453e-01, -8.522e-02, -1.028e-02, -9.115e-02, -1.022e-01, -1.301e-01, 1.325e-01, -9.540e-02), r);\n\tr = MulAdd(s0_1, M4(-4.920e-03, 4.564e-02, -9.749e-02, -7.350e-02, -9.275e-02, -2.181e-01, 5.228e-03, -1.274e-02, -1.396e-01, -1.462e-02, -2.177e-01, -3.610e-01, 9.250e-02, -4.713e-02, 8.113e-02, -1.250e-01), r);\n\tr = MulAdd(s0_2, M4(2.999e-02, 1.197e-01, 3.022e-02, 7.073e-02, -3.234e-02, 4.483e-03, 3.886e-02, -5.276e-02, 4.253e-02, -1.674e-01, -7.591e-03, -1.164e-01, -6.967e-02, 6.605e-02, -3.461e-02, 2.936e-02), r);\n\tr = MulAdd(s0_3, M4(-3.725e-02, 3.155e-02, -7.687e-02, -2.039e-02, 4.441e-02, 1.862e-02, 1.289e-01, -8.736e-02, -2.970e-02, 2.526e-01, 1.500e-01, -2.748e-01, 1.343e-01, 5.158e-02, 3.829e-02, -1.029e-01), r);\n\tr = MulAdd(s0_4, M4(1.480e-01, -1.204e-01, 1.481e-01, 6.791e-02, -2.369e-02, -1.166e-01, -1.001e-01, 2.066e-01, 5.810e-02, 1.231e-01, -2.750e-02, -2.348e-02, -1.851e-01, -1.561e-01, 9.651e-03, 1.222e-01), r);\n\tr = MulAdd(s0_5, M4(-2.281e-02, 7.214e-02, 4.872e-02, -3.459e-02, 1.557e-01, -4.078e-02, -5.643e-02, 7.592e-02, 7.703e-02, -1.563e-01, 7.854e-02, -1.026e-01, 8.463e-02, -2.650e-01, 1.179e-01, 5.095e-02), r);\n\tr = MulAdd(s0_6, M4(-1.307e-01, 5.779e-02, -5.937e-02, -8.787e-02, -1.897e-01, 4.236e-02, -3.115e-02, 5.699e-02, 9.361e-02, 1.806e-02, -1.096e-01, -1.321e-01, 1.118e-01, -1.057e-01, -6.268e-03, -3.682e-03), r);\n\tr = MulAdd(s0_7, M4(-3.039e-03, -3.794e-02, 2.495e-02, -5.958e-02, 3.056e-02, -1.187e-02, 4.943e-02, 1.002e-02, -1.508e-02, 8.286e-02, -1.137e-01, -3.081e-02, -9.305e-02, 2.237e-01, 1.300e-01, 1.462e-01), r);\n\tr = MulAdd(s0_8, M4(3.845e-02, -2.379e-02, 7.917e-02, 5.293e-02, -9.989e-02, -8.364e-02, 4.484e-02, -7.819e-02, 1.247e-01, -6.405e-02, -4.323e-02, -9.018e-02, 1.771e-02, 6.845e-02, -3.819e-02, 2.506e-01), r);\n\tr = MulAdd(s1_0, M4(1.505e-01, 4.282e-02, 2.325e-01, -1.088e-01, -1.533e-01, 6.644e-02, 1.375e-01, -7.004e-02, 9.644e-02, 9.485e-02, 6.898e-02, -5.298e-03, -4.165e-02, -1.174e-01, -8.163e-02, -4.830e-02), r);\n\tr = MulAdd(s1_1, M4(8.243e-03, -1.574e-02, -4.337e-02, -4.904e-02, -6.238e-02, 2.752e-02, -1.450e-01, 1.297e-02, 8.632e-02, 2.109e-01, 2.266e-03, -1.468e-01, 5.894e-02, 7.963e-02, -1.032e-01, -2.958e-02), r);\n\tr = MulAdd(s1_2, M4(-4.761e-01, 3.923e-01, -2.083e-01, 1.344e-01, -5.242e-02, -6.285e-03, 3.866e-02, -6.010e-02, 5.071e-02, 5.493e-02, 6.665e-02, 4.845e-03, -2.614e-02, 3.681e-02, -2.129e-01, -2.912e-02), r);\n\tr = MulAdd(s1_3, M4(-9.229e-02, -2.160e-01, -3.112e-01, 7.508e-02, -2.224e-01, -1.128e-01, 1.067e-01, 6.648e-02, 6.660e-02, 6.957e-02, 1.109e-01, -5.484e-02, 8.785e-03, -1.616e-01, -9.332e-03, -8.794e-02), r);\n\tr = MulAdd(s1_4, M4(1.016e-01, 1.375e-03, -2.052e-02, 1.088e-01, 8.379e-02, 1.776e-01, 6.166e-02, -3.273e-02, -2.966e-03, 1.742e-02, 8.485e-02, 2.937e-02, -1.109e-01, 9.783e-02, -1.222e-01, 6.124e-02), r);\n\tr = MulAdd(s1_5, M4(-5.278e-02, -2.068e-01, -1.875e-01, -9.722e-02, 1.369e-01, 1.573e-01, 2.855e-02, 1.431e-01, 1.175e-01, 1.476e-02, 1.504e-01, -1.062e-01, -9.199e-02, 2.577e-02, 6.478e-03, 1.121e-01), r);\n\tr = MulAdd(s1_6, M4(2.704e-01, -5.489e-02, 1.746e-01, -1.111e-01, -1.860e-01, -1.403e-01, -5.571e-02, -1.211e-01, 4.785e-02, -7.522e-02, -9.783e-03, 1.015e-01, 4.958e-03, -1.289e-01, -5.302e-02, 5.505e-02), r);\n\tr = MulAdd(s1_7, M4(-4.411e-02, -1.045e-01, 4.994e-02, -1.574e-01, 5.788e-02, 2.045e-01, 3.314e-02, -3.551e-02, 7.251e-02, -5.918e-02, -9.556e-03, 4.214e-02, -3.630e-02, 2.468e-01, -2.294e-02, -1.261e-02), r);\n\tr = MulAdd(s1_8, M4(-2.821e-01, 5.553e-03, -9.473e-02, -2.821e-01, -1.144e-01, -1.501e-02, -4.085e-02, -6.069e-02, 1.062e-01, -1.199e-01, 5.926e-02, -2.123e-02, -6.757e-02, -1.281e-02, -2.638e-02, 4.982e-02), r);\n\tr = MulAdd(s2_0, M4(4.639e-03, -8.981e-02, -3.127e-02, -1.559e-01, -1.868e-01, 5.938e-02, 7.574e-02, -7.216e-02, 1.794e-01, 1.192e-01, -1.298e-02, -4.886e-02, 4.221e-02, -8.491e-02, -1.210e-01, 1.066e-01), r);\n\tr = MulAdd(s2_1, M4(-1.867e-01, -1.192e-01, -1.711e-01, 7.593e-02, -7.570e-02, 5.431e-02, 1.509e-01, -8.083e-02, -7.039e-02, 1.170e-01, 1.004e-01, -9.263e-02, 6.978e-02, 5.257e-02, -1.963e-02, 5.092e-02), r);\n\tr = MulAdd(s2_2, M4(1.716e-01, 1.621e-02, -1.479e-01, -1.278e-01, 9.007e-02, -4.578e-02, 5.916e-02, -4.273e-02, -1.310e-01, 1.857e-01, -3.085e-02, 6.763e-02, 3.874e-02, 1.704e-01, -9.613e-02, 8.957e-02), r);\n\tr = MulAdd(s2_3, M4(1.064e-02, 2.534e-02, -5.788e-03, -4.810e-02, 8.883e-02, 6.142e-02, 3.759e-02, -1.599e-02, -2.281e-01, 4.078e-02, -2.529e-02, -1.290e-03, -3.682e-02, 2.757e-02, 3.746e-02, 6.837e-02), r);\n\tr = MulAdd(s2_4, M4(4.689e-02, -1.032e-01, 2.029e-02, -1.496e-02, 3.248e-02, 1.349e-01, -1.425e-02, -4.335e-02, -1.864e-01, 2.204e-01, -1.185e-01, -3.788e-02, 7.017e-03, -2.078e-02, 2.113e-02, 6.477e-02), r);\n\tr = MulAdd(s2_5, M4(-6.346e-02, 1.536e-01, -5.008e-02, -7.137e-02, 5.735e-02, -1.805e-01, 1.751e-02, -1.993e-02, -8.088e-02, 1.131e-01, 2.861e-02, -5.225e-02, 7.813e-02, -1.596e-01, -5.213e-02, -2.286e-02), r);\n\tr = MulAdd(s2_6, M4(6.213e-02, -1.340e-01, -4.045e-02, 5.417e-02, 1.412e-02, 2.320e-02, 3.999e-02, -4.847e-03, 3.844e-02, 2.233e-02, -1.047e-01, -7.587e-03, -7.185e-02, 2.859e-02, -2.312e-02, -5.680e-02), r);\n\tr = MulAdd(s2_7, M4(-4.109e-02, 2.704e-02, -8.921e-02, 4.878e-02, -1.897e-01, 3.091e-02, 7.605e-02, -2.485e-01, 7.590e-02, -1.513e-02, -8.579e-03, 4.597e-02, -6.991e-02, -3.877e-02, -5.631e-02, -5.555e-02), r);\n\tr = MulAdd(s2_8, M4(-1.464e-02, 5.491e-03, 8.155e-02, 4.692e-02, 1.756e-01, 5.157e-02, -2.228e-01, -9.451e-02, 2.240e-02, -2.119e-02, -8.800e-02, -2.836e-02, 1.321e-03, 5.610e-03, 6.110e-02, -1.010e-01), r);\n\tr = MulAdd(s3_0, M4(-2.863e-01, 1.281e-01, 3.390e-01, 2.793e-02, 8.745e-02, -3.212e-02, -7.006e-02, -8.724e-02, 1.313e-01, -5.727e-04, -2.541e-03, 9.595e-02, 1.818e-01, 1.798e-01, -7.001e-02, 1.867e-01), r);\n\tr = MulAdd(s3_1, M4(-7.490e-01, 2.820e-01, -8.783e-02, -8.340e-02, -5.457e-02, 2.979e-02, 6.042e-02, -5.967e-02, 4.259e-02, 3.115e-02, 1.132e-01, -1.519e-01, -1.058e-01, 1.261e-01, -1.253e-01, -1.140e-01), r);\n\tr = MulAdd(s3_2, M4(-1.103e-01, 1.477e-01, -8.571e-02, -2.903e-03, -6.956e-02, -1.613e-03, 9.327e-02, 1.674e-02, 9.031e-02, -9.055e-03, 5.152e-02, -4.042e-02, -2.994e-02, -8.168e-02, -2.455e-01, -2.800e-02), r);\n\tr = MulAdd(s3_3, M4(1.524e-01, 2.541e-01, -2.778e-02, -5.655e-02, -4.606e-02, 8.783e-02, 7.691e-02, 4.097e-02, -7.642e-02, 2.777e-02, 1.949e-02, -6.352e-02, 3.537e-01, 1.018e-01, -3.824e-02, -1.221e-02), r);\n\tr = MulAdd(s3_4, M4(-3.948e-01, 1.403e-01, -3.365e-01, -1.501e-01, 1.689e-01, 5.901e-02, -9.550e-02, 1.362e-01, -2.804e-02, 3.937e-02, -1.233e-01, -3.170e-02, 6.212e-02, 1.210e-01, -3.112e-01, 5.814e-03), r);\n\tr = MulAdd(s3_5, M4(-2.880e-01, -7.068e-02, -3.583e-02, -1.900e-02, -1.555e-01, -9.420e-02, -1.856e-03, 5.042e-02, -6.842e-02, 5.013e-02, -5.946e-02, -8.058e-02, -1.084e-01, -5.146e-03, -7.522e-02, 5.965e-03), r);\n\tr = MulAdd(s3_6, M4(6.954e-02, 2.202e-02, 1.715e-01, -1.923e-01, -2.088e-01, -2.457e-01, -8.212e-02, 6.059e-02, -6.665e-02, 5.656e-03, -3.019e-02, 5.139e-02, 3.282e-01, 1.749e-01, 1.477e-02, -5.291e-02), r);\n\tr = MulAdd(s3_7, M4(-5.721e-02, -1.348e-01, -1.032e-01, 2.518e-03, -1.444e-01, -1.540e-01, -1.222e-01, 2.705e-01, -5.951e-02, -5.826e-02, 3.968e-02, 1.580e-02, 4.005e-03, -1.579e-01, -7.896e-02, -1.453e-01), r);\n\tr = MulAdd(s3_8, M4(-6.637e-02, -2.803e-01, 6.848e-02, 6.454e-02, -7.755e-04, 6.420e-02, 4.581e-03, 6.191e-02, 2.481e-02, -5.033e-02, -3.187e-02, -9.523e-02, 4.138e-02, -4.772e-03, -1.821e-02, -1.466e-01), r);\n\tr = MulAdd(s4_0, M4(6.172e-02, 4.860e-02, -1.050e-01, 1.161e-01, 1.948e-01, 4.551e-02, -3.890e-02, 1.641e-01, -7.216e-02, -1.356e-01, -9.914e-02, -4.317e-02, 6.625e-03, -6.305e-02, -1.298e-01, -2.164e-02), r);\n\tr = MulAdd(s4_1, M4(1.006e-01, -1.191e-02, -1.051e-01, 2.251e-01, 9.049e-03, 1.394e-01, 8.543e-02, -4.219e-02, 1.124e-01, -4.260e-02, -1.078e-02, 1.445e-01, 7.338e-02, 1.046e-01, -9.125e-02, -5.300e-03), r);\n\tr = MulAdd(s4_2, M4(1.374e-01, -1.830e-01, 1.657e-01, -5.735e-02, 3.288e-02, -5.684e-02, 1.186e-02, -1.383e-02, 8.108e-02, 1.465e-02, 7.691e-02, 4.414e-02, 3.654e-04, 2.120e-01, -2.360e-02, 4.260e-02), r);\n\tr = MulAdd(s4_3, M4(-5.470e-02, -1.727e-01, -9.758e-02, 1.201e-01, -1.376e-01, 1.443e-01, -2.002e-03, -1.086e-01, -8.649e-02, -1.393e-01, -9.284e-02, 1.437e-01, 5.944e-03, -1.920e-02, -6.170e-02, 2.351e-02), r);\n\tr = MulAdd(s4_4, M4(8.198e-02, 8.723e-03, -2.378e-01, -9.163e-02, -1.058e-02, 6.321e-02, 1.436e-01, 3.090e-03, -7.826e-03, 1.253e-01, 5.161e-02, 2.252e-01, -4.539e-02, 2.287e-02, 4.011e-03, 1.571e-02), r);\n\tr = MulAdd(s4_5, M4(1.134e-01, -1.501e-01, 1.345e-01, 8.493e-02, 3.416e-02, -1.753e-01, -3.733e-02, -2.671e-02, -1.743e-01, 8.097e-04, -7.299e-02, 8.528e-02, 1.934e-02, -6.367e-02, -9.613e-02, -9.835e-02), r);\n\tr = MulAdd(s4_6, M4(-1.071e-01, 1.109e-01, -6.513e-03, -1.421e-02, 7.728e-02, -2.574e-02, 2.111e-02, -4.417e-02, 2.104e-02, -1.677e-01, -8.871e-02, 1.657e-02, -1.920e-01, 4.121e-02, -9.233e-02, -7.041e-02), r);\n\tr = MulAdd(s4_7, M4(-1.750e-01, 1.759e-01, -1.211e-01, 4.576e-02, 4.790e-03, 2.754e-02, -5.749e-02, -5.159e-02, -9.071e-02, 7.544e-02, 5.648e-02, 2.652e-02, -4.998e-02, 5.046e-03, -6.872e-02, -9.695e-02), r);\n\tr = MulAdd(s4_8, M4(-4.520e-02, -1.272e-01, -4.931e-02, 1.418e-01, -1.038e-01, 1.825e-02, -5.155e-02, 4.532e-02, 8.587e-02, -1.928e-02, -1.674e-02, -6.196e-02, 9.840e-02, -2.571e-02, -3.161e-03, -1.645e-02), r);\n\tr = MulAdd(s5_0, M4(-1.004e-02, -1.549e-02, 4.202e-02, 3.765e-02, 3.177e-01, -6.272e-02, -4.354e-01, 3.390e-02, 2.077e-02, -1.162e-01, -5.451e-02, -4.558e-02, -1.102e-01, 8.683e-02, 4.586e-02, 1.046e-01), r);\n\tr = MulAdd(s5_1, M4(-2.387e-02, -1.223e-02, 2.966e-02, -3.690e-02, 6.212e-02, -1.667e-01, 1.442e-01, 1.095e-02, 3.150e-02, -9.111e-02, 4.348e-02, -2.276e-01, 3.239e-02, 1.461e-01, -7.576e-02, -2.275e-02), r);\n\tr = MulAdd(s5_2, M4(7.439e-05, -6.544e-02, 5.617e-02, 6.543e-02, -1.848e-01, 1.469e-01, -1.609e-01, -1.088e-01, 1.695e-01, -4.279e-02, 1.413e-01, 3.313e-02, 1.424e-01, 3.390e-02, 3.491e-02, -4.123e-02), r);\n\tr = MulAdd(s5_3, M4(6.728e-03, -1.499e-01, -2.789e-02, -1.596e-01, -3.184e-01, -6.526e-01, -1.408e-01, 2.954e-01, 4.372e-02, 5.506e-02, 6.864e-03, 2.858e-02, -8.610e-02, -1.349e-01, -7.156e-02, 1.250e-01), r);\n\tr = MulAdd(s5_4, M4(1.145e-01, 2.027e-01, -6.550e-02, -1.407e-02, -2.456e-01, -5.884e-02, 2.882e-01, 1.430e-01, -2.385e-02, 1.494e-01, -5.016e-03, 5.681e-02, 3.792e-02, 2.435e-01, 1.533e-02, -9.062e-02), r);\n\tr = MulAdd(s5_5, M4(4.646e-03, -6.645e-02, -2.206e-02, 1.096e-01, 1.602e-01, -2.943e-02, 2.762e-01, -3.057e-02, 1.723e-02, 7.497e-02, -1.430e-01, -4.040e-02, 4.436e-01, -1.915e-01, -3.968e-02, -3.058e-02), r);\n\tr = MulAdd(s5_6, M4(2.339e-01, 6.296e-02, -1.281e-02, -3.622e-02, 8.146e-01, 5.991e-01, 2.123e-01, -5.318e-02, -1.350e-01, -1.494e-01, -8.924e-02, 2.989e-02, -4.053e-01, -2.480e-03, -6.285e-02, -1.024e-01), r);\n\tr = MulAdd(s5_7, M4(-1.237e-01, 5.261e-02, 1.015e-02, -5.028e-02, 3.307e-01, -1.153e-01, -2.319e-02, 1.187e-02, -3.670e-02, -1.935e-02, -7.525e-02, -1.157e-01, -3.444e-01, 5.113e-02, 8.425e-02, -2.187e-01), r);\n\tr = MulAdd(s5_8, M4(-6.028e-02, 1.487e-02, 4.743e-02, 8.088e-02, -2.379e-02, 1.973e-01, -6.041e-02, 7.984e-02, 1.320e-02, -3.280e-02, 2.315e-03, -7.257e-02, 6.421e-02, -1.990e-01, 9.782e-02, -1.607e-01), r);\n\tr = MulAdd(s6_0, M4(-1.746e-01, -1.096e-01, -4.016e-02, 2.316e-02, -1.189e-01, 9.210e-02, -1.773e-02, -8.569e-02, -4.666e-02, 3.651e-01, 4.906e-03, 2.222e-01, 2.055e-01, 1.802e-01, 1.129e-01, 1.117e-01), r);\n\tr = MulAdd(s6_1, M4(-1.525e-01, 1.392e-01, 4.853e-02, 2.790e-02, 6.696e-02, 1.395e-01, -5.621e-02, 1.454e-01, -5.803e-02, 1.297e-01, 7.659e-02, 8.137e-02, 7.510e-03, 2.824e-03, 8.717e-02, 2.927e-02), r);\n\tr = MulAdd(s6_2, M4(-1.327e-02, 8.183e-03, 1.518e-01, -2.946e-03, 7.108e-02, 1.311e-01, -2.148e-02, 2.953e-02, -9.645e-02, 3.880e-01, 8.442e-02, 1.101e-01, 9.102e-02, -1.020e-01, 2.197e-02, -1.570e-01), r);\n\tr = MulAdd(s6_3, M4(-1.404e-01, 1.216e-01, 1.599e-02, -1.471e-01, -1.515e-02, 6.933e-02, -1.272e-01, -9.458e-03, -2.156e-01, -2.151e-01, -1.655e-01, -4.164e-02, -1.211e-01, -9.239e-02, -3.468e-02, 1.937e-03), r);\n\tr = MulAdd(s6_4, M4(2.207e-02, 1.661e-02, 6.881e-02, -4.938e-02, -1.981e-02, 8.082e-02, -1.806e-02, 1.308e-01, -1.566e-01, -1.687e-01, 4.704e-02, -3.613e-01, -9.430e-02, -2.023e-01, 1.244e-01, 5.668e-02), r);\n\tr = MulAdd(s6_5, M4(-1.438e-02, 8.418e-02, 5.582e-02, 4.658e-02, 9.767e-03, 1.296e-01, -8.625e-02, 6.566e-02, -4.197e-02, -4.831e-02, 7.632e-02, -3.700e-02, 2.381e-02, -1.422e-01, 2.721e-01, -1.149e-01), r);\n\tr = MulAdd(s6_6, M4(1.040e-01, 1.133e-02, 2.081e-02, 1.203e-02, 2.419e-01, 4.390e-02, 4.088e-02, 1.739e-01, 1.626e-01, 1.626e-01, 7.494e-02, 9.982e-02, 7.710e-02, 1.424e-01, 6.593e-03, -1.490e-01), r);\n\tr = MulAdd(s6_7, M4(1.593e-02, -8.501e-02, -3.821e-02, 5.587e-02, 1.242e-01, -1.739e-01, 6.258e-03, 2.321e-02, 2.304e-01, 5.343e-02, 7.296e-02, 3.140e-02, -8.605e-02, -1.336e-02, -2.243e-01, -1.296e-01), r);\n\tr = MulAdd(s6_8, M4(-7.701e-03, -2.540e-02, 6.064e-02, 4.354e-02, -5.639e-02, -1.145e-01, -2.456e-02, -6.280e-02, 2.549e-01, 8.659e-03, 2.024e-01, 2.090e-01, 1.751e-01, 1.903e-01, -2.858e-01, -4.304e-03), r);\n\tr = MulAdd(s7_0, M4(-1.837e-02, 2.402e-02, 3.309e-03, 8.617e-03, 6.836e-02, 2.067e-01, -3.861e-03, 4.940e-02, -9.221e-02, 2.281e-02, -1.917e-02, -8.949e-02, -3.042e-02, -6.460e-02, -4.224e-02, 3.207e-02), r);\n\tr = MulAdd(s7_1, M4(-2.121e-01, 5.468e-02, 2.221e-02, -2.191e-03, -5.089e-02, 9.094e-03, 3.493e-02, 3.266e-02, 4.843e-02, 6.992e-02, 1.177e-01, -2.361e-02, -3.117e-02, 1.798e-01, -2.280e-01, -5.832e-02), r);\n\tr = MulAdd(s7_2, M4(8.313e-02, -3.986e-02, 4.971e-02, 6.207e-02, 9.079e-02, 9.608e-02, 1.472e-02, 2.360e-02, 3.350e-02, -7.497e-02, 5.004e-03, 2.574e-02, -3.489e-02, 1.469e-03, 5.901e-02, -7.264e-02), r);\n\tr = MulAdd(s7_3, M4(1.947e-01, -1.781e-01, 3.008e-03, -1.291e-01, 7.364e-02, 6.604e-02, -6.041e-02, 1.262e-01, -1.353e-01, 1.625e-02, 3.219e-02, 2.061e-02, -6.350e-02, -1.169e-01, -8.725e-02, 7.904e-02), r);\n\tr = MulAdd(s7_4, M4(-4.648e-02, -1.010e-02, 1.896e-02, 2.226e-01, 3.922e-02, 1.277e-01, 9.701e-02, -3.059e-02, 3.853e-03, -1.012e-01, 1.153e-02, -4.876e-02, -4.124e-02, 4.852e-02, -5.050e-02, 1.209e-01), r);\n\tr = MulAdd(s7_5, M4(-1.581e-02, 3.426e-02, -9.987e-02, 6.714e-02, 1.979e-01, -1.942e-02, -1.218e-01, -4.330e-02, -9.028e-02, -1.265e-02, 9.580e-02, -4.611e-02, -5.395e-02, -1.992e-01, 7.735e-02, 5.766e-03), r);\n\tr = MulAdd(s7_6, M4(1.670e-01, 1.696e-01, 6.262e-02, -4.667e-02, 3.841e-02, 6.407e-02, -8.766e-02, -5.676e-02, 8.497e-02, -3.010e-02, -3.407e-02, 2.600e-02, 5.656e-02, 6.309e-03, -2.136e-02, -9.589e-02), r);\n\tr = MulAdd(s7_7, M4(1.196e-01, 6.606e-02, -1.223e-01, -2.459e-02, -4.519e-02, 6.432e-02, 6.285e-02, 1.156e-01, -1.890e-02, 8.361e-02, -1.170e-02, -1.684e-02, 1.223e-01, 2.185e-01, 4.274e-02, -2.461e-02), r);\n\tr = MulAdd(s7_8, M4(1.232e-01, -5.513e-02, -1.628e-02, -3.733e-02, 1.027e-02, 3.609e-02, 6.349e-02, -9.551e-02, 1.832e-01, -9.725e-03, -1.850e-02, -5.244e-03, -6.073e-02, -1.743e-01, 1.350e-02, -2.928e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.948e-04, -1.211e-02, -1.102e-02, -4.060e-03 };\n\tr = MulAdd(s0_0, M4(-1.403e-02, -3.617e-02, 6.562e-02, 5.876e-02, -6.178e-02, 1.725e-01, 1.095e-01, 8.162e-02, -1.465e-01, 2.106e-02, 2.242e-01, -8.096e-03, 5.256e-02, 4.765e-03, 3.636e-03, -1.354e-01), r);\n\tr = MulAdd(s0_1, M4(-5.538e-02, -1.166e-01, -5.697e-02, -8.648e-02, -1.756e-01, 6.405e-02, -3.340e-01, 1.930e-01, 1.808e-01, -5.507e-01, -1.670e-01, 2.021e-02, -3.780e-02, -4.192e-02, 1.718e-03, -5.116e-02), r);\n\tr = MulAdd(s0_2, M4(-2.934e-02, -9.119e-02, -1.676e-01, -1.473e-02, -8.223e-02, -3.447e-01, 1.063e-01, 6.842e-03, -1.147e-01, 1.334e-01, 2.362e-01, -1.720e-01, -2.902e-02, 4.821e-02, 1.806e-03, -6.014e-03), r);\n\tr = MulAdd(s0_3, M4(1.224e-01, 9.122e-02, 2.484e-02, -1.232e-01, 8.127e-02, -2.319e-01, 1.683e-01, -2.717e-03, 3.447e-01, 4.864e-01, -3.165e-01, 1.025e-01, 1.120e-01, -9.687e-02, -1.213e-01, -3.732e-02), r);\n\tr = MulAdd(s0_4, M4(1.194e-01, -1.310e-02, 4.169e-03, 4.984e-02, 1.139e-02, 3.027e-01, 8.156e-02, -1.198e-01, 2.414e-02, -1.129e-01, 2.602e-01, 4.357e-01, 1.966e-02, 4.241e-02, -1.662e-02, -1.402e-01), r);\n\tr = MulAdd(s0_5, M4(7.734e-02, 7.766e-03, -1.040e-01, 4.922e-02, 7.198e-02, -3.357e-02, 7.957e-02, 2.508e-02, 2.455e-02, -2.451e-01, -8.346e-02, -9.900e-02, -4.279e-02, 6.600e-02, -1.474e-01, 6.493e-02), r);\n\tr = MulAdd(s0_6, M4(-1.662e-02, 1.719e-01, 1.430e-01, -1.996e-01, -6.115e-02, 1.890e-01, 8.272e-02, 2.100e-01, -1.199e-01, -8.902e-04, -4.773e-02, -1.766e-02, 1.617e-01, 1.993e-03, 8.756e-02, -8.822e-04), r);\n\tr = MulAdd(s0_7, M4(-3.232e-02, -9.500e-02, -5.929e-02, 8.015e-03, -5.343e-02, 1.559e-01, 7.296e-02, 1.787e-01, -1.910e-01, -4.287e-01, -2.358e-01, 1.208e-01, -5.813e-03, 9.995e-03, 4.872e-02, -5.149e-02), r);\n\tr = MulAdd(s0_8, M4(-7.287e-02, 8.100e-02, 8.894e-03, -6.739e-02, 4.589e-02, -5.955e-02, 3.243e-02, 1.166e-01, 7.412e-02, 4.255e-01, -1.286e-01, 3.347e-01, 9.307e-02, -2.762e-02, -4.989e-02, -5.027e-02), r);\n\tr = MulAdd(s1_0, M4(2.221e-03, -1.009e-02, 5.894e-02, -5.153e-03, -4.216e-02, 4.741e-02, -2.521e-02, 2.051e-02, 7.111e-02, 1.454e-02, -1.271e-01, 4.734e-02, 1.520e-01, -2.913e-02, -1.744e-02, -3.606e-04), r);\n\tr = MulAdd(s1_1, M4(-7.256e-02, -5.916e-02, -1.794e-01, -9.403e-02, -3.887e-02, -1.682e-02, -1.125e-01, 1.256e-01, -1.047e-01, 1.052e-01, 3.306e-02, -1.035e-01, 3.830e-02, 6.017e-02, -1.455e-01, -3.673e-02), r);\n\tr = MulAdd(s1_2, M4(-4.656e-02, 6.576e-02, -1.206e-02, 7.373e-02, 4.382e-02, -1.212e-01, 1.372e-02, 8.064e-02, -2.083e-02, -3.965e-02, 9.661e-02, 1.333e-01, -1.871e-02, 6.751e-02, -7.939e-02, -5.082e-03), r);\n\tr = MulAdd(s1_3, M4(-4.448e-02, 1.242e-01, 1.363e-01, 1.097e-02, 3.059e-02, 1.664e-01, 6.723e-03, -2.766e-02, 2.248e-01, 3.909e-02, -3.693e-02, -2.665e-02, -6.694e-02, -6.712e-02, -2.997e-02, -5.125e-02), r);\n\tr = MulAdd(s1_4, M4(-8.008e-02, -8.090e-02, 2.143e-02, 1.325e-01, 2.997e-02, 4.596e-03, 4.955e-02, -1.075e-01, -1.620e-01, -1.642e-02, -7.744e-02, 4.908e-02, 1.461e-01, 4.913e-02, 1.980e-01, 1.527e-03), r);\n\tr = MulAdd(s1_5, M4(7.835e-02, 2.489e-03, -1.135e-01, -7.925e-03, -6.510e-02, -5.075e-03, -1.535e-01, -5.507e-02, -3.445e-03, -6.483e-02, -4.045e-02, -5.231e-02, 6.616e-02, -1.497e-01, 1.292e-01, -1.680e-01), r);\n\tr = MulAdd(s1_6, M4(7.055e-02, 4.363e-04, -8.264e-02, 1.886e-01, 1.036e-01, -3.691e-02, 6.142e-02, -8.803e-02, 3.578e-02, 4.038e-02, 2.817e-02, 3.503e-02, 1.955e-02, 6.893e-02, -9.415e-02, -1.477e-01), r);\n\tr = MulAdd(s1_7, M4(1.175e-01, -4.995e-02, 2.677e-02, 1.575e-01, -5.070e-02, -1.014e-01, -4.180e-02, 9.582e-02, -6.029e-02, -4.345e-03, 1.650e-01, -1.279e-01, -5.815e-02, 2.293e-01, -1.717e-01, -1.789e-03), r);\n\tr = MulAdd(s1_8, M4(6.751e-02, 2.129e-02, -1.387e-01, 1.960e-01, 7.240e-02, -9.169e-02, 2.059e-02, -2.487e-02, 3.175e-02, 8.674e-02, 1.437e-02, 1.178e-01, 1.861e-01, 9.650e-02, 9.152e-02, 1.052e-01), r);\n\tr = MulAdd(s2_0, M4(-1.147e-02, -1.573e-01, -1.140e-01, -1.091e-01, 5.245e-02, 1.415e-01, -1.954e-02, -1.658e-02, 8.472e-02, 5.175e-02, 1.571e-02, -6.254e-03, 3.042e-01, -7.161e-02, -2.180e-01, 1.224e-01), r);\n\tr = MulAdd(s2_1, M4(-4.226e-02, 2.147e-01, 4.965e-02, 1.262e-02, 7.037e-02, 1.135e-01, 2.018e-02, -9.901e-03, 1.053e-01, 3.991e-02, -4.108e-02, 1.931e-01, -1.279e-01, -7.678e-02, -2.745e-01, -4.086e-02), r);\n\tr = MulAdd(s2_2, M4(1.274e-01, 2.729e-02, -3.767e-02, -9.551e-02, -8.582e-04, 6.972e-02, 5.652e-02, -1.703e-01, -1.039e-01, 2.611e-02, 5.974e-02, 1.935e-03, 7.292e-02, 1.259e-01, -1.342e-01, 1.929e-01), r);\n\tr = MulAdd(s2_3, M4(-6.665e-02, -7.866e-02, -8.065e-02, 1.293e-02, -8.966e-02, 2.920e-01, -1.036e-01, 1.502e-02, -5.053e-02, -8.296e-03, 5.614e-02, -3.914e-02, -4.724e-02, 1.787e-01, -1.154e-03, 1.690e-01), r);\n\tr = MulAdd(s2_4, M4(6.822e-02, 1.516e-01, -3.617e-02, -4.529e-02, -1.694e-01, 5.198e-02, 1.686e-01, 2.174e-02, -2.447e-02, 6.691e-02, -5.546e-03, -2.035e-01, 6.614e-02, -5.093e-03, -4.064e-02, -1.165e-01), r);\n\tr = MulAdd(s2_5, M4(4.233e-03, -1.801e-02, 4.971e-02, 1.083e-01, -1.115e-01, 2.789e-01, 2.396e-02, 9.253e-02, 1.171e-01, -2.170e-01, -5.590e-02, 1.451e-01, 1.054e-01, 4.272e-01, 7.070e-02, -1.768e-01), r);\n\tr = MulAdd(s2_6, M4(-8.236e-02, -8.419e-02, 7.004e-02, -2.031e-02, 6.163e-03, -5.510e-02, 2.173e-01, -2.632e-03, -1.647e-01, 1.409e-01, -2.231e-01, 4.268e-02, -8.566e-02, 1.053e-01, 3.142e-02, -2.915e-02), r);\n\tr = MulAdd(s2_7, M4(-2.966e-02, 5.465e-02, 6.451e-02, -2.482e-02, 1.275e-01, -1.012e-02, 2.244e-01, -5.186e-02, -1.035e-01, -3.406e-02, -1.420e-01, 1.346e-01, -1.446e-01, 6.941e-02, 1.040e-01, -2.175e-01), r);\n\tr = MulAdd(s2_8, M4(-3.278e-02, -1.629e-01, -7.868e-02, 1.538e-02, -6.383e-02, 1.542e-01, 1.447e-02, -4.754e-02, 1.373e-01, 6.638e-02, -9.902e-02, 1.489e-01, -6.896e-02, 2.958e-01, 1.456e-01, -4.785e-02), r);\n\tr = MulAdd(s3_0, M4(2.547e-01, 3.212e-01, 8.020e-02, -1.309e-01, 5.922e-02, 7.839e-02, -4.911e-02, 1.490e-01, -5.825e-02, 7.189e-02, -3.384e-03, -2.041e-02, -1.284e-03, -1.997e-01, -1.863e-01, -8.275e-02), r);\n\tr = MulAdd(s3_1, M4(-1.870e-01, 4.164e-02, -3.392e-02, 1.332e-01, 5.288e-03, 9.235e-02, 1.344e-01, 1.175e-01, 5.099e-02, 2.085e-02, 9.926e-02, -2.592e-02, 1.802e-01, 1.656e-02, -3.266e-02, -7.870e-02), r);\n\tr = MulAdd(s3_2, M4(2.632e-01, -3.499e-02, -8.815e-02, -3.241e-02, 1.468e-01, 1.008e-01, 9.987e-02, -1.061e-01, 7.046e-02, -7.794e-02, -9.205e-03, -6.827e-02, -6.186e-02, 9.601e-02, 1.487e-01, -5.550e-02), r);\n\tr = MulAdd(s3_3, M4(-2.477e-01, 3.069e-02, -9.052e-03, -4.887e-02, -1.160e-02, -1.008e-01, -1.210e-01, 8.770e-03, 2.958e-02, 1.116e-01, -6.531e-02, -1.139e-01, -1.901e-02, -1.002e-01, 5.271e-02, 7.910e-02), r);\n\tr = MulAdd(s3_4, M4(-3.314e-02, -1.590e-02, -3.390e-01, -4.169e-02, -1.809e-02, -3.746e-02, -1.133e-01, -1.072e-02, 2.649e-03, -5.970e-02, 1.974e-03, -9.189e-02, -6.000e-02, -3.674e-02, 8.258e-02, -3.241e-02), r);\n\tr = MulAdd(s3_5, M4(4.051e-02, -2.999e-02, 3.019e-01, 2.686e-01, -3.148e-02, -2.528e-03, -4.993e-02, 1.105e-02, 3.181e-02, 3.027e-02, -1.154e-01, -1.808e-02, -5.615e-02, -6.097e-02, 4.423e-02, 1.191e-02), r);\n\tr = MulAdd(s3_6, M4(-5.900e-02, 1.167e-01, -1.050e-01, 6.975e-02, -5.700e-02, 7.639e-02, -1.640e-01, 5.529e-02, -2.196e-02, -5.372e-02, -3.286e-03, 1.109e-03, 7.070e-02, 2.862e-02, -2.767e-03, 3.804e-03), r);\n\tr = MulAdd(s3_7, M4(-2.711e-03, 1.331e-01, -2.052e-02, -7.003e-02, 7.249e-02, -2.045e-01, 9.754e-02, -5.843e-03, -1.166e-01, -1.128e-01, 6.700e-03, -8.543e-03, 7.056e-02, 5.545e-02, -1.505e-03, 1.847e-02), r);\n\tr = MulAdd(s3_8, M4(1.887e-02, -1.313e-01, 2.085e-02, -1.108e-01, -2.634e-02, -1.174e-01, 7.497e-02, -9.914e-02, 3.341e-02, 6.734e-03, -3.777e-02, -8.734e-02, -1.343e-01, 2.762e-02, 4.527e-02, 7.153e-02), r);\n\tr = MulAdd(s4_0, M4(-1.545e-02, -3.653e-02, -5.942e-02, 1.156e-01, 6.447e-03, -5.395e-02, -9.426e-03, 1.245e-01, 1.464e-01, 1.203e-01, 1.234e-02, 6.136e-02, 5.830e-02, -2.980e-02, -5.208e-02, -6.155e-02), r);\n\tr = MulAdd(s4_1, M4(6.423e-02, 1.237e-01, 3.567e-03, 8.611e-02, -7.281e-02, -6.306e-02, 2.345e-02, 1.440e-01, 1.770e-01, 2.031e-01, -4.515e-02, -1.793e-01, 7.675e-02, -3.717e-02, 5.172e-02, 7.787e-02), r);\n\tr = MulAdd(s4_2, M4(-1.312e-02, 1.646e-01, 1.046e-02, 2.364e-02, 7.445e-02, 9.217e-02, -5.421e-02, 3.565e-02, -3.234e-02, -3.305e-02, 1.478e-01, -6.713e-02, 4.497e-02, 7.324e-02, 1.659e-02, 7.569e-03), r);\n\tr = MulAdd(s4_3, M4(-8.683e-02, 1.411e-01, -6.177e-02, 6.614e-03, 1.355e-01, -1.229e-01, -2.661e-04, 4.569e-02, 1.053e-01, -4.977e-03, 5.875e-02, -3.044e-03, -9.842e-02, 1.890e-02, 1.434e-02, 1.655e-02), r);\n\tr = MulAdd(s4_4, M4(-9.536e-02, -1.763e-01, 7.815e-02, -1.333e-02, 7.132e-02, 5.331e-02, -7.482e-02, 1.781e-01, 7.652e-02, -1.080e-01, 1.546e-02, -5.917e-02, -2.365e-01, 7.391e-02, 1.376e-02, 5.754e-02), r);\n\tr = MulAdd(s4_5, M4(-4.995e-03, -2.146e-02, 9.806e-02, 4.611e-02, -4.164e-02, -8.312e-02, -1.299e-01, 7.270e-02, -3.732e-02, 1.034e-01, 6.050e-02, -1.064e-02, -9.351e-02, 8.942e-02, -2.541e-01, -1.477e-01), r);\n\tr = MulAdd(s4_6, M4(-1.657e-02, 8.071e-03, -2.339e-03, -1.180e-01, -1.259e-01, -4.578e-02, -7.240e-02, -9.815e-02, -3.630e-03, -1.096e-01, -3.503e-02, 3.489e-02, -1.277e-02, 1.032e-01, -1.663e-02, 1.283e-01), r);\n\tr = MulAdd(s4_7, M4(1.148e-01, -1.073e-01, -5.350e-02, -6.558e-02, 1.551e-01, 5.418e-02, 5.600e-02, -3.793e-02, 2.760e-02, -9.009e-02, 1.656e-01, -1.353e-01, -7.874e-02, 9.518e-02, -2.130e-01, 2.211e-02), r);\n\tr = MulAdd(s4_8, M4(1.467e-02, -1.723e-01, -1.542e-01, 3.568e-02, 1.502e-01, 1.887e-01, 4.048e-02, -9.308e-02, 9.895e-02, -6.491e-02, 3.288e-02, 3.030e-03, -1.132e-01, -6.092e-02, -1.132e-01, -8.899e-02), r);\n\tr = MulAdd(s5_0, M4(1.955e-01, 8.898e-02, -1.181e-01, 2.091e-01, -2.980e-02, 9.983e-04, 6.224e-02, 1.254e-01, 1.760e-01, -7.738e-02, 1.133e-01, 3.441e-04, -7.540e-02, -3.831e-03, -9.871e-02, -1.331e-01), r);\n\tr = MulAdd(s5_1, M4(1.465e-01, 1.291e-01, -1.122e-02, 1.248e-02, 2.605e-02, 6.992e-02, -2.890e-02, 6.967e-02, 1.604e-01, 4.109e-02, -1.681e-01, -1.727e-01, -6.260e-02, -5.841e-02, 7.631e-02, 1.554e-01), r);\n\tr = MulAdd(s5_2, M4(-5.447e-02, -1.075e-02, 1.339e-01, 5.172e-02, -1.473e-01, -4.341e-02, -7.417e-03, -1.221e-01, 6.087e-02, -6.401e-03, -2.981e-02, 1.068e-02, 9.820e-02, -1.350e-01, 7.692e-02, -3.415e-02), r);\n\tr = MulAdd(s5_3, M4(-8.800e-02, 2.183e-01, -1.861e-01, 8.092e-02, -1.644e-02, 5.692e-02, 5.083e-02, -3.447e-02, 7.326e-02, -4.875e-02, 4.948e-02, 9.255e-02, -8.272e-02, 1.329e-01, -2.294e-01, 5.548e-02), r);\n\tr = MulAdd(s5_4, M4(1.760e-01, -1.564e-01, 1.384e-01, 7.514e-02, 1.817e-01, 2.840e-01, -3.442e-02, 7.496e-02, 2.412e-02, -1.839e-01, 2.331e-02, -6.661e-02, -1.343e-01, 1.361e-01, 5.822e-02, 1.591e-01), r);\n\tr = MulAdd(s5_5, M4(-3.173e-02, 3.841e-02, 2.363e-01, -2.262e-02, -7.230e-02, -2.509e-01, 1.558e-01, 1.509e-02, 1.496e-02, -1.069e-01, -4.598e-02, 7.440e-02, 1.208e-01, -1.768e-01, 1.889e-03, -1.900e-03), r);\n\tr = MulAdd(s5_6, M4(2.696e-01, 1.620e-01, -8.768e-02, -2.647e-01, 1.032e-02, -1.206e-01, 2.903e-02, -2.450e-01, 1.581e-01, 1.221e-01, -3.151e-02, -1.756e-02, 1.783e-02, -5.833e-02, -1.955e-03, -3.332e-02), r);\n\tr = MulAdd(s5_7, M4(-1.619e-02, -1.299e-01, -3.026e-02, -1.959e-01, 2.244e-01, 4.688e-02, -3.125e-02, -1.485e-02, -1.218e-01, 1.568e-01, -3.067e-01, -1.595e-01, 1.118e-01, -1.011e-03, 5.350e-02, -2.963e-03), r);\n\tr = MulAdd(s5_8, M4(1.541e-01, -4.289e-02, -1.134e-01, -3.869e-02, 4.947e-03, -1.265e-01, 6.246e-02, -1.231e-01, -8.599e-02, -9.106e-02, -7.921e-03, -2.395e-01, -4.238e-02, 1.077e-01, -1.513e-02, -1.894e-02), r);\n\tr = MulAdd(s6_0, M4(2.234e-02, -4.553e-02, 1.398e-01, 1.044e-01, 6.616e-02, -6.898e-02, -6.531e-02, -9.138e-02, 6.607e-03, 1.845e-01, 1.200e-01, 8.614e-03, -5.389e-02, -7.037e-02, -6.011e-02, -7.417e-02), r);\n\tr = MulAdd(s6_1, M4(1.756e-01, 7.443e-02, 7.561e-03, -6.561e-02, 1.822e-01, 3.157e-01, 1.129e-01, -9.867e-02, 9.461e-02, -1.430e-02, 4.898e-02, -1.162e-02, -1.654e-01, -1.253e-01, 5.611e-02, 1.337e-02), r);\n\tr = MulAdd(s6_2, M4(-1.100e-01, -4.007e-02, -1.145e-01, -1.359e-02, 4.556e-02, -1.674e-01, -2.648e-02, 3.427e-02, -4.420e-02, 1.863e-01, -2.892e-02, 9.546e-02, 5.401e-02, 8.755e-02, -7.285e-02, 8.890e-02), r);\n\tr = MulAdd(s6_3, M4(1.080e-02, 8.277e-02, -4.599e-03, 5.186e-02, -3.957e-02, -3.767e-02, -2.234e-02, 1.051e-01, -1.412e-01, -4.216e-02, 1.428e-01, 4.970e-02, 4.656e-02, 4.265e-02, -9.892e-02, -1.250e-01), r);\n\tr = MulAdd(s6_4, M4(-1.043e-01, -1.390e-01, 1.606e-01, -9.595e-03, -1.813e-01, -7.386e-02, 2.139e-02, 1.030e-01, -9.393e-02, -1.933e-01, -3.866e-02, -7.151e-02, -1.906e-01, 4.585e-02, -7.522e-02, -7.019e-02), r);\n\tr = MulAdd(s6_5, M4(3.033e-01, 2.124e-01, -2.764e-01, 2.947e-02, -1.150e-01, 1.872e-01, -1.574e-01, 5.572e-03, -1.556e-03, 2.202e-01, -1.994e-01, -2.116e-02, -3.251e-02, -1.068e-01, -1.175e-01, 6.481e-02), r);\n\tr = MulAdd(s6_6, M4(-9.177e-02, 1.527e-03, 2.124e-01, -9.220e-02, 1.814e-01, -9.471e-02, -3.132e-02, 1.653e-02, 9.774e-02, -6.811e-02, 1.044e-01, 1.755e-01, 5.873e-02, 7.586e-02, -3.951e-02, 5.926e-02), r);\n\tr = MulAdd(s6_7, M4(-1.676e-02, 2.192e-01, -5.895e-02, 8.951e-02, -3.314e-02, -1.216e-01, 2.604e-01, -6.996e-02, -6.390e-02, 1.267e-01, 1.534e-01, 1.274e-02, -4.624e-02, -1.175e-01, 1.763e-01, -1.708e-03), r);\n\tr = MulAdd(s6_8, M4(-1.782e-01, 5.198e-02, -1.841e-01, -8.423e-02, 2.654e-02, 1.502e-02, 7.709e-02, 1.042e-01, -1.621e-01, 7.380e-02, 3.352e-01, -2.183e-01, 7.550e-02, -1.664e-01, 5.871e-02, 6.341e-02), r);\n\tr = MulAdd(s7_0, M4(2.787e-02, -1.106e-01, 1.183e-01, 9.263e-02, -1.182e-01, -2.032e-02, 2.971e-02, -2.570e-02, 7.528e-03, 1.364e-01, -1.684e-02, 1.154e-02, 1.148e-02, -1.973e-01, 1.085e-02, 8.788e-02), r);\n\tr = MulAdd(s7_1, M4(6.795e-02, -6.052e-02, -4.651e-02, -3.076e-02, -3.892e-02, 9.608e-02, 1.010e-02, 2.401e-02, 9.185e-02, 6.770e-02, -2.561e-02, 3.853e-02, 7.608e-02, -1.193e-01, -6.173e-02, -1.462e-02), r);\n\tr = MulAdd(s7_2, M4(-2.358e-01, -5.858e-02, 8.549e-02, -6.835e-02, -1.159e-01, -1.814e-01, 6.819e-02, -9.286e-03, 7.542e-03, 3.463e-02, -7.895e-02, 1.015e-02, 7.713e-03, 2.471e-01, -7.800e-02, -5.346e-04), r);\n\tr = MulAdd(s7_3, M4(3.231e-02, -1.111e-02, 1.412e-02, 2.273e-02, -1.642e-02, -5.983e-04, -8.450e-04, -1.484e-01, 1.165e-01, -7.660e-02, -2.169e-02, 1.688e-03, -7.418e-02, -1.375e-01, 6.957e-02, 1.065e-01), r);\n\tr = MulAdd(s7_4, M4(-9.288e-03, 7.980e-02, -2.395e-02, 1.716e-02, 4.346e-02, -1.573e-02, -5.085e-02, 8.665e-02, 4.425e-02, -2.547e-02, 2.819e-02, -4.830e-02, -1.122e-01, 1.073e-01, -8.217e-02, -1.054e-01), r);\n\tr = MulAdd(s7_5, M4(3.645e-02, -1.349e-01, -9.587e-02, 4.121e-02, 1.509e-01, 1.081e-01, -1.608e-02, -2.710e-03, -1.228e-02, -9.014e-02, -6.461e-02, -6.745e-02, -8.735e-03, 1.363e-01, 1.944e-02, -1.469e-01), r);\n\tr = MulAdd(s7_6, M4(4.604e-02, 6.706e-02, 4.920e-02, -6.415e-02, -2.627e-02, 2.023e-02, -7.547e-02, 9.757e-03, 6.469e-03, -3.236e-02, 1.086e-01, 1.333e-01, -4.419e-02, 1.301e-01, -9.470e-02, 1.160e-01), r);\n\tr = MulAdd(s7_7, M4(-1.934e-02, -8.758e-02, -2.389e-02, 4.202e-02, -9.827e-02, 2.160e-03, 4.170e-02, 1.612e-01, -1.579e-01, 6.141e-04, -6.358e-02, 1.494e-01, 8.995e-03, 3.656e-03, -1.656e-02, -1.924e-02), r);\n\tr = MulAdd(s7_8, M4(-8.968e-02, -5.243e-02, -1.008e-01, 2.100e-02, 6.757e-02, 3.647e-02, 9.779e-02, -2.094e-02, 6.224e-02, 1.040e-01, 7.031e-02, 4.442e-02, 4.028e-02, -1.658e-01, 1.233e-01, -4.432e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 5.032e-02, -4.577e-02, 1.268e-02, -1.043e-02 };\n\tr = MulAdd(s0_0, M4(7.666e-02, 9.032e-02, -2.201e-02, -6.146e-02, 2.565e-02, -1.249e-01, -2.453e-01, 1.563e-01, 3.906e-02, -1.881e-01, -1.185e-01, -6.974e-02, -7.445e-02, 2.590e-02, 1.370e-01, 9.587e-02), r);\n\tr = MulAdd(s0_1, M4(1.485e-02, -5.406e-02, 1.198e-01, -3.525e-02, -2.749e-01, 7.934e-02, -8.831e-02, -1.235e-01, 2.601e-02, -3.620e-01, 4.006e-01, 6.251e-02, 1.061e-01, -4.198e-02, -1.020e-01, 7.027e-02), r);\n\tr = MulAdd(s0_2, M4(8.552e-02, -8.702e-02, -1.050e-01, 8.812e-02, -8.084e-02, -1.278e-01, -5.957e-02, -7.390e-02, 9.906e-02, 3.698e-03, -2.657e-02, 1.046e-01, 3.750e-02, -4.238e-02, -6.149e-02, 9.148e-02), r);\n\tr = MulAdd(s0_3, M4(-2.718e-02, 2.005e-01, 3.921e-02, -1.183e-01, 2.641e-02, -3.971e-01, 3.685e-01, 2.269e-01, -3.809e-01, 1.650e-02, -1.960e-02, 9.178e-02, -4.059e-02, 1.761e-01, 6.480e-03, -6.381e-02), r);\n\tr = MulAdd(s0_4, M4(-9.580e-02, 7.215e-02, -2.382e-02, -1.245e-01, 1.164e-01, 2.302e-01, -2.095e-01, 7.592e-03, -9.482e-03, 6.913e-02, -2.947e-01, 8.693e-02, -7.960e-02, -1.149e-01, -9.717e-02, 1.169e-01), r);\n\tr = MulAdd(s0_5, M4(6.824e-02, -3.740e-02, -1.515e-02, 1.262e-02, -2.050e-01, 3.256e-02, 7.667e-02, -9.143e-03, 3.358e-01, 1.383e-01, 1.427e-02, 3.629e-02, 1.372e-01, -1.802e-01, 1.532e-02, -9.561e-02), r);\n\tr = MulAdd(s0_6, M4(-6.141e-02, -3.787e-02, -2.865e-02, 1.904e-02, -5.788e-02, -1.007e-01, -1.655e-01, -2.909e-02, 4.200e-01, -7.197e-02, 1.794e-01, -1.511e-01, -2.651e-02, 3.723e-02, 1.975e-02, -5.730e-02), r);\n\tr = MulAdd(s0_7, M4(-2.352e-01, 5.721e-03, -6.843e-03, -1.756e-02, -2.442e-01, 1.376e-01, 1.743e-01, -1.157e-01, 8.620e-02, -3.409e-01, 2.808e-01, 1.574e-02, -2.012e-01, -1.460e-01, 1.815e-02, -3.646e-02), r);\n\tr = MulAdd(s0_8, M4(-7.671e-02, -7.516e-03, 7.112e-03, 1.314e-01, -1.211e-01, 2.989e-02, -1.114e-01, 8.195e-02, 1.931e-01, -3.090e-01, 2.236e-01, -1.479e-01, -1.198e-01, 1.394e-01, 6.682e-02, 2.823e-02), r);\n\tr = MulAdd(s1_0, M4(2.086e-03, 7.605e-02, 2.401e-02, 4.246e-02, 1.589e-02, 1.838e-01, 3.515e-02, 8.184e-02, -3.673e-02, -9.430e-02, 2.514e-02, 6.057e-02, 2.841e-01, -6.646e-02, -1.239e-01, 2.357e-01), r);\n\tr = MulAdd(s1_1, M4(8.877e-02, -9.418e-02, 3.641e-02, 1.261e-01, -6.069e-02, -8.376e-02, -1.186e-01, 1.055e-01, -1.299e-01, -9.798e-02, -3.721e-03, 1.341e-01, -5.935e-02, 1.766e-01, -1.779e-02, 2.536e-01), r);\n\tr = MulAdd(s1_2, M4(-1.483e-02, -7.602e-02, 9.671e-02, 2.947e-02, 2.799e-02, -8.214e-02, 1.456e-02, -3.581e-02, 6.073e-02, -4.709e-02, 3.617e-02, 1.108e-01, -3.386e-02, 2.226e-01, -8.220e-02, 8.424e-02), r);\n\tr = MulAdd(s1_3, M4(1.184e-01, -1.050e-01, 1.171e-01, -1.030e-01, -2.208e-02, 4.890e-02, 9.540e-03, 2.225e-02, -4.529e-02, -1.523e-01, 7.643e-02, 2.764e-02, -1.046e-01, 4.842e-02, -9.415e-02, -3.510e-02), r);\n\tr = MulAdd(s1_4, M4(1.693e-01, 1.102e-01, 3.030e-02, -8.288e-02, 1.280e-01, -6.049e-02, -6.572e-02, 5.382e-02, 7.693e-02, -4.614e-02, 5.881e-02, -5.057e-02, -7.652e-02, 6.112e-02, 4.165e-02, 1.633e-01), r);\n\tr = MulAdd(s1_5, M4(2.528e-01, -2.931e-03, 5.261e-02, -9.514e-02, 6.023e-02, -1.958e-01, 1.570e-01, -7.941e-02, 1.139e-01, 1.269e-01, 8.440e-02, -2.689e-02, -9.776e-02, 2.662e-01, 1.035e-01, -3.723e-02), r);\n\tr = MulAdd(s1_6, M4(-1.351e-02, -1.382e-01, -3.532e-02, -2.055e-02, -1.894e-02, 2.036e-01, 1.207e-01, 3.210e-02, 3.033e-02, 2.978e-02, -7.349e-02, -2.898e-02, 4.164e-02, -7.748e-04, -4.873e-03, -1.019e-01), r);\n\tr = MulAdd(s1_7, M4(1.637e-01, 6.672e-02, -3.445e-02, -1.153e-01, -7.795e-02, 2.590e-02, 8.038e-03, -7.181e-03, 7.782e-02, 1.270e-01, -8.117e-02, 1.058e-01, -1.331e-01, -1.909e-02, -1.573e-01, -1.063e-01), r);\n\tr = MulAdd(s1_8, M4(2.150e-02, 1.225e-01, -5.032e-02, 4.249e-02, -4.711e-02, -2.849e-02, 2.106e-02, 6.465e-02, -1.970e-01, -7.572e-02, -5.393e-02, -1.200e-02, 2.129e-02, 1.024e-01, 1.226e-01, -3.303e-03), r);\n\tr = MulAdd(s2_0, M4(-5.706e-02, 1.852e-02, -1.208e-01, 3.757e-02, 2.709e-01, 9.974e-02, 3.542e-02, -3.886e-02, -1.522e-01, 1.936e-02, -7.223e-03, 4.352e-02, 1.106e-01, -1.664e-01, 6.247e-02, 5.651e-02), r);\n\tr = MulAdd(s2_1, M4(-4.986e-02, 1.104e-01, -2.070e-02, 1.312e-02, -2.313e-02, 9.140e-02, -1.958e-02, 6.337e-02, 1.447e-01, -7.056e-02, -6.767e-02, -7.895e-03, -3.117e-01, -1.126e-01, 5.749e-02, -1.313e-01), r);\n\tr = MulAdd(s2_2, M4(1.639e-01, 6.634e-02, -8.794e-02, -1.775e-02, 1.660e-01, 1.250e-01, -2.245e-01, -7.732e-03, 4.920e-02, 4.479e-02, 2.068e-01, -5.093e-02, 1.976e-01, -8.390e-02, 2.176e-01, -1.004e-01), r);\n\tr = MulAdd(s2_3, M4(-3.828e-03, 1.570e-01, 1.870e-02, 5.240e-02, -4.134e-02, -1.812e-01, -7.654e-02, 4.044e-02, -1.988e-01, 7.861e-02, -1.080e-01, 2.211e-01, -1.910e-01, 1.124e-01, -1.051e-01, 9.256e-02), r);\n\tr = MulAdd(s2_4, M4(3.312e-03, -3.115e-01, -3.936e-02, -1.400e-01, -1.562e-01, 7.303e-02, 3.164e-02, -2.597e-01, 4.709e-02, 8.292e-02, -2.773e-01, -7.151e-02, -1.589e-02, -7.293e-02, -1.918e-01, -3.138e-01), r);\n\tr = MulAdd(s2_5, M4(1.104e-01, 3.507e-02, -3.472e-02, 1.219e-01, 7.315e-02, -4.458e-02, 1.653e-02, -1.176e-01, 2.262e-01, 1.725e-01, -3.199e-02, 2.294e-01, -4.454e-01, 7.487e-02, 7.350e-02, 6.679e-02), r);\n\tr = MulAdd(s2_6, M4(-2.130e-01, 1.176e-02, 3.890e-02, -2.579e-02, 9.297e-02, 1.060e-01, 8.130e-02, 1.334e-01, -1.224e-02, -6.851e-02, 1.174e-01, 5.566e-02, 1.802e-01, -2.152e-02, -1.306e-01, 3.551e-02), r);\n\tr = MulAdd(s2_7, M4(-1.007e-01, -1.406e-02, 7.112e-02, 7.262e-02, -6.888e-02, -6.141e-02, 6.369e-02, 1.721e-02, -2.350e-02, 1.393e-01, -4.095e-02, -8.129e-02, -1.207e-01, 1.489e-01, -3.054e-03, 5.149e-02), r);\n\tr = MulAdd(s2_8, M4(-6.981e-02, 4.287e-02, -5.023e-02, -5.744e-02, 9.653e-02, 1.017e-01, -1.565e-01, -4.122e-02, 2.834e-02, -5.081e-02, -6.699e-02, -1.666e-01, 2.145e-01, 2.819e-01, 1.927e-01, -7.054e-02), r);\n\tr = MulAdd(s3_0, M4(1.677e-01, 1.473e-01, 3.507e-01, -4.333e-02, -8.797e-03, -6.254e-02, -5.991e-02, -6.359e-02, 2.555e-02, -5.722e-02, -1.022e-01, 2.396e-02, -1.831e-03, -9.545e-02, 2.552e-02, 9.494e-02), r);\n\tr = MulAdd(s3_1, M4(3.567e-01, 1.140e-01, -3.827e-02, 2.076e-02, -1.553e-02, 1.175e-02, 1.953e-02, -4.080e-02, 3.106e-02, -2.799e-02, 1.818e-02, 6.441e-02, 7.938e-02, 3.981e-02, 7.466e-02, 3.005e-02), r);\n\tr = MulAdd(s3_2, M4(5.776e-02, 8.585e-02, 1.620e-01, 7.642e-03, -2.849e-03, -1.101e-02, -1.019e-01, 3.324e-02, -4.136e-02, -7.884e-02, -3.288e-02, 2.354e-02, -3.060e-02, -3.389e-02, 2.350e-02, 1.188e-01), r);\n\tr = MulAdd(s3_3, M4(-1.462e-01, 7.524e-02, 1.006e-01, 1.034e-01, -1.036e-01, -1.128e-01, -1.691e-02, 1.681e-02, -2.843e-02, 1.467e-01, 2.567e-02, 6.833e-04, -9.970e-03, 9.909e-03, 2.123e-02, -1.002e-01), r);\n\tr = MulAdd(s3_4, M4(6.614e-03, -3.403e-02, -1.475e-01, 9.263e-02, 1.236e-01, -5.917e-02, 4.470e-02, -5.797e-02, -9.955e-02, 1.586e-01, -5.972e-02, 7.191e-03, 1.374e-01, 6.408e-03, -8.691e-02, -5.325e-02), r);\n\tr = MulAdd(s3_5, M4(1.359e-01, -1.171e-01, -1.458e-01, -1.435e-01, -8.667e-02, -9.621e-02, 5.608e-02, -2.996e-02, 9.120e-02, 6.453e-02, -8.623e-03, -1.160e-01, 3.232e-02, 9.819e-02, 8.440e-02, -1.131e-02), r);\n\tr = MulAdd(s3_6, M4(1.741e-01, -1.437e-01, -1.568e-01, -8.545e-02, -7.874e-02, 4.162e-02, 5.367e-03, 4.751e-02, 1.575e-03, 6.930e-02, -1.165e-01, -4.856e-02, 2.079e-03, -2.181e-02, -4.974e-04, -1.268e-01), r);\n\tr = MulAdd(s3_7, M4(1.503e-01, -2.117e-02, 1.944e-02, 1.516e-01, 5.005e-04, -9.844e-03, 8.157e-02, -5.608e-02, -1.814e-03, 1.025e-02, 1.097e-01, 2.607e-02, 1.773e-01, -7.290e-02, 1.030e-01, -3.631e-03), r);\n\tr = MulAdd(s3_8, M4(3.999e-02, -4.659e-02, -5.558e-02, -7.875e-02, 2.126e-02, 7.585e-02, 1.009e-02, 1.504e-01, 6.764e-02, 3.493e-02, 1.973e-02, 1.869e-02, -6.713e-02, -1.065e-02, 3.534e-02, -1.395e-02), r);\n\tr = MulAdd(s4_0, M4(-1.134e-01, 8.116e-02, -3.079e-02, 4.865e-02, 3.037e-02, -8.456e-03, 2.037e-02, 4.035e-02, 8.870e-02, -5.168e-02, -7.097e-02, 1.182e-02, 8.179e-02, 6.262e-02, -1.896e-02, -1.180e-02), r);\n\tr = MulAdd(s4_1, M4(-7.539e-02, -1.209e-02, 5.066e-02, 5.975e-02, 3.251e-02, 1.350e-01, 1.070e-01, -1.179e-01, 5.979e-02, -1.042e-01, 3.319e-02, 6.937e-02, 1.298e-02, 1.025e-01, 4.439e-02, 1.572e-02), r);\n\tr = MulAdd(s4_2, M4(1.715e-01, 1.622e-02, -1.270e-02, -2.385e-02, 9.077e-02, 3.933e-02, 3.160e-02, -3.490e-02, -8.716e-02, 2.980e-02, 1.200e-02, 1.393e-02, -1.437e-02, -1.855e-02, 6.809e-02, 5.919e-02), r);\n\tr = MulAdd(s4_3, M4(1.477e-03, 1.297e-02, 1.144e-01, -6.711e-02, 5.587e-02, 2.710e-02, -5.822e-03, 4.206e-02, 9.215e-02, -1.196e-01, -7.597e-02, -1.183e-01, -1.901e-01, -3.141e-02, -2.777e-02, 1.525e-02), r);\n\tr = MulAdd(s4_4, M4(-4.174e-02, -3.953e-02, 4.881e-02, 8.356e-02, 1.196e-01, 8.192e-02, 6.524e-03, 3.029e-01, -1.256e-01, -2.574e-01, -2.211e-02, -1.309e-01, 1.115e-02, 8.013e-02, -1.392e-01, 4.997e-02), r);\n\tr = MulAdd(s4_5, M4(1.356e-01, -1.733e-02, 1.330e-02, -6.480e-02, 3.517e-02, 2.987e-02, -4.573e-03, -2.763e-02, 1.162e-01, 9.809e-03, 3.198e-02, -3.287e-02, 1.137e-02, 7.550e-02, -1.550e-02, 3.757e-02), r);\n\tr = MulAdd(s4_6, M4(-4.280e-02, 1.226e-01, -2.720e-02, -1.766e-01, 1.696e-01, -3.785e-02, -1.127e-01, -7.823e-02, 8.688e-02, -4.526e-02, 4.855e-02, 1.790e-02, 3.076e-02, -1.223e-01, 7.112e-02, -1.042e-02), r);\n\tr = MulAdd(s4_7, M4(-1.149e-01, -1.131e-01, 1.137e-02, -1.700e-02, 7.438e-02, -5.237e-02, -2.700e-02, -1.385e-01, -5.454e-02, 2.996e-02, 1.073e-01, -1.845e-02, -2.428e-02, -2.637e-01, -3.791e-02, -9.931e-03), r);\n\tr = MulAdd(s4_8, M4(1.571e-02, 4.287e-02, 1.423e-03, -4.407e-02, -3.704e-02, 1.618e-02, -2.138e-02, -1.316e-02, 3.961e-02, -8.012e-03, 3.706e-03, -4.285e-03, 9.088e-02, -5.418e-02, 3.478e-02, -4.119e-02), r);\n\tr = MulAdd(s5_0, M4(4.162e-02, -1.331e-01, -5.190e-02, 5.715e-02, 2.217e-02, -1.053e-01, 2.508e-02, 1.156e-02, -2.425e-01, 1.921e-01, 8.250e-03, 1.186e-01, -3.488e-02, 6.156e-03, -1.557e-01, 9.502e-02), r);\n\tr = MulAdd(s5_1, M4(3.882e-02, -2.317e-01, 6.298e-02, 8.951e-02, -6.931e-02, -3.340e-02, 8.133e-03, -6.065e-02, -7.284e-02, 2.075e-01, 1.225e-01, 1.334e-01, -7.015e-02, 1.558e-01, -1.325e-01, 2.827e-02), r);\n\tr = MulAdd(s5_2, M4(-1.140e-01, -8.167e-03, 8.685e-02, -1.204e-01, 5.963e-02, -5.059e-02, -2.958e-02, 2.435e-02, -3.522e-02, 6.776e-02, 4.747e-02, 1.390e-02, -7.056e-02, 4.729e-02, -3.997e-02, 1.950e-02), r);\n\tr = MulAdd(s5_3, M4(-2.847e-01, 8.763e-03, 3.029e-03, -8.931e-02, 4.601e-02, -1.008e-01, 1.617e-01, -1.121e-01, -3.437e-02, -2.914e-01, -6.525e-02, -2.407e-02, -1.468e-01, -1.163e-01, -2.765e-02, 1.279e-01), r);\n\tr = MulAdd(s5_4, M4(-3.532e-01, -5.370e-01, -2.293e-01, -1.509e-01, -1.627e-01, -1.320e-01, 8.390e-02, 2.549e-01, 6.796e-02, -1.001e-01, 1.203e-01, -1.304e-01, 2.196e-01, -1.370e-01, -4.373e-02, 1.462e-01), r);\n\tr = MulAdd(s5_5, M4(6.871e-02, 1.861e-01, 3.017e-02, -1.267e-01, -5.801e-02, -4.496e-02, 7.975e-03, -2.299e-03, 4.447e-02, 7.482e-02, 1.188e-01, -4.312e-02, 2.429e-02, -3.091e-02, -7.634e-02, -6.494e-03), r);\n\tr = MulAdd(s5_6, M4(6.759e-02, 2.705e-01, 7.172e-02, -1.114e-01, 2.264e-02, -3.490e-02, 1.427e-01, -1.086e-01, -7.622e-02, -1.221e-01, 6.731e-02, 3.163e-02, -5.137e-03, 6.783e-02, 6.506e-02, 1.396e-02), r);\n\tr = MulAdd(s5_7, M4(-2.853e-02, -1.336e-02, -2.271e-01, -2.608e-01, 8.926e-03, -5.704e-02, -1.149e-01, -5.734e-02, 2.139e-01, 1.250e-01, -3.221e-02, 7.016e-02, 3.786e-02, -4.232e-02, 2.596e-02, -1.358e-02), r);\n\tr = MulAdd(s5_8, M4(-1.766e-01, 9.220e-02, -1.463e-01, 9.172e-02, -3.084e-02, 4.158e-03, 3.663e-02, 1.392e-01, 2.581e-02, 4.948e-02, 7.296e-02, 6.705e-03, 9.721e-02, 5.589e-02, 9.313e-02, 5.676e-02), r);\n\tr = MulAdd(s6_0, M4(1.389e-01, -5.061e-02, -1.088e-01, -5.382e-02, -1.983e-01, -1.810e-01, -5.466e-02, 1.263e-01, 1.119e-01, -5.409e-02, 1.548e-01, -1.145e-02, -1.095e-01, 8.266e-02, -1.538e-01, -8.467e-02), r);\n\tr = MulAdd(s6_1, M4(-1.058e-01, 2.745e-03, -1.151e-01, 8.218e-02, 1.352e-01, 2.115e-02, 1.762e-01, -2.165e-01, -8.160e-02, 9.388e-02, -9.487e-02, -3.961e-02, -2.485e-01, 8.816e-02, 1.005e-01, -3.592e-02), r);\n\tr = MulAdd(s6_2, M4(-3.547e-02, 1.115e-01, -9.055e-02, 1.703e-02, -4.863e-02, -8.964e-03, 8.184e-02, 1.259e-01, 1.277e-01, 7.002e-02, 8.729e-02, -5.827e-02, -1.313e-01, -1.059e-02, 5.656e-02, -6.988e-02), r);\n\tr = MulAdd(s6_3, M4(1.333e-01, 2.085e-02, -8.655e-02, 8.451e-03, 5.484e-02, 4.948e-02, -2.670e-02, 1.193e-01, -7.518e-02, -2.204e-02, -3.060e-01, -3.716e-02, -2.628e-01, -6.542e-02, 1.778e-02, 5.259e-02), r);\n\tr = MulAdd(s6_4, M4(-1.002e-01, 5.889e-02, -1.626e-02, 6.611e-02, 4.457e-02, -1.635e-01, 1.607e-01, -4.766e-02, 1.387e-01, 7.029e-02, -2.287e-02, -1.344e-01, -5.337e-02, 3.612e-01, -3.124e-02, 6.267e-03), r);\n\tr = MulAdd(s6_5, M4(-3.155e-02, -1.333e-01, -2.880e-01, -8.074e-02, 1.202e-02, -1.220e-01, 7.272e-02, -8.412e-02, 3.824e-02, -2.659e-02, -1.101e-01, -1.081e-01, 9.377e-02, 7.997e-02, 7.275e-02, -3.931e-02), r);\n\tr = MulAdd(s6_6, M4(2.572e-01, -1.077e-01, -1.644e-02, 1.457e-01, 5.132e-02, 9.947e-03, 4.456e-02, -6.646e-02, 6.961e-02, -8.575e-02, 1.134e-03, -1.151e-01, 1.080e-01, -8.681e-02, -1.298e-01, -1.321e-02), r);\n\tr = MulAdd(s6_7, M4(3.594e-02, 3.047e-02, -2.546e-02, 6.505e-02, 1.297e-02, 7.161e-02, 7.782e-03, 7.071e-02, -2.103e-01, 1.381e-01, 6.068e-02, 4.778e-03, 2.234e-01, 5.741e-02, -3.634e-02, 1.066e-01), r);\n\tr = MulAdd(s6_8, M4(1.112e-01, 6.533e-02, 9.034e-02, 6.432e-03, -6.278e-02, -5.334e-02, -4.704e-02, -8.631e-02, 7.447e-02, -2.760e-02, 3.754e-02, -6.832e-03, 1.714e-01, -6.705e-02, 1.092e-01, 4.948e-03), r);\n\tr = MulAdd(s7_0, M4(3.159e-02, 1.240e-01, -5.362e-02, 1.381e-02, 8.764e-02, 5.201e-02, -1.034e-01, -5.419e-02, -4.280e-02, -4.836e-02, -1.431e-02, 8.510e-03, 3.429e-02, -3.161e-03, 1.769e-01, -2.308e-02), r);\n\tr = MulAdd(s7_1, M4(1.021e-01, -1.192e-02, 1.610e-02, 6.216e-02, -4.984e-02, 7.992e-02, 3.379e-02, -1.361e-01, -4.569e-02, 2.165e-02, 1.517e-02, -9.636e-02, 1.179e-01, 3.497e-02, -4.487e-03, -9.354e-02), r);\n\tr = MulAdd(s7_2, M4(-8.054e-02, 1.085e-01, -1.880e-01, -1.110e-02, 7.848e-02, 1.598e-01, -1.752e-02, -3.300e-02, -2.045e-02, -5.159e-04, -1.080e-01, 9.817e-03, 2.359e-01, -1.174e-01, 1.120e-02, 3.895e-02), r);\n\tr = MulAdd(s7_3, M4(-1.928e-01, -1.955e-01, -6.519e-02, -5.186e-02, -6.512e-02, 8.111e-02, 2.676e-02, 1.932e-01, -4.831e-02, -7.808e-02, -1.497e-01, -1.236e-01, -2.210e-02, 2.161e-02, -1.781e-02, 8.890e-02), r);\n\tr = MulAdd(s7_4, M4(-6.295e-02, -3.097e-02, 9.677e-02, -5.350e-02, -7.605e-02, 7.948e-02, 1.186e-02, 1.029e-02, 6.487e-02, 8.562e-02, -2.551e-02, -7.505e-02, 5.046e-02, -1.407e-01, 6.605e-02, 2.090e-02), r);\n\tr = MulAdd(s7_5, M4(-7.145e-02, -2.834e-01, -2.368e-01, -6.555e-03, 1.479e-02, -6.847e-03, -7.866e-02, -6.069e-02, -2.575e-02, -3.028e-02, -1.240e-01, 5.744e-03, 7.801e-02, -2.100e-01, -5.000e-02, 1.188e-01), r);\n\tr = MulAdd(s7_6, M4(1.041e-01, 8.486e-02, 3.132e-02, 7.366e-02, -2.167e-03, -3.460e-02, 6.584e-02, -6.718e-03, 2.570e-02, 7.664e-02, -5.134e-02, -4.992e-02, -3.093e-02, 1.045e-01, -1.632e-02, -6.519e-02), r);\n\tr = MulAdd(s7_7, M4(2.307e-01, -9.116e-02, 6.069e-02, 1.480e-01, -3.872e-02, 1.230e-02, -1.795e-02, -4.544e-02, 2.310e-02, -1.826e-01, -4.322e-04, -5.085e-02, -1.604e-01, -1.015e-01, 1.450e-01, 8.899e-02), r);\n\tr = MulAdd(s7_8, M4(-2.918e-02, -1.560e-02, 7.724e-02, 2.655e-02, 1.305e-02, -3.557e-02, 1.672e-02, -1.096e-01, -1.017e-01, -8.922e-02, -1.382e-02, -4.060e-02, -2.747e-02, 1.763e-01, -5.824e-02, 7.754e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -6.811e-02, 2.117e-02, 1.429e-02, 1.018e-02 };\n\tr = MulAdd(s0_0, M4(5.596e-02, 6.943e-02, -9.947e-02, 6.927e-03, -2.689e-01, 1.489e-01, 1.433e-01, -8.788e-02, -2.760e-01, -1.684e-01, 3.374e-01, -1.597e-01, 1.809e-01, -4.356e-02, -3.220e-02, 3.343e-02), r);\n\tr = MulAdd(s0_1, M4(2.311e-03, 6.202e-02, 5.539e-02, -2.832e-02, -1.119e-01, 2.494e-03, 8.241e-02, 4.263e-02, 5.947e-02, 5.792e-01, 7.347e-03, -5.233e-01, -2.318e-02, -3.264e-02, 9.149e-02, 1.913e-01), r);\n\tr = MulAdd(s0_2, M4(7.400e-02, 2.716e-02, 8.377e-02, -5.535e-02, -1.384e-01, -2.959e-02, -2.358e-02, 4.064e-02, -3.272e-01, -1.154e-01, -1.282e-02, 1.296e-01, 1.348e-01, 7.577e-02, 5.781e-02, -8.975e-02), r);\n\tr = MulAdd(s0_3, M4(-1.644e-02, -3.264e-02, 1.552e-01, -2.369e-02, -1.587e-01, -6.883e-02, -2.633e-01, 1.207e-01, -3.596e-02, -4.935e-02, 1.061e-01, 1.171e-01, -9.021e-02, -1.341e-01, 9.733e-02, 4.458e-02), r);\n\tr = MulAdd(s0_4, M4(-7.350e-02, 1.915e-02, 3.980e-02, -1.548e-01, 2.778e-02, 6.400e-02, -2.679e-02, 2.614e-01, -5.313e-02, -3.638e-01, 3.060e-03, -1.356e-01, 8.916e-02, -6.320e-02, 1.008e-01, -1.072e-01), r);\n\tr = MulAdd(s0_5, M4(-1.026e-01, 3.062e-02, 1.216e-01, 2.672e-02, -7.390e-02, 5.774e-02, 3.043e-01, -3.872e-02, 9.893e-02, -1.651e-01, -4.124e-01, -5.980e-02, 1.284e-01, 9.903e-02, -1.100e-01, 5.260e-02), r);\n\tr = MulAdd(s0_6, M4(-1.704e-02, 2.078e-02, -4.136e-02, -1.215e-01, 7.739e-02, 3.368e-02, 2.705e-01, 1.507e-01, 6.234e-02, 8.265e-02, 8.168e-02, -2.070e-01, -4.027e-02, -1.179e-01, -2.789e-02, 2.922e-02), r);\n\tr = MulAdd(s0_7, M4(-5.078e-02, -1.269e-01, 7.594e-02, -2.399e-02, -2.337e-01, -2.242e-01, -1.177e-01, -3.980e-02, 9.262e-02, 1.368e-01, 3.213e-01, 1.154e-02, 2.914e-02, 1.221e-02, 4.595e-02, -3.833e-02), r);\n\tr = MulAdd(s0_8, M4(8.054e-03, 2.570e-02, -2.123e-02, -5.568e-02, -1.061e-02, 4.955e-02, 3.951e-02, -4.474e-02, 2.179e-01, 1.455e-01, 2.215e-01, -4.518e-02, 2.380e-02, -5.217e-02, 8.083e-02, 1.411e-01), r);\n\tr = MulAdd(s1_0, M4(-1.332e-02, 1.908e-01, -1.272e-01, -8.897e-02, 6.893e-02, 4.808e-02, -1.235e-02, 1.406e-01, 9.182e-02, 1.199e-01, -6.087e-02, -2.790e-02, 7.823e-02, -7.443e-02, -2.908e-02, 7.824e-02), r);\n\tr = MulAdd(s1_1, M4(-5.931e-02, -2.106e-01, -7.093e-03, 3.143e-01, -7.278e-03, -8.448e-02, -6.706e-02, 7.873e-02, -1.372e-01, 1.503e-02, 4.273e-03, 2.550e-01, 7.066e-02, 1.156e-02, 2.972e-02, 6.368e-02), r);\n\tr = MulAdd(s1_2, M4(-1.457e-01, -1.103e-01, -5.727e-02, 1.685e-01, 8.429e-02, -4.365e-02, 9.143e-02, 4.470e-02, 7.318e-02, -6.442e-02, 5.918e-02, 1.633e-01, -1.041e-01, -1.029e-01, 1.642e-01, 8.357e-02), r);\n\tr = MulAdd(s1_3, M4(-2.876e-02, -6.630e-02, -6.576e-02, 9.062e-02, -1.580e-01, -5.584e-02, -8.636e-02, 9.241e-02, -3.216e-02, 1.613e-01, -4.132e-02, 2.281e-02, 2.734e-02, 2.553e-02, 1.083e-01, -5.546e-02), r);\n\tr = MulAdd(s1_4, M4(9.239e-02, -2.471e-02, 5.862e-02, -5.237e-02, -5.395e-02, 1.035e-01, -1.003e-01, 2.782e-02, -1.126e-02, -2.389e-01, -3.320e-02, -7.841e-02, 5.396e-02, 2.841e-02, 9.477e-02, -2.390e-01), r);\n\tr = MulAdd(s1_5, M4(-1.362e-01, 3.032e-02, -7.620e-02, 1.458e-01, -1.179e-01, 1.034e-02, 1.727e-02, -4.245e-02, -7.083e-02, 7.070e-02, -4.095e-02, 5.322e-02, -1.408e-02, 3.720e-02, 5.996e-02, -4.981e-02), r);\n\tr = MulAdd(s1_6, M4(1.119e-01, 8.073e-02, 5.773e-02, 2.301e-02, 5.561e-02, 2.241e-03, -7.863e-02, 5.573e-02, -7.112e-02, -9.685e-02, -1.772e-01, -3.446e-02, -1.049e-01, 1.026e-02, 1.957e-02, -1.111e-01), r);\n\tr = MulAdd(s1_7, M4(1.788e-01, -2.716e-02, 1.019e-01, 2.178e-02, 1.246e-01, 1.107e-01, 1.697e-01, 1.167e-01, 3.394e-02, -1.176e-01, -2.129e-02, -3.989e-02, 2.066e-01, 8.348e-02, -3.966e-02, 1.921e-02), r);\n\tr = MulAdd(s1_8, M4(1.814e-01, 1.194e-02, -3.687e-03, -2.048e-02, -5.610e-02, -1.853e-02, 4.549e-02, 6.164e-04, -5.818e-02, 5.473e-02, -1.331e-02, -1.554e-02, 7.833e-02, 9.653e-02, -4.808e-03, -1.758e-02), r);\n\tr = MulAdd(s2_0, M4(6.169e-02, 5.514e-02, 3.773e-02, -6.746e-02, 6.614e-02, -8.601e-03, 1.393e-01, 1.328e-01, -3.773e-02, -9.326e-02, 7.894e-02, -3.562e-02, 4.718e-02, 8.964e-02, 8.342e-02, -2.218e-02), r);\n\tr = MulAdd(s2_1, M4(2.138e-02, 4.727e-05, -7.793e-02, -1.449e-02, -9.726e-02, 2.636e-01, -1.008e-01, -1.360e-01, 9.358e-02, -2.191e-01, -1.389e-01, 1.010e-01, 1.833e-01, -2.234e-02, 8.280e-02, 1.099e-01), r);\n\tr = MulAdd(s2_2, M4(-1.759e-02, 2.214e-02, -9.699e-02, -7.946e-02, 3.458e-01, 2.307e-01, 1.965e-02, -5.948e-02, -1.102e-01, 1.136e-01, 6.058e-02, -2.060e-01, -1.455e-01, 2.091e-01, -1.234e-01, -2.595e-02), r);\n\tr = MulAdd(s2_3, M4(-3.891e-02, -4.991e-02, 7.644e-02, 8.675e-03, -1.237e-01, -1.090e-01, -6.923e-02, 1.674e-01, 6.834e-02, -1.947e-03, -2.001e-01, -2.587e-01, -6.223e-02, -1.757e-02, 4.044e-02, -2.019e-01), r);\n\tr = MulAdd(s2_4, M4(-1.240e-01, -1.421e-01, -1.120e-02, 1.355e-01, -1.043e-01, 1.205e-01, -6.896e-02, 8.419e-02, 1.083e-01, -3.586e-01, -2.787e-01, 3.128e-01, 2.695e-01, 6.336e-02, 1.496e-01, 7.207e-02), r);\n\tr = MulAdd(s2_5, M4(-1.943e-02, 4.023e-02, -9.246e-02, -2.339e-02, -1.184e-01, 1.636e-01, -1.181e-01, -6.135e-02, 1.293e-01, 7.349e-02, -3.035e-02, 1.341e-03, 1.462e-01, -1.693e-01, -6.412e-02, 1.047e-01), r);\n\tr = MulAdd(s2_6, M4(1.248e-01, -4.353e-02, -6.607e-02, 3.145e-02, -1.563e-01, -1.372e-01, 1.860e-05, -4.642e-02, 1.864e-02, 7.264e-02, -9.642e-02, 1.876e-01, -4.477e-02, 1.522e-01, 1.609e-01, 1.611e-01), r);\n\tr = MulAdd(s2_7, M4(6.286e-02, 1.131e-01, 4.975e-02, -6.677e-02, -2.744e-01, -4.851e-03, 1.142e-01, -8.230e-02, 1.155e-01, 1.004e-03, 3.373e-02, 1.243e-01, -1.140e-02, 3.190e-01, 1.543e-01, -2.304e-01), r);\n\tr = MulAdd(s2_8, M4(1.952e-02, -3.838e-02, -1.306e-01, -2.731e-04, 1.470e-01, 2.674e-03, -2.177e-01, 2.223e-02, -2.050e-02, 2.408e-01, 6.113e-02, -1.239e-01, 1.999e-01, -7.711e-02, -1.954e-01, -2.232e-01), r);\n\tr = MulAdd(s3_0, M4(1.559e-01, 3.444e-01, 2.037e-01, -1.465e-01, 1.257e-03, -9.577e-02, -6.696e-02, -1.273e-02, 4.017e-02, 3.491e-02, -8.291e-04, 1.119e-01, -8.614e-02, 7.718e-02, 2.744e-02, 5.497e-02), r);\n\tr = MulAdd(s3_1, M4(-4.794e-02, -1.063e-01, -2.436e-02, 7.873e-02, 5.152e-02, 1.919e-02, 1.182e-01, 1.987e-01, -3.528e-02, -3.674e-02, -6.329e-02, 6.244e-02, 3.650e-02, -1.095e-01, -6.021e-02, 9.880e-02), r);\n\tr = MulAdd(s3_2, M4(8.782e-02, -2.972e-02, -5.703e-02, 1.306e-01, 8.701e-02, -8.616e-02, 4.235e-03, -4.952e-02, -2.192e-02, 2.296e-02, -4.155e-02, 4.513e-03, -8.387e-02, 9.915e-02, 6.844e-02, 4.860e-02), r);\n\tr = MulAdd(s3_3, M4(1.609e-01, 1.368e-01, 6.485e-02, 7.794e-02, -2.713e-03, -1.406e-02, -3.511e-03, 4.021e-02, -1.304e-01, 1.322e-02, 4.628e-02, -8.888e-02, -2.384e-02, -7.348e-03, 8.772e-02, 1.494e-02), r);\n\tr = MulAdd(s3_4, M4(-1.010e-01, -9.351e-02, -1.047e-01, 2.298e-02, 1.029e-01, 9.090e-02, 6.553e-03, -7.160e-02, -8.154e-05, 2.276e-02, 9.211e-03, 1.375e-02, 1.216e-02, -5.997e-02, -2.742e-02, 9.009e-02), r);\n\tr = MulAdd(s3_5, M4(1.007e-01, 3.867e-01, -5.350e-02, 4.043e-02, -1.333e-01, 2.413e-02, -5.320e-02, -5.714e-02, -3.149e-02, 1.844e-03, 4.310e-02, -1.117e-01, -2.069e-02, 2.987e-03, -1.693e-02, 4.311e-02), r);\n\tr = MulAdd(s3_6, M4(1.419e-01, 5.698e-02, 5.687e-03, 6.534e-02, 8.299e-05, 9.204e-02, 6.563e-02, -2.972e-02, 2.281e-01, -1.643e-02, 4.670e-02, 1.436e-01, -1.159e-01, -5.028e-02, 1.157e-01, -7.019e-02), r);\n\tr = MulAdd(s3_7, M4(-4.644e-02, -4.332e-02, -2.600e-01, 6.519e-02, -5.878e-02, 1.854e-02, 1.260e-01, -2.437e-02, 6.990e-02, 3.990e-02, 2.418e-02, 8.748e-02, 2.327e-02, 5.167e-03, -5.180e-02, -1.586e-01), r);\n\tr = MulAdd(s3_8, M4(-7.066e-03, 1.938e-01, 2.519e-02, -5.551e-03, 1.238e-01, -1.177e-01, -8.184e-02, -6.361e-02, 7.968e-02, 3.828e-02, -2.906e-02, -2.967e-02, 7.054e-02, -6.567e-02, -4.154e-02, -8.246e-02), r);\n\tr = MulAdd(s4_0, M4(-5.226e-03, -5.506e-02, 1.084e-01, 6.104e-02, -7.084e-02, -1.369e-02, 5.770e-02, 9.369e-03, 7.137e-02, 3.812e-02, -1.163e-01, -1.801e-01, -2.820e-02, -4.895e-02, -3.198e-02, -1.199e-01), r);\n\tr = MulAdd(s4_1, M4(-7.016e-03, -1.376e-01, 1.139e-01, 3.146e-02, 4.089e-02, 1.179e-01, -7.702e-02, 7.841e-02, -9.047e-03, 5.866e-02, 1.310e-02, -1.178e-01, -1.314e-03, 9.423e-02, -1.281e-01, 8.136e-02), r);\n\tr = MulAdd(s4_2, M4(-2.164e-02, -1.157e-01, 2.769e-03, -1.675e-01, 2.046e-02, -3.547e-02, -5.441e-02, 1.125e-01, 6.445e-02, 9.884e-02, 5.804e-02, -5.950e-02, -7.545e-02, 1.221e-02, -1.022e-01, 1.132e-02), r);\n\tr = MulAdd(s4_3, M4(-5.272e-02, 9.168e-02, 7.058e-02, -1.049e-01, -1.167e-01, 1.090e-01, 3.349e-02, 1.393e-02, -2.392e-02, -2.323e-02, -7.106e-02, 5.207e-02, 1.703e-01, -1.519e-02, 1.283e-02, 2.979e-02), r);\n\tr = MulAdd(s4_4, M4(1.874e-01, -1.966e-03, -5.432e-02, 5.125e-02, -2.042e-01, -2.495e-02, 5.208e-02, 1.425e-02, 7.137e-02, -1.373e-01, 5.823e-02, 1.683e-01, 1.286e-01, -1.747e-01, -9.492e-02, -4.643e-02), r);\n\tr = MulAdd(s4_5, M4(1.174e-01, 9.680e-02, -3.946e-02, -5.568e-02, 1.585e-01, -1.490e-01, 5.321e-02, -2.085e-01, -1.114e-02, 2.950e-02, -2.756e-02, -1.348e-01, -1.992e-01, -3.037e-01, -9.906e-03, 1.090e-01), r);\n\tr = MulAdd(s4_6, M4(1.406e-02, 1.203e-01, 8.815e-02, -7.641e-02, 1.344e-01, -8.767e-02, -1.154e-01, -7.974e-02, 9.987e-03, -6.403e-02, -8.446e-02, -3.506e-02, 5.380e-02, 6.236e-02, 7.203e-04, -3.519e-02), r);\n\tr = MulAdd(s4_7, M4(1.950e-01, 3.658e-02, 6.341e-03, 7.395e-03, -7.013e-03, -1.984e-01, 9.983e-02, 2.809e-02, 1.391e-01, 9.638e-03, -1.054e-01, 3.263e-02, 5.608e-02, 6.084e-02, -4.368e-02, -1.041e-01), r);\n\tr = MulAdd(s4_8, M4(-8.957e-03, 3.743e-02, -3.755e-02, -3.630e-03, -5.561e-02, -9.400e-02, 2.827e-02, 9.386e-02, -8.381e-02, -1.216e-02, 1.436e-01, 1.519e-02, -8.019e-02, -1.944e-01, -6.004e-02, -7.721e-02), r);\n\tr = MulAdd(s5_0, M4(-3.770e-02, -3.560e-02, 1.079e-01, 1.237e-02, 5.456e-03, -3.473e-02, 7.107e-02, 1.288e-01, -1.319e-01, -2.477e-02, -2.558e-02, -2.240e-01, -2.778e-02, -5.581e-02, 2.795e-02, -1.127e-01), r);\n\tr = MulAdd(s5_1, M4(4.309e-02, -7.101e-02, -1.136e-01, -4.001e-02, -5.329e-02, 2.163e-02, -1.911e-01, 1.211e-01, 3.649e-01, 1.931e-01, -1.604e-01, -1.174e-01, -1.129e-01, -7.409e-02, 8.196e-02, -1.679e-02), r);\n\tr = MulAdd(s5_2, M4(1.002e-02, 4.060e-03, 2.965e-02, 6.396e-02, -2.982e-02, -2.065e-02, -5.606e-02, 6.198e-02, -2.529e-01, -8.005e-02, -2.032e-01, 1.956e-01, 2.000e-01, 8.002e-02, 1.950e-01, -8.213e-02), r);\n\tr = MulAdd(s5_3, M4(-5.168e-02, -4.015e-02, -1.103e-01, -2.920e-01, 7.194e-02, 4.356e-02, 5.759e-02, -4.769e-04, -2.601e-01, -2.538e-02, -2.720e-02, -9.741e-02, -1.163e-02, 4.238e-02, 1.093e-02, 1.766e-01), r);\n\tr = MulAdd(s5_4, M4(9.714e-02, -2.569e-01, -2.301e-01, 2.634e-01, 5.650e-02, 2.310e-01, 1.422e-01, -1.343e-01, 1.473e-01, 1.136e-01, -2.179e-02, 1.065e-02, -3.685e-01, -1.466e-01, 2.465e-01, -1.020e-02), r);\n\tr = MulAdd(s5_5, M4(-2.277e-01, 3.379e-02, 1.500e-01, -1.561e-01, 8.026e-02, -1.333e-01, 1.360e-01, 1.892e-03, -2.089e-01, -1.216e-01, -2.138e-01, 3.848e-02, -2.357e-02, -5.525e-02, 1.345e-01, -6.481e-02), r);\n\tr = MulAdd(s5_6, M4(-4.744e-01, 1.842e-01, -1.170e-01, 6.383e-02, 4.721e-02, 8.683e-02, 1.298e-02, -1.428e-02, -1.004e-01, 7.408e-02, 7.070e-02, 5.249e-02, -8.792e-02, -8.696e-02, 2.164e-02, -1.972e-02), r);\n\tr = MulAdd(s5_7, M4(6.505e-02, 7.645e-02, 5.747e-02, -2.255e-02, 7.953e-02, 3.267e-02, -4.402e-02, 6.919e-02, 3.438e-02, 1.884e-01, -1.650e-01, 9.716e-03, -2.982e-02, -1.122e-02, 2.533e-01, -6.158e-02), r);\n\tr = MulAdd(s5_8, M4(-3.201e-02, 4.400e-02, -3.622e-02, 1.647e-02, 1.066e-01, 5.696e-02, -9.074e-02, 9.751e-02, -2.343e-01, 7.295e-02, -1.021e-01, -1.173e-02, -4.465e-02, -3.944e-02, -8.525e-02, -4.887e-02), r);\n\tr = MulAdd(s6_0, M4(9.043e-02, 7.508e-03, 2.129e-02, 1.540e-02, -7.932e-02, -1.045e-01, -1.140e-01, -1.687e-01, 1.802e-01, 7.851e-02, -7.967e-02, -7.167e-03, 6.469e-02, -8.154e-02, 4.053e-02, 5.567e-02), r);\n\tr = MulAdd(s6_1, M4(2.664e-02, 1.391e-01, 3.487e-02, -4.714e-02, -1.321e-01, 9.727e-02, -6.896e-02, -8.919e-02, -1.120e-01, -8.822e-02, 1.392e-01, -3.856e-02, 2.445e-02, 1.520e-01, 5.066e-02, -7.421e-02), r);\n\tr = MulAdd(s6_2, M4(3.721e-02, -1.419e-01, -2.924e-02, 1.156e-01, 7.611e-03, -9.886e-02, -1.088e-01, 1.078e-01, -1.667e-01, -4.557e-03, -1.189e-03, -5.344e-02, -2.037e-01, -1.039e-01, -5.445e-02, -1.639e-02), r);\n\tr = MulAdd(s6_3, M4(-8.285e-02, 7.651e-02, 6.793e-02, -1.327e-01, -7.476e-02, 2.957e-02, -1.402e-01, -1.597e-02, 1.087e-01, 4.267e-02, -4.866e-02, 7.123e-02, 1.043e-01, 7.398e-02, 6.662e-02, 2.380e-01), r);\n\tr = MulAdd(s6_4, M4(2.692e-02, -1.144e-02, -1.297e-01, 4.209e-02, -2.075e-02, -2.428e-01, 1.093e-01, -4.059e-03, 8.527e-02, -3.677e-02, -2.378e-01, 2.416e-01, 3.793e-02, 5.192e-02, -1.743e-01, 1.241e-01), r);\n\tr = MulAdd(s6_5, M4(-6.434e-02, 4.554e-03, 5.535e-02, 1.197e-01, 1.461e-01, -2.247e-01, 2.250e-02, 1.630e-01, 1.435e-01, -2.037e-01, -1.038e-01, 3.018e-01, -1.497e-01, 2.416e-02, -1.329e-01, -1.305e-01), r);\n\tr = MulAdd(s6_6, M4(1.234e-02, 2.975e-02, -1.131e-01, -9.281e-02, -1.997e-01, 8.254e-02, -4.436e-02, 2.195e-01, 2.740e-02, -1.035e-02, 7.146e-02, 4.567e-02, 9.093e-03, 1.457e-01, 1.219e-01, 6.470e-02), r);\n\tr = MulAdd(s6_7, M4(-1.102e-01, 1.520e-01, 2.849e-02, 4.548e-02, -8.167e-02, -2.549e-02, 1.165e-01, 1.373e-02, -5.793e-02, -1.113e-01, 1.568e-01, 9.372e-02, -1.171e-01, 1.456e-01, -9.427e-02, -9.116e-02), r);\n\tr = MulAdd(s6_8, M4(6.940e-03, -1.677e-01, -2.775e-01, -3.968e-02, -8.314e-02, 4.127e-02, -1.911e-02, -6.754e-02, -1.979e-01, -1.001e-02, 1.990e-01, 5.028e-03, 1.673e-02, 4.765e-02, -9.003e-02, 4.037e-02), r);\n\tr = MulAdd(s7_0, M4(-1.145e-01, 8.301e-02, 6.208e-02, 2.215e-01, 9.340e-02, 5.217e-02, -2.014e-02, -1.154e-01, 1.706e-01, -7.559e-02, -3.903e-02, -7.485e-02, 3.039e-02, -1.909e-02, 3.608e-02, -6.160e-02), r);\n\tr = MulAdd(s7_1, M4(1.332e-01, 1.916e-01, -3.478e-02, 9.917e-02, -4.658e-02, -7.133e-03, -2.925e-02, -1.005e-01, 8.696e-02, -1.323e-01, 6.163e-02, -1.092e-01, 5.049e-02, -9.551e-02, 2.854e-02, -2.305e-02), r);\n\tr = MulAdd(s7_2, M4(1.011e-01, 1.017e-01, -3.755e-02, 1.079e-01, 6.972e-03, 1.535e-02, -2.212e-02, 6.117e-02, -7.020e-02, -7.368e-03, -1.125e-01, -3.364e-03, 6.300e-02, 6.487e-02, -1.301e-02, -2.883e-02), r);\n\tr = MulAdd(s7_3, M4(-1.024e-01, -5.268e-03, 4.721e-03, -1.492e-01, 3.963e-03, 1.960e-02, -1.616e-01, 5.027e-02, -1.413e-01, -2.592e-02, 4.603e-02, -9.958e-02, 1.733e-02, -3.088e-03, -3.237e-02, 3.956e-02), r);\n\tr = MulAdd(s7_4, M4(2.329e-02, -1.743e-01, 2.547e-02, -4.663e-02, -4.411e-02, -1.693e-01, 1.284e-01, -1.596e-02, 9.503e-03, -6.803e-02, -7.773e-02, 7.189e-02, 2.373e-01, 1.594e-03, 9.512e-03, 6.362e-02), r);\n\tr = MulAdd(s7_5, M4(7.467e-02, -9.632e-03, 9.902e-03, 2.912e-03, 1.204e-01, 4.616e-02, 4.934e-04, 1.086e-01, -5.761e-02, -5.369e-02, 1.120e-01, 7.251e-02, 1.033e-01, 1.897e-01, -2.853e-02, -2.763e-01), r);\n\tr = MulAdd(s7_6, M4(-6.446e-02, -1.460e-02, 2.759e-02, -5.637e-03, -1.906e-01, 1.099e-03, 5.191e-02, 7.905e-02, 3.978e-02, 1.765e-02, -2.394e-02, 3.328e-02, 6.826e-03, -1.233e-01, -1.859e-02, 3.114e-02), r);\n\tr = MulAdd(s7_7, M4(-4.130e-02, 1.134e-01, 7.295e-02, 6.430e-02, 1.268e-01, 1.275e-01, 1.018e-01, 5.018e-02, 6.976e-04, -6.946e-02, -7.873e-02, -3.524e-02, -1.080e-02, 2.427e-02, 1.715e-01, 3.197e-02), r);\n\tr = MulAdd(s7_8, M4(-6.846e-02, -2.906e-02, -1.030e-01, -8.272e-02, -1.521e-01, 8.494e-02, 8.006e-02, -1.111e-02, -3.839e-02, 5.480e-02, 1.092e-01, 7.521e-02, 2.335e-01, -1.159e-01, 1.500e-02, 4.809e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.986e-02, 1.071e-02, 2.911e-02, -3.068e-02 };\n\tr = MulAdd(s0_0, M4(-8.859e-02, 6.322e-02, 2.170e-02, -5.152e-02, -9.958e-02, -5.578e-02, -3.615e-02, -3.355e-02, 8.025e-02, -4.163e-01, 1.121e-01, -7.176e-02, 8.557e-02, -6.191e-02, -8.471e-03, 1.507e-01), r);\n\tr = MulAdd(s0_1, M4(-1.701e-02, 6.147e-02, -2.650e-02, -1.173e-01, 2.083e-01, 2.300e-01, -2.547e-01, 9.541e-02, 2.725e-01, -1.345e-01, -7.233e-02, 5.820e-02, 2.792e-02, 1.222e-02, -6.244e-02, 3.862e-03), r);\n\tr = MulAdd(s0_2, M4(2.715e-02, 3.736e-02, 2.085e-02, -7.133e-02, 1.404e-01, -6.124e-02, -9.407e-02, 9.857e-02, -9.245e-02, -3.528e-01, 2.955e-02, 1.487e-01, 5.531e-02, 6.103e-04, 1.288e-02, 7.338e-02), r);\n\tr = MulAdd(s0_3, M4(1.545e-02, -9.382e-02, -1.221e-01, 5.337e-02, 1.660e-01, 1.326e-01, 6.217e-02, -1.993e-01, -8.731e-04, -1.082e-01, -3.228e-01, 3.264e-01, -1.631e-01, 1.135e-01, -6.737e-02, -5.544e-02), r);\n\tr = MulAdd(s0_4, M4(-3.348e-02, -3.130e-02, -3.545e-02, -5.740e-02, -1.497e-02, -2.188e-01, 1.266e-01, 1.900e-01, -1.525e-01, -3.757e-01, -9.728e-02, 1.389e-01, -2.877e-02, -1.662e-01, -1.350e-01, 1.802e-01), r);\n\tr = MulAdd(s0_5, M4(-1.022e-01, -5.672e-03, -6.475e-02, -9.060e-03, -1.336e-01, -2.171e-02, 2.962e-02, -2.329e-01, 6.908e-02, -4.969e-02, -2.102e-01, 8.120e-03, 1.004e-01, 2.172e-01, 1.249e-01, 5.419e-02), r);\n\tr = MulAdd(s0_6, M4(1.206e-01, 6.503e-02, -1.735e-02, 4.117e-02, -3.794e-02, 5.942e-02, 7.644e-02, -2.022e-01, 2.359e-01, 1.387e-01, -2.564e-01, 2.318e-01, -5.847e-03, -3.742e-02, -1.891e-01, 1.058e-01), r);\n\tr = MulAdd(s0_7, M4(8.511e-02, 9.170e-02, -1.099e-01, 1.121e-01, -5.193e-02, 8.655e-02, 1.825e-01, 1.038e-01, 3.536e-02, 2.280e-01, 9.794e-02, 1.558e-01, -2.327e-02, -7.911e-02, 5.903e-02, -1.061e-01), r);\n\tr = MulAdd(s0_8, M4(-1.947e-02, -3.460e-02, 1.847e-01, -5.716e-02, 8.408e-02, 2.013e-01, -1.249e-01, -8.687e-02, -4.326e-01, 2.425e-01, -2.433e-01, -1.076e-01, 1.519e-01, -1.366e-02, 6.007e-02, -6.044e-02), r);\n\tr = MulAdd(s1_0, M4(-6.492e-02, -2.177e-02, -7.928e-03, 5.827e-02, -1.468e-02, -8.457e-02, -9.106e-02, -6.499e-02, 7.837e-02, 3.092e-03, 2.215e-02, -1.439e-01, 1.451e-01, -1.505e-01, 1.376e-02, -4.341e-02), r);\n\tr = MulAdd(s1_1, M4(-1.178e-01, 1.866e-01, 9.888e-02, -9.040e-02, -1.063e-03, 1.315e-01, -4.355e-02, 1.449e-02, 3.112e-02, -4.436e-02, -2.143e-02, -3.597e-02, 1.361e-02, -9.821e-02, -1.438e-01, -1.918e-02), r);\n\tr = MulAdd(s1_2, M4(1.723e-01, 9.304e-02, -5.218e-02, 1.128e-01, -2.047e-02, -3.860e-02, -1.294e-01, 5.198e-02, -2.544e-02, -5.171e-02, 5.576e-02, 2.431e-02, 2.018e-03, 1.655e-01, 1.084e-01, -7.961e-02), r);\n\tr = MulAdd(s1_3, M4(1.431e-01, 1.264e-01, 2.663e-01, -7.861e-02, -2.184e-01, 2.635e-02, -8.562e-02, -8.998e-02, -5.756e-02, -1.606e-01, -1.756e-02, -5.559e-03, 9.406e-03, 1.182e-01, -3.550e-01, 4.964e-02), r);\n\tr = MulAdd(s1_4, M4(1.833e-01, 4.676e-03, 3.887e-02, 1.008e-01, 3.551e-02, 7.158e-02, 9.204e-02, -1.118e-01, -1.294e-01, -6.548e-02, -8.796e-02, -2.444e-02, -2.510e-02, -2.399e-01, -2.330e-01, 1.147e-01), r);\n\tr = MulAdd(s1_5, M4(6.889e-02, -1.060e-03, -1.414e-01, 5.237e-02, 2.064e-02, -8.606e-03, 1.036e-01, 2.518e-02, -1.206e-02, 1.614e-02, -8.587e-02, -7.272e-02, 5.863e-02, -9.660e-03, -6.705e-02, -1.294e-01), r);\n\tr = MulAdd(s1_6, M4(7.851e-02, -8.792e-02, 1.285e-01, -1.097e-01, 6.968e-02, 3.942e-02, 8.202e-02, 1.824e-02, 6.559e-02, 2.335e-02, 1.814e-02, 6.063e-02, 6.711e-03, 1.874e-04, -1.354e-01, 1.427e-01), r);\n\tr = MulAdd(s1_7, M4(-7.320e-02, 2.411e-01, 4.008e-02, -1.093e-01, 7.410e-03, -8.033e-04, 5.956e-02, -1.279e-01, 8.079e-02, -6.280e-03, -6.561e-02, 1.949e-02, 1.092e-02, 2.485e-02, 5.006e-03, 8.929e-03), r);\n\tr = MulAdd(s1_8, M4(4.080e-02, -4.657e-02, -1.572e-01, -1.018e-01, 1.786e-02, 3.402e-02, -1.280e-01, 4.746e-02, 1.041e-01, -6.042e-02, 6.023e-02, -2.181e-02, 1.002e-01, 1.014e-01, 5.495e-02, -8.713e-02), r);\n\tr = MulAdd(s2_0, M4(1.541e-02, -1.639e-02, 2.137e-02, -8.870e-02, -2.421e-01, 1.216e-01, 8.481e-03, -1.146e-01, -8.107e-03, -1.252e-01, 1.507e-02, -1.246e-02, 1.972e-01, -2.484e-01, 1.043e-02, 9.379e-02), r);\n\tr = MulAdd(s2_1, M4(7.847e-02, 2.798e-02, 4.175e-02, 4.999e-02, 3.078e-02, 6.905e-02, -1.325e-01, -7.661e-02, -2.406e-01, 4.476e-02, 1.869e-02, -7.977e-02, 4.665e-02, -1.554e-01, -5.259e-02, -2.868e-02), r);\n\tr = MulAdd(s2_2, M4(-8.034e-03, -5.185e-02, -3.441e-02, 6.072e-02, -1.140e-01, 1.360e-01, -5.936e-02, -2.627e-01, 5.693e-02, -1.242e-01, -1.696e-01, -9.322e-02, -1.642e-01, 3.444e-02, -8.812e-02, -2.324e-01), r);\n\tr = MulAdd(s2_3, M4(-5.840e-02, 4.646e-02, -1.123e-01, 1.928e-02, -5.682e-02, 1.747e-01, -1.014e-02, -3.330e-03, -8.661e-02, 1.380e-01, 1.094e-01, 2.438e-01, 1.066e-01, 1.375e-01, -6.315e-02, 1.153e-02), r);\n\tr = MulAdd(s2_4, M4(2.190e-01, -4.420e-02, 4.606e-02, -4.466e-02, 2.064e-01, 4.502e-02, -9.403e-03, 3.311e-02, -8.319e-02, 5.644e-01, -6.043e-02, 5.784e-02, -1.040e-01, 3.443e-02, -1.610e-02, -3.490e-01), r);\n\tr = MulAdd(s2_5, M4(-1.043e-01, -2.458e-01, 5.993e-02, 1.761e-02, 8.658e-02, 1.438e-02, 2.610e-02, 9.675e-02, 4.919e-02, 2.783e-01, -3.483e-02, -6.773e-02, 2.021e-01, -5.194e-02, 2.805e-01, -3.834e-02), r);\n\tr = MulAdd(s2_6, M4(-2.257e-03, -8.335e-03, -8.261e-02, 3.041e-02, -7.001e-02, 1.016e-02, -2.078e-01, -1.798e-01, -3.439e-02, 2.334e-01, 2.715e-01, 3.900e-02, 8.569e-02, -1.696e-01, -3.142e-01, 3.344e-02), r);\n\tr = MulAdd(s2_7, M4(7.281e-02, 6.357e-02, 1.869e-03, 4.939e-02, -1.440e-01, 4.230e-02, -8.573e-02, -1.929e-01, 8.670e-02, -1.610e-01, 2.438e-01, 6.542e-02, 1.191e-01, -1.737e-01, 5.330e-02, -1.193e-01), r);\n\tr = MulAdd(s2_8, M4(-8.114e-02, 2.759e-02, -6.027e-02, 8.285e-02, 1.792e-01, -8.401e-02, 2.750e-02, 7.538e-02, -4.844e-02, -4.237e-01, 1.403e-01, -6.548e-02, 1.480e-01, -1.369e-01, -1.154e-02, -1.547e-01), r);\n\tr = MulAdd(s3_0, M4(-5.719e-02, 7.109e-02, -1.870e-01, 9.910e-02, -8.484e-03, 4.225e-02, 1.670e-01, -2.912e-02, 4.867e-02, -1.222e-01, 9.972e-02, -8.255e-02, 2.865e-02, -7.476e-02, 8.196e-02, -6.590e-02), r);\n\tr = MulAdd(s3_1, M4(2.877e-02, 1.382e-01, 2.887e-02, -1.182e-01, 1.169e-01, -7.158e-02, -5.751e-02, -4.480e-02, 4.399e-02, -1.564e-01, -5.860e-02, -1.704e-02, 5.989e-02, -6.261e-02, -6.685e-02, 6.785e-02), r);\n\tr = MulAdd(s3_2, M4(2.990e-01, -1.112e-01, -5.059e-02, 3.883e-02, -1.041e-01, 1.087e-01, 9.495e-02, 7.279e-02, -1.640e-02, -1.135e-01, -9.370e-02, -1.178e-01, 6.239e-02, 1.673e-03, -1.302e-01, -9.523e-02), r);\n\tr = MulAdd(s3_3, M4(2.498e-01, 1.568e-01, 3.136e-01, -8.231e-02, 1.195e-02, 3.503e-02, -1.552e-01, -1.291e-02, -6.553e-02, 1.039e-01, 5.600e-02, 7.192e-02, -6.076e-02, 1.011e-01, 1.472e-01, -7.687e-02), r);\n\tr = MulAdd(s3_4, M4(-1.014e-01, 6.270e-03, -5.076e-02, -3.396e-01, -7.819e-02, -1.129e-01, -3.489e-02, -1.763e-02, 3.223e-02, 1.190e-01, -4.928e-02, -1.744e-01, 4.950e-02, 1.974e-02, 8.423e-02, 6.390e-02), r);\n\tr = MulAdd(s3_5, M4(1.391e-01, -9.050e-02, -1.123e-01, -9.988e-02, -9.684e-02, -1.058e-01, 5.984e-02, 8.850e-03, 1.291e-01, -6.571e-02, -9.918e-03, -3.292e-02, -9.868e-02, -2.736e-02, 2.082e-02, -7.922e-02), r);\n\tr = MulAdd(s3_6, M4(-1.762e-02, -3.843e-02, 8.312e-02, 2.341e-02, 8.817e-02, 3.820e-03, -5.261e-02, 3.950e-02, -3.782e-04, 5.334e-02, 8.513e-02, 1.353e-02, 1.302e-02, -7.066e-02, 5.351e-03, 7.396e-02), r);\n\tr = MulAdd(s3_7, M4(2.824e-02, 1.439e-01, 5.632e-02, 1.106e-01, 5.794e-02, -2.101e-02, 1.550e-01, -1.765e-02, -5.208e-02, -4.870e-02, -1.031e-01, -2.989e-02, 3.582e-02, 1.657e-02, -6.794e-02, 8.592e-02), r);\n\tr = MulAdd(s3_8, M4(-1.181e-01, 1.001e-01, -2.164e-01, -3.062e-02, -9.708e-03, -1.127e-01, -5.188e-02, 1.136e-01, -4.283e-02, -4.564e-02, -1.081e-01, -8.180e-02, 1.733e-01, 7.093e-03, 4.043e-02, 2.436e-02), r);\n\tr = MulAdd(s4_0, M4(1.127e-01, 4.974e-02, -1.839e-02, 6.811e-02, -4.333e-02, -1.329e-02, 2.155e-02, -2.119e-02, -2.256e-02, -2.323e-02, -1.048e-01, -1.424e-01, -1.072e-02, -1.559e-02, -1.120e-01, -7.210e-02), r);\n\tr = MulAdd(s4_1, M4(-4.518e-02, 1.753e-01, 1.002e-02, 1.710e-01, -2.514e-02, 1.031e-01, -1.332e-01, 1.399e-01, 9.279e-03, -2.348e-01, 1.424e-03, 9.753e-02, -1.115e-01, 2.149e-02, 5.900e-02, 6.065e-02), r);\n\tr = MulAdd(s4_2, M4(-7.765e-02, -5.987e-02, -4.236e-02, 1.478e-02, -1.527e-01, 1.483e-02, 5.999e-02, -1.747e-01, 2.443e-02, -3.329e-02, 2.952e-02, -1.813e-02, 1.967e-01, 6.332e-02, -5.620e-02, -3.235e-02), r);\n\tr = MulAdd(s4_3, M4(5.791e-02, 4.891e-04, 9.614e-02, -6.785e-02, -2.669e-02, 5.869e-04, 1.837e-02, -1.353e-01, -3.811e-02, 1.064e-01, 1.230e-01, -4.896e-02, -8.791e-03, -6.746e-02, -1.566e-01, 6.373e-02), r);\n\tr = MulAdd(s4_4, M4(-7.715e-02, -3.067e-02, 1.021e-02, -7.027e-02, -9.642e-02, -1.257e-01, 1.760e-01, 8.355e-02, 8.765e-02, -2.392e-02, 1.708e-02, 4.817e-02, 2.521e-01, -1.255e-02, -2.305e-03, 1.793e-01), r);\n\tr = MulAdd(s4_5, M4(-1.933e-02, 2.397e-03, 3.774e-02, -6.654e-02, 1.599e-01, -1.372e-02, 7.945e-02, 3.182e-03, -1.790e-01, -1.861e-02, 2.315e-02, 6.369e-02, 3.996e-01, 2.077e-01, 4.052e-02, 7.993e-02), r);\n\tr = MulAdd(s4_6, M4(5.925e-02, 5.322e-02, -6.143e-02, -2.917e-02, -4.093e-02, 2.257e-02, -2.946e-03, -1.271e-02, -9.013e-02, 8.076e-02, 2.692e-02, -1.875e-02, -1.806e-02, -2.695e-02, -2.003e-01, -7.395e-02), r);\n\tr = MulAdd(s4_7, M4(6.590e-02, -1.440e-01, 7.175e-02, 5.587e-02, 3.464e-02, -1.546e-02, -3.360e-01, -6.753e-02, 2.334e-02, 3.456e-02, 1.933e-01, -7.728e-02, 8.228e-02, -4.761e-02, -3.199e-01, 8.885e-02), r);\n\tr = MulAdd(s4_8, M4(-6.131e-02, 1.422e-01, -9.556e-02, -4.104e-04, 2.658e-01, -2.449e-01, 9.356e-02, -5.919e-02, 1.237e-01, -1.111e-01, 1.264e-01, 5.252e-03, 2.174e-01, -8.301e-02, -7.269e-02, -2.009e-02), r);\n\tr = MulAdd(s5_0, M4(1.831e-01, 7.275e-02, -1.597e-01, -1.629e-02, 1.007e-01, -1.088e-01, 2.198e-01, 3.281e-03, 1.399e-02, -1.966e-02, -1.126e-01, -2.027e-01, -4.323e-02, 7.016e-02, -5.852e-02, 6.758e-03), r);\n\tr = MulAdd(s5_1, M4(1.122e-02, -1.328e-01, 4.639e-02, -2.091e-01, 8.031e-02, 1.596e-01, -4.684e-02, 9.917e-02, -2.690e-01, -1.123e-02, 1.155e-01, -3.281e-02, -2.568e-02, -8.358e-03, -7.061e-03, -3.356e-02), r);\n\tr = MulAdd(s5_2, M4(-5.978e-02, -8.479e-02, -2.281e-03, -1.070e-01, -4.493e-02, -2.604e-03, -4.411e-02, -1.266e-01, 2.704e-01, 2.154e-01, -8.255e-02, -4.801e-02, -1.554e-02, -2.474e-02, 5.383e-02, -9.288e-02), r);\n\tr = MulAdd(s5_3, M4(-1.631e-01, 6.184e-02, -1.479e-01, 1.227e-01, 2.307e-02, -1.954e-02, 1.013e-01, 3.237e-03, 1.406e-01, -9.271e-02, -7.872e-02, -2.719e-03, -1.360e-01, -2.956e-02, 1.636e-01, -7.006e-02), r);\n\tr = MulAdd(s5_4, M4(-1.343e-01, 2.153e-01, -2.239e-01, -4.053e-01, 6.613e-02, -1.090e-02, 8.518e-02, 2.240e-01, -2.118e-01, 3.041e-02, -1.363e-01, 4.843e-03, 8.550e-02, 3.119e-02, 2.152e-01, -1.063e-01), r);\n\tr = MulAdd(s5_5, M4(-1.837e-02, -1.025e-01, 7.395e-02, -1.662e-01, 1.619e-01, -8.360e-02, 7.945e-02, 1.230e-01, -4.636e-02, 1.337e-01, 1.534e-01, 1.928e-01, -1.803e-02, 9.599e-03, 6.785e-02, -4.536e-02), r);\n\tr = MulAdd(s5_6, M4(9.095e-02, 3.857e-01, 1.256e-01, 3.445e-01, 5.654e-02, 1.214e-01, 2.543e-02, 9.302e-02, 1.886e-02, 1.136e-02, -1.681e-01, -7.571e-02, -1.642e-01, 7.446e-02, 1.367e-01, -3.871e-02), r);\n\tr = MulAdd(s5_7, M4(2.691e-02, -2.795e-01, -5.362e-02, 1.358e-01, -1.050e-02, 2.046e-01, 1.565e-01, 1.966e-02, 2.583e-02, 2.795e-01, -1.754e-01, -5.247e-02, -1.777e-01, -3.521e-02, 1.460e-01, -4.981e-02), r);\n\tr = MulAdd(s5_8, M4(1.238e-01, 3.012e-02, -5.700e-02, 1.567e-01, -6.813e-02, 5.409e-02, 1.131e-01, -1.371e-01, 1.154e-01, 1.418e-01, -2.079e-01, -6.996e-02, 1.199e-01, -5.648e-02, 1.825e-01, 1.458e-02), r);\n\tr = MulAdd(s6_0, M4(1.084e-01, 3.154e-02, -5.662e-02, -4.178e-02, -3.714e-02, -1.673e-02, -5.654e-03, 3.828e-02, 3.957e-02, 1.144e-01, -1.146e-01, -2.938e-02, 9.624e-02, -3.715e-02, 1.081e-02, 5.599e-02), r);\n\tr = MulAdd(s6_1, M4(9.831e-02, 1.365e-01, 2.181e-01, 1.342e-01, -7.069e-02, -2.787e-02, -1.186e-02, 1.142e-01, 8.013e-02, 1.136e-01, 9.548e-02, -2.485e-02, -6.512e-02, 2.538e-02, -2.026e-01, -4.354e-03), r);\n\tr = MulAdd(s6_2, M4(-4.875e-02, 1.382e-01, 1.491e-01, -3.889e-02, -9.066e-02, -9.944e-02, 4.987e-02, 1.776e-01, -1.305e-03, -6.886e-02, 7.841e-02, 4.010e-02, -4.577e-02, 8.094e-04, 1.313e-01, 2.731e-02), r);\n\tr = MulAdd(s6_3, M4(-1.122e-01, 1.067e-01, -3.704e-02, 9.418e-02, -5.281e-02, -2.233e-02, -1.779e-02, 5.766e-02, 1.673e-01, 9.455e-02, -2.049e-01, -2.730e-01, 4.742e-02, -1.450e-01, 5.864e-02, -6.473e-02), r);\n\tr = MulAdd(s6_4, M4(9.616e-03, 1.394e-01, -9.777e-02, 7.508e-02, 4.562e-02, 7.005e-02, -2.097e-02, 1.196e-01, -5.153e-02, -1.973e-01, 2.292e-03, -1.021e-01, 2.530e-02, -9.281e-03, -1.504e-02, -1.252e-02), r);\n\tr = MulAdd(s6_5, M4(-1.160e-01, 7.719e-02, 3.648e-02, 1.606e-01, -3.811e-02, -6.909e-02, 1.368e-01, -7.477e-03, -1.987e-03, -1.014e-01, -4.389e-02, -2.695e-02, -9.125e-02, -9.361e-02, 2.056e-01, -8.178e-02), r);\n\tr = MulAdd(s6_6, M4(4.554e-02, 9.046e-02, 1.427e-01, -4.304e-02, -5.428e-03, 3.404e-01, 7.173e-02, -1.005e-02, -2.768e-03, -3.836e-03, -2.008e-01, -1.955e-01, -9.907e-03, -2.243e-03, 1.743e-02, -3.008e-03), r);\n\tr = MulAdd(s6_7, M4(7.102e-02, -2.657e-02, 2.590e-01, 1.251e-01, 1.525e-01, 2.843e-02, -1.870e-01, 1.200e-01, -1.873e-01, 9.268e-02, 6.729e-02, -1.300e-01, 4.985e-02, 1.899e-01, -2.683e-02, 1.719e-02), r);\n\tr = MulAdd(s6_8, M4(-1.102e-01, -7.919e-02, 4.716e-02, 8.983e-02, -1.152e-01, -1.537e-02, 9.967e-02, 1.016e-01, -5.071e-03, 1.274e-01, -8.979e-02, -4.063e-02, -1.750e-02, 1.179e-01, 1.003e-01, 1.702e-01), r);\n\tr = MulAdd(s7_0, M4(5.322e-02, 4.872e-02, -1.469e-01, -6.719e-02, -1.084e-01, 7.051e-03, 6.497e-02, -5.518e-02, 4.297e-02, 1.155e-01, 2.677e-02, -2.306e-02, -2.999e-03, 5.815e-02, -1.004e-03, 1.849e-04), r);\n\tr = MulAdd(s7_1, M4(-2.266e-02, 7.573e-02, -9.788e-02, -7.704e-02, 4.220e-02, -4.042e-03, -4.925e-02, -8.605e-04, -1.845e-02, 1.041e-01, 3.969e-02, -3.472e-02, -3.225e-02, 3.116e-02, 1.546e-01, -4.323e-02), r);\n\tr = MulAdd(s7_2, M4(1.660e-02, -7.495e-03, 2.067e-02, 3.520e-02, -3.139e-02, -9.697e-02, -5.558e-02, 1.428e-01, 1.365e-02, -8.805e-02, 1.264e-01, 7.365e-02, 1.769e-01, -6.739e-02, 4.272e-02, 5.651e-02), r);\n\tr = MulAdd(s7_3, M4(-1.428e-02, -8.794e-03, -1.057e-01, -8.956e-02, -5.146e-02, -3.932e-02, 2.349e-01, -9.492e-03, 3.855e-02, -6.862e-02, -1.941e-02, -9.356e-02, 3.056e-02, -1.250e-01, -1.463e-03, -1.228e-02), r);\n\tr = MulAdd(s7_4, M4(6.866e-02, -5.040e-02, -1.617e-01, -3.817e-02, 6.959e-02, -1.202e-03, 1.496e-01, 9.141e-03, -1.083e-02, -6.471e-02, -6.832e-03, -1.079e-01, -2.617e-02, 1.955e-02, -6.724e-03, -9.354e-02), r);\n\tr = MulAdd(s7_5, M4(-2.314e-03, 4.890e-03, 5.785e-02, 1.236e-01, 5.738e-03, 7.076e-02, -1.323e-01, -6.343e-02, 6.766e-02, -2.212e-02, -1.208e-01, -3.177e-02, 1.398e-02, -1.363e-02, 7.405e-03, 6.040e-02), r);\n\tr = MulAdd(s7_6, M4(8.466e-03, 1.666e-02, 2.547e-02, 1.559e-02, 3.841e-03, -5.136e-02, -1.325e-01, -1.469e-01, 3.979e-02, 1.388e-02, -7.887e-02, -5.276e-02, 1.130e-02, 3.160e-03, 1.594e-01, -2.606e-02), r);\n\tr = MulAdd(s7_7, M4(-9.227e-02, -1.744e-01, -2.784e-03, -9.271e-02, 1.806e-01, -1.583e-01, -7.984e-02, -5.001e-02, -2.769e-02, -5.131e-02, -2.440e-02, -9.161e-02, -1.992e-01, -1.213e-01, 5.715e-02, 4.442e-02), r);\n\tr = MulAdd(s7_8, M4(-2.856e-02, 1.083e-01, -8.283e-02, -1.027e-01, -9.016e-02, -1.557e-01, -2.356e-02, -1.704e-02, -3.342e-02, 1.072e-01, 5.325e-02, -1.008e-01, 1.323e-01, -1.333e-01, -1.458e-02, -6.686e-02), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 6\n//!DESC conv5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 8.813e-03, -2.534e-02, -1.974e-02, 3.490e-02 };\n\tr = MulAdd(s0_0, M4(5.352e-02, -6.003e-02, -2.211e-02, 4.433e-02, 4.953e-02, -9.998e-03, 5.663e-02, 3.074e-02, -1.461e-01, -7.925e-02, 1.596e-01, 1.770e-02, 3.897e-02, -4.709e-02, 7.008e-02, 2.094e-01), r);\n\tr = MulAdd(s0_1, M4(1.156e-01, 6.543e-03, 1.958e-01, 5.386e-02, 3.292e-02, -5.440e-02, -6.076e-02, -3.825e-02, 6.736e-03, 1.117e-01, 4.416e-02, -1.791e-01, -4.239e-02, -2.295e-02, 4.666e-02, -1.696e-02), r);\n\tr = MulAdd(s0_2, M4(-1.186e-01, -4.513e-02, -5.032e-02, 1.159e-01, 6.085e-02, -9.254e-02, -2.380e-02, -1.167e-01, -1.666e-01, 1.264e-01, -5.614e-02, -1.464e-01, -4.733e-02, -4.771e-02, 3.514e-03, -6.613e-02), r);\n\tr = MulAdd(s0_3, M4(2.116e-02, 1.091e-01, -3.674e-02, -5.242e-02, 6.910e-02, -8.886e-02, 8.346e-02, 5.647e-02, -1.209e-01, -3.142e-01, -7.856e-04, 1.316e-01, 7.465e-02, 6.473e-02, 2.104e-02, 1.197e-01), r);\n\tr = MulAdd(s0_4, M4(1.050e-01, 4.251e-02, -2.173e-01, -1.448e-01, -5.025e-02, 2.500e-01, 4.104e-02, 2.790e-02, -1.075e-01, 7.254e-02, 2.046e-01, 1.821e-02, 2.764e-02, -1.820e-01, 2.087e-01, 3.294e-02), r);\n\tr = MulAdd(s0_5, M4(-3.813e-03, -3.270e-02, -5.619e-02, -6.237e-02, -8.666e-02, -5.051e-02, -4.036e-02, 4.378e-02, -9.974e-02, 1.327e-01, -1.024e-01, 1.066e-01, 3.751e-02, 1.488e-01, -7.101e-02, -4.326e-02), r);\n\tr = MulAdd(s0_6, M4(-3.769e-02, 1.476e-01, 5.328e-03, 8.061e-02, -1.262e-01, 2.233e-02, -2.814e-02, 5.004e-02, -1.220e-03, 1.606e-01, 2.252e-02, 2.342e-01, 1.199e-01, 1.138e-01, -6.507e-02, 2.135e-01), r);\n\tr = MulAdd(s0_7, M4(-4.111e-02, -3.667e-02, -4.015e-02, 7.155e-02, 9.064e-02, -1.618e-01, 1.331e-01, 6.908e-03, 1.260e-01, -7.548e-02, -1.234e-01, -3.638e-02, -1.596e-02, 1.630e-01, -3.623e-02, 4.260e-02), r);\n\tr = MulAdd(s0_8, M4(-1.971e-02, 3.143e-02, -1.254e-01, -8.149e-02, -3.711e-02, -2.610e-02, -9.066e-02, -7.625e-02, 4.546e-02, -3.873e-02, 7.123e-02, -1.698e-01, 5.370e-02, 1.463e-01, -8.262e-02, 5.914e-02), r);\n\tr = MulAdd(s1_0, M4(-4.456e-02, 9.059e-02, -5.945e-03, 8.410e-03, -5.316e-02, 1.826e-01, 3.103e-02, -1.228e-01, 4.338e-02, 7.191e-03, -6.517e-02, 4.575e-02, -5.153e-02, 2.403e-02, -6.266e-02, -2.030e-02), r);\n\tr = MulAdd(s1_1, M4(-2.190e-03, 4.591e-03, 8.481e-03, 1.023e-02, -2.173e-02, -2.044e-01, -3.023e-01, -4.659e-02, -1.410e-02, -4.269e-02, 2.231e-03, 9.745e-02, 8.884e-02, -9.949e-02, 9.654e-02, 1.859e-02), r);\n\tr = MulAdd(s1_2, M4(-1.202e-01, -8.493e-02, -1.220e-01, -5.496e-02, 1.908e-02, 1.421e-01, -5.350e-02, 8.420e-02, -1.172e-01, 1.707e-01, 3.295e-02, 3.927e-02, -5.777e-04, -1.265e-01, -2.614e-02, -7.910e-02), r);\n\tr = MulAdd(s1_3, M4(3.880e-02, -6.074e-02, -1.442e-03, -1.654e-01, 9.664e-02, 3.303e-02, 3.226e-02, -7.141e-02, -1.076e-01, -1.150e-01, -2.339e-02, 1.651e-01, -3.130e-02, -1.802e-02, 4.318e-03, 3.434e-02), r);\n\tr = MulAdd(s1_4, M4(-5.016e-03, -5.464e-02, -1.663e-02, 8.145e-02, 4.547e-02, -1.759e-01, -9.492e-02, -1.771e-01, -9.245e-03, 5.359e-02, 7.425e-02, 1.827e-03, -4.575e-02, 1.871e-01, 1.058e-01, -1.076e-01), r);\n\tr = MulAdd(s1_5, M4(-1.027e-02, -1.968e-02, 1.940e-02, -5.706e-03, 7.775e-02, 2.402e-02, 1.660e-01, 2.068e-01, 7.661e-02, -5.935e-02, -1.205e-01, 1.600e-02, -1.972e-02, 1.954e-02, -7.720e-02, 4.828e-02), r);\n\tr = MulAdd(s1_6, M4(-3.072e-02, -1.125e-01, 1.832e-02, 6.532e-02, -7.836e-02, -9.945e-03, 4.052e-04, -9.759e-02, 2.556e-02, 3.925e-02, -1.759e-02, 1.740e-04, 7.344e-02, 2.705e-02, -5.123e-03, 3.745e-02), r);\n\tr = MulAdd(s1_7, M4(-1.653e-01, 2.419e-01, 1.005e-02, 1.101e-01, 2.671e-02, -1.024e-01, 5.774e-02, 4.496e-02, 1.642e-01, -1.284e-01, 1.539e-02, -1.165e-01, -9.144e-02, -3.061e-02, 8.213e-02, 3.711e-02), r);\n\tr = MulAdd(s1_8, M4(-7.638e-02, -1.175e-01, -1.755e-01, -5.906e-02, -8.853e-02, 2.312e-01, -4.578e-02, 1.944e-01, -1.024e-02, 4.099e-02, -1.490e-01, -1.750e-02, -1.237e-02, -6.959e-02, 6.619e-02, 4.807e-02), r);\n\tr = MulAdd(s2_0, M4(-9.459e-02, -4.447e-02, 1.633e-02, 7.760e-02, 1.663e-02, 5.495e-02, -2.123e-01, -8.782e-02, 9.847e-02, -2.494e-01, 5.506e-02, 2.300e-02, 9.393e-02, -2.066e-03, -2.887e-02, -1.034e-02), r);\n\tr = MulAdd(s2_1, M4(-6.060e-04, -2.843e-02, 1.193e-01, 7.511e-02, 8.971e-02, -1.729e-01, 8.784e-02, 2.401e-01, -3.400e-03, -1.440e-02, 6.544e-02, 1.016e-01, 1.385e-01, -8.282e-02, 2.683e-02, 3.792e-02), r);\n\tr = MulAdd(s2_2, M4(-3.848e-02, -1.576e-01, 7.396e-02, -3.511e-03, -4.518e-02, 1.550e-02, -8.470e-02, -1.773e-03, -4.893e-02, 6.221e-02, 2.359e-02, 3.289e-02, -1.229e-02, -2.320e-01, 1.303e-01, 5.384e-02), r);\n\tr = MulAdd(s2_3, M4(8.782e-02, 6.043e-02, 3.194e-02, 6.482e-02, -4.146e-02, 3.285e-02, 2.284e-01, -1.415e-01, 1.369e-01, 2.055e-01, 5.368e-02, -1.428e-01, 7.800e-02, -1.314e-01, 3.297e-02, -9.278e-02), r);\n\tr = MulAdd(s2_4, M4(1.024e-01, 1.363e-01, -5.119e-02, 2.565e-02, 6.343e-03, 2.352e-01, 6.082e-02, -1.322e-02, 7.261e-02, -4.301e-02, 4.693e-02, -7.804e-02, -5.509e-02, -4.039e-02, -1.404e-01, -8.930e-02), r);\n\tr = MulAdd(s2_5, M4(-7.801e-04, 2.480e-02, -1.927e-02, -7.391e-02, 1.095e-01, 3.992e-02, -1.621e-01, 6.971e-02, 6.987e-02, 1.023e-01, 1.446e-01, 1.184e-01, -1.187e-01, -1.961e-01, 4.407e-02, 2.737e-02), r);\n\tr = MulAdd(s2_6, M4(-8.438e-02, -3.381e-02, -2.215e-02, -1.105e-01, 3.365e-02, 4.503e-02, -1.213e-01, -4.697e-02, 3.623e-02, 3.179e-02, -2.838e-02, 1.815e-02, 7.213e-02, -5.479e-02, 2.897e-02, -3.150e-02), r);\n\tr = MulAdd(s2_7, M4(-4.557e-02, 1.267e-02, -1.491e-02, 1.259e-01, 8.430e-02, 1.924e-01, -8.617e-02, -1.781e-01, -2.634e-02, 1.175e-02, -7.070e-02, 3.062e-03, 6.270e-02, -2.510e-01, -2.626e-01, -4.705e-02), r);\n\tr = MulAdd(s2_8, M4(7.945e-02, -3.057e-02, -2.458e-02, -8.121e-02, -7.519e-03, 9.856e-02, -5.723e-02, -5.697e-02, -2.230e-02, -6.706e-02, -9.360e-02, -7.224e-02, 4.266e-02, -7.034e-02, -2.337e-02, -1.566e-02), r);\n\tr = MulAdd(s3_0, M4(3.309e-03, -2.313e-01, -1.734e-01, 1.240e-01, -6.625e-03, 4.509e-02, -1.171e-01, -1.023e-02, -3.997e-02, 7.266e-02, -7.198e-02, -1.391e-01, 5.669e-02, 2.601e-02, 8.004e-02, 2.964e-03), r);\n\tr = MulAdd(s3_1, M4(1.932e-02, -2.117e-01, -2.602e-01, 1.114e-01, 8.733e-02, 1.008e-04, 1.115e-01, -2.662e-02, -1.801e-02, -9.135e-02, 1.514e-02, -2.415e-02, 6.470e-02, -5.469e-02, 2.046e-02, -1.580e-02), r);\n\tr = MulAdd(s3_2, M4(-3.705e-02, -6.550e-02, 7.516e-02, 7.553e-02, -3.976e-02, -7.871e-02, 4.571e-02, -7.532e-02, -1.995e-03, -6.403e-02, -4.546e-02, -8.693e-02, 9.039e-02, -1.995e-02, 1.345e-01, 2.267e-02), r);\n\tr = MulAdd(s3_3, M4(1.233e-01, 1.825e-02, 1.725e-01, 1.778e-01, -6.270e-02, -9.425e-02, 1.606e-01, -4.391e-02, 4.171e-02, 1.050e-01, 4.089e-02, -1.759e-01, 2.781e-02, 2.277e-01, -9.549e-02, 5.448e-02), r);\n\tr = MulAdd(s3_4, M4(-5.577e-02, 2.223e-01, -1.202e-01, -1.332e-01, 4.160e-02, 1.016e-01, 8.875e-02, -5.305e-02, 3.856e-02, -1.608e-01, -2.582e-02, 5.141e-02, 2.402e-02, 3.814e-02, -6.229e-02, -2.160e-02), r);\n\tr = MulAdd(s3_5, M4(-6.361e-02, -1.239e-01, -4.564e-02, -8.119e-02, -2.117e-02, -1.723e-01, 9.629e-02, 1.111e-03, 1.104e-01, -2.014e-01, 1.567e-01, -1.490e-01, -1.243e-01, 7.170e-02, 7.954e-02, -2.288e-02), r);\n\tr = MulAdd(s3_6, M4(-2.335e-03, -3.111e-01, 1.315e-01, -1.854e-01, 7.739e-02, -8.189e-02, -3.183e-02, 1.474e-01, -3.443e-02, 1.429e-01, 2.144e-02, 1.426e-01, 4.218e-02, 9.482e-02, 3.630e-02, 5.003e-02), r);\n\tr = MulAdd(s3_7, M4(-4.766e-02, 2.926e-01, 9.300e-02, -1.212e-01, -1.090e-01, 5.079e-03, -9.414e-02, 4.644e-02, 8.026e-02, -1.791e-01, 1.471e-01, -1.189e-01, 1.029e-01, 5.472e-04, -3.538e-02, -1.394e-02), r);\n\tr = MulAdd(s3_8, M4(-2.357e-02, -4.969e-03, -2.550e-04, 3.760e-02, -2.231e-02, -1.263e-01, 5.122e-02, -7.788e-03, 3.626e-02, 9.300e-02, 1.542e-02, -1.115e-01, -2.267e-02, -1.465e-01, -2.458e-02, -4.479e-02), r);\n\tr = MulAdd(s4_0, M4(-4.892e-02, 9.998e-02, -5.485e-02, 1.855e-01, -5.268e-02, -1.911e-01, 1.163e-02, 7.336e-02, -2.790e-02, -8.902e-02, 3.962e-02, 4.102e-02, -1.586e-01, 2.007e-01, -2.357e-01, -6.856e-02), r);\n\tr = MulAdd(s4_1, M4(-2.509e-02, -3.597e-02, 1.446e-01, -1.538e-01, 2.892e-02, -3.173e-01, 7.050e-03, -7.445e-02, 3.322e-02, 2.004e-01, -2.075e-02, -2.078e-01, -1.709e-01, 4.825e-01, 1.906e-01, -3.348e-01), r);\n\tr = MulAdd(s4_2, M4(-1.132e-01, 8.326e-02, -2.015e-01, -4.702e-02, -3.892e-02, -4.820e-03, 6.851e-02, 1.764e-01, 4.587e-02, -1.529e-01, -1.397e-01, 5.021e-02, -5.849e-02, -6.847e-02, -2.166e-01, -1.023e-01), r);\n\tr = MulAdd(s4_3, M4(5.897e-02, 7.060e-02, 4.643e-02, -8.388e-02, -1.709e-01, 3.313e-02, 1.540e-02, 7.965e-02, -2.783e-02, -1.881e-01, -3.390e-02, -5.080e-02, 6.688e-02, 4.503e-01, 1.965e-01, -8.467e-02), r);\n\tr = MulAdd(s4_4, M4(-4.286e-02, 1.484e-01, 1.718e-01, 5.384e-02, -6.666e-04, -4.541e-02, 1.290e-02, -1.162e-01, 1.018e-01, 5.695e-02, -1.323e-01, -8.818e-02, 4.924e-02, -5.815e-02, 2.325e-01, -3.691e-01), r);\n\tr = MulAdd(s4_5, M4(-8.393e-03, -3.255e-02, 1.356e-01, 1.442e-01, -6.673e-02, 1.993e-01, 5.101e-02, -9.806e-02, -3.885e-03, 1.357e-01, -1.321e-01, 4.698e-02, -2.377e-02, -3.456e-01, -1.460e-01, -7.247e-01), r);\n\tr = MulAdd(s4_6, M4(1.248e-01, -2.129e-01, -5.683e-02, 2.821e-02, 1.448e-02, 6.522e-02, -6.485e-02, 9.213e-02, 4.527e-03, -5.447e-02, 1.178e-01, -9.981e-02, 1.705e-01, 5.612e-01, 3.391e-02, -1.881e-01), r);\n\tr = MulAdd(s4_7, M4(-7.766e-03, 3.777e-02, -7.707e-02, -2.180e-01, 1.218e-01, -4.018e-02, 5.356e-02, -5.481e-02, -8.015e-02, 1.189e-01, -1.416e-02, 6.809e-02, 4.150e-01, -2.107e-01, 5.750e-01, -1.605e-01), r);\n\tr = MulAdd(s4_8, M4(9.450e-02, 1.037e-01, -2.835e-01, 4.411e-02, 9.148e-02, 4.021e-02, 3.793e-02, 8.474e-02, -1.125e-03, 7.616e-02, -4.859e-02, 1.827e-01, -5.379e-01, 5.020e-01, -4.090e-01, -4.793e-03), r);\n\tr = MulAdd(s5_0, M4(-1.701e-01, 2.345e-01, -1.211e-02, 4.541e-02, 2.961e-02, 5.266e-02, 1.307e-01, 3.609e-02, 4.605e-02, -3.558e-02, 9.512e-02, 5.914e-02, 2.102e-02, -4.461e-02, -1.372e-02, 1.155e-01), r);\n\tr = MulAdd(s5_1, M4(1.162e-01, -7.298e-02, -5.473e-02, 3.611e-02, 2.875e-03, 5.088e-02, 1.664e-02, -1.070e-01, -7.892e-02, -5.052e-02, -1.098e-01, 5.957e-02, -2.351e-02, 3.243e-03, -7.514e-02, -8.618e-02), r);\n\tr = MulAdd(s5_2, M4(4.716e-02, -1.338e-01, -3.799e-02, 7.695e-02, 1.243e-01, 2.060e-02, 8.676e-02, 2.973e-02, 1.469e-01, -1.873e-01, 5.251e-02, -6.448e-02, 6.517e-02, -1.267e-01, -3.481e-02, 8.992e-02), r);\n\tr = MulAdd(s5_3, M4(4.285e-02, 1.942e-02, -1.713e-01, 6.129e-02, 1.438e-02, 8.497e-02, -6.502e-02, 6.613e-02, -4.295e-02, 4.772e-02, -1.120e-01, 3.155e-04, -2.833e-02, 1.322e-02, 3.454e-02, -4.402e-02), r);\n\tr = MulAdd(s5_4, M4(-1.615e-02, -6.930e-02, -1.766e-02, 3.873e-02, 1.728e-02, -4.751e-02, -7.133e-02, -2.653e-01, 3.786e-02, 1.410e-01, -1.479e-01, -3.649e-02, -6.534e-02, 5.146e-02, -7.122e-02, 4.381e-02), r);\n\tr = MulAdd(s5_5, M4(-7.064e-03, -4.123e-02, -2.359e-02, 8.662e-02, 1.207e-01, 2.232e-01, 2.433e-01, 2.088e-01, 8.066e-02, 3.004e-02, 6.141e-02, -1.586e-01, -7.547e-02, -5.052e-02, 1.366e-01, 6.911e-02), r);\n\tr = MulAdd(s5_6, M4(6.411e-03, 1.104e-01, -1.522e-02, 1.386e-01, 9.939e-03, -5.831e-02, -8.926e-04, 1.216e-02, -2.496e-02, 5.979e-02, 8.775e-03, 1.148e-01, 8.860e-02, 5.929e-02, -4.231e-02, 4.682e-02), r);\n\tr = MulAdd(s5_7, M4(4.344e-02, -8.809e-02, 8.222e-02, -2.465e-01, -7.923e-02, 1.042e-01, 1.952e-01, -7.851e-02, -1.864e-02, 7.215e-02, -3.670e-02, 4.777e-02, -1.010e-01, 6.572e-02, -1.777e-02, -7.108e-02), r);\n\tr = MulAdd(s5_8, M4(-8.068e-02, 9.414e-02, 9.702e-03, 1.204e-02, 3.309e-02, 8.979e-02, 3.771e-02, 1.383e-01, 8.931e-04, -5.920e-02, 9.616e-02, 5.289e-02, 8.472e-02, -1.638e-02, 4.468e-03, -2.117e-03), r);\n\tr = MulAdd(s6_0, M4(3.289e-02, 2.284e-02, -3.119e-02, 2.566e-02, 1.347e-02, -5.070e-02, 5.969e-02, -1.102e-01, -1.147e-01, 1.709e-02, 1.959e-02, 1.604e-01, 6.736e-02, -7.710e-02, -4.285e-02, 4.158e-02), r);\n\tr = MulAdd(s6_1, M4(7.121e-03, -1.564e-01, -1.001e-02, 8.996e-02, -2.329e-02, -1.416e-01, 1.530e-01, 5.474e-03, 9.776e-02, -1.706e-01, 1.192e-02, 2.380e-01, 7.527e-02, -1.134e-01, 6.843e-02, 3.326e-02), r);\n\tr = MulAdd(s6_2, M4(-6.078e-02, 5.706e-02, -4.583e-02, -3.080e-02, 2.456e-02, 6.659e-02, 1.978e-01, -7.113e-02, 1.076e-02, 2.574e-02, 6.166e-02, 6.886e-02, -3.931e-02, 1.514e-02, -2.805e-02, 1.093e-01), r);\n\tr = MulAdd(s6_3, M4(1.128e-02, 1.021e-01, 3.399e-02, -1.714e-01, 1.169e-01, 1.522e-01, 2.364e-02, 6.626e-02, -4.942e-03, -6.701e-02, -7.163e-02, 2.261e-02, 5.026e-03, 5.555e-02, -8.452e-02, -1.618e-01), r);\n\tr = MulAdd(s6_4, M4(8.260e-02, 1.394e-01, -3.437e-02, -2.420e-02, 6.662e-02, -1.391e-01, -5.692e-03, 1.088e-01, 1.298e-01, 2.227e-01, -2.342e-02, -1.256e-01, 9.542e-02, 1.525e-01, -7.337e-02, -1.027e-01), r);\n\tr = MulAdd(s6_5, M4(8.994e-02, 1.354e-01, -9.008e-02, 3.849e-02, -2.093e-02, 4.631e-02, -2.421e-01, -1.823e-02, -3.046e-02, 3.960e-02, -4.829e-02, -1.686e-01, 1.191e-01, -4.892e-02, -5.579e-02, -1.901e-02), r);\n\tr = MulAdd(s6_6, M4(-9.693e-02, -5.007e-02, 1.206e-02, -8.020e-02, 5.086e-02, 1.398e-01, -5.576e-02, 8.612e-03, -1.313e-01, -1.433e-02, -1.111e-02, 1.519e-01, 3.079e-02, 2.418e-02, 1.939e-02, 1.782e-02), r);\n\tr = MulAdd(s6_7, M4(7.926e-02, -6.074e-02, -1.768e-01, -1.748e-02, -7.136e-02, -1.362e-01, -1.489e-01, -1.288e-01, -7.120e-02, -1.594e-01, 1.150e-01, -9.829e-04, 1.873e-01, 5.800e-03, 5.079e-02, -9.980e-03), r);\n\tr = MulAdd(s6_8, M4(-1.047e-01, 1.090e-02, -4.031e-02, 4.984e-02, 1.676e-02, 8.937e-02, -5.950e-02, 9.969e-02, 5.061e-02, -8.463e-02, -1.415e-01, 6.871e-02, 6.857e-02, 9.592e-02, 1.104e-02, 4.270e-02), r);\n\tr = MulAdd(s7_0, M4(-8.631e-02, 4.665e-02, -8.895e-02, -1.461e-01, -2.317e-01, 2.104e-01, 3.963e-02, -3.532e-01, 3.795e-02, -1.502e-01, 8.124e-02, -7.193e-02, 2.124e-01, -2.453e-01, -1.988e-01, 8.618e-02), r);\n\tr = MulAdd(s7_1, M4(2.688e-02, 8.635e-02, 1.727e-02, -6.922e-02, 1.255e-02, 9.244e-02, -5.431e-03, 5.034e-02, -5.071e-02, 1.155e-01, 7.984e-02, 2.210e-01, -1.402e-02, -3.125e-01, 5.878e-02, 1.485e-01), r);\n\tr = MulAdd(s7_2, M4(3.618e-02, 1.528e-02, 2.318e-02, -6.709e-03, 2.473e-02, 1.492e-01, -6.647e-02, 1.353e-01, -3.731e-02, 1.335e-01, -3.427e-02, -1.461e-01, 1.150e-01, -1.794e-01, -3.323e-02, 1.929e-01), r);\n\tr = MulAdd(s7_3, M4(-5.277e-02, -1.363e-01, -7.280e-02, -1.981e-01, 1.313e-01, 9.950e-02, -3.511e-02, -8.209e-02, 5.781e-03, -1.295e-01, -7.449e-02, -6.425e-02, 1.034e-01, -1.895e-01, -1.182e-01, -3.808e-02), r);\n\tr = MulAdd(s7_4, M4(2.256e-02, 3.111e-01, -8.042e-02, 2.155e-02, -6.160e-02, 4.626e-02, -1.338e-01, 1.412e-02, 3.955e-02, 4.709e-02, 2.207e-02, 2.577e-02, 3.569e-01, -2.610e-01, 1.168e-01, -3.008e-01), r);\n\tr = MulAdd(s7_5, M4(-7.569e-02, -1.578e-01, -1.208e-01, -6.976e-02, 1.733e-01, -1.821e-01, -1.684e-01, 4.462e-02, 1.019e-01, -7.874e-03, 5.979e-02, -9.098e-02, 2.738e-01, -7.549e-02, 2.460e-02, 1.610e-01), r);\n\tr = MulAdd(s7_6, M4(-9.334e-02, 4.098e-02, -6.013e-03, -3.997e-02, -3.501e-02, -2.160e-01, -9.129e-02, 8.863e-02, -3.472e-02, -8.100e-02, 9.985e-02, -5.826e-02, 1.061e-01, 6.911e-03, -7.054e-02, -1.854e-01), r);\n\tr = MulAdd(s7_7, M4(2.929e-02, 1.824e-01, -1.064e-01, 1.334e-01, 5.439e-02, 3.309e-02, -8.525e-02, -6.769e-02, -1.394e-01, -2.316e-02, -1.789e-02, 9.320e-03, 1.287e-01, -1.315e-01, -1.557e-01, -2.243e-02), r);\n\tr = MulAdd(s7_8, M4(-7.720e-02, 3.992e-02, -2.953e-02, -2.195e-02, -1.529e-01, -6.945e-02, 1.175e-01, 2.004e-02, 4.700e-03, 4.726e-02, 1.380e-01, 8.438e-02, -6.662e-02, 1.652e-01, -2.526e-01, 3.833e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.188e-02, -5.847e-03, -6.198e-03, 1.196e-02 };\n\tr = MulAdd(s0_0, M4(4.122e-02, 8.383e-02, 3.338e-02, 1.074e-01, 6.216e-02, 1.477e-01, -1.380e-01, -6.255e-02, 1.996e-01, -3.722e-02, 5.276e-02, 1.167e-01, -7.417e-02, 5.647e-02, -5.606e-02, 1.827e-02), r);\n\tr = MulAdd(s0_1, M4(-1.417e-01, 1.031e-01, 8.936e-02, -2.534e-02, 4.818e-02, -1.266e-02, 7.397e-02, -8.276e-03, 3.212e-02, 1.235e-01, -5.494e-02, -1.396e-01, 5.486e-02, 3.028e-02, 1.206e-01, 3.576e-02), r);\n\tr = MulAdd(s0_2, M4(7.835e-03, -2.252e-02, -6.244e-02, 5.518e-02, 1.196e-02, 6.549e-02, -9.242e-02, 6.011e-02, 7.738e-02, 5.543e-02, 4.658e-02, 1.604e-01, -1.440e-01, -2.203e-01, 2.094e-01, 5.055e-02), r);\n\tr = MulAdd(s0_3, M4(1.827e-02, 2.703e-01, -1.737e-02, -1.322e-01, 1.175e-01, 5.652e-03, -7.876e-02, -7.422e-02, -8.563e-02, 1.274e-01, 2.360e-01, -9.820e-02, -1.245e-01, -1.965e-01, -1.857e-01, -4.621e-02), r);\n\tr = MulAdd(s0_4, M4(3.942e-02, -1.100e-02, 2.788e-01, -2.336e-01, 8.881e-02, -1.333e-01, 1.003e-01, 1.164e-01, 7.883e-02, 8.033e-02, 2.043e-02, 1.624e-01, 1.383e-01, -2.519e-02, -5.318e-02, 1.520e-01), r);\n\tr = MulAdd(s0_5, M4(-3.216e-02, 5.697e-02, -5.701e-02, 4.658e-02, 3.494e-02, 3.336e-02, -7.436e-02, 7.364e-02, 8.382e-02, -2.202e-02, -1.743e-01, -1.839e-01, 1.417e-01, -1.635e-01, -3.120e-01, -8.505e-02), r);\n\tr = MulAdd(s0_6, M4(-7.515e-03, 4.343e-02, -5.703e-02, -7.557e-02, 3.959e-02, -5.061e-02, 3.424e-03, -7.574e-02, 5.731e-02, 1.219e-01, 2.614e-01, -1.606e-01, -1.916e-01, 1.833e-01, 2.208e-01, 2.684e-02), r);\n\tr = MulAdd(s0_7, M4(-3.595e-02, 7.421e-02, -8.721e-02, -1.584e-01, -2.372e-01, 6.072e-03, 1.349e-01, -6.225e-02, 7.371e-02, -1.628e-02, 9.391e-03, 5.127e-02, 1.093e-01, -6.543e-02, -6.491e-02, -1.025e-01), r);\n\tr = MulAdd(s0_8, M4(1.666e-01, -6.585e-02, -3.190e-02, -1.870e-02, -2.152e-02, 2.299e-02, -7.148e-02, -5.189e-02, 3.208e-02, 3.908e-02, 9.250e-02, -5.921e-02, -1.940e-01, 2.204e-01, 7.993e-02, -1.537e-01), r);\n\tr = MulAdd(s1_0, M4(-2.020e-01, -8.556e-02, 1.969e-01, 4.061e-02, -2.778e-01, 2.953e-02, -8.298e-02, 2.652e-02, -1.784e-01, -2.365e-01, -9.816e-02, 4.397e-02, -4.537e-02, -2.409e-03, 7.802e-02, -3.368e-02), r);\n\tr = MulAdd(s1_1, M4(-4.658e-02, 8.550e-02, 7.848e-03, -3.993e-02, 1.831e-01, 1.087e-01, -4.718e-02, 1.597e-01, -2.204e-02, 8.192e-03, -1.598e-01, 1.384e-03, -8.970e-02, 1.891e-02, -6.039e-02, 1.696e-01), r);\n\tr = MulAdd(s1_2, M4(-1.113e-01, -4.528e-02, 1.062e-01, 1.203e-01, 9.039e-02, 7.922e-03, -4.449e-02, 2.844e-02, -1.424e-01, -7.929e-02, 2.053e-02, -3.185e-03, 6.237e-02, -1.203e-01, 8.945e-02, -3.631e-02), r);\n\tr = MulAdd(s1_3, M4(-5.671e-03, -3.451e-02, 1.500e-01, -1.569e-01, 1.268e-01, -1.226e-01, 6.915e-04, -2.778e-02, -3.379e-02, 4.271e-02, 1.354e-01, -9.886e-02, -1.241e-01, 7.640e-03, 3.774e-02, -3.300e-02), r);\n\tr = MulAdd(s1_4, M4(1.919e-01, -9.819e-02, -3.668e-02, -1.755e-01, -6.389e-02, 1.992e-01, -3.709e-02, 5.672e-02, -9.270e-02, 1.810e-02, -5.355e-02, -1.391e-01, 3.739e-02, 1.339e-01, -1.631e-01, 1.079e-01), r);\n\tr = MulAdd(s1_5, M4(-2.162e-02, 1.105e-01, -3.219e-02, 5.079e-02, -8.272e-02, -5.169e-02, 1.417e-01, 1.084e-01, 1.151e-01, -3.524e-03, 8.167e-02, -7.284e-02, 4.550e-02, -3.263e-02, 3.912e-03, 2.087e-02), r);\n\tr = MulAdd(s1_6, M4(-1.941e-01, -9.595e-02, 3.628e-02, -6.315e-02, -1.131e-01, -7.642e-02, 7.751e-03, -1.500e-01, -2.586e-02, 1.070e-02, 1.509e-01, 2.150e-02, 2.203e-01, -4.958e-02, -7.005e-02, -5.625e-02), r);\n\tr = MulAdd(s1_7, M4(-1.845e-01, 2.111e-01, -1.228e-01, -1.447e-01, -3.468e-01, 3.155e-01, 1.562e-01, -3.004e-03, 1.479e-02, -1.853e-01, 3.506e-03, 6.235e-02, -2.529e-02, 5.032e-02, 1.300e-02, 4.364e-02), r);\n\tr = MulAdd(s1_8, M4(1.870e-01, 4.247e-02, -1.505e-01, -1.313e-01, 3.916e-01, 7.202e-03, 9.710e-02, -8.099e-02, 1.619e-01, 9.561e-04, 2.766e-02, 6.239e-03, -4.921e-03, 7.273e-02, -1.201e-02, -2.343e-02), r);\n\tr = MulAdd(s2_0, M4(2.606e-01, -5.136e-02, -1.860e-01, 8.581e-02, 9.574e-02, 1.568e-01, -1.763e-02, -5.978e-03, 5.550e-02, 1.568e-02, -5.198e-02, -4.383e-02, -4.906e-02, 1.675e-01, 1.535e-01, 4.199e-02), r);\n\tr = MulAdd(s2_1, M4(8.128e-02, -4.188e-02, 8.789e-02, 1.059e-02, 5.317e-02, -2.500e-01, -1.083e-02, -1.010e-02, 1.883e-02, -1.240e-03, -6.292e-02, -7.543e-02, -2.780e-01, 1.280e-02, 7.872e-02, -1.048e-01), r);\n\tr = MulAdd(s2_2, M4(-7.516e-02, 3.264e-02, 1.078e-02, 1.077e-01, -1.360e-01, -1.113e-01, -2.177e-03, -5.041e-02, 1.569e-01, 1.391e-01, -4.030e-02, -1.241e-01, -8.740e-02, -5.520e-02, 2.185e-02, 1.608e-02), r);\n\tr = MulAdd(s2_3, M4(2.306e-03, 1.567e-01, -7.209e-02, -4.525e-02, -9.415e-02, 6.306e-02, 1.450e-01, -1.169e-01, 5.780e-02, -1.133e-01, -5.446e-02, 3.259e-02, -4.961e-02, -1.976e-02, -2.447e-02, -2.290e-02), r);\n\tr = MulAdd(s2_4, M4(2.386e-02, -5.238e-02, 1.207e-01, 3.735e-02, 9.597e-02, -4.174e-02, -6.034e-03, 1.518e-01, 4.247e-02, 2.257e-01, 1.078e-01, 1.793e-03, -5.901e-02, 9.326e-02, -1.338e-01, 1.885e-01), r);\n\tr = MulAdd(s2_5, M4(7.380e-02, -1.063e-02, 3.345e-02, 1.479e-02, 3.495e-02, 4.331e-02, -8.697e-02, 7.413e-02, -4.597e-02, 7.436e-02, -3.669e-02, 5.752e-02, -5.799e-02, -8.522e-02, 3.640e-02, 2.072e-01), r);\n\tr = MulAdd(s2_6, M4(-1.877e-01, 1.551e-02, -6.828e-02, -1.350e-01, -6.230e-02, -3.119e-02, -7.443e-02, -4.987e-03, -2.192e-01, -1.508e-02, 2.726e-02, -3.162e-02, 9.302e-02, -3.278e-02, -1.812e-01, -1.685e-01), r);\n\tr = MulAdd(s2_7, M4(-8.226e-02, -9.430e-03, -2.783e-02, -1.507e-01, -1.194e-01, 4.480e-02, -3.096e-01, 1.221e-02, -1.314e-02, -3.632e-02, -8.366e-02, -9.450e-02, 8.160e-02, -4.070e-02, 1.684e-02, -1.591e-01), r);\n\tr = MulAdd(s2_8, M4(-9.698e-02, -5.036e-02, 7.702e-03, -1.561e-02, -2.036e-01, 7.757e-04, -7.320e-03, -9.980e-02, 1.523e-03, -1.953e-02, 1.121e-01, -2.196e-02, 6.359e-02, -2.313e-02, -9.189e-02, 9.476e-02), r);\n\tr = MulAdd(s3_0, M4(1.074e-01, 6.465e-02, 5.784e-02, -5.239e-02, 1.372e-01, 2.996e-02, 4.506e-02, -4.303e-02, 6.389e-02, -1.702e-01, 5.712e-02, -2.878e-02, 1.114e-01, -1.466e-01, 1.442e-02, -4.859e-02), r);\n\tr = MulAdd(s3_1, M4(2.695e-01, 8.036e-02, 1.020e-02, -2.345e-02, -3.177e-02, -1.214e-01, 2.157e-02, -9.057e-02, -7.833e-02, -1.223e-01, 1.324e-01, 4.208e-02, 4.594e-02, -3.441e-02, -1.455e-01, -1.347e-01), r);\n\tr = MulAdd(s3_2, M4(-1.776e-01, 3.311e-02, 2.599e-01, 1.538e-01, 5.780e-02, -1.014e-01, -6.213e-02, -6.103e-02, -8.818e-02, 6.784e-03, 2.126e-01, -4.447e-02, 2.162e-02, 6.845e-03, 2.213e-02, 4.315e-02), r);\n\tr = MulAdd(s3_3, M4(-3.691e-02, 9.170e-02, -1.353e-01, -3.568e-02, -2.263e-02, -3.033e-02, 1.431e-01, 1.084e-02, -8.167e-02, -1.828e-01, -1.531e-02, 1.328e-01, -1.693e-01, -1.139e-01, -1.416e-01, 4.815e-03), r);\n\tr = MulAdd(s3_4, M4(2.757e-01, 1.825e-01, 5.124e-02, -2.846e-02, 1.989e-02, 4.312e-02, -7.312e-02, 5.850e-02, 1.033e-01, -1.880e-02, -4.189e-02, 2.893e-02, 3.430e-02, -6.482e-03, 6.486e-02, 1.755e-01), r);\n\tr = MulAdd(s3_5, M4(-9.942e-02, -2.805e-01, -7.769e-02, 3.849e-03, -1.070e-01, -4.338e-02, 6.514e-02, 3.316e-02, 1.383e-01, 2.742e-01, 3.685e-02, -4.829e-02, 1.068e-01, 1.266e-01, -2.506e-03, 1.291e-01), r);\n\tr = MulAdd(s3_6, M4(-2.415e-01, -8.057e-02, 3.857e-02, -1.124e-02, -2.277e-02, 9.862e-02, -2.556e-02, 1.701e-01, 1.303e-01, -4.520e-02, 1.029e-01, -3.540e-03, -2.677e-02, -2.015e-01, 4.437e-02, -9.656e-02), r);\n\tr = MulAdd(s3_7, M4(-1.609e-01, 7.057e-02, 6.680e-02, -8.852e-02, -4.068e-02, 5.505e-02, -2.040e-01, 4.326e-02, 2.155e-01, -7.881e-02, 2.034e-01, -2.155e-02, 1.404e-01, -6.881e-02, 1.369e-02, -1.505e-01), r);\n\tr = MulAdd(s3_8, M4(3.738e-02, -4.088e-02, -9.538e-02, -1.224e-02, -5.381e-02, 7.745e-02, 1.922e-03, -4.366e-02, -2.528e-01, 6.610e-02, 1.876e-01, 3.537e-02, 1.399e-01, 1.328e-02, -2.380e-02, -1.166e-02), r);\n\tr = MulAdd(s4_0, M4(1.192e-01, -4.218e-02, 8.971e-02, -1.203e-03, 3.736e-02, 7.362e-02, 1.852e-01, -9.320e-02, -8.487e-03, -4.872e-02, 4.593e-02, 5.427e-02, -1.876e-01, 2.224e-01, 1.574e-01, -6.391e-02), r);\n\tr = MulAdd(s4_1, M4(2.717e-02, -2.327e-01, 2.254e-02, -1.382e-01, 9.461e-02, 5.224e-02, -1.192e-02, 1.295e-01, -1.813e-01, 1.258e-01, 1.800e-01, 4.340e-02, -1.290e-01, -1.914e-01, -4.951e-02, -1.204e-01), r);\n\tr = MulAdd(s4_2, M4(-1.256e-01, 6.234e-03, 9.556e-02, -4.207e-02, -5.784e-02, -5.792e-02, 8.548e-02, 1.648e-01, -9.047e-02, -2.218e-03, -3.778e-02, 8.343e-02, -9.056e-02, -1.292e-02, 2.514e-03, 1.063e-01), r);\n\tr = MulAdd(s4_3, M4(-8.758e-02, -7.533e-02, -3.850e-02, -9.839e-02, -5.909e-02, 9.537e-02, -2.824e-02, -4.447e-02, -1.371e-01, 5.032e-03, -6.339e-02, -2.186e-01, 3.136e-02, 2.361e-02, -9.746e-02, -8.115e-02), r);\n\tr = MulAdd(s4_4, M4(-2.552e-01, 9.643e-02, -6.941e-02, 1.155e-01, 3.640e-02, -4.759e-02, 1.096e-02, 1.720e-01, 6.097e-03, 1.744e-02, -5.312e-02, -2.109e-03, 1.329e-01, -3.999e-01, 2.500e-01, -3.880e-01), r);\n\tr = MulAdd(s4_5, M4(-1.890e-01, -2.049e-02, -5.403e-02, 6.456e-02, -6.021e-02, 1.860e-02, -3.521e-02, 1.354e-01, 8.995e-02, -9.078e-02, 4.511e-02, 1.512e-01, -4.562e-01, -1.406e-01, 2.990e-01, 2.225e-01), r);\n\tr = MulAdd(s4_6, M4(-1.407e-01, 3.263e-02, -1.526e-01, -7.049e-02, 2.062e-01, -2.468e-03, 1.486e-01, -2.106e-01, -1.939e-02, -2.468e-02, 9.569e-03, 3.444e-02, -7.420e-01, 7.872e-01, 3.873e-01, 2.897e-02), r);\n\tr = MulAdd(s4_7, M4(3.851e-02, 9.604e-02, -1.353e-01, 5.790e-02, 1.505e-01, 9.856e-02, 2.537e-02, -3.294e-02, -4.353e-02, -1.397e-01, -7.199e-02, -2.963e-02, 5.805e-01, -3.699e-01, 1.366e-01, 3.243e-01), r);\n\tr = MulAdd(s4_8, M4(2.228e-01, -1.228e-01, 2.280e-01, 5.593e-02, 3.115e-02, -7.131e-02, -7.441e-02, 1.255e-01, 8.876e-02, -2.383e-02, -8.210e-02, 4.344e-02, 8.000e-02, 3.931e-02, -1.807e-01, -1.223e-02), r);\n\tr = MulAdd(s5_0, M4(1.995e-01, 1.478e-02, 1.361e-01, 1.052e-01, -6.110e-02, -1.409e-02, 4.745e-02, -9.579e-02, -6.960e-02, 1.767e-02, 6.126e-02, -6.174e-02, 2.066e-02, 1.905e-02, 1.185e-01, 4.444e-02), r);\n\tr = MulAdd(s5_1, M4(1.894e-02, 5.374e-02, -3.895e-02, -6.910e-02, -8.066e-02, -7.286e-03, 3.333e-02, -2.389e-02, 4.153e-02, 1.519e-01, 5.669e-02, 1.348e-01, 1.514e-01, 8.843e-02, -5.111e-02, -6.478e-02), r);\n\tr = MulAdd(s5_2, M4(-1.113e-02, -4.382e-02, 1.277e-01, -6.272e-02, 3.374e-02, 5.874e-02, 1.987e-02, 5.267e-03, -1.998e-01, -1.951e-02, -1.162e-01, 5.619e-02, 2.949e-02, -2.699e-02, 1.024e-01, 1.130e-01), r);\n\tr = MulAdd(s5_3, M4(1.431e-01, -9.473e-02, -2.907e-02, 1.652e-02, -8.979e-02, -5.443e-02, 8.121e-02, -1.787e-01, 7.685e-03, 2.413e-02, -5.653e-02, -7.984e-02, -8.301e-02, 5.845e-02, 7.076e-02, -7.164e-02), r);\n\tr = MulAdd(s5_4, M4(9.803e-02, -2.012e-01, -3.996e-02, -3.059e-02, 1.333e-01, 1.097e-01, 4.228e-02, 1.154e-01, 4.830e-02, 4.718e-02, -1.158e-01, -2.837e-02, -4.066e-02, -1.155e-01, 2.084e-02, 2.952e-03), r);\n\tr = MulAdd(s5_5, M4(-1.548e-01, 2.054e-02, 5.285e-02, 2.615e-02, -1.192e-01, -1.256e-02, -2.001e-02, 9.973e-02, 1.317e-01, -2.092e-02, 6.632e-02, -7.791e-02, 4.145e-03, 1.330e-01, -1.645e-01, 1.230e-02), r);\n\tr = MulAdd(s5_6, M4(-3.373e-02, 1.389e-03, -5.204e-02, 1.417e-01, 2.750e-02, -2.121e-01, 3.537e-02, -1.165e-01, -9.734e-02, -1.177e-01, -1.281e-01, 1.998e-03, -2.342e-02, -2.233e-02, 2.014e-02, -3.454e-02), r);\n\tr = MulAdd(s5_7, M4(1.243e-01, 4.646e-02, 3.739e-02, -1.566e-01, -1.649e-01, 3.730e-03, -1.185e-01, -4.354e-02, -1.778e-02, -1.135e-01, -1.348e-01, 5.122e-02, 2.792e-02, -7.921e-02, -1.160e-01, 8.289e-02), r);\n\tr = MulAdd(s5_8, M4(8.194e-03, 4.714e-02, 2.052e-01, 1.422e-01, -4.842e-02, 2.618e-02, -2.984e-02, -6.504e-02, 1.182e-01, -1.162e-02, -1.997e-01, 2.425e-02, 4.452e-02, -1.259e-02, -9.730e-02, 7.280e-02), r);\n\tr = MulAdd(s6_0, M4(-8.571e-02, 1.186e-01, 1.233e-02, 1.387e-02, 9.057e-02, 1.115e-01, 2.179e-03, 6.594e-02, 2.330e-01, 3.804e-02, 1.034e-01, 4.844e-02, -9.847e-03, -2.905e-02, 5.979e-03, 1.292e-01), r);\n\tr = MulAdd(s6_1, M4(2.553e-02, 2.555e-02, -7.010e-02, -3.260e-02, 4.235e-02, -8.416e-03, 5.704e-03, -6.912e-02, 3.865e-02, -2.399e-01, 2.407e-02, -6.606e-02, 1.687e-02, -1.138e-01, 2.578e-02, -1.999e-02), r);\n\tr = MulAdd(s6_2, M4(-3.888e-02, 1.122e-02, -2.795e-02, 9.662e-02, 2.591e-02, 2.528e-02, 8.205e-02, 2.072e-02, -3.163e-01, -5.685e-02, -1.805e-01, -1.097e-01, -2.322e-01, 4.193e-02, 2.081e-01, 6.192e-02), r);\n\tr = MulAdd(s6_3, M4(-1.587e-01, -1.986e-01, -1.124e-01, -5.828e-02, 6.789e-02, 9.969e-02, -3.875e-03, 8.378e-02, -1.463e-01, 3.364e-02, 5.932e-02, 4.116e-03, 7.922e-02, -6.432e-03, 1.013e-02, -2.830e-02), r);\n\tr = MulAdd(s6_4, M4(8.316e-02, -6.667e-02, -1.269e-01, -2.602e-02, -1.090e-01, -2.036e-02, 4.056e-02, -1.868e-02, -1.277e-01, -9.614e-02, -1.978e-03, 3.213e-02, 1.918e-01, -3.292e-03, 3.931e-02, 4.892e-02), r);\n\tr = MulAdd(s6_5, M4(-1.863e-02, 7.901e-02, -1.337e-01, -2.784e-02, -2.582e-02, -4.822e-02, -1.474e-01, -1.068e-01, -9.478e-02, -4.451e-02, -5.566e-02, -2.354e-02, 1.543e-01, -2.465e-02, -1.499e-01, 2.466e-02), r);\n\tr = MulAdd(s6_6, M4(1.499e-01, -4.591e-02, -8.516e-03, -6.246e-02, -1.189e-01, 3.637e-02, -1.299e-01, 1.627e-01, 1.222e-01, 8.852e-02, 3.212e-03, 7.118e-02, -1.357e-02, 2.100e-02, 4.570e-03, -1.142e-01), r);\n\tr = MulAdd(s6_7, M4(4.662e-02, 1.060e-02, 5.149e-02, 4.118e-02, -6.327e-02, 1.159e-01, -1.288e-03, -8.900e-02, 2.912e-01, -6.238e-02, 1.235e-02, -9.573e-02, 1.437e-02, 5.830e-02, 1.094e-01, 2.949e-02), r);\n\tr = MulAdd(s6_8, M4(-3.209e-02, 5.889e-02, -1.010e-01, -6.904e-02, 6.960e-02, 3.590e-03, -5.111e-02, -4.199e-02, 1.622e-01, 3.661e-02, -3.815e-02, 8.151e-02, -1.278e-01, 1.048e-01, -1.009e-01, -2.499e-02), r);\n\tr = MulAdd(s7_0, M4(4.288e-02, 2.392e-01, 2.314e-02, 8.080e-02, 2.546e-02, -1.373e-01, 1.117e-01, -1.685e-01, -1.819e-01, 1.207e-01, 2.163e-01, 8.378e-02, 3.947e-02, -3.408e-01, 8.933e-02, -4.154e-02), r);\n\tr = MulAdd(s7_1, M4(9.584e-02, -4.602e-02, 1.720e-03, -1.151e-01, 1.934e-02, 6.536e-02, -3.617e-02, -3.821e-02, -2.219e-01, 1.750e-02, 1.317e-02, -3.834e-02, 5.001e-01, 2.384e-01, 1.160e-01, 9.402e-03), r);\n\tr = MulAdd(s7_2, M4(1.313e-01, 3.794e-02, 7.627e-02, -4.446e-02, 1.638e-02, -5.554e-02, -4.113e-02, 7.161e-02, -2.881e-02, 6.571e-02, -5.144e-02, -2.328e-02, 1.982e-01, 4.741e-02, 7.447e-02, -1.606e-01), r);\n\tr = MulAdd(s7_3, M4(3.180e-01, -6.699e-02, -2.630e-02, 2.820e-01, -7.095e-02, -2.209e-02, 4.669e-02, 2.435e-01, 1.191e-01, 5.831e-02, -1.845e-01, 5.569e-03, -2.660e-01, 1.263e-01, 1.461e-01, -1.263e-01), r);\n\tr = MulAdd(s7_4, M4(-9.744e-02, -9.800e-03, 4.730e-02, 2.280e-01, -4.158e-02, 1.705e-01, -1.756e-01, -7.229e-02, 9.002e-02, 1.229e-01, -1.380e-02, 1.392e-01, -2.255e-01, 8.003e-03, 1.042e-01, 3.708e-01), r);\n\tr = MulAdd(s7_5, M4(1.447e-01, 2.116e-02, 9.953e-02, -3.550e-02, 5.017e-02, 1.057e-01, -8.217e-02, 8.744e-03, 1.345e-01, 2.721e-02, 1.029e-01, -9.431e-02, -3.924e-01, 1.097e-01, -2.832e-01, 1.546e-01), r);\n\tr = MulAdd(s7_6, M4(-3.546e-02, -1.809e-01, -9.086e-02, 1.546e-01, -8.928e-02, -8.232e-02, -8.062e-02, -8.184e-02, -1.697e-02, -1.375e-01, -7.805e-02, -1.554e-02, 2.654e-02, -3.685e-01, -3.469e-01, -1.440e-01), r);\n\tr = MulAdd(s7_7, M4(-2.244e-01, -2.795e-02, -3.074e-02, 7.153e-02, 2.436e-02, -7.016e-02, -1.603e-02, 1.083e-01, -1.362e-01, -5.181e-02, 7.052e-02, 5.746e-02, 1.820e-01, 6.327e-03, -1.165e-02, 1.657e-01), r);\n\tr = MulAdd(s7_8, M4(-1.553e-01, 2.828e-02, 5.395e-02, -4.372e-02, 3.593e-01, 2.295e-02, -4.591e-02, -4.522e-02, -5.343e-02, 6.061e-02, 3.451e-02, -3.592e-02, 4.702e-02, 2.445e-01, 5.456e-02, -4.491e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.614e-02, 2.521e-02, 3.821e-02, 2.764e-02 };\n\tr = MulAdd(s0_0, M4(4.931e-02, -1.620e-02, 3.840e-02, -1.549e-01, 1.687e-01, 1.586e-01, 2.465e-02, 7.422e-03, -8.848e-02, 1.450e-01, -2.154e-01, 6.384e-02, 6.475e-02, 1.585e-01, -6.220e-02, 8.563e-02), r);\n\tr = MulAdd(s0_1, M4(9.150e-02, 6.232e-02, 1.791e-02, -2.287e-02, 1.222e-02, -7.374e-03, -9.660e-02, 1.058e-01, 2.371e-02, -6.607e-02, 2.011e-01, -4.123e-02, 4.755e-02, 8.962e-02, -7.784e-02, 1.115e-01), r);\n\tr = MulAdd(s0_2, M4(1.253e-01, -1.645e-02, 2.724e-03, -7.293e-03, 1.582e-02, -7.734e-02, 9.847e-02, -6.540e-02, 5.937e-02, -1.585e-02, -2.111e-01, -6.382e-02, 1.210e-01, -9.965e-02, 1.147e-01, 2.300e-02), r);\n\tr = MulAdd(s0_3, M4(1.140e-01, -1.274e-01, -5.101e-02, -5.984e-02, -9.800e-02, -1.215e-01, 1.383e-01, 1.945e-02, 4.608e-02, 8.946e-02, 1.683e-02, 7.257e-03, 1.265e-01, 6.532e-02, 1.383e-01, -1.018e-01), r);\n\tr = MulAdd(s0_4, M4(2.188e-02, 1.722e-01, 1.655e-02, -3.794e-02, -3.063e-02, 1.064e-01, -6.348e-02, 2.423e-02, 1.154e-01, -2.119e-01, 6.006e-02, 4.074e-02, 6.261e-02, 2.229e-02, -1.479e-01, 1.137e-01), r);\n\tr = MulAdd(s0_5, M4(1.043e-01, 3.299e-02, -2.709e-02, 2.662e-02, 7.709e-02, 3.069e-02, 5.687e-02, -7.690e-03, -1.651e-01, 2.707e-02, -3.127e-02, -1.623e-02, 3.458e-02, 6.050e-02, -5.945e-02, -4.582e-02), r);\n\tr = MulAdd(s0_6, M4(8.463e-02, 3.034e-02, -3.368e-02, -5.227e-03, 1.183e-02, 2.833e-02, 7.060e-02, -5.617e-02, -7.726e-02, -1.494e-01, 8.997e-02, 2.586e-02, -9.478e-02, -1.036e-01, -1.880e-01, 3.941e-02), r);\n\tr = MulAdd(s0_7, M4(-5.805e-03, -5.985e-02, -2.067e-02, 6.773e-02, 8.510e-02, -4.496e-02, -9.020e-02, 4.270e-03, 9.125e-02, -7.380e-02, 1.010e-02, -8.613e-03, -1.178e-01, -1.061e-01, -2.188e-02, 1.044e-02), r);\n\tr = MulAdd(s0_8, M4(-3.733e-02, 3.283e-02, -4.618e-02, -4.285e-02, -6.668e-02, -9.029e-02, 1.092e-01, -2.894e-03, -5.508e-02, -6.132e-02, 5.218e-02, -8.097e-02, -6.732e-02, 1.058e-01, -5.113e-02, 1.074e-01), r);\n\tr = MulAdd(s1_0, M4(1.130e-01, 6.127e-02, -1.749e-02, -6.534e-02, -1.035e-01, 1.048e-01, -1.353e-01, 3.567e-02, -1.930e-02, -7.667e-02, -7.980e-02, -1.448e-01, -5.444e-02, 1.102e-01, -9.306e-03, 5.581e-02), r);\n\tr = MulAdd(s1_1, M4(-7.318e-02, 2.685e-02, 2.261e-02, 7.976e-02, -1.067e-01, -2.688e-01, 4.436e-02, 7.789e-02, -6.288e-02, 1.418e-01, 3.727e-02, 1.334e-01, -1.607e-01, -1.550e-01, -2.507e-02, -2.109e-03), r);\n\tr = MulAdd(s1_2, M4(-1.630e-01, 9.466e-02, -4.983e-02, -4.514e-02, -2.337e-01, -1.183e-01, 8.778e-03, 1.591e-02, -2.269e-02, -3.599e-02, 3.178e-02, 1.132e-02, 4.432e-02, 1.343e-01, 2.935e-02, 9.254e-02), r);\n\tr = MulAdd(s1_3, M4(1.499e-02, -2.522e-01, -5.516e-02, -3.723e-02, 7.456e-02, -5.486e-02, 3.520e-02, 1.543e-01, -6.918e-02, 1.577e-01, 8.023e-02, -2.114e-02, -2.013e-02, -9.676e-03, -5.755e-02, 1.012e-02), r);\n\tr = MulAdd(s1_4, M4(9.258e-02, -1.213e-01, -1.900e-01, -1.896e-02, -5.598e-02, 8.796e-02, 9.096e-03, 7.257e-02, -1.115e-01, -1.095e-01, -1.428e-01, 4.173e-02, 1.057e-02, -1.400e-01, -6.675e-02, 1.536e-01), r);\n\tr = MulAdd(s1_5, M4(1.526e-01, 2.140e-01, 1.820e-02, -3.331e-02, 3.502e-01, 7.911e-03, -1.580e-01, -2.524e-02, 6.383e-02, 9.007e-02, 5.348e-03, -1.111e-01, -6.671e-02, 1.192e-01, -6.390e-02, 1.555e-02), r);\n\tr = MulAdd(s1_6, M4(1.229e-02, -9.820e-04, 5.709e-03, 1.341e-02, -6.908e-02, 5.506e-02, -2.072e-01, 2.365e-02, 1.616e-01, -2.105e-02, -2.334e-02, 4.507e-02, 7.618e-02, -1.112e-01, 1.182e-01, -1.386e-01), r);\n\tr = MulAdd(s1_7, M4(-2.034e-02, 7.350e-02, 1.186e-01, 4.581e-02, 2.846e-02, 5.164e-02, 1.030e-01, 5.490e-02, -4.674e-02, -1.053e-02, -4.939e-02, 8.077e-03, 1.548e-01, 1.337e-01, -3.645e-03, 1.178e-01), r);\n\tr = MulAdd(s1_8, M4(-1.786e-01, 5.271e-02, -1.207e-02, 8.533e-02, -2.222e-01, 1.050e-01, 1.098e-01, -4.937e-02, 9.097e-02, 3.310e-02, -4.412e-03, -1.354e-02, -3.125e-02, 1.033e-01, 6.936e-02, 2.212e-02), r);\n\tr = MulAdd(s2_0, M4(-5.982e-02, 5.552e-02, -9.409e-03, -2.199e-02, 7.282e-02, -6.714e-02, 3.140e-02, 1.189e-01, -1.357e-01, 4.945e-02, -9.183e-02, -4.823e-02, -1.664e-01, -6.090e-02, 1.250e-01, 2.663e-02), r);\n\tr = MulAdd(s2_1, M4(2.770e-02, 4.888e-02, -1.101e-01, 1.018e-02, 1.057e-01, 3.733e-02, -3.370e-02, -9.007e-02, 5.054e-02, 1.355e-01, 5.278e-02, -4.290e-02, -4.388e-02, 1.006e-01, -8.385e-02, -5.278e-02), r);\n\tr = MulAdd(s2_2, M4(4.752e-03, 1.637e-02, 4.455e-02, -8.651e-02, -4.853e-02, 5.247e-04, 4.343e-02, 4.057e-02, 4.907e-02, 4.106e-02, -4.624e-02, -3.159e-02, 2.605e-02, 4.703e-02, 8.334e-03, -1.679e-01), r);\n\tr = MulAdd(s2_3, M4(5.956e-03, -9.383e-02, -3.345e-02, 1.447e-02, 1.451e-01, 1.704e-02, -2.239e-01, 4.357e-02, 7.440e-02, -1.747e-01, 3.916e-02, 5.365e-02, 8.042e-02, 7.271e-02, -2.975e-01, -3.541e-02), r);\n\tr = MulAdd(s2_4, M4(-5.668e-02, -1.859e-01, 1.089e-02, 4.463e-02, 2.718e-02, -3.862e-02, 1.065e-01, -3.353e-02, -5.402e-02, -9.449e-02, -1.545e-01, -1.360e-01, -1.601e-01, -1.531e-01, -1.968e-01, 8.281e-02), r);\n\tr = MulAdd(s2_5, M4(-5.144e-02, -3.722e-02, 8.142e-02, -5.951e-02, 1.182e-01, -9.840e-02, 2.036e-01, 7.334e-02, -1.637e-02, 1.501e-02, 1.250e-01, 1.854e-03, -9.333e-04, 1.256e-02, 1.218e-01, 1.536e-01), r);\n\tr = MulAdd(s2_6, M4(-1.765e-01, 4.622e-02, 2.283e-02, 5.905e-02, -9.045e-02, 1.294e-01, -8.123e-02, -1.271e-01, -2.697e-02, 6.241e-03, -6.811e-02, 4.590e-02, -1.384e-01, 6.209e-02, 3.734e-02, 1.074e-01), r);\n\tr = MulAdd(s2_7, M4(-1.121e-02, 2.714e-03, -1.445e-02, 8.286e-02, -1.551e-01, 1.810e-01, -1.864e-02, -7.961e-02, -2.730e-02, 8.485e-02, 7.550e-02, -1.792e-02, 2.392e-02, -9.604e-02, 1.290e-01, 8.964e-02), r);\n\tr = MulAdd(s2_8, M4(6.928e-02, -4.838e-02, -3.492e-02, 5.158e-02, -7.985e-02, -5.230e-03, -1.658e-01, 1.593e-01, -4.329e-02, 6.040e-03, 8.456e-02, 4.682e-02, 6.816e-02, 4.399e-02, 5.442e-02, -1.964e-02), r);\n\tr = MulAdd(s3_0, M4(5.881e-02, -4.879e-02, 1.846e-01, 1.472e-01, 5.419e-02, 8.747e-02, -6.970e-02, 4.205e-02, -5.599e-02, -7.376e-03, -3.877e-02, 5.823e-02, -9.323e-02, -8.103e-02, -2.349e-03, 8.759e-02), r);\n\tr = MulAdd(s3_1, M4(1.022e-01, 2.743e-01, -2.047e-01, 7.111e-02, 7.135e-02, 1.308e-01, -1.863e-01, -1.110e-01, 1.067e-01, 6.486e-02, 3.243e-02, -6.511e-02, -2.439e-02, 1.668e-04, -1.157e-02, 2.933e-02), r);\n\tr = MulAdd(s3_2, M4(1.244e-01, -7.002e-02, 7.723e-03, -3.796e-02, 8.125e-02, -3.934e-02, -4.218e-02, -1.444e-03, 7.520e-03, -1.074e-01, -1.940e-02, 7.347e-02, -2.173e-02, 5.112e-02, 2.157e-02, -1.640e-01), r);\n\tr = MulAdd(s3_3, M4(6.504e-02, -2.780e-02, -7.144e-02, -3.487e-02, 1.528e-02, 6.679e-02, 2.926e-02, 5.872e-02, 1.227e-01, 6.072e-02, 1.872e-02, 7.009e-02, 3.820e-02, 1.365e-01, 3.983e-02, -2.216e-02), r);\n\tr = MulAdd(s3_4, M4(-1.734e-02, 9.274e-02, -6.396e-02, 5.379e-02, 5.036e-02, -2.001e-01, 2.124e-03, -1.608e-02, -1.849e-01, 7.496e-02, -4.061e-02, -2.447e-03, 2.164e-02, -1.727e-01, -6.730e-02, 1.730e-01), r);\n\tr = MulAdd(s3_5, M4(-2.699e-02, 6.652e-02, 7.248e-02, 2.157e-01, 3.969e-02, -1.370e-01, -5.664e-02, 1.411e-02, 1.697e-02, -6.388e-02, 5.160e-02, 9.844e-03, -1.168e-03, -5.753e-02, -9.196e-02, 1.159e-01), r);\n\tr = MulAdd(s3_6, M4(1.232e-01, -1.785e-01, 1.381e-01, -1.288e-01, -1.078e-01, -2.209e-02, -3.333e-02, -1.648e-01, -5.078e-02, -7.208e-02, 1.227e-01, -9.708e-02, -4.265e-02, 1.253e-02, 2.227e-02, 1.477e-01), r);\n\tr = MulAdd(s3_7, M4(1.667e-01, 1.519e-01, 5.866e-02, 6.226e-02, -4.685e-02, 5.933e-02, 2.744e-02, -1.257e-03, -1.805e-02, 1.363e-01, -1.859e-02, 1.137e-02, 1.244e-01, -4.332e-02, 7.954e-02, -6.113e-02), r);\n\tr = MulAdd(s3_8, M4(-4.157e-02, -2.668e-02, 1.479e-01, 9.121e-02, -7.333e-02, -5.809e-02, 3.353e-02, 8.973e-02, -1.920e-04, -1.736e-02, 3.458e-02, -8.027e-02, 5.179e-02, -7.594e-02, 6.121e-02, -1.449e-01), r);\n\tr = MulAdd(s4_0, M4(2.404e-02, -1.164e-01, -1.138e-02, 5.854e-02, 9.871e-02, -1.055e-01, 2.907e-02, -1.130e-01, 1.670e-03, 3.422e-01, -1.455e-01, 3.089e-03, -8.779e-03, -4.675e-02, 1.635e-02, 5.429e-02), r);\n\tr = MulAdd(s4_1, M4(-4.927e-02, -1.494e-01, -1.363e-01, -8.057e-02, -3.957e-02, 5.070e-03, 9.885e-02, -2.611e-01, 1.661e-02, 7.429e-02, -1.809e-01, -3.009e-02, 1.109e-02, -5.557e-02, 1.494e-01, -1.566e-02), r);\n\tr = MulAdd(s4_2, M4(-1.329e-01, -6.097e-02, 2.384e-01, -4.837e-02, 5.236e-02, 6.857e-02, 4.869e-02, -6.618e-02, -2.154e-01, 9.844e-02, 2.918e-02, 1.900e-02, -1.062e-02, -7.214e-02, 1.180e-01, -6.203e-02), r);\n\tr = MulAdd(s4_3, M4(1.281e-01, -1.015e-02, -8.635e-02, 6.216e-02, 5.106e-02, 4.553e-02, -9.132e-02, -2.484e-02, -7.828e-02, -2.227e-01, -1.006e-01, 1.009e-01, -1.450e-01, -1.877e-01, 1.200e-01, 3.058e-02), r);\n\tr = MulAdd(s4_4, M4(8.169e-03, 9.841e-02, 1.590e-01, -8.570e-02, -4.525e-03, -7.477e-02, -2.096e-01, -1.915e-01, 8.201e-03, -1.837e-01, 2.929e-03, 1.767e-01, -3.800e-01, 4.100e-01, -7.337e-02, -5.512e-01), r);\n\tr = MulAdd(s4_5, M4(-1.698e-02, 9.353e-03, -2.194e-02, 3.709e-02, 1.136e-01, 1.274e-01, -2.037e-02, -7.867e-02, -3.543e-02, -2.823e-02, -1.751e-01, -1.625e-02, -6.710e-01, 2.510e-01, -8.507e-02, 8.663e-02), r);\n\tr = MulAdd(s4_6, M4(-5.057e-02, -1.664e-01, 4.927e-02, 1.236e-01, 6.142e-02, -7.625e-02, -1.189e-01, 4.509e-02, -4.795e-02, 4.793e-02, 2.019e-01, 3.237e-02, 3.277e-01, 9.403e-03, 4.279e-01, -4.445e-01), r);\n\tr = MulAdd(s4_7, M4(5.685e-02, -3.024e-02, 1.198e-01, -1.815e-01, 1.008e-01, -5.949e-02, -1.880e-02, 6.315e-02, 1.006e-01, 1.555e-01, 1.411e-02, 2.371e-02, -1.432e-01, -4.057e-01, 2.001e-01, 4.903e-01), r);\n\tr = MulAdd(s4_8, M4(-1.706e-01, -2.948e-02, 1.877e-02, 6.796e-02, 4.987e-02, 2.595e-02, -6.672e-02, -1.169e-01, 1.050e-01, -2.239e-02, -1.343e-01, 1.567e-01, 1.017e-01, 7.630e-02, 6.812e-02, -2.360e-01), r);\n\tr = MulAdd(s5_0, M4(-1.026e-01, -9.333e-03, -1.186e-02, 1.726e-02, -2.644e-02, 6.857e-02, -9.080e-02, -1.468e-02, -4.155e-02, 9.636e-03, -1.099e-02, -2.825e-02, -1.214e-01, -1.480e-01, 8.756e-02, -6.853e-02), r);\n\tr = MulAdd(s5_1, M4(4.594e-02, 1.473e-02, -3.919e-02, -9.868e-02, 5.624e-02, -9.622e-03, -1.046e-01, 7.397e-03, -4.288e-02, -9.412e-02, -7.071e-02, 6.349e-02, -3.281e-02, 7.772e-02, 1.582e-02, 1.875e-03), r);\n\tr = MulAdd(s5_2, M4(-6.861e-02, -5.088e-04, -2.646e-02, -9.557e-03, -6.081e-03, 7.298e-02, -2.280e-02, 9.319e-04, -7.459e-02, 1.291e-01, -2.097e-01, 1.813e-02, -1.205e-01, -2.198e-02, -3.807e-02, 1.295e-02), r);\n\tr = MulAdd(s5_3, M4(-1.126e-01, 3.457e-02, -1.185e-01, -3.790e-02, -9.439e-02, 2.656e-01, -5.974e-02, -3.799e-02, -2.252e-02, -1.287e-01, -1.324e-01, 1.224e-02, 1.002e-01, 4.122e-02, 7.938e-02, -1.297e-01), r);\n\tr = MulAdd(s5_4, M4(1.739e-01, 2.231e-01, 7.596e-02, 9.382e-02, 1.795e-02, 1.921e-02, -1.567e-01, -1.585e-01, 1.174e-01, -4.394e-02, 2.407e-01, 1.421e-01, 1.677e-01, 1.530e-02, 9.640e-02, -9.999e-02), r);\n\tr = MulAdd(s5_5, M4(1.078e-01, -1.276e-01, 9.488e-03, 9.875e-02, 1.593e-01, -8.027e-02, -1.457e-01, 7.180e-02, 1.792e-01, 1.438e-01, -6.062e-02, -1.219e-02, -4.171e-02, 8.089e-02, -9.086e-02, -8.803e-02), r);\n\tr = MulAdd(s5_6, M4(9.794e-02, -3.144e-02, 4.680e-02, -1.580e-01, -4.249e-03, -1.870e-01, 3.627e-03, 7.838e-03, 1.359e-02, -1.264e-01, 6.932e-02, 7.400e-02, -1.946e-02, 1.593e-02, 4.671e-02, 7.116e-02), r);\n\tr = MulAdd(s5_7, M4(-1.665e-01, 1.720e-02, 5.782e-02, -4.723e-02, 6.617e-02, -5.133e-02, 8.327e-02, 1.317e-01, 6.304e-02, -1.321e-02, 1.514e-01, -1.111e-03, -1.049e-01, 1.437e-01, -6.917e-02, 1.570e-01), r);\n\tr = MulAdd(s5_8, M4(-5.411e-02, -4.024e-02, -6.895e-02, 9.743e-02, 3.381e-02, -5.184e-02, 7.640e-02, -4.415e-02, 1.827e-01, -5.557e-02, -9.430e-02, 9.215e-02, 2.314e-02, -1.233e-01, 9.551e-02, -5.879e-02), r);\n\tr = MulAdd(s6_0, M4(1.019e-01, -1.160e-01, -1.117e-01, 7.118e-02, 2.089e-03, 5.206e-02, 4.623e-02, 3.643e-02, -3.738e-02, 5.755e-04, -1.176e-01, -2.748e-02, 7.664e-02, 5.507e-03, 4.856e-02, -7.044e-02), r);\n\tr = MulAdd(s6_1, M4(-3.747e-02, -3.721e-02, -1.471e-01, -9.818e-02, -1.362e-02, 9.418e-02, -8.926e-02, -1.773e-01, 1.578e-02, 1.980e-01, 1.631e-02, -1.074e-01, -2.902e-02, -5.877e-02, -1.368e-01, -1.013e-01), r);\n\tr = MulAdd(s6_2, M4(9.635e-02, -3.415e-02, -1.096e-02, -2.239e-02, -3.471e-02, -4.742e-02, -2.250e-03, -8.195e-02, 2.635e-01, 1.230e-01, -1.409e-01, -2.675e-02, 8.787e-02, 1.284e-01, 3.220e-02, 1.199e-01), r);\n\tr = MulAdd(s6_3, M4(-7.406e-02, 2.281e-02, -7.353e-02, -2.355e-02, -1.000e-01, -8.840e-02, 6.633e-02, 9.242e-02, -3.978e-02, -9.135e-02, -4.362e-02, 8.695e-02, 1.624e-01, 2.886e-02, 4.969e-02, -2.134e-02), r);\n\tr = MulAdd(s6_4, M4(2.339e-01, 1.537e-01, -8.771e-02, 4.382e-02, 1.293e-01, 7.131e-03, -3.922e-02, 1.542e-01, -9.606e-02, -1.144e-01, 1.106e-01, 1.071e-01, -2.441e-02, -5.037e-02, 9.706e-03, 5.595e-03), r);\n\tr = MulAdd(s6_5, M4(-1.365e-02, -6.977e-02, -1.378e-01, -1.183e-01, -1.450e-01, 4.283e-02, 3.894e-02, 9.293e-04, -9.859e-03, 1.991e-03, 1.413e-01, -1.364e-01, -2.911e-02, -1.346e-01, 2.264e-01, -7.699e-02), r);\n\tr = MulAdd(s6_6, M4(1.082e-01, -3.785e-02, 1.042e-01, 7.449e-02, -4.076e-02, 1.806e-01, -4.700e-02, -3.203e-02, 3.828e-02, -1.632e-01, 6.974e-02, 8.389e-02, 2.752e-02, 7.529e-02, -2.757e-02, 9.510e-03), r);\n\tr = MulAdd(s6_7, M4(1.642e-02, -3.839e-02, -1.549e-01, 1.151e-01, 3.545e-03, -1.838e-01, 6.595e-02, -9.679e-03, -2.515e-02, -1.950e-01, 7.938e-02, 7.677e-03, 2.181e-02, 1.664e-01, -3.621e-03, 3.611e-02), r);\n\tr = MulAdd(s6_8, M4(2.674e-02, -2.492e-02, -5.711e-02, 9.085e-02, 1.396e-01, 2.214e-02, -6.456e-02, 4.379e-02, 2.190e-01, 1.475e-01, -9.394e-02, 8.779e-02, 6.055e-03, -1.129e-01, 3.130e-02, -1.999e-02), r);\n\tr = MulAdd(s7_0, M4(2.205e-02, -2.363e-02, 1.441e-01, 5.374e-02, 7.935e-02, -1.424e-02, -2.127e-01, 1.159e-01, -4.861e-02, 1.047e-01, -9.611e-02, -5.270e-02, -4.079e-01, 6.181e-02, -5.217e-02, 1.953e-01), r);\n\tr = MulAdd(s7_1, M4(-1.238e-01, 7.560e-02, 1.279e-01, 4.693e-02, 5.662e-02, -1.319e-01, 3.728e-02, 1.490e-02, -4.409e-02, -1.999e-02, 2.201e-01, -6.893e-04, 3.261e-01, -1.014e-01, 1.694e-01, -4.550e-02), r);\n\tr = MulAdd(s7_2, M4(1.303e-01, 1.327e-01, 2.736e-02, -4.189e-03, 8.621e-03, -1.371e-01, 2.693e-03, 2.422e-02, -3.366e-01, 2.291e-02, -7.167e-02, -6.592e-02, -1.545e-01, 2.992e-01, -1.505e-01, 2.432e-01), r);\n\tr = MulAdd(s7_3, M4(-1.066e-01, 4.974e-02, 1.635e-02, 1.384e-01, -2.753e-01, 2.443e-02, 1.366e-01, 7.437e-02, -1.866e-02, -2.068e-01, 4.871e-02, -9.708e-05, 1.050e-01, -1.108e-01, 2.510e-01, -7.779e-02), r);\n\tr = MulAdd(s7_4, M4(9.602e-03, 1.465e-01, 2.812e-01, 1.650e-01, 1.805e-01, 9.178e-02, -1.847e-01, 5.806e-02, 8.891e-02, -2.861e-01, -9.379e-02, -2.006e-03, 2.273e-02, -1.977e-01, -2.671e-01, -1.935e-01), r);\n\tr = MulAdd(s7_5, M4(-9.270e-03, -5.858e-03, 8.844e-02, 1.220e-01, -1.117e-01, -3.462e-02, -1.914e-01, -9.941e-02, 4.355e-02, 3.478e-02, 2.279e-02, -8.352e-03, 9.003e-02, -1.728e-01, 1.180e-01, 4.944e-02), r);\n\tr = MulAdd(s7_6, M4(-2.112e-02, 1.466e-01, -3.346e-02, -5.734e-03, 4.897e-02, -1.847e-01, -1.042e-01, 3.695e-02, 9.723e-02, 9.810e-03, 3.768e-02, 5.925e-02, -2.518e-02, 9.795e-02, -1.788e-01, 1.317e-01), r);\n\tr = MulAdd(s7_7, M4(-5.512e-02, -1.030e-01, -1.277e-01, 2.627e-03, 9.803e-03, -1.003e-01, 1.075e-01, -8.339e-02, 4.143e-02, 1.451e-01, 6.543e-02, 2.479e-02, 1.328e-01, 2.868e-01, 5.144e-02, -1.236e-01), r);\n\tr = MulAdd(s7_8, M4(-1.184e-01, -4.673e-02, 7.195e-02, -4.310e-02, 6.142e-02, 9.421e-02, 1.790e-02, -4.130e-02, -4.211e-02, 1.720e-01, -6.732e-02, 1.266e-01, -5.543e-01, -4.747e-02, -1.062e-01, -2.950e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.274e-02, -1.970e-05, 2.618e-02, -7.558e-02 };\n\tr = MulAdd(s0_0, M4(-8.326e-02, -5.179e-02, -1.014e-01, -1.485e-02, 3.131e-02, -1.124e-01, 1.421e-01, 7.704e-02, 1.518e-01, 1.619e-01, -1.141e-01, -4.209e-02, 1.536e-01, -4.357e-02, 1.472e-01, -1.684e-01), r);\n\tr = MulAdd(s0_1, M4(1.771e-02, 4.705e-02, -2.494e-02, 1.011e-01, -8.396e-02, -1.821e-02, 3.958e-02, -3.671e-02, 2.742e-02, 2.128e-01, 5.280e-02, -9.654e-02, 1.749e-01, -3.305e-02, -8.326e-02, -2.381e-02), r);\n\tr = MulAdd(s0_2, M4(1.627e-02, -1.545e-02, 3.017e-02, -9.665e-02, 5.771e-02, 4.235e-02, 1.274e-01, -1.735e-02, 1.687e-02, 4.105e-02, -9.621e-02, -7.352e-02, 1.323e-01, 1.548e-01, -3.420e-01, -1.192e-01), r);\n\tr = MulAdd(s0_3, M4(-6.757e-02, -1.626e-01, -9.287e-03, 2.987e-02, 5.314e-02, 9.609e-02, 2.799e-02, 2.372e-02, 8.674e-02, -8.658e-02, 4.220e-02, 1.121e-02, 1.641e-01, 7.780e-02, -1.461e-01, 4.765e-02), r);\n\tr = MulAdd(s0_4, M4(1.400e-02, 2.520e-02, 1.801e-01, -1.146e-02, 2.241e-02, 9.752e-03, 6.976e-02, 1.272e-02, -1.368e-03, -1.537e-01, 2.347e-01, -8.087e-02, -1.757e-02, -1.548e-01, -3.905e-01, 1.874e-01), r);\n\tr = MulAdd(s0_5, M4(-6.312e-03, 7.002e-02, 1.704e-01, -9.698e-02, 2.582e-02, 9.538e-02, -1.104e-01, 6.735e-02, 1.160e-01, -1.162e-01, 1.503e-01, 1.101e-01, 1.290e-01, -1.252e-01, 2.056e-01, 1.420e-01), r);\n\tr = MulAdd(s0_6, M4(-9.448e-02, -6.469e-02, 2.558e-02, -6.533e-02, -4.299e-02, -6.361e-02, -6.671e-02, 1.207e-01, -3.438e-02, -4.458e-02, 3.696e-02, -9.743e-03, 7.698e-02, 1.019e-01, 1.135e-01, -1.964e-01), r);\n\tr = MulAdd(s0_7, M4(-1.068e-01, 1.702e-01, 1.021e-01, 5.547e-02, -2.979e-02, 1.792e-01, 6.735e-02, -9.586e-02, 3.221e-02, -2.029e-02, 2.762e-02, 1.472e-01, 1.998e-01, 1.276e-01, -3.826e-01, -1.524e-01), r);\n\tr = MulAdd(s0_8, M4(7.166e-02, -1.939e-02, -4.533e-02, 5.115e-02, 3.885e-02, 3.863e-02, 5.534e-02, 6.745e-02, -1.177e-01, 5.674e-02, -1.116e-01, 1.091e-02, 7.271e-02, 1.971e-01, 5.825e-02, 2.648e-02), r);\n\tr = MulAdd(s1_0, M4(-2.985e-02, -6.977e-03, 1.502e-02, -4.237e-02, -6.150e-02, -8.724e-02, 9.823e-02, -7.877e-02, -1.148e-01, -2.574e-02, -7.462e-02, 3.344e-03, -6.090e-02, 5.604e-02, 8.273e-03, -1.186e-02), r);\n\tr = MulAdd(s1_1, M4(-6.173e-02, 1.370e-01, -6.726e-02, -3.736e-02, -1.585e-01, 9.732e-04, 3.423e-02, -2.137e-01, -1.070e-01, -6.263e-02, 1.619e-01, -1.274e-01, 9.716e-02, -8.335e-02, 2.113e-01, -1.214e-01), r);\n\tr = MulAdd(s1_2, M4(-6.260e-02, -5.981e-02, -8.393e-02, 8.858e-02, -8.536e-02, 2.466e-02, -7.342e-02, -1.135e-01, -8.817e-02, -6.417e-02, 2.687e-01, -9.302e-03, 4.948e-02, -2.724e-02, 3.542e-02, -1.847e-01), r);\n\tr = MulAdd(s1_3, M4(-1.947e-01, -5.129e-02, -5.875e-02, -1.294e-01, 7.456e-02, -3.294e-02, -1.164e-01, 3.147e-02, 1.105e-01, -7.800e-03, -1.341e-01, 5.646e-02, 2.305e-02, 6.816e-02, -1.050e-01, -1.981e-02), r);\n\tr = MulAdd(s1_4, M4(-1.374e-01, 1.100e-01, -1.970e-01, -2.040e-01, 1.153e-01, -8.221e-03, 1.182e-02, 7.866e-02, -4.267e-02, -2.319e-02, 1.139e-01, 5.023e-02, 1.279e-02, -2.280e-01, -2.890e-02, 5.584e-02), r);\n\tr = MulAdd(s1_5, M4(5.544e-03, -9.470e-02, 1.354e-02, 7.002e-02, -7.227e-02, 5.340e-04, 1.252e-01, -3.061e-02, -2.357e-02, -3.469e-04, -3.324e-02, 1.115e-01, 1.028e-01, 4.810e-02, -1.727e-02, -3.001e-02), r);\n\tr = MulAdd(s1_6, M4(4.899e-02, 1.318e-01, 1.553e-01, -2.315e-02, -4.646e-03, 1.413e-01, 1.029e-01, -2.475e-02, -1.527e-02, 9.400e-02, 1.119e-03, -2.839e-02, -4.058e-02, -6.777e-02, -6.896e-02, 7.025e-04), r);\n\tr = MulAdd(s1_7, M4(1.038e-02, 7.905e-02, 2.851e-02, -1.023e-01, -2.227e-02, 1.609e-01, -1.733e-01, -1.304e-01, 2.193e-01, 3.562e-02, -5.497e-02, -2.394e-02, -7.459e-03, -1.197e-01, -2.663e-02, -1.888e-02), r);\n\tr = MulAdd(s1_8, M4(6.417e-02, 1.725e-01, 1.523e-01, 2.154e-04, 1.190e-01, -1.166e-01, -7.423e-02, 7.596e-02, 1.757e-02, 1.179e-01, -6.535e-02, -3.646e-02, -1.772e-01, 5.586e-03, -8.030e-02, -2.306e-03), r);\n\tr = MulAdd(s2_0, M4(-9.393e-02, 1.287e-02, -1.328e-01, -6.069e-02, -7.914e-03, -6.174e-03, -2.700e-02, -2.981e-02, -4.530e-03, 1.140e-01, -1.473e-01, 5.666e-03, -3.409e-02, 2.801e-02, -1.334e-02, 2.986e-02), r);\n\tr = MulAdd(s2_1, M4(2.549e-02, 2.743e-02, -2.851e-02, -2.756e-02, 9.961e-02, -3.039e-01, 8.524e-02, -2.354e-01, 3.423e-02, -2.416e-01, -3.891e-02, -2.150e-02, 2.046e-01, -8.982e-02, -1.130e-01, -4.199e-02), r);\n\tr = MulAdd(s2_2, M4(-2.586e-02, -4.030e-02, 3.935e-02, -7.586e-02, 4.642e-02, 9.049e-02, 2.109e-01, 6.298e-02, 4.561e-02, 1.509e-01, -1.819e-02, 1.339e-05, 2.124e-01, -5.311e-02, 7.544e-02, -5.366e-02), r);\n\tr = MulAdd(s2_3, M4(-1.209e-01, -1.920e-02, 9.824e-02, -6.932e-02, -1.006e-01, 7.977e-02, -1.363e-01, -1.108e-01, 1.081e-01, -9.327e-02, 1.160e-01, -1.157e-01, -1.970e-01, 4.551e-02, -1.152e-01, 8.449e-02), r);\n\tr = MulAdd(s2_4, M4(1.356e-01, -8.713e-02, -1.004e-01, 1.772e-01, -9.327e-02, 2.204e-03, 6.566e-02, 1.488e-01, 2.008e-01, -2.937e-04, 1.013e-03, -1.063e-02, -8.310e-02, 9.119e-02, -1.981e-01, 2.115e-01), r);\n\tr = MulAdd(s2_5, M4(-2.908e-02, 5.297e-02, 1.070e-02, -7.295e-02, 4.276e-02, 7.299e-02, -1.499e-01, -6.412e-02, 3.087e-03, -1.347e-01, -3.191e-02, 5.867e-02, -5.096e-02, 1.994e-01, -9.654e-02, -6.233e-02), r);\n\tr = MulAdd(s2_6, M4(-7.457e-02, 1.169e-02, 6.041e-02, 2.287e-02, 3.144e-02, 9.443e-02, 8.522e-02, 2.124e-01, 1.692e-02, 8.102e-02, 5.781e-02, -7.383e-02, 7.701e-03, -1.401e-01, 6.164e-02, 4.776e-02), r);\n\tr = MulAdd(s2_7, M4(2.287e-02, 7.160e-02, 5.061e-02, 2.345e-01, 3.142e-04, 3.323e-02, 4.118e-02, 1.516e-01, -1.404e-01, -5.534e-02, 8.570e-02, -1.280e-01, -1.049e-01, 6.664e-02, -8.468e-03, -4.457e-02), r);\n\tr = MulAdd(s2_8, M4(3.520e-02, -6.025e-02, 8.219e-03, -1.640e-02, 3.324e-02, -8.053e-02, 4.475e-02, -5.586e-02, -7.904e-02, 1.436e-01, -1.856e-01, 1.145e-01, -1.769e-02, -4.285e-02, 1.588e-01, 1.335e-02), r);\n\tr = MulAdd(s3_0, M4(4.944e-02, -1.403e-01, -2.631e-02, 1.373e-02, -5.896e-02, -2.219e-02, 2.393e-02, 1.464e-01, -1.430e-01, -1.396e-01, 9.449e-02, -2.762e-03, 2.572e-02, 1.400e-01, -2.872e-02, -6.719e-02), r);\n\tr = MulAdd(s3_1, M4(-2.288e-01, -6.178e-02, -7.404e-03, 2.681e-01, -2.969e-02, 7.872e-02, -2.298e-01, 1.912e-02, 7.017e-02, -1.880e-01, -2.289e-02, 1.225e-01, 3.652e-03, -2.404e-02, -1.499e-02, -1.863e-02), r);\n\tr = MulAdd(s3_2, M4(1.464e-01, 1.823e-02, 3.211e-02, -9.460e-02, 5.059e-02, 3.725e-02, 9.253e-02, 1.757e-01, -1.211e-02, -8.096e-02, 2.255e-01, -8.469e-02, -1.871e-02, 3.408e-02, -4.358e-02, 9.228e-02), r);\n\tr = MulAdd(s3_3, M4(5.826e-02, -1.529e-01, 2.406e-01, -4.118e-02, 9.928e-03, -2.752e-02, -7.460e-02, -1.104e-01, 2.616e-02, -4.191e-03, 1.889e-01, 2.877e-02, -2.461e-02, 1.909e-01, -1.758e-02, 8.529e-02), r);\n\tr = MulAdd(s3_4, M4(1.911e-01, -1.963e-01, 7.031e-02, -2.712e-02, -6.693e-02, -1.253e-01, -7.022e-02, 1.076e-01, 7.105e-02, -5.231e-02, -1.812e-02, -2.366e-01, -5.431e-02, -3.507e-02, 1.831e-01, 1.688e-01), r);\n\tr = MulAdd(s3_5, M4(1.715e-01, 3.983e-02, 3.387e-02, -7.281e-02, 8.577e-02, 4.920e-02, -4.497e-02, 3.540e-02, -1.968e-01, 1.319e-02, -5.080e-03, 1.160e-01, -1.669e-02, 9.543e-02, 8.210e-02, 3.069e-02), r);\n\tr = MulAdd(s3_6, M4(1.154e-01, 3.190e-01, -1.976e-01, -5.784e-02, 2.538e-04, -1.695e-02, 6.684e-03, -4.450e-02, -1.390e-01, -2.080e-02, 7.287e-03, 2.422e-02, -5.000e-02, 6.889e-03, 1.045e-02, -9.254e-02), r);\n\tr = MulAdd(s3_7, M4(2.238e-01, 2.884e-01, -3.807e-02, -5.091e-02, 6.215e-02, 3.840e-02, 4.476e-02, -6.182e-02, -1.363e-01, -3.109e-02, 5.029e-02, -1.368e-01, -8.338e-02, 8.136e-02, -9.682e-02, 2.684e-02), r);\n\tr = MulAdd(s3_8, M4(3.755e-03, 6.056e-02, 2.195e-01, -1.970e-01, -1.904e-02, 5.641e-02, 2.645e-02, -1.016e-01, -1.372e-01, 6.136e-02, -6.334e-02, 1.308e-02, 3.897e-03, 9.121e-02, -4.263e-02, -3.809e-02), r);\n\tr = MulAdd(s4_0, M4(-3.172e-03, 9.071e-02, -7.858e-02, 3.536e-02, -2.662e-02, -3.669e-02, 1.433e-01, 1.548e-01, -1.451e-02, -5.087e-02, -9.387e-02, -2.118e-02, -8.711e-02, -1.018e-01, -5.008e-02, 4.548e-02), r);\n\tr = MulAdd(s4_1, M4(-1.240e-01, -8.119e-02, -5.809e-02, 8.099e-02, 5.574e-02, 1.394e-01, -1.312e-02, 3.641e-02, -1.113e-01, 1.367e-02, 1.004e-01, 9.562e-02, 3.457e-01, 1.205e-01, -3.849e-02, -1.098e-01), r);\n\tr = MulAdd(s4_2, M4(8.104e-02, -4.261e-03, 1.763e-02, 9.447e-02, -1.450e-01, -1.122e-01, 8.809e-03, 5.113e-02, -1.808e-02, 1.881e-02, -5.663e-02, 1.502e-01, 6.830e-03, 2.102e-01, -1.834e-01, -2.410e-01), r);\n\tr = MulAdd(s4_3, M4(-4.601e-02, 4.841e-02, 6.165e-02, 1.204e-01, 9.738e-03, -6.767e-02, -1.472e-01, -5.010e-02, 9.939e-02, 1.177e-02, 9.922e-02, 8.187e-02, -2.389e-01, 1.037e-02, -1.685e-01, -1.365e-01), r);\n\tr = MulAdd(s4_4, M4(-1.151e-01, 8.682e-02, 1.895e-01, -7.463e-02, 2.587e-01, -1.716e-01, -1.493e-02, 2.002e-02, -4.644e-02, 1.521e-02, -1.502e-01, 4.996e-02, 6.616e-02, 2.235e-01, 1.984e-01, -5.131e-01), r);\n\tr = MulAdd(s4_5, M4(1.073e-01, 2.072e-02, -1.991e-02, 1.435e-02, 1.780e-02, -1.657e-01, -1.046e-01, 1.713e-01, 2.489e-02, 1.301e-01, 1.917e-01, -1.351e-02, 1.654e-01, 3.337e-01, 1.812e-01, 3.168e-01), r);\n\tr = MulAdd(s4_6, M4(8.512e-02, -3.333e-02, 9.591e-02, -5.042e-02, -3.283e-02, -3.229e-02, -8.062e-02, 1.006e-01, 2.752e-02, 7.964e-02, 1.035e-02, -1.490e-01, -3.342e-01, 2.648e-01, 6.379e-01, -3.260e-01), r);\n\tr = MulAdd(s4_7, M4(-9.161e-02, 1.714e-02, 1.680e-01, 4.406e-02, -1.144e-01, 8.663e-02, -9.845e-02, -2.556e-02, 9.220e-02, 1.626e-01, 1.158e-01, 4.907e-02, 6.413e-01, 1.818e-02, -1.944e-01, -1.364e-01), r);\n\tr = MulAdd(s4_8, M4(1.471e-01, -1.823e-01, -4.626e-02, 1.105e-02, -8.338e-02, 2.499e-02, -9.495e-02, 1.042e-02, 1.812e-01, -1.420e-01, 1.377e-01, -2.406e-02, 1.597e-01, -3.467e-02, 2.917e-01, 4.666e-01), r);\n\tr = MulAdd(s5_0, M4(4.290e-02, -1.051e-01, -1.730e-01, -4.856e-02, 7.349e-02, -1.305e-01, -1.831e-01, -7.525e-02, -1.404e-01, -1.015e-01, 4.582e-02, -5.793e-02, 4.695e-02, -2.183e-01, -4.480e-02, -1.574e-02), r);\n\tr = MulAdd(s5_1, M4(-7.326e-02, -1.802e-02, 1.807e-01, 9.089e-02, 4.307e-02, -8.857e-02, -7.099e-03, -1.575e-01, 2.923e-03, 2.159e-02, -6.711e-02, 7.366e-02, 5.115e-02, -1.337e-02, 5.908e-02, 2.605e-02), r);\n\tr = MulAdd(s5_2, M4(1.969e-02, -1.552e-02, 1.921e-02, 5.537e-02, -1.210e-02, 7.316e-02, -1.328e-01, 2.061e-01, -1.096e-01, -6.762e-03, -1.443e-01, -1.107e-01, -2.937e-02, -7.886e-02, -3.149e-02, 1.044e-02), r);\n\tr = MulAdd(s5_3, M4(-2.950e-02, 1.404e-02, -5.290e-02, 5.214e-02, -1.184e-01, 5.320e-03, 1.431e-01, -1.879e-02, 6.318e-02, 2.520e-02, 1.179e-01, 1.001e-01, -6.463e-02, 6.231e-02, 9.036e-02, 5.547e-02), r);\n\tr = MulAdd(s5_4, M4(-5.697e-02, -5.924e-02, -8.632e-02, -1.336e-01, 8.515e-02, 5.283e-02, -4.273e-02, 3.461e-02, -2.676e-02, 3.365e-03, -1.777e-01, 2.445e-03, -2.637e-03, -7.010e-02, 1.057e-01, -3.378e-02), r);\n\tr = MulAdd(s5_5, M4(6.635e-02, 1.693e-01, 1.918e-02, -1.284e-01, -7.682e-02, -1.273e-02, 1.417e-01, 9.456e-02, 5.123e-02, -4.772e-02, -1.610e-01, 1.006e-01, -3.030e-02, -1.897e-02, 1.088e-02, -1.585e-02), r);\n\tr = MulAdd(s5_6, M4(-1.387e-02, 9.614e-02, 1.759e-01, -3.788e-02, 4.005e-03, -9.632e-02, -4.344e-02, 4.098e-02, -8.902e-02, 3.125e-03, 1.147e-01, -1.063e-01, 6.886e-02, 1.318e-01, -2.154e-02, -4.268e-02), r);\n\tr = MulAdd(s5_7, M4(4.173e-02, -6.529e-02, -1.632e-01, 3.183e-03, 4.653e-02, 1.396e-01, 1.584e-01, -7.254e-02, -5.903e-02, -6.068e-02, 2.455e-01, -2.021e-02, -1.261e-02, 9.884e-02, -6.960e-02, -6.464e-02), r);\n\tr = MulAdd(s5_8, M4(1.284e-01, -6.525e-02, -1.950e-02, -1.040e-01, -1.568e-02, 2.538e-02, 9.358e-02, 1.045e-01, -4.221e-02, 1.556e-02, 6.616e-02, 1.142e-02, 1.454e-02, 1.488e-01, -1.081e-01, -1.477e-02), r);\n\tr = MulAdd(s6_0, M4(-6.093e-02, 2.248e-03, -8.130e-02, -1.425e-02, 8.215e-02, -5.382e-02, -1.047e-01, 3.129e-02, -1.344e-01, 6.608e-02, -1.014e-01, 7.938e-02, 1.366e-01, 8.760e-02, 3.761e-02, -1.142e-01), r);\n\tr = MulAdd(s6_1, M4(5.009e-02, 4.462e-02, 2.240e-02, -1.194e-01, 1.243e-02, -3.372e-02, -5.153e-02, -8.741e-02, 1.277e-01, 1.411e-01, 1.695e-01, 5.858e-03, -1.322e-01, -5.106e-02, 1.162e-02, 1.106e-01), r);\n\tr = MulAdd(s6_2, M4(5.891e-02, -5.044e-02, -1.767e-01, -1.131e-01, 2.995e-02, 7.030e-02, 8.358e-02, 1.021e-01, -7.201e-02, -1.833e-01, 1.101e-01, 1.205e-01, 4.529e-02, -5.023e-02, 3.671e-02, -1.023e-01), r);\n\tr = MulAdd(s6_3, M4(-7.851e-02, 8.958e-02, -9.316e-02, 8.568e-02, 8.191e-02, -4.034e-02, 4.920e-02, 1.540e-02, 8.760e-02, -1.744e-01, 3.072e-02, -3.126e-02, 1.852e-02, 1.684e-01, 1.118e-02, 7.336e-02), r);\n\tr = MulAdd(s6_4, M4(5.848e-02, -4.185e-02, -2.660e-01, 3.162e-02, -1.262e-01, -6.983e-02, -2.314e-02, -1.236e-01, 1.154e-01, -1.043e-01, 1.932e-01, -1.070e-03, -1.083e-02, -1.873e-02, -1.542e-02, 1.558e-01), r);\n\tr = MulAdd(s6_5, M4(9.919e-02, -5.183e-02, 1.712e-01, 7.021e-02, 6.103e-02, -5.641e-02, -1.925e-02, 5.430e-02, 2.400e-02, -3.171e-02, -1.422e-01, 9.672e-02, -1.302e-01, 8.982e-02, -5.216e-02, 6.914e-02), r);\n\tr = MulAdd(s6_6, M4(-2.529e-02, -4.269e-02, 3.431e-02, -7.789e-02, -3.025e-02, -6.084e-02, -7.403e-03, 2.723e-02, -2.770e-03, 6.116e-03, -4.762e-02, -8.540e-02, -7.102e-02, -2.686e-01, 5.625e-02, -5.279e-02), r);\n\tr = MulAdd(s6_7, M4(5.902e-02, 1.260e-01, 9.028e-03, 1.185e-02, 1.374e-01, -1.108e-01, 2.352e-02, 1.627e-01, 2.036e-02, 1.147e-01, 1.065e-02, -3.920e-02, -5.666e-02, -6.423e-02, -6.060e-02, -6.509e-02), r);\n\tr = MulAdd(s6_8, M4(1.495e-01, 5.329e-02, -6.012e-02, 1.328e-01, 6.940e-03, 6.332e-02, -7.290e-02, 3.060e-02, -7.503e-02, 4.437e-03, -2.798e-02, 3.905e-02, 4.219e-02, 3.876e-02, -5.012e-02, -1.359e-02), r);\n\tr = MulAdd(s7_0, M4(-1.164e-01, 1.792e-01, 4.010e-02, -3.066e-02, 2.112e-02, 8.116e-02, -1.087e-01, 8.802e-02, -3.026e-02, 3.427e-02, -7.300e-02, -8.114e-02, 2.046e-01, 9.216e-02, -1.241e-01, -2.265e-01), r);\n\tr = MulAdd(s7_1, M4(-1.077e-02, 8.379e-02, 1.208e-01, 1.856e-01, 1.915e-01, 5.306e-02, -8.455e-02, -1.074e-01, 3.913e-02, 2.445e-02, 1.463e-01, -7.386e-02, -1.439e-01, -2.010e-01, 3.727e-02, 8.294e-02), r);\n\tr = MulAdd(s7_2, M4(8.590e-02, -6.305e-02, 1.390e-01, 1.522e-01, -1.772e-01, -3.036e-03, -2.138e-01, -1.135e-02, 3.467e-03, 6.760e-02, -2.061e-01, 4.310e-02, 3.918e-02, 3.694e-03, 2.378e-02, 8.366e-02), r);\n\tr = MulAdd(s7_3, M4(-1.140e-01, 3.584e-02, 7.992e-02, 1.224e-01, -7.709e-02, -1.140e-01, 1.688e-01, 6.161e-02, -8.701e-02, 7.456e-02, 2.540e-02, -1.134e-01, -1.200e-01, 2.231e-01, 2.131e-01, -2.430e-01), r);\n\tr = MulAdd(s7_4, M4(8.158e-02, -4.486e-02, -4.271e-02, -1.219e-02, -1.679e-01, -3.975e-01, -2.590e-01, -1.145e-02, 1.170e-02, 4.893e-02, 2.747e-01, -2.922e-02, -3.748e-01, -5.284e-02, -6.393e-02, -3.812e-02), r);\n\tr = MulAdd(s7_5, M4(1.268e-02, -1.999e-01, -2.030e-01, -7.797e-02, -1.315e-01, -1.759e-01, -6.633e-02, 6.865e-02, 3.407e-02, 5.684e-02, 1.380e-01, 9.850e-02, -2.613e-01, 5.287e-02, -6.630e-02, -2.530e-01), r);\n\tr = MulAdd(s7_6, M4(-3.978e-02, 2.952e-02, 1.307e-02, 1.344e-01, -1.538e-01, 3.273e-02, 1.265e-01, -1.160e-01, 1.004e-01, -6.073e-02, -3.581e-02, 1.277e-01, 6.928e-02, 1.397e-02, -2.060e-01, -3.559e-02), r);\n\tr = MulAdd(s7_7, M4(2.507e-02, -8.799e-02, 1.324e-01, 1.161e-01, -1.029e-02, -1.028e-01, -1.763e-01, 7.636e-02, -5.917e-03, -8.763e-02, -3.848e-02, -3.817e-02, -1.545e-01, -9.856e-02, 1.606e-01, -2.051e-02), r);\n\tr = MulAdd(s7_8, M4(-6.716e-02, 9.246e-02, -6.366e-02, 5.885e-02, -6.213e-03, 6.166e-02, -4.931e-03, 1.102e-02, 3.940e-02, 6.723e-02, -2.166e-02, 1.470e-02, 1.415e-01, 8.718e-02, -1.368e-01, 7.478e-03), r);\n\treturn r;\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 7\n//!DESC conv6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.304e-02, 2.078e-02, -1.771e-02, -7.974e-04 };\n\tr = MulAdd(s0_0, M4(-6.420e-02, -1.408e-02, 6.421e-02, -1.120e-01, 6.585e-02, 1.732e-01, -7.802e-02, 1.447e-01, -3.318e-02, -1.495e-01, 1.499e-01, -1.212e-01, -5.066e-03, 1.468e-01, -4.072e-02, 5.189e-02), r);\n\tr = MulAdd(s0_1, M4(-1.060e-02, 3.925e-02, 6.566e-02, -7.563e-03, -7.597e-02, 1.650e-01, 1.341e-02, -2.018e-01, 1.312e-01, -8.820e-02, -1.806e-01, -2.112e-01, 4.851e-02, -1.760e-02, 5.317e-02, 9.209e-02), r);\n\tr = MulAdd(s0_2, M4(1.814e-02, 1.049e-02, 9.710e-02, -3.510e-02, -6.424e-04, 1.102e-01, 6.702e-02, 7.945e-03, -1.158e-01, 1.386e-01, 1.870e-01, -4.197e-02, 1.954e-03, 7.398e-02, -6.745e-02, -2.169e-02), r);\n\tr = MulAdd(s0_3, M4(-5.532e-02, -9.536e-03, -8.015e-02, 1.653e-01, -7.766e-02, 4.322e-02, -1.833e-02, -1.230e-01, 5.629e-02, 4.360e-02, -1.794e-01, 8.885e-02, -2.327e-02, 1.834e-02, 3.619e-02, 1.028e-01), r);\n\tr = MulAdd(s0_4, M4(7.088e-02, 6.654e-04, -1.787e-01, 2.024e-02, 2.222e-01, 2.436e-01, 8.089e-02, 2.634e-02, 6.307e-02, 8.557e-02, -1.021e-01, 2.179e-01, -2.483e-02, 1.462e-01, -5.920e-02, -1.461e-01), r);\n\tr = MulAdd(s0_5, M4(1.415e-02, -6.086e-02, 1.375e-01, -8.521e-02, -1.530e-01, -3.861e-02, 3.039e-02, -9.823e-02, 4.396e-02, 1.644e-02, -6.289e-02, -1.010e-01, -4.978e-02, -1.729e-01, 3.676e-02, 1.843e-02), r);\n\tr = MulAdd(s0_6, M4(7.050e-02, -3.634e-02, 9.230e-03, 1.214e-01, 2.396e-01, 2.339e-02, 1.581e-02, 3.219e-02, -2.194e-01, 1.217e-01, 1.276e-01, 7.059e-02, -1.698e-02, 1.083e-02, -5.574e-02, 8.680e-03), r);\n\tr = MulAdd(s0_7, M4(7.696e-02, 3.400e-02, -4.987e-02, -2.888e-02, -2.122e-01, -9.791e-02, -9.778e-02, -1.035e-01, -1.108e-01, 2.658e-02, 2.048e-01, 5.571e-02, 1.599e-01, -2.214e-01, 6.763e-02, 5.798e-02), r);\n\tr = MulAdd(s0_8, M4(6.366e-02, -5.842e-03, 6.962e-02, 2.804e-02, 1.311e-01, 2.959e-01, -7.168e-02, -9.768e-03, -4.726e-02, -1.068e-01, 2.900e-02, 8.545e-02, -8.765e-03, -1.213e-01, -2.983e-02, 1.298e-02), r);\n\tr = MulAdd(s1_0, M4(-1.797e-01, 1.253e-01, 2.317e-02, 1.295e-01, 3.940e-04, -3.863e-02, -2.826e-02, -6.212e-02, 2.816e-02, -1.279e-01, 3.808e-02, 7.194e-02, -1.989e-01, 2.267e-02, 5.064e-02, -4.622e-02), r);\n\tr = MulAdd(s1_1, M4(-1.049e-01, -2.455e-02, 1.040e-01, -7.724e-02, 1.184e-01, 8.219e-02, -1.300e-01, 5.256e-02, 1.790e-01, 2.355e-02, -1.684e-01, -3.476e-02, 8.151e-02, -1.007e-01, 2.998e-02, 2.710e-02), r);\n\tr = MulAdd(s1_2, M4(1.268e-01, 3.741e-01, -3.234e-02, 8.925e-03, -7.476e-03, -3.866e-02, 2.604e-02, 2.359e-02, 5.237e-02, -1.980e-02, 4.127e-02, 4.160e-03, 7.368e-02, 9.397e-02, 4.852e-02, 3.071e-02), r);\n\tr = MulAdd(s1_3, M4(8.868e-02, 9.922e-02, -2.954e-02, 5.330e-02, -1.325e-01, -1.474e-01, -8.702e-03, -3.887e-02, 4.102e-02, 9.639e-02, 7.465e-02, -1.872e-01, 3.933e-02, 7.587e-02, -1.168e-01, 2.842e-02), r);\n\tr = MulAdd(s1_4, M4(1.347e-01, 1.460e-01, 1.790e-01, -3.097e-02, 1.784e-01, 1.079e-01, 1.010e-01, 2.803e-02, 1.493e-01, -1.321e-01, -5.476e-02, 1.066e-01, 1.362e-01, 8.967e-02, 1.136e-01, 7.082e-02), r);\n\tr = MulAdd(s1_5, M4(-8.171e-02, -1.510e-01, -2.092e-02, 7.351e-02, -3.666e-02, 9.393e-02, -2.663e-02, 1.266e-01, 8.663e-04, -2.387e-02, 3.578e-02, -1.449e-01, -8.520e-02, 2.782e-01, -1.312e-01, -2.170e-01), r);\n\tr = MulAdd(s1_6, M4(2.298e-01, 2.012e-01, -7.026e-02, 1.761e-01, 8.041e-02, -1.424e-01, 1.218e-01, -1.337e-01, -7.734e-02, 4.400e-02, 8.352e-02, -3.196e-03, -1.645e-01, 1.180e-01, 1.074e-01, -1.028e-01), r);\n\tr = MulAdd(s1_7, M4(-2.012e-02, 1.786e-01, -3.740e-02, -1.502e-01, -2.025e-02, 8.334e-02, -1.648e-01, -4.983e-02, -6.138e-02, -1.115e-01, -4.707e-03, 2.583e-02, 7.925e-02, -5.074e-02, -9.400e-03, 9.414e-02), r);\n\tr = MulAdd(s1_8, M4(-3.650e-02, -1.678e-01, -3.133e-02, -1.101e-01, 1.610e-02, -4.766e-02, 1.251e-02, 7.809e-02, 5.504e-03, 1.289e-01, -2.330e-02, 5.268e-02, 1.673e-02, -3.482e-01, 2.402e-02, 2.704e-01), r);\n\tr = MulAdd(s2_0, M4(-7.827e-02, -3.079e-02, 1.018e-02, 2.897e-03, -3.808e-02, -9.789e-02, 1.090e-02, 1.135e-01, 3.019e-01, 2.101e-01, -1.533e-01, -1.324e-01, -3.141e-02, 9.272e-02, 4.798e-02, -3.225e-02), r);\n\tr = MulAdd(s2_1, M4(-5.913e-02, 4.003e-02, -2.838e-03, -1.787e-02, -1.815e-02, -1.663e-02, -1.608e-02, -5.393e-02, 6.822e-02, 4.517e-02, -5.463e-02, 6.754e-02, -5.816e-02, 4.339e-02, 1.504e-01, 4.613e-02), r);\n\tr = MulAdd(s2_2, M4(-5.325e-03, -1.351e-01, 4.729e-02, -3.259e-02, 4.487e-02, -1.025e-01, 4.505e-02, 1.417e-01, -1.208e-01, 9.062e-02, 9.642e-02, -4.068e-02, -6.048e-02, 4.366e-02, 2.457e-01, 4.117e-02), r);\n\tr = MulAdd(s2_3, M4(-7.820e-02, 1.105e-04, 2.462e-03, -2.818e-02, -4.798e-02, 9.599e-02, 3.060e-02, 1.989e-02, -3.079e-02, 4.186e-02, -9.482e-02, 1.349e-02, -1.401e-01, 2.226e-02, 8.061e-02, -1.628e-02), r);\n\tr = MulAdd(s2_4, M4(5.090e-02, 9.183e-02, 2.343e-02, -1.108e-01, 7.770e-02, -9.551e-03, -7.795e-03, 7.014e-02, 3.370e-04, 2.133e-01, -1.324e-01, 1.027e-01, 1.202e-01, -2.202e-01, 2.004e-01, -3.432e-03), r);\n\tr = MulAdd(s2_5, M4(9.979e-02, -2.255e-01, 3.197e-02, 2.156e-02, 3.894e-02, 5.951e-02, 3.748e-02, -5.444e-02, -2.226e-02, -3.578e-02, -7.463e-02, 6.022e-02, 3.890e-02, 2.723e-01, 1.939e-01, 3.002e-02), r);\n\tr = MulAdd(s2_6, M4(9.141e-02, -7.810e-02, -4.206e-02, -4.264e-03, -2.025e-02, 1.348e-01, 6.310e-02, -1.474e-02, 3.425e-02, -3.399e-01, 5.481e-03, -1.614e-02, -2.261e-02, 3.572e-02, -6.834e-02, -1.787e-02), r);\n\tr = MulAdd(s2_7, M4(-3.352e-02, 1.370e-01, -2.628e-03, -8.065e-02, -8.944e-03, -8.675e-03, -9.380e-02, 6.008e-03, 5.125e-02, 8.410e-02, -5.763e-02, -3.422e-02, -6.367e-03, -6.574e-02, -9.948e-03, 1.323e-01), r);\n\tr = MulAdd(s2_8, M4(-5.706e-02, -1.304e-01, -6.616e-02, -1.274e-01, -1.153e-02, -1.034e-01, 1.546e-02, -3.198e-02, 7.165e-02, 4.668e-02, -5.618e-02, -4.781e-02, 8.207e-02, 8.158e-02, 4.356e-02, 1.783e-01), r);\n\tr = MulAdd(s3_0, M4(4.395e-02, 9.069e-02, -1.479e-01, -1.507e-02, -6.110e-02, 1.443e-02, -3.081e-02, 1.250e-01, -5.002e-02, 1.119e-01, -3.709e-02, -9.127e-02, -5.768e-02, -7.338e-02, 2.705e-02, -1.133e-01), r);\n\tr = MulAdd(s3_1, M4(-8.219e-02, 1.077e-01, 1.075e-01, 6.657e-02, 1.384e-03, 6.907e-02, -2.241e-02, -2.334e-02, -1.096e-01, 6.372e-02, 4.354e-02, 7.508e-02, 2.263e-01, 4.511e-03, -1.133e-01, -2.272e-02), r);\n\tr = MulAdd(s3_2, M4(9.062e-02, -1.120e-03, -4.467e-02, 7.195e-02, -2.795e-01, 2.950e-01, 7.506e-02, 1.363e-01, -4.873e-02, -2.462e-02, 3.791e-02, 9.310e-02, 8.765e-02, 1.191e-01, -8.419e-02, -9.431e-02), r);\n\tr = MulAdd(s3_3, M4(1.655e-02, 5.639e-02, -4.404e-03, -9.981e-02, 1.148e-01, -8.272e-02, -1.390e-01, 5.672e-02, 6.335e-02, 1.684e-01, -7.871e-02, -1.311e-01, 3.674e-02, -1.126e-02, 3.918e-02, 1.493e-02), r);\n\tr = MulAdd(s3_4, M4(-6.878e-02, 4.664e-02, 1.452e-02, 7.693e-02, 3.577e-01, -8.820e-02, -8.393e-02, 4.577e-01, 9.147e-02, 2.705e-02, -9.579e-02, 2.560e-02, 3.955e-01, -3.702e-02, 1.694e-01, -1.545e-01), r);\n\tr = MulAdd(s3_5, M4(-9.865e-03, 5.487e-02, 7.788e-02, 1.573e-01, 3.029e-01, 1.801e-01, -2.430e-02, -2.202e-01, -5.984e-02, -7.608e-02, -8.305e-02, 4.260e-02, 2.726e-01, 1.149e-01, 2.123e-01, -1.036e-01), r);\n\tr = MulAdd(s3_6, M4(3.139e-02, -1.450e-02, -3.944e-02, -7.140e-02, 1.567e-01, -3.974e-02, -5.314e-02, -2.869e-01, -6.654e-03, -5.902e-02, 2.141e-02, 1.691e-02, -6.033e-02, 1.637e-03, 2.190e-02, -7.007e-02), r);\n\tr = MulAdd(s3_7, M4(-4.549e-02, 1.072e-01, 9.260e-02, -9.793e-03, -5.349e-01, -8.617e-03, 2.488e-02, 2.192e-01, -5.906e-02, -9.705e-02, -7.527e-03, 2.429e-02, -1.062e-01, 2.541e-02, -1.134e-01, 9.786e-03), r);\n\tr = MulAdd(s3_8, M4(-2.199e-02, -5.997e-03, 1.201e-01, -2.807e-03, -1.319e-01, 8.213e-01, 2.262e-01, 1.678e-01, 6.571e-02, 6.900e-02, 3.964e-02, 7.886e-02, 8.979e-02, -3.309e-02, 1.736e-02, -6.964e-02), r);\n\tr = MulAdd(s4_0, M4(2.849e-02, 7.353e-02, -3.211e-02, -8.134e-02, 4.359e-02, -1.312e-01, 5.510e-02, 2.191e-02, 7.560e-02, -7.792e-02, 7.575e-03, 9.009e-02, 1.078e-02, -2.289e-01, 9.238e-02, 1.665e-01), r);\n\tr = MulAdd(s4_1, M4(1.843e-02, -9.599e-03, -6.341e-03, 5.533e-02, -5.045e-02, -1.068e-01, -9.065e-02, -4.897e-03, 1.227e-02, -4.836e-02, -5.728e-02, 4.099e-02, 6.644e-02, -9.681e-02, -8.812e-02, -1.834e-01), r);\n\tr = MulAdd(s4_2, M4(-7.421e-02, -5.071e-02, 4.374e-02, -4.480e-02, -1.981e-02, 1.823e-01, 5.533e-02, -2.245e-01, 1.109e-03, -4.267e-02, 2.546e-04, 1.194e-02, 6.800e-02, -4.168e-02, 1.175e-01, -5.438e-02), r);\n\tr = MulAdd(s4_3, M4(-5.560e-02, -3.011e-02, -1.020e-04, -3.312e-02, -1.877e-02, -1.602e-01, 1.846e-02, 5.569e-02, 1.562e-03, 8.524e-02, 9.787e-02, -8.073e-02, 7.374e-02, 1.205e-01, -1.051e-01, 1.893e-01), r);\n\tr = MulAdd(s4_4, M4(5.501e-02, -7.378e-02, -1.440e-02, 9.642e-02, 2.593e-02, 2.482e-02, -1.697e-02, 5.443e-02, -2.308e-01, 1.820e-01, 1.203e-01, 3.431e-02, -8.536e-03, 5.633e-02, -7.276e-02, 2.111e-02), r);\n\tr = MulAdd(s4_5, M4(-5.069e-02, -3.155e-02, 3.042e-03, 1.255e-01, 1.033e-01, 4.543e-02, 4.432e-02, 1.121e-01, 5.034e-04, 1.365e-01, -1.683e-02, -2.542e-01, 1.169e-01, 2.666e-01, 8.883e-02, -6.667e-02), r);\n\tr = MulAdd(s4_6, M4(4.482e-04, 6.168e-02, -2.344e-02, 1.217e-01, -1.227e-01, -6.663e-02, -1.012e-01, -1.716e-02, -9.351e-02, 5.405e-02, -4.279e-02, 2.607e-02, -5.496e-02, 1.796e-02, -5.819e-03, 7.678e-02), r);\n\tr = MulAdd(s4_7, M4(9.358e-02, -3.402e-02, -2.491e-02, -1.184e-01, 8.778e-02, 4.548e-02, -5.376e-02, -1.011e-01, -4.591e-02, 7.198e-02, 3.395e-02, 7.768e-03, -1.642e-01, -9.311e-02, -4.887e-02, -1.391e-03), r);\n\tr = MulAdd(s4_8, M4(-4.708e-02, 3.883e-03, 3.773e-02, -3.976e-02, -9.629e-02, 6.306e-02, 4.530e-02, 1.733e-01, 1.792e-02, 5.135e-02, 5.748e-02, -2.131e-02, -1.650e-02, 1.543e-01, -1.282e-02, 3.647e-02), r);\n\tr = MulAdd(s5_0, M4(9.375e-02, -1.108e-02, -2.394e-02, -7.815e-02, 8.934e-02, -1.021e-01, 1.423e-02, 6.238e-03, 8.501e-02, 3.090e-02, 5.463e-02, -1.356e-01, -2.088e-02, -1.338e-01, 1.054e-01, 8.263e-02), r);\n\tr = MulAdd(s5_1, M4(1.654e-01, 3.170e-02, -9.520e-02, 1.154e-01, -7.324e-02, 8.083e-02, -1.294e-01, 1.087e-01, 1.302e-01, 1.537e-01, -2.128e-01, 1.744e-01, -1.119e-03, -5.597e-02, -1.003e-01, -6.166e-02), r);\n\tr = MulAdd(s5_2, M4(-1.160e-01, 1.011e-01, -2.055e-03, -2.750e-01, 1.208e-01, 1.557e-01, -2.758e-02, 7.742e-02, 2.210e-01, -1.112e-01, -8.638e-02, 1.312e-01, -4.294e-02, 5.259e-02, 4.718e-02, -1.276e-01), r);\n\tr = MulAdd(s5_3, M4(-4.629e-02, -1.478e-01, -3.667e-02, 2.156e-01, -4.458e-02, -1.432e-01, 1.463e-02, 3.319e-02, -2.418e-02, 5.942e-03, -7.920e-02, 6.860e-02, 5.644e-02, 8.405e-02, -1.435e-01, 1.163e-02), r);\n\tr = MulAdd(s5_4, M4(5.875e-02, 2.975e-01, 2.153e-01, -7.192e-03, -7.809e-02, 5.250e-03, 7.988e-02, 5.700e-02, -2.801e-02, 6.919e-02, 4.960e-02, 1.850e-01, 6.536e-02, 2.241e-02, 5.430e-03, 4.156e-03), r);\n\tr = MulAdd(s5_5, M4(-1.805e-02, 3.047e-02, -1.341e-01, 1.430e-01, -5.530e-02, 4.731e-02, 6.101e-02, 1.117e-01, 2.167e-02, 1.384e-01, 1.504e-01, 1.005e-01, 5.895e-03, 1.357e-01, 5.338e-02, -1.135e-01), r);\n\tr = MulAdd(s5_6, M4(3.260e-02, 9.813e-03, 8.360e-02, -4.573e-02, 1.927e-02, 6.459e-02, 4.829e-03, 4.062e-02, 1.382e-01, -7.578e-02, -1.764e-01, -2.434e-02, -6.793e-02, 4.379e-03, -1.479e-02, 3.745e-02), r);\n\tr = MulAdd(s5_7, M4(6.105e-02, 9.865e-02, 1.202e-01, 1.670e-01, -3.379e-02, -1.383e-01, 8.565e-02, -2.551e-02, 1.332e-02, -6.082e-02, 3.290e-02, -1.452e-01, -4.283e-02, -6.428e-02, -5.956e-02, 7.832e-02), r);\n\tr = MulAdd(s5_8, M4(-3.303e-02, 4.059e-03, 1.373e-01, -3.176e-02, -1.815e-02, 6.239e-02, -1.368e-02, 1.090e-01, 1.357e-02, -9.123e-02, -1.375e-01, -6.569e-03, 9.805e-02, 1.702e-01, 6.732e-02, -4.295e-02), r);\n\tr = MulAdd(s6_0, M4(-1.183e-01, -5.906e-04, 1.914e-02, 9.910e-02, 6.500e-02, 5.681e-02, -2.011e-02, -5.261e-02, 1.462e-01, -5.584e-02, -3.575e-02, 1.046e-01, -7.241e-02, -1.346e-01, -2.918e-03, 1.026e-02), r);\n\tr = MulAdd(s6_1, M4(2.892e-02, 1.631e-01, -3.074e-02, -8.735e-02, 8.155e-02, -2.551e-02, -2.036e-01, -1.591e-01, -3.379e-02, 6.374e-02, -1.008e-01, -9.758e-02, 4.372e-02, -3.677e-02, 1.248e-01, 3.071e-02), r);\n\tr = MulAdd(s6_2, M4(8.023e-02, 2.997e-02, 9.962e-03, -4.284e-02, -8.497e-02, -7.355e-02, -1.333e-03, -1.613e-02, 7.704e-02, 1.743e-01, -1.519e-01, -2.440e-02, -2.547e-02, 5.258e-02, 3.014e-02, -5.597e-02), r);\n\tr = MulAdd(s6_3, M4(-2.592e-02, -2.281e-03, 1.595e-02, 2.075e-01, 6.063e-02, 2.393e-02, -1.292e-02, 6.372e-02, -6.155e-03, -1.293e-01, 7.879e-03, 3.101e-01, -2.769e-03, 8.199e-02, 5.373e-02, 2.221e-02), r);\n\tr = MulAdd(s6_4, M4(7.649e-02, 1.889e-03, 1.334e-01, -1.798e-01, -1.333e-01, 2.581e-01, -2.934e-01, -2.100e-01, -1.362e-01, -2.313e-02, -4.790e-02, -1.720e-02, 1.017e-01, 3.175e-02, -5.074e-02, -2.047e-02), r);\n\tr = MulAdd(s6_5, M4(4.797e-02, 9.415e-02, -3.937e-02, -7.297e-02, -7.981e-02, 9.044e-02, 4.661e-02, 2.250e-01, 9.266e-02, -4.083e-02, -9.222e-02, -5.229e-02, -8.320e-02, 1.539e-01, 3.377e-02, -1.144e-02), r);\n\tr = MulAdd(s6_6, M4(7.769e-02, 5.734e-02, 6.139e-02, 6.552e-03, -6.897e-02, 2.645e-01, -5.784e-02, -7.483e-02, 4.382e-02, 6.870e-02, 8.941e-02, 1.264e-01, -8.896e-02, -1.026e-01, 8.097e-02, -9.642e-02), r);\n\tr = MulAdd(s6_7, M4(-2.266e-02, 2.104e-02, -3.382e-02, -3.462e-02, 9.502e-02, -1.571e-01, -1.757e-02, -1.374e-01, -3.187e-01, 7.587e-02, 2.071e-01, 1.266e-02, 4.439e-02, 9.037e-02, 8.120e-03, 1.309e-01), r);\n\tr = MulAdd(s6_8, M4(8.620e-02, -4.691e-02, 2.277e-02, 1.641e-02, 1.618e-01, -2.630e-02, -1.355e-01, 6.158e-02, 5.100e-02, -1.458e-01, 1.792e-01, 5.744e-02, 4.810e-02, -1.794e-01, 1.061e-02, -5.211e-02), r);\n\tr = MulAdd(s7_0, M4(1.782e-01, -1.285e-01, -4.400e-02, 2.687e-02, -3.637e-02, -6.006e-02, 5.586e-04, -2.999e-03, -4.826e-02, -1.120e-01, -1.835e-02, -4.651e-02, -5.114e-02, -3.110e-02, 4.545e-02, -6.177e-02), r);\n\tr = MulAdd(s7_1, M4(1.359e-01, -6.796e-02, 9.988e-02, -1.300e-01, 2.658e-02, 1.018e-02, -2.886e-02, 3.023e-02, 1.529e-01, -2.311e-02, -1.042e-01, -1.049e-01, 5.034e-02, 1.629e-01, 1.013e-01, 1.131e-01), r);\n\tr = MulAdd(s7_2, M4(1.665e-01, -6.278e-02, -1.281e-02, -9.744e-02, -5.604e-02, 4.553e-02, -3.810e-02, -1.705e-01, -4.072e-02, 3.091e-02, -4.414e-02, -1.192e-02, -8.198e-02, 5.345e-02, -4.512e-02, -1.265e-01), r);\n\tr = MulAdd(s7_3, M4(-1.983e-01, -1.369e-01, 2.508e-03, 2.284e-01, 2.661e-02, 1.146e-01, -3.674e-02, -5.617e-02, -1.196e-02, 7.266e-02, 1.285e-01, 6.571e-02, -2.698e-02, -6.623e-02, -5.135e-02, -2.303e-02), r);\n\tr = MulAdd(s7_4, M4(4.264e-02, -2.439e-02, 1.718e-01, 5.959e-02, -2.041e-02, 6.559e-02, -6.376e-02, 5.568e-02, -4.303e-02, -7.649e-02, -1.284e-01, -1.305e-02, 1.496e-01, 4.092e-02, 5.225e-02, 3.690e-02), r);\n\tr = MulAdd(s7_5, M4(-4.911e-02, -1.207e-01, -7.077e-02, -6.792e-02, 1.525e-01, -9.885e-02, 9.327e-02, -2.998e-02, 6.104e-02, -7.417e-03, 9.437e-02, -8.500e-02, -6.068e-03, 1.033e-02, 6.057e-02, 1.605e-02), r);\n\tr = MulAdd(s7_6, M4(3.902e-02, 1.314e-01, 9.531e-02, 1.205e-01, -3.243e-02, -6.969e-02, -1.650e-02, 1.962e-02, -1.102e-01, -6.405e-03, -1.269e-02, -6.945e-02, 6.765e-02, 3.643e-02, -6.798e-02, 5.591e-03), r);\n\tr = MulAdd(s7_7, M4(-5.830e-02, 3.405e-02, 8.745e-02, -5.615e-02, -5.131e-02, 4.023e-03, -1.450e-01, 8.837e-02, -4.772e-02, -9.055e-02, -1.177e-01, 5.408e-02, -1.225e-01, 1.633e-01, -3.784e-02, 6.974e-02), r);\n\tr = MulAdd(s7_8, M4(1.450e-01, 3.805e-02, -8.117e-02, 1.247e-01, -2.925e-03, 5.569e-02, -1.040e-02, 1.200e-01, -1.094e-01, 2.800e-03, 7.729e-02, -1.525e-02, -1.471e-02, 1.847e-02, -1.044e-01, 2.992e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.601e-02, 2.785e-02, 1.684e-04, -7.248e-02 };\n\tr = MulAdd(s0_0, M4(7.999e-02, -1.620e-03, 2.616e-03, 8.012e-02, -7.071e-02, -9.453e-02, -1.397e-01, 3.745e-02, 5.401e-02, -9.012e-02, -4.641e-02, -3.268e-02, -2.616e-02, 1.138e-02, -3.360e-02, 2.415e-02), r);\n\tr = MulAdd(s0_1, M4(-1.609e-01, -1.081e-01, 1.692e-02, 5.023e-03, -1.996e-01, 2.482e-02, -3.838e-02, 8.200e-02, -1.350e-02, -8.538e-02, -2.835e-02, -2.008e-01, 1.623e-02, 9.711e-02, 7.625e-02, -2.950e-03), r);\n\tr = MulAdd(s0_2, M4(-7.191e-02, 1.884e-02, 1.333e-01, -2.174e-02, -1.457e-01, 3.607e-02, 2.046e-02, -2.411e-02, 1.312e-01, 1.607e-02, 5.230e-02, -9.962e-02, -1.802e-01, 7.325e-02, -1.963e-02, -1.184e-01), r);\n\tr = MulAdd(s0_3, M4(-8.421e-02, 8.179e-02, -3.473e-02, 1.207e-01, 1.599e-01, -6.990e-02, 9.169e-02, 1.210e-01, -1.189e-01, -1.529e-01, 9.446e-02, 1.413e-01, 5.838e-02, -6.803e-02, -7.839e-02, 7.547e-02), r);\n\tr = MulAdd(s0_4, M4(-3.628e-02, -8.204e-03, 2.381e-02, 1.897e-01, -1.094e-01, 3.305e-03, -1.440e-01, 2.822e-01, 4.703e-01, -4.863e-02, -4.803e-02, -7.620e-03, -4.566e-02, 6.281e-03, 4.042e-02, -4.703e-03), r);\n\tr = MulAdd(s0_5, M4(-1.283e-01, -3.658e-02, -1.392e-02, -2.535e-02, 4.043e-02, -1.622e-01, -2.733e-02, -8.380e-02, 3.171e-02, -2.183e-01, -8.571e-02, 1.247e-01, 1.086e-01, -1.587e-01, -1.130e-01, -4.680e-02), r);\n\tr = MulAdd(s0_6, M4(-1.463e-02, 4.385e-03, 6.179e-03, -5.464e-02, 6.592e-02, 8.451e-02, -1.945e-02, 5.451e-02, -2.327e-01, -3.674e-03, 7.472e-02, 1.153e-01, -1.051e-02, 1.979e-02, 9.898e-02, 7.161e-02), r);\n\tr = MulAdd(s0_7, M4(5.507e-02, -5.591e-02, -2.784e-02, -5.306e-02, -4.063e-02, 3.657e-01, -1.359e-01, 1.332e-01, 4.139e-02, -8.004e-02, -9.011e-03, -1.151e-01, 8.198e-02, -1.104e-01, 9.509e-03, -1.679e-02), r);\n\tr = MulAdd(s0_8, M4(8.065e-02, 1.347e-02, 3.794e-02, -5.829e-02, 1.720e-01, 4.496e-02, 3.187e-02, 1.112e-01, -4.350e-02, 8.388e-02, 1.034e-01, -1.892e-02, -2.137e-01, -5.312e-02, 1.345e-01, -3.885e-02), r);\n\tr = MulAdd(s1_0, M4(-8.546e-02, -7.385e-02, -1.005e-01, -9.412e-02, -6.122e-02, 3.501e-02, -2.484e-02, -6.044e-02, -1.262e-03, -4.078e-02, 8.990e-03, 3.442e-02, 1.667e-01, -5.292e-02, -8.578e-02, -1.017e-01), r);\n\tr = MulAdd(s1_1, M4(-1.591e-01, 8.649e-02, 1.936e-01, -1.675e-01, 5.445e-02, -5.177e-02, 1.256e-01, -3.050e-02, 1.217e-02, -5.676e-02, 1.510e-01, -5.381e-02, 7.436e-03, 1.418e-02, -3.656e-03, -5.954e-02), r);\n\tr = MulAdd(s1_2, M4(-1.587e-01, -4.549e-02, -1.032e-01, -2.612e-02, -9.453e-03, 4.694e-02, -3.459e-02, -2.469e-02, 7.204e-02, -2.343e-02, -3.167e-02, 4.009e-02, 4.523e-02, 1.167e-01, -2.459e-02, -6.980e-02), r);\n\tr = MulAdd(s1_3, M4(5.893e-02, -1.072e-01, -2.244e-01, 9.065e-02, 8.110e-02, -2.783e-02, 1.611e-01, -1.078e-01, 9.832e-02, -1.784e-01, -3.238e-02, 3.152e-03, 2.439e-01, 3.922e-04, 2.059e-02, 1.391e-01), r);\n\tr = MulAdd(s1_4, M4(-1.186e-01, 1.060e-01, 2.611e-01, 2.536e-02, 3.097e-02, 2.366e-02, -3.775e-02, -3.918e-02, -3.971e-02, -4.988e-02, -6.630e-02, 1.792e-01, 4.950e-02, 2.763e-01, -1.243e-01, -6.249e-02), r);\n\tr = MulAdd(s1_5, M4(-5.325e-02, -7.006e-02, 1.882e-01, 3.596e-02, 7.997e-02, -8.836e-02, -1.889e-01, 4.237e-02, -2.434e-01, 7.031e-02, -1.146e-02, -1.163e-02, 2.505e-01, -4.368e-02, -2.249e-01, -1.309e-01), r);\n\tr = MulAdd(s1_6, M4(8.930e-02, -3.275e-02, 9.076e-02, -9.582e-02, 3.224e-02, -1.109e-01, 8.775e-02, -3.492e-02, -3.691e-03, -1.507e-01, 1.391e-01, 1.705e-02, 5.119e-02, 1.323e-01, -8.738e-02, 3.481e-02), r);\n\tr = MulAdd(s1_7, M4(-7.445e-02, -9.360e-02, 1.949e-01, -2.640e-01, 7.285e-02, 6.967e-02, 1.469e-01, -1.146e-01, 7.315e-05, 6.037e-02, 3.447e-02, -2.215e-03, -9.679e-02, -1.745e-01, 3.088e-02, 1.227e-02), r);\n\tr = MulAdd(s1_8, M4(-2.196e-02, -2.083e-01, 6.747e-02, -5.662e-02, -8.165e-02, 5.244e-02, 1.161e-01, -2.417e-02, 2.538e-02, -1.887e-02, -5.177e-02, -8.775e-02, -1.634e-01, 2.158e-01, 1.430e-01, -1.185e-01), r);\n\tr = MulAdd(s2_0, M4(1.416e-02, -2.729e-03, -6.712e-03, 1.679e-01, 9.746e-02, -3.308e-02, 3.119e-02, -2.757e-02, 1.507e-03, -1.257e-01, -1.163e-02, 1.702e-02, 2.982e-02, 5.174e-02, -5.909e-02, -9.968e-03), r);\n\tr = MulAdd(s2_1, M4(-6.318e-02, 6.115e-02, -1.590e-01, -1.880e-01, 2.189e-01, -5.003e-02, 5.183e-02, -7.485e-02, 7.363e-02, 1.857e-02, 1.678e-01, -1.711e-02, 1.165e-01, 3.703e-02, -2.523e-01, -2.358e-02), r);\n\tr = MulAdd(s2_2, M4(3.419e-02, 3.932e-02, 7.664e-02, 1.920e-01, -5.878e-02, -4.309e-02, -7.888e-02, -1.210e-02, 9.921e-02, -7.974e-02, -7.892e-02, -1.368e-01, -1.106e-01, 6.524e-02, 4.530e-02, 3.731e-02), r);\n\tr = MulAdd(s2_3, M4(1.122e-01, 4.290e-02, 6.229e-03, -5.814e-02, -8.716e-02, -3.329e-02, -3.989e-02, 5.030e-02, -8.717e-02, 7.386e-02, 1.774e-02, -1.027e-01, 1.304e-02, 6.706e-02, -3.998e-03, -1.373e-02), r);\n\tr = MulAdd(s2_4, M4(7.571e-02, 9.108e-02, 1.515e-01, -3.229e-02, 1.363e-01, -6.226e-02, 8.916e-02, -3.928e-02, -2.106e-03, 3.530e-02, -4.458e-02, -9.075e-03, 4.753e-02, -6.515e-02, 1.183e-01, 3.796e-02), r);\n\tr = MulAdd(s2_5, M4(-6.416e-02, -7.677e-02, 1.812e-01, 4.696e-02, -7.591e-02, 6.010e-02, 2.132e-03, -8.509e-02, -2.236e-02, 5.432e-02, 3.393e-02, 1.354e-01, 1.391e-01, 2.640e-02, -1.029e-02, 4.559e-02), r);\n\tr = MulAdd(s2_6, M4(2.302e-02, 1.361e-01, 1.578e-01, 8.174e-03, 3.473e-02, 7.651e-02, -1.799e-02, 6.476e-02, 4.752e-03, -4.013e-02, 1.431e-01, -7.007e-02, -9.436e-02, 1.011e-01, -4.980e-02, -1.059e-02), r);\n\tr = MulAdd(s2_7, M4(9.090e-02, 5.888e-02, 9.000e-02, -3.742e-02, 5.067e-02, 2.931e-03, 5.460e-02, 4.517e-03, -1.107e-02, 1.579e-01, 3.834e-02, 9.015e-02, 7.654e-02, -8.582e-04, -3.566e-02, -3.666e-02), r);\n\tr = MulAdd(s2_8, M4(-1.902e-01, -6.281e-02, 1.274e-01, 1.703e-02, -6.806e-02, 8.779e-02, -1.885e-01, 3.918e-02, 8.967e-02, -8.760e-02, 9.290e-02, -2.748e-02, 6.798e-03, 1.434e-02, -1.477e-02, -1.213e-01), r);\n\tr = MulAdd(s3_0, M4(-4.167e-02, -6.296e-02, 1.694e-01, -1.619e-01, -5.172e-02, 3.976e-02, 1.511e-02, -6.793e-02, -4.164e-02, 7.498e-02, -3.502e-02, 1.430e-01, 2.042e-02, 1.119e-03, -5.693e-02, 4.382e-02), r);\n\tr = MulAdd(s3_1, M4(-2.133e-02, -8.130e-02, -1.180e-01, -1.165e-01, -3.496e-01, 1.115e-01, 1.996e-01, 4.404e-02, 8.458e-02, 7.163e-02, 1.094e-02, 4.361e-02, -4.895e-03, 3.641e-02, -3.300e-02, -8.676e-03), r);\n\tr = MulAdd(s3_2, M4(-4.757e-02, 5.155e-02, -3.629e-03, 5.710e-02, 2.900e-01, -7.436e-02, 2.527e-01, -1.666e-01, 2.816e-02, -6.282e-02, -7.414e-02, 9.729e-02, -1.450e-01, -2.380e-02, 6.081e-02, 7.674e-02), r);\n\tr = MulAdd(s3_3, M4(-5.416e-02, 4.368e-02, -9.068e-02, -9.732e-02, -4.119e-01, 6.885e-02, -9.626e-02, -2.044e-02, 2.765e-02, -9.241e-04, -3.130e-03, 1.777e-02, -2.878e-02, -7.006e-02, 6.017e-02, -8.017e-02), r);\n\tr = MulAdd(s3_4, M4(6.011e-02, 2.476e-02, -7.871e-03, -3.067e-02, -1.666e-01, 2.471e-01, -1.384e-01, -1.670e-01, -2.046e-02, 4.711e-04, -4.056e-02, -1.043e-02, -6.928e-02, -1.034e-01, 1.530e-01, -1.081e-01), r);\n\tr = MulAdd(s3_5, M4(-6.437e-02, -2.059e-03, 1.335e-01, -9.360e-02, -6.898e-01, 3.446e-01, 8.080e-02, -1.326e-01, 2.047e-01, -1.710e-01, 1.809e-02, 8.229e-02, 1.048e-01, -2.134e-02, 2.202e-01, -5.295e-03), r);\n\tr = MulAdd(s3_6, M4(-8.757e-02, 3.572e-02, -1.984e-02, 3.324e-02, 1.682e-01, -9.900e-02, -3.028e-02, -6.892e-02, -1.136e-01, 1.243e-02, -1.335e-01, 9.428e-02, -4.810e-02, -5.990e-02, 2.229e-02, -9.369e-02), r);\n\tr = MulAdd(s3_7, M4(1.028e-03, -9.446e-02, -1.577e-01, 3.588e-02, -3.531e-01, 1.472e-01, -3.714e-01, -7.450e-03, 5.036e-02, 7.070e-02, -2.362e-03, -8.038e-02, -3.325e-03, 1.388e-03, -1.553e-02, 9.550e-02), r);\n\tr = MulAdd(s3_8, M4(-8.163e-02, -1.237e-01, -7.440e-02, -4.663e-02, -5.525e-01, 2.020e-01, -9.522e-02, -5.103e-02, 6.793e-02, -4.918e-02, 7.321e-02, 2.461e-02, 1.587e-01, 1.852e-02, -3.698e-02, -6.401e-03), r);\n\tr = MulAdd(s4_0, M4(7.860e-03, 3.884e-02, 5.483e-03, 5.174e-03, -3.893e-02, -6.120e-02, 1.887e-03, 1.142e-01, 3.721e-02, -1.634e-01, 1.052e-01, -4.523e-02, 8.545e-02, -6.886e-02, 1.515e-01, -1.370e-01), r);\n\tr = MulAdd(s4_1, M4(9.963e-02, -9.395e-02, 1.836e-02, -3.191e-02, -1.768e-01, 3.712e-02, -4.629e-02, 6.314e-02, 2.586e-02, -9.573e-02, 1.088e-01, 1.255e-01, 1.712e-01, 1.425e-01, 1.209e-01, 2.170e-02), r);\n\tr = MulAdd(s4_2, M4(-2.128e-02, 5.724e-02, 1.005e-02, 5.762e-02, -1.540e-01, 5.492e-02, -4.018e-02, 1.316e-01, 6.741e-02, 7.806e-02, -6.408e-02, 4.491e-02, 5.640e-02, 5.481e-02, 4.540e-02, -5.886e-02), r);\n\tr = MulAdd(s4_3, M4(-1.801e-02, -1.554e-01, 1.069e-01, 1.312e-01, -1.322e-02, -1.649e-01, -1.783e-01, -5.706e-02, 1.447e-01, 5.617e-02, -8.603e-03, 8.138e-02, -1.422e-01, 7.130e-02, 3.093e-02, -1.061e-01), r);\n\tr = MulAdd(s4_4, M4(5.832e-02, -2.313e-02, -7.741e-03, -1.037e-01, 1.611e-01, 1.601e-01, -1.605e-01, 6.488e-02, 4.587e-02, 7.448e-02, 4.622e-05, 1.951e-01, 1.929e-01, 2.702e-01, 3.835e-02, 1.293e-01), r);\n\tr = MulAdd(s4_5, M4(-3.686e-02, 2.329e-02, -1.811e-02, -2.372e-02, 3.541e-02, -5.643e-02, -7.094e-02, 7.574e-02, -6.198e-02, -5.071e-02, 1.720e-02, 1.528e-01, -5.980e-02, 1.051e-01, -1.504e-01, 9.834e-02), r);\n\tr = MulAdd(s4_6, M4(-3.692e-02, 1.263e-02, 3.742e-02, -1.246e-01, -1.047e-01, 2.976e-02, 1.274e-01, 6.227e-02, 1.215e-01, 1.237e-01, -9.143e-02, 1.762e-02, -6.094e-02, -2.488e-03, 9.006e-02, -1.239e-02), r);\n\tr = MulAdd(s4_7, M4(4.501e-02, 7.817e-02, 1.274e-02, -3.442e-02, 1.184e-01, 5.412e-02, -6.588e-03, -9.060e-02, -2.775e-02, 9.915e-02, -2.931e-02, -1.805e-02, -9.197e-02, -4.583e-02, 5.251e-02, 8.606e-02), r);\n\tr = MulAdd(s4_8, M4(-6.336e-03, 7.080e-02, 7.193e-02, -8.116e-02, -6.069e-02, 7.960e-02, 4.466e-02, -1.234e-01, 3.669e-02, -1.267e-01, 4.789e-02, 9.546e-02, -1.251e-01, 1.596e-01, -5.935e-03, -1.457e-02), r);\n\tr = MulAdd(s5_0, M4(-1.131e-01, 2.031e-03, -2.170e-01, 9.359e-02, 7.448e-02, -6.712e-02, 2.227e-02, -8.335e-03, -1.201e-01, 2.041e-03, -7.554e-02, 3.226e-02, 4.219e-02, 1.368e-02, -7.555e-02, -3.879e-02), r);\n\tr = MulAdd(s5_1, M4(-8.146e-02, -4.065e-02, -6.824e-02, 2.306e-01, 9.171e-02, -9.450e-02, -9.963e-02, -1.612e-01, -1.035e-01, -2.014e-01, -5.606e-02, -1.103e-01, 6.326e-02, 8.356e-02, -1.101e-01, -3.499e-02), r);\n\tr = MulAdd(s5_2, M4(-6.828e-02, 4.353e-02, 4.308e-02, -5.173e-02, -7.365e-02, 1.957e-04, -9.301e-02, 3.017e-02, 9.228e-02, -1.073e-01, 9.554e-02, -6.032e-03, 4.334e-02, 8.985e-02, 1.425e-02, 3.057e-03), r);\n\tr = MulAdd(s5_3, M4(-1.820e-01, -3.243e-01, 4.594e-01, 2.017e-01, 2.362e-02, 1.450e-01, -3.296e-02, -1.968e-01, 4.588e-02, -1.155e-01, 1.189e-01, -8.530e-02, -2.630e-02, -9.324e-02, 1.008e-01, 7.584e-02), r);\n\tr = MulAdd(s5_4, M4(2.302e-01, -1.174e-01, 3.527e-03, 1.558e-02, 9.033e-02, 9.558e-02, 8.247e-02, -1.767e-01, -3.612e-02, 8.947e-02, -5.578e-03, -2.079e-01, -1.438e-01, 6.322e-02, 3.686e-02, 5.993e-03), r);\n\tr = MulAdd(s5_5, M4(9.295e-02, 1.557e-01, 6.068e-02, 2.223e-02, -1.008e-02, -1.868e-02, 1.444e-01, -6.666e-03, 2.329e-02, 2.803e-02, 5.175e-02, 2.903e-02, -3.607e-02, 3.059e-02, 5.683e-02, 5.372e-02), r);\n\tr = MulAdd(s5_6, M4(2.503e-01, 4.217e-03, 2.266e-02, -9.277e-02, -8.317e-02, 5.995e-02, 6.297e-03, 2.473e-02, -1.268e-01, 1.181e-01, 1.405e-01, -1.039e-01, -6.847e-03, -4.872e-02, -9.843e-02, 8.868e-02), r);\n\tr = MulAdd(s5_7, M4(1.709e-01, -5.937e-02, 4.764e-01, 3.679e-02, 7.183e-02, -1.304e-01, 1.472e-03, 1.494e-02, 2.637e-02, -5.433e-02, -3.825e-03, -8.601e-02, -5.135e-02, 1.348e-01, 1.563e-01, -7.091e-02), r);\n\tr = MulAdd(s5_8, M4(-9.578e-02, 3.730e-02, 1.338e-02, -3.171e-03, -9.686e-02, 2.701e-02, 2.475e-02, 5.352e-02, 1.130e-01, 1.037e-01, -7.294e-02, 1.155e-01, -1.874e-02, -4.895e-02, -8.928e-02, 4.230e-02), r);\n\tr = MulAdd(s6_0, M4(4.921e-02, -2.864e-02, 9.962e-02, -1.616e-01, -4.359e-02, 3.743e-02, -8.323e-02, 8.412e-04, -3.199e-02, 2.923e-02, -7.784e-02, -1.324e-01, 1.150e-01, 6.624e-02, 2.112e-02, -9.146e-03), r);\n\tr = MulAdd(s6_1, M4(2.497e-02, 8.942e-02, 4.448e-03, -4.835e-02, -1.912e-01, 1.012e-02, 1.050e-01, -1.184e-01, 2.731e-03, 1.496e-02, -1.011e-02, -8.049e-02, 3.949e-02, 1.983e-02, -6.960e-02, 3.667e-02), r);\n\tr = MulAdd(s6_2, M4(-1.267e-01, 1.528e-01, 1.032e-01, -1.747e-02, -2.512e-01, 6.264e-02, 4.478e-02, -7.420e-02, 1.971e-02, -1.210e-02, 6.577e-02, -1.485e-01, 8.669e-02, 2.808e-02, -2.027e-01, -9.546e-03), r);\n\tr = MulAdd(s6_3, M4(-5.131e-02, 2.670e-02, -7.644e-02, 3.217e-02, -1.250e-01, -2.789e-02, 1.098e-01, 1.061e-01, 5.801e-02, -1.449e-01, -1.785e-01, 6.115e-03, -1.588e-01, 5.088e-02, 9.708e-02, 8.950e-02), r);\n\tr = MulAdd(s6_4, M4(6.558e-02, -8.009e-02, -1.274e-01, -9.429e-02, -1.121e-01, -1.436e-01, 1.718e-01, 1.111e-01, -9.270e-02, -9.540e-02, 7.031e-02, -1.759e-01, 5.097e-02, -1.088e-01, 4.010e-02, 4.602e-02), r);\n\tr = MulAdd(s6_5, M4(-2.712e-02, -1.345e-01, 2.232e-02, 2.669e-02, 3.503e-01, -5.749e-03, 8.629e-02, 4.931e-02, 7.628e-03, 1.580e-01, 1.701e-01, -8.106e-02, 1.535e-02, -5.827e-02, 1.061e-01, -7.086e-02), r);\n\tr = MulAdd(s6_6, M4(1.574e-02, 2.954e-02, -3.332e-03, -9.029e-02, -6.109e-02, -3.010e-02, -7.304e-02, 8.621e-02, 2.478e-02, -1.433e-02, -9.557e-02, 1.353e-01, 1.971e-01, -6.685e-02, 4.943e-02, 1.762e-01), r);\n\tr = MulAdd(s6_7, M4(1.119e-01, 3.119e-02, 9.649e-02, -1.372e-01, 9.541e-02, 1.287e-01, -1.209e-01, -1.336e-01, -5.958e-02, -9.256e-02, -4.365e-02, 9.556e-02, 1.614e-02, 4.822e-02, 7.347e-02, 1.568e-01), r);\n\tr = MulAdd(s6_8, M4(-5.852e-03, -5.064e-02, 1.870e-01, -5.772e-02, -1.432e-01, 3.698e-03, 1.276e-01, -1.390e-01, -6.877e-03, -3.936e-02, 8.278e-02, 3.605e-03, -3.207e-02, -1.130e-01, -1.071e-01, 2.186e-02), r);\n\tr = MulAdd(s7_0, M4(1.382e-01, 1.066e-02, 1.112e-01, -2.032e-01, 1.821e-02, 6.938e-04, 5.903e-02, 1.176e-02, -1.381e-01, -7.692e-02, -1.254e-01, -6.592e-03, 1.094e-02, -2.691e-02, -3.247e-02, -1.120e-01), r);\n\tr = MulAdd(s7_1, M4(3.450e-01, -9.358e-02, -7.091e-03, -1.259e-02, 1.100e-01, -2.740e-02, -6.952e-02, -4.548e-02, 7.692e-02, -4.172e-02, -3.717e-02, -8.551e-02, 3.655e-02, 5.882e-02, -9.729e-03, -3.302e-02), r);\n\tr = MulAdd(s7_2, M4(6.189e-03, 4.251e-02, -6.474e-02, 2.334e-02, -4.998e-02, 6.903e-02, 7.593e-02, -1.005e-01, 1.668e-03, 1.395e-02, -9.261e-02, -3.769e-02, -5.664e-02, 4.900e-02, -1.949e-02, -3.177e-02), r);\n\tr = MulAdd(s7_3, M4(4.695e-02, 8.681e-02, 7.893e-02, 4.932e-02, -4.687e-02, 8.626e-03, -2.098e-03, -1.537e-01, 5.335e-02, -7.062e-02, 1.179e-01, 9.341e-03, -3.518e-02, 1.097e-01, -1.079e-01, -9.958e-02), r);\n\tr = MulAdd(s7_4, M4(2.912e-01, 8.360e-02, 3.996e-02, -1.659e-01, -7.513e-02, -2.769e-02, 5.027e-02, 2.613e-01, 1.307e-01, 4.392e-03, -4.296e-02, 1.132e-01, 6.710e-02, -1.828e-01, 3.217e-02, -5.482e-02), r);\n\tr = MulAdd(s7_5, M4(1.063e-01, -6.933e-03, -1.220e-01, 2.037e-01, 1.207e-01, -2.337e-02, -2.119e-02, 4.235e-02, -9.710e-02, 7.359e-03, 1.674e-01, 1.008e-01, 1.264e-01, 6.562e-02, 2.172e-02, -2.759e-02), r);\n\tr = MulAdd(s7_6, M4(-2.009e-01, -3.470e-02, 4.713e-02, -2.868e-01, -1.296e-02, 5.734e-02, 8.538e-02, -8.481e-03, -1.077e-01, -3.312e-02, 4.065e-02, 1.199e-01, -3.355e-02, 4.408e-02, 6.869e-02, 7.852e-02), r);\n\tr = MulAdd(s7_7, M4(-1.488e-02, -9.504e-02, -5.499e-02, -1.036e-01, -8.776e-02, 5.539e-02, -7.250e-02, 8.325e-02, 4.185e-02, 8.300e-02, 3.218e-02, 2.410e-01, 1.812e-01, -3.772e-02, -7.048e-02, -2.958e-02), r);\n\tr = MulAdd(s7_8, M4(5.901e-02, 5.462e-02, 1.877e-02, 1.296e-02, -3.299e-04, 4.156e-02, -1.330e-01, -1.156e-01, 9.044e-03, 1.101e-02, -1.311e-01, -1.336e-01, 1.801e-01, 7.683e-02, -1.230e-01, 2.210e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -6.495e-04, -3.848e-02, 1.047e-02, 2.015e-02 };\n\tr = MulAdd(s0_0, M4(-1.511e-01, 6.291e-02, -4.318e-02, 4.797e-03, 7.914e-02, 5.092e-02, -2.714e-02, 3.254e-03, -6.260e-02, 1.222e-01, 7.157e-02, -5.641e-02, -1.388e-01, -7.529e-02, 1.045e-01, -1.507e-03), r);\n\tr = MulAdd(s0_1, M4(8.468e-02, 2.170e-01, 1.647e-01, 8.689e-03, 9.086e-02, 1.816e-01, 9.235e-03, 7.385e-02, -1.458e-02, -2.316e-02, 2.719e-02, 8.236e-02, -4.202e-02, 6.168e-02, -6.452e-02, 4.523e-03), r);\n\tr = MulAdd(s0_2, M4(-9.053e-02, 5.428e-02, -7.223e-02, -1.326e-01, -1.022e-01, 1.603e-01, 1.160e-01, -1.811e-01, -1.709e-01, -1.445e-01, 2.000e-01, 9.591e-02, 1.133e-01, 6.793e-02, 5.220e-02, 3.587e-02), r);\n\tr = MulAdd(s0_3, M4(1.357e-01, -4.035e-02, -7.542e-02, -1.238e-01, -1.316e-01, -1.207e-02, -1.653e-02, -6.519e-02, 5.752e-02, -1.875e-01, 4.793e-02, -9.157e-02, -2.477e-02, -1.841e-02, -2.652e-02, 1.056e-01), r);\n\tr = MulAdd(s0_4, M4(1.456e-01, 1.258e-02, -7.971e-02, -4.622e-03, 2.229e-01, 9.433e-02, 1.444e-01, 1.025e-01, 9.825e-02, 2.889e-02, -4.671e-02, 2.770e-02, 7.783e-02, -9.808e-02, -6.966e-02, 8.734e-02), r);\n\tr = MulAdd(s0_5, M4(-1.451e-01, -4.161e-02, -7.557e-02, -4.700e-02, -2.362e-01, -4.973e-02, 1.858e-03, -4.063e-02, 2.257e-01, -2.317e-02, -1.216e-01, 9.751e-02, 4.200e-02, 2.132e-02, -4.459e-02, 7.851e-03), r);\n\tr = MulAdd(s0_6, M4(-5.414e-03, 6.019e-02, -3.878e-02, 1.580e-01, 4.609e-01, -1.148e-01, 4.239e-02, 7.252e-02, 1.666e-02, 6.721e-02, 1.354e-01, 4.201e-02, 5.184e-02, 2.784e-02, -2.395e-02, 4.399e-02), r);\n\tr = MulAdd(s0_7, M4(9.582e-02, -1.141e-01, 1.359e-01, 1.092e-01, 2.539e-02, -1.223e-01, -8.734e-03, -2.589e-01, -2.802e-02, 2.185e-01, 2.233e-02, -1.094e-01, 6.573e-02, 1.053e-01, 6.570e-02, -4.853e-02), r);\n\tr = MulAdd(s0_8, M4(-4.426e-02, -2.154e-02, 3.121e-03, -3.852e-02, -5.457e-02, 1.207e-03, 1.977e-01, -7.048e-02, 9.662e-02, 9.187e-02, -3.300e-02, -9.639e-02, -5.657e-02, -1.752e-02, 1.350e-01, -2.091e-02), r);\n\tr = MulAdd(s1_0, M4(-1.525e-01, 1.467e-01, -1.882e-01, -9.671e-02, -8.896e-02, -4.265e-02, -3.285e-02, 1.379e-02, 7.665e-02, 5.953e-03, 6.120e-02, -6.980e-02, -7.102e-02, -2.386e-02, -2.886e-02, -1.403e-01), r);\n\tr = MulAdd(s1_1, M4(1.566e-01, 1.743e-01, 6.076e-02, -8.198e-02, -2.121e-02, -1.783e-02, 8.034e-02, -4.218e-03, 4.352e-02, 2.568e-02, -2.166e-01, -7.963e-03, 6.286e-02, 1.651e-01, -1.422e-01, -8.033e-02), r);\n\tr = MulAdd(s1_2, M4(-1.433e-01, 1.123e-01, 1.040e-01, -1.238e-01, -3.072e-02, -1.398e-02, 1.370e-01, -9.717e-02, 6.875e-03, -1.036e-01, 1.524e-01, 6.576e-02, 3.454e-02, 3.696e-02, -6.506e-02, 9.144e-03), r);\n\tr = MulAdd(s1_3, M4(3.416e-02, 1.681e-01, 4.973e-03, -1.784e-02, 1.433e-01, -3.586e-02, -6.171e-02, 5.305e-02, 1.669e-01, -6.170e-02, 2.149e-01, -1.927e-02, 1.244e-02, -5.511e-02, -2.138e-01, -5.206e-02), r);\n\tr = MulAdd(s1_4, M4(4.795e-02, 5.456e-02, -8.320e-02, 2.625e-02, -4.835e-03, 5.101e-02, 1.760e-01, -4.447e-02, 3.431e-02, 4.533e-02, -7.802e-02, -6.762e-02, 1.274e-01, -3.599e-04, -2.310e-01, 5.342e-02), r);\n\tr = MulAdd(s1_5, M4(-9.627e-02, 1.068e-02, -1.488e-01, 8.066e-02, 5.780e-02, 8.952e-02, -1.372e-01, -1.067e-02, 2.786e-02, 6.846e-02, -9.092e-02, -1.315e-01, 1.724e-01, 1.178e-02, -1.968e-01, 6.223e-02), r);\n\tr = MulAdd(s1_6, M4(-1.254e-01, -1.597e-02, -9.678e-02, 4.643e-03, -1.380e-02, -4.123e-02, -4.689e-02, 4.474e-02, 2.131e-02, 1.007e-01, 1.677e-02, 4.482e-02, 1.120e-01, 5.918e-02, -1.698e-01, -6.037e-02), r);\n\tr = MulAdd(s1_7, M4(8.032e-02, 1.316e-02, 1.546e-01, 1.446e-03, -1.208e-01, -1.349e-02, -1.146e-01, 5.901e-02, 3.247e-02, 2.274e-01, 1.425e-02, -5.002e-02, -6.477e-02, 3.140e-01, 2.705e-01, 3.952e-02), r);\n\tr = MulAdd(s1_8, M4(1.709e-02, 5.680e-02, 5.499e-02, -1.227e-02, 5.584e-02, -2.021e-02, -5.704e-02, 1.497e-01, -1.477e-01, -1.815e-02, 5.863e-02, 3.848e-02, -1.686e-01, -4.496e-03, -2.946e-02, 3.112e-01), r);\n\tr = MulAdd(s2_0, M4(-5.505e-02, -8.205e-02, -9.848e-03, 4.871e-02, -6.139e-02, 7.057e-02, -9.198e-02, -4.509e-02, 1.479e-01, 7.591e-02, 3.395e-02, 7.347e-02, -4.939e-02, 5.614e-02, 8.329e-02, -1.111e-01), r);\n\tr = MulAdd(s2_1, M4(-1.309e-02, 3.023e-02, 5.362e-02, -5.243e-04, 6.147e-03, 1.381e-01, 7.541e-02, 6.699e-03, -3.014e-02, 9.167e-02, 5.641e-02, 5.618e-02, 3.285e-02, 6.500e-02, -9.409e-02, -1.153e-01), r);\n\tr = MulAdd(s2_2, M4(-8.556e-02, 2.180e-02, -1.062e-01, -4.832e-02, 4.095e-02, 4.088e-02, 5.495e-02, -3.893e-02, 7.819e-02, 7.236e-03, -2.708e-01, 3.541e-02, 1.015e-02, 1.035e-01, 4.725e-02, -1.274e-01), r);\n\tr = MulAdd(s2_3, M4(-1.225e-02, -4.637e-02, -1.343e-01, 5.954e-04, -5.979e-02, -5.189e-02, -3.641e-02, -1.261e-02, 7.673e-02, 2.366e-02, -5.871e-02, 1.500e-01, 1.868e-03, 7.390e-02, 3.925e-02, -2.019e-01), r);\n\tr = MulAdd(s2_4, M4(6.534e-02, -3.131e-02, -3.835e-02, 1.024e-01, 2.550e-02, -2.252e-01, -1.511e-01, 3.961e-02, 6.134e-02, -8.533e-02, 2.423e-01, 3.648e-03, 3.086e-02, 2.955e-01, 4.568e-02, -1.388e-01), r);\n\tr = MulAdd(s2_5, M4(9.419e-02, 6.610e-02, -9.343e-03, 1.570e-01, 1.163e-01, -6.123e-02, 1.423e-01, -2.549e-02, -3.459e-02, -4.878e-02, 1.442e-01, 2.279e-02, 2.613e-03, 8.214e-02, -9.397e-02, -3.986e-01), r);\n\tr = MulAdd(s2_6, M4(7.450e-02, -3.281e-02, 6.155e-02, 1.158e-01, 4.246e-02, -4.966e-03, -4.972e-02, 1.587e-01, 3.878e-02, -1.533e-02, -7.299e-02, 9.350e-02, -1.141e-01, 2.466e-02, 4.101e-02, -5.603e-02), r);\n\tr = MulAdd(s2_7, M4(1.040e-01, -1.231e-03, 3.496e-02, 1.730e-01, -4.405e-02, -6.203e-02, -1.186e-01, -2.842e-02, 2.053e-01, -7.939e-03, 1.057e-02, 4.796e-02, -1.228e-01, 8.233e-02, 3.011e-03, 5.167e-02), r);\n\tr = MulAdd(s2_8, M4(3.120e-03, -1.315e-01, -3.174e-02, -3.502e-03, -2.544e-02, -1.667e-01, 9.923e-02, 5.171e-02, -4.162e-02, 4.400e-02, -1.520e-03, -1.266e-01, 3.305e-02, -4.683e-02, -6.430e-02, -2.213e-01), r);\n\tr = MulAdd(s3_0, M4(1.791e-01, 8.767e-02, -1.035e-01, -5.746e-02, 1.932e-01, 1.365e-01, -1.041e-01, -1.190e-01, -5.021e-02, -9.372e-02, 1.518e-01, -8.073e-03, 8.354e-02, 1.443e-02, -3.073e-02, 4.436e-04), r);\n\tr = MulAdd(s3_1, M4(1.749e-01, 1.111e-01, -9.453e-02, 6.243e-03, -8.159e-02, 1.294e-01, -2.138e-01, -2.047e-01, -6.285e-02, -1.430e-01, 1.827e-01, -1.306e-01, 1.589e-01, -1.626e-01, 9.451e-02, 1.382e-01), r);\n\tr = MulAdd(s3_2, M4(1.246e-01, 3.725e-02, -2.836e-02, -7.300e-02, -4.093e-01, -2.419e-01, 8.773e-02, -2.995e-01, 1.032e-02, 6.422e-02, -1.224e-01, -3.108e-02, 5.925e-02, -2.313e-02, 7.758e-02, 2.530e-02), r);\n\tr = MulAdd(s3_3, M4(2.111e-02, 1.246e-01, 9.110e-02, -5.404e-03, -2.955e-01, -1.573e-01, -3.030e-02, -1.409e-01, -1.599e-01, 3.792e-02, 1.226e-01, -4.558e-02, 3.511e-02, -4.587e-02, -1.939e-02, 2.639e-02), r);\n\tr = MulAdd(s3_4, M4(7.720e-02, 2.084e-02, 8.917e-02, 1.445e-02, 4.673e-01, 2.153e-01, 1.753e-01, -2.931e-01, 6.767e-02, 6.694e-02, 1.008e-01, 2.111e-02, 7.684e-02, -4.892e-02, 1.308e-01, 1.391e-01), r);\n\tr = MulAdd(s3_5, M4(-1.162e-02, -7.123e-03, -1.536e-02, -1.242e-01, -5.258e-01, 2.133e-01, 9.476e-02, -2.865e-01, -1.337e-01, 6.592e-02, 1.598e-01, 5.042e-02, 1.470e-01, -2.654e-01, -7.099e-02, 6.915e-02), r);\n\tr = MulAdd(s3_6, M4(2.419e-02, 1.382e-02, 1.608e-01, -4.062e-02, 3.155e-01, -8.156e-02, 1.359e-01, -2.261e-02, -8.081e-02, -1.597e-02, -8.854e-02, -8.236e-02, 3.261e-02, 1.229e-02, -1.461e-02, -8.523e-03), r);\n\tr = MulAdd(s3_7, M4(-6.260e-02, 3.053e-02, -1.282e-01, 3.057e-02, 3.895e-01, 7.897e-02, -1.159e-01, -3.442e-02, 1.594e-01, -2.652e-02, 1.039e-01, -5.180e-02, -7.941e-04, 2.955e-02, 8.395e-02, 3.421e-01), r);\n\tr = MulAdd(s3_8, M4(-1.731e-01, -4.189e-02, 4.495e-02, -4.503e-02, -6.134e-03, 1.436e-01, -2.564e-02, -5.602e-01, 3.015e-02, 3.406e-02, -1.213e-01, -8.228e-02, 9.247e-02, -1.539e-01, -7.955e-02, 1.516e-01), r);\n\tr = MulAdd(s4_0, M4(-5.650e-02, -1.684e-01, 4.824e-02, 1.060e-01, 3.347e-02, 2.775e-03, 1.072e-01, 4.624e-02, 2.303e-02, 3.802e-02, 1.435e-02, 2.096e-02, -2.840e-02, -6.238e-02, -6.434e-02, -8.860e-03), r);\n\tr = MulAdd(s4_1, M4(4.276e-02, -2.617e-03, -1.503e-02, 8.597e-02, 2.836e-02, -3.066e-02, 1.198e-01, 1.579e-01, 7.397e-02, 3.772e-02, -1.218e-02, -4.990e-02, 2.318e-01, 1.096e-02, -2.781e-02, 8.578e-02), r);\n\tr = MulAdd(s4_2, M4(5.226e-03, -2.910e-02, 7.799e-03, 5.320e-02, 6.157e-02, -6.031e-02, 2.537e-01, 2.064e-02, -1.604e-02, -5.053e-02, 3.938e-02, 4.349e-02, 9.145e-02, 5.544e-02, -1.214e-01, 1.123e-01), r);\n\tr = MulAdd(s4_3, M4(-6.617e-02, -9.174e-02, -9.785e-02, -1.779e-02, -6.589e-03, -9.741e-03, 4.801e-03, -2.262e-02, 1.830e-01, 1.203e-01, -6.135e-02, 1.599e-03, 2.769e-01, -7.650e-02, -2.721e-02, -5.785e-02), r);\n\tr = MulAdd(s4_4, M4(2.603e-02, 1.843e-02, -4.574e-02, 1.129e-01, -2.174e-02, 9.855e-02, 9.537e-03, 1.742e-01, -8.932e-02, -7.845e-02, 6.868e-02, -3.103e-02, 2.979e-02, 1.596e-01, 1.723e-01, -1.214e-01), r);\n\tr = MulAdd(s4_5, M4(4.591e-02, 1.412e-02, 1.122e-01, 4.529e-02, 4.654e-02, -8.696e-02, -1.899e-01, -1.347e-01, 1.343e-01, -2.258e-02, -1.283e-01, 1.312e-01, 5.779e-02, -5.568e-02, -2.225e-01, -1.675e-01), r);\n\tr = MulAdd(s4_6, M4(5.667e-02, 5.176e-02, -6.943e-02, -6.500e-02, 1.061e-01, -8.167e-02, -9.606e-02, 1.021e-01, -1.497e-02, 5.960e-02, 1.350e-02, -9.938e-02, 1.023e-01, -2.373e-02, -6.568e-02, 1.451e-01), r);\n\tr = MulAdd(s4_7, M4(1.299e-01, -7.720e-03, 7.879e-02, 4.712e-02, 1.314e-01, 1.196e-03, -1.748e-02, -1.014e-01, 3.276e-02, -4.651e-02, -5.061e-02, -5.489e-02, 8.441e-02, 1.724e-02, -1.137e-01, -6.442e-02), r);\n\tr = MulAdd(s4_8, M4(5.671e-02, 4.130e-02, 6.218e-02, -2.464e-02, -6.562e-02, -4.754e-02, 4.596e-02, -6.954e-02, 3.372e-02, -1.087e-01, 1.087e-01, 1.233e-01, 1.730e-01, -1.170e-01, 6.077e-02, -1.734e-01), r);\n\tr = MulAdd(s5_0, M4(4.058e-02, -1.032e-01, 2.975e-01, -6.645e-03, -3.148e-02, 1.065e-01, -3.101e-02, -1.095e-02, -4.078e-02, 3.742e-02, 3.146e-02, 1.516e-02, -8.725e-02, 5.109e-02, 8.896e-02, -1.127e-02), r);\n\tr = MulAdd(s5_1, M4(-1.999e-01, 2.049e-01, -7.905e-02, 1.578e-01, -3.631e-03, 3.358e-02, -6.989e-02, 2.414e-02, 1.249e-01, 6.485e-02, -8.061e-02, -9.337e-02, -1.166e-01, 1.110e-03, -1.951e-02, 3.245e-03), r);\n\tr = MulAdd(s5_2, M4(-2.752e-01, -5.711e-02, 5.200e-02, -1.697e-01, -1.621e-02, 1.003e-01, -5.501e-02, -9.240e-02, -3.534e-01, -9.596e-02, -3.872e-03, -1.727e-01, 4.123e-02, 1.767e-02, -5.866e-02, 7.239e-02), r);\n\tr = MulAdd(s5_3, M4(1.877e-01, 1.430e-01, 1.501e-01, -1.773e-01, 5.531e-02, 2.192e-02, 2.932e-02, -1.146e-01, 9.320e-02, -3.421e-02, 1.994e-02, 3.734e-02, -2.613e-02, -4.764e-02, 7.802e-02, -2.090e-02), r);\n\tr = MulAdd(s5_4, M4(-1.952e-01, 3.962e-02, -3.031e-01, -2.278e-01, -4.020e-02, 4.581e-02, 1.124e-02, 4.139e-02, 1.343e-01, 4.335e-02, 3.382e-03, 1.526e-01, -1.343e-01, -1.078e-01, 1.909e-01, 5.437e-02), r);\n\tr = MulAdd(s5_5, M4(-1.601e-01, 1.749e-02, 8.916e-02, -8.576e-02, 4.084e-02, -8.203e-03, -5.241e-02, -3.195e-02, 1.517e-01, -9.517e-02, -1.732e-02, 1.465e-03, 1.045e-01, -4.128e-02, 3.516e-02, 5.704e-03), r);\n\tr = MulAdd(s5_6, M4(1.836e-01, -1.892e-01, -1.645e-02, -2.708e-01, -2.982e-02, 1.039e-01, -5.709e-02, 6.855e-03, 1.518e-01, -2.389e-01, 7.761e-02, 1.398e-01, 3.486e-02, 8.888e-03, -4.878e-03, 7.297e-02), r);\n\tr = MulAdd(s5_7, M4(-3.935e-01, -3.510e-01, -1.532e-02, -3.040e-01, 1.982e-01, -7.558e-02, 4.646e-03, -4.347e-02, -2.576e-02, -2.793e-02, -1.142e-01, 1.072e-02, -1.271e-01, 2.376e-02, -2.919e-02, 1.754e-01), r);\n\tr = MulAdd(s5_8, M4(-1.721e-01, 9.197e-02, 4.387e-02, -4.041e-02, -4.891e-02, 1.678e-01, 9.660e-02, 2.045e-02, -8.280e-02, 1.116e-02, 5.892e-02, -1.442e-02, 4.817e-02, -5.926e-02, -4.628e-02, -1.710e-01), r);\n\tr = MulAdd(s6_0, M4(4.076e-02, 1.745e-02, -4.922e-02, -5.246e-03, -5.877e-02, -1.241e-01, -9.602e-02, 1.698e-01, -3.920e-02, 5.714e-02, -9.600e-03, -2.555e-02, 5.121e-02, -9.031e-02, 4.058e-02, 4.738e-02), r);\n\tr = MulAdd(s6_1, M4(6.272e-02, 3.070e-02, -1.185e-02, 7.250e-02, -2.702e-01, -3.660e-02, 2.202e-01, 4.325e-02, 2.098e-02, -6.503e-02, -1.124e-01, 2.763e-02, -8.107e-02, 9.856e-03, -1.116e-01, 5.262e-02), r);\n\tr = MulAdd(s6_2, M4(2.319e-02, 8.325e-03, 4.507e-02, 4.918e-02, 3.141e-02, -4.429e-02, -1.345e-01, -7.937e-02, 8.226e-02, 2.372e-02, -6.866e-02, 1.314e-02, -6.150e-02, 5.907e-02, 2.756e-03, 1.298e-01), r);\n\tr = MulAdd(s6_3, M4(-7.615e-02, 1.892e-02, 9.781e-03, 9.630e-02, 1.171e-03, 1.199e-01, -2.645e-01, 9.165e-02, 6.175e-02, 1.452e-02, -1.812e-01, -3.817e-02, -1.544e-01, -7.561e-02, 2.979e-02, 7.044e-02), r);\n\tr = MulAdd(s6_4, M4(-1.160e-01, -1.998e-01, 3.482e-03, -1.134e-01, 8.170e-02, -1.845e-01, 1.016e-01, -2.109e-03, 4.811e-02, 8.274e-02, 1.119e-01, 8.181e-02, 3.400e-02, 9.369e-02, 1.696e-01, -3.128e-02), r);\n\tr = MulAdd(s6_5, M4(1.119e-01, 5.919e-02, -1.984e-01, -2.139e-01, 1.810e-01, -8.087e-02, 2.033e-01, 6.013e-02, 8.696e-02, 1.415e-01, -1.027e-01, -2.925e-02, 1.681e-01, -1.126e-01, 8.547e-02, 4.805e-02), r);\n\tr = MulAdd(s6_6, M4(1.747e-01, 3.428e-02, 7.244e-03, -5.035e-02, 8.084e-02, 6.784e-02, -1.583e-01, 7.107e-02, -4.842e-02, 1.178e-03, -5.551e-02, 8.604e-02, -8.817e-02, 6.024e-02, -1.826e-02, 7.900e-02), r);\n\tr = MulAdd(s6_7, M4(1.577e-02, -1.867e-01, -1.363e-01, -1.760e-01, 2.417e-01, -5.955e-02, -2.692e-02, 3.311e-02, -9.635e-03, -3.663e-02, -9.130e-02, -8.953e-02, 5.533e-02, 6.716e-02, 2.129e-01, 4.762e-02), r);\n\tr = MulAdd(s6_8, M4(-1.495e-01, -7.207e-02, 1.694e-01, 2.312e-02, 4.239e-02, -3.068e-01, 1.220e-01, -1.715e-02, 1.505e-03, 5.579e-02, 4.435e-02, 4.457e-02, 8.412e-02, 7.905e-02, -1.441e-01, -6.379e-02), r);\n\tr = MulAdd(s7_0, M4(1.149e-01, 4.722e-02, 2.133e-02, 1.424e-02, 1.859e-04, -5.039e-02, 8.952e-02, -5.078e-02, 5.445e-02, -6.543e-02, 1.279e-03, -1.213e-02, 3.382e-02, 7.118e-02, 1.440e-01, -8.769e-02), r);\n\tr = MulAdd(s7_1, M4(3.510e-02, 1.894e-01, 2.843e-02, 2.383e-01, 1.534e-02, -4.750e-02, 5.790e-02, 1.143e-01, 1.421e-01, 8.004e-02, -1.165e-01, 3.773e-02, 7.492e-02, -9.116e-03, -6.398e-02, 4.644e-02), r);\n\tr = MulAdd(s7_2, M4(-8.713e-02, -7.557e-02, 1.099e-01, 2.060e-01, 1.509e-01, 2.796e-02, 1.096e-01, 1.008e-02, -4.055e-03, -1.191e-01, 6.065e-02, -5.197e-02, -2.927e-02, 1.449e-02, 2.451e-02, 1.353e-02), r);\n\tr = MulAdd(s7_3, M4(-1.485e-01, -4.476e-03, -1.168e-02, -3.132e-02, -2.069e-02, 9.355e-02, -5.367e-02, -2.892e-02, 4.750e-02, -6.783e-03, 3.523e-02, 6.289e-02, -2.410e-02, -9.802e-04, -1.093e-01, -1.362e-01), r);\n\tr = MulAdd(s7_4, M4(-3.914e-02, 7.821e-02, -7.844e-02, -1.809e-01, -5.085e-02, -4.832e-02, -1.591e-01, 4.669e-02, -4.627e-02, -5.537e-03, 1.355e-01, -7.233e-02, 4.326e-02, 9.683e-02, -2.192e-02, -9.251e-02), r);\n\tr = MulAdd(s7_5, M4(-1.110e-01, 6.131e-02, -1.894e-01, -3.019e-01, -2.254e-01, -6.784e-03, 1.363e-01, 6.567e-02, 8.258e-02, -1.173e-01, 1.777e-02, -1.289e-02, -4.105e-02, -1.242e-01, 3.670e-02, 2.759e-03), r);\n\tr = MulAdd(s7_6, M4(8.101e-02, 1.016e-01, 1.437e-02, 8.071e-02, 4.204e-02, 6.510e-02, 7.350e-02, 6.318e-02, -1.183e-02, -8.410e-02, 8.633e-02, 1.911e-02, 2.520e-02, 1.194e-01, 6.253e-02, 7.282e-02), r);\n\tr = MulAdd(s7_7, M4(-1.113e-02, -1.675e-01, -5.954e-02, 6.680e-02, 6.762e-02, 3.308e-02, -1.173e-01, 3.375e-02, 1.235e-01, -1.005e-01, 3.653e-02, 1.881e-02, -2.134e-01, -8.765e-02, -1.791e-02, 3.922e-02), r);\n\tr = MulAdd(s7_8, M4(-1.919e-01, 1.342e-01, 1.823e-01, 9.905e-02, -5.655e-02, 1.171e-02, 2.232e-01, -2.340e-01, -1.177e-01, 3.993e-04, 7.806e-03, -1.813e-01, -4.798e-02, -2.597e-01, -6.103e-02, 1.486e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.686e-02, -1.796e-02, -1.824e-02, -3.183e-02 };\n\tr = MulAdd(s0_0, M4(-3.159e-02, -6.705e-02, 1.406e-02, 8.403e-02, -3.497e-03, 5.376e-02, 7.178e-02, -3.957e-02, -3.736e-02, 3.345e-02, 2.996e-02, -1.880e-01, 4.603e-02, 1.004e-01, -8.805e-02, 3.509e-02), r);\n\tr = MulAdd(s0_1, M4(-5.347e-02, -5.708e-02, -1.278e-01, 2.970e-02, -3.279e-02, 1.100e-01, -2.325e-02, 1.411e-01, 4.305e-02, 3.041e-02, -2.008e-02, -4.983e-02, -2.828e-02, 4.511e-02, 1.111e-01, 4.899e-02), r);\n\tr = MulAdd(s0_2, M4(5.854e-05, -5.055e-02, 1.885e-02, 4.298e-02, -1.795e-02, 8.471e-02, 2.948e-03, 7.111e-02, -1.569e-01, -6.827e-02, -4.522e-02, 2.649e-03, -5.399e-03, -2.765e-02, -1.723e-02, -1.115e-02), r);\n\tr = MulAdd(s0_3, M4(2.824e-02, -1.127e-01, 2.280e-02, -3.797e-02, -1.024e-02, -2.479e-02, 5.625e-02, 2.136e-01, 4.185e-01, -3.488e-02, -3.187e-01, -1.726e-01, 1.141e-01, -9.213e-02, 1.387e-02, -4.887e-02), r);\n\tr = MulAdd(s0_4, M4(3.438e-02, -6.397e-02, -5.044e-02, -1.373e-01, 3.172e-02, -1.102e-01, 2.146e-01, 9.459e-03, 9.015e-02, 4.659e-02, -1.226e-01, -5.517e-02, 5.106e-02, 5.617e-02, -1.364e-02, -1.413e-03), r);\n\tr = MulAdd(s0_5, M4(-4.550e-02, -3.588e-02, 7.481e-02, 4.303e-02, 5.176e-02, 2.496e-01, 1.190e-01, -2.034e-02, -6.099e-02, 1.139e-01, -3.098e-02, -1.325e-02, -3.811e-02, 3.667e-03, 9.665e-02, -1.792e-01), r);\n\tr = MulAdd(s0_6, M4(2.194e-02, -5.856e-02, 1.208e-01, 1.092e-02, -5.891e-02, 9.008e-02, -5.660e-02, 9.063e-02, -6.928e-02, -6.372e-02, 1.417e-01, 1.157e-01, -3.776e-02, 7.638e-02, 8.563e-02, -7.157e-02), r);\n\tr = MulAdd(s0_7, M4(-7.473e-02, -1.458e-01, 2.874e-02, -4.756e-02, -1.148e-01, 1.311e-02, -1.951e-01, 6.415e-02, -1.319e-01, 7.188e-03, 1.038e-01, -1.325e-01, -1.117e-01, 3.131e-02, -8.221e-02, -1.748e-02), r);\n\tr = MulAdd(s0_8, M4(-1.608e-02, -1.291e-01, -7.986e-02, 1.517e-01, -5.935e-02, 1.569e-01, -4.486e-02, 4.935e-02, -5.661e-02, 1.693e-01, 1.163e-01, 7.722e-02, -1.655e-02, 3.182e-02, -4.696e-02, 6.367e-02), r);\n\tr = MulAdd(s1_0, M4(-6.963e-02, -3.487e-02, -1.631e-01, -1.077e-01, -4.652e-02, -1.246e-02, -2.988e-02, -1.017e-02, 1.289e-01, -6.770e-02, 3.828e-02, -5.813e-02, -3.392e-02, -8.819e-02, -1.841e-01, -1.657e-01), r);\n\tr = MulAdd(s1_1, M4(-2.651e-01, 7.461e-03, 5.940e-02, 1.063e-01, -8.123e-02, 1.449e-01, -6.067e-02, 1.113e-01, -3.371e-03, -1.156e-01, -9.170e-02, -4.502e-02, -1.540e-02, 1.307e-01, 4.423e-02, 4.225e-02), r);\n\tr = MulAdd(s1_2, M4(1.609e-01, 4.713e-02, -5.573e-03, -6.268e-02, -1.734e-02, -1.168e-01, 1.544e-02, -5.528e-02, -2.135e-03, 2.001e-02, 3.267e-02, -1.550e-02, -2.343e-02, 5.691e-02, 1.771e-01, 1.450e-02), r);\n\tr = MulAdd(s1_3, M4(1.445e-02, -1.291e-01, 1.128e-01, -1.166e-01, -1.172e-01, -7.896e-02, 3.477e-04, -1.610e-02, 1.550e-01, 6.943e-02, 3.919e-02, -9.096e-02, 1.666e-02, -6.882e-02, 2.141e-01, 1.631e-01), r);\n\tr = MulAdd(s1_4, M4(-1.641e-01, -1.595e-01, 3.082e-02, -6.409e-02, -6.885e-02, 1.860e-02, 6.810e-02, -5.758e-02, 2.216e-02, 2.606e-02, -5.397e-02, 3.736e-02, -7.740e-02, 1.974e-01, -3.292e-01, -1.246e-01), r);\n\tr = MulAdd(s1_5, M4(-8.176e-02, -1.095e-01, -1.079e-01, -6.857e-02, 3.199e-02, 7.660e-03, -7.556e-02, -5.478e-02, -4.592e-02, 1.068e-01, -3.159e-02, 6.177e-02, 1.165e-01, -1.117e-01, 1.025e-01, -1.159e-01), r);\n\tr = MulAdd(s1_6, M4(5.382e-02, -2.003e-01, -2.884e-01, -1.508e-01, -4.384e-03, -6.806e-03, 5.757e-02, 6.070e-03, -2.252e-02, -3.155e-02, 4.240e-02, 1.965e-02, -5.008e-02, -1.744e-01, 2.378e-02, 1.946e-01), r);\n\tr = MulAdd(s1_7, M4(7.065e-03, -1.934e-01, -2.132e-01, 7.295e-02, 1.288e-01, -1.343e-01, -1.200e-01, -1.150e-01, 1.013e-01, 1.330e-02, -2.353e-02, -2.356e-02, 2.432e-01, -2.708e-02, 2.156e-02, -8.016e-02), r);\n\tr = MulAdd(s1_8, M4(1.323e-01, -7.270e-02, -1.247e-02, -3.603e-02, 1.168e-01, -8.455e-02, -1.407e-01, 1.392e-01, 3.015e-02, -3.628e-02, -3.984e-02, 5.628e-02, 7.819e-02, -5.224e-02, -2.634e-02, 9.179e-02), r);\n\tr = MulAdd(s2_0, M4(3.436e-02, -1.717e-01, 8.809e-02, 9.274e-02, 4.959e-02, -9.298e-03, -3.566e-03, -7.553e-02, 2.096e-01, 1.975e-03, -1.735e-01, -3.056e-02, 2.566e-03, 6.520e-02, -2.846e-02, 7.517e-02), r);\n\tr = MulAdd(s2_1, M4(6.167e-02, -2.440e-02, -1.303e-02, -1.264e-02, 1.362e-01, 4.410e-03, -5.669e-02, 5.663e-03, 1.103e-01, 2.676e-02, -2.537e-01, 1.203e-01, -1.513e-01, 5.708e-02, -1.333e-01, -1.070e-02), r);\n\tr = MulAdd(s2_2, M4(1.883e-02, -7.058e-02, -1.755e-02, -9.315e-02, -7.877e-02, -2.632e-02, 1.701e-03, 1.646e-02, 3.673e-02, -7.855e-02, 1.919e-01, 8.576e-02, -1.538e-01, 2.239e-01, -3.572e-02, 3.906e-02), r);\n\tr = MulAdd(s2_3, M4(-1.348e-01, 9.100e-02, 4.750e-02, -4.391e-02, 9.521e-02, -1.966e-03, -1.461e-04, -4.581e-02, 6.728e-02, 2.979e-03, -1.134e-01, 1.917e-01, 5.138e-02, 6.732e-03, -7.290e-02, 2.281e-02), r);\n\tr = MulAdd(s2_4, M4(3.199e-02, -6.431e-02, 6.152e-02, -3.397e-03, -5.878e-02, -7.019e-02, 3.432e-03, 3.159e-02, -8.416e-02, -1.046e-02, -1.246e-01, 1.008e-01, -1.923e-01, -9.668e-02, 2.751e-01, 2.231e-02), r);\n\tr = MulAdd(s2_5, M4(-2.464e-03, 6.058e-02, -5.415e-02, -1.797e-01, -5.133e-02, 6.884e-02, -3.154e-02, -1.150e-01, 2.659e-03, -1.659e-02, 1.029e-01, 1.120e-01, -1.944e-01, 1.481e-01, 1.409e-01, 2.801e-02), r);\n\tr = MulAdd(s2_6, M4(4.667e-02, -1.064e-01, 2.535e-02, 7.449e-02, 6.001e-02, -1.077e-01, 7.760e-02, 7.536e-02, 8.011e-02, -1.427e-01, 2.664e-02, -9.192e-02, -8.377e-02, 2.433e-02, 2.297e-02, 7.049e-02), r);\n\tr = MulAdd(s2_7, M4(-5.233e-02, -4.193e-02, -1.651e-02, -2.001e-01, 4.654e-02, -1.089e-02, -4.719e-02, 2.223e-02, -9.302e-03, -4.426e-02, 2.210e-02, 5.566e-02, -5.970e-02, 1.829e-01, -3.557e-02, 1.214e-01), r);\n\tr = MulAdd(s2_8, M4(4.346e-02, 4.874e-02, -4.945e-02, 1.150e-01, -6.326e-02, -2.545e-02, -9.380e-02, 3.646e-02, 1.263e-02, 1.527e-01, 4.378e-02, -7.941e-02, -4.891e-02, 6.231e-02, 6.571e-03, 2.289e-02), r);\n\tr = MulAdd(s3_0, M4(-7.488e-02, 9.791e-02, -1.234e-02, -5.133e-02, 1.198e-02, 1.559e-01, -8.043e-02, -1.844e-01, 3.635e-02, -3.648e-03, 1.702e-02, 1.019e-02, 1.025e-01, -1.095e-01, 4.961e-02, 3.802e-02), r);\n\tr = MulAdd(s3_1, M4(-8.831e-02, 2.470e-02, -1.290e-02, 6.433e-02, 1.367e-01, 5.948e-02, -7.454e-03, -2.061e-01, 4.250e-03, -1.381e-02, -2.909e-03, -3.023e-02, -1.174e-02, -1.387e-02, 1.262e-01, -3.551e-02), r);\n\tr = MulAdd(s3_2, M4(-1.020e-01, -2.204e-02, -1.008e-01, -5.846e-02, -3.360e-02, -5.542e-02, 9.575e-02, 4.696e-01, 6.233e-02, 1.315e-02, 1.965e-01, -1.491e-02, -1.792e-02, -5.658e-02, -1.228e-01, 1.385e-02), r);\n\tr = MulAdd(s3_3, M4(-1.464e-01, 1.780e-02, -6.589e-03, 4.249e-02, -2.666e-01, -1.224e-01, 2.077e-01, -2.693e-01, -1.083e-01, 2.998e-03, -1.048e-01, -1.893e-02, 6.824e-02, -2.977e-02, 3.503e-02, -9.067e-02), r);\n\tr = MulAdd(s3_4, M4(4.541e-02, 1.987e-02, 3.981e-02, 1.155e-01, 1.834e-02, -3.408e-01, 8.681e-02, 8.392e-02, -9.493e-04, -1.603e-02, -5.829e-02, -1.074e-01, 1.148e-01, -8.128e-02, 1.758e-01, 1.002e-01), r);\n\tr = MulAdd(s3_5, M4(-8.241e-03, 1.119e-01, 1.522e-02, 6.100e-03, 2.799e-01, 6.308e-02, -2.371e-01, 5.814e-01, 1.264e-02, 1.048e-01, 1.182e-01, -1.407e-01, 4.045e-02, -8.033e-02, -7.350e-02, 1.101e-02), r);\n\tr = MulAdd(s3_6, M4(-1.178e-01, 2.715e-02, -2.532e-02, 1.441e-01, 1.125e-01, 1.964e-02, -1.099e-01, 2.368e-01, -4.709e-02, -4.507e-02, -6.058e-02, 1.336e-01, -1.799e-02, -5.699e-02, -4.070e-02, -4.618e-02), r);\n\tr = MulAdd(s3_7, M4(1.472e-02, 7.965e-02, 1.853e-01, 8.426e-02, -1.636e-01, 1.166e-02, -1.313e-01, -1.365e-01, -5.363e-02, -5.387e-02, -8.976e-02, -4.583e-03, 2.475e-02, 4.945e-02, 7.521e-02, -7.343e-02), r);\n\tr = MulAdd(s3_8, M4(-4.064e-02, 2.779e-02, -1.238e-01, 2.416e-01, 1.142e-01, 1.864e-01, 3.874e-01, 2.042e-01, 1.807e-02, 4.914e-02, -3.000e-02, 1.741e-02, -2.914e-02, -3.022e-02, -6.543e-02, -2.672e-02), r);\n\tr = MulAdd(s4_0, M4(9.304e-02, -6.264e-02, 9.383e-02, 1.634e-01, 1.372e-01, -2.039e-02, 1.033e-02, -5.786e-02, -6.631e-03, -7.443e-02, -6.661e-02, 2.310e-02, 1.424e-01, 3.788e-02, -1.264e-01, -4.219e-02), r);\n\tr = MulAdd(s4_1, M4(1.216e-01, -2.118e-02, -1.199e-01, 4.403e-03, -2.567e-03, 2.012e-02, -2.615e-02, 4.259e-02, 3.099e-02, -1.118e-02, 1.342e-01, -2.927e-02, 1.122e-01, -6.252e-02, 1.628e-04, 5.354e-02), r);\n\tr = MulAdd(s4_2, M4(7.041e-02, -2.867e-02, -6.862e-02, 1.254e-01, -1.607e-01, -1.539e-01, -1.603e-02, -6.348e-02, -7.181e-03, 1.102e-02, 2.390e-02, -5.249e-02, 2.245e-02, 2.943e-02, -1.301e-01, -7.982e-02), r);\n\tr = MulAdd(s4_3, M4(-1.387e-01, 1.504e-02, 5.752e-02, 1.460e-01, 6.862e-02, -4.562e-02, 2.216e-02, -1.442e-01, -7.839e-02, 8.544e-02, -1.911e-02, 2.450e-01, -6.672e-02, -1.830e-01, 1.179e-01, -2.594e-02), r);\n\tr = MulAdd(s4_4, M4(1.345e-02, -9.782e-04, 3.954e-02, -7.969e-02, 8.862e-02, 1.382e-01, -1.612e-01, -2.439e-01, -5.334e-02, 1.125e-01, -1.972e-02, -4.682e-02, -2.351e-01, 7.199e-02, 1.401e-01, 3.230e-01), r);\n\tr = MulAdd(s4_5, M4(-5.918e-02, 2.463e-02, 1.006e-01, 1.020e-01, -1.814e-01, -2.376e-02, -3.208e-02, -9.613e-02, -9.487e-02, 2.239e-02, 1.853e-01, -8.625e-03, -1.745e-02, 3.099e-01, 3.099e-02, 4.514e-02), r);\n\tr = MulAdd(s4_6, M4(-1.100e-01, 6.927e-02, -3.307e-03, 4.325e-02, 7.185e-02, -1.418e-01, 1.960e-02, -1.491e-01, -3.582e-02, 2.388e-03, -1.615e-02, -2.427e-02, -5.100e-02, -2.715e-02, 1.057e-01, 7.667e-02), r);\n\tr = MulAdd(s4_7, M4(-1.088e-01, 3.447e-02, -8.186e-02, -1.929e-02, -1.827e-02, 4.351e-02, -1.521e-01, -3.296e-02, 6.372e-02, 4.873e-02, 6.193e-02, -3.363e-03, 3.941e-02, 2.499e-02, 1.494e-05, -2.036e-01), r);\n\tr = MulAdd(s4_8, M4(-6.369e-02, -9.751e-02, -5.096e-02, 3.151e-02, 2.607e-03, -3.898e-02, 4.627e-02, -4.268e-02, 6.320e-02, -3.223e-02, 4.721e-02, 4.625e-02, -3.867e-02, 2.063e-01, -2.207e-02, 9.412e-02), r);\n\tr = MulAdd(s5_0, M4(6.974e-02, 8.564e-02, 7.933e-02, 9.495e-02, 1.332e-02, 7.017e-02, 1.227e-01, 2.723e-02, -4.159e-02, -2.808e-02, -1.196e-01, -1.683e-01, 4.032e-02, 7.238e-02, -3.882e-02, -1.556e-03), r);\n\tr = MulAdd(s5_1, M4(-3.493e-01, -3.536e-02, -2.793e-02, -5.408e-02, -3.388e-02, 7.883e-02, 8.640e-02, 2.626e-01, 2.461e-02, 5.804e-02, -1.028e-02, -2.498e-02, -5.312e-02, -2.278e-03, 7.602e-02, -2.814e-02), r);\n\tr = MulAdd(s5_2, M4(-5.896e-02, -7.446e-02, 4.512e-02, -1.565e-02, -7.230e-02, 6.534e-02, -4.524e-02, 6.396e-02, -2.574e-02, 1.876e-01, -4.695e-02, -7.508e-02, 4.575e-02, 3.811e-02, 2.866e-02, -1.009e-01), r);\n\tr = MulAdd(s5_3, M4(-1.961e-01, -2.216e-01, -1.780e-01, 8.053e-02, -6.757e-02, -1.014e-01, 8.794e-02, 1.344e-01, 3.602e-02, -2.847e-02, -9.301e-02, 1.179e-01, -4.238e-02, -1.468e-01, -6.555e-02, 1.076e-01), r);\n\tr = MulAdd(s5_4, M4(1.393e-01, -1.116e-01, -7.653e-02, -4.183e-01, 1.063e-01, 1.543e-01, 2.485e-02, -1.206e-01, -8.073e-02, -1.115e-03, -2.209e-01, 9.112e-02, -1.151e-01, 8.174e-02, 8.418e-02, 4.526e-03), r);\n\tr = MulAdd(s5_5, M4(1.294e-01, -9.347e-02, 4.701e-02, 6.548e-03, -1.788e-02, 2.933e-02, 4.442e-02, 1.193e-01, -1.264e-01, -6.081e-02, -6.942e-02, 4.344e-02, 8.834e-03, 3.778e-02, -4.672e-02, -5.692e-02), r);\n\tr = MulAdd(s5_6, M4(-1.012e-01, 1.823e-01, -2.943e-01, 8.989e-02, 1.116e-01, -6.032e-02, 4.802e-02, 1.264e-01, -8.633e-02, -8.766e-02, -5.426e-02, -1.209e-01, -1.093e-01, -5.602e-02, 6.528e-02, -2.349e-03), r);\n\tr = MulAdd(s5_7, M4(-1.343e-01, 2.034e-01, -2.338e-02, -3.787e-01, 8.539e-02, -7.340e-03, 8.520e-03, 2.321e-01, 1.384e-01, -3.985e-02, 1.855e-02, 3.639e-02, 3.894e-02, -7.443e-02, 2.595e-02, -8.674e-02), r);\n\tr = MulAdd(s5_8, M4(1.689e-01, -2.342e-02, 2.393e-02, -1.950e-01, 6.529e-02, -6.319e-02, -7.799e-02, 1.220e-01, -6.824e-02, -1.041e-01, 2.629e-02, -8.307e-02, 1.752e-02, 6.461e-02, -3.246e-02, -6.551e-02), r);\n\tr = MulAdd(s6_0, M4(1.200e-01, -3.222e-02, -7.397e-02, -8.474e-03, 8.909e-02, -2.369e-01, 8.842e-02, 5.556e-02, -1.596e-01, 1.205e-01, 9.819e-02, 7.308e-02, 1.404e-01, -6.079e-02, -4.573e-02, 5.620e-02), r);\n\tr = MulAdd(s6_1, M4(1.630e-01, -1.440e-02, 8.108e-02, 1.382e-01, -7.006e-02, 8.254e-02, -1.172e-01, -1.031e-01, -1.038e-01, -5.618e-02, -9.967e-02, -5.119e-02, 8.641e-03, 1.343e-01, 2.280e-03, 5.211e-03), r);\n\tr = MulAdd(s6_2, M4(-9.802e-03, 7.003e-02, -8.588e-02, -2.847e-02, 1.438e-01, 2.113e-01, 2.720e-01, -4.048e-02, -1.776e-02, -8.309e-02, -1.082e-01, 9.919e-02, 1.127e-01, 3.300e-02, 1.817e-02, 1.831e-02), r);\n\tr = MulAdd(s6_3, M4(3.430e-02, 1.022e-01, -1.684e-02, -1.033e-01, 9.907e-03, 3.670e-02, 1.316e-01, -1.978e-01, 5.608e-02, 6.323e-03, 2.175e-02, 9.470e-03, 1.618e-01, -5.147e-02, 2.082e-02, -7.631e-03), r);\n\tr = MulAdd(s6_4, M4(5.919e-02, 6.625e-02, -1.752e-01, -1.298e-02, -7.827e-04, -3.498e-02, -4.234e-02, -7.318e-02, 1.128e-01, -6.479e-02, 7.675e-03, -9.922e-02, -1.988e-01, -1.343e-01, -1.326e-02, 7.510e-02), r);\n\tr = MulAdd(s6_5, M4(-1.705e-01, 7.369e-02, 8.016e-02, 1.041e-01, -1.254e-01, -2.403e-02, -1.032e-01, 7.417e-02, 1.379e-01, 1.247e-02, 1.053e-01, 7.891e-02, -1.324e-01, -6.220e-02, -5.934e-02, -1.184e-02), r);\n\tr = MulAdd(s6_6, M4(3.798e-02, 3.235e-02, -8.631e-02, -8.324e-02, -2.662e-02, -1.828e-02, 8.318e-03, 1.571e-01, 7.448e-02, 3.965e-02, 1.034e-01, 5.027e-02, -2.221e-02, -4.772e-02, 1.205e-01, 8.987e-02), r);\n\tr = MulAdd(s6_7, M4(7.982e-02, 8.061e-03, -1.110e-02, -5.908e-03, -1.598e-01, 2.922e-03, -6.329e-04, 1.107e-01, -6.714e-02, -5.439e-02, 6.170e-02, 7.335e-02, -1.515e-01, -4.121e-02, -4.943e-02, 6.217e-02), r);\n\tr = MulAdd(s6_8, M4(2.163e-02, 4.998e-03, -8.032e-02, -1.288e-02, -3.356e-03, 1.042e-02, 9.992e-02, 2.381e-02, -1.914e-03, 7.537e-02, -1.247e-01, 5.745e-02, 2.516e-02, -1.156e-01, -1.405e-01, -8.950e-02), r);\n\tr = MulAdd(s7_0, M4(-3.289e-02, 1.005e-01, -1.664e-01, 3.229e-02, -3.539e-02, 3.863e-02, 6.170e-02, 4.147e-02, -1.179e-01, 3.243e-02, 6.216e-02, 3.144e-01, 8.066e-02, 6.194e-02, 2.796e-02, -1.411e-01), r);\n\tr = MulAdd(s7_1, M4(5.339e-02, -8.321e-02, -5.431e-02, 6.086e-02, 1.075e-02, -8.840e-03, -2.585e-02, 3.593e-02, -1.144e-01, 1.016e-01, 2.744e-02, -5.795e-02, 1.170e-01, 1.227e-01, 5.666e-02, -4.038e-02), r);\n\tr = MulAdd(s7_2, M4(3.297e-02, 8.648e-02, -7.364e-02, 8.771e-02, 1.966e-02, -7.449e-02, -1.062e-01, -2.157e-02, -4.111e-03, -1.992e-01, 8.065e-02, 1.122e-02, 7.465e-02, 1.470e-01, 7.417e-03, 2.789e-02), r);\n\tr = MulAdd(s7_3, M4(2.386e-02, 2.310e-01, -2.804e-01, -1.344e-01, -1.257e-01, 1.236e-01, 4.911e-02, -5.946e-02, 9.337e-02, 1.174e-02, -1.178e-01, -1.304e-01, 9.177e-02, -1.628e-02, -2.609e-02, -1.484e-01), r);\n\tr = MulAdd(s7_4, M4(1.706e-01, 9.529e-02, -1.168e-01, 3.993e-01, 6.630e-02, -2.149e-02, 1.253e-02, 1.085e-01, 1.032e-01, 2.347e-01, -7.329e-02, 2.084e-01, -1.968e-01, -1.076e-01, -4.499e-02, 1.235e-01), r);\n\tr = MulAdd(s7_5, M4(6.215e-02, -1.109e-01, 4.257e-02, -3.023e-02, -1.347e-01, -1.378e-02, 1.745e-02, -6.140e-02, -6.328e-02, -3.266e-02, 1.099e-02, -2.281e-01, -9.936e-02, 2.338e-02, -3.435e-02, 6.569e-02), r);\n\tr = MulAdd(s7_6, M4(7.853e-02, -1.601e-01, -2.296e-01, 1.106e-02, -6.369e-02, -1.100e-02, 3.984e-02, 9.032e-03, -6.465e-03, -1.149e-01, -4.831e-02, 1.183e-01, 6.930e-02, -9.638e-02, -1.169e-01, -8.368e-02), r);\n\tr = MulAdd(s7_7, M4(-9.578e-02, 5.014e-02, 1.226e-01, 5.544e-02, -9.871e-03, -5.196e-02, -3.061e-02, 5.372e-02, 1.728e-01, -4.305e-02, 1.110e-02, -9.630e-02, -2.940e-02, -5.671e-02, 4.415e-02, 7.129e-02), r);\n\tr = MulAdd(s7_8, M4(2.522e-02, -1.403e-01, -6.496e-02, -1.193e-02, -1.643e-02, 1.158e-01, 1.042e-01, -1.039e-01, -7.068e-02, -6.970e-03, -9.279e-02, -1.022e-01, 5.406e-02, -1.954e-02, 4.493e-02, 2.320e-02), r);\n\treturn r;\n}\n\nvoid Pass7(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 8\n//!DESC conv7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.138e-02, 2.464e-02, 4.285e-02, 3.644e-02 };\n\tr = MulAdd(s0_0, M4(-1.094e-01, 6.562e-02, -6.635e-02, -1.664e-02, -1.806e-01, 2.640e-02, -1.701e-02, -5.263e-02, 7.153e-03, 3.917e-02, -1.463e-01, -2.494e-03, -7.370e-02, 5.850e-02, 3.016e-02, -2.480e-03), r);\n\tr = MulAdd(s0_1, M4(-7.920e-02, -8.043e-03, -2.752e-01, -4.750e-02, 4.629e-03, 1.198e-02, 5.820e-02, 1.212e-01, -1.189e-01, -1.568e-02, -1.020e-01, -4.512e-02, 7.941e-02, 1.033e-01, -7.474e-02, 4.613e-02), r);\n\tr = MulAdd(s0_2, M4(6.666e-03, -1.996e-01, 4.654e-02, 2.725e-02, 4.535e-03, 1.941e-02, -5.382e-02, -8.718e-03, -7.150e-02, 7.631e-02, 2.212e-03, -7.028e-03, 1.519e-02, -3.138e-02, -1.136e-01, 2.660e-02), r);\n\tr = MulAdd(s0_3, M4(7.989e-02, 6.219e-02, 9.160e-02, -2.573e-04, 3.206e-02, -1.039e-01, 7.312e-02, 1.047e-01, 6.879e-02, 8.840e-02, -1.349e-01, -3.978e-03, 6.849e-03, 3.076e-02, -4.591e-02, 1.194e-01), r);\n\tr = MulAdd(s0_4, M4(-4.859e-02, 8.254e-02, -1.963e-01, 1.308e-01, -1.704e-01, -4.744e-02, -5.579e-02, 8.055e-02, -5.632e-02, 9.476e-02, -6.365e-02, -7.092e-02, 1.192e-02, -1.031e-01, -2.293e-02, -8.946e-02), r);\n\tr = MulAdd(s0_5, M4(-1.563e-01, -2.251e-01, -9.731e-02, 1.459e-02, -5.055e-02, 7.008e-03, -1.155e-01, 5.742e-02, -1.312e-01, 9.039e-03, 5.052e-02, -3.125e-02, -9.343e-02, 6.572e-03, -3.902e-02, -3.151e-03), r);\n\tr = MulAdd(s0_6, M4(3.861e-02, -4.867e-02, -2.904e-02, 7.517e-02, -1.442e-02, -1.293e-01, 4.353e-02, 6.431e-03, -9.509e-03, -3.284e-02, -1.018e-01, -7.121e-02, 8.958e-02, -3.625e-02, 1.074e-02, -5.836e-02), r);\n\tr = MulAdd(s0_7, M4(8.242e-02, 8.586e-02, -3.794e-03, 2.286e-01, 6.752e-02, 1.001e-01, 7.140e-02, 5.756e-02, 9.403e-03, -2.792e-02, 4.411e-02, 1.023e-01, 6.906e-02, -5.778e-02, -4.631e-02, -1.568e-01), r);\n\tr = MulAdd(s0_8, M4(-1.261e-01, -1.466e-01, -2.753e-02, 1.525e-01, 2.462e-02, -1.988e-01, -1.876e-02, -4.975e-02, 8.446e-03, 1.146e-01, 1.661e-02, -2.526e-02, 7.944e-02, -4.065e-02, 1.104e-03, -1.452e-01), r);\n\tr = MulAdd(s1_0, M4(-6.833e-02, -2.755e-02, 7.771e-02, -1.336e-02, 1.837e-02, 8.552e-02, 1.024e-01, -1.455e-01, -2.393e-01, 1.461e-01, 1.814e-02, -4.929e-02, -1.674e-01, -6.073e-02, 7.018e-02, -2.940e-02), r);\n\tr = MulAdd(s1_1, M4(4.082e-03, 1.052e-01, 3.842e-03, -1.587e-01, 9.835e-02, 2.139e-02, 8.668e-02, 2.165e-02, -2.663e-02, 8.162e-02, -3.735e-02, -1.560e-02, -6.443e-02, -1.933e-01, -1.607e-01, 1.926e-01), r);\n\tr = MulAdd(s1_2, M4(5.791e-02, -1.695e-02, 1.488e-02, -6.007e-02, -7.197e-02, -8.771e-02, -1.639e-02, 5.865e-02, -5.406e-02, 2.676e-02, -4.350e-02, -3.119e-02, 2.097e-02, 3.892e-02, 1.711e-02, 9.656e-03), r);\n\tr = MulAdd(s1_3, M4(-2.595e-01, 5.729e-02, 9.107e-02, 1.011e-01, -2.027e-01, 9.770e-02, 8.845e-02, -5.835e-03, 9.669e-02, -7.060e-02, 2.229e-02, -1.412e-02, -5.990e-02, -1.414e-01, -7.674e-02, 2.120e-02), r);\n\tr = MulAdd(s1_4, M4(-1.436e-02, 2.800e-01, 2.802e-02, 1.332e-01, -5.009e-02, 3.089e-02, 4.827e-02, -1.219e-01, 5.801e-02, 4.186e-01, -1.186e-02, -8.125e-02, 2.004e-01, -1.175e-02, 1.882e-01, -6.973e-02), r);\n\tr = MulAdd(s1_5, M4(-7.152e-02, 9.121e-02, 3.823e-02, 5.854e-02, 1.238e-01, 8.679e-02, -5.175e-02, 4.602e-02, 3.259e-03, 2.433e-01, -6.799e-02, -1.315e-02, -1.607e-01, 1.049e-01, 1.580e-01, -1.395e-01), r);\n\tr = MulAdd(s1_6, M4(-4.564e-02, -9.812e-02, 2.360e-02, 7.224e-02, -1.049e-01, 7.822e-02, 1.828e-01, -6.342e-02, -2.681e-01, 3.954e-02, -1.436e-01, -9.720e-03, 8.550e-02, -2.766e-06, 1.479e-02, 3.158e-03), r);\n\tr = MulAdd(s1_7, M4(2.409e-02, 1.690e-01, -1.089e-02, 4.386e-02, -3.649e-02, -4.483e-02, 5.605e-02, -9.339e-02, 2.634e-01, 3.361e-02, -1.892e-01, 1.432e-01, 1.738e-01, -8.852e-02, -4.950e-02, 2.896e-02), r);\n\tr = MulAdd(s1_8, M4(8.637e-02, 6.159e-02, -3.538e-02, -7.172e-03, 1.321e-01, 1.411e-01, 4.990e-03, -7.475e-02, -1.335e-02, -4.698e-02, -6.161e-02, 5.824e-02, 2.177e-01, 2.154e-01, 5.215e-02, -7.138e-02), r);\n\tr = MulAdd(s2_0, M4(2.174e-01, 4.123e-02, -8.292e-02, -5.252e-02, 7.025e-02, -9.466e-03, -5.904e-02, -5.454e-02, 6.876e-02, -9.031e-02, 5.278e-02, 6.207e-02, 5.541e-02, 6.821e-02, -9.390e-02, 9.013e-02), r);\n\tr = MulAdd(s2_1, M4(-9.286e-02, 9.109e-05, 1.541e-01, -1.452e-01, -5.603e-02, 1.127e-01, 1.113e-02, -1.623e-01, -1.885e-02, -5.289e-02, 1.681e-02, 4.134e-02, -7.683e-03, 2.098e-01, 1.892e-01, 7.369e-02), r);\n\tr = MulAdd(s2_2, M4(-1.571e-01, -5.388e-02, -1.203e-02, -1.810e-01, -4.085e-02, -7.166e-02, -3.599e-02, -4.272e-02, -5.114e-02, -5.852e-03, -4.504e-02, 2.492e-02, 6.584e-02, 5.583e-02, 3.093e-02, -8.858e-02), r);\n\tr = MulAdd(s2_3, M4(2.666e-01, -4.169e-02, 1.900e-01, 5.311e-02, -2.534e-02, 1.372e-01, -5.283e-02, -4.175e-02, -1.966e-01, 8.141e-02, 7.509e-02, 2.269e-02, 1.992e-01, 1.056e-01, 1.450e-01, -2.845e-01), r);\n\tr = MulAdd(s2_4, M4(-1.957e-01, 6.279e-02, 1.413e-01, -4.627e-02, 5.501e-02, 4.127e-02, -2.825e-03, -7.130e-02, -4.654e-02, -6.061e-02, -1.728e-02, 1.095e-01, -8.350e-02, -8.155e-02, -2.309e-02, 1.007e-01), r);\n\tr = MulAdd(s2_5, M4(2.874e-02, -1.179e-02, 2.625e-01, -1.289e-01, -5.714e-02, -1.313e-01, -9.355e-02, 7.594e-02, 1.294e-01, 1.140e-01, -7.714e-02, 1.368e-01, -4.774e-02, -8.704e-02, -3.935e-02, -6.379e-03), r);\n\tr = MulAdd(s2_6, M4(2.177e-01, 4.111e-02, -2.230e-01, -2.031e-02, -1.858e-02, 2.777e-02, 8.506e-04, 5.563e-02, 1.100e-02, 1.980e-02, 3.650e-02, 6.127e-02, -9.054e-02, 1.709e-01, -8.951e-02, -5.801e-02), r);\n\tr = MulAdd(s2_7, M4(1.400e-01, 4.955e-02, -9.260e-02, 7.465e-02, -1.298e-02, 6.411e-02, 9.795e-02, 9.944e-02, 5.240e-02, 2.981e-02, 3.059e-02, -9.015e-02, -2.287e-02, -2.969e-02, 1.617e-01, -4.204e-02), r);\n\tr = MulAdd(s2_8, M4(-1.400e-01, -1.179e-01, -1.857e-02, 1.462e-01, -2.608e-02, -1.977e-02, 2.275e-02, 5.050e-04, 2.683e-02, -4.022e-02, 1.758e-03, 2.148e-02, 1.991e-01, -4.555e-02, -6.202e-03, -3.282e-02), r);\n\tr = MulAdd(s3_0, M4(4.792e-02, 2.772e-02, -4.696e-02, -9.907e-03, 3.481e-02, -1.944e-01, -1.612e-01, 4.374e-02, -1.935e-01, 1.306e-01, -6.511e-02, 6.717e-02, 4.647e-02, 1.421e-01, -6.739e-02, 6.141e-02), r);\n\tr = MulAdd(s3_1, M4(-1.762e-01, 3.426e-02, 2.946e-02, -2.496e-02, 7.081e-02, -5.038e-02, -6.860e-02, 1.665e-01, -4.061e-02, -9.788e-03, 7.561e-02, 1.779e-01, -4.286e-02, -8.701e-03, -1.064e-02, -1.274e-01), r);\n\tr = MulAdd(s3_2, M4(5.357e-02, 3.849e-03, 4.175e-02, 3.995e-02, 9.148e-02, 8.457e-02, -7.468e-03, -4.689e-02, -1.287e-01, 6.958e-02, -6.353e-02, -1.477e-01, -1.527e-02, -8.207e-02, 3.981e-02, 2.494e-02), r);\n\tr = MulAdd(s3_3, M4(-1.686e-01, -3.953e-02, -3.361e-02, 2.511e-02, -3.888e-01, -1.431e-01, -9.050e-03, 2.181e-01, -1.614e-01, -1.381e-01, 1.600e-01, 9.912e-02, 2.128e-02, 3.555e-02, 4.428e-02, -1.076e-01), r);\n\tr = MulAdd(s3_4, M4(-6.739e-02, 4.936e-02, 1.614e-02, 3.981e-02, -1.361e-01, 1.175e-01, 2.878e-02, 6.779e-02, 6.161e-02, -1.996e-01, 1.353e-01, -2.633e-02, -6.449e-02, -9.670e-02, -1.103e-01, 2.391e-02), r);\n\tr = MulAdd(s3_5, M4(-5.152e-02, -2.634e-02, 5.286e-02, -3.503e-02, -1.304e-01, -1.028e-01, -9.635e-02, -3.594e-02, -4.392e-02, 7.375e-02, -1.322e-01, -4.372e-02, -1.225e-01, -1.920e-01, -1.833e-01, 1.163e-01), r);\n\tr = MulAdd(s3_6, M4(2.130e-02, -1.053e-01, -1.098e-01, -3.188e-02, 2.582e-02, 6.738e-02, -3.954e-02, 4.855e-02, 1.174e-02, -1.605e-02, 5.528e-02, -1.552e-01, 3.938e-04, 6.833e-02, -1.971e-03, -1.657e-02), r);\n\tr = MulAdd(s3_7, M4(9.644e-02, -5.851e-02, 9.306e-02, -2.021e-02, -8.492e-02, 1.645e-01, 6.027e-02, 1.179e-01, 1.247e-03, 7.693e-02, 1.392e-01, 2.644e-02, 5.708e-02, 8.585e-02, -1.024e-02, -9.170e-02), r);\n\tr = MulAdd(s3_8, M4(-6.458e-02, -1.116e-01, 1.344e-02, -3.360e-03, -4.397e-02, -9.242e-02, -1.821e-01, 9.750e-02, -1.151e-01, 2.338e-02, 2.907e-02, 6.785e-02, 1.321e-01, -2.873e-03, 2.923e-02, -3.002e-02), r);\n\tr = MulAdd(s4_0, M4(-3.549e-03, 6.322e-02, 2.612e-02, -5.727e-02, -2.213e-02, -4.023e-02, 1.537e-01, -8.374e-02, -1.378e-01, -1.213e-02, 1.032e-01, 1.619e-01, -4.502e-02, -3.248e-02, 9.939e-02, -1.793e-02), r);\n\tr = MulAdd(s4_1, M4(-1.140e-01, -8.592e-02, -1.221e-02, 3.357e-02, -1.243e-01, -3.610e-02, 3.100e-02, 1.831e-01, 6.935e-02, 1.819e-01, -5.356e-02, 1.049e-03, 1.013e-01, -2.999e-02, 1.002e-01, 8.481e-02), r);\n\tr = MulAdd(s4_2, M4(-5.074e-02, -3.137e-02, -3.769e-04, -3.506e-02, 1.469e-01, 1.220e-01, -2.581e-02, 4.897e-02, -1.507e-01, -1.310e-01, 1.399e-01, 2.146e-04, 3.223e-02, -1.708e-01, 1.749e-02, 8.381e-02), r);\n\tr = MulAdd(s4_3, M4(-5.579e-02, -7.501e-02, -7.396e-02, -4.601e-02, -2.077e-01, -1.652e-01, 4.609e-02, -6.161e-02, 1.811e-01, -1.606e-01, 8.042e-02, 1.432e-02, 2.420e-02, 1.674e-01, -2.385e-01, 3.584e-02), r);\n\tr = MulAdd(s4_4, M4(-6.357e-02, -5.652e-02, -1.085e-01, -3.533e-02, -1.473e-01, -6.429e-02, 1.168e-01, 4.730e-02, 1.236e-01, 1.275e-02, 1.529e-01, 1.793e-01, 9.834e-02, 9.068e-02, 1.846e-02, 1.012e-01), r);\n\tr = MulAdd(s4_5, M4(-3.437e-02, -2.088e-02, 1.614e-02, 4.094e-02, -3.318e-02, 6.311e-02, 3.066e-02, 1.211e-01, -4.561e-01, 2.340e-01, 2.849e-01, -2.053e-02, 9.824e-03, 1.057e-01, 5.524e-02, 1.544e-01), r);\n\tr = MulAdd(s4_6, M4(5.406e-02, -5.447e-02, 6.346e-02, -9.657e-02, -7.456e-02, 1.372e-01, 9.634e-02, 1.778e-02, 7.337e-02, 1.822e-01, -2.336e-01, -1.964e-01, 8.473e-03, 5.990e-02, -7.229e-02, 3.078e-02), r);\n\tr = MulAdd(s4_7, M4(-7.364e-02, 9.612e-03, 1.151e-01, -4.973e-02, 6.506e-02, -5.687e-02, 1.550e-02, -8.652e-02, 2.556e-01, -1.941e-01, 9.252e-02, -1.199e-01, 1.270e-01, -9.150e-03, 5.799e-02, 4.810e-02), r);\n\tr = MulAdd(s4_8, M4(-1.076e-02, 8.242e-03, 3.017e-02, -3.253e-02, -1.396e-02, 6.635e-02, -2.149e-02, -3.102e-04, -4.295e-01, 1.726e-01, -1.077e-01, -8.705e-02, 1.395e-01, -4.076e-03, 3.286e-03, -3.146e-02), r);\n\tr = MulAdd(s5_0, M4(-2.396e-01, 1.979e-01, 2.413e-01, -4.524e-02, 8.260e-03, -5.002e-02, 5.122e-02, 5.775e-02, 3.915e-04, -1.085e-01, 1.610e-01, -7.457e-02, -8.283e-02, -1.344e-01, 2.998e-02, 1.015e-01), r);\n\tr = MulAdd(s5_1, M4(1.838e-01, -1.508e-01, 3.490e-02, -6.098e-02, -1.108e-01, 7.571e-02, -2.342e-01, 1.749e-02, -5.878e-02, -8.278e-03, -1.278e-01, -4.971e-04, -1.599e-02, -9.004e-02, -1.931e-02, -3.202e-02), r);\n\tr = MulAdd(s5_2, M4(-5.693e-02, -3.888e-02, 6.823e-02, -8.981e-02, -4.565e-02, -4.465e-03, -8.576e-02, 7.549e-02, 4.481e-02, 8.552e-02, 1.471e-02, 2.529e-03, -7.205e-02, 3.349e-02, -7.793e-02, -3.257e-03), r);\n\tr = MulAdd(s5_3, M4(-2.139e-01, 1.130e-01, -2.518e-03, -2.936e-02, 9.204e-02, -6.996e-02, -6.080e-02, 4.065e-02, 9.765e-03, -5.972e-02, -1.922e-02, -7.230e-02, -1.372e-01, 1.099e-01, -9.439e-03, -1.574e-01), r);\n\tr = MulAdd(s5_4, M4(3.184e-01, -9.080e-02, -8.721e-02, 1.063e-01, 8.019e-02, 1.045e-01, 5.305e-02, 3.222e-02, -2.309e-02, -3.510e-02, 5.475e-02, 6.860e-03, -2.792e-02, -4.265e-02, 7.462e-02, -1.000e-01), r);\n\tr = MulAdd(s5_5, M4(1.510e-01, 9.356e-02, 9.770e-02, 8.079e-02, -2.077e-02, -3.420e-03, 5.702e-02, -9.642e-02, -3.297e-02, 4.951e-02, 1.024e-02, 1.284e-02, -9.640e-02, 1.576e-01, 5.242e-02, -9.510e-02), r);\n\tr = MulAdd(s5_6, M4(-1.131e-01, -5.611e-03, 1.260e-01, -6.498e-02, 5.024e-02, -3.976e-02, -9.643e-02, 6.266e-02, -1.811e-02, 2.216e-02, -5.924e-02, -9.393e-02, -7.965e-02, -8.372e-02, 1.139e-01, 1.632e-02), r);\n\tr = MulAdd(s5_7, M4(1.830e-01, -1.842e-01, -8.532e-03, 1.438e-01, -2.825e-02, -8.659e-02, 1.932e-02, 2.102e-02, 1.315e-01, -5.124e-03, 1.882e-02, -5.826e-03, -8.456e-03, 8.750e-02, 8.762e-02, 2.405e-02), r);\n\tr = MulAdd(s5_8, M4(3.706e-02, 1.210e-01, -2.112e-02, 3.086e-02, -4.797e-02, -1.435e-02, -3.086e-02, 6.154e-02, 7.946e-03, -1.777e-02, -5.891e-02, 8.237e-02, -1.340e-02, 7.156e-02, 7.066e-02, 2.263e-02), r);\n\tr = MulAdd(s6_0, M4(-1.527e-01, -2.308e-02, 1.031e-01, -9.168e-02, 2.770e-02, 4.815e-02, -9.231e-02, -2.969e-02, -1.034e-01, -1.003e-01, -1.571e-01, 8.946e-02, -7.229e-02, 2.558e-02, -1.862e-02, -2.815e-03), r);\n\tr = MulAdd(s6_1, M4(3.370e-04, 1.161e-01, 7.904e-03, 5.765e-03, -1.190e-01, 4.035e-03, 1.496e-01, -1.210e-01, -1.030e-01, 2.940e-01, -2.090e-01, 1.547e-01, 3.627e-02, 1.232e-02, 8.922e-02, 5.802e-03), r);\n\tr = MulAdd(s6_2, M4(-6.811e-02, 1.911e-02, 1.301e-01, -2.034e-02, -1.718e-02, -8.416e-02, -3.227e-02, 1.555e-02, -6.753e-02, 1.002e-01, -1.419e-01, 4.822e-02, -3.553e-02, -6.993e-03, -2.976e-02, 5.075e-02), r);\n\tr = MulAdd(s6_3, M4(1.028e-01, -9.826e-02, -2.043e-02, -4.282e-02, -1.015e-02, 5.062e-02, -7.217e-02, -6.270e-02, 2.555e-01, 1.865e-04, 4.284e-02, 3.526e-02, 1.324e-01, 1.001e-01, 7.429e-02, -1.082e-01), r);\n\tr = MulAdd(s6_4, M4(9.982e-02, 8.600e-02, 5.599e-02, 1.019e-01, -1.997e-01, 2.329e-02, 9.757e-02, -9.782e-02, -9.100e-02, 5.542e-03, 8.590e-02, 1.341e-01, 6.680e-02, 1.142e-01, -3.108e-02, 1.664e-02), r);\n\tr = MulAdd(s6_5, M4(5.982e-02, -6.894e-02, 1.043e-02, 7.815e-02, -2.898e-02, -1.015e-01, 8.456e-02, -2.549e-02, -1.887e-01, 3.432e-02, -2.346e-01, -1.983e-01, 2.210e-02, -5.568e-02, -1.398e-02, -6.344e-03), r);\n\tr = MulAdd(s6_6, M4(1.528e-01, -2.713e-02, 1.025e-01, 2.460e-02, -1.941e-01, -8.926e-02, -6.091e-02, 3.426e-02, 1.105e-01, 1.129e-03, 1.461e-02, 7.950e-03, -1.082e-01, -5.553e-02, -7.231e-02, 3.168e-02), r);\n\tr = MulAdd(s6_7, M4(1.582e-01, 5.038e-02, 1.620e-01, 4.924e-02, 1.917e-01, 1.978e-01, 1.543e-01, 4.565e-02, 7.157e-02, -2.466e-02, 2.363e-01, 1.268e-01, 3.259e-02, -1.481e-02, 5.469e-03, -1.927e-02), r);\n\tr = MulAdd(s6_8, M4(-3.274e-02, 9.584e-02, 7.582e-02, 3.171e-02, 1.340e-02, 3.428e-02, 1.861e-02, 8.205e-04, -1.479e-01, -7.486e-02, 6.135e-02, -2.173e-01, 8.072e-02, 1.614e-02, 7.643e-02, 7.684e-02), r);\n\tr = MulAdd(s7_0, M4(-3.495e-03, -7.745e-02, 1.208e-01, -5.674e-02, -2.190e-02, -5.537e-03, -7.982e-02, -5.191e-02, -1.259e-01, 2.270e-02, -2.604e-02, 4.138e-02, -2.793e-02, 3.706e-02, -7.213e-03, -1.064e-01), r);\n\tr = MulAdd(s7_1, M4(1.135e-01, -1.115e-02, 5.197e-02, -6.151e-02, -5.704e-02, 2.382e-02, -1.556e-03, -7.628e-02, 4.024e-02, 1.051e-01, -1.004e-02, 3.111e-02, -9.817e-02, 5.772e-02, 7.609e-02, -6.089e-02), r);\n\tr = MulAdd(s7_2, M4(-4.865e-03, 1.303e-01, -1.522e-02, 7.056e-02, 1.393e-01, 4.428e-02, -8.566e-02, 7.840e-02, -8.433e-02, -1.209e-02, -4.745e-02, -1.311e-01, 9.661e-02, 3.457e-02, 2.445e-02, 1.207e-01), r);\n\tr = MulAdd(s7_3, M4(-4.056e-02, 1.168e-02, -3.411e-02, -3.930e-02, -2.268e-01, 2.466e-03, -1.287e-01, -2.696e-02, 1.901e-02, 2.281e-02, 1.648e-01, -1.948e-02, -3.647e-02, -5.890e-02, 2.151e-02, 1.851e-02), r);\n\tr = MulAdd(s7_4, M4(1.090e-01, 4.344e-02, 9.973e-02, 5.995e-02, -9.834e-02, 4.627e-02, 1.579e-02, -4.333e-02, -4.674e-02, 6.055e-02, 1.179e-01, 1.393e-01, -2.063e-01, -7.704e-02, -5.538e-02, 9.934e-02), r);\n\tr = MulAdd(s7_5, M4(1.671e-01, -5.808e-02, 1.099e-02, 3.928e-02, -5.584e-03, -9.890e-02, 3.165e-02, 3.469e-02, 1.424e-01, 6.162e-02, 8.217e-03, -1.903e-02, 5.581e-02, -4.533e-02, -1.257e-01, -4.698e-02), r);\n\tr = MulAdd(s7_6, M4(-1.862e-02, -1.673e-02, 8.471e-02, 4.346e-02, -2.911e-03, -7.640e-02, -1.346e-02, 1.239e-01, 1.030e-01, -3.699e-02, 2.548e-02, -3.951e-02, -7.803e-02, -6.745e-02, 2.174e-01, 1.784e-01), r);\n\tr = MulAdd(s7_7, M4(5.429e-02, -3.890e-02, -3.193e-02, 1.398e-01, -3.613e-02, -4.545e-03, 1.747e-01, -3.892e-02, -7.894e-03, 8.938e-02, -6.410e-02, 9.848e-02, 2.122e-04, -1.926e-02, 1.200e-01, -3.913e-02), r);\n\tr = MulAdd(s7_8, M4(9.066e-02, 1.003e-01, 8.942e-02, 2.592e-02, 7.945e-02, 6.145e-02, -3.691e-02, -3.155e-02, 6.701e-02, 6.215e-02, 1.511e-02, 7.923e-02, -1.016e-01, -5.384e-02, 1.000e-01, -9.423e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -6.477e-03, 3.775e-02, -2.850e-02, -2.859e-03 };\n\tr = MulAdd(s0_0, M4(1.729e-03, -2.254e-02, -1.744e-01, -9.125e-02, 2.046e-02, 2.762e-02, 5.534e-02, -1.482e-03, -8.561e-02, -3.427e-02, -2.666e-02, -8.006e-02, 8.221e-02, -9.192e-02, -1.170e-02, -1.189e-02), r);\n\tr = MulAdd(s0_1, M4(-1.153e-01, -3.245e-02, 1.439e-02, -5.300e-02, 9.817e-03, -4.178e-02, -5.941e-02, -2.114e-02, -1.534e-01, -1.211e-01, 1.250e-01, -3.088e-02, -7.634e-02, 5.608e-02, -9.212e-02, 3.649e-02), r);\n\tr = MulAdd(s0_2, M4(7.142e-02, -7.284e-02, 1.252e-01, -6.431e-02, -2.975e-02, 1.125e-03, 5.923e-02, -3.391e-03, -1.135e-01, 7.447e-03, 2.585e-02, -8.507e-02, 2.353e-02, -3.786e-02, 2.699e-03, -5.200e-02), r);\n\tr = MulAdd(s0_3, M4(6.371e-02, 6.001e-02, -9.614e-02, -2.696e-02, -5.555e-02, -7.743e-02, -1.671e-02, 3.010e-02, -7.935e-02, 8.815e-02, -2.964e-02, 3.666e-02, -6.476e-03, 1.233e-01, -5.623e-02, -1.599e-02), r);\n\tr = MulAdd(s0_4, M4(-3.674e-02, -3.006e-01, 2.545e-01, 5.876e-02, -6.356e-02, 8.586e-02, -1.498e-02, -2.176e-02, -9.812e-02, -1.406e-01, 6.643e-02, -1.857e-01, -3.230e-02, 1.400e-01, 2.269e-01, 1.178e-01), r);\n\tr = MulAdd(s0_5, M4(2.677e-02, -2.124e-01, -1.017e-01, 1.325e-01, 1.358e-02, -6.512e-02, -1.187e-01, 1.181e-02, -3.256e-02, -3.551e-02, -2.776e-02, 7.520e-02, -6.454e-02, -1.606e-01, -9.878e-02, -1.435e-02), r);\n\tr = MulAdd(s0_6, M4(-4.028e-02, -4.131e-03, 3.061e-02, 3.977e-02, -2.998e-02, -8.966e-02, 1.969e-01, 2.158e-02, -7.177e-02, 3.715e-02, 4.213e-02, -6.517e-02, -3.402e-02, -1.920e-02, 9.819e-03, -3.927e-02), r);\n\tr = MulAdd(s0_7, M4(6.645e-02, 2.757e-02, -4.598e-02, 9.114e-02, -6.951e-02, -2.374e-02, 8.852e-03, -1.130e-01, -8.206e-02, 3.982e-03, 4.484e-02, -3.798e-02, 7.936e-02, -9.804e-03, 5.960e-02, -8.859e-02), r);\n\tr = MulAdd(s0_8, M4(-5.545e-02, 8.134e-02, 5.924e-02, 9.790e-02, -6.810e-02, -1.845e-02, 7.648e-02, -5.781e-02, 2.050e-02, 6.863e-02, 1.100e-01, 1.235e-01, 3.950e-02, -3.621e-02, -7.890e-02, 1.882e-02), r);\n\tr = MulAdd(s1_0, M4(6.511e-02, 8.445e-03, -1.497e-01, 6.653e-02, 1.452e-01, 1.195e-01, 5.411e-02, -1.902e-02, 1.324e-01, 4.688e-02, 6.516e-03, -5.909e-02, 1.871e-01, -1.824e-02, 1.369e-01, -6.272e-02), r);\n\tr = MulAdd(s1_1, M4(8.474e-02, -6.450e-02, 9.576e-02, 1.412e-01, 3.813e-02, -4.383e-02, 7.060e-03, 1.103e-01, -3.901e-03, -1.998e-01, 1.009e-01, 8.163e-02, -1.379e-01, -1.609e-01, 4.879e-02, 7.951e-02), r);\n\tr = MulAdd(s1_2, M4(7.465e-02, 4.864e-02, 1.110e-01, -1.301e-02, -1.781e-03, 5.838e-02, 6.237e-03, 5.422e-02, -3.923e-02, 3.430e-02, 1.450e-01, -1.343e-01, -1.255e-01, 5.629e-02, 3.434e-02, -4.666e-02), r);\n\tr = MulAdd(s1_3, M4(-1.247e-01, -7.170e-03, -1.318e-01, -4.028e-02, 1.527e-01, -8.669e-03, -1.660e-02, -1.115e-01, 3.093e-02, -3.498e-02, -1.031e-01, 1.345e-01, -2.094e-02, 1.080e-01, 9.520e-02, 3.174e-02), r);\n\tr = MulAdd(s1_4, M4(1.960e-02, -2.152e-01, -5.272e-02, -5.503e-03, -8.628e-02, 1.454e-01, -4.903e-02, -1.123e-02, -1.059e-01, -3.930e-01, 5.321e-02, -1.420e-01, 5.778e-02, 1.822e-01, 2.204e-01, 9.447e-02), r);\n\tr = MulAdd(s1_5, M4(-1.345e-02, 8.841e-02, -4.786e-02, 4.486e-02, 5.109e-02, 2.087e-02, -1.878e-01, -4.448e-02, -8.064e-03, 8.815e-02, -3.612e-01, 2.870e-02, 1.136e-01, -5.213e-02, -3.119e-03, -1.653e-01), r);\n\tr = MulAdd(s1_6, M4(-1.411e-01, -3.511e-02, -8.128e-02, 2.965e-03, -5.781e-02, -1.920e-02, 2.130e-02, -9.284e-02, 1.356e-01, -1.645e-02, -6.429e-02, -2.718e-02, 2.786e-02, 9.168e-02, -1.069e-01, 1.189e-02), r);\n\tr = MulAdd(s1_7, M4(-1.228e-01, 3.885e-02, -9.280e-02, 2.120e-02, -6.863e-02, 5.108e-02, 6.707e-03, 1.515e-03, 6.154e-02, -5.704e-02, 1.902e-01, -5.617e-02, -6.916e-03, 4.455e-03, -1.171e-01, 8.232e-02), r);\n\tr = MulAdd(s1_8, M4(6.637e-02, 3.427e-02, -2.434e-03, -5.802e-03, -1.092e-01, 5.008e-02, -8.846e-02, -9.690e-02, -4.769e-02, 1.564e-01, -1.072e-02, 6.166e-02, 1.037e-03, 1.656e-01, -6.777e-02, 1.529e-01), r);\n\tr = MulAdd(s2_0, M4(-8.657e-02, -1.683e-01, -8.438e-02, -1.262e-02, 4.213e-02, 4.478e-02, -2.364e-02, 4.354e-02, -1.705e-02, 1.555e-02, 1.303e-02, 3.047e-02, 1.144e-02, 1.014e-02, 7.722e-02, 2.513e-02), r);\n\tr = MulAdd(s2_1, M4(-6.315e-03, 1.265e-01, -1.380e-01, 7.690e-03, 3.008e-03, -1.853e-02, 1.512e-02, 1.030e-01, -1.156e-01, -2.136e-02, 4.247e-02, 2.354e-02, -1.225e-01, 4.783e-02, -3.002e-02, -8.387e-02), r);\n\tr = MulAdd(s2_2, M4(9.205e-03, -1.489e-01, 1.314e-01, 7.084e-02, -3.115e-02, -3.416e-02, -6.130e-02, -3.573e-03, -4.312e-02, -5.232e-03, -7.607e-02, -3.608e-02, -5.017e-02, 7.033e-02, -6.234e-02, 5.745e-02), r);\n\tr = MulAdd(s2_3, M4(-2.089e-02, -5.410e-02, -8.417e-02, 1.406e-01, -2.626e-02, 7.849e-02, 5.396e-02, -2.270e-02, 5.093e-02, -6.051e-02, 7.279e-02, -6.783e-02, -5.295e-02, -9.793e-02, -9.941e-02, -2.618e-02), r);\n\tr = MulAdd(s2_4, M4(4.010e-02, 9.791e-02, 1.034e-01, 4.750e-02, 2.232e-02, 1.779e-01, 8.533e-02, 4.675e-02, 3.716e-02, -1.273e-02, -6.090e-02, 2.041e-02, 6.300e-02, 1.023e-01, -5.345e-02, -2.280e-02), r);\n\tr = MulAdd(s2_5, M4(1.838e-01, -1.282e-02, -1.857e-01, 4.965e-02, 4.660e-02, -8.981e-02, 4.691e-02, 7.740e-03, 4.574e-02, -6.827e-02, 6.828e-03, -5.449e-02, -4.020e-02, -6.164e-02, 3.373e-01, 2.602e-03), r);\n\tr = MulAdd(s2_6, M4(1.133e-02, -7.793e-02, 8.614e-02, 2.504e-02, 1.168e-02, -5.753e-02, 9.968e-02, -1.020e-01, -8.425e-02, -1.568e-02, 1.029e-01, -2.861e-02, 1.748e-02, 1.094e-01, 1.656e-01, -1.022e-02), r);\n\tr = MulAdd(s2_7, M4(-7.059e-02, -2.138e-02, -8.280e-02, -5.897e-02, 5.956e-02, -9.888e-02, -2.802e-02, -1.706e-02, -1.351e-01, 1.230e-01, 7.644e-03, -1.443e-02, 1.220e-01, -2.055e-01, -1.977e-02, 2.979e-02), r);\n\tr = MulAdd(s2_8, M4(5.847e-02, -1.408e-01, 1.266e-01, -6.190e-03, 1.284e-01, -1.300e-03, 8.179e-02, -9.440e-02, -7.300e-03, -9.068e-02, 8.197e-02, -1.620e-01, 2.682e-01, -8.393e-02, -1.648e-01, -7.976e-02), r);\n\tr = MulAdd(s3_0, M4(-4.442e-02, -1.199e-02, 2.013e-02, -3.906e-02, 1.005e-01, -3.356e-02, -2.241e-01, -2.535e-02, -1.345e-02, -1.797e-02, -4.521e-02, 8.524e-02, 5.123e-02, 2.131e-02, -4.011e-02, 5.759e-02), r);\n\tr = MulAdd(s3_1, M4(-3.284e-02, 8.050e-02, -2.653e-02, 3.487e-03, 3.558e-02, -6.469e-02, -6.312e-02, 1.345e-01, -1.509e-01, 9.212e-02, 5.070e-02, -1.091e-01, 4.122e-02, -1.963e-02, -7.931e-02, 4.906e-03), r);\n\tr = MulAdd(s3_2, M4(-1.307e-02, 3.662e-02, -3.480e-02, -5.718e-02, -4.032e-02, 2.256e-02, 2.065e-01, 6.587e-02, 4.812e-04, 9.005e-02, -1.605e-01, -1.074e-01, 1.466e-01, -2.251e-02, 2.198e-02, -2.744e-02), r);\n\tr = MulAdd(s3_3, M4(2.438e-02, -2.521e-02, -2.428e-02, 3.919e-02, 2.668e-01, 9.647e-02, 2.685e-01, -7.129e-02, -1.831e-01, -8.313e-02, 4.906e-02, 2.703e-02, -1.305e-01, 1.368e-02, -5.768e-02, 2.027e-03), r);\n\tr = MulAdd(s3_4, M4(5.094e-02, 1.714e-02, 1.254e-01, -5.990e-02, -8.004e-02, 1.239e-01, -1.881e-01, -2.966e-02, -7.121e-02, -1.130e-01, -6.533e-02, 4.745e-02, -1.690e-01, -5.414e-02, -3.060e-02, -2.106e-02), r);\n\tr = MulAdd(s3_5, M4(-8.028e-02, 8.060e-02, 5.008e-02, 8.212e-02, 3.428e-02, 3.296e-02, 9.783e-02, -1.039e-01, 8.464e-02, 1.349e-01, -1.113e-01, 5.679e-02, -3.802e-03, 8.044e-03, 4.043e-03, 8.317e-02), r);\n\tr = MulAdd(s3_6, M4(3.431e-02, 3.496e-02, 7.038e-02, -3.111e-02, 4.533e-02, -7.965e-02, -9.517e-02, 3.298e-02, -1.059e-01, 2.824e-02, 1.665e-02, -1.818e-02, -6.589e-02, 1.536e-01, -4.950e-02, -4.898e-02), r);\n\tr = MulAdd(s3_7, M4(4.211e-02, -4.371e-02, -3.204e-03, -2.210e-02, -1.089e-01, -2.018e-01, 1.237e-01, -5.726e-02, 2.136e-01, -8.615e-02, -5.962e-02, -6.428e-02, -2.377e-04, -6.213e-02, -1.395e-01, -6.767e-02), r);\n\tr = MulAdd(s3_8, M4(3.999e-02, -7.282e-03, 2.643e-02, -6.319e-02, 4.068e-02, 1.332e-01, 1.258e-01, -3.770e-02, 7.424e-03, 2.775e-02, 1.428e-01, -1.009e-01, 1.093e-01, 4.892e-02, -4.967e-02, -3.466e-02), r);\n\tr = MulAdd(s4_0, M4(8.501e-02, 3.383e-02, -5.774e-02, 5.613e-02, -1.644e-01, 6.198e-02, 1.756e-01, 2.447e-02, -3.727e-02, -1.792e-02, -5.936e-03, -1.228e-01, 4.292e-03, -7.566e-02, 1.219e-01, 8.670e-02), r);\n\tr = MulAdd(s4_1, M4(-5.112e-02, -2.118e-02, -4.575e-02, -3.103e-02, -4.089e-02, 2.808e-02, -6.258e-02, -1.398e-03, -1.654e-01, 5.027e-02, 9.681e-03, 3.003e-02, 2.430e-01, -6.095e-02, -1.100e-01, 8.279e-02), r);\n\tr = MulAdd(s4_2, M4(-1.179e-02, -1.193e-02, -2.892e-02, -6.276e-02, -4.313e-02, 1.351e-01, -7.226e-03, -9.222e-02, 1.969e-01, -7.974e-02, 7.191e-02, -3.026e-02, 2.339e-01, 2.023e-02, 5.213e-02, -2.488e-02), r);\n\tr = MulAdd(s4_3, M4(1.140e-02, -8.909e-03, -7.873e-02, -1.323e-02, -3.844e-02, 5.506e-02, -3.270e-01, 8.929e-03, -2.479e-02, -5.558e-02, -1.106e-01, -7.180e-02, 9.166e-02, 6.054e-02, -1.063e-01, -6.591e-02), r);\n\tr = MulAdd(s4_4, M4(5.246e-02, -2.151e-01, -2.901e-02, 2.235e-02, 1.954e-01, 8.036e-02, -4.048e-02, 3.235e-02, 8.113e-02, 1.880e-01, 1.339e-01, -4.269e-02, 6.020e-02, 1.229e-01, -7.152e-02, -3.236e-02), r);\n\tr = MulAdd(s4_5, M4(-8.713e-02, 2.404e-02, -2.114e-02, -2.255e-02, 2.670e-03, -5.205e-02, -1.573e-01, 1.249e-01, 1.333e-01, -6.351e-04, -2.112e-02, -1.401e-01, 5.596e-02, -8.153e-02, 1.756e-02, -1.811e-01), r);\n\tr = MulAdd(s4_6, M4(3.555e-02, -2.808e-03, 3.335e-02, 1.557e-02, -9.802e-02, -2.207e-02, 7.928e-02, 1.615e-02, 1.877e-01, 7.622e-02, 3.180e-01, -1.062e-01, 1.027e-01, -3.208e-02, 3.778e-02, -7.205e-02), r);\n\tr = MulAdd(s4_7, M4(-2.431e-02, 5.161e-03, -1.301e-01, 3.674e-02, -6.399e-02, 1.295e-02, 1.965e-02, -5.844e-02, 2.093e-01, -1.116e-01, -2.932e-01, -1.137e-01, 1.008e-01, -9.623e-02, -1.487e-01, -2.974e-02), r);\n\tr = MulAdd(s4_8, M4(2.896e-02, -4.900e-02, -7.973e-02, -3.879e-02, -6.687e-02, -3.486e-02, 6.078e-03, -6.165e-02, 4.432e-02, 2.105e-01, -3.078e-01, 3.181e-01, 7.459e-02, -6.405e-02, 2.317e-02, -1.176e-01), r);\n\tr = MulAdd(s5_0, M4(-6.517e-02, -8.222e-02, 2.485e-03, 7.133e-02, -9.379e-02, -6.617e-02, -4.647e-02, 8.790e-03, -1.087e-02, 1.703e-02, 1.943e-02, -2.242e-02, -4.682e-03, 1.004e-02, -3.044e-03, -5.008e-02), r);\n\tr = MulAdd(s5_1, M4(-1.715e-01, 8.083e-02, -2.528e-01, -2.576e-01, -5.399e-02, 4.051e-02, 1.056e-02, 4.317e-02, -1.016e-01, -3.923e-02, -6.484e-02, 4.782e-02, -6.041e-02, 3.697e-02, 2.728e-02, -2.102e-02), r);\n\tr = MulAdd(s5_2, M4(-1.143e-01, -4.641e-02, 1.607e-01, -2.974e-02, 5.074e-02, 2.419e-02, 1.151e-01, 2.244e-03, 2.447e-03, -7.315e-03, -2.897e-02, 1.462e-02, -6.107e-02, 9.528e-02, 1.742e-02, -1.224e-01), r);\n\tr = MulAdd(s5_3, M4(3.139e-02, -1.042e-01, 3.502e-01, 1.316e-01, 4.263e-06, 7.788e-02, -1.001e-01, 1.368e-01, -1.714e-02, 1.022e-01, -7.639e-02, 9.745e-02, -1.262e-01, 1.065e-01, 1.174e-02, 1.209e-01), r);\n\tr = MulAdd(s5_4, M4(-2.895e-03, 2.755e-02, 2.364e-01, -5.040e-02, 7.315e-03, 8.171e-02, 6.080e-02, 9.226e-02, -4.391e-02, -1.097e-01, 9.140e-02, 1.581e-01, -4.942e-02, 1.714e-01, -7.025e-02, 7.177e-02), r);\n\tr = MulAdd(s5_5, M4(-1.390e-01, -5.209e-02, 1.909e-01, 5.650e-02, -3.279e-02, -3.216e-02, 1.367e-02, 1.828e-02, -1.384e-02, 5.998e-02, -7.345e-03, 8.610e-02, -7.273e-02, 1.086e-01, -6.571e-02, -1.284e-01), r);\n\tr = MulAdd(s5_6, M4(5.034e-02, -1.828e-01, 1.473e-01, -1.247e-01, 1.692e-02, -1.216e-01, -4.455e-02, -8.595e-03, 1.730e-02, 6.486e-02, -6.406e-02, 2.810e-02, -6.608e-02, -9.698e-02, 7.211e-02, -1.030e-02), r);\n\tr = MulAdd(s5_7, M4(-9.417e-02, 5.507e-02, 1.827e-02, -9.012e-02, -6.143e-02, 1.451e-02, 5.554e-02, 1.589e-01, -9.232e-02, -2.268e-01, -5.109e-02, -2.465e-02, -9.571e-03, 1.592e-02, 7.154e-02, 3.195e-02), r);\n\tr = MulAdd(s5_8, M4(1.122e-01, 2.526e-02, 1.345e-01, -1.378e-02, -3.588e-02, 3.086e-02, -1.854e-02, -2.739e-03, -6.601e-03, -2.751e-02, 6.659e-02, -4.153e-02, -4.977e-02, 5.489e-02, 1.320e-01, -2.698e-02), r);\n\tr = MulAdd(s6_0, M4(2.353e-02, -1.135e-02, 4.539e-02, -3.690e-02, 1.588e-02, 1.124e-01, -6.236e-03, -5.471e-02, 3.487e-02, 9.397e-02, 1.113e-01, -5.103e-02, 9.854e-03, -1.466e-02, -4.279e-02, -4.463e-02), r);\n\tr = MulAdd(s6_1, M4(4.381e-02, 2.766e-02, 5.584e-02, -9.172e-02, 1.119e-02, -4.151e-02, -1.586e-01, 3.715e-02, -1.467e-01, -3.013e-02, -2.240e-03, 4.990e-02, -1.190e-01, 1.239e-02, 4.518e-02, -6.321e-02), r);\n\tr = MulAdd(s6_2, M4(-9.381e-02, -6.567e-02, -4.507e-02, 2.242e-02, 5.115e-02, 2.880e-02, 6.675e-02, -1.370e-02, -1.846e-01, -3.458e-02, 1.782e-01, -5.527e-02, 3.700e-02, 3.149e-02, -1.797e-02, 2.019e-03), r);\n\tr = MulAdd(s6_3, M4(-8.134e-02, 3.108e-02, -7.165e-02, 6.033e-02, 4.819e-02, 4.188e-03, -3.899e-02, 4.798e-02, -5.876e-02, -7.930e-02, 6.983e-03, -4.751e-02, 6.847e-02, 2.736e-02, -9.448e-02, -1.418e-01), r);\n\tr = MulAdd(s6_4, M4(-1.572e-01, 9.606e-02, -7.588e-02, -8.889e-02, -1.969e-02, 3.222e-02, -1.435e-01, -4.279e-02, 1.019e-01, -4.039e-02, -2.811e-02, 8.374e-02, 3.470e-02, -8.823e-02, 1.589e-02, 8.212e-02), r);\n\tr = MulAdd(s6_5, M4(-1.517e-01, 2.006e-03, 1.170e-01, 1.126e-02, -9.371e-02, 2.775e-03, 9.179e-02, -7.633e-03, -9.387e-02, -1.895e-02, -3.722e-03, -6.392e-02, 6.610e-02, -3.510e-02, 1.864e-02, -8.583e-02), r);\n\tr = MulAdd(s6_6, M4(1.429e-02, -1.857e-01, -9.834e-02, 4.205e-02, -9.407e-02, 2.892e-02, 1.544e-02, 9.583e-02, 4.782e-02, 9.223e-02, 6.596e-02, -5.788e-02, -8.740e-02, -3.463e-02, 1.284e-01, -5.233e-03), r);\n\tr = MulAdd(s6_7, M4(3.617e-02, -2.159e-01, -1.628e-01, -1.198e-01, -4.794e-03, 2.093e-02, 1.201e-02, -8.133e-02, -2.638e-02, 5.355e-02, -1.989e-01, 1.090e-01, 9.783e-02, 1.182e-01, 1.286e-01, -1.415e-02), r);\n\tr = MulAdd(s6_8, M4(4.042e-02, 3.907e-02, -5.044e-02, 1.136e-01, 1.351e-02, -8.938e-02, 7.441e-02, 1.342e-01, 1.967e-01, -5.279e-02, 7.863e-04, -9.997e-02, -2.084e-03, 9.957e-02, 4.909e-02, -7.433e-02), r);\n\tr = MulAdd(s7_0, M4(-4.084e-02, -3.212e-02, -1.794e-01, -1.152e-01, -2.028e-02, 2.823e-02, 1.099e-01, -1.089e-02, -8.768e-02, 4.997e-02, -6.084e-02, -8.466e-02, 1.776e-01, 1.520e-01, -2.691e-02, 8.493e-02), r);\n\tr = MulAdd(s7_1, M4(1.827e-01, 7.171e-02, 1.889e-01, -3.011e-02, 7.199e-02, -3.183e-02, 2.527e-02, -2.381e-03, -1.245e-01, -3.135e-03, 1.139e-01, -1.420e-02, -1.221e-01, -7.495e-02, -1.821e-01, -1.277e-02), r);\n\tr = MulAdd(s7_2, M4(6.847e-02, -1.250e-01, -2.697e-02, 2.539e-02, 5.613e-02, -3.526e-02, -1.045e-01, 1.635e-02, -6.816e-02, -6.310e-02, -2.924e-02, 1.206e-02, -1.618e-02, 2.308e-01, 1.952e-02, -9.057e-02), r);\n\tr = MulAdd(s7_3, M4(2.349e-05, -3.286e-02, -1.420e-01, -4.500e-02, 3.800e-02, 3.560e-02, 4.923e-02, -4.756e-02, 1.107e-03, -1.182e-01, -1.359e-01, 2.942e-02, -3.852e-02, 1.207e-01, -1.016e-01, -1.363e-02), r);\n\tr = MulAdd(s7_4, M4(-1.065e-01, -3.812e-03, 2.468e-02, -5.968e-02, 8.090e-02, 9.870e-02, -1.239e-01, -1.764e-01, -4.936e-02, -4.465e-02, 1.318e-01, -1.242e-02, 1.837e-02, -9.250e-02, -6.623e-02, 3.246e-01), r);\n\tr = MulAdd(s7_5, M4(-2.284e-02, -6.922e-02, 9.377e-02, 1.242e-01, -5.890e-02, 4.002e-02, -1.991e-02, -1.977e-02, -4.955e-02, 1.347e-02, 5.959e-02, -7.623e-03, -1.573e-02, 1.391e-01, 1.271e-01, -6.322e-02), r);\n\tr = MulAdd(s7_6, M4(-5.371e-03, 2.781e-04, -2.736e-02, -6.368e-02, -7.276e-02, -5.966e-02, 4.382e-02, -1.299e-03, 5.660e-02, 7.911e-02, -4.893e-02, 1.085e-02, 1.875e-03, -5.381e-02, -1.343e-01, -8.671e-03), r);\n\tr = MulAdd(s7_7, M4(-8.190e-02, -3.811e-02, 3.224e-02, -8.747e-02, -9.664e-02, -8.016e-02, -4.470e-02, -4.944e-02, 3.981e-03, 9.605e-02, -3.912e-02, -2.054e-02, -2.541e-02, -7.516e-02, -1.922e-01, -8.374e-02), r);\n\tr = MulAdd(s7_8, M4(-2.115e-01, 1.455e-01, 7.647e-02, 1.253e-01, -5.201e-02, 2.892e-02, -1.013e-01, 1.007e-01, 1.441e-01, 6.061e-02, -9.842e-03, -1.271e-01, -3.331e-02, -3.965e-02, 8.546e-02, -1.729e-01), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.920e-02, 2.727e-03, 2.658e-02, 7.202e-02 };\n\tr = MulAdd(s0_0, M4(-8.396e-02, 6.257e-02, 2.046e-01, 4.715e-02, 8.119e-02, 3.792e-02, -5.588e-02, -4.133e-02, -7.613e-02, 6.871e-02, 3.404e-03, -3.979e-02, -3.971e-02, 5.339e-02, 5.938e-02, -6.581e-03), r);\n\tr = MulAdd(s0_1, M4(-8.824e-02, 2.829e-02, -1.519e-01, 1.856e-03, 3.305e-02, -6.249e-02, 6.808e-03, -5.331e-02, 1.412e-01, -3.578e-02, -3.772e-02, 5.877e-02, 3.664e-02, -1.509e-01, 6.215e-03, -1.218e-01), r);\n\tr = MulAdd(s0_2, M4(-1.489e-02, -9.221e-02, -5.628e-02, -7.312e-02, -4.338e-02, 4.579e-02, 1.131e-01, -2.055e-02, -3.589e-02, -3.988e-02, 1.304e-02, -1.342e-01, 3.737e-02, 2.073e-01, 1.726e-02, 3.786e-02), r);\n\tr = MulAdd(s0_3, M4(-2.719e-02, -3.733e-02, -3.726e-02, 1.658e-02, 1.124e-01, 1.442e-02, 2.669e-02, -8.319e-02, -1.084e-02, 1.207e-02, -1.302e-01, 2.021e-03, -7.741e-02, -1.868e-02, -1.055e-01, -2.045e-02), r);\n\tr = MulAdd(s0_4, M4(4.953e-02, -1.142e-01, -1.336e-01, 5.330e-02, 6.012e-02, 7.107e-02, 1.274e-02, -1.497e-01, 1.689e-01, -1.159e-01, -1.850e-01, -9.835e-03, 6.214e-02, 2.969e-02, 2.910e-02, 1.322e-01), r);\n\tr = MulAdd(s0_5, M4(2.856e-02, 4.993e-02, -1.014e-01, -4.757e-02, 1.783e-02, 2.150e-02, 6.456e-02, -8.850e-03, 4.848e-02, 1.232e-01, -1.940e-02, 2.387e-02, 2.107e-02, 7.759e-02, 1.312e-02, -8.911e-02), r);\n\tr = MulAdd(s0_6, M4(1.169e-01, -3.837e-03, -1.560e-01, -6.673e-02, 2.033e-02, -7.245e-02, -2.519e-02, -6.096e-02, -7.451e-02, -4.305e-02, -1.036e-01, 2.808e-02, 1.520e-02, -1.628e-02, -3.010e-02, 2.474e-02), r);\n\tr = MulAdd(s0_7, M4(-5.442e-03, -1.942e-02, -1.479e-02, 2.604e-02, 3.023e-02, 1.808e-02, 4.114e-02, 6.142e-02, -3.394e-02, 3.443e-02, 4.459e-03, -4.054e-02, -5.407e-02, -7.083e-02, 3.597e-02, 2.541e-02), r);\n\tr = MulAdd(s0_8, M4(1.896e-01, -6.667e-02, -2.874e-02, -1.202e-01, -2.225e-02, -1.835e-02, 4.985e-02, -1.007e-03, -4.515e-02, -1.612e-02, -6.822e-02, 2.557e-02, -4.599e-03, 2.108e-02, 1.646e-02, 1.822e-01), r);\n\tr = MulAdd(s1_0, M4(8.316e-02, 4.972e-02, 5.940e-02, -3.601e-02, -2.570e-02, -3.406e-02, 1.026e-01, 1.224e-01, 3.587e-02, 6.016e-03, 1.227e-01, -9.876e-02, 1.664e-02, 9.671e-02, -1.050e-03, 8.077e-02), r);\n\tr = MulAdd(s1_1, M4(1.094e-02, 6.376e-02, 1.504e-01, 9.308e-02, 1.487e-01, 1.374e-01, -7.933e-02, 1.163e-01, 6.827e-02, -1.194e-01, 1.051e-01, 6.315e-03, 1.051e-01, -1.439e-01, 3.877e-02, -1.417e-01), r);\n\tr = MulAdd(s1_2, M4(-8.041e-03, 1.070e-01, -3.588e-02, 7.473e-02, 5.798e-02, -3.620e-02, -1.266e-01, -2.034e-02, -6.879e-02, -1.322e-01, 8.333e-02, -1.265e-01, 7.251e-02, -6.806e-02, -2.084e-01, 3.071e-02), r);\n\tr = MulAdd(s1_3, M4(-1.856e-02, 3.163e-02, 7.100e-02, -9.220e-02, -1.164e-01, -1.826e-01, 1.023e-01, 9.672e-02, 1.518e-01, -6.912e-02, 2.306e-01, 1.432e-01, -9.888e-02, -5.789e-02, -6.058e-02, -1.396e-01), r);\n\tr = MulAdd(s1_4, M4(-5.385e-02, -1.271e-01, 8.932e-02, 5.435e-02, 2.220e-03, 1.040e-01, -1.587e-01, -4.732e-02, -1.000e-01, 7.554e-02, 5.049e-02, 4.207e-02, -1.358e-01, 1.794e-02, 8.754e-02, 6.202e-02), r);\n\tr = MulAdd(s1_5, M4(4.379e-03, 1.836e-02, 7.793e-02, -1.987e-02, -6.199e-02, 9.397e-02, -7.464e-02, 5.137e-02, 5.078e-02, -3.277e-02, -3.652e-02, 1.251e-01, -7.142e-02, -2.838e-02, 1.065e-01, 9.548e-02), r);\n\tr = MulAdd(s1_6, M4(2.106e-02, 1.698e-02, 1.823e-01, -1.049e-02, -1.023e-01, 7.420e-02, 6.849e-02, -2.680e-02, 1.588e-02, -2.739e-01, 6.962e-02, -6.241e-02, 2.071e-02, -2.705e-02, 1.457e-01, -1.072e-01), r);\n\tr = MulAdd(s1_7, M4(-5.482e-02, 9.531e-02, 2.216e-02, 1.134e-01, 6.476e-02, 1.798e-01, -5.868e-02, -5.474e-02, 1.957e-02, 8.487e-03, -1.855e-02, -5.016e-02, -9.990e-02, -4.489e-03, -4.724e-02, -1.959e-02), r);\n\tr = MulAdd(s1_8, M4(-5.301e-02, -3.228e-02, -3.431e-02, -1.756e-02, -5.888e-02, -1.213e-01, -7.543e-02, -1.655e-02, -8.627e-02, -8.473e-02, -1.860e-01, -9.430e-02, -9.301e-02, -1.847e-02, -1.846e-01, -2.675e-02), r);\n\tr = MulAdd(s2_0, M4(-1.116e-03, 1.984e-01, 8.365e-02, -1.080e-01, 3.379e-02, 1.197e-01, -6.953e-02, -1.108e-01, -8.161e-02, -1.120e-01, -1.096e-01, 3.466e-02, -8.288e-02, -2.875e-02, 5.789e-02, -1.645e-01), r);\n\tr = MulAdd(s2_1, M4(-4.304e-02, -3.669e-01, -1.122e-03, 3.619e-02, 1.861e-02, -1.261e-02, 1.334e-02, 4.227e-02, -2.607e-02, -1.268e-01, -4.250e-02, 9.329e-02, 2.142e-02, 2.399e-01, -3.785e-02, -2.165e-01), r);\n\tr = MulAdd(s2_2, M4(1.717e-01, 4.601e-02, 7.285e-02, 1.641e-01, 3.082e-02, 4.744e-02, 1.024e-01, -1.805e-02, 1.980e-02, 7.636e-02, 1.307e-01, 3.199e-03, 1.031e-01, 6.953e-02, 5.313e-02, 8.578e-02), r);\n\tr = MulAdd(s2_3, M4(-3.959e-02, 9.776e-02, -3.648e-02, -6.317e-02, -1.881e-02, -1.470e-01, -7.160e-02, -2.812e-02, -9.151e-02, -2.812e-02, 3.204e-02, -1.560e-01, -2.561e-01, 2.194e-02, -1.352e-01, 5.714e-02), r);\n\tr = MulAdd(s2_4, M4(1.179e-01, -9.014e-02, -1.723e-01, -3.048e-02, 2.041e-01, 1.623e-01, -5.811e-02, 2.392e-02, 2.907e-02, 7.798e-02, -1.402e-01, 5.638e-02, -1.392e-01, -6.102e-02, -1.454e-01, -8.343e-02), r);\n\tr = MulAdd(s2_5, M4(-6.665e-02, -1.900e-01, 3.355e-02, -3.858e-02, 1.273e-01, 5.205e-02, 6.613e-02, -1.686e-01, 5.957e-02, 2.084e-01, 4.997e-02, -1.078e-01, -1.243e-01, 1.989e-01, 3.212e-02, -7.405e-02), r);\n\tr = MulAdd(s2_6, M4(2.811e-02, 2.827e-02, -8.699e-02, 5.391e-03, -1.677e-02, 5.194e-02, -1.205e-01, -4.094e-02, 2.947e-02, -1.030e-01, -8.520e-02, -4.418e-03, -8.797e-02, -7.821e-02, -1.151e-01, -6.517e-02), r);\n\tr = MulAdd(s2_7, M4(-1.696e-01, -1.334e-01, 3.738e-02, -2.598e-02, -5.932e-02, 1.256e-02, -3.674e-02, 4.801e-02, -2.234e-02, -5.203e-02, -2.763e-02, 4.107e-02, -2.292e-01, 1.440e-02, -7.571e-02, -8.242e-02), r);\n\tr = MulAdd(s2_8, M4(4.696e-02, 1.477e-01, 8.007e-02, -9.830e-02, 3.139e-02, -1.273e-01, 7.095e-03, -6.454e-02, -5.214e-02, 2.861e-02, 1.585e-01, 1.357e-02, 1.475e-01, -3.230e-02, -4.577e-02, -1.059e-01), r);\n\tr = MulAdd(s3_0, M4(-2.252e-02, 1.338e-02, -1.358e-01, -6.354e-02, 4.917e-02, 4.904e-02, -8.928e-02, -1.837e-01, 1.973e-02, 4.783e-03, 1.707e-01, -3.115e-02, 7.732e-02, -5.697e-03, 4.607e-02, 5.169e-02), r);\n\tr = MulAdd(s3_1, M4(1.296e-02, -1.086e-01, -5.551e-02, -5.133e-02, 1.030e-02, -1.204e-01, 1.266e-01, -3.791e-03, -8.365e-02, 1.510e-01, 5.554e-02, -4.317e-02, 2.934e-02, -4.857e-02, -9.000e-02, -8.174e-02), r);\n\tr = MulAdd(s3_2, M4(2.791e-02, -5.920e-02, 8.420e-03, 2.844e-02, -1.942e-02, -1.035e-01, 5.318e-02, 1.820e-02, 5.579e-02, 2.278e-02, 1.166e-01, 2.042e-01, 5.956e-02, 1.558e-03, 1.131e-01, 7.742e-02), r);\n\tr = MulAdd(s3_3, M4(8.458e-02, -6.920e-02, 5.021e-02, -4.591e-02, 1.219e-01, 1.240e-01, 4.117e-02, -1.473e-02, 2.851e-02, -9.032e-02, 1.518e-01, 1.034e-01, -7.163e-02, -1.222e-01, 2.318e-02, 9.159e-02), r);\n\tr = MulAdd(s3_4, M4(1.075e-01, 4.295e-02, 1.551e-02, -1.004e-02, 6.269e-02, 1.251e-01, -1.786e-01, 2.617e-01, 5.514e-02, 1.150e-01, 3.540e-02, -4.715e-02, -2.372e-02, -2.104e-02, -3.770e-02, -3.209e-02), r);\n\tr = MulAdd(s3_5, M4(-2.779e-02, -1.541e-02, 3.910e-02, 6.499e-02, 1.786e-01, 2.785e-02, 1.080e-01, 6.422e-02, 8.128e-02, -5.753e-04, 6.851e-02, -9.486e-03, 5.335e-02, -2.182e-02, 7.441e-02, -1.735e-01), r);\n\tr = MulAdd(s3_6, M4(-6.663e-02, 1.650e-02, -7.590e-04, 5.202e-02, 1.628e-03, -4.763e-02, -9.231e-03, -6.298e-02, -1.443e-01, -1.467e-01, -1.160e-02, -3.925e-02, -5.014e-02, -3.762e-02, 3.894e-02, 7.811e-02), r);\n\tr = MulAdd(s3_7, M4(-1.213e-01, 9.338e-02, 7.873e-02, 1.343e-01, 1.435e-01, 2.037e-01, -2.489e-01, 1.518e-02, 9.782e-02, 6.091e-02, -7.512e-02, -9.813e-02, -1.407e-01, -3.279e-02, 2.124e-02, 8.105e-02), r);\n\tr = MulAdd(s3_8, M4(-9.767e-02, 1.018e-01, 7.291e-02, 6.664e-02, 1.303e-01, 9.835e-02, -3.387e-02, -1.254e-01, -7.274e-02, -6.490e-02, -8.099e-02, 8.225e-02, 1.014e-01, -9.791e-02, 1.910e-02, -1.359e-02), r);\n\tr = MulAdd(s4_0, M4(6.237e-02, -2.098e-02, -3.524e-02, -1.842e-02, -6.025e-03, -1.339e-02, -1.479e-01, -1.391e-01, -1.004e-01, 7.957e-02, 1.256e-01, 2.416e-02, 4.468e-02, -5.897e-02, 4.880e-02, 1.064e-01), r);\n\tr = MulAdd(s4_1, M4(1.518e-01, 2.555e-02, -2.027e-02, 4.877e-02, -1.120e-01, -7.960e-02, -1.309e-01, -1.421e-02, -1.558e-01, -1.644e-01, -5.664e-02, -3.298e-02, -8.471e-02, -1.006e-01, 1.330e-01, -1.327e-01), r);\n\tr = MulAdd(s4_2, M4(-4.238e-02, -1.514e-02, 2.417e-02, 3.420e-03, 4.216e-02, 9.089e-02, 8.527e-02, 8.454e-03, -7.779e-02, -7.727e-03, 2.072e-01, -1.901e-01, -1.010e-02, 3.595e-02, -1.229e-01, 4.745e-02), r);\n\tr = MulAdd(s4_3, M4(-6.419e-02, -5.132e-02, -6.213e-02, 5.459e-02, -6.912e-02, 2.448e-02, 8.193e-02, -3.265e-02, -1.697e-01, 2.783e-01, -1.581e-01, -2.180e-01, -7.239e-03, 7.356e-02, 1.891e-01, -7.637e-02), r);\n\tr = MulAdd(s4_4, M4(-1.999e-02, -1.105e-01, 6.978e-02, -4.610e-02, -6.091e-02, 5.815e-02, -1.244e-01, -8.634e-02, -2.659e-01, -2.601e-01, 3.830e-01, 2.879e-02, -1.113e-01, 1.182e-01, 1.204e-01, 5.876e-02), r);\n\tr = MulAdd(s4_5, M4(-1.752e-02, 9.014e-02, 1.071e-01, -1.964e-02, 1.287e-02, -1.100e-01, -1.074e-01, -5.476e-02, 2.557e-02, -1.321e-01, 5.911e-02, -6.585e-02, 8.432e-02, -7.117e-02, 3.125e-02, -3.480e-02), r);\n\tr = MulAdd(s4_6, M4(4.746e-03, -7.302e-02, -7.874e-02, -6.524e-02, -1.089e-01, 5.395e-02, -1.219e-01, 8.346e-02, -6.767e-02, 2.019e-01, 5.432e-02, 9.575e-02, -5.070e-04, -5.142e-02, 1.177e-01, 1.051e-01), r);\n\tr = MulAdd(s4_7, M4(-5.428e-02, 5.602e-02, 2.857e-02, 1.466e-01, -2.225e-02, -3.678e-02, -7.365e-02, -4.064e-02, -2.390e-02, 8.908e-02, -1.751e-01, -3.483e-01, 2.630e-03, -2.349e-01, 1.084e-01, 2.868e-02), r);\n\tr = MulAdd(s4_8, M4(-1.447e-02, 1.434e-01, 6.197e-02, 8.041e-02, 1.320e-01, -2.235e-01, -7.857e-02, 1.787e-02, -2.865e-02, 3.762e-01, -1.852e-01, 4.053e-01, 7.515e-03, -3.925e-02, 8.597e-02, 3.091e-02), r);\n\tr = MulAdd(s5_0, M4(-2.934e-02, 2.034e-01, -7.735e-02, -3.193e-02, -1.826e-02, 8.642e-03, 2.075e-02, 3.363e-02, 4.635e-02, 7.288e-02, -1.349e-01, 4.498e-02, -5.291e-02, 3.082e-02, -9.191e-03, 1.239e-02), r);\n\tr = MulAdd(s5_1, M4(4.098e-02, 2.291e-01, -4.124e-02, 2.460e-02, -5.447e-02, -1.430e-01, -2.160e-02, 3.745e-02, 1.351e-02, -3.519e-02, -1.025e-02, -1.228e-02, 1.061e-01, -2.792e-02, -1.762e-01, -1.218e-02), r);\n\tr = MulAdd(s5_2, M4(-1.660e-01, -1.650e-01, -6.943e-02, 6.321e-03, 1.122e-03, -6.026e-03, -1.170e-02, -3.466e-02, 2.570e-02, 1.026e-01, -1.145e-02, -8.252e-02, 1.478e-01, 1.972e-02, -3.516e-02, 6.122e-02), r);\n\tr = MulAdd(s5_3, M4(-1.429e-01, -1.929e-01, 7.832e-02, 2.394e-02, -5.004e-02, 7.451e-02, -1.243e-01, -1.176e-01, 6.872e-02, -1.054e-01, -4.966e-02, -1.551e-01, 3.259e-02, 1.193e-01, -7.004e-02, -7.566e-02), r);\n\tr = MulAdd(s5_4, M4(1.310e-02, 2.361e-01, 6.625e-02, -1.173e-01, -8.591e-02, 5.668e-02, -9.263e-02, 1.032e-02, -6.205e-02, -2.309e-01, 6.959e-02, 5.009e-02, 1.304e-02, 1.370e-01, 1.630e-02, -1.975e-02), r);\n\tr = MulAdd(s5_5, M4(-4.677e-02, -1.617e-01, -1.872e-01, -1.676e-02, -2.004e-02, 4.053e-02, -8.716e-02, 1.984e-02, -7.915e-02, 1.496e-01, 9.948e-02, 4.470e-02, -7.834e-02, 1.324e-01, -5.536e-03, -9.670e-02), r);\n\tr = MulAdd(s5_6, M4(-1.224e-01, 4.783e-02, 8.669e-02, -2.685e-01, 1.836e-03, 1.538e-02, 7.833e-03, -3.458e-02, 1.378e-02, 4.714e-02, 2.101e-02, -6.275e-02, 8.374e-02, -2.789e-02, -1.473e-01, -7.346e-02), r);\n\tr = MulAdd(s5_7, M4(1.537e-01, 7.065e-03, 2.026e-01, 6.581e-02, -2.118e-02, -1.650e-01, -5.360e-02, -7.651e-02, 1.194e-01, 6.108e-02, 6.343e-02, -2.503e-02, 3.796e-02, 8.866e-03, 1.308e-02, 1.915e-02), r);\n\tr = MulAdd(s5_8, M4(-6.067e-02, -1.150e-01, -5.869e-02, -1.623e-01, 7.534e-02, 1.269e-01, -1.742e-02, 1.379e-01, 1.134e-01, 4.200e-05, 1.298e-01, -1.327e-01, -2.172e-02, -6.698e-02, -8.754e-02, -1.267e-01), r);\n\tr = MulAdd(s6_0, M4(-4.926e-02, -1.760e-02, 3.980e-02, 2.508e-02, -3.775e-02, 2.076e-02, -1.081e-01, -1.151e-02, 1.168e-02, -1.424e-01, -1.228e-01, 2.343e-02, -8.698e-02, 6.311e-02, 6.102e-03, 2.650e-02), r);\n\tr = MulAdd(s6_1, M4(-5.825e-02, -4.032e-02, 1.147e-01, 2.680e-02, 1.414e-01, 5.679e-02, -9.813e-02, -3.283e-02, -1.126e-01, -7.862e-02, 1.747e-01, 1.466e-03, 1.422e-02, -6.262e-02, -1.687e-02, -2.384e-02), r);\n\tr = MulAdd(s6_2, M4(4.493e-03, 1.772e-02, -7.808e-02, -9.538e-02, 1.030e-02, 7.319e-02, -1.175e-01, -1.446e-02, -4.204e-02, 1.384e-01, 5.252e-02, -2.037e-02, -1.241e-01, -1.529e-03, -4.452e-04, -3.906e-02), r);\n\tr = MulAdd(s6_3, M4(4.798e-02, -2.439e-02, -3.515e-02, 4.722e-02, 2.403e-01, -1.254e-01, 1.519e-02, 3.248e-02, 7.053e-02, -1.518e-02, -2.982e-02, -6.945e-02, -1.278e-01, 1.423e-01, 5.746e-02, -3.201e-02), r);\n\tr = MulAdd(s6_4, M4(-3.080e-02, 1.561e-02, 2.768e-02, 2.669e-01, 1.858e-01, 3.711e-02, 7.019e-02, 1.011e-01, -5.844e-02, 9.352e-02, -3.138e-02, 1.805e-01, 1.252e-02, 5.338e-02, 2.771e-02, -2.996e-02), r);\n\tr = MulAdd(s6_5, M4(-1.191e-01, -2.572e-02, -2.064e-02, 6.565e-02, 1.165e-01, -2.582e-02, 1.819e-01, -4.633e-02, 3.829e-02, 4.124e-02, 2.464e-01, -7.015e-02, 7.747e-02, -4.253e-02, -5.876e-02, 1.819e-02), r);\n\tr = MulAdd(s6_6, M4(-1.295e-02, 1.090e-01, -9.345e-02, 9.165e-02, -2.594e-02, -9.639e-02, -4.320e-02, 8.351e-02, -1.298e-01, -1.167e-02, -1.856e-01, -1.277e-01, 9.414e-03, 1.105e-01, -3.130e-02, 6.221e-02), r);\n\tr = MulAdd(s6_7, M4(3.444e-03, -2.271e-01, 3.192e-02, 1.126e-01, 4.436e-02, 9.578e-02, -1.035e-01, 1.076e-01, 5.406e-02, -7.431e-02, -4.377e-03, -5.885e-02, -6.816e-02, -2.066e-01, -2.767e-02, -5.711e-02), r);\n\tr = MulAdd(s6_8, M4(-1.181e-01, 2.311e-01, -2.831e-02, 1.385e-01, -3.545e-02, 1.610e-01, 3.820e-02, 4.875e-02, 2.075e-01, -1.311e-01, -3.649e-02, 6.766e-02, 2.862e-02, 9.259e-03, 9.902e-02, -6.406e-02), r);\n\tr = MulAdd(s7_0, M4(-5.053e-02, -2.136e-02, -1.745e-02, 4.108e-02, 2.853e-03, -6.905e-02, -4.749e-02, 7.346e-02, 1.699e-02, -1.325e-01, -7.159e-02, 1.764e-02, -4.939e-02, -9.260e-02, 1.443e-02, -1.301e-02), r);\n\tr = MulAdd(s7_1, M4(1.267e-02, 2.617e-02, -1.330e-02, 1.707e-01, 2.547e-02, -6.053e-02, -5.732e-02, -4.795e-02, -8.427e-02, 3.053e-04, -2.630e-02, -6.587e-02, 3.033e-02, -9.484e-02, -9.448e-02, 8.488e-02), r);\n\tr = MulAdd(s7_2, M4(-3.125e-02, 6.712e-02, 7.077e-03, -7.110e-02, -2.445e-02, 9.009e-02, -7.513e-02, 7.024e-02, -2.663e-02, -5.283e-03, -3.805e-02, 2.211e-03, 1.910e-02, 3.563e-02, -1.786e-02, -7.405e-02), r);\n\tr = MulAdd(s7_3, M4(2.590e-02, -9.905e-02, -3.188e-02, -5.647e-02, 8.916e-02, -1.490e-01, 1.306e-01, -3.185e-02, -1.564e-02, 3.120e-02, 1.037e-01, 1.424e-02, 7.963e-02, 4.173e-03, 9.197e-02, 1.390e-01), r);\n\tr = MulAdd(s7_4, M4(1.105e-01, -2.338e-01, 2.474e-02, 5.860e-02, 2.509e-01, 1.125e-01, 1.008e-01, 9.209e-02, -5.383e-02, 1.035e-01, 4.327e-02, 3.693e-02, 1.499e-01, 3.680e-02, 6.475e-02, 1.107e-01), r);\n\tr = MulAdd(s7_5, M4(-2.218e-02, -1.690e-01, -4.273e-02, -1.628e-02, 3.745e-02, 2.656e-02, 1.162e-01, 1.176e-01, 5.675e-03, -7.341e-02, 7.056e-02, 4.805e-02, 7.543e-02, 1.842e-02, 4.577e-02, 1.140e-02), r);\n\tr = MulAdd(s7_6, M4(-1.473e-02, -2.266e-02, -7.544e-02, 1.373e-02, 1.795e-01, -4.898e-02, -1.475e-02, 1.673e-01, 5.746e-03, -9.764e-02, -5.334e-02, 9.037e-02, -4.687e-03, 1.181e-01, -1.183e-02, 6.647e-02), r);\n\tr = MulAdd(s7_7, M4(1.130e-01, -1.421e-01, 4.181e-02, 6.442e-02, 1.211e-01, -2.209e-02, -3.875e-04, -5.382e-02, -1.280e-01, 1.888e-01, 1.304e-01, 1.089e-02, -6.041e-02, 2.358e-01, 4.996e-03, -1.448e-01), r);\n\tr = MulAdd(s7_8, M4(-1.302e-01, -8.352e-02, -1.199e-01, 1.755e-01, -1.887e-02, -9.609e-03, -1.532e-02, 9.148e-02, 6.745e-02, -8.519e-02, -1.737e-01, -1.573e-01, 9.497e-02, -3.531e-02, -1.095e-01, -2.586e-01), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -8.380e-03, -1.580e-02, 2.399e-02, 1.683e-02 };\n\tr = MulAdd(s0_0, M4(1.324e-01, 3.098e-02, -5.610e-02, -4.146e-02, 2.549e-03, -7.130e-02, -1.110e-01, 7.283e-02, 1.845e-02, -9.657e-02, 3.844e-03, 2.523e-02, -5.975e-02, -1.173e-01, 3.095e-02, 9.501e-02), r);\n\tr = MulAdd(s0_1, M4(-1.426e-01, -1.228e-01, -1.281e-01, 2.389e-02, -2.692e-02, -4.660e-02, -9.459e-02, -2.750e-02, -8.558e-02, -4.009e-02, 3.787e-02, 7.417e-03, -6.477e-02, 6.138e-02, 9.170e-02, -4.381e-02), r);\n\tr = MulAdd(s0_2, M4(-1.730e-01, -5.044e-02, -1.070e-01, 6.243e-02, -5.736e-02, -5.904e-02, 4.201e-02, 1.623e-02, -1.295e-01, 2.815e-03, 2.265e-02, 5.778e-02, -9.029e-02, 1.748e-02, 1.011e-02, -2.713e-02), r);\n\tr = MulAdd(s0_3, M4(-6.038e-02, 8.951e-02, -7.483e-02, -5.819e-02, 9.276e-02, -1.233e-01, -8.590e-02, -1.409e-01, -3.259e-02, 4.039e-02, -4.817e-03, -1.018e-01, -1.746e-01, -6.002e-02, -7.211e-02, -8.386e-02), r);\n\tr = MulAdd(s0_4, M4(-1.231e-01, 3.177e-02, 2.555e-03, -1.744e-01, -1.353e-02, -1.207e-01, 1.175e-01, -1.910e-01, -2.753e-02, -1.688e-01, 5.652e-02, 1.298e-01, -4.414e-02, 1.817e-01, 8.418e-02, -5.938e-02), r);\n\tr = MulAdd(s0_5, M4(4.654e-02, -2.205e-01, -9.299e-02, 6.869e-02, -2.001e-02, -1.276e-02, 1.292e-01, -1.016e-01, 6.783e-02, -5.872e-02, -7.446e-02, 8.189e-02, 4.320e-02, 1.480e-02, 6.159e-02, -6.716e-02), r);\n\tr = MulAdd(s0_6, M4(1.373e-01, 1.687e-02, -8.457e-02, 1.829e-03, -2.415e-02, 5.841e-03, 2.825e-02, 2.903e-02, -6.525e-02, 9.673e-02, 2.568e-02, -8.981e-02, 4.992e-02, -1.157e-01, -1.493e-02, 2.380e-02), r);\n\tr = MulAdd(s0_7, M4(8.304e-02, 1.067e-01, 1.375e-01, -2.046e-02, -7.120e-02, 6.355e-02, -3.328e-02, -1.201e-01, -2.240e-02, 2.329e-02, 6.133e-02, -8.430e-03, 5.728e-02, 1.656e-02, 1.803e-02, -1.021e-01), r);\n\tr = MulAdd(s0_8, M4(1.901e-03, -1.383e-01, 7.359e-02, -1.758e-02, -3.607e-02, -3.771e-02, -2.204e-02, 1.258e-01, -6.274e-03, 2.672e-02, 8.706e-02, -3.942e-02, -3.532e-02, -6.095e-02, -2.052e-02, -1.085e-01), r);\n\tr = MulAdd(s1_0, M4(8.602e-04, 8.446e-02, 5.132e-02, 3.456e-02, -1.910e-02, 1.225e-01, -5.233e-02, 1.062e-01, 1.613e-01, -1.027e-01, -9.407e-02, -2.353e-01, 6.873e-02, 5.204e-02, 9.637e-02, -2.035e-03), r);\n\tr = MulAdd(s1_1, M4(-3.258e-02, 3.236e-02, 1.585e-01, 1.841e-01, 6.017e-03, -8.298e-02, -9.286e-02, -7.971e-02, -3.589e-02, 9.189e-02, 8.931e-02, -7.546e-02, 6.572e-02, 2.627e-02, -1.412e-01, -1.148e-01), r);\n\tr = MulAdd(s1_2, M4(-9.811e-03, 8.210e-03, -1.522e-02, -1.445e-01, -1.339e-01, -2.461e-02, -3.405e-03, 1.385e-01, -2.507e-01, -3.665e-02, -9.215e-02, -6.471e-03, -1.242e-01, 2.180e-01, 3.822e-02, 1.153e-01), r);\n\tr = MulAdd(s1_3, M4(6.760e-02, 4.069e-02, -4.637e-02, 1.038e-01, -3.410e-02, 1.763e-01, 1.336e-01, 8.865e-03, -5.930e-02, 3.881e-01, -2.500e-01, -2.094e-02, 9.937e-02, 5.619e-02, 1.528e-01, -1.557e-01), r);\n\tr = MulAdd(s1_4, M4(6.235e-02, 2.350e-01, -7.527e-02, -1.680e-02, -1.354e-01, -7.105e-02, -2.478e-02, -6.784e-02, -1.697e-01, -2.013e-01, 2.555e-01, 2.012e-01, -2.957e-02, -1.685e-02, 1.850e-01, 6.340e-02), r);\n\tr = MulAdd(s1_5, M4(3.966e-02, -1.723e-01, -1.228e-01, 8.802e-02, 4.809e-02, -9.692e-02, -6.344e-03, -7.978e-02, 1.669e-01, -1.779e-01, 6.291e-03, 6.059e-02, 3.993e-03, -2.133e-01, -3.395e-02, 1.342e-02), r);\n\tr = MulAdd(s1_6, M4(-5.133e-02, -1.657e-02, 1.592e-02, 5.386e-02, 1.022e-01, 1.524e-01, 8.132e-02, 4.798e-02, 1.245e-01, 1.184e-01, -1.525e-01, -1.911e-01, -1.381e-02, -5.021e-02, -8.596e-03, 3.106e-01), r);\n\tr = MulAdd(s1_7, M4(-1.818e-02, 2.232e-01, -4.030e-02, 4.948e-03, -3.336e-02, 9.223e-02, -2.868e-02, -1.187e-01, 2.736e-02, 1.980e-01, -4.715e-02, -6.880e-02, -3.155e-02, 2.444e-02, 1.473e-01, 9.269e-02), r);\n\tr = MulAdd(s1_8, M4(-5.057e-02, 2.620e-02, 2.795e-02, 8.563e-03, 1.028e-01, 4.350e-02, 7.139e-03, -1.082e-01, 1.869e-01, -1.683e-02, 3.172e-02, 8.075e-02, 8.004e-02, -1.671e-01, -4.036e-02, 3.039e-01), r);\n\tr = MulAdd(s2_0, M4(1.180e-02, -1.184e-02, -6.574e-02, -1.048e-01, -3.686e-02, -6.367e-03, -8.990e-02, 6.084e-02, -8.842e-02, 5.817e-02, 8.876e-02, 1.218e-01, 1.387e-01, -1.046e-01, 3.739e-02, 7.670e-02), r);\n\tr = MulAdd(s2_1, M4(7.315e-02, -5.979e-02, 1.453e-01, -1.965e-01, 2.788e-02, -2.264e-02, -6.827e-02, 5.191e-02, -1.430e-01, 3.145e-03, 4.147e-02, 1.067e-01, -3.394e-02, -2.290e-01, -2.004e-01, 8.971e-02), r);\n\tr = MulAdd(s2_2, M4(-2.835e-01, -5.782e-02, -4.523e-02, -4.873e-02, 7.985e-02, 1.438e-02, 6.609e-03, -8.096e-02, 1.605e-02, -3.455e-02, -4.986e-02, 7.196e-03, -6.071e-02, -5.082e-02, 4.941e-02, -7.414e-02), r);\n\tr = MulAdd(s2_3, M4(-5.490e-02, 9.303e-02, 1.482e-01, 9.336e-02, -6.466e-02, -2.197e-02, -1.126e-01, 3.278e-02, 1.232e-01, 6.193e-02, -4.222e-02, -7.636e-02, 1.215e-02, -4.407e-02, 3.692e-02, -2.260e-01), r);\n\tr = MulAdd(s2_4, M4(-3.508e-02, -1.683e-01, 8.935e-02, -4.702e-02, 1.243e-01, -5.206e-02, 7.074e-02, 1.417e-01, 5.942e-02, -1.391e-03, 2.317e-02, 2.775e-02, 2.099e-01, -4.575e-02, 1.754e-01, -1.390e-01), r);\n\tr = MulAdd(s2_5, M4(-2.350e-01, 1.311e-01, -1.077e-01, 1.464e-01, 1.809e-01, -2.669e-04, -6.422e-02, -3.863e-02, 8.083e-02, 1.275e-01, -3.113e-02, 4.285e-03, -2.051e-01, 1.352e-01, -8.773e-02, 2.944e-02), r);\n\tr = MulAdd(s2_6, M4(-3.024e-01, 6.652e-02, 8.992e-03, 1.629e-01, -7.257e-02, -3.108e-03, 2.366e-02, -1.174e-01, 1.096e-01, 1.167e-01, -6.839e-02, 2.846e-02, 4.916e-02, -6.639e-02, 2.082e-02, -5.918e-02), r);\n\tr = MulAdd(s2_7, M4(-7.346e-02, -1.019e-01, -1.342e-02, 3.497e-02, 9.453e-03, 3.333e-03, 1.372e-01, 3.164e-02, -8.270e-02, 7.919e-02, -5.118e-02, 5.324e-02, -8.807e-02, 1.842e-01, 2.262e-01, 2.480e-02), r);\n\tr = MulAdd(s2_8, M4(-1.017e-01, 2.074e-02, 5.007e-03, -1.334e-01, 4.727e-02, 2.447e-02, 7.362e-02, 1.111e-02, 1.149e-03, -5.188e-02, -4.095e-02, -7.496e-02, -4.799e-02, -1.475e-01, -1.799e-01, 1.101e-01), r);\n\tr = MulAdd(s3_0, M4(-2.391e-02, -3.236e-02, -2.395e-02, -4.702e-02, -7.691e-02, 1.187e-02, -1.053e-01, 6.970e-03, 6.224e-02, -7.598e-02, 1.975e-01, -8.765e-02, 8.864e-02, 2.953e-02, -3.562e-02, 4.886e-02), r);\n\tr = MulAdd(s3_1, M4(1.388e-01, -5.233e-02, 3.314e-03, 4.763e-02, 1.214e-01, 1.726e-01, 2.096e-02, 1.307e-01, 6.915e-02, -3.984e-02, 1.126e-01, -1.379e-01, -4.996e-03, -1.407e-02, -9.647e-02, -6.811e-02), r);\n\tr = MulAdd(s3_2, M4(8.456e-02, -1.095e-02, -6.309e-02, -1.719e-02, 5.154e-02, 1.870e-01, 1.533e-01, -2.619e-02, 2.311e-01, -1.102e-01, -3.136e-02, -1.424e-02, -9.414e-02, 4.845e-02, 2.837e-02, -1.301e-02), r);\n\tr = MulAdd(s3_3, M4(9.095e-02, -8.971e-02, -1.215e-02, -9.743e-02, -1.912e-01, -1.567e-02, -6.240e-02, 1.240e-01, -1.016e-01, -2.279e-01, -7.441e-02, 2.731e-02, 2.472e-02, -1.268e-01, 4.355e-03, 1.256e-01), r);\n\tr = MulAdd(s3_4, M4(1.504e-01, 2.074e-01, -4.563e-02, 9.107e-02, 6.975e-02, -2.268e-02, 2.963e-01, 7.521e-02, -2.058e-01, 1.920e-01, -8.490e-02, -2.095e-01, 1.311e-01, -4.082e-02, 1.062e-01, -3.973e-02), r);\n\tr = MulAdd(s3_5, M4(-2.132e-01, -1.528e-01, -2.973e-02, -4.818e-02, 2.202e-01, -1.653e-01, -3.830e-03, -1.751e-02, -7.094e-02, 8.933e-03, -5.851e-03, -5.554e-02, -2.070e-01, -1.704e-02, 2.700e-02, -4.136e-02), r);\n\tr = MulAdd(s3_6, M4(6.727e-02, -8.846e-02, 6.397e-02, -1.020e-02, -1.508e-01, -9.940e-02, 7.372e-02, 2.904e-02, -3.266e-02, -1.201e-01, -3.074e-02, 3.378e-03, 3.186e-02, 2.257e-02, 5.726e-02, 4.939e-02), r);\n\tr = MulAdd(s3_7, M4(7.298e-02, 9.083e-02, 1.039e-01, -2.973e-02, -1.102e-01, 4.364e-03, 1.732e-01, 3.399e-02, 2.200e-02, 8.622e-03, -8.569e-02, 1.179e-01, -1.467e-01, -5.801e-03, 6.517e-02, 1.460e-03), r);\n\tr = MulAdd(s3_8, M4(7.603e-02, 1.223e-02, -3.089e-02, 7.583e-02, 1.471e-03, 3.472e-02, 3.394e-02, -1.371e-02, -4.960e-04, -1.172e-01, 1.305e-03, -1.425e-01, 2.795e-03, -2.720e-03, -5.219e-03, -6.907e-02), r);\n\tr = MulAdd(s4_0, M4(5.505e-03, -8.819e-03, -4.014e-03, -1.244e-02, -1.126e-01, 8.135e-04, 9.623e-02, 3.676e-02, -1.720e-01, -2.153e-01, 1.957e-01, -2.243e-02, 1.522e-01, 2.124e-01, -1.470e-01, -1.231e-01), r);\n\tr = MulAdd(s4_1, M4(3.341e-03, 4.275e-02, -1.164e-03, -1.806e-01, -5.828e-03, -2.089e-01, -1.698e-02, 2.542e-01, -2.417e-02, 6.649e-02, 4.735e-02, 1.805e-01, 1.254e-01, 2.262e-01, -1.286e-01, 1.099e-01), r);\n\tr = MulAdd(s4_2, M4(6.665e-03, 6.571e-02, 3.929e-03, 5.843e-02, 1.745e-01, -4.256e-02, -7.602e-02, -1.089e-01, 2.779e-01, -2.963e-03, -1.710e-01, -1.459e-01, 1.136e-01, 4.401e-02, -2.303e-02, -8.939e-04), r);\n\tr = MulAdd(s4_3, M4(5.475e-03, -4.728e-02, -1.140e-01, 2.885e-03, -4.551e-02, 1.432e-01, 2.654e-02, 6.426e-02, 7.432e-02, -1.165e-01, -3.742e-02, -7.785e-02, 7.110e-02, -1.741e-02, -1.233e-01, 7.455e-02), r);\n\tr = MulAdd(s4_4, M4(-4.256e-02, -1.787e-01, 1.026e-01, -1.440e-01, 1.520e-01, -4.770e-02, -1.609e-01, 1.174e-01, -1.175e-01, 2.220e-01, -1.170e-01, -2.981e-01, 8.738e-02, 2.689e-01, 1.559e-01, -7.396e-02), r);\n\tr = MulAdd(s4_5, M4(4.258e-02, -1.854e-02, -4.987e-03, 6.224e-02, 2.917e-02, 7.084e-02, 1.824e-02, 7.055e-02, 2.346e-01, -3.433e-02, -1.227e-01, 4.578e-01, 2.186e-01, 1.179e-01, 3.552e-02, 5.816e-02), r);\n\tr = MulAdd(s4_6, M4(-1.070e-01, -1.684e-02, -2.785e-03, 8.654e-03, -1.638e-01, -1.542e-02, 6.987e-02, -2.803e-02, 6.555e-02, 5.128e-02, 1.075e-01, -8.537e-02, -1.663e-01, -5.931e-02, -5.726e-02, -9.191e-02), r);\n\tr = MulAdd(s4_7, M4(-6.936e-02, 1.002e-03, 7.349e-02, 6.119e-02, 1.093e-01, -1.090e-01, -6.324e-02, -1.775e-01, 8.135e-02, -2.989e-01, 1.243e-02, -4.426e-01, -1.983e-02, 6.458e-02, 5.099e-02, 2.519e-02), r);\n\tr = MulAdd(s4_8, M4(8.977e-02, -4.270e-02, -9.077e-02, 8.007e-02, 1.254e-02, -9.442e-04, 7.493e-02, -1.994e-01, 6.976e-02, -3.175e-01, 1.506e-01, 9.311e-02, 1.037e-01, 1.043e-01, -1.493e-03, 4.551e-02), r);\n\tr = MulAdd(s5_0, M4(-1.727e-02, 1.585e-01, 1.534e-01, -5.754e-02, -5.938e-02, -1.065e-01, 9.408e-02, -8.807e-02, 9.271e-03, 8.039e-03, 3.994e-02, -5.039e-03, -3.846e-02, -4.278e-02, -1.818e-02, -3.180e-03), r);\n\tr = MulAdd(s5_1, M4(2.943e-01, -1.033e-01, -2.299e-02, -7.260e-02, 9.817e-02, 1.076e-01, 3.952e-03, -8.467e-02, -3.766e-03, -2.596e-02, -8.277e-02, 2.235e-02, -5.010e-02, -2.123e-01, -1.041e-01, 1.164e-01), r);\n\tr = MulAdd(s5_2, M4(-1.255e-01, 9.527e-02, 2.084e-02, -1.064e-01, 1.871e-01, 3.352e-02, 1.445e-02, -6.823e-02, 1.345e-01, -2.076e-02, -1.071e-02, 1.201e-02, -1.752e-01, -8.163e-02, 4.540e-02, 1.464e-01), r);\n\tr = MulAdd(s5_3, M4(-6.320e-02, 4.607e-02, -1.641e-01, 1.168e-01, 2.291e-02, -1.263e-01, 1.411e-02, 1.158e-01, -2.324e-03, 2.538e-02, -2.747e-02, 3.697e-02, -1.417e-01, -3.010e-02, -5.565e-02, 2.884e-02), r);\n\tr = MulAdd(s5_4, M4(2.759e-01, 7.719e-02, -6.069e-02, -1.723e-01, 6.530e-02, -3.680e-02, -1.286e-01, 3.704e-02, -6.962e-02, 4.937e-02, -5.575e-02, -1.117e-01, -1.436e-02, -2.980e-02, 4.777e-04, 5.934e-02), r);\n\tr = MulAdd(s5_5, M4(9.114e-02, -1.044e-01, -1.212e-04, -1.155e-02, 1.682e-01, 4.008e-02, 2.893e-03, 4.331e-02, -6.575e-02, -9.670e-02, -5.614e-02, 4.495e-02, -2.225e-02, -2.677e-02, 2.591e-03, 7.499e-02), r);\n\tr = MulAdd(s5_6, M4(8.086e-02, -2.553e-02, -4.962e-02, -8.640e-03, -9.971e-02, -9.166e-02, 4.908e-02, 4.199e-03, -2.085e-02, -3.249e-02, 7.374e-02, 1.215e-01, -2.563e-02, 1.172e-01, 4.091e-03, 9.290e-03), r);\n\tr = MulAdd(s5_7, M4(2.444e-01, 9.946e-02, -2.357e-01, 2.056e-01, -8.576e-02, 4.988e-02, 1.605e-01, 6.576e-02, 1.992e-02, 1.709e-01, -1.757e-02, -1.304e-02, -1.743e-01, 5.605e-02, 4.984e-02, 5.520e-02), r);\n\tr = MulAdd(s5_8, M4(3.324e-01, -2.642e-03, 6.995e-02, -3.095e-01, 7.170e-02, -5.416e-02, -4.709e-02, -2.787e-02, -1.225e-02, 1.133e-01, 2.788e-02, 6.324e-02, 4.011e-04, -1.079e-01, -4.384e-02, 3.440e-02), r);\n\tr = MulAdd(s6_0, M4(6.823e-02, 1.395e-02, 2.126e-01, 1.723e-02, 2.425e-02, -5.360e-02, -7.007e-02, -1.563e-02, 1.486e-01, -1.016e-01, -2.771e-02, -1.009e-02, 7.417e-03, -8.494e-02, -2.465e-02, -8.861e-02), r);\n\tr = MulAdd(s6_1, M4(-1.253e-01, -1.780e-02, 1.781e-02, 1.649e-01, -1.070e-01, 3.239e-02, 9.397e-02, 8.197e-02, 7.706e-02, 1.910e-02, -8.823e-03, 1.915e-01, -2.050e-02, -3.583e-02, 1.441e-01, 4.264e-03), r);\n\tr = MulAdd(s6_2, M4(1.674e-01, 1.013e-01, -3.249e-02, 1.133e-01, -5.729e-02, -1.209e-01, 1.029e-01, -1.727e-02, -1.044e-01, -8.951e-02, 4.933e-02, 5.606e-03, -6.829e-02, 2.937e-02, 6.334e-02, -1.043e-01), r);\n\tr = MulAdd(s6_3, M4(-7.871e-02, 7.712e-02, 5.320e-03, 1.078e-01, 5.800e-02, -6.099e-02, 3.971e-02, 1.548e-01, 8.109e-03, 7.153e-03, -1.472e-02, 5.344e-02, 2.580e-02, -1.591e-01, 8.739e-02, -3.712e-02), r);\n\tr = MulAdd(s6_4, M4(-2.111e-03, 7.265e-03, 3.405e-02, 3.830e-02, -1.882e-01, 8.751e-02, 2.707e-01, 6.005e-02, -9.426e-02, 3.892e-02, 4.236e-02, 8.881e-02, -1.930e-02, -6.025e-02, -1.088e-01, 3.448e-02), r);\n\tr = MulAdd(s6_5, M4(1.040e-01, -6.059e-03, -2.065e-01, 5.620e-02, 6.967e-02, 4.260e-02, -7.522e-03, 1.348e-01, -5.463e-03, -5.115e-02, 7.386e-02, -6.398e-02, -5.838e-02, 4.261e-02, 7.914e-02, 2.047e-01), r);\n\tr = MulAdd(s6_6, M4(1.204e-01, -9.487e-03, -7.892e-03, 3.023e-02, 2.809e-02, -1.235e-01, 8.795e-03, 5.906e-02, 4.211e-02, -1.922e-01, 1.323e-01, -2.147e-02, -6.397e-02, 1.699e-02, 2.492e-02, -5.821e-02), r);\n\tr = MulAdd(s6_7, M4(-8.937e-02, 4.861e-02, 1.152e-01, -1.752e-03, -4.958e-02, -1.301e-02, 1.152e-01, -8.827e-02, 2.432e-03, -2.854e-02, 2.425e-01, 9.628e-02, 3.210e-02, 6.959e-02, -7.081e-02, 4.659e-02), r);\n\tr = MulAdd(s6_8, M4(1.240e-01, 6.450e-04, 1.001e-01, -3.919e-03, 9.075e-02, -7.864e-02, 6.180e-03, 6.982e-02, -2.058e-01, 5.582e-02, 2.836e-02, 3.417e-02, -6.305e-02, -2.997e-02, -9.853e-02, -7.349e-02), r);\n\tr = MulAdd(s7_0, M4(-3.616e-02, 2.904e-02, -4.637e-02, 6.489e-02, 1.687e-02, 3.052e-02, -7.060e-02, -1.709e-02, -5.865e-02, -1.052e-01, 7.886e-03, -5.491e-02, 1.828e-02, -1.454e-02, 1.469e-01, -2.592e-03), r);\n\tr = MulAdd(s7_1, M4(4.408e-02, -1.408e-01, 1.018e-01, 7.013e-03, -1.115e-01, 7.468e-02, 2.113e-02, 7.162e-03, 1.654e-02, -3.238e-03, -2.668e-02, -2.272e-01, -4.302e-02, -1.023e-01, 1.773e-01, 1.297e-01), r);\n\tr = MulAdd(s7_2, M4(-1.150e-02, 1.006e-01, 3.549e-02, -6.321e-03, 5.296e-02, -1.781e-02, 2.044e-02, 1.454e-02, 5.696e-02, 9.587e-03, 6.962e-02, -5.980e-02, -4.713e-02, -5.724e-02, 8.912e-02, 5.109e-02), r);\n\tr = MulAdd(s7_3, M4(-8.174e-02, 3.685e-03, -3.495e-02, 1.455e-01, 6.260e-02, 2.383e-03, 4.992e-02, 6.729e-02, -3.815e-02, 1.347e-01, -1.718e-02, -5.853e-04, 3.688e-02, 2.927e-02, 1.373e-01, -3.212e-02), r);\n\tr = MulAdd(s7_4, M4(2.866e-02, 8.243e-02, 2.121e-02, 1.013e-01, -8.082e-02, -1.408e-01, 7.371e-02, 8.894e-02, -1.777e-02, 4.296e-02, -1.108e-01, -1.136e-01, -1.227e-01, -3.547e-02, -2.402e-01, 6.650e-02), r);\n\tr = MulAdd(s7_5, M4(5.925e-02, 3.045e-03, -1.978e-02, -1.133e-01, 1.058e-01, -1.937e-02, 4.209e-02, 6.281e-02, 7.367e-02, -2.282e-02, 7.629e-02, 7.343e-02, -1.214e-01, 2.380e-01, -1.013e-01, -1.038e-01), r);\n\tr = MulAdd(s7_6, M4(-6.004e-02, -3.998e-02, -2.468e-02, 1.327e-02, 1.390e-01, 1.489e-01, -4.934e-02, 6.800e-05, -4.161e-02, -1.543e-02, 2.262e-02, -4.679e-02, 1.088e-02, -4.917e-02, 2.046e-01, 2.502e-01), r);\n\tr = MulAdd(s7_7, M4(-1.189e-01, -1.247e-02, -1.499e-01, -3.603e-02, -1.487e-01, -3.209e-02, 2.411e-02, -8.302e-02, -9.279e-02, 7.351e-02, -1.716e-02, 5.948e-02, 4.101e-02, -1.640e-01, 2.718e-02, 1.554e-02), r);\n\tr = MulAdd(s7_8, M4(6.335e-02, -9.028e-02, 6.124e-02, -9.490e-02, 8.380e-02, -1.819e-01, -3.584e-02, -2.386e-02, 5.599e-02, 1.539e-02, 5.710e-03, 3.523e-02, 7.735e-02, -1.713e-02, -1.353e-01, 1.159e-01), r);\n\treturn r;\n}\n\nvoid Pass8(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 9\n//!DESC conv8\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.959e-02, -1.607e-02, 2.678e-03, 3.647e-02 };\n\tr = MulAdd(s0_0, M4(3.124e-02, -5.130e-02, -1.787e-03, 8.818e-02, 4.984e-02, -1.121e-01, 9.460e-02, 3.339e-02, 7.946e-02, -3.062e-02, 5.278e-02, 5.440e-03, 1.711e-02, 4.054e-02, -1.141e-01, 1.288e-01), r);\n\tr = MulAdd(s0_1, M4(5.309e-02, -3.390e-02, 1.321e-01, 1.092e-01, -1.388e-01, -8.624e-03, 2.151e-02, 1.979e-02, -8.138e-02, 7.397e-03, 1.617e-01, 1.973e-01, -4.960e-02, 1.862e-02, -3.960e-03, -8.960e-02), r);\n\tr = MulAdd(s0_2, M4(7.778e-02, 3.204e-02, 8.291e-02, -1.327e-01, 3.065e-02, -7.843e-02, -3.681e-02, 2.162e-02, 7.884e-03, -1.019e-01, -2.793e-02, 1.007e-01, -6.140e-04, -1.387e-01, 1.230e-01, 7.260e-02), r);\n\tr = MulAdd(s0_3, M4(-6.266e-02, -1.561e-03, 9.634e-02, -9.794e-02, 6.055e-02, -5.282e-02, 9.105e-02, 7.726e-02, -5.617e-02, 8.143e-02, 4.430e-03, -7.008e-02, -1.017e-01, -8.139e-02, -9.779e-02, 4.958e-02), r);\n\tr = MulAdd(s0_4, M4(1.650e-02, 4.615e-02, 2.963e-03, -1.076e-01, -1.435e-01, -1.646e-01, 6.921e-02, 7.088e-02, 1.342e-01, -7.077e-02, 1.517e-01, 2.435e-02, 2.455e-01, -3.089e-02, -1.496e-02, 2.904e-02), r);\n\tr = MulAdd(s0_5, M4(1.193e-01, -1.123e-01, -2.309e-02, -5.959e-02, 1.889e-05, 1.146e-01, 1.482e-01, 4.795e-02, 2.048e-01, 2.549e-02, -3.481e-02, -3.296e-02, 4.897e-02, -8.950e-02, -4.280e-03, -1.567e-03), r);\n\tr = MulAdd(s0_6, M4(1.450e-01, 2.803e-02, 1.840e-02, -8.276e-02, -6.706e-02, -3.088e-02, 1.742e-02, 3.721e-02, -2.495e-02, 2.764e-02, 8.144e-03, -1.611e-01, 1.160e-01, -4.256e-03, 2.108e-02, -5.918e-02), r);\n\tr = MulAdd(s0_7, M4(-1.328e-01, 7.529e-02, 1.391e-01, 2.563e-02, -1.192e-01, -2.107e-02, -1.355e-01, 9.936e-02, -2.000e-01, 3.467e-01, -6.629e-02, -1.384e-01, -6.821e-02, 7.839e-02, 7.809e-02, -1.136e-01), r);\n\tr = MulAdd(s0_8, M4(-3.557e-02, -8.994e-02, 5.623e-02, -3.802e-02, 4.783e-02, 1.048e-01, -5.520e-02, -4.335e-02, -1.120e-01, -1.588e-02, -3.592e-02, -4.832e-02, 4.606e-02, 2.668e-02, 1.129e-01, -4.405e-02), r);\n\tr = MulAdd(s1_0, M4(-8.748e-02, 1.203e-02, -5.771e-02, -3.631e-02, -5.534e-02, -7.679e-02, 2.935e-03, 1.125e-01, 4.920e-02, -1.189e-01, 4.831e-02, 6.072e-02, 2.471e-02, 1.016e-02, -2.971e-02, 5.571e-02), r);\n\tr = MulAdd(s1_1, M4(-2.075e-02, 2.195e-01, -6.517e-02, 9.558e-02, -5.612e-02, 6.054e-02, 4.759e-02, 8.232e-02, -1.495e-01, -1.329e-02, 9.611e-02, -3.800e-02, -1.341e-01, 1.209e-02, 1.875e-01, -5.003e-03), r);\n\tr = MulAdd(s1_2, M4(7.123e-02, 1.644e-01, -4.899e-02, 2.409e-02, 4.736e-02, -4.217e-02, -1.069e-01, 1.008e-01, -7.966e-02, -1.316e-01, -4.347e-03, 6.992e-02, -3.527e-02, -7.104e-03, -2.468e-02, -5.213e-02), r);\n\tr = MulAdd(s1_3, M4(-9.210e-02, -3.570e-02, 3.117e-02, -1.709e-02, 6.131e-02, -8.828e-02, 4.977e-02, 9.107e-02, 1.307e-01, -9.185e-02, -7.107e-04, -1.570e-01, 3.320e-02, -4.837e-02, 9.636e-02, -1.617e-01), r);\n\tr = MulAdd(s1_4, M4(1.071e-01, -1.831e-01, -8.204e-02, -8.219e-02, 2.204e-01, -1.851e-01, -5.428e-02, 2.497e-02, 1.762e-02, -1.438e-01, 4.264e-02, -1.996e-01, -5.739e-02, -2.194e-02, 2.351e-02, -1.555e-01), r);\n\tr = MulAdd(s1_5, M4(1.995e-02, -7.711e-02, -3.127e-01, -1.545e-01, 1.087e-01, -6.717e-02, -3.386e-02, -3.439e-02, -6.425e-02, -1.417e-02, -9.704e-03, 3.258e-02, -1.786e-01, -7.814e-02, 7.339e-02, 1.150e-01), r);\n\tr = MulAdd(s1_6, M4(3.818e-03, 8.071e-02, -1.410e-02, -1.407e-02, -1.744e-01, -5.763e-02, -1.927e-01, 3.831e-02, 1.584e-01, 7.533e-02, 3.399e-02, 7.658e-03, -8.963e-02, -4.506e-02, -4.843e-02, -1.250e-01), r);\n\tr = MulAdd(s1_7, M4(-1.005e-01, 1.244e-01, -1.298e-01, 1.610e-01, -1.078e-01, 3.248e-02, -1.189e-01, 2.034e-02, -1.146e-01, 2.402e-01, 2.474e-02, -8.074e-02, 1.049e-01, 1.237e-01, 1.052e-01, 7.348e-02), r);\n\tr = MulAdd(s1_8, M4(-9.359e-02, -1.032e-01, -1.450e-01, 4.403e-02, 6.272e-02, 1.148e-01, -2.433e-01, -5.160e-03, 7.080e-02, -2.387e-02, 4.122e-02, 7.547e-02, -9.222e-02, -9.204e-02, 1.121e-01, -6.432e-02), r);\n\tr = MulAdd(s2_0, M4(5.519e-02, 6.806e-02, 9.748e-02, -2.149e-02, 2.170e-01, 5.902e-02, -9.839e-02, 1.249e-01, -1.353e-02, 2.961e-02, 1.827e-01, 6.570e-02, 1.371e-02, 5.585e-02, -4.444e-02, 1.533e-01), r);\n\tr = MulAdd(s2_1, M4(4.773e-02, -1.665e-01, 5.589e-02, -8.909e-02, -2.246e-01, 3.200e-01, -1.041e-01, -8.414e-02, 1.580e-01, 3.261e-02, 5.637e-02, 1.576e-02, 2.131e-02, -3.541e-02, -4.463e-02, -2.095e-02), r);\n\tr = MulAdd(s2_2, M4(1.036e-01, 2.589e-02, 2.904e-02, -7.143e-02, -1.696e-02, 1.774e-02, -7.084e-02, 3.157e-02, 6.868e-02, -2.945e-01, 5.057e-02, -1.008e-01, 8.910e-02, 8.413e-02, -6.435e-02, -4.051e-03), r);\n\tr = MulAdd(s2_3, M4(-7.418e-02, -6.193e-02, 8.327e-02, 5.191e-02, 1.067e-01, -1.189e-01, -4.391e-02, -2.164e-01, 1.092e-02, 4.494e-02, 7.165e-02, -7.741e-02, 4.445e-02, -7.055e-02, -2.172e-01, -5.087e-02), r);\n\tr = MulAdd(s2_4, M4(2.256e-02, 7.924e-02, -1.469e-02, 1.252e-02, 2.585e-02, 4.741e-01, 3.142e-02, -3.884e-03, 4.117e-02, -7.126e-02, -1.259e-01, -5.454e-02, 1.522e-01, -1.540e-01, 1.024e-01, 9.160e-04), r);\n\tr = MulAdd(s2_5, M4(2.940e-02, -1.633e-01, -2.713e-02, 5.467e-02, -1.586e-01, 7.529e-03, 8.433e-02, 5.386e-02, 3.499e-02, -4.718e-02, 4.734e-02, 1.388e-03, -7.104e-02, -9.965e-02, 4.349e-02, 4.619e-03), r);\n\tr = MulAdd(s2_6, M4(2.689e-02, 3.681e-02, 1.567e-01, -5.400e-02, 4.834e-02, 7.037e-02, -4.478e-02, 1.335e-01, -3.430e-02, -4.039e-02, -1.772e-02, 5.856e-02, 8.410e-02, -2.157e-01, 2.341e-02, 1.083e-02), r);\n\tr = MulAdd(s2_7, M4(-2.147e-01, -1.803e-03, 1.678e-02, -6.482e-02, 2.857e-02, 1.997e-01, -4.290e-03, -9.494e-02, 8.619e-03, 2.462e-02, 2.078e-02, 6.033e-02, -3.540e-02, -5.141e-02, -1.394e-01, -3.610e-03), r);\n\tr = MulAdd(s2_8, M4(1.420e-01, 1.700e-02, 7.208e-02, 6.421e-02, 8.379e-02, 4.514e-02, 7.367e-02, 6.906e-02, 2.213e-02, -7.140e-02, -7.118e-02, -4.912e-02, 1.182e-02, 1.214e-01, -1.221e-01, -5.433e-03), r);\n\tr = MulAdd(s3_0, M4(-4.753e-02, 6.931e-02, -6.908e-02, -3.847e-02, 5.197e-03, 8.429e-03, -2.645e-02, -1.567e-02, 1.779e-01, -1.916e-02, 3.229e-02, -7.113e-02, -1.738e-02, -4.335e-02, -2.875e-02, -6.892e-02), r);\n\tr = MulAdd(s3_1, M4(-3.704e-02, -8.374e-03, -1.469e-01, -2.289e-02, 1.303e-01, 6.911e-02, -2.123e-02, 4.849e-03, 2.334e-05, 9.183e-02, -1.740e-01, 1.321e-01, -1.002e-01, 1.355e-01, 7.750e-03, 5.359e-02), r);\n\tr = MulAdd(s3_2, M4(-2.163e-01, -7.288e-03, -8.867e-02, -1.089e-01, -1.800e-02, 1.012e-01, 4.257e-02, -7.175e-02, -1.499e-01, 3.862e-02, -8.924e-02, 8.527e-02, -4.943e-02, 8.094e-02, 4.473e-03, -5.153e-02), r);\n\tr = MulAdd(s3_3, M4(-1.294e-01, -9.081e-02, 1.170e-01, -6.287e-02, -2.409e-02, -7.843e-02, 1.081e-01, -1.228e-01, 6.556e-02, 3.745e-02, -1.265e-01, -1.149e-01, 7.995e-02, -1.064e-01, -4.103e-02, -1.770e-01), r);\n\tr = MulAdd(s3_4, M4(7.123e-02, 1.010e-01, -2.841e-02, 1.940e-02, 2.383e-02, 1.075e-01, 1.142e-01, 7.052e-02, -1.260e-01, -2.067e-01, -2.080e-02, 9.393e-02, 7.256e-02, -1.270e-01, -6.239e-02, 9.681e-03), r);\n\tr = MulAdd(s3_5, M4(-7.998e-03, -5.025e-02, 4.491e-02, 1.617e-01, 4.243e-03, 1.684e-02, 9.257e-02, 5.489e-02, -4.699e-02, -2.670e-02, 1.045e-01, -1.136e-01, 5.581e-02, -3.778e-02, 7.120e-02, 6.498e-02), r);\n\tr = MulAdd(s3_6, M4(4.308e-03, -7.796e-03, 1.878e-01, -2.290e-01, -7.900e-02, 4.194e-02, -1.923e-02, -7.889e-02, 1.046e-01, 2.528e-02, -2.173e-01, 4.992e-02, -5.578e-02, -4.376e-02, -8.227e-02, -1.437e-01), r);\n\tr = MulAdd(s3_7, M4(-1.714e-01, 4.549e-02, -5.604e-02, 1.178e-01, -1.652e-02, 9.276e-02, 7.400e-02, -2.862e-02, -1.776e-01, -1.282e-02, -4.909e-02, -1.218e-01, -8.023e-02, -1.684e-02, 7.598e-03, 4.162e-02), r);\n\tr = MulAdd(s3_8, M4(9.347e-02, -8.901e-02, -1.304e-01, -6.794e-02, -4.605e-03, 5.944e-02, 1.136e-01, -9.450e-02, 2.883e-02, 5.992e-02, -6.510e-02, 1.774e-01, 1.138e-02, 5.769e-02, -1.313e-01, -5.079e-02), r);\n\tr = MulAdd(s4_0, M4(5.049e-02, -3.380e-02, -1.054e-01, 6.772e-02, 4.020e-02, -1.913e-02, -3.185e-02, -2.899e-02, -6.698e-02, -2.485e-02, -6.283e-02, 1.835e-01, -1.031e-01, 5.999e-03, 1.490e-02, -1.784e-01), r);\n\tr = MulAdd(s4_1, M4(-1.064e-01, -2.199e-01, 1.466e-01, 8.568e-03, 4.387e-02, -7.174e-02, -1.109e-02, 6.368e-02, 7.634e-02, 2.304e-02, 4.350e-02, -2.990e-02, -2.516e-02, -1.149e-02, -9.044e-03, -7.891e-03), r);\n\tr = MulAdd(s4_2, M4(9.905e-02, 6.525e-02, 9.026e-02, 4.470e-02, 1.315e-03, -1.239e-02, -1.332e-01, 9.560e-02, -8.204e-02, 1.249e-01, 2.174e-01, -2.688e-02, 3.787e-02, -1.084e-01, -5.702e-02, 4.371e-02), r);\n\tr = MulAdd(s4_3, M4(2.746e-02, 4.288e-02, -2.094e-01, -2.320e-02, -4.883e-02, -1.676e-02, -8.811e-02, 8.300e-02, 6.404e-02, 1.274e-01, 2.470e-02, -6.681e-02, 1.095e-01, 1.005e-01, 4.594e-02, -4.148e-02), r);\n\tr = MulAdd(s4_4, M4(-1.802e-01, 5.122e-02, -5.737e-02, -1.075e-01, -1.205e-02, 3.844e-02, -4.666e-02, -1.431e-01, 2.786e-02, -3.764e-02, 5.673e-02, 6.577e-02, 4.471e-02, -1.484e-01, -5.142e-02, -5.054e-03), r);\n\tr = MulAdd(s4_5, M4(2.149e-02, 6.915e-02, 1.145e-01, -1.189e-01, -5.877e-03, 2.061e-02, 5.708e-03, 6.259e-04, 3.541e-02, 3.211e-02, -2.670e-02, -1.668e-02, -9.188e-02, 1.706e-01, -4.118e-02, -2.265e-01), r);\n\tr = MulAdd(s4_6, M4(9.618e-02, 6.636e-02, 7.511e-02, 9.216e-02, 1.049e-01, 4.239e-02, 4.988e-02, 2.455e-02, -9.820e-02, -1.717e-01, -2.323e-02, -8.221e-02, 1.424e-02, -2.146e-02, 2.142e-02, 8.807e-02), r);\n\tr = MulAdd(s4_7, M4(-1.336e-02, 2.385e-02, -3.954e-02, -8.075e-03, 5.851e-02, -6.145e-02, 4.194e-02, 1.621e-01, -7.676e-02, -1.024e-01, 4.955e-02, 1.105e-01, -6.878e-03, -2.184e-02, -4.202e-03, 1.053e-01), r);\n\tr = MulAdd(s4_8, M4(-1.642e-02, 1.181e-01, -2.130e-02, -8.524e-02, -1.581e-01, 1.508e-03, -1.421e-02, 6.296e-02, 7.533e-02, -2.317e-02, -1.147e-02, -6.421e-02, -2.778e-04, -2.823e-03, -5.921e-02, -2.012e-02), r);\n\tr = MulAdd(s5_0, M4(8.415e-03, -6.028e-02, -1.751e-02, 1.548e-01, -3.270e-02, -4.412e-02, -9.120e-02, -8.805e-02, 4.282e-02, 5.193e-02, -1.485e-01, -2.785e-02, -2.536e-01, 1.438e-02, 2.982e-02, -2.936e-02), r);\n\tr = MulAdd(s5_1, M4(-4.830e-02, -1.672e-01, 2.365e-01, -6.885e-02, -5.857e-02, -9.746e-02, -2.243e-02, 1.249e-01, 7.829e-02, 4.724e-03, -4.529e-03, -1.414e-01, 1.286e-01, 1.551e-02, -7.143e-02, -8.086e-02), r);\n\tr = MulAdd(s5_2, M4(-2.138e-02, 8.716e-02, 8.449e-02, -1.476e-02, 1.615e-01, 5.934e-02, -9.844e-02, 5.758e-02, -1.017e-01, 8.195e-02, -8.195e-02, -2.562e-02, -6.803e-03, -1.538e-01, -9.863e-02, 5.102e-02), r);\n\tr = MulAdd(s5_3, M4(-2.320e-02, 1.252e-02, 8.025e-02, 2.578e-02, 5.918e-02, -1.294e-03, -7.928e-02, 4.524e-02, -1.868e-02, 2.818e-02, -1.418e-01, 4.349e-02, 1.122e-01, 7.893e-02, 1.034e-01, 1.828e-01), r);\n\tr = MulAdd(s5_4, M4(-1.013e-01, -7.174e-02, 4.332e-02, -1.217e-01, -6.073e-02, 1.344e-01, 2.161e-01, -3.117e-02, 3.859e-03, 2.590e-02, 4.436e-02, 4.931e-03, 1.766e-01, -5.240e-02, -9.816e-02, -7.606e-02), r);\n\tr = MulAdd(s5_5, M4(-2.801e-02, -1.917e-02, 7.311e-02, -6.512e-02, 1.118e-01, 3.616e-02, 3.519e-02, -1.820e-01, -9.950e-02, -7.744e-03, 1.019e-01, 4.537e-02, 2.160e-02, 6.432e-02, 7.089e-02, 1.152e-02), r);\n\tr = MulAdd(s5_6, M4(2.180e-03, 5.749e-02, 1.428e-01, 5.017e-02, 1.869e-01, 4.851e-02, 1.389e-01, 6.792e-04, 1.045e-01, -2.566e-02, -8.384e-02, -1.547e-01, 1.075e-01, 3.059e-02, -4.049e-02, 1.085e-02), r);\n\tr = MulAdd(s5_7, M4(5.945e-02, 3.321e-02, -9.207e-02, -2.509e-02, 4.073e-02, -1.089e-01, -1.625e-02, 1.379e-02, -1.111e-03, -3.685e-02, -1.283e-01, -1.069e-01, -1.421e-01, -9.058e-02, -1.036e-01, 1.138e-01), r);\n\tr = MulAdd(s5_8, M4(-2.612e-02, 1.336e-01, -9.740e-02, -4.554e-02, 2.979e-02, -7.052e-03, -4.852e-02, -4.545e-03, 4.801e-02, -2.438e-04, -5.739e-02, 4.333e-02, 3.390e-03, -1.577e-01, 2.403e-02, 5.650e-02), r);\n\tr = MulAdd(s6_0, M4(3.236e-03, 5.534e-02, -4.418e-02, -4.075e-02, 3.276e-02, -3.427e-02, 2.378e-02, 6.431e-02, 7.598e-02, -7.310e-02, -5.276e-02, 3.837e-02, 6.279e-02, 3.920e-02, 1.304e-01, -2.992e-02), r);\n\tr = MulAdd(s6_1, M4(-6.662e-02, 3.669e-02, 1.856e-01, -1.944e-02, 1.691e-01, -1.861e-01, -5.360e-02, -6.607e-03, 3.012e-02, -1.674e-02, 1.990e-02, -9.414e-03, 8.199e-02, -3.132e-02, -8.794e-02, 5.374e-02), r);\n\tr = MulAdd(s6_2, M4(8.092e-02, -4.533e-02, -1.180e-02, -6.647e-02, -1.927e-01, -3.415e-02, -1.194e-01, 9.213e-02, 6.425e-02, -3.130e-02, -2.920e-02, -1.045e-02, -5.180e-02, 9.980e-02, -7.554e-03, -9.558e-02), r);\n\tr = MulAdd(s6_3, M4(-5.473e-02, 9.536e-02, 2.336e-01, 2.384e-01, -3.298e-02, -6.046e-02, -4.906e-02, -4.915e-02, -7.887e-03, -5.920e-02, -1.091e-01, 7.041e-02, -8.894e-02, -4.592e-02, 2.140e-02, 1.735e-01), r);\n\tr = MulAdd(s6_4, M4(6.208e-02, -2.608e-02, -1.066e-01, 1.094e-03, 1.958e-01, -9.529e-03, 1.481e-01, 5.728e-02, -6.199e-02, 2.168e-02, -3.580e-02, -1.589e-01, -2.392e-01, -1.200e-01, -4.925e-02, -7.520e-02), r);\n\tr = MulAdd(s6_5, M4(6.825e-02, 9.426e-02, -5.642e-02, 4.394e-03, 5.755e-02, -1.180e-01, 5.083e-02, -8.122e-02, 5.416e-02, -3.902e-02, -2.842e-01, -1.468e-01, -1.510e-01, -9.730e-02, 8.778e-02, -8.978e-02), r);\n\tr = MulAdd(s6_6, M4(-8.778e-02, 6.068e-02, 3.351e-02, -2.043e-01, -7.854e-02, 7.319e-02, 1.240e-02, -1.226e-01, 1.410e-02, 6.336e-03, 6.147e-02, 4.013e-02, 8.160e-02, 1.311e-01, -2.852e-02, -3.663e-02), r);\n\tr = MulAdd(s6_7, M4(7.029e-02, -1.694e-01, 1.453e-01, 1.021e-01, -7.482e-02, -7.034e-02, 1.067e-01, -6.123e-02, 1.143e-01, -4.063e-02, -6.213e-02, -1.135e-01, -1.179e-01, -1.617e-01, -2.237e-01, -2.470e-02), r);\n\tr = MulAdd(s6_8, M4(-5.890e-02, 8.569e-02, 1.383e-01, -6.613e-02, -5.659e-02, 6.558e-02, 1.452e-04, -2.267e-02, -3.246e-02, -9.784e-02, -1.064e-01, 3.582e-02, 5.807e-02, 5.263e-02, 2.534e-02, 9.334e-02), r);\n\tr = MulAdd(s7_0, M4(2.126e-01, -3.965e-02, -6.040e-03, 1.445e-02, -4.166e-02, 4.742e-02, -8.664e-02, 5.568e-02, 6.662e-02, -8.717e-02, 1.718e-01, 2.674e-02, -1.090e-01, -1.022e-02, 1.726e-02, 1.323e-01), r);\n\tr = MulAdd(s7_1, M4(8.978e-02, 6.943e-02, 1.115e-02, 6.326e-02, 1.048e-01, 1.267e-01, 5.543e-03, 1.492e-01, -9.506e-02, -3.199e-02, 1.146e-02, -3.752e-03, -7.690e-02, 1.866e-01, 2.825e-02, 5.971e-02), r);\n\tr = MulAdd(s7_2, M4(-6.166e-02, 3.839e-02, -2.729e-02, 7.142e-02, 2.880e-02, 1.294e-01, -5.555e-02, -3.306e-03, 4.696e-02, -7.416e-03, 9.044e-02, -8.489e-02, 1.730e-02, 4.475e-02, -5.271e-02, 2.289e-02), r);\n\tr = MulAdd(s7_3, M4(-3.251e-02, 6.556e-03, -3.212e-03, -1.414e-02, 1.450e-02, -8.137e-02, 9.345e-02, 5.045e-02, -2.866e-02, -3.191e-02, 6.239e-02, 1.788e-03, -2.839e-02, -5.030e-02, -1.687e-02, 2.879e-02), r);\n\tr = MulAdd(s7_4, M4(-4.092e-02, -7.110e-02, -9.456e-02, 1.835e-02, 7.861e-02, 5.918e-02, 2.124e-01, 8.800e-02, -1.590e-01, 1.002e-01, 4.616e-02, -8.691e-02, 2.178e-02, -1.333e-02, 2.349e-02, -7.837e-02), r);\n\tr = MulAdd(s7_5, M4(7.628e-02, 5.166e-02, -1.514e-02, -1.198e-01, -3.981e-02, -7.346e-03, 1.422e-01, 9.788e-02, 4.526e-02, 7.582e-02, 3.629e-02, 3.230e-01, -7.322e-02, -9.469e-02, -1.592e-02, -7.371e-02), r);\n\tr = MulAdd(s7_6, M4(-5.822e-02, -1.253e-02, -8.465e-02, -3.110e-02, -1.102e-02, -3.346e-04, 2.758e-02, 9.501e-02, -1.179e-01, -1.198e-01, 1.321e-01, -6.008e-02, -8.633e-03, -1.439e-02, -2.763e-02, -5.576e-02), r);\n\tr = MulAdd(s7_7, M4(9.527e-02, -7.521e-02, -5.449e-02, 8.966e-02, 9.526e-02, -1.341e-02, -1.805e-02, -4.273e-03, 1.667e-01, -2.610e-02, -3.437e-02, -3.887e-02, -1.084e-01, -9.102e-02, -1.352e-01, -3.787e-02), r);\n\tr = MulAdd(s7_8, M4(-1.350e-01, -5.633e-02, -8.886e-02, 1.508e-01, 1.708e-02, 8.339e-02, 5.514e-02, 5.951e-03, 2.865e-02, -3.225e-02, 1.506e-01, 8.627e-02, 8.100e-02, 2.859e-03, 7.099e-02, -1.714e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -6.306e-03, 8.006e-03, 6.571e-03, 1.262e-02 };\n\tr = MulAdd(s0_0, M4(1.590e-02, -3.110e-02, -5.343e-02, 1.844e-02, 7.342e-03, 3.303e-02, 1.736e-01, 3.715e-03, -4.183e-02, -3.792e-02, 3.487e-02, 2.242e-01, -9.557e-02, -2.172e-02, 8.764e-02, -3.268e-02), r);\n\tr = MulAdd(s0_1, M4(6.388e-02, -3.818e-02, 4.609e-02, 3.996e-02, -6.768e-02, -1.970e-02, 1.285e-02, -8.580e-02, 5.195e-02, 5.021e-02, 7.898e-03, -2.762e-02, -3.387e-04, 5.472e-02, 3.084e-02, 1.434e-01), r);\n\tr = MulAdd(s0_2, M4(3.166e-02, -5.894e-02, 5.915e-02, 3.985e-02, -4.421e-02, -3.876e-02, 7.038e-03, -6.328e-02, -4.077e-02, -8.372e-02, 5.535e-02, 3.628e-02, -1.039e-03, -5.280e-04, -6.163e-02, 9.013e-02), r);\n\tr = MulAdd(s0_3, M4(2.717e-02, -1.076e-02, 1.405e-02, 1.800e-01, 3.261e-02, -5.774e-03, -5.891e-02, 1.254e-01, 1.157e-01, -6.435e-02, 3.639e-02, -4.932e-02, 3.157e-02, -5.578e-02, 4.085e-02, 1.272e-01), r);\n\tr = MulAdd(s0_4, M4(4.370e-03, -1.914e-01, 2.501e-02, 6.614e-03, 4.624e-02, 9.182e-02, -1.160e-01, 1.983e-02, -1.177e-01, -2.725e-01, -2.444e-01, -5.267e-02, 1.670e-01, 3.638e-03, 1.756e-02, 1.624e-02), r);\n\tr = MulAdd(s0_5, M4(3.460e-02, -2.745e-01, 1.139e-01, 1.029e-01, 2.006e-02, 9.844e-02, 2.325e-02, -1.451e-02, 1.353e-01, 9.225e-02, -4.067e-02, 1.927e-01, 1.685e-01, -1.072e-02, -5.754e-02, 2.313e-02), r);\n\tr = MulAdd(s0_6, M4(-5.847e-02, 3.581e-02, -2.012e-02, -6.789e-02, 1.380e-02, -4.919e-02, -1.183e-01, -6.287e-02, 2.998e-02, 1.971e-01, 2.000e-01, -1.879e-03, -1.302e-02, -8.027e-02, -1.116e-01, -1.198e-01), r);\n\tr = MulAdd(s0_7, M4(3.188e-02, 1.171e-02, -2.499e-01, 2.871e-02, 8.527e-02, -8.520e-02, -2.996e-02, -2.599e-02, -4.322e-02, -8.885e-02, -1.367e-01, 6.895e-02, 6.368e-02, 2.506e-02, -2.611e-02, -1.471e-01), r);\n\tr = MulAdd(s0_8, M4(-5.684e-02, -7.597e-02, -1.881e-01, -5.687e-02, 3.325e-02, 1.130e-01, -6.854e-02, 2.383e-03, 1.246e-01, 1.974e-02, 8.954e-02, -6.438e-03, -1.599e-01, -2.827e-02, 4.963e-02, -3.256e-02), r);\n\tr = MulAdd(s1_0, M4(-4.162e-02, 1.987e-01, -2.119e-02, -8.128e-02, 1.152e-02, 8.857e-02, 1.907e-01, 8.436e-02, -3.137e-02, 8.293e-02, -1.405e-02, 2.704e-02, 8.655e-02, -3.663e-02, 1.099e-01, 5.457e-02), r);\n\tr = MulAdd(s1_1, M4(-5.241e-02, 7.595e-02, -8.220e-02, -2.789e-02, 5.280e-02, 1.105e-01, 2.167e-02, 9.167e-02, -3.544e-03, -7.002e-02, 1.089e-03, 1.149e-02, -2.671e-02, -3.081e-02, -7.905e-02, 8.840e-02), r);\n\tr = MulAdd(s1_2, M4(-1.234e-02, 9.964e-02, 8.661e-02, -1.308e-01, -6.105e-02, 6.715e-02, -2.462e-02, -9.010e-02, 1.985e-02, 1.281e-02, -2.655e-02, -5.739e-02, -1.161e-01, -2.814e-02, 6.001e-02, 2.301e-02), r);\n\tr = MulAdd(s1_3, M4(-5.796e-02, 1.801e-01, -9.560e-02, 1.335e-01, 1.099e-02, -6.033e-02, -5.202e-02, 1.635e-01, 1.770e-02, -1.323e-01, 4.147e-02, 8.472e-02, -1.089e-01, 2.684e-01, -6.604e-02, 9.575e-02), r);\n\tr = MulAdd(s1_4, M4(-1.456e-01, 8.853e-02, -4.921e-03, -7.301e-02, 9.708e-02, 8.831e-02, 1.773e-03, 1.722e-01, -4.105e-02, -1.195e-01, -6.714e-02, -7.913e-02, -2.420e-02, 5.004e-02, 1.116e-01, 1.293e-01), r);\n\tr = MulAdd(s1_5, M4(-7.842e-02, 2.580e-02, 1.357e-01, -1.304e-01, -8.766e-02, -4.131e-02, -4.978e-02, 8.374e-02, 1.924e-01, -6.467e-02, -7.540e-02, -1.794e-02, 1.040e-01, -1.228e-01, -1.131e-01, -6.994e-02), r);\n\tr = MulAdd(s1_6, M4(-2.254e-02, -7.200e-03, -5.046e-02, 9.115e-03, -1.037e-01, -3.738e-02, -8.190e-02, -1.775e-01, 3.517e-03, 3.532e-02, 7.561e-02, 4.706e-03, 4.358e-02, -7.764e-02, 8.520e-02, -1.015e-02), r);\n\tr = MulAdd(s1_7, M4(-1.611e-02, 2.476e-01, -2.432e-02, -1.583e-02, -4.018e-02, 1.071e-01, 8.575e-02, 3.484e-02, 1.520e-01, 4.716e-03, -2.497e-02, 1.696e-01, -1.108e-01, -4.485e-02, 4.509e-02, -4.546e-02), r);\n\tr = MulAdd(s1_8, M4(-6.576e-03, -9.228e-02, 1.373e-01, -9.949e-03, -7.073e-03, 4.201e-02, 2.402e-02, -4.963e-02, -6.371e-03, 9.453e-02, -2.234e-02, 1.741e-02, -9.118e-02, 1.014e-01, 3.908e-03, -4.366e-02), r);\n\tr = MulAdd(s2_0, M4(6.863e-02, 3.414e-02, -2.653e-02, 2.633e-02, 1.998e-01, -2.907e-02, 1.251e-01, -7.200e-02, 7.589e-02, -1.495e-03, -1.100e-02, 9.860e-02, 1.296e-02, -9.353e-02, 2.282e-01, -1.075e-01), r);\n\tr = MulAdd(s2_1, M4(-6.242e-02, -1.099e-01, 3.064e-02, 1.066e-01, -2.413e-03, -1.544e-01, -3.160e-02, -1.192e-01, -5.256e-02, -1.040e-01, -5.898e-02, 1.146e-02, -1.371e-01, 1.769e-01, 1.877e-01, -7.063e-02), r);\n\tr = MulAdd(s2_2, M4(6.056e-03, 1.196e-01, 6.621e-03, 5.906e-02, 1.004e-02, 7.377e-02, -4.564e-02, 1.033e-01, 4.088e-02, 6.371e-02, 4.876e-02, -9.700e-02, 6.133e-02, 3.265e-03, 9.627e-02, -4.853e-02), r);\n\tr = MulAdd(s2_3, M4(-8.618e-02, 2.361e-02, 2.306e-02, 2.338e-02, 1.455e-01, 2.213e-02, 2.779e-01, -1.930e-01, 1.413e-01, 3.542e-02, -1.063e-01, -2.486e-02, 1.034e-01, -1.830e-01, -3.106e-02, -2.160e-01), r);\n\tr = MulAdd(s2_4, M4(-1.389e-02, 8.223e-02, 1.201e-01, 1.706e-01, -1.186e-01, -1.825e-01, 9.056e-03, 7.458e-02, -4.595e-02, -1.092e-01, 1.343e-01, -2.154e-02, -2.586e-01, -1.892e-03, -3.889e-03, 5.850e-03), r);\n\tr = MulAdd(s2_5, M4(-1.136e-01, 1.982e-02, 3.331e-04, -3.975e-02, 1.881e-03, -3.929e-02, 9.770e-02, 8.461e-02, -1.051e-01, 3.264e-03, -2.358e-02, 5.921e-02, 2.493e-02, 4.953e-02, 7.066e-02, -3.072e-02), r);\n\tr = MulAdd(s2_6, M4(1.886e-02, 1.277e-02, 3.918e-02, 7.419e-02, -6.785e-02, 3.313e-02, -1.838e-02, 2.983e-02, 5.504e-02, 2.602e-02, -6.254e-02, 3.636e-02, 1.083e-01, -1.801e-01, -8.274e-02, 1.667e-02), r);\n\tr = MulAdd(s2_7, M4(7.890e-02, -7.701e-02, -9.203e-02, 8.960e-02, -3.452e-02, 1.039e-01, -1.697e-01, 1.136e-01, -3.416e-02, 8.475e-02, -9.041e-02, 9.931e-03, 8.038e-02, -1.292e-01, -4.484e-03, 2.517e-01), r);\n\tr = MulAdd(s2_8, M4(-1.775e-03, 1.181e-01, 2.082e-02, 5.564e-02, 1.352e-01, 1.749e-01, -2.519e-02, -9.326e-02, 1.243e-02, -3.042e-03, -3.586e-02, -1.242e-02, -1.886e-02, 7.223e-02, 4.050e-03, -1.565e-01), r);\n\tr = MulAdd(s3_0, M4(-1.018e-01, 1.416e-02, -1.012e-01, -2.921e-01, -3.719e-03, 4.453e-02, 6.208e-02, 6.302e-02, -2.990e-02, -5.834e-02, 2.999e-02, -5.499e-02, 1.150e-02, -1.652e-02, -4.041e-02, -4.852e-02), r);\n\tr = MulAdd(s3_1, M4(-1.862e-01, -6.003e-02, 6.366e-03, -1.071e-01, 9.639e-02, 5.844e-03, 9.584e-02, -5.846e-03, 8.865e-02, -1.776e-01, -1.649e-01, -4.859e-03, -4.392e-02, -7.421e-02, 2.612e-03, -3.602e-02), r);\n\tr = MulAdd(s3_2, M4(-1.813e-01, 1.274e-01, -7.660e-02, -1.141e-01, -7.542e-03, -1.065e-02, 9.674e-03, 2.061e-02, -6.439e-03, -1.230e-02, -1.123e-01, -5.417e-02, 3.718e-02, -6.594e-02, 5.417e-02, 6.099e-02), r);\n\tr = MulAdd(s3_3, M4(-9.982e-02, 1.328e-01, -6.842e-02, 7.849e-03, 8.076e-02, 6.480e-02, 3.816e-02, -4.609e-02, -5.017e-02, 2.053e-02, -1.976e-02, -8.944e-02, 1.305e-01, -9.935e-02, 5.136e-02, -8.934e-02), r);\n\tr = MulAdd(s3_4, M4(2.970e-02, 2.572e-01, 2.418e-01, -2.262e-02, -5.754e-02, -5.101e-02, 1.061e-01, 1.150e-02, 1.246e-01, -5.406e-02, -1.217e-01, -5.303e-02, -2.295e-03, 1.318e-01, 1.894e-01, -2.032e-01), r);\n\tr = MulAdd(s3_5, M4(-7.984e-02, -2.415e-02, 5.613e-03, -2.421e-01, -1.214e-02, -2.134e-01, -6.162e-02, 2.134e-02, -1.086e-01, -1.858e-01, 4.495e-02, -2.550e-02, 5.153e-02, 6.359e-02, -7.375e-03, -6.049e-02), r);\n\tr = MulAdd(s3_6, M4(-5.793e-02, 1.419e-02, -6.912e-02, 3.221e-02, -5.328e-02, 4.926e-02, 4.026e-02, 6.780e-02, -3.927e-02, 5.506e-02, 5.599e-02, -5.676e-02, 1.683e-02, -1.534e-02, -3.519e-02, -7.504e-02), r);\n\tr = MulAdd(s3_7, M4(3.167e-02, -1.083e-01, 1.771e-01, 7.894e-02, 7.396e-03, -7.355e-02, -7.834e-02, -1.662e-01, -1.075e-01, 1.908e-01, -4.130e-02, -1.544e-01, 4.089e-02, 2.716e-02, 4.991e-02, 1.006e-01), r);\n\tr = MulAdd(s3_8, M4(8.130e-02, -2.307e-02, 2.258e-01, -1.702e-01, -5.174e-03, 7.052e-02, -1.868e-02, -2.389e-02, 1.193e-01, -5.332e-02, 2.500e-02, 7.811e-02, 1.416e-02, 7.437e-02, 1.395e-02, -1.400e-01), r);\n\tr = MulAdd(s4_0, M4(4.121e-02, -2.477e-02, 3.316e-02, -5.069e-02, 1.654e-02, 2.731e-02, -5.538e-02, 1.603e-02, 7.782e-02, 6.690e-02, -6.802e-02, -9.293e-02, -1.002e-02, 1.889e-02, -1.141e-01, -3.351e-02), r);\n\tr = MulAdd(s4_1, M4(-5.217e-02, 6.161e-02, -4.193e-02, -6.295e-02, 9.101e-04, 1.352e-01, -1.879e-02, -5.071e-02, 1.265e-01, 2.192e-02, -1.221e-03, -6.355e-02, 4.557e-02, -5.211e-04, -5.280e-02, -1.080e-03), r);\n\tr = MulAdd(s4_2, M4(8.481e-02, 7.269e-03, 7.575e-04, 7.683e-02, 3.219e-02, 2.291e-02, -1.431e-02, 6.218e-03, 6.404e-02, -1.347e-03, -1.045e-01, -5.670e-02, -9.829e-02, -1.256e-01, -6.270e-02, -3.812e-02), r);\n\tr = MulAdd(s4_3, M4(-2.407e-01, -4.111e-02, 1.126e-01, 4.934e-02, -3.288e-02, 8.998e-02, -7.661e-02, -4.144e-04, -3.361e-03, 1.834e-02, -1.180e-01, -3.153e-02, 4.357e-02, 5.519e-02, -4.810e-02, -1.510e-02), r);\n\tr = MulAdd(s4_4, M4(-1.391e-01, -5.460e-02, 1.079e-01, -1.000e-01, -6.315e-02, 1.372e-01, -1.143e-01, 6.703e-02, 1.145e-01, -1.889e-02, 9.035e-02, 1.031e-01, 1.311e-01, 3.571e-02, 8.697e-02, 2.037e-03), r);\n\tr = MulAdd(s4_5, M4(9.495e-02, 9.257e-02, 9.830e-02, 1.196e-03, 2.120e-02, -7.858e-02, 2.426e-02, 5.286e-02, 1.095e-01, -3.742e-02, -1.869e-02, 3.153e-02, -4.070e-02, -6.705e-02, 7.344e-02, -2.352e-02), r);\n\tr = MulAdd(s4_6, M4(-1.948e-01, 1.040e-01, 1.133e-01, -5.870e-02, 4.856e-02, 5.025e-02, 3.938e-02, -3.379e-02, 4.228e-02, 1.662e-01, 5.011e-02, -4.837e-02, -2.938e-02, 2.523e-03, -2.985e-02, 2.952e-03), r);\n\tr = MulAdd(s4_7, M4(1.069e-01, -1.289e-02, -1.304e-01, 1.352e-01, 5.513e-02, -6.971e-02, -5.266e-03, 9.616e-02, 2.094e-01, -1.744e-02, 4.187e-02, 1.510e-01, 1.264e-01, 4.890e-03, -6.329e-02, -1.145e-02), r);\n\tr = MulAdd(s4_8, M4(-1.590e-02, 3.200e-03, 8.619e-02, -1.428e-01, 8.215e-02, -9.859e-02, -4.675e-02, 2.689e-02, -3.777e-02, 1.753e-01, -7.441e-02, -3.221e-02, -2.031e-02, -1.153e-01, 1.363e-01, 1.844e-01), r);\n\tr = MulAdd(s5_0, M4(1.515e-01, -2.016e-02, -5.047e-03, 3.562e-02, -1.864e-01, -1.531e-01, 1.729e-02, 5.759e-02, 8.454e-03, 3.906e-02, -5.451e-02, 1.320e-02, -6.558e-03, 9.826e-02, -1.302e-01, -6.306e-02), r);\n\tr = MulAdd(s5_1, M4(-2.160e-02, 2.547e-02, 6.341e-02, -1.780e-02, 2.864e-03, -4.790e-02, 8.105e-02, -1.995e-01, -1.708e-03, 2.987e-02, 1.015e-02, -8.499e-02, -3.817e-02, 9.095e-02, -1.822e-01, -1.101e-02), r);\n\tr = MulAdd(s5_2, M4(2.311e-02, -2.671e-02, 5.648e-02, 6.421e-02, -1.514e-01, -1.763e-01, -8.416e-02, 6.549e-02, -9.514e-02, 5.539e-02, -8.377e-04, 7.457e-02, -1.727e-01, -1.828e-01, -1.163e-01, -6.494e-02), r);\n\tr = MulAdd(s5_3, M4(-2.060e-01, -7.085e-03, 7.469e-02, 4.907e-02, -2.527e-01, -2.608e-01, 5.313e-02, 1.760e-01, -8.158e-02, -7.513e-02, -4.557e-02, -8.827e-02, 2.459e-01, 2.116e-01, 4.177e-02, 9.706e-02), r);\n\tr = MulAdd(s5_4, M4(-8.207e-02, 6.713e-02, -1.241e-01, -4.085e-02, -4.241e-01, -2.051e-01, -2.963e-02, -1.237e-01, 1.151e-02, 7.767e-02, 1.969e-01, -1.872e-01, 7.294e-04, -1.502e-01, 2.878e-01, 2.020e-01), r);\n\tr = MulAdd(s5_5, M4(-1.524e-02, -8.226e-02, 1.199e-01, 9.689e-02, -3.195e-02, -5.830e-02, 3.958e-02, -1.260e-01, 1.386e-01, -2.399e-02, -1.258e-01, 5.275e-02, 1.007e-01, 4.434e-02, 1.313e-01, 2.186e-02), r);\n\tr = MulAdd(s5_6, M4(-1.757e-01, -3.246e-02, -1.415e-02, 4.278e-02, -5.272e-02, 4.532e-02, 1.979e-02, 5.368e-03, -4.621e-02, 1.805e-02, 4.910e-02, 7.873e-02, -5.996e-02, 1.241e-01, -1.192e-01, 1.480e-01), r);\n\tr = MulAdd(s5_7, M4(6.249e-02, -3.158e-02, -2.466e-02, -5.536e-02, -2.296e-01, -1.226e-01, 6.021e-02, 1.391e-01, -3.438e-02, -1.871e-02, -5.718e-02, 9.415e-02, 6.558e-02, 1.641e-02, -1.713e-01, -2.197e-01), r);\n\tr = MulAdd(s5_8, M4(-3.256e-03, -3.506e-02, 1.623e-01, -6.274e-02, 7.654e-03, -1.939e-01, -4.765e-03, -1.295e-01, 9.933e-02, 2.003e-02, 9.965e-03, 5.707e-02, -2.183e-02, -2.713e-02, 1.215e-01, 9.745e-02), r);\n\tr = MulAdd(s6_0, M4(-1.090e-01, -1.152e-01, 2.460e-03, 4.796e-02, 2.755e-02, 2.983e-02, 4.337e-02, 2.985e-02, 1.026e-01, 1.752e-02, 5.032e-02, -1.199e-01, 1.055e-01, -1.054e-01, 4.206e-02, 1.051e-01), r);\n\tr = MulAdd(s6_1, M4(2.026e-01, -4.514e-02, -1.722e-01, 3.648e-02, -4.413e-02, 1.019e-01, 2.769e-02, -8.508e-02, 4.680e-02, 7.041e-02, -2.414e-02, 1.759e-02, -2.522e-02, 8.350e-02, -2.077e-02, 6.958e-03), r);\n\tr = MulAdd(s6_2, M4(-3.116e-02, -1.302e-01, -1.195e-02, 2.560e-02, -9.033e-02, -5.811e-02, 3.653e-02, -3.877e-02, 6.517e-02, 2.153e-01, 1.416e-01, 1.106e-01, -1.300e-02, 1.685e-01, 2.437e-03, 1.604e-04), r);\n\tr = MulAdd(s6_3, M4(1.487e-01, 4.270e-02, 1.526e-01, 6.293e-02, -1.350e-01, -2.366e-01, -7.172e-02, 5.710e-02, -2.211e-02, -4.022e-02, 4.349e-02, 2.249e-03, 2.711e-01, 4.068e-02, -2.228e-01, 1.218e-01), r);\n\tr = MulAdd(s6_4, M4(-1.098e-02, -4.339e-02, 1.202e-01, -8.716e-02, -2.145e-01, -1.815e-01, -1.335e-01, -3.087e-02, -1.077e-01, -1.044e-02, -6.819e-02, -8.384e-02, 1.648e-02, 5.418e-02, 6.638e-02, -1.989e-01), r);\n\tr = MulAdd(s6_5, M4(3.548e-02, 1.502e-01, -1.120e-02, -1.836e-02, -6.830e-02, 5.039e-02, 7.547e-02, -7.908e-02, -4.105e-02, -2.698e-01, -2.745e-02, -6.625e-02, 4.007e-02, -8.148e-02, -1.544e-01, 5.530e-02), r);\n\tr = MulAdd(s6_6, M4(9.983e-02, -5.071e-02, 9.065e-02, -4.156e-02, -6.846e-02, -6.359e-02, 2.337e-02, -2.178e-01, 3.106e-02, -4.579e-02, 1.234e-01, -7.015e-02, 7.251e-02, -1.132e-01, 3.569e-02, 6.967e-02), r);\n\tr = MulAdd(s6_7, M4(1.498e-01, -2.674e-02, -2.983e-02, -6.621e-02, 1.042e-02, -7.544e-02, -8.134e-03, 1.430e-01, 5.768e-02, -1.481e-02, 1.103e-02, 5.662e-02, -4.365e-03, 4.097e-02, 1.368e-01, 8.332e-02), r);\n\tr = MulAdd(s6_8, M4(7.457e-02, -3.248e-02, -8.708e-02, -9.401e-02, 1.810e-02, -6.809e-02, 8.030e-02, -2.026e-01, 2.086e-02, 1.320e-02, -2.712e-03, 7.659e-02, 5.204e-02, 8.754e-02, 1.649e-01, 1.309e-01), r);\n\tr = MulAdd(s7_0, M4(-3.163e-02, 3.620e-02, -3.094e-02, 1.678e-01, 5.136e-02, 9.350e-02, -1.322e-02, 6.079e-04, 1.147e-01, -1.646e-01, 5.951e-02, -6.937e-02, 4.531e-02, 4.423e-03, -1.073e-01, 2.816e-02), r);\n\tr = MulAdd(s7_1, M4(6.097e-02, -3.721e-03, 1.297e-01, 2.043e-03, 4.694e-02, 7.640e-02, -6.045e-02, 9.431e-02, 4.080e-02, 4.768e-02, -1.154e-01, -6.744e-02, 2.081e-03, 7.172e-03, 5.627e-02, 9.120e-03), r);\n\tr = MulAdd(s7_2, M4(-3.928e-02, -5.564e-03, 4.455e-02, 3.625e-02, -3.834e-02, -1.259e-02, -2.303e-02, -5.317e-02, 2.345e-02, -2.036e-01, -5.532e-02, -1.497e-02, -2.768e-03, 1.263e-02, -8.531e-02, -7.579e-04), r);\n\tr = MulAdd(s7_3, M4(8.706e-03, -5.076e-02, -1.403e-01, -7.356e-02, -4.071e-02, 1.831e-01, -3.623e-02, 9.057e-02, 5.028e-02, 4.501e-02, 2.522e-02, -9.645e-02, 1.070e-01, 1.581e-02, 2.683e-02, 1.828e-02), r);\n\tr = MulAdd(s7_4, M4(-4.991e-02, 7.480e-02, 4.730e-02, 7.487e-02, -3.904e-02, 5.020e-02, 1.929e-01, 2.029e-01, -2.223e-02, -6.129e-02, -1.038e-01, -8.008e-02, 1.022e-01, -2.192e-02, 1.285e-01, 3.667e-02), r);\n\tr = MulAdd(s7_5, M4(-2.875e-02, -2.168e-02, -9.253e-02, 1.754e-02, 2.110e-01, 1.509e-01, 2.660e-02, 2.250e-01, 4.431e-02, -3.156e-01, -1.295e-01, 7.250e-02, -4.291e-02, -9.290e-02, 6.327e-02, 2.415e-02), r);\n\tr = MulAdd(s7_6, M4(-5.187e-02, -8.576e-02, 4.336e-02, 9.868e-02, 6.822e-02, 9.902e-02, 1.039e-02, 4.301e-02, -5.396e-02, 1.798e-04, 1.348e-01, -7.698e-02, 2.397e-02, -7.087e-03, -4.507e-02, -8.344e-02), r);\n\tr = MulAdd(s7_7, M4(-2.913e-02, 6.067e-02, 4.437e-02, -7.690e-02, -1.153e-01, -1.310e-02, 6.175e-02, 1.078e-01, 8.214e-02, 1.278e-01, -2.377e-01, -1.081e-01, 8.874e-02, -7.998e-02, 2.247e-02, -1.505e-02), r);\n\tr = MulAdd(s7_8, M4(-6.634e-02, 1.412e-01, 3.046e-02, 2.276e-02, 6.834e-02, -1.809e-02, -2.036e-02, 1.500e-02, 1.822e-02, 1.063e-01, -9.810e-02, -6.572e-03, -8.266e-02, 1.112e-02, 1.025e-01, -3.403e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.363e-02, -2.900e-02, -2.210e-02, 1.111e-03 };\n\tr = MulAdd(s0_0, M4(3.412e-02, 3.051e-02, 8.225e-02, -1.024e-01, 7.559e-02, -1.081e-01, 2.765e-02, -9.220e-03, -8.263e-02, -1.271e-01, 2.911e-02, -4.563e-02, -1.370e-03, 1.308e-02, -5.000e-02, -8.016e-02), r);\n\tr = MulAdd(s0_1, M4(-1.237e-01, 3.243e-02, -2.655e-03, -2.804e-02, 1.442e-01, -7.090e-02, -1.282e-01, -8.525e-02, -3.692e-02, -3.291e-02, 4.044e-02, -2.841e-02, 9.882e-02, -1.408e-01, 7.823e-02, 7.577e-02), r);\n\tr = MulAdd(s0_2, M4(-4.266e-03, -1.042e-01, -2.781e-03, 1.189e-01, -4.019e-02, 4.284e-02, 3.647e-02, -3.917e-02, 2.519e-02, 2.713e-02, -2.684e-02, -5.395e-02, -3.944e-02, 1.009e-01, 1.614e-02, -3.454e-02), r);\n\tr = MulAdd(s0_3, M4(5.231e-02, -1.247e-03, 4.723e-02, 3.690e-02, -3.373e-02, -8.962e-02, 6.245e-02, 7.159e-02, -9.852e-03, -1.045e-01, -3.930e-02, -7.045e-02, 3.296e-03, -2.380e-02, -6.767e-02, 1.425e-02), r);\n\tr = MulAdd(s0_4, M4(-5.032e-02, 1.616e-01, 2.793e-02, -6.640e-04, -4.264e-02, -1.984e-03, 7.180e-02, -1.646e-01, -1.706e-03, 1.785e-01, 1.815e-01, 7.529e-02, -1.628e-02, -9.082e-02, -8.031e-04, 2.452e-02), r);\n\tr = MulAdd(s0_5, M4(-5.703e-02, -8.024e-02, 7.129e-02, -4.083e-02, 5.158e-03, -2.297e-02, 3.771e-02, 9.569e-03, -1.159e-01, 1.244e-03, 1.017e-01, 1.623e-02, -3.491e-02, 4.120e-02, -2.884e-02, 5.029e-02), r);\n\tr = MulAdd(s0_6, M4(-1.580e-02, -3.969e-02, 6.006e-03, 4.013e-02, -7.220e-02, -2.069e-02, 1.059e-01, -3.396e-02, 1.080e-03, -4.293e-02, -2.114e-02, 9.736e-02, -1.408e-02, -1.083e-02, -1.794e-01, 1.529e-02), r);\n\tr = MulAdd(s0_7, M4(-8.711e-03, -6.727e-02, 1.151e-02, 8.747e-02, 1.200e-01, 4.677e-02, -2.146e-02, -5.483e-02, -1.362e-01, 7.609e-02, -6.761e-02, 2.470e-02, -1.201e-02, 2.028e-02, -5.247e-02, 2.490e-02), r);\n\tr = MulAdd(s0_8, M4(-1.624e-01, -1.219e-02, 8.491e-03, -1.459e-02, -6.650e-02, 5.021e-02, 8.549e-02, 1.407e-01, -4.661e-02, -1.431e-02, -8.125e-02, -1.043e-01, 5.141e-02, 8.380e-02, 3.613e-02, 7.793e-02), r);\n\tr = MulAdd(s1_0, M4(1.073e-02, 2.244e-02, 6.590e-02, -5.961e-02, -2.497e-02, 1.584e-02, 5.910e-02, -5.007e-02, 3.457e-03, -2.497e-02, 2.563e-02, -1.448e-02, 4.348e-02, -1.611e-01, 3.845e-02, -1.537e-02), r);\n\tr = MulAdd(s1_1, M4(-2.009e-01, -3.046e-03, -9.702e-02, -1.795e-03, 2.785e-02, -3.820e-02, -7.666e-02, -6.119e-02, 8.082e-02, 2.343e-02, 3.437e-02, -2.124e-02, 4.315e-03, -3.716e-02, -5.562e-02, -1.339e-01), r);\n\tr = MulAdd(s1_2, M4(-1.177e-01, -6.318e-02, 1.391e-01, 1.453e-01, -5.396e-02, 2.690e-02, -6.522e-02, -8.111e-02, 3.221e-02, 4.900e-02, -4.916e-02, -1.069e-01, -4.759e-02, -8.181e-02, -4.537e-02, 1.752e-02), r);\n\tr = MulAdd(s1_3, M4(1.239e-01, 3.868e-03, 4.798e-02, 6.149e-02, -7.047e-02, -8.473e-02, -8.423e-02, 3.387e-02, -8.123e-02, -1.806e-02, -4.482e-03, -6.674e-02, 1.751e-01, -1.346e-01, -7.599e-02, -3.724e-02), r);\n\tr = MulAdd(s1_4, M4(2.541e-02, 2.182e-01, -1.363e-01, 2.653e-01, -2.468e-01, -8.282e-03, -3.059e-02, -1.982e-01, 1.033e-01, -1.830e-02, 2.651e-01, 1.480e-01, 1.894e-01, 1.038e-01, -1.743e-01, -1.837e-02), r);\n\tr = MulAdd(s1_5, M4(5.579e-02, 2.130e-02, 1.556e-01, -1.163e-02, -1.242e-01, -2.948e-02, 1.057e-01, 8.414e-02, -8.984e-02, 4.301e-02, 4.905e-02, 1.295e-01, 5.426e-02, 2.003e-01, -5.208e-03, 2.143e-02), r);\n\tr = MulAdd(s1_6, M4(6.868e-02, 6.985e-02, 2.228e-02, 7.773e-02, -6.927e-02, 7.728e-02, 2.786e-02, -3.791e-02, -5.486e-02, -3.999e-02, -1.448e-02, 3.122e-02, 2.140e-01, -1.048e-02, -3.925e-02, -9.152e-02), r);\n\tr = MulAdd(s1_7, M4(-7.144e-02, -1.071e-01, 3.923e-02, 1.559e-01, -2.798e-02, -2.728e-02, -4.025e-02, -3.240e-02, -6.226e-03, 3.900e-02, -3.820e-02, 6.497e-02, 1.878e-01, 1.847e-02, -7.449e-02, -1.152e-02), r);\n\tr = MulAdd(s1_8, M4(1.180e-01, -7.984e-03, 1.227e-02, 1.984e-01, -1.984e-04, 3.139e-03, -8.780e-02, -4.568e-02, -5.782e-03, 1.962e-02, -1.174e-02, 7.476e-02, 5.276e-02, -5.013e-02, 8.049e-02, -3.299e-02), r);\n\tr = MulAdd(s2_0, M4(6.274e-02, -3.757e-02, 4.032e-03, -2.051e-02, 1.837e-03, -1.974e-01, 7.678e-02, -3.274e-01, 5.467e-02, -1.360e-01, -9.023e-03, -2.604e-02, -2.287e-01, -2.250e-01, 1.458e-01, -9.307e-02), r);\n\tr = MulAdd(s2_1, M4(3.460e-02, -2.941e-02, -6.582e-02, 6.535e-04, 2.547e-02, -6.687e-02, 1.538e-01, -1.264e-01, -5.819e-02, -8.358e-02, -1.514e-01, -1.045e-01, -8.542e-02, -2.199e-02, -4.406e-02, -3.557e-02), r);\n\tr = MulAdd(s2_2, M4(4.431e-02, 5.701e-02, 5.174e-02, 5.303e-02, -1.493e-01, 2.189e-02, -5.680e-02, -5.502e-02, -2.864e-02, 2.450e-02, -2.843e-02, 3.108e-02, 1.450e-01, -8.313e-02, 2.644e-02, 5.104e-03), r);\n\tr = MulAdd(s2_3, M4(1.122e-02, -2.386e-02, 1.068e-01, -1.310e-01, 1.776e-01, -2.188e-02, 8.302e-02, 4.588e-02, 1.062e-01, 3.849e-02, 7.865e-03, -3.305e-02, -1.519e-01, 2.451e-01, 1.687e-01, -2.046e-01), r);\n\tr = MulAdd(s2_4, M4(-6.623e-02, 3.129e-02, -4.648e-02, 3.467e-02, -1.850e-01, 8.717e-02, -1.732e-01, -1.963e-02, 9.305e-02, 5.430e-02, -5.825e-02, 7.086e-02, 4.960e-02, 1.532e-01, 1.190e-01, -6.810e-02), r);\n\tr = MulAdd(s2_5, M4(1.002e-02, 4.163e-02, 9.688e-02, -5.312e-02, -8.392e-02, -1.959e-02, -3.397e-02, -5.165e-02, 4.046e-02, 6.424e-02, -6.193e-02, 1.590e-01, -8.976e-02, -5.310e-02, 3.080e-02, 1.688e-02), r);\n\tr = MulAdd(s2_6, M4(1.002e-01, 1.196e-01, 1.772e-02, 1.004e-01, -4.129e-02, 4.581e-02, 1.411e-01, -5.263e-02, 7.226e-02, 1.399e-03, -4.616e-02, 2.784e-02, 1.522e-01, 1.689e-01, 5.797e-02, -1.318e-01), r);\n\tr = MulAdd(s2_7, M4(-1.265e-01, 1.050e-02, -1.032e-01, 9.369e-02, -9.171e-02, -1.025e-01, 7.834e-04, 8.201e-02, -1.705e-02, -9.497e-02, 6.001e-03, -3.667e-03, -8.255e-02, 1.664e-01, -1.120e-01, -7.231e-02), r);\n\tr = MulAdd(s2_8, M4(-2.385e-02, -2.511e-02, -7.844e-02, 5.658e-02, -2.686e-01, -3.069e-02, -1.796e-01, -9.825e-02, 2.015e-02, -4.184e-02, -1.065e-02, 4.393e-02, -2.244e-02, -2.192e-02, 1.323e-01, 7.817e-02), r);\n\tr = MulAdd(s3_0, M4(-4.813e-02, 1.033e-01, -1.239e-01, 6.212e-02, 1.533e-01, -2.186e-02, -2.467e-02, 3.213e-02, -1.298e-01, -1.125e-01, -9.258e-02, -1.515e-01, -7.075e-02, -2.428e-03, 7.884e-02, 6.828e-03), r);\n\tr = MulAdd(s3_1, M4(5.317e-02, -3.419e-02, 1.167e-01, 9.786e-02, 2.063e-01, -3.340e-02, -9.822e-02, -5.292e-02, -1.874e-02, -2.924e-02, -5.514e-02, -1.358e-01, 9.802e-02, 3.840e-02, 1.669e-01, 3.956e-02), r);\n\tr = MulAdd(s3_2, M4(4.065e-02, 2.140e-01, -8.572e-02, 1.068e-01, 7.986e-03, -3.785e-02, -1.737e-01, -1.523e-01, -7.119e-02, 7.340e-02, -2.244e-03, -2.892e-01, -5.133e-02, -6.415e-02, 1.915e-02, 6.207e-02), r);\n\tr = MulAdd(s3_3, M4(5.088e-02, -1.354e-02, 1.215e-01, -1.009e-01, 1.794e-02, -2.970e-02, -4.194e-02, 1.087e-02, 8.814e-02, 3.610e-02, 1.164e-01, -1.416e-03, 7.457e-02, -1.265e-01, 6.800e-02, -5.186e-02), r);\n\tr = MulAdd(s3_4, M4(2.519e-01, -9.643e-02, 1.317e-01, 1.881e-01, -7.010e-02, 1.428e-01, -2.471e-01, 8.716e-02, 5.371e-02, -4.401e-03, 1.313e-01, 2.013e-01, -3.015e-03, -7.544e-02, 8.619e-03, -9.775e-02), r);\n\tr = MulAdd(s3_5, M4(-1.297e-02, 4.165e-03, -7.193e-03, 1.914e-02, -7.983e-02, -1.689e-02, -5.825e-02, 1.628e-02, -1.490e-01, -8.353e-02, -2.394e-02, 2.999e-01, 3.445e-02, -2.139e-02, -1.960e-01, -1.962e-02), r);\n\tr = MulAdd(s3_6, M4(1.288e-01, 3.710e-02, 3.362e-02, 6.824e-02, 6.457e-02, 4.753e-02, -9.122e-03, 1.365e-01, -1.270e-01, -9.739e-02, -4.656e-02, -4.114e-02, -9.094e-02, 5.110e-02, 1.864e-02, 8.357e-02), r);\n\tr = MulAdd(s3_7, M4(-5.630e-02, 4.449e-02, -1.477e-02, 2.891e-02, -5.712e-02, -6.406e-02, -9.827e-02, 1.897e-01, -4.576e-02, -1.096e-02, 1.091e-01, 1.543e-01, -2.284e-02, 7.189e-02, -7.863e-02, 3.536e-02), r);\n\tr = MulAdd(s3_8, M4(1.807e-02, -2.432e-02, 1.106e-01, 1.279e-01, -7.728e-02, -3.835e-02, -3.217e-02, 4.699e-02, 3.170e-02, 1.835e-01, -8.757e-02, -1.042e-01, 2.634e-02, 6.942e-02, 8.071e-02, 9.839e-02), r);\n\tr = MulAdd(s4_0, M4(-1.538e-01, -2.602e-02, 1.891e-02, -8.224e-03, -1.816e-01, 1.599e-01, 1.674e-01, 1.331e-02, 3.443e-02, 1.460e-01, 1.016e-01, -3.254e-02, 4.689e-02, -5.821e-02, -1.509e-01, 9.806e-02), r);\n\tr = MulAdd(s4_1, M4(-1.019e-01, -9.918e-02, 6.636e-02, -1.472e-01, -6.238e-03, -1.363e-02, 1.981e-02, -1.289e-01, 7.159e-02, -1.360e-02, 5.624e-02, 4.866e-03, 1.200e-01, -3.857e-02, 8.216e-02, 1.323e-02), r);\n\tr = MulAdd(s4_2, M4(-6.875e-02, -7.830e-03, -1.558e-02, 4.815e-02, 5.018e-02, 4.960e-02, 3.086e-02, 4.705e-02, -8.153e-02, -9.493e-02, 4.873e-02, 8.447e-02, -2.078e-01, -7.069e-02, -3.925e-02, -2.010e-03), r);\n\tr = MulAdd(s4_3, M4(-7.266e-02, -1.724e-01, -1.151e-01, -8.214e-02, -8.020e-02, 5.829e-03, 5.332e-02, 9.192e-03, 7.477e-02, 1.010e-01, 5.775e-02, 5.201e-02, 4.840e-02, -3.975e-02, -1.657e-01, 3.806e-02), r);\n\tr = MulAdd(s4_4, M4(-1.093e-01, -1.978e-01, 5.909e-03, -1.565e-02, 6.150e-02, -2.998e-02, -6.659e-02, 2.187e-02, -1.034e-01, 1.714e-02, -5.031e-02, 2.722e-02, 1.045e-01, -1.683e-01, 7.837e-02, -6.727e-02), r);\n\tr = MulAdd(s4_5, M4(-8.220e-02, -7.769e-02, 7.054e-02, -3.796e-03, -4.555e-02, 6.034e-03, -1.139e-01, -1.368e-02, -5.277e-02, 1.387e-02, -7.393e-02, 1.994e-02, 1.304e-02, -1.483e-01, 2.206e-02, 7.279e-02), r);\n\tr = MulAdd(s4_6, M4(-1.813e-02, -2.197e-02, 3.052e-02, 6.914e-02, 2.676e-02, -2.537e-02, -6.034e-02, 5.296e-02, 6.004e-02, -6.212e-02, 1.521e-01, 1.622e-01, 1.602e-03, -7.222e-02, -1.101e-02, 2.386e-02), r);\n\tr = MulAdd(s4_7, M4(-9.607e-02, 9.544e-03, 5.164e-02, 1.002e-01, -1.144e-01, -1.255e-01, -6.142e-02, 6.983e-02, 1.422e-02, -1.975e-02, -2.548e-01, 7.490e-02, 2.403e-03, -5.085e-02, 5.349e-02, -6.616e-02), r);\n\tr = MulAdd(s4_8, M4(-5.790e-02, -8.023e-03, 8.465e-02, 2.406e-02, 1.545e-02, 1.657e-01, -1.985e-01, 4.316e-03, 6.002e-02, -3.890e-02, 7.282e-02, 9.914e-02, 1.402e-02, -7.114e-02, 1.408e-02, -1.331e-02), r);\n\tr = MulAdd(s5_0, M4(-3.207e-02, -4.764e-02, -1.063e-02, -5.365e-02, -2.986e-01, -7.219e-02, 1.914e-02, 2.135e-02, 1.244e-02, 1.220e-01, 3.385e-02, 8.071e-03, -4.089e-03, -6.386e-02, -6.054e-02, 9.283e-02), r);\n\tr = MulAdd(s5_1, M4(-8.330e-02, -5.058e-02, 3.033e-02, -1.244e-01, 6.578e-03, -1.420e-01, -2.040e-01, 9.333e-02, -2.393e-03, -3.761e-02, -8.599e-02, -6.285e-02, -7.790e-02, -1.335e-01, 2.028e-02, 1.926e-02), r);\n\tr = MulAdd(s5_2, M4(7.877e-02, -8.371e-02, -1.002e-02, -5.710e-02, -1.489e-02, 2.493e-02, -5.286e-02, -1.145e-01, -2.937e-02, 2.563e-02, -1.184e-03, -6.418e-02, -1.025e-01, -2.766e-02, 5.943e-02, -8.713e-02), r);\n\tr = MulAdd(s5_3, M4(1.068e-01, -9.158e-02, 1.896e-03, 2.792e-02, -8.789e-02, -1.465e-01, -1.578e-01, 8.613e-02, -1.861e-01, -2.352e-03, -7.249e-02, 2.557e-02, -1.146e-02, -1.058e-01, -1.144e-01, 3.150e-02), r);\n\tr = MulAdd(s5_4, M4(-4.093e-02, -1.068e-01, -1.299e-01, -6.073e-02, -7.316e-02, -3.338e-02, -2.007e-01, 1.125e-01, -1.403e-02, -3.370e-02, 7.929e-02, 8.132e-03, -2.240e-02, -9.686e-02, -7.760e-02, -2.562e-01), r);\n\tr = MulAdd(s5_5, M4(-1.838e-02, -1.478e-01, 8.911e-02, -9.288e-02, -9.564e-02, 4.152e-02, 5.487e-03, 2.782e-02, 1.532e-05, -6.229e-02, 1.078e-01, -1.351e-01, 8.619e-02, -1.287e-01, 6.642e-02, 6.440e-02), r);\n\tr = MulAdd(s5_6, M4(1.045e-01, 5.052e-02, 6.712e-02, -2.107e-02, -9.970e-02, -5.605e-02, -8.618e-02, -1.237e-01, -1.632e-02, -3.516e-02, 9.641e-02, -3.554e-02, 2.565e-02, -1.265e-01, -3.317e-02, 1.816e-01), r);\n\tr = MulAdd(s5_7, M4(-1.556e-01, -1.894e-01, 8.868e-02, 1.173e-01, -6.388e-02, -4.323e-02, -4.345e-02, -1.665e-01, -5.893e-02, -1.059e-01, -1.366e-01, 1.528e-01, -6.229e-02, -2.086e-02, -5.327e-02, -4.549e-02), r);\n\tr = MulAdd(s5_8, M4(8.045e-03, 4.800e-02, 5.039e-02, 7.994e-02, -1.237e-03, 2.920e-02, -9.876e-02, -1.288e-01, -5.698e-03, -5.525e-02, -3.574e-02, 9.175e-03, 6.371e-02, -1.240e-02, 1.351e-01, 6.024e-02), r);\n\tr = MulAdd(s6_0, M4(2.828e-02, 1.965e-02, 1.490e-01, 2.001e-02, -4.527e-02, -1.522e-02, -6.560e-02, 1.899e-02, -7.161e-04, 3.954e-02, 2.182e-02, -8.346e-02, 5.627e-02, 7.930e-02, -4.601e-02, 8.760e-02), r);\n\tr = MulAdd(s6_1, M4(8.574e-02, -3.002e-02, -2.937e-02, 1.063e-01, 2.496e-02, -9.862e-02, -1.770e-01, -1.110e-01, -9.144e-02, 1.810e-02, -1.744e-01, -5.627e-02, 1.310e-01, 4.031e-03, -1.585e-01, -4.121e-02), r);\n\tr = MulAdd(s6_2, M4(9.241e-02, -2.275e-02, -1.309e-02, 7.213e-02, 1.015e-01, -1.783e-02, -7.431e-03, -5.384e-03, 2.948e-02, 6.340e-03, 3.754e-02, -5.846e-02, 1.207e-01, 1.802e-02, -1.990e-02, 3.674e-02), r);\n\tr = MulAdd(s6_3, M4(-1.832e-02, -6.422e-02, 4.143e-02, -1.453e-01, -9.265e-02, 5.180e-02, 9.589e-02, -5.447e-03, 5.748e-03, -7.328e-02, -9.024e-03, 3.179e-02, -1.236e-01, -4.200e-02, 2.265e-01, -2.848e-02), r);\n\tr = MulAdd(s6_4, M4(-7.733e-02, -7.612e-03, 6.791e-02, 2.708e-01, -1.297e-01, -3.706e-02, 5.483e-03, -1.733e-01, 2.083e-02, -7.664e-02, -1.085e-02, 6.393e-02, -1.301e-01, -7.315e-02, 6.778e-02, 5.425e-02), r);\n\tr = MulAdd(s6_5, M4(1.491e-01, -4.559e-02, -1.056e-01, 9.649e-02, -1.003e-01, -7.416e-02, -1.937e-01, -2.114e-01, -1.697e-02, 2.611e-02, -3.463e-02, 1.848e-01, -1.343e-01, -6.746e-02, 1.171e-01, 1.465e-01), r);\n\tr = MulAdd(s6_6, M4(1.543e-02, 5.129e-02, 1.042e-01, -7.938e-02, 3.628e-03, 2.461e-02, 1.371e-01, -4.618e-02, -9.957e-02, 8.025e-02, 6.072e-02, -3.525e-02, -9.659e-03, 9.961e-02, -6.593e-02, -1.723e-01), r);\n\tr = MulAdd(s6_7, M4(9.083e-02, -1.791e-02, -1.005e-01, -1.208e-01, -2.040e-01, 9.235e-02, -2.770e-01, -3.079e-02, 1.300e-02, 1.283e-01, 4.077e-02, -3.577e-02, -1.172e-02, -1.946e-02, -8.694e-03, -1.229e-01), r);\n\tr = MulAdd(s6_8, M4(1.806e-01, -1.792e-01, -3.185e-02, 2.441e-03, -3.422e-03, 8.922e-02, -4.029e-02, 6.716e-02, -3.862e-02, 8.746e-03, -4.267e-02, -1.570e-02, 1.449e-01, 2.626e-02, -7.646e-02, -5.130e-02), r);\n\tr = MulAdd(s7_0, M4(-2.875e-02, 8.786e-02, 1.334e-02, 6.942e-02, 8.895e-02, -7.631e-02, -1.100e-01, 9.594e-02, 2.409e-02, -8.514e-02, -3.642e-02, -9.446e-02, -5.823e-02, 3.858e-02, -8.311e-02, 4.733e-02), r);\n\tr = MulAdd(s7_1, M4(-3.546e-02, -3.038e-02, -2.878e-02, 4.740e-02, -8.561e-02, -1.373e-01, 8.296e-02, -1.290e-02, -3.045e-02, 1.038e-01, -2.055e-01, -2.954e-02, 3.776e-02, -5.471e-02, 6.002e-02, 7.293e-02), r);\n\tr = MulAdd(s7_2, M4(6.057e-02, 1.546e-02, 5.669e-02, 3.663e-02, 4.085e-02, -2.098e-02, 7.776e-02, 6.614e-02, -1.542e-02, -9.302e-02, 5.701e-02, -9.272e-02, -1.250e-01, 4.578e-02, -8.437e-03, 9.115e-02), r);\n\tr = MulAdd(s7_3, M4(6.185e-02, -2.202e-01, 7.967e-03, -9.857e-02, -2.723e-02, 1.841e-02, 1.273e-01, 3.254e-02, 2.590e-01, 8.602e-02, 9.159e-02, -4.988e-02, 3.447e-02, 2.103e-02, 6.784e-02, 3.961e-02), r);\n\tr = MulAdd(s7_4, M4(2.385e-02, -7.818e-02, 1.619e-01, -3.209e-03, -9.151e-02, 1.217e-01, 6.772e-02, 1.509e-02, -2.823e-02, -8.978e-03, -1.980e-01, -1.466e-01, -9.524e-02, -5.529e-02, -7.337e-02, -6.094e-02), r);\n\tr = MulAdd(s7_5, M4(2.174e-03, -5.178e-02, 6.162e-02, 4.149e-02, 7.712e-02, 5.177e-02, 5.302e-02, 3.632e-03, 2.082e-02, -7.131e-02, -1.286e-01, 8.588e-02, -7.042e-02, -7.842e-02, 8.844e-02, 9.351e-02), r);\n\tr = MulAdd(s7_6, M4(-6.205e-02, 4.255e-02, -8.082e-02, -2.441e-02, -3.209e-02, -2.325e-02, 9.024e-02, 5.961e-02, 1.037e-03, -7.930e-02, 3.916e-02, 2.978e-02, -4.254e-02, -5.137e-03, 5.158e-02, -1.721e-01), r);\n\tr = MulAdd(s7_7, M4(1.791e-02, 9.385e-02, -8.735e-02, -2.050e-02, -1.073e-01, -4.466e-03, 3.865e-02, 9.567e-02, -9.625e-03, -7.356e-03, -2.480e-01, 7.732e-04, -6.223e-02, -5.133e-02, -3.773e-02, -5.325e-02), r);\n\tr = MulAdd(s7_8, M4(1.846e-01, 8.673e-02, -3.553e-02, -6.473e-02, -1.091e-02, 9.152e-02, 1.568e-01, 1.596e-01, 3.280e-03, 7.550e-02, -1.286e-01, -1.041e-01, 3.720e-02, 1.909e-02, 3.416e-02, 1.090e-01), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.175e-02, 3.705e-03, 4.932e-03, 6.758e-03 };\n\tr = MulAdd(s0_0, M4(-7.126e-02, -7.247e-04, -3.122e-02, 2.116e-02, -3.723e-02, -9.954e-02, 2.972e-02, 4.943e-02, 8.003e-03, -2.690e-02, 7.984e-02, 6.263e-02, -8.211e-02, -6.764e-02, -4.135e-02, 6.039e-02), r);\n\tr = MulAdd(s0_1, M4(5.830e-02, 1.285e-02, 7.099e-02, -4.560e-03, 8.228e-02, -1.186e-03, -2.813e-02, 3.480e-02, 5.724e-03, 1.300e-01, -1.130e-01, 9.393e-02, -1.396e-01, -1.024e-01, 1.050e-01, -3.689e-02), r);\n\tr = MulAdd(s0_2, M4(-1.445e-01, -1.361e-02, -1.928e-03, -7.339e-02, 4.109e-02, 3.337e-02, -7.051e-02, 4.490e-02, 1.794e-02, 1.487e-01, 6.199e-02, -3.464e-02, 9.704e-03, 1.357e-01, -1.067e-01, -3.007e-03), r);\n\tr = MulAdd(s0_3, M4(3.851e-02, 8.292e-02, 6.964e-02, 1.097e-01, -9.202e-03, -3.033e-02, 2.125e-02, -1.388e-01, 1.225e-01, 2.218e-01, -7.917e-02, 3.989e-02, 7.261e-02, 8.114e-02, 2.188e-02, 1.304e-01), r);\n\tr = MulAdd(s0_4, M4(-7.015e-02, -1.509e-01, 3.573e-02, 9.922e-02, -1.031e-01, -1.975e-01, -1.503e-01, -1.347e-01, -1.262e-02, 9.282e-02, 1.539e-02, 9.161e-02, -1.169e-01, -9.168e-02, 1.710e-01, -3.346e-01), r);\n\tr = MulAdd(s0_5, M4(1.647e-02, 4.881e-02, 1.414e-01, -6.869e-02, 6.553e-02, 1.547e-01, -1.020e-01, -5.219e-02, -8.433e-02, 4.309e-02, 1.166e-01, -1.088e-01, 1.023e-02, -5.849e-02, 1.620e-02, 8.377e-02), r);\n\tr = MulAdd(s0_6, M4(-4.575e-02, 6.467e-02, 1.170e-03, -2.556e-02, 3.145e-02, 9.286e-03, 3.206e-02, -6.519e-02, -2.116e-02, -6.765e-02, 1.437e-01, -2.522e-02, 3.575e-02, 4.578e-02, 2.849e-02, -1.786e-02), r);\n\tr = MulAdd(s0_7, M4(-4.970e-02, -1.295e-02, 6.483e-02, 1.023e-02, 3.229e-02, -1.275e-01, 1.493e-02, -1.851e-02, 2.568e-02, -1.378e-01, -1.731e-01, 7.308e-02, -1.196e-02, -1.353e-01, -5.414e-02, -5.738e-02), r);\n\tr = MulAdd(s0_8, M4(-5.610e-02, 1.264e-02, -2.637e-02, -6.981e-03, -7.200e-02, -3.804e-02, -3.347e-02, -6.615e-02, -6.806e-02, 1.835e-02, 5.020e-03, -5.896e-02, -8.009e-03, -5.058e-02, -2.846e-02, -3.286e-03), r);\n\tr = MulAdd(s1_0, M4(2.826e-02, -6.972e-02, 6.646e-02, -1.937e-02, -4.960e-02, 4.112e-02, -4.586e-03, 4.412e-02, -1.050e-01, 7.587e-02, -3.497e-02, 1.925e-02, -4.369e-02, -5.518e-03, -8.173e-02, 9.181e-04), r);\n\tr = MulAdd(s1_1, M4(8.079e-02, 5.067e-02, -4.166e-02, -1.012e-01, -4.963e-02, 3.017e-01, -1.724e-02, 8.974e-03, -3.852e-02, 1.977e-01, -4.152e-02, 5.895e-03, -1.592e-01, -3.467e-02, -1.516e-01, -2.013e-02), r);\n\tr = MulAdd(s1_2, M4(-8.313e-02, -8.997e-02, 3.377e-02, -2.411e-02, -2.017e-01, 1.865e-01, -5.694e-02, 8.816e-02, 1.376e-01, 1.049e-01, -2.350e-02, 4.271e-02, 9.899e-02, 6.745e-02, -3.975e-02, -6.863e-02), r);\n\tr = MulAdd(s1_3, M4(5.925e-02, 1.559e-01, 6.156e-03, 4.048e-02, 1.250e-02, 2.398e-02, 8.804e-02, -4.237e-02, -4.170e-02, 4.149e-02, 2.181e-02, 7.136e-02, 2.892e-02, 8.658e-02, 2.268e-03, -2.417e-02), r);\n\tr = MulAdd(s1_4, M4(-4.868e-02, 7.944e-02, -1.372e-01, -2.727e-02, 2.788e-02, -1.206e-01, 8.242e-02, -3.327e-02, -2.795e-01, 1.392e-01, 1.089e-01, 2.941e-02, -1.655e-01, 8.764e-03, 1.022e-01, -1.603e-01), r);\n\tr = MulAdd(s1_5, M4(-2.580e-02, -2.588e-02, 4.601e-02, 8.667e-02, 1.813e-02, 3.697e-02, 1.031e-01, -8.340e-02, 5.900e-02, -5.842e-02, 3.073e-02, -6.901e-02, -8.921e-02, -1.443e-01, 9.465e-02, -5.144e-02), r);\n\tr = MulAdd(s1_6, M4(-1.368e-02, -1.491e-01, 2.026e-02, 2.348e-02, 3.990e-02, -2.543e-02, -4.058e-02, -1.896e-03, 5.931e-02, -4.988e-02, 9.193e-02, 3.546e-02, -6.484e-02, -4.291e-02, -1.792e-01, -6.140e-02), r);\n\tr = MulAdd(s1_7, M4(2.351e-02, 6.548e-02, -1.768e-01, -9.328e-02, -1.765e-02, 2.108e-03, -2.375e-01, -3.263e-02, 1.729e-01, -2.271e-01, -5.603e-02, 4.236e-02, 8.235e-02, 8.566e-02, 2.103e-01, -1.981e-02), r);\n\tr = MulAdd(s1_8, M4(9.506e-02, 1.263e-02, 1.854e-02, 6.688e-04, -1.127e-02, 1.481e-03, 3.282e-02, -4.943e-02, 7.309e-02, -3.832e-02, -2.619e-02, 5.873e-03, 6.340e-02, -4.196e-02, -5.152e-03, -2.681e-02), r);\n\tr = MulAdd(s2_0, M4(-7.027e-02, -6.243e-02, -1.227e-01, 4.001e-03, -5.670e-02, 1.637e-01, 1.078e-02, 1.421e-01, -9.280e-02, 8.196e-03, 4.920e-02, -1.188e-02, -7.051e-03, -1.646e-01, 1.017e-01, 9.108e-02), r);\n\tr = MulAdd(s2_1, M4(5.477e-02, 9.244e-02, -7.607e-02, 8.935e-02, -4.048e-02, -1.733e-01, 1.030e-01, -2.324e-01, 1.824e-02, -6.173e-02, -9.619e-02, -1.130e-02, 4.611e-01, -5.878e-02, 9.265e-02, -2.637e-02), r);\n\tr = MulAdd(s2_2, M4(-1.460e-01, 5.308e-02, -2.754e-02, 2.505e-02, -1.231e-01, 1.615e-01, -8.279e-02, -1.995e-02, -9.777e-02, -4.318e-02, -2.021e-02, 8.769e-02, -4.796e-02, 1.218e-01, -2.690e-02, -6.418e-02), r);\n\tr = MulAdd(s2_3, M4(1.154e-02, 1.256e-01, 8.180e-02, 2.951e-02, -3.289e-02, 2.349e-02, 1.231e-01, 3.046e-01, 3.799e-02, 6.160e-02, -1.790e-01, 2.928e-02, 9.993e-02, -1.598e-02, 2.755e-02, 8.909e-02), r);\n\tr = MulAdd(s2_4, M4(5.434e-02, 1.287e-02, -1.480e-01, -2.214e-02, 2.240e-01, -2.299e-02, 4.142e-02, 3.686e-01, -5.318e-02, -1.182e-02, 1.023e-01, 9.137e-02, -6.045e-02, 3.257e-01, -1.219e-01, -1.693e-01), r);\n\tr = MulAdd(s2_5, M4(-5.925e-02, -3.942e-02, 2.518e-02, 1.538e-01, 9.416e-02, 4.207e-02, 1.825e-03, -2.104e-02, -2.411e-02, 1.415e-02, -1.914e-02, 3.616e-02, -4.726e-02, 7.355e-02, -9.432e-02, -4.546e-02), r);\n\tr = MulAdd(s2_6, M4(-7.602e-02, 1.276e-01, 1.036e-01, 6.267e-02, -8.192e-03, 1.104e-01, 3.117e-02, 7.487e-02, -1.647e-01, 3.801e-02, -3.767e-02, 1.686e-02, 8.254e-02, 2.054e-01, 1.282e-01, 1.160e-01), r);\n\tr = MulAdd(s2_7, M4(2.513e-02, -4.661e-02, -1.646e-01, 1.059e-01, 4.162e-02, -3.316e-02, -2.061e-02, 1.450e-01, 3.720e-02, 2.961e-02, -2.373e-02, -2.018e-02, -1.052e-02, 1.730e-02, -2.290e-01, 1.025e-01), r);\n\tr = MulAdd(s2_8, M4(-1.045e-02, 1.154e-01, -3.244e-02, -1.231e-02, 2.361e-02, 2.220e-01, -4.822e-02, 1.373e-02, 3.730e-02, 2.129e-02, 3.138e-02, -9.593e-02, 5.947e-02, 7.943e-02, -5.219e-02, -5.749e-02), r);\n\tr = MulAdd(s3_0, M4(-3.113e-02, -1.308e-01, -1.655e-01, -2.455e-01, 2.974e-02, 9.728e-02, -3.163e-02, 4.485e-02, 5.875e-02, -3.217e-02, 6.025e-02, 4.174e-02, 1.693e-02, 1.690e-01, 2.334e-01, -6.609e-02), r);\n\tr = MulAdd(s3_1, M4(7.416e-02, -5.665e-03, -3.190e-02, 2.151e-01, -1.274e-01, 1.052e-01, -7.711e-02, -1.091e-01, 1.016e-01, 2.149e-02, -6.221e-02, 7.541e-02, -5.916e-02, 9.233e-02, 2.208e-02, -1.398e-01), r);\n\tr = MulAdd(s3_2, M4(-1.293e-01, -2.505e-01, -4.961e-02, -4.325e-03, -8.909e-02, -5.243e-02, -4.196e-02, -8.554e-02, -6.182e-02, -6.022e-03, -9.220e-02, 1.184e-01, -2.595e-02, 6.671e-02, 5.215e-02, 3.472e-02), r);\n\tr = MulAdd(s3_3, M4(6.543e-02, 2.403e-02, -6.021e-02, -1.541e-01, 6.134e-02, -1.275e-03, 1.020e-01, 5.550e-02, 1.106e-01, 1.172e-01, 2.676e-02, 3.177e-02, 1.433e-01, -2.681e-02, 2.454e-01, 9.405e-05), r);\n\tr = MulAdd(s3_4, M4(4.769e-02, 6.531e-08, -1.651e-01, -6.990e-02, 1.442e-01, 9.021e-02, -2.311e-01, 1.189e-01, 1.624e-01, 2.221e-02, -7.074e-03, -2.182e-01, 5.419e-02, 5.294e-02, 4.279e-02, -1.160e-01), r);\n\tr = MulAdd(s3_5, M4(1.730e-01, -9.544e-02, 2.981e-02, 7.448e-02, 9.235e-02, -5.488e-02, 2.427e-02, 1.188e-02, 1.206e-01, 5.847e-02, -1.284e-01, -7.989e-02, 8.960e-02, -6.168e-02, -1.400e-01, -3.726e-02), r);\n\tr = MulAdd(s3_6, M4(-7.833e-02, -6.758e-02, -9.048e-03, -1.075e-01, 3.901e-04, -8.693e-02, 2.570e-02, -6.323e-02, -9.009e-02, -2.170e-02, -2.026e-01, -5.850e-02, -4.147e-02, -3.386e-02, 5.005e-02, -3.887e-02), r);\n\tr = MulAdd(s3_7, M4(-1.351e-01, -1.409e-01, -2.287e-01, 7.224e-02, 2.347e-02, -5.290e-02, 7.585e-02, 3.648e-03, -1.602e-02, -4.140e-02, 5.352e-02, -9.657e-02, -2.243e-02, -1.901e-01, -1.525e-01, -2.205e-02), r);\n\tr = MulAdd(s3_8, M4(7.836e-02, -2.075e-02, -9.366e-03, -6.423e-02, -2.740e-02, -8.143e-02, -4.192e-02, -4.417e-02, 1.902e-01, 6.497e-02, -6.885e-02, 5.171e-02, 1.274e-02, 2.152e-03, -4.668e-02, -6.472e-02), r);\n\tr = MulAdd(s4_0, M4(2.638e-03, -1.166e-01, -5.258e-02, -2.857e-02, 3.570e-03, 5.189e-02, -5.776e-03, 5.083e-02, 7.780e-02, 4.474e-02, -1.454e-02, 6.246e-02, -1.195e-02, 7.774e-02, 5.109e-02, 3.706e-02), r);\n\tr = MulAdd(s4_1, M4(2.811e-02, -1.047e-01, -2.778e-02, 1.325e-03, -1.898e-01, -1.619e-01, 8.374e-02, -2.495e-02, -1.249e-01, 1.881e-02, 5.845e-02, -1.045e-02, -7.614e-02, 7.772e-02, 3.462e-03, 4.337e-03), r);\n\tr = MulAdd(s4_2, M4(-1.081e-01, -1.844e-02, -2.425e-02, -8.712e-02, 9.626e-02, -2.870e-02, 8.200e-03, 7.206e-02, -9.789e-02, -7.239e-02, 1.054e-01, -7.063e-02, 4.623e-02, -9.341e-03, -1.331e-02, -4.766e-03), r);\n\tr = MulAdd(s4_3, M4(-1.731e-01, -7.794e-02, -1.038e-01, -3.761e-02, 1.016e-01, -4.419e-02, -3.551e-02, -1.499e-02, -6.625e-02, 6.585e-02, 9.775e-02, 5.992e-02, 3.358e-02, -9.332e-03, 3.855e-04, -3.535e-02), r);\n\tr = MulAdd(s4_4, M4(1.253e-01, 3.168e-02, -1.671e-02, 8.456e-02, 7.014e-02, 9.437e-02, -2.283e-02, 8.996e-02, -3.857e-02, 1.580e-01, -1.474e-01, -1.849e-02, -2.709e-03, 1.190e-01, 1.056e-01, -1.893e-02), r);\n\tr = MulAdd(s4_5, M4(-1.756e-02, -1.646e-01, -7.868e-02, 1.745e-02, -1.479e-01, 6.384e-02, -7.011e-02, -8.907e-02, 2.050e-02, 1.111e-01, 1.083e-02, -2.870e-03, 6.436e-02, -3.034e-02, 5.931e-02, -1.074e-02), r);\n\tr = MulAdd(s4_6, M4(1.168e-01, -3.357e-02, -1.142e-02, -2.795e-02, 2.887e-02, 3.087e-02, 2.933e-02, 8.376e-02, -1.546e-01, 3.309e-02, 4.429e-02, -1.846e-02, 5.743e-02, -3.849e-02, 1.220e-02, -5.880e-02), r);\n\tr = MulAdd(s4_7, M4(-5.729e-02, -3.743e-02, 8.573e-04, -4.337e-03, 7.938e-02, 8.001e-02, 2.539e-02, 1.801e-02, 6.096e-02, 1.785e-01, -3.002e-01, -1.276e-01, -1.379e-02, 1.333e-01, 6.545e-02, -2.278e-02), r);\n\tr = MulAdd(s4_8, M4(7.242e-02, -6.667e-02, 1.744e-02, -2.643e-02, 6.848e-02, 9.631e-02, 6.165e-03, -1.126e-02, -1.362e-01, -1.566e-01, 1.365e-01, -5.437e-02, -1.701e-02, 3.085e-02, 6.582e-02, 2.239e-02), r);\n\tr = MulAdd(s5_0, M4(3.485e-02, -3.668e-02, -9.379e-02, 4.608e-02, -1.083e-01, 5.040e-02, 1.639e-01, 3.794e-02, 1.706e-01, -1.481e-01, -5.080e-02, -2.196e-02, -6.141e-02, 1.909e-02, 1.798e-01, 1.096e-01), r);\n\tr = MulAdd(s5_1, M4(-3.518e-03, -5.432e-02, 3.152e-02, 7.982e-02, 3.017e-02, -2.535e-02, 6.478e-02, -6.047e-02, -1.980e-04, 6.107e-03, -7.009e-03, -9.743e-03, -1.016e-01, -8.004e-03, -4.981e-02, -5.635e-02), r);\n\tr = MulAdd(s5_2, M4(-2.465e-02, 7.711e-02, 5.971e-02, -7.692e-02, -6.137e-02, -8.310e-02, -3.373e-02, -1.117e-02, 1.393e-02, -1.375e-02, 1.055e-01, -3.949e-04, 4.322e-02, -6.462e-02, -3.294e-03, -3.712e-02), r);\n\tr = MulAdd(s5_3, M4(-2.744e-01, -4.534e-03, -8.512e-02, -6.026e-03, -2.157e-02, -2.000e-01, 9.898e-02, -1.939e-01, -6.091e-02, 5.310e-03, -7.081e-03, -6.215e-02, 9.339e-02, 1.379e-01, 7.161e-02, 9.545e-02), r);\n\tr = MulAdd(s5_4, M4(1.003e-01, -7.804e-02, -1.457e-03, 2.427e-01, 5.836e-02, 1.779e-01, 1.408e-01, -2.114e-01, -1.353e-01, 5.005e-03, 5.650e-02, -3.772e-02, -2.707e-01, -6.220e-02, -1.619e-01, 1.186e-02), r);\n\tr = MulAdd(s5_5, M4(7.088e-02, -1.084e-01, -2.443e-02, 2.401e-02, -1.880e-01, -2.545e-02, -1.450e-01, -1.789e-01, 9.716e-02, 2.647e-02, 1.603e-02, -4.438e-02, 5.517e-02, 1.466e-01, 2.205e-01, 6.970e-02), r);\n\tr = MulAdd(s5_6, M4(1.056e-01, -9.803e-02, -6.850e-02, -1.242e-01, 9.164e-02, -4.308e-02, -1.765e-01, -3.360e-02, -1.304e-01, -1.477e-01, 1.813e-02, 3.482e-02, 4.066e-02, -5.432e-02, 7.176e-02, 2.660e-02), r);\n\tr = MulAdd(s5_7, M4(1.009e-01, -1.469e-02, -1.816e-02, -4.866e-02, -7.614e-02, 4.750e-02, 1.168e-01, 4.196e-03, 5.586e-02, -2.694e-02, 1.265e-02, -6.180e-02, 5.872e-03, -1.858e-02, -7.922e-02, 3.537e-02), r);\n\tr = MulAdd(s5_8, M4(9.445e-02, -8.611e-02, -3.937e-02, -1.209e-02, -7.928e-02, -3.819e-02, 1.253e-02, 3.102e-02, -5.391e-02, 5.845e-02, 5.602e-03, -3.271e-02, 7.669e-02, 2.167e-02, 6.229e-02, -1.607e-02), r);\n\tr = MulAdd(s6_0, M4(-3.817e-02, 7.554e-02, 3.810e-02, 1.102e-02, -5.145e-02, -7.391e-02, -9.496e-02, -3.712e-02, -7.890e-02, -3.002e-02, -1.056e-01, -2.948e-02, 7.406e-02, 1.170e-02, -5.408e-02, -9.105e-02), r);\n\tr = MulAdd(s6_1, M4(-6.936e-02, -6.525e-02, -4.428e-02, -1.449e-01, -1.186e-01, -2.092e-01, 8.401e-02, -2.094e-02, -8.598e-02, -3.757e-02, -7.045e-02, 3.440e-02, -6.230e-02, 8.633e-02, -3.325e-02, -8.327e-03), r);\n\tr = MulAdd(s6_2, M4(6.608e-02, -5.417e-02, -2.856e-02, 4.913e-02, 1.676e-01, -7.598e-02, -1.182e-01, -9.989e-02, -9.116e-02, 3.218e-03, -6.444e-02, -6.054e-02, 1.373e-03, -1.817e-01, 7.257e-02, 4.189e-02), r);\n\tr = MulAdd(s6_3, M4(-8.349e-02, -1.761e-01, 1.926e-02, -8.051e-03, 2.890e-02, 5.756e-02, 5.508e-02, 7.201e-02, -6.564e-02, 1.493e-01, 1.557e-01, -4.202e-02, -1.503e-01, -5.685e-02, 4.112e-02, -4.202e-02), r);\n\tr = MulAdd(s6_4, M4(-2.522e-01, 9.170e-02, -5.085e-02, 4.871e-02, 1.325e-02, 5.299e-02, -9.726e-02, -1.509e-01, 2.206e-02, 5.833e-02, -1.520e-01, 1.705e-01, 1.815e-01, -8.368e-02, 7.542e-02, -4.656e-02), r);\n\tr = MulAdd(s6_5, M4(5.460e-02, -1.326e-01, 9.804e-03, 4.768e-02, 1.948e-02, 1.841e-01, -3.059e-02, -4.378e-02, -5.324e-02, -1.720e-01, 1.640e-01, -1.044e-02, -1.189e-01, -2.363e-02, -3.141e-03, 3.028e-03), r);\n\tr = MulAdd(s6_6, M4(-1.256e-02, -2.922e-03, -3.309e-02, 6.149e-02, 1.574e-01, 3.430e-02, -1.243e-02, 5.443e-02, 6.524e-02, -2.052e-02, -6.959e-02, 1.194e-02, 4.077e-02, -5.340e-02, -1.997e-02, 1.787e-01), r);\n\tr = MulAdd(s6_7, M4(-2.905e-02, 2.323e-02, -7.598e-02, 3.521e-02, 1.162e-01, -8.760e-02, 8.426e-02, -4.821e-02, -1.586e-01, 3.038e-02, 1.047e-02, -4.834e-02, -5.454e-02, 8.682e-02, -5.218e-02, 4.248e-02), r);\n\tr = MulAdd(s6_8, M4(4.779e-02, -2.518e-01, -3.873e-02, -9.263e-02, -8.541e-02, 3.432e-02, -4.013e-02, -4.646e-03, 1.992e-02, 3.899e-02, 2.601e-02, -2.114e-02, -1.431e-02, 1.219e-02, -4.987e-02, 5.297e-02), r);\n\tr = MulAdd(s7_0, M4(-2.618e-02, 6.244e-02, 4.090e-02, -1.789e-02, -1.284e-01, 7.390e-02, -2.420e-02, -4.756e-02, 2.653e-02, 1.199e-02, 1.500e-02, -8.259e-02, -1.319e-01, 7.918e-02, 7.601e-02, 2.422e-02), r);\n\tr = MulAdd(s7_1, M4(-1.305e-01, 4.577e-02, 1.122e-01, -2.843e-03, -3.707e-02, 5.125e-02, 1.366e-01, -1.041e-02, 5.613e-02, -9.621e-02, -8.862e-02, 7.272e-02, -3.575e-02, -5.884e-02, 7.940e-02, -9.598e-02), r);\n\tr = MulAdd(s7_2, M4(9.856e-02, 7.648e-02, 9.986e-02, -7.698e-02, 2.003e-01, 1.748e-02, -2.276e-02, -8.972e-02, 3.264e-02, 1.762e-01, 5.533e-02, 1.765e-02, -8.475e-03, 7.884e-02, 3.955e-02, 5.335e-03), r);\n\tr = MulAdd(s7_3, M4(-9.397e-02, -3.801e-02, 6.843e-02, 2.567e-02, 1.120e-01, 7.550e-02, 9.477e-02, 9.341e-04, 1.808e-01, 5.695e-02, -3.728e-02, 2.665e-02, 7.058e-03, -5.299e-02, 8.963e-02, -3.561e-03), r);\n\tr = MulAdd(s7_4, M4(-3.374e-02, -1.857e-02, -3.614e-02, 8.170e-02, -1.471e-01, 2.489e-02, -1.751e-01, -7.823e-02, 6.604e-02, 1.243e-01, 2.393e-02, 3.367e-01, 1.737e-01, -1.744e-01, -5.261e-02, 6.651e-02), r);\n\tr = MulAdd(s7_5, M4(-7.199e-02, -3.134e-02, 5.129e-02, 9.402e-02, -1.373e-01, 3.540e-02, 1.971e-02, 3.625e-02, 1.792e-01, 3.117e-02, 2.413e-02, 2.022e-02, 6.528e-03, 5.192e-02, -8.928e-02, 7.384e-02), r);\n\tr = MulAdd(s7_6, M4(-8.301e-02, 7.934e-02, -1.039e-01, -1.798e-02, -6.817e-02, 1.008e-01, 3.415e-02, 2.928e-02, 1.649e-01, 1.101e-02, 1.681e-01, -1.356e-02, 9.431e-02, -3.286e-02, -9.072e-03, 2.947e-02), r);\n\tr = MulAdd(s7_7, M4(5.793e-02, -8.944e-02, -2.206e-02, 1.027e-01, -4.778e-03, -2.849e-02, 1.601e-02, -2.093e-02, 1.085e-02, 1.385e-01, 7.147e-02, -2.726e-02, -1.256e-01, 7.112e-02, -8.096e-02, -9.431e-02), r);\n\tr = MulAdd(s7_8, M4(-3.778e-02, -2.232e-03, -7.789e-02, 2.074e-02, -2.782e-02, -2.413e-02, -1.399e-01, -5.036e-02, 6.334e-02, 2.185e-02, -8.764e-02, 1.518e-02, 4.458e-02, 7.670e-02, -1.081e-03, -5.524e-02), r);\n\treturn r;\n}\n\nvoid Pass9(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 10\n//!DESC conv9\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.195e-03, 2.615e-02, -6.276e-04, 5.206e-03 };\n\tr = MulAdd(s0_0, M4(-3.746e-02, -1.063e-02, -8.489e-02, -3.248e-02, 5.400e-02, 4.809e-01, -2.443e-03, 5.665e-01, -3.019e-02, -2.483e-02, 4.610e-02, 1.613e-01, -5.230e-02, 5.904e-02, 8.962e-02, 5.099e-03), r);\n\tr = MulAdd(s0_1, M4(-2.674e-02, -7.768e-03, 6.571e-02, 8.847e-02, -3.693e-01, -3.040e-01, 1.111e-01, 3.321e-01, -3.900e-02, -5.431e-02, -7.441e-02, 2.141e-02, 3.205e-02, 1.226e-01, -8.272e-02, 8.495e-02), r);\n\tr = MulAdd(s0_2, M4(1.091e-01, 3.933e-02, -3.238e-03, 6.477e-02, -3.042e-02, 4.195e-01, 1.768e-03, -8.476e-02, -6.201e-02, 2.166e-03, 4.313e-02, 5.970e-02, 1.758e-01, -7.663e-02, 1.494e-01, 4.458e-02), r);\n\tr = MulAdd(s0_3, M4(-1.272e-02, 5.261e-02, 9.092e-02, -7.005e-03, 9.554e-02, 3.528e-02, -4.595e-01, -2.179e-01, 1.709e-01, 1.809e-02, -2.651e-02, 6.484e-02, -4.482e-02, 1.309e-01, -6.953e-04, -1.990e-02), r);\n\tr = MulAdd(s0_4, M4(-9.892e-03, -1.371e-01, -1.750e-01, 2.506e-03, -1.380e-01, 1.237e-01, 3.433e-01, 1.102e-01, 8.615e-02, 3.165e-02, 1.141e-01, 6.900e-02, -5.708e-02, -2.790e-01, -1.438e-01, -4.015e-02), r);\n\tr = MulAdd(s0_5, M4(5.655e-02, 8.936e-02, 3.225e-02, -1.050e-01, 1.298e-01, -2.953e-01, -8.823e-02, 1.979e-01, 2.702e-02, 1.291e-01, -7.544e-02, 4.281e-02, -7.200e-02, 6.900e-02, 8.878e-02, -1.220e-01), r);\n\tr = MulAdd(s0_6, M4(9.888e-02, -1.017e-02, 2.095e-02, -3.808e-02, -8.481e-01, 3.486e-01, -3.861e-01, -6.509e-01, -7.530e-02, 5.185e-02, 4.696e-02, 3.270e-02, -8.286e-02, 7.794e-02, -2.126e-02, 9.819e-03), r);\n\tr = MulAdd(s0_7, M4(-2.224e-02, -6.169e-02, -1.213e-01, -4.395e-02, 1.505e-01, -5.035e-02, 2.646e-01, 3.699e-02, -1.477e-01, 4.680e-02, -9.876e-02, 1.034e-01, 4.846e-02, -3.061e-02, 3.804e-02, -1.026e-01), r);\n\tr = MulAdd(s0_8, M4(1.750e-02, 3.698e-02, -3.884e-02, -1.252e-02, -1.126e-01, -2.019e-02, 2.261e-01, -1.821e-02, -3.083e-02, 8.816e-02, 3.508e-02, 9.136e-05, -1.009e-02, 3.874e-03, -3.811e-02, 8.129e-02), r);\n\tr = MulAdd(s1_0, M4(-4.230e-03, -2.298e-04, 1.523e-01, -6.054e-02, -6.622e-02, -2.713e-02, -6.034e-02, -6.909e-02, -6.743e-02, -1.200e-01, -3.476e-02, -2.414e-02, -7.619e-02, -1.420e-01, -5.435e-02, 4.688e-02), r);\n\tr = MulAdd(s1_1, M4(1.250e-01, 1.436e-01, 8.983e-02, 3.571e-01, -2.948e-02, -3.203e-02, -2.803e-02, -4.456e-02, -1.587e-01, 5.683e-02, 1.874e-01, -1.582e-01, 1.688e-03, -1.092e-02, -3.675e-02, -1.959e-02), r);\n\tr = MulAdd(s1_2, M4(-2.990e-03, 1.935e-01, 3.609e-02, 1.016e-02, -2.889e-02, 2.713e-02, -2.222e-02, -9.948e-02, 1.432e-02, 6.372e-02, -6.483e-02, -1.950e-01, 1.130e-01, -2.562e-03, 6.376e-02, -1.279e-01), r);\n\tr = MulAdd(s1_3, M4(-6.518e-02, 6.288e-02, 2.188e-01, 6.239e-02, 3.956e-03, -7.743e-03, 1.854e-01, -8.057e-02, 3.433e-02, -3.217e-02, 5.964e-02, -1.372e-01, 9.831e-02, -7.300e-02, 1.069e-01, -3.985e-02), r);\n\tr = MulAdd(s1_4, M4(4.612e-02, -2.329e-01, -1.418e-01, 6.836e-02, 2.446e-02, 1.418e-01, 1.809e-02, -4.002e-02, -3.699e-02, 2.437e-01, -1.954e-01, 1.403e-01, 7.050e-02, 4.695e-02, -2.736e-02, 3.702e-02), r);\n\tr = MulAdd(s1_5, M4(1.983e-03, -9.384e-02, -1.356e-01, -1.143e-01, 4.695e-02, -9.757e-02, -3.093e-03, -5.178e-02, 9.466e-03, -1.137e-01, -1.644e-01, -9.603e-02, 1.446e-01, 1.238e-01, -1.503e-01, -6.958e-02), r);\n\tr = MulAdd(s1_6, M4(-6.411e-02, 5.986e-02, 3.339e-02, -3.836e-02, 8.848e-02, 6.235e-03, 5.062e-02, -6.397e-02, 5.037e-02, 5.440e-04, -5.456e-02, -9.788e-02, 2.729e-02, 5.484e-02, -8.123e-02, -1.712e-03), r);\n\tr = MulAdd(s1_7, M4(-2.417e-03, -1.044e-01, -2.962e-02, -1.297e-01, -8.800e-02, 1.249e-01, -1.124e-01, 4.114e-02, -4.990e-02, 5.685e-02, -2.012e-01, 1.477e-01, 3.261e-02, 6.424e-02, 1.169e-01, -6.667e-02), r);\n\tr = MulAdd(s1_8, M4(-3.504e-02, -1.125e-01, -9.715e-02, -6.348e-02, -7.047e-04, 1.460e-01, -2.088e-02, 3.352e-02, -1.966e-02, -7.403e-03, 7.786e-02, -8.478e-02, -2.298e-02, 1.993e-01, -8.736e-02, 7.286e-03), r);\n\tr = MulAdd(s2_0, M4(7.822e-02, 3.222e-02, -1.139e-02, -1.078e-01, -6.741e-02, 4.379e-02, -7.163e-02, -1.814e-01, 4.628e-02, -6.410e-02, -6.759e-02, 1.772e-01, -5.401e-02, 8.797e-02, -1.319e-01, -1.376e-01), r);\n\tr = MulAdd(s2_1, M4(1.437e-02, 1.314e-02, 1.388e-01, 1.275e-01, 5.123e-02, 1.599e-01, 2.074e-01, 8.537e-02, 3.981e-02, -1.166e-01, 1.190e-01, -4.606e-05, 2.425e-01, -3.455e-02, 7.800e-02, 3.116e-02), r);\n\tr = MulAdd(s2_2, M4(-2.019e-02, 1.103e-01, -8.463e-02, 8.798e-02, 6.113e-02, 8.817e-02, 6.368e-02, -9.119e-02, -2.864e-02, -1.606e-01, 1.183e-02, -1.085e-01, 9.193e-02, -8.555e-02, 7.734e-02, -2.207e-02), r);\n\tr = MulAdd(s2_3, M4(2.104e-02, 1.017e-01, 1.313e-01, 3.233e-02, 1.792e-01, 4.766e-02, -1.387e-01, -4.995e-02, -6.797e-02, 1.045e-01, -8.918e-02, 6.009e-02, -4.944e-02, 3.522e-02, 8.032e-02, -1.131e-01), r);\n\tr = MulAdd(s2_4, M4(-1.039e-02, -8.695e-02, -1.877e-03, 8.820e-02, 6.811e-02, 4.012e-01, -7.742e-02, -1.753e-01, 1.521e-01, 1.809e-02, -1.851e-01, -1.758e-01, -2.625e-02, 8.133e-02, 8.653e-02, -2.330e-02), r);\n\tr = MulAdd(s2_5, M4(-6.217e-02, -1.063e-01, -5.858e-02, 9.908e-02, 2.980e-01, 1.273e-01, 2.495e-01, -2.617e-01, 3.477e-02, -8.927e-02, 4.738e-02, -8.602e-03, 6.325e-03, -2.658e-02, 8.764e-02, -1.869e-03), r);\n\tr = MulAdd(s2_6, M4(1.724e-02, -3.356e-02, -5.360e-02, -2.070e-02, -1.485e-02, 5.440e-04, 4.944e-02, -1.195e-01, -1.795e-01, -9.285e-02, 6.373e-02, 1.272e-01, 1.539e-01, -3.187e-02, -2.463e-02, -2.533e-02), r);\n\tr = MulAdd(s2_7, M4(9.800e-02, 4.864e-02, -1.405e-01, 4.289e-02, 5.748e-02, -1.004e-01, 3.591e-01, -1.286e-01, -2.668e-02, -1.087e-01, -6.929e-03, -1.889e-01, 2.281e-02, 6.056e-02, -2.504e-02, 4.111e-02), r);\n\tr = MulAdd(s2_8, M4(9.116e-03, -7.397e-02, -2.395e-02, -2.543e-02, 1.348e-01, 2.859e-01, 1.487e-02, 1.299e-01, -2.400e-02, -7.597e-02, 9.158e-02, -6.117e-02, 8.673e-02, -5.555e-02, -8.472e-02, -5.237e-02), r);\n\tr = MulAdd(s3_0, M4(-2.097e-02, -8.450e-02, 4.401e-02, -5.289e-02, -3.726e-02, -1.816e-03, -6.092e-02, -1.044e-01, 8.542e-02, -7.704e-02, 1.390e-02, 1.826e-02, -3.318e-02, 2.143e-01, 2.861e-02, 1.425e-01), r);\n\tr = MulAdd(s3_1, M4(8.973e-02, -1.307e-01, -1.220e-01, -6.823e-02, 1.085e-02, -3.867e-02, 6.683e-02, 9.690e-02, 1.379e-02, 6.643e-02, -9.761e-02, 2.067e-02, -2.649e-02, 1.353e-01, -1.133e-01, 9.359e-03), r);\n\tr = MulAdd(s3_2, M4(-6.108e-02, 6.151e-02, 4.260e-02, 5.874e-02, 1.029e-02, -1.497e-01, 3.234e-02, -3.021e-02, -7.880e-02, -1.415e-01, 1.451e-02, 4.842e-02, -7.586e-02, 5.174e-02, -1.371e-01, -6.023e-02), r);\n\tr = MulAdd(s3_3, M4(-4.003e-02, 5.891e-02, 4.206e-02, 2.595e-02, -4.624e-04, -5.921e-02, -9.890e-02, -1.363e-01, -5.014e-02, 6.857e-02, -1.145e-01, -7.750e-02, 1.879e-01, 2.044e-01, 3.940e-02, 9.905e-02), r);\n\tr = MulAdd(s3_4, M4(-1.609e-01, -1.548e-01, -9.780e-02, -7.351e-03, -1.326e-01, 1.169e-01, -2.296e-02, 1.092e-01, 6.315e-03, 5.901e-02, -1.063e-01, 8.840e-02, 1.121e-01, -8.684e-02, -7.752e-02, -1.278e-01), r);\n\tr = MulAdd(s3_5, M4(2.414e-02, -9.160e-02, -3.597e-02, 2.934e-02, -7.608e-04, 1.769e-01, 1.248e-01, 5.430e-02, 4.766e-02, -9.389e-03, 1.599e-01, 3.968e-02, 1.360e-01, -1.909e-01, 7.670e-02, 2.346e-01), r);\n\tr = MulAdd(s3_6, M4(-1.540e-01, -1.227e-01, -5.861e-02, 5.111e-03, -3.895e-02, -7.678e-02, -4.987e-02, -4.852e-02, 5.709e-02, 4.096e-03, -2.075e-02, 5.795e-02, -9.926e-02, -1.391e-01, 1.977e-02, -3.418e-02), r);\n\tr = MulAdd(s3_7, M4(7.224e-03, 1.367e-01, -1.950e-01, -1.376e-02, -8.416e-02, -7.056e-02, 3.701e-02, -5.724e-02, 1.451e-02, 1.350e-02, -6.172e-02, -1.460e-01, -6.291e-02, 3.015e-03, -9.637e-02, -4.193e-02), r);\n\tr = MulAdd(s3_8, M4(-2.196e-02, 4.590e-02, 3.496e-02, 7.020e-03, 2.558e-02, 3.325e-02, -7.600e-02, 6.062e-02, 4.024e-02, 6.211e-02, 5.333e-02, -1.504e-02, -7.808e-03, 1.016e-02, -2.206e-01, 5.911e-02), r);\n\tr = MulAdd(s4_0, M4(1.141e-01, 5.394e-02, -1.343e-01, 2.928e-02, 7.011e-02, 4.775e-02, -4.685e-02, 6.133e-02, 1.138e-01, 4.619e-02, 1.735e-01, 1.146e-01, -9.044e-02, -5.406e-02, -7.782e-02, -2.691e-02), r);\n\tr = MulAdd(s4_1, M4(-7.985e-02, -2.100e-03, -7.870e-02, -1.137e-01, -1.776e-01, 2.370e-01, -6.002e-02, -2.018e-02, -2.921e-02, 4.966e-02, -1.691e-01, -1.508e-01, -1.700e-01, -9.586e-02, -6.593e-02, -8.877e-02), r);\n\tr = MulAdd(s4_2, M4(6.554e-02, 8.899e-02, -6.075e-02, 1.546e-01, -4.404e-02, -2.603e-02, 1.095e-01, -3.720e-02, -1.349e-01, -1.897e-02, 1.437e-01, -7.739e-02, -2.546e-02, -4.693e-02, -7.665e-02, -1.305e-01), r);\n\tr = MulAdd(s4_3, M4(-5.318e-02, 4.581e-02, 1.697e-02, 1.420e-01, 8.522e-02, -1.481e-01, 8.667e-02, -6.982e-02, -1.240e-01, 3.817e-02, -1.287e-01, 2.916e-01, -1.577e-01, 4.871e-02, 2.518e-02, -4.820e-02), r);\n\tr = MulAdd(s4_4, M4(-1.995e-02, -2.088e-01, -2.847e-01, 3.681e-02, -2.316e-01, 1.783e-02, 3.289e-02, -1.353e-01, -1.544e-01, -2.805e-01, -4.242e-02, -3.656e-02, 1.272e-01, -2.347e-02, -1.163e-01, -1.299e-01), r);\n\tr = MulAdd(s4_5, M4(-6.111e-02, -2.113e-01, -1.109e-01, -2.393e-01, 1.231e-03, -8.862e-02, 1.512e-03, 4.795e-03, 8.128e-02, -4.732e-02, 9.545e-02, -1.428e-01, 7.313e-02, -1.712e-01, 8.908e-02, -5.289e-02), r);\n\tr = MulAdd(s4_6, M4(-2.565e-02, 9.523e-02, 2.868e-02, 9.607e-02, 8.456e-02, -6.568e-02, -3.945e-02, 2.131e-02, 9.711e-02, -1.713e-01, -7.788e-02, -6.405e-02, 1.443e-01, 1.123e-01, -1.300e-02, -3.461e-02), r);\n\tr = MulAdd(s4_7, M4(-5.005e-02, 7.592e-02, 1.669e-02, 4.349e-03, -1.532e-01, -2.379e-02, -2.528e-02, -9.192e-02, 1.091e-01, -3.325e-01, 1.515e-01, -4.767e-02, -1.799e-02, 1.858e-02, 2.747e-02, -1.220e-01), r);\n\tr = MulAdd(s4_8, M4(8.359e-02, -6.374e-02, -2.862e-02, 1.920e-01, 9.856e-02, 5.909e-02, 4.765e-02, 9.984e-02, -9.049e-02, 2.197e-01, -1.110e-01, 8.181e-02, 8.008e-02, -2.233e-01, 5.183e-02, 3.313e-02), r);\n\tr = MulAdd(s5_0, M4(-3.837e-02, -2.881e-02, -7.039e-02, -1.581e-02, 1.084e-01, 8.017e-02, -3.526e-02, 7.989e-02, -5.161e-02, -3.689e-02, 1.312e-02, -1.418e-01, -6.472e-02, 9.976e-02, 6.215e-02, 3.439e-02), r);\n\tr = MulAdd(s5_1, M4(1.005e-01, 5.089e-02, 3.631e-02, 5.686e-02, -3.182e-02, 6.229e-02, -4.766e-02, 3.519e-02, 6.282e-02, 9.004e-02, 3.656e-02, -8.098e-02, -1.453e-01, -9.801e-02, -1.470e-01, -1.058e-01), r);\n\tr = MulAdd(s5_2, M4(1.509e-01, 5.055e-02, 3.283e-02, -2.458e-03, 4.075e-02, -9.094e-02, 6.107e-02, -4.027e-02, -9.183e-02, 1.017e-01, 3.388e-02, -1.159e-01, -6.618e-02, -9.384e-03, 5.678e-02, 2.558e-02), r);\n\tr = MulAdd(s5_3, M4(6.552e-02, 2.544e-03, -1.213e-01, -3.366e-02, 4.405e-02, -6.705e-03, 1.764e-01, 2.911e-02, -1.539e-01, 3.564e-02, 5.182e-02, 3.039e-02, -8.454e-03, 5.669e-02, 1.040e-01, -6.103e-02), r);\n\tr = MulAdd(s5_4, M4(-1.056e-01, 2.622e-02, -1.184e-01, 4.384e-02, -2.213e-01, 1.339e-02, 1.164e-01, -3.597e-02, -7.377e-02, -6.467e-02, -1.230e-01, -1.001e-02, 9.561e-03, 1.961e-02, 7.407e-03, 8.048e-02), r);\n\tr = MulAdd(s5_5, M4(-1.135e-01, 1.733e-03, -1.516e-02, -1.174e-01, -1.122e-02, -1.409e-01, -1.217e-01, 1.516e-02, 7.002e-02, -1.479e-01, -1.264e-01, 1.806e-01, -7.715e-02, 2.212e-02, 7.268e-02, 5.128e-02), r);\n\tr = MulAdd(s5_6, M4(-5.913e-02, 8.225e-02, 1.093e-01, -1.635e-02, 8.655e-02, 5.632e-02, -8.827e-02, -3.750e-02, -5.103e-02, 2.164e-02, -8.208e-02, 4.437e-02, 9.051e-02, -3.004e-02, 7.682e-02, -1.150e-01), r);\n\tr = MulAdd(s5_7, M4(8.483e-02, -2.123e-02, 6.602e-02, 1.265e-01, 6.961e-02, 3.508e-02, -3.658e-02, -6.129e-02, 3.346e-02, 5.090e-02, 5.109e-02, 2.092e-02, -4.876e-02, 6.051e-02, -1.371e-01, 9.408e-02), r);\n\tr = MulAdd(s5_8, M4(9.064e-02, -7.780e-02, 4.702e-02, 9.918e-02, 4.362e-02, 3.045e-02, -3.481e-03, -2.898e-02, -2.436e-02, 5.820e-03, 2.807e-02, -1.516e-01, 6.365e-02, -5.261e-02, 2.994e-04, 6.343e-02), r);\n\tr = MulAdd(s6_0, M4(1.103e-01, -9.613e-02, -2.650e-01, -1.155e-01, -1.295e-02, -5.461e-02, -9.266e-02, -1.543e-01, 8.375e-02, -2.737e-03, 3.942e-02, -8.917e-02, -1.190e-02, 7.522e-02, 9.202e-02, 3.157e-02), r);\n\tr = MulAdd(s6_1, M4(-1.159e-01, 6.081e-02, -1.577e-01, 1.546e-01, 1.597e-01, 6.105e-02, 1.902e-02, 1.799e-02, -2.426e-01, -1.284e-01, 1.009e-01, -1.209e-01, -7.567e-02, -5.278e-02, -2.751e-01, -8.851e-02), r);\n\tr = MulAdd(s6_2, M4(-1.282e-01, 1.184e-01, 9.726e-02, 5.932e-03, 1.127e-01, -1.175e-02, 1.653e-02, 1.528e-01, 4.978e-02, -1.152e-01, -1.831e-02, 7.319e-02, -3.583e-02, 2.718e-02, -6.719e-03, 6.104e-02), r);\n\tr = MulAdd(s6_3, M4(-1.288e-01, 5.219e-02, -1.049e-01, -5.532e-02, 9.779e-02, 1.473e-02, 7.424e-03, -5.110e-02, 1.360e-02, -7.652e-02, 2.543e-01, -1.142e-03, -1.404e-02, 4.899e-02, -1.146e-01, -6.175e-02), r);\n\tr = MulAdd(s6_4, M4(9.685e-02, -9.235e-02, -2.548e-01, 1.457e-01, 1.395e-01, 1.691e-01, 2.257e-02, 8.836e-02, -2.705e-01, -2.745e-01, 9.071e-02, 2.695e-03, 1.882e-01, 1.345e-01, 9.377e-02, -9.117e-02), r);\n\tr = MulAdd(s6_5, M4(-9.752e-02, -2.447e-01, -8.646e-02, 9.079e-02, -5.149e-02, 3.259e-02, -1.244e-01, 3.561e-02, -1.179e-01, -5.298e-02, -1.130e-01, 6.661e-02, 7.199e-02, -1.177e-01, -4.176e-03, 6.025e-02), r);\n\tr = MulAdd(s6_6, M4(-1.983e-02, -1.090e-01, 3.897e-02, -9.106e-03, 1.161e-01, -2.020e-01, -1.279e-02, 5.516e-02, 3.743e-02, -4.719e-02, -1.047e-02, -7.391e-02, -1.281e-02, -7.450e-02, -1.839e-02, 2.007e-02), r);\n\tr = MulAdd(s6_7, M4(-1.649e-01, -1.227e-01, -7.207e-02, 1.142e-01, 1.175e-01, 1.422e-01, 8.784e-02, 1.011e-01, -1.071e-01, -1.152e-01, 1.256e-01, -1.020e-02, -9.848e-03, -6.948e-02, 4.149e-02, 4.457e-02), r);\n\tr = MulAdd(s6_8, M4(-9.028e-03, -1.629e-01, 5.114e-02, 1.825e-02, -6.076e-04, 3.088e-02, -1.628e-02, 6.999e-02, -3.939e-02, -1.080e-01, 1.004e-01, -1.541e-02, -6.098e-03, 3.446e-03, -2.326e-02, 1.133e-01), r);\n\tr = MulAdd(s7_0, M4(-1.475e-02, -2.118e-02, 8.626e-02, 2.885e-02, -3.604e-02, -1.372e-01, -7.127e-02, -7.823e-02, -4.009e-02, -2.106e-02, -7.218e-02, 1.072e-02, 8.193e-02, 5.086e-02, 1.940e-01, 8.729e-02), r);\n\tr = MulAdd(s7_1, M4(3.113e-02, 1.907e-02, -2.103e-03, 4.830e-02, -3.199e-02, -2.161e-01, 1.361e-01, -9.514e-02, 7.175e-02, 8.776e-02, 9.203e-02, 9.890e-03, -2.824e-01, 9.455e-02, -2.438e-01, -1.908e-01), r);\n\tr = MulAdd(s7_2, M4(7.323e-02, -2.772e-03, 5.055e-02, 5.675e-02, -6.364e-02, -1.402e-01, -3.153e-02, 4.667e-02, 1.014e-01, 9.252e-02, -6.996e-02, 1.175e-01, 1.235e-01, -1.825e-01, 9.365e-02, 2.135e-01), r);\n\tr = MulAdd(s7_3, M4(-8.998e-03, 1.080e-02, -6.999e-02, -5.092e-02, 1.320e-01, -4.903e-02, -7.523e-02, -6.216e-02, -1.324e-02, -7.563e-02, 1.143e-01, 3.717e-02, -1.831e-01, 1.333e-01, -4.844e-01, 6.768e-02), r);\n\tr = MulAdd(s7_4, M4(9.990e-02, 1.006e-01, 1.993e-01, -3.065e-02, 8.778e-03, 1.426e-01, 3.600e-02, -5.554e-02, -1.035e-01, -5.076e-02, -1.843e-01, 1.523e-01, 7.083e-02, -2.764e-01, 6.749e-01, -1.867e-01), r);\n\tr = MulAdd(s7_5, M4(6.027e-02, -4.173e-02, -4.620e-02, 2.347e-02, -1.925e-02, 1.530e-01, -6.159e-02, -1.304e-01, 4.629e-03, 2.058e-01, -1.747e-01, 1.216e-01, 1.216e-01, -1.857e-01, 1.719e-01, 2.433e-02), r);\n\tr = MulAdd(s7_6, M4(-1.687e-02, -4.113e-02, 2.712e-02, -1.166e-02, 2.373e-02, -1.509e-01, -3.001e-02, 2.273e-02, 7.160e-02, 1.554e-02, -7.796e-02, 1.504e-01, -1.118e-01, -6.248e-02, -1.827e-01, -9.236e-02), r);\n\tr = MulAdd(s7_7, M4(-5.314e-02, 5.682e-02, -1.427e-01, 8.743e-02, -2.283e-02, -1.107e-01, 5.489e-02, -1.170e-01, -2.970e-02, 9.758e-02, 2.663e-02, 1.618e-01, -1.143e-02, -2.074e-01, -9.698e-02, -2.611e-01), r);\n\tr = MulAdd(s7_8, M4(2.741e-02, 6.521e-02, -8.427e-02, -1.180e-01, -1.419e-01, 2.104e-01, -3.639e-02, -8.045e-02, 1.144e-01, 5.270e-02, -4.358e-02, -1.047e-04, -4.723e-02, -1.555e-01, -1.430e-01, 3.500e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.014e-02, 4.866e-03, 2.592e-02, 7.493e-03 };\n\tr = MulAdd(s0_0, M4(-1.986e-02, 6.822e-03, 5.753e-02, -1.520e-02, -3.827e-01, -1.135e-01, -1.228e-01, -2.208e-01, -8.115e-03, -1.213e-01, 3.219e-02, 1.296e-02, -2.308e-02, -1.520e-01, 5.786e-03, -7.677e-02), r);\n\tr = MulAdd(s0_1, M4(-4.018e-02, 3.547e-02, 3.448e-02, -1.302e-02, 9.990e-02, 1.241e-01, 9.569e-02, 1.260e-01, -1.066e-01, -1.508e-01, -8.142e-02, 1.013e-01, -1.144e-01, -1.158e-01, -1.012e-01, -2.324e-01), r);\n\tr = MulAdd(s0_2, M4(5.159e-02, 6.002e-02, -2.956e-02, -7.201e-02, -6.089e-02, 8.855e-02, -1.617e-02, -2.567e-01, 2.620e-02, -3.999e-02, 1.103e-02, -1.445e-02, -1.175e-01, -7.938e-02, -2.475e-02, 8.953e-02), r);\n\tr = MulAdd(s0_3, M4(4.320e-02, -8.602e-02, 5.374e-02, -7.855e-03, -1.130e-01, 5.571e-01, -6.088e-01, 3.930e-01, 4.070e-02, 9.112e-02, -5.713e-02, -9.503e-02, -1.969e-02, 2.999e-02, 1.179e-01, 7.852e-02), r);\n\tr = MulAdd(s0_4, M4(1.322e-01, 1.195e-01, -8.777e-02, 5.713e-02, -9.338e-02, 8.141e-02, 6.251e-02, -2.821e-02, -1.453e-01, -1.133e-02, -1.109e-01, 2.815e-01, 1.847e-02, 4.758e-02, -1.011e-01, 1.856e-01), r);\n\tr = MulAdd(s0_5, M4(5.368e-02, 5.577e-02, -4.115e-02, 5.112e-02, -1.030e-02, 6.773e-02, -2.048e-02, -8.983e-02, -1.955e-02, -5.164e-02, -4.356e-02, -1.102e-01, -2.729e-02, 4.254e-02, -8.942e-02, -1.909e-01), r);\n\tr = MulAdd(s0_6, M4(8.982e-02, 1.226e-01, 1.211e-02, -3.601e-02, 1.469e+00, -6.215e-01, 1.481e+00, -8.902e-01, -6.957e-02, -3.144e-02, -3.928e-02, -1.012e-02, -2.337e-02, -6.282e-02, -1.052e-02, -1.148e-01), r);\n\tr = MulAdd(s0_7, M4(-6.852e-03, 1.922e-01, -1.358e-01, 1.629e-01, 5.828e-02, 1.423e-01, 4.401e-01, 1.005e-02, -7.037e-02, 7.975e-02, -1.301e-01, 3.026e-02, 6.336e-02, 6.242e-02, 7.869e-02, 1.673e-01), r);\n\tr = MulAdd(s0_8, M4(-2.037e-02, -1.039e-01, 3.734e-02, -1.426e-02, -1.313e-01, -2.785e-01, -3.737e-02, 1.120e-01, -5.427e-02, 1.937e-01, 5.597e-02, -1.602e-01, -5.150e-02, 2.788e-02, -5.521e-02, -4.702e-03), r);\n\tr = MulAdd(s1_0, M4(-6.905e-03, -1.235e-01, -2.206e-02, -1.223e-01, -3.602e-02, 1.295e-01, -2.288e-02, 4.790e-02, 3.671e-02, 2.010e-01, 1.423e-03, -5.066e-02, 6.901e-02, 2.673e-02, 1.370e-03, 8.036e-02), r);\n\tr = MulAdd(s1_1, M4(7.908e-02, -1.020e-01, -4.662e-02, -1.245e-01, 3.420e-02, -6.349e-02, -6.105e-03, 6.072e-02, 1.535e-01, -3.444e-02, -2.064e-02, 5.312e-02, 2.549e-02, -8.848e-02, 1.074e-02, -1.463e-01), r);\n\tr = MulAdd(s1_2, M4(-5.909e-02, -5.896e-02, -5.014e-02, -1.310e-01, -1.054e-02, 2.578e-02, 5.319e-03, -3.809e-02, -1.382e-02, 2.672e-02, -6.116e-02, 3.984e-02, 8.119e-02, 7.160e-02, -1.933e-02, 1.464e-01), r);\n\tr = MulAdd(s1_3, M4(-6.907e-02, -1.581e-01, 7.727e-02, 5.224e-02, -2.186e-02, 1.105e-01, 1.388e-02, 8.138e-02, 5.225e-02, -7.229e-02, 7.312e-02, -2.665e-02, 2.633e-02, -1.984e-02, 3.467e-03, 1.131e-01), r);\n\tr = MulAdd(s1_4, M4(2.284e-02, -7.500e-02, -2.100e-01, 4.631e-02, 8.797e-02, -1.436e-01, 1.444e-02, -9.599e-02, -4.338e-02, -1.270e-01, -1.653e-01, -7.205e-02, -5.843e-03, -5.963e-02, -4.226e-02, 1.703e-01), r);\n\tr = MulAdd(s1_5, M4(1.025e-02, 1.461e-01, -1.463e-01, 2.240e-01, -8.927e-03, 1.690e-01, 3.487e-02, -2.054e-02, -1.247e-01, -5.465e-02, 7.278e-02, 5.314e-02, 3.617e-02, 6.145e-03, -6.355e-02, 1.058e-01), r);\n\tr = MulAdd(s1_6, M4(-1.548e-01, -5.650e-02, -1.887e-02, -7.951e-02, -5.997e-02, 1.256e-01, -9.311e-03, -4.018e-02, -5.056e-02, 2.421e-02, -7.796e-02, 4.530e-02, 7.250e-03, -3.022e-02, -3.022e-04, -9.500e-02), r);\n\tr = MulAdd(s1_7, M4(-1.235e-01, -2.393e-01, 1.156e-01, 6.419e-02, 4.952e-03, -8.780e-02, 1.671e-01, 6.066e-02, 5.458e-02, 1.372e-01, 2.770e-02, 4.037e-02, -2.154e-02, -3.429e-02, 1.164e-01, -1.703e-01), r);\n\tr = MulAdd(s1_8, M4(-2.125e-02, -2.629e-01, -4.850e-02, -1.570e-01, -2.562e-02, -8.194e-02, 7.728e-02, -6.326e-02, 6.335e-02, 1.607e-02, 1.454e-02, -3.578e-03, 6.082e-02, -5.576e-02, -7.196e-03, 2.837e-02), r);\n\tr = MulAdd(s2_0, M4(-1.354e-01, 6.717e-02, 9.011e-02, 3.049e-02, 7.582e-02, -3.819e-02, 5.722e-02, -6.210e-02, -3.614e-02, 1.732e-01, 2.581e-02, -1.227e-01, -9.396e-02, -3.042e-02, -5.997e-02, 7.691e-02), r);\n\tr = MulAdd(s2_1, M4(1.229e-01, 1.254e-01, -1.884e-02, -1.712e-01, 1.013e-01, -5.457e-02, 1.000e-01, 8.942e-02, 1.469e-01, 1.948e-01, 1.774e-01, 2.932e-02, -7.101e-02, -9.929e-02, 8.720e-02, 6.885e-02), r);\n\tr = MulAdd(s2_2, M4(-6.101e-02, -2.211e-02, 4.748e-02, -3.044e-02, -6.137e-02, 1.617e-01, 5.654e-02, 3.131e-01, 2.435e-02, -2.560e-02, -2.790e-02, 2.966e-01, -1.586e-01, 4.883e-02, -8.577e-02, 3.480e-02), r);\n\tr = MulAdd(s2_3, M4(1.129e-01, -3.321e-02, -8.915e-02, 2.356e-01, -1.635e-02, -3.314e-02, 4.316e-02, -6.194e-02, 1.002e-01, -8.583e-02, 8.522e-02, -1.088e-01, 7.135e-02, -7.710e-02, -9.304e-02, -1.736e-01), r);\n\tr = MulAdd(s2_4, M4(4.598e-02, -1.520e-01, -3.031e-02, -1.877e-01, 2.440e-01, 7.995e-02, 9.139e-02, -1.998e-01, 1.518e-01, 8.131e-03, 1.610e-02, -5.858e-02, -1.043e-01, -8.885e-02, 2.743e-02, 5.627e-02), r);\n\tr = MulAdd(s2_5, M4(7.694e-02, -1.287e-01, 5.624e-03, 1.564e-01, -7.886e-02, -3.133e-01, -1.258e-01, -6.350e-03, 6.086e-02, 2.019e-02, 1.615e-01, -6.151e-02, 8.397e-03, 1.362e-02, 6.039e-02, -5.354e-02), r);\n\tr = MulAdd(s2_6, M4(-1.030e-02, 1.151e-02, -1.782e-02, -7.826e-02, -1.055e-01, -1.306e-01, 5.878e-02, 1.993e-01, -4.366e-01, 5.715e-02, 7.987e-03, 7.973e-02, 7.199e-02, 1.254e-01, 2.116e-02, -1.284e-01), r);\n\tr = MulAdd(s2_7, M4(-5.671e-02, -7.490e-02, -3.972e-02, 9.643e-02, -1.404e-01, -7.338e-02, -1.980e-01, -2.044e-01, -3.438e-01, 1.263e-01, -5.936e-02, 1.683e-01, 1.006e-01, -2.836e-02, -5.692e-03, 1.708e-01), r);\n\tr = MulAdd(s2_8, M4(8.514e-02, 6.994e-02, -1.013e-01, 1.542e-03, -7.350e-02, -1.482e-01, 3.252e-03, -4.503e-02, -1.242e-01, 9.806e-02, -1.469e-01, -2.331e-01, -4.649e-02, -1.426e-02, -2.206e-02, 2.883e-02), r);\n\tr = MulAdd(s3_0, M4(-3.571e-02, -4.402e-02, -2.314e-02, -6.688e-02, 9.486e-03, -3.747e-02, -1.563e-02, 3.119e-02, 4.435e-02, 9.836e-02, -6.820e-02, 2.743e-02, -9.986e-02, 1.237e-01, -7.874e-02, -1.298e-01), r);\n\tr = MulAdd(s3_1, M4(1.066e-01, 1.047e-01, 9.566e-02, -1.392e-02, 5.801e-02, -1.048e-01, 8.749e-02, -3.110e-02, 4.480e-02, -1.415e-01, 3.925e-02, 5.377e-03, -5.845e-02, 3.466e-02, -3.553e-02, 1.092e-01), r);\n\tr = MulAdd(s3_2, M4(-1.030e-03, 1.358e-01, 4.032e-02, -2.549e-01, -7.238e-02, 7.306e-03, -1.746e-02, -7.322e-02, 9.659e-02, 6.262e-02, -3.096e-02, 1.859e-01, -6.342e-02, 4.422e-02, -6.971e-03, -8.132e-02), r);\n\tr = MulAdd(s3_3, M4(-1.036e-02, -4.418e-02, 8.162e-03, -1.495e-02, -1.440e-02, 3.705e-03, -7.110e-02, 1.073e-01, 2.864e-02, -1.342e-01, 1.404e-02, -1.110e-01, 2.607e-01, 6.219e-03, -6.216e-03, -6.741e-02), r);\n\tr = MulAdd(s3_4, M4(-1.665e-01, -1.968e-01, 1.526e-01, 1.592e-01, -4.854e-02, 7.407e-02, 3.999e-02, -1.254e-01, -7.611e-02, -1.210e-01, 4.380e-02, -1.194e-01, 1.725e-01, 4.165e-02, 7.649e-02, -2.743e-02), r);\n\tr = MulAdd(s3_5, M4(7.561e-02, -1.677e-01, 7.481e-02, 1.806e-01, -5.974e-02, -1.384e-01, -4.500e-02, -5.669e-02, -1.689e-01, -1.343e-01, 1.064e-01, -1.950e-01, -1.293e-02, 9.747e-02, -3.915e-02, -1.126e-01), r);\n\tr = MulAdd(s3_6, M4(-4.416e-02, -2.337e-03, -2.228e-02, -1.596e-01, 4.264e-02, 9.522e-02, -2.105e-02, 1.255e-01, 2.971e-04, 1.379e-01, 1.845e-02, -6.566e-02, 4.997e-02, -3.263e-02, 9.562e-02, 6.351e-02), r);\n\tr = MulAdd(s3_7, M4(-8.212e-03, 1.173e-01, 1.054e-01, 7.538e-02, -1.105e-01, 8.184e-02, -4.330e-02, 5.937e-02, -1.263e-01, 2.382e-01, -4.970e-02, 7.818e-02, 6.604e-02, -9.197e-02, 4.356e-02, 6.887e-02), r);\n\tr = MulAdd(s3_8, M4(5.619e-02, 9.161e-02, 1.717e-01, -5.996e-02, -1.034e-02, -4.474e-02, -3.005e-02, 1.492e-01, 9.353e-02, -4.681e-02, -1.008e-01, -1.182e-01, 2.204e-04, 1.649e-02, 5.204e-02, -3.632e-02), r);\n\tr = MulAdd(s4_0, M4(1.618e-01, 1.440e-01, 2.946e-03, 1.621e-02, 5.865e-02, -4.953e-02, -1.768e-03, -2.534e-02, 1.805e-01, -1.013e-01, 5.760e-02, -1.804e-01, -2.309e-02, -5.472e-03, -4.686e-02, 1.970e-03), r);\n\tr = MulAdd(s4_1, M4(2.577e-01, 2.609e-01, 2.364e-03, 8.060e-02, 1.305e-03, 7.613e-02, -1.744e-01, 1.190e-01, -2.858e-02, -2.411e-02, -2.228e-03, 4.932e-02, 1.226e-02, 1.388e-01, -9.890e-02, -4.603e-03), r);\n\tr = MulAdd(s4_2, M4(3.535e-02, -9.065e-02, -7.221e-02, 1.631e-02, 5.460e-02, -6.296e-02, 1.561e-01, -3.317e-02, -3.537e-02, -8.641e-02, 3.827e-02, 3.396e-02, -3.916e-02, 1.825e-02, 7.734e-02, -5.479e-02), r);\n\tr = MulAdd(s4_3, M4(8.959e-02, -1.148e-01, 2.783e-02, -7.273e-02, 1.180e-01, -2.340e-02, -3.300e-02, -1.382e-01, -2.296e-01, 1.344e-01, -1.764e-01, 3.269e-02, 4.208e-02, -1.100e-01, 4.651e-02, -2.444e-01), r);\n\tr = MulAdd(s4_4, M4(5.090e-02, -1.270e-01, 3.455e-02, -1.171e-01, 2.836e-01, 3.501e-03, -2.007e-01, 1.595e-03, -2.573e-03, 3.730e-02, 5.707e-02, -1.163e-01, 5.308e-03, -1.788e-02, 1.323e-01, -7.576e-03), r);\n\tr = MulAdd(s4_5, M4(4.045e-02, 8.176e-02, -7.298e-04, -1.575e-01, 1.848e-01, -8.641e-02, -6.485e-03, -7.190e-02, 3.545e-02, -6.044e-02, -1.548e-02, -1.619e-01, -2.513e-01, -1.906e-01, 1.054e-01, 1.993e-01), r);\n\tr = MulAdd(s4_6, M4(-2.613e-02, 5.697e-02, 5.588e-02, -1.724e-02, -3.324e-02, 6.878e-02, 4.254e-02, 1.559e-01, 1.419e-01, -1.105e-01, -8.374e-02, 1.909e-01, -5.703e-02, 2.265e-02, -1.545e-02, -1.220e-01), r);\n\tr = MulAdd(s4_7, M4(-1.032e-01, 1.042e-01, 7.131e-02, 9.728e-03, 1.273e-01, -1.841e-01, 4.237e-02, 9.465e-03, 2.121e-02, 1.010e-01, -1.246e-01, 8.562e-02, 4.298e-02, -1.094e-01, 6.559e-05, -2.083e-02), r);\n\tr = MulAdd(s4_8, M4(-4.223e-02, 2.901e-01, 1.016e-02, 4.068e-02, -2.434e-02, 7.889e-02, 5.558e-02, -1.286e-01, -5.586e-02, 1.887e-01, 7.568e-02, -1.709e-01, 3.264e-03, 1.424e-01, 2.017e-01, 5.328e-02), r);\n\tr = MulAdd(s5_0, M4(2.289e-02, -1.985e-02, 1.911e-03, -1.736e-03, 4.676e-03, -6.639e-02, 4.538e-02, -8.575e-02, 4.059e-02, -6.372e-02, -2.257e-02, -3.280e-02, 2.993e-02, -3.446e-02, -2.250e-02, -3.210e-02), r);\n\tr = MulAdd(s5_1, M4(6.721e-02, 6.856e-02, 8.555e-03, -6.471e-02, -1.120e-01, -1.849e-02, 6.424e-03, 1.815e-01, -7.078e-02, 8.081e-03, -5.353e-02, -4.131e-02, -9.650e-02, 1.586e-01, -7.327e-02, 1.632e-01), r);\n\tr = MulAdd(s5_2, M4(-4.732e-02, -1.429e-01, -2.673e-02, 1.000e-01, 6.563e-02, 1.312e-02, -2.896e-03, 5.481e-03, 7.972e-03, 3.480e-02, 4.318e-02, 2.591e-02, -7.582e-02, -1.581e-02, -7.921e-04, -1.373e-01), r);\n\tr = MulAdd(s5_3, M4(2.248e-03, -2.054e-02, 6.049e-02, 5.953e-02, 1.831e-01, 2.980e-02, 8.772e-02, -1.613e-01, 6.612e-02, -9.887e-02, 3.382e-03, 1.342e-01, -8.885e-02, 8.843e-03, -1.922e-02, -1.048e-02), r);\n\tr = MulAdd(s5_4, M4(2.009e-01, 4.434e-02, 1.210e-02, 1.625e-02, 1.055e-01, 6.703e-02, -7.031e-02, 8.557e-02, -1.515e-02, -8.043e-02, -8.440e-02, 1.456e-01, -5.386e-02, -1.905e-02, 6.964e-02, 8.901e-05), r);\n\tr = MulAdd(s5_5, M4(1.971e-02, 1.069e-02, -5.078e-02, -2.352e-02, 1.143e-01, -1.166e-01, -6.763e-02, 8.697e-02, -6.270e-02, 9.384e-02, -1.432e-03, -5.115e-02, -6.805e-02, -1.019e-01, -2.959e-02, 6.550e-03), r);\n\tr = MulAdd(s5_6, M4(-2.476e-02, -3.203e-02, 1.215e-01, 1.066e-01, 3.076e-02, 1.604e-01, 1.136e-02, -1.005e-01, 1.175e-02, -9.072e-02, 3.472e-02, -1.048e-01, 3.720e-02, -4.246e-02, 2.792e-02, 5.211e-02), r);\n\tr = MulAdd(s5_7, M4(-9.140e-02, -3.781e-02, 1.193e-01, -5.316e-02, -4.498e-02, 1.195e-02, 2.241e-02, -2.840e-02, 6.979e-02, -6.277e-02, 5.606e-02, 1.864e-02, -7.186e-02, 9.823e-02, 1.157e-01, -1.972e-02), r);\n\tr = MulAdd(s5_8, M4(-3.606e-02, 3.154e-01, 7.019e-02, 8.492e-02, 7.642e-03, -9.079e-02, 2.235e-02, -3.428e-02, 1.301e-03, -1.673e-02, 7.810e-02, 2.383e-02, 2.591e-02, 1.089e-01, 5.137e-02, 1.102e-01), r);\n\tr = MulAdd(s6_0, M4(4.447e-02, -6.679e-02, 1.368e-02, 2.215e-01, 3.629e-02, -7.108e-02, -7.062e-02, -1.028e-01, 1.437e-01, -1.505e-02, 1.080e-01, 7.552e-02, -1.821e-02, -8.658e-02, 6.763e-02, -6.099e-02), r);\n\tr = MulAdd(s6_1, M4(3.100e-01, 8.374e-02, 2.073e-03, -3.276e-01, -3.915e-02, -4.229e-02, -4.466e-02, 8.721e-02, 2.250e-01, -1.480e-01, 1.668e-01, 3.566e-02, -1.490e-01, 1.378e-01, 1.024e-01, -8.984e-02), r);\n\tr = MulAdd(s6_2, M4(1.756e-01, -7.324e-02, -7.008e-02, -1.154e-01, 4.844e-02, 9.920e-02, -9.209e-03, 2.015e-02, 6.384e-02, -2.329e-01, -1.049e-02, -1.012e-01, -3.391e-02, -7.065e-02, 1.926e-02, -2.107e-01), r);\n\tr = MulAdd(s6_3, M4(4.980e-02, 5.197e-03, -1.297e-01, 2.779e-01, -5.990e-02, -1.192e-01, -1.931e-02, -1.196e-01, 1.153e-02, 3.145e-02, 1.005e-01, 4.722e-02, 4.867e-02, -5.040e-02, 9.400e-02, -7.509e-03), r);\n\tr = MulAdd(s6_4, M4(2.063e-01, 4.555e-01, -8.566e-02, 1.910e-01, 1.244e-01, 1.213e-01, 9.179e-02, 3.046e-01, 8.209e-02, 1.313e-01, -4.185e-02, -5.557e-02, -7.440e-02, -3.492e-02, 1.808e-02, 8.745e-03), r);\n\tr = MulAdd(s6_5, M4(-6.659e-02, 2.696e-01, 6.018e-02, -1.151e-01, 1.323e-01, -1.084e-01, -4.879e-02, 1.189e-01, -1.340e-02, -1.495e-02, -6.454e-02, -9.728e-02, 1.110e-01, -8.076e-02, 1.528e-01, 6.004e-02), r);\n\tr = MulAdd(s6_6, M4(1.959e-01, 1.357e-01, 1.386e-01, -1.108e-01, -2.578e-02, 7.557e-03, -8.948e-02, 1.025e-01, 6.418e-02, -9.741e-02, 7.775e-02, 6.005e-02, 5.412e-02, -3.505e-03, -3.937e-02, 3.171e-02), r);\n\tr = MulAdd(s6_7, M4(1.635e-01, 5.757e-02, 9.609e-02, -4.970e-02, -8.507e-02, -1.574e-01, 2.353e-02, -3.626e-01, 3.217e-02, -3.547e-02, 3.992e-02, 1.444e-01, -1.525e-01, -9.004e-02, -5.342e-02, 8.247e-02), r);\n\tr = MulAdd(s6_8, M4(7.167e-02, 8.103e-02, 1.406e-01, -9.421e-02, -2.194e-02, -1.048e-03, 7.390e-02, -9.496e-02, -4.531e-02, -1.193e-02, -4.896e-02, 8.149e-02, -4.743e-02, 1.126e-01, -8.515e-02, -6.805e-02), r);\n\tr = MulAdd(s7_0, M4(-1.121e-01, -1.278e-02, -8.863e-02, 2.300e-02, -2.201e-02, -1.399e-01, -1.536e-02, -5.916e-02, -2.724e-03, 9.229e-02, 7.675e-02, 3.021e-02, -3.299e-02, 5.690e-02, -1.076e-01, 2.151e-02), r);\n\tr = MulAdd(s7_1, M4(-2.834e-02, -3.503e-04, -1.616e-02, 1.354e-01, 6.473e-02, -2.932e-02, 8.013e-03, -6.101e-02, 4.714e-02, 2.595e-02, 1.401e-01, 6.043e-02, -3.675e-01, -5.563e-02, -1.248e-01, -1.177e-01), r);\n\tr = MulAdd(s7_2, M4(-6.996e-04, -6.545e-02, -1.193e-02, -8.868e-03, 3.028e-02, 7.079e-02, 1.105e-02, -6.737e-02, -3.216e-04, -1.410e-01, 5.733e-02, -8.100e-02, 2.609e-02, -8.698e-02, 1.476e-03, -3.165e-03), r);\n\tr = MulAdd(s7_3, M4(7.213e-03, 1.243e-02, -5.497e-02, -4.193e-02, 5.657e-03, -2.381e-02, -8.174e-02, -5.500e-02, 1.466e-02, 1.246e-01, 9.604e-03, 1.296e-01, -1.523e-01, 1.194e-01, -4.447e-02, -1.892e-01), r);\n\tr = MulAdd(s7_4, M4(-4.059e-02, -2.957e-02, 2.509e-02, 1.123e-01, 3.719e-02, 2.019e-01, 1.411e-02, 5.486e-02, 6.567e-02, 1.341e-01, -1.903e-02, -1.988e-02, -1.076e-01, -1.181e-01, -3.153e-02, 4.874e-02), r);\n\tr = MulAdd(s7_5, M4(2.475e-04, -1.004e-01, -5.032e-02, 1.755e-01, 2.327e-02, -4.958e-02, 1.686e-02, 1.904e-01, -7.471e-02, -7.154e-02, -7.071e-02, -8.508e-02, 1.441e-01, -9.300e-02, 2.251e-01, -8.240e-02), r);\n\tr = MulAdd(s7_6, M4(6.208e-02, -2.324e-02, 6.566e-02, -2.202e-01, 3.150e-02, -1.214e-02, -2.382e-02, 1.375e-01, 4.706e-02, 8.534e-02, 1.390e-01, -1.694e-01, 2.515e-01, -1.183e-01, -1.791e-01, -2.025e-01), r);\n\tr = MulAdd(s7_7, M4(-1.438e-03, -1.104e-03, 7.943e-02, -6.275e-02, -2.148e-02, -1.899e-01, 1.292e-01, -1.585e-01, -1.296e-02, 6.378e-02, 4.362e-02, -4.874e-02, 1.644e-01, -5.298e-02, -1.193e-01, 1.313e-01), r);\n\tr = MulAdd(s7_8, M4(-1.098e-01, -6.661e-02, 1.479e-01, 7.224e-02, 6.840e-02, 5.659e-02, 2.417e-01, -6.040e-02, -1.625e-01, 7.338e-02, 7.262e-02, -4.029e-03, -3.036e-02, 1.887e-01, -4.878e-02, -1.562e-01), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.087e-02, 8.365e-03, 3.822e-02, -1.004e-02 };\n\tr = MulAdd(s0_0, M4(-1.008e-01, -3.916e-02, 1.010e-01, 6.845e-02, 3.399e-01, -1.606e-01, -5.091e-02, 1.703e-02, -4.789e-02, -9.451e-03, 4.035e-02, 9.350e-02, 2.814e-02, -6.340e-02, -2.785e-02, 1.318e-01), r);\n\tr = MulAdd(s0_1, M4(3.055e-02, -4.238e-02, 7.044e-02, -2.653e-02, -3.053e-01, -8.548e-02, 8.775e-02, 6.196e-02, -1.515e-03, -1.879e-01, 2.451e-02, -8.076e-02, 2.415e-01, 4.137e-02, 6.065e-02, -5.155e-02), r);\n\tr = MulAdd(s0_2, M4(-5.146e-02, 3.458e-02, -4.560e-02, 3.390e-02, -1.537e-01, 7.741e-02, -6.436e-02, -1.263e-02, -7.760e-02, 5.328e-02, -1.590e-02, 1.418e-01, 8.197e-02, -6.740e-02, 9.695e-02, 8.204e-02), r);\n\tr = MulAdd(s0_3, M4(-6.662e-02, 1.059e-01, 8.080e-04, -5.476e-02, 1.777e-01, -3.447e-01, -4.629e-01, -1.898e-01, 1.417e-01, 1.464e-01, -3.460e-03, 6.394e-03, 1.006e-01, -1.495e-01, -3.108e-02, -1.354e-01), r);\n\tr = MulAdd(s0_4, M4(2.424e-02, 1.511e-02, -4.347e-02, -1.348e-02, -3.829e-01, 4.027e-01, -6.761e-01, 1.932e-01, -2.802e-02, -6.379e-02, -1.569e-03, -9.520e-02, 2.448e-01, -3.034e-01, -4.726e-02, -9.743e-02), r);\n\tr = MulAdd(s0_5, M4(9.581e-02, -1.057e-01, -2.580e-02, 2.276e-02, -1.719e-01, -5.643e-02, 5.240e-02, 1.784e-02, -8.405e-03, -1.637e-01, 1.738e-01, 3.104e-02, 6.445e-02, -1.124e-01, -3.481e-02, -6.256e-02), r);\n\tr = MulAdd(s0_6, M4(2.497e-02, 1.180e-02, 4.137e-02, -5.304e-02, -6.517e-01, 9.059e-02, -1.180e+00, -5.478e-01, -2.872e-02, 1.207e-02, 8.378e-03, -6.560e-02, -2.827e-02, 5.121e-02, 6.275e-02, 6.468e-02), r);\n\tr = MulAdd(s0_7, M4(2.286e-02, 9.867e-02, 2.494e-02, 8.407e-02, 6.351e-03, 2.930e-02, 2.861e-01, 1.563e-01, -6.029e-02, 9.740e-02, 5.489e-02, -7.501e-02, 5.178e-02, -1.199e-01, -1.896e-02, 1.576e-01), r);\n\tr = MulAdd(s0_8, M4(-2.593e-02, 7.859e-02, 7.854e-02, 1.255e-01, -4.862e-02, -1.027e-01, 8.092e-02, 7.862e-02, 7.277e-03, -3.922e-02, 3.413e-02, -4.888e-02, 9.482e-03, 6.531e-02, 6.533e-02, -1.082e-02), r);\n\tr = MulAdd(s1_0, M4(-1.092e-01, -1.309e-01, 2.092e-01, 1.873e-01, -1.052e-02, -3.344e-02, -6.844e-02, -6.866e-02, -2.449e-02, -2.638e-02, 3.731e-02, -2.757e-02, -5.234e-02, 6.412e-03, 8.183e-03, 4.165e-03), r);\n\tr = MulAdd(s1_1, M4(-1.361e-01, -8.128e-02, 9.945e-02, 2.035e-01, -1.116e-01, -4.339e-02, 3.222e-02, -4.847e-02, 1.682e-02, 5.067e-02, 7.394e-02, 1.533e-02, 4.123e-02, 6.091e-02, -6.075e-03, 4.583e-02), r);\n\tr = MulAdd(s1_2, M4(-7.005e-03, -4.706e-02, -1.425e-01, 3.193e-02, 2.992e-02, 2.992e-02, -5.016e-02, -8.966e-02, -4.400e-02, -6.918e-03, -5.816e-02, -8.850e-02, 1.587e-02, -3.190e-02, 3.408e-02, -9.859e-02), r);\n\tr = MulAdd(s1_3, M4(-1.231e-01, 4.057e-02, 1.879e-01, -6.859e-02, -1.013e-01, 9.888e-02, -3.559e-02, -7.970e-02, 6.961e-02, 5.653e-02, -7.000e-02, 6.589e-02, -1.478e-02, -1.277e-01, 2.843e-02, -5.412e-02), r);\n\tr = MulAdd(s1_4, M4(-4.678e-02, -5.131e-02, -3.270e-03, 1.746e-01, 1.063e-01, 4.275e-03, -2.326e-02, -7.831e-02, -9.495e-02, -4.468e-02, -9.005e-02, 1.607e-01, 1.817e-01, -1.634e-01, 1.678e-03, -1.685e-01), r);\n\tr = MulAdd(s1_5, M4(-1.658e-02, 5.195e-02, -1.156e-01, -1.038e-01, -3.957e-02, -1.587e-02, -5.761e-02, -6.746e-02, 1.075e-02, 5.486e-02, 5.067e-02, -7.913e-02, 2.812e-02, 1.681e-01, -3.576e-02, -2.748e-01), r);\n\tr = MulAdd(s1_6, M4(-2.988e-02, -5.385e-03, 2.411e-01, -2.254e-01, -6.225e-02, -4.964e-02, -2.798e-02, 4.692e-02, -3.240e-02, -5.173e-02, 7.077e-02, -1.813e-01, -2.905e-02, 8.668e-02, 4.005e-02, -7.292e-02), r);\n\tr = MulAdd(s1_7, M4(-2.912e-02, 9.705e-02, 1.795e-01, -2.074e-02, -1.717e-02, -1.351e-01, 1.336e-02, 6.337e-02, -5.253e-02, 8.671e-02, 2.364e-02, -7.599e-02, 1.080e-02, 7.499e-02, -6.414e-02, -4.584e-02), r);\n\tr = MulAdd(s1_8, M4(-1.087e-01, 5.665e-02, -1.078e-01, 2.889e-02, 4.027e-02, -4.402e-02, 5.508e-02, 6.452e-02, -3.496e-02, -7.027e-02, -2.180e-02, -1.293e-01, 5.026e-02, -5.078e-04, 1.732e-02, -1.501e-01), r);\n\tr = MulAdd(s2_0, M4(-3.671e-02, 7.856e-03, -2.443e-02, -1.531e-02, -5.352e-02, 6.252e-02, -2.774e-02, 5.152e-03, 2.753e-02, -9.750e-02, -9.400e-02, 2.185e-02, -7.625e-03, 4.389e-02, 7.790e-03, 1.192e-02), r);\n\tr = MulAdd(s2_1, M4(-2.192e-01, 3.237e-02, -8.307e-02, 1.826e-01, 1.406e-02, -4.539e-02, 1.026e-01, 1.231e-01, 6.083e-02, 1.084e-01, 1.293e-02, -1.103e-01, 4.078e-02, -7.499e-02, 1.408e-01, -9.862e-02), r);\n\tr = MulAdd(s2_2, M4(-1.668e-02, -8.959e-02, -2.557e-03, 4.462e-03, 1.400e-01, 1.951e-01, -7.688e-02, 1.030e-01, 3.071e-03, 3.503e-03, 5.728e-03, -3.091e-01, -4.406e-02, 2.517e-02, -1.225e-01, -1.108e-01), r);\n\tr = MulAdd(s2_3, M4(-5.356e-02, 1.346e-01, 1.545e-01, -4.702e-02, 4.145e-02, -1.388e-01, -5.938e-02, 1.375e-01, 1.042e-01, 1.030e-01, -2.785e-02, -3.777e-02, -1.161e-01, -1.252e-01, 7.686e-02, 1.854e-01), r);\n\tr = MulAdd(s2_4, M4(8.108e-02, 1.545e-01, -9.479e-02, -9.649e-02, -2.991e-02, 1.379e-01, -1.532e-01, -7.997e-02, 1.364e-01, 1.927e-01, -1.008e-01, -1.324e-01, -9.811e-03, -1.180e-01, 2.127e-02, -2.427e-02), r);\n\tr = MulAdd(s2_5, M4(1.284e-02, 6.614e-02, -2.443e-02, 1.896e-02, -3.812e-02, 1.838e-01, -4.791e-02, -3.341e-02, 5.916e-02, 1.480e-01, -5.429e-02, -3.131e-02, -1.818e-02, 3.326e-02, 3.054e-02, 9.534e-02), r);\n\tr = MulAdd(s2_6, M4(-3.783e-02, -3.659e-02, 1.287e-02, -2.306e-02, -8.206e-02, -5.854e-02, -1.082e-01, 1.305e-01, -2.610e-02, -1.637e-01, 1.781e-01, 1.751e-01, 8.290e-02, 1.125e-01, -2.836e-02, 2.926e-02), r);\n\tr = MulAdd(s2_7, M4(6.580e-03, 5.339e-02, -8.924e-02, 6.558e-02, -1.142e-01, 6.927e-02, -5.860e-02, 2.088e-02, 1.394e-01, 8.620e-02, 5.780e-02, -1.332e-01, -2.791e-02, 6.050e-02, -2.671e-02, 4.709e-02), r);\n\tr = MulAdd(s2_8, M4(5.441e-03, 5.049e-02, -4.891e-02, -4.387e-02, -9.769e-03, -3.104e-02, 4.246e-02, -3.497e-01, 1.708e-01, -2.097e-01, -1.046e-02, -6.400e-04, -7.334e-02, 2.186e-02, -1.378e-02, 4.845e-02), r);\n\tr = MulAdd(s3_0, M4(2.658e-01, 5.756e-02, 8.229e-04, 5.429e-02, 9.246e-02, -3.045e-03, -3.316e-02, -1.508e-02, -9.681e-03, -2.741e-02, -3.148e-02, 5.369e-02, -8.267e-02, -3.702e-02, 3.685e-02, 3.233e-02), r);\n\tr = MulAdd(s3_1, M4(-2.783e-01, -6.481e-02, -1.671e-01, 6.387e-02, 1.322e-01, 6.065e-02, 1.008e-01, 7.013e-02, 1.295e-01, 9.118e-02, 6.833e-02, 2.235e-01, -6.723e-02, 1.381e-03, -6.050e-02, -7.017e-02), r);\n\tr = MulAdd(s3_2, M4(1.354e-02, 9.146e-03, -5.852e-02, -1.990e-01, -4.583e-02, -5.566e-02, -3.195e-02, 6.211e-03, 2.113e-02, 1.178e-02, -2.842e-02, -6.357e-02, -1.509e-01, 2.841e-02, -9.607e-02, 4.578e-02), r);\n\tr = MulAdd(s3_3, M4(1.028e-01, -3.498e-02, 1.358e-01, -4.864e-02, 1.267e-01, 7.651e-02, -6.803e-02, -3.683e-02, -3.046e-02, -3.911e-04, -8.320e-02, -1.267e-02, -9.810e-02, -5.653e-02, 2.510e-01, 7.365e-02), r);\n\tr = MulAdd(s3_4, M4(9.615e-02, -6.909e-02, 2.706e-03, 8.430e-02, 6.544e-02, -8.425e-02, -1.024e-01, 4.985e-02, 4.863e-02, 6.675e-02, 1.092e-01, 5.400e-03, -1.514e-02, 2.700e-01, -1.184e-01, -1.450e-01), r);\n\tr = MulAdd(s3_5, M4(5.401e-02, -1.141e-01, 1.341e-01, 6.636e-02, 2.054e-02, 9.014e-03, -1.037e-02, -9.457e-03, -9.401e-02, -1.564e-02, 3.566e-02, 8.868e-02, -6.657e-04, 5.736e-02, -2.355e-02, 2.052e-02), r);\n\tr = MulAdd(s3_6, M4(-3.002e-02, -3.003e-02, -4.129e-02, 1.064e-01, 8.557e-02, 6.851e-02, -1.117e-01, 2.930e-02, -2.581e-02, 1.051e-01, -8.577e-02, -6.659e-02, -2.273e-02, -1.715e-01, -1.470e-02, -7.442e-03), r);\n\tr = MulAdd(s3_7, M4(1.125e-01, 1.331e-02, -1.246e-02, 5.825e-02, 1.756e-02, -8.701e-02, 6.392e-02, 1.824e-02, 8.065e-02, 7.785e-02, 2.374e-02, -1.394e-01, -2.717e-02, 1.178e-01, 9.271e-02, -1.530e-01), r);\n\tr = MulAdd(s3_8, M4(1.323e-02, -7.379e-02, 2.424e-02, -1.389e-01, -5.386e-02, -3.862e-02, -4.150e-02, 2.732e-02, 6.020e-02, -1.514e-01, 1.884e-02, -5.014e-02, -2.019e-02, 1.374e-01, -1.084e-01, 6.373e-02), r);\n\tr = MulAdd(s4_0, M4(-8.808e-02, 3.429e-02, 1.013e-01, -3.341e-01, -7.959e-02, 1.194e-01, -5.354e-02, 5.882e-02, -5.993e-02, -2.896e-02, 8.839e-02, -1.031e-01, -4.339e-02, 7.098e-02, -2.804e-02, 2.744e-02), r);\n\tr = MulAdd(s4_1, M4(9.648e-04, 2.408e-01, 2.017e-02, 3.314e-02, -2.142e-03, -1.039e-02, 1.387e-02, -1.590e-02, -3.084e-02, 7.650e-02, -4.970e-02, -1.405e-02, -4.142e-02, -2.851e-01, -6.241e-02, 3.391e-03), r);\n\tr = MulAdd(s4_2, M4(-8.964e-02, 2.112e-02, -3.446e-02, 6.552e-03, 7.698e-02, -6.241e-02, 9.886e-02, 5.670e-02, 8.158e-02, -9.800e-02, 1.245e-01, 2.136e-01, 2.148e-02, -1.728e-03, -1.094e-01, 2.660e-01), r);\n\tr = MulAdd(s4_3, M4(-3.053e-02, -2.172e-01, 1.221e-01, 9.487e-02, 2.165e-02, -8.438e-02, 1.171e-02, 1.298e-03, 7.446e-02, 1.966e-01, -2.453e-01, 1.166e-01, 1.633e-02, -2.862e-03, 6.918e-02, 2.827e-02), r);\n\tr = MulAdd(s4_4, M4(-1.083e-01, -2.386e-02, 1.212e-01, 1.950e-01, 1.193e-01, 1.277e-01, 3.869e-02, -1.443e-03, 5.198e-02, 7.316e-02, -1.790e-01, 8.578e-02, 5.957e-03, 1.503e-01, 2.082e-01, 2.256e-01), r);\n\tr = MulAdd(s4_5, M4(-1.064e-01, 1.372e-01, -1.877e-02, -1.348e-02, -5.566e-02, -9.086e-02, 2.651e-02, 6.765e-02, -6.230e-02, -1.736e-01, 3.186e-02, -1.308e-02, 5.899e-02, 1.227e-01, 2.968e-02, 3.636e-02), r);\n\tr = MulAdd(s4_6, M4(-6.961e-03, -1.043e-01, 8.080e-02, -6.653e-02, -1.519e-02, -3.350e-02, -4.550e-02, -5.541e-02, 5.834e-02, -1.444e-01, -2.354e-03, -4.099e-03, 2.516e-02, 1.928e-01, 1.690e-01, -8.711e-02), r);\n\tr = MulAdd(s4_7, M4(-1.251e-01, 7.012e-02, 6.696e-02, -4.789e-02, 5.799e-02, 1.241e-01, 1.203e-03, 3.225e-02, -6.642e-02, 1.606e-01, 2.856e-02, 7.654e-02, 6.001e-02, -1.007e-01, 6.379e-02, 6.739e-02), r);\n\tr = MulAdd(s4_8, M4(7.172e-02, 1.117e-01, -8.373e-02, 5.826e-02, 8.146e-03, 9.333e-02, -8.752e-02, -1.107e-01, 5.070e-02, -8.970e-02, 2.036e-02, -8.545e-02, -1.303e-02, -6.134e-02, 1.345e-01, -2.092e-02), r);\n\tr = MulAdd(s5_0, M4(-3.420e-02, -4.286e-02, 5.820e-02, -4.666e-02, -1.387e-02, -9.200e-03, 8.678e-02, 7.305e-02, -1.391e-02, -1.391e-01, -2.701e-03, -2.183e-02, 2.512e-02, 8.134e-02, 1.446e-02, -6.738e-02), r);\n\tr = MulAdd(s5_1, M4(2.315e-02, 1.556e-02, 9.546e-02, -8.261e-02, -4.704e-02, -1.952e-02, 9.274e-03, 8.298e-02, -2.296e-02, 1.468e-01, 9.009e-02, 9.296e-02, -4.212e-02, -3.072e-03, 2.659e-02, -9.766e-02), r);\n\tr = MulAdd(s5_2, M4(-3.174e-02, 7.869e-02, 6.973e-02, 9.292e-02, 4.679e-02, -7.720e-02, -6.137e-02, -3.849e-02, 3.740e-02, -2.823e-02, 2.053e-02, -1.582e-02, -2.069e-02, -4.009e-02, 1.819e-02, 5.816e-02), r);\n\tr = MulAdd(s5_3, M4(-2.408e-02, -1.402e-02, 8.030e-02, -7.538e-04, -6.870e-02, 6.374e-02, -2.680e-02, 6.959e-02, -5.629e-02, 1.634e-02, -1.036e-01, 8.784e-02, 4.241e-02, 1.180e-01, 2.967e-02, 5.800e-02), r);\n\tr = MulAdd(s5_4, M4(8.412e-03, -1.434e-01, 2.068e-02, 1.126e-01, -2.408e-02, 5.598e-02, 6.866e-02, -6.318e-02, -7.580e-03, -1.624e-01, 1.690e-01, 1.567e-01, 3.018e-02, 3.697e-02, 1.022e-01, 5.549e-03), r);\n\tr = MulAdd(s5_5, M4(-2.753e-02, 6.398e-03, -1.630e-04, 8.630e-02, -7.732e-02, -1.156e-01, -3.458e-02, -5.389e-03, 2.963e-02, -4.424e-02, -6.577e-02, 1.644e-01, 5.889e-02, -1.389e-02, 5.595e-02, 3.759e-02), r);\n\tr = MulAdd(s5_6, M4(-3.680e-02, -1.139e-01, 2.077e-01, 8.976e-03, 3.099e-02, -2.741e-03, -3.880e-02, -6.108e-02, 7.025e-03, -1.111e-01, -7.592e-02, -7.150e-02, 6.323e-02, 1.183e-01, 1.126e-01, -1.196e-01), r);\n\tr = MulAdd(s5_7, M4(-9.568e-02, -1.353e-01, 9.138e-05, 1.103e-01, 4.564e-02, 4.804e-02, 2.993e-02, -2.955e-05, 6.861e-02, -1.118e-02, -5.157e-02, -1.125e-01, -1.353e-02, 2.401e-02, -7.281e-02, 7.283e-02), r);\n\tr = MulAdd(s5_8, M4(3.341e-02, 9.544e-03, 3.887e-02, 1.109e-02, -1.954e-02, 1.813e-01, -3.185e-02, -1.201e-01, 6.204e-03, 4.629e-02, -1.049e-01, -1.434e-02, -2.835e-02, -2.521e-02, 1.122e-01, 2.099e-02), r);\n\tr = MulAdd(s6_0, M4(1.845e-01, 7.140e-02, -2.296e-02, -4.522e-01, -8.474e-02, -1.015e-01, -5.319e-02, 1.101e-01, 1.284e-01, 1.388e-02, -9.949e-02, -4.648e-02, -9.801e-02, 7.390e-02, 9.625e-02, 6.383e-02), r);\n\tr = MulAdd(s6_1, M4(7.417e-02, 2.408e-01, 5.027e-02, -1.958e-01, -2.282e-02, -2.957e-02, 2.635e-02, 2.840e-02, 1.937e-01, 3.764e-02, 2.358e-02, 2.496e-01, -1.975e-01, 6.422e-03, -1.198e-01, -2.480e-01), r);\n\tr = MulAdd(s6_2, M4(-6.464e-03, 6.839e-02, 1.742e-02, 5.729e-02, 5.231e-02, -4.147e-02, 1.640e-02, -3.261e-03, 3.850e-02, -2.173e-02, -5.474e-02, 2.090e-02, -5.563e-02, 3.820e-02, -9.706e-04, 5.112e-02), r);\n\tr = MulAdd(s6_3, M4(5.517e-02, -1.175e-01, -1.632e-02, -2.209e-01, -7.623e-02, 1.509e-01, 1.945e-02, 1.775e-01, -5.883e-02, -1.288e-01, 1.850e-02, 9.276e-02, 1.260e-01, 8.077e-03, -3.461e-02, -1.318e-01), r);\n\tr = MulAdd(s6_4, M4(2.518e-01, 2.093e-01, -3.392e-01, -3.699e-01, -1.533e-01, -5.155e-03, 2.224e-01, 1.088e-01, 1.740e-02, 7.310e-02, 1.691e-02, 1.149e-01, -2.053e-01, 7.916e-02, -8.970e-03, -6.942e-02), r);\n\tr = MulAdd(s6_5, M4(7.398e-03, -1.139e-02, 5.134e-02, 4.369e-02, 3.504e-02, -2.624e-02, -1.932e-02, -8.406e-02, -5.470e-02, 1.063e-01, 1.024e-01, 3.087e-02, 3.550e-02, 2.259e-02, 1.528e-01, 1.171e-01), r);\n\tr = MulAdd(s6_6, M4(-3.539e-02, -2.213e-01, -7.176e-02, 8.298e-02, -4.917e-02, 3.198e-02, -3.727e-02, 9.915e-03, -2.613e-03, -8.586e-02, 1.400e-03, -7.126e-02, -3.262e-02, -2.155e-02, -1.023e-01, 1.680e-02), r);\n\tr = MulAdd(s6_7, M4(4.906e-02, -2.937e-02, -2.405e-02, 8.911e-02, -2.111e-02, -7.278e-02, 6.475e-02, -2.134e-01, 1.474e-02, -6.657e-02, 1.101e-01, -1.045e-01, -6.551e-02, 9.400e-02, 7.675e-03, 1.311e-02), r);\n\tr = MulAdd(s6_8, M4(-7.607e-03, 1.046e-01, 6.737e-02, 1.893e-01, -3.036e-02, -3.295e-02, -5.342e-02, -1.158e-02, 2.028e-02, 3.606e-03, 6.415e-02, 1.806e-02, -2.892e-03, -7.854e-02, 6.960e-04, -1.778e-02), r);\n\tr = MulAdd(s7_0, M4(4.071e-02, -8.310e-02, 3.682e-02, 2.568e-01, 1.042e-02, 5.130e-03, -1.003e-01, 1.055e-01, -1.793e-01, -1.907e-02, -8.712e-02, 5.897e-02, 1.614e-01, -1.085e-01, 1.510e-01, -5.698e-02), r);\n\tr = MulAdd(s7_1, M4(1.770e-02, 6.137e-02, 4.827e-02, 2.183e-02, 5.895e-02, 1.145e-02, -9.344e-02, 2.193e-01, -1.240e-01, -7.384e-02, 1.296e-01, 1.158e-02, 1.164e-03, 1.199e-01, 2.286e-02, -3.528e-02), r);\n\tr = MulAdd(s7_2, M4(3.107e-02, -8.318e-02, -3.956e-02, 2.245e-02, 6.957e-02, 2.143e-02, -6.687e-02, 1.294e-02, 1.749e-02, -2.284e-02, 1.119e-01, 8.031e-03, -3.842e-02, -1.248e-01, 1.727e-01, 7.133e-02), r);\n\tr = MulAdd(s7_3, M4(5.292e-02, 8.579e-02, -3.654e-02, -9.238e-02, -1.451e-02, 1.251e-01, 1.535e-03, 8.453e-02, -3.673e-02, -6.283e-02, 1.648e-02, 4.689e-02, 1.727e-01, -3.341e-03, -1.745e-01, -9.239e-02), r);\n\tr = MulAdd(s7_4, M4(9.484e-03, 1.112e-01, -3.333e-02, -1.463e-01, -4.327e-02, 7.501e-02, 6.370e-02, -5.664e-02, -5.735e-02, -2.845e-02, -4.963e-02, 8.615e-02, 4.983e-02, 2.317e-01, 9.224e-03, 3.614e-02), r);\n\tr = MulAdd(s7_5, M4(-4.812e-02, -1.102e-01, -3.947e-02, -7.464e-02, 4.965e-02, 1.356e-01, 7.896e-02, 5.029e-03, -3.786e-02, -5.606e-02, 2.761e-02, -2.699e-02, 7.781e-02, -2.900e-01, 9.253e-02, 1.759e-01), r);\n\tr = MulAdd(s7_6, M4(2.075e-02, 9.525e-02, 3.078e-02, 7.512e-02, -3.387e-02, 1.460e-01, -7.847e-02, 3.001e-02, -3.900e-02, 2.520e-01, 3.179e-02, -1.522e-01, 1.620e-01, 5.111e-02, -6.999e-02, 1.060e-01), r);\n\tr = MulAdd(s7_7, M4(8.715e-03, 5.712e-02, -5.084e-02, 2.632e-02, 3.210e-02, -5.303e-02, -4.228e-02, -7.933e-02, -1.078e-01, 9.788e-02, 1.451e-01, -1.347e-01, 3.977e-02, -1.189e-01, -1.289e-01, 7.335e-02), r);\n\tr = MulAdd(s7_8, M4(-5.911e-02, 1.363e-02, 3.665e-02, 4.175e-02, 1.131e-02, -3.395e-02, -1.990e-02, -9.542e-03, -2.874e-02, -4.118e-02, 1.667e-02, -7.509e-02, 3.075e-02, -9.451e-02, 9.701e-02, 1.274e-01), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.222e-02, -7.473e-03, 1.007e-02, 2.959e-02 };\n\tr = MulAdd(s0_0, M4(-5.186e-02, -5.537e-03, 2.369e-02, -5.261e-02, -1.789e-01, -5.089e-02, -7.291e-03, -1.065e-01, -2.531e-02, -3.347e-02, 5.976e-03, 8.518e-02, 1.445e-02, -3.676e-02, 1.651e-02, -1.422e-02), r);\n\tr = MulAdd(s0_1, M4(7.365e-03, -5.514e-02, -5.771e-02, -3.514e-03, 4.978e-01, -1.261e-01, 2.827e-01, 8.266e-02, 9.005e-02, -1.923e-01, 4.595e-02, 2.282e-01, 9.758e-02, -4.172e-03, 7.787e-02, 9.638e-02), r);\n\tr = MulAdd(s0_2, M4(5.664e-03, 6.797e-03, 4.860e-02, 7.314e-03, -2.101e-01, -8.617e-02, -4.768e-02, 5.512e-02, -3.253e-02, -1.228e-01, -3.881e-02, -5.309e-02, 6.288e-02, -7.397e-02, 1.233e-01, -6.095e-03), r);\n\tr = MulAdd(s0_3, M4(9.081e-02, 2.910e-02, 2.229e-02, 5.761e-02, -1.061e-01, 5.928e-01, -9.201e-01, -1.884e-02, 6.669e-02, -1.057e-02, -8.456e-03, -1.213e-01, 6.156e-02, 4.088e-03, 4.034e-02, -9.234e-03), r);\n\tr = MulAdd(s0_4, M4(1.579e-02, 1.365e-02, 2.926e-02, 5.481e-02, 8.783e-01, 5.205e-01, -1.973e-01, 2.039e-02, -1.500e-02, 4.624e-02, -3.470e-02, 6.766e-02, 1.261e-01, -9.425e-02, 1.121e-01, -1.359e-01), r);\n\tr = MulAdd(s0_5, M4(8.009e-03, -7.407e-02, -7.806e-02, 3.210e-02, 1.047e-01, 6.242e-02, -1.968e-01, 1.861e-02, 5.884e-02, 1.685e-01, 3.460e-02, 9.654e-02, -1.731e-02, 5.947e-02, 1.207e-02, -2.139e-02), r);\n\tr = MulAdd(s0_6, M4(-6.461e-04, -7.738e-02, -6.154e-02, 2.020e-02, 6.114e-01, 8.338e-01, -2.539e-01, 1.945e-01, 3.715e-02, 8.291e-02, -1.281e-01, -1.962e-02, -8.719e-02, -5.726e-02, 1.984e-02, -2.301e-02), r);\n\tr = MulAdd(s0_7, M4(8.944e-03, -1.180e-01, -3.260e-02, -8.288e-02, 5.580e-01, 1.819e-01, -1.055e-01, -4.954e-02, -2.117e-03, 6.767e-02, 1.805e-01, -2.507e-02, -7.247e-02, -2.483e-02, 6.030e-02, 7.295e-02), r);\n\tr = MulAdd(s0_8, M4(8.174e-02, -1.312e-02, -1.040e-03, -7.740e-02, 1.428e-01, -1.759e-01, 2.594e-01, 3.677e-03, 4.413e-02, 5.259e-02, -1.474e-02, 1.009e-02, -1.727e-02, -1.805e-02, 1.198e-01, 3.637e-03), r);\n\tr = MulAdd(s1_0, M4(-1.429e-01, -3.566e-02, -3.506e-02, -1.421e-02, -9.504e-02, -8.328e-02, -2.046e-02, -1.898e-02, 8.700e-03, 1.643e-02, 4.432e-02, 9.043e-02, -3.787e-02, -4.207e-02, 3.174e-03, -5.154e-02), r);\n\tr = MulAdd(s1_1, M4(7.942e-02, 1.860e-02, 1.844e-01, -1.654e-02, 6.416e-02, -5.572e-02, 4.771e-02, 5.403e-02, -2.890e-02, -6.370e-02, -6.170e-02, 9.796e-03, 9.547e-03, -1.810e-02, -5.481e-02, -3.555e-02), r);\n\tr = MulAdd(s1_2, M4(-6.011e-02, -8.863e-02, 1.471e-01, 8.182e-02, -3.416e-02, -1.819e-02, -4.760e-02, 7.041e-03, -2.055e-02, 1.766e-03, 1.199e-01, 1.697e-01, -1.382e-01, 3.750e-02, 2.883e-02, -1.150e-01), r);\n\tr = MulAdd(s1_3, M4(-7.160e-02, 5.820e-02, 8.351e-02, 1.104e-01, -3.941e-02, 1.396e-02, -1.016e-01, 6.790e-02, 1.341e-01, 5.572e-02, -5.254e-02, -8.326e-02, 5.552e-02, 1.079e-01, 9.147e-02, 1.187e-01), r);\n\tr = MulAdd(s1_4, M4(1.958e-02, -2.435e-01, -7.386e-02, 2.677e-02, 2.828e-02, -1.012e-02, -3.403e-02, 4.901e-03, 4.395e-03, 3.006e-02, 5.583e-02, -7.418e-02, 1.435e-01, -5.313e-02, -5.963e-02, 6.607e-02), r);\n\tr = MulAdd(s1_5, M4(-2.027e-01, -1.539e-02, -1.039e-01, -1.066e-01, 4.238e-03, 2.528e-02, -1.514e-02, 4.263e-02, -9.176e-02, -6.023e-02, 4.109e-02, -5.228e-03, -7.283e-02, 1.362e-01, 3.012e-02, -1.114e-01), r);\n\tr = MulAdd(s1_6, M4(2.261e-02, 1.224e-02, 8.824e-02, 1.870e-01, 1.328e-01, 2.603e-03, -5.553e-02, 1.089e-01, 1.792e-02, -2.273e-03, -1.100e-01, 3.768e-02, -1.192e-01, -8.333e-03, -4.026e-03, 1.260e-02), r);\n\tr = MulAdd(s1_7, M4(5.822e-02, 7.994e-02, 1.209e-01, 3.664e-02, 9.369e-02, -1.645e-01, -6.200e-02, -1.238e-01, -1.373e-01, 3.009e-02, 1.260e-02, -1.854e-01, 7.095e-02, 6.288e-02, -6.089e-02, 1.096e-01), r);\n\tr = MulAdd(s1_8, M4(-7.676e-02, 1.116e-01, -7.151e-02, 3.894e-02, 1.127e-02, 3.901e-02, -1.526e-02, 9.455e-02, -8.459e-02, -1.803e-01, -9.597e-02, -9.799e-02, -1.211e-01, 3.434e-02, 5.533e-02, -1.471e-02), r);\n\tr = MulAdd(s2_0, M4(-2.601e-03, 1.487e-02, 8.944e-02, -6.765e-03, 6.154e-02, 1.853e-02, -2.615e-02, 1.179e-02, -2.676e-02, 7.439e-02, 2.106e-02, -2.097e-02, 3.093e-02, -8.687e-02, 5.337e-02, 3.475e-03), r);\n\tr = MulAdd(s2_1, M4(-1.257e-01, 1.475e-01, 1.754e-02, -5.200e-02, -2.007e-01, 7.249e-02, 5.663e-02, -1.978e-01, -1.158e-01, -6.672e-02, 1.056e-01, -1.236e-01, 8.004e-03, -8.248e-02, 9.023e-03, 6.292e-02), r);\n\tr = MulAdd(s2_2, M4(7.154e-02, 1.291e-01, -3.540e-02, 1.070e-01, -1.601e-01, -4.243e-02, 1.840e-01, -4.435e-02, 9.572e-03, 1.984e-01, -1.119e-02, -1.818e-01, 3.998e-02, -1.749e-01, -4.146e-02, -4.526e-03), r);\n\tr = MulAdd(s2_3, M4(4.276e-02, -8.397e-02, 2.252e-02, 4.302e-02, -9.437e-02, -3.633e-02, 1.379e-01, -1.274e-01, 5.799e-02, 2.590e-01, -2.307e-02, -2.396e-02, 4.338e-02, 1.536e-02, 2.341e-02, 1.301e-01), r);\n\tr = MulAdd(s2_4, M4(-1.189e-01, -2.813e-02, 1.248e-01, 1.002e-01, -1.256e-01, -9.355e-02, 4.911e-02, -1.429e-01, -1.471e-02, 8.852e-02, -1.080e-01, 8.591e-02, -4.678e-02, 6.644e-02, 2.068e-01, 9.896e-02), r);\n\tr = MulAdd(s2_5, M4(-7.221e-02, -4.096e-02, -6.655e-03, -1.175e-02, 3.419e-02, -1.814e-01, -1.664e-02, 1.859e-02, 9.448e-02, 1.096e-01, -9.677e-02, -8.571e-02, -3.325e-02, 1.176e-01, 7.737e-02, 9.706e-02), r);\n\tr = MulAdd(s2_6, M4(2.384e-02, 5.983e-02, -2.370e-02, 4.370e-02, -4.737e-02, 1.621e-01, 1.168e-01, 5.861e-02, 4.508e-02, -5.758e-02, 5.496e-02, 1.514e-02, -1.413e-01, -5.880e-02, -2.348e-02, -3.277e-03), r);\n\tr = MulAdd(s2_7, M4(-9.729e-02, 2.059e-03, 3.092e-02, -3.349e-02, 1.803e-01, 7.051e-02, -6.959e-02, 4.558e-02, 1.372e-02, 1.978e-01, 9.990e-02, 9.627e-02, -4.061e-02, -7.983e-02, 5.642e-02, 1.376e-02), r);\n\tr = MulAdd(s2_8, M4(-6.405e-02, 1.463e-03, -4.239e-02, -2.958e-03, -3.957e-02, -2.787e-02, -1.185e-01, 8.049e-02, 5.641e-02, -7.839e-02, -1.478e-02, 5.297e-02, -1.052e-01, -2.614e-02, 3.366e-02, -2.113e-02), r);\n\tr = MulAdd(s3_0, M4(1.090e-01, 9.970e-02, 4.323e-02, -8.377e-02, 1.532e-01, -3.260e-02, -9.920e-03, -8.339e-03, 2.015e-02, -2.037e-02, -5.245e-02, 7.484e-02, 2.756e-02, 1.694e-02, 9.995e-02, -1.103e-01), r);\n\tr = MulAdd(s3_1, M4(-1.893e-01, 7.219e-02, -2.182e-01, -1.209e-01, -5.359e-02, 2.129e-02, -1.369e-02, 4.418e-03, -6.035e-02, -5.682e-02, 4.640e-02, 6.798e-02, 6.897e-02, -9.109e-02, -2.157e-02, -3.555e-02), r);\n\tr = MulAdd(s3_2, M4(4.793e-02, -1.105e-01, -5.833e-02, 3.987e-02, -4.859e-03, 1.350e-02, -2.157e-02, 4.861e-02, 7.932e-03, -8.539e-02, 3.680e-03, -1.255e-01, -4.018e-02, 3.915e-04, -1.081e-01, -7.704e-02), r);\n\tr = MulAdd(s3_3, M4(-1.794e-02, -8.453e-02, 4.418e-02, 8.425e-02, 4.736e-02, -2.773e-02, 3.350e-02, 3.066e-02, -8.311e-02, -7.339e-02, -6.158e-02, 4.223e-03, 1.174e-01, -1.238e-01, -1.274e-01, -3.384e-02), r);\n\tr = MulAdd(s3_4, M4(-7.496e-02, -2.420e-02, 1.306e-01, 1.313e-01, 3.237e-02, -2.935e-02, 2.360e-01, 1.410e-01, -8.003e-02, -5.377e-02, -7.184e-02, 5.397e-02, -1.046e-01, 1.099e-02, -1.025e-01, -3.341e-02), r);\n\tr = MulAdd(s3_5, M4(-6.928e-03, -1.140e-01, 4.074e-03, -1.397e-01, 7.265e-02, 8.207e-02, 1.169e-01, 9.509e-02, 5.067e-02, 7.042e-02, -4.241e-02, -7.893e-02, -1.161e-01, 1.654e-01, -1.081e-01, 4.884e-02), r);\n\tr = MulAdd(s3_6, M4(1.366e-01, 3.662e-02, 2.739e-02, 1.724e-02, 3.352e-02, -8.119e-02, 4.512e-02, -6.095e-02, 3.507e-02, -2.561e-03, 1.192e-02, 2.593e-02, 2.648e-02, -2.577e-04, -6.683e-02, -1.309e-01), r);\n\tr = MulAdd(s3_7, M4(1.421e-01, 5.626e-02, 4.526e-02, -5.287e-02, 1.482e-02, -3.645e-03, 4.018e-02, -1.501e-02, -9.036e-03, 6.154e-02, 3.938e-02, 6.123e-02, 9.404e-02, -3.154e-02, 2.484e-02, -8.405e-02), r);\n\tr = MulAdd(s3_8, M4(1.375e-01, 5.461e-02, -1.043e-01, 2.440e-02, 5.996e-02, 5.291e-02, 5.187e-03, 2.591e-02, 3.009e-02, -3.233e-02, -5.586e-02, 2.986e-02, -4.387e-02, 4.745e-02, -8.559e-02, -2.285e-02), r);\n\tr = MulAdd(s4_0, M4(-1.211e-01, 1.178e-02, -1.310e-01, -1.610e-01, 6.647e-02, 9.235e-02, 1.913e-02, -4.300e-02, -7.907e-02, -1.415e-02, 2.711e-02, 2.482e-01, -2.717e-02, 2.984e-02, 1.237e-02, 6.918e-02), r);\n\tr = MulAdd(s4_1, M4(-5.608e-02, 1.109e-01, 9.857e-03, -1.931e-01, 3.601e-02, -1.316e-01, 2.161e-01, 1.744e-01, -1.295e-01, -4.955e-02, -1.476e-02, 8.352e-02, 8.242e-03, -1.597e-01, -2.525e-01, 3.094e-02), r);\n\tr = MulAdd(s4_2, M4(-5.709e-02, 4.297e-02, -6.204e-03, -1.451e-01, 1.232e-01, 4.680e-02, -7.479e-02, 1.103e-01, 4.190e-02, -4.362e-04, 1.231e-01, -7.856e-02, -4.570e-02, 1.372e-01, -8.977e-02, -6.952e-03), r);\n\tr = MulAdd(s4_3, M4(-6.566e-02, 7.624e-02, -8.168e-02, 3.406e-02, -3.176e-02, 3.998e-02, -6.471e-02, -5.760e-02, -5.961e-02, 1.382e-01, 6.583e-03, -1.000e-01, -1.831e-01, -1.154e-01, -1.380e-01, -6.434e-02), r);\n\tr = MulAdd(s4_4, M4(6.403e-02, -2.450e-01, 2.792e-01, 7.430e-02, 1.759e-01, -1.725e-01, -1.845e-02, 3.502e-02, -3.869e-01, -3.381e-02, -4.831e-02, 1.339e-01, -1.262e-01, 1.916e-01, -2.321e-01, 2.760e-02), r);\n\tr = MulAdd(s4_5, M4(6.912e-02, -2.182e-01, -1.369e-02, -9.720e-02, 5.835e-02, 9.719e-02, -8.650e-03, -5.648e-02, 1.346e-01, -3.950e-02, 2.490e-02, 8.071e-02, 2.864e-01, -2.457e-01, 1.326e-01, -3.384e-02), r);\n\tr = MulAdd(s4_6, M4(-7.945e-02, -5.946e-02, -2.633e-02, -3.784e-03, 7.830e-02, 3.878e-02, -6.279e-02, 6.114e-02, -1.734e-01, -2.466e-01, -7.366e-02, 7.738e-03, 2.224e-01, -4.195e-02, 1.471e-01, 2.958e-02), r);\n\tr = MulAdd(s4_7, M4(-3.012e-02, -4.977e-02, 2.020e-02, -1.498e-02, 5.735e-03, -1.735e-02, -1.485e-01, -1.320e-01, -3.990e-03, 3.615e-02, -4.818e-02, 1.846e-01, 2.854e-02, 4.293e-02, -8.675e-02, 9.421e-02), r);\n\tr = MulAdd(s4_8, M4(1.392e-02, 7.286e-02, 1.063e-01, 9.212e-02, 4.501e-02, 1.268e-01, -5.199e-02, 1.414e-01, 7.748e-02, 1.673e-01, 1.055e-01, 4.698e-02, 9.681e-02, 1.470e-02, -1.188e-02, 2.931e-02), r);\n\tr = MulAdd(s5_0, M4(-2.778e-02, 7.259e-03, -1.944e-02, -8.716e-02, 7.302e-02, -1.512e-02, 1.064e-01, -1.628e-02, 1.714e-02, -1.652e-02, -6.626e-02, 9.806e-03, 7.275e-02, 2.299e-02, -1.215e-02, 5.639e-02), r);\n\tr = MulAdd(s5_1, M4(-1.405e-02, 6.730e-02, 4.423e-03, -1.781e-02, -5.842e-02, -5.191e-02, 8.031e-02, 1.321e-01, 9.880e-02, -8.154e-02, 1.329e-01, 8.414e-02, 2.984e-02, -8.208e-02, -2.121e-01, 3.640e-02), r);\n\tr = MulAdd(s5_2, M4(4.550e-02, -5.010e-02, 9.170e-02, -9.450e-02, 3.401e-02, -2.799e-03, -3.152e-02, 9.824e-02, 2.436e-02, -2.393e-02, -2.029e-02, 6.419e-02, 4.413e-02, -2.446e-03, -2.047e-02, 1.147e-01), r);\n\tr = MulAdd(s5_3, M4(-2.840e-02, -7.165e-02, 7.020e-02, -8.385e-02, 5.416e-02, 3.992e-02, 1.816e-02, 7.835e-02, -1.086e-01, -1.053e-02, -1.199e-01, -4.429e-02, 5.368e-02, 9.435e-02, 5.670e-02, 3.818e-02), r);\n\tr = MulAdd(s5_4, M4(1.626e-02, -8.816e-02, -4.112e-02, 3.632e-02, 7.316e-02, 6.900e-02, -1.175e-02, 9.253e-02, -1.146e-02, -3.119e-02, 1.160e-01, 8.238e-02, -4.943e-02, 1.098e-01, 8.908e-05, 1.880e-01), r);\n\tr = MulAdd(s5_5, M4(5.537e-02, -1.917e-01, 7.857e-03, -3.432e-02, 1.487e-01, 4.405e-02, -1.281e-02, -5.382e-02, -4.463e-02, -7.680e-02, 4.381e-02, 9.402e-02, -5.056e-03, 1.299e-01, 1.167e-01, 3.922e-02), r);\n\tr = MulAdd(s5_6, M4(7.272e-02, -1.016e-01, 7.230e-02, -6.521e-03, 3.164e-02, -8.305e-04, -1.127e-01, 4.924e-03, -1.151e-01, 8.617e-04, -2.434e-02, -4.304e-02, -5.518e-03, 1.628e-02, 8.518e-02, -2.193e-02), r);\n\tr = MulAdd(s5_7, M4(5.172e-02, -4.530e-02, -9.674e-03, 5.678e-02, 2.628e-02, -2.106e-02, -7.339e-02, 2.674e-02, -1.353e-01, -6.893e-02, -4.627e-03, 9.704e-02, 3.844e-02, -1.789e-02, 6.056e-02, 7.471e-02), r);\n\tr = MulAdd(s5_8, M4(1.141e-01, 2.858e-02, 1.699e-02, 5.123e-02, 5.192e-02, 7.121e-02, -7.796e-03, 3.388e-02, -3.085e-02, -6.441e-02, 4.687e-02, 8.458e-02, 4.593e-02, 5.097e-02, -4.951e-02, 1.479e-02), r);\n\tr = MulAdd(s6_0, M4(1.509e-01, -2.423e-01, -1.645e-01, -1.774e-01, -4.401e-02, 4.057e-02, -4.384e-02, 5.572e-02, 1.538e-01, 2.158e-02, 1.057e-01, 3.614e-03, -1.312e-01, 1.864e-02, -2.287e-02, -1.765e-02), r);\n\tr = MulAdd(s6_1, M4(-9.463e-02, -2.675e-02, -2.744e-01, 3.083e-02, 4.534e-02, 1.117e-01, 5.833e-02, 1.769e-01, -2.594e-02, 1.808e-01, 4.166e-02, -2.937e-01, 5.296e-02, -1.342e-01, -1.411e-01, -7.903e-04), r);\n\tr = MulAdd(s6_2, M4(1.083e-02, -1.455e-01, 7.690e-02, -8.471e-02, -5.061e-02, -3.029e-02, -1.210e-01, -2.602e-02, 6.333e-03, 1.336e-01, 5.051e-02, 1.871e-01, -6.528e-02, -9.885e-03, -1.005e-01, 4.859e-02), r);\n\tr = MulAdd(s6_3, M4(1.362e-01, 1.818e-01, -1.686e-01, -5.426e-02, 2.551e-02, -1.676e-01, 5.143e-02, 1.961e-01, 8.181e-02, 1.676e-02, 2.382e-02, 7.826e-02, -8.471e-02, 1.614e-02, -7.251e-02, -1.279e-01), r);\n\tr = MulAdd(s6_4, M4(-1.480e-01, -9.214e-02, -2.628e-01, -1.936e-01, 4.964e-03, -1.214e-01, 3.683e-02, -2.254e-02, -6.095e-02, -6.845e-02, -9.225e-02, -1.052e-01, -5.893e-02, 1.209e-01, -1.291e-01, -2.439e-01), r);\n\tr = MulAdd(s6_5, M4(3.835e-03, -6.351e-02, -9.311e-02, -7.334e-03, -1.209e-01, 5.373e-02, -1.767e-01, 4.527e-02, 3.871e-02, -4.796e-02, 9.536e-02, -4.771e-02, -4.192e-02, 1.118e-01, -1.233e-01, 1.245e-01), r);\n\tr = MulAdd(s6_6, M4(1.432e-01, 3.526e-02, -8.615e-03, -5.596e-03, -8.724e-02, -1.202e-05, 1.354e-01, 1.440e-02, 1.297e-01, 3.398e-02, 2.254e-02, 8.219e-03, -1.078e-01, -8.905e-02, -7.674e-02, -9.887e-02), r);\n\tr = MulAdd(s6_7, M4(4.810e-03, -3.622e-02, 1.863e-03, 6.525e-03, -9.613e-02, 5.216e-02, -1.495e-01, 4.366e-02, 2.703e-02, -6.686e-02, -1.057e-01, -5.789e-02, -5.245e-02, -4.184e-02, 4.506e-02, -8.658e-02), r);\n\tr = MulAdd(s6_8, M4(8.041e-02, 3.344e-02, -1.428e-01, -7.399e-03, -3.671e-02, -4.430e-02, 4.760e-02, 5.942e-02, 9.507e-02, -9.050e-02, 5.261e-02, 1.832e-02, 3.325e-02, 4.292e-02, -3.349e-02, 7.272e-02), r);\n\tr = MulAdd(s7_0, M4(4.832e-02, -4.859e-02, 9.221e-02, 6.436e-02, 1.284e-01, 7.635e-03, -4.190e-02, -3.847e-02, -6.610e-03, 7.178e-03, 4.257e-02, -3.234e-02, 1.537e-01, -7.209e-02, -2.415e-02, 1.619e-02), r);\n\tr = MulAdd(s7_1, M4(4.043e-02, -7.037e-02, 2.596e-02, 5.261e-02, 1.106e-03, 5.223e-02, -6.416e-04, -4.329e-02, -4.023e-02, 2.219e-02, 1.111e-01, 6.614e-03, 2.460e-01, -2.125e-01, -1.595e-01, 4.183e-01), r);\n\tr = MulAdd(s7_2, M4(-1.914e-02, -7.829e-02, -1.925e-02, 4.404e-02, 5.143e-02, 6.391e-03, 6.923e-02, -1.394e-01, -7.542e-02, -3.202e-02, -9.787e-02, -1.178e-02, 3.474e-01, 9.006e-02, 4.054e-02, 1.489e-01), r);\n\tr = MulAdd(s7_3, M4(8.782e-02, 4.702e-02, 9.328e-03, -6.809e-02, 5.176e-02, -8.772e-02, 3.221e-02, -2.936e-02, 1.601e-02, 5.282e-02, 4.535e-02, 1.194e-01, -1.057e-01, -1.289e-01, -8.726e-02, 4.259e-02), r);\n\tr = MulAdd(s7_4, M4(-8.521e-02, 1.477e-02, -3.481e-02, -5.570e-03, 1.721e-02, -6.721e-02, -2.596e-02, 1.141e-01, -9.061e-02, 5.655e-02, 4.107e-02, 4.639e-02, -8.228e-02, 3.297e-01, -1.414e-01, -7.709e-02), r);\n\tr = MulAdd(s7_5, M4(-4.180e-02, 6.089e-02, -3.896e-02, 2.700e-02, 2.710e-02, 4.737e-02, 5.740e-03, -8.129e-02, -1.322e-01, 6.664e-02, 1.096e-01, 1.229e-01, -2.098e-02, -4.566e-03, -1.994e-01, 1.441e-01), r);\n\tr = MulAdd(s7_6, M4(4.268e-02, -5.790e-02, -1.169e-02, -4.623e-02, -9.484e-02, -1.706e-02, -3.299e-02, 5.764e-02, 6.127e-02, -1.248e-01, -1.142e-01, -8.612e-02, -3.881e-02, -1.761e-01, -7.335e-04, -1.433e-01), r);\n\tr = MulAdd(s7_7, M4(-8.534e-02, -1.768e-02, 1.435e-01, -3.567e-02, 9.773e-03, 1.343e-01, -1.104e-02, -5.990e-02, -2.977e-02, -7.796e-02, 3.464e-02, 3.066e-02, -1.320e-01, 8.156e-02, -2.225e-01, -1.418e-01), r);\n\tr = MulAdd(s7_8, M4(-7.379e-02, 1.992e-02, -8.426e-02, 2.140e-02, 9.552e-02, 2.910e-02, -4.536e-03, 2.327e-02, -4.916e-02, -2.219e-02, -8.136e-02, 5.215e-02, 2.548e-01, 3.631e-02, -7.345e-02, -4.995e-02), r);\n\treturn r;\n}\n\nvoid Pass10(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 11\n//!DESC conv10\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 8.022e-02, 3.824e-02, -1.685e-02, 7.276e-03 };\n\tr = MulAdd(s0_0, M4(-7.443e-02, -2.491e-02, 5.251e-03, 2.278e-03, 7.358e-03, 3.232e-02, 6.993e-04, 8.365e-02, 1.406e-01, -1.463e-02, -4.391e-02, -5.550e-02, -8.043e-02, -2.190e-02, 5.767e-03, 1.002e-01), r);\n\tr = MulAdd(s0_1, M4(-9.990e-03, 3.600e-02, 1.256e-01, 8.596e-02, -3.771e-02, 3.026e-02, -8.820e-02, -1.091e-01, -7.490e-02, -3.519e-02, -1.456e-01, 1.001e-01, -6.054e-02, 1.960e-02, 1.759e-02, -8.544e-02), r);\n\tr = MulAdd(s0_2, M4(1.548e-02, -6.636e-02, 7.641e-02, -6.122e-02, -7.148e-02, -6.168e-02, -1.443e-01, 2.369e-02, -2.372e-03, 1.086e-01, -4.066e-02, 3.865e-02, -5.652e-02, -1.638e-02, -3.904e-02, 9.811e-03), r);\n\tr = MulAdd(s0_3, M4(7.849e-02, -3.489e-02, -5.032e-02, 2.365e-02, -1.519e-01, 2.447e-02, 9.641e-02, -6.077e-02, 7.374e-02, 1.298e-01, 3.015e-02, 6.463e-02, -7.396e-02, -7.937e-02, -3.670e-02, 1.363e-01), r);\n\tr = MulAdd(s0_4, M4(1.697e-01, -6.906e-02, 7.260e-02, 1.256e-01, -2.378e-01, -1.406e-01, -2.639e-01, 4.905e-02, -5.264e-02, -1.421e-01, 1.012e-02, 1.198e-01, -3.589e-02, 8.241e-02, 1.130e-02, -5.852e-02), r);\n\tr = MulAdd(s0_5, M4(2.248e-01, -2.462e-01, -5.329e-02, 1.711e-02, -2.105e-01, -8.250e-02, -4.665e-02, 8.654e-02, 9.518e-02, 1.235e-01, 6.224e-02, -4.567e-02, -8.524e-02, -5.822e-02, 6.281e-02, 1.470e-01), r);\n\tr = MulAdd(s0_6, M4(-7.451e-02, 1.371e-01, 1.032e-02, -5.772e-02, -1.636e-01, -1.318e-01, -8.817e-02, -8.507e-02, 6.603e-02, 1.297e-02, -4.173e-02, 1.295e-01, -6.974e-02, 4.060e-02, 5.109e-02, 1.011e-01), r);\n\tr = MulAdd(s0_7, M4(-1.447e-01, 4.492e-02, 4.542e-02, -1.319e-01, -1.156e-01, -3.776e-02, -2.669e-02, -1.197e-01, -6.502e-02, 4.076e-02, 1.353e-02, -1.404e-01, -9.392e-02, 3.072e-02, -9.582e-02, -2.347e-01), r);\n\tr = MulAdd(s0_8, M4(4.432e-02, -3.884e-02, 1.475e-01, -8.128e-02, 8.425e-02, -1.151e-01, 3.016e-02, 1.669e-02, 7.371e-02, 9.169e-02, -2.322e-02, 5.721e-02, -1.104e-01, 7.700e-03, -6.599e-02, -9.597e-02), r);\n\tr = MulAdd(s1_0, M4(-4.455e-02, -1.914e-01, 1.410e-01, 8.961e-03, -4.278e-02, -3.920e-02, 1.085e-02, 4.053e-02, 4.494e-02, -1.222e-01, 3.310e-02, -9.746e-02, -4.951e-02, 2.743e-02, -2.652e-03, -1.583e-01), r);\n\tr = MulAdd(s1_1, M4(4.930e-02, 1.019e-01, 4.969e-02, -8.982e-02, 7.666e-02, 7.991e-03, 6.734e-02, -6.309e-02, -1.391e-01, -1.741e-01, -1.507e-01, 2.061e-02, -1.027e-01, 9.436e-02, -2.202e-02, 6.426e-02), r);\n\tr = MulAdd(s1_2, M4(-8.979e-02, -1.902e-01, 9.320e-02, 9.425e-02, 6.001e-03, 1.530e-02, -4.575e-02, -5.501e-03, -1.559e-01, -2.938e-02, 3.153e-02, -2.076e-02, -2.337e-02, -1.082e-01, -1.046e-01, -2.440e-01), r);\n\tr = MulAdd(s1_3, M4(-1.011e-01, -6.263e-02, -8.168e-02, 1.249e-04, 3.329e-02, 6.307e-03, 7.876e-03, -3.334e-02, -1.334e-01, 4.970e-02, 1.646e-01, 1.806e-04, 2.558e-01, 3.352e-02, -7.658e-02, -4.535e-02), r);\n\tr = MulAdd(s1_4, M4(1.211e-02, 1.877e-01, 7.255e-02, 9.566e-02, -5.844e-02, -1.944e-01, -1.337e-01, -8.781e-03, -1.953e-01, -3.020e-01, -2.492e-02, -1.460e-01, -7.804e-02, 1.704e-01, -1.269e-01, -2.229e-01), r);\n\tr = MulAdd(s1_5, M4(-7.728e-03, 1.592e-01, -1.386e-01, 2.610e-02, 9.133e-02, 1.079e-01, -7.939e-02, -2.377e-02, -8.809e-02, 5.482e-02, 1.655e-01, -1.374e-01, 8.858e-02, -1.962e-01, 5.542e-03, -1.841e-01), r);\n\tr = MulAdd(s1_6, M4(8.820e-02, 1.275e-01, 2.735e-02, -1.304e-01, 1.287e-03, -3.758e-02, -5.923e-02, -1.295e-02, -1.429e-01, -1.411e-01, 1.145e-03, 6.254e-02, -5.481e-02, -9.508e-03, -1.431e-01, -5.138e-02), r);\n\tr = MulAdd(s1_7, M4(1.947e-02, 9.372e-02, 2.449e-01, -1.107e-01, 3.266e-02, -1.639e-02, 1.476e-01, -5.366e-02, -2.258e-01, -1.325e-01, 1.323e-01, -2.162e-02, 1.078e-02, 2.901e-01, -1.970e-01, 7.560e-02), r);\n\tr = MulAdd(s1_8, M4(-5.304e-02, 5.358e-02, 5.178e-02, -7.842e-02, 2.189e-01, 2.961e-02, 3.601e-02, -7.544e-02, -7.790e-02, -3.727e-02, 4.402e-02, 9.522e-02, 3.025e-02, -4.522e-02, -2.606e-02, -1.037e-01), r);\n\tr = MulAdd(s2_0, M4(-1.154e-02, 1.779e-02, 2.786e-02, 4.385e-02, -1.039e-01, -1.154e-01, 1.159e-03, -6.035e-02, -8.846e-02, 2.845e-01, -1.438e-01, -1.155e-01, -4.495e-03, 1.542e-03, -1.795e-02, -7.339e-02), r);\n\tr = MulAdd(s2_1, M4(-5.627e-02, -8.331e-04, 7.773e-02, 6.266e-02, 8.456e-03, 3.525e-02, -8.042e-02, 1.025e-01, -1.650e-01, 1.121e-01, -5.114e-02, -8.998e-02, -9.728e-03, 1.164e-01, 2.115e-02, -1.314e-01), r);\n\tr = MulAdd(s2_2, M4(8.318e-02, 4.123e-02, 5.981e-02, 5.632e-02, -1.790e-01, -7.988e-02, -2.205e-02, 2.235e-03, -1.223e-01, 1.745e-01, 9.004e-02, 1.518e-01, 2.596e-02, 6.662e-03, -1.266e-02, -6.990e-02), r);\n\tr = MulAdd(s2_3, M4(-3.095e-02, -2.132e-02, -7.726e-02, -1.791e-01, -8.083e-02, 4.191e-02, -1.401e-01, -1.086e-01, 6.522e-02, -1.365e-01, 2.249e-03, -7.607e-03, 6.612e-02, -5.534e-02, -9.837e-03, 8.180e-02), r);\n\tr = MulAdd(s2_4, M4(-1.416e-01, -1.603e-02, 1.606e-01, -8.351e-02, -5.110e-02, -7.777e-02, -1.040e-01, -4.049e-02, 2.306e-01, 1.093e-01, 2.252e-01, -2.493e-01, -8.255e-03, -3.764e-02, -1.309e-01, -2.717e-01), r);\n\tr = MulAdd(s2_5, M4(1.661e-02, 4.872e-02, 4.107e-03, -4.751e-03, -2.718e-01, -2.163e-01, -1.021e-01, -8.131e-02, -4.775e-02, -1.105e-01, -2.879e-01, -6.566e-02, 1.796e-02, -1.296e-01, 5.435e-02, -1.363e-01), r);\n\tr = MulAdd(s2_6, M4(-9.353e-03, -1.422e-01, 1.012e-01, 8.128e-02, -7.881e-02, 1.535e-02, 2.834e-02, -1.763e-02, -9.610e-02, -6.383e-02, 2.115e-01, -8.985e-02, -7.448e-02, -1.822e-02, -3.225e-02, -1.333e-01), r);\n\tr = MulAdd(s2_7, M4(-2.725e-02, 6.905e-02, -3.076e-02, -4.011e-02, 1.015e-02, 3.368e-02, -2.343e-02, -8.495e-02, -3.992e-03, 1.671e-03, -1.227e-01, 8.509e-02, 2.870e-02, 1.598e-01, -8.185e-02, -3.310e-01), r);\n\tr = MulAdd(s2_8, M4(2.471e-01, -4.800e-02, -1.871e-02, -1.288e-01, -1.883e-01, -1.221e-02, -1.073e-01, -3.823e-02, -2.284e-01, -6.102e-02, -2.213e-01, 9.720e-02, -2.910e-02, 1.480e-01, 1.344e-01, -1.623e-01), r);\n\tr = MulAdd(s3_0, M4(-6.625e-02, -1.278e-01, 9.770e-03, 5.171e-03, 6.653e-02, -1.805e-02, 2.589e-02, -1.813e-02, 3.330e-02, 3.777e-02, -1.823e-02, 2.923e-02, -1.319e-02, -3.354e-02, 1.742e-02, 5.094e-02), r);\n\tr = MulAdd(s3_1, M4(-1.434e-02, 1.097e-01, 6.345e-02, -2.408e-02, 1.177e-02, 3.874e-02, -3.680e-02, 9.753e-02, 5.189e-02, -8.722e-03, -2.205e-02, 4.765e-02, -2.195e-02, 8.370e-02, 9.772e-03, -5.094e-02), r);\n\tr = MulAdd(s3_2, M4(-1.681e-03, -9.392e-02, 2.710e-02, -2.582e-02, -7.773e-02, 3.851e-03, -8.569e-03, -1.003e-01, 1.439e-01, 1.497e-01, 1.401e-01, 1.280e-01, 2.289e-02, 2.038e-02, 1.827e-03, 1.431e-01), r);\n\tr = MulAdd(s3_3, M4(-7.496e-02, -7.651e-02, -3.282e-02, 5.612e-02, 7.913e-02, 9.839e-02, 1.302e-01, -1.087e-02, -5.945e-03, -3.930e-02, 7.875e-02, 1.072e-01, -9.937e-02, -6.158e-02, 1.335e-03, 8.555e-02), r);\n\tr = MulAdd(s3_4, M4(4.512e-03, 1.190e-01, 1.447e-01, -2.056e-01, -2.066e-02, -1.238e-01, 7.966e-02, 3.101e-02, -8.977e-02, 5.626e-02, -1.133e-02, 4.758e-02, -1.055e-01, 6.230e-02, 2.705e-02, 6.279e-02), r);\n\tr = MulAdd(s3_5, M4(1.472e-01, 1.695e-02, 1.212e-02, 5.352e-02, 4.469e-02, 1.318e-01, 6.005e-02, 4.229e-02, 9.179e-02, 3.110e-02, 8.078e-02, -1.048e-01, 3.237e-02, -9.219e-02, 5.152e-03, 4.264e-02), r);\n\tr = MulAdd(s3_6, M4(1.300e-02, -1.061e-01, 7.375e-02, 3.379e-02, -9.305e-03, -2.850e-02, 1.233e-02, -5.745e-02, 4.290e-02, -2.740e-02, 1.314e-01, -4.919e-02, -8.486e-02, -1.148e-01, 4.299e-04, 2.414e-02), r);\n\tr = MulAdd(s3_7, M4(8.039e-02, 1.853e-01, 4.320e-02, -7.451e-02, 3.218e-02, -3.793e-02, 2.989e-02, 1.206e-01, -6.504e-02, 4.453e-02, 6.640e-02, -4.566e-02, -8.682e-02, -6.757e-02, -4.119e-02, -5.214e-02), r);\n\tr = MulAdd(s3_8, M4(1.294e-01, 1.236e-02, -3.015e-03, -1.850e-02, 1.132e-01, 8.811e-02, 4.899e-02, -1.517e-02, 1.160e-01, 1.911e-02, -1.769e-03, 1.473e-02, 1.039e-01, 2.801e-02, 4.685e-02, 1.242e-01), r);\n\tr = MulAdd(s4_0, M4(7.631e-02, -4.578e-02, -3.046e-02, -4.457e-02, 5.473e-02, -7.389e-02, -1.755e-04, 4.127e-02, -1.170e-01, -2.983e-02, -7.294e-02, 5.359e-02, 2.324e-02, -1.268e-01, -1.275e-02, 5.312e-02), r);\n\tr = MulAdd(s4_1, M4(-4.916e-02, -1.148e-01, 6.671e-02, 1.366e-01, 1.663e-02, 7.092e-02, -3.335e-02, 7.167e-02, 6.764e-02, -1.304e-01, 9.522e-02, 4.013e-02, 2.975e-03, -1.921e-02, -3.123e-03, 6.587e-02), r);\n\tr = MulAdd(s4_2, M4(3.974e-02, 2.701e-02, 1.490e-01, -4.959e-02, 1.142e-02, -1.092e-02, -2.233e-02, 1.269e-02, -1.083e-01, -1.432e-01, -2.230e-02, -7.123e-03, -3.790e-02, 9.273e-02, 4.352e-02, 1.492e-01), r);\n\tr = MulAdd(s4_3, M4(1.076e-01, 8.338e-02, 1.369e-01, 1.978e-01, -1.222e-01, -6.275e-02, -9.606e-03, -1.044e-02, 3.965e-02, -8.872e-02, -8.133e-02, 5.930e-02, 1.145e-01, -3.811e-02, 2.754e-02, -8.336e-03), r);\n\tr = MulAdd(s4_4, M4(-9.006e-02, -4.032e-03, 2.766e-02, 3.885e-02, -1.054e-01, -8.623e-02, -4.689e-02, 1.125e-01, 4.194e-02, 1.574e-01, 5.132e-02, 2.440e-01, 6.018e-02, 1.935e-01, 2.242e-02, 3.120e-02), r);\n\tr = MulAdd(s4_5, M4(2.035e-01, 1.040e-01, 3.855e-02, -1.105e-01, -7.236e-02, 1.349e-01, 3.039e-02, 3.597e-02, 9.036e-02, -1.388e-01, 1.510e-02, 2.250e-02, 8.773e-02, -3.393e-02, -5.885e-02, -1.410e-01), r);\n\tr = MulAdd(s4_6, M4(-1.548e-02, 8.332e-02, 4.180e-02, -1.206e-01, -8.834e-02, -1.059e-02, -5.289e-02, -1.763e-02, -1.925e-01, -4.318e-03, -1.554e-02, -1.647e-01, 6.316e-02, 1.847e-02, 1.278e-01, -1.416e-01), r);\n\tr = MulAdd(s4_7, M4(-1.227e-02, -1.627e-01, -4.217e-02, 7.992e-02, -6.900e-02, -6.248e-02, -9.509e-02, -8.385e-02, -4.068e-02, 2.836e-02, 3.756e-02, -7.659e-03, -4.632e-02, 7.643e-02, 1.584e-01, -1.997e-01), r);\n\tr = MulAdd(s4_8, M4(1.493e-01, 1.310e-01, 1.165e-01, -6.345e-03, 4.877e-02, -1.047e-01, -2.436e-02, -9.326e-02, 3.606e-02, -4.826e-02, -6.154e-02, -8.805e-02, 6.623e-02, 2.476e-02, -3.313e-02, 1.438e-02), r);\n\tr = MulAdd(s5_0, M4(4.002e-02, -4.604e-02, 1.079e-02, -2.595e-02, -1.511e-02, 1.383e-02, -6.206e-03, 1.663e-01, 2.442e-03, 7.468e-02, -1.914e-02, -5.290e-02, 6.660e-03, -4.580e-02, 4.426e-02, 9.765e-02), r);\n\tr = MulAdd(s5_1, M4(2.268e-02, 3.311e-03, -5.642e-02, 5.526e-02, -4.185e-02, 2.070e-01, -4.005e-02, 5.109e-03, 1.991e-01, -1.220e-01, -3.855e-03, -6.648e-02, 4.016e-02, 5.523e-02, 5.913e-02, 2.709e-02), r);\n\tr = MulAdd(s5_2, M4(5.045e-02, -1.075e-01, 5.775e-02, 2.553e-02, 2.226e-01, -2.762e-02, 5.378e-02, 2.212e-01, -6.276e-02, -1.003e-01, -9.307e-02, 1.153e-01, 1.548e-01, -2.839e-02, 2.308e-02, -4.647e-02), r);\n\tr = MulAdd(s5_3, M4(4.041e-02, -2.040e-02, 5.813e-02, 7.076e-02, 1.038e-01, 2.165e-02, 2.669e-02, 9.714e-02, 6.983e-02, 4.840e-02, 2.288e-02, 1.349e-01, -3.476e-03, -1.698e-01, -3.940e-02, 9.288e-02), r);\n\tr = MulAdd(s5_4, M4(-1.457e-02, -8.850e-04, 1.924e-01, -8.157e-02, 2.653e-01, 5.694e-02, 2.479e-02, -9.264e-02, 4.335e-02, -2.322e-02, 1.174e-01, 1.562e-01, -1.132e-02, 3.073e-02, -7.017e-02, -7.108e-02), r);\n\tr = MulAdd(s5_5, M4(4.294e-02, -9.940e-02, 6.106e-02, 7.317e-02, -2.000e-02, 3.526e-01, 5.818e-02, 9.275e-02, -4.098e-02, 5.951e-02, -5.892e-02, -8.403e-02, -3.986e-02, 1.269e-02, -6.863e-02, 9.262e-03), r);\n\tr = MulAdd(s5_6, M4(-1.937e-02, 1.004e-01, 1.476e-01, -3.112e-02, 9.642e-02, 7.890e-02, 7.655e-02, -1.539e-02, 7.540e-02, -7.181e-02, 9.812e-02, -1.215e-01, -7.593e-02, 5.633e-02, -2.945e-02, 1.604e-02), r);\n\tr = MulAdd(s5_7, M4(-1.254e-01, 1.085e-01, 1.342e-01, 7.889e-02, 1.345e-01, 4.788e-02, 8.275e-02, -1.645e-01, 1.020e-01, 4.708e-02, -4.581e-02, -5.674e-02, -2.400e-02, -2.977e-02, 1.032e-01, -3.530e-02), r);\n\tr = MulAdd(s5_8, M4(6.052e-03, -1.642e-03, 8.608e-02, -1.069e-02, 3.222e-01, 1.826e-01, 1.620e-01, 1.563e-01, -7.066e-02, 3.619e-02, 6.661e-02, 2.880e-02, 2.164e-02, -3.399e-02, 4.539e-02, 6.845e-02), r);\n\tr = MulAdd(s6_0, M4(-3.648e-02, -2.017e-01, 1.000e-01, 1.529e-01, 7.845e-02, -6.088e-02, 1.111e-01, -3.186e-02, 7.117e-02, 7.150e-02, 7.475e-02, 3.168e-02, 9.885e-02, -6.205e-02, 1.774e-02, 2.101e-02), r);\n\tr = MulAdd(s6_1, M4(6.775e-02, 1.105e-01, -3.794e-02, -4.679e-02, -9.210e-04, 2.132e-02, 4.863e-02, 1.474e-01, -4.066e-02, 8.994e-03, 4.689e-03, 3.249e-02, 6.345e-02, 1.142e-01, 5.827e-03, 2.765e-02), r);\n\tr = MulAdd(s6_2, M4(-2.740e-02, -3.172e-02, 2.257e-02, 1.599e-01, 1.841e-01, 8.856e-03, 9.857e-02, -8.046e-02, -5.979e-03, -7.011e-02, 8.870e-02, -6.540e-02, -3.557e-02, -5.823e-02, 3.080e-02, 2.604e-02), r);\n\tr = MulAdd(s6_3, M4(2.035e-01, 1.193e-01, -2.087e-01, -2.412e-02, 6.845e-02, 8.483e-03, -4.780e-02, -1.101e-02, -1.232e-01, 3.333e-02, 1.352e-01, -8.236e-02, -9.331e-02, 7.760e-02, 8.397e-02, 8.919e-02), r);\n\tr = MulAdd(s6_4, M4(1.049e-03, 9.564e-02, -1.644e-01, 2.448e-02, 6.858e-02, -1.599e-01, 1.023e-02, 1.491e-01, -2.848e-01, -1.326e-01, 1.483e-01, -1.295e-01, -2.292e-01, 8.333e-02, 5.031e-02, -3.056e-02), r);\n\tr = MulAdd(s6_5, M4(-8.747e-02, 6.372e-02, 3.113e-02, -1.207e-01, -3.647e-02, 9.549e-02, 2.753e-03, -1.689e-01, 1.110e-01, -1.858e-01, 5.344e-02, 3.468e-02, -1.239e-01, 2.882e-02, -1.640e-01, -1.889e-02), r);\n\tr = MulAdd(s6_6, M4(7.600e-02, 2.307e-02, -1.154e-01, -4.341e-02, -5.626e-02, 1.161e-01, 9.799e-02, -1.271e-02, -1.660e-01, -8.406e-02, -2.498e-02, 6.879e-02, -1.858e-01, 6.289e-02, -5.796e-03, 7.048e-02), r);\n\tr = MulAdd(s6_7, M4(1.530e-02, -2.446e-03, -5.280e-02, -2.562e-02, -2.290e-01, -5.978e-02, 1.380e-02, 7.379e-02, -2.215e-01, 4.228e-02, -9.744e-03, 5.206e-03, 2.473e-03, -2.494e-01, -5.735e-02, -3.795e-02), r);\n\tr = MulAdd(s6_8, M4(4.346e-02, -6.795e-02, -7.263e-02, 9.408e-03, 1.760e-03, -5.968e-02, 7.807e-02, -5.669e-03, -8.536e-02, -3.529e-02, -1.235e-01, 8.264e-02, -2.686e-02, 6.961e-02, -7.985e-02, -2.726e-02), r);\n\tr = MulAdd(s7_0, M4(-1.965e-02, -1.024e-01, 2.780e-02, 4.523e-02, 5.808e-02, -2.898e-02, -7.969e-02, -7.242e-02, 1.474e-02, 7.838e-02, -4.207e-02, 9.601e-02, 3.767e-02, -2.420e-03, -8.921e-03, -5.666e-02), r);\n\tr = MulAdd(s7_1, M4(6.580e-02, 8.650e-02, -4.842e-02, -1.011e-01, 7.914e-02, 8.096e-02, -1.058e-01, -2.214e-01, 1.170e-01, 1.292e-01, -1.103e-01, -9.182e-02, -4.913e-02, 4.079e-02, -1.382e-02, 1.543e-01), r);\n\tr = MulAdd(s7_2, M4(4.480e-02, 2.242e-02, -3.295e-02, 1.505e-02, -2.991e-02, 1.106e-01, -1.135e-01, -6.180e-02, -1.640e-01, 9.148e-02, 1.115e-02, 2.166e-02, -6.263e-03, -1.288e-02, 3.800e-02, 1.038e-02), r);\n\tr = MulAdd(s7_3, M4(-2.111e-03, 6.777e-02, 2.279e-02, 2.671e-03, 8.600e-02, -1.305e-01, -1.917e-01, 6.077e-03, -4.187e-02, -3.021e-02, 1.626e-01, 2.004e-02, 2.541e-02, -1.497e-02, 9.814e-03, -9.956e-02), r);\n\tr = MulAdd(s7_4, M4(2.606e-03, -1.421e-01, -2.209e-02, 3.440e-03, -1.119e-01, -8.762e-02, -2.179e-01, -5.119e-02, -5.721e-02, 5.455e-02, -2.261e-02, -1.807e-01, -1.014e-01, -8.314e-02, 7.701e-02, -2.304e-02), r);\n\tr = MulAdd(s7_5, M4(-1.804e-01, 3.145e-02, 7.818e-02, 2.986e-02, -7.967e-02, 2.417e-01, -1.876e-01, 9.897e-02, -6.768e-02, -8.387e-02, 6.883e-02, -1.885e-02, 1.335e-01, 1.319e-02, -4.611e-03, -1.010e-01), r);\n\tr = MulAdd(s7_6, M4(-7.514e-03, 1.403e-01, -9.496e-02, -3.883e-02, -1.375e-01, 2.459e-02, -6.966e-02, -1.159e-01, 3.025e-02, -3.703e-02, -3.195e-02, -3.322e-02, 1.218e-01, 3.971e-02, 4.001e-02, -2.509e-02), r);\n\tr = MulAdd(s7_7, M4(8.323e-03, -8.484e-02, -1.194e-01, 6.347e-02, -1.486e-01, 2.084e-02, -1.090e-01, -6.186e-04, 1.719e-02, 8.260e-02, 7.180e-02, -3.495e-02, -1.865e-01, -1.264e-01, -2.023e-01, 1.941e-01), r);\n\tr = MulAdd(s7_8, M4(-2.118e-02, -1.962e-02, -1.044e-02, -7.627e-02, -1.039e-01, -1.081e-01, -5.646e-03, -4.796e-02, -1.246e-01, -4.691e-02, -2.350e-02, -2.893e-02, -3.219e-02, 8.975e-02, -8.877e-02, 8.794e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 4.014e-02, -9.109e-03, -2.919e-02, -6.429e-03 };\n\tr = MulAdd(s0_0, M4(-6.531e-02, 8.363e-02, -2.453e-02, -1.133e-01, -3.351e-02, 8.886e-02, -1.069e-02, -2.856e-02, 5.394e-02, 1.066e-02, 3.697e-02, -6.636e-02, 4.380e-02, -1.576e-01, 6.195e-02, 3.535e-02), r);\n\tr = MulAdd(s0_1, M4(-2.962e-02, -4.826e-02, 9.580e-02, 1.516e-02, 3.193e-02, 2.322e-01, -1.121e-01, -9.229e-02, 8.198e-02, -4.713e-02, 4.354e-02, -3.634e-02, 5.267e-02, 1.190e-02, 1.165e-01, 4.146e-02), r);\n\tr = MulAdd(s0_2, M4(-6.669e-03, -1.348e-02, -3.063e-02, -3.563e-03, -1.313e-02, -1.708e-02, 1.210e-01, -1.440e-01, 4.929e-02, 3.481e-02, 2.003e-02, 3.635e-02, 1.006e-01, -1.957e-02, 1.193e-02, 5.155e-02), r);\n\tr = MulAdd(s0_3, M4(6.497e-02, 5.019e-02, 1.077e-01, 8.697e-03, -1.177e-01, 5.571e-02, 4.494e-02, 6.833e-02, -2.233e-02, 3.133e-02, 2.125e-02, -6.909e-02, -6.918e-02, -9.107e-03, -5.253e-02, 4.534e-02), r);\n\tr = MulAdd(s0_4, M4(8.947e-02, -6.261e-02, -5.880e-03, 4.299e-02, -1.991e-01, 2.456e-02, -1.289e-01, -1.432e-01, -9.228e-02, 7.622e-02, -1.118e-01, 7.130e-03, -8.899e-03, 9.077e-02, -1.068e-02, -3.357e-01), r);\n\tr = MulAdd(s0_5, M4(1.132e-02, -8.700e-03, 2.290e-02, -1.156e-02, -6.521e-02, 6.597e-02, 1.345e-01, -2.025e-02, -1.252e-02, 1.239e-01, -4.732e-02, -4.772e-03, 5.255e-02, 4.451e-02, 1.591e-02, -4.018e-02), r);\n\tr = MulAdd(s0_6, M4(-9.199e-02, 5.236e-02, 3.563e-03, -6.109e-02, -7.301e-02, 8.333e-02, 3.957e-02, 1.803e-01, 9.601e-02, -5.646e-02, 4.394e-02, -1.050e-01, -2.629e-02, -8.527e-02, 2.850e-02, 1.179e-02), r);\n\tr = MulAdd(s0_7, M4(-7.447e-02, 7.901e-03, 6.238e-02, -5.329e-02, 2.586e-02, 2.208e-01, 2.816e-02, -4.848e-02, 7.694e-02, 4.204e-02, 5.779e-03, -6.463e-02, -1.001e-01, 1.100e-01, 1.566e-02, 3.791e-02), r);\n\tr = MulAdd(s0_8, M4(-5.701e-02, -1.697e-02, -1.691e-03, 1.403e-01, 3.156e-01, 5.799e-02, 1.759e-02, 9.619e-02, 2.202e-02, -9.488e-02, -2.590e-02, -8.366e-02, 1.210e-01, -7.470e-02, 1.093e-02, 1.380e-01), r);\n\tr = MulAdd(s1_0, M4(7.212e-02, 7.621e-02, 4.314e-02, -9.247e-02, -3.266e-02, 8.508e-02, -6.421e-02, -4.211e-02, 1.010e-02, -1.950e-01, 3.861e-02, 9.782e-02, -6.655e-02, 1.424e-02, -2.223e-02, -9.446e-03), r);\n\tr = MulAdd(s1_1, M4(-4.007e-02, -7.846e-02, -7.986e-03, -7.439e-02, 4.449e-02, -4.818e-02, 1.385e-02, 3.797e-03, -1.347e-02, -1.561e-01, 9.846e-02, 3.801e-02, 1.061e-01, -2.401e-01, 1.055e-01, -4.129e-02), r);\n\tr = MulAdd(s1_2, M4(-9.659e-03, 6.957e-02, -4.025e-02, 3.089e-02, 2.816e-02, 2.426e-02, 6.533e-02, -7.188e-02, -1.259e-01, -4.684e-02, -4.673e-02, 1.800e-01, 7.202e-02, 6.580e-02, -8.023e-02, 5.023e-02), r);\n\tr = MulAdd(s1_3, M4(1.242e-01, 1.553e-01, 1.128e-01, 4.895e-02, 1.656e-02, -3.309e-02, -5.443e-03, -6.188e-02, 5.006e-04, -1.107e-02, 1.815e-02, 2.253e-01, -1.705e-01, 3.067e-02, 9.370e-02, 3.231e-02), r);\n\tr = MulAdd(s1_4, M4(3.221e-02, -5.710e-02, -1.182e-01, -1.338e-01, -1.968e-02, 7.005e-02, -9.953e-02, 1.901e-02, -2.082e-02, 6.905e-03, -1.449e-01, 1.060e-01, 7.296e-02, -1.160e-01, -3.750e-03, -9.807e-02), r);\n\tr = MulAdd(s1_5, M4(-6.937e-03, -1.401e-01, 4.706e-02, -6.033e-02, -1.286e-01, -1.091e-03, 7.979e-02, -2.000e-01, 8.344e-02, 2.063e-01, -1.064e-01, 1.659e-01, -1.475e-02, 2.853e-02, -5.520e-02, -1.019e-02), r);\n\tr = MulAdd(s1_6, M4(-6.763e-02, 1.883e-01, -9.662e-02, 3.104e-02, 1.231e-02, -3.119e-02, -1.991e-02, 3.078e-02, -5.155e-02, 2.583e-02, 1.259e-01, 6.456e-02, -3.722e-02, -3.557e-02, 6.927e-02, -1.265e-02), r);\n\tr = MulAdd(s1_7, M4(-1.071e-01, 1.035e-01, -1.620e-02, -1.328e-01, -1.581e-02, 1.080e-02, 7.568e-03, 5.949e-03, -1.235e-01, 7.834e-02, 3.517e-02, 1.922e-02, -1.788e-01, -9.244e-02, 1.602e-01, 2.443e-01), r);\n\tr = MulAdd(s1_8, M4(-3.491e-01, -3.154e-02, -2.781e-02, 1.418e-01, 8.823e-02, -3.127e-03, 1.060e-02, -3.518e-02, -9.877e-02, -1.844e-02, -1.164e-01, -5.210e-02, -5.500e-03, 6.936e-02, -4.136e-03, -5.199e-02), r);\n\tr = MulAdd(s2_0, M4(6.302e-05, 8.151e-02, 2.809e-03, -9.597e-02, 1.061e-01, -4.590e-03, -2.120e-02, 2.740e-03, -9.974e-03, 1.571e-02, -9.565e-02, 4.850e-03, -1.734e-01, 3.947e-02, -1.271e-01, 8.010e-02), r);\n\tr = MulAdd(s2_1, M4(1.761e-02, 5.682e-02, -6.697e-02, 1.736e-02, 1.359e-01, 1.748e-01, -2.451e-02, -1.687e-01, -1.217e-02, 1.712e-01, 8.703e-02, -7.423e-02, -1.478e-01, 8.708e-02, 2.012e-02, 1.992e-01), r);\n\tr = MulAdd(s2_2, M4(3.907e-02, 3.121e-02, 4.380e-02, -1.444e-01, -6.491e-02, 2.175e-02, -2.573e-02, 1.739e-01, -1.612e-01, 1.411e-01, -6.071e-02, -1.919e-01, -9.105e-03, 1.180e-02, 8.358e-02, 1.398e-01), r);\n\tr = MulAdd(s2_3, M4(-1.036e-01, 5.616e-02, -1.672e-03, -1.342e-01, -3.416e-03, -2.802e-02, 1.312e-01, -5.189e-02, -7.886e-02, 1.854e-01, 2.333e-01, 3.057e-02, -6.496e-02, 6.900e-03, -9.251e-02, 1.079e-01), r);\n\tr = MulAdd(s2_4, M4(7.962e-02, 4.148e-02, 1.700e-01, 1.411e-01, 2.020e-01, 4.063e-01, -9.855e-02, 2.657e-01, -2.426e-01, -8.691e-02, -9.874e-03, 2.689e-01, -3.121e-02, 1.277e-01, -7.531e-02, 2.294e-02), r);\n\tr = MulAdd(s2_5, M4(-1.290e-02, -1.242e-01, 9.744e-02, -3.125e-02, 4.110e-02, 3.022e-02, 5.287e-02, 1.693e-01, -2.782e-01, 1.429e-02, 6.180e-02, 1.119e-01, 1.331e-01, 1.371e-01, -3.178e-02, 1.428e-01), r);\n\tr = MulAdd(s2_6, M4(-4.450e-03, -2.106e-02, 5.610e-02, -3.013e-02, 2.708e-02, 6.517e-02, -1.312e-01, -6.858e-02, 1.219e-01, -4.922e-02, -1.524e-02, 4.892e-02, -6.322e-03, -3.311e-02, -8.963e-02, 2.326e-01), r);\n\tr = MulAdd(s2_7, M4(-2.796e-01, 1.151e-01, -3.706e-02, -4.687e-02, 1.712e-02, -1.499e-01, -2.080e-01, 2.191e-01, -1.121e-01, -5.119e-02, 8.154e-03, -1.510e-01, 7.341e-02, 7.382e-02, -2.254e-01, 1.950e-01), r);\n\tr = MulAdd(s2_8, M4(8.772e-02, 4.794e-04, 8.423e-02, -9.496e-02, 9.113e-02, 2.194e-02, -7.011e-02, 7.785e-02, -7.759e-02, 5.424e-03, 3.423e-02, -6.881e-02, 1.640e-01, 6.449e-02, -1.571e-01, 8.336e-02), r);\n\tr = MulAdd(s3_0, M4(-3.536e-02, -1.423e-02, -1.029e-02, 6.093e-02, 1.408e-01, 1.073e-01, -1.959e-02, -1.156e-01, 9.141e-02, 5.451e-02, -9.794e-03, 9.786e-03, -3.202e-02, -2.081e-02, -5.315e-02, -7.173e-02), r);\n\tr = MulAdd(s3_1, M4(9.979e-02, 3.956e-02, 6.290e-02, 2.500e-02, 8.001e-02, -2.648e-02, 1.628e-01, -6.749e-02, 2.743e-02, 2.207e-01, -1.027e-01, 2.202e-03, -4.041e-02, 1.042e-02, 1.899e-02, -1.587e-01), r);\n\tr = MulAdd(s3_2, M4(-2.281e-02, 1.592e-01, 5.933e-02, 3.911e-02, -8.032e-02, 5.788e-02, -2.891e-02, -3.402e-02, 3.244e-02, 1.186e-01, 1.060e-02, 5.644e-02, -2.286e-02, 6.649e-03, 1.901e-02, -1.472e-01), r);\n\tr = MulAdd(s3_3, M4(-2.360e-02, 2.092e-02, -4.649e-02, -3.947e-02, -1.107e-01, -8.375e-02, 1.062e-01, -7.387e-02, -8.245e-02, 4.132e-02, -9.372e-02, -4.904e-02, 1.590e-02, 3.342e-02, -5.126e-02, -6.318e-02), r);\n\tr = MulAdd(s3_4, M4(8.237e-02, 7.139e-03, 6.742e-02, -1.915e-01, -2.912e-02, 1.144e-01, -2.675e-02, -3.869e-02, 2.174e-02, 8.929e-02, -7.668e-02, 3.221e-02, 1.072e-01, -2.226e-02, 5.747e-03, -2.013e-01), r);\n\tr = MulAdd(s3_5, M4(1.296e-01, 5.830e-02, 2.741e-02, -5.396e-02, 4.137e-02, 1.081e-01, 5.407e-02, -1.613e-02, 4.416e-02, -4.413e-02, -1.919e-02, 2.234e-02, 1.641e-02, 3.827e-02, -5.873e-02, -3.625e-02), r);\n\tr = MulAdd(s3_6, M4(-2.643e-02, -2.107e-02, -9.774e-04, -4.033e-02, 6.831e-02, 1.818e-02, -2.285e-02, -5.126e-02, 1.056e-01, 2.481e-02, -4.970e-02, -4.118e-02, 2.507e-03, -7.200e-02, 3.521e-02, -1.958e-02), r);\n\tr = MulAdd(s3_7, M4(-1.419e-01, -1.939e-02, -8.252e-02, -1.226e-01, -2.463e-02, -3.110e-02, 7.933e-02, 2.225e-02, -1.125e-01, 3.870e-02, -8.449e-02, 4.435e-02, 5.833e-02, 1.431e-02, 1.874e-02, -4.861e-02), r);\n\tr = MulAdd(s3_8, M4(6.873e-02, -1.913e-02, 5.468e-02, 3.804e-02, 8.904e-03, -1.028e-02, -5.703e-02, -3.723e-02, -1.214e-01, 3.273e-04, 5.522e-02, -5.589e-02, 6.761e-02, -2.091e-03, -1.855e-02, -1.967e-03), r);\n\tr = MulAdd(s4_0, M4(-1.337e-02, 4.971e-02, -9.402e-02, -6.570e-02, -5.679e-02, -4.823e-02, -1.141e-02, 1.180e-01, 1.361e-02, -6.839e-02, 9.484e-03, 9.146e-02, -2.355e-02, -4.336e-02, -6.835e-02, 1.216e-01), r);\n\tr = MulAdd(s4_1, M4(-2.744e-02, 6.125e-02, -1.307e-02, 1.858e-02, -6.888e-02, -3.563e-02, -8.818e-02, 7.357e-02, 5.087e-02, -6.322e-03, -8.044e-02, 2.251e-02, 4.736e-02, -1.195e-02, 9.993e-02, 5.329e-02), r);\n\tr = MulAdd(s4_2, M4(-6.653e-02, -3.248e-02, -6.335e-02, -3.976e-03, 4.284e-03, -1.610e-02, 8.281e-02, 4.614e-02, 5.601e-03, 1.024e-02, 1.040e-04, 7.251e-02, -1.801e-02, -1.080e-02, 8.329e-02, 1.218e-01), r);\n\tr = MulAdd(s4_3, M4(9.951e-02, -4.194e-02, -1.135e-01, -9.185e-02, 1.388e-02, -5.043e-02, -1.166e-01, 5.228e-03, -9.241e-02, 3.263e-02, -5.675e-02, -1.811e-02, 5.921e-03, 4.205e-02, -1.074e-01, -8.103e-02), r);\n\tr = MulAdd(s4_4, M4(1.362e-02, 1.894e-01, -6.613e-02, 3.271e-02, -5.054e-02, 7.819e-02, 8.748e-03, 1.025e-01, 1.009e-01, 1.459e-03, -7.589e-02, 4.555e-02, 1.301e-01, 1.124e-01, -1.082e-01, 7.705e-02), r);\n\tr = MulAdd(s4_5, M4(3.963e-03, -2.820e-01, -9.095e-02, 2.806e-02, 2.366e-02, 2.021e-02, 7.765e-02, 8.085e-02, 4.199e-04, 7.992e-02, -5.011e-02, 3.407e-02, -1.385e-01, 1.887e-01, -7.216e-02, 7.838e-02), r);\n\tr = MulAdd(s4_6, M4(-6.037e-02, -3.763e-03, 1.471e-02, 1.150e-01, -7.843e-02, -5.048e-02, -1.682e-02, 2.911e-02, -5.132e-02, -2.132e-03, 8.913e-03, -2.785e-02, -1.884e-01, 1.110e-01, -9.448e-02, 1.446e-01), r);\n\tr = MulAdd(s4_7, M4(2.501e-01, -4.783e-02, 1.722e-02, -7.884e-02, -2.728e-02, 1.207e-01, 2.019e-02, -4.461e-02, -7.270e-02, -5.856e-02, -5.372e-02, 1.377e-01, 5.869e-02, 1.418e-02, 3.952e-02, 2.244e-01), r);\n\tr = MulAdd(s4_8, M4(-7.346e-04, -1.191e-01, -5.872e-04, -4.034e-01, 5.788e-02, 8.150e-03, 5.508e-02, 1.020e-01, 1.064e-02, -4.955e-02, 1.782e-02, 7.286e-02, -1.265e-02, 1.003e-01, -2.336e-02, 1.336e-01), r);\n\tr = MulAdd(s5_0, M4(-5.339e-02, 7.846e-02, -8.860e-02, -1.306e-02, -4.494e-02, 9.703e-02, -2.568e-02, -1.864e-02, 5.356e-02, 1.834e-01, -7.658e-02, -1.251e-01, 2.626e-02, -7.564e-03, -1.302e-01, -7.820e-02), r);\n\tr = MulAdd(s5_1, M4(-4.511e-03, -2.958e-02, -7.545e-02, 5.787e-03, -7.416e-02, -4.669e-02, -2.174e-01, -9.766e-02, 4.142e-02, -1.570e-01, -8.905e-02, -4.624e-02, 6.675e-02, -9.388e-03, 4.803e-03, -1.196e-01), r);\n\tr = MulAdd(s5_2, M4(-2.193e-02, 2.750e-02, -1.122e-01, 3.679e-02, 5.083e-02, -2.510e-01, 9.296e-02, -3.115e-01, -2.605e-02, -1.356e-01, 6.583e-02, 3.942e-02, -1.008e-02, -6.099e-02, -6.722e-03, -1.421e-01), r);\n\tr = MulAdd(s5_3, M4(6.270e-02, -5.455e-02, -3.061e-02, 2.553e-02, -6.918e-02, -6.845e-02, 2.002e-03, -1.087e-01, -9.001e-03, -1.043e-01, -2.609e-02, -4.171e-02, 1.259e-02, 1.074e-02, 1.576e-02, -1.376e-01), r);\n\tr = MulAdd(s5_4, M4(4.290e-02, 6.627e-02, 6.619e-02, -7.427e-02, -1.362e-01, 9.203e-02, -9.883e-02, 4.936e-03, 3.701e-01, -1.101e-02, -1.109e-01, -2.545e-02, 1.058e-02, 1.841e-01, -2.051e-02, -1.984e-01), r);\n\tr = MulAdd(s5_5, M4(-1.378e-02, -1.164e-01, -1.474e-01, -2.092e-02, 6.278e-02, -1.969e-02, -5.004e-02, -1.315e-01, 6.378e-02, -3.266e-02, 6.565e-02, -4.789e-03, -3.663e-02, 2.888e-03, 1.072e-01, -1.854e-02), r);\n\tr = MulAdd(s5_6, M4(-1.867e-01, 3.630e-02, 1.074e-01, -1.969e-02, -4.586e-02, 8.270e-04, -1.691e-02, 7.145e-02, 3.306e-02, 1.202e-01, 9.361e-02, -1.188e-01, -1.424e-01, -9.281e-03, -1.762e-02, -1.624e-01), r);\n\tr = MulAdd(s5_7, M4(-2.975e-02, 1.625e-01, 1.835e-01, 1.283e-01, 7.336e-02, 2.088e-02, -8.031e-03, -1.193e-01, -2.883e-02, 1.103e-01, -7.452e-02, 4.335e-02, -4.197e-02, -3.907e-02, 5.596e-02, -3.380e-02), r);\n\tr = MulAdd(s5_8, M4(-1.787e-01, -7.071e-02, 3.320e-02, 6.293e-02, 1.479e-01, -5.684e-02, -4.662e-02, -3.199e-02, 1.532e-01, -4.096e-02, -7.867e-02, 1.348e-01, -2.767e-02, 2.444e-02, 3.138e-02, 1.569e-01), r);\n\tr = MulAdd(s6_0, M4(-4.936e-02, -6.285e-02, 1.092e-01, 6.430e-03, -7.977e-02, -3.174e-02, -5.940e-02, -1.876e-02, -1.700e-01, -4.452e-02, -2.191e-03, 4.175e-02, 9.124e-02, -7.633e-02, -9.207e-02, 1.279e-02), r);\n\tr = MulAdd(s6_1, M4(7.761e-02, -3.035e-01, 9.776e-02, 2.043e-02, 1.105e-01, 8.576e-02, -3.475e-02, 1.911e-02, 6.507e-02, 1.586e-01, -2.161e-02, -1.698e-01, -2.493e-02, -8.030e-02, -7.785e-02, -1.270e-02), r);\n\tr = MulAdd(s6_2, M4(-2.316e-01, -8.060e-02, 3.453e-02, -9.948e-02, -1.113e-02, 6.366e-02, -1.612e-02, -9.916e-02, 8.003e-02, 5.027e-02, -6.328e-02, -3.902e-02, 1.103e-01, -8.845e-02, 5.553e-02, -5.790e-02), r);\n\tr = MulAdd(s6_3, M4(-8.073e-02, 1.479e-02, 1.683e-01, -8.615e-02, -6.766e-02, 3.079e-02, -8.450e-02, -3.041e-03, 8.573e-03, 1.075e-01, 1.413e-01, 4.908e-04, 1.775e-01, -1.729e-01, -6.040e-02, -1.862e-01), r);\n\tr = MulAdd(s6_4, M4(1.651e-01, -1.345e-01, 8.919e-02, 1.627e-01, 3.617e-02, 6.256e-02, -5.313e-02, 1.040e-01, -1.922e-01, 1.232e-01, 2.177e-01, -8.445e-02, 1.100e-01, 3.956e-02, -1.707e-01, -7.690e-02), r);\n\tr = MulAdd(s6_5, M4(2.440e-01, -7.621e-02, -1.231e-01, 3.360e-02, -2.065e-01, 7.486e-02, -1.006e-01, 2.970e-02, 2.299e-02, -1.838e-02, -3.900e-02, -7.157e-02, 2.590e-01, 3.458e-02, 7.639e-02, -5.959e-02), r);\n\tr = MulAdd(s6_6, M4(-1.726e-01, 1.210e-01, -5.207e-02, 9.992e-04, -8.525e-02, 1.903e-02, 7.126e-02, -1.506e-01, 4.732e-02, -1.352e-01, 4.222e-02, 3.378e-02, 1.458e-02, 2.951e-02, -2.284e-01, 1.385e-01), r);\n\tr = MulAdd(s6_7, M4(2.148e-02, -1.776e-01, 5.554e-02, 1.467e-02, -1.089e-01, -4.249e-02, 1.303e-01, -2.949e-02, -1.481e-01, -1.179e-01, 5.531e-03, -1.111e-01, 1.654e-01, 3.117e-02, -2.830e-01, 7.572e-02), r);\n\tr = MulAdd(s6_8, M4(-1.686e-01, 2.905e-02, 3.980e-02, 1.041e-01, -9.216e-02, -3.281e-02, -4.067e-02, -2.761e-02, -8.116e-02, -4.699e-02, -2.380e-02, 4.070e-02, 8.295e-02, 6.351e-02, -1.073e-01, -3.275e-02), r);\n\tr = MulAdd(s7_0, M4(-1.322e-02, -6.995e-02, 5.721e-02, 1.080e-01, -1.460e-01, -1.359e-01, -2.668e-02, 4.627e-02, -1.111e-01, -6.099e-02, 2.290e-02, 1.181e-01, -2.615e-02, 3.432e-02, -2.858e-02, 2.675e-02), r);\n\tr = MulAdd(s7_1, M4(-1.126e-03, -1.130e-01, 3.254e-02, 3.818e-02, 1.163e-01, -8.689e-02, 2.397e-02, 6.867e-02, 7.187e-02, 2.244e-01, -1.445e-01, -3.121e-02, -2.282e-02, 4.401e-02, -2.783e-02, -1.091e-01), r);\n\tr = MulAdd(s7_2, M4(-1.843e-02, -5.802e-03, 1.001e-01, 4.639e-02, -2.342e-03, -1.522e-01, 1.646e-01, -3.452e-02, 9.018e-02, 2.567e-02, 7.340e-02, -4.319e-02, 3.794e-02, 5.017e-03, -5.138e-02, 5.661e-02), r);\n\tr = MulAdd(s7_3, M4(-3.781e-02, -7.300e-02, 5.104e-02, 1.752e-01, -1.776e-01, 5.212e-02, -1.431e-02, 3.923e-02, 1.007e-01, -4.295e-02, -3.411e-02, 1.345e-01, -4.227e-02, 4.720e-02, -3.708e-02, -9.001e-02), r);\n\tr = MulAdd(s7_4, M4(7.349e-02, -6.402e-02, -7.391e-02, 4.688e-02, -1.185e-01, 1.355e-01, -4.110e-02, -4.597e-02, -1.750e-01, -1.666e-02, -2.820e-01, -9.678e-02, 1.918e-02, 4.531e-02, -4.430e-02, 9.198e-02), r);\n\tr = MulAdd(s7_5, M4(8.797e-02, 7.461e-02, -3.057e-02, 8.326e-02, -8.005e-02, -9.788e-02, -6.236e-02, 1.772e-01, 2.214e-01, 5.500e-02, 8.411e-03, -1.437e-02, -8.313e-02, 1.458e-01, -8.669e-02, -1.330e-01), r);\n\tr = MulAdd(s7_6, M4(-7.259e-02, -1.133e-02, 1.599e-02, 3.559e-02, -1.174e-01, -2.649e-02, 7.589e-02, 5.969e-02, -3.749e-02, 6.788e-03, 8.883e-02, 1.105e-01, 4.012e-02, 5.030e-02, -1.823e-01, -1.431e-01), r);\n\tr = MulAdd(s7_7, M4(-1.153e-02, -7.054e-02, 1.015e-02, -2.166e-02, -1.574e-01, -2.663e-02, 8.243e-02, -9.755e-02, -1.577e-02, -1.518e-01, -1.140e-02, -1.944e-01, 3.587e-02, 3.820e-02, -1.761e-01, 2.044e-01), r);\n\tr = MulAdd(s7_8, M4(-1.494e-02, 5.534e-03, 1.283e-02, 6.255e-02, 9.911e-02, 4.208e-02, -6.697e-02, 5.858e-02, 2.691e-02, 1.197e-01, -4.191e-02, 1.493e-01, -1.131e-01, 3.449e-02, -1.062e-01, -5.003e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.638e-02, -7.591e-03, 2.399e-02, -1.691e-02 };\n\tr = MulAdd(s0_0, M4(-6.856e-02, 5.958e-02, -5.491e-02, -5.121e-04, -7.082e-03, 7.145e-02, 3.433e-02, -1.884e-02, 8.259e-02, -1.835e-02, -2.053e-02, -8.796e-03, -1.567e-02, -3.514e-02, -3.883e-02, 8.266e-03), r);\n\tr = MulAdd(s0_1, M4(5.622e-02, -1.245e-01, -1.000e-02, -5.029e-02, 1.284e-01, 1.304e-01, -1.182e-01, -8.880e-02, 1.180e-01, -1.074e-01, -1.839e-03, -6.479e-02, -1.055e-01, -9.332e-02, 4.050e-02, 3.166e-02), r);\n\tr = MulAdd(s0_2, M4(8.057e-02, -2.366e-02, 8.458e-03, -4.003e-02, 1.657e-01, -2.993e-02, -9.130e-02, -2.685e-02, 4.415e-02, -2.073e-02, 4.602e-02, 4.820e-02, -1.642e-02, -3.753e-02, -1.158e-02, -1.363e-02), r);\n\tr = MulAdd(s0_3, M4(-3.562e-03, 3.501e-02, -5.760e-02, -8.561e-02, 1.803e-01, 9.548e-03, -4.489e-02, -1.129e-01, 1.759e-01, 2.651e-02, -9.603e-02, 4.567e-02, -2.577e-02, -7.679e-02, 1.399e-02, 2.476e-01), r);\n\tr = MulAdd(s0_4, M4(1.174e-01, -1.482e-01, 8.969e-03, -5.009e-02, 1.937e-01, 1.298e-01, -4.125e-02, -4.130e-01, 2.279e-02, -3.595e-02, 1.802e-01, 3.422e-02, -9.759e-02, -1.371e-02, -3.081e-02, 6.392e-02), r);\n\tr = MulAdd(s0_5, M4(5.218e-02, 4.926e-02, -3.858e-02, 4.533e-02, 1.352e-01, -2.891e-03, 1.177e-02, -2.800e-02, 4.966e-02, 5.795e-02, -3.262e-02, -4.464e-02, -9.950e-03, -5.546e-02, -7.840e-02, 2.773e-02), r);\n\tr = MulAdd(s0_6, M4(2.823e-02, 8.325e-02, 9.167e-02, -6.963e-02, 8.086e-02, -2.964e-02, 7.290e-02, -1.416e-01, -1.841e-02, -6.262e-02, -2.303e-02, -1.569e-02, -6.437e-02, 6.167e-02, -1.038e-01, -1.276e-02), r);\n\tr = MulAdd(s0_7, M4(-4.809e-02, 1.415e-02, 6.225e-02, 8.075e-02, 2.388e-01, 9.211e-03, 9.064e-02, -8.200e-02, 1.694e-01, -5.018e-02, -1.079e-01, -6.351e-02, -9.142e-02, -1.697e-02, -3.814e-02, -5.625e-02), r);\n\tr = MulAdd(s0_8, M4(9.382e-02, 3.186e-02, 1.185e-02, 5.386e-02, 8.376e-02, -1.031e-01, -6.309e-02, -6.205e-02, 6.931e-02, -6.939e-02, 2.833e-02, -8.955e-03, 2.056e-02, 2.309e-02, 8.990e-02, -2.922e-02), r);\n\tr = MulAdd(s1_0, M4(9.485e-02, 1.059e-01, -9.448e-02, 2.837e-02, -8.034e-02, 4.231e-02, 5.874e-02, 4.376e-02, -7.212e-02, -4.734e-02, -6.407e-02, -5.659e-02, -2.286e-02, 2.383e-02, -5.526e-02, 7.060e-02), r);\n\tr = MulAdd(s1_1, M4(2.772e-02, -2.769e-02, 1.203e-01, 2.210e-02, -9.925e-02, 3.654e-02, -6.549e-02, 5.695e-02, -3.272e-02, 7.289e-02, -6.519e-02, -4.937e-02, -1.087e-02, -9.866e-02, -5.929e-02, -5.427e-03), r);\n\tr = MulAdd(s1_2, M4(1.325e-01, 1.090e-01, -9.989e-02, -1.232e-03, -1.037e-01, -7.060e-02, -4.878e-02, -1.971e-02, -1.156e-01, 1.161e-01, 7.762e-02, -4.978e-02, 2.168e-01, 4.355e-02, -5.945e-02, -1.258e-01), r);\n\tr = MulAdd(s1_3, M4(-4.632e-02, 5.148e-03, -1.895e-01, -1.120e-02, -1.101e-02, 4.767e-02, 6.131e-02, -3.472e-02, -1.414e-01, 3.136e-02, -3.091e-02, -1.837e-02, 2.242e-01, -2.307e-02, -9.898e-02, 3.374e-02), r);\n\tr = MulAdd(s1_4, M4(5.654e-02, -2.654e-01, 2.302e-02, -1.334e-01, -3.182e-03, 9.778e-03, -4.265e-02, -9.722e-02, -2.784e-01, 3.271e-03, -2.737e-02, -4.457e-02, 2.242e-02, -1.072e-02, -2.345e-01, -5.289e-02), r);\n\tr = MulAdd(s1_5, M4(1.214e-02, -1.508e-02, 1.561e-01, -3.749e-02, -1.257e-01, 1.359e-02, -5.384e-02, -7.271e-03, -1.746e-01, 1.859e-01, -8.594e-02, 3.682e-02, 1.924e-01, 6.397e-02, -1.499e-01, 5.283e-02), r);\n\tr = MulAdd(s1_6, M4(6.474e-02, 4.045e-02, 7.998e-02, -1.044e-01, -1.953e-02, 2.763e-02, 3.969e-02, -1.972e-02, -1.679e-01, 3.241e-03, 8.822e-03, -2.743e-02, 3.568e-02, 3.401e-02, -2.322e-02, 6.862e-02), r);\n\tr = MulAdd(s1_7, M4(9.398e-02, 5.614e-02, -8.502e-02, 2.310e-02, -5.239e-02, -5.140e-03, 1.602e-01, 8.341e-02, -2.886e-01, 1.867e-01, -9.800e-02, -1.470e-02, -1.087e-01, -1.298e-01, -2.362e-02, -1.400e-01), r);\n\tr = MulAdd(s1_8, M4(-3.051e-02, -6.396e-02, 4.116e-02, 1.117e-01, -4.641e-02, 2.690e-02, -3.111e-02, -1.250e-02, -2.173e-01, 1.572e-02, -1.499e-01, 1.580e-02, 1.703e-01, 1.144e-01, 1.479e-02, -8.993e-02), r);\n\tr = MulAdd(s2_0, M4(1.244e-01, 4.970e-02, -1.070e-03, 7.773e-02, -8.029e-02, -2.884e-02, -3.637e-02, -1.304e-01, -1.312e-01, 2.130e-01, -4.910e-02, -4.770e-03, 1.294e-01, 2.274e-02, 9.818e-02, 7.503e-02), r);\n\tr = MulAdd(s2_1, M4(-5.884e-02, 8.183e-02, -8.185e-02, 1.065e-02, -1.435e-01, 6.958e-02, 3.902e-02, -2.534e-02, -1.494e-01, 5.753e-02, -2.062e-01, -7.096e-02, -2.066e-02, 1.252e-01, 4.390e-02, 7.641e-02), r);\n\tr = MulAdd(s2_2, M4(8.514e-03, 6.807e-03, -6.165e-02, -3.644e-03, 2.428e-03, -4.480e-02, 5.208e-02, 6.871e-02, -1.813e-02, -4.059e-02, -6.820e-02, -3.910e-02, 1.024e-01, 3.187e-02, 5.265e-02, -2.288e-02), r);\n\tr = MulAdd(s2_3, M4(3.685e-02, 9.477e-02, -3.593e-02, 4.419e-02, -1.481e-01, 1.218e-01, -7.954e-03, -1.694e-01, -1.576e-02, 1.485e-02, -1.178e-01, -2.675e-02, 7.700e-03, 1.516e-01, -1.317e-02, 3.000e-02), r);\n\tr = MulAdd(s2_4, M4(-1.040e-01, 1.802e-01, 4.063e-02, 1.970e-01, 4.039e-02, 1.686e-01, 9.372e-02, 3.956e-02, -8.978e-02, -1.824e-01, -4.485e-01, 1.647e-01, -4.233e-02, 2.078e-01, 2.783e-02, -1.687e-02), r);\n\tr = MulAdd(s2_5, M4(-5.382e-02, 7.601e-03, 1.531e-01, -1.537e-01, 5.936e-02, 4.119e-02, 1.738e-02, -9.958e-02, -1.441e-02, -1.581e-01, 1.304e-01, 1.832e-01, 2.048e-01, 3.706e-02, -6.517e-02, -2.421e-02), r);\n\tr = MulAdd(s2_6, M4(-1.290e-01, 5.078e-02, 3.001e-02, -1.579e-02, -3.427e-02, -3.255e-02, 1.423e-01, 2.828e-02, -6.385e-02, 6.381e-02, -1.872e-01, 1.009e-01, -2.196e-02, 5.991e-02, 1.937e-02, -7.034e-02), r);\n\tr = MulAdd(s2_7, M4(8.300e-02, 1.168e-01, -2.442e-01, 7.992e-02, -5.251e-02, 9.426e-02, -1.091e-01, 3.191e-02, 2.351e-02, 8.493e-02, -1.876e-01, 9.190e-02, 1.258e-01, 8.952e-02, 6.551e-02, -1.797e-03), r);\n\tr = MulAdd(s2_8, M4(-4.132e-02, 9.893e-02, -1.577e-01, 5.819e-02, -1.900e-02, -1.933e-03, 2.067e-02, -6.572e-03, 1.310e-01, -1.984e-01, -1.135e-01, -2.853e-02, 1.574e-01, 3.272e-02, 1.053e-01, 2.372e-02), r);\n\tr = MulAdd(s3_0, M4(-1.278e-02, 1.956e-02, 1.472e-02, -1.047e-01, 2.871e-02, -7.708e-03, -2.284e-02, -5.125e-02, 6.561e-02, 5.233e-02, 6.514e-02, 4.392e-02, -6.372e-02, -5.538e-02, 2.252e-02, 9.895e-02), r);\n\tr = MulAdd(s3_1, M4(8.760e-02, 4.733e-02, -2.399e-03, 1.374e-01, -3.357e-02, -1.288e-02, -1.132e-01, -1.851e-02, -1.350e-01, 3.614e-02, 2.063e-02, 1.047e-02, -2.650e-02, 3.096e-02, -2.657e-02, 7.451e-02), r);\n\tr = MulAdd(s3_2, M4(-9.244e-02, 1.058e-01, -3.306e-02, -2.094e-02, 6.164e-02, -1.685e-04, 2.070e-02, 4.812e-02, 1.481e-02, 7.771e-02, -1.181e-01, 3.211e-02, -2.177e-02, -1.001e-01, 2.578e-02, -4.489e-02), r);\n\tr = MulAdd(s3_3, M4(-9.743e-02, 1.029e-01, 5.503e-02, 1.500e-01, 1.386e-01, 2.629e-02, -1.115e-02, -7.039e-02, 7.579e-02, -2.209e-02, -2.975e-02, -3.635e-02, -1.220e-01, -3.563e-02, 2.109e-02, -5.721e-03), r);\n\tr = MulAdd(s3_4, M4(6.016e-02, 1.031e-01, -3.935e-02, 1.274e-01, -7.301e-02, 1.266e-01, 4.915e-02, 2.390e-02, 9.129e-03, -8.408e-02, -8.331e-02, 2.235e-01, -1.669e-01, -8.030e-04, -1.628e-02, -9.797e-02), r);\n\tr = MulAdd(s3_5, M4(8.097e-02, -8.802e-02, 8.909e-02, -5.042e-02, 1.494e-02, 2.353e-02, -4.345e-02, -4.842e-03, -4.746e-02, -4.925e-02, 8.130e-02, 3.014e-02, -1.431e-02, -1.187e-01, 3.601e-02, -1.568e-03), r);\n\tr = MulAdd(s3_6, M4(-3.983e-02, 8.975e-02, -1.097e-01, -2.354e-03, 2.544e-02, -6.747e-02, -2.813e-02, 2.132e-02, 4.415e-02, 2.316e-02, -7.110e-02, -1.807e-02, -1.686e-02, 1.114e-02, -6.167e-02, -9.863e-03), r);\n\tr = MulAdd(s3_7, M4(8.592e-02, 1.271e-02, -9.243e-02, 5.828e-02, -1.367e-01, -4.598e-02, -1.202e-02, -4.801e-02, 9.932e-02, 9.926e-03, -5.031e-02, 1.650e-01, 3.893e-02, 6.156e-03, -3.474e-02, -1.083e-01), r);\n\tr = MulAdd(s3_8, M4(1.120e-02, -3.952e-02, -4.259e-02, 1.034e-01, -7.690e-02, -7.688e-03, 2.102e-02, 5.862e-02, -3.920e-02, 2.724e-02, -1.052e-01, 3.477e-02, -7.197e-02, -3.307e-03, 1.187e-01, 1.826e-03), r);\n\tr = MulAdd(s4_0, M4(-1.181e-01, -2.105e-03, 6.659e-02, -9.693e-02, -5.381e-02, 4.990e-02, 1.051e-01, 6.149e-02, 2.631e-03, -3.388e-02, -5.817e-02, -8.667e-02, -1.396e-01, 2.351e-02, -1.353e-02, 2.335e-02), r);\n\tr = MulAdd(s4_1, M4(-1.239e-02, 8.171e-02, -5.804e-03, 9.792e-02, -4.276e-02, 1.050e-01, 3.182e-02, -3.140e-02, -5.871e-02, -6.173e-02, 1.148e-02, -5.548e-02, -8.282e-02, -1.731e-03, -4.758e-02, 4.939e-03), r);\n\tr = MulAdd(s4_2, M4(-1.961e-01, 7.310e-02, 7.496e-02, 2.064e-02, 5.587e-03, 4.173e-02, -4.753e-02, 1.277e-02, 4.601e-02, -5.450e-02, -4.348e-02, -5.249e-02, -2.668e-02, -4.040e-02, -5.659e-04, -4.179e-02), r);\n\tr = MulAdd(s4_3, M4(4.018e-02, 1.174e-01, 2.993e-02, 1.726e-01, 7.344e-03, 3.771e-02, 4.385e-02, 7.180e-02, -3.315e-02, 1.868e-02, 2.308e-02, 2.335e-02, -7.644e-02, -1.776e-03, 1.021e-01, -5.989e-02), r);\n\tr = MulAdd(s4_4, M4(-1.093e-01, 1.338e-01, -3.326e-03, 2.741e-01, 5.125e-03, -5.155e-02, 7.349e-02, 2.113e-02, -3.361e-02, 4.438e-02, 4.073e-02, 3.265e-02, -5.326e-02, 1.109e-01, 9.573e-02, 1.011e-01), r);\n\tr = MulAdd(s4_5, M4(-1.444e-02, -9.394e-02, 1.325e-01, 1.078e-02, -9.762e-02, -2.065e-02, -1.430e-01, -3.443e-02, 1.513e-02, 1.041e-01, -8.205e-02, -5.684e-02, -1.067e-01, -5.092e-02, 3.510e-02, 4.930e-02), r);\n\tr = MulAdd(s4_6, M4(-1.771e-01, 6.409e-02, 2.086e-03, 3.445e-02, 1.277e-01, -2.445e-02, -1.331e-01, 2.405e-02, 4.605e-02, 2.834e-02, -1.150e-01, 1.056e-01, -1.270e-01, -1.430e-02, 1.851e-01, 5.202e-02), r);\n\tr = MulAdd(s4_7, M4(-2.581e-01, -9.130e-04, 1.984e-02, 1.706e-02, 8.904e-02, 2.445e-02, 1.978e-02, -6.087e-02, 8.202e-02, 5.114e-02, -3.343e-02, 1.372e-01, -3.990e-02, 5.799e-02, 5.534e-02, 3.146e-03), r);\n\tr = MulAdd(s4_8, M4(-1.432e-01, 6.463e-02, -1.744e-01, 7.203e-02, -5.544e-02, 7.475e-03, -1.297e-01, -1.000e-01, -4.786e-02, -8.024e-03, -8.030e-02, 4.410e-02, 3.240e-02, -1.657e-02, -5.415e-02, -2.264e-02), r);\n\tr = MulAdd(s5_0, M4(-1.678e-02, 6.369e-02, 6.262e-02, 3.990e-03, -2.285e-02, -2.102e-02, -8.417e-02, 3.454e-02, 5.631e-02, -5.209e-03, -5.349e-02, 7.355e-02, 5.594e-02, -2.378e-02, -1.036e-01, 1.916e-02), r);\n\tr = MulAdd(s5_1, M4(-8.472e-02, 1.004e-01, -4.666e-03, 2.850e-02, -7.198e-02, -4.735e-02, 4.020e-02, -9.596e-02, -6.666e-02, 4.326e-02, -1.966e-02, -1.055e-01, 1.041e-01, 2.119e-02, -5.364e-02, 1.074e-02), r);\n\tr = MulAdd(s5_2, M4(-2.121e-02, 5.410e-02, 4.190e-02, 6.076e-02, 1.067e-01, 1.614e-02, 7.708e-02, -5.968e-02, 5.507e-02, -2.250e-02, 3.645e-02, -9.764e-03, -7.478e-03, -4.927e-02, 5.171e-03, -4.723e-02), r);\n\tr = MulAdd(s5_3, M4(1.332e-01, 4.441e-02, -1.963e-01, 1.094e-02, 6.102e-02, 5.773e-03, -7.517e-02, 3.987e-02, 8.065e-02, -1.551e-01, -7.945e-02, -2.277e-01, 2.685e-01, 8.098e-03, -1.217e-01, -3.998e-02), r);\n\tr = MulAdd(s5_4, M4(1.234e-01, 1.988e-02, -3.497e-02, 2.864e-03, -5.985e-02, -6.099e-02, -1.039e-01, -5.193e-02, 8.858e-02, 3.707e-02, -7.891e-02, 4.948e-02, 8.762e-02, 5.560e-02, -1.161e-01, 4.470e-02), r);\n\tr = MulAdd(s5_5, M4(4.512e-02, -8.772e-02, 3.896e-02, -5.043e-02, 2.819e-02, -4.574e-02, 1.322e-01, 5.389e-02, -9.003e-02, 9.038e-02, -3.016e-02, 6.598e-02, 4.502e-02, -6.214e-02, 6.204e-02, 2.493e-02), r);\n\tr = MulAdd(s5_6, M4(-1.418e-01, -6.317e-03, 4.192e-02, 1.090e-01, 4.677e-02, 2.775e-02, -4.033e-02, 1.778e-02, 1.161e-01, 8.278e-02, 1.486e-02, 1.899e-01, 4.682e-02, -1.269e-02, -5.939e-02, -4.191e-02), r);\n\tr = MulAdd(s5_7, M4(3.808e-02, -1.382e-01, 1.624e-01, -8.867e-03, -4.352e-02, 4.613e-02, -8.485e-02, 1.962e-02, -9.782e-02, -1.877e-02, 2.046e-01, 1.311e-01, 5.570e-02, 7.291e-02, -1.629e-01, 2.372e-02), r);\n\tr = MulAdd(s5_8, M4(7.632e-02, 2.845e-02, 9.477e-02, 4.662e-02, 2.186e-02, -1.191e-02, 3.877e-02, -2.086e-03, -7.178e-02, 9.062e-03, -1.733e-02, -2.907e-03, -1.850e-02, 4.354e-02, 2.838e-02, 1.076e-01), r);\n\tr = MulAdd(s6_0, M4(-1.285e-01, 8.991e-02, -8.087e-02, -3.216e-02, 1.349e-02, 3.391e-02, -1.215e-02, -7.211e-02, 1.965e-03, 4.863e-02, 3.047e-02, -3.501e-02, -6.125e-02, -2.897e-03, -8.380e-02, 2.357e-03), r);\n\tr = MulAdd(s6_1, M4(-5.757e-02, 1.372e-01, -6.267e-03, 8.437e-02, 6.323e-02, 4.447e-02, -3.204e-02, -6.612e-02, -2.887e-02, 1.434e-02, 5.392e-02, 1.096e-01, 4.232e-02, 1.115e-01, 2.729e-02, -1.276e-02), r);\n\tr = MulAdd(s6_2, M4(2.303e-02, 5.033e-02, -8.145e-03, -1.038e-02, -1.006e-01, 2.948e-03, 6.525e-02, 1.323e-01, -1.220e-02, -4.912e-02, -2.678e-02, 4.257e-02, 6.654e-02, -1.227e-01, 2.506e-02, 9.650e-03), r);\n\tr = MulAdd(s6_3, M4(-6.970e-02, 3.303e-02, 6.222e-02, -2.478e-02, 4.571e-02, -7.910e-03, 1.174e-01, -1.023e-01, -2.077e-01, 2.470e-02, 3.463e-02, 5.387e-03, 3.708e-02, 6.542e-02, 1.682e-02, 1.489e-01), r);\n\tr = MulAdd(s6_4, M4(-9.703e-02, 1.665e-01, -2.678e-02, -2.903e-01, 2.605e-02, -1.837e-01, -6.346e-02, -1.372e-01, 5.312e-02, -6.241e-02, -1.031e-01, 1.010e-01, -1.034e-01, 1.392e-01, 6.485e-02, 4.498e-02), r);\n\tr = MulAdd(s6_5, M4(1.261e-01, -5.379e-02, 1.237e-01, -7.338e-02, 9.243e-02, 1.550e-02, -3.866e-02, 1.153e-03, -1.044e-01, -9.256e-03, 3.221e-02, 2.840e-02, 1.068e-01, 7.488e-03, 3.220e-02, 2.742e-02), r);\n\tr = MulAdd(s6_6, M4(6.648e-02, -5.628e-02, 5.234e-02, 1.653e-02, -2.854e-02, 1.178e-01, -4.848e-02, 4.922e-02, -3.475e-02, 3.335e-03, 5.270e-03, -6.638e-02, 1.035e-01, -1.178e-02, -1.055e-01, 1.954e-02), r);\n\tr = MulAdd(s6_7, M4(2.042e-03, -2.349e-02, 5.391e-02, -1.043e-01, -3.899e-02, -8.002e-02, -3.419e-02, 1.665e-01, -2.302e-02, 7.047e-02, -4.170e-02, 1.918e-01, -1.703e-01, 3.008e-02, 3.182e-01, -1.188e-01), r);\n\tr = MulAdd(s6_8, M4(-1.147e-01, 6.406e-02, 5.628e-02, 3.118e-02, -2.687e-02, 3.499e-02, 1.447e-02, 1.556e-01, 2.801e-02, -6.173e-02, 7.045e-02, 2.199e-02, -1.085e-01, -1.537e-02, 6.824e-02, -5.379e-02), r);\n\tr = MulAdd(s7_0, M4(-9.648e-04, 4.945e-02, -1.580e-02, -1.928e-02, -4.261e-02, -2.873e-02, -1.721e-02, 1.632e-02, -1.067e-01, -5.818e-02, 5.599e-02, 2.674e-02, -2.359e-02, 1.152e-02, -2.086e-02, -3.648e-02), r);\n\tr = MulAdd(s7_1, M4(-2.092e-02, 2.304e-01, 1.555e-02, -8.347e-02, 4.209e-02, 4.611e-02, 1.706e-02, -2.508e-01, 1.402e-01, -4.404e-02, 4.809e-02, -9.401e-02, 1.312e-02, 3.321e-02, -7.290e-04, -2.567e-02), r);\n\tr = MulAdd(s7_2, M4(4.520e-03, 1.837e-01, -2.464e-02, 8.720e-02, 3.954e-02, -5.138e-02, 7.894e-02, -3.457e-02, 6.971e-02, 8.567e-02, -4.265e-02, 8.670e-02, 8.301e-03, -1.132e-02, 6.187e-02, 9.753e-03), r);\n\tr = MulAdd(s7_3, M4(-7.253e-02, 4.552e-02, 5.727e-02, 7.030e-02, 5.003e-02, -5.706e-02, 6.038e-02, -9.776e-02, 3.438e-01, 2.599e-02, 1.471e-01, 8.453e-02, 1.411e-01, -3.744e-03, -1.581e-01, 6.738e-02), r);\n\tr = MulAdd(s7_4, M4(8.551e-02, 1.264e-01, 1.721e-01, -1.666e-01, 1.878e-01, -1.705e-02, -9.005e-02, -1.883e-01, 1.931e-01, 4.764e-02, 1.080e-01, 3.652e-02, 2.942e-01, 6.859e-02, 1.697e-01, 2.116e-01), r);\n\tr = MulAdd(s7_5, M4(4.700e-02, 4.284e-02, 5.256e-02, -6.432e-03, 1.579e-01, 9.761e-02, 9.664e-02, 4.621e-02, -1.928e-02, 2.427e-02, 7.885e-02, -1.989e-02, 9.267e-02, 1.829e-02, 2.837e-02, 2.120e-02), r);\n\tr = MulAdd(s7_6, M4(-7.245e-02, -9.423e-03, 2.428e-02, -4.536e-03, -5.552e-02, 1.170e-01, -1.154e-02, 4.014e-03, -1.365e-01, -8.392e-02, 3.284e-02, 5.963e-02, 6.726e-02, 4.487e-02, -1.220e-01, -6.849e-03), r);\n\tr = MulAdd(s7_7, M4(2.217e-02, 5.807e-02, 9.221e-02, -1.460e-01, -1.247e-01, 7.984e-02, -1.802e-01, 5.983e-02, -5.921e-03, 8.551e-02, 1.390e-01, -4.825e-03, 2.548e-01, -2.803e-02, 1.412e-01, -1.232e-01), r);\n\tr = MulAdd(s7_8, M4(3.988e-02, 1.072e-01, -7.641e-02, -1.410e-02, 5.329e-02, 6.393e-02, -8.930e-02, 9.357e-02, -3.666e-02, -4.053e-02, -6.295e-02, 1.096e-01, -4.078e-02, 7.128e-02, 2.716e-02, -1.274e-01), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -4.198e-02, -1.482e-02, 6.775e-02, 1.910e-02 };\n\tr = MulAdd(s0_0, M4(6.122e-03, 3.221e-02, 6.415e-02, 4.652e-02, 8.167e-02, -7.381e-03, -1.575e-01, 5.303e-02, -3.314e-02, 4.220e-02, -6.893e-02, 8.922e-02, 5.497e-02, -1.050e-02, -9.800e-03, 1.611e-02), r);\n\tr = MulAdd(s0_1, M4(-7.614e-02, -1.554e-02, -1.860e-02, 5.877e-02, -1.895e-01, 1.341e-01, 1.389e-02, 1.928e-01, 1.424e-02, 8.202e-02, -6.702e-02, 7.446e-02, -3.006e-03, -1.742e-02, 4.742e-02, -2.605e-02), r);\n\tr = MulAdd(s0_2, M4(2.639e-02, -2.988e-03, 2.989e-03, 2.073e-02, -1.949e-01, -6.508e-02, 2.486e-02, 3.480e-02, 8.375e-02, 7.751e-02, -4.652e-02, 1.217e-01, -5.198e-02, 9.123e-02, -5.920e-03, 3.304e-02), r);\n\tr = MulAdd(s0_3, M4(-1.204e-01, -4.366e-02, 2.654e-03, -6.506e-02, -1.330e-01, -9.774e-02, -1.598e-01, -2.019e-04, 3.756e-02, -7.465e-02, 7.482e-03, -8.724e-03, 3.620e-02, 1.860e-01, -1.966e-02, -8.684e-04), r);\n\tr = MulAdd(s0_4, M4(-1.747e-02, -1.114e-01, 8.636e-03, -6.313e-02, 6.846e-02, -1.909e-01, -2.234e-02, 8.443e-02, 1.353e-01, -9.527e-02, -1.467e-01, -1.548e-01, 2.765e-02, 4.913e-02, -4.537e-02, 4.330e-02), r);\n\tr = MulAdd(s0_5, M4(-6.526e-02, 1.994e-02, 9.515e-03, 2.388e-01, 1.288e-02, 4.491e-02, 9.393e-02, 1.422e-01, -1.040e-01, 1.134e-01, 2.765e-02, 4.279e-02, 2.043e-02, -4.010e-02, 7.829e-03, 5.488e-02), r);\n\tr = MulAdd(s0_6, M4(2.325e-02, -3.689e-02, 1.841e-02, -1.125e-02, -9.640e-02, 2.857e-02, 3.618e-02, 7.420e-02, 5.475e-02, -1.613e-01, -4.310e-02, 9.549e-02, -2.707e-02, -1.212e-02, 5.390e-02, -1.092e-01), r);\n\tr = MulAdd(s0_7, M4(6.382e-02, 6.961e-02, 1.197e-01, 3.837e-02, -1.072e-01, 6.384e-02, -4.949e-02, 1.343e-01, -1.190e-01, 1.769e-01, 9.607e-02, -5.057e-02, -1.692e-02, 4.203e-02, -4.110e-02, -7.169e-02), r);\n\tr = MulAdd(s0_8, M4(4.697e-02, 1.007e-02, -4.633e-02, 8.848e-02, -1.414e-01, 1.499e-01, 2.593e-02, 1.987e-01, 8.290e-03, -5.479e-02, -1.708e-02, -1.725e-02, 7.765e-02, -6.238e-02, 1.249e-01, -4.455e-02), r);\n\tr = MulAdd(s1_0, M4(2.614e-01, 2.343e-02, 3.152e-02, 1.098e-01, -2.643e-02, -1.966e-04, 1.151e-01, -1.548e-01, 7.466e-02, -3.097e-02, 3.441e-02, 1.095e-01, -9.348e-03, -3.311e-02, -2.857e-02, -1.503e-03), r);\n\tr = MulAdd(s1_1, M4(-1.104e-01, -1.027e-01, -7.884e-02, 1.515e-01, -4.450e-02, 1.904e-03, 1.575e-01, 1.348e-01, 2.675e-01, 4.051e-02, 4.181e-02, -6.693e-02, -1.196e-01, -3.777e-02, 1.405e-02, 3.628e-02), r);\n\tr = MulAdd(s1_2, M4(4.757e-02, -3.474e-02, 4.202e-02, -1.033e-03, -3.025e-02, 3.884e-02, -5.866e-02, 7.499e-03, 1.294e-01, -7.598e-02, 6.225e-02, -4.151e-03, -1.089e-01, -5.878e-02, 2.673e-02, -1.284e-01), r);\n\tr = MulAdd(s1_3, M4(1.354e-01, -7.675e-02, 1.490e-01, -1.352e-01, -1.379e-02, -7.271e-02, 5.067e-02, -4.590e-02, 1.333e-01, -8.517e-02, 2.664e-03, 9.784e-02, -1.174e-01, -2.460e-02, -2.588e-01, -1.138e-01), r);\n\tr = MulAdd(s1_4, M4(1.426e-01, 4.353e-02, -8.672e-02, 2.046e-01, 1.461e-01, -5.507e-02, -5.606e-02, -2.271e-01, 3.839e-01, -8.524e-02, 1.733e-01, -1.155e-01, -1.682e-01, 4.905e-02, -3.108e-02, -4.578e-02), r);\n\tr = MulAdd(s1_5, M4(-5.940e-02, 8.678e-02, 5.285e-02, 1.852e-01, 1.069e-02, 6.512e-02, -6.523e-02, 1.531e-01, 1.185e-01, 9.120e-02, 9.382e-02, -4.945e-02, -1.033e-01, -3.036e-02, -3.838e-02, 4.350e-02), r);\n\tr = MulAdd(s1_6, M4(-2.573e-03, 4.625e-02, 2.330e-01, -1.964e-01, 2.848e-02, 7.280e-03, 6.167e-03, 5.167e-02, 2.095e-01, -1.352e-01, 2.159e-02, -6.436e-02, -9.951e-02, -8.163e-02, -1.740e-03, 2.527e-02), r);\n\tr = MulAdd(s1_7, M4(9.526e-02, -1.897e-02, -8.165e-02, 1.262e-01, 2.268e-02, -4.038e-02, -5.099e-03, -8.172e-03, 2.524e-01, -1.105e-01, 1.456e-01, 6.517e-02, -3.381e-02, -1.969e-01, 8.836e-02, -3.430e-02), r);\n\tr = MulAdd(s1_8, M4(-9.836e-02, 2.153e-01, 3.308e-02, 4.850e-02, 7.915e-02, -4.260e-02, -4.212e-02, 6.764e-02, 1.521e-01, -1.361e-02, -1.244e-02, 5.889e-02, -2.020e-02, 1.773e-01, 3.557e-02, 1.293e-02), r);\n\tr = MulAdd(s2_0, M4(-5.097e-02, -9.996e-02, -4.337e-02, -5.412e-02, 9.223e-03, 4.125e-02, 5.016e-02, -4.998e-02, 1.616e-01, 2.576e-02, 9.513e-02, -8.481e-02, 7.373e-02, -1.837e-02, -1.033e-02, -5.529e-02), r);\n\tr = MulAdd(s2_1, M4(-2.437e-01, -4.166e-02, 4.871e-02, 1.655e-02, -1.347e-02, -3.214e-03, -4.125e-02, -2.885e-02, 2.194e-02, 6.872e-02, 1.936e-01, -1.485e-01, 5.305e-02, 1.856e-02, -5.319e-03, -8.416e-02), r);\n\tr = MulAdd(s2_2, M4(3.580e-02, -5.350e-03, -2.500e-02, -8.106e-02, -8.992e-03, -1.122e-02, 2.935e-02, -6.553e-02, -9.298e-02, -6.000e-02, -8.810e-02, 8.355e-02, 3.968e-02, 4.725e-02, 5.453e-02, -2.341e-03), r);\n\tr = MulAdd(s2_3, M4(5.013e-02, 9.650e-02, 2.147e-01, -5.275e-02, -9.588e-03, -1.680e-01, -1.210e-03, -1.026e-01, 1.637e-01, -1.267e-01, -7.794e-02, -1.377e-01, -9.077e-02, 2.929e-02, -2.320e-02, -3.885e-02), r);\n\tr = MulAdd(s2_4, M4(3.537e-02, 2.861e-01, 1.609e-01, 6.069e-02, 1.520e-04, -9.723e-02, 1.479e-01, -1.614e-01, -2.389e-01, 7.053e-02, 4.435e-02, 2.380e-01, -2.154e-01, -2.414e-01, -5.209e-02, -2.076e-01), r);\n\tr = MulAdd(s2_5, M4(1.066e-01, -9.957e-02, 4.507e-02, 2.493e-01, 4.581e-02, 7.302e-02, 8.105e-02, -1.858e-02, -2.431e-01, -3.741e-02, -1.559e-01, -6.571e-02, -1.112e-01, 8.648e-02, -8.348e-02, -4.152e-02), r);\n\tr = MulAdd(s2_6, M4(-3.644e-02, 4.572e-02, -1.032e-03, 1.560e-02, -4.409e-02, -3.401e-02, -4.472e-02, 6.646e-02, 2.683e-01, 1.611e-01, 1.700e-01, -1.747e-01, 6.751e-02, 1.890e-01, 7.886e-02, -1.023e-01), r);\n\tr = MulAdd(s2_7, M4(-6.757e-02, -9.052e-02, 2.832e-02, -1.465e-01, -4.922e-03, -9.794e-02, 1.553e-02, -1.279e-01, -8.987e-02, -1.094e-02, -6.688e-02, -1.655e-02, 7.677e-03, 2.611e-01, -2.482e-01, -6.622e-02), r);\n\tr = MulAdd(s2_8, M4(2.499e-02, -1.209e-02, -1.115e-01, -9.601e-02, 9.146e-02, -5.758e-02, 4.364e-02, -1.167e-01, -1.097e-01, 1.173e-01, -1.560e-02, 3.475e-02, 2.849e-02, 1.014e-01, 8.593e-02, -1.590e-01), r);\n\tr = MulAdd(s3_0, M4(-4.347e-02, -1.048e-01, -7.880e-02, -4.102e-02, 4.306e-02, 7.258e-02, -5.191e-02, 1.725e-01, 2.428e-02, 3.249e-02, -2.611e-02, -2.422e-02, 2.404e-02, -1.102e-01, 5.414e-02, -1.339e-01), r);\n\tr = MulAdd(s3_1, M4(-1.674e-01, -7.777e-02, 2.180e-02, -5.083e-02, 8.096e-02, -3.833e-02, 6.135e-02, 1.318e-01, -1.086e-01, 8.571e-02, 1.685e-01, 6.385e-02, -1.179e-02, 2.198e-02, -2.858e-02, -1.056e-02), r);\n\tr = MulAdd(s3_2, M4(-2.490e-02, -1.257e-02, -4.781e-02, -1.123e-01, -5.627e-02, -7.591e-02, -1.466e-01, 3.166e-02, -3.609e-02, -1.089e-02, 5.629e-02, 1.126e-01, 5.704e-02, -9.620e-03, 3.629e-02, 2.746e-02), r);\n\tr = MulAdd(s3_3, M4(-6.588e-03, 1.090e-01, 1.702e-01, -7.298e-02, 2.883e-02, -1.147e-01, -7.601e-02, -1.193e-01, -8.575e-02, -3.435e-02, -3.054e-02, -1.020e-02, -4.655e-02, 7.413e-02, -3.645e-02, 1.089e-02), r);\n\tr = MulAdd(s3_4, M4(-1.556e-01, 6.820e-02, 9.447e-02, 1.239e-01, -2.075e-02, -1.816e-01, 1.924e-02, -3.414e-02, -1.080e-03, 8.237e-02, 1.103e-01, 8.603e-03, 1.465e-02, -5.061e-02, -5.050e-02, -3.169e-02), r);\n\tr = MulAdd(s3_5, M4(2.978e-03, -6.699e-02, -8.814e-03, 1.197e-01, -1.398e-02, 7.272e-02, -9.433e-02, -6.428e-02, -6.159e-03, -1.572e-01, -1.129e-02, 3.149e-02, 7.888e-02, 1.852e-02, 2.549e-02, 5.520e-02), r);\n\tr = MulAdd(s3_6, M4(3.404e-02, 7.653e-02, 1.350e-04, -1.302e-02, -6.493e-03, 5.301e-02, 5.665e-02, 2.738e-03, 4.903e-02, 2.003e-01, -5.064e-02, 2.970e-02, -5.188e-03, 7.445e-02, 2.803e-02, -8.723e-02), r);\n\tr = MulAdd(s3_7, M4(-3.503e-02, -9.320e-02, -7.654e-03, -2.625e-02, 4.191e-02, 4.742e-02, 1.224e-02, -8.254e-02, 3.761e-02, -9.573e-02, -9.324e-02, 2.324e-03, 4.435e-02, 4.660e-02, -2.731e-02, -5.098e-02), r);\n\tr = MulAdd(s3_8, M4(1.075e-01, -8.816e-02, -1.708e-02, 4.243e-02, 2.831e-02, -1.839e-02, -4.368e-03, 6.529e-02, 6.338e-02, 6.434e-02, 1.710e-02, -3.947e-02, 3.058e-02, -8.413e-02, 1.092e-01, 6.166e-02), r);\n\tr = MulAdd(s4_0, M4(9.885e-02, -2.609e-02, -6.038e-03, -2.739e-03, -3.237e-02, -1.558e-02, -5.483e-03, -9.643e-02, -7.105e-04, 5.494e-02, 5.130e-02, -1.732e-01, 5.518e-02, -3.268e-02, 1.108e-01, -2.745e-02), r);\n\tr = MulAdd(s4_1, M4(1.702e-01, -2.706e-02, 3.278e-02, -7.609e-02, 2.094e-01, -3.217e-02, -1.866e-01, 1.230e-02, 7.174e-02, -3.407e-02, -3.769e-02, 1.175e-02, 3.143e-02, 2.576e-02, 1.159e-01, 2.635e-03), r);\n\tr = MulAdd(s4_2, M4(1.988e-01, -8.267e-02, -5.928e-02, -1.172e-01, -8.113e-02, 1.107e-01, -3.047e-02, 1.694e-01, 6.036e-02, -1.419e-02, 4.958e-02, 1.981e-02, 2.589e-02, -2.834e-02, 9.015e-02, -4.404e-02), r);\n\tr = MulAdd(s4_3, M4(4.116e-02, -2.129e-02, -8.551e-02, -3.631e-02, 7.849e-02, 2.772e-02, 1.066e-03, -1.486e-02, 8.836e-02, -1.642e-01, 5.603e-02, -2.434e-03, 7.719e-03, -2.007e-01, -1.681e-02, -2.288e-02), r);\n\tr = MulAdd(s4_4, M4(-8.271e-02, 1.803e-01, -1.171e-01, -1.581e-02, 8.760e-03, -5.076e-02, -1.394e-01, 3.074e-02, -3.828e-02, 1.644e-01, 9.983e-02, 3.880e-01, -1.280e-01, -9.624e-02, 8.672e-02, -5.392e-02), r);\n\tr = MulAdd(s4_5, M4(2.466e-01, -4.310e-02, -6.503e-02, -6.675e-02, -5.871e-02, 3.674e-02, 3.985e-02, 4.898e-02, 7.213e-02, 2.410e-02, 9.558e-02, -1.250e-02, -1.169e-02, 1.462e-01, 2.751e-02, 4.281e-02), r);\n\tr = MulAdd(s4_6, M4(1.422e-01, 8.493e-02, -9.694e-02, -1.459e-01, -5.319e-03, 8.994e-02, -4.240e-02, -3.156e-03, -1.720e-02, 3.089e-02, -5.515e-02, 1.201e-02, 1.678e-02, 1.007e-01, 5.532e-02, -5.257e-02), r);\n\tr = MulAdd(s4_7, M4(7.604e-02, 1.544e-01, -5.326e-03, -1.967e-04, -7.441e-02, -5.191e-02, -8.681e-03, -7.487e-02, -3.499e-02, -1.164e-01, -5.844e-02, -1.431e-01, 4.536e-02, 1.019e-01, -7.182e-02, 5.217e-02), r);\n\tr = MulAdd(s4_8, M4(2.261e-01, 1.346e-01, -1.518e-01, -2.409e-01, 1.922e-02, -1.039e-01, 6.183e-02, 1.770e-02, -1.253e-02, -2.157e-01, 6.423e-02, -6.254e-02, -1.110e-02, -9.760e-02, 7.552e-02, 2.143e-01), r);\n\tr = MulAdd(s5_0, M4(-1.293e-02, 3.530e-02, -4.793e-02, -2.026e-02, 7.835e-02, 7.064e-02, 1.519e-01, -3.133e-02, -8.069e-02, 7.062e-02, -3.027e-02, -7.878e-02, 1.247e-01, 5.229e-02, -5.594e-02, 1.688e-01), r);\n\tr = MulAdd(s5_1, M4(-5.445e-03, 2.280e-02, -1.896e-02, 5.078e-02, 7.634e-02, 1.594e-03, 8.450e-03, -5.722e-03, 5.616e-02, 1.795e-02, 3.200e-02, 7.405e-03, -1.824e-01, 1.101e-01, -1.799e-02, 1.183e-01), r);\n\tr = MulAdd(s5_2, M4(-4.660e-02, -2.095e-03, -3.316e-02, -3.642e-02, -2.935e-02, 6.936e-02, 4.058e-03, 2.224e-01, 1.972e-02, 9.378e-02, 5.085e-02, -1.652e-03, -2.666e-02, 2.385e-02, -7.901e-02, 4.147e-02), r);\n\tr = MulAdd(s5_3, M4(6.111e-02, -1.291e-03, 9.123e-02, -7.596e-03, -3.088e-02, -2.414e-02, 8.107e-02, -4.347e-02, -1.154e-01, -7.597e-02, 3.140e-02, -9.213e-02, 2.709e-01, -3.836e-02, -6.321e-02, 1.294e-01), r);\n\tr = MulAdd(s5_4, M4(-1.904e-01, -1.248e-02, 4.863e-02, 2.437e-02, 9.780e-02, -3.476e-02, 6.971e-02, -8.925e-02, -3.409e-02, -8.134e-02, 2.155e-01, 2.111e-01, 1.145e-01, 6.807e-02, -7.996e-02, 1.059e-01), r);\n\tr = MulAdd(s5_5, M4(-2.078e-02, -5.235e-02, -3.481e-02, -1.279e-01, -4.278e-02, 2.770e-01, -1.707e-01, 1.052e-01, 1.513e-01, 7.838e-03, 1.237e-01, -1.042e-01, -1.111e-03, 2.036e-02, -1.705e-01, 4.461e-02), r);\n\tr = MulAdd(s5_6, M4(9.067e-02, -8.189e-02, 8.152e-02, -1.201e-01, 5.614e-02, 4.607e-03, -1.237e-01, 1.687e-03, 4.723e-02, 4.826e-02, 1.634e-02, 9.371e-02, 5.985e-02, 7.587e-02, -6.067e-02, -7.720e-03), r);\n\tr = MulAdd(s5_7, M4(2.234e-03, -4.154e-02, -3.238e-02, 1.585e-01, 1.864e-01, -4.508e-02, -5.011e-02, 4.000e-02, 1.318e-02, -1.099e-01, 8.159e-02, 4.908e-02, 5.029e-02, 1.217e-01, -3.190e-02, -1.377e-01), r);\n\tr = MulAdd(s5_8, M4(-5.333e-02, 2.052e-01, -7.738e-02, -2.935e-02, 7.547e-02, -1.209e-03, -4.432e-02, -4.809e-02, -4.971e-02, 9.437e-02, 2.678e-04, 6.610e-03, 6.923e-02, -3.818e-02, -8.644e-02, -1.157e-01), r);\n\tr = MulAdd(s6_0, M4(7.258e-02, 4.038e-02, 1.938e-01, 1.214e-01, 1.843e-02, -1.689e-02, 2.054e-02, 3.456e-02, 4.086e-02, -2.171e-03, -1.661e-02, 4.080e-02, -7.667e-03, -2.033e-02, 6.338e-02, -5.188e-02), r);\n\tr = MulAdd(s6_1, M4(3.389e-02, 2.022e-02, 1.517e-01, -1.794e-02, 4.552e-02, -1.331e-02, -2.784e-02, 5.282e-02, -3.981e-02, 4.961e-02, -4.364e-02, -2.406e-02, 4.692e-02, 6.920e-03, -1.967e-01, 3.697e-02), r);\n\tr = MulAdd(s6_2, M4(-8.807e-02, 5.278e-02, -1.307e-01, -5.170e-02, 6.900e-03, -2.587e-02, -2.910e-02, 1.182e-01, -1.332e-02, -8.885e-02, -3.295e-02, 6.568e-02, 7.378e-02, -1.441e-01, 1.888e-01, -6.906e-02), r);\n\tr = MulAdd(s6_3, M4(2.135e-01, 9.815e-02, -2.317e-03, 7.926e-02, 7.139e-02, 3.568e-02, 1.005e-01, 5.436e-02, 3.522e-02, -7.201e-02, 2.137e-02, 1.105e-01, 7.763e-02, 1.051e-02, -2.502e-02, -1.303e-01), r);\n\tr = MulAdd(s6_4, M4(1.521e-01, -4.022e-02, 1.071e-01, 2.978e-01, 2.251e-01, 1.372e-02, -8.842e-02, 8.195e-02, -1.758e-02, 1.544e-01, -7.503e-02, 2.309e-02, -1.311e-01, 6.786e-02, 6.556e-02, 1.875e-01), r);\n\tr = MulAdd(s6_5, M4(1.487e-01, -3.226e-03, 5.028e-02, -3.164e-02, 8.212e-02, 7.144e-02, -5.512e-02, 1.067e-01, -2.526e-02, -8.824e-02, -7.579e-02, -4.321e-03, 1.298e-02, 1.498e-01, 7.777e-02, 7.105e-02), r);\n\tr = MulAdd(s6_6, M4(-1.814e-01, -5.366e-03, 1.055e-01, 3.065e-02, -7.632e-02, 5.231e-02, -6.155e-03, -1.296e-01, 1.567e-01, -5.051e-03, -4.366e-02, 1.596e-01, -1.374e-01, 2.075e-01, -2.219e-02, -2.834e-01), r);\n\tr = MulAdd(s6_7, M4(-1.007e-01, -1.339e-01, -1.843e-01, -2.791e-02, 1.473e-02, -3.861e-02, 9.616e-02, 4.250e-03, 4.409e-02, 1.443e-01, -3.020e-02, -3.879e-02, 1.685e-01, -1.937e-01, 5.492e-02, 1.600e-01), r);\n\tr = MulAdd(s6_8, M4(-1.563e-01, 1.558e-01, 9.023e-02, 4.422e-02, 9.521e-02, -7.681e-03, -1.173e-01, 7.469e-03, -1.848e-02, -1.545e-01, -2.770e-02, 3.015e-02, 5.900e-02, -2.075e-02, 4.698e-02, 1.772e-01), r);\n\tr = MulAdd(s7_0, M4(8.200e-02, 5.756e-02, 9.661e-02, 4.352e-02, -1.281e-01, 6.157e-02, 9.155e-03, -1.418e-02, 1.909e-02, 1.285e-01, -1.552e-02, -7.421e-02, -1.242e-02, -2.537e-02, -6.863e-02, 7.735e-02), r);\n\tr = MulAdd(s7_1, M4(9.257e-03, 5.372e-04, 2.077e-02, 2.666e-02, 2.836e-02, 6.640e-02, -8.838e-02, 1.422e-01, -7.205e-03, 6.888e-02, -1.126e-01, 4.261e-02, 5.900e-02, -3.620e-02, -1.208e-01, -8.781e-02), r);\n\tr = MulAdd(s7_2, M4(-1.545e-03, 3.824e-02, 1.034e-02, 1.034e-02, 9.623e-02, -6.105e-02, 2.341e-02, -5.951e-02, -3.689e-02, 3.023e-02, 5.508e-02, 1.259e-01, -7.240e-03, 1.046e-02, 3.698e-02, 7.760e-02), r);\n\tr = MulAdd(s7_3, M4(8.481e-02, -1.001e-02, -3.504e-02, -6.743e-02, 1.274e-01, 1.218e-01, 1.881e-01, 1.043e-01, 1.663e-02, 1.255e-01, 6.236e-02, 1.034e-02, -1.097e-01, 2.092e-02, -9.565e-03, 3.159e-02), r);\n\tr = MulAdd(s7_4, M4(-1.373e-01, -8.443e-02, 1.654e-02, 8.372e-02, 1.719e-01, 1.171e-01, -6.373e-02, -1.725e-01, 1.305e-01, 1.391e-01, -7.093e-02, 2.045e-01, 9.758e-03, 7.522e-02, 1.208e-01, 1.445e-01), r);\n\tr = MulAdd(s7_5, M4(3.136e-02, 7.428e-02, 2.377e-02, -5.426e-02, -5.774e-02, -2.218e-02, 3.419e-02, -1.563e-01, 2.884e-02, 7.586e-02, 1.002e-01, -9.772e-02, -6.488e-02, 1.270e-01, -5.999e-02, 1.439e-02), r);\n\tr = MulAdd(s7_6, M4(-6.248e-02, 2.695e-03, 5.388e-02, -4.867e-02, -1.261e-01, 1.290e-01, 8.692e-02, -2.300e-01, 1.047e-01, 1.861e-02, 1.120e-01, -9.187e-02, -1.043e-02, 6.918e-02, -1.089e-02, -1.033e-01), r);\n\tr = MulAdd(s7_7, M4(6.349e-03, -8.782e-02, 7.311e-02, 7.680e-02, 4.490e-02, -5.650e-02, 2.508e-02, -2.658e-02, 3.531e-02, 4.187e-02, 1.274e-01, 2.816e-02, -6.453e-03, -1.352e-01, 2.652e-03, 1.852e-01), r);\n\tr = MulAdd(s7_8, M4(1.649e-02, 2.633e-02, -2.998e-02, -5.636e-02, 1.651e-02, 3.758e-02, -1.289e-02, -2.705e-02, 1.393e-02, -3.522e-02, 9.666e-03, -5.731e-02, 3.139e-02, -3.168e-02, -3.724e-02, 1.530e-01), r);\n\treturn r;\n}\n\nvoid Pass11(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 12\n//!DESC conv11\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.404e-02, 4.612e-02, -2.197e-02, 2.583e-02 };\n\tr = MulAdd(s0_0, M4(1.027e-02, 3.350e-02, 1.428e-02, 6.321e-02, 4.238e-02, -7.210e-02, 9.887e-02, 5.361e-02, 3.456e-02, 1.275e-01, -1.207e-01, -2.408e-03, -5.999e-02, -1.340e-02, 7.271e-02, 4.116e-02), r);\n\tr = MulAdd(s0_1, M4(-4.305e-03, 7.823e-02, 1.873e-01, 8.701e-03, -1.526e-01, -1.319e-01, 1.577e-01, -1.227e-01, -5.320e-02, 5.097e-02, 4.025e-02, -2.267e-02, 4.957e-02, 6.809e-02, -1.239e-01, 4.480e-02), r);\n\tr = MulAdd(s0_2, M4(2.936e-02, 2.545e-01, -2.636e-02, 9.335e-02, 1.159e-03, -1.849e-01, -8.767e-02, 3.542e-02, -2.835e-02, -6.257e-02, 5.403e-02, 7.037e-02, 6.892e-02, 9.439e-02, -1.353e-02, -3.231e-02), r);\n\tr = MulAdd(s0_3, M4(-8.178e-02, -3.406e-02, 1.900e-01, -2.007e-01, 1.111e-01, 2.181e-02, 1.365e-01, 5.202e-02, -1.072e-01, 2.550e-02, -2.048e-01, -3.998e-02, 9.361e-02, 3.129e-04, -1.810e-02, -9.585e-02), r);\n\tr = MulAdd(s0_4, M4(2.677e-02, 8.322e-02, 4.133e-02, 1.011e-02, -3.875e-04, -5.028e-02, 8.225e-02, 1.470e-01, 1.969e-01, 1.437e-01, 9.116e-03, -7.058e-02, -5.259e-02, 1.331e-01, -3.768e-02, -1.607e-01), r);\n\tr = MulAdd(s0_5, M4(-1.911e-01, -2.324e-01, -5.346e-02, 4.299e-02, 2.093e-03, -1.989e-02, 5.742e-02, -3.412e-02, -3.372e-03, -9.658e-03, -1.687e-01, 1.714e-01, 5.278e-02, 1.814e-02, -2.189e-02, 5.993e-02), r);\n\tr = MulAdd(s0_6, M4(8.498e-03, -1.256e-02, 2.460e-02, -5.061e-02, -2.528e-03, -8.265e-02, 8.679e-02, -7.378e-02, 2.867e-02, 1.050e-01, -2.118e-02, 3.698e-02, -1.119e-02, -2.787e-02, 4.916e-02, 5.612e-02), r);\n\tr = MulAdd(s0_7, M4(-6.157e-02, 1.318e-01, 2.041e-02, -2.950e-02, 1.291e-03, 9.943e-02, 3.344e-02, -1.789e-01, 9.008e-02, -1.986e-01, -1.095e-01, 1.193e-01, -5.329e-02, -8.055e-03, 1.282e-01, -3.014e-02), r);\n\tr = MulAdd(s0_8, M4(8.404e-02, 5.007e-02, -3.086e-02, -7.501e-02, 2.014e-02, -4.887e-02, 3.471e-02, 2.891e-02, -9.537e-02, -7.650e-02, 6.983e-02, 9.330e-02, -6.610e-02, 9.508e-02, 1.635e-02, -1.666e-02), r);\n\tr = MulAdd(s1_0, M4(-4.352e-03, 4.436e-02, -1.928e-02, 6.807e-02, -1.587e-02, -1.885e-02, -3.777e-02, 1.072e-01, 1.705e-02, -1.222e-02, 8.458e-03, 2.098e-02, -6.163e-03, -4.240e-02, 7.474e-02, 2.001e-02), r);\n\tr = MulAdd(s1_1, M4(-3.622e-03, 1.108e-01, 1.199e-03, -6.871e-02, -1.247e-01, -2.878e-02, -2.393e-04, -6.960e-02, 1.740e-03, -6.211e-02, 7.958e-02, 6.123e-02, -5.215e-02, -8.874e-02, -5.463e-02, -1.427e-03), r);\n\tr = MulAdd(s1_2, M4(7.850e-02, 5.071e-04, 1.559e-02, -4.436e-02, 1.704e-02, -5.994e-02, -2.089e-03, 6.444e-02, -3.355e-02, 7.442e-02, -2.970e-02, 1.828e-02, 7.916e-03, 7.635e-03, 6.492e-02, -3.487e-04), r);\n\tr = MulAdd(s1_3, M4(-2.986e-02, 4.872e-02, 3.465e-02, -1.199e-01, -1.510e-01, 7.831e-02, 1.277e-01, -5.327e-03, 3.122e-04, -1.056e-02, -2.310e-02, 5.508e-02, 1.646e-01, -4.631e-02, 4.147e-02, 1.827e-02), r);\n\tr = MulAdd(s1_4, M4(9.032e-02, 5.492e-02, -1.526e-01, -9.587e-02, 3.079e-02, -5.876e-02, -4.757e-02, 5.352e-02, 3.499e-03, 9.725e-02, 1.254e-01, 2.497e-01, -1.745e-01, -3.897e-02, 1.041e-02, -1.713e-01), r);\n\tr = MulAdd(s1_5, M4(1.645e-02, -2.164e-03, -2.104e-02, 5.136e-03, 5.553e-02, 2.830e-03, 1.231e-01, -6.042e-02, 6.551e-02, 2.146e-02, -2.451e-02, 9.546e-02, -1.102e-01, -4.046e-02, 9.812e-03, 5.146e-02), r);\n\tr = MulAdd(s1_6, M4(-8.014e-02, -5.806e-02, -4.910e-02, 4.263e-02, 2.588e-02, 7.238e-02, 8.806e-02, -4.957e-02, 1.304e-01, -1.696e-02, -1.334e-01, 6.098e-03, 6.232e-02, -2.102e-02, 7.446e-02, 4.797e-02), r);\n\tr = MulAdd(s1_7, M4(-6.799e-02, 5.962e-02, 4.658e-02, -1.627e-02, 3.097e-02, 7.660e-02, 9.734e-02, -1.109e-02, 8.521e-02, 2.398e-02, 1.091e-01, -5.402e-02, -3.233e-02, 2.900e-02, 8.171e-02, 5.457e-02), r);\n\tr = MulAdd(s1_8, M4(1.813e-02, -5.903e-02, -8.821e-02, 3.328e-02, -2.800e-02, 5.176e-02, -2.824e-02, 2.950e-02, -2.937e-02, -2.933e-02, 1.451e-02, -1.768e-02, -1.294e-01, -2.657e-02, -1.093e-01, -2.449e-02), r);\n\tr = MulAdd(s2_0, M4(-5.576e-02, 4.547e-02, 2.213e-02, -5.612e-02, -6.076e-02, -5.283e-02, 9.674e-02, -2.427e-02, 5.090e-02, -6.185e-02, 6.215e-02, 3.471e-02, 2.439e-02, 8.819e-02, -6.768e-02, -3.541e-02), r);\n\tr = MulAdd(s2_1, M4(9.906e-02, 1.856e-04, 7.059e-02, -1.346e-02, -2.085e-02, -3.300e-02, -2.753e-02, -1.480e-02, -3.965e-03, -5.163e-03, -9.676e-02, 2.592e-02, -6.613e-02, 2.231e-02, -2.559e-02, 1.414e-02), r);\n\tr = MulAdd(s2_2, M4(7.066e-02, -9.089e-02, 4.294e-02, 6.855e-03, 1.019e-01, 1.653e-02, 4.635e-02, 1.610e-02, 3.856e-02, 2.143e-02, 1.450e-01, -1.787e-02, -8.608e-03, 8.413e-02, -4.002e-02, -1.867e-02), r);\n\tr = MulAdd(s2_3, M4(-8.533e-02, 1.267e-01, -2.513e-02, 5.467e-02, -1.880e-01, -3.546e-02, -1.445e-01, -9.015e-03, -6.507e-02, 8.525e-02, 8.733e-02, 6.145e-02, -1.146e-01, -1.366e-02, -3.453e-02, 1.275e-01), r);\n\tr = MulAdd(s2_4, M4(7.469e-02, -4.658e-02, -9.446e-02, -3.588e-02, 1.319e-01, -2.569e-01, 9.587e-02, 6.460e-02, 2.033e-01, 6.380e-03, 7.087e-02, 3.207e-01, 1.154e-02, 4.893e-02, -2.383e-02, -7.729e-02), r);\n\tr = MulAdd(s2_5, M4(1.595e-03, -9.912e-03, 7.094e-02, 8.387e-03, 1.157e-02, 7.051e-03, 1.257e-01, -6.340e-02, -8.918e-02, 4.954e-02, -1.062e-01, -3.136e-02, 2.560e-02, 4.426e-02, -5.615e-02, -6.095e-02), r);\n\tr = MulAdd(s2_6, M4(-1.794e-02, -6.748e-02, -3.150e-03, -4.137e-02, -5.120e-02, -1.737e-01, -1.672e-01, 7.418e-02, -2.338e-03, -1.807e-02, 1.264e-02, 1.958e-02, -5.312e-02, 2.362e-02, -3.098e-02, 6.951e-03), r);\n\tr = MulAdd(s2_7, M4(-6.799e-02, 7.544e-02, 9.480e-02, 6.688e-02, -9.454e-02, -2.227e-01, 1.661e-01, 7.126e-02, -2.606e-02, -6.588e-02, -1.764e-02, -2.451e-02, 5.529e-03, 2.664e-02, -2.938e-02, -2.994e-02), r);\n\tr = MulAdd(s2_8, M4(-6.069e-02, 4.577e-02, -1.125e-01, -2.641e-02, 6.419e-02, 3.102e-02, -6.568e-02, 6.058e-02, -4.397e-02, 1.204e-01, -1.435e-01, 6.724e-02, -2.214e-02, 3.005e-02, -8.460e-02, -1.527e-03), r);\n\tr = MulAdd(s3_0, M4(6.388e-02, 7.439e-02, 8.771e-02, -1.071e-01, 4.175e-03, 1.651e-02, -2.110e-02, 1.469e-02, 4.442e-02, -1.501e-01, 3.256e-02, 8.358e-03, 5.984e-02, -1.449e-02, -6.451e-02, -3.232e-02), r);\n\tr = MulAdd(s3_1, M4(9.124e-02, -8.852e-02, -2.820e-02, 1.702e-01, -4.896e-02, -1.029e-02, -1.056e-01, 4.557e-02, 1.048e-01, -4.230e-02, -2.151e-02, 3.457e-02, 2.427e-01, 1.553e-02, 1.304e-01, 1.004e-01), r);\n\tr = MulAdd(s3_2, M4(5.056e-02, -1.253e-01, 7.898e-02, -1.561e-02, 8.035e-02, 2.565e-02, 2.106e-02, -3.900e-02, 1.127e-01, 2.851e-02, -1.163e-02, 1.693e-01, 4.379e-02, 1.405e-02, -6.421e-02, -1.927e-02), r);\n\tr = MulAdd(s3_3, M4(-1.382e-01, 2.770e-01, -9.469e-02, -6.580e-02, -1.002e-01, -1.981e-02, -3.225e-02, 5.722e-02, -1.903e-01, -1.401e-01, -4.509e-02, 5.948e-02, -1.062e-01, 1.216e-01, -3.595e-02, -5.656e-02), r);\n\tr = MulAdd(s3_4, M4(-1.419e-01, 1.411e-02, -1.486e-01, -4.730e-02, 1.046e-01, 3.938e-02, 4.987e-02, 1.105e-01, 2.553e-01, 1.622e-01, -1.038e-01, 2.154e-01, 1.589e-01, 5.712e-02, -2.280e-02, -1.275e-01), r);\n\tr = MulAdd(s3_5, M4(-1.119e-01, -6.812e-02, 1.085e-02, -8.278e-02, -7.537e-02, -7.356e-02, 8.431e-03, -7.313e-02, -1.562e-01, 7.580e-02, -1.201e-01, 4.693e-02, 1.688e-03, 8.123e-02, -1.526e-01, -1.570e-02), r);\n\tr = MulAdd(s3_6, M4(3.434e-02, 2.129e-02, 3.146e-02, 1.193e-01, -6.725e-02, -9.413e-02, -4.018e-02, 6.954e-02, 2.412e-02, 2.030e-02, -3.220e-04, 2.826e-02, -6.690e-02, -9.628e-02, -1.657e-01, 1.762e-01), r);\n\tr = MulAdd(s3_7, M4(-1.295e-01, -1.515e-01, 1.126e-01, 5.264e-02, -4.873e-02, -5.810e-02, 7.918e-02, 2.426e-02, -4.044e-03, -5.359e-02, -7.819e-02, 6.580e-02, -7.700e-02, -1.432e-01, -1.003e-01, 4.793e-02), r);\n\tr = MulAdd(s3_8, M4(5.132e-02, 1.318e-01, -5.807e-02, 1.543e-02, 3.343e-02, -2.358e-02, 5.884e-02, 8.555e-02, -9.917e-02, 2.705e-02, 1.954e-02, 7.334e-03, -2.228e-02, -1.743e-01, -1.065e-02, 6.207e-03), r);\n\tr = MulAdd(s4_0, M4(-7.787e-02, -1.987e-02, -3.034e-02, 4.881e-02, 4.049e-02, 9.913e-02, 1.125e-01, -5.630e-03, -1.277e-01, -1.210e-01, 2.032e-02, -1.912e-02, 1.864e-01, -3.915e-02, 1.205e-01, 7.250e-02), r);\n\tr = MulAdd(s4_1, M4(-1.865e-01, 7.176e-02, -2.071e-02, 9.617e-02, -3.999e-02, 8.436e-04, 5.868e-02, 5.035e-02, 1.638e-01, 5.488e-02, 5.034e-02, 1.074e-01, 3.680e-03, 1.552e-02, 1.061e-01, 1.514e-02), r);\n\tr = MulAdd(s4_2, M4(-1.471e-01, -7.088e-02, -5.048e-02, -1.602e-02, 2.071e-02, 1.244e-02, -5.500e-02, -1.124e-01, 8.448e-02, 8.704e-02, 3.572e-03, 2.569e-02, 6.429e-02, 3.312e-02, 7.447e-03, -7.709e-02), r);\n\tr = MulAdd(s4_3, M4(-3.323e-03, -7.480e-02, -6.359e-03, -8.133e-02, -2.709e-02, 1.274e-01, 2.387e-01, -1.789e-03, -1.244e-01, -9.319e-02, -1.313e-02, -5.737e-02, 2.097e-01, 1.328e-01, 1.389e-01, -7.027e-02), r);\n\tr = MulAdd(s4_4, M4(-1.533e-02, 5.026e-02, -1.738e-01, -1.808e-01, 9.018e-02, 3.262e-01, 1.511e-01, 1.832e-01, 1.525e-01, 1.369e-01, -2.421e-01, -1.503e-01, -4.022e-02, 6.431e-02, 2.300e-01, 2.242e-01), r);\n\tr = MulAdd(s4_5, M4(1.554e-01, -1.086e-01, 2.606e-02, -2.852e-02, 2.103e-02, 9.414e-02, -8.182e-02, 1.710e-01, -1.289e-03, 9.796e-02, -7.346e-02, 6.094e-03, 2.657e-02, 3.331e-02, -6.860e-02, -1.547e-02), r);\n\tr = MulAdd(s4_6, M4(-4.565e-02, -1.252e-01, -1.260e-01, 1.447e-01, 1.822e-02, 1.472e-01, 2.370e-01, 6.200e-02, 3.505e-02, 7.348e-02, -3.147e-02, 1.064e-02, 8.525e-02, -9.476e-02, -2.267e-02, -3.494e-02), r);\n\tr = MulAdd(s4_7, M4(1.060e-01, -8.831e-02, 4.264e-02, 2.502e-02, 1.012e-01, 2.622e-01, 4.551e-03, -5.335e-02, -1.870e-02, 2.267e-02, -8.892e-02, -1.373e-02, -4.082e-02, 2.549e-02, 1.202e-01, -1.565e-01), r);\n\tr = MulAdd(s4_8, M4(-5.898e-02, 2.479e-02, -3.942e-02, -3.697e-03, -1.255e-01, 1.387e-01, -1.316e-01, 8.861e-02, 4.392e-02, -1.030e-01, 6.450e-03, -3.109e-02, -1.278e-02, 7.887e-02, -6.572e-02, -4.646e-02), r);\n\tr = MulAdd(s5_0, M4(-1.887e-02, -1.250e-01, -1.006e-02, 4.404e-02, -5.668e-02, 6.629e-02, 2.281e-02, 5.303e-03, 6.988e-02, -2.749e-02, -5.214e-02, 3.167e-02, -4.101e-02, -1.666e-02, -1.159e-02, 1.014e-02), r);\n\tr = MulAdd(s5_1, M4(4.428e-02, 5.437e-02, 1.288e-01, 9.757e-03, 2.095e-02, -4.681e-02, -3.719e-02, 9.138e-02, 1.123e-01, -3.314e-02, -8.532e-02, 1.557e-01, -5.768e-02, -2.301e-02, 6.916e-02, 1.345e-02), r);\n\tr = MulAdd(s5_2, M4(1.333e-02, 6.317e-02, -2.239e-02, 2.617e-02, -3.199e-02, 5.707e-02, -1.811e-02, -4.650e-02, 2.383e-02, -8.511e-02, 1.560e-02, -9.861e-02, 1.960e-02, 4.809e-02, -3.470e-02, -4.688e-02), r);\n\tr = MulAdd(s5_3, M4(-3.797e-02, -4.800e-02, -1.630e-02, 4.191e-02, -2.801e-02, -3.671e-02, 1.489e-04, -3.431e-02, 1.077e-01, 7.320e-02, 4.196e-02, 5.629e-02, -1.585e-01, -1.169e-01, 2.734e-02, 6.072e-02), r);\n\tr = MulAdd(s5_4, M4(5.287e-02, 1.144e-01, 2.570e-02, -2.558e-02, 1.581e-02, 4.501e-02, 1.703e-01, 5.116e-02, 1.633e-01, 9.708e-02, -1.226e-01, -1.191e-01, -1.863e-01, -5.411e-02, 1.863e-01, 2.647e-01), r);\n\tr = MulAdd(s5_5, M4(7.694e-02, 1.329e-01, -3.723e-02, 1.601e-02, 6.980e-02, 3.843e-02, -1.607e-02, 5.129e-02, 8.915e-02, 1.707e-01, 3.626e-02, -6.211e-02, -1.157e-02, -2.449e-02, -6.461e-02, 3.962e-02), r);\n\tr = MulAdd(s5_6, M4(1.273e-02, 4.972e-03, 8.003e-02, 3.084e-03, -2.563e-02, 1.600e-01, 1.369e-01, -6.358e-03, 3.958e-02, 7.380e-02, -6.270e-02, -2.599e-02, -2.974e-02, -5.836e-02, -9.067e-04, -1.933e-02), r);\n\tr = MulAdd(s5_7, M4(-8.110e-03, 6.509e-02, 4.287e-02, -1.191e-02, 9.469e-02, 1.269e-01, -5.862e-03, -1.099e-01, -4.246e-02, 8.094e-05, 6.560e-02, 7.111e-02, -1.085e-01, 4.565e-04, 3.576e-02, -3.619e-02), r);\n\tr = MulAdd(s5_8, M4(-7.703e-02, 4.137e-02, -1.278e-01, 1.509e-01, -4.019e-02, 1.154e-01, -4.917e-02, -4.517e-03, -2.795e-02, -9.270e-02, 7.441e-03, -4.642e-02, -3.896e-03, 5.552e-02, -9.551e-04, -1.710e-04), r);\n\tr = MulAdd(s6_0, M4(3.741e-02, 2.367e-02, 4.031e-02, 5.234e-02, 5.206e-03, 3.340e-02, 1.847e-01, -1.892e-02, -1.302e-01, 1.977e-02, -1.397e-02, 1.557e-01, -4.721e-02, 5.117e-02, 5.815e-03, 5.388e-02), r);\n\tr = MulAdd(s6_1, M4(1.490e-01, -6.906e-03, -2.045e-02, 9.492e-02, -2.670e-01, 3.501e-02, 4.475e-02, 3.518e-02, -8.545e-02, -7.837e-02, 5.113e-02, 3.450e-02, 9.494e-02, 5.137e-02, -2.409e-02, -1.630e-02), r);\n\tr = MulAdd(s6_2, M4(1.001e-01, 7.930e-02, -2.769e-02, -8.569e-03, -2.833e-02, 7.423e-02, 5.656e-02, 1.955e-02, -2.687e-02, -1.095e-01, 5.323e-02, 1.263e-04, 9.546e-02, -3.930e-03, 1.200e-02, 7.090e-02), r);\n\tr = MulAdd(s6_3, M4(8.177e-02, 2.099e-01, 1.219e-03, 5.645e-02, 1.903e-01, 1.848e-01, -9.204e-02, 6.842e-02, 1.345e-02, 1.227e-01, 1.105e-01, -1.011e-01, -2.807e-01, 5.359e-02, 7.534e-03, -1.919e-01), r);\n\tr = MulAdd(s6_4, M4(-2.466e-01, -1.215e-01, -2.944e-02, -1.788e-01, -3.305e-02, -2.583e-02, 6.965e-02, 1.115e-01, -8.188e-03, 1.026e-01, 1.654e-01, -9.167e-02, 5.933e-02, -3.517e-03, -5.736e-02, 4.267e-02), r);\n\tr = MulAdd(s6_5, M4(-4.238e-02, 1.966e-02, -4.612e-02, 4.649e-02, 3.077e-02, 1.443e-01, -1.214e-01, 5.610e-02, 6.675e-02, 2.343e-02, -8.010e-04, 6.241e-02, -7.188e-02, 9.264e-03, -5.050e-02, 2.200e-02), r);\n\tr = MulAdd(s6_6, M4(-3.730e-02, 1.765e-02, -2.157e-02, 4.494e-02, -8.190e-02, -3.957e-02, -1.489e-02, -2.375e-02, -6.377e-02, 5.413e-02, -4.732e-02, 1.595e-02, 1.908e-02, -8.771e-03, 7.518e-02, -6.149e-02), r);\n\tr = MulAdd(s6_7, M4(3.306e-03, -1.145e-01, -1.196e-01, 3.965e-02, -1.753e-01, 1.538e-01, 7.509e-02, 3.034e-02, -9.531e-02, -9.182e-02, 9.663e-02, -3.387e-02, 1.423e-02, -4.138e-03, -3.193e-02, -9.204e-02), r);\n\tr = MulAdd(s6_8, M4(8.442e-02, 1.387e-01, -5.979e-02, 2.392e-02, -8.845e-02, -2.704e-02, -1.145e-01, -2.621e-03, -1.899e-02, -2.144e-02, 1.663e-02, -3.083e-02, 1.069e-02, 3.161e-02, -3.266e-03, -4.319e-02), r);\n\tr = MulAdd(s7_0, M4(-5.123e-02, -3.657e-02, -3.869e-02, -6.674e-02, -1.697e-02, -1.439e-01, -2.765e-02, 1.092e-02, 3.349e-03, -2.223e-02, -7.069e-02, -1.561e-03, -2.408e-01, -1.226e-01, -1.894e-02, 6.401e-02), r);\n\tr = MulAdd(s7_1, M4(-3.214e-02, -2.262e-02, -5.277e-02, -3.741e-02, -1.213e-01, -7.707e-02, -3.552e-02, 1.140e-02, -5.600e-02, 8.291e-02, 2.238e-02, -2.037e-02, 2.020e-02, -3.163e-02, 3.580e-02, 1.581e-04), r);\n\tr = MulAdd(s7_2, M4(4.871e-02, 7.530e-02, 1.845e-02, -8.611e-02, -4.128e-02, -1.197e-02, 3.897e-02, -3.884e-02, -8.676e-02, 1.107e-01, -5.836e-02, -3.621e-03, 3.486e-04, -3.959e-02, -3.687e-03, -3.999e-02), r);\n\tr = MulAdd(s7_3, M4(1.186e-01, 2.908e-02, -1.749e-01, 5.311e-02, 6.358e-02, 8.960e-02, -3.391e-02, -1.091e-01, -6.161e-03, -2.794e-02, -1.079e-01, -1.413e-01, -2.787e-01, -1.223e-02, -1.932e-02, -1.993e-01), r);\n\tr = MulAdd(s7_4, M4(-1.706e-01, -1.186e-02, -2.587e-02, -7.661e-02, -7.354e-02, -1.035e-02, -5.896e-02, -7.232e-03, 6.542e-02, 2.646e-01, -1.570e-03, 8.268e-02, 1.450e-01, 2.379e-02, -5.428e-02, -1.446e-01), r);\n\tr = MulAdd(s7_5, M4(7.825e-02, 6.404e-02, 1.175e-01, -1.253e-02, 5.442e-02, -1.039e-02, 7.739e-02, 2.245e-02, 7.787e-02, 2.019e-01, -3.032e-02, 1.489e-01, -1.078e-02, 1.432e-01, -1.520e-02, -4.307e-03), r);\n\tr = MulAdd(s7_6, M4(1.518e-02, -5.765e-03, 1.038e-01, 4.877e-03, -6.176e-03, -4.776e-02, -5.405e-03, 4.432e-02, 3.103e-02, -3.598e-03, -1.491e-02, 6.369e-02, -4.103e-02, -8.058e-02, -1.370e-02, 7.380e-02), r);\n\tr = MulAdd(s7_7, M4(-4.558e-02, 3.477e-02, 2.722e-02, 6.162e-02, -9.459e-02, 1.393e-02, -1.056e-02, 3.824e-02, -1.973e-01, -3.068e-02, -3.340e-02, 1.884e-02, 3.135e-02, -7.181e-02, 4.414e-02, -9.669e-02), r);\n\tr = MulAdd(s7_8, M4(3.346e-02, 2.025e-02, 9.116e-02, -7.691e-03, -1.319e-02, -7.742e-02, -2.411e-02, -2.220e-02, -1.083e-02, -5.092e-02, -1.051e-01, 9.269e-02, 3.190e-02, -1.121e-01, 7.497e-02, -3.024e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 4.057e-02, 6.685e-02, 6.700e-02, -1.475e-02 };\n\tr = MulAdd(s0_0, M4(1.279e-01, -3.366e-02, -6.106e-02, 7.234e-02, 2.575e-01, 9.499e-02, -1.607e-01, 1.009e-01, -2.040e-01, 4.915e-03, 2.064e-01, -1.916e-01, -7.249e-03, -5.613e-02, 9.941e-03, 7.943e-02), r);\n\tr = MulAdd(s0_1, M4(2.299e-02, -4.077e-02, -1.152e-01, -3.534e-02, 2.206e-01, 1.534e-01, 2.909e-02, -6.460e-02, -1.576e-01, -1.292e-01, 7.251e-02, 1.202e-01, -7.741e-02, -3.712e-02, -3.224e-02, -1.461e-01), r);\n\tr = MulAdd(s0_2, M4(-7.144e-02, -1.591e-02, -7.688e-02, 4.094e-02, 2.130e-01, 1.416e-01, -1.073e-02, -4.519e-03, -9.835e-02, 2.078e-02, 8.720e-04, -8.038e-02, -8.616e-02, -6.062e-02, -5.964e-02, 4.167e-02), r);\n\tr = MulAdd(s0_3, M4(-8.807e-02, -3.156e-02, 4.208e-02, 4.239e-02, 3.079e-02, 7.417e-02, -1.900e-01, 3.545e-03, 1.907e-01, -9.657e-02, 2.109e-01, -7.153e-02, -5.825e-02, 1.168e-01, 1.213e-01, -9.887e-02), r);\n\tr = MulAdd(s0_4, M4(3.984e-02, 4.145e-02, -3.554e-01, 4.647e-02, -1.710e-01, 2.289e-01, 5.428e-02, 1.081e-01, 1.071e-01, -7.097e-02, 7.493e-03, -4.977e-02, 1.458e-02, 1.337e-01, -1.108e-01, -5.505e-02), r);\n\tr = MulAdd(s0_5, M4(1.629e-01, 8.552e-02, -2.103e-01, -5.147e-02, -8.944e-03, 1.279e-02, 3.232e-02, 1.568e-01, 1.322e-02, 1.217e-01, -3.924e-02, -8.033e-02, 1.411e-01, -1.682e-02, -6.152e-02, -4.818e-02), r);\n\tr = MulAdd(s0_6, M4(-1.434e-01, -3.193e-02, -1.201e-01, 1.157e-01, 1.336e-01, -2.133e-02, -6.619e-02, -1.335e-01, 9.345e-02, -8.295e-02, 7.208e-02, 9.369e-02, 1.030e-01, -6.211e-02, 1.510e-02, -6.255e-03), r);\n\tr = MulAdd(s0_7, M4(-1.815e-01, -1.262e-01, -1.561e-01, -4.939e-03, -9.261e-02, 2.095e-01, -1.511e-02, -1.741e-01, 1.317e-01, -1.158e-01, -4.331e-04, 8.866e-02, -7.553e-02, -2.143e-02, -5.532e-02, -5.052e-02), r);\n\tr = MulAdd(s0_8, M4(-2.470e-02, 4.386e-02, -2.729e-02, 3.006e-02, 1.152e-01, 7.602e-02, -2.523e-02, -1.453e-01, 7.368e-02, -1.033e-01, 7.891e-02, -1.697e-01, -9.816e-02, 8.418e-02, 3.900e-02, -7.317e-02), r);\n\tr = MulAdd(s1_0, M4(-5.105e-02, -1.298e-02, 2.407e-02, 5.246e-03, 6.278e-02, -8.287e-02, 3.093e-02, 3.455e-02, -4.439e-02, -3.267e-02, -8.388e-02, 4.421e-02, -7.185e-02, 2.124e-02, -3.238e-02, 1.844e-01), r);\n\tr = MulAdd(s1_1, M4(3.112e-02, -5.267e-03, -1.198e-02, 4.540e-02, 6.870e-03, 1.315e-02, -2.940e-02, 2.722e-03, 1.363e-02, -3.576e-02, -4.401e-02, 6.896e-02, 3.213e-02, 9.293e-02, 9.204e-02, 4.444e-02), r);\n\tr = MulAdd(s1_2, M4(-5.652e-02, -8.733e-02, -1.603e-02, -6.631e-02, -3.792e-02, -2.115e-02, -4.981e-02, -3.937e-02, 3.890e-02, -3.225e-02, -6.633e-03, 2.197e-03, -1.018e-01, -1.744e-01, -6.023e-02, 7.670e-02), r);\n\tr = MulAdd(s1_3, M4(-1.227e-01, -1.529e-02, 8.825e-02, -1.428e-01, 6.615e-03, -7.766e-02, 2.002e-02, 1.091e-01, -3.180e-02, -8.135e-02, -1.047e-01, 9.672e-02, -1.086e-01, 4.518e-02, -1.033e-01, 6.713e-03), r);\n\tr = MulAdd(s1_4, M4(6.562e-02, 6.497e-02, -5.178e-02, -4.144e-02, -1.119e-01, -4.966e-02, 1.830e-01, 5.417e-02, -1.265e-01, -8.944e-02, -1.583e-01, -2.233e-01, 1.434e-01, 2.096e-01, 3.577e-03, 2.237e-01), r);\n\tr = MulAdd(s1_5, M4(1.973e-02, -7.771e-02, -3.364e-02, 7.592e-02, -1.178e-01, -8.351e-02, -7.591e-02, 9.629e-02, -1.125e-01, -1.656e-02, -8.947e-03, 2.037e-01, 2.216e-01, -1.094e-01, 2.478e-02, -1.058e-01), r);\n\tr = MulAdd(s1_6, M4(-7.549e-02, -8.087e-02, 1.030e-01, 9.166e-02, 2.592e-02, 3.428e-02, 3.391e-02, 9.272e-03, -1.093e-02, -7.403e-02, -1.135e-01, 3.686e-02, 1.685e-02, 8.050e-03, -8.718e-02, 1.131e-02), r);\n\tr = MulAdd(s1_7, M4(4.517e-02, -1.805e-01, -1.346e-01, -8.709e-02, -2.236e-02, 6.259e-03, 6.235e-02, -6.781e-02, -2.046e-01, 8.657e-04, -9.356e-02, -1.557e-02, -8.873e-02, 6.786e-02, -5.795e-02, 2.236e-01), r);\n\tr = MulAdd(s1_8, M4(-1.957e-02, 1.486e-02, -4.926e-02, 3.940e-02, -4.909e-02, 2.867e-02, 6.275e-02, -1.317e-01, 1.014e-02, -2.516e-02, 1.059e-01, 2.583e-02, 7.398e-02, -1.656e-01, -1.807e-02, -3.563e-02), r);\n\tr = MulAdd(s2_0, M4(3.905e-02, 4.195e-02, 2.408e-02, -5.066e-02, 2.877e-03, -5.353e-02, 6.722e-03, 3.963e-02, 3.936e-02, 1.759e-02, -5.413e-02, -1.006e-01, -1.032e-01, 1.407e-02, -1.816e-03, -4.725e-02), r);\n\tr = MulAdd(s2_1, M4(-8.659e-02, -6.690e-02, -2.369e-02, 8.620e-02, -9.957e-02, -4.924e-02, 4.479e-03, -7.542e-02, 7.070e-02, 6.020e-02, 6.204e-02, 8.101e-02, 5.890e-03, -6.030e-02, 7.879e-02, 4.558e-02), r);\n\tr = MulAdd(s2_2, M4(-2.502e-02, -6.068e-02, 4.304e-02, 4.327e-02, 3.423e-02, -5.258e-02, 5.167e-02, 2.573e-02, 4.979e-02, -5.505e-02, 2.229e-02, 6.239e-02, -1.855e-02, 8.684e-02, 7.693e-02, 1.272e-02), r);\n\tr = MulAdd(s2_3, M4(5.067e-03, -2.459e-02, 2.352e-03, 9.823e-02, 1.921e-02, -8.460e-02, 1.165e-01, -3.759e-02, 4.493e-02, 2.649e-02, 6.970e-02, 1.018e-01, -4.113e-02, -6.144e-02, -7.839e-03, -7.800e-02), r);\n\tr = MulAdd(s2_4, M4(3.751e-02, -2.392e-02, 1.363e-01, -1.343e-01, 1.052e-01, -2.994e-02, -2.411e-01, 6.704e-02, 1.204e-02, 2.038e-02, -7.752e-02, -1.959e-01, 1.357e-01, 7.517e-02, 3.376e-02, 2.537e-01), r);\n\tr = MulAdd(s2_5, M4(-6.996e-02, 4.220e-02, 3.621e-02, -2.892e-02, -7.755e-02, 2.388e-02, 1.379e-02, 1.424e-01, -7.725e-02, 1.225e-01, 1.115e-01, 3.311e-02, -1.300e-01, 1.373e-01, 2.819e-02, 3.427e-02), r);\n\tr = MulAdd(s2_6, M4(-5.453e-02, 4.552e-02, -2.180e-02, 2.561e-02, -1.318e-01, 2.918e-03, -2.844e-02, 2.129e-01, 3.826e-02, -5.138e-02, 7.055e-02, -2.352e-03, -9.334e-03, -3.794e-02, -2.176e-02, -5.253e-02), r);\n\tr = MulAdd(s2_7, M4(1.225e-01, -1.233e-01, 9.290e-03, 1.017e-01, -1.422e-01, 2.826e-02, -4.448e-02, -7.646e-02, -4.387e-02, 1.225e-01, -5.220e-03, 1.012e-02, 4.607e-02, 5.358e-02, 5.278e-02, 8.320e-02), r);\n\tr = MulAdd(s2_8, M4(5.630e-02, 7.660e-02, -1.488e-02, -4.350e-02, -2.135e-01, 8.763e-02, 6.009e-03, 3.679e-02, 2.555e-02, -1.223e-02, -4.974e-02, 1.520e-02, 3.425e-02, -6.627e-02, 6.280e-03, -1.601e-02), r);\n\tr = MulAdd(s3_0, M4(1.028e-01, 1.002e-01, 6.515e-02, 1.996e-02, 1.337e-03, -7.797e-03, 1.001e-01, -1.168e-02, -2.405e-02, -5.076e-02, 1.096e-02, -1.736e-01, -1.959e-02, -7.104e-02, 9.389e-02, 2.230e-02), r);\n\tr = MulAdd(s3_1, M4(1.421e-02, -2.660e-03, -1.353e-01, 8.574e-02, 4.807e-03, -2.868e-02, 1.437e-02, -7.176e-02, 3.202e-02, 8.032e-02, 2.433e-02, -2.427e-03, -4.091e-01, -5.981e-02, -1.661e-01, -4.668e-02), r);\n\tr = MulAdd(s3_2, M4(-8.635e-02, -9.985e-02, 1.037e-02, -5.507e-02, 6.209e-02, 1.184e-01, 8.178e-02, -3.382e-02, -2.840e-02, 1.776e-02, 5.276e-02, -9.830e-02, -8.517e-02, 1.753e-01, -7.723e-02, -2.443e-02), r);\n\tr = MulAdd(s3_3, M4(4.088e-02, 3.340e-02, -3.264e-03, 7.110e-02, 9.310e-02, -1.009e-01, 1.956e-02, -1.012e-01, 1.309e-01, -3.251e-03, 2.671e-02, 1.055e-01, -1.091e-01, 6.270e-02, 1.444e-01, 3.960e-02), r);\n\tr = MulAdd(s3_4, M4(9.021e-02, 4.735e-02, 2.571e-02, 2.710e-02, 1.292e-01, -3.198e-02, -1.173e-01, 2.232e-02, 9.124e-02, -3.346e-02, 2.053e-02, 1.608e-02, -1.201e-01, 8.022e-02, 1.262e-01, 4.209e-02), r);\n\tr = MulAdd(s3_5, M4(1.415e-02, -6.527e-02, 2.029e-02, 1.816e-02, 4.115e-02, -2.240e-02, 4.729e-02, 7.265e-02, -5.411e-02, -2.636e-02, 8.844e-02, -1.105e-02, -2.662e-01, 1.428e-01, 8.907e-02, 8.336e-02), r);\n\tr = MulAdd(s3_6, M4(6.805e-02, 1.395e-01, -9.585e-02, 4.461e-02, 2.142e-02, 6.744e-04, 1.476e-02, 6.879e-03, -5.205e-02, 1.953e-02, 9.391e-02, -9.982e-02, 1.105e-01, -1.812e-02, 7.876e-02, 4.754e-03), r);\n\tr = MulAdd(s3_7, M4(1.061e-02, -1.649e-01, 7.892e-02, 2.179e-02, -2.028e-02, 5.663e-02, 1.090e-01, -2.495e-01, -1.095e-01, 1.663e-01, 5.676e-02, 1.104e-01, 2.350e-01, -1.737e-05, 6.275e-02, -5.373e-02), r);\n\tr = MulAdd(s3_8, M4(-3.147e-02, 2.322e-01, 1.393e-02, 6.937e-02, -6.567e-02, 2.665e-02, -1.422e-02, 5.359e-02, 1.171e-01, -3.963e-02, 2.992e-02, -6.924e-02, 1.773e-01, -3.631e-02, 1.185e-01, -1.028e-02), r);\n\tr = MulAdd(s4_0, M4(-5.687e-02, 7.693e-03, 6.385e-02, 2.993e-02, -1.034e-01, -2.592e-02, 1.640e-03, -6.905e-02, -1.666e-02, -2.981e-02, -3.767e-02, -1.516e-02, 1.333e-01, -2.744e-02, -2.162e-01, 2.590e-01), r);\n\tr = MulAdd(s4_1, M4(-8.843e-02, -1.823e-03, 8.369e-02, 1.177e-01, -1.970e-02, 1.472e-02, 1.363e-01, 1.451e-01, 8.558e-02, -2.608e-02, 1.457e-02, -2.496e-02, -4.943e-02, 7.773e-03, -1.686e-01, 1.476e-01), r);\n\tr = MulAdd(s4_2, M4(-3.009e-02, -1.751e-02, 5.983e-02, -1.646e-01, -6.494e-02, -5.240e-02, 1.187e-01, -1.996e-03, -2.502e-02, 4.830e-02, -1.864e-01, 6.051e-02, -2.417e-02, -6.760e-02, -6.460e-02, 2.814e-04), r);\n\tr = MulAdd(s4_3, M4(-8.744e-02, 5.006e-02, -2.079e-02, 9.829e-02, 1.772e-01, -1.175e-01, 9.265e-02, 9.310e-02, 3.576e-02, 6.130e-02, 4.680e-02, 1.632e-01, -1.245e-01, 8.862e-02, -2.980e-01, 2.297e-02), r);\n\tr = MulAdd(s4_4, M4(8.308e-02, 7.544e-02, 1.629e-01, 2.374e-01, 5.315e-02, 7.817e-02, 2.026e-01, -2.530e-01, 1.486e-01, -4.941e-02, 9.442e-02, 3.796e-02, -1.124e-01, -5.497e-02, -2.431e-01, 6.729e-02), r);\n\tr = MulAdd(s4_5, M4(3.043e-01, -2.249e-01, 8.679e-02, 8.587e-03, -3.091e-02, 1.281e-01, 1.058e-01, 1.238e-01, -1.237e-01, -2.999e-02, -7.889e-02, -1.038e-01, -4.301e-02, -7.012e-02, -1.021e-01, -2.089e-02), r);\n\tr = MulAdd(s4_6, M4(2.500e-02, -2.472e-02, 8.017e-02, 4.952e-02, 3.016e-02, -1.007e-01, -5.812e-02, -2.393e-02, 1.429e-02, -1.669e-02, -5.088e-03, 1.606e-01, -5.341e-02, -4.039e-02, -1.368e-01, 8.641e-02), r);\n\tr = MulAdd(s4_7, M4(1.258e-01, 2.161e-02, 2.055e-01, 1.858e-01, -2.128e-01, 1.039e-01, -1.339e-01, -1.722e-01, -1.349e-01, -8.110e-02, -7.639e-02, 6.999e-02, -2.331e-01, 8.396e-02, -4.020e-02, 1.369e-01), r);\n\tr = MulAdd(s4_8, M4(-1.218e-01, -3.218e-02, 6.787e-02, 5.315e-02, 5.871e-02, 9.026e-02, -1.272e-01, -1.574e-02, 3.738e-02, -1.998e-02, -1.137e-02, -1.836e-02, 5.407e-04, -2.666e-02, -1.174e-01, 2.181e-01), r);\n\tr = MulAdd(s5_0, M4(-4.300e-02, 1.067e-01, -1.611e-02, 1.408e-02, -1.082e-01, 6.859e-03, -3.246e-02, 1.440e-02, 3.127e-02, 4.931e-03, -2.008e-02, -1.087e-01, 1.869e-01, -3.763e-02, 9.214e-02, -6.139e-02), r);\n\tr = MulAdd(s5_1, M4(2.163e-02, -1.327e-02, -7.326e-02, -1.634e-02, -9.571e-03, -1.920e-02, -6.807e-02, 6.684e-02, 1.094e-01, -1.085e-01, 5.202e-02, 7.035e-03, 2.908e-02, 1.155e-01, 1.365e-01, -9.210e-02), r);\n\tr = MulAdd(s5_2, M4(-1.816e-01, 4.733e-02, -5.288e-02, 3.186e-02, -1.024e-01, -2.162e-02, -1.839e-02, 9.413e-03, 2.192e-02, 4.179e-02, 1.054e-02, 8.923e-03, -3.371e-02, 1.072e-02, 8.813e-02, -6.179e-02), r);\n\tr = MulAdd(s5_3, M4(4.771e-02, 4.805e-02, 2.398e-02, -2.165e-03, 8.587e-02, -6.910e-03, 5.999e-02, -4.768e-03, 7.841e-04, -7.417e-02, -9.176e-02, 2.145e-03, 1.780e-01, 7.821e-02, 2.110e-01, 2.032e-02), r);\n\tr = MulAdd(s5_4, M4(7.944e-02, -1.616e-02, 9.059e-05, -3.100e-02, 7.670e-02, 2.298e-03, 6.435e-02, -1.431e-01, 6.823e-02, -9.556e-02, 1.325e-02, -8.277e-02, 1.527e-01, 8.532e-02, 3.696e-01, -7.039e-02), r);\n\tr = MulAdd(s5_5, M4(6.107e-02, -1.836e-02, 5.551e-02, 6.896e-02, 1.774e-01, 2.109e-02, 9.409e-02, -1.408e-02, -5.310e-02, -2.290e-01, 9.082e-02, -9.762e-03, 5.386e-02, 1.275e-01, 1.664e-01, -9.219e-02), r);\n\tr = MulAdd(s5_6, M4(2.762e-02, -6.232e-02, -8.595e-02, 2.939e-02, -2.988e-02, -5.534e-03, 3.508e-03, 2.618e-04, -4.541e-02, 7.138e-02, 7.792e-02, -4.452e-02, 5.544e-02, 2.857e-02, 1.264e-01, 5.603e-02), r);\n\tr = MulAdd(s5_7, M4(-3.177e-02, 1.966e-02, -5.840e-03, -3.527e-02, -1.901e-01, 2.063e-01, -5.171e-02, -1.624e-02, -4.568e-02, -1.109e-02, -9.732e-02, -1.645e-01, 3.332e-02, 1.855e-01, 1.683e-01, -5.122e-02), r);\n\tr = MulAdd(s5_8, M4(-6.366e-02, -6.204e-02, -4.810e-02, 1.133e-02, -4.249e-02, 6.398e-02, -6.416e-02, -4.528e-03, 7.454e-02, -7.559e-02, -6.606e-02, -6.678e-03, 7.244e-02, 2.279e-02, -1.285e-03, 1.840e-02), r);\n\tr = MulAdd(s6_0, M4(-1.078e-01, -2.801e-02, 7.246e-02, 4.707e-02, -1.894e-01, -2.593e-02, 2.423e-02, -3.650e-02, 1.273e-01, -4.858e-03, -5.637e-03, 1.420e-01, 1.411e-02, -6.332e-02, 3.113e-02, 1.083e-01), r);\n\tr = MulAdd(s6_1, M4(-2.501e-02, -5.155e-02, -5.300e-02, 6.727e-03, 1.291e-02, 3.799e-02, 6.704e-02, -8.818e-03, 1.438e-01, 3.135e-02, -3.689e-02, -8.483e-02, -8.690e-02, 6.428e-02, -1.973e-02, -4.476e-02), r);\n\tr = MulAdd(s6_2, M4(-1.165e-01, 2.959e-01, 4.430e-02, 7.807e-02, -9.287e-02, 1.312e-01, -1.275e-01, 4.720e-02, 1.288e-02, -3.103e-02, -4.469e-02, -1.277e-01, -1.358e-01, 3.453e-02, 7.734e-03, -1.723e-02), r);\n\tr = MulAdd(s6_3, M4(1.415e-02, 4.357e-02, 9.350e-02, -1.290e-02, -1.784e-01, -1.194e-01, -6.447e-02, -1.538e-01, 3.828e-02, 8.403e-04, -9.760e-02, 3.470e-02, 7.904e-02, 6.751e-02, 6.433e-02, 9.591e-03), r);\n\tr = MulAdd(s6_4, M4(4.858e-02, 9.642e-03, -1.416e-01, -1.765e-01, 7.997e-02, -2.211e-01, 2.500e-02, 4.583e-02, -1.211e-01, 7.273e-02, -1.105e-01, -6.780e-02, 1.552e-01, -6.610e-02, 1.221e-01, 9.713e-02), r);\n\tr = MulAdd(s6_5, M4(8.812e-02, 1.163e-01, -3.385e-02, 5.496e-02, -1.088e-01, 5.046e-02, -9.608e-02, -6.503e-02, -5.554e-02, -1.426e-01, -1.015e-01, 7.827e-02, 2.886e-02, -9.295e-02, -1.683e-02, -5.637e-02), r);\n\tr = MulAdd(s6_6, M4(6.530e-02, 1.705e-01, 5.023e-02, 5.670e-03, -2.066e-01, -1.008e-01, -2.584e-02, -1.695e-01, -3.472e-02, -1.673e-02, 1.132e-02, 7.294e-02, 1.806e-02, 8.904e-02, 1.301e-02, 7.587e-02), r);\n\tr = MulAdd(s6_7, M4(-7.182e-02, 1.284e-02, 2.450e-02, 2.996e-01, -1.210e-01, 5.583e-02, -2.610e-02, 1.577e-01, 6.162e-02, -1.601e-01, 4.786e-02, 2.652e-02, -1.700e-01, -4.436e-03, 3.861e-02, 9.871e-02), r);\n\tr = MulAdd(s6_8, M4(-1.442e-01, -6.627e-02, 5.110e-02, 8.370e-02, 9.951e-02, -8.591e-02, -5.248e-02, -9.295e-02, 4.298e-02, -1.054e-01, -3.308e-02, -1.683e-02, -1.237e-01, 4.142e-03, -1.229e-01, -1.149e-01), r);\n\tr = MulAdd(s7_0, M4(-2.132e-02, 4.805e-02, 6.327e-02, 1.387e-01, 1.004e-02, -1.254e-02, 5.425e-02, -4.269e-03, -1.508e-01, 4.787e-02, -5.652e-02, 2.234e-02, -3.006e-02, 5.317e-02, -5.235e-02, 1.102e-01), r);\n\tr = MulAdd(s7_1, M4(8.749e-02, 6.059e-02, -3.881e-02, -2.855e-03, 5.492e-02, 2.269e-02, -6.710e-02, -7.440e-02, 2.012e-01, -1.893e-02, 1.096e-02, -1.808e-02, 9.809e-02, -4.306e-02, 1.054e-03, -3.551e-02), r);\n\tr = MulAdd(s7_2, M4(-6.344e-03, 6.911e-02, -8.138e-02, 3.389e-03, -3.893e-02, -2.793e-02, -3.421e-02, 1.312e-02, -1.058e-02, 2.910e-02, -6.469e-02, -5.796e-02, 5.012e-02, 8.912e-02, 3.562e-02, 4.717e-02), r);\n\tr = MulAdd(s7_3, M4(-5.413e-02, 7.983e-02, -4.328e-02, -7.536e-02, -6.332e-02, 1.174e-02, 1.104e-01, -4.694e-02, -9.745e-02, 6.358e-02, 2.715e-02, -2.189e-02, -2.204e-01, 3.593e-02, 5.257e-02, 1.805e-01), r);\n\tr = MulAdd(s7_4, M4(2.007e-01, -1.128e-02, -6.092e-02, 1.107e-02, 1.147e-01, 4.907e-02, 9.380e-02, -1.132e-01, -1.031e-01, 1.390e-01, 1.988e-01, -3.743e-02, -2.523e-01, -8.979e-02, 1.662e-01, 6.444e-02), r);\n\tr = MulAdd(s7_5, M4(1.083e-01, 1.595e-02, -1.725e-01, 5.724e-03, -1.331e-01, 3.038e-02, 8.289e-03, 4.838e-02, 2.811e-02, -1.325e-02, -1.052e-01, 9.198e-03, -2.897e-02, 7.183e-02, -7.798e-03, 2.164e-02), r);\n\tr = MulAdd(s7_6, M4(7.601e-02, -6.164e-02, -1.161e-01, -5.035e-02, 2.184e-02, 1.047e-01, 4.872e-02, 4.256e-02, -1.560e-04, -1.473e-02, -1.539e-02, 1.090e-01, 4.757e-02, -1.741e-01, -3.318e-03, 3.241e-02), r);\n\tr = MulAdd(s7_7, M4(-2.860e-02, 1.666e-01, -1.005e-02, 1.621e-01, 5.307e-02, 8.958e-02, -5.114e-02, -3.572e-02, -2.053e-02, -8.701e-02, 1.172e-01, -1.191e-01, 1.827e-02, -9.646e-02, -1.384e-02, 1.939e-01), r);\n\tr = MulAdd(s7_8, M4(-1.288e-01, 1.404e-02, -1.802e-01, -1.037e-01, 7.175e-03, -5.918e-02, 4.387e-02, -6.959e-02, -4.688e-02, -8.219e-02, -6.531e-02, 2.699e-02, 1.969e-02, -6.182e-02, -5.690e-02, -4.697e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.486e-02, -7.566e-03, 9.998e-03, -3.041e-03 };\n\tr = MulAdd(s0_0, M4(3.130e-02, 2.971e-03, -1.697e-02, 1.723e-01, -2.969e-02, 5.238e-02, -6.038e-02, -1.713e-01, -2.884e-02, 2.689e-02, 1.049e-01, 9.709e-02, 7.953e-03, 5.953e-02, 8.925e-02, -3.547e-02), r);\n\tr = MulAdd(s0_1, M4(-1.699e-01, -1.627e-01, -2.591e-02, 1.405e-01, -1.440e-01, -9.739e-02, -1.221e-02, -4.837e-02, 8.099e-02, -1.887e-02, -8.460e-02, 7.115e-02, 6.461e-02, -1.117e-02, 9.771e-02, 9.994e-02), r);\n\tr = MulAdd(s0_2, M4(-1.191e-01, -4.843e-02, -8.051e-02, -8.403e-03, -6.654e-02, 1.643e-02, -3.486e-02, -1.460e-01, 7.868e-02, -3.679e-02, 8.537e-02, 6.625e-02, 6.675e-02, -3.406e-02, -3.296e-02, 1.288e-02), r);\n\tr = MulAdd(s0_3, M4(-1.254e-02, 1.587e-01, -1.404e-01, -9.692e-02, -1.083e-01, -3.384e-02, -5.840e-02, -1.022e-01, -5.070e-03, 1.152e-02, 1.578e-02, 8.507e-02, -1.561e-03, -1.234e-01, 8.587e-02, -8.467e-03), r);\n\tr = MulAdd(s0_4, M4(-2.645e-01, 1.098e-01, -1.588e-01, -4.149e-03, -2.474e-02, -6.423e-02, -5.085e-02, -3.228e-01, -2.512e-02, -1.876e-01, 1.527e-01, 7.138e-02, 3.622e-02, -7.167e-02, 5.379e-02, 1.440e-01), r);\n\tr = MulAdd(s0_5, M4(-8.099e-02, 7.277e-03, -1.015e-01, -2.088e-02, -2.608e-02, -9.005e-02, 5.451e-02, -3.323e-02, -5.641e-02, 6.354e-02, -1.074e-01, 3.794e-02, 2.156e-02, -1.153e-01, 6.865e-02, 1.685e-01), r);\n\tr = MulAdd(s0_6, M4(-1.037e-01, 8.738e-03, -2.146e-01, 2.522e-02, 7.273e-02, 1.562e-01, 5.971e-02, -6.630e-02, 2.006e-02, -6.878e-03, -4.255e-02, 6.355e-02, -7.011e-02, 7.403e-03, -1.004e-03, 6.821e-02), r);\n\tr = MulAdd(s0_7, M4(3.246e-02, -9.474e-03, 3.046e-02, 8.857e-02, -1.451e-01, 1.464e-01, -2.309e-01, -2.253e-01, 1.313e-01, -1.055e-01, 1.011e-02, 8.469e-02, 1.286e-01, -1.157e-01, 4.310e-02, 2.545e-02), r);\n\tr = MulAdd(s0_8, M4(1.688e-02, -5.121e-02, 3.931e-02, 5.312e-03, -4.991e-02, -5.310e-02, 6.352e-02, -1.698e-01, 1.023e-02, -3.237e-02, -3.106e-02, 1.126e-02, -3.956e-02, 7.182e-02, 3.462e-02, 1.284e-01), r);\n\tr = MulAdd(s1_0, M4(-7.200e-02, -1.373e-01, 1.461e-01, 1.011e-01, -5.594e-02, 1.675e-02, 9.083e-02, 8.184e-02, -5.444e-02, -3.439e-02, -3.755e-02, -4.670e-02, -5.214e-02, 1.053e-01, -8.947e-03, -3.363e-02), r);\n\tr = MulAdd(s1_1, M4(-9.103e-02, 1.141e-01, 6.822e-02, 2.195e-02, -3.647e-02, 2.817e-02, -6.649e-02, 1.015e-02, -2.507e-03, 6.292e-02, -3.789e-02, -5.327e-02, 3.955e-02, -4.437e-03, -5.890e-02, 1.282e-02), r);\n\tr = MulAdd(s1_2, M4(4.900e-02, -7.565e-03, -4.303e-02, -7.926e-02, -1.776e-02, 1.173e-01, 1.059e-01, -4.628e-03, 2.424e-02, 5.327e-02, 8.622e-02, 9.865e-03, -5.063e-02, 2.139e-02, -3.283e-02, -1.076e-01), r);\n\tr = MulAdd(s1_3, M4(4.076e-02, -1.201e-01, -1.468e-02, -7.557e-02, -9.181e-02, -5.838e-02, -9.056e-02, 8.927e-02, -8.817e-02, 4.257e-02, 1.622e-01, -3.077e-02, -2.824e-01, -1.754e-01, -4.173e-02, -3.796e-03), r);\n\tr = MulAdd(s1_4, M4(-1.808e-01, -9.420e-02, 2.362e-01, 5.666e-02, 1.558e-01, 6.239e-02, -1.044e-01, -6.183e-02, 7.567e-03, 1.080e-01, -1.334e-01, -5.788e-03, -3.618e-02, -2.672e-01, -4.522e-02, 6.275e-02), r);\n\tr = MulAdd(s1_5, M4(-8.083e-02, -3.153e-02, 7.586e-02, -2.597e-02, -8.238e-02, -1.108e-01, -6.356e-02, 8.368e-02, 3.564e-02, 1.147e-01, -2.603e-02, 5.378e-02, -1.115e-01, -6.909e-02, -7.367e-02, 1.292e-01), r);\n\tr = MulAdd(s1_6, M4(4.447e-03, 3.811e-02, -7.687e-02, -2.917e-02, 6.661e-02, -5.593e-02, -9.921e-03, -2.300e-02, -3.419e-02, 2.266e-02, -7.253e-03, 3.770e-02, -9.734e-03, -5.784e-03, 4.182e-02, 2.311e-02), r);\n\tr = MulAdd(s1_7, M4(6.541e-02, 1.123e-01, -8.935e-02, 7.808e-02, -2.990e-02, -1.476e-02, 1.612e-01, 6.376e-02, 6.191e-02, -5.186e-02, 1.945e-01, 1.909e-02, 2.268e-02, -4.369e-02, 3.291e-02, -2.180e-01), r);\n\tr = MulAdd(s1_8, M4(-1.179e-02, 5.091e-03, -2.284e-02, 6.567e-02, 7.615e-03, 6.188e-02, 2.730e-02, 1.096e-01, -6.861e-02, -3.396e-02, -1.333e-01, -3.154e-02, -8.793e-02, -1.780e-03, -5.642e-02, 6.958e-02), r);\n\tr = MulAdd(s2_0, M4(8.236e-02, 4.958e-02, -6.726e-03, 4.602e-03, 1.930e-02, -4.994e-02, -8.625e-03, -6.828e-02, -4.857e-02, 5.621e-04, 2.747e-02, 1.256e-01, 2.196e-02, 1.233e-02, 4.565e-02, -3.883e-02), r);\n\tr = MulAdd(s2_1, M4(-4.036e-02, 1.410e-02, 4.532e-02, -3.577e-02, -1.095e-01, 8.027e-04, 6.363e-03, -7.028e-02, -1.750e-02, -8.614e-02, 3.487e-02, 1.905e-02, 5.269e-02, 1.186e-01, 5.839e-02, 1.010e-01), r);\n\tr = MulAdd(s2_2, M4(-6.230e-02, -7.290e-02, -2.559e-02, 8.144e-03, -6.011e-02, -5.373e-02, 1.737e-02, -3.953e-02, -8.449e-02, 5.397e-02, 1.553e-01, -8.801e-02, 5.439e-02, -4.834e-02, 2.087e-02, 3.786e-02), r);\n\tr = MulAdd(s2_3, M4(1.312e-03, 4.385e-02, -1.052e-01, 1.187e-01, 1.796e-01, -1.156e-01, 1.312e-01, 7.027e-03, 7.043e-02, 5.154e-02, -7.434e-02, -7.112e-02, -6.333e-02, -3.389e-02, 1.071e-02, -4.098e-03), r);\n\tr = MulAdd(s2_4, M4(-6.067e-02, 1.708e-02, 3.357e-02, -8.908e-02, 1.508e-01, 3.211e-02, -8.900e-02, -1.560e-02, -1.030e-02, -3.789e-02, 5.975e-03, -9.308e-02, -1.062e-02, -1.841e-01, 1.484e-02, 1.164e-01), r);\n\tr = MulAdd(s2_5, M4(-8.618e-02, -4.005e-02, 6.690e-02, 5.596e-02, -2.935e-01, -4.283e-02, -1.875e-01, 1.296e-01, -8.753e-02, -1.694e-02, -2.331e-02, -8.463e-02, -1.410e-01, -1.085e-01, 3.978e-02, -7.041e-02), r);\n\tr = MulAdd(s2_6, M4(5.414e-02, 3.529e-02, 5.805e-02, 3.732e-04, 3.671e-02, -7.497e-03, 1.048e-01, 8.747e-02, -2.924e-02, 3.028e-02, -7.909e-02, -4.302e-03, 4.368e-02, -2.135e-02, 9.883e-02, -3.821e-02), r);\n\tr = MulAdd(s2_7, M4(-1.323e-01, 3.368e-02, -7.996e-02, -2.019e-01, 7.806e-02, 2.529e-02, 3.800e-02, 7.636e-02, -4.905e-02, -7.635e-02, 2.038e-01, 1.055e-01, 1.360e-02, 1.124e-01, -9.663e-03, -1.235e-02), r);\n\tr = MulAdd(s2_8, M4(1.595e-02, 8.632e-03, -3.587e-02, -1.464e-02, -3.107e-02, 4.872e-02, 4.783e-02, 5.343e-02, -9.727e-03, 7.866e-02, -2.355e-01, 6.806e-04, 2.052e-02, 7.465e-02, -3.182e-03, -7.256e-02), r);\n\tr = MulAdd(s3_0, M4(1.681e-02, 4.112e-02, -7.830e-02, -1.704e-02, 6.887e-02, 1.142e-02, 1.087e-02, -6.558e-03, -7.073e-02, -9.275e-02, 1.470e-01, 2.685e-02, -2.009e-02, -4.445e-02, 6.022e-02, -5.597e-02), r);\n\tr = MulAdd(s3_1, M4(-9.797e-02, 6.285e-02, 2.181e-01, -5.413e-02, -3.854e-02, 2.665e-02, -5.676e-02, -9.111e-02, -9.869e-02, -4.973e-02, 4.636e-02, 7.394e-02, -2.655e-01, -1.570e-01, 8.760e-02, 1.714e-01), r);\n\tr = MulAdd(s3_2, M4(-8.892e-02, -8.366e-02, -5.989e-02, 1.579e-01, 2.242e-03, -7.445e-02, 2.149e-02, -6.127e-02, 1.714e-02, 5.657e-03, 2.707e-01, -3.986e-02, 5.101e-02, -1.289e-01, -7.053e-02, -3.878e-02), r);\n\tr = MulAdd(s3_3, M4(2.501e-01, -1.295e-01, 1.204e-01, 7.735e-02, 1.076e-01, 3.385e-02, 7.283e-02, -1.388e-03, 6.986e-02, 3.354e-02, 6.278e-02, -5.167e-02, 4.310e-02, 1.368e-01, 2.254e-02, -9.449e-02), r);\n\tr = MulAdd(s3_4, M4(4.136e-01, 5.363e-02, -1.864e-01, -4.797e-02, 4.818e-02, 8.905e-03, -2.680e-02, 2.409e-02, 8.077e-02, 1.417e-01, -1.978e-01, -3.116e-02, -7.184e-03, 4.112e-03, 1.164e-01, 6.615e-02), r);\n\tr = MulAdd(s3_5, M4(-1.137e-01, 9.477e-02, 4.973e-02, 1.354e-01, 8.513e-04, -7.474e-02, -1.031e-01, 1.021e-01, 8.874e-02, 6.081e-02, -4.876e-01, 1.334e-02, 5.266e-02, -3.342e-02, 2.331e-01, -6.394e-02), r);\n\tr = MulAdd(s3_6, M4(3.396e-02, 4.118e-02, 6.863e-02, -1.918e-03, -3.163e-02, -5.579e-02, -5.444e-02, 1.387e-02, 7.337e-03, -8.970e-02, 1.428e-01, 4.239e-02, 5.511e-02, -1.222e-01, 1.717e-01, -1.737e-01), r);\n\tr = MulAdd(s3_7, M4(2.141e-01, -1.514e-01, -9.737e-03, 1.630e-02, -6.909e-03, -1.175e-02, -7.800e-02, 1.107e-01, 6.107e-03, 1.227e-02, 4.571e-01, -1.420e-02, 1.533e-01, 2.142e-02, 8.917e-02, -6.197e-02), r);\n\tr = MulAdd(s3_8, M4(1.040e-01, -2.908e-02, -8.072e-02, 1.600e-01, 1.254e-01, -8.766e-02, 5.691e-02, 3.955e-02, 4.178e-02, 4.562e-02, -2.707e-01, -5.604e-02, 1.596e-01, -1.549e-02, -4.298e-02, 4.781e-02), r);\n\tr = MulAdd(s4_0, M4(1.448e-02, -3.126e-03, 2.671e-01, 4.931e-02, -2.637e-02, 1.546e-02, -9.846e-02, 1.047e-01, -5.858e-03, 1.219e-01, -2.739e-02, 1.359e-01, -1.015e-01, -4.477e-02, -7.104e-02, -3.550e-02), r);\n\tr = MulAdd(s4_1, M4(7.703e-02, 5.984e-02, 1.710e-01, 6.703e-02, -1.361e-01, 1.835e-02, 1.559e-01, -3.566e-02, 5.388e-02, 1.998e-02, -3.225e-02, -3.200e-02, -4.279e-02, -2.967e-02, -7.387e-03, -1.738e-03), r);\n\tr = MulAdd(s4_2, M4(-3.824e-02, 1.635e-01, 2.978e-01, -6.955e-02, -2.575e-02, -4.559e-03, -8.055e-02, -3.102e-02, -1.214e-01, -1.347e-01, -1.159e-01, 8.305e-02, -5.546e-02, -7.330e-02, -9.751e-02, -2.338e-01), r);\n\tr = MulAdd(s4_3, M4(-4.372e-02, 2.133e-01, 1.651e-01, 3.397e-02, 2.440e-01, 6.838e-02, -4.116e-02, -8.257e-02, -2.768e-02, -1.725e-01, 2.180e-01, -5.268e-02, -6.686e-02, -1.075e-02, -1.183e-01, -5.245e-02), r);\n\tr = MulAdd(s4_4, M4(1.160e-01, -1.089e-01, -5.048e-01, -1.137e-01, 4.091e-01, -3.321e-01, 1.600e-02, -4.297e-01, 2.936e-02, -3.944e-02, 3.683e-02, -7.692e-02, 2.271e-01, -5.484e-03, 1.696e-01, -9.252e-02), r);\n\tr = MulAdd(s4_5, M4(5.579e-02, -1.714e-02, 2.592e-01, 4.721e-02, 5.725e-03, -9.406e-02, 5.586e-02, -1.122e-01, 6.267e-02, 1.959e-01, 8.754e-02, -3.318e-02, -3.323e-02, 3.019e-02, 2.118e-02, -9.360e-03), r);\n\tr = MulAdd(s4_6, M4(-4.322e-02, -7.796e-02, 3.892e-01, 2.526e-02, -3.016e-02, 8.906e-02, -6.579e-02, 1.023e-01, -1.739e-02, 5.853e-03, -8.500e-02, -8.065e-02, 6.131e-02, 6.489e-02, 8.976e-02, 9.891e-02), r);\n\tr = MulAdd(s4_7, M4(8.236e-03, -1.290e-01, 1.230e-01, -4.372e-02, -1.949e-02, -3.142e-01, 1.221e-01, -3.426e-02, 4.860e-02, 2.884e-02, -2.031e-02, 2.863e-02, -1.006e-01, -1.666e-02, 7.729e-02, -4.938e-02), r);\n\tr = MulAdd(s4_8, M4(-1.731e-01, -3.786e-02, 3.364e-02, 7.386e-02, 1.000e-01, 1.514e-01, 6.428e-02, 5.606e-02, 2.937e-03, -2.062e-02, -3.646e-02, 1.250e-02, 6.276e-02, 5.917e-02, -4.737e-02, -6.429e-02), r);\n\tr = MulAdd(s5_0, M4(-8.829e-03, 6.971e-02, 3.541e-02, 1.809e-02, 1.065e-02, 3.218e-02, -3.046e-02, 2.121e-02, -3.480e-02, -1.838e-02, -1.096e-01, 9.808e-02, 7.617e-02, -9.112e-03, 6.525e-02, -2.143e-02), r);\n\tr = MulAdd(s5_1, M4(-7.099e-03, 6.124e-02, 6.715e-02, 8.212e-02, 3.622e-02, 2.778e-02, 7.969e-02, -3.336e-02, 1.245e-01, 1.119e-01, 5.280e-02, -8.330e-02, 1.314e-01, 5.461e-02, 1.524e-01, 4.624e-02), r);\n\tr = MulAdd(s5_2, M4(-8.457e-02, -3.261e-02, -5.095e-02, -1.353e-02, 6.270e-03, 5.844e-02, -7.710e-02, 2.764e-03, -2.814e-02, -6.648e-02, -5.475e-02, 3.788e-02, -2.322e-03, 7.006e-02, 4.403e-02, -3.014e-02), r);\n\tr = MulAdd(s5_3, M4(1.144e-02, 8.144e-02, 3.215e-02, 3.551e-02, 9.567e-02, 1.714e-02, 5.139e-02, -8.414e-02, -2.402e-02, -9.189e-02, 4.432e-02, -2.306e-03, 6.175e-02, 6.143e-02, -2.534e-02, 6.956e-02), r);\n\tr = MulAdd(s5_4, M4(1.330e-02, 5.467e-02, 2.696e-03, 1.003e-01, 1.212e-02, -1.570e-01, -1.143e-01, -1.127e-01, 1.103e-01, -9.396e-02, 3.722e-02, -1.026e-01, 2.694e-01, 9.083e-02, 6.893e-02, 1.128e-01), r);\n\tr = MulAdd(s5_5, M4(1.806e-02, 1.141e-02, -3.325e-03, -7.681e-02, -3.333e-02, 2.338e-02, 1.130e-02, -1.251e-01, 1.135e-01, 1.119e-01, 2.687e-01, 1.495e-01, 6.523e-02, 1.089e-01, -5.855e-02, 2.052e-03), r);\n\tr = MulAdd(s5_6, M4(-6.760e-02, 8.641e-03, -8.452e-02, -1.880e-02, -3.117e-02, -8.947e-02, -3.013e-02, 2.015e-02, -3.476e-02, 7.563e-02, -4.600e-02, 1.577e-02, 3.989e-02, -9.229e-02, 1.108e-01, -1.162e-02), r);\n\tr = MulAdd(s5_7, M4(2.417e-02, -3.430e-02, 1.091e-01, 4.174e-02, -3.418e-02, -1.862e-01, 5.662e-02, -1.414e-02, -6.064e-02, 1.133e-02, -9.183e-02, 4.677e-02, -4.738e-02, -1.836e-02, 1.063e-02, -5.357e-02), r);\n\tr = MulAdd(s5_8, M4(-6.421e-02, -4.079e-02, -1.277e-02, -7.411e-02, 3.395e-02, 4.268e-02, 2.553e-02, 1.373e-01, -2.912e-02, 1.767e-03, -1.459e-01, -3.006e-02, 3.724e-02, 3.353e-02, 3.408e-02, 4.427e-02), r);\n\tr = MulAdd(s6_0, M4(-4.232e-02, -7.914e-02, -1.564e-03, -1.452e-02, -1.207e-02, -1.994e-02, -1.146e-01, -3.629e-02, 3.144e-02, -1.077e-02, -1.133e-02, 1.898e-03, -2.618e-02, -1.414e-02, 2.598e-02, 1.485e-01), r);\n\tr = MulAdd(s6_1, M4(-1.344e-02, -7.809e-02, 1.238e-01, -4.426e-02, -7.205e-02, -4.869e-02, 6.605e-02, 1.397e-01, 1.556e-01, 1.359e-01, 3.377e-02, 3.126e-02, 3.122e-02, 6.361e-02, -9.625e-02, 2.292e-02), r);\n\tr = MulAdd(s6_2, M4(2.738e-03, -6.746e-02, -2.412e-02, -1.041e-01, -4.460e-02, -2.827e-02, -2.519e-02, -3.964e-02, -2.333e-04, 7.666e-02, 1.125e-01, 1.630e-01, 2.247e-02, -7.670e-02, -2.341e-03, 9.385e-02), r);\n\tr = MulAdd(s6_3, M4(-4.602e-02, 1.061e-01, -1.320e-01, 1.191e-01, -5.133e-02, 2.162e-01, -1.131e-02, -3.731e-02, -7.102e-02, -8.420e-02, 4.596e-02, 4.180e-02, 1.479e-01, -8.129e-02, 2.973e-02, -1.772e-01), r);\n\tr = MulAdd(s6_4, M4(5.118e-02, -6.224e-02, -8.713e-03, -2.333e-02, 9.701e-02, 1.313e-01, 2.580e-02, -3.051e-01, 8.869e-02, 7.954e-02, -1.263e-01, 5.000e-02, 1.479e-01, 6.071e-02, 1.515e-01, 1.184e-02), r);\n\tr = MulAdd(s6_5, M4(-3.628e-02, -1.571e-04, -2.533e-02, 1.203e-02, -3.362e-02, 1.008e-02, -2.868e-02, -7.585e-02, 2.280e-02, 1.390e-01, -7.603e-02, 9.155e-02, -4.598e-03, 1.854e-02, -3.700e-01, 1.594e-02), r);\n\tr = MulAdd(s6_6, M4(7.287e-02, 1.326e-01, 2.261e-01, 6.618e-02, -2.454e-02, 9.443e-02, 9.664e-03, -9.044e-02, 9.658e-02, 1.071e-01, -1.143e-01, -9.359e-02, 2.635e-02, -3.715e-02, -2.057e-01, 1.043e-01), r);\n\tr = MulAdd(s6_7, M4(7.176e-02, -1.768e-02, 1.042e-02, -1.732e-01, -1.269e-01, 4.046e-02, 6.187e-02, -2.409e-01, 1.033e-01, 2.011e-02, -1.234e-02, 1.175e-01, -1.142e-02, -2.077e-02, 2.295e-01, 8.248e-02), r);\n\tr = MulAdd(s6_8, M4(4.521e-02, -7.314e-02, 1.829e-01, 4.214e-02, 8.360e-02, -1.261e-02, -5.154e-02, -5.521e-03, -3.743e-02, 3.988e-02, -3.584e-02, 1.117e-02, -3.909e-02, -7.878e-03, -5.536e-02, -4.494e-02), r);\n\tr = MulAdd(s7_0, M4(2.108e-02, 9.581e-02, -5.059e-02, -8.275e-02, 6.127e-02, 7.517e-02, -2.609e-02, 5.254e-02, 2.820e-02, -2.989e-02, 5.125e-02, -1.002e-01, -9.809e-02, 1.553e-01, 1.773e-01, -1.271e-02), r);\n\tr = MulAdd(s7_1, M4(3.650e-02, 1.098e-01, 2.168e-02, -1.848e-01, -9.009e-02, 3.414e-02, -3.631e-02, -3.021e-02, 1.459e-01, 2.078e-01, 6.669e-02, -1.034e-01, -5.624e-02, 1.201e-01, 2.647e-01, -9.297e-02), r);\n\tr = MulAdd(s7_2, M4(-1.393e-02, -4.577e-02, -2.512e-02, -3.470e-02, -3.612e-03, -6.107e-02, -2.231e-02, -1.145e-01, 5.848e-02, 6.392e-02, 1.092e-01, 5.121e-02, 3.987e-02, -3.849e-02, 4.369e-02, -1.615e-02), r);\n\tr = MulAdd(s7_3, M4(3.431e-02, 1.207e-01, 2.357e-02, 7.447e-02, 1.074e-01, 3.534e-02, 5.660e-02, -5.106e-02, -2.719e-02, -1.355e-01, 1.572e-01, -9.630e-03, 1.186e-01, -1.010e-01, 9.250e-02, 1.751e-02), r);\n\tr = MulAdd(s7_4, M4(-4.175e-03, 7.941e-02, -3.054e-02, 6.754e-02, 1.715e-01, 1.252e-01, -3.678e-02, -2.089e-01, 9.548e-02, -2.263e-01, -1.472e-01, 1.701e-01, 1.344e-01, 6.099e-02, -9.534e-02, -1.026e-01), r);\n\tr = MulAdd(s7_5, M4(-2.515e-02, -5.992e-02, -6.514e-02, -1.457e-02, -5.400e-03, -8.003e-03, 6.131e-02, 2.058e-03, 2.917e-02, 2.659e-02, 5.068e-02, -4.705e-02, -2.029e-02, 8.965e-02, 5.807e-02, -2.764e-02), r);\n\tr = MulAdd(s7_6, M4(1.002e-01, -8.008e-02, 1.664e-01, -3.319e-02, -3.740e-02, -5.018e-02, -7.137e-02, -2.204e-02, 5.796e-02, 5.437e-03, 1.174e-01, 6.421e-02, 1.287e-02, -9.052e-02, 1.385e-01, -9.506e-02), r);\n\tr = MulAdd(s7_7, M4(-5.514e-02, 2.037e-02, -1.808e-01, 2.922e-02, 1.873e-02, 6.722e-02, 3.174e-02, -4.081e-02, 1.462e-01, 5.952e-02, -5.291e-02, 1.107e-01, -2.713e-02, -1.114e-01, -1.489e-01, -2.283e-02), r);\n\tr = MulAdd(s7_8, M4(-7.015e-02, -3.209e-02, -1.040e-02, -1.341e-01, 2.126e-02, -7.423e-02, -5.012e-02, -5.814e-02, -1.321e-02, -2.905e-02, 1.278e-01, -1.232e-01, -8.702e-02, -8.247e-02, -4.964e-02, -7.967e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 7.978e-02, 1.297e-02, 1.591e-02, 3.718e-02 };\n\tr = MulAdd(s0_0, M4(-2.941e-02, -2.434e-02, 3.064e-02, 3.302e-02, 1.836e-02, -5.816e-02, 2.547e-03, 8.317e-03, -4.260e-02, 5.378e-02, -3.433e-02, 1.682e-02, 2.882e-02, -8.481e-02, 4.265e-02, -1.639e-01), r);\n\tr = MulAdd(s0_1, M4(-6.492e-05, -8.144e-03, 7.875e-02, 1.499e-01, -3.348e-03, 6.657e-03, -8.380e-02, 1.824e-02, 1.018e-01, 9.654e-02, 1.187e-01, -2.555e-02, -1.917e-02, -6.752e-02, -2.161e-02, 1.374e-01), r);\n\tr = MulAdd(s0_2, M4(-8.274e-02, 1.562e-02, 1.319e-02, -9.855e-02, 3.076e-02, 3.649e-02, -7.952e-02, -3.981e-02, -1.685e-01, -1.958e-01, 1.766e-01, -1.922e-01, -3.663e-02, -8.032e-02, -8.093e-02, -2.836e-02), r);\n\tr = MulAdd(s0_3, M4(-3.552e-02, 5.147e-02, 6.993e-02, -1.504e-01, 1.389e-01, -1.305e-01, 5.882e-02, -8.144e-02, -2.227e-01, -3.246e-02, -5.250e-02, 9.812e-02, -2.614e-02, 6.418e-02, -2.796e-02, 9.152e-03), r);\n\tr = MulAdd(s0_4, M4(-9.613e-02, 6.954e-02, 4.513e-02, 2.010e-02, -4.087e-02, -1.491e-01, -1.704e-01, 7.098e-02, -2.632e-01, 3.257e-02, -1.977e-01, 1.738e-01, -5.193e-02, -5.701e-02, -5.153e-03, 1.801e-02), r);\n\tr = MulAdd(s0_5, M4(-2.098e-01, 6.119e-02, 1.018e-02, -8.911e-02, 1.275e-01, -1.889e-02, -3.978e-02, -9.157e-02, -1.794e-01, 1.100e-01, -1.205e-01, 1.971e-02, -8.632e-02, -1.528e-01, -1.608e-01, 2.589e-02), r);\n\tr = MulAdd(s0_6, M4(7.168e-02, -6.540e-02, 1.441e-01, -1.025e-01, -5.714e-02, -4.127e-02, -1.118e-01, 1.293e-01, -8.594e-02, -3.036e-03, -9.054e-03, 8.522e-02, -8.144e-02, -7.556e-02, -6.968e-02, -4.779e-02), r);\n\tr = MulAdd(s0_7, M4(1.375e-01, 7.936e-02, 2.420e-02, -1.316e-02, 8.160e-02, -4.091e-02, 3.408e-02, 1.206e-01, 2.924e-02, -2.734e-02, -2.835e-02, 2.180e-02, -1.312e-01, 2.011e-02, -9.516e-02, 1.499e-01), r);\n\tr = MulAdd(s0_8, M4(6.966e-02, -5.254e-04, 4.887e-02, 2.101e-02, 2.118e-02, -3.386e-02, -5.333e-02, -1.047e-01, 9.082e-02, -8.253e-02, 1.156e-01, -6.557e-02, -2.685e-03, 5.894e-02, -1.469e-01, 6.893e-03), r);\n\tr = MulAdd(s1_0, M4(-6.617e-03, 2.358e-03, 5.778e-03, -1.314e-01, -4.964e-02, 4.517e-02, 2.407e-02, 4.159e-02, -3.152e-02, -2.996e-02, -6.864e-02, 8.028e-02, -2.853e-04, 9.098e-03, 3.602e-02, 7.354e-02), r);\n\tr = MulAdd(s1_1, M4(7.501e-05, -1.132e-02, -8.446e-02, 7.754e-02, 1.079e-01, 3.431e-02, -4.273e-02, -5.457e-02, -1.149e-02, 9.484e-02, 7.025e-02, 3.203e-02, 6.332e-02, 3.711e-02, -1.046e-01, -1.178e-02), r);\n\tr = MulAdd(s1_2, M4(-5.175e-03, -8.121e-02, -4.146e-02, 7.301e-03, 4.025e-02, 1.223e-02, 2.791e-02, 6.913e-02, 1.473e-02, 8.574e-03, 6.186e-02, -6.230e-02, 1.604e-01, 5.132e-02, 4.447e-02, 1.278e-01), r);\n\tr = MulAdd(s1_3, M4(4.298e-02, -4.138e-02, 3.455e-02, -1.189e-01, -1.010e-01, -4.456e-02, 7.414e-02, -5.421e-03, -1.060e-01, -2.736e-02, -8.738e-02, 7.068e-02, 1.642e-02, 1.671e-02, -1.072e-02, 1.842e-01), r);\n\tr = MulAdd(s1_4, M4(-1.000e-01, -2.205e-02, 2.536e-02, -3.240e-02, -2.124e-01, -2.686e-01, -6.321e-02, -3.527e-02, -4.732e-02, 9.274e-02, -8.798e-02, -1.492e-02, 3.769e-02, -3.042e-02, -4.481e-02, -1.013e-01), r);\n\tr = MulAdd(s1_5, M4(1.502e-02, -3.009e-02, -6.098e-02, -3.087e-02, -4.889e-02, 1.041e-01, 1.036e-02, 8.926e-03, -6.989e-02, 2.073e-02, 3.148e-02, -3.322e-02, 8.676e-02, 5.504e-02, -2.828e-02, 1.090e-01), r);\n\tr = MulAdd(s1_6, M4(-3.217e-02, -2.251e-02, -1.199e-01, -7.757e-02, -1.901e-02, -1.472e-02, 2.263e-02, 1.015e-02, -8.386e-02, 2.263e-02, 2.092e-02, 1.614e-01, 5.835e-02, -2.891e-02, -3.444e-02, 8.383e-02), r);\n\tr = MulAdd(s1_7, M4(7.769e-02, 7.688e-02, 5.715e-02, 5.460e-02, -2.923e-02, -1.379e-02, -6.241e-02, -1.554e-01, -1.097e-01, 5.052e-02, 1.053e-01, -9.672e-02, -8.070e-02, -3.313e-02, 1.447e-01, 7.332e-02), r);\n\tr = MulAdd(s1_8, M4(4.008e-02, 2.988e-02, 3.386e-03, 1.049e-01, -1.996e-02, 2.128e-02, -5.514e-02, 5.612e-02, 8.421e-02, -3.584e-02, 2.540e-02, -9.043e-02, 9.265e-02, -3.730e-02, 1.231e-01, 7.827e-02), r);\n\tr = MulAdd(s2_0, M4(-2.922e-02, 3.207e-02, 2.187e-02, -1.270e-02, 5.509e-02, 4.332e-02, 3.532e-02, -1.507e-03, 8.765e-02, 2.985e-02, -1.912e-02, 1.365e-01, 1.321e-02, -8.696e-03, -5.703e-02, 9.480e-02), r);\n\tr = MulAdd(s2_1, M4(2.217e-02, -1.560e-02, -4.137e-02, -4.427e-02, 2.507e-03, -4.972e-02, -9.183e-02, 6.844e-02, 1.052e-01, 3.160e-02, 7.056e-02, -1.322e-01, 2.606e-02, -7.859e-02, 6.381e-02, -7.867e-02), r);\n\tr = MulAdd(s2_2, M4(-3.012e-02, -4.216e-02, 7.229e-02, -9.155e-02, 2.943e-02, -2.606e-03, 3.110e-02, -1.333e-01, 1.004e-01, 1.753e-01, 8.786e-02, 4.076e-02, 3.666e-02, 1.754e-02, -6.180e-03, -2.207e-02), r);\n\tr = MulAdd(s2_3, M4(-8.370e-02, 2.884e-02, 8.631e-03, -1.328e-01, -9.496e-02, 2.105e-02, 1.071e-01, 3.868e-02, 1.920e-02, 6.074e-02, 6.057e-02, -1.481e-02, -1.764e-02, 3.089e-02, 4.285e-02, 2.929e-03), r);\n\tr = MulAdd(s2_4, M4(5.171e-02, -2.145e-01, 1.069e-01, 1.768e-01, -3.950e-02, -4.857e-02, 1.101e-01, -8.912e-02, 2.121e-02, -1.057e-01, 1.876e-01, -3.850e-02, -6.895e-02, -1.441e-01, 7.299e-02, -1.498e-01), r);\n\tr = MulAdd(s2_5, M4(-1.724e-02, 7.455e-02, -1.210e-01, 5.442e-02, 3.774e-02, 1.450e-01, 3.625e-02, -6.742e-02, 1.074e-01, 1.191e-01, 1.185e-01, 8.685e-02, -3.812e-02, 2.477e-02, 5.426e-02, 3.321e-02), r);\n\tr = MulAdd(s2_6, M4(-8.299e-02, 9.370e-02, -1.897e-03, 3.656e-02, 5.494e-02, -1.649e-02, 2.368e-02, 2.402e-01, 2.794e-02, -6.437e-02, -4.304e-02, -2.421e-02, -6.197e-03, -1.259e-02, 4.286e-05, 5.580e-03), r);\n\tr = MulAdd(s2_7, M4(9.556e-02, -4.561e-02, -5.381e-02, -7.346e-02, -5.055e-02, 4.323e-02, -5.527e-02, 6.885e-02, -1.879e-03, 9.991e-03, 1.194e-01, -1.043e-01, -1.687e-01, -6.391e-02, 8.169e-02, -1.353e-01), r);\n\tr = MulAdd(s2_8, M4(8.130e-03, -4.097e-02, 6.273e-02, 1.351e-02, -1.246e-02, 5.399e-02, -2.276e-01, 1.029e-01, 4.988e-02, 5.196e-02, -6.267e-02, 8.859e-02, -3.213e-02, 1.041e-02, -3.953e-02, 7.868e-02), r);\n\tr = MulAdd(s3_0, M4(4.746e-02, 1.205e-02, -1.137e-01, -5.023e-02, 5.604e-02, -3.252e-02, -1.373e-02, -8.422e-02, 4.960e-02, -5.724e-02, 7.550e-02, -3.787e-02, -8.279e-03, 8.360e-03, 8.743e-02, -6.190e-02), r);\n\tr = MulAdd(s3_1, M4(-2.924e-01, -8.317e-02, -2.259e-01, 7.349e-03, -5.453e-02, -7.694e-02, -1.276e-02, 1.190e-01, 6.733e-02, -8.522e-02, 4.811e-02, -2.259e-01, 2.148e-02, -1.042e-01, 2.048e-01, 1.342e-01), r);\n\tr = MulAdd(s3_2, M4(3.738e-02, 7.917e-02, -4.409e-02, 2.271e-02, 3.073e-02, 2.148e-02, -5.104e-02, -1.077e-01, 3.773e-03, 2.199e-01, 4.947e-02, 9.371e-02, -1.079e-01, -7.741e-02, -9.130e-02, -1.159e-01), r);\n\tr = MulAdd(s3_3, M4(1.659e-01, 1.031e-01, 1.433e-02, 7.288e-02, 1.501e-02, -4.722e-02, 3.735e-02, -1.021e-02, 1.170e-02, 3.726e-02, -2.700e-02, 1.136e-02, -2.785e-03, -1.009e-02, 2.770e-02, -1.443e-01), r);\n\tr = MulAdd(s3_4, M4(3.255e-02, -1.812e-01, 1.272e-01, 3.350e-01, -8.198e-02, 3.625e-02, 1.054e-01, -1.767e-02, 9.021e-02, 1.111e-01, 3.447e-02, -3.343e-02, 3.322e-02, 4.625e-03, -8.646e-02, -8.394e-02), r);\n\tr = MulAdd(s3_5, M4(1.526e-01, 1.363e-01, -9.677e-02, -5.682e-02, -4.038e-02, -7.338e-02, 8.752e-03, -6.069e-02, 1.428e-01, 2.273e-02, 1.126e-04, 1.274e-01, 7.145e-02, -2.907e-02, -2.007e-01, 3.065e-02), r);\n\tr = MulAdd(s3_6, M4(-2.294e-02, 1.287e-01, -1.624e-02, 2.358e-01, -2.306e-02, -4.672e-02, -4.526e-02, -1.324e-01, 5.202e-02, -1.641e-01, -1.009e-01, -3.234e-02, -4.125e-02, 2.795e-02, -1.845e-01, -4.797e-02), r);\n\tr = MulAdd(s3_7, M4(5.458e-02, -4.348e-02, 5.484e-03, -7.000e-02, -1.933e-01, -3.845e-02, 9.439e-02, 1.540e-01, -2.157e-02, -6.742e-02, -4.266e-03, -6.691e-02, -1.698e-02, -9.325e-02, -1.731e-01, 8.950e-02), r);\n\tr = MulAdd(s3_8, M4(4.234e-02, 1.992e-02, 4.979e-02, 8.673e-02, -7.786e-02, -3.021e-02, -1.684e-01, -6.725e-02, 9.105e-02, -7.153e-02, 2.010e-02, -3.460e-02, 1.903e-02, 2.604e-02, 2.235e-03, 3.280e-02), r);\n\tr = MulAdd(s4_0, M4(-1.972e-02, 2.761e-02, -3.976e-02, 6.334e-03, -1.171e-02, -2.757e-02, 8.276e-02, -2.144e-02, 3.288e-02, 4.816e-02, 5.422e-02, -4.026e-02, 3.477e-02, -7.479e-02, 1.246e-01, -3.651e-02), r);\n\tr = MulAdd(s4_1, M4(-3.185e-02, 1.588e-01, -9.285e-02, -2.698e-01, 9.317e-02, -4.110e-02, 7.298e-02, -2.632e-04, -2.814e-03, 2.064e-01, -2.521e-02, -7.196e-03, -1.124e-01, -4.184e-02, -6.549e-02, -1.707e-02), r);\n\tr = MulAdd(s4_2, M4(9.104e-02, 1.520e-01, -1.255e-01, -9.692e-03, 6.623e-02, -4.432e-02, -1.353e-01, -7.303e-02, -9.051e-02, 9.743e-02, -2.979e-04, 1.306e-01, -2.737e-02, 2.494e-02, -1.054e-01, 8.342e-03), r);\n\tr = MulAdd(s4_3, M4(1.346e-02, 2.161e-01, 8.065e-02, 7.728e-02, 5.731e-02, -1.770e-01, -1.715e-02, 3.805e-02, 4.969e-02, 1.818e-02, -5.811e-02, 7.452e-02, 3.335e-03, 4.923e-02, 1.136e-01, -1.628e-01), r);\n\tr = MulAdd(s4_4, M4(2.199e-01, 9.253e-02, -4.181e-02, -6.793e-02, -1.518e-01, -2.418e-01, 6.812e-02, 4.592e-01, 4.662e-02, 1.026e-01, 3.776e-03, 6.055e-02, -2.150e-01, -1.610e-01, 2.031e-02, -9.005e-02), r);\n\tr = MulAdd(s4_5, M4(9.640e-02, -1.482e-03, 3.158e-02, 2.938e-01, -8.727e-02, -1.316e-01, -3.092e-02, -1.496e-01, -5.053e-02, 1.870e-01, -1.285e-01, -1.277e-02, -5.118e-02, -1.790e-02, -2.986e-02, 9.309e-02), r);\n\tr = MulAdd(s4_6, M4(-7.843e-03, -3.903e-02, -6.224e-02, 1.617e-01, 7.246e-02, 6.096e-02, -1.730e-02, -1.947e-01, -6.006e-02, -5.627e-02, -5.049e-03, 7.108e-02, -1.217e-02, 3.679e-02, 3.234e-02, -1.250e-02), r);\n\tr = MulAdd(s4_7, M4(8.958e-02, 1.249e-01, 8.882e-02, -1.415e-02, 5.857e-02, -4.284e-03, 4.301e-04, 1.450e-01, 3.354e-02, 5.289e-02, -1.237e-01, 1.296e-02, -3.919e-02, -3.139e-04, -1.332e-02, 1.314e-02), r);\n\tr = MulAdd(s4_8, M4(-6.471e-02, -4.788e-02, -2.585e-02, -5.434e-02, -4.475e-02, -3.525e-03, -5.352e-02, -1.057e-01, 8.034e-02, 7.279e-02, -6.442e-03, 6.861e-02, -2.375e-02, 1.316e-02, -4.083e-02, 1.011e-01), r);\n\tr = MulAdd(s5_0, M4(1.985e-02, 3.916e-02, 3.798e-02, -1.692e-02, 6.397e-03, -1.355e-02, -2.031e-02, -2.817e-02, -6.168e-02, -4.464e-02, -5.530e-02, -1.036e-02, -9.005e-03, -5.387e-02, 1.100e-02, -4.647e-03), r);\n\tr = MulAdd(s5_1, M4(-2.538e-02, 3.361e-02, 4.501e-02, 8.380e-02, -2.978e-02, 4.141e-03, 2.197e-02, 5.906e-04, -1.235e-01, -4.108e-02, -2.486e-02, 9.339e-02, -2.567e-02, -4.833e-02, -1.186e-01, -6.430e-02), r);\n\tr = MulAdd(s5_2, M4(-8.502e-03, -6.589e-03, -2.242e-02, -7.214e-02, 2.742e-02, -5.241e-04, -1.054e-01, -2.671e-02, 3.098e-03, 1.298e-01, 5.643e-02, 1.503e-02, -1.707e-02, 3.305e-02, -9.092e-03, -1.961e-02), r);\n\tr = MulAdd(s5_3, M4(7.064e-02, 3.020e-02, -4.359e-02, 1.923e-03, 2.287e-02, -5.756e-02, -1.084e-01, 6.016e-02, 3.864e-02, -4.458e-02, 1.514e-03, -3.369e-02, 5.824e-02, 4.178e-02, 5.598e-02, -2.114e-01), r);\n\tr = MulAdd(s5_4, M4(3.226e-02, 1.058e-01, -1.451e-01, 8.814e-02, -2.822e-02, -6.766e-02, 1.211e-01, 2.170e-01, -9.701e-02, -5.907e-02, 6.719e-02, 1.080e-01, 1.558e-01, -1.136e-01, -2.143e-02, 2.146e-02), r);\n\tr = MulAdd(s5_5, M4(-4.396e-02, -6.496e-02, -1.304e-01, 1.161e-02, -2.445e-03, -2.884e-02, -8.961e-02, -1.887e-02, 2.963e-02, 1.861e-01, -1.455e-02, -1.838e-02, 8.519e-02, -6.405e-02, 4.370e-03, -2.149e-02), r);\n\tr = MulAdd(s5_6, M4(-5.832e-02, 2.541e-02, -2.242e-02, 5.767e-02, 7.318e-02, 3.783e-03, -1.337e-02, -4.162e-02, -3.102e-02, -3.865e-02, -1.660e-02, -1.414e-02, 3.334e-02, 5.308e-02, -2.364e-02, -1.214e-01), r);\n\tr = MulAdd(s5_7, M4(1.185e-01, 4.647e-02, 1.327e-02, 1.248e-02, -5.879e-03, -7.769e-02, 3.028e-02, 1.912e-01, -5.491e-02, 4.429e-02, -1.218e-01, -3.657e-02, 1.110e-01, 3.904e-02, -1.309e-01, 3.424e-02), r);\n\tr = MulAdd(s5_8, M4(7.027e-02, -5.632e-02, 3.849e-02, -1.103e-01, 7.069e-02, 4.495e-02, 6.745e-02, -4.776e-02, -4.377e-02, -1.048e-02, 5.689e-02, -1.101e-01, -7.026e-02, -1.670e-02, -4.685e-03, 2.207e-03), r);\n\tr = MulAdd(s6_0, M4(-7.398e-03, 7.106e-02, 7.153e-02, -1.247e-01, -1.109e-02, -3.335e-02, -5.528e-02, 1.849e-01, -4.156e-02, -3.664e-02, -8.374e-03, 6.961e-03, 8.130e-03, -1.577e-02, 1.137e-01, -3.156e-02), r);\n\tr = MulAdd(s6_1, M4(1.129e-01, -1.189e-01, 4.488e-02, -7.788e-02, 8.643e-02, 1.837e-01, -1.265e-01, -5.615e-02, -6.547e-02, -1.769e-02, -9.807e-02, -8.365e-02, -5.531e-02, -6.001e-02, -6.394e-03, -1.411e-02), r);\n\tr = MulAdd(s6_2, M4(4.292e-02, -1.760e-02, -3.858e-02, -1.170e-01, 4.675e-03, 1.659e-01, -1.608e-01, 1.794e-01, -5.545e-02, -1.435e-02, 3.114e-03, 5.590e-03, -2.390e-02, 1.322e-01, 4.663e-02, 8.771e-02), r);\n\tr = MulAdd(s6_3, M4(1.761e-02, 1.445e-02, -6.184e-03, -2.207e-02, -1.204e-01, -4.987e-03, -1.052e-01, 1.484e-01, 1.165e-01, 9.513e-03, -1.542e-02, 7.135e-02, -8.224e-03, -9.027e-02, -2.602e-02, -6.959e-02), r);\n\tr = MulAdd(s6_4, M4(9.770e-02, 3.180e-02, -1.041e-01, -1.179e-01, -2.815e-01, -1.230e-02, -2.789e-01, 3.166e-02, -6.205e-02, -8.654e-02, -3.476e-02, 1.611e-01, -1.815e-01, -2.143e-01, 2.580e-02, -2.844e-01), r);\n\tr = MulAdd(s6_5, M4(-8.180e-02, -7.580e-02, -4.291e-02, -1.427e-01, 5.695e-02, 9.596e-02, -2.144e-01, 2.188e-01, -1.982e-02, 7.858e-02, 8.475e-02, 1.514e-01, -8.808e-02, 1.089e-01, -4.070e-02, 4.048e-02), r);\n\tr = MulAdd(s6_6, M4(-5.352e-02, 5.043e-03, 6.957e-02, 1.354e-01, -1.226e-01, 7.943e-03, -3.156e-01, 1.567e-01, -3.719e-02, 9.156e-03, -1.380e-02, 1.031e-02, 1.340e-01, -5.385e-02, 1.223e-01, -4.012e-02), r);\n\tr = MulAdd(s6_7, M4(1.955e-01, -5.829e-02, -8.694e-03, -1.059e-02, -1.216e-01, -3.718e-02, 1.009e-01, -8.280e-02, -3.044e-02, 8.333e-02, -2.832e-02, 1.731e-02, -2.077e-02, -4.440e-02, 7.065e-02, -1.658e-02), r);\n\tr = MulAdd(s6_8, M4(-6.162e-02, 3.611e-02, 4.474e-02, -6.702e-02, 4.254e-02, 7.628e-02, -8.461e-02, 1.893e-01, 1.412e-01, -7.279e-03, -1.031e-01, 1.474e-01, 9.579e-03, 3.764e-02, 3.468e-02, 1.618e-02), r);\n\tr = MulAdd(s7_0, M4(-6.511e-03, 5.876e-02, -3.252e-02, 1.532e-02, 1.296e-02, 1.271e-02, 3.561e-02, -2.071e-01, -1.077e-03, 4.308e-03, 4.691e-02, -3.955e-02, -1.679e-02, 4.783e-02, 4.004e-02, -5.206e-02), r);\n\tr = MulAdd(s7_1, M4(-5.695e-02, -8.795e-03, -1.695e-01, 6.811e-03, 1.029e-01, 1.873e-01, 1.672e-01, -1.096e-01, 2.623e-02, 2.085e-02, -2.169e-02, -1.332e-01, -4.755e-02, 1.629e-01, -4.913e-03, 7.361e-02), r);\n\tr = MulAdd(s7_2, M4(-4.002e-02, -1.634e-02, -5.634e-03, 2.352e-02, -1.252e-02, -1.325e-01, 6.089e-02, -1.321e-02, -3.389e-02, 6.810e-03, 3.805e-02, 6.999e-02, -2.533e-02, 2.231e-02, -1.077e-01, -2.867e-02), r);\n\tr = MulAdd(s7_3, M4(5.882e-02, -1.398e-02, 9.710e-02, 1.346e-01, 7.443e-02, 1.350e-02, 2.343e-01, -7.184e-02, 3.826e-02, 9.868e-02, 6.762e-02, -3.686e-03, -3.982e-02, 1.061e-01, -3.359e-03, 8.183e-02), r);\n\tr = MulAdd(s7_4, M4(-3.034e-02, 1.242e-01, 2.341e-02, 1.437e-01, -4.342e-02, -1.100e-01, 5.104e-02, 1.598e-01, -1.597e-01, -9.473e-02, 2.654e-01, 9.261e-02, 1.447e-01, 4.627e-02, -3.673e-03, 1.930e-01), r);\n\tr = MulAdd(s7_5, M4(5.936e-03, -3.868e-02, -4.165e-02, 5.440e-02, 1.597e-02, 5.686e-02, 1.738e-02, 4.651e-02, -1.686e-01, 3.454e-02, -4.771e-02, 1.642e-01, 2.743e-02, 1.034e-01, 1.139e-01, -7.928e-02), r);\n\tr = MulAdd(s7_6, M4(-6.469e-02, -2.850e-02, 1.345e-02, 8.227e-02, 4.457e-02, -7.836e-02, -3.138e-02, -9.617e-02, 9.191e-02, -2.904e-02, -1.003e-02, 1.651e-02, 9.393e-03, -6.901e-02, -4.156e-02, 5.873e-02), r);\n\tr = MulAdd(s7_7, M4(-1.520e-01, 1.625e-02, -1.396e-01, -4.198e-02, -4.981e-02, -3.990e-02, -7.033e-04, -2.569e-02, 5.678e-02, 4.969e-02, 1.535e-02, -9.080e-02, 1.120e-01, -1.128e-02, -7.185e-02, 8.777e-02), r);\n\tr = MulAdd(s7_8, M4(-5.642e-02, -5.412e-04, -9.692e-02, -1.431e-01, -2.732e-02, 2.014e-03, 4.999e-02, 7.397e-03, 1.207e-01, 3.546e-02, -5.119e-02, 1.183e-01, -4.234e-02, 6.823e-05, 7.049e-02, -1.245e-01), r);\n\treturn r;\n}\n\nvoid Pass12(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 13\n//!DESC conv12\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.451e-02, 4.205e-03, -1.874e-02, 5.987e-02 };\n\tr = MulAdd(s0_0, M4(-2.727e-02, 1.860e-02, -4.458e-03, -5.726e-03, -1.577e-01, -4.286e-02, 6.106e-02, -1.690e-02, 8.294e-02, 5.488e-02, -1.047e-01, 1.538e-01, 8.408e-02, -1.312e-01, -3.116e-02, -2.641e-02), r);\n\tr = MulAdd(s0_1, M4(2.394e-02, -5.627e-02, 6.819e-03, -9.615e-02, -9.697e-02, 6.977e-02, 7.691e-02, 1.391e-02, 2.159e-01, -6.007e-02, 4.664e-02, 1.180e-01, -4.526e-03, -4.731e-02, -4.678e-02, 1.449e-01), r);\n\tr = MulAdd(s0_2, M4(-3.139e-02, -4.410e-04, 7.677e-03, -5.838e-02, 2.037e-02, 3.019e-03, -5.542e-02, 1.924e-02, 1.627e-01, -6.640e-02, 1.498e-02, -6.856e-03, 1.605e-02, 7.046e-03, 2.963e-02, 1.696e-02), r);\n\tr = MulAdd(s0_3, M4(-1.782e-02, -1.719e-02, -7.225e-02, 1.626e-01, -7.848e-03, 6.311e-03, 1.660e-01, -9.640e-02, 1.901e-01, 1.536e-01, -8.131e-02, 1.568e-01, 6.787e-02, -2.616e-01, -1.657e-01, -1.217e-01), r);\n\tr = MulAdd(s0_4, M4(2.402e-02, -5.180e-02, 3.238e-01, 5.130e-02, -1.186e-01, -3.297e-02, 3.518e-02, -8.813e-02, -1.821e-01, 2.735e-03, -2.272e-02, -1.587e-01, 6.347e-04, -4.115e-01, 8.288e-02, -1.711e-01), r);\n\tr = MulAdd(s0_5, M4(-4.711e-02, 5.101e-02, 4.590e-02, 1.843e-02, -4.606e-02, -5.505e-02, 1.978e-02, -9.190e-02, -5.407e-02, -6.751e-02, 6.788e-02, -1.819e-01, -3.097e-02, 5.234e-02, 2.505e-02, -1.620e-02), r);\n\tr = MulAdd(s0_6, M4(-8.327e-02, 3.394e-02, -2.762e-02, -1.267e-02, -3.118e-02, -4.203e-02, -1.915e-02, -2.694e-02, 4.255e-02, 9.391e-02, -8.181e-02, 8.793e-02, -2.567e-02, -1.241e-01, -3.868e-02, 4.641e-03), r);\n\tr = MulAdd(s0_7, M4(-1.265e-01, -1.142e-02, 3.078e-02, -5.078e-02, -4.318e-02, 2.410e-02, -4.860e-02, -1.372e-01, 8.228e-03, 5.283e-02, -1.799e-02, -1.085e-01, -1.308e-02, -1.410e-01, 4.549e-03, -7.541e-02), r);\n\tr = MulAdd(s0_8, M4(-1.404e-01, -1.130e-01, 1.942e-02, -8.287e-02, 2.416e-02, -1.117e-03, 3.450e-02, -1.568e-01, -2.204e-02, -3.736e-02, -2.581e-02, -6.577e-02, 2.257e-02, -4.211e-02, -9.675e-03, 7.848e-03), r);\n\tr = MulAdd(s1_0, M4(-1.753e-02, -1.061e-01, -1.941e-02, -3.498e-02, 3.414e-03, -2.544e-03, 7.220e-02, -5.898e-02, -5.010e-02, -7.170e-02, -4.184e-02, 1.056e-01, -3.951e-02, 7.392e-02, 3.164e-02, 6.455e-03), r);\n\tr = MulAdd(s1_1, M4(2.132e-02, -5.912e-02, 2.541e-02, -2.657e-02, -2.691e-02, 3.691e-02, 1.310e-01, -9.893e-03, 9.223e-02, -1.409e-02, -1.525e-04, 2.587e-02, -2.021e-02, 4.569e-02, -3.204e-03, -1.490e-02), r);\n\tr = MulAdd(s1_2, M4(1.962e-02, 2.759e-03, -7.012e-03, -8.703e-02, 2.837e-02, 3.851e-02, -6.665e-02, 6.604e-03, -5.036e-02, -1.401e-01, 4.164e-02, -8.759e-03, 8.031e-02, -5.369e-03, 5.276e-02, 3.227e-02), r);\n\tr = MulAdd(s1_3, M4(1.417e-01, -1.105e-01, -9.827e-03, 1.260e-01, 5.429e-02, -2.316e-02, 1.919e-01, -6.179e-02, -1.329e-02, -2.445e-02, -8.840e-02, -1.849e-02, 1.295e-02, -2.922e-03, 1.952e-02, 1.974e-02), r);\n\tr = MulAdd(s1_4, M4(1.472e-01, 6.149e-02, 3.121e-01, 9.670e-02, -2.147e-01, 1.758e-01, 3.195e-02, -2.337e-01, -1.342e-01, -1.795e-01, -1.035e-01, -1.530e-01, -8.237e-02, -2.517e-02, 1.130e-01, 4.597e-03), r);\n\tr = MulAdd(s1_5, M4(1.694e-01, -3.804e-02, 1.006e-02, 9.050e-03, 5.036e-03, -1.017e-01, -1.326e-02, -6.292e-02, -4.628e-02, 3.079e-02, 1.096e-01, -4.227e-02, 4.572e-02, -3.040e-03, 3.162e-03, -1.087e-01), r);\n\tr = MulAdd(s1_6, M4(8.446e-02, -7.063e-02, -5.259e-02, -4.093e-02, -2.239e-04, -6.035e-02, 3.502e-02, -4.368e-02, 5.139e-02, -2.759e-03, -5.726e-03, -4.317e-02, -5.761e-02, -1.266e-01, 1.389e-02, -4.611e-02), r);\n\tr = MulAdd(s1_7, M4(-3.608e-03, 4.023e-02, 1.596e-01, 4.010e-02, -1.215e-01, 1.654e-01, 2.359e-02, -2.235e-02, 1.056e-02, -1.449e-02, 5.011e-02, -4.273e-02, -4.232e-02, 4.341e-02, 1.237e-02, -3.922e-02), r);\n\tr = MulAdd(s1_8, M4(3.516e-02, -2.109e-01, 3.301e-02, -3.649e-02, 6.930e-02, -2.073e-02, -1.740e-02, -8.705e-02, -9.455e-02, -3.697e-02, -2.815e-03, -8.541e-02, 3.530e-02, -2.403e-02, -8.748e-03, 1.030e-02), r);\n\tr = MulAdd(s2_0, M4(2.361e-03, -3.106e-02, -2.550e-02, -6.701e-03, 4.618e-02, -1.025e-02, -4.397e-02, -3.041e-02, -4.155e-02, 1.014e-01, 1.181e-02, -8.906e-02, 1.174e-02, -3.898e-02, -4.353e-02, 3.231e-03), r);\n\tr = MulAdd(s2_1, M4(7.291e-02, -8.222e-03, 2.432e-02, -9.432e-02, -6.975e-03, 1.698e-02, 6.933e-02, -6.820e-02, 1.979e-03, 9.689e-02, -6.392e-02, 6.149e-02, 9.482e-02, -1.486e-02, 1.717e-02, -6.117e-02), r);\n\tr = MulAdd(s2_2, M4(1.253e-02, 9.987e-02, 1.337e-02, -2.675e-02, 8.067e-02, -1.307e-02, -7.607e-02, 3.150e-02, 5.124e-02, -9.682e-02, 3.614e-02, 6.068e-02, -1.912e-02, 9.636e-02, 1.016e-01, -6.173e-02), r);\n\tr = MulAdd(s2_3, M4(3.080e-02, 8.748e-03, 4.271e-02, 1.727e-02, 1.344e-01, 3.503e-03, 2.901e-02, 5.350e-02, 1.002e-01, -6.725e-02, 5.393e-02, 8.506e-02, 6.896e-02, -4.581e-03, -2.349e-02, 5.707e-02), r);\n\tr = MulAdd(s2_4, M4(8.581e-03, 3.780e-02, -3.451e-02, 7.881e-03, 3.311e-02, -4.575e-03, -1.255e-01, -1.687e-01, 6.803e-03, 1.502e-01, 1.383e-01, 1.094e-01, -3.518e-02, 1.349e-01, -9.125e-02, 4.415e-02), r);\n\tr = MulAdd(s2_5, M4(-3.615e-02, -1.587e-01, 2.283e-02, 4.116e-02, 3.003e-02, -3.900e-03, 5.371e-02, 1.825e-02, 1.142e-02, 3.305e-02, -2.310e-02, 1.300e-02, -1.215e-01, -3.361e-02, 1.091e-01, -1.498e-02), r);\n\tr = MulAdd(s2_6, M4(-5.844e-02, -2.646e-02, 1.989e-03, -1.116e-01, -6.720e-03, -3.411e-02, 6.304e-02, -3.175e-02, 7.671e-02, -8.020e-02, -3.955e-02, -3.694e-02, 3.225e-02, -7.695e-03, -4.875e-02, 3.363e-02), r);\n\tr = MulAdd(s2_7, M4(4.558e-02, -8.029e-02, -6.802e-02, -6.150e-03, -2.910e-02, 6.603e-02, -6.762e-02, 1.363e-02, -2.614e-02, 1.409e-01, 1.719e-01, 5.272e-02, 3.533e-02, 2.433e-02, 5.292e-04, -1.978e-02), r);\n\tr = MulAdd(s2_8, M4(-4.681e-02, -2.284e-03, 2.970e-02, 1.770e-02, -6.477e-02, -2.109e-02, -1.928e-02, 3.776e-02, -5.004e-02, -6.337e-02, 1.841e-02, -7.409e-02, 2.241e-02, -1.198e-02, -3.168e-02, 4.554e-02), r);\n\tr = MulAdd(s3_0, M4(-1.284e-01, -1.481e-02, 2.644e-02, -4.418e-02, -3.164e-02, -1.110e-02, -1.029e-01, -8.182e-02, 7.835e-02, -8.458e-02, -5.275e-03, 5.095e-02, 1.407e-01, 1.449e-03, 2.904e-02, 1.161e-02), r);\n\tr = MulAdd(s3_1, M4(9.676e-02, -5.340e-03, 5.016e-03, -3.486e-02, -2.752e-02, 4.908e-02, 9.737e-02, 1.105e-01, -1.245e-02, 9.282e-02, -3.309e-02, -4.545e-03, -1.213e-01, 3.467e-01, 1.786e-01, 1.421e-02), r);\n\tr = MulAdd(s3_2, M4(-4.647e-03, -1.704e-02, 1.311e-02, 6.546e-02, -1.045e-01, -9.303e-02, 2.685e-02, -2.411e-01, 1.881e-02, -4.017e-02, -3.385e-02, 7.156e-02, -3.419e-02, 3.292e-02, -1.625e-01, -4.494e-02), r);\n\tr = MulAdd(s3_3, M4(-7.864e-02, 2.998e-02, 2.436e-01, 4.854e-02, -1.240e-01, 1.856e-01, -2.961e-02, 1.470e-01, 4.504e-02, 3.820e-02, -5.622e-03, 4.088e-02, -2.922e-02, -1.591e-01, 2.946e-02, 6.375e-02), r);\n\tr = MulAdd(s3_4, M4(8.610e-03, 2.178e-01, -1.730e-02, 1.876e-01, 1.427e-01, -1.139e-01, -1.017e-01, -1.174e-01, -6.733e-02, 6.476e-02, 2.005e-01, -8.975e-02, -3.286e-01, 4.354e-02, -6.958e-02, 2.841e-01), r);\n\tr = MulAdd(s3_5, M4(-7.768e-02, -7.174e-02, 1.144e-02, 2.104e-04, -4.001e-02, -6.212e-02, 2.774e-02, -1.382e-01, -2.531e-02, -4.546e-02, -2.461e-02, 4.117e-02, -1.225e-01, -2.037e-01, 1.509e-01, -1.360e-01), r);\n\tr = MulAdd(s3_6, M4(-9.252e-02, -1.613e-01, 1.242e-01, -1.272e-02, 4.808e-02, 8.239e-02, 2.337e-02, 1.347e-01, 8.926e-02, 3.812e-03, -1.770e-02, 3.758e-03, -1.071e-01, -1.821e-02, -7.877e-02, 2.461e-02), r);\n\tr = MulAdd(s3_7, M4(-1.637e-02, -2.741e-02, -5.856e-02, -8.586e-02, 1.410e-01, -1.654e-01, -1.053e-01, 1.232e-02, 5.715e-02, 4.892e-02, 4.200e-03, -8.125e-02, 5.374e-03, 1.650e-02, -7.558e-02, -2.371e-02), r);\n\tr = MulAdd(s3_8, M4(-7.801e-03, -4.560e-02, 2.301e-02, 1.503e-02, -5.623e-02, -1.960e-02, 5.290e-03, -5.354e-02, 1.856e-03, 7.829e-02, -1.709e-02, -8.791e-02, -5.414e-02, -1.351e-01, 1.224e-02, 1.740e-01), r);\n\tr = MulAdd(s4_0, M4(1.194e-01, -2.520e-02, -1.475e-02, 7.062e-02, -4.557e-02, 5.231e-03, 1.203e-01, -8.481e-02, -1.178e-01, -1.132e-04, 1.303e-01, 1.029e-01, 1.042e-01, 6.363e-02, -1.091e-02, -3.500e-02), r);\n\tr = MulAdd(s4_1, M4(7.939e-02, 5.106e-02, 1.646e-02, 1.241e-02, -1.149e-01, 9.415e-03, -6.784e-02, -8.083e-02, -9.802e-02, 8.836e-02, 1.063e-01, 1.512e-03, -2.318e-02, 1.173e-01, 2.231e-02, -6.367e-02), r);\n\tr = MulAdd(s4_2, M4(6.719e-02, -5.960e-02, -1.792e-02, -9.391e-02, -2.777e-02, 4.057e-03, 9.521e-02, -3.255e-02, -5.838e-02, 1.602e-01, 5.509e-02, -3.045e-02, -3.952e-02, -5.492e-02, 1.377e-02, -5.226e-02), r);\n\tr = MulAdd(s4_3, M4(-1.063e-01, -1.305e-01, -1.833e-01, -1.631e-02, 6.600e-02, -3.358e-02, 1.500e-01, -7.903e-02, 4.510e-02, 8.916e-02, 1.552e-01, 1.120e-01, 2.318e-01, -5.822e-02, -6.089e-02, 9.544e-02), r);\n\tr = MulAdd(s4_4, M4(-1.171e-01, -9.434e-02, 9.676e-02, -1.079e-01, 1.392e-01, -8.776e-02, 7.483e-02, 1.604e-01, -6.664e-02, 3.942e-02, 1.006e-02, -1.421e-02, 6.416e-03, -3.308e-02, -3.635e-02, 5.277e-02), r);\n\tr = MulAdd(s4_5, M4(-7.795e-02, -1.596e-01, 5.188e-02, -2.112e-02, 2.212e-02, -2.934e-02, -4.072e-02, 3.688e-02, -8.796e-02, 4.554e-02, 4.613e-02, 2.220e-02, 3.293e-02, -2.018e-02, 6.763e-02, -4.271e-02), r);\n\tr = MulAdd(s4_6, M4(5.885e-02, -2.973e-02, -2.401e-02, -3.537e-02, -3.940e-02, -8.817e-02, 2.230e-02, -6.296e-02, -1.419e-01, 1.132e-01, 1.068e-01, 3.630e-02, 4.039e-02, -4.258e-02, -1.289e-02, -7.648e-03), r);\n\tr = MulAdd(s4_7, M4(-1.078e-01, -3.099e-02, 1.007e-01, 5.882e-02, -8.772e-03, -4.877e-02, 2.467e-02, -5.927e-02, -6.206e-02, 1.329e-01, 6.958e-02, -3.148e-02, 1.597e-01, 5.097e-02, 2.388e-02, 8.372e-02), r);\n\tr = MulAdd(s4_8, M4(-7.924e-02, -8.737e-02, -7.882e-02, 5.712e-02, -6.122e-02, 7.157e-02, -2.899e-02, 8.360e-03, 9.493e-03, 1.692e-01, -1.013e-02, 2.343e-02, -5.570e-02, -8.550e-02, 2.770e-02, -9.453e-02), r);\n\tr = MulAdd(s5_0, M4(8.819e-03, 2.501e-02, -3.208e-03, -4.834e-03, 1.048e-02, -1.934e-02, -1.325e-02, -1.168e-01, 2.640e-02, 1.421e-03, -1.342e-03, 2.189e-02, 4.175e-02, -2.015e-02, -4.324e-02, -4.105e-02), r);\n\tr = MulAdd(s5_1, M4(-1.479e-01, -1.196e-02, 1.970e-01, -1.033e-01, -1.251e-01, -8.718e-02, -9.094e-02, 5.674e-03, 3.394e-02, -2.784e-02, -1.616e-02, 3.621e-03, -5.221e-02, -2.673e-02, 8.328e-03, 9.240e-02), r);\n\tr = MulAdd(s5_2, M4(1.195e-02, 2.268e-02, -6.757e-02, -9.740e-02, -6.331e-02, -1.480e-01, -1.055e-03, 6.490e-02, 1.953e-02, -3.462e-03, 1.991e-02, 8.000e-02, -5.332e-02, -8.138e-02, 5.713e-02, -6.742e-02), r);\n\tr = MulAdd(s5_3, M4(5.748e-02, 4.795e-02, -7.095e-02, 5.452e-02, 1.210e-01, 1.292e-01, -6.480e-02, -1.008e-01, 1.286e-01, -5.994e-02, -1.638e-02, 3.202e-02, -6.433e-02, 2.687e-02, -6.258e-02, -1.186e-01), r);\n\tr = MulAdd(s5_4, M4(-1.261e-01, 1.389e-01, 1.851e-01, 9.956e-02, 2.162e-01, 5.637e-02, -8.870e-02, 1.544e-01, -5.564e-02, -3.457e-02, -9.623e-02, 3.453e-02, 4.398e-02, -7.065e-02, -1.803e-01, 1.055e-01), r);\n\tr = MulAdd(s5_5, M4(4.411e-02, -5.767e-02, -2.048e-02, -6.275e-02, 3.149e-02, 6.071e-02, -7.995e-02, -3.809e-03, -4.299e-02, -2.634e-02, -1.301e-02, -2.465e-02, 4.801e-02, -5.315e-02, -7.519e-02, -1.131e-01), r);\n\tr = MulAdd(s5_6, M4(5.184e-02, -2.393e-02, 2.978e-02, 7.869e-03, 4.903e-02, -5.779e-03, -7.840e-02, -6.297e-02, -3.251e-03, -3.650e-02, -7.022e-02, -9.058e-02, 2.345e-01, -4.798e-02, -6.965e-02, -1.047e-02), r);\n\tr = MulAdd(s5_7, M4(-1.676e-01, 9.611e-02, 8.009e-02, 6.452e-02, -1.739e-02, 8.875e-02, -9.899e-03, 2.454e-02, -5.297e-02, -8.019e-02, -1.924e-02, -2.413e-02, 5.407e-02, -1.561e-01, -6.469e-03, -2.123e-01), r);\n\tr = MulAdd(s5_8, M4(-1.075e-01, -1.276e-01, -4.091e-02, -2.845e-02, -5.205e-02, 6.212e-02, -4.472e-02, 5.580e-02, 1.958e-02, 6.661e-04, 3.652e-03, -3.716e-02, 4.124e-02, 7.924e-02, -1.599e-03, -1.593e-02), r);\n\tr = MulAdd(s6_0, M4(-6.587e-02, 3.429e-02, 9.400e-02, -1.117e-01, 2.646e-02, 3.866e-02, 2.226e-02, 1.353e-01, -3.900e-02, 4.505e-02, 8.604e-02, 3.070e-02, 2.779e-02, 1.100e-02, -6.750e-02, -2.839e-02), r);\n\tr = MulAdd(s6_1, M4(4.552e-03, 9.451e-02, -9.898e-02, -2.833e-02, -1.488e-02, 4.382e-02, -1.861e-03, 1.074e-02, 6.540e-02, -6.682e-02, 5.989e-02, -5.892e-02, 7.685e-02, 5.708e-02, -3.337e-02, 8.336e-02), r);\n\tr = MulAdd(s6_2, M4(-2.814e-02, 2.122e-02, 4.532e-02, 5.069e-02, 3.021e-02, -7.122e-03, -8.282e-02, 1.747e-02, 9.267e-02, 3.989e-02, 1.376e-02, -3.627e-02, 1.038e-02, -1.479e-02, -2.792e-02, 2.023e-02), r);\n\tr = MulAdd(s6_3, M4(-4.933e-02, -7.599e-02, 4.385e-02, 1.319e-02, -1.735e-02, -6.550e-02, 1.971e-01, -1.535e-02, -3.634e-02, -9.941e-03, -1.027e-01, 1.121e-01, 2.485e-02, -7.526e-02, -3.840e-02, -1.220e-01), r);\n\tr = MulAdd(s6_4, M4(-4.438e-03, 1.176e-01, -3.435e-02, -9.323e-03, 9.122e-03, -7.171e-02, 2.342e-02, -1.868e-02, -3.795e-02, 4.210e-02, 2.311e-02, -1.366e-01, 1.071e-01, 1.121e-01, 7.830e-02, -1.276e-01), r);\n\tr = MulAdd(s6_5, M4(4.036e-02, -1.007e-01, 9.589e-03, -4.900e-02, 1.301e-02, -6.537e-02, 9.083e-04, -1.008e-02, 4.379e-02, -7.682e-02, -4.417e-02, 1.213e-01, 2.464e-02, -9.770e-02, 2.136e-02, -2.157e-02), r);\n\tr = MulAdd(s6_6, M4(1.200e-02, 2.753e-02, -1.293e-01, -4.456e-02, 7.210e-02, 8.744e-02, 1.314e-01, 5.778e-02, -1.460e-03, 6.104e-02, 5.880e-02, 5.512e-02, 1.923e-02, -5.177e-02, -9.954e-02, -1.065e-01), r);\n\tr = MulAdd(s6_7, M4(3.210e-02, 1.409e-02, -4.716e-02, 6.395e-02, -1.541e-01, 1.459e-02, -3.552e-02, 1.028e-02, -6.029e-02, 2.254e-02, -4.864e-02, -1.185e-01, 5.626e-02, -3.494e-02, -1.985e-02, -1.366e-01), r);\n\tr = MulAdd(s6_8, M4(-3.078e-02, -1.036e-01, -1.301e-02, 7.125e-03, -4.409e-02, 7.586e-03, -2.456e-02, -1.396e-02, 4.438e-02, -6.712e-03, 6.092e-03, 1.195e-01, 2.095e-02, 3.639e-02, 2.807e-02, 7.034e-03), r);\n\tr = MulAdd(s7_0, M4(-1.064e-01, -2.040e-02, 5.966e-02, -1.144e-01, -2.941e-02, 2.149e-02, 1.126e-01, 6.964e-02, 8.057e-03, -7.718e-02, 1.058e-01, 9.676e-03, -1.611e-01, 9.774e-02, -3.619e-02, -2.273e-02), r);\n\tr = MulAdd(s7_1, M4(1.222e-01, 7.370e-02, 6.350e-02, -2.778e-02, -5.785e-02, 1.356e-01, -3.859e-03, 1.072e-01, -1.608e-01, 5.626e-02, 4.248e-02, -1.326e-02, 1.310e-01, 3.131e-02, -7.499e-02, 1.239e-01), r);\n\tr = MulAdd(s7_2, M4(-1.147e-01, 6.275e-02, 6.749e-02, 2.058e-03, 5.421e-02, 5.281e-03, -4.117e-02, -9.046e-03, 1.216e-02, -1.044e-01, -7.101e-02, 1.551e-01, -4.748e-02, -1.559e-02, 1.106e-01, -8.485e-02), r);\n\tr = MulAdd(s7_3, M4(-1.428e-01, 2.568e-02, 4.139e-03, -1.026e-01, 1.045e-01, 9.863e-02, 2.783e-01, 1.663e-01, 2.259e-02, 1.498e-02, -1.033e-01, 2.928e-02, -1.649e-01, 9.702e-03, -2.491e-02, 1.559e-02), r);\n\tr = MulAdd(s7_4, M4(4.773e-02, -2.796e-01, -1.417e-01, 3.005e-02, 4.236e-02, -1.432e-01, -4.318e-02, 2.015e-01, 2.713e-03, 7.427e-02, 1.661e-02, -1.379e-02, 8.511e-02, 1.124e-01, 1.307e-01, -4.609e-02), r);\n\tr = MulAdd(s7_5, M4(-1.353e-01, -5.591e-02, 1.868e-02, 1.359e-02, -3.074e-03, -8.917e-02, 5.121e-02, -1.265e-02, 2.939e-02, -7.794e-02, 4.117e-02, -8.684e-02, 4.066e-02, 1.425e-02, 4.589e-02, 7.110e-02), r);\n\tr = MulAdd(s7_6, M4(7.543e-02, 5.722e-02, -5.474e-02, 9.440e-02, 1.591e-02, 8.331e-04, 1.057e-01, 1.237e-01, 4.280e-02, 7.995e-02, 1.499e-02, 5.792e-03, -1.117e-01, 6.059e-02, 1.653e-02, 5.193e-03), r);\n\tr = MulAdd(s7_7, M4(8.459e-02, -9.582e-02, -4.502e-02, -5.642e-02, 4.828e-02, 5.482e-02, 9.157e-02, 1.656e-01, 9.634e-03, 6.346e-02, 2.196e-02, -6.270e-02, 5.168e-02, -7.061e-03, -4.080e-03, -1.748e-01), r);\n\tr = MulAdd(s7_8, M4(-1.326e-02, 3.705e-02, 1.875e-02, -9.729e-03, 7.288e-02, 5.390e-02, -8.273e-03, -1.523e-02, 1.830e-03, 2.142e-02, 4.581e-02, 1.018e-01, 2.352e-02, 4.956e-02, 1.290e-02, -6.372e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -9.645e-03, 2.342e-02, -1.139e-02, 1.378e-02 };\n\tr = MulAdd(s0_0, M4(2.344e-03, -9.805e-03, -2.839e-02, -3.089e-02, 1.048e-01, 2.998e-02, 4.555e-02, 7.427e-03, -8.033e-02, 2.833e-02, 6.935e-02, -9.568e-02, -6.328e-02, 2.050e-02, -5.968e-02, 2.476e-02), r);\n\tr = MulAdd(s0_1, M4(2.240e-02, -5.632e-02, -4.306e-03, -1.022e-01, -1.093e-01, 4.465e-02, -9.950e-03, 2.156e-02, -2.778e-02, 3.831e-02, 1.898e-02, -2.200e-02, 1.370e-02, 2.085e-01, 4.253e-02, 5.573e-02), r);\n\tr = MulAdd(s0_2, M4(9.375e-02, -2.336e-02, 8.234e-02, 4.651e-02, 6.124e-03, -1.309e-02, 9.795e-02, 1.715e-02, -6.332e-02, -8.201e-02, 8.917e-02, -2.506e-02, -4.990e-02, 1.082e-01, 5.102e-02, -9.560e-02), r);\n\tr = MulAdd(s0_3, M4(-7.771e-02, -2.765e-02, 1.889e-02, -3.040e-02, -8.316e-03, -1.270e-02, -4.994e-02, 4.334e-02, -7.231e-02, 4.457e-02, 1.622e-01, -4.778e-02, 3.031e-02, 1.168e-01, -1.184e-02, -1.127e-02), r);\n\tr = MulAdd(s0_4, M4(2.607e-02, -5.881e-02, 1.845e-01, -2.438e-01, -7.663e-02, -7.072e-02, -1.595e-01, 4.675e-02, -1.333e-01, -1.456e-01, -7.031e-04, 1.973e-03, -1.121e-01, -3.679e-02, 1.236e-02, -1.194e-01), r);\n\tr = MulAdd(s0_5, M4(2.403e-02, -8.932e-02, 1.899e-02, 3.188e-02, 2.199e-03, -9.581e-02, 1.759e-02, 5.322e-02, 3.552e-02, -1.322e-01, 1.539e-01, 6.338e-03, -4.610e-02, 1.254e-01, -4.811e-02, 7.377e-03), r);\n\tr = MulAdd(s0_6, M4(1.081e-01, -1.338e-02, 5.300e-02, -1.344e-02, 3.532e-02, 6.458e-02, 5.362e-02, -4.402e-02, -9.941e-02, -3.865e-02, -5.581e-03, -3.485e-02, -7.281e-02, 7.453e-02, -5.049e-02, -1.314e-02), r);\n\tr = MulAdd(s0_7, M4(1.238e-01, -2.739e-02, 1.134e-01, -3.758e-02, 1.081e-01, 1.110e-01, -7.975e-02, -1.989e-02, 2.296e-03, -2.101e-01, -1.088e-02, 8.849e-02, 7.111e-02, 1.474e-01, 6.939e-02, -4.090e-02), r);\n\tr = MulAdd(s0_8, M4(3.295e-02, -9.573e-02, -4.783e-02, -6.984e-02, 8.421e-02, -1.479e-02, -4.707e-02, 4.174e-02, 1.252e-02, -1.382e-01, 1.412e-03, 1.788e-02, -5.869e-02, -1.024e-01, 3.305e-02, 2.486e-01), r);\n\tr = MulAdd(s1_0, M4(5.386e-02, -2.332e-04, -6.319e-02, -6.575e-02, 9.518e-02, 2.111e-02, 4.273e-02, 2.367e-03, 3.327e-03, -1.247e-02, 1.171e-01, -6.264e-04, -8.330e-02, 3.086e-02, -2.737e-02, 1.056e-01), r);\n\tr = MulAdd(s1_1, M4(5.131e-02, -9.459e-02, 1.391e-02, -8.433e-02, -2.116e-02, 3.004e-02, -4.266e-02, -4.011e-02, 1.038e-01, 5.195e-02, 2.186e-02, 4.653e-03, 6.983e-02, 1.010e-02, -1.459e-01, 1.511e-01), r);\n\tr = MulAdd(s1_2, M4(1.060e-01, -2.618e-02, 6.360e-02, 1.022e-01, 8.176e-03, 2.611e-02, 1.113e-01, 3.624e-02, -9.619e-03, 8.484e-03, 9.125e-02, 4.374e-02, -3.693e-02, 7.485e-04, 1.215e-02, -3.590e-02), r);\n\tr = MulAdd(s1_3, M4(-2.750e-02, -4.485e-02, 9.890e-02, -6.311e-02, 1.524e-02, -6.605e-02, -1.650e-02, 5.478e-02, 3.148e-02, -8.228e-02, 1.109e-01, -7.090e-02, -1.741e-02, -4.447e-02, 5.358e-02, 7.489e-02), r);\n\tr = MulAdd(s1_4, M4(2.716e-02, 1.156e-01, 6.520e-02, -1.864e-01, -5.167e-02, -2.354e-01, -2.550e-02, 1.401e-01, -3.611e-02, 5.682e-04, -1.600e-01, -1.332e-01, -1.504e-01, 4.322e-02, -1.132e-01, -2.514e-01), r);\n\tr = MulAdd(s1_5, M4(1.397e-03, -3.174e-02, -6.599e-02, 1.456e-01, -3.225e-02, -6.391e-02, 1.805e-01, 6.478e-03, 6.731e-03, 4.296e-02, -2.010e-03, -7.334e-02, 2.013e-02, -3.991e-02, 1.716e-01, 1.178e-01), r);\n\tr = MulAdd(s1_6, M4(2.465e-02, -1.753e-02, -5.721e-02, -6.484e-02, 6.290e-02, -6.025e-02, 1.484e-01, -5.859e-02, 1.292e-01, 1.726e-02, -2.810e-02, 2.979e-02, -4.972e-03, -2.422e-02, 5.687e-02, 2.980e-02), r);\n\tr = MulAdd(s1_7, M4(1.368e-01, 1.486e-01, -3.852e-02, 8.255e-02, -3.771e-02, 1.432e-01, -1.848e-01, -3.078e-02, 3.680e-02, 1.328e-02, -1.199e-01, -6.755e-04, -7.118e-02, 7.359e-02, -1.523e-02, 4.401e-02), r);\n\tr = MulAdd(s1_8, M4(2.924e-02, -8.047e-02, -7.385e-02, -1.716e-02, 5.621e-02, -2.854e-02, 6.091e-02, 5.831e-03, 3.138e-02, -6.197e-02, -1.127e-02, 3.365e-02, -6.421e-02, -1.412e-02, -1.351e-02, 1.070e-01), r);\n\tr = MulAdd(s2_0, M4(-1.293e-02, -5.838e-02, 6.240e-02, -1.877e-01, 5.550e-02, -9.230e-02, 1.265e-01, 2.416e-02, 1.493e-04, -2.588e-02, -1.854e-01, 2.477e-01, -7.828e-02, -4.300e-02, -1.092e-01, -6.587e-02), r);\n\tr = MulAdd(s2_1, M4(8.245e-02, -9.892e-02, 1.759e-01, 3.533e-02, -1.654e-03, 1.972e-02, -2.587e-02, 8.446e-02, -7.160e-03, 5.482e-02, -2.511e-01, -1.212e-01, -7.406e-03, -5.994e-02, 7.520e-02, -3.798e-02), r);\n\tr = MulAdd(s2_2, M4(7.256e-03, -1.018e-01, 4.222e-02, 2.550e-03, -1.391e-02, -1.088e-02, -1.922e-02, -6.792e-02, -4.209e-02, -1.057e-02, 1.268e-03, 7.285e-02, -6.543e-02, 3.588e-02, 2.900e-02, -2.981e-02), r);\n\tr = MulAdd(s2_3, M4(1.095e-01, -5.158e-02, -6.584e-03, -4.608e-02, 1.458e-02, -4.648e-03, 2.637e-02, 6.995e-03, -2.911e-01, 5.837e-02, 5.528e-02, -1.085e-01, -4.009e-04, 3.748e-03, 7.829e-02, -9.249e-02), r);\n\tr = MulAdd(s2_4, M4(1.073e-01, 8.664e-03, -1.294e-01, 1.669e-01, 1.476e-03, -2.677e-02, -9.490e-03, 3.585e-02, -3.018e-01, 2.565e-01, -1.070e-01, -2.619e-01, 1.232e-02, 1.379e-01, 2.695e-02, 9.244e-02), r);\n\tr = MulAdd(s2_5, M4(5.018e-02, -7.074e-02, -8.919e-02, 3.096e-02, -1.395e-02, 3.363e-02, -1.519e-02, 4.761e-02, -4.412e-02, -9.688e-03, 1.550e-01, -1.703e-02, 3.976e-02, 5.225e-02, -8.573e-02, 1.902e-02), r);\n\tr = MulAdd(s2_6, M4(-2.469e-02, 2.743e-02, -4.801e-02, -3.503e-02, -1.190e-01, -3.653e-03, -6.111e-02, -7.555e-02, 8.907e-02, 3.066e-02, 4.436e-02, 6.102e-02, -1.557e-02, -1.555e-02, -9.236e-04, 1.793e-02), r);\n\tr = MulAdd(s2_7, M4(9.239e-02, 2.052e-02, -6.767e-03, -1.165e-01, -1.404e-02, 1.715e-02, -2.119e-02, -2.680e-02, 4.578e-02, 4.789e-02, -2.823e-02, 1.048e-01, 8.417e-02, 5.547e-02, -7.012e-03, -1.722e-02), r);\n\tr = MulAdd(s2_8, M4(-4.989e-02, -1.010e-01, 4.738e-02, 1.326e-02, -1.239e-01, -4.745e-02, 1.063e-02, 8.686e-03, 1.224e-02, 1.136e-02, 1.073e-02, 1.489e-01, -2.937e-02, 5.295e-02, -4.437e-02, 2.992e-02), r);\n\tr = MulAdd(s3_0, M4(4.208e-02, -3.703e-04, -1.569e-01, -6.008e-02, 7.651e-02, -6.044e-02, 1.212e-01, 3.376e-02, 2.591e-02, 5.298e-03, 4.234e-02, -1.362e-01, -6.371e-02, -3.483e-04, 4.701e-02, -9.569e-02), r);\n\tr = MulAdd(s3_1, M4(-1.979e-01, -4.556e-02, 5.086e-02, -1.667e-01, 2.496e-02, 6.713e-03, 1.485e-01, 2.983e-02, 9.088e-02, -4.213e-03, 7.270e-02, 1.251e-02, -1.967e-01, 8.713e-02, 6.949e-02, 6.630e-02), r);\n\tr = MulAdd(s3_2, M4(-1.449e-01, -6.095e-02, 5.335e-02, -5.547e-02, 1.107e-01, -1.202e-02, 1.260e-01, 4.970e-04, -1.520e-02, -1.878e-02, 1.131e-02, -2.673e-02, -3.896e-02, -3.462e-02, 1.693e-01, 8.253e-02), r);\n\tr = MulAdd(s3_3, M4(-7.279e-02, 1.513e-01, -6.853e-02, -9.554e-02, -4.488e-01, 1.131e-01, -3.079e-01, -9.108e-02, -3.125e-02, -1.483e-01, 1.877e-01, -4.281e-02, 2.693e-01, 5.360e-02, 1.042e-01, -8.684e-04), r);\n\tr = MulAdd(s3_4, M4(1.337e-01, 5.500e-02, -1.685e-01, -8.454e-03, -1.487e-01, 6.688e-02, 1.803e-01, 4.025e-02, -2.288e-03, 1.328e-01, -2.330e-02, 3.808e-02, 6.442e-02, 2.379e-01, 1.518e-01, 2.082e-02), r);\n\tr = MulAdd(s3_5, M4(-8.197e-02, -4.012e-02, -5.432e-03, -2.579e-02, 5.816e-02, -4.647e-02, -6.499e-02, -9.443e-02, -4.104e-02, -3.033e-02, 3.759e-02, -3.847e-02, 4.894e-02, 3.089e-01, 5.030e-02, 6.165e-02), r);\n\tr = MulAdd(s3_6, M4(3.228e-03, 3.505e-02, -8.164e-02, -2.838e-02, -8.041e-02, 2.948e-02, -2.364e-02, -1.109e-01, 1.239e-02, 1.975e-02, 1.805e-02, 7.607e-02, -8.639e-02, 6.563e-02, -8.454e-02, -3.153e-03), r);\n\tr = MulAdd(s3_7, M4(-4.569e-02, -2.611e-02, 4.161e-02, -7.171e-03, -1.369e-02, -2.254e-01, 7.921e-02, -1.140e-01, 1.063e-01, 4.064e-02, 6.557e-02, -6.192e-02, 2.136e-02, -8.469e-03, 2.204e-01, -6.957e-02), r);\n\tr = MulAdd(s3_8, M4(-1.402e-01, -2.294e-02, 1.230e-02, 5.118e-02, -1.238e-01, -1.030e-01, 5.372e-02, -1.356e-02, 2.047e-02, -2.680e-02, -2.303e-02, 2.664e-02, 6.519e-02, 1.141e-01, -4.940e-02, -1.001e-01), r);\n\tr = MulAdd(s4_0, M4(1.462e-01, 1.360e-02, -1.126e-03, -6.671e-02, 1.432e-01, 4.517e-03, 4.074e-02, 4.777e-02, -4.704e-02, 1.196e-01, -3.582e-02, 6.838e-02, 4.898e-02, 1.875e-02, -9.463e-03, -3.076e-02), r);\n\tr = MulAdd(s4_1, M4(-2.508e-02, 2.834e-02, 1.278e-01, 9.014e-02, 4.667e-02, -5.542e-02, -2.249e-02, 3.323e-02, -2.201e-02, 1.178e-01, -7.320e-02, 4.906e-02, 1.513e-02, -1.928e-02, -2.721e-02, 5.136e-02), r);\n\tr = MulAdd(s4_2, M4(1.140e-01, 4.113e-02, -8.168e-02, -3.008e-02, -3.237e-02, 1.575e-02, -1.213e-01, 8.478e-02, -1.921e-02, 1.392e-01, 5.893e-03, 1.796e-01, 2.867e-02, -1.158e-02, 5.610e-02, 1.319e-02), r);\n\tr = MulAdd(s4_3, M4(1.879e-02, 4.729e-03, 1.568e-02, 7.471e-02, 4.814e-02, -6.075e-03, -4.665e-03, 5.821e-02, 7.452e-02, 1.179e-01, 1.133e-02, 1.727e-01, -8.217e-02, 5.060e-02, 3.670e-02, -9.247e-02), r);\n\tr = MulAdd(s4_4, M4(6.469e-02, 1.039e-01, -8.760e-02, -1.319e-01, -7.083e-02, 7.944e-02, -4.220e-02, -2.130e-01, 1.128e-01, 5.147e-02, -5.449e-02, 2.036e-01, -5.375e-02, 6.902e-02, 5.372e-02, 2.733e-03), r);\n\tr = MulAdd(s4_5, M4(-1.676e-01, 9.467e-03, -5.490e-02, -1.960e-01, -1.715e-01, 1.034e-01, -9.772e-02, 8.503e-03, 9.439e-02, 1.480e-01, -5.971e-02, 1.124e-01, 2.235e-02, -3.263e-02, 5.998e-02, 8.289e-02), r);\n\tr = MulAdd(s4_6, M4(-1.038e-01, -8.226e-02, -1.567e-01, 2.170e-02, 1.291e-01, 8.024e-02, 1.948e-03, 4.178e-02, 2.871e-03, 1.282e-01, 2.812e-02, 1.055e-01, 1.089e-01, 1.132e-02, 2.708e-02, -2.635e-02), r);\n\tr = MulAdd(s4_7, M4(-8.934e-02, -4.735e-02, -5.800e-02, -5.941e-03, -4.215e-02, 1.354e-01, 4.278e-02, -6.081e-02, -2.853e-02, 2.969e-02, -8.708e-02, 1.214e-01, 5.987e-02, 8.078e-02, 2.372e-02, -5.396e-03), r);\n\tr = MulAdd(s4_8, M4(-4.907e-02, -1.079e-02, 1.005e-01, -6.986e-02, -5.939e-02, 1.774e-01, -1.692e-01, -1.039e-02, -4.109e-02, 9.287e-02, -6.562e-02, 9.642e-02, 6.208e-02, 1.334e-02, -5.994e-02, -1.001e-02), r);\n\tr = MulAdd(s5_0, M4(8.164e-02, 4.011e-02, 6.939e-03, 8.032e-03, 3.212e-02, -9.251e-02, 1.170e-02, -2.023e-02, -3.300e-02, -1.767e-02, -4.043e-03, -5.685e-02, 8.116e-02, -5.937e-02, -6.877e-02, 2.343e-02), r);\n\tr = MulAdd(s5_1, M4(-1.003e-01, -5.262e-02, 9.624e-02, 8.277e-02, -8.407e-03, -1.362e-01, -2.456e-02, -2.344e-02, -4.793e-02, -4.068e-02, 1.046e-02, -1.440e-01, 6.938e-03, 5.128e-02, 1.006e-01, 9.821e-02), r);\n\tr = MulAdd(s5_2, M4(5.356e-02, 2.052e-02, -4.819e-02, 6.780e-03, -1.889e-02, -3.426e-02, 6.200e-02, 1.969e-02, 1.825e-02, 2.155e-02, 1.092e-01, -4.080e-02, 1.203e-01, 4.247e-02, -1.231e-02, -1.020e-01), r);\n\tr = MulAdd(s5_3, M4(-5.032e-02, 4.816e-02, 7.752e-02, -2.300e-02, -1.198e-01, -1.443e-01, 2.161e-02, 5.853e-02, 2.987e-02, -4.013e-02, -2.463e-02, -5.912e-02, -1.189e-01, 6.843e-02, -3.794e-01, 4.953e-02), r);\n\tr = MulAdd(s5_4, M4(2.933e-02, 9.212e-02, -2.216e-01, 3.046e-02, -6.752e-02, -1.066e-01, -5.734e-02, 1.999e-02, 4.349e-02, -9.789e-02, 5.922e-02, 1.075e-02, 3.302e-02, -4.449e-03, 7.140e-02, 8.827e-02), r);\n\tr = MulAdd(s5_5, M4(2.336e-02, 5.605e-02, -1.168e-01, -2.738e-02, -1.068e-01, -1.342e-01, 7.226e-03, 5.034e-02, 6.440e-02, -2.983e-02, -3.400e-02, -4.761e-02, 6.747e-02, -1.067e-01, 7.144e-02, 1.726e-02), r);\n\tr = MulAdd(s5_6, M4(-1.062e-02, -6.428e-02, -7.855e-02, -3.672e-02, 3.085e-03, -4.312e-02, -1.639e-02, -6.597e-02, -4.954e-03, -6.910e-02, 7.293e-03, -7.641e-02, -7.643e-02, 1.781e-01, -1.830e-01, 4.187e-02), r);\n\tr = MulAdd(s5_7, M4(-7.771e-03, 6.857e-02, 1.087e-02, -8.714e-02, -1.724e-01, -5.215e-02, -8.151e-02, -8.315e-02, 1.904e-02, -3.969e-02, -2.525e-03, -9.843e-02, 9.320e-02, -6.709e-03, -1.866e-01, 1.070e-01), r);\n\tr = MulAdd(s5_8, M4(3.333e-02, 9.300e-04, 7.545e-03, 3.959e-02, -2.973e-02, -5.905e-02, 2.414e-02, -7.486e-02, 3.673e-02, -3.521e-02, -2.630e-02, -1.747e-02, -1.480e-01, -2.285e-02, -3.720e-02, 9.578e-02), r);\n\tr = MulAdd(s6_0, M4(-7.760e-02, 7.478e-02, -1.705e-01, -6.227e-02, -9.431e-02, 8.710e-02, 5.079e-02, -3.262e-03, 1.351e-02, 8.079e-02, -1.082e-01, 1.096e-02, -2.534e-02, -1.407e-02, -4.151e-02, 2.357e-03), r);\n\tr = MulAdd(s6_1, M4(-6.798e-02, -6.315e-02, 5.991e-03, 8.121e-02, -8.420e-02, -2.555e-02, 5.151e-04, 1.331e-02, 4.140e-02, -4.308e-02, 1.862e-01, -7.537e-02, -1.481e-02, 1.059e-02, 1.700e-04, 5.745e-03), r);\n\tr = MulAdd(s6_2, M4(-6.967e-02, 6.080e-02, 2.605e-02, -3.930e-02, -4.282e-02, -4.539e-02, 3.064e-02, 2.046e-02, -1.580e-02, -4.079e-02, -2.028e-02, -4.854e-02, -5.895e-02, -3.993e-02, -2.290e-03, -6.917e-02), r);\n\tr = MulAdd(s6_3, M4(-1.466e-01, -4.031e-03, 3.942e-02, -1.060e-01, 4.836e-02, -6.690e-02, 1.602e-01, -1.370e-01, -1.037e-01, -2.140e-02, -2.851e-02, -6.891e-02, 8.217e-03, -6.676e-02, 8.412e-03, -9.480e-02), r);\n\tr = MulAdd(s6_4, M4(9.009e-02, -4.851e-02, -2.332e-02, 1.002e-01, 6.230e-02, -1.825e-01, 3.208e-02, 1.192e-01, 6.470e-02, 3.821e-02, -2.345e-01, 4.967e-02, 2.437e-03, 1.159e-01, -1.056e-02, 2.428e-02), r);\n\tr = MulAdd(s6_5, M4(-1.050e-01, 1.916e-02, 8.092e-02, 1.318e-02, 5.276e-02, 7.569e-03, -4.164e-02, -7.187e-02, -1.271e-01, 6.620e-02, 4.655e-02, -1.058e-01, 3.835e-03, 1.104e-02, -7.979e-02, -3.507e-02), r);\n\tr = MulAdd(s6_6, M4(-2.637e-02, 1.293e-02, -5.877e-02, 2.606e-02, 3.808e-02, -1.190e-01, 1.087e-01, 6.010e-02, -1.083e-01, 2.846e-03, 6.642e-02, 1.077e-02, -6.618e-02, -1.059e-01, 4.072e-02, 9.681e-02), r);\n\tr = MulAdd(s6_7, M4(-2.846e-01, -4.732e-02, -1.686e-01, 2.317e-02, -2.674e-02, -2.176e-01, 2.488e-04, -7.701e-02, 4.202e-02, -8.379e-03, -2.075e-01, -1.442e-01, 6.196e-02, -3.720e-02, 2.136e-02, -6.112e-02), r);\n\tr = MulAdd(s6_8, M4(1.342e-02, 5.232e-03, -4.976e-02, 1.687e-02, -3.436e-02, -5.854e-02, 5.797e-02, 2.055e-04, -3.105e-02, 3.903e-03, 4.700e-02, 7.226e-02, 7.196e-02, 1.413e-02, 4.264e-02, 3.840e-02), r);\n\tr = MulAdd(s7_0, M4(2.040e-02, 1.497e-02, 2.256e-02, 1.460e-02, -9.725e-02, 6.526e-02, -2.696e-02, 2.454e-02, 1.266e-01, -3.398e-02, 6.082e-02, 5.908e-03, -1.409e-01, 3.909e-03, -7.887e-02, 6.916e-02), r);\n\tr = MulAdd(s7_1, M4(8.005e-02, 6.767e-02, -1.255e-01, 1.218e-01, -1.372e-01, 2.646e-02, 5.793e-02, 1.054e-02, -1.809e-01, 1.230e-04, -1.754e-01, -2.163e-01, 3.360e-02, -2.203e-02, 1.462e-01, -1.898e-02), r);\n\tr = MulAdd(s7_2, M4(7.027e-02, 4.845e-02, 1.684e-01, -8.964e-02, -3.446e-02, -3.309e-02, 8.349e-02, 5.183e-02, -1.477e-01, 1.125e-01, -1.548e-01, -2.234e-03, -4.121e-02, 1.182e-02, 3.854e-02, -3.380e-02), r);\n\tr = MulAdd(s7_3, M4(-5.837e-03, 3.345e-02, -7.857e-02, 1.266e-01, -8.752e-02, 1.598e-01, -1.238e-01, 3.737e-02, -4.614e-02, 6.373e-02, -1.753e-01, -9.201e-02, -9.938e-02, 1.970e-02, -7.991e-02, -1.997e-01), r);\n\tr = MulAdd(s7_4, M4(-2.545e-01, 8.458e-02, 1.423e-01, 3.587e-02, 2.393e-02, 1.303e-01, 8.049e-02, 1.975e-01, 1.185e-01, 6.992e-03, 8.926e-03, 2.984e-02, -6.371e-02, 5.806e-02, 2.618e-01, -1.410e-02), r);\n\tr = MulAdd(s7_5, M4(-3.266e-02, 1.660e-02, 5.827e-02, 1.212e-02, -7.540e-02, 5.256e-02, -2.155e-02, -6.183e-02, 2.177e-01, 6.338e-02, -5.074e-02, -9.758e-03, -5.153e-03, 2.625e-03, -2.261e-01, -1.068e-01), r);\n\tr = MulAdd(s7_6, M4(5.063e-02, 1.280e-01, 6.280e-02, 4.254e-03, 2.437e-02, 3.588e-02, -4.090e-02, 7.597e-02, -3.171e-02, 4.712e-02, -1.201e-01, 2.630e-02, 2.330e-02, -4.809e-02, 6.096e-02, 1.435e-01), r);\n\tr = MulAdd(s7_7, M4(-4.286e-02, -1.806e-01, 7.417e-02, 4.447e-02, 7.957e-02, 3.068e-01, -3.460e-02, 1.750e-01, -4.259e-03, 4.266e-03, -3.093e-02, -4.012e-02, 2.650e-01, 1.086e-01, 1.919e-01, -7.284e-02), r);\n\tr = MulAdd(s7_8, M4(-2.275e-02, -1.156e-02, 1.682e-02, 4.636e-02, 1.449e-01, 7.291e-02, -3.986e-03, 3.819e-02, 5.878e-02, 2.092e-03, 2.601e-02, 2.768e-02, -3.431e-03, 7.016e-03, -4.034e-02, 5.688e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.674e-02, 5.572e-03, -1.712e-02, -1.438e-02 };\n\tr = MulAdd(s0_0, M4(-2.235e-02, 1.758e-02, -1.337e-02, -1.894e-02, -1.007e-02, 3.774e-02, 3.656e-02, 4.967e-02, 3.830e-02, -5.293e-02, 5.697e-02, 1.559e-02, -3.131e-03, 1.521e-01, -7.018e-02, -2.493e-02), r);\n\tr = MulAdd(s0_1, M4(-6.261e-02, 3.260e-02, -8.457e-03, -1.056e-01, 2.296e-02, 3.729e-02, -5.025e-02, 1.684e-02, -4.360e-02, -7.328e-03, 7.443e-03, 4.313e-02, 1.082e-02, 1.483e-01, 2.137e-02, 5.946e-02), r);\n\tr = MulAdd(s0_2, M4(-2.812e-02, -1.622e-02, 7.932e-03, -1.053e-01, -1.674e-02, 2.378e-02, -1.198e-02, -1.223e-02, -3.115e-02, 2.124e-02, 1.056e-02, 9.962e-03, 6.215e-02, 3.674e-02, 3.996e-03, 1.621e-02), r);\n\tr = MulAdd(s0_3, M4(4.894e-02, -4.206e-02, -1.521e-02, 3.288e-02, 9.242e-03, -3.116e-02, -1.769e-02, -1.571e-02, -5.983e-02, -1.275e-01, 1.573e-01, -5.620e-02, 1.653e-02, -6.470e-02, 8.811e-02, 2.235e-02), r);\n\tr = MulAdd(s0_4, M4(1.422e-01, 1.464e-01, 1.462e-01, -2.127e-02, -2.044e-02, 2.511e-02, 6.318e-02, 4.210e-03, 4.909e-02, 1.642e-02, 3.219e-02, -7.011e-02, 4.381e-01, -5.414e-02, 3.604e-01, -9.337e-02), r);\n\tr = MulAdd(s0_5, M4(-7.263e-02, 6.901e-02, -7.342e-02, 2.163e-02, 1.265e-01, 1.449e-02, 1.719e-02, 8.816e-02, 6.955e-02, -2.453e-02, -1.210e-01, -3.800e-02, 2.995e-01, 4.550e-02, 9.555e-02, 5.017e-02), r);\n\tr = MulAdd(s0_6, M4(-2.159e-02, -1.025e-01, -2.438e-02, -3.804e-02, 3.301e-02, 4.639e-02, 1.628e-02, -3.390e-02, -6.444e-02, 5.609e-02, -1.486e-02, -4.606e-02, 6.844e-02, 2.264e-02, 2.765e-02, 4.180e-02), r);\n\tr = MulAdd(s0_7, M4(-1.188e-01, 1.812e-02, 9.982e-02, -5.810e-02, -2.826e-02, -7.934e-02, 1.336e-01, 2.213e-02, -6.742e-02, -6.453e-02, -3.554e-03, -6.146e-02, 1.484e-02, 9.664e-02, 7.380e-03, 1.108e-01), r);\n\tr = MulAdd(s0_8, M4(-1.089e-01, -4.001e-02, -1.961e-02, 5.396e-02, 2.787e-02, -1.072e-01, 1.750e-02, 5.926e-02, -6.103e-02, -2.486e-02, -7.206e-02, 6.456e-02, -7.149e-03, 8.422e-02, -3.065e-02, 4.495e-02), r);\n\tr = MulAdd(s1_0, M4(4.277e-02, -2.244e-02, 2.755e-02, -2.349e-02, 9.466e-04, -5.494e-02, -4.354e-03, 6.013e-02, 2.384e-02, 2.095e-02, 6.241e-02, 3.497e-02, -1.033e-01, -1.233e-02, -3.484e-02, -3.777e-02), r);\n\tr = MulAdd(s1_1, M4(-9.936e-03, 3.308e-02, 2.330e-02, 4.952e-02, 8.436e-02, -6.737e-02, 6.331e-03, 1.179e-01, 5.664e-02, 1.490e-01, 1.005e-02, -5.524e-02, -3.491e-02, -2.057e-01, 6.983e-03, 2.871e-02), r);\n\tr = MulAdd(s1_2, M4(6.342e-02, 6.945e-02, -2.345e-03, -2.712e-02, -6.100e-02, 1.269e-03, -5.115e-02, -3.713e-02, -7.851e-02, 3.446e-02, 2.732e-03, 7.302e-02, 1.977e-02, -5.482e-02, 1.593e-02, 6.747e-02), r);\n\tr = MulAdd(s1_3, M4(9.142e-02, 5.510e-02, 1.406e-02, 3.289e-02, 1.004e-01, 2.006e-02, -1.215e-01, 1.250e-01, 4.927e-02, -8.154e-02, -3.912e-02, 1.928e-01, 2.688e-02, 5.277e-02, 2.352e-02, -2.572e-02), r);\n\tr = MulAdd(s1_4, M4(1.341e-01, 1.110e-01, 7.819e-02, -2.257e-02, 1.074e-01, 4.469e-02, -5.829e-02, -6.687e-03, 1.695e-01, -5.354e-02, -4.332e-02, -8.639e-02, 2.138e-01, -2.395e-01, 4.136e-03, -3.769e-01), r);\n\tr = MulAdd(s1_5, M4(6.165e-03, 5.052e-02, -6.019e-02, 8.176e-02, 1.499e-01, 6.896e-02, -1.783e-01, 9.658e-02, 5.354e-02, -6.761e-02, -1.791e-02, 5.131e-02, 1.450e-01, 4.687e-03, -1.662e-03, -1.127e-01), r);\n\tr = MulAdd(s1_6, M4(9.139e-03, -1.031e-01, 2.417e-02, 8.615e-02, 2.571e-02, -6.374e-02, 2.505e-02, -3.085e-03, 5.163e-04, -9.310e-03, -9.462e-03, -8.005e-03, 3.816e-02, -6.714e-02, 1.051e-02, 2.327e-02), r);\n\tr = MulAdd(s1_7, M4(-8.160e-02, 3.700e-02, 1.831e-01, 1.902e-01, -1.498e-01, 7.021e-02, -2.213e-02, 3.722e-02, -2.187e-02, -3.998e-02, -9.834e-02, -9.257e-02, -5.951e-02, 3.060e-02, -7.497e-02, -3.321e-02), r);\n\tr = MulAdd(s1_8, M4(1.002e-01, 6.325e-02, -6.622e-02, 5.457e-02, -6.951e-02, -6.234e-02, -4.655e-02, 4.833e-02, -4.063e-03, 1.984e-02, -1.433e-01, 1.359e-02, -1.088e-01, 7.846e-02, -8.814e-02, -1.061e-01), r);\n\tr = MulAdd(s2_0, M4(5.541e-02, -6.334e-02, -3.905e-02, 1.848e-02, -2.151e-02, -2.225e-02, 2.208e-02, -8.518e-02, -1.885e-01, -1.277e-01, 3.760e-02, -2.416e-02, 3.120e-02, 6.864e-02, -6.249e-02, -2.824e-02), r);\n\tr = MulAdd(s2_1, M4(-9.894e-03, -6.898e-02, 5.062e-02, 1.003e-02, -9.902e-03, -3.368e-02, -3.137e-02, -9.003e-02, 9.006e-02, -9.906e-02, 9.512e-02, -1.653e-01, 4.891e-02, 3.604e-02, 9.485e-03, -1.121e-01), r);\n\tr = MulAdd(s2_2, M4(2.684e-02, -1.131e-02, -9.315e-03, -2.647e-02, 5.042e-02, 6.034e-02, -5.949e-03, -2.403e-02, -4.189e-02, 3.209e-02, -1.610e-02, 4.315e-02, 8.602e-03, -9.444e-03, 5.661e-02, 7.441e-03), r);\n\tr = MulAdd(s2_3, M4(3.760e-02, -5.971e-02, 1.612e-02, 4.358e-02, -2.775e-02, -6.953e-02, 9.300e-03, 3.969e-02, 3.650e-02, 4.474e-02, -1.545e-01, 9.842e-03, 6.761e-02, -9.414e-02, -4.700e-02, -4.308e-02), r);\n\tr = MulAdd(s2_4, M4(4.029e-02, 2.047e-02, 2.195e-01, 2.094e-02, 1.096e-01, -8.999e-03, 4.867e-02, 7.446e-02, -2.145e-01, -1.152e-01, -2.319e-01, -1.897e-01, -7.171e-02, 7.327e-02, -9.723e-03, 7.528e-02), r);\n\tr = MulAdd(s2_5, M4(-1.142e-02, 4.584e-02, -3.761e-02, 5.939e-02, 3.169e-02, -6.628e-03, 3.920e-02, 4.302e-02, -2.027e-03, -8.319e-02, 1.982e-02, -3.272e-02, -3.107e-02, 9.817e-02, -1.047e-01, 1.156e-02), r);\n\tr = MulAdd(s2_6, M4(-3.706e-02, -8.973e-03, -6.978e-02, -2.422e-02, -2.611e-02, 1.547e-02, -6.433e-02, 8.861e-02, -4.678e-02, 2.963e-02, 3.487e-02, -2.119e-02, -9.221e-03, 6.193e-02, 5.284e-02, -2.915e-02), r);\n\tr = MulAdd(s2_7, M4(7.955e-03, -1.196e-01, 5.242e-02, -3.935e-02, -2.996e-02, -1.235e-01, 2.109e-02, -1.208e-02, -2.038e-02, 4.355e-02, -1.435e-01, 1.085e-01, -4.006e-02, 6.133e-03, 8.911e-02, -1.343e-02), r);\n\tr = MulAdd(s2_8, M4(-2.854e-02, 2.309e-03, -9.021e-02, 3.283e-03, 8.163e-03, 3.751e-02, -1.850e-02, 2.969e-02, -7.961e-02, -1.022e-01, -1.138e-01, -7.536e-03, -3.915e-02, -4.643e-02, 1.830e-02, -4.550e-02), r);\n\tr = MulAdd(s3_0, M4(-4.359e-02, 8.218e-02, 4.245e-02, -6.153e-03, 2.215e-03, 8.774e-02, -1.116e-02, -1.783e-01, 9.785e-02, 3.987e-02, 3.351e-02, 9.085e-02, 1.105e-01, 7.231e-02, -2.175e-02, 1.808e-02), r);\n\tr = MulAdd(s3_1, M4(2.311e-02, -7.074e-02, 5.332e-02, -1.278e-01, -7.900e-02, -3.699e-03, 8.018e-02, -1.846e-02, 1.852e-02, -1.070e-01, -4.489e-02, -1.393e-02, 6.422e-02, 1.015e-01, 1.476e-02, -1.419e-01), r);\n\tr = MulAdd(s3_2, M4(-1.279e-01, 5.823e-02, 2.759e-02, 2.461e-04, 1.599e-01, 1.177e-01, 5.009e-02, 2.986e-02, 1.039e-01, 5.782e-02, -8.445e-03, 1.354e-02, 1.678e-01, 2.078e-02, 7.488e-02, 1.490e-02), r);\n\tr = MulAdd(s3_3, M4(-1.045e-01, -2.048e-01, 1.335e-01, 2.545e-02, -1.538e-01, 7.217e-02, -1.410e-01, 2.025e-01, 3.006e-02, -1.259e-01, 7.962e-02, 1.833e-02, 1.473e-01, -1.813e-01, 1.545e-01, 3.044e-02), r);\n\tr = MulAdd(s3_4, M4(-6.705e-02, -3.876e-01, 1.550e-01, -5.262e-02, -6.240e-03, 9.039e-02, -4.094e-02, 1.597e-01, -1.069e-02, -2.105e-02, 8.805e-02, -5.060e-02, 2.486e-01, 3.276e-01, 1.192e-01, 1.125e-01), r);\n\tr = MulAdd(s3_5, M4(-9.089e-02, -3.676e-02, 1.768e-02, -2.449e-02, 1.264e-01, -1.428e-01, 8.995e-02, -1.325e-02, -4.953e-02, -1.252e-03, 1.282e-02, 4.847e-02, 1.030e-01, 2.459e-01, -5.811e-02, -9.666e-03), r);\n\tr = MulAdd(s3_6, M4(-3.776e-02, -3.515e-02, -2.210e-01, -4.582e-02, -6.582e-02, 8.034e-02, -2.810e-02, 1.405e-02, 4.400e-03, 7.410e-02, 6.586e-02, -5.710e-02, -3.626e-02, 5.664e-02, -4.422e-02, 1.008e-01), r);\n\tr = MulAdd(s3_7, M4(-6.564e-02, -1.099e-01, -1.156e-01, -2.495e-02, -2.987e-02, -3.499e-02, 4.216e-02, -9.705e-02, 4.734e-02, -3.642e-02, -9.714e-02, 2.750e-02, 2.755e-02, 2.139e-01, 5.166e-02, -1.298e-02), r);\n\tr = MulAdd(s3_8, M4(-6.614e-02, 1.701e-02, -1.155e-01, -3.313e-02, -2.935e-02, 4.937e-02, -1.587e-02, 1.261e-02, 4.688e-02, -3.234e-02, 8.733e-02, 3.656e-03, 1.723e-01, 7.253e-02, -6.274e-02, 3.554e-02), r);\n\tr = MulAdd(s4_0, M4(4.480e-02, 2.594e-02, 2.363e-02, 3.143e-02, -6.157e-03, -1.087e-02, -3.910e-02, 8.682e-03, -8.595e-02, -2.033e-02, -2.067e-02, 1.186e-02, 6.745e-02, 4.664e-02, -3.684e-02, -1.060e-02), r);\n\tr = MulAdd(s4_1, M4(1.330e-01, 1.048e-01, -1.090e-03, -1.513e-02, -5.701e-02, -8.469e-02, 7.335e-02, -6.900e-02, -1.178e-01, -5.928e-03, 2.121e-02, -3.117e-02, 8.259e-03, 4.294e-02, -1.111e-02, 2.341e-02), r);\n\tr = MulAdd(s4_2, M4(-3.063e-03, 2.585e-02, 2.443e-02, 9.037e-02, -2.431e-02, 1.401e-01, -2.404e-02, 1.288e-01, -2.103e-02, -7.508e-02, -4.025e-02, -6.713e-02, 2.879e-02, -4.965e-03, -1.746e-02, 2.180e-03), r);\n\tr = MulAdd(s4_3, M4(1.529e-02, 2.120e-01, 7.481e-03, 9.703e-03, 9.358e-03, -1.427e-02, -2.549e-02, 2.064e-02, -1.091e-01, 3.638e-02, -6.525e-02, -6.546e-02, 4.348e-02, 9.187e-02, -1.321e-01, 3.164e-02), r);\n\tr = MulAdd(s4_4, M4(7.303e-02, 1.989e-01, -1.306e-01, -1.258e-01, -1.637e-02, -2.482e-02, -7.988e-02, -1.356e-01, -3.034e-02, -9.231e-02, -4.667e-02, 2.811e-03, -8.526e-02, 8.804e-02, 2.945e-03, 1.102e-01), r);\n\tr = MulAdd(s4_5, M4(-7.600e-02, 1.258e-01, -1.129e-01, 6.477e-02, -1.874e-02, -2.770e-02, 6.853e-02, 7.639e-03, -4.900e-02, -3.740e-02, -8.046e-02, -7.855e-02, 3.098e-03, -1.509e-02, 4.403e-03, 6.419e-02), r);\n\tr = MulAdd(s4_6, M4(-1.058e-02, -1.679e-02, 9.233e-02, 1.145e-01, 1.764e-02, -6.489e-03, 4.585e-02, 2.846e-02, -1.908e-03, -3.274e-02, -1.032e-01, 3.809e-02, -4.379e-04, -2.255e-02, 1.266e-01, -1.212e-02), r);\n\tr = MulAdd(s4_7, M4(-2.584e-02, 1.015e-01, -2.037e-01, -1.191e-01, -2.744e-03, 3.012e-02, -2.084e-02, -9.935e-02, -1.232e-02, 5.877e-02, -1.169e-01, -4.421e-02, 5.101e-02, 6.005e-02, 1.136e-01, -7.112e-02), r);\n\tr = MulAdd(s4_8, M4(2.779e-02, 2.092e-02, 3.396e-03, -6.018e-02, -5.603e-02, -6.637e-02, -6.031e-03, 8.090e-03, -7.464e-03, -6.229e-02, -1.222e-01, -5.995e-02, 1.425e-03, -7.597e-02, -8.031e-02, 3.117e-02), r);\n\tr = MulAdd(s5_0, M4(-1.024e-03, -6.547e-02, 4.057e-02, -2.702e-02, 5.368e-02, -2.424e-02, -7.984e-02, -2.550e-02, -2.558e-02, 2.972e-03, 1.810e-02, -4.180e-02, -2.523e-03, -1.060e-01, 2.874e-02, -1.072e-01), r);\n\tr = MulAdd(s5_1, M4(-4.545e-02, -1.463e-01, -9.852e-03, 7.608e-02, 4.909e-04, -1.093e-01, -9.807e-02, -2.105e-02, 3.853e-02, 6.383e-02, 9.544e-02, -2.734e-02, -1.198e-02, 3.637e-02, 1.506e-01, -6.324e-02), r);\n\tr = MulAdd(s5_2, M4(-5.263e-02, 3.993e-02, 4.378e-03, -7.435e-02, 3.669e-02, 5.376e-02, -6.510e-03, -4.577e-03, 1.390e-02, 3.165e-02, 3.503e-02, -3.090e-02, -3.346e-02, -3.649e-02, -3.415e-02, 4.699e-02), r);\n\tr = MulAdd(s5_3, M4(4.829e-02, 1.096e-01, -6.535e-02, -3.855e-02, 7.956e-02, -9.014e-03, 2.271e-02, -1.032e-01, -1.620e-02, 9.095e-03, -2.873e-02, 2.084e-02, -1.571e-02, -5.614e-02, -2.876e-02, 1.440e-02), r);\n\tr = MulAdd(s5_4, M4(-1.019e-01, -1.715e-02, -1.982e-01, -1.791e-01, -1.267e-02, -2.079e-01, -6.014e-02, -2.296e-01, 2.631e-02, 6.505e-02, 5.515e-02, 1.870e-02, -1.078e-01, 1.743e-02, -8.485e-02, 3.567e-01), r);\n\tr = MulAdd(s5_5, M4(4.436e-02, 8.221e-02, -2.439e-02, -7.809e-02, -6.170e-02, -9.551e-02, 1.609e-02, -7.136e-02, 4.165e-02, -4.817e-03, 4.287e-02, 2.408e-03, -4.165e-02, -1.652e-02, 2.293e-02, 8.002e-02), r);\n\tr = MulAdd(s5_6, M4(-2.911e-02, -2.198e-04, -4.255e-02, 1.860e-02, 2.319e-02, -1.573e-02, 7.366e-02, -6.204e-02, 3.113e-02, -3.469e-02, 2.894e-02, 1.208e-02, -3.099e-02, -4.035e-02, -6.633e-02, 1.054e-01), r);\n\tr = MulAdd(s5_7, M4(1.281e-02, -4.798e-02, -1.861e-01, -2.665e-02, -9.502e-03, 3.205e-02, -3.900e-02, -2.003e-02, 6.833e-02, 3.285e-03, 3.673e-02, -1.353e-02, 1.255e-01, 1.799e-01, 3.839e-01, -9.228e-03), r);\n\tr = MulAdd(s5_8, M4(-4.002e-02, -4.090e-02, -5.090e-02, 2.001e-02, -1.085e-01, -5.435e-02, 8.609e-02, 4.208e-03, 5.129e-02, -3.246e-02, 1.357e-03, -1.166e-02, 2.425e-02, -4.722e-02, -5.910e-02, -1.943e-02), r);\n\tr = MulAdd(s6_0, M4(-4.657e-02, -4.365e-02, 1.855e-02, 1.686e-02, -5.174e-03, -2.762e-02, 3.044e-02, -4.493e-03, -4.455e-02, -6.010e-02, 5.274e-02, 4.504e-02, -5.616e-02, -8.778e-02, -1.062e-02, -2.164e-02), r);\n\tr = MulAdd(s6_1, M4(-6.377e-03, -9.762e-02, -2.371e-02, -2.708e-02, -3.744e-02, -1.692e-01, -2.715e-02, 9.584e-02, 1.100e-01, -3.519e-02, -2.840e-02, 1.568e-02, 3.629e-02, -5.320e-02, 6.654e-02, -3.467e-02), r);\n\tr = MulAdd(s6_2, M4(-8.152e-02, -7.546e-03, -2.494e-02, 5.560e-02, 2.547e-02, 6.245e-03, -3.433e-02, -5.634e-03, 4.568e-02, 7.593e-03, 2.321e-02, 6.044e-04, 2.275e-03, 6.351e-02, 2.180e-02, 2.776e-02), r);\n\tr = MulAdd(s6_3, M4(3.938e-02, -4.175e-02, -1.703e-02, 6.867e-02, 1.547e-02, 4.972e-03, 1.693e-01, 3.867e-02, 1.203e-02, 1.163e-01, -1.831e-02, 4.121e-02, -1.257e-02, -3.650e-02, -5.777e-02, 3.162e-02), r);\n\tr = MulAdd(s6_4, M4(-1.089e-01, -1.033e-02, -1.311e-01, -1.149e-02, -1.438e-03, 1.024e-01, -1.596e-01, -2.566e-01, 3.615e-02, 1.599e-01, 1.222e-01, 9.341e-02, -2.748e-02, 2.028e-02, 1.122e-02, -1.354e-01), r);\n\tr = MulAdd(s6_5, M4(-1.415e-01, 3.870e-02, -1.051e-01, -6.938e-03, -6.274e-02, 5.740e-02, 8.951e-02, -5.256e-02, 6.098e-02, 3.744e-02, 1.375e-02, -1.474e-02, 1.328e-02, -6.412e-02, 6.594e-03, -9.309e-02), r);\n\tr = MulAdd(s6_6, M4(-1.109e-02, -2.355e-02, 6.765e-02, 5.406e-02, -2.680e-02, 1.297e-02, 7.848e-02, -6.058e-02, 6.114e-02, 7.744e-02, 1.494e-02, -4.207e-02, 4.035e-02, 4.003e-02, -7.107e-02, -1.884e-02), r);\n\tr = MulAdd(s6_7, M4(-8.515e-02, 2.844e-02, 7.553e-02, 1.075e-02, 1.320e-01, -2.922e-01, -1.579e-01, -6.371e-02, 1.280e-02, -1.929e-02, -1.225e-01, -1.209e-02, -4.205e-02, 3.344e-02, -5.664e-02, 4.004e-02), r);\n\tr = MulAdd(s6_8, M4(-9.777e-02, -6.582e-02, 3.920e-02, 6.389e-03, 3.322e-02, -2.803e-02, -5.406e-02, -1.865e-02, 2.119e-02, 1.149e-01, -3.422e-02, -3.817e-02, -3.067e-02, 4.716e-02, -1.032e-01, 2.235e-02), r);\n\tr = MulAdd(s7_0, M4(8.496e-03, 5.987e-02, 4.584e-02, 5.824e-02, -3.919e-02, -4.895e-02, 1.100e-01, 3.522e-02, -7.386e-03, -9.289e-02, 5.341e-02, 1.582e-02, -7.591e-02, -6.651e-04, 9.645e-02, 6.396e-02), r);\n\tr = MulAdd(s7_1, M4(3.472e-02, 3.446e-02, 1.222e-02, 7.000e-02, -2.298e-02, -6.086e-02, -5.135e-02, 7.823e-02, 5.182e-03, 3.576e-02, 1.775e-01, 6.364e-02, 6.662e-02, -9.483e-04, -5.751e-03, -9.270e-03), r);\n\tr = MulAdd(s7_2, M4(3.358e-02, 2.218e-02, 1.207e-01, 1.815e-02, -9.561e-03, -1.385e-02, -8.877e-02, -3.040e-03, 5.780e-02, 5.741e-02, -5.731e-02, 8.420e-02, -2.273e-02, 6.520e-02, 1.004e-02, 3.590e-02), r);\n\tr = MulAdd(s7_3, M4(5.142e-02, -8.508e-03, -1.159e-02, -2.834e-02, -4.526e-02, 6.746e-02, 1.057e-01, -1.036e-01, 5.933e-02, -1.548e-01, 4.227e-02, 8.383e-02, -5.301e-02, 8.128e-02, -1.236e-01, -3.375e-03), r);\n\tr = MulAdd(s7_4, M4(-5.605e-02, -1.155e-01, -9.862e-02, 4.081e-02, 1.326e-02, 4.698e-02, -2.698e-02, 6.181e-02, -3.167e-02, -6.973e-02, 2.052e-01, 8.491e-02, -3.532e-02, 6.526e-02, -3.787e-02, -5.853e-02), r);\n\tr = MulAdd(s7_5, M4(-5.731e-02, 1.031e-01, -9.473e-02, -8.531e-03, 2.696e-02, 8.500e-02, 5.398e-02, 1.124e-01, 1.754e-01, 5.313e-02, 1.291e-01, -1.637e-02, -3.436e-02, 9.291e-02, -1.553e-02, -4.011e-02), r);\n\tr = MulAdd(s7_6, M4(-5.448e-03, -7.619e-02, 2.262e-01, -1.853e-02, 3.073e-03, 2.042e-01, -1.654e-01, 7.605e-02, 4.162e-02, -9.305e-02, 9.896e-02, -3.766e-02, 2.231e-02, 7.078e-02, -2.020e-02, -2.443e-02), r);\n\tr = MulAdd(s7_7, M4(2.423e-02, 1.639e-01, 3.665e-02, 4.298e-02, 5.405e-02, 9.624e-02, -2.319e-01, -1.499e-01, 2.105e-02, -4.502e-02, -1.867e-01, -1.004e-01, -1.021e-01, -1.292e-01, -3.473e-02, 3.257e-02), r);\n\tr = MulAdd(s7_8, M4(6.504e-03, 1.106e-01, 7.303e-02, 1.007e-01, 1.818e-01, 1.160e-02, -9.286e-03, -1.160e-01, -4.789e-02, 4.493e-02, -8.081e-02, -8.938e-02, 2.520e-02, 4.247e-02, 3.953e-02, 6.861e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 6.569e-03, 6.884e-03, -2.693e-02, 6.307e-03 };\n\tr = MulAdd(s0_0, M4(-3.286e-02, -5.558e-02, 5.368e-03, 3.030e-02, -1.262e-02, 1.150e-02, -3.379e-02, -7.153e-02, -4.218e-03, -5.102e-02, 1.123e-01, -7.896e-02, 6.458e-03, 3.456e-02, -1.064e-01, -1.553e-01), r);\n\tr = MulAdd(s0_1, M4(-4.861e-02, 3.643e-02, -3.731e-02, -9.669e-02, -1.237e-03, 6.117e-02, 9.559e-02, 1.336e-01, -1.348e-01, -8.136e-03, 1.444e-01, 1.200e-01, 6.525e-02, -8.019e-02, -1.538e-01, 2.949e-02), r);\n\tr = MulAdd(s0_2, M4(-1.352e-01, 1.882e-02, -1.003e-01, 1.790e-02, -8.007e-02, -5.233e-03, -6.482e-03, 1.315e-01, 1.054e-03, 1.917e-02, 1.244e-02, 3.169e-02, 1.513e-01, 4.209e-02, 1.209e-02, 1.450e-01), r);\n\tr = MulAdd(s0_3, M4(3.892e-02, -5.554e-02, -1.809e-02, 3.134e-02, -6.139e-02, 6.550e-02, -2.202e-02, -1.255e-01, 1.639e-02, 7.508e-02, 2.674e-01, -2.016e-02, -3.796e-02, -7.200e-02, -1.230e-01, -2.679e-02), r);\n\tr = MulAdd(s0_4, M4(-5.442e-02, 2.733e-02, -1.801e-03, -2.134e-02, 9.374e-02, -2.165e-02, -1.593e-01, -1.614e-01, 2.401e-01, -1.075e-01, 9.997e-02, -5.962e-02, 2.714e-01, 2.665e-01, -2.994e-01, 8.561e-02), r);\n\tr = MulAdd(s0_5, M4(-1.654e-01, -6.863e-02, -4.063e-02, 1.015e-02, -3.911e-03, -4.761e-02, 3.745e-02, -4.014e-02, -8.392e-03, 4.647e-03, 4.148e-02, -1.184e-01, 1.168e-01, -1.158e-01, -1.479e-02, -4.154e-02), r);\n\tr = MulAdd(s0_6, M4(3.566e-02, 1.329e-01, 5.007e-02, 1.029e-01, -5.539e-02, -1.019e-02, 4.680e-02, -5.687e-03, 6.479e-03, -1.294e-02, 1.244e-01, 7.200e-02, 2.546e-02, 5.989e-02, -6.528e-02, 8.630e-02), r);\n\tr = MulAdd(s0_7, M4(-8.646e-02, 1.731e-01, 9.482e-02, 8.726e-02, -8.075e-02, -5.263e-02, 1.207e-01, 9.825e-02, 3.145e-02, 3.826e-02, 7.561e-02, 8.651e-02, 2.112e-01, -2.415e-02, -1.399e-01, -1.141e-01), r);\n\tr = MulAdd(s0_8, M4(5.204e-02, 1.790e-03, 4.330e-02, 1.759e-01, 7.105e-02, 5.055e-02, 1.284e-01, 2.851e-02, 6.014e-04, -3.710e-02, 5.909e-02, 4.122e-02, 9.774e-02, -8.960e-02, 6.467e-02, -2.063e-02), r);\n\tr = MulAdd(s1_0, M4(1.483e-04, -8.302e-02, 2.958e-02, -9.205e-02, -8.072e-02, -9.046e-03, 1.077e-02, 3.121e-02, -5.374e-02, 1.027e-02, -4.329e-02, -9.952e-02, -1.073e-02, -4.699e-02, 2.717e-02, -9.122e-02), r);\n\tr = MulAdd(s1_1, M4(7.848e-02, 6.429e-02, -2.606e-02, 4.148e-02, 2.932e-02, -2.389e-02, 1.253e-01, 1.724e-01, -1.283e-01, 6.969e-02, -4.918e-02, 2.244e-01, 3.852e-02, -3.114e-02, 9.021e-02, 3.441e-02), r);\n\tr = MulAdd(s1_2, M4(-1.460e-02, 6.312e-02, -4.304e-02, 5.499e-02, -1.616e-01, 1.703e-02, -1.842e-02, 1.267e-01, -6.582e-02, -1.423e-03, 3.774e-02, -6.782e-02, 1.845e-02, 2.383e-02, -7.941e-03, -3.615e-02), r);\n\tr = MulAdd(s1_3, M4(3.129e-02, -3.667e-02, -8.854e-02, -1.084e-01, -1.353e-02, 7.837e-02, -7.423e-02, 8.332e-02, -2.522e-05, -1.771e-03, -2.036e-01, -1.220e-03, -6.209e-02, 5.654e-03, 8.280e-02, -2.826e-02), r);\n\tr = MulAdd(s1_4, M4(1.353e-02, 1.617e-01, 1.995e-01, 3.197e-02, 1.677e-01, -5.916e-02, -4.875e-02, -1.233e-01, 2.653e-01, 8.528e-03, -2.483e-01, -1.420e-01, 1.367e-01, 1.041e-01, -4.963e-02, 2.426e-01), r);\n\tr = MulAdd(s1_5, M4(2.180e-02, -4.062e-02, 1.189e-03, -3.950e-02, -9.090e-02, -6.138e-02, -5.669e-03, -2.549e-02, 1.697e-02, 1.645e-01, 7.228e-02, -8.677e-03, -6.223e-02, -8.186e-02, 2.890e-02, 8.978e-02), r);\n\tr = MulAdd(s1_6, M4(5.162e-02, 4.894e-02, -7.496e-02, -1.230e-01, -4.356e-02, -3.984e-02, 5.458e-02, 4.174e-02, -1.513e-01, -1.285e-02, -5.100e-02, -3.304e-03, -3.399e-02, 1.256e-01, 1.920e-02, 1.121e-01), r);\n\tr = MulAdd(s1_7, M4(-4.488e-02, 1.591e-01, -1.624e-01, -8.467e-02, -1.239e-01, 2.445e-02, 1.997e-02, 1.639e-02, -6.134e-02, -2.105e-02, -2.311e-02, 4.681e-02, 8.311e-02, 1.185e-02, -9.454e-02, -3.118e-02), r);\n\tr = MulAdd(s1_8, M4(-3.601e-03, -5.132e-02, 2.023e-02, -1.442e-02, 9.517e-02, 1.182e-01, 1.941e-02, 1.040e-02, -3.218e-02, -2.666e-02, 2.423e-02, -4.021e-02, -9.206e-02, 6.915e-02, 6.492e-03, -7.742e-02), r);\n\tr = MulAdd(s2_0, M4(-3.682e-02, 7.720e-03, 6.424e-02, -4.937e-02, -9.706e-02, -4.218e-02, -1.654e-02, -1.787e-01, 1.144e-02, -2.757e-02, -6.188e-03, -2.244e-01, -1.874e-02, -2.107e-02, -5.218e-02, -1.371e-01), r);\n\tr = MulAdd(s2_1, M4(7.475e-02, -1.432e-02, 9.054e-02, -1.267e-01, 7.644e-02, 4.824e-02, 1.019e-01, -8.470e-02, -4.102e-02, 1.201e-01, -1.280e-01, -7.696e-02, -5.082e-02, -7.261e-03, 3.320e-03, -2.208e-02), r);\n\tr = MulAdd(s2_2, M4(-4.459e-02, -3.978e-02, 6.344e-02, 8.882e-02, -5.338e-02, -8.955e-02, 4.356e-02, 4.547e-02, -5.658e-04, 8.348e-02, 1.458e-02, -4.076e-02, 8.107e-02, -2.509e-03, 7.839e-02, 1.782e-02), r);\n\tr = MulAdd(s2_3, M4(-3.090e-02, 5.185e-02, -2.392e-03, 9.523e-02, -4.333e-02, 4.541e-02, -1.031e-02, -7.619e-02, -1.044e-01, 1.775e-01, -1.146e-01, -1.942e-02, 1.260e-01, -2.625e-02, 1.437e-01, -1.042e-01), r);\n\tr = MulAdd(s2_4, M4(-7.213e-02, -1.645e-01, -1.091e-02, -1.120e-01, 1.002e-01, -6.332e-02, 4.277e-02, 9.251e-02, 1.158e-01, 1.273e-01, -1.918e-03, -3.486e-01, -1.529e-01, -9.992e-02, -6.274e-02, -1.043e-01), r);\n\tr = MulAdd(s2_5, M4(1.229e-01, 4.003e-02, -2.590e-02, -1.465e-02, -5.746e-02, -3.314e-02, -1.168e-02, 5.900e-03, -6.562e-03, 9.581e-02, -4.788e-02, 2.590e-02, 8.387e-02, 6.084e-02, -3.417e-02, -1.483e-01), r);\n\tr = MulAdd(s2_6, M4(-8.101e-02, -2.068e-03, 1.652e-02, 6.369e-03, 1.646e-02, -3.940e-02, -2.581e-02, -7.013e-02, 1.263e-02, -2.072e-02, -1.128e-03, 2.931e-03, 2.252e-02, -6.322e-02, 5.656e-02, -6.017e-02), r);\n\tr = MulAdd(s2_7, M4(-1.199e-02, -4.779e-02, -2.128e-02, -9.445e-02, 6.734e-03, 8.381e-03, 4.290e-03, 1.321e-01, -2.633e-02, 2.928e-02, -2.738e-01, -8.694e-02, 7.871e-02, -1.597e-02, -4.260e-02, -1.368e-01), r);\n\tr = MulAdd(s2_8, M4(3.368e-02, 1.480e-02, 8.021e-02, -2.883e-02, -2.109e-02, 4.231e-02, 5.099e-02, -3.689e-02, -1.832e-02, 7.323e-02, -1.495e-01, -1.800e-02, 1.340e-01, -5.175e-02, 2.019e-02, 6.081e-02), r);\n\tr = MulAdd(s3_0, M4(-3.042e-02, 4.959e-02, -1.628e-01, -7.205e-02, -1.110e-01, 1.615e-01, 6.012e-02, -2.321e-01, 7.382e-02, -3.659e-02, 3.137e-02, -3.680e-02, -1.551e-02, -8.853e-03, 4.016e-02, 4.906e-02), r);\n\tr = MulAdd(s3_1, M4(2.155e-02, -2.277e-02, 2.107e-02, -1.744e-01, -1.159e-01, 1.025e-02, -8.337e-02, 1.050e-01, -5.261e-02, -9.656e-04, 7.279e-02, 6.861e-02, 3.067e-02, -9.676e-02, 1.065e-01, 1.728e-01), r);\n\tr = MulAdd(s3_2, M4(-5.673e-02, -2.262e-02, -7.513e-02, -1.410e-02, -3.755e-02, 4.702e-02, 4.710e-02, 1.799e-01, 3.802e-02, -9.390e-02, 2.261e-02, 6.757e-02, 3.401e-02, -6.094e-02, -3.018e-02, 1.129e-01), r);\n\tr = MulAdd(s3_3, M4(-1.184e-01, 8.267e-02, 3.124e-02, 4.827e-02, 6.686e-02, -1.382e-01, -2.837e-01, -9.711e-02, 1.829e-02, 1.057e-01, -1.102e-02, -3.657e-02, 9.744e-02, 5.657e-02, 6.135e-02, 8.644e-02), r);\n\tr = MulAdd(s3_4, M4(-1.887e-02, 1.702e-02, 3.265e-02, -1.128e-01, 5.493e-02, 6.220e-02, -4.533e-02, 1.263e-01, -1.606e-01, -9.614e-02, -8.556e-02, -7.665e-02, -2.717e-01, 1.143e-01, 5.673e-02, -1.683e-01), r);\n\tr = MulAdd(s3_5, M4(-1.469e-01, 9.381e-02, -3.942e-02, 5.832e-03, 1.271e-02, -9.744e-02, -8.614e-02, 1.966e-01, 5.591e-02, 4.514e-02, 1.686e-02, -3.298e-02, -2.189e-01, -5.892e-02, 7.834e-02, -9.585e-02), r);\n\tr = MulAdd(s3_6, M4(-1.253e-01, -5.154e-02, -1.194e-01, -5.413e-03, 1.384e-01, 1.661e-02, -5.402e-02, -1.933e-01, -1.163e-01, -8.053e-02, 8.213e-02, 1.045e-01, -6.139e-02, 1.008e-02, 2.682e-02, 1.001e-01), r);\n\tr = MulAdd(s3_7, M4(4.268e-02, -3.266e-02, -1.395e-01, -6.734e-02, -5.044e-02, -6.236e-02, 7.355e-03, 4.860e-02, 8.122e-02, 3.594e-03, 3.387e-02, -1.894e-02, -2.146e-02, -6.920e-02, -9.184e-02, 6.043e-02), r);\n\tr = MulAdd(s3_8, M4(-4.537e-02, 5.305e-02, -3.223e-02, -1.099e-01, -1.532e-03, 1.298e-02, 1.705e-03, -8.713e-02, 5.724e-02, 4.936e-02, -7.022e-03, 1.310e-01, -1.455e-01, -1.002e-01, -8.992e-02, 8.949e-02), r);\n\tr = MulAdd(s4_0, M4(-3.697e-02, 4.361e-02, -2.610e-02, 1.920e-01, -3.173e-02, -2.363e-02, 4.914e-02, -7.926e-02, 5.642e-03, 2.515e-02, -1.312e-02, 8.478e-02, -4.425e-02, 2.898e-02, -4.333e-02, 6.784e-02), r);\n\tr = MulAdd(s4_1, M4(-8.282e-02, -2.400e-02, 1.423e-02, 1.713e-01, -6.289e-02, 6.815e-02, 4.288e-02, 2.298e-02, 6.929e-03, 1.687e-01, -1.356e-01, 2.107e-01, -2.664e-02, 7.643e-02, -4.448e-02, -1.391e-01), r);\n\tr = MulAdd(s4_2, M4(2.527e-02, 5.359e-02, 8.032e-02, 9.965e-02, -4.367e-02, 1.715e-01, -2.134e-02, 1.266e-02, 1.772e-02, 4.026e-02, -1.407e-02, 2.958e-02, -1.089e-01, 1.555e-02, -9.794e-02, 7.503e-02), r);\n\tr = MulAdd(s4_3, M4(9.838e-02, -9.237e-02, 3.059e-02, 7.839e-02, -1.064e-01, -8.478e-02, -1.488e-01, 3.929e-02, -5.543e-02, -1.410e-01, -1.136e-01, 4.460e-02, 1.230e-01, 9.507e-02, -1.495e-02, -3.650e-02), r);\n\tr = MulAdd(s4_4, M4(2.052e-01, 2.177e-01, 3.370e-03, -2.671e-01, 1.070e-01, 3.138e-02, -2.049e-02, 5.616e-03, 6.318e-02, 7.942e-02, 1.357e-01, 2.034e-01, 5.404e-02, 5.505e-04, -1.138e-01, 1.522e-02), r);\n\tr = MulAdd(s4_5, M4(3.260e-03, -1.496e-02, -1.751e-02, -4.540e-02, 8.747e-02, -1.052e-01, -4.517e-02, -4.559e-02, 7.249e-02, 2.862e-02, -9.665e-02, 2.203e-02, 1.041e-02, -2.682e-02, -5.846e-02, -5.967e-03), r);\n\tr = MulAdd(s4_6, M4(6.904e-02, -1.075e-02, -1.133e-02, 5.641e-03, -2.339e-02, 3.848e-02, 1.617e-02, 1.096e-01, -4.710e-02, 3.860e-02, -9.364e-02, 2.710e-01, -2.919e-02, 5.043e-02, 6.705e-02, 6.533e-02), r);\n\tr = MulAdd(s4_7, M4(-7.306e-02, -4.041e-02, 5.129e-02, -2.081e-01, -2.225e-02, -7.482e-02, -1.030e-01, 1.455e-01, -1.215e-03, 1.760e-02, -5.955e-02, 1.670e-01, -2.868e-02, 2.015e-02, -1.719e-02, -7.865e-03), r);\n\tr = MulAdd(s4_8, M4(3.469e-02, -1.440e-01, -2.074e-02, 4.942e-04, -6.512e-02, -1.207e-02, 3.899e-02, 4.409e-02, -4.425e-02, 1.354e-01, -5.201e-02, 5.339e-02, -1.733e-02, -1.068e-02, -4.068e-02, -8.847e-02), r);\n\tr = MulAdd(s5_0, M4(-1.367e-02, -4.043e-03, -1.633e-01, 5.634e-02, -5.067e-02, 1.046e-02, 7.233e-02, -1.344e-01, -1.035e-02, 2.570e-02, 3.489e-02, -7.652e-02, -4.584e-02, 6.309e-02, 1.590e-02, 6.861e-03), r);\n\tr = MulAdd(s5_1, M4(5.945e-02, -2.522e-03, 4.441e-02, -9.294e-02, 5.266e-02, 3.490e-02, 1.257e-01, -1.192e-01, 6.795e-02, -3.041e-02, 1.785e-03, -2.690e-02, 7.588e-03, -5.267e-02, -2.006e-01, 5.573e-02), r);\n\tr = MulAdd(s5_2, M4(-2.075e-02, 2.788e-02, -6.472e-02, -1.199e-03, -7.163e-02, -1.456e-02, 8.793e-02, -3.651e-02, -2.027e-02, -9.538e-02, 4.177e-02, 6.392e-02, 1.057e-01, 1.165e-01, 1.953e-01, -1.987e-02), r);\n\tr = MulAdd(s5_3, M4(7.941e-03, 2.435e-03, 1.518e-01, 2.483e-02, -8.035e-02, -3.836e-02, 1.098e-01, 1.050e-04, -2.651e-02, -8.799e-02, -9.291e-02, -1.290e-01, 2.334e-01, 1.460e-01, 1.496e-01, -1.747e-01), r);\n\tr = MulAdd(s5_4, M4(1.113e-01, -2.526e-03, 2.216e-02, -2.775e-02, 1.863e-01, 1.006e-01, 2.760e-01, -1.442e-02, -7.379e-02, -4.404e-02, 7.299e-02, 4.975e-02, -5.748e-02, 2.627e-01, 3.282e-02, -4.485e-03), r);\n\tr = MulAdd(s5_5, M4(-1.942e-01, -3.099e-02, -3.280e-02, 2.924e-02, -7.790e-02, 6.897e-02, 2.725e-02, -1.199e-01, -1.954e-02, 5.724e-03, -1.389e-02, 1.754e-02, 5.152e-02, 4.100e-03, 5.325e-02, -4.843e-02), r);\n\tr = MulAdd(s5_6, M4(4.486e-02, 3.828e-02, -2.625e-02, -1.493e-01, -3.824e-02, 2.764e-02, 1.300e-02, -4.650e-02, 3.270e-02, 4.272e-02, -2.518e-02, -4.634e-02, 1.756e-01, 2.771e-01, -1.520e-01, -8.914e-02), r);\n\tr = MulAdd(s5_7, M4(-2.086e-02, -6.906e-02, 3.829e-02, -5.269e-02, 1.029e-01, -7.007e-03, 2.265e-02, -7.822e-02, -6.078e-02, -6.558e-02, 1.199e-02, 3.040e-02, 1.628e-01, -1.604e-03, 7.271e-02, 7.569e-02), r);\n\tr = MulAdd(s5_8, M4(3.105e-02, -2.946e-02, -3.952e-02, 1.162e-01, -9.094e-02, 1.909e-02, 8.129e-02, -1.816e-02, -4.012e-02, -3.152e-02, -4.212e-02, 6.397e-03, -6.599e-02, -2.003e-02, 3.821e-02, -3.672e-02), r);\n\tr = MulAdd(s6_0, M4(4.164e-02, 2.871e-02, 3.507e-02, -2.261e-01, 4.606e-02, -5.383e-02, -3.568e-02, -4.125e-02, 1.077e-01, 4.435e-02, 1.753e-02, -4.489e-02, 5.527e-02, 4.169e-02, 6.259e-02, -1.311e-01), r);\n\tr = MulAdd(s6_1, M4(2.440e-02, 5.512e-02, 1.154e-02, 1.627e-01, 2.868e-02, -9.865e-02, 4.651e-02, -3.851e-02, -4.680e-02, -2.606e-02, 7.456e-02, 3.369e-02, -1.593e-02, 3.015e-02, 2.959e-02, -2.216e-02), r);\n\tr = MulAdd(s6_2, M4(2.586e-03, 1.205e-02, 3.081e-02, 1.315e-02, 2.864e-02, -2.026e-02, -2.931e-04, -6.621e-02, -6.064e-02, 3.550e-02, -1.861e-02, -5.051e-02, 2.220e-02, 2.607e-02, 7.668e-04, -5.065e-02), r);\n\tr = MulAdd(s6_3, M4(3.330e-03, 4.963e-02, -7.611e-03, -1.310e-01, -1.458e-01, 9.381e-02, 1.141e-02, -4.524e-03, 7.509e-02, -1.537e-01, -6.698e-02, -9.922e-02, 1.177e-02, 7.349e-02, 3.935e-02, -2.087e-01), r);\n\tr = MulAdd(s6_4, M4(-5.103e-03, 2.970e-01, -2.611e-02, -2.675e-03, -1.750e-01, -1.254e-01, 1.185e-01, -1.050e-01, -2.447e-02, -1.954e-02, -1.246e-01, 1.211e-01, -9.887e-02, -5.790e-02, 1.165e-01, -5.261e-02), r);\n\tr = MulAdd(s6_5, M4(-5.677e-02, 5.446e-02, -7.142e-02, -2.665e-01, -9.979e-02, -7.104e-02, 2.303e-02, 4.827e-02, 2.460e-02, -1.170e-01, -2.289e-02, -1.120e-01, -1.888e-02, 1.559e-04, 4.714e-02, -4.896e-03), r);\n\tr = MulAdd(s6_6, M4(1.157e-01, 1.833e-01, 5.169e-02, -1.331e-01, 6.034e-02, 9.362e-02, 1.058e-01, -1.742e-01, -1.202e-01, -8.411e-02, 7.993e-02, 6.521e-02, 6.710e-04, -1.153e-01, 2.861e-02, 4.359e-02), r);\n\tr = MulAdd(s6_7, M4(-1.565e-02, 1.589e-01, 1.325e-01, 1.399e-02, 7.785e-02, -3.601e-02, 5.482e-02, -1.596e-02, 9.978e-02, 1.804e-02, 1.243e-01, 2.677e-02, -1.812e-01, -1.244e-02, -4.210e-02, -1.077e-01), r);\n\tr = MulAdd(s6_8, M4(-2.383e-02, 9.994e-02, -1.086e-02, -1.963e-01, 9.990e-02, 6.315e-02, 1.856e-02, 5.164e-04, 2.123e-02, -6.209e-02, 3.422e-02, 1.179e-02, 7.026e-02, 9.449e-02, -2.705e-02, -1.677e-01), r);\n\tr = MulAdd(s7_0, M4(-2.026e-02, 1.936e-02, 9.827e-03, 9.698e-02, 1.444e-02, -9.873e-02, -5.168e-02, 3.925e-02, -2.737e-02, -1.437e-02, -7.603e-02, 1.765e-01, 1.151e-01, 1.229e-02, 5.526e-02, -7.669e-02), r);\n\tr = MulAdd(s7_1, M4(5.080e-02, -7.782e-03, 2.317e-02, 1.043e-01, 2.755e-02, -1.340e-01, 3.490e-02, 3.466e-02, 3.210e-02, 9.935e-02, 1.024e-03, 7.715e-02, -8.228e-02, -1.998e-03, 6.091e-02, 1.252e-01), r);\n\tr = MulAdd(s7_2, M4(-7.570e-02, -7.490e-02, -6.378e-02, 1.928e-01, 6.937e-03, -4.652e-03, -1.323e-02, -6.992e-02, -1.105e-01, -1.010e-01, -6.574e-02, 5.709e-02, 1.372e-01, -5.210e-02, -1.230e-02, -2.030e-01), r);\n\tr = MulAdd(s7_3, M4(-7.554e-02, 5.436e-03, 3.024e-02, 3.049e-02, -4.402e-02, 6.087e-02, 1.615e-01, -1.553e-01, -8.422e-02, -6.811e-02, -1.066e-01, 1.607e-02, 1.481e-01, 5.693e-02, -1.473e-01, -1.700e-01), r);\n\tr = MulAdd(s7_4, M4(-4.538e-02, -7.853e-02, -1.336e-01, -1.226e-02, 5.502e-02, 3.131e-01, 1.725e-01, 6.103e-03, 2.748e-02, 6.264e-02, 4.061e-03, 3.578e-01, -7.168e-02, -1.584e-01, 7.857e-02, 6.613e-02), r);\n\tr = MulAdd(s7_5, M4(-1.230e-01, -1.534e-01, -2.561e-03, -1.971e-02, 4.204e-02, -7.444e-03, 1.724e-03, -3.681e-02, 6.427e-02, -8.760e-03, 2.615e-02, -3.291e-02, 4.349e-02, -4.618e-02, 1.045e-04, -1.185e-01), r);\n\tr = MulAdd(s7_6, M4(-7.975e-03, 7.494e-02, 1.482e-01, 1.397e-01, -2.783e-02, -1.124e-01, 3.515e-02, -6.958e-02, -1.207e-01, 9.840e-02, 6.669e-02, 4.788e-02, -4.741e-03, -3.077e-02, 8.715e-02, 9.574e-02), r);\n\tr = MulAdd(s7_7, M4(1.235e-01, 1.762e-02, 8.508e-04, 5.826e-02, -2.263e-01, -1.343e-01, 1.080e-01, 3.797e-02, 4.121e-02, 4.401e-02, 6.985e-02, 4.008e-03, -2.648e-01, 1.059e-01, -2.543e-02, 2.075e-01), r);\n\tr = MulAdd(s7_8, M4(-2.713e-02, -7.462e-02, 6.808e-02, 5.364e-03, 7.419e-02, -6.790e-02, -8.942e-03, 2.821e-02, -1.603e-02, 8.469e-03, 2.062e-03, 8.538e-03, 7.823e-02, 4.336e-02, -7.648e-02, -1.649e-01), r);\n\treturn r;\n}\n\nvoid Pass13(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 14\n//!DESC conv13\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.946e-02, -2.094e-02, 4.776e-03, -2.408e-02 };\n\tr = MulAdd(s0_0, M4(-1.293e-01, -3.164e-02, -4.305e-02, -4.153e-02, 1.083e-02, 3.443e-02, 9.194e-03, 3.305e-03, 7.443e-02, -6.503e-02, -1.639e-02, 1.467e-02, 1.861e-01, -7.023e-03, -1.710e-02, 2.163e-03), r);\n\tr = MulAdd(s0_1, M4(-1.831e-01, -9.969e-02, -9.017e-02, 6.240e-02, 1.156e-01, 1.227e-01, -5.195e-02, -1.414e-01, 2.352e-03, -3.372e-02, -2.448e-02, -1.223e-01, 8.668e-02, 3.721e-02, 4.414e-02, -7.547e-02), r);\n\tr = MulAdd(s0_2, M4(-3.738e-02, 5.256e-03, -5.123e-02, -1.541e-03, 4.179e-02, -8.270e-02, -4.111e-02, -5.965e-02, 7.282e-02, 1.006e-04, -1.048e-02, 4.996e-03, -1.551e-02, 2.408e-02, 4.269e-03, -3.604e-02), r);\n\tr = MulAdd(s0_3, M4(1.295e-03, -4.506e-02, 5.793e-02, 4.585e-02, -7.363e-02, -1.660e-01, -5.246e-02, -1.778e-01, 1.307e-01, -5.384e-02, 2.766e-02, -2.498e-02, 1.321e-01, -1.912e-02, -2.638e-02, -6.578e-02), r);\n\tr = MulAdd(s0_4, M4(5.700e-02, -1.475e-02, 3.855e-02, -4.138e-02, 1.441e-02, 3.087e-01, -4.294e-03, 3.341e-02, -2.105e-02, -1.786e-01, 1.411e-01, 9.892e-02, 2.347e-01, 2.646e-03, 1.039e-01, -3.054e-02), r);\n\tr = MulAdd(s0_5, M4(3.613e-02, 3.202e-02, 6.025e-02, -2.920e-03, -2.235e-02, 2.182e-02, -2.037e-03, -5.479e-02, -7.034e-02, -2.745e-01, -1.952e-01, -1.087e-01, -2.984e-02, 1.009e-01, -4.008e-02, -8.082e-02), r);\n\tr = MulAdd(s0_6, M4(-4.063e-02, -2.746e-02, -1.033e-02, 1.731e-02, 2.938e-01, 3.660e-02, 4.929e-02, -3.881e-02, 5.079e-02, -3.675e-02, 1.402e-02, 7.380e-02, 3.691e-02, 1.402e-02, 5.604e-02, 3.162e-02), r);\n\tr = MulAdd(s0_7, M4(9.007e-02, 7.977e-03, 3.092e-02, 1.681e-02, 1.467e-01, 9.255e-02, 2.936e-02, -1.374e-01, 2.972e-01, 7.402e-03, -2.492e-02, -5.690e-02, -1.368e-01, 5.772e-02, 9.572e-02, 3.849e-02), r);\n\tr = MulAdd(s0_8, M4(4.821e-02, -9.248e-02, -2.006e-02, -5.064e-02, 7.278e-02, 2.933e-02, -3.106e-03, -5.832e-02, -4.986e-02, -1.631e-01, -1.189e-01, 6.368e-02, -5.563e-02, 1.126e-01, 1.435e-02, 2.510e-02), r);\n\tr = MulAdd(s1_0, M4(-5.301e-02, -1.038e-01, -4.458e-02, 2.034e-02, -3.081e-02, 2.101e-02, -5.794e-02, 8.038e-02, -4.012e-02, -3.779e-02, 1.219e-02, 5.236e-03, 1.165e-01, 1.454e-03, 3.993e-03, -2.968e-03), r);\n\tr = MulAdd(s1_1, M4(-7.366e-02, -1.320e-01, -7.431e-02, 6.910e-03, -9.079e-02, -1.094e-02, 5.943e-02, -1.248e-02, -7.584e-03, 3.828e-02, 1.393e-02, -7.314e-02, -3.506e-02, -8.241e-03, 7.150e-02, -3.944e-02), r);\n\tr = MulAdd(s1_2, M4(4.268e-02, 8.010e-02, -2.553e-01, -3.435e-03, -3.556e-02, -1.023e-01, -5.027e-02, 4.978e-03, 3.110e-02, 6.913e-02, -3.337e-03, 2.373e-03, 1.011e-01, -1.089e-03, 1.063e-02, -3.405e-02), r);\n\tr = MulAdd(s1_3, M4(-3.829e-02, -1.711e-02, 2.150e-02, 4.636e-02, -8.814e-02, -1.242e-01, 7.370e-03, -7.349e-02, 6.136e-02, 9.069e-03, 2.292e-02, -6.553e-03, -3.025e-02, 3.977e-02, -2.112e-02, -7.195e-02), r);\n\tr = MulAdd(s1_4, M4(-1.946e-01, -6.032e-02, 1.162e-02, -1.805e-01, -1.251e-02, 2.560e-01, 2.557e-02, -2.600e-02, -6.459e-02, -1.665e-01, 2.803e-02, 2.584e-01, -1.652e-01, -8.344e-02, -2.681e-02, 5.222e-02), r);\n\tr = MulAdd(s1_5, M4(5.220e-02, -9.697e-03, -5.502e-02, 3.250e-02, -5.076e-02, 1.502e-02, -2.256e-02, 2.525e-02, 1.060e-01, -3.222e-02, 1.589e-02, -8.002e-02, -9.389e-02, -5.412e-02, -6.140e-02, -1.801e-02), r);\n\tr = MulAdd(s1_6, M4(2.848e-02, 2.843e-03, 1.340e-02, -1.990e-02, 8.199e-02, 1.340e-02, -2.848e-02, 4.275e-04, -5.901e-03, 3.337e-02, -3.732e-03, 1.351e-02, 2.862e-02, -3.562e-02, 5.545e-02, 4.850e-02), r);\n\tr = MulAdd(s1_7, M4(6.224e-02, 5.282e-02, 8.999e-03, 7.328e-02, 1.065e-01, -1.930e-02, 6.903e-04, -4.263e-03, -9.940e-02, 3.987e-02, -6.854e-02, 1.161e-02, -2.139e-01, 5.007e-02, 1.676e-02, 5.381e-02), r);\n\tr = MulAdd(s1_8, M4(3.104e-02, -7.188e-02, -8.811e-02, -8.890e-02, -1.515e-02, 3.806e-02, 2.338e-02, 7.566e-02, 6.664e-02, -1.111e-01, -5.906e-02, 7.995e-02, 5.745e-02, 2.909e-02, 4.472e-02, 2.643e-02), r);\n\tr = MulAdd(s2_0, M4(1.828e-01, 7.161e-02, -5.382e-02, 8.720e-02, 2.770e-01, 3.190e-01, 1.109e-02, 1.240e-01, 8.591e-02, 3.506e-03, -1.773e-02, -1.598e-02, -3.199e-02, 7.221e-02, 2.003e-02, -2.213e-02), r);\n\tr = MulAdd(s2_1, M4(-1.358e-01, 1.293e-01, -7.900e-02, 3.686e-02, 4.384e-02, 1.363e-01, -4.337e-03, 8.852e-02, 9.720e-02, 7.495e-02, 4.065e-02, -2.138e-01, -8.145e-02, -1.186e-02, -1.101e-01, 1.461e-02), r);\n\tr = MulAdd(s2_2, M4(-1.170e-01, -1.441e-01, -1.500e-01, -4.904e-02, -1.960e-02, 3.165e-02, 8.069e-02, 4.081e-02, -1.704e-01, 2.608e-02, -1.044e-01, -6.156e-02, 1.214e-03, 8.534e-02, -3.623e-02, 2.545e-02), r);\n\tr = MulAdd(s2_3, M4(2.213e-01, -1.509e-01, -1.883e-01, 1.552e-01, 2.009e-01, 1.419e-01, 8.180e-02, 2.316e-03, -7.246e-02, 2.027e-01, 6.280e-02, -3.107e-02, -7.235e-02, -1.269e-03, -7.734e-02, 1.197e-01), r);\n\tr = MulAdd(s2_4, M4(7.125e-02, 1.309e-02, -9.378e-02, -2.830e-02, 8.757e-02, 2.510e-01, 3.676e-02, -7.276e-02, -1.265e-01, -1.840e-01, -2.401e-01, -2.073e-01, -1.402e-01, 2.373e-01, -1.422e-01, 4.767e-02), r);\n\tr = MulAdd(s2_5, M4(7.518e-03, 1.447e-01, 3.432e-03, 7.814e-03, 5.761e-02, 7.782e-02, 9.553e-02, 7.358e-02, -1.961e-01, 1.566e-01, 2.421e-02, -6.521e-02, -1.866e-01, 2.626e-02, -1.451e-01, 9.506e-02), r);\n\tr = MulAdd(s2_6, M4(-1.379e-02, -2.517e-02, -8.003e-02, -3.300e-02, 4.645e-02, 8.662e-02, -1.803e-04, 1.413e-02, 9.272e-02, 1.265e-01, 8.964e-02, 2.082e-02, -6.214e-02, -4.795e-02, -6.786e-02, -6.251e-02), r);\n\tr = MulAdd(s2_7, M4(2.703e-02, 4.670e-02, -9.434e-04, -1.845e-02, -3.249e-02, -4.444e-02, 3.395e-02, -4.206e-03, 1.843e-01, -6.523e-02, 2.182e-02, 6.783e-03, -6.421e-02, 8.621e-02, 1.154e-02, -6.480e-02), r);\n\tr = MulAdd(s2_8, M4(-1.291e-02, -4.946e-02, -5.154e-02, -1.505e-03, -1.007e-01, 7.686e-02, 1.823e-02, 4.207e-02, -4.411e-02, 6.437e-02, 2.013e-02, -1.028e-01, -5.362e-02, 1.166e-01, 4.791e-02, 1.842e-02), r);\n\tr = MulAdd(s3_0, M4(-1.644e-01, -9.269e-02, -3.241e-02, 4.436e-02, 4.739e-02, -1.260e-02, -1.015e-02, 4.152e-02, 3.481e-02, -6.795e-03, 6.743e-02, 3.118e-02, 1.704e-01, 2.709e-02, 7.192e-02, 1.166e-02), r);\n\tr = MulAdd(s3_1, M4(-1.415e-01, -1.133e-01, -6.851e-02, 9.254e-03, 9.259e-02, 5.742e-02, -1.557e-01, 1.312e-01, 8.420e-02, 5.161e-02, -3.297e-02, -3.678e-02, 3.088e-02, 1.418e-01, -3.458e-02, 7.107e-02), r);\n\tr = MulAdd(s3_2, M4(1.333e-02, -4.073e-02, -6.169e-02, -1.772e-02, -1.517e-02, 7.551e-02, -1.725e-02, -4.259e-02, 8.651e-03, -4.193e-02, -9.653e-03, 2.440e-02, 6.045e-02, 2.762e-03, 2.259e-02, -2.915e-02), r);\n\tr = MulAdd(s3_3, M4(2.404e-03, -8.257e-02, -2.909e-03, 4.371e-02, -1.488e-02, -1.551e-02, 1.178e-02, -2.847e-02, -7.495e-02, -1.241e-02, -4.033e-02, -5.520e-02, 7.617e-02, -7.622e-02, 9.625e-03, -4.128e-02), r);\n\tr = MulAdd(s3_4, M4(3.427e-03, 2.843e-01, -5.127e-02, -1.121e-01, -7.183e-02, -9.594e-02, -5.560e-02, -2.600e-01, -1.983e-02, -3.479e-02, -8.615e-02, -1.030e-01, 1.907e-02, 3.300e-02, -3.690e-02, -2.423e-02), r);\n\tr = MulAdd(s3_5, M4(7.713e-02, -2.037e-02, 6.728e-04, -1.092e-01, -1.090e-01, 7.324e-02, 1.815e-02, 1.934e-01, 5.432e-04, 8.149e-03, 3.377e-02, 1.305e-02, -1.524e-02, -6.798e-02, 6.293e-02, 3.912e-03), r);\n\tr = MulAdd(s3_6, M4(3.055e-02, -1.343e-02, -3.071e-02, -1.147e-02, 1.201e-01, -2.132e-02, 3.523e-02, -1.675e-01, -1.808e-02, 9.744e-02, 4.147e-02, -4.336e-02, 5.417e-02, -3.875e-02, -1.704e-02, -1.180e-01), r);\n\tr = MulAdd(s3_7, M4(-4.933e-02, 1.147e-01, 2.018e-02, 6.987e-02, 1.260e-01, -1.100e-01, -1.945e-02, -1.754e-02, 3.246e-02, 6.750e-02, -3.140e-02, -2.553e-02, 1.028e-01, 5.734e-03, 7.628e-02, 8.382e-02), r);\n\tr = MulAdd(s3_8, M4(-1.928e-02, 1.842e-02, 8.692e-02, 5.390e-02, 4.568e-02, -4.408e-02, 4.308e-02, -1.523e-01, -2.739e-02, -1.093e-02, 4.826e-02, -4.495e-02, 9.926e-02, 5.030e-02, 5.833e-02, -2.268e-02), r);\n\tr = MulAdd(s4_0, M4(6.914e-02, 6.811e-02, 3.761e-02, -5.384e-02, -3.618e-03, 1.077e-02, 1.239e-02, 7.690e-02, -6.556e-02, 7.989e-02, -7.325e-03, -6.799e-02, 2.380e-02, 6.660e-02, 5.495e-02, -4.745e-02), r);\n\tr = MulAdd(s4_1, M4(4.836e-03, 2.223e-01, 6.137e-02, 1.015e-01, 1.798e-02, -5.505e-03, -8.869e-03, -7.210e-02, -1.624e-01, -6.293e-02, -2.680e-02, 9.346e-02, 1.380e-01, -8.661e-02, 4.515e-02, 4.240e-02), r);\n\tr = MulAdd(s4_2, M4(-6.804e-02, 1.127e-02, -2.572e-02, 3.496e-02, -8.525e-03, -6.274e-02, -3.604e-02, -4.725e-02, -5.312e-02, -8.806e-02, -3.529e-02, -3.447e-02, 4.698e-02, -4.421e-04, 3.393e-02, -8.021e-03), r);\n\tr = MulAdd(s4_3, M4(-6.061e-02, 4.285e-02, -1.218e-01, 6.028e-02, 1.878e-02, -8.686e-03, -2.590e-02, 3.975e-02, 7.884e-02, 4.833e-02, -3.334e-02, 2.402e-02, 7.826e-02, 5.420e-02, -5.012e-02, 4.519e-02), r);\n\tr = MulAdd(s4_4, M4(-1.290e-01, 8.998e-03, -1.931e-01, 1.198e-01, -3.256e-02, 1.311e-01, -1.032e-01, 1.870e-02, -3.907e-02, -1.459e-01, -4.729e-02, 1.109e-01, -3.523e-02, -1.051e-01, -2.727e-01, -1.157e-02), r);\n\tr = MulAdd(s4_5, M4(-7.794e-02, 4.458e-02, 6.071e-02, 9.567e-02, 4.364e-03, -1.410e-01, -1.162e-01, 5.534e-03, 4.978e-02, 1.119e-02, 4.228e-02, 1.397e-01, -3.146e-02, 3.212e-03, -7.790e-02, 4.042e-02), r);\n\tr = MulAdd(s4_6, M4(2.847e-02, 1.136e-01, -1.699e-02, 2.081e-02, 1.397e-01, -9.842e-02, -8.220e-03, -3.794e-02, 5.221e-03, -3.120e-02, -4.743e-02, -2.860e-02, -8.238e-02, 2.748e-02, 2.975e-02, 4.382e-02), r);\n\tr = MulAdd(s4_7, M4(-5.192e-02, -3.529e-02, -6.300e-03, -3.442e-02, 4.006e-03, 2.780e-02, 3.457e-02, -8.588e-02, -3.943e-02, 1.708e-02, -7.220e-02, -4.744e-02, -1.007e-01, -5.533e-02, 9.120e-02, 1.251e-01), r);\n\tr = MulAdd(s4_8, M4(-8.423e-02, 1.019e-02, 1.364e-02, 6.687e-02, -1.504e-03, 3.593e-02, 4.618e-02, 5.315e-03, -8.243e-04, 7.704e-02, -1.088e-02, -6.900e-02, 3.929e-02, 3.804e-03, -6.372e-02, 7.549e-02), r);\n\tr = MulAdd(s5_0, M4(6.951e-02, 1.242e-01, 1.260e-02, -6.354e-02, -1.712e-01, -1.040e-01, 6.037e-02, -3.848e-02, 1.165e-01, 4.112e-02, -4.670e-02, -1.185e-01, -2.004e-02, 3.090e-03, 2.409e-02, -1.401e-01), r);\n\tr = MulAdd(s5_1, M4(9.496e-02, -2.072e-02, -1.813e-02, -2.687e-02, -6.891e-02, 3.486e-02, -6.161e-02, 1.796e-01, 1.867e-02, -4.973e-02, -4.871e-02, -4.193e-03, 5.222e-02, 6.034e-02, 6.994e-02, -1.049e-01), r);\n\tr = MulAdd(s5_2, M4(1.804e-02, 9.443e-03, 7.466e-03, 5.868e-03, -2.372e-02, -4.161e-02, -2.034e-01, -7.148e-02, 1.966e-02, -9.410e-02, -4.377e-02, 1.338e-02, -3.065e-02, 2.147e-02, -8.088e-02, 3.253e-02), r);\n\tr = MulAdd(s5_3, M4(-2.028e-01, -1.635e-02, 9.419e-03, 1.403e-01, 2.690e-02, 6.186e-03, -2.235e-04, 1.512e-01, 5.191e-03, 7.650e-02, -1.496e-02, 2.694e-02, -1.087e-01, 3.270e-02, -4.237e-02, -1.219e-01), r);\n\tr = MulAdd(s5_4, M4(-1.851e-01, -1.129e-01, 1.542e-01, 3.088e-01, -1.642e-02, 8.798e-02, -2.252e-01, -5.032e-03, 3.164e-02, -3.783e-02, -1.338e-01, 1.552e-01, 3.572e-02, 1.806e-01, -8.001e-02, -3.658e-01), r);\n\tr = MulAdd(s5_5, M4(-5.363e-02, 2.284e-03, 5.092e-03, 6.959e-02, 1.681e-01, -1.139e-01, -7.353e-02, 3.406e-02, 5.790e-02, -1.616e-01, -7.873e-03, 1.148e-01, -1.011e-01, 4.432e-02, -1.495e-02, 2.734e-02), r);\n\tr = MulAdd(s5_6, M4(1.455e-03, -2.003e-02, -4.008e-02, -4.248e-02, -9.500e-04, 2.532e-02, 2.507e-02, -4.032e-02, -1.464e-02, -5.039e-02, -9.448e-02, -7.201e-02, -2.984e-02, -7.626e-02, -3.012e-02, 8.289e-02), r);\n\tr = MulAdd(s5_7, M4(-4.532e-02, 5.196e-03, 9.819e-02, -4.660e-02, -1.468e-01, 2.021e-01, -1.945e-02, -5.247e-02, 2.540e-02, -6.217e-03, 1.489e-02, -7.293e-02, 5.411e-04, 2.687e-03, 4.745e-02, 1.391e-01), r);\n\tr = MulAdd(s5_8, M4(-4.290e-02, 8.605e-02, 1.447e-02, 1.077e-01, 1.379e-02, 2.592e-02, -3.428e-02, -4.561e-02, 6.433e-03, -3.262e-02, 2.071e-02, -2.374e-02, -1.034e-02, -8.245e-02, -9.518e-02, -8.323e-02), r);\n\tr = MulAdd(s6_0, M4(8.349e-02, -9.421e-02, 5.134e-02, -1.707e-02, -8.791e-03, -5.482e-03, 3.633e-02, -4.853e-02, -1.052e-01, -3.966e-02, 1.599e-02, 2.633e-03, -4.443e-01, 1.229e-01, -1.745e-02, -1.713e-01), r);\n\tr = MulAdd(s6_1, M4(-6.439e-03, -6.925e-02, -9.048e-02, -1.107e-01, 1.839e-02, -1.161e-01, 1.470e-02, 4.258e-02, 4.419e-02, 7.738e-02, -2.092e-02, 2.483e-02, -3.099e-01, -2.297e-01, -1.084e-02, 8.280e-02), r);\n\tr = MulAdd(s6_2, M4(9.559e-03, -4.827e-02, -9.305e-02, -6.416e-02, -4.962e-02, -3.425e-02, 2.045e-02, 4.995e-02, -5.017e-02, 8.078e-02, 6.253e-03, -7.790e-02, -1.252e-03, -4.170e-02, -5.411e-02, 6.629e-02), r);\n\tr = MulAdd(s6_3, M4(7.144e-02, 6.963e-02, -2.132e-02, 3.176e-02, -1.230e-01, 5.421e-02, 1.039e-02, 1.929e-02, -8.516e-02, 7.294e-02, -6.347e-02, 8.635e-03, -4.146e-01, -1.885e-02, 5.569e-03, 4.442e-01), r);\n\tr = MulAdd(s6_4, M4(-9.567e-02, -1.112e-01, 1.220e-02, 2.581e-02, 8.993e-02, -1.958e-01, 6.408e-02, -2.905e-02, 2.708e-01, 8.480e-02, -7.526e-02, -1.466e-01, -2.280e-01, -6.046e-01, -1.809e-01, 2.190e-01), r);\n\tr = MulAdd(s6_5, M4(-5.326e-02, 3.185e-02, -2.826e-02, 9.173e-02, -2.587e-02, -1.031e-01, -5.476e-04, -2.940e-02, -2.556e-02, -5.077e-02, 1.519e-01, 8.880e-03, -2.770e-01, 5.091e-01, 4.729e-02, 4.104e-01), r);\n\tr = MulAdd(s6_6, M4(1.048e-01, 2.843e-02, 4.574e-03, -7.368e-02, 4.516e-02, 5.945e-02, 8.593e-03, -1.984e-02, -1.941e-01, 2.632e-03, -4.851e-02, -1.535e-02, -2.538e-01, 3.488e-01, 1.115e-01, 2.634e-01), r);\n\tr = MulAdd(s6_7, M4(1.284e-02, 5.093e-02, -3.114e-02, -1.141e-02, 5.259e-02, 1.410e-01, 7.318e-02, -6.865e-03, 1.326e-02, -6.977e-02, 3.681e-02, -2.936e-02, -4.111e-01, -3.874e-02, -1.568e-01, 1.240e-01), r);\n\tr = MulAdd(s6_8, M4(5.288e-03, -8.600e-02, 2.698e-02, -1.037e-01, 2.803e-02, 3.289e-02, 8.457e-02, -3.984e-02, -2.265e-02, -4.761e-02, -7.385e-03, -1.757e-02, -1.316e-01, 3.142e-01, -1.175e-01, 1.735e-01), r);\n\tr = MulAdd(s7_0, M4(7.491e-02, -1.450e-01, 8.576e-02, 5.617e-02, -3.344e-02, 2.116e-02, -1.389e-03, -3.231e-02, -1.292e-02, 2.020e-02, -3.643e-02, -1.820e-02, -3.722e-02, -1.588e-02, -2.642e-02, 1.483e-02), r);\n\tr = MulAdd(s7_1, M4(-3.321e-03, -1.353e-01, -1.682e-01, -5.332e-02, 1.267e-02, -9.879e-02, -7.646e-02, 1.006e-01, -5.750e-02, 7.676e-02, 2.614e-03, 3.882e-04, -1.424e-02, -3.769e-02, 2.924e-02, 2.567e-02), r);\n\tr = MulAdd(s7_2, M4(-1.003e-01, -1.138e-01, 3.058e-02, -3.240e-02, -1.618e-02, -6.702e-04, 1.148e-01, 8.773e-02, -9.451e-02, -1.554e-02, -7.062e-02, 5.267e-03, 8.207e-03, 3.608e-03, 2.141e-02, -3.004e-03), r);\n\tr = MulAdd(s7_3, M4(5.165e-02, -1.245e-01, -9.583e-02, -5.102e-02, 1.679e-04, 7.018e-02, -3.064e-02, 4.600e-02, 5.836e-02, -2.394e-03, -2.430e-02, -1.958e-02, -2.138e-02, 2.727e-02, 2.183e-02, 8.838e-02), r);\n\tr = MulAdd(s7_4, M4(-7.226e-02, 2.005e-03, 1.071e-01, 6.017e-02, -6.424e-02, -1.035e-01, 2.689e-02, 2.654e-02, 3.096e-01, -1.818e-02, -9.951e-02, -2.597e-02, -1.332e-03, -8.858e-02, 3.340e-03, -1.278e-02), r);\n\tr = MulAdd(s7_5, M4(-2.447e-02, -8.722e-02, -2.832e-02, 5.315e-02, 1.127e-01, -5.947e-02, 1.750e-01, 9.817e-02, -7.845e-02, -1.398e-01, -7.258e-02, 1.423e-02, 2.023e-02, -6.150e-03, -3.309e-02, 1.687e-02), r);\n\tr = MulAdd(s7_6, M4(4.939e-02, -4.202e-02, 6.098e-03, -9.119e-02, -5.623e-02, 1.111e-01, 3.059e-02, -1.916e-01, -8.250e-02, -2.965e-02, -3.353e-02, 3.289e-02, 2.014e-02, 8.089e-03, 3.355e-02, 1.456e-02), r);\n\tr = MulAdd(s7_7, M4(8.793e-02, 4.620e-02, 1.772e-02, -3.698e-02, -1.754e-01, 2.195e-02, -5.225e-02, -8.223e-02, 5.500e-02, -3.353e-02, 6.219e-02, 7.981e-02, 5.135e-03, 2.492e-02, 9.620e-03, 7.272e-03), r);\n\tr = MulAdd(s7_8, M4(4.143e-02, -1.326e-01, -2.472e-02, -2.514e-02, -4.798e-02, 5.893e-02, 2.183e-02, 1.762e-02, -1.149e-01, -1.014e-01, -1.063e-01, -8.116e-02, -1.596e-02, -1.941e-02, 3.506e-03, -1.465e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.163e-02, 1.111e-02, -2.674e-02, 2.569e-02 };\n\tr = MulAdd(s0_0, M4(-3.395e-02, -9.589e-02, -4.729e-02, 2.096e-02, -1.275e-02, -3.719e-02, -2.352e-02, -4.158e-02, -3.476e-02, -5.034e-02, -2.781e-03, -3.350e-02, 5.401e-02, -1.746e-02, 7.324e-02, -1.488e-01), r);\n\tr = MulAdd(s0_1, M4(-5.659e-02, -3.776e-02, 5.233e-02, 1.225e-02, 1.488e-02, -9.189e-03, -6.037e-02, -1.054e-01, 2.389e-02, 8.954e-03, 3.286e-02, -2.802e-02, 2.526e-03, -5.204e-02, -9.638e-02, -7.811e-02), r);\n\tr = MulAdd(s0_2, M4(4.380e-02, 2.243e-02, -6.518e-02, 1.486e-02, 1.977e-02, 1.358e-02, -7.893e-03, 2.714e-02, 1.557e-01, 1.050e-02, -2.645e-02, 5.235e-04, 6.345e-02, -5.627e-02, -6.260e-02, 6.337e-03), r);\n\tr = MulAdd(s0_3, M4(2.202e-02, 8.299e-02, -7.433e-03, -1.090e-02, 1.698e-01, -1.941e-01, -2.176e-02, 1.132e-01, -5.596e-02, -2.321e-02, -4.190e-03, 3.170e-02, 1.381e-02, 3.042e-02, 7.087e-03, -1.939e-01), r);\n\tr = MulAdd(s0_4, M4(6.661e-02, -1.181e-01, -6.948e-02, -9.609e-02, 8.766e-02, -9.867e-02, 2.585e-02, 2.689e-02, -1.971e-01, -5.699e-03, 2.427e-01, -2.323e-01, -1.815e-01, -2.223e-01, -2.233e-01, 9.791e-06), r);\n\tr = MulAdd(s0_5, M4(1.100e-02, 6.502e-02, -8.512e-02, 2.930e-03, -4.183e-02, 2.569e-02, 1.240e-01, -2.598e-03, 6.811e-02, 2.417e-02, -7.222e-02, -1.529e-02, -1.149e-01, 1.964e-02, 1.848e-02, -8.152e-03), r);\n\tr = MulAdd(s0_6, M4(-2.243e-02, -1.350e-01, -3.474e-02, -1.115e-01, 6.877e-02, -1.045e-01, 7.582e-03, 3.097e-02, -4.251e-02, -2.396e-02, 7.987e-02, 4.079e-02, 7.451e-03, 1.029e-02, -4.421e-02, -1.016e-01), r);\n\tr = MulAdd(s0_7, M4(-6.681e-02, -1.440e-01, 1.375e-02, -6.566e-02, -5.482e-03, -2.256e-01, -4.365e-02, -6.433e-02, -5.602e-02, 1.195e-01, 1.284e-01, -6.954e-02, -4.635e-02, 1.018e-01, 4.243e-02, 7.804e-02), r);\n\tr = MulAdd(s0_8, M4(-2.005e-02, -9.452e-02, 1.240e-02, -2.132e-02, -4.244e-02, -5.110e-02, -2.936e-02, 1.298e-02, 1.999e-01, 9.645e-02, 1.696e-01, 7.761e-02, -6.641e-02, -7.953e-02, -5.310e-02, 2.967e-02), r);\n\tr = MulAdd(s1_0, M4(-1.961e-02, -3.548e-02, -6.879e-03, 4.221e-02, 4.586e-02, 7.381e-02, 2.304e-02, -5.193e-02, 3.275e-02, -3.699e-02, -5.471e-03, -5.813e-02, 1.009e-01, -3.249e-02, 4.309e-02, -2.740e-02), r);\n\tr = MulAdd(s1_1, M4(-3.215e-02, -1.087e-02, -3.967e-02, 7.976e-02, -1.784e-02, -1.108e-03, -2.064e-02, 1.705e-02, 1.204e-02, -4.359e-03, -3.299e-02, -3.450e-02, -9.809e-02, 4.950e-02, -8.091e-02, -8.869e-02), r);\n\tr = MulAdd(s1_2, M4(5.335e-02, 8.173e-02, 7.282e-02, -8.374e-02, 7.212e-02, 4.329e-03, 4.667e-02, 2.098e-03, 2.786e-02, 3.365e-02, -1.238e-02, -4.857e-02, 4.691e-02, 8.225e-03, -8.823e-03, 5.750e-02), r);\n\tr = MulAdd(s1_3, M4(5.744e-02, 4.194e-02, -3.313e-02, 6.049e-03, 1.886e-01, -1.162e-01, -6.582e-02, 1.155e-01, -4.434e-02, 1.850e-02, -6.507e-02, 2.807e-03, 2.068e-02, 7.649e-02, 1.290e-02, -1.866e-01), r);\n\tr = MulAdd(s1_4, M4(-9.720e-02, 6.204e-02, -1.551e-01, 7.558e-03, 1.356e-01, -8.411e-02, 5.918e-02, 4.090e-02, -1.603e-01, 4.126e-02, 3.591e-01, -2.834e-01, -9.463e-02, -1.566e-01, -2.453e-01, 6.982e-02), r);\n\tr = MulAdd(s1_5, M4(1.202e-01, 3.790e-02, -1.541e-01, 3.033e-02, 2.230e-02, -6.520e-02, 7.259e-02, 1.530e-02, -1.810e-01, -3.178e-02, -5.645e-02, -9.320e-02, -4.207e-02, 8.256e-02, -4.344e-03, 3.775e-02), r);\n\tr = MulAdd(s1_6, M4(-1.816e-02, -1.946e-01, -7.062e-02, -2.821e-02, 3.543e-02, 9.863e-03, -3.540e-02, -3.527e-02, 2.861e-02, 2.633e-03, 2.951e-02, 2.566e-02, -2.643e-02, 8.349e-02, -2.609e-02, 5.036e-05), r);\n\tr = MulAdd(s1_7, M4(-6.358e-02, 9.779e-02, -1.806e-02, -3.364e-03, -3.616e-02, -1.403e-01, -5.088e-02, -5.711e-02, 1.034e-01, 2.291e-01, -2.781e-02, -1.797e-01, -3.687e-02, 1.431e-01, -9.658e-04, 9.394e-02), r);\n\tr = MulAdd(s1_8, M4(-2.238e-02, -1.364e-01, 7.675e-02, -1.033e-01, -1.334e-02, 5.042e-03, 2.727e-02, -2.448e-02, 4.085e-03, 9.684e-02, 4.109e-02, 3.931e-02, -6.314e-04, -3.643e-02, -5.133e-02, 5.306e-02), r);\n\tr = MulAdd(s2_0, M4(1.440e-01, 1.221e-02, -3.043e-02, -3.155e-02, 7.192e-03, 1.139e-01, -7.501e-02, 1.577e-02, -5.249e-02, 1.461e-02, -1.227e-01, -4.077e-02, -9.838e-02, -1.887e-03, 1.208e-02, 3.039e-02), r);\n\tr = MulAdd(s2_1, M4(-3.265e-01, 7.092e-02, -7.443e-02, -2.228e-01, 6.019e-04, -4.634e-03, 3.208e-02, -8.908e-02, -5.714e-02, 6.949e-02, -9.750e-02, 9.873e-02, -1.033e-01, -7.925e-02, 2.384e-02, -8.670e-03), r);\n\tr = MulAdd(s2_2, M4(1.060e-01, -5.553e-03, 8.267e-02, 7.304e-02, -1.123e-01, 1.227e-02, -2.054e-02, -6.947e-02, 9.932e-04, 9.875e-04, 2.093e-02, 8.527e-02, 1.137e-02, -4.719e-02, -3.301e-02, -7.840e-02), r);\n\tr = MulAdd(s2_3, M4(-1.497e-01, -1.588e-01, -2.209e-02, -1.475e-01, 1.243e-01, -9.028e-02, -3.921e-02, 1.594e-03, 6.488e-03, 8.669e-02, -7.208e-02, 2.819e-01, -6.688e-02, 3.715e-02, 3.647e-02, 9.818e-03), r);\n\tr = MulAdd(s2_4, M4(2.873e-01, -1.763e-02, 6.469e-02, 2.568e-01, -1.292e-01, 5.614e-02, -6.700e-02, -3.543e-01, -2.074e-01, 7.342e-02, -1.800e-01, -2.728e-02, -3.366e-02, -7.661e-02, -1.497e-01, 5.849e-02), r);\n\tr = MulAdd(s2_5, M4(8.426e-02, -7.830e-02, -5.613e-02, -2.017e-02, -4.353e-02, -1.004e-02, -1.765e-02, 4.949e-02, 1.320e-02, -4.037e-02, 2.652e-02, -9.777e-02, 2.225e-02, -7.359e-02, 7.803e-03, -3.173e-02), r);\n\tr = MulAdd(s2_6, M4(-3.595e-04, 2.186e-01, 4.415e-02, 9.376e-03, 1.158e-02, -2.255e-02, 4.156e-02, -4.312e-02, -1.507e-01, -7.404e-02, -1.392e-02, -5.161e-02, -4.031e-02, -5.684e-02, -7.447e-03, -3.963e-02), r);\n\tr = MulAdd(s2_7, M4(1.258e-02, 8.734e-03, -4.634e-02, 1.838e-02, -4.625e-02, -2.428e-02, 8.228e-02, -3.899e-02, 1.047e-02, 6.135e-02, 1.386e-01, 5.174e-02, -7.872e-02, -6.136e-02, 6.400e-02, 5.132e-02), r);\n\tr = MulAdd(s2_8, M4(1.466e-02, -2.522e-03, -4.948e-02, 8.298e-02, 6.032e-02, 2.008e-02, -1.315e-02, -9.797e-02, -2.315e-03, -6.006e-02, -6.912e-03, -7.048e-02, 3.588e-02, 1.049e-03, 5.280e-02, -8.946e-02), r);\n\tr = MulAdd(s3_0, M4(5.880e-03, 2.187e-02, 9.695e-02, 1.129e-02, -2.751e-02, 7.634e-02, 3.715e-02, 1.509e-01, -3.497e-02, 6.772e-02, 1.171e-02, 5.376e-02, 2.103e-02, 3.223e-03, 9.906e-02, 1.251e-03), r);\n\tr = MulAdd(s3_1, M4(1.289e-01, -8.753e-02, -1.653e-02, 1.067e-02, -4.931e-02, 1.911e-02, -4.758e-02, 8.006e-02, 1.592e-02, 1.208e-01, -1.515e-02, 2.233e-02, 5.549e-02, 7.252e-02, 2.836e-02, -1.307e-01), r);\n\tr = MulAdd(s3_2, M4(3.939e-02, 4.301e-02, 3.538e-02, -1.421e-03, -1.255e-01, -9.881e-03, -1.600e-02, 1.885e-03, -1.582e-02, -1.391e-02, 1.638e-02, 2.772e-02, -3.851e-03, -4.136e-02, -8.607e-02, -4.196e-02), r);\n\tr = MulAdd(s3_3, M4(-5.763e-03, -6.492e-02, -1.938e-02, -5.154e-02, 3.994e-02, -2.938e-02, -3.035e-02, 1.098e-02, 4.031e-02, -7.904e-02, 7.387e-04, -5.600e-02, 2.163e-01, 7.884e-02, 4.752e-02, -1.372e-01), r);\n\tr = MulAdd(s3_4, M4(-4.021e-02, -1.533e-01, -1.095e-01, -1.224e-02, 5.862e-02, 2.303e-01, -8.903e-03, -5.954e-03, -2.905e-03, -2.389e-02, -1.345e-01, -1.546e-01, -8.585e-02, 5.629e-02, -1.464e-01, 9.047e-02), r);\n\tr = MulAdd(s3_5, M4(-1.371e-01, 3.602e-02, -4.653e-02, 3.862e-03, 9.918e-02, 6.156e-03, -9.347e-02, -5.303e-02, 2.418e-02, -2.661e-02, -5.576e-02, -5.462e-02, -3.618e-02, -4.450e-02, -2.666e-02, -3.199e-02), r);\n\tr = MulAdd(s3_6, M4(7.845e-02, 2.929e-02, -3.866e-02, -1.019e-01, 5.534e-02, -1.504e-02, -1.424e-03, 3.384e-02, 1.208e-02, -4.149e-02, 2.009e-02, -3.681e-02, 5.807e-02, 3.756e-03, 3.506e-03, -1.057e-01), r);\n\tr = MulAdd(s3_7, M4(1.580e-03, -9.761e-02, -1.217e-02, -5.899e-02, -1.577e-02, -4.953e-02, 4.743e-02, 1.048e-01, -5.623e-02, 4.937e-02, 5.772e-02, -1.982e-03, 1.069e-01, 3.703e-02, 3.209e-02, 1.242e-01), r);\n\tr = MulAdd(s3_8, M4(-7.262e-02, -7.243e-02, -5.480e-02, 2.458e-02, -4.308e-02, -7.542e-04, 4.099e-03, 1.009e-02, -4.056e-02, -3.928e-02, 1.769e-02, 6.411e-03, -4.956e-03, -8.744e-03, 2.739e-02, -7.552e-02), r);\n\tr = MulAdd(s4_0, M4(6.766e-02, 1.101e-01, 5.535e-02, -5.821e-02, -4.446e-02, 3.118e-02, -1.659e-02, -3.922e-02, 4.098e-02, 8.866e-02, -5.734e-02, 5.606e-02, -3.286e-02, -2.125e-02, -3.408e-02, 8.307e-04), r);\n\tr = MulAdd(s4_1, M4(3.255e-02, -5.237e-02, 2.893e-02, -3.657e-02, 1.381e-02, -1.508e-02, 6.604e-03, -8.554e-02, -5.511e-02, -1.482e-02, 7.612e-03, 1.046e-01, 1.003e-01, 1.696e-03, 6.910e-02, -9.445e-03), r);\n\tr = MulAdd(s4_2, M4(-3.187e-02, -3.224e-02, 1.335e-01, 7.862e-03, -1.605e-02, -8.148e-02, 1.674e-02, 5.493e-02, 7.531e-02, -6.184e-03, -7.809e-02, -2.515e-02, -8.351e-02, -3.192e-02, -3.464e-02, -4.521e-02), r);\n\tr = MulAdd(s4_3, M4(2.831e-01, -1.631e-01, 1.548e-01, -1.239e-01, -5.712e-02, -7.808e-02, 2.809e-02, -6.122e-03, -3.826e-02, 3.327e-02, 2.472e-02, -1.333e-01, -5.070e-02, 1.184e-01, 4.815e-02, -1.672e-01), r);\n\tr = MulAdd(s4_4, M4(3.058e-01, -4.137e-03, 2.509e-01, -4.459e-02, -5.592e-02, 1.314e-01, -3.724e-02, -1.911e-01, 3.084e-02, 2.114e-02, 6.667e-02, -3.520e-02, 1.591e-01, -3.472e-03, -7.565e-02, -2.143e-03), r);\n\tr = MulAdd(s4_5, M4(7.745e-02, -6.270e-02, 2.258e-02, 3.454e-02, 9.153e-03, 3.901e-02, 1.860e-02, 1.441e-02, 1.151e-01, -7.555e-02, -6.658e-02, 2.956e-02, 1.446e-01, 7.539e-02, 5.197e-02, 4.735e-03), r);\n\tr = MulAdd(s4_6, M4(1.182e-01, 1.898e-02, 2.580e-02, -9.786e-02, -3.308e-03, -1.419e-02, 2.067e-02, -3.452e-02, 9.884e-02, 2.306e-02, -3.982e-02, 9.304e-02, -2.952e-02, 5.388e-02, -2.612e-02, -1.135e-01), r);\n\tr = MulAdd(s4_7, M4(6.055e-02, 8.741e-02, 7.538e-02, -7.519e-02, 6.237e-02, -1.765e-01, -7.180e-02, 7.595e-02, -3.554e-02, 1.320e-01, 6.164e-02, 1.003e-01, 4.490e-02, 9.272e-02, 1.068e-01, 1.002e-01), r);\n\tr = MulAdd(s4_8, M4(4.963e-02, -2.594e-02, 2.272e-02, 5.546e-02, -3.866e-02, -1.926e-02, 2.816e-03, 6.527e-02, 4.404e-02, 1.315e-02, -2.071e-02, -7.344e-02, -2.113e-02, 3.652e-02, -1.171e-02, 2.945e-03), r);\n\tr = MulAdd(s5_0, M4(6.229e-02, -3.058e-02, -1.340e-02, 1.391e-02, -1.281e-03, 1.176e-01, 1.312e-01, 6.465e-02, 1.029e-01, 4.557e-03, -5.970e-02, 1.116e-02, -4.103e-02, -1.465e-02, -7.680e-02, -6.180e-02), r);\n\tr = MulAdd(s5_1, M4(5.943e-02, -1.416e-01, 3.715e-04, -1.057e-01, -2.718e-02, 8.088e-02, -3.600e-02, 1.384e-01, -9.003e-02, -5.988e-02, 7.010e-02, 7.876e-03, 4.775e-02, 3.654e-02, -2.713e-02, 2.708e-02), r);\n\tr = MulAdd(s5_2, M4(-3.837e-02, -1.565e-02, 2.219e-02, -6.472e-02, 3.717e-02, 1.940e-02, 1.092e-01, -3.138e-02, 1.501e-02, 1.286e-02, -1.041e-01, 2.203e-02, 3.194e-02, 9.982e-02, -1.251e-02, 1.355e-02), r);\n\tr = MulAdd(s5_3, M4(5.853e-02, 1.831e-01, 2.112e-02, -1.985e-03, -1.118e-01, -1.320e-02, 4.744e-02, -1.625e-01, 4.859e-02, 1.197e-01, 2.712e-02, -5.726e-02, 1.294e-01, -1.522e-01, 1.166e-01, -8.268e-02), r);\n\tr = MulAdd(s5_4, M4(4.261e-02, 2.541e-03, 1.922e-01, -5.571e-02, 4.345e-02, 1.164e-01, -1.463e-01, -5.412e-02, -1.351e-02, 6.018e-02, 1.114e-01, -9.633e-02, -6.375e-02, -2.481e-01, -7.674e-02, 1.197e-02), r);\n\tr = MulAdd(s5_5, M4(-2.830e-03, 8.239e-02, 5.292e-02, 3.019e-02, 3.622e-02, 5.292e-02, 7.374e-02, 1.421e-01, 1.218e-01, 5.201e-02, -2.951e-02, 2.387e-02, -7.925e-02, 8.075e-02, -1.673e-02, -2.172e-02), r);\n\tr = MulAdd(s5_6, M4(3.188e-02, 6.711e-02, -8.440e-03, 3.255e-02, 3.366e-02, -3.691e-02, -2.101e-02, 1.522e-02, 6.729e-02, 8.272e-02, 2.308e-02, -4.969e-03, 3.456e-02, -1.226e-01, 5.143e-03, 5.949e-02), r);\n\tr = MulAdd(s5_7, M4(-1.538e-02, 8.052e-02, 3.767e-02, 3.576e-02, 1.192e-02, -1.285e-01, -1.240e-01, -1.155e-01, 1.604e-02, 9.288e-02, 7.225e-02, 1.157e-01, 1.540e-02, -1.841e-01, -4.204e-02, -7.928e-02), r);\n\tr = MulAdd(s5_8, M4(2.011e-02, 5.070e-02, -1.360e-02, 1.586e-02, -1.096e-01, -8.943e-03, -2.883e-02, -3.937e-02, 3.098e-02, -4.729e-04, -3.013e-02, -4.197e-02, -4.662e-02, -3.031e-02, -1.028e-04, 2.773e-02), r);\n\tr = MulAdd(s6_0, M4(-1.481e-02, 3.680e-03, 1.813e-02, 1.702e-02, 1.819e-03, -4.377e-03, -7.187e-04, -4.898e-02, 3.108e-02, -2.606e-02, -4.699e-02, 7.789e-02, -2.826e-01, 5.431e-02, 1.970e-01, 1.209e-01), r);\n\tr = MulAdd(s6_1, M4(6.911e-02, -1.416e-02, -9.693e-02, 4.817e-02, -4.358e-02, 3.826e-02, 4.636e-02, 2.814e-02, 8.591e-02, 1.173e-02, -7.589e-02, -2.467e-03, -1.815e-01, 7.563e-02, 3.060e-02, 3.624e-01), r);\n\tr = MulAdd(s6_2, M4(3.458e-02, -3.127e-02, 3.727e-02, 2.375e-02, 2.581e-02, -5.655e-02, 5.606e-02, -4.198e-03, -1.001e-01, 4.610e-02, 1.557e-03, -5.766e-02, -1.539e-01, 6.067e-02, 2.534e-01, -9.922e-02), r);\n\tr = MulAdd(s6_3, M4(-2.950e-02, 7.285e-02, 7.015e-03, -1.711e-02, 4.936e-02, 4.560e-02, -4.614e-02, -1.085e-01, -1.144e-01, -1.815e-02, 2.214e-02, 5.016e-02, -4.194e-01, -2.851e-01, 2.156e-01, -2.858e-02), r);\n\tr = MulAdd(s6_4, M4(1.187e-01, 8.610e-02, 1.643e-01, 1.513e-01, 6.280e-02, -3.520e-02, -8.953e-02, -1.304e-01, 1.336e-01, -9.314e-03, -4.739e-02, -2.907e-01, -1.902e-01, -5.034e-01, 9.737e-02, 4.044e-01), r);\n\tr = MulAdd(s6_5, M4(2.395e-02, 2.296e-02, 3.555e-02, -1.153e-02, 5.003e-02, 4.784e-03, -3.631e-03, 2.028e-02, -1.492e-01, 5.326e-02, -1.009e-01, 2.862e-02, 1.364e-01, -4.536e-01, -3.812e-01, 3.319e-02), r);\n\tr = MulAdd(s6_6, M4(3.443e-02, 3.912e-02, -6.775e-03, -1.025e-01, -2.452e-02, -9.198e-02, 3.827e-02, -8.314e-02, 3.334e-02, 3.962e-02, -2.296e-02, 2.559e-02, -3.215e-01, -4.423e-02, 4.716e-02, 3.208e-01), r);\n\tr = MulAdd(s6_7, M4(-5.346e-02, 4.934e-02, 5.720e-02, 8.442e-05, -2.611e-02, -1.257e-01, -3.897e-02, 6.115e-03, 1.121e-03, -1.353e-01, -6.367e-02, -8.777e-02, -3.356e-02, 8.508e-01, -6.710e-02, 2.437e-01), r);\n\tr = MulAdd(s6_8, M4(-3.279e-02, 4.803e-02, 1.084e-02, -1.469e-03, -1.084e-01, -3.015e-02, -1.432e-02, -2.730e-02, 7.939e-02, 1.648e-01, 5.432e-02, 6.842e-02, -2.190e-01, 4.760e-01, 1.189e-01, -1.566e-01), r);\n\tr = MulAdd(s7_0, M4(3.039e-02, -4.042e-02, 3.707e-02, 9.572e-02, -9.552e-02, 5.214e-02, 2.919e-02, 7.078e-02, 6.632e-02, 5.363e-02, 2.971e-02, -1.054e-02, -1.973e-02, -3.739e-02, -8.141e-03, 3.426e-02), r);\n\tr = MulAdd(s7_1, M4(1.056e-01, 8.106e-02, -1.423e-02, -1.197e-01, -9.589e-03, 7.807e-02, 1.234e-02, 1.724e-02, -9.390e-02, -6.459e-03, 6.137e-02, 6.781e-03, -2.780e-02, 3.426e-03, -4.210e-02, -2.111e-03), r);\n\tr = MulAdd(s7_2, M4(5.906e-02, -6.837e-02, -1.526e-03, 5.797e-02, 6.039e-02, -1.754e-02, 1.022e-01, -1.539e-01, -1.161e-04, -2.746e-02, 1.525e-01, -1.059e-01, 5.706e-03, -1.552e-02, 1.843e-02, 2.712e-02), r);\n\tr = MulAdd(s7_3, M4(1.317e-01, 8.557e-02, -3.533e-02, -1.620e-01, 2.243e-01, 5.795e-06, -4.773e-02, -4.165e-02, 1.745e-02, -1.104e-01, -4.065e-02, -7.965e-03, -1.062e-01, 5.844e-02, -1.964e-02, 2.352e-02), r);\n\tr = MulAdd(s7_4, M4(3.415e-01, 2.737e-01, 1.364e-01, 3.602e-03, 5.410e-02, 1.907e-02, -6.755e-03, -2.686e-01, -4.820e-02, 1.914e-02, -9.279e-02, -8.144e-02, 3.230e-03, -1.465e-03, 8.159e-02, 6.788e-02), r);\n\tr = MulAdd(s7_5, M4(4.674e-02, -1.400e-02, -1.856e-03, -2.987e-02, 8.853e-03, 2.427e-02, -2.821e-02, 8.432e-02, 7.288e-02, 7.845e-03, -6.109e-02, 1.150e-01, 2.873e-02, -5.371e-02, -3.119e-02, -7.531e-03), r);\n\tr = MulAdd(s7_6, M4(1.787e-01, 4.830e-02, -1.587e-01, -1.785e-01, -1.709e-02, -1.119e-01, -4.879e-02, -6.821e-02, -1.583e-02, 8.248e-03, -2.813e-02, 4.111e-02, -2.005e-02, -5.693e-02, -9.208e-03, 4.814e-03), r);\n\tr = MulAdd(s7_7, M4(-6.885e-02, 8.600e-02, -1.341e-01, -6.768e-02, -1.075e-01, 1.010e-01, -7.839e-02, 5.196e-02, -5.968e-02, -1.472e-01, 4.703e-02, -7.549e-02, -4.898e-02, 2.312e-02, -4.982e-02, 4.178e-02), r);\n\tr = MulAdd(s7_8, M4(-1.335e-02, 1.696e-02, -9.544e-02, 2.342e-02, 7.584e-02, -6.788e-02, 5.264e-02, -3.575e-02, 6.591e-02, 4.831e-02, 5.604e-02, 5.523e-02, -3.696e-02, 4.328e-02, 4.806e-02, 1.609e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.394e-02, -2.699e-02, 2.224e-02, 3.281e-03 };\n\tr = MulAdd(s0_0, M4(1.044e-02, 3.976e-02, -2.713e-03, -2.239e-02, -8.208e-02, -6.853e-02, -2.467e-02, 5.687e-03, 1.560e-02, -2.362e-03, -3.105e-03, -3.978e-02, -2.943e-02, 7.069e-03, 5.994e-02, -4.156e-02), r);\n\tr = MulAdd(s0_1, M4(-4.410e-02, -6.369e-04, 1.340e-02, -3.625e-02, -4.683e-03, -4.686e-02, -2.602e-02, 1.932e-02, -7.814e-02, 2.679e-03, 4.407e-02, -9.170e-03, -5.525e-02, -9.645e-02, 4.266e-02, 1.245e-01), r);\n\tr = MulAdd(s0_2, M4(-1.824e-02, -1.584e-02, 1.381e-02, 8.685e-03, -1.348e-02, 3.479e-02, -6.780e-02, 7.429e-02, -8.274e-03, -1.247e-02, 4.504e-02, 5.583e-03, -9.213e-02, -7.559e-02, 2.572e-02, 2.736e-02), r);\n\tr = MulAdd(s0_3, M4(2.819e-02, -5.725e-02, -1.996e-02, -8.497e-03, -6.542e-02, -7.037e-02, -3.119e-02, 1.333e-02, 3.837e-02, -3.085e-02, -6.294e-02, 2.702e-02, 3.653e-02, 1.286e-02, 2.269e-02, -4.996e-03), r);\n\tr = MulAdd(s0_4, M4(4.286e-02, 6.463e-02, 4.030e-03, 4.109e-02, 8.496e-02, -7.991e-02, -3.770e-02, -2.812e-02, -2.714e-02, -7.114e-02, 4.348e-01, -2.067e-01, -3.885e-02, 1.662e-01, -9.803e-02, -1.303e-01), r);\n\tr = MulAdd(s0_5, M4(-6.420e-02, 7.644e-02, -3.945e-03, 4.843e-02, -2.071e-02, -1.295e-01, 1.053e-03, 3.202e-02, -1.646e-01, 1.946e-01, 1.409e-01, -1.667e-01, -5.841e-02, -1.496e-01, -1.809e-02, 4.810e-02), r);\n\tr = MulAdd(s0_6, M4(-2.353e-02, 3.602e-02, -1.510e-02, -1.081e-02, -3.546e-02, 2.930e-02, -6.499e-02, -2.120e-02, 3.098e-02, 1.991e-02, -1.106e-01, 1.454e-02, -3.027e-02, -8.608e-03, -6.525e-03, -2.450e-02), r);\n\tr = MulAdd(s0_7, M4(8.452e-02, 8.519e-02, -4.352e-02, -5.994e-02, 1.038e-01, 9.383e-02, -5.287e-02, -9.052e-02, 1.258e-01, -3.955e-02, 1.836e-01, 3.711e-02, -3.958e-02, 2.734e-02, -1.068e-01, -8.196e-02), r);\n\tr = MulAdd(s0_8, M4(-1.004e-01, -1.266e-02, -7.782e-02, 5.638e-02, 4.760e-02, -4.956e-02, -2.831e-02, -9.750e-02, 1.263e-01, -2.467e-02, 3.367e-02, 4.778e-02, -8.891e-03, 8.083e-02, 8.543e-04, -6.149e-02), r);\n\tr = MulAdd(s1_0, M4(7.064e-02, -3.305e-02, -6.078e-02, 4.083e-03, -3.250e-02, -6.921e-02, -4.862e-03, 5.376e-02, 6.239e-02, 1.770e-02, -2.288e-02, -6.141e-03, -5.434e-03, 2.557e-02, 4.303e-02, -7.795e-03), r);\n\tr = MulAdd(s1_1, M4(-1.217e-02, -4.375e-03, 9.265e-02, -2.436e-02, -1.084e-03, 2.425e-02, 1.093e-01, 2.275e-02, 7.563e-03, -1.642e-02, 1.754e-02, 2.647e-02, -8.377e-02, -7.736e-02, 1.067e-01, 2.718e-02), r);\n\tr = MulAdd(s1_2, M4(-5.520e-02, 1.269e-01, -8.435e-02, 8.448e-02, 3.444e-02, 1.022e-01, -1.862e-02, 6.598e-02, 3.329e-02, -2.967e-02, 1.146e-02, 1.238e-01, -5.812e-02, -3.343e-02, 2.878e-03, 6.665e-02), r);\n\tr = MulAdd(s1_3, M4(2.062e-02, -1.695e-01, -7.799e-02, 1.398e-02, -1.468e-01, -2.432e-02, -3.870e-03, 1.403e-02, 5.847e-02, -2.735e-02, -6.518e-02, -1.040e-02, -5.155e-04, 1.307e-01, 1.418e-02, 9.161e-02), r);\n\tr = MulAdd(s1_4, M4(-9.368e-02, -9.932e-02, 1.302e-01, -1.556e-01, -2.554e-02, -2.008e-01, 1.359e-02, -2.680e-02, 6.190e-02, -4.853e-02, 9.166e-02, 2.847e-02, -2.106e-01, 2.206e-01, -5.797e-02, -1.267e-01), r);\n\tr = MulAdd(s1_5, M4(-2.516e-01, 1.810e-01, 2.429e-03, 9.165e-02, -4.417e-02, -5.359e-02, 1.532e-02, 1.811e-03, -3.734e-02, 1.192e-01, 9.250e-03, -4.431e-02, -1.382e-01, -1.226e-01, 6.487e-03, -1.302e-02), r);\n\tr = MulAdd(s1_6, M4(-1.248e-02, 7.933e-02, -5.322e-02, 2.219e-02, 4.028e-04, 3.178e-02, 7.705e-03, 1.915e-02, 6.281e-02, 5.458e-03, -3.504e-02, -2.088e-02, -3.229e-02, -6.282e-02, -1.913e-03, -2.264e-03), r);\n\tr = MulAdd(s1_7, M4(1.022e-01, 1.444e-01, -3.742e-03, -6.361e-02, 1.558e-01, 1.217e-01, -5.079e-02, -4.364e-02, 1.397e-01, 4.067e-02, 1.062e-01, 9.020e-02, -1.307e-01, -1.261e-02, -5.311e-02, -5.734e-03), r);\n\tr = MulAdd(s1_8, M4(3.088e-03, -4.309e-02, -6.999e-02, -9.212e-02, 1.614e-01, 1.125e-02, 1.084e-02, -7.279e-02, 3.876e-03, 6.041e-03, -9.399e-02, 8.275e-02, -5.889e-02, 7.190e-02, -2.825e-03, 1.959e-02), r);\n\tr = MulAdd(s2_0, M4(-8.445e-03, 1.907e-02, -2.446e-01, 1.165e-01, 5.851e-02, -3.507e-02, -2.351e-01, -5.242e-02, 2.138e-02, 1.019e-02, -1.577e-02, 4.669e-03, 9.699e-02, -4.522e-02, 3.881e-02, -7.113e-02), r);\n\tr = MulAdd(s2_1, M4(-4.277e-02, -4.543e-02, 1.424e-02, 1.687e-02, -5.888e-03, 1.411e-02, -1.075e-01, 3.964e-02, -5.187e-02, -3.288e-02, 1.687e-01, -2.589e-01, -4.321e-03, 9.293e-02, -1.014e-02, -1.401e-01), r);\n\tr = MulAdd(s2_2, M4(-1.085e-01, 3.257e-02, -4.122e-03, -1.857e-03, 9.057e-02, -8.602e-03, -1.726e-02, 8.968e-02, 4.722e-02, 4.112e-02, 7.975e-02, -7.304e-02, 8.705e-02, 4.329e-02, 4.175e-02, -1.431e-01), r);\n\tr = MulAdd(s2_3, M4(2.931e-02, 2.431e-02, 4.895e-02, 8.375e-02, 2.388e-02, 1.423e-01, -2.586e-01, 1.456e-01, -6.493e-02, -1.082e-03, -6.684e-02, -7.866e-02, 2.237e-02, 6.424e-02, 9.272e-02, -3.164e-02), r);\n\tr = MulAdd(s2_4, M4(1.627e-01, 2.827e-02, 3.059e-02, -9.400e-02, 1.152e-01, -7.012e-02, -1.099e-01, -1.231e-01, 6.033e-02, -1.182e-01, 2.324e-01, 8.117e-03, -1.818e-02, -4.512e-02, 2.717e-02, 1.116e-01), r);\n\tr = MulAdd(s2_5, M4(-2.338e-02, 3.575e-02, -7.326e-02, 4.292e-02, -2.192e-02, 7.025e-03, -8.236e-02, 1.137e-01, -7.215e-02, 3.959e-02, 2.721e-02, 3.182e-02, -1.178e-02, 1.383e-01, 3.623e-02, -7.956e-02), r);\n\tr = MulAdd(s2_6, M4(6.068e-02, -1.599e-01, 1.563e-02, 9.910e-02, 6.822e-02, -6.330e-03, -8.954e-02, -4.047e-02, -4.017e-02, 4.640e-02, 6.713e-02, -1.995e-02, -1.653e-02, -6.367e-02, -5.527e-02, 1.112e-03), r);\n\tr = MulAdd(s2_7, M4(-6.325e-02, 3.405e-02, 4.576e-04, 3.678e-02, 7.667e-02, 6.580e-02, -3.727e-03, 9.988e-02, 7.735e-02, -1.517e-01, -1.384e-02, 1.075e-01, 3.524e-02, -3.428e-02, -7.878e-03, -7.362e-03), r);\n\tr = MulAdd(s2_8, M4(2.430e-02, -2.020e-02, 6.423e-02, 1.522e-02, 6.724e-02, -6.726e-02, 2.133e-02, 1.430e-03, 6.096e-03, -2.198e-02, 2.264e-02, 3.697e-02, 1.264e-01, 1.037e-01, -1.240e-02, 5.197e-02), r);\n\tr = MulAdd(s3_0, M4(2.169e-02, 2.504e-02, 1.037e-01, 3.411e-02, 5.118e-02, 6.041e-02, -3.748e-02, 8.401e-02, 5.622e-02, 2.256e-02, 1.919e-02, -3.586e-02, 9.630e-02, 1.443e-02, -2.763e-02, -5.427e-02), r);\n\tr = MulAdd(s3_1, M4(8.570e-02, -8.241e-02, 4.385e-02, 4.663e-02, -2.042e-02, 2.747e-02, -1.350e-01, -5.734e-02, -2.608e-02, -2.238e-02, 3.917e-02, -6.221e-02, -5.165e-02, -4.383e-02, -8.010e-02, 1.202e-01), r);\n\tr = MulAdd(s3_2, M4(-1.071e-01, 1.806e-02, -4.676e-02, 7.724e-02, 5.927e-03, -1.329e-02, 3.595e-02, -9.005e-02, -2.000e-02, 6.244e-02, 3.114e-02, 3.745e-02, 2.687e-02, 4.229e-02, 5.796e-02, 5.742e-03), r);\n\tr = MulAdd(s3_3, M4(-5.645e-02, -3.711e-02, 3.449e-02, 8.653e-02, -1.124e-01, 1.150e-01, -5.544e-02, -3.011e-02, -4.542e-02, 5.861e-02, -4.486e-02, -2.321e-02, 8.433e-02, 7.359e-02, 1.777e-02, -7.155e-03), r);\n\tr = MulAdd(s3_4, M4(9.085e-02, -2.114e-01, 1.875e-02, -8.487e-02, 8.074e-02, -8.667e-02, 5.562e-02, 6.822e-02, -2.129e-03, 8.832e-02, 9.762e-03, 1.188e-02, -2.961e-02, 3.126e-02, 2.638e-02, 1.059e-01), r);\n\tr = MulAdd(s3_5, M4(1.846e-03, -1.158e-01, -6.764e-03, 4.821e-02, -9.654e-02, 8.251e-02, 5.516e-02, -2.189e-02, -4.252e-02, 3.444e-02, -2.140e-02, 2.518e-02, -2.090e-02, 7.050e-03, 5.051e-02, 3.882e-02), r);\n\tr = MulAdd(s3_6, M4(1.362e-02, 7.373e-03, 2.864e-02, 6.477e-02, -3.102e-02, -9.494e-02, -9.035e-04, -1.018e-01, 7.756e-02, 2.593e-04, -5.842e-02, -4.771e-02, 2.515e-02, -5.837e-02, 5.781e-03, -3.702e-02), r);\n\tr = MulAdd(s3_7, M4(1.259e-02, 1.449e-01, -1.064e-01, -1.181e-01, 5.822e-02, -9.368e-03, -7.623e-03, -9.724e-02, 9.437e-03, -1.174e-01, -6.045e-02, -9.132e-03, -2.510e-01, 1.724e-01, -7.339e-02, -2.843e-02), r);\n\tr = MulAdd(s3_8, M4(-1.154e-02, -3.014e-02, 3.173e-02, -2.898e-02, -2.838e-02, -1.094e-01, 2.581e-02, -1.161e-02, 2.622e-02, 2.845e-02, -8.344e-03, -3.107e-02, 9.083e-02, 1.809e-02, -1.382e-02, 5.248e-02), r);\n\tr = MulAdd(s4_0, M4(-1.701e-02, -1.681e-01, 3.634e-02, 4.505e-02, 1.752e-02, -4.231e-03, 7.473e-03, -4.035e-02, -7.602e-02, -7.688e-02, 1.905e-02, 1.685e-02, -1.871e-02, 6.926e-02, -4.040e-02, 8.013e-02), r);\n\tr = MulAdd(s4_1, M4(-2.121e-02, -7.814e-02, -8.739e-02, 1.494e-01, -4.835e-02, 7.097e-02, -1.636e-02, 7.893e-02, -4.042e-02, -6.655e-03, 5.261e-02, 4.836e-02, -3.004e-02, 1.275e-01, 1.666e-02, 6.189e-02), r);\n\tr = MulAdd(s4_2, M4(4.286e-02, -8.761e-03, 1.687e-02, 3.043e-02, 1.437e-02, -3.089e-02, 7.082e-03, -8.197e-02, -5.931e-02, 1.408e-01, 9.069e-02, -1.079e-01, 1.112e-02, 3.030e-02, -2.776e-02, 4.441e-02), r);\n\tr = MulAdd(s4_3, M4(-1.980e-01, -7.147e-02, 2.292e-02, 2.596e-01, 6.282e-02, 2.365e-02, -9.268e-03, 1.502e-02, -1.860e-01, -1.795e-02, 4.955e-02, -4.942e-02, 8.161e-03, -2.767e-02, 4.257e-03, 6.855e-02), r);\n\tr = MulAdd(s4_4, M4(-2.060e-01, 2.178e-01, 1.186e-01, 3.833e-01, 9.743e-02, -1.941e-01, 1.368e-01, 4.863e-02, -2.060e-01, 1.257e-01, 1.337e-01, 1.871e-01, 1.676e-01, -2.828e-02, 5.465e-02, 3.017e-01), r);\n\tr = MulAdd(s4_5, M4(4.660e-02, -2.261e-02, -3.447e-02, 1.099e-01, -3.801e-02, -9.249e-02, -1.074e-04, -1.763e-02, -2.638e-02, 8.448e-02, -5.157e-02, 5.928e-03, 4.440e-02, -2.713e-02, 6.287e-03, 1.153e-01), r);\n\tr = MulAdd(s4_6, M4(-5.474e-03, 1.672e-01, -6.861e-02, -1.988e-02, -1.599e-03, -7.052e-02, 3.060e-02, 3.427e-02, -3.871e-02, 4.070e-02, 4.571e-03, -3.487e-02, 3.488e-02, -1.459e-02, -3.410e-02, -9.642e-02), r);\n\tr = MulAdd(s4_7, M4(3.777e-02, -1.552e-01, 5.797e-02, 3.750e-03, -8.534e-02, 1.230e-01, -6.731e-02, -8.019e-02, -6.913e-03, -1.968e-01, 6.628e-02, 8.678e-02, -9.774e-02, 3.702e-02, -5.709e-02, 8.746e-03), r);\n\tr = MulAdd(s4_8, M4(-3.814e-02, -8.854e-03, 2.903e-02, 1.036e-01, -3.554e-03, 9.865e-02, -7.659e-03, -6.438e-02, 7.322e-02, -3.479e-02, 3.099e-02, 8.696e-02, 2.780e-02, -9.543e-02, -9.496e-03, 7.311e-02), r);\n\tr = MulAdd(s5_0, M4(-3.094e-02, -4.254e-02, 6.911e-02, 6.352e-02, 1.081e-01, 4.253e-02, 1.324e-01, 8.483e-02, -7.910e-02, -1.033e-02, -2.140e-02, 8.306e-03, -7.538e-03, -1.534e-02, -2.465e-02, -1.115e-01), r);\n\tr = MulAdd(s5_1, M4(-7.244e-02, 9.141e-02, -3.903e-02, -4.721e-02, 1.216e-02, 1.243e-02, 3.216e-02, -2.703e-04, -3.561e-02, 1.223e-01, -4.937e-02, 5.409e-02, 1.824e-02, -3.436e-02, -3.153e-02, 2.583e-02), r);\n\tr = MulAdd(s5_2, M4(1.840e-02, -5.725e-02, -9.852e-03, 1.039e-01, 4.117e-02, 1.614e-01, 3.339e-02, -6.907e-02, 8.800e-03, 8.399e-02, 6.212e-02, -1.548e-01, -4.436e-02, -1.146e-01, 5.010e-03, -3.829e-02), r);\n\tr = MulAdd(s5_3, M4(-7.835e-02, 5.730e-02, -4.555e-02, 4.678e-02, -3.569e-02, -3.450e-02, 1.276e-02, -1.623e-02, -8.050e-02, 5.898e-02, 6.266e-02, 6.138e-02, 3.209e-02, -5.514e-02, 3.587e-02, -1.388e-02), r);\n\tr = MulAdd(s5_4, M4(5.885e-03, 1.810e-02, -1.060e-02, -1.665e-01, -1.328e-01, -5.792e-02, 2.064e-01, 2.821e-03, -6.837e-03, 1.071e-01, 1.029e-01, 3.014e-02, 1.233e-01, 3.574e-02, 8.126e-02, 1.382e-01), r);\n\tr = MulAdd(s5_5, M4(-4.135e-02, -5.230e-02, -1.185e-02, -9.550e-03, -5.861e-04, 5.239e-02, -9.890e-02, 1.078e-01, -1.583e-02, 4.469e-02, 8.494e-02, -7.841e-02, -7.250e-03, -6.059e-02, -2.741e-02, 5.696e-02), r);\n\tr = MulAdd(s5_6, M4(2.748e-02, -3.039e-02, 4.701e-02, -1.181e-02, 1.432e-02, -9.720e-03, 8.727e-03, 4.597e-02, -4.833e-02, -8.645e-02, 7.821e-02, -1.231e-02, -1.624e-02, 1.332e-01, -8.124e-02, 2.425e-02), r);\n\tr = MulAdd(s5_7, M4(6.926e-02, 9.884e-02, 2.223e-03, -5.294e-02, -5.509e-02, 6.520e-03, 3.129e-02, -5.234e-02, -9.890e-02, -9.283e-02, 5.143e-02, 1.258e-01, -3.169e-02, 1.379e-01, -2.241e-03, -1.374e-01), r);\n\tr = MulAdd(s5_8, M4(-2.339e-02, 4.610e-02, 9.191e-03, 3.271e-02, 3.843e-02, -7.156e-02, 9.077e-03, 5.775e-02, 5.044e-02, 2.279e-02, -6.811e-02, 4.273e-02, -2.611e-02, -6.971e-02, -1.611e-02, 6.006e-02), r);\n\tr = MulAdd(s6_0, M4(2.505e-02, 3.766e-02, 4.054e-02, -4.322e-02, 3.788e-02, 7.105e-02, 2.766e-02, 1.881e-02, 1.769e-02, 3.557e-02, 3.017e-02, 2.461e-02, -7.103e-02, 2.165e-01, -1.108e-01, 1.162e-02), r);\n\tr = MulAdd(s6_1, M4(-5.639e-02, -1.563e-02, 7.611e-03, -8.263e-02, 1.390e-02, 5.897e-02, 7.291e-02, 3.333e-02, -1.985e-02, -3.859e-02, -7.172e-02, 3.897e-02, 3.314e-01, -2.184e-01, 1.485e-01, -3.358e-01), r);\n\tr = MulAdd(s6_2, M4(-4.237e-02, 2.323e-02, 2.123e-02, -6.459e-02, 3.581e-02, 4.408e-02, -2.169e-02, -1.021e-02, -5.736e-02, -1.571e-01, 3.566e-02, -9.504e-02, -2.761e-02, -2.743e-02, 3.164e-02, -1.290e-01), r);\n\tr = MulAdd(s6_3, M4(4.800e-02, -3.069e-02, -1.506e-01, 2.946e-02, -9.870e-03, -1.109e-01, 1.050e-01, 2.674e-02, 1.095e-01, -1.704e-02, -5.751e-02, 5.679e-02, -2.885e-01, 1.443e-01, 9.681e-02, 8.549e-02), r);\n\tr = MulAdd(s6_4, M4(-1.101e-01, -1.287e-01, 5.712e-02, 4.843e-02, -8.649e-02, 9.301e-02, 1.086e-01, -7.359e-02, 1.531e-01, 3.441e-02, -7.657e-02, 6.034e-02, 1.580e-01, 2.032e-01, 1.741e-01, -1.615e-01), r);\n\tr = MulAdd(s6_5, M4(-1.083e-02, 3.367e-02, -2.426e-03, -3.333e-02, 2.701e-02, -1.209e-01, -2.016e-02, 1.091e-02, -7.320e-02, -2.307e-01, 2.703e-02, -2.442e-02, 1.112e-01, 1.876e-01, -2.411e-01, 1.322e-01), r);\n\tr = MulAdd(s6_6, M4(1.312e-02, -2.243e-02, -4.825e-02, 1.113e-03, -1.856e-02, 4.430e-03, -4.659e-02, -1.388e-02, -2.014e-02, -4.208e-03, 2.505e-02, -1.212e-03, 2.191e-01, 1.855e-01, -5.144e-01, -9.088e-02), r);\n\tr = MulAdd(s6_7, M4(1.318e-01, -3.862e-02, 1.896e-03, 1.051e-02, -2.931e-02, -5.311e-02, -3.125e-02, -7.541e-02, -4.191e-03, 2.775e-02, 5.166e-02, -6.969e-02, 4.320e-01, -3.483e-01, -2.535e-01, 2.253e-01), r);\n\tr = MulAdd(s6_8, M4(1.595e-02, -1.106e-02, 1.332e-03, 6.104e-02, 2.432e-03, 3.079e-02, -3.708e-02, -9.332e-02, 8.644e-03, -8.420e-02, 5.762e-02, -3.917e-02, 4.429e-01, -4.880e-01, 3.146e-01, 7.947e-02), r);\n\tr = MulAdd(s7_0, M4(1.022e-02, 4.535e-02, -1.894e-02, -2.478e-02, 2.549e-02, -7.074e-02, 7.360e-02, -9.483e-02, -4.662e-02, -3.848e-02, -1.675e-02, 3.406e-02, 2.726e-02, 5.894e-02, -3.353e-02, -1.439e-02), r);\n\tr = MulAdd(s7_1, M4(-1.249e-01, 1.182e-01, -1.116e-01, 1.554e-01, -1.324e-02, 3.877e-02, 8.164e-02, 1.246e-01, 1.247e-02, -8.276e-02, -3.699e-04, 6.295e-02, -3.020e-02, -3.135e-02, -5.228e-03, -3.271e-02), r);\n\tr = MulAdd(s7_2, M4(-7.242e-02, 7.685e-02, 1.332e-03, -1.996e-02, 7.416e-02, 5.993e-02, 3.891e-03, 1.467e-01, 3.795e-02, -2.813e-02, 6.276e-03, -8.736e-02, 6.288e-03, -1.671e-02, 3.157e-02, 1.137e-02), r);\n\tr = MulAdd(s7_3, M4(2.462e-02, -5.562e-02, -1.547e-01, 7.757e-02, -5.447e-02, -2.082e-02, 6.462e-02, 3.818e-02, 7.313e-02, 3.180e-02, 6.349e-02, 4.597e-02, 3.639e-02, -5.572e-02, -2.767e-02, -3.854e-03), r);\n\tr = MulAdd(s7_4, M4(-2.440e-01, 8.688e-02, -9.817e-02, -7.993e-03, -5.542e-02, 1.178e-01, 2.146e-01, -2.587e-01, -2.360e-02, -3.656e-02, 1.491e-01, -7.644e-02, -4.282e-02, 1.621e-03, 6.814e-02, -5.522e-03), r);\n\tr = MulAdd(s7_5, M4(-1.154e-01, -7.271e-02, -8.417e-02, 3.505e-02, 3.125e-02, -1.586e-01, -5.020e-02, 1.130e-01, -5.825e-02, -9.207e-02, 3.888e-02, -1.213e-02, -4.179e-03, 7.084e-02, -3.835e-02, -1.931e-02), r);\n\tr = MulAdd(s7_6, M4(-5.889e-02, -2.156e-02, -2.017e-01, 1.316e-02, 1.188e-02, 5.863e-02, -7.675e-02, -1.943e-02, 7.086e-03, -4.504e-02, 5.562e-03, 2.955e-03, 2.118e-02, -1.524e-03, 2.187e-02, -4.319e-02), r);\n\tr = MulAdd(s7_7, M4(-1.654e-01, 2.251e-01, -8.720e-02, -6.604e-02, -7.955e-02, -3.832e-02, -4.145e-02, -3.334e-03, 5.834e-02, 1.713e-03, -4.636e-02, -3.712e-02, 9.400e-03, -4.264e-02, 2.888e-02, 4.214e-02), r);\n\tr = MulAdd(s7_8, M4(-3.719e-02, -7.805e-02, -4.505e-02, -1.529e-02, 9.692e-02, -1.162e-02, 3.538e-02, -6.834e-02, -9.472e-02, -1.191e-01, 1.172e-01, 4.890e-02, -1.099e-02, -3.897e-02, -5.892e-03, 5.192e-03), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.028e-04, 1.783e-02, -7.192e-03, -2.224e-02 };\n\tr = MulAdd(s0_0, M4(-6.270e-02, 8.462e-02, 6.047e-02, -1.295e-03, -4.220e-02, 8.864e-02, 1.259e-01, 1.254e-01, -2.959e-03, 1.666e-02, -4.736e-02, 5.655e-03, 5.340e-02, -9.372e-02, -1.861e-02, 6.647e-03), r);\n\tr = MulAdd(s0_1, M4(7.213e-02, 4.957e-02, 3.529e-02, 6.272e-02, 1.731e-03, -1.453e-01, -1.714e-01, 4.357e-02, 7.614e-02, -2.309e-02, -7.446e-02, -4.053e-03, 8.282e-02, -1.530e-01, -7.690e-02, 8.619e-02), r);\n\tr = MulAdd(s0_2, M4(1.100e-02, 5.907e-02, -6.664e-02, -9.434e-02, -9.546e-03, -1.168e-03, -7.016e-02, -2.523e-03, 8.582e-03, -3.931e-02, 5.454e-02, -5.242e-02, 1.809e-03, 3.973e-02, 7.846e-02, 1.502e-01), r);\n\tr = MulAdd(s0_3, M4(-4.294e-02, -8.568e-02, 4.840e-02, -5.056e-02, -1.042e-02, 1.703e-01, 2.530e-02, 1.320e-01, -9.460e-02, -1.044e-02, 2.013e-03, -3.328e-02, -6.248e-02, -1.069e-01, -9.958e-02, 3.909e-02), r);\n\tr = MulAdd(s0_4, M4(-1.629e-02, -2.062e-01, -6.175e-02, 1.759e-01, -2.276e-02, -1.242e-01, 1.792e-01, -5.800e-02, -2.607e-01, -1.996e-01, -3.020e-01, -2.794e-01, -1.831e-01, -6.461e-03, -1.025e-01, 9.115e-02), r);\n\tr = MulAdd(s0_5, M4(4.015e-02, 1.667e-02, 1.189e-02, 9.986e-03, -2.513e-02, -3.772e-02, -9.172e-02, 1.288e-02, 5.936e-02, -3.270e-02, -4.656e-02, -1.971e-02, -1.216e-01, 2.782e-02, 2.057e-02, -8.124e-02), r);\n\tr = MulAdd(s0_6, M4(7.638e-03, 9.634e-02, -9.590e-03, 9.920e-02, -5.291e-02, -1.379e-01, -4.254e-02, 8.970e-02, -4.908e-02, -3.514e-02, 2.161e-02, 1.228e-01, -2.859e-02, 1.776e-02, 5.965e-02, -5.740e-02), r);\n\tr = MulAdd(s0_7, M4(1.415e-02, 9.476e-02, 5.657e-02, -5.985e-02, -1.921e-02, -1.729e-01, 1.587e-01, -3.043e-02, -3.281e-02, -1.685e-01, 8.746e-02, -5.009e-02, -7.444e-02, 4.368e-02, -1.751e-01, 8.580e-03), r);\n\tr = MulAdd(s0_8, M4(-9.291e-02, 8.831e-02, -4.124e-04, 1.910e-02, -1.098e-01, -3.635e-03, -1.324e-01, 3.700e-02, -6.666e-02, 1.568e-02, 1.271e-01, 3.878e-02, -8.765e-03, -4.062e-03, 5.793e-02, -2.290e-02), r);\n\tr = MulAdd(s1_0, M4(-1.502e-02, 1.077e-01, 3.124e-02, 1.075e-02, -3.177e-02, -9.244e-03, 7.909e-03, 1.386e-02, -2.435e-02, -2.333e-02, -3.894e-03, 1.001e-01, 2.044e-02, -3.405e-02, 3.784e-02, 1.062e-01), r);\n\tr = MulAdd(s1_1, M4(-1.820e-02, 1.045e-01, 3.270e-02, -1.421e-01, 2.323e-02, -1.212e-01, -5.815e-02, -3.536e-02, 7.484e-02, -5.398e-02, -7.591e-02, -3.319e-03, 2.994e-02, -1.205e-01, -1.216e-01, 6.506e-04), r);\n\tr = MulAdd(s1_2, M4(-4.254e-02, 4.430e-02, 1.334e-01, -3.396e-02, -2.487e-02, 3.670e-03, -4.728e-03, 4.544e-02, -3.614e-03, -1.019e-04, 1.291e-01, 8.122e-02, 6.363e-02, -6.492e-02, 2.131e-02, 8.853e-02), r);\n\tr = MulAdd(s1_3, M4(-6.085e-02, -7.155e-02, 6.387e-02, -3.618e-04, 9.316e-04, 1.234e-02, 3.535e-02, 1.134e-01, -8.018e-03, 2.279e-02, -7.397e-02, -1.708e-02, -2.241e-02, -7.837e-02, 6.655e-03, -3.115e-02), r);\n\tr = MulAdd(s1_4, M4(1.340e-01, -1.899e-01, -2.069e-01, 1.068e-01, 1.531e-01, -5.987e-02, 1.272e-01, -1.749e-01, -1.591e-01, 1.187e-01, -2.502e-01, -4.704e-02, -1.795e-01, 1.684e-01, -2.850e-02, 1.977e-02), r);\n\tr = MulAdd(s1_5, M4(2.706e-01, 1.037e-01, 1.069e-02, 6.212e-02, 9.405e-02, 5.078e-02, -1.521e-02, 1.053e-01, 5.587e-02, -1.079e-01, -1.956e-01, 1.002e-01, -9.972e-02, -4.369e-02, 2.127e-02, 3.292e-02), r);\n\tr = MulAdd(s1_6, M4(3.024e-02, 3.504e-02, 9.144e-03, 1.017e-01, 2.052e-02, -7.253e-02, -8.188e-03, -2.040e-03, -1.034e-01, 5.712e-02, 5.073e-02, 5.633e-02, 2.876e-02, 6.714e-02, -5.819e-02, -4.248e-03), r);\n\tr = MulAdd(s1_7, M4(-5.796e-02, -2.728e-03, 1.136e-03, -1.841e-01, -7.350e-02, -1.392e-02, -5.575e-02, -1.827e-02, 2.426e-01, -9.720e-02, 1.825e-01, -1.503e-01, 2.962e-02, 1.437e-02, -5.738e-02, -2.191e-02), r);\n\tr = MulAdd(s1_8, M4(-4.604e-02, -2.008e-02, 1.302e-01, 5.240e-02, 5.437e-02, 9.805e-02, 1.975e-04, 2.174e-02, -2.043e-02, -6.386e-02, 2.431e-02, -2.866e-02, 5.969e-03, -5.000e-02, -2.949e-02, -3.303e-03), r);\n\tr = MulAdd(s2_0, M4(-7.025e-02, 1.479e-02, 7.548e-02, 1.139e-01, 4.150e-02, -1.592e-02, -5.557e-02, 4.076e-02, 7.414e-02, -1.435e-02, -1.292e-01, -6.525e-03, -5.171e-02, -1.093e-02, -2.271e-02, 8.183e-02), r);\n\tr = MulAdd(s2_1, M4(-1.431e-01, -9.856e-02, -5.329e-02, -1.580e-01, -9.302e-02, 4.383e-02, -1.289e-01, -5.199e-02, -1.177e-02, 2.312e-01, -1.031e-01, -1.042e-01, 7.490e-03, 1.560e-01, 1.859e-02, 1.362e-02), r);\n\tr = MulAdd(s2_2, M4(-1.654e-01, 4.700e-02, 5.856e-02, 1.700e-03, -2.360e-02, -2.999e-02, -8.010e-02, -2.625e-03, -8.773e-02, 1.326e-01, -1.586e-02, -1.976e-01, -9.224e-02, 7.006e-02, -4.945e-02, 6.917e-02), r);\n\tr = MulAdd(s2_3, M4(1.462e-01, 1.627e-01, -2.231e-01, 1.400e-01, 2.744e-02, -6.890e-02, 7.386e-02, 9.150e-02, 2.180e-02, -3.675e-02, 2.772e-01, 1.038e-02, -1.079e-01, -2.438e-02, -7.679e-02, 4.643e-02), r);\n\tr = MulAdd(s2_4, M4(2.548e-03, 2.263e-01, -4.712e-02, 1.055e-01, 9.417e-02, 1.440e-02, -1.447e-01, 1.665e-01, -6.626e-02, -8.829e-02, -1.114e-01, 1.139e-02, -9.637e-03, 1.324e-01, 7.510e-04, 1.059e-01), r);\n\tr = MulAdd(s2_5, M4(9.021e-04, -2.296e-02, 9.399e-02, 3.111e-02, 9.295e-02, 1.431e-02, -6.671e-02, 2.304e-02, 7.550e-02, 3.776e-02, 3.722e-02, -2.511e-01, 1.162e-01, 7.330e-02, 8.577e-02, 5.076e-02), r);\n\tr = MulAdd(s2_6, M4(-9.806e-02, 5.990e-03, 7.983e-02, 3.230e-02, 2.660e-02, -8.077e-02, 1.827e-02, -6.324e-03, 4.518e-03, 8.430e-02, 2.824e-03, -1.820e-01, -1.280e-02, -5.062e-02, -1.508e-02, 1.335e-01), r);\n\tr = MulAdd(s2_7, M4(-5.362e-02, -1.034e-01, 1.001e-01, -9.435e-02, 4.474e-02, 1.027e-01, 1.235e-02, -2.666e-02, -6.371e-02, 1.592e-01, -3.220e-01, 1.046e-01, -1.547e-01, 3.331e-02, 9.219e-02, 7.064e-02), r);\n\tr = MulAdd(s2_8, M4(-6.826e-02, -9.174e-03, -3.788e-03, 5.773e-02, 3.371e-02, -5.084e-02, -4.686e-02, -3.770e-02, 3.344e-02, -3.752e-02, 8.161e-02, -9.928e-02, 1.241e-01, 1.417e-02, -2.901e-02, 6.009e-02), r);\n\tr = MulAdd(s3_0, M4(4.130e-02, -1.358e-01, 3.513e-02, 6.201e-02, 8.036e-02, -1.246e-01, 4.951e-02, -1.407e-01, -4.433e-02, 2.066e-02, 3.889e-02, 2.549e-02, -3.015e-02, 3.265e-02, 7.889e-03, 3.115e-02), r);\n\tr = MulAdd(s3_1, M4(-4.670e-02, 8.732e-04, 1.647e-01, 9.340e-02, -1.168e-01, 2.860e-01, 1.757e-02, -1.000e-01, -8.647e-02, -1.377e-01, -7.349e-03, -1.694e-01, 2.130e-02, -7.362e-02, 3.712e-02, -6.965e-02), r);\n\tr = MulAdd(s3_2, M4(8.724e-03, 8.015e-02, 1.968e-02, -1.248e-02, -8.995e-02, 1.331e-01, -1.200e-01, -2.515e-02, -6.216e-02, 3.787e-02, -6.308e-02, 1.125e-02, -5.869e-02, -3.633e-02, -6.967e-02, -1.544e-02), r);\n\tr = MulAdd(s3_3, M4(1.343e-01, 2.496e-02, -1.764e-02, -2.927e-02, 6.824e-02, 1.185e-01, -4.921e-02, 1.657e-02, 9.625e-02, -8.617e-03, 4.970e-02, 1.233e-01, 1.569e-02, -1.895e-01, -4.864e-02, 2.237e-02), r);\n\tr = MulAdd(s3_4, M4(7.422e-02, 8.261e-02, 1.292e-02, 3.619e-02, 5.032e-03, 6.076e-02, 4.037e-02, -5.895e-02, 1.668e-01, -2.898e-02, 1.089e-01, -4.847e-02, -5.325e-03, -6.417e-02, 1.832e-01, 6.374e-02), r);\n\tr = MulAdd(s3_5, M4(-2.028e-01, 7.917e-02, -1.164e-01, 6.820e-02, 1.844e-01, -7.435e-02, 1.413e-01, -8.915e-02, 3.007e-02, -9.739e-03, -1.970e-02, 1.246e-02, 3.375e-02, 7.348e-02, -5.958e-03, 2.043e-02), r);\n\tr = MulAdd(s3_6, M4(7.156e-02, 4.010e-02, -1.883e-02, -1.154e-02, -6.288e-02, -1.291e-01, -6.146e-03, -5.936e-02, -1.177e-01, 3.663e-02, 4.254e-02, 2.737e-02, -2.011e-02, -1.161e-02, 2.790e-02, -9.127e-02), r);\n\tr = MulAdd(s3_7, M4(-5.564e-02, -1.684e-02, 6.531e-03, -1.219e-02, 1.358e-02, 7.495e-02, -7.805e-03, -1.208e-01, -2.593e-02, -3.261e-02, 4.597e-02, -2.609e-02, 1.406e-02, 5.211e-02, -2.130e-02, -3.469e-02), r);\n\tr = MulAdd(s3_8, M4(-6.137e-03, 3.430e-02, -2.481e-02, 9.161e-02, 3.659e-02, -9.274e-03, 1.206e-02, -3.099e-03, 1.999e-02, 1.012e-01, 1.704e-02, 6.203e-02, 1.089e-01, -1.184e-01, 5.553e-02, 2.902e-02), r);\n\tr = MulAdd(s4_0, M4(1.461e-02, -1.551e-01, -2.045e-01, -9.320e-02, 1.397e-02, -7.823e-02, -1.060e-02, 2.077e-02, 3.258e-02, 5.564e-03, -2.344e-02, -4.559e-02, 4.307e-02, 7.499e-02, -5.465e-03, -1.686e-01), r);\n\tr = MulAdd(s4_1, M4(-2.851e-02, -3.928e-02, 4.599e-02, -2.926e-02, 2.746e-02, 1.332e-01, -9.686e-02, 3.274e-02, -4.287e-02, -4.209e-02, -2.688e-02, -1.460e-01, -3.641e-03, 2.614e-02, -1.196e-01, 2.033e-03), r);\n\tr = MulAdd(s4_2, M4(-7.486e-02, 9.743e-03, 8.107e-02, 4.110e-02, 6.560e-02, -1.585e-02, 4.181e-02, 7.497e-04, -1.332e-02, -3.652e-02, -2.131e-01, 2.791e-02, 1.158e-01, 2.130e-02, 4.607e-02, -4.526e-02), r);\n\tr = MulAdd(s4_3, M4(3.577e-02, 1.180e-01, -1.284e-01, 1.409e-01, -3.428e-02, -1.468e-02, 2.435e-02, -1.144e-01, 7.831e-03, -2.041e-03, -4.198e-02, 4.532e-02, 1.086e-01, -1.578e-01, -3.489e-01, -1.284e-01), r);\n\tr = MulAdd(s4_4, M4(8.087e-02, -1.882e-01, -1.204e-01, 7.248e-02, 1.596e-02, -7.498e-02, -6.765e-02, -2.250e-01, 1.619e-01, -6.744e-02, 2.562e-01, 1.598e-01, 1.870e-01, 2.074e-02, 1.371e-01, -1.859e-02), r);\n\tr = MulAdd(s4_5, M4(-6.755e-03, -9.031e-02, 7.718e-02, 2.074e-02, -1.469e-01, -6.064e-02, -7.587e-02, -2.157e-02, -2.652e-02, -6.666e-02, 8.185e-02, 8.830e-02, -6.855e-03, -2.328e-04, -8.399e-03, 6.273e-03), r);\n\tr = MulAdd(s4_6, M4(9.535e-02, -8.699e-02, 6.513e-02, 1.189e-02, 2.226e-03, -6.388e-02, 2.262e-02, 8.386e-02, 2.201e-02, -7.890e-02, -1.358e-02, -6.582e-02, -4.518e-02, -1.899e-02, -3.881e-02, -7.528e-02), r);\n\tr = MulAdd(s4_7, M4(8.222e-02, 1.725e-02, 5.878e-02, 8.868e-02, 6.476e-03, -5.890e-02, 4.474e-02, -7.509e-03, 5.000e-02, -9.954e-02, 1.173e-02, 1.237e-01, 1.682e-01, 1.572e-01, -1.142e-01, 4.117e-02), r);\n\tr = MulAdd(s4_8, M4(7.252e-03, -6.196e-02, 8.715e-03, -5.785e-02, 7.157e-02, -8.942e-03, -2.105e-02, 4.087e-02, 3.523e-02, 1.719e-04, 1.897e-02, -4.083e-02, 9.964e-02, 3.833e-02, 8.276e-02, -4.575e-02), r);\n\tr = MulAdd(s5_0, M4(9.987e-02, 1.522e-01, -3.985e-02, -1.547e-01, -4.716e-02, -1.756e-01, 7.039e-02, -8.765e-02, 7.006e-02, -2.538e-02, -3.653e-02, 6.944e-02, -3.986e-02, 3.677e-03, -5.529e-02, 4.638e-02), r);\n\tr = MulAdd(s5_1, M4(7.532e-02, 8.089e-02, -1.424e-01, -5.129e-02, -2.033e-01, 2.939e-01, 1.290e-01, -1.441e-01, 1.903e-02, 2.039e-02, 3.890e-02, 9.281e-02, -8.341e-02, -2.442e-01, 1.805e-01, -6.189e-02), r);\n\tr = MulAdd(s5_2, M4(9.542e-02, 9.900e-03, 5.219e-02, 7.857e-03, -1.400e-02, 6.051e-02, -8.673e-03, -2.225e-03, 4.251e-02, 1.045e-01, -1.373e-01, -1.750e-02, -9.371e-02, -1.106e-02, 1.124e-02, -2.598e-02), r);\n\tr = MulAdd(s5_3, M4(-1.135e-01, 4.119e-02, -1.192e-01, -6.486e-02, 1.198e-01, 1.593e-01, -1.023e-01, 2.825e-02, 1.075e-02, -4.070e-02, 2.593e-02, 4.017e-04, 1.167e-02, -1.509e-01, -2.241e-02, 6.627e-02), r);\n\tr = MulAdd(s5_4, M4(-1.352e-01, 8.684e-02, -9.081e-02, 1.318e-02, 2.321e-01, 1.925e-02, 4.704e-02, -4.626e-02, 1.427e-01, -2.476e-02, 1.993e-01, -1.589e-01, 8.974e-02, -1.029e-01, 2.140e-01, 1.650e-01), r);\n\tr = MulAdd(s5_5, M4(-1.082e-02, 2.109e-02, 2.120e-02, -1.738e-02, -5.482e-02, -8.325e-02, -1.201e-01, 7.260e-02, 1.420e-01, -1.273e-01, 3.075e-02, -5.140e-02, 2.211e-02, -1.099e-01, 2.451e-03, -3.116e-02), r);\n\tr = MulAdd(s5_6, M4(-1.259e-01, -3.762e-02, -2.236e-02, 8.611e-03, 6.435e-03, -9.660e-03, 4.382e-02, -7.011e-02, 2.592e-03, -4.034e-02, 1.003e-02, -3.352e-02, -3.696e-02, -9.924e-02, -3.357e-02, -8.388e-02), r);\n\tr = MulAdd(s5_7, M4(-8.994e-02, 4.535e-02, 1.292e-01, 2.478e-02, 7.344e-02, -6.045e-03, -2.870e-02, -3.708e-02, 3.571e-03, -7.399e-02, 5.175e-02, -6.299e-02, 1.470e-01, 2.108e-02, 1.206e-01, -7.442e-02), r);\n\tr = MulAdd(s5_8, M4(5.749e-02, -7.397e-02, 2.704e-02, -8.600e-02, 3.798e-02, 8.833e-02, -2.785e-01, -5.148e-02, 1.037e-01, 3.420e-02, 5.157e-03, -4.084e-02, 1.466e-02, 5.439e-02, -1.119e-01, -7.561e-03), r);\n\tr = MulAdd(s6_0, M4(2.742e-02, -6.494e-02, -4.966e-02, 1.804e-02, 2.692e-02, 2.641e-02, 9.796e-02, -1.535e-02, 7.345e-02, -4.529e-02, 3.403e-02, -6.150e-02, -5.188e-01, -1.514e-01, 2.775e-01, -2.474e-01), r);\n\tr = MulAdd(s6_1, M4(-2.972e-02, 1.199e-01, 1.224e-01, -8.796e-02, -8.309e-04, -1.016e-01, 7.922e-02, -2.243e-02, 6.198e-02, 2.305e-01, -1.473e-02, 1.081e-03, -1.955e-01, -4.880e-01, -1.037e-01, -1.343e-01), r);\n\tr = MulAdd(s6_2, M4(-7.005e-02, 1.528e-01, 3.989e-02, -4.230e-03, 1.467e-02, 2.213e-02, 7.629e-03, 7.286e-02, 6.699e-02, -4.735e-02, 4.664e-02, -5.761e-02, -2.448e-01, 4.807e-02, 1.443e-01, 1.173e-01), r);\n\tr = MulAdd(s6_3, M4(-4.551e-02, 1.228e-01, 8.698e-03, -7.878e-02, 1.082e-01, 5.290e-02, 1.432e-02, 8.177e-03, -4.298e-02, -4.812e-02, -6.579e-02, 4.557e-04, 4.737e-01, 2.855e-01, -2.542e-02, -5.632e-02), r);\n\tr = MulAdd(s6_4, M4(4.002e-02, 1.973e-01, -9.862e-02, -5.884e-02, 1.733e-01, 6.369e-02, -7.105e-02, -8.774e-03, -1.410e-01, -1.482e-02, -1.963e-01, 9.780e-02, 3.215e-01, -1.311e-01, -2.946e-01, 7.310e-02), r);\n\tr = MulAdd(s6_5, M4(9.056e-02, 5.977e-02, 2.272e-02, -8.342e-04, -6.023e-02, -2.184e-03, -4.654e-02, -2.816e-02, 3.157e-02, -1.729e-01, -9.960e-02, -6.080e-02, 5.023e-01, 3.177e-01, 3.157e-01, 5.138e-02), r);\n\tr = MulAdd(s6_6, M4(2.325e-02, -5.307e-03, 5.136e-02, 6.784e-02, -2.850e-03, -5.042e-03, -6.052e-02, 9.778e-02, 1.223e-01, -7.348e-02, -2.520e-02, -6.094e-02, 5.661e-02, -4.876e-01, 1.305e-01, 1.261e-01), r);\n\tr = MulAdd(s6_7, M4(6.601e-02, 3.159e-02, -4.271e-02, -2.147e-02, -1.041e-01, -9.329e-02, 7.523e-02, 5.455e-02, -1.355e-01, 1.018e-01, 3.088e-02, 1.566e-02, -3.210e-01, -4.737e-01, -1.933e-01, 3.030e-01), r);\n\tr = MulAdd(s6_8, M4(-1.088e-02, -4.249e-03, -5.350e-02, 1.114e-02, -2.212e-02, 2.213e-02, -7.774e-02, -2.154e-04, 9.930e-03, 4.165e-02, 4.084e-02, -1.120e-01, -1.455e-01, 1.165e-01, 2.067e-01, 2.070e-01), r);\n\tr = MulAdd(s7_0, M4(1.044e-02, -6.727e-02, -4.017e-02, 1.033e-01, -9.177e-02, 3.331e-02, 6.122e-02, -5.224e-02, -5.090e-03, -4.668e-02, -5.551e-02, 9.474e-02, -9.753e-03, 1.037e-02, 8.602e-03, -2.863e-02), r);\n\tr = MulAdd(s7_1, M4(7.762e-02, 1.322e-01, 3.840e-02, -1.186e-01, -4.493e-02, -7.851e-02, 1.150e-01, -9.820e-02, 1.233e-01, 6.101e-03, -5.135e-02, -8.499e-02, -8.867e-03, 5.269e-02, 2.433e-02, 2.043e-02), r);\n\tr = MulAdd(s7_2, M4(-2.944e-02, -4.536e-02, 1.101e-01, 5.716e-02, -2.883e-03, -1.386e-01, -3.786e-02, 1.342e-01, 1.657e-03, 8.720e-02, 4.810e-02, -4.211e-02, 2.582e-02, -2.044e-02, 4.881e-02, 1.751e-02), r);\n\tr = MulAdd(s7_3, M4(-2.891e-02, 2.374e-02, -1.471e-01, -1.000e-01, 1.052e-01, 1.472e-01, -3.824e-02, 1.123e-01, -1.409e-02, 1.099e-02, 3.039e-03, 2.359e-02, -3.325e-03, -1.590e-02, 5.841e-03, 6.255e-03), r);\n\tr = MulAdd(s7_4, M4(-7.364e-02, 4.827e-02, -1.356e-01, -2.224e-01, 2.287e-01, -1.602e-01, -2.252e-01, -1.203e-02, -1.392e-01, 1.150e-01, -2.736e-01, 2.918e-02, 2.921e-02, 9.439e-02, -3.142e-02, 1.954e-02), r);\n\tr = MulAdd(s7_5, M4(-4.423e-02, -1.939e-01, -1.404e-02, 1.489e-01, 2.856e-02, 4.562e-02, 1.123e-01, 3.050e-02, 7.547e-02, 1.469e-01, -4.395e-02, 4.094e-02, 2.145e-02, 4.439e-02, -4.958e-02, 2.650e-02), r);\n\tr = MulAdd(s7_6, M4(2.550e-02, -1.502e-01, 6.659e-02, -3.936e-02, -8.184e-02, -5.807e-02, 2.311e-01, -5.460e-02, 2.067e-03, -1.785e-02, -8.422e-03, -1.067e-01, 1.877e-02, 3.037e-02, -8.897e-04, 1.152e-01), r);\n\tr = MulAdd(s7_7, M4(-2.983e-02, -2.250e-01, 9.011e-02, -2.115e-01, -1.220e-01, -1.328e-01, -5.793e-02, -1.087e-01, 2.961e-03, 4.061e-02, -2.935e-02, 1.711e-02, 4.291e-02, 3.807e-02, -5.370e-02, 2.247e-02), r);\n\tr = MulAdd(s7_8, M4(-4.709e-02, -6.844e-03, -1.067e-01, 9.606e-02, -4.139e-02, 5.400e-02, 6.785e-02, 2.060e-02, 1.034e-02, 1.440e-02, -3.056e-02, -4.364e-02, -5.640e-02, -2.057e-03, -3.250e-02, 5.321e-02), r);\n\treturn r;\n}\n\nvoid Pass14(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 15\n//!DESC conv14\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.156e-02, -9.983e-03, -9.430e-03, 1.703e-02 };\n\tr = MulAdd(s0_0, M4(4.520e-02, 9.061e-03, 7.165e-03, -5.094e-02, -1.655e-02, 4.687e-02, -6.105e-02, 3.508e-02, -1.043e-01, 2.113e-01, 4.505e-03, 8.240e-02, -4.876e-02, -9.482e-02, -7.693e-02, 1.161e-01), r);\n\tr = MulAdd(s0_1, M4(4.078e-02, 1.289e-02, -8.984e-04, 3.727e-04, 4.315e-02, 1.979e-02, 2.196e-02, 9.723e-03, 8.258e-02, -1.150e-01, 5.587e-02, -2.661e-02, 3.970e-02, -8.844e-02, -1.401e-01, -3.586e-02), r);\n\tr = MulAdd(s0_2, M4(1.090e-01, 4.265e-02, 2.487e-02, 7.634e-03, 5.478e-02, 9.598e-03, 5.827e-04, 8.746e-03, -9.220e-02, 5.258e-03, -1.203e-03, 3.657e-02, -1.666e-01, 1.389e-01, -1.942e-01, 3.285e-02), r);\n\tr = MulAdd(s0_3, M4(-1.605e-02, 1.765e-02, -2.930e-02, 5.127e-02, 1.461e-01, 5.289e-02, 9.307e-02, -3.053e-02, -1.241e-02, 5.344e-02, 1.463e-01, -1.771e-03, -7.651e-02, -2.550e-01, -6.467e-02, 1.428e-01), r);\n\tr = MulAdd(s0_4, M4(-2.380e-02, -1.061e-01, -7.748e-02, 6.133e-02, -3.672e-03, 3.549e-02, 1.001e-01, 7.683e-02, 9.351e-02, 1.099e-01, 1.646e-02, -1.912e-01, -2.428e-01, 1.356e-01, -2.369e-01, -1.945e-01), r);\n\tr = MulAdd(s0_5, M4(7.313e-02, 1.045e-01, 2.327e-02, 2.226e-02, -1.120e-01, 2.471e-03, -9.548e-02, -5.460e-02, -4.372e-02, -6.836e-03, 3.352e-02, -3.382e-02, -1.532e-01, -9.464e-02, -4.272e-02, -5.013e-02), r);\n\tr = MulAdd(s0_6, M4(-9.837e-03, -1.886e-02, -3.552e-02, 2.822e-02, -3.780e-02, 4.716e-02, 5.778e-03, 1.144e-02, -5.002e-02, -1.351e-01, -5.085e-02, 8.309e-03, -6.870e-02, -3.705e-02, -3.342e-02, 1.377e-01), r);\n\tr = MulAdd(s0_7, M4(-2.443e-02, 6.948e-02, -2.911e-02, 3.220e-02, 3.894e-02, 2.226e-03, -5.461e-02, -3.934e-03, 2.554e-02, 1.352e-01, 5.141e-02, 1.554e-02, -1.683e-01, -5.017e-02, -1.017e-01, 6.619e-02), r);\n\tr = MulAdd(s0_8, M4(-3.691e-03, 2.178e-02, -3.334e-02, -1.720e-02, 2.287e-02, -3.840e-03, -1.644e-02, 7.498e-03, 2.399e-02, -4.482e-03, 7.416e-02, 9.260e-02, -1.417e-02, 4.232e-02, -2.408e-02, 2.538e-02), r);\n\tr = MulAdd(s1_0, M4(9.408e-02, 1.775e-02, 9.153e-02, -9.538e-02, -3.261e-02, -2.224e-01, 4.754e-03, 1.990e-02, 4.197e-02, -7.009e-02, 4.511e-02, -6.852e-02, -8.372e-02, -2.756e-02, -5.055e-02, 9.655e-02), r);\n\tr = MulAdd(s1_1, M4(1.575e-01, -3.467e-01, 1.024e-01, -1.172e-01, -1.326e-01, 1.287e-01, -1.606e-01, -7.318e-02, 1.028e-01, 8.486e-02, 1.902e-01, 3.564e-02, -3.728e-02, -5.029e-02, -1.036e-01, -3.348e-02), r);\n\tr = MulAdd(s1_2, M4(-6.901e-02, 1.075e-01, -1.412e-01, -1.619e-01, 4.286e-02, 1.851e-02, -3.348e-02, 2.328e-02, -1.746e-02, -1.882e-01, 7.348e-02, -3.591e-02, -1.307e-01, 4.958e-02, -4.621e-02, 2.819e-02), r);\n\tr = MulAdd(s1_3, M4(-8.378e-02, -2.983e-02, -1.650e-01, 1.058e-01, -4.490e-02, -4.505e-02, -1.475e-01, 4.760e-02, 1.118e-01, -1.117e-01, 8.818e-02, 1.330e-01, -5.398e-02, -8.459e-02, -2.726e-02, 1.897e-02), r);\n\tr = MulAdd(s1_4, M4(-9.076e-02, -1.981e-01, -3.018e-01, 3.338e-01, 1.259e-01, 2.661e-01, -3.924e-01, 1.243e-01, -5.296e-02, 5.934e-02, 3.021e-02, 1.854e-01, -1.158e-01, -3.895e-02, -1.878e-01, -2.013e-02), r);\n\tr = MulAdd(s1_5, M4(1.515e-01, 2.450e-01, 1.439e-01, -9.116e-02, 1.503e-01, -4.574e-02, 8.095e-04, 2.724e-02, 9.322e-02, -7.895e-02, 9.896e-02, 1.443e-02, -6.188e-02, 1.225e-02, -1.009e-01, 8.640e-02), r);\n\tr = MulAdd(s1_6, M4(-5.459e-02, -2.330e-02, 6.539e-02, -9.657e-02, -3.381e-02, -8.115e-02, -1.265e-01, -9.178e-02, -2.206e-02, -2.231e-02, 5.822e-02, 9.318e-02, -2.048e-02, 2.159e-02, -2.368e-02, 1.695e-02), r);\n\tr = MulAdd(s1_7, M4(7.189e-02, -2.730e-02, -3.870e-02, 7.726e-03, 3.076e-02, -4.018e-02, -2.288e-01, -1.779e-02, -6.300e-02, 5.290e-02, 5.645e-02, 2.506e-03, 2.425e-04, -1.690e-02, -2.466e-02, -1.409e-02), r);\n\tr = MulAdd(s1_8, M4(-2.173e-02, 8.077e-02, 7.793e-02, 6.126e-02, 4.669e-02, -1.724e-01, 3.943e-02, 5.754e-02, -1.738e-03, 2.877e-02, -1.084e-01, 2.391e-02, 1.628e-04, 5.397e-02, 2.224e-02, -8.554e-03), r);\n\tr = MulAdd(s2_0, M4(-4.331e-03, -5.867e-02, -3.177e-02, 6.613e-02, 9.585e-02, -7.778e-02, -2.847e-02, 7.286e-02, 1.227e-02, -2.133e-02, 2.420e-02, -6.251e-02, 6.880e-02, -3.772e-02, -3.381e-02, -4.090e-02), r);\n\tr = MulAdd(s2_1, M4(-1.133e-02, 5.064e-02, -1.051e-01, 3.497e-02, 1.026e-01, 1.407e-02, 1.533e-01, -4.692e-02, -1.064e-01, 1.273e-01, 1.226e-01, 4.135e-02, 7.598e-03, -3.096e-01, 1.763e-01, -7.671e-02), r);\n\tr = MulAdd(s2_2, M4(2.982e-02, -2.636e-02, -6.052e-03, 1.350e-02, -1.630e-02, 6.478e-02, 1.856e-01, -1.314e-01, 9.092e-02, 1.019e-02, 6.708e-02, 2.351e-02, -4.831e-03, -1.038e-01, 5.885e-02, 7.098e-02), r);\n\tr = MulAdd(s2_3, M4(1.248e-01, -6.314e-02, -4.520e-02, 4.632e-02, 2.206e-02, 7.499e-03, 6.513e-02, 1.149e-02, 4.001e-02, 8.358e-02, 9.838e-02, -1.446e-01, -1.403e-01, 4.578e-02, 1.191e-01, 1.155e-02), r);\n\tr = MulAdd(s2_4, M4(-1.180e-01, 6.489e-02, -3.881e-02, -7.020e-02, 2.950e-01, 5.144e-02, 5.632e-02, 2.020e-01, -2.347e-01, -1.468e-01, 1.400e-02, -9.934e-02, -8.827e-02, 4.938e-02, 1.991e-01, -2.667e-01), r);\n\tr = MulAdd(s2_5, M4(-1.132e-02, -1.172e-01, 4.511e-02, -7.538e-03, 1.501e-01, 4.288e-02, 7.285e-02, 8.796e-02, -1.319e-02, -6.738e-03, -1.969e-02, 2.739e-02, -9.828e-02, -3.924e-01, -6.699e-02, 8.011e-02), r);\n\tr = MulAdd(s2_6, M4(-1.414e-01, 1.814e-02, -1.186e-03, -1.490e-02, -3.390e-02, 2.791e-02, -1.435e-02, 3.310e-02, 3.829e-02, -2.508e-02, 2.153e-02, 1.156e-02, 3.513e-02, 9.952e-03, 1.705e-02, 4.052e-02), r);\n\tr = MulAdd(s2_7, M4(-7.547e-02, 7.771e-03, 5.824e-02, -1.556e-02, -6.012e-03, 2.857e-02, -4.784e-03, -3.217e-02, -4.018e-02, 4.216e-02, -6.089e-02, 6.490e-02, 1.298e-01, -7.631e-02, 5.301e-02, -1.944e-02), r);\n\tr = MulAdd(s2_8, M4(-6.371e-02, -1.356e-02, -1.181e-02, -1.188e-02, -5.207e-03, -1.543e-02, -1.549e-02, -1.720e-02, 3.732e-02, 8.105e-03, -6.487e-02, -1.049e-01, 5.857e-02, -7.736e-02, -1.105e-01, 9.924e-03), r);\n\tr = MulAdd(s3_0, M4(1.502e-02, 2.684e-02, -1.408e-02, 3.120e-02, 9.221e-02, -2.707e-02, 5.912e-02, 1.144e-02, -1.262e-02, 1.442e-02, -1.448e-02, -6.457e-03, -1.292e-02, -3.652e-02, 3.969e-02, 2.617e-02), r);\n\tr = MulAdd(s3_1, M4(-1.324e-01, 4.015e-02, 9.011e-02, -6.464e-02, 1.221e-01, 1.459e-01, 1.162e-01, -1.016e-01, 9.380e-02, 7.543e-02, 9.329e-02, 5.384e-02, 2.409e-03, -7.853e-02, -7.205e-02, 2.276e-02), r);\n\tr = MulAdd(s3_2, M4(4.667e-02, -7.248e-02, 4.400e-02, -2.877e-02, 1.212e-01, -1.721e-01, 9.711e-02, -6.876e-02, 9.737e-02, 4.954e-03, -1.006e-02, 6.376e-03, -6.289e-02, 1.046e-01, -2.945e-02, 4.816e-03), r);\n\tr = MulAdd(s3_3, M4(1.090e-02, 5.755e-02, 4.615e-02, -1.015e-01, -9.423e-02, -2.077e-02, -3.823e-02, 6.670e-02, -5.715e-03, 1.179e-01, 3.552e-02, -1.993e-02, 4.955e-02, -4.377e-02, -1.386e-02, -2.830e-02), r);\n\tr = MulAdd(s3_4, M4(-3.189e-01, 1.007e-01, -1.225e-01, -2.353e-01, 1.082e-01, -1.464e-01, -1.124e-01, -5.875e-03, -3.078e-01, -1.370e-01, -4.142e-02, -1.133e-01, 6.690e-03, 3.615e-02, 1.928e-01, -7.727e-02), r);\n\tr = MulAdd(s3_5, M4(3.230e-02, -4.933e-02, 2.392e-02, 5.883e-03, 1.015e-02, 5.707e-02, -4.644e-02, -3.431e-03, 1.505e-02, -2.291e-02, 4.979e-02, 5.956e-02, -1.830e-01, -1.241e-02, -6.895e-03, -2.365e-01), r);\n\tr = MulAdd(s3_6, M4(-3.668e-03, -1.234e-02, -5.362e-02, -3.682e-02, -1.528e-02, -8.507e-03, -3.542e-02, 1.764e-02, -1.484e-02, -3.709e-02, 5.443e-02, 4.533e-02, -5.981e-03, -6.767e-04, 4.552e-02, 2.928e-02), r);\n\tr = MulAdd(s3_7, M4(-1.871e-03, 1.066e-01, 1.668e-01, 2.620e-02, 3.353e-02, -3.347e-02, -2.437e-02, -8.058e-02, -2.368e-03, -1.985e-02, -3.304e-02, 9.884e-02, 4.154e-02, 2.005e-02, 2.131e-03, 8.056e-03), r);\n\tr = MulAdd(s3_8, M4(-5.042e-03, -2.574e-05, 4.282e-02, -2.479e-03, -4.246e-02, 3.508e-02, 8.919e-03, -4.266e-02, -4.886e-04, -5.371e-02, -3.269e-02, -2.143e-02, 1.787e-02, -1.015e-01, -5.345e-02, -1.446e-02), r);\n\tr = MulAdd(s4_0, M4(-9.572e-02, 2.337e-02, -7.165e-02, -4.728e-02, 6.882e-02, -1.117e-01, -3.524e-03, 9.028e-02, 3.381e-02, -5.153e-02, 3.482e-02, 7.497e-03, -7.289e-02, 3.443e-02, -2.239e-02, -7.685e-02), r);\n\tr = MulAdd(s4_1, M4(1.020e-01, -1.108e-01, -8.442e-03, -5.390e-02, 1.077e-01, 3.672e-01, -1.139e-01, 6.457e-03, -1.226e-01, 3.169e-02, -2.123e-02, -1.163e-01, -2.036e-02, -4.896e-02, 8.310e-03, -5.898e-03), r);\n\tr = MulAdd(s4_2, M4(-5.486e-02, -4.220e-02, 1.462e-03, 2.205e-02, 1.165e-01, -7.539e-02, 4.054e-02, 2.338e-02, -1.018e-01, -3.474e-02, 3.885e-02, -2.415e-02, -3.153e-02, -1.360e-01, 1.864e-02, -5.074e-03), r);\n\tr = MulAdd(s4_3, M4(5.259e-02, 2.241e-02, 7.516e-02, -3.380e-02, -1.733e-01, -2.973e-03, -3.853e-02, 1.565e-01, 5.921e-02, -4.893e-02, 2.826e-02, -3.375e-02, -1.792e-02, -7.939e-02, 1.088e-01, -3.121e-03), r);\n\tr = MulAdd(s4_4, M4(6.188e-02, -8.176e-02, -7.622e-02, 7.011e-02, 4.541e-03, 9.299e-02, -9.473e-02, 2.367e-01, -5.478e-03, 3.866e-03, 2.117e-01, -2.372e-01, -8.894e-03, 2.171e-01, 3.491e-02, 1.617e-01), r);\n\tr = MulAdd(s4_5, M4(-4.379e-02, -1.588e-02, 5.588e-02, 6.287e-02, -5.315e-02, 3.877e-02, -7.158e-02, 4.891e-02, -5.016e-02, -1.108e-01, 5.351e-02, -5.953e-02, -7.411e-02, -6.710e-02, -2.914e-02, 3.205e-02), r);\n\tr = MulAdd(s4_6, M4(-7.663e-03, 9.218e-02, 6.042e-02, -1.563e-03, -7.020e-02, 1.212e-02, -3.199e-02, 9.813e-03, -4.041e-02, 6.082e-02, 9.936e-02, 3.931e-02, -1.277e-03, -7.841e-02, 1.318e-02, 7.572e-02), r);\n\tr = MulAdd(s4_7, M4(3.668e-02, -9.931e-02, 1.053e-01, -9.885e-03, 4.724e-02, -8.108e-02, -7.853e-02, -5.578e-02, 1.704e-02, 1.017e-01, 2.760e-02, -4.296e-02, -2.657e-02, 2.308e-02, -7.335e-02, 4.273e-02), r);\n\tr = MulAdd(s4_8, M4(5.012e-02, 1.806e-02, -4.231e-02, 1.013e-02, 7.312e-02, -4.376e-02, -4.732e-02, 3.329e-02, -4.193e-02, -7.620e-02, -1.200e-01, -3.128e-02, 6.742e-02, 3.106e-02, 8.698e-03, 1.523e-03), r);\n\tr = MulAdd(s5_0, M4(-1.065e-01, 4.137e-02, -1.773e-01, -2.320e-03, -1.468e-02, -8.848e-02, -6.165e-02, 3.390e-02, 7.447e-02, 6.137e-02, 1.329e-02, -4.660e-02, 1.301e-01, -5.199e-02, 2.477e-02, -3.378e-02), r);\n\tr = MulAdd(s5_1, M4(-1.872e-01, -2.124e-01, -2.401e-02, 4.330e-02, 8.121e-02, 1.337e-01, -1.342e-03, 4.743e-02, -2.453e-02, -9.993e-02, -3.550e-02, -6.161e-02, 1.301e-01, 2.105e-01, -5.685e-02, 7.897e-02), r);\n\tr = MulAdd(s5_2, M4(2.227e-03, -4.188e-02, -1.059e-02, -2.907e-02, -1.974e-02, -1.839e-02, -5.555e-02, -2.603e-02, 6.994e-03, 1.302e-01, 4.003e-02, 1.953e-02, 7.807e-02, 3.923e-02, 9.819e-03, -1.881e-02), r);\n\tr = MulAdd(s5_3, M4(5.839e-02, 1.733e-02, -1.987e-02, -4.801e-02, -1.187e-01, -4.304e-02, -3.163e-02, -3.404e-03, -1.042e-01, 9.301e-02, -6.772e-02, -1.653e-02, -1.270e-02, 7.968e-02, 3.777e-02, -6.998e-02), r);\n\tr = MulAdd(s5_4, M4(1.221e-01, -9.160e-02, 1.586e-02, 1.643e-01, -1.095e-02, 5.873e-02, 8.203e-03, 2.496e-02, -3.622e-02, -9.396e-02, 3.843e-02, 1.405e-01, -4.632e-02, -2.124e-02, 5.954e-02, -4.145e-02), r);\n\tr = MulAdd(s5_5, M4(1.068e-02, -1.200e-01, 1.693e-02, 6.453e-03, 1.618e-02, -8.935e-03, 1.501e-02, 1.059e-02, 1.518e-01, -5.564e-02, 8.039e-02, 1.901e-01, -7.955e-02, -5.667e-02, 1.806e-02, 1.921e-02), r);\n\tr = MulAdd(s5_6, M4(-8.751e-02, -1.101e-02, 6.480e-03, 4.478e-02, -2.982e-02, -1.486e-02, 2.435e-02, 2.169e-02, -1.068e-02, -2.210e-04, 1.688e-02, -2.216e-02, 9.956e-02, 5.408e-02, 1.172e-02, -9.444e-02), r);\n\tr = MulAdd(s5_7, M4(-1.755e-02, -3.678e-02, 8.716e-02, -2.128e-02, -1.422e-02, 4.511e-02, -4.518e-02, -9.332e-03, 4.277e-03, 4.233e-02, -2.754e-02, 2.549e-02, 1.461e-01, -1.102e-01, -4.402e-02, -9.835e-02), r);\n\tr = MulAdd(s5_8, M4(1.146e-02, 2.644e-02, -1.486e-02, -3.141e-02, 4.945e-02, -6.558e-02, -2.407e-02, 1.095e-02, 2.877e-02, -2.930e-02, -1.080e-01, 8.884e-02, -1.842e-02, 1.077e-01, -4.447e-02, -3.499e-02), r);\n\tr = MulAdd(s6_0, M4(1.392e-01, -1.479e-01, 1.441e-01, -1.314e-01, 9.271e-02, 4.641e-02, -1.609e-02, -4.029e-02, 1.813e-01, -1.382e-01, 1.622e-01, -2.597e-03, 7.643e-03, 4.263e-02, 4.371e-02, -1.623e-02), r);\n\tr = MulAdd(s6_1, M4(-8.154e-02, 1.029e-01, -8.564e-02, -2.568e-02, -2.019e-02, 5.061e-02, -4.032e-02, -9.548e-02, -2.244e-01, 2.325e-01, 6.855e-02, -1.146e-02, -4.743e-02, -1.411e-01, 6.163e-02, 8.083e-02), r);\n\tr = MulAdd(s6_2, M4(1.761e-01, 1.044e-01, 5.591e-04, 6.322e-02, 1.806e-01, -1.985e-02, -1.248e-03, -7.764e-02, 1.630e-03, 1.104e-01, 2.046e-02, -1.451e-02, -3.078e-02, 9.157e-03, 1.067e-02, 7.708e-02), r);\n\tr = MulAdd(s6_3, M4(-1.378e-01, -8.672e-02, -9.009e-02, 1.598e-01, -1.113e-01, 1.244e-01, 8.502e-02, -8.122e-02, -3.216e-02, -6.801e-02, -1.447e-01, 1.940e-01, -5.016e-02, -4.162e-03, 2.224e-02, 1.066e-02), r);\n\tr = MulAdd(s6_4, M4(-8.368e-02, -2.311e-02, 7.956e-02, -1.802e-01, -2.031e-01, 1.252e-01, -2.962e-01, -2.342e-01, -2.382e-01, 2.492e-01, 1.083e-01, 6.798e-03, -3.791e-02, -3.949e-02, 1.389e-01, 8.435e-02), r);\n\tr = MulAdd(s6_5, M4(-3.845e-02, 9.809e-02, 3.301e-02, -2.086e-02, 4.575e-02, -6.166e-02, -1.299e-02, -3.755e-02, 1.417e-01, -2.103e-01, 1.357e-01, 1.637e-01, -1.740e-02, -4.272e-02, -1.657e-02, -4.078e-02), r);\n\tr = MulAdd(s6_6, M4(6.272e-02, 9.681e-03, 4.013e-02, 4.030e-03, 1.786e-01, -9.018e-02, 7.949e-04, -1.558e-01, 7.173e-02, -1.150e-02, -3.239e-03, -1.407e-02, -1.486e-02, 1.438e-02, 1.303e-03, 1.205e-01), r);\n\tr = MulAdd(s6_7, M4(8.837e-02, -3.278e-05, 2.059e-02, 4.563e-02, 2.288e-01, -3.011e-02, 3.220e-02, -1.446e-01, 3.866e-02, 1.946e-01, -6.171e-02, 4.608e-02, -7.248e-03, -9.509e-02, -1.101e-01, 2.514e-02), r);\n\tr = MulAdd(s6_8, M4(6.715e-02, -3.799e-02, 1.233e-02, 3.845e-02, 4.095e-02, 1.035e-01, -7.094e-04, 1.179e-02, -5.727e-02, 7.091e-02, 1.233e-02, 3.150e-02, -1.288e-01, -6.140e-02, 3.551e-02, 1.475e-02), r);\n\tr = MulAdd(s7_0, M4(1.559e-02, -4.546e-02, -2.498e-02, -8.263e-03, -2.595e-02, 8.080e-02, 1.693e-02, -8.455e-03, 3.973e-02, 4.903e-02, -2.466e-02, -3.502e-02, 2.535e-02, -1.616e-02, 5.256e-02, 1.726e-02), r);\n\tr = MulAdd(s7_1, M4(6.141e-02, -1.139e-01, 9.047e-02, -1.018e-02, 1.799e-02, -2.033e-02, 5.764e-02, -2.952e-02, 2.253e-02, -2.111e-02, 2.504e-02, -4.482e-02, 4.218e-02, -1.337e-01, 4.234e-02, -1.179e-02), r);\n\tr = MulAdd(s7_2, M4(3.754e-02, 4.565e-02, 2.561e-02, 4.498e-04, 2.121e-02, -3.992e-02, 3.079e-02, -1.898e-02, 2.024e-03, 1.188e-02, 4.278e-02, -1.906e-02, -5.639e-02, 8.857e-02, -1.211e-02, -6.092e-02), r);\n\tr = MulAdd(s7_3, M4(3.959e-02, 6.645e-02, 4.770e-02, 6.584e-02, -1.431e-02, 6.619e-02, 3.308e-02, -2.684e-02, 5.084e-02, 1.619e-02, -3.862e-02, 6.822e-02, -8.166e-02, -8.542e-03, 3.875e-02, 5.607e-02), r);\n\tr = MulAdd(s7_4, M4(3.997e-03, -4.094e-02, 1.107e-01, 4.913e-02, -4.575e-02, 5.941e-03, -5.463e-02, -2.670e-02, 9.170e-02, -5.643e-03, -3.445e-02, -7.159e-03, 6.417e-02, -6.162e-02, 9.118e-02, 1.656e-02), r);\n\tr = MulAdd(s7_5, M4(3.627e-02, 4.509e-02, 1.639e-02, 4.892e-02, -1.727e-02, 5.673e-02, 1.879e-03, 1.862e-02, -5.158e-02, 3.773e-02, -9.557e-02, -4.059e-02, -1.096e-02, -6.294e-02, -9.984e-02, -4.299e-02), r);\n\tr = MulAdd(s7_6, M4(4.716e-02, 1.426e-02, -6.331e-03, 6.964e-02, -4.209e-02, 4.494e-02, -8.120e-03, -3.092e-02, 1.962e-02, -6.431e-02, -1.813e-02, 1.151e-02, -2.888e-02, -7.188e-02, -1.600e-02, 4.232e-02), r);\n\tr = MulAdd(s7_7, M4(-9.275e-03, 3.692e-02, 1.951e-02, 3.721e-02, -9.679e-03, -6.941e-02, 5.761e-02, -1.165e-01, 4.882e-03, 1.219e-01, -3.004e-02, -5.402e-03, -7.408e-03, -5.023e-02, -3.673e-02, 2.835e-02), r);\n\tr = MulAdd(s7_8, M4(2.414e-02, -1.292e-02, 7.358e-03, -1.921e-02, -6.249e-02, 8.742e-02, 3.769e-02, -2.660e-02, 2.220e-02, 4.532e-02, 1.897e-02, -5.224e-02, -4.258e-02, -6.833e-02, 6.953e-02, -4.832e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 8.595e-03, -1.310e-02, -3.312e-02, -2.644e-03 };\n\tr = MulAdd(s0_0, M4(4.276e-02, 3.292e-03, 4.991e-02, 1.294e-02, -2.029e-02, 5.556e-02, -3.299e-02, 2.250e-02, -3.107e-02, 1.075e-01, -4.560e-02, -7.375e-02, 8.055e-02, -4.802e-02, 1.061e-01, -7.426e-03), r);\n\tr = MulAdd(s0_1, M4(-1.422e-03, -5.646e-02, 9.268e-02, 4.075e-02, -3.098e-02, 2.911e-03, 9.203e-02, -2.840e-02, 2.220e-02, -5.553e-02, -1.990e-01, 4.259e-02, -4.396e-02, -4.299e-02, 6.749e-02, 6.026e-02), r);\n\tr = MulAdd(s0_2, M4(-5.280e-02, -5.906e-02, -1.509e-01, -4.675e-02, 1.426e-03, -1.100e-02, -2.137e-02, -6.311e-02, 3.037e-03, 3.620e-02, 1.628e-01, 1.833e-03, -1.729e-02, 1.082e-01, 3.468e-02, -4.741e-02), r);\n\tr = MulAdd(s0_3, M4(4.507e-02, -1.317e-02, -4.522e-03, -3.344e-02, -8.228e-02, -4.930e-02, 2.119e-02, 1.648e-01, -1.810e-01, -4.608e-02, -4.415e-02, 6.678e-02, -7.990e-02, -3.225e-02, 2.832e-02, 8.739e-02), r);\n\tr = MulAdd(s0_4, M4(5.128e-02, 9.946e-02, 9.086e-03, -2.913e-02, -6.700e-02, -2.583e-02, -3.194e-01, 1.770e-01, -1.268e-02, -8.137e-03, 3.033e-01, 1.250e-01, 2.784e-01, 1.067e-01, 3.498e-02, -4.576e-02), r);\n\tr = MulAdd(s0_5, M4(4.732e-03, -5.209e-02, -2.234e-02, 3.862e-03, 1.159e-02, 2.303e-02, 1.346e-01, -2.197e-02, -6.371e-03, -1.477e-02, 2.830e-02, -7.637e-02, -3.757e-02, -7.859e-02, 2.042e-02, -1.091e-02), r);\n\tr = MulAdd(s0_6, M4(6.354e-03, -3.975e-02, 2.362e-03, 2.314e-03, 6.096e-02, -2.846e-02, 4.908e-02, 1.946e-02, -3.325e-02, -3.436e-02, -6.850e-02, 2.433e-02, 3.478e-02, 1.909e-02, 4.114e-02, 1.673e-02), r);\n\tr = MulAdd(s0_7, M4(4.378e-02, -5.888e-03, -3.222e-02, -4.879e-02, 4.807e-02, 1.345e-02, 1.072e-01, 3.260e-02, -9.788e-02, 1.194e-01, 2.676e-03, 4.524e-02, -4.491e-02, -1.929e-02, 6.574e-02, 1.128e-03), r);\n\tr = MulAdd(s0_8, M4(-2.666e-02, -8.200e-03, -4.130e-03, -2.068e-02, 3.399e-02, 1.087e-02, -5.854e-04, -1.516e-02, 6.953e-02, -8.813e-02, -5.320e-02, 8.908e-03, -2.878e-02, -1.133e-02, 7.375e-02, -8.952e-03), r);\n\tr = MulAdd(s1_0, M4(-2.563e-02, -7.491e-02, -9.621e-03, -1.227e-01, -3.171e-02, -8.522e-02, 6.067e-02, 9.253e-02, -2.715e-02, -7.993e-02, 1.507e-01, 1.848e-02, 1.079e-02, -7.792e-02, 7.729e-02, -4.658e-02), r);\n\tr = MulAdd(s1_1, M4(1.892e-01, -3.155e-01, 1.893e-01, 3.392e-01, 3.614e-02, 4.659e-01, 1.033e-01, -1.887e-02, 4.401e-02, 6.167e-03, 2.962e-02, -8.396e-02, 2.313e-02, 1.164e-01, -3.696e-02, -5.339e-03), r);\n\tr = MulAdd(s1_2, M4(-9.636e-03, -8.526e-02, 4.554e-02, -1.826e-01, 2.461e-02, -3.144e-02, -4.324e-02, 1.182e-02, -6.682e-02, 1.107e-02, 1.519e-01, 2.678e-03, -6.869e-03, -9.399e-03, -1.718e-01, -2.958e-02), r);\n\tr = MulAdd(s1_3, M4(-4.291e-02, 4.962e-02, -1.813e-01, -1.020e-01, 9.803e-02, -9.502e-02, 1.171e-01, 1.104e-01, -3.743e-02, -4.506e-02, -1.147e-02, 6.518e-02, 1.088e-03, -1.364e-01, -1.902e-02, 4.867e-03), r);\n\tr = MulAdd(s1_4, M4(3.483e-01, -1.074e-01, -8.095e-02, 4.811e-01, -2.252e-01, -1.259e-02, -6.223e-02, 2.527e-02, 4.883e-02, -2.908e-02, -1.090e-01, -1.353e-01, 8.798e-02, 1.076e-01, 4.333e-02, -1.812e-01), r);\n\tr = MulAdd(s1_5, M4(1.269e-01, -9.028e-02, -1.876e-01, 7.151e-03, 1.090e-01, -1.186e-01, 1.518e-02, 1.353e-01, 1.843e-02, -3.524e-02, 4.887e-02, 7.737e-02, 3.845e-02, -2.931e-02, -5.800e-02, -3.861e-03), r);\n\tr = MulAdd(s1_6, M4(2.065e-02, -7.747e-02, -1.618e-01, 4.603e-02, -1.025e-01, 4.145e-02, -1.041e-02, -9.511e-03, 4.930e-02, -8.431e-02, -5.450e-02, 3.956e-02, 1.689e-02, 1.266e-02, -5.726e-02, -1.788e-02), r);\n\tr = MulAdd(s1_7, M4(-1.094e-01, -2.040e-01, -2.577e-01, 1.804e-01, 2.995e-01, 1.311e-01, 1.994e-01, 1.968e-01, -2.506e-02, 6.480e-02, 4.503e-02, -8.401e-04, 2.338e-02, -6.157e-02, 6.680e-03, -4.095e-02), r);\n\tr = MulAdd(s1_8, M4(5.983e-02, 4.815e-02, -6.628e-02, -7.729e-02, -1.298e-02, 1.405e-02, -4.417e-02, 1.491e-02, 4.179e-02, 1.836e-02, 2.254e-02, 3.150e-02, 3.149e-03, -9.375e-03, 3.689e-02, 5.557e-02), r);\n\tr = MulAdd(s2_0, M4(-8.824e-03, -9.181e-03, 1.247e-02, 3.677e-02, 5.064e-03, -2.996e-02, -7.275e-02, 2.607e-01, -4.401e-02, 2.083e-02, -8.657e-02, 1.279e-02, -7.093e-03, 1.259e-01, -8.790e-02, -2.425e-02), r);\n\tr = MulAdd(s2_1, M4(-3.213e-02, 7.979e-02, 3.086e-02, 2.087e-02, -1.761e-02, -4.059e-02, -2.408e-01, -5.827e-02, 2.238e-02, 1.286e-01, -3.605e-02, 3.392e-02, 1.497e-01, -2.942e-03, 1.615e-02, -1.117e-01), r);\n\tr = MulAdd(s2_2, M4(-3.316e-03, -7.754e-04, 1.906e-02, -3.301e-02, -6.677e-02, -9.814e-02, -2.373e-02, -3.117e-02, 2.255e-02, 2.341e-03, -3.144e-02, -1.664e-02, -5.039e-02, 1.212e-01, -1.224e-01, 1.795e-02), r);\n\tr = MulAdd(s2_3, M4(2.668e-02, -2.402e-02, -2.967e-02, -1.336e-02, -8.306e-02, -4.632e-02, 1.108e-02, 3.735e-02, -3.451e-02, 5.058e-02, 9.300e-02, 3.711e-02, 3.423e-02, -4.741e-02, -1.095e-02, -3.585e-02), r);\n\tr = MulAdd(s2_4, M4(1.100e-01, 7.056e-02, 8.282e-02, 1.530e-01, -2.870e-01, -1.375e-01, -9.497e-02, 2.027e-01, -1.328e-01, 8.856e-02, 6.696e-02, -2.361e-01, 7.305e-03, 1.722e-01, -2.136e-01, -1.850e-01), r);\n\tr = MulAdd(s2_5, M4(8.884e-03, -5.168e-02, -2.905e-02, 5.265e-04, -5.872e-02, -1.102e-01, -6.247e-02, 1.192e-02, 1.088e-02, 1.461e-02, 3.859e-02, 1.057e-01, -4.766e-02, -2.917e-02, -1.091e-01, 2.825e-02), r);\n\tr = MulAdd(s2_6, M4(5.104e-02, -1.285e-02, 3.879e-02, 5.841e-02, 1.865e-02, -2.791e-02, -6.057e-02, -2.473e-02, -1.034e-01, -2.275e-02, 7.575e-02, 8.749e-03, 9.533e-03, -4.123e-02, -4.295e-02, 3.354e-02), r);\n\tr = MulAdd(s2_7, M4(3.173e-02, -4.333e-02, -1.121e-02, 4.112e-02, -1.273e-01, -4.428e-02, 5.146e-02, 1.548e-01, 5.952e-02, 1.433e-01, 6.134e-03, -1.373e-01, -2.142e-02, 3.747e-02, -1.377e-01, -1.155e-01), r);\n\tr = MulAdd(s2_8, M4(-8.402e-04, 1.866e-02, -4.637e-02, 4.500e-02, 4.600e-02, 1.506e-02, 1.679e-02, 2.722e-02, -7.383e-02, -2.785e-02, -3.831e-02, -7.404e-02, -2.059e-02, 5.708e-02, -6.070e-02, 3.715e-02), r);\n\tr = MulAdd(s3_0, M4(-5.871e-02, -2.882e-02, -8.989e-02, 1.916e-02, -1.357e-03, -6.500e-02, 6.279e-02, 1.670e-01, -1.998e-02, 3.869e-02, -5.028e-02, 2.372e-02, 8.465e-03, -9.501e-02, 9.572e-03, 3.625e-02), r);\n\tr = MulAdd(s3_1, M4(7.759e-02, 2.860e-01, -4.943e-02, 1.303e-02, 9.473e-03, 1.482e-02, 8.304e-02, -1.259e-01, 1.394e-02, 1.905e-02, -4.888e-02, -8.349e-04, 7.359e-02, 1.769e-01, -7.259e-02, 5.760e-02), r);\n\tr = MulAdd(s3_2, M4(3.953e-02, -2.994e-02, -9.992e-02, 5.483e-02, 3.137e-02, -9.053e-02, 3.821e-02, -3.146e-02, 4.306e-02, -1.100e-01, -5.266e-02, 2.499e-02, 6.665e-03, 5.605e-02, -3.151e-02, -9.822e-02), r);\n\tr = MulAdd(s3_3, M4(-5.678e-02, -1.999e-02, 4.683e-03, 4.502e-02, 6.835e-02, -6.257e-03, 8.348e-02, -1.255e-01, -6.151e-02, 4.114e-02, 5.202e-02, -1.032e-01, -7.695e-03, -2.938e-02, -5.447e-02, -2.429e-02), r);\n\tr = MulAdd(s3_4, M4(6.987e-02, 2.668e-01, -5.651e-02, 8.007e-02, -1.721e-01, 8.798e-03, -2.829e-02, 6.085e-02, -5.505e-02, 2.291e-01, 3.556e-02, -9.195e-02, 4.035e-03, 8.894e-02, -1.989e-01, 1.181e-01), r);\n\tr = MulAdd(s3_5, M4(5.965e-02, -3.104e-02, -1.408e-01, 3.235e-02, 7.710e-02, 1.257e-01, 1.401e-01, -3.038e-02, -9.247e-04, -1.607e-01, -1.240e-01, 1.509e-01, -2.938e-02, 1.128e-01, 1.232e-01, 3.870e-03), r);\n\tr = MulAdd(s3_6, M4(-1.191e-01, 2.971e-02, 4.848e-02, -4.148e-02, 8.461e-02, -3.591e-02, -5.379e-02, -4.579e-02, -9.728e-02, -3.381e-02, 8.742e-02, 6.678e-02, 5.242e-02, -4.325e-02, -1.544e-02, 6.422e-03), r);\n\tr = MulAdd(s3_7, M4(-8.118e-02, -5.023e-02, -9.631e-02, 1.053e-01, -2.222e-01, -3.769e-02, -5.832e-02, -4.684e-03, -3.051e-02, 1.057e-01, -1.021e-01, -4.790e-02, 6.369e-02, 5.099e-02, -2.839e-02, -1.842e-02), r);\n\tr = MulAdd(s3_8, M4(4.156e-02, 1.869e-02, -1.280e-01, 7.942e-02, 2.336e-02, 6.081e-02, 2.017e-02, -2.476e-02, -1.121e-02, -3.994e-02, -2.009e-02, -3.126e-02, -8.150e-02, 1.338e-02, -1.150e-01, -1.282e-01), r);\n\tr = MulAdd(s4_0, M4(-6.037e-02, 1.656e-02, -7.948e-03, 1.622e-01, 5.929e-02, -3.813e-02, 9.060e-02, 1.889e-01, 4.751e-02, -2.354e-02, -6.490e-02, 3.297e-02, 9.593e-03, -3.460e-02, 4.031e-02, -7.292e-02), r);\n\tr = MulAdd(s4_1, M4(7.467e-02, -2.272e-01, -7.408e-03, -8.043e-02, 3.338e-02, -1.559e-01, 9.580e-02, -9.651e-02, 2.954e-02, 1.834e-01, 7.362e-02, 1.125e-01, 9.323e-03, -4.286e-02, 1.238e-01, -4.365e-02), r);\n\tr = MulAdd(s4_2, M4(1.466e-02, -1.622e-02, 5.112e-02, 5.212e-04, 1.046e-02, -5.693e-02, 1.186e-01, -4.618e-02, 2.398e-04, 2.288e-02, -1.616e-01, -6.572e-02, -5.077e-02, -5.950e-02, 4.100e-02, -5.900e-03), r);\n\tr = MulAdd(s4_3, M4(8.164e-02, -1.050e-02, 7.152e-02, 1.763e-01, 1.477e-02, 9.761e-02, 2.061e-01, -2.763e-01, -4.070e-02, -1.053e-02, -1.024e-01, 2.789e-03, 1.721e-02, -1.149e-01, -5.316e-02, 2.251e-01), r);\n\tr = MulAdd(s4_4, M4(-6.152e-02, -4.566e-02, 3.206e-02, -6.381e-02, 4.282e-02, 1.616e-01, -2.449e-02, 1.099e-01, 1.488e-02, 2.030e-02, -2.205e-01, -2.367e-02, -7.245e-03, 5.897e-02, -2.508e-02, -1.578e-01), r);\n\tr = MulAdd(s4_5, M4(-5.024e-02, 1.279e-01, 7.120e-02, 3.258e-03, 5.894e-02, 9.921e-02, 2.215e-01, 5.180e-02, 7.799e-02, 9.747e-02, 7.793e-02, -9.364e-03, -1.348e-02, -3.141e-02, -3.236e-02, 5.742e-02), r);\n\tr = MulAdd(s4_6, M4(9.676e-02, 3.061e-03, 3.606e-02, 8.734e-02, -1.257e-01, 2.836e-02, 7.202e-02, 2.260e-02, 5.660e-02, -4.800e-02, -2.797e-02, 1.071e-02, 9.543e-02, -5.729e-02, 9.324e-03, -1.327e-02), r);\n\tr = MulAdd(s4_7, M4(7.406e-02, -3.215e-02, 5.902e-02, 1.374e-02, -1.285e-01, -1.385e-03, -3.255e-02, -1.147e-01, -1.568e-02, 3.902e-02, -1.221e-02, 1.601e-02, 5.597e-02, -2.408e-02, 9.760e-02, 4.917e-02), r);\n\tr = MulAdd(s4_8, M4(-3.236e-02, 4.447e-02, 5.241e-02, -2.944e-02, -3.300e-02, -7.686e-02, 1.495e-01, 1.105e-02, 8.006e-02, -4.901e-03, -8.337e-02, 8.960e-02, -5.067e-02, -2.423e-02, 3.160e-03, -6.541e-02), r);\n\tr = MulAdd(s5_0, M4(-9.224e-03, -3.012e-02, 1.654e-02, -1.741e-02, 6.193e-02, 1.194e-02, -1.138e-01, 5.334e-02, 4.494e-02, 3.817e-02, -6.868e-02, -1.206e-01, 3.800e-02, -6.390e-02, -2.415e-02, 1.189e-01), r);\n\tr = MulAdd(s5_1, M4(1.780e-02, 2.528e-01, 2.053e-02, -2.688e-02, 2.794e-02, 9.420e-03, 3.903e-02, -2.132e-02, -2.308e-02, -1.706e-01, 2.881e-01, -9.967e-04, -7.117e-02, -1.004e-01, 1.655e-01, -2.542e-02), r);\n\tr = MulAdd(s5_2, M4(-9.963e-04, 2.048e-02, 1.102e-01, -2.183e-02, 5.955e-02, -4.351e-02, 2.002e-02, 3.162e-02, -3.611e-02, -1.422e-02, -8.736e-02, 4.948e-02, 1.035e-03, -6.009e-02, -7.072e-02, -4.935e-04), r);\n\tr = MulAdd(s5_3, M4(-1.619e-02, -4.737e-02, 3.625e-03, 2.913e-02, -5.581e-02, -6.796e-02, 1.227e-02, 7.568e-03, 2.369e-02, 8.190e-03, -2.758e-02, -2.920e-02, 8.449e-02, 6.266e-02, -1.172e-01, 3.430e-03), r);\n\tr = MulAdd(s5_4, M4(-7.080e-02, -1.188e-01, -4.568e-02, -9.712e-02, 3.748e-02, -1.157e-02, -5.191e-02, 1.316e-02, 6.758e-02, -1.323e-01, -8.590e-03, -1.927e-01, -8.623e-02, 1.222e-01, -1.296e-01, -4.125e-02), r);\n\tr = MulAdd(s5_5, M4(-3.687e-02, 5.063e-02, 5.207e-02, -6.672e-04, 8.033e-03, 1.983e-02, -1.978e-02, 1.045e-01, -2.183e-02, -4.931e-02, 2.080e-02, 4.839e-02, 1.567e-02, 1.159e-02, 2.069e-03, 3.931e-02), r);\n\tr = MulAdd(s5_6, M4(5.989e-02, -5.406e-02, 8.648e-02, 3.946e-02, -2.754e-02, -8.323e-02, 2.472e-03, 1.602e-02, -2.517e-02, -2.794e-02, -8.966e-03, 3.794e-02, 3.412e-02, 9.293e-02, -1.335e-01, -9.274e-02), r);\n\tr = MulAdd(s5_7, M4(9.180e-02, 3.718e-02, 2.621e-02, -2.298e-03, -1.593e-02, 3.107e-02, -1.137e-02, 3.554e-02, -5.966e-02, 5.259e-02, 1.049e-02, -4.814e-02, -2.135e-01, -5.053e-02, -1.286e-02, -1.475e-01), r);\n\tr = MulAdd(s5_8, M4(-8.856e-03, -1.193e-02, 4.319e-02, -6.940e-03, -9.507e-03, -3.423e-03, -2.602e-02, 2.562e-02, -4.796e-02, 2.255e-02, 2.904e-02, 7.446e-02, -5.113e-03, 7.435e-02, 8.579e-02, 4.102e-02), r);\n\tr = MulAdd(s6_0, M4(4.389e-02, -1.258e-01, 2.059e-02, 2.629e-01, 4.985e-03, 2.844e-02, -9.665e-02, 5.919e-02, 3.232e-02, -1.705e-01, 1.044e-03, 2.950e-02, 3.746e-02, 3.500e-02, 7.514e-02, 4.464e-03), r);\n\tr = MulAdd(s6_1, M4(7.756e-02, 8.989e-02, -3.914e-03, -7.133e-02, 1.374e-02, -4.715e-03, 9.700e-02, -5.065e-02, -8.952e-03, 4.056e-02, -9.037e-02, 3.634e-02, -1.191e-02, -1.558e-01, 1.932e-01, 4.759e-02), r);\n\tr = MulAdd(s6_2, M4(6.396e-02, -2.024e-01, -5.218e-02, -1.168e-02, 3.868e-03, -1.990e-02, -3.047e-02, 4.044e-02, -2.089e-02, -5.308e-02, -9.645e-02, 5.635e-03, -5.880e-02, -4.208e-02, 1.858e-01, 1.659e-02), r);\n\tr = MulAdd(s6_3, M4(-1.069e-01, 4.536e-02, -7.838e-02, -1.381e-01, -2.307e-02, -1.687e-02, 4.232e-02, 4.459e-02, -1.205e-01, -1.834e-01, 6.953e-02, -3.404e-01, 5.913e-02, -7.332e-02, 1.579e-01, 6.973e-02), r);\n\tr = MulAdd(s6_4, M4(-1.341e-01, 6.876e-02, 8.401e-03, 7.779e-02, 2.819e-02, 3.532e-01, -5.884e-02, 3.457e-02, -5.755e-02, 1.192e-01, 3.875e-01, -2.875e-01, 4.455e-02, 6.725e-02, 3.007e-02, 3.482e-02), r);\n\tr = MulAdd(s6_5, M4(1.390e-03, 1.684e-02, -3.724e-02, 5.731e-02, 1.727e-02, -3.421e-03, -3.177e-02, 5.035e-02, 8.179e-02, -1.725e-01, -2.584e-02, 7.276e-02, 1.489e-01, -1.704e-03, 8.725e-02, -6.646e-04), r);\n\tr = MulAdd(s6_6, M4(-8.179e-02, 3.857e-02, -5.471e-02, 4.253e-02, -5.446e-02, 8.346e-02, -5.433e-02, 1.508e-01, -9.701e-02, -1.837e-02, 2.487e-02, -3.024e-02, 1.529e-01, -1.409e-02, 5.809e-02, -6.421e-02), r);\n\tr = MulAdd(s6_7, M4(-1.585e-01, -3.170e-02, -1.190e-01, -5.164e-02, 1.605e-02, -6.011e-03, -1.041e-01, -1.551e-02, 2.374e-02, 1.426e-01, 1.592e-01, -1.714e-01, 1.089e-02, 5.988e-02, 3.814e-02, 1.214e-02), r);\n\tr = MulAdd(s6_8, M4(-7.375e-02, 8.089e-02, 4.910e-02, 1.020e-02, 5.646e-03, -1.113e-02, -1.495e-02, 2.421e-02, 4.807e-02, -9.493e-02, 8.929e-02, -2.548e-02, 8.632e-02, 4.068e-02, -1.793e-02, -6.503e-03), r);\n\tr = MulAdd(s7_0, M4(-5.631e-02, 1.109e-01, -1.101e-01, 4.318e-02, -7.555e-03, 3.286e-02, 4.230e-03, -9.658e-04, 2.501e-02, 5.393e-02, -1.639e-02, -4.477e-02, 1.108e-02, -3.988e-02, 7.409e-02, -8.132e-02), r);\n\tr = MulAdd(s7_1, M4(-1.264e-02, 3.910e-02, -4.864e-02, 8.381e-02, 7.497e-03, 6.824e-03, 5.936e-02, 2.502e-03, -5.776e-02, -5.663e-02, -2.980e-02, -1.511e-02, 2.048e-02, -1.101e-01, 7.526e-02, 6.164e-02), r);\n\tr = MulAdd(s7_2, M4(-7.927e-03, -5.440e-02, -4.622e-02, -1.667e-02, 1.467e-03, -4.640e-02, 3.214e-02, 6.492e-03, -3.743e-02, 1.046e-01, 6.501e-03, 2.285e-02, 2.592e-02, 3.474e-02, 1.183e-01, -1.976e-02), r);\n\tr = MulAdd(s7_3, M4(3.091e-02, -7.652e-02, -1.263e-01, 3.743e-02, -8.994e-02, 8.575e-02, 5.046e-03, -1.179e-02, 1.578e-03, -7.156e-02, 3.312e-02, -1.918e-02, -5.160e-03, -9.209e-02, 1.189e-01, -8.571e-02), r);\n\tr = MulAdd(s7_4, M4(-6.698e-02, -7.674e-02, -6.401e-02, 8.097e-03, 1.107e-03, 7.725e-02, 5.622e-02, 1.300e-01, -4.175e-02, 1.169e-01, -1.043e-01, -1.587e-02, -1.078e-02, 4.202e-02, -7.352e-02, -2.581e-02), r);\n\tr = MulAdd(s7_5, M4(-3.235e-02, -4.669e-03, -9.562e-02, 4.169e-02, 3.150e-02, 3.311e-02, 7.651e-02, -2.521e-02, -4.377e-03, 1.004e-01, 6.654e-02, -6.585e-02, 7.707e-02, 5.189e-02, 1.077e-01, -3.349e-02), r);\n\tr = MulAdd(s7_6, M4(3.353e-02, -2.998e-02, -5.213e-02, -1.200e-02, 5.783e-03, 1.861e-02, 6.618e-02, -1.388e-02, -2.233e-02, -3.001e-03, 8.674e-02, -1.458e-03, 2.875e-02, 3.304e-02, 3.299e-02, -1.312e-01), r);\n\tr = MulAdd(s7_7, M4(4.818e-02, 2.206e-02, 4.522e-02, -2.785e-02, -9.122e-02, -1.578e-02, 8.113e-02, 1.068e-01, -1.008e-02, -6.218e-02, 8.925e-02, 2.618e-02, -3.574e-02, 2.934e-02, 5.164e-02, 7.347e-03), r);\n\tr = MulAdd(s7_8, M4(-4.466e-02, 2.015e-02, -4.114e-02, -1.581e-02, 1.891e-02, 1.774e-02, -2.226e-02, -1.056e-02, -4.274e-02, -2.640e-02, 2.741e-02, -2.143e-02, -1.275e-02, 6.932e-03, -2.697e-03, -1.463e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.619e-02, 2.435e-02, 1.969e-02, 4.142e-03 };\n\tr = MulAdd(s0_0, M4(1.614e-02, -1.005e-02, -6.784e-04, 7.722e-03, -3.042e-02, -1.959e-02, -3.936e-02, 5.703e-02, 8.608e-02, 4.361e-02, 1.607e-02, -2.982e-02, 2.736e-02, 5.653e-02, -3.001e-02, 1.120e-01), r);\n\tr = MulAdd(s0_1, M4(-7.235e-02, 6.935e-04, 1.750e-02, -2.335e-02, -5.189e-02, -2.955e-02, -1.816e-02, 5.784e-02, 4.978e-02, -6.952e-02, 7.076e-02, 5.682e-02, -7.723e-02, -6.976e-03, -5.206e-02, 3.530e-02), r);\n\tr = MulAdd(s0_2, M4(5.367e-02, 1.343e-02, 3.025e-02, 1.073e-02, 3.161e-02, -2.087e-02, 9.620e-03, 2.695e-02, -4.723e-02, -4.379e-03, -7.545e-02, 5.364e-02, 8.785e-02, 1.200e-01, 4.003e-02, 5.509e-02), r);\n\tr = MulAdd(s0_3, M4(-4.535e-02, 3.388e-02, 2.809e-02, 1.864e-02, -2.166e-02, -3.582e-03, -1.579e-02, 8.943e-02, -6.513e-02, 6.274e-02, -5.861e-02, 7.508e-02, 1.783e-01, 3.014e-02, 2.979e-02, -2.050e-02), r);\n\tr = MulAdd(s0_4, M4(5.496e-02, 3.936e-02, -4.381e-02, -3.945e-03, 1.082e-01, 5.698e-02, -4.709e-02, -5.350e-02, 2.057e-01, -1.831e-01, 7.740e-03, 4.411e-02, 5.539e-02, 1.397e-01, 4.735e-02, 3.319e-02), r);\n\tr = MulAdd(s0_5, M4(2.261e-02, 4.806e-02, 1.373e-02, 8.694e-03, 3.159e-02, 8.759e-02, -6.888e-02, -8.022e-02, 2.395e-02, 6.523e-02, -1.166e-01, 1.327e-02, -3.381e-02, 7.779e-02, -3.434e-02, 1.555e-02), r);\n\tr = MulAdd(s0_6, M4(1.209e-02, 4.585e-03, 9.905e-03, 1.364e-02, -1.354e-02, 5.577e-03, 5.213e-02, -6.017e-02, -6.375e-02, -3.437e-02, -2.421e-02, -2.313e-02, 8.052e-02, 2.112e-04, 5.610e-02, 3.765e-03), r);\n\tr = MulAdd(s0_7, M4(-3.386e-02, 4.527e-02, -5.707e-03, -4.910e-02, -2.961e-02, -3.020e-02, -4.442e-02, 8.489e-02, -1.019e-03, 1.266e-01, 6.886e-02, 7.071e-02, -2.010e-02, -5.389e-02, -2.552e-02, -1.134e-02), r);\n\tr = MulAdd(s0_8, M4(-4.069e-03, -1.052e-02, -3.589e-02, -8.961e-02, -8.542e-03, -2.531e-03, -2.576e-02, 1.685e-02, -3.091e-02, -1.611e-02, 8.161e-02, 3.644e-02, -1.251e-02, 2.749e-02, 8.363e-02, -1.902e-02), r);\n\tr = MulAdd(s1_0, M4(-4.832e-02, 6.763e-02, 1.693e-01, -6.850e-02, -1.692e-01, 2.277e-02, -2.988e-02, 9.687e-02, -1.567e-01, 9.008e-02, 7.988e-02, 8.103e-02, 6.072e-02, 1.966e-02, 1.069e-02, 3.073e-02), r);\n\tr = MulAdd(s1_1, M4(1.153e-03, 7.128e-02, -1.417e-01, -7.013e-02, -9.707e-02, -4.268e-02, 1.928e-02, 9.093e-02, 1.453e-01, -8.077e-02, -1.019e-01, -7.137e-02, 6.369e-02, -1.047e-01, 5.034e-02, 2.306e-03), r);\n\tr = MulAdd(s1_2, M4(1.078e-01, 1.220e-01, 6.449e-02, 9.159e-02, -1.270e-02, -1.106e-01, 5.049e-02, -2.057e-02, -5.039e-02, -1.887e-02, -6.338e-02, 2.725e-02, 8.502e-02, 1.561e-01, -7.513e-02, 6.572e-02), r);\n\tr = MulAdd(s1_3, M4(5.530e-02, -1.115e-03, 2.046e-01, -4.519e-02, -3.028e-01, -7.232e-03, 4.014e-03, 5.096e-02, 1.179e-01, -9.105e-02, 8.114e-02, -1.298e-01, 7.743e-02, 4.449e-02, 1.560e-03, -4.073e-02), r);\n\tr = MulAdd(s1_4, M4(3.588e-01, 2.170e-01, -3.909e-02, -3.370e-01, 1.009e-01, 1.970e-01, 8.040e-02, 9.738e-03, 2.206e-01, 4.629e-01, 1.215e-01, -1.200e-01, -1.037e-02, 9.784e-02, -3.198e-02, 1.268e-02), r);\n\tr = MulAdd(s1_5, M4(1.062e-01, 1.983e-01, 1.405e-01, -9.432e-02, -5.090e-02, -7.232e-02, 1.303e-01, -3.199e-01, -3.193e-02, -3.759e-02, -1.594e-02, -3.530e-02, -2.546e-03, 5.905e-02, 7.533e-02, 1.445e-01), r);\n\tr = MulAdd(s1_6, M4(2.811e-02, 1.152e-01, -3.190e-02, -1.156e-01, -5.659e-02, -1.193e-01, -2.246e-02, 1.797e-03, 1.593e-02, 4.996e-02, -1.089e-02, 1.032e-02, 2.749e-02, 2.593e-02, 1.733e-02, 8.334e-02), r);\n\tr = MulAdd(s1_7, M4(5.944e-03, 5.876e-02, -2.158e-01, -5.041e-03, 9.495e-02, 1.840e-02, 6.503e-02, 1.521e-01, -1.170e-01, -1.226e-01, -3.012e-03, 1.956e-02, -4.297e-02, 5.649e-02, -7.710e-03, 1.146e-02), r);\n\tr = MulAdd(s1_8, M4(-2.399e-03, 4.167e-02, -1.627e-01, -1.377e-01, 7.009e-03, -7.871e-02, 1.943e-02, 2.779e-02, 6.534e-02, 6.369e-02, -1.158e-02, 3.674e-02, -2.975e-02, 4.651e-02, 3.913e-02, 2.652e-02), r);\n\tr = MulAdd(s2_0, M4(2.828e-02, -2.513e-02, 5.672e-03, -6.423e-02, 5.520e-02, -4.920e-02, 6.411e-02, -7.914e-02, 3.132e-02, -5.132e-02, -4.550e-02, 1.351e-03, 8.561e-02, -8.241e-02, -9.329e-03, 6.873e-02), r);\n\tr = MulAdd(s2_1, M4(4.571e-02, 1.052e-01, 1.285e-02, 1.897e-02, 7.375e-02, -1.896e-01, 1.410e-02, -2.172e-01, -2.555e-02, 1.003e-01, -2.963e-02, 7.566e-02, -2.315e-01, -1.842e-02, 3.806e-03, -7.120e-02), r);\n\tr = MulAdd(s2_2, M4(3.116e-03, 1.334e-02, 6.586e-02, -1.674e-02, -4.504e-02, -2.114e-02, -1.535e-01, -6.773e-02, -5.222e-02, -1.381e-01, 3.592e-02, -9.189e-03, 1.369e-02, -4.472e-03, -8.508e-02, -5.183e-02), r);\n\tr = MulAdd(s2_3, M4(8.123e-02, -1.267e-02, -1.060e-02, -1.223e-01, -8.796e-03, 4.947e-02, 1.094e-02, -5.961e-02, 1.707e-02, -4.949e-02, 1.499e-02, 1.971e-01, -7.364e-03, 5.166e-02, 1.375e-02, -2.088e-02), r);\n\tr = MulAdd(s2_4, M4(1.981e-01, 1.402e-02, -7.671e-02, -1.057e-01, -3.672e-02, 2.139e-01, -3.502e-02, 4.998e-02, -6.810e-02, 2.711e-01, 2.190e-03, 2.389e-01, -1.027e-01, -1.934e-01, 2.007e-01, -1.764e-01), r);\n\tr = MulAdd(s2_5, M4(-3.131e-02, 9.458e-02, -4.505e-02, -8.858e-02, -8.754e-02, -1.370e-02, -3.300e-03, -1.630e-02, -7.052e-02, -1.271e-01, 9.199e-03, 1.163e-01, -1.271e-01, -1.099e-01, -1.599e-01, 8.651e-02), r);\n\tr = MulAdd(s2_6, M4(8.813e-02, 5.411e-02, -1.438e-02, -1.103e-01, 2.566e-02, 4.505e-02, 7.295e-03, -1.022e-02, -1.135e-02, 1.019e-02, 7.076e-02, 1.678e-02, 1.878e-02, -1.681e-02, -7.175e-02, 5.882e-02), r);\n\tr = MulAdd(s2_7, M4(-6.547e-02, -6.367e-03, -9.245e-03, 5.503e-02, 1.068e-02, -2.441e-02, -4.558e-02, -1.253e-01, 1.120e-01, 5.100e-02, -8.709e-03, 1.022e-02, 1.694e-02, 6.852e-02, -1.305e-01, -1.105e-02), r);\n\tr = MulAdd(s2_8, M4(2.468e-02, 4.679e-02, -4.744e-02, -2.494e-03, -5.273e-03, -9.415e-03, 2.700e-02, 1.370e-02, 2.330e-02, -7.538e-02, -1.354e-02, -9.254e-02, 3.925e-02, -2.982e-02, -4.716e-02, -4.827e-02), r);\n\tr = MulAdd(s3_0, M4(5.471e-02, -4.965e-02, -5.552e-02, 9.349e-02, -3.978e-02, 4.671e-02, 1.510e-02, -1.010e-02, -5.610e-03, -6.650e-03, -4.539e-02, -3.078e-02, -2.028e-02, -1.076e-02, 4.225e-03, 6.920e-03), r);\n\tr = MulAdd(s3_1, M4(-8.981e-02, 2.075e-02, -1.545e-01, 8.362e-02, 3.681e-02, -6.842e-02, -3.677e-03, 7.273e-02, 3.630e-02, 1.168e-01, 9.331e-02, -1.641e-02, 8.741e-02, -1.807e-02, 5.136e-02, -5.999e-03), r);\n\tr = MulAdd(s3_2, M4(7.980e-03, 9.239e-03, -7.776e-02, 4.121e-02, -6.007e-02, -6.668e-02, 2.904e-02, -1.818e-02, -4.358e-02, -6.546e-02, 7.827e-02, -1.531e-02, 8.845e-02, 4.541e-02, -3.799e-02, 4.981e-02), r);\n\tr = MulAdd(s3_3, M4(-7.097e-02, 3.464e-02, -3.664e-02, 9.282e-02, -1.353e-02, -4.447e-02, 6.376e-05, -1.620e-02, 4.777e-02, 6.054e-03, -2.632e-02, 5.112e-02, -1.545e-02, -5.129e-02, 3.346e-02, 2.137e-03), r);\n\tr = MulAdd(s3_4, M4(2.378e-01, -1.779e-01, -1.635e-01, 9.949e-02, -1.099e-02, -9.495e-02, 1.901e-02, 6.277e-02, -1.515e-01, 1.612e-01, -2.442e-02, 9.298e-03, 1.148e-01, 5.676e-02, -5.988e-02, -5.545e-02), r);\n\tr = MulAdd(s3_5, M4(-2.331e-02, 3.820e-02, -9.015e-02, -7.512e-02, -3.124e-02, -8.487e-02, -3.251e-02, 3.748e-03, -4.415e-02, 2.026e-02, 5.457e-02, -8.815e-02, 5.846e-02, 5.226e-02, -9.859e-02, -1.642e-02), r);\n\tr = MulAdd(s3_6, M4(4.007e-02, -6.566e-02, 5.973e-02, 1.621e-02, 3.186e-02, 4.911e-02, 5.198e-03, 2.869e-02, -3.761e-02, 6.225e-02, 3.270e-02, 7.359e-02, -2.176e-02, 5.753e-03, 1.074e-02, 3.768e-03), r);\n\tr = MulAdd(s3_7, M4(-8.123e-02, 1.709e-01, 3.004e-03, 2.824e-01, -1.991e-02, -7.908e-03, -3.733e-02, -1.250e-01, 1.101e-01, 1.949e-02, -5.755e-02, 6.645e-02, -2.663e-03, -9.784e-03, 2.276e-02, -2.752e-02), r);\n\tr = MulAdd(s3_8, M4(4.444e-02, 5.957e-02, -4.221e-02, -5.451e-04, 9.534e-03, -1.278e-02, -6.812e-02, -1.361e-03, 2.192e-04, -2.833e-02, 7.063e-04, -1.225e-01, 3.637e-04, -5.070e-02, 1.058e-02, -6.452e-02), r);\n\tr = MulAdd(s4_0, M4(6.307e-02, -2.681e-02, -6.274e-02, 8.770e-02, -7.101e-02, 4.855e-02, -5.002e-02, 4.840e-02, -2.804e-02, 5.773e-02, -6.244e-03, 8.325e-02, -2.861e-02, -6.126e-03, -3.282e-03, -5.171e-02), r);\n\tr = MulAdd(s4_1, M4(3.098e-02, 3.295e-02, 7.547e-02, 1.486e-01, 7.005e-02, 2.076e-03, -9.338e-02, 1.963e-02, -1.268e-01, -3.594e-02, -1.551e-02, 6.473e-02, 5.155e-02, -1.451e-01, 9.073e-02, 6.502e-03), r);\n\tr = MulAdd(s4_2, M4(-2.531e-02, 4.505e-02, -9.723e-02, 1.119e-02, -3.923e-02, -1.286e-01, 3.625e-02, -9.626e-02, 1.758e-02, -9.467e-02, -3.204e-02, -1.593e-01, -4.865e-02, 3.704e-02, -5.239e-03, -6.411e-02), r);\n\tr = MulAdd(s4_3, M4(1.624e-02, 7.311e-02, -8.259e-02, 7.513e-02, 2.413e-02, 5.958e-02, -1.074e-01, 2.137e-01, 1.173e-03, -8.354e-02, -1.466e-02, -2.959e-02, -1.028e-02, -1.759e-02, -4.829e-02, -6.977e-02), r);\n\tr = MulAdd(s4_4, M4(-6.667e-02, -9.253e-02, -1.928e-01, 1.053e-01, 2.976e-02, 2.397e-02, 1.972e-02, -3.608e-01, -1.562e-01, -1.104e-01, -6.679e-02, 8.189e-03, 1.051e-01, 2.159e-02, -1.574e-01, 1.478e-01), r);\n\tr = MulAdd(s4_5, M4(1.064e-03, 4.455e-02, 2.994e-02, 6.062e-02, 2.440e-02, -8.779e-02, -7.318e-03, -3.991e-02, 2.143e-02, -1.107e-01, 3.086e-02, -2.095e-01, 3.533e-02, 2.910e-03, 3.938e-02, -9.010e-02), r);\n\tr = MulAdd(s4_6, M4(1.370e-02, 1.084e-02, 1.671e-02, 4.518e-02, -7.201e-02, -1.957e-02, 4.449e-02, 9.856e-02, 4.019e-03, 2.327e-02, 2.099e-02, 2.433e-03, -4.614e-03, -2.463e-03, -7.228e-02, 5.710e-02), r);\n\tr = MulAdd(s4_7, M4(-6.763e-02, -7.056e-02, 4.111e-02, 1.589e-01, -5.957e-02, -1.089e-01, -4.845e-03, 5.609e-03, -1.616e-01, -7.913e-02, -8.164e-02, -6.088e-02, 2.263e-02, 1.072e-01, 9.865e-02, -1.330e-03), r);\n\tr = MulAdd(s4_8, M4(3.810e-02, -3.161e-03, 1.591e-02, 9.792e-02, 2.835e-02, -2.595e-02, -8.879e-04, -2.684e-02, 9.845e-03, 2.914e-02, 7.703e-03, -5.742e-02, -3.035e-02, 4.963e-03, 1.384e-01, 3.100e-03), r);\n\tr = MulAdd(s5_0, M4(4.256e-02, -1.008e-01, -1.556e-02, 6.923e-04, -5.312e-02, 5.749e-02, -2.727e-03, 5.390e-02, 7.619e-02, 5.960e-02, -2.679e-02, 1.117e-01, -1.577e-01, 1.731e-02, -1.404e-02, -3.958e-02), r);\n\tr = MulAdd(s5_1, M4(-1.362e-01, -1.371e-02, -5.278e-02, 1.414e-01, 3.202e-02, -3.197e-02, -6.661e-02, 8.865e-03, -2.686e-01, 1.049e-02, -6.292e-02, 7.536e-02, 1.076e-01, -7.338e-03, -1.221e-01, -5.864e-02), r);\n\tr = MulAdd(s5_2, M4(5.416e-02, 7.805e-03, 5.544e-02, 2.636e-02, -3.914e-02, -7.272e-02, -7.414e-02, 1.661e-02, -7.668e-02, -1.847e-02, 6.360e-02, -2.105e-02, 7.998e-02, 5.067e-02, -8.429e-03, -2.027e-02), r);\n\tr = MulAdd(s5_3, M4(-2.233e-05, 5.755e-02, -3.404e-02, 1.183e-01, -1.258e-02, -2.209e-02, -8.305e-02, 7.034e-02, -5.047e-02, 6.752e-03, 5.717e-02, 4.605e-02, 3.183e-03, -1.312e-01, -5.560e-02, -1.314e-02), r);\n\tr = MulAdd(s5_4, M4(5.782e-02, -6.304e-02, -2.183e-01, 1.023e-01, -8.243e-02, 5.312e-02, 6.326e-02, -1.013e-01, -1.482e-01, 8.340e-02, 5.306e-02, 9.693e-02, -7.022e-02, -1.078e-01, -9.109e-02, 1.012e-01), r);\n\tr = MulAdd(s5_5, M4(2.845e-02, 7.967e-03, 3.953e-02, 8.160e-02, -3.188e-02, -8.098e-02, 8.965e-03, -2.233e-02, -1.713e-01, -9.800e-02, -1.032e-02, 1.329e-01, -4.141e-02, 2.611e-02, 2.263e-02, 4.147e-02), r);\n\tr = MulAdd(s5_6, M4(4.944e-03, 1.338e-03, -1.373e-03, -4.234e-03, 1.164e-02, 4.842e-02, -5.568e-02, 3.876e-02, -7.883e-02, -4.474e-02, -1.606e-02, 4.802e-04, -7.402e-02, -8.163e-02, -6.966e-03, 6.448e-02), r);\n\tr = MulAdd(s5_7, M4(-6.236e-02, 1.289e-02, 4.420e-02, 5.460e-02, 9.722e-02, 1.146e-02, -9.578e-02, -4.473e-02, -6.389e-02, 2.631e-03, -9.886e-02, 5.113e-02, -9.276e-02, -1.233e-01, 4.618e-02, 1.873e-02), r);\n\tr = MulAdd(s5_8, M4(1.536e-02, -5.075e-04, 1.344e-02, 4.274e-02, 3.285e-02, -2.907e-02, -2.249e-02, -4.175e-02, 3.839e-02, -1.694e-02, -2.087e-02, 4.188e-02, 2.566e-02, -3.312e-02, -4.870e-02, -1.486e-02), r);\n\tr = MulAdd(s6_0, M4(2.035e-02, 8.914e-02, -9.176e-02, 2.293e-03, 7.181e-02, 3.651e-02, 3.323e-03, 2.469e-02, 2.294e-02, 8.999e-02, -3.079e-02, 1.147e-02, 1.319e-01, 5.067e-02, -3.103e-02, 5.246e-02), r);\n\tr = MulAdd(s6_1, M4(-2.348e-02, 1.186e-01, -1.171e-01, 8.115e-02, -1.357e-01, -3.212e-02, -1.983e-02, 9.504e-02, 7.592e-02, 2.967e-01, -2.224e-01, -7.604e-02, -4.854e-02, -2.008e-02, -2.428e-02, -1.026e-01), r);\n\tr = MulAdd(s6_2, M4(1.907e-02, 4.944e-02, -9.952e-03, -2.858e-02, -2.479e-02, -5.892e-02, 7.922e-02, -4.188e-02, 4.176e-04, -9.048e-02, -6.651e-03, 9.881e-03, -1.035e-03, 3.687e-02, 1.044e-02, -9.535e-02), r);\n\tr = MulAdd(s6_3, M4(-6.968e-03, -3.589e-02, -1.763e-02, -1.608e-01, -1.312e-01, 1.096e-01, -3.024e-02, 7.163e-02, -1.194e-01, 8.786e-02, -6.113e-02, -5.211e-02, 1.995e-02, 5.899e-02, 8.763e-02, -5.822e-02), r);\n\tr = MulAdd(s6_4, M4(1.126e-01, -7.308e-02, -3.569e-02, -1.747e-01, -3.388e-02, -2.617e-01, 3.035e-02, -1.474e-01, -1.557e-02, 2.141e-01, -3.721e-01, 2.118e-01, 1.199e-01, -9.028e-02, 1.809e-01, -1.871e-01), r);\n\tr = MulAdd(s6_5, M4(4.094e-02, 2.008e-01, -1.845e-01, 1.834e-02, -2.787e-02, -4.992e-04, -1.641e-02, -1.007e-01, -8.758e-02, -1.699e-01, 9.544e-03, 8.977e-05, -5.093e-02, -6.207e-02, 8.674e-02, -1.359e-01), r);\n\tr = MulAdd(s6_6, M4(4.932e-03, 3.054e-02, 2.115e-02, 2.666e-02, -5.442e-02, -7.033e-02, -3.701e-02, -2.965e-02, 7.123e-03, -3.562e-03, -4.148e-02, 1.772e-01, 2.837e-03, 8.905e-02, 1.370e-02, 2.342e-02), r);\n\tr = MulAdd(s6_7, M4(-2.051e-02, -5.216e-02, -6.625e-02, 1.395e-02, -3.178e-02, -6.876e-02, 5.125e-03, 4.695e-02, 1.508e-01, 5.439e-02, 5.286e-02, -1.213e-01, 2.426e-02, -7.170e-02, -2.314e-02, -7.301e-02), r);\n\tr = MulAdd(s6_8, M4(-2.376e-02, -2.696e-02, -8.676e-02, -5.200e-02, 4.308e-02, -6.324e-02, 3.243e-03, 2.496e-02, 6.805e-02, 5.926e-02, -1.166e-01, -9.171e-02, 3.429e-02, -2.809e-02, -2.414e-02, -3.571e-02), r);\n\tr = MulAdd(s7_0, M4(8.384e-02, -2.706e-02, 1.013e-01, -9.113e-02, 1.056e-02, -6.677e-03, -1.244e-02, 1.388e-02, 2.674e-03, -5.477e-02, 1.808e-02, -3.460e-02, 3.550e-02, 2.373e-02, 1.164e-02, 1.138e-01), r);\n\tr = MulAdd(s7_1, M4(-3.523e-05, -1.094e-01, 1.434e-02, -4.561e-02, -1.619e-02, -2.251e-02, 5.216e-02, 4.408e-02, -8.221e-02, -4.150e-03, -4.067e-02, -2.003e-02, -3.024e-02, 5.350e-03, -5.504e-02, 4.436e-02), r);\n\tr = MulAdd(s7_2, M4(3.702e-02, 7.436e-02, -1.237e-01, -3.169e-02, -5.443e-03, -4.782e-02, 2.405e-02, -1.102e-02, -3.942e-02, -8.225e-02, -4.205e-02, 3.668e-02, 5.289e-02, 7.724e-03, 1.813e-02, 4.858e-02), r);\n\tr = MulAdd(s7_3, M4(2.945e-03, 7.254e-02, 2.675e-02, -8.459e-02, 6.718e-02, 3.384e-02, -3.787e-02, 4.449e-02, 4.266e-02, 5.028e-02, -3.294e-02, -6.624e-03, -3.943e-02, 9.206e-02, 5.073e-02, 3.251e-02), r);\n\tr = MulAdd(s7_4, M4(-1.042e-01, -6.166e-02, -1.833e-01, 9.123e-02, 1.202e-01, -7.532e-03, -2.004e-02, 5.601e-02, 5.176e-02, -2.966e-02, -1.028e-01, 2.305e-02, 8.507e-02, -4.308e-02, 4.660e-02, -3.810e-02), r);\n\tr = MulAdd(s7_5, M4(1.993e-03, 3.307e-02, -3.692e-02, 6.274e-02, 8.841e-02, 6.889e-02, 3.847e-02, 3.557e-03, -1.397e-02, -6.079e-02, -1.159e-01, 5.036e-02, -7.212e-02, -8.696e-02, -1.473e-02, -8.401e-05), r);\n\tr = MulAdd(s7_6, M4(1.307e-03, 5.465e-02, 8.376e-02, 6.102e-04, 1.640e-02, -3.675e-02, 1.247e-02, 7.030e-03, 1.581e-02, -2.842e-02, 4.472e-02, 5.942e-03, -3.620e-02, -4.640e-02, 4.822e-02, 7.610e-02), r);\n\tr = MulAdd(s7_7, M4(5.411e-03, -4.896e-02, 7.239e-02, 2.750e-02, 3.379e-03, -6.351e-02, 1.287e-02, 9.011e-03, 2.150e-02, 2.218e-02, 1.566e-02, -8.448e-03, 2.273e-02, 4.030e-02, 9.586e-03, -1.124e-02), r);\n\tr = MulAdd(s7_8, M4(-1.543e-03, -1.198e-02, -4.999e-02, 2.786e-02, 6.909e-02, 3.947e-02, -2.309e-03, 5.050e-03, 3.616e-02, -2.521e-02, 4.467e-02, -6.620e-02, 6.803e-02, 1.796e-02, -1.544e-02, 8.682e-03), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 5.284e-03, -1.982e-02, -9.108e-03, -1.052e-02 };\n\tr = MulAdd(s0_0, M4(2.543e-02, -1.793e-02, -2.661e-02, -8.442e-03, -3.030e-02, 7.954e-02, 4.205e-03, -1.372e-02, 1.039e-01, 1.134e-01, 4.211e-02, -3.359e-02, 5.462e-02, 2.089e-02, -4.002e-02, 7.973e-02), r);\n\tr = MulAdd(s0_1, M4(-2.038e-03, -1.586e-02, -2.208e-02, -3.928e-03, -3.969e-02, 2.543e-03, 1.281e-02, 1.219e-01, -7.411e-03, 9.921e-02, -1.890e-02, -1.119e-02, 3.633e-02, -2.426e-02, -7.610e-02, 2.071e-01), r);\n\tr = MulAdd(s0_2, M4(1.747e-02, -1.930e-02, 2.645e-02, -3.918e-02, 5.670e-02, -3.047e-02, -2.489e-02, -2.364e-02, 1.529e-02, 3.475e-02, -1.780e-02, 3.892e-02, 7.479e-02, -6.135e-02, -2.016e-01, -2.309e-02), r);\n\tr = MulAdd(s0_3, M4(4.840e-02, -2.967e-02, -4.442e-02, 1.850e-02, -1.576e-01, -3.390e-02, 3.628e-02, 5.351e-03, -3.437e-02, -1.698e-02, 8.110e-03, -1.047e-02, -5.011e-02, -2.863e-01, 2.716e-02, 1.364e-01), r);\n\tr = MulAdd(s0_4, M4(1.586e-01, 3.869e-02, 4.948e-02, -1.398e-02, 1.052e-01, -1.790e-03, 1.426e-02, -1.089e-01, -2.705e-01, -4.928e-02, -1.672e-01, 8.665e-02, -3.057e-01, 1.749e-01, 6.896e-02, -2.513e-01), r);\n\tr = MulAdd(s0_5, M4(4.361e-03, -2.893e-02, 4.167e-04, 3.450e-02, -4.229e-02, -7.990e-03, 3.401e-02, -7.631e-03, 1.931e-02, 7.449e-02, 1.669e-02, -4.852e-02, -8.031e-02, 3.757e-02, -1.409e-01, -1.088e-01), r);\n\tr = MulAdd(s0_6, M4(1.656e-02, 7.477e-02, -2.463e-02, 2.680e-02, 6.169e-02, -1.259e-04, 6.755e-03, 2.400e-02, 4.599e-02, 2.553e-03, -1.681e-02, 5.101e-02, 1.828e-03, 6.240e-02, -2.371e-02, 5.791e-02), r);\n\tr = MulAdd(s0_7, M4(1.073e-03, -3.600e-02, -2.445e-02, 1.764e-02, 5.542e-02, 4.947e-02, 6.553e-03, 7.913e-03, 4.885e-02, -9.868e-02, -1.274e-01, -2.245e-02, 7.077e-02, 4.840e-02, 1.096e-03, 7.830e-02), r);\n\tr = MulAdd(s0_8, M4(1.959e-02, 2.715e-02, -7.821e-03, 2.369e-02, -8.008e-02, 4.740e-02, 7.136e-03, 1.902e-02, 9.085e-02, -4.548e-02, 9.690e-03, 7.554e-03, -2.610e-02, 8.072e-02, -1.039e-01, -9.924e-03), r);\n\tr = MulAdd(s1_0, M4(-5.144e-02, -1.175e-01, 1.031e-01, -3.103e-01, -6.668e-02, 1.290e-01, -9.938e-02, 1.466e-01, -5.311e-02, 2.059e-02, -1.172e-01, -3.354e-02, 4.052e-02, 1.589e-02, 1.572e-02, 5.945e-02), r);\n\tr = MulAdd(s1_1, M4(-1.275e-01, -2.448e-02, -1.102e-03, -3.236e-01, -7.084e-02, 1.954e-01, 2.087e-02, -9.257e-03, 1.603e-02, -1.903e-03, 5.313e-02, -1.290e-02, 1.675e-01, 8.260e-02, 4.374e-02, 4.229e-02), r);\n\tr = MulAdd(s1_2, M4(-1.615e-01, -7.282e-02, -4.499e-02, -1.533e-01, 6.813e-02, 3.466e-03, 6.690e-03, 7.790e-02, -5.786e-02, 5.432e-02, 2.534e-02, -3.596e-03, 5.707e-03, -2.349e-02, -6.428e-02, -4.131e-03), r);\n\tr = MulAdd(s1_3, M4(1.267e-01, -6.708e-03, -9.339e-02, -4.356e-02, -5.323e-02, 6.610e-02, -7.934e-02, 1.313e-01, 2.120e-02, -1.163e-02, 6.597e-02, -4.234e-02, 7.453e-02, -7.786e-02, -1.250e-02, 1.125e-01), r);\n\tr = MulAdd(s1_4, M4(3.665e-01, 1.590e-01, -1.122e-01, 1.540e-01, 3.349e-02, -1.161e-01, 5.773e-02, 2.363e-02, 2.738e-02, 1.204e-01, -3.128e-01, 1.291e-02, -9.935e-02, -1.122e-01, -2.228e-02, 3.867e-02), r);\n\tr = MulAdd(s1_5, M4(1.587e-01, 1.904e-01, -3.435e-01, 1.060e-01, -1.010e-01, 5.352e-02, 3.700e-02, -5.632e-02, 8.173e-02, 9.857e-02, -1.753e-01, 4.469e-03, -4.160e-02, -7.350e-02, -8.057e-02, -4.027e-02), r);\n\tr = MulAdd(s1_6, M4(9.872e-02, 1.109e-01, 8.054e-02, -1.404e-02, -1.189e-02, -2.346e-02, 8.571e-03, -6.556e-02, 7.537e-02, 9.442e-02, 8.507e-03, 6.746e-02, -8.489e-02, -9.849e-02, -2.410e-02, 1.358e-02), r);\n\tr = MulAdd(s1_7, M4(2.501e-02, 3.615e-02, 5.910e-02, 1.600e-02, -5.374e-02, 7.789e-02, -2.909e-02, -5.501e-03, 1.722e-01, 1.175e-01, -1.703e-01, 5.649e-02, -1.099e-01, -6.323e-02, -1.531e-02, -1.376e-02), r);\n\tr = MulAdd(s1_8, M4(-2.230e-02, -1.235e-01, 1.060e-01, 4.907e-02, 1.111e-01, 2.390e-02, 1.095e-01, 1.002e-01, -6.648e-03, 1.470e-02, 6.574e-02, -4.105e-02, -4.060e-02, 1.489e-01, -3.608e-02, -1.929e-02), r);\n\tr = MulAdd(s2_0, M4(-3.375e-04, 3.077e-03, 9.368e-02, 4.429e-03, 7.119e-02, 1.765e-02, 1.129e-01, -1.313e-01, -1.649e-02, -5.255e-02, 6.884e-03, 2.996e-04, -6.845e-02, -2.114e-02, 6.361e-02, -8.461e-02), r);\n\tr = MulAdd(s2_1, M4(-5.765e-02, -1.345e-02, -5.231e-02, -1.190e-02, 2.960e-02, 7.591e-02, 5.526e-02, -1.188e-01, -9.837e-02, -1.191e-02, -2.463e-02, -1.121e-01, -4.223e-02, 5.940e-02, -6.918e-02, 1.428e-01), r);\n\tr = MulAdd(s2_2, M4(1.044e-02, -7.264e-03, -5.687e-02, -2.949e-02, -7.140e-03, -1.959e-01, 5.113e-02, -3.021e-02, 2.139e-02, 6.523e-02, 1.018e-01, 2.631e-02, -8.545e-03, 8.892e-02, 7.265e-02, -1.880e-01), r);\n\tr = MulAdd(s2_3, M4(1.447e-02, -8.470e-02, 7.456e-02, 2.647e-02, 8.139e-02, -6.002e-02, 2.721e-03, -9.280e-02, -1.130e-01, 7.528e-02, -1.555e-02, -6.099e-03, 9.102e-02, 3.104e-02, 1.528e-02, 3.439e-02), r);\n\tr = MulAdd(s2_4, M4(-1.070e-01, -2.137e-04, 1.489e-01, -1.613e-01, -1.706e-01, -4.034e-03, -3.536e-02, 1.709e-02, -1.556e-01, 7.692e-02, -1.919e-01, -2.885e-01, 1.885e-01, 4.700e-02, 9.758e-02, 1.347e-02), r);\n\tr = MulAdd(s2_5, M4(-1.500e-02, -4.942e-02, 3.868e-02, -5.220e-03, 2.736e-02, 1.739e-01, 1.519e-01, -2.263e-02, -4.559e-02, 1.208e-01, -1.024e-01, -5.350e-03, -1.364e-02, -1.881e-01, -5.185e-02, 2.927e-02), r);\n\tr = MulAdd(s2_6, M4(3.519e-02, 5.847e-02, 1.829e-02, 5.118e-02, 2.837e-02, 5.415e-02, 1.346e-02, 6.121e-04, -3.360e-02, -1.113e-01, -2.197e-03, -3.458e-02, -1.608e-02, 3.809e-02, 9.094e-03, 3.780e-02), r);\n\tr = MulAdd(s2_7, M4(4.761e-03, -7.532e-02, -5.880e-02, 1.926e-02, -5.061e-03, -1.367e-02, 5.288e-03, -2.457e-02, 4.434e-02, 5.182e-02, 9.892e-02, -8.780e-02, -4.478e-02, -6.584e-02, -1.004e-01, 3.399e-02), r);\n\tr = MulAdd(s2_8, M4(-2.743e-02, 4.934e-02, 7.882e-02, -4.161e-02, 1.574e-01, 1.455e-02, -5.685e-04, 1.564e-02, -4.879e-02, -1.029e-01, -3.130e-02, -8.087e-02, 1.363e-01, -2.098e-02, 5.942e-02, -8.210e-03), r);\n\tr = MulAdd(s3_0, M4(-1.374e-02, 7.180e-02, 6.022e-02, 8.669e-02, 6.722e-03, -5.428e-02, 4.097e-02, -5.723e-02, 1.829e-02, 6.248e-03, 8.819e-03, -1.820e-02, 2.561e-02, -8.226e-02, 3.573e-04, 9.531e-03), r);\n\tr = MulAdd(s3_1, M4(-6.223e-03, -1.018e-01, -7.917e-02, 2.553e-02, -7.636e-02, 8.827e-02, -7.935e-02, 1.071e-02, -1.663e-02, -6.168e-02, 3.786e-02, -1.260e-01, -5.847e-02, -4.430e-02, 1.259e-02, 1.584e-02), r);\n\tr = MulAdd(s3_2, M4(-3.766e-02, -1.428e-02, 5.059e-02, 4.313e-02, -4.671e-03, -8.941e-02, 3.086e-02, 1.166e-02, 1.931e-02, -1.941e-03, 5.253e-02, 8.497e-03, -4.258e-03, -1.427e-03, -2.630e-02, -2.615e-02), r);\n\tr = MulAdd(s3_3, M4(1.434e-02, -7.968e-03, 3.015e-02, 1.365e-01, 3.686e-02, 2.893e-02, -1.644e-02, -6.397e-02, -1.086e-01, -3.093e-02, 3.116e-02, -2.145e-03, -2.071e-03, 7.337e-02, -8.286e-02, -3.803e-02), r);\n\tr = MulAdd(s3_4, M4(-1.682e-01, 1.651e-01, 3.779e-01, -2.107e-01, -2.688e-01, 3.074e-02, -4.198e-02, -3.471e-02, -1.145e-01, 6.096e-02, -7.697e-02, -1.275e-01, 2.926e-02, -8.640e-02, -4.570e-02, 9.212e-03), r);\n\tr = MulAdd(s3_5, M4(-1.003e-01, -4.532e-02, 1.185e-01, -5.018e-02, 3.630e-02, 1.052e-01, 2.156e-02, 7.973e-02, -1.824e-01, 7.134e-02, -2.839e-02, -2.972e-02, 4.604e-02, 1.248e-01, 2.946e-02, -1.004e-01), r);\n\tr = MulAdd(s3_6, M4(-1.382e-01, -6.426e-03, 1.134e-02, -1.395e-02, 8.457e-03, 9.588e-02, 3.972e-02, 1.257e-02, -2.861e-02, -6.084e-02, 7.592e-03, -2.295e-03, 5.240e-02, 2.015e-02, 2.799e-03, 5.091e-02), r);\n\tr = MulAdd(s3_7, M4(-9.311e-02, -6.947e-02, -1.227e-02, 3.166e-02, 1.794e-02, -5.997e-02, -3.435e-02, -8.391e-03, -2.391e-02, -3.329e-02, 7.543e-02, 3.182e-02, 1.551e-01, 9.505e-02, -5.603e-02, 5.696e-02), r);\n\tr = MulAdd(s3_8, M4(-1.488e-02, 3.870e-02, 8.138e-02, 3.946e-02, -9.627e-03, -3.451e-02, -1.232e-02, -6.382e-03, -1.180e-02, -1.047e-01, -3.782e-02, -3.286e-02, -9.891e-02, -7.887e-02, 2.781e-03, 4.923e-03), r);\n\tr = MulAdd(s4_0, M4(-1.543e-02, 3.364e-02, 5.388e-02, -2.789e-02, 6.275e-02, 6.273e-02, -4.797e-02, -1.786e-02, 7.741e-03, 4.798e-02, -6.949e-03, 4.940e-02, 6.214e-02, -2.850e-02, -8.802e-02, 6.091e-02), r);\n\tr = MulAdd(s4_1, M4(-4.386e-02, -6.506e-02, -1.533e-01, -1.125e-01, -1.905e-01, 9.027e-02, -2.007e-02, 4.063e-02, -2.500e-02, -5.204e-02, -2.493e-02, 8.728e-02, 2.507e-02, -1.505e-02, 7.927e-02, 7.878e-02), r);\n\tr = MulAdd(s4_2, M4(-4.679e-02, -6.334e-02, 2.318e-02, -3.277e-02, 2.703e-02, 9.973e-03, 4.462e-02, 5.833e-02, -3.777e-03, -6.446e-02, 3.411e-02, 4.109e-02, -4.104e-02, 3.981e-02, -2.533e-02, -1.180e-02), r);\n\tr = MulAdd(s4_3, M4(1.431e-02, 1.575e-01, -1.386e-02, -5.258e-02, 1.460e-02, 9.747e-02, -3.904e-02, -4.721e-02, 8.228e-03, -5.732e-02, 5.413e-03, 2.851e-02, -8.223e-02, 9.280e-02, 2.836e-02, 8.095e-02), r);\n\tr = MulAdd(s4_4, M4(2.747e-01, -2.144e-01, -8.618e-02, -1.085e-01, 2.071e-01, 2.453e-01, 1.405e-01, 1.423e-01, -1.439e-01, -1.044e-01, -7.646e-02, -2.316e-04, -3.095e-02, -5.742e-02, 6.407e-02, -1.216e-02), r);\n\tr = MulAdd(s4_5, M4(1.107e-01, -1.380e-02, 3.637e-02, 2.192e-02, 1.241e-01, 1.456e-01, -9.515e-02, 6.993e-02, -2.811e-02, -2.833e-02, 1.723e-01, 6.716e-02, -2.092e-02, -9.826e-03, -3.243e-02, -5.823e-02), r);\n\tr = MulAdd(s4_6, M4(-1.301e-02, -2.547e-03, 3.076e-02, -3.167e-02, 4.486e-02, 1.551e-01, -8.204e-02, 8.202e-03, 7.205e-02, 1.082e-01, -4.516e-02, 5.511e-02, -4.204e-02, -5.157e-02, -9.286e-02, 2.381e-02), r);\n\tr = MulAdd(s4_7, M4(4.478e-02, 9.730e-02, -6.711e-02, -1.573e-02, 1.599e-01, 7.125e-04, 8.364e-02, -3.236e-02, 1.162e-01, 1.376e-01, -1.624e-03, 1.320e-02, -2.593e-02, -2.171e-02, -3.284e-02, 1.282e-02), r);\n\tr = MulAdd(s4_8, M4(1.971e-02, 6.643e-02, 2.099e-02, -4.846e-02, 6.507e-02, 4.767e-02, -9.634e-02, -7.191e-02, -4.709e-02, 2.865e-02, 5.879e-02, 6.538e-03, 6.665e-02, 3.576e-02, -6.457e-02, -9.140e-03), r);\n\tr = MulAdd(s5_0, M4(4.701e-02, 6.554e-02, 2.684e-02, -6.159e-02, -1.654e-02, 3.635e-02, -1.624e-02, -6.742e-02, -3.377e-03, 4.140e-02, -5.588e-02, -3.041e-02, -4.195e-02, 4.853e-02, -5.634e-02, -1.474e-02), r);\n\tr = MulAdd(s5_1, M4(-1.170e-01, 1.339e-02, -1.540e-01, -2.260e-01, 1.586e-04, 1.326e-02, 6.470e-02, 8.587e-02, -1.361e-03, -2.062e-02, -4.187e-02, 2.213e-01, -1.077e-01, -9.440e-03, 9.954e-02, 7.201e-02), r);\n\tr = MulAdd(s5_2, M4(5.207e-02, -2.738e-02, -5.539e-02, -7.207e-02, 2.145e-02, -1.095e-01, 4.503e-03, 3.237e-02, 1.250e-01, 6.253e-02, 3.567e-02, 8.087e-02, -2.536e-02, 1.982e-02, -5.218e-02, 2.405e-02), r);\n\tr = MulAdd(s5_3, M4(2.712e-02, 3.756e-02, 1.426e-02, -5.842e-02, -2.080e-02, 2.785e-02, -4.829e-02, -5.688e-02, 4.663e-02, -4.626e-02, 1.441e-02, 4.917e-03, 1.114e-02, 4.579e-02, 5.647e-02, 5.263e-02), r);\n\tr = MulAdd(s5_4, M4(6.849e-02, 6.650e-02, 1.116e-01, -1.122e-02, 3.089e-02, 1.219e-01, 3.562e-02, 7.543e-02, 1.527e-02, 2.334e-01, 1.237e-01, -8.526e-02, -2.102e-02, 1.828e-02, -7.334e-02, -8.291e-02), r);\n\tr = MulAdd(s5_5, M4(8.283e-02, 2.493e-03, -4.096e-02, -2.882e-02, -4.520e-02, 1.016e-01, -8.556e-03, -2.354e-02, -1.379e-01, -8.510e-02, 3.279e-03, 9.362e-05, 2.788e-02, 2.075e-02, 1.810e-02, 6.659e-02), r);\n\tr = MulAdd(s5_6, M4(-2.978e-02, -3.484e-02, 4.946e-03, -6.533e-02, 5.183e-02, 4.185e-02, -8.027e-03, 2.699e-02, 4.217e-03, 8.874e-02, -1.477e-02, -7.149e-03, -3.662e-02, -1.436e-02, -3.279e-02, -1.546e-02), r);\n\tr = MulAdd(s5_7, M4(6.874e-02, 1.554e-02, -8.766e-02, 6.074e-03, -4.165e-02, -4.333e-02, 1.862e-02, 1.334e-02, 5.034e-02, -4.829e-02, 6.277e-02, -3.653e-02, -3.265e-02, 5.262e-02, 9.616e-02, -6.061e-02), r);\n\tr = MulAdd(s5_8, M4(3.213e-02, 4.388e-02, -8.565e-03, -3.604e-02, 7.287e-02, -4.806e-02, -4.418e-02, 3.579e-02, 3.314e-02, 2.701e-02, 1.081e-01, 6.094e-02, -6.816e-02, 9.806e-02, 1.029e-01, -7.738e-02), r);\n\tr = MulAdd(s6_0, M4(-8.138e-02, 1.322e-02, -3.581e-02, -3.120e-02, -3.381e-02, -1.631e-02, 1.721e-02, -5.026e-02, 2.633e-02, -6.625e-02, -3.507e-02, 6.763e-02, -2.698e-02, -7.282e-02, -1.106e-02, -3.171e-02), r);\n\tr = MulAdd(s6_1, M4(-1.629e-01, -2.432e-02, -1.139e-01, -1.502e-01, -1.430e-01, 3.546e-02, -6.622e-02, -6.755e-02, -1.659e-02, -1.034e-01, -3.824e-02, 2.842e-02, -3.059e-02, -1.435e-02, -1.019e-03, 1.160e-01), r);\n\tr = MulAdd(s6_2, M4(5.043e-02, 8.559e-02, -6.544e-02, 2.216e-02, 8.079e-02, 7.001e-02, -2.152e-02, -2.082e-02, -1.592e-02, -5.787e-02, 7.907e-02, 8.431e-02, -2.620e-02, -1.735e-02, 7.290e-03, 7.536e-02), r);\n\tr = MulAdd(s6_3, M4(1.025e-01, 1.100e-01, 2.124e-02, 8.235e-02, 1.642e-02, 1.116e-02, -7.398e-02, 1.650e-01, 1.213e-01, 8.291e-02, -1.093e-01, 1.562e-01, 5.294e-02, 1.630e-02, 1.326e-02, 1.377e-02), r);\n\tr = MulAdd(s6_4, M4(-1.477e-01, 2.659e-01, 2.785e-01, -1.702e-02, 5.381e-02, 6.180e-02, 2.255e-01, -9.250e-02, 8.226e-03, -3.286e-02, -1.113e-01, 2.175e-01, 9.517e-02, -5.973e-02, 1.623e-01, 3.531e-03), r);\n\tr = MulAdd(s6_5, M4(-1.445e-02, 8.014e-02, 7.004e-02, -3.550e-03, -6.454e-03, -9.602e-02, -1.880e-02, -1.644e-02, -3.149e-02, 1.437e-02, -2.019e-01, 9.239e-02, 4.385e-02, -1.358e-03, 6.189e-02, 1.075e-01), r);\n\tr = MulAdd(s6_6, M4(9.062e-02, 1.489e-01, -5.916e-03, -1.207e-02, -1.120e-01, -1.501e-01, -2.361e-02, -1.059e-01, -1.591e-02, -6.948e-02, -4.074e-02, -9.472e-02, 4.182e-02, 8.275e-02, -4.424e-02, -7.178e-03), r);\n\tr = MulAdd(s6_7, M4(7.850e-02, -7.276e-02, 1.766e-02, -1.310e-03, -1.840e-02, -5.427e-02, 1.062e-01, -9.790e-02, -1.919e-01, -3.143e-02, -9.817e-02, -2.075e-01, -4.986e-02, -1.970e-01, 5.752e-02, 4.696e-02), r);\n\tr = MulAdd(s6_8, M4(5.489e-02, 5.411e-02, -1.389e-02, 1.155e-02, 3.127e-02, -5.246e-02, 4.381e-02, 1.885e-02, 1.272e-01, -7.766e-03, 8.421e-02, -9.790e-02, -4.710e-02, -4.770e-02, 1.131e-02, -1.135e-02), r);\n\tr = MulAdd(s7_0, M4(-4.978e-03, -9.304e-03, 5.564e-02, -1.056e-01, 9.026e-02, 1.009e-01, 1.372e-02, 4.889e-02, 1.704e-02, 1.378e-02, 1.201e-02, -2.870e-02, -2.174e-02, 2.770e-02, 1.059e-02, -9.119e-02), r);\n\tr = MulAdd(s7_1, M4(4.211e-02, -8.833e-02, 3.120e-02, -7.391e-02, 2.726e-03, 3.702e-02, -1.289e-02, -5.863e-02, -1.261e-02, 1.227e-03, -5.446e-02, -1.759e-03, -3.410e-02, 5.307e-02, 7.014e-03, 7.216e-02), r);\n\tr = MulAdd(s7_2, M4(-3.874e-02, -5.673e-02, 6.557e-02, -1.465e-02, 9.029e-03, 6.085e-03, 2.823e-02, 2.922e-02, 1.630e-02, 1.792e-02, 2.728e-02, 1.165e-02, 4.924e-02, 2.339e-02, -3.065e-03, 2.313e-02), r);\n\tr = MulAdd(s7_3, M4(1.333e-01, 7.813e-02, 3.825e-03, 8.089e-02, -9.015e-02, -5.962e-02, 4.826e-02, 3.799e-03, 2.899e-02, -4.016e-02, -2.577e-02, 6.960e-02, 6.438e-02, -3.648e-02, -3.539e-02, -5.573e-03), r);\n\tr = MulAdd(s7_4, M4(6.912e-02, 4.926e-02, 3.699e-02, 4.860e-02, -5.898e-02, -5.131e-02, 3.639e-02, 1.246e-02, 9.589e-02, 7.513e-02, -8.154e-02, 1.216e-01, 4.442e-02, -2.519e-02, 6.937e-02, 4.519e-02), r);\n\tr = MulAdd(s7_5, M4(3.508e-02, 5.932e-02, 2.428e-02, 4.604e-02, -3.467e-02, -7.627e-02, -9.483e-02, 2.525e-02, 1.713e-02, -7.534e-02, 7.597e-03, 1.922e-02, -1.988e-02, -2.680e-02, 8.487e-02, 2.842e-02), r);\n\tr = MulAdd(s7_6, M4(-4.320e-02, -3.851e-02, 2.136e-02, 3.206e-02, 2.904e-02, 5.274e-02, -1.922e-02, 6.804e-03, 1.996e-02, 4.963e-02, -7.505e-02, -1.301e-02, 3.653e-02, 6.219e-04, -3.436e-02, -5.197e-02), r);\n\tr = MulAdd(s7_7, M4(-2.822e-02, 8.996e-03, 2.703e-02, -2.764e-02, -6.224e-02, 1.296e-01, -8.946e-02, 4.212e-04, 2.426e-02, -2.303e-02, -1.459e-02, -9.867e-03, -6.928e-03, 1.073e-02, 3.072e-02, 4.473e-02), r);\n\tr = MulAdd(s7_8, M4(1.142e-02, 4.861e-03, -2.562e-02, 1.876e-02, 8.979e-02, 7.380e-02, 1.226e-02, 4.447e-02, -3.478e-02, 4.412e-02, -2.905e-03, -1.803e-02, -8.343e-02, -6.483e-02, 3.517e-02, -5.902e-02), r);\n\treturn r;\n}\n\nvoid Pass15(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 16\n//!DESC conv15\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.635e-03, -1.028e-02, -3.650e-04, -1.679e-03 };\n\tr = MulAdd(s0_0, M4(1.682e-02, 2.425e-02, 6.033e-03, -1.354e-02, 4.902e-02, -2.423e-02, -2.191e-02, -1.244e-02, 2.555e-02, 1.398e-02, 1.653e-03, 1.456e-02, 1.836e-02, 4.914e-02, -1.220e-02, 2.402e-02), r);\n\tr = MulAdd(s0_1, M4(-1.415e-01, -5.750e-02, 1.052e-01, 2.448e-02, -6.458e-02, 8.314e-03, 7.921e-03, -2.826e-02, 8.116e-02, 2.587e-02, -1.653e-01, 1.925e-02, -3.094e-02, 1.172e-02, 2.412e-02, -1.644e-02), r);\n\tr = MulAdd(s0_2, M4(2.726e-02, -2.295e-02, 3.601e-02, -3.420e-02, 2.458e-02, -3.328e-02, 2.415e-02, -3.922e-03, 1.014e-01, 3.177e-02, 8.030e-02, -3.316e-04, -1.294e-01, -3.477e-03, -2.168e-03, -4.343e-02), r);\n\tr = MulAdd(s0_3, M4(5.999e-02, -1.569e-03, 4.338e-03, -3.949e-03, 5.016e-02, 1.272e-02, -5.577e-02, 9.612e-03, -4.428e-02, -1.158e-01, -1.747e-03, -3.783e-02, 2.071e-02, -6.513e-02, -9.574e-02, 1.217e-02), r);\n\tr = MulAdd(s0_4, M4(-6.832e-02, 3.306e-02, 3.602e-02, -1.176e-01, -1.634e-02, 8.846e-03, -4.939e-02, 3.965e-02, -1.110e-01, 4.198e-02, -1.919e-01, 3.252e-02, -3.235e-01, -4.438e-02, 3.970e-02, -9.790e-02), r);\n\tr = MulAdd(s0_5, M4(7.532e-04, -3.379e-02, 1.206e-01, -1.262e-02, 5.126e-03, 1.393e-02, 9.355e-02, -1.952e-02, 1.288e-02, -5.581e-02, 4.603e-02, 6.297e-03, 7.578e-02, 6.956e-02, 1.251e-02, 8.053e-02), r);\n\tr = MulAdd(s0_6, M4(-8.240e-03, -4.579e-02, 8.483e-03, 5.418e-02, 6.400e-02, -3.510e-02, -4.983e-02, 3.210e-02, -7.979e-03, 3.418e-02, 1.844e-02, -1.444e-02, 3.045e-02, -5.388e-02, -3.282e-02, -1.676e-02), r);\n\tr = MulAdd(s0_7, M4(-5.499e-02, 4.137e-03, 6.030e-02, 7.094e-02, -6.567e-02, -7.267e-02, -1.662e-02, -7.336e-02, -6.070e-03, -8.680e-02, -3.998e-03, 1.843e-02, -7.485e-02, 3.307e-02, 4.805e-02, 3.993e-02), r);\n\tr = MulAdd(s0_8, M4(1.536e-02, 2.666e-02, 3.056e-02, -1.114e-02, 2.242e-02, 6.991e-03, -2.173e-03, 3.283e-02, -5.911e-02, 2.191e-02, 3.963e-02, -2.860e-02, 5.899e-02, -3.175e-02, 5.169e-02, -2.245e-02), r);\n\tr = MulAdd(s1_0, M4(6.282e-02, 4.438e-02, -3.383e-02, -3.169e-03, -1.302e-02, 6.962e-02, -1.602e-02, 1.114e-02, -1.264e-02, -3.295e-02, 2.876e-02, 2.982e-02, -3.565e-02, 6.198e-02, -4.253e-02, 1.322e-02), r);\n\tr = MulAdd(s1_1, M4(-2.256e-01, 4.261e-02, 7.907e-02, -4.247e-02, -1.645e-02, -4.936e-02, 4.114e-02, -4.063e-02, -2.386e-02, 4.551e-02, -1.485e-01, -1.643e-02, -2.257e-01, -4.944e-02, -2.584e-03, -9.462e-03), r);\n\tr = MulAdd(s1_2, M4(4.578e-02, 2.807e-02, -8.221e-03, -6.325e-02, -8.816e-02, -6.825e-03, -2.188e-02, -5.079e-02, 1.666e-02, 2.919e-03, 3.045e-02, -3.505e-02, 2.878e-02, 1.035e-03, 2.864e-02, 1.354e-02), r);\n\tr = MulAdd(s1_3, M4(2.020e-01, -8.129e-02, 4.874e-03, -4.772e-02, 1.859e-02, 2.295e-01, -8.389e-02, 1.096e-01, 1.270e-02, 9.785e-02, 1.383e-01, -8.565e-02, 3.833e-02, 5.794e-02, 1.007e-03, -1.219e-01), r);\n\tr = MulAdd(s1_4, M4(3.020e-01, 1.345e-01, 1.214e-01, -1.476e-01, 2.721e-02, 5.156e-02, 1.066e-01, -7.236e-02, -6.882e-03, -1.193e-01, -2.321e-01, 1.603e-01, -2.560e-01, -9.591e-02, -7.915e-02, -7.280e-02), r);\n\tr = MulAdd(s1_5, M4(5.588e-02, -3.970e-02, 5.567e-02, 9.945e-02, 7.813e-02, 2.689e-03, -4.028e-02, 5.141e-02, -1.109e-01, -1.519e-01, -2.412e-02, 5.308e-02, 4.241e-02, 1.421e-01, 8.538e-02, -3.083e-02), r);\n\tr = MulAdd(s1_6, M4(4.734e-02, 1.498e-03, -1.688e-02, 8.204e-02, 6.827e-02, -9.353e-02, -6.352e-02, -7.212e-02, -7.166e-03, -2.990e-02, -6.335e-02, 5.694e-02, 3.916e-02, -5.895e-02, -5.882e-02, 2.516e-02), r);\n\tr = MulAdd(s1_7, M4(4.143e-02, -8.794e-02, 2.631e-02, 2.151e-01, 5.745e-02, -2.816e-02, 2.094e-02, 4.433e-02, 1.357e-01, -8.145e-02, -5.290e-02, 1.230e-01, -1.741e-02, -3.334e-02, 7.489e-02, -1.465e-02), r);\n\tr = MulAdd(s1_8, M4(4.237e-02, 4.545e-02, -1.561e-02, 1.046e-01, 6.236e-02, -3.658e-02, 3.117e-03, -5.313e-02, -5.248e-02, -3.058e-02, 5.975e-02, -4.943e-02, -4.859e-03, 2.759e-02, -6.380e-02, 5.511e-03), r);\n\tr = MulAdd(s2_0, M4(-1.698e-02, 2.008e-02, 4.178e-02, 5.254e-03, -1.866e-02, 6.468e-02, 3.264e-02, 4.248e-02, -1.613e-02, 1.055e-02, 4.652e-03, -2.110e-02, -1.071e-02, -2.709e-03, -9.281e-03, 1.559e-02), r);\n\tr = MulAdd(s2_1, M4(-1.443e-01, 8.375e-02, 2.033e-02, -3.873e-03, 1.029e-01, 4.871e-02, 5.010e-02, -1.688e-02, -7.934e-02, -9.075e-02, 3.202e-03, 6.989e-03, -1.968e-02, 4.563e-02, -3.979e-02, 5.553e-02), r);\n\tr = MulAdd(s2_2, M4(2.630e-02, 5.112e-02, 3.405e-02, -1.654e-01, 4.047e-02, 4.512e-02, 2.716e-02, -1.259e-02, 2.451e-02, -2.394e-02, 4.361e-02, -2.896e-02, 2.850e-02, 1.479e-02, -5.123e-02, 4.183e-02), r);\n\tr = MulAdd(s2_3, M4(7.516e-02, -8.210e-03, -4.111e-03, 4.448e-02, -5.627e-02, 2.278e-03, 4.189e-02, -4.233e-02, -2.394e-02, -2.066e-02, 1.324e-03, -3.099e-02, 3.708e-03, 3.445e-02, -1.211e-02, 8.406e-03), r);\n\tr = MulAdd(s2_4, M4(4.450e-02, 3.494e-02, 5.925e-03, 2.108e-02, -2.367e-01, -4.596e-03, -5.752e-02, -2.565e-01, 3.773e-01, -1.032e-02, -8.405e-02, -8.625e-02, -6.044e-02, -1.957e-02, 6.003e-02, -1.532e-01), r);\n\tr = MulAdd(s2_5, M4(-1.677e-02, -8.374e-02, 9.221e-04, -7.647e-02, -1.666e-02, -1.848e-02, -7.573e-03, -1.446e-02, -4.613e-02, -2.494e-02, 4.640e-02, 2.289e-02, -5.411e-02, 8.961e-03, 1.322e-01, -1.519e-01), r);\n\tr = MulAdd(s2_6, M4(-4.333e-02, 4.873e-03, -2.330e-02, -1.203e-02, -1.656e-02, -5.966e-02, -2.807e-03, 2.686e-02, -4.143e-02, -4.584e-03, -2.170e-03, 8.825e-03, 1.156e-02, -5.674e-03, -1.562e-02, -5.008e-03), r);\n\tr = MulAdd(s2_7, M4(4.915e-02, 2.856e-02, -4.347e-02, 6.325e-02, -1.408e-02, 7.563e-02, 1.125e-01, -1.700e-01, 6.698e-03, -9.449e-02, -1.623e-03, 7.157e-02, -3.837e-02, 1.442e-02, 6.002e-02, 3.344e-02), r);\n\tr = MulAdd(s2_8, M4(1.424e-03, -1.889e-02, -2.530e-02, -1.584e-02, 3.956e-02, 2.339e-02, 1.996e-02, 9.705e-03, -5.004e-02, -4.270e-02, 1.243e-02, 2.805e-02, -2.629e-02, 1.128e-02, -2.821e-02, 4.977e-02), r);\n\tr = MulAdd(s3_0, M4(2.344e-03, -1.510e-02, 2.258e-02, -2.662e-02, 4.342e-03, -2.228e-02, -1.850e-02, 1.700e-02, -4.349e-02, 1.978e-02, -7.904e-03, 6.129e-02, -8.322e-03, -3.489e-02, 3.685e-02, 1.218e-02), r);\n\tr = MulAdd(s3_1, M4(1.137e-01, -2.344e-01, -2.425e-01, -2.087e-01, -7.206e-02, 2.724e-03, 2.830e-02, -3.068e-02, -8.735e-02, -2.185e-03, 3.007e-02, 5.390e-02, 1.068e-01, -1.539e-02, -8.570e-02, 4.549e-02), r);\n\tr = MulAdd(s3_2, M4(3.499e-02, 1.594e-02, -9.933e-02, -7.474e-02, 1.051e-02, -2.210e-02, 3.491e-02, -8.810e-03, -4.210e-02, 1.901e-02, 2.575e-02, -1.876e-02, 9.872e-03, 2.527e-02, 1.904e-02, 3.485e-02), r);\n\tr = MulAdd(s3_3, M4(1.892e-02, 5.257e-03, 6.593e-02, -1.068e-01, -1.009e-01, -2.306e-02, -1.774e-02, -1.073e-01, -6.668e-02, -3.584e-02, -7.708e-03, -3.551e-02, -3.283e-03, 3.566e-03, 1.590e-03, -2.380e-02), r);\n\tr = MulAdd(s3_4, M4(6.213e-04, -3.430e-02, -1.038e-01, 1.743e-01, -1.318e-01, -3.481e-02, 4.391e-02, -5.380e-02, 1.526e-01, -7.420e-03, -4.670e-02, -1.651e-02, -1.487e-01, -8.589e-02, -1.704e-01, 1.922e-02), r);\n\tr = MulAdd(s3_5, M4(1.096e-01, -4.456e-02, 1.130e-01, -2.652e-01, -4.299e-02, -1.735e-02, 1.206e-01, -5.507e-02, -2.571e-02, 7.543e-03, -5.169e-02, 1.070e-01, -6.630e-02, -2.834e-02, 1.781e-01, 4.697e-02), r);\n\tr = MulAdd(s3_6, M4(-1.036e-02, -2.780e-02, 7.376e-03, -2.156e-02, -2.542e-02, -4.496e-02, 1.697e-02, 2.637e-02, -2.082e-02, 2.391e-02, -2.514e-03, 7.337e-02, 7.580e-02, -4.554e-02, -2.737e-02, 3.262e-02), r);\n\tr = MulAdd(s3_7, M4(-7.323e-03, 4.827e-02, -2.236e-02, 3.041e-02, 1.176e-02, -5.546e-02, 7.340e-02, -6.719e-03, -2.321e-02, 4.693e-02, -3.563e-02, 1.035e-02, -1.612e-02, -9.980e-02, -9.701e-02, -6.659e-02), r);\n\tr = MulAdd(s3_8, M4(-1.683e-02, 1.837e-02, -1.291e-02, -6.702e-02, -8.351e-02, 1.838e-02, 4.611e-03, 1.597e-02, -1.131e-02, -5.924e-03, -2.187e-02, 7.444e-02, 1.927e-02, 1.152e-01, 1.523e-01, 2.847e-02), r);\n\tr = MulAdd(s4_0, M4(-1.699e-02, -1.167e-02, -1.304e-03, 2.278e-02, -6.011e-02, -8.199e-03, -2.469e-02, -2.724e-02, -7.896e-02, 3.514e-02, -4.913e-02, 4.323e-02, -4.083e-02, -2.205e-02, 4.041e-03, -3.569e-02), r);\n\tr = MulAdd(s4_1, M4(-1.868e-02, -1.643e-03, 4.291e-02, 2.588e-02, 4.562e-02, 2.170e-02, 4.389e-02, 2.023e-02, -3.285e-02, 1.572e-01, -5.427e-02, -3.453e-02, 1.614e-01, -3.315e-02, 9.291e-02, 2.523e-02), r);\n\tr = MulAdd(s4_2, M4(-5.716e-02, 2.952e-02, 3.345e-03, 1.417e-02, 7.218e-02, 3.521e-02, 5.576e-02, -1.665e-02, 5.210e-02, -1.169e-03, -1.382e-02, 2.093e-02, 1.369e-01, 2.903e-02, 6.485e-03, 2.985e-02), r);\n\tr = MulAdd(s4_3, M4(-5.154e-03, -7.552e-02, -4.847e-02, -1.900e-02, -4.854e-02, -1.988e-02, 2.748e-02, 1.465e-02, -4.519e-02, -1.215e-01, -8.303e-02, -5.047e-02, 5.773e-03, 8.883e-02, -3.625e-02, 3.724e-02), r);\n\tr = MulAdd(s4_4, M4(1.215e-01, -6.698e-02, 1.472e-01, 4.760e-02, 4.249e-02, -9.318e-02, 2.074e-01, -7.291e-02, -2.521e-02, -1.567e-01, 5.401e-02, 1.068e-01, -1.088e-01, -4.689e-02, 1.450e-01, -2.702e-02), r);\n\tr = MulAdd(s4_5, M4(-7.204e-04, 4.627e-02, 8.406e-02, -4.793e-02, -1.044e-01, -1.752e-02, -1.223e-01, -2.838e-02, -1.513e-02, 2.866e-02, -6.117e-02, 6.588e-02, -4.003e-02, 2.135e-02, -3.993e-02, 3.138e-02), r);\n\tr = MulAdd(s4_6, M4(-1.858e-02, 1.069e-01, 1.917e-02, -5.787e-03, 2.869e-03, -1.855e-02, 2.874e-02, -6.176e-03, 5.764e-02, -4.411e-02, 2.198e-02, -9.514e-02, -6.286e-02, 4.674e-02, -6.493e-02, 1.780e-02), r);\n\tr = MulAdd(s4_7, M4(1.470e-01, -3.257e-02, -4.421e-02, 5.879e-02, -2.092e-02, 7.217e-02, 6.232e-02, 8.477e-03, 1.634e-02, -4.973e-03, -1.537e-02, -8.101e-02, -1.271e-01, 1.621e-01, 7.392e-02, 2.400e-02), r);\n\tr = MulAdd(s4_8, M4(-3.555e-02, -3.285e-02, 7.891e-02, -3.678e-02, -6.757e-02, 4.733e-02, -1.116e-02, -2.527e-02, -2.691e-02, 3.767e-02, 2.019e-02, -2.048e-02, -5.428e-02, 3.365e-02, -4.707e-02, -7.004e-02), r);\n\tr = MulAdd(s5_0, M4(-2.108e-02, 1.779e-02, -2.833e-03, 3.292e-03, 5.820e-02, 7.601e-02, 6.101e-02, -1.330e-03, -1.138e-01, 7.445e-02, -7.096e-02, 6.305e-02, -2.494e-02, 2.407e-02, 8.140e-03, -1.834e-02), r);\n\tr = MulAdd(s5_1, M4(-2.880e-02, 5.085e-03, 2.434e-02, 2.508e-02, 1.602e-01, 1.564e-02, 5.507e-02, -7.678e-02, 9.892e-02, 3.094e-02, -2.829e-02, -7.596e-02, -3.132e-02, -5.615e-02, 1.057e-02, -3.444e-02), r);\n\tr = MulAdd(s5_2, M4(-1.577e-01, 8.848e-03, 2.636e-02, 5.279e-02, 1.705e-02, 1.786e-02, 2.434e-02, -7.094e-02, -7.860e-03, -5.334e-03, 1.383e-02, -5.143e-03, -2.998e-02, 2.062e-02, -4.367e-02, 5.676e-04), r);\n\tr = MulAdd(s5_3, M4(-1.425e-02, -4.238e-02, -6.793e-02, 4.202e-02, -7.728e-02, -9.246e-02, -7.324e-02, 1.616e-01, -1.074e-01, -2.153e-01, 5.838e-02, -1.196e-01, 1.985e-02, -5.314e-03, 5.793e-02, 3.626e-02), r);\n\tr = MulAdd(s5_4, M4(-1.126e-01, 3.180e-02, 2.878e-01, -1.492e-02, 1.474e-01, -1.059e-01, 4.287e-01, -1.011e-01, -1.807e-01, -2.479e-01, 1.394e-01, 1.323e-02, -1.739e-02, 1.892e-01, -1.471e-02, 7.751e-02), r);\n\tr = MulAdd(s5_5, M4(-2.764e-01, -2.786e-02, -2.956e-02, 3.056e-02, 1.450e-01, 8.922e-02, -3.140e-02, 9.458e-03, -8.860e-02, -2.775e-03, 1.361e-02, -3.029e-02, 6.369e-02, -1.583e-02, 2.707e-02, 3.723e-02), r);\n\tr = MulAdd(s5_6, M4(-2.289e-02, 4.078e-02, 3.194e-02, -9.888e-02, 2.521e-02, 2.108e-02, -9.092e-03, 2.643e-02, -9.351e-03, 3.902e-02, 3.222e-02, 4.324e-02, 2.597e-02, -2.693e-02, 3.525e-02, 3.717e-04), r);\n\tr = MulAdd(s5_7, M4(1.820e-02, 2.229e-01, 1.687e-01, 6.165e-02, -3.438e-02, -2.363e-02, 3.922e-02, -5.587e-02, -6.921e-02, 5.308e-02, -7.363e-02, -1.111e-01, 2.304e-02, -2.049e-02, 2.426e-02, -3.094e-02), r);\n\tr = MulAdd(s5_8, M4(-3.477e-02, 7.511e-02, -1.020e-02, 1.072e-02, 1.418e-02, -1.736e-02, 4.884e-02, -1.775e-02, -5.870e-02, 2.241e-02, 1.193e-02, -3.586e-02, -1.182e-02, 3.054e-03, 8.716e-03, -5.858e-02), r);\n\tr = MulAdd(s6_0, M4(1.296e-02, 4.521e-02, 5.553e-02, 7.200e-03, 2.228e-01, 1.527e-01, 8.212e-02, 3.697e-02, -1.005e-01, 2.319e-02, 6.224e-02, -3.363e-02, -2.382e-02, 4.781e-03, 2.328e-02, 2.167e-02), r);\n\tr = MulAdd(s6_1, M4(6.700e-02, -8.083e-02, -5.504e-02, -4.573e-02, 8.391e-02, -1.270e-01, 1.212e-01, 1.590e-01, 5.235e-02, 5.567e-03, -9.952e-02, 5.426e-02, 1.405e-01, 2.182e-02, 2.855e-02, -5.070e-02), r);\n\tr = MulAdd(s6_2, M4(1.222e-02, -1.297e-02, 3.429e-02, 5.959e-03, 3.504e-02, 2.729e-02, -1.018e-01, 2.322e-02, -2.360e-02, 5.587e-02, 2.109e-02, -2.796e-02, 1.145e-02, 1.383e-02, -4.523e-02, 4.067e-02), r);\n\tr = MulAdd(s6_3, M4(3.378e-02, 4.414e-02, 4.556e-02, 9.837e-02, 9.577e-02, -1.596e-01, 5.565e-02, 3.433e-02, -3.580e-02, 6.830e-02, -8.804e-03, 1.014e-01, 6.641e-03, -3.026e-02, -1.278e-02, -8.684e-02), r);\n\tr = MulAdd(s6_4, M4(1.560e-02, 1.232e-01, -8.372e-03, -1.660e-01, -3.968e-01, 2.330e-01, 2.028e-02, 2.646e-01, 6.223e-02, 2.275e-01, 2.140e-01, -2.405e-02, 4.579e-01, -4.541e-02, 9.614e-02, -7.645e-02), r);\n\tr = MulAdd(s6_5, M4(-3.295e-02, -2.743e-02, -4.794e-02, 1.720e-02, -7.849e-02, 1.575e-01, -1.164e-02, -2.347e-01, 4.284e-02, 1.307e-02, 4.038e-02, -1.861e-02, 1.120e-01, -9.979e-02, 4.783e-02, 6.604e-02), r);\n\tr = MulAdd(s6_6, M4(8.715e-03, 2.297e-02, 6.982e-02, 3.485e-02, 6.133e-04, -7.565e-02, 5.968e-02, 3.948e-02, 4.576e-02, -4.137e-02, 2.947e-02, -2.206e-02, 4.394e-02, 9.766e-03, 2.729e-02, 4.977e-02), r);\n\tr = MulAdd(s6_7, M4(6.549e-02, -8.800e-02, -4.819e-03, 5.421e-02, -1.500e-01, 2.293e-01, -4.927e-02, -8.280e-02, -7.289e-02, 4.010e-02, -1.511e-03, 1.767e-02, 1.719e-01, -1.322e-01, 4.552e-02, 5.485e-02), r);\n\tr = MulAdd(s6_8, M4(-2.826e-03, 3.567e-02, -1.578e-02, -4.386e-02, 1.998e-02, 5.044e-02, -6.815e-02, 9.634e-02, -1.888e-02, -3.089e-02, 2.895e-02, -3.653e-02, 2.965e-03, -2.441e-02, 6.077e-03, 1.507e-02), r);\n\tr = MulAdd(s7_0, M4(1.559e-02, -2.477e-02, 1.646e-02, -2.687e-03, 3.154e-02, -3.535e-02, -4.525e-02, -4.382e-03, -1.899e-02, 4.651e-02, -2.069e-02, 4.084e-02, -9.179e-02, 7.984e-02, -2.161e-02, 8.234e-03), r);\n\tr = MulAdd(s7_1, M4(3.448e-01, -1.541e-01, 2.134e-02, 1.274e-01, -2.197e-02, 1.101e-01, 5.202e-02, 5.462e-04, -2.449e-02, 3.539e-02, 5.465e-03, 5.482e-04, -5.681e-02, 6.304e-02, 3.042e-02, -6.518e-02), r);\n\tr = MulAdd(s7_2, M4(3.896e-02, -5.241e-02, -1.705e-02, 1.453e-02, -2.905e-02, 2.946e-02, -3.594e-02, 9.768e-03, 5.370e-02, 3.684e-02, 4.114e-02, -2.328e-02, -1.514e-02, 1.587e-02, -4.130e-02, 2.270e-02), r);\n\tr = MulAdd(s7_3, M4(5.886e-02, -1.587e-02, -1.114e-01, 1.225e-01, -1.327e-02, -1.252e-02, 1.093e-03, -2.380e-02, -7.611e-02, 1.196e-01, 3.984e-02, 1.318e-02, -2.988e-02, 2.065e-02, -2.236e-02, -1.081e-02), r);\n\tr = MulAdd(s7_4, M4(1.103e-01, 4.765e-02, -5.338e-02, -2.094e-01, -8.771e-03, 1.563e-02, 4.116e-02, 1.174e-01, 6.051e-02, 1.695e-01, -2.698e-01, 4.236e-02, 2.473e-01, 7.253e-02, 6.745e-02, -5.874e-02), r);\n\tr = MulAdd(s7_5, M4(1.658e-02, -2.497e-02, 2.890e-02, -4.542e-02, -1.103e-02, 8.418e-03, -6.931e-02, -4.678e-02, -5.040e-02, 3.276e-02, 5.987e-02, -8.001e-03, 6.639e-03, -1.172e-02, -1.427e-02, 3.096e-02), r);\n\tr = MulAdd(s7_6, M4(-4.578e-02, 2.777e-02, 1.938e-02, -5.613e-02, -1.625e-03, 6.662e-03, 3.588e-03, 1.572e-02, 6.106e-02, -8.091e-02, -8.481e-03, 2.078e-02, -1.129e-02, 1.477e-02, 1.200e-02, 5.556e-02), r);\n\tr = MulAdd(s7_7, M4(-1.667e-02, -8.641e-03, -6.570e-02, -6.897e-02, 2.494e-02, -2.685e-02, 3.873e-02, 7.151e-02, 1.727e-02, -1.895e-01, 5.898e-03, 8.379e-02, 3.347e-02, -7.388e-03, -1.169e-02, 9.291e-02), r);\n\tr = MulAdd(s7_8, M4(-4.583e-02, 4.776e-02, 3.371e-02, 9.204e-02, 5.692e-03, -2.458e-02, -2.136e-03, -6.759e-03, -1.187e-02, -4.081e-02, -3.127e-04, -5.903e-02, -2.843e-02, 2.085e-02, 7.936e-03, -3.616e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -5.671e-03, 3.110e-03, -6.021e-03, -1.366e-02 };\n\tr = MulAdd(s0_0, M4(-8.601e-03, -6.582e-03, -3.411e-02, 1.939e-02, 4.268e-02, 6.203e-02, -8.224e-03, -3.973e-02, 1.102e-03, -2.386e-02, 2.198e-03, -2.039e-02, 1.227e-02, 5.214e-02, 8.288e-02, -2.762e-02), r);\n\tr = MulAdd(s0_1, M4(-1.028e-01, -3.378e-02, 3.985e-03, -6.257e-02, -8.930e-02, 2.849e-02, 2.765e-02, 5.202e-03, -6.127e-02, 5.845e-02, 3.884e-02, 3.214e-02, 5.885e-02, 1.254e-01, -4.733e-02, 1.318e-02), r);\n\tr = MulAdd(s0_2, M4(-1.913e-02, -2.165e-02, -4.609e-02, -4.058e-03, 5.175e-02, -4.665e-02, -2.321e-03, 3.057e-02, 1.789e-02, -5.633e-03, 5.981e-04, 2.946e-02, -7.567e-02, 7.726e-02, -1.335e-02, -2.231e-02), r);\n\tr = MulAdd(s0_3, M4(-4.422e-04, 3.932e-03, -3.747e-02, 4.274e-02, -9.728e-02, -3.055e-02, 8.176e-02, -1.070e-02, -5.158e-03, 3.761e-02, -6.999e-02, -7.594e-02, 5.391e-02, 5.079e-02, 1.043e-02, -5.175e-02), r);\n\tr = MulAdd(s0_4, M4(1.082e-01, 5.860e-02, 3.859e-02, -4.705e-02, 1.514e-01, 6.110e-02, -4.016e-02, 4.433e-02, -3.790e-02, 7.997e-02, 1.072e-01, 1.340e-01, -5.815e-02, 1.407e-01, -1.296e-01, -4.753e-03), r);\n\tr = MulAdd(s0_5, M4(-9.001e-02, -7.560e-02, -1.656e-02, -2.018e-02, -3.487e-02, -4.206e-02, -1.692e-02, -9.395e-02, -5.462e-02, -5.607e-02, -5.984e-02, -4.008e-02, -6.659e-03, 8.550e-02, 1.101e-01, -5.317e-02), r);\n\tr = MulAdd(s0_6, M4(6.021e-02, 4.988e-03, 2.403e-02, 4.262e-02, 1.789e-02, -1.716e-02, 3.987e-02, -1.076e-01, -4.748e-02, -1.764e-02, -2.308e-02, -6.401e-03, -4.589e-02, 5.688e-03, 6.622e-02, -1.210e-02), r);\n\tr = MulAdd(s0_7, M4(-3.895e-02, -7.578e-02, -1.271e-02, 3.790e-02, 2.351e-02, -7.459e-03, -7.894e-02, 8.670e-02, 3.250e-02, 2.430e-02, 1.983e-01, -5.784e-02, 7.884e-03, 3.934e-02, 3.260e-02, -2.293e-03), r);\n\tr = MulAdd(s0_8, M4(-5.708e-03, 7.520e-03, 7.843e-03, -5.089e-02, 1.425e-02, -3.691e-02, 2.940e-02, -5.235e-02, -5.730e-03, 4.717e-02, -6.712e-02, -1.439e-02, 3.397e-03, -2.686e-02, -3.211e-02, 3.169e-02), r);\n\tr = MulAdd(s1_0, M4(1.214e-01, 3.325e-02, -3.898e-02, -2.344e-02, -9.315e-04, -2.041e-02, 5.530e-02, -2.324e-02, 4.248e-02, 2.593e-02, 3.256e-02, -7.669e-02, 1.557e-01, 4.900e-02, 3.043e-02, 7.165e-02), r);\n\tr = MulAdd(s1_1, M4(1.686e-02, -3.408e-03, 2.398e-02, 1.666e-02, 1.708e-01, 1.248e-01, 1.701e-02, 3.409e-02, 3.102e-02, -3.924e-02, -2.257e-02, 9.244e-02, -2.682e-01, -5.456e-04, -3.090e-02, -5.209e-03), r);\n\tr = MulAdd(s1_2, M4(-2.618e-02, -1.067e-01, -4.634e-02, 4.220e-02, 2.643e-02, 9.070e-02, -5.263e-02, 3.797e-02, -5.021e-02, -1.616e-02, 4.030e-03, -3.554e-02, 2.286e-02, -1.367e-02, 3.119e-02, 1.015e-02), r);\n\tr = MulAdd(s1_3, M4(-2.950e-02, 1.674e-02, 2.861e-02, 1.752e-02, 4.014e-02, -2.871e-02, 8.586e-02, -8.958e-02, -7.844e-02, 1.151e-01, -2.350e-02, -7.249e-02, -9.022e-02, -1.141e-02, -2.103e-02, 4.276e-02), r);\n\tr = MulAdd(s1_4, M4(2.100e-01, 1.922e-01, 1.508e-01, -5.379e-02, -3.848e-02, 1.576e-02, -9.808e-02, -1.428e-02, 1.951e-02, 5.196e-02, 9.626e-02, 1.713e-01, 2.680e-02, 3.359e-02, 1.538e-01, -1.678e-01), r);\n\tr = MulAdd(s1_5, M4(-2.676e-02, -5.017e-02, 1.711e-02, -8.962e-03, 4.523e-02, -7.491e-03, 1.255e-02, 5.464e-02, -1.861e-02, 1.094e-02, -1.444e-01, 1.939e-01, -5.640e-02, -8.468e-02, 8.226e-02, -5.069e-02), r);\n\tr = MulAdd(s1_6, M4(3.551e-02, -5.975e-03, -9.157e-02, 7.229e-02, 2.613e-02, 4.336e-02, 5.629e-02, -4.503e-02, 8.956e-02, -2.216e-02, 4.932e-02, -9.898e-02, -3.663e-02, -5.785e-03, -4.379e-03, -2.736e-02), r);\n\tr = MulAdd(s1_7, M4(-4.389e-02, -6.559e-02, -5.097e-02, 1.689e-01, 3.005e-02, -8.020e-02, -5.782e-02, -5.943e-02, -4.287e-02, -4.531e-02, 1.082e-01, 9.099e-02, 2.794e-02, -8.429e-02, 5.045e-02, 3.386e-02), r);\n\tr = MulAdd(s1_8, M4(-5.677e-02, 1.692e-02, 1.682e-02, -4.944e-02, -3.779e-03, 7.763e-03, 6.527e-02, 4.990e-02, 6.281e-02, 4.041e-02, -3.078e-02, -1.150e-01, -2.607e-02, 1.357e-02, 2.250e-02, -1.061e-03), r);\n\tr = MulAdd(s2_0, M4(1.168e-02, -3.367e-03, -1.838e-02, -4.618e-04, 7.513e-02, -1.033e-01, 2.657e-02, 4.725e-02, -3.215e-02, -1.714e-02, -2.661e-02, 7.999e-03, -4.803e-02, 4.129e-02, 2.604e-02, 7.083e-03), r);\n\tr = MulAdd(s2_1, M4(-5.143e-02, -3.167e-02, -1.929e-02, 2.222e-02, 5.725e-02, -7.263e-02, -2.430e-02, 4.913e-02, 3.209e-02, -1.623e-02, -1.380e-02, -4.886e-03, 7.903e-02, -4.085e-02, 4.204e-02, 7.106e-02), r);\n\tr = MulAdd(s2_2, M4(-1.937e-02, -3.364e-02, -1.153e-01, -3.498e-02, 1.881e-02, -5.985e-02, 1.939e-02, 1.030e-02, 9.003e-03, 4.089e-02, -1.083e-02, 3.718e-03, -1.791e-02, -4.284e-02, -4.109e-02, 2.672e-02), r);\n\tr = MulAdd(s2_3, M4(5.432e-02, -5.027e-03, 2.724e-02, -6.687e-03, 5.104e-02, -1.343e-01, 9.001e-04, -9.696e-02, -2.136e-02, 1.197e-02, -6.296e-02, -2.861e-02, 2.310e-02, 7.527e-03, 2.415e-02, -4.223e-03), r);\n\tr = MulAdd(s2_4, M4(-4.222e-03, -6.228e-02, -1.509e-01, -8.201e-02, 1.155e-01, -4.310e-01, -1.757e-01, 2.800e-01, -4.084e-02, 4.121e-02, -8.184e-02, -4.839e-02, -1.301e-02, 2.227e-02, -1.339e-01, 5.871e-02), r);\n\tr = MulAdd(s2_5, M4(-9.458e-03, 7.936e-02, -1.990e-01, 1.793e-02, 2.483e-02, 4.884e-02, -5.488e-02, 4.765e-02, -5.672e-02, -6.385e-02, 4.981e-02, -2.746e-02, 7.430e-03, -3.283e-02, -6.200e-02, -5.240e-02), r);\n\tr = MulAdd(s2_6, M4(1.438e-02, 9.243e-03, 3.567e-02, 4.069e-02, 2.272e-02, -7.911e-02, 8.448e-02, 5.721e-02, 7.491e-03, -1.728e-03, -9.171e-04, -3.387e-02, -1.349e-02, -5.936e-03, 4.996e-02, 1.358e-02), r);\n\tr = MulAdd(s2_7, M4(-9.619e-03, -6.562e-02, 1.305e-01, -3.528e-02, -4.942e-02, -1.092e-01, 1.221e-01, -1.901e-01, 2.335e-02, -5.793e-03, 3.086e-02, 1.013e-02, -1.117e-02, -3.033e-02, 6.326e-03, -3.675e-02), r);\n\tr = MulAdd(s2_8, M4(-2.431e-02, 9.791e-03, 2.136e-02, 6.850e-02, -1.999e-02, -4.306e-02, -1.675e-03, 5.616e-02, 2.023e-02, 2.193e-02, -1.861e-03, -1.003e-01, 4.180e-02, 1.627e-02, -4.788e-02, 3.224e-02), r);\n\tr = MulAdd(s3_0, M4(3.267e-02, -3.499e-02, -7.962e-02, -7.279e-02, 1.523e-02, 1.956e-02, 8.232e-03, 2.147e-02, 2.011e-02, 5.484e-02, 3.180e-03, 3.681e-02, -3.856e-02, 1.450e-02, -2.829e-02, 1.920e-02), r);\n\tr = MulAdd(s3_1, M4(-2.308e-01, -1.285e-01, -1.482e-01, 1.029e-02, -2.365e-02, -3.520e-02, -4.704e-02, 5.336e-02, 1.440e-01, -3.500e-03, -1.131e-02, 6.858e-02, -1.470e-02, 7.266e-03, -5.802e-02, -2.166e-02), r);\n\tr = MulAdd(s3_2, M4(2.163e-02, 7.730e-02, 6.253e-02, 5.941e-03, 1.301e-02, -2.332e-02, -1.305e-02, -1.120e-02, -1.467e-03, 7.855e-03, -3.129e-03, 3.219e-02, -2.022e-02, -1.941e-01, -6.155e-02, 2.742e-02), r);\n\tr = MulAdd(s3_3, M4(-2.398e-03, -1.927e-03, -2.212e-02, -6.206e-02, 1.487e-01, -7.284e-03, -3.888e-02, 1.234e-01, 1.429e-01, 1.726e-02, -2.675e-03, 3.603e-02, -9.363e-03, -2.200e-02, 4.138e-02, -2.461e-02), r);\n\tr = MulAdd(s3_4, M4(5.053e-02, 5.732e-02, -1.047e-01, 3.853e-02, 1.817e-01, -5.273e-02, -1.095e-02, 6.719e-05, -5.379e-02, -2.017e-02, 6.698e-02, 1.299e-03, 8.860e-03, 6.885e-02, -2.918e-01, -2.079e-01), r);\n\tr = MulAdd(s3_5, M4(-1.218e-02, -4.579e-02, -2.587e-01, -3.481e-02, -1.030e-01, -1.140e-01, -5.113e-02, -2.633e-02, -2.690e-02, 7.111e-02, 2.261e-02, 5.536e-02, 3.036e-03, -1.335e-01, 1.926e-01, -7.739e-03), r);\n\tr = MulAdd(s3_6, M4(9.332e-04, -2.945e-03, -9.446e-03, -2.501e-03, -3.572e-02, -3.509e-02, -5.397e-02, 6.588e-02, -1.826e-02, 1.116e-02, -2.588e-02, 6.469e-02, -3.611e-02, -3.796e-02, -4.616e-02, 5.419e-02), r);\n\tr = MulAdd(s3_7, M4(-3.571e-02, 5.027e-02, -3.355e-02, 1.392e-02, -4.209e-02, 1.325e-02, 9.041e-02, 6.816e-03, 5.562e-02, 5.222e-02, 7.295e-02, 3.209e-02, 9.354e-02, 6.756e-02, 2.764e-01, -6.637e-02), r);\n\tr = MulAdd(s3_8, M4(-2.529e-02, -8.631e-03, 2.602e-02, 8.646e-03, -1.568e-02, 9.391e-02, -1.124e-01, -4.199e-02, 1.958e-02, 3.264e-02, 7.642e-02, 5.693e-02, 6.536e-02, -8.633e-02, -3.207e-01, -1.304e-01), r);\n\tr = MulAdd(s4_0, M4(-4.815e-02, 6.615e-02, 3.727e-02, -3.287e-02, 3.298e-02, 7.714e-02, -4.852e-02, 8.404e-02, 6.533e-02, -1.181e-02, 3.470e-02, -5.589e-04, 2.704e-02, -9.294e-02, -5.252e-03, -4.516e-02), r);\n\tr = MulAdd(s4_1, M4(9.419e-02, 2.509e-02, 2.955e-03, -2.840e-02, 5.822e-02, -8.378e-02, -7.562e-03, 4.876e-02, -6.550e-02, 1.759e-02, -7.945e-02, 8.628e-02, -1.377e-01, -9.751e-02, -2.122e-02, -1.384e-01), r);\n\tr = MulAdd(s4_2, M4(-3.766e-02, 2.824e-02, 3.679e-02, -4.829e-02, 4.727e-02, -5.843e-02, -3.079e-03, -2.803e-03, -5.569e-03, -7.261e-02, 4.468e-02, 1.710e-02, 6.518e-02, 1.492e-03, 2.624e-02, 2.573e-02), r);\n\tr = MulAdd(s4_3, M4(7.605e-02, -7.299e-02, 6.526e-03, 3.207e-02, -1.266e-02, -4.438e-03, -3.606e-03, 3.420e-02, 2.385e-02, 2.516e-02, 6.072e-02, -3.670e-02, -2.751e-02, -6.161e-02, 9.597e-02, 9.638e-02), r);\n\tr = MulAdd(s4_4, M4(-2.112e-02, -2.241e-02, 7.786e-02, 5.784e-02, -1.561e-01, -4.273e-02, -2.194e-02, -1.705e-01, 6.815e-02, -6.799e-02, -2.013e-03, 1.239e-01, 2.514e-02, -1.079e-01, -7.378e-03, -1.233e-01), r);\n\tr = MulAdd(s4_5, M4(-2.638e-02, -1.183e-01, -4.616e-02, -3.746e-03, -2.811e-02, 1.230e-01, -5.174e-02, 7.346e-02, -1.421e-02, -3.076e-02, -1.259e-02, 1.408e-02, -1.610e-02, 2.928e-02, 1.535e-01, 8.465e-02), r);\n\tr = MulAdd(s4_6, M4(3.141e-04, 3.631e-02, -1.663e-02, 6.612e-02, -7.921e-03, -8.523e-03, -8.086e-02, 5.970e-02, -1.761e-02, 1.568e-02, -4.761e-02, 2.993e-02, 1.266e-02, -2.407e-02, 4.900e-02, 7.400e-02), r);\n\tr = MulAdd(s4_7, M4(-8.669e-02, -9.038e-02, -1.487e-03, -1.967e-02, -1.130e-02, 2.207e-02, -5.322e-03, -8.261e-02, -3.107e-02, -6.808e-02, 4.068e-02, 4.049e-02, -5.777e-02, 1.814e-01, -1.391e-01, -3.705e-02), r);\n\tr = MulAdd(s4_8, M4(8.472e-03, 2.173e-02, -4.385e-03, -1.425e-01, 2.747e-02, 1.203e-01, -2.519e-02, 7.543e-02, 1.353e-02, -1.914e-03, -6.678e-02, -4.278e-02, 3.939e-02, 1.849e-02, -1.356e-01, 2.123e-02), r);\n\tr = MulAdd(s5_0, M4(2.253e-02, -3.000e-03, 2.766e-02, 4.011e-03, -1.012e-01, -1.245e-01, -1.756e-02, 1.333e-02, -5.544e-02, 8.260e-02, 6.904e-02, -6.567e-02, -2.223e-02, 1.762e-02, -5.783e-03, -1.178e-02), r);\n\tr = MulAdd(s5_1, M4(4.984e-02, 5.925e-02, 2.222e-03, -1.903e-02, 6.858e-02, -1.444e-02, -8.342e-02, 2.042e-02, -2.418e-02, -8.804e-03, -3.907e-02, 8.371e-02, -2.057e-02, -3.821e-02, 1.112e-03, -5.150e-02), r);\n\tr = MulAdd(s5_2, M4(-5.659e-02, 1.374e-02, 1.761e-02, -2.710e-02, 9.238e-02, 2.094e-02, -6.518e-02, -2.742e-02, 3.162e-02, 3.946e-02, 2.735e-02, -1.013e-02, 1.573e-02, 6.860e-02, 2.466e-02, 2.488e-02), r);\n\tr = MulAdd(s5_3, M4(-5.858e-02, 3.525e-02, -2.676e-02, -7.051e-02, 1.653e-02, -1.366e-01, 6.492e-02, -1.073e-01, -4.261e-02, -1.184e-02, 4.031e-02, -7.042e-02, 2.538e-02, -6.503e-03, 1.881e-02, 6.144e-03), r);\n\tr = MulAdd(s5_4, M4(-1.599e-01, 3.139e-01, 4.613e-02, 1.092e-01, -4.946e-02, -6.471e-02, -2.505e-01, -4.021e-01, 3.832e-02, -1.744e-01, -1.179e-01, 3.837e-02, 1.725e-02, -6.918e-03, 8.461e-02, -6.419e-03), r);\n\tr = MulAdd(s5_5, M4(9.392e-04, 3.029e-02, -1.711e-02, -3.376e-02, -2.033e-02, -1.260e-01, 2.772e-02, 1.451e-01, 7.234e-03, 1.555e-02, 2.413e-02, -2.120e-02, -1.125e-02, -2.683e-02, -1.099e-02, -3.049e-02), r);\n\tr = MulAdd(s5_6, M4(7.385e-03, 7.153e-02, -3.701e-03, -5.904e-03, -7.381e-03, -1.438e-02, -4.615e-02, 4.650e-04, -5.119e-02, -3.074e-02, -7.760e-02, 4.370e-03, -1.500e-02, -3.557e-02, 2.629e-02, 4.037e-02), r);\n\tr = MulAdd(s5_7, M4(-2.458e-02, 1.187e-02, 8.390e-02, -1.328e-01, 5.794e-03, 3.009e-03, -9.953e-02, -5.775e-02, 2.016e-02, 1.212e-02, -1.308e-02, -3.056e-02, 1.866e-02, 3.148e-02, -5.295e-02, -7.660e-02), r);\n\tr = MulAdd(s5_8, M4(2.084e-03, 1.588e-02, 2.125e-01, 3.881e-02, -1.416e-02, -3.428e-03, -8.714e-02, -1.141e-01, 1.929e-02, 1.721e-03, -6.971e-02, -2.685e-02, 2.040e-02, 2.086e-02, -6.267e-02, 1.943e-02), r);\n\tr = MulAdd(s6_0, M4(-3.636e-02, 1.058e-02, 1.897e-02, -7.365e-03, -2.463e-01, 1.546e-01, -1.253e-02, -1.471e-01, -3.383e-02, -1.681e-01, -3.166e-02, 1.180e-02, -1.471e-02, -3.981e-02, 1.965e-02, 1.843e-02), r);\n\tr = MulAdd(s6_1, M4(4.107e-02, 5.065e-02, 1.605e-02, -3.976e-03, 1.275e-02, 1.578e-01, 5.165e-02, -1.212e-01, 2.598e-02, -1.050e-02, 4.818e-02, -1.796e-02, -1.129e-01, 6.415e-02, -1.066e-01, 1.731e-02), r);\n\tr = MulAdd(s6_2, M4(2.760e-03, -4.237e-03, -2.683e-02, 1.691e-02, 3.426e-02, 1.694e-01, 2.113e-03, 5.037e-02, -7.108e-04, 4.483e-03, -7.325e-03, -7.323e-03, -4.189e-02, -9.192e-03, 4.703e-02, -1.762e-02), r);\n\tr = MulAdd(s6_3, M4(-1.324e-01, -1.428e-02, 1.538e-01, 8.059e-02, 7.247e-02, 2.456e-03, 1.478e-01, -1.011e-01, -4.779e-02, 1.501e-02, -4.858e-02, -5.523e-02, -1.955e-03, -1.013e-01, -6.627e-02, -1.644e-02), r);\n\tr = MulAdd(s6_4, M4(7.496e-02, 1.511e-01, -1.250e-01, -6.264e-02, -9.391e-02, -2.261e-01, -2.047e-01, 7.962e-02, -2.133e-02, -8.040e-02, 4.176e-02, -3.172e-02, -8.418e-02, 2.017e-01, -1.799e-02, 3.392e-02), r);\n\tr = MulAdd(s6_5, M4(2.756e-02, -7.527e-03, -1.715e-02, 3.766e-02, -3.255e-02, -1.122e-01, 2.799e-03, 1.650e-03, -1.328e-03, 4.273e-03, 7.832e-02, -1.947e-02, 9.840e-02, 2.162e-02, 6.598e-02, 1.782e-02), r);\n\tr = MulAdd(s6_6, M4(-2.405e-02, -2.950e-02, -2.338e-02, -4.016e-02, -2.421e-02, -2.384e-02, -9.502e-02, 6.252e-02, -1.692e-02, -9.645e-03, 1.187e-02, 1.228e-02, -8.531e-03, -3.788e-02, 1.097e-01, 6.519e-02), r);\n\tr = MulAdd(s6_7, M4(3.889e-02, 9.208e-03, -7.941e-02, 5.483e-02, -4.879e-02, 2.173e-02, 1.911e-02, -8.286e-03, 2.036e-02, 2.867e-02, -5.079e-02, -2.555e-02, -6.251e-02, 2.804e-02, -2.654e-01, -4.549e-02), r);\n\tr = MulAdd(s6_8, M4(8.329e-04, -1.819e-02, -1.321e-02, 1.572e-02, -2.137e-02, -4.870e-03, -1.199e-02, 1.285e-01, 1.001e-02, 8.940e-03, -4.492e-02, -4.014e-02, 5.302e-04, 1.071e-02, -5.256e-02, 6.449e-02), r);\n\tr = MulAdd(s7_0, M4(2.445e-03, -8.298e-02, 4.078e-02, 1.082e-01, -3.606e-03, 1.108e-02, 1.089e-02, 8.458e-03, -5.579e-02, 5.668e-03, -8.777e-03, 1.130e-02, 9.521e-02, -1.845e-02, 3.895e-02, -2.967e-02), r);\n\tr = MulAdd(s7_1, M4(-4.886e-02, 5.319e-02, 2.510e-02, -7.867e-02, -2.855e-03, 3.997e-02, -5.932e-02, 3.093e-02, 9.879e-02, 1.408e-02, -2.786e-02, 5.785e-02, -9.988e-02, 3.938e-02, -6.418e-02, -6.088e-03), r);\n\tr = MulAdd(s7_2, M4(1.294e-01, 1.028e-01, -4.343e-02, 2.712e-02, 1.849e-02, -5.441e-02, 4.991e-02, 1.062e-02, -1.364e-02, 4.261e-03, 2.003e-02, -3.499e-02, -3.174e-03, 3.305e-02, 5.740e-02, -3.909e-03), r);\n\tr = MulAdd(s7_3, M4(-8.290e-02, 6.939e-02, -7.261e-04, -9.136e-03, -3.160e-03, 6.662e-02, -4.139e-02, 1.310e-04, -9.320e-03, 8.518e-02, 5.456e-03, 2.266e-02, -4.379e-02, 2.903e-02, -1.230e-02, -4.747e-02), r);\n\tr = MulAdd(s7_4, M4(1.445e-01, -5.596e-02, -1.909e-01, 1.829e-01, -2.868e-02, 1.546e-02, 7.682e-04, -4.849e-02, 1.428e-01, 1.040e-01, 4.236e-02, 1.480e-02, 1.023e-01, 4.592e-02, -6.634e-02, -3.505e-03), r);\n\tr = MulAdd(s7_5, M4(-6.373e-02, -8.968e-02, -1.350e-02, -6.032e-02, 8.111e-03, 6.144e-03, -4.249e-02, 3.479e-02, 1.916e-02, -2.201e-02, 4.903e-02, -3.262e-02, 2.203e-02, 1.923e-02, 2.391e-03, 6.177e-02), r);\n\tr = MulAdd(s7_6, M4(1.166e-02, 2.687e-02, 2.417e-02, 2.158e-02, 3.096e-02, 1.273e-02, 3.190e-02, 2.190e-02, -2.712e-02, 7.696e-04, -2.388e-02, 3.130e-02, -1.967e-02, -1.655e-02, 7.839e-02, -2.687e-02), r);\n\tr = MulAdd(s7_7, M4(-2.005e-02, -2.380e-02, 9.220e-02, -1.530e-02, -8.630e-03, -1.587e-02, 1.488e-02, -1.791e-03, 1.460e-02, -2.440e-02, 8.963e-02, 9.009e-02, -1.182e-02, 4.140e-02, -5.368e-02, 6.374e-02), r);\n\tr = MulAdd(s7_8, M4(3.577e-02, 5.104e-02, 3.665e-02, -5.901e-02, -1.713e-02, -6.524e-02, 1.610e-05, 1.340e-02, 3.049e-02, 4.299e-02, -7.341e-02, -3.923e-02, 2.563e-02, -2.483e-02, -2.340e-02, 1.129e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.774e-03, 1.083e-02, -6.759e-03, -9.530e-03 };\n\tr = MulAdd(s0_0, M4(1.193e-01, -1.048e-02, -3.243e-02, 6.826e-02, -2.322e-02, 1.210e-03, -1.252e-02, 2.977e-02, -2.499e-02, -5.046e-02, 3.024e-02, -2.444e-02, -5.177e-02, 3.895e-02, -1.225e-02, 5.118e-03), r);\n\tr = MulAdd(s0_1, M4(5.871e-02, 6.552e-02, 9.391e-02, -5.961e-02, 8.066e-02, -6.908e-03, -5.695e-02, -1.936e-02, 2.658e-02, -7.954e-04, -1.973e-01, 9.164e-02, 5.022e-02, 2.750e-02, 1.419e-01, -1.292e-01), r);\n\tr = MulAdd(s0_2, M4(-4.930e-03, 2.126e-02, -1.352e-02, 3.179e-03, 3.715e-02, -4.556e-03, -1.389e-03, 8.522e-03, 3.613e-02, -9.409e-03, 1.362e-01, -6.348e-02, 1.835e-01, -3.183e-02, -1.226e-01, -2.973e-02), r);\n\tr = MulAdd(s0_3, M4(1.495e-02, 1.022e-02, 4.584e-02, 5.812e-02, 8.536e-02, -1.778e-02, -9.100e-03, -1.304e-02, -7.851e-02, 5.556e-02, 9.545e-03, -7.593e-02, 4.848e-02, -1.739e-02, -2.347e-02, -4.931e-02), r);\n\tr = MulAdd(s0_4, M4(3.443e-02, 5.691e-02, -2.898e-02, 6.016e-03, -7.971e-03, -2.753e-02, 9.017e-02, 8.716e-02, 3.454e-02, 4.737e-02, 1.046e-01, -4.884e-02, -8.845e-02, 6.886e-02, 8.998e-03, 3.288e-02), r);\n\tr = MulAdd(s0_5, M4(5.182e-02, -2.280e-02, -6.605e-03, -4.182e-02, -1.409e-03, -6.527e-02, -5.406e-02, 3.059e-02, -4.931e-03, -3.169e-02, -6.431e-02, -2.430e-02, -1.669e-01, 9.000e-02, 7.812e-02, 1.873e-02), r);\n\tr = MulAdd(s0_6, M4(-2.305e-03, -3.680e-02, 1.371e-02, -1.402e-02, -1.577e-01, 8.153e-03, -2.799e-04, 3.356e-02, -3.522e-03, 3.556e-02, 2.578e-02, -2.129e-03, 2.127e-02, 7.063e-02, 2.276e-02, -6.245e-02), r);\n\tr = MulAdd(s0_7, M4(7.349e-02, -9.005e-02, -3.976e-02, -4.591e-02, 5.945e-02, -8.111e-02, 5.657e-02, -6.026e-02, 6.361e-02, -1.248e-02, 4.749e-03, -7.141e-02, -8.539e-02, -3.081e-02, -4.733e-02, 2.692e-02), r);\n\tr = MulAdd(s0_8, M4(-5.297e-03, 2.553e-02, 1.188e-02, -3.252e-02, -9.584e-02, -4.811e-03, -5.877e-02, 1.540e-02, 5.976e-02, -6.359e-03, 1.851e-02, -7.055e-03, 1.543e-02, -6.709e-02, -5.741e-03, -1.938e-02), r);\n\tr = MulAdd(s1_0, M4(1.027e-01, 2.668e-02, -2.635e-02, 1.201e-01, 1.320e-01, 6.001e-02, 1.124e-03, 3.838e-02, -2.793e-02, -1.959e-02, -1.672e-02, -2.363e-02, -7.897e-03, -1.262e-02, -7.426e-02, 4.808e-02), r);\n\tr = MulAdd(s1_1, M4(8.846e-02, 1.041e-01, 1.462e-01, -7.651e-02, 8.646e-02, -6.220e-03, -1.981e-01, -1.132e-02, 7.620e-03, -5.404e-02, -1.321e-01, 1.981e-02, -1.342e-02, -4.427e-02, 4.065e-03, -8.502e-02), r);\n\tr = MulAdd(s1_2, M4(1.697e-02, -5.188e-02, -5.134e-02, -4.116e-02, 2.190e-02, 4.750e-03, 7.617e-03, -1.969e-03, -2.589e-02, 3.952e-03, 5.049e-02, -2.411e-02, 6.015e-02, 1.877e-02, -1.146e-01, 2.766e-02), r);\n\tr = MulAdd(s1_3, M4(2.173e-02, 3.303e-02, 5.705e-02, -2.306e-02, 2.437e-01, -4.184e-02, -4.673e-02, 1.375e-01, -1.449e-01, -7.996e-03, 8.527e-03, -3.652e-02, 1.508e-02, 6.097e-03, -2.012e-02, 5.567e-03), r);\n\tr = MulAdd(s1_4, M4(-1.053e-01, 1.183e-01, 1.644e-01, 7.715e-02, -8.496e-02, -2.526e-01, -3.290e-01, 7.366e-02, -5.064e-02, 5.169e-02, -2.557e-01, 1.666e-01, -2.381e-03, 2.116e-01, 4.961e-02, 1.979e-03), r);\n\tr = MulAdd(s1_5, M4(2.273e-02, 8.168e-02, 6.637e-02, -2.085e-02, -1.772e-02, -2.210e-03, 8.962e-03, 3.793e-02, 1.632e-01, 1.286e-03, -2.699e-04, -1.422e-01, -8.545e-02, -6.054e-02, -1.027e-01, -3.499e-02), r);\n\tr = MulAdd(s1_6, M4(-2.285e-02, -1.042e-01, 9.875e-03, -2.335e-02, 1.999e-01, -6.262e-02, -6.712e-02, -1.885e-02, -1.402e-02, -6.218e-02, 2.995e-02, -1.346e-02, -1.627e-02, 5.953e-02, 2.362e-02, -7.447e-02), r);\n\tr = MulAdd(s1_7, M4(-1.448e-02, -3.298e-01, 2.114e-02, -3.973e-02, 1.320e-02, 4.253e-02, 4.971e-02, 1.446e-02, 1.347e-01, 1.912e-02, 4.576e-02, -5.504e-02, -1.043e-02, -1.144e-01, 9.768e-03, 7.366e-03), r);\n\tr = MulAdd(s1_8, M4(2.272e-02, -9.619e-03, -7.821e-02, 3.434e-02, 5.688e-02, -2.394e-02, 8.326e-03, 1.352e-02, -7.261e-02, 6.078e-03, -4.177e-04, 2.965e-02, -5.145e-02, 4.692e-02, -5.279e-02, 3.568e-02), r);\n\tr = MulAdd(s2_0, M4(4.702e-02, 2.630e-03, 8.904e-03, -6.280e-03, -2.836e-02, -2.194e-02, -5.604e-02, 6.956e-03, 3.226e-02, -2.308e-02, 1.880e-02, 1.596e-02, -2.796e-04, 2.646e-02, 4.453e-03, -2.054e-02), r);\n\tr = MulAdd(s2_1, M4(8.921e-02, 1.728e-02, -1.029e-01, 1.150e-02, -3.810e-02, 3.608e-02, -3.375e-02, -3.864e-02, 5.210e-02, 1.303e-05, -1.235e-02, 3.002e-03, 4.356e-03, -1.328e-02, 8.026e-03, -3.341e-02), r);\n\tr = MulAdd(s2_2, M4(-3.228e-02, -3.432e-03, -2.823e-02, 5.476e-03, -1.503e-02, -2.776e-02, -2.735e-03, -3.880e-02, 2.066e-03, 6.393e-03, 4.266e-02, -2.297e-02, -5.792e-02, 5.058e-03, 5.737e-02, 1.521e-02), r);\n\tr = MulAdd(s2_3, M4(-2.400e-02, -3.390e-02, 1.933e-02, 3.088e-03, 8.121e-02, 4.240e-02, -7.497e-02, -3.773e-02, -4.244e-02, -2.049e-02, 2.547e-02, -1.778e-04, -2.168e-02, -2.191e-02, -1.730e-02, 1.369e-02), r);\n\tr = MulAdd(s2_4, M4(-6.762e-02, 1.373e-02, -2.620e-03, -5.704e-03, -1.055e-02, -9.187e-02, -3.544e-01, 2.344e-02, 1.125e-01, 7.307e-02, -3.805e-02, -1.709e-02, 7.488e-02, -7.591e-02, 2.404e-02, -2.459e-02), r);\n\tr = MulAdd(s2_5, M4(3.818e-02, 2.380e-02, 3.533e-02, 3.720e-03, 2.004e-02, -9.902e-03, -3.566e-02, 1.956e-02, -4.887e-02, 2.246e-02, -7.669e-03, -2.876e-02, 5.484e-02, 1.748e-02, 1.909e-02, -5.162e-02), r);\n\tr = MulAdd(s2_6, M4(5.008e-02, -2.726e-02, -4.822e-02, -1.584e-02, 8.802e-02, -2.961e-02, -5.532e-02, -2.233e-02, -1.975e-02, -1.024e-02, 4.558e-03, 1.366e-02, -8.069e-03, 2.464e-02, 9.495e-03, -2.194e-02), r);\n\tr = MulAdd(s2_7, M4(-1.258e-01, 2.334e-02, -6.292e-02, 3.725e-02, 2.089e-02, 2.861e-01, -8.859e-02, 1.913e-02, 1.198e-01, -7.910e-02, 6.599e-02, -2.165e-02, -8.741e-02, 3.565e-02, 9.328e-03, -7.032e-03), r);\n\tr = MulAdd(s2_8, M4(3.636e-02, -4.528e-03, -1.155e-02, -1.413e-02, -4.810e-02, -2.686e-02, -6.808e-02, 1.915e-02, 1.687e-02, -1.481e-03, -2.301e-02, -1.282e-02, -3.844e-02, -1.030e-02, -4.729e-02, 3.916e-02), r);\n\tr = MulAdd(s3_0, M4(1.657e-02, -3.355e-03, 2.242e-03, -2.040e-02, 1.946e-02, 2.196e-02, -3.503e-02, 1.040e-01, 4.469e-02, 4.250e-02, -4.958e-02, 8.767e-02, -3.961e-02, 2.544e-02, -5.104e-02, -6.615e-02), r);\n\tr = MulAdd(s3_1, M4(2.691e-02, -9.850e-02, 7.498e-02, -1.756e-01, 1.345e-02, 3.622e-02, 8.593e-02, -1.123e-02, 1.538e-02, -5.349e-03, -7.513e-02, -8.709e-03, -3.121e-02, 3.571e-02, 3.203e-02, 3.256e-02), r);\n\tr = MulAdd(s3_2, M4(4.858e-02, -4.627e-02, 6.215e-02, -4.991e-02, 1.327e-02, 1.824e-02, 3.843e-03, -1.558e-02, -9.773e-02, -3.629e-02, -7.307e-02, 1.832e-02, 1.002e-01, -2.333e-02, 1.016e-01, -1.728e-02), r);\n\tr = MulAdd(s3_3, M4(-4.198e-02, -2.814e-02, 3.682e-02, -2.208e-02, -7.201e-02, -7.191e-02, -1.578e-02, -5.985e-02, 3.886e-03, -3.420e-02, -9.592e-02, -4.945e-02, 5.593e-02, 1.735e-02, -6.147e-02, 3.669e-02), r);\n\tr = MulAdd(s3_4, M4(6.282e-03, 1.437e-02, -1.631e-02, 9.143e-03, -5.601e-02, 1.139e-02, -1.762e-01, 1.844e-02, 7.251e-02, -1.309e-02, -9.165e-03, -3.403e-02, 3.223e-01, 8.518e-02, 2.687e-01, 7.502e-02), r);\n\tr = MulAdd(s3_5, M4(-5.705e-02, 3.598e-02, 1.709e-01, -1.577e-02, 3.992e-02, -3.111e-02, -2.667e-02, -4.231e-02, -5.149e-02, 1.962e-02, -9.283e-02, 4.647e-02, -1.110e-01, -3.535e-02, -6.284e-02, 6.710e-02), r);\n\tr = MulAdd(s3_6, M4(5.424e-02, -3.279e-02, 2.262e-02, -1.659e-02, 3.338e-02, 9.182e-03, 2.441e-02, -5.288e-02, -6.987e-02, 7.276e-03, -2.352e-02, 4.192e-02, 9.676e-02, 5.903e-02, 5.415e-02, 2.282e-03), r);\n\tr = MulAdd(s3_7, M4(6.329e-03, 2.330e-02, 6.207e-03, -1.762e-03, 7.843e-03, -6.581e-03, -1.549e-02, -5.284e-02, -5.859e-02, 3.369e-03, -8.589e-02, 6.869e-02, 1.320e-01, -4.220e-02, -4.965e-02, -1.204e-01), r);\n\tr = MulAdd(s3_8, M4(3.998e-02, 1.873e-02, -5.480e-03, -2.049e-02, 2.348e-02, 9.441e-03, -8.933e-02, 4.237e-02, -1.849e-02, -3.625e-02, -3.664e-02, -1.576e-02, -1.291e-01, 4.700e-02, 4.163e-02, -2.971e-02), r);\n\tr = MulAdd(s4_0, M4(1.778e-02, 4.602e-02, -4.267e-02, 6.398e-02, -5.671e-02, -2.924e-03, -4.187e-02, 1.654e-03, -1.492e-01, -3.897e-02, 7.856e-04, -1.644e-02, -3.210e-02, -7.924e-02, -7.994e-02, -4.341e-03), r);\n\tr = MulAdd(s4_1, M4(4.051e-03, -3.196e-03, -6.325e-02, 6.896e-02, -3.616e-02, 1.553e-02, 6.633e-02, -3.962e-02, 8.586e-02, -4.538e-02, 4.091e-02, -2.947e-02, 3.580e-03, -5.921e-02, 7.983e-02, -2.921e-02), r);\n\tr = MulAdd(s4_2, M4(-5.366e-02, -1.155e-02, 1.324e-02, 5.973e-02, -1.614e-01, -1.876e-02, -1.515e-02, -6.311e-03, 3.802e-02, -1.583e-02, -5.839e-02, -2.794e-02, 1.295e-01, -2.356e-02, -1.839e-01, -7.227e-02), r);\n\tr = MulAdd(s4_3, M4(-7.246e-02, -3.522e-02, 4.562e-02, -1.176e-01, 2.272e-02, 3.581e-02, -2.271e-02, 4.263e-03, 1.996e-02, 1.176e-02, 4.654e-02, -1.948e-02, -1.231e-01, 3.247e-02, 6.979e-02, -4.604e-02), r);\n\tr = MulAdd(s4_4, M4(5.858e-02, 1.111e-02, 8.530e-02, -1.032e-01, 5.611e-02, -1.437e-02, -2.400e-03, -2.226e-01, 1.002e-01, -7.950e-02, 1.473e-01, -9.665e-03, -8.286e-02, 1.785e-01, 9.023e-03, 1.517e-01), r);\n\tr = MulAdd(s4_5, M4(5.408e-02, -1.242e-02, -1.583e-02, -9.518e-02, 7.813e-02, 5.192e-02, -7.247e-03, 4.595e-02, -7.544e-02, -1.103e-02, -6.453e-02, 8.274e-02, -1.114e-01, 9.855e-03, 1.171e-01, 6.824e-02), r);\n\tr = MulAdd(s4_6, M4(-2.487e-02, -8.571e-02, -2.031e-02, 7.946e-02, 7.761e-02, -5.634e-02, -1.243e-02, -8.920e-03, 7.505e-03, -5.841e-03, 4.098e-02, -7.230e-02, 4.304e-02, -8.549e-02, -4.022e-02, 7.888e-03), r);\n\tr = MulAdd(s4_7, M4(5.391e-02, -2.885e-02, 2.040e-03, 7.783e-02, 1.013e-02, 1.372e-02, 5.941e-03, 1.007e-02, 7.528e-03, 8.803e-03, 7.997e-02, 1.211e-02, -1.978e-02, -4.108e-03, -6.149e-02, 7.661e-02), r);\n\tr = MulAdd(s4_8, M4(-2.713e-02, 2.661e-02, 6.520e-02, 3.927e-02, 6.751e-02, -3.023e-02, -3.414e-02, -3.336e-02, -7.493e-03, 2.083e-02, 1.082e-03, 1.085e-02, -1.243e-02, 1.775e-02, -1.800e-02, -2.309e-02), r);\n\tr = MulAdd(s5_0, M4(2.636e-03, 1.020e-02, -8.215e-03, -1.118e-02, -6.102e-02, 9.464e-03, 4.914e-02, -8.655e-03, -2.183e-01, 7.846e-02, 1.189e-01, 7.140e-02, -1.094e-01, -1.413e-02, 1.744e-02, 2.393e-02), r);\n\tr = MulAdd(s5_1, M4(-1.423e-01, -4.273e-02, -8.643e-02, 1.187e-01, 5.468e-02, 3.297e-02, -7.118e-02, -7.003e-02, -5.719e-02, -1.376e-02, -1.145e-01, 7.838e-02, 1.588e-02, 5.242e-03, 1.901e-02, 9.863e-03), r);\n\tr = MulAdd(s5_2, M4(-2.814e-02, 1.728e-03, 7.216e-03, -5.635e-03, -2.159e-02, 1.430e-03, -3.330e-02, -4.216e-02, -9.500e-02, 1.609e-02, 5.971e-02, 2.658e-02, 8.857e-02, 1.595e-02, -1.716e-02, -4.230e-03), r);\n\tr = MulAdd(s5_3, M4(1.062e-01, 5.689e-02, -1.330e-02, 2.666e-02, 7.092e-03, 1.980e-02, 2.738e-02, -2.801e-02, 1.831e-01, 4.358e-02, 5.407e-02, -1.202e-01, -1.107e-01, 3.718e-02, 7.248e-03, 2.525e-02), r);\n\tr = MulAdd(s5_4, M4(-1.238e-02, 1.395e-01, -1.252e-03, -2.829e-01, -9.818e-02, -3.294e-02, -4.447e-02, 6.977e-02, 2.017e-01, 2.108e-03, 3.438e-01, -3.522e-02, -9.348e-02, -7.006e-02, -1.200e-01, 1.091e-01), r);\n\tr = MulAdd(s5_5, M4(8.951e-02, -2.079e-03, 1.120e-02, 9.600e-03, -7.474e-02, -1.677e-02, -3.101e-02, 7.161e-03, 4.322e-02, -1.732e-02, -1.563e-02, -1.477e-02, -4.726e-02, 2.835e-02, 1.115e-01, 5.753e-03), r);\n\tr = MulAdd(s5_6, M4(-3.872e-02, -6.123e-02, -3.729e-02, -4.733e-02, 9.770e-02, -2.838e-02, 2.167e-02, -1.190e-02, 5.474e-02, 1.812e-02, 1.595e-02, 1.379e-03, 7.593e-02, -2.542e-02, 9.389e-03, -5.855e-03), r);\n\tr = MulAdd(s5_7, M4(-2.313e-01, 1.062e-01, -3.426e-02, 1.271e-01, 3.036e-01, -9.294e-02, 2.472e-02, -5.963e-02, 6.419e-02, -3.441e-02, 3.463e-02, -4.723e-03, -4.168e-02, 2.209e-02, -1.402e-03, 4.069e-02), r);\n\tr = MulAdd(s5_8, M4(2.594e-02, -4.756e-03, 1.606e-04, -4.234e-02, 4.783e-02, 1.375e-02, 4.254e-03, 5.236e-02, -3.643e-02, -2.451e-02, 3.766e-02, -2.563e-02, 7.765e-03, -2.148e-02, 2.163e-02, 2.688e-03), r);\n\tr = MulAdd(s6_0, M4(-5.101e-02, 3.157e-02, -3.214e-02, -4.207e-02, 1.297e-01, 1.005e-01, 6.350e-02, 4.027e-02, 5.571e-03, -3.522e-02, 2.588e-02, -2.043e-02, -1.711e-01, -2.976e-02, -5.791e-02, 2.916e-02), r);\n\tr = MulAdd(s6_1, M4(-2.868e-02, 1.625e-01, 2.508e-02, 8.476e-02, -2.056e-01, 3.901e-02, -1.984e-01, 7.514e-02, -1.486e-01, 2.581e-03, -1.576e-02, 1.384e-01, -1.174e-01, 4.931e-03, 5.469e-03, 7.396e-02), r);\n\tr = MulAdd(s6_2, M4(-6.032e-02, 1.680e-02, 7.920e-02, 5.261e-02, -4.495e-02, -5.333e-03, 1.461e-01, 3.072e-02, 5.915e-02, 2.529e-02, 2.345e-02, 3.672e-02, 4.769e-02, 2.155e-02, 4.651e-02, -4.791e-02), r);\n\tr = MulAdd(s6_3, M4(8.897e-02, 1.405e-01, -4.785e-02, 9.822e-02, 2.122e-01, -2.388e-03, -7.205e-02, 1.454e-02, 2.498e-01, 5.825e-02, -1.677e-02, 1.144e-01, 2.749e-02, -3.975e-02, 2.507e-03, -4.595e-02), r);\n\tr = MulAdd(s6_4, M4(-3.615e-02, 1.473e-01, -1.444e-02, 3.093e-02, 1.880e-01, -1.874e-01, 3.967e-01, -3.327e-01, 6.655e-03, -5.960e-02, 1.457e-02, -8.659e-02, 3.706e-02, 1.732e-01, 5.386e-02, -2.847e-03), r);\n\tr = MulAdd(s6_5, M4(-6.235e-02, -1.365e-03, 3.703e-02, 1.494e-02, 8.596e-03, -3.396e-02, -5.405e-02, -2.135e-01, 3.474e-02, 6.117e-02, -1.904e-03, -2.267e-02, 1.194e-01, 1.011e-02, 1.022e-01, -2.839e-02), r);\n\tr = MulAdd(s6_6, M4(-2.210e-02, 3.452e-02, 2.616e-02, 5.119e-02, 4.545e-02, 2.557e-02, 1.251e-02, -2.704e-02, 9.683e-02, 1.015e-02, -3.893e-02, -2.042e-02, 7.684e-02, 1.147e-03, -2.620e-02, 2.036e-02), r);\n\tr = MulAdd(s6_7, M4(-1.416e-02, -9.191e-02, 7.322e-02, -6.055e-02, -6.098e-02, 1.048e-01, -8.375e-02, 1.151e-02, 8.122e-02, -2.470e-02, 3.802e-02, 8.203e-03, -1.134e-01, 3.271e-02, 1.489e-01, 1.718e-03), r);\n\tr = MulAdd(s6_8, M4(4.236e-02, -1.279e-02, -1.218e-02, -1.721e-03, -5.267e-02, 6.120e-02, -6.863e-03, -2.339e-02, 6.142e-03, 1.334e-02, 3.840e-02, -3.469e-03, 2.074e-02, -9.623e-02, 1.174e-01, -7.104e-03), r);\n\tr = MulAdd(s7_0, M4(2.177e-02, -2.506e-02, -2.084e-03, -5.860e-02, 7.460e-02, 5.126e-02, 6.503e-03, -1.016e-02, -1.348e-01, 2.695e-02, 8.662e-02, -3.217e-02, -9.947e-02, 1.355e-02, -3.887e-02, 3.671e-02), r);\n\tr = MulAdd(s7_1, M4(1.094e-01, 4.306e-02, 1.773e-01, 3.608e-03, -5.451e-02, 6.465e-02, 9.147e-02, 2.774e-03, 2.776e-03, 4.393e-02, -2.924e-02, 1.923e-02, -4.374e-02, -3.220e-02, -6.576e-02, -3.276e-02), r);\n\tr = MulAdd(s7_2, M4(-4.620e-02, 2.048e-02, 3.234e-03, 5.520e-02, -8.348e-02, -3.598e-02, -8.111e-02, -5.441e-02, -6.498e-03, -2.542e-02, -3.379e-02, 2.636e-02, -8.450e-03, 2.900e-02, -4.491e-02, -1.654e-02), r);\n\tr = MulAdd(s7_3, M4(8.686e-02, 1.716e-01, 4.222e-03, 9.780e-03, -4.509e-02, 3.392e-02, 1.422e-02, -6.869e-02, -1.595e-01, 1.251e-02, 2.913e-02, 1.104e-01, -1.547e-01, 1.027e-02, -3.729e-02, -4.566e-02), r);\n\tr = MulAdd(s7_4, M4(1.953e-01, 2.315e-01, 1.299e-01, -1.347e-01, -4.060e-02, -7.278e-03, 3.684e-02, -6.666e-02, -1.027e-01, -5.207e-02, -2.175e-01, 1.131e-01, -6.486e-02, 8.321e-02, -2.594e-01, 1.169e-01), r);\n\tr = MulAdd(s7_5, M4(-3.169e-02, 3.697e-03, -6.472e-02, 2.523e-02, 9.826e-03, 1.689e-02, 6.241e-02, -5.949e-04, 2.145e-02, 5.707e-02, 8.911e-02, -1.135e-02, 4.783e-02, 1.337e-02, 3.065e-02, 5.884e-02), r);\n\tr = MulAdd(s7_6, M4(-3.587e-03, -5.693e-02, -1.929e-02, 3.601e-02, -1.485e-02, -3.759e-03, -8.937e-03, -9.948e-03, -6.001e-02, -4.211e-02, 1.906e-02, -3.279e-02, 2.514e-02, -2.525e-02, -3.893e-02, 1.116e-02), r);\n\tr = MulAdd(s7_7, M4(8.653e-02, 7.210e-02, 1.310e-02, -4.096e-02, -4.513e-04, -1.231e-02, 3.749e-02, -3.147e-02, 6.759e-02, -3.613e-02, 7.838e-02, -5.501e-02, 9.405e-04, -3.234e-02, 1.654e-02, -6.506e-03), r);\n\tr = MulAdd(s7_8, M4(-6.108e-02, 1.114e-02, -2.635e-03, 1.568e-02, 3.447e-02, -1.793e-02, -1.050e-02, -3.319e-02, -2.087e-02, -1.826e-02, 1.520e-02, -2.765e-02, -2.238e-02, -3.305e-02, 7.283e-03, -1.178e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.240e-02, 8.097e-03, 8.971e-03, 1.472e-02 };\n\tr = MulAdd(s0_0, M4(-3.119e-02, 1.358e-02, 1.799e-02, -4.454e-02, 2.054e-02, -5.854e-03, 1.624e-02, 6.525e-02, 5.159e-03, -3.186e-03, 3.916e-02, 1.704e-02, 5.611e-02, -1.617e-02, -1.256e-02, 7.283e-02), r);\n\tr = MulAdd(s0_1, M4(1.160e-01, 3.042e-02, -1.713e-03, 9.930e-03, 9.846e-03, 1.950e-02, -2.891e-02, -6.443e-02, -9.151e-02, -7.299e-02, -6.384e-02, 4.439e-02, 2.638e-02, 6.729e-02, 4.567e-02, -7.430e-02), r);\n\tr = MulAdd(s0_2, M4(-1.383e-02, 5.194e-02, -2.212e-02, -3.194e-02, 8.244e-03, -7.213e-03, 2.814e-02, 1.385e-02, 3.453e-02, 1.509e-03, 1.318e-02, -1.627e-02, -1.133e-02, 4.094e-02, 2.866e-02, -3.095e-02), r);\n\tr = MulAdd(s0_3, M4(6.626e-03, 1.096e-01, 8.185e-02, -7.438e-02, 2.120e-02, 4.990e-02, -2.814e-02, 4.095e-02, 6.020e-02, -5.083e-02, -3.477e-02, 4.169e-02, 3.500e-03, -1.066e-01, 2.729e-02, -2.682e-02), r);\n\tr = MulAdd(s0_4, M4(5.029e-02, 5.265e-02, 1.227e-01, -5.728e-02, -8.232e-02, 4.752e-02, 1.365e-02, -7.925e-02, -1.746e-01, -7.669e-02, 2.813e-02, -2.357e-01, 5.048e-02, 8.521e-02, -3.115e-02, 1.222e-01), r);\n\tr = MulAdd(s0_5, M4(5.230e-03, 8.784e-03, -8.968e-02, -3.714e-03, 1.858e-02, 1.223e-02, -3.019e-02, 1.194e-01, -1.540e-03, 5.142e-03, -3.950e-02, 2.637e-02, -1.422e-02, 2.503e-02, 5.833e-02, -7.592e-02), r);\n\tr = MulAdd(s0_6, M4(2.645e-02, 4.579e-02, 5.154e-02, -6.487e-02, 2.590e-02, -4.852e-02, -2.230e-02, 2.822e-02, -8.089e-03, 4.508e-02, -1.007e-03, 1.641e-02, -8.618e-03, -6.170e-02, 5.916e-03, 1.807e-02), r);\n\tr = MulAdd(s0_7, M4(-1.205e-02, 1.208e-02, 1.299e-02, 1.292e-02, 2.139e-02, -4.657e-03, 5.206e-02, -6.348e-02, 5.026e-02, -1.533e-03, 1.388e-02, 3.909e-02, 3.115e-02, 2.324e-02, 1.077e-02, -4.992e-02), r);\n\tr = MulAdd(s0_8, M4(-3.625e-02, -2.060e-02, -3.559e-02, -2.658e-02, -7.602e-02, -1.888e-02, 1.993e-02, -6.798e-03, -4.016e-02, -1.825e-02, -2.749e-03, -2.123e-02, -4.565e-02, 7.279e-02, 5.850e-02, -1.219e-02), r);\n\tr = MulAdd(s1_0, M4(-4.673e-02, 8.304e-03, 1.845e-02, 3.609e-02, 6.619e-02, -4.322e-02, 2.001e-02, 6.990e-02, 4.898e-02, -2.925e-02, 3.682e-02, 5.622e-02, 5.427e-02, -1.565e-02, 6.430e-02, 2.369e-02), r);\n\tr = MulAdd(s1_1, M4(8.584e-02, 9.906e-03, 3.857e-02, -1.294e-01, 1.388e-02, -1.809e-02, -3.039e-02, 6.939e-02, -5.358e-02, -3.650e-03, 5.765e-02, -3.854e-02, -2.511e-03, -7.474e-02, 1.191e-02, 6.923e-03), r);\n\tr = MulAdd(s1_2, M4(-7.259e-02, 5.779e-02, -7.958e-04, 1.217e-02, -3.072e-02, 1.986e-02, 1.220e-01, -1.087e-01, 4.577e-02, -2.321e-02, 1.628e-03, 1.921e-02, -4.586e-02, 1.968e-02, 1.483e-03, 1.715e-02), r);\n\tr = MulAdd(s1_3, M4(-3.292e-03, 1.909e-01, -3.450e-02, 1.198e-01, 4.543e-02, -1.122e-01, 4.538e-02, 6.129e-02, -1.421e-03, 1.433e-03, -8.913e-02, 3.648e-02, -2.991e-02, -2.841e-03, -8.902e-02, -3.131e-03), r);\n\tr = MulAdd(s1_4, M4(9.129e-02, 1.292e-03, 3.234e-02, -1.102e-01, -1.538e-01, 6.513e-02, -1.428e-01, 2.280e-01, -1.913e-01, -1.113e-01, -1.587e-01, -6.260e-02, -2.673e-02, 2.310e-01, 1.841e-01, 2.302e-02), r);\n\tr = MulAdd(s1_5, M4(7.514e-02, -7.496e-02, -1.185e-01, 6.727e-02, 1.283e-02, -1.325e-02, 4.783e-02, 7.133e-02, -1.067e-01, -3.173e-02, 1.006e-01, -5.277e-02, -5.772e-02, 4.918e-02, 1.965e-02, 4.883e-03), r);\n\tr = MulAdd(s1_6, M4(1.239e-01, -2.347e-02, 3.807e-04, 2.581e-03, 3.535e-02, -1.283e-01, -3.376e-02, 7.976e-02, 8.961e-02, -5.067e-02, 2.711e-02, -7.218e-03, 2.020e-02, -3.719e-02, -6.588e-03, 6.166e-03), r);\n\tr = MulAdd(s1_7, M4(-6.321e-03, 3.338e-02, 3.880e-03, -5.857e-02, -3.765e-02, -1.477e-02, -7.070e-02, -3.418e-02, -1.490e-01, -1.317e-01, -1.427e-02, -8.478e-02, 3.837e-02, 5.323e-02, -3.820e-02, -7.255e-02), r);\n\tr = MulAdd(s1_8, M4(-5.847e-02, 8.692e-03, -1.138e-01, -1.477e-02, 5.279e-03, 1.000e-02, 2.666e-02, -6.471e-02, -8.655e-02, -2.361e-02, 6.719e-02, -5.628e-03, -7.243e-02, -1.572e-02, -1.048e-02, 3.315e-02), r);\n\tr = MulAdd(s2_0, M4(-2.288e-02, 4.273e-02, -5.397e-03, -1.220e-02, -1.201e-02, -2.187e-02, -3.532e-02, -4.551e-02, 9.285e-03, 3.374e-02, 1.875e-02, -8.249e-03, -2.919e-03, -3.004e-02, -1.433e-02, 2.247e-03), r);\n\tr = MulAdd(s2_1, M4(4.909e-03, -3.626e-03, -8.456e-02, -1.639e-02, 2.864e-02, -6.078e-02, -1.204e-02, 3.552e-02, 5.636e-02, 5.088e-02, -6.840e-02, 5.427e-02, -4.091e-02, -5.403e-02, -1.069e-02, -6.340e-02), r);\n\tr = MulAdd(s2_2, M4(-6.592e-02, -2.740e-03, -3.038e-02, 3.380e-02, 1.451e-02, 3.328e-02, 1.135e-02, 5.250e-02, 3.590e-02, 5.332e-02, 4.767e-02, -1.844e-02, -1.593e-02, -1.534e-02, 8.423e-03, 9.414e-03), r);\n\tr = MulAdd(s2_3, M4(2.674e-02, -6.853e-02, 1.209e-02, 5.819e-03, 3.120e-02, -3.808e-02, 7.106e-02, 9.283e-02, 5.854e-02, -1.697e-02, 2.859e-03, -7.568e-03, -9.800e-03, -3.899e-02, -2.672e-03, 4.075e-02), r);\n\tr = MulAdd(s2_4, M4(-4.709e-02, -2.890e-02, 2.291e-02, 2.118e-02, -1.154e-01, -1.106e-01, -5.390e-02, 4.718e-02, -3.647e-03, 2.600e-02, 7.251e-02, 5.167e-04, -4.533e-02, 1.011e-01, 3.346e-03, -1.104e-03), r);\n\tr = MulAdd(s2_5, M4(2.589e-03, -1.781e-03, 6.664e-02, -1.719e-02, -3.848e-02, 7.312e-02, 9.325e-02, -1.775e-02, 6.812e-02, -1.021e-02, -7.496e-02, 7.818e-02, 8.188e-02, 1.107e-01, -1.334e-02, -6.705e-03), r);\n\tr = MulAdd(s2_6, M4(3.958e-02, -1.072e-02, 1.728e-02, 1.769e-02, 3.835e-02, -1.062e-01, 1.055e-01, -2.397e-02, 6.102e-02, 7.622e-03, 6.822e-03, -1.394e-02, 6.069e-04, -2.514e-02, 4.367e-03, 1.006e-02), r);\n\tr = MulAdd(s2_7, M4(-4.576e-02, -3.503e-02, -2.550e-02, 5.796e-02, -1.616e-01, -1.555e-01, -4.845e-02, 1.949e-01, 4.617e-03, 4.358e-02, 7.745e-02, -4.498e-02, 4.802e-02, 6.770e-02, -1.855e-02, 9.254e-03), r);\n\tr = MulAdd(s2_8, M4(1.620e-02, -9.293e-03, -1.498e-02, -6.009e-02, -4.502e-02, -3.743e-02, -2.937e-04, 1.492e-02, -1.969e-02, -1.425e-02, -2.911e-02, 4.641e-03, -2.503e-02, 5.544e-02, 1.834e-04, -3.613e-02), r);\n\tr = MulAdd(s3_0, M4(3.928e-02, 2.935e-02, -2.501e-03, 1.496e-02, 4.948e-03, -8.874e-03, -9.731e-03, -1.796e-02, 2.398e-02, -3.080e-02, 9.156e-03, -2.164e-03, -5.478e-02, -1.927e-02, -3.898e-02, -9.236e-03), r);\n\tr = MulAdd(s3_1, M4(2.248e-01, 3.951e-02, 6.371e-02, 7.861e-02, 3.972e-02, 4.355e-02, 5.376e-02, -4.597e-02, 1.764e-03, -1.735e-02, 2.192e-03, -6.358e-02, 5.442e-02, 4.629e-02, 5.818e-02, 1.219e-01), r);\n\tr = MulAdd(s3_2, M4(5.976e-02, -3.294e-02, -8.479e-02, -7.148e-02, -1.224e-02, 2.466e-02, -2.088e-02, 1.072e-02, 4.963e-02, 3.583e-02, 5.843e-02, 1.725e-02, -2.510e-02, -9.845e-02, 4.370e-02, -1.114e-01), r);\n\tr = MulAdd(s3_3, M4(-4.351e-02, 2.608e-02, -5.137e-02, 1.292e-02, -6.503e-02, 1.173e-01, 4.085e-02, -1.101e-01, -9.750e-03, -6.098e-03, 2.314e-02, 1.507e-02, -3.360e-02, -9.189e-02, -2.685e-02, -2.520e-02), r);\n\tr = MulAdd(s3_4, M4(1.052e-01, 3.103e-02, -2.944e-02, 1.189e-01, -6.053e-02, 3.701e-02, 6.101e-02, -1.819e-02, -6.428e-02, 1.806e-02, 8.849e-02, 4.567e-02, 2.044e-01, 3.910e-01, 2.417e-01, 2.521e-01), r);\n\tr = MulAdd(s3_5, M4(-4.004e-02, 3.818e-02, 5.069e-02, -1.849e-02, 1.759e-02, 4.760e-02, 1.503e-02, -1.385e-02, 1.787e-02, -3.867e-03, -6.038e-03, 8.384e-02, 4.322e-01, 2.483e-02, -8.805e-02, 4.945e-02), r);\n\tr = MulAdd(s3_6, M4(-6.358e-03, 2.774e-02, 1.409e-02, -1.912e-02, -2.601e-02, 9.155e-02, -9.666e-03, -5.030e-02, 1.351e-02, -6.274e-04, -2.323e-03, -1.666e-02, -7.202e-02, 1.367e-01, -1.121e-02, -2.320e-02), r);\n\tr = MulAdd(s3_7, M4(-3.894e-02, -4.333e-02, -2.975e-02, 1.759e-02, -7.628e-02, 5.628e-02, -2.755e-02, -1.604e-02, 1.228e-02, 5.447e-03, 1.208e-02, -1.111e-02, 1.015e-01, -2.272e-02, -1.026e-02, 2.289e-01), r);\n\tr = MulAdd(s3_8, M4(1.033e-02, -2.939e-02, 9.221e-03, -4.853e-03, -4.509e-02, 3.057e-02, 5.076e-04, 2.493e-02, 1.218e-02, 1.955e-03, 2.909e-02, 1.197e-02, -7.722e-02, 9.091e-03, -1.093e-01, 1.004e-02), r);\n\tr = MulAdd(s4_0, M4(2.847e-02, 1.798e-02, 2.402e-02, -1.499e-02, -4.161e-02, 2.984e-02, -1.717e-02, -1.074e-01, 8.853e-02, -2.182e-02, 2.203e-02, -1.270e-02, 5.534e-04, 6.492e-02, -1.116e-01, -4.453e-02), r);\n\tr = MulAdd(s4_1, M4(-3.555e-03, -4.297e-02, -3.233e-02, 5.099e-02, 1.639e-02, -4.216e-03, 2.458e-02, -3.030e-02, -7.720e-02, 1.163e-02, 5.789e-02, -1.570e-01, 1.173e-01, -5.750e-02, -1.676e-01, 5.915e-02), r);\n\tr = MulAdd(s4_2, M4(3.692e-02, -1.966e-03, 2.417e-02, 7.655e-03, -1.724e-02, -2.010e-02, -9.557e-02, 5.027e-02, -2.674e-02, -4.045e-02, -3.849e-02, 1.158e-03, -1.059e-01, -1.222e-01, -1.585e-01, 3.536e-02), r);\n\tr = MulAdd(s4_3, M4(-4.414e-02, 4.738e-02, 1.238e-02, -3.550e-02, -6.015e-02, 6.606e-02, 3.811e-02, 1.630e-02, 7.631e-02, -9.726e-02, 3.757e-04, 5.798e-02, -1.588e-01, 8.633e-02, -2.406e-01, -1.821e-01), r);\n\tr = MulAdd(s4_4, M4(-1.407e-01, 3.247e-03, -1.042e-01, -1.164e-01, 1.234e-01, 2.662e-03, 3.201e-02, 1.218e-01, 1.021e-01, 3.044e-02, 1.459e-01, -9.150e-02, 3.452e-01, 2.593e-02, -4.509e-01, 1.172e-01), r);\n\tr = MulAdd(s4_5, M4(-1.300e-02, 7.091e-03, -9.407e-03, -1.165e-01, 3.124e-02, 1.197e-02, -1.064e-02, -5.295e-02, -4.681e-02, 4.255e-02, -3.933e-02, 2.827e-02, 1.341e-01, -5.583e-02, -6.000e-02, 5.605e-02), r);\n\tr = MulAdd(s4_6, M4(-4.452e-02, 2.418e-02, 1.215e-02, -3.909e-02, -3.841e-03, 2.902e-02, -1.198e-03, -2.443e-02, 4.346e-02, -6.597e-03, -3.284e-02, 5.183e-02, -1.531e-01, -5.310e-02, -6.984e-02, -1.613e-01), r);\n\tr = MulAdd(s4_7, M4(-1.110e-01, 1.335e-01, -3.714e-02, 4.381e-02, -5.944e-02, -4.948e-02, -2.352e-04, -7.582e-02, 7.761e-02, 1.434e-02, 7.149e-03, -2.226e-02, -1.007e-01, -6.605e-02, -4.902e-02, 4.838e-02), r);\n\tr = MulAdd(s4_8, M4(2.891e-02, -2.002e-02, 3.372e-02, -9.957e-03, 5.108e-02, -1.830e-02, 1.883e-02, -2.309e-04, 1.934e-02, -1.329e-02, -1.824e-02, 3.953e-02, -1.713e-03, -3.680e-02, -2.755e-02, -2.758e-02), r);\n\tr = MulAdd(s5_0, M4(-1.945e-02, 4.566e-02, 2.691e-02, -1.237e-02, -9.059e-02, -5.569e-02, -1.480e-01, -7.409e-02, 1.380e-01, -4.678e-02, 9.957e-02, 3.396e-02, 1.657e-02, 4.533e-02, -4.204e-03, 4.965e-03), r);\n\tr = MulAdd(s5_1, M4(-1.747e-02, -2.485e-02, -3.850e-02, 5.838e-02, -6.083e-02, -1.110e-02, -3.806e-02, 9.352e-02, -7.105e-02, 3.170e-02, -3.524e-02, -1.404e-01, 5.260e-02, 4.554e-02, 4.306e-02, -2.121e-02), r);\n\tr = MulAdd(s5_2, M4(2.305e-02, -5.438e-03, -3.145e-03, -5.896e-02, -1.098e-01, 5.827e-03, -3.090e-02, -4.094e-02, 2.971e-02, -3.924e-03, 1.197e-02, -8.427e-03, -4.808e-02, -3.403e-02, -3.744e-03, -5.660e-02), r);\n\tr = MulAdd(s5_3, M4(7.114e-02, -1.410e-01, 4.887e-02, 9.254e-02, -1.004e-03, -8.354e-03, 1.798e-01, 3.584e-02, 2.084e-01, 3.576e-02, -3.979e-03, 1.487e-01, -2.453e-02, 8.486e-02, -4.554e-02, -2.278e-02), r);\n\tr = MulAdd(s5_4, M4(3.145e-02, 2.088e-01, 2.877e-01, -2.699e-02, -2.542e-02, -3.369e-01, -3.053e-01, 1.283e-01, 5.013e-02, -7.967e-04, 3.206e-01, -3.933e-01, 2.370e-02, -5.881e-02, -1.360e-01, 7.423e-02), r);\n\tr = MulAdd(s5_5, M4(5.378e-02, 8.026e-03, 1.786e-01, -1.762e-01, -1.796e-02, 5.854e-02, -6.146e-02, 7.364e-02, 3.034e-02, 2.706e-03, 5.823e-02, -5.505e-02, 3.285e-02, -1.949e-02, -2.971e-02, 1.573e-02), r);\n\tr = MulAdd(s5_6, M4(3.967e-02, -8.323e-02, -1.240e-02, 4.045e-03, -4.268e-02, -2.509e-02, 1.613e-02, 1.509e-02, 2.492e-02, -1.008e-02, -1.946e-02, 6.058e-03, -3.131e-02, -8.883e-03, -4.384e-03, -3.910e-02), r);\n\tr = MulAdd(s5_7, M4(-5.820e-02, 1.896e-01, -3.927e-02, 1.346e-02, -5.433e-02, -1.373e-01, 6.063e-02, -8.771e-02, 9.632e-02, 4.942e-02, 3.403e-02, 4.189e-03, -1.560e-02, 4.081e-02, 1.924e-02, 3.389e-02), r);\n\tr = MulAdd(s5_8, M4(8.582e-02, 1.073e-03, 6.109e-02, -3.919e-02, -1.008e-01, 4.365e-03, -7.030e-02, 7.613e-03, 7.648e-03, 5.992e-03, 2.352e-02, -3.063e-05, 9.644e-04, -8.910e-03, 7.871e-03, -2.945e-02), r);\n\tr = MulAdd(s6_0, M4(-6.219e-02, 9.462e-03, -5.277e-02, -4.953e-02, 1.254e-03, 6.616e-02, -4.846e-02, 6.083e-02, 5.975e-03, -2.187e-02, -1.862e-01, -2.549e-02, 2.145e-02, 1.917e-02, -2.752e-02, 1.375e-02), r);\n\tr = MulAdd(s6_1, M4(-1.423e-03, 3.281e-02, 3.788e-02, 1.870e-02, 1.062e-01, 5.928e-02, -2.608e-01, 4.040e-01, 6.632e-02, 2.468e-02, -4.309e-02, -3.497e-03, -2.710e-03, 7.529e-02, 7.273e-02, 3.638e-02), r);\n\tr = MulAdd(s6_2, M4(4.697e-02, 8.655e-03, -1.530e-02, 8.707e-03, -5.490e-02, 3.734e-03, 4.887e-02, -2.584e-01, -2.511e-02, -2.146e-02, -7.291e-02, -8.669e-03, -5.014e-02, -4.938e-02, -3.849e-02, 9.120e-03), r);\n\tr = MulAdd(s6_3, M4(-9.087e-02, 2.014e-02, -5.573e-02, -6.906e-02, 1.306e-01, 1.068e-02, -2.333e-02, 3.826e-02, 4.739e-02, -5.959e-02, 1.413e-01, -1.084e-02, 1.212e-02, 2.388e-02, 1.633e-03, -7.772e-02), r);\n\tr = MulAdd(s6_4, M4(-5.059e-02, -5.444e-02, -1.575e-01, 6.070e-02, -1.403e-01, -8.611e-02, 3.665e-01, -5.033e-01, -7.558e-02, 1.507e-01, 2.363e-01, -2.066e-01, -2.612e-02, 9.084e-02, 1.593e-01, -4.946e-02), r);\n\tr = MulAdd(s6_5, M4(6.337e-02, -5.715e-02, -1.101e-02, 3.131e-02, 2.204e-01, -1.842e-02, -4.902e-02, -4.250e-02, 1.490e-02, -4.777e-02, -6.084e-02, 2.862e-02, -4.229e-03, -2.731e-02, -1.090e-01, -9.158e-02), r);\n\tr = MulAdd(s6_6, M4(-4.239e-02, 6.636e-02, -5.269e-03, -5.080e-02, -2.288e-02, 1.264e-01, 1.378e-02, -1.793e-02, -3.185e-02, -2.347e-02, -4.334e-02, 7.789e-03, -2.840e-02, -7.845e-02, -4.260e-02, -3.045e-02), r);\n\tr = MulAdd(s6_7, M4(-1.550e-02, 2.201e-02, 2.482e-02, -4.016e-03, 6.373e-02, -9.692e-02, 1.513e-02, 2.924e-02, 5.650e-02, 3.793e-02, 2.864e-02, -9.912e-03, -1.011e-02, 1.524e-01, -2.573e-02, -1.628e-02), r);\n\tr = MulAdd(s6_8, M4(8.834e-03, -3.029e-02, -4.205e-02, -1.419e-02, 3.865e-02, -2.833e-02, -2.787e-02, 4.741e-04, 1.460e-02, -2.973e-03, -6.640e-04, 4.523e-03, -4.376e-03, 3.053e-02, -1.818e-02, -1.190e-01), r);\n\tr = MulAdd(s7_0, M4(-8.747e-02, 6.773e-02, -8.260e-02, -1.418e-01, 2.004e-03, -3.556e-02, 1.986e-02, -3.789e-02, -1.301e-02, -7.598e-02, -8.963e-02, -2.681e-02, 4.820e-02, 2.518e-02, 3.622e-02, 1.282e-02), r);\n\tr = MulAdd(s7_1, M4(5.156e-02, -1.921e-01, -1.351e-01, 1.500e-01, 2.851e-02, -2.615e-02, -5.104e-02, -1.337e-02, -4.990e-02, 6.353e-02, 1.466e-02, -8.082e-03, -2.539e-02, 5.501e-02, 6.142e-02, -8.426e-03), r);\n\tr = MulAdd(s7_2, M4(2.623e-02, -2.479e-02, 1.455e-02, -4.765e-02, 3.307e-02, -7.951e-03, -1.461e-02, 2.652e-02, -3.376e-02, 7.495e-05, -8.081e-02, -3.611e-02, -2.016e-02, -3.285e-02, -3.195e-02, -1.305e-02), r);\n\tr = MulAdd(s7_3, M4(6.073e-02, -6.791e-02, 3.322e-02, 6.663e-02, 1.369e-02, 3.348e-02, 5.260e-02, -1.204e-02, -3.278e-02, -1.580e-02, -1.213e-02, -4.230e-02, 1.845e-02, -7.809e-03, 2.595e-02, 4.624e-02), r);\n\tr = MulAdd(s7_4, M4(-1.441e-01, -2.309e-02, 1.171e-01, -2.103e-01, 5.903e-02, -5.578e-02, 5.480e-03, 2.120e-02, 1.271e-02, 3.046e-02, 9.099e-02, 7.909e-03, -1.087e-01, -1.353e-02, 1.480e-01, -9.692e-02), r);\n\tr = MulAdd(s7_5, M4(-2.112e-02, 1.730e-02, -1.068e-01, 2.903e-02, 6.340e-03, 1.157e-02, 5.409e-02, -6.964e-02, 1.177e-01, -6.366e-02, -3.753e-02, 5.627e-02, 4.602e-03, -5.148e-03, -2.803e-02, -3.905e-02), r);\n\tr = MulAdd(s7_6, M4(4.832e-02, 7.096e-02, 2.105e-02, 2.247e-02, 2.229e-02, -3.705e-02, -5.896e-03, -1.092e-02, -3.567e-02, -2.236e-02, -1.916e-02, -3.311e-02, 9.405e-03, -3.580e-02, -2.565e-02, 2.150e-02), r);\n\tr = MulAdd(s7_7, M4(-4.603e-02, 1.223e-02, -4.120e-02, 3.812e-02, 5.082e-02, -5.348e-02, 3.159e-02, 2.287e-02, 2.515e-02, 9.725e-02, 6.245e-02, -2.659e-02, -3.666e-02, 1.681e-02, 1.776e-02, -3.267e-02), r);\n\tr = MulAdd(s7_8, M4(4.920e-02, -2.549e-02, -4.974e-03, 4.321e-03, 2.267e-02, 2.283e-02, -5.713e-03, -3.793e-02, -1.503e-02, -2.335e-02, -1.049e-02, 3.006e-02, 1.663e-02, 2.374e-03, -1.261e-02, -8.854e-03), r);\n\treturn r;\n}\n\nvoid Pass16(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 17\n//!DESC conv16\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.027e-03, 2.169e-03, -4.476e-03, 9.853e-04 };\n\tr = MulAdd(s0_0, M4(-2.029e-02, 4.879e-04, -8.758e-03, 1.475e-04, -1.389e-02, 2.532e-02, 9.795e-03, 8.629e-03, -1.347e-02, 2.776e-02, -1.624e-02, -1.667e-02, -1.381e-02, -1.287e-03, -1.868e-01, -6.917e-02), r);\n\tr = MulAdd(s0_1, M4(-9.130e-03, 8.736e-03, 2.281e-02, -2.990e-02, 1.027e-02, -8.698e-02, -2.193e-02, -6.665e-02, 2.959e-02, -6.816e-02, -7.055e-03, -3.538e-02, -1.003e-01, 1.809e-02, 3.144e-02, 6.967e-03), r);\n\tr = MulAdd(s0_2, M4(-5.170e-03, 1.345e-03, -2.046e-02, 1.422e-02, 7.018e-03, 5.548e-02, 3.150e-02, 8.275e-02, -3.599e-02, 6.821e-02, 1.848e-02, -3.536e-02, 3.895e-02, -1.010e-01, -3.898e-02, -8.420e-02), r);\n\tr = MulAdd(s0_3, M4(8.822e-03, -4.687e-03, -4.076e-02, 2.655e-02, -1.233e-01, -1.322e-02, -1.004e-01, -4.416e-02, -9.892e-03, 1.772e-02, -3.910e-02, 4.194e-02, -8.128e-02, 5.313e-02, 1.397e-01, -8.644e-02), r);\n\tr = MulAdd(s0_4, M4(-1.556e-03, 8.777e-02, 3.236e-02, -1.485e-02, 8.951e-02, 1.694e-01, -3.848e-02, 8.485e-02, -7.786e-02, 1.043e-01, 8.126e-02, -4.799e-02, -3.285e-01, -1.213e-01, -1.267e-01, 1.159e-01), r);\n\tr = MulAdd(s0_5, M4(2.269e-02, -4.562e-02, -2.481e-03, -4.575e-02, -3.557e-02, -9.145e-03, 2.451e-02, 6.366e-02, 4.814e-02, 4.098e-02, -1.829e-03, 1.207e-01, -2.781e-02, 1.333e-02, -5.533e-02, -7.421e-02), r);\n\tr = MulAdd(s0_6, M4(3.073e-02, 1.740e-02, -4.553e-02, -2.311e-02, 2.805e-02, 4.819e-03, -3.860e-02, -7.901e-03, 3.804e-02, 4.899e-02, 4.114e-02, -5.725e-02, -8.765e-02, -1.678e-03, -4.249e-02, -2.247e-02), r);\n\tr = MulAdd(s0_7, M4(4.033e-02, -6.968e-02, -1.117e-02, 2.634e-02, 4.042e-03, 2.353e-02, -6.108e-03, -9.028e-03, 2.724e-02, -5.808e-02, 6.985e-03, 2.448e-02, -1.314e-02, -2.960e-02, 8.396e-03, 3.892e-02), r);\n\tr = MulAdd(s0_8, M4(-6.932e-03, 1.874e-02, -5.344e-03, 1.371e-03, -1.015e-02, 2.203e-02, -2.644e-03, -4.730e-04, 1.663e-03, -5.859e-02, 1.909e-03, -1.679e-02, -8.083e-02, -2.215e-02, 5.046e-05, -8.255e-02), r);\n\tr = MulAdd(s1_0, M4(-9.475e-03, 1.204e-02, -2.413e-02, -9.667e-03, -2.342e-02, 6.405e-03, 5.050e-02, 9.364e-03, 1.852e-02, -1.010e-02, -2.013e-02, -2.629e-02, -1.507e-02, -3.515e-02, 5.260e-02, -1.952e-02), r);\n\tr = MulAdd(s1_1, M4(4.171e-03, 1.215e-02, -7.334e-03, -6.108e-02, -3.149e-02, 8.647e-02, -4.531e-02, 3.942e-02, 3.959e-02, -1.430e-01, 5.422e-02, 1.595e-02, 5.384e-02, -3.547e-02, 2.321e-02, -1.340e-02), r);\n\tr = MulAdd(s1_2, M4(-4.578e-03, -8.472e-03, -1.729e-02, 1.731e-02, -2.589e-02, -6.663e-02, -9.824e-03, -5.955e-02, -3.549e-04, 5.133e-02, 2.353e-02, 2.833e-02, -2.995e-03, -1.346e-01, -9.590e-03, -1.103e-01), r);\n\tr = MulAdd(s1_3, M4(2.615e-02, -1.288e-02, 2.305e-02, -5.901e-03, 2.133e-03, 2.662e-02, -1.271e-02, -2.611e-02, -3.497e-02, 1.143e-02, -2.019e-01, 7.622e-02, 1.902e-03, -1.654e-02, -2.624e-02, -2.593e-02), r);\n\tr = MulAdd(s1_4, M4(-2.800e-02, -5.191e-02, 5.445e-02, -9.295e-03, 7.110e-02, -1.563e-02, -1.133e-01, 5.510e-03, -1.650e-01, 3.389e-01, -6.446e-02, -1.019e-01, -6.448e-03, 5.044e-02, -2.881e-02, -6.928e-02), r);\n\tr = MulAdd(s1_5, M4(3.185e-02, -9.858e-02, -1.038e-02, -1.009e-01, -4.432e-02, 5.652e-03, 1.895e-03, 5.691e-02, 1.375e-03, -7.187e-02, -2.144e-03, 7.523e-02, 5.999e-03, 4.358e-03, -3.024e-02, 2.206e-03), r);\n\tr = MulAdd(s1_6, M4(-1.016e-02, -2.193e-02, -3.216e-03, -1.971e-02, -2.304e-02, -1.332e-02, -3.761e-02, 2.391e-02, -3.940e-02, 2.974e-02, 3.480e-02, -4.996e-02, 1.474e-02, 4.306e-02, -1.169e-02, -2.536e-02), r);\n\tr = MulAdd(s1_7, M4(-4.764e-02, -5.189e-02, 1.263e-02, 6.666e-02, -4.749e-02, -2.246e-02, 5.629e-03, 6.944e-03, -4.536e-02, -1.074e-01, 5.213e-02, 6.953e-02, -5.418e-02, -1.421e-02, -6.040e-03, 2.238e-03), r);\n\tr = MulAdd(s1_8, M4(-8.634e-04, -1.264e-03, -2.779e-03, 5.727e-03, -2.094e-02, -4.706e-03, 3.547e-04, -1.252e-02, -2.854e-03, -3.222e-02, 8.115e-03, -4.713e-02, -1.804e-02, 2.007e-03, 1.290e-02, 1.889e-02), r);\n\tr = MulAdd(s2_0, M4(1.122e-02, -3.919e-02, -1.199e-02, -3.199e-02, 7.789e-03, -2.405e-04, -4.022e-03, 3.353e-02, -1.405e-01, 2.972e-02, 1.821e-01, 3.272e-02, -1.102e-02, 2.506e-02, 1.137e-01, 3.607e-02), r);\n\tr = MulAdd(s2_1, M4(6.040e-03, -7.862e-02, -8.569e-02, 2.748e-02, 7.167e-03, -7.995e-02, 3.430e-02, -1.828e-02, 2.266e-01, 1.570e-01, 3.770e-03, -5.764e-02, 3.176e-03, 6.758e-02, 9.676e-02, -6.685e-04), r);\n\tr = MulAdd(s2_2, M4(4.624e-03, -1.709e-01, -2.355e-02, -1.184e-01, 2.503e-02, 5.855e-02, 4.564e-03, 4.577e-02, 2.700e-02, -3.105e-02, 7.368e-03, -9.087e-03, -1.610e-02, -6.342e-02, 1.078e-02, -1.683e-01), r);\n\tr = MulAdd(s2_3, M4(-1.038e-01, -5.620e-02, 5.057e-02, -1.136e-01, 4.072e-03, -2.350e-02, -1.162e-01, 5.121e-02, 6.767e-02, 3.072e-02, -7.594e-02, -2.475e-02, 3.785e-02, 9.335e-02, 1.050e-01, 2.552e-02), r);\n\tr = MulAdd(s2_4, M4(1.875e-01, -3.006e-01, 1.249e-01, 2.122e-01, -8.097e-02, 8.200e-02, 4.680e-02, 1.175e-01, -2.058e-01, -9.523e-02, 6.787e-03, 2.453e-01, -1.272e-01, -2.239e-01, 2.698e-01, -3.082e-01), r);\n\tr = MulAdd(s2_5, M4(-5.849e-02, 1.395e-01, -1.039e-01, 2.000e-02, -3.971e-02, -5.141e-03, -1.663e-02, -2.269e-02, -1.253e-03, -7.699e-02, -6.501e-03, 7.125e-04, -2.391e-03, -7.280e-02, 3.890e-02, 7.424e-02), r);\n\tr = MulAdd(s2_6, M4(-9.839e-02, -4.239e-02, -1.770e-01, -4.000e-02, -1.275e-02, 1.437e-02, 3.002e-02, -3.845e-02, -6.443e-03, -7.469e-03, -1.396e-02, 3.598e-02, -4.157e-03, -1.014e-02, 5.567e-03, -7.055e-02), r);\n\tr = MulAdd(s2_7, M4(4.702e-02, -5.766e-02, -3.152e-02, -2.920e-01, 9.183e-02, -5.891e-02, 2.027e-02, 1.401e-01, 6.066e-03, -2.295e-02, -1.850e-02, -9.314e-03, -2.626e-02, 2.560e-02, 1.554e-02, -9.582e-02), r);\n\tr = MulAdd(s2_8, M4(-5.667e-02, 8.757e-03, -1.063e-02, -1.721e-02, 5.953e-02, -2.878e-02, -3.201e-02, 2.957e-02, -3.086e-05, -4.542e-03, -4.631e-03, -2.061e-02, 1.549e-02, 6.634e-03, 1.177e-02, -4.624e-02), r);\n\tr = MulAdd(s3_0, M4(-3.817e-02, -6.516e-02, 6.351e-03, -4.393e-02, 2.210e-03, -8.994e-04, -1.707e-02, -2.814e-02, 3.967e-02, 4.164e-02, -2.078e-04, 5.480e-02, -4.200e-03, 2.909e-02, 3.827e-03, 5.186e-02), r);\n\tr = MulAdd(s3_1, M4(-1.730e-02, 5.633e-02, -6.677e-03, -2.826e-02, 1.806e-02, 5.101e-02, 4.220e-02, 9.208e-02, -1.975e-02, -3.465e-02, -4.827e-02, -2.703e-02, 3.934e-03, -5.528e-02, 1.503e-02, -1.808e-02), r);\n\tr = MulAdd(s3_2, M4(-2.771e-03, -2.343e-02, 2.906e-03, 2.482e-02, -5.288e-03, 7.238e-03, -3.635e-03, -2.292e-02, -2.141e-03, 7.963e-02, 2.594e-02, 9.728e-02, 3.985e-03, 8.611e-03, 2.922e-02, -5.558e-02), r);\n\tr = MulAdd(s3_3, M4(-3.361e-02, -1.143e-02, 1.257e-03, -5.252e-02, -3.814e-02, -4.063e-02, 5.435e-02, -4.041e-02, -4.214e-02, 1.422e-02, -2.499e-03, -1.482e-02, 3.867e-02, 5.719e-02, -4.521e-03, 1.558e-01), r);\n\tr = MulAdd(s3_4, M4(3.368e-03, 2.704e-02, -4.608e-03, -2.946e-02, -4.495e-02, 1.209e-03, 5.002e-02, 1.787e-01, 8.587e-03, -7.436e-03, -1.222e-02, 1.216e-03, -8.122e-02, -1.045e-01, 6.610e-03, -2.437e-01), r);\n\tr = MulAdd(s3_5, M4(1.244e-02, -1.966e-02, 7.155e-02, -2.583e-02, -5.333e-02, 1.328e-02, 9.831e-03, -5.143e-02, 2.557e-02, -1.996e-02, 3.396e-03, 1.462e-02, -3.415e-02, -3.247e-02, -1.521e-03, -4.948e-02), r);\n\tr = MulAdd(s3_6, M4(3.160e-02, 1.019e-02, -4.078e-02, -6.326e-02, -4.169e-02, -5.095e-02, 7.710e-03, -5.661e-02, 1.123e-02, -1.954e-02, -1.598e-02, -2.833e-02, -2.837e-02, 4.464e-02, 2.500e-02, -1.005e-02), r);\n\tr = MulAdd(s3_7, M4(1.256e-02, -5.163e-02, -2.687e-02, 3.633e-02, 9.786e-03, -3.010e-02, 9.320e-03, 5.050e-02, 3.911e-02, -2.263e-02, 1.790e-02, 2.694e-02, -3.798e-02, 1.774e-02, -2.614e-02, -4.926e-02), r);\n\tr = MulAdd(s3_8, M4(-2.943e-03, 6.765e-02, 1.541e-02, 4.533e-02, 6.659e-03, -6.111e-03, 3.756e-03, 5.907e-03, 2.580e-02, 5.163e-03, -1.929e-03, 2.221e-02, -1.588e-02, -1.152e-02, 1.484e-04, 3.090e-03), r);\n\tr = MulAdd(s4_0, M4(2.188e-03, 1.233e-02, -6.039e-03, -3.271e-03, -4.075e-02, -1.018e-01, 5.750e-02, -4.206e-02, 2.208e-02, 4.427e-03, 4.322e-03, 2.824e-02, 2.442e-02, -1.590e-03, -5.812e-02, 2.286e-02), r);\n\tr = MulAdd(s4_1, M4(1.203e-02, -2.723e-02, 2.792e-02, 4.277e-03, -1.371e-02, 1.807e-01, -7.397e-02, 5.375e-02, 6.859e-03, -1.108e-02, 6.324e-03, -2.214e-02, 1.751e-02, -1.223e-01, 2.908e-02, -3.164e-02), r);\n\tr = MulAdd(s4_2, M4(-1.789e-02, 2.918e-02, -2.021e-02, 1.429e-02, -8.790e-02, -1.048e-01, 4.032e-03, -1.448e-01, 4.563e-03, 1.140e-02, 1.336e-02, -5.594e-03, -9.261e-03, 2.338e-02, 2.334e-03, 4.670e-02), r);\n\tr = MulAdd(s4_3, M4(-3.749e-02, -3.339e-02, 7.810e-03, -2.643e-02, 1.792e-02, -2.154e-02, 1.367e-02, 2.375e-02, -2.629e-02, -1.692e-02, -4.533e-02, 8.193e-03, 9.931e-03, 2.730e-02, -2.520e-02, 2.837e-02), r);\n\tr = MulAdd(s4_4, M4(9.309e-03, 8.926e-02, -6.059e-02, 6.958e-02, 1.646e-01, -1.409e-03, 6.206e-02, -1.003e-01, -8.349e-03, 2.249e-01, -1.141e-01, 6.166e-02, -1.402e-01, -2.770e-01, -1.820e-01, 7.931e-02), r);\n\tr = MulAdd(s4_5, M4(2.799e-02, -6.673e-02, -8.643e-03, -1.263e-02, 4.470e-02, 3.160e-02, -4.880e-02, 4.270e-04, 2.690e-03, -4.527e-02, 2.218e-02, 2.813e-02, -1.331e-02, -4.080e-02, -8.969e-03, -1.897e-01), r);\n\tr = MulAdd(s4_6, M4(1.957e-02, 5.533e-03, -2.370e-02, 3.365e-04, -2.176e-02, -1.949e-02, 6.947e-03, -2.445e-02, 8.425e-02, 6.763e-02, -5.106e-02, 2.826e-02, -6.571e-02, -1.743e-02, -3.430e-02, 5.619e-02), r);\n\tr = MulAdd(s4_7, M4(-4.661e-03, -3.377e-02, -3.822e-02, 1.310e-02, -2.800e-02, -8.351e-04, -1.781e-02, 1.310e-02, 4.303e-02, -2.057e-02, -1.517e-02, -2.399e-02, -8.678e-02, 1.040e-01, 3.349e-03, -1.960e-02), r);\n\tr = MulAdd(s4_8, M4(1.441e-03, 1.279e-02, 1.996e-03, 1.996e-02, -7.728e-03, -4.151e-03, 2.081e-04, -2.267e-02, -4.927e-03, 1.815e-02, -3.295e-02, 1.235e-02, -2.610e-02, -7.928e-02, -2.486e-02, 5.305e-02), r);\n\tr = MulAdd(s5_0, M4(-3.050e-02, 5.988e-02, 4.850e-02, 2.003e-03, -1.797e-02, -3.545e-02, 6.963e-02, -2.332e-02, -1.274e-02, 5.089e-02, -5.318e-02, 3.672e-02, 1.798e-02, 1.617e-02, -1.356e-02, -2.160e-03), r);\n\tr = MulAdd(s5_1, M4(-9.221e-03, -3.095e-02, -1.260e-01, -3.726e-02, -2.899e-02, -1.172e-01, -1.080e-02, -8.622e-02, 5.263e-03, 6.370e-04, 2.907e-02, 8.421e-02, 3.938e-02, -8.754e-04, -2.304e-02, 5.670e-02), r);\n\tr = MulAdd(s5_2, M4(-7.475e-02, 2.010e-02, -1.580e-02, -9.556e-02, -3.775e-02, 3.063e-02, 2.983e-02, 3.424e-03, 1.927e-02, 6.518e-02, 2.239e-02, 8.391e-02, -5.363e-03, 4.095e-02, 1.163e-02, -6.192e-03), r);\n\tr = MulAdd(s5_3, M4(5.238e-03, -1.321e-01, -3.892e-02, -1.501e-02, 2.361e-02, -3.405e-02, 4.850e-02, -4.595e-02, -7.598e-02, 6.938e-02, 1.223e-01, 2.470e-02, 3.387e-02, 3.784e-02, -7.823e-02, 8.717e-02), r);\n\tr = MulAdd(s5_4, M4(-5.467e-03, 4.775e-02, -2.619e-01, 1.500e-02, 3.519e-01, 2.178e-02, 1.416e-02, 5.189e-02, 9.114e-02, 3.850e-01, 1.040e-01, 2.825e-01, -1.140e-01, 5.294e-02, 1.356e-02, 8.804e-02), r);\n\tr = MulAdd(s5_5, M4(4.030e-02, -8.907e-02, 4.373e-02, -2.419e-01, 2.962e-02, 9.283e-02, -4.764e-02, -1.203e-01, -6.276e-02, -8.897e-02, 2.790e-02, 3.085e-02, 4.104e-02, -1.067e-01, -2.282e-02, 2.516e-03), r);\n\tr = MulAdd(s5_6, M4(8.130e-02, 3.593e-02, -1.512e-02, -2.130e-02, 3.846e-04, 1.084e-02, -1.571e-02, -3.920e-02, -1.775e-02, 3.412e-03, -3.112e-03, 3.362e-02, 2.540e-02, 2.637e-02, 1.125e-02, 2.104e-02), r);\n\tr = MulAdd(s5_7, M4(5.058e-02, -1.020e-01, -1.193e-01, 3.974e-02, -6.795e-02, 1.397e-02, 9.795e-03, -4.394e-02, -6.067e-04, -2.733e-02, 2.546e-02, 2.650e-02, 1.741e-02, -3.900e-02, -4.500e-02, -2.266e-02), r);\n\tr = MulAdd(s5_8, M4(5.627e-02, -6.886e-02, -2.271e-02, 2.678e-02, -2.336e-02, -8.212e-03, 9.465e-03, 1.759e-02, 1.935e-02, 7.441e-02, -3.217e-02, 3.104e-02, -9.202e-03, -7.706e-03, -1.861e-02, -6.168e-02), r);\n\tr = MulAdd(s6_0, M4(-2.576e-02, 1.129e-01, 2.133e-03, 2.901e-03, 1.055e-02, -2.322e-02, -1.345e-02, 1.667e-02, 1.038e-02, 4.466e-02, 1.365e-02, -1.159e-02, 4.424e-03, -4.547e-02, 1.407e-02, 5.112e-02), r);\n\tr = MulAdd(s6_1, M4(-3.459e-02, -7.740e-02, 3.556e-02, -1.876e-02, 5.276e-02, 4.453e-02, 7.842e-03, -4.327e-02, -3.259e-02, -4.898e-02, -5.375e-02, -2.294e-02, -4.080e-02, 7.458e-02, 9.618e-03, -1.069e-02), r);\n\tr = MulAdd(s6_2, M4(5.067e-02, 5.603e-03, -1.500e-02, 5.532e-02, -2.757e-02, -7.832e-02, -2.900e-02, 1.476e-02, -1.282e-02, 4.474e-02, -1.039e-02, 1.193e-02, 3.010e-03, -1.267e-02, 1.180e-02, -3.899e-02), r);\n\tr = MulAdd(s6_3, M4(3.801e-02, -3.406e-03, -5.913e-02, 4.177e-03, 4.284e-02, 3.299e-02, -3.133e-02, 1.868e-02, 5.249e-02, -7.641e-02, -7.446e-02, 3.435e-02, -6.008e-03, 4.739e-02, 1.140e-01, 5.544e-02), r);\n\tr = MulAdd(s6_4, M4(-5.225e-02, 1.877e-02, 1.099e-01, 8.499e-02, -6.215e-02, -1.398e-01, 7.367e-03, -1.408e-02, 6.409e-02, 1.008e-01, -2.400e-01, -8.376e-02, 3.692e-02, 3.405e-04, -1.053e-01, 1.195e-01), r);\n\tr = MulAdd(s6_5, M4(2.643e-02, -1.569e-02, -1.466e-02, -2.440e-02, 3.143e-02, 8.849e-02, -3.169e-02, -3.565e-02, 1.911e-02, 4.959e-02, 9.990e-03, 7.206e-02, -6.857e-03, -3.100e-02, 1.367e-02, -2.076e-02), r);\n\tr = MulAdd(s6_6, M4(-2.594e-03, 1.125e-02, -7.613e-02, 2.455e-02, -3.486e-02, -2.049e-02, -1.238e-02, 2.837e-02, -4.413e-02, -1.939e-02, 8.693e-02, 9.861e-03, 1.894e-02, 3.119e-02, 4.539e-02, 1.646e-02), r);\n\tr = MulAdd(s6_7, M4(-4.224e-02, -2.552e-02, -1.879e-03, 5.658e-03, 3.094e-02, 5.435e-03, 3.240e-03, 2.593e-02, -9.090e-04, 7.022e-02, -1.395e-02, 2.027e-02, 3.540e-02, 2.128e-02, -2.508e-02, 1.386e-02), r);\n\tr = MulAdd(s6_8, M4(-3.235e-02, -6.805e-03, 1.986e-02, -5.980e-02, -1.837e-02, 4.823e-02, -4.069e-02, 4.946e-02, -5.257e-02, -5.763e-02, 1.689e-02, -7.420e-02, -7.487e-03, 3.107e-02, 1.590e-02, 4.157e-03), r);\n\tr = MulAdd(s7_0, M4(-4.054e-02, 8.705e-03, 1.678e-02, -2.195e-02, -3.439e-02, 2.712e-02, 2.326e-02, 8.939e-03, 2.003e-03, 2.375e-02, 2.251e-02, -7.720e-03, 2.541e-02, -3.579e-02, 2.579e-02, 3.495e-02), r);\n\tr = MulAdd(s7_1, M4(-1.394e-03, 5.266e-02, 1.313e-02, -8.081e-02, 6.935e-02, 1.109e-01, 5.465e-02, -1.385e-02, -2.348e-02, -6.624e-02, -3.073e-03, 9.761e-03, 5.321e-03, -1.357e-02, -3.844e-02, -4.074e-02), r);\n\tr = MulAdd(s7_2, M4(-2.816e-02, -8.956e-02, -3.648e-02, -1.188e-01, 1.016e-02, -8.859e-02, 1.397e-02, 6.185e-02, -2.495e-03, -3.623e-02, 9.019e-04, -5.670e-02, -1.218e-02, 4.075e-02, -7.870e-04, -2.862e-02), r);\n\tr = MulAdd(s7_3, M4(7.425e-02, 2.433e-02, -2.468e-02, -1.552e-02, 1.614e-02, 3.148e-02, -4.567e-02, 4.686e-03, 1.311e-02, 6.546e-03, 1.486e-02, 8.595e-03, -4.130e-03, 5.457e-02, 1.922e-02, 1.460e-02), r);\n\tr = MulAdd(s7_4, M4(-3.507e-02, -8.057e-02, -5.361e-02, 4.949e-02, -2.027e-03, -2.628e-01, 1.921e-02, 7.200e-02, -1.868e-02, 1.318e-02, -4.976e-02, 1.480e-02, -1.817e-02, -1.079e-01, -1.634e-01, -2.196e-01), r);\n\tr = MulAdd(s7_5, M4(9.744e-03, 7.544e-02, -6.728e-03, -9.174e-02, -2.069e-02, 3.819e-02, 5.528e-02, 1.131e-01, 2.880e-03, 1.658e-03, 1.095e-02, 6.066e-03, 1.375e-02, -4.229e-02, 5.933e-03, 1.083e-01), r);\n\tr = MulAdd(s7_6, M4(-4.652e-02, 6.894e-03, -3.310e-02, -3.747e-02, -1.242e-02, -2.874e-02, -4.627e-02, 2.411e-02, -2.237e-03, -1.494e-03, 3.698e-02, 1.460e-03, 6.772e-03, -3.464e-03, 4.233e-02, 1.243e-02), r);\n\tr = MulAdd(s7_7, M4(3.051e-03, -5.852e-02, -2.634e-02, 7.790e-02, 3.050e-02, 4.398e-02, 7.121e-02, -7.453e-02, 1.137e-02, 7.497e-02, -1.589e-02, 2.040e-02, -2.012e-02, 1.422e-02, -5.347e-03, -7.258e-02), r);\n\tr = MulAdd(s7_8, M4(-1.066e-02, -4.479e-02, -6.650e-03, -8.960e-02, -1.850e-02, 1.870e-02, 1.950e-02, 5.075e-02, -4.336e-02, -3.843e-02, 1.724e-04, -2.057e-02, -6.799e-04, -2.837e-02, 6.789e-03, 5.809e-03), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.186e-03, -5.805e-03, 2.543e-03, 1.149e-03 };\n\tr = MulAdd(s0_0, M4(-1.602e-02, 1.944e-02, 2.057e-02, 2.308e-02, -1.138e-03, -8.687e-02, -3.301e-02, -1.328e-02, -9.598e-03, 4.121e-02, -3.381e-02, 3.510e-02, -2.909e-02, -1.159e-01, -1.384e-02, 1.851e-02), r);\n\tr = MulAdd(s0_1, M4(-7.722e-03, -1.367e-02, 4.892e-02, -8.374e-02, 1.866e-02, -3.208e-01, -2.756e-02, -1.617e-01, 2.663e-02, 5.331e-02, -1.181e-01, 2.712e-02, -1.752e-03, 8.796e-02, -2.881e-01, 7.150e-03), r);\n\tr = MulAdd(s0_2, M4(6.638e-03, -2.737e-02, 7.612e-03, -3.036e-02, -3.045e-02, 4.160e-03, -4.504e-02, 1.067e-01, -1.567e-02, 7.296e-03, -2.313e-02, 4.067e-02, -3.013e-02, -6.589e-02, -3.004e-02, 1.242e-01), r);\n\tr = MulAdd(s0_3, M4(4.358e-02, 8.719e-02, 1.000e-02, -9.082e-02, -5.349e-02, 1.008e-01, -4.839e-02, -6.958e-02, 4.046e-02, 4.825e-03, 7.882e-03, -5.125e-02, -1.245e-01, -8.734e-02, -3.235e-02, 3.103e-02), r);\n\tr = MulAdd(s0_4, M4(-6.380e-03, 5.468e-01, 8.698e-03, 3.629e-01, -4.939e-02, 3.985e-01, 1.027e-02, 1.595e-01, 2.367e-02, -4.577e-03, 6.186e-02, 6.269e-02, 5.279e-01, -3.631e-02, -3.986e-02, 7.478e-02), r);\n\tr = MulAdd(s0_5, M4(3.021e-02, -2.171e-02, 5.334e-03, -9.941e-02, 4.840e-02, 7.097e-02, -9.422e-02, 2.264e-02, 8.765e-02, -2.527e-02, 5.788e-02, -4.662e-02, -4.417e-02, 3.999e-02, 4.138e-02, -9.514e-02), r);\n\tr = MulAdd(s0_6, M4(6.274e-02, 7.143e-02, -2.353e-02, -6.923e-03, 6.274e-02, 6.906e-04, 1.702e-02, 1.087e-02, 6.130e-02, 3.286e-02, 1.669e-02, 2.142e-02, -2.491e-02, 1.652e-02, 2.754e-03, 2.682e-03), r);\n\tr = MulAdd(s0_7, M4(-3.790e-03, 7.876e-02, -2.640e-02, -6.914e-02, -3.984e-02, 4.054e-02, -7.473e-03, -6.250e-03, 1.066e-02, -5.058e-02, -1.415e-02, 1.820e-03, -1.421e-01, -3.648e-03, -7.857e-03, 5.938e-03), r);\n\tr = MulAdd(s0_8, M4(1.763e-02, 1.438e-02, -4.884e-03, 1.350e-02, -1.027e-02, 2.633e-02, 1.813e-02, 1.996e-02, -4.629e-02, -4.395e-02, -1.242e-02, -6.677e-04, 5.819e-02, 3.354e-02, 8.380e-03, 4.855e-03), r);\n\tr = MulAdd(s1_0, M4(-2.772e-02, -8.495e-04, 2.062e-02, -1.064e-02, -1.575e-02, 6.163e-02, 4.156e-02, -1.324e-02, -2.506e-02, 2.186e-03, -3.599e-02, 6.467e-02, -4.567e-02, -6.696e-02, 2.431e-02, -2.636e-02), r);\n\tr = MulAdd(s1_1, M4(8.213e-03, -1.493e-01, 1.733e-02, -9.047e-02, 2.738e-02, 5.871e-02, -1.676e-02, 7.615e-02, -2.371e-02, 6.123e-02, -1.460e-01, 2.579e-01, 7.783e-02, 2.332e-02, -8.649e-02, -1.917e-01), r);\n\tr = MulAdd(s1_2, M4(7.924e-03, -8.634e-02, 2.742e-03, -3.775e-02, 2.520e-02, 1.735e-02, -4.828e-02, 1.161e-03, -2.588e-02, -1.229e-02, -1.090e-02, -1.852e-02, -1.063e-02, 6.307e-02, -3.989e-03, 4.773e-02), r);\n\tr = MulAdd(s1_3, M4(-2.502e-02, -1.060e-02, 3.879e-02, -7.326e-02, 1.117e-02, -7.896e-03, -4.144e-02, -5.220e-02, -9.789e-03, 1.152e-02, -6.842e-02, 1.956e-02, -2.119e-02, 1.520e-02, -8.919e-04, -1.018e-02), r);\n\tr = MulAdd(s1_4, M4(-1.167e-01, 2.910e-01, -1.212e-01, 4.229e-01, 4.912e-02, -3.232e-03, -3.651e-02, 2.089e-02, -1.031e-01, -4.355e-01, 1.091e-01, 4.724e-01, 8.100e-02, 1.825e-02, 5.617e-03, -2.689e-03), r);\n\tr = MulAdd(s1_5, M4(2.900e-02, -8.883e-02, -1.598e-02, -4.842e-02, 7.936e-03, -4.950e-02, -4.480e-02, 4.077e-02, 2.631e-02, -3.377e-02, 1.693e-02, -1.655e-01, -7.887e-02, -5.963e-02, -2.036e-02, -4.150e-02), r);\n\tr = MulAdd(s1_6, M4(3.880e-02, 4.446e-02, 5.978e-03, 7.119e-03, 3.092e-02, -9.694e-03, -6.194e-04, -3.426e-03, -9.249e-03, -5.280e-02, 3.246e-03, 4.194e-02, -2.533e-04, -2.178e-03, -4.813e-04, 1.268e-04), r);\n\tr = MulAdd(s1_7, M4(-1.088e-01, 8.445e-03, -2.497e-03, -4.470e-02, -1.973e-02, -3.454e-02, 1.519e-02, -1.348e-02, -5.420e-02, -1.657e-01, -5.679e-02, 6.335e-02, 2.859e-03, -1.316e-02, -1.629e-02, 3.222e-03), r);\n\tr = MulAdd(s1_8, M4(-3.045e-02, -1.485e-02, -4.530e-03, 1.115e-02, 5.975e-02, 6.526e-02, 7.257e-03, -2.211e-02, -1.775e-02, -3.347e-02, -1.223e-02, -7.104e-03, 1.594e-03, 1.353e-02, 1.825e-02, -1.211e-02), r);\n\tr = MulAdd(s2_0, M4(8.946e-03, -6.597e-02, -2.839e-02, -3.916e-03, 3.179e-02, -3.892e-02, -9.478e-05, -3.378e-02, -6.274e-02, 1.027e-01, 1.648e-02, -3.358e-02, -7.541e-03, 1.094e-01, -3.723e-02, 6.050e-03), r);\n\tr = MulAdd(s2_1, M4(-2.421e-02, -7.951e-02, 8.080e-02, 2.107e-02, 2.139e-02, 8.789e-02, -9.062e-02, 1.134e-01, 2.512e-01, 2.997e-02, 1.545e-01, -3.472e-01, 4.823e-02, 1.155e-01, -1.848e-03, -1.546e-01), r);\n\tr = MulAdd(s2_2, M4(-4.584e-02, -6.638e-02, -1.879e-02, 9.948e-02, -3.548e-02, 4.780e-03, 5.200e-04, -6.878e-05, 8.401e-02, 2.047e-01, -6.270e-03, -2.448e-02, 1.475e-02, -4.832e-02, -8.098e-02, -1.398e-01), r);\n\tr = MulAdd(s2_3, M4(-1.042e-01, -4.714e-02, -3.402e-02, -4.442e-02, -3.004e-02, 1.026e-01, 1.361e-02, 7.693e-02, 1.192e-01, -3.831e-02, -1.074e-02, 1.415e-02, 2.575e-02, 5.908e-02, -4.298e-02, 6.081e-03), r);\n\tr = MulAdd(s2_4, M4(2.861e-01, 9.207e-02, -1.888e-01, 1.447e-01, -1.294e-01, -8.026e-03, 1.666e-01, 3.225e-02, -4.795e-01, -1.216e-01, -4.461e-03, -6.152e-02, -1.341e-01, 6.710e-02, -3.464e-03, 2.860e-02), r);\n\tr = MulAdd(s2_5, M4(3.118e-02, 6.361e-02, 1.517e-01, -2.066e-01, 9.298e-02, -3.544e-02, 4.673e-02, -1.113e-01, -1.257e-02, 7.547e-03, 5.694e-03, 5.824e-02, 1.598e-02, 3.417e-02, 2.197e-02, -8.769e-02), r);\n\tr = MulAdd(s2_6, M4(-9.891e-02, -1.657e-02, -1.123e-02, -2.551e-02, 1.037e-01, 3.091e-02, -2.608e-02, -2.351e-02, -1.279e-02, -1.557e-02, -5.095e-03, -2.388e-03, -1.545e-02, -8.277e-03, 5.444e-02, 8.015e-03), r);\n\tr = MulAdd(s2_7, M4(1.387e-01, 6.281e-02, -1.489e-02, -1.101e-01, -4.190e-02, -5.878e-02, -1.273e-02, -9.930e-02, -1.888e-02, 2.096e-02, 7.184e-03, -2.086e-02, -3.886e-02, 2.067e-02, -1.168e-02, 3.008e-02), r);\n\tr = MulAdd(s2_8, M4(-7.592e-02, -7.535e-02, -1.099e-02, 3.415e-02, 2.166e-02, -5.147e-02, -6.420e-03, -7.174e-03, -3.075e-02, -1.896e-02, 1.354e-03, -1.838e-03, -2.213e-02, 7.056e-03, -8.424e-03, 3.090e-02), r);\n\tr = MulAdd(s3_0, M4(-9.595e-03, 1.169e-02, -2.990e-02, -2.690e-02, -2.824e-03, -6.516e-02, -4.582e-02, -1.122e-02, 6.029e-02, 4.170e-02, -3.837e-02, 3.339e-02, -1.077e-02, 7.446e-02, -2.923e-02, 6.549e-02), r);\n\tr = MulAdd(s3_1, M4(-5.111e-03, 6.225e-02, -3.003e-02, 3.308e-02, 2.977e-02, -2.156e-02, -5.577e-02, 3.275e-02, -3.608e-02, -4.971e-02, 1.715e-02, -4.390e-02, -1.254e-02, -3.575e-02, 2.269e-02, -3.128e-02), r);\n\tr = MulAdd(s3_2, M4(1.598e-02, -4.655e-02, 7.151e-02, -8.702e-02, 2.685e-03, 4.683e-02, -8.830e-03, -8.845e-03, -2.099e-02, 4.414e-02, 2.528e-02, 5.378e-02, 1.731e-02, 5.451e-02, -7.642e-02, 4.291e-02), r);\n\tr = MulAdd(s3_3, M4(2.179e-02, -9.353e-03, 5.185e-03, -4.819e-02, -4.619e-02, -9.819e-03, -2.010e-02, 5.645e-03, -6.820e-02, 5.689e-02, 1.793e-02, -6.441e-03, 8.032e-02, 3.136e-02, -5.345e-02, 5.041e-02), r);\n\tr = MulAdd(s3_4, M4(1.961e-02, -3.295e-02, -2.769e-02, 2.888e-02, -9.280e-02, 1.242e-01, 2.179e-02, 1.752e-01, -4.600e-03, -5.721e-02, 1.043e-01, 3.595e-02, -8.385e-02, -6.855e-02, -8.819e-02, -9.500e-03), r);\n\tr = MulAdd(s3_5, M4(4.813e-03, 4.495e-02, -1.845e-02, 5.395e-02, 2.067e-02, -7.696e-03, 1.179e-02, -1.813e-02, 2.336e-02, -3.331e-03, 1.134e-02, 1.571e-03, -1.120e-02, 2.340e-02, 4.389e-02, -3.137e-02), r);\n\tr = MulAdd(s3_6, M4(7.093e-03, -5.993e-03, 3.377e-02, -6.898e-03, -1.301e-02, -3.597e-03, -2.272e-02, -3.425e-02, 3.097e-02, -2.057e-02, 2.067e-04, -2.046e-03, -3.947e-02, -2.045e-02, 2.302e-02, 1.487e-02), r);\n\tr = MulAdd(s3_7, M4(7.510e-03, -2.502e-02, -1.432e-02, -3.276e-03, -8.301e-02, -2.406e-02, -1.457e-02, -2.138e-02, -9.351e-02, -4.553e-02, -6.659e-03, -1.025e-02, -6.618e-03, 2.044e-03, -9.260e-03, 2.205e-02), r);\n\tr = MulAdd(s3_8, M4(-3.799e-02, 3.744e-03, 2.620e-02, 1.641e-02, -3.945e-04, -2.924e-02, -1.826e-02, 1.369e-02, -1.016e-03, 4.311e-03, 1.674e-03, 1.285e-02, -7.228e-02, -5.898e-02, -1.358e-02, -2.097e-02), r);\n\tr = MulAdd(s4_0, M4(1.102e-02, -1.521e-02, -6.008e-03, 7.398e-04, -7.296e-02, -1.620e-02, -2.665e-02, -5.316e-02, 3.510e-02, 1.202e-02, -4.560e-02, 1.993e-02, 2.631e-02, 2.444e-02, -2.006e-02, 7.418e-02), r);\n\tr = MulAdd(s4_1, M4(-1.188e-02, -2.811e-02, -2.370e-02, -1.292e-04, -6.479e-03, 8.834e-02, 1.566e-01, 5.438e-02, -3.613e-03, 1.996e-02, -4.270e-02, -1.585e-03, -2.553e-02, -4.177e-02, -1.004e-01, 6.837e-02), r);\n\tr = MulAdd(s4_2, M4(-7.127e-03, -5.692e-03, 1.363e-02, -1.185e-02, 2.465e-02, -7.546e-02, -3.101e-02, -4.175e-02, 5.013e-03, 1.110e-01, 2.746e-03, 1.005e-01, -6.006e-02, -1.028e-01, 7.587e-02, -4.006e-02), r);\n\tr = MulAdd(s4_3, M4(-1.252e-02, 7.058e-03, -2.447e-02, -1.218e-02, 8.639e-02, 4.769e-02, -4.430e-02, 1.939e-02, -1.963e-02, -2.812e-02, 2.546e-02, 2.933e-02, 6.862e-02, -3.934e-03, -1.195e-02, 7.803e-02), r);\n\tr = MulAdd(s4_4, M4(3.983e-02, 5.575e-02, 5.597e-02, -1.163e-02, 2.775e-02, 8.033e-02, -5.456e-02, 3.303e-02, 1.158e-01, -1.946e-02, 1.562e-01, -4.842e-02, 3.132e-03, 2.551e-01, -2.822e-01, -2.206e-01), r);\n\tr = MulAdd(s4_5, M4(3.133e-02, -1.668e-03, -1.536e-02, -6.250e-03, -2.136e-02, -6.014e-02, 2.088e-02, -8.109e-02, -4.080e-02, 3.456e-02, -4.960e-03, 9.921e-02, -2.083e-03, 8.930e-02, -1.308e-02, -2.485e-02), r);\n\tr = MulAdd(s4_6, M4(1.548e-02, -5.147e-03, 2.563e-03, 6.285e-03, -3.622e-02, 1.740e-03, -7.185e-03, 6.668e-04, 7.383e-02, -4.558e-02, 4.190e-02, 1.590e-03, -1.153e-01, 4.337e-02, 5.815e-03, 6.703e-03), r);\n\tr = MulAdd(s4_7, M4(-4.941e-02, -3.662e-02, 8.337e-03, 1.284e-02, 1.697e-03, 2.466e-02, -2.523e-02, -6.149e-03, 2.508e-02, -4.108e-02, 1.502e-02, 1.478e-02, -3.471e-02, 1.253e-01, 3.462e-02, 7.212e-02), r);\n\tr = MulAdd(s4_8, M4(-1.663e-02, 1.343e-02, 1.031e-02, 9.448e-03, -5.931e-02, -3.506e-02, -1.118e-04, 1.849e-02, -2.685e-02, 5.631e-03, 6.119e-03, 9.226e-03, -6.665e-04, -5.032e-02, -2.241e-02, -8.407e-03), r);\n\tr = MulAdd(s5_0, M4(1.395e-02, 7.699e-02, -2.657e-02, -6.239e-02, -3.012e-02, 1.488e-02, -3.474e-02, -6.028e-02, 2.408e-02, 1.424e-01, -9.118e-02, 3.961e-02, -3.046e-03, -3.075e-03, -7.734e-03, 7.127e-03), r);\n\tr = MulAdd(s5_1, M4(2.541e-02, -8.866e-02, -3.268e-02, -3.691e-02, -3.625e-02, -1.827e-01, 2.963e-01, -1.750e-01, 2.180e-02, -3.934e-02, 4.675e-02, 2.028e-01, 1.810e-02, 4.776e-02, -3.834e-02, 3.822e-02), r);\n\tr = MulAdd(s5_2, M4(4.619e-02, -2.099e-02, 3.328e-02, 2.555e-02, -4.572e-02, -1.028e-01, 8.279e-02, -1.159e-01, 1.228e-02, 1.202e-02, 6.422e-03, -4.052e-03, 2.107e-02, -3.524e-02, 3.312e-02, 1.123e-02), r);\n\tr = MulAdd(s5_3, M4(-1.942e-02, -4.602e-02, 7.330e-02, 4.523e-03, -1.554e-03, 6.221e-02, 1.401e-02, -1.852e-03, -6.867e-02, -1.528e-01, -7.001e-02, 3.589e-02, -1.640e-02, 5.321e-02, 4.126e-02, 8.950e-02), r);\n\tr = MulAdd(s5_4, M4(-6.138e-02, -7.446e-02, 2.528e-01, -1.488e-01, 4.429e-02, 1.152e-01, -1.438e-03, 1.705e-01, 9.691e-02, 3.186e-02, 1.741e-01, -1.788e-01, -8.488e-02, -8.629e-02, 2.150e-02, -5.496e-02), r);\n\tr = MulAdd(s5_5, M4(-1.204e-01, -7.041e-02, 1.513e-01, -1.264e-01, 1.680e-02, -6.029e-02, 2.497e-02, 3.013e-03, 4.852e-02, 1.025e-01, -3.057e-02, 1.842e-01, 4.622e-03, -1.222e-02, -2.721e-02, 1.157e-02), r);\n\tr = MulAdd(s5_6, M4(-1.136e-02, -6.073e-02, 1.539e-02, -4.126e-02, -3.847e-02, 4.261e-02, 1.198e-02, 5.306e-03, 6.251e-02, -5.855e-02, 1.477e-02, -2.672e-02, -2.354e-02, -6.440e-03, 1.940e-02, 1.360e-02), r);\n\tr = MulAdd(s5_7, M4(7.322e-02, -3.496e-02, -3.640e-02, 3.208e-02, -4.454e-02, 2.890e-02, 5.658e-03, 2.411e-02, 2.417e-02, -2.461e-02, 9.286e-03, -2.945e-02, 2.810e-02, 6.893e-02, -3.579e-03, 1.289e-02), r);\n\tr = MulAdd(s5_8, M4(1.222e-02, 6.441e-02, 3.220e-03, -1.404e-01, -3.137e-02, -4.174e-02, -1.381e-03, 3.463e-02, -6.317e-02, -7.367e-03, 2.803e-03, 6.163e-02, -6.373e-02, 6.113e-03, 1.058e-03, -2.774e-02), r);\n\tr = MulAdd(s6_0, M4(3.013e-02, 5.727e-02, 9.003e-03, 1.051e-02, -1.073e-02, -7.736e-02, 4.207e-02, -2.627e-03, 1.345e-02, 3.167e-02, 8.640e-03, -5.891e-03, -1.514e-02, 7.545e-02, -1.225e-02, 6.570e-02), r);\n\tr = MulAdd(s6_1, M4(-2.280e-02, -1.438e-01, -3.557e-02, 4.780e-03, 6.770e-03, -2.738e-02, 1.773e-02, -2.045e-01, -2.987e-02, 1.402e-01, -1.868e-02, 5.535e-02, -2.222e-02, 9.094e-02, 5.169e-02, 1.007e-01), r);\n\tr = MulAdd(s6_2, M4(2.146e-02, -1.793e-01, 7.339e-03, -2.134e-01, -1.581e-02, 1.097e-01, -6.332e-03, 1.482e-01, -7.301e-03, -2.931e-02, -7.941e-03, 2.457e-02, -2.584e-03, 2.997e-02, -1.088e-02, 2.071e-02), r);\n\tr = MulAdd(s6_3, M4(-3.318e-03, 4.875e-02, 2.340e-02, 3.773e-02, 2.270e-02, 1.642e-03, -4.309e-02, 1.612e-02, -1.588e-02, 2.905e-03, -2.409e-02, 1.876e-02, 9.508e-02, 2.535e-03, -1.075e-01, 2.218e-02), r);\n\tr = MulAdd(s6_4, M4(-8.570e-02, 1.575e-01, 1.420e-02, 7.448e-02, -9.357e-03, -4.404e-02, -3.117e-02, 4.668e-02, 4.308e-02, 1.477e-01, -7.957e-02, 2.017e-01, 1.419e-01, 1.729e-02, -7.883e-02, 2.105e-02), r);\n\tr = MulAdd(s6_5, M4(7.094e-02, -9.315e-02, -5.066e-02, -8.118e-02, -8.276e-02, 1.049e-03, -3.332e-02, 5.612e-02, -4.293e-02, -1.420e-01, -1.876e-02, 1.258e-03, 2.879e-02, 1.642e-02, -4.920e-02, 7.644e-02), r);\n\tr = MulAdd(s6_6, M4(-2.574e-02, 3.665e-02, -4.206e-03, 1.549e-04, 1.494e-02, 8.348e-03, -1.097e-02, 1.059e-03, -2.022e-02, 1.593e-02, 5.309e-03, 1.297e-02, -4.626e-03, -2.908e-02, 3.458e-02, 2.192e-02), r);\n\tr = MulAdd(s6_7, M4(-5.627e-02, 2.994e-02, 6.623e-03, 4.265e-03, -3.984e-03, 7.208e-02, 6.464e-03, -4.584e-02, 1.076e-01, 1.804e-02, 1.932e-03, -6.164e-04, -6.080e-03, -2.187e-02, 2.705e-03, 1.286e-02), r);\n\tr = MulAdd(s6_8, M4(-1.513e-02, -2.513e-02, 4.140e-03, 2.426e-02, 5.146e-02, 1.706e-02, 7.609e-03, 5.859e-03, 8.542e-03, 1.324e-02, -1.776e-02, -5.070e-02, -2.553e-02, 8.175e-03, -1.150e-03, 9.181e-03), r);\n\tr = MulAdd(s7_0, M4(-3.418e-02, -6.199e-02, 2.500e-02, 1.762e-02, -4.787e-04, -1.350e-02, 2.896e-02, -2.513e-02, 1.715e-02, 9.849e-02, 9.936e-03, -1.941e-02, 1.119e-02, 5.483e-02, 1.483e-02, -9.959e-03), r);\n\tr = MulAdd(s7_1, M4(-2.115e-02, -5.361e-03, -6.951e-02, -2.643e-02, 7.225e-02, 1.490e-01, -2.051e-02, -2.152e-01, -1.302e-02, 1.838e-01, -5.824e-03, 9.439e-02, -4.313e-02, -5.206e-03, -5.797e-03, -1.539e-02), r);\n\tr = MulAdd(s7_2, M4(3.885e-02, 1.548e-02, -3.074e-02, -8.288e-02, 8.367e-02, -1.723e-02, 6.387e-02, -5.094e-02, -2.516e-02, -9.869e-03, -3.897e-02, 1.550e-02, 3.287e-03, 4.700e-02, 1.602e-02, 1.415e-01), r);\n\tr = MulAdd(s7_3, M4(7.152e-02, 1.291e-02, -4.047e-02, -5.024e-03, 8.264e-03, -2.978e-02, 1.805e-02, 2.057e-02, 1.471e-02, 4.593e-02, -4.297e-03, 8.084e-03, -2.278e-02, -2.440e-02, -8.421e-02, -2.865e-02), r);\n\tr = MulAdd(s7_4, M4(-1.690e-02, -6.615e-02, -4.751e-02, -5.177e-02, 7.508e-02, 1.110e-01, -5.521e-02, 1.004e-01, 3.390e-02, 4.147e-01, -4.732e-02, 2.533e-01, 2.246e-03, -1.897e-01, -4.463e-02, -1.165e-01), r);\n\tr = MulAdd(s7_5, M4(-1.400e-02, 2.606e-02, -1.921e-02, 8.409e-02, -1.727e-01, -1.105e-01, -4.348e-02, 1.222e-01, -5.675e-03, 4.957e-02, -4.451e-03, 3.969e-02, -3.335e-02, -1.468e-01, -2.498e-02, 4.853e-02), r);\n\tr = MulAdd(s7_6, M4(-2.972e-02, 1.554e-02, 8.900e-03, -1.799e-02, 1.196e-02, 3.115e-02, -1.041e-02, -1.689e-02, 6.761e-03, 2.227e-02, 8.203e-03, 8.347e-03, 4.691e-02, -5.568e-02, 1.686e-02, 2.405e-02), r);\n\tr = MulAdd(s7_7, M4(9.098e-03, 4.191e-02, 1.316e-02, -1.388e-02, 5.256e-02, 1.206e-01, 2.180e-02, -7.718e-03, -1.895e-02, 5.764e-02, 1.609e-02, -5.554e-03, 3.754e-02, -7.394e-02, -7.340e-03, -6.948e-03), r);\n\tr = MulAdd(s7_8, M4(2.982e-02, -4.833e-03, 7.510e-03, -3.615e-02, 1.915e-02, 4.432e-02, 8.503e-03, -5.412e-03, -6.377e-03, 2.350e-02, -3.145e-03, -4.699e-02, -2.206e-02, -1.076e-02, -1.340e-02, -2.481e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.695e-03, -2.757e-03, 3.166e-03, 9.638e-04 };\n\tr = MulAdd(s0_0, M4(-1.403e-02, -1.690e-02, 1.299e-02, 3.203e-03, 2.440e-02, -1.197e-02, -1.009e-02, -6.249e-02, 1.807e-02, 4.913e-02, -4.275e-03, -8.835e-03, 6.496e-02, 8.654e-02, 1.910e-03, 1.207e-01), r);\n\tr = MulAdd(s0_1, M4(5.920e-03, -1.504e-02, 1.881e-03, -9.575e-04, -5.896e-04, 1.827e-01, 9.696e-03, 7.658e-02, -1.416e-03, 7.247e-02, -6.856e-02, -5.048e-02, 5.380e-02, -1.966e-01, 4.374e-02, 1.527e-03), r);\n\tr = MulAdd(s0_2, M4(1.538e-03, -2.058e-02, 2.313e-02, -7.205e-03, -2.522e-02, -6.646e-02, -6.501e-03, -3.213e-03, 1.374e-02, -3.847e-02, 2.466e-02, -2.767e-04, -1.093e-02, 1.194e-04, -5.333e-03, -2.761e-03), r);\n\tr = MulAdd(s0_3, M4(1.686e-02, 5.654e-03, -1.679e-02, 3.514e-02, 6.360e-03, 3.797e-02, 1.691e-02, 5.090e-02, -3.749e-02, -1.215e-02, -2.332e-02, -4.429e-02, 3.758e-02, -1.332e-01, 4.014e-03, 1.573e-02), r);\n\tr = MulAdd(s0_4, M4(-6.120e-02, -1.186e-02, 1.148e-02, -2.868e-03, -7.267e-02, 3.952e-01, -3.060e-01, 1.900e-02, -1.422e-02, -6.225e-02, 1.324e-01, 1.330e-01, -2.278e-01, -7.845e-02, 1.004e-01, -3.004e-03), r);\n\tr = MulAdd(s0_5, M4(1.674e-02, 7.387e-03, -2.501e-03, 5.247e-03, -1.203e-01, 5.827e-02, -6.139e-02, 4.977e-03, -1.665e-01, -4.193e-02, 3.967e-02, 4.625e-02, -3.007e-02, 2.687e-02, -1.890e-01, 8.096e-02), r);\n\tr = MulAdd(s0_6, M4(1.294e-02, 1.304e-02, 1.941e-02, 5.546e-03, -1.190e-02, -3.708e-02, 7.536e-03, -1.192e-02, -2.948e-03, 1.828e-02, 2.791e-02, -4.490e-02, -8.575e-03, 1.167e-03, 7.475e-03, 1.347e-02), r);\n\tr = MulAdd(s0_7, M4(-3.207e-02, 3.181e-02, -6.068e-02, 2.886e-02, -2.113e-02, 1.308e-02, 2.800e-02, 3.551e-02, -1.551e-02, -3.550e-03, 1.875e-02, -3.930e-02, 1.351e-02, 2.954e-02, -9.125e-03, 4.094e-02), r);\n\tr = MulAdd(s0_8, M4(-1.797e-02, -6.222e-03, 1.149e-02, -1.110e-02, 6.957e-03, -1.365e-02, 3.144e-03, 1.116e-02, -2.026e-02, 3.616e-02, -4.472e-02, -5.475e-03, 5.175e-03, -4.265e-02, -2.606e-02, -1.281e-03), r);\n\tr = MulAdd(s1_0, M4(-2.377e-02, -1.403e-02, 3.900e-04, -8.035e-03, 6.275e-03, -3.050e-03, -1.774e-03, 3.272e-02, 1.894e-02, -3.193e-02, -1.214e-02, -3.307e-02, 1.437e-02, 4.558e-02, -5.583e-03, 3.869e-02), r);\n\tr = MulAdd(s1_1, M4(1.842e-02, -8.569e-03, 1.108e-02, -5.062e-03, -5.962e-02, -1.085e-01, 6.689e-02, -5.252e-02, 4.097e-02, 2.783e-02, -2.389e-02, 1.015e-01, -2.116e-02, 7.249e-02, -4.569e-02, -8.347e-02), r);\n\tr = MulAdd(s1_2, M4(-8.921e-03, 6.302e-03, -1.726e-02, -2.883e-02, 2.381e-02, 3.157e-02, 5.104e-03, 4.095e-02, -1.652e-02, -5.781e-03, -1.703e-02, -4.506e-02, 3.096e-02, 3.062e-02, -2.861e-02, 4.570e-02), r);\n\tr = MulAdd(s1_3, M4(3.239e-02, -2.966e-02, -4.143e-02, -9.498e-02, 4.698e-02, 5.041e-02, 4.006e-02, -1.036e-02, -2.415e-02, 5.212e-02, 5.013e-03, 6.275e-02, -6.031e-03, 2.356e-02, -8.598e-03, 4.139e-02), r);\n\tr = MulAdd(s1_4, M4(5.942e-02, -1.007e-01, 2.275e-02, -1.153e-01, -7.684e-02, 1.358e-01, -1.941e-01, 7.818e-02, -1.434e-01, -2.566e-02, 7.518e-02, 3.408e-01, -5.866e-02, 5.014e-02, 2.169e-02, 5.445e-02), r);\n\tr = MulAdd(s1_5, M4(3.588e-02, 2.354e-02, 1.821e-03, -2.777e-02, -1.232e-02, 3.485e-03, 2.677e-02, -4.053e-02, 9.010e-02, 2.494e-02, -4.014e-02, 2.349e-02, 3.918e-02, -6.701e-03, -4.987e-02, -2.935e-02), r);\n\tr = MulAdd(s1_6, M4(-2.898e-03, 1.400e-02, 2.918e-02, -5.003e-02, -1.320e-02, -4.515e-03, 3.208e-03, -2.984e-02, 4.325e-03, 1.145e-02, 1.401e-02, -4.900e-02, 1.295e-02, 1.852e-02, -1.632e-04, 5.149e-03), r);\n\tr = MulAdd(s1_7, M4(2.847e-02, 8.097e-05, -6.482e-02, -3.287e-02, 2.657e-02, 7.181e-02, -1.687e-02, 2.339e-02, -5.849e-02, 5.947e-02, 1.580e-02, -2.197e-02, -1.386e-02, 7.761e-03, 1.187e-02, -1.775e-03), r);\n\tr = MulAdd(s1_8, M4(-2.004e-02, 1.634e-02, -2.024e-02, -2.733e-04, -3.457e-02, -2.186e-02, -8.031e-03, -8.043e-04, 3.190e-02, -4.545e-03, -4.383e-03, -4.025e-02, -1.792e-02, -1.601e-02, -1.268e-02, 1.806e-02), r);\n\tr = MulAdd(s2_0, M4(1.513e-02, 2.842e-02, -3.138e-02, 2.632e-02, -4.687e-02, 1.712e-04, -8.254e-03, -1.088e-01, 4.773e-02, 2.275e-01, 2.114e-02, -5.353e-03, -6.060e-03, 4.668e-02, -1.113e-02, -5.220e-02), r);\n\tr = MulAdd(s2_1, M4(-4.822e-02, 5.140e-02, -6.251e-02, -2.174e-02, 6.402e-02, -1.157e-03, 4.772e-02, 3.744e-02, -8.134e-02, 2.443e-01, -1.516e-01, -2.051e-01, 3.214e-02, -1.325e-01, -1.257e-02, -1.309e-01), r);\n\tr = MulAdd(s2_2, M4(2.891e-02, -1.136e-02, 1.066e-02, 1.125e-02, 5.477e-02, 1.702e-02, -4.648e-03, -3.087e-02, -1.364e-01, 4.794e-02, 9.983e-04, 6.055e-02, 6.746e-02, 4.293e-02, -7.007e-02, -7.499e-02), r);\n\tr = MulAdd(s2_3, M4(1.072e-01, -6.466e-02, -1.973e-02, 1.030e-01, -1.527e-02, 4.362e-02, -4.451e-02, 1.481e-02, -1.033e-02, -5.968e-03, -8.813e-03, -3.673e-02, 8.713e-03, 4.114e-02, 1.480e-02, -2.310e-02), r);\n\tr = MulAdd(s2_4, M4(-2.133e-01, -1.865e-02, 1.325e-01, -6.998e-03, 1.527e-02, -1.194e-01, 1.117e-02, 2.825e-02, -1.395e-01, -5.398e-02, -8.579e-02, 5.018e-02, 2.483e-01, -3.317e-04, -4.582e-02, -1.580e-01), r);\n\tr = MulAdd(s2_5, M4(-2.050e-01, 3.415e-02, -2.992e-01, -4.628e-02, -2.045e-02, -4.760e-02, 2.570e-02, -1.789e-02, 3.450e-02, 4.739e-02, -5.818e-02, -3.416e-03, 6.491e-02, -1.692e-02, 5.092e-02, -1.269e-03), r);\n\tr = MulAdd(s2_6, M4(5.677e-03, 2.475e-02, -2.882e-02, 4.985e-02, 4.226e-02, 2.465e-02, 1.665e-02, 1.778e-02, -1.488e-02, 8.427e-03, 7.982e-03, 4.308e-03, -2.665e-03, -2.505e-03, -2.439e-04, -8.472e-02), r);\n\tr = MulAdd(s2_7, M4(1.160e-01, -1.843e-01, -1.577e-01, 1.610e-01, -3.755e-02, -5.904e-02, -3.916e-02, -7.304e-02, -6.454e-03, -4.502e-03, -1.938e-02, -1.544e-02, 9.156e-02, 5.040e-02, 2.782e-02, -9.789e-02), r);\n\tr = MulAdd(s2_8, M4(-2.775e-02, 4.488e-02, -1.165e-01, -5.318e-02, 9.845e-03, -1.098e-02, 1.870e-02, -5.903e-03, 1.401e-02, -1.890e-03, -4.127e-03, -3.702e-02, 2.593e-02, 7.027e-04, 7.886e-03, -3.557e-02), r);\n\tr = MulAdd(s3_0, M4(1.291e-02, 3.182e-02, -1.102e-02, -2.050e-02, 4.529e-02, 4.164e-02, -8.264e-03, 1.008e-02, -4.363e-03, 1.615e-02, -2.964e-02, -5.398e-03, -4.292e-02, -4.069e-02, 1.873e-02, -1.873e-02), r);\n\tr = MulAdd(s3_1, M4(2.319e-02, 6.311e-03, -2.371e-02, 2.499e-02, -8.716e-02, 8.744e-03, 6.422e-03, -4.807e-02, 5.915e-02, -2.334e-04, 3.317e-02, 5.564e-04, 2.568e-02, 7.700e-03, -4.957e-02, -3.943e-02), r);\n\tr = MulAdd(s3_2, M4(-6.014e-02, 2.336e-02, -3.495e-02, -4.863e-02, 1.457e-02, 4.577e-02, -2.609e-02, 4.501e-03, -3.028e-03, -2.968e-02, 1.283e-02, 1.761e-02, 3.232e-02, -2.981e-02, 3.126e-02, 3.211e-02), r);\n\tr = MulAdd(s3_3, M4(5.939e-02, 3.790e-02, -2.935e-03, 1.023e-02, 3.549e-02, -3.577e-02, -3.997e-02, 7.911e-02, -2.807e-02, -2.543e-02, -1.237e-02, -1.489e-03, -7.716e-02, 5.463e-02, -1.140e-02, -1.054e-01), r);\n\tr = MulAdd(s3_4, M4(1.049e-02, -8.659e-02, 1.828e-02, 3.782e-02, -1.330e-01, -1.978e-01, 1.279e-01, -7.684e-02, 1.022e-02, -5.645e-02, 3.045e-02, -1.374e-02, 5.891e-02, 5.058e-05, 5.187e-02, 2.808e-02), r);\n\tr = MulAdd(s3_5, M4(-8.350e-02, -8.552e-02, 1.150e-01, 6.334e-02, 5.096e-03, -3.212e-02, 7.190e-04, 3.291e-02, -1.503e-02, 1.068e-02, 1.800e-02, -2.819e-02, -6.397e-03, 4.068e-02, -7.728e-02, 9.243e-02), r);\n\tr = MulAdd(s3_6, M4(2.811e-02, -3.419e-02, 9.763e-03, 3.038e-02, 4.606e-02, 6.689e-02, -7.211e-03, -3.238e-03, 7.453e-03, -4.438e-03, 4.286e-03, -1.259e-02, 2.434e-02, 1.957e-02, 1.739e-02, -3.466e-02), r);\n\tr = MulAdd(s3_7, M4(-2.912e-02, 4.566e-02, 2.812e-02, 6.141e-02, 2.646e-02, 1.708e-02, -9.021e-02, -6.151e-02, 1.318e-02, -2.526e-02, -6.394e-03, -3.100e-02, -3.370e-02, 2.925e-02, -1.284e-02, -2.997e-02), r);\n\tr = MulAdd(s3_8, M4(-1.161e-02, -3.455e-02, -2.899e-02, 8.177e-04, -1.710e-02, 1.641e-02, 1.267e-02, 1.571e-03, 9.097e-04, -1.243e-02, -1.539e-02, 8.939e-03, 3.341e-02, 1.295e-02, -2.326e-03, -5.243e-02), r);\n\tr = MulAdd(s4_0, M4(-4.412e-03, 1.828e-02, -1.095e-02, -2.410e-02, 2.840e-02, 3.710e-02, -3.585e-02, 4.476e-02, 2.330e-03, 1.955e-03, 8.971e-03, -1.877e-02, 9.953e-04, -1.743e-02, 3.433e-03, -2.462e-02), r);\n\tr = MulAdd(s4_1, M4(-1.554e-02, -2.013e-02, 2.762e-04, 3.799e-02, -5.711e-02, -2.065e-01, 1.722e-02, 8.711e-04, 2.270e-02, 1.405e-02, -4.327e-02, -1.802e-02, 1.177e-02, 3.746e-02, -4.345e-02, 1.503e-01), r);\n\tr = MulAdd(s4_2, M4(-1.062e-02, -3.258e-02, 1.399e-02, -8.539e-03, -1.272e-02, -5.984e-03, 4.600e-02, 7.976e-02, -9.065e-03, -9.190e-03, -7.083e-03, 3.493e-02, 1.741e-02, -4.484e-02, 2.416e-02, -5.574e-02), r);\n\tr = MulAdd(s4_3, M4(1.711e-02, -1.917e-02, 1.507e-02, 1.370e-02, -3.999e-02, -1.430e-02, -2.882e-02, -4.323e-02, 2.306e-02, 2.904e-02, 2.624e-02, 1.199e-01, 1.480e-02, -7.574e-02, -4.492e-02, -4.352e-02), r);\n\tr = MulAdd(s4_4, M4(-3.018e-02, -1.425e-02, -1.949e-02, 2.164e-02, 1.122e-01, -1.606e-02, 7.957e-02, 4.065e-02, -1.238e-01, -6.310e-02, 8.791e-02, 3.338e-02, -1.513e-01, 2.885e-01, 1.534e-01, 1.775e-02), r);\n\tr = MulAdd(s4_5, M4(-4.428e-02, -1.291e-02, 5.516e-03, 3.881e-02, -2.859e-02, 3.528e-02, -6.541e-02, -5.225e-03, 5.673e-02, 2.624e-02, 2.976e-02, 5.959e-03, -1.149e-02, 1.513e-01, -2.427e-01, 1.607e-01), r);\n\tr = MulAdd(s4_6, M4(-9.989e-03, 5.560e-03, 3.646e-03, 2.434e-02, 9.529e-03, 4.031e-02, -2.572e-02, -3.478e-02, -3.300e-02, -1.053e-01, 4.016e-02, 5.015e-02, -1.599e-02, 2.333e-02, -4.798e-02, 5.170e-02), r);\n\tr = MulAdd(s4_7, M4(-5.325e-02, 1.108e-02, 1.797e-02, -6.959e-03, 1.219e-02, 2.704e-02, 1.240e-02, 3.468e-02, -6.517e-02, -3.558e-02, 7.436e-02, -1.016e-02, -1.981e-02, -7.618e-02, -8.978e-02, -2.096e-02), r);\n\tr = MulAdd(s4_8, M4(-2.308e-03, -3.165e-02, -8.688e-03, -9.730e-03, -1.522e-02, 2.069e-02, -1.754e-02, -7.927e-03, 2.645e-02, -1.085e-02, -8.390e-03, -2.116e-02, -3.234e-02, 1.489e-02, 3.660e-03, 2.375e-03), r);\n\tr = MulAdd(s5_0, M4(-3.510e-02, -6.012e-04, -3.174e-02, -1.242e-02, 1.226e-02, 1.917e-02, -3.964e-02, -2.023e-02, -2.311e-02, 6.712e-03, 1.517e-02, 9.062e-02, 8.459e-03, 1.153e-02, -8.272e-03, -5.246e-03), r);\n\tr = MulAdd(s5_1, M4(8.618e-02, -8.955e-02, 5.913e-02, -1.343e-01, 1.315e-01, 4.682e-02, -2.247e-02, -3.938e-02, -1.179e-01, -5.145e-02, 5.443e-02, 3.886e-02, -5.119e-02, -3.541e-02, -3.904e-03, 1.687e-02), r);\n\tr = MulAdd(s5_2, M4(2.460e-02, -8.600e-02, 4.964e-02, 1.386e-01, 2.402e-02, -2.157e-02, 2.303e-02, -3.927e-02, -5.104e-02, -7.479e-03, -4.165e-02, -2.199e-02, -2.173e-03, -6.519e-02, 7.790e-02, 4.227e-02), r);\n\tr = MulAdd(s5_3, M4(-3.211e-02, 5.888e-02, 1.003e-02, -4.182e-03, -2.656e-02, -9.108e-02, -2.803e-02, -3.697e-02, 3.665e-02, -4.259e-03, 2.178e-02, 1.014e-01, -4.813e-02, -9.389e-03, -3.660e-02, 1.633e-02), r);\n\tr = MulAdd(s5_4, M4(-5.209e-02, 3.928e-01, -6.218e-02, 4.783e-02, 9.125e-02, -1.971e-01, 1.959e-01, -2.692e-02, -3.901e-01, -3.436e-01, 3.787e-01, -1.215e-01, 6.860e-02, -6.028e-03, 6.013e-02, -5.339e-02), r);\n\tr = MulAdd(s5_5, M4(2.825e-01, 3.197e-01, -4.535e-01, 2.451e-01, -2.704e-02, 2.347e-02, -3.970e-02, 3.455e-02, -4.792e-02, -6.546e-02, 8.310e-02, 5.270e-02, 5.672e-02, -5.222e-03, -1.584e-02, 2.659e-02), r);\n\tr = MulAdd(s5_6, M4(-2.092e-03, 3.342e-02, -5.297e-02, -4.897e-03, 1.136e-02, 1.686e-02, 1.156e-02, 1.235e-02, -5.949e-02, -7.796e-02, 3.761e-02, -7.960e-02, -1.237e-02, -6.790e-02, 3.845e-02, 9.075e-03), r);\n\tr = MulAdd(s5_7, M4(-9.697e-02, -1.451e-02, -7.202e-05, 1.720e-02, 3.105e-02, -4.131e-02, -1.384e-02, -1.688e-02, -4.193e-02, 1.140e-02, -4.853e-02, 4.692e-02, -6.361e-02, 1.024e-01, -1.936e-02, -1.864e-02), r);\n\tr = MulAdd(s5_8, M4(2.417e-01, -5.670e-02, -2.683e-02, 1.479e-01, 1.790e-02, 1.712e-02, -4.796e-03, 5.586e-03, 1.011e-02, 7.180e-03, 2.503e-02, 7.192e-03, 1.102e-01, 5.415e-02, -9.293e-02, -7.912e-02), r);\n\tr = MulAdd(s6_0, M4(-1.310e-02, -1.998e-02, 2.870e-02, -8.365e-03, 1.781e-02, 8.472e-02, 1.358e-02, 1.241e-02, -2.426e-02, -4.126e-02, -1.173e-02, -1.491e-02, -4.943e-02, -3.414e-03, -3.452e-02, -2.191e-02), r);\n\tr = MulAdd(s6_1, M4(4.033e-02, -5.505e-03, 2.442e-02, 3.121e-02, -5.878e-02, 4.726e-02, -1.153e-01, 2.513e-02, 6.441e-02, -9.327e-04, 3.285e-02, 3.715e-02, -3.968e-02, -1.051e-02, -2.114e-02, 2.643e-02), r);\n\tr = MulAdd(s6_2, M4(7.410e-03, 5.971e-02, -1.034e-02, -7.923e-02, -1.158e-02, -5.324e-02, 2.883e-02, 1.165e-01, -4.792e-02, -2.314e-02, -3.930e-03, -4.429e-02, -1.138e-02, -5.562e-03, -2.705e-02, 6.022e-03), r);\n\tr = MulAdd(s6_3, M4(3.052e-02, 4.170e-02, -2.362e-02, 8.131e-02, 1.667e-02, -6.426e-02, -1.831e-02, -6.213e-02, -3.947e-02, 1.147e-01, -2.621e-02, -7.330e-03, -2.931e-02, -7.846e-03, -7.073e-03, -7.834e-02), r);\n\tr = MulAdd(s6_4, M4(-8.755e-02, 2.748e-02, -1.013e-02, 1.164e-01, 3.070e-02, -2.129e-02, 3.427e-02, 2.312e-02, 2.883e-01, 1.168e-01, -9.151e-02, 5.790e-03, -1.971e-01, -7.913e-02, 1.532e-01, 9.796e-02), r);\n\tr = MulAdd(s6_5, M4(4.299e-02, -3.184e-02, 7.484e-03, -9.968e-02, 3.603e-03, 9.438e-02, -1.002e-01, 2.020e-02, 1.727e-02, 2.998e-02, 1.908e-03, -3.632e-02, -1.007e-01, -3.760e-02, -1.044e-02, 5.097e-02), r);\n\tr = MulAdd(s6_6, M4(-4.278e-03, -3.464e-03, -1.115e-02, 3.740e-02, -6.866e-03, 1.981e-02, -4.597e-03, -7.353e-03, 7.228e-03, -2.904e-02, -1.460e-02, -6.438e-02, -2.136e-02, -2.832e-02, 6.746e-03, -7.435e-02), r);\n\tr = MulAdd(s6_7, M4(-7.721e-03, -8.583e-03, -2.239e-02, -4.383e-02, 5.328e-02, -2.903e-02, -3.415e-02, 2.400e-02, 5.608e-02, -6.022e-03, 5.820e-02, -5.756e-02, 9.681e-04, 3.779e-02, 4.654e-02, 2.699e-02), r);\n\tr = MulAdd(s6_8, M4(6.099e-02, 2.623e-02, -2.629e-02, -2.693e-02, -8.624e-03, 7.311e-03, 1.022e-02, 2.943e-02, 3.370e-02, 2.451e-02, -2.233e-02, -1.465e-02, -1.173e-02, 1.131e-02, 5.762e-06, -7.292e-03), r);\n\tr = MulAdd(s7_0, M4(8.332e-02, 7.678e-02, 7.580e-03, 1.804e-03, -7.609e-03, 3.395e-02, 4.078e-02, 2.980e-02, -1.210e-02, -3.697e-02, -3.218e-03, 5.016e-03, -6.317e-02, 8.456e-03, -4.200e-04, -7.168e-02), r);\n\tr = MulAdd(s7_1, M4(-3.934e-02, 1.361e-02, -7.507e-02, 6.378e-02, -1.096e-01, 1.727e-02, -1.115e-01, -7.854e-03, 6.183e-03, 5.731e-03, -6.347e-03, 1.489e-02, 6.840e-02, -4.007e-03, -9.997e-03, 3.514e-02), r);\n\tr = MulAdd(s7_2, M4(4.943e-02, 3.648e-03, 7.915e-03, -1.559e-02, -2.015e-01, -4.453e-02, -2.992e-03, 1.325e-02, 4.230e-02, -3.058e-02, -8.181e-04, 5.134e-04, -4.491e-02, -3.514e-02, -3.413e-03, 1.651e-02), r);\n\tr = MulAdd(s7_3, M4(1.072e-02, 5.109e-02, -4.012e-02, 5.480e-04, 1.733e-02, -3.440e-02, -1.915e-02, -1.607e-02, -2.231e-02, 1.018e-02, 1.327e-02, 6.020e-02, 4.541e-02, 6.761e-02, 3.457e-02, -3.275e-02), r);\n\tr = MulAdd(s7_4, M4(-1.640e-01, 1.440e-02, 5.193e-02, 1.382e-01, 6.455e-02, 1.126e-01, -9.477e-02, 6.182e-02, 2.558e-02, 3.332e-01, -7.944e-02, -1.218e-01, 2.038e-01, -3.560e-02, -1.784e-01, 4.907e-02), r);\n\tr = MulAdd(s7_5, M4(-1.175e-03, 6.281e-02, -4.109e-02, 1.431e-02, -1.255e-01, 8.339e-02, -1.665e-02, -1.578e-02, -6.914e-02, -2.823e-02, -5.028e-02, 3.387e-02, -7.128e-02, 3.301e-02, 3.751e-02, 1.426e-02), r);\n\tr = MulAdd(s7_6, M4(2.105e-02, 1.378e-02, -5.892e-03, 4.059e-02, -1.739e-02, -1.169e-02, 1.199e-02, 2.551e-02, -9.290e-03, -2.204e-02, -1.168e-02, -2.180e-02, -2.759e-02, -4.014e-02, 1.618e-02, -8.665e-02), r);\n\tr = MulAdd(s7_7, M4(-5.288e-02, 4.240e-02, -6.100e-02, 3.484e-02, 6.646e-02, -3.599e-02, -1.280e-02, -5.046e-02, 1.113e-02, -1.903e-02, 4.971e-02, -6.456e-03, 1.147e-01, 2.411e-02, 5.515e-02, -1.526e-02), r);\n\tr = MulAdd(s7_8, M4(6.872e-02, 1.276e-02, -1.522e-02, 2.267e-03, -3.264e-02, -3.042e-02, 6.525e-03, 3.154e-02, 5.193e-02, 3.588e-03, -3.750e-02, -3.729e-02, -6.051e-03, 3.412e-03, -8.244e-03, -2.269e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -4.054e-03, 1.792e-03, -1.629e-03, -2.239e-04 };\n\tr = MulAdd(s0_0, M4(-6.092e-02, 1.339e-02, -4.554e-03, -1.395e-02, -4.689e-03, 1.342e-02, 1.254e-02, -5.389e-03, -2.701e-03, -7.961e-03, 3.034e-02, 4.658e-02, 4.680e-02, -1.012e-02, 2.197e-02, 1.284e-01), r);\n\tr = MulAdd(s0_1, M4(-1.607e-02, 3.157e-04, -3.379e-02, 4.748e-02, 3.269e-01, -5.248e-02, -3.816e-02, -4.362e-02, 6.960e-02, -2.778e-02, 1.179e-01, -2.154e-02, 3.771e-02, 1.121e-01, 8.252e-02, -2.881e-01), r);\n\tr = MulAdd(s0_2, M4(-2.736e-02, 1.314e-02, 3.129e-02, 2.014e-02, 3.678e-02, 1.444e-02, 8.184e-03, -9.470e-02, 3.379e-02, -5.792e-03, 2.617e-02, -3.427e-02, -2.049e-01, -1.673e-02, -2.069e-02, 5.914e-02), r);\n\tr = MulAdd(s0_3, M4(5.289e-03, -2.656e-04, -1.474e-02, 1.589e-02, 8.334e-02, -7.580e-02, 8.112e-02, 4.596e-02, 8.272e-02, 3.640e-02, -4.519e-03, -2.104e-02, -9.967e-02, 9.191e-02, 1.247e-01, -5.016e-03), r);\n\tr = MulAdd(s0_4, M4(-2.227e-01, -4.817e-02, 4.974e-02, 3.682e-03, 1.109e-01, 1.803e-01, 1.511e-01, -1.226e-01, 3.325e-03, 4.576e-02, -1.119e-01, 2.615e-02, -1.788e-01, -3.027e-01, 6.403e-02, -6.056e-02), r);\n\tr = MulAdd(s0_5, M4(5.268e-02, 9.762e-03, -4.245e-02, 1.849e-02, -1.549e-02, -2.268e-02, 7.592e-02, 3.212e-02, -2.411e-02, 3.668e-02, -7.544e-02, -4.866e-04, 5.589e-02, -2.498e-02, 1.852e-02, -9.691e-02), r);\n\tr = MulAdd(s0_6, M4(5.347e-02, 7.022e-03, 1.116e-02, 2.763e-02, -1.022e-02, -5.476e-03, 2.628e-03, -1.506e-03, 2.884e-02, 4.020e-02, -7.338e-03, 2.429e-02, 3.548e-02, 9.521e-03, 1.640e-02, 3.307e-03), r);\n\tr = MulAdd(s0_7, M4(1.294e-01, 1.416e-02, 2.088e-02, 5.070e-03, 6.003e-02, 8.699e-02, -4.962e-03, -1.115e-02, -9.649e-03, 8.960e-02, -2.227e-02, -6.014e-03, 2.850e-02, 4.964e-02, -4.095e-02, 1.140e-02), r);\n\tr = MulAdd(s0_8, M4(8.239e-03, -1.648e-02, 8.895e-03, 1.556e-02, -1.977e-03, 4.565e-03, -6.811e-03, 3.908e-04, -2.284e-02, -2.758e-02, -4.311e-03, -3.926e-03, -1.034e-02, -4.269e-02, -1.208e-02, 2.784e-03), r);\n\tr = MulAdd(s1_0, M4(-2.469e-02, 1.714e-02, 8.543e-05, -5.085e-02, -1.303e-02, -3.196e-02, -2.564e-02, 6.273e-04, 7.077e-03, -3.943e-02, 3.150e-02, 2.382e-02, -1.410e-02, 2.598e-02, -2.507e-02, -2.179e-03), r);\n\tr = MulAdd(s1_1, M4(3.810e-02, 4.908e-03, 1.884e-02, 1.513e-01, -1.236e-01, 2.266e-02, 1.428e-01, 3.874e-03, 4.718e-02, -8.402e-03, 1.354e-01, -1.199e-01, 1.073e-01, 3.814e-02, 1.159e-01, -7.765e-02), r);\n\tr = MulAdd(s1_2, M4(1.599e-02, 2.881e-03, 2.173e-02, -1.978e-03, 6.860e-02, 1.676e-03, 3.226e-02, -4.287e-02, -1.956e-02, -1.512e-03, -1.690e-02, 2.575e-02, -7.158e-02, -3.975e-02, -5.693e-02, -1.984e-02), r);\n\tr = MulAdd(s1_3, M4(-5.212e-02, -1.270e-02, -2.785e-02, 2.345e-03, 2.414e-03, -5.106e-03, 7.129e-02, 3.647e-03, 1.405e-01, 1.130e-01, -4.176e-02, 2.924e-02, -9.127e-03, -1.925e-02, 6.571e-03, -3.509e-02), r);\n\tr = MulAdd(s1_4, M4(-3.083e-01, -5.015e-02, 1.360e-01, 1.230e-03, 7.366e-02, -6.510e-02, 8.663e-02, 5.433e-02, 5.167e-02, 1.388e-01, -6.000e-02, 5.815e-03, 1.775e-02, -3.996e-02, -3.119e-02, -2.133e-02), r);\n\tr = MulAdd(s1_5, M4(8.512e-03, -2.324e-02, -3.587e-02, 2.867e-02, -1.335e-02, 1.153e-02, 5.781e-02, -7.299e-02, 9.194e-02, 5.748e-03, 3.511e-02, 2.288e-02, -3.146e-02, -9.689e-03, 6.297e-02, -4.233e-02), r);\n\tr = MulAdd(s1_6, M4(3.845e-02, 5.955e-02, -3.526e-02, 1.363e-02, -4.100e-02, 1.820e-02, -1.857e-02, 4.804e-03, 2.709e-02, 4.436e-02, 1.196e-02, 4.346e-02, -3.318e-02, -2.132e-02, 2.696e-02, -1.101e-02), r);\n\tr = MulAdd(s1_7, M4(5.951e-02, -7.423e-02, 3.198e-02, -8.567e-03, 1.034e-01, 5.462e-02, -5.424e-02, 2.838e-02, -8.256e-02, -1.197e-01, -3.751e-02, -9.126e-03, 5.554e-03, -1.258e-02, -2.857e-02, -3.262e-02), r);\n\tr = MulAdd(s1_8, M4(3.627e-03, -5.324e-02, 1.199e-02, -8.622e-04, 2.323e-02, 2.939e-02, -1.582e-02, -6.721e-04, -2.331e-02, -2.138e-02, 7.226e-04, -2.562e-04, 6.237e-03, -1.082e-02, -5.595e-03, -2.109e-03), r);\n\tr = MulAdd(s2_0, M4(2.653e-02, -1.926e-02, 1.199e-02, 9.048e-02, 5.699e-02, -1.210e-02, 8.090e-02, -2.781e-02, -1.199e-01, 4.468e-02, -8.449e-02, -8.375e-02, 5.640e-02, 1.763e-02, 1.440e-02, -2.498e-02), r);\n\tr = MulAdd(s2_1, M4(-1.279e-01, 2.318e-02, -7.002e-02, -7.665e-02, 1.274e-01, -2.412e-02, -1.367e-02, 1.274e-02, 2.671e-01, -4.063e-02, -8.018e-02, -1.074e-01, 1.408e-02, -8.455e-03, -5.504e-02, -9.651e-02), r);\n\tr = MulAdd(s2_2, M4(-2.118e-01, -2.689e-02, 5.992e-02, -1.555e-02, 5.128e-03, 2.630e-03, 2.998e-03, -3.045e-03, -5.662e-03, 1.739e-03, 6.779e-03, 1.238e-01, 1.021e-01, -6.391e-02, 1.074e-02, -2.479e-02), r);\n\tr = MulAdd(s2_3, M4(-1.237e-01, -1.143e-01, 1.900e-02, 1.004e-01, -8.614e-02, -6.276e-02, -1.237e-01, -7.810e-02, -1.022e-01, -3.045e-02, 5.377e-03, -3.440e-03, 1.157e-01, 4.332e-02, 1.922e-02, 4.073e-02), r);\n\tr = MulAdd(s2_4, M4(4.169e-01, -2.430e-02, 1.544e-01, -2.009e-02, -2.080e-01, 1.991e-03, -8.177e-02, 3.955e-02, -8.963e-02, -2.454e-01, -2.471e-03, -5.004e-02, 1.816e-01, -2.853e-01, -1.108e-01, -2.023e-02), r);\n\tr = MulAdd(s2_5, M4(1.104e-01, -1.946e-02, -9.055e-02, -7.604e-02, 3.566e-02, 3.569e-02, 1.540e-03, 3.796e-02, 2.840e-02, 5.791e-02, -4.812e-03, 1.310e-02, -1.732e-02, -5.084e-03, 1.198e-03, 7.456e-03), r);\n\tr = MulAdd(s2_6, M4(1.001e-01, 7.259e-02, -4.347e-02, 6.588e-03, 9.344e-02, -2.240e-02, 5.820e-02, 2.779e-02, 2.240e-02, 3.854e-02, -2.927e-02, 1.077e-02, -2.607e-02, -2.483e-02, 1.267e-02, 7.444e-03), r);\n\tr = MulAdd(s2_7, M4(-1.756e-01, -3.373e-01, 1.279e-01, 1.143e-02, -4.817e-02, 4.807e-03, 6.882e-02, -7.765e-02, 7.232e-03, -1.424e-02, 1.421e-02, -1.518e-02, -4.488e-02, 8.130e-02, 2.393e-03, 1.352e-02), r);\n\tr = MulAdd(s2_8, M4(-3.442e-02, -1.452e-01, 2.308e-02, -6.505e-02, -3.899e-02, -1.270e-02, -4.442e-02, 2.083e-02, -2.833e-02, 5.497e-03, 1.044e-02, -2.984e-02, -3.160e-02, 1.488e-02, 1.989e-03, 4.249e-03), r);\n\tr = MulAdd(s3_0, M4(7.697e-03, -2.455e-02, 1.960e-02, 2.386e-02, 2.703e-02, 4.728e-04, 3.220e-02, 3.976e-02, 5.094e-02, 1.657e-02, 2.947e-02, 3.609e-02, 2.286e-03, 5.603e-03, -3.366e-03, -6.941e-02), r);\n\tr = MulAdd(s3_1, M4(-3.139e-02, 3.118e-02, 5.715e-03, 4.829e-02, 1.522e-01, 3.641e-03, -1.124e-02, -2.385e-02, -2.348e-02, -9.260e-02, 3.022e-03, -2.601e-02, 8.581e-02, -4.490e-02, -9.472e-02, 9.227e-02), r);\n\tr = MulAdd(s3_2, M4(1.119e-02, -4.276e-04, -7.717e-02, 2.749e-02, 3.030e-02, -2.482e-02, -8.644e-03, 2.635e-03, 2.281e-02, 3.169e-02, -5.975e-03, 2.119e-02, 3.481e-02, 1.181e-03, 4.729e-02, 8.681e-02), r);\n\tr = MulAdd(s3_3, M4(2.554e-02, -4.979e-02, -1.684e-02, 7.986e-02, -2.542e-02, -1.278e-02, -1.498e-02, -2.338e-02, -1.193e-02, 2.727e-02, 4.043e-03, -1.298e-02, 9.618e-02, 5.320e-02, -1.820e-03, -5.392e-03), r);\n\tr = MulAdd(s3_4, M4(-4.170e-02, 3.055e-02, 1.440e-01, -8.131e-02, -3.459e-01, -7.154e-02, 9.196e-02, -1.495e-02, -1.284e-01, 9.553e-02, -9.523e-02, 2.806e-02, 3.195e-02, -1.082e-01, -5.087e-02, -5.880e-03), r);\n\tr = MulAdd(s3_5, M4(-7.607e-02, -3.552e-02, -2.089e-03, -1.679e-02, 1.089e-02, 3.870e-02, 1.625e-04, 1.265e-02, -2.999e-03, -1.181e-02, -1.651e-02, 1.686e-02, 3.755e-02, 4.108e-03, -7.984e-02, 4.348e-02), r);\n\tr = MulAdd(s3_6, M4(-3.543e-02, -1.071e-02, -2.990e-02, 2.091e-03, 1.102e-01, -4.086e-02, 1.002e-02, 4.791e-02, 2.896e-02, -2.758e-02, 1.350e-02, 2.303e-02, 2.593e-02, 3.618e-02, -7.147e-03, 8.067e-03), r);\n\tr = MulAdd(s3_7, M4(9.047e-02, 6.579e-02, -3.227e-02, -3.021e-03, 2.239e-02, 1.050e-02, 5.045e-02, -2.806e-02, -2.622e-02, -2.204e-02, 1.993e-02, 1.491e-02, -7.789e-02, -1.594e-02, 3.182e-02, -1.013e-02), r);\n\tr = MulAdd(s3_8, M4(-2.664e-02, 6.552e-03, 2.155e-02, -6.864e-02, 9.120e-03, -3.208e-02, 1.887e-03, -4.354e-04, -1.106e-02, 1.752e-02, 2.864e-02, 9.538e-04, -3.001e-02, -3.979e-02, 1.779e-02, 1.888e-02), r);\n\tr = MulAdd(s4_0, M4(-3.185e-02, -8.707e-03, 4.138e-02, 1.122e-02, -1.942e-02, -2.564e-02, -5.853e-02, 4.479e-02, 5.085e-02, 2.594e-02, 9.553e-03, -7.572e-06, -2.425e-02, -2.492e-02, 2.955e-03, 3.709e-02), r);\n\tr = MulAdd(s4_1, M4(-1.505e-02, 2.215e-02, 2.096e-03, -7.442e-02, -2.422e-01, 8.188e-02, -5.513e-02, -3.617e-02, 1.075e-01, -1.344e-02, -7.358e-02, -1.538e-01, 3.205e-02, -5.018e-02, 1.508e-02, -7.682e-02), r);\n\tr = MulAdd(s4_2, M4(-4.506e-02, -8.178e-03, 4.501e-03, -6.760e-03, 3.139e-03, -3.794e-03, 1.589e-03, 7.435e-04, 7.842e-03, -8.196e-03, -1.594e-02, -1.751e-02, -1.772e-01, -1.600e-02, -3.758e-02, 1.123e-01), r);\n\tr = MulAdd(s4_3, M4(-1.714e-02, 6.968e-03, 2.990e-03, 1.276e-02, 3.480e-02, -1.006e-03, 3.230e-02, 4.203e-02, 2.386e-02, 1.318e-02, -1.422e-01, 6.164e-02, 2.804e-02, -2.677e-03, 9.084e-02, 3.863e-02), r);\n\tr = MulAdd(s4_4, M4(-7.837e-02, -1.313e-02, 4.041e-02, -5.725e-02, 4.064e-02, -1.787e-02, -1.496e-03, -2.503e-02, -1.233e-01, 3.710e-02, 2.943e-03, -8.191e-04, -2.615e-01, 3.901e-01, 4.065e-01, -2.056e-01), r);\n\tr = MulAdd(s4_5, M4(-2.254e-02, -8.021e-03, -2.046e-02, 8.472e-03, -5.713e-02, -2.529e-02, 1.694e-02, -2.429e-02, -2.456e-02, 9.997e-04, -2.681e-02, -1.772e-02, 1.567e-01, -1.521e-01, -7.455e-02, 4.456e-02), r);\n\tr = MulAdd(s4_6, M4(1.749e-04, 7.458e-03, -2.304e-03, -2.706e-04, 1.273e-02, 1.013e-02, 2.770e-02, -9.043e-03, -8.916e-03, 9.403e-02, 1.837e-02, 1.516e-02, 1.039e-01, 9.260e-03, -6.735e-02, 2.598e-02), r);\n\tr = MulAdd(s4_7, M4(1.304e-03, 2.834e-02, -6.175e-02, -2.986e-02, 3.633e-02, 3.645e-02, 7.959e-03, 1.110e-02, -4.079e-02, 7.844e-02, -2.673e-02, 1.087e-02, -3.180e-02, -1.883e-01, 8.895e-02, -1.684e-02), r);\n\tr = MulAdd(s4_8, M4(-1.649e-02, 1.449e-02, -4.270e-03, -9.407e-03, -1.764e-02, -4.406e-02, -1.302e-02, 4.296e-03, -1.590e-02, 2.225e-02, 2.974e-02, -2.259e-02, 5.141e-03, -2.828e-02, 1.497e-02, -6.642e-03), r);\n\tr = MulAdd(s5_0, M4(4.863e-03, -8.128e-03, 7.881e-02, 2.253e-02, 2.186e-02, -3.181e-02, 4.433e-02, 6.014e-02, -5.438e-02, -3.977e-02, 9.079e-02, 1.664e-01, 3.258e-02, -3.838e-03, 2.394e-02, -7.544e-02), r);\n\tr = MulAdd(s5_1, M4(5.463e-02, -1.269e-02, 5.354e-02, -5.412e-02, 2.823e-02, -2.180e-02, -1.627e-01, -2.816e-02, 3.666e-02, -9.861e-03, -4.098e-02, -1.916e-01, -5.313e-02, 3.226e-02, 6.151e-02, -4.472e-02), r);\n\tr = MulAdd(s5_2, M4(-1.858e-02, 2.438e-02, -8.904e-02, -8.276e-02, -4.238e-02, 1.803e-03, -2.575e-02, 3.027e-02, 6.873e-02, 2.042e-02, -3.134e-03, -4.847e-02, -7.084e-03, 2.288e-02, -2.983e-02, 3.942e-02), r);\n\tr = MulAdd(s5_3, M4(5.432e-04, -1.867e-02, -1.480e-01, -2.152e-02, 2.918e-02, -7.173e-02, 6.171e-02, 4.939e-02, -4.211e-03, 2.114e-01, 7.824e-02, -2.539e-03, -3.472e-02, -2.033e-02, -7.886e-02, 8.806e-04), r);\n\tr = MulAdd(s5_4, M4(1.612e-01, -1.711e-01, -2.185e-01, 3.588e-02, -2.282e-01, 1.369e-01, -7.013e-02, -9.328e-02, -1.700e-01, -5.438e-02, -1.002e-01, -1.638e-01, -3.944e-02, 4.242e-02, 9.511e-02, -2.098e-02), r);\n\tr = MulAdd(s5_5, M4(2.925e-01, -1.649e-02, -3.357e-01, 3.610e-02, -5.713e-02, -7.204e-02, 3.271e-02, -1.081e-02, -7.453e-02, -1.894e-02, 1.793e-02, 4.783e-02, 1.899e-02, -3.242e-03, -6.474e-02, -1.724e-02), r);\n\tr = MulAdd(s5_6, M4(-2.085e-02, 4.713e-04, 8.945e-02, -4.255e-02, 3.323e-02, 2.878e-03, 4.455e-03, 8.880e-03, 1.175e-02, -2.069e-02, 1.593e-02, 7.256e-03, 5.510e-02, 6.245e-02, -1.073e-03, 1.568e-02), r);\n\tr = MulAdd(s5_7, M4(-1.434e-01, -4.155e-02, -1.088e-01, -1.304e-02, -2.387e-02, 5.490e-03, -2.673e-03, -3.037e-02, 2.007e-02, 2.010e-01, 7.576e-03, 2.663e-02, -7.244e-02, 1.493e-02, -1.855e-02, -7.471e-03), r);\n\tr = MulAdd(s5_8, M4(1.646e-01, 1.502e-02, 1.110e-03, 1.039e-01, -1.581e-02, -6.403e-03, -1.292e-02, -8.818e-04, -2.267e-02, 5.440e-02, 1.540e-02, -3.064e-02, -5.141e-03, -6.073e-02, 1.734e-02, -9.134e-03), r);\n\tr = MulAdd(s6_0, M4(-1.421e-02, -3.183e-02, 7.745e-02, 1.166e-01, -2.863e-02, 4.455e-02, -5.321e-02, -1.932e-02, 2.177e-02, -6.390e-04, 7.195e-02, -1.108e-01, -5.191e-02, -6.434e-03, -4.275e-02, -7.569e-02), r);\n\tr = MulAdd(s6_1, M4(2.328e-02, -2.048e-02, 1.015e-02, -5.549e-02, 7.075e-02, -1.188e-02, -4.826e-02, -8.752e-02, -1.681e-01, -8.244e-03, 1.652e-01, -2.174e-02, -5.658e-02, 2.067e-02, -5.496e-02, -1.015e-01), r);\n\tr = MulAdd(s6_2, M4(7.667e-02, 2.027e-02, 3.300e-02, -4.803e-03, -1.036e-01, 1.408e-02, 6.761e-03, 3.002e-02, -1.679e-02, 1.096e-03, 5.178e-02, 2.883e-02, -1.849e-02, 1.547e-03, -2.402e-02, 7.750e-03), r);\n\tr = MulAdd(s6_3, M4(-5.791e-02, 3.708e-02, -5.342e-02, -3.697e-02, -1.007e-01, -4.903e-02, 1.126e-01, -1.490e-02, 4.938e-02, 2.699e-02, -3.827e-02, 4.307e-02, 1.603e-01, 2.214e-02, 1.549e-01, 5.679e-02), r);\n\tr = MulAdd(s6_4, M4(3.202e-02, -4.333e-02, -7.531e-02, -3.408e-02, -4.115e-03, -5.899e-02, 3.860e-03, 6.792e-05, 1.024e-01, 3.625e-02, -7.766e-02, -3.037e-02, -1.183e-01, -1.473e-03, 9.003e-02, 9.680e-05), r);\n\tr = MulAdd(s6_5, M4(2.412e-02, 6.634e-04, 6.732e-02, 1.420e-02, 5.810e-02, 2.585e-02, 3.066e-02, -6.959e-02, 7.319e-02, 3.423e-03, 5.851e-03, 1.705e-02, 1.814e-02, -9.285e-03, 5.824e-02, -2.749e-03), r);\n\tr = MulAdd(s6_6, M4(-2.116e-02, -1.237e-02, 1.453e-02, 1.679e-02, 1.266e-02, 4.516e-03, 2.093e-03, -2.252e-03, 7.470e-03, -3.528e-02, 2.554e-03, 3.067e-02, 3.109e-02, 4.026e-02, -1.157e-03, -1.176e-02), r);\n\tr = MulAdd(s6_7, M4(-3.356e-02, -7.234e-02, -2.846e-02, -3.722e-02, 3.819e-03, 1.008e-02, 1.845e-02, -2.988e-02, 8.924e-03, 4.281e-02, 6.533e-02, 4.260e-02, 6.298e-02, 2.217e-01, -2.953e-02, 3.301e-02), r);\n\tr = MulAdd(s6_8, M4(1.080e-02, -4.984e-02, -2.745e-02, 3.396e-02, 1.743e-02, 2.391e-02, 1.372e-02, -6.250e-03, -1.041e-02, -3.854e-02, 1.843e-02, 2.394e-02, -2.537e-02, -3.912e-02, -1.326e-02, 2.354e-04), r);\n\tr = MulAdd(s7_0, M4(-5.068e-02, 3.950e-03, -5.902e-02, 7.300e-02, -3.290e-02, 2.441e-02, -3.235e-02, -6.914e-02, 3.399e-02, -5.761e-03, -5.664e-03, 5.919e-03, 7.203e-02, -1.170e-03, -2.160e-02, -5.705e-02), r);\n\tr = MulAdd(s7_1, M4(5.436e-02, -5.736e-03, 4.414e-02, -3.565e-01, -8.737e-04, 7.903e-03, 3.357e-02, -6.803e-02, -7.882e-02, 1.270e-02, 1.038e-01, -8.629e-02, -1.847e-02, -1.421e-03, -1.047e-01, 2.133e-01), r);\n\tr = MulAdd(s7_2, M4(-9.254e-03, -1.177e-02, 3.797e-02, 2.816e-02, -8.729e-03, 1.623e-02, -7.377e-02, 9.038e-02, -5.011e-02, 7.134e-03, 3.944e-03, 7.992e-03, -1.552e-02, -7.506e-03, -2.047e-03, -2.762e-02), r);\n\tr = MulAdd(s7_3, M4(-1.106e-02, 4.900e-02, 9.696e-02, -6.278e-02, -9.456e-02, -5.866e-02, 1.324e-02, -3.110e-02, 1.114e-01, 2.215e-02, -6.409e-02, 5.640e-02, 7.093e-02, -5.043e-02, 4.602e-02, 7.310e-02), r);\n\tr = MulAdd(s7_4, M4(-2.782e-02, -7.644e-02, 1.632e-01, -8.296e-02, 2.731e-01, -7.495e-02, -1.284e-01, 4.100e-02, 1.436e-01, -1.086e-01, -1.241e-01, 9.629e-04, 5.897e-02, -3.782e-02, 1.235e-01, 4.526e-02), r);\n\tr = MulAdd(s7_5, M4(-1.037e-02, -6.389e-03, 3.870e-02, 2.252e-02, 6.446e-04, -8.442e-02, 6.690e-02, -1.524e-02, 2.123e-02, -2.318e-02, 5.155e-03, -3.023e-02, -1.198e-02, 1.326e-02, 1.593e-02, -1.281e-02), r);\n\tr = MulAdd(s7_6, M4(1.916e-02, -5.670e-02, 7.568e-03, -4.093e-03, 2.333e-02, 3.350e-02, -2.574e-02, 1.999e-03, 5.158e-02, 7.096e-03, -4.866e-03, 2.298e-02, -3.357e-02, 5.315e-02, -1.359e-02, 1.251e-02), r);\n\tr = MulAdd(s7_7, M4(5.981e-03, 8.174e-02, -4.382e-02, -7.868e-02, 6.846e-02, 4.553e-02, 6.389e-02, -4.031e-02, 1.263e-02, 1.191e-01, 5.344e-02, 1.252e-02, 2.144e-02, 4.242e-03, 3.567e-03, 7.250e-02), r);\n\tr = MulAdd(s7_8, M4(4.586e-02, -2.087e-03, -2.998e-02, 2.130e-02, 5.013e-03, 3.517e-02, -1.515e-02, 1.582e-02, -4.815e-03, -1.898e-02, 3.161e-02, 4.237e-03, -1.922e-02, -2.204e-02, -4.973e-03, -7.648e-03), r);\n\treturn r;\n}\n\nvoid Pass17(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 18\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0, t1, t2, t3\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -9.206e-04, -7.637e-04, -7.861e-04, -5.855e-04 };\n\tr = MulAdd(s0_0, M4(-3.170e-02, 2.448e-02, -6.568e-02, -4.856e-03, 7.756e-03, 2.695e-02, -2.034e-02, -1.152e-02, -9.123e-03, 1.096e-02, -1.194e-02, 3.436e-03, 5.642e-02, -6.383e-02, 8.516e-03, -7.348e-03), r);\n\tr = MulAdd(s0_1, M4(1.707e-02, -2.103e-02, 3.186e-02, 6.137e-02, -7.320e-03, -3.172e-02, 8.073e-02, 7.483e-02, -3.905e-02, 1.540e-02, 7.500e-02, -8.741e-03, -6.373e-02, 7.616e-02, -2.019e-02, -4.717e-02), r);\n\tr = MulAdd(s0_2, M4(2.383e-02, -3.848e-02, 4.500e-02, -8.700e-03, -9.590e-04, 1.952e-02, 4.646e-03, 3.524e-02, -1.623e-01, 8.300e-02, -4.089e-02, 2.941e-02, 8.041e-04, -1.368e-02, -3.280e-03, 1.389e-02), r);\n\tr = MulAdd(s0_3, M4(1.305e-02, 1.089e-02, 2.462e-02, -9.653e-03, 3.373e-02, -2.580e-02, -4.511e-02, 1.383e-02, -2.521e-02, -8.344e-03, -1.552e-03, 1.083e-02, -2.801e-02, 1.817e-02, 1.458e-02, -5.040e-02), r);\n\tr = MulAdd(s0_4, M4(-2.626e-02, -3.885e-02, 3.225e-02, -8.319e-03, 2.861e-02, 9.400e-02, -1.323e-02, -9.068e-02, -5.325e-02, -3.405e-02, -1.348e-01, 3.636e-02, -1.412e-03, -8.639e-03, -2.458e-02, 8.211e-02), r);\n\tr = MulAdd(s0_5, M4(-2.241e-02, 2.480e-02, -5.949e-02, 3.283e-02, 1.708e-02, -3.191e-02, 1.170e-02, -8.865e-02, 1.219e-02, 1.932e-01, -1.464e-01, 2.297e-01, 1.451e-02, -1.641e-02, 3.309e-02, -3.171e-02), r);\n\tr = MulAdd(s0_6, M4(3.591e-03, -7.527e-03, -1.827e-02, -5.322e-03, -8.911e-03, 4.973e-03, -1.666e-03, -2.836e-02, 1.501e-04, 8.513e-03, -1.642e-02, 3.185e-03, -9.765e-03, -5.416e-03, 8.468e-03, 1.827e-02), r);\n\tr = MulAdd(s0_7, M4(-6.142e-03, 1.179e-02, 9.797e-03, -7.066e-03, -4.748e-02, -4.553e-02, -6.670e-03, 6.607e-02, 3.616e-02, 1.246e-02, 7.919e-03, -2.878e-02, 2.383e-02, 1.226e-02, 1.933e-02, 1.379e-02), r);\n\tr = MulAdd(s0_8, M4(5.489e-03, -6.949e-03, -1.249e-02, -1.273e-02, -1.335e-02, -1.046e-02, -1.467e-02, 1.301e-02, -3.634e-04, 2.387e-02, -6.627e-03, 6.708e-02, 1.014e-02, 7.646e-03, -3.052e-03, -1.804e-02), r);\n\tr = MulAdd(s1_0, M4(-5.993e-02, 3.872e-02, -8.385e-02, -2.055e-02, 3.127e-02, 2.489e-02, -1.823e-02, -7.680e-03, -1.837e-02, -3.850e-03, -1.939e-02, -4.987e-03, -3.555e-02, -8.473e-02, -2.959e-03, -9.691e-04), r);\n\tr = MulAdd(s1_1, M4(1.471e-01, -1.696e-01, 7.404e-02, 1.358e-01, -2.949e-02, -7.137e-02, 7.931e-02, 7.524e-02, -1.398e-03, 1.968e-02, 6.140e-02, 1.004e-03, -1.041e-01, 2.717e-01, 2.352e-02, -9.992e-02), r);\n\tr = MulAdd(s1_2, M4(-2.605e-02, 1.538e-01, 1.949e-02, -7.537e-02, 4.956e-03, 2.166e-02, 4.880e-03, 4.470e-02, -1.016e-01, -5.237e-02, -3.256e-02, 4.931e-02, 4.893e-03, -9.205e-02, -8.567e-03, 8.578e-03), r);\n\tr = MulAdd(s1_3, M4(2.993e-02, 1.200e-02, 6.862e-02, -6.863e-04, -6.337e-02, -3.137e-02, -6.470e-02, 5.289e-02, -3.570e-02, -1.412e-02, 2.902e-03, 5.407e-03, 1.897e-01, -4.217e-02, 7.446e-02, -1.463e-01), r);\n\tr = MulAdd(s1_4, M4(1.145e-01, 4.910e-02, -3.034e-01, 4.102e-03, -1.989e-01, 5.177e-01, 5.979e-02, -3.146e-01, 9.415e-03, -3.219e-02, 5.995e-02, 4.015e-02, -1.892e-01, -3.401e-02, -2.563e-01, 4.216e-01), r);\n\tr = MulAdd(s1_5, M4(-3.214e-02, 4.432e-02, 1.106e-02, -1.413e-01, 4.720e-02, -1.067e-02, 1.894e-02, -1.091e-01, 9.069e-02, 3.072e-02, -1.896e-02, -1.035e-01, 2.268e-02, -5.219e-03, 4.358e-02, -9.705e-02), r);\n\tr = MulAdd(s1_6, M4(1.562e-03, -9.512e-03, -2.244e-02, -1.654e-02, 5.496e-03, -5.039e-03, 4.016e-02, -3.034e-02, 4.426e-03, 8.628e-03, -2.512e-02, -9.072e-03, -1.572e-02, -2.058e-02, 4.438e-02, 8.002e-03), r);\n\tr = MulAdd(s1_7, M4(-1.548e-02, 6.459e-03, 4.658e-02, 1.722e-02, -1.577e-02, -8.439e-02, -1.723e-02, 6.488e-02, 3.528e-02, 7.008e-03, 3.369e-05, -2.880e-02, 2.789e-02, 4.783e-03, -2.586e-02, -5.774e-02), r);\n\tr = MulAdd(s1_8, M4(6.076e-03, -2.590e-03, -4.608e-03, 1.910e-02, -1.267e-02, -3.100e-02, -1.022e-02, 2.922e-02, -1.394e-02, 2.198e-02, 5.267e-03, 3.279e-02, 9.616e-03, 1.532e-02, 2.373e-03, -6.028e-03), r);\n\tr = MulAdd(s2_0, M4(-6.614e-02, -2.182e-02, -1.388e-02, -2.440e-03, -9.562e-03, 2.454e-03, 5.310e-04, 8.280e-03, -2.452e-02, -3.225e-02, 3.147e-02, 1.186e-02, -5.556e-03, 1.584e-03, 3.588e-02, 1.071e-03), r);\n\tr = MulAdd(s2_1, M4(-1.006e-01, -1.033e-01, 6.797e-02, -1.167e-01, 5.872e-02, -6.635e-04, -1.559e-02, 4.107e-03, 5.115e-02, 1.119e-01, -6.172e-02, -3.804e-02, -3.999e-02, 2.446e-03, 3.854e-02, 3.619e-02), r);\n\tr = MulAdd(s2_2, M4(-3.021e-02, 2.507e-02, -2.031e-02, 1.310e-01, 1.319e-02, 2.045e-02, 8.442e-03, -1.568e-02, 2.613e-03, -8.475e-03, 4.010e-02, 1.786e-02, 5.968e-03, 2.538e-02, -2.774e-03, 2.409e-02), r);\n\tr = MulAdd(s2_3, M4(1.206e-02, -9.481e-03, -3.632e-02, -7.142e-03, 6.906e-02, 2.239e-02, 3.409e-02, 3.912e-03, 1.751e-02, 2.146e-02, 7.899e-02, -1.307e-03, -8.623e-02, 6.119e-02, -5.315e-02, 4.924e-02), r);\n\tr = MulAdd(s2_4, M4(8.546e-02, 7.753e-02, -6.961e-02, 9.094e-02, -3.058e-01, -1.135e-01, -1.563e-01, -9.692e-02, 5.813e-02, -3.372e-02, -7.690e-02, 7.416e-04, 9.672e-02, -2.104e-01, -6.485e-02, -1.636e-01), r);\n\tr = MulAdd(s2_5, M4(6.507e-02, -1.349e-02, 5.284e-02, -9.991e-02, -4.316e-03, -8.037e-02, 6.635e-03, -8.991e-03, -2.188e-02, -5.964e-02, -3.078e-02, 1.082e-01, 1.135e-02, 4.011e-02, 2.729e-02, 6.621e-02), r);\n\tr = MulAdd(s2_6, M4(-3.503e-03, 7.632e-03, 9.369e-03, 7.759e-03, -7.768e-03, -3.471e-03, 2.214e-02, 1.091e-02, -6.653e-02, -1.895e-02, -2.878e-02, 3.137e-02, 2.943e-02, 1.752e-02, -5.594e-03, 4.309e-02), r);\n\tr = MulAdd(s2_7, M4(7.778e-03, 6.771e-03, 1.779e-03, 7.087e-03, 6.034e-02, 2.083e-02, -3.374e-02, -7.667e-03, 1.442e-02, 1.245e-02, -1.346e-02, -6.898e-02, 3.395e-03, 4.285e-02, 5.205e-02, -3.860e-02), r);\n\tr = MulAdd(s2_8, M4(1.034e-02, 1.446e-02, 8.920e-03, -1.042e-02, 2.126e-03, 1.193e-02, 5.882e-03, -2.283e-02, -4.069e-03, -7.869e-03, 2.932e-02, -6.078e-02, 7.783e-03, 1.763e-02, 6.087e-03, 1.066e-02), r);\n\tr = MulAdd(s3_0, M4(-1.117e-02, -3.773e-02, 4.783e-02, 1.799e-02, -1.312e-02, -1.550e-03, 1.286e-03, 5.248e-03, -3.082e-02, -3.944e-02, 3.241e-02, 4.450e-03, -8.538e-03, -6.150e-03, 3.260e-02, -5.224e-03), r);\n\tr = MulAdd(s3_1, M4(-4.113e-01, 8.007e-02, 1.653e-01, -2.705e-01, 4.841e-02, -2.195e-05, -2.048e-02, 4.801e-04, -4.779e-04, 7.444e-02, -4.292e-02, -6.109e-04, -5.756e-02, -1.337e-02, 3.434e-02, 3.096e-02), r);\n\tr = MulAdd(s3_2, M4(-5.278e-02, 1.767e-01, -3.923e-02, 1.401e-01, 1.043e-02, 8.874e-03, 1.041e-02, -1.616e-02, 1.214e-02, -2.069e-02, 3.683e-02, 1.199e-02, 2.470e-03, 1.989e-02, -7.253e-03, 1.975e-02), r);\n\tr = MulAdd(s3_3, M4(3.710e-03, -6.151e-03, -4.808e-02, -1.869e-02, 6.567e-02, 1.809e-02, 2.937e-02, 2.441e-03, 1.323e-01, -1.969e-02, 2.207e-02, -8.042e-03, -1.013e-01, 7.105e-02, -6.565e-02, 4.941e-02), r);\n\tr = MulAdd(s3_4, M4(7.788e-02, 8.375e-02, -8.080e-02, 1.812e-01, -2.842e-01, -8.450e-02, -1.230e-01, -7.689e-02, 2.533e-01, 4.913e-01, -1.572e-01, -2.203e-01, 2.837e-02, -3.141e-01, -1.344e-01, -2.363e-01), r);\n\tr = MulAdd(s3_5, M4(5.774e-02, -3.128e-02, 5.944e-02, -7.505e-02, -1.588e-03, -7.247e-02, -1.595e-04, -1.232e-02, -1.557e-02, -1.428e-01, -2.084e-02, 1.199e-01, 1.154e-02, 2.753e-02, 2.961e-02, 5.043e-02), r);\n\tr = MulAdd(s3_6, M4(-6.184e-03, 7.996e-03, 3.448e-03, 5.530e-03, -8.169e-03, -2.379e-03, 1.869e-02, 7.190e-03, -6.045e-02, -2.534e-02, -3.620e-03, 3.928e-02, 2.574e-02, 1.327e-02, -1.794e-02, 4.131e-02), r);\n\tr = MulAdd(s3_7, M4(3.847e-03, 3.405e-03, 4.610e-03, 1.175e-02, 5.643e-02, 1.664e-02, -3.929e-02, -3.633e-03, 5.540e-02, 5.807e-02, -2.154e-01, -3.165e-01, -9.234e-03, 4.162e-02, 2.476e-02, -6.623e-02), r);\n\tr = MulAdd(s3_8, M4(1.258e-02, 1.675e-02, 1.004e-02, -3.470e-04, 7.424e-04, 7.711e-03, 4.932e-03, -2.514e-02, 2.154e-02, 2.952e-02, 3.343e-02, -4.860e-02, 6.836e-03, 1.422e-02, 4.818e-03, 4.429e-03), r);\n\tr = MulAdd(s4_0, M4(-1.991e-02, -7.818e-02, 1.753e-03, -7.982e-03, -8.459e-03, 1.715e-02, -3.093e-04, 1.164e-02, -2.252e-02, -1.032e-02, -3.003e-02, 7.538e-04, 9.509e-03, 4.878e-04, -1.529e-02, -2.684e-04), r);\n\tr = MulAdd(s4_1, M4(2.582e-02, -7.369e-02, 1.761e-02, -9.257e-03, 6.032e-02, -7.150e-02, 1.203e-01, 5.405e-02, 3.053e-02, -7.387e-02, 6.575e-02, 6.294e-02, -4.751e-02, 3.480e-02, -4.056e-02, -3.144e-02), r);\n\tr = MulAdd(s4_2, M4(-2.343e-02, 1.343e-02, -3.803e-03, 6.644e-02, -1.866e-02, 2.669e-02, -1.160e-02, 2.351e-02, -5.340e-04, -1.773e-02, -2.394e-02, -6.879e-02, -6.449e-03, -5.503e-02, 1.298e-02, 1.473e-02), r);\n\tr = MulAdd(s4_3, M4(2.549e-01, 2.205e-03, 1.876e-01, -7.721e-02, 3.052e-02, 2.247e-02, 3.544e-03, -9.289e-03, -3.133e-02, 2.939e-02, 6.849e-02, -2.967e-02, -3.779e-02, -1.874e-02, 1.963e-02, -1.928e-02), r);\n\tr = MulAdd(s4_4, M4(2.826e-01, -3.722e-01, 2.660e-01, -4.212e-01, 3.193e-01, 2.409e-01, -6.020e-01, -2.057e-01, -1.676e-02, 1.411e-01, -7.284e-02, -4.007e-02, 9.450e-02, 1.185e-02, 8.403e-02, 1.109e-01), r);\n\tr = MulAdd(s4_5, M4(-1.082e-02, -4.602e-02, -1.661e-02, -8.544e-02, 5.456e-02, 7.028e-02, 2.377e-02, -2.090e-01, 1.850e-03, -5.624e-02, 2.329e-02, 5.773e-02, -1.543e-02, -6.734e-03, -1.854e-02, -2.026e-02), r);\n\tr = MulAdd(s4_6, M4(-2.066e-02, -2.805e-02, 5.004e-02, -5.649e-03, -1.240e-02, -1.120e-03, 1.128e-02, 1.740e-02, -8.836e-03, -1.918e-02, 1.448e-02, 3.832e-02, 1.178e-02, 1.012e-02, -1.370e-02, 6.817e-03), r);\n\tr = MulAdd(s4_7, M4(-1.574e-02, 6.095e-03, 1.873e-02, -2.419e-02, 1.698e-02, -2.177e-03, 1.293e-02, 3.237e-02, 1.892e-02, -6.214e-03, 3.640e-03, -3.150e-02, 9.240e-03, 7.956e-03, 1.666e-02, -3.750e-02), r);\n\tr = MulAdd(s4_8, M4(6.335e-03, 3.346e-02, -7.784e-03, 1.793e-02, 1.143e-02, 1.155e-02, 3.650e-02, -3.451e-02, -1.071e-02, 1.390e-02, 1.723e-02, -7.698e-03, -2.032e-03, 1.901e-02, -2.404e-02, -7.579e-03), r);\n\tr = MulAdd(s5_0, M4(-4.975e-02, -5.695e-02, 2.088e-02, 4.877e-03, 1.484e-02, 1.283e-02, -1.485e-02, -1.493e-03, -8.537e-02, 1.514e-02, 2.568e-02, 2.130e-02, -2.429e-02, -2.395e-04, -1.912e-02, -6.880e-03), r);\n\tr = MulAdd(s5_1, M4(-4.932e-02, 2.237e-02, 2.594e-02, -2.794e-02, -3.335e-02, -7.771e-02, 9.786e-02, 3.368e-02, -4.771e-03, -3.063e-01, 1.260e-01, 1.167e-01, 2.342e-02, 2.135e-02, -5.706e-02, -2.458e-02), r);\n\tr = MulAdd(s5_2, M4(-1.410e-02, -1.026e-02, -1.484e-02, 4.841e-02, -1.918e-02, 1.553e-02, -3.033e-02, -5.088e-03, 2.929e-03, 3.870e-02, -1.440e-02, -3.313e-02, -1.371e-02, -7.303e-02, 2.006e-02, 3.500e-02), r);\n\tr = MulAdd(s5_3, M4(7.503e-02, 6.763e-02, -2.062e-02, -1.734e-02, -2.692e-02, 5.217e-03, 2.626e-02, 1.809e-02, -5.349e-02, 4.840e-02, 7.110e-02, -8.833e-02, -8.620e-02, -2.215e-03, -5.047e-02, 6.569e-03), r);\n\tr = MulAdd(s5_4, M4(9.741e-03, 7.098e-04, -4.540e-02, -8.394e-03, -4.509e-02, 6.875e-02, -3.755e-02, -3.042e-02, -1.652e-02, -9.887e-02, -8.768e-02, 4.416e-01, 3.894e-01, -1.719e-01, 4.596e-01, -4.144e-02), r);\n\tr = MulAdd(s5_5, M4(1.393e-02, -2.573e-02, 1.315e-02, -6.274e-02, 4.479e-02, -9.074e-02, 2.770e-02, -2.673e-02, -6.560e-03, -2.809e-02, 4.211e-02, -8.775e-03, -5.896e-02, -6.478e-03, -4.895e-02, -1.257e-01), r);\n\tr = MulAdd(s5_6, M4(-1.757e-02, -1.089e-02, 4.492e-02, 2.950e-02, -9.883e-03, -1.252e-03, -3.068e-03, 1.144e-02, -8.864e-03, -2.111e-02, 1.158e-02, 4.651e-02, 7.449e-03, 8.998e-03, -3.528e-02, 6.337e-03), r);\n\tr = MulAdd(s5_7, M4(7.524e-03, -8.958e-03, 5.724e-03, 1.279e-02, 2.790e-02, 1.130e-02, -2.957e-02, -1.026e-02, 1.624e-02, 1.139e-02, 1.602e-03, -5.824e-02, -1.166e-03, -9.779e-03, 3.063e-02, -1.145e-01), r);\n\tr = MulAdd(s5_8, M4(2.655e-03, 2.348e-02, -6.856e-03, -4.147e-03, 1.467e-02, 2.920e-02, 2.897e-02, -4.703e-02, -1.137e-02, 5.183e-03, 2.331e-02, -9.601e-03, 1.926e-03, 4.874e-03, -3.124e-02, 3.141e-02), r);\n\tr = MulAdd(s6_0, M4(-1.876e-02, -1.165e-02, 1.643e-02, -5.137e-03, -2.971e-02, -2.814e-02, 4.568e-02, -2.350e-03, 1.767e-02, -2.508e-02, 9.430e-03, 8.928e-03, -1.128e-02, 1.397e-02, 1.078e-03, 2.444e-03), r);\n\tr = MulAdd(s6_1, M4(-1.603e-02, 4.883e-03, -3.543e-02, 2.508e-02, 6.303e-02, -1.529e-03, -5.630e-02, -5.166e-03, 3.772e-03, 1.235e-01, -9.009e-02, -4.480e-02, 9.319e-04, 1.023e-02, -1.260e-02, 4.646e-03), r);\n\tr = MulAdd(s6_2, M4(2.779e-02, 4.112e-03, 1.610e-02, -2.811e-02, -5.176e-03, 1.470e-01, -3.409e-02, -4.477e-02, 1.400e-02, -2.700e-02, 2.512e-02, -3.769e-03, 3.306e-03, 1.269e-03, -4.562e-03, -5.639e-03), r);\n\tr = MulAdd(s6_3, M4(-3.967e-02, -2.166e-02, 4.781e-03, 3.840e-03, 4.313e-02, 8.753e-03, -6.067e-03, 8.509e-04, -3.141e-02, 2.118e-02, 7.875e-02, -1.663e-02, -6.424e-02, 3.583e-02, -4.025e-02, 2.640e-02), r);\n\tr = MulAdd(s6_4, M4(1.583e-01, 6.976e-02, -1.724e-01, -2.359e-01, -6.695e-02, -3.676e-02, 1.117e-01, -1.440e-02, -3.013e-01, -1.920e-01, 3.894e-01, 2.940e-01, 2.106e-01, -1.568e-01, 7.986e-02, -4.248e-04), r);\n\tr = MulAdd(s6_5, M4(9.537e-06, 7.261e-02, 4.889e-02, 1.255e-01, -8.090e-03, -5.074e-02, -2.435e-02, 4.686e-02, 2.466e-02, -1.938e-01, 1.402e-03, 2.188e-01, -3.894e-02, 1.007e-02, 4.435e-03, 2.815e-02), r);\n\tr = MulAdd(s6_6, M4(-1.334e-02, -1.331e-03, -1.216e-02, -2.382e-03, 1.886e-03, 6.733e-04, 6.726e-03, -2.342e-03, -5.683e-03, -1.460e-02, -2.966e-02, 1.401e-02, 1.776e-03, 8.501e-03, -2.850e-02, 2.280e-02), r);\n\tr = MulAdd(s6_7, M4(-5.622e-02, -4.385e-02, 8.323e-02, 2.082e-02, -3.004e-03, 6.389e-03, -3.528e-02, -6.396e-03, 3.363e-02, 5.651e-02, -7.056e-02, -1.323e-01, 7.776e-02, -1.758e-01, 2.205e-01, -3.272e-01), r);\n\tr = MulAdd(s6_8, M4(-2.244e-02, -1.364e-02, -4.934e-03, 5.392e-02, -9.519e-03, -8.369e-03, 1.478e-03, 2.273e-03, -1.052e-02, 1.176e-02, -7.981e-03, -5.322e-02, -1.382e-02, 3.117e-02, -5.119e-02, 3.360e-02), r);\n\tr = MulAdd(s7_0, M4(3.142e-03, -7.278e-03, 1.644e-02, -5.327e-03, -2.223e-02, -1.115e-02, 3.171e-02, 8.298e-03, 1.801e-02, -3.280e-02, 2.533e-02, 8.254e-03, -8.665e-03, -1.002e-02, 1.963e-02, 3.322e-03), r);\n\tr = MulAdd(s7_1, M4(1.425e-02, 3.507e-02, -4.513e-02, 1.871e-02, 4.639e-01, -2.210e-01, -2.253e-01, 2.526e-02, 5.002e-02, 1.415e-01, -6.515e-02, -2.384e-02, -3.711e-03, 2.317e-02, -2.549e-02, 7.058e-03), r);\n\tr = MulAdd(s7_2, M4(3.407e-02, 1.647e-02, 1.747e-02, -2.392e-02, 4.284e-02, -3.438e-02, -3.217e-02, -3.457e-02, -6.072e-04, -6.325e-03, 4.104e-02, 2.124e-02, 7.593e-03, 4.929e-03, -1.343e-03, 1.344e-03), r);\n\tr = MulAdd(s7_3, M4(-4.416e-02, -2.313e-02, 9.369e-03, 1.215e-03, 4.700e-02, 9.235e-03, 4.517e-03, -1.758e-03, -4.952e-02, 1.684e-02, 3.661e-02, -1.082e-02, 2.024e-02, 4.450e-03, -1.514e-02, -3.430e-03), r);\n\tr = MulAdd(s7_4, M4(5.847e-02, -4.423e-02, -1.759e-01, -1.619e-01, -1.243e-01, -1.296e-02, 1.304e-01, -5.431e-02, 3.184e-02, -6.372e-02, 1.027e-02, 8.180e-02, 2.514e-02, -1.069e-01, 1.008e-01, -1.097e-02), r);\n\tr = MulAdd(s7_5, M4(1.223e-02, 6.869e-02, 5.970e-02, 1.265e-01, -9.771e-03, -8.498e-03, -8.782e-04, 8.668e-02, -2.578e-02, -6.804e-02, -3.425e-02, 1.549e-02, -1.045e-03, 1.012e-01, 1.609e-02, 5.317e-02), r);\n\tr = MulAdd(s7_6, M4(-9.363e-04, -1.286e-03, -2.189e-02, -1.560e-02, -2.089e-03, 5.252e-04, 9.796e-03, 4.041e-04, -2.468e-03, -9.992e-03, -1.344e-02, 1.703e-02, -2.202e-02, -1.400e-02, -9.243e-03, -1.864e-02), r);\n\tr = MulAdd(s7_7, M4(-4.014e-02, -2.973e-02, 1.028e-01, 4.114e-02, 1.664e-03, -3.040e-03, -2.677e-02, -1.250e-02, -2.429e-03, 4.016e-02, -6.270e-03, -5.730e-02, -2.520e-02, 5.750e-02, -8.956e-02, -2.129e-02), r);\n\tr = MulAdd(s7_8, M4(-2.496e-02, -4.739e-03, -1.972e-02, 6.053e-02, -9.747e-03, -3.898e-03, -4.896e-03, -3.456e-04, -1.009e-02, -8.804e-03, -9.338e-05, -1.609e-02, 1.923e-02, -6.568e-02, 2.607e-02, -2.522e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass18(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-16x16C-NVL.hlsl",
    "content": "// CuNNy 16x16C BILINEAR RGB NVL - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-D16N16\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t7;\n\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) (dot(MF3(6.280e-01, 1.208e+00, 2.567e-01), O(INPUT, float2(x, y)).rgb) + MF(-3.744e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 7.451e-03, 5.332e-03, 9.656e-03, -1.242e-02 };\n\tr = mad(V4(-1.822e-02, -1.642e-02, -6.093e-02, -3.689e-02), s0_0, r);\n\tr = mad(V4(-1.147e-02, -2.455e-02, 1.336e-01, 1.564e-02), s0_1, r);\n\tr = mad(V4(4.406e-02, -2.573e-02, -4.749e-02, 1.795e-02), s0_2, r);\n\tr = mad(V4(4.456e-02, -1.651e-02, 3.591e-02, 3.674e-02), s0_3, r);\n\tr = mad(V4(8.599e-04, 5.169e-02, 1.467e-02, -5.650e-02), s0_4, r);\n\tr = mad(V4(-7.104e-02, 9.408e-02, -1.980e-02, 3.932e-03), s0_5, r);\n\tr = mad(V4(-1.400e-02, -3.072e-02, -3.497e-02, 2.479e-02), s0_6, r);\n\tr = mad(V4(1.641e-02, -3.119e-02, 2.443e-02, 1.844e-02), s0_7, r);\n\tr = mad(V4(2.346e-02, 7.281e-03, -2.342e-02, -3.454e-02), s0_8, r);\n\treturn r;\n}\n\nV4 f1(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -6.910e-03, 1.934e-02, -1.482e-02, -5.155e-03 };\n\tr = mad(V4(2.452e-02, -8.793e-04, 2.884e-02, 1.094e-02), s0_0, r);\n\tr = mad(V4(-1.529e-01, 1.290e-03, -2.407e-01, 5.000e-02), s0_1, r);\n\tr = mad(V4(1.185e-01, -4.263e-03, -7.048e-02, -3.493e-04), s0_2, r);\n\tr = mad(V4(5.017e-02, 6.435e-04, -7.056e-02, -9.790e-02), s0_3, r);\n\tr = mad(V4(7.300e-02, -9.583e-03, 2.147e-01, -1.977e-01), s0_4, r);\n\tr = mad(V4(-9.542e-02, 8.440e-03, 6.774e-02, 2.347e-01), s0_5, r);\n\tr = mad(V4(-7.992e-02, 2.175e-01, 4.417e-02, -4.492e-02), s0_6, r);\n\tr = mad(V4(3.449e-02, -2.192e-01, 1.774e-02, 4.249e-02), s0_7, r);\n\tr = mad(V4(2.266e-02, 4.264e-03, 8.381e-03, 7.037e-04), s0_8, r);\n\treturn r;\n}\n\nV4 f2(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -1.078e-02, 4.113e-02, -1.578e-02, 4.495e-03 };\n\tr = mad(V4(-1.788e-02, -3.939e-03, 3.515e-03, 5.372e-02), s0_0, r);\n\tr = mad(V4(9.512e-03, -1.173e-01, 1.768e-02, -1.150e-02), s0_1, r);\n\tr = mad(V4(2.307e-02, 1.062e-01, -1.145e-02, 1.127e-02), s0_2, r);\n\tr = mad(V4(-3.332e-02, -1.779e-02, 7.936e-04, 1.545e-01), s0_3, r);\n\tr = mad(V4(9.399e-02, -2.767e-02, -2.517e-03, -1.732e-01), s0_4, r);\n\tr = mad(V4(-5.877e-02, 4.553e-02, 1.549e-04, -3.632e-02), s0_5, r);\n\tr = mad(V4(3.380e-02, 2.040e-02, 1.815e-02, -1.465e-02), s0_6, r);\n\tr = mad(V4(-8.618e-02, -1.800e-02, -2.228e-02, 7.153e-02), s0_7, r);\n\tr = mad(V4(1.953e-02, 6.456e-03, 3.444e-02, -4.943e-02), s0_8, r);\n\treturn r;\n}\n\nV4 f3(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -2.374e-02, -6.784e-02, -1.047e-02, 6.831e-03 };\n\tr = mad(V4(3.349e-03, -4.958e-02, -5.999e-02, -2.301e-02), s0_0, r);\n\tr = mad(V4(-4.576e-02, -7.846e-02, 1.042e-01, 1.803e-02), s0_1, r);\n\tr = mad(V4(-2.080e-02, 1.088e-02, -3.553e-02, 2.650e-02), s0_2, r);\n\tr = mad(V4(4.505e-02, -1.640e-01, 2.588e-02, 8.898e-02), s0_3, r);\n\tr = mad(V4(-1.618e-02, 2.072e-02, -1.249e-01, -8.836e-02), s0_4, r);\n\tr = mad(V4(6.673e-02, -7.729e-02, 2.106e-01, 4.868e-03), s0_5, r);\n\tr = mad(V4(2.755e-02, 4.993e-02, 1.931e-02, -1.542e-02), s0_6, r);\n\tr = mad(V4(-7.155e-02, 3.289e-02, -1.268e-01, 1.315e-02), s0_7, r);\n\tr = mad(V4(-5.611e-02, -4.307e-02, -2.551e-02, -1.216e-03), s0_8, r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.201e-02, 1.083e-03, -4.431e-02, -2.855e-02 };\n\tr = MulAdd(s0_0, M4(3.405e-02, 1.208e-01, 8.406e-02, 1.417e-02, 3.850e-02, -1.326e-02, 1.209e-01, -1.793e-02, 9.657e-02, 1.077e-01, 7.998e-02, -2.348e-02, 2.585e-01, -1.255e-01, -7.102e-02, -2.930e-01), r);\n\tr = MulAdd(s0_1, M4(-4.104e-02, -1.013e-01, -5.548e-02, -5.558e-02, -7.116e-02, -7.352e-02, 9.299e-02, 1.656e-01, 3.298e-03, -9.411e-02, -1.419e-02, 6.433e-02, 9.729e-02, -5.107e-03, 8.303e-02, -7.063e-02), r);\n\tr = MulAdd(s0_2, M4(2.247e-02, 6.092e-03, 7.178e-02, 5.407e-02, 1.271e-01, -3.168e-02, -1.879e-02, -1.943e-01, -7.868e-02, -7.007e-02, 1.446e-01, -4.654e-03, -5.827e-01, 3.794e-02, -3.417e-01, 2.123e-01), r);\n\tr = MulAdd(s0_3, M4(-3.101e-02, -1.111e-01, -2.802e-02, -1.350e-02, 1.242e-01, 1.283e-03, -2.013e-02, 7.201e-02, -5.530e-02, -4.907e-02, -1.342e-01, -6.673e-02, -9.311e-02, 1.897e-01, 9.046e-02, 2.898e-01), r);\n\tr = MulAdd(s0_4, M4(-1.784e-02, -5.918e-02, 5.845e-02, 8.362e-02, -1.333e-01, -2.641e-01, -3.031e-02, -1.676e-02, 6.354e-02, 8.276e-02, 1.069e-01, 5.125e-02, -4.843e-02, 2.944e-01, 1.044e-01, 2.449e-01), r);\n\tr = MulAdd(s0_5, M4(1.501e-02, 7.449e-02, -8.033e-02, -1.139e-01, 1.853e-02, 1.338e-01, -8.268e-02, -1.636e-01, -6.581e-03, -1.703e-02, -9.384e-03, 7.188e-02, -4.501e-02, -1.583e-01, -2.663e-01, -8.279e-02), r);\n\tr = MulAdd(s0_6, M4(1.077e-02, 5.902e-02, -5.638e-02, 4.160e-02, 1.254e-01, 1.971e-01, -6.279e-02, -4.505e-02, -1.191e-01, -1.344e-01, -3.873e-02, 6.566e-02, -2.099e-01, 1.337e-01, 1.642e-01, -2.878e-01), r);\n\tr = MulAdd(s0_7, M4(-2.701e-02, 1.882e-02, -2.052e-02, 7.546e-02, 2.460e-02, 1.171e-01, 8.827e-03, -2.274e-02, 4.265e-02, 1.404e-01, 7.646e-02, -8.588e-03, 2.457e-01, -1.233e-01, -1.493e-01, 5.879e-02), r);\n\tr = MulAdd(s0_8, M4(-1.900e-03, 5.256e-02, 2.608e-02, -9.680e-02, -5.792e-03, 8.072e-03, 7.046e-02, -1.668e-02, -1.813e-01, 7.429e-02, -1.250e-01, 3.976e-03, 7.827e-02, 7.365e-02, 3.113e-01, -4.493e-01), r);\n\tr = MulAdd(s1_0, M4(-2.589e-01, -2.860e-02, 3.458e-02, 1.518e-01, -8.472e-02, -2.572e-02, 1.100e-02, 2.920e-01, -4.118e-02, -8.286e-02, 1.441e-02, 3.005e-01, -2.189e-02, 3.752e-03, 6.699e-02, 2.245e-02), r);\n\tr = MulAdd(s1_1, M4(-1.753e-02, 1.462e-01, -1.202e-01, 3.685e-02, 6.990e-02, -6.744e-02, 1.121e-01, -2.440e-01, -9.690e-02, 5.161e-02, 6.374e-02, -2.208e-01, 6.330e-02, -2.542e-02, -1.029e-01, -5.961e-03), r);\n\tr = MulAdd(s1_2, M4(-8.907e-03, 7.720e-02, 2.137e-01, -1.415e-01, -2.575e-01, -1.161e-01, -2.410e-02, 1.523e-01, -2.136e-02, -1.143e-01, 6.256e-02, -2.706e-01, 6.094e-02, 1.216e-01, 7.402e-03, 2.078e-02), r);\n\tr = MulAdd(s1_3, M4(-1.839e-01, 2.521e-02, -6.316e-02, -4.873e-04, -1.836e-01, 1.820e-01, -3.747e-03, -2.238e-02, -2.794e-02, -1.929e-01, 9.416e-03, 1.670e-01, 7.294e-02, -4.497e-02, 3.260e-02, -8.590e-02), r);\n\tr = MulAdd(s1_4, M4(1.612e-01, 2.591e-01, -1.860e-01, 5.530e-01, -1.690e-02, 2.011e-02, -6.756e-02, -4.013e-02, 2.219e-01, 9.343e-02, -6.113e-02, -2.694e-01, -5.443e-02, 4.693e-02, -1.964e-03, -6.205e-02), r);\n\tr = MulAdd(s1_5, M4(-9.952e-02, -4.111e-01, 2.484e-01, 2.142e-01, 3.349e-02, -8.974e-02, 9.233e-03, 1.371e-01, 9.616e-02, -2.994e-01, -3.412e-02, -2.624e-01, -2.777e-02, 5.845e-02, -4.256e-02, 5.163e-03), r);\n\tr = MulAdd(s1_6, M4(-2.489e-01, 3.013e-01, -1.623e-01, 4.737e-02, -2.570e-01, -3.679e-01, 8.586e-02, -8.836e-02, 1.821e-01, -1.438e-01, -3.181e-02, 1.531e-01, -4.456e-02, 6.053e-02, -4.692e-03, 1.889e-01), r);\n\tr = MulAdd(s1_7, M4(5.682e-02, 7.344e-02, 5.417e-02, 2.450e-01, 4.026e-03, -1.124e-01, 5.952e-02, 1.936e-01, 3.018e-01, -1.236e-02, 3.948e-02, -5.773e-02, -4.648e-02, -5.322e-02, -5.548e-03, -7.449e-02), r);\n\tr = MulAdd(s1_8, M4(4.563e-02, 4.610e-02, 4.906e-02, -3.220e-01, 2.408e-02, 6.485e-02, -5.831e-03, -6.206e-02, 1.508e-01, 1.450e-01, -2.797e-02, -3.810e-01, -1.370e-02, -1.935e-01, 5.435e-02, 5.075e-02), r);\n\tr = MulAdd(s2_0, M4(-3.448e-02, -6.980e-02, 5.779e-02, 6.469e-02, 3.711e-02, -3.232e-02, -7.098e-02, -3.179e-03, -8.000e-03, 2.579e-02, -2.380e-02, 3.991e-02, -1.541e-02, 9.551e-02, 1.269e-01, 1.477e-01), r);\n\tr = MulAdd(s2_1, M4(-6.560e-02, 1.108e-02, 9.036e-02, 2.225e-02, 2.757e-02, 2.216e-01, 4.036e-02, -4.563e-02, -7.943e-02, 3.388e-02, -2.570e-02, 1.062e-02, -1.880e-01, 2.051e-01, 1.599e-02, 9.407e-02), r);\n\tr = MulAdd(s2_2, M4(-6.447e-02, 2.987e-02, 7.575e-02, -2.814e-03, -2.009e-01, 7.443e-02, 5.020e-02, 1.241e-02, -1.464e-02, -2.127e-02, -1.959e-02, -9.106e-02, -1.876e-02, 6.003e-02, -1.087e-01, 4.157e-03), r);\n\tr = MulAdd(s2_3, M4(1.373e-01, 8.434e-02, -7.087e-02, -2.916e-02, 9.784e-02, -1.666e-01, 4.713e-02, 2.128e-02, -7.791e-02, 1.843e-01, 1.793e-02, -6.299e-03, 5.664e-02, -1.375e-02, -5.741e-02, 5.340e-03), r);\n\tr = MulAdd(s2_4, M4(-1.958e-01, 1.879e-01, 3.784e-02, -1.695e-01, 1.220e-01, 1.435e-02, 6.042e-02, 6.976e-02, -4.420e-02, -2.048e-01, 1.407e-01, 8.324e-02, 9.824e-02, -4.772e-03, 3.171e-02, -9.108e-02), r);\n\tr = MulAdd(s2_5, M4(1.473e-01, 4.592e-04, -3.968e-01, -3.998e-02, 5.250e-02, -1.122e-02, 4.195e-03, -6.805e-02, -7.127e-02, -7.509e-02, -5.716e-02, -9.791e-02, 1.336e-01, 1.031e-01, 1.315e-01, 7.645e-02), r);\n\tr = MulAdd(s2_6, M4(1.184e-01, 1.619e-01, 4.172e-02, -8.332e-02, -7.003e-02, 9.098e-03, -1.272e-02, 6.432e-02, -7.801e-02, -7.251e-02, 4.113e-02, 5.624e-02, 1.280e-03, -8.267e-02, -5.059e-03, -8.324e-02), r);\n\tr = MulAdd(s2_7, M4(3.987e-02, 8.653e-02, -1.324e-01, 3.768e-02, 1.034e-02, -7.325e-02, -2.599e-02, 6.754e-02, -2.531e-02, 5.051e-02, 6.231e-02, -2.843e-02, -9.684e-02, 3.120e-02, 2.869e-02, -1.306e-01), r);\n\tr = MulAdd(s2_8, M4(1.452e-01, 2.250e-02, -3.331e-02, -2.652e-01, -7.785e-02, 7.697e-02, 5.306e-02, -1.206e-02, 2.950e-02, -1.129e-02, -1.240e-02, 8.520e-02, -1.194e-01, -5.583e-03, 1.318e-01, 4.145e-02), r);\n\tr = MulAdd(s3_0, M4(2.435e-01, 2.473e-02, -3.799e-03, 5.391e-02, -7.654e-02, 1.633e-02, 2.528e-03, 2.085e-03, -7.200e-02, -1.247e-01, 9.995e-02, 1.192e-01, 4.968e-02, -3.659e-02, 7.987e-02, -1.196e-01), r);\n\tr = MulAdd(s3_1, M4(1.970e-02, -9.596e-02, 2.596e-02, 9.929e-02, -9.603e-02, 7.357e-02, 3.207e-02, -1.129e-01, 1.304e-01, 3.305e-02, -3.747e-02, -1.177e-02, -8.392e-02, -1.410e-02, -1.620e-01, 4.514e-02), r);\n\tr = MulAdd(s3_2, M4(1.392e-02, -1.797e-01, -6.554e-02, -6.099e-02, -2.959e-01, 1.745e-01, 1.944e-01, -2.134e-01, 2.435e-02, -5.074e-02, 5.244e-02, -2.474e-02, -5.085e-02, -9.063e-02, -1.671e-01, -1.548e-02), r);\n\tr = MulAdd(s3_3, M4(8.034e-02, 1.214e-01, 5.679e-02, -1.209e-01, 1.102e-01, -1.500e-03, 7.307e-02, -2.826e-02, 6.892e-02, 9.349e-02, -2.101e-02, 1.285e-01, 8.814e-02, -2.099e-02, -1.133e-01, 1.462e-02), r);\n\tr = MulAdd(s3_4, M4(1.852e-02, -1.295e-01, -3.895e-03, 6.403e-02, -9.664e-02, -7.860e-02, 1.175e-01, -2.920e-01, 1.508e-01, -2.417e-01, -2.569e-01, -2.920e-02, -1.046e-01, 9.367e-02, -2.173e-01, 2.044e-01), r);\n\tr = MulAdd(s3_5, M4(-8.709e-02, -3.534e-02, -9.278e-02, 3.574e-02, 3.987e-02, -8.859e-02, 1.562e-02, -2.034e-01, 1.528e-01, -3.803e-02, -2.427e-01, -5.409e-02, -3.348e-03, 7.453e-02, 6.794e-02, 3.836e-02), r);\n\tr = MulAdd(s3_6, M4(1.220e-02, 2.105e-01, 4.535e-02, 6.563e-02, 6.836e-02, 5.600e-02, 1.560e-02, -6.164e-02, -1.412e-01, -1.103e-01, -8.076e-02, -6.528e-02, 9.211e-02, 1.990e-01, -5.119e-02, -8.996e-02), r);\n\tr = MulAdd(s3_7, M4(-1.457e-01, -1.085e-01, 1.784e-02, -2.185e-03, 4.281e-02, 5.354e-02, -1.300e-02, -1.125e-01, 7.293e-02, 3.576e-02, -1.282e-01, -5.457e-02, -1.048e-02, 7.982e-02, 6.479e-02, -6.245e-02), r);\n\tr = MulAdd(s3_8, M4(3.417e-02, 9.233e-02, 8.488e-02, 2.901e-02, -9.098e-02, 1.505e-01, 3.521e-02, -4.778e-02, 1.625e-01, -1.207e-01, 4.013e-02, 5.975e-02, -1.180e-02, -3.180e-03, 1.255e-01, -6.819e-03), r);\n\tr = MulAdd(s4_0, M4(1.537e-01, 2.518e-01, 1.641e-01, -4.800e-01, -8.067e-02, -4.263e-02, -1.103e-02, 5.467e-03, -1.560e-01, 1.149e-01, -1.443e-02, 2.685e-02, 4.818e-03, -6.548e-02, -2.986e-02, -9.109e-02), r);\n\tr = MulAdd(s4_1, M4(-2.142e-01, 2.512e-02, 1.720e-01, -1.679e-01, 8.108e-02, 6.832e-02, 9.115e-02, -2.173e-03, 1.329e-01, -3.490e-02, -5.578e-02, 1.104e-01, -4.784e-02, -3.582e-02, -9.612e-02, -6.821e-02), r);\n\tr = MulAdd(s4_2, M4(-4.783e-02, 3.973e-01, 1.161e-01, 1.626e-01, -2.491e-02, 1.686e-02, -3.443e-02, -1.059e-01, 5.977e-02, -6.490e-02, -6.506e-02, -4.471e-02, -2.849e-02, -7.122e-03, 1.789e-02, 1.267e-01), r);\n\tr = MulAdd(s4_3, M4(2.408e-01, -8.330e-02, -8.275e-02, -6.422e-02, 9.443e-02, -1.883e-01, -2.351e-02, 2.905e-02, 1.478e-02, 6.625e-03, 1.380e-01, 1.312e-01, -9.895e-02, -1.294e-01, -1.465e-02, -2.186e-01), r);\n\tr = MulAdd(s4_4, M4(6.419e-01, -3.723e-01, -2.565e-01, -4.735e-01, -3.051e-02, -1.246e-01, 3.242e-02, 2.361e-02, -4.670e-02, 4.870e-02, 8.938e-02, -7.246e-02, 8.033e-02, 1.626e-01, 4.382e-02, -3.981e-02), r);\n\tr = MulAdd(s4_5, M4(4.743e-01, 1.601e-02, 1.143e-01, 1.107e-01, -8.403e-02, -2.654e-02, 3.615e-02, -3.300e-02, 1.836e-02, -6.122e-02, -3.072e-02, 1.730e-02, -2.944e-01, -8.219e-02, 1.862e-01, -1.063e-01), r);\n\tr = MulAdd(s4_6, M4(-1.115e-02, 4.246e-01, -5.974e-03, -1.735e-02, 5.712e-02, 3.389e-01, 3.325e-02, 9.249e-02, -3.867e-02, -1.899e-01, -1.033e-01, -7.591e-02, -8.186e-02, 1.306e-01, -3.340e-02, -9.847e-03), r);\n\tr = MulAdd(s4_7, M4(4.828e-01, 2.198e-01, -2.150e-01, 6.362e-03, -1.232e-01, 1.776e-01, -5.929e-02, -4.373e-03, -5.813e-03, 1.354e-02, 3.540e-03, 4.267e-02, 1.379e-03, 9.057e-02, 2.345e-02, -2.193e-02), r);\n\tr = MulAdd(s4_8, M4(-8.730e-02, 3.307e-01, -3.251e-02, -2.900e-01, 7.154e-02, 3.098e-02, 1.980e-02, -4.968e-02, 1.170e-02, 1.528e-01, 2.639e-02, -9.142e-02, 1.829e-02, -5.244e-02, 9.641e-03, -5.492e-02), r);\n\tr = MulAdd(s5_0, M4(6.116e-02, 8.943e-02, -5.531e-02, -2.696e-02, -1.376e-01, 1.998e-01, 5.097e-02, 6.659e-03, 5.555e-02, 6.673e-02, 8.981e-02, 8.069e-02, 1.494e-01, -3.698e-02, -1.053e-01, -8.436e-02), r);\n\tr = MulAdd(s5_1, M4(-4.488e-02, 7.922e-02, 1.704e-02, 4.343e-02, 3.390e-02, -6.945e-02, 4.841e-02, 1.197e-01, 6.671e-02, -2.253e-02, 1.270e-02, -3.095e-01, 2.412e-01, -5.589e-02, -8.286e-02, 3.333e-02), r);\n\tr = MulAdd(s5_2, M4(-4.554e-02, -1.439e-02, 7.602e-02, -3.426e-02, -1.577e-01, 7.685e-02, 6.846e-02, 5.846e-02, -1.920e-01, -1.635e-01, -1.462e-01, 1.753e-01, -6.704e-02, 1.433e-01, 1.133e-02, -2.406e-02), r);\n\tr = MulAdd(s5_3, M4(-1.738e-03, -8.318e-02, 2.537e-03, -1.054e-02, -1.916e-01, -2.127e-01, 4.746e-02, 7.098e-03, 2.601e-02, -8.985e-02, -7.906e-03, 3.103e-01, 7.611e-02, -5.874e-02, 3.964e-02, 6.860e-02), r);\n\tr = MulAdd(s5_4, M4(-1.138e-01, -1.847e-01, -1.228e-02, -1.407e-01, -1.218e-01, 1.584e-01, 3.814e-02, 2.447e-01, 4.855e-02, 8.447e-03, 9.850e-02, -3.130e-02, 1.525e-01, 2.940e-01, 7.898e-02, 1.821e-01), r);\n\tr = MulAdd(s5_5, M4(3.111e-02, -5.260e-02, -6.819e-02, 5.936e-03, 1.700e-01, 9.746e-02, 1.690e-02, 4.625e-02, -2.485e-02, 7.180e-02, 5.899e-02, -3.583e-02, 6.990e-02, 8.228e-02, 4.081e-02, 2.349e-02), r);\n\tr = MulAdd(s5_6, M4(3.099e-02, 8.576e-02, -3.833e-03, 2.430e-03, 1.976e-01, 2.695e-01, 9.600e-02, 2.032e-01, 2.092e-01, -8.031e-02, -1.265e-01, 1.841e-02, 6.259e-02, 8.119e-02, 1.225e-02, 5.224e-02), r);\n\tr = MulAdd(s5_7, M4(-8.051e-02, -2.677e-02, -2.939e-02, 4.138e-02, -1.644e-01, -1.498e-01, 1.202e-01, 7.046e-02, -6.764e-02, -1.100e-01, 3.688e-02, -2.193e-01, 9.462e-02, -1.360e-01, 2.253e-02, -5.379e-02), r);\n\tr = MulAdd(s5_8, M4(5.739e-03, -2.755e-02, -2.324e-02, 1.058e-01, -7.982e-02, -1.026e-01, 2.569e-01, -1.335e-01, -1.647e-01, 9.644e-02, 9.909e-02, -1.077e-01, 3.698e-02, 6.935e-03, 5.650e-03, 6.725e-02), r);\n\tr = MulAdd(s6_0, M4(4.240e-01, -2.918e-01, -3.133e-02, 2.327e-01, -2.695e-01, 1.043e-01, -2.850e-01, 3.208e-01, 2.258e-01, -2.135e-01, -1.859e-01, 7.547e-03, 9.245e-02, -5.596e-03, 9.937e-02, 2.943e-02), r);\n\tr = MulAdd(s6_1, M4(2.101e-01, -3.744e-01, 1.696e-01, -1.703e-02, -9.047e-02, -1.152e-01, -1.393e-01, 3.266e-01, 7.654e-02, 2.414e-01, 3.308e-02, 3.706e-03, -1.490e-01, 4.122e-02, -5.556e-02, 1.216e-01), r);\n\tr = MulAdd(s6_2, M4(5.715e-02, -2.730e-01, -3.063e-01, 2.882e-01, -3.335e-01, -2.502e-01, -6.934e-02, 6.301e-01, 5.091e-02, -6.457e-02, 8.581e-02, -1.191e-01, 9.755e-03, -8.909e-02, 2.613e-02, -9.604e-02), r);\n\tr = MulAdd(s6_3, M4(5.395e-01, -1.115e-01, 1.102e-01, 1.496e-01, 1.512e-01, 1.230e-01, 1.636e-01, -5.026e-01, -1.340e-01, -7.226e-02, -2.846e-01, 8.937e-02, -4.186e-02, -9.760e-02, -4.782e-02, 8.662e-02), r);\n\tr = MulAdd(s6_4, M4(5.268e-01, -5.914e-02, 3.737e-01, 1.957e-01, -5.624e-01, -4.037e-03, 1.324e-01, -1.029e-01, 1.476e-01, -8.394e-03, -1.478e-01, 3.448e-02, 2.002e-02, 6.459e-02, 2.170e-02, 9.597e-03), r);\n\tr = MulAdd(s6_5, M4(4.312e-01, -1.827e-01, 3.503e-01, -1.471e-02, 2.903e-01, -6.051e-02, 4.530e-02, 1.642e-01, 1.965e-01, -9.838e-02, -2.136e-01, -2.281e-02, 4.991e-02, -5.003e-02, 9.837e-03, 2.202e-02), r);\n\tr = MulAdd(s6_6, M4(-2.240e-02, -4.757e-01, 2.564e-02, 1.577e-01, 3.382e-01, -7.741e-02, -2.645e-01, -1.375e-01, -2.008e-01, 8.069e-03, -2.638e-02, 5.265e-02, 2.141e-02, 3.570e-02, 4.337e-03, 5.465e-02), r);\n\tr = MulAdd(s6_7, M4(1.627e-01, -2.946e-01, 3.193e-01, 2.728e-02, -7.392e-02, -3.848e-01, 1.789e-01, 1.881e-01, 1.077e-01, -4.805e-02, 1.793e-02, -6.635e-02, 7.963e-02, 5.029e-02, -4.372e-02, 1.278e-02), r);\n\tr = MulAdd(s6_8, M4(3.372e-01, -1.486e-01, -9.936e-02, 2.261e-01, -5.973e-02, -8.111e-02, -8.219e-02, -1.498e-01, 1.329e-02, -2.499e-02, -1.245e-01, -3.871e-02, -1.800e-02, 6.380e-03, 1.756e-02, -1.356e-01), r);\n\tr = MulAdd(s7_0, M4(9.764e-02, -7.088e-02, 3.507e-02, -4.570e-02, 1.675e-01, 1.448e-02, -2.842e-02, -1.203e-01, 6.582e-02, -3.174e-03, -1.471e-02, 1.304e-01, -1.061e-01, 1.586e-01, 1.244e-01, 2.246e-01), r);\n\tr = MulAdd(s7_1, M4(1.038e-01, -1.092e-02, -9.483e-02, -1.292e-02, 5.143e-02, 2.371e-02, -1.147e-01, 8.272e-02, 2.127e-02, -1.111e-02, 1.006e-02, 4.855e-02, 2.508e-01, -2.958e-01, -1.424e-01, -3.592e-02), r);\n\tr = MulAdd(s7_2, M4(-7.218e-04, 1.665e-01, 2.076e-02, 1.902e-02, -1.085e-02, 7.997e-04, -5.125e-02, 1.165e-01, 1.279e-02, -7.016e-03, 1.398e-01, 4.262e-02, -1.469e-01, 3.665e-01, 2.113e-01, -2.286e-01), r);\n\tr = MulAdd(s7_3, M4(-2.811e-02, -1.652e-02, -4.187e-02, -5.403e-02, 1.064e-01, 1.429e-02, 2.725e-02, -6.861e-02, 1.013e-01, 6.601e-03, 2.723e-02, -8.197e-02, -2.954e-01, -6.184e-02, 6.907e-02, -3.243e-01), r);\n\tr = MulAdd(s7_4, M4(-2.777e-02, 6.185e-02, -5.263e-02, 2.158e-02, -6.411e-02, 1.157e-01, 4.594e-02, -6.461e-02, -4.041e-02, 6.406e-02, 1.326e-01, -9.146e-02, 3.969e-02, 1.986e-01, 1.955e-01, 1.678e-01), r);\n\tr = MulAdd(s7_5, M4(-1.103e-01, 3.382e-03, -3.581e-02, 4.331e-02, -8.628e-02, 5.449e-02, 1.768e-02, 1.167e-01, -7.616e-02, 1.801e-03, -1.890e-01, 1.538e-01, 1.400e-01, 2.025e-02, -9.030e-02, -1.654e-01), r);\n\tr = MulAdd(s7_6, M4(-4.734e-02, -1.122e-02, -7.030e-02, -3.296e-02, -4.429e-02, -1.066e-02, 5.152e-02, -4.982e-02, 7.570e-02, -6.662e-02, -2.449e-02, 4.657e-02, 3.968e-02, 1.738e-01, -6.707e-02, 8.950e-02), r);\n\tr = MulAdd(s7_7, M4(2.593e-02, -8.762e-02, 2.691e-02, 2.567e-02, -2.261e-02, -8.078e-02, 2.215e-02, -1.150e-01, 4.263e-02, 3.631e-02, 2.093e-01, -1.596e-01, -2.217e-01, -5.036e-02, 3.256e-01, -4.437e-01), r);\n\tr = MulAdd(s7_8, M4(9.507e-02, -1.750e-01, 5.547e-02, 2.569e-02, -6.372e-02, -6.292e-02, 1.046e-01, 4.929e-02, -1.081e-01, -5.278e-02, -1.532e-01, 9.554e-02, 1.158e-01, -2.101e-01, 9.519e-02, 9.693e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.302e-03, 5.607e-03, 2.301e-01, -2.287e-02 };\n\tr = MulAdd(s0_0, M4(4.593e-02, 6.965e-02, -5.918e-03, 3.008e-02, 4.446e-02, -6.509e-02, 6.633e-02, -1.259e-01, 1.482e-01, 4.613e-02, -7.350e-03, 3.255e-02, 1.542e-01, -1.126e-01, 1.986e-01, -1.911e-01), r);\n\tr = MulAdd(s0_1, M4(-8.134e-02, -8.285e-02, -2.539e-03, -4.290e-02, -6.715e-02, 1.421e-02, -1.284e-02, -1.869e-02, -1.153e-01, -8.007e-02, -3.951e-02, -1.923e-01, 2.231e-01, 1.209e-03, -1.015e-01, -1.954e-01), r);\n\tr = MulAdd(s0_2, M4(-1.721e-02, 1.054e-01, -2.497e-02, -1.724e-02, -2.214e-02, -1.559e-02, -1.890e-02, -3.045e-02, 6.823e-03, -5.394e-02, -9.170e-03, -3.634e-02, 3.752e-02, 1.746e-01, 1.125e-01, 8.602e-03), r);\n\tr = MulAdd(s0_3, M4(-5.703e-02, -9.171e-02, 1.361e-02, -3.684e-02, -4.692e-02, 3.388e-02, -1.831e-02, 1.106e-01, -1.198e-01, 1.311e-02, 3.582e-02, 3.354e-03, -2.226e-01, 6.446e-02, -1.017e-02, 2.029e-01), r);\n\tr = MulAdd(s0_4, M4(-6.122e-02, 1.638e-02, 2.959e-02, 7.356e-02, 3.443e-02, 2.426e-02, 1.646e-02, 6.604e-02, -1.895e-02, -1.110e-02, -3.352e-02, 8.554e-02, -1.042e-01, -1.617e-01, -9.264e-02, 8.956e-02), r);\n\tr = MulAdd(s0_5, M4(1.202e-01, -8.740e-02, -5.419e-02, 2.845e-02, 6.640e-02, -1.831e-02, -9.561e-02, 2.954e-02, -5.409e-02, -1.691e-02, 4.133e-02, 6.700e-02, 1.537e-01, -2.451e-02, 2.398e-01, 4.803e-02), r);\n\tr = MulAdd(s0_6, M4(1.267e-01, -2.486e-02, 1.156e-02, -1.058e-01, 1.161e-01, 1.732e-03, 1.920e-02, -7.541e-02, 9.098e-02, 5.822e-02, -6.071e-03, -2.099e-02, -2.110e-01, 1.116e-01, 3.081e-02, -9.744e-02), r);\n\tr = MulAdd(s0_7, M4(5.810e-02, 9.912e-02, -3.762e-02, 5.625e-02, 4.588e-02, 6.554e-02, -4.150e-02, 1.172e-01, -6.263e-02, -5.435e-02, 1.023e-01, -2.423e-02, -7.424e-02, -1.023e-01, 1.303e-01, 1.908e-01), r);\n\tr = MulAdd(s0_8, M4(3.099e-03, 2.677e-02, 7.748e-02, 3.166e-03, -1.029e-01, 5.916e-02, 1.292e-01, -4.601e-02, 1.430e-01, -3.183e-02, -2.547e-02, 4.187e-02, -1.713e-01, -1.143e-01, -7.347e-02, -3.159e-01), r);\n\tr = MulAdd(s1_0, M4(3.408e-01, -2.309e-01, -1.278e-02, -2.090e-01, -1.190e-01, 5.742e-02, 2.033e-03, -8.545e-02, -7.710e-02, -2.276e-01, -3.857e-02, 1.980e-01, 3.238e-02, -9.525e-02, -2.383e-02, 7.602e-02), r);\n\tr = MulAdd(s1_1, M4(1.939e-01, -1.004e-02, 8.190e-02, 1.505e-01, 1.839e-01, 3.155e-03, -3.659e-02, 1.297e-01, 5.044e-02, -1.145e-01, -7.815e-03, 1.335e-01, -9.720e-03, 2.058e-02, -1.485e-02, 1.543e-02), r);\n\tr = MulAdd(s1_2, M4(8.855e-02, 2.239e-03, -4.702e-02, -3.631e-01, -7.713e-02, -6.766e-03, 2.233e-03, 9.525e-03, 1.930e-02, -1.823e-01, 1.342e-01, -6.774e-03, 1.559e-02, 6.537e-02, -1.795e-02, -4.694e-02), r);\n\tr = MulAdd(s1_3, M4(-4.576e-02, -6.144e-02, -6.138e-02, 1.686e-01, -2.395e-02, 9.951e-02, 7.405e-02, 3.068e-02, -1.074e-01, -4.246e-02, -2.766e-01, -1.405e-01, -9.167e-02, 1.779e-02, 5.818e-02, -5.015e-02), r);\n\tr = MulAdd(s1_4, M4(-4.979e-01, -9.989e-03, 1.713e-01, -1.294e-01, -7.555e-02, -2.530e-02, -1.001e-01, 1.538e-01, -3.042e-02, 1.180e-01, 1.838e-02, 4.506e-02, 4.005e-02, -9.967e-03, -4.310e-02, -8.393e-02), r);\n\tr = MulAdd(s1_5, M4(-2.830e-02, -3.461e-01, 1.282e-01, 3.577e-02, -1.393e-02, 1.394e-02, -1.023e-01, -1.135e-02, 1.627e-01, -3.099e-03, -2.302e-01, 1.441e-01, -3.462e-02, 6.403e-02, 5.452e-02, 1.090e-01), r);\n\tr = MulAdd(s1_6, M4(-1.832e-01, 7.516e-03, 1.466e-02, 3.691e-01, -1.559e-01, -4.819e-02, 7.241e-03, 9.579e-02, -2.765e-01, -1.187e-01, -2.102e-01, -5.277e-02, 1.527e-01, 8.032e-02, 4.021e-02, -6.910e-04), r);\n\tr = MulAdd(s1_7, M4(-2.208e-01, -1.051e-01, -2.252e-01, 9.503e-02, 1.986e-01, -2.264e-01, 1.020e-01, 2.529e-02, 1.254e-02, -1.091e-02, 1.148e-01, -1.693e-01, -6.387e-02, -3.649e-02, -2.184e-02, -5.988e-02), r);\n\tr = MulAdd(s1_8, M4(-1.843e-01, 1.650e-02, 4.734e-02, -2.337e-01, -4.757e-02, -1.540e-01, 8.401e-02, -3.806e-02, -1.397e-01, -9.808e-02, -1.770e-03, -9.557e-02, -2.257e-02, -4.093e-02, -6.275e-02, 3.909e-02), r);\n\tr = MulAdd(s2_0, M4(2.269e-01, 4.167e-02, -2.057e-01, 1.879e-01, -1.647e-01, 4.798e-03, -4.511e-02, 3.278e-02, -3.302e-02, -1.713e-02, -4.034e-02, -8.332e-02, -1.108e-02, -4.393e-02, -1.385e-01, -1.401e-01), r);\n\tr = MulAdd(s2_1, M4(1.445e-01, 2.818e-02, -1.505e-01, 1.646e-02, 2.380e-02, 4.553e-02, 1.564e-01, 6.671e-02, 3.429e-02, 1.754e-02, -5.880e-02, 6.240e-02, -2.534e-01, 3.632e-01, 7.507e-02, 9.621e-02), r);\n\tr = MulAdd(s2_2, M4(-1.752e-01, -2.406e-02, -8.135e-02, -7.007e-02, 3.708e-02, -1.097e-01, -2.867e-02, 6.910e-02, -1.798e-01, -2.029e-02, 3.509e-02, -5.026e-02, -1.245e-01, -2.131e-03, -3.901e-02, 2.729e-02), r);\n\tr = MulAdd(s2_3, M4(6.957e-02, 5.150e-02, -9.893e-02, -3.423e-02, 1.625e-02, 1.428e-02, 4.128e-03, 2.378e-02, 6.833e-02, 7.371e-02, -4.309e-02, 2.038e-01, -5.441e-02, -1.090e-01, -5.788e-02, 6.229e-02), r);\n\tr = MulAdd(s2_4, M4(-2.013e-01, 5.460e-03, -5.024e-02, -4.798e-02, 3.047e-02, -1.250e-01, -2.914e-02, -2.341e-02, 8.051e-02, -1.409e-01, 1.108e-02, -2.132e-01, 1.834e-01, 3.419e-01, -1.062e-02, -5.360e-02), r);\n\tr = MulAdd(s2_5, M4(1.434e-01, -1.899e-02, 2.671e-02, -7.373e-02, 7.201e-02, -1.086e-01, -3.585e-02, 1.098e-01, -2.883e-03, 6.731e-02, 1.686e-02, -4.630e-02, -6.464e-02, -1.193e-01, 7.557e-02, 1.030e-02), r);\n\tr = MulAdd(s2_6, M4(5.960e-03, 1.333e-01, 2.685e-01, 5.152e-02, -1.077e-01, -5.213e-03, -3.739e-02, 1.658e-02, -1.064e-01, 1.801e-01, -6.249e-02, 2.196e-02, -4.823e-02, 2.505e-03, -3.396e-02, 6.965e-02), r);\n\tr = MulAdd(s2_7, M4(3.899e-02, 1.850e-01, -1.271e-01, -9.524e-02, -1.084e-02, -1.428e-02, 8.129e-03, -1.078e-02, -9.281e-02, 1.151e-02, -1.851e-02, 4.171e-02, 6.663e-02, 1.382e-01, 4.955e-02, -9.132e-02), r);\n\tr = MulAdd(s2_8, M4(-3.082e-02, -8.253e-02, -3.504e-02, 8.185e-02, -1.313e-02, 2.212e-02, 2.972e-02, 5.000e-02, -1.166e-01, -5.651e-02, -5.432e-02, 4.694e-02, -1.099e-01, 2.039e-02, 2.069e-02, -4.557e-03), r);\n\tr = MulAdd(s3_0, M4(-1.585e-02, 1.466e-02, -4.267e-02, -5.614e-02, 1.164e-01, -6.371e-02, -9.176e-02, 7.206e-02, -1.356e-02, 4.092e-02, -5.365e-02, -1.641e-03, 4.063e-02, -6.379e-02, 2.210e-02, 1.436e-03), r);\n\tr = MulAdd(s3_1, M4(6.984e-02, -5.214e-02, -4.253e-02, -1.445e-02, 4.849e-02, 8.436e-02, 3.124e-01, -4.697e-01, 1.115e-01, -6.359e-02, -1.039e-01, 7.934e-02, -5.735e-02, -1.229e-01, 9.510e-02, 6.278e-02), r);\n\tr = MulAdd(s3_2, M4(1.688e-02, -1.271e-01, -4.236e-03, -6.955e-03, 2.137e-01, 1.715e-01, -1.716e-01, -1.164e-01, 5.225e-02, -3.736e-02, 8.417e-02, -1.413e-02, -2.981e-02, 6.164e-03, -5.309e-02, -7.856e-03), r);\n\tr = MulAdd(s3_3, M4(1.087e-01, -1.362e-01, 4.361e-02, -9.546e-02, 3.759e-02, -2.007e-02, 1.285e-02, 3.452e-02, 5.193e-03, 9.202e-02, 4.827e-02, 8.008e-02, 3.363e-02, 1.744e-02, 3.567e-02, -9.209e-02), r);\n\tr = MulAdd(s3_4, M4(-1.720e-01, 2.331e-01, 3.583e-02, 1.114e-01, 1.937e-02, 1.706e-01, 9.833e-02, 9.969e-05, -1.900e-01, 8.046e-02, 9.143e-02, -1.431e-01, 1.450e-01, -1.233e-01, 7.880e-02, -3.435e-01), r);\n\tr = MulAdd(s3_5, M4(-1.042e-01, 2.382e-02, -2.653e-02, 1.030e-01, 1.121e-01, 9.533e-02, 1.601e-01, -1.002e-01, 1.912e-01, -6.912e-02, -4.182e-02, -7.941e-03, 1.306e-01, 5.380e-02, 6.607e-02, -1.478e-01), r);\n\tr = MulAdd(s3_6, M4(-4.080e-02, 4.066e-02, 1.245e-01, 1.445e-02, 7.831e-03, -4.103e-02, 4.853e-02, 2.722e-02, 4.773e-02, 7.711e-02, 5.442e-02, 1.356e-02, 1.513e-02, -1.077e-01, -1.314e-01, 1.031e-01), r);\n\tr = MulAdd(s3_7, M4(8.426e-03, 9.401e-02, 2.827e-04, -7.014e-03, -1.776e-02, 2.451e-03, -3.457e-02, -3.021e-02, 1.775e-01, 1.547e-01, -4.098e-02, 8.217e-02, -6.828e-02, -1.023e-01, -1.618e-01, 1.609e-01), r);\n\tr = MulAdd(s3_8, M4(-3.647e-02, -7.072e-02, -2.245e-02, 3.874e-02, 1.091e-01, 5.723e-02, 8.320e-02, -5.249e-02, -1.304e-01, -9.974e-03, 5.121e-03, -2.301e-02, 4.467e-02, 1.580e-02, 1.349e-02, -3.634e-02), r);\n\tr = MulAdd(s4_0, M4(2.720e-01, 5.417e-02, 6.718e-03, 1.218e-01, -3.485e-02, 4.959e-02, 3.606e-02, 1.036e-01, -2.731e-02, 2.062e-01, -5.221e-02, 1.929e-02, -1.417e-02, -6.537e-02, -7.646e-02, 8.719e-02), r);\n\tr = MulAdd(s4_1, M4(-1.510e-01, 1.426e-01, -2.365e-02, 1.612e-01, 6.854e-02, 8.572e-02, -2.559e-03, -2.420e-03, -7.717e-02, -6.347e-02, -2.160e-02, -4.633e-03, -9.307e-02, 1.950e-01, -9.713e-02, -5.982e-02), r);\n\tr = MulAdd(s4_2, M4(-6.662e-02, -2.942e-01, -1.199e-01, -1.262e-01, -6.380e-02, -6.602e-02, -6.361e-02, 7.754e-02, 2.637e-02, 2.350e-02, -1.359e-02, 7.084e-03, -1.043e-04, -6.505e-02, -2.926e-02, -6.666e-02), r);\n\tr = MulAdd(s4_3, M4(3.742e-02, -8.908e-02, 5.752e-02, -1.911e-01, -8.525e-02, -4.037e-02, 1.399e-01, -1.822e-01, 7.731e-02, -1.682e-01, 1.426e-01, -1.243e-02, 6.935e-02, -1.187e-01, 7.949e-02, -1.088e-01), r);\n\tr = MulAdd(s4_4, M4(-6.495e-02, -3.361e-01, -5.254e-01, -1.997e-01, 5.195e-02, 7.322e-03, -8.742e-02, 7.757e-02, -6.494e-02, -4.323e-02, -6.081e-02, 3.559e-02, 1.329e-01, 6.854e-02, 1.363e-02, 2.562e-02), r);\n\tr = MulAdd(s4_5, M4(1.904e-01, -5.556e-02, 1.531e-01, -3.999e-01, -8.230e-02, -8.662e-03, -5.523e-03, 1.186e-01, 8.731e-02, 7.370e-02, 9.071e-03, -6.335e-02, 2.061e-02, -1.069e-01, 1.168e-01, -6.441e-02), r);\n\tr = MulAdd(s4_6, M4(-2.114e-01, 2.655e-01, -1.276e-01, 1.694e-02, 1.000e-01, -6.448e-03, 5.444e-02, -1.185e-01, -7.768e-02, 6.957e-02, -4.817e-02, -3.406e-02, -2.532e-02, 6.830e-03, 5.735e-02, -6.098e-03), r);\n\tr = MulAdd(s4_7, M4(-1.183e-01, 2.141e-01, 3.308e-02, 8.856e-02, 1.164e-01, 7.402e-02, 5.863e-02, 2.378e-02, 8.073e-02, 8.703e-02, 1.127e-01, -3.097e-02, 6.431e-02, 7.934e-02, -1.421e-01, -1.177e-01), r);\n\tr = MulAdd(s4_8, M4(1.911e-02, 6.064e-02, -1.190e-01, -1.652e-02, 1.772e-02, -3.202e-02, 3.647e-02, -1.037e-01, -4.549e-02, -8.411e-02, -9.706e-02, 3.851e-02, 6.431e-02, -1.152e-02, -4.240e-02, -1.974e-03), r);\n\tr = MulAdd(s5_0, M4(7.443e-02, -6.928e-02, 2.351e-02, 4.930e-02, 1.168e-01, -1.628e-01, -4.279e-02, -1.200e-01, -1.192e-01, -2.831e-02, -1.701e-01, -3.926e-02, -5.642e-03, -3.749e-02, 3.475e-02, -7.582e-03), r);\n\tr = MulAdd(s5_1, M4(9.183e-02, 1.007e-02, -4.422e-02, -3.565e-02, -1.265e-01, 4.932e-02, 6.144e-03, -1.169e-01, 1.116e-01, 8.644e-02, 7.402e-02, -7.735e-02, 4.172e-02, 8.963e-02, 5.663e-02, -9.079e-02), r);\n\tr = MulAdd(s5_2, M4(1.033e-01, 1.121e-01, -6.600e-02, -7.067e-02, 8.008e-02, 5.074e-03, 2.116e-02, 1.021e-01, -2.078e-01, -3.313e-02, 2.813e-02, 2.715e-01, -7.777e-02, -5.784e-03, 4.669e-02, 1.617e-01), r);\n\tr = MulAdd(s5_3, M4(-3.387e-02, 6.943e-04, -3.529e-02, 3.672e-02, 9.172e-03, 1.474e-01, -1.151e-01, 3.213e-01, -6.365e-02, 8.501e-02, 3.243e-02, -1.321e-02, 9.236e-03, -1.537e-02, 8.765e-02, -1.485e-01), r);\n\tr = MulAdd(s5_4, M4(-4.213e-02, 4.288e-02, -3.889e-02, -4.191e-02, 9.213e-02, 1.161e-02, 2.505e-02, 6.496e-02, 2.284e-01, 1.543e-02, 1.013e-01, 2.034e-01, -4.164e-02, 1.233e-01, 3.504e-02, 1.310e-01), r);\n\tr = MulAdd(s5_5, M4(-5.845e-02, -3.905e-02, 1.690e-01, 9.346e-02, 1.464e-01, -3.299e-02, 7.769e-02, 1.264e-01, -1.575e-01, -5.546e-02, 1.137e-01, -3.536e-01, -1.947e-01, 6.519e-02, -9.272e-02, 2.226e-01), r);\n\tr = MulAdd(s5_6, M4(-8.464e-02, -2.263e-02, 3.167e-02, 2.957e-02, 8.858e-02, 3.201e-02, 1.245e-01, 7.283e-02, 1.784e-01, -3.979e-01, -1.130e-01, 2.907e-01, -4.962e-02, 5.083e-02, -3.487e-02, 8.182e-02), r);\n\tr = MulAdd(s5_7, M4(5.534e-03, -1.940e-02, 3.034e-02, 4.015e-02, -2.632e-01, -5.820e-02, 2.558e-01, 5.220e-03, 2.039e-01, 1.333e-01, 1.526e-01, -7.479e-03, -2.902e-02, -1.619e-02, -9.738e-02, 1.753e-01), r);\n\tr = MulAdd(s5_8, M4(-4.383e-02, 3.273e-02, -6.726e-02, -1.053e-01, -3.610e-02, 5.577e-04, 4.668e-02, 2.124e-01, -1.050e-01, -7.297e-02, 1.163e-01, 6.734e-02, 1.420e-01, 3.221e-02, -5.040e-02, -6.009e-02), r);\n\tr = MulAdd(s6_0, M4(-1.058e-01, 3.534e-04, -1.015e-01, -9.649e-02, -4.728e-01, 1.573e-01, -3.659e-01, -2.692e-02, -4.242e-02, 1.645e-01, -6.681e-02, 1.180e-01, 7.109e-02, -1.146e-01, 3.909e-03, -1.175e-01), r);\n\tr = MulAdd(s6_1, M4(3.918e-01, -2.804e-01, 5.742e-02, -2.888e-01, -1.907e-01, 3.226e-01, -2.286e-01, 9.371e-02, -1.390e-01, 3.166e-02, -1.320e-01, -1.048e-01, 2.455e-02, 8.532e-02, -3.389e-02, 3.829e-02), r);\n\tr = MulAdd(s6_2, M4(-1.743e-01, 5.073e-03, -1.500e-01, 1.373e-01, -9.960e-02, 4.622e-01, -1.019e-01, 2.484e-01, 6.440e-02, 1.303e-01, -4.173e-02, -2.134e-01, -1.767e-03, -2.657e-02, 5.925e-03, -1.008e-01), r);\n\tr = MulAdd(s6_3, M4(1.635e-01, 7.175e-02, -4.210e-01, 1.910e-01, 7.190e-02, -1.673e-01, -6.935e-01, 2.881e-01, 5.265e-03, 1.428e-01, -1.461e-02, -2.738e-01, -8.529e-02, 4.118e-02, 3.806e-02, -9.775e-02), r);\n\tr = MulAdd(s6_4, M4(-9.109e-02, 5.585e-02, -2.096e-01, 1.308e-01, 2.013e-02, -2.556e-01, -3.225e-01, -3.229e-02, 1.656e-01, 2.901e-02, -5.006e-02, 2.315e-01, 5.263e-02, 5.577e-02, -7.882e-02, 1.656e-01), r);\n\tr = MulAdd(s6_5, M4(-4.867e-02, -3.351e-01, -2.222e-01, 2.360e-01, 2.046e-01, -4.787e-02, -2.503e-01, -1.280e-02, -1.055e-01, 1.078e-01, -7.193e-02, 3.649e-02, -1.851e-02, -5.966e-02, 3.070e-02, 6.660e-02), r);\n\tr = MulAdd(s6_6, M4(1.316e-02, 2.458e-01, 5.478e-02, -2.485e-01, -1.203e-02, 3.974e-01, -7.347e-02, -2.075e-01, 6.866e-02, 4.869e-02, 4.098e-02, -3.162e-02, 9.583e-02, 1.312e-01, 9.177e-02, 6.787e-02), r);\n\tr = MulAdd(s6_7, M4(1.409e-01, 3.337e-02, 2.823e-01, -2.116e-01, 1.947e-01, -2.228e-01, -5.020e-03, -1.945e-01, 1.279e-01, -8.825e-03, 1.868e-02, -1.351e-01, -6.698e-03, -1.001e-01, -1.419e-02, -9.151e-02), r);\n\tr = MulAdd(s6_8, M4(-1.715e-01, -1.497e-01, 2.395e-01, 1.945e-01, -1.208e-01, 1.860e-01, -1.754e-01, -1.688e-01, -1.292e-01, 1.353e-01, -1.265e-01, 4.984e-02, -5.171e-02, 1.889e-02, -7.019e-02, 3.984e-02), r);\n\tr = MulAdd(s7_0, M4(9.075e-02, 8.094e-02, -2.149e-02, -6.784e-02, 2.235e-02, -5.264e-02, -5.977e-02, 5.019e-02, 1.832e-01, -1.327e-01, -1.141e-01, 1.721e-02, -2.538e-01, -2.081e-01, -2.252e-02, 1.571e-01), r);\n\tr = MulAdd(s7_1, M4(1.406e-01, 8.845e-02, 1.564e-01, 8.247e-02, 1.556e-02, 2.105e-02, 6.567e-02, 5.888e-02, -1.152e-01, 6.683e-02, -2.451e-04, -1.430e-02, -2.407e-01, 1.812e-02, 2.030e-01, -6.477e-02), r);\n\tr = MulAdd(s7_2, M4(5.620e-02, -5.195e-02, -1.895e-01, 2.763e-02, -2.476e-02, -2.111e-03, -1.099e-02, 1.055e-01, -4.108e-02, -6.049e-03, 7.379e-02, -6.549e-04, 3.281e-02, -2.394e-01, 1.271e-01, -2.240e-01), r);\n\tr = MulAdd(s7_3, M4(-9.938e-02, -7.305e-02, -4.676e-02, -6.918e-04, 6.597e-02, 3.119e-03, 8.736e-02, -1.131e-01, 5.605e-02, -5.043e-02, 7.552e-02, 1.419e-01, 2.350e-01, 1.710e-01, -3.276e-03, 5.825e-02), r);\n\tr = MulAdd(s7_4, M4(-4.384e-02, 1.668e-01, -7.362e-02, 3.042e-03, -5.063e-02, -9.813e-02, 1.210e-01, -3.284e-02, 9.641e-02, 2.211e-01, -4.330e-03, 1.904e-01, 2.611e-01, 2.184e-01, 4.924e-02, 2.242e-01), r);\n\tr = MulAdd(s7_5, M4(6.132e-02, 6.682e-03, 4.634e-02, 6.060e-02, -3.296e-02, 7.170e-02, 5.495e-02, 8.781e-03, -4.459e-02, 1.182e-02, -9.498e-03, -1.233e-01, -3.024e-01, 2.043e-01, -1.788e-01, -2.906e-01), r);\n\tr = MulAdd(s7_6, M4(2.928e-02, 3.034e-02, 3.178e-02, -1.419e-03, -3.095e-02, 3.273e-02, 5.712e-02, 7.300e-03, 2.612e-02, -1.759e-02, 7.935e-02, -6.945e-02, -1.108e-01, 1.324e-01, -5.111e-02, 2.983e-01), r);\n\tr = MulAdd(s7_7, M4(-1.131e-02, 6.068e-02, -3.666e-02, 9.163e-02, 3.126e-02, -3.859e-02, 6.360e-02, -1.437e-01, 2.207e-02, -6.323e-02, 1.945e-02, -2.169e-02, 1.127e-01, -1.509e-01, -1.471e-01, 2.640e-01), r);\n\tr = MulAdd(s7_8, M4(-1.762e-01, -1.563e-01, 3.054e-02, -1.832e-02, 2.611e-02, -1.305e-02, 6.246e-02, 1.010e-02, 1.143e-02, -3.576e-02, -9.686e-02, 1.106e-01, -1.309e-01, -2.044e-01, -2.538e-02, -1.611e-01), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = V4(7.159e-03, -3.758e-03, 2.665e-02, -4.427e-04);\n\tr = MulAdd(s0_0, M4(-2.704e-02, 4.119e-02, -1.107e-02, 1.828e-02, -4.632e-02, 1.098e-01, 4.771e-02, -5.593e-02, -3.240e-02, -7.122e-02, -3.222e-02, -9.674e-03, -6.694e-02, 2.575e-02, 1.674e-02, 1.786e-01), r);\n\tr = MulAdd(s0_1, M4(4.567e-02, -1.971e-02, 1.176e-02, 5.100e-02, -3.136e-02, -2.753e-03, -1.019e-02, -1.290e-01, 5.878e-02, 2.891e-02, -1.587e-01, -8.956e-02, -7.898e-02, -3.058e-01, 1.099e-02, 2.315e-02), r);\n\tr = MulAdd(s0_2, M4(-1.749e-02, -3.178e-02, -1.223e-02, 1.942e-03, 9.650e-02, 7.544e-02, -9.168e-02, -9.126e-02, -4.168e-02, -4.084e-02, 9.683e-02, -4.930e-02, 2.975e-02, 4.417e-02, 1.359e-01, -2.128e-01), r);\n\tr = MulAdd(s0_3, M4(-5.991e-02, -3.668e-02, -1.044e-02, -7.535e-02, 1.101e-01, 1.680e-01, 2.074e-02, 7.483e-02, 1.019e-01, 7.522e-02, 6.974e-02, -1.916e-02, -9.800e-02, -1.716e-01, -1.917e-02, -4.692e-03), r);\n\tr = MulAdd(s0_4, M4(1.008e-01, 4.064e-02, -7.615e-02, 1.377e-02, -2.184e-02, 8.471e-02, 2.393e-01, 3.580e-02, -2.858e-01, 1.165e-02, -1.603e-01, 3.959e-02, -3.520e-01, 2.286e-01, 3.095e-01, 8.209e-02), r);\n\tr = MulAdd(s0_5, M4(5.105e-02, 9.846e-02, -4.108e-02, 4.437e-02, 1.197e-01, 1.152e-02, 2.312e-01, 9.272e-02, -6.910e-02, 1.006e-02, 6.812e-02, 8.346e-02, -8.388e-02, -9.457e-02, -1.832e-01, -5.835e-02), r);\n\tr = MulAdd(s0_6, M4(3.764e-02, -1.213e-01, -4.007e-03, -1.155e-01, -1.117e-01, -1.373e-01, -8.250e-02, 5.700e-02, -5.925e-02, -5.457e-02, -1.250e-01, -2.913e-02, 2.378e-01, 1.483e-01, 4.152e-02, -1.239e-01), r);\n\tr = MulAdd(s0_7, M4(-3.888e-02, 7.090e-02, 4.034e-02, 3.863e-02, 2.613e-02, -1.153e-02, -2.250e-01, 1.420e-01, 1.299e-01, -1.318e-01, -7.944e-02, 8.884e-02, -6.052e-02, -6.205e-02, 2.843e-02, 2.440e-01), r);\n\tr = MulAdd(s0_8, M4(-6.049e-02, -3.063e-02, 8.144e-02, 1.838e-02, 7.390e-02, -1.663e-02, -3.010e-02, -2.802e-02, -1.919e-01, 3.979e-03, 2.597e-01, 7.772e-02, 7.641e-02, 1.254e-01, 1.572e-01, 5.541e-02), r);\n\tr = MulAdd(s1_0, M4(-3.671e-01, 7.588e-02, 6.621e-02, 2.213e-01, 1.526e-01, -5.132e-02, -1.760e-02, -8.277e-02, 2.952e-01, -1.816e-01, 8.647e-03, -1.812e-03, 2.321e-03, 2.707e-02, -7.167e-03, -1.863e-02), r);\n\tr = MulAdd(s1_1, M4(-2.608e-02, 1.196e-01, -3.251e-03, -5.070e-02, 8.266e-02, -1.079e-01, -9.725e-02, -1.451e-02, 4.633e-03, 1.263e-01, -9.275e-02, 9.332e-03, 8.173e-02, 9.255e-03, -4.296e-03, 2.027e-02), r);\n\tr = MulAdd(s1_2, M4(-1.099e-01, -6.099e-02, -5.077e-02, -5.578e-02, 3.175e-02, -4.658e-02, 2.868e-02, 5.742e-02, 9.943e-02, -6.563e-02, 8.187e-02, 9.414e-03, -4.800e-02, -8.106e-03, 1.858e-02, 1.403e-02), r);\n\tr = MulAdd(s1_3, M4(9.989e-02, -8.257e-02, -1.219e-02, -6.931e-02, -6.557e-02, -5.428e-02, -8.126e-02, -9.715e-02, 9.848e-02, -8.316e-02, 7.289e-03, -3.675e-01, 6.269e-03, 3.037e-02, 1.013e-01, -8.937e-02), r);\n\tr = MulAdd(s1_4, M4(-2.259e-01, -1.506e-01, -1.612e-01, 6.220e-02, -1.166e-01, 7.580e-02, 4.015e-02, -5.506e-02, 2.777e-01, 1.057e-01, -9.536e-02, 6.809e-02, 9.972e-02, -1.624e-02, -5.486e-02, -6.122e-02), r);\n\tr = MulAdd(s1_5, M4(1.593e-01, 1.424e-01, -1.001e-01, 6.205e-02, -1.405e-01, -5.176e-02, 3.637e-02, -1.473e-02, 3.244e-01, 7.078e-02, -1.401e-02, -7.216e-02, -3.488e-03, 2.172e-02, -8.795e-02, 5.266e-02), r);\n\tr = MulAdd(s1_6, M4(1.479e-01, -1.625e-01, -3.014e-03, 3.855e-02, 1.537e-01, 4.484e-02, -4.470e-02, 1.050e-01, -1.931e-01, 1.252e-01, -2.244e-02, 1.603e-02, -7.039e-02, -1.379e-01, -7.265e-02, -4.966e-02), r);\n\tr = MulAdd(s1_7, M4(-3.219e-01, 2.311e-01, 4.962e-02, 8.471e-02, -1.078e-01, 7.598e-02, -9.423e-02, 8.618e-03, 1.271e-01, 1.630e-01, -9.076e-02, -3.370e-02, 5.630e-02, -4.028e-02, 9.981e-02, 1.128e-01), r);\n\tr = MulAdd(s1_8, M4(-3.702e-02, 7.422e-02, 1.541e-01, -1.435e-01, -1.915e-01, 1.921e-02, -6.697e-02, 2.995e-03, 1.786e-01, 1.306e-01, 8.562e-02, 1.303e-01, -1.676e-02, 1.746e-01, 2.462e-02, 2.796e-03), r);\n\tr = MulAdd(s2_0, M4(3.366e-01, -4.757e-03, -3.828e-02, -1.766e-01, -8.184e-02, -2.720e-02, 2.907e-02, 1.040e-02, 1.321e-02, -6.691e-04, 1.528e-02, -8.315e-02, 6.216e-02, -4.957e-02, 7.242e-03, -5.866e-02), r);\n\tr = MulAdd(s2_1, M4(-5.713e-02, 1.256e-01, -4.166e-02, 9.245e-02, 2.673e-02, 1.048e-01, 8.198e-02, -2.185e-01, 7.978e-02, 2.214e-02, 3.528e-02, -1.856e-02, 9.841e-02, -5.330e-02, 1.050e-01, 4.323e-02), r);\n\tr = MulAdd(s2_2, M4(9.369e-02, -1.272e-01, 7.039e-02, 4.077e-02, -5.287e-02, 3.679e-02, -2.594e-01, 9.411e-02, -9.286e-02, -4.824e-02, 3.952e-02, 5.785e-02, 9.744e-02, 1.937e-02, 7.451e-02, 8.110e-02), r);\n\tr = MulAdd(s2_3, M4(-2.094e-02, 3.822e-02, 3.571e-03, 7.506e-02, 1.505e-01, 3.495e-02, 2.335e-02, 1.998e-02, 1.719e-01, 3.476e-02, 2.892e-02, -9.099e-02, 1.641e-01, -1.109e-01, -7.744e-02, 1.493e-01), r);\n\tr = MulAdd(s2_4, M4(-1.261e-01, 9.058e-02, -1.296e-01, 6.449e-02, 8.341e-02, 9.417e-02, 1.340e-01, -1.847e-01, -2.666e-02, -2.729e-02, 5.653e-03, 1.913e-02, 2.631e-01, -2.436e-01, 2.820e-01, 2.498e-01), r);\n\tr = MulAdd(s2_5, M4(-3.645e-02, -9.327e-02, 1.228e-01, -1.038e-01, 9.788e-02, -4.783e-02, -2.781e-01, -1.842e-01, -8.214e-02, -5.840e-02, 1.142e-01, -7.196e-02, -2.648e-03, 7.155e-02, -1.845e-01, 1.416e-01), r);\n\tr = MulAdd(s2_6, M4(1.153e-01, -3.824e-03, -8.120e-03, 4.746e-02, 7.938e-02, -9.856e-02, 3.290e-03, -2.859e-02, 1.614e-02, 6.969e-02, 1.000e-03, 2.190e-01, 4.881e-02, -2.336e-02, 1.215e-02, 1.337e-01), r);\n\tr = MulAdd(s2_7, M4(-2.900e-01, -1.165e-01, 1.287e-01, -3.523e-02, -7.180e-02, -3.137e-02, -1.323e-02, -1.565e-02, -3.780e-02, 2.262e-01, 7.472e-02, 1.192e-01, -1.169e-01, 1.284e-01, 1.988e-01, 6.072e-02), r);\n\tr = MulAdd(s2_8, M4(-2.491e-01, -1.996e-01, -9.671e-02, -1.332e-01, -5.703e-04, -1.790e-02, -1.025e-01, 2.045e-02, -3.150e-03, -9.094e-03, -2.392e-01, 4.622e-02, 9.624e-03, -1.643e-02, 1.445e-01, 4.723e-02), r);\n\tr = MulAdd(s3_0, M4(-3.168e-02, -8.366e-02, -2.659e-02, 3.702e-02, -8.294e-02, 1.381e-02, 5.830e-02, 1.874e-01, 7.915e-02, -3.209e-02, 5.806e-04, -2.349e-02, 6.262e-03, 2.250e-02, -8.750e-03, 2.664e-02), r);\n\tr = MulAdd(s3_1, M4(-4.382e-02, -4.891e-02, 2.312e-02, 8.793e-02, 1.782e-01, -1.829e-01, 1.088e-01, 9.672e-02, 5.949e-02, -1.157e-02, -2.554e-05, 6.398e-02, -6.874e-02, -9.942e-02, 1.337e-02, 6.515e-02), r);\n\tr = MulAdd(s3_2, M4(-4.311e-02, -3.124e-02, 7.939e-02, -1.573e-02, -3.802e-04, -1.142e-01, 4.008e-02, 2.125e-01, 6.733e-02, 9.101e-03, 1.485e-02, -2.233e-02, -4.651e-02, 3.218e-02, 6.055e-02, -3.819e-02), r);\n\tr = MulAdd(s3_3, M4(-1.060e-01, -1.063e-01, -4.364e-03, 3.000e-02, -2.110e-01, -1.171e-01, 2.608e-02, 1.687e-01, -1.311e-01, 8.075e-02, -1.713e-02, 5.390e-02, -2.806e-02, 3.210e-02, -8.352e-02, 1.346e-01), r);\n\tr = MulAdd(s3_4, M4(1.472e-02, 8.261e-02, -1.026e-01, -3.850e-02, -7.406e-02, 2.109e-01, 1.440e-01, 2.049e-01, 6.016e-03, -4.091e-02, -2.023e-02, 4.947e-02, -8.169e-02, -1.949e-01, 3.551e-01, 1.635e-01), r);\n\tr = MulAdd(s3_5, M4(1.951e-04, 5.917e-02, 1.018e-01, -3.967e-02, -1.626e-01, 3.372e-02, 4.666e-02, 1.537e-01, 2.234e-01, 1.110e-01, 1.100e-01, -9.203e-02, -2.231e-02, -4.048e-02, -1.615e-01, 2.928e-03), r);\n\tr = MulAdd(s3_6, M4(1.628e-01, 1.837e-02, -7.830e-03, 1.189e-01, 4.063e-02, 5.098e-02, -2.359e-02, 1.483e-02, -1.524e-02, -4.939e-02, -1.179e-01, 1.755e-01, -6.125e-02, 5.565e-02, 6.117e-02, 1.694e-02), r);\n\tr = MulAdd(s3_7, M4(1.042e-01, 6.966e-02, 1.168e-01, -5.148e-02, 9.320e-03, 1.017e-01, -3.727e-03, -1.017e-02, 2.702e-02, 3.255e-02, -1.465e-01, 2.200e-01, -3.505e-03, 2.000e-01, 2.568e-01, -2.003e-01), r);\n\tr = MulAdd(s3_8, M4(1.459e-01, -2.493e-02, -1.126e-01, -1.174e-01, 3.386e-02, 1.020e-01, -1.687e-01, -2.750e-02, 4.996e-02, 1.166e-01, -2.836e-01, 6.469e-03, -2.094e-02, 6.162e-02, 1.218e-01, -3.918e-02), r);\n\tr = MulAdd(s4_0, M4(-5.989e-02, -1.275e-01, -1.069e-02, -1.562e-01, 1.509e-02, -3.651e-02, -2.489e-02, 5.102e-02, -9.109e-03, 8.227e-02, 2.166e-02, 2.914e-02, 1.190e-01, 3.730e-02, 2.797e-02, -7.265e-02), r);\n\tr = MulAdd(s4_1, M4(-1.879e-01, 1.295e-01, 1.702e-01, 9.584e-02, -1.735e-02, 7.957e-02, 5.189e-02, 6.472e-02, -8.307e-02, 6.680e-02, 3.311e-02, 4.058e-02, -1.224e-02, 4.445e-02, -7.185e-02, -8.199e-02), r);\n\tr = MulAdd(s4_2, M4(5.254e-01, -3.634e-01, 1.662e-01, -2.114e-01, 1.411e-01, -2.478e-02, -5.932e-02, 3.418e-02, -1.432e-02, -3.958e-02, 1.435e-02, -8.904e-03, 8.548e-02, -5.572e-03, -2.835e-02, 6.525e-02), r);\n\tr = MulAdd(s4_3, M4(-1.715e-01, 7.230e-02, 6.736e-02, 1.704e-01, 7.206e-02, 2.094e-02, -2.504e-02, -1.880e-02, -5.422e-02, -1.249e-02, 1.255e-02, 7.395e-02, -1.611e-02, -2.501e-02, -2.455e-02, -5.480e-02), r);\n\tr = MulAdd(s4_4, M4(-1.826e-01, 3.723e-01, 1.412e-02, 5.877e-02, 4.934e-03, -3.280e-02, 5.855e-02, 6.245e-02, 1.276e-01, -9.475e-03, 3.968e-02, -1.804e-01, 4.664e-02, -1.505e-02, -1.136e-01, 6.298e-02), r);\n\tr = MulAdd(s4_5, M4(3.330e-01, -3.862e-01, 1.600e-01, 6.900e-02, 2.724e-02, 1.359e-01, -2.742e-02, -9.879e-03, -1.471e-02, 4.607e-02, -4.352e-02, -3.443e-02, -1.949e-01, 7.837e-02, -2.380e-01, -1.305e-01), r);\n\tr = MulAdd(s4_6, M4(5.690e-01, -7.987e-02, 7.209e-02, -1.874e-01, 9.314e-02, -5.132e-02, 3.539e-02, -7.483e-02, -5.569e-02, 5.700e-03, -3.336e-02, 2.188e-02, -2.922e-02, -3.125e-02, 1.676e-02, -1.950e-02), r);\n\tr = MulAdd(s4_7, M4(-3.250e-01, -1.844e-01, 7.516e-02, 3.934e-02, -2.323e-01, 2.582e-02, 1.669e-01, 6.127e-02, 1.601e-02, -1.399e-01, -8.601e-02, 2.964e-02, -6.863e-02, 2.621e-02, 8.180e-02, -2.546e-02), r);\n\tr = MulAdd(s4_8, M4(-2.926e-01, -1.685e-01, 1.073e-01, -1.693e-01, 2.371e-02, -7.114e-03, -1.195e-01, -6.144e-02, -1.576e-03, 1.150e-03, 4.983e-02, 2.978e-02, 4.129e-02, -8.080e-02, -1.987e-01, -5.699e-02), r);\n\tr = MulAdd(s5_0, M4(-5.547e-02, 5.564e-02, -3.508e-02, 6.241e-02, 9.668e-03, 1.678e-01, 1.267e-02, 1.256e-01, 1.004e-01, -2.921e-02, 8.177e-02, 1.503e-02, -5.694e-02, 2.443e-02, -1.275e-03, 4.726e-02), r);\n\tr = MulAdd(s5_1, M4(1.197e-01, -5.710e-02, 4.705e-02, -5.166e-02, 1.163e-05, 5.874e-02, 3.331e-02, -6.039e-02, -4.023e-02, -4.927e-02, -1.532e-02, -4.419e-02, -1.910e-01, 6.584e-02, -1.220e-01, 1.078e-02), r);\n\tr = MulAdd(s5_2, M4(-1.161e-01, -2.322e-02, -6.482e-02, -2.701e-02, -3.645e-02, 3.033e-03, -4.483e-02, 1.678e-02, -2.286e-01, -1.095e-02, 1.366e-02, 6.744e-02, 5.017e-02, 1.416e-02, -7.673e-03, -6.489e-02), r);\n\tr = MulAdd(s5_3, M4(-8.640e-02, 1.609e-02, 2.547e-02, 3.356e-02, 1.516e-01, 7.014e-02, -3.872e-02, -1.409e-01, 2.643e-01, -2.685e-01, -3.616e-02, 8.870e-02, 1.947e-01, -1.644e-01, -7.013e-02, 1.115e-03), r);\n\tr = MulAdd(s5_4, M4(-1.069e-01, -5.233e-02, -9.943e-02, -1.125e-01, -6.419e-02, -1.226e-02, 1.305e-02, 2.079e-01, -2.032e-01, 2.021e-01, 1.009e-01, -6.994e-02, 9.324e-02, 3.447e-02, -5.153e-02, 1.470e-01), r);\n\tr = MulAdd(s5_5, M4(5.229e-02, 1.494e-02, 8.839e-02, 3.341e-02, -1.026e-01, 1.777e-02, -1.833e-02, -1.176e-03, 2.667e-01, 5.999e-02, -8.439e-02, -1.041e-01, 9.569e-02, 9.370e-02, -1.087e-01, -1.321e-03), r);\n\tr = MulAdd(s5_6, M4(8.497e-02, -5.761e-03, 5.910e-02, -4.775e-02, -3.771e-02, 2.980e-01, -7.506e-02, -1.460e-01, -7.385e-03, 2.882e-02, -5.731e-02, 2.208e-01, 1.702e-02, 5.164e-02, -3.545e-02, 2.515e-02), r);\n\tr = MulAdd(s5_7, M4(-2.783e-02, -8.353e-02, -2.801e-02, 2.072e-03, 8.138e-02, 2.568e-01, -3.335e-01, 1.420e-02, 8.183e-02, 1.000e-01, -9.473e-02, -1.010e-01, -1.686e-01, 6.347e-02, 1.110e-01, -7.072e-02), r);\n\tr = MulAdd(s5_8, M4(1.209e-01, 4.431e-03, 7.417e-02, 5.090e-02, 9.886e-03, -2.089e-02, -2.449e-01, -1.106e-03, 1.540e-01, 1.048e-01, 8.591e-02, 1.617e-01, -8.105e-02, -4.884e-02, -1.619e-01, -1.208e-01), r);\n\tr = MulAdd(s6_0, M4(1.547e-01, -1.760e-01, -4.262e-03, -7.136e-03, 1.178e-02, 4.044e-02, -5.617e-02, -2.178e-01, 1.054e-02, -8.355e-02, -5.946e-02, -3.096e-01, 5.723e-02, 4.477e-02, 6.218e-02, -7.704e-02), r);\n\tr = MulAdd(s6_1, M4(1.116e-01, 2.293e-01, 5.531e-02, -2.665e-02, -6.177e-04, 7.252e-02, 1.280e-02, 3.330e-01, 8.625e-02, -3.961e-02, -6.907e-03, -6.870e-02, -3.605e-02, -5.864e-02, -7.659e-02, 1.959e-02), r);\n\tr = MulAdd(s6_2, M4(1.637e-01, 1.836e-01, 1.450e-01, -8.673e-02, -2.056e-01, -2.885e-01, -4.169e-02, -1.281e-01, -1.098e-02, -7.054e-03, 3.404e-02, -1.208e-01, 4.963e-02, -7.820e-02, 2.431e-03, -3.848e-02), r);\n\tr = MulAdd(s6_3, M4(-1.303e-01, -2.074e-02, 1.467e-03, -6.021e-01, -3.079e-01, -6.886e-02, 1.388e-01, 4.609e-01, 7.498e-02, -1.014e-01, -9.830e-02, -9.333e-03, -8.884e-03, 1.278e-02, -1.449e-02, -3.219e-02), r);\n\tr = MulAdd(s6_4, M4(-1.143e-01, 1.794e-02, 2.329e-01, -1.630e-02, 8.577e-02, -1.221e-01, -7.285e-02, 2.222e-01, -1.776e-01, -2.464e-01, 2.885e-01, 8.662e-02, 8.845e-02, 1.274e-01, -2.733e-02, 5.147e-02), r);\n\tr = MulAdd(s6_5, M4(3.759e-01, 2.169e-01, -3.161e-02, 5.758e-02, 2.007e-01, -2.794e-02, -3.164e-02, 1.858e-02, -2.600e-02, -3.249e-02, -1.475e-01, 3.748e-02, 2.038e-02, 1.406e-01, -8.668e-02, 4.246e-02), r);\n\tr = MulAdd(s6_6, M4(-1.611e-01, 1.157e-01, 2.592e-02, 1.471e-01, -2.053e-01, 2.816e-01, 4.534e-02, -6.995e-02, -4.584e-02, 1.075e-01, 5.757e-03, 1.091e-01, 2.551e-02, -9.300e-03, -2.473e-02, 4.925e-02), r);\n\tr = MulAdd(s6_7, M4(-2.261e-01, 9.102e-02, 2.608e-02, 3.204e-01, 3.703e-01, -1.067e-01, -2.237e-02, -5.974e-02, -1.959e-02, 1.104e-01, -1.742e-01, -5.755e-02, -2.644e-02, -4.180e-02, 1.236e-01, -5.114e-02), r);\n\tr = MulAdd(s6_8, M4(3.876e-01, 4.009e-01, 2.010e-01, -2.782e-02, -1.762e-01, 1.997e-01, 4.941e-02, -1.995e-01, -8.606e-02, -1.616e-02, 3.457e-02, 1.450e-01, -1.172e-01, 1.029e-02, 2.820e-02, -1.025e-02), r);\n\tr = MulAdd(s7_0, M4(1.647e-02, -5.545e-02, -2.490e-02, -1.293e-02, -7.596e-02, -8.660e-03, -2.008e-02, 3.545e-02, -5.051e-02, -3.824e-02, 1.400e-02, 1.164e-02, -4.095e-02, -1.023e-01, 1.365e-01, 9.583e-02), r);\n\tr = MulAdd(s7_1, M4(1.787e-02, -4.811e-02, -3.144e-02, -6.334e-02, -7.119e-03, 4.822e-02, -1.003e-01, 9.954e-02, 1.284e-01, -4.100e-02, 1.033e-01, -6.504e-02, 9.758e-02, -3.433e-01, -1.493e-02, 1.551e-01), r);\n\tr = MulAdd(s7_2, M4(-6.225e-02, -9.759e-02, -1.172e-01, -5.663e-02, -4.019e-02, -2.128e-02, -2.677e-02, 2.618e-02, -3.027e-02, 3.373e-02, -9.503e-02, -1.677e-02, -2.570e-01, 1.408e-01, 7.404e-03, -6.859e-03), r);\n\tr = MulAdd(s7_3, M4(1.006e-01, -5.592e-02, 6.538e-02, -6.578e-02, -2.373e-02, -1.070e-01, 6.332e-02, -4.559e-02, 1.217e-01, 9.091e-02, 1.280e-01, 1.921e-02, 1.554e-01, -1.313e-01, -5.379e-02, -1.016e-01), r);\n\tr = MulAdd(s7_4, M4(2.410e-02, -4.736e-02, 2.086e-01, -9.212e-02, -9.352e-03, 6.391e-02, -1.045e-01, 5.797e-02, 6.874e-02, 4.194e-02, 3.504e-01, 1.034e-02, 6.150e-01, -2.923e-01, 1.252e-01, 1.000e-01), r);\n\tr = MulAdd(s7_5, M4(-5.019e-02, 6.172e-02, 2.991e-02, -8.221e-02, 1.669e-02, -1.289e-01, -6.205e-02, -1.288e-02, 2.764e-03, 6.436e-02, -4.164e-02, -1.640e-02, 9.159e-02, -1.842e-01, 1.880e-01, 1.557e-01), r);\n\tr = MulAdd(s7_6, M4(7.682e-03, -5.789e-02, -2.496e-02, -2.562e-02, -8.123e-02, -1.616e-04, 4.920e-02, 6.997e-02, -1.362e-01, -7.653e-02, -1.092e-01, -2.418e-02, -2.005e-01, -1.490e-01, -1.786e-02, 8.711e-02), r);\n\tr = MulAdd(s7_7, M4(2.645e-02, -3.008e-03, -8.682e-03, -9.011e-02, 1.142e-01, 5.017e-02, 5.841e-02, -3.095e-02, 7.273e-02, 4.477e-02, -1.209e-01, -1.854e-01, -3.026e-01, -1.674e-01, 1.946e-01, 9.873e-02), r);\n\tr = MulAdd(s7_8, M4(2.496e-03, 8.130e-02, -3.001e-02, -1.115e-02, 3.656e-03, 2.615e-01, 8.014e-02, -4.353e-02, 3.521e-02, 1.113e-02, 1.758e-01, 1.082e-01, -9.329e-02, 2.969e-01, 2.252e-02, -8.666e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 8.737e-03, -8.144e-02, 2.217e-03, 4.256e-03 };\n\tr = MulAdd(s0_0, M4(-4.947e-02, 8.051e-02, -2.570e-02, 1.068e-02, -1.013e-01, -1.273e-01, 4.331e-02, -9.162e-03, -7.351e-02, 4.432e-02, -9.921e-02, 1.293e-02, -3.328e-01, -1.960e-01, 1.701e-01, -6.579e-02), r);\n\tr = MulAdd(s0_1, M4(2.520e-02, -7.575e-03, -5.535e-03, -9.261e-03, -3.295e-02, 4.939e-02, 4.853e-02, 4.567e-02, 1.335e-01, 8.591e-02, 9.288e-03, -6.721e-02, -5.151e-03, -3.211e-02, 3.165e-01, 1.095e-01), r);\n\tr = MulAdd(s0_2, M4(-5.395e-02, -3.941e-02, 7.402e-02, -8.885e-03, 1.486e-02, 8.849e-02, -4.877e-02, -1.498e-03, -1.978e-02, -2.693e-02, 8.446e-02, -2.550e-02, 3.174e-01, -8.859e-02, -9.404e-02, -1.002e-01), r);\n\tr = MulAdd(s0_3, M4(2.095e-02, 3.997e-02, 8.597e-02, -3.698e-02, 1.128e-01, -1.407e-01, -7.529e-02, 1.333e-01, 8.401e-03, -5.745e-02, -9.140e-02, -1.229e-02, -2.379e-01, 4.148e-02, 2.596e-01, -9.078e-02), r);\n\tr = MulAdd(s0_4, M4(8.500e-03, -1.577e-02, 8.539e-03, 4.712e-02, -2.357e-03, -1.641e-02, 9.686e-02, -7.687e-02, 5.286e-02, 3.013e-02, 1.254e-01, 7.323e-02, -1.755e-01, -1.398e-01, 4.896e-01, 3.644e-02), r);\n\tr = MulAdd(s0_5, M4(-4.679e-02, 1.382e-01, 3.106e-03, 7.874e-03, -3.112e-03, 6.567e-02, -9.367e-03, -7.449e-02, -1.115e-01, 8.487e-02, 1.757e-02, 1.521e-02, 1.222e-01, -4.063e-02, -1.877e-02, 1.400e-01), r);\n\tr = MulAdd(s0_6, M4(-6.195e-03, -8.237e-02, -8.502e-02, 1.466e-02, -1.581e-01, 1.419e-01, -1.118e-01, -2.992e-03, -4.297e-02, -7.925e-02, -1.709e-01, -8.587e-02, 1.534e-01, -1.336e-01, 6.284e-02, -2.807e-02), r);\n\tr = MulAdd(s0_7, M4(4.441e-02, 8.600e-03, 1.872e-02, -2.364e-02, 1.109e-01, -6.685e-02, 3.983e-02, -1.081e-01, 2.319e-02, 1.708e-02, 7.053e-02, 6.897e-02, 2.854e-01, -3.227e-04, -2.221e-01, 3.208e-02), r);\n\tr = MulAdd(s0_8, M4(3.877e-02, -5.845e-02, -4.021e-02, 5.879e-03, 1.469e-02, 4.745e-02, 4.817e-02, 9.870e-02, -4.810e-02, -1.029e-02, 2.124e-01, 4.661e-02, 5.580e-02, 2.815e-01, -3.902e-02, 7.007e-02), r);\n\tr = MulAdd(s1_0, M4(1.851e-01, 1.982e-01, -8.419e-02, -6.920e-02, 3.217e-02, -1.721e-02, -1.412e-01, 3.260e-02, 1.819e-03, -1.164e-01, 9.689e-02, 7.218e-02, -6.876e-02, -6.621e-03, 4.684e-02, 3.613e-02), r);\n\tr = MulAdd(s1_1, M4(1.213e-01, -5.728e-02, 6.839e-02, -6.103e-02, 5.075e-02, 3.953e-02, 1.449e-02, -1.030e-01, 3.124e-03, -8.353e-02, 1.924e-01, -4.414e-02, 8.485e-03, 6.598e-03, -8.983e-02, 1.859e-02), r);\n\tr = MulAdd(s1_2, M4(-1.130e-01, -5.227e-03, 1.393e-01, 2.985e-02, -6.197e-02, -1.564e-01, 1.609e-02, 9.519e-02, 1.025e-01, 7.023e-02, -4.166e-02, 6.305e-02, 3.051e-02, 1.308e-02, 7.536e-03, -7.300e-02), r);\n\tr = MulAdd(s1_3, M4(-1.041e-01, -7.686e-02, -3.057e-01, 1.432e-02, -1.866e-01, 2.454e-02, -1.028e-01, 2.281e-01, 8.083e-02, -8.418e-02, -1.414e-01, 3.425e-02, -3.559e-03, -7.205e-02, -3.959e-02, -3.331e-02), r);\n\tr = MulAdd(s1_4, M4(7.435e-02, -2.117e-01, -1.796e-02, 1.073e-01, -1.093e-01, -1.060e-02, 9.349e-02, -1.212e-01, 9.875e-02, -1.692e-01, 1.687e-02, 1.410e-02, 2.623e-02, -1.389e-02, -5.446e-02, 2.347e-03), r);\n\tr = MulAdd(s1_5, M4(-9.770e-02, 1.584e-01, 5.546e-02, 8.240e-02, -3.345e-03, 7.296e-03, -2.089e-02, -1.144e-01, -1.143e-01, -1.234e-01, -2.419e-01, 3.390e-02, -3.451e-02, 7.053e-02, 5.652e-02, 3.383e-03), r);\n\tr = MulAdd(s1_6, M4(2.227e-01, -2.378e-01, -7.366e-03, 1.727e-01, 3.661e-03, 7.563e-02, 1.158e-01, 4.744e-02, 1.571e-01, -7.862e-02, 6.584e-02, 6.647e-02, 3.937e-02, 3.059e-02, 7.411e-02, -5.458e-02), r);\n\tr = MulAdd(s1_7, M4(1.126e-01, -1.318e-01, 6.760e-02, -7.502e-02, -8.506e-02, 6.361e-02, -1.131e-01, -3.764e-02, -9.932e-02, 1.804e-02, -1.972e-01, -1.371e-01, -5.165e-03, -1.804e-02, -5.013e-02, 2.435e-02), r);\n\tr = MulAdd(s1_8, M4(-1.332e-01, -1.041e-01, 4.485e-02, -1.181e-01, -2.204e-02, -6.541e-03, -9.146e-02, 4.346e-02, 6.873e-02, 1.732e-01, -1.697e-01, 1.764e-02, -2.447e-02, -3.191e-02, 1.106e-02, 6.543e-02), r);\n\tr = MulAdd(s2_0, M4(-7.285e-02, -8.081e-02, -2.882e-02, 5.116e-02, -9.595e-02, -3.134e-02, -5.852e-03, 4.262e-02, 2.221e-02, -7.012e-02, 6.421e-02, -5.627e-02, 1.563e-02, -1.101e-01, -3.699e-02, -5.017e-03), r);\n\tr = MulAdd(s2_1, M4(-1.895e-02, -1.349e-01, 4.072e-02, -8.592e-02, 9.225e-02, 5.737e-02, -3.620e-01, -6.333e-02, -1.187e-02, -5.571e-02, 6.266e-02, -1.954e-02, -9.780e-02, -9.125e-03, 2.080e-02, -7.937e-02), r);\n\tr = MulAdd(s2_2, M4(-3.584e-02, -2.629e-02, -1.013e-02, -1.518e-02, -1.020e-01, 2.964e-02, -2.759e-02, -7.744e-02, 3.073e-02, 7.335e-02, 2.058e-02, 8.198e-03, 3.367e-02, -2.003e-01, 1.013e-01, 4.883e-03), r);\n\tr = MulAdd(s2_3, M4(6.493e-02, -1.854e-01, -3.271e-02, -1.926e-03, -3.097e-02, 1.588e-02, 1.135e-01, 8.857e-02, 3.956e-02, -5.410e-02, 7.366e-02, 2.646e-01, -2.577e-01, -8.662e-02, 1.704e-01, 6.882e-03), r);\n\tr = MulAdd(s2_4, M4(-8.632e-02, 5.495e-02, -1.114e-01, -7.373e-02, -1.587e-01, -5.582e-02, 4.193e-02, -5.838e-03, -1.714e-01, 7.996e-02, 1.193e-01, 1.880e-01, 6.001e-02, -2.543e-02, -5.180e-02, -1.304e-01), r);\n\tr = MulAdd(s2_5, M4(-4.703e-02, -7.633e-02, -4.091e-02, 7.437e-02, -3.345e-02, -6.761e-02, -3.374e-02, -1.427e-01, 1.371e-01, 1.601e-01, 4.610e-02, 1.685e-02, 1.720e-01, -2.320e-01, -7.731e-02, 3.362e-03), r);\n\tr = MulAdd(s2_6, M4(-4.414e-02, 2.003e-02, -1.657e-01, -1.797e-01, 3.099e-02, -7.790e-03, -2.465e-03, 7.397e-02, -4.738e-02, 3.872e-02, -4.779e-03, -1.760e-01, 5.178e-02, 1.254e-01, 4.062e-02, -1.959e-02), r);\n\tr = MulAdd(s2_7, M4(7.194e-03, 9.460e-02, 1.942e-02, -1.386e-01, -3.507e-02, 9.574e-02, -4.142e-02, 5.273e-02, 1.645e-01, 2.898e-02, -1.497e-02, -9.664e-02, 7.539e-02, 4.883e-02, -3.846e-02, 2.114e-02), r);\n\tr = MulAdd(s2_8, M4(-2.434e-02, 7.672e-02, -2.805e-02, 7.755e-02, -3.408e-02, -4.293e-02, 5.407e-02, 3.070e-02, -6.660e-02, -4.597e-02, 1.648e-01, -2.008e-02, -2.521e-02, -1.408e-01, -4.347e-02, -9.289e-03), r);\n\tr = MulAdd(s3_0, M4(1.012e-01, 6.055e-03, 4.149e-02, 7.759e-02, 1.419e-01, -1.508e-01, 2.115e-03, -1.247e-01, 3.161e-02, 5.292e-02, -9.686e-02, -3.136e-02, 1.120e-01, -4.613e-02, 7.987e-02, 2.106e-02), r);\n\tr = MulAdd(s3_1, M4(2.114e-01, 1.876e-02, -1.502e-02, -6.683e-02, 3.650e-02, 4.148e-02, 1.993e-01, 1.808e-01, -3.406e-02, -9.241e-02, -2.440e-02, 6.059e-02, -1.536e-01, 5.586e-02, -2.191e-02, -1.032e-01), r);\n\tr = MulAdd(s3_2, M4(3.923e-02, -1.849e-02, 2.949e-02, 2.600e-02, -2.316e-01, 7.968e-02, -5.900e-02, -9.448e-02, -6.059e-02, 1.785e-02, 3.615e-02, -1.606e-02, -5.339e-02, 4.620e-03, -2.418e-03, 1.238e-03), r);\n\tr = MulAdd(s3_3, M4(7.162e-02, -8.434e-03, 3.068e-02, -3.827e-02, -3.382e-02, 6.050e-02, 5.946e-02, -1.926e-02, 2.248e-02, 7.102e-02, -1.229e-01, 5.999e-02, -5.849e-02, 5.146e-02, 8.067e-02, 2.308e-01), r);\n\tr = MulAdd(s3_4, M4(-1.226e-01, 2.114e-02, -5.832e-02, 6.470e-02, 1.614e-01, 1.545e-02, 2.034e-01, -9.283e-02, -1.988e-01, 7.386e-02, 1.004e-01, 7.819e-02, 3.907e-02, -1.181e-02, -5.301e-03, -2.760e-01), r);\n\tr = MulAdd(s3_5, M4(9.548e-02, 1.890e-01, 4.343e-02, -5.520e-02, -8.640e-02, -2.114e-01, 1.054e-01, 2.162e-02, 4.599e-02, 9.750e-02, 4.538e-02, 1.413e-02, 3.427e-02, -1.288e-02, 1.115e-01, 2.414e-02), r);\n\tr = MulAdd(s3_6, M4(-1.637e-01, -6.740e-02, 2.678e-02, 4.619e-02, -5.243e-02, -2.195e-02, -1.711e-01, 1.221e-01, -1.425e-02, -7.919e-02, 2.556e-03, -5.645e-02, -4.940e-02, 1.180e-01, 1.081e-01, 1.125e-01), r);\n\tr = MulAdd(s3_7, M4(-8.975e-03, -8.873e-02, 1.425e-03, -3.873e-02, 1.571e-02, -2.780e-02, 3.422e-03, 8.513e-02, 3.560e-02, -2.184e-01, 1.488e-02, 3.050e-02, 6.037e-03, -1.835e-01, 2.810e-02, -8.370e-02), r);\n\tr = MulAdd(s3_8, M4(1.999e-03, -5.704e-02, -1.171e-02, 2.724e-02, -9.886e-02, -1.501e-01, 3.304e-02, 8.635e-02, -5.235e-02, -1.000e-01, -1.874e-02, -2.803e-02, -6.573e-02, 9.588e-03, 1.990e-03, -1.261e-03), r);\n\tr = MulAdd(s4_0, M4(3.205e-02, -9.399e-02, -6.611e-02, -9.457e-03, -6.284e-02, -1.119e-01, 3.832e-02, 5.318e-02, 9.238e-03, -7.695e-02, -9.238e-03, -4.017e-02, -2.402e-02, 8.154e-03, -1.508e-02, 1.066e-02), r);\n\tr = MulAdd(s4_1, M4(-1.332e-01, -1.601e-02, 2.876e-03, -8.483e-02, -4.600e-02, 8.589e-02, 3.150e-02, 6.373e-02, -3.873e-02, -2.948e-02, 2.025e-02, 3.242e-02, -2.013e-02, -8.295e-02, -4.246e-02, -2.076e-02), r);\n\tr = MulAdd(s4_2, M4(4.445e-01, 2.664e-03, 7.754e-02, 6.927e-02, -3.116e-02, 3.909e-02, -1.533e-01, -8.617e-02, 1.688e-01, 5.947e-02, 7.590e-02, 2.037e-04, 1.257e-01, -5.657e-02, 8.065e-02, -8.020e-02), r);\n\tr = MulAdd(s4_3, M4(-1.600e-01, -2.895e-01, 6.957e-02, -2.824e-01, -3.329e-02, 3.042e-02, 1.389e-01, 1.333e-01, -8.765e-03, 7.704e-02, -3.357e-02, 7.192e-02, 1.768e-01, 1.249e-02, 7.956e-02, -4.813e-02), r);\n\tr = MulAdd(s4_4, M4(-3.023e-01, 2.612e-01, 7.912e-02, -1.408e-01, -1.839e-01, 5.725e-03, -9.410e-03, -8.858e-02, 2.097e-02, -1.919e-02, -1.433e-02, -6.510e-02, 8.973e-02, 1.642e-02, -3.251e-01, -1.458e-01), r);\n\tr = MulAdd(s4_5, M4(3.546e-02, -5.626e-02, 4.315e-02, 6.790e-02, -1.167e-01, 9.421e-04, -5.773e-02, -9.024e-02, -9.923e-02, -4.666e-02, 1.084e-01, -2.120e-02, 4.064e-02, -1.441e-01, -6.815e-02, 2.756e-02), r);\n\tr = MulAdd(s4_6, M4(-9.100e-02, -3.818e-01, -4.212e-02, -1.122e-01, 4.123e-02, -8.688e-02, 8.607e-02, 1.704e-01, -4.244e-03, 4.439e-03, -8.617e-02, -2.501e-03, 7.886e-02, -8.174e-03, 1.000e-01, 6.876e-02), r);\n\tr = MulAdd(s4_7, M4(1.803e-01, 3.233e-01, 2.117e-01, -1.421e-01, 1.628e-01, 4.659e-02, 3.521e-02, -8.703e-02, 1.315e-02, 5.076e-02, -3.939e-02, 3.778e-02, -1.133e-01, 1.274e-01, 2.083e-02, 8.438e-02), r);\n\tr = MulAdd(s4_8, M4(2.643e-02, -1.661e-01, 1.507e-01, -1.802e-01, 1.450e-01, -1.900e-03, 8.990e-03, 5.479e-02, -6.823e-02, -3.225e-02, -4.038e-02, -1.074e-02, -5.143e-02, 4.436e-02, -8.175e-02, 9.150e-02), r);\n\tr = MulAdd(s5_0, M4(-6.334e-02, -9.309e-02, -3.135e-02, -3.076e-02, -8.207e-02, -3.958e-02, -5.049e-02, 1.179e-01, -8.811e-02, -8.125e-03, 4.048e-02, 8.021e-02, -1.135e-01, 4.696e-03, -6.265e-02, 3.116e-02), r);\n\tr = MulAdd(s5_1, M4(1.649e-01, 3.319e-02, 3.213e-02, 3.601e-02, 2.087e-01, 2.173e-01, -9.656e-02, 4.548e-02, -7.523e-02, -1.476e-01, -3.387e-02, -1.510e-01, -4.976e-02, 1.161e-01, 2.292e-01, -4.014e-02), r);\n\tr = MulAdd(s5_2, M4(9.400e-02, 6.971e-02, -7.026e-02, 6.791e-02, -5.204e-02, 3.833e-03, -6.243e-02, -2.815e-02, -1.347e-01, 8.703e-02, -2.383e-01, -2.568e-02, 3.358e-02, 2.220e-02, -5.739e-02, -1.125e-01), r);\n\tr = MulAdd(s5_3, M4(1.075e-01, 3.235e-02, -3.910e-02, 1.644e-02, 1.422e-01, 1.588e-01, -5.108e-01, -6.150e-02, 1.071e-01, -2.141e-01, -1.436e-01, 3.852e-02, -2.299e-01, 1.624e-03, 1.762e-01, -2.059e-01), r);\n\tr = MulAdd(s5_4, M4(-2.080e-01, 2.677e-02, 6.496e-02, -1.136e-01, -9.508e-02, -5.801e-02, 3.331e-03, -1.121e-01, -2.301e-03, -8.857e-02, -5.760e-02, 3.679e-02, 6.023e-02, -2.398e-01, 3.457e-02, 1.996e-01), r);\n\tr = MulAdd(s5_5, M4(-1.309e-02, -4.267e-02, -6.198e-02, 7.217e-02, 1.339e-01, 1.572e-02, -8.580e-03, -4.055e-02, 3.805e-02, -2.509e-02, -2.210e-02, -2.344e-02, 1.386e-01, 1.647e-02, 7.771e-03, -2.897e-02), r);\n\tr = MulAdd(s5_6, M4(8.146e-04, -5.321e-02, 1.214e-02, 5.411e-03, 1.198e-01, 3.410e-01, -7.843e-01, 3.745e-01, 1.624e-02, 1.452e-01, 2.391e-01, -1.338e-01, -6.920e-02, 7.982e-02, 1.024e-01, -2.698e-02), r);\n\tr = MulAdd(s5_7, M4(2.488e-02, -9.830e-02, -7.100e-03, -5.339e-02, -1.140e-01, -2.442e-01, -1.729e-01, -8.192e-02, -4.503e-02, 2.773e-02, 1.752e-01, 9.685e-02, 9.042e-02, 9.545e-02, 1.029e-01, 1.363e-01), r);\n\tr = MulAdd(s5_8, M4(-8.806e-03, 1.473e-01, 1.098e-01, 2.410e-02, 2.657e-02, -1.344e-01, -1.432e-01, -7.008e-02, 8.632e-02, 5.413e-02, -5.891e-02, -1.166e-01, 1.192e-01, -1.548e-02, -8.526e-02, 7.829e-02), r);\n\tr = MulAdd(s6_0, M4(2.450e-01, 7.761e-02, 3.561e-01, -1.446e-01, 4.047e-01, 1.167e-01, 1.745e-01, 2.382e-03, 1.416e-01, -7.666e-02, -1.050e-01, -6.977e-02, 7.872e-02, 2.556e-02, -5.153e-03, 9.230e-02), r);\n\tr = MulAdd(s6_1, M4(3.802e-01, 1.542e-02, 4.255e-01, -9.081e-02, 2.666e-01, 2.526e-01, 8.105e-02, 1.429e-01, -4.946e-02, 2.067e-02, 4.394e-02, -1.590e-01, 6.722e-02, 5.235e-02, -4.439e-02, -8.620e-02), r);\n\tr = MulAdd(s6_2, M4(8.481e-02, -2.127e-01, 2.365e-01, 4.175e-02, 7.039e-02, -7.309e-02, -3.229e-01, -1.621e-01, 1.070e-01, -1.676e-01, -4.287e-02, 3.196e-03, -5.899e-03, 5.405e-02, 4.468e-03, -4.450e-02), r);\n\tr = MulAdd(s6_3, M4(-1.412e-01, 3.433e-01, -2.101e-01, -3.041e-01, -2.616e-01, -1.542e-01, -9.384e-02, -2.081e-01, 1.167e-01, 8.468e-03, -2.153e-01, -1.362e-01, -4.372e-02, 2.660e-02, 3.163e-02, -5.996e-02), r);\n\tr = MulAdd(s6_4, M4(-2.437e-01, 3.818e-01, -1.644e-01, 1.349e-01, -8.518e-02, 2.374e-01, 6.275e-02, -1.298e-01, -1.531e-02, 6.807e-02, -3.120e-01, 7.608e-02, 2.047e-02, 1.276e-02, -1.387e-01, 7.087e-02), r);\n\tr = MulAdd(s6_5, M4(-1.766e-01, 4.749e-03, -1.868e-01, -1.667e-01, 2.142e-01, -1.492e-01, -1.395e-01, -1.233e-01, -8.077e-02, -8.612e-02, -1.417e-02, -6.332e-02, -6.332e-02, 5.724e-03, 5.660e-02, -1.328e-02), r);\n\tr = MulAdd(s6_6, M4(1.225e-01, 2.327e-01, 1.340e-01, -2.051e-01, 1.648e-02, -2.087e-01, -3.521e-01, -8.182e-02, 9.954e-02, -8.236e-02, 1.116e-01, -2.865e-02, -1.693e-03, -6.582e-02, -1.012e-02, -2.251e-02), r);\n\tr = MulAdd(s6_7, M4(1.455e-01, 1.452e-01, -1.597e-01, 6.380e-02, -1.356e-01, 9.840e-02, 1.455e-01, -3.021e-01, -5.766e-02, 1.418e-02, -2.394e-01, 1.894e-02, 6.877e-02, 1.787e-02, -2.350e-02, 9.355e-02), r);\n\tr = MulAdd(s6_8, M4(9.602e-02, -1.250e-01, 1.102e-01, -1.857e-01, 8.558e-02, 1.271e-01, 6.047e-02, -5.316e-02, 6.796e-03, 7.151e-02, -4.392e-02, -4.725e-02, -9.142e-02, -1.618e-01, 5.364e-02, -5.614e-02), r);\n\tr = MulAdd(s7_0, M4(1.304e-01, 1.012e-01, -1.233e-02, -1.521e-01, 3.336e-02, 1.118e-01, -4.931e-02, -1.025e-02, 8.478e-02, -2.517e-02, 3.591e-02, 4.479e-02, 3.422e-02, -2.221e-02, -7.071e-02, 4.681e-02), r);\n\tr = MulAdd(s7_1, M4(1.072e-01, -4.905e-02, -7.925e-02, -2.376e-02, -2.374e-02, -5.839e-02, -4.969e-02, 3.719e-02, -8.523e-02, -4.878e-02, -1.247e-01, -5.047e-02, -1.749e-01, -3.122e-01, 5.099e-02, 1.078e-01), r);\n\tr = MulAdd(s7_2, M4(-8.340e-02, -2.672e-02, -1.344e-01, 7.982e-02, 1.739e-02, -8.374e-02, -1.019e-01, -7.983e-02, 8.299e-02, -6.768e-02, 9.196e-02, -1.012e-02, -5.912e-01, 2.317e-01, 2.071e-01, -7.993e-02), r);\n\tr = MulAdd(s7_3, M4(-1.920e-02, 8.939e-02, 4.551e-02, -6.470e-02, -5.342e-02, -8.767e-04, 5.145e-02, -1.230e-01, -8.962e-02, 7.062e-02, 2.208e-01, 1.125e-01, -3.309e-02, 9.531e-02, -2.021e-01, -2.237e-01), r);\n\tr = MulAdd(s7_4, M4(-7.611e-02, -6.968e-02, 2.872e-02, 5.603e-02, -1.452e-02, -8.395e-02, 1.104e-01, -8.210e-02, 1.484e-01, 5.219e-02, -1.372e-01, -6.380e-02, 2.342e-01, -5.879e-01, 6.368e-03, 2.740e-01), r);\n\tr = MulAdd(s7_5, M4(-7.619e-02, -6.900e-04, -1.678e-01, 4.266e-02, 7.434e-02, -1.416e-01, -1.516e-01, -1.948e-01, -8.917e-02, 5.449e-02, -8.011e-02, 1.085e-02, -5.211e-03, 2.239e-01, -7.341e-02, 2.314e-01), r);\n\tr = MulAdd(s7_6, M4(2.660e-03, 3.388e-02, 7.300e-02, -1.387e-01, -5.790e-02, 8.450e-02, 1.907e-01, -1.624e-01, -3.738e-02, 2.133e-02, -1.700e-02, 7.501e-03, -1.577e-02, -4.350e-02, 2.273e-01, 2.076e-02), r);\n\tr = MulAdd(s7_7, M4(3.879e-02, -4.186e-03, 7.965e-02, 5.320e-02, -4.165e-02, -4.829e-02, -1.182e-02, -2.168e-01, -4.293e-02, -9.301e-02, 3.442e-02, -6.015e-02, 1.039e-01, -8.428e-03, 2.337e-02, -7.242e-02), r);\n\tr = MulAdd(s7_8, M4(1.261e-02, -4.033e-02, -1.000e-01, -3.256e-02, 1.559e-02, 6.993e-02, 4.303e-02, -8.646e-02, -7.752e-04, -8.626e-03, 7.203e-03, -1.830e-02, -1.236e-02, -4.381e-03, 1.953e-01, -9.189e-02), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.705e-02, 3.527e-02, 3.627e-01, -1.176e-02 };\n\tr = MulAdd(s0_0, M4(8.402e-02, -1.835e-01, 6.598e-02, -1.548e-01, 5.878e-02, -5.101e-03, -2.593e-03, -7.877e-02, 4.725e-02, -9.164e-03, -1.804e-02, -3.882e-02, -3.345e-02, -7.255e-02, -3.130e-02, -5.227e-02), r);\n\tr = MulAdd(s0_1, M4(-2.789e-02, 7.644e-02, 9.874e-02, -9.174e-02, -1.019e-01, 8.883e-02, -1.955e-02, -1.056e-01, -2.237e-02, -1.551e-01, 9.123e-02, 1.360e-04, 1.684e-01, -2.681e-03, 7.962e-03, -3.443e-02), r);\n\tr = MulAdd(s0_2, M4(-1.995e-01, -6.410e-02, 1.272e-02, 6.584e-02, 2.568e-02, 4.247e-02, 2.778e-03, -4.476e-03, 7.411e-02, -4.275e-02, 1.673e-03, -1.613e-01, -2.389e-01, 1.794e-02, -4.776e-02, 1.287e-01), r);\n\tr = MulAdd(s0_3, M4(2.962e-01, 2.757e-01, 1.657e-02, -1.746e-01, 3.828e-02, -1.434e-01, 4.698e-02, 3.134e-02, 1.626e-01, 1.804e-01, 2.535e-01, 9.081e-02, 6.562e-02, -5.491e-01, 2.183e-03, 2.761e-01), r);\n\tr = MulAdd(s0_4, M4(-1.751e-01, 1.097e-01, -1.143e-01, 9.638e-02, -1.796e-01, -2.485e-01, -9.071e-03, 2.298e-02, -1.646e-01, -5.756e-02, 5.953e-02, 4.503e-02, 2.645e-02, 2.751e-02, 7.197e-02, 4.666e-02), r);\n\tr = MulAdd(s0_5, M4(5.779e-02, 2.535e-01, -9.481e-02, -3.661e-02, 3.967e-02, 8.468e-02, 8.229e-03, 2.280e-02, 6.538e-02, 1.966e-02, -2.516e-02, 1.073e-01, 4.655e-02, 1.398e-01, -1.964e-02, 5.247e-02), r);\n\tr = MulAdd(s0_6, M4(-7.597e-02, -4.377e-01, 8.354e-02, -1.889e-02, 1.302e-01, -9.488e-02, -5.391e-03, 2.192e-01, 1.187e-01, -5.301e-01, 4.636e-02, 6.813e-02, -3.251e-01, 1.225e-02, -6.616e-02, -8.459e-02), r);\n\tr = MulAdd(s0_7, M4(-1.257e-01, 1.175e-02, 1.530e-01, 2.926e-02, -2.093e-02, 1.052e-01, 4.853e-03, -8.562e-02, 4.867e-02, -8.620e-02, -3.634e-03, 9.557e-02, 7.241e-02, -3.576e-02, -1.028e-01, -1.234e-01), r);\n\tr = MulAdd(s0_8, M4(-1.866e-01, -3.209e-02, -2.943e-02, -5.855e-02, 2.794e-04, 3.564e-02, 4.627e-03, -3.217e-02, -1.304e-01, 5.295e-02, -1.062e-01, 6.101e-02, 5.828e-04, -1.247e-01, -5.507e-02, 3.192e-02), r);\n\tr = MulAdd(s1_0, M4(1.164e-01, -7.474e-02, -2.857e-02, -6.668e-02, 2.265e-01, -5.164e-02, -1.004e-02, 6.276e-02, -3.215e-02, 5.380e-02, -3.521e-02, -4.491e-02, 3.978e-02, -5.505e-02, -2.772e-02, -3.175e-02), r);\n\tr = MulAdd(s1_1, M4(8.632e-02, -2.542e-02, 4.180e-02, -1.574e-03, 1.349e-01, 5.947e-02, -1.205e-01, 1.823e-01, -4.069e-02, -1.011e-01, 2.783e-02, 5.925e-02, 8.958e-03, 5.379e-03, 2.129e-02, -1.198e-02), r);\n\tr = MulAdd(s1_2, M4(8.469e-02, -6.346e-02, -3.136e-02, 3.843e-02, -1.799e-01, 1.197e-01, 6.340e-02, 2.738e-02, -2.734e-03, -2.145e-02, -1.682e-03, -3.851e-02, -1.415e-01, 4.641e-02, -3.239e-02, 8.861e-02), r);\n\tr = MulAdd(s1_3, M4(3.989e-03, 1.631e-01, 3.869e-03, 1.441e-01, 1.246e-01, -1.019e-01, 1.252e-01, 4.696e-02, -1.789e-02, 2.595e-01, 1.141e-01, 4.445e-03, -9.038e-02, -7.196e-03, -2.213e-03, -1.800e-02), r);\n\tr = MulAdd(s1_4, M4(-1.560e-02, -9.329e-02, 2.696e-02, -2.862e-02, -1.369e-01, -2.104e-01, 2.051e-01, 9.208e-02, 2.653e-02, 1.976e-02, -8.770e-04, -1.043e-01, -1.875e-02, -1.249e-01, 8.375e-02, 1.273e-02), r);\n\tr = MulAdd(s1_5, M4(-1.079e-01, 2.550e-02, 1.182e-02, 5.653e-02, 4.882e-02, 1.534e-01, 3.794e-03, -4.484e-02, 8.980e-02, 6.711e-03, -2.761e-02, -2.076e-02, 7.742e-02, -9.804e-02, 1.470e-02, -2.654e-02), r);\n\tr = MulAdd(s1_6, M4(-6.320e-02, 9.802e-02, -2.265e-02, 2.200e-02, -5.478e-02, -1.041e-01, -2.820e-02, 6.110e-03, -9.439e-02, -2.064e-02, -7.192e-03, -3.419e-02, 1.188e-01, 1.138e-01, -4.089e-03, 2.878e-02), r);\n\tr = MulAdd(s1_7, M4(-1.218e-02, 3.202e-02, 2.396e-03, -8.416e-02, 1.513e-01, 2.373e-02, 3.390e-02, -8.421e-02, 4.312e-02, 1.243e-01, -3.633e-02, -1.061e-01, -6.732e-03, 3.347e-02, -4.659e-02, 7.279e-02), r);\n\tr = MulAdd(s1_8, M4(5.111e-02, 4.784e-02, -1.719e-02, 3.597e-02, -1.890e-01, 6.043e-02, -7.685e-03, 4.533e-02, -9.896e-02, 1.394e-02, -1.045e-01, -8.497e-02, 1.063e-01, 5.015e-02, 5.828e-03, -6.269e-02), r);\n\tr = MulAdd(s2_0, M4(2.285e-01, -3.687e-02, 6.187e-02, -1.497e-02, 9.003e-02, 3.358e-02, -2.267e-02, 1.189e-01, 3.308e-03, -3.413e-02, 1.361e-02, -5.823e-02, -1.229e-01, -1.184e-01, -3.262e-02, -7.547e-02), r);\n\tr = MulAdd(s2_1, M4(-5.018e-02, 2.910e-02, -4.259e-03, 5.347e-02, 5.978e-02, -2.165e-02, -2.054e-03, -1.875e-02, -5.987e-02, 6.383e-02, 5.556e-02, 2.577e-02, 7.559e-02, 7.018e-02, 2.289e-02, 6.137e-03), r);\n\tr = MulAdd(s2_2, M4(-6.007e-02, -4.349e-02, 1.945e-02, -1.882e-02, -3.415e-02, -5.427e-02, 2.093e-02, 8.056e-02, 1.078e-01, -5.950e-02, 1.008e-01, 2.744e-02, 2.153e-02, -1.352e-01, -5.578e-03, -1.774e-01), r);\n\tr = MulAdd(s2_3, M4(2.468e-01, -9.416e-02, -1.857e-01, -8.229e-02, -4.687e-02, -3.897e-02, -3.143e-02, -2.024e-02, 2.018e-01, -1.233e-02, 1.028e-01, -8.787e-02, 5.332e-02, -6.006e-02, 5.621e-02, -5.948e-02), r);\n\tr = MulAdd(s2_4, M4(-3.283e-01, -4.601e-03, 6.829e-05, -1.760e-02, 7.659e-02, 1.189e-02, 5.334e-02, 1.243e-02, -4.190e-02, -6.888e-02, -2.090e-02, 4.872e-02, -2.428e-01, 1.594e-01, -6.708e-02, -4.925e-02), r);\n\tr = MulAdd(s2_5, M4(-5.396e-02, 4.187e-02, -4.452e-02, 9.492e-02, -1.380e-01, 1.535e-01, 2.170e-02, -1.384e-01, 4.016e-02, 2.773e-02, 1.567e-02, -8.716e-02, -9.485e-02, 2.299e-01, 8.372e-02, -1.730e-01), r);\n\tr = MulAdd(s2_6, M4(2.509e-02, 1.046e-01, 1.253e-01, -2.533e-01, -8.064e-03, -1.683e-01, -3.098e-02, 2.254e-02, 1.242e-01, -5.642e-02, 9.277e-02, -4.424e-03, -5.620e-02, -2.193e-01, 9.624e-02, -8.891e-02), r);\n\tr = MulAdd(s2_7, M4(-2.898e-01, 1.479e-01, -2.662e-02, -2.493e-01, -3.300e-02, 1.319e-02, -3.639e-02, 4.491e-02, -1.567e-02, 7.557e-02, -7.205e-04, -3.277e-02, 4.877e-02, 3.076e-01, 6.273e-02, 6.527e-02), r);\n\tr = MulAdd(s2_8, M4(-1.365e-01, -3.416e-02, 5.075e-03, -7.978e-02, 4.832e-02, -5.712e-02, 7.845e-02, -5.435e-02, 4.310e-02, 2.942e-03, 8.831e-02, -1.021e-01, -1.602e-01, 8.820e-02, 3.409e-02, 3.347e-02), r);\n\tr = MulAdd(s3_0, M4(9.747e-02, 2.207e-02, 1.317e-02, -9.682e-02, 2.017e-01, -6.119e-03, 1.220e-02, 2.629e-02, -1.393e-02, 5.451e-02, 8.014e-02, -3.469e-02, -3.029e-02, -7.257e-02, -2.248e-02, 4.954e-02), r);\n\tr = MulAdd(s3_1, M4(1.043e-01, 9.222e-02, -1.606e-02, -1.053e-01, 1.731e-01, -5.331e-02, -7.956e-03, -1.294e-01, 1.511e-01, 4.706e-02, -3.527e-04, 2.963e-01, -3.024e-02, -2.760e-02, 6.659e-02, 3.214e-02), r);\n\tr = MulAdd(s3_2, M4(4.838e-02, -9.306e-02, -6.023e-03, 4.483e-02, -3.687e-02, -9.697e-02, -3.225e-02, -1.746e-01, 1.721e-02, -4.435e-02, 1.228e-01, 3.103e-01, 5.914e-04, -3.446e-02, -1.994e-02, 5.386e-02), r);\n\tr = MulAdd(s3_3, M4(-1.939e-01, -1.580e-01, -4.895e-02, 1.412e-03, -4.898e-03, -1.639e-01, -4.504e-02, -2.401e-02, 1.711e-01, -1.822e-01, 1.008e-01, 1.034e-02, 3.407e-02, -4.789e-02, -9.452e-03, 7.574e-02), r);\n\tr = MulAdd(s3_4, M4(5.688e-02, -1.474e-01, 4.510e-02, -4.189e-02, 1.122e-01, -1.644e-01, 4.926e-02, -5.456e-02, -6.581e-02, -4.086e-01, 2.528e-01, -1.017e-01, 3.020e-02, -8.277e-02, -1.366e-02, 8.426e-02), r);\n\tr = MulAdd(s3_5, M4(-7.230e-03, 5.720e-02, 3.569e-02, -3.742e-02, 1.180e-01, 1.606e-01, -2.458e-02, -1.471e-02, -1.738e-01, 7.709e-03, 2.068e-01, -1.951e-02, 4.671e-02, 7.615e-02, 1.091e-03, 7.760e-02), r);\n\tr = MulAdd(s3_6, M4(2.175e-03, 1.722e-01, 2.253e-02, 2.303e-01, -9.743e-02, -1.569e-01, -1.029e-01, -3.046e-02, -5.847e-02, 1.876e-01, 9.724e-02, -1.385e-01, -3.451e-03, 2.051e-01, -4.468e-02, -3.382e-02), r);\n\tr = MulAdd(s3_7, M4(-2.835e-02, -4.078e-03, -4.575e-02, 4.651e-02, 4.832e-02, -1.773e-01, -3.178e-03, -1.705e-01, 8.595e-02, -3.243e-01, 2.306e-01, -3.663e-01, 6.979e-02, 7.939e-02, -6.449e-02, -8.105e-02), r);\n\tr = MulAdd(s3_8, M4(6.073e-03, -3.105e-04, 2.874e-03, 8.638e-02, -5.350e-02, 2.503e-01, -2.975e-02, 1.869e-01, 2.408e-01, -1.582e-02, 1.506e-01, -1.568e-01, -1.046e-01, -4.320e-03, 1.539e-02, -8.431e-02), r);\n\tr = MulAdd(s4_0, M4(3.759e-02, 5.250e-02, 2.585e-02, -1.190e-01, -2.020e-01, -1.738e-01, -1.521e-01, -2.284e-01, 1.748e-01, -6.553e-03, 3.122e-02, 1.068e-01, -4.484e-02, 6.121e-02, 5.943e-03, -2.170e-02), r);\n\tr = MulAdd(s4_1, M4(-6.344e-02, 1.005e-01, 1.640e-02, -1.009e-01, 2.528e-01, 1.125e-01, -6.701e-02, -5.406e-02, -1.221e-01, -1.250e-01, 1.085e-01, 1.870e-01, -8.933e-03, 5.957e-02, -1.302e-02, -1.364e-01), r);\n\tr = MulAdd(s4_2, M4(1.354e-01, -4.092e-02, 2.189e-02, -2.721e-02, -2.853e-01, 1.884e-01, 3.689e-02, -4.418e-01, 1.393e-02, -2.359e-03, 8.880e-03, -7.302e-02, 5.377e-02, -9.811e-02, 9.482e-02, -7.366e-02), r);\n\tr = MulAdd(s4_3, M4(-4.037e-02, -6.727e-02, -1.165e-02, 5.868e-02, 1.135e-01, 1.528e-02, -9.808e-02, 3.825e-02, -9.465e-03, -3.143e-02, -2.417e-01, -1.116e-02, -3.929e-02, -7.951e-02, 3.391e-02, -9.762e-02), r);\n\tr = MulAdd(s4_4, M4(-2.092e-02, -2.204e-01, -1.407e-02, 1.174e-01, 1.338e-01, 2.886e-01, -1.430e-01, -2.413e-01, -3.739e-02, -1.132e-01, 1.138e-01, -2.281e-02, -9.746e-02, 5.206e-02, 1.268e-01, 1.185e-01), r);\n\tr = MulAdd(s4_5, M4(-7.319e-02, 1.822e-02, -1.961e-02, -1.779e-03, 2.727e-01, 1.450e-01, -2.256e-02, -1.149e-01, 4.839e-02, 7.495e-02, 5.834e-03, 2.721e-02, 5.098e-03, -4.490e-02, 1.423e-01, 1.510e-02), r);\n\tr = MulAdd(s4_6, M4(1.201e-01, -1.831e-01, -3.828e-02, 3.226e-02, -3.452e-01, -1.794e-01, -1.403e-02, -9.156e-02, 1.067e-01, -4.264e-02, -2.530e-02, 1.946e-02, 2.963e-02, -2.627e-01, -6.242e-02, -5.993e-02), r);\n\tr = MulAdd(s4_7, M4(-1.202e-01, 1.040e-01, 2.414e-02, -6.253e-02, 8.447e-02, -2.435e-01, -2.410e-02, 9.560e-03, 2.747e-02, 5.268e-03, 2.616e-02, 1.051e-01, -6.211e-02, 7.567e-02, -8.283e-03, -1.307e-01), r);\n\tr = MulAdd(s4_8, M4(3.009e-02, -6.296e-03, 1.735e-02, 5.828e-02, 1.022e-01, -9.718e-02, 2.726e-03, -1.039e-01, 1.170e-02, -4.387e-02, 5.666e-03, -3.432e-02, -9.777e-02, -4.244e-02, -1.039e-01, -1.724e-01), r);\n\tr = MulAdd(s5_0, M4(-7.951e-02, -3.666e-02, 5.021e-02, 1.265e-01, -1.276e-01, 4.888e-02, -2.024e-02, 7.572e-02, -5.228e-02, 7.304e-02, 4.496e-02, 1.333e-01, -3.121e-02, 1.321e-01, -1.742e-02, 3.417e-02), r);\n\tr = MulAdd(s5_1, M4(1.194e-01, -7.352e-02, 6.184e-02, 2.131e-01, -2.250e-02, -1.762e-01, 4.106e-03, 9.620e-02, -1.975e-01, -6.519e-02, 1.051e-01, 1.721e-01, 5.495e-02, 1.228e-01, -7.668e-02, -1.179e-01), r);\n\tr = MulAdd(s5_2, M4(1.922e-01, -4.991e-02, -4.261e-02, 1.487e-01, 5.878e-02, -5.169e-02, -6.040e-02, -1.530e-02, 1.252e-02, -2.512e-02, -2.008e-02, 2.385e-02, 6.140e-03, 8.180e-04, 1.241e-02, 8.055e-02), r);\n\tr = MulAdd(s5_3, M4(-1.951e-01, 1.221e-01, 4.860e-02, -1.653e-01, 6.190e-02, 2.393e-01, 6.098e-02, 1.480e-01, 1.565e-03, -1.047e-01, -2.786e-01, -3.447e-03, 7.533e-03, 1.296e-01, 1.720e-02, 6.717e-02), r);\n\tr = MulAdd(s5_4, M4(9.892e-03, -2.393e-01, -6.465e-02, 7.031e-03, -8.029e-02, 1.763e-01, 2.851e-02, 1.690e-02, 1.832e-02, -1.088e-01, 6.066e-02, 1.175e-01, 1.053e-01, -1.132e-01, 8.121e-02, 1.441e-01), r);\n\tr = MulAdd(s5_5, M4(-6.115e-02, 3.854e-02, 2.771e-02, -2.917e-01, 8.953e-02, 8.536e-02, -5.394e-02, 4.004e-02, -5.287e-02, 7.258e-02, 1.048e-02, 2.022e-02, 8.242e-02, -3.174e-02, -3.985e-02, 1.039e-01), r);\n\tr = MulAdd(s5_6, M4(9.701e-02, -2.529e-01, 5.811e-02, 1.978e-01, -6.219e-02, 2.106e-01, 2.179e-02, -1.517e-01, -1.459e-01, 6.421e-02, 2.274e-02, 3.116e-03, 1.915e-02, -1.672e-01, -6.981e-02, 4.877e-02), r);\n\tr = MulAdd(s5_7, M4(2.666e-01, -5.971e-02, 2.709e-02, 4.966e-02, 4.099e-03, 1.801e-02, -3.899e-02, -8.567e-02, 2.451e-02, -1.638e-02, 2.967e-02, 6.272e-02, -6.061e-02, 6.665e-02, 7.756e-03, 7.877e-02), r);\n\tr = MulAdd(s5_8, M4(-1.622e-01, 3.626e-02, -2.753e-02, 2.666e-01, 5.491e-02, -7.876e-02, 4.837e-02, -6.127e-02, -4.035e-02, 5.379e-03, 1.362e-02, -5.027e-02, -5.938e-02, -1.966e-02, -4.458e-02, 1.219e-01), r);\n\tr = MulAdd(s6_0, M4(-1.073e-01, -2.268e-02, -5.501e-03, -1.056e-01, 9.025e-02, 5.071e-02, 8.031e-02, 5.300e-02, -1.550e-02, -3.503e-02, -7.288e-03, -7.107e-02, -9.045e-03, 5.579e-02, -7.203e-04, -7.520e-02), r);\n\tr = MulAdd(s6_1, M4(8.352e-02, -7.482e-03, 1.065e-02, -1.990e-02, -5.408e-02, -3.289e-02, -7.212e-03, 2.428e-01, -5.297e-02, -3.798e-02, -1.253e-02, -8.234e-02, 3.211e-02, -5.380e-02, -1.238e-01, -2.021e-02), r);\n\tr = MulAdd(s6_2, M4(9.075e-02, -4.485e-02, -2.579e-02, 2.019e-02, -2.033e-02, 1.251e-02, -2.849e-03, -6.163e-02, -1.619e-02, 9.033e-02, -5.164e-02, -1.889e-01, -2.819e-02, 1.528e-01, -7.519e-02, 8.862e-02), r);\n\tr = MulAdd(s6_3, M4(8.999e-03, 1.290e-02, 3.210e-02, -3.479e-02, -1.223e-01, 3.118e-02, -1.110e-01, -1.087e-01, -7.495e-02, 1.912e-02, -2.434e-02, -2.479e-02, 8.889e-02, -9.007e-02, -9.235e-02, -5.254e-02), r);\n\tr = MulAdd(s6_4, M4(-1.233e-01, 8.849e-02, 8.545e-02, 4.886e-03, 9.337e-02, 1.546e-01, -4.189e-02, 1.109e-01, 4.722e-02, 2.499e-01, 3.091e-02, 6.654e-02, -1.390e-01, -9.918e-02, -2.202e-01, -2.963e-02), r);\n\tr = MulAdd(s6_5, M4(8.837e-02, 5.132e-02, -9.932e-02, -2.470e-02, 1.230e-01, -1.539e-02, -1.717e-03, 9.658e-02, -9.416e-02, -1.711e-01, -2.158e-02, -4.066e-02, 1.597e-01, 2.003e-01, -1.581e-01, -4.412e-02), r);\n\tr = MulAdd(s6_6, M4(7.939e-02, 1.110e-01, -1.445e-02, 1.051e-01, 1.901e-01, -1.137e-01, 6.565e-03, 2.951e-02, -3.434e-02, 2.136e-01, 4.927e-02, -1.229e-01, -4.579e-02, -7.279e-02, 3.103e-03, 9.711e-02), r);\n\tr = MulAdd(s6_7, M4(3.305e-02, -6.877e-02, 4.758e-02, -9.783e-03, -1.096e-01, 1.412e-01, 4.420e-04, 6.503e-02, 8.466e-02, -6.394e-02, 8.932e-02, 5.979e-02, 1.053e-01, -7.737e-02, -6.675e-02, 1.117e-02), r);\n\tr = MulAdd(s6_8, M4(-9.356e-02, 1.015e-01, -2.942e-03, -4.394e-02, 5.934e-02, 4.966e-03, -5.267e-02, -8.942e-02, 6.933e-02, 1.135e-02, -3.072e-02, 1.648e-01, -7.249e-03, -2.476e-02, 6.294e-02, 4.891e-02), r);\n\tr = MulAdd(s7_0, M4(1.170e-01, -1.665e-02, -5.844e-02, 2.310e-01, -1.053e-01, -3.471e-02, 3.217e-02, 5.597e-03, -7.930e-03, -1.157e-01, -3.151e-02, 1.755e-02, -4.055e-01, 2.308e-01, 1.365e-01, -1.197e-02), r);\n\tr = MulAdd(s7_1, M4(-1.190e-02, -2.708e-02, 2.930e-02, 1.566e-01, -8.527e-03, 2.480e-02, 3.832e-03, -7.143e-02, 1.495e-02, -3.769e-02, -6.756e-02, 2.383e-02, 2.074e-01, -7.796e-02, -2.250e-01, -1.741e-01), r);\n\tr = MulAdd(s7_2, M4(-7.789e-02, -1.086e-02, -1.675e-02, 1.756e-01, 7.499e-02, 4.148e-02, -2.802e-02, 1.173e-02, 1.317e-01, 5.065e-02, -2.032e-02, 1.834e-01, 1.752e-01, 2.146e-01, -3.923e-02, -1.357e-01), r);\n\tr = MulAdd(s7_3, M4(-6.958e-02, 9.580e-03, 8.851e-02, -7.930e-02, -1.558e-01, -3.778e-02, -6.097e-02, 2.811e-02, -2.334e-02, 1.998e-02, -1.205e-02, 1.894e-02, 5.476e-03, -1.280e-02, -1.022e-01, 1.428e-01), r);\n\tr = MulAdd(s7_4, M4(6.006e-02, -1.223e-01, 1.589e-01, 6.598e-02, 1.343e-01, 1.586e-01, -6.632e-02, 5.271e-02, 9.392e-02, 1.218e-01, -5.771e-02, 9.682e-03, 5.840e-01, -3.489e-01, -3.396e-01, -1.786e-01), r);\n\tr = MulAdd(s7_5, M4(-3.016e-02, -6.150e-02, -8.569e-02, -4.323e-02, -6.244e-02, -2.575e-02, -6.612e-02, 5.142e-02, -2.008e-01, 1.263e-02, 7.861e-03, 1.032e-01, 6.973e-01, 3.473e-04, -2.266e-01, -4.332e-02), r);\n\tr = MulAdd(s7_6, M4(1.376e-01, 5.724e-02, 4.438e-02, -7.243e-02, -5.893e-02, -3.061e-02, 1.273e-02, -1.863e-02, 7.112e-03, 2.118e-02, -6.513e-03, 6.162e-02, 1.186e-01, 2.414e-01, 1.728e-01, -6.667e-02), r);\n\tr = MulAdd(s7_7, M4(1.400e-01, 1.383e-02, -7.103e-02, -1.366e-01, -1.084e-01, 1.477e-01, -2.983e-02, -8.506e-02, -5.073e-02, -4.197e-02, 2.801e-02, 5.587e-02, 7.099e-01, -9.430e-02, -1.155e-01, 1.032e-01), r);\n\tr = MulAdd(s7_8, M4(-4.641e-02, 1.204e-02, 4.037e-02, -1.185e-01, -8.472e-03, 4.617e-02, -4.495e-02, 8.632e-03, 3.586e-02, 9.629e-02, -2.544e-02, 6.781e-02, 4.206e-01, 4.385e-02, 1.276e-01, -1.737e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.100e-02, -1.857e-02, -6.864e-02, 8.263e-03 };\n\tr = MulAdd(s0_0, M4(2.051e-01, -1.114e-01, -1.216e-01, 1.105e-01, 8.499e-02, -6.663e-02, 3.991e-03, 6.458e-02, -7.665e-02, -8.809e-02, 1.040e-01, -2.485e-02, -1.012e-01, -9.021e-02, 8.377e-02, 2.340e-01), r);\n\tr = MulAdd(s0_1, M4(-1.931e-01, -7.857e-02, 1.292e-01, -1.716e-01, 6.330e-02, -2.973e-02, 1.371e-02, 5.827e-02, 8.144e-02, 9.241e-02, 2.017e-03, 3.057e-03, -1.029e-01, -4.298e-02, 1.090e-01, -3.017e-01), r);\n\tr = MulAdd(s0_2, M4(-1.690e-02, 1.600e-01, -1.662e-01, 1.337e-01, -7.108e-02, 2.756e-02, 4.058e-02, -9.522e-02, 4.137e-03, -9.349e-03, -1.089e-01, -9.164e-02, -3.924e-02, -9.906e-03, -1.061e-01, -1.744e-01), r);\n\tr = MulAdd(s0_3, M4(-3.095e-02, 2.730e-01, 1.041e-01, 3.858e-01, 2.290e-02, 9.362e-02, 3.441e-02, 6.260e-02, 1.465e-02, -7.561e-02, 5.372e-02, 3.513e-02, 1.353e-02, -1.222e-01, -3.884e-02, -1.430e-01), r);\n\tr = MulAdd(s0_4, M4(-2.386e-01, 3.587e-02, -1.912e-01, -3.013e-01, -6.317e-02, -1.056e-01, -1.407e-01, -1.712e-01, -2.643e-02, 7.672e-03, -2.874e-02, 1.912e-01, 7.532e-02, -8.689e-02, 3.293e-02, 1.470e-01), r);\n\tr = MulAdd(s0_5, M4(-1.332e-01, -1.546e-01, 9.643e-02, -2.599e-02, 8.934e-03, -1.228e-01, -4.493e-02, 2.042e-01, -8.228e-02, 1.075e-02, -5.997e-02, -6.339e-02, -8.336e-02, -3.334e-03, 3.381e-02, 3.368e-01), r);\n\tr = MulAdd(s0_6, M4(5.030e-02, -4.626e-01, -1.869e-01, 4.965e-01, 9.817e-03, 5.342e-02, 5.986e-02, 5.861e-02, -1.183e-01, 2.203e-02, 5.520e-02, -1.429e-01, -5.020e-02, 2.073e-01, 7.864e-03, -2.852e-01), r);\n\tr = MulAdd(s0_7, M4(2.176e-01, 2.152e-01, -1.788e-01, -5.080e-01, -1.122e-01, 8.691e-03, -9.614e-03, -3.106e-02, 4.894e-02, 6.166e-03, 7.439e-02, 1.690e-01, 1.803e-01, -9.130e-02, 2.321e-02, -1.665e-01), r);\n\tr = MulAdd(s0_8, M4(9.277e-02, -9.217e-02, -2.009e-01, 2.199e-01, 5.131e-02, -6.504e-02, -6.013e-02, -5.409e-02, -2.226e-02, -2.786e-03, -1.661e-02, 4.217e-02, -1.431e-02, -3.201e-02, -6.179e-02, 8.740e-02), r);\n\tr = MulAdd(s1_0, M4(5.791e-02, -1.342e-01, 1.181e-02, 1.169e-01, -2.401e-01, 1.451e-01, 5.932e-02, 1.637e-01, 3.013e-02, -4.731e-02, 2.029e-03, 1.286e-01, -5.358e-02, -1.128e-01, -1.991e-02, 1.099e-01), r);\n\tr = MulAdd(s1_1, M4(6.223e-02, 6.101e-03, 1.201e-01, 8.313e-02, -8.887e-02, 1.035e-01, 2.002e-01, -1.245e-01, -3.890e-02, -7.083e-02, -1.125e-01, 2.253e-01, 7.171e-02, 2.084e-02, 1.537e-01, -6.827e-03), r);\n\tr = MulAdd(s1_2, M4(2.259e-02, 1.401e-02, -8.702e-02, -5.172e-02, -8.238e-02, 3.951e-01, 4.718e-04, -2.622e-01, -7.200e-03, -3.022e-02, -1.731e-02, -1.051e-01, 6.473e-02, -5.861e-02, 6.686e-02, -1.402e-02), r);\n\tr = MulAdd(s1_3, M4(1.818e-02, 1.564e-01, -5.097e-02, -6.576e-02, 7.355e-02, 1.180e-01, -7.400e-03, -5.576e-02, 1.021e-01, -5.665e-03, 5.615e-02, 2.363e-01, -2.641e-02, 1.016e-01, -1.045e-02, 4.678e-02), r);\n\tr = MulAdd(s1_4, M4(2.484e-02, 1.577e-01, -1.466e-02, -1.573e-01, 2.610e-02, -3.650e-01, -1.553e-02, 1.881e-01, -3.113e-02, -1.647e-01, 9.964e-02, -7.754e-02, -6.019e-02, 8.320e-02, -8.445e-02, -1.022e-01), r);\n\tr = MulAdd(s1_5, M4(-3.212e-02, -9.051e-02, 1.200e-02, 2.126e-01, 8.613e-02, -1.371e-01, 1.414e-01, 3.601e-03, 6.368e-02, -2.634e-02, 2.608e-02, -5.757e-02, -1.123e-02, -8.145e-02, -5.911e-02, 4.555e-02), r);\n\tr = MulAdd(s1_6, M4(-2.184e-02, -4.911e-02, -3.778e-02, 1.812e-01, 5.428e-02, -1.398e-01, 2.522e-02, 7.816e-02, -9.922e-02, 3.210e-02, -4.167e-02, 9.021e-04, 6.767e-03, -6.228e-02, 6.149e-02, -7.836e-02), r);\n\tr = MulAdd(s1_7, M4(-1.528e-03, -1.183e-01, 7.824e-03, 8.210e-02, -2.946e-02, 3.472e-01, 1.122e-01, -3.994e-04, 3.110e-02, 1.902e-02, -5.257e-02, 6.723e-02, -6.471e-02, -1.212e-02, -2.051e-02, -7.960e-02), r);\n\tr = MulAdd(s1_8, M4(-4.947e-02, 1.218e-01, 1.486e-02, -1.141e-01, 5.986e-02, -9.915e-02, -3.834e-03, 2.886e-02, -2.646e-02, 3.957e-03, -3.546e-02, 1.315e-01, -3.214e-02, 2.432e-02, 2.367e-02, 6.176e-02), r);\n\tr = MulAdd(s2_0, M4(5.123e-02, 5.989e-02, -6.815e-02, 9.743e-02, -3.462e-02, -8.530e-02, 6.288e-02, -2.515e-02, -6.732e-02, -1.728e-02, -4.539e-02, -2.716e-03, -6.797e-02, 8.885e-02, -9.367e-02, -9.246e-03), r);\n\tr = MulAdd(s2_1, M4(6.126e-02, 1.034e-01, -1.436e-01, 1.068e-01, 6.247e-02, 9.696e-02, -2.424e-02, 1.688e-01, -3.992e-02, -9.006e-02, 7.081e-02, 6.454e-02, -1.187e-01, -5.075e-02, 7.586e-02, -5.934e-02), r);\n\tr = MulAdd(s2_2, M4(-7.571e-02, 1.086e-01, -1.870e-01, -4.357e-02, -3.151e-02, 4.510e-03, 1.129e-02, 6.293e-02, 4.355e-02, 1.003e-02, -2.586e-02, 1.030e-02, -3.310e-02, 1.197e-01, 1.317e-02, -1.287e-01), r);\n\tr = MulAdd(s2_3, M4(-1.821e-01, -5.221e-02, -6.573e-02, -1.790e-02, -3.118e-02, 5.614e-02, 5.421e-02, 1.202e-02, -6.092e-02, 2.164e-02, 2.650e-02, -1.051e-01, 2.480e-02, -1.092e-01, 2.620e-01, -1.028e-01), r);\n\tr = MulAdd(s2_4, M4(-1.148e-01, -3.157e-01, -2.715e-01, 1.825e-01, -4.377e-02, -3.740e-02, -1.248e-01, -2.072e-04, 1.325e-02, 2.442e-02, -6.368e-02, 5.754e-02, -1.426e-01, 2.100e-02, 1.788e-02, -2.557e-01), r);\n\tr = MulAdd(s2_5, M4(1.143e-02, 4.976e-03, -5.215e-04, 2.190e-01, 5.087e-02, -1.155e-02, 1.746e-01, 1.392e-01, -1.745e-02, -4.258e-02, 1.637e-01, -3.673e-02, -1.797e-01, 3.567e-03, 1.886e-01, 3.290e-01), r);\n\tr = MulAdd(s2_6, M4(8.078e-02, -5.942e-02, -6.795e-02, 3.094e-01, -6.489e-02, -6.927e-02, -2.532e-02, -4.067e-02, -1.402e-02, -6.488e-03, 7.648e-02, 9.025e-02, 1.130e-01, -1.261e-01, -8.126e-02, -9.004e-02), r);\n\tr = MulAdd(s2_7, M4(3.884e-02, 2.023e-01, 6.625e-02, 6.108e-02, 1.205e-02, 9.322e-03, 6.163e-02, -8.168e-02, 5.798e-02, 1.973e-02, 8.854e-03, 9.005e-02, 1.195e-01, -1.639e-01, -1.471e-01, 6.780e-02), r);\n\tr = MulAdd(s2_8, M4(-3.076e-01, 2.985e-01, -1.318e-01, 6.138e-02, 1.681e-02, -3.053e-02, 8.927e-02, 3.131e-02, 4.618e-02, 7.467e-02, -8.657e-02, -1.095e-01, 1.209e-01, -2.500e-01, -3.690e-01, 1.925e-02), r);\n\tr = MulAdd(s3_0, M4(-3.576e-02, -5.877e-02, -4.620e-02, 1.437e-02, 7.191e-02, -1.027e-01, -1.292e-01, 2.874e-03, -2.148e-02, -2.312e-01, 1.928e-01, 1.189e-01, 4.168e-03, 9.991e-02, 2.619e-02, -9.109e-02), r);\n\tr = MulAdd(s3_1, M4(8.459e-02, -5.825e-02, 1.192e-01, 9.633e-04, 1.364e-01, 1.481e-01, -2.684e-01, -2.158e-02, 2.941e-02, 5.594e-01, 2.594e-02, -9.532e-02, -2.989e-02, 8.519e-02, 9.496e-02, 2.129e-01), r);\n\tr = MulAdd(s3_2, M4(-8.653e-02, 1.469e-02, 3.830e-02, -3.940e-02, 1.102e-03, -1.709e-01, -1.039e-01, -2.331e-01, -1.292e-01, 3.492e-01, -1.175e-01, -3.262e-02, 2.708e-02, 6.536e-02, 1.758e-02, -1.578e-01), r);\n\tr = MulAdd(s3_3, M4(1.008e-01, 5.336e-03, 1.987e-02, 2.761e-02, 1.080e-01, -2.102e-01, 3.839e-02, 1.827e-01, -1.258e-01, -1.818e-01, 2.859e-02, -5.134e-02, 7.261e-02, -9.374e-02, 1.013e-01, 9.994e-03), r);\n\tr = MulAdd(s3_4, M4(-7.610e-02, 8.429e-02, -5.786e-02, 1.165e-01, -9.639e-02, -1.452e-01, -1.060e-01, 4.033e-01, -4.765e-02, -3.415e-02, -3.791e-02, 2.257e-01, 5.831e-02, -3.548e-02, 1.256e-03, -3.516e-02), r);\n\tr = MulAdd(s3_5, M4(1.950e-02, 1.418e-02, -6.498e-03, -6.196e-02, 1.770e-02, -5.317e-02, -1.264e-01, -4.619e-01, -1.301e-01, -1.639e-03, 1.875e-02, -2.892e-01, -6.607e-02, -6.523e-03, 5.238e-02, 1.304e-01), r);\n\tr = MulAdd(s3_6, M4(-6.517e-02, -4.494e-02, 5.729e-02, -4.323e-03, -5.584e-02, -1.577e-02, 3.936e-02, 9.087e-02, 3.935e-02, -1.382e-01, -1.728e-02, 1.404e-01, -2.122e-02, -2.349e-02, -9.270e-02, -9.217e-02), r);\n\tr = MulAdd(s3_7, M4(1.215e-01, -1.047e-02, 6.047e-03, -1.998e-01, -4.287e-02, 1.967e-02, -2.010e-01, 2.046e-01, -3.913e-02, -8.821e-02, -2.432e-01, 4.894e-02, 7.895e-02, 1.095e-01, 4.640e-02, -3.483e-02), r);\n\tr = MulAdd(s3_8, M4(2.018e-03, -2.716e-03, -1.596e-02, -1.916e-01, -3.315e-02, -1.665e-01, -1.173e-01, -8.551e-02, -3.230e-02, 1.273e-01, -8.199e-02, -1.331e-01, -5.627e-02, 5.167e-02, -3.181e-02, -1.333e-01), r);\n\tr = MulAdd(s4_0, M4(6.189e-02, 9.147e-03, -1.257e-02, 1.175e-01, 5.045e-02, -2.184e-01, 8.163e-02, -5.065e-02, -9.018e-02, -9.549e-02, 9.756e-02, 1.040e-01, -7.600e-02, -1.415e-01, 5.857e-02, 1.576e-01), r);\n\tr = MulAdd(s4_1, M4(-3.889e-04, -3.811e-03, -7.045e-02, -1.290e-01, 1.675e-01, -1.672e-01, -7.413e-02, 1.036e-01, 1.580e-01, 1.675e-01, -2.016e-01, -9.586e-02, 7.723e-02, -1.377e-01, -6.372e-02, 3.977e-02), r);\n\tr = MulAdd(s4_2, M4(-1.076e-02, 4.677e-02, -7.688e-03, -9.809e-02, 2.044e-01, 8.981e-02, -4.126e-02, 3.244e-01, -2.681e-02, 8.702e-02, 4.261e-02, 2.472e-02, -3.153e-02, -8.140e-02, -4.853e-02, 1.707e-01), r);\n\tr = MulAdd(s4_3, M4(2.806e-02, -1.416e-01, -7.901e-02, 1.045e-02, 6.336e-03, -4.741e-01, -2.487e-01, 5.238e-02, 1.209e-02, 2.783e-01, 1.835e-01, -4.384e-02, -9.517e-02, -7.745e-02, -1.052e-01, -1.239e-01), r);\n\tr = MulAdd(s4_4, M4(-9.428e-02, -1.833e-02, -2.601e-02, 7.356e-02, -1.486e-01, 2.948e-02, 2.502e-01, -2.314e-01, 1.104e-01, -1.343e-01, -2.981e-01, -9.674e-02, -2.600e-02, -1.356e-01, -5.424e-02, -2.577e-03), r);\n\tr = MulAdd(s4_5, M4(8.080e-02, 3.808e-02, -5.635e-02, -1.385e-01, 1.128e-01, 2.107e-01, 4.262e-02, 5.565e-01, 1.292e-02, 5.516e-02, -5.578e-02, 1.006e-01, -1.165e-02, -1.283e-01, -1.195e-02, 3.710e-02), r);\n\tr = MulAdd(s4_6, M4(-7.956e-02, -3.898e-02, -3.705e-02, -6.141e-02, 1.204e-01, -1.527e-01, 9.714e-02, -1.856e-01, -8.911e-02, 2.328e-02, -4.341e-02, 5.749e-02, -1.302e-01, -1.636e-01, -1.153e-01, 4.291e-02), r);\n\tr = MulAdd(s4_7, M4(2.943e-02, 1.157e-01, 7.623e-04, -2.658e-02, -2.001e-01, -4.169e-02, 5.792e-02, 2.248e-01, 5.508e-03, 5.892e-03, -3.907e-02, 6.471e-02, -2.077e-03, -2.288e-01, -3.274e-02, -1.980e-01), r);\n\tr = MulAdd(s4_8, M4(1.155e-02, -8.695e-03, 4.365e-02, 8.192e-02, 1.437e-03, 2.241e-01, 1.615e-01, -1.287e-03, -6.141e-02, -4.430e-02, 3.162e-02, 5.725e-02, -8.957e-02, -1.880e-02, -3.154e-02, 2.495e-01), r);\n\tr = MulAdd(s5_0, M4(6.698e-03, 2.446e-01, 1.064e-01, -2.333e-01, 8.398e-02, 1.259e-01, 1.300e-01, -4.527e-03, -1.450e-01, -1.342e-01, 1.158e-01, -6.956e-02, -7.463e-02, -4.917e-02, 6.212e-02, 1.041e-01), r);\n\tr = MulAdd(s5_1, M4(-5.109e-02, 1.202e-01, 1.301e-01, 2.447e-01, -2.661e-02, 1.459e-01, 4.081e-03, 9.255e-02, 6.270e-03, 9.833e-03, -1.827e-01, 1.978e-01, 1.042e-01, -6.184e-02, 1.129e-01, 2.724e-02), r);\n\tr = MulAdd(s5_2, M4(-9.528e-02, 7.638e-02, -6.379e-02, -3.093e-01, 7.835e-03, 5.860e-02, -1.221e-02, -7.426e-02, -8.886e-03, -8.248e-02, -2.452e-02, 4.934e-02, 6.254e-02, -9.158e-02, -1.431e-01, -8.059e-02), r);\n\tr = MulAdd(s5_3, M4(5.516e-02, 1.060e-01, 1.076e-01, -2.141e-01, -6.265e-02, -9.982e-02, -2.924e-02, 2.221e-02, -3.913e-02, 3.002e-01, 1.047e-01, -9.692e-02, -2.233e-02, 8.167e-02, -1.788e-02, 9.185e-02), r);\n\tr = MulAdd(s5_4, M4(-1.033e-01, -1.085e-01, -1.545e-01, 2.828e-01, 3.280e-02, 6.244e-02, 4.462e-02, -4.086e-02, 2.783e-02, -7.351e-02, -1.294e-01, -1.053e-01, 1.550e-01, 1.063e-01, -8.768e-02, -3.760e-02), r);\n\tr = MulAdd(s5_5, M4(-1.171e-01, -2.230e-01, -7.730e-02, -1.134e-01, -1.817e-02, -1.421e-01, -5.315e-02, -4.395e-04, -6.779e-02, 1.147e-02, -2.157e-02, 3.958e-02, 4.972e-02, -1.580e-02, 2.947e-02, -1.692e-01), r);\n\tr = MulAdd(s5_6, M4(-9.404e-02, -7.301e-02, -3.278e-02, 1.819e-01, 9.315e-02, 1.353e-01, 4.351e-02, 8.531e-03, -4.843e-02, 9.107e-02, -4.694e-02, -1.637e-02, 4.969e-03, -1.248e-02, -1.670e-02, -2.470e-04), r);\n\tr = MulAdd(s5_7, M4(6.462e-02, 4.478e-02, 8.927e-02, -1.264e-01, -5.183e-02, 1.347e-03, 2.785e-02, 4.317e-02, -7.223e-03, -1.428e-02, 7.643e-04, 1.053e-01, 2.188e-02, -1.182e-01, 1.179e-01, 6.074e-02), r);\n\tr = MulAdd(s5_8, M4(1.897e-01, -8.327e-02, 7.416e-02, -1.695e-02, 4.508e-02, 1.182e-01, 6.454e-02, -1.191e-01, -1.309e-02, 4.376e-02, 1.515e-02, -3.969e-02, 5.553e-02, -2.351e-02, 9.684e-02, -1.221e-02), r);\n\tr = MulAdd(s6_0, M4(-4.527e-02, -9.728e-02, 9.743e-03, 5.919e-02, -1.075e-01, -8.651e-02, 5.333e-02, 4.852e-03, 1.093e-02, -3.015e-02, -8.744e-02, -1.731e-02, -8.862e-02, 6.434e-03, 3.455e-02, -8.617e-03), r);\n\tr = MulAdd(s6_1, M4(6.181e-02, -4.134e-02, -1.274e-01, -2.780e-02, 9.931e-02, 3.614e-02, 1.857e-01, -2.142e-01, 3.274e-02, -2.344e-01, -1.061e-01, 1.320e-01, -1.500e-01, -1.382e-01, -3.919e-03, 1.593e-03), r);\n\tr = MulAdd(s6_2, M4(-1.193e-02, -5.966e-02, -4.917e-02, -1.712e-02, -1.225e-01, 6.671e-02, 8.546e-02, -1.695e-01, 4.812e-02, 1.271e-01, -1.225e-01, -7.102e-03, -2.274e-01, -4.425e-02, -1.270e-03, 6.183e-02), r);\n\tr = MulAdd(s6_3, M4(1.253e-01, 1.469e-01, -5.953e-02, -1.821e-01, 1.218e-02, -6.910e-02, 8.267e-02, -2.724e-01, 6.948e-02, 6.374e-02, -1.253e-01, -1.573e-01, 3.327e-02, -2.731e-02, -5.794e-02, -8.764e-02), r);\n\tr = MulAdd(s6_4, M4(-1.470e-01, -1.318e-02, 1.086e-01, 2.166e-02, 1.640e-01, -2.715e-02, 7.695e-02, -7.937e-02, 4.435e-02, 6.541e-02, 1.362e-01, 9.317e-02, -1.293e-01, 6.498e-02, 6.115e-02, -2.732e-02), r);\n\tr = MulAdd(s6_5, M4(-1.062e-01, 7.520e-02, -1.024e-03, -2.449e-02, 1.120e-01, 3.211e-02, -7.203e-02, 3.927e-01, -1.297e-02, -6.928e-06, -7.026e-02, 1.230e-01, 1.202e-02, 2.639e-02, -6.227e-02, 5.431e-02), r);\n\tr = MulAdd(s6_6, M4(-8.389e-02, 1.630e-02, 7.006e-02, 1.890e-02, -5.597e-03, -1.783e-01, -6.151e-03, -1.118e-01, -5.326e-02, 2.527e-01, 3.765e-02, -2.475e-02, -1.187e-01, 1.054e-01, 6.812e-02, -1.675e-04), r);\n\tr = MulAdd(s6_7, M4(1.121e-01, 1.753e-03, 1.272e-02, -3.274e-02, -1.554e-02, 1.828e-02, 7.942e-02, -4.052e-02, 1.010e-01, -2.468e-02, 8.385e-02, 1.280e-01, -3.523e-02, -7.376e-02, 5.747e-02, 6.557e-02), r);\n\tr = MulAdd(s6_8, M4(7.530e-02, 1.398e-03, -3.553e-02, 1.229e-01, 6.035e-02, -3.222e-02, 6.983e-03, 1.919e-01, 1.019e-01, -1.546e-03, -1.724e-02, 2.234e-01, 7.674e-02, 3.747e-02, -3.599e-02, -1.326e-02), r);\n\tr = MulAdd(s7_0, M4(-1.416e-01, -2.534e-01, 6.959e-02, 4.909e-02, 5.168e-02, 1.637e-02, 4.515e-02, -4.846e-02, 5.483e-02, -3.688e-02, -3.717e-02, -6.822e-02, 7.247e-02, 3.603e-01, 1.765e-01, -2.696e-01), r);\n\tr = MulAdd(s7_1, M4(-1.218e-02, -3.408e-01, 2.292e-02, -1.435e-01, 1.395e-01, 1.190e-02, 7.423e-03, -3.210e-02, 1.329e-02, -1.986e-01, -9.972e-03, -3.261e-02, 1.019e-01, -6.167e-01, -2.890e-02, -3.107e-01), r);\n\tr = MulAdd(s7_2, M4(8.059e-02, -5.207e-02, -3.553e-02, -1.822e-01, -3.392e-02, 1.620e-02, -1.094e-01, -3.267e-02, -6.855e-02, 2.069e-02, 5.989e-02, -1.125e-01, -1.526e-01, -8.064e-02, -5.341e-02, 8.461e-02), r);\n\tr = MulAdd(s7_3, M4(2.222e-01, -1.026e-01, 1.373e-02, 1.260e-01, -5.944e-02, -7.264e-02, 2.722e-02, -2.172e-02, 7.230e-02, -3.942e-03, -1.013e-01, 7.697e-02, -3.213e-01, -1.067e-02, 1.809e-01, 2.742e-01), r);\n\tr = MulAdd(s7_4, M4(-5.250e-02, -3.701e-02, -1.064e-01, 1.576e-01, 4.320e-02, 8.763e-02, 4.999e-02, 2.818e-02, 1.200e-01, -1.260e-01, -2.616e-02, -6.935e-02, -9.278e-02, -4.988e-02, 4.001e-01, -3.712e-01), r);\n\tr = MulAdd(s7_5, M4(-3.058e-02, 4.468e-02, -1.586e-01, 1.079e-01, 2.566e-02, -2.422e-02, 5.597e-02, -6.913e-02, 8.615e-02, -4.592e-02, -8.361e-02, -2.085e-01, -2.418e-01, -5.534e-02, 4.826e-02, -1.660e-01), r);\n\tr = MulAdd(s7_6, M4(-4.661e-02, -2.368e-01, -7.790e-02, -1.367e-01, 1.023e-01, 2.490e-02, -4.375e-02, 2.494e-01, 2.857e-02, 3.380e-02, 9.195e-02, -4.993e-04, 8.457e-02, 1.930e-01, -1.219e-01, -2.545e-01), r);\n\tr = MulAdd(s7_7, M4(2.656e-02, 8.901e-03, -9.662e-02, 6.076e-02, 1.533e-02, -9.063e-02, -1.670e-01, 5.721e-02, 2.601e-02, 8.227e-02, 1.087e-01, 7.810e-03, 4.441e-02, 4.057e-01, 4.137e-02, 1.901e-01), r);\n\tr = MulAdd(s7_8, M4(-9.190e-02, -1.211e-02, -5.945e-02, -1.734e-03, -9.425e-02, 5.072e-02, -9.240e-02, 3.546e-02, -1.003e-01, -2.467e-02, -2.442e-02, 9.600e-02, 2.682e-01, -3.375e-02, 7.697e-02, 1.923e-01), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.457e-02, -1.213e-02, 5.035e-03, 4.694e-02 };\n\tr = MulAdd(s0_0, M4(6.963e-02, -2.252e-02, -1.448e-01, 2.277e-02, -3.770e-02, -1.320e-02, -1.452e-01, -1.153e-01, -3.604e-02, -5.332e-02, -9.732e-02, -6.503e-02, 7.152e-02, -1.186e-01, 3.170e-01, -2.347e-01), r);\n\tr = MulAdd(s0_1, M4(4.306e-02, -4.997e-04, -4.649e-01, -2.117e-01, -1.229e-01, 2.042e-02, -2.969e-02, -7.675e-02, 9.907e-02, -4.484e-02, 1.025e-02, 2.717e-02, -2.286e-01, -7.177e-02, 8.781e-02, -1.635e-01), r);\n\tr = MulAdd(s0_2, M4(1.548e-01, -8.983e-02, -1.161e-01, -1.496e-01, -2.478e-02, -9.860e-02, 1.299e-01, 1.345e-01, 1.057e-03, -3.365e-02, 2.476e-02, 8.473e-03, -1.789e-01, 3.040e-02, 9.071e-02, -4.536e-02), r);\n\tr = MulAdd(s0_3, M4(-2.717e-01, 2.572e-03, 2.506e-01, -9.201e-02, 1.012e-02, 6.912e-02, 1.405e-01, 8.530e-02, -7.757e-02, -6.426e-02, 2.328e-01, 5.584e-02, 3.363e-01, 5.617e-02, 1.332e-02, 1.869e-02), r);\n\tr = MulAdd(s0_4, M4(-2.072e-02, -1.647e-01, 6.103e-02, -7.830e-02, 3.174e-01, -1.248e-01, -5.962e-02, -9.131e-02, 9.164e-02, 2.699e-03, -1.759e-01, -8.091e-03, 7.812e-02, -1.084e-01, 1.606e-01, 4.792e-02), r);\n\tr = MulAdd(s0_5, M4(-1.059e-02, -5.786e-02, -4.665e-03, -2.343e-01, -8.026e-03, 5.300e-02, 2.951e-02, -5.558e-02, -5.785e-02, 9.929e-02, 2.625e-02, 3.589e-02, -4.308e-02, -8.178e-02, 2.463e-01, 2.174e-01), r);\n\tr = MulAdd(s0_6, M4(-2.118e-01, -1.159e-01, 1.469e-01, 1.273e-01, 3.896e-02, 2.342e-02, -6.598e-02, -7.138e-02, 8.046e-02, -9.429e-02, -2.509e-01, 5.849e-02, -1.988e-01, -6.292e-02, 2.115e-01, -2.360e-01), r);\n\tr = MulAdd(s0_7, M4(9.683e-02, -6.480e-02, 1.769e-01, -8.659e-02, -2.455e-02, 5.751e-02, 1.021e-01, 7.640e-02, -1.255e-01, -1.125e-01, -1.075e-01, -1.787e-01, 4.571e-03, -1.284e-01, -7.242e-02, 5.501e-02), r);\n\tr = MulAdd(s0_8, M4(2.078e-02, -8.726e-04, -4.439e-02, 1.042e-01, 2.962e-02, -7.772e-02, -1.045e-01, -7.690e-03, 9.935e-02, 2.160e-02, 9.949e-02, 4.120e-02, -9.711e-02, -6.273e-02, 1.308e-01, 1.546e-02), r);\n\tr = MulAdd(s1_0, M4(6.029e-02, 4.278e-02, 5.769e-02, 1.442e-02, -1.756e-01, 4.015e-02, -7.010e-02, 1.137e-01, -2.495e-03, -6.332e-02, 1.721e-02, 1.212e-02, 6.808e-02, -8.886e-03, -2.085e-01, -4.819e-02), r);\n\tr = MulAdd(s1_1, M4(6.642e-02, -4.447e-02, -2.059e-02, -7.015e-02, -7.824e-02, -1.525e-02, -9.670e-02, -2.820e-02, -8.941e-02, -3.547e-02, -1.716e-02, -3.731e-02, 3.170e-02, 4.354e-02, -6.386e-02, 9.780e-02), r);\n\tr = MulAdd(s1_2, M4(-3.524e-02, 4.504e-02, 4.981e-02, 8.960e-02, -8.128e-02, -1.493e-01, 1.161e-01, 1.018e-01, -1.724e-03, 2.717e-02, -1.312e-01, -1.677e-02, 2.003e-02, 9.196e-03, 1.623e-01, 7.206e-02), r);\n\tr = MulAdd(s1_3, M4(-3.745e-02, 2.151e-02, -6.851e-02, -6.277e-02, 3.111e-02, 4.912e-02, 2.569e-01, 5.158e-02, 6.237e-02, -8.986e-02, 5.848e-02, -6.014e-02, 1.487e-02, 4.474e-02, -2.111e-02, 3.169e-02), r);\n\tr = MulAdd(s1_4, M4(8.277e-02, -2.327e-02, -1.339e-01, 6.819e-03, 6.774e-02, -1.567e-01, -3.982e-02, 1.687e-01, 5.872e-02, 1.736e-01, -1.741e-02, 1.435e-01, -1.060e-01, -5.864e-02, 1.010e-01, 3.586e-02), r);\n\tr = MulAdd(s1_5, M4(-2.038e-01, -6.883e-03, -3.415e-03, -4.187e-02, -1.266e-01, 2.903e-01, -7.235e-02, 1.061e-01, -3.151e-02, -7.008e-04, -7.758e-02, 8.958e-02, -3.681e-02, -2.896e-03, -1.110e-01, 5.328e-02), r);\n\tr = MulAdd(s1_6, M4(-1.477e-02, -6.669e-02, 3.919e-02, -4.940e-02, -1.115e-02, 1.150e-01, -2.095e-01, 4.050e-02, 8.635e-02, 1.358e-01, 8.773e-02, -8.047e-02, -2.117e-02, -7.302e-04, 4.855e-02, 5.096e-02), r);\n\tr = MulAdd(s1_7, M4(4.030e-02, 5.739e-02, 3.768e-02, -9.838e-02, 3.036e-02, 1.810e-01, 4.812e-02, 1.165e-02, -1.139e-01, 5.497e-02, 1.245e-01, 2.073e-02, -8.034e-03, 2.284e-02, 1.594e-02, 3.528e-02), r);\n\tr = MulAdd(s1_8, M4(2.289e-02, -8.156e-02, 5.705e-02, 1.072e-01, 1.589e-03, 3.123e-03, 2.118e-01, 1.151e-02, -2.937e-02, 9.989e-02, -5.238e-02, 1.003e-01, 4.185e-02, -8.527e-02, -6.298e-03, -6.371e-02), r);\n\tr = MulAdd(s2_0, M4(1.107e-01, 2.752e-02, 1.281e-01, 1.714e-01, 1.164e-01, -7.284e-02, -1.190e-01, 8.111e-02, -8.035e-03, -6.762e-02, 1.776e-02, -1.030e-01, 2.693e-02, 5.256e-02, 1.354e-01, -2.064e-02), r);\n\tr = MulAdd(s2_1, M4(-4.988e-03, -6.097e-02, -4.041e-02, -3.558e-02, -1.518e-01, 1.663e-03, -2.821e-02, -1.361e-02, 2.478e-02, 8.943e-02, -1.308e-01, -6.894e-02, -1.212e-01, 1.641e-02, 2.404e-01, 1.694e-01), r);\n\tr = MulAdd(s2_2, M4(-7.777e-03, 5.803e-02, 2.689e-01, 1.791e-01, 6.316e-04, 4.763e-02, -9.638e-02, -3.617e-02, 5.087e-02, 4.604e-02, -7.884e-02, 3.332e-02, 6.054e-02, -1.208e-01, -3.011e-01, -1.355e-01), r);\n\tr = MulAdd(s2_3, M4(-4.400e-02, 2.170e-01, 1.681e-01, 1.320e-01, -3.089e-02, -8.828e-02, 5.103e-02, -1.408e-01, -2.118e-01, 3.802e-02, 5.672e-02, -5.139e-03, -7.158e-02, 1.651e-01, -3.334e-01, 5.201e-02), r);\n\tr = MulAdd(s2_4, M4(-7.727e-02, -9.328e-02, -1.671e-01, -6.937e-02, -1.072e-01, 8.187e-02, -6.199e-02, 8.513e-02, 3.583e-02, -4.073e-02, 2.146e-01, 7.136e-02, 2.726e-01, 1.700e-01, -1.868e-01, -1.756e-02), r);\n\tr = MulAdd(s2_5, M4(-4.307e-02, -2.301e-02, 1.690e-01, -2.337e-01, -9.058e-02, -1.756e-02, 8.350e-03, -4.909e-02, -9.059e-02, -6.068e-02, 1.240e-02, -1.104e-01, -1.323e-01, 4.555e-02, 6.956e-02, -5.998e-02), r);\n\tr = MulAdd(s2_6, M4(-1.516e-01, 1.953e-01, -7.080e-02, 9.881e-03, -9.600e-02, 8.595e-02, 1.051e-01, 3.365e-02, -9.591e-03, 8.353e-02, -1.220e-01, 9.008e-04, -1.879e-01, 3.896e-02, -6.064e-02, -1.157e-01), r);\n\tr = MulAdd(s2_7, M4(-9.644e-02, -1.368e-01, 2.848e-02, 7.543e-02, -8.532e-02, -1.060e-01, -1.384e-02, -1.303e-01, 8.781e-03, -7.783e-02, -5.889e-02, 9.188e-02, -5.361e-02, -6.329e-02, -7.719e-02, 1.732e-01), r);\n\tr = MulAdd(s2_8, M4(-4.416e-02, -1.316e-01, -1.092e-01, -6.056e-02, 2.408e-02, -7.075e-02, -1.626e-01, -4.830e-02, 4.568e-02, -8.975e-03, -3.471e-02, 4.751e-03, -9.605e-03, 1.540e-01, -2.195e-01, -1.289e-02), r);\n\tr = MulAdd(s3_0, M4(6.641e-02, -6.722e-02, 4.204e-02, 2.671e-02, 1.593e-01, -8.964e-02, -1.204e-01, 1.247e-01, -2.959e-01, 2.200e-02, 2.822e-02, -1.165e-01, -1.091e-03, 5.943e-03, -1.847e-03, 2.274e-02), r);\n\tr = MulAdd(s3_1, M4(-7.450e-02, -2.852e-02, 2.931e-02, -3.538e-02, -4.187e-02, 8.734e-03, 2.365e-01, -5.349e-02, 8.154e-03, -9.164e-02, -8.136e-02, -6.776e-02, -1.918e-01, -4.653e-02, 6.557e-02, 5.742e-02), r);\n\tr = MulAdd(s3_2, M4(-4.312e-02, -4.438e-03, -1.442e-01, -2.492e-02, 2.585e-01, 3.696e-02, 1.406e-01, 1.574e-01, 8.978e-02, 9.296e-02, -6.429e-02, 3.938e-02, 1.450e-01, 3.289e-02, -8.818e-02, -4.964e-02), r);\n\tr = MulAdd(s3_3, M4(5.244e-02, -1.366e-03, 3.703e-02, 2.949e-02, -9.850e-02, 1.177e-01, 4.466e-02, 1.044e-01, -8.709e-02, 9.429e-02, 1.804e-01, -1.564e-01, 1.509e-01, -7.775e-04, 2.783e-03, 1.885e-02), r);\n\tr = MulAdd(s3_4, M4(2.353e-02, 8.922e-03, 2.605e-02, -1.310e-01, -5.740e-03, 9.074e-02, -1.173e-01, -5.668e-02, 1.622e-01, -4.949e-02, 1.809e-01, 4.451e-01, 4.553e-02, 6.796e-02, -1.264e-01, 8.167e-02), r);\n\tr = MulAdd(s3_5, M4(-1.271e-02, 1.309e-02, 5.765e-02, -1.710e-01, 1.858e-01, 2.290e-01, -2.852e-01, -1.578e-01, 3.224e-02, -1.279e-01, 3.270e-03, -1.556e-01, 3.685e-03, 5.137e-02, 8.328e-02, 7.098e-02), r);\n\tr = MulAdd(s3_6, M4(-2.447e-02, -4.218e-02, -1.423e-01, -8.276e-02, 2.283e-01, 1.799e-01, -2.549e-01, 9.259e-02, 2.579e-01, 4.986e-02, -5.594e-02, 3.486e-02, -2.440e-02, 7.812e-02, 8.794e-02, 1.029e-02), r);\n\tr = MulAdd(s3_7, M4(5.380e-02, 1.180e-01, 1.594e-01, 7.409e-02, 7.728e-02, 3.271e-02, -6.874e-02, 2.154e-01, -3.518e-02, -1.103e-01, 9.688e-02, 9.100e-02, -6.668e-02, -7.959e-02, 1.811e-02, -1.359e-01), r);\n\tr = MulAdd(s3_8, M4(9.416e-02, 3.417e-03, -5.169e-02, 1.764e-01, 2.548e-01, 1.715e-01, 2.134e-01, 2.238e-01, 1.845e-01, 1.622e-02, 4.207e-01, -3.196e-02, -9.406e-02, -2.390e-01, 2.510e-01, -2.296e-02), r);\n\tr = MulAdd(s4_0, M4(1.006e-02, -1.331e-02, -7.423e-02, 1.326e-01, 1.829e-01, 2.875e-02, 2.266e-01, -2.989e-01, -5.792e-02, 3.672e-03, -2.179e-02, -1.589e-01, 7.813e-02, -1.747e-02, 8.522e-02, -5.229e-02), r);\n\tr = MulAdd(s4_1, M4(-9.481e-02, 1.766e-02, -1.016e-01, 1.965e-02, 1.501e-01, -2.166e-01, 4.671e-01, 2.102e-01, 5.749e-02, -8.126e-02, 8.996e-02, 4.967e-02, -4.917e-02, -1.199e-01, -1.097e-01, 7.642e-02), r);\n\tr = MulAdd(s4_2, M4(1.216e-01, -8.073e-03, 9.726e-03, 2.027e-02, -5.802e-02, 8.700e-02, 1.012e-01, 4.803e-02, 8.010e-02, -1.332e-02, 1.150e-01, 5.811e-04, -1.260e-01, 5.098e-02, 1.144e-02, 1.190e-01), r);\n\tr = MulAdd(s4_3, M4(-3.559e-02, -1.380e-02, 4.833e-02, 1.924e-02, 2.151e-01, 3.367e-03, 2.616e-02, -1.804e-02, -1.903e-01, 2.271e-01, 7.762e-02, 2.965e-02, 3.447e-02, 5.939e-02, -1.552e-03, -5.304e-02), r);\n\tr = MulAdd(s4_4, M4(5.806e-02, 6.617e-02, 6.822e-02, -3.996e-02, 1.884e-01, -1.212e-01, 4.396e-02, 1.790e-01, 9.638e-02, 3.977e-01, 4.136e-02, -2.153e-01, 1.812e-01, -1.566e-01, 1.537e-01, -1.567e-01), r);\n\tr = MulAdd(s4_5, M4(-6.260e-02, -5.870e-02, 2.292e-02, -4.240e-02, 1.163e-01, -3.122e-02, -1.069e-01, 1.949e-01, -8.848e-02, 7.051e-02, 1.155e-01, 3.087e-03, -1.480e-01, -3.976e-02, 1.350e-01, -7.956e-02), r);\n\tr = MulAdd(s4_6, M4(9.145e-02, -9.454e-02, -4.262e-02, 3.224e-02, 1.158e-01, 3.783e-02, -4.701e-02, -1.675e-01, 5.831e-02, -1.611e-01, -3.235e-02, -2.857e-02, -3.740e-02, -5.521e-02, 5.499e-03, 1.700e-01), r);\n\tr = MulAdd(s4_7, M4(1.547e-01, -2.014e-02, 2.154e-02, -1.294e-01, -1.114e-02, 2.956e-02, 6.697e-02, -6.797e-02, 7.370e-02, -6.777e-02, 5.050e-02, -8.313e-02, -5.077e-02, -1.236e-01, 1.549e-01, 3.329e-02), r);\n\tr = MulAdd(s4_8, M4(-7.738e-02, 7.239e-02, 6.842e-02, -2.829e-02, -9.568e-03, -8.991e-02, -8.371e-03, 1.752e-01, -1.749e-02, 8.862e-03, 5.179e-02, 1.371e-01, -8.463e-03, -2.560e-01, -6.020e-02, -9.990e-03), r);\n\tr = MulAdd(s5_0, M4(3.632e-02, 8.914e-02, -8.888e-02, -1.491e-02, -1.101e-01, -3.298e-02, 1.195e-01, -1.208e-01, -1.501e-01, 1.288e-02, 1.467e-01, -1.018e-01, 1.483e-02, 5.684e-02, 1.103e-02, -7.856e-03), r);\n\tr = MulAdd(s5_1, M4(-9.384e-02, 1.459e-01, -2.468e-01, 3.597e-01, 7.546e-02, -2.376e-02, 1.857e-01, 3.916e-02, 8.217e-02, -7.327e-02, -3.876e-02, 1.894e-01, 9.173e-03, -8.247e-02, -6.545e-03, 7.009e-02), r);\n\tr = MulAdd(s5_2, M4(2.878e-01, -4.084e-02, 1.117e-01, 2.117e-01, 1.199e-01, 3.482e-02, 1.172e-01, -2.750e-02, 4.719e-02, 3.888e-02, -2.976e-02, -6.914e-02, -9.877e-02, -2.585e-02, 3.017e-02, -7.733e-03), r);\n\tr = MulAdd(s5_3, M4(-1.588e-01, -3.354e-02, -3.294e-01, 6.194e-02, 8.878e-02, -8.921e-02, 2.573e-03, -4.779e-02, 4.467e-02, 2.385e-01, 7.285e-02, -7.890e-02, -1.010e-02, -3.659e-02, -7.703e-03, -2.427e-02), r);\n\tr = MulAdd(s5_4, M4(-1.063e-01, -2.223e-01, 8.846e-02, -5.654e-02, -2.017e-01, 1.409e-02, -1.011e-01, 9.476e-02, 3.337e-02, 2.004e-01, -1.191e-01, -1.504e-01, 1.119e-01, 3.131e-02, -1.772e-01, -1.625e-01), r);\n\tr = MulAdd(s5_5, M4(6.892e-02, 8.256e-02, -1.301e-01, -1.556e-01, 4.404e-02, 1.371e-01, -9.619e-03, 9.117e-02, -8.526e-02, 9.741e-02, -4.309e-02, 1.467e-02, -6.020e-02, -1.205e-01, 1.305e-03, 3.461e-02), r);\n\tr = MulAdd(s5_6, M4(-9.202e-02, -8.236e-02, -5.605e-03, -1.625e-01, 3.579e-02, 7.673e-02, -8.021e-02, 9.903e-03, -4.991e-02, 2.040e-03, 1.293e-02, -7.739e-02, -4.150e-02, -3.881e-02, -6.908e-02, -8.282e-02), r);\n\tr = MulAdd(s5_7, M4(-1.834e-01, 1.597e-02, 1.049e-01, -5.524e-03, -6.159e-02, -1.697e-02, 6.824e-02, -5.493e-02, 5.603e-02, -1.096e-01, 4.400e-02, 2.910e-02, 9.645e-02, -1.648e-02, 6.329e-02, 1.038e-01), r);\n\tr = MulAdd(s5_8, M4(8.771e-02, 1.508e-01, 2.217e-01, 3.061e-02, -3.918e-02, 1.947e-02, 2.294e-02, 9.695e-02, 2.748e-03, -8.599e-02, 3.772e-02, 8.646e-02, 1.298e-01, 1.420e-02, 5.255e-02, -1.048e-01), r);\n\tr = MulAdd(s6_0, M4(-4.407e-02, -2.682e-02, 4.526e-02, 2.739e-02, -1.935e-01, 7.011e-02, 9.171e-03, 4.940e-02, -1.467e-01, -3.275e-02, 6.104e-02, -6.878e-02, 1.220e-02, 9.451e-02, -1.911e-04, -5.313e-02), r);\n\tr = MulAdd(s6_1, M4(-7.799e-02, 4.824e-02, -4.685e-02, 1.330e-01, 9.253e-02, 4.494e-02, -4.259e-02, -1.034e-02, 4.323e-02, 3.399e-02, -7.307e-02, -8.715e-02, 3.315e-02, 9.641e-02, -2.714e-02, 6.442e-02), r);\n\tr = MulAdd(s6_2, M4(1.280e-01, -3.284e-02, -2.368e-02, -1.081e-01, -4.936e-02, 3.070e-02, -1.759e-02, -1.002e-01, -6.439e-02, -4.279e-02, 4.613e-02, -2.717e-01, -1.198e-01, 1.773e-02, -7.221e-03, -6.637e-02), r);\n\tr = MulAdd(s6_3, M4(-7.689e-02, -3.825e-02, -7.242e-02, 8.280e-02, 4.194e-02, 1.121e-01, 2.622e-01, -1.725e-02, -1.986e-01, -1.177e-02, -5.650e-02, 8.646e-02, -4.196e-02, -2.977e-03, 2.090e-02, -6.451e-02), r);\n\tr = MulAdd(s6_4, M4(1.851e-01, -1.181e-01, -2.515e-01, -9.251e-02, -6.227e-02, 6.769e-02, 2.017e-01, 1.323e-01, 5.400e-02, 6.620e-02, 1.503e-02, -7.147e-02, -1.018e-01, 4.994e-02, 8.060e-02, 8.856e-02), r);\n\tr = MulAdd(s6_5, M4(5.242e-02, -8.571e-02, -1.166e-02, 2.723e-02, -2.491e-02, 9.272e-02, -7.715e-02, -1.098e-01, -8.076e-02, 6.484e-02, 5.065e-02, -1.996e-01, -6.703e-02, 7.041e-02, -1.129e-01, -4.052e-02), r);\n\tr = MulAdd(s6_6, M4(1.693e-01, -5.234e-02, -2.291e-02, -1.243e-01, 6.377e-02, 7.930e-02, -4.347e-02, -3.595e-02, -1.106e-01, 6.135e-02, 4.739e-02, -1.549e-01, -3.269e-03, 6.855e-03, -1.141e-02, -5.771e-02), r);\n\tr = MulAdd(s6_7, M4(-2.193e-02, 1.859e-01, 1.001e-01, 1.196e-01, 1.000e-01, -6.727e-02, -3.770e-02, 1.140e-01, 1.902e-01, -6.595e-03, -2.541e-01, -8.262e-02, 1.284e-01, -2.159e-01, 5.541e-03, -2.051e-02), r);\n\tr = MulAdd(s6_8, M4(4.735e-02, 1.489e-01, 5.903e-02, 2.421e-02, -4.557e-02, -1.645e-02, 3.871e-02, 4.318e-02, 2.065e-01, 7.512e-03, -1.383e-01, -8.699e-02, 7.859e-03, -1.348e-01, 2.014e-02, -7.657e-02), r);\n\tr = MulAdd(s7_0, M4(-3.504e-02, 4.054e-02, 1.591e-01, 1.507e-01, -6.738e-02, -6.840e-03, 1.195e-02, -1.019e-01, 2.478e-03, -3.514e-03, 2.032e-01, 9.057e-02, -1.931e-01, 1.626e-01, -1.275e-01, -2.999e-01), r);\n\tr = MulAdd(s7_1, M4(-2.528e-01, 7.853e-02, 9.488e-02, 8.846e-02, 8.768e-02, 6.529e-02, -1.257e-02, 1.981e-02, 6.481e-02, -1.187e-02, 3.204e-02, 1.175e-02, -3.030e-01, -1.115e-01, -1.117e-01, -3.533e-01), r);\n\tr = MulAdd(s7_2, M4(4.824e-02, 4.947e-02, 2.454e-01, -6.911e-02, 9.860e-02, 3.005e-02, 5.433e-04, -1.456e-03, 3.297e-02, 1.039e-01, 2.388e-01, 1.363e-01, 1.138e-01, 7.708e-02, -1.577e-01, -3.101e-01), r);\n\tr = MulAdd(s7_3, M4(-5.749e-02, 4.330e-02, 2.857e-02, 1.032e-01, 1.035e-01, 1.604e-01, 1.927e-02, -1.796e-02, 3.267e-02, 3.284e-02, 5.265e-02, 1.932e-03, -3.115e-01, 5.623e-04, -7.705e-01, -2.119e-01), r);\n\tr = MulAdd(s7_4, M4(2.663e-02, -1.189e-01, -2.258e-02, 2.241e-01, 5.599e-02, 8.080e-02, 2.917e-02, -1.648e-01, -1.288e-02, -8.442e-02, -1.462e-01, 1.041e-01, -7.283e-01, 1.270e-01, -7.735e-01, -1.935e-01), r);\n\tr = MulAdd(s7_5, M4(-2.610e-01, -8.824e-03, 9.837e-02, -4.825e-02, 1.038e-01, 1.235e-02, -7.313e-02, -8.378e-03, -1.153e-01, 8.859e-02, 1.082e-01, 1.711e-02, -6.367e-01, -1.746e-01, -1.139e-01, -4.174e-01), r);\n\tr = MulAdd(s7_6, M4(-4.065e-02, -1.208e-02, 2.632e-03, 6.209e-02, -4.002e-02, -3.493e-02, 4.478e-03, -3.306e-02, -6.063e-02, 1.362e-01, 4.370e-02, 2.847e-03, 2.528e-01, -1.677e-01, -8.459e-02, -3.713e-01), r);\n\tr = MulAdd(s7_7, M4(-2.196e-01, 7.684e-02, -1.451e-01, -4.506e-02, -7.435e-02, -1.734e-01, 3.935e-02, 2.225e-02, -2.907e-02, -1.242e-01, -2.926e-02, -5.695e-02, 2.201e-01, 6.264e-02, -1.411e-01, -3.046e-01), r);\n\tr = MulAdd(s7_8, M4(-1.804e-01, 9.045e-02, 9.856e-02, -9.440e-02, -2.864e-02, -5.568e-02, 1.081e-01, 6.273e-02, -9.816e-02, 5.960e-02, 4.801e-03, 2.349e-02, 3.701e-01, -1.769e-01, -1.709e-01, -5.965e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.040e-02, 5.008e-03, 2.850e-02, 3.035e-02 };\n\tr = MulAdd(s0_0, M4(1.209e-02, 4.511e-02, -1.259e-01, 1.801e-02, -1.489e-01, -7.744e-02, -4.519e-02, -1.305e-01, -1.101e-01, 9.679e-02, -8.833e-02, 1.070e-03, 1.064e-01, -1.194e-01, 3.602e-01, 6.349e-02), r);\n\tr = MulAdd(s0_1, M4(-4.945e-02, -2.867e-01, 1.859e-01, 5.646e-02, -8.603e-02, 8.764e-02, 4.271e-02, -5.464e-03, 1.297e-01, -9.843e-02, 4.122e-02, -9.408e-02, 6.374e-02, 5.450e-02, 4.749e-02, 1.137e-01), r);\n\tr = MulAdd(s0_2, M4(2.290e-03, 8.589e-02, -1.364e-01, 2.320e-02, -5.637e-02, -5.776e-02, 4.048e-02, 4.646e-02, -2.496e-02, -4.359e-02, 4.649e-02, -4.578e-02, 1.724e-01, -4.250e-02, 9.008e-02, -2.097e-02), r);\n\tr = MulAdd(s0_3, M4(1.328e-01, -5.113e-02, 9.661e-02, 3.584e-01, -1.447e-04, 6.085e-02, -2.173e-03, -4.150e-02, -2.510e-01, -2.243e-02, 1.615e-02, 1.553e-01, 3.936e-02, 5.902e-03, -3.577e-02, -8.622e-02), r);\n\tr = MulAdd(s0_4, M4(1.282e-01, -3.511e-01, 3.612e-01, -3.413e-02, -1.100e-01, -1.439e-01, -9.836e-03, 1.909e-03, 1.541e-01, 1.199e-02, -3.416e-02, 7.726e-02, -1.726e-01, -2.366e-01, -1.770e-02, -1.034e-01), r);\n\tr = MulAdd(s0_5, M4(-1.842e-01, 1.090e-01, 2.646e-02, 2.030e-01, 9.180e-02, -2.091e-01, -6.783e-02, 8.176e-02, 5.056e-02, 9.988e-02, -6.093e-03, 7.029e-02, 1.497e-01, -1.331e-01, 1.205e-01, 1.406e-01), r);\n\tr = MulAdd(s0_6, M4(1.557e-01, -8.295e-02, -7.064e-02, 6.583e-02, 5.184e-02, -4.663e-02, -3.992e-02, -8.000e-02, -2.593e-02, -6.642e-02, 2.625e-02, 1.322e-02, 1.973e-01, 1.182e-01, 1.352e-02, -6.801e-02), r);\n\tr = MulAdd(s0_7, M4(-1.737e-01, -2.135e-01, 6.720e-02, -3.688e-01, 1.874e-01, 6.782e-02, -1.867e-02, 6.146e-02, 1.519e-01, 2.078e-01, -9.241e-02, -1.143e-01, 1.275e-01, -2.259e-04, 1.173e-01, 3.520e-02), r);\n\tr = MulAdd(s0_8, M4(1.675e-01, -1.018e-01, 7.274e-02, 2.925e-01, -5.030e-02, 5.771e-02, 2.714e-02, -3.318e-02, 4.824e-02, -9.005e-02, 5.480e-03, -5.039e-02, 1.241e-03, 1.391e-01, 7.588e-02, 2.549e-03), r);\n\tr = MulAdd(s1_0, M4(-1.242e-01, -2.302e-02, 2.898e-02, -1.824e-02, -2.151e-01, 1.024e-01, 1.221e-01, -1.509e-01, -2.634e-02, 2.601e-02, -1.735e-01, -5.896e-02, -6.527e-02, -5.204e-03, -4.855e-02, -6.708e-02), r);\n\tr = MulAdd(s1_1, M4(7.801e-03, 3.848e-02, 1.033e-02, -1.174e-02, -1.183e-02, 1.345e-01, 4.000e-01, 1.013e-02, 1.159e-01, 4.982e-02, 7.533e-03, -1.085e-03, -5.009e-03, 6.178e-03, 3.397e-02, 3.831e-02), r);\n\tr = MulAdd(s1_2, M4(-4.237e-02, 1.380e-01, 7.769e-02, -1.055e-01, -2.220e-01, -7.308e-02, -2.130e-01, -2.470e-02, 1.043e-01, 6.163e-02, 3.809e-02, -4.389e-02, -4.513e-02, -1.382e-01, 1.205e-01, -6.402e-02), r);\n\tr = MulAdd(s1_3, M4(1.881e-01, -1.599e-01, -5.364e-02, -8.743e-02, -1.890e-01, 1.899e-02, -9.322e-02, 1.086e-01, -4.464e-02, -1.280e-01, 3.037e-01, -9.327e-02, -1.184e-02, 5.401e-02, -3.374e-02, 4.372e-02), r);\n\tr = MulAdd(s1_4, M4(1.199e-01, -5.957e-02, -9.253e-03, 1.498e-01, -1.688e-01, -5.394e-02, -2.666e-02, -5.413e-02, -9.928e-02, -1.324e-02, 2.534e-01, -6.590e-02, -5.032e-02, -8.629e-02, -1.970e-03, -6.077e-02), r);\n\tr = MulAdd(s1_5, M4(-6.083e-03, 7.846e-02, -6.000e-02, 4.341e-02, -5.467e-03, 4.813e-02, -2.310e-02, 3.208e-02, -6.983e-02, -7.852e-02, -1.998e-02, 2.221e-02, 1.777e-01, -8.882e-03, -2.707e-02, 1.037e-01), r);\n\tr = MulAdd(s1_6, M4(-3.420e-02, 1.844e-02, 3.980e-02, -1.475e-01, 7.866e-02, -6.863e-02, 1.889e-02, -3.398e-03, 3.107e-02, -1.148e-01, -5.329e-02, -1.722e-02, 2.352e-02, 1.929e-01, 7.786e-03, -9.830e-03), r);\n\tr = MulAdd(s1_7, M4(-2.781e-02, 6.691e-02, -9.545e-02, 4.231e-02, -9.000e-02, 1.266e-01, 4.665e-02, 2.711e-02, -6.153e-02, 9.310e-02, 4.351e-02, 9.940e-02, 1.262e-01, 3.219e-02, -6.487e-02, -5.552e-02), r);\n\tr = MulAdd(s1_8, M4(-8.366e-02, -2.192e-02, 4.450e-02, 2.514e-02, 8.095e-02, 1.241e-01, 5.547e-02, -1.171e-01, 6.950e-02, -4.450e-02, -1.699e-03, 1.040e-01, -4.120e-02, -7.339e-02, -3.509e-02, 3.632e-02), r);\n\tr = MulAdd(s2_0, M4(-1.192e-01, -4.334e-02, -8.963e-02, 3.132e-02, -8.887e-02, -2.458e-02, -3.446e-02, 2.002e-01, -4.401e-02, -4.960e-02, -7.173e-02, 3.750e-02, -4.877e-02, 1.376e-01, -1.326e-01, -1.893e-01), r);\n\tr = MulAdd(s2_1, M4(-3.186e-01, -1.066e-01, -1.339e-02, 1.365e-01, -8.995e-02, 3.117e-02, 1.870e-02, 1.136e-02, 1.429e-01, 1.345e-01, -2.291e-02, 9.036e-02, 5.507e-02, -3.593e-04, 8.528e-03, -4.938e-02), r);\n\tr = MulAdd(s2_2, M4(4.532e-02, -9.502e-02, -3.770e-02, 5.776e-02, -1.369e-01, -1.988e-01, -3.887e-02, 1.325e-01, 6.813e-02, -4.984e-02, -1.904e-01, -2.815e-02, 1.425e-01, 7.566e-02, 3.262e-03, -2.347e-01), r);\n\tr = MulAdd(s2_3, M4(-7.322e-02, -1.502e-01, 6.263e-02, -2.979e-01, -5.895e-02, 4.781e-02, 4.113e-02, -2.937e-02, 2.070e-02, 5.476e-02, 9.087e-02, -8.571e-02, 7.881e-02, 1.784e-01, 1.621e-01, -9.743e-02), r);\n\tr = MulAdd(s2_4, M4(-1.010e-01, 2.538e-01, -2.909e-02, -5.773e-03, -9.496e-02, -4.057e-02, -1.766e-02, 4.822e-02, -2.439e-02, -2.124e-02, 2.763e-02, -1.495e-01, 1.182e-01, -5.139e-02, 2.486e-01, -1.643e-01), r);\n\tr = MulAdd(s2_5, M4(9.509e-02, -1.751e-02, 1.060e-01, 8.923e-03, 4.730e-02, -5.171e-03, 5.679e-02, 4.725e-02, -5.932e-02, -1.748e-02, 9.510e-02, 2.206e-02, 1.533e-01, 6.775e-02, 1.194e-01, 1.154e-02), r);\n\tr = MulAdd(s2_6, M4(2.332e-01, 3.231e-01, -1.061e-01, -4.654e-02, 6.794e-02, 1.202e-01, 9.481e-02, 1.935e-02, -9.529e-02, -1.021e-02, -6.697e-02, 7.863e-02, 2.771e-02, 2.880e-01, -2.041e-01, 2.709e-01), r);\n\tr = MulAdd(s2_7, M4(1.713e-01, 2.813e-01, -2.426e-01, 2.852e-02, 8.356e-02, -7.763e-02, -1.161e-01, 8.172e-02, 5.172e-03, 6.301e-02, 8.229e-02, -1.098e-01, -2.023e-01, -2.939e-01, -1.067e-03, 1.228e-01), r);\n\tr = MulAdd(s2_8, M4(1.953e-01, 2.606e-01, -1.670e-01, 1.798e-01, 5.119e-02, -6.810e-02, -1.451e-02, -1.260e-01, 2.329e-01, -1.182e-01, 2.804e-02, 1.311e-01, 1.462e-01, -1.083e-01, -4.603e-02, 1.439e-01), r);\n\tr = MulAdd(s3_0, M4(-9.441e-02, -3.264e-02, 1.507e-01, 1.408e-02, 3.475e-02, -4.064e-02, -1.473e-01, -1.309e-01, -7.233e-02, 2.080e-01, -1.367e-02, -1.229e-01, 3.507e-02, -8.483e-02, 2.097e-03, -7.173e-02), r);\n\tr = MulAdd(s3_1, M4(4.412e-02, -5.134e-02, -1.370e-02, -4.422e-03, 1.779e-01, 2.364e-01, -2.182e-01, -1.791e-01, -7.399e-02, -5.241e-01, 6.908e-02, 1.578e-01, 3.525e-03, 2.769e-02, 3.628e-02, -1.244e-01), r);\n\tr = MulAdd(s3_2, M4(1.648e-01, 9.574e-02, -6.849e-02, -3.637e-02, 5.263e-02, 9.854e-02, 6.326e-02, 4.128e-02, 1.046e-01, 8.906e-02, -2.206e-01, 8.683e-03, -2.032e-02, -1.181e-02, 5.512e-02, -1.051e-01), r);\n\tr = MulAdd(s3_3, M4(-2.212e-01, 5.570e-02, -1.141e-01, -1.006e-01, -7.169e-04, 3.264e-01, -1.139e-01, -2.577e-01, -8.693e-02, 1.239e-01, 1.803e-01, 1.125e-01, 1.068e-02, -2.922e-02, 3.197e-02, 1.931e-03), r);\n\tr = MulAdd(s3_4, M4(-4.622e-02, 3.270e-02, 1.921e-01, -2.309e-02, -1.523e-01, 1.259e-01, -3.838e-01, 1.271e-01, -2.085e-01, -4.757e-01, -1.196e-01, -1.820e-01, 4.175e-02, -2.550e-02, -5.265e-02, -1.096e-02), r);\n\tr = MulAdd(s3_5, M4(-8.994e-03, -1.081e-01, 1.343e-02, -5.891e-02, -2.103e-01, 1.690e-01, -1.553e-01, -1.295e-01, -6.184e-02, 3.514e-01, -7.091e-02, 2.888e-01, 4.795e-02, -6.023e-04, 6.025e-03, 2.650e-02), r);\n\tr = MulAdd(s3_6, M4(2.547e-02, 2.874e-02, -1.511e-01, -5.070e-02, 3.203e-02, -4.604e-02, 2.209e-02, -1.229e-01, -1.056e-02, -1.707e-01, -7.084e-02, 5.550e-02, 1.163e-02, -4.525e-02, -3.029e-02, 8.571e-02), r);\n\tr = MulAdd(s3_7, M4(-2.294e-02, -1.865e-02, 2.194e-02, 1.160e-01, -2.235e-01, -5.123e-02, 5.762e-02, 2.479e-01, -1.523e-01, -1.528e-01, 5.740e-02, -1.966e-02, -2.238e-02, 1.913e-01, -5.490e-02, -2.322e-02), r);\n\tr = MulAdd(s3_8, M4(5.871e-02, 2.765e-02, 4.142e-02, 3.517e-02, -8.669e-02, 3.216e-01, -1.062e-01, -4.092e-01, 2.025e-01, 2.163e-01, -3.333e-02, 3.378e-01, 4.835e-02, -3.763e-02, -3.008e-02, 1.014e-01), r);\n\tr = MulAdd(s4_0, M4(-9.938e-02, 5.662e-02, 1.075e-01, 3.380e-02, 4.261e-01, -7.606e-03, -2.433e-02, 5.942e-02, 1.104e-01, 4.452e-02, 1.949e-01, -5.846e-02, -2.881e-02, -3.737e-03, -7.296e-02, 2.033e-02), r);\n\tr = MulAdd(s4_1, M4(-5.953e-02, -1.803e-01, 3.228e-02, -7.362e-02, 1.650e-01, -1.759e-01, 7.852e-02, 7.242e-02, -1.063e-01, 8.676e-02, 2.192e-01, 2.149e-02, 7.670e-02, 6.286e-02, -1.718e-01, 3.052e-02), r);\n\tr = MulAdd(s4_2, M4(2.066e-02, -3.229e-02, -1.272e-02, 3.003e-03, 3.458e-01, -3.572e-01, -4.341e-02, 2.942e-02, -1.202e-01, -5.292e-02, 3.636e-02, -2.075e-02, 3.415e-02, 1.072e-01, 3.300e-03, 2.872e-01), r);\n\tr = MulAdd(s4_3, M4(3.300e-02, 1.055e-01, -1.042e-01, 6.901e-03, 2.957e-01, 2.021e-01, -2.375e-02, 5.408e-02, -9.200e-02, 8.006e-02, -1.759e-01, -5.489e-02, -1.236e-01, 2.300e-02, 1.019e-01, 9.595e-02), r);\n\tr = MulAdd(s4_4, M4(-1.879e-02, -3.074e-02, 1.715e-02, 1.419e-01, 3.305e-01, -2.458e-02, -1.699e-01, -1.895e-02, -2.189e-01, 2.476e-01, -8.551e-03, 1.496e-01, 4.431e-02, -1.024e-01, -3.112e-02, -4.159e-02), r);\n\tr = MulAdd(s4_5, M4(1.866e-01, -4.232e-02, 6.446e-02, -1.000e-01, -3.971e-03, -2.469e-01, -1.169e-01, -8.591e-02, 3.592e-02, -1.996e-02, -3.942e-02, 7.812e-02, -1.576e-01, 9.317e-02, 6.869e-02, 2.633e-01), r);\n\tr = MulAdd(s4_6, M4(4.973e-02, 5.596e-02, -2.942e-02, 3.945e-02, 1.295e-01, 5.590e-02, -6.419e-02, 9.570e-02, -3.299e-02, 1.413e-01, 1.897e-02, 1.479e-03, 1.753e-01, -4.112e-02, 4.182e-02, -2.565e-04), r);\n\tr = MulAdd(s4_7, M4(-1.027e-02, -3.947e-02, -2.293e-02, -1.055e-02, 4.375e-03, 2.412e-01, -1.684e-01, 1.426e-01, -4.759e-02, 4.362e-02, -2.873e-02, -1.426e-01, 1.059e-01, -7.505e-02, 5.282e-02, -4.923e-02), r);\n\tr = MulAdd(s4_8, M4(1.793e-02, 9.091e-02, -1.470e-02, -9.641e-02, 1.120e-01, -3.178e-02, -5.480e-02, -1.602e-01, -3.819e-02, 1.581e-02, 4.480e-02, 1.712e-01, -4.538e-02, 1.732e-01, 1.257e-01, 2.426e-01), r);\n\tr = MulAdd(s5_0, M4(1.128e-01, 5.831e-02, -4.761e-02, 2.190e-01, 1.296e-02, 4.718e-02, -7.204e-03, -7.652e-02, 5.361e-02, 1.115e-01, 2.294e-01, 6.526e-02, -9.302e-02, -6.147e-02, -1.335e-01, 4.724e-02), r);\n\tr = MulAdd(s5_1, M4(-3.076e-02, -5.031e-03, -2.038e-02, 3.392e-02, 3.513e-02, 1.646e-02, 1.014e-01, 1.512e-03, 1.196e-01, -2.991e-03, 1.386e-01, 2.146e-01, 2.277e-02, -5.620e-02, -2.236e-01, 1.751e-01), r);\n\tr = MulAdd(s5_2, M4(1.017e-01, 2.476e-01, -2.771e-02, 6.961e-02, -3.064e-02, -6.149e-02, 7.209e-02, -3.906e-02, -1.153e-01, 6.624e-03, 6.405e-02, 4.708e-02, 1.956e-01, -8.011e-02, -1.242e-01, 1.444e-02), r);\n\tr = MulAdd(s5_3, M4(1.568e-01, 5.347e-02, -5.782e-02, -6.519e-02, -8.024e-02, 3.140e-02, -1.768e-01, 8.107e-02, -1.213e-01, -5.629e-02, -2.261e-01, 5.272e-02, -1.467e-01, -1.843e-02, 5.187e-02, -1.378e-01), r);\n\tr = MulAdd(s5_4, M4(-1.650e-01, -3.911e-01, 4.699e-03, 2.402e-01, -4.692e-02, 6.856e-03, 2.062e-02, -2.151e-01, -1.859e-01, -1.778e-02, 3.559e-02, 1.345e-01, -6.697e-02, -2.813e-02, 6.408e-02, 1.028e-01), r);\n\tr = MulAdd(s5_5, M4(-1.920e-02, -9.734e-02, -6.633e-02, -1.076e-01, -1.382e-01, -3.244e-02, -1.126e-01, -2.778e-03, 5.546e-02, 5.411e-02, -1.391e-02, 1.117e-01, -8.756e-02, 9.652e-02, -3.436e-02, -1.543e-01), r);\n\tr = MulAdd(s5_6, M4(-8.966e-02, -4.120e-02, -8.011e-02, -1.364e-01, 5.269e-02, -2.837e-02, 1.709e-02, 2.249e-02, 9.687e-03, -1.441e-01, -1.440e-02, 5.554e-02, -2.181e-01, -2.442e-02, 5.119e-02, -1.257e-01), r);\n\tr = MulAdd(s5_7, M4(2.125e-01, 6.544e-02, -3.881e-02, 2.105e-01, -2.400e-02, 3.021e-02, -2.993e-02, 1.163e-01, -9.385e-02, -2.801e-02, 1.703e-02, 7.201e-03, -3.281e-02, 1.150e-01, -3.042e-03, 7.310e-02), r);\n\tr = MulAdd(s5_8, M4(-1.190e-01, 5.190e-03, 1.481e-01, -7.708e-02, 9.729e-02, 1.799e-01, 2.982e-02, 2.960e-02, 1.851e-02, 7.781e-02, 2.263e-02, -2.539e-02, 7.774e-03, 1.886e-02, 1.686e-02, -1.899e-01), r);\n\tr = MulAdd(s6_0, M4(2.732e-02, -8.044e-02, 5.805e-02, 7.451e-02, 6.343e-02, -7.971e-02, 6.930e-02, 1.125e-01, -6.981e-02, 5.407e-02, 8.634e-02, 1.879e-01, -6.081e-02, -1.187e-01, 4.764e-02, 4.740e-02), r);\n\tr = MulAdd(s6_1, M4(-5.672e-02, 2.655e-02, 2.719e-03, 9.895e-02, -7.568e-02, 5.300e-02, -5.080e-02, 1.155e-01, -1.366e-02, -1.794e-01, -9.348e-02, -6.803e-02, 1.234e-02, -2.631e-02, 1.041e-01, 1.539e-03), r);\n\tr = MulAdd(s6_2, M4(-8.914e-02, 9.367e-02, -8.082e-03, -5.017e-02, 6.531e-03, 9.440e-02, -9.546e-02, -2.078e-01, 6.303e-02, -7.267e-02, -6.052e-02, 3.390e-02, 1.199e-02, 1.099e-01, 5.302e-02, -3.439e-02), r);\n\tr = MulAdd(s6_3, M4(-1.370e-03, -1.555e-01, 4.913e-02, -6.440e-02, -1.153e-01, -1.462e-01, -3.976e-02, -1.655e-01, -7.278e-02, 1.135e-01, -1.266e-02, -8.936e-02, -1.615e-02, -4.130e-03, 3.085e-02, -5.194e-02), r);\n\tr = MulAdd(s6_4, M4(-4.025e-02, 1.696e-01, 1.808e-02, -1.851e-01, 4.826e-02, -1.989e-01, -1.621e-02, 3.878e-02, 2.924e-02, 1.500e-01, 7.301e-02, 1.156e-01, 8.438e-02, -2.838e-02, -2.140e-02, -7.899e-02), r);\n\tr = MulAdd(s6_5, M4(-5.516e-03, -3.767e-02, -1.080e-02, 2.163e-02, -1.908e-01, -1.105e-01, -4.079e-03, -2.976e-01, -2.688e-02, 1.270e-01, 1.558e-01, 1.177e-01, -7.772e-02, -9.525e-02, -4.954e-02, -1.848e-01), r);\n\tr = MulAdd(s6_6, M4(1.304e-01, -5.792e-02, -8.074e-03, 1.746e-02, -1.216e-01, 5.129e-02, -6.421e-02, 7.717e-02, 2.829e-02, -5.381e-03, 3.045e-03, 2.908e-02, -4.127e-02, -1.850e-02, -6.188e-02, 4.142e-02), r);\n\tr = MulAdd(s6_7, M4(5.040e-02, -7.565e-02, -6.751e-02, -1.051e-01, 7.771e-02, -3.772e-02, -2.842e-02, 7.751e-02, -1.013e-01, 1.450e-01, -3.471e-02, 1.379e-02, 2.554e-02, 3.765e-03, -3.954e-02, 3.068e-02), r);\n\tr = MulAdd(s6_8, M4(3.067e-03, -1.769e-01, 6.014e-02, 1.301e-01, 3.985e-02, 2.602e-01, 3.536e-03, 2.116e-01, -8.207e-02, -6.224e-03, -5.648e-02, -9.683e-02, 2.825e-02, 2.959e-02, -8.088e-02, 6.939e-02), r);\n\tr = MulAdd(s7_0, M4(1.006e-02, 2.047e-01, -2.866e-02, -8.099e-02, 1.373e-01, 1.434e-01, 1.495e-01, -8.041e-02, 7.476e-02, 5.637e-02, 5.705e-02, -1.046e-01, -1.410e-01, 2.264e-01, 1.041e-02, -9.869e-02), r);\n\tr = MulAdd(s7_1, M4(5.110e-02, 5.172e-02, -5.743e-02, 8.524e-02, 1.275e-01, 1.149e-02, 5.671e-02, 4.428e-02, 2.453e-01, -2.659e-01, -2.023e-02, 7.128e-02, 2.033e-02, 1.359e-01, 1.923e-01, 2.281e-02), r);\n\tr = MulAdd(s7_2, M4(-2.172e-01, 1.265e-01, -9.141e-02, 8.283e-02, 1.425e-01, 3.770e-02, 2.065e-02, -1.220e-01, -2.166e-02, -1.593e-01, -1.264e-01, -1.340e-01, -3.660e-01, -1.286e-02, 3.190e-02, 1.368e-01), r);\n\tr = MulAdd(s7_3, M4(6.927e-02, -1.486e-01, 2.885e-02, 9.393e-02, -5.625e-02, -1.521e-01, -7.625e-02, 1.589e-01, -2.040e-03, -1.351e-01, -8.796e-02, 5.367e-03, 5.634e-02, -3.133e-01, 9.720e-02, 2.741e-01), r);\n\tr = MulAdd(s7_4, M4(7.587e-02, -5.238e-02, 1.154e-01, 2.532e-02, 2.177e-02, 2.078e-01, -1.090e-01, 9.705e-03, 2.140e-01, -2.165e-01, 3.438e-02, -2.241e-02, 1.044e-01, -2.104e-01, -3.646e-01, 4.702e-01), r);\n\tr = MulAdd(s7_5, M4(-7.825e-02, 5.564e-03, -4.894e-02, 3.624e-01, 5.070e-02, 5.833e-02, -6.385e-02, 8.356e-02, 1.689e-01, 7.976e-03, -4.881e-02, -4.230e-02, -6.128e-01, -1.089e-01, -4.774e-01, -1.708e-01), r);\n\tr = MulAdd(s7_6, M4(1.434e-02, 1.574e-01, -9.762e-03, 7.883e-03, -7.872e-02, -4.435e-02, 7.324e-02, 1.883e-02, -3.976e-02, -1.412e-02, -3.203e-02, 4.119e-02, -2.741e-01, -1.385e-01, 3.347e-02, -2.693e-01), r);\n\tr = MulAdd(s7_7, M4(9.450e-02, 9.057e-02, -1.375e-01, 2.256e-01, -5.546e-02, 2.531e-02, -3.054e-02, -1.491e-02, -2.629e-03, 2.303e-03, 8.818e-03, -1.034e-01, 2.138e-01, 6.280e-01, 1.307e-02, -2.183e-01), r);\n\tr = MulAdd(s7_8, M4(-1.732e-02, 2.528e-01, -1.357e-01, 9.682e-02, 1.232e-01, -4.775e-02, -3.421e-02, 1.176e-02, -7.255e-03, -8.638e-02, -6.195e-02, 1.069e-02, -2.368e-01, 3.942e-01, -1.728e-01, -2.484e-01), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.409e-02, -5.309e-03, -2.197e-02, 3.849e-02 };\n\tr = MulAdd(s0_0, M4(5.544e-02, -5.758e-03, 2.108e-02, 4.552e-02, -1.077e-01, -7.150e-02, 2.178e-01, -7.830e-02, -2.320e-02, 4.724e-02, -8.105e-02, -6.811e-02, 1.483e-01, -1.327e-02, 1.257e-01, -1.698e-01), r);\n\tr = MulAdd(s0_1, M4(2.066e-02, 1.023e-01, -1.745e-02, -2.050e-02, 1.418e-01, 3.869e-02, -4.629e-02, 3.321e-01, -1.605e-02, 2.144e-02, -2.054e-02, -5.619e-02, 2.438e-01, 1.045e-01, -1.384e-01, 2.647e-01), r);\n\tr = MulAdd(s0_2, M4(7.674e-03, 7.657e-02, -9.888e-03, -1.328e-01, -3.430e-01, -1.643e+00, 5.308e-01, 8.012e-01, 4.700e-02, -1.216e-01, 1.025e-01, 5.615e-02, -1.697e-03, 1.288e-01, -1.155e-01, 2.061e-01), r);\n\tr = MulAdd(s0_3, M4(-1.864e-02, -7.868e-02, 1.318e-01, 2.944e-02, 1.153e-01, -2.453e-02, 3.245e-01, -8.511e-03, 8.246e-02, 9.155e-02, -2.596e-01, -4.688e-02, -5.379e-02, 1.681e-02, -4.082e-02, 2.190e-02), r);\n\tr = MulAdd(s0_4, M4(6.601e-02, -7.595e-02, 2.497e-02, 6.535e-02, -5.133e-01, -1.201e-01, -4.400e-01, -4.921e-02, 1.192e-01, 6.046e-02, 2.065e-01, 4.049e-03, 1.598e-01, -2.106e-03, -1.876e-02, -1.145e-01), r);\n\tr = MulAdd(s0_5, M4(1.073e-01, 1.299e-01, -3.370e-02, -8.442e-02, -1.831e-01, 6.161e-02, -2.270e-01, -3.732e-02, 9.468e-02, -1.475e-01, 4.612e-02, -6.901e-02, -1.292e-01, 1.520e-01, -4.510e-02, -3.038e-01), r);\n\tr = MulAdd(s0_6, M4(-1.179e-02, 9.368e-03, -2.160e-02, 2.662e-02, -7.871e-02, -8.766e-02, -3.862e-02, -9.715e-02, -5.973e-02, 5.893e-02, -1.214e-02, -9.276e-02, -3.892e-03, 6.275e-02, -1.077e-01, 3.067e-01), r);\n\tr = MulAdd(s0_7, M4(1.529e-02, -5.643e-02, -9.501e-02, 1.355e-01, 8.102e-02, -8.228e-02, -1.104e-01, -2.338e-01, -1.540e-02, 1.110e-02, 2.905e-02, -3.618e-02, 1.395e-01, -2.328e-01, -6.577e-02, 3.591e-02), r);\n\tr = MulAdd(s0_8, M4(-5.025e-02, -2.154e-02, -1.012e-01, 1.160e-01, 2.285e-01, 1.782e-01, 4.228e-03, -1.791e-01, -2.313e-01, -1.870e-02, 1.116e-02, 9.506e-02, -4.598e-02, 6.144e-02, -6.470e-02, -9.153e-03), r);\n\tr = MulAdd(s1_0, M4(3.908e-02, 6.316e-03, -1.158e-01, -1.560e-01, -5.848e-02, 8.426e-02, 6.576e-02, -5.478e-02, -8.282e-02, -1.216e-01, -9.145e-02, 5.931e-01, -5.063e-02, 9.802e-02, -6.655e-02, -1.409e-01), r);\n\tr = MulAdd(s1_1, M4(-1.087e-01, 2.195e-01, -6.529e-03, -9.650e-02, 1.615e-01, 1.374e-03, 1.127e-02, 2.669e-02, -2.843e-02, 1.035e-01, 1.358e-01, 5.600e-01, -8.128e-02, 1.057e-01, -2.377e-03, 9.913e-02), r);\n\tr = MulAdd(s1_2, M4(-3.318e-01, -3.460e-01, 2.275e-01, -8.662e-03, 9.161e-02, -8.165e-02, 1.890e-02, 5.559e-03, -2.743e-01, -2.447e-01, 1.763e-01, 4.261e-01, 1.459e-01, 4.110e-02, 7.020e-03, -9.591e-02), r);\n\tr = MulAdd(s1_3, M4(-2.150e-01, 2.711e-01, 3.466e-01, -1.744e-01, -2.085e-02, 8.328e-03, 1.817e-02, -6.482e-02, -2.019e-01, 4.386e-02, -8.107e-01, 1.272e-01, -3.355e-03, 1.445e-02, -1.531e-01, 3.756e-03), r);\n\tr = MulAdd(s1_4, M4(-3.456e-01, -1.712e-01, 1.056e-01, -4.463e-01, -9.244e-02, -2.191e-02, 1.196e-03, 8.891e-02, 4.539e-01, 3.934e-01, 7.296e-01, 7.285e-01, 8.415e-02, -3.430e-02, -5.900e-04, 5.239e-02), r);\n\tr = MulAdd(s1_5, M4(-7.564e-02, 9.153e-03, -1.038e-01, -4.872e-01, -7.808e-02, 1.069e-03, 2.316e-02, -5.820e-03, 8.850e-02, 1.468e-01, 1.475e-02, 2.014e-01, 5.136e-02, 1.069e-01, 1.706e-02, 6.026e-03), r);\n\tr = MulAdd(s1_6, M4(-2.049e-01, 4.374e-03, 1.735e-01, -9.108e-02, -1.021e-01, -1.778e-04, -2.652e-02, -3.118e-02, 2.540e-01, 1.640e-01, 8.107e-02, 7.021e-02, -1.428e-01, 3.771e-02, -1.237e-01, 1.380e-01), r);\n\tr = MulAdd(s1_7, M4(1.263e-01, 2.799e-02, -1.731e-02, -1.820e-01, 6.205e-02, -4.359e-03, 4.270e-02, 6.013e-02, 2.310e-01, -7.026e-02, 2.328e-01, 2.288e-01, 8.425e-02, -6.989e-02, 1.053e-01, 6.417e-02), r);\n\tr = MulAdd(s1_8, M4(-4.784e-02, 3.269e-02, 5.087e-02, 4.355e-01, -1.589e-02, 4.944e-02, -3.893e-02, 1.440e-01, -4.526e-01, 1.852e-02, -8.770e-02, 2.989e-01, -6.335e-03, 9.053e-03, 2.872e-02, 1.917e-02), r);\n\tr = MulAdd(s2_0, M4(-1.034e-01, -1.212e-01, -5.062e-02, 2.220e-01, 1.032e-01, 1.242e-01, -9.939e-02, -5.839e-03, 4.070e-02, 1.123e-01, 6.500e-02, 3.366e-02, 6.602e-04, 4.235e-02, 7.555e-02, -3.979e-02), r);\n\tr = MulAdd(s2_1, M4(-1.470e-01, 1.341e-01, -4.356e-02, 1.161e-01, 8.236e-02, 8.301e-02, -5.493e-02, -2.833e-02, 1.886e-01, 2.338e-02, 5.674e-02, 4.431e-02, 2.927e-02, 1.126e-01, -2.959e-02, 2.052e-02), r);\n\tr = MulAdd(s2_2, M4(-2.107e-01, -2.339e-01, -5.360e-02, -2.191e-01, 9.702e-02, -2.443e-02, -3.053e-02, 1.584e-01, 1.841e-01, -3.244e-02, -6.325e-04, 8.851e-02, 7.295e-03, 4.954e-02, -2.203e-02, 2.285e-02), r);\n\tr = MulAdd(s2_3, M4(-2.654e-02, 5.692e-02, -1.150e-01, 5.888e-02, -9.731e-02, -5.500e-02, -4.047e-02, 1.866e-01, -1.104e-02, 1.897e-02, -2.299e-01, 5.012e-02, -7.490e-02, 3.292e-02, -4.738e-02, -2.095e-02), r);\n\tr = MulAdd(s2_4, M4(-8.243e-02, -1.117e-01, -1.419e-02, -8.975e-02, -7.969e-02, 8.002e-02, 3.929e-02, -2.430e-01, -6.524e-02, 2.296e-01, -8.671e-02, -7.930e-02, 1.248e-01, 1.087e-01, -7.137e-02, 4.833e-02), r);\n\tr = MulAdd(s2_5, M4(-9.138e-02, -8.530e-02, 1.243e-01, -7.925e-02, -8.227e-02, 9.701e-02, -2.030e-05, 1.916e-01, 7.244e-02, 9.469e-02, 3.060e-02, -1.714e-01, -5.628e-03, -3.548e-02, 4.991e-02, 3.440e-02), r);\n\tr = MulAdd(s2_6, M4(-3.592e-01, -1.287e-02, 6.441e-02, 1.201e-01, 1.077e-01, 6.000e-02, 4.156e-02, 7.145e-02, 1.351e-01, 6.877e-03, -4.731e-02, 1.923e-01, -5.772e-02, -7.441e-03, 2.667e-02, 7.189e-02), r);\n\tr = MulAdd(s2_7, M4(7.838e-02, 1.265e-01, 1.347e-01, -1.894e-01, 1.915e-02, 6.450e-02, -1.783e-02, 7.198e-02, 1.192e-01, 9.598e-02, -5.289e-02, -9.756e-02, 5.461e-02, -1.719e-01, -3.899e-02, -3.137e-02), r);\n\tr = MulAdd(s2_8, M4(-1.130e-01, 2.902e-03, 7.685e-02, -2.195e-01, -6.129e-02, 1.072e-01, -2.869e-02, 1.294e-01, 4.824e-02, -9.565e-02, 3.023e-02, -1.908e-01, -2.689e-02, -5.843e-02, -6.372e-02, -1.017e-01), r);\n\tr = MulAdd(s3_0, M4(3.443e-02, -2.186e-02, -7.398e-02, 2.109e-02, 4.728e-02, -2.613e-02, -5.230e-02, -4.760e-02, -2.659e-02, 5.841e-02, 2.548e-02, 1.497e-01, -1.254e-02, -3.591e-02, -4.055e-02, 1.223e-01), r);\n\tr = MulAdd(s3_1, M4(5.113e-03, 9.075e-02, -9.528e-02, 1.000e-01, -1.631e-02, -1.926e-01, -5.704e-02, 1.599e-01, 9.760e-03, -2.674e-01, 4.985e-02, 1.509e-01, 7.294e-02, -2.058e-01, 7.094e-02, 1.679e-01), r);\n\tr = MulAdd(s3_2, M4(-3.314e-02, -5.458e-02, 4.053e-02, -6.458e-02, -3.707e-02, -7.450e-02, -5.707e-02, -1.021e-01, 3.070e-02, 4.210e-03, 4.633e-02, -5.045e-02, -1.479e-02, -3.339e-02, 8.471e-02, -8.356e-02), r);\n\tr = MulAdd(s3_3, M4(-1.641e-02, -4.805e-02, -9.906e-02, 7.602e-02, 1.348e-01, 6.798e-03, -2.020e-02, -9.736e-02, 1.131e-01, 1.257e-01, 1.013e-01, -1.374e-01, 6.402e-02, 1.710e-01, 1.075e-01, -1.846e-01), r);\n\tr = MulAdd(s3_4, M4(2.332e-02, 7.788e-02, -1.213e-01, -2.642e-02, -9.024e-02, 1.647e-01, 4.472e-02, -8.873e-02, -8.534e-02, -1.443e-01, -1.676e-01, 2.141e-02, -3.493e-01, 2.111e-01, 1.340e-01, 2.345e-02), r);\n\tr = MulAdd(s3_5, M4(6.754e-02, -7.302e-02, 7.720e-02, 7.302e-02, 1.413e-02, -9.789e-02, 5.252e-02, 7.653e-02, -3.572e-02, 5.287e-02, 1.009e-01, -1.622e-02, 7.554e-02, -1.290e-01, -2.322e-03, 1.709e-01), r);\n\tr = MulAdd(s3_6, M4(3.987e-02, 2.268e-02, -5.675e-02, -3.855e-02, 5.678e-03, 2.296e-02, -4.488e-03, 7.918e-02, -3.615e-02, 5.164e-02, 9.196e-02, -1.309e-01, -2.668e-01, -1.025e-01, 9.466e-02, 1.381e-01), r);\n\tr = MulAdd(s3_7, M4(2.574e-02, 1.908e-01, 1.321e-01, 1.192e-01, 1.048e-02, 6.638e-02, 1.597e-01, 1.485e-01, -2.010e-01, 2.928e-02, -1.044e-01, -1.083e-01, -1.064e-01, -1.828e-01, 2.316e-02, -1.473e-01), r);\n\tr = MulAdd(s3_8, M4(-6.137e-02, -5.335e-02, 6.966e-02, -6.205e-02, -1.061e-01, 3.473e-02, 1.788e-02, -9.480e-02, 5.560e-02, -4.706e-02, 5.202e-02, -1.420e-01, 6.509e-03, -1.294e-02, 3.418e-02, -5.897e-02), r);\n\tr = MulAdd(s4_0, M4(1.175e-01, 1.390e-04, 6.281e-02, -7.248e-02, 1.378e-02, -9.862e-02, -5.127e-02, -6.545e-02, 8.631e-02, 3.223e-02, -7.405e-02, 5.335e-02, 3.574e-02, -4.053e-02, 1.716e-01, 1.277e-01), r);\n\tr = MulAdd(s4_1, M4(-1.075e-02, 5.488e-02, -6.465e-02, -2.294e-01, 5.212e-02, -1.647e-01, -2.144e-02, 3.401e-02, 1.802e-01, -1.097e-01, -1.165e-01, 2.270e-01, 1.037e-01, -3.603e-01, 1.609e-03, 3.745e-01), r);\n\tr = MulAdd(s4_2, M4(-2.245e-01, 2.581e-01, -1.418e-01, 4.069e-03, 1.000e-01, -8.272e-02, -6.738e-03, 5.556e-02, -4.491e-02, 3.893e-02, -6.781e-02, 2.742e-02, -3.531e-02, 7.826e-04, 7.051e-02, 1.496e-02), r);\n\tr = MulAdd(s4_3, M4(1.454e-02, -2.678e-02, -7.264e-02, -3.251e-02, -2.511e-02, 3.208e-02, -1.461e-01, -1.288e-01, 1.411e-02, 1.038e-02, -1.715e-01, 5.874e-02, 3.128e-01, 2.134e-01, -4.003e-02, -2.441e-02), r);\n\tr = MulAdd(s4_4, M4(7.052e-02, 5.386e-02, 1.227e-01, -1.277e-01, -2.847e-04, -2.280e-01, -3.854e-02, -1.228e-01, -2.950e-02, 9.786e-02, -9.868e-02, -3.455e-01, 1.065e-01, 1.068e-01, -5.596e-03, 2.004e-02), r);\n\tr = MulAdd(s4_5, M4(-6.593e-02, -2.414e-01, 1.366e-01, -1.910e-01, 1.177e-03, 4.601e-03, -3.388e-02, 7.391e-02, 5.703e-02, -1.842e-01, -7.501e-02, 2.527e-02, -5.273e-02, -1.680e-01, -1.124e-01, 8.422e-02), r);\n\tr = MulAdd(s4_6, M4(1.933e-03, -2.671e-02, 1.166e-01, 4.585e-02, -5.652e-02, -2.965e-02, -3.518e-02, 9.324e-02, 6.895e-02, -5.980e-02, 9.371e-03, -4.457e-02, -1.102e-01, 1.673e-02, 4.024e-02, 6.059e-02), r);\n\tr = MulAdd(s4_7, M4(-1.293e-01, -1.190e-02, -4.142e-02, 2.233e-01, 2.569e-03, -1.057e-01, -7.533e-02, 1.966e-02, 1.172e-01, 4.392e-02, 4.434e-02, 2.997e-01, -1.758e-02, 9.199e-02, 1.395e-01, 2.846e-01), r);\n\tr = MulAdd(s4_8, M4(-1.066e-01, -1.434e-01, 4.095e-02, -1.961e-01, -1.314e-02, -4.131e-02, 1.397e-02, 8.244e-02, 1.721e-01, -1.346e-01, -1.487e-01, -4.334e-02, 4.678e-02, 1.914e-02, 2.189e-02, -2.744e-01), r);\n\tr = MulAdd(s5_0, M4(3.505e-02, -1.893e-02, -6.174e-02, 7.140e-02, 5.862e-02, -7.290e-02, -4.338e-02, -1.928e-01, -6.280e-02, 2.682e-02, 6.347e-02, -1.203e-01, 6.547e-04, 1.097e-01, 1.354e-01, 2.270e-02), r);\n\tr = MulAdd(s5_1, M4(1.004e-01, -6.857e-03, -1.677e-01, -5.980e-02, -3.806e-02, 1.204e-01, 1.410e-01, -1.282e-01, 1.340e-01, -1.460e-01, 2.107e-03, -2.031e-02, 8.105e-02, -2.499e-01, -1.983e-02, 1.698e-02), r);\n\tr = MulAdd(s5_2, M4(5.069e-02, -8.407e-02, 8.328e-02, 1.169e-01, -2.470e-02, 9.539e-02, 1.750e-02, 1.075e-01, -8.137e-02, 3.938e-02, -1.778e-02, 1.271e-01, -1.941e-02, -9.652e-03, 3.720e-02, 1.866e-01), r);\n\tr = MulAdd(s5_3, M4(-5.189e-02, 9.037e-02, -1.478e-01, 1.589e-01, -7.698e-02, 1.711e-02, 7.525e-04, 1.649e-02, 1.388e-02, 2.732e-02, -1.145e-02, -1.458e-02, -4.554e-02, -1.471e-02, 5.291e-02, 1.993e-03), r);\n\tr = MulAdd(s5_4, M4(7.997e-03, -1.809e-02, 2.333e-01, 7.397e-02, -1.589e-01, -4.639e-02, 2.745e-02, -1.362e-01, -1.537e-02, 5.553e-03, -8.906e-02, -5.364e-02, -2.010e-02, 9.191e-02, -4.399e-02, -8.397e-02), r);\n\tr = MulAdd(s5_5, M4(-3.699e-02, 4.243e-02, 6.462e-02, -1.352e-01, -9.268e-02, 1.362e-01, 2.535e-02, 1.417e-01, 2.323e-02, -9.547e-02, 2.809e-02, 4.400e-02, -7.593e-02, -2.419e-01, -6.286e-02, 8.863e-02), r);\n\tr = MulAdd(s5_6, M4(8.169e-02, 1.890e-02, 7.678e-02, -3.580e-02, -1.117e-01, 1.031e-02, 5.636e-02, 1.345e-02, 3.059e-03, 8.812e-02, -2.234e-02, -1.886e-01, -2.863e-02, 4.068e-02, -3.889e-02, -3.714e-02), r);\n\tr = MulAdd(s5_7, M4(-9.569e-02, -2.113e-02, -6.659e-02, 5.730e-02, -8.431e-02, -3.651e-03, -1.317e-03, 5.162e-02, -1.783e-02, 1.012e-01, 9.033e-02, 1.092e-01, -2.062e-02, 7.236e-02, -2.073e-03, 4.080e-02), r);\n\tr = MulAdd(s5_8, M4(-1.102e-01, -4.933e-02, 1.970e-02, -1.550e-01, -1.312e-02, 4.186e-02, -3.089e-02, 7.010e-02, 1.350e-01, -3.695e-02, -3.183e-02, 9.297e-02, -7.847e-02, -3.134e-02, 5.704e-02, -1.429e-01), r);\n\tr = MulAdd(s6_0, M4(7.000e-03, -7.842e-02, 1.152e-01, 3.083e-02, 4.837e-02, 7.915e-02, -8.436e-02, -1.769e-01, 4.239e-02, -3.625e-02, -7.933e-02, -1.820e-02, 8.132e-03, -3.315e-02, -7.444e-02, -5.075e-02), r);\n\tr = MulAdd(s6_1, M4(3.911e-02, 7.855e-02, 3.165e-02, 1.165e-01, -6.093e-02, -1.520e-01, -1.830e-02, -2.941e-03, 1.659e-02, 1.346e-01, 2.275e-02, -7.598e-03, -1.072e-01, 6.206e-02, -1.064e-01, 1.363e-01), r);\n\tr = MulAdd(s6_2, M4(-3.572e-02, -1.017e-01, -3.197e-02, -1.633e-01, 3.489e-02, -8.531e-02, 1.401e-01, -1.635e-02, -6.238e-02, -1.510e-01, 6.321e-02, 1.244e-01, -9.047e-02, -8.580e-02, 3.259e-02, 7.443e-02), r);\n\tr = MulAdd(s6_3, M4(1.415e-02, 3.246e-02, 6.484e-02, 2.144e-01, -1.114e-02, 6.499e-02, -2.476e-01, -9.417e-02, 7.232e-02, -9.882e-02, -4.253e-02, -8.914e-02, 1.202e-01, -4.441e-02, -1.108e-01, -1.293e-01), r);\n\tr = MulAdd(s6_4, M4(1.240e-01, -1.149e-02, 4.045e-02, -4.748e-02, -6.501e-02, -3.682e-02, 9.060e-02, 1.020e-01, -5.793e-02, 4.212e-02, 1.733e-01, -3.874e-02, -8.168e-02, 2.860e-01, 7.321e-02, -9.710e-02), r);\n\tr = MulAdd(s6_5, M4(-1.567e-01, -8.936e-02, 1.170e-01, -1.707e-01, 1.136e-01, 1.074e-01, 6.826e-02, 8.583e-02, -1.006e-01, 2.438e-01, 9.477e-03, 1.312e-01, 1.575e-01, -8.688e-04, 9.217e-02, 5.701e-03), r);\n\tr = MulAdd(s6_6, M4(-6.751e-02, -1.474e-01, 7.120e-02, -1.665e-01, 2.879e-02, -3.259e-02, -4.251e-02, 1.488e-02, 9.614e-02, -5.991e-02, 1.763e-01, 1.456e-02, 3.111e-02, 5.714e-02, -1.470e-01, -8.239e-02), r);\n\tr = MulAdd(s6_7, M4(1.637e-01, -5.533e-02, -2.331e-01, -1.128e-01, 1.022e-01, -8.590e-02, -4.325e-02, 1.635e-01, -1.229e-01, 9.051e-02, 6.749e-02, 3.805e-02, -5.861e-02, -2.092e-02, 2.744e-02, 5.822e-02), r);\n\tr = MulAdd(s6_8, M4(2.953e-01, 1.238e-01, -9.868e-03, 3.260e-01, 1.625e-01, 5.333e-02, 5.171e-02, -6.420e-03, -2.182e-01, 3.314e-02, -1.977e-02, 1.174e-01, 9.432e-04, -5.159e-02, -3.402e-02, -2.400e-02), r);\n\tr = MulAdd(s7_0, M4(-1.764e-03, -4.008e-02, 2.166e-02, 1.506e-01, -1.484e-01, -3.399e-02, 2.949e-02, 5.770e-02, -8.984e-02, 5.094e-02, 5.657e-03, 5.733e-02, -2.079e-02, -8.383e-03, -3.833e-02, 6.736e-02), r);\n\tr = MulAdd(s7_1, M4(-6.793e-02, -3.721e-02, 4.122e-02, -8.749e-02, 2.187e-02, 1.206e-01, -5.195e-02, 1.270e-01, -1.035e-02, 7.504e-02, 4.991e-02, -7.404e-02, 4.917e-02, 7.537e-03, -2.237e-02, 8.293e-02), r);\n\tr = MulAdd(s7_2, M4(-9.762e-02, 3.176e-02, 3.020e-02, -2.093e-01, -6.846e-02, 6.975e-02, -5.583e-03, 1.134e-02, -1.819e-01, 2.187e-01, 6.703e-02, 9.355e-02, 2.201e-02, -1.026e-01, -1.755e-02, -4.572e-02), r);\n\tr = MulAdd(s7_3, M4(1.023e-01, 4.612e-02, 7.730e-02, 1.702e-01, 1.045e-01, 2.049e-02, -2.142e-01, -2.667e-02, -1.555e-01, -3.456e-02, 2.766e-02, 2.139e-01, -6.208e-02, -3.642e-02, -3.100e-02, -7.824e-02), r);\n\tr = MulAdd(s7_4, M4(-3.174e-02, 3.798e-02, 3.780e-02, -1.580e-01, 7.051e-03, -7.929e-02, -7.760e-02, -1.234e-01, -4.611e-02, 1.214e-01, -6.567e-03, 1.542e-01, 1.697e-03, -9.982e-02, 1.262e-02, 6.704e-03), r);\n\tr = MulAdd(s7_5, M4(-5.593e-02, 7.511e-02, 1.113e-02, 6.125e-02, 1.121e-01, 2.987e-02, 1.123e-01, 8.575e-02, -1.579e-01, 1.389e-01, 1.399e-02, 1.299e-01, 1.241e-01, 1.171e-01, 8.747e-02, -8.339e-02), r);\n\tr = MulAdd(s7_6, M4(3.187e-02, -2.891e-02, -8.751e-02, -1.304e-01, 7.755e-02, -7.256e-02, -5.659e-02, -3.308e-02, 9.382e-02, -4.571e-02, 2.681e-02, -3.575e-03, -8.575e-03, 9.085e-02, -1.202e-01, -9.952e-02), r);\n\tr = MulAdd(s7_7, M4(-5.262e-02, -1.290e-02, -9.283e-02, -8.499e-02, 1.011e-02, -2.862e-03, 1.140e-01, 7.442e-02, 1.927e-01, -2.441e-02, 1.301e-02, -1.838e-01, 2.864e-02, 2.634e-02, 1.810e-01, 4.947e-02), r);\n\tr = MulAdd(s7_8, M4(2.631e-02, -3.746e-02, 3.510e-02, 7.880e-02, -9.427e-02, 8.804e-02, 3.893e-02, 8.391e-02, 2.058e-01, 7.800e-02, -5.539e-02, -8.611e-02, 1.941e-03, -2.240e-02, 4.233e-02, 1.454e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.236e-02, 1.038e-02, 6.374e-03, 9.167e-02 };\n\tr = MulAdd(s0_0, M4(8.910e-02, -1.346e-03, 2.454e-02, 9.515e-02, -2.567e-02, -2.216e-01, -9.989e-02, 2.110e-01, -8.455e-02, -4.117e-04, 4.897e-03, -2.244e-02, -1.606e-01, 1.286e-01, 1.370e-02, 1.414e-01), r);\n\tr = MulAdd(s0_1, M4(1.206e-01, 4.406e-02, 7.571e-02, -7.560e-02, -3.542e-01, -2.639e-01, 4.388e-02, 3.168e-01, -5.599e-02, 1.577e-01, -1.223e-01, -8.276e-02, 1.556e-01, -2.275e-01, 1.533e-01, -9.174e-02), r);\n\tr = MulAdd(s0_2, M4(1.023e-01, 3.794e-02, 2.122e-02, 1.274e-02, 7.343e-01, -1.151e+00, -1.053e-01, -1.710e-01, -7.460e-02, -1.285e-01, -2.051e-02, 3.872e-02, -3.458e-01, -2.282e-01, -3.145e-01, -2.288e-02), r);\n\tr = MulAdd(s0_3, M4(-2.358e-01, -4.073e-02, -2.179e-02, 4.840e-02, 3.132e-02, 8.168e-02, 9.321e-02, -9.937e-02, -4.727e-02, 6.235e-02, -9.533e-03, 1.042e-01, 1.246e-01, -2.124e-01, -1.625e-01, 2.047e-01), r);\n\tr = MulAdd(s0_4, M4(-6.673e-02, 3.943e-02, 1.112e-01, -4.216e-02, -3.215e-01, -1.560e-01, 5.723e-01, 6.170e-01, 2.162e-01, 9.800e-03, -1.509e-01, -1.570e-01, 1.151e-01, 2.296e-01, -1.126e-01, -1.495e-01), r);\n\tr = MulAdd(s0_5, M4(7.771e-02, -1.602e-01, -7.557e-02, -1.400e-02, 2.698e-01, 1.202e-01, -2.564e-01, -1.989e-01, 6.265e-02, -6.266e-02, 9.504e-02, -1.056e-01, -1.345e-01, 3.163e-02, -5.555e-02, -5.943e-02), r);\n\tr = MulAdd(s0_6, M4(5.680e-02, 9.451e-02, 4.010e-02, -3.810e-02, -1.349e-01, 1.115e-01, -9.722e-02, -3.056e-02, -5.044e-02, -9.835e-02, -4.577e-02, -1.480e-02, 3.269e-02, 2.935e-02, 7.189e-02, 2.296e-01), r);\n\tr = MulAdd(s0_7, M4(6.537e-02, -6.818e-04, -1.670e-02, 3.719e-02, -3.406e-02, 1.657e-01, -1.210e-01, 1.763e-01, -2.455e-02, 7.424e-02, 2.091e-01, 3.205e-02, 1.519e-02, -1.908e-01, 1.565e-01, -1.786e-02), r);\n\tr = MulAdd(s0_8, M4(-1.446e-01, -8.694e-03, -7.337e-02, 5.499e-02, 2.439e-01, -9.560e-02, 1.041e-01, -1.820e-02, 4.636e-02, -3.565e-03, 1.219e-02, 6.830e-04, -3.370e-01, -3.640e-01, -2.115e-01, 9.002e-02), r);\n\tr = MulAdd(s1_0, M4(1.342e-01, -1.733e-01, -1.008e-01, 1.538e-01, 1.408e-01, -2.912e-02, -4.282e-02, 3.716e-04, -3.969e-01, 4.119e-01, 3.072e-01, -4.043e-01, 6.660e-03, 9.480e-02, 2.302e-02, -2.741e-02), r);\n\tr = MulAdd(s1_1, M4(-2.493e-01, -1.930e-01, -1.874e-01, 9.163e-02, -5.913e-02, 1.647e-01, -6.130e-02, 1.338e-01, 1.508e-01, -2.693e-01, -6.343e-02, -5.786e-01, -8.325e-02, 1.340e-01, -7.264e-02, 6.374e-02), r);\n\tr = MulAdd(s1_2, M4(2.620e-01, -2.452e-01, -8.229e-02, 1.755e-01, -1.724e-02, -1.251e-02, 1.613e-02, 1.246e-04, 3.248e-01, 1.872e-01, 4.909e-02, -2.383e-01, 1.286e-01, 1.288e-03, -4.551e-03, -7.112e-03), r);\n\tr = MulAdd(s1_3, M4(-1.368e-01, -2.489e-01, 8.261e-02, 1.465e-01, -9.940e-02, 5.532e-02, -6.636e-03, 3.957e-02, 3.887e-02, -4.220e-02, -1.266e-01, -2.484e-01, 1.653e-02, -1.762e-01, -6.384e-02, 6.650e-02), r);\n\tr = MulAdd(s1_4, M4(-1.322e-01, -2.508e-01, 9.695e-02, 2.759e-01, 1.711e-01, 1.154e-01, 8.387e-02, -9.068e-02, -9.442e-02, -3.201e-01, -4.418e-01, -8.104e-01, 5.357e-02, 1.851e-03, -1.177e-01, -1.326e-01), r);\n\tr = MulAdd(s1_5, M4(-3.025e-01, -2.253e-01, 9.386e-03, -3.228e-01, -1.313e-03, -5.290e-02, 1.473e-02, -7.331e-02, 2.042e-01, -3.828e-01, -2.386e-01, -3.321e-01, -1.579e-02, -3.431e-02, 2.951e-02, -4.669e-02), r);\n\tr = MulAdd(s1_6, M4(8.848e-02, 1.254e-01, 9.570e-02, 4.379e-02, -3.451e-02, -1.055e-01, 2.921e-02, -6.082e-02, -5.281e-02, -2.216e-01, 2.752e-01, -2.568e-02, 7.631e-02, 3.464e-02, -6.274e-02, 9.265e-02), r);\n\tr = MulAdd(s1_7, M4(4.651e-03, -1.185e-01, 6.418e-02, 2.380e-01, -1.132e-01, -2.253e-02, 2.184e-02, 4.280e-02, 9.103e-02, -2.528e-01, 2.170e-01, -1.235e-01, 5.277e-02, -5.816e-02, 1.368e-02, 6.526e-03), r);\n\tr = MulAdd(s1_8, M4(3.757e-02, 1.687e-01, 1.237e-01, 7.899e-02, 2.324e-02, -8.211e-03, -1.375e-01, 1.172e-02, -2.546e-01, 1.848e-01, -7.504e-02, -6.435e-02, -1.833e-02, -1.265e-02, 1.700e-02, -2.657e-02), r);\n\tr = MulAdd(s2_0, M4(-9.294e-02, 1.013e-02, -7.953e-02, -1.553e-02, -2.615e-02, 6.623e-02, 1.323e-01, 4.525e-03, 1.813e-01, -6.395e-02, 2.938e-02, -6.379e-02, 1.081e-01, 1.796e-02, 9.546e-02, -2.721e-02), r);\n\tr = MulAdd(s2_1, M4(-1.086e-01, -1.629e-01, -2.253e-01, 8.716e-02, 1.048e-01, -4.209e-02, 5.305e-02, 2.594e-02, -1.080e-01, -7.385e-02, 1.227e-01, 1.193e-01, 2.164e-02, -5.632e-02, -3.401e-02, 2.353e-03), r);\n\tr = MulAdd(s2_2, M4(-1.562e-01, 1.025e-02, 3.543e-03, -1.539e-01, -2.406e-01, 6.562e-02, -1.145e-01, 1.565e-01, 1.130e-01, 5.315e-02, 6.167e-02, -1.898e-02, -1.894e-01, -1.898e-02, -2.112e-02, 4.767e-02), r);\n\tr = MulAdd(s2_3, M4(-1.481e-01, 3.875e-01, 2.640e-02, -6.552e-02, -9.991e-02, -1.803e-01, 2.441e-02, -6.851e-02, 5.002e-02, -1.789e-01, 2.154e-02, -3.099e-01, 7.189e-02, -3.120e-02, 2.074e-03, -1.275e-01), r);\n\tr = MulAdd(s2_4, M4(-8.695e-02, 1.189e-01, -1.396e-01, 2.270e-02, -8.596e-02, -2.440e-01, 3.163e-01, 4.942e-02, -2.263e-01, 3.490e-02, 1.214e-01, 2.689e-01, -1.303e-01, -1.430e-01, -2.505e-02, 4.238e-02), r);\n\tr = MulAdd(s2_5, M4(-4.874e-01, 4.404e-01, -2.059e-01, -2.963e-01, 4.127e-02, -2.824e-01, 6.026e-02, -1.425e-01, 1.109e-04, -1.551e-01, -1.165e-01, -2.714e-02, 1.095e-01, 7.539e-02, -4.453e-02, 4.011e-02), r);\n\tr = MulAdd(s2_6, M4(2.985e-01, 4.725e-02, 6.356e-02, -6.901e-02, -8.920e-02, 8.782e-02, -3.832e-02, 6.666e-02, 7.696e-02, 4.822e-02, -3.021e-02, -2.950e-01, -7.946e-02, -7.889e-03, -1.475e-01, 1.356e-01), r);\n\tr = MulAdd(s2_7, M4(2.859e-01, -1.710e-01, -8.794e-02, -2.221e-01, 1.431e-01, 1.285e-01, 3.526e-02, -6.195e-02, 1.243e-01, 1.154e-01, -4.975e-02, 2.524e-01, 6.860e-02, 1.609e-01, 1.547e-01, -3.198e-02), r);\n\tr = MulAdd(s2_8, M4(-8.444e-02, 9.977e-03, -5.097e-02, -8.137e-02, -2.073e-02, 1.751e-01, 1.544e-02, 1.690e-02, 8.271e-02, 1.022e-01, -2.783e-03, 6.596e-02, 6.483e-02, -4.162e-02, 1.039e-01, -6.861e-02), r);\n\tr = MulAdd(s3_0, M4(4.422e-02, 1.581e-02, -9.880e-03, -5.861e-02, 1.328e-02, 3.390e-02, 1.026e-01, -4.730e-02, -6.963e-02, -5.586e-02, -6.261e-02, -1.890e-02, 2.215e-01, -3.017e-02, -9.074e-02, 1.421e-01), r);\n\tr = MulAdd(s3_1, M4(-7.360e-02, -4.079e-02, -4.623e-02, -4.983e-02, -9.094e-02, -5.667e-03, -8.593e-02, -6.646e-03, -3.160e-02, 4.342e-02, 5.631e-02, 3.603e-02, 1.442e-02, 4.006e-02, 8.321e-02, -3.482e-02), r);\n\tr = MulAdd(s3_2, M4(9.281e-03, 9.378e-03, 3.397e-03, -7.809e-02, -3.123e-03, 9.304e-02, 3.233e-02, -7.080e-02, -9.136e-02, -1.127e-02, 4.820e-02, -2.933e-02, 2.321e-01, 1.058e-01, 1.952e-02, -2.344e-02), r);\n\tr = MulAdd(s3_3, M4(7.925e-02, 1.257e-02, 1.241e-01, -8.064e-02, 1.121e-01, -2.614e-02, -6.152e-03, 3.064e-03, 9.139e-02, -1.356e-01, -6.281e-02, -1.211e-01, -3.034e-03, -4.127e-01, 1.209e-01, -1.396e-02), r);\n\tr = MulAdd(s3_4, M4(2.607e-02, -2.639e-02, -3.220e-02, -3.878e-02, -6.525e-02, 4.209e-02, -1.721e-02, 1.705e-01, -2.014e-01, -2.019e-01, 6.405e-02, 1.089e-01, -2.453e-02, -6.004e-02, -5.524e-02, -1.662e-01), r);\n\tr = MulAdd(s3_5, M4(9.753e-02, 1.020e-01, 1.356e-02, -1.618e-01, 4.161e-02, 9.689e-02, -9.058e-02, -3.701e-02, -6.306e-02, 1.040e-02, -8.205e-02, 2.906e-02, -1.028e-01, -2.493e-02, -8.458e-02, -7.241e-03), r);\n\tr = MulAdd(s3_6, M4(2.107e-01, 3.179e-02, 7.236e-02, -1.228e-02, 3.019e-02, -5.722e-02, -2.034e-02, 6.010e-02, -6.609e-02, -3.052e-02, -4.948e-02, -1.441e-01, 2.229e-02, 2.236e-02, -1.392e-01, 2.960e-02), r);\n\tr = MulAdd(s3_7, M4(-8.226e-02, -3.166e-02, -1.714e-01, -1.936e-01, -5.084e-02, -4.090e-02, -3.542e-03, 2.023e-02, 1.543e-01, -2.059e-02, 1.047e-01, -3.326e-02, 3.940e-02, -1.899e-01, 1.399e-01, -4.406e-03), r);\n\tr = MulAdd(s3_8, M4(1.131e-01, 6.519e-02, 4.679e-02, -2.254e-02, 2.231e-02, 8.131e-02, -6.404e-02, 2.411e-02, 5.227e-02, 2.303e-02, 8.176e-02, -4.657e-03, 1.590e-02, 3.467e-01, 1.593e-03, 2.102e-02), r);\n\tr = MulAdd(s4_0, M4(8.652e-02, -1.284e-01, -2.884e-02, 1.138e-01, 1.322e-01, 1.236e-02, 1.831e-03, -2.478e-02, 1.264e-01, 1.572e-01, 3.455e-02, -3.646e-03, -2.191e-01, -3.167e-01, -6.969e-02, -5.147e-02), r);\n\tr = MulAdd(s4_1, M4(-5.470e-03, 9.407e-02, -8.282e-02, -3.270e-02, -6.543e-02, -7.489e-02, 1.091e-01, -1.572e-01, -6.172e-02, 7.606e-02, 5.424e-02, 1.236e-02, -2.037e-02, -5.677e-02, -1.353e-01, 6.602e-02), r);\n\tr = MulAdd(s4_2, M4(-7.001e-02, -4.892e-02, 3.917e-02, -1.065e-01, -1.347e-01, -5.105e-02, 7.258e-02, 7.781e-03, 3.858e-02, -2.034e-01, -1.135e-02, -4.247e-02, 2.080e-01, -7.468e-02, -1.163e-01, 4.210e-02), r);\n\tr = MulAdd(s4_3, M4(1.452e-01, 9.147e-02, 1.409e-01, -1.277e-02, -6.944e-02, 3.940e-03, -1.402e-01, 1.620e-01, 5.567e-02, 5.582e-02, 2.918e-02, -1.192e-01, 6.997e-02, 2.027e-01, 1.534e-01, -3.064e-02), r);\n\tr = MulAdd(s4_4, M4(2.874e-02, 3.527e-01, -5.966e-02, -1.812e-01, -5.436e-02, -1.563e-02, -1.353e-01, 2.086e-01, 1.382e-01, 1.635e-01, 2.479e-01, -5.897e-02, 2.445e-01, -1.174e-01, 6.195e-02, -9.888e-03), r);\n\tr = MulAdd(s4_5, M4(1.757e-01, 2.398e-01, -5.628e-02, 1.164e-01, -8.532e-02, 8.031e-02, -6.165e-02, 2.103e-02, -6.666e-02, 1.506e-01, 8.690e-02, -2.243e-01, -8.303e-02, -5.884e-02, -1.021e-01, -4.417e-02), r);\n\tr = MulAdd(s4_6, M4(-4.968e-02, -1.657e-01, -2.294e-02, -1.225e-02, 2.877e-02, -9.153e-02, 1.038e-01, 2.791e-02, 2.448e-02, 1.086e-02, -8.549e-02, 2.828e-02, 3.220e-02, -1.614e-01, 3.436e-01, -1.104e-01), r);\n\tr = MulAdd(s4_7, M4(-6.889e-02, 1.727e-02, -1.053e-01, 1.116e-01, 7.029e-02, -2.184e-02, 5.901e-02, -2.185e-02, 2.445e-02, 2.161e-02, 1.922e-01, 9.900e-02, -8.082e-02, -9.316e-02, 5.300e-02, -6.988e-03), r);\n\tr = MulAdd(s4_8, M4(-6.002e-02, -1.637e-01, -1.488e-01, -9.243e-02, -4.750e-02, -3.129e-02, -1.950e-02, 1.272e-02, 4.738e-02, 1.805e-01, 2.190e-02, -1.054e-02, -1.530e-01, 2.715e-02, 2.288e-02, 1.901e-02), r);\n\tr = MulAdd(s5_0, M4(3.872e-02, 1.505e-01, -8.235e-02, 8.083e-02, -4.113e-03, 7.945e-02, -1.057e-01, -2.004e-02, -4.455e-02, 1.053e-01, -1.596e-02, 5.646e-03, -1.078e-01, 1.295e-02, -4.217e-02, 4.942e-02), r);\n\tr = MulAdd(s5_1, M4(5.422e-02, 3.384e-02, -8.833e-02, -8.370e-03, -2.118e-01, 1.877e-01, -7.199e-02, -8.065e-02, -1.102e-02, -5.483e-02, -8.391e-02, 1.016e-01, 4.257e-02, 9.185e-02, -1.008e-02, -1.069e-02), r);\n\tr = MulAdd(s5_2, M4(7.060e-02, -6.159e-02, -1.882e-02, 5.668e-02, -2.046e-01, -1.083e-02, 5.236e-02, -3.329e-02, -1.156e-02, 3.036e-02, 7.037e-02, -1.499e-02, 7.131e-02, -4.113e-02, -2.594e-02, 2.417e-03), r);\n\tr = MulAdd(s5_3, M4(-6.863e-05, -1.094e-02, 2.728e-02, -5.025e-02, 4.458e-02, 1.265e-01, 4.250e-01, 1.585e-01, 1.626e-01, -1.132e-02, -4.823e-03, 4.450e-02, -2.444e-01, -1.569e-03, 9.930e-02, -1.348e-01), r);\n\tr = MulAdd(s5_4, M4(-1.646e-01, -7.413e-02, -8.431e-02, 4.586e-02, -1.124e-02, 3.074e-02, 3.820e-01, 1.120e-01, -7.599e-02, -5.630e-02, 2.247e-02, -3.743e-02, 4.557e-02, 4.874e-02, 1.513e-01, -2.207e-02), r);\n\tr = MulAdd(s5_5, M4(-5.701e-05, -1.207e-01, 3.735e-03, 2.883e-02, 3.513e-02, 1.253e-01, 1.534e-01, -2.376e-03, -1.092e-01, -7.901e-03, -3.538e-02, -6.236e-02, -7.819e-02, -2.731e-02, -6.718e-02, -8.002e-05), r);\n\tr = MulAdd(s5_6, M4(1.743e-02, -6.440e-02, 1.479e-01, -1.086e-02, -6.552e-02, 2.856e-02, -5.184e-03, -5.313e-02, 3.404e-02, 4.957e-02, -6.585e-02, -1.676e-03, -7.506e-02, 5.887e-02, -1.964e-02, 2.131e-02), r);\n\tr = MulAdd(s5_7, M4(4.939e-02, 5.003e-02, 9.394e-02, -7.249e-02, 4.573e-02, -3.546e-03, 1.632e-02, 2.770e-03, -4.211e-02, -4.193e-02, -4.854e-02, 5.925e-02, -1.671e-02, 1.784e-01, 2.091e-02, -5.425e-02), r);\n\tr = MulAdd(s5_8, M4(-1.224e-01, -9.666e-03, -1.224e-02, -3.442e-02, -3.580e-02, -1.629e-02, -2.274e-02, 2.918e-03, 4.514e-02, -3.651e-02, 3.280e-02, -4.425e-02, -3.234e-02, -3.197e-02, -3.062e-02, -3.570e-02), r);\n\tr = MulAdd(s6_0, M4(-1.514e-01, 1.460e-01, 6.691e-02, -1.046e-01, 5.241e-02, -1.531e-01, -4.389e-02, 4.566e-02, -1.250e-01, 5.954e-02, -2.963e-02, 1.083e-02, 1.568e-01, 8.511e-02, 4.253e-02, -3.083e-02), r);\n\tr = MulAdd(s6_1, M4(1.804e-01, -1.404e-01, 1.849e-02, -9.253e-03, 1.736e-01, -3.482e-01, 4.334e-02, -5.884e-03, -6.969e-02, -5.277e-02, 6.883e-02, -1.137e-01, 4.973e-02, 1.512e-01, 6.824e-02, -1.195e-02), r);\n\tr = MulAdd(s6_2, M4(-8.969e-02, 8.610e-02, 7.556e-03, -9.505e-02, 8.152e-02, 8.838e-03, 4.312e-02, 1.702e-01, -8.846e-02, 1.011e-01, 2.993e-02, -6.197e-02, -1.164e-01, -2.880e-02, 5.386e-02, 3.726e-02), r);\n\tr = MulAdd(s6_3, M4(-3.430e-01, 1.598e-01, -1.753e-01, -3.650e-02, -9.155e-02, -4.481e-02, 3.697e-02, -6.169e-02, -4.163e-02, -3.134e-02, -1.469e-01, 1.078e-02, 2.664e-02, 5.054e-02, 8.484e-02, -9.056e-02), r);\n\tr = MulAdd(s6_4, M4(-1.396e-01, 1.672e-01, -3.294e-02, 6.874e-02, -1.064e-01, 1.469e-01, 9.447e-02, 8.395e-03, 4.008e-02, -2.137e-02, -7.051e-02, -8.558e-02, -4.070e-02, -2.618e-02, 4.764e-02, 5.799e-02), r);\n\tr = MulAdd(s6_5, M4(-1.929e-01, -8.364e-02, 4.608e-02, -3.928e-02, -1.528e-01, -4.131e-02, 1.455e-02, -5.769e-02, -1.404e-01, -4.487e-02, -8.932e-02, -5.865e-02, -1.973e-03, 9.755e-03, -8.237e-02, -9.573e-02), r);\n\tr = MulAdd(s6_6, M4(-3.181e-01, -1.968e-02, -2.393e-01, 4.048e-02, -6.190e-02, 3.130e-02, 7.706e-02, -4.039e-03, -8.436e-02, 5.525e-02, 7.837e-02, 1.824e-02, 1.744e-02, -1.078e-01, -1.738e-01, 8.633e-02), r);\n\tr = MulAdd(s6_7, M4(1.399e-01, 1.522e-01, 3.627e-02, -1.353e-01, -1.899e-01, -1.745e-01, 1.224e-02, 1.400e-03, -3.581e-02, -6.041e-02, 1.819e-01, 1.422e-01, 2.414e-02, 2.798e-02, 1.311e-01, 3.283e-02), r);\n\tr = MulAdd(s6_8, M4(-5.285e-02, 2.779e-01, -8.815e-02, 1.794e-01, 6.063e-02, -6.624e-02, 9.881e-02, -1.517e-02, 1.415e-01, -1.082e-01, 3.647e-02, -8.643e-04, -6.027e-02, 1.962e-02, 3.728e-03, 1.870e-03), r);\n\tr = MulAdd(s7_0, M4(1.560e-01, -6.796e-02, 1.324e-01, -6.313e-02, -5.917e-02, 2.029e-01, 2.140e-04, -1.140e-01, -1.656e-01, 8.067e-02, -5.688e-02, 2.288e-02, -3.817e-02, 1.267e-04, 9.234e-03, -6.582e-02), r);\n\tr = MulAdd(s7_1, M4(-1.886e-01, 1.397e-02, -1.929e-01, 7.354e-02, 7.400e-02, -8.945e-02, -3.444e-02, -1.032e-02, 6.883e-03, -1.109e-01, -3.822e-02, -6.947e-02, -2.281e-02, 3.418e-02, 1.238e-01, -9.853e-02), r);\n\tr = MulAdd(s7_2, M4(9.857e-02, -1.256e-01, 2.090e-02, -2.557e-02, -6.201e-02, 1.175e-01, -6.024e-02, 9.497e-02, 1.153e-02, -1.424e-01, -9.995e-02, 8.095e-02, -2.387e-02, -9.371e-03, 2.388e-02, -4.448e-02), r);\n\tr = MulAdd(s7_3, M4(-8.901e-02, 3.328e-02, 4.116e-02, 4.701e-02, 1.475e-01, 1.681e-01, -6.418e-03, 1.747e-02, 8.457e-02, 8.317e-02, 7.036e-02, -1.067e-02, 2.067e-01, -1.148e-01, 4.731e-02, -8.135e-03), r);\n\tr = MulAdd(s7_4, M4(-1.313e-02, 1.246e-02, -4.024e-02, -1.197e-02, 4.666e-02, 7.153e-02, -1.310e-01, 5.437e-02, 2.997e-02, -3.104e-02, 1.004e-01, -1.977e-01, 8.515e-02, -9.532e-02, -4.444e-02, -6.407e-02), r);\n\tr = MulAdd(s7_5, M4(-1.106e-01, 1.017e-01, -1.921e-02, -3.096e-02, -4.821e-02, -3.793e-03, -3.594e-02, 4.888e-02, 3.435e-02, -1.044e-01, 5.074e-02, 6.108e-03, 1.200e-02, -1.113e-01, -1.319e-01, 2.259e-02), r);\n\tr = MulAdd(s7_6, M4(-5.923e-02, 6.856e-02, -6.103e-02, -4.680e-02, -5.272e-02, 4.327e-02, 5.696e-02, 3.384e-03, -6.412e-02, -6.521e-02, -6.295e-02, -1.029e-01, -1.510e-01, 5.642e-02, -1.521e-02, 5.165e-02), r);\n\tr = MulAdd(s7_7, M4(-6.138e-03, -1.991e-02, 7.163e-02, 4.382e-02, -1.717e-03, -7.319e-02, 4.448e-02, -1.656e-02, 3.101e-02, -1.616e-01, -2.131e-01, 1.369e-01, -4.679e-02, -5.206e-02, -1.034e-01, 3.881e-02), r);\n\tr = MulAdd(s7_8, M4(4.015e-02, -1.615e-01, -1.872e-02, -2.719e-02, 8.566e-02, 5.263e-02, 6.620e-02, -8.191e-02, 2.352e-02, -6.728e-03, -2.114e-01, 1.403e-01, -6.310e-02, -1.614e-02, -4.952e-02, 8.593e-03), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.050e-02, -3.156e-02, -8.312e-03, 6.905e-02 };\n\tr = MulAdd(s0_0, M4(-9.451e-02, -8.048e-02, 5.369e-02, -5.667e-02, -2.072e-01, -5.991e-02, 5.108e-02, 5.683e-02, 5.525e-02, 4.765e-02, 4.061e-02, -3.167e-02, -8.613e-02, -7.323e-03, -7.469e-02, -4.435e-01), r);\n\tr = MulAdd(s0_1, M4(8.076e-03, -7.539e-02, -7.807e-02, -5.834e-02, -8.527e-02, -2.725e-01, -1.052e-01, 4.591e-02, 6.218e-02, 5.475e-02, 7.220e-02, 7.611e-02, 1.854e-01, -2.912e-02, 2.338e-01, -1.314e-01), r);\n\tr = MulAdd(s0_2, M4(2.337e-02, 5.448e-02, -4.442e-02, -1.076e-02, 7.776e-02, 4.370e-01, 1.315e-01, 9.939e-01, -3.630e-02, -1.193e-01, -6.207e-02, -2.774e-02, 1.735e-01, -1.294e-01, 9.411e-02, 3.621e-01), r);\n\tr = MulAdd(s0_3, M4(1.539e-01, -6.189e-02, 3.427e-03, -5.864e-02, 7.490e-02, -2.073e-02, 1.147e-01, 4.822e-02, 1.203e-02, 4.232e-02, -1.874e-02, -5.372e-02, -1.737e-01, 1.252e-01, -8.991e-02, 2.871e-01), r);\n\tr = MulAdd(s0_4, M4(6.459e-02, 6.310e-02, -8.822e-02, 7.055e-02, 1.086e-01, 4.429e-01, 3.774e-01, -2.788e-01, -1.163e-01, -1.472e-01, -3.744e-02, 2.693e-02, -2.319e-02, -1.295e-01, 1.367e-01, 4.929e-01), r);\n\tr = MulAdd(s0_5, M4(7.148e-03, -1.485e-02, 2.525e-02, -1.562e-01, 6.559e-03, -1.490e-01, -2.802e-01, -9.884e-02, -5.677e-02, 2.006e-01, 5.245e-02, 1.053e-02, -1.087e-01, -7.758e-02, -1.782e-01, 9.191e-03), r);\n\tr = MulAdd(s0_6, M4(1.809e-05, 3.315e-02, 2.993e-02, -2.552e-02, 6.115e-02, -4.337e-02, -6.610e-02, -2.199e-02, -6.712e-02, 1.125e-01, 3.812e-02, -7.054e-02, -3.886e-02, -5.372e-03, -8.008e-02, -2.972e-01), r);\n\tr = MulAdd(s0_7, M4(-8.793e-02, -1.775e-02, 1.255e-01, 6.161e-02, -1.181e-01, -6.883e-02, 7.986e-02, -2.173e-01, 8.186e-02, -7.056e-02, -1.130e-01, -1.919e-02, 1.098e-01, 1.044e-01, 5.733e-02, 1.101e-01), r);\n\tr = MulAdd(s0_8, M4(6.637e-02, -6.283e-02, 1.001e-01, -6.000e-02, -5.875e-02, 5.409e-02, -1.717e-01, 4.719e-02, 2.879e-02, -8.806e-03, -1.647e-02, 5.500e-02, -4.014e-01, -5.139e-02, 7.386e-02, 1.470e-01), r);\n\tr = MulAdd(s1_0, M4(2.307e-01, -4.144e-01, -2.797e-02, -4.707e-02, 1.286e-01, 1.800e-02, -4.013e-02, -7.657e-03, 3.454e-02, -4.379e-01, -2.028e-01, 2.585e-01, -4.224e-02, -1.576e-01, -4.730e-02, -6.219e-02), r);\n\tr = MulAdd(s1_1, M4(-5.665e-02, 3.092e-01, -2.782e-01, 4.133e-01, -2.158e-02, -1.469e-01, 2.683e-03, 6.333e-02, 4.256e-01, -1.403e-01, 4.976e-01, -7.155e-02, -1.295e-01, -3.946e-02, -6.470e-02, 6.424e-02), r);\n\tr = MulAdd(s1_2, M4(-1.032e-01, -1.789e-01, 1.003e-01, -1.901e-01, -1.455e-01, 2.151e-02, 3.974e-02, -3.572e-02, 1.815e-01, 1.426e-02, -4.524e-01, 6.970e-01, 1.297e-01, 3.475e-02, -1.025e-01, -4.876e-02), r);\n\tr = MulAdd(s1_3, M4(-8.318e-04, -3.434e-01, 9.668e-02, 2.092e-01, -3.396e-02, 4.078e-02, 4.601e-03, -6.833e-02, 5.617e-02, -3.474e-01, -2.318e-01, -4.633e-02, 1.066e-02, -1.118e-01, -3.939e-02, 7.404e-02), r);\n\tr = MulAdd(s1_4, M4(2.567e-02, 7.887e-01, 2.479e-01, 1.984e-01, -3.046e-02, 9.736e-03, 8.833e-02, 1.055e-01, -5.627e-01, -4.178e-02, -5.462e-01, 7.956e-01, -2.458e-02, 6.355e-02, 2.734e-02, 7.263e-02), r);\n\tr = MulAdd(s1_5, M4(2.634e-02, -2.494e-01, 1.911e-01, -2.585e-01, -5.987e-02, 9.074e-03, -1.284e-01, 5.261e-02, -1.073e-01, -2.491e-03, -5.666e-02, 1.647e-01, 1.558e-01, 8.153e-02, 6.985e-02, -4.197e-02), r);\n\tr = MulAdd(s1_6, M4(-1.840e-01, -5.581e-03, -3.012e-01, 1.223e-01, 5.605e-03, -1.080e-01, -1.131e-01, -4.307e-02, -1.180e-01, 5.656e-02, -1.219e-01, 4.325e-01, 4.198e-02, 5.790e-02, -1.440e-01, 6.205e-03), r);\n\tr = MulAdd(s1_7, M4(-3.818e-01, 1.567e-01, -2.418e-01, -1.454e-01, -9.046e-02, 4.173e-02, 3.588e-02, 1.034e-01, 3.701e-02, 1.275e-01, -3.048e-01, 2.711e-01, 6.572e-02, -4.940e-03, -9.529e-02, 4.867e-02), r);\n\tr = MulAdd(s1_8, M4(-8.676e-02, 1.389e-03, 3.468e-01, 4.816e-01, -1.848e-02, -6.333e-02, -3.837e-02, -1.234e-01, 2.136e-02, 6.841e-02, 6.743e-02, 1.107e-01, 8.400e-02, -1.297e-02, -1.264e-01, -8.508e-02), r);\n\tr = MulAdd(s2_0, M4(-2.131e-02, -2.104e-01, 1.638e-01, -8.293e-02, -9.037e-02, 4.916e-02, -1.957e-01, -8.879e-02, 9.205e-02, 1.654e-01, -1.031e-01, -2.214e-01, -1.743e-01, 1.449e-01, -4.730e-02, -6.000e-02), r);\n\tr = MulAdd(s2_1, M4(-3.365e-01, -1.978e-01, 3.707e-02, 6.115e-02, -4.289e-02, -5.301e-02, -1.001e-02, 1.202e-02, 1.495e-01, 1.076e-01, -5.975e-02, 1.433e-02, 6.840e-02, -1.202e-01, 3.306e-02, -1.025e-01), r);\n\tr = MulAdd(s2_2, M4(3.111e-02, 1.102e-01, -4.688e-02, -1.577e-01, -2.359e-02, -1.470e-02, -4.882e-02, -3.525e-02, -2.976e-02, -1.291e-01, -4.188e-02, -4.209e-02, -8.532e-02, -8.075e-02, 5.718e-02, -6.961e-02), r);\n\tr = MulAdd(s2_3, M4(1.919e-02, -1.528e-01, -2.901e-01, -8.766e-02, -4.717e-02, -6.101e-02, 3.063e-01, -2.145e-01, -4.494e-02, -1.846e-02, -1.263e-01, -3.688e-02, 2.173e-01, 2.255e-02, -8.102e-02, -7.545e-02), r);\n\tr = MulAdd(s2_4, M4(7.429e-02, 1.561e-02, -2.923e-01, 2.937e-01, 2.279e-01, 6.875e-02, 4.931e-02, 1.392e-01, 1.645e-01, 2.231e-03, 9.785e-02, -3.869e-02, 1.152e-02, 4.158e-02, 4.528e-02, 7.134e-03), r);\n\tr = MulAdd(s2_5, M4(2.593e-01, 1.893e-01, -2.803e-01, 3.636e-02, 7.413e-02, -4.588e-02, 5.632e-02, -1.740e-01, 1.797e-01, -5.844e-02, 2.958e-02, 1.210e-02, 6.115e-02, -1.162e-01, 4.693e-02, -3.177e-02), r);\n\tr = MulAdd(s2_6, M4(-4.160e-02, 7.391e-02, -9.092e-02, -2.082e-01, 8.563e-04, 1.162e-01, -8.575e-02, -9.850e-02, -1.915e-02, 3.551e-03, 2.256e-01, 3.933e-02, -1.784e-01, -5.231e-02, 5.357e-02, 5.941e-02), r);\n\tr = MulAdd(s2_7, M4(-1.422e-01, -1.924e-01, -5.101e-01, 2.173e-01, 1.098e-01, -8.625e-02, -1.524e-01, 1.452e-01, 9.209e-02, 4.612e-02, 8.386e-02, 1.956e-02, 1.502e-02, 1.187e-01, -5.087e-02, 5.047e-02), r);\n\tr = MulAdd(s2_8, M4(4.191e-01, 3.144e-01, -2.598e-01, -1.059e-01, -3.728e-02, -1.192e-01, 2.195e-01, 2.741e-01, 1.262e-01, 1.995e-02, 4.819e-03, -1.496e-01, -4.040e-02, -5.422e-02, -2.942e-02, 6.987e-02), r);\n\tr = MulAdd(s3_0, M4(2.280e-02, 1.997e-02, 2.485e-02, 7.311e-03, 4.967e-02, -2.036e-01, 1.536e-01, -1.270e-02, 3.613e-02, -1.530e-01, -7.195e-02, -8.008e-02, -1.026e-01, 1.341e-01, -1.314e-01, -9.852e-02), r);\n\tr = MulAdd(s3_1, M4(-3.465e-02, 3.304e-02, 6.561e-02, 1.011e-03, -1.050e-01, -3.483e-02, 8.504e-03, -1.852e-01, 1.206e-01, 3.555e-03, -9.008e-02, 6.713e-02, 1.782e-01, -2.761e-04, 1.040e-01, 1.370e-02), r);\n\tr = MulAdd(s3_2, M4(-2.094e-02, -5.554e-02, -8.848e-02, -5.421e-03, 1.241e-01, 1.073e-01, -7.738e-02, 2.719e-02, 1.018e-01, 5.091e-02, 2.561e-02, -1.949e-01, 1.462e-01, -1.130e-01, -5.079e-02, -2.196e-01), r);\n\tr = MulAdd(s3_3, M4(-4.744e-02, -1.533e-01, -1.130e-01, 1.053e-01, -6.196e-02, -2.036e-02, -1.566e-01, 5.937e-03, 5.398e-02, 1.856e-01, 5.320e-02, 1.518e-01, 1.420e-01, -2.743e-01, 2.931e-01, -2.954e-01), r);\n\tr = MulAdd(s3_4, M4(1.409e-01, -3.840e-02, -8.466e-02, -2.254e-03, 4.529e-02, 1.144e-02, -4.301e-02, -2.002e-02, -6.700e-02, 7.169e-03, 6.365e-03, -1.614e-01, 1.332e-01, 1.322e-01, 1.185e-02, 2.030e-01), r);\n\tr = MulAdd(s3_5, M4(-2.429e-02, -4.346e-03, 6.631e-02, -5.519e-02, 1.193e-01, 1.089e-01, 2.066e-02, -7.436e-02, 1.470e-01, 1.749e-02, -4.831e-02, 2.142e-02, 1.873e-01, 3.743e-02, 1.066e-01, 3.061e-02), r);\n\tr = MulAdd(s3_6, M4(-2.675e-02, 2.948e-03, -6.466e-02, 4.417e-02, -2.908e-02, 1.421e-01, 1.190e-02, -2.533e-02, -1.258e-01, -4.587e-02, -5.339e-03, -3.764e-02, 2.061e-01, -1.013e-01, 4.204e-02, 2.417e-01), r);\n\tr = MulAdd(s3_7, M4(6.761e-02, -3.450e-03, 6.839e-02, 5.766e-02, 3.136e-02, 4.135e-02, 3.988e-02, 2.941e-02, -2.604e-02, -7.398e-02, -8.330e-02, -6.429e-02, -2.953e-01, -3.694e-02, -9.535e-02, 4.862e-02), r);\n\tr = MulAdd(s3_8, M4(-9.741e-02, 1.621e-02, 1.165e-01, 2.534e-02, -5.319e-02, -6.189e-03, -1.302e-01, 1.306e-01, 7.124e-02, 1.972e-02, -1.041e-01, -9.609e-02, -1.352e-01, 1.664e-01, 2.183e-01, -1.409e-01), r);\n\tr = MulAdd(s4_0, M4(1.180e-02, 7.883e-02, -4.791e-02, -1.474e-03, 1.532e-02, 1.588e-01, 1.788e-01, -3.478e-02, 1.967e-01, 2.111e-01, 1.125e-01, 7.545e-03, 3.395e-01, -1.968e-01, 3.471e-01, -6.706e-02), r);\n\tr = MulAdd(s4_1, M4(-6.497e-03, -5.378e-02, 1.254e-01, -9.081e-02, -4.558e-02, 2.297e-01, 5.248e-02, -6.681e-02, 5.794e-02, -1.210e-01, 3.244e-01, -2.096e-01, 9.240e-02, -1.008e-01, 2.173e-01, 1.466e-01), r);\n\tr = MulAdd(s4_2, M4(4.711e-02, 1.109e-01, 4.282e-02, 5.398e-03, -3.371e-03, -3.552e-02, -2.389e-02, 2.334e-02, -7.598e-03, -3.631e-02, 1.836e-01, -1.318e-01, -1.984e-02, -2.181e-02, 2.962e-01, 1.040e-02), r);\n\tr = MulAdd(s4_3, M4(-4.528e-02, -1.030e-01, 2.697e-02, 8.268e-02, 3.725e-02, 1.390e-01, 1.037e-01, -2.451e-02, 1.553e-01, 4.668e-02, -1.755e-01, -1.063e-01, -3.500e-02, -2.009e-01, -1.195e-01, 3.388e-01), r);\n\tr = MulAdd(s4_4, M4(-4.469e-02, -1.694e-01, -1.762e-01, 2.289e-01, 3.673e-02, -1.784e-02, 3.723e-02, -6.764e-02, 3.353e-01, 1.479e-02, -7.523e-02, 5.749e-02, 2.422e-01, 2.620e-01, -2.914e-02, 4.852e-02), r);\n\tr = MulAdd(s4_5, M4(-2.729e-03, -1.220e-01, -1.255e-01, 8.206e-02, -1.935e-02, 8.960e-02, -1.099e-02, -9.541e-02, 1.033e-01, -2.499e-01, -3.623e-01, 1.030e-03, 1.350e-01, 4.517e-02, 1.837e-01, 1.359e-02), r);\n\tr = MulAdd(s4_6, M4(-1.412e-02, 5.391e-02, 5.106e-02, 3.886e-02, -3.444e-03, 5.329e-02, 4.036e-02, 1.804e-01, -1.043e-01, 1.357e-01, 2.349e-01, -3.465e-02, 1.738e-01, 5.530e-02, -3.362e-01, -1.475e-01), r);\n\tr = MulAdd(s4_7, M4(3.751e-02, -7.403e-02, -3.850e-02, -1.265e-03, -6.263e-02, 8.607e-02, -1.028e-02, -1.403e-01, 6.326e-02, -1.558e-01, 1.075e-01, 1.408e-01, -2.220e-01, -9.187e-02, -1.448e-01, 1.872e-01), r);\n\tr = MulAdd(s4_8, M4(-1.246e-01, -2.591e-02, -1.611e-01, -9.790e-02, -1.941e-02, -6.551e-03, -5.051e-02, -5.462e-02, -2.144e-01, 1.762e-02, 2.371e-01, 4.996e-02, -3.406e-01, 1.177e-01, -2.264e-01, -8.656e-02), r);\n\tr = MulAdd(s5_0, M4(1.343e-03, -3.725e-02, -1.066e-01, -1.740e-02, 6.081e-02, 1.362e-01, 3.578e-02, 2.253e-01, -9.466e-02, -9.187e-02, -1.175e-02, -8.719e-02, 2.989e-02, -7.776e-02, -6.628e-02, 8.013e-02), r);\n\tr = MulAdd(s5_1, M4(1.604e-01, -1.780e-02, 1.005e-02, -5.130e-02, -7.391e-02, -1.475e-01, -1.789e-01, 9.968e-02, -4.946e-02, -1.164e-01, 1.152e-01, 1.142e-01, 1.409e-01, 3.844e-02, -2.048e-02, 6.226e-02), r);\n\tr = MulAdd(s5_2, M4(1.160e-01, -5.686e-04, -4.562e-03, -1.512e-01, -2.057e-02, 7.273e-02, -5.500e-02, -1.783e-01, -1.018e-01, 1.135e-01, -1.292e-01, 1.754e-02, 2.182e-02, -5.689e-02, 8.034e-02, -4.859e-02), r);\n\tr = MulAdd(s5_3, M4(7.867e-02, -3.518e-03, 1.173e-01, -1.195e-02, 1.984e-01, -5.090e-02, 1.352e-02, -5.604e-02, -2.063e-02, 1.019e-01, -7.606e-02, 5.175e-02, 2.911e-02, -5.707e-02, -7.261e-02, -3.138e-02), r);\n\tr = MulAdd(s5_4, M4(-1.652e-01, -8.234e-02, -3.650e-02, 9.660e-02, 7.855e-02, -1.732e-02, 3.844e-02, 6.549e-02, 4.526e-02, -9.386e-02, -1.017e-01, 4.589e-02, -8.000e-05, 1.011e-01, 9.537e-02, -1.192e-01), r);\n\tr = MulAdd(s5_5, M4(1.697e-02, -7.522e-03, -6.139e-02, 1.325e-01, 1.054e-02, -1.900e-02, 4.979e-02, -1.371e-02, 1.106e-01, -1.330e-03, 2.616e-03, 1.090e-01, -5.065e-02, 1.158e-02, -9.399e-02, 3.210e-02), r);\n\tr = MulAdd(s5_6, M4(-3.785e-02, -2.064e-02, 1.184e-01, -1.578e-01, 1.431e-01, -7.638e-02, -7.632e-02, -7.275e-03, -2.357e-03, 6.810e-02, -4.248e-02, 7.840e-02, -6.778e-02, 6.966e-02, -4.366e-02, -1.338e-01), r);\n\tr = MulAdd(s5_7, M4(4.235e-02, 5.252e-02, 5.567e-02, -5.948e-02, -3.842e-02, 1.416e-02, 6.482e-02, 5.589e-02, -4.599e-02, -2.528e-03, 4.268e-03, -5.436e-02, -5.918e-02, 1.537e-02, 1.195e-01, 2.206e-02), r);\n\tr = MulAdd(s5_8, M4(-1.554e-01, -9.753e-03, 1.619e-01, 4.940e-02, 2.986e-02, 2.573e-02, 1.149e-02, -5.308e-02, 1.188e-02, 2.052e-02, 1.330e-02, -7.705e-02, -5.218e-02, 3.419e-02, 9.731e-02, -8.245e-03), r);\n\tr = MulAdd(s6_0, M4(-1.272e-01, 2.994e-02, 6.812e-02, -1.304e-01, -1.582e-01, -1.328e-02, -1.314e-01, 1.909e-01, -9.384e-02, 1.006e-01, 1.616e-01, 6.443e-02, -1.253e-02, 2.781e-01, 1.011e-01, -9.925e-03), r);\n\tr = MulAdd(s6_1, M4(1.135e-01, -9.899e-02, -1.533e-01, 8.067e-02, -2.713e-02, 1.412e-01, -2.803e-01, -6.846e-02, -2.906e-02, 3.917e-02, 3.451e-02, -1.968e-01, -1.413e-01, 2.291e-01, -1.214e-01, 6.061e-03), r);\n\tr = MulAdd(s6_2, M4(8.897e-02, 8.721e-02, 3.431e-01, 6.751e-02, -2.026e-01, -1.703e-01, -2.079e-01, 8.543e-02, 3.969e-02, 7.591e-02, 9.177e-02, 1.330e-01, -1.698e-01, 1.654e-01, -1.421e-01, 2.989e-02), r);\n\tr = MulAdd(s6_3, M4(-1.355e-01, -1.909e-01, 1.446e-02, -7.383e-03, -2.487e-02, 5.117e-02, -2.610e-01, -1.720e-02, -6.448e-02, -7.445e-02, -5.439e-02, 7.059e-02, 8.874e-03, 2.675e-01, 1.977e-02, 1.241e-02), r);\n\tr = MulAdd(s6_4, M4(-2.034e-01, -3.518e-02, -5.094e-02, 1.420e-01, -1.284e-01, -4.634e-02, -1.887e-01, -2.672e-01, -1.703e-02, -1.749e-01, -6.780e-02, 6.431e-02, -9.908e-02, 1.532e-01, 2.047e-01, 9.582e-02), r);\n\tr = MulAdd(s6_5, M4(-3.252e-02, 5.439e-02, -8.179e-02, -2.995e-02, 7.181e-02, -1.978e-01, -6.903e-02, 1.071e-01, -2.747e-02, -1.366e-01, 2.972e-02, 1.530e-02, 1.017e-01, -8.830e-03, 3.876e-04, -8.333e-02), r);\n\tr = MulAdd(s6_6, M4(-1.410e-01, 2.223e-01, 1.674e-01, 2.109e-01, 8.660e-03, -1.001e-01, -6.640e-02, 8.090e-02, -3.113e-02, -7.455e-02, -4.265e-02, 5.721e-02, -4.509e-02, -2.046e-02, 1.302e-02, -1.582e-01), r);\n\tr = MulAdd(s6_7, M4(2.310e-02, 4.775e-02, -7.455e-02, -2.721e-01, 8.084e-04, -7.578e-02, 5.419e-02, 1.823e-01, 1.182e-01, -4.500e-02, -6.240e-02, 1.592e-01, -1.012e-01, -4.963e-02, 2.983e-02, -3.703e-02), r);\n\tr = MulAdd(s6_8, M4(4.231e-02, -6.410e-02, 2.523e-01, 1.876e-01, 2.866e-02, 1.888e-02, 7.973e-02, -1.213e-01, -1.863e-02, -4.818e-03, -3.015e-02, 4.286e-02, 1.226e-02, -6.055e-02, -7.081e-02, -3.247e-02), r);\n\tr = MulAdd(s7_0, M4(2.255e-02, 1.087e-01, -1.311e-01, -1.097e-01, 4.896e-02, -1.972e-02, 1.006e-01, 1.179e-01, -4.401e-02, 5.579e-02, 4.111e-02, 1.389e-02, 1.450e-01, -1.107e-01, 8.167e-02, 2.141e-02), r);\n\tr = MulAdd(s7_1, M4(8.651e-02, -4.113e-02, -5.502e-02, 8.078e-02, -6.702e-02, -8.295e-02, 8.445e-02, 3.853e-02, -7.218e-02, 9.200e-03, 7.979e-02, -5.762e-02, 5.357e-02, -3.144e-02, -4.562e-02, 9.623e-03), r);\n\tr = MulAdd(s7_2, M4(6.184e-03, 7.383e-02, 3.246e-02, -4.805e-02, -6.375e-02, -9.116e-02, -2.184e-02, 1.442e-01, -1.226e-01, 1.353e-02, -1.435e-01, -1.307e-01, 5.528e-02, -6.102e-02, 8.355e-02, -1.100e-01), r);\n\tr = MulAdd(s7_3, M4(-5.722e-02, -2.702e-03, -1.345e-01, -2.826e-02, -7.891e-02, 5.526e-02, 1.364e-01, -3.028e-03, -1.513e-01, 7.168e-02, -9.428e-03, -1.712e-01, 6.925e-02, -2.112e-02, -5.069e-02, 1.105e-01), r);\n\tr = MulAdd(s7_4, M4(-1.807e-02, -2.998e-02, 2.074e-01, -3.249e-03, -1.228e-01, -1.524e-01, -3.277e-02, 2.149e-02, -1.580e-01, -7.356e-02, 1.138e-01, -6.868e-02, 5.897e-03, 4.738e-02, 8.964e-02, -1.103e-01), r);\n\tr = MulAdd(s7_5, M4(6.567e-02, -2.314e-02, 5.409e-02, -5.161e-02, 2.199e-02, -2.075e-01, 3.238e-02, -2.085e-01, 1.615e-01, 7.379e-03, -8.971e-03, 1.529e-01, -4.548e-03, -2.031e-03, -9.448e-02, -1.690e-02), r);\n\tr = MulAdd(s7_6, M4(-6.829e-02, 3.009e-02, 2.554e-02, 6.114e-02, 3.201e-02, -3.606e-02, 4.506e-02, -5.041e-02, -1.341e-01, 7.531e-02, 1.137e-01, 2.316e-02, -1.997e-02, -1.762e-01, -7.972e-02, -4.369e-03), r);\n\tr = MulAdd(s7_7, M4(1.185e-01, -7.930e-02, 5.674e-02, -4.796e-02, 4.371e-02, 7.916e-02, 5.691e-02, 1.335e-01, 7.223e-02, 3.957e-02, 1.429e-01, -9.440e-02, 1.036e-01, -6.944e-02, -1.023e-02, 1.916e-02), r);\n\tr = MulAdd(s7_8, M4(-1.116e-02, 4.448e-02, -1.403e-01, 1.527e-03, -1.705e-02, 1.049e-02, 9.845e-03, -1.456e-02, 4.949e-02, 5.920e-02, 1.153e-01, 1.217e-01, 1.128e-02, -3.924e-02, -5.223e-02, -2.814e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.765e-02, -1.522e-02, -7.955e-02, -2.431e-02 };\n\tr = MulAdd(s0_0, M4(-4.867e-02, -5.197e-02, 1.534e-02, -4.213e-02, -4.926e-02, 2.104e-01, -9.779e-02, -2.507e-01, 5.090e-02, 7.115e-02, -4.519e-02, 2.813e-02, 3.021e-01, 2.627e-02, 1.871e-01, -1.671e-01), r);\n\tr = MulAdd(s0_1, M4(-1.230e-01, 1.430e-02, 8.499e-02, -2.918e-02, -5.297e-02, -1.011e-01, -2.859e-02, 1.525e-04, -7.938e-02, -1.685e-02, 2.875e-02, -7.803e-03, 2.980e-01, -1.973e-01, 1.285e-01, 1.956e-02), r);\n\tr = MulAdd(s0_2, M4(1.857e-02, -8.956e-02, 4.124e-02, -1.190e-01, 6.922e-01, -5.653e-02, -2.747e+00, -1.397e+00, 4.512e-04, -4.355e-02, -7.532e-02, 8.435e-02, 8.140e-02, 1.354e-01, 2.064e-01, 7.384e-04), r);\n\tr = MulAdd(s0_3, M4(4.223e-02, -2.270e-05, 8.174e-02, 4.525e-02, -2.709e-01, -3.039e-01, 3.262e-02, 6.482e-03, 2.639e-03, 3.351e-02, 2.799e-02, 2.269e-02, 1.039e-01, 7.289e-02, -1.397e-02, 1.272e-02), r);\n\tr = MulAdd(s0_4, M4(-1.995e-02, -4.059e-02, -2.450e-02, -2.946e-02, 2.466e-01, 1.479e-01, 1.595e-01, -6.020e-02, -1.812e-02, -2.821e-02, -1.184e-01, -5.749e-02, -3.615e-01, 2.186e-01, -8.206e-02, 1.362e-01), r);\n\tr = MulAdd(s0_5, M4(1.111e-01, 1.478e-01, 3.247e-02, -8.840e-02, -2.125e-01, 2.289e-01, -6.042e-02, -1.573e-01, 5.331e-02, 3.785e-02, -3.423e-02, -2.230e-02, -5.637e-02, 1.008e-01, 1.283e-01, 2.773e-01), r);\n\tr = MulAdd(s0_6, M4(7.693e-03, 2.148e-02, 3.975e-02, -3.273e-03, 1.910e-01, 2.068e-02, 8.654e-02, -1.955e-01, -1.766e-02, -1.189e-01, -8.424e-02, 3.049e-02, -8.869e-02, -3.213e-01, -1.007e-01, -9.598e-02), r);\n\tr = MulAdd(s0_7, M4(-7.415e-02, -6.800e-02, -6.287e-03, 3.431e-02, 2.036e-01, -7.898e-02, 9.472e-02, -3.371e-02, 1.412e-01, 1.044e-01, 5.694e-02, 1.724e-02, 1.776e-02, -1.814e-01, -6.565e-02, -2.985e-01), r);\n\tr = MulAdd(s0_8, M4(1.124e-01, 1.099e-01, -1.031e-01, 7.196e-02, -1.338e-01, 1.914e-01, -1.861e-01, 4.604e-03, -9.489e-03, -1.205e-01, 6.328e-02, 1.043e-02, -8.468e-02, 2.194e-01, -1.679e-02, 4.313e-02), r);\n\tr = MulAdd(s1_0, M4(1.964e-01, -5.630e-02, -6.981e-02, 7.879e-02, 1.014e-01, 6.166e-02, 5.840e-02, -7.727e-02, 4.637e-01, -1.051e-01, 4.454e-01, 5.713e-01, 6.147e-02, 5.523e-02, -1.295e-01, 1.058e-01), r);\n\tr = MulAdd(s1_1, M4(2.160e-01, -1.344e-01, 1.974e-01, -3.814e-01, -5.308e-02, -6.718e-02, -5.522e-02, -1.466e-01, -4.706e-01, -2.553e-01, -1.625e-02, -3.204e-01, 4.533e-02, -3.726e-03, -2.634e-02, -4.952e-02), r);\n\tr = MulAdd(s1_2, M4(-1.988e-02, -3.152e-01, -2.705e-01, -8.406e-03, 1.017e-01, -9.464e-02, 9.255e-02, -3.722e-02, 1.070e-01, -2.718e-01, -4.225e-01, -9.374e-02, -1.769e-02, 5.608e-03, 3.674e-02, -1.047e-01), r);\n\tr = MulAdd(s1_3, M4(3.746e-01, 3.046e-03, -3.719e-01, 1.350e-01, -7.644e-02, 3.353e-03, 1.027e-01, -2.490e-02, 5.892e-01, -2.039e-01, -8.033e-02, -1.380e-02, 1.610e-01, -6.900e-02, -6.275e-02, -6.425e-03), r);\n\tr = MulAdd(s1_4, M4(2.208e-01, -4.707e-02, -3.095e-01, -1.714e-01, 1.478e-01, -4.646e-02, -1.003e-01, -2.538e-02, 2.015e-01, -4.198e-01, -2.134e-01, 4.196e-01, 1.473e-02, -6.650e-02, 1.519e-01, 8.087e-03), r);\n\tr = MulAdd(s1_5, M4(4.357e-02, 1.217e-01, -2.680e-01, 1.812e-01, 7.153e-02, -3.633e-02, 1.021e-01, 4.253e-02, -8.424e-01, 1.775e-01, 1.127e-01, 2.770e-01, 2.008e-02, 9.776e-03, 1.154e-01, -7.201e-02), r);\n\tr = MulAdd(s1_6, M4(-2.616e-01, -2.362e-02, 9.223e-02, 1.190e-01, -6.313e-02, 5.472e-02, -7.627e-02, 1.430e-01, 2.428e-01, 1.364e-01, -4.211e-02, -7.360e-02, -2.196e-02, -4.156e-02, 1.096e-02, 9.701e-03), r);\n\tr = MulAdd(s1_7, M4(7.828e-03, -4.790e-01, -6.233e-03, -2.202e-01, -1.206e-01, 9.250e-02, -5.049e-02, -2.543e-03, -3.836e-01, 2.872e-01, -1.163e-01, -1.762e-01, -6.531e-02, 1.423e-01, -1.852e-03, 4.767e-02), r);\n\tr = MulAdd(s1_8, M4(2.448e-01, -7.609e-03, -7.481e-02, 2.388e-03, -7.668e-02, 5.488e-02, 2.885e-02, 1.482e-01, -2.660e-01, -1.742e-01, -6.981e-02, -2.010e-02, 5.693e-03, -9.158e-02, -1.314e-01, 5.001e-02), r);\n\tr = MulAdd(s2_0, M4(-2.589e-01, 1.859e-01, -2.660e-01, 1.760e-01, 1.168e-01, -1.407e-01, 7.098e-02, -4.685e-03, 2.893e-02, 2.214e-01, 1.994e-01, 1.514e-02, -4.815e-02, -1.155e-01, -1.169e-01, -1.717e-02), r);\n\tr = MulAdd(s2_1, M4(-1.254e-01, 1.755e-02, -2.098e-02, -5.563e-03, -7.331e-02, -4.930e-02, -4.675e-02, -2.075e-01, -9.922e-02, -6.976e-02, 4.046e-02, -9.828e-02, 9.790e-02, -6.473e-02, -1.184e-01, -7.581e-02), r);\n\tr = MulAdd(s2_2, M4(2.077e-01, -1.477e-01, -4.115e-01, -1.527e-02, -1.842e-02, -2.502e-01, 1.818e-01, -1.264e-01, 3.775e-02, 1.694e-01, 8.082e-02, -2.606e-02, -4.469e-02, -2.510e-02, 4.211e-02, -3.362e-02), r);\n\tr = MulAdd(s2_3, M4(1.471e-01, -2.066e-01, -2.028e-01, 3.669e-01, 1.146e-01, 5.714e-02, -4.225e-03, -1.538e-01, -6.134e-02, -1.076e-01, 1.210e-01, -5.962e-02, -5.265e-02, 8.768e-02, 5.668e-02, -1.023e-02), r);\n\tr = MulAdd(s2_4, M4(-9.993e-02, -7.184e-02, -4.461e-02, -1.498e-01, 9.753e-02, 1.023e-01, 3.349e-01, 6.508e-02, 1.059e-01, 1.041e-01, 2.029e-01, -1.877e-01, 3.264e-02, -5.429e-02, -7.859e-02, 1.105e-01), r);\n\tr = MulAdd(s2_5, M4(1.262e-02, 3.543e-01, 2.701e-02, 1.023e-01, 1.665e-01, 2.847e-02, -1.573e-01, 2.408e-01, -2.000e-01, 1.185e-02, 1.601e-01, -5.772e-02, 2.326e-01, 2.310e-01, 8.624e-02, 7.525e-04), r);\n\tr = MulAdd(s2_6, M4(-2.438e-01, 1.119e-01, -1.388e-01, -4.616e-03, -1.179e-01, -1.265e-01, -2.000e-01, 2.295e-02, 1.358e-02, -1.272e-01, 1.886e-02, 2.249e-01, 5.756e-02, 2.086e-01, 1.538e-02, 5.748e-02), r);\n\tr = MulAdd(s2_7, M4(-1.796e-02, -1.771e-01, 1.848e-02, 4.765e-02, -1.709e-01, 1.274e-01, -1.274e-01, 1.016e-02, 4.295e-02, 4.648e-02, 1.067e-01, 9.483e-02, -7.017e-02, -3.615e-02, -3.152e-02, 2.260e-02), r);\n\tr = MulAdd(s2_8, M4(3.672e-01, 5.534e-02, -2.330e-01, -2.461e-01, -3.854e-02, 1.713e-01, 6.842e-03, 3.879e-01, 1.905e-01, 1.151e-01, -4.301e-02, -1.332e-01, 1.137e-02, -1.343e-01, -2.136e-02, 5.372e-03), r);\n\tr = MulAdd(s3_0, M4(-6.807e-02, 2.391e-02, 1.462e-02, 1.118e-01, 6.041e-02, -4.362e-02, -1.058e-02, 1.364e-01, 1.872e-01, 8.151e-02, -3.826e-02, -1.238e-01, 6.197e-02, -9.422e-02, 2.467e-01, -2.102e-01), r);\n\tr = MulAdd(s3_1, M4(6.616e-03, -1.001e-01, 7.494e-02, -9.462e-04, -5.799e-02, 1.314e-01, -4.394e-03, -3.465e-03, 4.980e-03, -4.246e-02, -4.996e-02, -1.167e-01, 1.994e-01, 8.534e-02, -4.727e-02, 1.655e-01), r);\n\tr = MulAdd(s3_2, M4(-1.278e-01, 1.321e-01, -9.006e-03, 1.384e-01, 5.992e-02, 7.091e-02, 1.501e-01, -5.937e-02, -4.941e-03, -1.158e-01, -5.998e-02, -2.486e-02, -1.105e-01, 1.812e-03, -1.348e-01, -1.650e-02), r);\n\tr = MulAdd(s3_3, M4(9.376e-02, -1.023e-01, 4.212e-02, -1.545e-02, -6.994e-03, -3.425e-02, 1.686e-01, -1.371e-01, -1.737e-01, -1.316e-02, -5.657e-02, 1.056e-01, 7.410e-02, -1.012e-01, 3.571e-03, 2.081e-01), r);\n\tr = MulAdd(s3_4, M4(-2.418e-02, 1.363e-01, -1.405e-01, -1.319e-01, 1.411e-02, -2.162e-02, 2.907e-03, -8.183e-02, 1.188e-01, 1.219e-01, -4.666e-03, -8.269e-02, -2.099e-01, -1.123e-01, 8.460e-02, 2.129e-02), r);\n\tr = MulAdd(s3_5, M4(-3.303e-02, -1.845e-03, -1.138e-01, 7.996e-02, 7.868e-02, -4.075e-02, -5.790e-02, -9.637e-02, 1.098e-02, -2.270e-01, 1.366e-01, 1.204e-01, -5.277e-03, 5.143e-02, 1.918e-02, -5.697e-02), r);\n\tr = MulAdd(s3_6, M4(-1.092e-02, -3.216e-02, 5.721e-02, -6.585e-02, -1.009e-01, -4.632e-02, -7.862e-02, 1.653e-01, 5.131e-02, -3.722e-03, 1.728e-01, -9.095e-02, -1.789e-01, 1.442e-01, -4.662e-02, 3.658e-02), r);\n\tr = MulAdd(s3_7, M4(1.101e-02, -1.593e-02, -1.144e-01, 7.734e-02, -1.481e-01, 4.628e-02, -8.941e-02, -7.569e-03, -2.673e-02, 1.117e-01, 7.346e-02, -4.990e-02, -2.966e-01, 9.371e-02, 2.772e-01, -2.145e-02), r);\n\tr = MulAdd(s3_8, M4(7.676e-02, -5.079e-03, 6.983e-02, -9.453e-02, -8.591e-02, 8.574e-02, -9.288e-02, 4.522e-02, -3.042e-02, -2.422e-02, -3.078e-02, 3.838e-02, -1.997e-01, 3.532e-02, -2.855e-01, 9.401e-02), r);\n\tr = MulAdd(s4_0, M4(-1.704e-01, -5.635e-02, -4.514e-02, 1.377e-01, -5.299e-02, -1.445e-02, -9.418e-02, -8.632e-02, 7.442e-02, 3.310e-01, 7.629e-02, 3.254e-02, 1.062e-01, -2.861e-01, 1.315e-01, -1.645e-01), r);\n\tr = MulAdd(s4_1, M4(4.894e-02, 1.057e-01, -1.611e-01, -1.634e-01, 2.585e-02, 5.547e-02, 3.944e-02, 2.779e-02, 8.338e-02, 5.388e-02, 3.696e-02, 1.097e-03, -9.750e-02, -2.696e-01, 1.603e-02, -2.061e-02), r);\n\tr = MulAdd(s4_2, M4(2.440e-02, 6.216e-02, -4.641e-03, 6.110e-02, 6.277e-02, -6.637e-03, 2.735e-02, 7.741e-02, 1.263e-01, 6.328e-02, 1.572e-01, -1.274e-01, -6.511e-03, 6.195e-02, 6.708e-02, -6.191e-02), r);\n\tr = MulAdd(s4_3, M4(3.447e-01, 1.650e-01, 8.541e-02, 5.321e-02, 1.518e-01, 3.891e-02, 8.751e-02, 1.890e-01, 8.485e-02, 1.050e-01, 7.165e-02, 7.063e-02, 1.793e-01, 1.331e-01, -4.657e-01, -1.884e-01), r);\n\tr = MulAdd(s4_4, M4(-2.046e-01, -1.057e-02, 1.325e-02, 1.328e-02, -6.494e-02, -5.777e-03, -2.663e-02, -5.531e-02, -6.887e-02, -1.272e-02, 8.530e-02, -9.672e-02, -2.877e-01, 1.913e-01, 1.664e-01, -3.438e-02), r);\n\tr = MulAdd(s4_5, M4(2.999e-02, -1.264e-01, 4.113e-02, 9.133e-04, -1.103e-01, -2.734e-02, 8.656e-02, -4.796e-02, -1.031e-01, -5.929e-04, -2.045e-01, 1.844e-01, 1.026e-01, 1.939e-02, -2.593e-01, 1.734e-02), r);\n\tr = MulAdd(s4_6, M4(7.705e-02, -5.389e-02, -5.880e-02, 9.477e-02, 1.908e-02, -3.981e-02, 1.341e-02, 5.069e-02, -5.309e-02, 6.803e-02, 1.399e-01, 1.974e-01, -2.990e-02, -3.216e-01, -7.345e-03, 1.540e-01), r);\n\tr = MulAdd(s4_7, M4(1.846e-02, -8.625e-02, -8.892e-02, 3.352e-01, -9.511e-02, -4.309e-02, -6.184e-02, -1.939e-01, -5.934e-02, 9.256e-02, -6.655e-02, -1.265e-01, -3.136e-01, -9.817e-02, 2.529e-02, -2.793e-02), r);\n\tr = MulAdd(s4_8, M4(1.994e-01, 2.776e-01, -1.158e-01, -3.117e-02, -4.502e-02, -8.706e-02, 7.736e-02, 8.342e-02, 2.195e-01, -1.207e-01, -1.143e-02, -4.740e-01, 1.024e-01, 3.412e-02, -8.559e-02, 8.561e-02), r);\n\tr = MulAdd(s5_0, M4(-1.424e-01, -3.827e-02, 9.982e-03, 1.728e-01, -1.270e-02, 6.425e-02, 7.333e-02, 1.429e-01, -5.168e-02, -3.531e-03, -1.018e-01, -7.135e-02, 1.500e-02, -4.705e-02, 1.095e-03, 5.302e-02), r);\n\tr = MulAdd(s5_1, M4(1.636e-01, -1.645e-01, 4.886e-02, 2.773e-02, 7.834e-02, -2.487e-02, 2.299e-02, 1.313e-01, -2.820e-02, -1.568e-01, 8.729e-02, 8.737e-02, 9.738e-04, -5.445e-04, 5.576e-02, -4.024e-02), r);\n\tr = MulAdd(s5_2, M4(5.442e-02, 1.993e-04, -1.460e-01, -1.173e-01, -9.994e-02, 4.632e-02, 5.769e-02, 1.391e-01, -1.149e-01, 6.631e-03, 6.934e-02, 3.662e-02, -4.205e-02, 1.630e-02, -1.077e-01, 7.098e-02), r);\n\tr = MulAdd(s5_3, M4(4.663e-02, -6.306e-02, 4.831e-02, 2.122e-02, -2.886e-02, 2.370e-01, 3.475e-02, -5.125e-02, 4.117e-02, -2.344e-02, -1.420e-02, -6.763e-03, 9.431e-02, -6.717e-02, -9.945e-02, -1.036e-01), r);\n\tr = MulAdd(s5_4, M4(-2.250e-01, -6.616e-02, -1.702e-02, 1.078e-01, -8.410e-03, 2.029e-01, -1.195e-01, -1.684e-02, 4.381e-02, -1.808e-02, -7.171e-02, 1.174e-01, -1.759e-01, -2.192e-02, 1.143e-01, -5.823e-02), r);\n\tr = MulAdd(s5_5, M4(-1.406e-01, -2.651e-02, 2.532e-02, 1.900e-01, 4.971e-02, -1.710e-02, -5.660e-02, 1.032e-01, 3.520e-02, 3.673e-02, 9.979e-02, -7.656e-02, -3.376e-02, 1.289e-02, -9.658e-03, -5.253e-02), r);\n\tr = MulAdd(s5_6, M4(8.909e-02, 1.214e-01, 4.088e-02, -7.486e-02, 6.216e-02, 6.290e-02, 4.715e-02, -3.857e-03, -4.435e-02, 1.425e-01, -8.248e-02, 8.130e-02, -2.014e-01, 1.266e-01, -5.059e-02, -2.273e-02), r);\n\tr = MulAdd(s5_7, M4(-6.331e-02, 8.323e-02, -7.675e-02, -2.001e-01, 6.727e-02, 8.620e-02, 2.074e-02, 6.153e-02, 9.192e-02, 1.586e-02, -2.733e-02, 1.233e-01, 2.027e-01, 6.006e-02, -2.490e-02, -1.344e-01), r);\n\tr = MulAdd(s5_8, M4(-1.838e-02, -7.457e-02, -5.620e-02, 1.654e-01, -6.773e-02, 8.304e-04, -6.201e-03, 1.674e-01, 7.353e-02, 7.026e-03, -9.155e-02, -1.844e-02, -1.289e-01, 1.754e-02, -9.762e-02, 2.202e-02), r);\n\tr = MulAdd(s6_0, M4(-4.472e-03, -1.005e-01, 2.258e-01, -9.578e-02, 1.777e-01, -3.474e-02, 3.183e-02, 6.274e-02, -5.911e-03, -1.968e-02, 1.346e-01, -2.485e-02, -2.839e-02, 6.432e-02, -1.317e-02, -1.667e-01), r);\n\tr = MulAdd(s6_1, M4(1.821e-02, 1.915e-01, -2.842e-02, -8.619e-02, -7.271e-02, -2.150e-01, 1.525e-01, -3.161e-01, 6.814e-02, 2.463e-02, -1.319e-02, 1.482e-02, -7.062e-02, 6.184e-02, 9.224e-02, -2.110e-02), r);\n\tr = MulAdd(s6_2, M4(2.366e-02, 2.179e-01, -2.260e-01, -4.090e-02, 3.450e-02, -2.221e-01, -1.917e-01, -1.253e-03, 2.459e-02, -3.095e-02, -2.960e-02, 6.917e-02, 1.787e-02, -6.407e-02, -1.363e-01, 1.354e-02), r);\n\tr = MulAdd(s6_3, M4(7.358e-02, -1.112e-01, 1.565e-01, -3.123e-02, -2.158e-02, -4.314e-02, -3.589e-02, 4.137e-02, -6.222e-02, 4.665e-02, 1.050e-01, 8.966e-02, -2.252e-02, 5.703e-05, -2.254e-02, -1.032e-01), r);\n\tr = MulAdd(s6_4, M4(1.371e-02, -1.477e-01, 3.052e-01, 6.823e-02, -5.356e-02, -1.059e-01, 1.759e-01, 1.190e-01, -9.110e-02, -2.838e-02, -1.095e-02, 9.377e-02, 3.022e-02, -2.750e-01, 1.233e-01, -8.033e-02), r);\n\tr = MulAdd(s6_5, M4(-2.452e-02, 3.526e-02, -3.008e-01, -6.037e-02, 9.324e-02, -6.850e-02, -8.138e-02, 4.399e-02, -7.511e-02, 5.993e-02, 4.646e-02, 4.527e-02, 3.678e-02, 9.254e-02, -3.808e-02, -1.133e-01), r);\n\tr = MulAdd(s6_6, M4(-1.469e-01, -6.462e-02, 3.747e-02, -2.681e-01, -1.403e-01, 2.458e-01, 3.866e-02, -2.417e-02, -8.566e-03, 8.890e-03, 4.941e-02, 4.937e-03, 3.387e-02, 4.419e-02, 9.334e-02, 3.426e-02), r);\n\tr = MulAdd(s6_7, M4(-1.553e-01, 9.161e-02, -1.463e-01, -1.822e-01, -2.398e-01, 5.129e-02, 1.587e-01, -2.893e-02, -1.408e-01, 2.464e-01, -4.796e-02, -6.968e-02, 1.199e-01, 2.698e-02, -1.137e-02, -1.715e-01), r);\n\tr = MulAdd(s6_8, M4(-1.989e-01, 7.418e-02, -2.803e-01, -7.758e-02, -6.718e-02, 1.768e-02, -2.800e-02, -6.137e-02, 1.191e-01, -1.811e-02, -1.433e-01, 1.586e-01, 1.840e-01, 4.482e-02, -3.477e-02, -4.043e-02), r);\n\tr = MulAdd(s7_0, M4(6.616e-03, -7.259e-02, -3.522e-02, -2.314e-02, 1.343e-02, 9.060e-02, 3.314e-02, 2.074e-02, 6.596e-03, -3.655e-02, -7.397e-02, -8.277e-02, -2.683e-02, 7.246e-02, 4.985e-02, -1.649e-01), r);\n\tr = MulAdd(s7_1, M4(2.994e-02, 3.844e-02, -2.174e-02, -6.217e-02, 1.322e-01, -5.597e-02, -8.560e-02, -3.968e-02, 3.835e-02, 9.182e-04, -7.721e-02, -4.019e-02, -1.608e-01, 6.102e-02, 4.120e-02, 4.026e-02), r);\n\tr = MulAdd(s7_2, M4(5.433e-02, 7.448e-02, -6.959e-02, 3.255e-02, 2.247e-02, -2.882e-02, -7.430e-02, -6.994e-03, -3.539e-02, -9.467e-02, 4.148e-02, -1.225e-01, 1.195e-02, 8.160e-03, 1.256e-02, 1.419e-01), r);\n\tr = MulAdd(s7_3, M4(-1.717e-01, 3.816e-02, 5.009e-02, -3.195e-02, -2.244e-02, 3.889e-03, 5.482e-03, -1.720e-01, 1.087e-02, -2.089e-01, 4.557e-02, -1.794e-01, -1.795e-03, 2.095e-02, 1.293e-01, -1.453e-01), r);\n\tr = MulAdd(s7_4, M4(7.199e-02, -1.367e-01, 2.238e-01, -9.105e-02, -5.963e-02, 1.711e-01, 5.876e-02, 3.460e-02, -6.988e-02, 2.286e-02, -1.684e-01, -7.710e-02, -1.110e-01, -7.015e-03, -3.769e-02, 2.094e-01), r);\n\tr = MulAdd(s7_5, M4(2.787e-02, -2.768e-02, -1.053e-01, 4.257e-02, -1.150e-01, -2.859e-02, 2.506e-02, -1.080e-01, 1.821e-01, 8.441e-02, -1.393e-01, -4.062e-03, 1.600e-01, 1.051e-01, -2.439e-02, -3.265e-02), r);\n\tr = MulAdd(s7_6, M4(1.021e-01, 4.107e-02, -5.459e-02, -1.254e-02, -1.705e-02, -3.163e-02, 8.226e-02, 1.609e-01, 1.601e-01, -3.518e-01, 4.768e-03, 2.022e-01, -2.541e-01, 6.005e-02, 4.948e-02, 2.458e-01), r);\n\tr = MulAdd(s7_7, M4(-1.719e-01, -4.408e-02, 1.150e-02, -3.852e-02, -8.845e-02, 7.843e-02, -1.203e-03, -1.014e-01, -9.808e-03, -1.778e-01, 2.647e-02, 5.050e-02, 2.294e-01, 1.987e-02, -1.390e-01, 1.359e-01), r);\n\tr = MulAdd(s7_8, M4(5.449e-02, 1.212e-01, 1.297e-01, 8.956e-02, 1.642e-01, -1.450e-01, -8.208e-02, 1.213e-01, -2.843e-01, -2.460e-01, -6.178e-02, 1.192e-02, -4.585e-02, 1.380e-01, -3.861e-02, 9.575e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -5.407e-02, -7.067e-02, 1.950e-02, 9.545e-03 };\n\tr = MulAdd(s0_0, M4(-1.911e-01, 4.293e-02, -7.165e-02, -2.189e-01, 6.837e-02, 3.073e-02, -7.802e-02, 7.100e-02, -4.834e-02, -4.366e-02, 2.767e-02, 1.131e-01, 7.377e-02, 1.025e-01, 6.654e-02, -1.978e-01), r);\n\tr = MulAdd(s0_1, M4(2.610e-01, -9.888e-03, -3.636e-02, -1.254e-01, 2.710e-02, -1.770e-03, 3.422e-02, 1.038e-01, 6.573e-02, -8.588e-02, -1.277e-01, 7.383e-02, 9.637e-02, -9.595e-02, -1.055e-01, 5.184e-02), r);\n\tr = MulAdd(s0_2, M4(-4.114e-03, -1.705e-02, -1.095e-03, -4.263e-02, -1.645e-01, 3.551e-02, -6.546e-03, -1.143e-02, -1.965e-01, 8.983e-02, 2.647e-02, 2.088e-02, -8.941e-02, 1.012e-01, 6.557e-02, -8.384e-02), r);\n\tr = MulAdd(s0_3, M4(-2.234e-02, 5.056e-02, -2.678e-02, 5.041e-02, 1.036e-01, 5.828e-02, 2.647e-02, 1.489e-02, -9.072e-02, -7.207e-03, -6.385e-02, -4.407e-02, 2.517e-01, 6.323e-02, -2.668e-02, 1.636e-01), r);\n\tr = MulAdd(s0_4, M4(-8.313e-02, -1.719e-01, 7.980e-02, 4.337e-02, -1.653e-01, -6.344e-02, -1.659e-02, 3.679e-02, -9.873e-03, -8.276e-02, 8.539e-02, 1.783e-01, 2.292e-01, -8.759e-02, -2.398e-03, 2.628e-01), r);\n\tr = MulAdd(s0_5, M4(9.412e-02, -7.811e-02, 2.076e-02, -1.257e-01, 1.631e-01, -2.990e-02, -3.103e-02, -9.241e-04, -1.431e-01, 6.844e-02, 3.843e-02, 9.549e-02, -1.608e-01, -6.787e-03, -2.569e-02, 1.675e-02), r);\n\tr = MulAdd(s0_6, M4(-1.088e-01, -6.189e-02, -4.222e-02, 2.319e-02, 1.818e-02, 1.727e-02, -4.928e-02, 6.700e-02, 6.315e-02, 1.296e-02, 9.611e-02, 1.014e-02, 2.973e-03, 1.245e-03, 2.553e-01, 1.779e-02), r);\n\tr = MulAdd(s0_7, M4(-3.605e-02, -5.594e-02, -9.233e-02, -4.208e-03, -7.568e-02, -4.813e-02, -2.752e-02, 3.998e-02, -1.366e-01, -4.549e-02, -2.460e-02, 1.400e-01, -9.195e-02, 4.020e-02, 6.491e-02, -1.215e-01), r);\n\tr = MulAdd(s0_8, M4(4.148e-02, -3.769e-02, -9.859e-03, -2.839e-02, -9.498e-03, -6.769e-02, -4.398e-02, 5.395e-02, -1.100e-01, -3.161e-02, 1.902e-02, 1.477e-01, -1.482e-01, 3.158e-02, 3.634e-02, 2.209e-02), r);\n\tr = MulAdd(s1_0, M4(1.445e-02, 8.049e-02, 2.826e-02, -2.931e-01, 1.958e-01, 1.026e-01, -8.516e-02, 1.093e-01, 1.909e-01, 2.248e-02, -6.748e-02, 3.476e-03, -3.636e-02, 3.906e-03, 8.562e-02, -2.096e-02), r);\n\tr = MulAdd(s1_1, M4(9.437e-02, 1.674e-01, -5.992e-03, -2.529e-01, -1.090e-02, -1.137e-02, -3.747e-02, 3.806e-02, 7.053e-02, -1.197e-01, 1.002e-02, -9.692e-02, 3.400e-02, -1.558e-02, -1.905e-02, 9.034e-02), r);\n\tr = MulAdd(s1_2, M4(7.877e-03, 9.344e-02, 1.036e-02, 1.783e-01, -7.734e-02, 6.793e-02, 5.569e-02, 1.347e-02, -1.236e-01, 2.216e-02, 1.008e-02, 1.481e-02, 4.541e-02, 7.055e-02, 7.153e-02, 1.067e-02), r);\n\tr = MulAdd(s1_3, M4(1.127e-02, 1.351e-01, 6.345e-03, -2.964e-01, -9.091e-02, 2.207e-01, 9.727e-02, 8.008e-03, 3.675e-02, 4.381e-02, -7.209e-02, -2.023e-02, 1.003e-01, 1.810e-02, -1.049e-01, 9.784e-02), r);\n\tr = MulAdd(s1_4, M4(2.354e-02, -1.543e-01, 1.898e-01, 9.106e-02, -7.247e-03, -5.448e-02, 3.855e-02, -2.363e-02, 7.327e-02, -2.247e-01, 1.712e-01, 1.105e-01, -1.091e-01, -1.434e-01, 1.633e-02, -2.095e-02), r);\n\tr = MulAdd(s1_5, M4(2.805e-02, 9.803e-02, 8.733e-02, -3.386e-02, -7.457e-03, 3.605e-02, 7.829e-03, 7.178e-02, 1.123e-01, -9.636e-03, -1.486e-01, -4.111e-02, 5.418e-02, -8.534e-02, 2.637e-02, 2.664e-02), r);\n\tr = MulAdd(s1_6, M4(-1.378e-02, 6.325e-02, 1.101e-02, -1.564e-02, 7.033e-02, 1.592e-01, -7.700e-02, 5.286e-02, -5.330e-02, -7.951e-02, -3.969e-02, 2.130e-02, -6.225e-02, -1.139e-02, -4.066e-02, 3.364e-02), r);\n\tr = MulAdd(s1_7, M4(-3.912e-02, 4.691e-02, -1.572e-02, -5.204e-02, -9.345e-02, 2.114e-02, 7.954e-02, -3.320e-03, -1.472e-02, -6.786e-03, 1.106e-01, -1.127e-01, -5.276e-02, 8.257e-03, -7.303e-03, -3.415e-02), r);\n\tr = MulAdd(s1_8, M4(8.577e-02, 2.541e-02, -2.907e-02, 4.950e-02, -6.884e-02, -8.209e-02, -1.475e-02, -1.545e-01, -7.352e-02, -2.567e-02, -5.289e-02, 5.263e-02, 3.229e-02, 2.618e-02, -1.540e-02, 9.362e-02), r);\n\tr = MulAdd(s2_0, M4(3.062e-02, 1.857e-02, -8.636e-03, -1.682e-02, 5.537e-01, -3.514e-02, -9.186e-02, 2.693e-02, -3.343e-02, -7.040e-02, 1.051e-01, 6.563e-02, 3.258e-02, 3.417e-03, 1.605e-02, 1.267e-02), r);\n\tr = MulAdd(s2_1, M4(-7.151e-02, 1.227e-01, -7.326e-02, 2.537e-02, -2.078e-01, 7.278e-02, 1.412e-01, -1.122e-01, 1.843e-01, -4.381e-02, 1.476e-02, 1.920e-01, 7.397e-02, 2.101e-02, -3.174e-02, 1.029e-01), r);\n\tr = MulAdd(s2_2, M4(-6.594e-02, 1.115e-02, 6.316e-02, -5.414e-02, 4.450e-02, -2.294e-02, -2.767e-02, 6.729e-02, 3.957e-02, 7.448e-02, 1.265e-01, 2.011e-01, -1.474e-02, -2.215e-02, 1.555e-02, -8.592e-04), r);\n\tr = MulAdd(s2_3, M4(1.156e-01, 1.432e-02, -7.871e-02, -1.026e-02, 1.357e-02, 3.515e-02, 5.604e-02, -2.915e-02, -3.069e-02, -8.177e-02, 1.823e-03, 1.532e-01, -1.250e-03, 5.676e-02, -4.616e-02, 1.024e-01), r);\n\tr = MulAdd(s2_4, M4(9.017e-02, -3.800e-02, 8.001e-02, -9.478e-03, -2.834e-02, 7.740e-02, 3.474e-01, 3.802e-02, 2.971e-02, 1.012e-01, -4.683e-02, -8.751e-02, 1.497e-01, 3.183e-01, -2.329e-01, -7.118e-02), r);\n\tr = MulAdd(s2_5, M4(1.648e-01, 4.245e-02, -7.537e-03, 1.075e-01, -1.819e-01, 2.302e-02, -7.246e-03, 8.852e-02, 3.767e-03, 4.556e-02, 5.827e-03, 1.754e-01, 3.513e-02, 1.574e-01, -1.155e-01, 5.588e-02), r);\n\tr = MulAdd(s2_6, M4(5.341e-02, -1.367e-02, -7.464e-02, -6.560e-02, -1.519e-01, -1.422e-01, -5.583e-02, -3.300e-02, 7.439e-02, -1.706e-02, -5.464e-02, -4.118e-02, -9.160e-02, -1.090e-01, -1.034e-01, -9.711e-03), r);\n\tr = MulAdd(s2_7, M4(-1.381e-01, -5.258e-02, 6.994e-02, 1.294e-02, 2.060e-02, 6.963e-02, 2.264e-02, -2.272e-02, -1.541e-01, -6.683e-03, -8.892e-02, 4.178e-02, 5.846e-02, -3.678e-02, -9.322e-02, -1.214e-01), r);\n\tr = MulAdd(s2_8, M4(3.280e-02, 3.080e-02, -3.820e-02, 3.021e-02, -4.802e-02, 1.730e-02, 6.540e-02, 1.268e-01, -2.986e-02, -5.638e-02, -4.957e-02, 1.004e-01, -1.840e-01, 2.708e-02, -7.470e-02, 5.920e-02), r);\n\tr = MulAdd(s3_0, M4(1.189e-01, 7.786e-02, -1.425e-02, 4.844e-02, -7.746e-02, 4.289e-02, 1.183e-01, 5.976e-02, 1.026e-01, -4.106e-02, 6.290e-02, -1.676e-01, 9.636e-02, -8.836e-03, 1.345e-01, 1.377e-01), r);\n\tr = MulAdd(s3_1, M4(-1.363e-01, 7.409e-02, 9.795e-03, -9.447e-02, -8.569e-02, 1.214e-02, -8.428e-03, 5.571e-02, -1.615e-01, 6.046e-02, 1.770e-01, -5.997e-02, -1.165e-02, -7.313e-02, 5.458e-02, 1.325e-01), r);\n\tr = MulAdd(s3_2, M4(-2.265e-01, -3.161e-02, -3.418e-02, -2.184e-02, -2.011e-02, -2.432e-02, 1.297e-02, 3.494e-02, 4.333e-02, 1.234e-02, 7.744e-03, 1.454e-03, 7.516e-02, -1.982e-02, 7.248e-02, 2.420e-02), r);\n\tr = MulAdd(s3_3, M4(2.222e-02, 3.278e-02, 7.987e-02, 1.096e-02, 1.140e-02, 8.110e-03, -1.275e-02, -7.840e-02, -1.195e-01, 4.069e-02, -2.466e-04, 5.544e-02, -1.178e-01, 2.951e-02, -7.497e-02, -6.892e-02), r);\n\tr = MulAdd(s3_4, M4(1.492e-01, -2.627e-02, -9.715e-03, -1.093e-01, 7.752e-02, 2.010e-02, 7.764e-02, -1.783e-01, -2.181e-02, 2.569e-01, 9.805e-02, -8.017e-02, -1.439e-01, 1.977e-01, -3.024e-01, -2.178e-01), r);\n\tr = MulAdd(s3_5, M4(-2.819e-02, 4.856e-03, 3.206e-02, 4.678e-02, 1.187e-01, -6.616e-02, -1.151e-01, -3.546e-02, 6.754e-02, 1.009e-01, -7.493e-03, 2.946e-03, 1.973e-01, 1.871e-01, 8.823e-02, 1.684e-02), r);\n\tr = MulAdd(s3_6, M4(8.810e-02, 8.072e-02, -4.034e-02, 4.030e-02, -5.572e-02, 9.288e-02, 9.060e-02, 3.320e-02, 8.505e-02, -1.192e-02, -9.003e-02, 5.440e-02, 3.771e-02, -9.408e-02, 5.702e-02, -5.567e-02), r);\n\tr = MulAdd(s3_7, M4(1.188e-01, -3.642e-02, 7.194e-02, 4.704e-02, 9.579e-02, -1.549e-02, -5.090e-02, 1.119e-01, -4.576e-02, 6.161e-02, -1.018e-01, 4.477e-02, 3.698e-02, 3.252e-02, -1.882e-01, 1.689e-02), r);\n\tr = MulAdd(s3_8, M4(-2.570e-01, 2.082e-03, -8.574e-02, 7.213e-03, -1.976e-02, 7.299e-02, 2.060e-02, -9.470e-03, -5.948e-02, -2.919e-02, 6.735e-02, 2.437e-04, 1.029e-01, 9.595e-02, -1.881e-02, -2.288e-02), r);\n\tr = MulAdd(s4_0, M4(2.582e-02, -1.106e-01, -1.961e-01, -1.136e-01, 2.005e-02, 1.980e-03, 9.052e-02, -5.878e-02, 1.522e-02, 1.750e-02, -5.777e-03, 5.241e-02, 1.188e-01, -6.191e-02, -5.085e-02, 1.577e-02), r);\n\tr = MulAdd(s4_1, M4(4.442e-02, -7.196e-03, 5.665e-02, 1.553e-02, -1.322e-01, -4.538e-02, -8.256e-03, 4.163e-02, 5.614e-02, -4.783e-02, 6.511e-03, -4.385e-02, -1.286e-01, 7.950e-02, 7.059e-02, -1.275e-01), r);\n\tr = MulAdd(s4_2, M4(-1.467e-01, 1.017e-01, -7.759e-02, 3.511e-02, 9.203e-02, -2.830e-02, 1.622e-02, 5.200e-02, -4.604e-02, -1.184e-02, 1.596e-02, -7.837e-02, -3.537e-02, 7.057e-02, 8.211e-03, 9.773e-02), r);\n\tr = MulAdd(s4_3, M4(-3.116e-01, 1.405e-01, -1.825e-01, -1.602e-01, 3.794e-03, 1.349e-02, 1.305e-03, -3.067e-02, -1.701e-01, -2.518e-02, 1.034e-01, 1.046e-02, -6.726e-02, 6.267e-02, -1.063e-02, -3.378e-03), r);\n\tr = MulAdd(s4_4, M4(-1.171e-01, 4.148e-02, 5.117e-02, 7.748e-02, -6.945e-02, -1.305e-01, -2.528e-02, 7.143e-02, -3.070e-02, 7.727e-02, -4.977e-03, 7.770e-02, -5.829e-02, -2.211e-02, 1.441e-01, 2.339e-02), r);\n\tr = MulAdd(s4_5, M4(-1.988e-01, 9.871e-02, 1.277e-01, 4.608e-02, 7.262e-02, -2.677e-03, -1.809e-02, -6.628e-03, 1.154e-01, -6.355e-02, -3.575e-02, -2.338e-02, 2.810e-01, 6.067e-02, 8.032e-02, -2.597e-02), r);\n\tr = MulAdd(s4_6, M4(1.806e-01, 1.486e-01, 2.705e-01, 4.881e-02, -1.508e-01, -1.798e-03, 7.290e-02, 1.463e-02, -2.177e-01, -1.193e-02, -3.910e-02, 9.460e-02, -8.807e-02, -2.762e-02, -5.861e-02, -2.578e-02), r);\n\tr = MulAdd(s4_7, M4(1.671e-01, 8.773e-02, -1.050e-01, 2.206e-01, 1.209e-01, 6.165e-03, -1.402e-01, 1.012e-02, 8.527e-02, -6.815e-02, -4.452e-02, -5.306e-02, -3.056e-02, -4.385e-02, -5.908e-02, 1.483e-02), r);\n\tr = MulAdd(s4_8, M4(1.712e-01, -1.575e-01, -4.181e-02, -1.116e-01, -3.266e-04, -3.737e-02, -1.091e-01, 8.541e-02, -2.812e-02, 6.552e-02, 8.679e-02, 4.192e-02, -3.681e-02, 7.918e-03, -1.257e-02, -2.467e-03), r);\n\tr = MulAdd(s5_0, M4(-8.263e-02, -6.845e-02, 9.966e-03, -1.256e-02, -9.009e-03, 9.184e-03, 5.524e-02, -5.402e-02, 2.346e-02, -6.712e-02, -1.016e-01, 5.388e-02, 4.347e-01, -2.237e-01, -1.300e-01, 4.637e-02), r);\n\tr = MulAdd(s5_1, M4(8.672e-02, -6.151e-03, 2.086e-02, 6.444e-02, 2.230e-01, -5.404e-02, 3.705e-02, 9.646e-02, 3.340e-02, -1.704e-01, -1.833e-01, 9.220e-02, 2.407e-01, 5.851e-02, -1.318e-01, -4.974e-02), r);\n\tr = MulAdd(s5_2, M4(-6.637e-02, 4.372e-02, 9.089e-02, -1.496e-02, -3.321e-01, 1.390e-01, 1.479e-01, -2.773e-01, 1.138e-01, 8.449e-02, 1.444e-01, -2.207e-01, -1.901e-01, 1.075e-01, -3.949e-02, -2.799e-02), r);\n\tr = MulAdd(s5_3, M4(8.775e-02, 1.043e-01, -1.374e-02, 5.217e-02, 1.646e-01, 4.211e-02, 3.824e-02, 5.914e-02, 7.882e-03, -1.040e-01, 2.567e-02, 1.414e-01, -1.820e-01, 1.737e-01, 1.967e-01, -3.163e-02), r);\n\tr = MulAdd(s5_4, M4(-1.284e-01, 7.496e-02, -2.371e-02, -2.662e-02, 2.125e-01, 2.143e-01, -2.473e-01, -2.820e-01, -1.093e-01, 9.356e-02, -3.271e-01, 4.151e-01, -4.591e-02, -1.298e-01, 1.714e-01, 1.069e-01), r);\n\tr = MulAdd(s5_5, M4(-7.078e-03, 8.816e-02, -5.712e-02, 6.085e-03, -1.278e-01, -1.966e-01, 9.780e-02, -1.756e-01, 1.354e-01, -3.525e-01, -1.815e-01, -1.969e-02, -1.791e-02, -7.485e-02, 7.644e-02, 4.745e-02), r);\n\tr = MulAdd(s5_6, M4(-8.955e-02, 2.475e-02, 9.383e-02, -7.093e-03, 3.655e-02, 5.342e-02, 7.128e-02, 2.780e-02, 3.943e-02, 3.385e-02, 2.130e-01, -1.660e-01, 1.458e-02, -8.553e-02, -1.646e-01, 7.980e-02), r);\n\tr = MulAdd(s5_7, M4(1.467e-02, -4.959e-02, -2.671e-02, 3.923e-02, 1.022e-01, -1.061e-01, 1.377e-01, -1.619e-01, 6.276e-02, -2.224e-01, -1.624e-01, 3.056e-01, 1.421e-01, -6.040e-02, -8.337e-02, -7.135e-02), r);\n\tr = MulAdd(s5_8, M4(1.780e-01, 9.652e-03, 1.017e-01, -8.695e-02, 8.021e-01, 1.471e-01, -9.219e-02, -2.656e-01, 5.916e-01, 2.761e-01, 2.245e-01, -1.467e-02, 2.326e-02, 1.662e-02, -4.968e-02, 2.504e-02), r);\n\tr = MulAdd(s6_0, M4(1.436e-01, -3.030e-03, 9.921e-03, 7.837e-02, -1.959e-01, 1.429e-01, 2.338e-01, 3.925e-02, -1.750e-01, -7.659e-02, -1.538e-01, 9.592e-02, -7.076e-02, 1.303e-02, 7.885e-02, -1.405e-01), r);\n\tr = MulAdd(s6_1, M4(1.935e-02, 8.829e-03, -2.350e-02, 8.725e-03, 4.762e-02, -2.891e-02, 9.243e-02, 1.887e-01, -6.199e-02, -2.533e-02, 1.109e-01, 2.641e-01, -2.384e-02, 1.634e-01, 6.726e-02, -1.385e-01), r);\n\tr = MulAdd(s6_2, M4(-1.315e-01, 8.924e-02, 7.963e-02, -2.570e-03, -5.893e-02, 4.241e-02, -1.835e-02, 1.171e-01, 2.796e-01, 5.362e-02, -2.055e-02, 2.369e-01, -8.197e-02, -6.894e-02, -2.458e-02, -1.200e-01), r);\n\tr = MulAdd(s6_3, M4(3.153e-02, 2.093e-02, 4.118e-03, -1.320e-02, -4.870e-03, -1.532e-01, 1.172e-02, 2.641e-04, -2.587e-01, 1.882e-02, 2.345e-01, -7.079e-02, -4.541e-01, 2.772e-02, -1.567e-01, 1.183e-01), r);\n\tr = MulAdd(s6_4, M4(-7.829e-02, -4.471e-02, -1.744e-02, 2.243e-02, -7.376e-02, 1.616e-01, -1.833e-03, 1.263e-02, 2.839e-01, 6.697e-02, 1.050e-01, 1.745e-01, 3.243e-02, -3.538e-02, -6.101e-02, -4.361e-02), r);\n\tr = MulAdd(s6_5, M4(1.262e-01, -8.569e-02, -3.884e-02, -2.852e-02, 1.949e-01, 5.632e-02, 9.793e-02, -6.019e-02, 1.199e-01, -2.750e-02, -5.027e-02, 1.635e-01, 6.961e-02, 4.372e-02, 7.290e-02, 5.485e-02), r);\n\tr = MulAdd(s6_6, M4(-1.680e-01, -5.327e-02, -4.961e-03, 2.590e-02, 1.749e-01, 8.292e-02, 9.512e-02, 1.474e-01, 8.935e-02, 2.390e-02, 9.264e-02, 9.805e-02, -7.415e-02, -4.113e-02, -1.309e-01, 1.563e-01), r);\n\tr = MulAdd(s6_7, M4(3.112e-02, -4.886e-02, 8.220e-02, -6.343e-02, -8.350e-02, -8.932e-02, -1.057e-01, -3.488e-02, -1.522e-01, 3.794e-02, 1.197e-01, 1.177e-01, -1.665e-01, -6.301e-02, -4.422e-02, 1.613e-01), r);\n\tr = MulAdd(s6_8, M4(1.694e-01, -2.333e-02, -5.932e-02, -1.183e-02, -9.355e-02, -2.778e-03, 9.447e-02, 2.451e-02, 1.867e-01, 7.640e-02, 2.108e-01, -1.665e-02, 1.878e-01, 8.773e-03, -2.257e-01, 1.594e-01), r);\n\tr = MulAdd(s7_0, M4(-8.965e-03, 2.624e-01, 1.210e-01, -1.458e-01, 8.647e-02, -1.773e-02, -2.364e-02, -1.276e-01, 5.775e-03, -9.750e-04, -1.712e-02, -6.345e-02, -6.886e-03, 1.129e-01, 1.148e-01, 2.896e-03), r);\n\tr = MulAdd(s7_1, M4(1.351e-01, -1.312e-01, -4.994e-02, -2.724e-01, 2.359e-01, 1.263e-02, 9.888e-02, 2.917e-02, 8.381e-02, 2.099e-02, 3.319e-02, -7.182e-03, -3.381e-02, -4.513e-03, -1.517e-01, 2.118e-02), r);\n\tr = MulAdd(s7_2, M4(-3.996e-01, -1.398e-02, -7.864e-02, 2.525e-02, -1.230e-01, 7.733e-02, -1.769e-02, 5.334e-02, 1.540e-02, -3.895e-02, 3.792e-03, -7.897e-02, 4.750e-02, -7.005e-02, 4.263e-02, -4.919e-02), r);\n\tr = MulAdd(s7_3, M4(-2.755e-02, -4.463e-02, -6.112e-02, 6.444e-02, -1.315e-02, -8.691e-02, -8.237e-02, -7.589e-02, -6.343e-02, -4.937e-02, 3.279e-02, 3.611e-02, -1.459e-01, 4.092e-02, 8.283e-02, 1.265e-01), r);\n\tr = MulAdd(s7_4, M4(4.206e-02, 1.399e-01, -4.043e-01, -1.555e-01, -1.589e-01, 3.718e-02, -2.416e-03, -8.547e-02, -1.886e-01, -2.620e-02, 1.115e-02, 1.535e-02, 3.972e-02, 8.115e-02, 4.437e-02, 2.503e-02), r);\n\tr = MulAdd(s7_5, M4(6.628e-02, -2.132e-02, -1.014e-01, 1.091e-01, -2.270e-02, -1.182e-02, -1.225e-02, 2.201e-01, -1.923e-01, 7.464e-02, -4.376e-02, 4.027e-02, -3.831e-03, 1.229e-01, 1.291e-01, 3.764e-02), r);\n\tr = MulAdd(s7_6, M4(2.760e-02, 5.997e-02, 8.050e-02, 6.740e-02, 1.042e-01, 2.560e-02, 4.031e-05, 1.214e-02, 9.502e-02, 3.927e-02, -4.782e-02, -2.899e-03, 4.771e-02, -6.955e-03, -2.022e-02, 2.951e-02), r);\n\tr = MulAdd(s7_7, M4(7.620e-03, 8.834e-02, 7.506e-02, -8.427e-02, -1.852e-01, 1.048e-03, 6.660e-02, -1.567e-02, 1.079e-02, -2.159e-02, 8.645e-03, -3.696e-02, 6.173e-02, 5.077e-02, 9.091e-02, -1.181e-02), r);\n\tr = MulAdd(s7_8, M4(-1.885e-01, -2.594e-02, -7.269e-02, -1.936e-03, -2.901e-02, 5.401e-02, 8.591e-02, -5.534e-02, 2.194e-02, 4.357e-02, 3.574e-02, 1.611e-02, -7.285e-03, 1.269e-03, -5.859e-02, -9.392e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 4.130e-02, 1.983e-02, 1.131e-02, -4.202e-02 };\n\tr = MulAdd(s0_0, M4(6.717e-02, -1.085e-01, 4.679e-03, 3.374e-02, -2.934e-02, -1.138e-01, -1.215e-02, -2.990e-02, 1.305e-01, 8.300e-02, 3.335e-02, 2.778e-02, 3.377e-03, -2.101e-01, -2.875e-02, 9.519e-02), r);\n\tr = MulAdd(s0_1, M4(3.467e-02, -1.759e-02, 7.026e-02, 7.086e-02, -1.204e-01, -7.126e-02, -3.318e-02, -5.756e-02, 1.470e-01, -2.150e-01, 2.192e-01, -1.131e-01, -1.367e-01, 4.720e-02, 1.611e-01, 7.222e-02), r);\n\tr = MulAdd(s0_2, M4(2.817e-02, 1.225e-01, -1.667e-02, -1.570e-02, 6.310e-02, 1.152e-03, -2.590e-02, -1.524e-01, 6.243e-02, -8.887e-02, 1.872e-01, 6.808e-02, -9.254e-02, -1.959e-01, -8.782e-02, -8.248e-02), r);\n\tr = MulAdd(s0_3, M4(-4.263e-02, 1.467e-01, 6.943e-02, -1.812e-01, 5.025e-02, -5.220e-02, -1.407e-01, 7.781e-02, -1.816e-01, 6.821e-02, -9.870e-03, 4.308e-02, -1.741e-01, -4.907e-02, 1.264e-02, -7.239e-02), r);\n\tr = MulAdd(s0_4, M4(1.230e-02, 8.330e-02, -6.574e-02, 4.610e-02, -1.526e-01, -1.785e-01, -3.353e-01, -4.067e-03, -3.103e-02, 1.791e-01, -6.876e-03, -1.204e-01, -8.336e-02, -6.957e-04, 9.618e-02, 6.912e-02), r);\n\tr = MulAdd(s0_5, M4(-1.966e-02, -1.273e-01, 1.176e-03, -5.498e-02, -1.138e-01, -5.583e-02, -5.138e-02, -1.405e-02, 6.958e-02, 3.695e-01, 1.345e-01, -1.498e-01, 9.589e-02, -6.320e-02, -9.379e-02, -3.164e-01), r);\n\tr = MulAdd(s0_6, M4(4.593e-02, -2.886e-02, -2.430e-02, -4.046e-02, 5.057e-03, 4.365e-02, -6.719e-02, 1.602e-01, -7.978e-02, 1.209e-01, 8.314e-02, -2.215e-02, -4.360e-02, -7.496e-02, -1.355e-01, -5.498e-02), r);\n\tr = MulAdd(s0_7, M4(-2.778e-02, -6.251e-03, -3.910e-04, 4.534e-02, -1.031e-02, -9.855e-02, -9.771e-02, 1.508e-01, -2.924e-02, -4.297e-02, -3.887e-02, 1.542e-01, -1.705e-01, 1.007e-01, -8.629e-02, 8.864e-02), r);\n\tr = MulAdd(s0_8, M4(3.027e-02, 1.940e-01, 2.927e-02, 9.326e-02, 4.644e-03, -7.984e-02, 4.678e-03, 1.474e-01, -1.669e-02, -4.209e-02, 1.043e-02, 9.069e-02, -1.063e-03, -1.228e-01, -3.037e-02, -9.812e-02), r);\n\tr = MulAdd(s1_0, M4(-2.453e-01, -1.051e-01, 1.144e-02, 2.509e-01, -6.616e-02, -1.942e-01, 1.415e-01, -2.385e-01, -3.674e-02, -1.015e-01, -4.910e-03, -7.619e-02, -2.013e-02, 3.080e-02, -9.871e-02, -1.100e-01), r);\n\tr = MulAdd(s1_1, M4(5.337e-02, -1.877e-01, 5.125e-02, -8.332e-02, 3.972e-02, 4.788e-02, 1.087e-01, 2.028e-02, -8.553e-02, -2.028e-02, -3.157e-03, -1.191e-02, 1.873e-02, -6.994e-02, -4.772e-03, 8.186e-02), r);\n\tr = MulAdd(s1_2, M4(-6.383e-02, 1.453e-02, -2.684e-02, 1.285e-01, -3.137e-02, -8.488e-02, 8.024e-02, 5.607e-03, -2.146e-01, -1.763e-01, -2.075e-01, 1.566e-01, 7.104e-02, -3.803e-02, 4.318e-02, 3.814e-03), r);\n\tr = MulAdd(s1_3, M4(-1.838e-03, -1.025e-01, -7.961e-02, -6.186e-02, 1.782e-02, -6.383e-02, -4.327e-02, -1.232e-01, 3.138e-02, -5.431e-02, -4.407e-02, -4.343e-02, -1.232e-01, -1.710e-02, 5.223e-02, -1.937e-01), r);\n\tr = MulAdd(s1_4, M4(-4.092e-02, -2.729e-02, -6.141e-02, -6.268e-02, 4.153e-02, -1.508e-01, 2.181e-01, 4.653e-02, -2.279e-03, 7.404e-02, -1.050e-01, 1.125e-01, 7.147e-02, 6.433e-02, 4.226e-02, -1.862e-02), r);\n\tr = MulAdd(s1_5, M4(-1.234e-01, -1.315e-01, -1.492e-01, 5.749e-02, 4.985e-02, 1.179e-01, -2.306e-02, 1.022e-01, -1.237e-01, -9.024e-02, -3.798e-04, 6.366e-03, -5.423e-02, 3.528e-03, 1.255e-01, 2.933e-02), r);\n\tr = MulAdd(s1_6, M4(-1.164e-01, -1.124e-01, -5.387e-02, 6.608e-02, 1.339e-01, 1.405e-02, 9.894e-03, -2.333e-01, -2.912e-02, -1.399e-02, -4.016e-02, -3.425e-02, -1.855e-02, 7.181e-02, -4.869e-02, -3.256e-02), r);\n\tr = MulAdd(s1_7, M4(1.152e-01, -4.542e-02, -1.117e-01, -6.471e-02, 1.022e-01, 1.087e-01, 4.418e-02, 7.917e-02, -7.525e-02, 6.215e-03, 9.068e-02, -4.588e-02, 1.149e-02, 1.724e-01, -5.913e-02, 1.584e-01), r);\n\tr = MulAdd(s1_8, M4(1.605e-01, -5.167e-02, -4.253e-02, -3.335e-03, 1.543e-02, -6.644e-04, 9.621e-02, 1.979e-02, -6.140e-02, 9.012e-04, -1.190e-02, 5.535e-02, 8.267e-04, 1.517e-02, -3.087e-02, 2.612e-02), r);\n\tr = MulAdd(s2_0, M4(-1.238e-01, -1.578e-01, -1.481e-02, -1.196e-01, -2.092e-01, -3.426e-02, -1.754e-02, -6.567e-02, 9.243e-02, 1.628e-01, 2.501e-02, 5.175e-02, -1.744e-01, -7.428e-02, -8.889e-02, -7.489e-02), r);\n\tr = MulAdd(s2_1, M4(7.879e-03, 6.343e-02, -5.226e-02, 1.424e-01, -1.023e-01, -1.032e-01, 1.761e-01, 9.949e-02, 5.968e-02, -1.766e-01, -8.374e-02, 2.282e-01, 1.070e-01, -1.683e-02, -1.689e-02, 2.043e-02), r);\n\tr = MulAdd(s2_2, M4(-5.229e-03, 1.663e-01, 9.149e-02, 4.612e-02, 1.723e-01, 2.314e-02, 4.265e-02, 6.821e-02, -5.956e-02, -7.686e-02, 1.719e-01, 2.495e-01, 2.147e-03, -3.642e-02, 1.616e-01, 7.041e-02), r);\n\tr = MulAdd(s2_3, M4(1.973e-01, -3.390e-02, -7.258e-02, 1.437e-01, -6.018e-02, 1.360e-01, -8.374e-02, -2.892e-03, -5.402e-02, -1.989e-02, 4.853e-02, -4.518e-02, -5.872e-04, -8.122e-02, -3.853e-02, 1.739e-02), r);\n\tr = MulAdd(s2_4, M4(1.295e-01, -4.896e-02, -1.630e-02, -1.248e-01, -1.512e-01, 6.255e-02, 1.608e-01, 1.656e-01, -7.696e-02, -5.137e-02, 1.514e-01, -2.473e-02, -2.328e-02, 1.922e-01, -4.038e-02, 3.598e-02), r);\n\tr = MulAdd(s2_5, M4(-1.866e-02, 9.645e-02, -8.320e-02, 1.142e-01, 6.941e-02, 1.367e-01, 7.091e-03, -1.837e-01, -1.827e-02, -2.980e-02, -7.110e-02, -3.696e-02, -9.701e-02, -9.448e-02, -8.521e-02, 2.434e-02), r);\n\tr = MulAdd(s2_6, M4(-2.143e-02, -1.493e-01, 9.606e-02, -3.440e-02, 7.487e-03, 9.767e-02, -3.191e-02, -7.964e-03, 1.168e-01, 1.179e-01, 3.998e-02, -1.623e-01, -8.569e-02, 8.994e-03, -3.421e-02, -1.244e-02), r);\n\tr = MulAdd(s2_7, M4(-9.054e-02, -5.686e-02, -1.341e-02, 1.066e-01, 1.938e-01, -2.331e-01, 1.364e-01, 1.616e-01, -6.815e-02, -5.872e-03, -2.192e-03, -2.340e-02, -9.640e-02, 1.529e-01, 8.484e-03, 1.001e-01), r);\n\tr = MulAdd(s2_8, M4(6.817e-02, -1.288e-01, 8.888e-02, 9.576e-02, 1.225e-01, 1.583e-02, -2.757e-02, -4.511e-02, 5.512e-02, -1.010e-01, -3.620e-02, 1.102e-02, 6.741e-03, -1.227e-02, 8.649e-02, 2.877e-02), r);\n\tr = MulAdd(s3_0, M4(6.229e-02, 9.592e-02, 1.294e-02, -2.348e-01, -1.230e-02, 1.214e-01, -2.806e-03, 3.487e-02, -1.279e-01, -2.212e-01, -1.472e-01, 2.606e-02, -1.845e-01, -2.816e-03, -6.874e-02, -1.281e-02), r);\n\tr = MulAdd(s3_1, M4(-9.062e-02, 1.683e-01, 1.611e-02, 5.872e-02, 5.554e-02, -7.704e-02, 6.382e-02, -2.322e-01, -3.895e-02, -3.454e-03, -2.921e-01, -5.875e-02, 3.566e-02, 1.108e-01, -1.710e-01, -2.502e-01), r);\n\tr = MulAdd(s3_2, M4(1.173e-01, 1.708e-02, 6.776e-03, 1.691e-02, 1.499e-01, 2.921e-02, -9.225e-03, 1.394e-01, -1.358e-01, 9.238e-02, -5.082e-02, 1.636e-01, -2.493e-02, -6.122e-02, 5.968e-02, 8.655e-02), r);\n\tr = MulAdd(s3_3, M4(-5.715e-02, -1.511e-02, -6.212e-02, -6.473e-02, 3.562e-02, -3.158e-02, -1.098e-01, 1.478e-02, 6.033e-02, -1.016e-01, -1.135e-01, -1.125e-01, -1.030e-01, 2.885e-01, 2.408e-02, -4.063e-02), r);\n\tr = MulAdd(s3_4, M4(-4.288e-02, 1.547e-02, -1.791e-01, -2.682e-01, -3.370e-02, 1.680e-02, 2.958e-03, 5.127e-02, -2.809e-02, -4.347e-02, -1.414e-01, 3.814e-02, -1.420e-01, 2.483e-01, 2.089e-01, -1.261e-01), r);\n\tr = MulAdd(s3_5, M4(-1.184e-01, 1.336e-02, -9.600e-02, -9.977e-02, -2.192e-01, -1.367e-01, 1.383e-01, -5.234e-02, 2.522e-02, 1.420e-03, -2.163e-01, 6.757e-02, -3.138e-01, -1.640e-01, -3.642e-02, 1.417e-01), r);\n\tr = MulAdd(s3_6, M4(-2.282e-02, -1.051e-01, -5.613e-03, -4.427e-02, -2.312e-02, 7.340e-02, 6.455e-02, 4.537e-03, 1.161e-01, -4.970e-02, -6.218e-02, 1.148e-01, -6.845e-02, 8.079e-02, -7.447e-03, 6.897e-02), r);\n\tr = MulAdd(s3_7, M4(2.117e-02, 4.091e-02, 4.972e-02, -3.314e-02, -4.211e-03, -9.433e-02, -8.061e-02, 7.014e-02, 6.691e-02, -2.260e-01, -1.036e-01, 4.619e-02, -5.972e-02, 1.259e-01, -3.887e-02, 6.878e-02), r);\n\tr = MulAdd(s3_8, M4(6.344e-03, -2.309e-02, 6.478e-02, 1.424e-03, -1.296e-03, -5.976e-02, -2.716e-02, 1.685e-01, -3.233e-02, -7.415e-02, -2.596e-02, -8.568e-02, -2.194e-01, 1.018e-01, 5.171e-02, 1.192e-01), r);\n\tr = MulAdd(s4_0, M4(1.224e-01, -1.173e-01, -7.758e-02, -1.832e-02, -1.574e-01, 1.337e-01, 2.167e-02, 7.167e-02, -1.695e-02, -5.784e-02, 6.215e-02, -5.441e-02, -2.862e-02, 4.763e-02, -1.056e-01, -3.591e-03), r);\n\tr = MulAdd(s4_1, M4(6.239e-03, 1.669e-01, -1.077e-01, 1.890e-01, 2.274e-01, 6.625e-03, 2.943e-03, 6.447e-02, 2.389e-02, -4.926e-02, -5.119e-02, -6.227e-02, 7.541e-02, 2.031e-02, 1.013e-01, -9.943e-02), r);\n\tr = MulAdd(s4_2, M4(4.436e-02, -2.437e-01, 1.763e-01, -5.477e-02, 7.136e-02, 4.379e-02, 6.421e-02, -2.688e-02, -6.556e-04, 1.186e-01, 2.484e-02, 9.693e-02, -7.738e-02, -6.154e-02, -1.354e-02, -9.314e-03), r);\n\tr = MulAdd(s4_3, M4(-9.485e-02, 1.547e-01, -2.700e-02, -3.183e-01, -4.993e-02, -1.461e-01, 7.904e-02, -5.630e-02, -4.300e-02, 8.780e-02, -7.001e-02, -5.912e-02, 1.305e-01, 4.421e-02, 1.705e-02, -5.380e-02), r);\n\tr = MulAdd(s4_4, M4(9.836e-03, -8.879e-02, -6.089e-02, -2.735e-01, -9.374e-02, -3.482e-02, 1.593e-01, 1.053e-01, -1.949e-02, -9.097e-03, -1.308e-02, 6.561e-02, -2.487e-03, -7.772e-02, 4.211e-02, 6.781e-02), r);\n\tr = MulAdd(s4_5, M4(-1.164e-01, 1.692e-01, -1.707e-01, 2.116e-01, 4.292e-02, -1.785e-02, -3.180e-03, 1.698e-02, -3.298e-02, 9.171e-02, 1.148e-02, -2.111e-03, -2.830e-02, -4.993e-02, 6.376e-02, 6.920e-02), r);\n\tr = MulAdd(s4_6, M4(-1.619e-01, -1.771e-01, 6.520e-02, -7.375e-02, 9.529e-02, -1.258e-01, -1.184e-01, 8.212e-02, 2.637e-02, -1.539e-01, 5.094e-02, -1.113e-01, 5.879e-02, -8.586e-02, 3.324e-02, 8.466e-02), r);\n\tr = MulAdd(s4_7, M4(3.179e-03, -7.854e-02, -8.955e-02, 7.403e-02, -9.935e-02, -2.673e-02, -7.363e-02, -3.045e-03, -2.528e-02, -1.061e-01, -3.504e-02, 4.410e-02, -4.636e-02, 7.533e-02, -1.717e-02, 1.112e-01), r);\n\tr = MulAdd(s4_8, M4(2.715e-02, -6.483e-03, -1.431e-01, 2.788e-01, -2.372e-02, 2.763e-02, 1.733e-02, -1.354e-01, 5.190e-02, 3.126e-02, -3.235e-02, 3.248e-02, 2.591e-02, 1.613e-02, -1.572e-03, -4.472e-02), r);\n\tr = MulAdd(s5_0, M4(4.632e-03, 1.782e-01, -5.608e-02, 6.302e-03, -7.340e-02, -7.737e-03, -9.241e-02, 4.781e-02, -1.791e-01, 2.817e-02, 9.707e-02, -6.090e-02, -2.927e-01, 1.862e-01, -2.333e-01, 1.628e-01), r);\n\tr = MulAdd(s5_1, M4(-6.151e-02, -2.405e-02, -4.087e-02, -1.285e-01, -7.012e-02, 2.614e-01, 4.987e-02, -4.459e-02, -2.275e-02, 7.123e-02, 9.935e-02, 3.843e-02, 1.603e-01, -1.680e-01, 3.095e-03, -1.928e-01), r);\n\tr = MulAdd(s5_2, M4(6.417e-02, 1.484e-01, 1.279e-01, -1.789e-01, -3.257e-01, -7.609e-02, -1.704e-02, -3.876e-01, -3.879e-02, 1.197e-01, -1.642e-01, 2.962e-03, 2.338e-01, -1.852e-01, 6.983e-02, -1.616e-01), r);\n\tr = MulAdd(s5_3, M4(-1.193e-01, 3.477e-02, -4.285e-02, 2.139e-02, 6.788e-02, 2.079e-02, -5.760e-02, 3.218e-02, -1.667e-01, -2.546e-01, -1.955e-01, 7.686e-02, 2.924e-03, 1.215e-01, 8.917e-02, 1.097e-01), r);\n\tr = MulAdd(s5_4, M4(8.016e-02, 1.009e-01, 5.233e-02, -3.305e-02, 3.103e-02, 2.751e-01, 2.513e-01, 1.388e-01, 2.166e-01, -3.219e-01, 7.068e-02, 4.566e-02, -9.380e-02, 5.389e-02, -1.850e-01, 1.512e-01), r);\n\tr = MulAdd(s5_5, M4(-8.857e-02, -2.837e-03, -7.693e-02, -9.155e-03, 2.678e-01, 1.357e-01, 4.491e-01, 2.434e-01, 1.613e-01, -1.161e-01, -6.304e-02, 1.556e-01, -2.363e-02, -2.454e-02, 3.906e-04, 4.633e-02), r);\n\tr = MulAdd(s5_6, M4(2.677e-03, -3.706e-03, 9.228e-02, 9.541e-03, -4.820e-02, -7.482e-02, -1.183e-03, -1.958e-01, -1.223e-02, 7.255e-02, 1.093e-01, -1.465e-01, 1.202e-01, 1.210e-01, 4.326e-02, 1.447e-01), r);\n\tr = MulAdd(s5_7, M4(-5.090e-02, 2.420e-02, -7.492e-02, 1.324e-01, 7.820e-02, 5.833e-02, -6.090e-02, -3.127e-01, -1.220e-01, -1.101e-03, -1.968e-01, 2.021e-01, -4.462e-02, 1.252e-02, 7.164e-02, 5.059e-02), r);\n\tr = MulAdd(s5_8, M4(4.707e-02, -3.480e-02, 7.551e-03, -1.208e-01, -5.298e-01, -1.951e-01, -7.116e-01, 1.388e-01, -2.367e-01, 1.583e-02, 4.278e-02, -1.337e-01, 7.089e-02, -7.687e-02, -8.515e-02, 7.922e-02), r);\n\tr = MulAdd(s6_0, M4(-9.214e-02, 7.529e-03, -6.248e-02, 2.070e-01, 7.201e-02, 8.504e-03, 5.225e-02, -4.419e-03, -9.270e-02, 4.535e-02, 9.824e-03, 9.299e-02, -1.235e-01, 1.056e-02, -1.423e-01, 3.974e-02), r);\n\tr = MulAdd(s6_1, M4(-4.171e-02, -1.087e-01, 1.045e-02, 1.400e-01, -1.984e-01, -6.324e-02, 7.945e-02, -2.961e-02, -6.015e-02, 6.839e-02, -1.243e-01, 1.203e-02, -8.761e-02, 1.410e-01, -4.083e-03, 3.386e-02), r);\n\tr = MulAdd(s6_2, M4(-4.386e-03, 3.460e-02, 1.422e-01, 4.385e-03, -1.620e-01, 1.497e-01, -4.923e-02, -9.036e-02, -2.182e-01, 1.379e-01, 6.954e-02, -3.739e-01, 3.684e-01, 1.336e-01, 5.649e-02, 7.316e-02), r);\n\tr = MulAdd(s6_3, M4(1.649e-01, -5.692e-02, 4.225e-02, 1.613e-01, -2.164e-01, -8.842e-02, -2.972e-03, -3.522e-01, -1.062e-01, 7.149e-02, 3.555e-02, 2.059e-01, -3.451e-02, -7.517e-02, 6.511e-02, 4.864e-02), r);\n\tr = MulAdd(s6_4, M4(-1.413e-01, -4.342e-02, -3.003e-02, -2.848e-02, -1.319e-02, 5.676e-02, 1.667e-03, -1.223e-01, 1.484e-02, -1.597e-01, -6.809e-02, -2.543e-01, 3.355e-01, -1.252e-01, -5.322e-02, 1.983e-02), r);\n\tr = MulAdd(s6_5, M4(1.219e-02, -5.971e-02, 5.168e-02, -1.013e-01, -9.651e-02, 4.657e-02, -1.561e-01, 2.110e-01, -9.167e-02, 8.247e-02, -1.410e-01, 1.799e-02, -1.964e-02, -2.807e-01, 2.726e-01, -2.514e-01), r);\n\tr = MulAdd(s6_6, M4(4.917e-02, -1.633e-02, -5.837e-02, 6.642e-02, -5.624e-02, 1.192e-01, 4.469e-02, 1.458e-02, -5.512e-02, 1.182e-01, -1.312e-02, 4.652e-02, 3.621e-01, -4.627e-02, 1.101e-01, -2.360e-02), r);\n\tr = MulAdd(s6_7, M4(3.303e-02, 2.066e-01, -1.654e-02, -1.911e-01, -8.888e-03, 1.789e-02, -1.533e-01, 1.223e-01, -1.661e-01, -1.740e-01, 1.145e-01, -1.386e-01, -5.269e-02, -4.546e-02, 7.470e-02, -2.027e-01), r);\n\tr = MulAdd(s6_8, M4(2.025e-02, -1.004e-02, 3.841e-02, 7.722e-02, 7.963e-02, -1.474e-01, -3.591e-02, 1.618e-01, -4.981e-02, 4.029e-02, -5.320e-02, -1.589e-01, -2.171e-01, -8.416e-03, -1.029e-01, -1.187e-01), r);\n\tr = MulAdd(s7_0, M4(2.325e-01, -8.288e-02, 1.457e-01, -4.569e-02, 9.574e-02, -1.053e-01, 9.755e-02, 6.378e-02, 3.830e-03, -1.469e-01, -9.631e-02, 5.755e-02, -5.083e-02, -5.378e-02, -3.056e-02, -2.397e-02), r);\n\tr = MulAdd(s7_1, M4(-2.248e-01, -8.623e-02, 2.123e-02, -1.490e-01, -8.108e-03, 6.108e-02, 1.224e-02, 1.078e-02, -5.741e-02, -7.249e-02, 6.195e-02, -8.693e-02, -9.347e-02, 1.273e-02, 5.736e-02, 5.040e-02), r);\n\tr = MulAdd(s7_2, M4(1.596e-01, 8.328e-02, -2.612e-01, -8.180e-02, -3.636e-02, 2.406e-03, 5.303e-02, -3.305e-02, -1.257e-01, -8.973e-02, 4.427e-02, 5.241e-03, 1.629e-01, 4.851e-02, 6.754e-03, 3.417e-02), r);\n\tr = MulAdd(s7_3, M4(2.611e-01, -2.005e-01, -8.642e-02, 5.382e-02, -8.290e-03, 2.400e-02, 1.224e-02, -5.875e-02, -1.908e-02, 6.390e-02, -6.675e-02, -8.961e-02, 5.823e-02, -1.251e-01, 2.823e-02, 7.424e-02), r);\n\tr = MulAdd(s7_4, M4(-1.325e-01, -9.612e-03, -8.170e-02, -3.149e-02, -5.403e-02, -1.366e-01, 1.227e-01, 3.794e-02, 1.192e-02, -4.303e-02, 1.750e-01, -8.316e-02, -1.106e-02, -4.174e-02, -3.208e-02, 1.970e-01), r);\n\tr = MulAdd(s7_5, M4(3.196e-02, 1.542e-02, 8.516e-03, -6.807e-02, -1.445e-02, 7.338e-02, 2.065e-02, 9.911e-03, -1.440e-02, 1.396e-02, -4.628e-02, -5.420e-02, 5.802e-02, 7.582e-02, 1.022e-01, -4.560e-02), r);\n\tr = MulAdd(s7_6, M4(-5.374e-02, -1.868e-02, -2.215e-02, 1.477e-04, 7.862e-02, 1.092e-01, -1.139e-02, -1.158e-02, -7.233e-02, 2.963e-02, -4.970e-02, -8.032e-02, -3.154e-02, 2.469e-03, 1.429e-02, -3.882e-03), r);\n\tr = MulAdd(s7_7, M4(8.257e-03, -1.201e-01, -6.238e-02, 7.351e-02, 1.150e-02, 1.626e-01, -9.431e-02, 5.197e-02, -2.246e-02, 2.016e-01, 2.822e-02, 1.362e-01, -9.953e-03, -3.172e-02, -9.940e-04, -1.536e-01), r);\n\tr = MulAdd(s7_8, M4(1.146e-01, 1.110e-01, -5.326e-02, 2.054e-01, -1.047e-01, 6.589e-02, -2.937e-02, -1.905e-02, 3.019e-02, 7.729e-02, -1.218e-03, 6.997e-02, -1.298e-01, -1.623e-02, -5.119e-02, 6.137e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.286e-02, 5.771e-03, -2.598e-02, -1.940e-03 };\n\tr = MulAdd(s0_0, M4(9.776e-03, 1.133e-02, -3.355e-02, -1.531e-01, -6.215e-02, 7.207e-02, -2.910e-02, -7.251e-02, 7.522e-02, -3.966e-02, 2.699e-02, 7.452e-02, -4.976e-02, 1.731e-01, -1.035e-01, 9.129e-02), r);\n\tr = MulAdd(s0_1, M4(-1.396e-01, 1.442e-01, -1.480e-01, -9.944e-02, 5.011e-02, 7.390e-02, -8.576e-02, -9.798e-03, -6.092e-02, -3.941e-02, 1.679e-02, -7.403e-02, -5.263e-03, 6.009e-02, 7.368e-02, 1.100e-01), r);\n\tr = MulAdd(s0_2, M4(1.877e-02, 1.486e-01, -9.979e-02, 1.587e-01, 4.095e-02, 3.952e-02, -2.612e-02, 3.233e-02, 1.062e-01, -1.490e-01, 8.490e-02, -1.303e-01, 1.267e-01, -3.028e-01, 8.821e-02, 2.048e-03), r);\n\tr = MulAdd(s0_3, M4(1.393e-02, -3.075e-02, 1.460e-01, -4.840e-02, -8.010e-02, 3.560e-02, 3.412e-02, -4.544e-02, 3.805e-02, -3.483e-02, 1.444e-01, -2.263e-02, 6.338e-02, -1.065e-01, 1.063e-01, -3.890e-02), r);\n\tr = MulAdd(s0_4, M4(4.691e-02, 2.480e-02, 1.178e-01, -8.325e-02, 1.123e-02, 4.891e-02, -5.960e-02, -2.912e-02, 4.684e-02, 2.167e-01, 2.077e-01, 9.285e-02, 5.381e-03, -5.640e-02, -2.302e-01, -4.384e-02), r);\n\tr = MulAdd(s0_5, M4(1.248e-01, -5.576e-04, 2.938e-02, 7.179e-02, -6.587e-02, 1.190e-01, 4.798e-02, -4.063e-02, -2.519e-02, 1.964e-01, 8.330e-02, -4.101e-02, -1.757e-01, 1.975e-02, 8.995e-02, -2.210e-03), r);\n\tr = MulAdd(s0_6, M4(-9.828e-02, -7.343e-02, 9.764e-02, -2.942e-02, -3.018e-02, -1.102e-01, -1.853e-01, -1.000e-01, 6.522e-02, 4.472e-02, 1.528e-01, -8.913e-02, -1.660e-01, -5.624e-02, -3.116e-01, 3.415e-02), r);\n\tr = MulAdd(s0_7, M4(-6.710e-02, -2.627e-02, -3.502e-02, 1.176e-01, 3.238e-01, -1.860e-01, -1.790e-01, 4.971e-02, -3.690e-02, 3.052e-02, 5.722e-02, -2.977e-02, -7.715e-02, -1.292e-01, -2.234e-01, 1.173e-01), r);\n\tr = MulAdd(s0_8, M4(7.600e-02, -2.084e-02, 2.253e-02, 6.215e-02, -8.462e-02, 1.150e-01, 3.212e-02, -7.986e-03, -8.954e-03, 1.414e-01, 1.038e-01, -8.033e-02, -2.475e-01, 2.992e-04, -1.844e-02, -7.008e-02), r);\n\tr = MulAdd(s1_0, M4(2.073e-01, 4.388e-02, -2.668e-01, -9.685e-02, -2.238e-02, 1.252e-01, 1.399e-01, 8.699e-02, 2.333e-02, 3.715e-02, -3.618e-02, 9.009e-02, 1.044e-01, -9.673e-02, -3.876e-02, 7.851e-03), r);\n\tr = MulAdd(s1_1, M4(-7.281e-02, -4.151e-02, -2.723e-02, -8.388e-02, 5.295e-03, 2.041e-02, -6.911e-02, 8.872e-02, -1.674e-02, -6.488e-03, -1.469e-02, -9.139e-02, 1.281e-02, -3.248e-02, 1.431e-02, 1.847e-02), r);\n\tr = MulAdd(s1_2, M4(1.544e-02, -1.046e-01, -1.693e-01, -1.224e-01, 5.646e-02, -2.360e-02, -2.544e-02, 3.755e-02, 4.592e-02, 3.989e-02, 7.647e-02, 1.185e-02, -5.048e-02, 1.897e-01, -2.199e-02, -4.915e-02), r);\n\tr = MulAdd(s1_3, M4(6.552e-02, 4.922e-03, -1.820e-01, -2.364e-02, -1.075e-01, 2.728e-02, -1.005e-01, 7.385e-02, -4.606e-02, 4.673e-02, 1.874e-03, 5.370e-02, -8.265e-03, 1.487e-02, -6.224e-02, -4.375e-02), r);\n\tr = MulAdd(s1_4, M4(-5.894e-02, -1.075e-01, -6.922e-02, -6.830e-03, -9.902e-02, -1.249e-01, -6.997e-02, 1.181e-03, -3.054e-04, -8.467e-02, 5.810e-02, 6.620e-02, 1.048e-01, -3.457e-02, 6.104e-03, -1.209e-01), r);\n\tr = MulAdd(s1_5, M4(6.688e-02, -2.488e-02, -7.699e-02, -1.275e-01, 2.364e-02, 1.505e-01, 1.489e-01, -5.790e-02, 1.957e-01, -1.594e-01, -1.788e-01, 4.084e-02, -7.009e-02, 6.747e-02, -8.610e-02, -6.766e-02), r);\n\tr = MulAdd(s1_6, M4(2.521e-01, 4.219e-02, 4.813e-02, -4.289e-02, 1.826e-01, 9.599e-02, 6.430e-02, -4.017e-02, -1.407e-02, -3.707e-02, -9.009e-02, 2.826e-02, 1.050e-01, 7.109e-02, -4.801e-02, 2.410e-02), r);\n\tr = MulAdd(s1_7, M4(-1.602e-01, 1.661e-01, 4.057e-02, -2.172e-02, 7.024e-02, 4.228e-02, 2.632e-01, -7.107e-02, -8.244e-02, 2.700e-02, -1.450e-01, 7.160e-02, 1.951e-01, -2.251e-01, 3.322e-02, 4.582e-03), r);\n\tr = MulAdd(s1_8, M4(-1.262e-01, 1.854e-03, 1.178e-01, -1.497e-01, 1.528e-01, -2.994e-02, 2.364e-02, 9.387e-02, 7.943e-02, -1.429e-01, -7.044e-02, 3.041e-02, -7.487e-02, 5.990e-02, -5.066e-02, -2.487e-02), r);\n\tr = MulAdd(s2_0, M4(-5.076e-02, 1.631e-01, -6.869e-02, 1.424e-02, 3.466e-02, -7.814e-02, 1.173e-01, -1.744e-01, 4.356e-02, 7.307e-02, 6.131e-02, 8.219e-02, -3.229e-02, 1.386e-03, 3.682e-02, -2.855e-02), r);\n\tr = MulAdd(s2_1, M4(-1.844e-01, -2.906e-02, 1.676e-01, -6.373e-02, -9.257e-02, -3.190e-01, -2.114e-01, -4.582e-02, 2.055e-01, 8.519e-02, 1.576e-01, 2.338e-01, 4.294e-02, -3.009e-02, -9.665e-02, 1.986e-01), r);\n\tr = MulAdd(s2_2, M4(-1.547e-01, -2.221e-01, -2.853e-02, -1.768e-03, 5.880e-02, 1.788e-02, 1.798e-01, -1.395e-01, -4.826e-02, 2.575e-01, -3.729e-02, 1.299e-01, 8.164e-02, -7.465e-03, -6.420e-02, -8.713e-02), r);\n\tr = MulAdd(s2_3, M4(-5.749e-03, 1.248e-01, -9.157e-02, 5.040e-02, -3.994e-02, 1.028e-02, -5.703e-02, 8.672e-04, 6.620e-02, -1.704e-01, 6.747e-02, -9.601e-04, 4.844e-02, 1.800e-02, -3.440e-02, -4.046e-02), r);\n\tr = MulAdd(s2_4, M4(1.493e-01, 2.121e-01, 1.150e-01, 1.215e-01, -3.332e-02, 7.949e-02, 2.340e-02, 1.034e-01, 1.920e-01, -1.273e-02, -2.382e-01, -6.905e-02, -1.858e-01, 1.172e-02, -6.687e-03, -9.036e-02), r);\n\tr = MulAdd(s2_5, M4(2.826e-02, -2.022e-02, 4.561e-03, 5.506e-02, 2.404e-01, -5.027e-02, -2.026e-02, 1.156e-01, 2.665e-01, 5.267e-02, -9.174e-02, -3.432e-02, -4.251e-02, -4.464e-02, -1.960e-02, 5.370e-02), r);\n\tr = MulAdd(s2_6, M4(1.694e-01, 6.852e-03, -5.605e-02, 1.458e-01, -1.626e-01, -1.851e-03, -1.486e-01, 3.850e-02, -1.147e-01, -3.283e-02, 1.666e-01, -4.694e-02, 5.731e-03, -2.958e-02, -3.499e-02, 7.312e-02), r);\n\tr = MulAdd(s2_7, M4(-1.078e-01, 2.190e-01, -1.589e-01, -5.892e-02, -2.788e-01, 5.833e-02, 1.172e-01, -1.219e-02, 1.304e-02, -2.758e-02, -5.106e-02, 1.364e-01, -1.217e-01, 1.659e-01, 3.810e-02, -6.095e-03), r);\n\tr = MulAdd(s2_8, M4(1.371e-01, 1.274e-01, 3.390e-02, -7.796e-02, -1.237e-01, -1.328e-01, 1.829e-01, -4.622e-02, 9.045e-03, 7.476e-04, 8.001e-02, 7.130e-03, -1.655e-03, 7.937e-03, 1.888e-01, -2.302e-02), r);\n\tr = MulAdd(s3_0, M4(1.458e-02, -5.959e-02, 1.004e-01, 4.872e-02, -4.672e-02, -1.137e-03, -1.197e-02, 3.033e-03, -7.688e-02, 1.447e-01, -7.802e-02, -1.378e-01, -8.679e-02, -1.352e-01, -6.163e-03, -2.407e-02), r);\n\tr = MulAdd(s3_1, M4(8.416e-03, -5.473e-02, -1.909e-02, -1.767e-03, -2.313e-02, 8.180e-02, -9.585e-02, 3.619e-02, 2.346e-02, 1.528e-01, -7.843e-02, 4.169e-02, -4.233e-02, 7.463e-02, 8.223e-02, 2.546e-01), r);\n\tr = MulAdd(s3_2, M4(-1.631e-02, 5.895e-02, -1.996e-02, -2.241e-02, -6.741e-02, 5.341e-02, -8.862e-02, 1.549e-02, -7.137e-02, -1.477e-01, 1.356e-01, -1.492e-01, 7.808e-02, 7.700e-02, 5.673e-02, -2.241e-01), r);\n\tr = MulAdd(s3_3, M4(-4.562e-02, -4.127e-02, -1.699e-02, -1.378e-01, -2.514e-02, 3.447e-02, -1.057e-01, -5.026e-02, -3.746e-02, 4.040e-02, -8.313e-02, 3.113e-02, 1.021e-01, 1.583e-02, -2.427e-02, -8.659e-02), r);\n\tr = MulAdd(s3_4, M4(1.637e-01, -7.124e-02, -6.697e-03, 5.279e-02, 8.765e-02, 1.006e-01, 1.053e-01, 5.971e-02, -8.269e-02, -7.273e-02, 3.931e-02, -5.453e-02, -1.746e-01, 1.707e-01, -1.048e-01, -1.554e-01), r);\n\tr = MulAdd(s3_5, M4(-5.668e-02, 1.609e-02, 3.673e-02, -1.317e-01, -5.147e-02, -8.183e-02, -8.940e-03, 2.933e-02, 5.024e-02, -9.863e-02, 1.304e-01, -1.980e-02, -2.414e-01, 1.176e-02, 5.452e-03, -4.053e-02), r);\n\tr = MulAdd(s3_6, M4(3.254e-02, -1.210e-01, -1.227e-01, 1.183e-02, -2.902e-02, 1.240e-02, 4.859e-02, 7.308e-02, 4.321e-02, -4.560e-02, -1.068e-01, -2.553e-02, 7.134e-02, 8.717e-03, 1.321e-02, 2.268e-02), r);\n\tr = MulAdd(s3_7, M4(-1.497e-01, 6.714e-02, -5.428e-02, -2.406e-02, 4.013e-02, 8.743e-02, 6.129e-02, -1.235e-01, -1.228e-01, 1.277e-02, -1.850e-02, 8.048e-02, -4.311e-02, 2.646e-01, 9.466e-02, -1.634e-02), r);\n\tr = MulAdd(s3_8, M4(5.882e-02, 2.052e-02, 4.387e-02, -1.041e-01, -5.720e-02, -1.479e-01, 2.832e-02, -2.621e-02, 3.333e-02, -1.262e-02, -1.641e-01, 5.123e-02, -1.047e-01, 2.765e-01, 4.264e-03, -2.939e-02), r);\n\tr = MulAdd(s4_0, M4(1.501e-01, 2.633e-02, 9.344e-02, 1.136e-02, 2.741e-02, 4.448e-03, -9.019e-02, 1.810e-02, -2.366e-02, 5.233e-03, 1.797e-02, -2.754e-02, 7.400e-02, -1.927e-03, -6.300e-02, 3.018e-02), r);\n\tr = MulAdd(s4_1, M4(6.356e-02, 3.185e-02, 3.746e-02, 1.777e-02, -1.896e-02, 2.099e-02, -7.546e-02, -5.559e-02, 6.748e-03, 2.509e-02, -7.122e-02, -1.022e-01, 6.756e-02, -4.133e-02, -9.943e-02, 7.718e-02), r);\n\tr = MulAdd(s4_2, M4(2.397e-01, -2.176e-01, 2.273e-01, -1.299e-02, -3.828e-02, -2.349e-02, -8.658e-02, 4.308e-02, -1.366e-02, -4.806e-02, 6.817e-02, 1.123e-01, -5.003e-02, -9.895e-02, -4.029e-02, -2.023e-01), r);\n\tr = MulAdd(s4_3, M4(2.090e-01, 8.440e-02, -1.067e-01, -1.367e-01, 8.654e-03, -1.849e-02, 2.142e-02, -2.211e-02, -1.145e-01, -6.497e-02, 3.199e-02, 5.907e-02, -1.756e-02, 9.862e-02, -7.888e-03, -5.537e-02), r);\n\tr = MulAdd(s4_4, M4(1.236e-01, -6.157e-02, 1.013e-01, -2.011e-01, -2.019e-02, -9.063e-02, -2.651e-02, -1.942e-01, 2.906e-02, -6.897e-04, -6.750e-02, -1.401e-01, 1.443e-02, 2.090e-02, 9.017e-03, 2.131e-03), r);\n\tr = MulAdd(s4_5, M4(-9.932e-02, 4.428e-01, 5.511e-02, 1.661e-01, 2.183e-02, -1.299e-03, 1.319e-01, 1.633e-01, -3.275e-02, -7.492e-02, 1.048e-03, 5.778e-02, -1.204e-02, -8.126e-03, -9.239e-02, -3.791e-02), r);\n\tr = MulAdd(s4_6, M4(3.221e-01, -1.157e-01, -6.856e-02, 3.304e-02, -8.065e-02, -3.694e-04, -1.317e-01, -2.974e-02, -7.071e-02, -1.253e-02, -9.960e-02, 1.396e-01, -1.033e-01, -5.537e-03, 1.319e-01, 1.306e-01), r);\n\tr = MulAdd(s4_7, M4(5.416e-02, -1.607e-01, -3.796e-02, -2.196e-01, 7.504e-03, 1.137e-01, 8.092e-02, 4.933e-02, -1.354e-01, 2.499e-02, 7.708e-03, 3.970e-02, 7.704e-02, 1.006e-01, -7.237e-02, 8.995e-02), r);\n\tr = MulAdd(s4_8, M4(9.289e-02, 3.223e-01, 1.134e-01, -3.694e-03, 2.888e-02, -1.124e-01, 2.244e-01, -5.135e-02, -7.507e-02, 6.290e-02, -2.024e-01, -8.959e-02, -1.329e-02, 6.541e-03, 3.294e-03, -6.241e-02), r);\n\tr = MulAdd(s5_0, M4(-4.517e-02, 1.235e-01, 5.442e-03, 1.839e-02, -1.477e-02, 1.191e-02, 1.370e-01, -7.028e-02, 6.019e-02, 3.786e-02, -1.040e-01, -5.986e-02, -6.938e-02, 9.119e-03, 2.456e-01, -1.818e-01), r);\n\tr = MulAdd(s5_1, M4(-1.001e-01, 1.577e-01, 1.060e-02, 3.452e-02, 7.981e-02, 1.807e-01, -1.247e-02, 1.419e-01, 2.852e-02, -2.555e-01, 8.737e-02, -2.522e-02, -1.450e-01, -7.592e-02, -7.450e-02, 1.140e-01), r);\n\tr = MulAdd(s5_2, M4(1.068e-01, -8.475e-02, 3.917e-02, 7.297e-02, 2.496e-03, 3.705e-01, -7.435e-02, 1.772e-01, 3.024e-02, -3.389e-01, 2.800e-01, 4.755e-02, 8.825e-02, -1.821e-01, 6.686e-02, 2.805e-01), r);\n\tr = MulAdd(s5_3, M4(-1.572e-01, 2.899e-02, 1.777e-02, -1.451e-02, 6.746e-02, 5.148e-02, -8.362e-02, 3.644e-03, -9.239e-02, -2.605e-01, -2.584e-01, -1.230e-01, -9.658e-02, 6.736e-02, -1.154e-01, -2.769e-03), r);\n\tr = MulAdd(s5_4, M4(1.405e-01, 8.583e-02, -5.553e-02, -4.588e-02, -3.077e-01, -9.568e-02, -8.990e-02, 1.626e-01, 3.272e-01, -1.636e-01, -3.025e-01, 4.880e-02, 1.392e-01, -2.253e-02, -1.375e-01, 1.687e-02), r);\n\tr = MulAdd(s5_5, M4(3.336e-03, -1.191e-01, 1.268e-01, 9.806e-03, 9.515e-03, -4.439e-03, -1.028e-01, -3.148e-01, 4.599e-01, -1.263e-01, 2.576e-01, -2.934e-01, 1.677e-01, 3.158e-02, 2.495e-01, 1.056e-01), r);\n\tr = MulAdd(s5_6, M4(2.726e-03, -1.399e-01, 6.948e-02, -5.882e-02, -1.246e-01, 2.279e-02, -1.248e-02, 1.166e-01, 4.558e-01, 1.242e-01, 1.545e-01, 2.175e-02, -1.811e-01, 1.832e-01, 4.592e-02, 6.989e-04), r);\n\tr = MulAdd(s5_7, M4(3.254e-03, 1.120e-01, 1.067e-01, -1.189e-01, 3.137e-01, -3.508e-02, -3.266e-01, 2.504e-01, -5.192e-02, -3.085e-01, 3.621e-01, -4.971e-01, -5.263e-02, -1.859e-01, 2.221e-02, 1.537e-01), r);\n\tr = MulAdd(s5_8, M4(4.073e-02, -2.734e-02, -1.628e-02, 3.140e-02, 2.658e-01, -7.154e-01, -6.487e-01, -8.120e-03, 9.670e-02, 8.390e-02, -2.580e-02, -1.697e-01, -1.257e-01, 7.393e-03, 4.072e-02, -1.198e-01), r);\n\tr = MulAdd(s6_0, M4(-2.325e-02, -1.803e-02, 1.682e-02, -1.560e-02, 1.823e-01, -4.043e-01, -4.110e-02, 1.549e-02, -1.683e-01, 9.149e-02, -2.927e-01, 1.546e-02, -2.405e-01, 7.029e-02, 2.755e-02, 5.652e-02), r);\n\tr = MulAdd(s6_1, M4(9.453e-02, -1.540e-01, -5.654e-02, 3.796e-02, -2.715e-02, 1.640e-02, -2.742e-01, -2.748e-02, 1.565e-01, 2.170e-01, 5.316e-02, 2.978e-02, 2.052e-02, 5.915e-02, -1.925e-01, 4.712e-02), r);\n\tr = MulAdd(s6_2, M4(7.061e-02, 6.826e-02, 1.215e-02, 1.393e-01, -4.831e-02, 1.440e-01, -8.814e-02, 6.905e-03, 3.821e-02, 7.138e-02, -8.313e-02, 1.865e-01, -7.926e-02, -2.579e-02, 4.882e-03, 7.233e-02), r);\n\tr = MulAdd(s6_3, M4(8.800e-02, 8.067e-02, -9.297e-03, 4.975e-02, 6.075e-02, -5.985e-02, -6.378e-02, 2.492e-02, 2.305e-01, -8.931e-02, -1.370e-02, 2.229e-01, 1.409e-03, -1.928e-01, 6.843e-02, 9.708e-02), r);\n\tr = MulAdd(s6_4, M4(-7.920e-02, -6.951e-03, 3.889e-02, 2.709e-02, 3.035e-03, -1.535e-01, 1.865e-01, -8.006e-02, -3.663e-01, -4.063e-03, 1.480e-01, 8.084e-02, 2.003e-01, -3.478e-01, 7.709e-02, 1.318e-01), r);\n\tr = MulAdd(s6_5, M4(-4.351e-02, -4.782e-02, 1.095e-01, 9.693e-03, 1.025e-02, -2.202e-01, 3.284e-01, 7.600e-02, -3.967e-01, 1.752e-01, 2.691e-02, -1.441e-01, 6.026e-02, 1.437e-02, -3.212e-01, 1.947e-01), r);\n\tr = MulAdd(s6_6, M4(-1.174e-01, -6.388e-02, -4.659e-02, 1.936e-03, -1.898e-01, -2.308e-02, 5.991e-02, -2.405e-02, 4.370e-01, 4.343e-02, 1.119e-01, -1.649e-01, -2.892e-02, 9.907e-02, -5.520e-03, 3.411e-02), r);\n\tr = MulAdd(s6_7, M4(-8.114e-02, -5.151e-02, -7.774e-02, -1.555e-01, -1.185e-01, -1.694e-01, 1.159e-01, -8.749e-02, -6.711e-02, 1.719e-01, 1.898e-02, -6.603e-02, -1.325e-02, -2.651e-01, -1.550e-01, 1.727e-01), r);\n\tr = MulAdd(s6_8, M4(-1.288e-02, 9.244e-02, 6.123e-02, -5.099e-02, -2.744e-01, -2.457e-02, -4.723e-02, -1.700e-02, -2.435e-01, 1.399e-01, -9.896e-02, -1.818e-01, 1.429e-01, -4.617e-02, -1.876e-01, 1.280e-01), r);\n\tr = MulAdd(s7_0, M4(-5.099e-03, 3.039e-01, -2.557e-01, 3.141e-01, 1.227e-01, -6.618e-02, 3.876e-02, -9.571e-04, 8.463e-02, -1.155e-02, 2.623e-03, 4.686e-02, -1.301e-01, 2.507e-02, -4.847e-02, -8.853e-02), r);\n\tr = MulAdd(s7_1, M4(-6.691e-02, 1.228e-02, 1.907e-01, -2.765e-01, -2.665e-02, 2.057e-02, -1.354e-02, 1.639e-01, 1.116e-01, -3.604e-02, 9.093e-02, -2.966e-02, 1.148e-01, 1.590e-01, 9.577e-02, 1.755e-02), r);\n\tr = MulAdd(s7_2, M4(6.837e-02, 4.151e-02, 7.356e-02, 9.749e-02, -1.206e-01, 5.819e-02, 4.687e-02, 4.458e-02, 3.543e-02, -5.109e-02, -9.728e-02, -6.498e-03, 1.709e-02, -1.455e-01, -3.758e-02, -7.217e-02), r);\n\tr = MulAdd(s7_3, M4(6.112e-02, 8.671e-02, -5.929e-02, 1.550e-02, -1.377e-01, 1.549e-01, 1.891e-02, 1.595e-02, -1.383e-01, 1.029e-02, -1.557e-01, 1.254e-02, -2.617e-02, 4.528e-02, -2.293e-03, -3.976e-02), r);\n\tr = MulAdd(s7_4, M4(-3.063e-01, -1.625e-01, 5.306e-02, 2.149e-01, 1.103e-01, -6.293e-02, 4.295e-03, -1.463e-01, -4.290e-02, -1.037e-01, -9.071e-03, 2.655e-02, 1.242e-02, 1.285e-01, 1.310e-01, 4.781e-02), r);\n\tr = MulAdd(s7_5, M4(-1.194e-01, 5.512e-02, 9.580e-02, -8.311e-02, 1.029e-01, -2.544e-01, -4.095e-02, -1.304e-01, -6.057e-02, -3.751e-03, 1.997e-02, -7.348e-02, -3.760e-02, -6.867e-02, 3.274e-02, -3.654e-02), r);\n\tr = MulAdd(s7_6, M4(3.135e-02, -4.777e-02, 7.366e-03, 6.426e-02, -7.916e-02, 4.317e-03, -7.686e-02, 7.508e-02, 5.427e-02, 2.379e-02, -7.021e-04, -2.270e-02, -6.493e-02, 9.292e-02, 1.616e-01, 1.064e-01), r);\n\tr = MulAdd(s7_7, M4(3.473e-02, -4.689e-02, 3.023e-02, -2.066e-02, 3.786e-02, -9.247e-02, -1.944e-02, 2.745e-02, 1.188e-01, 2.311e-02, 3.494e-02, -9.034e-02, 5.060e-02, -5.944e-02, -3.373e-03, 2.270e-02), r);\n\tr = MulAdd(s7_8, M4(2.340e-01, -2.407e-02, 1.864e-01, -1.941e-01, -4.516e-02, 9.371e-02, -2.157e-02, -3.420e-03, 9.046e-02, -4.400e-02, -1.742e-02, -7.749e-02, 1.728e-01, 4.933e-02, -3.722e-02, 3.021e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.868e-01, -7.070e-04, 1.093e-03, 1.982e-02 };\n\tr = MulAdd(s0_0, M4(6.007e-02, 8.815e-02, 8.787e-02, 6.673e-02, 4.531e-02, -1.136e-02, -6.746e-02, 8.082e-03, 6.723e-02, 6.495e-03, -3.572e-03, -8.810e-02, -2.639e-02, 5.251e-02, -3.715e-02, -1.949e-01), r);\n\tr = MulAdd(s0_1, M4(-5.738e-03, 9.408e-02, 6.908e-02, 7.054e-03, 9.352e-03, -2.742e-03, -3.428e-02, -1.319e-03, 1.029e-01, 2.080e-02, -2.673e-02, 2.034e-01, 7.456e-02, 7.538e-02, -2.518e-02, -1.477e-01), r);\n\tr = MulAdd(s0_2, M4(4.295e-02, 9.563e-02, 8.488e-02, 4.426e-02, -3.528e-02, 1.398e-01, 1.889e-02, 3.828e-02, -4.458e-02, -1.099e-01, -2.168e-01, 1.081e-01, -5.195e-02, 1.955e-02, -8.919e-02, -1.085e-01), r);\n\tr = MulAdd(s0_3, M4(-2.999e-02, -3.070e-02, 4.703e-02, 6.359e-02, -1.680e-01, 7.294e-02, -1.817e-03, -9.498e-02, -1.203e-01, 9.638e-02, 2.234e-02, 1.904e-01, -6.926e-02, 7.531e-03, 7.118e-02, -1.135e-01), r);\n\tr = MulAdd(s0_4, M4(-1.197e-01, 1.162e-01, -5.468e-02, -6.775e-02, -2.126e-03, 5.122e-02, 1.378e-01, 3.868e-02, -6.028e-02, -2.421e-02, -1.370e-02, 2.099e-01, 2.690e-02, 1.245e-01, -3.967e-02, 7.315e-02), r);\n\tr = MulAdd(s0_5, M4(-1.513e-01, 1.097e-02, 8.977e-02, 2.209e-02, -6.021e-02, -3.080e-02, -1.322e-01, -7.357e-02, -2.849e-02, 6.843e-02, 6.890e-02, -2.563e-02, -8.341e-02, 1.888e-01, 3.539e-02, 1.158e-01), r);\n\tr = MulAdd(s0_6, M4(6.849e-03, -6.993e-02, 2.321e-02, -1.048e-01, 8.459e-02, 4.537e-03, 8.299e-02, -2.428e-01, 1.755e-02, 5.857e-02, 2.179e-02, -1.344e-01, -9.762e-03, -3.408e-04, 1.007e-01, 2.005e-01), r);\n\tr = MulAdd(s0_7, M4(-2.394e-02, -3.589e-02, -2.741e-02, -9.901e-03, 1.151e-01, -8.218e-02, 5.715e-02, 2.303e-03, -7.653e-02, -2.701e-03, -1.149e-02, -2.013e-01, -3.567e-02, -6.143e-02, -1.063e-02, -2.110e-02), r);\n\tr = MulAdd(s0_8, M4(-1.736e-02, 5.056e-02, 3.740e-02, 9.058e-02, -9.973e-02, 3.741e-02, -6.764e-02, 3.525e-02, 1.265e-01, 3.735e-02, -1.814e-01, -1.235e-01, 4.104e-02, 1.338e-01, -1.512e-02, 1.449e-02), r);\n\tr = MulAdd(s1_0, M4(-7.408e-02, 4.688e-02, -2.960e-01, 1.677e-01, -3.196e-02, -2.403e-02, -5.473e-02, 5.301e-02, -7.272e-02, 1.548e-03, -6.738e-02, -7.785e-02, -6.000e-02, 5.336e-02, 4.060e-02, 1.319e-01), r);\n\tr = MulAdd(s1_1, M4(-1.255e-01, 5.550e-02, -2.639e-01, -1.696e-01, -1.958e-02, 5.529e-02, -1.100e-01, 9.454e-02, 9.261e-02, -7.395e-02, 5.238e-02, -2.436e-02, 5.194e-02, 7.147e-02, 9.864e-02, 6.991e-02), r);\n\tr = MulAdd(s1_2, M4(-1.810e-01, -5.793e-02, -5.093e-02, 8.727e-02, -7.876e-02, -9.299e-02, -6.713e-02, -2.632e-02, 1.340e-02, -4.129e-02, -1.086e-02, 7.617e-02, -1.054e-02, 9.318e-03, -1.402e-01, -3.486e-02), r);\n\tr = MulAdd(s1_3, M4(-3.670e-02, -5.741e-02, -4.090e-02, -9.587e-02, -7.562e-02, 1.266e-01, 1.659e-02, -6.550e-03, -2.260e-02, -1.221e-02, 3.792e-02, -1.947e-04, -1.043e-02, -1.396e-02, -1.095e-02, -2.223e-03), r);\n\tr = MulAdd(s1_4, M4(4.028e-02, 3.228e-02, -1.232e-02, -8.317e-02, 5.324e-03, 1.219e-01, -7.543e-02, 1.053e-02, -3.967e-02, 1.101e-02, -6.909e-02, -1.647e-01, 5.278e-02, -9.361e-02, -1.093e-02, 2.990e-02), r);\n\tr = MulAdd(s1_5, M4(3.109e-02, 6.628e-02, -3.311e-02, -1.217e-01, 1.338e-01, 1.042e-01, 2.909e-02, 3.355e-02, 8.824e-02, -1.579e-01, 7.428e-02, -1.650e-01, 8.633e-02, 2.387e-02, -4.965e-02, -7.690e-02), r);\n\tr = MulAdd(s1_6, M4(-1.741e-02, 6.553e-02, -9.866e-02, 9.365e-02, 7.774e-02, -5.941e-02, 8.108e-02, -1.098e-01, -2.092e-02, -2.057e-02, 2.507e-02, -1.817e-01, 5.481e-02, 1.193e-02, -1.171e-02, -1.035e-01), r);\n\tr = MulAdd(s1_7, M4(4.520e-02, 5.614e-02, -1.438e-01, 1.483e-02, -8.121e-02, 4.987e-02, -1.596e-02, 4.690e-02, -9.684e-02, 2.356e-02, -5.632e-02, -2.871e-02, 2.827e-03, 3.753e-03, 1.059e-01, -4.852e-02), r);\n\tr = MulAdd(s1_8, M4(-1.003e-01, 1.382e-01, -7.615e-02, -1.036e-02, -8.650e-03, -9.770e-02, 6.611e-03, 1.062e-01, 4.865e-02, -1.524e-02, 6.637e-02, 4.955e-02, 5.024e-03, 1.599e-02, -2.878e-02, 1.989e-01), r);\n\tr = MulAdd(s2_0, M4(5.293e-03, 1.021e-01, -1.295e-01, 1.045e-01, -7.228e-02, 1.200e-02, -1.228e-01, 3.596e-02, -9.114e-02, -4.430e-02, 8.587e-02, -1.528e-01, -2.979e-02, 1.066e-01, -3.788e-02, 1.052e-01), r);\n\tr = MulAdd(s2_1, M4(2.227e-02, 4.026e-02, 6.702e-03, -1.372e-01, -8.303e-02, 2.734e-02, 7.988e-02, 1.928e-01, -1.743e-02, 9.606e-02, -2.045e-02, -5.722e-02, -8.917e-02, 1.423e-01, -8.891e-02, -2.011e-02), r);\n\tr = MulAdd(s2_2, M4(-8.187e-02, -4.063e-02, -4.310e-02, 2.248e-02, 4.184e-02, -9.449e-02, 3.206e-02, 1.547e-01, -4.531e-02, -4.194e-03, 1.721e-02, 9.277e-02, -4.491e-02, -9.397e-03, 3.181e-02, 4.109e-02), r);\n\tr = MulAdd(s2_3, M4(-7.735e-02, 1.386e-01, -1.647e-02, -1.481e-01, -1.363e-01, 7.268e-02, 2.435e-01, -1.078e-01, 2.014e-02, 1.318e-01, 7.131e-02, -3.314e-02, -1.665e-02, -4.534e-02, 7.938e-02, -1.114e-01), r);\n\tr = MulAdd(s2_4, M4(-6.867e-02, 8.030e-02, 1.372e-02, 1.409e-01, 2.672e-02, -1.591e-01, -7.935e-02, 1.166e-01, -7.796e-03, -1.351e-01, -3.978e-02, -1.234e-02, -1.253e-01, -1.503e-01, 1.827e-01, 1.450e-02), r);\n\tr = MulAdd(s2_5, M4(1.487e-02, 1.623e-01, 1.066e-01, 5.026e-02, 1.958e-01, 1.400e-01, 6.793e-02, 2.143e-01, -1.417e-01, -7.352e-02, 1.017e-01, -8.242e-02, -2.239e-02, 2.857e-02, -1.091e-01, -1.143e-01), r);\n\tr = MulAdd(s2_6, M4(-1.680e-01, 4.522e-02, -1.074e-01, 3.068e-02, -3.510e-02, -3.975e-02, 8.872e-03, -1.323e-02, 8.092e-03, 1.302e-01, 3.036e-02, -1.005e-01, -5.281e-02, -5.411e-05, 7.608e-02, -5.882e-02), r);\n\tr = MulAdd(s2_7, M4(-8.128e-02, 5.894e-02, 5.202e-02, -2.121e-01, -2.758e-03, 1.381e-01, 3.100e-02, 1.143e-01, 6.719e-02, 1.264e-02, 1.298e-01, -5.056e-02, -1.030e-01, -2.655e-02, -5.240e-02, 9.107e-02), r);\n\tr = MulAdd(s2_8, M4(-1.098e-01, 7.137e-02, 1.447e-02, 1.095e-01, -1.075e-01, -7.541e-02, -2.493e-02, 5.744e-02, -2.321e-02, -4.715e-02, -1.222e-01, -1.038e-02, 4.308e-02, 1.199e-02, -2.390e-02, 8.004e-02), r);\n\tr = MulAdd(s3_0, M4(1.514e-02, 6.142e-02, -1.679e-02, 1.421e-01, -4.314e-02, -3.753e-03, -4.478e-02, 5.450e-02, 4.830e-02, 1.841e-02, 8.349e-03, -7.602e-02, -4.918e-02, 6.954e-02, 3.566e-04, -1.164e-01), r);\n\tr = MulAdd(s3_1, M4(3.458e-02, -2.655e-02, 2.074e-02, -6.764e-03, -4.779e-03, -1.050e-01, -1.285e-01, -3.547e-02, 6.100e-02, -1.033e-01, -1.220e-01, -2.488e-02, -1.735e-01, -3.269e-02, -2.998e-03, -7.536e-02), r);\n\tr = MulAdd(s3_2, M4(-2.253e-02, -7.574e-02, -8.361e-03, -1.796e-01, -5.300e-03, 3.493e-02, -6.129e-03, 1.754e-02, -1.580e-01, -1.331e-01, -6.234e-02, 1.658e-01, -1.436e-01, -1.024e-01, 7.786e-02, 7.474e-02), r);\n\tr = MulAdd(s3_3, M4(4.098e-02, 2.356e-03, -1.799e-01, 3.367e-02, -4.516e-02, -2.829e-02, 8.494e-02, 1.194e-01, 3.378e-02, 3.071e-02, 4.195e-02, 6.000e-02, -1.675e-01, 6.617e-02, 1.058e-01, -8.855e-02), r);\n\tr = MulAdd(s3_4, M4(3.099e-02, 9.172e-02, -1.744e-01, 4.121e-02, -1.416e-01, -3.103e-02, 8.377e-04, 1.971e-02, 1.443e-01, -9.228e-02, -2.827e-02, 6.870e-03, -1.860e-01, -1.150e-01, 2.765e-01, -1.556e-02), r);\n\tr = MulAdd(s3_5, M4(-4.603e-02, 4.315e-02, 1.547e-03, -2.338e-01, -1.147e-01, 6.940e-02, 2.080e-02, 5.854e-02, -7.289e-02, 2.040e-02, -5.947e-02, 5.971e-02, -2.226e-01, -1.241e-02, -1.104e-01, -9.166e-02), r);\n\tr = MulAdd(s3_6, M4(2.643e-02, 6.164e-02, 8.340e-02, -1.133e-01, 1.595e-01, -3.999e-02, 2.242e-02, -1.665e-01, 2.607e-02, 3.441e-02, -1.012e-01, 1.000e-01, 1.596e-03, -2.365e-02, 7.891e-02, -5.897e-02), r);\n\tr = MulAdd(s3_7, M4(3.983e-02, -2.678e-02, -3.517e-02, 1.224e-01, 1.005e-01, 1.754e-01, 7.284e-03, 3.945e-04, 8.451e-02, 4.457e-03, -9.681e-03, 4.125e-02, -4.995e-02, 4.584e-02, 1.199e-01, 7.346e-02), r);\n\tr = MulAdd(s3_8, M4(5.846e-02, -2.888e-02, -1.479e-02, -8.501e-02, 6.400e-02, -1.157e-01, 2.165e-03, 1.854e-02, -3.113e-02, -2.208e-02, -7.875e-02, 5.719e-02, 1.033e-01, 1.480e-01, -1.909e-01, -5.007e-02), r);\n\tr = MulAdd(s4_0, M4(-5.335e-03, -8.372e-02, -3.783e-02, -6.308e-02, -2.173e-01, 4.498e-03, -1.480e-01, -5.785e-02, -7.680e-02, 3.288e-02, -5.400e-02, 3.452e-03, 9.755e-03, -5.644e-02, 3.565e-02, 3.149e-02), r);\n\tr = MulAdd(s4_1, M4(-8.715e-03, -5.051e-02, -1.442e-01, 4.613e-02, -8.669e-02, -6.579e-02, 9.057e-02, 1.023e-01, -7.638e-02, -1.862e-02, 6.867e-02, 1.036e-01, 3.587e-02, -1.297e-02, -1.062e-01, -8.614e-02), r);\n\tr = MulAdd(s4_2, M4(-1.108e-01, -7.149e-02, 6.670e-02, 3.969e-02, 6.626e-02, 2.668e-02, -7.490e-03, 1.006e-02, -6.542e-03, -3.122e-02, -6.992e-02, 9.288e-02, -9.591e-02, -2.018e-02, -3.362e-02, 5.792e-02), r);\n\tr = MulAdd(s4_3, M4(4.713e-02, 1.357e-02, -9.522e-03, -1.636e-01, 3.770e-02, -4.667e-02, 3.558e-02, 2.709e-02, -5.774e-02, -5.880e-02, -7.833e-02, -1.101e-01, 4.765e-02, 1.874e-02, 1.798e-02, -3.002e-02), r);\n\tr = MulAdd(s4_4, M4(-1.328e-01, -2.495e-01, 4.802e-01, -2.588e-01, -2.041e-02, 1.240e-03, 6.136e-02, -1.834e-01, 1.875e-02, 8.841e-02, 4.815e-02, 5.687e-02, 4.647e-02, 3.939e-02, 1.162e-01, -6.678e-02), r);\n\tr = MulAdd(s4_5, M4(-1.451e-01, -1.558e-01, -1.371e-01, 1.189e-01, 5.499e-02, 1.002e-01, 9.618e-02, -7.548e-03, 4.639e-02, 3.723e-02, 5.066e-02, -1.086e-02, -1.201e-01, -9.438e-02, -1.117e-01, 1.166e-01), r);\n\tr = MulAdd(s4_6, M4(-2.174e-02, -3.346e-02, -7.233e-05, 2.218e-02, 5.312e-02, -5.567e-02, 2.738e-02, 1.525e-01, -7.337e-03, 8.831e-03, -1.704e-02, -3.560e-02, 2.228e-02, -7.597e-02, 8.787e-02, 5.019e-02), r);\n\tr = MulAdd(s4_7, M4(1.841e-01, -3.949e-02, -3.770e-01, -1.809e-02, 4.194e-02, 9.110e-02, 1.813e-02, 6.084e-02, 8.008e-02, -4.040e-02, -1.450e-01, -1.446e-01, 1.486e-01, 1.302e-01, 1.444e-02, -1.374e-01), r);\n\tr = MulAdd(s4_8, M4(-4.637e-02, 3.020e-01, 7.106e-02, 3.649e-01, 3.670e-02, 9.764e-02, -5.934e-02, -2.662e-02, -2.775e-02, 4.676e-02, 4.966e-03, -1.345e-01, -6.302e-02, 1.107e-01, -5.849e-03, -6.808e-02), r);\n\tr = MulAdd(s5_0, M4(8.359e-02, 5.374e-02, -4.313e-02, -2.436e-02, 3.929e-02, -1.240e-02, 1.682e-03, -1.782e-01, -1.870e-01, 5.488e-02, -1.758e-01, -2.389e-02, 1.188e-01, -1.904e-01, 1.247e-01, -1.392e-02), r);\n\tr = MulAdd(s5_1, M4(-7.821e-02, -9.252e-02, 5.281e-02, -8.872e-02, -1.075e-01, -1.824e-01, -2.427e-01, -8.470e-03, -1.865e-01, 1.573e-01, -8.853e-02, -6.354e-02, 1.242e-01, 3.494e-01, 6.722e-02, 9.009e-02), r);\n\tr = MulAdd(s5_2, M4(1.812e-02, -2.485e-02, 4.002e-02, -5.939e-02, 3.988e-01, 2.575e-01, -3.490e-02, -3.557e-02, -2.122e-01, -7.069e-02, -1.837e-01, -1.297e-01, -6.653e-03, 7.863e-02, 1.937e-01, -3.095e-02), r);\n\tr = MulAdd(s5_3, M4(1.034e-01, 4.052e-02, 7.462e-02, 8.144e-02, 1.522e-02, 1.363e-01, 1.426e-01, -1.123e-01, -6.815e-02, 1.544e-01, 2.515e-01, 2.701e-01, 7.650e-02, 9.157e-02, 7.519e-02, 1.269e-01), r);\n\tr = MulAdd(s5_4, M4(-3.329e-02, -7.946e-02, 2.374e-02, -3.992e-03, 1.988e-01, -1.010e-01, -2.744e-02, -2.057e-01, 7.306e-02, 6.289e-02, 2.636e-01, 1.719e-01, 2.019e-01, 2.024e-01, 1.578e-03, -7.458e-02), r);\n\tr = MulAdd(s5_5, M4(2.503e-02, 2.133e-02, -9.472e-02, 7.377e-02, -1.815e-01, 1.723e-01, 2.228e-01, 5.270e-03, -8.618e-02, -1.739e-01, 4.445e-01, -8.829e-02, -6.907e-02, -3.994e-01, -2.503e-02, -3.677e-02), r);\n\tr = MulAdd(s5_6, M4(-5.551e-03, 1.916e-02, 1.607e-02, 8.480e-02, 1.256e-01, 1.284e-03, 2.887e-02, 7.081e-02, -3.412e-02, 5.326e-02, 1.446e-01, 2.570e-02, 4.649e-02, -5.663e-02, -5.735e-02, 1.437e-01), r);\n\tr = MulAdd(s5_7, M4(-5.587e-02, -2.545e-02, -7.304e-02, -2.056e-01, -3.248e-01, 1.037e-01, -8.052e-02, 3.424e-01, -2.857e-01, 1.753e-01, 2.171e-02, 5.623e-01, 1.190e-01, 2.630e-03, -2.992e-02, -1.056e-01), r);\n\tr = MulAdd(s5_8, M4(4.104e-03, 3.006e-02, 6.708e-02, 5.476e-02, 1.159e-01, -1.890e-01, 9.861e-02, -6.230e-01, 1.115e-01, 2.542e-01, 2.328e-01, -2.674e-01, -3.685e-02, 5.212e-02, -5.101e-02, 2.267e-02), r);\n\tr = MulAdd(s6_0, M4(1.097e-01, -3.157e-02, -2.447e-02, -6.866e-03, -5.199e-02, -1.318e-01, -5.015e-03, 1.001e-01, -3.609e-02, -1.647e-01, -3.436e-01, -1.239e-01, 1.174e-01, 5.202e-02, 5.041e-03, 1.765e-01), r);\n\tr = MulAdd(s6_1, M4(1.075e-01, 5.891e-02, -1.506e-01, 1.390e-02, 9.483e-03, 3.482e-02, -7.002e-02, 3.417e-02, -1.864e-01, -1.731e-01, 1.920e-01, -3.235e-01, 1.519e-02, 2.306e-01, -1.803e-02, -1.142e-01), r);\n\tr = MulAdd(s6_2, M4(3.703e-02, 1.002e-01, -9.431e-02, 1.172e-01, 1.087e-01, 1.026e-01, -5.506e-02, -2.139e-02, 5.829e-02, -1.291e-01, -1.210e-01, 1.784e-02, 1.006e-01, -5.195e-02, 1.410e-01, 2.518e-01), r);\n\tr = MulAdd(s6_3, M4(-6.842e-02, -3.220e-02, -2.200e-02, 1.114e-01, -9.742e-02, 7.600e-03, -1.156e-01, 5.088e-02, -1.513e-01, 8.029e-03, -1.525e-01, 2.514e-01, 7.538e-02, 5.196e-02, 1.078e-01, 1.843e-01), r);\n\tr = MulAdd(s6_4, M4(-1.403e-01, -6.977e-02, 6.207e-02, 3.357e-02, 4.830e-03, 1.300e-01, 3.562e-02, 3.321e-01, -4.602e-01, -1.534e-02, 3.213e-01, 2.686e-01, -3.848e-02, 4.393e-02, 2.456e-01, 6.241e-02), r);\n\tr = MulAdd(s6_5, M4(6.375e-02, 5.588e-02, 9.716e-02, 1.277e-01, -9.360e-02, 4.105e-02, 3.492e-02, -1.612e-01, -6.545e-02, -8.377e-02, -2.876e-02, -2.144e-01, 6.335e-03, 1.984e-02, 6.474e-02, -6.783e-02), r);\n\tr = MulAdd(s6_6, M4(6.793e-02, -9.859e-02, 3.992e-02, -1.174e-01, 1.460e-01, -9.544e-03, -7.754e-02, -7.563e-02, -1.802e-02, 1.469e-01, 1.574e-01, 9.190e-02, 7.771e-02, -5.878e-02, -1.506e-01, 1.035e-01), r);\n\tr = MulAdd(s6_7, M4(6.509e-02, -4.260e-02, 3.931e-02, -1.217e-01, -5.386e-02, -1.153e-01, -7.771e-02, -9.431e-02, 3.619e-02, -1.283e-01, -1.441e-01, -9.697e-02, -1.190e-01, -6.006e-02, -2.354e-01, -2.855e-02), r);\n\tr = MulAdd(s6_8, M4(-2.388e-01, -1.365e-03, 6.138e-03, 6.787e-02, 9.083e-02, 1.217e-02, 4.726e-02, 7.028e-02, -7.880e-02, -1.273e-02, 2.881e-02, -1.127e-01, 6.820e-02, 8.305e-02, -4.687e-02, 5.309e-02), r);\n\tr = MulAdd(s7_0, M4(6.293e-02, 1.524e-01, 2.426e-03, 1.345e-01, -1.927e-03, 2.500e-02, -2.269e-02, -1.720e-02, -5.706e-02, -4.078e-02, -1.441e-02, -1.935e-02, -2.046e-02, 1.077e-01, 2.896e-02, -1.657e-02), r);\n\tr = MulAdd(s7_1, M4(-1.546e-01, 6.167e-02, -2.003e-01, 5.352e-03, -1.040e-02, 1.479e-02, -1.393e-02, 6.118e-02, 1.881e-01, -1.391e-01, 2.568e-02, 5.596e-02, 2.507e-02, -8.752e-02, -5.587e-02, 8.935e-02), r);\n\tr = MulAdd(s7_2, M4(4.904e-02, -5.495e-03, 3.301e-02, -1.341e-01, -1.041e-01, 3.251e-02, 3.666e-02, 2.863e-02, 8.393e-02, -6.058e-02, -3.575e-02, -1.365e-01, 7.400e-02, -2.014e-01, 7.808e-02, -5.946e-02), r);\n\tr = MulAdd(s7_3, M4(9.064e-02, 1.583e-01, -5.479e-02, -1.758e-01, -1.038e-01, 2.272e-02, 4.570e-02, 1.087e-01, 2.277e-03, 7.368e-02, -1.043e-01, -8.020e-02, -8.471e-02, -2.488e-02, 6.476e-02, -5.082e-02), r);\n\tr = MulAdd(s7_4, M4(-3.333e-02, 1.693e-01, 5.872e-02, -1.505e-01, 2.054e-02, 4.561e-02, 7.449e-02, 6.552e-02, -4.158e-02, -9.157e-02, 3.637e-02, -1.193e-01, -1.161e-01, 5.117e-02, 7.775e-03, -6.346e-02), r);\n\tr = MulAdd(s7_5, M4(4.869e-03, 4.115e-02, -1.571e-02, 1.777e-01, -2.857e-02, 6.103e-02, -7.811e-02, -5.197e-02, 4.437e-02, -4.254e-02, 1.840e-02, 2.180e-03, 7.496e-02, -3.691e-02, -8.768e-02, -1.503e-02), r);\n\tr = MulAdd(s7_6, M4(1.570e-01, 1.453e-01, 8.288e-02, -1.437e-01, 5.945e-02, -3.665e-02, -4.857e-02, 4.723e-02, -6.723e-02, 2.362e-02, 5.484e-04, 1.404e-01, 4.498e-02, -4.389e-02, 3.433e-02, -8.667e-02), r);\n\tr = MulAdd(s7_7, M4(7.684e-03, 9.443e-02, 1.095e-01, -5.099e-03, -3.467e-02, -4.402e-02, 7.357e-02, -2.241e-01, 1.074e-01, 4.893e-02, -1.257e-02, 1.393e-01, -2.778e-02, -1.809e-02, -5.013e-02, 4.069e-02), r);\n\tr = MulAdd(s7_8, M4(-1.282e-01, -1.216e-01, -1.371e-01, -1.585e-01, 5.509e-02, 4.474e-02, -1.432e-01, -8.277e-02, -7.159e-02, 7.818e-02, 4.878e-02, -2.018e-02, 6.765e-02, 2.236e-02, -5.455e-02, 5.913e-02), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 6\n//!DESC conv5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.398e-02, 8.938e-03, 1.353e-02, -8.796e-03 };\n\tr = MulAdd(s0_0, M4(-1.593e-01, -1.449e-01, 3.714e-01, 1.405e-01, -4.623e-02, 5.640e-02, -1.160e-03, -9.562e-02, -2.084e-01, 6.325e-02, 9.785e-02, -1.426e-01, -1.095e-01, 8.190e-02, 2.229e-02, -7.590e-02), r);\n\tr = MulAdd(s0_1, M4(-7.741e-03, -8.691e-02, -7.332e-02, 2.748e-02, 4.440e-02, -5.428e-02, 2.901e-02, -1.183e-01, 9.970e-02, 2.708e-01, 1.508e-01, 7.405e-02, 4.042e-02, -1.176e-01, -2.240e-02, 1.138e-02), r);\n\tr = MulAdd(s0_2, M4(-3.340e-01, 3.690e-02, -1.333e-01, 1.089e-02, 1.071e-01, 1.043e-01, -2.977e-02, 1.843e-02, -1.331e-01, 2.865e-02, 1.945e-02, -2.371e-01, 9.608e-02, -3.186e-02, -3.169e-02, 7.562e-03), r);\n\tr = MulAdd(s0_3, M4(-1.696e-01, 5.110e-02, -1.223e-01, 3.763e-01, 6.949e-02, -1.285e-01, 5.979e-02, -4.475e-02, -3.222e-02, 2.133e-02, 3.789e-02, 7.654e-02, -8.666e-02, 1.017e-01, -6.865e-02, 1.487e-01), r);\n\tr = MulAdd(s0_4, M4(-3.830e-02, -3.887e-02, 3.243e-01, 1.188e-01, 8.237e-02, -2.333e-01, 4.899e-02, 5.874e-02, -1.512e-01, 3.577e-01, -6.326e-02, -5.181e-01, -9.063e-02, 1.055e-01, -1.263e-02, -6.279e-02), r);\n\tr = MulAdd(s0_5, M4(5.145e-02, -5.159e-02, 2.208e-01, -2.513e-02, 2.955e-01, 5.265e-02, -1.501e-01, -1.800e-02, -8.289e-02, -6.283e-02, 2.911e-01, -6.234e-02, 1.212e-01, -1.165e-01, 1.745e-01, -7.912e-02), r);\n\tr = MulAdd(s0_6, M4(-7.277e-03, 5.578e-02, 6.717e-02, -5.013e-02, -2.340e-02, 6.085e-04, -5.489e-02, 8.570e-02, -1.369e-01, 6.509e-02, 1.394e-01, 1.283e-01, -7.018e-02, -7.364e-02, -1.514e-01, 5.337e-02), r);\n\tr = MulAdd(s0_7, M4(2.544e-01, 1.554e-02, 2.218e-02, 6.236e-02, 2.742e-03, 7.685e-02, 1.068e-01, -1.142e-01, -6.585e-02, -1.644e-02, 2.755e-01, 2.080e-01, -1.312e-01, -9.234e-03, 1.023e-01, -6.273e-03), r);\n\tr = MulAdd(s0_8, M4(-1.956e-01, -1.169e-01, 1.682e-01, -2.850e-02, 7.649e-02, 2.673e-02, -7.830e-02, -3.505e-02, -7.021e-02, -6.493e-03, -1.337e-03, 1.508e-01, 3.269e-02, -8.421e-02, -7.092e-03, 1.377e-02), r);\n\tr = MulAdd(s1_0, M4(4.571e-02, 1.489e-02, 5.416e-02, 1.011e-01, -1.022e-01, 4.644e-02, -6.923e-03, -8.190e-03, -8.223e-03, -7.293e-02, 2.387e-02, 2.188e-02, -1.679e-01, 7.147e-02, 8.029e-02, 2.890e-02), r);\n\tr = MulAdd(s1_1, M4(-1.266e-01, 2.499e-02, 9.610e-02, 3.170e-02, -4.388e-03, -8.444e-03, -1.798e-01, -2.290e-01, 9.415e-02, -2.611e-02, 3.209e-02, 2.049e-02, 2.385e-01, -1.341e-01, 2.982e-01, -3.020e-01), r);\n\tr = MulAdd(s1_2, M4(3.859e-02, 1.301e-02, -5.288e-02, -5.663e-03, -4.897e-02, -7.929e-02, -3.821e-03, 3.302e-02, -4.841e-02, 8.560e-02, -1.186e-01, -1.017e-01, -1.501e-01, -2.028e-01, 6.390e-02, -1.024e-01), r);\n\tr = MulAdd(s1_3, M4(-6.727e-02, 7.422e-03, -1.856e-01, -7.918e-02, -2.854e-02, -8.520e-02, -2.669e-02, 5.885e-02, -1.794e-02, 8.124e-02, 1.336e-02, 1.901e-01, 1.303e-01, -1.194e-02, 2.400e-01, 2.973e-01), r);\n\tr = MulAdd(s1_4, M4(1.843e-01, 2.696e-02, -8.015e-02, 2.126e-02, -1.040e-02, -1.869e-01, 9.212e-02, 1.331e-01, -7.399e-02, 1.301e-01, 2.411e-02, -7.758e-02, -2.738e-01, -1.194e-01, -3.516e-01, -1.917e-01), r);\n\tr = MulAdd(s1_5, M4(1.323e-02, 2.475e-03, -5.999e-02, 2.355e-02, 1.032e-01, 1.678e-01, -1.085e-02, 3.518e-02, -1.019e-03, -7.839e-02, 8.874e-02, 8.545e-02, 4.608e-01, -1.934e-01, 3.594e-01, 9.396e-02), r);\n\tr = MulAdd(s1_6, M4(1.144e-02, -1.090e-02, -4.158e-02, -1.052e-01, -2.696e-02, -1.749e-02, -3.617e-02, -7.374e-03, 4.635e-02, -2.878e-02, -5.198e-02, -3.870e-02, -2.749e-01, -1.257e-01, -1.258e-01, -1.133e-01), r);\n\tr = MulAdd(s1_7, M4(9.177e-02, -5.037e-02, -6.891e-02, 3.292e-02, 5.608e-02, 6.303e-02, -1.957e-03, 7.045e-02, -7.113e-02, -1.582e-02, -5.409e-02, -1.036e-01, -1.992e-01, -1.431e-01, 2.032e-01, -2.459e-01), r);\n\tr = MulAdd(s1_8, M4(-8.794e-02, -6.965e-02, 1.735e-01, -1.279e-01, -1.199e-01, 6.993e-02, -2.056e-02, 1.078e-01, -5.771e-02, 8.518e-02, 1.168e-03, 4.438e-03, -3.108e-02, -9.562e-02, -3.943e-01, -3.110e-02), r);\n\tr = MulAdd(s2_0, M4(1.800e-02, 9.367e-03, 3.256e-02, 4.693e-02, 8.038e-02, 5.966e-02, -2.208e-02, -3.095e-02, -6.173e-03, -1.560e-02, 8.999e-02, 3.326e-03, -6.089e-02, -2.851e-02, -1.533e-01, -1.779e-02), r);\n\tr = MulAdd(s2_1, M4(-9.123e-02, 1.396e-01, -9.372e-02, -3.482e-03, 2.263e-01, -8.542e-02, -8.919e-02, 6.860e-02, 7.627e-04, 4.359e-03, -6.620e-02, -7.796e-02, 5.674e-02, 4.389e-02, 2.222e-01, -1.597e-01), r);\n\tr = MulAdd(s2_2, M4(-3.900e-03, -1.853e-02, 8.436e-02, 1.238e-01, 1.459e-01, -3.454e-02, 5.319e-03, -1.830e-02, 4.723e-02, 8.957e-02, -7.618e-02, 2.639e-02, -5.243e-02, 8.689e-02, -6.727e-02, 2.487e-02), r);\n\tr = MulAdd(s2_3, M4(3.173e-02, -1.429e-01, -1.436e-01, -1.011e-01, 1.308e-01, 2.880e-02, 5.304e-02, -1.223e-01, -8.882e-02, -2.668e-02, -1.300e-01, -1.422e-01, -7.629e-02, -5.281e-02, 1.080e-01, -2.089e-01), r);\n\tr = MulAdd(s2_4, M4(3.714e-02, 4.249e-02, 1.392e-01, -4.845e-02, 1.593e-01, 2.331e-02, -6.485e-02, 7.681e-02, -1.677e-01, -1.248e-01, 1.185e-01, 5.576e-03, -2.337e-02, -6.052e-02, -1.761e-01, 1.118e-01), r);\n\tr = MulAdd(s2_5, M4(9.538e-02, -2.208e-02, -5.149e-02, 1.184e-02, -7.266e-02, -7.028e-02, 1.615e-01, -7.057e-02, 5.134e-02, -9.027e-02, -1.213e-01, -8.401e-03, 4.649e-02, -3.823e-02, 1.478e-01, 7.446e-02), r);\n\tr = MulAdd(s2_6, M4(5.187e-02, -3.907e-02, 1.271e-01, -1.752e-02, -6.796e-02, 1.812e-03, -6.672e-02, 7.822e-02, -6.372e-02, -5.372e-02, -1.701e-02, 3.405e-02, -8.316e-02, -5.269e-02, -1.587e-02, -5.865e-02), r);\n\tr = MulAdd(s2_7, M4(3.859e-02, -2.469e-02, 4.657e-03, -7.371e-02, -5.297e-02, 1.771e-02, 5.469e-02, 6.538e-02, 5.576e-02, 7.541e-02, -1.886e-01, -3.162e-02, 1.101e-01, 1.082e-01, 1.659e-01, 6.491e-02), r);\n\tr = MulAdd(s2_8, M4(1.356e-01, -2.891e-02, -1.754e-02, 1.395e-02, 9.832e-03, -1.633e-02, 9.524e-03, -6.391e-02, 1.459e-01, -2.841e-02, 2.557e-01, -1.733e-02, 4.526e-03, -1.524e-02, -1.301e-01, 9.234e-02), r);\n\tr = MulAdd(s3_0, M4(1.686e-01, -7.967e-03, -5.276e-02, -6.824e-02, -1.409e-01, -6.803e-03, -2.278e-02, 2.534e-01, -1.090e-01, 1.592e-01, -1.918e-02, 1.525e-01, -9.105e-02, -1.546e-01, -1.817e-01, 1.213e-01), r);\n\tr = MulAdd(s3_1, M4(1.456e-01, 9.600e-03, -7.036e-02, 3.050e-02, 7.232e-02, -2.325e-02, 1.812e-02, 5.203e-03, -1.446e-01, 5.967e-02, -6.930e-02, 2.963e-02, -1.145e-01, 1.560e-01, 8.045e-03, -6.323e-02), r);\n\tr = MulAdd(s3_2, M4(-1.978e-01, 7.857e-02, 4.272e-02, 1.615e-01, -2.981e-02, 4.013e-02, -1.305e-01, -4.224e-02, -1.542e-01, 1.689e-02, 1.822e-01, 4.598e-02, -1.028e-01, 3.473e-02, -1.626e-01, -6.575e-02), r);\n\tr = MulAdd(s3_3, M4(1.631e-02, -6.029e-02, -6.514e-02, 5.342e-02, -2.351e-01, 4.921e-02, 1.373e-02, 5.400e-03, 1.064e-01, 8.515e-02, 8.165e-02, 9.797e-02, -2.146e-01, -1.766e-01, -2.541e-01, 2.036e-01), r);\n\tr = MulAdd(s3_4, M4(-1.687e-01, -8.273e-02, 2.427e-01, 6.374e-02, 1.014e-02, 8.861e-02, -7.684e-02, -5.828e-04, -4.240e-02, -1.492e-01, 9.594e-02, 5.766e-02, 3.729e-02, -3.388e-02, 5.206e-02, 2.805e-01), r);\n\tr = MulAdd(s3_5, M4(-2.261e-01, -2.347e-02, -1.408e-01, -6.628e-02, -7.631e-02, 5.802e-02, 1.586e-01, -9.652e-02, 1.278e-01, -1.849e-01, -3.748e-02, 1.138e-01, 8.441e-02, -7.556e-03, 9.137e-02, 4.942e-02), r);\n\tr = MulAdd(s3_6, M4(-1.926e-01, -7.638e-02, 1.927e-01, -9.560e-03, -2.627e-03, 6.517e-02, 8.063e-03, 2.457e-01, 1.541e-02, -9.795e-02, 2.329e-01, 4.059e-02, -2.558e-01, 4.837e-02, 3.723e-01, 9.836e-02), r);\n\tr = MulAdd(s3_7, M4(-8.015e-02, -2.217e-01, -9.742e-02, 3.284e-02, 4.386e-02, -1.525e-01, -1.135e-01, -3.457e-02, 1.242e-02, 1.271e-01, 1.722e-02, 6.478e-02, 3.261e-01, -9.475e-02, 3.055e-01, -2.176e-01), r);\n\tr = MulAdd(s3_8, M4(-1.313e-02, 8.794e-03, 3.080e-02, -9.745e-02, -2.133e-02, -1.201e-03, 1.012e-01, -2.072e-03, -1.021e-02, 6.600e-02, -4.266e-02, 1.259e-01, -9.550e-02, 2.597e-02, 3.693e-03, -2.470e-01), r);\n\tr = MulAdd(s4_0, M4(-6.060e-02, -1.058e-01, -2.090e-01, 2.018e-01, 1.870e-02, 7.160e-02, 4.896e-02, 1.460e-01, 9.698e-02, -1.006e-01, -3.931e-02, 7.669e-03, 6.799e-02, -7.640e-02, -1.680e-02, 4.238e-03), r);\n\tr = MulAdd(s4_1, M4(-6.669e-02, 3.466e-01, 4.606e-01, -2.850e-01, -9.875e-02, 3.052e-02, -5.354e-02, 2.134e-02, -1.507e-02, 2.892e-02, 4.354e-02, -1.145e-01, 4.007e-02, -7.408e-02, 5.854e-02, -9.265e-02), r);\n\tr = MulAdd(s4_2, M4(-2.933e-02, -2.052e-01, 1.255e-01, 7.623e-02, -3.320e-02, -7.672e-02, 5.793e-02, -3.595e-02, 1.820e-01, -1.765e-02, 6.252e-02, 1.768e-02, 2.279e-02, 2.221e-02, -3.028e-02, 1.992e-02), r);\n\tr = MulAdd(s4_3, M4(-1.204e-01, 6.957e-03, 2.086e-01, 1.671e-01, 3.611e-02, -2.151e-02, -9.956e-02, 1.377e-01, 4.875e-02, -9.599e-02, -6.171e-02, 1.036e-01, -1.594e-04, 5.487e-02, -1.711e-02, -1.317e-02), r);\n\tr = MulAdd(s4_4, M4(-2.026e-01, -1.324e-01, -2.880e-01, -3.087e-01, -7.400e-02, 1.247e-01, 3.866e-02, 3.537e-02, 1.193e-02, -1.004e-01, 1.116e-01, -6.525e-03, 2.387e-02, 1.488e-01, -1.725e-01, -6.723e-02), r);\n\tr = MulAdd(s4_5, M4(-2.304e-01, 1.438e-02, 4.557e-02, -1.209e-01, -9.595e-02, 3.186e-02, 5.878e-02, 8.973e-02, -4.991e-02, -2.682e-02, 7.052e-02, 4.856e-02, -2.973e-02, -1.402e-01, 1.139e-01, 7.068e-02), r);\n\tr = MulAdd(s4_6, M4(-2.595e-01, -2.338e-01, -1.782e-02, -1.115e-01, 8.535e-03, -4.087e-03, -5.792e-02, -3.489e-02, -1.135e-02, 3.207e-02, 1.845e-01, 1.173e-01, 1.513e-02, 4.795e-02, -7.076e-02, -3.634e-02), r);\n\tr = MulAdd(s4_7, M4(1.555e-01, -1.871e-01, 1.115e-02, -3.373e-01, 6.702e-02, 8.417e-02, -9.702e-03, -1.049e-02, 1.540e-01, -2.517e-02, -1.271e-01, 6.054e-02, -8.063e-02, -1.205e-02, -9.046e-03, -1.368e-02), r);\n\tr = MulAdd(s4_8, M4(-1.995e-01, 4.294e-02, 1.778e-01, 7.162e-02, -9.654e-02, -6.709e-02, 4.075e-02, -2.107e-02, 9.859e-03, 7.697e-02, -3.300e-02, -8.696e-03, -1.934e-01, 2.050e-02, 2.544e-02, 4.246e-02), r);\n\tr = MulAdd(s5_0, M4(1.797e-03, -1.507e-02, -8.254e-02, 1.316e-01, 4.059e-02, -2.017e-01, -1.458e-01, -2.957e-02, 7.678e-02, -6.134e-02, 2.763e-02, -8.168e-02, -1.657e-01, -8.973e-02, -9.496e-02, 8.552e-02), r);\n\tr = MulAdd(s5_1, M4(-9.079e-03, -3.645e-02, 5.065e-02, -6.918e-02, -1.352e-01, 1.009e-01, 9.036e-03, -3.022e-02, -1.773e-02, -8.595e-04, 1.643e-01, 1.657e-01, 5.667e-02, 6.397e-02, -9.064e-02, -1.421e-01), r);\n\tr = MulAdd(s5_2, M4(4.747e-02, 3.982e-02, 1.864e-03, 1.680e-02, 5.211e-04, 6.533e-02, -1.592e-01, 2.480e-02, -6.936e-02, -2.677e-02, -1.436e-01, 5.381e-03, -1.316e-01, -1.451e-02, -4.014e-02, 1.184e-01), r);\n\tr = MulAdd(s5_3, M4(8.830e-02, 1.459e-02, 3.689e-02, 3.786e-02, 8.277e-02, 1.448e-02, -1.858e-01, 1.230e-01, -4.004e-03, 2.619e-02, -7.552e-02, 2.365e-01, -1.443e-02, 1.764e-01, -1.532e-02, 1.333e-01), r);\n\tr = MulAdd(s5_4, M4(5.831e-03, 1.558e-02, -7.070e-02, -7.543e-03, -1.030e-01, 1.221e-02, 9.362e-03, -4.782e-02, -2.168e-01, 3.110e-02, -2.005e-01, -1.732e-01, -1.224e-01, 1.919e-01, -1.375e-01, -8.618e-02), r);\n\tr = MulAdd(s5_5, M4(-7.694e-02, -6.734e-03, -5.183e-02, 8.451e-02, 1.593e-01, 4.950e-02, 9.033e-02, -1.817e-01, 5.260e-02, 1.583e-01, 1.939e-01, 5.432e-02, -3.731e-02, 1.443e-02, 4.282e-02, -7.614e-03), r);\n\tr = MulAdd(s5_6, M4(5.421e-02, 3.801e-02, 7.990e-02, -5.669e-02, -3.197e-03, -5.307e-02, -1.686e-01, -2.793e-02, 7.266e-02, -3.287e-02, -1.096e-02, -7.894e-02, -6.755e-02, 9.185e-02, -7.624e-02, -1.063e-01), r);\n\tr = MulAdd(s5_7, M4(-2.342e-03, 1.948e-02, -1.712e-01, 8.762e-02, 4.195e-02, 2.889e-02, 4.223e-02, 5.608e-02, -7.354e-02, -1.436e-02, 1.933e-02, -2.791e-02, 7.066e-02, -4.649e-02, 7.903e-02, -1.466e-01), r);\n\tr = MulAdd(s5_8, M4(1.634e-02, 1.019e-02, 1.465e-01, -2.513e-02, 3.443e-02, 4.545e-02, -3.206e-02, -2.666e-02, -6.391e-02, 6.831e-03, -1.037e-01, 1.542e-01, 5.077e-02, 1.304e-01, 8.766e-02, -5.962e-02), r);\n\tr = MulAdd(s6_0, M4(5.300e-02, 4.058e-02, 2.100e-02, -5.358e-02, 3.789e-02, 8.811e-02, 7.047e-02, 3.690e-02, -6.714e-02, 1.748e-02, -1.716e-02, 9.108e-02, 9.203e-02, -1.446e-02, 2.172e-02, 9.838e-03), r);\n\tr = MulAdd(s6_1, M4(4.856e-02, 1.403e-02, 4.168e-04, 2.314e-02, 6.438e-02, -1.745e-01, -1.415e-02, 3.319e-02, -1.101e-01, 3.500e-02, 8.767e-03, -1.145e-02, 5.330e-02, -6.173e-02, 8.167e-02, -8.512e-02), r);\n\tr = MulAdd(s6_2, M4(-1.802e-01, 3.493e-02, -4.916e-02, 5.625e-02, -1.352e-02, 6.816e-02, -6.138e-02, -4.388e-02, 4.193e-02, -1.397e-03, 5.147e-03, -1.394e-02, -1.075e-01, -8.984e-02, -7.328e-02, -3.107e-02), r);\n\tr = MulAdd(s6_3, M4(-1.057e-01, -1.532e-01, -7.526e-02, -1.512e-02, -8.986e-03, 5.307e-02, -8.631e-02, -8.224e-02, 2.179e-03, 9.205e-02, -1.353e-02, 3.498e-03, 2.002e-02, -1.008e-01, -6.140e-02, -9.357e-02), r);\n\tr = MulAdd(s6_4, M4(-1.763e-01, -8.677e-02, 1.356e-01, 7.325e-02, -9.521e-02, -2.784e-02, 9.741e-02, 4.460e-02, 1.058e-01, -4.458e-02, 2.446e-01, 1.419e-01, 4.335e-02, -7.998e-02, -1.716e-02, -1.886e-02), r);\n\tr = MulAdd(s6_5, M4(1.377e-01, 2.626e-02, -8.382e-02, -8.873e-02, -7.494e-04, -1.027e-01, 3.345e-02, -5.583e-02, -1.120e-01, 1.128e-01, -1.429e-02, -1.038e-01, 6.440e-02, -1.174e-02, -9.148e-02, -9.121e-02), r);\n\tr = MulAdd(s6_6, M4(-1.220e-02, 7.280e-04, 9.590e-02, -2.118e-02, -6.208e-02, -1.376e-02, 9.231e-03, -7.983e-02, 1.724e-01, 4.970e-02, 1.091e-02, 1.787e-02, -5.790e-02, 2.204e-02, 2.296e-02, -3.396e-02), r);\n\tr = MulAdd(s6_7, M4(-6.873e-02, -6.783e-02, -5.188e-02, 1.125e-01, -7.886e-02, 5.728e-03, 1.074e-02, 2.625e-03, 4.340e-02, -1.089e-02, -4.658e-02, 5.693e-02, 2.289e-01, -1.841e-02, -3.196e-02, 1.033e-01), r);\n\tr = MulAdd(s6_8, M4(1.020e-02, 2.300e-02, -1.233e-01, 1.133e-02, 5.054e-02, 5.580e-02, -3.536e-02, 8.082e-02, -7.543e-02, -6.158e-02, -7.700e-02, -4.762e-02, -1.917e-03, 8.030e-02, -5.618e-02, 1.056e-01), r);\n\tr = MulAdd(s7_0, M4(-7.155e-02, 5.366e-02, -6.934e-02, -1.348e-01, -2.525e-01, -1.416e-01, 7.005e-02, -1.845e-01, -4.754e-02, -3.789e-02, 9.503e-03, -1.842e-01, 6.595e-02, 1.083e-01, 3.167e-02, 1.319e-01), r);\n\tr = MulAdd(s7_1, M4(1.935e-01, -3.082e-02, -7.510e-02, -1.959e-01, 1.813e-01, -8.668e-02, -5.187e-02, 3.750e-01, 8.887e-02, 3.637e-02, 1.732e-01, -2.686e-01, -5.073e-02, 2.332e-01, 1.732e-01, -1.090e-01), r);\n\tr = MulAdd(s7_2, M4(1.014e-01, 4.496e-02, -1.815e-01, 6.039e-02, -1.712e-02, 6.855e-02, 1.200e-01, -1.739e-02, 7.690e-02, -9.285e-02, 1.465e-01, -2.754e-01, -1.797e-02, -1.101e-01, 1.034e-01, 2.012e-01), r);\n\tr = MulAdd(s7_3, M4(1.153e-01, -2.387e-02, -3.031e-01, 9.983e-02, 1.243e-01, -1.599e-01, 1.985e-02, -1.537e-02, -3.631e-02, -3.993e-02, -1.432e-01, 9.270e-02, -4.222e-02, -1.006e-01, -1.633e-01, 1.216e-01), r);\n\tr = MulAdd(s7_4, M4(-2.473e-01, -1.253e-01, 5.134e-02, 5.411e-02, 4.270e-03, -2.251e-01, -2.865e-01, 2.612e-02, 1.701e-01, -2.289e-01, 2.527e-01, 2.396e-02, 9.859e-02, 1.566e-01, 5.256e-02, -7.774e-02), r);\n\tr = MulAdd(s7_5, M4(3.443e-01, -5.217e-02, 4.137e-02, -1.492e-01, -1.627e-01, -4.718e-02, 9.112e-02, 3.721e-02, 1.699e-01, -1.953e-02, -2.286e-01, -4.415e-03, 9.506e-02, 8.536e-02, 2.329e-02, -1.689e-01), r);\n\tr = MulAdd(s7_6, M4(1.489e-01, 9.847e-02, -2.211e-02, 7.476e-02, 2.856e-01, 1.026e-01, 4.397e-02, -1.761e-01, -3.738e-02, -3.216e-02, 5.437e-02, 9.685e-03, -1.461e-01, 1.146e-02, 7.179e-02, 8.610e-02), r);\n\tr = MulAdd(s7_7, M4(2.367e-01, 2.734e-01, 6.172e-02, 2.847e-02, -7.795e-02, -1.774e-01, -4.325e-01, -2.145e-02, -1.804e-01, 3.168e-02, 1.158e-02, -1.556e-01, -1.721e-01, 2.168e-01, -7.359e-02, 9.723e-02), r);\n\tr = MulAdd(s7_8, M4(1.146e-01, 2.635e-01, -1.467e-01, 7.112e-02, -1.555e-01, 2.464e-02, -5.305e-02, -1.821e-01, 7.086e-02, -2.014e-01, -1.698e-01, 1.242e-02, 1.664e-01, -2.012e-04, -2.096e-01, 1.916e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 5.017e-02, -2.472e-02, -8.546e-03, 4.613e-03 };\n\tr = MulAdd(s0_0, M4(2.375e-02, 2.798e-01, -1.470e-01, -5.311e-02, -8.125e-02, -7.627e-02, 1.194e-02, -5.468e-03, 1.475e-02, -3.906e-02, 1.189e-01, -2.163e-02, 3.681e-02, -1.008e-01, -8.270e-02, -1.379e-01), r);\n\tr = MulAdd(s0_1, M4(-2.061e-01, -3.075e-01, -5.014e-02, 8.560e-03, -6.088e-02, 2.363e-03, -3.140e-02, -5.582e-02, -1.874e-01, -2.888e-01, -2.317e-01, -2.082e-02, -2.264e-02, 1.194e-01, -1.154e-01, -1.054e-01), r);\n\tr = MulAdd(s0_2, M4(1.052e-02, 2.800e-02, -1.830e-01, -1.295e-01, -7.716e-02, -5.475e-02, 1.633e-01, -8.246e-02, 5.170e-03, 1.827e-01, -1.566e-01, -4.217e-02, -3.526e-02, -8.951e-03, -4.627e-02, -2.115e-01), r);\n\tr = MulAdd(s0_3, M4(-1.369e-02, -6.965e-02, -2.260e-02, 1.922e-01, 1.657e-01, -1.204e-01, 2.074e-01, -2.557e-02, -1.918e-01, 1.600e-02, -5.847e-03, 5.701e-02, 4.591e-02, 1.044e-02, 7.813e-02, 1.338e-01), r);\n\tr = MulAdd(s0_4, M4(-2.651e-02, -5.623e-02, 1.692e-01, 2.944e-01, 3.676e-01, -2.678e-01, 7.910e-02, -5.427e-02, -3.895e-01, -1.209e-03, -1.830e-01, 2.640e-02, -4.157e-02, 1.224e-01, -1.023e-01, -1.106e-01), r);\n\tr = MulAdd(s0_5, M4(-3.291e-02, 2.830e-01, -1.074e-01, 1.037e-01, -2.113e-02, 7.772e-02, -2.562e-02, -1.429e-01, -3.368e-02, 9.965e-02, -3.097e-01, -5.621e-02, 5.623e-02, 5.823e-02, 4.831e-02, 8.101e-02), r);\n\tr = MulAdd(s0_6, M4(7.714e-02, 2.832e-01, 1.379e-01, 2.980e-02, -4.772e-02, 1.149e-01, -5.162e-02, 4.892e-02, 3.031e-02, -4.875e-02, -1.706e-01, 1.062e-01, 6.854e-02, -6.142e-02, -3.681e-02, -6.287e-02), r);\n\tr = MulAdd(s0_7, M4(1.141e-02, 1.057e-03, 2.687e-01, 1.141e-01, 1.536e-01, -7.787e-02, -1.281e-01, 9.285e-02, -2.556e-03, 8.295e-02, 3.284e-02, -7.739e-02, 5.670e-02, -7.100e-02, 1.715e-01, 1.063e-01), r);\n\tr = MulAdd(s0_8, M4(1.031e-02, 1.300e-01, -3.971e-02, -8.338e-02, 1.007e-01, 1.414e-01, 4.320e-02, 3.740e-02, -1.931e-02, 2.386e-01, -2.975e-02, 1.151e-01, -2.265e-02, 2.763e-02, 7.752e-02, 2.444e-02), r);\n\tr = MulAdd(s1_0, M4(-3.686e-02, -9.159e-02, -8.028e-02, 1.835e-02, -8.461e-02, -1.200e-02, 6.251e-02, -8.569e-03, 2.942e-02, 1.142e-02, -1.239e-03, 6.275e-02, 4.019e-02, -7.689e-02, 5.405e-01, -1.596e-01), r);\n\tr = MulAdd(s1_1, M4(-3.502e-02, 7.394e-02, -7.702e-02, -7.895e-02, -3.823e-02, -9.194e-02, 8.241e-02, -1.065e-01, -1.548e-01, -4.368e-02, 5.633e-02, 3.878e-02, 1.329e-01, 3.322e-01, -1.968e-01, -6.005e-02), r);\n\tr = MulAdd(s1_2, M4(6.887e-03, -9.829e-03, 9.403e-02, 3.742e-02, -1.004e-01, 2.043e-02, 1.535e-01, 1.164e-01, -3.009e-03, -1.695e-02, 1.062e-01, -1.576e-01, -1.230e-01, -1.787e-01, 3.823e-01, -3.247e-01), r);\n\tr = MulAdd(s1_3, M4(-6.858e-02, 4.149e-02, 6.125e-02, -2.038e-02, 2.113e-01, 5.205e-02, 2.541e-02, 1.713e-02, -1.713e-01, 2.402e-02, 3.943e-02, -7.622e-02, -7.784e-02, 1.272e-01, -6.592e-02, -2.368e-01), r);\n\tr = MulAdd(s1_4, M4(8.601e-02, 6.665e-02, -2.816e-02, 1.915e-01, 2.949e-01, -1.469e-01, 4.550e-02, -8.922e-02, -1.569e-01, 2.114e-01, -5.545e-02, -2.952e-02, -1.437e-01, -1.079e-01, -2.190e-01, -1.519e-01), r);\n\tr = MulAdd(s1_5, M4(-4.649e-02, 1.652e-02, 1.695e-02, -9.256e-02, -7.806e-03, -4.356e-02, 7.523e-02, 5.328e-02, -1.176e-01, -1.434e-01, -6.019e-02, 3.271e-02, 1.978e-01, 9.020e-03, 1.538e-01, -1.316e-02), r);\n\tr = MulAdd(s1_6, M4(9.073e-04, 2.590e-02, 2.343e-02, -6.273e-02, -6.788e-02, 5.727e-02, -2.748e-02, -8.991e-03, 2.195e-02, -5.233e-02, -1.133e-01, -1.009e-03, 8.307e-02, -3.261e-01, 1.990e-01, 1.394e-01), r);\n\tr = MulAdd(s1_7, M4(-1.678e-02, 6.919e-03, 1.559e-02, -5.822e-02, 1.391e-01, 2.534e-02, -5.715e-02, 4.260e-02, 1.618e-02, -2.235e-02, 2.680e-02, 2.541e-02, 1.304e-01, 6.041e-02, 2.798e-01, 7.458e-02), r);\n\tr = MulAdd(s1_8, M4(-1.878e-02, -6.450e-02, -4.473e-02, 1.398e-02, 6.149e-02, -6.300e-03, -6.856e-02, -2.932e-02, 6.106e-02, -7.571e-02, -2.065e-02, 6.149e-03, 7.303e-02, -5.909e-02, 7.749e-02, -2.457e-01), r);\n\tr = MulAdd(s2_0, M4(-5.323e-03, 8.889e-02, 2.062e-01, 1.460e-01, -2.143e-02, -6.834e-02, -1.091e-02, 5.811e-02, 6.127e-02, 9.073e-02, -9.772e-02, -8.533e-02, 1.797e-02, -3.454e-02, 2.204e-02, -1.434e-02), r);\n\tr = MulAdd(s2_1, M4(1.952e-04, -2.399e-02, 4.873e-02, 6.787e-02, 9.244e-02, 8.997e-03, -7.317e-02, 2.043e-02, 2.031e-02, 8.249e-02, -7.486e-02, 7.437e-02, 9.161e-04, 6.212e-02, -8.652e-03, -4.886e-02), r);\n\tr = MulAdd(s2_2, M4(8.736e-03, -2.015e-02, -3.063e-02, -1.487e-01, 1.903e-02, 1.047e-01, -1.922e-01, -2.611e-02, 3.349e-02, 8.046e-03, -4.341e-02, -8.011e-02, 5.500e-02, -1.323e-02, -8.428e-02, -8.787e-02), r);\n\tr = MulAdd(s2_3, M4(4.261e-02, 1.504e-01, -3.430e-02, -2.808e-02, -9.004e-02, -8.427e-02, 4.767e-02, -6.548e-03, -8.702e-02, 1.069e-01, 2.933e-02, 6.920e-02, -1.814e-02, -1.345e-02, 7.182e-03, 3.332e-02), r);\n\tr = MulAdd(s2_4, M4(-9.987e-03, -3.337e-02, 9.504e-02, 7.318e-02, 1.830e-01, -5.087e-02, 1.253e-01, 5.065e-02, 5.035e-02, -3.376e-02, 7.512e-02, -3.120e-02, 7.876e-03, -5.337e-02, 5.403e-02, -1.625e-01), r);\n\tr = MulAdd(s2_5, M4(-5.509e-02, 1.477e-02, 1.874e-02, -9.997e-02, 3.357e-02, 6.800e-02, 6.103e-03, 6.213e-02, -2.270e-03, 7.609e-02, 1.223e-02, 6.646e-02, -8.543e-02, 2.444e-02, 2.058e-01, 1.535e-03), r);\n\tr = MulAdd(s2_6, M4(-1.647e-02, 4.307e-02, -5.204e-02, -1.042e-01, -6.802e-02, 2.655e-02, -2.501e-02, -1.171e-01, 7.035e-02, -1.546e-02, -5.354e-02, 3.666e-02, 1.758e-02, -5.853e-02, -1.206e-01, 1.440e-01), r);\n\tr = MulAdd(s2_7, M4(5.312e-02, -1.499e-01, -9.236e-02, 4.211e-02, 3.915e-02, -2.907e-02, -3.453e-02, 1.694e-01, -6.624e-02, 2.467e-02, 1.791e-02, -2.548e-02, 2.711e-02, 8.394e-02, 1.691e-02, 8.298e-02), r);\n\tr = MulAdd(s2_8, M4(-5.714e-02, -4.092e-02, -9.204e-02, 4.022e-02, 4.659e-02, -2.774e-02, -7.553e-02, -3.057e-02, -7.433e-02, -3.282e-02, 1.134e-02, 7.285e-02, -1.579e-02, -6.273e-02, -3.069e-02, 5.203e-02), r);\n\tr = MulAdd(s3_0, M4(-5.174e-02, 1.647e-01, 3.898e-02, 5.137e-02, -4.043e-02, 6.276e-02, -3.940e-02, -6.088e-02, 3.568e-02, 2.550e-02, 2.432e-01, 4.463e-02, -5.921e-02, -1.272e-01, -6.032e-02, -2.023e-01), r);\n\tr = MulAdd(s3_1, M4(-7.720e-02, 1.650e-01, 2.768e-01, 8.936e-02, 1.765e-02, 7.190e-02, -8.169e-02, -1.016e-01, 3.540e-02, -1.089e-01, -1.615e-02, 1.515e-02, 6.506e-02, 6.977e-02, 1.474e-01, -2.054e-01), r);\n\tr = MulAdd(s3_2, M4(-2.389e-04, -8.709e-02, -1.466e-01, -8.087e-02, 3.527e-02, 2.416e-01, 8.849e-02, -4.678e-02, 2.143e-02, -1.220e-02, 6.466e-03, -6.907e-02, 2.572e-02, 1.743e-02, -3.125e-02, 2.166e-01), r);\n\tr = MulAdd(s3_3, M4(-7.812e-02, 1.668e-02, -9.618e-02, 1.031e-01, -7.556e-02, -2.006e-01, -1.922e-01, 5.740e-02, -1.155e-02, 9.923e-02, -1.006e-01, 2.153e-01, 9.290e-02, -7.649e-02, -1.424e-01, -1.187e-01), r);\n\tr = MulAdd(s3_4, M4(5.798e-02, 6.748e-02, -2.225e-02, 6.382e-02, 1.155e-01, -3.644e-02, -4.444e-02, -4.808e-02, -1.056e-01, -2.862e-01, 1.351e-01, -5.455e-02, 5.645e-02, 1.314e-02, -2.308e-01, -3.675e-01), r);\n\tr = MulAdd(s3_5, M4(-1.338e-01, -3.274e-01, -8.780e-02, -4.520e-02, 3.288e-02, 9.451e-02, 2.472e-02, 1.685e-01, -8.192e-02, 6.392e-02, 4.328e-02, -3.828e-02, -1.164e-03, -8.118e-02, -1.933e-01, 8.546e-02), r);\n\tr = MulAdd(s3_6, M4(-8.778e-02, -1.244e-02, 1.515e-01, -1.361e-01, 5.845e-02, 5.789e-02, -2.808e-02, 1.687e-02, 1.422e-02, 5.649e-02, -2.284e-01, -1.832e-01, 9.666e-02, 3.020e-01, 7.284e-02, -9.252e-02), r);\n\tr = MulAdd(s3_7, M4(1.047e-01, 8.983e-02, -2.817e-01, -6.086e-03, -2.664e-02, 9.771e-02, -3.212e-02, 4.423e-02, 1.027e-01, 1.199e-01, 1.894e-02, -3.824e-01, 2.164e-02, -5.713e-02, 4.713e-02, 2.997e-01), r);\n\tr = MulAdd(s3_8, M4(-9.134e-02, -1.796e-01, 2.139e-01, 1.304e-01, 9.993e-04, -5.535e-03, 1.107e-01, -7.480e-03, -3.411e-04, 6.908e-02, -1.557e-01, -2.594e-01, -5.713e-02, -2.292e-01, 5.080e-02, -6.568e-02), r);\n\tr = MulAdd(s4_0, M4(-8.382e-02, 3.862e-01, 1.418e-02, 1.371e-01, 3.885e-02, 7.614e-02, -2.130e-01, -1.384e-02, 3.449e-02, 1.616e-01, -6.491e-02, 1.743e-01, -1.643e-03, 6.216e-02, 4.557e-02, -5.585e-02), r);\n\tr = MulAdd(s4_1, M4(2.163e-01, 9.199e-02, 4.379e-01, -1.450e-02, 1.899e-02, -1.992e-02, -1.880e-01, -4.115e-02, 5.857e-02, -1.024e-01, 2.446e-01, 8.298e-02, 3.299e-03, 1.530e-01, -8.514e-02, -7.577e-02), r);\n\tr = MulAdd(s4_2, M4(-1.229e-02, 4.657e-02, 1.324e-01, 2.859e-01, -1.945e-02, 8.632e-02, 1.029e-03, -5.752e-02, -3.405e-02, -1.149e-01, -3.139e-02, 8.736e-02, 2.617e-02, 3.285e-02, 2.662e-02, -1.293e-01), r);\n\tr = MulAdd(s4_3, M4(-8.512e-02, 5.312e-02, 2.727e-01, -1.651e-01, -5.700e-02, 5.245e-04, -9.154e-02, -3.120e-02, 7.641e-02, 7.932e-02, 1.516e-01, 7.887e-02, -5.095e-02, -9.988e-03, 2.493e-03, -4.794e-03), r);\n\tr = MulAdd(s4_4, M4(-3.992e-02, 1.917e-01, 9.522e-02, 2.879e-02, -3.965e-02, -1.703e-02, -2.368e-02, 1.041e-01, -1.361e-01, 6.245e-02, -5.546e-02, -2.044e-01, -4.529e-02, -5.278e-02, 5.566e-02, -3.638e-02), r);\n\tr = MulAdd(s4_5, M4(8.444e-02, 1.297e-01, 3.157e-01, -6.599e-02, 5.687e-02, 7.013e-02, 1.009e-01, 1.089e-01, 5.210e-02, 1.170e-02, -2.479e-02, -3.234e-02, -4.897e-02, 1.848e-03, 3.212e-02, -4.242e-03), r);\n\tr = MulAdd(s4_6, M4(5.128e-02, -6.873e-02, -1.200e-01, 2.357e-02, 8.464e-03, 6.867e-02, -1.977e-02, -5.663e-02, 1.129e-03, 1.524e-01, 5.786e-02, -6.040e-02, -3.317e-02, 5.549e-02, -2.285e-02, 2.001e-02), r);\n\tr = MulAdd(s4_7, M4(-1.778e-03, 2.180e-01, 2.588e-01, 2.249e-03, 5.801e-02, -3.429e-02, 4.188e-02, 1.153e-01, -2.219e-02, 1.133e-01, 6.736e-02, -4.814e-02, 7.633e-02, -1.251e-03, -8.278e-02, 1.314e-01), r);\n\tr = MulAdd(s4_8, M4(-3.769e-02, -1.759e-01, -1.097e-01, 6.204e-02, -2.063e-02, 9.172e-02, 1.217e-01, -3.235e-02, 1.051e-01, 2.339e-01, -2.923e-02, 3.881e-02, 6.012e-02, 2.513e-01, 1.752e-03, 2.256e-02), r);\n\tr = MulAdd(s5_0, M4(-3.723e-04, 6.100e-02, -8.285e-03, -6.124e-02, -7.198e-02, 4.131e-02, -5.697e-02, 5.607e-02, 3.343e-02, -1.694e-01, 1.277e-01, 2.201e-01, -4.906e-02, -3.500e-02, 1.787e-03, -2.144e-01), r);\n\tr = MulAdd(s5_1, M4(-9.115e-02, -6.884e-02, 1.641e-02, -7.442e-02, -2.210e-02, 5.431e-02, 6.200e-02, -2.124e-01, -6.012e-03, 1.201e-01, -2.582e-02, 3.144e-02, 3.654e-02, -5.377e-02, 1.643e-01, -2.735e-01), r);\n\tr = MulAdd(s5_2, M4(6.332e-03, 1.853e-01, 1.053e-01, 1.944e-02, -1.290e-02, -4.683e-02, -3.341e-02, 1.207e-01, -2.681e-02, -1.054e-01, 5.190e-02, 1.391e-01, 4.749e-03, 6.550e-02, -1.358e-01, 2.150e-02), r);\n\tr = MulAdd(s5_3, M4(7.859e-03, -5.134e-02, -4.399e-02, -8.536e-02, -9.574e-02, -1.510e-01, -3.029e-02, -3.398e-02, 1.390e-02, -4.405e-02, 1.357e-01, -3.742e-02, -3.758e-02, -3.409e-02, 4.446e-02, -9.369e-02), r);\n\tr = MulAdd(s5_4, M4(-1.086e-02, 1.335e-01, -7.505e-02, 2.578e-02, -2.335e-02, 7.722e-03, 9.271e-02, 4.046e-02, -8.313e-03, 1.330e-02, -1.720e-02, -1.942e-01, -1.159e-01, 7.048e-02, 2.139e-01, 2.432e-02), r);\n\tr = MulAdd(s5_5, M4(-1.506e-02, -5.078e-02, 4.471e-02, -1.803e-02, -5.591e-02, -1.636e-01, 1.586e-01, 1.724e-01, 1.345e-03, -8.110e-02, 4.794e-02, -8.287e-02, -1.740e-02, -1.958e-01, -6.885e-02, 1.745e-02), r);\n\tr = MulAdd(s5_6, M4(-5.305e-03, -1.426e-01, 1.051e-02, -8.768e-02, -1.354e-02, 2.778e-03, 1.055e-01, -1.119e-02, 2.422e-02, 1.937e-01, 1.025e-01, -1.818e-02, -3.728e-02, 1.294e-01, -2.123e-01, -2.478e-03), r);\n\tr = MulAdd(s5_7, M4(2.103e-02, -2.761e-02, 1.809e-02, -5.856e-02, 3.352e-02, -8.026e-02, -6.127e-03, 2.577e-02, -5.896e-02, 6.966e-03, -6.744e-02, -5.771e-02, 7.337e-02, -2.228e-01, -2.579e-02, -1.155e-01), r);\n\tr = MulAdd(s5_8, M4(-4.114e-02, 2.763e-03, -4.153e-02, -2.680e-02, -4.471e-02, -1.025e-01, -9.005e-03, -3.402e-02, 1.751e-02, 9.404e-02, -8.964e-02, 1.201e-02, -1.076e-02, -8.601e-03, -1.301e-01, -1.059e-01), r);\n\tr = MulAdd(s6_0, M4(3.331e-03, 8.274e-02, 1.260e-01, 1.135e-01, 5.462e-02, 1.505e-02, -5.568e-02, -1.361e-02, -2.206e-02, -1.043e-01, -6.059e-02, -1.280e-02, 4.173e-02, -2.983e-02, 1.520e-01, 4.613e-03), r);\n\tr = MulAdd(s6_1, M4(3.081e-02, 8.508e-02, 1.272e-01, 6.261e-02, -1.155e-01, 1.576e-02, -3.370e-02, -5.907e-02, 2.271e-02, -1.651e-02, -1.000e-01, -4.846e-02, -1.682e-03, -5.439e-02, -1.449e-01, 2.678e-02), r);\n\tr = MulAdd(s6_2, M4(1.241e-02, 3.698e-02, 3.387e-02, 6.518e-02, 2.522e-02, -6.981e-02, 5.470e-02, -7.337e-02, -6.131e-02, -4.012e-02, -6.431e-02, -1.311e-01, 7.278e-03, 2.380e-02, 1.106e-02, 5.129e-02), r);\n\tr = MulAdd(s6_3, M4(-5.088e-02, -1.362e-01, -1.841e-01, 8.520e-03, 7.464e-02, 2.412e-02, -2.240e-01, 7.396e-02, -8.567e-03, 3.698e-03, 7.064e-02, -1.045e-01, 4.836e-02, -1.381e-01, -5.552e-02, -6.792e-02), r);\n\tr = MulAdd(s6_4, M4(-8.957e-02, -5.023e-02, -2.319e-03, -3.383e-02, -4.418e-02, -6.413e-02, -1.199e-02, 1.965e-02, 1.140e-01, 2.155e-02, -5.066e-02, -8.185e-02, -8.862e-02, 5.287e-02, -6.621e-02, -6.042e-02), r);\n\tr = MulAdd(s6_5, M4(9.941e-03, -3.429e-02, -9.328e-03, -2.321e-02, -5.515e-02, 6.063e-02, 9.183e-02, 3.312e-02, 8.526e-02, 3.991e-03, 3.733e-02, 2.007e-02, 8.746e-03, -8.149e-03, 1.752e-01, -2.465e-03), r);\n\tr = MulAdd(s6_6, M4(-1.963e-02, -2.332e-02, 6.692e-02, -1.371e-01, 2.745e-02, 9.046e-02, 8.091e-02, 2.885e-02, 6.670e-02, -1.123e-01, -2.297e-02, 5.476e-02, -2.732e-03, -1.063e-01, 8.884e-02, 4.369e-02), r);\n\tr = MulAdd(s6_7, M4(-2.688e-02, 8.613e-02, -1.689e-02, 1.859e-02, -4.587e-02, -6.622e-02, 1.299e-01, -1.165e-01, -1.137e-02, 1.396e-01, 1.644e-01, 7.056e-02, 3.041e-03, 4.779e-02, -7.382e-03, 1.134e-02), r);\n\tr = MulAdd(s6_8, M4(4.639e-02, -8.910e-02, 2.229e-02, -5.334e-02, 4.236e-02, 1.227e-01, 3.001e-02, 1.801e-01, -2.042e-03, 9.728e-03, 3.124e-02, 1.685e-02, -2.582e-03, 7.082e-04, -9.992e-02, 7.321e-02), r);\n\tr = MulAdd(s7_0, M4(2.035e-02, -9.397e-02, 1.131e-01, 1.112e-01, 1.045e-01, 1.051e-01, 1.701e-01, 3.186e-01, -9.369e-02, -9.392e-02, -1.106e-01, 1.176e-01, 2.103e-02, 2.464e-01, -4.942e-02, -1.999e-02), r);\n\tr = MulAdd(s7_1, M4(-2.264e-02, 3.158e-02, 8.701e-02, -2.893e-01, -1.537e-01, -1.782e-01, 8.104e-03, 1.830e-01, 9.748e-02, 6.874e-02, 5.698e-02, -2.618e-01, 1.413e-01, -1.715e-02, 1.973e-01, -4.910e-02), r);\n\tr = MulAdd(s7_2, M4(2.451e-02, -3.421e-02, 1.512e-01, -1.254e-01, 1.938e-02, -6.550e-02, 3.108e-02, -2.869e-02, 1.086e-02, 1.887e-01, -1.990e-01, 2.933e-02, -7.444e-02, 1.322e-01, 7.581e-03, -1.204e-01), r);\n\tr = MulAdd(s7_3, M4(9.478e-03, -2.528e-01, -1.993e-01, 1.319e-01, 1.392e-01, -1.184e-01, 1.748e-01, 4.578e-01, -6.064e-02, 1.102e-01, -1.556e-01, -1.085e-01, -4.835e-03, 8.928e-02, -7.895e-02, -1.913e-02), r);\n\tr = MulAdd(s7_4, M4(-1.792e-01, 2.198e-01, -2.378e-01, 1.664e-01, -2.615e-01, -1.927e-01, -3.845e-01, 1.392e-01, 1.929e-01, -2.491e-01, 1.803e-01, -1.146e-01, -2.153e-02, -7.661e-02, 3.047e-02, -1.553e-01), r);\n\tr = MulAdd(s7_5, M4(-4.536e-04, 2.779e-02, -1.637e-02, 6.501e-02, -7.290e-02, 8.468e-02, -2.876e-02, 3.537e-02, 1.322e-01, 1.287e-01, 9.628e-02, -5.629e-02, 5.159e-02, -1.237e-02, 1.812e-02, -1.645e-02), r);\n\tr = MulAdd(s7_6, M4(-1.415e-02, -1.228e-01, -1.062e-01, -1.982e-03, 7.281e-02, 5.702e-01, 5.061e-01, 1.132e-01, 7.714e-02, 1.002e-01, 1.661e-02, 4.868e-02, 4.049e-02, 4.560e-01, -9.460e-02, 1.208e-01), r);\n\tr = MulAdd(s7_7, M4(2.032e-02, 5.279e-02, -1.027e-01, 1.086e-01, 1.052e-02, -2.708e-01, -1.931e-01, 4.106e-02, 1.941e-01, 1.763e-01, 5.160e-01, 3.458e-02, -2.822e-02, 1.318e-02, -4.618e-02, 7.583e-02), r);\n\tr = MulAdd(s7_8, M4(1.274e-01, 1.801e-02, -1.604e-02, 5.288e-02, 5.723e-02, -2.980e-01, 1.668e-01, -1.892e-01, -2.958e-02, 1.467e-01, 2.737e-02, -2.500e-01, 2.540e-03, -1.453e-01, -6.082e-02, 8.914e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.102e-02, -1.610e-02, -6.966e-03, 4.475e-03 };\n\tr = MulAdd(s0_0, M4(1.769e-01, 1.890e-01, -1.346e-01, 4.498e-02, -5.215e-02, -1.350e-01, 1.967e-01, -5.861e-02, -5.850e-02, -3.990e-03, 8.226e-02, -1.164e-02, 4.593e-02, 7.120e-03, -6.743e-03, 1.034e-01), r);\n\tr = MulAdd(s0_1, M4(1.599e-01, -4.515e-01, 7.455e-02, 1.520e-01, 1.614e-01, 4.222e-03, 1.287e-01, 1.402e-01, 1.576e-02, 4.033e-01, -4.946e-02, -3.333e-02, -8.869e-02, 9.984e-02, 5.972e-02, 6.922e-02), r);\n\tr = MulAdd(s0_2, M4(1.290e-01, -2.785e-02, -1.034e-01, 1.953e-01, 1.258e-02, -1.653e-01, 5.398e-03, 4.797e-02, -1.307e-01, -2.807e-02, -8.324e-02, -2.679e-01, 3.305e-02, -4.835e-02, 1.052e-03, 2.273e-04), r);\n\tr = MulAdd(s0_3, M4(5.643e-03, 1.652e-01, -3.521e-01, 2.138e-01, 4.679e-02, -7.642e-02, 5.980e-02, 1.397e-01, 1.753e-01, 1.755e-01, 1.188e-01, -2.106e-02, -1.723e-02, 1.938e-02, 4.026e-02, 1.164e-02), r);\n\tr = MulAdd(s0_4, M4(4.681e-02, -2.655e-01, -9.812e-02, -1.739e-01, 1.446e-02, -3.818e-02, -6.509e-03, -1.201e-02, -1.034e-01, 1.189e-01, 9.574e-02, 1.625e-01, -1.010e-01, 5.830e-02, 5.339e-02, 1.189e-01), r);\n\tr = MulAdd(s0_5, M4(9.504e-02, 2.441e-01, -1.970e-01, -1.449e-01, -6.458e-02, 2.752e-02, 1.072e-01, 3.095e-02, -3.617e-02, 2.200e-02, -1.818e-01, 2.857e-02, -3.973e-02, 1.105e-01, 3.115e-02, -8.797e-02), r);\n\tr = MulAdd(s0_6, M4(4.346e-03, 4.373e-01, -1.908e-01, 2.041e-01, -5.081e-02, -6.123e-02, -8.348e-02, 3.666e-02, -9.411e-02, -5.219e-03, 1.670e-02, 1.344e-01, 1.077e-02, -8.030e-02, 5.326e-03, 1.046e-01), r);\n\tr = MulAdd(s0_7, M4(-1.004e-01, 2.293e-02, -6.024e-02, 1.088e-01, -1.450e-01, 6.992e-02, -9.334e-02, -1.212e-01, 3.736e-02, -2.315e-01, 1.410e-01, 5.660e-02, 1.862e-02, 4.613e-02, -1.584e-02, 7.047e-02), r);\n\tr = MulAdd(s0_8, M4(4.643e-02, 4.579e-02, -5.918e-02, 6.728e-02, 4.241e-02, -2.387e-01, -6.879e-02, 5.496e-02, 1.884e-01, -2.569e-02, -1.007e-01, 8.366e-02, 7.408e-02, 4.701e-02, -3.806e-02, -1.014e-02), r);\n\tr = MulAdd(s1_0, M4(1.395e-02, -8.334e-02, 4.931e-02, -9.005e-02, 8.142e-02, 1.999e-02, 1.284e-01, 1.331e-02, 8.799e-02, 3.287e-04, 8.323e-02, -7.941e-02, 3.745e-02, 5.978e-02, 4.903e-01, -2.100e-01), r);\n\tr = MulAdd(s1_1, M4(-1.767e-01, -3.321e-02, 1.431e-01, 2.912e-02, 8.241e-02, 3.289e-02, 7.668e-02, 2.679e-02, -6.279e-02, 1.038e-01, -4.263e-02, -3.315e-02, -1.966e-01, -1.607e-01, -1.609e-01, -1.256e-01), r);\n\tr = MulAdd(s1_2, M4(4.673e-03, -1.148e-01, -3.676e-02, 6.074e-02, -7.172e-03, -4.427e-02, 1.597e-01, -2.477e-02, -5.421e-02, 1.013e-01, 2.950e-02, -9.229e-02, -1.843e-01, -5.846e-01, -4.701e-02, -5.318e-01), r);\n\tr = MulAdd(s1_3, M4(-5.804e-02, -9.971e-02, 1.895e-02, -1.380e-01, 2.497e-02, -1.329e-01, 7.613e-02, 3.214e-03, 1.170e-01, -1.944e-02, -2.948e-02, 8.534e-03, -2.418e-01, 1.964e-01, 5.537e-02, 4.935e-02), r);\n\tr = MulAdd(s1_4, M4(7.893e-02, -7.963e-02, -5.421e-02, 4.740e-02, 1.656e-04, 6.275e-02, -1.644e-03, -4.518e-02, 7.364e-05, 8.150e-02, -4.849e-02, 1.505e-01, -1.415e-01, 1.660e-01, -2.366e-01, 1.480e-01), r);\n\tr = MulAdd(s1_5, M4(5.773e-02, 1.815e-01, 1.106e-02, -5.591e-02, 7.044e-02, 1.733e-01, 6.559e-02, 9.476e-02, -8.762e-02, -4.256e-02, 1.034e-02, -3.661e-02, -2.631e-01, -2.397e-01, 1.254e-01, -2.470e-01), r);\n\tr = MulAdd(s1_6, M4(3.183e-02, -1.378e-02, -5.040e-02, 9.623e-02, -2.844e-02, -1.717e-03, 1.396e-02, 5.313e-02, 2.970e-02, 4.093e-03, 9.051e-02, 1.720e-02, -6.049e-02, -3.179e-01, -2.223e-02, -1.061e-01), r);\n\tr = MulAdd(s1_7, M4(6.208e-02, -3.232e-02, -7.263e-02, 1.046e-01, -7.699e-02, -1.372e-02, -3.265e-02, -3.966e-02, 7.673e-02, -9.687e-02, 5.634e-03, 3.653e-02, -1.708e-02, 4.199e-02, -1.387e-01, 2.571e-01), r);\n\tr = MulAdd(s1_8, M4(-3.332e-03, -1.940e-03, 4.380e-02, -1.268e-01, 1.219e-01, 1.835e-02, -6.464e-02, 1.054e-02, -5.188e-02, 1.726e-02, -7.917e-02, -2.458e-02, -4.254e-01, -2.410e-01, 1.529e-01, 6.448e-02), r);\n\tr = MulAdd(s2_0, M4(8.106e-02, -7.452e-02, -6.152e-02, -7.733e-02, -8.086e-03, -1.625e-02, -1.457e-01, -2.278e-01, 1.031e-02, -2.093e-02, -5.553e-03, -1.876e-02, -3.961e-02, -1.525e-01, 8.504e-02, -3.757e-02), r);\n\tr = MulAdd(s2_1, M4(-4.215e-02, -3.202e-02, -2.231e-01, -1.936e-01, -2.420e-02, 1.097e-01, 2.642e-02, -1.006e-01, 8.334e-02, 3.013e-02, -1.267e-01, 2.271e-02, 1.836e-02, 6.251e-02, 7.906e-03, 1.516e-01), r);\n\tr = MulAdd(s2_2, M4(-5.334e-02, -3.053e-02, -9.453e-02, -1.276e-01, -7.813e-02, -2.116e-01, -1.310e-01, -6.871e-02, 1.601e-02, -8.765e-02, 4.449e-02, 8.631e-02, 1.214e-01, 7.435e-02, 4.918e-02, 5.179e-02), r);\n\tr = MulAdd(s2_3, M4(9.149e-03, 1.258e-01, 1.028e-01, 5.660e-03, 1.250e-01, 5.431e-02, 1.488e-01, 6.198e-02, 1.659e-01, -4.945e-02, 1.060e-01, 7.387e-03, -1.841e-02, 2.213e-02, -4.996e-02, -5.252e-03), r);\n\tr = MulAdd(s2_4, M4(1.315e-01, -3.812e-02, -4.451e-03, -8.287e-02, 5.701e-02, -1.140e-01, -2.271e-02, -1.523e-02, -1.305e-01, -5.270e-02, -4.576e-02, 1.534e-02, -1.640e-01, -9.250e-02, -4.700e-02, -3.133e-02), r);\n\tr = MulAdd(s2_5, M4(-1.770e-02, 6.482e-02, 3.561e-02, -7.077e-02, -2.529e-03, 2.154e-01, 4.663e-02, -2.664e-02, 4.379e-02, -1.185e-01, -2.281e-03, -7.470e-02, 8.433e-02, 7.771e-02, 2.258e-02, 6.568e-02), r);\n\tr = MulAdd(s2_6, M4(6.766e-02, 2.108e-02, 1.270e-02, 6.760e-02, -7.641e-02, 1.843e-02, -7.528e-02, 2.763e-02, -5.471e-02, -4.682e-04, 7.135e-02, 3.514e-02, 3.918e-02, -2.661e-02, -2.037e-02, 2.320e-02), r);\n\tr = MulAdd(s2_7, M4(6.360e-02, -9.693e-02, 4.105e-02, 1.151e-01, -5.643e-02, -8.626e-02, -3.453e-02, -6.207e-02, 6.755e-03, -8.766e-02, 8.486e-02, -6.175e-02, -9.593e-02, 5.843e-02, -2.683e-02, -6.402e-02), r);\n\tr = MulAdd(s2_8, M4(1.430e-01, -3.707e-02, 5.535e-02, 2.933e-02, -1.453e-01, -1.584e-01, 6.419e-02, 2.175e-02, 1.458e-01, -8.063e-02, -5.444e-02, 5.310e-02, 5.165e-02, -2.809e-02, -8.537e-03, -2.830e-02), r);\n\tr = MulAdd(s3_0, M4(5.564e-02, -6.129e-02, -3.133e-02, -1.520e-02, 6.671e-02, 3.121e-02, 6.149e-02, -7.370e-02, 5.043e-02, -1.037e-01, -2.812e-03, -5.590e-02, -9.103e-02, -2.737e-01, 1.371e-01, -2.925e-02), r);\n\tr = MulAdd(s3_1, M4(-9.142e-02, 1.799e-01, -3.346e-02, -1.074e-01, 5.501e-02, 7.856e-03, 6.031e-03, -8.088e-02, -2.287e-02, 3.100e-01, 9.814e-02, 9.471e-02, -2.496e-01, 4.528e-01, 8.430e-02, -1.320e-03), r);\n\tr = MulAdd(s3_2, M4(-5.782e-02, 6.318e-02, -1.789e-02, -1.461e-01, -1.515e-02, -1.336e-01, -2.058e-01, -2.046e-02, -6.158e-02, -1.607e-02, 1.050e-01, 3.337e-02, -2.079e-02, 3.494e-01, 7.088e-02, -2.304e-01), r);\n\tr = MulAdd(s3_3, M4(-1.257e-01, -1.046e-01, 1.097e-01, -1.196e-01, 6.986e-02, -8.444e-03, 5.487e-02, 1.475e-01, -1.110e-01, -6.646e-02, 3.417e-01, -2.054e-01, -1.888e-03, 1.974e-02, -2.172e-01, 1.390e-01), r);\n\tr = MulAdd(s3_4, M4(1.125e-01, -7.499e-02, 1.321e-02, 5.380e-02, -6.331e-02, 2.885e-01, -5.830e-02, 4.324e-02, -1.243e-01, 9.861e-02, 5.391e-02, -3.004e-02, -2.324e-01, 1.354e-02, 1.800e-01, -1.214e-01), r);\n\tr = MulAdd(s3_5, M4(-8.864e-02, -5.277e-02, 1.193e-01, -2.296e-01, -2.080e-02, 5.544e-02, -1.609e-02, -1.959e-01, 7.995e-02, 1.137e-01, 1.110e-01, -1.081e-01, -2.164e-01, -6.165e-02, -4.176e-01, 2.230e-01), r);\n\tr = MulAdd(s3_6, M4(-6.254e-02, -1.889e-02, 7.543e-03, 7.514e-03, -2.202e-02, 1.114e-02, 7.680e-02, -6.242e-02, -1.535e-01, 8.380e-03, -5.794e-02, 1.097e-01, 2.236e-02, 3.382e-01, -1.351e-02, 5.943e-01), r);\n\tr = MulAdd(s3_7, M4(-1.897e-02, 9.350e-02, 1.919e-01, 1.368e-01, 4.243e-02, 1.988e-02, 5.595e-02, -6.999e-03, -1.053e-01, -3.987e-02, 6.187e-02, -8.294e-02, 2.611e-01, -1.698e-01, 1.027e-01, -1.852e-01), r);\n\tr = MulAdd(s3_8, M4(1.389e-01, 3.013e-02, 1.155e-01, -2.411e-02, 5.874e-02, -5.473e-02, 1.171e-01, -1.363e-01, 3.909e-02, -9.738e-02, -1.541e-02, -1.007e-01, -2.509e-02, -7.693e-02, -7.053e-02, 2.380e-01), r);\n\tr = MulAdd(s4_0, M4(2.173e-01, 6.941e-02, 9.238e-02, 1.529e-01, 1.223e-01, -8.523e-02, -7.405e-02, -1.887e-02, 2.059e-02, 4.005e-02, 1.043e-01, 5.467e-02, 3.185e-02, 5.738e-02, 5.115e-02, 2.614e-02), r);\n\tr = MulAdd(s4_1, M4(-2.511e-01, -2.269e-01, -6.805e-02, -3.722e-01, 1.636e-01, -8.646e-03, 1.841e-02, -3.401e-02, -3.941e-02, -5.779e-02, -1.787e-01, -2.084e-02, 7.398e-02, -5.920e-02, -5.115e-02, 5.309e-02), r);\n\tr = MulAdd(s4_2, M4(1.427e-01, -6.510e-01, -3.659e-01, 2.387e-01, -5.120e-02, 3.985e-02, 1.098e-02, 6.384e-03, 1.493e-02, -6.208e-02, 1.038e-01, -1.453e-02, -8.886e-02, -1.207e-01, -9.097e-02, 4.186e-04), r);\n\tr = MulAdd(s4_3, M4(-1.664e-01, 3.055e-01, 2.488e-01, 1.361e-01, -8.428e-02, 2.974e-02, 3.773e-02, -5.941e-02, -2.358e-02, -9.824e-02, -2.237e-02, -5.959e-02, 9.347e-02, 5.989e-02, -1.025e-01, -1.510e-01), r);\n\tr = MulAdd(s4_4, M4(5.308e-02, 3.620e-01, 1.495e-02, 2.223e-01, 1.276e-01, 7.906e-02, -5.030e-02, -4.890e-02, -9.022e-02, 2.121e-02, 1.389e-01, -3.985e-03, -4.994e-02, -9.489e-03, 1.424e-01, 5.117e-02), r);\n\tr = MulAdd(s4_5, M4(-2.974e-01, -1.401e-01, -9.986e-02, 9.604e-02, 2.256e-02, 2.873e-01, 7.987e-03, -7.493e-02, 2.292e-01, 1.061e-01, 1.438e-01, -6.919e-02, -6.513e-02, 2.582e-02, -1.415e-02, -1.568e-01), r);\n\tr = MulAdd(s4_6, M4(-9.840e-02, 2.586e-01, -8.025e-02, 1.717e-01, -5.787e-02, -6.555e-02, -8.939e-02, 9.012e-02, -1.863e-02, 7.153e-02, -6.297e-02, -1.737e-01, 3.308e-02, -1.636e-02, 5.709e-02, 9.285e-02), r);\n\tr = MulAdd(s4_7, M4(-5.649e-02, -1.537e-01, -1.290e-01, 1.347e-01, -9.012e-02, -4.008e-02, 1.942e-02, 3.189e-02, 2.808e-02, -3.812e-02, -2.656e-02, 6.829e-02, 2.456e-04, 1.119e-02, -1.088e-01, 7.207e-02), r);\n\tr = MulAdd(s4_8, M4(2.026e-01, 9.658e-02, -6.331e-02, 1.661e-01, 4.098e-02, -1.569e-01, 3.871e-02, 1.962e-02, -1.005e-01, -5.360e-02, 5.993e-02, -6.681e-03, -6.750e-02, 3.160e-02, -6.498e-02, -4.712e-03), r);\n\tr = MulAdd(s5_0, M4(-3.447e-02, 4.048e-02, -7.026e-02, 3.863e-02, 2.506e-01, 4.037e-02, 6.424e-02, -1.953e-04, -9.398e-02, -1.219e-01, 6.855e-02, -1.523e-02, 2.064e-02, 8.759e-02, 2.222e-01, 2.804e-02), r);\n\tr = MulAdd(s5_1, M4(-6.874e-02, 3.698e-03, -1.326e-01, 8.570e-02, 8.906e-02, 9.961e-02, 1.252e-01, 1.808e-02, 1.472e-02, -2.685e-02, -6.776e-02, -4.234e-02, -8.621e-02, -5.135e-02, -8.713e-02, 6.227e-02), r);\n\tr = MulAdd(s5_2, M4(4.261e-02, -8.624e-02, 6.382e-02, -4.885e-02, 5.271e-02, -4.970e-02, -9.689e-02, 1.942e-01, -4.576e-02, 2.971e-02, 1.246e-01, -2.061e-02, 5.367e-02, -1.649e-01, 7.247e-02, 3.256e-03), r);\n\tr = MulAdd(s5_3, M4(2.156e-02, -3.901e-02, -7.494e-03, -3.963e-02, -9.054e-03, 9.909e-02, -1.919e-01, 4.831e-02, 1.045e-01, 6.352e-02, 2.492e-02, 9.664e-02, 1.664e-01, -9.012e-02, 1.774e-03, -6.163e-02), r);\n\tr = MulAdd(s5_4, M4(-1.641e-02, 1.565e-02, -4.928e-02, 1.270e-01, -1.709e-01, 8.356e-02, 6.605e-02, 2.227e-02, -1.865e-01, -7.826e-02, 3.809e-02, -2.962e-01, -1.612e-01, -3.100e-01, 1.306e-01, 8.932e-02), r);\n\tr = MulAdd(s5_5, M4(1.355e-02, 1.604e-01, 1.241e-01, -1.277e-01, 6.250e-02, 8.501e-02, 6.262e-02, -3.701e-02, -1.594e-01, -8.186e-02, 1.233e-01, -2.602e-03, -1.631e-01, 9.353e-02, 1.754e-01, 7.126e-02), r);\n\tr = MulAdd(s5_6, M4(1.222e-02, 1.920e-02, 7.184e-02, 8.490e-03, 6.222e-02, 8.496e-02, -1.072e-01, 9.971e-02, 4.149e-02, -1.792e-02, -4.386e-02, -2.008e-02, 9.563e-02, 1.153e-01, -3.472e-02, 6.497e-02), r);\n\tr = MulAdd(s5_7, M4(-9.252e-02, 6.629e-02, 1.663e-02, -6.928e-04, -1.021e-02, -5.721e-02, 7.302e-02, 4.191e-02, 1.064e-01, 2.094e-01, -2.151e-02, -5.463e-02, 1.049e-01, -1.570e-02, -1.413e-01, 1.091e-01), r);\n\tr = MulAdd(s5_8, M4(7.991e-02, -9.547e-02, -1.492e-02, -1.840e-02, 9.470e-02, -5.424e-02, -2.479e-01, 3.591e-02, 2.842e-02, -3.262e-02, -6.494e-02, 3.304e-02, -3.533e-02, 1.561e-01, 3.110e-02, 1.859e-01), r);\n\tr = MulAdd(s6_0, M4(5.014e-02, -2.430e-02, 2.443e-02, 2.271e-02, -2.687e-02, 1.429e-02, -1.183e-01, -3.453e-02, 3.654e-02, 4.275e-02, -1.271e-02, 5.869e-02, -7.522e-02, 3.797e-02, -1.045e-01, 2.725e-02), r);\n\tr = MulAdd(s6_1, M4(-4.329e-02, -6.575e-02, 1.149e-01, -1.062e-01, -3.751e-02, -1.205e-01, -2.328e-02, 9.374e-02, 1.240e-01, -3.746e-03, -2.983e-02, 1.182e-01, -4.737e-02, 1.003e-01, -1.484e-02, 2.041e-02), r);\n\tr = MulAdd(s6_2, M4(-3.182e-02, 9.013e-02, -7.199e-02, 3.300e-03, 5.126e-02, 1.061e-01, 9.584e-02, 4.920e-02, -3.661e-02, 3.929e-03, 4.104e-02, 2.964e-02, -6.641e-02, -1.847e-01, 1.518e-01, 4.210e-02), r);\n\tr = MulAdd(s6_3, M4(3.809e-02, 1.141e-01, -2.025e-02, -3.144e-02, 7.610e-02, 6.201e-02, -1.278e-01, -2.698e-02, 2.440e-02, -3.292e-02, -1.224e-01, -1.537e-01, -8.080e-02, 4.410e-02, -6.527e-02, -8.392e-02), r);\n\tr = MulAdd(s6_4, M4(-7.064e-02, 7.199e-02, -5.253e-02, 3.848e-02, 8.472e-03, -2.751e-02, 2.397e-01, -4.625e-02, -1.421e-01, 4.324e-02, -1.043e-01, -1.444e-02, -1.365e-02, -6.261e-02, -2.455e-02, -1.644e-02), r);\n\tr = MulAdd(s6_5, M4(-1.123e-01, -4.866e-02, 7.136e-02, -7.598e-02, 1.370e-01, -5.719e-02, 1.156e-01, 8.149e-02, 1.303e-02, 5.168e-02, 5.268e-02, -8.777e-02, 1.678e-01, -4.289e-02, 4.631e-02, 1.116e-02), r);\n\tr = MulAdd(s6_6, M4(7.914e-02, -6.892e-02, 3.845e-02, 9.035e-02, 1.392e-02, 6.559e-02, 9.920e-02, -6.218e-02, 7.775e-03, 4.465e-02, 2.889e-02, -2.887e-02, 2.551e-02, 7.788e-02, 1.951e-02, 8.912e-02), r);\n\tr = MulAdd(s6_7, M4(6.857e-03, 8.237e-02, -6.959e-02, 3.558e-02, 1.657e-02, 1.091e-01, -1.466e-02, -8.162e-02, 5.031e-02, 2.547e-02, 2.146e-02, -5.752e-02, -2.984e-02, -1.845e-02, 1.276e-01, -3.895e-02), r);\n\tr = MulAdd(s6_8, M4(-5.837e-02, -1.167e-01, 3.480e-02, 2.391e-01, 1.824e-01, -6.553e-02, 1.919e-02, -1.807e-02, -7.098e-02, -6.898e-02, 7.033e-02, -3.931e-02, 7.109e-02, -2.093e-02, -2.907e-02, -6.944e-02), r);\n\tr = MulAdd(s7_0, M4(7.593e-02, -7.650e-02, 1.065e-01, -2.098e-02, 1.823e-03, 5.921e-02, -1.012e-02, -1.369e-02, 7.431e-02, 4.661e-02, -1.114e-01, -1.332e-01, -6.575e-02, -1.473e-01, -4.117e-02, 6.442e-02), r);\n\tr = MulAdd(s7_1, M4(1.165e-03, 1.285e-01, 1.139e-01, 1.315e-02, 2.552e-02, 2.377e-01, -1.837e-01, -1.272e-01, -7.107e-02, -1.150e-01, 3.009e-02, -1.161e-02, -2.478e-03, -3.300e-01, 1.672e-02, -3.657e-02), r);\n\tr = MulAdd(s7_2, M4(-3.815e-02, 1.411e-01, -1.306e-02, -1.292e-02, -5.307e-02, 3.563e-02, -1.113e-01, -2.583e-01, 3.122e-02, 2.440e-01, -2.140e-01, 1.636e-01, 2.650e-01, 9.879e-02, -6.845e-02, 4.067e-02), r);\n\tr = MulAdd(s7_3, M4(-2.669e-01, -1.675e-01, -2.877e-01, 3.672e-02, 5.038e-01, -1.527e-01, 3.725e-01, -1.534e-01, 1.373e-01, 6.892e-03, 4.146e-02, -2.252e-01, -6.766e-03, 1.246e-01, -9.469e-02, 2.020e-02), r);\n\tr = MulAdd(s7_4, M4(6.280e-02, 6.246e-03, -9.958e-02, 1.966e-01, 2.409e-01, -1.813e-02, 9.328e-02, -1.684e-01, -1.074e-01, -1.992e-01, -1.228e-01, 3.328e-01, 9.693e-02, 9.424e-02, 1.686e-01, -1.767e-01), r);\n\tr = MulAdd(s7_5, M4(-6.688e-03, -3.218e-03, 9.671e-02, 1.111e-01, -1.830e-01, 1.717e-03, -3.666e-01, -7.725e-02, 1.551e-01, 4.519e-01, -1.876e-01, -2.229e-02, 6.402e-02, -1.702e-01, -6.232e-02, 6.659e-02), r);\n\tr = MulAdd(s7_6, M4(-2.714e-02, -1.401e-01, 5.579e-02, -6.691e-02, -6.501e-01, 2.028e-02, -1.425e-01, -6.160e-02, 1.076e-01, -1.367e-02, 1.475e-01, 1.244e-01, 1.753e-01, -3.359e-02, -1.749e-01, 1.348e-02), r);\n\tr = MulAdd(s7_7, M4(-4.595e-02, 6.315e-02, -1.296e-01, -3.428e-02, -4.203e-01, -2.758e-01, -2.281e-01, 4.241e-02, -3.090e-02, -1.202e-01, -4.892e-02, -1.343e-01, -1.120e-01, 8.944e-03, 3.657e-02, -2.739e-01), r);\n\tr = MulAdd(s7_8, M4(-5.656e-02, -1.289e-01, -1.099e-01, 2.239e-02, -3.330e-01, 2.338e-01, 1.498e-01, -2.335e-02, 5.013e-02, 1.028e-01, 6.603e-03, 2.763e-01, 1.396e-01, -1.444e-02, -8.525e-02, 1.582e-01), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.765e-02, -1.702e-03, 6.218e-02, 1.051e-01 };\n\tr = MulAdd(s0_0, M4(-5.645e-02, 1.760e-01, -4.482e-02, 2.093e-01, 1.129e-01, -9.060e-02, -6.022e-02, -2.884e-02, -8.049e-02, -5.757e-02, -1.983e-01, -5.161e-02, 6.733e-02, -1.468e-02, 1.825e-02, -7.886e-02), r);\n\tr = MulAdd(s0_1, M4(7.052e-02, 8.472e-02, 1.384e-02, -3.865e-01, 2.505e-02, 1.044e-01, -1.588e-01, -8.696e-02, -1.147e-01, -4.587e-02, 2.314e-01, -7.237e-02, -1.459e-01, 2.923e-02, -2.466e-02, 5.795e-05), r);\n\tr = MulAdd(s0_2, M4(-1.017e-01, -3.273e-01, -5.922e-02, -3.409e-02, 5.008e-03, -8.695e-02, 1.576e-02, -4.982e-02, -1.707e-01, -1.656e-01, -6.513e-02, 1.027e-01, -5.422e-02, 3.751e-02, 1.630e-03, 1.394e-02), r);\n\tr = MulAdd(s0_3, M4(1.792e-01, 1.756e-01, -1.590e-01, -2.943e-01, -4.548e-02, 1.650e-02, -3.772e-02, 3.859e-02, -9.898e-03, -1.431e-01, 8.251e-03, -2.807e-02, 4.794e-02, 1.859e-02, 4.840e-02, 7.029e-02), r);\n\tr = MulAdd(s0_4, M4(-2.933e-02, -5.911e-02, 3.245e-02, -7.475e-02, 5.743e-03, -5.643e-02, -1.475e-01, -7.419e-02, -1.841e-01, -4.314e-01, 1.638e-01, 1.587e-01, 3.185e-03, -4.497e-02, 1.671e-01, 5.262e-02), r);\n\tr = MulAdd(s0_5, M4(-2.551e-02, -4.022e-02, -1.042e-01, -2.873e-01, -1.970e-01, -1.287e-02, 1.395e-01, 5.512e-02, -7.468e-03, 7.047e-02, -4.884e-03, -1.041e-01, -3.473e-02, 2.868e-02, -3.518e-02, -1.248e-01), r);\n\tr = MulAdd(s0_6, M4(-4.804e-02, -6.818e-02, 1.479e-02, -1.791e-02, 4.143e-02, 1.913e-02, -7.768e-02, -2.089e-02, 2.541e-02, 1.560e-02, -2.345e-02, -2.922e-03, 5.163e-03, 4.283e-02, 7.362e-02, 2.913e-02), r);\n\tr = MulAdd(s0_7, M4(-2.509e-02, -7.775e-02, -1.760e-01, -3.009e-01, -6.017e-03, -3.875e-02, 5.245e-02, -4.555e-02, 2.316e-01, -1.733e-02, -1.193e-02, -1.439e-02, 9.735e-03, 6.273e-02, -4.499e-02, 1.782e-02), r);\n\tr = MulAdd(s0_8, M4(2.454e-03, -1.476e-01, -4.833e-02, -9.239e-02, -6.864e-02, -7.381e-03, 2.536e-02, 8.117e-02, 6.630e-02, -1.927e-01, -7.264e-02, -2.849e-02, -2.473e-02, 8.794e-02, -2.888e-02, -1.933e-02), r);\n\tr = MulAdd(s1_0, M4(-2.151e-02, -6.765e-02, -1.943e-02, -5.016e-03, 6.872e-02, 5.624e-02, -7.056e-02, 6.857e-03, -2.249e-02, -4.201e-02, -4.781e-02, 3.855e-03, 8.819e-02, 1.557e-03, 2.673e-02, 3.076e-02), r);\n\tr = MulAdd(s1_1, M4(3.736e-02, -2.357e-03, 5.260e-02, -2.960e-03, 7.647e-02, 9.028e-02, -1.166e-01, -1.988e-02, -1.324e-01, -6.872e-02, 1.139e-01, -1.696e-02, -2.381e-01, 4.614e-02, -1.438e-01, -7.316e-02), r);\n\tr = MulAdd(s1_2, M4(-2.225e-02, 4.959e-02, 5.656e-02, -7.849e-02, -1.077e-01, -6.801e-02, -4.746e-02, 4.597e-02, 9.405e-02, 9.797e-02, 2.597e-02, 2.789e-02, -6.002e-02, -2.756e-02, 2.752e-01, 5.346e-01), r);\n\tr = MulAdd(s1_3, M4(5.664e-02, -5.358e-02, -1.431e-01, 9.291e-02, 7.151e-02, -1.090e-01, 2.102e-02, 5.345e-02, -3.568e-02, 8.393e-03, 2.778e-02, 1.294e-01, -4.460e-02, -7.108e-02, 9.762e-03, 9.799e-02), r);\n\tr = MulAdd(s1_4, M4(1.030e-02, -3.228e-02, 1.313e-01, -1.178e-01, 1.518e-02, -1.056e-01, -1.023e-01, -5.527e-02, -1.071e-01, -2.202e-03, 5.149e-02, -3.783e-02, -2.376e-01, 1.557e-01, 1.959e-01, -2.218e-01), r);\n\tr = MulAdd(s1_5, M4(-2.501e-02, -1.042e-01, -6.742e-02, 5.240e-02, -2.588e-01, -2.092e-02, 4.741e-02, 8.323e-02, 2.351e-01, -5.172e-02, 1.022e-01, 9.954e-04, 1.106e-01, 3.128e-02, -1.142e-01, 3.759e-02), r);\n\tr = MulAdd(s1_6, M4(-1.075e-02, -1.126e-01, -4.243e-02, 1.313e-01, 1.141e-02, 4.852e-02, -4.503e-02, 2.348e-02, -6.812e-02, -7.743e-02, 5.062e-02, -2.036e-02, 1.831e-01, 1.960e-01, 2.308e-02, -7.480e-03), r);\n\tr = MulAdd(s1_7, M4(-6.154e-02, 9.237e-03, -6.533e-02, 7.397e-02, 2.490e-02, -7.969e-02, -1.440e-01, -1.737e-02, 6.058e-02, 2.642e-03, -4.691e-03, 6.744e-02, -8.907e-02, 7.858e-02, -5.016e-02, -4.814e-02), r);\n\tr = MulAdd(s1_8, M4(3.128e-02, -1.888e-03, -1.742e-02, 3.375e-03, -4.486e-02, 3.767e-03, -5.692e-02, 1.178e-01, 6.251e-02, 3.410e-02, 5.704e-02, 4.748e-02, -7.627e-02, 2.175e-02, 1.323e-01, -3.631e-01), r);\n\tr = MulAdd(s2_0, M4(3.771e-02, 1.045e-01, 6.410e-03, 9.760e-03, 3.716e-02, -3.304e-02, -8.617e-02, 2.439e-02, 1.424e-02, -1.170e-01, -2.423e-02, -9.178e-02, -4.673e-02, 3.414e-02, -2.216e-02, 1.508e-01), r);\n\tr = MulAdd(s2_1, M4(2.048e-03, -1.847e-02, -3.567e-03, -1.800e-04, -3.242e-02, 1.191e-01, 2.908e-02, 3.510e-02, 2.226e-02, -5.740e-02, 4.474e-02, -5.995e-02, 2.677e-02, -1.098e-01, -2.528e-02, -3.653e-03), r);\n\tr = MulAdd(s2_2, M4(-4.418e-03, -2.628e-02, 4.605e-02, -5.577e-02, 3.294e-02, 1.789e-01, 7.153e-02, -9.860e-02, -7.700e-03, -9.162e-02, -2.459e-02, -6.051e-04, 3.210e-02, -3.459e-02, -2.111e-02, -9.662e-02), r);\n\tr = MulAdd(s2_3, M4(2.483e-02, 1.000e-01, 6.958e-02, 2.590e-01, 2.166e-02, 9.445e-02, -8.639e-03, -1.070e-02, 2.945e-02, 4.727e-02, -3.682e-03, -8.194e-03, -4.184e-02, -5.784e-02, 5.353e-02, 1.007e-01), r);\n\tr = MulAdd(s2_4, M4(-1.562e-01, 6.380e-02, 1.257e-01, -1.055e-01, -8.258e-02, -1.609e-01, -3.429e-03, 2.550e-02, -3.265e-03, 7.062e-02, -2.790e-02, 1.797e-01, -8.019e-02, -8.687e-02, -7.915e-03, 3.030e-02), r);\n\tr = MulAdd(s2_5, M4(-4.810e-02, -1.096e-01, -4.925e-02, 6.176e-02, 1.106e-01, 1.277e-01, -1.977e-02, -4.168e-02, -9.010e-02, -7.625e-02, -9.524e-03, 1.310e-01, 1.174e-01, 8.116e-02, 4.536e-02, -5.032e-03), r);\n\tr = MulAdd(s2_6, M4(7.342e-03, 1.611e-02, 1.339e-01, 6.824e-02, 1.531e-02, 4.872e-02, -4.677e-02, -3.873e-02, -3.992e-02, 8.549e-02, 1.598e-02, 1.353e-01, 1.762e-02, 9.697e-02, -3.610e-04, -2.265e-03), r);\n\tr = MulAdd(s2_7, M4(-2.853e-02, -2.286e-03, -1.737e-02, 4.676e-02, -9.264e-02, -9.177e-02, 3.828e-02, -1.984e-02, -1.343e-01, -5.662e-02, 5.047e-02, 1.247e-01, 6.769e-02, -1.240e-02, -2.290e-02, -1.459e-01), r);\n\tr = MulAdd(s2_8, M4(-1.718e-02, 1.173e-01, 1.001e-01, 1.079e-02, 7.155e-03, -9.204e-02, 3.039e-03, 7.101e-02, 8.618e-02, -3.785e-02, 1.479e-02, -1.640e-02, -4.611e-02, 7.484e-02, -5.833e-02, 1.304e-03), r);\n\tr = MulAdd(s3_0, M4(8.277e-03, -1.595e-01, -4.103e-02, -8.835e-02, -9.754e-03, -3.271e-02, -9.689e-02, 1.119e-01, -7.056e-02, -4.024e-02, -4.186e-02, -1.469e-01, -1.754e-01, 5.795e-02, 1.035e-01, 2.900e-01), r);\n\tr = MulAdd(s3_1, M4(-1.051e-01, -4.836e-02, -1.145e-02, -1.092e-01, -2.848e-02, 1.265e-01, -7.104e-02, -1.082e-01, 3.574e-03, 2.179e-01, -6.690e-02, -2.639e-01, 9.831e-02, 2.523e-01, 1.111e-01, 3.380e-01), r);\n\tr = MulAdd(s3_2, M4(9.900e-03, 2.524e-01, 4.151e-02, -5.739e-02, -7.735e-02, 1.450e-01, -3.100e-02, -1.813e-03, -6.282e-02, 8.410e-02, -6.079e-02, 9.522e-02, -6.133e-02, 1.919e-02, 3.723e-02, 1.790e-01), r);\n\tr = MulAdd(s3_3, M4(1.168e-02, -5.182e-02, -8.629e-03, -4.605e-03, -7.267e-02, 7.730e-02, 4.429e-02, 1.348e-01, 1.449e-01, 4.781e-02, 1.475e-01, -3.369e-01, 8.468e-02, -1.454e-01, -1.867e-02, 3.212e-01), r);\n\tr = MulAdd(s3_4, M4(-2.233e-01, -1.076e-01, -4.514e-03, -6.716e-02, 8.486e-02, 7.153e-02, -1.538e-01, -1.175e-01, -2.348e-01, 1.887e-01, 1.131e-01, 1.229e-01, -1.095e-01, 1.724e-01, -6.757e-02, 2.029e-01), r);\n\tr = MulAdd(s3_5, M4(-9.904e-03, -2.001e-01, -5.167e-02, 4.948e-02, 2.417e-02, 2.727e-02, -3.665e-02, -1.685e-01, -1.830e-01, -5.641e-02, -1.353e-01, -3.405e-01, 1.950e-01, -1.364e-03, 6.277e-02, 1.835e-01), r);\n\tr = MulAdd(s3_6, M4(-4.270e-02, 7.641e-02, -1.429e-02, -2.781e-03, -6.238e-02, -1.662e-01, -6.906e-02, 1.265e-01, -9.252e-02, 9.206e-02, -1.256e-01, -1.363e-01, -7.575e-02, -5.237e-02, -9.822e-02, -2.591e-01), r);\n\tr = MulAdd(s3_7, M4(-7.352e-02, 8.076e-02, -2.072e-02, 1.302e-02, -2.489e-02, 1.206e-01, -1.319e-03, -3.979e-02, -1.784e-01, 8.184e-03, 2.105e-01, -1.754e-01, 3.353e-01, 2.512e-01, 2.847e-01, -2.669e-01), r);\n\tr = MulAdd(s3_8, M4(8.568e-02, 7.808e-02, 4.092e-02, -6.036e-02, 6.053e-02, -2.914e-02, 1.325e-02, 1.042e-02, 1.044e-02, -2.953e-02, 2.030e-02, 1.755e-01, 1.239e-01, -2.500e-01, -7.221e-02, -2.046e-01), r);\n\tr = MulAdd(s4_0, M4(5.722e-03, 4.126e-01, -3.613e-01, -2.603e-01, 2.610e-02, 1.147e-01, 1.529e-01, 1.412e-02, -1.607e-02, 9.082e-02, -5.023e-02, 7.084e-02, -1.773e-02, -5.129e-02, 4.868e-02, -8.452e-02), r);\n\tr = MulAdd(s4_1, M4(-2.186e-01, 2.312e-01, -2.029e-01, -4.311e-01, -8.737e-02, 7.129e-02, -7.808e-02, -7.963e-02, 7.678e-02, -2.709e-02, 1.466e-01, 3.389e-02, 1.023e-01, 7.007e-02, -8.046e-02, 1.188e-01), r);\n\tr = MulAdd(s4_2, M4(-3.997e-02, 3.701e-01, 2.073e-02, -4.759e-01, -5.424e-02, -9.812e-02, -1.673e-02, 1.760e-01, 2.068e-01, -1.508e-02, 9.934e-02, 1.182e-01, 7.226e-02, -2.287e-02, 5.119e-02, -4.459e-02), r);\n\tr = MulAdd(s4_3, M4(-7.220e-02, -4.560e-02, 1.812e-01, 1.372e-01, -8.377e-02, 3.883e-02, -1.174e-01, -1.298e-01, 4.797e-02, 6.047e-02, -2.871e-02, 1.695e-01, 7.600e-02, -1.931e-02, -6.410e-02, -1.546e-01), r);\n\tr = MulAdd(s4_4, M4(2.055e-01, -1.577e-01, 3.279e-01, -3.042e-02, 2.706e-02, -6.100e-02, -5.843e-02, 8.075e-03, 9.117e-02, 1.521e-01, -9.218e-02, -7.202e-02, -4.476e-02, -2.888e-02, 9.001e-03, 6.872e-02), r);\n\tr = MulAdd(s4_5, M4(1.248e-01, 9.935e-02, 8.897e-03, 1.009e-02, 8.706e-02, -1.506e-01, -3.442e-02, -1.989e-01, -8.537e-02, 3.353e-02, 6.227e-02, -5.717e-02, -1.937e-02, -5.030e-02, 9.230e-02, 6.029e-02), r);\n\tr = MulAdd(s4_6, M4(-2.969e-02, -1.519e-01, -5.197e-02, -2.457e-02, -3.014e-02, -3.094e-02, 3.255e-02, 1.176e-01, -2.714e-02, 6.242e-02, 2.370e-02, -3.218e-02, -6.600e-02, 1.331e-01, -4.780e-02, -8.487e-03), r);\n\tr = MulAdd(s4_7, M4(-4.082e-02, 9.736e-03, -2.189e-01, -1.217e-01, -5.973e-02, 1.184e-01, 3.667e-02, 3.074e-03, -8.391e-03, -1.761e-01, 2.629e-02, -3.397e-02, 1.468e-01, -1.218e-01, -1.082e-02, 4.480e-02), r);\n\tr = MulAdd(s4_8, M4(1.307e-01, -6.793e-02, 1.310e-01, 3.999e-02, 1.941e-02, -6.439e-02, 7.756e-02, -1.308e-01, -9.374e-02, 5.016e-02, 5.744e-02, 8.592e-02, -1.647e-02, -1.153e-02, 1.120e-02, 7.166e-02), r);\n\tr = MulAdd(s5_0, M4(3.852e-02, -1.823e-02, -4.158e-03, -1.270e-01, 4.434e-02, 1.546e-01, -4.803e-02, -4.949e-02, -3.976e-03, 1.076e-01, 6.032e-02, -7.862e-02, -1.530e-01, 1.587e-01, -8.905e-02, -1.204e-01), r);\n\tr = MulAdd(s5_1, M4(4.364e-02, 2.356e-02, 5.051e-02, 1.375e-01, -1.265e-01, -1.293e-01, -1.487e-01, 5.630e-02, -1.801e-01, -1.593e-02, 5.268e-02, 1.203e-02, 1.246e-01, 1.258e-01, -1.507e-02, 1.034e-01), r);\n\tr = MulAdd(s5_2, M4(-4.812e-02, -2.163e-01, 1.380e-02, 3.241e-02, -8.598e-02, -2.474e-02, -3.968e-02, 3.293e-03, 8.254e-04, 1.689e-01, -6.810e-02, 6.548e-02, -5.382e-02, -4.789e-02, 3.962e-02, 1.161e-01), r);\n\tr = MulAdd(s5_3, M4(-4.842e-02, 1.189e-01, -9.461e-03, -5.474e-03, -6.373e-02, -2.870e-02, -3.926e-02, 9.671e-02, 5.846e-02, -5.715e-02, 1.402e-01, -6.238e-02, 6.486e-02, 2.418e-01, -2.878e-02, -1.650e-02), r);\n\tr = MulAdd(s5_4, M4(2.068e-01, 1.636e-02, 2.102e-02, -4.572e-02, -2.002e-01, -3.611e-02, -4.307e-02, 2.087e-01, -1.261e-01, -4.365e-02, -7.447e-02, 1.491e-02, -7.207e-02, 2.605e-01, -3.666e-02, -8.913e-03), r);\n\tr = MulAdd(s5_5, M4(-1.282e-01, 1.015e-01, -4.817e-02, 4.154e-02, -4.017e-02, -2.169e-01, -3.384e-02, 8.651e-02, 5.858e-02, -7.025e-02, -8.502e-02, -3.576e-02, -3.016e-02, 1.050e-01, -9.661e-03, 1.072e-01), r);\n\tr = MulAdd(s5_6, M4(-6.082e-02, 5.885e-02, 6.084e-02, 8.203e-02, -7.865e-02, 1.687e-01, -1.191e-01, 2.030e-01, -5.271e-02, -1.547e-01, -8.204e-02, -9.515e-02, -1.284e-01, -9.417e-02, -1.433e-01, 3.083e-02), r);\n\tr = MulAdd(s5_7, M4(-2.314e-03, 4.900e-02, 9.433e-04, 2.277e-02, 2.046e-01, 6.075e-03, 1.429e-01, 2.992e-02, 8.627e-02, 3.431e-02, 4.757e-04, -4.053e-02, -3.486e-02, -1.552e-01, -6.662e-02, 7.499e-02), r);\n\tr = MulAdd(s5_8, M4(1.484e-03, -1.217e-01, -9.341e-03, 1.989e-02, -5.407e-02, 2.549e-01, 2.559e-02, -3.438e-02, -1.755e-02, 4.560e-02, -2.738e-02, 2.149e-02, -8.420e-02, 1.302e-01, -1.704e-02, 4.946e-02), r);\n\tr = MulAdd(s6_0, M4(7.802e-03, 2.278e-02, -1.119e-01, 2.124e-02, 1.067e-01, -3.640e-03, 2.168e-02, 1.909e-01, -1.058e-03, 1.661e-02, 6.322e-02, -3.902e-02, 2.047e-02, 2.947e-02, 5.102e-03, -6.674e-02), r);\n\tr = MulAdd(s6_1, M4(2.630e-02, 3.320e-02, 6.457e-02, -1.115e-01, -1.025e-01, -4.112e-02, -5.155e-02, -1.293e-01, 4.904e-02, -9.469e-02, -5.323e-02, 8.098e-02, 9.945e-02, -1.583e-02, -7.869e-03, -9.910e-02), r);\n\tr = MulAdd(s6_2, M4(-7.884e-02, 5.598e-02, 1.559e-02, -1.138e-01, 1.061e-01, -4.671e-03, -7.834e-02, -2.055e-02, -5.253e-02, 9.596e-02, -4.976e-02, 2.746e-02, -8.401e-02, -9.472e-02, 4.217e-02, 8.313e-03), r);\n\tr = MulAdd(s6_3, M4(4.689e-03, -1.601e-01, 1.074e-02, -8.228e-02, -9.069e-02, -5.569e-02, -1.131e-01, 1.340e-03, 3.793e-03, 5.536e-02, 1.857e-02, 3.456e-02, -8.922e-02, 8.750e-02, -7.929e-02, -3.118e-02), r);\n\tr = MulAdd(s6_4, M4(4.851e-02, 9.989e-02, 5.487e-02, 5.841e-02, -6.260e-02, -1.672e-01, -2.811e-02, -2.638e-02, 9.154e-02, -6.306e-02, 3.378e-02, -4.780e-02, 4.078e-02, -8.938e-02, -1.635e-02, 1.603e-01), r);\n\tr = MulAdd(s6_5, M4(4.805e-02, 5.252e-02, -7.036e-04, 6.648e-02, -1.602e-03, 2.032e-02, 4.342e-02, 3.548e-02, 1.421e-02, -7.686e-04, -3.262e-02, -9.598e-02, -1.952e-02, -4.057e-02, 3.503e-02, -6.934e-03), r);\n\tr = MulAdd(s6_6, M4(-1.160e-01, -7.098e-02, -8.229e-02, -8.787e-02, -6.369e-02, 1.392e-02, 1.723e-01, 2.007e-02, -1.959e-02, 1.816e-02, -5.830e-02, 4.776e-02, 5.662e-03, 1.789e-02, 8.129e-02, -3.355e-02), r);\n\tr = MulAdd(s6_7, M4(9.544e-02, -1.052e-01, -2.019e-02, -1.729e-01, 9.737e-02, -4.807e-02, 6.829e-02, 7.081e-02, 3.774e-02, -2.293e-02, -9.601e-03, 7.726e-03, 3.375e-02, 8.823e-02, -9.270e-03, -1.209e-01), r);\n\tr = MulAdd(s6_8, M4(-6.015e-02, -2.346e-02, 6.853e-02, 1.356e-02, 1.668e-02, -5.883e-02, 9.045e-02, 5.750e-02, 3.076e-03, 1.077e-01, 3.610e-02, -6.277e-02, 1.998e-02, 2.734e-02, -8.978e-04, -4.823e-02), r);\n\tr = MulAdd(s7_0, M4(-5.415e-03, 1.558e-01, -4.855e-02, 8.577e-02, -2.017e-01, 1.171e-01, -4.947e-02, 2.320e-01, -6.848e-02, 1.222e-01, 4.514e-02, -3.591e-01, -3.449e-02, -1.256e-01, -9.128e-03, -3.761e-02), r);\n\tr = MulAdd(s7_1, M4(1.660e-01, -4.438e-03, -4.232e-02, -1.495e-01, -1.065e-01, 6.896e-02, 1.516e-01, 4.233e-01, -2.965e-01, -2.973e-02, -5.702e-02, 8.025e-02, -2.896e-02, 1.296e-01, -1.252e-02, -3.026e-01), r);\n\tr = MulAdd(s7_2, M4(-1.426e-01, -4.235e-02, 1.376e-01, 3.093e-01, 1.945e-02, 1.804e-01, -1.236e-01, -8.763e-02, 1.984e-03, 7.175e-03, -4.381e-02, 6.005e-02, 2.612e-02, 1.254e-02, -1.059e-01, 1.869e-01), r);\n\tr = MulAdd(s7_3, M4(-1.239e-02, -5.878e-02, 1.832e-01, -4.102e-02, 3.603e-02, -2.616e-02, -7.645e-03, -2.384e-01, -4.864e-02, -6.193e-01, -5.429e-02, -2.627e-01, -5.015e-02, -1.542e-01, -1.451e-01, -2.159e-01), r);\n\tr = MulAdd(s7_4, M4(2.153e-01, -6.111e-02, 6.958e-02, 9.047e-02, -1.440e-01, -4.363e-01, 1.504e-01, 1.883e-01, -3.967e-02, 1.885e-01, 3.403e-01, 3.098e-02, 1.393e-01, 2.831e-01, 8.139e-02, 3.354e-01), r);\n\tr = MulAdd(s7_5, M4(-6.636e-02, 2.313e-01, 3.849e-02, -6.318e-02, 4.492e-02, -4.309e-02, 6.280e-02, -9.903e-02, -5.876e-02, -2.058e-02, -6.639e-02, -2.525e-02, -1.642e-02, 1.677e-01, 8.417e-02, 9.576e-02), r);\n\tr = MulAdd(s7_6, M4(-1.045e-01, 1.402e-01, 1.075e-01, 5.835e-02, 2.309e-01, 1.113e-01, -3.922e-01, -2.443e-01, 1.291e-02, -2.973e-01, 1.194e-01, -1.155e-01, -3.812e-02, 6.339e-02, 3.666e-02, -1.579e-01), r);\n\tr = MulAdd(s7_7, M4(6.005e-02, 9.900e-02, 1.610e-01, 3.982e-02, 2.791e-01, -2.210e-01, 1.709e-01, 1.389e-01, -4.963e-02, -1.665e-01, 1.041e-01, 2.385e-01, -7.028e-02, 6.870e-02, 3.517e-02, 4.387e-02), r);\n\tr = MulAdd(s7_8, M4(-1.033e-01, -1.854e-02, 1.973e-01, 2.803e-01, -1.608e-01, -3.143e-01, -1.644e-01, 1.757e-01, -3.980e-02, -1.228e-01, -2.332e-02, -4.506e-02, -1.868e-01, -1.363e-01, 6.617e-02, -2.526e-01), r);\n\treturn r;\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 7\n//!DESC conv6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 5.993e-02, 1.598e-03, 2.229e-02, -1.137e-03 };\n\tr = MulAdd(s0_0, M4(2.718e-02, -8.202e-02, -1.018e-02, -2.853e-02, 1.284e-01, 1.685e-01, 1.379e-01, -3.260e-02, 9.981e-02, -8.816e-02, -2.800e-02, -1.010e-01, 8.629e-02, 7.835e-02, -1.294e-01, 1.779e-01), r);\n\tr = MulAdd(s0_1, M4(-6.872e-02, 1.356e-01, -9.820e-02, -9.784e-02, -1.085e-01, 3.509e-01, -5.979e-02, -8.904e-02, -2.321e-02, -1.062e-01, -5.778e-02, -4.640e-02, 9.204e-02, 1.361e-01, -1.740e-02, -1.916e-02), r);\n\tr = MulAdd(s0_2, M4(-1.198e-02, -6.108e-02, -1.008e-01, 3.357e-02, -6.802e-02, -5.062e-02, 6.497e-02, 1.741e-01, -1.439e-02, -5.226e-02, -5.589e-02, -7.474e-02, -2.590e-02, 3.298e-01, 8.048e-02, 1.229e-01), r);\n\tr = MulAdd(s0_3, M4(1.860e-02, 9.250e-02, 3.856e-02, -1.645e-02, -7.198e-02, -1.508e-01, -3.717e-01, 4.135e-02, 6.046e-02, -2.484e-02, -9.424e-02, -3.065e-02, 9.249e-02, 1.777e-01, -6.886e-02, 8.792e-02), r);\n\tr = MulAdd(s0_4, M4(5.500e-02, 3.055e-03, 6.353e-02, -6.284e-02, 2.039e-01, 3.722e-01, 1.045e-01, 2.724e-01, -1.155e-02, -8.339e-02, -1.767e-01, -1.583e-02, 1.247e-02, -2.453e-01, 5.363e-02, -4.501e-02), r);\n\tr = MulAdd(s0_5, M4(1.291e-02, -5.202e-02, 2.248e-02, -8.016e-02, -5.284e-04, 2.620e-02, -2.476e-01, -9.224e-02, 1.196e-02, 2.394e-02, 1.143e-01, -4.312e-02, 2.713e-01, -3.638e-02, 8.680e-02, -2.256e-02), r);\n\tr = MulAdd(s0_6, M4(6.454e-03, -8.439e-02, -9.302e-02, 3.210e-02, -6.510e-02, 1.940e-01, 2.069e-01, 1.123e-01, -4.923e-02, 4.551e-02, -2.022e-02, 3.547e-02, -6.468e-02, 5.224e-02, -1.750e-01, 1.339e-03), r);\n\tr = MulAdd(s0_7, M4(5.755e-02, 2.565e-02, 4.476e-02, -9.249e-02, -1.089e-01, -2.646e-01, 1.455e-01, -2.039e-01, -1.507e-02, -1.947e-02, -1.136e-01, 9.155e-02, 1.617e-02, -5.956e-02, 9.479e-02, -1.012e-01), r);\n\tr = MulAdd(s0_8, M4(-3.537e-02, 2.375e-03, 6.685e-02, 6.837e-02, -7.694e-02, 5.882e-02, 6.707e-02, -4.092e-02, 4.985e-02, -1.126e-02, -3.756e-02, -5.434e-02, -7.286e-02, -4.212e-02, 2.833e-01, 1.419e-01), r);\n\tr = MulAdd(s1_0, M4(4.212e-02, 6.631e-02, 4.420e-01, -3.196e-01, 6.577e-02, -8.087e-02, -1.349e-01, 5.879e-02, -6.299e-02, -2.390e-01, 5.608e-01, 7.497e-02, -3.163e-02, -1.203e-01, 9.255e-03, 2.999e-02), r);\n\tr = MulAdd(s1_1, M4(1.229e-02, 4.567e-01, 2.967e-02, -7.213e-02, -7.642e-02, 8.068e-02, -8.311e-02, -4.991e-02, -7.415e-02, 7.353e-03, 2.453e-01, -9.773e-03, -1.255e-03, -5.383e-02, -1.016e-03, 3.668e-02), r);\n\tr = MulAdd(s1_2, M4(-6.950e-02, -9.309e-02, 1.066e-01, 1.217e-01, -4.669e-03, -4.614e-02, -5.387e-03, -1.617e-02, -4.648e-02, -4.560e-02, 5.137e-01, 1.159e-01, -4.001e-02, 6.399e-02, -3.983e-02, 2.518e-02), r);\n\tr = MulAdd(s1_3, M4(1.325e-01, 3.240e-03, 4.325e-02, -5.013e-02, -8.231e-02, 3.874e-03, -6.022e-02, -4.994e-04, 1.329e-01, 4.500e-03, 3.934e-01, 2.831e-01, 4.297e-02, -8.310e-02, -4.804e-02, -2.274e-02), r);\n\tr = MulAdd(s1_4, M4(-2.826e-02, -4.163e-01, -4.497e-02, -1.253e-01, 2.032e-01, 1.174e-01, 7.893e-02, -6.914e-02, 1.188e-01, 2.026e-02, 5.545e-01, 1.031e-01, -1.924e-02, -1.102e-01, 7.859e-02, -1.259e-01), r);\n\tr = MulAdd(s1_5, M4(-9.041e-03, -1.733e-02, -1.069e-01, -1.481e-01, -2.549e-02, -8.548e-02, 3.717e-02, -3.341e-02, 6.513e-02, -8.513e-02, 3.118e-01, 2.700e-01, -5.118e-02, -6.066e-02, -3.830e-02, -5.354e-02), r);\n\tr = MulAdd(s1_6, M4(-1.181e-01, -2.687e-01, 3.724e-01, -1.612e-02, -4.786e-02, 2.826e-02, -9.258e-03, -2.180e-02, 6.983e-02, 6.348e-02, 3.651e-01, 2.823e-01, -1.002e-03, -2.888e-02, -8.482e-02, 1.129e-02), r);\n\tr = MulAdd(s1_7, M4(1.131e-01, 3.864e-01, 1.880e-01, 2.186e-02, -6.575e-02, -2.174e-02, -6.042e-02, -1.454e-01, 1.182e-01, 8.384e-02, 8.385e-02, 8.963e-02, 6.162e-02, 3.319e-02, 5.248e-02, 6.789e-02), r);\n\tr = MulAdd(s1_8, M4(-1.187e-01, -4.859e-02, 3.125e-01, 1.742e-01, -2.494e-02, 1.867e-02, -6.954e-03, 1.037e-01, 5.038e-02, 1.575e-01, 4.483e-01, 8.318e-02, 4.146e-02, 1.397e-02, -2.191e-02, 1.146e-01), r);\n\tr = MulAdd(s2_0, M4(8.602e-02, 8.163e-02, -7.871e-02, 4.891e-02, 7.932e-02, -9.431e-03, 3.915e-02, -8.264e-02, 1.969e-02, -2.648e-02, -3.828e-02, 3.037e-01, 2.901e-02, -1.117e-02, 7.057e-02, -1.210e-01), r);\n\tr = MulAdd(s2_1, M4(6.053e-02, 8.860e-02, -1.744e-02, -1.174e-01, -2.299e-02, 5.356e-02, -6.969e-02, 3.081e-02, 1.885e-01, -1.362e-01, 9.485e-02, -2.466e-02, -1.316e-02, -3.166e-02, 1.153e-01, -4.538e-02), r);\n\tr = MulAdd(s2_2, M4(-1.955e-03, -1.712e-02, -4.516e-02, 4.962e-03, -3.919e-03, -5.276e-02, 8.403e-02, -1.010e-01, -2.613e-02, 1.075e-02, -1.780e-02, 9.267e-02, -3.857e-02, 3.668e-02, 8.124e-03, 9.187e-02), r);\n\tr = MulAdd(s2_3, M4(-9.735e-02, -2.692e-02, -1.537e-03, 6.853e-03, 1.831e-02, -6.472e-02, -4.426e-02, -7.690e-02, -5.143e-02, 1.587e-01, -1.201e-01, 2.530e-01, -4.265e-02, 6.130e-02, -1.247e-01, 5.403e-02), r);\n\tr = MulAdd(s2_4, M4(-2.698e-01, -1.373e-01, -1.386e-01, -1.182e-01, 1.186e-01, 4.950e-02, 3.269e-02, 1.779e-02, -5.773e-04, -9.727e-02, -1.069e-02, -7.154e-02, -1.154e-02, -1.324e-01, 2.176e-01, 1.509e-01), r);\n\tr = MulAdd(s2_5, M4(-7.123e-02, -9.497e-02, 2.233e-02, -4.065e-02, -4.490e-02, -2.027e-03, -6.521e-02, -1.152e-01, 3.282e-02, -1.918e-01, -1.698e-01, -9.488e-02, -5.553e-03, -4.072e-02, -2.341e-02, -4.568e-02), r);\n\tr = MulAdd(s2_6, M4(1.462e-02, 1.500e-02, 1.312e-01, -2.640e-02, 6.620e-03, 6.753e-02, -5.512e-02, -6.508e-03, 3.561e-02, 1.192e-01, -2.606e-01, 2.067e-02, 9.152e-03, -1.196e-01, -8.657e-02, 2.429e-03), r);\n\tr = MulAdd(s2_7, M4(-1.313e-01, 4.200e-02, 4.716e-03, -1.465e-02, -4.390e-02, 3.163e-02, -1.107e-01, 1.014e-01, 6.789e-02, 4.372e-02, 2.473e-02, -1.312e-01, 5.449e-02, 1.128e-01, -1.488e-01, 3.109e-02), r);\n\tr = MulAdd(s2_8, M4(4.463e-02, 2.577e-02, -1.173e-01, 3.381e-02, 5.763e-02, 1.161e-01, 8.468e-03, -5.726e-02, -2.768e-03, 2.967e-01, 8.417e-02, 2.286e-01, -8.721e-02, -4.468e-02, 5.642e-02, 3.393e-02), r);\n\tr = MulAdd(s3_0, M4(2.785e-02, -1.059e-02, -6.081e-02, 6.824e-02, 1.019e-01, -4.879e-02, 2.369e-01, 5.359e-02, -1.638e-02, 7.854e-02, -4.884e-03, 2.060e-02, -4.335e-02, -1.612e-01, -1.381e-01, 1.541e-02), r);\n\tr = MulAdd(s3_1, M4(5.914e-03, 1.536e-01, -7.971e-02, -5.216e-02, -1.790e-01, -6.957e-02, 2.063e-01, 1.364e-01, -4.783e-02, -5.646e-02, 3.047e-02, 1.945e-01, -1.324e-02, -1.024e-01, 3.042e-02, -1.551e-01), r);\n\tr = MulAdd(s3_2, M4(-6.871e-03, -8.348e-03, -1.394e-01, -1.532e-01, -1.077e-02, 1.294e-02, 9.267e-02, 1.262e-02, -2.229e-02, 3.517e-02, -3.753e-02, 3.624e-02, -5.983e-02, 1.235e-01, -2.210e-01, 2.210e-01), r);\n\tr = MulAdd(s3_3, M4(-9.624e-02, 6.428e-02, -1.367e-01, -1.417e-01, -6.039e-02, -1.822e-01, 9.018e-02, -3.782e-02, 1.110e-02, 8.363e-02, -6.648e-02, 6.115e-02, -6.637e-02, 1.008e-01, -6.245e-02, -1.080e-01), r);\n\tr = MulAdd(s3_4, M4(-2.911e-01, -2.933e-02, -1.957e-01, -1.033e-01, -1.247e-01, -2.825e-02, 1.588e-01, -3.565e-02, -6.421e-02, 1.126e-01, -3.898e-02, -2.168e-01, -9.752e-02, 5.089e-02, -6.571e-02, -1.463e-01), r);\n\tr = MulAdd(s3_5, M4(-1.158e-02, -1.587e-01, -7.006e-02, -1.320e-01, -1.008e-01, 8.504e-02, -1.884e-01, 1.124e-01, -1.977e-02, -2.067e-02, 2.861e-02, 9.328e-02, -9.525e-03, 1.805e-02, 7.065e-02, 9.978e-02), r);\n\tr = MulAdd(s3_6, M4(6.207e-02, -4.493e-02, -3.972e-02, 2.911e-02, -6.406e-02, 1.111e-01, 2.152e-01, 7.599e-02, 6.640e-02, 3.720e-02, 1.199e-02, -3.906e-02, -3.175e-02, -9.507e-02, 1.091e-02, 1.388e-01), r);\n\tr = MulAdd(s3_7, M4(-4.887e-02, 2.451e-01, 7.242e-02, -3.975e-02, -1.296e-02, -4.460e-03, 1.782e-01, 5.657e-02, 7.401e-02, -1.326e-01, 1.258e-01, -1.073e-01, 6.708e-02, 1.576e-02, -1.016e-01, -5.122e-02), r);\n\tr = MulAdd(s3_8, M4(5.060e-02, 1.423e-01, 3.109e-02, 5.104e-02, -5.501e-03, 1.125e-01, 2.659e-01, 1.597e-01, -5.607e-02, -7.684e-02, 7.059e-02, 7.088e-03, -7.478e-02, -1.325e-01, -5.496e-02, -9.790e-02), r);\n\tr = MulAdd(s4_0, M4(1.218e-02, 2.151e-02, 1.673e-01, 1.103e-02, -7.209e-02, 4.635e-02, -4.470e-02, -5.261e-02, -4.842e-02, -7.382e-02, -1.920e-02, 6.781e-02, 2.520e-02, 2.799e-03, -9.569e-03, 6.933e-02), r);\n\tr = MulAdd(s4_1, M4(1.102e-02, -1.021e-01, -2.305e-03, -8.108e-02, 5.554e-02, 2.008e-01, 3.914e-01, 1.719e-01, 1.665e-01, 7.755e-02, 4.383e-02, -2.259e-01, 1.642e-02, 2.737e-02, -3.519e-02, -3.913e-02), r);\n\tr = MulAdd(s4_2, M4(3.852e-02, 1.418e-01, -3.151e-02, -8.120e-02, 4.332e-02, 3.105e-02, 1.170e-02, -3.059e-01, -6.805e-02, 8.697e-02, 1.121e-01, 7.421e-02, -7.301e-02, -7.581e-02, -2.036e-02, 2.260e-02), r);\n\tr = MulAdd(s4_3, M4(-1.036e-02, -8.341e-03, 5.250e-02, 7.334e-02, -1.674e-01, 9.886e-02, 1.259e-01, 9.253e-02, 4.640e-02, -1.901e-01, 1.677e-03, -2.622e-01, 4.458e-02, 1.031e-01, -3.293e-02, -8.904e-02), r);\n\tr = MulAdd(s4_4, M4(1.049e-01, 2.466e-01, 7.060e-02, -1.470e-01, 2.054e-01, -1.733e-01, 2.426e-01, 2.133e-01, 5.399e-02, -1.486e-01, 3.915e-01, 1.883e-02, 5.895e-02, 6.983e-02, -3.277e-02, 1.228e-02), r);\n\tr = MulAdd(s4_5, M4(-1.389e-02, 5.923e-02, -3.840e-02, -8.082e-02, 4.228e-02, -7.239e-02, 8.146e-02, -1.037e-01, 2.015e-03, -2.648e-01, 8.532e-04, -1.395e-01, -1.921e-02, -1.184e-01, 2.170e-01, -1.655e-01), r);\n\tr = MulAdd(s4_6, M4(2.296e-02, -1.426e-01, -6.419e-02, 1.021e-01, -1.598e-01, 1.131e-02, -9.871e-02, -1.011e-01, -1.533e-02, 3.144e-02, 1.096e-01, -4.111e-02, -2.128e-02, 7.637e-02, 7.540e-03, 7.346e-03), r);\n\tr = MulAdd(s4_7, M4(-5.896e-02, 3.258e-03, -2.254e-02, -2.093e-02, 7.896e-02, 2.150e-01, -3.433e-02, 2.686e-01, -1.904e-01, -1.228e-01, -7.412e-02, 7.048e-02, -4.302e-02, -4.938e-02, -5.080e-03, 1.112e-01), r);\n\tr = MulAdd(s4_8, M4(4.020e-04, 3.734e-02, 4.885e-02, 1.918e-02, -3.440e-02, 2.046e-01, 1.329e-01, 1.036e-01, 8.043e-02, 1.284e-01, -1.279e-01, 3.412e-02, -3.367e-02, -5.869e-03, 1.358e-01, -9.986e-02), r);\n\tr = MulAdd(s5_0, M4(1.178e-01, -7.698e-02, 3.072e-01, -1.409e-01, 3.090e-02, -2.276e-02, -1.763e-02, 7.773e-03, -2.988e-02, 1.588e-02, -2.691e-02, 1.206e-02, -9.949e-03, -7.274e-02, 4.947e-03, -1.092e-01), r);\n\tr = MulAdd(s5_1, M4(6.552e-02, -1.524e-01, -3.714e-02, 2.934e-02, 2.685e-02, -6.010e-02, 7.930e-02, -4.521e-02, 2.721e-02, -4.498e-02, -1.168e-01, 4.876e-02, 9.393e-02, -1.674e-01, -8.292e-02, -1.659e-01), r);\n\tr = MulAdd(s5_2, M4(1.975e-02, -1.259e-01, 5.959e-02, 1.999e-01, -1.048e-02, 4.878e-03, -1.101e-01, -2.550e-02, -1.032e-01, 1.116e-01, -1.352e-02, -2.595e-02, -8.715e-02, 2.644e-02, 4.559e-02, 9.168e-02), r);\n\tr = MulAdd(s5_3, M4(-6.535e-03, -9.066e-02, -6.275e-02, -6.391e-02, -6.771e-02, 8.922e-03, -6.393e-02, 2.557e-02, 4.329e-02, -1.172e-02, -5.372e-02, -6.124e-02, -2.495e-02, 8.173e-02, 7.240e-02, 4.019e-04), r);\n\tr = MulAdd(s5_4, M4(6.099e-02, -2.626e-03, 3.458e-02, -1.937e-01, -2.284e-02, 6.375e-02, 1.479e-01, 2.374e-02, 9.197e-02, -5.561e-02, 9.715e-02, 3.070e-02, -5.534e-02, -3.551e-03, -1.670e-01, 7.501e-02), r);\n\tr = MulAdd(s5_5, M4(-1.184e-01, -5.429e-02, 6.619e-02, 2.845e-01, -6.615e-02, 9.224e-02, -5.191e-02, -4.821e-02, -6.042e-02, 1.088e-01, -1.289e-01, -1.072e-02, -2.543e-02, 9.190e-02, 1.927e-01, 1.001e-01), r);\n\tr = MulAdd(s5_6, M4(4.843e-02, -7.430e-03, -1.792e-01, 5.214e-02, 1.266e-01, 2.282e-02, 4.797e-02, -6.325e-02, -2.908e-02, 5.965e-02, 1.469e-01, -3.692e-02, 4.308e-02, -5.790e-02, 1.247e-01, -2.660e-02), r);\n\tr = MulAdd(s5_7, M4(-1.313e-01, 7.601e-02, 1.268e-01, 4.791e-02, 1.074e-02, 2.548e-03, 1.374e-02, -1.269e-02, 3.504e-03, -4.516e-02, -1.498e-01, -7.743e-03, -1.316e-01, -1.548e-01, 1.141e-01, 1.482e-03), r);\n\tr = MulAdd(s5_8, M4(-1.067e-01, 1.248e-01, 1.804e-02, 1.316e-01, 6.398e-03, -4.954e-02, -9.201e-02, 6.812e-02, -6.143e-04, 1.105e-01, 8.999e-02, 4.903e-03, 2.723e-02, -6.166e-02, -2.427e-01, 8.678e-02), r);\n\tr = MulAdd(s6_0, M4(1.701e-02, 1.660e-02, -9.245e-02, 1.947e-02, 3.430e-02, 2.100e-01, 5.866e-02, -2.613e-02, 1.074e-01, 8.556e-02, 2.093e-02, -8.908e-02, -1.178e-02, -8.203e-03, -2.976e-02, 3.667e-02), r);\n\tr = MulAdd(s6_1, M4(-2.865e-02, 2.035e-03, -5.570e-02, -1.005e-01, -3.399e-02, -7.246e-02, -2.762e-02, -8.589e-02, 4.469e-02, 1.807e-02, 1.042e-01, -1.067e-01, -9.374e-02, 3.830e-02, -1.881e-02, -9.340e-02), r);\n\tr = MulAdd(s6_2, M4(1.604e-02, 1.328e-01, -3.945e-02, -1.031e-02, -6.211e-02, 7.338e-02, 1.133e-01, -9.377e-02, 4.133e-02, 9.163e-02, 1.248e-02, -1.140e-01, 2.810e-02, 1.988e-03, 9.841e-02, 1.403e-02), r);\n\tr = MulAdd(s6_3, M4(2.370e-02, 2.131e-01, 2.920e-02, 1.542e-01, 2.497e-03, -1.257e-01, -2.220e-02, -5.964e-02, 1.046e-01, 3.582e-02, -1.902e-02, 1.093e-01, 2.618e-02, -3.815e-02, 8.446e-03, 7.871e-02), r);\n\tr = MulAdd(s6_4, M4(-1.371e-02, 2.870e-02, 7.790e-02, 1.004e-01, 8.721e-02, -2.532e-02, -6.529e-02, 4.617e-02, 1.389e-01, -3.184e-02, -9.137e-02, 1.153e-01, -1.178e-02, -2.234e-02, 1.553e-01, 6.849e-02), r);\n\tr = MulAdd(s6_5, M4(4.234e-02, 5.281e-02, -3.948e-02, 1.317e-01, 1.076e-02, 4.162e-02, -1.819e-02, -3.984e-02, -4.877e-03, 1.394e-01, -2.293e-02, -1.243e-01, 2.700e-02, -9.312e-02, 9.248e-02, 1.556e-02), r);\n\tr = MulAdd(s6_6, M4(9.469e-03, 6.629e-02, -5.120e-02, -6.551e-02, 3.036e-02, 1.461e-01, -1.170e-01, -3.343e-02, -1.426e-02, -1.603e-01, -1.183e-01, 1.528e-01, 1.619e-02, -3.091e-02, -1.457e-01, 6.681e-02), r);\n\tr = MulAdd(s6_7, M4(-9.827e-02, -7.408e-02, 2.393e-01, -5.931e-02, -2.101e-02, -7.364e-02, -1.364e-01, 2.930e-02, 1.234e-01, 4.634e-03, 6.662e-03, 3.655e-02, -2.111e-02, -9.549e-02, -1.476e-01, -1.065e-01), r);\n\tr = MulAdd(s6_8, M4(3.380e-02, -3.526e-02, 1.144e-01, 1.057e-01, -6.014e-02, 2.498e-02, 1.163e-02, 6.108e-02, 8.905e-02, -8.968e-02, -7.837e-02, 2.151e-02, -2.935e-02, 9.576e-02, -1.446e-02, 6.072e-02), r);\n\tr = MulAdd(s7_0, M4(-5.216e-02, -2.012e-01, -7.780e-02, -8.909e-02, 1.070e-01, 1.525e-02, -4.843e-02, -7.690e-02, 9.561e-02, 2.095e-01, -1.436e-01, 4.353e-02, -1.491e-02, 1.593e-01, 1.141e-01, -9.252e-02), r);\n\tr = MulAdd(s7_1, M4(-6.736e-02, -2.779e-01, -1.413e-01, -1.304e-02, -1.817e-01, -1.142e-01, -9.634e-02, -1.399e-01, 8.054e-02, 5.630e-03, 9.265e-03, 6.376e-03, -8.055e-02, -8.913e-03, 7.448e-02, -2.056e-02), r);\n\tr = MulAdd(s7_2, M4(2.290e-02, -1.795e-01, -1.198e-01, 9.352e-03, 6.372e-03, -8.201e-02, 7.925e-02, -1.324e-01, 6.270e-02, 2.219e-01, -1.141e-02, -8.024e-02, -3.504e-02, -4.899e-02, 1.160e-02, 9.325e-02), r);\n\tr = MulAdd(s7_3, M4(2.246e-02, 1.945e-02, 1.189e-02, 2.097e-02, -1.055e-01, -1.246e-01, -5.041e-02, 8.908e-02, 2.917e-02, 2.635e-01, 4.136e-02, 1.109e-01, 1.061e-01, -1.678e-01, -4.121e-02, -4.184e-02), r);\n\tr = MulAdd(s7_4, M4(-7.905e-02, -6.206e-02, -1.191e-01, -1.134e-01, 9.001e-02, 1.080e-01, -2.708e-02, 5.197e-02, 4.085e-02, -3.313e-01, 1.441e-01, 6.758e-02, 2.182e-02, 3.359e-02, -3.803e-02, -8.723e-03), r);\n\tr = MulAdd(s7_5, M4(-5.527e-02, -1.682e-01, -1.711e-01, -7.321e-02, 3.732e-02, 2.499e-02, 2.254e-01, 3.600e-03, -1.251e-03, 8.911e-02, -1.379e-01, -2.739e-01, -6.599e-02, 2.278e-01, -5.999e-02, 1.317e-01), r);\n\tr = MulAdd(s7_6, M4(-1.773e-02, 4.685e-02, 4.355e-02, -1.319e-01, -4.260e-02, 8.012e-02, -1.192e-01, -4.538e-02, -1.433e-01, -8.129e-02, 2.356e-01, 6.303e-02, -5.751e-02, 1.925e-02, 3.169e-02, 5.002e-02), r);\n\tr = MulAdd(s7_7, M4(-1.623e-02, 1.433e-01, 4.231e-02, -5.840e-02, 2.220e-02, -1.479e-01, 3.722e-02, -6.694e-02, 5.373e-02, -1.452e-01, -3.046e-01, -2.998e-01, -8.402e-02, 9.354e-02, -2.874e-02, -5.484e-02), r);\n\tr = MulAdd(s7_8, M4(-3.694e-02, 1.443e-01, -9.271e-02, -8.724e-02, 1.410e-02, -2.405e-02, 7.101e-02, 6.669e-02, -2.002e-04, -1.301e-01, 1.144e-01, 7.191e-02, -1.026e-01, 6.668e-02, 1.914e-01, -2.186e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.951e-02, -3.356e-02, 3.358e-02, -6.548e-02 };\n\tr = MulAdd(s0_0, M4(-1.449e-03, -3.788e-02, -4.817e-02, -8.433e-02, 8.525e-02, -1.420e-01, 3.820e-02, -7.027e-02, 4.990e-02, 3.606e-02, 3.455e-02, 1.869e-02, 7.023e-02, 5.933e-03, -7.956e-02, -5.912e-02), r);\n\tr = MulAdd(s0_1, M4(-4.060e-02, 9.119e-02, 1.689e-02, 4.286e-02, -6.902e-02, -1.270e-01, -2.063e-01, -8.242e-02, 3.139e-02, 6.294e-03, -1.535e-02, -5.555e-02, 1.062e-01, 7.910e-02, -6.309e-02, -1.927e-01), r);\n\tr = MulAdd(s0_2, M4(-1.844e-02, 8.690e-02, 3.352e-02, -1.314e-01, -5.473e-02, 1.449e-01, -6.495e-02, -1.065e-01, -1.411e-03, 3.043e-02, 9.582e-02, 3.510e-02, 1.066e-01, -7.012e-02, 4.948e-02, 6.898e-02), r);\n\tr = MulAdd(s0_3, M4(6.229e-02, -7.540e-02, -9.648e-03, 5.513e-02, -2.084e-02, 1.864e-01, -9.347e-02, 1.115e-01, -8.091e-02, 3.918e-03, -9.502e-02, -1.516e-02, -6.488e-03, -9.567e-02, 3.291e-02, 1.383e-01), r);\n\tr = MulAdd(s0_4, M4(3.967e-02, -2.203e-02, -8.478e-03, -1.041e-01, -2.230e-01, 3.606e-01, -3.268e-02, -3.595e-02, 5.534e-02, 5.569e-03, 1.233e-01, 3.963e-02, 1.913e-01, -6.230e-02, -6.251e-02, -5.561e-02), r);\n\tr = MulAdd(s0_5, M4(2.654e-02, -9.555e-02, -2.090e-02, -3.020e-02, -1.122e-01, 5.650e-02, 4.807e-03, -1.044e-01, 2.242e-02, 6.972e-02, -4.355e-02, 4.324e-02, 1.548e-01, -1.739e-01, 1.006e-01, 1.897e-01), r);\n\tr = MulAdd(s0_6, M4(-8.032e-02, -4.289e-02, -6.317e-02, -2.093e-03, -2.295e-01, 1.410e-01, -1.817e-01, 4.578e-02, 5.401e-04, 8.403e-02, 1.777e-02, 4.613e-02, -4.502e-02, -2.727e-01, 4.863e-02, 1.278e-01), r);\n\tr = MulAdd(s0_7, M4(4.624e-02, -2.305e-02, -5.084e-02, 3.623e-02, -6.729e-02, -8.742e-02, 1.357e-02, 4.308e-02, -2.050e-02, 6.628e-02, 6.019e-02, 8.383e-02, -1.248e-01, -3.781e-01, 2.430e-01, 1.500e-01), r);\n\tr = MulAdd(s0_8, M4(-1.514e-01, 6.219e-02, -5.926e-02, 5.399e-02, -1.571e-02, -4.434e-02, -3.300e-02, 6.370e-02, -2.834e-02, -1.266e-02, 2.889e-02, 4.484e-02, 1.327e-01, -3.212e-01, 9.202e-02, -2.347e-02), r);\n\tr = MulAdd(s1_0, M4(-1.321e-01, -1.242e-01, -2.568e-01, -3.193e-01, -3.062e-03, -9.563e-02, 5.720e-02, 1.353e-01, -5.070e-02, -1.281e-01, -1.126e-01, 3.806e-02, -3.963e-03, -1.976e-02, 5.618e-03, -2.852e-02), r);\n\tr = MulAdd(s1_1, M4(1.399e-01, -4.819e-01, 6.187e-02, -7.253e-02, -2.269e-02, -5.228e-02, -2.679e-02, -1.321e-01, -1.060e-01, 6.649e-02, -7.585e-02, 1.077e-01, -1.755e-02, 6.109e-02, 1.470e-02, -3.969e-02), r);\n\tr = MulAdd(s1_2, M4(-2.312e-01, 1.536e-01, -1.916e-02, -5.501e-01, 2.476e-03, 6.083e-02, -3.332e-02, -9.714e-03, -1.185e-01, -3.233e-02, -1.179e-01, 5.697e-02, 4.700e-02, 4.405e-02, 7.180e-02, -9.035e-02), r);\n\tr = MulAdd(s1_3, M4(8.690e-02, 1.792e-01, 3.614e-01, 2.789e-01, 6.603e-02, -1.305e-01, -8.178e-02, -2.337e-02, 1.146e-01, 5.369e-03, -3.311e-01, -4.870e-02, 1.021e-02, -3.203e-02, 3.860e-02, 1.048e-01), r);\n\tr = MulAdd(s1_4, M4(-2.147e-03, 1.028e-01, 1.122e-01, 6.106e-02, -9.106e-02, -8.087e-02, -3.363e-02, -2.920e-02, 1.440e-01, -7.080e-03, -1.764e-01, -6.676e-03, 3.276e-02, -4.324e-02, -1.823e-01, 3.185e-02), r);\n\tr = MulAdd(s1_5, M4(-2.293e-01, 3.774e-01, 8.887e-02, 1.508e-01, -6.186e-02, 1.094e-03, 2.554e-02, -4.087e-02, 6.849e-02, -3.018e-02, -2.673e-01, 8.643e-02, -1.038e-01, 7.105e-02, -5.722e-02, -2.102e-02), r);\n\tr = MulAdd(s1_6, M4(-1.462e-01, -1.410e-01, 3.153e-02, 6.715e-02, 4.593e-02, -1.019e-01, 3.027e-02, 7.161e-02, 8.211e-02, -8.201e-02, -3.403e-01, 2.494e-02, 8.837e-03, 1.183e-01, 7.194e-03, 2.351e-02), r);\n\tr = MulAdd(s1_7, M4(-1.986e-01, -1.980e-01, -3.486e-01, -3.035e-02, -3.950e-02, -1.109e-02, 7.599e-02, -7.312e-02, 1.314e-01, -2.475e-01, -1.176e-01, 1.737e-02, -6.319e-02, -1.021e-01, 8.240e-02, 9.805e-02), r);\n\tr = MulAdd(s1_8, M4(-1.356e-01, -2.959e-01, 4.435e-02, 1.862e-01, 1.078e-01, -4.282e-02, 6.068e-02, 7.163e-02, 1.571e-01, -9.376e-02, -1.499e-01, -1.781e-01, 7.484e-02, 9.013e-04, 1.280e-02, 8.788e-02), r);\n\tr = MulAdd(s2_0, M4(4.763e-02, 1.396e-02, -9.853e-03, 4.906e-03, 6.963e-02, -1.599e-02, 4.233e-02, 1.564e-03, 3.934e-02, 1.577e-01, -1.629e-01, 3.703e-02, 1.013e-01, -3.866e-02, 4.691e-02, 6.083e-02), r);\n\tr = MulAdd(s2_1, M4(7.211e-03, -7.470e-02, -1.213e-01, 1.652e-01, -4.090e-02, 9.714e-02, 1.208e-01, -4.375e-02, 8.932e-02, 7.984e-02, 9.466e-02, 9.899e-02, -6.070e-02, -1.282e-01, -8.630e-02, 9.200e-02), r);\n\tr = MulAdd(s2_2, M4(-1.533e-02, 5.005e-02, 6.821e-02, 1.985e-02, 2.655e-03, -4.315e-02, -5.581e-02, -8.586e-03, 7.206e-02, -1.813e-01, -1.084e-01, -3.554e-02, -6.248e-03, -1.485e-01, 1.336e-03, -5.949e-02), r);\n\tr = MulAdd(s2_3, M4(1.412e-01, -5.786e-03, 5.339e-02, -3.114e-02, 4.882e-02, 2.980e-02, -5.618e-02, 4.602e-02, -1.591e-02, -2.496e-02, 2.719e-03, 2.095e-01, -9.699e-02, 1.175e-01, -1.799e-01, 6.091e-03), r);\n\tr = MulAdd(s2_4, M4(1.876e-01, 2.454e-03, -3.717e-01, -4.158e-02, -3.681e-02, -2.193e-03, 6.434e-02, 4.568e-02, 1.723e-01, 1.819e-01, -1.759e-01, 3.188e-02, 7.610e-02, 1.203e-02, 7.259e-02, -8.133e-02), r);\n\tr = MulAdd(s2_5, M4(3.860e-02, 5.260e-02, -9.462e-02, 1.284e-01, -8.714e-04, 4.515e-02, 6.459e-02, 8.037e-02, -1.382e-01, 1.994e-01, 5.684e-02, 2.759e-02, 2.841e-02, -2.879e-02, 4.136e-02, -4.358e-02), r);\n\tr = MulAdd(s2_6, M4(-2.640e-02, 3.660e-02, 4.060e-03, 1.007e-01, -1.999e-02, 9.608e-02, -1.717e-02, -5.437e-02, 9.631e-02, 9.981e-02, -5.108e-02, -1.873e-01, 1.695e-02, 1.345e-02, -6.706e-03, -3.257e-02), r);\n\tr = MulAdd(s2_7, M4(-4.966e-03, 6.084e-03, 3.677e-03, 6.284e-02, -7.393e-02, 1.200e-02, -4.300e-02, 1.821e-01, 4.616e-03, 8.187e-02, -1.945e-02, -8.441e-02, -8.252e-02, -1.106e-01, -8.671e-02, 1.818e-02), r);\n\tr = MulAdd(s2_8, M4(-1.126e-01, 1.018e-01, -6.764e-03, -4.124e-03, -7.969e-03, -3.700e-02, -5.286e-02, -4.189e-02, -4.189e-04, -1.389e-01, -7.266e-02, -1.118e-02, -5.688e-02, -1.906e-02, -1.242e-02, -9.303e-02), r);\n\tr = MulAdd(s3_0, M4(4.366e-02, 1.495e-02, -2.451e-02, -7.179e-02, -1.431e-02, 9.672e-02, 2.586e-03, -4.483e-02, -2.061e-02, 8.246e-02, -1.682e-02, -1.404e-02, -2.087e-02, -2.342e-01, 1.283e-01, 2.121e-01), r);\n\tr = MulAdd(s3_1, M4(1.261e-01, -6.772e-03, 8.997e-02, 1.745e-01, -4.420e-02, -4.272e-01, 8.984e-02, -2.352e-03, -4.986e-02, 4.329e-02, 8.367e-02, 1.726e-03, 3.509e-03, -4.385e-02, -4.679e-02, -1.314e-01), r);\n\tr = MulAdd(s3_2, M4(-7.726e-02, 9.546e-02, 1.853e-01, 1.082e-01, 5.563e-02, -8.235e-02, 5.996e-03, -1.406e-01, -1.509e-01, 6.791e-02, -8.118e-03, 1.205e-02, 1.217e-01, -5.449e-02, 8.749e-02, 6.664e-02), r);\n\tr = MulAdd(s3_3, M4(2.327e-01, 1.858e-01, 8.372e-02, -7.687e-03, 7.035e-02, 1.204e-01, 4.574e-02, 6.539e-02, -7.779e-03, 4.843e-02, -3.028e-02, 3.303e-03, -2.231e-01, 1.219e-02, -1.511e-01, 5.250e-03), r);\n\tr = MulAdd(s3_4, M4(3.289e-01, 9.314e-02, -3.150e-01, 2.754e-02, -2.214e-01, -2.299e-01, 1.017e-01, -2.399e-03, 6.282e-02, -1.404e-01, -1.809e-02, -4.570e-02, -9.357e-02, -3.785e-03, -5.860e-02, -1.008e-01), r);\n\tr = MulAdd(s3_5, M4(1.649e-01, 1.409e-02, -4.145e-02, 9.666e-02, 1.632e-02, 2.878e-02, -6.932e-02, -7.232e-02, -1.695e-02, 2.192e-02, 3.412e-02, -1.426e-02, -7.193e-02, 2.589e-02, -3.586e-03, 7.870e-02), r);\n\tr = MulAdd(s3_6, M4(4.423e-03, -2.012e-01, -3.371e-02, 1.100e-01, 2.680e-02, -9.639e-02, 4.793e-03, -5.579e-02, 8.033e-02, -3.963e-02, 4.941e-02, -3.197e-02, 3.032e-02, -2.103e-01, 4.275e-02, 1.724e-02), r);\n\tr = MulAdd(s3_7, M4(2.560e-01, 1.953e-02, 2.999e-02, -5.016e-02, 2.512e-02, -2.743e-02, -3.543e-02, 1.478e-01, 6.823e-02, 4.485e-02, 1.025e-01, 8.565e-04, -2.563e-02, 1.238e-01, -5.389e-02, -8.330e-02), r);\n\tr = MulAdd(s3_8, M4(-4.668e-02, 5.297e-03, -6.290e-04, -1.017e-01, -3.426e-02, -3.534e-02, -3.185e-01, 9.515e-02, 2.685e-02, -6.823e-02, 2.208e-02, 3.880e-02, -1.261e-02, 2.131e-02, 7.511e-02, 5.117e-02), r);\n\tr = MulAdd(s4_0, M4(-5.593e-02, 1.841e-01, -1.357e-01, -3.179e-02, 9.801e-02, 2.526e-01, 8.905e-02, 4.473e-02, -2.999e-02, 1.005e-02, 4.075e-02, -9.351e-02, 1.532e-01, -4.976e-02, 8.538e-02, 4.393e-02), r);\n\tr = MulAdd(s4_1, M4(-2.394e-02, 6.815e-03, -4.025e-03, 4.245e-02, 6.386e-02, -2.665e-01, -2.094e-02, -1.530e-01, 4.269e-02, 9.683e-02, -5.149e-02, -1.819e-01, 1.264e-01, 8.284e-02, 5.323e-02, -2.883e-02), r);\n\tr = MulAdd(s4_2, M4(-3.400e-02, -4.448e-02, 4.493e-02, -4.677e-03, 1.381e-02, 1.036e-02, -2.390e-03, -5.164e-02, -4.366e-02, 9.971e-02, -1.188e-01, -5.287e-02, -1.093e-01, 4.205e-02, 5.267e-02, -1.054e-01), r);\n\tr = MulAdd(s4_3, M4(-9.811e-02, 3.292e-02, -9.772e-02, -4.517e-02, 2.219e-01, -1.472e-01, 2.143e-01, -4.187e-02, -1.091e-01, -2.002e-01, -6.219e-02, -6.699e-02, 2.276e-02, 1.721e-03, -1.623e-02, 7.721e-02), r);\n\tr = MulAdd(s4_4, M4(-5.358e-03, 4.215e-02, -1.726e-01, -1.417e-03, 2.992e-01, 1.606e-01, -1.260e-01, -3.107e-01, -6.310e-02, -1.652e-01, 1.243e-01, -1.744e-01, 5.203e-02, -9.819e-02, -1.667e-01, -4.351e-03), r);\n\tr = MulAdd(s4_5, M4(-7.169e-03, -1.085e-01, 8.616e-02, -1.154e-01, 7.473e-02, 1.240e-01, 1.243e-01, 7.347e-02, -1.291e-01, 1.030e-01, -3.936e-02, -5.861e-03, 3.724e-02, 1.333e-01, 5.432e-02, -1.142e-02), r);\n\tr = MulAdd(s4_6, M4(-5.442e-02, 1.410e-01, -1.242e-02, -4.804e-02, -3.588e-01, 1.485e-01, 9.070e-02, 4.851e-02, 1.056e-01, -9.155e-02, 1.454e-01, 1.721e-01, -4.976e-02, -8.033e-02, 4.698e-02, -1.097e-01), r);\n\tr = MulAdd(s4_7, M4(3.759e-02, -1.753e-02, 8.650e-02, 8.278e-02, 1.691e-01, 2.585e-02, -1.371e-01, -1.095e-02, 1.284e-01, -4.929e-02, 5.555e-02, 6.373e-02, -2.994e-02, -1.625e-01, -6.110e-02, 3.357e-02), r);\n\tr = MulAdd(s4_8, M4(-3.512e-02, -3.154e-02, -5.124e-02, -1.319e-02, -1.003e-01, 4.170e-02, -6.858e-03, -8.647e-02, -2.632e-02, 8.094e-02, -4.234e-02, -1.669e-01, -9.504e-02, 6.567e-03, 7.794e-03, 2.035e-02), r);\n\tr = MulAdd(s5_0, M4(-3.748e-02, -1.013e-01, -6.086e-02, 5.491e-02, 5.568e-02, -1.378e-02, -1.937e-02, 2.341e-02, -5.457e-02, -6.810e-02, 1.025e-01, 1.463e-02, -1.227e-02, 6.973e-02, 1.869e-03, 5.927e-02), r);\n\tr = MulAdd(s5_1, M4(7.857e-02, -1.122e-01, -1.831e-01, -6.384e-03, -3.573e-02, -5.984e-03, -5.606e-02, 3.123e-02, -6.017e-02, -5.027e-02, 1.882e-03, 2.747e-02, 4.596e-02, -2.555e-02, -1.390e-02, 1.651e-02), r);\n\tr = MulAdd(s5_2, M4(9.069e-02, -4.829e-03, 7.600e-04, 8.162e-02, -1.057e-01, 3.041e-02, 6.462e-02, -1.854e-02, 6.003e-02, -7.012e-02, 1.015e-01, 2.188e-02, 3.183e-02, 2.465e-01, 1.209e-01, 1.290e-01), r);\n\tr = MulAdd(s5_3, M4(-8.769e-02, 1.002e-01, 4.918e-02, -1.161e-01, 5.834e-02, -9.595e-03, 1.756e-02, -3.156e-02, -4.703e-02, 4.591e-03, -2.730e-02, -7.831e-02, -6.395e-02, 1.042e-01, -3.743e-02, 1.027e-01), r);\n\tr = MulAdd(s5_4, M4(-6.949e-02, 1.673e-01, -2.080e-02, 1.337e-01, 7.394e-03, -3.346e-02, 3.889e-02, -7.691e-03, -9.445e-03, 1.433e-01, -9.238e-02, 8.740e-02, -2.214e-01, -1.635e-02, -1.793e-01, 1.913e-02), r);\n\tr = MulAdd(s5_5, M4(7.810e-02, -1.914e-02, 8.791e-02, -1.753e-01, -8.120e-02, -5.981e-02, 1.780e-03, -4.513e-03, 1.851e-02, 1.581e-01, -5.446e-02, 2.837e-02, 6.029e-02, 3.778e-02, 3.337e-03, -2.154e-02), r);\n\tr = MulAdd(s5_6, M4(-8.270e-02, 1.873e-01, 1.084e-03, 1.234e-01, 3.482e-02, -6.640e-02, -4.890e-02, 2.690e-02, 8.170e-02, -5.379e-02, 7.963e-02, 7.949e-02, 1.166e-01, 4.965e-02, 7.708e-02, -1.939e-02), r);\n\tr = MulAdd(s5_7, M4(1.636e-01, 8.186e-02, 2.299e-01, 2.185e-01, 5.592e-02, -6.926e-02, -5.674e-03, 1.554e-02, -1.033e-02, -9.731e-02, -1.354e-02, -4.377e-02, -1.938e-02, -5.919e-02, 2.697e-02, 8.038e-02), r);\n\tr = MulAdd(s5_8, M4(1.209e-01, -4.855e-02, 1.896e-02, 1.332e-01, 1.123e-02, -1.378e-02, 2.569e-02, 6.872e-02, 1.880e-01, -1.099e-02, -8.497e-02, -9.332e-02, 6.168e-02, 7.522e-02, 8.633e-02, 4.627e-02), r);\n\tr = MulAdd(s6_0, M4(7.403e-03, 8.145e-03, -6.153e-02, 9.502e-02, 2.571e-02, -8.655e-02, -1.008e-02, -7.699e-02, -4.673e-02, 2.114e-02, -1.793e-02, -5.573e-02, 2.973e-02, 2.998e-02, -8.564e-02, -9.803e-02), r);\n\tr = MulAdd(s6_1, M4(-1.991e-02, 5.373e-03, -1.266e-02, -8.695e-02, 1.257e-02, 1.773e-03, 1.552e-02, 1.419e-01, -2.419e-02, 6.933e-02, 3.161e-02, 8.895e-02, -1.247e-01, -1.227e-01, 1.894e-02, -1.078e-01), r);\n\tr = MulAdd(s6_2, M4(-2.697e-02, 1.469e-01, 3.410e-03, -2.511e-02, -1.563e-01, 1.888e-02, 2.321e-02, 2.802e-02, -9.077e-02, 5.797e-02, -7.054e-02, 4.460e-02, -3.892e-03, -6.443e-02, -5.339e-02, 5.030e-02), r);\n\tr = MulAdd(s6_3, M4(-6.725e-02, -3.061e-01, -1.303e-02, -2.865e-02, 5.562e-02, -2.992e-02, 9.534e-03, 7.976e-02, 2.254e-03, 4.044e-03, -1.261e-01, -5.085e-02, 3.802e-03, 7.943e-02, -2.536e-02, -4.610e-02), r);\n\tr = MulAdd(s6_4, M4(1.153e-01, -1.238e-01, -2.200e-02, 1.969e-01, -1.159e-01, 1.269e-01, -3.461e-03, 1.008e-01, -9.917e-02, -2.784e-02, 6.399e-02, 3.246e-02, 1.811e-01, 1.800e-02, 1.404e-01, -2.439e-02), r);\n\tr = MulAdd(s6_5, M4(4.798e-02, 2.964e-04, 7.136e-02, 2.714e-02, 8.785e-03, -8.585e-02, -2.140e-02, -1.955e-02, 6.315e-03, -9.827e-02, -2.721e-02, 9.465e-02, 1.597e-02, -2.619e-02, 3.501e-02, 1.766e-01), r);\n\tr = MulAdd(s6_6, M4(-1.248e-01, -1.063e-01, 5.070e-02, 1.713e-01, 1.704e-02, -1.348e-01, 8.956e-03, -2.971e-02, 5.520e-02, 2.207e-02, 1.438e-02, 4.820e-02, 3.794e-02, 2.495e-01, -2.920e-03, -1.143e-01), r);\n\tr = MulAdd(s6_7, M4(2.949e-02, 9.060e-02, 1.596e-01, 1.733e-01, 7.490e-03, -3.273e-03, 7.705e-02, -3.255e-03, -7.283e-02, 8.520e-02, -1.070e-01, 3.652e-02, -4.259e-02, -1.457e-02, 5.281e-02, -1.463e-03), r);\n\tr = MulAdd(s6_8, M4(4.699e-02, 1.872e-03, 3.358e-02, -6.305e-02, 3.424e-02, -4.051e-02, 3.316e-02, -5.758e-02, -3.096e-02, -4.929e-02, 3.446e-02, -4.537e-02, -6.640e-02, -3.523e-02, -3.002e-02, 5.090e-02), r);\n\tr = MulAdd(s7_0, M4(-1.065e-01, -1.382e-01, -1.350e-02, -1.311e-01, -2.758e-02, -1.097e-01, -7.546e-02, 6.526e-02, 2.005e-02, 1.840e-01, 8.076e-02, 7.751e-02, -2.236e-02, -1.061e-02, -2.241e-03, -5.586e-02), r);\n\tr = MulAdd(s7_1, M4(4.041e-02, -9.250e-02, 9.476e-02, -2.626e-02, -5.993e-02, 1.773e-01, 1.289e-01, -1.513e-01, 1.215e-01, -4.172e-02, 6.705e-02, 6.648e-02, -1.480e-02, 1.078e-01, -8.067e-02, -9.147e-02), r);\n\tr = MulAdd(s7_2, M4(2.040e-02, -1.313e-01, 5.566e-02, -5.936e-02, -1.045e-01, -3.466e-02, 9.358e-02, 2.059e-01, 3.470e-02, 7.119e-02, 1.052e-01, -1.533e-02, -7.687e-02, -3.042e-02, -1.086e-01, -1.487e-03), r);\n\tr = MulAdd(s7_3, M4(-6.280e-02, 2.873e-01, -6.877e-02, -4.537e-02, -7.636e-02, -8.482e-03, -6.059e-03, 3.606e-02, -1.828e-01, -8.439e-02, -1.074e-01, 6.662e-02, -6.266e-02, -1.555e-01, 5.204e-02, 8.863e-02), r);\n\tr = MulAdd(s7_4, M4(-1.813e-02, 5.239e-02, -1.131e-01, -3.252e-01, -6.431e-03, 2.313e-01, -1.137e-01, 1.332e-02, -2.509e-01, -1.914e-01, -7.171e-02, 2.377e-02, -2.707e-02, 1.690e-01, 4.611e-02, -1.564e-01), r);\n\tr = MulAdd(s7_5, M4(1.837e-02, -1.174e-01, 4.699e-02, -1.890e-01, -1.476e-02, -1.837e-01, 1.861e-02, -5.965e-02, -1.214e-01, 3.479e-01, 6.584e-02, -2.092e-02, -3.067e-02, 5.263e-02, 1.100e-01, -2.483e-02), r);\n\tr = MulAdd(s7_6, M4(-1.633e-01, 7.453e-02, -1.681e-01, -1.765e-01, -7.604e-02, 1.990e-01, 8.703e-02, 1.021e-01, -3.659e-02, -1.725e-01, 8.921e-02, 1.931e-01, -6.031e-02, 1.625e-01, -1.275e-01, -2.902e-01), r);\n\tr = MulAdd(s7_7, M4(1.879e-01, 1.781e-01, -5.226e-02, -7.865e-02, -6.034e-02, -7.494e-02, -1.315e-02, -1.429e-02, -1.961e-01, -9.814e-02, 6.942e-02, 9.747e-02, -1.413e-01, 7.411e-03, 1.198e-01, -2.484e-03), r);\n\tr = MulAdd(s7_8, M4(-2.555e-02, -4.452e-02, -8.810e-02, -5.188e-02, 8.389e-02, 7.605e-02, 2.617e-02, 5.358e-02, -3.156e-02, 7.391e-02, 4.719e-03, -1.311e-01, -1.674e-01, -8.511e-02, 2.953e-03, 1.282e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 6.961e-03, -1.709e-02, -1.395e-02, 4.358e-02 };\n\tr = MulAdd(s0_0, M4(7.160e-02, 3.959e-02, -2.049e-02, -2.823e-02, 2.106e-01, 1.167e-01, 6.484e-03, 1.342e-01, 3.913e-02, 6.992e-02, -7.948e-02, -4.343e-02, -4.116e-02, -1.167e-02, -5.642e-02, 4.596e-02), r);\n\tr = MulAdd(s0_1, M4(-7.604e-02, -4.577e-02, 1.024e-02, -1.992e-02, -1.748e-02, 1.316e-01, -3.491e-02, -1.980e-01, -3.151e-02, -2.771e-02, -5.439e-02, 7.762e-03, -8.407e-02, -5.413e-02, -3.735e-02, 1.801e-01), r);\n\tr = MulAdd(s0_2, M4(-6.569e-03, 6.431e-03, 8.401e-02, 7.388e-02, 7.487e-02, 8.721e-02, -1.593e-01, 1.559e-01, -5.005e-02, -2.007e-02, -7.181e-02, -2.917e-02, -7.560e-02, 9.458e-03, -2.257e-01, 7.142e-02), r);\n\tr = MulAdd(s0_3, M4(2.403e-02, 1.892e-01, -6.111e-02, -1.264e-01, -1.122e-01, 1.511e-01, -1.540e-01, -5.612e-02, 4.382e-02, 1.491e-01, 7.364e-02, -3.691e-02, -8.071e-02, 1.279e-02, 2.362e-01, 2.400e-02), r);\n\tr = MulAdd(s0_4, M4(1.469e-02, -6.055e-02, 2.503e-02, 5.858e-02, -4.516e-02, 1.825e-02, 1.345e-01, 8.446e-03, 8.555e-02, -2.525e-02, -4.071e-02, -5.975e-02, -1.230e-01, 2.685e-01, -2.223e-01, 1.558e-04), r);\n\tr = MulAdd(s0_5, M4(-3.817e-02, 1.296e-02, 6.674e-02, 5.253e-02, -1.203e-01, 1.307e-01, -1.799e-02, -1.414e-01, -2.474e-02, 4.198e-02, -5.009e-02, -3.853e-02, 3.552e-02, -1.767e-01, 3.049e-01, 7.852e-02), r);\n\tr = MulAdd(s0_6, M4(-1.278e-02, 5.320e-02, -7.747e-02, -9.217e-02, 2.075e-01, -2.841e-02, -2.475e-01, -1.104e-01, 2.502e-02, 1.639e-02, 2.095e-02, -7.334e-02, -1.649e-01, -1.055e-01, -7.679e-03, 1.140e-01), r);\n\tr = MulAdd(s0_7, M4(2.875e-02, -1.929e-01, -3.281e-02, -4.322e-02, 8.614e-02, 4.138e-02, -1.009e-01, 1.346e-02, 1.151e-02, -1.695e-01, -1.484e-02, 2.440e-03, -4.026e-01, 1.997e-01, 1.299e-01, 8.595e-03), r);\n\tr = MulAdd(s0_8, M4(-5.243e-02, -7.821e-02, 1.424e-02, 1.868e-02, 1.832e-02, 3.947e-02, -4.653e-02, 1.648e-01, 1.558e-02, -1.228e-01, -8.312e-04, 7.195e-02, -7.671e-02, 1.973e-01, -7.385e-03, 9.162e-02), r);\n\tr = MulAdd(s1_0, M4(1.297e-01, 2.295e-01, 3.568e-01, -8.589e-02, 2.555e-02, -1.081e-01, -1.752e-02, 7.812e-02, 1.454e-01, -7.115e-02, 1.180e-01, 3.964e-02, -6.218e-02, -7.728e-02, -6.482e-02, 2.299e-02), r);\n\tr = MulAdd(s1_1, M4(-2.977e-02, 7.989e-02, -8.135e-02, 9.227e-02, -5.965e-02, -5.951e-02, -5.747e-02, -1.525e-01, 6.371e-02, 2.378e-01, 1.418e-02, -3.680e-01, -5.501e-02, 1.312e-01, 3.657e-02, -1.418e-01), r);\n\tr = MulAdd(s1_2, M4(-3.865e-02, -4.865e-02, -1.064e-01, 3.632e-02, 8.938e-03, 1.680e-02, -3.495e-02, 5.834e-02, -4.729e-02, 2.859e-01, 1.917e-01, -2.803e-01, -4.299e-02, 1.389e-02, -6.079e-02, 7.421e-02), r);\n\tr = MulAdd(s1_3, M4(-7.702e-02, 5.567e-02, -4.026e-01, -2.588e-01, -1.012e-01, -1.251e-01, -3.978e-02, 4.585e-02, 1.430e-01, 2.736e-01, 1.218e-01, -2.842e-01, 6.805e-02, -5.404e-03, 1.303e-02, 1.760e-03), r);\n\tr = MulAdd(s1_4, M4(7.792e-02, -2.391e-01, 1.851e-01, -4.511e-02, 4.014e-03, -9.545e-02, -3.032e-02, 7.058e-02, 2.689e-02, 1.940e-01, 1.164e-01, -6.738e-02, -5.119e-02, 8.169e-02, 3.390e-03, -6.561e-03), r);\n\tr = MulAdd(s1_5, M4(-1.986e-01, -3.959e-01, -9.847e-02, 1.115e-01, -4.450e-03, 7.398e-02, -1.009e-01, 5.284e-04, 5.953e-03, 1.209e-01, -5.698e-02, -7.200e-02, -2.860e-02, -2.696e-02, 4.271e-02, -2.730e-02), r);\n\tr = MulAdd(s1_6, M4(3.630e-02, 2.963e-01, -7.472e-02, 3.535e-01, 1.700e-01, 6.717e-02, 1.545e-03, -3.432e-02, -2.697e-02, -1.726e-02, 1.410e-01, -1.381e-01, -1.918e-03, -7.448e-02, -2.806e-02, 8.082e-02), r);\n\tr = MulAdd(s1_7, M4(6.192e-02, -2.643e-02, 3.315e-01, 3.428e-02, 6.790e-02, 8.312e-02, 1.480e-01, -2.098e-02, -7.603e-02, 2.345e-01, 1.325e-01, -7.989e-02, 8.093e-02, -3.724e-02, -4.953e-03, -6.597e-03), r);\n\tr = MulAdd(s1_8, M4(-1.254e-01, 1.435e-01, -1.409e-01, 1.166e-01, -1.503e-02, 7.107e-03, -3.024e-02, -4.282e-02, 2.150e-01, 1.797e-01, 1.386e-01, -8.273e-02, 5.003e-02, -2.082e-01, 6.736e-02, -1.456e-02), r);\n\tr = MulAdd(s2_0, M4(5.291e-02, 4.493e-02, 1.754e-02, -1.373e-02, 6.290e-02, -4.889e-02, 1.684e-02, 2.581e-02, 1.057e-01, 6.659e-02, -1.783e-01, 2.118e-01, -3.852e-04, -9.217e-02, 6.860e-02, 1.082e-02), r);\n\tr = MulAdd(s2_1, M4(-8.459e-02, 5.697e-02, 1.011e-02, 4.819e-02, -2.456e-02, -7.738e-02, -1.274e-01, -2.464e-02, 5.461e-02, 1.497e-01, 1.442e-01, 1.067e-01, 3.481e-02, -3.209e-02, -5.797e-02, 2.584e-03), r);\n\tr = MulAdd(s2_2, M4(-7.790e-02, 5.481e-02, 1.761e-02, -1.736e-02, 3.235e-02, -3.660e-02, 1.891e-01, 4.832e-02, -7.073e-02, -1.419e-01, 3.421e-02, 7.474e-02, 6.528e-02, -1.652e-01, 1.266e-01, 5.471e-02), r);\n\tr = MulAdd(s2_3, M4(1.544e-01, 3.630e-02, -7.690e-02, 1.275e-01, 2.818e-03, 3.921e-02, 7.246e-04, -3.142e-02, -1.288e-01, 1.560e-02, -9.013e-02, -1.366e-01, 1.448e-02, -1.190e-01, -1.364e-01, 6.835e-02), r);\n\tr = MulAdd(s2_4, M4(-5.506e-02, -1.212e-01, -4.502e-02, 2.112e-02, 2.754e-02, 1.100e-01, 7.503e-02, 5.057e-02, 4.632e-02, -4.281e-02, 8.304e-02, -1.328e-02, 5.502e-02, -1.287e-01, 8.940e-02, 4.167e-02), r);\n\tr = MulAdd(s2_5, M4(-6.920e-03, -5.461e-03, 8.102e-02, -1.422e-01, -6.519e-02, 5.124e-02, 7.573e-02, -5.185e-03, 7.927e-02, -6.519e-02, 1.565e-02, -7.461e-02, -1.193e-01, 1.284e-01, 1.002e-01, -2.378e-02), r);\n\tr = MulAdd(s2_6, M4(1.436e-01, -6.016e-02, -8.235e-02, 3.355e-02, 7.730e-02, 1.633e-01, -9.259e-02, -4.074e-02, 9.246e-02, -1.497e-01, 6.639e-02, 3.161e-03, -3.123e-02, 8.584e-02, 1.533e-01, -4.745e-02), r);\n\tr = MulAdd(s2_7, M4(-1.694e-01, 7.646e-02, 1.865e-01, 3.646e-02, 1.345e-02, -7.526e-02, -1.048e-01, -6.824e-02, 3.487e-01, -2.505e-01, 2.535e-01, -6.138e-02, 9.207e-02, -1.351e-01, 5.327e-02, -1.056e-02), r);\n\tr = MulAdd(s2_8, M4(-5.303e-03, -2.066e-02, -1.876e-02, 7.126e-02, 2.470e-02, -8.398e-02, 1.877e-01, 3.652e-03, -1.164e-01, 1.180e-01, 3.439e-01, -2.599e-01, -5.798e-02, -6.116e-02, -7.023e-02, 1.361e-01), r);\n\tr = MulAdd(s3_0, M4(4.821e-02, -1.252e-02, 1.707e-01, 9.750e-02, -2.193e-02, -1.987e-01, 3.003e-01, -7.428e-02, 3.308e-03, 9.133e-02, -2.076e-02, 3.022e-02, -1.687e-01, -1.213e-02, -9.804e-03, -2.377e-02), r);\n\tr = MulAdd(s3_1, M4(3.894e-02, 4.871e-03, -9.353e-02, 1.207e-01, -1.865e-02, -2.623e-01, 5.401e-02, -1.799e-01, -6.579e-04, -1.822e-01, 6.615e-02, -1.295e-02, -1.341e-02, 1.533e-01, -1.098e-01, -5.478e-02), r);\n\tr = MulAdd(s3_2, M4(-1.066e-01, -1.817e-01, -1.226e-01, -7.961e-02, 4.815e-02, 1.080e-02, -2.573e-01, -1.078e-01, -5.921e-02, 4.376e-02, -1.201e-01, -8.660e-02, 3.234e-03, -1.401e-01, 2.607e-02, -2.978e-02), r);\n\tr = MulAdd(s3_3, M4(8.189e-02, -2.529e-02, -4.234e-02, -8.320e-02, -1.539e-01, -2.681e-01, 1.780e-02, 1.052e-01, -1.338e-01, 5.823e-02, 8.980e-04, 3.932e-02, 2.042e-02, -9.173e-02, -1.073e-01, -8.834e-02), r);\n\tr = MulAdd(s3_4, M4(-1.762e-01, -1.966e-01, 3.809e-02, 3.330e-03, -7.671e-03, -8.328e-02, 7.621e-02, -1.166e-01, 3.125e-02, -8.722e-03, 3.297e-02, 5.293e-02, 4.815e-02, -3.511e-02, -1.132e-02, 7.434e-02), r);\n\tr = MulAdd(s3_5, M4(-2.362e-03, -1.247e-01, 1.143e-02, -2.894e-01, -2.176e-02, -2.243e-01, -3.407e-01, 2.051e-02, 7.622e-02, -5.383e-02, 3.306e-02, 9.119e-02, 2.668e-03, 1.585e-01, 4.227e-02, -2.221e-01), r);\n\tr = MulAdd(s3_6, M4(8.474e-02, -4.372e-02, -3.331e-02, -9.092e-02, 3.010e-02, 1.381e-01, 6.560e-02, 8.138e-02, -9.129e-02, -1.421e-01, 4.482e-02, 1.409e-02, -1.773e-01, 1.386e-01, -3.668e-02, -9.246e-02), r);\n\tr = MulAdd(s3_7, M4(7.007e-03, 9.400e-02, -4.633e-02, -3.270e-02, -6.299e-02, 1.121e-01, 2.946e-02, -1.837e-01, -4.667e-02, 6.520e-02, 6.433e-02, -1.248e-01, -4.962e-02, -4.701e-02, 7.428e-02, -1.523e-02), r);\n\tr = MulAdd(s3_8, M4(5.168e-02, 5.371e-02, 1.820e-02, -1.103e-02, 5.489e-02, -1.232e-01, -1.559e-01, -8.951e-02, -5.942e-02, 9.437e-02, -4.487e-02, -1.499e-02, -3.793e-02, 1.250e-01, -9.444e-03, 1.480e-01), r);\n\tr = MulAdd(s4_0, M4(6.804e-02, 8.773e-02, -5.802e-02, 1.059e-02, -3.449e-01, 5.425e-02, 4.849e-01, -3.830e-01, -2.164e-02, -4.346e-02, 4.221e-02, 8.661e-02, 7.835e-02, -1.134e-01, -5.008e-02, 1.706e-02), r);\n\tr = MulAdd(s4_1, M4(-2.090e-02, -7.901e-03, 1.995e-02, 4.231e-02, 1.159e-01, -7.329e-02, -3.859e-01, 2.212e-01, 9.159e-02, 1.050e-01, 1.248e-01, 3.892e-03, -8.009e-02, -7.096e-02, -4.613e-05, -1.465e-01), r);\n\tr = MulAdd(s4_2, M4(-4.982e-02, 1.360e-02, 9.749e-02, -2.727e-02, -8.277e-02, -1.126e-01, 3.561e-01, -2.532e-01, -6.652e-02, 1.013e-02, 4.226e-03, 1.232e-01, -9.655e-04, -6.240e-02, 4.407e-02, -4.948e-02), r);\n\tr = MulAdd(s4_3, M4(-1.101e-01, -8.031e-02, 2.043e-02, 3.359e-02, 4.259e-02, 3.845e-01, -1.398e-01, 8.792e-02, -1.081e-01, 1.561e-01, 1.212e-01, -1.222e-01, -9.512e-02, 3.958e-02, -4.668e-02, 2.330e-02), r);\n\tr = MulAdd(s4_4, M4(3.035e-02, 3.979e-02, -1.812e-01, 3.794e-02, -2.506e-01, -1.023e-01, 8.688e-02, -1.077e-01, -1.579e-02, -1.744e-02, 2.586e-01, -9.867e-02, 1.761e-01, 7.282e-02, -4.643e-02, 3.582e-02), r);\n\tr = MulAdd(s4_5, M4(-3.809e-02, 1.975e-02, 9.684e-02, -1.193e-01, 1.942e-02, -2.486e-02, -1.234e-01, 1.601e-01, -3.902e-02, -1.317e-01, 1.647e-02, -4.586e-02, -9.337e-02, 4.688e-02, 8.111e-03, 2.885e-02), r);\n\tr = MulAdd(s4_6, M4(-3.425e-02, -7.043e-02, -1.114e-03, 1.759e-02, 7.011e-02, -9.291e-02, -8.938e-02, 6.154e-02, -2.224e-01, 1.780e-02, -1.546e-01, -9.397e-02, -5.968e-02, 2.124e-01, -8.652e-03, 2.938e-02), r);\n\tr = MulAdd(s4_7, M4(5.105e-02, 3.220e-02, -2.474e-02, -1.252e-01, 3.565e-01, -1.327e-01, -2.616e-01, -1.379e-01, -3.732e-02, 4.103e-01, -1.346e-02, 1.390e-01, 4.298e-02, 7.243e-02, -8.570e-02, -4.937e-02), r);\n\tr = MulAdd(s4_8, M4(-6.515e-02, -4.400e-02, 6.307e-02, -1.577e-02, -7.272e-02, -2.053e-03, 3.536e-01, 1.460e-01, -1.441e-01, 3.251e-02, 9.263e-02, 1.137e-01, -1.025e-02, 1.260e-01, 5.062e-02, 1.262e-01), r);\n\tr = MulAdd(s5_0, M4(-1.054e-01, -1.766e-02, -6.873e-02, 2.811e-02, 2.432e-02, -1.167e-02, 8.383e-02, 9.496e-03, 1.142e-02, 2.015e-03, -1.043e-01, -1.470e-02, 2.569e-02, 3.491e-02, -1.137e-01, 1.066e-01), r);\n\tr = MulAdd(s5_1, M4(-8.272e-02, -6.838e-02, -6.908e-02, 5.116e-02, 1.982e-02, 6.091e-02, -1.664e-02, 2.784e-02, -8.694e-02, -8.021e-02, 4.080e-03, -7.106e-02, -1.658e-01, -1.153e-01, -6.929e-03, 9.907e-02), r);\n\tr = MulAdd(s5_2, M4(3.934e-02, -1.248e-02, 5.516e-02, 2.029e-01, -8.927e-02, -2.967e-02, 2.056e-03, -2.477e-02, -2.253e-02, 6.042e-02, -6.240e-02, -1.136e-01, -3.062e-02, -1.227e-01, -1.619e-01, 5.870e-02), r);\n\tr = MulAdd(s5_3, M4(-2.155e-01, -7.198e-02, -2.248e-02, -1.516e-01, -7.367e-02, 9.895e-02, -2.285e-02, -9.157e-03, 1.455e-01, -1.178e-02, -9.028e-04, 9.636e-02, 5.316e-02, -2.890e-02, -8.603e-02, -8.960e-02), r);\n\tr = MulAdd(s5_4, M4(-2.287e-01, -3.977e-03, -1.611e-01, 9.548e-03, -2.645e-02, 8.231e-02, 2.449e-02, -2.528e-02, -8.187e-02, -3.543e-02, 1.589e-01, -2.174e-02, 1.426e-01, 1.432e-01, 4.631e-02, -1.521e-01), r);\n\tr = MulAdd(s5_5, M4(1.351e-01, 1.218e-02, 1.307e-01, -2.186e-01, -1.043e-02, 9.595e-03, 6.245e-02, -3.976e-02, 7.011e-02, -1.027e-01, -2.723e-02, 4.857e-02, 2.734e-03, 1.324e-02, -6.431e-02, -4.493e-02), r);\n\tr = MulAdd(s5_6, M4(-1.890e-01, -2.725e-01, 2.737e-02, 5.769e-02, 1.379e-02, -3.245e-02, -1.497e-02, -2.878e-02, -1.284e-01, -4.622e-02, -2.642e-02, -1.175e-01, -1.880e-01, 1.827e-01, -1.657e-01, 7.942e-02), r);\n\tr = MulAdd(s5_7, M4(-9.118e-02, 2.842e-01, -2.173e-01, 7.063e-02, 7.538e-02, 5.894e-02, -1.075e-01, 4.333e-02, -7.566e-02, -1.142e-01, 4.044e-02, 5.305e-02, 1.803e-01, 2.164e-01, -2.646e-03, -2.533e-01), r);\n\tr = MulAdd(s5_8, M4(-7.487e-02, 7.629e-02, 1.009e-01, 4.286e-02, -1.482e-02, 3.950e-02, 1.299e-01, 6.164e-02, -5.029e-02, 1.053e-01, -9.843e-02, -1.814e-01, 9.668e-03, 1.559e-01, -9.271e-02, 1.445e-01), r);\n\tr = MulAdd(s6_0, M4(1.327e-01, 7.610e-03, 1.497e-02, -3.495e-02, 4.965e-02, -9.208e-02, -2.610e-02, -3.640e-02, -4.734e-02, -1.242e-02, 2.328e-02, 4.842e-02, 9.447e-03, 3.225e-02, -1.092e-02, -5.538e-02), r);\n\tr = MulAdd(s6_1, M4(-5.815e-02, 7.916e-02, 8.095e-02, -3.877e-02, 1.158e-02, 1.736e-02, -2.863e-02, 7.492e-03, 3.507e-02, -2.058e-02, 7.275e-02, -3.094e-02, -1.646e-01, 5.667e-02, 1.120e-01, -9.152e-02), r);\n\tr = MulAdd(s6_2, M4(2.724e-02, 4.259e-02, -1.252e-01, 1.258e-01, -4.152e-02, 1.946e-01, 9.554e-02, -4.344e-02, -1.059e-01, -8.092e-03, -1.775e-01, 8.023e-02, 6.634e-04, 6.857e-02, 6.193e-02, 8.829e-02), r);\n\tr = MulAdd(s6_3, M4(-1.191e-01, 5.508e-03, -1.777e-02, -8.923e-03, 1.028e-01, -6.273e-02, -1.418e-02, -1.355e-02, 1.433e-02, -5.940e-02, 2.669e-02, -7.870e-02, -3.210e-02, 1.420e-01, 3.797e-02, -2.151e-03), r);\n\tr = MulAdd(s6_4, M4(-2.208e-03, -1.520e-02, 1.149e-02, -1.017e-01, -1.460e-02, 6.870e-02, 1.064e-01, -1.518e-02, 6.100e-02, 2.155e-02, -2.400e-02, -1.117e-01, 2.676e-02, 5.622e-02, 1.851e-02, -1.208e-01), r);\n\tr = MulAdd(s6_5, M4(-7.373e-02, 7.088e-02, 1.293e-01, -8.229e-02, -3.831e-02, -4.459e-02, 1.489e-01, 1.245e-01, 1.331e-01, -3.549e-03, 7.487e-02, -1.423e-01, -3.767e-02, -8.141e-03, 6.819e-02, 2.041e-02), r);\n\tr = MulAdd(s6_6, M4(8.549e-02, -1.567e-02, -3.462e-02, 9.251e-02, 5.768e-02, 1.247e-02, -2.593e-02, -1.606e-01, 1.465e-02, 6.304e-02, 1.089e-03, 7.985e-02, 4.038e-02, 2.702e-02, -1.045e-01, 1.279e-01), r);\n\tr = MulAdd(s6_7, M4(1.256e-01, -3.685e-02, 1.034e-01, 8.036e-02, -4.022e-02, 5.942e-02, 7.540e-02, 4.034e-02, 9.507e-02, -7.610e-02, -2.457e-02, -1.315e-02, 6.766e-02, 3.344e-02, -1.278e-02, -5.312e-02), r);\n\tr = MulAdd(s6_8, M4(-2.078e-02, -2.733e-02, -4.110e-02, -4.928e-02, 2.954e-02, -4.459e-02, -5.428e-02, 1.163e-01, -2.850e-02, 7.975e-02, -7.055e-03, 1.909e-01, 1.503e-02, -8.133e-02, 9.719e-02, -4.011e-02), r);\n\tr = MulAdd(s7_0, M4(5.745e-02, 8.149e-03, 5.020e-03, 8.201e-02, -3.625e-02, 1.546e-01, -2.182e-01, -1.970e-02, -7.573e-02, 1.147e-01, -9.093e-02, -1.201e-01, -4.465e-02, 1.782e-01, -3.328e-02, 6.867e-02), r);\n\tr = MulAdd(s7_1, M4(1.278e-01, -1.294e-01, 1.435e-01, 8.846e-02, 1.641e-02, 7.880e-02, -4.295e-04, 7.376e-03, -5.733e-02, -1.213e-01, 1.887e-01, 2.530e-01, 5.237e-02, 9.056e-02, -1.693e-01, 1.058e-02), r);\n\tr = MulAdd(s7_2, M4(1.051e-01, -1.403e-01, -2.152e-02, 1.688e-01, -8.572e-02, 2.348e-01, 6.435e-02, -4.347e-02, -1.404e-01, 1.339e-02, -5.361e-01, 5.124e-02, -9.061e-02, -9.480e-02, 1.026e-01, -2.842e-02), r);\n\tr = MulAdd(s7_3, M4(5.644e-02, 4.302e-02, 1.369e-01, 1.658e-02, 7.890e-02, -1.081e-01, 2.689e-02, 2.602e-01, -1.591e-01, 2.769e-02, -3.205e-01, -4.162e-02, -5.145e-02, -3.690e-02, 1.473e-01, 4.620e-02), r);\n\tr = MulAdd(s7_4, M4(2.471e-02, 6.913e-02, -1.824e-01, 5.231e-02, 2.212e-01, -7.666e-04, -6.935e-02, -1.392e-01, 2.019e-01, 1.681e-01, 5.797e-02, 1.882e-02, 2.256e-01, -2.192e-01, -2.268e-01, 2.986e-02), r);\n\tr = MulAdd(s7_5, M4(-2.425e-02, 1.309e-02, -5.389e-03, 4.018e-02, -5.452e-02, 7.173e-02, 1.344e-01, -1.893e-02, 1.381e-01, -2.273e-01, -2.084e-01, -1.921e-01, 2.261e-02, -2.222e-01, -8.991e-02, -4.589e-02), r);\n\tr = MulAdd(s7_6, M4(-2.215e-02, 5.801e-02, -1.661e-01, 6.336e-02, 3.630e-02, -1.046e-01, -5.412e-02, -4.792e-02, -8.750e-02, 9.563e-02, -2.661e-01, 8.485e-02, 1.802e-01, -6.451e-02, -1.092e-01, 1.444e-01), r);\n\tr = MulAdd(s7_7, M4(-1.363e-02, 6.278e-02, -2.490e-01, 2.426e-02, -1.696e-02, 1.782e-02, 2.960e-02, 2.952e-02, 2.385e-02, 3.648e-02, 2.804e-02, -1.231e-01, 9.748e-02, -9.324e-02, 1.107e-02, 1.279e-01), r);\n\tr = MulAdd(s7_8, M4(5.383e-02, -6.809e-02, -5.792e-02, -2.678e-02, 6.552e-03, 5.476e-02, -4.569e-01, -1.632e-02, -3.676e-02, 1.094e-01, -1.814e-01, 3.622e-02, -1.013e-01, -2.603e-02, 1.067e-01, -1.683e-01), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 7.049e-03, -5.164e-03, 7.833e-03, 3.095e-02 };\n\tr = MulAdd(s0_0, M4(-3.310e-02, -1.047e-02, 4.446e-03, -1.065e-01, 7.155e-02, 2.532e-01, 6.451e-02, 8.162e-02, 5.626e-03, -1.614e-01, 5.181e-02, -4.982e-02, -1.051e-01, -7.541e-02, 9.694e-02, 2.524e-02), r);\n\tr = MulAdd(s0_1, M4(-7.002e-02, -4.159e-02, -9.201e-02, -1.644e-01, -7.874e-02, 9.247e-02, -1.248e-01, -1.276e-01, -6.662e-02, 4.484e-02, -1.165e-01, -2.996e-02, 8.438e-02, 7.111e-02, 1.909e-01, -8.361e-02), r);\n\tr = MulAdd(s0_2, M4(-2.634e-02, 9.918e-02, -2.247e-02, 2.263e-02, 5.951e-02, -1.362e-03, -8.698e-02, 8.262e-02, 5.791e-03, -8.029e-03, -1.377e-01, -4.139e-02, 2.222e-01, 8.128e-02, -3.793e-01, 4.095e-01), r);\n\tr = MulAdd(s0_3, M4(2.156e-02, 3.676e-02, 8.860e-02, 1.185e-01, 1.836e-01, -3.042e-01, -1.642e-02, 3.151e-01, -4.662e-02, -7.437e-02, -8.175e-02, -3.873e-02, 6.315e-02, -1.889e-01, -1.107e-01, -1.695e-01), r);\n\tr = MulAdd(s0_4, M4(8.632e-02, -9.448e-02, 1.125e-01, 1.151e-02, 3.563e-02, 1.770e-01, -4.597e-02, -4.560e-02, 1.678e-02, -1.753e-01, 2.854e-02, -1.035e-02, -8.369e-03, 1.948e-01, 1.128e-01, -1.325e-01), r);\n\tr = MulAdd(s0_5, M4(7.694e-04, -3.053e-02, 5.700e-02, -8.030e-02, -7.811e-03, -7.819e-02, -7.453e-02, 1.973e-01, 4.691e-02, 1.434e-01, -3.162e-02, -7.189e-02, -6.287e-02, -5.170e-01, -8.335e-02, 9.343e-02), r);\n\tr = MulAdd(s0_6, M4(3.037e-03, -3.342e-02, -5.670e-02, -2.919e-02, 2.281e-01, 4.177e-03, 4.988e-02, 4.675e-02, 3.656e-02, 1.294e-01, 4.818e-02, 4.157e-02, -3.660e-02, -5.739e-02, -2.379e-01, -8.158e-02), r);\n\tr = MulAdd(s0_7, M4(-1.601e-02, 6.322e-02, -7.389e-02, 2.617e-02, -1.247e-01, -3.870e-03, 9.629e-02, 2.878e-02, -7.404e-02, 7.158e-02, -1.819e-02, 8.241e-02, -2.284e-02, -1.365e-01, -1.954e-02, -1.304e-01), r);\n\tr = MulAdd(s0_8, M4(-4.040e-02, -2.005e-02, -3.412e-02, 1.068e-01, -2.835e-02, -9.637e-02, -6.092e-02, -1.578e-01, -1.812e-02, -4.020e-02, -3.961e-02, -8.512e-02, 6.531e-02, 1.034e-02, 7.084e-02, 1.837e-02), r);\n\tr = MulAdd(s1_0, M4(-7.400e-02, -2.048e-01, 4.059e-01, -2.345e-01, -6.631e-02, 2.262e-02, 1.462e-01, 1.211e-01, 2.671e-01, 2.154e-01, 5.736e-02, -7.656e-02, -3.599e-02, -1.662e-02, -3.786e-02, 1.181e-02), r);\n\tr = MulAdd(s1_1, M4(-1.018e-01, -2.402e-01, 9.216e-02, -2.519e-02, 5.146e-02, -1.889e-02, -6.131e-02, -1.159e-01, 2.021e-01, 2.082e-01, -2.572e-01, 7.096e-03, 9.477e-02, -9.545e-02, -5.969e-02, -8.974e-02), r);\n\tr = MulAdd(s1_2, M4(5.776e-02, -3.268e-02, 2.991e-01, 3.318e-01, 7.870e-02, 5.555e-02, 2.808e-02, -1.384e-02, 1.006e-02, 9.396e-02, -1.541e-01, 1.746e-01, 1.021e-01, 8.361e-02, -8.241e-02, -3.679e-02), r);\n\tr = MulAdd(s1_3, M4(4.243e-01, 2.424e-01, 2.313e-01, -1.975e-01, -4.512e-02, -1.958e-01, 8.668e-02, 1.917e-01, 1.927e-02, 1.191e-02, -1.364e-02, -1.923e-01, 2.884e-02, 1.516e-02, -5.113e-02, -9.241e-02), r);\n\tr = MulAdd(s1_4, M4(5.372e-01, 1.449e-01, 2.751e-02, 2.169e-01, -6.685e-02, 2.181e-01, -6.593e-02, -9.706e-02, 1.719e-01, 2.444e-02, 1.299e-01, -4.927e-02, 4.953e-02, -1.792e-02, 8.077e-02, 1.125e-01), r);\n\tr = MulAdd(s1_5, M4(1.730e-03, -4.827e-01, 2.841e-01, -1.782e-01, -4.474e-02, 5.705e-02, -6.480e-02, 1.102e-02, 2.095e-01, -2.511e-02, 4.695e-02, -4.598e-02, -1.538e-01, 7.887e-02, 3.751e-02, -1.082e-01), r);\n\tr = MulAdd(s1_6, M4(-1.657e-01, -1.450e-01, -2.219e-02, 1.530e-01, 1.049e-01, 3.284e-02, -1.333e-01, 1.505e-02, 9.291e-02, 1.182e-01, 6.159e-02, 3.700e-02, -3.568e-04, -2.911e-02, 1.279e-02, -5.009e-02), r);\n\tr = MulAdd(s1_7, M4(-2.588e-01, -4.585e-01, -1.425e-02, -5.658e-03, -3.324e-02, -2.476e-01, 8.082e-02, 5.820e-02, 1.353e-01, 1.031e-01, -7.908e-02, 1.681e-01, 3.531e-02, 4.241e-02, -8.830e-02, -1.067e-02), r);\n\tr = MulAdd(s1_8, M4(1.759e-01, 1.195e-01, -5.958e-02, -1.166e-01, 1.525e-02, 2.479e-02, 4.186e-02, -3.045e-02, 3.070e-01, 3.415e-01, -1.288e-01, 4.186e-02, -6.287e-02, -5.575e-02, 1.085e-02, -2.990e-02), r);\n\tr = MulAdd(s2_0, M4(-3.779e-02, 8.502e-02, 3.670e-02, -5.649e-02, 2.161e-02, 4.964e-02, 7.737e-02, 3.889e-02, 2.972e-02, -2.336e-02, 2.660e-02, 4.314e-02, 2.544e-02, -1.368e-01, -8.023e-02, 2.406e-02), r);\n\tr = MulAdd(s2_1, M4(2.148e-03, 2.318e-01, -1.050e-01, 2.773e-02, 7.478e-02, -8.558e-02, -4.437e-02, -2.647e-02, -3.378e-02, 7.765e-03, 1.097e-01, -6.929e-02, 6.677e-02, -6.817e-02, -1.492e-02, 1.052e-01), r);\n\tr = MulAdd(s2_2, M4(-1.446e-01, 5.619e-02, 7.113e-02, -1.084e-03, 4.138e-02, 8.402e-02, -1.147e-02, 2.059e-02, 3.658e-02, 1.095e-01, 1.113e-02, 2.767e-02, -1.791e-01, -2.241e-02, 8.983e-02, -2.046e-02), r);\n\tr = MulAdd(s2_3, M4(-3.334e-02, -8.473e-02, -1.845e-01, -2.242e-02, -4.167e-03, 1.196e-01, -1.121e-01, -1.514e-02, 4.081e-02, 2.293e-01, -2.307e-01, 4.014e-01, 1.353e-01, 1.334e-01, -1.107e-01, 6.926e-02), r);\n\tr = MulAdd(s2_4, M4(9.510e-02, -1.627e-02, 1.553e-01, -8.809e-02, -1.072e-01, 9.681e-02, -3.757e-02, -1.325e-01, -5.078e-02, 2.735e-01, 1.794e-01, 3.084e-01, 7.204e-02, -8.301e-02, -6.917e-02, -1.438e-02), r);\n\tr = MulAdd(s2_5, M4(-4.562e-02, 1.039e-01, 1.454e-01, -2.231e-01, 1.059e-02, 5.584e-02, -1.292e-01, -1.031e-02, -1.368e-01, -1.102e-01, 1.740e-01, 7.728e-02, -1.854e-01, 4.047e-02, -2.346e-02, -1.281e-01), r);\n\tr = MulAdd(s2_6, M4(9.606e-02, -4.460e-02, 1.095e-01, -2.996e-02, -2.107e-02, -2.014e-02, 2.350e-01, -7.004e-02, -8.360e-02, 8.714e-02, -1.265e-01, -2.492e-02, -4.162e-02, -1.169e-02, 4.289e-02, -1.474e-01), r);\n\tr = MulAdd(s2_7, M4(1.057e-01, -2.529e-01, 4.756e-02, -1.517e-03, -3.801e-02, -8.089e-02, 2.027e-02, 1.219e-01, -1.119e-01, 6.527e-02, 3.577e-02, -1.732e-01, 1.022e-01, -4.923e-02, -1.197e-02, 8.317e-03), r);\n\tr = MulAdd(s2_8, M4(1.844e-02, 4.025e-02, -1.694e-01, 1.480e-01, 3.920e-02, -8.898e-02, 3.544e-02, 1.283e-01, 1.745e-01, -1.828e-01, -8.220e-02, -3.703e-02, -9.434e-02, 8.537e-02, -2.254e-03, -2.373e-01), r);\n\tr = MulAdd(s3_0, M4(-4.414e-02, 1.265e-01, 1.132e-01, 8.795e-02, 1.179e-03, -9.083e-02, 4.055e-02, 1.348e-01, -2.953e-02, 3.096e-02, -1.500e-02, -2.655e-02, 1.048e-01, -1.834e-01, 2.040e-02, 1.876e-02), r);\n\tr = MulAdd(s3_1, M4(-5.469e-02, 3.613e-01, 1.175e-01, 1.847e-02, 2.442e-01, -7.088e-02, -2.256e-01, 4.352e-02, -6.138e-02, -1.043e-01, 1.027e-02, 6.533e-02, 2.383e-01, 1.044e-04, 1.277e-02, -9.124e-02), r);\n\tr = MulAdd(s3_2, M4(-1.481e-01, -2.980e-01, 3.422e-02, -7.770e-02, 1.320e-01, 3.090e-01, -6.432e-02, -1.516e-01, 8.392e-02, -1.138e-01, 8.590e-02, -1.004e-01, 1.834e-02, 4.498e-02, -7.585e-02, 8.780e-02), r);\n\tr = MulAdd(s3_3, M4(1.041e-01, 3.988e-03, -2.560e-01, 1.170e-01, -7.932e-02, 7.428e-03, -1.451e-01, 1.531e-01, -4.874e-02, -7.994e-04, -4.455e-02, 3.958e-03, 3.660e-03, 1.042e-01, -9.601e-02, -1.359e-02), r);\n\tr = MulAdd(s3_4, M4(-1.098e-02, -2.595e-01, 6.339e-02, 4.795e-02, -4.507e-02, 2.261e-01, -2.230e-01, 5.826e-02, 8.636e-04, 1.241e-01, 1.149e-01, -6.624e-02, -5.745e-02, 7.117e-02, 2.267e-02, -2.648e-01), r);\n\tr = MulAdd(s3_5, M4(9.860e-02, 2.700e-01, 1.025e-01, -3.150e-01, -1.326e-01, 1.185e-01, -4.155e-02, -1.511e-02, -4.764e-02, -6.836e-02, -2.254e-02, 7.437e-02, 2.222e-02, -7.851e-02, 1.590e-02, 1.601e-01), r);\n\tr = MulAdd(s3_6, M4(1.393e-01, 8.621e-03, -2.183e-02, -2.017e-02, 1.148e-01, -1.643e-02, 1.285e-01, -2.263e-02, -1.718e-02, 7.851e-02, 1.532e-02, 3.675e-02, 4.451e-02, 2.104e-01, -1.268e-01, 5.241e-02), r);\n\tr = MulAdd(s3_7, M4(-2.816e-02, -1.125e-01, 1.205e-01, -3.454e-03, 4.550e-02, -5.359e-03, 6.028e-02, 1.263e-01, 5.069e-02, -3.246e-02, 8.699e-02, -1.295e-01, 2.440e-02, 7.617e-02, -2.258e-02, 1.113e-01), r);\n\tr = MulAdd(s3_8, M4(-1.014e-01, 2.407e-02, -9.447e-02, 5.400e-02, 2.735e-02, -1.241e-01, -6.878e-02, 4.014e-01, 6.577e-02, -3.158e-02, 7.358e-02, 1.269e-02, 5.336e-02, -4.621e-02, 4.812e-02, -4.715e-02), r);\n\tr = MulAdd(s4_0, M4(-1.007e-02, -7.450e-02, -5.531e-02, -4.589e-02, -1.065e-01, 1.119e-01, 9.279e-02, 2.339e-01, -4.817e-02, 1.139e-01, -3.075e-02, 5.132e-02, -1.425e-01, -6.251e-02, -3.181e-02, -6.615e-02), r);\n\tr = MulAdd(s4_1, M4(-1.282e-01, -6.415e-02, 3.188e-02, -6.217e-02, -5.337e-02, -1.369e-01, -3.857e-01, -2.054e-03, -1.344e-01, -9.127e-02, 1.287e-01, -1.084e-01, -8.630e-02, 9.341e-02, -3.698e-02, 5.253e-02), r);\n\tr = MulAdd(s4_2, M4(-2.931e-02, -5.825e-02, -1.005e-01, 1.509e-03, -1.696e-01, 2.150e-01, -3.179e-02, -4.437e-02, 1.685e-02, 2.196e-01, -1.043e-01, 1.195e-01, -6.515e-02, -1.503e-01, 5.465e-02, -8.743e-03), r);\n\tr = MulAdd(s4_3, M4(2.526e-02, -7.600e-02, 1.376e-01, -1.703e-03, -3.037e-01, 4.758e-01, 1.650e-01, 1.253e-01, -5.532e-02, -1.535e-01, 1.407e-01, -2.290e-01, -3.009e-02, -8.620e-02, 1.428e-02, -1.516e-02), r);\n\tr = MulAdd(s4_4, M4(9.797e-02, 8.982e-02, -1.111e-01, -1.288e-01, 9.594e-02, 2.375e-01, -7.565e-02, -1.898e-01, -7.647e-02, -4.225e-02, 2.417e-02, -9.900e-02, -3.667e-03, 2.601e-02, -1.526e-02, 6.440e-02), r);\n\tr = MulAdd(s4_5, M4(4.779e-02, 1.333e-01, 5.828e-02, -2.145e-01, -3.738e-02, 2.204e-04, 8.182e-02, 3.155e-02, -7.055e-02, -7.680e-02, -6.878e-02, 1.135e-01, 6.465e-02, -2.374e-02, -3.712e-02, -3.930e-02), r);\n\tr = MulAdd(s4_6, M4(-2.554e-02, 8.685e-03, 1.068e-01, -9.349e-02, -6.696e-02, 3.094e-02, 5.133e-01, 6.619e-02, 1.682e-01, -8.019e-02, -4.694e-02, 4.223e-02, 2.999e-02, 1.180e-01, 1.023e-01, 3.307e-02), r);\n\tr = MulAdd(s4_7, M4(-6.283e-02, -2.698e-02, 1.240e-01, -1.550e-02, -3.459e-02, 1.235e-01, -2.164e-01, -8.066e-02, 2.666e-01, 1.082e-01, -2.279e-01, 1.298e-01, -7.096e-02, 1.398e-02, -1.126e-01, 1.729e-02), r);\n\tr = MulAdd(s4_8, M4(-3.592e-02, -2.696e-02, -1.240e-01, 1.922e-01, 5.469e-02, 1.087e-02, 6.027e-02, 1.188e-01, 5.205e-02, -3.912e-02, 5.425e-02, 1.714e-02, 1.377e-01, -4.612e-03, 1.018e-01, 2.339e-02), r);\n\tr = MulAdd(s5_0, M4(3.069e-01, 1.913e-02, -1.458e-01, 1.175e-02, -9.135e-03, 2.076e-02, 2.156e-02, 1.665e-01, 4.221e-02, -7.960e-03, 2.793e-02, 6.755e-03, -1.430e-02, -7.548e-02, 4.690e-02, 6.693e-02), r);\n\tr = MulAdd(s5_1, M4(-1.602e-01, -1.685e-01, 1.020e-01, 7.694e-02, 1.949e-02, -1.012e-01, -1.111e-01, -1.018e-01, -3.667e-02, 4.584e-02, 6.979e-02, -8.594e-02, -1.077e-01, -7.754e-02, -1.661e-02, 5.381e-02), r);\n\tr = MulAdd(s5_2, M4(-2.663e-02, 6.025e-02, 5.513e-02, 1.875e-01, -1.171e-02, -5.782e-02, 5.743e-02, 9.628e-03, -1.430e-01, -1.016e-02, 1.429e-02, -6.060e-03, -1.659e-07, -1.252e-01, 3.171e-02, -1.015e-01), r);\n\tr = MulAdd(s5_3, M4(1.024e-01, 2.345e-02, -1.129e-03, 2.063e-01, -3.990e-02, 7.542e-02, -5.214e-02, 1.172e-02, -9.788e-02, 7.562e-02, 1.072e-01, -6.372e-02, 7.381e-02, -4.092e-02, 6.908e-02, -2.314e-01), r);\n\tr = MulAdd(s5_4, M4(4.877e-02, 6.891e-02, 8.940e-02, -4.991e-02, 7.390e-02, 1.307e-01, -1.390e-02, -3.120e-02, -5.540e-02, 1.779e-01, 1.120e-02, -8.706e-02, 1.261e-01, -1.925e-01, -1.373e-02, -6.053e-02), r);\n\tr = MulAdd(s5_5, M4(-2.393e-02, 7.691e-02, 2.439e-01, 7.700e-02, 1.795e-02, -7.796e-02, -6.049e-02, -2.466e-03, 1.844e-02, -2.038e-01, -2.290e-01, -1.484e-01, 3.392e-02, 9.811e-02, -1.844e-01, -4.141e-02), r);\n\tr = MulAdd(s5_6, M4(-4.138e-02, -1.700e-01, 3.278e-01, 3.828e-02, -6.868e-02, -1.343e-01, 3.616e-02, 1.254e-01, 3.440e-03, -7.632e-02, -1.761e-02, 1.819e-01, 1.342e-02, 1.132e-01, -1.276e-01, 3.600e-02), r);\n\tr = MulAdd(s5_7, M4(-1.716e-01, -5.100e-02, 1.250e-01, 8.485e-02, 3.682e-02, 1.543e-02, 1.113e-01, -9.796e-02, 1.395e-01, 4.326e-02, -4.639e-02, 1.166e-01, 3.806e-02, 1.657e-01, 2.174e-01, 4.814e-02), r);\n\tr = MulAdd(s5_8, M4(-2.120e-01, -2.207e-02, -1.430e-01, 8.618e-02, -5.200e-02, -6.653e-02, 4.128e-02, 1.239e-01, -1.761e-01, 1.531e-01, -2.303e-01, -5.517e-03, -1.222e-02, -5.068e-02, 7.704e-02, -1.185e-01), r);\n\tr = MulAdd(s6_0, M4(-3.371e-02, -6.558e-02, 1.376e-03, -1.345e-01, 1.465e-02, 1.052e-01, -2.816e-02, 9.085e-02, 5.106e-02, 6.937e-02, 7.058e-02, 8.025e-02, 3.013e-02, -2.639e-02, 1.649e-02, 1.785e-02), r);\n\tr = MulAdd(s6_1, M4(-6.707e-02, 1.761e-01, -1.615e-02, -4.314e-02, -1.076e-01, 1.287e-01, -1.184e-02, 7.810e-03, 1.243e-01, -2.929e-02, 7.740e-02, -1.041e-01, -5.104e-02, -4.334e-02, 1.242e-01, 1.227e-01), r);\n\tr = MulAdd(s6_2, M4(4.123e-02, 3.019e-02, -2.243e-02, -4.618e-02, -9.245e-02, -1.620e-01, 5.712e-02, -7.876e-02, -1.682e-02, 2.681e-02, -5.675e-03, -1.721e-01, -2.870e-02, -3.578e-02, 7.775e-03, -1.233e-01), r);\n\tr = MulAdd(s6_3, M4(-1.652e-01, -7.928e-04, -4.806e-02, 4.656e-02, 2.087e-02, 6.688e-02, -6.866e-02, 4.033e-02, 4.829e-02, -2.848e-02, -5.616e-02, 1.375e-02, -5.552e-02, -1.680e-02, -5.849e-02, -1.262e-01), r);\n\tr = MulAdd(s6_4, M4(1.233e-01, -9.312e-02, -3.187e-02, 6.720e-02, 6.422e-02, 3.899e-02, 3.527e-02, 1.679e-02, -9.803e-02, -2.406e-02, -6.811e-02, 3.042e-02, 1.062e-01, 1.312e-01, -5.425e-02, 9.650e-02), r);\n\tr = MulAdd(s6_5, M4(-1.846e-02, -1.606e-02, 7.972e-02, -2.837e-02, 2.431e-02, -1.271e-01, -3.847e-02, -7.955e-02, -2.000e-02, 1.166e-02, -3.156e-02, 5.790e-02, 3.407e-02, -4.190e-02, -1.782e-02, -2.151e-02), r);\n\tr = MulAdd(s6_6, M4(-2.544e-02, -5.915e-02, 1.843e-01, 9.362e-02, 4.990e-03, -1.615e-02, 7.778e-02, -3.237e-02, -1.791e-01, 6.874e-02, 5.214e-03, -4.972e-02, 3.849e-02, 3.411e-02, 9.507e-02, 6.376e-02), r);\n\tr = MulAdd(s6_7, M4(1.284e-01, -5.599e-02, 1.323e-01, 5.644e-02, -4.202e-02, 5.244e-02, -8.550e-02, -2.918e-02, -3.015e-02, 3.385e-02, 3.261e-02, -8.972e-02, -3.890e-02, 6.428e-02, -3.145e-02, -2.355e-02), r);\n\tr = MulAdd(s6_8, M4(8.571e-02, 2.069e-02, 5.270e-02, 4.432e-02, -3.353e-02, 1.355e-01, 1.678e-02, 8.254e-02, -3.588e-04, 9.659e-03, 5.636e-02, 1.541e-02, -1.879e-02, -4.235e-02, -6.655e-02, -2.892e-02), r);\n\tr = MulAdd(s7_0, M4(5.057e-02, -1.094e-01, -2.501e-02, 2.854e-02, 2.897e-02, -2.094e-01, -1.915e-02, 4.697e-02, -4.821e-02, 5.449e-02, -1.429e-01, -1.043e-01, 4.462e-02, 5.616e-02, -5.757e-02, 5.563e-02), r);\n\tr = MulAdd(s7_1, M4(-5.853e-02, 1.182e-01, 1.179e-02, 3.173e-02, -4.999e-02, 6.827e-02, -1.233e-01, 4.053e-02, 2.026e-01, 7.719e-02, -2.028e-01, -2.474e-02, -2.304e-02, -3.564e-02, -1.264e-02, -9.711e-02), r);\n\tr = MulAdd(s7_2, M4(4.403e-02, 1.681e-02, 9.049e-03, -8.114e-04, -1.040e-01, 3.131e-03, -5.200e-02, -7.127e-02, -6.435e-02, -8.722e-02, -7.123e-02, 2.914e-02, -6.080e-03, 1.132e-01, 9.580e-02, 6.098e-02), r);\n\tr = MulAdd(s7_3, M4(5.650e-02, -1.091e-01, 2.306e-01, 7.148e-02, 9.243e-02, 2.465e-02, -1.498e-01, 7.515e-02, 5.593e-02, 1.612e-02, -1.273e-01, -2.858e-02, 1.162e-01, -2.942e-01, 7.213e-02, -2.089e-01), r);\n\tr = MulAdd(s7_4, M4(7.218e-02, -3.291e-02, -1.870e-02, -2.636e-01, 3.129e-01, 6.619e-02, 1.584e-01, 1.509e-01, -2.000e-01, -6.524e-02, -5.895e-01, 3.878e-02, 6.326e-02, 2.978e-02, 3.527e-03, 1.264e-02), r);\n\tr = MulAdd(s7_5, M4(-6.218e-02, 2.090e-02, 1.216e-01, -6.139e-02, 1.023e-01, -1.329e-01, 4.503e-02, 2.290e-02, 1.011e-01, -1.292e-01, 1.513e-02, -1.150e-01, 2.092e-03, 2.387e-01, 2.038e-01, 5.367e-02), r);\n\tr = MulAdd(s7_6, M4(-5.686e-02, -2.890e-02, -3.717e-02, 7.714e-02, 4.568e-02, -6.003e-02, 1.097e-01, -1.933e-02, -2.708e-01, -6.252e-03, -7.931e-02, -1.325e-01, 3.035e-02, 1.009e-01, 1.392e-01, 3.232e-01), r);\n\tr = MulAdd(s7_7, M4(-2.405e-01, -6.710e-02, -2.377e-02, 3.145e-02, 9.669e-02, -1.496e-01, 3.671e-02, -7.840e-03, -1.736e-01, 1.203e-01, -1.745e-01, -1.564e-01, 1.998e-01, 1.556e-01, -1.469e-01, -1.946e-01), r);\n\tr = MulAdd(s7_8, M4(7.734e-02, -1.404e-01, -8.468e-02, 1.537e-01, 3.650e-02, 1.036e-01, -7.442e-02, 4.586e-02, 8.895e-02, 2.057e-01, -9.627e-02, 2.055e-01, -7.919e-02, -3.901e-02, 9.436e-02, -9.957e-02), r);\n\treturn r;\n}\n\nvoid Pass7(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 8\n//!DESC conv7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.571e-03, 5.112e-02, 3.188e-02, -3.901e-02 };\n\tr = MulAdd(s0_0, M4(7.326e-02, -1.680e-02, -8.532e-03, -8.328e-02, -2.611e-02, 2.756e-02, -2.479e-02, 6.118e-02, 6.048e-02, 6.589e-02, -6.333e-03, 1.630e-02, -8.749e-02, -1.124e-01, 2.867e-02, 6.888e-02), r);\n\tr = MulAdd(s0_1, M4(5.320e-02, -7.348e-02, -7.345e-02, -1.411e-01, 1.352e-01, -3.202e-02, 4.852e-02, -9.364e-02, -1.231e-01, -1.377e-01, -7.887e-02, 2.989e-02, -1.630e-01, -1.394e-01, -1.876e-01, 8.178e-02), r);\n\tr = MulAdd(s0_2, M4(-1.359e-01, -1.165e-01, -2.628e-01, -5.544e-02, -2.101e-02, 2.755e-03, -1.010e-01, 7.707e-02, 4.659e-02, -4.174e-02, 3.209e-02, 3.284e-02, -9.646e-02, -4.638e-02, -2.890e-02, -6.471e-03), r);\n\tr = MulAdd(s0_3, M4(4.069e-02, 1.116e-01, -7.851e-02, 2.314e-02, -1.063e-01, -1.398e-02, -8.177e-02, 7.154e-02, 6.327e-02, 1.028e-01, -1.067e-01, 2.547e-02, 3.345e-02, -1.358e-01, -7.660e-02, 2.743e-01), r);\n\tr = MulAdd(s0_4, M4(-1.749e-01, 1.672e-01, 1.233e-01, 2.579e-02, 1.416e-01, 1.264e-02, 3.625e-02, 1.070e-02, 4.777e-02, 5.466e-02, -7.225e-02, 2.460e-02, -3.268e-02, -8.000e-02, 1.727e-03, 5.799e-02), r);\n\tr = MulAdd(s0_5, M4(-7.982e-02, 3.175e-02, -9.588e-02, 1.356e-01, 9.916e-02, -1.107e-02, -2.543e-02, 1.025e-01, 2.149e-02, -8.852e-02, -9.233e-02, -6.055e-02, -1.254e-01, -3.054e-02, -4.695e-02, 2.900e-02), r);\n\tr = MulAdd(s0_6, M4(6.681e-02, 2.395e-01, -3.717e-03, 7.605e-03, -8.234e-02, -4.648e-02, 1.036e-01, -1.684e-02, -2.558e-02, 1.999e-02, 5.742e-02, 1.543e-02, 4.634e-02, -2.336e-01, -7.873e-03, -1.503e-02), r);\n\tr = MulAdd(s0_7, M4(9.118e-03, 1.362e-01, 1.276e-02, 2.263e-02, -8.010e-02, 5.689e-02, 3.855e-02, -8.891e-02, -1.977e-02, 5.464e-02, -1.107e-01, -1.507e-01, 7.280e-02, 3.315e-01, 1.247e-01, -1.315e-01), r);\n\tr = MulAdd(s0_8, M4(4.262e-02, 3.590e-02, -5.887e-02, 1.078e-01, 4.775e-02, 4.336e-02, 2.300e-02, 8.044e-02, 1.452e-02, 1.896e-02, 7.814e-02, -1.559e-01, -2.269e-01, -9.475e-02, -3.582e-02, 6.094e-02), r);\n\tr = MulAdd(s1_0, M4(-7.673e-02, 3.620e-02, -1.194e-02, -1.948e-01, 5.772e-03, -8.285e-02, -6.731e-02, -1.318e-01, -3.922e-02, 3.819e-02, -1.171e-01, 3.155e-02, 9.811e-02, -3.604e-02, -4.110e-02, -8.592e-03), r);\n\tr = MulAdd(s1_1, M4(-9.692e-02, -1.232e-01, -2.234e-01, -3.303e-01, -1.204e-01, -1.037e-01, -6.013e-02, -6.288e-02, -2.922e-02, -4.687e-02, 3.154e-03, 4.076e-02, -5.423e-02, -3.524e-02, -1.036e-01, 2.995e-02), r);\n\tr = MulAdd(s1_2, M4(-7.888e-02, -8.202e-02, -4.395e-01, 9.045e-02, 2.978e-03, -8.826e-02, -1.084e-01, -2.192e-01, 5.059e-02, 2.395e-02, 5.964e-03, 1.145e-01, -1.370e-02, 4.883e-02, -6.958e-02, -6.560e-02), r);\n\tr = MulAdd(s1_3, M4(1.279e-01, -1.432e-01, -5.269e-02, 3.730e-02, -1.142e-01, 1.388e-01, -3.105e-02, 4.774e-02, 7.469e-02, 4.862e-02, 2.075e-02, -5.505e-02, -4.774e-02, 1.962e-01, -9.652e-03, -2.483e-02), r);\n\tr = MulAdd(s1_4, M4(-2.781e-02, 6.737e-02, 2.201e-01, 7.259e-02, -2.564e-01, 3.118e-02, -3.571e-02, -2.165e-02, -5.012e-02, 2.662e-02, 3.784e-02, 6.786e-03, 4.114e-02, 3.618e-02, 4.794e-02, -1.455e-02), r);\n\tr = MulAdd(s1_5, M4(-1.191e-01, -1.130e-01, -1.292e-02, -9.387e-02, -3.200e-01, 6.517e-02, 4.728e-02, -8.181e-02, 9.274e-02, 4.584e-02, 8.052e-02, 7.160e-02, -3.136e-02, -3.421e-03, 1.210e-02, 4.128e-02), r);\n\tr = MulAdd(s1_6, M4(9.538e-02, 1.158e-01, 5.522e-02, -5.608e-02, -1.713e-02, -1.104e-01, 3.938e-02, 1.422e-01, -1.006e-01, -8.636e-02, 1.612e-02, 7.535e-02, 7.791e-02, -3.914e-02, 6.032e-03, -7.430e-02), r);\n\tr = MulAdd(s1_7, M4(1.279e-01, 1.155e-01, -5.522e-02, 1.038e-02, -6.844e-02, -1.568e-02, 3.897e-02, 6.627e-02, -2.525e-02, 5.406e-02, 1.185e-02, -1.289e-01, 5.105e-02, 1.325e-02, -2.018e-02, 1.429e-01), r);\n\tr = MulAdd(s1_8, M4(-5.325e-03, 2.080e-02, -1.756e-02, -1.535e-02, -5.934e-02, 1.038e-01, 1.131e-03, 1.061e-01, 1.334e-02, -4.694e-02, 1.311e-02, 3.889e-02, 3.943e-02, -4.937e-03, -8.483e-02, 2.961e-02), r);\n\tr = MulAdd(s2_0, M4(2.529e-02, 1.284e-01, -6.831e-02, 8.552e-02, 1.688e-02, -2.406e-02, -3.573e-02, -8.468e-02, -3.537e-02, -2.755e-02, -1.551e-01, -8.238e-02, 1.797e-03, 7.391e-04, 9.301e-02, 7.129e-02), r);\n\tr = MulAdd(s2_1, M4(5.069e-02, 1.511e-02, -8.571e-02, 1.932e-01, 6.459e-02, -6.110e-02, 6.249e-02, -4.744e-02, 8.680e-02, -2.431e-02, -1.476e-01, -8.965e-03, -4.096e-02, -2.333e-02, 5.975e-02, -4.329e-02), r);\n\tr = MulAdd(s2_2, M4(9.870e-02, -5.693e-02, 2.317e-01, -1.962e-01, 2.122e-03, 8.375e-02, -9.086e-03, 4.394e-03, -9.753e-02, -1.918e-02, 1.314e-02, -6.324e-02, -1.367e-01, 6.549e-03, 1.832e-02, -1.994e-03), r);\n\tr = MulAdd(s2_3, M4(6.551e-02, -2.222e-01, -9.212e-02, -3.601e-02, 2.795e-02, -9.005e-04, 1.452e-02, 1.030e-05, 6.994e-03, 2.014e-02, -5.785e-03, 5.890e-02, 5.451e-02, 8.729e-03, 2.239e-02, -6.286e-02), r);\n\tr = MulAdd(s2_4, M4(1.156e-01, -4.127e-01, -7.728e-02, -5.974e-03, -7.359e-03, 8.215e-02, 3.321e-03, 8.025e-02, -4.020e-02, 3.870e-02, 1.025e-01, 1.783e-01, -6.440e-03, -6.624e-02, 1.581e-03, -1.802e-02), r);\n\tr = MulAdd(s2_5, M4(2.858e-01, 9.141e-02, 5.689e-02, -4.694e-02, -1.589e-02, -1.341e-01, 1.310e-01, 1.950e-03, -5.580e-02, -7.293e-02, -8.763e-02, 1.233e-01, -2.732e-02, -1.022e-01, 5.317e-02, 7.542e-02), r);\n\tr = MulAdd(s2_6, M4(-5.645e-02, -1.140e-01, -6.738e-03, -4.646e-02, 5.276e-02, 3.075e-02, -1.642e-02, 3.556e-02, -6.125e-03, 3.828e-03, 1.131e-02, -1.482e-01, 6.052e-02, -4.016e-02, -2.530e-02, -1.002e-01), r);\n\tr = MulAdd(s2_7, M4(8.396e-04, 4.828e-03, -4.947e-02, -4.133e-03, -2.696e-03, 2.795e-02, 2.310e-02, -6.906e-02, -4.635e-02, 2.880e-01, -5.403e-02, 1.196e-01, 4.968e-02, 6.836e-04, -6.956e-02, 1.108e-01), r);\n\tr = MulAdd(s2_8, M4(1.626e-01, -5.639e-02, 2.667e-02, -4.575e-02, -1.474e-02, -8.975e-02, 1.452e-02, -1.030e-02, -5.135e-02, 1.374e-01, -5.451e-02, -3.441e-02, 1.314e-01, 4.312e-02, 4.449e-03, 4.756e-02), r);\n\tr = MulAdd(s3_0, M4(-1.225e-02, -8.804e-02, -8.613e-03, 1.151e-01, -2.185e-02, 5.594e-02, -3.407e-02, -1.318e-02, -3.389e-02, -1.279e-01, -2.860e-02, -1.436e-02, -1.869e-01, 4.171e-02, -6.930e-02, 4.920e-02), r);\n\tr = MulAdd(s3_1, M4(-6.642e-02, -9.350e-02, 4.312e-02, 1.403e-01, 4.267e-02, -6.881e-02, 8.049e-02, 1.490e-01, 2.641e-03, -1.042e-01, -5.050e-02, -2.284e-02, -3.493e-02, 1.340e-01, 1.530e-01, 4.731e-02), r);\n\tr = MulAdd(s3_2, M4(1.421e-01, 3.422e-02, 1.132e-01, -1.175e-02, -6.359e-03, 5.818e-03, -1.565e-02, 2.434e-02, 3.349e-02, -7.312e-02, -2.611e-03, 8.518e-02, -2.472e-02, -1.053e-01, 5.248e-02, 1.049e-01), r);\n\tr = MulAdd(s3_3, M4(-1.025e-03, -6.495e-02, 3.081e-02, -1.668e-02, 3.482e-02, 1.118e-01, -1.849e-02, -6.570e-02, 1.400e-02, 8.527e-02, -5.726e-02, 3.651e-02, 9.570e-02, -3.766e-01, 1.071e-01, 4.728e-02), r);\n\tr = MulAdd(s3_4, M4(-2.700e-02, -5.728e-02, -6.008e-02, -6.256e-02, 7.111e-02, 2.445e-01, 1.668e-01, 1.348e-01, 7.866e-02, 1.338e-01, 4.739e-02, 8.424e-02, -9.877e-02, 1.519e-01, 6.522e-02, 4.844e-02), r);\n\tr = MulAdd(s3_5, M4(-3.520e-03, 3.914e-02, 7.109e-02, -5.600e-03, 1.450e-01, 1.508e-01, 7.065e-02, -4.504e-02, 1.067e-02, -2.594e-02, 3.621e-02, 6.891e-02, -3.996e-02, 1.098e-01, 1.622e-01, 8.866e-02), r);\n\tr = MulAdd(s3_6, M4(-2.979e-02, 1.837e-02, 2.692e-02, 1.753e-02, -9.040e-02, -1.203e-02, 4.506e-02, 2.294e-02, -1.252e-02, 3.441e-03, 4.172e-02, -8.800e-02, 2.268e-01, -1.349e-01, -4.966e-02, 1.769e-02), r);\n\tr = MulAdd(s3_7, M4(-6.246e-02, 8.865e-02, 2.051e-02, 4.051e-03, -4.327e-02, -2.075e-03, -5.887e-02, 1.245e-01, 1.396e-02, 1.486e-01, -5.456e-02, 9.013e-03, -1.614e-01, 1.545e-01, -2.425e-02, 1.473e-01), r);\n\tr = MulAdd(s3_8, M4(2.256e-02, 2.442e-02, -5.480e-03, -3.222e-02, 2.511e-02, -9.302e-02, -8.771e-02, 1.445e-01, 1.329e-02, 4.852e-02, 1.820e-02, -7.992e-02, 6.865e-02, -1.213e-01, -5.716e-02, 7.035e-03), r);\n\tr = MulAdd(s4_0, M4(-4.963e-02, -1.699e-02, 6.164e-03, -7.748e-03, -3.923e-03, -4.458e-02, -7.514e-02, 8.713e-03, 1.502e-01, -6.000e-02, -1.562e-02, -3.699e-02, -3.769e-02, -3.684e-02, 3.194e-02, -1.316e-02), r);\n\tr = MulAdd(s4_1, M4(-5.813e-03, -1.652e-02, -1.160e-01, 2.473e-02, -1.542e-02, 1.090e-01, 9.416e-02, -7.546e-02, -8.721e-02, -1.016e-01, 2.455e-02, 1.760e-01, -1.113e-02, -2.072e-02, -4.201e-02, 1.097e-01), r);\n\tr = MulAdd(s4_2, M4(-8.947e-02, -2.912e-02, -1.152e-01, 5.044e-03, -5.288e-02, 9.921e-03, -2.049e-03, -8.057e-02, 3.600e-02, 1.285e-02, -3.229e-02, -4.312e-02, -3.473e-02, -4.958e-02, 6.987e-02, -1.037e-03), r);\n\tr = MulAdd(s4_3, M4(-7.642e-02, -7.968e-02, -9.396e-02, -6.916e-02, -4.851e-02, -2.054e-02, 1.220e-02, 2.135e-02, 5.939e-02, -5.235e-02, -2.498e-02, -3.225e-02, -5.900e-02, -1.074e-01, -2.890e-02, 7.450e-02), r);\n\tr = MulAdd(s4_4, M4(-2.375e-01, -8.494e-03, -5.648e-02, -3.120e-04, -1.023e-02, -1.651e-02, -5.311e-02, -2.120e-02, -7.515e-02, 1.600e-01, 3.359e-02, -3.815e-02, 5.274e-02, 5.381e-03, -4.513e-03, 6.992e-03), r);\n\tr = MulAdd(s4_5, M4(2.012e-02, 2.432e-02, -1.255e-01, 9.230e-02, 3.945e-03, -8.647e-03, 5.221e-02, 5.038e-02, 2.594e-02, -5.321e-02, 1.549e-01, -5.618e-02, 6.376e-02, -1.068e-02, 3.395e-02, 7.709e-02), r);\n\tr = MulAdd(s4_6, M4(-9.253e-02, 3.873e-02, -6.516e-02, -3.406e-02, 7.811e-02, 3.248e-02, -3.646e-02, -9.657e-02, 4.082e-02, -2.504e-02, -3.095e-02, -5.005e-02, 2.961e-02, -1.038e-02, 4.306e-02, -9.953e-02), r);\n\tr = MulAdd(s4_7, M4(5.463e-02, 1.190e-02, 1.297e-02, 5.601e-02, -3.863e-02, 1.963e-04, -6.829e-03, 6.013e-03, -3.543e-03, -3.119e-02, -6.587e-02, 7.723e-02, -1.266e-02, 6.149e-02, -1.960e-02, -2.855e-02), r);\n\tr = MulAdd(s4_8, M4(1.575e-01, 2.761e-02, -5.675e-02, -1.007e-01, -8.759e-02, -1.615e-02, -8.099e-02, -3.102e-02, 6.366e-02, 6.322e-02, -9.137e-02, 4.410e-02, -5.092e-02, 9.966e-02, -5.606e-02, -3.986e-02), r);\n\tr = MulAdd(s5_0, M4(-4.827e-02, -2.112e-02, 1.171e-01, 2.011e-02, -6.445e-02, -6.014e-02, 1.968e-02, 5.059e-02, 2.412e-01, 3.018e-01, -1.182e-01, 3.469e-01, 4.179e-03, -1.971e-02, 8.742e-02, -2.170e-01), r);\n\tr = MulAdd(s5_1, M4(2.099e-01, 3.944e-02, -5.078e-02, 8.941e-02, 2.386e-02, 1.028e-01, 8.036e-02, 3.725e-02, 5.418e-01, -3.762e-02, 1.630e-01, 5.946e-03, -1.113e-02, 1.548e-02, -6.941e-02, 2.013e-01), r);\n\tr = MulAdd(s5_2, M4(-1.795e-02, -1.886e-02, -1.009e-01, -4.983e-02, 2.362e-02, 3.002e-05, -1.109e-01, 7.296e-02, 4.747e-02, 1.245e-01, -1.547e-01, -4.602e-02, -1.247e-01, -7.803e-02, 6.664e-02, 4.027e-02), r);\n\tr = MulAdd(s5_3, M4(1.690e-01, -5.633e-02, 9.141e-03, 9.393e-02, 1.621e-01, -1.821e-01, 2.860e-02, 4.112e-02, -3.096e-01, -5.739e-02, -4.703e-02, -6.314e-02, -2.309e-01, 3.593e-01, -2.317e-01, -2.547e-01), r);\n\tr = MulAdd(s5_4, M4(-1.832e-01, 4.333e-02, -7.308e-02, -1.365e-01, 2.838e-03, 6.438e-03, -1.606e-01, 2.236e-01, 8.184e-02, 1.572e-01, -1.139e-01, -1.861e-01, -1.266e-01, 2.496e-01, 4.770e-02, 2.003e-01), r);\n\tr = MulAdd(s5_5, M4(8.375e-02, -2.241e-01, 7.085e-03, -2.314e-02, -7.755e-03, -4.227e-02, -5.664e-02, 1.815e-01, -2.513e-01, -4.317e-03, -5.752e-02, 4.155e-02, 2.129e-01, 1.094e-01, -8.033e-02, -4.873e-02), r);\n\tr = MulAdd(s5_6, M4(-3.701e-03, 4.241e-02, -2.325e-02, 1.078e-01, 1.505e-01, 7.398e-02, -6.607e-02, -9.741e-02, -1.005e-01, 8.321e-03, -8.565e-02, 3.101e-02, -1.696e-01, 4.588e-02, -1.441e-02, -1.626e-01), r);\n\tr = MulAdd(s5_7, M4(-7.378e-02, 8.560e-02, 6.674e-02, 5.409e-03, -6.194e-02, -5.892e-02, -4.005e-02, 1.344e-01, 2.073e-01, 5.668e-02, -1.387e-02, -3.150e-01, 8.191e-02, -6.871e-02, 5.037e-02, -1.086e-01), r);\n\tr = MulAdd(s5_8, M4(-2.458e-03, -1.181e-01, -5.747e-02, 2.519e-02, 1.344e-02, 1.043e-01, -4.944e-02, 1.466e-01, -2.087e-01, -1.148e-01, -8.578e-02, 1.443e-01, -1.480e-01, 1.237e-01, -1.129e-01, -3.773e-02), r);\n\tr = MulAdd(s6_0, M4(4.005e-02, -2.725e-02, -1.015e-02, -7.039e-02, 1.608e-01, -4.107e-02, -9.941e-03, 3.837e-02, 1.689e-01, -3.619e-03, -1.047e-01, -6.650e-02, -1.400e-02, -1.305e-01, 1.761e-02, -3.565e-02), r);\n\tr = MulAdd(s6_1, M4(1.733e-01, 8.246e-02, 4.388e-02, -4.900e-02, -5.356e-02, 7.296e-03, -1.740e-02, -1.121e-01, 3.921e-03, -1.254e-01, 9.160e-02, -2.737e-03, 9.598e-02, -5.571e-02, 3.035e-02, -1.184e-01), r);\n\tr = MulAdd(s6_2, M4(-1.958e-01, -1.807e-01, 4.089e-03, 6.421e-02, -3.751e-02, -4.583e-02, 5.623e-02, 1.439e-01, 2.941e-02, -4.083e-02, -7.173e-02, 1.034e-01, -1.830e-01, -3.674e-02, -2.433e-01, -1.585e-01), r);\n\tr = MulAdd(s6_3, M4(5.681e-02, 9.114e-02, -5.818e-02, -1.150e-01, -2.396e-02, -5.568e-02, 2.690e-02, 4.784e-02, 2.844e-02, 7.175e-03, 2.195e-02, -1.767e-02, 1.565e-01, -2.681e-03, 3.860e-02, 1.748e-01), r);\n\tr = MulAdd(s6_4, M4(-5.019e-02, -8.297e-02, -4.837e-02, -3.295e-02, 1.713e-01, -1.906e-02, -8.949e-02, 2.852e-02, -6.062e-02, -7.712e-02, 3.262e-02, 9.320e-02, -2.939e-02, -1.105e-01, -9.520e-02, 1.855e-01), r);\n\tr = MulAdd(s6_5, M4(-1.230e-03, 4.906e-02, -3.178e-02, -9.381e-02, -1.184e-01, -1.199e-02, 9.639e-02, 2.335e-03, 1.050e-01, 8.792e-02, 3.049e-02, 1.773e-01, -4.611e-03, -1.566e-01, 1.912e-01, 1.975e-01), r);\n\tr = MulAdd(s6_6, M4(-3.560e-02, 3.421e-02, 4.112e-02, 3.693e-03, 4.651e-02, -4.041e-02, 1.695e-02, -1.561e-02, 1.389e-02, -1.670e-02, 2.384e-02, -1.596e-01, 3.418e-01, -2.786e-01, -5.399e-02, -1.179e-01), r);\n\tr = MulAdd(s6_7, M4(-3.193e-02, 6.029e-02, 7.003e-02, 1.943e-01, 4.110e-02, 2.286e-03, -7.037e-02, 4.680e-02, -2.689e-02, -7.342e-03, 3.395e-02, -5.840e-02, 1.831e-01, -2.382e-01, -2.290e-01, 2.881e-01), r);\n\tr = MulAdd(s6_8, M4(6.764e-02, 6.010e-02, 3.488e-02, -6.655e-02, -1.382e-01, 7.262e-02, 1.931e-03, 5.726e-02, 2.771e-02, 1.279e-02, -5.664e-02, 2.941e-02, 3.236e-02, -6.130e-02, 7.286e-02, 1.960e-02), r);\n\tr = MulAdd(s7_0, M4(1.140e-01, -9.028e-02, -7.418e-02, -3.781e-02, 8.795e-02, -1.327e-01, 2.363e-02, -3.158e-02, -1.305e-01, -2.282e-02, -7.596e-02, -1.521e-01, 5.714e-03, -2.941e-02, -1.806e-02, -4.892e-02), r);\n\tr = MulAdd(s7_1, M4(6.662e-02, -1.102e-01, 1.024e-02, -1.127e-01, 2.631e-02, 1.655e-02, 9.290e-02, -2.096e-02, 4.017e-02, -1.329e-02, -1.061e-01, 1.428e-01, -2.756e-02, 5.955e-02, 5.337e-02, -2.459e-03), r);\n\tr = MulAdd(s7_2, M4(-7.093e-02, -7.899e-02, -6.242e-02, 3.688e-02, 9.974e-02, 5.688e-02, 4.065e-02, 3.704e-03, -3.071e-02, -1.038e-02, -1.084e-02, -1.189e-01, 3.222e-02, 1.077e-02, -5.902e-02, -4.529e-02), r);\n\tr = MulAdd(s7_3, M4(9.765e-03, -3.826e-02, -5.524e-03, -1.026e-02, 5.695e-02, 8.373e-02, 1.365e-01, -8.447e-02, -1.099e-01, -7.848e-02, 1.076e-01, -1.478e-01, 6.166e-02, 2.279e-02, 3.756e-03, 6.037e-02), r);\n\tr = MulAdd(s7_4, M4(3.144e-02, -7.181e-02, -1.136e-01, 7.372e-02, -1.149e-02, 1.041e-01, 2.243e-01, 9.610e-02, 9.288e-02, 2.646e-02, 6.833e-02, -1.361e-01, 8.454e-02, -7.442e-02, -8.176e-02, 6.451e-02), r);\n\tr = MulAdd(s7_5, M4(2.190e-02, 3.460e-02, 5.477e-02, 5.199e-03, 1.706e-01, -6.069e-02, 7.966e-02, 1.299e-01, 2.831e-02, 1.627e-01, -2.140e-02, -1.353e-01, -1.005e-01, 2.623e-02, -2.245e-02, -5.307e-02), r);\n\tr = MulAdd(s7_6, M4(4.158e-02, 1.699e-03, -1.020e-02, -1.288e-02, 3.594e-02, 9.277e-02, 5.293e-03, -5.628e-02, 1.309e-02, -2.879e-03, -1.329e-02, -2.155e-01, 7.836e-03, 1.077e-02, -1.834e-04, -1.107e-01), r);\n\tr = MulAdd(s7_7, M4(-1.636e-01, -1.068e-01, 6.692e-02, -2.375e-02, 5.312e-02, 1.139e-01, 5.986e-02, -1.624e-02, -3.511e-02, 1.058e-01, -1.126e-03, 4.797e-02, 9.381e-02, 8.404e-04, -1.213e-02, -3.095e-02), r);\n\tr = MulAdd(s7_8, M4(-4.623e-02, -2.666e-02, -1.416e-03, 5.373e-02, 2.451e-02, -6.059e-02, -1.433e-02, -7.040e-02, -8.232e-02, 1.101e-01, 1.666e-03, -9.323e-02, -8.185e-02, -3.667e-02, 2.303e-02, 8.545e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 9.425e-03, -6.502e-03, -1.215e-02, -4.379e-03 };\n\tr = MulAdd(s0_0, M4(-4.983e-02, 8.130e-02, -1.138e-02, 4.118e-02, 5.649e-03, -9.228e-03, -1.186e-02, -1.179e-02, 2.165e-01, -1.457e-02, 1.679e-01, -5.205e-02, 4.256e-02, -3.807e-02, -1.365e-01, 2.195e-01), r);\n\tr = MulAdd(s0_1, M4(-1.686e-02, 9.503e-02, 1.076e-01, 1.273e-01, -8.605e-02, 9.071e-02, -7.611e-03, -8.845e-02, -1.404e-02, 2.858e-02, -5.158e-04, -1.584e-01, -2.366e-02, 5.117e-02, 1.026e-01, -8.642e-02), r);\n\tr = MulAdd(s0_2, M4(-4.043e-02, 6.732e-02, 2.941e-02, -6.264e-02, 7.007e-02, -1.641e-02, -1.074e-01, 4.130e-02, 1.209e-01, -5.749e-02, 6.632e-02, -4.021e-02, 6.562e-03, 1.650e-02, 2.568e-02, -6.852e-02), r);\n\tr = MulAdd(s0_3, M4(1.294e-02, 4.328e-02, -4.724e-02, -5.972e-02, -1.507e-02, 2.535e-02, 2.248e-01, -6.332e-03, 1.194e-01, -2.328e-02, 5.724e-03, 2.047e-02, 6.483e-02, 1.967e-01, 2.347e-01, -1.109e-01), r);\n\tr = MulAdd(s0_4, M4(8.289e-02, 2.530e-01, -1.704e-01, 1.225e-01, -8.388e-02, 8.772e-03, -8.346e-02, 5.466e-03, 4.914e-02, 1.743e-01, 6.609e-02, 2.067e-02, -1.537e-01, 2.375e-01, -2.492e-02, 7.719e-02), r);\n\tr = MulAdd(s0_5, M4(7.153e-02, 6.322e-02, -5.479e-02, 7.153e-02, 2.188e-02, -9.131e-03, -3.086e-02, 2.073e-02, 2.361e-02, 9.672e-04, -1.130e-01, 7.425e-02, 2.527e-02, 8.043e-02, -9.048e-02, 8.426e-02), r);\n\tr = MulAdd(s0_6, M4(1.098e-01, 2.966e-03, 1.052e-01, 5.585e-02, -6.872e-02, -1.584e-02, -5.762e-02, -1.458e-02, 2.922e-02, 2.922e-02, 9.750e-02, -1.465e-01, -4.324e-02, 2.296e-02, 3.301e-01, 1.642e-01), r);\n\tr = MulAdd(s0_7, M4(2.132e-02, -1.219e-01, -1.895e-02, -1.970e-01, 8.192e-03, -4.112e-02, 8.180e-02, 1.796e-01, 7.669e-03, 9.340e-03, -3.267e-02, -1.316e-01, -1.190e-01, -3.573e-03, -3.089e-02, 5.706e-02), r);\n\tr = MulAdd(s0_8, M4(-5.650e-02, 4.687e-03, 6.372e-02, 2.141e-02, 1.214e-02, -2.395e-02, 1.049e-02, 8.106e-03, 1.389e-01, -8.622e-02, -8.147e-03, 2.103e-02, -5.347e-03, -1.049e-01, 7.973e-02, 6.136e-02), r);\n\tr = MulAdd(s1_0, M4(-7.653e-02, 3.994e-03, -5.756e-02, 2.404e-01, 1.302e-01, 5.167e-02, 2.087e-02, -5.515e-03, 7.363e-02, 2.574e-02, 1.132e-02, -9.038e-02, 3.098e-02, 3.781e-02, -1.340e-02, -2.394e-02), r);\n\tr = MulAdd(s1_1, M4(-9.000e-03, 1.987e-01, 8.059e-02, 1.542e-01, -2.150e-01, -1.165e-02, -7.362e-02, 7.066e-02, 3.051e-02, 8.714e-02, -1.183e-01, 4.917e-02, -1.030e-01, 2.695e-03, -2.187e-02, -1.496e-01), r);\n\tr = MulAdd(s1_2, M4(-9.477e-02, 2.519e-02, -8.799e-03, 1.311e-01, 6.297e-02, 3.574e-02, -5.792e-02, -1.065e-01, -1.605e-02, -3.194e-02, -3.883e-02, 3.980e-02, 2.591e-02, -5.805e-03, 1.617e-01, -1.757e-02), r);\n\tr = MulAdd(s1_3, M4(-7.379e-02, 2.148e-02, -2.515e-01, 4.130e-02, 1.027e-01, -5.710e-02, -2.321e-02, -9.060e-02, -3.771e-03, -3.679e-02, 7.993e-02, 2.636e-02, 4.529e-02, -1.192e-01, -9.298e-02, 9.453e-02), r);\n\tr = MulAdd(s1_4, M4(-1.416e-01, 3.067e-01, -1.597e-02, 6.555e-02, 7.348e-02, 6.710e-02, 1.118e-02, -3.230e-01, -1.052e-01, -5.553e-03, -4.233e-02, 1.119e-01, -1.417e-01, -4.051e-04, 7.640e-02, 1.348e-01), r);\n\tr = MulAdd(s1_5, M4(1.876e-01, 7.973e-02, 6.309e-02, 1.341e-01, 1.048e-01, -1.145e-01, -4.912e-02, 1.186e-01, -4.735e-04, -8.400e-02, 5.898e-02, 1.145e-01, -3.536e-02, 3.478e-02, 3.221e-02, 2.792e-03), r);\n\tr = MulAdd(s1_6, M4(7.400e-02, -1.982e-02, 1.309e-02, 7.803e-02, -1.180e-01, 5.490e-02, 3.897e-02, -1.823e-03, 1.359e-02, 7.597e-02, -4.269e-03, 5.470e-02, 1.117e-01, -6.178e-02, -1.678e-01, 1.173e-01), r);\n\tr = MulAdd(s1_7, M4(5.562e-03, -1.539e-01, 1.129e-01, -1.149e-01, -1.811e-01, -1.305e-01, 7.671e-02, -8.567e-03, -5.196e-02, -8.907e-03, -1.275e-01, 1.491e-03, 8.662e-02, 1.298e-02, -2.805e-02, 3.214e-02), r);\n\tr = MulAdd(s1_8, M4(6.226e-02, -9.723e-02, 1.803e-01, 8.396e-02, 4.782e-02, -3.540e-02, 2.286e-02, -2.551e-01, -3.612e-02, 1.695e-02, -3.034e-02, 3.821e-02, -2.678e-02, 1.757e-02, 4.701e-02, -2.584e-02), r);\n\tr = MulAdd(s2_0, M4(4.271e-02, 1.435e-02, 2.132e-01, 1.766e-01, -1.605e-02, -4.804e-03, 1.161e-01, -5.321e-02, 6.169e-02, -3.735e-02, 1.685e-01, -1.118e-01, -1.765e-02, -1.293e-01, -7.445e-02, -1.613e-02), r);\n\tr = MulAdd(s2_1, M4(1.435e-01, -1.773e-01, 1.688e-01, 1.635e-01, 1.118e-01, 2.187e-02, 2.361e-02, 2.987e-02, 3.904e-02, -5.927e-03, -1.409e-01, 2.267e-02, 8.298e-02, 5.953e-02, 7.070e-02, 5.210e-02), r);\n\tr = MulAdd(s2_2, M4(7.118e-02, -2.985e-02, 3.018e-01, 2.618e-01, 2.843e-02, 2.776e-02, 1.730e-02, -2.799e-02, 3.650e-02, -4.304e-02, 2.567e-02, -6.747e-02, -1.003e-01, -5.359e-02, -1.348e-01, -1.880e-02), r);\n\tr = MulAdd(s2_3, M4(-7.627e-02, -1.043e-01, 3.388e-02, 6.354e-02, 9.222e-02, 5.182e-02, 1.433e-01, -6.476e-02, -4.451e-02, 4.682e-02, 1.235e-01, 1.353e-01, -1.592e-01, 1.212e-02, 6.325e-03, 8.417e-02), r);\n\tr = MulAdd(s2_4, M4(-1.529e-02, -2.805e-01, -7.125e-02, -1.981e-01, -7.305e-02, -1.251e-01, -1.964e-01, -6.126e-02, 2.572e-02, 1.607e-01, -6.845e-03, 1.296e-01, -5.740e-02, 9.053e-02, -4.555e-02, -8.953e-02), r);\n\tr = MulAdd(s2_5, M4(-2.202e-01, -4.550e-03, 9.138e-03, 3.973e-02, 3.042e-02, 1.072e-02, -1.120e-01, -5.238e-02, -7.899e-02, -1.440e-01, 7.793e-03, 8.766e-03, -9.321e-02, 5.336e-02, 4.382e-02, -4.917e-02), r);\n\tr = MulAdd(s2_6, M4(-5.794e-02, 5.949e-02, 5.868e-02, -1.305e-01, 9.007e-02, 2.468e-04, -1.032e-01, -8.668e-02, 1.054e-02, -9.556e-02, -2.210e-01, -6.770e-02, -2.962e-02, -5.007e-03, 8.031e-02, 4.016e-03), r);\n\tr = MulAdd(s2_7, M4(-2.297e-01, -2.320e-02, -2.605e-01, 1.769e-01, 9.884e-03, -4.773e-02, -5.952e-02, 1.874e-01, -1.411e-02, -1.034e-01, 4.831e-02, -1.217e-02, 7.414e-03, -7.133e-02, 5.140e-02, 3.610e-02), r);\n\tr = MulAdd(s2_8, M4(6.926e-02, -1.764e-02, 2.437e-02, -3.945e-02, -4.159e-02, -7.148e-04, -1.669e-01, 4.848e-02, 1.362e-02, -8.426e-02, 3.363e-02, -1.062e-01, 3.699e-02, -5.910e-02, -3.259e-02, -6.000e-02), r);\n\tr = MulAdd(s3_0, M4(3.266e-02, -1.635e-02, -9.268e-03, -1.444e-02, -6.789e-02, -8.125e-02, -1.372e-01, -1.201e-01, -8.273e-02, -1.520e-02, -1.226e-01, 1.313e-01, 1.256e-01, 3.671e-02, -4.320e-02, 1.295e-01), r);\n\tr = MulAdd(s3_1, M4(1.616e-01, -1.483e-01, 1.007e-02, -4.777e-02, 2.154e-03, -3.533e-02, 6.062e-02, 1.115e-01, -5.480e-02, 1.195e-01, 4.853e-02, 1.008e-02, 9.364e-02, -8.944e-02, 9.676e-02, 1.877e-01), r);\n\tr = MulAdd(s3_2, M4(-5.110e-03, -7.102e-03, 4.880e-02, -5.596e-02, 3.291e-02, 2.714e-02, -2.460e-01, 9.288e-02, -1.284e-01, -6.344e-02, 5.529e-02, -7.398e-02, 6.091e-02, 5.879e-04, -8.177e-02, 2.660e-01), r);\n\tr = MulAdd(s3_3, M4(1.075e-01, -2.717e-02, 8.766e-02, 3.620e-02, -7.465e-02, 9.704e-03, 8.892e-02, -4.939e-02, 7.569e-02, 7.576e-02, 2.762e-02, -6.882e-02, -2.166e-01, 1.711e-01, 2.567e-01, 1.157e-01), r);\n\tr = MulAdd(s3_4, M4(5.295e-02, -1.808e-01, 6.740e-03, -3.125e-02, -1.375e-01, -7.829e-02, 1.252e-01, -5.333e-02, -1.218e-02, 1.515e-01, -5.023e-02, -3.915e-02, -1.488e-01, 1.708e-01, 1.073e-01, -1.787e-01), r);\n\tr = MulAdd(s3_5, M4(-4.310e-02, 5.330e-04, 5.296e-02, 6.118e-02, 2.424e-03, -3.204e-02, -4.205e-02, 1.344e-01, -5.280e-02, -2.408e-02, 7.708e-03, -7.485e-02, 3.816e-02, 1.564e-01, -1.596e-01, -1.008e-01), r);\n\tr = MulAdd(s3_6, M4(2.846e-02, 4.028e-04, 5.228e-02, 2.090e-02, -4.003e-02, 4.156e-02, -1.400e-02, -5.232e-02, 6.428e-02, -7.429e-02, -1.345e-01, -2.075e-02, 1.101e-01, 3.909e-02, 2.293e-02, -2.696e-02), r);\n\tr = MulAdd(s3_7, M4(-1.517e-01, -4.912e-02, 7.853e-03, 8.566e-02, -2.849e-02, 7.938e-02, 1.102e-01, -6.195e-02, -1.233e-02, 3.340e-03, 7.615e-03, 1.410e-01, -1.641e-01, -5.606e-02, -4.188e-02, -1.104e-01), r);\n\tr = MulAdd(s3_8, M4(9.102e-02, 1.308e-02, -7.194e-02, -4.243e-02, -1.015e-01, 6.016e-02, -1.065e-01, -2.126e-03, 4.485e-02, -1.344e-01, 1.097e-01, 1.222e-01, -1.174e-01, 5.216e-02, 3.645e-02, -8.502e-02), r);\n\tr = MulAdd(s4_0, M4(3.162e-02, 2.047e-02, -8.768e-02, 7.178e-02, -4.136e-02, 1.451e-02, -2.009e-02, 8.590e-02, -3.504e-02, 7.200e-02, -6.707e-03, 4.850e-02, -1.159e-01, -6.577e-02, 2.659e-03, 3.697e-02), r);\n\tr = MulAdd(s4_1, M4(-4.373e-02, -1.432e-02, -1.025e-01, 1.218e-01, 1.213e-01, -6.253e-02, 1.098e-01, -4.396e-02, -1.435e-01, -8.083e-02, -4.730e-02, 1.345e-02, 4.332e-03, -8.223e-02, 1.521e-01, 7.768e-03), r);\n\tr = MulAdd(s4_2, M4(5.797e-02, -5.495e-02, -4.579e-02, 5.029e-02, -3.201e-02, 4.360e-02, -6.783e-02, 6.364e-02, -3.153e-02, 1.680e-02, -3.927e-02, 2.867e-03, -3.550e-02, -1.989e-02, -3.437e-02, 8.254e-03), r);\n\tr = MulAdd(s4_3, M4(-5.274e-02, -6.960e-03, 4.422e-02, 6.757e-02, 1.767e-03, -1.234e-03, 1.035e-02, -1.149e-01, -1.261e-01, -9.945e-02, 6.946e-02, 1.117e-01, -3.838e-02, 4.983e-02, 1.507e-01, -9.068e-02), r);\n\tr = MulAdd(s4_4, M4(2.547e-01, 2.034e-02, 9.511e-02, -1.113e-01, -3.309e-03, 2.511e-02, 8.591e-02, -9.586e-02, -1.905e-02, -3.965e-02, -6.569e-02, 1.327e-01, -3.292e-02, 6.606e-02, 1.077e-01, -7.837e-02), r);\n\tr = MulAdd(s4_5, M4(3.427e-02, -6.044e-02, 9.947e-02, -2.948e-02, 1.903e-01, -8.142e-02, 7.408e-02, 8.765e-02, 1.294e-01, 2.937e-02, 1.490e-02, 1.741e-02, 8.611e-02, -2.960e-02, 1.621e-02, 7.118e-02), r);\n\tr = MulAdd(s4_6, M4(7.072e-03, -3.489e-02, 1.474e-01, -6.758e-02, 8.396e-02, -1.278e-02, 1.239e-01, 1.219e-02, -4.617e-04, 2.750e-02, 3.367e-02, -1.125e-01, 4.128e-02, 3.849e-03, 1.559e-04, -9.764e-03), r);\n\tr = MulAdd(s4_7, M4(6.998e-02, 5.240e-02, -6.551e-02, -1.124e-01, 4.662e-02, -5.076e-02, -4.813e-02, 3.977e-02, 2.835e-02, 9.788e-02, -1.083e-01, -9.348e-02, -7.555e-04, -9.514e-02, -1.318e-01, -6.260e-02), r);\n\tr = MulAdd(s4_8, M4(-9.893e-02, 1.792e-02, 3.363e-02, -3.017e-02, -1.834e-02, 5.261e-02, -2.149e-02, 4.543e-02, 7.473e-02, 5.478e-02, -6.775e-04, -9.799e-02, -8.036e-03, -4.525e-02, -1.196e-01, -5.956e-02), r);\n\tr = MulAdd(s5_0, M4(-7.606e-02, 1.697e-02, 3.356e-02, 8.496e-02, -4.369e-02, -4.666e-02, -4.516e-02, 1.232e-01, -1.148e-01, -4.079e-01, 6.891e-02, -1.204e-01, 6.006e-02, -7.587e-02, -3.940e-03, -8.972e-02), r);\n\tr = MulAdd(s5_1, M4(-6.836e-02, 9.268e-02, 2.397e-02, 1.580e-01, 8.314e-02, -1.127e-01, -9.302e-02, -1.983e-02, -2.236e-01, -1.783e-01, 4.923e-02, -1.979e-01, -3.718e-02, -8.209e-02, -2.694e-01, -2.831e-01), r);\n\tr = MulAdd(s5_2, M4(-1.496e-02, -1.074e-01, -1.865e-01, 3.621e-02, -7.354e-02, -3.669e-02, 1.025e-02, 1.348e-01, 7.306e-02, 3.492e-03, 1.151e-02, -2.423e-02, -1.517e-01, 1.229e-01, -9.210e-03, -3.804e-01), r);\n\tr = MulAdd(s5_3, M4(-8.295e-02, -1.333e-02, -8.697e-03, 1.018e-01, -7.267e-02, 5.075e-03, -3.312e-02, -5.572e-02, 2.651e-02, 2.441e-01, 1.070e-01, -3.334e-01, -1.323e-01, -1.150e-01, -4.954e-02, 3.022e-02), r);\n\tr = MulAdd(s5_4, M4(3.561e-01, -6.514e-03, -1.319e-01, -4.857e-02, -8.872e-02, -1.063e-01, 1.702e-01, 2.295e-02, -1.136e-01, -6.823e-03, -8.805e-02, 3.722e-01, -1.308e-01, -4.237e-02, -8.764e-02, -2.649e-01), r);\n\tr = MulAdd(s5_5, M4(-1.473e-01, -3.242e-02, 3.013e-01, -2.271e-01, 1.636e-01, -1.054e-01, 1.489e-01, 1.410e-01, 1.229e-01, -1.184e-01, 1.967e-01, 1.486e-01, -1.744e-01, -3.491e-02, 2.146e-01, -1.210e-01), r);\n\tr = MulAdd(s5_6, M4(-9.205e-02, -6.729e-02, 6.481e-02, 3.591e-02, 1.497e-01, -2.646e-02, -5.646e-02, 7.942e-02, -2.862e-01, -7.300e-02, 4.249e-01, -2.225e-01, 1.466e-02, -4.618e-02, 1.342e-01, -6.644e-02), r);\n\tr = MulAdd(s5_7, M4(-2.634e-02, -8.729e-02, -1.921e-01, 5.986e-02, -1.045e-01, -1.319e-01, -3.851e-02, -1.897e-02, 4.674e-02, -2.551e-01, -3.060e-01, -3.126e-02, 1.321e-01, 1.323e-03, 1.625e-01, -1.780e-01), r);\n\tr = MulAdd(s5_8, M4(3.455e-02, -9.137e-02, -3.155e-02, 1.371e-01, 1.961e-02, -4.806e-02, 2.904e-02, 1.206e-01, -1.439e-01, 4.326e-02, 2.013e-01, -1.088e-01, 1.038e-01, 5.389e-02, -1.012e-01, -1.293e-01), r);\n\tr = MulAdd(s6_0, M4(2.883e-02, 6.336e-02, -1.109e-01, 4.430e-02, -2.181e-03, -1.027e-02, 3.495e-02, 3.424e-02, 6.241e-02, 9.888e-02, 1.465e-01, 8.500e-03, -1.464e-02, 1.196e-01, 3.633e-02, 2.138e-02), r);\n\tr = MulAdd(s6_1, M4(-7.511e-02, -1.257e-01, -9.774e-03, -2.211e-02, 2.084e-02, -7.529e-02, 3.955e-02, -1.850e-02, -7.271e-02, -9.222e-02, -5.359e-02, 9.605e-02, 1.401e-01, -2.953e-02, -7.327e-02, 2.252e-01), r);\n\tr = MulAdd(s6_2, M4(-1.618e-01, 3.175e-02, -2.588e-02, -4.267e-02, 6.425e-02, -4.883e-02, -7.712e-03, 2.210e-02, 4.166e-02, -2.958e-02, -5.538e-02, 8.871e-02, -1.667e-02, 7.975e-02, -1.422e-01, -1.361e-01), r);\n\tr = MulAdd(s6_3, M4(3.054e-02, 2.819e-02, -5.269e-02, 7.123e-02, -6.542e-03, -5.129e-02, 6.952e-02, -6.234e-02, 3.632e-02, 4.244e-02, 1.470e-02, -5.504e-02, -1.515e-01, -5.525e-02, 9.169e-02, 1.957e-01), r);\n\tr = MulAdd(s6_4, M4(1.392e-01, 3.304e-02, 6.401e-03, -1.179e-01, 1.116e-01, 1.009e-01, -7.350e-02, -7.339e-02, -9.488e-02, -9.942e-02, 4.254e-02, -1.008e-03, 5.917e-01, -1.942e-01, 3.094e-02, 2.252e-01), r);\n\tr = MulAdd(s6_5, M4(-1.635e-01, 8.334e-02, -1.226e-01, -1.008e-01, 7.124e-02, -3.881e-02, 4.288e-02, 1.904e-02, 7.209e-02, -1.087e-03, -2.940e-02, -5.550e-02, 2.476e-02, -1.826e-01, -2.270e-02, -6.354e-02), r);\n\tr = MulAdd(s6_6, M4(-1.222e-02, 7.961e-02, 1.913e-01, 1.164e-01, -1.009e-01, -8.551e-03, -4.957e-02, 1.115e-01, -3.098e-02, 2.290e-02, 2.158e-02, 2.287e-02, -5.155e-02, -5.953e-02, -5.373e-01, 1.594e-01), r);\n\tr = MulAdd(s6_7, M4(-8.832e-02, 1.443e-01, -7.009e-02, -1.701e-02, 1.220e-01, -2.167e-02, 7.703e-02, 7.268e-03, -2.231e-02, -8.895e-03, -4.785e-02, -1.486e-02, 4.795e-01, 1.363e-01, -2.954e-01, -6.300e-02), r);\n\tr = MulAdd(s6_8, M4(-2.199e-03, 1.266e-01, -1.642e-02, -3.579e-01, -3.643e-02, -9.964e-02, -1.666e-02, 3.015e-02, 6.638e-03, 2.863e-02, -7.006e-03, 7.253e-03, 2.145e-01, 1.449e-01, -9.513e-02, -1.265e-02), r);\n\tr = MulAdd(s7_0, M4(-3.209e-02, 4.605e-02, 1.079e-01, 1.989e-02, -5.784e-02, 5.088e-02, -1.273e-01, 1.108e-01, 3.986e-02, -6.515e-03, 1.124e-01, 6.504e-02, -7.102e-02, 8.049e-02, -3.219e-02, 2.202e-02), r);\n\tr = MulAdd(s7_1, M4(3.292e-03, -1.202e-01, 3.605e-02, 7.924e-02, -1.870e-01, 6.843e-02, -1.121e-01, 1.240e-01, -1.255e-01, -5.002e-02, 5.503e-02, -3.135e-02, -3.943e-02, -2.022e-02, -2.647e-02, -6.932e-02), r);\n\tr = MulAdd(s7_2, M4(-1.361e-01, 2.581e-02, -3.699e-02, -5.262e-02, -4.777e-02, -1.642e-02, 2.150e-02, -1.078e-02, -8.589e-03, -1.309e-02, -2.344e-01, -1.915e-01, -4.557e-03, 4.928e-02, -3.167e-02, -7.839e-02), r);\n\tr = MulAdd(s7_3, M4(-9.894e-02, 5.377e-03, -6.016e-02, -6.025e-03, 9.087e-02, -1.221e-01, -3.059e-02, -4.253e-02, 4.615e-02, 6.281e-02, 5.827e-02, -9.779e-02, 9.307e-03, -4.204e-02, -1.247e-02, 1.284e-03), r);\n\tr = MulAdd(s7_4, M4(8.887e-03, -1.019e-01, 4.785e-02, 2.651e-02, -8.583e-02, 7.502e-03, 3.123e-02, 2.588e-01, -1.680e-02, -2.212e-01, 1.478e-01, -1.283e-01, 1.045e-01, 5.040e-02, 8.075e-02, -9.190e-02), r);\n\tr = MulAdd(s7_5, M4(-8.777e-02, 1.522e-02, 1.612e-01, 1.873e-02, -6.293e-03, 4.181e-02, 6.272e-02, 8.647e-02, 1.739e-01, 4.823e-02, 5.520e-02, -1.238e-01, 3.481e-02, 2.858e-03, -4.327e-02, -2.633e-02), r);\n\tr = MulAdd(s7_6, M4(-1.609e-03, -9.164e-02, -8.422e-04, -1.272e-02, 6.570e-02, 7.809e-02, -7.719e-02, -4.676e-02, 1.452e-02, 1.919e-02, -3.864e-02, -3.212e-02, 1.593e-02, -8.736e-02, 2.733e-03, 1.538e-01), r);\n\tr = MulAdd(s7_7, M4(-9.294e-02, -1.275e-01, -1.928e-02, 1.771e-01, 1.928e-01, -1.129e-01, 3.681e-02, 9.247e-02, 1.539e-01, -1.166e-02, 6.051e-03, -2.803e-03, 1.723e-02, -4.953e-02, -1.479e-01, 8.169e-02), r);\n\tr = MulAdd(s7_8, M4(2.105e-03, -1.920e-02, 1.970e-01, -1.863e-02, 7.787e-02, 7.357e-02, 1.981e-02, -4.003e-02, 5.348e-02, -7.818e-02, 1.926e-01, 6.939e-02, -5.906e-02, -4.222e-02, 1.214e-01, -6.501e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -6.752e-03, -7.566e-03, 6.314e-03, 1.825e-02 };\n\tr = MulAdd(s0_0, M4(1.030e-01, 5.180e-02, -6.760e-02, 6.079e-02, -2.889e-02, -1.103e-01, 2.358e-03, -1.889e-02, -7.512e-02, 2.994e-02, -3.116e-02, -1.178e-01, 1.637e-02, 5.190e-02, -4.271e-02, -3.379e-02), r);\n\tr = MulAdd(s0_1, M4(1.105e-01, -1.012e-01, -6.958e-02, -1.877e-01, 2.586e-02, 1.008e-02, 1.192e-01, 3.894e-02, 3.049e-02, -1.959e-02, -7.397e-02, 5.311e-02, 1.822e-02, 1.226e-01, 5.007e-02, 1.588e-01), r);\n\tr = MulAdd(s0_2, M4(-1.353e-01, 6.049e-02, 7.127e-02, 3.606e-02, -2.965e-02, 3.285e-02, -2.194e-02, -5.989e-02, 4.794e-02, -1.144e-01, -6.334e-02, -1.359e-01, 6.982e-02, -4.216e-02, -8.722e-02, 1.876e-01), r);\n\tr = MulAdd(s0_3, M4(1.121e-01, 6.245e-02, -4.799e-02, -7.511e-02, -1.780e-01, -2.139e-02, -7.060e-02, -1.224e-01, 1.616e-01, -1.183e-01, 1.730e-02, 1.742e-01, 1.555e-01, -8.945e-03, 1.938e-01, -1.454e-01), r);\n\tr = MulAdd(s0_4, M4(-1.167e-01, -4.252e-03, -1.382e-01, -2.507e-02, 1.098e-01, -4.058e-02, -3.589e-02, -3.798e-02, -3.234e-02, -1.313e-01, 7.806e-02, -8.148e-02, 6.749e-03, 6.031e-02, 1.802e-01, -7.930e-02), r);\n\tr = MulAdd(s0_5, M4(1.668e-02, 1.406e-01, 4.683e-02, 8.918e-03, 4.626e-02, 1.492e-01, -6.812e-02, 5.677e-03, -1.095e-01, -7.690e-02, 2.882e-02, 1.502e-01, -5.098e-02, 1.111e-01, 1.075e-02, -8.344e-02), r);\n\tr = MulAdd(s0_6, M4(-1.359e-02, -1.378e-02, 1.096e-01, -1.421e-02, -5.066e-02, -4.940e-02, 4.683e-02, 5.285e-02, 2.956e-02, 7.916e-02, -4.273e-02, -2.343e-01, -2.529e-01, 1.738e-01, 2.344e-02, -2.723e-02), r);\n\tr = MulAdd(s0_7, M4(1.619e-02, -5.444e-02, 1.244e-01, 2.961e-02, 1.911e-02, 3.931e-02, 1.964e-02, 2.953e-02, 3.841e-02, 3.794e-02, 9.847e-02, -1.168e-02, 1.175e-01, 2.568e-01, 1.892e-01, 1.959e-01), r);\n\tr = MulAdd(s0_8, M4(8.046e-03, -8.461e-02, 8.705e-02, 7.092e-02, -4.998e-02, -8.167e-02, 8.622e-02, 7.721e-02, -3.905e-02, -1.948e-01, 1.263e-01, -7.006e-02, -9.074e-02, -5.137e-02, -1.423e-01, -1.055e-01), r);\n\tr = MulAdd(s1_0, M4(2.037e-01, -4.134e-02, 1.431e-03, -8.682e-02, 8.096e-02, -4.626e-02, -4.857e-02, 4.149e-02, -9.669e-02, 5.387e-02, 1.704e-01, 6.811e-02, 1.236e-01, -6.518e-02, -3.237e-02, 8.485e-04), r);\n\tr = MulAdd(s1_1, M4(2.443e-01, -3.109e-02, -5.216e-02, -1.151e-02, -1.877e-02, 4.912e-02, -1.501e-02, -8.259e-02, 9.409e-02, 3.537e-02, -5.657e-02, -1.651e-02, 3.525e-02, 2.796e-03, -8.593e-02, -3.281e-02), r);\n\tr = MulAdd(s1_2, M4(-2.203e-01, 6.307e-02, 2.666e-01, 6.146e-02, -1.000e-01, 1.418e-01, 1.547e-02, 2.503e-01, 1.396e-01, -1.719e-02, 9.498e-02, 8.809e-02, 4.643e-02, -2.165e-03, -2.136e-02, 7.491e-02), r);\n\tr = MulAdd(s1_3, M4(1.313e-01, -2.397e-01, -1.541e-01, -9.527e-02, -1.657e-01, 4.067e-03, 3.172e-02, 6.652e-03, -3.691e-02, -4.660e-02, -1.886e-02, 1.112e-02, 8.538e-03, 7.209e-02, -5.522e-02, 1.420e-02), r);\n\tr = MulAdd(s1_4, M4(-8.042e-02, -6.499e-02, 7.468e-02, 2.530e-01, -2.417e-01, -9.201e-02, 5.306e-02, -2.171e-01, 9.399e-02, 2.275e-02, -1.106e-01, -4.740e-02, -8.718e-02, -9.990e-02, 4.451e-02, 9.443e-02), r);\n\tr = MulAdd(s1_5, M4(-5.618e-02, 3.624e-02, 2.160e-01, 2.765e-02, 9.392e-02, -4.092e-02, 1.667e-02, 1.583e-01, -1.460e-01, 2.101e-01, -6.971e-02, 8.168e-02, 3.349e-02, 6.209e-02, 7.637e-02, -1.209e-03), r);\n\tr = MulAdd(s1_6, M4(-7.459e-02, 9.316e-02, 1.352e-02, -5.870e-02, 8.489e-03, 1.144e-01, 3.504e-02, -1.692e-01, 9.801e-02, -4.062e-02, -7.359e-02, 7.979e-02, -5.365e-02, -1.372e-01, 9.992e-03, -1.625e-01), r);\n\tr = MulAdd(s1_7, M4(-2.180e-02, 1.464e-01, 3.081e-01, 9.825e-02, -6.650e-03, 3.962e-02, 8.037e-03, -2.993e-01, -1.635e-02, 9.104e-02, -2.753e-02, -2.897e-02, -8.581e-02, -2.014e-02, 3.952e-03, 5.674e-02), r);\n\tr = MulAdd(s1_8, M4(-1.155e-01, -1.423e-02, 1.558e-01, -9.508e-02, -4.453e-03, 9.155e-02, 8.825e-02, -2.214e-01, 4.655e-02, 1.176e-03, 9.797e-03, 1.354e-01, -8.679e-02, 1.240e-02, 2.236e-02, -1.652e-01), r);\n\tr = MulAdd(s2_0, M4(-1.724e-01, -9.182e-03, -2.293e-01, 2.517e-01, -8.243e-03, 4.365e-02, -2.093e-02, -1.078e-02, 2.551e-02, -3.522e-02, -6.930e-02, 2.232e-01, -1.114e-01, 1.489e-02, 1.974e-02, -7.529e-02), r);\n\tr = MulAdd(s2_1, M4(-7.519e-02, -3.149e-02, -8.839e-02, 1.913e-02, 5.915e-02, 6.902e-02, -2.554e-02, -1.764e-01, 7.881e-02, 8.444e-03, -9.908e-02, 1.643e-02, -1.592e-02, 9.464e-02, 9.421e-03, -1.186e-01), r);\n\tr = MulAdd(s2_2, M4(-8.639e-02, -1.400e-01, -1.564e-01, -2.477e-02, 1.336e-01, 1.401e-01, 2.463e-02, -1.280e-01, 1.352e-01, -7.146e-02, -1.183e-01, 1.704e-01, -3.626e-02, -3.917e-02, -6.329e-02, -7.060e-02), r);\n\tr = MulAdd(s2_3, M4(-2.485e-02, 1.315e-01, 2.486e-02, 1.226e-02, 1.236e-01, -5.331e-02, 4.234e-02, 1.228e-01, -1.372e-01, -5.923e-02, -2.059e-01, -1.074e-01, -1.556e-02, 1.669e-02, 3.191e-02, 1.972e-02), r);\n\tr = MulAdd(s2_4, M4(1.913e-01, -8.388e-02, 2.797e-02, 1.087e-01, 1.333e-01, -2.377e-01, -1.375e-01, -1.833e-01, -8.198e-02, -1.642e-01, -2.019e-01, -1.915e-01, 5.206e-02, -3.148e-02, -7.719e-02, 1.506e-01), r);\n\tr = MulAdd(s2_5, M4(-2.432e-01, 7.371e-02, 8.178e-02, -1.324e-01, -6.953e-02, 7.647e-02, 1.093e-02, -3.195e-02, -1.536e-01, -9.011e-02, 1.355e-01, -2.528e-02, 5.627e-02, -1.369e-02, -1.940e-02, -1.594e-02), r);\n\tr = MulAdd(s2_6, M4(-6.367e-02, 4.086e-02, 1.115e-01, 1.332e-01, -6.442e-02, 9.489e-03, 5.163e-02, 4.962e-02, -4.676e-02, 6.107e-02, 9.852e-04, -8.369e-02, -2.810e-02, 7.742e-02, 1.460e-02, -5.245e-02), r);\n\tr = MulAdd(s2_7, M4(2.499e-02, 9.525e-02, -1.504e-01, -4.846e-02, -1.431e-01, 6.899e-02, -2.462e-02, 1.607e-01, -4.203e-02, -6.801e-02, 8.834e-02, -1.126e-01, 9.556e-02, 6.370e-02, 5.367e-02, 9.592e-03), r);\n\tr = MulAdd(s2_8, M4(-3.189e-02, -8.031e-03, -2.310e-02, -6.561e-02, -6.205e-02, -3.060e-02, 1.363e-01, -2.286e-03, 5.340e-03, 5.857e-02, 1.316e-01, 1.853e-01, -7.457e-02, -7.660e-02, 3.847e-02, -4.925e-02), r);\n\tr = MulAdd(s3_0, M4(-1.402e-01, 3.435e-02, -1.059e-01, 6.012e-02, -1.999e-01, -8.057e-02, 2.603e-02, 1.750e-01, 9.291e-02, 1.118e-02, -1.018e-01, 1.539e-01, -9.788e-02, -1.960e-02, 1.499e-02, 2.258e-01), r);\n\tr = MulAdd(s3_1, M4(-7.307e-03, 1.649e-01, 2.268e-02, -3.546e-02, 2.505e-02, -7.354e-02, -3.064e-02, 1.181e-01, 6.936e-02, 1.284e-01, 5.474e-02, 1.417e-01, -1.496e-01, 6.069e-02, 1.271e-01, 1.387e-01), r);\n\tr = MulAdd(s3_2, M4(3.283e-02, -1.561e-01, -5.818e-02, -1.495e-02, 1.001e-01, -1.087e-01, 8.460e-04, 1.990e-01, -1.162e-01, -2.836e-02, 5.896e-03, 9.634e-02, 9.890e-02, 2.249e-01, -5.960e-02, 6.524e-02), r);\n\tr = MulAdd(s3_3, M4(6.081e-02, 1.426e-02, 1.743e-01, -1.444e-01, -3.796e-02, -6.453e-02, -1.042e-01, 1.164e-03, -7.472e-02, 5.873e-02, -8.279e-02, -6.472e-02, -2.282e-01, 3.751e-02, -9.872e-02, 2.167e-01), r);\n\tr = MulAdd(s3_4, M4(1.067e-01, 3.005e-02, 9.707e-02, 2.358e-02, 1.526e-01, 7.697e-02, -1.288e-01, -2.510e-01, 6.505e-02, -1.854e-03, -2.127e-02, -6.822e-03, -1.081e-02, -1.770e-01, -2.613e-02, -1.239e-01), r);\n\tr = MulAdd(s3_5, M4(-7.202e-02, -8.924e-02, 7.588e-02, -5.286e-03, 6.626e-02, 3.781e-02, 7.665e-02, 2.771e-02, 1.221e-02, 1.257e-01, -7.619e-02, 2.011e-02, 2.040e-01, 1.483e-01, -2.693e-02, 5.554e-02), r);\n\tr = MulAdd(s3_6, M4(1.010e-02, 1.521e-02, 2.979e-02, -2.894e-02, -3.475e-02, 5.665e-02, 8.026e-03, 5.070e-02, -9.067e-02, 7.642e-02, 2.394e-02, 3.811e-02, 3.641e-02, 2.143e-02, 2.236e-01, 2.299e-02), r);\n\tr = MulAdd(s3_7, M4(3.547e-02, 1.399e-02, 6.926e-04, 4.710e-02, -1.626e-01, 1.325e-02, -2.253e-02, 2.237e-01, -8.841e-02, 8.182e-02, 3.332e-03, 1.174e-01, 2.193e-01, -6.652e-02, -2.395e-01, -1.140e-01), r);\n\tr = MulAdd(s3_8, M4(-4.354e-02, -9.374e-03, 3.428e-02, 7.002e-03, 3.499e-02, 5.109e-02, 1.783e-02, -2.013e-02, 7.523e-02, -2.629e-02, 6.597e-02, 5.925e-02, -1.579e-01, -2.344e-02, 2.092e-03, -1.340e-01), r);\n\tr = MulAdd(s4_0, M4(-1.014e-02, 4.065e-03, 6.117e-02, 8.470e-02, -1.956e-01, -5.316e-02, -8.530e-02, 4.568e-02, 5.893e-02, -1.609e-02, -1.872e-02, 1.529e-01, 6.092e-02, -3.838e-02, -8.225e-02, -1.279e-03), r);\n\tr = MulAdd(s4_1, M4(-2.075e-01, -2.361e-02, 3.200e-02, 1.327e-02, -7.797e-02, 7.097e-03, 5.049e-02, -8.874e-02, 1.309e-02, -6.570e-02, 8.799e-02, -7.405e-02, -4.478e-02, -1.109e-02, 7.107e-02, 7.869e-02), r);\n\tr = MulAdd(s4_2, M4(-1.392e-02, 1.512e-01, 4.739e-02, 2.017e-02, 2.974e-02, -1.291e-01, 9.301e-02, 6.238e-02, 2.105e-02, 1.060e-02, 3.152e-02, 2.685e-02, -5.795e-02, -2.800e-02, -4.912e-03, -8.161e-02), r);\n\tr = MulAdd(s4_3, M4(-5.809e-02, -5.480e-02, 5.728e-02, -4.076e-02, -1.091e-01, -1.717e-01, 7.309e-03, 6.975e-02, -2.645e-02, 9.944e-02, -5.127e-02, -9.457e-02, -1.426e-02, -8.327e-02, -7.884e-02, -1.611e-02), r);\n\tr = MulAdd(s4_4, M4(9.950e-02, -7.039e-02, 4.891e-02, -3.545e-02, -5.392e-02, 8.991e-02, -5.298e-02, -3.121e-03, 2.157e-02, -8.715e-02, 5.429e-03, -5.276e-02, 1.285e-02, 1.285e-02, -1.142e-01, -5.807e-02), r);\n\tr = MulAdd(s4_5, M4(4.575e-02, 7.011e-02, -3.673e-02, -1.608e-01, -3.663e-03, -5.043e-03, -6.263e-03, -2.703e-02, 7.943e-02, -5.537e-03, 5.793e-02, -4.219e-02, -6.355e-02, 6.953e-02, 8.290e-02, 7.658e-02), r);\n\tr = MulAdd(s4_6, M4(7.795e-02, -7.372e-02, 6.093e-03, 1.056e-02, -2.125e-02, 8.681e-02, 3.893e-02, -7.483e-02, 5.271e-02, 2.211e-02, 9.069e-02, 1.073e-01, -8.662e-03, -5.212e-03, 2.982e-02, -5.739e-03), r);\n\tr = MulAdd(s4_7, M4(-1.717e-02, 2.283e-02, -3.941e-02, 4.109e-03, 8.527e-02, 1.001e-01, 1.846e-02, -1.255e-01, 2.752e-02, 3.294e-02, 2.106e-02, -5.608e-02, 8.715e-03, -1.594e-02, 5.878e-02, -1.700e-02), r);\n\tr = MulAdd(s4_8, M4(-1.026e-02, 1.383e-02, 7.065e-02, -1.091e-01, 3.015e-02, 4.376e-02, -4.114e-03, -1.954e-01, 2.104e-02, 1.412e-02, 4.828e-02, -6.711e-02, -3.568e-02, -8.016e-02, 3.111e-02, -4.615e-02), r);\n\tr = MulAdd(s5_0, M4(4.547e-02, 7.190e-02, -3.506e-02, -4.392e-02, -6.403e-02, -1.067e-01, 4.684e-02, -1.001e-01, 1.809e-01, -1.215e-01, -6.191e-01, 1.910e-01, 1.988e-02, -7.828e-02, 3.948e-02, -9.714e-02), r);\n\tr = MulAdd(s5_1, M4(-9.265e-02, -2.044e-01, 2.601e-03, 1.321e-01, 4.113e-02, 5.837e-02, -4.895e-02, -3.625e-01, -3.132e-02, 3.531e-01, -2.826e-01, -3.891e-01, -5.710e-02, 2.568e-01, 9.742e-02, -5.672e-03), r);\n\tr = MulAdd(s5_2, M4(-1.338e-02, -1.515e-01, -1.535e-02, 2.606e-01, -1.096e-01, -4.259e-02, 8.187e-02, 1.577e-01, 2.463e-02, -5.034e-02, -1.115e-02, -4.038e-02, -1.086e-01, -1.483e-02, 1.037e-01, -1.948e-01), r);\n\tr = MulAdd(s5_3, M4(-1.922e-02, -6.215e-02, 1.517e-02, 1.218e-01, -3.071e-02, 1.773e-02, -3.607e-02, 1.047e-01, -2.256e-02, -9.207e-02, -3.169e-02, -1.181e-01, 2.580e-01, -3.072e-01, -1.991e-01, 3.262e-01), r);\n\tr = MulAdd(s5_4, M4(1.372e-01, -1.362e-01, 1.134e-02, 2.881e-01, 8.171e-02, 1.333e-01, -1.464e-01, 2.722e-02, 1.081e-01, 3.382e-02, -3.378e-01, -3.254e-01, -2.377e-02, -4.981e-02, -2.661e-01, -2.726e-01), r);\n\tr = MulAdd(s5_5, M4(8.029e-02, -2.610e-03, -5.205e-02, -1.134e-01, -2.463e-03, -2.045e-02, -4.503e-02, -4.423e-02, -1.089e-02, 1.997e-02, -1.041e-01, -1.421e-01, 5.208e-03, -1.065e-01, -1.208e-01, 1.845e-02), r);\n\tr = MulAdd(s5_6, M4(6.110e-02, 5.042e-02, -7.398e-02, -1.530e-01, -6.443e-02, 9.451e-02, 1.408e-02, 8.396e-02, -5.996e-03, -6.634e-02, -2.270e-01, 8.724e-02, 1.584e-01, 1.196e-02, -1.147e-01, -2.780e-02), r);\n\tr = MulAdd(s5_7, M4(-3.316e-02, 9.211e-02, -4.164e-02, -5.648e-02, 9.994e-02, -7.862e-02, -8.656e-02, -2.388e-01, 3.321e-02, 7.988e-02, -7.226e-02, -1.103e-01, -1.496e-01, 3.867e-01, 2.678e-01, -1.186e-01), r);\n\tr = MulAdd(s5_8, M4(-7.234e-02, -7.924e-02, 1.794e-01, 2.319e-02, 7.658e-02, 4.797e-02, 1.451e-01, 2.210e-02, 5.900e-02, 1.386e-01, -1.373e-01, 7.030e-02, 5.726e-02, 1.062e-01, 5.655e-02, 7.951e-02), r);\n\tr = MulAdd(s6_0, M4(-1.131e-01, -3.577e-02, 1.421e-01, -3.580e-02, 6.043e-02, 6.665e-02, -1.767e-02, -1.889e-02, -9.003e-02, 3.426e-02, -2.185e-02, 6.045e-02, -4.273e-03, 1.100e-01, 2.061e-01, 7.638e-02), r);\n\tr = MulAdd(s6_1, M4(-1.003e-01, -4.393e-02, -1.226e-01, -1.006e-01, -1.930e-02, 4.019e-02, 4.542e-02, 1.739e-01, 2.843e-02, -9.876e-03, 3.212e-02, 7.995e-02, 6.001e-02, -2.006e-01, 8.412e-02, -1.438e-01), r);\n\tr = MulAdd(s6_2, M4(1.870e-01, 6.808e-03, 3.708e-02, 1.286e-01, 5.755e-02, -3.608e-02, -4.639e-02, 3.624e-02, 2.504e-03, 1.275e-01, -1.453e-02, 4.201e-02, -1.102e-01, 2.665e-02, 2.633e-01, -2.948e-01), r);\n\tr = MulAdd(s6_3, M4(-8.279e-02, 1.014e-01, 2.264e-01, 2.429e-01, 1.484e-02, 4.490e-02, 4.040e-02, -8.325e-02, 4.054e-02, -3.042e-03, 6.527e-02, -4.170e-02, -1.438e-01, 6.808e-02, -9.250e-02, -2.674e-01), r);\n\tr = MulAdd(s6_4, M4(2.200e-01, -3.817e-02, 8.343e-02, 7.486e-02, -3.402e-01, -1.026e-01, -1.268e-02, -8.661e-03, 7.670e-02, -1.422e-01, 3.638e-02, 2.780e-03, 2.017e-01, 2.283e-01, -1.223e-01, -1.577e-01), r);\n\tr = MulAdd(s6_5, M4(-3.965e-02, 1.235e-01, 2.024e-01, 2.421e-01, 7.390e-02, -9.736e-02, 5.491e-02, -1.747e-02, -8.821e-02, 3.791e-02, -3.107e-02, -1.047e-01, 2.079e-01, -4.630e-01, 7.189e-02, 1.396e-01), r);\n\tr = MulAdd(s6_6, M4(5.692e-02, 8.449e-02, 8.547e-02, -2.314e-02, -9.132e-02, 4.575e-02, -2.234e-02, -9.140e-02, 1.246e-02, 5.259e-02, -5.461e-02, -2.873e-02, 5.578e-03, 6.954e-02, -5.065e-02, -5.574e-02), r);\n\tr = MulAdd(s6_7, M4(1.269e-01, 4.871e-02, 9.764e-02, 5.221e-02, 3.510e-02, 3.839e-02, 4.264e-02, 1.651e-01, -2.245e-02, 3.480e-02, -2.074e-02, -1.590e-01, -1.197e-01, -1.028e-01, 3.397e-01, -1.966e-01), r);\n\tr = MulAdd(s6_8, M4(-1.619e-02, -2.535e-02, 5.190e-02, 1.855e-02, -5.307e-02, -1.313e-01, 8.308e-02, -5.597e-02, 1.891e-02, 7.614e-02, -5.868e-02, -4.543e-02, -1.567e-01, 1.922e-01, 1.221e-01, -4.377e-02), r);\n\tr = MulAdd(s7_0, M4(1.028e-01, 7.548e-03, -1.111e-01, -4.530e-02, 7.687e-02, -2.370e-03, 9.737e-02, 6.218e-02, -8.472e-02, -4.753e-03, -1.759e-02, 7.301e-02, -6.980e-02, -5.817e-02, 2.753e-02, 3.833e-03), r);\n\tr = MulAdd(s7_1, M4(9.802e-02, -1.691e-03, -1.026e-01, -1.141e-01, 4.108e-02, 1.704e-02, 5.610e-02, -7.644e-02, 1.787e-02, -2.503e-01, 3.689e-02, 5.876e-02, -5.987e-02, -7.223e-02, 1.370e-02, 5.564e-03), r);\n\tr = MulAdd(s7_2, M4(1.022e-01, -1.052e-02, 1.894e-02, -5.264e-03, 4.457e-02, 1.206e-01, 4.648e-02, 8.187e-02, 5.019e-02, -7.684e-02, -4.761e-02, 3.577e-02, 6.005e-03, 3.018e-02, -6.777e-03, -2.671e-02), r);\n\tr = MulAdd(s7_3, M4(7.466e-02, -5.545e-02, 5.147e-02, -9.105e-02, 1.714e-01, 3.147e-02, -7.164e-02, 1.448e-01, -1.964e-01, 4.534e-02, -1.009e-01, -1.424e-01, -1.958e-01, -1.056e-01, -7.003e-02, -1.141e-02), r);\n\tr = MulAdd(s7_4, M4(6.642e-02, -4.793e-02, 9.713e-02, -1.437e-01, -2.930e-03, 1.499e-02, -1.431e-01, -8.737e-02, 4.347e-03, -2.981e-01, 1.137e-01, 1.970e-01, -2.402e-02, 5.391e-03, -4.417e-02, 1.113e-01), r);\n\tr = MulAdd(s7_5, M4(9.509e-02, -7.006e-02, 4.524e-02, 9.689e-02, 1.099e-01, 6.772e-02, -4.856e-02, 2.939e-01, -1.818e-02, -5.436e-02, -1.028e-01, 1.111e-01, 7.046e-02, -7.240e-02, 1.357e-03, -4.907e-02), r);\n\tr = MulAdd(s7_6, M4(-1.812e-02, -1.753e-02, -5.269e-02, -8.065e-02, 3.366e-02, -1.626e-02, -5.052e-02, -1.878e-02, -3.922e-02, 1.056e-01, -6.507e-02, -5.286e-02, 8.207e-02, 5.148e-02, 7.783e-02, 1.681e-02), r);\n\tr = MulAdd(s7_7, M4(3.352e-02, -6.558e-02, -3.283e-02, 1.152e-02, -1.507e-02, 5.144e-02, 3.858e-02, -1.565e-01, 1.527e-01, -9.508e-02, 1.196e-02, -1.377e-01, 1.485e-02, 2.016e-01, -3.342e-02, -4.941e-02), r);\n\tr = MulAdd(s7_8, M4(2.321e-02, 6.616e-02, -4.715e-02, -1.106e-01, 7.326e-02, 1.498e-01, 7.544e-02, 1.409e-01, 3.549e-02, 8.089e-02, -5.649e-02, -1.224e-01, 1.137e-01, -1.970e-02, -8.010e-02, 1.944e-01), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.078e-02, 4.187e-02, -7.080e-03, 1.714e-02 };\n\tr = MulAdd(s0_0, M4(-2.717e-02, 9.769e-03, 9.986e-02, -9.887e-02, 3.267e-02, 1.003e-02, 1.651e-03, -1.743e-01, 8.331e-02, 3.077e-01, -2.175e-02, 1.084e-02, -1.637e-01, 1.951e-01, 6.243e-02, -1.436e-01), r);\n\tr = MulAdd(s0_1, M4(6.098e-02, -4.669e-02, -5.103e-02, 5.120e-02, -6.543e-02, 9.551e-02, -1.651e-01, 8.219e-03, -8.131e-02, 1.417e-01, 5.506e-02, -6.124e-03, -2.257e-02, 2.200e-01, 3.792e-02, -1.043e-01), r);\n\tr = MulAdd(s0_2, M4(-1.397e-02, 7.591e-02, -1.604e-01, -1.153e-01, -1.530e-01, 1.447e-01, 1.756e-02, 1.792e-02, 1.607e-01, -1.341e-01, 1.823e-01, 5.549e-02, 1.516e-01, 1.876e-01, 2.927e-02, -1.047e-01), r);\n\tr = MulAdd(s0_3, M4(-3.772e-02, 1.171e-01, 4.045e-03, 2.626e-02, -4.379e-02, 1.676e-02, 1.781e-01, -2.848e-02, 1.034e-01, 9.025e-02, 1.324e-01, -9.010e-02, -1.003e-01, 1.520e-01, -2.431e-01, -8.147e-02), r);\n\tr = MulAdd(s0_4, M4(2.643e-02, -7.991e-02, 3.294e-02, -1.099e-01, 9.339e-02, 3.811e-02, -6.230e-02, 1.012e-01, 6.919e-02, 1.717e-01, 3.213e-02, -1.369e-01, -1.733e-01, -2.811e-01, -1.270e-01, -1.960e-01), r);\n\tr = MulAdd(s0_5, M4(-1.091e-01, -6.180e-02, -2.301e-02, 8.213e-04, 9.512e-02, -3.803e-02, -1.084e-02, 1.420e-01, -1.947e-02, 2.276e-01, -6.797e-02, -9.134e-02, -2.017e-02, -1.052e-01, -4.217e-02, 2.666e-01), r);\n\tr = MulAdd(s0_6, M4(-5.222e-02, 4.017e-02, 7.455e-02, 2.275e-02, -2.500e-02, 8.089e-02, -4.076e-02, -4.002e-02, -8.283e-02, 2.970e-01, 1.390e-01, -7.048e-02, 2.858e-02, -1.936e-01, 1.580e-01, -8.027e-03), r);\n\tr = MulAdd(s0_7, M4(5.542e-02, 2.002e-02, -2.675e-02, 1.503e-02, -1.431e-01, -2.823e-02, 8.154e-03, -1.270e-01, 1.633e-03, -1.870e-01, -2.306e-01, -7.430e-02, 5.849e-02, 1.180e-02, 2.341e-02, 2.886e-01), r);\n\tr = MulAdd(s0_8, M4(-8.929e-02, 1.351e-01, 7.252e-02, 2.595e-02, -7.732e-02, -8.429e-02, -1.554e-01, -1.018e-01, 9.823e-03, 2.202e-01, 1.353e-02, 7.901e-04, 3.251e-02, -1.569e-01, 1.351e-01, 2.692e-01), r);\n\tr = MulAdd(s1_0, M4(-8.562e-02, 8.848e-02, 2.261e-01, -1.160e-01, 2.243e-02, -6.960e-02, -2.434e-02, 1.238e-01, -5.562e-02, 2.180e-02, -8.743e-02, 2.182e-02, 8.208e-02, 9.049e-02, -6.469e-02, 7.688e-03), r);\n\tr = MulAdd(s1_1, M4(1.996e-01, 3.454e-02, 2.105e-01, 2.091e-01, -6.999e-02, -9.015e-02, 4.232e-02, 5.711e-02, -1.312e-01, -3.303e-02, -1.230e-01, 2.519e-02, 1.419e-02, -6.896e-02, 2.025e-02, 6.401e-02), r);\n\tr = MulAdd(s1_2, M4(-9.447e-02, 8.105e-02, -1.036e-01, -1.588e-01, 1.464e-01, -9.827e-02, 8.542e-02, -2.070e-02, -6.366e-03, 1.370e-01, -7.298e-02, -1.725e-02, 1.101e-01, 2.035e-02, -9.348e-02, -7.200e-02), r);\n\tr = MulAdd(s1_3, M4(1.109e-02, 1.264e-01, -1.209e-01, -1.554e-01, -1.159e-01, -1.892e-01, 5.685e-02, 8.991e-02, 1.312e-01, 5.569e-02, 1.933e-01, 7.793e-02, 1.109e-01, 5.463e-02, -1.602e-03, -1.379e-01), r);\n\tr = MulAdd(s1_4, M4(5.509e-02, -1.017e-01, 8.452e-02, -1.655e-01, -9.169e-03, -1.362e-01, -1.786e-01, -5.513e-02, -6.821e-04, -8.778e-02, 5.897e-02, -5.619e-02, -5.489e-02, -4.180e-02, 4.755e-03, -3.080e-03), r);\n\tr = MulAdd(s1_5, M4(-1.489e-01, -5.831e-02, -1.427e-01, -1.644e-01, 1.730e-02, 1.156e-03, 2.227e-02, 1.556e-01, -4.279e-02, -3.060e-02, -1.932e-02, -4.620e-02, -1.522e-02, -2.339e-02, 9.479e-02, 2.281e-02), r);\n\tr = MulAdd(s1_6, M4(-8.987e-02, 1.801e-01, 1.497e-01, -2.205e-02, 1.658e-01, 2.336e-01, -1.755e-01, 1.293e-01, -2.428e-02, 1.084e-01, 3.095e-02, 1.159e-01, -1.136e-01, 1.618e-01, -1.261e-01, -7.645e-02), r);\n\tr = MulAdd(s1_7, M4(-2.607e-02, -1.290e-01, -1.531e-02, -9.560e-02, -9.710e-02, -7.514e-02, -8.585e-02, -1.072e-01, 1.509e-01, -2.000e-01, -8.177e-02, 6.025e-02, -2.661e-03, -9.347e-03, -5.421e-02, 1.047e-01), r);\n\tr = MulAdd(s1_8, M4(-1.385e-01, 1.662e-01, 5.869e-02, -2.730e-02, -6.720e-02, -2.388e-01, -6.281e-02, -3.390e-01, 7.931e-03, 9.052e-02, -1.473e-02, -4.222e-02, -3.454e-02, 2.653e-02, -6.030e-02, 4.434e-02), r);\n\tr = MulAdd(s2_0, M4(-1.198e-01, 5.241e-02, 6.661e-02, 1.784e-01, -5.096e-02, -1.366e-01, 2.038e-02, 2.957e-02, -1.052e-02, -2.031e-01, -4.690e-02, -2.149e-01, 2.957e-02, -2.198e-02, -5.177e-02, -3.467e-02), r);\n\tr = MulAdd(s2_1, M4(4.485e-02, 6.809e-02, 1.478e-01, -2.134e-01, 1.127e-01, 3.646e-02, -8.540e-02, -7.599e-02, -1.459e-01, -1.487e-01, -1.248e-01, 2.611e-01, -6.606e-02, 2.024e-01, 1.783e-02, -1.899e-02), r);\n\tr = MulAdd(s2_2, M4(1.640e-02, -3.178e-02, -1.399e-01, -3.473e-02, 1.110e-02, 1.010e-01, -1.280e-01, -2.861e-02, -4.956e-02, -1.929e-01, -5.167e-02, 3.184e-02, -1.111e-01, 2.306e-02, 1.435e-01, -9.536e-02), r);\n\tr = MulAdd(s2_3, M4(-5.429e-02, 1.061e-02, -4.774e-01, 2.036e-02, -1.635e-02, 6.595e-02, -3.063e-02, 7.685e-02, -1.179e-01, -1.091e-01, 3.535e-02, 1.078e-01, -6.447e-02, -1.197e-01, 1.170e-01, 2.519e-02), r);\n\tr = MulAdd(s2_4, M4(-2.047e-02, 2.278e-02, -7.021e-02, 1.275e-01, -1.218e-01, -1.286e-01, -1.497e-01, -7.172e-02, 4.386e-02, -6.259e-02, -7.381e-02, -2.430e-01, 7.806e-02, -7.124e-02, 1.390e-02, 2.018e-01), r);\n\tr = MulAdd(s2_5, M4(-1.143e-01, 1.832e-02, -1.345e-01, 1.271e-01, -3.451e-02, -3.570e-03, 7.250e-02, 9.202e-02, 9.418e-02, -1.007e-01, 1.772e-01, 1.791e-01, -2.399e-02, 7.251e-02, -6.399e-02, -4.066e-02), r);\n\tr = MulAdd(s2_6, M4(1.195e-02, 3.455e-02, -9.223e-02, 7.473e-02, -4.358e-02, -5.941e-02, 4.774e-02, 2.804e-02, 1.101e-01, -1.979e-01, -2.947e-02, -7.232e-02, -1.633e-02, -9.952e-03, 9.117e-02, -1.100e-01), r);\n\tr = MulAdd(s2_7, M4(1.648e-01, -1.768e-01, -3.981e-02, -5.506e-02, -3.355e-03, -1.699e-02, 6.906e-02, -3.916e-02, 4.472e-02, -1.261e-01, 9.100e-02, -1.264e-01, -2.708e-02, -1.563e-01, -3.189e-02, 1.403e-01), r);\n\tr = MulAdd(s2_8, M4(-1.306e-01, 1.916e-02, -2.621e-01, -2.006e-03, 3.518e-02, 1.125e-01, -1.299e-02, -9.027e-02, 2.894e-02, -2.493e-01, -2.424e-02, -8.538e-03, -3.670e-02, -4.606e-02, -1.190e-01, 1.236e-02), r);\n\tr = MulAdd(s3_0, M4(2.467e-02, 1.228e-01, 1.307e-03, 2.644e-02, -1.061e-01, -2.063e-01, -1.047e-01, -4.946e-02, -6.557e-02, 3.756e-02, 1.079e-02, 4.868e-02, 7.785e-02, -2.759e-03, -1.427e-01, 1.646e-01), r);\n\tr = MulAdd(s3_1, M4(4.235e-02, 1.720e-01, 1.786e-02, -9.564e-02, -8.153e-02, -1.325e-02, -2.990e-01, -2.348e-02, -5.725e-02, 7.600e-02, 8.733e-02, 9.938e-02, -7.687e-02, 2.715e-01, -2.000e-02, -1.306e-01), r);\n\tr = MulAdd(s3_2, M4(-2.426e-02, -6.496e-02, 1.602e-02, -5.793e-02, -1.478e-01, -1.127e-01, 4.043e-02, -7.110e-02, 5.491e-02, -6.065e-02, 2.713e-02, -3.371e-03, -4.914e-02, 2.346e-02, -4.165e-02, -2.006e-01), r);\n\tr = MulAdd(s3_3, M4(-1.237e-01, 1.560e-02, -1.648e-02, 2.805e-02, 1.293e-01, -2.959e-02, 1.850e-01, 1.106e-01, -9.726e-02, 6.985e-02, 4.132e-02, 2.229e-01, -9.818e-02, -2.129e-02, -5.933e-02, 3.006e-01), r);\n\tr = MulAdd(s3_4, M4(-1.240e-01, -1.789e-02, 1.252e-02, 1.278e-01, 4.614e-02, 5.781e-02, 1.586e-01, -5.546e-02, 1.474e-01, -1.586e-01, -3.989e-02, -3.110e-02, -2.245e-01, 1.206e-01, 3.395e-01, 3.636e-02), r);\n\tr = MulAdd(s3_5, M4(1.174e-01, 1.871e-01, 5.915e-02, 9.390e-03, 2.787e-02, 1.518e-01, 2.257e-01, 9.543e-02, -1.490e-01, -9.546e-02, -8.699e-02, 6.155e-03, 1.305e-01, 1.351e-02, -1.750e-01, 7.539e-02), r);\n\tr = MulAdd(s3_6, M4(-1.004e-01, 1.196e-01, 3.374e-02, -2.762e-02, 3.960e-02, -7.232e-02, 8.549e-02, -1.199e-01, 4.529e-02, -1.194e-01, -1.098e-01, 3.108e-02, -6.552e-02, -4.890e-02, -7.023e-02, -1.666e-01), r);\n\tr = MulAdd(s3_7, M4(2.712e-02, -6.507e-02, 4.040e-02, -1.978e-02, -2.940e-02, -1.641e-01, 1.689e-01, 1.310e-02, 1.428e-01, 7.349e-02, 5.750e-02, -4.696e-02, -1.200e-01, -1.444e-01, 1.115e-01, -1.165e-01), r);\n\tr = MulAdd(s3_8, M4(-9.200e-02, -5.976e-03, -7.335e-02, -2.183e-02, 1.265e-01, 6.324e-03, 1.261e-02, -4.413e-02, 8.816e-02, -1.475e-01, 2.062e-02, 5.278e-02, 1.811e-01, -7.741e-02, -2.011e-01, -4.065e-02), r);\n\tr = MulAdd(s4_0, M4(-1.153e-02, -9.074e-03, -5.989e-02, -2.584e-03, -5.218e-02, 7.476e-02, -8.211e-03, 4.237e-02, -6.923e-02, -1.856e-02, 1.326e-02, -5.366e-02, -2.938e-03, -6.377e-02, -1.163e-01, -1.680e-01), r);\n\tr = MulAdd(s4_1, M4(-9.843e-02, 6.010e-02, -2.105e-03, 6.071e-03, 5.479e-02, -3.386e-03, -1.102e-02, -4.528e-02, -1.727e-02, 4.790e-02, 2.434e-02, -7.955e-02, -3.570e-02, -4.003e-02, 1.576e-02, 9.249e-03), r);\n\tr = MulAdd(s4_2, M4(-8.375e-02, 5.498e-02, 1.497e-01, -4.453e-02, -5.135e-02, 1.353e-01, -6.536e-02, -1.258e-01, -9.036e-02, -5.740e-02, 1.372e-01, 8.847e-02, 5.655e-02, -7.369e-02, -4.204e-02, 7.450e-02), r);\n\tr = MulAdd(s4_3, M4(2.723e-03, -4.919e-02, -1.869e-02, 6.287e-03, 6.744e-02, 3.939e-02, 4.791e-02, -2.436e-02, 9.017e-05, 5.233e-02, 1.542e-02, -3.984e-02, -6.053e-02, 1.544e-02, 1.268e-01, -1.184e-01), r);\n\tr = MulAdd(s4_4, M4(-2.181e-01, -7.282e-02, -1.797e-02, -4.704e-03, 2.914e-02, -4.503e-02, -1.223e-01, -3.956e-02, -1.158e-01, -1.896e-02, -2.473e-02, 4.600e-02, 2.196e-02, 1.015e-01, -5.597e-02, 4.143e-02), r);\n\tr = MulAdd(s4_5, M4(-5.904e-02, 2.190e-02, 7.496e-02, 1.693e-01, -4.697e-02, -2.332e-02, 1.691e-01, 2.206e-02, 4.138e-02, -5.012e-02, 1.875e-02, 1.281e-01, 3.007e-02, 3.105e-02, 3.457e-02, -6.314e-02), r);\n\tr = MulAdd(s4_6, M4(-4.867e-02, 6.212e-03, 3.773e-02, 2.992e-02, 8.184e-02, -1.817e-02, 1.572e-01, -2.633e-02, 5.866e-02, 3.204e-02, 7.714e-03, -2.036e-01, -4.740e-02, -1.816e-02, 1.361e-01, -1.599e-02), r);\n\tr = MulAdd(s4_7, M4(1.790e-01, 4.099e-02, 4.671e-02, -1.282e-01, 1.517e-01, 9.965e-02, 9.696e-03, -3.455e-02, 1.063e-01, 9.338e-02, 1.373e-01, -2.089e-02, 1.111e-02, 5.577e-02, 2.652e-02, 5.652e-02), r);\n\tr = MulAdd(s4_8, M4(1.772e-02, 6.870e-02, -4.726e-02, 6.538e-02, 4.101e-02, 4.077e-02, 8.750e-02, 4.385e-02, 1.588e-02, 1.211e-02, -3.037e-02, 3.300e-02, -1.147e-01, -9.400e-02, -1.073e-01, -4.589e-02), r);\n\tr = MulAdd(s5_0, M4(-7.043e-02, 1.106e-01, 5.424e-02, -2.076e-01, -2.114e-02, -6.736e-03, -1.078e-01, 2.016e-01, 1.544e-01, 1.365e-01, 2.181e-01, -1.275e-02, 7.327e-03, 3.924e-02, -1.393e-01, -2.110e-01), r);\n\tr = MulAdd(s5_1, M4(-1.034e-01, 1.045e-02, 1.199e-01, -9.829e-02, 9.394e-02, -1.407e-01, -1.636e-01, -2.472e-03, 1.985e-01, 5.539e-02, 2.328e-01, -2.959e-01, -7.821e-02, 2.372e-01, 3.268e-01, -1.386e-01), r);\n\tr = MulAdd(s5_2, M4(7.605e-02, 1.772e-01, 8.793e-02, 4.894e-02, -2.980e-02, -1.566e-02, -1.525e-01, -1.220e-02, 3.103e-02, 1.313e-01, 2.984e-01, 2.059e-01, -4.579e-02, 1.324e-01, -4.685e-02, 1.377e-01), r);\n\tr = MulAdd(s5_3, M4(8.444e-02, -7.072e-02, -8.838e-02, -1.174e-01, 1.293e-01, -5.982e-02, 4.509e-02, 5.332e-03, -5.717e-03, -7.399e-02, -3.717e-02, -6.773e-02, 9.809e-03, -1.349e-01, -4.095e-02, -4.058e-02), r);\n\tr = MulAdd(s5_4, M4(-1.147e-01, -1.989e-02, 2.123e-01, -1.439e-01, -5.222e-03, -2.707e-01, -1.859e-01, -8.678e-02, 3.698e-01, -1.723e-01, -4.526e-01, -2.236e-01, -5.285e-02, 2.418e-01, 1.577e-01, -1.008e-01), r);\n\tr = MulAdd(s5_5, M4(-1.191e-02, -3.442e-02, 1.354e-01, -5.484e-02, -9.487e-02, -2.576e-01, 6.984e-02, 1.090e-01, 1.431e-01, 2.262e-01, 2.292e-01, 2.876e-01, -1.843e-01, -2.636e-01, 9.564e-03, -3.201e-01), r);\n\tr = MulAdd(s5_6, M4(-3.639e-02, 3.560e-02, 5.691e-02, 1.310e-01, 7.157e-02, -2.525e-02, 6.015e-02, 2.008e-01, 2.294e-01, -6.681e-02, 1.624e-01, -2.359e-01, 2.105e-01, 1.970e-01, 8.391e-03, 2.562e-01), r);\n\tr = MulAdd(s5_7, M4(1.713e-01, 1.372e-01, 2.792e-02, -3.161e-02, 1.123e-01, -3.285e-02, -8.937e-02, 2.190e-02, 1.601e-01, -4.079e-02, -1.160e-01, 3.078e-02, 3.789e-02, -1.248e-02, -4.555e-01, -5.014e-02), r);\n\tr = MulAdd(s5_8, M4(3.548e-02, -1.643e-02, -2.761e-02, 1.177e-01, 7.889e-02, 4.827e-03, 1.050e-02, 1.173e-01, 7.210e-02, -2.071e-01, -1.656e-01, -5.126e-02, -1.370e-01, -2.145e-02, -4.849e-01, 2.399e-01), r);\n\tr = MulAdd(s6_0, M4(-5.271e-02, -4.056e-02, -1.902e-02, 9.367e-02, 1.910e-01, 8.001e-02, -1.315e-01, -5.283e-02, 5.967e-02, -1.328e-02, -1.207e-01, 5.678e-02, 1.117e-01, 8.106e-02, -1.247e-01, -5.059e-02), r);\n\tr = MulAdd(s6_1, M4(-1.485e-01, -5.026e-03, -2.219e-02, -3.135e-02, 1.374e-01, 1.129e-01, -1.310e-01, -8.498e-02, -1.109e-02, -2.860e-02, -5.555e-02, 1.483e-02, -1.202e-01, 7.081e-02, -1.195e-02, 2.183e-01), r);\n\tr = MulAdd(s6_2, M4(-3.599e-02, 1.129e-01, -2.252e-02, -3.895e-02, -1.965e-02, -8.345e-02, -2.432e-02, -3.539e-02, -4.661e-02, -4.581e-02, 6.963e-02, -6.548e-03, -1.589e-01, 4.702e-02, -9.506e-02, 8.096e-02), r);\n\tr = MulAdd(s6_3, M4(9.022e-03, 7.867e-02, 4.089e-02, -1.734e-01, -2.731e-04, -1.261e-02, -1.128e-01, -4.965e-02, -6.452e-03, 2.955e-02, 1.457e-01, 5.475e-02, -1.956e-01, -2.854e-04, 1.397e-01, 4.013e-01), r);\n\tr = MulAdd(s6_4, M4(-7.334e-02, -3.460e-02, 1.664e-01, -5.664e-03, 3.891e-01, 9.504e-02, 7.005e-02, -5.228e-02, -9.434e-02, -1.497e-01, 1.776e-01, -2.187e-02, -2.030e-01, 4.712e-01, 4.174e-01, 1.477e-01), r);\n\tr = MulAdd(s6_5, M4(4.229e-02, 6.727e-02, -1.072e-01, 1.023e-02, 2.305e-01, -2.663e-02, -5.938e-02, 2.253e-02, 1.888e-01, -1.715e-01, -3.109e-02, -2.876e-02, 9.730e-02, 1.614e-01, 4.309e-02, -1.132e-02), r);\n\tr = MulAdd(s6_6, M4(-4.604e-02, 1.801e-01, 1.316e-01, 2.310e-01, -7.241e-02, 1.791e-02, 2.261e-01, -1.032e-03, -8.607e-02, 1.205e-02, 1.081e-01, -1.049e-01, -3.676e-01, 1.789e-01, -2.022e-01, 4.011e-01), r);\n\tr = MulAdd(s6_7, M4(-3.995e-02, 1.906e-01, 1.376e-01, 9.652e-02, -4.697e-02, 1.448e-02, -1.473e-02, -2.965e-02, -4.528e-02, -9.930e-02, 2.797e-03, 3.674e-02, -4.603e-01, -3.507e-01, 2.416e-01, -3.515e-01), r);\n\tr = MulAdd(s6_8, M4(-7.833e-02, 9.354e-02, -3.600e-02, 5.854e-02, 1.679e-01, -5.118e-02, 3.355e-02, 3.831e-02, -1.616e-03, -8.032e-02, 1.246e-01, -1.168e-01, -2.178e-01, -3.155e-01, 8.497e-02, 9.947e-02), r);\n\tr = MulAdd(s7_0, M4(1.317e-02, 6.127e-02, -1.356e-01, -1.334e-01, -1.430e-01, -9.201e-02, -6.164e-02, 9.808e-02, 1.071e-01, -1.024e-01, -2.085e-01, 3.279e-02, -1.141e-01, -9.217e-02, 3.365e-02, -2.446e-02), r);\n\tr = MulAdd(s7_1, M4(1.214e-01, -1.052e-01, 3.639e-02, -7.164e-02, -1.102e-01, 8.978e-02, -5.414e-02, 2.847e-02, -6.224e-02, 2.982e-02, -4.916e-02, -6.726e-02, 1.001e-01, 2.355e-03, -3.565e-02, 5.170e-02), r);\n\tr = MulAdd(s7_2, M4(-7.410e-02, -4.689e-02, -1.308e-02, -7.921e-03, 6.083e-02, -4.359e-02, 1.145e-01, 4.113e-02, -4.052e-02, 3.164e-02, 1.010e-01, 2.453e-02, 5.970e-02, 3.461e-02, 4.648e-02, -2.663e-04), r);\n\tr = MulAdd(s7_3, M4(-1.003e-01, 2.135e-02, -1.455e-01, 5.218e-02, -2.309e-01, 6.783e-02, 1.318e-02, -1.827e-01, 1.621e-01, 5.029e-02, -7.106e-02, 1.621e-01, 1.541e-02, 1.652e-02, 2.895e-02, 1.683e-01), r);\n\tr = MulAdd(s7_4, M4(-1.522e-01, -3.963e-04, 3.581e-03, -2.834e-02, -3.330e-01, 1.078e-01, 1.278e-01, -2.416e-02, 2.028e-01, 2.793e-01, 3.217e-01, 1.514e-01, -1.400e-01, -1.050e-02, -6.733e-02, 5.471e-02), r);\n\tr = MulAdd(s7_5, M4(1.353e-01, 4.765e-02, -1.027e-01, 1.058e-01, -6.736e-02, 5.301e-02, -5.598e-02, 6.322e-02, 1.928e-03, 1.496e-01, 3.799e-02, -3.298e-02, 5.269e-02, 1.571e-01, -9.930e-02, -1.330e-01), r);\n\tr = MulAdd(s7_6, M4(-8.066e-03, -5.750e-02, 2.862e-02, -3.012e-02, -1.507e-01, 1.030e-01, 6.889e-02, -3.722e-02, 4.417e-02, 2.836e-02, -1.419e-01, 1.423e-01, 4.511e-02, -3.572e-02, -3.069e-02, -8.108e-03), r);\n\tr = MulAdd(s7_7, M4(4.494e-02, 5.384e-02, -3.370e-02, -2.500e-02, -2.476e-01, -4.991e-03, -2.138e-03, -2.498e-02, -1.399e-01, 1.500e-02, -6.577e-02, 7.640e-02, 1.067e-01, -7.990e-02, 2.787e-02, 2.408e-03), r);\n\tr = MulAdd(s7_8, M4(-3.526e-02, -2.719e-02, 5.664e-02, -7.852e-02, -4.183e-02, 1.072e-01, -8.091e-02, 5.822e-02, 1.535e-01, -3.325e-02, 1.665e-01, 4.851e-03, 3.232e-03, 1.497e-01, 2.886e-02, -5.168e-02), r);\n\treturn r;\n}\n\nvoid Pass8(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 9\n//!DESC conv8\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.403e-02, -6.125e-03, -2.342e-02, -1.136e-02 };\n\tr = MulAdd(s0_0, M4(-1.179e-01, -1.154e-01, 2.741e-02, 6.196e-02, -1.986e-01, -4.433e-02, 1.182e-01, -2.432e-02, 3.710e-02, 4.281e-02, -1.404e-02, -5.320e-02, -4.772e-02, 6.207e-02, -1.707e-01, -4.863e-02), r);\n\tr = MulAdd(s0_1, M4(3.627e-02, -2.468e-01, 8.430e-03, 5.969e-02, -1.338e-02, -4.213e-02, -1.246e-02, 1.387e-01, 4.174e-02, 1.655e-01, 6.350e-02, -8.760e-02, 1.408e-01, -1.162e-01, 7.822e-02, -1.009e-02), r);\n\tr = MulAdd(s0_2, M4(6.093e-03, 8.566e-05, -3.650e-02, -1.255e-01, 2.387e-03, 1.066e-01, 2.412e-02, 1.019e-02, -1.140e-01, -1.713e-01, -5.116e-02, -7.987e-03, -9.589e-02, -2.405e-02, 1.606e-01, 9.482e-02), r);\n\tr = MulAdd(s0_3, M4(7.013e-02, -1.590e-02, 8.185e-02, 1.062e-01, -1.050e-02, -6.553e-03, -4.859e-03, 1.272e-01, 1.492e-01, 5.653e-02, -1.592e-01, 8.731e-02, -2.231e-02, 8.736e-02, -3.930e-01, 1.555e-04), r);\n\tr = MulAdd(s0_4, M4(1.191e-02, 1.250e-01, 1.416e-01, 4.392e-02, 1.373e-01, 4.931e-03, 2.598e-03, -6.627e-02, -7.282e-02, -3.920e-02, 4.955e-02, 4.273e-02, 6.893e-02, -1.407e-01, 1.878e-02, 5.470e-02), r);\n\tr = MulAdd(s0_5, M4(1.175e-01, -5.407e-02, -6.647e-02, -5.952e-02, 8.890e-02, -6.018e-02, 1.071e-01, 5.453e-02, -1.330e-01, -1.647e-01, -3.316e-02, -9.201e-02, -2.849e-02, -6.046e-02, -4.337e-02, 1.021e-01), r);\n\tr = MulAdd(s0_6, M4(-1.529e-01, -2.821e-02, 1.086e-01, 3.927e-02, -1.485e-01, -2.149e-02, 6.814e-02, -4.126e-03, 1.656e-01, 9.400e-02, 8.804e-02, 7.325e-02, 3.157e-02, 8.224e-03, -1.134e-01, 5.558e-02), r);\n\tr = MulAdd(s0_7, M4(-2.497e-02, -8.253e-02, -1.913e-01, -5.884e-02, -9.665e-02, -6.127e-02, 2.678e-02, 1.353e-01, -3.921e-02, 1.782e-01, 1.702e-01, 1.518e-01, 9.343e-02, -3.666e-02, -5.675e-03, 7.092e-02), r);\n\tr = MulAdd(s0_8, M4(-4.033e-02, -2.407e-02, 2.819e-01, 9.621e-03, -2.139e-02, 6.438e-02, -2.593e-02, 1.095e-02, -1.087e-01, -1.379e-01, 2.617e-01, 7.200e-02, 3.833e-02, -1.586e-01, -1.300e-01, 8.798e-02), r);\n\tr = MulAdd(s1_0, M4(1.711e-02, -9.933e-03, -7.461e-02, -2.927e-03, 8.384e-02, -7.661e-03, 2.646e-01, 9.328e-03, -6.376e-02, -5.568e-03, -4.761e-03, -4.269e-02, -2.487e-02, -2.441e-02, -1.288e-01, -2.240e-02), r);\n\tr = MulAdd(s1_1, M4(2.904e-02, -3.527e-02, 3.301e-02, -1.035e-01, 7.388e-02, 1.715e-01, -4.880e-02, 1.106e-01, 9.189e-03, 2.177e-01, 1.389e-02, -7.839e-02, -4.192e-02, 2.435e-01, -1.254e-01, 8.114e-02), r);\n\tr = MulAdd(s1_2, M4(1.409e-02, 7.445e-02, -5.300e-02, -1.246e-01, 1.162e-01, 2.528e-02, 6.691e-02, 1.195e-01, -1.119e-01, -2.102e-01, -1.194e-02, 7.495e-02, -2.134e-02, 8.568e-03, -1.460e-02, 7.260e-02), r);\n\tr = MulAdd(s1_3, M4(2.169e-03, -5.947e-02, -2.129e-02, 7.883e-02, -8.182e-02, -1.660e-02, 1.747e-01, 7.014e-02, 1.355e-01, 1.056e-01, -3.046e-02, 6.735e-02, -6.171e-02, 1.020e-01, -8.185e-02, 5.354e-03), r);\n\tr = MulAdd(s1_4, M4(1.269e-02, 8.096e-04, -1.583e-01, 8.178e-02, -3.959e-01, 1.193e-01, 8.464e-02, -1.127e-01, 1.944e-01, 7.556e-02, 1.168e-01, -1.384e-02, -3.573e-02, -1.009e-01, 1.742e-02, -2.912e-02), r);\n\tr = MulAdd(s1_5, M4(7.504e-03, -4.270e-02, -3.003e-03, -7.649e-02, -8.989e-02, -2.783e-01, -1.515e-01, 2.359e-01, -9.594e-03, -1.769e-01, 5.729e-02, -5.659e-02, 1.098e-01, -1.249e-01, 6.557e-03, -2.786e-03), r);\n\tr = MulAdd(s1_6, M4(7.453e-02, -5.096e-02, -1.363e-02, 6.269e-03, -5.956e-03, -4.357e-02, -1.768e-01, -1.273e-01, 1.452e-02, -7.577e-03, 3.611e-02, -1.243e-01, 1.268e-02, -8.653e-02, 1.094e-02, 1.110e-01), r);\n\tr = MulAdd(s1_7, M4(-2.039e-02, 8.292e-02, -1.957e-01, 4.652e-02, -1.223e-01, 9.855e-02, 9.949e-03, 7.547e-02, -6.217e-02, 1.737e-01, 1.743e-02, 3.541e-02, 1.905e-03, -1.051e-01, 1.078e-01, -6.229e-02), r);\n\tr = MulAdd(s1_8, M4(-8.799e-02, -1.323e-01, 1.781e-01, 1.228e-01, -5.019e-02, 4.793e-02, -6.260e-02, 4.792e-03, -8.148e-02, -1.676e-01, -6.797e-03, 1.878e-01, 1.042e-02, -1.123e-01, 1.075e-01, -6.213e-03), r);\n\tr = MulAdd(s2_0, M4(1.137e-02, -3.013e-02, -5.909e-02, -3.283e-02, 6.601e-02, -3.383e-02, -1.308e-02, 3.534e-02, 1.833e-02, -4.259e-02, 2.534e-02, -1.148e-01, 8.100e-02, 3.943e-02, -1.851e-01, -2.159e-02), r);\n\tr = MulAdd(s2_1, M4(-6.727e-02, 4.950e-02, -1.069e-01, -1.365e-01, 2.731e-01, -7.385e-03, 4.301e-02, -4.144e-02, 1.794e-03, 1.076e-01, 1.060e-01, -1.038e-01, -6.883e-04, 1.702e-01, -1.243e-01, 8.879e-02), r);\n\tr = MulAdd(s2_2, M4(6.783e-03, 9.341e-03, -3.123e-02, -4.762e-02, -3.262e-02, 1.387e-01, -3.649e-02, -4.453e-02, -5.958e-02, -8.626e-03, 6.617e-03, -4.030e-02, 1.290e-01, 1.421e-02, 1.811e-01, 1.369e-01), r);\n\tr = MulAdd(s2_3, M4(-1.794e-01, -2.994e-02, -1.668e-02, -1.213e-01, -1.363e-01, -3.924e-02, -7.976e-02, 8.185e-02, -1.239e-01, -6.484e-02, 2.573e-02, -6.085e-02, -8.119e-02, -8.224e-02, 7.713e-02, -4.880e-02), r);\n\tr = MulAdd(s2_4, M4(-8.398e-02, -3.546e-02, -3.728e-02, 1.082e-01, 1.656e-01, -1.626e-01, -3.856e-02, -1.520e-01, 5.293e-02, -1.090e-01, -1.047e-01, 5.184e-02, 2.178e-01, -6.848e-02, 3.055e-04, -3.072e-02), r);\n\tr = MulAdd(s2_5, M4(8.491e-02, 8.328e-02, 2.124e-01, -6.988e-02, 8.466e-03, -1.768e-01, -1.258e-01, 8.647e-03, -7.203e-02, -8.992e-02, 5.066e-03, 5.165e-02, 1.724e-01, 1.102e-01, -1.397e-01, 1.527e-01), r);\n\tr = MulAdd(s2_6, M4(-2.680e-02, 3.200e-02, 6.107e-02, 1.293e-01, -4.097e-02, -1.291e-02, -2.858e-02, -5.949e-02, 8.323e-02, -1.926e-02, -4.581e-02, -1.917e-01, -3.910e-02, -1.339e-01, -1.078e-01, 4.290e-02), r);\n\tr = MulAdd(s2_7, M4(-9.518e-02, 4.218e-02, 7.849e-02, 1.521e-01, -9.498e-02, -8.458e-03, 6.540e-03, 5.923e-04, -4.768e-02, 7.709e-02, 2.112e-01, -9.940e-02, -8.771e-02, -1.498e-01, -1.108e-02, -1.136e-01), r);\n\tr = MulAdd(s2_8, M4(1.078e-01, -4.815e-02, -2.572e-02, 9.091e-03, -4.395e-02, -5.938e-03, 5.717e-02, -9.596e-02, 2.518e-03, -2.338e-02, 9.928e-02, -3.081e-02, -2.289e-01, 6.257e-02, 7.739e-02, -8.178e-02), r);\n\tr = MulAdd(s3_0, M4(1.702e-02, 4.195e-02, 3.265e-02, 3.802e-02, 1.608e-01, -1.130e-01, 7.652e-02, 7.043e-02, 5.133e-02, 7.681e-02, -2.191e-02, 8.329e-02, 4.514e-02, -1.296e-03, 7.691e-02, -1.759e-02), r);\n\tr = MulAdd(s3_1, M4(2.979e-01, -6.374e-03, 3.151e-02, -1.477e-01, 1.650e-02, 1.401e-01, 1.159e-01, 1.215e-02, -3.441e-02, 1.056e-01, 2.866e-02, 1.198e-01, -2.216e-02, 1.299e-01, -1.351e-02, -3.889e-02), r);\n\tr = MulAdd(s3_2, M4(5.457e-02, 1.967e-01, 1.839e-01, 4.967e-02, -2.029e-02, 6.465e-02, -1.635e-02, 9.906e-02, -2.052e-03, 2.073e-02, 1.095e-02, 6.171e-02, 1.244e-01, 8.828e-02, 1.131e-01, 1.311e-02), r);\n\tr = MulAdd(s3_3, M4(-8.743e-02, -4.343e-03, 7.079e-02, 1.165e-01, 3.384e-02, -1.121e-01, -2.762e-02, 1.460e-01, 4.518e-02, -5.515e-02, -4.282e-02, -3.432e-02, 6.203e-02, -1.352e-02, 8.449e-02, -2.627e-02), r);\n\tr = MulAdd(s3_4, M4(2.033e-02, -8.235e-02, -3.525e-02, 5.705e-02, 1.744e-01, -4.119e-02, 3.571e-02, -4.678e-01, 5.413e-02, 5.668e-02, -1.704e-01, 7.155e-02, 4.698e-02, -1.107e-01, 7.151e-02, -7.922e-02), r);\n\tr = MulAdd(s3_5, M4(2.104e-01, 5.732e-02, 1.803e-01, 1.305e-01, -1.986e-02, -1.181e-01, -2.979e-01, 7.342e-02, 7.892e-02, 5.552e-02, 1.002e-01, 3.011e-02, 8.980e-02, 6.477e-02, -1.311e-01, 1.142e-01), r);\n\tr = MulAdd(s3_6, M4(1.590e-02, -1.074e-01, -9.888e-03, -9.625e-04, 2.324e-02, -3.032e-02, -1.638e-02, -8.205e-02, -3.143e-02, 5.804e-02, -6.501e-02, 5.997e-03, -2.892e-02, -1.674e-02, 1.130e-01, -3.797e-02), r);\n\tr = MulAdd(s3_7, M4(4.608e-02, -4.051e-02, -1.537e-01, 1.102e-01, 7.405e-02, -5.225e-02, -2.455e-02, 1.665e-01, -9.942e-02, -1.276e-02, -1.324e-02, -4.027e-02, -1.495e-01, -4.079e-02, -1.258e-02, 2.045e-02), r);\n\tr = MulAdd(s3_8, M4(-2.022e-03, -2.816e-02, -9.246e-02, 9.098e-02, -1.344e-01, -6.834e-02, -5.595e-02, -1.213e-01, -7.136e-02, -3.156e-02, -7.149e-02, -3.323e-02, -9.120e-02, 5.753e-03, 2.105e-02, -3.760e-02), r);\n\tr = MulAdd(s4_0, M4(2.183e-03, -1.813e-02, 5.619e-02, -1.930e-02, -3.846e-02, 1.212e-02, 1.508e-02, -4.844e-02, -3.569e-02, -3.011e-02, -1.244e-01, -6.167e-03, -1.967e-01, -5.375e-01, -2.783e-01, 1.626e-01), r);\n\tr = MulAdd(s4_1, M4(-2.039e-01, 3.192e-02, 7.417e-02, -3.648e-02, 3.189e-03, 1.163e-01, -6.010e-02, 3.590e-02, -4.391e-02, 2.428e-02, -4.231e-02, -4.152e-02, 1.568e-01, -5.492e-01, -7.005e-03, 5.425e-02), r);\n\tr = MulAdd(s4_2, M4(-1.202e-01, 4.948e-02, 1.097e-01, -7.178e-02, 1.647e-01, 5.601e-02, 6.415e-02, 3.912e-02, 6.567e-02, 1.682e-02, -3.581e-02, 5.655e-02, -1.028e-01, 3.299e-01, -1.259e-01, -6.016e-02), r);\n\tr = MulAdd(s4_3, M4(-1.557e-01, 2.920e-02, -1.330e-01, -1.201e-01, -1.904e-01, 3.443e-02, 3.807e-02, 1.420e-03, -3.260e-02, 5.182e-02, 3.727e-02, 2.890e-02, 3.998e-01, 5.939e-02, -2.319e-01, -5.014e-01), r);\n\tr = MulAdd(s4_4, M4(-6.019e-02, -4.538e-02, -7.342e-02, -2.403e-02, -8.856e-02, -2.028e-01, 1.239e-01, 3.872e-02, -1.875e-01, -6.518e-02, 3.180e-02, 1.602e-01, 2.449e-01, 1.173e-01, -1.286e-01, -1.252e-01), r);\n\tr = MulAdd(s4_5, M4(-1.410e-01, 1.971e-02, 1.741e-01, -1.175e-02, -1.192e-01, 1.440e-01, 1.631e-01, -3.816e-02, 1.021e-01, 1.529e-02, -8.363e-02, 8.811e-02, 3.363e-01, 2.851e-01, 3.174e-01, 1.586e-01), r);\n\tr = MulAdd(s4_6, M4(-8.199e-02, 1.145e-01, -8.508e-02, 1.497e-01, -1.427e-01, -1.310e-01, -2.610e-02, -9.997e-02, -3.202e-02, 1.776e-02, -2.032e-02, -2.544e-02, -2.676e-01, -7.637e-01, -1.128e-01, -4.935e-01), r);\n\tr = MulAdd(s4_7, M4(4.811e-03, 1.367e-03, 4.257e-02, 2.274e-02, -9.530e-02, -2.415e-02, -1.019e-01, 1.026e-02, 4.476e-02, -6.365e-02, 4.689e-02, -1.648e-01, -3.233e-01, -3.906e-02, -1.925e-01, -1.158e-01), r);\n\tr = MulAdd(s4_8, M4(3.481e-02, -1.392e-01, 2.833e-02, -2.713e-02, -3.550e-02, -7.110e-03, -1.792e-01, 1.430e-01, -3.660e-02, -2.613e-02, 1.949e-02, -1.605e-02, 6.411e-02, -2.967e-02, -1.464e-01, -3.527e-01), r);\n\tr = MulAdd(s5_0, M4(9.120e-03, -2.916e-02, -3.723e-02, 5.875e-02, -3.905e-03, 1.901e-02, 4.643e-02, 3.110e-02, -1.356e-01, -6.962e-03, 5.408e-02, 1.339e-01, -1.158e-02, 3.588e-02, -6.353e-02, -6.984e-03), r);\n\tr = MulAdd(s5_1, M4(-8.116e-02, -4.357e-02, -4.506e-02, 5.045e-02, -5.930e-02, 2.987e-02, -1.818e-01, 1.494e-02, -4.484e-03, 1.597e-01, -1.902e-01, 9.383e-03, -1.226e-01, 1.295e-02, 2.515e-02, 1.143e-02), r);\n\tr = MulAdd(s5_2, M4(6.183e-02, 9.416e-02, -8.370e-03, 2.306e-02, 1.287e-02, 2.179e-02, 1.322e-02, 2.942e-03, 1.033e-01, 2.096e-01, -1.261e-02, 1.235e-01, -1.473e-02, 3.457e-02, -9.516e-02, 3.791e-02), r);\n\tr = MulAdd(s5_3, M4(5.326e-02, -5.508e-02, -3.068e-02, 2.956e-02, 1.403e-01, -6.957e-03, 2.410e-02, -4.953e-02, -6.187e-02, 2.430e-01, -5.465e-02, -1.818e-01, 1.388e-02, -2.809e-02, -5.922e-02, 7.644e-04), r);\n\tr = MulAdd(s5_4, M4(-1.857e-02, -8.718e-02, 1.568e-01, 1.803e-01, 6.858e-02, -2.801e-02, -7.750e-02, 3.642e-02, 4.941e-02, -3.754e-02, -2.961e-01, -2.356e-02, -9.099e-02, -4.424e-02, 6.180e-02, 3.793e-02), r);\n\tr = MulAdd(s5_5, M4(1.441e-02, 6.786e-03, 1.331e-01, -2.061e-02, 1.087e-01, 2.706e-02, -1.322e-01, -4.488e-02, -1.955e-01, 6.401e-02, -4.254e-02, 7.051e-02, 5.702e-02, -1.098e-01, 2.223e-02, -2.229e-02), r);\n\tr = MulAdd(s5_6, M4(-2.432e-02, -6.500e-02, -2.856e-02, -3.645e-02, -1.735e-01, 1.872e-02, 8.135e-02, 9.167e-02, 4.470e-02, -2.786e-02, -1.099e-02, -1.680e-01, 2.792e-02, 2.272e-04, 5.839e-02, 9.217e-02), r);\n\tr = MulAdd(s5_7, M4(1.112e-01, -4.509e-02, 1.634e-01, -2.861e-01, 3.643e-02, 1.554e-02, -6.258e-02, -1.283e-02, 2.612e-02, 1.743e-01, 7.423e-02, -1.495e-01, -1.106e-01, 4.478e-02, 5.762e-02, 4.473e-02), r);\n\tr = MulAdd(s5_8, M4(7.160e-02, -4.476e-02, 1.460e-01, -1.224e-01, -4.553e-02, 1.511e-01, 6.369e-02, 2.777e-02, 1.314e-01, -2.126e-01, -1.414e-01, 1.500e-02, 2.510e-02, 9.726e-03, -6.648e-02, -3.623e-02), r);\n\tr = MulAdd(s6_0, M4(3.627e-02, 6.073e-02, -3.193e-02, 6.293e-02, -7.165e-02, -1.066e-02, -4.735e-02, -2.393e-02, 1.094e-02, 9.433e-03, -4.092e-02, -4.544e-02, -3.613e-04, 1.851e-02, 9.064e-02, 8.582e-02), r);\n\tr = MulAdd(s6_1, M4(8.239e-02, 5.018e-02, -9.757e-03, -1.659e-02, 8.712e-02, 8.036e-02, 9.214e-02, 9.874e-02, 1.340e-01, 6.547e-02, -6.969e-02, -4.847e-02, -2.288e-02, 1.972e-02, -2.393e-01, -5.440e-02), r);\n\tr = MulAdd(s6_2, M4(7.312e-02, 3.785e-02, 3.346e-02, 4.212e-02, -5.342e-02, 2.322e-02, -1.462e-03, 1.626e-02, 3.446e-02, 1.382e-01, -7.093e-02, -2.692e-02, -2.091e-01, 8.998e-02, 7.997e-02, -3.156e-02), r);\n\tr = MulAdd(s6_3, M4(2.614e-04, 3.019e-02, 8.045e-02, -1.697e-02, 1.278e-01, -3.694e-02, 2.327e-02, -9.615e-03, 1.075e-01, -6.754e-03, 1.283e-01, 9.763e-02, -1.815e-01, -9.186e-02, 4.242e-02, -7.595e-02), r);\n\tr = MulAdd(s6_4, M4(1.812e-01, 4.732e-02, 1.652e-02, -1.520e-02, -1.962e-01, 5.995e-02, 5.367e-02, -4.655e-02, -1.860e-01, -6.588e-02, -9.304e-02, -6.501e-02, 5.029e-01, 5.293e-02, -3.266e-02, 1.421e-01), r);\n\tr = MulAdd(s6_5, M4(-1.821e-02, -2.075e-01, 3.785e-02, 8.904e-02, 1.940e-02, -9.087e-02, -9.922e-02, -1.461e-02, -9.858e-03, 9.537e-02, 3.711e-02, -6.326e-03, 6.543e-02, -2.522e-02, -4.784e-01, -1.630e-01), r);\n\tr = MulAdd(s6_6, M4(-1.560e-01, -3.541e-02, -5.997e-02, 7.702e-02, 2.226e-02, -2.751e-02, -6.800e-02, -1.644e-01, 3.878e-02, -1.347e-01, -4.226e-02, -3.344e-03, 2.842e-01, -3.345e-02, -1.678e-01, 1.387e-02), r);\n\tr = MulAdd(s6_7, M4(-7.609e-02, -1.081e-01, -8.324e-03, 9.140e-02, -3.538e-02, 1.694e-02, 5.020e-02, -1.722e-02, 4.702e-03, -8.951e-02, -5.850e-02, 8.111e-04, 3.122e-01, -1.631e-01, -1.316e-01, -4.874e-01), r);\n\tr = MulAdd(s6_8, M4(-4.049e-02, -7.387e-02, -7.741e-02, 8.224e-02, 1.106e-01, -5.439e-02, 1.329e-02, -4.252e-02, -1.675e-01, 8.479e-02, 2.600e-02, -4.876e-02, 1.208e-01, 3.030e-01, 3.656e-01, -2.404e-01), r);\n\tr = MulAdd(s7_0, M4(-5.614e-04, -2.112e-02, 5.199e-03, -1.329e-03, 3.697e-02, -9.503e-02, -1.489e-01, -1.401e-02, -2.104e-01, 8.389e-02, -1.425e-01, 1.198e-01, -4.003e-02, -2.232e-03, -9.903e-03, 3.664e-02), r);\n\tr = MulAdd(s7_1, M4(1.116e-01, -4.805e-02, -9.508e-02, -8.863e-02, -8.594e-02, -4.690e-02, 9.794e-02, -3.391e-02, -1.790e-01, 1.526e-01, -7.496e-02, 2.324e-01, -7.781e-02, -7.806e-02, -6.675e-03, -1.827e-02), r);\n\tr = MulAdd(s7_2, M4(5.768e-02, 4.320e-02, -6.567e-02, -4.387e-02, -6.329e-02, -1.164e-01, -2.220e-02, -3.429e-02, -5.967e-01, 7.330e-02, -3.555e-01, 8.054e-02, 1.392e-01, -1.012e-02, 3.216e-02, 1.496e-02), r);\n\tr = MulAdd(s7_3, M4(-1.115e-01, 1.508e-02, -1.303e-01, 1.906e-02, -1.976e-03, 1.900e-01, -1.030e-02, -5.090e-03, -1.083e-01, -7.993e-03, -6.934e-03, -4.917e-02, -3.553e-02, 1.348e-02, -5.114e-02, 2.150e-02), r);\n\tr = MulAdd(s7_4, M4(-3.374e-02, 3.009e-02, 5.857e-02, -9.649e-02, 7.674e-02, 1.091e-01, 2.042e-02, -4.355e-02, -1.533e-01, 1.921e-01, 3.850e-01, -4.044e-02, 5.562e-02, -5.540e-02, 7.332e-02, 3.248e-02), r);\n\tr = MulAdd(s7_5, M4(1.772e-02, -7.301e-02, 3.140e-02, 6.169e-02, 1.574e-01, -1.557e-02, -6.124e-02, 3.520e-02, 2.846e-01, 7.785e-02, 2.583e-01, -1.309e-01, 1.899e-01, -1.479e-02, -1.239e-01, -7.160e-03), r);\n\tr = MulAdd(s7_6, M4(-3.006e-02, -2.029e-02, 5.972e-02, 3.386e-03, -7.393e-02, 5.966e-02, -4.498e-02, -6.022e-02, 8.330e-02, 2.939e-02, 3.378e-03, 1.490e-01, -9.315e-02, 4.097e-02, 5.681e-03, 6.256e-02), r);\n\tr = MulAdd(s7_7, M4(3.114e-02, 5.778e-02, -4.831e-02, 1.290e-01, 7.470e-02, -9.074e-02, -3.859e-02, 9.126e-02, 2.751e-02, 7.029e-02, 3.303e-02, 5.825e-02, -5.205e-02, 2.948e-02, 5.493e-03, -5.036e-02), r);\n\tr = MulAdd(s7_8, M4(1.617e-01, -9.764e-02, 3.887e-02, 6.610e-02, -3.920e-02, -2.124e-01, -7.008e-02, 1.160e-01, -2.669e-01, 3.881e-02, 8.382e-02, 9.165e-02, -1.217e-01, 9.085e-02, 5.695e-03, -8.119e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.516e-02, 8.959e-02, -1.787e-02, -1.065e-03 };\n\tr = MulAdd(s0_0, M4(-7.724e-02, 1.840e-01, 5.966e-02, 5.070e-02, 2.850e-02, 2.703e-02, 2.311e-04, 4.008e-02, -1.213e-02, -4.575e-02, -1.344e-01, 1.487e-02, 1.969e-01, -6.987e-02, -1.742e-02, -1.697e-01), r);\n\tr = MulAdd(s0_1, M4(-1.275e-02, -4.802e-02, -8.417e-02, 4.384e-02, 2.220e-02, -9.401e-02, -1.768e-01, -2.247e-02, -1.508e-01, 9.067e-02, 1.209e-01, -6.212e-02, 1.372e-02, 2.142e-02, -1.100e-02, -4.698e-04), r);\n\tr = MulAdd(s0_2, M4(7.217e-02, -4.635e-02, -4.113e-02, -1.422e-01, 6.937e-02, -1.280e-01, -5.054e-05, 1.096e-02, -1.155e-01, 9.489e-03, 6.707e-02, -1.829e-02, 3.346e-01, -7.680e-02, -3.614e-02, -2.940e-02), r);\n\tr = MulAdd(s0_3, M4(-1.549e-02, 4.748e-02, -2.051e-02, 5.490e-02, 3.730e-03, 2.569e-02, 5.174e-02, 4.933e-02, -5.114e-03, 1.192e-01, -1.115e-01, -4.806e-03, -1.512e-01, -2.198e-01, -1.167e-01, -1.390e-01), r);\n\tr = MulAdd(s0_4, M4(-1.188e-01, 3.509e-02, 3.543e-02, 1.111e-01, -7.166e-02, -1.343e-01, 1.096e-02, 1.033e-01, -2.424e-01, -7.907e-03, -5.037e-02, 1.417e-01, 1.377e-01, -2.075e-01, -9.802e-02, 3.139e-02), r);\n\tr = MulAdd(s0_5, M4(-3.900e-02, -4.654e-03, 2.197e-02, 1.976e-01, -4.585e-02, -3.598e-02, 1.276e-02, -3.306e-02, -3.152e-02, 4.281e-02, 1.201e-01, 3.895e-02, 1.745e-01, -1.216e-01, 1.352e-01, -5.017e-02), r);\n\tr = MulAdd(s0_6, M4(1.756e-02, 1.117e-01, 9.898e-02, 1.508e-01, -6.694e-03, -1.332e-04, 1.074e-01, 5.135e-02, 3.021e-02, -1.141e-02, -2.068e-01, -3.470e-02, -1.515e-01, 3.214e-02, 6.859e-02, 1.052e-01), r);\n\tr = MulAdd(s0_7, M4(2.112e-01, 1.255e-01, -1.653e-01, -1.735e-01, -1.008e-01, 4.133e-02, 2.729e-02, -9.144e-02, 2.082e-01, 6.797e-02, 2.031e-01, -5.398e-02, -1.601e-02, 3.365e-01, -7.537e-02, -7.077e-02), r);\n\tr = MulAdd(s0_8, M4(1.310e-01, -1.838e-01, -1.824e-01, 2.686e-02, -5.196e-03, 2.406e-02, -7.136e-02, -1.845e-03, 2.307e-01, 4.479e-02, 2.829e-01, 1.392e-01, 2.334e-01, 8.407e-02, 4.630e-02, -8.520e-02), r);\n\tr = MulAdd(s1_0, M4(2.114e-03, 2.668e-02, -1.427e-02, -2.694e-02, -3.965e-04, 2.847e-02, 8.394e-02, -2.785e-01, 4.981e-02, -2.619e-02, -9.234e-02, 1.929e-01, 1.035e-01, 1.592e-02, -2.168e-02, -3.591e-02), r);\n\tr = MulAdd(s1_1, M4(5.445e-02, -2.741e-03, -1.524e-02, 2.872e-02, 1.501e-02, 1.259e-01, 2.840e-02, -1.047e-01, -1.001e-01, 3.405e-02, 4.572e-02, -8.381e-02, 7.945e-02, -2.578e-02, -7.845e-02, 2.507e-02), r);\n\tr = MulAdd(s1_2, M4(-4.223e-02, 2.079e-02, 7.160e-03, -3.529e-02, -2.844e-02, 5.381e-04, -1.173e-01, -5.351e-02, -3.105e-02, 2.772e-02, -1.366e-02, 9.494e-02, 2.181e-01, -7.016e-02, 1.038e-01, 7.938e-02), r);\n\tr = MulAdd(s1_3, M4(3.777e-02, 5.161e-03, 7.237e-02, 6.253e-02, 1.684e-01, -1.439e-02, 1.439e-01, 8.895e-02, -8.568e-02, 2.804e-02, -1.905e-02, -3.772e-02, -1.072e-01, -1.312e-02, 5.895e-02, -1.760e-02), r);\n\tr = MulAdd(s1_4, M4(1.762e-01, 2.947e-02, 1.324e-01, 3.135e-02, -3.291e-03, 5.106e-02, 2.093e-01, -1.266e-01, -1.403e-01, -9.251e-02, -1.132e-01, 1.206e-01, -1.451e-02, 4.177e-02, -4.161e-02, -3.751e-02), r);\n\tr = MulAdd(s1_5, M4(3.326e-02, 6.515e-02, -1.019e-01, 1.452e-01, 1.364e-01, 3.613e-02, -4.264e-02, -1.150e-01, 3.261e-02, 2.848e-02, 1.705e-01, -5.300e-02, -4.921e-03, -8.104e-02, -9.616e-02, 5.653e-02), r);\n\tr = MulAdd(s1_6, M4(-8.075e-02, 3.694e-02, -3.470e-02, 3.817e-02, -7.741e-02, -6.873e-02, 6.621e-02, 1.264e-01, 1.353e-01, 3.871e-02, -7.518e-02, -1.563e-03, -4.559e-02, 9.546e-02, 2.271e-02, -2.953e-02), r);\n\tr = MulAdd(s1_7, M4(-1.537e-01, -4.538e-02, 3.473e-02, 6.479e-02, -1.853e-01, 9.301e-02, 1.812e-01, 7.560e-02, 4.490e-02, 1.386e-01, 6.909e-02, -2.373e-03, -8.195e-02, 1.602e-01, -5.891e-02, -8.507e-02), r);\n\tr = MulAdd(s1_8, M4(-1.283e-01, -8.259e-02, 1.211e-01, 1.746e-02, -9.038e-02, 1.928e-01, 3.724e-02, 4.097e-02, 1.269e-01, -4.324e-02, 2.607e-01, 8.578e-02, 1.097e-01, -3.740e-02, 1.986e-02, 2.089e-02), r);\n\tr = MulAdd(s2_0, M4(-4.258e-02, 8.224e-02, 1.048e-02, 7.118e-02, -9.890e-02, 5.473e-02, -3.945e-02, 3.890e-02, -5.820e-02, 1.354e-01, 9.434e-02, -2.227e-02, 1.141e-01, 3.242e-03, 1.918e-01, -1.271e-01), r);\n\tr = MulAdd(s2_1, M4(3.310e-02, -2.224e-02, 2.981e-02, -1.571e-01, 6.848e-02, -3.456e-02, 9.113e-02, 4.380e-02, -6.264e-02, 2.110e-01, -6.695e-02, 4.847e-02, 6.284e-02, 1.602e-01, -8.717e-02, 1.223e-01), r);\n\tr = MulAdd(s2_2, M4(7.283e-02, 7.600e-02, -6.312e-03, 1.792e-02, -4.016e-02, 6.400e-03, -3.479e-02, -8.229e-02, 6.997e-02, 1.148e-01, 1.087e-01, 1.213e-01, 1.358e-01, -1.168e-01, -4.992e-02, 1.194e-01), r);\n\tr = MulAdd(s2_3, M4(-8.611e-02, -6.279e-02, 3.449e-03, -9.984e-02, -3.702e-02, -1.691e-02, 1.295e-01, -5.580e-03, -5.515e-02, 1.853e-01, -1.760e-02, -6.246e-02, -2.026e-01, -1.262e-03, 8.512e-02, 5.164e-02), r);\n\tr = MulAdd(s2_4, M4(-8.568e-02, -7.055e-02, 8.443e-02, -1.094e-01, 3.930e-02, -1.755e-01, 2.495e-01, -1.392e-01, 4.257e-03, 2.378e-01, -1.398e-01, -3.154e-03, -2.801e-01, -1.587e-01, 9.718e-02, -7.764e-02), r);\n\tr = MulAdd(s2_5, M4(-6.386e-02, -2.549e-02, -7.504e-02, 7.184e-02, 4.190e-02, 2.954e-02, -1.622e-01, 9.567e-02, 5.567e-02, 8.607e-02, -4.043e-02, 1.531e-02, -1.740e-01, -5.285e-02, -8.496e-02, 1.134e-02), r);\n\tr = MulAdd(s2_6, M4(-1.170e-02, 1.031e-01, 3.717e-02, -7.724e-02, 9.260e-02, 2.144e-02, 1.584e-01, 7.160e-02, 6.875e-02, -6.063e-03, -2.960e-03, -8.502e-02, 8.992e-02, 2.183e-03, 4.504e-02, -5.336e-03), r);\n\tr = MulAdd(s2_7, M4(2.265e-01, 2.020e-02, 1.221e-02, -6.520e-02, 1.199e-01, -3.575e-02, 8.107e-02, -2.064e-02, -4.061e-02, 2.520e-02, 1.486e-01, -1.737e-02, -6.462e-02, -1.468e-02, 3.628e-02, 3.528e-02), r);\n\tr = MulAdd(s2_8, M4(1.223e-01, 6.030e-02, 5.806e-02, 1.269e-03, 6.043e-02, -3.870e-02, -7.984e-02, -1.056e-02, -2.352e-02, -5.047e-02, -4.811e-02, 1.098e-01, 1.659e-01, -8.937e-02, -3.395e-02, -2.555e-02), r);\n\tr = MulAdd(s3_0, M4(-1.003e-01, 9.404e-02, -1.036e-01, 1.189e-01, -6.630e-02, 4.198e-02, -1.206e-01, -8.588e-02, 6.487e-02, -4.289e-02, -5.520e-02, 4.863e-02, 7.616e-02, -4.563e-02, 6.938e-02, -8.349e-02), r);\n\tr = MulAdd(s3_1, M4(3.090e-02, -5.794e-02, 1.720e-02, -1.693e-01, 1.778e-02, -6.134e-02, -6.254e-02, 8.614e-03, 1.217e-01, -7.393e-02, -9.394e-02, -8.675e-02, 3.951e-02, 6.524e-02, -5.517e-02, -2.358e-03), r);\n\tr = MulAdd(s3_2, M4(1.489e-01, -3.451e-02, -2.032e-01, -8.297e-02, 1.246e-01, -1.291e-01, -7.800e-02, -1.371e-01, -2.997e-03, -2.446e-02, 1.304e-02, 6.479e-02, -1.774e-02, -2.228e-03, 1.622e-02, 3.105e-02), r);\n\tr = MulAdd(s3_3, M4(1.988e-02, -1.177e-01, 5.934e-02, 1.274e-01, -1.171e-01, -2.678e-03, 1.435e-01, -3.637e-02, -1.024e-01, 7.228e-02, 5.230e-02, -2.965e-02, -2.015e-02, 6.415e-02, 3.267e-02, -7.663e-02), r);\n\tr = MulAdd(s3_4, M4(-1.052e-01, 4.454e-02, 8.595e-02, 2.379e-01, -1.163e-01, -1.496e-01, 1.817e-01, -2.559e-01, 5.475e-03, 3.444e-02, -1.957e-01, -9.725e-02, 7.565e-02, -1.111e-01, 3.272e-02, -7.525e-02), r);\n\tr = MulAdd(s3_5, M4(-7.455e-03, -8.427e-02, -4.218e-02, 4.790e-02, 9.401e-02, -1.121e-01, -1.447e-01, 3.156e-02, 7.532e-02, -1.715e-02, 1.460e-02, 1.046e-01, -1.586e-01, -5.409e-02, -5.411e-02, -3.003e-02), r);\n\tr = MulAdd(s3_6, M4(-1.436e-01, 1.030e-01, 5.531e-02, 1.360e-01, 9.290e-02, 1.553e-01, 1.950e-01, -3.723e-02, 3.381e-02, -6.820e-02, -1.381e-02, -1.080e-01, -5.238e-02, -1.522e-02, 4.833e-03, -1.492e-02), r);\n\tr = MulAdd(s3_7, M4(5.130e-02, -5.561e-02, -2.519e-02, 1.129e-01, -3.739e-03, 6.413e-02, -2.109e-02, -1.821e-01, -1.472e-02, -9.493e-02, 2.997e-02, -3.930e-02, 2.223e-02, -9.339e-02, 5.872e-02, 9.591e-02), r);\n\tr = MulAdd(s3_8, M4(5.037e-02, 3.653e-03, 2.274e-02, 1.995e-02, -5.041e-03, 2.161e-02, 9.535e-03, 1.757e-02, 4.400e-02, -8.377e-03, 1.082e-02, 3.105e-02, -8.612e-02, 4.627e-02, -8.301e-03, -2.559e-02), r);\n\tr = MulAdd(s4_0, M4(5.987e-02, -1.482e-02, 3.351e-02, -6.310e-02, -4.229e-03, -6.841e-02, -6.166e-03, 1.118e-02, 4.439e-02, 4.798e-02, 1.299e-03, 5.123e-02, -3.027e-01, 1.494e-01, 4.118e-01, 3.597e-01), r);\n\tr = MulAdd(s4_1, M4(6.472e-02, -3.500e-02, -3.729e-02, -1.382e-01, -1.232e-01, 2.478e-02, 1.782e-02, 7.169e-02, 1.073e-01, -9.537e-03, 6.582e-03, -3.679e-02, -3.886e-01, -1.123e-01, -3.075e-01, 1.037e-01), r);\n\tr = MulAdd(s4_2, M4(-6.304e-02, 8.001e-03, 1.695e-01, 4.003e-02, -1.218e-02, 5.538e-02, 8.938e-02, 7.200e-02, 1.047e-01, 4.492e-02, -1.121e-01, 6.089e-02, -9.417e-03, -1.168e-01, -1.622e-02, 1.297e-02), r);\n\tr = MulAdd(s4_3, M4(7.746e-03, -5.015e-04, 9.506e-02, 4.396e-02, 1.487e-02, -1.701e-01, -3.412e-02, -9.371e-02, 1.160e-01, 1.152e-01, 3.521e-03, 1.941e-02, 1.238e-01, 9.036e-02, -3.244e-01, 1.192e-02), r);\n\tr = MulAdd(s4_4, M4(1.213e-01, 5.326e-02, -2.432e-01, 1.279e-01, 1.329e-01, -9.406e-02, 3.120e-02, 3.744e-03, -1.487e-01, 1.595e-02, 8.325e-02, 1.348e-02, -2.696e-01, 7.585e-02, -1.615e-01, 1.387e-01), r);\n\tr = MulAdd(s4_5, M4(-6.099e-02, -4.308e-03, 2.213e-01, -8.152e-02, -9.230e-02, -3.547e-02, -7.342e-04, -1.075e-01, -9.105e-02, -2.387e-02, -7.690e-02, 1.122e-01, 4.953e-03, -5.518e-02, -5.026e-02, 1.549e-01), r);\n\tr = MulAdd(s4_6, M4(1.285e-01, 1.177e-02, 1.186e-01, -6.946e-02, 8.408e-02, 2.238e-02, 6.817e-02, 1.605e-01, 3.962e-02, -3.125e-02, -4.336e-02, -4.538e-03, -3.323e-01, 2.379e-02, 7.357e-02, 1.818e-01), r);\n\tr = MulAdd(s4_7, M4(3.967e-02, 1.028e-01, -2.228e-03, -1.031e-02, 1.905e-01, 6.901e-02, 2.475e-02, -1.720e-01, -6.732e-03, 8.988e-02, 2.008e-02, -5.934e-03, -1.280e-01, -2.170e-01, -3.173e-01, -9.140e-02), r);\n\tr = MulAdd(s4_8, M4(3.521e-01, 5.174e-03, 4.608e-02, 1.210e-01, 1.417e-01, -8.578e-02, 8.202e-02, 5.828e-02, -1.003e-01, -5.269e-03, -1.538e-02, -8.339e-02, 7.307e-02, 3.105e-02, -2.396e-01, -3.173e-01), r);\n\tr = MulAdd(s5_0, M4(-3.747e-02, 7.280e-03, -9.053e-02, 1.938e-01, 1.071e-01, -7.245e-02, -5.811e-02, -3.072e-02, 1.554e-01, -8.037e-02, 9.611e-02, 4.908e-02, 8.992e-02, -2.597e-02, -1.329e-02, -9.601e-02), r);\n\tr = MulAdd(s5_1, M4(5.216e-02, 4.516e-04, -1.011e-01, -7.019e-02, -1.147e-02, 4.769e-02, -3.852e-02, -9.921e-02, 2.953e-01, -1.791e-01, 2.752e-02, -1.665e-02, -7.379e-02, 2.763e-02, 1.716e-02, -4.656e-02), r);\n\tr = MulAdd(s5_2, M4(-1.576e-02, -1.048e-01, 5.974e-02, 4.993e-02, -6.986e-03, 1.785e-02, 1.141e-02, 3.672e-02, 7.632e-02, -7.359e-02, -2.939e-01, -1.764e-01, -3.114e-03, -8.975e-02, -1.164e-02, 4.968e-02), r);\n\tr = MulAdd(s5_3, M4(-2.444e-02, -1.835e-02, -2.875e-02, 1.924e-01, -3.134e-02, -3.077e-02, 7.153e-02, 1.045e-01, 2.602e-01, -8.030e-02, -2.347e-01, -2.926e-02, -8.184e-02, 4.675e-02, -1.647e-02, -5.338e-02), r);\n\tr = MulAdd(s5_4, M4(1.272e-01, 6.238e-02, -1.660e-01, 1.850e-01, 3.613e-02, 4.229e-02, -9.294e-02, 4.839e-02, -1.690e-01, -7.589e-02, -6.957e-02, 1.222e-02, 4.209e-02, 7.453e-02, 7.989e-02, 4.162e-02), r);\n\tr = MulAdd(s5_5, M4(-4.380e-02, -1.028e-01, 3.865e-03, 1.097e-01, -3.281e-02, 8.102e-02, 1.514e-02, 8.578e-02, -2.046e-01, 1.479e-01, 2.743e-01, 1.518e-01, 1.183e-03, 6.509e-02, -2.623e-02, -3.482e-02), r);\n\tr = MulAdd(s5_6, M4(6.535e-03, 6.839e-02, 2.374e-02, 5.277e-02, -1.126e-02, -2.428e-02, 6.067e-02, 2.483e-02, -8.028e-02, 7.573e-03, 8.035e-02, 1.940e-01, -2.065e-03, -3.858e-02, -1.287e-02, -4.179e-03), r);\n\tr = MulAdd(s5_7, M4(-4.731e-02, 5.665e-02, -1.218e-01, -9.370e-02, -5.400e-02, 1.743e-02, -2.003e-01, -9.808e-02, 4.797e-02, 8.253e-02, 7.379e-02, 1.515e-01, -4.230e-02, -1.396e-01, 3.179e-02, -1.131e-03), r);\n\tr = MulAdd(s5_8, M4(2.792e-02, -3.493e-02, 8.325e-02, 9.952e-03, -3.813e-02, 3.785e-04, -8.763e-04, 7.903e-02, 1.624e-01, 1.832e-01, 1.483e-01, 3.208e-02, -6.978e-02, 5.305e-02, -3.591e-02, -9.302e-02), r);\n\tr = MulAdd(s6_0, M4(5.284e-02, -2.286e-02, 7.535e-02, 4.906e-02, 1.200e-02, -1.248e-01, -1.162e-02, -1.586e-02, -3.189e-02, 6.001e-03, 1.181e-03, -3.973e-03, 8.256e-02, 8.548e-02, 1.576e-01, -1.515e-01), r);\n\tr = MulAdd(s6_1, M4(1.284e-01, -1.911e-02, 8.744e-02, 9.790e-02, 2.740e-02, 1.531e-02, -2.574e-02, -3.117e-02, -2.859e-02, 2.684e-02, 2.666e-02, 6.812e-03, -4.250e-02, -1.488e-01, -1.181e-01, -1.295e-01), r);\n\tr = MulAdd(s6_2, M4(3.720e-02, 3.221e-02, 3.435e-02, 6.706e-02, -5.516e-03, 4.287e-02, 1.236e-02, 1.223e-02, 7.437e-03, 2.018e-02, 4.017e-02, 8.277e-02, 1.690e-01, -1.792e-02, -7.429e-03, -2.912e-01), r);\n\tr = MulAdd(s6_3, M4(-5.532e-02, 6.336e-02, 6.260e-02, 9.205e-03, 1.285e-02, 6.509e-02, 3.856e-02, -2.021e-02, 6.904e-02, -6.493e-03, 1.655e-02, -4.652e-02, 4.887e-03, 6.818e-02, -2.779e-02, -9.416e-02), r);\n\tr = MulAdd(s6_4, M4(-1.059e-01, -1.827e-02, -9.839e-02, 1.612e-01, -4.882e-02, 6.131e-02, 1.091e-01, -9.698e-02, 2.015e-02, -2.242e-02, 4.939e-02, -3.704e-02, 2.272e-01, 7.772e-02, 7.472e-02, -1.928e-01), r);\n\tr = MulAdd(s6_5, M4(1.585e-01, -3.437e-02, -9.124e-02, -7.755e-02, 2.315e-02, 4.228e-02, 2.005e-02, 3.590e-02, -2.346e-02, 5.805e-02, 1.054e-02, 9.887e-02, -1.602e-01, 1.184e-01, 1.029e-01, -7.007e-02), r);\n\tr = MulAdd(s6_6, M4(2.031e-02, 3.183e-02, -2.129e-02, -9.839e-03, -2.987e-02, -2.387e-02, -6.374e-02, 4.744e-02, -3.038e-02, 1.535e-01, -6.029e-02, -2.271e-02, 1.354e-01, 1.756e-01, 1.662e-01, 1.384e-01), r);\n\tr = MulAdd(s6_7, M4(-1.276e-01, 2.346e-02, -1.002e-01, 3.707e-02, 1.235e-01, 3.925e-02, -1.002e-02, 3.066e-02, -1.582e-02, 7.662e-02, -7.702e-02, -1.235e-02, -1.770e-01, -6.730e-02, 1.516e-01, 1.566e-01), r);\n\tr = MulAdd(s6_8, M4(3.088e-02, -2.108e-02, 8.897e-02, 7.054e-02, 1.846e-01, -2.521e-02, -9.622e-03, 7.985e-02, 7.300e-02, -1.049e-01, 6.219e-02, 1.374e-02, -1.286e-01, 4.387e-01, -7.610e-02, -6.778e-01), r);\n\tr = MulAdd(s7_0, M4(-7.163e-02, -8.077e-03, -1.022e-01, 1.473e-02, -5.050e-02, 5.343e-02, 9.415e-02, 1.001e-01, 1.051e-01, -1.029e-01, -1.508e-01, -3.213e-01, -6.002e-02, -1.543e-02, -6.470e-02, 4.712e-02), r);\n\tr = MulAdd(s7_1, M4(1.532e-02, 3.967e-02, -1.977e-01, 2.849e-02, 4.239e-02, 6.796e-02, 5.239e-02, 1.189e-01, 3.101e-01, -4.135e-02, 1.138e-01, 4.669e-02, 1.385e-02, 9.605e-03, 7.201e-02, 7.464e-03), r);\n\tr = MulAdd(s7_2, M4(3.819e-02, 4.565e-02, 3.408e-02, 2.257e-02, 1.308e-01, 2.826e-02, 6.109e-02, -4.583e-02, 5.506e-02, -3.221e-01, 2.697e-03, 4.039e-01, 1.259e-01, 3.230e-02, 1.611e-02, -4.330e-02), r);\n\tr = MulAdd(s7_3, M4(7.958e-02, -1.910e-02, 8.226e-02, 8.214e-02, -8.223e-02, 6.258e-02, -6.834e-02, -7.819e-02, 1.021e-02, 2.266e-02, 7.075e-02, -1.537e-01, 2.165e-02, 5.662e-02, -8.941e-02, 4.015e-02), r);\n\tr = MulAdd(s7_4, M4(-2.136e-02, -6.519e-02, 1.436e-01, 1.326e-02, -2.437e-01, 6.408e-02, 1.316e-02, -8.968e-02, 1.674e-01, -6.148e-02, -7.849e-02, 8.925e-02, -2.668e-02, 1.509e-01, -4.980e-02, 5.554e-02), r);\n\tr = MulAdd(s7_5, M4(-1.331e-01, 7.111e-03, 3.069e-03, 3.506e-02, -1.004e-01, -1.103e-01, -9.701e-02, 8.936e-02, -1.729e-01, -1.700e-01, -4.142e-02, 1.028e-01, -6.603e-02, 9.418e-02, 1.503e-02, -1.254e-02), r);\n\tr = MulAdd(s7_6, M4(-5.121e-02, 2.249e-02, 1.791e-02, -2.844e-02, -4.702e-02, 3.654e-02, -8.635e-03, 1.394e-01, -9.286e-02, -8.097e-02, -1.817e-02, -1.863e-01, 9.467e-02, 4.542e-03, 2.574e-03, -5.944e-02), r);\n\tr = MulAdd(s7_7, M4(1.354e-01, -3.398e-02, 8.637e-02, -4.478e-02, -1.265e-01, 9.978e-02, 3.152e-02, -6.899e-02, 1.511e-02, -1.379e-02, -1.369e-01, 4.768e-02, 2.655e-02, -1.006e-01, -8.618e-03, 8.087e-03), r);\n\tr = MulAdd(s7_8, M4(-3.514e-02, 2.768e-02, 6.856e-02, -2.232e-02, 1.918e-01, -1.164e-01, 2.628e-02, 1.171e-01, 2.024e-01, -1.593e-01, 4.787e-02, 1.028e-01, -4.236e-02, -6.423e-02, 2.739e-03, 1.502e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 8.304e-03, -2.532e-04, -1.555e-02, -1.432e-02 };\n\tr = MulAdd(s0_0, M4(-1.187e-02, 6.264e-02, -2.532e-02, 7.597e-02, 1.335e-02, -7.549e-02, 2.973e-02, -5.040e-02, -6.046e-02, -3.364e-02, 2.287e-02, -3.193e-02, 4.584e-02, 3.559e-02, 9.996e-02, -1.737e-01), r);\n\tr = MulAdd(s0_1, M4(1.244e-02, 1.086e-01, 5.084e-02, -9.225e-02, 3.146e-02, 5.506e-02, -2.089e-02, 4.840e-02, 2.297e-02, -3.274e-05, -5.653e-02, 3.252e-01, -6.403e-02, 1.261e-02, 1.052e-01, 6.297e-02), r);\n\tr = MulAdd(s0_2, M4(1.698e-02, 8.388e-02, -3.422e-02, -1.496e-02, 1.081e-01, -6.162e-02, -5.071e-02, -1.067e-01, -8.022e-02, -3.184e-02, -2.127e-02, 9.637e-03, 3.873e-02, -1.251e-01, 1.333e-01, -7.872e-02), r);\n\tr = MulAdd(s0_3, M4(-7.789e-02, -6.662e-02, 1.294e-01, -9.989e-02, -7.352e-02, -4.578e-02, -7.462e-02, 2.127e-03, -8.138e-02, 6.226e-02, -2.799e-02, -3.625e-02, 2.212e-01, -1.652e-01, 1.428e-01, 2.478e-01), r);\n\tr = MulAdd(s0_4, M4(5.669e-03, -1.183e-01, 4.026e-02, -2.221e-01, 1.133e-02, 4.156e-02, 1.597e-01, 7.346e-02, -2.419e-03, -2.949e-02, 3.021e-01, 2.356e-01, -6.494e-03, -1.026e-01, -8.227e-02, 1.740e-02), r);\n\tr = MulAdd(s0_5, M4(-2.167e-01, 1.039e-01, -5.977e-02, -9.074e-03, -1.117e-01, 4.771e-02, 1.119e-01, 1.650e-01, -1.064e-01, -3.939e-02, 2.190e-02, 1.414e-01, 2.592e-02, 7.613e-02, -2.695e-02, -5.662e-02), r);\n\tr = MulAdd(s0_6, M4(6.803e-02, -1.202e-01, -3.315e-03, 1.625e-01, -1.301e-01, -1.277e-02, -1.577e-01, 5.537e-02, 1.052e-01, 2.325e-01, 2.426e-02, -1.439e-01, 7.457e-02, -8.714e-02, 2.378e-01, 1.292e-02), r);\n\tr = MulAdd(s0_7, M4(-1.714e-01, -3.724e-02, 1.219e-01, 1.407e-01, -1.354e-01, 1.838e-02, 2.183e-02, 7.493e-02, 7.883e-02, -5.048e-02, 4.846e-02, -1.183e-01, -2.238e-01, 9.183e-02, -1.035e-01, 4.537e-02), r);\n\tr = MulAdd(s0_8, M4(-9.619e-02, 7.385e-02, -3.486e-02, 1.845e-02, -7.486e-02, 6.599e-02, -5.713e-02, 6.247e-02, -4.777e-02, -1.458e-02, 1.130e-02, -1.824e-02, 8.031e-02, -1.837e-02, -1.499e-01, 7.544e-02), r);\n\tr = MulAdd(s1_0, M4(3.624e-02, 1.283e-01, -5.294e-02, -5.316e-04, -1.742e-01, 2.873e-02, -1.543e-01, -7.869e-02, -1.277e-01, 1.693e-02, 1.002e-02, 4.104e-02, -1.437e-02, -4.580e-02, -1.460e-01, 3.390e-02), r);\n\tr = MulAdd(s1_1, M4(6.177e-02, 4.738e-02, -1.577e-02, 3.133e-03, -2.669e-02, 2.046e-01, -6.449e-02, -4.281e-02, -2.132e-02, 3.419e-02, -2.680e-02, 1.263e-01, -1.479e-03, 2.514e-02, 2.780e-02, 1.013e-01), r);\n\tr = MulAdd(s1_2, M4(1.366e-02, 1.883e-02, 4.764e-02, 1.359e-01, -1.593e-02, -4.673e-02, -8.732e-02, -9.512e-02, -1.047e-01, -4.604e-02, -1.665e-02, 1.337e-01, -1.242e-02, 9.301e-02, -2.295e-02, 3.417e-02), r);\n\tr = MulAdd(s1_3, M4(-1.517e-02, -3.551e-02, 4.704e-02, 7.443e-03, -1.477e-01, 3.772e-02, 1.282e-01, 1.508e-01, -7.728e-02, 1.692e-02, 4.276e-02, 7.591e-02, 1.067e-02, -4.369e-02, -5.641e-02, 9.330e-02), r);\n\tr = MulAdd(s1_4, M4(4.017e-03, -2.550e-02, 5.103e-02, -2.922e-02, 6.819e-02, -1.601e-01, 3.182e-01, 1.085e-01, -8.375e-02, -1.219e-01, 1.285e-01, 9.498e-02, -5.342e-02, -8.636e-02, -7.220e-02, 2.510e-03), r);\n\tr = MulAdd(s1_5, M4(-7.125e-02, 4.059e-02, -9.271e-02, 1.242e-02, -6.271e-02, 4.583e-02, 2.297e-01, 1.034e-01, -9.418e-02, -1.697e-01, -3.932e-02, -4.783e-02, -7.415e-02, 2.491e-02, -7.569e-03, 2.422e-02), r);\n\tr = MulAdd(s1_6, M4(3.736e-02, -8.572e-02, 3.994e-02, 4.105e-02, -3.034e-02, 1.062e-01, -4.819e-02, 8.814e-02, 8.113e-02, 2.036e-01, 4.791e-02, -1.842e-01, 6.856e-02, -3.210e-02, 7.227e-03, -8.558e-02), r);\n\tr = MulAdd(s1_7, M4(-1.797e-01, -2.560e-01, 1.961e-02, -5.501e-02, -1.478e-01, -1.228e-01, 2.369e-02, 1.566e-02, 6.271e-02, -3.219e-02, 3.045e-02, -7.925e-02, -2.949e-03, 1.436e-01, 1.822e-03, -3.287e-02), r);\n\tr = MulAdd(s1_8, M4(-7.270e-02, -6.270e-02, -7.584e-02, -6.560e-02, -5.748e-02, 4.359e-02, 5.897e-02, -5.726e-02, 1.690e-02, -7.352e-02, -1.782e-02, -8.810e-02, -3.535e-02, -2.069e-02, -4.821e-02, 2.636e-02), r);\n\tr = MulAdd(s2_0, M4(-2.083e-02, -2.477e-02, 7.071e-02, -4.785e-02, -3.290e-02, -9.460e-02, 7.853e-03, -1.785e-01, -1.315e-01, -1.173e-01, 9.080e-03, -3.729e-02, 6.511e-02, 4.687e-02, 7.942e-02, 9.895e-02), r);\n\tr = MulAdd(s2_1, M4(-5.864e-02, -7.510e-02, -4.419e-02, -5.842e-02, 2.984e-01, 4.923e-02, 4.713e-02, -7.945e-02, -1.234e-01, -3.238e-02, -1.697e-02, 6.394e-02, -1.147e-01, 1.948e-01, 7.497e-02, 1.001e-01), r);\n\tr = MulAdd(s2_2, M4(3.748e-02, -1.411e-01, 2.326e-02, 7.799e-02, 2.809e-03, 6.622e-03, 2.647e-02, -1.618e-01, 6.017e-02, -7.081e-02, -1.233e-02, 1.621e-01, 1.593e-02, 1.733e-01, 2.370e-01, -8.014e-02), r);\n\tr = MulAdd(s2_3, M4(-6.741e-02, -3.408e-02, -1.608e-01, 3.781e-02, -1.464e-01, -1.036e-01, -1.046e-01, 1.298e-01, -5.866e-03, 5.742e-02, 2.522e-02, 2.219e-02, -1.086e-01, -2.096e-02, -2.311e-02, -4.706e-02), r);\n\tr = MulAdd(s2_4, M4(4.554e-02, -2.465e-02, -7.264e-02, 6.134e-02, 1.440e-02, 3.166e-02, 2.649e-01, 1.871e-01, -3.898e-02, 4.163e-02, -5.572e-02, -1.161e-01, -2.489e-01, 6.822e-02, 4.626e-03, 1.167e-01), r);\n\tr = MulAdd(s2_5, M4(-9.042e-03, -7.050e-02, 4.928e-03, 7.088e-02, 6.400e-02, 2.114e-01, -3.590e-03, -5.971e-02, 6.975e-02, 4.664e-02, 8.553e-02, -5.178e-02, 7.938e-02, -1.139e-01, -1.323e-01, -3.062e-02), r);\n\tr = MulAdd(s2_6, M4(-6.992e-02, 9.754e-03, 2.215e-01, -3.585e-03, -1.091e-01, -1.363e-01, 7.880e-02, -2.762e-02, -9.997e-02, 2.966e-03, 3.448e-02, -1.366e-01, -1.227e-01, 1.809e-02, 1.784e-01, 1.268e-02), r);\n\tr = MulAdd(s2_7, M4(-5.271e-02, -4.306e-02, 5.939e-04, 4.301e-02, -9.889e-02, 8.578e-04, -3.276e-02, -4.598e-02, -6.198e-02, -1.495e-01, 6.664e-02, -9.525e-02, 8.331e-03, 2.550e-03, -3.578e-02, 1.648e-02), r);\n\tr = MulAdd(s2_8, M4(-2.549e-02, 3.285e-02, -3.637e-02, 4.108e-02, -6.827e-03, 4.565e-02, 2.817e-02, -3.361e-03, -2.407e-02, 1.267e-01, 5.727e-03, 1.873e-02, -7.541e-03, 6.248e-02, 8.835e-02, -7.862e-02), r);\n\tr = MulAdd(s3_0, M4(5.343e-02, 2.287e-02, -5.620e-02, -2.606e-02, -2.511e-01, -7.720e-02, 9.825e-02, -2.432e-01, -5.303e-02, 2.462e-02, -1.625e-01, 3.261e-02, -3.086e-02, -6.193e-02, -1.012e-02, 1.096e-01), r);\n\tr = MulAdd(s3_1, M4(-7.270e-02, 1.129e-01, 5.661e-02, 3.421e-02, 2.881e-01, -1.025e-01, 1.285e-02, -9.748e-02, -1.924e-02, 1.131e-01, 1.275e-01, 7.935e-02, 1.309e-01, -2.821e-02, 7.106e-02, 4.430e-02), r);\n\tr = MulAdd(s3_2, M4(1.970e-02, -1.399e-01, 1.240e-01, 1.530e-01, -7.961e-02, -2.087e-02, -8.064e-02, -2.028e-01, -2.397e-02, 3.444e-02, -3.574e-02, 2.877e-02, 3.491e-02, 1.069e-01, 4.066e-02, -1.734e-02), r);\n\tr = MulAdd(s3_3, M4(-7.098e-02, -3.545e-02, -2.872e-01, 4.210e-02, -2.199e-01, -1.064e-01, 1.770e-02, 1.409e-01, 1.472e-01, 6.215e-02, 3.474e-02, 8.492e-03, -1.342e-01, -5.386e-02, -7.196e-02, -1.235e-01), r);\n\tr = MulAdd(s3_4, M4(2.290e-01, 2.270e-01, -3.990e-02, 1.824e-01, 1.359e-01, -6.382e-03, 2.662e-01, 1.919e-01, 1.891e-01, -7.892e-02, 1.116e-03, -2.814e-02, -2.490e-03, -8.516e-02, 6.357e-04, -1.859e-02), r);\n\tr = MulAdd(s3_5, M4(7.154e-03, -7.141e-02, -5.607e-02, 8.124e-02, 1.304e-01, 6.471e-02, 5.742e-02, -7.536e-02, 8.766e-02, 8.102e-02, 4.359e-02, -7.945e-02, 8.818e-02, 5.471e-02, -9.640e-02, -2.967e-02), r);\n\tr = MulAdd(s3_6, M4(3.370e-02, 1.582e-02, 2.462e-01, 8.418e-03, -1.115e-01, -1.536e-01, 2.464e-01, 4.604e-02, -1.071e-01, 1.075e-01, 4.826e-02, -6.138e-02, -1.089e-01, 1.311e-01, -1.740e-02, 1.328e-01), r);\n\tr = MulAdd(s3_7, M4(4.537e-03, 8.950e-02, -2.725e-02, 6.522e-02, -1.668e-01, -9.552e-03, -4.403e-02, 2.931e-02, -2.110e-02, -4.998e-02, 7.868e-02, -6.865e-02, -2.296e-04, -1.233e-01, 1.752e-02, 9.049e-02), r);\n\tr = MulAdd(s3_8, M4(7.438e-02, 1.333e-01, -5.143e-02, 7.645e-02, -1.764e-03, -1.389e-03, 9.569e-02, 8.844e-02, 6.421e-02, 8.276e-02, -3.275e-03, 5.360e-02, -2.844e-02, 2.104e-02, 1.068e-02, 4.859e-02), r);\n\tr = MulAdd(s4_0, M4(-4.425e-02, -5.100e-03, -7.722e-03, -7.258e-02, -9.065e-02, -8.428e-02, -1.687e-01, -2.043e-01, -1.566e-02, 3.501e-02, -1.156e-01, 3.190e-02, -5.824e-01, 2.117e-01, -5.630e-01, 3.386e-01), r);\n\tr = MulAdd(s4_1, M4(-2.990e-02, 2.483e-02, -3.320e-02, -3.348e-02, 3.499e-02, 8.377e-02, 1.786e-02, -1.637e-01, -5.283e-02, 4.014e-02, 6.757e-03, 1.080e-01, -1.626e-01, 2.261e-01, -7.782e-02, 8.233e-02), r);\n\tr = MulAdd(s4_2, M4(-7.580e-02, 1.262e-01, 4.438e-03, 2.820e-02, -6.883e-02, 2.340e-01, -1.141e-01, -4.504e-02, -1.191e-01, -1.533e-02, 5.940e-02, 7.691e-02, 1.531e-01, 1.699e-02, -4.712e-02, 5.288e-02), r);\n\tr = MulAdd(s4_3, M4(2.044e-02, 5.780e-02, 3.308e-02, 2.426e-01, 3.624e-02, -8.043e-02, -1.236e-01, -6.800e-04, 2.831e-02, -4.539e-02, 2.218e-01, -1.209e-01, -3.183e-01, -5.320e-02, -1.178e-01, -4.580e-01), r);\n\tr = MulAdd(s4_4, M4(-6.078e-02, -1.130e-02, 7.346e-02, -2.086e-01, 4.780e-03, 2.893e-01, -3.576e-02, 7.024e-02, -2.882e-02, 3.997e-02, -7.593e-02, -1.394e-01, 1.736e-01, 3.615e-01, -4.872e-02, -2.340e-01), r);\n\tr = MulAdd(s4_5, M4(-1.184e-01, 1.305e-02, 1.259e-01, -2.960e-02, -8.708e-02, 2.380e-01, 9.214e-02, -4.176e-02, 2.124e-02, 2.160e-02, -1.528e-01, -8.060e-02, -1.276e-01, 3.907e-02, -1.044e-01, -2.006e-01), r);\n\tr = MulAdd(s4_6, M4(-8.076e-02, 7.261e-02, 1.449e-02, -3.624e-02, -1.490e-01, -2.071e-01, -4.868e-02, -9.661e-02, -1.495e-04, -7.154e-02, -5.241e-02, -1.307e-02, -4.913e-02, -1.356e-01, -2.297e-01, 2.350e-01), r);\n\tr = MulAdd(s4_7, M4(-7.200e-02, 2.000e-01, 7.164e-02, -4.626e-02, -2.369e-02, 1.921e-01, 1.534e-02, -8.373e-02, -4.089e-02, 1.648e-02, 7.972e-02, -4.851e-02, 1.396e-02, -7.280e-02, -2.005e-02, 2.399e-01), r);\n\tr = MulAdd(s4_8, M4(7.851e-02, 1.162e-01, -1.663e-01, -8.951e-02, 9.440e-02, 3.697e-02, -3.425e-02, -3.302e-02, 4.576e-02, -1.236e-02, 3.493e-02, -6.735e-02, -1.672e-02, 3.621e-03, 4.750e-02, 1.247e-01), r);\n\tr = MulAdd(s5_0, M4(2.875e-02, -1.459e-02, -7.892e-02, -3.161e-02, -6.149e-03, -3.703e-02, 5.330e-02, -9.264e-03, -1.884e-01, 1.468e-01, -1.175e-01, -3.640e-02, 1.763e-02, -8.086e-03, -9.649e-02, -2.832e-03), r);\n\tr = MulAdd(s5_1, M4(5.752e-02, -8.568e-02, 2.230e-02, -2.336e-02, -2.539e-02, -1.665e-01, 9.407e-02, 2.244e-02, -1.082e-01, 4.609e-01, -1.135e-01, -2.743e-01, 2.130e-02, -9.405e-03, -2.384e-02, 1.934e-02), r);\n\tr = MulAdd(s5_2, M4(9.920e-02, -4.490e-02, -7.451e-03, 4.300e-02, -5.757e-02, 4.409e-02, 4.955e-02, 2.940e-02, 5.362e-02, 1.196e-01, 7.804e-02, -3.020e-01, 4.768e-02, -3.637e-02, -3.597e-02, 7.883e-02), r);\n\tr = MulAdd(s5_3, M4(1.687e-02, 6.373e-02, -1.770e-01, 6.395e-02, 5.443e-02, -7.987e-03, -7.952e-02, 1.693e-02, 4.316e-02, 4.812e-02, 1.539e-01, 1.209e-01, 6.093e-02, 7.547e-02, -8.094e-02, -7.412e-02), r);\n\tr = MulAdd(s5_4, M4(2.046e-01, -4.792e-02, -3.553e-02, -5.000e-02, 1.285e-02, 1.536e-01, 2.418e-02, 3.139e-02, -1.963e-02, 1.322e-01, -2.059e-01, 1.032e-01, 3.493e-02, -1.613e-01, 8.348e-03, -9.059e-02), r);\n\tr = MulAdd(s5_5, M4(4.828e-03, -5.654e-02, 2.644e-02, -1.046e-01, -1.364e-01, -1.183e-02, 4.386e-02, -1.404e-02, 4.281e-02, 2.549e-02, -1.399e-01, 3.556e-02, -1.223e-02, 4.599e-02, 7.197e-02, 9.005e-03), r);\n\tr = MulAdd(s5_6, M4(-3.068e-02, 1.637e-02, -3.605e-02, -2.284e-02, -8.174e-02, -8.312e-03, -1.846e-02, 6.306e-02, 1.487e-01, 2.973e-02, 4.767e-02, -1.547e-01, -3.608e-02, 5.432e-02, -1.291e-01, -6.812e-02), r);\n\tr = MulAdd(s5_7, M4(8.072e-02, -8.949e-02, 1.318e-01, 3.961e-03, 5.239e-02, 7.092e-02, 5.027e-02, 8.323e-02, -8.531e-02, -9.251e-02, -1.205e-01, 1.944e-02, 3.560e-02, 1.352e-02, -7.741e-03, 9.714e-02), r);\n\tr = MulAdd(s5_8, M4(-5.957e-03, -4.712e-02, -8.004e-02, 1.380e-03, 1.257e-02, -1.039e-01, 8.539e-02, 2.713e-02, 1.772e-01, -2.501e-01, -4.281e-02, -5.421e-02, -4.765e-02, -1.701e-02, -4.210e-03, -5.724e-02), r);\n\tr = MulAdd(s6_0, M4(3.248e-01, -8.173e-02, -1.495e-02, 2.037e-01, 1.379e-04, -5.002e-02, 3.511e-02, 3.888e-02, -7.696e-02, 3.776e-02, -7.068e-02, 3.647e-02, -1.763e-01, -5.525e-02, -1.653e-03, -3.789e-02), r);\n\tr = MulAdd(s6_1, M4(1.581e-01, 1.166e-01, -1.430e-01, 3.662e-01, 8.923e-03, -6.097e-02, -1.081e-01, 4.020e-03, 5.912e-02, -1.077e-01, 2.633e-02, 3.322e-02, -9.291e-03, -1.720e-01, -7.245e-02, 4.105e-02), r);\n\tr = MulAdd(s6_2, M4(-2.491e-02, 7.043e-02, -2.281e-02, 9.317e-02, 5.158e-04, 2.068e-02, 3.190e-02, -2.739e-02, -2.196e-02, 6.502e-02, -3.907e-02, -7.474e-02, 2.471e-02, -1.875e-01, 2.229e-01, -3.467e-01), r);\n\tr = MulAdd(s6_3, M4(1.787e-01, -1.382e-01, 1.516e-01, -7.465e-02, 1.683e-01, -1.877e-02, 1.229e-01, 5.404e-04, -4.836e-02, -6.131e-02, 1.219e-01, -6.233e-02, 8.620e-02, -5.384e-02, -1.505e-01, 1.688e-01), r);\n\tr = MulAdd(s6_4, M4(-3.181e-02, 1.413e-01, 1.572e-01, -1.831e-01, -1.209e-01, -7.400e-02, -9.066e-02, -3.121e-02, 5.917e-02, -2.963e-02, -2.592e-02, 3.676e-02, 8.648e-02, 1.320e-01, -2.344e-01, -2.189e-01), r);\n\tr = MulAdd(s6_5, M4(-5.787e-02, -3.066e-02, 1.830e-01, 4.347e-02, -8.943e-02, 7.870e-03, -2.022e-03, 2.099e-01, -1.212e-02, 6.373e-03, -1.052e-01, 6.339e-02, 3.479e-01, 1.135e-01, -3.867e-02, 1.417e-01), r);\n\tr = MulAdd(s6_6, M4(-6.096e-02, -8.908e-02, 9.118e-02, 2.249e-02, 1.004e-01, 9.778e-02, 1.445e-01, 4.343e-02, 8.523e-02, -1.219e-02, 9.168e-02, 3.133e-02, -8.427e-02, -8.851e-02, -7.757e-02, -1.208e-01), r);\n\tr = MulAdd(s6_7, M4(3.253e-02, -5.491e-05, 8.328e-03, 5.271e-02, 1.037e-02, -4.053e-02, 1.853e-02, 2.653e-06, 7.625e-02, -8.625e-02, 4.421e-02, 2.075e-03, 2.808e-02, -3.310e-02, -3.273e-01, -1.623e-01), r);\n\tr = MulAdd(s6_8, M4(1.744e-01, 8.677e-02, -1.544e-01, 6.717e-02, -3.480e-02, 3.707e-02, 2.683e-02, -6.244e-03, -6.392e-02, 7.593e-02, 2.281e-02, -5.920e-02, -2.599e-01, -2.319e-01, 1.206e-01, -1.286e-02), r);\n\tr = MulAdd(s7_0, M4(-7.140e-02, -8.283e-03, -3.386e-03, 6.842e-03, 5.496e-02, 1.178e-01, -8.400e-02, 6.142e-02, -9.335e-02, 2.164e-02, -5.461e-02, -1.402e-02, 7.100e-03, 2.545e-02, -7.884e-02, -3.492e-03), r);\n\tr = MulAdd(s7_1, M4(1.466e-01, -1.069e-01, -7.955e-02, 6.205e-02, -5.911e-03, -2.119e-02, -1.017e-01, 5.296e-02, 1.210e-01, 1.498e-01, 1.012e-01, 4.255e-01, 9.488e-02, 5.354e-02, 2.343e-02, 8.102e-02), r);\n\tr = MulAdd(s7_2, M4(4.775e-02, 9.955e-02, -5.355e-02, -2.145e-02, -7.153e-02, -6.200e-02, 9.512e-02, 6.380e-02, -6.797e-02, 8.805e-02, -5.872e-03, 1.400e-01, -2.788e-02, -1.014e-01, 1.960e-02, 1.287e-01), r);\n\tr = MulAdd(s7_3, M4(-9.796e-02, 2.194e-02, 2.270e-02, -7.145e-02, 1.491e-01, 3.151e-02, 6.959e-02, -5.975e-03, 5.773e-02, -2.723e-02, 5.596e-02, -1.518e-01, -5.953e-03, 1.305e-01, -1.814e-02, -1.050e-02), r);\n\tr = MulAdd(s7_4, M4(-1.528e-01, -1.884e-01, 9.503e-02, -1.620e-02, -4.942e-02, 1.145e-01, -3.125e-02, -4.450e-02, 8.714e-02, 8.496e-02, 1.369e-02, -1.238e-01, 8.809e-02, 1.352e-01, 6.701e-02, 9.438e-02), r);\n\tr = MulAdd(s7_5, M4(-1.206e-02, 5.146e-02, 1.828e-02, 9.465e-02, -8.744e-02, 5.812e-02, 7.547e-02, -1.000e-01, -1.203e-01, 2.384e-01, 2.556e-01, -1.591e-01, -2.986e-02, 5.438e-02, -2.465e-03, -9.818e-02), r);\n\tr = MulAdd(s7_6, M4(4.579e-02, 2.161e-02, -6.215e-02, -1.440e-01, -6.273e-02, 6.860e-02, 9.184e-02, -6.930e-02, -1.286e-01, -6.701e-02, -1.015e-01, 2.166e-02, -1.538e-03, -2.507e-02, -1.409e-03, -1.052e-02), r);\n\tr = MulAdd(s7_7, M4(-7.298e-02, 4.161e-02, 7.292e-02, -3.918e-02, -2.996e-02, 9.260e-02, -5.889e-02, -3.589e-02, 1.480e-01, -9.639e-02, 7.466e-02, -1.959e-02, -3.891e-02, 1.057e-01, 2.922e-02, -1.112e-02), r);\n\tr = MulAdd(s7_8, M4(1.070e-02, 9.460e-02, -7.803e-02, 4.756e-02, 8.328e-02, 9.591e-03, -4.323e-02, 2.402e-02, -6.350e-02, 1.936e-01, -1.345e-01, -2.261e-03, -4.487e-02, -1.049e-01, 1.739e-02, -3.981e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.567e-02, -5.316e-03, 4.092e-02, 2.983e-02 };\n\tr = MulAdd(s0_0, M4(1.078e-01, 2.929e-02, -4.399e-02, 2.702e-02, 6.722e-02, -1.047e-02, -1.084e-01, 2.719e-02, -4.003e-03, 1.428e-01, -1.008e-02, 5.808e-02, 1.081e-01, 3.698e-02, -4.159e-03, -1.861e-01), r);\n\tr = MulAdd(s0_1, M4(8.120e-02, 2.297e-02, 4.784e-02, -8.514e-02, -5.841e-02, 1.494e-02, 3.262e-02, 1.257e-01, -1.968e-01, -7.450e-02, -2.756e-02, 6.421e-02, -5.311e-02, 1.711e-02, -1.783e-01, 3.959e-02), r);\n\tr = MulAdd(s0_2, M4(-1.281e-02, 1.102e-01, 3.957e-02, 6.161e-02, -8.052e-02, 6.213e-02, -8.612e-02, -6.793e-02, 6.211e-03, -2.778e-02, -1.110e-03, -5.723e-02, 2.321e-02, 2.555e-02, -3.891e-02, -1.486e-01), r);\n\tr = MulAdd(s0_3, M4(-1.464e-01, 7.861e-02, -1.260e-01, 5.190e-02, 8.147e-03, -6.885e-03, -8.846e-03, -3.854e-02, -1.392e-01, 2.317e-01, -3.088e-02, 1.164e-01, -1.851e-01, -1.803e-01, -1.080e-01, -1.995e-01), r);\n\tr = MulAdd(s0_4, M4(1.864e-02, 1.735e-01, -5.772e-02, -7.150e-02, -7.699e-02, 1.665e-01, 3.301e-02, 1.179e-01, 1.048e-03, -9.361e-02, -6.161e-02, 1.365e-01, -7.781e-02, -1.322e-01, 5.536e-02, -1.287e-01), r);\n\tr = MulAdd(s0_5, M4(-4.569e-02, -1.306e-01, 2.393e-02, 2.645e-02, 7.168e-04, -7.162e-02, -1.541e-01, -1.313e-01, 1.223e-01, -3.704e-02, -7.348e-02, 1.347e-03, 2.109e-01, 2.540e-02, 1.008e-01, 2.662e-02), r);\n\tr = MulAdd(s0_6, M4(-1.176e-01, 1.405e-02, -1.864e-01, -9.889e-02, -8.677e-03, 1.556e-02, 4.215e-02, 4.996e-03, -7.073e-02, -1.384e-01, 4.933e-02, -1.048e-01, -2.920e-01, 1.230e-04, -1.791e-02, -1.323e-01), r);\n\tr = MulAdd(s0_7, M4(-2.167e-02, -7.215e-03, -7.007e-02, -4.031e-02, 4.548e-03, 1.588e-02, -1.684e-02, 5.793e-02, 1.591e-01, -1.459e-01, -3.494e-02, -1.860e-01, -4.195e-02, 6.560e-03, -3.848e-02, -2.633e-01), r);\n\tr = MulAdd(s0_8, M4(-1.739e-01, -1.198e-02, 1.739e-02, -2.050e-02, -5.031e-02, -1.678e-02, 7.162e-02, -1.646e-01, 3.139e-01, 1.098e-02, 7.505e-02, -1.072e-01, -8.199e-02, 6.768e-02, -1.450e-01, -2.652e-02), r);\n\tr = MulAdd(s1_0, M4(7.592e-02, -5.963e-03, 6.044e-02, 1.364e-02, 1.071e-01, -9.543e-02, -7.565e-02, -1.106e-01, 2.125e-02, 5.735e-02, 6.093e-02, 1.055e-01, 1.116e-01, -7.962e-03, -3.009e-03, -6.391e-02), r);\n\tr = MulAdd(s1_1, M4(-7.453e-04, 7.908e-02, 4.528e-02, -6.497e-02, -2.141e-01, 2.905e-02, 8.608e-02, 1.562e-02, -1.183e-01, -3.749e-03, -2.178e-02, 4.636e-02, 6.602e-02, 4.420e-02, -2.969e-02, 9.028e-02), r);\n\tr = MulAdd(s1_2, M4(3.744e-02, -1.737e-02, 1.961e-02, 7.493e-02, 4.715e-02, 3.037e-02, 5.145e-03, 6.723e-02, -4.315e-02, -4.398e-02, 9.488e-02, -6.029e-02, 9.366e-02, 1.707e-03, -6.647e-02, -7.819e-02), r);\n\tr = MulAdd(s1_3, M4(-4.314e-02, -4.926e-02, -4.821e-02, -8.898e-02, -1.631e-01, -7.705e-02, 4.109e-02, 8.442e-02, -1.584e-02, 4.423e-02, -6.416e-02, 2.429e-02, 7.325e-03, 1.435e-02, 1.782e-02, 2.860e-02), r);\n\tr = MulAdd(s1_4, M4(5.343e-02, -4.696e-02, -3.947e-03, -1.846e-01, -3.936e-01, 2.581e-01, 3.814e-01, 2.552e-01, -1.361e-01, 6.894e-02, -6.958e-02, 7.073e-02, -1.028e-01, 1.209e-01, 1.421e-01, 3.052e-02), r);\n\tr = MulAdd(s1_5, M4(-8.137e-02, -4.554e-02, -2.349e-02, 7.019e-02, 2.163e-01, -5.918e-02, 9.712e-02, 2.483e-01, 2.473e-02, 1.502e-02, -6.365e-02, -1.746e-01, -4.358e-02, 4.468e-02, -1.093e-01, 2.473e-02), r);\n\tr = MulAdd(s1_6, M4(6.200e-02, -1.142e-01, 7.615e-02, -8.188e-03, 8.007e-02, -9.960e-02, 1.362e-01, -1.422e-02, -1.122e-01, -2.014e-02, -1.420e-01, -6.422e-02, 5.698e-02, 2.293e-02, 1.661e-02, 4.720e-02), r);\n\tr = MulAdd(s1_7, M4(-4.076e-02, -4.555e-02, 3.997e-02, -4.453e-02, -9.484e-02, -2.221e-04, 8.423e-02, 7.494e-02, 2.933e-02, -1.380e-01, -4.507e-02, -5.689e-02, -6.361e-02, 4.682e-02, 7.517e-02, 2.378e-02), r);\n\tr = MulAdd(s1_8, M4(5.169e-02, 3.204e-02, -7.214e-02, 2.993e-02, 4.542e-02, 2.339e-02, 1.878e-01, -7.268e-02, 1.460e-01, 1.770e-02, 4.084e-02, 6.963e-02, 2.724e-02, 1.184e-03, 8.351e-02, 1.108e-02), r);\n\tr = MulAdd(s2_0, M4(-1.266e-02, -4.814e-02, 1.091e-01, 4.787e-02, 2.054e-03, -1.421e-01, -2.946e-02, -1.552e-02, 2.241e-02, 1.130e-01, -1.465e-02, 3.170e-03, -2.013e-01, 1.541e-01, -4.007e-02, -5.746e-02), r);\n\tr = MulAdd(s2_1, M4(6.318e-02, 1.825e-01, 5.007e-02, 6.417e-02, -8.822e-02, -1.965e-01, -8.122e-02, 8.083e-02, 1.451e-01, 9.234e-02, 1.458e-02, 3.394e-03, 1.371e-01, -1.556e-01, 3.232e-03, -3.001e-01), r);\n\tr = MulAdd(s2_2, M4(-1.333e-01, 4.256e-02, 8.831e-03, 6.197e-02, 7.894e-03, -7.217e-02, 7.846e-02, -1.896e-02, -5.892e-02, 1.073e-01, 1.912e-03, -3.306e-02, 1.492e-01, 6.274e-02, -1.672e-01, -1.554e-01), r);\n\tr = MulAdd(s2_3, M4(-1.282e-02, 9.536e-02, 1.442e-03, 5.785e-02, -8.516e-02, 8.072e-03, -7.036e-02, -1.333e-01, -1.173e-01, 2.519e-02, 2.043e-01, 3.421e-03, -9.203e-02, 1.001e-01, -5.736e-02, 2.982e-01), r);\n\tr = MulAdd(s2_4, M4(1.993e-03, 1.229e-01, 5.297e-02, -1.077e-01, 1.427e-01, 8.361e-02, 2.030e-01, 5.532e-02, 1.776e-02, -5.811e-02, 6.569e-03, -1.229e-01, -8.695e-03, -6.819e-03, 1.661e-01, 2.228e-01), r);\n\tr = MulAdd(s2_5, M4(-4.533e-02, -1.245e-02, 3.212e-02, -5.504e-02, 8.230e-02, 5.109e-02, 1.173e-02, -9.066e-02, -1.094e-01, 7.413e-03, 8.526e-02, 3.235e-02, -4.342e-03, 3.551e-02, 1.901e-01, -5.356e-02), r);\n\tr = MulAdd(s2_6, M4(8.229e-02, 9.509e-04, -2.815e-02, -4.377e-02, 3.677e-02, -3.288e-02, 3.554e-02, -2.960e-02, 1.177e-01, -3.922e-02, 1.236e-01, 4.912e-02, -7.920e-02, 4.889e-03, 6.535e-02, 5.023e-03), r);\n\tr = MulAdd(s2_7, M4(9.450e-02, -4.877e-02, 2.180e-02, 5.390e-02, -7.268e-02, 5.576e-02, 7.790e-02, 7.471e-02, 1.869e-01, 4.203e-02, 3.673e-02, -2.178e-02, 3.943e-03, -7.662e-03, -2.875e-02, -7.668e-02), r);\n\tr = MulAdd(s2_8, M4(-8.520e-02, -7.359e-02, -1.834e-02, -3.821e-02, -9.685e-02, 3.117e-02, 8.558e-02, 6.373e-02, 2.420e-02, -5.133e-02, 1.106e-01, -2.596e-02, 2.014e-02, 5.579e-02, 1.153e-02, 1.782e-01), r);\n\tr = MulAdd(s3_0, M4(1.409e-01, -2.383e-02, 8.639e-02, -3.019e-02, 1.619e-02, -1.529e-01, -1.008e-01, -1.410e-02, -3.718e-03, 3.788e-03, -4.983e-02, -1.016e-02, 1.156e-02, 4.953e-05, 3.956e-02, -2.179e-02), r);\n\tr = MulAdd(s3_1, M4(-7.084e-02, 4.899e-02, 6.816e-03, -2.448e-01, -7.345e-02, -3.557e-01, 7.551e-02, -8.657e-03, 6.795e-02, 5.192e-02, -3.077e-02, 1.232e-01, 2.197e-02, -5.256e-02, 4.122e-03, 1.707e-02), r);\n\tr = MulAdd(s3_2, M4(-2.774e-01, 5.557e-02, 1.514e-01, 2.173e-02, 1.189e-01, 1.642e-02, 8.372e-02, -2.661e-01, 3.143e-02, 3.410e-02, 4.487e-02, -1.723e-02, 9.291e-02, -2.441e-02, -1.115e-01, -2.501e-02), r);\n\tr = MulAdd(s3_3, M4(-1.631e-01, 8.468e-02, 1.434e-01, 1.023e-01, -3.229e-02, -3.164e-02, -2.104e-01, -3.320e-02, -1.149e-01, -3.901e-02, -6.834e-02, -1.947e-02, 1.840e-02, 1.051e-01, -4.235e-02, 2.019e-02), r);\n\tr = MulAdd(s3_4, M4(-1.755e-01, 2.059e-01, 9.597e-02, -2.928e-02, 8.855e-02, 1.821e-02, 8.755e-02, 1.028e-01, -8.825e-02, -1.528e-01, -1.426e-01, 4.698e-02, -4.039e-02, 5.968e-02, 1.375e-01, 1.348e-02), r);\n\tr = MulAdd(s3_5, M4(-2.542e-01, 4.282e-02, -1.192e-03, 4.731e-02, 2.510e-02, 1.486e-01, -1.245e-02, -5.749e-02, -9.773e-02, 6.700e-02, -1.882e-01, -4.323e-02, 1.196e-01, -4.808e-02, -1.725e-02, -4.272e-02), r);\n\tr = MulAdd(s3_6, M4(4.213e-03, -7.704e-03, 3.259e-02, -2.062e-01, 1.587e-01, 1.062e-01, -1.548e-02, -3.156e-01, -1.016e-02, -3.972e-02, -4.383e-02, -2.585e-02, -5.732e-02, 1.351e-02, -2.787e-02, -9.469e-02), r);\n\tr = MulAdd(s3_7, M4(-6.842e-02, -5.412e-02, -1.469e-02, -8.877e-02, -4.274e-02, 7.221e-02, 2.691e-02, 7.001e-02, 1.141e-01, 1.915e-03, -4.521e-02, 4.300e-04, 4.757e-02, 8.053e-02, 8.162e-02, 3.804e-02), r);\n\tr = MulAdd(s3_8, M4(4.241e-02, -6.491e-03, -3.866e-02, 4.730e-02, 6.733e-02, 6.034e-02, 2.661e-02, 1.440e-01, -2.978e-03, 2.585e-02, -2.838e-02, 1.062e-02, -1.446e-02, 7.391e-02, 2.640e-02, -3.836e-02), r);\n\tr = MulAdd(s4_0, M4(5.677e-02, -2.280e-01, -2.451e-02, -2.647e-02, -1.017e-03, 3.461e-02, -3.574e-02, -3.984e-02, 6.191e-02, 4.968e-02, 4.937e-02, 2.930e-02, -1.373e-01, -1.053e-01, -1.538e-01, 9.222e-02), r);\n\tr = MulAdd(s4_1, M4(3.276e-02, 6.180e-02, 1.373e-01, 1.933e-01, 5.629e-02, 5.820e-02, 6.219e-02, -7.410e-02, -6.342e-02, 1.499e-01, -1.541e-02, -3.026e-02, 4.615e-01, 1.580e-01, 7.077e-02, -1.236e-01), r);\n\tr = MulAdd(s4_2, M4(9.957e-02, 1.757e-03, -2.521e-02, -1.223e-01, 2.074e-01, 1.008e-02, -5.914e-02, 2.410e-02, 2.634e-02, 1.131e-01, 8.216e-02, 3.450e-02, 7.552e-02, 1.194e-01, -1.231e-01, 1.073e-01), r);\n\tr = MulAdd(s4_3, M4(-1.172e-02, -4.300e-02, -3.565e-03, -1.941e-02, 3.217e-02, 7.148e-02, -8.495e-02, 5.670e-02, -2.033e-02, -1.364e-01, 3.429e-02, -2.695e-02, 5.680e-01, -8.805e-02, -1.195e-01, 5.252e-01), r);\n\tr = MulAdd(s4_4, M4(-2.671e-02, -3.016e-01, -3.329e-02, 6.906e-02, 9.063e-02, 8.925e-02, -1.415e-01, -1.619e-01, -9.870e-02, -2.667e-01, -2.157e-02, 5.647e-02, -2.261e-01, 2.456e-01, -6.064e-02, 6.518e-02), r);\n\tr = MulAdd(s4_5, M4(2.888e-02, -5.659e-02, 1.779e-01, 4.198e-02, 6.701e-02, 5.891e-02, -1.460e-01, 2.943e-01, 6.448e-02, -6.878e-02, -4.030e-02, -1.031e-01, 1.665e-01, 5.578e-02, 1.881e-02, 1.418e-01), r);\n\tr = MulAdd(s4_6, M4(-1.263e-01, -2.191e-01, 1.366e-01, 1.068e-01, -5.129e-02, -6.460e-02, 5.811e-02, -6.006e-02, -2.854e-02, 2.742e-02, 8.994e-03, -1.187e-02, -7.366e-01, -2.287e-01, -6.164e-01, 1.882e-02), r);\n\tr = MulAdd(s4_7, M4(2.390e-01, -8.987e-02, 8.313e-02, 2.841e-01, -1.874e-01, 1.459e-01, -2.012e-01, -4.406e-02, -1.596e-01, 4.841e-02, -1.880e-02, -6.834e-02, 2.578e-02, 1.440e-01, 2.849e-01, -1.272e-01), r);\n\tr = MulAdd(s4_8, M4(3.170e-02, 3.228e-02, 6.340e-02, 2.932e-02, -6.048e-02, 3.031e-02, -7.810e-02, -4.953e-02, -1.134e-01, 2.523e-02, 1.023e-01, 6.335e-02, -1.582e-01, 2.533e-03, -1.131e-01, -6.075e-03), r);\n\tr = MulAdd(s5_0, M4(4.625e-02, -3.412e-04, -1.077e-02, 9.450e-03, -1.525e-04, 2.312e-02, 2.327e-02, 1.667e-02, 3.442e-03, 1.683e-01, -3.592e-02, 8.428e-03, -1.301e-02, -1.088e-02, 1.010e-01, 9.448e-02), r);\n\tr = MulAdd(s5_1, M4(3.945e-02, 2.023e-01, 1.848e-02, 4.163e-02, 5.773e-02, -2.633e-02, 7.292e-02, 1.495e-02, 5.110e-02, -9.728e-03, 3.200e-02, 3.356e-02, -4.969e-02, 1.035e-01, 3.067e-02, -5.841e-03), r);\n\tr = MulAdd(s5_2, M4(-1.150e-01, 5.962e-02, 2.455e-03, -6.986e-02, 7.313e-02, -9.049e-02, 8.998e-02, -3.317e-02, -6.195e-02, 1.728e-01, -1.896e-02, 2.274e-02, 1.186e-02, 1.671e-02, -4.866e-02, -1.200e-03), r);\n\tr = MulAdd(s5_3, M4(8.141e-03, 6.878e-02, -2.976e-02, 2.621e-02, 1.784e-01, 1.248e-02, -6.853e-03, -1.927e-03, 2.433e-01, 7.125e-02, -5.810e-02, -2.757e-01, -9.888e-02, -7.193e-02, 7.867e-03, 2.181e-02), r);\n\tr = MulAdd(s5_4, M4(-2.204e-02, -1.130e-01, -7.535e-02, -2.516e-02, 1.713e-01, 5.264e-03, 4.772e-02, -5.924e-02, -2.486e-01, 1.055e-01, 1.328e-01, -2.502e-02, 5.369e-02, 6.078e-03, 1.386e-01, -6.224e-02), r);\n\tr = MulAdd(s5_5, M4(-3.905e-02, 5.261e-02, -2.165e-03, -1.201e-01, 1.096e-05, -9.632e-02, 9.782e-02, -8.054e-02, -1.451e-01, 5.762e-02, 1.816e-01, 3.270e-01, 1.616e-01, -2.044e-02, -4.551e-02, 4.272e-02), r);\n\tr = MulAdd(s5_6, M4(-8.485e-02, -1.450e-01, -3.045e-02, 1.074e-01, 2.179e-03, -3.846e-02, -1.863e-02, 1.871e-02, 5.108e-02, 6.767e-02, 1.797e-01, 1.684e-02, -6.264e-02, -1.048e-01, 7.191e-02, -6.097e-02), r);\n\tr = MulAdd(s5_7, M4(-2.142e-02, 4.408e-02, 2.998e-02, -1.032e-01, -1.759e-01, -7.314e-02, -1.102e-01, -1.872e-02, 2.373e-01, -1.447e-01, 2.624e-03, -4.420e-02, 1.146e-01, 2.988e-02, 4.577e-02, -3.427e-02), r);\n\tr = MulAdd(s5_8, M4(-6.060e-02, 1.362e-02, 2.039e-02, 1.276e-02, 1.533e-01, 7.360e-03, 4.864e-02, -1.255e-01, 1.827e-01, 1.825e-01, -6.931e-03, -4.778e-02, -6.961e-03, -9.526e-02, 7.587e-02, 3.179e-02), r);\n\tr = MulAdd(s6_0, M4(-1.902e-01, -5.660e-02, -4.673e-02, -3.461e-02, -8.106e-02, -1.420e-03, -5.476e-02, -3.773e-02, 5.253e-02, 1.304e-01, 3.423e-02, 5.212e-02, -1.079e-01, 3.761e-02, -1.416e-02, 1.585e-01), r);\n\tr = MulAdd(s6_1, M4(-6.599e-02, 2.471e-02, -1.303e-01, 4.336e-02, -1.889e-02, 1.351e-02, -1.452e-02, 1.405e-02, -9.896e-02, -5.456e-02, 9.939e-02, -5.145e-02, -3.063e-01, 2.081e-01, -3.441e-01, -1.881e-01), r);\n\tr = MulAdd(s6_2, M4(4.816e-02, 3.052e-02, -1.526e-03, 4.331e-02, 3.285e-02, -4.175e-03, 2.715e-02, 9.212e-03, 8.280e-02, -4.270e-02, 7.012e-02, -1.039e-01, 5.353e-02, 1.396e-01, 1.261e-01, 1.622e-02), r);\n\tr = MulAdd(s6_3, M4(2.246e-02, -2.545e-02, 9.849e-03, -2.770e-02, -1.433e-01, 5.388e-02, 3.819e-03, 7.418e-02, -9.538e-02, -3.039e-02, 2.717e-02, 3.077e-02, -9.002e-02, -4.116e-02, 1.307e-01, 2.951e-02), r);\n\tr = MulAdd(s6_4, M4(-4.712e-02, -1.267e-01, 1.696e-01, 2.844e-01, 1.727e-01, 8.386e-02, -4.416e-02, -6.215e-02, -7.953e-02, 3.334e-02, -1.312e-01, -3.992e-03, -4.352e-01, -3.749e-02, -1.048e-01, -1.854e-01), r);\n\tr = MulAdd(s6_5, M4(1.837e-01, 1.530e-01, 2.316e-03, 1.271e-03, -4.068e-02, 6.315e-02, 1.070e-01, -2.652e-02, 2.268e-03, 5.209e-02, -4.338e-02, -8.105e-02, -3.716e-01, 3.706e-01, -4.535e-01, 4.897e-02), r);\n\tr = MulAdd(s6_6, M4(-1.581e-01, 2.024e-02, 1.671e-02, 6.905e-02, 9.779e-02, 3.306e-03, -3.781e-02, 5.754e-02, 1.739e-02, 9.850e-02, -3.945e-02, -4.551e-02, 6.723e-02, -1.263e-01, 1.761e-01, -6.037e-03), r);\n\tr = MulAdd(s6_7, M4(7.310e-04, 4.816e-02, -1.714e-01, -7.055e-02, -3.067e-03, -6.569e-02, 1.492e-01, 8.049e-02, -6.071e-02, 3.919e-02, 8.535e-02, 1.471e-01, 1.040e-01, -6.098e-02, -1.973e-01, -6.420e-02), r);\n\tr = MulAdd(s6_8, M4(3.342e-02, 1.310e-01, -4.144e-02, 1.077e-01, 1.826e-01, -3.139e-02, -5.015e-02, -2.887e-02, 5.592e-03, -1.517e-02, -7.853e-02, 1.861e-02, 2.662e-03, 3.045e-01, -2.314e-01, 6.279e-01), r);\n\tr = MulAdd(s7_0, M4(5.693e-02, 8.945e-02, 2.642e-02, 1.688e-01, -1.557e-01, -5.788e-02, -5.250e-02, -8.901e-02, 2.862e-01, -7.066e-02, 1.859e-02, 2.941e-01, 5.849e-02, -6.006e-02, -1.287e-02, 3.286e-02), r);\n\tr = MulAdd(s7_1, M4(-4.778e-02, -5.997e-02, -9.390e-02, -6.606e-02, 6.563e-02, 3.327e-02, 9.178e-02, -2.724e-02, -3.661e-01, -2.215e-02, -1.827e-01, 1.863e-01, -4.644e-02, -1.734e-02, -6.994e-02, 3.454e-02), r);\n\tr = MulAdd(s7_2, M4(-4.597e-02, -9.081e-02, 5.254e-03, -8.460e-03, -5.847e-02, -2.472e-02, 6.248e-02, -6.373e-02, 2.489e-01, -5.080e-02, 1.111e-01, -3.054e-01, -1.587e-01, 1.984e-02, 7.628e-02, -2.618e-02), r);\n\tr = MulAdd(s7_3, M4(-8.152e-02, -9.300e-02, 2.128e-01, 1.161e-01, 2.329e-01, -1.434e-02, 1.939e-01, -1.737e-01, 1.001e-01, 4.390e-02, -1.567e-02, 7.235e-02, 9.783e-02, -1.181e-02, -1.044e-01, -3.693e-03), r);\n\tr = MulAdd(s7_4, M4(6.171e-02, 9.395e-02, -1.146e-02, -1.124e-01, 5.917e-02, 1.169e-02, -1.257e-01, 1.246e-01, 2.802e-02, -4.437e-02, 1.409e-01, -2.917e-02, -7.506e-02, -6.381e-03, 9.039e-02, -1.398e-01), r);\n\tr = MulAdd(s7_5, M4(-1.411e-01, -6.319e-02, 3.546e-02, -2.351e-02, 3.979e-02, -3.030e-02, 6.296e-03, -4.836e-02, -4.265e-03, -2.079e-01, 1.140e-01, 1.732e-02, -1.823e-01, 2.664e-02, 9.901e-02, -4.536e-02), r);\n\tr = MulAdd(s7_6, M4(-7.358e-02, -4.715e-03, 3.243e-03, 1.332e-01, 1.156e-01, 2.452e-02, 2.582e-01, -8.717e-02, 5.893e-02, -6.813e-02, -1.045e-01, -6.077e-02, 6.702e-02, -4.179e-02, 4.494e-04, 3.716e-03), r);\n\tr = MulAdd(s7_7, M4(9.210e-02, -8.261e-03, 2.497e-02, -1.238e-01, -1.281e-01, 2.690e-02, -8.240e-02, -1.425e-01, -3.485e-02, -6.733e-03, -3.941e-02, -9.975e-02, 6.695e-05, 2.079e-02, 1.967e-02, -3.847e-03), r);\n\tr = MulAdd(s7_8, M4(1.172e-02, -5.997e-02, -9.893e-02, 1.800e-02, 1.765e-01, 6.485e-02, -1.316e-03, -1.296e-01, -5.434e-02, -5.654e-02, -7.644e-02, 9.541e-02, 9.991e-02, -7.341e-02, -2.527e-02, -1.281e-02), r);\n\treturn r;\n}\n\nvoid Pass9(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 10\n//!DESC conv9\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.466e-04, -5.235e-03, 7.258e-03, 7.678e-03 };\n\tr = MulAdd(s0_0, M4(9.979e-02, -3.801e-03, -4.195e-02, 4.491e-02, -3.034e-02, 9.629e-02, 2.217e-02, 2.348e-02, -2.610e-01, -6.449e-02, -2.193e-02, 2.201e-02, 3.639e-03, 2.767e-02, 4.953e-02, -2.463e-02), r);\n\tr = MulAdd(s0_1, M4(4.585e-02, 9.533e-03, -2.058e-01, -1.379e-01, 6.451e-02, 1.004e-01, 1.222e-01, -1.450e-01, -1.402e-01, 2.992e-04, -1.222e-01, 1.367e-01, 8.661e-02, -2.011e-02, 9.221e-02, 1.822e-02), r);\n\tr = MulAdd(s0_2, M4(8.522e-02, -9.951e-02, -1.250e-01, 5.328e-03, -6.122e-02, 6.165e-04, -3.026e-02, -7.362e-03, 8.463e-02, -5.863e-02, -5.406e-02, -8.633e-02, 2.756e-01, 1.402e-02, 1.001e-02, 2.433e-02), r);\n\tr = MulAdd(s0_3, M4(-5.119e-02, -1.328e-01, 1.077e-01, 2.340e-01, 2.387e-01, 6.255e-03, -1.186e-01, -3.932e-02, 5.365e-02, 8.073e-02, -2.408e-02, -7.386e-02, -2.187e-01, -1.164e-01, -1.490e-02, -1.534e-01), r);\n\tr = MulAdd(s0_4, M4(-2.374e-01, -1.060e-01, 3.018e-01, -1.544e-02, -7.730e-02, -9.786e-02, -1.404e-01, 4.522e-02, -6.048e-02, -3.616e-02, -2.369e-01, 2.317e-01, 2.292e-01, -6.602e-02, 1.553e-01, 3.055e-02), r);\n\tr = MulAdd(s0_5, M4(-2.279e-01, 1.182e-01, 2.212e-01, 1.745e-01, 1.819e-03, -3.652e-02, -5.531e-02, 1.062e-01, 1.659e-01, -1.603e-01, -6.869e-02, -4.112e-02, -1.094e-01, 3.642e-02, 6.102e-02, 1.830e-01), r);\n\tr = MulAdd(s0_6, M4(1.745e-01, -2.214e-02, 2.725e-02, 4.460e-02, -4.860e-02, -2.004e-03, -9.034e-02, 3.286e-02, -4.466e-03, -1.189e-01, 3.782e-02, 8.976e-02, -1.897e-01, 4.847e-02, -2.158e-02, 3.881e-02), r);\n\tr = MulAdd(s0_7, M4(-1.962e-01, 4.814e-03, -7.059e-02, -5.031e-03, 4.430e-02, -4.664e-02, 2.091e-01, -9.975e-03, -4.257e-02, -4.231e-02, -1.577e-01, -7.857e-02, -7.814e-02, 1.149e-02, -1.294e-01, -3.907e-02), r);\n\tr = MulAdd(s0_8, M4(-1.119e-01, 1.538e-01, 7.105e-02, 1.003e-01, 2.690e-02, -7.133e-02, 1.107e-01, -1.360e-01, 1.566e-01, -1.870e-01, 6.938e-02, 1.078e-01, -6.613e-02, 9.232e-02, -1.335e-01, 6.051e-02), r);\n\tr = MulAdd(s1_0, M4(2.202e-02, -1.482e-02, -6.781e-03, 2.597e-02, -1.069e-01, 2.502e-02, 5.111e-02, -1.779e-01, -5.809e-02, -4.731e-03, -2.448e-02, -6.778e-02, 5.783e-02, 2.162e-02, -3.471e-02, 1.200e-01), r);\n\tr = MulAdd(s1_1, M4(-9.422e-02, 1.303e-02, -8.666e-02, 1.045e-01, 6.160e-02, -2.952e-02, 1.353e-01, 1.667e-03, -1.587e-01, -3.928e-02, 3.997e-03, 4.294e-02, 5.702e-02, -3.176e-02, -3.976e-02, -2.130e-01), r);\n\tr = MulAdd(s1_2, M4(-1.411e-03, 1.515e-02, 3.510e-02, -9.847e-02, 2.856e-02, -3.282e-02, -2.930e-02, -1.862e-02, 3.741e-02, -5.659e-02, -5.330e-02, 7.632e-03, -2.209e-02, -4.204e-02, 9.977e-02, 9.778e-03), r);\n\tr = MulAdd(s1_3, M4(6.449e-03, -5.335e-02, 7.347e-02, -7.254e-02, -1.440e-01, -8.859e-02, 3.089e-02, -7.035e-02, 9.591e-02, 5.848e-02, -9.547e-03, -8.389e-02, -5.530e-02, 2.520e-02, 5.559e-02, 3.615e-02), r);\n\tr = MulAdd(s1_4, M4(-1.427e-02, -2.663e-02, 5.490e-02, 1.628e-01, -2.134e-01, 1.559e-01, -2.144e-01, 1.769e-01, 5.934e-02, -3.494e-02, -2.390e-01, -3.932e-03, 1.214e-01, 1.626e-01, -1.064e-01, -1.502e-01), r);\n\tr = MulAdd(s1_5, M4(4.727e-02, 4.170e-02, 4.571e-03, -1.416e-01, -9.562e-03, -2.348e-02, -7.062e-02, 1.835e-02, 5.295e-02, -4.510e-02, 8.317e-02, -1.414e-01, -9.661e-02, 9.667e-02, -1.732e-02, 1.292e-01), r);\n\tr = MulAdd(s1_6, M4(-6.666e-02, 6.299e-02, -1.308e-02, -2.736e-02, 3.681e-02, -6.069e-02, -6.168e-02, -2.373e-02, -2.423e-02, 1.507e-01, 3.937e-02, -7.852e-02, 4.251e-02, -4.458e-02, -2.519e-02, 8.810e-04), r);\n\tr = MulAdd(s1_7, M4(-4.931e-02, 3.555e-02, -5.431e-02, -1.428e-03, -5.725e-02, 1.013e-01, 1.402e-01, -6.326e-02, -1.939e-01, 1.234e-03, -7.806e-03, 3.255e-02, -4.776e-02, 1.070e-01, -5.987e-02, -3.669e-02), r);\n\tr = MulAdd(s1_8, M4(3.066e-02, -4.837e-04, 1.517e-01, -1.362e-02, -4.811e-03, 7.739e-02, -1.789e-02, 1.743e-03, -1.418e-02, -4.379e-02, 2.601e-02, 7.546e-02, 1.224e-01, 5.496e-02, 7.564e-02, -1.265e-02), r);\n\tr = MulAdd(s2_0, M4(-3.308e-02, -5.130e-02, -3.989e-03, -8.190e-02, -1.572e-01, -6.557e-03, -9.931e-02, 3.838e-03, 3.900e-02, -7.331e-02, 1.019e-01, 8.555e-02, -3.265e-02, 5.456e-02, 1.418e-01, 5.037e-02), r);\n\tr = MulAdd(s2_1, M4(1.313e-01, 5.413e-03, 4.894e-02, -1.650e-01, 1.398e-01, -7.963e-03, -1.529e-01, -7.716e-02, 1.198e-01, 4.492e-02, -1.669e-02, -1.248e-03, -4.636e-02, 5.117e-03, 1.352e-01, -1.850e-01), r);\n\tr = MulAdd(s2_2, M4(1.493e-02, 9.842e-03, 1.435e-02, 9.388e-02, -5.429e-02, 1.358e-02, -2.276e-02, 4.283e-02, 9.156e-02, -2.228e-02, 5.059e-02, -1.006e-01, 1.375e-01, -5.795e-02, 7.925e-02, 1.013e-01), r);\n\tr = MulAdd(s2_3, M4(-5.631e-02, -8.639e-02, -4.036e-02, 7.269e-02, -3.657e-02, -7.294e-02, -1.657e-02, 1.943e-02, -4.664e-02, -9.360e-02, 1.649e-02, 1.378e-01, -8.848e-02, 1.032e-01, 4.494e-02, -4.874e-02), r);\n\tr = MulAdd(s2_4, M4(-4.301e-02, -5.024e-02, -1.032e-01, -4.365e-02, 6.432e-02, 8.289e-02, -5.587e-02, -3.820e-02, -9.340e-02, -3.329e-02, -8.456e-02, 9.410e-03, -5.204e-02, 5.367e-02, -3.764e-02, 3.938e-02), r);\n\tr = MulAdd(s2_5, M4(-6.791e-02, -1.080e-02, 2.013e-02, 5.786e-02, -6.448e-02, 3.220e-03, -4.325e-02, -1.603e-02, -6.848e-02, -1.132e-01, -1.624e-01, -4.266e-02, -1.756e-01, 4.226e-02, -1.251e-01, 6.439e-02), r);\n\tr = MulAdd(s2_6, M4(7.324e-02, -2.496e-03, -8.930e-02, 2.952e-02, -5.135e-02, 4.454e-02, 6.500e-03, -6.366e-02, 6.126e-02, -3.274e-02, 3.179e-03, 1.504e-01, -1.652e-02, 3.339e-02, -7.815e-02, 7.146e-03), r);\n\tr = MulAdd(s2_7, M4(6.184e-02, -5.592e-03, 9.693e-02, -6.885e-02, 1.027e-01, -1.237e-01, 6.530e-02, 8.315e-02, -7.620e-02, 6.753e-02, 1.437e-01, -6.247e-02, 1.395e-01, -9.828e-02, 8.287e-02, 7.834e-02), r);\n\tr = MulAdd(s2_8, M4(1.685e-01, -1.294e-01, 3.398e-02, 1.019e-01, -2.826e-02, -1.546e-02, 9.223e-02, 1.609e-02, -1.707e-02, 6.645e-02, 1.119e-02, -6.590e-02, 3.923e-03, 7.958e-02, 1.053e-01, -3.085e-02), r);\n\tr = MulAdd(s3_0, M4(2.589e-01, -2.329e-01, 1.983e-01, -7.556e-02, -1.354e-01, -2.610e-03, 1.614e-01, 1.125e-01, 1.494e-01, -2.117e-01, 4.815e-02, -3.878e-02, -2.583e-02, -8.455e-03, 6.600e-02, -3.506e-02), r);\n\tr = MulAdd(s3_1, M4(1.764e-01, 3.371e-01, -3.997e-01, -1.511e-02, 1.700e-01, 1.261e-01, -1.216e-01, -1.091e-03, 1.045e-01, -2.192e-02, 7.441e-02, 2.696e-01, 1.014e-01, 1.057e-01, 1.715e-02, -5.898e-02), r);\n\tr = MulAdd(s3_2, M4(1.639e-02, 2.217e-01, 1.512e-01, -1.281e-01, 1.477e-02, -3.184e-02, 2.148e-01, -8.227e-02, -1.780e-02, 7.008e-02, -1.461e-02, 9.458e-02, -6.548e-03, -1.904e-02, -6.767e-02, 7.074e-02), r);\n\tr = MulAdd(s3_3, M4(-2.304e-01, 1.383e-01, -3.498e-02, 1.237e-01, -6.704e-02, -1.442e-02, 1.118e-01, 2.074e-01, -2.043e-02, -8.898e-02, 4.736e-02, 1.558e-01, 8.804e-02, -1.124e-01, 7.384e-03, -7.617e-02), r);\n\tr = MulAdd(s3_4, M4(1.751e-01, 6.813e-02, 6.776e-02, -3.537e-01, -1.869e-01, 1.035e-02, 2.149e-01, 3.344e-01, -6.701e-02, 4.224e-02, 1.873e-01, -1.856e-01, -1.505e-02, 3.836e-02, -7.957e-02, 1.313e-01), r);\n\tr = MulAdd(s3_5, M4(-3.251e-01, 3.145e-01, 9.404e-03, 2.142e-02, 1.153e-01, -1.625e-01, 1.867e-01, -8.547e-02, -5.732e-02, 1.582e-02, -7.585e-02, 7.211e-02, -9.616e-02, 1.182e-01, 1.738e-02, 1.165e-01), r);\n\tr = MulAdd(s3_6, M4(-6.954e-02, 1.575e-01, -7.638e-02, -3.630e-02, 3.772e-02, 1.272e-01, -6.273e-02, -2.021e-03, 1.647e-01, -3.607e-03, 6.996e-02, -5.104e-02, 9.639e-03, 1.550e-02, -2.351e-02, -5.522e-02), r);\n\tr = MulAdd(s3_7, M4(-5.362e-02, 1.053e-01, 1.142e-01, -7.457e-02, -9.222e-02, -1.492e-01, 2.242e-01, -2.638e-01, 3.647e-02, 1.253e-01, 1.070e-01, 1.552e-01, 1.142e-01, 3.438e-02, -9.715e-02, 4.454e-02), r);\n\tr = MulAdd(s3_8, M4(1.371e-01, 4.977e-02, -4.478e-02, 3.495e-02, 2.572e-02, 7.444e-02, 1.017e-01, 5.641e-03, -7.497e-02, 5.295e-02, 8.355e-02, -1.566e-02, -2.130e-02, 3.331e-02, 3.913e-02, 1.173e-01), r);\n\tr = MulAdd(s4_0, M4(1.499e-01, 7.687e-02, 1.185e-01, -3.580e-02, 1.065e-01, 3.268e-02, -8.007e-02, -9.122e-02, 4.249e-02, 7.703e-02, 5.687e-02, -3.351e-02, 4.208e-02, -1.613e-02, -5.066e-03, -4.203e-03), r);\n\tr = MulAdd(s4_1, M4(-2.001e-02, -1.402e-02, 7.899e-02, -1.016e-01, 1.216e-01, -7.467e-02, -5.335e-02, 1.986e-01, -4.708e-02, 7.680e-02, 1.611e-02, -3.940e-02, 2.690e-02, 5.244e-02, -1.775e-02, -1.833e-01), r);\n\tr = MulAdd(s4_2, M4(1.290e-01, 3.754e-02, 4.333e-02, 1.285e-01, -1.692e-01, -7.149e-02, 4.532e-02, 6.357e-02, 3.700e-02, -6.319e-02, -4.157e-02, 7.303e-02, 2.179e-02, 5.627e-02, 4.567e-02, 4.252e-03), r);\n\tr = MulAdd(s4_3, M4(5.356e-02, 1.857e-02, 5.866e-03, -2.949e-02, -2.405e-02, -1.322e-01, 7.108e-02, 3.229e-03, 1.843e-01, -2.091e-01, -5.514e-02, -2.758e-02, -2.227e-02, 8.073e-02, -8.134e-04, 4.160e-02), r);\n\tr = MulAdd(s4_4, M4(7.446e-02, -1.003e-01, -1.824e-02, -6.362e-02, 1.851e-01, -1.159e-01, 7.880e-02, 2.134e-01, -5.594e-02, -2.991e-02, -3.338e-03, -1.311e-01, -4.503e-02, -6.705e-02, 1.878e-02, -1.863e-01), r);\n\tr = MulAdd(s4_5, M4(-1.527e-01, -1.209e-01, -2.515e-01, -1.239e-01, -1.336e-01, -5.718e-02, -1.228e-02, 2.261e-02, 6.291e-03, -1.348e-02, 2.181e-02, -6.074e-02, 1.343e-02, -4.235e-03, -1.892e-01, 3.363e-03), r);\n\tr = MulAdd(s4_6, M4(2.154e-01, 1.255e-01, -1.835e-02, 9.993e-02, 1.802e-02, 5.546e-02, -1.146e-02, 3.926e-02, 1.277e-02, -3.354e-02, -1.901e-02, 1.212e-02, 2.635e-01, 2.701e-01, -2.231e-02, -2.811e-03), r);\n\tr = MulAdd(s4_7, M4(-4.653e-02, 1.927e-01, -2.140e-01, -1.068e-01, 2.129e-02, 4.108e-02, 1.239e-01, -4.284e-02, -3.310e-02, 2.095e-02, 8.717e-02, 1.073e-02, 2.524e-01, 7.073e-02, -6.252e-02, 2.159e-02), r);\n\tr = MulAdd(s4_8, M4(1.614e-01, 1.794e-01, 5.384e-02, -2.796e-02, -1.241e-01, 9.263e-03, -5.525e-02, -2.885e-02, 1.242e-01, 1.682e-01, 1.313e-02, -8.044e-02, 1.017e-01, 2.218e-01, 4.896e-03, 2.134e-02), r);\n\tr = MulAdd(s5_0, M4(6.614e-02, 2.863e-02, 5.042e-02, -2.688e-02, -4.034e-02, 3.785e-02, -1.552e-01, 4.106e-02, -4.669e-03, 1.572e-01, 2.931e-02, -8.959e-02, 4.404e-02, 5.187e-02, 6.352e-02, -8.528e-03), r);\n\tr = MulAdd(s5_1, M4(-4.113e-02, -3.485e-02, 9.744e-04, -1.129e-01, -4.184e-02, -5.097e-02, -4.278e-02, -1.950e-01, 4.177e-01, -4.765e-02, -7.144e-02, -5.964e-02, -1.823e-02, 1.985e-02, -2.863e-02, 1.105e-01), r);\n\tr = MulAdd(s5_2, M4(-9.188e-02, -7.315e-02, -1.126e-01, -1.101e-01, -1.861e-01, -1.838e-02, 1.793e-02, 2.983e-02, -2.057e-01, 2.288e-01, -5.805e-02, 3.840e-01, -6.533e-02, -6.492e-03, -1.555e-02, 1.087e-02), r);\n\tr = MulAdd(s5_3, M4(-5.148e-02, -5.261e-02, 1.157e-01, -5.552e-02, 9.241e-03, -5.474e-02, -7.290e-02, 9.177e-02, 1.089e-01, -6.549e-02, 5.312e-02, 1.273e-02, -4.502e-02, 7.933e-02, 1.235e-01, -5.523e-02), r);\n\tr = MulAdd(s5_4, M4(1.154e-01, -7.080e-02, 2.820e-03, 5.855e-02, 3.476e-02, 5.606e-02, 1.551e-02, 2.757e-02, -4.717e-01, -3.164e-02, 1.945e-01, 2.011e-01, 4.240e-02, -4.828e-02, 1.131e-01, 2.007e-01), r);\n\tr = MulAdd(s5_5, M4(-1.324e-02, 9.034e-02, -6.562e-02, -1.415e-01, 2.035e-01, 2.227e-02, 8.958e-02, -8.127e-02, -2.278e-02, 5.897e-01, -2.082e-02, 2.763e-01, 3.196e-03, -1.589e-02, 1.041e-01, -6.755e-03), r);\n\tr = MulAdd(s5_6, M4(-1.162e-02, 3.651e-02, -1.074e-01, -1.459e-02, -4.629e-02, 2.949e-02, 4.951e-02, -8.052e-02, -3.776e-02, -4.897e-02, 1.135e-02, 1.967e-01, 1.796e-01, 3.094e-02, -2.135e-03, -9.460e-02), r);\n\tr = MulAdd(s5_7, M4(3.535e-02, -2.418e-01, -1.202e-02, 1.840e-02, -6.386e-02, 5.459e-02, 1.255e-01, -7.740e-02, -1.249e-01, 2.402e-02, -4.647e-02, -5.060e-02, -8.733e-03, 9.626e-02, -1.413e-01, 8.242e-02), r);\n\tr = MulAdd(s5_8, M4(4.101e-02, -1.777e-02, 4.835e-02, 1.135e-01, 4.554e-02, 1.219e-01, 4.158e-02, -5.097e-02, 1.331e-02, -1.184e-02, 3.028e-02, -1.485e-03, -3.645e-02, -4.552e-02, -6.050e-02, -4.123e-02), r);\n\tr = MulAdd(s6_0, M4(5.351e-02, -1.293e-01, 5.374e-02, -5.108e-02, -1.440e-01, 1.143e-02, -1.114e-02, -1.379e-03, 2.562e-02, 2.804e-02, 3.620e-02, -3.392e-02, 5.778e-02, 6.113e-02, -6.055e-03, -4.381e-02), r);\n\tr = MulAdd(s6_1, M4(-1.255e-01, 6.818e-02, 1.551e-01, -1.289e-01, -9.152e-02, -8.377e-02, -9.023e-02, -8.303e-02, 1.082e-01, 1.633e-02, -1.086e-01, -2.873e-02, 1.282e-01, 3.097e-02, 9.900e-03, -1.153e-01), r);\n\tr = MulAdd(s6_2, M4(-1.054e-02, -3.995e-02, -2.186e-02, 4.059e-02, -1.168e-01, -1.012e-01, -6.086e-02, -2.419e-02, -6.052e-02, -7.367e-02, -4.577e-02, 3.211e-02, 4.124e-02, 1.235e-02, -3.945e-02, -6.397e-02), r);\n\tr = MulAdd(s6_3, M4(1.669e-02, -2.115e-01, 2.236e-02, 1.717e-01, 1.757e-03, 3.770e-02, -3.654e-03, 6.192e-02, -4.239e-02, 4.960e-02, 6.035e-04, 2.639e-02, 1.147e-02, -6.225e-02, 7.189e-02, 5.251e-02), r);\n\tr = MulAdd(s6_4, M4(9.938e-02, 3.995e-02, -1.010e-01, -5.093e-02, 4.820e-02, 3.492e-02, 1.436e-01, -1.534e-01, -1.845e-01, -2.132e-02, -1.343e-01, -9.454e-02, 7.165e-02, -1.747e-03, 3.244e-02, -6.289e-02), r);\n\tr = MulAdd(s6_5, M4(4.139e-02, 8.645e-02, 9.399e-02, 3.691e-04, -4.433e-02, 7.535e-02, 9.574e-02, -5.203e-02, -2.959e-02, -8.498e-02, 6.047e-02, -4.950e-02, 2.226e-02, -3.868e-02, 8.249e-02, -3.529e-04), r);\n\tr = MulAdd(s6_6, M4(8.061e-02, -5.656e-02, -5.368e-02, -5.495e-02, 1.414e-02, 2.116e-02, 1.308e-01, 8.124e-02, 3.390e-02, 1.219e-01, 4.394e-02, 4.619e-02, 3.129e-02, 2.178e-02, -1.655e-01, -6.343e-02), r);\n\tr = MulAdd(s6_7, M4(1.022e-01, -6.860e-02, 2.375e-02, -2.220e-03, 4.988e-02, 3.299e-01, -1.765e-01, -2.914e-01, -2.302e-02, 8.937e-02, -1.611e-01, -3.162e-02, 1.135e-02, 1.151e-01, -8.842e-03, 2.983e-02), r);\n\tr = MulAdd(s6_8, M4(-7.457e-02, -1.736e-01, 7.785e-02, 3.747e-02, -8.805e-02, 1.588e-01, -2.302e-01, -3.967e-02, 2.187e-02, 6.145e-03, 1.436e-02, 6.803e-03, -7.099e-02, -7.314e-02, 1.006e-02, 6.246e-02), r);\n\tr = MulAdd(s7_0, M4(-7.723e-02, -5.801e-02, -6.587e-02, 8.060e-02, 3.730e-03, 1.916e-02, -1.449e-02, -5.394e-07, -2.390e-02, 9.347e-02, -4.700e-02, -9.968e-03, -1.154e-02, -4.739e-02, 8.297e-02, 6.254e-02), r);\n\tr = MulAdd(s7_1, M4(-5.722e-02, 4.579e-02, 1.460e-01, -5.556e-02, 1.696e-01, -2.296e-02, 4.788e-03, -1.250e-01, -6.934e-02, -4.866e-02, 4.083e-02, -1.056e-01, 4.424e-02, -6.733e-02, -1.075e-01, 2.183e-01), r);\n\tr = MulAdd(s7_2, M4(-5.592e-02, -1.700e-02, -2.670e-02, -1.004e-01, 1.008e-01, -1.744e-03, 1.410e-01, -5.661e-02, -3.807e-04, 1.436e-02, 9.305e-03, 3.034e-02, -1.248e-01, -1.910e-02, -1.741e-02, 2.880e-02), r);\n\tr = MulAdd(s7_3, M4(6.801e-02, -7.140e-02, -1.237e-01, 1.951e-01, 6.394e-02, -5.840e-02, -1.713e-02, -5.907e-02, 5.134e-02, -3.309e-02, -1.370e-01, 7.279e-02, 6.317e-02, -2.810e-01, 1.142e-02, -2.649e-02), r);\n\tr = MulAdd(s7_4, M4(5.304e-02, -8.568e-02, -1.015e-01, -3.312e-02, 2.344e-01, -9.537e-02, -3.585e-02, -5.287e-02, -8.116e-02, 6.407e-02, 8.409e-02, -8.888e-02, 2.251e-01, 7.453e-02, 4.974e-02, 6.232e-01), r);\n\tr = MulAdd(s7_5, M4(1.903e-01, -4.089e-02, 6.271e-02, -1.552e-02, 6.145e-02, -1.402e-01, -2.340e-01, -8.503e-02, 7.063e-02, -5.336e-02, 1.063e-01, -5.122e-02, 1.896e-02, 7.259e-02, -3.176e-02, 8.089e-02), r);\n\tr = MulAdd(s7_6, M4(2.801e-02, 5.953e-02, 1.169e-02, 3.472e-02, -1.428e-01, -5.415e-02, 1.115e-02, 1.077e-02, 4.924e-02, 5.381e-02, 1.765e-02, 3.125e-02, 1.124e-03, 1.649e-02, 3.846e-02, -1.732e-01), r);\n\tr = MulAdd(s7_7, M4(-5.102e-02, 4.520e-02, -1.745e-02, -2.658e-03, -9.990e-02, -9.452e-02, 4.177e-02, -5.105e-02, 9.738e-02, 4.162e-02, -1.828e-01, 6.219e-02, 2.346e-01, 6.254e-02, -3.511e-02, 2.310e-01), r);\n\tr = MulAdd(s7_8, M4(-1.098e-02, -3.532e-02, -3.789e-02, 6.616e-02, -7.425e-03, -8.286e-03, 8.732e-02, 8.728e-02, 1.692e-01, -1.588e-01, -6.698e-03, -3.937e-02, -1.749e-02, 1.068e-01, 2.430e-01, -1.154e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.481e-03, 3.894e-03, -5.502e-03, -4.914e-03 };\n\tr = MulAdd(s0_0, M4(-1.290e-03, 9.370e-02, -4.320e-02, -9.472e-02, -6.005e-02, -4.003e-03, -9.464e-02, 8.462e-03, -1.773e-01, -2.048e-01, 1.052e-01, 1.815e-02, -8.543e-02, -2.965e-02, 7.096e-02, -1.312e-01), r);\n\tr = MulAdd(s0_1, M4(1.154e-01, 7.756e-02, -2.212e-01, -4.084e-02, 1.015e-01, -9.616e-02, -9.514e-03, -1.778e-01, -2.940e-02, -1.525e-01, 1.598e-01, -1.158e-01, 1.203e-01, 2.498e-01, -2.661e-02, -1.841e-01), r);\n\tr = MulAdd(s0_2, M4(2.721e-02, -5.147e-02, -3.403e-02, 1.207e-01, -5.816e-02, -2.122e-02, -3.382e-02, -3.588e-03, 1.734e-01, -1.531e-01, 1.519e-01, -9.517e-02, -1.556e-01, 7.585e-02, -2.048e-02, -9.128e-02), r);\n\tr = MulAdd(s0_3, M4(-8.110e-02, 6.664e-02, 1.968e-02, -4.765e-02, 5.276e-02, -3.808e-02, 5.276e-02, 2.250e-01, -7.665e-02, -3.359e-02, -6.667e-03, -5.989e-02, 5.629e-02, -8.219e-02, 7.873e-02, -8.845e-02), r);\n\tr = MulAdd(s0_4, M4(8.630e-02, -4.454e-02, 9.694e-02, 1.655e-02, 1.300e-03, 6.742e-02, 3.216e-02, -1.980e-02, 1.934e-02, 1.376e-01, -2.557e-01, -1.010e-01, 1.660e-01, -2.325e-02, -1.511e-01, 1.703e-01), r);\n\tr = MulAdd(s0_5, M4(1.343e-01, -3.295e-02, 2.776e-02, -1.077e-01, 8.195e-02, -6.924e-02, -1.979e-02, -5.042e-02, -7.246e-02, 3.115e-02, 1.983e-01, 1.198e-01, 3.833e-02, -1.212e-02, -1.410e-01, -7.631e-02), r);\n\tr = MulAdd(s0_6, M4(-9.589e-03, 3.830e-02, -4.812e-02, 6.645e-02, -8.617e-02, -5.045e-02, -1.132e-01, 1.357e-01, -9.929e-03, 3.030e-02, -1.809e-01, 1.052e-01, -1.058e-01, 3.901e-02, -6.436e-02, -4.964e-03), r);\n\tr = MulAdd(s0_7, M4(-6.027e-02, -6.959e-02, 7.443e-03, 9.922e-02, 2.149e-02, 1.138e-01, -2.679e-02, 8.649e-02, 1.302e-01, -2.223e-01, 1.074e-02, 1.125e-01, -2.178e-02, 7.748e-02, 1.179e-02, 1.523e-02), r);\n\tr = MulAdd(s0_8, M4(-3.916e-05, -5.470e-02, -2.190e-01, -3.828e-02, 2.979e-02, 6.529e-02, -1.606e-01, 3.706e-02, 2.055e-01, -1.164e-01, 9.257e-02, 5.272e-02, 3.183e-02, 4.857e-02, -9.588e-02, -6.533e-03), r);\n\tr = MulAdd(s1_0, M4(7.540e-02, 9.764e-02, -1.319e-02, -2.100e-03, -8.562e-03, -7.786e-02, 6.762e-02, 8.959e-02, 1.179e-03, 8.631e-03, -2.432e-02, 1.476e-03, 2.655e-02, 1.271e-01, -5.520e-02, -3.024e-02), r);\n\tr = MulAdd(s1_1, M4(4.190e-02, 5.008e-02, 2.203e-02, 6.023e-02, -7.306e-02, -1.108e-01, -8.751e-03, -1.636e-01, 8.796e-03, -7.475e-03, -8.521e-02, 3.632e-02, -2.483e-02, -1.363e-01, 8.583e-02, -1.698e-01), r);\n\tr = MulAdd(s1_2, M4(5.378e-02, 1.391e-01, -2.328e-02, 1.559e-01, -3.753e-02, 1.481e-02, 4.905e-02, 1.148e-02, 1.044e-01, -1.197e-01, -3.189e-02, -1.087e-01, -9.864e-02, 2.428e-02, 6.278e-02, -1.561e-01), r);\n\tr = MulAdd(s1_3, M4(1.942e-02, -1.416e-02, -1.320e-03, 1.718e-03, -9.708e-02, 3.691e-02, 8.199e-04, 1.795e-01, 6.060e-03, 4.807e-02, -9.477e-02, -1.175e-02, 1.004e-01, 2.195e-03, -4.551e-02, -1.336e-02), r);\n\tr = MulAdd(s1_4, M4(2.728e-02, -6.010e-02, -6.956e-02, -1.666e-02, -1.604e-02, 4.916e-02, -1.192e-02, 1.337e-02, -6.281e-03, 5.109e-02, -1.169e-01, -9.832e-02, -1.918e-01, 1.490e-01, 1.082e-01, 2.273e-02), r);\n\tr = MulAdd(s1_5, M4(-2.612e-02, 4.914e-02, 9.274e-02, -5.310e-02, 2.109e-02, -8.898e-02, 4.483e-02, -9.475e-02, 5.839e-02, 7.126e-03, 4.129e-03, 3.534e-02, -3.360e-02, -3.514e-02, -7.179e-02, -1.169e-01), r);\n\tr = MulAdd(s1_6, M4(-5.941e-02, 2.700e-02, -2.747e-02, 3.563e-02, -5.072e-02, -4.170e-02, 1.761e-01, 3.688e-02, -1.132e-01, -4.068e-03, -9.349e-02, 6.556e-03, -5.830e-02, 7.343e-03, -1.387e-01, 3.240e-02), r);\n\tr = MulAdd(s1_7, M4(-8.859e-03, -1.137e-02, 1.834e-02, -3.014e-02, -1.304e-02, 8.656e-02, 1.825e-02, -4.192e-02, 1.328e-01, -8.751e-03, -3.517e-02, -5.615e-02, 6.907e-02, 2.833e-02, -7.642e-02, 7.053e-02), r);\n\tr = MulAdd(s1_8, M4(6.392e-02, 5.642e-02, 2.008e-02, 4.261e-02, -5.019e-02, 5.220e-02, 3.438e-02, 2.187e-02, 2.450e-02, -8.571e-03, 9.732e-02, 7.153e-02, 1.682e-03, -6.041e-02, -1.310e-02, -1.153e-02), r);\n\tr = MulAdd(s2_0, M4(1.411e-02, -2.235e-02, 1.050e-02, 9.889e-03, -5.474e-02, -9.156e-02, 2.731e-02, -2.199e-02, -5.243e-02, -4.685e-02, 7.612e-02, 5.636e-02, -5.409e-02, 7.412e-03, 1.141e-01, 4.936e-02), r);\n\tr = MulAdd(s2_1, M4(3.292e-02, 9.274e-02, 2.352e-02, 3.996e-02, -1.340e-01, -1.743e-01, -6.656e-02, -1.599e-01, 1.060e-01, -7.129e-02, 3.157e-02, -6.869e-02, -9.807e-02, -1.541e-02, 1.504e-01, 7.686e-02), r);\n\tr = MulAdd(s2_2, M4(-1.548e-02, 1.043e-02, 1.075e-02, -7.252e-02, -3.533e-02, 1.450e-01, 2.824e-02, -6.352e-02, 9.156e-03, -2.765e-02, -3.235e-02, -9.487e-02, -1.019e-01, -1.105e-02, 7.342e-02, -1.165e-01), r);\n\tr = MulAdd(s2_3, M4(-2.381e-02, -1.041e-01, -2.931e-02, -5.409e-02, -5.221e-02, -8.654e-02, 8.565e-02, 5.808e-02, 1.080e-01, 4.777e-02, 5.038e-02, -6.842e-02, -2.049e-02, 7.978e-04, 1.524e-02, 5.051e-02), r);\n\tr = MulAdd(s2_4, M4(-1.083e-01, -1.008e-03, 1.155e-01, 1.658e-02, 2.956e-02, 1.441e-01, 5.986e-02, 1.595e-01, 3.039e-01, 9.038e-02, 6.069e-02, -1.482e-01, -1.366e-01, 7.371e-02, 1.787e-01, -1.498e-01), r);\n\tr = MulAdd(s2_5, M4(1.529e-01, -7.698e-02, -4.434e-02, -8.404e-02, 8.368e-02, 1.152e-01, -1.935e-01, -2.468e-03, 2.219e-02, 9.952e-02, -3.702e-02, 3.885e-02, 3.898e-02, 1.067e-01, -8.168e-02, -4.104e-02), r);\n\tr = MulAdd(s2_6, M4(8.873e-03, -6.697e-02, -7.962e-02, 8.146e-02, -1.902e-04, -2.720e-02, 9.140e-02, -4.676e-02, 3.858e-02, -7.333e-02, 3.452e-02, 3.836e-02, 5.023e-03, 7.728e-02, 5.099e-02, -3.697e-02), r);\n\tr = MulAdd(s2_7, M4(-4.881e-02, 1.881e-02, 8.563e-02, 3.162e-02, 1.113e-01, -5.356e-02, -9.279e-02, 3.903e-02, -2.803e-01, -1.296e-01, 9.978e-02, -3.956e-02, 2.544e-01, 1.759e-02, -4.664e-02, 4.580e-02), r);\n\tr = MulAdd(s2_8, M4(3.493e-02, -7.852e-03, -6.132e-02, 1.860e-02, 6.619e-02, 5.271e-02, -2.771e-05, 5.595e-03, -4.999e-02, 4.761e-02, 2.335e-03, 3.123e-02, 9.426e-02, -9.228e-02, -3.116e-01, 5.790e-03), r);\n\tr = MulAdd(s3_0, M4(4.187e-01, 1.570e-01, 3.416e-01, -1.476e-01, 2.762e-02, -6.821e-02, 1.792e-01, -7.145e-02, -1.132e-01, -1.147e-01, 4.687e-03, -8.415e-02, -6.371e-02, -9.179e-02, 8.568e-02, 5.282e-02), r);\n\tr = MulAdd(s3_1, M4(2.006e-01, -1.368e-01, -1.491e-01, 1.522e-01, 1.591e-01, -2.736e-01, -7.281e-03, -1.058e-01, 1.874e-01, 6.724e-02, -2.351e-02, 1.403e-01, -3.835e-02, -1.348e-01, 4.668e-03, 2.206e-02), r);\n\tr = MulAdd(s3_2, M4(-2.926e-02, 3.517e-01, 1.707e-01, -1.408e-03, -3.285e-02, -3.590e-02, 1.927e-01, -2.824e-02, 3.858e-03, 6.156e-02, -5.746e-02, -4.645e-02, -4.775e-02, 1.494e-02, 1.537e-01, -8.107e-02), r);\n\tr = MulAdd(s3_3, M4(-5.339e-02, -2.462e-02, 1.801e-01, 6.735e-02, 1.110e-01, -7.172e-02, 1.427e-02, -2.208e-02, 4.538e-02, 1.186e-02, -6.721e-02, 2.340e-01, 7.496e-02, -1.336e-02, -1.109e-01, -1.291e-02), r);\n\tr = MulAdd(s3_4, M4(-4.793e-01, -1.920e-02, 2.296e-01, 2.338e-01, 3.594e-02, 3.332e-01, -1.317e-02, 1.741e-01, 1.125e-01, -8.630e-02, 2.258e-01, -6.323e-02, -2.961e-02, -5.608e-02, 5.575e-02, -3.323e-02), r);\n\tr = MulAdd(s3_5, M4(-1.526e-01, -7.034e-02, 6.900e-02, -1.000e-01, 2.197e-01, -8.525e-02, -1.881e-01, 7.698e-03, 1.491e-02, -2.469e-02, -7.523e-02, -8.245e-02, -3.840e-02, 1.184e-01, -1.436e-01, -9.901e-02), r);\n\tr = MulAdd(s3_6, M4(-5.958e-02, 8.086e-03, 9.842e-02, -1.083e-01, 9.213e-02, -5.961e-02, 7.362e-02, -8.798e-02, 1.607e-01, -1.811e-02, -8.682e-02, 1.032e-02, 3.486e-02, 3.203e-02, 5.213e-02, -3.576e-02), r);\n\tr = MulAdd(s3_7, M4(7.391e-03, 1.972e-01, -3.796e-03, 6.523e-02, -1.108e-01, -4.348e-02, -8.562e-02, -1.051e-01, -9.360e-02, -1.299e-02, 2.863e-02, -1.352e-01, 2.290e-01, 8.414e-02, -1.579e-01, 4.872e-03), r);\n\tr = MulAdd(s3_8, M4(-2.161e-02, 8.326e-02, 3.877e-02, 1.170e-01, 1.057e-01, 9.497e-02, 5.896e-02, 8.480e-02, -3.514e-03, 4.368e-02, -6.036e-02, 8.517e-02, 1.221e-01, -3.263e-02, -1.092e-01, -4.857e-02), r);\n\tr = MulAdd(s4_0, M4(-6.439e-03, 2.590e-02, -1.078e-02, 4.911e-03, -1.234e-01, -3.479e-02, -2.544e-02, -9.376e-04, -1.409e-02, -1.044e-01, 2.975e-02, -5.554e-03, 8.809e-02, -1.176e-01, -8.657e-03, -9.243e-02), r);\n\tr = MulAdd(s4_1, M4(8.806e-02, 1.608e-01, 3.592e-02, 6.373e-02, 1.539e-02, 2.080e-02, 1.398e-01, -4.859e-02, 4.323e-02, -3.154e-02, 5.207e-02, 5.971e-02, 8.081e-02, -6.827e-02, -7.255e-02, -9.584e-02), r);\n\tr = MulAdd(s4_2, M4(1.009e-01, -3.291e-02, -3.984e-02, 1.348e-01, 9.537e-02, -9.646e-02, -1.498e-01, 3.553e-02, 9.186e-02, -1.523e-02, 8.877e-02, 7.689e-02, -2.311e-02, 3.178e-02, 7.619e-02, -2.005e-02), r);\n\tr = MulAdd(s4_3, M4(8.980e-03, -1.306e-01, 5.834e-03, 4.182e-02, 1.066e-01, 3.029e-02, 3.420e-02, -9.790e-03, -2.331e-02, 2.927e-02, -1.827e-02, 3.896e-03, 5.993e-02, 1.324e-01, 7.162e-03, 7.392e-02), r);\n\tr = MulAdd(s4_4, M4(5.454e-03, 7.056e-02, 5.852e-02, 1.588e-01, 1.488e-01, 4.709e-02, -3.013e-02, 6.137e-04, 1.686e-02, 2.025e-02, -4.921e-02, -6.366e-02, 1.511e-01, 5.800e-02, 9.437e-03, 2.178e-01), r);\n\tr = MulAdd(s4_5, M4(-8.298e-02, -3.234e-02, -1.870e-01, -7.194e-04, -9.680e-02, -6.716e-02, -6.514e-02, 4.009e-03, -6.493e-02, 9.135e-03, 6.310e-02, -2.987e-02, 5.917e-02, -3.049e-02, -6.810e-02, 1.133e-01), r);\n\tr = MulAdd(s4_6, M4(2.475e-01, -1.028e-01, -1.012e-01, 5.798e-02, 4.370e-02, -8.948e-02, 2.015e-02, -3.095e-02, 1.079e-02, 4.546e-03, -1.499e-01, -2.327e-02, 2.749e-01, 4.021e-02, 3.484e-02, 8.184e-03), r);\n\tr = MulAdd(s4_7, M4(-8.256e-02, 8.792e-02, 1.201e-01, -9.130e-02, 1.690e-02, 7.735e-02, -2.095e-01, -9.881e-02, 1.303e-01, 3.493e-02, 1.233e-01, 7.466e-02, -2.529e-01, 1.450e-01, -2.835e-01, -6.814e-03), r);\n\tr = MulAdd(s4_8, M4(1.216e-01, -3.621e-02, -2.386e-01, 9.544e-02, -4.847e-02, -5.423e-02, 2.443e-02, 1.336e-02, -4.633e-02, -3.880e-02, -7.520e-02, -2.050e-03, -2.050e-02, -2.381e-02, -1.815e-02, 9.741e-03), r);\n\tr = MulAdd(s5_0, M4(-3.185e-02, 1.057e-02, -2.817e-02, -3.388e-02, -5.074e-02, 1.164e-01, 1.036e-01, -3.044e-02, -4.854e-02, -4.310e-03, 1.276e-01, 3.407e-03, 4.557e-02, -4.412e-02, -8.336e-03, -4.077e-02), r);\n\tr = MulAdd(s5_1, M4(1.156e-01, 1.292e-01, 2.385e-02, 7.971e-02, 5.013e-02, -3.915e-02, 6.567e-02, 3.506e-02, 2.449e-02, 1.782e-01, -2.747e-01, 1.516e-01, -8.615e-05, -3.332e-02, -1.616e-02, -2.850e-02), r);\n\tr = MulAdd(s5_2, M4(1.542e-01, -6.468e-03, 1.698e-02, 4.033e-02, -5.540e-02, 1.855e-02, -8.269e-02, -8.155e-02, -1.974e-01, -6.811e-02, 6.998e-02, -2.765e-02, 1.672e-02, 5.377e-02, -6.681e-03, 7.280e-02), r);\n\tr = MulAdd(s5_3, M4(-2.420e-02, -1.241e-01, 1.166e-03, -2.627e-02, 3.275e-02, -1.170e-01, -3.455e-03, 6.929e-02, -1.627e-01, 1.008e-01, -5.692e-02, -1.333e-01, -1.243e-01, 3.192e-02, -9.795e-02, -1.679e-01), r);\n\tr = MulAdd(s5_4, M4(-6.568e-02, 2.003e-01, 1.194e-01, 7.742e-02, -2.088e-01, 7.239e-02, 1.333e-01, 1.790e-01, 1.797e-01, 7.090e-02, -1.162e-01, -1.318e-01, 1.639e-02, -1.386e-01, -2.500e-02, -1.245e-01), r);\n\tr = MulAdd(s5_5, M4(-9.647e-02, 8.403e-02, -2.060e-03, 2.117e-01, 5.347e-02, -1.115e-01, -7.547e-02, 8.582e-02, -1.059e-01, 2.511e-02, -1.307e-01, 9.496e-02, -7.920e-02, 3.782e-02, 3.762e-02, 2.821e-02), r);\n\tr = MulAdd(s5_6, M4(-3.827e-02, -1.998e-02, -1.564e-02, -5.277e-02, -1.666e-01, 6.916e-02, 8.288e-02, -8.635e-02, 4.294e-02, -8.745e-02, 1.111e-01, -2.236e-02, -1.172e-01, 1.120e-01, -4.274e-05, -1.752e-01), r);\n\tr = MulAdd(s5_7, M4(1.626e-01, -5.202e-02, 3.022e-02, 9.743e-02, -6.804e-02, 2.098e-02, 2.797e-03, 4.546e-02, -1.249e-01, 2.074e-01, -1.100e-01, -9.678e-02, -1.159e-01, -4.199e-02, 3.311e-01, -1.160e-01), r);\n\tr = MulAdd(s5_8, M4(-7.867e-02, 6.140e-02, 1.652e-02, 1.256e-02, -1.360e-01, 6.991e-02, 1.342e-01, 2.675e-02, 1.578e-01, -1.088e-01, -7.167e-02, 6.907e-02, -6.101e-02, -4.746e-02, -1.126e-01, -1.637e-02), r);\n\tr = MulAdd(s6_0, M4(-2.515e-02, -1.885e-02, -5.777e-02, -2.252e-01, -3.739e-02, -2.786e-02, 5.066e-02, 1.577e-02, 1.946e-02, 1.096e-01, -7.705e-02, 5.620e-02, -5.276e-02, 3.204e-02, -1.163e-01, 4.990e-02), r);\n\tr = MulAdd(s6_1, M4(3.752e-02, 6.195e-02, -1.753e-01, -1.356e-02, 5.523e-02, 1.733e-01, 4.054e-02, 4.283e-02, 8.276e-02, -8.704e-02, -2.671e-02, 9.156e-02, 6.897e-02, 1.421e-01, 1.076e-02, 7.837e-02), r);\n\tr = MulAdd(s6_2, M4(-3.095e-02, -3.410e-02, 1.191e-01, -7.677e-03, 5.647e-02, 4.696e-02, -1.132e-02, -2.785e-02, 6.987e-02, -4.717e-02, 4.592e-03, 6.663e-02, -5.682e-02, -4.635e-02, 1.832e-03, 5.830e-03), r);\n\tr = MulAdd(s6_3, M4(-8.835e-02, -1.053e-01, 1.292e-01, -7.368e-02, 1.444e-01, 2.780e-02, -7.350e-02, 3.015e-02, 1.847e-02, 1.329e-01, -1.123e-01, -1.848e-02, 8.562e-02, 9.074e-02, 8.054e-02, 2.418e-02), r);\n\tr = MulAdd(s6_4, M4(7.310e-03, -1.969e-02, 1.007e-01, 1.113e-01, -9.991e-03, -1.812e-01, 1.073e-01, -2.093e-01, -4.888e-02, -1.555e-01, -3.170e-02, -1.123e-01, -3.621e-02, 1.387e-02, -3.134e-02, -1.403e-01), r);\n\tr = MulAdd(s6_5, M4(-5.748e-02, -8.762e-02, 5.587e-02, -9.407e-02, -1.383e-01, 7.550e-03, 6.783e-03, -1.238e-01, -1.612e-02, 2.597e-02, 1.169e-02, 6.839e-02, 1.773e-02, -4.397e-02, -2.984e-02, 2.920e-02), r);\n\tr = MulAdd(s6_6, M4(6.376e-02, 2.743e-02, -4.821e-03, -6.324e-02, -4.138e-02, 2.202e-02, 4.987e-02, 8.916e-02, 5.525e-02, 2.917e-02, -3.244e-02, -7.117e-02, -3.278e-02, 3.070e-02, -5.857e-02, 2.783e-02), r);\n\tr = MulAdd(s6_7, M4(1.624e-02, 4.970e-02, -4.111e-02, -4.877e-02, -2.928e-01, 5.539e-02, 1.247e-01, -4.042e-02, -1.235e-01, -1.679e-04, -2.364e-02, -6.966e-02, 6.416e-02, -2.049e-02, -7.345e-02, -1.792e-02), r);\n\tr = MulAdd(s6_8, M4(1.609e-01, -4.346e-02, 9.700e-02, 9.440e-03, -3.306e-02, -2.842e-02, -8.993e-03, -6.132e-02, -6.560e-02, -5.271e-02, 1.367e-01, 1.921e-02, 7.265e-02, -4.142e-02, 2.049e-02, 1.043e-02), r);\n\tr = MulAdd(s7_0, M4(1.894e-02, 6.258e-02, 8.076e-02, -2.416e-02, 5.400e-04, -9.984e-04, 7.170e-03, -3.911e-02, 6.118e-02, 6.144e-02, 8.159e-02, 4.385e-02, -9.262e-02, 9.228e-02, -1.446e-01, 2.100e-02), r);\n\tr = MulAdd(s7_1, M4(6.674e-02, 5.568e-03, -7.251e-02, -4.187e-02, 1.851e-02, 5.571e-02, 2.995e-02, 5.407e-02, 2.183e-01, -4.680e-02, 1.004e-01, 1.623e-01, -8.901e-02, -1.236e-01, -1.153e-01, -3.801e-02), r);\n\tr = MulAdd(s7_2, M4(-7.886e-03, -3.350e-02, 4.360e-02, 7.645e-02, 1.056e-01, -3.103e-02, 6.506e-02, 8.190e-02, 3.249e-02, -7.791e-02, 6.712e-02, -1.043e-01, -1.930e-02, 5.442e-02, -1.336e-01, 1.288e-02), r);\n\tr = MulAdd(s7_3, M4(7.036e-02, 6.907e-02, -7.875e-02, 8.528e-02, -2.936e-02, -1.772e-01, -2.183e-01, -5.999e-02, -3.511e-03, 2.193e-03, 1.227e-01, 1.089e-02, 9.310e-02, 1.357e-01, -2.419e-02, -5.080e-02), r);\n\tr = MulAdd(s7_4, M4(4.810e-02, 8.335e-02, -3.029e-02, 8.989e-03, 1.662e-01, -2.807e-01, -1.801e-01, 2.570e-02, -1.548e-01, -1.555e-01, 3.219e-01, -1.050e-01, -1.471e-01, -1.995e-01, -1.833e-01, -3.143e-01), r);\n\tr = MulAdd(s7_5, M4(-8.325e-02, 2.041e-02, 9.360e-02, 9.553e-02, -1.848e-02, -1.377e-01, 1.536e-01, -2.651e-02, 8.098e-02, -2.200e-02, -9.656e-02, -8.114e-02, -3.943e-02, 8.533e-02, 2.998e-02, 8.909e-02), r);\n\tr = MulAdd(s7_6, M4(5.689e-02, -6.169e-02, 1.352e-02, 5.280e-02, -2.217e-02, -1.066e-01, -7.912e-02, 8.141e-02, 2.398e-02, -9.405e-02, 1.244e-01, -5.454e-02, -8.083e-04, 8.872e-02, -1.283e-01, -3.437e-02), r);\n\tr = MulAdd(s7_7, M4(-1.204e-02, -1.334e-02, -7.140e-02, -8.917e-03, -1.646e-02, -1.025e-01, -8.074e-02, 1.460e-01, -1.283e-01, -3.602e-02, 9.681e-02, 1.732e-02, 8.187e-02, -3.115e-01, -1.832e-01, -2.510e-02), r);\n\tr = MulAdd(s7_8, M4(-6.913e-02, 4.574e-02, 4.980e-02, 6.209e-04, 8.980e-02, -1.209e-01, 1.175e-01, -4.394e-02, 5.081e-03, -6.635e-02, -3.629e-03, -4.362e-02, -3.733e-02, -8.044e-02, 2.265e-01, 1.154e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.177e-02, 5.260e-02, 3.830e-03, 2.828e-03 };\n\tr = MulAdd(s0_0, M4(3.724e-02, 3.479e-03, 1.567e-03, -1.214e-01, 4.689e-03, 1.444e-02, 8.451e-02, 1.177e-03, 3.629e-02, -1.559e-01, 1.897e-01, 5.087e-02, -1.851e-01, -9.648e-03, -1.368e-01, -2.592e-01), r);\n\tr = MulAdd(s0_1, M4(1.487e-01, 1.007e-01, 1.845e-01, 1.220e-01, -2.131e-01, 1.747e-02, -1.074e-02, 1.567e-02, 1.012e-01, -1.598e-01, -8.153e-03, 1.760e-02, 5.070e-02, -1.675e-01, 1.655e-01, 3.491e-02), r);\n\tr = MulAdd(s0_2, M4(3.821e-01, 1.155e-01, -1.487e-02, 1.180e-01, -4.396e-02, 6.640e-03, 5.773e-02, 4.614e-02, 5.837e-02, -4.640e-02, -1.066e-01, -7.149e-02, -3.485e-02, -2.152e-01, 9.750e-02, 1.785e-02), r);\n\tr = MulAdd(s0_3, M4(-1.623e-02, -1.133e-01, -2.455e-02, -1.347e-01, 1.359e-02, 2.334e-01, 3.878e-01, -2.031e-01, -1.815e-01, 1.718e-02, -9.717e-03, 7.400e-02, 6.369e-02, -1.304e-01, 3.659e-02, -1.692e-01), r);\n\tr = MulAdd(s0_4, M4(7.610e-02, 1.194e-02, 2.673e-02, 3.135e-01, 2.760e-02, 1.648e-01, 1.564e-01, 4.504e-02, -2.295e-01, 5.353e-02, 3.624e-03, -3.883e-02, 4.702e-02, -1.814e-01, 6.465e-03, 2.531e-02), r);\n\tr = MulAdd(s0_5, M4(4.372e-02, 3.090e-02, -1.860e-01, 9.564e-03, 9.612e-03, -3.647e-02, -1.468e-02, 8.505e-03, -5.727e-02, 8.499e-02, -1.629e-01, 5.623e-02, 1.557e-01, -2.105e-01, -6.874e-02, 2.368e-03), r);\n\tr = MulAdd(s0_6, M4(3.906e-02, -6.603e-02, -1.071e-02, -2.715e-02, 2.176e-02, -1.145e-01, -8.425e-02, -2.132e-02, 8.685e-02, -1.174e-01, -8.648e-02, -2.373e-02, 3.716e-02, -7.980e-02, -8.063e-02, 1.802e-02), r);\n\tr = MulAdd(s0_7, M4(-6.397e-02, -3.391e-02, 7.026e-02, 1.341e-01, 8.867e-02, -1.932e-01, -5.525e-02, 5.118e-02, 1.150e-01, -2.245e-02, -9.164e-02, 8.815e-02, -2.175e-02, 5.732e-02, 3.391e-02, -7.967e-02), r);\n\tr = MulAdd(s0_8, M4(6.969e-02, 2.481e-02, -5.758e-02, -1.122e-01, 6.473e-02, -1.135e-01, 1.552e-02, 4.858e-02, 2.165e-02, -2.840e-02, -5.521e-02, 4.638e-02, -6.026e-02, 8.548e-02, -6.542e-02, 2.422e-02), r);\n\tr = MulAdd(s1_0, M4(-1.324e-01, -9.657e-02, 5.681e-02, -5.161e-02, -2.698e-02, -2.448e-02, -2.619e-01, -6.980e-02, 5.807e-02, 5.673e-02, 5.349e-02, -2.276e-02, 2.047e-02, 7.038e-02, 6.933e-02, -2.684e-02), r);\n\tr = MulAdd(s1_1, M4(-5.279e-02, -4.786e-02, 2.147e-02, 1.050e-02, -2.486e-02, 2.043e-01, -3.822e-03, -5.897e-02, 1.032e-01, -7.920e-02, -1.604e-01, 4.115e-02, -2.427e-01, 2.145e-02, -1.255e-01, -1.657e-01), r);\n\tr = MulAdd(s1_2, M4(-1.010e-01, -1.010e-01, -7.991e-02, 6.059e-02, 1.697e-02, -4.796e-02, 1.962e-02, 4.203e-02, -8.784e-02, -1.023e-01, 1.271e-02, -3.299e-02, 1.298e-01, 1.214e-01, 6.105e-02, -2.229e-02), r);\n\tr = MulAdd(s1_3, M4(-4.770e-02, 5.913e-02, 5.020e-02, -7.131e-03, -2.060e-01, 1.241e-01, 2.388e-02, -2.635e-02, 1.238e-01, 7.247e-02, -8.043e-02, -3.076e-02, 1.658e-01, -4.568e-02, -7.240e-02, 1.014e-01), r);\n\tr = MulAdd(s1_4, M4(8.966e-02, 1.616e-01, 5.095e-02, -2.455e-03, 5.593e-02, 1.857e-01, 1.454e-01, -7.192e-03, 6.316e-02, 5.048e-02, 1.297e-02, -1.763e-01, -1.952e-01, -1.460e-01, 4.980e-02, -8.409e-02), r);\n\tr = MulAdd(s1_5, M4(-9.377e-02, 1.184e-01, 5.613e-02, -7.132e-02, -1.259e-03, 5.138e-02, 4.730e-02, -2.482e-02, -3.313e-02, 8.537e-02, 2.716e-02, 1.247e-02, 1.137e-01, -7.160e-02, 7.234e-02, 6.762e-02), r);\n\tr = MulAdd(s1_6, M4(-6.539e-02, -7.457e-02, -6.890e-02, 4.739e-02, -1.187e-01, -7.289e-02, -8.715e-02, 1.226e-01, 4.527e-02, 1.590e-01, 3.229e-02, -1.924e-02, 5.422e-02, 7.550e-02, -2.298e-02, 1.753e-02), r);\n\tr = MulAdd(s1_7, M4(6.078e-03, 4.910e-02, -2.113e-02, 2.665e-02, 1.067e-01, -1.883e-01, 1.012e-02, 4.174e-02, -1.408e-01, -4.429e-02, 2.566e-02, 1.960e-02, -1.501e-01, 1.980e-02, -1.924e-02, 8.359e-02), r);\n\tr = MulAdd(s1_8, M4(-8.162e-02, -2.046e-01, -4.726e-03, 6.651e-02, 5.891e-02, 4.803e-02, 4.659e-03, 4.186e-02, 5.667e-02, -2.298e-02, 1.575e-02, -3.687e-02, 4.226e-02, -8.163e-03, 2.719e-02, -2.139e-02), r);\n\tr = MulAdd(s2_0, M4(-1.300e-01, -2.071e-02, -2.876e-02, 3.092e-02, -4.768e-02, -8.427e-02, -1.292e-02, 2.653e-02, 3.043e-02, -2.351e-02, 1.032e-01, -1.242e-01, -5.527e-02, 5.803e-02, -2.570e-01, -5.117e-02), r);\n\tr = MulAdd(s2_1, M4(-4.517e-02, -1.088e-02, 1.822e-01, -1.161e-01, -9.387e-02, 1.175e-01, -3.744e-02, -5.978e-02, 1.616e-01, 2.280e-02, 2.708e-01, 1.192e-02, 4.039e-02, -1.120e-01, 1.062e-02, 8.678e-02), r);\n\tr = MulAdd(s2_2, M4(8.099e-02, -3.482e-02, -1.468e-02, -2.101e-02, 1.372e-03, -7.233e-03, 1.620e-02, -7.852e-02, 6.260e-04, 8.281e-04, 8.617e-02, -3.288e-02, -9.138e-03, 3.785e-02, 5.528e-02, -3.426e-02), r);\n\tr = MulAdd(s2_3, M4(-9.734e-02, 1.518e-01, 4.747e-02, 5.377e-02, -7.703e-02, -7.372e-02, 5.939e-02, 1.732e-02, -6.665e-02, -7.835e-04, 1.318e-01, -1.620e-01, -1.705e-01, 1.204e-01, -2.448e-01, -8.184e-02), r);\n\tr = MulAdd(s2_4, M4(1.516e-01, 1.280e-01, -1.038e-01, 4.404e-02, 1.640e-02, -4.291e-02, 4.069e-03, -5.652e-02, -1.271e-01, 9.381e-04, -1.282e-02, 1.567e-03, 1.468e-01, 2.367e-01, -3.452e-02, 8.083e-02), r);\n\tr = MulAdd(s2_5, M4(3.144e-02, -5.804e-03, -4.107e-02, 1.045e-02, 4.592e-02, -5.854e-02, -1.150e-01, 1.797e-02, 3.444e-02, 1.098e-02, -1.012e-01, 2.547e-02, 1.607e-01, -1.564e-02, 1.843e-01, -1.313e-01), r);\n\tr = MulAdd(s2_6, M4(-1.530e-02, 1.923e-02, -2.923e-02, -4.513e-02, -4.605e-03, -4.504e-02, -2.672e-02, 4.149e-02, 8.869e-02, -9.748e-04, -2.265e-02, -3.775e-02, -2.417e-01, -1.869e-01, -4.442e-02, 2.009e-02), r);\n\tr = MulAdd(s2_7, M4(-6.688e-02, -2.039e-01, -1.457e-01, 1.024e-01, -5.316e-02, -1.241e-01, -4.952e-02, 1.172e-01, 6.062e-02, 1.271e-02, -3.552e-02, 6.410e-02, -4.152e-02, -7.543e-02, -5.036e-02, -6.374e-02), r);\n\tr = MulAdd(s2_8, M4(5.725e-02, -3.547e-02, 3.825e-03, 5.203e-02, 9.482e-02, 4.143e-02, 3.479e-02, 1.198e-02, -7.491e-02, -3.943e-02, 6.759e-02, 2.261e-02, 8.649e-02, 4.145e-02, -1.313e-01, -9.109e-03), r);\n\tr = MulAdd(s3_0, M4(1.255e-01, 1.725e-01, -3.055e-01, -2.458e-01, -8.173e-02, -1.575e-01, -1.474e-01, -7.916e-02, 5.298e-02, 1.096e-01, -8.465e-02, -1.728e-01, -2.717e-02, 4.167e-02, 5.676e-02, -8.003e-02), r);\n\tr = MulAdd(s3_1, M4(7.220e-01, 4.352e-02, -3.478e-02, -8.018e-02, -1.801e-01, -1.849e-02, 2.605e-01, -5.339e-02, 2.113e-01, 1.412e-01, -2.476e-01, 8.284e-02, 4.750e-02, 8.815e-02, 6.282e-02, 1.604e-01), r);\n\tr = MulAdd(s3_2, M4(-4.143e-03, 7.700e-02, -3.138e-01, -2.956e-03, 3.122e-02, 1.719e-01, 6.956e-02, -2.989e-02, 1.377e-01, -4.360e-02, -1.460e-01, 4.187e-02, 6.419e-02, -8.990e-03, 5.880e-02, -5.041e-02), r);\n\tr = MulAdd(s3_3, M4(-1.803e-01, 1.234e-01, 1.836e-02, 1.601e-01, -2.087e-01, -8.290e-02, -2.584e-01, 1.591e-03, 1.041e-01, -7.367e-02, 2.035e-01, 1.431e-01, 3.019e-02, 8.365e-03, -4.384e-03, -6.875e-02), r);\n\tr = MulAdd(s3_4, M4(-1.539e-01, -7.009e-02, 2.010e-02, 2.897e-02, -1.929e-01, 1.293e-01, 9.247e-02, -3.863e-01, 1.431e-02, -1.628e-01, 5.519e-02, 6.598e-02, 1.763e-01, 1.272e-01, -4.278e-02, -3.687e-02), r);\n\tr = MulAdd(s3_5, M4(-1.652e-01, 2.029e-01, 6.375e-02, -5.107e-02, -8.411e-02, -1.921e-01, 8.067e-02, 1.234e-01, 2.371e-02, -1.176e-01, -3.104e-02, -1.161e-01, 1.792e-01, 4.127e-02, 6.943e-02, -2.933e-02), r);\n\tr = MulAdd(s3_6, M4(1.357e-01, -1.176e-01, 1.548e-01, -1.383e-01, -1.343e-02, -2.689e-02, 4.835e-02, -3.363e-02, 1.045e-01, 1.024e-01, 5.824e-04, -9.024e-02, -1.081e-01, 2.408e-02, 9.971e-02, -4.258e-02), r);\n\tr = MulAdd(s3_7, M4(-7.603e-03, -1.731e-01, -2.018e-01, 1.153e-01, 2.150e-02, -1.564e-01, -5.606e-02, 3.453e-02, -5.661e-02, -8.458e-04, 3.539e-02, 2.572e-02, -5.008e-02, 1.264e-03, -1.862e-02, -7.547e-02), r);\n\tr = MulAdd(s3_8, M4(1.869e-01, 1.199e-03, 2.327e-01, 3.469e-02, -2.002e-01, -5.345e-02, -4.882e-02, 1.097e-01, -6.799e-03, -8.035e-02, 6.958e-02, 3.092e-02, 1.516e-01, -2.645e-02, 1.494e-02, -7.511e-02), r);\n\tr = MulAdd(s4_0, M4(-4.345e-02, 1.484e-01, -3.307e-02, -1.443e-01, 3.420e-02, 1.968e-01, 1.511e-01, 1.753e-01, -5.399e-02, 4.521e-02, -8.903e-02, 2.441e-03, -6.223e-02, -1.027e-02, -1.484e-01, -9.376e-02), r);\n\tr = MulAdd(s4_1, M4(9.929e-02, -8.539e-02, -3.433e-02, 1.081e-01, 1.316e-02, -7.666e-02, -9.274e-03, 7.100e-02, 2.924e-02, 1.153e-01, -1.325e-01, 1.813e-01, 1.966e-02, 1.587e-01, -1.035e-01, -1.638e-01), r);\n\tr = MulAdd(s4_2, M4(2.708e-01, -1.017e-02, -2.049e-02, 7.113e-02, 1.763e-02, -1.943e-02, -1.875e-02, -8.156e-03, -8.886e-02, -5.002e-02, -8.962e-02, 2.196e-02, -1.531e-02, 9.384e-03, 1.349e-01, 2.866e-02), r);\n\tr = MulAdd(s4_3, M4(1.972e-01, 3.371e-01, 3.877e-02, -1.122e-01, 1.490e-01, -1.346e-01, 1.772e-02, -1.519e-01, 1.265e-01, 5.859e-02, 1.013e-01, -1.786e-01, 8.366e-02, -2.262e-02, 3.623e-01, -5.263e-02), r);\n\tr = MulAdd(s4_4, M4(-1.303e-01, -1.114e-01, -4.405e-02, -1.153e-02, -4.026e-02, -3.629e-02, -2.858e-02, -1.237e-01, 8.082e-02, -1.807e-01, 1.310e-01, 5.274e-03, -1.675e-01, 2.320e-03, -3.316e-02, 3.970e-01), r);\n\tr = MulAdd(s4_5, M4(3.387e-01, 2.381e-01, -2.503e-01, -2.648e-01, -2.016e-02, 4.843e-02, 1.089e-01, 1.411e-02, 4.083e-02, 1.763e-01, 8.014e-03, -6.033e-02, -9.262e-02, 1.614e-03, -1.027e-01, -5.194e-03), r);\n\tr = MulAdd(s4_6, M4(1.025e-01, -7.352e-02, -1.283e-01, -6.252e-02, 5.032e-02, 1.491e-01, -2.388e-02, -1.248e-02, -6.140e-03, 7.336e-02, -5.229e-03, 8.707e-03, -6.721e-02, 1.560e-01, -9.837e-02, -1.118e-01), r);\n\tr = MulAdd(s4_7, M4(1.544e-01, -7.410e-02, 7.230e-02, -1.136e-01, 4.004e-02, 2.621e-02, -7.795e-02, -1.646e-01, -4.100e-02, -3.569e-02, -2.735e-02, 5.582e-03, -1.329e-01, 3.085e-01, -9.390e-02, -4.508e-02), r);\n\tr = MulAdd(s4_8, M4(5.530e-02, -2.003e-01, -9.624e-03, 5.853e-03, -5.959e-02, -5.444e-02, -5.310e-02, -7.021e-03, -3.355e-03, 9.593e-03, -1.768e-02, 1.376e-01, -2.936e-02, 1.131e-01, 1.300e-02, -5.178e-02), r);\n\tr = MulAdd(s5_0, M4(2.089e-02, 7.627e-02, -5.233e-02, 1.727e-03, -2.312e-02, -2.415e-02, 8.087e-02, 1.105e-01, 5.380e-02, 6.047e-02, 9.878e-02, 1.792e-01, 7.137e-02, -4.554e-02, 5.170e-02, -4.089e-02), r);\n\tr = MulAdd(s5_1, M4(8.278e-02, -2.174e-02, -1.357e-01, 1.360e-01, -9.989e-02, -1.275e-02, -2.446e-02, -1.053e-01, 3.093e-01, 1.811e-01, 1.872e-01, 1.046e-01, 1.129e-01, 9.270e-02, -2.918e-02, -5.317e-02), r);\n\tr = MulAdd(s5_2, M4(-5.674e-02, -5.405e-02, 5.388e-02, -1.392e-01, 1.325e-02, 9.537e-02, 1.691e-02, -4.745e-02, -4.153e-01, -1.919e-01, 7.634e-01, 1.745e-01, -1.831e-02, -6.676e-02, -2.360e-02, 8.935e-02), r);\n\tr = MulAdd(s5_3, M4(-4.224e-02, 1.140e-01, -1.521e-01, 3.822e-02, 1.009e-01, -3.675e-02, 2.922e-02, -4.790e-02, -6.382e-02, -5.778e-02, 1.177e-01, -1.353e-01, 1.389e-02, -6.895e-02, 1.290e-02, -1.372e-01), r);\n\tr = MulAdd(s5_4, M4(1.019e-01, 1.057e-01, 2.167e-01, 5.358e-02, -6.091e-02, -1.346e-01, 8.352e-02, 1.510e-01, 3.459e-01, -3.201e-01, 2.022e-02, 1.186e-01, -7.381e-02, 3.842e-02, -6.365e-03, 4.917e-02), r);\n\tr = MulAdd(s5_5, M4(-2.177e-01, 7.857e-02, -9.041e-03, -4.998e-02, -1.335e-01, -3.964e-02, -1.952e-02, -3.630e-02, -5.583e-02, 3.286e-01, 3.291e-01, 5.013e-02, -8.821e-02, 5.026e-02, -3.832e-02, 8.286e-02), r);\n\tr = MulAdd(s5_6, M4(-9.074e-03, -6.962e-02, 3.649e-02, -7.817e-02, -4.316e-02, -1.803e-02, 7.155e-02, 8.809e-02, 8.425e-02, 2.773e-03, 1.149e-01, -4.313e-02, 1.502e-01, 1.178e-01, 2.887e-02, -9.576e-02), r);\n\tr = MulAdd(s5_7, M4(1.853e-02, 5.554e-02, -1.362e-02, 1.089e-01, 1.525e-02, -3.206e-02, 5.188e-02, -1.121e-01, -3.825e-02, 1.523e-01, -2.211e-01, 1.098e-01, -7.643e-02, -1.417e-01, 2.906e-02, -7.706e-02), r);\n\tr = MulAdd(s5_8, M4(-1.191e-01, 1.898e-02, 1.788e-02, 3.737e-02, 3.536e-03, 6.179e-02, -5.817e-02, -6.689e-02, -1.716e-01, 4.923e-02, 2.359e-01, -1.999e-02, -2.406e-02, 1.206e-01, 7.974e-02, 3.987e-02), r);\n\tr = MulAdd(s6_0, M4(1.564e-01, -4.075e-03, -5.306e-02, -1.509e-01, -2.168e-02, 5.235e-02, 5.114e-02, 2.245e-02, 4.140e-02, 3.912e-03, 4.988e-02, 1.402e-02, -4.568e-03, -4.931e-02, 1.121e-01, 8.629e-03), r);\n\tr = MulAdd(s6_1, M4(1.568e-01, 1.313e-01, 2.104e-01, -1.382e-02, -3.340e-03, -1.998e-01, -4.474e-03, 2.388e-01, 2.306e-02, 7.058e-03, 8.281e-02, 1.972e-01, 5.567e-03, -1.003e-01, 2.785e-02, 1.325e-01), r);\n\tr = MulAdd(s6_2, M4(1.315e-01, 3.444e-03, -1.424e-01, 1.338e-01, 4.565e-02, -1.154e-02, -1.043e-01, -9.730e-02, 4.468e-03, -1.064e-01, -2.686e-03, -2.296e-02, -1.643e-02, 4.290e-02, -2.169e-02, -6.759e-04), r);\n\tr = MulAdd(s6_3, M4(2.111e-01, 7.370e-02, 1.378e-01, 1.076e-01, 3.595e-02, 1.512e-02, 6.182e-02, -8.250e-03, 2.864e-02, -2.418e-02, -5.792e-02, -8.632e-02, 1.329e-02, 1.308e-01, 1.324e-02, -1.909e-01), r);\n\tr = MulAdd(s6_4, M4(2.761e-02, -9.232e-02, -7.072e-02, 1.274e-01, -1.256e-01, -2.173e-02, -2.066e-01, -1.762e-01, -9.244e-02, 6.477e-02, 8.639e-02, -7.299e-02, -2.310e-02, 2.001e-01, -3.782e-02, -1.407e-02), r);\n\tr = MulAdd(s6_5, M4(4.425e-02, 8.803e-02, -2.316e-02, -5.090e-02, 7.087e-02, 1.304e-01, -1.393e-01, 4.976e-02, -1.760e-01, 1.144e-01, 3.124e-02, -1.090e-01, 1.166e-01, -5.929e-02, -1.331e-02, -1.527e-02), r);\n\tr = MulAdd(s6_6, M4(-8.310e-02, -6.365e-02, 5.384e-02, 5.216e-02, -7.219e-02, 1.717e-01, 1.047e-01, 6.846e-03, 2.238e-02, 5.175e-02, -1.590e-01, 4.551e-02, 1.098e-02, 4.537e-02, -1.444e-02, -3.147e-03), r);\n\tr = MulAdd(s6_7, M4(5.190e-02, -1.786e-02, -3.339e-02, 9.677e-02, 8.330e-02, -2.030e-01, -7.853e-02, -3.209e-02, -1.065e-01, 1.165e-01, -7.677e-02, 9.941e-03, 3.012e-02, -9.097e-02, -3.735e-02, -2.587e-03), r);\n\tr = MulAdd(s6_8, M4(4.789e-02, -1.061e-02, -7.132e-02, -5.019e-03, 9.382e-02, 1.028e-01, 1.170e-02, -7.021e-02, 3.152e-02, -7.632e-03, -8.255e-03, 5.736e-03, -4.599e-02, -1.164e-02, 2.437e-02, -5.784e-03), r);\n\tr = MulAdd(s7_0, M4(-6.864e-02, -1.860e-01, 1.525e-02, -1.176e-01, -4.191e-02, 7.252e-02, -9.173e-02, -9.618e-02, -1.308e-01, -6.063e-02, 7.648e-02, 1.441e-01, 1.102e-01, -5.888e-02, -1.897e-01, 1.819e-01), r);\n\tr = MulAdd(s7_1, M4(3.338e-02, 1.776e-02, 1.064e-03, -7.578e-02, 7.495e-02, -6.697e-04, -1.239e-01, 2.847e-02, -2.279e-01, -7.285e-02, 2.095e-01, 2.356e-01, 1.557e-02, -5.456e-02, 1.157e-01, 1.708e-02), r);\n\tr = MulAdd(s7_2, M4(-8.398e-02, -1.220e-02, -9.205e-02, -5.427e-02, -4.993e-02, -3.610e-02, 4.436e-02, -7.408e-02, -4.743e-02, 1.245e-01, -2.716e-02, 9.896e-02, 2.923e-02, 1.461e-01, 2.598e-02, 3.604e-02), r);\n\tr = MulAdd(s7_3, M4(1.723e-01, -3.550e-02, 5.951e-03, 1.184e-01, -1.509e-02, -4.806e-02, -1.090e-01, -6.005e-02, 1.048e-01, 6.892e-02, -2.529e-02, -8.196e-02, -5.180e-02, 1.710e-01, 4.785e-02, 1.247e-01), r);\n\tr = MulAdd(s7_4, M4(-8.579e-03, -2.017e-01, -5.922e-04, -3.642e-02, 1.614e-01, -1.148e-02, -1.775e-01, 3.465e-02, -4.133e-02, -3.195e-01, -1.085e-01, 1.358e-01, -2.694e-01, 5.217e-01, 1.432e-01, 7.962e-02), r);\n\tr = MulAdd(s7_5, M4(7.401e-02, 1.154e-01, -9.251e-02, 6.368e-02, -5.794e-02, -6.226e-02, 1.083e-01, -1.099e-01, 1.265e-01, -1.227e-01, -5.823e-02, -6.630e-02, 1.804e-01, -2.071e-01, -1.919e-01, 1.828e-01), r);\n\tr = MulAdd(s7_6, M4(-1.028e-01, 2.171e-02, -2.036e-02, 2.199e-02, 1.960e-02, -1.265e-01, 8.657e-02, -4.917e-02, -1.625e-01, 2.369e-02, 2.032e-03, 9.057e-02, 1.559e-01, -3.505e-03, -1.472e-01, -4.203e-02), r);\n\tr = MulAdd(s7_7, M4(5.730e-02, 1.471e-02, 3.550e-02, -4.377e-02, 1.763e-01, -1.098e-01, -1.233e-01, -5.830e-02, 5.248e-02, -5.650e-02, -6.141e-02, 4.860e-02, 6.842e-02, 2.463e-02, 1.543e-01, 4.593e-02), r);\n\tr = MulAdd(s7_8, M4(-1.436e-01, 5.420e-02, 5.503e-02, 1.841e-02, 2.891e-02, 1.041e-02, -2.625e-02, -9.218e-03, 2.278e-01, 1.894e-02, 7.521e-02, -7.641e-02, -1.396e-01, -1.410e-01, -4.627e-02, 1.331e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.934e-03, -2.827e-03, 2.210e-02, 1.100e-02 };\n\tr = MulAdd(s0_0, M4(-5.420e-02, -7.304e-02, 5.277e-02, -8.869e-02, 1.686e-01, -1.185e-01, -7.823e-02, -1.419e-02, -7.016e-02, 4.279e-02, 1.397e-01, -6.678e-02, -7.461e-02, 4.892e-02, 1.971e-02, -1.535e-01), r);\n\tr = MulAdd(s0_1, M4(9.894e-02, 9.302e-02, 2.232e-01, 1.508e-01, 9.585e-02, -9.040e-02, 6.740e-02, 1.110e-01, 4.021e-02, -1.659e-01, 6.178e-03, 1.271e-01, -1.103e-01, -3.351e-02, 1.574e-02, -2.217e-01), r);\n\tr = MulAdd(s0_2, M4(3.914e-02, -9.947e-02, 1.792e-01, 2.109e-01, 3.220e-02, 5.070e-02, 3.215e-03, 7.735e-02, 1.384e-01, 6.271e-02, 1.338e-01, 1.247e-01, 7.330e-03, -5.024e-02, 1.091e-01, -3.214e-03), r);\n\tr = MulAdd(s0_3, M4(-6.904e-02, 6.638e-02, 1.790e-02, 1.519e-01, 3.409e-02, -1.532e-01, 2.553e-02, -2.543e-02, -1.985e-01, 1.071e-01, -2.576e-01, 3.422e-02, -5.628e-02, 5.652e-02, -1.303e-02, -7.028e-03), r);\n\tr = MulAdd(s0_4, M4(1.500e-01, 2.434e-01, -1.500e-02, 3.231e-01, -1.509e-01, -7.602e-03, -4.109e-02, -9.278e-02, -1.289e-01, -6.994e-02, -1.377e-01, 6.863e-03, 6.510e-02, 3.974e-01, 2.942e-01, -5.929e-02), r);\n\tr = MulAdd(s0_5, M4(6.724e-02, 8.496e-02, 3.149e-01, 2.017e-01, -1.027e-01, -1.890e-02, 3.621e-02, -1.653e-02, 1.159e-02, -1.567e-02, -9.433e-02, -3.668e-02, -1.123e-01, -1.213e-01, -9.673e-03, 1.116e-01), r);\n\tr = MulAdd(s0_6, M4(-8.626e-03, -1.019e-01, 3.571e-02, -1.988e-02, 2.925e-01, -8.985e-02, -1.971e-01, -3.109e-02, -6.574e-02, 7.465e-02, -8.963e-02, 1.973e-02, -4.528e-02, -7.994e-02, -5.249e-02, -1.425e-01), r);\n\tr = MulAdd(s0_7, M4(-3.254e-02, -1.168e-01, -8.821e-02, -7.827e-02, -1.321e-01, -5.463e-02, -5.164e-02, -1.108e-01, 5.041e-02, 4.703e-02, -3.961e-02, -1.529e-01, 6.714e-02, -1.969e-02, -7.377e-02, -9.472e-02), r);\n\tr = MulAdd(s0_8, M4(3.334e-03, 1.417e-02, 8.190e-02, -1.376e-04, -2.449e-02, 4.059e-02, 8.879e-03, -4.109e-02, 8.034e-02, 6.292e-02, -1.015e-01, 4.121e-02, -1.284e-01, -1.013e-01, -6.948e-02, 7.312e-02), r);\n\tr = MulAdd(s1_0, M4(-2.675e-02, 1.906e-02, 2.541e-02, -2.440e-02, 5.500e-02, -4.655e-02, 6.749e-03, -3.896e-02, 5.153e-03, 3.243e-02, -8.898e-02, 3.766e-02, 9.183e-02, -3.276e-02, -4.676e-02, 1.069e-01), r);\n\tr = MulAdd(s1_1, M4(-2.266e-02, 1.928e-01, 9.742e-02, 1.642e-02, 8.187e-02, -9.148e-02, 6.413e-02, 1.039e-01, 1.705e-02, -9.384e-02, 5.862e-02, -4.673e-02, -9.744e-02, -6.756e-02, -3.035e-02, -1.984e-04), r);\n\tr = MulAdd(s1_2, M4(-1.107e-01, -7.741e-02, 3.105e-02, 4.790e-02, 6.117e-02, 6.582e-02, 1.098e-02, 4.631e-02, 6.814e-02, 4.898e-02, 1.393e-01, 5.313e-02, 1.945e-01, -8.519e-02, -2.937e-02, 1.174e-01), r);\n\tr = MulAdd(s1_3, M4(-6.930e-02, -3.082e-02, -1.272e-02, -3.149e-02, 1.487e-01, 6.645e-02, 5.823e-02, -9.166e-02, -2.352e-02, 7.973e-02, -1.351e-01, -2.607e-02, 1.642e-02, 2.832e-02, 3.065e-02, -1.574e-01), r);\n\tr = MulAdd(s1_4, M4(-1.663e-02, 8.963e-02, -1.319e-01, -7.464e-02, -1.524e-01, 3.038e-02, -4.666e-02, 4.148e-02, -1.216e-01, -1.376e-01, 3.993e-02, 8.549e-02, -1.050e-01, 5.940e-02, 1.719e-03, 7.842e-02), r);\n\tr = MulAdd(s1_5, M4(4.745e-02, -9.467e-02, 4.188e-02, -1.220e-01, 2.856e-02, -2.749e-02, -2.924e-02, 1.370e-02, -1.048e-04, 1.409e-02, 1.199e-01, 4.892e-02, 9.664e-03, 9.891e-02, -3.513e-02, 4.525e-02), r);\n\tr = MulAdd(s1_6, M4(3.134e-02, 6.452e-03, 2.488e-02, -9.823e-02, 1.444e-01, -8.021e-02, 5.082e-03, -1.454e-02, 6.573e-03, -5.563e-02, 3.470e-02, 2.968e-02, -1.047e-01, 3.429e-02, -4.992e-02, -2.500e-02), r);\n\tr = MulAdd(s1_7, M4(-8.099e-02, -1.564e-03, -1.092e-01, -8.339e-02, -1.682e-01, 1.413e-02, 3.937e-02, -1.882e-02, -3.873e-02, 7.467e-02, 4.002e-02, 3.199e-02, -2.999e-03, 6.933e-02, -5.280e-03, 4.954e-02), r);\n\tr = MulAdd(s1_8, M4(1.375e-02, 3.525e-02, 2.171e-02, 5.732e-03, -7.219e-02, 8.751e-03, -2.031e-02, 1.222e-01, 2.149e-02, 1.194e-02, -2.729e-02, -2.466e-02, 8.901e-03, 8.588e-02, -1.194e-01, 4.372e-02), r);\n\tr = MulAdd(s2_0, M4(3.096e-02, -1.865e-02, 8.717e-03, -4.015e-02, 1.252e-02, 7.766e-04, -4.010e-02, 2.630e-02, 2.955e-02, 3.460e-02, 4.094e-02, -3.779e-02, 9.973e-02, -8.498e-02, 8.707e-02, 6.292e-02), r);\n\tr = MulAdd(s2_1, M4(-5.360e-02, -1.160e-01, 5.175e-02, -1.341e-02, 4.235e-02, -2.533e-02, -6.446e-02, -6.719e-02, -2.407e-02, -7.542e-02, -4.934e-02, -2.011e-02, 2.883e-02, 5.149e-02, 7.340e-02, -1.130e-01), r);\n\tr = MulAdd(s2_2, M4(5.325e-02, 2.018e-02, -2.125e-02, -2.671e-02, -1.863e-02, -5.310e-02, -5.639e-02, 2.808e-02, 9.939e-02, -1.404e-02, -6.949e-02, 5.210e-02, -2.614e-02, -6.005e-02, -1.941e-01, 3.242e-02), r);\n\tr = MulAdd(s2_3, M4(-2.594e-02, -8.161e-02, -6.955e-02, 3.421e-02, 4.341e-02, -8.308e-02, 1.558e-01, -6.705e-02, 3.444e-02, 1.463e-01, -3.094e-02, 1.097e-01, -1.576e-01, 1.454e-01, -4.296e-02, 4.286e-02), r);\n\tr = MulAdd(s2_4, M4(1.169e-01, 1.054e-01, -5.935e-02, 1.220e-01, 1.240e-01, -8.460e-02, 4.287e-02, -3.474e-02, -1.073e-01, 6.625e-02, -1.882e-01, 7.456e-02, 1.547e-01, 3.164e-01, -5.810e-02, -6.758e-03), r);\n\tr = MulAdd(s2_5, M4(-4.905e-02, 1.096e-01, 3.387e-02, 1.092e-01, -2.121e-01, 8.539e-03, -9.386e-02, -3.087e-02, -6.711e-02, 1.921e-02, -2.491e-02, 1.355e-01, -2.342e-01, 2.275e-02, -1.088e-01, 3.979e-02), r);\n\tr = MulAdd(s2_6, M4(2.875e-02, -3.923e-02, 5.558e-02, 6.616e-02, 2.325e-02, 3.941e-02, 8.712e-02, 4.491e-02, 9.766e-02, 7.752e-03, -4.710e-02, -2.966e-02, -5.660e-03, -5.816e-03, 1.293e-01, 7.674e-02), r);\n\tr = MulAdd(s2_7, M4(3.993e-02, 4.968e-02, 3.402e-02, -5.904e-02, -3.339e-02, 4.979e-02, 1.015e-01, 3.036e-02, -6.656e-02, -2.128e-02, -3.100e-02, -1.940e-01, -4.330e-04, 3.630e-02, 2.386e-01, 2.487e-03), r);\n\tr = MulAdd(s2_8, M4(-2.667e-03, 4.797e-02, -3.047e-02, 2.558e-02, -4.603e-02, 9.783e-02, 5.871e-03, -1.708e-02, -1.082e-01, 1.274e-01, 2.123e-02, -9.464e-02, 2.113e-02, -2.157e-02, 5.258e-02, 7.613e-02), r);\n\tr = MulAdd(s3_0, M4(2.095e-01, -2.461e-01, 2.168e-02, -4.770e-01, -2.994e-02, -7.197e-02, -1.038e-02, 2.126e-01, -5.237e-02, -1.790e-01, 7.885e-02, -2.092e-01, 4.132e-02, -4.664e-03, 2.313e-02, -1.060e-01), r);\n\tr = MulAdd(s3_1, M4(1.656e-01, 4.463e-01, 3.476e-01, -6.969e-02, 9.353e-02, -8.283e-02, -4.747e-02, 5.884e-02, -1.672e-01, -2.816e-02, -1.464e-01, 2.782e-02, 8.619e-02, 5.981e-02, -1.124e-02, -2.580e-02), r);\n\tr = MulAdd(s3_2, M4(-5.303e-02, -3.766e-02, 7.818e-02, -6.730e-02, 4.065e-02, -8.358e-02, -2.606e-02, -5.207e-02, 3.543e-02, -1.616e-02, -5.832e-02, -4.686e-02, 1.371e-03, 6.335e-04, -1.149e-01, -8.662e-03), r);\n\tr = MulAdd(s3_3, M4(-2.392e-02, 4.994e-02, -2.354e-01, -4.360e-01, 2.895e-02, -7.065e-02, 1.539e-01, 1.482e-01, 1.209e-01, 7.392e-02, -3.122e-02, 1.076e-01, -3.736e-02, 2.119e-02, -1.690e-02, 7.682e-02), r);\n\tr = MulAdd(s3_4, M4(-5.199e-02, 4.982e-01, -4.490e-02, -3.677e-01, 2.666e-01, 2.291e-01, 2.176e-01, 4.174e-01, -7.979e-02, -1.923e-01, -1.458e-01, 2.467e-01, 1.223e-01, 1.135e-01, -3.184e-02, 7.319e-02), r);\n\tr = MulAdd(s3_5, M4(-2.068e-01, 1.166e-01, 1.265e-01, 1.820e-01, -4.397e-02, 1.649e-01, 7.162e-02, -1.500e-01, -9.937e-02, -3.798e-02, -7.080e-02, 4.055e-02, -2.191e-02, -3.392e-02, -9.337e-02, -2.936e-02), r);\n\tr = MulAdd(s3_6, M4(8.804e-02, -3.708e-02, 8.988e-02, 5.097e-02, 6.321e-02, -9.117e-02, 5.456e-02, 1.528e-01, 1.286e-01, 1.083e-01, 8.429e-02, 9.675e-02, 7.243e-02, 1.105e-02, -6.020e-02, -1.369e-02), r);\n\tr = MulAdd(s3_7, M4(1.798e-02, 7.436e-02, -4.497e-02, 9.345e-02, 1.947e-01, 4.985e-03, 1.264e-01, 3.177e-01, -1.771e-01, -7.012e-02, -6.451e-02, 4.775e-02, -8.161e-03, 7.974e-02, 1.857e-02, 1.192e-02), r);\n\tr = MulAdd(s3_8, M4(-1.301e-02, -2.212e-01, -5.738e-02, 1.239e-01, -1.303e-01, -1.040e-02, -1.057e-01, 6.472e-02, -1.315e-01, 5.404e-02, 1.043e-01, -2.273e-02, 4.702e-02, 2.117e-02, -2.228e-02, 7.511e-02), r);\n\tr = MulAdd(s4_0, M4(2.086e-02, -1.315e-01, -8.666e-02, -4.610e-02, 8.425e-02, 4.468e-02, -2.225e-03, -7.460e-02, 2.345e-02, 2.699e-02, 1.948e-02, -9.559e-03, 3.792e-02, -1.551e-02, -3.949e-02, -8.766e-02), r);\n\tr = MulAdd(s4_1, M4(3.962e-02, -2.166e-01, -5.640e-03, 2.654e-02, -7.836e-03, -9.792e-02, 1.355e-02, 1.633e-02, 9.491e-02, -8.847e-02, 5.093e-02, 7.195e-02, -4.667e-02, -2.085e-01, 9.252e-02, 1.966e-02), r);\n\tr = MulAdd(s4_2, M4(4.441e-02, 1.353e-01, 3.278e-02, 9.538e-02, 6.115e-02, 5.018e-02, 1.687e-01, 4.744e-02, -2.649e-02, -6.554e-02, -1.157e-01, -2.995e-02, 7.393e-02, 1.172e-02, -1.931e-02, -2.015e-02), r);\n\tr = MulAdd(s4_3, M4(6.047e-02, 1.781e-01, 2.752e-02, 1.275e-01, 2.304e-02, -3.967e-03, -1.261e-01, 1.192e-01, -6.222e-02, -5.305e-02, 2.415e-02, 6.835e-02, -4.043e-02, 1.336e-01, -2.237e-01, 2.707e-01), r);\n\tr = MulAdd(s4_4, M4(8.054e-02, -6.908e-02, 9.448e-02, 2.953e-02, 7.394e-02, -5.142e-02, 4.425e-02, 1.082e-01, 1.580e-01, -6.362e-02, 1.552e-02, 2.589e-02, -2.180e-01, 1.362e-01, -1.225e-01, -1.116e-01), r);\n\tr = MulAdd(s4_5, M4(3.335e-02, -3.172e-01, 2.059e-01, -9.299e-02, 1.196e-01, -6.233e-02, 1.577e-01, -9.054e-03, -1.706e-01, 6.904e-02, -1.745e-02, -5.810e-02, -1.765e-02, -6.382e-02, 4.746e-02, -1.047e-01), r);\n\tr = MulAdd(s4_6, M4(2.181e-01, 2.339e-02, -1.321e-02, 2.600e-02, -6.821e-02, -4.525e-02, 1.166e-01, -1.033e-01, 1.230e-03, -5.596e-02, 4.015e-02, 6.311e-02, 2.021e-01, -1.335e-01, 1.062e-02, -1.941e-01), r);\n\tr = MulAdd(s4_7, M4(-1.137e-01, -3.561e-02, 3.031e-03, 3.526e-02, -4.821e-02, 3.615e-02, -3.799e-02, -1.222e-01, -5.634e-02, 9.488e-02, 3.017e-02, 5.925e-03, 1.082e-01, -1.733e-01, -8.112e-02, -2.205e-01), r);\n\tr = MulAdd(s4_8, M4(-2.704e-02, 5.156e-02, -3.898e-02, -5.168e-02, 6.469e-02, 9.312e-02, 2.891e-01, 5.176e-02, -7.136e-02, 3.696e-02, 6.148e-02, -1.558e-01, 1.179e-01, -1.230e-01, -2.152e-03, -3.342e-03), r);\n\tr = MulAdd(s5_0, M4(3.099e-02, -5.721e-02, -5.837e-02, 3.273e-02, 4.061e-02, 6.728e-02, -6.397e-02, -1.035e-02, -8.410e-03, 1.368e-01, 6.434e-02, -2.079e-01, -7.008e-02, 5.762e-02, 6.261e-02, -2.827e-02), r);\n\tr = MulAdd(s5_1, M4(-9.156e-02, 4.647e-02, 3.607e-02, -4.526e-02, 1.105e-02, 1.226e-02, -1.190e-01, -2.288e-02, -3.213e-01, 1.775e-01, -5.493e-02, -4.106e-02, -8.115e-03, -3.186e-02, -5.598e-03, 8.977e-02), r);\n\tr = MulAdd(s5_2, M4(-2.462e-02, 5.685e-02, 1.396e-01, 1.148e-01, 9.165e-02, -2.105e-02, -1.515e-02, -2.034e-02, 2.218e-01, 5.889e-01, -2.518e-01, -2.986e-01, 1.975e-02, 1.469e-02, 4.941e-02, 8.084e-02), r);\n\tr = MulAdd(s5_3, M4(-1.178e-02, -2.493e-02, 7.091e-02, -1.486e-01, -5.103e-02, 1.093e-01, -5.768e-02, 1.968e-01, -1.203e-01, 1.732e-01, -9.788e-02, 8.279e-02, -1.132e-01, 1.107e-01, 5.348e-02, 1.640e-01), r);\n\tr = MulAdd(s5_4, M4(1.597e-01, 1.346e-01, 8.000e-02, -6.103e-02, 5.216e-02, 1.608e-02, 1.724e-02, -1.406e-01, 1.497e-02, 1.972e-02, -4.815e-01, 3.832e-02, 2.854e-03, 5.729e-02, 3.926e-02, 1.587e-01), r);\n\tr = MulAdd(s5_5, M4(-1.130e-01, 5.619e-02, 4.022e-02, 7.986e-02, 3.390e-02, -5.944e-02, -7.646e-02, -8.342e-02, -2.934e-01, 5.609e-02, -9.369e-02, -2.271e-01, 1.012e-01, 2.281e-02, 3.580e-02, 3.448e-02), r);\n\tr = MulAdd(s5_6, M4(-8.420e-02, 1.951e-02, -6.040e-02, 3.208e-02, -2.316e-02, 4.509e-02, -4.663e-03, 4.133e-02, 9.793e-02, -1.538e-01, -1.707e-01, 3.171e-02, -1.908e-02, -1.000e-01, -1.606e-02, 6.926e-02), r);\n\tr = MulAdd(s5_7, M4(1.478e-02, 1.569e-01, 3.403e-02, -1.223e-01, -2.366e-05, 1.023e-01, -7.845e-02, -4.515e-02, -1.406e-01, 5.345e-02, 1.959e-02, 6.173e-02, -1.724e-01, -2.036e-01, 9.326e-02, 6.862e-03), r);\n\tr = MulAdd(s5_8, M4(1.094e-02, 1.636e-01, 7.616e-02, 2.121e-02, 3.014e-02, -3.134e-02, -1.714e-01, 2.918e-02, 1.450e-02, 1.552e-01, 1.083e-02, -1.165e-01, 1.077e-01, 3.238e-02, 1.702e-02, 4.353e-04), r);\n\tr = MulAdd(s6_0, M4(5.214e-02, -2.078e-02, 3.474e-01, -3.284e-02, 5.659e-02, 1.059e-02, 3.253e-02, 2.559e-02, -8.278e-02, 3.339e-02, -4.612e-02, 2.310e-02, -7.745e-03, 8.922e-03, -6.390e-03, 3.328e-02), r);\n\tr = MulAdd(s6_1, M4(2.072e-01, 1.430e-01, 1.083e-01, 3.261e-01, -1.827e-02, 4.296e-02, -4.245e-02, -1.057e-01, -6.319e-04, 1.182e-01, 7.292e-02, 1.245e-02, 4.914e-02, 1.210e-01, -1.695e-02, -1.774e-02), r);\n\tr = MulAdd(s6_2, M4(7.776e-02, 1.307e-01, 2.705e-01, 2.352e-01, -2.479e-02, -4.149e-03, -4.609e-02, 5.144e-02, 1.693e-02, 5.089e-03, 3.080e-02, -1.144e-01, -7.009e-02, 7.680e-02, 5.151e-02, -1.967e-02), r);\n\tr = MulAdd(s6_3, M4(-7.626e-02, -9.855e-02, 1.796e-01, -1.230e-01, 1.587e-01, 2.963e-02, -2.519e-02, 7.055e-02, 3.005e-02, 1.080e-01, -5.835e-02, 6.189e-03, 5.797e-02, -1.002e-01, -3.244e-02, 1.482e-02), r);\n\tr = MulAdd(s6_4, M4(1.329e-02, -1.075e-01, -4.617e-02, -3.313e-01, -7.339e-02, -1.085e-01, 3.176e-02, -1.469e-01, 4.723e-02, 4.985e-02, -1.166e-01, -5.758e-02, 5.751e-02, -1.193e-01, -1.725e-01, -7.011e-02), r);\n\tr = MulAdd(s6_5, M4(8.138e-02, -7.430e-02, 6.983e-02, -2.314e-01, -7.402e-03, -2.964e-04, 4.611e-02, 4.329e-03, 8.225e-02, 5.095e-02, -2.180e-02, 6.560e-02, 5.276e-03, -6.051e-02, 1.080e-02, -1.288e-01), r);\n\tr = MulAdd(s6_6, M4(8.902e-02, 1.368e-02, 1.088e-01, 1.724e-01, -3.034e-02, 2.497e-02, 2.480e-02, 1.805e-01, 5.329e-02, -1.677e-02, -4.939e-02, -8.117e-02, -5.250e-02, 6.730e-03, -1.006e-02, -1.544e-01), r);\n\tr = MulAdd(s6_7, M4(-7.771e-02, 5.097e-02, 1.006e-01, 3.524e-01, 9.951e-04, -6.529e-02, -1.195e-01, -3.114e-02, 4.553e-02, -1.189e-01, -4.951e-02, 1.090e-01, 1.217e-03, 2.041e-02, -6.306e-02, -1.119e-01), r);\n\tr = MulAdd(s6_8, M4(1.128e-03, 5.455e-02, 1.584e-01, 6.287e-03, 1.108e-02, 1.749e-02, 5.138e-02, 1.153e-01, 6.400e-02, -9.560e-02, 7.986e-02, -2.861e-02, 5.823e-02, -6.431e-03, -2.695e-02, -4.033e-02), r);\n\tr = MulAdd(s7_0, M4(8.310e-02, -5.055e-02, -7.900e-02, -6.566e-02, 8.914e-02, -9.624e-02, -9.637e-02, -3.749e-02, -7.631e-02, -1.133e-01, -1.827e-02, -1.260e-01, -6.900e-02, -1.341e-02, 5.361e-02, -1.120e-01), r);\n\tr = MulAdd(s7_1, M4(-1.704e-02, 1.459e-02, 2.970e-02, -4.414e-02, -6.875e-03, -2.423e-01, -1.020e-01, 3.640e-02, -1.879e-01, 1.759e-02, 9.057e-02, 5.173e-02, -4.979e-02, 1.295e-01, 1.190e-01, -7.415e-02), r);\n\tr = MulAdd(s7_2, M4(-1.018e-01, -3.924e-03, 5.875e-02, 9.527e-02, -5.239e-02, -6.705e-02, 1.451e-03, 1.266e-01, -2.502e-02, 1.718e-02, 1.324e-01, 1.751e-01, 4.871e-02, -9.750e-02, 2.023e-01, 5.529e-02), r);\n\tr = MulAdd(s7_3, M4(-6.367e-02, -3.484e-02, -1.307e-01, 6.098e-02, -8.726e-02, -1.461e-03, 7.463e-02, -5.403e-02, -1.290e-02, -3.601e-02, 7.717e-02, -1.176e-01, -2.167e-01, -1.133e-01, 1.845e-01, 5.091e-02), r);\n\tr = MulAdd(s7_4, M4(6.423e-03, 9.665e-02, -1.285e-02, -1.315e-01, -8.173e-02, -1.755e-01, -3.384e-02, -1.216e-01, -4.928e-02, 9.972e-02, -1.378e-01, -7.535e-02, -1.835e-01, 3.639e-01, -1.728e-01, 1.934e-02), r);\n\tr = MulAdd(s7_5, M4(2.944e-02, 2.167e-02, -1.027e-01, 2.432e-02, -1.126e-01, -2.286e-01, 1.568e-01, -1.957e-03, 5.846e-02, 1.433e-01, 6.377e-02, -1.225e-02, 1.019e-01, -1.250e-01, 2.458e-01, 1.341e-01), r);\n\tr = MulAdd(s7_6, M4(1.512e-02, -2.239e-02, -6.181e-02, -1.150e-01, -5.383e-02, 6.533e-02, 2.561e-02, -8.978e-02, -7.917e-02, -7.980e-03, 9.308e-02, -1.176e-02, -1.974e-01, 6.040e-02, 1.649e-01, -1.820e-01), r);\n\tr = MulAdd(s7_7, M4(7.647e-03, -6.300e-03, -9.134e-02, 2.675e-02, 1.495e-01, 8.440e-04, -3.061e-02, -1.085e-01, 7.143e-03, -1.213e-01, -1.140e-01, -2.759e-02, 1.342e-01, 1.622e-01, 1.045e-01, -2.112e-01), r);\n\tr = MulAdd(s7_8, M4(6.856e-02, -3.692e-02, -3.924e-02, 8.596e-03, -1.565e-01, -6.137e-03, 1.368e-01, 1.838e-01, 9.995e-03, -7.011e-02, 1.033e-01, -9.436e-02, -2.162e-02, -1.315e-01, 2.524e-01, 1.174e-02), r);\n\treturn r;\n}\n\nvoid Pass10(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 11\n//!DESC conv10\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -9.248e-03, 2.579e-02, -3.134e-03, 9.669e-03 };\n\tr = MulAdd(s0_0, M4(-4.830e-02, -8.822e-02, -6.993e-02, 1.594e-02, 3.621e-02, 9.357e-02, -1.050e-01, 9.606e-02, -2.030e-01, -1.800e-01, -7.986e-02, 5.909e-02, -7.205e-02, 2.962e-03, 7.652e-03, 4.839e-02), r);\n\tr = MulAdd(s0_1, M4(2.639e-02, -8.383e-02, 3.581e-02, -5.131e-02, -1.163e-01, -8.054e-02, 1.334e-01, -5.472e-02, -5.489e-02, -2.548e-01, -2.275e-02, 9.308e-02, 2.770e-02, -1.546e-01, 3.333e-02, 4.518e-02), r);\n\tr = MulAdd(s0_2, M4(2.327e-02, -1.763e-02, -3.695e-02, -6.094e-02, 1.823e-02, -2.793e-02, -3.985e-03, 1.542e-02, 1.257e-01, -2.132e-01, 5.117e-02, 1.349e-01, -3.077e-01, -3.700e-03, -1.768e-01, 6.746e-02), r);\n\tr = MulAdd(s0_3, M4(-6.500e-03, 1.339e-01, 1.237e-02, 8.131e-02, 8.515e-03, 1.218e-01, 5.627e-02, -1.326e-01, -3.635e-02, -5.367e-02, 1.512e-03, 1.246e-01, -1.685e-01, -4.678e-02, 4.310e-02, 8.479e-02), r);\n\tr = MulAdd(s0_4, M4(4.810e-02, -2.654e-02, 9.668e-02, 3.588e-02, 2.012e-02, -1.805e-02, -4.505e-02, 1.030e-01, -2.129e-01, -1.533e-01, -2.805e-02, -5.564e-02, -1.120e-01, -9.410e-03, -9.620e-02, 1.147e-01), r);\n\tr = MulAdd(s0_5, M4(9.775e-02, 7.503e-02, 9.817e-02, -1.275e-02, 9.842e-02, 5.709e-02, 2.653e-02, 2.764e-01, 2.105e-01, -2.408e-01, -1.928e-02, 1.570e-01, -1.637e-01, -1.838e-01, 2.108e-02, 1.434e-01), r);\n\tr = MulAdd(s0_6, M4(1.222e-01, 9.284e-02, -2.491e-02, -4.565e-02, -5.174e-02, -2.526e-02, 4.163e-02, -4.810e-02, 1.309e-01, 7.007e-02, -1.747e-02, 6.446e-02, -1.266e-01, 6.643e-02, -9.471e-02, -4.707e-02), r);\n\tr = MulAdd(s0_7, M4(4.659e-03, -2.968e-02, 2.761e-02, 2.542e-02, -1.407e-02, -7.931e-03, -6.463e-02, -2.256e-02, -4.864e-02, -8.343e-02, 1.271e-01, 7.443e-03, 2.849e-02, 3.836e-02, -1.504e-01, -1.918e-02), r);\n\tr = MulAdd(s0_8, M4(-5.559e-02, 3.812e-02, -6.654e-02, 2.816e-02, 9.087e-02, 3.775e-02, -5.950e-02, -9.644e-02, 1.381e-01, 3.020e-02, 8.428e-02, 6.284e-02, 1.957e-02, 1.963e-01, -1.774e-02, -8.771e-02), r);\n\tr = MulAdd(s1_0, M4(3.828e-02, -2.100e-02, -6.482e-02, -3.354e-03, -1.010e-01, -2.989e-02, 5.974e-03, 6.596e-02, -1.756e-02, -2.670e-02, 1.149e-02, 7.257e-02, 8.638e-02, 3.747e-02, 1.499e-01, -5.391e-02), r);\n\tr = MulAdd(s1_1, M4(-9.688e-02, 3.194e-02, 2.861e-02, -3.458e-02, 1.374e-01, 1.100e-01, 1.814e-01, -2.460e-03, 6.353e-02, 1.382e-01, -3.290e-02, 6.976e-02, 4.006e-02, -4.895e-03, 9.192e-02, 2.136e-02), r);\n\tr = MulAdd(s1_2, M4(-1.040e-01, -2.338e-02, -6.577e-02, 6.761e-02, -7.097e-02, -8.443e-02, 1.492e-01, 3.257e-02, -3.813e-02, 8.250e-03, 4.018e-03, -3.037e-03, -5.739e-02, 7.913e-02, 9.387e-02, -6.153e-03), r);\n\tr = MulAdd(s1_3, M4(-9.678e-02, -4.993e-02, 1.814e-02, 1.246e-01, 4.507e-02, -5.729e-02, -6.812e-02, 2.663e-02, 5.196e-02, 1.187e-01, -3.827e-02, -1.047e-01, -4.993e-02, -4.158e-02, 1.339e-01, -7.618e-03), r);\n\tr = MulAdd(s1_4, M4(7.790e-02, 1.260e-01, 1.135e-01, 2.632e-01, -1.092e-01, -1.550e-02, 1.861e-01, -7.397e-02, -8.339e-02, -1.461e-02, 1.268e-01, 8.259e-02, -1.115e-01, 4.943e-03, 3.752e-02, 2.763e-01), r);\n\tr = MulAdd(s1_5, M4(-1.888e-01, 1.706e-01, 7.704e-02, 1.294e-01, 8.372e-02, -4.005e-03, -9.525e-02, -4.460e-02, 5.904e-02, 1.120e-01, -1.089e-01, 1.037e-01, 6.043e-02, -1.171e-01, -1.444e-02, 1.108e-02), r);\n\tr = MulAdd(s1_6, M4(5.883e-02, -3.481e-02, 4.111e-02, -1.202e-01, -2.393e-02, -2.932e-02, 3.660e-03, 3.720e-02, 1.081e-01, 7.342e-02, -6.897e-02, 2.116e-02, 1.964e-01, -2.016e-02, 1.181e-02, -1.616e-01), r);\n\tr = MulAdd(s1_7, M4(-1.357e-01, -1.062e-02, -1.336e-01, -6.073e-02, -9.438e-02, -8.379e-02, 8.636e-02, 1.988e-01, -2.967e-02, 2.383e-02, 9.142e-02, -1.144e-01, 5.726e-02, 3.158e-02, -6.711e-02, -7.534e-02), r);\n\tr = MulAdd(s1_8, M4(-2.777e-01, -3.806e-02, 1.198e-02, -1.016e-02, -5.348e-02, -1.018e-01, 7.266e-02, 7.254e-03, 4.831e-02, 3.528e-02, -6.299e-02, -1.290e-01, -6.714e-02, 3.922e-02, 5.039e-03, 7.812e-02), r);\n\tr = MulAdd(s2_0, M4(7.907e-02, -1.144e-02, 6.876e-03, 3.150e-02, 8.083e-02, -4.558e-02, 2.990e-02, -9.142e-02, -4.976e-02, 4.591e-02, -3.455e-02, -4.650e-02, 1.029e-02, 7.486e-02, 1.384e-01, 8.629e-02), r);\n\tr = MulAdd(s2_1, M4(-3.017e-02, -6.396e-02, -2.038e-01, 8.795e-02, -5.005e-02, -7.113e-02, 6.117e-02, 6.995e-02, 6.845e-02, 2.185e-01, 1.031e-01, -7.041e-02, -1.091e-01, -2.143e-02, -6.323e-02, 5.283e-02), r);\n\tr = MulAdd(s2_2, M4(-1.305e-01, -5.319e-02, -1.015e-02, 8.036e-02, -3.181e-02, -7.211e-02, -1.132e-01, -6.489e-02, -9.395e-02, -1.447e-02, -2.309e-02, 1.443e-02, -6.069e-03, 8.539e-02, -8.914e-03, 1.129e-02), r);\n\tr = MulAdd(s2_3, M4(4.047e-02, 1.181e-01, -7.255e-02, -5.920e-02, -1.926e-03, 1.544e-01, -2.920e-02, 2.937e-02, -9.288e-02, 6.596e-02, -1.287e-02, 1.706e-01, -1.099e-02, -4.462e-02, 1.277e-01, 6.293e-02), r);\n\tr = MulAdd(s2_4, M4(-1.109e-01, 1.195e-01, -2.507e-01, -5.579e-02, -3.435e-02, -1.160e-01, -2.351e-01, -5.408e-02, -2.173e-01, 5.764e-02, 4.518e-02, -1.061e-01, -9.047e-02, -3.664e-01, -1.069e-02, 1.379e-01), r);\n\tr = MulAdd(s2_5, M4(-6.895e-02, 6.064e-02, 1.544e-01, 4.203e-02, -3.691e-02, 6.640e-03, -4.824e-02, -1.499e-01, 3.623e-02, -1.206e-01, -1.845e-02, 9.345e-02, 4.797e-02, -1.096e-01, 2.049e-02, 7.366e-02), r);\n\tr = MulAdd(s2_6, M4(7.105e-02, 2.269e-02, -1.065e-01, -4.301e-02, 6.915e-02, 2.761e-02, -1.506e-01, 1.086e-03, -3.163e-02, -3.753e-02, 6.290e-02, -1.198e-02, -6.298e-02, -6.580e-02, 6.394e-02, 2.602e-01), r);\n\tr = MulAdd(s2_7, M4(-1.115e-01, -4.285e-02, -9.923e-03, -1.589e-02, -2.703e-01, 2.065e-02, 5.478e-02, -1.091e-01, 4.712e-02, 8.844e-02, -1.995e-01, -2.274e-01, -1.262e-01, -1.413e-01, 1.099e-01, -1.430e-01), r);\n\tr = MulAdd(s2_8, M4(1.737e-02, -3.458e-03, 1.451e-02, -2.577e-02, 7.890e-02, -1.703e-02, -7.593e-02, 7.170e-02, -7.863e-02, -8.196e-03, 6.095e-02, 1.259e-01, -3.556e-02, -3.050e-02, 2.776e-03, 7.601e-02), r);\n\tr = MulAdd(s3_0, M4(-1.945e-01, -1.678e-01, -4.334e-02, 1.725e-02, 1.183e-01, -2.776e-02, -1.773e-02, -3.394e-02, -1.384e-02, 3.826e-02, -6.860e-02, 2.523e-02, -4.153e-02, 7.668e-02, -1.258e-02, 1.143e-02), r);\n\tr = MulAdd(s3_1, M4(1.460e-01, -1.318e-01, 2.057e-01, -1.582e-01, -1.335e-01, 7.058e-02, 1.566e-02, -5.043e-02, 3.790e-02, 5.916e-02, 6.523e-03, -1.478e-01, 4.719e-02, 3.452e-02, 4.558e-02, -2.316e-02), r);\n\tr = MulAdd(s3_2, M4(-1.304e-01, -1.636e-01, 8.311e-02, -6.273e-02, 1.521e-01, 2.406e-04, -5.286e-02, -1.113e-02, 4.382e-02, 1.461e-03, -1.054e-01, 2.726e-02, -2.819e-02, 8.521e-02, 4.887e-03, -8.432e-02), r);\n\tr = MulAdd(s3_3, M4(-5.002e-02, -4.256e-02, 1.073e-01, 3.849e-02, 3.163e-02, -1.599e-01, -6.356e-02, -9.985e-03, -2.242e-02, -4.897e-02, -1.111e-01, 4.739e-02, 7.998e-02, -3.330e-04, 7.776e-02, 3.637e-02), r);\n\tr = MulAdd(s3_4, M4(-1.776e-02, -9.190e-03, 3.079e-01, 6.996e-02, 7.989e-03, -1.833e-01, -1.111e-01, 5.754e-02, -2.713e-02, -3.977e-02, 3.147e-02, -4.155e-02, 3.760e-01, -2.202e-01, -6.909e-02, 9.248e-02), r);\n\tr = MulAdd(s3_5, M4(-2.031e-01, 7.541e-02, -1.677e-02, -1.225e-01, 5.202e-02, 1.734e-02, 2.679e-02, -8.093e-04, -2.525e-03, -5.872e-02, 1.113e-02, 9.559e-02, 4.538e-02, -4.660e-02, -1.257e-01, -2.602e-02), r);\n\tr = MulAdd(s3_6, M4(-3.247e-02, -5.548e-02, 2.158e-01, 6.249e-02, 1.102e-01, -3.439e-02, 6.277e-02, 6.411e-03, 3.234e-02, 4.465e-02, -7.207e-03, 6.141e-02, 5.406e-02, 1.072e-01, -1.963e-02, -3.139e-02), r);\n\tr = MulAdd(s3_7, M4(-2.096e-01, -1.077e-01, 7.613e-02, 1.057e-01, -1.232e-01, 7.859e-02, -7.996e-02, 3.703e-02, -2.961e-03, 8.288e-02, -5.762e-02, -9.681e-02, -1.464e-02, 6.819e-02, 4.520e-02, 1.719e-01), r);\n\tr = MulAdd(s3_8, M4(-8.420e-02, -1.095e-01, 1.215e-02, 3.436e-02, 6.192e-02, 3.912e-02, 7.981e-02, 3.137e-01, 2.237e-02, 2.784e-02, -4.654e-02, 8.559e-03, -8.479e-02, 1.238e-02, 1.205e-02, -3.051e-03), r);\n\tr = MulAdd(s4_0, M4(1.511e-02, -9.252e-03, 5.790e-03, 3.753e-02, 7.565e-02, -9.476e-02, 1.589e-02, -6.392e-02, 3.726e-02, 6.833e-02, -4.575e-03, -1.903e-02, 9.657e-03, 8.578e-03, 2.505e-02, -7.624e-03), r);\n\tr = MulAdd(s4_1, M4(3.406e-02, 5.978e-02, -4.693e-02, 7.297e-03, -7.254e-02, 9.246e-02, 9.101e-02, -9.069e-03, 9.585e-02, -5.271e-02, -5.087e-02, -6.168e-02, -9.070e-03, -8.431e-02, 2.675e-02, 9.518e-02), r);\n\tr = MulAdd(s4_2, M4(2.053e-02, 4.954e-02, 4.810e-02, -7.866e-02, -4.082e-02, -4.793e-02, 6.687e-03, -1.911e-02, 2.363e-02, 1.289e-02, 2.680e-02, -6.178e-02, -1.386e-02, 4.961e-03, -4.103e-02, -2.998e-02), r);\n\tr = MulAdd(s4_3, M4(1.265e-01, 6.002e-02, -5.993e-02, 2.239e-02, 4.585e-02, -7.239e-02, 8.562e-03, -5.115e-02, -3.372e-02, 1.246e-01, 3.284e-02, -7.553e-03, -8.669e-03, 2.122e-02, 6.986e-03, -5.931e-02), r);\n\tr = MulAdd(s4_4, M4(3.469e-02, -1.594e-03, 2.107e-03, -2.065e-01, 3.869e-02, -4.408e-02, -3.861e-02, 1.545e-02, -1.170e-02, 9.890e-02, -6.240e-02, -6.230e-02, -2.656e-02, -9.663e-02, 9.523e-02, 4.473e-02), r);\n\tr = MulAdd(s4_5, M4(1.138e-02, 6.733e-03, -1.154e-01, -4.058e-02, 4.270e-02, -2.085e-03, 2.183e-03, 1.249e-01, 1.701e-01, -5.283e-02, -4.708e-02, -5.570e-02, -5.821e-02, -1.068e-01, 1.369e-01, 1.492e-01), r);\n\tr = MulAdd(s4_6, M4(-2.277e-02, -1.163e-01, -1.232e-02, 4.009e-03, -3.210e-03, -1.049e-01, 2.828e-02, 2.007e-02, 1.880e-01, 1.803e-01, 1.202e-01, -4.261e-03, -8.411e-03, -6.796e-02, 4.724e-02, -1.382e-01), r);\n\tr = MulAdd(s4_7, M4(-1.065e-01, -2.180e-03, -7.782e-02, -1.642e-02, -3.885e-02, -1.393e-02, -3.343e-02, -5.628e-02, 1.699e-01, -6.423e-02, 9.618e-02, -9.226e-02, -1.071e-01, 2.686e-02, -9.786e-03, -1.699e-01), r);\n\tr = MulAdd(s4_8, M4(3.426e-03, -4.191e-02, 2.161e-02, 1.556e-01, -1.128e-02, 1.101e-01, -4.549e-02, -1.002e-02, 8.034e-02, 2.625e-02, -2.265e-02, -5.273e-02, 3.267e-02, 2.136e-02, 1.819e-03, -8.445e-03), r);\n\tr = MulAdd(s5_0, M4(-1.543e-01, -7.893e-02, -1.042e-01, -4.412e-02, -3.244e-02, 3.192e-03, 1.214e-01, -1.500e-02, -3.626e-02, 1.581e-02, 7.494e-03, 5.572e-02, -4.054e-03, 1.962e-02, -1.363e-01, 7.033e-02), r);\n\tr = MulAdd(s5_1, M4(-2.474e-02, 3.145e-02, 5.622e-02, -6.296e-02, 5.492e-02, -4.185e-02, 7.467e-02, 5.331e-02, -2.310e-02, 2.976e-02, 5.042e-02, -5.251e-03, 1.195e-01, -6.692e-02, 6.893e-02, -7.826e-02), r);\n\tr = MulAdd(s5_2, M4(2.109e-02, -5.746e-03, 5.626e-02, -1.174e-01, -1.033e-01, -2.948e-02, -1.530e-01, 9.934e-02, -6.408e-03, -1.846e-02, -4.852e-02, 4.990e-02, 1.627e-01, 4.525e-02, -6.003e-03, 1.175e-01), r);\n\tr = MulAdd(s5_3, M4(-6.157e-02, -6.800e-02, 2.204e-02, 2.086e-02, -1.796e-01, 5.360e-02, -7.831e-02, 8.739e-02, -5.539e-02, 7.619e-02, 4.859e-02, -3.974e-02, 4.414e-02, 3.187e-02, -4.088e-02, -5.784e-02), r);\n\tr = MulAdd(s5_4, M4(1.870e-01, 1.430e-01, 6.715e-02, -3.192e-01, -8.249e-03, -4.895e-02, -1.775e-01, -1.211e-02, 5.246e-02, -1.028e-01, -1.829e-01, -2.604e-02, 8.037e-02, -5.044e-02, -8.484e-03, -5.692e-02), r);\n\tr = MulAdd(s5_5, M4(7.599e-02, 7.251e-02, -1.234e-01, 3.917e-02, -6.220e-02, -3.332e-02, -1.971e-01, -4.996e-03, -7.553e-02, 3.844e-02, -1.313e-01, -5.345e-02, -6.988e-02, -9.938e-02, 1.562e-01, -7.072e-02), r);\n\tr = MulAdd(s5_6, M4(8.148e-02, 8.224e-02, 1.979e-01, 1.761e-01, -2.081e-01, -7.891e-03, 2.253e-02, -5.107e-02, -1.033e-01, -1.002e-01, 1.686e-02, 1.496e-02, 4.147e-02, -3.550e-02, 1.365e-03, -8.448e-02), r);\n\tr = MulAdd(s5_7, M4(2.520e-02, -1.215e-02, -7.120e-02, 1.434e-01, 5.238e-02, -4.046e-02, 2.844e-02, 8.513e-02, -5.495e-02, -1.260e-01, -7.741e-02, -5.583e-02, -4.865e-02, 5.129e-02, -6.376e-02, -6.701e-02), r);\n\tr = MulAdd(s5_8, M4(-4.859e-02, 2.361e-02, 1.190e-01, 1.642e-01, -9.418e-02, -1.948e-02, -1.088e-01, -5.529e-02, 6.670e-02, -7.794e-02, 7.296e-02, -2.764e-03, 1.796e-01, 1.090e-02, -2.495e-02, 4.582e-02), r);\n\tr = MulAdd(s6_0, M4(-5.357e-02, -1.255e-02, 2.167e-02, 2.385e-02, -1.343e-01, -9.890e-02, 1.080e-01, -3.771e-02, 1.413e-02, 1.873e-02, 6.132e-02, -3.476e-02, -1.697e-02, 1.685e-01, -3.233e-02, 1.537e-01), r);\n\tr = MulAdd(s6_1, M4(-7.470e-02, -1.743e-02, -1.708e-02, 1.016e-01, -2.885e-02, 2.759e-01, 8.246e-02, 8.111e-02, 2.180e-02, 1.975e-01, 4.139e-02, -5.838e-02, 2.880e-01, 3.660e-02, 1.437e-01, -2.724e-02), r);\n\tr = MulAdd(s6_2, M4(2.805e-02, 4.007e-02, 3.674e-02, 9.905e-02, 1.284e-02, -1.238e-01, -5.328e-02, -1.677e-01, 2.169e-02, -6.419e-03, 2.584e-02, -5.450e-02, -9.392e-02, 1.529e-01, -1.063e-02, -4.322e-02), r);\n\tr = MulAdd(s6_3, M4(-5.460e-02, -4.692e-02, -6.811e-02, -9.443e-02, -1.052e-01, 5.419e-02, 6.251e-02, -1.415e-01, 9.546e-02, -6.588e-02, -5.084e-02, 9.510e-02, 1.441e-01, 1.078e-01, 8.965e-02, -3.965e-02), r);\n\tr = MulAdd(s6_4, M4(1.503e-01, -1.248e-01, 1.122e-01, -3.047e-02, -3.949e-02, -1.048e-01, -5.012e-02, -4.756e-02, 8.160e-02, -1.789e-01, 3.578e-02, 1.013e-01, 3.092e-02, 3.357e-02, -1.165e-02, 2.127e-01), r);\n\tr = MulAdd(s6_5, M4(1.087e-01, -3.543e-02, -4.847e-03, 1.176e-03, -1.534e-03, -6.062e-02, 3.015e-02, -2.010e-02, -6.407e-02, -3.185e-02, 9.524e-02, 1.449e-01, -1.586e-01, 9.769e-02, -4.502e-02, -2.382e-02), r);\n\tr = MulAdd(s6_6, M4(-7.326e-02, -1.414e-02, 8.860e-02, -1.082e-01, -1.479e-01, -5.904e-02, -3.166e-03, -3.973e-02, -1.012e-02, -2.806e-02, 5.465e-02, 9.396e-02, -6.241e-02, 6.763e-02, 4.198e-02, -9.115e-03), r);\n\tr = MulAdd(s6_7, M4(9.795e-02, 1.486e-01, -4.049e-02, -2.027e-01, 3.147e-02, 2.180e-02, -5.846e-02, 6.627e-02, -9.838e-02, 1.340e-03, 5.795e-02, -3.384e-02, 5.155e-03, 1.505e-01, 1.303e-01, 9.453e-02), r);\n\tr = MulAdd(s6_8, M4(7.614e-02, -5.840e-02, 7.337e-02, 9.552e-03, 6.193e-02, -6.492e-02, -3.637e-02, -1.006e-02, -9.000e-02, 5.542e-02, -1.137e-01, -1.461e-01, 9.594e-02, -4.110e-02, 2.555e-01, 1.538e-01), r);\n\tr = MulAdd(s7_0, M4(-4.090e-02, -1.584e-01, 6.009e-03, 4.241e-02, -7.851e-02, -1.891e-02, -1.294e-01, 7.073e-02, -6.965e-02, -1.393e-01, -3.263e-02, 4.283e-02, -2.880e-02, -8.045e-02, -3.110e-02, -3.723e-02), r);\n\tr = MulAdd(s7_1, M4(7.501e-02, 1.715e-01, -1.412e-01, -5.020e-02, -7.131e-02, 1.504e-02, -1.315e-01, 7.303e-02, 5.994e-02, 6.750e-04, -1.436e-01, -7.401e-02, 8.432e-02, -3.126e-02, 4.516e-02, 2.611e-02), r);\n\tr = MulAdd(s7_2, M4(-9.791e-02, -3.010e-02, 3.730e-02, 2.211e-01, 9.011e-02, -2.170e-02, -1.503e-01, -1.351e-03, -3.374e-02, -1.586e-01, 4.537e-02, -4.016e-02, 3.440e-02, 8.301e-02, -2.345e-02, -1.047e-01), r);\n\tr = MulAdd(s7_3, M4(4.726e-03, -1.440e-01, -1.918e-02, -6.087e-02, -2.039e-02, 1.680e-01, 7.678e-02, 3.246e-02, -9.188e-02, -1.428e-01, -7.054e-02, -4.589e-02, 1.097e-01, 4.248e-02, 9.779e-02, -5.377e-02), r);\n\tr = MulAdd(s7_4, M4(1.140e-01, 7.803e-02, -1.629e-01, 3.934e-02, 1.460e-01, -8.277e-02, -2.556e-01, 2.779e-02, 1.764e-01, -5.843e-02, -1.032e-01, 6.965e-02, -1.226e-01, -1.023e-01, -3.626e-02, 1.119e-01), r);\n\tr = MulAdd(s7_5, M4(2.249e-01, -2.232e-01, -4.929e-02, 6.349e-02, -4.084e-02, 1.465e-02, -1.406e-01, 1.851e-02, 2.453e-02, -7.126e-02, 1.207e-02, 9.391e-02, -4.615e-02, 1.280e-01, -4.366e-02, -4.766e-02), r);\n\tr = MulAdd(s7_6, M4(-9.260e-02, 4.395e-02, -1.591e-02, 1.160e-01, -4.981e-02, -3.446e-03, 1.558e-02, -7.517e-03, 9.090e-03, -1.203e-01, -1.635e-02, 3.306e-03, -8.822e-02, -1.986e-03, 4.776e-03, 7.837e-02), r);\n\tr = MulAdd(s7_7, M4(-1.941e-01, -1.647e-01, -1.748e-01, -2.672e-01, 1.248e-01, 6.852e-02, -1.307e-01, 2.776e-02, -2.553e-02, 8.394e-02, 7.780e-02, -4.222e-02, -1.564e-01, 5.224e-02, -8.394e-02, -9.676e-03), r);\n\tr = MulAdd(s7_8, M4(-3.461e-02, -9.314e-03, -7.496e-02, 1.333e-01, 6.383e-02, -6.956e-03, 5.022e-02, 1.759e-01, 6.323e-02, 7.062e-02, -2.913e-03, -5.013e-02, -1.868e-02, -1.214e-01, 4.730e-02, 8.127e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 7.479e-03, -6.194e-03, 1.320e-03, -7.964e-03 };\n\tr = MulAdd(s0_0, M4(2.663e-02, 3.573e-02, 3.160e-02, 3.179e-02, -1.139e-02, -2.377e-01, 2.398e-02, -6.937e-02, 8.542e-02, 1.260e-02, 5.305e-02, -1.027e-01, -2.232e-02, -3.775e-02, -1.290e-01, 1.404e-02), r);\n\tr = MulAdd(s0_1, M4(4.846e-02, 9.449e-02, 1.311e-01, 3.851e-02, -1.737e-02, -2.450e-01, 6.982e-02, -7.079e-02, -1.920e-02, -1.712e-01, 1.282e-01, -2.338e-02, -4.105e-02, -1.808e-01, 2.626e-01, 1.768e-01), r);\n\tr = MulAdd(s0_2, M4(-1.921e-02, -1.367e-02, 1.222e-01, 4.826e-02, 5.288e-02, -3.231e-02, -1.508e-01, -6.038e-02, -1.523e-02, 4.821e-02, 3.348e-03, 4.788e-02, 5.726e-02, -5.976e-02, 1.916e-01, 1.611e-01), r);\n\tr = MulAdd(s0_3, M4(8.216e-03, 1.343e-01, 9.327e-02, 5.472e-02, 7.263e-02, -4.809e-02, -7.638e-02, -7.174e-02, -5.490e-02, 2.225e-01, -1.328e-01, -3.526e-02, 1.267e-02, 2.465e-02, -5.855e-02, -2.627e-02), r);\n\tr = MulAdd(s0_4, M4(-1.407e-01, -8.979e-02, 1.193e-01, -1.609e-01, -5.270e-02, 5.800e-02, -1.368e-01, 2.581e-03, 1.552e-01, -1.095e-01, -7.026e-02, 9.304e-02, -3.085e-02, -4.825e-03, -3.428e-01, 2.084e-01), r);\n\tr = MulAdd(s0_5, M4(-1.373e-01, 4.969e-02, -1.441e-01, 9.402e-02, 1.693e-01, -1.024e-01, -1.389e-01, -8.313e-02, 1.894e-01, -1.958e-01, 1.754e-01, 7.405e-02, 1.316e-01, -2.585e-01, -4.974e-02, 2.022e-01), r);\n\tr = MulAdd(s0_6, M4(-2.163e-02, 5.919e-02, -1.898e-02, -3.715e-02, -1.390e-02, -2.874e-02, -4.194e-02, -5.698e-02, 1.136e-01, 8.847e-02, -2.969e-01, -2.920e-02, 9.156e-02, 1.106e-01, -1.933e-02, 6.158e-02), r);\n\tr = MulAdd(s0_7, M4(-3.552e-02, 1.153e-01, -1.916e-02, -6.388e-02, -3.472e-02, -6.423e-02, 3.745e-02, 9.731e-02, 2.254e-02, 8.993e-02, -2.307e-01, -9.372e-03, 1.145e-01, 4.845e-02, -6.438e-02, 1.110e-01), r);\n\tr = MulAdd(s0_8, M4(6.302e-02, 2.867e-02, 1.221e-01, 4.384e-02, 5.529e-02, -6.174e-02, -2.728e-02, -1.700e-02, -8.450e-03, 1.797e-01, -1.562e-01, -4.187e-02, 8.052e-02, -2.005e-01, 1.629e-01, -3.207e-02), r);\n\tr = MulAdd(s1_0, M4(-9.700e-02, -1.379e-02, -5.259e-02, 4.906e-02, 7.132e-02, -9.649e-02, -6.448e-03, -3.662e-02, 7.594e-04, 1.604e-02, 5.802e-03, 2.184e-04, -1.599e-02, 1.653e-02, 3.313e-02, -4.064e-02), r);\n\tr = MulAdd(s1_1, M4(1.299e-01, 1.212e-02, -1.715e-01, -1.813e-02, 1.272e-01, 2.094e-02, -1.047e-01, 1.227e-01, 7.166e-02, -2.531e-02, -2.501e-02, -6.219e-02, -3.725e-02, -1.393e-02, 2.518e-03, 5.498e-03), r);\n\tr = MulAdd(s1_2, M4(1.017e-01, -1.189e-01, 1.943e-02, -1.318e-03, -7.588e-02, 1.398e-01, 9.943e-02, -2.078e-02, -1.502e-02, -2.359e-02, -3.587e-02, 4.861e-02, 3.589e-02, 9.188e-02, 3.024e-02, -5.091e-02), r);\n\tr = MulAdd(s1_3, M4(4.126e-02, -2.310e-01, 1.046e-01, 2.332e-01, -7.066e-02, -6.313e-03, -4.567e-03, 1.480e-02, 3.615e-02, -4.300e-02, 2.026e-02, 7.725e-02, -9.011e-02, -2.195e-02, 6.867e-02, 4.186e-03), r);\n\tr = MulAdd(s1_4, M4(-7.472e-02, -4.031e-02, -1.416e-01, -1.453e-01, 3.689e-02, 5.077e-02, 2.386e-01, 8.009e-02, -1.776e-02, -1.754e-02, 1.543e-02, 1.298e-01, -1.286e-02, 1.735e-02, -4.372e-02, 5.004e-02), r);\n\tr = MulAdd(s1_5, M4(7.579e-02, 4.976e-04, -1.751e-01, 3.413e-02, -4.651e-02, 1.532e-01, 2.524e-03, 3.198e-02, 1.865e-02, 7.633e-02, -8.661e-03, -8.857e-02, 7.275e-02, 6.012e-03, -4.343e-02, 2.194e-01), r);\n\tr = MulAdd(s1_6, M4(3.561e-02, -1.975e-01, -1.553e-01, 7.688e-02, 7.823e-02, 3.841e-02, -7.595e-02, -9.052e-03, 2.869e-02, -2.724e-02, -5.237e-02, 3.539e-02, 7.125e-02, 6.169e-02, -5.338e-02, -1.247e-01), r);\n\tr = MulAdd(s1_7, M4(8.636e-02, -1.742e-01, -1.153e-01, -5.277e-02, 6.017e-02, 8.485e-02, 2.407e-02, 6.711e-02, 2.165e-02, -6.010e-02, 1.138e-01, 4.745e-02, 3.359e-02, -9.350e-02, -4.098e-03, 1.539e-02), r);\n\tr = MulAdd(s1_8, M4(1.893e-02, -1.004e-01, -1.206e-01, 6.257e-02, -9.174e-02, 4.435e-02, 8.294e-02, -1.323e-02, 3.174e-03, 1.658e-02, 9.627e-02, 4.803e-02, 5.214e-02, 4.139e-02, 1.213e-01, -6.390e-02), r);\n\tr = MulAdd(s2_0, M4(-1.003e-01, -2.060e-02, 7.643e-02, 8.917e-03, -1.845e-03, 1.274e-01, -6.574e-03, 3.525e-02, 4.085e-02, -6.564e-02, 6.702e-02, -2.237e-02, -5.356e-02, -5.959e-02, -1.211e-01, -6.724e-03), r);\n\tr = MulAdd(s2_1, M4(8.614e-02, -1.609e-01, 7.359e-02, 6.662e-02, -5.600e-03, 3.820e-02, -1.706e-01, -9.107e-02, 4.658e-03, -1.218e-01, -6.839e-02, -1.595e-01, -1.676e-01, -3.686e-02, 1.929e-01, 1.209e-02), r);\n\tr = MulAdd(s2_2, M4(1.763e-01, 6.953e-02, 4.514e-02, -5.794e-02, 1.325e-02, -6.248e-02, 1.411e-01, 1.559e-02, 4.946e-02, -2.265e-01, 1.125e-01, 5.394e-02, -1.750e-02, 4.500e-02, -1.248e-01, -1.765e-02), r);\n\tr = MulAdd(s2_3, M4(-1.029e-01, -1.013e-01, -1.063e-01, -9.505e-02, 1.116e-01, -1.684e-02, -6.668e-02, -1.788e-02, -4.550e-02, -6.653e-02, -2.074e-02, -7.063e-02, -9.743e-02, 4.777e-02, -3.770e-02, -4.267e-02), r);\n\tr = MulAdd(s2_4, M4(2.858e-01, 7.134e-02, -8.271e-02, 1.058e-01, -1.034e-01, 1.048e-02, -1.470e-01, -8.929e-02, -2.202e-01, -4.561e-01, -7.260e-02, -1.335e-01, 8.094e-03, -1.764e-01, 6.452e-02, -8.200e-02), r);\n\tr = MulAdd(s2_5, M4(-7.771e-02, 6.318e-02, 2.476e-02, -1.248e-01, 8.019e-02, -1.921e-01, -8.554e-02, 1.549e-01, 2.037e-01, -2.268e-01, -8.223e-02, -1.499e-02, 8.035e-02, -5.437e-02, 9.512e-02, 3.877e-02), r);\n\tr = MulAdd(s2_6, M4(5.986e-02, 1.200e-02, -6.885e-02, -3.239e-03, 7.123e-02, -4.501e-02, -8.298e-02, 6.258e-03, 3.682e-02, 2.750e-02, 5.589e-02, -4.066e-02, -7.148e-02, 1.147e-02, 1.011e-01, 4.193e-02), r);\n\tr = MulAdd(s2_7, M4(-5.912e-02, -4.001e-02, -1.402e-01, -1.004e-01, 6.142e-02, 1.464e-02, -3.567e-01, -2.251e-01, 3.545e-02, -5.070e-02, -1.870e-01, -1.834e-01, -3.509e-02, -5.190e-02, 1.373e-01, 1.254e-01), r);\n\tr = MulAdd(s2_8, M4(-4.374e-02, -1.312e-02, -3.855e-02, -4.781e-02, 4.914e-02, -1.227e-01, -1.656e-01, -1.675e-02, -5.363e-02, -4.299e-03, -1.644e-01, -1.710e-02, -6.290e-02, 2.749e-03, 4.811e-04, 7.494e-02), r);\n\tr = MulAdd(s3_0, M4(7.418e-02, 2.413e-02, 2.179e-01, 1.002e-01, -6.673e-03, 1.446e-01, -4.374e-02, 1.830e-02, 7.794e-02, 4.814e-02, 5.367e-02, -2.835e-02, 4.846e-02, 1.012e-01, -5.740e-02, -2.012e-02), r);\n\tr = MulAdd(s3_1, M4(-1.076e-01, 2.386e-01, 4.229e-02, 1.792e-01, 2.957e-02, -7.132e-03, 3.811e-02, 3.139e-02, 2.056e-01, -6.285e-02, 7.038e-02, 8.697e-02, 7.951e-03, -1.323e-01, 4.550e-02, -9.253e-02), r);\n\tr = MulAdd(s3_2, M4(-1.992e-02, 4.952e-02, 2.321e-02, -6.068e-02, 5.577e-03, -3.496e-02, 1.100e-02, 4.701e-02, -6.097e-02, 3.211e-02, 7.370e-02, 5.026e-02, -1.176e-03, 9.178e-03, 2.910e-02, 6.707e-02), r);\n\tr = MulAdd(s3_3, M4(-1.284e-01, 1.173e-02, 2.513e-01, 4.469e-02, 1.003e-02, -1.182e-01, -4.960e-02, 2.868e-02, 1.974e-03, -4.529e-02, 1.680e-02, 1.219e-02, 6.489e-02, 3.270e-02, 2.856e-03, -2.437e-02), r);\n\tr = MulAdd(s3_4, M4(-2.342e-01, 4.384e-01, 2.001e-01, -4.318e-02, -2.596e-03, -5.227e-02, 2.451e-01, -6.867e-02, -1.310e-01, 6.207e-02, -3.253e-02, -9.466e-02, 1.424e-02, -5.704e-02, 1.606e-01, -3.421e-01), r);\n\tr = MulAdd(s3_5, M4(-1.507e-01, 2.010e-01, 8.911e-02, -8.064e-02, 1.800e-01, 1.194e-01, -1.134e-02, 1.642e-01, -2.123e-01, -1.612e-02, -3.988e-02, -7.009e-02, 9.302e-02, -3.479e-02, -2.334e-02, -8.769e-03), r);\n\tr = MulAdd(s3_6, M4(-1.859e-02, -1.743e-02, 2.540e-01, 3.481e-02, -5.009e-02, -4.857e-02, -7.388e-02, 6.612e-02, -1.630e-02, 1.151e-01, -8.329e-02, 2.283e-02, 1.228e-01, 8.869e-02, 8.183e-02, 2.168e-02), r);\n\tr = MulAdd(s3_7, M4(-1.030e-01, -3.114e-03, 1.257e-01, 5.785e-02, 7.695e-02, 7.875e-03, -1.929e-01, -6.950e-05, -4.482e-02, -4.113e-03, -1.171e-01, 8.258e-02, -8.507e-03, -1.046e-01, 6.857e-02, -3.029e-02), r);\n\tr = MulAdd(s3_8, M4(2.446e-02, 5.971e-02, 5.623e-02, 1.255e-01, -8.937e-03, 3.395e-02, 1.949e-02, -3.246e-02, -2.415e-02, -1.666e-02, -6.608e-02, -4.302e-02, 1.015e-01, -9.010e-02, -5.383e-02, -8.861e-02), r);\n\tr = MulAdd(s4_0, M4(2.870e-02, 5.795e-02, -4.586e-02, -8.181e-03, 2.942e-02, 5.082e-02, -5.689e-03, 9.240e-03, 4.014e-02, 3.368e-02, -3.481e-02, -1.248e-01, -5.246e-02, 9.443e-02, -2.095e-02, 1.967e-02), r);\n\tr = MulAdd(s4_1, M4(-2.031e-02, -2.830e-02, 1.334e-02, -8.101e-03, -1.085e-01, 2.567e-02, 7.094e-02, 5.787e-02, 4.140e-02, 1.147e-02, 9.587e-02, -1.425e-01, 2.933e-02, 3.509e-02, 1.724e-01, -2.731e-02), r);\n\tr = MulAdd(s4_2, M4(-1.860e-03, -4.974e-02, 3.231e-02, 7.355e-03, -2.778e-02, 1.611e-01, 2.444e-02, 8.233e-02, 7.862e-02, 2.351e-02, -1.022e-02, -7.801e-02, -3.894e-02, 1.514e-02, 8.644e-02, 4.537e-02), r);\n\tr = MulAdd(s4_3, M4(3.963e-02, -1.404e-03, 4.396e-02, 8.070e-02, -6.941e-02, 6.948e-02, 4.566e-02, -2.384e-02, 1.194e-01, 2.032e-01, 8.894e-02, -1.514e-01, 4.098e-02, -3.902e-02, 1.593e-02, 1.235e-01), r);\n\tr = MulAdd(s4_4, M4(5.303e-02, 6.492e-02, -3.854e-02, 4.180e-02, -2.960e-03, -5.687e-02, -1.223e-01, 2.594e-02, -1.240e-01, -8.107e-02, 1.643e-01, -7.760e-02, 1.478e-02, -1.137e-02, 5.575e-02, 1.585e-01), r);\n\tr = MulAdd(s4_5, M4(4.148e-02, 3.501e-02, -1.017e-02, -5.189e-03, -5.128e-02, -1.322e-01, 6.951e-02, 9.929e-03, -3.974e-02, -5.354e-02, -7.879e-02, -1.421e-01, -1.860e-01, -6.520e-02, 2.233e-01, -3.510e-02), r);\n\tr = MulAdd(s4_6, M4(1.584e-02, -1.890e-01, 6.972e-02, 7.349e-02, 3.867e-02, 1.448e-02, -9.357e-02, 4.793e-02, 2.141e-01, 3.160e-01, 6.640e-02, -1.808e-01, -3.964e-02, -3.513e-02, -1.367e-01, 1.663e-02), r);\n\tr = MulAdd(s4_7, M4(4.660e-02, -1.508e-01, -8.482e-02, 7.494e-02, 3.497e-02, -1.054e-01, -5.170e-02, 7.540e-02, 5.040e-02, 8.157e-02, -1.403e-01, -2.148e-03, 6.321e-03, -3.587e-02, -1.364e-01, 1.370e-01), r);\n\tr = MulAdd(s4_8, M4(-6.566e-02, -2.770e-02, -1.794e-02, 2.547e-02, 7.739e-02, -1.032e-01, -1.455e-01, -7.336e-02, 6.629e-02, 2.620e-02, -8.784e-02, -3.572e-02, 2.198e-02, -1.402e-01, 1.540e-02, -3.120e-02), r);\n\tr = MulAdd(s5_0, M4(7.106e-02, 2.706e-02, 2.206e-02, 2.482e-02, 5.481e-02, 1.434e-01, 9.398e-02, -9.003e-03, -5.256e-03, -1.218e-01, 2.484e-03, -4.917e-02, -4.145e-02, 4.515e-02, -3.105e-02, 2.698e-02), r);\n\tr = MulAdd(s5_1, M4(1.633e-01, 2.688e-01, 4.356e-02, -4.851e-02, -1.091e-01, 2.399e-01, -8.502e-02, 4.810e-03, -1.683e-02, -4.995e-02, -1.154e-02, -2.006e-03, 1.245e-01, -3.599e-03, 1.517e-01, -6.009e-02), r);\n\tr = MulAdd(s5_2, M4(5.579e-02, -6.718e-02, 5.835e-02, -5.433e-02, -6.252e-02, 1.592e-01, -2.415e-01, -3.498e-03, -4.435e-02, -8.581e-02, -1.006e-01, 4.444e-02, -6.519e-02, 1.304e-01, -1.404e-01, 3.976e-02), r);\n\tr = MulAdd(s5_3, M4(1.713e-01, 2.055e-01, 2.371e-02, 9.614e-02, -1.554e-01, -5.299e-02, 1.901e-01, -1.948e-01, 3.469e-03, -8.674e-02, -1.929e-01, 6.825e-02, 3.659e-02, -1.318e-01, 4.520e-02, -4.470e-02), r);\n\tr = MulAdd(s5_4, M4(-3.117e-02, 3.879e-01, -4.774e-02, -9.195e-02, -1.407e-01, -1.282e-01, -4.174e-02, 2.968e-02, 3.210e-02, 9.048e-03, 2.540e-02, 1.136e-01, 1.598e-01, -1.205e-01, 5.497e-02, -1.612e-01), r);\n\tr = MulAdd(s5_5, M4(-1.579e-02, 2.492e-01, -1.458e-01, -7.247e-02, -2.458e-01, -1.097e-01, 1.808e-01, -2.019e-03, 5.261e-02, -1.370e-01, -1.082e-01, 7.321e-02, 7.172e-02, 4.009e-02, 4.015e-02, -2.922e-01), r);\n\tr = MulAdd(s5_6, M4(7.843e-02, 2.011e-01, -2.855e-02, -1.125e-01, 1.346e-01, 1.834e-01, 2.303e-02, 2.286e-02, 5.182e-02, -6.831e-03, 2.276e-01, -1.567e-02, 3.638e-02, -3.162e-02, -1.084e-01, -3.247e-02), r);\n\tr = MulAdd(s5_7, M4(3.780e-03, 1.666e-01, 1.484e-01, -1.534e-01, -5.629e-02, 7.632e-02, 1.376e-01, -3.399e-02, 2.648e-02, -3.358e-02, 1.152e-01, 7.617e-02, 4.750e-03, -9.384e-02, 4.874e-03, 9.212e-02), r);\n\tr = MulAdd(s5_8, M4(-2.864e-01, 2.671e-01, -8.083e-02, -9.173e-02, -3.624e-02, -1.240e-01, -4.755e-02, -1.147e-01, 8.944e-03, 4.023e-02, -6.581e-02, 3.924e-02, 1.563e-01, -2.466e-01, 2.736e-01, -2.829e-02), r);\n\tr = MulAdd(s6_0, M4(3.454e-02, 4.907e-03, 1.759e-01, -2.260e-02, -6.025e-02, -9.115e-02, 1.239e-01, 9.932e-02, 4.134e-02, 3.477e-02, 7.780e-03, 1.504e-02, -6.135e-02, 1.305e-01, 2.783e-01, -8.530e-02), r);\n\tr = MulAdd(s6_1, M4(-7.489e-02, 1.256e-01, 6.719e-02, -1.312e-02, 5.527e-02, 1.743e-01, -2.603e-02, -1.856e-02, -4.894e-02, -5.220e-03, -9.751e-02, -6.255e-02, 1.721e-02, 1.428e-01, 8.609e-02, -1.931e-01), r);\n\tr = MulAdd(s6_2, M4(-3.560e-03, 3.581e-03, 4.381e-03, -5.233e-02, -7.191e-02, 2.366e-01, 7.837e-02, -7.278e-02, -1.503e-02, 1.267e-02, 7.984e-02, 8.166e-02, 3.384e-03, -3.630e-02, 2.452e-01, -4.846e-02), r);\n\tr = MulAdd(s6_3, M4(1.409e-01, -5.460e-02, -7.154e-02, 9.662e-03, 2.511e-02, -5.559e-02, -2.400e-01, 4.025e-02, -7.148e-02, -2.844e-02, 4.508e-02, -1.666e-02, 1.084e-02, 1.696e-01, -1.175e-01, -1.194e-01), r);\n\tr = MulAdd(s6_4, M4(-1.884e-01, 3.910e-02, -1.289e-01, -1.088e-01, 3.357e-02, 6.130e-02, 8.805e-03, -1.275e-01, -1.181e-01, -3.456e-02, 5.731e-02, -2.597e-01, -1.981e-01, 3.257e-02, -9.962e-02, -1.001e-01), r);\n\tr = MulAdd(s6_5, M4(9.773e-02, 1.062e-02, 1.079e-01, 7.377e-02, -1.285e-02, 1.068e-01, 3.774e-02, -2.815e-02, -8.242e-02, 7.684e-02, -9.929e-02, -6.032e-02, -1.261e-02, -1.095e-01, 2.211e-01, -1.299e-02), r);\n\tr = MulAdd(s6_6, M4(1.216e-02, 5.718e-02, -3.228e-02, 9.389e-03, -5.748e-02, 1.410e-01, -7.183e-02, -6.529e-02, -2.041e-02, 4.350e-02, 8.421e-02, -1.284e-02, -4.060e-02, 4.178e-02, 5.984e-02, -5.652e-02), r);\n\tr = MulAdd(s6_7, M4(1.156e-01, 5.795e-02, 9.929e-03, -2.015e-02, -1.636e-01, -6.938e-02, -1.737e-01, 4.317e-02, 1.722e-02, -1.930e-02, 1.952e-01, -2.675e-02, -2.033e-01, 2.390e-02, -1.255e-01, 2.645e-03), r);\n\tr = MulAdd(s6_8, M4(1.267e-02, -1.096e-02, 7.513e-02, -1.194e-02, -1.441e-03, 1.111e-02, -1.026e-01, -4.972e-02, -4.979e-02, -6.357e-02, -1.229e-02, -1.549e-02, 4.419e-02, 2.950e-01, 5.272e-02, -2.957e-02), r);\n\tr = MulAdd(s7_0, M4(-4.764e-02, -6.165e-02, 1.538e-01, 9.830e-03, 4.903e-02, -1.458e-01, 1.383e-01, 5.074e-02, -1.344e-02, -6.074e-03, -5.067e-02, -4.629e-02, -4.420e-03, -1.331e-02, -3.949e-02, -6.188e-04), r);\n\tr = MulAdd(s7_1, M4(-1.795e-02, 6.593e-02, -3.127e-01, -1.740e-01, 3.898e-02, -3.126e-02, -1.538e-01, 2.400e-02, -2.798e-02, -3.590e-02, 7.410e-02, 2.130e-02, -4.461e-03, 5.434e-02, 2.883e-02, 2.667e-02), r);\n\tr = MulAdd(s7_2, M4(1.237e-02, 5.499e-02, -1.273e-01, -1.156e-01, 1.424e-01, -1.258e-03, 1.371e-02, 2.027e-02, 1.008e-01, 6.674e-02, 4.499e-02, 2.501e-02, -8.317e-02, 7.529e-02, -6.850e-02, -3.784e-02), r);\n\tr = MulAdd(s7_3, M4(-3.737e-02, -5.870e-03, 3.237e-02, -1.124e-01, -9.034e-02, -1.274e-01, 3.342e-02, 7.105e-02, -1.314e-01, 2.508e-02, -3.401e-02, -9.204e-02, 5.544e-02, 1.018e-01, -6.085e-02, -6.019e-03), r);\n\tr = MulAdd(s7_4, M4(-2.714e-01, -2.963e-01, -1.685e-01, -2.489e-01, 4.202e-02, 3.484e-02, -3.542e-02, -7.937e-02, -8.434e-02, 2.660e-02, -9.034e-02, 6.340e-03, -4.910e-02, -1.012e-01, -3.295e-02, 3.424e-02), r);\n\tr = MulAdd(s7_5, M4(-9.240e-02, 1.731e-01, -1.717e-01, -1.064e-01, 1.709e-01, -5.175e-02, 1.502e-01, 1.928e-02, -4.976e-03, 7.204e-02, 6.187e-02, -3.323e-02, 6.619e-02, -3.219e-02, -4.676e-03, -3.696e-03), r);\n\tr = MulAdd(s7_6, M4(-5.651e-03, -8.852e-02, 6.467e-02, -7.485e-02, 2.775e-02, 5.363e-02, 3.246e-02, -7.201e-02, -1.304e-02, 1.058e-01, -1.672e-01, -6.017e-02, -8.539e-02, -1.457e-01, -1.979e-02, 5.357e-02), r);\n\tr = MulAdd(s7_7, M4(-2.462e-02, -2.363e-01, -1.963e-02, -1.183e-01, 1.425e-02, 8.463e-02, -7.534e-02, 5.798e-02, -9.598e-02, 2.081e-02, 2.889e-02, -1.178e-02, 7.588e-02, -9.646e-02, 3.119e-02, -1.140e-02), r);\n\tr = MulAdd(s7_8, M4(2.760e-02, -7.598e-02, 1.765e-01, -5.347e-02, 3.620e-02, -7.794e-02, 4.037e-02, -1.442e-02, 1.240e-02, 6.169e-02, -1.550e-02, -8.514e-03, -1.049e-02, 1.607e-01, 1.066e-01, 3.096e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 5.351e-03, -4.746e-03, 1.930e-02, 9.374e-03 };\n\tr = MulAdd(s0_0, M4(8.430e-02, -3.763e-02, 2.044e-02, 2.159e-02, 8.186e-02, 2.197e-02, -7.806e-02, -3.065e-02, -7.532e-03, 1.757e-01, -2.800e-01, -1.676e-02, 1.776e-02, 7.224e-02, -1.259e-01, 2.911e-02), r);\n\tr = MulAdd(s0_1, M4(3.012e-02, 3.678e-05, -1.356e-02, -2.604e-02, -1.241e-01, -1.935e-01, 5.610e-03, 1.341e-01, -8.708e-02, 1.234e-01, 4.167e-02, 1.259e-01, -6.455e-02, -6.625e-03, 5.397e-02, 4.600e-02), r);\n\tr = MulAdd(s0_2, M4(-2.491e-02, 5.725e-02, -1.763e-02, 3.437e-02, -5.220e-02, 8.810e-02, -1.411e-01, 7.865e-02, 7.891e-02, -4.207e-03, 4.996e-02, -9.937e-02, 2.713e-02, -4.735e-02, -1.598e-01, 7.724e-02), r);\n\tr = MulAdd(s0_3, M4(-4.406e-02, 6.415e-02, -4.933e-02, 5.740e-02, 3.741e-02, 9.063e-02, -1.393e-02, -7.392e-02, 6.447e-02, 5.608e-02, -2.735e-02, -1.100e-01, -5.250e-03, 9.540e-02, -3.442e-02, 5.128e-02), r);\n\tr = MulAdd(s0_4, M4(1.509e-01, 1.112e-01, 1.287e-02, 3.433e-02, -5.654e-02, 4.547e-02, 6.433e-03, -9.677e-02, -1.243e-01, 2.642e-01, -1.367e-01, -1.725e-01, -6.274e-02, -2.195e-03, 1.876e-01, 7.703e-02), r);\n\tr = MulAdd(s0_5, M4(-5.247e-02, -3.219e-03, -3.712e-02, -7.956e-02, -6.361e-02, 4.913e-02, -4.173e-02, -7.252e-02, -8.908e-02, -7.582e-02, -5.119e-02, -1.812e-01, 1.378e-01, 1.358e-01, 3.654e-02, 1.169e-01), r);\n\tr = MulAdd(s0_6, M4(-2.404e-02, 2.365e-02, 7.012e-02, -7.389e-03, -2.636e-02, 5.250e-02, -1.963e-02, 7.453e-02, -3.787e-02, -1.015e-01, 1.352e-02, -1.706e-01, 1.528e-02, -8.125e-02, 5.031e-02, -5.389e-02), r);\n\tr = MulAdd(s0_7, M4(-5.166e-02, -7.660e-03, 2.108e-02, 6.046e-03, -5.190e-02, -4.010e-03, -6.305e-02, 4.929e-03, -6.187e-03, 2.259e-01, 7.503e-02, 7.217e-02, -9.784e-02, -8.002e-02, 4.003e-02, 7.586e-02), r);\n\tr = MulAdd(s0_8, M4(-3.035e-03, -1.403e-02, 1.668e-02, -3.657e-02, 9.571e-04, -1.242e-01, -4.894e-02, -1.703e-02, -8.390e-02, -4.609e-02, -4.676e-02, -5.820e-02, 7.860e-02, 8.434e-03, 4.485e-02, 9.159e-02), r);\n\tr = MulAdd(s1_0, M4(-3.446e-02, -1.680e-01, 3.259e-02, 7.439e-03, -1.256e-02, 7.677e-02, -1.888e-01, -1.630e-01, 7.922e-02, 9.013e-03, -5.748e-02, 1.094e-01, -2.331e-02, 5.989e-02, -4.874e-02, -2.901e-02), r);\n\tr = MulAdd(s1_1, M4(1.509e-01, 3.699e-02, 1.630e-02, -1.730e-01, -2.339e-02, 3.929e-02, -2.129e-01, -3.177e-01, -6.895e-03, 1.291e-02, -9.745e-02, 1.131e-01, 4.728e-04, 2.713e-03, -7.145e-02, -8.768e-04), r);\n\tr = MulAdd(s1_2, M4(-9.738e-02, 1.201e-01, 9.683e-02, -8.188e-03, -8.669e-03, -2.850e-02, 4.446e-03, 1.838e-02, 6.435e-02, -1.051e-01, 5.622e-02, 1.079e-01, -8.372e-02, 5.742e-02, -9.410e-02, -1.178e-01), r);\n\tr = MulAdd(s1_3, M4(-1.274e-01, -3.866e-02, -5.815e-02, 7.166e-02, -3.350e-02, -1.201e-02, -1.950e-02, 1.569e-01, -4.578e-02, -4.500e-02, 1.124e-02, -1.199e-02, 3.623e-02, 1.357e-01, 3.165e-02, 7.996e-02), r);\n\tr = MulAdd(s1_4, M4(1.977e-01, -8.830e-02, 1.915e-02, 9.525e-02, 1.441e-02, 9.018e-02, 5.043e-02, 3.517e-02, -4.349e-02, -7.091e-02, 1.408e-01, -3.890e-02, -5.690e-02, -3.911e-04, -6.398e-02, -9.388e-02), r);\n\tr = MulAdd(s1_5, M4(8.464e-02, -4.588e-02, 7.772e-02, -7.091e-02, -7.751e-02, -7.299e-02, -1.756e-02, -8.245e-02, 8.981e-02, -1.468e-01, 4.185e-02, 1.570e-03, -5.250e-02, 1.306e-01, -2.109e-03, -1.039e-02), r);\n\tr = MulAdd(s1_6, M4(-9.170e-02, -2.145e-01, 7.325e-02, -3.369e-02, 5.012e-02, -2.545e-02, 2.888e-03, -3.379e-02, 3.622e-02, -5.937e-03, 5.761e-02, -1.032e-03, -2.598e-02, -1.295e-02, -2.028e-02, -2.185e-02), r);\n\tr = MulAdd(s1_7, M4(-7.833e-02, -1.620e-01, -1.643e-01, 2.656e-02, -5.703e-02, 1.094e-03, 6.141e-04, -5.740e-02, 1.012e-02, 2.077e-01, 8.564e-02, 1.496e-02, -1.041e-01, 4.901e-02, -9.006e-02, 5.301e-02), r);\n\tr = MulAdd(s1_8, M4(2.529e-02, -6.643e-02, 4.730e-02, 4.944e-02, 4.444e-02, -1.255e-01, 2.971e-02, 1.443e-02, -5.764e-02, -1.901e-02, -5.798e-02, 1.340e-02, -3.938e-02, 5.376e-02, 1.825e-02, 7.330e-02), r);\n\tr = MulAdd(s2_0, M4(1.808e-02, 9.112e-02, 9.888e-02, -5.158e-02, 8.239e-02, 5.468e-02, 1.934e-02, -1.203e-01, -8.099e-02, 1.578e-01, 2.154e-01, -5.725e-02, -4.725e-02, -1.062e-01, -1.264e-01, 4.121e-02), r);\n\tr = MulAdd(s2_1, M4(-5.263e-02, 6.941e-02, 6.418e-02, 2.440e-01, 2.653e-02, 4.805e-02, 1.915e-02, -1.560e-01, -1.711e-01, 1.073e-01, -1.012e-01, -4.586e-02, -6.455e-03, -4.339e-03, 1.678e-01, -4.486e-03), r);\n\tr = MulAdd(s2_2, M4(-4.876e-02, -1.993e-02, -6.981e-02, 3.753e-02, -3.258e-02, 3.133e-02, 3.133e-02, -5.825e-02, 4.361e-02, 8.687e-02, -1.392e-02, -1.155e-01, 7.298e-02, 8.208e-03, -1.453e-01, 1.300e-02), r);\n\tr = MulAdd(s2_3, M4(-4.487e-02, 1.990e-02, -1.695e-01, 1.582e-02, -2.516e-02, -6.183e-02, -1.899e-01, 9.599e-02, 1.729e-02, 4.271e-02, 1.829e-01, -4.410e-03, -3.464e-02, -1.282e-01, -3.271e-03, -3.695e-02), r);\n\tr = MulAdd(s2_4, M4(-2.379e-01, -1.111e-01, -7.252e-02, 2.307e-02, 1.419e-01, 1.810e-01, -1.036e-01, 2.302e-02, 5.548e-03, -2.212e-01, 8.717e-02, 1.478e-01, 1.195e-01, 1.247e-01, 3.053e-02, 1.035e-01), r);\n\tr = MulAdd(s2_5, M4(-5.517e-02, -4.884e-03, 4.262e-02, -2.404e-02, -1.153e-01, 5.702e-02, -3.170e-02, 1.302e-02, -5.458e-02, 1.273e-01, 3.232e-02, 7.172e-03, -2.841e-02, 4.835e-02, -4.832e-02, 2.811e-02), r);\n\tr = MulAdd(s2_6, M4(5.292e-03, -9.579e-02, -1.466e-02, -4.698e-02, 3.646e-02, -1.541e-01, -4.505e-02, 7.720e-02, -1.202e-02, -6.506e-02, -3.220e-02, -2.880e-02, 1.926e-02, 6.278e-02, 5.749e-03, -1.510e-02), r);\n\tr = MulAdd(s2_7, M4(4.021e-02, -9.431e-02, 4.499e-02, 1.060e-01, 3.923e-02, 1.659e-01, -4.001e-02, 1.043e-01, -7.788e-02, -1.557e-01, 2.371e-02, -2.362e-02, 4.443e-02, -9.105e-03, 4.307e-02, -1.228e-02), r);\n\tr = MulAdd(s2_8, M4(-1.876e-02, -9.252e-02, -6.358e-03, -1.258e-03, 1.082e-01, -7.880e-02, 5.527e-02, -1.771e-02, 6.621e-02, -1.951e-01, -3.723e-02, 7.825e-02, 3.900e-02, 5.570e-02, 2.862e-02, 1.219e-02), r);\n\tr = MulAdd(s3_0, M4(-5.432e-03, 8.206e-02, 1.544e-01, 4.700e-02, 9.866e-02, 5.702e-02, -6.146e-02, -6.524e-02, -6.292e-02, 4.738e-02, -5.601e-02, 5.550e-02, 1.044e-02, 5.213e-02, -1.029e-01, 1.060e-01), r);\n\tr = MulAdd(s3_1, M4(-6.110e-02, -8.903e-02, 1.822e-01, 8.739e-02, -1.033e-01, -6.282e-02, 1.867e-03, 1.235e-02, -4.629e-02, -3.759e-02, -8.009e-02, 5.644e-02, 1.260e-01, -7.835e-02, 1.230e-01, 1.167e-01), r);\n\tr = MulAdd(s3_2, M4(-7.750e-02, -4.775e-03, -2.441e-02, 1.267e-03, -3.243e-03, -2.793e-02, 1.633e-03, -9.708e-02, 6.038e-02, 6.274e-02, -1.096e-01, -3.582e-03, 6.546e-02, -7.050e-03, -4.282e-02, 6.356e-02), r);\n\tr = MulAdd(s3_3, M4(-5.984e-02, 2.632e-01, 2.347e-02, -1.079e-01, -1.953e-02, 1.136e-02, 1.678e-01, -1.807e-02, -9.635e-02, 1.001e-01, 3.262e-02, -1.118e-02, 1.446e-02, 4.709e-02, 2.822e-01, -2.795e-03), r);\n\tr = MulAdd(s3_4, M4(-6.552e-03, 1.214e-01, 2.273e-02, -6.601e-03, 9.477e-02, 7.205e-02, 7.632e-02, 3.441e-01, 8.145e-03, -3.942e-02, 2.930e-02, 1.833e-02, 1.496e-01, 3.105e-02, 2.039e-01, 3.777e-01), r);\n\tr = MulAdd(s3_5, M4(-3.077e-02, -8.840e-03, 3.186e-02, -2.523e-02, -1.409e-01, 1.073e-02, -7.960e-02, -2.800e-02, 6.708e-02, 3.546e-02, -1.679e-02, -2.793e-02, -4.138e-02, 9.311e-02, -3.216e-03, 3.354e-02), r);\n\tr = MulAdd(s3_6, M4(-3.083e-02, 2.603e-01, 4.596e-02, -1.330e-03, -8.299e-02, -2.662e-02, -3.704e-02, -7.918e-02, -1.663e-02, 3.238e-02, 4.395e-03, -2.074e-02, 2.951e-02, 2.525e-02, -8.565e-04, -7.202e-02), r);\n\tr = MulAdd(s3_7, M4(6.224e-02, -1.555e-01, -1.481e-01, -2.135e-02, -1.010e-01, -1.670e-02, 6.495e-02, -6.264e-02, 2.055e-02, -1.442e-01, 4.283e-02, -1.181e-02, 4.616e-02, -1.277e-01, -1.033e-01, -1.062e-01), r);\n\tr = MulAdd(s3_8, M4(-5.627e-02, -4.951e-02, -7.015e-02, -4.087e-02, -1.958e-02, 3.923e-02, -6.462e-02, -2.031e-02, -4.688e-02, -6.262e-02, 1.886e-02, -2.789e-02, 1.281e-02, 6.714e-02, -1.233e-02, 4.252e-02), r);\n\tr = MulAdd(s4_0, M4(-5.900e-02, -1.120e-02, 2.173e-02, 7.670e-02, -2.079e-02, -3.550e-02, -3.565e-02, -8.277e-02, -8.467e-02, -6.557e-02, 1.665e-02, 4.077e-03, 6.528e-03, 3.253e-02, -1.869e-02, -4.227e-02), r);\n\tr = MulAdd(s4_1, M4(-3.366e-02, -8.582e-02, -1.080e-01, 1.154e-01, -5.242e-02, -1.353e-01, -2.081e-02, 1.130e-01, -5.835e-02, -4.013e-02, 2.943e-02, 2.138e-02, -1.349e-02, 8.821e-03, -4.397e-02, -2.010e-02), r);\n\tr = MulAdd(s4_2, M4(6.710e-02, 1.435e-02, -6.456e-03, 8.669e-02, -3.837e-02, 8.042e-02, -1.042e-01, 2.781e-02, -5.994e-02, -7.096e-02, 1.048e-02, 1.026e-01, -5.373e-03, 2.659e-02, -9.218e-02, -1.542e-02), r);\n\tr = MulAdd(s4_3, M4(-1.931e-02, 1.020e-01, 3.003e-01, 6.374e-02, -9.365e-03, 9.304e-03, 5.861e-02, -8.938e-03, -4.927e-02, -3.379e-02, -1.179e-01, 1.485e-01, 1.077e-02, -8.328e-02, 8.623e-02, 5.525e-02), r);\n\tr = MulAdd(s4_4, M4(-7.206e-02, 1.434e-01, 1.026e-01, 1.033e-01, -8.858e-02, -5.545e-02, 6.758e-02, 2.602e-03, -1.438e-01, -3.117e-02, 8.943e-02, 1.704e-01, -9.621e-02, 8.983e-02, 2.294e-01, -7.152e-02), r);\n\tr = MulAdd(s4_5, M4(-4.845e-02, -7.738e-02, 5.348e-02, -6.079e-04, -1.698e-02, 8.341e-02, -3.714e-03, -6.279e-02, 4.644e-02, -2.537e-02, 1.567e-01, -1.895e-01, 2.102e-01, -2.693e-02, 2.032e-02, -1.407e-02), r);\n\tr = MulAdd(s4_6, M4(-4.629e-03, 1.149e-02, -1.967e-02, -1.199e-02, -2.276e-02, -6.675e-02, -9.782e-02, -6.834e-02, 1.175e-02, -1.861e-01, 5.953e-02, -9.044e-02, 4.873e-02, 7.172e-02, -3.632e-02, 3.668e-02), r);\n\tr = MulAdd(s4_7, M4(-1.014e-01, -2.352e-02, -4.855e-02, -3.958e-02, -9.258e-02, -8.375e-04, -2.510e-02, -6.243e-02, -4.628e-02, -5.860e-02, -1.068e-01, -9.276e-02, -8.298e-02, -8.761e-02, 5.141e-03, -5.266e-02), r);\n\tr = MulAdd(s4_8, M4(-9.811e-03, 5.491e-02, -1.249e-02, -2.922e-02, -1.158e-04, -2.626e-02, -5.066e-02, -9.524e-02, -1.889e-02, 1.679e-02, -5.950e-02, 2.263e-03, 5.595e-02, 1.231e-01, -4.877e-02, -2.439e-02), r);\n\tr = MulAdd(s5_0, M4(7.424e-02, -2.488e-02, -9.549e-02, -4.383e-02, -8.372e-02, -8.668e-02, 1.996e-01, -2.088e-02, -2.865e-02, -4.754e-03, 1.455e-02, 1.933e-02, 4.837e-02, -8.041e-03, -9.727e-03, 1.869e-02), r);\n\tr = MulAdd(s5_1, M4(9.111e-02, -1.293e-01, -4.139e-02, 1.554e-02, 2.723e-03, -1.077e-01, 2.327e-01, -1.201e-01, 8.658e-02, 1.344e-02, -3.333e-03, -4.063e-02, -1.110e-01, -1.188e-01, -4.989e-02, 2.422e-01), r);\n\tr = MulAdd(s5_2, M4(-6.935e-05, 6.199e-02, -9.141e-03, 5.849e-02, -5.873e-02, 4.224e-02, 4.203e-02, 5.583e-03, -2.714e-02, 2.112e-02, 2.515e-02, 3.705e-02, -7.747e-02, -5.863e-02, -6.713e-02, -6.701e-02), r);\n\tr = MulAdd(s5_3, M4(5.835e-03, -1.858e-01, 1.874e-01, 2.459e-02, -3.903e-02, 1.430e-01, -1.457e-01, 5.243e-03, 5.728e-02, -7.350e-02, -1.569e-02, -6.887e-02, -1.258e-03, 8.374e-02, 5.132e-02, 1.807e-03), r);\n\tr = MulAdd(s5_4, M4(3.215e-02, -3.627e-01, 3.379e-01, 1.343e-01, -1.749e-01, -2.623e-01, 5.681e-03, 1.008e-01, 7.570e-02, -6.389e-02, 7.694e-02, 5.292e-03, -1.308e-02, -5.631e-02, 7.423e-02, -7.345e-02), r);\n\tr = MulAdd(s5_5, M4(1.426e-01, -5.201e-02, 1.086e-01, 3.665e-03, 1.046e-01, -2.734e-02, 3.172e-03, -8.829e-02, 1.569e-01, -1.352e-02, 6.193e-02, -2.948e-02, 1.041e-01, -1.714e-01, -7.391e-02, 1.037e-01), r);\n\tr = MulAdd(s5_6, M4(5.654e-02, -1.197e-01, -2.979e-02, -1.301e-01, -1.731e-02, -1.315e-01, -3.223e-02, 2.595e-02, 1.343e-01, -4.696e-02, -1.933e-01, 9.608e-02, -7.795e-03, 5.023e-02, -9.176e-02, 6.673e-02), r);\n\tr = MulAdd(s5_7, M4(-6.545e-02, -1.544e-01, 3.045e-01, -2.001e-01, -9.368e-02, -1.918e-02, 8.318e-02, 2.702e-02, -5.971e-02, -3.530e-02, -1.033e-01, -8.986e-02, -6.790e-02, -3.885e-02, -2.127e-01, 2.390e-02), r);\n\tr = MulAdd(s5_8, M4(2.971e-02, 1.405e-01, 1.113e-01, -2.698e-02, -8.093e-02, -1.345e-01, -5.902e-02, -1.384e-01, 6.276e-02, 1.945e-01, -5.075e-02, -8.079e-02, 7.333e-02, 2.016e-01, -6.289e-02, -2.979e-02), r);\n\tr = MulAdd(s6_0, M4(1.445e-03, -4.488e-02, -2.415e-02, 1.054e-01, 6.162e-03, -1.355e-01, 9.439e-02, 9.080e-03, -4.235e-02, -2.195e-02, -1.061e-01, 4.653e-02, -7.711e-02, 4.756e-02, 9.480e-02, 1.635e-01), r);\n\tr = MulAdd(s6_1, M4(1.183e-01, -3.675e-02, -9.809e-03, -5.022e-02, -1.591e-01, -1.402e-01, -3.720e-02, 9.323e-02, 4.738e-02, -1.776e-02, 3.707e-02, -8.379e-02, -8.759e-02, -1.718e-01, -8.317e-04, 1.322e-01), r);\n\tr = MulAdd(s6_2, M4(-2.019e-02, -6.700e-02, -7.803e-02, -3.497e-02, -8.818e-02, -7.762e-02, 7.796e-02, 1.219e-01, 2.817e-02, 9.422e-02, 5.756e-02, 2.422e-03, -1.135e-01, 3.744e-02, 1.005e-01, 9.330e-02), r);\n\tr = MulAdd(s6_3, M4(-3.284e-02, -1.332e-01, -5.783e-02, 6.113e-03, 5.051e-02, -1.081e-01, 1.299e-02, -1.549e-01, 4.547e-02, -1.470e-02, 9.428e-02, 3.999e-02, -1.083e-01, -1.736e-02, 2.101e-02, -1.027e-01), r);\n\tr = MulAdd(s6_4, M4(1.999e-01, -2.282e-01, -5.370e-02, 1.913e-01, 6.297e-02, 3.588e-01, 5.296e-02, -4.865e-03, 2.450e-01, -1.021e-02, 9.037e-02, 1.332e-01, -1.555e-01, 4.639e-02, -1.286e-01, 1.229e-01), r);\n\tr = MulAdd(s6_5, M4(-1.487e-01, 3.054e-02, -5.555e-03, 1.334e-01, -1.896e-01, -3.180e-03, 6.536e-02, 2.874e-02, -9.890e-02, -5.342e-02, 4.329e-02, 2.736e-02, 4.534e-02, 2.542e-01, -4.647e-02, -2.836e-02), r);\n\tr = MulAdd(s6_6, M4(5.066e-02, 1.479e-01, 5.918e-02, 6.793e-02, 3.198e-02, -5.455e-02, -8.127e-02, 1.549e-01, -8.015e-02, -1.433e-01, -3.517e-02, -2.834e-03, 9.370e-03, 6.598e-02, -1.077e-01, 1.052e-02), r);\n\tr = MulAdd(s6_7, M4(-5.899e-02, 2.721e-02, 2.773e-02, 2.215e-02, -6.861e-02, -3.365e-02, 4.181e-03, -2.475e-02, 5.120e-03, 5.010e-02, 3.918e-02, -2.160e-02, -2.827e-01, -5.059e-04, -2.682e-02, 1.556e-01), r);\n\tr = MulAdd(s6_8, M4(1.836e-02, -1.041e-01, -2.065e-03, -3.724e-02, -3.146e-02, -2.356e-01, -1.360e-03, 2.028e-02, 2.248e-03, -2.449e-02, 2.114e-02, -7.193e-02, 8.894e-02, -5.642e-02, 7.970e-02, 3.218e-02), r);\n\tr = MulAdd(s7_0, M4(-1.689e-02, -8.536e-02, 6.276e-02, -8.715e-05, 1.777e-02, 3.522e-02, 6.070e-02, 6.502e-02, -2.579e-02, 2.513e-02, -2.430e-02, -3.051e-02, 1.130e-02, -6.306e-02, 5.845e-02, 9.750e-02), r);\n\tr = MulAdd(s7_1, M4(-2.998e-01, 1.075e-01, 7.024e-02, -5.273e-02, -7.570e-02, 2.087e-02, -3.490e-02, 7.225e-02, 8.222e-02, 6.358e-02, -4.160e-02, -7.680e-02, 2.715e-02, -6.176e-02, -4.450e-02, -1.597e-01), r);\n\tr = MulAdd(s7_2, M4(-1.689e-01, 3.540e-02, -5.165e-02, -4.040e-03, 8.521e-02, 6.889e-02, 4.339e-02, 6.233e-02, -6.550e-02, 3.086e-02, 1.696e-03, 1.017e-02, 5.270e-02, -3.555e-02, 3.351e-02, 2.184e-02), r);\n\tr = MulAdd(s7_3, M4(-2.087e-02, -9.450e-03, -5.071e-02, -4.235e-02, -2.721e-02, -2.547e-02, 4.675e-02, -9.540e-02, 4.705e-02, 1.342e-01, -2.493e-01, -4.504e-03, -7.887e-02, 4.524e-02, 3.062e-02, -1.208e-01), r);\n\tr = MulAdd(s7_4, M4(1.069e-01, -1.192e-01, 4.192e-02, -2.510e-02, 3.077e-02, 4.369e-02, 8.598e-02, 5.367e-02, 2.032e-01, 4.614e-02, -1.152e-01, 1.086e-01, -2.778e-02, 1.948e-01, 2.998e-03, 1.059e-01), r);\n\tr = MulAdd(s7_5, M4(-3.729e-01, 4.792e-02, 3.370e-02, -4.074e-02, -7.209e-02, 2.201e-03, -3.790e-02, 8.322e-02, 3.937e-02, 1.004e-01, -3.502e-02, 2.757e-02, -1.634e-02, -3.628e-02, -2.714e-02, -2.970e-03), r);\n\tr = MulAdd(s7_6, M4(-2.734e-02, 5.581e-02, 7.820e-04, 4.765e-02, 5.535e-02, -5.839e-02, -1.618e-02, 1.199e-01, -2.490e-02, -6.918e-02, -2.497e-02, 4.537e-04, 4.291e-02, 1.673e-01, 5.112e-02, 1.837e-02), r);\n\tr = MulAdd(s7_7, M4(-3.817e-02, -2.869e-01, 1.028e-01, 5.419e-02, -6.207e-02, -1.313e-01, -5.905e-02, -8.926e-02, 2.281e-03, 1.567e-01, 5.908e-02, 5.334e-02, -2.630e-02, -6.773e-02, -5.950e-03, 1.270e-02), r);\n\tr = MulAdd(s7_8, M4(-8.944e-02, -2.145e-01, 3.549e-02, -4.949e-02, 4.003e-02, 4.562e-02, 2.117e-02, 2.740e-02, 5.503e-02, -1.659e-02, -3.981e-02, -9.706e-02, 1.123e-02, -1.722e-02, 1.784e-02, 5.567e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.524e-02, 2.854e-03, -1.639e-02, -2.178e-02 };\n\tr = MulAdd(s0_0, M4(4.969e-02, -6.798e-02, -1.631e-02, 1.910e-02, 4.617e-02, 7.579e-02, -8.022e-02, 4.732e-02, 1.322e-01, 2.937e-02, -6.443e-02, 2.656e-02, -4.332e-02, 2.143e-02, -3.290e-02, 8.648e-02), r);\n\tr = MulAdd(s0_1, M4(4.241e-02, -2.179e-02, -2.367e-02, -1.959e-02, -9.025e-02, 1.486e-02, -8.249e-02, -2.254e-02, 1.462e-01, 7.592e-02, -1.422e-01, 1.703e-01, -3.402e-03, 1.878e-02, 3.641e-02, -1.572e-01), r);\n\tr = MulAdd(s0_2, M4(-5.421e-02, -4.759e-03, 2.244e-02, -8.270e-03, -1.239e-01, 7.347e-03, -8.013e-02, -1.097e-01, 4.680e-02, -1.434e-02, 9.645e-02, 3.507e-02, -1.215e-01, 4.258e-02, 1.093e-01, -5.892e-02), r);\n\tr = MulAdd(s0_3, M4(4.112e-03, -4.066e-02, -4.552e-03, 4.021e-02, -3.030e-02, 8.381e-02, -5.320e-02, 1.506e-01, 1.518e-02, -4.773e-02, -8.290e-02, 7.934e-02, 8.910e-02, -3.802e-02, 1.241e-01, -1.218e-01), r);\n\tr = MulAdd(s0_4, M4(-8.291e-02, 2.520e-02, 6.809e-02, -1.336e-01, 2.307e-01, 9.379e-02, -9.976e-02, 1.416e-01, 2.085e-01, 4.064e-02, 7.195e-02, 5.775e-02, 2.698e-02, 7.983e-02, 2.770e-01, 5.432e-02), r);\n\tr = MulAdd(s0_5, M4(5.054e-02, 6.358e-03, -7.003e-02, -4.608e-02, -6.481e-02, -8.573e-03, 4.816e-02, 2.117e-02, 9.525e-02, 1.064e-01, 3.040e-02, -9.385e-02, -9.724e-02, -3.018e-02, 3.774e-03, 2.656e-02), r);\n\tr = MulAdd(s0_6, M4(-9.158e-03, 6.796e-02, -3.302e-02, -1.438e-02, 3.986e-02, 3.158e-02, -2.615e-02, -2.499e-02, 1.700e-02, -4.627e-02, -3.077e-02, 1.543e-01, -1.178e-02, 6.861e-02, 1.617e-01, -1.282e-02), r);\n\tr = MulAdd(s0_7, M4(-5.207e-02, 3.744e-02, -2.341e-02, 6.656e-02, 5.310e-02, -3.374e-03, -2.944e-02, -1.715e-02, 1.132e-01, -1.197e-01, -4.874e-02, -2.272e-02, -2.206e-01, 1.917e-01, 2.666e-01, -3.541e-01), r);\n\tr = MulAdd(s0_8, M4(9.013e-03, 5.871e-03, -1.161e-02, -4.242e-02, -9.910e-02, 2.651e-02, 1.013e-02, -5.149e-02, -7.412e-03, 8.343e-02, -1.898e-02, -5.075e-02, -1.845e-01, 3.698e-02, 9.461e-02, -2.120e-01), r);\n\tr = MulAdd(s1_0, M4(2.429e-02, -7.648e-02, 3.298e-02, -3.032e-03, 7.314e-02, -6.164e-02, 3.428e-02, -1.245e-02, -4.498e-02, 1.093e-02, -2.699e-02, 7.298e-02, -5.168e-02, 1.331e-02, -7.590e-02, 7.366e-02), r);\n\tr = MulAdd(s1_1, M4(1.099e-01, -4.955e-02, -1.224e-01, 7.346e-03, 4.914e-03, -4.370e-02, 1.103e-01, -7.748e-02, 7.237e-04, 4.676e-02, -9.357e-02, 4.997e-03, -4.390e-02, 3.752e-02, -2.866e-02, 3.281e-02), r);\n\tr = MulAdd(s1_2, M4(-1.262e-02, 1.775e-02, -3.496e-02, 6.971e-02, 7.479e-02, 1.286e-02, 4.882e-02, 4.406e-02, 1.038e-01, 2.825e-02, -3.748e-02, -6.979e-02, 4.078e-02, 4.772e-03, -1.167e-02, -4.336e-02), r);\n\tr = MulAdd(s1_3, M4(2.242e-02, -1.776e-01, 1.049e-02, 1.485e-02, -8.566e-02, 3.446e-02, -1.039e-02, -6.812e-02, 1.424e-03, -6.183e-03, 5.377e-02, -9.231e-03, -8.639e-02, -6.571e-02, 1.050e-02, 9.043e-02), r);\n\tr = MulAdd(s1_4, M4(3.096e-02, -1.431e-01, -2.843e-02, -7.583e-02, 5.026e-03, 2.955e-02, -2.720e-02, -1.345e-01, -2.240e-02, -5.411e-02, 6.056e-03, -7.368e-02, 8.799e-02, -4.958e-02, -3.041e-02, 5.679e-02), r);\n\tr = MulAdd(s1_5, M4(1.070e-01, -4.377e-02, -2.826e-02, 8.609e-02, 4.070e-02, -7.259e-02, -3.162e-05, -7.352e-02, 4.335e-02, 1.387e-02, -4.858e-02, -2.004e-02, 1.130e-01, -7.727e-02, -7.790e-02, 1.178e-01), r);\n\tr = MulAdd(s1_6, M4(1.159e-01, 9.055e-02, 1.792e-01, 2.068e-01, 2.690e-02, -1.557e-02, 2.118e-02, 1.547e-01, -2.155e-02, 2.029e-02, -4.170e-02, -1.762e-02, -3.505e-02, -3.280e-03, -8.604e-02, 3.944e-02), r);\n\tr = MulAdd(s1_7, M4(1.398e-01, -2.824e-02, -4.291e-03, 1.327e-01, 5.433e-02, -3.675e-02, 1.093e-01, 9.705e-02, 1.108e-02, -4.899e-02, 7.807e-03, -4.815e-02, 1.042e-01, 3.069e-02, -6.328e-02, -1.331e-02), r);\n\tr = MulAdd(s1_8, M4(4.031e-02, -9.825e-02, -1.363e-02, -4.161e-02, -2.145e-02, -2.666e-02, 2.548e-02, -3.093e-02, -4.397e-02, -3.312e-02, -3.893e-02, -1.042e-01, 6.282e-03, 7.359e-02, -3.994e-02, -4.463e-02), r);\n\tr = MulAdd(s2_0, M4(3.742e-02, 2.102e-03, -8.991e-02, 1.841e-03, 1.011e-01, 1.243e-02, 2.460e-02, 7.946e-02, 8.754e-02, 8.191e-02, -7.770e-02, -1.909e-01, -6.812e-02, -6.579e-02, 3.355e-02, 1.095e-02), r);\n\tr = MulAdd(s2_1, M4(1.468e-01, -5.954e-03, -1.652e-01, 1.304e-01, 1.597e-01, 3.018e-02, 9.813e-03, 5.645e-02, 8.428e-02, 5.243e-03, -5.279e-02, 4.396e-02, -1.099e-01, -9.407e-03, -5.214e-02, -5.491e-02), r);\n\tr = MulAdd(s2_2, M4(-4.267e-02, 3.507e-02, -1.628e-02, 1.785e-02, 6.790e-02, 4.417e-02, -9.246e-02, -4.941e-02, -1.218e-02, 3.533e-02, 1.662e-02, -7.595e-02, -1.858e-02, -6.408e-02, 8.688e-05, 8.104e-02), r);\n\tr = MulAdd(s2_3, M4(-9.009e-02, 2.668e-02, -1.378e-01, 1.689e-01, 6.035e-03, 8.152e-03, 4.049e-02, 1.511e-01, 6.930e-02, 9.426e-02, -1.172e-01, -5.910e-02, 6.370e-02, -1.956e-01, -3.729e-02, 9.268e-02), r);\n\tr = MulAdd(s2_4, M4(2.163e-01, -5.092e-02, -7.840e-02, 1.343e-01, 2.474e-02, 6.257e-02, 1.575e-02, -3.697e-02, -1.090e-01, -1.585e-01, -1.491e-01, -7.206e-02, 1.910e-01, -9.062e-02, 2.939e-01, -1.115e-01), r);\n\tr = MulAdd(s2_5, M4(-7.395e-02, -1.166e-02, -3.892e-02, -4.676e-02, 9.469e-02, -1.064e-01, -1.998e-02, 6.847e-02, 1.670e-01, 2.912e-02, -8.629e-02, 1.202e-01, 5.849e-02, -1.098e-03, 5.147e-03, -6.240e-02), r);\n\tr = MulAdd(s2_6, M4(-1.813e-02, -5.520e-02, -8.923e-03, 5.608e-02, -5.733e-02, -5.186e-02, -6.152e-02, -4.688e-03, 7.954e-03, -8.228e-02, -6.753e-02, -1.760e-02, 1.659e-01, -2.446e-01, -2.974e-02, -4.604e-02), r);\n\tr = MulAdd(s2_7, M4(1.153e-01, -1.993e-02, -9.199e-02, -8.763e-02, 1.034e-01, -2.709e-01, -1.090e-01, -2.574e-02, 1.716e-01, -1.640e-01, -9.578e-02, -2.558e-02, -7.287e-02, -3.913e-01, 5.900e-03, -1.930e-01), r);\n\tr = MulAdd(s2_8, M4(-5.687e-02, -6.216e-03, -4.808e-02, 1.562e-02, -5.671e-03, -5.044e-02, -6.741e-02, 7.378e-02, -5.833e-02, 2.604e-02, 2.209e-03, 9.277e-02, 1.407e-01, -6.460e-02, 1.792e-02, -2.688e-02), r);\n\tr = MulAdd(s3_0, M4(1.301e-01, -6.673e-02, -4.673e-03, -1.528e-02, -7.053e-02, 1.336e-02, -5.414e-02, 5.152e-02, -5.916e-02, 9.150e-03, 1.437e-03, 4.084e-02, -5.096e-02, 4.691e-03, 1.502e-01, 5.893e-03), r);\n\tr = MulAdd(s3_1, M4(-3.160e-02, 1.469e-01, -1.019e-01, -7.662e-02, 2.197e-01, 1.817e-02, 8.725e-02, -1.522e-01, -1.764e-02, -1.970e-02, 8.117e-03, 3.590e-02, -8.543e-02, 6.164e-03, -6.264e-02, -4.869e-02), r);\n\tr = MulAdd(s3_2, M4(3.845e-02, 7.640e-03, -3.881e-02, 5.850e-03, 5.538e-03, -3.748e-02, 1.341e-02, -9.292e-03, 7.562e-02, -4.774e-02, -1.123e-02, 2.085e-02, 7.349e-02, -7.243e-03, 4.272e-02, 7.880e-02), r);\n\tr = MulAdd(s3_3, M4(-1.380e-01, 4.229e-02, 2.785e-01, 3.801e-01, 5.090e-02, -1.460e-02, 6.248e-02, 1.078e-01, -2.172e-02, 1.705e-02, -3.401e-02, 2.091e-02, 1.108e-01, 6.484e-02, 6.153e-02, -1.278e-01), r);\n\tr = MulAdd(s3_4, M4(1.742e-01, -4.719e-02, -3.431e-01, -1.191e-01, -2.863e-02, -1.824e-02, 1.543e-01, 2.224e-01, -1.706e-01, 9.533e-02, 1.460e-01, -2.465e-02, -2.429e-01, 1.371e-01, 1.065e-01, 2.320e-02), r);\n\tr = MulAdd(s3_5, M4(-1.137e-01, 7.592e-03, 5.685e-02, -1.670e-02, -2.377e-02, -1.052e-01, 9.345e-02, 1.203e-01, -8.840e-03, 3.811e-03, 1.680e-02, -1.933e-02, -1.316e-02, 4.747e-02, -1.437e-02, 4.299e-02), r);\n\tr = MulAdd(s3_6, M4(-6.346e-03, -2.647e-02, 1.117e-01, 6.339e-02, -7.772e-02, -1.288e-02, 1.283e-03, 2.006e-01, 2.522e-02, 4.820e-02, 3.984e-02, 8.423e-02, -4.313e-02, -4.313e-02, 5.460e-02, 1.835e-01), r);\n\tr = MulAdd(s3_7, M4(2.887e-01, -2.041e-01, 4.232e-02, 3.653e-02, 2.437e-02, -2.630e-02, 1.212e-01, 9.045e-02, 5.126e-02, -2.397e-02, 2.083e-02, -2.262e-02, 1.174e-01, 2.861e-02, -1.233e-02, 7.360e-02), r);\n\tr = MulAdd(s3_8, M4(-9.027e-02, -2.971e-02, 5.210e-02, 1.163e-01, -3.642e-02, 3.941e-02, 4.917e-02, 3.244e-02, -4.757e-02, -8.186e-02, 9.365e-03, -6.672e-03, -2.995e-02, -9.676e-02, -1.742e-02, -3.560e-02), r);\n\tr = MulAdd(s4_0, M4(-2.413e-02, 5.733e-02, -3.662e-02, -1.290e-01, -2.503e-02, 5.071e-02, 2.409e-02, -1.394e-02, 5.004e-02, -6.543e-03, 1.458e-02, 2.920e-02, -2.374e-02, -2.253e-02, 4.324e-02, 2.165e-02), r);\n\tr = MulAdd(s4_1, M4(-6.530e-02, 1.960e-02, 2.366e-02, 3.427e-02, 4.881e-02, 1.563e-02, -3.348e-02, 1.288e-03, -1.898e-02, 7.115e-02, -1.124e-01, 1.629e-01, 1.449e-01, 3.789e-02, 4.047e-02, 7.443e-02), r);\n\tr = MulAdd(s4_2, M4(4.340e-02, -3.738e-03, -1.450e-02, -3.659e-02, -8.028e-03, -4.039e-02, 3.604e-03, 8.585e-02, -2.229e-02, -3.620e-02, 5.393e-02, 6.269e-02, -1.034e-02, 2.669e-02, -7.571e-03, 3.290e-02), r);\n\tr = MulAdd(s4_3, M4(-6.251e-02, 6.566e-02, -1.510e-01, -1.397e-01, 5.000e-02, 3.678e-02, 1.271e-01, -6.640e-02, -1.842e-01, 1.340e-01, 2.975e-02, -4.881e-02, 1.065e-01, -8.574e-02, -5.624e-02, 3.385e-02), r);\n\tr = MulAdd(s4_4, M4(7.366e-02, 2.984e-02, -1.919e-01, -7.495e-02, -1.070e-01, -9.427e-02, 7.523e-02, 2.054e-02, -3.354e-02, 1.520e-01, 1.800e-01, 8.748e-02, 1.248e-01, -2.123e-01, 2.753e-02, 7.032e-02), r);\n\tr = MulAdd(s4_5, M4(8.098e-03, -1.405e-02, 9.718e-02, 1.855e-02, 1.367e-01, -2.222e-02, -2.826e-02, 9.571e-03, -5.042e-02, 3.500e-02, 6.680e-02, -1.410e-02, -5.061e-02, -6.171e-03, 1.901e-01, 9.228e-02), r);\n\tr = MulAdd(s4_6, M4(2.685e-02, 6.709e-02, -3.187e-02, 1.025e-01, -8.084e-03, -2.715e-02, -3.167e-02, 1.119e-01, -4.820e-02, 1.070e-01, -3.387e-03, 9.772e-02, -5.765e-03, 7.395e-02, -6.708e-02, 1.610e-01), r);\n\tr = MulAdd(s4_7, M4(-1.945e-02, -4.996e-02, 1.571e-02, 2.683e-02, -8.484e-02, 2.589e-02, 2.119e-02, 1.573e-01, -1.111e-01, 2.642e-02, -9.621e-03, 3.552e-03, 4.055e-02, 6.634e-02, -1.663e-02, -4.428e-04), r);\n\tr = MulAdd(s4_8, M4(-6.808e-02, 4.646e-02, 3.264e-02, 5.362e-03, 1.139e-02, -7.739e-03, -4.597e-02, 5.726e-03, -4.609e-02, 2.209e-02, 3.058e-03, -1.594e-02, -9.159e-02, 2.359e-02, 6.326e-02, 1.340e-03), r);\n\tr = MulAdd(s5_0, M4(2.998e-01, 6.184e-02, -3.594e-02, 1.837e-02, 4.618e-02, 6.769e-02, 7.110e-02, 5.140e-02, -3.745e-02, 3.319e-02, 1.519e-02, -7.435e-03, -1.101e-01, -1.383e-02, -3.191e-02, -2.942e-03), r);\n\tr = MulAdd(s5_1, M4(1.386e-02, -3.171e-02, 2.864e-02, 5.892e-02, -1.940e-01, -1.093e-02, -7.669e-02, 5.503e-02, -6.708e-03, -4.250e-03, -1.225e-02, 2.570e-02, -2.052e-02, -4.288e-02, -1.539e-01, -1.591e-01), r);\n\tr = MulAdd(s5_2, M4(1.389e-01, 1.930e-02, -8.161e-03, 3.241e-02, -3.284e-02, 2.070e-02, -8.118e-02, 2.614e-02, -4.448e-03, -1.930e-02, 1.276e-02, -2.240e-02, -1.700e-01, 1.309e-03, -9.330e-03, -1.701e-01), r);\n\tr = MulAdd(s5_3, M4(2.932e-02, 1.999e-02, 1.099e-01, -2.874e-02, 1.307e-01, 1.732e-01, 1.651e-01, -2.842e-01, -8.364e-02, -6.895e-02, -3.170e-03, 7.641e-02, 1.224e-01, 5.736e-02, -1.010e-01, -1.254e-02), r);\n\tr = MulAdd(s5_4, M4(5.407e-02, -1.252e-01, -2.510e-01, -2.635e-01, -2.482e-01, 1.820e-02, 4.384e-02, -2.852e-01, 1.575e-01, 1.870e-02, 4.663e-03, 5.438e-02, -1.672e-01, -1.272e-01, -1.955e-01, 2.434e-01), r);\n\tr = MulAdd(s5_5, M4(-2.337e-02, -3.724e-02, -4.250e-02, 6.240e-02, 8.226e-02, -9.472e-03, -7.522e-02, -2.530e-01, -5.063e-02, 4.506e-03, -2.741e-02, -1.436e-01, -1.672e-01, 1.117e-01, -1.196e-01, 4.086e-02), r);\n\tr = MulAdd(s5_6, M4(4.256e-02, -1.184e-01, 4.905e-02, 1.424e-01, 5.343e-02, -6.726e-02, 4.591e-03, -1.502e-03, -1.130e-01, -4.209e-02, -1.286e-02, 1.288e-01, -5.045e-02, 3.221e-02, -9.325e-02, 1.091e-01), r);\n\tr = MulAdd(s5_7, M4(1.177e-01, -1.748e-02, 4.951e-02, -2.133e-02, 8.531e-02, -3.125e-02, -9.790e-02, -6.702e-02, -2.695e-03, -6.694e-02, -8.823e-05, -2.169e-02, -1.462e-01, -1.821e-02, -1.749e-01, -3.450e-02), r);\n\tr = MulAdd(s5_8, M4(6.438e-02, 2.157e-02, 1.113e-02, -6.066e-02, 3.259e-02, 3.472e-02, -1.023e-01, -1.054e-01, -2.501e-02, -6.527e-02, 2.978e-02, -1.117e-01, -4.648e-02, 6.757e-02, 1.049e-02, -6.068e-02), r);\n\tr = MulAdd(s6_0, M4(7.482e-02, -4.795e-02, 1.097e-01, -1.281e-02, -9.006e-02, 4.621e-02, 1.410e-02, -1.494e-01, -1.193e-02, 6.909e-02, 6.081e-02, 1.735e-03, 8.806e-02, 4.528e-04, -9.205e-03, -4.175e-02), r);\n\tr = MulAdd(s6_1, M4(-1.338e-01, 3.338e-02, 5.148e-02, 1.026e-02, -5.311e-02, -3.567e-02, -1.388e-02, -7.732e-02, 5.164e-02, -5.179e-03, 5.707e-03, -6.708e-02, -1.417e-01, 3.568e-02, -4.803e-02, 1.829e-02), r);\n\tr = MulAdd(s6_2, M4(4.183e-02, 2.789e-02, -4.511e-02, 7.451e-02, -2.456e-01, 6.764e-02, -1.296e-01, 1.734e-02, 2.853e-03, -2.430e-03, -2.769e-02, -4.073e-02, 1.062e-02, 9.062e-02, 1.312e-01, 6.774e-03), r);\n\tr = MulAdd(s6_3, M4(9.957e-02, -8.275e-02, -7.864e-03, -1.183e-01, 3.777e-02, -1.597e-01, 1.157e-02, 2.856e-02, -1.445e-01, -7.529e-02, 1.460e-01, 7.438e-02, 2.038e-01, 1.289e-01, -8.220e-02, 2.154e-01), r);\n\tr = MulAdd(s6_4, M4(-1.303e-01, 1.338e-01, 1.708e-01, -1.345e-01, 4.503e-02, -1.507e-01, -1.312e-01, 7.709e-02, -5.646e-02, 9.898e-02, 6.089e-02, -2.127e-01, -1.776e-01, 1.346e-01, -1.501e-01, 4.479e-01), r);\n\tr = MulAdd(s6_5, M4(-2.287e-02, 1.816e-02, 6.476e-03, -6.000e-03, 2.583e-02, 1.181e-01, 2.830e-02, 4.493e-02, 6.293e-02, -1.721e-02, -3.978e-02, 1.178e-02, 5.155e-02, 7.724e-02, 7.545e-02, 2.235e-01), r);\n\tr = MulAdd(s6_6, M4(1.089e-02, 9.929e-03, 3.291e-02, -4.004e-02, -3.411e-02, -1.482e-01, 8.173e-02, -1.300e-01, -9.727e-02, 1.038e-01, 2.665e-02, 7.097e-02, 1.546e-01, -6.419e-03, -6.211e-02, 1.378e-02), r);\n\tr = MulAdd(s6_7, M4(-3.750e-02, -6.492e-02, 1.402e-01, -8.250e-02, 1.420e-01, -7.486e-02, -1.294e-01, 7.090e-03, -6.692e-02, -5.347e-02, 5.752e-02, 9.145e-02, -1.170e-01, 2.695e-02, 3.856e-02, -1.005e-01), r);\n\tr = MulAdd(s6_8, M4(-7.991e-02, -2.176e-02, 1.824e-02, -2.861e-02, 6.101e-02, 2.592e-02, 3.747e-02, 6.699e-02, 2.198e-02, 5.217e-02, 1.520e-02, 2.060e-02, -3.168e-02, 5.624e-02, -2.631e-02, 1.539e-01), r);\n\tr = MulAdd(s7_0, M4(-2.234e-03, -8.024e-02, -4.880e-02, -3.628e-02, 6.282e-02, -2.876e-02, -2.045e-02, -9.916e-02, -1.951e-02, 2.522e-02, 5.536e-02, -1.400e-02, 4.454e-02, -5.995e-02, -1.083e-02, 3.267e-02), r);\n\tr = MulAdd(s7_1, M4(1.363e-01, -1.627e-02, -7.451e-02, -2.096e-01, 5.555e-02, -8.325e-02, 4.384e-02, 3.756e-02, -4.115e-02, -4.452e-02, 5.062e-02, 1.560e-01, -6.836e-02, -9.891e-03, 7.183e-02, -8.960e-02), r);\n\tr = MulAdd(s7_2, M4(6.864e-02, 4.224e-02, 6.149e-02, -2.407e-01, -1.763e-01, -3.429e-03, -8.891e-02, 5.303e-02, -1.704e-01, 1.372e-02, 5.493e-02, -2.983e-02, -9.787e-02, -1.998e-02, 1.076e-02, 8.817e-02), r);\n\tr = MulAdd(s7_3, M4(6.177e-02, 9.915e-02, -2.032e-01, 1.047e-01, -3.088e-02, 1.345e-02, 4.722e-02, 2.977e-02, 7.561e-03, 1.231e-01, 5.659e-03, 1.742e-01, 1.224e-01, 5.175e-03, -4.049e-02, 9.241e-02), r);\n\tr = MulAdd(s7_4, M4(2.840e-01, 1.155e-01, 1.048e-01, 1.054e-01, -4.146e-02, -1.333e-01, 8.523e-02, 2.791e-01, 1.161e-01, 8.725e-02, 4.376e-01, 4.971e-02, -8.106e-02, -6.255e-02, -1.393e-01, 1.394e-02), r);\n\tr = MulAdd(s7_5, M4(-1.513e-03, -8.884e-03, -6.384e-02, 4.657e-02, -1.265e-02, 5.092e-02, 1.608e-02, 3.075e-02, -1.785e-01, -6.070e-02, 6.474e-02, 1.909e-02, 7.206e-02, 9.939e-03, 4.189e-02, -4.761e-02), r);\n\tr = MulAdd(s7_6, M4(1.031e-01, 1.450e-02, 1.205e-01, -2.352e-02, -1.105e-02, -1.111e-01, 9.057e-02, -7.851e-02, -3.125e-02, 4.754e-02, -7.714e-02, -1.526e-02, 1.171e-01, 7.729e-03, 6.555e-03, -4.499e-02), r);\n\tr = MulAdd(s7_7, M4(3.134e-01, 1.278e-01, 3.646e-02, -1.853e-01, -8.604e-02, 1.031e-02, -6.833e-02, -9.669e-02, -1.471e-01, -1.839e-03, 1.054e-01, -9.685e-03, 4.999e-03, -4.691e-02, 8.529e-02, -4.799e-02), r);\n\tr = MulAdd(s7_8, M4(1.734e-01, -9.505e-05, 6.501e-02, -2.566e-02, 9.206e-02, 4.209e-02, 3.785e-02, 2.968e-02, -6.790e-02, 5.441e-02, 5.599e-02, 6.679e-03, 7.613e-03, 7.214e-03, -4.941e-02, 6.328e-02), r);\n\treturn r;\n}\n\nvoid Pass11(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 12\n//!DESC conv11\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.128e-02, 1.360e-02, 2.588e-03, 3.974e-04 };\n\tr = MulAdd(s0_0, M4(-1.915e-01, -1.169e-01, 1.190e-01, 5.826e-02, -6.870e-03, 1.762e-02, 5.676e-02, -3.206e-03, 5.004e-02, -1.895e-02, 2.043e-02, -8.222e-02, 1.991e-01, 4.123e-02, -4.290e-02, -2.150e-02), r);\n\tr = MulAdd(s0_1, M4(-1.158e-01, -1.896e-01, -1.275e-01, -1.708e-01, -2.118e-02, 3.400e-02, -1.248e-01, -3.245e-02, -2.000e-02, 1.093e-01, 7.554e-03, 4.626e-02, 7.514e-02, 1.358e-02, 3.031e-02, 6.514e-02), r);\n\tr = MulAdd(s0_2, M4(-7.302e-02, 1.582e-02, 2.889e-02, -1.082e-01, 1.996e-02, -4.931e-02, 1.216e-02, -5.767e-02, -8.223e-02, -7.295e-02, 7.653e-03, 2.531e-02, 8.554e-02, 2.361e-02, 2.901e-02, 3.306e-02), r);\n\tr = MulAdd(s0_3, M4(-8.676e-02, -2.726e-01, 2.079e-01, 1.976e-01, 6.214e-02, -3.046e-02, -4.187e-02, -9.174e-02, 6.240e-02, -1.140e-01, -3.985e-02, 5.791e-02, -2.981e-01, -1.307e-03, 8.713e-02, -1.130e-01), r);\n\tr = MulAdd(s0_4, M4(-2.886e-01, 2.820e-02, -1.374e-01, 2.046e-01, 6.850e-02, -7.892e-02, 2.798e-01, -4.937e-02, 1.450e-01, -3.480e-03, -2.459e-01, -1.068e-01, -4.921e-02, 1.577e-01, 1.469e-01, -1.741e-01), r);\n\tr = MulAdd(s0_5, M4(-1.059e-01, 1.108e-01, -9.792e-02, -2.284e-02, -2.672e-02, -1.763e-02, -5.990e-02, -8.621e-02, -1.893e-02, -1.552e-02, -4.040e-02, 3.691e-02, -1.275e-01, -3.942e-02, 6.189e-02, -1.852e-01), r);\n\tr = MulAdd(s0_6, M4(-1.295e-01, -1.477e-02, -8.103e-02, -1.089e-02, 1.002e-02, 4.025e-02, -2.811e-02, 7.984e-02, 5.059e-02, 8.992e-02, 2.116e-02, 2.413e-02, 5.388e-02, -7.130e-02, -9.228e-02, -1.752e-03), r);\n\tr = MulAdd(s0_7, M4(4.537e-02, 1.065e-02, -1.856e-01, 1.258e-03, -4.945e-02, -1.652e-01, 1.330e-01, 1.227e-01, 9.099e-02, -2.081e-02, 4.318e-02, 1.210e-03, -8.341e-02, 2.881e-02, -1.661e-02, -6.715e-02), r);\n\tr = MulAdd(s0_8, M4(9.870e-03, 5.725e-02, 3.166e-02, 2.656e-02, -4.916e-02, -1.751e-02, 3.296e-02, 3.218e-02, -1.498e-02, 1.853e-02, 7.123e-03, 7.339e-02, -7.305e-02, -1.655e-01, 2.114e-02, -5.433e-03), r);\n\tr = MulAdd(s1_0, M4(6.634e-02, -2.533e-02, 8.221e-02, -3.207e-02, -8.808e-02, 3.723e-02, 6.756e-02, 1.038e-01, -4.526e-02, 2.944e-02, 3.895e-02, -1.382e-01, 1.313e-01, 1.640e-02, -1.587e-02, 6.436e-02), r);\n\tr = MulAdd(s1_1, M4(6.915e-02, 1.180e-01, -2.793e-03, -7.074e-02, -6.017e-02, -1.370e-01, -7.107e-02, -9.355e-02, 1.330e-02, -2.301e-02, 5.857e-02, -2.194e-02, 1.753e-02, -7.409e-02, -4.217e-02, 9.795e-02), r);\n\tr = MulAdd(s1_2, M4(6.861e-02, 2.690e-02, 2.689e-02, 1.245e-02, 5.594e-02, 3.109e-02, 3.444e-02, -7.013e-02, -2.348e-02, 1.369e-01, 6.688e-02, -4.010e-02, 2.610e-02, 5.055e-02, -7.790e-02, 5.747e-02), r);\n\tr = MulAdd(s1_3, M4(1.062e-01, -5.265e-02, -3.452e-02, 7.210e-03, 1.180e-01, 4.908e-02, -8.465e-02, 3.929e-03, 4.042e-02, 2.169e-01, -1.626e-01, -2.743e-03, -1.461e-02, 1.247e-02, -3.060e-02, 1.619e-01), r);\n\tr = MulAdd(s1_4, M4(-8.396e-02, 7.641e-02, 2.572e-02, 3.759e-02, 1.577e-01, -3.217e-01, 1.614e-01, -1.043e-02, 3.079e-02, -2.685e-01, -4.387e-02, -1.696e-01, 1.448e-01, 1.136e-01, -3.021e-02, 1.499e-01), r);\n\tr = MulAdd(s1_5, M4(-8.857e-03, 5.715e-03, -6.301e-02, -4.624e-02, -4.868e-02, 2.177e-02, -2.426e-03, -1.321e-01, 5.648e-02, -6.338e-03, 4.336e-02, 2.730e-03, 4.977e-02, 4.718e-04, -1.090e-02, -3.998e-02), r);\n\tr = MulAdd(s1_6, M4(-7.858e-03, 6.636e-02, 3.191e-02, -3.694e-02, 3.115e-02, -6.413e-02, 2.714e-02, 4.921e-02, 1.193e-01, 8.688e-02, 1.835e-01, 8.366e-02, -3.097e-02, -6.977e-02, -1.575e-02, 2.729e-02), r);\n\tr = MulAdd(s1_7, M4(-4.780e-02, 2.397e-02, -1.122e-01, -5.331e-02, 4.054e-02, 1.939e-02, -1.676e-01, 4.318e-02, -5.867e-02, 1.400e-01, 2.432e-01, -2.698e-02, -3.587e-02, 1.348e-01, 7.058e-02, -6.223e-03), r);\n\tr = MulAdd(s1_8, M4(-2.230e-02, 5.874e-02, -2.458e-03, -7.733e-03, -1.283e-02, -1.249e-01, -4.782e-02, 2.549e-02, 8.556e-02, -1.097e-01, 8.481e-02, -2.428e-03, -4.674e-03, -3.139e-02, -6.233e-02, 2.305e-02), r);\n\tr = MulAdd(s2_0, M4(-9.413e-02, -4.736e-02, 4.676e-02, -1.255e-01, -1.187e-01, 9.706e-02, -1.397e-01, -9.898e-02, -1.176e-01, -3.923e-02, 8.698e-02, 1.274e-01, 2.611e-03, 1.828e-02, 2.152e-02, -4.350e-02), r);\n\tr = MulAdd(s2_1, M4(6.654e-02, 2.420e-03, 5.422e-02, -7.395e-02, -2.491e-01, -1.371e-01, 3.299e-02, 5.930e-02, -1.434e-01, -1.292e-01, -5.649e-02, 4.648e-02, 8.573e-02, -2.748e-02, 1.604e-01, 1.473e-02), r);\n\tr = MulAdd(s2_2, M4(1.804e-02, 4.354e-02, 8.807e-02, 1.544e-02, -1.448e-01, 4.923e-02, -3.842e-02, 1.971e-02, -4.645e-02, 8.470e-03, -1.666e-02, 6.277e-02, 8.557e-02, -1.134e-02, 6.399e-02, -5.746e-02), r);\n\tr = MulAdd(s2_3, M4(-7.887e-02, 4.637e-02, -2.723e-02, 5.297e-03, -2.688e-01, 1.936e-02, -6.007e-02, 5.021e-02, 8.858e-02, 1.747e-01, 3.388e-02, 6.603e-02, 1.610e-02, -1.990e-01, 1.176e-01, 2.307e-01), r);\n\tr = MulAdd(s2_4, M4(1.228e-01, -1.251e-01, -1.899e-01, -1.793e-01, -2.170e-01, 1.480e-01, 1.720e-01, 8.567e-03, 6.609e-02, -2.860e-01, -1.202e-01, 1.993e-01, 1.246e-01, -6.924e-02, -1.348e-01, -2.488e-01), r);\n\tr = MulAdd(s2_5, M4(2.079e-02, 1.208e-01, 9.448e-02, -7.905e-02, -1.375e-01, 6.923e-02, -4.167e-02, 8.062e-03, 1.164e-01, 6.644e-02, -1.122e-01, 1.183e-01, 3.517e-02, 3.437e-02, -7.007e-04, 3.188e-02), r);\n\tr = MulAdd(s2_6, M4(2.444e-01, 2.773e-01, -1.278e-01, -3.716e-02, -1.564e-01, -3.690e-02, 5.900e-03, -5.933e-03, -6.071e-02, 3.003e-02, -4.444e-02, -1.545e-02, -4.730e-02, -6.126e-02, 1.284e-01, 4.191e-02), r);\n\tr = MulAdd(s2_7, M4(-9.036e-02, -6.615e-02, 1.670e-01, 1.248e-02, -1.547e-02, 1.639e-05, 4.639e-02, 9.701e-02, 5.673e-02, -5.440e-02, -1.628e-02, 6.036e-02, 1.977e-01, 1.232e-02, -8.781e-02, 6.303e-02), r);\n\tr = MulAdd(s2_8, M4(-1.259e-03, -1.527e-01, -5.524e-02, 2.599e-02, -1.163e-01, 1.410e-01, -8.661e-02, -2.286e-02, 2.106e-02, 4.968e-02, -1.060e-01, 5.203e-02, -3.248e-02, 1.855e-02, 7.102e-02, -5.136e-02), r);\n\tr = MulAdd(s3_0, M4(-2.382e-01, -4.257e-02, 1.572e-02, -6.708e-02, -8.716e-03, 3.438e-02, -3.772e-02, 3.491e-02, -1.030e-02, 6.835e-03, 6.272e-02, 1.167e-02, -1.005e-01, -1.801e-02, 1.201e-02, -7.896e-02), r);\n\tr = MulAdd(s3_1, M4(-1.519e-01, -2.255e-02, -2.546e-02, -2.894e-02, -1.238e-01, -4.474e-02, 9.939e-02, 1.083e-01, -9.085e-03, 7.234e-02, -4.092e-02, -5.775e-02, -3.120e-02, -1.194e-01, -6.205e-02, 1.012e-01), r);\n\tr = MulAdd(s3_2, M4(-7.892e-02, -3.893e-02, -1.227e-02, -3.555e-02, -1.229e-01, -1.627e-02, -2.630e-02, 3.135e-02, -7.737e-02, -7.661e-02, -4.174e-02, -1.994e-02, -1.121e-02, -1.866e-01, -3.032e-02, 2.742e-02), r);\n\tr = MulAdd(s3_3, M4(-5.926e-03, 1.696e-01, -7.380e-04, 1.619e-01, -1.403e-01, 3.431e-04, 3.609e-02, -2.054e-02, 5.822e-02, 2.354e-02, 4.879e-02, -3.406e-02, -1.296e-01, 9.718e-02, -2.703e-02, -3.047e-02), r);\n\tr = MulAdd(s3_4, M4(1.956e-02, -1.727e-01, 1.998e-01, 1.020e-01, -1.521e-01, -1.670e-02, 1.427e-01, 3.305e-02, -5.912e-03, -1.124e-01, 5.324e-02, 3.821e-02, 2.170e-01, -2.779e-01, 4.821e-01, -1.473e-01), r);\n\tr = MulAdd(s3_5, M4(3.682e-02, 1.105e-01, 8.481e-03, 2.969e-02, 2.546e-02, 5.529e-02, -2.567e-02, -6.981e-03, 1.006e-02, -4.124e-02, -4.984e-02, -1.972e-02, -1.615e-02, -1.370e-01, -3.224e-02, -2.655e-02), r);\n\tr = MulAdd(s3_6, M4(-9.353e-04, 4.101e-02, 6.678e-03, 4.895e-02, -2.400e-02, -2.993e-02, -1.824e-02, 8.775e-04, -6.785e-02, -2.088e-02, 4.766e-02, -2.042e-02, 1.184e-02, 5.569e-02, -1.253e-01, -7.349e-02), r);\n\tr = MulAdd(s3_7, M4(-4.982e-03, -8.675e-02, 9.220e-03, 3.292e-02, -6.760e-02, 2.873e-03, 3.582e-02, 4.781e-02, 1.800e-01, 8.379e-02, -9.129e-02, 5.949e-02, -3.530e-02, -2.078e-01, 1.357e-01, 6.611e-02), r);\n\tr = MulAdd(s3_8, M4(-5.324e-02, -1.870e-02, 1.161e-02, 2.989e-05, 6.348e-03, 6.436e-02, -4.735e-02, -2.747e-03, -1.014e-02, 4.067e-02, -4.654e-02, -2.985e-02, -6.898e-02, 5.993e-02, 5.866e-02, -5.755e-02), r);\n\tr = MulAdd(s4_0, M4(-1.806e-01, -6.770e-02, 8.034e-02, -1.095e-01, 4.820e-02, -7.115e-02, 4.395e-02, -2.725e-02, -4.917e-03, 5.965e-03, -2.441e-02, 3.640e-02, 1.741e-02, 1.028e-01, 7.352e-03, 9.533e-04), r);\n\tr = MulAdd(s4_1, M4(1.244e-02, 1.539e-02, -7.837e-02, -9.851e-02, -1.872e-01, 2.685e-02, -1.372e-02, -1.288e-01, -7.416e-02, -1.059e-03, 1.548e-01, -8.075e-02, -3.300e-02, -1.452e-01, -1.467e-02, 4.678e-02), r);\n\tr = MulAdd(s4_2, M4(-6.319e-02, 2.047e-02, -3.524e-02, -8.293e-02, 1.226e-01, -2.587e-01, 2.677e-01, -5.000e-02, 4.268e-03, 6.761e-02, 4.449e-02, -5.548e-02, -6.619e-03, 6.231e-02, -5.589e-03, 5.727e-02), r);\n\tr = MulAdd(s4_3, M4(2.026e-02, 1.317e-01, -1.516e-02, -2.647e-01, -4.952e-02, 5.845e-02, -5.285e-02, -4.733e-03, -5.163e-02, 2.782e-02, 3.565e-02, 3.868e-02, 2.486e-02, 8.674e-02, -5.657e-02, 1.044e-02), r);\n\tr = MulAdd(s4_4, M4(3.854e-02, -1.673e-01, 3.037e-01, 1.016e-01, -1.080e-02, 6.207e-02, 8.249e-02, 1.300e-01, -8.758e-02, 3.024e-02, 1.130e-01, 8.472e-02, -3.803e-02, -7.029e-02, 1.651e-02, 3.407e-01), r);\n\tr = MulAdd(s4_5, M4(9.317e-02, 6.574e-02, 1.338e-01, 9.046e-03, 3.361e-02, -1.313e-01, 1.517e-01, 4.762e-02, 7.507e-03, -8.164e-02, -1.650e-01, -2.319e-02, -1.172e-01, -8.297e-02, 9.258e-02, -4.425e-02), r);\n\tr = MulAdd(s4_6, M4(4.385e-02, 8.606e-03, -1.949e-02, 3.010e-03, 5.382e-02, -4.354e-02, 1.261e-02, -5.949e-02, -1.466e-02, -1.887e-02, 4.227e-04, 9.980e-03, 2.933e-02, 8.980e-03, 9.546e-02, 3.022e-02), r);\n\tr = MulAdd(s4_7, M4(5.263e-02, -1.155e-01, 8.001e-02, 1.899e-01, 1.548e-02, -4.710e-02, 1.056e-01, -4.798e-02, -1.586e-01, -1.727e-02, -1.260e-01, -3.351e-02, -1.084e-02, -1.788e-02, -2.251e-01, -1.177e-01), r);\n\tr = MulAdd(s4_8, M4(3.676e-02, 8.270e-02, 1.031e-01, 5.032e-02, -1.351e-01, -1.402e-01, 1.820e-02, -5.783e-02, -2.887e-02, 3.201e-02, -6.555e-03, -6.838e-02, 5.485e-02, -5.880e-02, 1.818e-02, 5.227e-02), r);\n\tr = MulAdd(s5_0, M4(-2.373e-02, -5.297e-02, 6.409e-02, -8.760e-03, 1.765e-02, 3.389e-02, -1.094e-02, -8.668e-02, 2.111e-02, -4.394e-02, 6.426e-03, 7.256e-03, 8.129e-03, 2.218e-02, -9.743e-04, -5.823e-02), r);\n\tr = MulAdd(s5_1, M4(-4.578e-04, -1.229e-01, 5.579e-02, -1.009e-01, -1.058e-01, 3.231e-02, -1.274e-02, -7.973e-02, -6.806e-02, -2.071e-02, -2.131e-02, -8.127e-02, 3.821e-03, 1.196e-02, -5.473e-02, 1.707e-01), r);\n\tr = MulAdd(s5_2, M4(-2.637e-02, 2.379e-03, -5.428e-02, -3.823e-02, -7.033e-03, 1.333e-01, -1.759e-03, -2.521e-02, 4.663e-02, -6.904e-02, 3.872e-02, -1.550e-03, 2.389e-03, -1.724e-02, 1.931e-02, 1.147e-03), r);\n\tr = MulAdd(s5_3, M4(1.278e-01, -2.017e-01, 1.042e-01, -7.642e-02, -4.654e-02, -3.928e-02, -1.189e-01, 7.038e-02, 2.995e-01, 6.048e-02, 1.942e-02, 1.076e-01, -6.889e-03, -7.257e-02, -4.722e-02, 3.982e-02), r);\n\tr = MulAdd(s5_4, M4(-4.283e-02, 2.050e-01, -3.413e-01, -1.939e-02, -6.313e-02, -4.603e-02, -3.493e-02, 4.534e-02, -8.708e-02, -1.357e-01, 1.964e-01, 2.077e-01, -5.591e-02, -1.052e-01, -1.626e-01, 9.349e-02), r);\n\tr = MulAdd(s5_5, M4(3.414e-02, 6.631e-02, 5.159e-02, -9.068e-03, -4.447e-02, -8.555e-03, 1.280e-01, 5.758e-02, 1.168e-01, 5.714e-02, -1.075e-01, 4.452e-02, -4.317e-03, -7.799e-02, 1.165e-01, -3.921e-02), r);\n\tr = MulAdd(s5_6, M4(5.624e-02, -1.040e-02, 3.795e-02, 2.532e-02, -2.144e-02, -2.567e-02, -2.597e-03, 1.717e-02, 1.543e-01, -3.063e-02, -5.567e-02, 1.063e-01, -2.135e-02, -4.029e-02, -4.940e-03, 1.869e-01), r);\n\tr = MulAdd(s5_7, M4(-8.275e-02, 6.599e-02, 7.262e-02, 4.369e-02, -5.231e-02, -6.227e-02, 6.567e-02, 1.104e-02, 7.435e-02, -5.245e-02, -4.217e-02, 1.187e-01, -1.648e-01, -4.021e-01, 6.267e-03, 7.223e-02), r);\n\tr = MulAdd(s5_8, M4(2.294e-02, -5.419e-02, -5.410e-02, 2.546e-02, 1.979e-02, 2.789e-03, -3.908e-02, 7.568e-03, 8.402e-02, -3.150e-01, 1.032e-01, 1.685e-02, -4.976e-02, 7.686e-02, 1.353e-01, 2.894e-02), r);\n\tr = MulAdd(s6_0, M4(-1.030e-01, -2.008e-02, 4.383e-02, 2.176e-02, -7.612e-03, -1.877e-02, 1.396e-02, -1.144e-01, 2.938e-02, -2.272e-02, -5.583e-02, 5.873e-02, -1.096e-01, -2.677e-02, -3.503e-02, 8.138e-02), r);\n\tr = MulAdd(s6_1, M4(-2.919e-02, -1.364e-01, 8.917e-02, 8.972e-02, -2.768e-02, -1.571e-01, -4.487e-02, -3.469e-01, -1.119e-01, -1.312e-01, -1.155e-01, -8.366e-02, -8.082e-02, -1.538e-02, 1.875e-02, 3.163e-02), r);\n\tr = MulAdd(s6_2, M4(-5.143e-02, -5.594e-02, -2.071e-02, 5.367e-02, -2.671e-02, 3.961e-02, 7.607e-02, -8.289e-02, -3.423e-02, -1.023e-01, 2.431e-02, -4.870e-02, 2.373e-02, 2.842e-01, 2.028e-02, 7.859e-02), r);\n\tr = MulAdd(s6_3, M4(-8.823e-02, 1.350e-01, 4.078e-02, -1.142e-01, 4.595e-02, -5.684e-02, -6.918e-02, 6.567e-02, 8.170e-02, 9.910e-02, -6.656e-02, -1.071e-01, -1.549e-01, 1.994e-02, 8.155e-03, 2.132e-02), r);\n\tr = MulAdd(s6_4, M4(-1.350e-01, -1.147e-02, 9.153e-02, -3.440e-02, -1.150e-01, -1.059e-01, -7.237e-03, 1.449e-01, -2.214e-01, 6.290e-02, 2.961e-02, 3.729e-01, -1.385e-01, 1.320e-01, 1.545e-01, -6.541e-03), r);\n\tr = MulAdd(s6_5, M4(1.651e-02, 1.181e-02, 3.175e-02, -7.075e-02, -1.815e-02, -1.944e-02, 2.353e-01, 1.433e-01, -1.284e-01, 6.948e-02, -1.235e-01, 1.018e-03, -1.500e-01, 1.535e-01, 2.512e-02, -4.040e-02), r);\n\tr = MulAdd(s6_6, M4(3.686e-02, -2.102e-02, 2.925e-02, 5.221e-02, 7.893e-03, 1.431e-02, 1.292e-02, 4.678e-02, 7.289e-02, 2.643e-02, 4.998e-02, -1.128e-03, -4.384e-02, 1.055e-01, -7.729e-02, 1.467e-02), r);\n\tr = MulAdd(s6_7, M4(-9.708e-02, -8.313e-02, 2.002e-02, 4.917e-02, 1.286e-01, -2.388e-02, -2.990e-02, 3.049e-02, -6.360e-02, -6.350e-02, 1.272e-01, 8.846e-02, 1.051e-01, 8.866e-02, 3.673e-03, 4.448e-02), r);\n\tr = MulAdd(s6_8, M4(1.552e-02, -3.738e-02, -1.043e-02, 3.421e-02, 4.796e-02, 3.540e-02, 6.775e-03, -9.088e-03, -2.275e-02, 1.607e-03, -5.515e-02, -5.932e-02, -1.043e-01, 5.368e-02, 5.681e-02, -1.967e-02), r);\n\tr = MulAdd(s7_0, M4(5.096e-02, -6.540e-02, 4.110e-02, 2.243e-02, -3.277e-02, 5.422e-02, -5.506e-03, -1.308e-01, -4.290e-02, -6.675e-02, -2.549e-02, 6.027e-02, -1.264e-02, -3.517e-02, -5.575e-03, -1.108e-02), r);\n\tr = MulAdd(s7_1, M4(1.553e-02, 4.039e-01, 5.457e-02, 4.138e-02, 1.530e-01, -8.048e-02, 1.047e-01, -9.912e-02, 5.112e-02, 2.142e-02, -2.724e-02, 2.524e-02, -3.261e-02, -2.307e-02, -2.086e-02, -6.956e-02), r);\n\tr = MulAdd(s7_2, M4(1.607e-01, 2.136e-01, 6.385e-02, 5.017e-02, -9.533e-03, -4.155e-02, 6.803e-03, -6.959e-02, 1.470e-02, -5.130e-02, 6.967e-02, 5.498e-03, 1.553e-02, 3.507e-02, -7.169e-03, -2.210e-02), r);\n\tr = MulAdd(s7_3, M4(-2.897e-02, 3.350e-02, 7.739e-02, -8.739e-02, 2.262e-02, -6.763e-03, 1.308e-01, -1.563e-02, -3.232e-02, -2.581e-02, 4.054e-02, -2.837e-02, -4.473e-02, 4.890e-02, 1.346e-02, 2.120e-02), r);\n\tr = MulAdd(s7_4, M4(-1.030e-02, -2.604e-02, -9.145e-02, -1.142e-01, 1.186e-01, 7.002e-02, 5.314e-02, -4.469e-03, -1.397e-01, 1.169e-01, -2.299e-01, 1.156e-01, 3.586e-02, -1.993e-01, 1.733e-01, 5.192e-02), r);\n\tr = MulAdd(s7_5, M4(-9.763e-03, 1.068e-01, 1.519e-01, -1.555e-01, -6.049e-02, -8.637e-02, -1.997e-02, -3.331e-02, -7.498e-02, -9.361e-02, 7.936e-02, -6.039e-02, -2.886e-02, 1.489e-02, -4.254e-04, 1.233e-01), r);\n\tr = MulAdd(s7_6, M4(1.101e-01, 1.534e-01, 9.363e-02, 2.898e-02, -5.850e-03, 7.591e-02, -3.393e-02, 1.964e-02, -7.931e-02, -4.888e-02, 1.382e-04, 5.309e-02, -4.719e-03, -1.116e-02, 4.092e-02, 4.215e-02), r);\n\tr = MulAdd(s7_7, M4(-3.126e-02, -1.987e-01, 1.548e-01, 3.259e-02, 3.201e-02, -8.217e-02, -1.775e-02, 5.012e-02, 1.145e-02, 3.562e-02, 5.696e-02, -5.324e-02, -6.771e-02, -3.671e-02, -2.649e-02, -1.009e-02), r);\n\tr = MulAdd(s7_8, M4(1.190e-01, 4.165e-02, -6.934e-03, 2.994e-02, -1.333e-01, -5.397e-02, 4.062e-02, 3.631e-02, -7.378e-02, -8.021e-03, -2.037e-03, -8.693e-02, 3.944e-02, -1.413e-02, 3.083e-02, 4.403e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.171e-03, 4.015e-03, -8.390e-03, -4.936e-03 };\n\tr = MulAdd(s0_0, M4(9.861e-02, 1.810e-02, 6.419e-02, 2.502e-01, -1.083e-02, 2.346e-02, 7.291e-03, -1.595e-01, 7.255e-02, -5.626e-02, 6.578e-02, 6.141e-02, -1.428e-02, 8.072e-02, 3.138e-02, 1.041e-01), r);\n\tr = MulAdd(s0_1, M4(-2.476e-02, -6.875e-02, -4.513e-02, 2.287e-02, 4.178e-02, 3.709e-04, 1.062e-01, 6.409e-02, -4.064e-02, -1.098e-01, 1.416e-02, -4.138e-02, -1.564e-01, 3.113e-02, 4.591e-02, 1.386e-01), r);\n\tr = MulAdd(s0_2, M4(-7.755e-02, -6.462e-02, 1.357e-01, 8.907e-03, 8.772e-03, 9.210e-02, 3.133e-04, -7.970e-02, -1.008e-01, -2.192e-02, 2.674e-02, 1.210e-01, 6.194e-02, 1.382e-01, -4.793e-02, 1.693e-02), r);\n\tr = MulAdd(s0_3, M4(2.218e-01, -7.579e-02, 1.663e-01, 2.604e-01, -5.619e-02, 1.028e-02, -1.192e-01, -1.204e-01, 3.293e-02, 1.888e-02, 1.239e-01, 1.883e-01, 2.025e-01, 1.058e-03, 3.568e-02, -7.469e-03), r);\n\tr = MulAdd(s0_4, M4(-2.682e-01, -1.258e-01, 1.661e-01, -3.561e-01, -8.037e-02, -1.882e-01, 3.518e-02, 3.871e-02, 1.082e-01, 8.126e-02, -2.693e-01, -7.492e-02, -5.087e-02, 1.586e-01, -8.180e-02, -1.202e-02), r);\n\tr = MulAdd(s0_5, M4(-1.311e-02, -1.008e-01, 8.735e-02, -4.129e-02, -8.179e-02, 1.128e-02, -4.526e-02, -1.084e-02, 3.870e-02, 1.408e-02, -1.383e-01, 1.011e-02, -5.819e-02, 4.581e-02, 6.933e-03, -8.229e-02), r);\n\tr = MulAdd(s0_6, M4(1.606e-01, -8.163e-03, 3.041e-04, 1.293e-01, -1.172e-01, 7.398e-02, -2.390e-02, -4.539e-02, 3.576e-02, 5.539e-04, -7.322e-03, 3.657e-02, 6.095e-02, -4.478e-02, -8.989e-02, 9.781e-02), r);\n\tr = MulAdd(s0_7, M4(-1.609e-01, -3.231e-02, -6.615e-02, 1.611e-02, 2.508e-01, -1.504e-01, 6.883e-02, -1.121e-02, 3.308e-03, 6.361e-03, 2.820e-03, 1.006e-01, -1.228e-01, 3.641e-02, -7.172e-02, -5.411e-02), r);\n\tr = MulAdd(s0_8, M4(-3.758e-02, -8.353e-03, -1.148e-02, 8.195e-02, 1.702e-02, -4.740e-02, -1.646e-02, 6.989e-02, -4.097e-02, -3.479e-03, -1.575e-02, 1.765e-01, 2.417e-02, 6.013e-02, 6.908e-02, -5.958e-02), r);\n\tr = MulAdd(s1_0, M4(-4.773e-02, -1.151e-02, 9.746e-03, 5.325e-02, -1.013e-01, 2.347e-02, 2.053e-02, -1.300e-03, 8.285e-03, 4.885e-03, -5.720e-02, -1.238e-01, 5.272e-03, -6.600e-02, 2.554e-02, 2.350e-02), r);\n\tr = MulAdd(s1_1, M4(-6.101e-02, -3.187e-02, -1.678e-02, -4.436e-02, 1.294e-01, 7.714e-02, 2.367e-02, 9.440e-02, 1.046e-01, 2.280e-02, 2.139e-02, 4.107e-02, -3.158e-02, -1.144e-01, -6.250e-03, -7.049e-02), r);\n\tr = MulAdd(s1_2, M4(2.380e-02, 2.683e-03, -5.063e-02, -1.144e-02, -2.753e-02, -3.963e-02, 4.263e-02, -1.172e-01, -1.153e-01, -4.556e-02, 7.579e-02, 7.674e-02, 4.053e-02, 4.403e-02, -7.944e-02, -8.035e-02), r);\n\tr = MulAdd(s1_3, M4(1.527e-01, 3.639e-02, -2.715e-02, 1.643e-01, 5.152e-02, -9.064e-02, -1.411e-01, -2.476e-01, -9.955e-02, 1.098e-01, 1.724e-02, -1.867e-02, 7.503e-03, -6.265e-02, 6.342e-02, 1.467e-02), r);\n\tr = MulAdd(s1_4, M4(4.156e-02, 1.587e-01, -9.157e-02, -1.867e-01, 2.170e-01, -2.680e-01, 3.912e-02, 2.190e-01, 2.286e-01, 2.782e-01, -6.481e-03, 2.057e-02, -4.271e-02, -2.637e-02, -3.364e-02, 9.123e-02), r);\n\tr = MulAdd(s1_5, M4(8.277e-02, 1.521e-03, -2.840e-02, 3.656e-02, -1.687e-02, 4.315e-02, 4.808e-02, 5.464e-02, -7.452e-02, 4.107e-02, 6.658e-02, -9.818e-02, -4.003e-02, -2.246e-02, -5.058e-02, -8.255e-03), r);\n\tr = MulAdd(s1_6, M4(-1.963e-02, -2.891e-02, 7.599e-02, 1.735e-02, -2.876e-02, -4.554e-02, -1.035e-01, 8.704e-02, -2.394e-02, 8.710e-02, -1.132e-01, 7.940e-02, -2.644e-02, 6.812e-03, -1.838e-02, 1.636e-01), r);\n\tr = MulAdd(s1_7, M4(-3.273e-02, 3.213e-02, 5.066e-04, -6.173e-03, -2.231e-01, -1.584e-02, 7.763e-02, 1.087e-02, 1.274e-01, -1.020e-01, 8.857e-02, 1.486e-01, -1.360e-01, -6.677e-03, 1.223e-01, 3.943e-03), r);\n\tr = MulAdd(s1_8, M4(-2.621e-02, 2.312e-02, 2.959e-02, -3.508e-02, -8.455e-02, -1.248e-01, 4.520e-02, -4.507e-02, 5.240e-02, 1.878e-01, -3.403e-02, -9.723e-02, 1.172e-02, 9.380e-03, -1.591e-02, 1.790e-02), r);\n\tr = MulAdd(s2_0, M4(-4.653e-02, -5.118e-02, 3.158e-02, 1.532e-01, 4.989e-02, -4.555e-03, 1.874e-01, -3.272e-01, -1.386e-01, 5.731e-02, 7.671e-02, 2.568e-01, -3.503e-02, -4.580e-02, -1.435e-02, 9.380e-02), r);\n\tr = MulAdd(s2_1, M4(1.101e-01, -2.787e-01, 7.885e-02, -1.669e-01, -1.885e-02, 6.133e-02, 4.324e-02, 8.274e-02, 2.189e-01, -5.179e-02, 1.711e-01, 8.551e-02, 9.272e-03, 2.682e-02, -2.505e-01, -3.644e-02), r);\n\tr = MulAdd(s2_2, M4(-7.932e-02, -4.863e-02, -8.513e-03, 5.279e-02, -6.115e-02, 6.127e-02, 5.479e-02, 8.834e-02, -1.818e-01, 8.003e-02, -2.282e-02, 7.345e-02, -1.437e-01, -1.694e-01, 6.211e-02, 8.869e-02), r);\n\tr = MulAdd(s2_3, M4(2.295e-01, 1.147e-01, -4.242e-02, -6.906e-02, -1.372e-01, -1.550e-01, 1.597e-01, 3.426e-02, -3.796e-02, 6.194e-02, 1.454e-01, 5.858e-02, 1.212e-01, -1.196e-01, 2.121e-01, 1.099e-01), r);\n\tr = MulAdd(s2_4, M4(9.416e-02, 1.947e-01, -1.973e-02, -1.809e-01, -2.024e-01, -7.946e-02, 1.482e-01, 2.162e-01, -7.181e-02, -8.151e-02, 1.364e-01, 8.638e-02, 4.401e-02, 1.989e-01, -9.265e-02, -1.192e-01), r);\n\tr = MulAdd(s2_5, M4(-9.022e-02, -7.998e-02, 1.039e-01, -3.487e-02, -1.025e-01, -9.302e-02, 1.054e-01, -1.959e-01, 1.635e-02, -1.455e-01, 8.270e-02, 1.031e-01, -2.780e-02, -3.080e-03, 7.018e-04, -1.151e-01), r);\n\tr = MulAdd(s2_6, M4(-2.700e-02, 8.750e-02, -7.652e-02, -1.898e-02, 1.625e-02, -1.408e-03, 6.793e-02, 2.412e-02, -8.187e-02, 4.516e-02, -8.717e-03, 1.623e-01, 1.085e-01, -6.325e-02, 1.013e-01, 2.221e-02), r);\n\tr = MulAdd(s2_7, M4(-7.386e-02, -1.695e-01, 4.037e-02, 5.409e-02, -7.252e-02, -1.691e-02, 2.455e-02, 8.284e-02, -1.143e-01, 1.054e-01, 1.559e-01, 1.949e-01, 4.537e-02, -3.583e-02, 9.264e-02, 6.329e-02), r);\n\tr = MulAdd(s2_8, M4(-4.150e-02, 4.022e-02, 7.980e-02, -1.115e-01, -5.658e-02, -2.031e-03, -6.667e-02, 1.512e-01, -8.647e-02, -3.108e-02, -5.697e-02, 8.242e-02, -7.639e-02, -3.099e-02, -1.168e-02, 3.149e-02), r);\n\tr = MulAdd(s3_0, M4(6.074e-02, -9.433e-02, -1.455e-02, 2.344e-02, 6.801e-02, 3.095e-02, -9.606e-02, 1.790e-02, -3.857e-03, -1.618e-02, -2.126e-02, 4.367e-02, 7.509e-02, 5.339e-02, -1.697e-01, 5.161e-02), r);\n\tr = MulAdd(s3_1, M4(-1.572e-01, 3.433e-02, 1.056e-02, 1.624e-01, -1.115e-01, -6.066e-02, 1.438e-01, -5.687e-02, -5.053e-02, -6.958e-02, 1.284e-02, -1.181e-02, -6.860e-02, -5.012e-02, 6.389e-02, 2.225e-01), r);\n\tr = MulAdd(s3_2, M4(9.430e-02, -7.752e-02, 2.481e-02, -8.512e-03, 2.760e-02, 7.608e-03, 8.042e-02, 9.668e-02, 1.143e-02, -2.981e-02, -1.074e-02, -2.974e-02, 8.299e-02, 2.113e-02, -1.003e-01, 2.120e-02), r);\n\tr = MulAdd(s3_3, M4(-2.065e-01, 8.363e-02, -1.663e-01, 4.624e-02, -7.967e-02, 4.552e-02, -3.836e-02, -1.080e-02, 1.517e-02, 1.873e-02, -3.017e-02, -1.055e-01, -5.513e-02, 8.575e-02, -3.376e-01, 9.619e-02), r);\n\tr = MulAdd(s3_4, M4(-4.406e-02, -7.260e-02, 9.714e-02, -5.473e-02, -1.266e-01, 5.401e-02, 1.478e-01, 2.376e-02, 8.741e-02, -6.798e-03, -8.303e-02, 9.785e-03, -3.452e-02, -2.306e-01, 1.248e-01, 9.723e-02), r);\n\tr = MulAdd(s3_5, M4(1.082e-01, 3.750e-02, -7.444e-02, -5.845e-02, 5.428e-02, -2.493e-02, 1.083e-02, -2.629e-02, 1.151e-01, 3.029e-02, -1.490e-02, -3.747e-02, 4.242e-02, 2.020e-01, -1.222e-01, 1.628e-01), r);\n\tr = MulAdd(s3_6, M4(-7.236e-02, -3.901e-02, 5.888e-02, 6.976e-02, -8.068e-02, -3.520e-02, -8.337e-03, 2.699e-03, 2.558e-02, -6.610e-02, -8.027e-03, -4.848e-02, -7.649e-02, 8.153e-02, -1.475e-01, -3.082e-03), r);\n\tr = MulAdd(s3_7, M4(6.555e-02, 5.288e-02, -4.870e-02, -8.899e-03, 4.118e-02, -1.026e-01, -2.763e-03, 8.326e-02, 1.053e-02, -2.956e-03, -9.619e-02, -5.726e-03, 5.812e-02, -1.540e-01, 4.855e-02, 4.349e-02), r);\n\tr = MulAdd(s3_8, M4(5.661e-02, 7.438e-03, -3.194e-02, 2.968e-02, -4.814e-02, -1.049e-02, 5.669e-02, 5.227e-02, 1.759e-02, 7.979e-04, -7.995e-02, -1.906e-02, 1.411e-02, 2.705e-02, -6.117e-03, 1.179e-01), r);\n\tr = MulAdd(s4_0, M4(4.138e-02, 8.165e-03, -5.496e-02, 2.646e-01, 4.543e-02, 7.343e-02, -1.644e-01, 2.693e-03, -6.105e-03, -7.733e-02, 2.326e-02, -4.724e-03, -3.503e-02, 9.536e-03, 6.063e-03, -5.583e-02), r);\n\tr = MulAdd(s4_1, M4(-5.709e-02, 3.212e-02, -1.460e-01, -3.559e-02, 2.203e-01, 4.014e-02, -9.035e-02, 6.420e-02, -5.015e-02, -2.371e-02, 1.237e-02, -2.477e-03, 9.596e-02, 2.574e-02, -7.583e-03, -1.077e-02), r);\n\tr = MulAdd(s4_2, M4(1.413e-02, -2.921e-02, 1.968e-02, -7.302e-02, -1.112e-02, 8.178e-02, -7.203e-02, -8.773e-02, 3.204e-02, 1.049e-02, 3.123e-02, -1.198e-01, -7.578e-02, -2.187e-03, 5.386e-02, -5.244e-02), r);\n\tr = MulAdd(s4_3, M4(-1.315e-01, 6.912e-02, -2.608e-01, 3.384e-03, 6.421e-02, -9.794e-03, -1.910e-01, 9.869e-02, -8.240e-02, 1.818e-02, 4.489e-02, 9.533e-02, -1.396e-02, 2.221e-02, -2.765e-02, -2.743e-02), r);\n\tr = MulAdd(s4_4, M4(8.430e-02, 3.913e-02, -1.024e-01, 4.850e-02, 4.148e-02, -6.597e-02, 6.364e-02, 2.062e-01, -6.475e-02, 3.762e-02, -2.984e-04, -2.388e-02, -3.737e-02, 3.449e-01, -1.450e-01, 1.814e-01), r);\n\tr = MulAdd(s4_5, M4(3.153e-02, 1.752e-01, -1.235e-01, 9.559e-02, 3.415e-01, 2.977e-02, 4.321e-02, 1.343e-01, 1.560e-01, 7.211e-02, 1.160e-01, 1.502e-02, 2.140e-02, -5.785e-02, -3.213e-02, 1.006e-01), r);\n\tr = MulAdd(s4_6, M4(-5.924e-02, 8.264e-02, -2.766e-02, -2.691e-03, -1.265e-01, 3.158e-02, -7.472e-02, -4.071e-02, 6.202e-02, -7.105e-02, 2.099e-02, -2.883e-02, 1.067e-01, -1.619e-02, 2.582e-02, -1.193e-01), r);\n\tr = MulAdd(s4_7, M4(2.155e-01, 6.200e-02, -2.614e-02, 1.846e-01, 3.051e-01, 3.577e-02, 1.145e-02, 2.007e-02, -1.371e-01, 1.737e-02, -2.292e-02, 1.920e-01, -2.273e-01, 4.998e-02, 8.282e-03, 1.758e-01), r);\n\tr = MulAdd(s4_8, M4(9.429e-02, 4.540e-02, -4.373e-02, -1.160e-02, -4.470e-02, 1.167e-01, 1.250e-01, 1.890e-01, -1.202e-01, 2.071e-02, 9.206e-02, 7.676e-03, 3.892e-02, 5.756e-02, -1.227e-03, -2.003e-01), r);\n\tr = MulAdd(s5_0, M4(-3.945e-02, -8.039e-02, 1.199e-02, 1.966e-01, -9.777e-03, 7.548e-02, -9.030e-02, -2.660e-02, -4.957e-02, -6.565e-02, -1.622e-02, -1.379e-01, 1.367e-02, 5.800e-02, 1.834e-02, 7.695e-02), r);\n\tr = MulAdd(s5_1, M4(7.861e-02, 3.483e-02, -1.459e-01, -1.462e-01, 7.203e-02, -3.863e-02, -9.672e-02, -1.374e-01, 7.629e-02, 1.104e-01, 1.283e-01, 2.068e-02, 5.023e-02, -1.772e-02, 6.289e-02, 2.893e-02), r);\n\tr = MulAdd(s5_2, M4(-5.870e-02, -2.446e-02, 3.727e-02, 8.240e-02, -3.007e-02, 2.914e-02, 7.667e-02, -7.461e-02, 2.255e-02, 1.335e-01, -1.895e-01, -2.057e-03, 3.962e-02, -4.255e-02, 6.384e-02, 6.045e-03), r);\n\tr = MulAdd(s5_3, M4(1.911e-01, -6.249e-02, 2.068e-01, 5.497e-02, -1.472e-02, 9.144e-03, -2.697e-02, -5.151e-02, -1.496e-01, 1.497e-02, 4.692e-02, -9.169e-02, -6.766e-02, -5.018e-02, -5.010e-03, 2.945e-02), r);\n\tr = MulAdd(s5_4, M4(1.793e-01, 2.389e-01, -2.089e-01, 2.215e-03, -8.109e-02, -4.797e-02, 7.083e-02, -1.459e-01, 8.028e-02, -2.240e-01, -3.341e-04, -1.007e-01, 1.094e-01, 1.557e-01, -1.603e-03, -1.452e-01), r);\n\tr = MulAdd(s5_5, M4(-7.773e-02, -6.554e-02, 7.054e-02, 4.107e-02, -7.730e-04, -1.231e-01, 1.519e-02, 1.209e-01, 1.117e-01, 1.011e-01, 6.114e-02, -1.169e-01, -1.693e-01, -1.078e-01, -9.017e-02, 2.378e-01), r);\n\tr = MulAdd(s5_6, M4(5.646e-02, -7.175e-04, 7.008e-02, -5.989e-02, -3.315e-02, 7.058e-03, -4.455e-02, 1.279e-02, 5.475e-02, 8.603e-03, 1.289e-01, -5.157e-03, 5.779e-03, -4.932e-02, -8.713e-02, 1.219e-02), r);\n\tr = MulAdd(s5_7, M4(2.670e-02, -7.649e-02, 6.818e-02, 6.627e-02, 9.118e-02, 3.245e-02, 5.684e-02, 3.755e-02, -6.150e-02, -2.769e-02, -2.560e-02, -3.468e-02, 2.159e-01, -1.506e-01, 2.127e-02, 1.382e-01), r);\n\tr = MulAdd(s5_8, M4(-1.019e-01, -6.627e-02, 1.043e-01, -2.586e-02, 2.302e-02, -4.713e-03, 3.749e-02, 1.670e-02, 1.364e-01, -4.719e-02, 1.037e-01, -2.311e-01, -1.186e-01, -2.605e-02, 9.677e-03, 3.698e-02), r);\n\tr = MulAdd(s6_0, M4(-6.494e-03, 4.738e-02, -1.494e-02, 1.177e-03, 9.666e-02, -1.351e-01, 2.174e-02, -5.155e-02, -2.843e-02, -3.406e-04, -4.074e-02, -5.564e-02, -1.004e-01, -1.048e-02, 3.339e-02, -2.417e-02), r);\n\tr = MulAdd(s6_1, M4(3.098e-02, -3.020e-02, 8.200e-02, 6.540e-02, 7.265e-02, -8.772e-02, 5.711e-02, -1.953e-01, 4.587e-03, 1.254e-01, 2.714e-01, 1.993e-01, -2.715e-02, -8.154e-02, -1.626e-01, 5.557e-02), r);\n\tr = MulAdd(s6_2, M4(3.862e-02, 3.743e-03, 6.377e-02, -8.208e-02, -1.175e-01, -1.081e-01, 7.790e-02, 1.595e-02, 8.240e-02, 1.424e-02, 4.165e-02, -2.203e-02, -1.018e-01, -2.509e-01, -1.907e-02, 6.418e-03), r);\n\tr = MulAdd(s6_3, M4(4.920e-02, 2.192e-02, -2.880e-02, -3.719e-02, 9.495e-02, -4.514e-02, 1.471e-01, 5.986e-02, -2.121e-02, 9.101e-02, -1.167e-01, -1.254e-01, -1.637e-01, -4.881e-02, 8.190e-02, 1.841e-01), r);\n\tr = MulAdd(s6_4, M4(-3.650e-02, -5.998e-02, 3.780e-02, -1.643e-02, -6.872e-02, -1.650e-01, -2.220e-01, -3.357e-01, 4.948e-02, 4.375e-02, 2.535e-01, 1.119e-01, -3.487e-01, -2.786e-02, -8.273e-02, 1.548e-01), r);\n\tr = MulAdd(s6_5, M4(4.252e-02, 7.157e-02, -5.603e-02, 8.876e-04, 6.368e-02, -3.234e-01, 1.929e-02, -3.111e-02, -2.031e-02, -1.139e-01, -5.647e-02, 8.034e-02, 1.249e-01, 2.387e-01, -9.530e-02, 1.842e-02), r);\n\tr = MulAdd(s6_6, M4(3.609e-02, 1.545e-02, -4.462e-02, -2.606e-02, 7.387e-04, -1.032e-02, 1.415e-02, 9.009e-02, 9.100e-03, 4.897e-02, 5.259e-02, 1.973e-02, -2.394e-01, -2.421e-02, 1.286e-01, 3.185e-02), r);\n\tr = MulAdd(s6_7, M4(-5.623e-02, -4.501e-02, -4.529e-02, -8.827e-02, -2.332e-02, 1.097e-02, -2.695e-02, 1.039e-03, 1.157e-01, -1.888e-01, 3.724e-02, -1.472e-01, -1.313e-01, -1.401e-01, -2.073e-01, 1.443e-01), r);\n\tr = MulAdd(s6_8, M4(8.602e-02, -1.457e-02, -1.366e-02, -1.223e-01, 3.215e-02, 6.168e-02, -4.301e-02, -6.100e-02, -1.310e-01, 2.626e-02, 5.578e-02, 7.027e-02, 1.218e-01, -9.431e-02, 1.189e-01, 2.276e-01), r);\n\tr = MulAdd(s7_0, M4(-2.098e-01, 3.773e-02, 9.078e-02, 4.973e-02, 1.670e-02, 3.135e-02, 8.829e-02, 1.958e-02, -2.725e-02, -6.102e-02, 8.044e-02, 8.231e-03, 5.179e-02, -3.102e-02, -6.230e-03, -5.581e-02), r);\n\tr = MulAdd(s7_1, M4(3.210e-02, 2.371e-01, 5.989e-02, 1.034e-01, 2.786e-02, 3.655e-02, -4.385e-02, 1.105e-01, 8.371e-02, 1.169e-01, -1.223e-01, 2.819e-02, 6.550e-02, -6.923e-03, 5.620e-02, -3.798e-02), r);\n\tr = MulAdd(s7_2, M4(-1.539e-01, 6.029e-02, -2.643e-02, -1.947e-02, 8.463e-02, 5.455e-02, 6.077e-03, 7.383e-02, -3.496e-02, -8.242e-02, 1.702e-02, -2.585e-03, -7.294e-02, 3.695e-03, -1.836e-03, 9.230e-02), r);\n\tr = MulAdd(s7_3, M4(-3.393e-02, -7.903e-02, -4.367e-02, -7.064e-02, 6.230e-02, -7.311e-04, 8.585e-02, -5.261e-02, -1.791e-02, -1.270e-02, 1.843e-02, -6.434e-02, 4.059e-02, -5.534e-02, 4.663e-02, -2.061e-02), r);\n\tr = MulAdd(s7_4, M4(-6.396e-02, 1.872e-01, 6.300e-03, -1.229e-01, 4.722e-02, 1.159e-01, -1.265e-01, -2.818e-02, 1.133e-01, 2.885e-01, -1.727e-01, 1.164e-02, 1.355e-02, 4.212e-02, -1.263e-03, 9.589e-03), r);\n\tr = MulAdd(s7_5, M4(-1.061e-01, -7.650e-02, 2.641e-02, -6.247e-02, -1.294e-01, -4.841e-02, 3.652e-03, 2.337e-02, 1.409e-02, 6.725e-02, -1.023e-01, -7.833e-02, -4.138e-02, 4.985e-02, 5.410e-02, 7.188e-02), r);\n\tr = MulAdd(s7_6, M4(-1.224e-01, 1.697e-01, -4.275e-02, -1.083e-01, -3.797e-02, -1.151e-02, -3.402e-02, 3.831e-03, 5.427e-02, -6.544e-03, 2.490e-03, 1.447e-02, 1.551e-02, -2.141e-02, 7.572e-03, -2.319e-02), r);\n\tr = MulAdd(s7_7, M4(8.813e-02, 4.677e-02, 7.258e-02, -2.233e-02, 1.056e-01, 4.548e-02, -5.082e-02, 5.598e-02, 4.627e-02, 1.466e-02, -6.589e-02, -8.524e-02, -1.070e-02, -4.714e-02, 1.276e-02, 3.445e-02), r);\n\tr = MulAdd(s7_8, M4(-1.312e-01, 1.265e-01, -2.302e-02, -1.697e-01, -2.171e-02, -3.595e-02, 5.103e-02, 2.643e-02, 1.650e-02, 2.831e-02, -2.564e-02, -9.242e-03, 1.215e-02, -2.933e-02, 1.630e-02, 2.074e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -9.878e-04, -3.319e-03, -7.274e-03, -4.102e-03 };\n\tr = MulAdd(s0_0, M4(-3.399e-03, -1.333e-01, 1.635e-01, 8.962e-02, 8.099e-02, 1.812e-02, 2.720e-02, -5.767e-02, -6.046e-03, 1.213e-02, 5.859e-02, 1.206e-02, -1.000e-01, 2.974e-02, -3.893e-01, -1.116e-01), r);\n\tr = MulAdd(s0_1, M4(9.527e-02, 1.840e-02, 9.118e-03, -3.785e-03, 4.409e-03, 1.973e-02, 7.759e-03, 1.143e-01, 5.272e-02, 2.280e-02, 6.629e-02, -2.726e-02, -3.087e-02, -4.963e-02, -9.112e-02, 1.470e-01), r);\n\tr = MulAdd(s0_2, M4(2.341e-01, -4.306e-02, -3.563e-02, -1.134e-01, 2.904e-02, -1.568e-02, 1.065e-01, 1.184e-01, 2.079e-02, -6.771e-02, 2.918e-02, -1.229e-01, -9.481e-02, 8.101e-02, 4.501e-02, 2.165e-01), r);\n\tr = MulAdd(s0_3, M4(1.688e-01, 3.890e-03, 3.508e-01, -6.471e-02, -1.389e-01, -4.583e-03, -1.045e-01, 2.210e-02, 4.821e-02, -1.066e-01, -1.285e-01, 5.111e-02, -2.314e-02, 1.692e-02, -1.240e-01, -2.002e-02), r);\n\tr = MulAdd(s0_4, M4(2.392e-02, 4.782e-02, -8.814e-02, -8.142e-02, 1.643e-02, 1.365e-02, -1.485e-01, -1.603e-01, 1.012e-01, 2.038e-01, -8.363e-02, 4.859e-02, 2.361e-02, 1.489e-01, -1.280e-01, 1.544e-01), r);\n\tr = MulAdd(s0_5, M4(1.575e-01, -7.385e-02, 6.317e-02, -8.692e-02, 3.277e-02, 6.683e-02, 1.028e-02, -3.689e-02, 6.222e-02, -2.004e-03, 1.195e-01, 1.176e-01, -3.901e-02, 3.434e-02, -4.818e-02, 4.428e-02), r);\n\tr = MulAdd(s0_6, M4(1.604e-01, 1.364e-01, -1.335e-01, -1.778e-02, -3.223e-02, -3.696e-02, 1.523e-01, -5.976e-02, 7.820e-02, 3.907e-02, -5.458e-02, 1.035e-01, 2.372e-01, 4.221e-02, 3.357e-02, 1.704e-01), r);\n\tr = MulAdd(s0_7, M4(5.804e-02, 4.363e-02, 2.326e-01, -7.886e-02, -2.683e-02, 1.301e-01, 1.184e-01, -4.168e-02, 7.721e-02, 1.494e-01, 1.304e-01, -3.124e-03, -4.602e-02, 3.320e-02, -6.940e-02, -3.177e-02), r);\n\tr = MulAdd(s0_8, M4(5.804e-02, 4.494e-02, 1.089e-02, -1.320e-01, 5.313e-02, -4.836e-02, -2.717e-02, -3.837e-02, -5.629e-02, 3.611e-02, -3.032e-02, -1.782e-02, -2.371e-01, 1.627e-02, -9.274e-02, 6.939e-02), r);\n\tr = MulAdd(s1_0, M4(9.092e-02, -6.971e-02, -1.102e-01, 1.625e-02, 5.649e-03, 5.476e-02, 1.016e-01, 6.568e-02, -7.223e-02, 2.350e-02, 6.645e-02, -3.048e-02, -4.688e-02, -5.166e-02, 5.258e-02, -1.552e-01), r);\n\tr = MulAdd(s1_1, M4(-4.626e-02, 1.886e-02, -1.651e-02, 1.383e-01, -1.149e-02, 1.385e-02, 1.109e-01, -1.262e-01, 4.312e-02, 4.767e-02, -4.446e-02, 1.129e-01, 6.379e-02, 4.591e-03, -1.581e-02, -2.110e-02), r);\n\tr = MulAdd(s1_2, M4(1.796e-03, -4.724e-02, -2.260e-02, 8.648e-02, 6.675e-02, 8.029e-03, 9.495e-02, 1.093e-02, -1.169e-02, -4.569e-02, 2.030e-02, 1.498e-02, -1.522e-02, -2.637e-02, 9.407e-02, -3.015e-02), r);\n\tr = MulAdd(s1_3, M4(8.454e-02, -1.288e-03, 1.089e-01, 4.196e-02, -5.778e-03, 2.723e-01, 9.079e-02, 1.495e-02, -1.471e-01, -3.339e-02, -3.628e-02, -2.691e-02, 1.211e-01, 1.982e-02, 4.722e-02, -8.535e-02), r);\n\tr = MulAdd(s1_4, M4(4.551e-02, 6.671e-02, 6.336e-02, 4.779e-02, 8.950e-03, 1.359e-01, 1.117e-01, -2.095e-01, 1.470e-01, -1.039e-01, -3.483e-01, -1.662e-01, 1.200e-01, 7.917e-02, 4.670e-02, -6.803e-02), r);\n\tr = MulAdd(s1_5, M4(1.159e-01, -5.814e-02, 9.309e-02, -3.716e-02, 5.534e-02, 4.731e-02, 8.854e-03, -2.103e-02, -4.678e-02, -8.613e-02, -2.210e-01, 1.242e-01, 6.801e-02, 6.014e-02, 1.043e-01, -6.511e-02), r);\n\tr = MulAdd(s1_6, M4(4.771e-02, -2.302e-02, -4.998e-02, 1.032e-02, 3.177e-02, 2.740e-02, 4.264e-02, 6.545e-02, 1.176e-02, 1.915e-02, 7.586e-02, 2.345e-01, 9.349e-02, 5.581e-02, 4.117e-02, -3.574e-02), r);\n\tr = MulAdd(s1_7, M4(-1.662e-01, -7.375e-02, 4.694e-02, -5.693e-02, 5.791e-02, 2.733e-02, 3.989e-02, -6.208e-02, -2.600e-02, 1.030e-01, -5.928e-02, 1.294e-01, -3.075e-02, -1.290e-02, 3.637e-02, 4.538e-02), r);\n\tr = MulAdd(s1_8, M4(-3.063e-02, 4.667e-02, -1.916e-02, -3.819e-02, -6.651e-03, -1.333e-01, 1.463e-01, -6.487e-04, -9.355e-02, -1.384e-01, -1.062e-01, 1.348e-01, -3.547e-02, 8.893e-02, 2.088e-03, -8.661e-04), r);\n\tr = MulAdd(s2_0, M4(-1.895e-01, -1.416e-02, 7.805e-02, -8.565e-02, -1.401e-01, 3.184e-02, -4.643e-02, -2.616e-02, -9.603e-02, -8.861e-03, 1.255e-02, -5.402e-02, -1.656e-01, -8.053e-02, 6.487e-02, 6.307e-02), r);\n\tr = MulAdd(s2_1, M4(-8.296e-02, 1.041e-01, 1.727e-01, -1.569e-01, 1.221e-01, -7.730e-03, -2.385e-01, -8.320e-02, -9.366e-02, 4.158e-02, -4.438e-01, 1.181e-01, -1.054e-01, 2.307e-02, 1.032e-01, -1.626e-02), r);\n\tr = MulAdd(s2_2, M4(-9.554e-02, -4.403e-02, 1.346e-01, -1.762e-02, -1.433e-03, -3.288e-02, -7.941e-02, -2.863e-02, 2.315e-02, -6.922e-02, -6.280e-02, -1.059e-01, 5.831e-02, -6.399e-02, 1.018e-02, -6.664e-02), r);\n\tr = MulAdd(s2_3, M4(-1.866e-01, -1.658e-01, 2.559e-01, 6.668e-02, 8.053e-02, 2.897e-03, -2.089e-01, 1.255e-02, -2.093e-01, 5.987e-02, -2.858e-02, -2.345e-01, 2.634e-01, -5.074e-02, 3.121e-02, -1.120e-01), r);\n\tr = MulAdd(s2_4, M4(2.180e-01, -2.126e-01, 2.746e-01, 1.975e-02, 3.325e-03, 2.304e-01, -3.438e-02, -1.664e-01, 4.373e-02, -4.749e-02, -2.693e-01, -1.300e-01, -1.810e-01, 6.749e-02, -1.728e-01, 2.882e-02), r);\n\tr = MulAdd(s2_5, M4(2.956e-02, -1.380e-02, -3.309e-02, -1.515e-02, -7.372e-02, -1.184e-02, 9.779e-02, -1.747e-01, 1.042e-01, 5.176e-02, -6.874e-03, -1.106e-01, -9.242e-03, -7.972e-02, -1.311e-01, -5.237e-03), r);\n\tr = MulAdd(s2_6, M4(5.180e-02, 6.270e-02, 1.315e-01, 9.924e-02, -3.893e-02, -7.067e-02, -3.561e-02, 9.771e-02, -2.707e-01, -6.668e-02, -2.077e-02, -1.102e-01, -4.309e-02, -1.039e-01, -1.013e-01, 3.611e-02), r);\n\tr = MulAdd(s2_7, M4(6.780e-02, -1.590e-01, 2.963e-01, 4.530e-02, 8.558e-02, -6.683e-02, -2.691e-01, 4.346e-03, 9.810e-02, 3.145e-02, -1.352e-02, 8.583e-02, -1.840e-02, 1.639e-02, 2.761e-02, -1.049e-01), r);\n\tr = MulAdd(s2_8, M4(-1.724e-01, -1.849e-01, -1.644e-01, -4.091e-02, 4.987e-02, 9.072e-02, 1.068e-02, -1.310e-01, 2.451e-01, 1.010e-03, 5.341e-02, -7.349e-02, 2.736e-03, 1.471e-01, 7.518e-02, -1.221e-02), r);\n\tr = MulAdd(s3_0, M4(8.039e-02, -4.309e-02, -3.394e-02, -1.010e-01, -1.060e-01, -3.326e-03, 7.692e-02, -1.208e-01, 2.169e-03, -1.648e-02, 1.444e-02, 4.783e-02, 2.027e-02, -5.927e-03, -1.183e-02, -4.858e-02), r);\n\tr = MulAdd(s3_1, M4(-1.124e-01, -1.963e-02, -1.640e-02, -5.947e-02, 1.237e-03, -8.583e-02, 2.876e-03, -9.743e-02, -6.886e-02, -7.141e-03, -3.896e-03, 1.536e-02, 4.794e-02, -1.096e-01, 2.549e-02, 1.263e-01), r);\n\tr = MulAdd(s3_2, M4(1.250e-01, -4.949e-03, 3.525e-02, -1.308e-02, -3.695e-03, -5.323e-02, 1.222e-03, -3.075e-02, -1.388e-03, -9.577e-03, 4.296e-04, 6.666e-02, -5.979e-02, 3.506e-02, -1.869e-02, 5.446e-02), r);\n\tr = MulAdd(s3_3, M4(-1.171e-01, 2.664e-02, 1.063e-01, -6.276e-03, -8.396e-03, 1.078e-01, -4.294e-02, 9.336e-02, -1.071e-02, 1.569e-02, 4.817e-02, 8.765e-02, -2.305e-01, 3.090e-02, 1.692e-01, 1.753e-01), r);\n\tr = MulAdd(s3_4, M4(5.076e-03, -1.902e-01, -1.299e-01, 1.303e-01, -3.924e-02, 1.519e-01, -8.081e-02, -7.900e-02, 7.273e-02, -1.331e-01, -6.378e-02, -3.999e-02, -1.071e-01, -4.063e-03, 1.049e-01, 7.222e-03), r);\n\tr = MulAdd(s3_5, M4(-1.152e-01, -2.036e-03, 7.410e-02, -6.259e-02, -6.560e-02, 6.826e-02, 6.316e-03, -7.414e-03, 4.555e-02, -3.406e-02, 1.181e-02, 4.307e-02, -3.666e-02, 5.070e-02, -5.521e-03, 4.305e-02), r);\n\tr = MulAdd(s3_6, M4(2.281e-01, 3.983e-02, -6.538e-02, 1.858e-02, -4.044e-02, 4.944e-02, 1.055e-01, -1.410e-01, -4.775e-03, -3.619e-02, -4.327e-02, -1.120e-01, -5.352e-02, 8.676e-02, 1.774e-02, -4.081e-02), r);\n\tr = MulAdd(s3_7, M4(-3.218e-03, -6.811e-02, -6.519e-02, 1.342e-01, -7.100e-03, -7.039e-02, 2.666e-02, -7.692e-02, 2.331e-02, 3.179e-02, 1.173e-01, 6.603e-02, -1.208e-01, -7.213e-02, 5.929e-02, 8.421e-02), r);\n\tr = MulAdd(s3_8, M4(-3.993e-02, -9.329e-03, 2.565e-02, 8.653e-02, 3.002e-02, -6.917e-02, -5.029e-02, 1.622e-02, 1.050e-02, 8.425e-03, 1.787e-02, -1.812e-02, -4.378e-02, 4.965e-02, -3.166e-02, 1.749e-02), r);\n\tr = MulAdd(s4_0, M4(9.219e-02, -1.606e-02, 9.817e-02, -3.357e-01, 1.134e-01, -4.664e-03, -1.514e-01, 9.937e-02, -5.159e-02, 8.918e-04, 1.750e-02, -4.721e-02, -4.224e-02, 3.066e-02, 1.144e-02, -3.345e-02), r);\n\tr = MulAdd(s4_1, M4(-8.637e-02, -5.564e-02, 5.138e-02, -1.391e-01, -1.507e-01, 4.180e-03, 1.485e-02, -2.553e-02, -1.910e-02, 5.254e-02, 5.222e-02, 6.109e-02, 1.121e-01, -1.485e-02, -1.411e-02, -3.113e-02), r);\n\tr = MulAdd(s4_2, M4(1.301e-01, -7.978e-03, -1.393e-02, -7.214e-02, 1.865e-01, -6.353e-04, -1.992e-02, 1.103e-02, 4.821e-02, 1.285e-02, -1.085e-01, -1.609e-02, -4.429e-02, -1.546e-02, 8.609e-02, -2.711e-02), r);\n\tr = MulAdd(s4_3, M4(-2.509e-01, -1.322e-01, 1.045e-01, -9.006e-02, 1.093e-01, 1.637e-01, -8.574e-02, -8.930e-03, 5.782e-02, -5.858e-02, -1.084e-01, -2.936e-02, 1.714e-03, 5.823e-02, -1.273e-01, -4.853e-02), r);\n\tr = MulAdd(s4_4, M4(1.060e-02, -2.217e-01, 2.880e-01, -3.584e-02, -2.595e-01, -1.631e-01, 1.352e-01, 2.201e-01, -1.267e-01, -9.749e-02, -2.792e-02, 1.037e-01, -3.967e-02, 9.149e-02, 4.318e-02, 1.166e-01), r);\n\tr = MulAdd(s4_5, M4(6.478e-02, -4.484e-02, 3.809e-02, -3.552e-02, 8.834e-02, -3.385e-02, -6.293e-02, 2.586e-01, -1.035e-02, 2.827e-02, -2.354e-02, 5.704e-02, 2.633e-02, 1.038e-01, -5.300e-02, -8.980e-03), r);\n\tr = MulAdd(s4_6, M4(9.930e-02, 1.884e-02, 4.265e-02, 1.050e-01, 6.271e-02, -2.960e-02, -6.198e-02, -3.177e-02, -1.982e-02, 3.138e-02, 2.802e-02, -7.681e-02, -1.440e-02, -3.626e-02, 2.283e-02, -9.296e-02), r);\n\tr = MulAdd(s4_7, M4(1.740e-01, -5.531e-02, -1.019e-01, 2.412e-01, 6.407e-02, -9.663e-02, -2.068e-01, 2.792e-01, -3.690e-02, 6.203e-02, -7.736e-02, -7.056e-02, 2.487e-02, -1.859e-02, 4.167e-02, 1.364e-01), r);\n\tr = MulAdd(s4_8, M4(5.267e-03, -2.518e-02, -5.685e-02, 9.379e-02, 1.073e-01, 6.220e-02, -4.334e-02, 1.590e-01, -2.332e-02, -6.173e-02, 1.565e-02, -2.200e-02, -9.786e-02, -9.415e-02, -5.747e-02, 5.885e-02), r);\n\tr = MulAdd(s5_0, M4(-1.377e-03, -1.527e-02, 1.928e-02, 8.000e-02, -8.736e-02, -5.620e-03, -4.459e-02, 4.203e-02, 1.057e-01, 4.444e-02, 2.365e-02, -9.226e-02, 7.327e-02, 3.791e-03, 6.473e-02, 2.468e-02), r);\n\tr = MulAdd(s5_1, M4(1.614e-01, 4.639e-02, -1.534e-01, 3.564e-02, 4.357e-02, 6.173e-02, 2.216e-02, -8.123e-02, -1.202e-01, 2.329e-02, 7.193e-02, 1.261e-01, 9.497e-02, -4.084e-02, 1.955e-01, 9.262e-02), r);\n\tr = MulAdd(s5_2, M4(2.801e-02, -4.912e-02, 7.114e-02, 1.439e-03, -9.265e-03, -6.691e-02, -5.837e-03, -9.360e-02, -8.374e-02, 1.933e-02, 9.814e-02, 2.211e-01, 1.116e-01, -4.033e-02, 1.073e-01, -5.177e-02), r);\n\tr = MulAdd(s5_3, M4(8.504e-02, -1.576e-01, -8.348e-02, -1.539e-01, 1.322e-02, 3.964e-02, -2.371e-02, -5.369e-02, 1.859e-01, -3.900e-02, -9.974e-02, 7.470e-02, 1.265e-01, 9.210e-02, -3.323e-02, 6.984e-02), r);\n\tr = MulAdd(s5_4, M4(7.407e-03, 3.467e-02, -5.767e-02, -1.088e-01, -1.367e-01, -7.396e-02, 8.759e-02, 9.492e-02, -3.186e-04, -1.533e-01, -1.613e-01, -1.761e-03, 3.867e-01, 2.290e-01, -1.586e-01, -2.010e-01), r);\n\tr = MulAdd(s5_5, M4(1.360e-02, -1.785e-02, -3.573e-02, -4.038e-02, 7.436e-02, 5.923e-02, -1.377e-02, -1.017e-01, -6.853e-02, -1.940e-02, -1.804e-01, -1.106e-01, 1.544e-01, -7.375e-02, 8.420e-02, -1.161e-01), r);\n\tr = MulAdd(s5_6, M4(-7.538e-02, -7.231e-02, 5.213e-02, 4.965e-02, -5.179e-04, 1.038e-02, 2.649e-02, 3.156e-05, -4.038e-03, -1.578e-01, 2.497e-02, -8.121e-02, 4.998e-02, -1.159e-01, 1.821e-01, 7.560e-02), r);\n\tr = MulAdd(s5_7, M4(1.023e-01, -1.525e-01, 4.211e-02, -2.338e-01, 2.877e-02, -1.010e-01, -1.719e-02, 9.882e-02, -3.067e-02, -7.396e-02, -1.246e-01, -7.543e-02, -1.324e-01, -1.461e-01, 1.423e-02, 2.280e-02), r);\n\tr = MulAdd(s5_8, M4(-4.715e-03, -5.282e-02, 3.491e-02, -9.070e-02, 1.037e-01, 1.120e-02, 7.443e-04, 9.966e-02, -8.891e-03, 5.557e-02, -1.180e-02, -3.528e-02, -3.237e-02, -1.740e-01, 4.937e-02, -2.464e-02), r);\n\tr = MulAdd(s6_0, M4(-8.665e-02, 9.442e-03, -3.271e-02, -1.549e-02, 8.047e-02, 1.667e-02, 6.394e-02, 8.030e-02, -1.415e-01, 7.993e-02, 7.679e-02, 5.065e-03, -7.120e-02, -2.077e-03, 1.013e-01, 5.265e-02), r);\n\tr = MulAdd(s6_1, M4(1.001e-01, -4.013e-02, -1.035e-01, -5.445e-02, 1.306e-01, 1.969e-02, 4.396e-02, -2.667e-01, -5.041e-02, 4.116e-02, -8.319e-02, -2.392e-01, 1.150e-01, -1.910e-02, 7.817e-02, 9.090e-02), r);\n\tr = MulAdd(s6_2, M4(3.404e-02, 8.336e-03, -1.125e-01, -1.510e-01, 1.460e-01, -3.987e-02, -8.898e-02, -2.425e-01, 1.092e-02, 5.936e-02, -3.514e-02, 6.529e-03, 3.837e-02, -2.472e-02, -9.547e-02, -9.396e-02), r);\n\tr = MulAdd(s6_3, M4(-1.513e-01, 2.992e-02, 1.391e-01, 5.229e-02, 1.068e-01, -9.627e-02, 3.284e-02, 2.356e-02, -7.095e-03, 1.784e-01, 3.594e-02, 1.013e-01, 1.698e-01, -8.420e-02, 2.065e-01, 9.354e-02), r);\n\tr = MulAdd(s6_4, M4(-1.394e-01, 2.430e-02, 8.983e-02, -8.055e-02, 1.957e-01, 1.421e-01, 4.197e-02, -1.625e-01, -1.161e-01, 4.852e-03, 2.710e-01, -3.648e-01, -1.721e-01, 5.707e-02, 3.576e-01, 3.643e-01), r);\n\tr = MulAdd(s6_5, M4(-6.297e-02, 1.236e-01, 3.529e-02, 6.796e-02, -4.249e-02, -2.873e-02, 7.233e-03, -1.039e-02, -7.700e-02, -8.922e-03, -1.446e-02, -2.781e-01, 2.135e-01, 7.543e-02, 8.269e-02, 1.142e-01), r);\n\tr = MulAdd(s6_6, M4(-5.073e-02, -3.300e-03, 4.523e-02, -2.752e-03, 1.079e-02, 1.085e-02, 8.277e-02, 1.070e-02, 9.057e-02, -1.403e-02, -4.971e-03, 1.269e-02, 1.669e-01, 1.033e-01, 1.315e-01, -1.391e-01), r);\n\tr = MulAdd(s6_7, M4(-1.036e-02, -9.453e-02, 1.037e-02, -1.003e-03, 1.193e-01, 5.614e-02, 9.476e-02, -3.669e-02, -1.811e-01, 1.325e-01, -1.106e-02, -1.057e-01, 1.558e-01, 1.597e-01, 1.786e-01, 2.404e-02), r);\n\tr = MulAdd(s6_8, M4(1.505e-03, -1.317e-01, -8.725e-02, -3.807e-02, 4.751e-02, -8.481e-02, 1.363e-02, 1.515e-01, -1.059e-02, 1.262e-01, -4.187e-02, 4.321e-04, 5.830e-02, 9.412e-02, 1.167e-01, -1.262e-01), r);\n\tr = MulAdd(s7_0, M4(2.247e-01, -2.586e-02, -1.196e-01, 1.432e-01, -2.930e-02, -2.740e-02, -1.187e-01, 7.369e-02, -9.139e-03, -9.799e-03, -3.261e-02, 1.047e-01, -4.716e-02, 1.361e-02, 3.058e-02, 1.517e-02), r);\n\tr = MulAdd(s7_1, M4(-2.263e-01, -6.201e-02, -5.533e-02, 1.001e-01, -1.249e-01, 7.313e-02, -7.635e-02, 6.038e-02, -7.559e-02, 1.219e-01, -4.758e-02, 1.272e-02, 9.694e-04, 8.565e-02, 3.794e-03, -2.245e-02), r);\n\tr = MulAdd(s7_2, M4(-6.290e-02, -2.224e-03, -1.022e-02, 7.237e-02, 3.171e-02, -4.334e-03, -1.161e-01, 1.032e-02, -3.537e-02, -1.875e-02, -1.202e-01, -6.996e-02, -2.806e-05, -2.278e-02, -5.171e-03, 5.068e-02), r);\n\tr = MulAdd(s7_3, M4(1.592e-01, -1.322e-01, -1.150e-01, 7.270e-02, -5.486e-02, -6.318e-02, -4.070e-02, -3.950e-02, 2.477e-02, 9.655e-02, 2.007e-02, -1.155e-01, -1.543e-02, -3.040e-02, -3.466e-02, 8.299e-03), r);\n\tr = MulAdd(s7_4, M4(-6.151e-02, 1.051e-01, 8.776e-02, -1.650e-01, 5.560e-02, 2.300e-01, 2.273e-01, 1.336e-01, -3.419e-02, 1.624e-01, 1.338e-01, -4.111e-02, -1.190e-01, 2.853e-04, -1.343e-01, 1.454e-01), r);\n\tr = MulAdd(s7_5, M4(9.564e-03, 6.705e-02, 7.108e-02, -1.017e-01, -5.055e-02, 3.334e-02, -5.725e-02, -8.431e-02, -1.571e-01, 5.455e-02, -1.318e-03, -6.714e-02, 7.995e-02, -1.517e-01, -1.170e-01, 2.803e-02), r);\n\tr = MulAdd(s7_6, M4(9.725e-02, -2.363e-01, -1.968e-01, 2.334e-01, 7.791e-03, 4.165e-02, -2.619e-02, 1.913e-02, -3.451e-02, -4.748e-02, 2.229e-02, 5.546e-02, -4.080e-02, -2.234e-02, 5.510e-03, -2.945e-02), r);\n\tr = MulAdd(s7_7, M4(2.238e-02, -1.256e-01, -9.673e-02, 5.074e-02, -3.286e-02, -4.920e-02, -3.279e-02, -1.358e-02, -1.090e-01, -3.961e-03, -3.684e-03, -7.970e-02, 7.199e-03, -3.798e-02, -9.125e-02, 3.217e-02), r);\n\tr = MulAdd(s7_8, M4(-1.132e-01, -5.104e-02, -3.001e-02, 5.771e-02, -2.920e-02, -7.713e-02, -1.449e-01, -6.916e-03, 5.838e-04, 1.030e-02, 4.348e-02, 1.441e-02, 5.680e-03, -3.232e-02, 3.748e-02, -9.775e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.540e-03, -2.048e-02, -4.214e-03, -1.008e-02 };\n\tr = MulAdd(s0_0, M4(-2.585e-02, -5.447e-02, -6.410e-02, 9.135e-04, 3.840e-03, 7.830e-02, 2.980e-02, -4.394e-03, -1.362e-01, 2.882e-02, -8.374e-02, -5.660e-02, 8.662e-02, 3.281e-02, 2.442e-02, 2.502e-01), r);\n\tr = MulAdd(s0_1, M4(-4.057e-01, 1.377e-01, 1.821e-01, 8.596e-02, -3.172e-02, -2.692e-02, -1.087e-02, -5.274e-02, -1.119e-01, -4.529e-02, 9.902e-02, 1.566e-01, 7.653e-02, -8.398e-02, -1.224e-01, -1.669e-01), r);\n\tr = MulAdd(s0_2, M4(-1.571e-01, -1.348e-02, 9.840e-02, 1.100e-01, 1.837e-02, 2.951e-02, -4.254e-02, -4.719e-03, 1.283e-01, 8.471e-02, -1.224e-01, 4.960e-02, -9.345e-02, 3.713e-02, 3.409e-02, -5.489e-02), r);\n\tr = MulAdd(s0_3, M4(-1.642e-02, 1.607e-01, 6.271e-02, -1.352e-02, -5.466e-02, -1.352e-01, -6.569e-02, 2.534e-02, 9.311e-03, -4.879e-02, 1.099e-01, -3.576e-02, 1.043e-01, 1.869e-01, -4.980e-02, 2.746e-01), r);\n\tr = MulAdd(s0_4, M4(-2.632e-01, 1.476e-01, -5.304e-02, -2.674e-01, -2.612e-02, 3.601e-02, 2.724e-01, 1.413e-01, 3.967e-02, 1.108e-01, 1.607e-01, -7.162e-03, 3.205e-01, 1.498e-01, -1.481e-01, -3.898e-02), r);\n\tr = MulAdd(s0_5, M4(-6.274e-02, 1.343e-02, -1.190e-03, 6.878e-02, 6.454e-02, -7.951e-02, 2.946e-02, 3.911e-02, 1.520e-02, -8.300e-02, 2.361e-02, -1.104e-01, 2.094e-01, 6.251e-03, -4.144e-02, 3.402e-02), r);\n\tr = MulAdd(s0_6, M4(1.792e-01, -3.768e-02, 4.980e-02, 8.778e-02, -8.272e-03, 1.126e-01, 3.220e-02, -5.665e-02, 4.564e-02, 9.751e-02, -2.899e-02, 5.977e-02, 4.468e-02, -1.758e-02, -6.659e-02, 2.254e-01), r);\n\tr = MulAdd(s0_7, M4(-1.326e-01, 4.870e-02, -8.994e-02, 1.498e-01, -6.912e-02, 1.986e-01, -6.959e-02, 5.150e-02, 5.573e-02, -5.805e-02, -6.558e-02, -2.183e-02, -2.339e-02, -3.981e-02, -1.137e-02, -3.469e-02), r);\n\tr = MulAdd(s0_8, M4(-3.780e-02, -4.288e-02, 1.231e-02, 3.720e-03, -6.412e-02, 9.954e-02, 5.369e-02, 8.991e-02, -4.869e-02, -9.182e-02, 2.655e-02, 7.953e-02, -1.577e-03, -1.117e-01, -2.791e-02, 2.585e-03), r);\n\tr = MulAdd(s1_0, M4(-4.467e-02, 1.163e-01, 1.010e-01, -3.280e-02, -3.160e-02, -1.412e-02, -1.160e-01, -1.212e-04, -9.141e-03, 1.402e-01, 4.036e-04, -2.182e-02, 1.524e-01, 8.302e-02, -9.509e-03, 6.960e-02), r);\n\tr = MulAdd(s1_1, M4(-1.356e-02, 7.281e-02, 3.867e-02, -9.842e-03, -1.949e-01, 8.373e-02, 1.343e-01, 2.841e-02, 6.260e-02, -8.060e-02, 1.853e-01, 1.154e-01, -7.933e-02, 1.144e-02, 1.572e-02, -3.281e-02), r);\n\tr = MulAdd(s1_2, M4(2.395e-03, 9.085e-02, 6.040e-02, 2.920e-02, 9.697e-02, -3.530e-02, -3.643e-02, 3.957e-02, 2.047e-01, 1.251e-02, -7.154e-02, 4.984e-02, -1.746e-02, 8.740e-02, 6.606e-02, -7.007e-02), r);\n\tr = MulAdd(s1_3, M4(9.398e-02, 7.480e-04, -8.108e-02, -3.124e-02, -7.854e-02, 5.976e-02, 1.977e-02, -5.280e-03, 9.734e-02, -2.138e-01, -4.311e-02, -1.293e-01, -2.922e-02, 4.149e-02, -5.614e-02, 4.738e-02), r);\n\tr = MulAdd(s1_4, M4(-5.260e-02, -1.144e-01, -2.939e-02, -2.192e-01, -2.769e-01, 8.326e-02, 1.198e-01, 1.079e-01, 3.293e-02, 7.920e-02, -6.125e-02, 5.985e-02, -5.756e-02, 2.575e-02, -2.339e-02, -2.205e-02), r);\n\tr = MulAdd(s1_5, M4(-2.392e-02, -4.508e-02, -1.011e-01, 1.019e-01, 1.123e-01, -3.425e-02, 8.296e-02, 4.336e-02, -2.547e-02, -1.141e-01, 1.746e-01, -1.671e-01, -5.462e-02, 1.379e-01, -2.071e-02, 2.653e-02), r);\n\tr = MulAdd(s1_6, M4(-4.377e-02, -3.417e-02, 1.735e-02, 6.546e-02, -2.559e-02, 6.914e-02, 8.200e-02, -1.373e-01, 1.990e-02, -6.559e-02, 1.056e-02, 2.410e-01, 1.999e-02, 2.395e-02, -9.721e-03, -7.985e-03), r);\n\tr = MulAdd(s1_7, M4(-3.746e-03, -3.663e-02, -1.538e-02, 4.688e-02, -3.282e-02, -1.423e-01, 3.211e-02, -2.777e-01, 1.854e-01, -1.091e-01, 7.542e-03, 5.689e-02, -2.584e-02, 5.099e-02, 9.334e-03, -8.013e-02), r);\n\tr = MulAdd(s1_8, M4(3.173e-02, -5.641e-02, 5.414e-03, -6.165e-02, -2.142e-01, 3.303e-02, 3.107e-02, -1.457e-01, 6.330e-02, 6.731e-02, -2.131e-02, 4.852e-02, 5.405e-02, -3.274e-02, 6.393e-02, -6.104e-02), r);\n\tr = MulAdd(s2_0, M4(-2.087e-01, 4.199e-02, 1.233e-01, -7.187e-02, 1.128e-02, 3.308e-02, 1.059e-01, 2.926e-01, -8.745e-02, -9.784e-02, 3.644e-02, -9.938e-02, -7.204e-02, 2.681e-02, -6.540e-02, -2.048e-01), r);\n\tr = MulAdd(s2_1, M4(7.861e-03, 1.970e-01, -4.907e-02, 5.596e-02, 1.791e-01, -1.221e-01, -1.436e-02, -6.716e-02, 1.264e-01, -1.511e-01, -1.275e-01, 1.137e-01, -4.364e-02, -2.254e-03, -5.332e-02, 2.385e-02), r);\n\tr = MulAdd(s2_2, M4(6.989e-02, 9.156e-02, -3.446e-02, -5.190e-02, 9.404e-02, -3.471e-02, -5.609e-02, 1.443e-01, -7.219e-02, -1.295e-01, -1.534e-01, -4.947e-02, -6.313e-02, -7.399e-04, -1.878e-01, 4.217e-02), r);\n\tr = MulAdd(s2_3, M4(1.321e-01, -6.419e-02, 7.203e-02, -1.379e-01, -2.549e-02, -1.886e-01, -8.105e-02, -2.253e-02, 2.186e-01, -1.831e-02, -7.786e-02, 1.768e-01, 2.367e-02, 1.452e-01, -1.983e-02, 1.518e-01), r);\n\tr = MulAdd(s2_4, M4(2.156e-01, 6.378e-02, -1.064e-01, -1.022e-01, 1.701e-01, -1.038e-01, -1.264e-02, -1.800e-02, -2.390e-01, -2.270e-01, -2.519e-01, -6.581e-02, 1.633e-01, 1.256e-01, 6.411e-02, 6.647e-02), r);\n\tr = MulAdd(s2_5, M4(6.107e-02, -9.067e-02, -1.240e-02, -2.628e-02, 1.194e-01, 1.773e-02, 2.114e-03, -4.391e-02, -2.084e-01, -1.128e-01, -4.914e-02, 1.101e-01, 1.726e-02, -1.220e-01, 7.833e-02, 3.529e-02), r);\n\tr = MulAdd(s2_6, M4(-2.155e-02, 9.136e-02, -1.980e-02, -1.268e-01, 9.448e-02, 3.122e-02, 1.124e-02, 8.269e-02, -8.386e-02, -1.907e-01, 1.474e-01, -8.034e-02, -5.186e-02, -2.152e-01, -3.611e-02, 6.186e-02), r);\n\tr = MulAdd(s2_7, M4(-1.224e-01, -1.328e-01, -4.884e-02, 5.879e-02, -5.024e-02, -8.542e-02, -1.082e-01, 1.971e-01, 1.982e-01, -3.316e-02, 1.471e-01, -2.310e-01, 9.502e-02, -1.520e-01, -1.229e-02, -4.399e-02), r);\n\tr = MulAdd(s2_8, M4(-2.699e-02, 6.634e-02, -2.067e-02, -1.152e-01, 7.637e-02, -1.409e-01, 4.916e-02, 8.563e-02, 4.391e-02, 3.214e-02, 3.985e-02, -9.064e-03, 5.131e-03, -9.717e-02, 1.151e-02, -1.024e-01), r);\n\tr = MulAdd(s3_0, M4(1.422e-01, 4.905e-02, 6.478e-02, 5.610e-02, 9.060e-02, -1.690e-02, -1.570e-02, 4.495e-02, -1.400e-02, 1.725e-03, 4.518e-02, 2.323e-02, 4.923e-02, -6.763e-03, 1.048e-01, 1.285e-01), r);\n\tr = MulAdd(s3_1, M4(1.272e-01, -6.393e-02, -9.546e-02, 3.530e-02, 7.041e-02, 1.867e-02, -9.025e-02, -6.270e-02, 4.864e-02, 2.072e-02, 4.579e-02, 4.292e-02, 7.846e-02, -2.893e-02, 1.548e-02, -1.232e-01), r);\n\tr = MulAdd(s3_2, M4(-4.305e-02, -2.403e-03, 9.340e-03, 4.241e-02, -5.840e-03, -2.270e-02, -2.000e-02, 8.703e-02, 6.364e-03, -1.474e-02, -3.378e-03, -3.872e-03, 2.892e-03, 4.422e-02, 1.212e-01, -8.838e-02), r);\n\tr = MulAdd(s3_3, M4(-4.035e-02, -2.075e-01, -1.039e-01, 1.811e-01, -8.418e-02, -6.565e-02, -2.244e-02, 8.378e-02, 1.240e-02, -2.228e-02, -4.853e-02, 1.112e-01, -1.243e-01, 6.860e-02, -5.448e-03, 1.038e-01), r);\n\tr = MulAdd(s3_4, M4(-1.920e-02, 8.644e-02, 3.819e-02, -1.893e-01, 1.294e-01, -4.752e-02, 8.818e-02, -5.266e-02, -1.246e-01, 6.341e-02, -4.990e-02, -1.671e-02, -5.725e-02, -9.683e-02, 9.638e-02, 5.240e-02), r);\n\tr = MulAdd(s3_5, M4(2.002e-02, 1.140e-01, 8.538e-02, 1.559e-03, 1.636e-02, 1.223e-02, -1.186e-02, 2.168e-03, -1.009e-01, 9.316e-03, -9.731e-02, 8.741e-03, 2.632e-02, -1.135e-01, -1.423e-01, 8.233e-02), r);\n\tr = MulAdd(s3_6, M4(1.938e-03, 5.731e-02, 5.645e-02, 1.169e-01, -6.159e-02, 4.560e-04, -1.568e-02, -1.016e-02, 2.723e-03, -6.959e-02, 5.848e-03, -1.724e-01, 3.066e-02, -4.452e-02, -4.712e-02, 1.104e-01), r);\n\tr = MulAdd(s3_7, M4(1.694e-01, 8.618e-02, 1.097e-01, 9.419e-02, -4.966e-02, 4.364e-02, -3.877e-02, -6.220e-03, -1.216e-02, 9.959e-02, -3.456e-02, 2.029e-02, -1.582e-01, 6.902e-02, -6.370e-02, -3.300e-02), r);\n\tr = MulAdd(s3_8, M4(2.493e-02, 9.216e-03, -2.540e-02, -4.810e-03, -2.827e-02, -9.963e-03, 2.732e-02, 2.375e-02, 4.082e-02, -2.226e-02, 6.804e-02, -4.862e-03, -1.570e-02, -1.027e-01, -3.080e-02, -9.270e-02), r);\n\tr = MulAdd(s4_0, M4(4.554e-02, 1.888e-02, -2.795e-03, 4.838e-02, 4.199e-02, -2.067e-01, 4.532e-05, 5.182e-03, -1.319e-02, 6.469e-02, 3.205e-03, -1.996e-02, -3.419e-02, 5.210e-02, -1.860e-02, 1.883e-02), r);\n\tr = MulAdd(s4_1, M4(7.305e-02, 9.797e-02, 1.991e-01, 3.324e-02, -8.276e-02, -1.215e-01, 5.238e-02, 1.681e-01, -2.036e-01, -6.233e-02, -1.087e-02, 2.798e-02, -7.057e-02, 2.005e-02, 9.847e-02, 4.418e-03), r);\n\tr = MulAdd(s4_2, M4(-1.732e-02, -6.019e-02, 1.367e-01, 5.675e-02, 1.323e-01, -7.145e-02, 1.792e-01, -9.877e-02, 6.898e-02, 7.271e-02, 7.827e-02, 3.562e-02, 9.910e-02, -1.445e-02, -1.436e-02, -1.742e-02), r);\n\tr = MulAdd(s4_3, M4(-1.205e-02, 8.219e-02, -7.588e-03, 1.023e-01, -8.441e-02, 3.061e-02, -8.574e-02, 3.020e-01, 7.354e-04, 5.538e-02, 4.402e-02, -1.078e-01, 2.473e-02, -5.658e-03, -1.434e-01, 3.323e-03), r);\n\tr = MulAdd(s4_4, M4(-1.732e-01, 9.407e-02, -6.044e-02, -7.058e-02, 8.125e-02, -1.388e-02, 2.053e-02, 2.503e-01, -1.979e-02, -2.590e-01, -1.424e-01, -2.107e-01, 6.958e-02, -1.036e-01, -3.720e-01, 7.251e-02), r);\n\tr = MulAdd(s4_5, M4(1.764e-02, 7.230e-02, 4.248e-02, 1.236e-01, -1.160e-01, -2.729e-01, -4.344e-02, 1.358e-01, 1.727e-02, 5.078e-02, -1.369e-01, 3.504e-02, 2.322e-02, 7.917e-02, 8.632e-02, 8.075e-03), r);\n\tr = MulAdd(s4_6, M4(-2.007e-02, 4.633e-02, 3.940e-03, 3.681e-02, -1.385e-01, -1.386e-01, -3.241e-03, -5.116e-02, 5.133e-02, 5.488e-02, 1.790e-02, -7.664e-02, 1.172e-01, 4.431e-02, -4.884e-03, 4.572e-02), r);\n\tr = MulAdd(s4_7, M4(2.038e-02, 9.023e-02, 5.058e-02, 8.869e-02, 4.808e-02, -2.131e-02, -4.527e-02, 2.153e-01, -9.389e-03, -6.293e-02, 2.132e-03, -1.629e-02, 5.003e-03, -1.940e-01, -5.580e-04, 3.800e-02), r);\n\tr = MulAdd(s4_8, M4(-6.235e-03, -5.695e-03, 1.797e-03, -4.040e-02, -7.224e-02, -3.357e-01, -1.071e-01, 1.427e-01, -2.058e-02, -8.302e-02, 6.861e-02, -9.088e-02, 4.247e-02, -5.801e-03, 4.301e-02, -1.230e-02), r);\n\tr = MulAdd(s5_0, M4(-1.851e-01, -8.309e-03, -1.097e-02, 4.908e-02, -1.638e-03, -1.982e-02, 1.282e-02, 7.954e-02, -2.730e-02, 1.104e-02, -6.913e-03, -1.020e-01, -1.184e-02, 7.049e-02, -9.210e-03, -2.910e-02), r);\n\tr = MulAdd(s5_1, M4(-5.981e-02, 3.323e-02, 1.790e-01, 7.107e-02, -2.524e-02, 5.868e-02, 7.461e-02, 5.397e-03, 1.105e-02, -1.109e-02, -1.877e-01, 1.042e-01, 8.501e-02, -1.011e-01, -7.199e-02, -1.190e-01), r);\n\tr = MulAdd(s5_2, M4(2.461e-02, 3.315e-02, -7.544e-02, 3.864e-02, 1.306e-01, -3.625e-02, 9.585e-03, 1.112e-01, 1.350e-01, 7.111e-03, 1.438e-02, -1.083e-01, -6.924e-02, -3.498e-02, -7.076e-02, 1.377e-02), r);\n\tr = MulAdd(s5_3, M4(1.941e-01, 3.021e-02, 2.885e-02, -6.498e-02, -2.116e-02, 3.201e-02, 3.660e-03, 6.502e-02, -2.667e-02, 9.949e-03, 2.169e-02, -8.276e-02, -1.458e-01, -2.832e-02, -1.025e-01, 1.791e-01), r);\n\tr = MulAdd(s5_4, M4(8.388e-02, -3.981e-02, -1.060e-01, 1.874e-02, -7.816e-02, 2.979e-03, 5.130e-03, -1.849e-02, 2.030e-01, -5.015e-02, -6.907e-02, 2.951e-02, -3.908e-01, 8.986e-02, -6.753e-02, -1.275e-01), r);\n\tr = MulAdd(s5_5, M4(-5.842e-02, -1.493e-01, 5.994e-02, 2.976e-02, -7.239e-02, -1.667e-02, -4.189e-02, 3.085e-03, 2.728e-01, 2.139e-01, 1.643e-01, 5.303e-02, -1.843e-01, -9.559e-02, -1.233e-01, 8.742e-03), r);\n\tr = MulAdd(s5_6, M4(-1.255e-01, 7.025e-02, -7.532e-02, -9.300e-02, 7.462e-02, -7.091e-02, 4.919e-02, -3.458e-02, 1.290e-01, -5.353e-02, -5.911e-02, 1.364e-01, 3.136e-02, -1.116e-01, 4.377e-02, -5.287e-03), r);\n\tr = MulAdd(s5_7, M4(-2.363e-02, -3.794e-02, -1.007e-01, -8.856e-03, -7.124e-02, 5.981e-02, 2.890e-02, 3.538e-02, 6.294e-02, 1.174e-02, -5.866e-02, -2.908e-02, 2.588e-02, -2.905e-02, 4.247e-02, -1.011e-01), r);\n\tr = MulAdd(s5_8, M4(-5.449e-02, 6.772e-02, -7.855e-02, -1.544e-01, 2.643e-02, 3.867e-02, -4.634e-02, 7.590e-02, -1.813e-01, 1.047e-01, -1.400e-01, 3.614e-02, -8.915e-02, 7.867e-02, 4.121e-02, -1.364e-01), r);\n\tr = MulAdd(s6_0, M4(-1.979e-02, 4.119e-02, -4.703e-02, 7.739e-03, -9.471e-02, -5.100e-02, 1.301e-01, -1.197e-01, -2.493e-03, -2.455e-02, -1.174e-01, 4.942e-02, -1.109e-01, 6.456e-02, -7.671e-03, 1.920e-01), r);\n\tr = MulAdd(s6_1, M4(-6.147e-02, 9.588e-02, -2.003e-02, -5.682e-02, -1.995e-01, -4.454e-02, 3.487e-01, -1.024e-01, -9.889e-02, 1.686e-02, 9.011e-02, -1.528e-02, -3.332e-01, 3.212e-01, 2.864e-01, 1.939e-01), r);\n\tr = MulAdd(s6_2, M4(-8.544e-02, 1.802e-03, 6.422e-02, 4.824e-02, 5.645e-02, 1.208e-01, 9.078e-02, 2.502e-02, 2.094e-01, 2.460e-03, -1.114e-02, 4.912e-02, 4.944e-03, 9.641e-03, 1.579e-01, 1.204e-01), r);\n\tr = MulAdd(s6_3, M4(1.219e-01, 8.069e-02, -4.334e-02, -1.310e-01, 1.147e-01, 1.878e-02, -5.557e-02, -1.546e-01, -1.256e-01, -7.466e-02, 1.412e-01, 1.766e-01, -3.323e-01, 7.367e-02, -4.014e-03, 7.780e-02), r);\n\tr = MulAdd(s6_4, M4(4.867e-02, -1.692e-01, -3.644e-02, -1.731e-03, 4.042e-04, -7.033e-02, -1.145e-01, -1.296e-01, -1.945e-01, -7.274e-02, 1.330e-02, 1.813e-02, -1.548e-01, 5.739e-02, 1.718e-01, -1.194e-01), r);\n\tr = MulAdd(s6_5, M4(1.175e-01, 1.082e-01, 6.635e-02, 1.117e-02, -6.449e-02, -1.730e-02, -1.054e-02, -3.358e-02, -4.538e-02, -1.515e-01, -3.798e-03, -1.860e-01, -1.559e-02, 1.447e-01, 1.498e-01, 3.090e-02), r);\n\tr = MulAdd(s6_6, M4(-1.683e-03, 8.568e-03, 2.051e-02, -9.578e-02, -1.408e-02, 6.554e-02, -1.017e-02, -6.423e-02, 3.568e-02, 3.394e-02, -5.355e-03, 5.121e-02, -5.380e-02, 2.567e-01, -8.592e-03, 8.988e-02), r);\n\tr = MulAdd(s6_7, M4(-8.702e-03, 1.090e-01, 3.289e-02, -6.309e-02, -1.532e-02, 5.859e-02, 1.011e-02, -1.282e-01, -2.085e-01, 1.303e-01, -7.007e-02, -5.548e-02, -1.617e-01, 1.559e-01, -1.230e-01, 1.372e-01), r);\n\tr = MulAdd(s6_8, M4(-2.215e-02, 1.931e-02, -2.308e-02, 3.090e-02, -4.948e-03, 1.351e-01, -4.800e-02, -2.988e-02, -7.687e-02, 9.420e-03, -6.256e-04, -6.357e-02, -1.195e-01, -4.792e-02, -9.139e-02, 2.254e-01), r);\n\tr = MulAdd(s7_0, M4(2.203e-03, -2.638e-02, 1.745e-02, 5.854e-02, 3.843e-02, 4.916e-02, 2.544e-02, -7.969e-03, -4.501e-02, 1.514e-02, 1.200e-02, -1.089e-01, 2.486e-02, 1.640e-02, 6.529e-03, -7.843e-02), r);\n\tr = MulAdd(s7_1, M4(9.363e-02, -9.666e-02, -8.461e-02, -6.027e-02, 7.771e-02, 1.002e-01, -2.305e-01, 2.306e-02, -8.742e-02, 5.979e-02, 1.120e-01, 3.518e-02, -3.995e-02, -5.365e-03, -3.196e-02, 6.700e-02), r);\n\tr = MulAdd(s7_2, M4(-7.439e-02, 8.947e-02, 5.290e-02, -1.557e-01, 1.587e-01, 1.261e-01, 9.843e-02, 2.207e-02, 1.622e-02, 1.095e-02, -6.562e-02, 5.018e-02, 1.767e-01, -1.163e-02, -1.534e-02, 3.771e-02), r);\n\tr = MulAdd(s7_3, M4(-3.153e-03, -1.115e-01, -1.022e-01, -5.445e-02, 4.177e-02, 1.509e-01, -6.713e-02, 6.606e-02, 3.146e-02, 8.999e-02, 1.069e-01, 2.115e-01, -2.670e-02, -6.698e-03, -1.397e-01, -3.558e-02), r);\n\tr = MulAdd(s7_4, M4(5.507e-02, 8.218e-02, 8.870e-02, 1.737e-01, 1.133e-01, 1.509e-01, 4.197e-03, 1.395e-01, 2.306e-03, 1.406e-01, 6.409e-02, -1.196e-01, -1.049e-02, -1.731e-01, -1.654e-01, 8.603e-02), r);\n\tr = MulAdd(s7_5, M4(1.062e-01, 6.239e-02, -4.532e-02, -5.487e-02, 1.542e-01, -1.638e-01, 1.408e-02, 1.168e-01, 1.202e-01, -2.339e-02, 1.279e-01, -7.620e-02, -1.743e-02, -6.179e-02, 3.338e-02, -5.470e-02), r);\n\tr = MulAdd(s7_6, M4(-1.300e-02, -2.047e-01, 8.754e-02, -4.462e-02, -3.802e-02, 4.599e-02, -1.657e-02, 4.666e-02, 3.600e-02, 3.374e-02, -2.250e-02, 1.236e-01, 2.197e-02, -4.661e-02, -1.053e-02, -3.981e-03), r);\n\tr = MulAdd(s7_7, M4(-1.520e-01, 5.762e-03, 4.383e-02, -7.849e-02, 2.270e-02, -7.221e-02, 6.181e-02, 3.006e-02, -6.144e-03, 9.368e-03, -2.907e-02, -9.180e-02, 9.218e-02, -3.234e-02, 2.264e-02, 2.187e-02), r);\n\tr = MulAdd(s7_8, M4(-2.746e-03, 6.316e-04, 6.491e-02, -9.523e-02, 1.773e-02, -7.556e-03, -3.814e-02, 2.902e-02, 1.077e-01, -2.771e-02, -8.368e-03, 1.335e-01, -6.737e-02, 3.118e-02, 5.495e-03, 4.450e-02), r);\n\treturn r;\n}\n\nvoid Pass12(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 13\n//!DESC conv12\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.286e-03, -1.519e-02, -1.301e-02, 8.360e-03 };\n\tr = MulAdd(s0_0, M4(8.397e-03, -2.507e-02, 3.115e-02, 2.415e-02, 3.982e-02, -3.972e-02, -6.782e-02, -8.096e-02, -1.642e-01, 6.040e-02, -3.850e-02, -1.102e-01, 3.201e-02, -8.033e-02, 4.230e-02, 2.037e-02), r);\n\tr = MulAdd(s0_1, M4(-1.313e-02, 2.910e-02, -6.413e-02, -7.355e-02, -2.697e-02, 2.228e-02, 1.411e-01, -1.088e-02, -1.628e-01, -1.257e-01, 1.380e-01, -9.211e-02, -1.886e-01, -8.809e-04, -7.095e-02, -6.747e-02), r);\n\tr = MulAdd(s0_2, M4(1.101e-01, 1.681e-02, -5.337e-02, 4.518e-02, -2.836e-02, 2.875e-02, 7.521e-02, -4.616e-02, -2.643e-02, 5.796e-02, 1.729e-01, -1.620e-02, 6.658e-03, 9.503e-03, 3.965e-02, -3.183e-02), r);\n\tr = MulAdd(s0_3, M4(-8.337e-02, -1.290e-02, 2.836e-02, -2.081e-02, 1.285e-02, 6.316e-02, 1.410e-01, -1.300e-02, 8.592e-03, -6.168e-02, 1.673e-01, -7.256e-03, 9.658e-02, -1.437e-02, -4.260e-02, 9.467e-02), r);\n\tr = MulAdd(s0_4, M4(-7.681e-02, -4.291e-02, -1.979e-02, -1.736e-01, 1.542e-01, -5.348e-02, -4.007e-02, 1.381e-01, -8.457e-02, -2.382e-01, 2.236e-01, -1.390e-01, -2.633e-01, -2.178e-01, -8.184e-02, 3.088e-01), r);\n\tr = MulAdd(s0_5, M4(-3.499e-02, 2.610e-02, 1.548e-03, 4.187e-02, -2.211e-02, 8.575e-02, 6.978e-02, -2.701e-02, 2.594e-02, -5.905e-02, 1.040e-01, -3.981e-02, 1.144e-01, 1.922e-01, 2.564e-02, -1.208e-01), r);\n\tr = MulAdd(s0_6, M4(-8.450e-02, -1.947e-02, -2.304e-01, -6.763e-03, -8.898e-02, 9.945e-02, 2.341e-02, -4.767e-02, -3.517e-02, -1.880e-01, 9.954e-02, -6.023e-02, 3.020e-02, 1.812e-02, -2.772e-02, 1.657e-03), r);\n\tr = MulAdd(s0_7, M4(-6.004e-02, 1.237e-01, 1.032e-01, -2.493e-02, 2.888e-02, 1.012e-02, 2.147e-02, -4.955e-02, 5.550e-02, -8.621e-02, -1.082e-02, -2.324e-02, 2.239e-02, 1.733e-01, 2.695e-01, -1.750e-01), r);\n\tr = MulAdd(s0_8, M4(-7.833e-02, -9.751e-02, -1.117e-02, -7.731e-03, -2.557e-02, 3.695e-02, 1.527e-02, 1.387e-02, -6.895e-02, -5.964e-02, -4.942e-02, -1.406e-03, 4.612e-02, -3.747e-03, 4.250e-02, -5.014e-02), r);\n\tr = MulAdd(s1_0, M4(7.934e-02, -1.423e-02, 5.552e-02, 5.383e-02, -9.127e-02, -2.168e-01, 2.002e-01, 3.897e-02, 2.180e-01, 1.213e-01, 4.437e-02, 1.211e-01, 7.367e-02, -2.357e-02, 4.699e-02, 4.793e-02), r);\n\tr = MulAdd(s1_1, M4(-1.863e-01, -1.093e-01, -3.252e-02, -1.021e-01, -1.603e-01, 1.726e-01, -4.782e-02, -6.979e-02, -3.930e-02, -8.150e-02, -1.062e-01, -7.686e-02, -1.973e-02, 1.232e-01, -2.288e-03, 1.158e-03), r);\n\tr = MulAdd(s1_2, M4(-6.841e-02, -1.142e-02, -5.207e-02, 8.529e-02, -1.082e-01, 2.558e-02, 7.596e-02, 8.927e-02, 5.918e-02, 2.307e-03, 1.047e-02, -1.678e-02, 2.242e-02, -3.374e-02, -2.585e-02, -1.486e-02), r);\n\tr = MulAdd(s1_3, M4(-2.578e-02, 2.106e-02, 2.695e-02, 1.425e-02, 1.449e-01, 1.877e-02, -5.360e-03, -9.501e-03, 5.998e-02, -1.275e-03, 1.868e-03, 1.023e-01, -4.661e-02, -1.993e-02, -4.572e-02, 3.942e-02), r);\n\tr = MulAdd(s1_4, M4(-1.070e-01, 1.508e-01, 1.678e-01, -2.106e-01, -1.590e-01, -2.091e-01, 3.379e-01, -1.663e-01, -6.316e-02, 1.046e-02, -1.199e-02, 1.777e-02, -2.246e-01, -1.937e-01, -2.215e-02, 1.867e-01), r);\n\tr = MulAdd(s1_5, M4(-2.094e-01, 9.463e-02, -6.119e-02, 1.755e-01, 2.438e-02, -1.608e-01, -6.362e-02, 9.098e-03, 1.941e-01, 6.520e-02, 1.421e-04, 6.321e-02, 7.592e-02, 2.601e-02, 7.691e-02, 1.529e-02), r);\n\tr = MulAdd(s1_6, M4(-8.407e-03, 3.070e-02, -1.444e-01, 5.257e-02, -9.693e-02, -1.035e-01, 8.972e-02, -1.195e-01, -3.903e-02, 4.734e-02, 6.398e-02, 5.925e-02, 2.000e-02, 2.156e-02, -1.389e-01, 4.243e-02), r);\n\tr = MulAdd(s1_7, M4(5.691e-02, 8.460e-02, 8.371e-02, -1.346e-01, -1.417e-01, -1.081e-01, 9.715e-02, -5.800e-02, 7.237e-04, 9.527e-03, -5.995e-02, 9.008e-03, 1.199e-01, -4.870e-02, 1.424e-01, -5.562e-03), r);\n\tr = MulAdd(s1_8, M4(-4.500e-02, -8.459e-02, 6.573e-02, -6.560e-03, -4.299e-02, -9.009e-02, 1.337e-01, 3.893e-03, 4.751e-03, 1.002e-02, -2.441e-02, 1.833e-02, 2.459e-02, -1.182e-01, 5.638e-02, -4.341e-02), r);\n\tr = MulAdd(s2_0, M4(1.669e-01, 1.216e-01, -2.061e-01, 1.809e-02, -9.047e-02, 1.353e-01, -1.150e-01, -8.150e-02, 4.362e-03, 4.912e-02, -2.679e-02, 7.399e-03, -5.346e-02, 6.318e-02, -4.539e-02, -3.901e-02), r);\n\tr = MulAdd(s2_1, M4(4.280e-02, 2.413e-02, -1.279e-01, -3.465e-03, -8.710e-02, 2.938e-02, -2.686e-01, -1.687e-01, -4.013e-02, -9.156e-03, -3.806e-02, 5.557e-02, -2.322e-01, 1.293e-01, -5.066e-02, 1.309e-02), r);\n\tr = MulAdd(s2_2, M4(1.148e-01, -4.865e-02, -1.102e-01, -5.574e-02, 4.287e-02, -9.630e-02, -4.427e-02, 4.931e-02, 8.348e-02, 1.964e-02, 9.953e-03, 7.870e-03, -3.408e-02, -2.018e-01, -9.873e-03, 1.215e-02), r);\n\tr = MulAdd(s2_3, M4(1.765e-01, 5.511e-02, -3.297e-02, 1.033e-02, -7.185e-02, 7.548e-02, 8.293e-02, 2.149e-01, 1.026e-01, -1.676e-01, 3.156e-02, 1.246e-01, -2.424e-01, -2.664e-01, 6.883e-02, -7.061e-02), r);\n\tr = MulAdd(s2_4, M4(-8.945e-02, -2.058e-03, 4.893e-03, 1.060e-02, -1.917e-01, 2.733e-02, 1.772e-01, -6.912e-02, 1.940e-02, -1.210e-01, -2.042e-01, -7.255e-02, -2.123e-01, 2.424e-01, 1.922e-01, 7.533e-02), r);\n\tr = MulAdd(s2_5, M4(1.628e-01, -3.888e-02, -6.902e-02, -6.696e-02, 1.214e-01, -1.368e-01, 6.016e-03, 1.067e-01, 4.747e-02, -1.004e-01, -1.289e-01, 6.043e-02, -2.105e-02, 1.687e-01, 4.420e-02, -8.027e-03), r);\n\tr = MulAdd(s2_6, M4(-1.510e-01, -5.490e-02, -1.297e-01, 3.940e-02, -8.791e-03, -1.223e-01, -1.458e-01, 8.238e-02, -1.630e-02, 4.674e-02, 1.099e-01, -6.963e-02, 2.266e-03, 1.970e-02, -4.032e-02, 4.027e-02), r);\n\tr = MulAdd(s2_7, M4(3.974e-02, 1.602e-01, 1.467e-02, 4.403e-02, -6.402e-02, -8.992e-02, -1.441e-01, 1.088e-01, 3.071e-03, 1.187e-01, 1.116e-01, 6.374e-02, 1.102e-01, -1.638e-02, -5.427e-02, 6.011e-02), r);\n\tr = MulAdd(s2_8, M4(-5.415e-03, 1.614e-02, -4.642e-02, 7.718e-03, -9.478e-02, -3.681e-02, -3.789e-02, 2.388e-02, -9.976e-02, 1.317e-02, 4.867e-03, 5.080e-02, 1.671e-02, -4.394e-02, 1.850e-01, -1.010e-01), r);\n\tr = MulAdd(s3_0, M4(4.740e-02, -6.012e-02, -3.478e-02, -1.880e-03, -5.525e-02, -1.306e-01, 3.589e-02, 6.313e-02, 1.849e-01, 1.954e-03, 1.245e-01, 1.461e-02, 7.237e-02, 1.013e-01, -3.245e-02, -3.877e-02), r);\n\tr = MulAdd(s3_1, M4(6.860e-02, 7.825e-02, -2.664e-02, -2.195e-02, -3.145e-02, 1.214e-01, 1.442e-01, -2.997e-02, -7.452e-02, 2.469e-01, 5.195e-02, 6.900e-02, 9.190e-03, 3.711e-02, -6.706e-02, 2.437e-02), r);\n\tr = MulAdd(s3_2, M4(-1.527e-02, 4.180e-02, -8.521e-02, -3.332e-02, 1.535e-02, -1.797e-02, 4.460e-02, 3.166e-02, 1.183e-02, -6.006e-02, -6.930e-02, -1.633e-02, -1.657e-02, 1.111e-02, -1.051e-02, -2.269e-02), r);\n\tr = MulAdd(s3_3, M4(-6.838e-02, 2.394e-02, 1.204e-02, 2.979e-02, 1.136e-03, 5.229e-05, 1.704e-01, 5.685e-02, 8.749e-02, -7.986e-02, -1.910e-01, 3.314e-02, -2.369e-02, 1.071e-02, 4.937e-03, -8.059e-02), r);\n\tr = MulAdd(s3_4, M4(-9.546e-02, -9.481e-02, -3.515e-02, 1.106e-01, 1.133e-01, -1.358e-01, -7.766e-02, 2.247e-01, 8.541e-02, -1.843e-01, 2.519e-01, -4.787e-02, -8.646e-02, -5.881e-02, 7.200e-02, 5.031e-02), r);\n\tr = MulAdd(s3_5, M4(4.109e-02, 1.957e-02, -4.424e-02, 2.449e-03, 7.263e-02, 7.316e-02, -3.963e-02, 3.027e-02, -2.475e-01, -2.881e-02, 9.413e-02, -9.791e-03, -1.517e-02, 1.484e-01, -2.884e-02, -3.080e-02), r);\n\tr = MulAdd(s3_6, M4(-9.201e-02, 8.311e-02, 2.895e-02, 4.046e-03, -3.389e-02, 6.215e-03, 2.693e-01, -5.677e-02, -1.315e-02, 2.071e-01, 1.434e-01, -4.370e-02, 1.987e-02, -1.004e-02, 9.911e-02, 2.902e-02), r);\n\tr = MulAdd(s3_7, M4(-1.415e-01, 4.222e-02, -2.972e-02, 1.147e-01, -5.209e-02, -2.712e-02, 6.404e-02, 3.877e-03, 4.556e-02, -3.120e-01, -2.042e-01, 6.441e-02, -7.920e-02, 7.186e-02, 1.415e-02, 3.390e-02), r);\n\tr = MulAdd(s3_8, M4(-9.644e-02, 2.409e-02, 1.069e-01, 2.458e-02, -1.209e-01, 4.212e-02, -3.278e-03, 6.059e-04, -1.440e-01, 1.543e-01, -1.242e-03, 6.723e-02, -2.569e-02, -6.542e-02, 2.427e-02, 2.092e-02), r);\n\tr = MulAdd(s4_0, M4(3.991e-03, -4.901e-02, -3.711e-02, -1.704e-02, 6.526e-02, 3.046e-02, -4.469e-02, -7.765e-02, 6.067e-02, -1.421e-01, 6.070e-02, 8.194e-02, -2.711e-02, 3.438e-03, 1.344e-02, -2.153e-02), r);\n\tr = MulAdd(s4_1, M4(1.991e-02, -4.666e-02, 6.617e-02, 3.197e-03, -9.838e-02, 4.802e-02, -1.296e-01, -7.719e-02, -2.034e-02, 9.824e-02, 1.153e-02, -8.796e-02, -5.803e-02, 2.489e-01, -1.353e-01, -4.269e-02), r);\n\tr = MulAdd(s4_2, M4(-3.196e-02, 4.000e-02, 5.576e-02, -1.748e-02, 4.365e-02, -1.031e-01, -2.163e-04, -4.052e-02, -2.934e-02, 3.231e-02, -6.368e-02, -4.976e-02, -1.307e-02, -3.818e-02, -1.569e-01, -3.249e-02), r);\n\tr = MulAdd(s4_3, M4(1.348e-02, 1.970e-02, 1.851e-01, 4.361e-02, 1.209e-01, 6.510e-03, -1.089e-01, 4.626e-02, -9.024e-02, -5.603e-02, -9.403e-02, 1.504e-02, -4.843e-02, 2.236e-02, 1.679e-03, -3.139e-02), r);\n\tr = MulAdd(s4_4, M4(1.056e-01, -1.621e-01, -2.201e-01, 1.882e-01, 1.910e-01, -1.139e-01, 2.343e-03, 3.804e-02, 4.681e-02, -2.508e-01, -8.845e-02, -1.726e-01, -1.087e-01, 8.428e-02, 3.052e-01, 1.148e-01), r);\n\tr = MulAdd(s4_5, M4(7.644e-02, -3.893e-03, -8.044e-02, -1.695e-03, 6.434e-02, -6.097e-02, 3.127e-02, 3.009e-02, 6.361e-02, 1.526e-02, 6.214e-02, 1.346e-02, -2.310e-01, 2.733e-03, 1.991e-01, -1.005e-01), r);\n\tr = MulAdd(s4_6, M4(3.758e-03, 1.069e-01, 6.274e-02, 3.918e-02, -3.376e-02, -4.262e-02, 1.166e-02, -5.441e-02, 1.276e-02, 5.302e-02, 4.024e-02, 4.031e-02, 2.924e-02, -1.500e-02, 1.072e-01, 9.864e-03), r);\n\tr = MulAdd(s4_7, M4(4.560e-02, 3.091e-03, 8.830e-02, 2.415e-02, 7.097e-02, 4.856e-02, 1.249e-02, 3.016e-02, -4.067e-02, 5.510e-02, -5.353e-02, 4.705e-02, 6.581e-02, -1.605e-01, -2.567e-02, 1.360e-01), r);\n\tr = MulAdd(s4_8, M4(-1.925e-02, 8.326e-02, 1.014e-01, 2.056e-02, -8.488e-03, -2.376e-02, -9.331e-02, -2.036e-02, -6.477e-02, -9.741e-02, 3.254e-02, 2.406e-02, 1.069e-01, -2.900e-02, -2.892e-02, 8.558e-03), r);\n\tr = MulAdd(s5_0, M4(2.073e-02, 2.304e-02, 1.707e-02, -2.880e-02, 1.728e-01, 4.448e-02, 1.766e-02, 5.097e-02, 4.626e-02, 2.093e-03, 3.893e-02, 1.900e-02, 4.488e-03, -6.663e-02, -5.151e-02, 2.597e-02), r);\n\tr = MulAdd(s5_1, M4(6.632e-03, 6.420e-02, -5.954e-02, -1.401e-02, -1.762e-01, 1.516e-02, -1.572e-01, 2.048e-03, -7.453e-02, 1.642e-01, -5.123e-02, -4.086e-03, 1.272e-01, 9.005e-02, -3.063e-02, 7.717e-02), r);\n\tr = MulAdd(s5_2, M4(8.182e-02, -5.984e-02, 2.433e-02, -4.260e-02, 1.285e-01, 6.395e-02, -1.258e-01, -1.890e-02, -3.552e-02, -1.902e-01, 4.936e-02, -1.089e-02, 1.330e-02, -1.291e-02, 7.128e-02, 2.062e-02), r);\n\tr = MulAdd(s5_3, M4(-1.814e-01, 7.015e-02, 1.626e-01, 1.078e-01, 3.475e-02, 1.650e-01, -2.960e-02, -2.535e-02, -1.735e-01, -1.667e-02, 1.841e-01, 2.134e-02, 2.445e-02, -1.719e-02, -2.750e-02, 3.184e-02), r);\n\tr = MulAdd(s5_4, M4(-1.157e-01, 8.743e-02, -1.785e-01, 1.966e-01, 1.679e-01, -1.695e-01, 1.127e-01, -9.157e-03, 1.483e-01, -1.440e-01, 1.475e-01, -1.654e-01, 1.709e-01, -4.515e-02, 9.961e-02, -3.409e-02), r);\n\tr = MulAdd(s5_5, M4(-5.665e-02, -6.123e-02, 2.767e-02, -2.876e-02, 3.362e-02, 2.646e-02, 2.164e-01, -1.702e-02, 2.073e-02, 3.452e-03, 1.165e-01, 1.009e-02, -7.879e-02, 7.307e-02, 7.719e-02, -1.188e-01), r);\n\tr = MulAdd(s5_6, M4(1.073e-01, -5.339e-02, -1.523e-01, -4.295e-02, -5.219e-02, -5.274e-04, 9.527e-02, -3.133e-02, -8.614e-03, -1.059e-01, 9.820e-02, 1.012e-02, 2.436e-02, 9.228e-02, 8.783e-02, -5.642e-02), r);\n\tr = MulAdd(s5_7, M4(2.379e-01, -1.225e-01, 9.882e-03, 9.354e-02, -1.101e-01, 1.232e-01, 3.131e-02, -2.203e-02, 3.696e-02, -3.172e-02, 1.365e-01, 7.894e-02, 4.409e-02, -1.210e-01, -9.969e-02, -1.792e-02), r);\n\tr = MulAdd(s5_8, M4(1.454e-01, 2.593e-02, 1.723e-01, -5.088e-02, -1.571e-02, 5.285e-02, -1.257e-01, -3.311e-02, -5.324e-02, 6.856e-02, 7.979e-02, -1.566e-02, 7.197e-02, 3.892e-02, -2.399e-02, -5.203e-02), r);\n\tr = MulAdd(s6_0, M4(-7.839e-02, 1.398e-03, -7.348e-02, -6.479e-02, -5.027e-02, 1.044e-01, -1.014e-02, 3.825e-02, 1.008e-01, 7.028e-02, 2.653e-02, 2.244e-02, -4.615e-02, -4.465e-02, 1.302e-01, -5.276e-03), r);\n\tr = MulAdd(s6_1, M4(1.690e-01, 2.425e-01, -1.174e-01, 9.586e-03, -7.434e-02, -7.413e-02, -1.179e-01, -6.104e-02, -5.331e-02, -1.369e-02, 5.085e-03, 2.225e-02, -1.559e-01, -5.708e-02, -1.527e-02, -5.978e-02), r);\n\tr = MulAdd(s6_2, M4(6.324e-02, -6.753e-02, -1.233e-01, 8.027e-03, -3.293e-02, -1.514e-01, 1.218e-02, -2.946e-02, 1.302e-01, -1.332e-02, -1.594e-02, -8.539e-02, -2.705e-01, -4.581e-02, 1.323e-01, 2.371e-01), r);\n\tr = MulAdd(s6_3, M4(-1.933e-01, 6.691e-02, -2.664e-01, 1.988e-03, -8.715e-02, -5.864e-02, -1.366e-02, -5.674e-02, -2.230e-02, 4.250e-02, 4.865e-02, 4.707e-02, 3.169e-02, -5.539e-02, -1.776e-02, -9.227e-02), r);\n\tr = MulAdd(s6_4, M4(-1.037e-01, 1.628e-01, -1.394e-01, -7.656e-02, 7.386e-03, 1.390e-02, 1.271e-02, 2.873e-02, -2.167e-02, 1.093e-01, 2.433e-01, -2.497e-01, 7.878e-02, -2.173e-01, -3.023e-01, -3.329e-01), r);\n\tr = MulAdd(s6_5, M4(-6.338e-02, 3.530e-03, 3.445e-03, 4.110e-02, -2.004e-02, 6.223e-03, 1.371e-01, -2.474e-02, 1.499e-01, 1.088e-01, 4.740e-02, -1.042e-01, 2.863e-01, -1.401e-01, 1.633e-02, -8.017e-02), r);\n\tr = MulAdd(s6_6, M4(-3.823e-02, 1.272e-01, -1.866e-03, 7.398e-02, 3.718e-02, -4.374e-02, 6.790e-02, -6.153e-03, -6.573e-02, -1.742e-01, -1.284e-03, -3.181e-02, -8.365e-02, -4.302e-02, -9.620e-03, -4.319e-02), r);\n\tr = MulAdd(s6_7, M4(2.086e-01, -2.530e-01, -3.056e-01, -1.304e-01, -2.967e-02, 7.706e-02, 1.326e-01, -3.692e-02, 1.018e-01, -2.921e-02, 6.086e-02, 1.081e-01, -2.208e-02, 1.080e-01, 2.565e-01, -1.048e-02), r);\n\tr = MulAdd(s6_8, M4(1.168e-01, -1.340e-02, -1.155e-01, 1.552e-03, -9.284e-03, -7.575e-03, -9.098e-02, 7.785e-03, 1.121e-01, -2.761e-02, 5.135e-02, -1.342e-01, -4.632e-02, 3.247e-02, 6.640e-02, -1.430e-01), r);\n\tr = MulAdd(s7_0, M4(-5.174e-02, -3.802e-02, 2.501e-02, 3.943e-02, -8.928e-02, -4.067e-03, 1.307e-01, -5.172e-02, -7.696e-03, -5.941e-02, 1.575e-01, 6.193e-02, 3.222e-02, 1.874e-02, 4.168e-02, 5.419e-02), r);\n\tr = MulAdd(s7_1, M4(5.314e-02, -2.911e-02, 6.485e-02, -5.315e-02, -1.255e-01, -1.392e-03, 1.852e-02, -6.462e-02, -1.095e-01, 5.401e-02, -4.038e-02, 1.017e-01, 2.572e-02, -8.017e-02, -3.257e-02, 3.747e-02), r);\n\tr = MulAdd(s7_2, M4(-1.978e-02, -1.773e-03, -1.841e-02, 9.889e-03, 3.958e-02, -4.974e-03, 6.257e-02, 9.362e-02, -2.719e-02, -1.428e-02, 1.190e-02, -5.830e-02, -7.803e-02, -1.117e-01, 1.294e-01, 2.755e-02), r);\n\tr = MulAdd(s7_3, M4(-1.558e-01, 1.600e-01, -1.352e-01, 3.225e-02, 6.283e-02, 3.267e-02, -1.065e-01, -4.893e-02, -7.680e-02, -1.147e-02, 2.283e-02, 9.253e-02, -1.045e-02, 7.882e-03, -3.457e-02, -6.666e-03), r);\n\tr = MulAdd(s7_4, M4(3.745e-02, -1.399e-03, -2.196e-01, -5.805e-02, -5.250e-02, -2.187e-03, -6.491e-02, 1.274e-01, 5.554e-02, 4.309e-02, -8.571e-02, -1.076e-01, -1.224e-02, 2.910e-03, -1.020e-01, -1.131e-01), r);\n\tr = MulAdd(s7_5, M4(6.560e-02, -1.500e-01, -7.759e-02, 2.132e-02, -1.682e-02, -4.589e-02, 1.357e-01, -5.383e-02, -4.839e-02, -7.040e-02, -1.398e-01, 3.404e-02, 3.647e-02, 9.801e-02, -1.931e-02, 2.339e-02), r);\n\tr = MulAdd(s7_6, M4(-3.344e-02, -1.224e-01, 6.334e-02, -4.529e-02, 5.797e-03, 8.809e-02, 5.366e-02, -7.795e-03, -3.646e-02, -5.899e-03, -1.115e-01, -3.916e-02, -1.248e-02, 9.711e-03, -3.724e-02, 1.345e-02), r);\n\tr = MulAdd(s7_7, M4(6.573e-02, -9.046e-02, 1.977e-01, -5.902e-02, 1.941e-02, -9.373e-02, -7.441e-02, -2.884e-02, -8.218e-02, -8.859e-02, -1.948e-01, 9.318e-02, -8.750e-03, 6.997e-02, 1.364e-01, -1.964e-02), r);\n\tr = MulAdd(s7_8, M4(2.416e-02, -2.571e-02, 1.039e-01, -3.071e-02, 3.977e-02, -7.836e-02, -6.999e-02, 1.225e-02, -3.535e-02, 4.576e-02, -3.866e-02, 8.169e-02, 2.912e-03, 9.796e-02, -9.763e-02, -3.325e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -6.209e-03, -2.322e-02, -6.479e-03, 3.211e-03 };\n\tr = MulAdd(s0_0, M4(-5.735e-02, 1.257e-01, 3.693e-02, 4.120e-02, -4.737e-03, -2.852e-02, -1.082e-01, 4.594e-02, 2.843e-01, -4.893e-02, 9.070e-02, -1.192e-01, -6.449e-02, -3.347e-02, 1.391e-03, 5.724e-03), r);\n\tr = MulAdd(s0_1, M4(1.055e-01, 7.005e-02, -2.144e-01, -6.068e-02, -2.865e-02, -2.763e-02, 7.198e-02, 8.962e-02, 3.127e-02, -4.890e-02, -5.165e-02, 7.375e-03, 3.223e-02, -3.471e-03, 1.291e-02, 3.367e-02), r);\n\tr = MulAdd(s0_2, M4(-5.957e-02, 5.653e-02, -3.870e-03, 3.876e-02, 6.014e-02, -1.175e-01, -4.020e-02, 7.707e-03, 6.639e-02, 5.481e-02, -7.995e-03, -2.986e-02, 6.320e-02, 8.378e-02, 2.165e-02, 8.805e-04), r);\n\tr = MulAdd(s0_3, M4(8.128e-02, 7.841e-03, 4.775e-02, -9.427e-03, -2.025e-01, 3.781e-02, -1.438e-02, 1.348e-01, 7.946e-02, -7.094e-02, 2.525e-01, 8.006e-02, -4.424e-02, 1.466e-01, -5.797e-02, 2.469e-02), r);\n\tr = MulAdd(s0_4, M4(1.546e-02, 3.020e-01, -7.200e-03, 1.162e-01, -1.535e-01, -1.677e-01, -1.889e-02, -7.218e-02, 1.884e-02, 1.402e-01, 1.545e-01, -1.332e-01, -3.194e-01, -2.470e-01, -2.017e-01, -1.419e-01), r);\n\tr = MulAdd(s0_5, M4(-5.847e-02, -3.240e-02, 1.593e-01, 5.361e-02, 4.448e-02, -2.931e-02, -1.197e-01, 3.625e-02, 4.968e-02, 6.573e-02, 3.133e-02, 2.704e-02, -4.164e-02, 3.470e-02, 1.581e-03, 5.542e-02), r);\n\tr = MulAdd(s0_6, M4(-5.268e-02, -5.200e-02, -1.156e-01, -2.042e-03, -3.021e-02, 5.858e-02, -8.935e-02, -7.148e-02, 1.408e-01, 1.224e-02, -3.358e-04, 7.851e-02, -4.945e-02, -7.446e-02, -1.190e-01, -2.825e-02), r);\n\tr = MulAdd(s0_7, M4(1.893e-02, -1.762e-02, 4.501e-02, -9.682e-02, -1.633e-02, -4.567e-02, -4.076e-02, 3.502e-02, 1.411e-01, 1.478e-02, 2.074e-01, -1.008e-01, -6.023e-02, -2.280e-01, 1.658e-01, 9.096e-03), r);\n\tr = MulAdd(s0_8, M4(2.054e-02, -3.343e-02, 5.537e-02, 3.073e-02, -4.820e-03, -4.301e-02, -5.973e-02, 5.608e-02, 2.994e-03, 3.080e-02, 4.691e-02, -7.288e-02, 5.702e-03, -1.103e-01, -1.659e-02, 1.058e-02), r);\n\tr = MulAdd(s1_0, M4(1.202e-01, 9.633e-02, 1.875e-02, 6.053e-02, -7.085e-02, 2.520e-02, -3.057e-02, -2.569e-01, 2.196e-02, -1.229e-03, -4.392e-02, 5.924e-02, -7.505e-02, 8.129e-02, 2.044e-02, -2.790e-02), r);\n\tr = MulAdd(s1_1, M4(2.244e-01, 9.546e-02, -1.172e-01, -1.139e-01, 3.678e-02, 7.077e-03, -4.363e-02, -4.238e-02, 7.629e-02, 1.122e-02, 1.186e-02, 4.842e-02, 1.057e-02, 9.070e-02, -7.385e-02, 9.828e-02), r);\n\tr = MulAdd(s1_2, M4(1.885e-02, 5.890e-02, -9.566e-02, 7.835e-02, 6.631e-02, 1.552e-02, 1.447e-01, 3.533e-02, 9.990e-03, -1.430e-02, -1.986e-02, 2.274e-02, 4.836e-04, 8.606e-02, 9.545e-02, -3.450e-02), r);\n\tr = MulAdd(s1_3, M4(4.787e-02, 5.541e-02, -3.048e-03, -3.691e-02, 7.478e-03, 1.421e-01, -8.807e-02, 1.014e-01, 1.648e-01, -5.264e-02, -9.696e-02, 2.583e-02, 7.668e-02, 2.025e-02, 3.494e-03, -1.676e-02), r);\n\tr = MulAdd(s1_4, M4(1.184e-01, 4.471e-01, 5.125e-02, 2.426e-01, 8.767e-02, -6.652e-02, -2.313e-01, -2.243e-01, 3.143e-02, -1.016e-01, -1.747e-01, 1.479e-01, -9.054e-02, -3.289e-01, 2.006e-01, -9.388e-02), r);\n\tr = MulAdd(s1_5, M4(-7.381e-02, 8.401e-02, 1.774e-01, -1.027e-01, -1.572e-01, -4.468e-02, 1.375e-01, 1.592e-01, -6.240e-02, -1.650e-02, 6.481e-02, 7.350e-02, -7.457e-02, -4.640e-02, -4.966e-02, 8.236e-02), r);\n\tr = MulAdd(s1_6, M4(-5.735e-02, -3.059e-03, -8.445e-02, 4.472e-02, 1.572e-01, 4.602e-02, -1.526e-01, -1.439e-01, 9.462e-03, -5.136e-02, -4.954e-02, 9.235e-02, 4.871e-02, -5.367e-02, -1.627e-01, -2.489e-02), r);\n\tr = MulAdd(s1_7, M4(-3.190e-02, 8.901e-03, -1.846e-02, -7.125e-02, 9.040e-02, -6.736e-03, -1.474e-01, 5.559e-02, 3.965e-02, -5.109e-02, 4.272e-02, 1.816e-02, -3.802e-02, -9.892e-02, 8.593e-02, 6.199e-02), r);\n\tr = MulAdd(s1_8, M4(-1.994e-02, -1.086e-01, 1.812e-02, 6.639e-02, 1.711e-02, -3.822e-02, 1.984e-01, 6.729e-02, 1.585e-02, -6.321e-02, 1.131e-01, 1.278e-02, 6.772e-02, -4.626e-02, 5.356e-02, -3.447e-02), r);\n\tr = MulAdd(s2_0, M4(-8.687e-02, -1.183e-01, -2.584e-02, -9.472e-02, 3.558e-02, 6.771e-02, -1.168e-01, -3.359e-03, -2.214e-02, -5.336e-02, -6.827e-02, -2.053e-02, 2.150e-01, -1.302e-01, 7.260e-03, -2.987e-02), r);\n\tr = MulAdd(s2_1, M4(7.261e-03, 1.602e-02, 1.279e-01, -6.558e-02, 3.888e-02, 1.409e-01, 2.357e-02, -1.282e-01, -5.214e-02, 9.965e-02, 1.664e-01, -4.437e-02, 1.500e-01, 1.286e-02, 2.166e-03, -8.977e-02), r);\n\tr = MulAdd(s2_2, M4(-7.545e-02, -1.094e-02, -2.077e-01, -6.931e-02, -3.558e-02, -8.829e-03, 8.852e-02, -6.157e-02, 4.585e-02, -1.417e-02, -7.058e-03, -9.259e-02, -2.151e-02, -8.374e-02, 5.304e-02, 7.869e-03), r);\n\tr = MulAdd(s2_3, M4(-7.447e-02, -2.303e-03, -9.744e-02, -1.738e-01, 1.803e-01, 1.162e-01, 1.207e-01, -2.709e-01, -8.762e-03, 3.008e-02, -1.453e-01, -2.326e-02, -1.915e-01, -2.543e-02, 1.697e-02, 4.576e-02), r);\n\tr = MulAdd(s2_4, M4(-9.671e-04, -2.203e-02, 1.922e-01, 2.322e-01, 4.921e-04, -1.192e-01, 1.833e-01, -2.379e-01, -6.566e-03, 7.472e-02, 1.633e-01, 3.039e-02, -7.424e-02, -6.433e-02, 5.091e-01, -1.973e-01), r);\n\tr = MulAdd(s2_5, M4(6.253e-02, 2.878e-02, -6.217e-02, -7.024e-02, -1.695e-02, 5.659e-02, 1.182e-01, -1.998e-02, -4.351e-02, 3.363e-02, 1.152e-01, -2.473e-02, 1.603e-01, -1.438e-01, -2.102e-01, 6.272e-02), r);\n\tr = MulAdd(s2_6, M4(-2.256e-01, 4.487e-02, -3.573e-01, 1.982e-02, 5.248e-03, 4.702e-02, -2.416e-03, 4.224e-02, 1.336e-02, -2.063e-02, 6.145e-02, -4.382e-02, -3.535e-02, -8.743e-03, 2.422e-01, 1.258e-02), r);\n\tr = MulAdd(s2_7, M4(-5.776e-03, 2.321e-02, 1.058e-02, 2.529e-02, 4.207e-02, 8.916e-02, 1.648e-01, -1.728e-01, 7.123e-02, 8.087e-02, -6.373e-02, 2.193e-02, 6.426e-03, 4.454e-02, 1.290e-01, -1.136e-02), r);\n\tr = MulAdd(s2_8, M4(2.321e-02, 4.309e-02, -1.516e-01, -1.444e-02, 4.668e-02, 3.631e-02, 1.015e-01, 3.489e-02, 4.619e-02, 2.500e-02, 3.346e-02, 1.279e-01, 4.694e-02, 1.132e-02, 2.681e-02, -5.030e-02), r);\n\tr = MulAdd(s3_0, M4(-5.515e-02, -2.673e-02, -6.880e-02, 5.894e-03, -1.158e-01, 4.061e-02, -6.222e-02, 3.967e-02, -1.514e-01, -7.631e-02, -6.716e-03, 7.126e-02, 1.299e-02, -4.424e-03, 1.829e-02, 4.004e-02), r);\n\tr = MulAdd(s3_1, M4(2.444e-03, -8.791e-02, 5.420e-02, 9.974e-02, 4.461e-02, 3.342e-03, 9.464e-02, 3.879e-02, -1.713e-01, -5.235e-02, 2.785e-02, 1.584e-01, -3.401e-02, 3.073e-02, -1.091e-01, -1.046e-02), r);\n\tr = MulAdd(s3_2, M4(7.487e-03, -4.916e-02, -3.904e-02, 5.671e-02, 3.968e-02, -9.121e-03, 3.282e-03, -8.274e-02, -5.194e-02, -4.783e-02, 6.700e-02, -1.059e-01, 1.419e-02, -4.054e-02, -3.414e-02, 6.595e-02), r);\n\tr = MulAdd(s3_3, M4(9.336e-02, 7.634e-02, -6.694e-02, 6.250e-02, -1.083e-02, -2.088e-02, 1.763e-01, 1.998e-01, 1.261e-02, 6.359e-02, -5.634e-02, 1.232e-01, 4.095e-02, -8.641e-02, -1.667e-02, -1.219e-01), r);\n\tr = MulAdd(s3_4, M4(-1.574e-02, -4.739e-02, 1.616e-01, 6.044e-02, -3.058e-01, -7.430e-02, 2.627e-01, -1.224e-01, -1.501e-01, -2.186e-01, 5.963e-02, -8.538e-03, -7.729e-02, 7.135e-02, 1.614e-01, -4.085e-02), r);\n\tr = MulAdd(s3_5, M4(7.641e-02, -1.052e-02, 4.771e-02, 8.236e-02, 4.211e-02, 7.796e-02, -5.710e-02, -3.686e-02, 1.179e-01, 1.063e-02, -1.615e-01, 2.818e-02, 6.312e-02, -5.913e-02, -2.742e-03, 6.620e-02), r);\n\tr = MulAdd(s3_6, M4(6.190e-03, 7.873e-02, -1.249e-03, -7.502e-02, 8.608e-02, -1.502e-04, 7.447e-02, 1.288e-01, 2.167e-02, -1.348e-02, 3.409e-02, 3.650e-02, -3.395e-02, -2.510e-02, -3.911e-03, -3.501e-02), r);\n\tr = MulAdd(s3_7, M4(3.712e-02, 1.711e-02, -3.699e-02, 2.076e-03, 5.682e-02, -3.576e-02, 1.728e-01, -2.616e-02, -8.619e-02, -3.032e-02, -8.233e-02, 8.712e-02, 5.074e-02, 3.775e-02, 2.481e-02, 1.785e-03), r);\n\tr = MulAdd(s3_8, M4(-2.020e-02, 4.481e-02, -9.187e-02, 1.451e-01, 4.523e-02, 3.138e-02, -8.141e-02, 4.834e-02, 9.495e-02, 1.097e-02, -1.188e-01, 6.575e-02, -8.121e-02, -3.479e-02, 4.346e-02, 1.156e-01), r);\n\tr = MulAdd(s4_0, M4(3.827e-02, 2.264e-02, 7.146e-03, 9.552e-03, -3.035e-02, -6.616e-02, 2.747e-02, 3.169e-02, -2.774e-02, 5.990e-02, 2.920e-02, 4.000e-02, -2.525e-02, 7.427e-02, 8.153e-02, -6.004e-02), r);\n\tr = MulAdd(s4_1, M4(5.245e-02, -3.401e-02, 1.269e-02, 4.907e-02, -1.172e-02, 1.009e-01, -2.521e-02, -5.679e-02, 1.087e-01, -1.719e-03, -8.819e-02, 8.292e-03, 1.534e-01, 5.315e-02, 9.320e-03, -2.679e-02), r);\n\tr = MulAdd(s4_2, M4(5.869e-02, 2.417e-02, 4.672e-03, 4.663e-02, -5.904e-02, 2.896e-03, -3.050e-02, -5.937e-02, 3.153e-02, -1.233e-02, 1.412e-02, 2.997e-02, 1.389e-01, 1.124e-01, -9.287e-02, -6.713e-02), r);\n\tr = MulAdd(s4_3, M4(7.970e-03, 3.703e-02, -5.000e-02, 1.005e-01, -1.264e-02, 2.367e-02, 1.433e-02, -9.336e-02, -5.631e-02, 8.289e-03, -8.105e-02, 8.863e-02, -4.582e-02, -2.060e-02, 6.368e-02, 1.711e-01), r);\n\tr = MulAdd(s4_4, M4(-2.150e-01, -3.557e-02, 5.991e-02, 7.201e-02, 1.718e-02, 4.575e-02, -1.644e-01, -1.481e-01, -8.840e-02, -4.702e-02, -1.691e-02, -1.494e-01, -4.138e-02, 1.532e-01, -8.112e-02, 1.186e-01), r);\n\tr = MulAdd(s4_5, M4(1.845e-02, 1.165e-01, 3.826e-02, -2.388e-02, 1.116e-02, -4.152e-03, 9.363e-02, -1.166e-01, -1.029e-01, -1.316e-02, -2.975e-02, 1.340e-01, 4.297e-02, 1.181e-01, -1.261e-01, 1.395e-01), r);\n\tr = MulAdd(s4_6, M4(6.679e-02, 5.499e-02, 2.737e-02, -3.309e-02, 1.534e-02, -3.395e-02, -6.059e-02, -3.089e-03, -1.570e-01, 5.654e-02, 1.502e-01, 9.533e-02, 1.103e-02, 1.742e-01, 3.309e-02, -1.453e-01), r);\n\tr = MulAdd(s4_7, M4(5.906e-02, -5.997e-02, 1.131e-01, 4.987e-02, -2.817e-02, 2.907e-02, 1.089e-01, -1.133e-01, 7.584e-02, 2.061e-03, -1.358e-01, 5.933e-02, -5.213e-02, 2.508e-01, -2.433e-01, 6.354e-03), r);\n\tr = MulAdd(s4_8, M4(-3.449e-02, 4.329e-02, -1.792e-02, 6.017e-02, -2.674e-02, 5.704e-02, -5.931e-02, 2.076e-02, -1.127e-02, -1.353e-02, 1.180e-01, 3.554e-02, -2.870e-02, 2.164e-01, -2.961e-02, 3.005e-02), r);\n\tr = MulAdd(s5_0, M4(6.372e-02, 1.479e-01, -1.483e-02, -1.061e-02, 1.339e-01, -2.423e-02, 1.041e-02, 5.357e-02, -6.657e-02, 7.154e-03, 4.060e-02, 2.593e-02, -1.669e-02, 6.874e-03, -7.642e-02, -5.352e-03), r);\n\tr = MulAdd(s5_1, M4(4.709e-02, 8.202e-02, -1.159e-01, 6.583e-02, -4.216e-02, 2.613e-01, 2.803e-02, 2.027e-02, 4.155e-02, 4.476e-02, -1.150e-01, -6.574e-02, -1.126e-01, -2.907e-02, 1.587e-01, 1.212e-02), r);\n\tr = MulAdd(s5_2, M4(5.277e-02, 3.775e-02, 6.608e-03, 1.704e-02, 1.979e-02, 9.919e-02, -6.536e-02, 7.964e-03, -1.121e-01, 3.265e-02, 9.050e-02, 2.277e-02, 3.423e-02, 1.819e-02, 5.676e-02, -6.024e-02), r);\n\tr = MulAdd(s5_3, M4(4.058e-02, -8.537e-02, 3.050e-02, 5.222e-02, 1.932e-02, -4.383e-02, 1.210e-02, 8.182e-02, 7.846e-02, -1.675e-02, -1.672e-02, 8.299e-02, -1.128e-01, -2.596e-02, -5.494e-02, 6.638e-02), r);\n\tr = MulAdd(s5_4, M4(-5.082e-02, -2.212e-01, 2.288e-01, -1.747e-01, 1.390e-01, 6.747e-02, -9.713e-02, 1.997e-01, -1.472e-01, -1.280e-01, 3.035e-01, 2.744e-02, -1.600e-02, -2.677e-03, -9.433e-02, 8.948e-03), r);\n\tr = MulAdd(s5_5, M4(1.866e-02, -1.780e-02, 3.817e-02, 4.707e-02, 3.935e-02, -4.192e-02, -8.523e-02, 1.779e-02, -8.066e-03, -5.122e-03, -9.794e-02, -4.393e-02, 1.824e-02, -3.186e-02, -8.565e-02, 6.290e-02), r);\n\tr = MulAdd(s5_6, M4(-7.068e-02, 1.291e-02, 5.946e-02, -7.038e-02, -2.054e-02, -1.145e-02, 8.059e-02, 8.572e-02, -1.750e-02, 5.672e-02, 5.180e-02, -1.358e-03, 2.490e-02, 2.271e-02, 1.013e-01, -6.520e-02), r);\n\tr = MulAdd(s5_7, M4(5.704e-02, 2.386e-02, 4.944e-02, -1.178e-01, 6.066e-02, -2.115e-02, 1.655e-01, 3.649e-03, 3.235e-04, 8.419e-02, 4.089e-02, -4.977e-02, -2.662e-02, 5.714e-02, 9.378e-03, 3.368e-02), r);\n\tr = MulAdd(s5_8, M4(6.667e-02, -9.522e-03, 8.112e-02, -2.254e-02, -2.724e-02, -2.765e-02, -4.131e-02, 7.624e-03, 1.797e-02, 1.440e-01, -1.185e-01, 6.992e-02, 4.543e-02, 3.386e-02, -7.079e-03, -6.702e-02), r);\n\tr = MulAdd(s6_0, M4(-1.054e-01, 2.923e-02, -5.852e-02, 1.290e-02, 4.864e-02, -8.424e-02, -5.442e-02, 6.261e-02, 5.102e-03, -1.792e-02, 4.114e-02, 1.532e-02, 8.135e-02, 2.076e-02, -3.238e-02, 5.559e-02), r);\n\tr = MulAdd(s6_1, M4(1.189e-01, 2.617e-02, -7.202e-02, 1.978e-02, -1.336e-01, -5.021e-02, -2.016e-01, -5.546e-02, 4.317e-02, 7.192e-02, 3.775e-02, -6.866e-02, 1.697e-01, -5.667e-02, -4.493e-02, -9.397e-04), r);\n\tr = MulAdd(s6_2, M4(-4.501e-02, 3.993e-03, -1.623e-02, 1.275e-02, 1.896e-02, -5.788e-02, -1.222e-02, -1.621e-02, -1.356e-02, -1.976e-02, -4.456e-02, 7.327e-02, -1.872e-02, -6.481e-02, 1.280e-02, -1.286e-01), r);\n\tr = MulAdd(s6_3, M4(8.819e-02, -1.474e-02, -2.213e-01, -8.129e-02, -1.848e-02, 1.854e-02, -1.397e-01, 1.339e-01, -8.792e-02, -7.492e-02, -7.482e-03, -8.757e-02, -4.168e-02, -3.177e-03, -1.849e-01, 1.436e-02), r);\n\tr = MulAdd(s6_4, M4(3.007e-02, -1.321e-01, 1.018e-01, -1.113e-01, -3.374e-01, 4.874e-02, 6.056e-02, 1.621e-01, 4.237e-03, -5.609e-02, 1.296e-01, 1.055e-01, -5.726e-02, 1.107e-01, 1.367e-01, 1.294e-01), r);\n\tr = MulAdd(s6_5, M4(-1.999e-02, -9.000e-02, -6.576e-02, 1.829e-01, 2.109e-02, 5.075e-02, -2.304e-01, -3.625e-02, -4.882e-02, -1.409e-01, -1.035e-01, -6.867e-02, -2.310e-01, -5.908e-02, -2.994e-02, -2.707e-01), r);\n\tr = MulAdd(s6_6, M4(-5.752e-02, -9.524e-02, -3.031e-02, -8.189e-03, -5.906e-02, -7.163e-02, 2.148e-02, 4.192e-04, -5.478e-02, -6.803e-02, -1.579e-01, 1.057e-01, 2.721e-02, -3.405e-02, -1.079e-01, -3.397e-02), r);\n\tr = MulAdd(s6_7, M4(-9.961e-02, -3.182e-02, 4.586e-02, 2.162e-01, -4.933e-02, -1.123e-01, -1.063e-02, 4.250e-02, -1.083e-02, -6.599e-03, -1.339e-01, 1.093e-01, 1.649e-02, -2.208e-02, 1.595e-01, 2.718e-02), r);\n\tr = MulAdd(s6_8, M4(-9.260e-02, -1.435e-01, 1.030e-01, 7.697e-02, -3.604e-02, 7.147e-02, -1.276e-01, 4.137e-02, 2.784e-02, -5.604e-02, -1.362e-02, 1.004e-03, -1.676e-02, -1.384e-01, -5.295e-02, -2.122e-01), r);\n\tr = MulAdd(s7_0, M4(5.497e-02, -9.898e-03, -2.150e-02, 5.152e-03, 4.710e-02, -6.431e-02, 1.308e-02, -4.425e-02, 7.768e-03, 1.612e-02, -2.056e-02, 6.943e-02, 7.137e-02, -6.442e-02, 1.614e-02, 2.894e-03), r);\n\tr = MulAdd(s7_1, M4(1.227e-01, 2.263e-02, 3.122e-02, -1.013e-01, -2.262e-02, -2.887e-02, -5.720e-02, -2.523e-02, -2.395e-02, 6.261e-02, 3.878e-03, 5.648e-02, 7.266e-02, -7.858e-02, 1.894e-02, -2.674e-02), r);\n\tr = MulAdd(s7_2, M4(4.163e-02, 3.618e-02, -9.989e-02, 7.308e-02, -5.009e-03, -6.773e-03, 9.681e-02, -7.296e-03, 1.109e-01, 1.139e-02, 8.472e-02, -5.203e-02, 7.700e-02, -6.769e-02, 1.018e-01, -7.520e-02), r);\n\tr = MulAdd(s7_3, M4(2.117e-02, -9.146e-02, -2.653e-02, 1.424e-02, -1.321e-01, 1.180e-01, -1.278e-01, 2.311e-02, -2.951e-02, 6.426e-02, 1.884e-01, -5.583e-02, 1.722e-02, -8.840e-03, -7.276e-02, 2.877e-02), r);\n\tr = MulAdd(s7_4, M4(-1.094e-02, 7.987e-02, -6.903e-02, -4.263e-02, 1.432e-01, 6.285e-02, -8.872e-02, 3.220e-02, 8.790e-02, 4.975e-02, -1.061e-01, 1.059e-01, -2.514e-02, 3.016e-02, 4.896e-02, 1.158e-01), r);\n\tr = MulAdd(s7_5, M4(-7.765e-02, 5.886e-02, 8.983e-02, 1.892e-02, 7.227e-02, -3.175e-02, 1.829e-02, 9.907e-02, -2.059e-02, 2.523e-02, 2.763e-02, -7.163e-02, -2.238e-02, -1.832e-02, -4.848e-02, -5.891e-02), r);\n\tr = MulAdd(s7_6, M4(-9.411e-02, -1.666e-02, -1.545e-03, 2.425e-03, -3.430e-02, -7.519e-02, 5.942e-03, 2.857e-02, 1.001e-01, 5.960e-02, 1.215e-01, 1.813e-02, -4.309e-02, 4.279e-03, -8.778e-03, 5.906e-02), r);\n\tr = MulAdd(s7_7, M4(-1.747e-02, 6.884e-03, 1.019e-01, 5.877e-02, -3.948e-02, -6.012e-02, -1.121e-01, 1.085e-01, 4.042e-02, 1.534e-02, 1.680e-02, -3.873e-02, -3.553e-02, -1.062e-02, 6.044e-02, -6.507e-02), r);\n\tr = MulAdd(s7_8, M4(-7.981e-04, 5.306e-02, -2.019e-02, -4.539e-02, -8.438e-02, -2.326e-02, 2.243e-01, -2.713e-02, -2.316e-02, -4.965e-02, 1.727e-01, -6.824e-02, 3.320e-02, 2.942e-02, -4.822e-02, -8.593e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.131e-02, -6.210e-03, -1.359e-03, 7.029e-03 };\n\tr = MulAdd(s0_0, M4(-3.049e-02, 6.111e-02, -1.028e-01, -5.236e-02, 7.108e-02, -3.843e-02, 8.589e-02, 6.198e-02, 2.803e-01, -7.897e-02, 3.982e-02, 1.940e-01, -7.968e-02, 1.248e-02, -6.840e-02, -8.779e-02), r);\n\tr = MulAdd(s0_1, M4(-4.217e-02, 7.107e-03, -1.340e-02, -1.964e-03, 7.188e-02, 2.237e-02, 1.352e-01, 4.602e-02, 1.348e-01, -8.037e-02, 1.357e-02, 3.992e-02, 4.499e-02, -5.245e-02, -8.448e-02, -7.756e-02), r);\n\tr = MulAdd(s0_2, M4(-6.389e-02, 1.225e-02, -7.624e-02, -2.441e-02, -3.044e-02, 1.794e-03, -8.328e-03, 6.038e-03, -1.468e-02, -3.933e-02, -1.075e-01, 1.055e-01, -2.344e-02, 1.867e-02, 7.679e-02, 4.558e-02), r);\n\tr = MulAdd(s0_3, M4(6.966e-03, 1.902e-01, 4.513e-02, 3.581e-02, -5.264e-02, 7.647e-02, 4.587e-02, -1.090e-02, 7.197e-02, -2.279e-01, -1.849e-01, -1.908e-01, -1.105e-01, 1.526e-01, -3.105e-02, -5.915e-02), r);\n\tr = MulAdd(s0_4, M4(8.242e-02, -2.377e-02, -2.679e-03, -9.327e-02, 1.464e-01, -4.084e-02, -6.155e-02, -7.298e-02, -4.436e-02, -1.357e-01, 2.946e-03, -9.301e-02, -3.393e-02, -2.176e-02, 6.742e-02, 1.500e-01), r);\n\tr = MulAdd(s0_5, M4(8.052e-03, 9.869e-02, 7.559e-02, 3.931e-02, -7.694e-02, 1.427e-02, 1.037e-01, 5.893e-03, -8.789e-02, -4.602e-02, -2.800e-02, 5.525e-02, -2.218e-01, -2.230e-02, 5.218e-02, -3.408e-02), r);\n\tr = MulAdd(s0_6, M4(3.175e-03, 1.260e-02, 6.000e-03, -5.241e-02, -2.239e-03, -1.598e-02, 7.361e-02, 2.156e-02, -3.416e-02, -9.550e-02, -2.809e-02, -1.343e-01, 1.769e-02, -1.639e-02, -9.413e-02, -9.222e-02), r);\n\tr = MulAdd(s0_7, M4(-1.767e-02, -8.772e-02, -2.203e-02, 2.698e-02, -3.413e-02, 4.100e-02, -1.129e-02, 8.770e-02, 1.864e-03, 5.817e-02, -3.644e-02, 7.676e-02, -1.540e-01, 1.908e-01, -6.473e-03, 7.013e-02), r);\n\tr = MulAdd(s0_8, M4(-1.066e-02, -8.715e-02, 1.794e-02, -1.718e-02, 3.849e-02, 7.916e-02, -4.488e-02, 3.583e-02, 1.228e-01, -1.129e-01, 7.438e-02, -3.504e-02, -3.830e-02, 1.527e-01, -1.025e-01, -3.254e-02), r);\n\tr = MulAdd(s1_0, M4(-4.279e-02, 2.805e-02, -6.478e-03, -6.321e-02, -1.135e-01, -1.576e-01, -2.845e-01, 1.893e-02, -1.380e-01, 5.029e-02, -1.375e-02, 7.180e-02, 6.596e-02, 6.460e-03, 4.896e-02, -1.015e-01), r);\n\tr = MulAdd(s1_1, M4(6.118e-02, 5.593e-02, 2.367e-02, -2.426e-02, 1.968e-01, -1.561e-01, 2.239e-02, -2.262e-02, -1.069e-01, 1.221e-01, 2.280e-01, -4.787e-02, 8.200e-03, -1.714e-02, -1.427e-01, -3.809e-02), r);\n\tr = MulAdd(s1_2, M4(9.895e-02, 1.919e-02, -4.780e-02, -8.210e-03, 3.898e-02, 1.383e-02, -8.105e-02, 5.345e-03, 2.320e-03, 5.456e-03, -2.477e-02, 5.313e-02, 7.198e-02, 2.065e-02, 2.893e-02, -2.668e-02), r);\n\tr = MulAdd(s1_3, M4(-1.142e-02, 1.964e-01, 2.138e-01, -3.753e-02, -1.707e-01, -3.177e-03, -2.294e-01, 4.555e-02, 3.510e-02, -5.653e-02, -9.684e-02, 6.350e-02, 4.124e-02, 1.055e-01, 4.750e-02, -2.276e-01), r);\n\tr = MulAdd(s1_4, M4(6.411e-02, -1.365e-01, -1.404e-01, 4.621e-02, 1.895e-01, -4.308e-01, 3.777e-03, -3.179e-02, -1.489e-01, -2.070e-03, 1.834e-02, -1.492e-02, 9.748e-02, -3.045e-02, 1.195e-01, 2.917e-01), r);\n\tr = MulAdd(s1_5, M4(6.094e-02, 8.341e-02, 6.781e-03, 6.353e-02, 9.032e-02, 1.040e-01, -4.046e-02, -1.785e-01, -3.653e-02, 5.541e-02, -8.072e-02, -2.779e-02, -6.816e-02, -8.345e-02, 7.266e-02, -4.618e-03), r);\n\tr = MulAdd(s1_6, M4(5.829e-02, 1.015e-01, 1.323e-01, -7.664e-02, 7.754e-04, -2.737e-02, 1.702e-02, 4.195e-02, -4.931e-04, 7.661e-02, 9.495e-03, 1.009e-01, 3.830e-02, -6.200e-02, -2.071e-02, -9.456e-02), r);\n\tr = MulAdd(s1_7, M4(-1.042e-01, -3.669e-02, -5.626e-02, 9.150e-02, -3.230e-02, 1.431e-03, -1.231e-01, 2.449e-05, -7.608e-03, 4.813e-02, 5.640e-02, 6.504e-02, 8.351e-02, 1.287e-01, 1.897e-02, 1.281e-01), r);\n\tr = MulAdd(s1_8, M4(6.730e-02, -3.591e-03, -8.770e-02, -2.447e-02, 5.591e-02, 1.574e-02, 1.151e-02, 5.971e-02, 9.974e-02, 8.794e-02, -9.162e-03, 8.676e-02, -5.142e-02, -3.354e-02, -6.216e-03, -9.497e-03), r);\n\tr = MulAdd(s2_0, M4(1.247e-01, -1.061e-01, 7.567e-02, -9.196e-02, -4.168e-02, 5.182e-02, -2.263e-02, 2.585e-02, 7.074e-02, -4.756e-02, -8.012e-02, 5.472e-02, 2.105e-01, -1.859e-01, 2.797e-02, -2.537e-02), r);\n\tr = MulAdd(s2_1, M4(-1.643e-02, 8.011e-02, -6.775e-02, 8.476e-02, -9.097e-02, 1.363e-01, -3.407e-03, 3.541e-02, 5.825e-02, -2.914e-02, -5.662e-02, 4.324e-02, 4.588e-02, 7.110e-02, 5.353e-02, 1.324e-01), r);\n\tr = MulAdd(s2_2, M4(-5.658e-02, -1.516e-02, 1.473e-01, 9.355e-02, -1.680e-02, -5.163e-03, -3.425e-02, -1.223e-02, 2.527e-02, 8.016e-05, 5.707e-03, 4.130e-02, -9.216e-04, 8.233e-02, -7.631e-02, -8.187e-02), r);\n\tr = MulAdd(s2_3, M4(2.722e-01, -1.805e-02, 2.268e-01, -1.378e-01, 3.957e-01, 4.214e-03, 3.564e-02, -3.481e-01, 1.546e-02, -6.001e-02, -8.961e-02, -1.552e-01, -1.299e-01, -1.272e-01, -2.106e-01, -2.713e-02), r);\n\tr = MulAdd(s2_4, M4(-1.397e-01, -1.281e-01, 2.438e-02, -2.740e-01, -2.735e-02, -2.233e-01, 3.683e-02, 1.080e-01, -1.178e-01, 3.885e-02, 6.368e-02, -6.460e-02, 1.818e-01, 2.601e-02, -8.447e-02, -6.402e-02), r);\n\tr = MulAdd(s2_5, M4(-2.968e-02, 7.313e-03, 1.234e-01, 6.614e-02, 2.951e-02, -4.474e-02, 3.406e-02, 9.092e-02, -1.723e-03, 9.511e-02, -1.077e-01, -1.058e-01, -5.453e-02, -5.614e-02, 1.976e-01, 1.356e-01), r);\n\tr = MulAdd(s2_6, M4(2.218e-03, -8.320e-03, 1.214e-02, -2.105e-01, 7.525e-02, 8.546e-02, -1.028e-01, -1.400e-01, 1.727e-02, -4.834e-02, -2.688e-02, 8.080e-02, -2.590e-01, 9.844e-03, -1.536e-01, 8.033e-02), r);\n\tr = MulAdd(s2_7, M4(2.509e-02, -9.194e-02, 2.487e-02, -2.968e-01, -1.407e-01, -5.506e-02, -1.618e-01, -2.409e-01, -5.373e-02, -5.760e-02, 1.002e-02, 6.405e-02, -1.862e-01, -3.112e-01, -1.192e-01, -9.978e-02), r);\n\tr = MulAdd(s2_8, M4(-1.461e-02, -1.308e-02, 4.011e-02, -1.234e-02, -8.379e-02, -5.492e-02, 2.864e-02, 2.979e-03, 7.257e-02, 7.612e-03, 9.477e-02, 7.681e-02, -1.820e-01, 6.211e-02, 8.262e-03, 1.077e-01), r);\n\tr = MulAdd(s3_0, M4(-6.968e-02, -5.070e-02, -2.716e-03, -3.253e-02, 8.401e-02, 3.863e-02, 1.304e-01, -6.395e-02, -2.248e-01, -1.729e-02, -1.963e-01, 1.173e-01, -4.031e-02, 1.214e-03, 4.012e-02, 6.283e-02), r);\n\tr = MulAdd(s3_1, M4(-7.261e-02, -6.832e-02, -9.888e-02, -2.210e-02, 8.176e-02, 3.296e-02, -5.889e-02, -1.627e-02, -1.181e-01, -4.543e-02, -2.259e-01, -1.334e-01, 9.064e-02, -1.367e-02, 2.490e-02, -2.786e-02), r);\n\tr = MulAdd(s3_2, M4(-7.879e-02, -1.776e-02, 8.378e-02, -2.233e-02, -3.494e-02, -1.043e-01, -2.752e-02, 3.997e-02, 3.593e-02, -1.131e-02, -2.270e-03, -1.207e-01, -4.468e-02, 5.429e-02, 4.384e-02, 2.097e-02), r);\n\tr = MulAdd(s3_3, M4(-4.782e-02, 6.620e-02, 4.331e-02, -4.935e-02, -1.376e-01, 1.304e-01, 1.418e-01, -1.366e-01, -1.422e-01, 9.409e-02, -1.143e-02, 4.999e-02, 3.565e-02, -9.909e-02, -1.052e-01, 2.936e-02), r);\n\tr = MulAdd(s3_4, M4(-3.187e-02, 5.804e-02, 8.012e-02, -1.070e-01, -9.085e-02, 8.674e-02, -1.134e-01, -1.266e-01, -1.155e-01, 5.538e-02, -1.342e-01, 1.065e-01, 9.555e-02, 8.111e-02, -1.443e-03, -3.278e-02), r);\n\tr = MulAdd(s3_5, M4(-4.139e-02, 1.685e-01, 1.200e-02, -3.564e-02, -1.144e-02, -1.103e-01, -1.092e-01, 1.229e-03, 1.426e-02, 3.171e-02, 6.061e-02, -1.785e-02, -2.598e-03, 1.907e-02, 1.974e-02, -4.434e-02), r);\n\tr = MulAdd(s3_6, M4(-1.181e-01, -1.052e-02, 6.572e-02, 7.846e-02, -6.855e-02, 8.623e-03, 6.590e-02, -7.199e-02, 5.471e-02, -2.935e-02, 7.180e-02, 3.095e-01, -6.600e-02, -1.445e-01, -8.351e-02, 2.923e-02), r);\n\tr = MulAdd(s3_7, M4(8.374e-03, 5.133e-02, 5.361e-02, 5.602e-03, -2.386e-02, 1.944e-01, 4.868e-02, 9.251e-02, 8.391e-02, -3.245e-02, -2.114e-01, 1.310e-01, -5.889e-02, -7.836e-02, 3.905e-02, 5.868e-02), r);\n\tr = MulAdd(s3_8, M4(1.170e-02, -2.110e-02, 1.028e-01, 3.098e-02, 8.379e-02, -7.586e-02, 2.728e-02, 2.511e-02, 2.429e-02, 1.361e-02, 1.711e-02, -6.559e-02, -1.880e-02, 3.721e-02, -6.136e-02, 1.502e-02), r);\n\tr = MulAdd(s4_0, M4(-2.903e-02, 2.782e-02, 3.637e-02, 4.470e-02, -6.718e-02, -6.209e-03, -1.784e-01, 4.864e-02, -1.289e-01, 9.147e-02, -6.943e-02, -1.060e-04, 1.179e-02, -6.628e-02, 7.751e-02, 8.653e-02), r);\n\tr = MulAdd(s4_1, M4(-4.804e-02, 1.197e-01, 1.061e-04, -1.308e-01, 8.009e-02, -1.467e-02, -7.909e-02, -7.073e-02, 1.717e-02, 3.563e-03, 6.698e-02, -6.229e-03, 2.390e-01, -7.585e-02, 1.767e-01, -8.543e-03), r);\n\tr = MulAdd(s4_2, M4(8.455e-04, -6.319e-02, -1.001e-01, 5.009e-03, 8.602e-02, 2.202e-02, 1.195e-02, -1.289e-02, -1.784e-02, 1.404e-02, -5.001e-02, -2.940e-02, 4.222e-02, 9.494e-02, 1.836e-02, 1.291e-01), r);\n\tr = MulAdd(s4_3, M4(-5.270e-02, 3.443e-02, 1.567e-02, 2.300e-02, -1.383e-01, 9.547e-03, -1.708e-01, 5.681e-02, -6.158e-02, 6.746e-02, -3.332e-02, 5.301e-02, -3.292e-02, -3.047e-02, 1.798e-01, 1.061e-01), r);\n\tr = MulAdd(s4_4, M4(-2.134e-01, 1.616e-01, -1.514e-01, -5.183e-02, 9.008e-02, -2.940e-01, -1.443e-01, 4.565e-02, 1.334e-01, 4.397e-02, 1.387e-01, -4.403e-02, 1.702e-01, -3.888e-02, 2.274e-01, -3.092e-02), r);\n\tr = MulAdd(s4_5, M4(-4.684e-02, 1.135e-01, -1.655e-02, -5.954e-02, -1.843e-03, -7.895e-02, -4.797e-02, 5.951e-02, -8.364e-02, 1.026e-02, 6.500e-02, 1.285e-02, -6.667e-02, 8.180e-02, 1.613e-01, 6.563e-02), r);\n\tr = MulAdd(s4_6, M4(-2.634e-04, 9.299e-02, 7.852e-02, 8.226e-02, -1.197e-02, 3.085e-02, -1.568e-01, -1.472e-02, -3.594e-02, 7.249e-02, -3.770e-02, 3.388e-02, 8.718e-02, -1.001e-01, 7.622e-03, 1.176e-01), r);\n\tr = MulAdd(s4_7, M4(2.207e-02, 2.432e-01, 3.523e-02, 1.816e-01, -9.710e-02, 4.736e-03, -1.222e-01, 3.955e-02, -4.860e-02, -7.728e-02, 5.649e-02, 2.784e-02, 1.035e-01, -1.065e-01, 9.028e-02, -1.230e-01), r);\n\tr = MulAdd(s4_8, M4(2.260e-02, -7.260e-02, 3.843e-03, 8.803e-02, -5.237e-02, -1.789e-02, 3.016e-02, -4.373e-03, 1.306e-01, 2.003e-02, -9.999e-02, 2.054e-03, -1.402e-01, 7.245e-02, 1.464e-01, -8.916e-03), r);\n\tr = MulAdd(s5_0, M4(-1.601e-02, 1.393e-02, 1.181e-02, 3.394e-03, -1.229e-01, 6.802e-02, -1.842e-01, -6.766e-02, 7.230e-02, 1.347e-02, 5.686e-02, -4.203e-02, -3.612e-02, -1.982e-02, -1.188e-01, -2.902e-02), r);\n\tr = MulAdd(s5_1, M4(-4.992e-02, 1.008e-01, -1.494e-02, -1.397e-01, -1.269e-01, 8.456e-02, -1.805e-01, -2.866e-01, 8.366e-02, -1.583e-02, -4.218e-02, 5.203e-02, -6.240e-03, 2.175e-03, 9.360e-03, -3.346e-02), r);\n\tr = MulAdd(s5_2, M4(5.649e-02, 1.308e-02, -1.441e-01, 9.456e-03, -4.964e-03, 3.503e-02, -4.653e-02, -4.979e-02, 3.381e-02, 2.546e-02, -7.040e-03, -6.521e-02, 1.067e-02, 1.476e-03, 1.089e-02, -1.066e-02), r);\n\tr = MulAdd(s5_3, M4(2.385e-01, 8.693e-02, 5.615e-02, 7.840e-02, -8.442e-02, 2.659e-01, -2.063e-01, 3.308e-02, 1.993e-01, -1.056e-01, 1.347e-01, 5.594e-02, -1.517e-02, -7.605e-03, -2.544e-02, -2.971e-02), r);\n\tr = MulAdd(s5_4, M4(1.917e-01, 1.077e-01, 2.896e-02, 9.657e-02, 1.121e-01, -2.141e-01, 1.619e-02, -1.274e-01, -1.621e-01, -1.772e-02, -1.214e-01, 7.936e-03, 8.032e-02, 4.870e-02, 5.302e-02, 1.499e-01), r);\n\tr = MulAdd(s5_5, M4(-9.687e-02, 6.926e-02, 4.666e-02, 2.300e-02, 1.611e-01, 1.829e-02, -1.539e-01, 6.384e-02, -8.200e-02, -4.745e-02, 9.795e-02, 1.086e-01, -2.475e-02, -3.007e-02, 3.883e-02, 4.477e-02), r);\n\tr = MulAdd(s5_6, M4(4.059e-02, -1.257e-01, -3.480e-02, -6.760e-02, 5.015e-03, 2.947e-01, 4.345e-02, 9.616e-02, 3.028e-02, -1.256e-01, -7.291e-02, -2.048e-01, -5.949e-02, -5.499e-02, -6.628e-02, 1.118e-01), r);\n\tr = MulAdd(s5_7, M4(3.351e-02, -8.789e-02, -1.121e-01, -2.031e-01, -7.557e-02, -6.257e-02, 1.119e-01, -8.362e-02, -1.950e-01, 4.202e-02, 1.407e-01, -1.596e-01, 4.333e-03, -1.290e-01, 5.861e-02, -1.871e-02), r);\n\tr = MulAdd(s5_8, M4(-1.307e-01, -7.025e-02, 1.999e-04, 2.356e-02, 6.944e-02, -6.780e-02, -5.046e-02, -1.036e-01, -1.561e-01, -5.692e-02, -3.962e-03, 1.088e-02, -7.979e-02, 3.374e-02, -2.321e-02, -3.199e-02), r);\n\tr = MulAdd(s6_0, M4(-1.385e-01, 4.381e-02, -2.158e-01, 4.605e-02, 1.471e-02, 7.279e-03, 6.032e-02, 5.920e-02, 1.219e-01, -6.779e-03, 7.797e-02, -7.467e-02, -2.764e-02, 4.501e-02, 1.588e-01, 4.100e-02), r);\n\tr = MulAdd(s6_1, M4(-2.624e-01, 8.061e-02, 2.686e-02, -4.546e-02, 2.055e-01, 1.347e-02, 2.128e-01, -7.747e-02, 2.447e-01, -3.511e-02, 1.096e-01, -5.124e-02, 1.995e-01, 2.708e-03, -1.469e-01, 1.762e-01), r);\n\tr = MulAdd(s6_2, M4(1.169e-01, 1.378e-02, -1.995e-02, -1.262e-01, 8.891e-02, 4.851e-02, 5.745e-03, 7.311e-03, 5.321e-02, 3.894e-02, 9.423e-02, 3.472e-02, 9.081e-02, -1.221e-01, -1.803e-02, -3.834e-02), r);\n\tr = MulAdd(s6_3, M4(2.919e-01, -4.288e-02, 4.526e-02, 1.353e-01, 7.313e-02, -1.146e-01, 1.485e-01, -1.512e-01, 4.126e-02, -1.755e-02, 4.917e-02, -3.759e-02, -2.168e-01, -3.541e-03, 1.531e-01, -1.089e-01), r);\n\tr = MulAdd(s6_4, M4(1.324e-01, 1.892e-02, 6.047e-02, 5.046e-02, -1.281e-01, 1.125e-02, -1.346e-01, -1.634e-01, 1.617e-01, -3.114e-02, 1.048e-01, 5.844e-02, 6.869e-02, -4.318e-02, 7.772e-02, -2.413e-02), r);\n\tr = MulAdd(s6_5, M4(6.001e-02, -9.286e-03, -1.376e-02, -3.059e-02, -1.660e-02, -1.350e-01, 4.725e-02, 2.385e-02, -2.122e-02, 8.138e-02, 8.902e-02, 7.671e-02, -2.388e-02, -3.311e-01, 5.147e-02, 6.933e-02), r);\n\tr = MulAdd(s6_6, M4(-7.691e-02, -3.586e-02, -2.052e-01, 6.760e-02, -2.289e-02, -3.130e-02, -1.099e-02, -1.740e-01, -1.143e-02, -6.989e-02, -1.834e-01, -2.093e-01, 3.919e-02, -4.511e-02, 2.687e-02, -1.602e-03), r);\n\tr = MulAdd(s6_7, M4(9.664e-02, -1.343e-01, -6.979e-02, -4.653e-02, -1.119e-01, 1.621e-01, 4.385e-02, -6.588e-02, 1.298e-01, -1.788e-01, -1.862e-02, -3.076e-01, 9.194e-02, -3.679e-02, -1.679e-01, 4.619e-02), r);\n\tr = MulAdd(s6_8, M4(-8.280e-02, 5.923e-02, -1.304e-01, -5.302e-02, 1.437e-02, -1.157e-01, -1.198e-01, 7.447e-03, -1.042e-01, 6.184e-02, 5.286e-02, 5.646e-02, -4.282e-02, -2.231e-01, 3.049e-02, -2.179e-02), r);\n\tr = MulAdd(s7_0, M4(3.199e-02, 9.747e-03, -3.185e-02, 2.609e-02, 3.812e-02, -1.070e-01, 7.742e-02, 6.550e-02, -1.438e-01, 8.593e-02, -7.431e-02, -5.507e-02, -3.623e-02, 2.192e-02, -7.684e-02, 8.442e-03), r);\n\tr = MulAdd(s7_1, M4(-2.091e-02, 4.231e-02, 9.332e-03, -8.065e-03, 6.009e-02, -5.314e-02, 7.690e-02, 6.717e-02, -9.374e-02, -4.819e-02, -2.180e-02, -8.335e-02, 2.130e-02, 9.632e-03, -6.324e-02, 2.606e-02), r);\n\tr = MulAdd(s7_2, M4(1.019e-02, -3.432e-02, 3.118e-02, -2.029e-02, 8.550e-02, 1.040e-02, -2.055e-02, -1.994e-02, -5.136e-02, 1.527e-02, -1.303e-02, -4.715e-03, -2.850e-03, 7.002e-02, -2.064e-02, 3.552e-03), r);\n\tr = MulAdd(s7_3, M4(3.422e-02, -1.958e-01, -9.659e-02, 9.334e-02, -1.249e-01, 3.489e-02, -8.189e-03, -9.950e-02, -2.292e-01, 1.062e-01, -9.947e-02, 7.557e-02, -6.335e-02, -2.233e-02, 4.335e-02, -3.771e-02), r);\n\tr = MulAdd(s7_4, M4(-1.342e-01, 1.333e-01, -1.353e-02, -9.543e-02, 1.696e-01, -6.520e-02, 2.230e-02, -7.316e-02, -2.897e-01, 8.430e-03, -1.392e-01, 3.032e-02, -2.450e-02, 6.235e-02, -4.062e-02, -1.210e-01), r);\n\tr = MulAdd(s7_5, M4(-3.361e-02, 4.276e-02, 4.163e-02, -1.434e-01, -2.628e-03, -5.990e-02, -9.169e-02, 3.404e-02, 2.080e-02, 4.274e-02, 5.379e-02, -1.103e-01, -1.540e-01, -2.073e-01, -2.857e-02, 4.924e-02), r);\n\tr = MulAdd(s7_6, M4(-1.460e-03, -1.044e-01, -1.040e-01, -9.133e-02, 9.227e-02, 3.829e-02, 6.551e-02, 1.675e-02, 2.176e-02, 2.104e-02, 4.837e-02, 1.493e-01, -5.540e-03, 3.481e-02, 2.152e-02, 6.388e-02), r);\n\tr = MulAdd(s7_7, M4(-7.845e-02, 4.662e-03, 3.218e-02, -4.691e-02, 3.992e-02, -5.042e-02, -4.760e-02, -1.711e-02, 1.496e-01, -2.058e-01, -4.183e-02, 1.387e-01, 7.547e-02, 4.298e-02, -3.687e-02, -4.766e-02), r);\n\tr = MulAdd(s7_8, M4(-1.745e-02, -9.501e-02, -7.995e-02, 7.595e-02, -3.949e-02, 8.468e-02, -2.336e-02, -6.546e-02, 6.669e-02, -1.837e-02, 9.980e-02, -4.351e-02, -1.122e-01, -6.903e-02, 2.983e-02, 2.586e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.151e-03, 4.418e-03, 4.805e-04, -9.419e-03 };\n\tr = MulAdd(s0_0, M4(8.366e-02, -4.625e-02, -1.679e-05, -7.055e-02, -5.745e-02, 4.328e-02, -4.737e-02, 3.704e-02, 1.266e-01, -7.905e-02, 4.610e-02, 4.622e-02, -1.638e-03, -3.242e-03, -5.213e-02, 1.498e-02), r);\n\tr = MulAdd(s0_1, M4(-4.821e-02, 7.161e-02, 1.783e-02, 2.136e-02, -1.947e-02, 1.331e-02, -8.429e-02, -6.556e-02, -3.016e-02, -3.791e-02, 6.900e-02, 1.032e-01, 6.970e-02, 4.629e-02, -2.488e-04, 4.221e-02), r);\n\tr = MulAdd(s0_2, M4(-6.345e-02, -3.040e-02, -1.762e-02, -3.030e-02, 9.966e-03, 3.699e-02, -2.345e-02, 1.284e-01, 7.479e-02, 2.658e-02, 9.825e-02, 2.448e-03, -1.423e-02, 4.787e-03, -5.916e-03, -8.537e-03), r);\n\tr = MulAdd(s0_3, M4(-6.308e-02, 6.292e-02, 8.276e-02, 8.984e-03, 1.197e-01, -2.621e-02, -1.714e-01, 1.645e-02, 7.338e-03, 1.754e-01, 3.165e-02, -4.041e-02, 1.649e-01, -1.146e-01, -2.231e-03, 1.743e-02), r);\n\tr = MulAdd(s0_4, M4(1.518e-01, 4.422e-02, -2.570e-02, 4.261e-02, -4.614e-02, -1.646e-02, 3.071e-02, 1.416e-02, -1.199e-01, 7.698e-02, 7.249e-02, -2.018e-01, -6.424e-02, -6.171e-02, 3.563e-02, 9.237e-02), r);\n\tr = MulAdd(s0_5, M4(6.048e-02, -2.544e-02, -3.806e-02, 6.680e-02, 5.752e-02, -3.774e-02, -1.997e-02, 3.231e-02, -1.899e-02, 1.783e-03, 6.195e-02, -8.508e-02, 1.436e-02, -7.429e-02, -1.926e-03, 4.569e-02), r);\n\tr = MulAdd(s0_6, M4(-6.497e-02, -4.285e-02, -1.938e-02, 6.492e-02, -6.409e-02, 7.374e-03, 3.397e-03, -1.020e-02, -8.272e-02, 9.002e-02, 7.601e-02, 7.153e-02, -2.317e-01, -9.008e-02, -1.715e-01, 3.595e-02), r);\n\tr = MulAdd(s0_7, M4(-2.158e-02, 8.395e-02, 1.559e-02, 2.708e-02, 4.025e-02, 1.614e-02, 3.012e-02, -6.034e-02, 1.020e-01, -5.890e-02, -9.097e-03, 5.405e-02, 6.755e-02, 8.994e-02, 9.884e-02, -3.034e-01), r);\n\tr = MulAdd(s0_8, M4(-2.835e-02, 2.795e-02, 3.700e-02, -1.932e-02, 6.881e-02, 1.218e-01, -4.342e-02, -3.492e-02, 7.657e-03, -1.581e-01, 1.688e-02, -2.516e-02, 1.564e-02, 2.219e-01, -3.715e-04, -7.197e-02), r);\n\tr = MulAdd(s1_0, M4(1.660e-02, -8.455e-02, -7.154e-02, -1.514e-02, -1.952e-02, -1.193e-01, -2.445e-02, -7.453e-02, 3.252e-02, -2.370e-01, -9.123e-02, 3.936e-02, -6.490e-02, 4.494e-02, -3.137e-02, -4.313e-02), r);\n\tr = MulAdd(s1_1, M4(-7.434e-02, -2.393e-02, 8.495e-02, 1.451e-01, 5.770e-02, -2.610e-01, -3.929e-02, -8.307e-02, 1.142e-02, 6.720e-03, 2.579e-02, -6.570e-03, 3.456e-02, 1.460e-01, -1.962e-03, 1.058e-01), r);\n\tr = MulAdd(s1_2, M4(-2.486e-02, 9.410e-02, -2.703e-02, -6.042e-02, -9.268e-02, -9.214e-02, 1.771e-02, -8.276e-02, 3.998e-02, -3.503e-02, 6.499e-03, 7.234e-02, 1.121e-02, -1.753e-02, 1.311e-02, 2.380e-02), r);\n\tr = MulAdd(s1_3, M4(-1.391e-01, -8.952e-02, 1.701e-01, 8.006e-02, 1.100e-01, -2.031e-01, -2.448e-01, -8.485e-02, -1.531e-01, -6.221e-02, 1.598e-01, 1.236e-02, 3.185e-01, 2.210e-02, -6.903e-03, 1.081e-02), r);\n\tr = MulAdd(s1_4, M4(1.768e-01, -1.338e-01, 4.228e-02, -1.443e-01, 1.189e-01, -1.057e-01, 3.814e-02, 3.880e-02, -7.824e-02, 8.927e-02, -4.384e-02, 1.260e-01, -1.051e-01, 1.095e-01, 2.348e-01, -7.785e-02), r);\n\tr = MulAdd(s1_5, M4(3.181e-02, -2.058e-02, -2.484e-02, 2.095e-01, -1.002e-01, 6.903e-02, 9.806e-02, -8.338e-02, -4.461e-02, 1.080e-01, -4.480e-02, -1.608e-01, -2.168e-02, 1.402e-01, 9.112e-02, 3.137e-02), r);\n\tr = MulAdd(s1_6, M4(-7.153e-02, -9.714e-03, -3.590e-02, -1.857e-02, -7.464e-02, -2.786e-01, -2.914e-02, 2.612e-02, 8.381e-02, 4.730e-02, -1.727e-02, 1.002e-01, -6.640e-03, -6.506e-02, 4.961e-02, 1.271e-01), r);\n\tr = MulAdd(s1_7, M4(1.086e-01, -1.354e-02, -4.072e-02, -1.361e-02, -1.088e-02, -7.620e-02, 2.137e-02, -5.935e-02, 1.402e-01, -4.279e-02, -5.225e-02, -8.616e-04, -2.528e-02, -5.778e-02, 7.600e-02, 1.156e-01), r);\n\tr = MulAdd(s1_8, M4(-2.794e-02, -4.535e-02, 7.499e-02, 7.316e-02, 4.056e-02, -9.792e-03, -3.258e-02, 3.545e-02, 4.778e-02, 2.453e-02, 1.394e-02, -3.347e-02, 1.539e-02, -1.344e-02, -1.629e-02, 8.918e-02), r);\n\tr = MulAdd(s2_0, M4(-4.724e-02, 3.187e-02, -1.119e-01, -1.039e-01, 1.237e-01, -1.120e-01, -1.534e-01, -3.663e-02, 6.038e-02, 1.295e-02, -5.587e-02, 2.924e-02, -1.583e-01, 4.710e-02, 1.087e-01, 1.085e-01), r);\n\tr = MulAdd(s2_1, M4(-1.190e-01, 1.962e-01, -4.033e-02, 4.048e-02, 4.540e-02, -1.960e-01, -3.113e-02, -1.396e-03, -1.057e-01, -1.123e-01, 4.961e-02, 1.273e-01, -6.559e-02, -1.155e-02, -1.244e-01, 9.591e-02), r);\n\tr = MulAdd(s2_2, M4(8.596e-02, -1.154e-01, 1.762e-02, 7.911e-02, -4.364e-02, -4.480e-02, -5.516e-02, -9.699e-03, -2.152e-02, 5.203e-02, 1.410e-02, -7.408e-02, -9.102e-02, -1.625e-01, -3.805e-02, -9.314e-02), r);\n\tr = MulAdd(s2_3, M4(2.788e-03, 1.312e-01, -8.558e-02, 2.490e-01, 4.095e-02, 1.776e-01, 1.262e-01, -1.899e-02, -9.067e-02, 8.022e-02, 9.244e-02, 1.264e-01, -1.084e-01, 3.207e-01, 1.156e-01, 2.557e-01), r);\n\tr = MulAdd(s2_4, M4(-1.319e-01, 1.857e-01, -5.472e-02, -5.962e-02, -1.585e-02, -6.869e-02, 1.136e-01, -1.332e-01, 1.490e-01, -1.100e-02, -1.314e-01, -1.097e-02, 2.497e-02, 1.317e-03, -2.269e-02, 4.258e-02), r);\n\tr = MulAdd(s2_5, M4(8.058e-02, 2.096e-02, -5.652e-02, 8.678e-02, 8.261e-03, 7.981e-02, -2.228e-02, -8.695e-02, -9.517e-02, 1.984e-03, -1.027e-01, 1.134e-01, 8.701e-02, -8.857e-02, -1.051e-01, 2.998e-01), r);\n\tr = MulAdd(s2_6, M4(-1.376e-01, 2.994e-01, 2.178e-01, 1.225e-01, 2.191e-02, -1.421e-01, -6.894e-02, 5.654e-02, -4.585e-02, 7.526e-02, 2.837e-02, -9.054e-02, 2.730e-01, 6.572e-02, -1.035e-02, -5.567e-02), r);\n\tr = MulAdd(s2_7, M4(-5.962e-02, 9.766e-02, 1.996e-02, -9.993e-02, 1.208e-02, -2.710e-01, 1.139e-01, -7.663e-02, -5.946e-03, 1.802e-04, 4.340e-02, -1.143e-02, 9.620e-02, 1.497e-01, 1.258e-01, 2.478e-01), r);\n\tr = MulAdd(s2_8, M4(1.097e-03, 8.520e-02, -3.726e-02, -6.033e-02, 2.829e-02, -9.984e-02, 1.767e-02, -3.130e-02, 4.302e-02, 1.348e-01, 1.141e-02, 3.356e-02, 6.218e-02, -1.368e-01, -7.196e-02, -3.032e-03), r);\n\tr = MulAdd(s3_0, M4(-5.851e-02, -2.836e-02, -7.747e-02, -7.154e-02, 5.586e-03, 1.857e-02, -3.549e-02, 2.444e-02, -1.147e-01, -1.289e-01, -1.063e-01, -9.112e-02, -1.265e-01, 4.177e-03, -5.100e-02, -8.817e-02), r);\n\tr = MulAdd(s3_1, M4(-3.374e-02, -5.017e-02, -6.799e-02, -8.030e-02, -6.027e-02, 2.000e-02, -9.070e-02, 1.255e-02, -2.058e-02, 5.366e-02, -1.589e-01, -5.098e-02, -8.296e-03, 2.337e-02, 8.431e-03, -6.655e-02), r);\n\tr = MulAdd(s3_2, M4(9.613e-03, 3.160e-04, 1.466e-02, -4.255e-02, -3.482e-02, 5.285e-02, -2.864e-02, 3.214e-02, -1.187e-01, 7.668e-02, -1.474e-02, -6.664e-02, -2.491e-02, 3.979e-02, -4.651e-02, -3.809e-03), r);\n\tr = MulAdd(s3_3, M4(1.401e-01, -2.754e-02, -1.067e-01, -4.772e-02, 2.739e-01, 3.329e-02, -1.982e-01, -1.526e-01, 7.079e-02, 8.003e-02, -5.168e-02, -1.645e-01, -5.493e-02, 4.557e-02, 5.902e-02, 1.539e-02), r);\n\tr = MulAdd(s3_4, M4(6.088e-03, -4.484e-02, -2.159e-01, -7.034e-02, -9.688e-02, 6.970e-02, -9.132e-02, -1.124e-02, 3.162e-02, -9.333e-02, -1.193e-01, -1.147e-01, 5.849e-02, 2.679e-02, -1.136e-01, 1.677e-01), r);\n\tr = MulAdd(s3_5, M4(2.219e-02, 1.462e-01, -1.562e-03, 8.097e-02, 3.727e-02, 2.447e-02, 2.518e-02, -8.378e-03, 3.070e-02, 1.205e-01, -1.129e-01, -2.044e-02, 8.378e-02, 1.016e-02, 4.320e-03, -1.588e-02), r);\n\tr = MulAdd(s3_6, M4(-3.378e-02, -2.538e-02, -6.935e-02, -1.635e-02, -1.603e-01, -4.665e-02, -1.968e-02, -9.107e-02, 1.206e-01, -1.389e-01, -1.143e-01, -1.128e-01, 1.049e-01, 1.733e-02, 8.835e-03, 1.055e-02), r);\n\tr = MulAdd(s3_7, M4(5.519e-02, 4.811e-02, -1.458e-02, -4.860e-02, 2.804e-02, 5.491e-02, 6.081e-02, -8.758e-02, 7.463e-02, 3.244e-02, -1.801e-01, 3.040e-02, 6.663e-02, 2.937e-02, -6.186e-02, -4.246e-02), r);\n\tr = MulAdd(s3_8, M4(3.751e-02, 7.449e-02, -1.401e-03, -6.031e-04, -7.415e-04, 2.114e-02, 9.190e-03, -1.090e-02, 5.044e-02, 9.171e-02, -5.598e-02, -4.324e-02, -5.242e-02, 2.832e-02, -2.034e-02, 3.673e-02), r);\n\tr = MulAdd(s4_0, M4(2.718e-02, 3.039e-03, 5.032e-03, 6.351e-03, -1.961e-01, 1.204e-01, -4.799e-03, -9.374e-02, -1.310e-01, 1.085e-02, -4.200e-02, -1.989e-03, -6.987e-02, -3.062e-02, -2.286e-02, -1.975e-03), r);\n\tr = MulAdd(s4_1, M4(5.857e-03, 3.052e-02, -3.996e-04, -1.045e-01, 9.168e-02, -4.770e-02, 7.762e-02, 1.046e-01, -5.771e-03, -1.048e-01, -4.878e-02, -2.485e-02, -3.981e-02, -9.546e-02, 1.040e-01, 5.840e-02), r);\n\tr = MulAdd(s4_2, M4(-6.438e-02, 6.032e-02, -4.095e-03, 1.282e-02, -6.417e-03, 1.891e-02, -1.130e-02, 1.321e-02, 2.031e-02, 7.678e-04, -3.628e-02, 1.251e-02, -4.912e-02, -1.129e-01, 4.968e-02, 5.214e-02), r);\n\tr = MulAdd(s4_3, M4(1.093e-01, -4.284e-02, -7.542e-02, 5.665e-02, -6.118e-03, 5.012e-03, -9.555e-02, -8.125e-02, 1.796e-01, 4.334e-02, 2.716e-02, 1.090e-01, 2.663e-02, 6.959e-02, -1.524e-02, -4.485e-02), r);\n\tr = MulAdd(s4_4, M4(5.264e-02, 7.289e-02, -1.294e-01, -3.265e-02, 2.380e-02, 1.014e-01, 1.142e-02, 3.700e-02, -1.953e-02, 6.918e-02, -6.314e-02, -2.820e-01, -7.555e-02, 1.186e-01, 4.388e-01, -2.191e-01), r);\n\tr = MulAdd(s4_5, M4(-4.334e-02, 1.732e-02, -2.172e-02, 4.795e-02, 2.192e-02, -3.595e-02, -3.459e-02, 7.788e-02, -5.273e-02, 1.390e-02, 1.792e-02, -4.107e-02, 8.022e-03, 8.154e-03, 1.100e-02, -1.620e-01), r);\n\tr = MulAdd(s4_6, M4(-7.379e-02, -1.514e-01, -9.284e-02, -5.538e-02, -1.410e-02, 4.090e-02, -2.018e-02, 5.257e-03, -1.715e-02, 7.838e-02, 9.580e-02, -6.710e-02, 3.742e-02, -9.365e-02, 4.797e-02, -7.506e-02), r);\n\tr = MulAdd(s4_7, M4(1.055e-01, -1.039e-01, 1.668e-02, 1.225e-02, -5.033e-05, 5.628e-02, -3.101e-02, -4.565e-02, 7.412e-02, 2.531e-03, 4.795e-02, 9.870e-02, -6.641e-02, -1.500e-01, -6.496e-02, -1.033e-01), r);\n\tr = MulAdd(s4_8, M4(4.693e-02, 7.863e-02, -2.748e-02, -1.198e-02, -4.499e-02, -2.656e-02, 2.222e-03, 4.269e-03, 2.812e-03, 4.611e-03, 3.320e-02, 1.287e-02, -3.171e-02, -1.270e-01, -6.555e-02, -1.371e-02), r);\n\tr = MulAdd(s5_0, M4(-1.372e-01, -5.882e-02, 2.866e-02, 7.556e-03, -6.512e-02, -6.292e-02, 1.342e-02, -6.174e-02, -5.772e-02, 9.548e-02, 2.712e-02, 6.947e-02, -1.070e-01, -4.828e-02, 2.676e-02, 3.725e-02), r);\n\tr = MulAdd(s5_1, M4(2.337e-02, 5.177e-02, -4.465e-02, -8.847e-02, 1.230e-01, -5.090e-02, 3.594e-02, -5.058e-03, 1.487e-01, 4.051e-02, 2.267e-02, 8.719e-02, 5.190e-02, 1.139e-02, 4.265e-03, 4.696e-03), r);\n\tr = MulAdd(s5_2, M4(-1.224e-02, 1.160e-02, 2.127e-02, 1.178e-02, -2.908e-02, -1.686e-02, 8.032e-02, 6.009e-03, -6.588e-02, 4.991e-02, 1.852e-02, 5.245e-02, -6.764e-02, 4.756e-02, 4.309e-02, 9.353e-02), r);\n\tr = MulAdd(s5_3, M4(-5.198e-02, -9.044e-02, 8.528e-03, 7.007e-02, 1.540e-02, -2.175e-01, -1.793e-01, -6.205e-02, 6.765e-02, 1.716e-01, 8.623e-02, 2.179e-02, 5.780e-02, 3.796e-02, 9.230e-03, 7.359e-03), r);\n\tr = MulAdd(s5_4, M4(6.367e-02, -1.669e-01, -6.597e-02, -1.224e-01, 6.007e-03, 7.739e-02, 1.129e-01, -7.896e-02, -1.081e-01, -1.099e-01, -5.489e-02, -2.851e-01, -5.496e-02, -5.978e-02, 1.354e-01, 2.308e-02), r);\n\tr = MulAdd(s5_5, M4(5.751e-02, 1.276e-02, -5.097e-03, 5.008e-02, -1.904e-02, 1.818e-02, 6.886e-03, -1.936e-02, 6.154e-02, 3.243e-02, 2.901e-02, 1.013e-01, 4.000e-02, -1.378e-02, -2.156e-02, -4.824e-02), r);\n\tr = MulAdd(s5_6, M4(5.950e-02, 3.787e-02, -1.758e-02, 1.207e-01, -4.966e-02, -7.477e-02, 4.130e-02, 9.592e-02, -1.577e-01, 1.225e-01, 1.179e-01, -5.457e-02, 8.628e-02, -4.253e-02, -4.329e-03, -6.608e-02), r);\n\tr = MulAdd(s5_7, M4(7.467e-04, -6.582e-02, 2.856e-03, -2.982e-02, -1.069e-02, 2.294e-02, 1.185e-01, 3.513e-02, 1.033e-03, 3.475e-02, 2.014e-01, 4.276e-03, 3.863e-02, 7.000e-02, 1.326e-02, -1.444e-01), r);\n\tr = MulAdd(s5_8, M4(1.070e-01, -7.495e-02, 1.787e-02, 1.062e-01, -1.778e-02, -4.706e-02, 3.628e-02, -5.452e-02, 3.944e-02, 3.673e-02, -6.037e-03, 5.675e-02, -1.452e-02, -4.372e-02, -1.022e-01, -6.924e-02), r);\n\tr = MulAdd(s6_0, M4(-1.685e-01, -8.154e-02, -2.199e-03, -1.461e-01, 1.714e-01, -1.107e-01, -1.158e-02, 4.329e-03, -3.056e-03, 1.577e-02, -3.549e-02, 2.360e-03, 1.517e-02, 5.450e-02, 1.118e-02, -9.407e-03), r);\n\tr = MulAdd(s6_1, M4(4.158e-02, 4.085e-02, -5.557e-02, -2.010e-01, 1.686e-01, -1.587e-01, 3.987e-02, 8.735e-02, 1.252e-01, 5.412e-03, -2.338e-02, 1.424e-01, -1.241e-01, 5.346e-02, 2.690e-02, -1.535e-01), r);\n\tr = MulAdd(s6_2, M4(-3.336e-02, -1.172e-01, -2.737e-02, -1.304e-02, -6.357e-02, 2.670e-02, 4.281e-02, 1.914e-01, -1.642e-02, 2.325e-02, -1.774e-02, 1.394e-01, 1.639e-01, 2.105e-01, 9.449e-03, 1.014e-01), r);\n\tr = MulAdd(s6_3, M4(-4.128e-02, -1.083e-01, -6.643e-02, -1.920e-01, 3.908e-02, 8.263e-02, 9.076e-02, 1.411e-01, -2.949e-02, 2.412e-02, 7.386e-02, 1.508e-01, -7.181e-02, 5.448e-02, 3.707e-03, 1.569e-01), r);\n\tr = MulAdd(s6_4, M4(1.143e-01, -4.578e-02, 2.429e-02, -2.966e-01, 2.278e-02, 1.007e-01, 1.086e-01, 2.163e-01, 2.578e-01, -1.218e-01, -1.775e-02, -1.480e-01, 1.567e-01, 1.704e-01, -8.204e-02, -1.113e-01), r);\n\tr = MulAdd(s6_5, M4(-1.680e-02, -5.282e-02, -9.898e-02, 3.483e-02, 5.711e-03, -2.308e-02, 3.101e-02, 2.295e-02, 2.181e-02, 1.015e-02, -1.960e-03, 2.662e-02, 9.698e-02, -1.443e-01, 6.841e-02, 1.892e-01), r);\n\tr = MulAdd(s6_6, M4(2.444e-01, -1.486e-01, -8.018e-02, -7.961e-02, -1.087e-01, 1.903e-01, 2.236e-02, -1.990e-02, -4.210e-02, 4.249e-02, 8.970e-02, 6.274e-02, -9.654e-02, -1.470e-02, -2.475e-02, 4.849e-02), r);\n\tr = MulAdd(s6_7, M4(-1.441e-01, -1.414e-01, -1.905e-01, 6.714e-02, 1.101e-01, 5.432e-03, -5.732e-02, -1.257e-01, 3.094e-02, -2.274e-01, 2.291e-02, -1.458e-01, 6.596e-02, 3.644e-01, 1.167e-01, -1.894e-01), r);\n\tr = MulAdd(s6_8, M4(6.490e-02, -3.084e-02, -4.923e-02, -1.693e-01, -7.865e-02, -6.116e-02, -5.965e-02, 1.404e-02, 1.179e-01, -1.438e-01, -5.197e-02, 6.703e-02, 9.144e-02, 2.744e-01, -2.768e-03, 1.547e-01), r);\n\tr = MulAdd(s7_0, M4(1.584e-02, -4.498e-02, 6.091e-02, -2.324e-02, -1.449e-02, -7.649e-02, 4.255e-02, -2.818e-02, -6.180e-02, 5.349e-02, -8.180e-02, -8.197e-03, 1.151e-01, -8.638e-02, -4.954e-03, -4.913e-05), r);\n\tr = MulAdd(s7_1, M4(-1.801e-02, -2.371e-03, 3.753e-02, -5.704e-04, -7.683e-02, -3.341e-03, 3.097e-02, -1.380e-02, 9.815e-02, -3.270e-02, -7.837e-02, 1.160e-01, 7.501e-02, -8.401e-02, -3.338e-02, 1.049e-01), r);\n\tr = MulAdd(s7_2, M4(-1.410e-02, -4.114e-02, 3.555e-02, -3.825e-02, -5.964e-02, 2.439e-02, 3.916e-02, -6.536e-02, -3.578e-02, 5.148e-02, -1.028e-02, 6.167e-03, 5.471e-02, -6.947e-03, -4.041e-02, 1.174e-01), r);\n\tr = MulAdd(s7_3, M4(3.846e-02, 6.365e-03, 2.241e-02, -8.690e-02, -2.050e-02, 3.654e-02, -1.591e-03, -9.917e-03, -1.252e-01, -5.371e-03, 3.311e-02, 8.132e-03, -6.208e-02, 1.904e-02, 7.562e-02, -2.637e-03), r);\n\tr = MulAdd(s7_4, M4(1.122e-01, -1.445e-02, 1.229e-02, -7.151e-02, 1.639e-01, 1.428e-01, -1.328e-01, 8.506e-02, -2.447e-03, 6.351e-02, -1.303e-01, -3.838e-02, -4.276e-02, 9.501e-02, 5.358e-02, 8.172e-03), r);\n\tr = MulAdd(s7_5, M4(9.728e-03, 7.052e-02, -1.768e-02, 1.619e-01, -2.085e-02, -6.813e-02, 3.413e-02, -6.557e-02, -8.677e-02, 1.237e-01, -2.285e-02, -1.136e-01, 8.036e-02, -1.186e-01, -2.369e-02, -1.370e-01), r);\n\tr = MulAdd(s7_6, M4(-8.722e-02, 1.628e-01, 1.063e-01, 4.557e-02, -2.343e-02, 1.109e-02, -1.094e-01, -6.930e-02, 1.664e-01, -4.381e-03, -1.127e-01, -1.101e-02, -6.311e-03, -2.693e-02, -3.793e-02, 3.911e-04), r);\n\tr = MulAdd(s7_7, M4(-2.129e-02, -4.236e-02, -3.102e-02, 8.458e-03, -1.264e-02, 4.343e-03, -6.226e-02, 7.021e-02, -8.578e-03, -6.781e-02, -1.426e-02, 2.388e-01, -7.339e-02, 1.265e-01, 8.468e-02, -2.205e-02), r);\n\tr = MulAdd(s7_8, M4(6.138e-03, -4.065e-03, 7.499e-02, 8.011e-02, -1.658e-02, -1.102e-02, 1.531e-02, -1.925e-02, 6.433e-02, 1.416e-01, 1.623e-02, 1.529e-01, 5.257e-03, 3.776e-02, -2.884e-02, -2.830e-02), r);\n\treturn r;\n}\n\nvoid Pass13(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 14\n//!DESC conv13\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 5.137e-03, -9.318e-03, -1.525e-02, 7.307e-03 };\n\tr = MulAdd(s0_0, M4(4.141e-02, -6.620e-02, -1.132e-02, 5.022e-02, -5.448e-02, -8.153e-02, 4.273e-02, -3.380e-02, -1.015e-01, 1.128e-01, 2.486e-02, -1.044e-01, -5.736e-02, -3.646e-02, -1.570e-01, 1.355e-01), r);\n\tr = MulAdd(s0_1, M4(1.785e-02, 1.196e-02, -1.048e-01, 3.621e-02, -2.967e-02, 1.030e-01, 1.395e-01, 3.486e-03, -1.067e-01, 2.549e-01, 1.270e-01, -6.500e-02, -4.027e-02, 2.598e-02, -4.203e-02, 4.186e-02), r);\n\tr = MulAdd(s0_2, M4(4.931e-02, -1.715e-02, -4.240e-02, 1.342e-02, 8.863e-03, 2.048e-02, 5.713e-02, -2.556e-02, -1.334e-01, 1.752e-01, -3.173e-03, -1.130e-01, 4.557e-02, 1.311e-01, -2.369e-02, -1.715e-02), r);\n\tr = MulAdd(s0_3, M4(4.337e-02, 1.125e-01, 2.961e-02, -8.226e-02, 5.584e-02, 3.195e-02, -4.691e-02, -2.575e-02, 1.433e-01, -1.298e-01, -2.059e-01, 6.369e-02, 1.473e-02, 8.115e-02, 1.104e-02, 1.601e-01), r);\n\tr = MulAdd(s0_4, M4(-4.852e-03, -4.469e-02, 4.528e-02, -1.032e-02, 8.592e-02, -2.401e-02, -1.961e-01, -6.586e-02, 3.530e-01, 4.468e-01, -2.665e-01, 2.346e-01, 2.854e-01, -8.168e-02, -1.710e-01, 1.831e-01), r);\n\tr = MulAdd(s0_5, M4(2.041e-02, -8.185e-02, 6.674e-02, 1.875e-02, 5.817e-02, 1.368e-01, -1.589e-02, -1.966e-02, 1.995e-01, 9.087e-02, 2.804e-03, 1.407e-01, 1.640e-01, -9.252e-02, -4.291e-02, 3.763e-02), r);\n\tr = MulAdd(s0_6, M4(1.015e-01, 2.379e-02, -1.526e-01, -4.942e-02, 1.086e-01, -2.635e-03, 5.455e-02, -6.096e-02, -9.946e-02, 2.923e-01, -8.444e-02, 5.240e-02, 1.745e-02, -3.779e-02, 2.604e-02, -4.151e-03), r);\n\tr = MulAdd(s0_7, M4(1.162e-02, -6.650e-03, -2.116e-01, 1.831e-02, 9.878e-02, 6.680e-02, 5.200e-02, 7.785e-02, 1.277e-01, -2.542e-01, 6.069e-02, 2.395e-01, -1.033e-01, -2.852e-02, -1.343e-01, -1.052e-01), r);\n\tr = MulAdd(s0_8, M4(9.261e-02, 2.752e-02, -9.165e-02, 2.324e-02, 5.415e-02, -1.891e-02, -3.516e-02, 3.924e-03, 1.036e-01, 1.315e-01, -9.339e-02, 3.699e-02, 3.385e-02, -5.174e-02, -6.744e-02, 6.598e-02), r);\n\tr = MulAdd(s1_0, M4(1.558e-02, -6.553e-02, -1.348e-02, 4.312e-03, -3.356e-03, -8.843e-02, 1.666e-02, 1.349e-02, -2.128e-02, -3.381e-02, 3.920e-02, -1.670e-02, -2.264e-02, 1.329e-02, -3.409e-02, -6.181e-02), r);\n\tr = MulAdd(s1_1, M4(5.805e-03, 4.477e-02, 1.858e-02, -1.022e-02, 2.212e-02, -4.813e-02, -9.164e-02, -2.738e-02, 8.371e-02, 1.352e-03, -2.860e-02, 3.639e-02, -1.791e-02, -2.523e-02, 7.703e-02, 2.617e-02), r);\n\tr = MulAdd(s1_2, M4(3.957e-02, -2.351e-03, 4.658e-02, -1.662e-02, 4.351e-02, -4.744e-02, -8.098e-02, 4.911e-02, -1.091e-03, 2.249e-03, -5.664e-03, 5.230e-02, 1.899e-02, 1.876e-02, 9.931e-03, -1.547e-02), r);\n\tr = MulAdd(s1_3, M4(1.265e-01, 1.980e-02, -8.764e-02, 6.612e-02, -7.751e-02, -1.122e-02, 6.755e-02, -4.610e-03, -1.964e-02, 5.122e-03, -7.697e-02, 3.198e-02, 3.231e-02, 9.638e-02, 4.545e-03, -4.199e-02), r);\n\tr = MulAdd(s1_4, M4(-5.894e-02, -1.329e-01, -1.192e-01, 1.160e-03, -1.037e-01, -1.072e-01, -4.378e-02, -7.303e-02, 7.073e-02, 5.396e-02, -1.280e-02, -5.782e-02, 1.773e-01, -1.077e-01, -6.754e-02, 1.033e-01), r);\n\tr = MulAdd(s1_5, M4(2.713e-03, -7.180e-02, -7.877e-02, 2.297e-02, -7.703e-03, 7.134e-02, 3.480e-02, 3.646e-02, -2.446e-02, -2.648e-02, -8.801e-02, -2.624e-02, 3.275e-02, -7.984e-02, 1.388e-02, -1.384e-02), r);\n\tr = MulAdd(s1_6, M4(5.089e-02, -3.647e-03, -1.665e-02, 3.789e-02, 1.489e-01, -1.081e-01, 1.731e-02, 7.075e-02, 5.898e-02, 7.116e-02, -1.541e-02, 5.454e-02, -6.869e-02, -1.348e-01, 6.366e-02, -9.688e-02), r);\n\tr = MulAdd(s1_7, M4(8.425e-02, -4.745e-02, -4.129e-02, 3.008e-01, 5.933e-02, -2.940e-02, 9.550e-02, 7.856e-02, 1.088e-01, 4.056e-02, -1.131e-02, 6.527e-02, -2.267e-01, 9.660e-02, 8.604e-03, -8.723e-02), r);\n\tr = MulAdd(s1_8, M4(8.051e-02, 2.875e-02, -3.348e-02, 3.590e-02, 8.823e-02, -3.079e-02, -6.701e-02, 5.085e-02, 7.678e-02, 3.990e-02, -1.671e-02, -2.194e-02, -8.302e-03, 6.172e-02, -3.764e-02, -8.722e-02), r);\n\tr = MulAdd(s2_0, M4(-1.144e-01, -9.280e-02, 2.135e-01, -1.004e-01, 8.034e-02, 2.011e-02, -1.735e-02, 4.454e-02, 1.625e-01, -1.156e-01, 5.881e-02, -1.255e-01, -7.047e-02, 7.272e-02, 4.270e-02, -1.440e-02), r);\n\tr = MulAdd(s2_1, M4(1.486e-01, -7.381e-02, -1.984e-02, 3.769e-02, 3.620e-02, -7.317e-02, -1.095e-01, 2.855e-02, 1.671e-02, -5.344e-02, -7.885e-02, 7.999e-03, -1.142e-01, 4.843e-02, 3.625e-02, 7.313e-03), r);\n\tr = MulAdd(s2_2, M4(7.284e-02, 4.662e-02, 1.131e-01, -7.068e-03, -4.402e-02, -4.379e-02, -6.864e-02, 3.116e-03, 1.202e-01, 1.590e-02, -5.161e-02, -2.509e-02, -1.140e-01, 6.822e-02, -3.929e-02, -4.498e-02), r);\n\tr = MulAdd(s2_3, M4(-5.160e-02, 9.767e-02, 9.134e-02, -5.806e-02, -4.408e-02, 3.057e-03, 7.317e-02, -1.084e-01, -1.695e-01, -2.958e-01, 2.613e-01, -3.620e-01, 1.144e-01, 4.105e-02, -1.840e-01, 5.694e-02), r);\n\tr = MulAdd(s2_4, M4(-2.702e-01, -2.149e-01, -1.500e-02, -2.169e-01, -1.774e-01, 7.561e-02, -1.166e-01, -1.276e-01, -1.435e-03, -5.159e-02, -2.791e-01, -2.208e-02, -1.261e-01, 6.767e-02, -7.217e-03, 6.273e-02), r);\n\tr = MulAdd(s2_5, M4(9.956e-03, 2.633e-03, 2.125e-01, -1.653e-01, 3.382e-02, -7.555e-02, -5.575e-02, -2.742e-02, 4.812e-02, 3.444e-02, -1.328e-01, -1.345e-01, -5.003e-02, -2.473e-02, 5.229e-03, -5.086e-02), r);\n\tr = MulAdd(s2_6, M4(-4.304e-02, 7.811e-02, 3.581e-02, 1.016e-01, 4.841e-02, 9.474e-03, -1.344e-01, -2.150e-02, 2.074e-02, 1.518e-01, -2.535e-03, -7.863e-02, -1.250e-01, -3.870e-02, 2.042e-02, 2.218e-02), r);\n\tr = MulAdd(s2_7, M4(-1.801e-01, -1.262e-02, 9.160e-02, -2.435e-02, 1.284e-01, -1.978e-02, -6.965e-02, 2.254e-01, 1.300e-02, -5.303e-02, 1.294e-01, 3.205e-01, 2.125e-01, 1.100e-01, -1.555e-01, 2.775e-01), r);\n\tr = MulAdd(s2_8, M4(-1.720e-01, 6.926e-02, -6.922e-02, -2.284e-01, 7.362e-02, 6.335e-02, -5.382e-02, 4.740e-02, -3.982e-02, 2.725e-02, 3.252e-02, -7.091e-02, -1.415e-02, 4.437e-02, 9.472e-02, 2.852e-02), r);\n\tr = MulAdd(s3_0, M4(-3.278e-02, 2.729e-03, 6.004e-02, -1.436e-02, 1.062e-01, 1.824e-02, 7.212e-03, 3.931e-02, -2.166e-02, 1.406e-03, -1.046e-01, 1.478e-02, -6.831e-02, 4.965e-03, -5.771e-02, -1.770e-02), r);\n\tr = MulAdd(s3_1, M4(-4.265e-02, 4.044e-02, 7.482e-02, 3.673e-02, -4.646e-02, 4.971e-02, -1.064e-01, -7.038e-02, 6.565e-03, -4.373e-03, -7.081e-02, -5.474e-02, 6.192e-04, 5.023e-02, 4.560e-02, 2.352e-02), r);\n\tr = MulAdd(s3_2, M4(-3.566e-06, 3.208e-02, 1.266e-02, 2.033e-02, -3.041e-02, 2.652e-02, -3.761e-02, 2.411e-02, -6.918e-03, -3.238e-02, -4.250e-02, 1.925e-02, -7.340e-03, 1.245e-02, 3.399e-02, -2.518e-02), r);\n\tr = MulAdd(s3_3, M4(8.491e-02, 2.422e-02, -4.230e-02, -4.731e-02, -7.405e-02, 1.836e-02, 1.932e-02, -1.100e-01, 8.063e-03, 1.991e-02, 9.470e-03, -1.448e-02, 4.615e-02, 1.156e-01, 2.012e-02, 4.059e-02), r);\n\tr = MulAdd(s3_4, M4(1.380e-01, 2.457e-02, -1.354e-01, 6.016e-02, -6.588e-02, 1.419e-01, 1.135e-02, 7.055e-03, -5.355e-02, -2.477e-02, 4.363e-02, -1.144e-01, -1.527e-01, -2.229e-03, 1.809e-01, 4.934e-02), r);\n\tr = MulAdd(s3_5, M4(6.089e-02, -6.852e-02, -8.328e-02, 1.592e-02, 1.130e-01, -3.196e-02, 7.612e-02, 2.826e-02, -6.319e-02, -1.673e-02, 4.322e-02, -8.615e-03, -1.638e-03, 2.452e-02, -3.442e-03, -2.506e-02), r);\n\tr = MulAdd(s3_6, M4(-2.053e-02, 2.803e-02, 5.890e-03, 7.126e-02, -2.036e-02, -7.027e-02, -3.477e-02, 3.904e-02, -4.978e-02, -1.326e-02, -1.908e-03, -3.546e-02, -4.788e-02, 1.063e-01, 3.857e-02, -5.291e-02), r);\n\tr = MulAdd(s3_7, M4(-9.241e-02, -5.720e-02, -6.293e-02, 1.304e-01, -3.444e-02, 5.718e-02, -7.650e-02, 7.219e-02, 1.636e-02, -1.342e-02, 2.611e-03, 1.026e-02, 7.974e-02, 1.007e-01, 1.014e-01, 2.116e-01), r);\n\tr = MulAdd(s3_8, M4(-2.475e-02, 1.300e-02, 5.130e-02, 1.268e-01, 1.954e-02, 3.569e-02, -8.627e-02, -7.619e-02, 3.559e-02, 4.537e-02, 2.744e-02, 3.091e-02, 3.093e-02, -2.184e-03, 1.678e-02, -2.247e-02), r);\n\tr = MulAdd(s4_0, M4(-6.316e-02, -8.194e-03, -1.663e-02, -1.174e-02, 9.211e-04, -1.028e-01, 3.682e-03, -1.636e-02, 8.008e-03, 3.940e-02, -3.416e-03, 4.771e-03, 5.515e-02, -3.139e-02, -9.479e-02, 3.571e-02), r);\n\tr = MulAdd(s4_1, M4(2.325e-02, 8.383e-02, -2.387e-02, 4.355e-02, 1.666e-02, 3.317e-03, 1.584e-02, 3.469e-02, -2.404e-04, -6.334e-02, 1.957e-02, 5.153e-02, 2.300e-02, -4.056e-02, -8.582e-02, 7.260e-02), r);\n\tr = MulAdd(s4_2, M4(-4.150e-02, 1.327e-02, 6.573e-03, 4.525e-03, 1.983e-02, -5.126e-02, -2.040e-02, -9.515e-03, -3.293e-03, 1.014e-02, -2.866e-02, 2.285e-02, -2.265e-02, -2.875e-02, -4.797e-02, -8.084e-02), r);\n\tr = MulAdd(s4_3, M4(7.625e-02, -2.013e-02, -5.754e-02, 1.408e-02, -3.044e-02, -2.811e-02, -5.332e-02, -9.756e-03, -4.689e-02, 2.628e-02, -5.628e-02, 4.199e-02, 3.371e-02, -6.367e-02, 6.160e-03, 6.184e-02), r);\n\tr = MulAdd(s4_4, M4(-1.169e-01, 2.696e-02, 7.835e-02, 1.769e-03, -1.204e-01, 2.394e-02, -5.374e-02, -2.369e-01, 2.384e-03, 1.122e-01, -1.815e-02, 9.182e-02, 6.527e-03, -6.919e-02, -1.969e-02, -7.163e-02), r);\n\tr = MulAdd(s4_5, M4(-1.474e-02, -1.279e-02, -1.197e-02, -1.539e-02, -3.199e-02, 2.429e-02, 4.874e-02, 8.309e-05, 6.069e-02, -9.755e-02, -1.120e-01, 4.888e-02, -1.639e-02, 9.998e-02, 4.820e-02, -8.561e-02), r);\n\tr = MulAdd(s4_6, M4(-6.376e-02, 2.606e-02, -1.121e-01, -3.997e-04, -1.059e-01, -8.696e-02, 2.277e-02, -1.555e-02, 2.321e-03, -1.682e-02, -8.266e-03, -4.173e-02, -5.731e-02, 9.822e-02, 5.153e-02, -2.178e-02), r);\n\tr = MulAdd(s4_7, M4(2.946e-02, -1.019e-02, 5.550e-03, 9.156e-02, -1.290e-01, -9.453e-03, 7.614e-02, -9.659e-02, -9.576e-02, -2.089e-01, -1.220e-01, -2.603e-01, -1.564e-01, 1.091e-01, 1.010e-01, -2.357e-01), r);\n\tr = MulAdd(s4_8, M4(-1.070e-02, -5.792e-02, -3.742e-02, 8.461e-03, 3.716e-02, -3.181e-02, 6.353e-03, 7.121e-02, -8.827e-02, -4.466e-02, -9.925e-04, -2.016e-02, -2.325e-02, 2.569e-02, -1.307e-02, -1.550e-01), r);\n\tr = MulAdd(s5_0, M4(-7.021e-02, -5.956e-02, 1.236e-01, -1.058e-01, 1.359e-02, -9.547e-02, -1.473e-01, -1.460e-02, 3.398e-03, 2.339e-03, -4.774e-02, 4.883e-02, -5.353e-02, -4.559e-02, 1.437e-03, 3.843e-02), r);\n\tr = MulAdd(s5_1, M4(-1.480e-01, 1.544e-01, 7.907e-02, -2.377e-01, -3.106e-02, 2.459e-01, 9.445e-02, -3.707e-03, -2.426e-02, 7.361e-03, -7.039e-02, -1.299e-02, -1.066e-02, -2.557e-02, -1.988e-01, 2.998e-02), r);\n\tr = MulAdd(s5_2, M4(-9.891e-03, 3.242e-02, -5.727e-02, -4.602e-02, -2.228e-02, 1.389e-01, -1.326e-02, -8.314e-02, -1.987e-02, -3.938e-02, 2.049e-02, 4.203e-02, -2.140e-02, -2.455e-02, -9.610e-02, -6.004e-02), r);\n\tr = MulAdd(s5_3, M4(9.126e-02, -7.572e-02, 5.318e-02, -9.806e-02, -8.060e-02, 1.901e-01, 2.908e-02, -8.675e-02, -2.088e-02, -1.928e-02, 1.792e-02, 8.698e-02, 1.420e-01, 4.968e-02, -5.260e-02, 1.072e-02), r);\n\tr = MulAdd(s5_4, M4(-1.412e-01, 8.703e-02, 2.206e-01, -2.432e-02, -1.159e-01, 2.180e-01, -3.190e-01, -2.901e-01, 1.263e-02, -7.523e-02, 1.116e-01, 8.989e-02, 1.445e-01, 1.655e-01, 8.037e-02, 7.833e-02), r);\n\tr = MulAdd(s5_5, M4(6.820e-02, -6.786e-02, 1.965e-02, 1.404e-03, 3.270e-02, 1.208e-01, 6.165e-02, -2.121e-01, 5.809e-02, -6.507e-02, -8.565e-02, -7.551e-02, 5.602e-02, 2.850e-02, 7.971e-02, -8.865e-03), r);\n\tr = MulAdd(s5_6, M4(1.069e-01, -5.015e-02, -1.065e-01, 8.655e-02, -9.331e-03, 3.379e-02, 7.811e-03, 7.530e-03, 5.707e-02, 8.318e-02, 2.182e-02, -6.878e-03, -5.290e-02, -2.063e-02, -1.833e-02, -5.179e-02), r);\n\tr = MulAdd(s5_7, M4(-4.091e-03, -4.725e-03, 5.285e-02, 5.689e-02, 2.501e-02, 1.192e-01, -1.275e-01, 5.202e-02, -2.421e-02, 8.988e-02, -3.053e-02, -1.231e-01, -1.260e-01, 4.334e-02, 2.688e-02, -8.457e-02), r);\n\tr = MulAdd(s5_8, M4(6.478e-02, -1.301e-01, -4.297e-02, 8.666e-02, -3.498e-02, 3.045e-02, -4.299e-02, 2.292e-02, -2.781e-02, -1.764e-02, -2.209e-02, -2.507e-02, 1.476e-02, 3.149e-03, -4.379e-02, -3.836e-02), r);\n\tr = MulAdd(s6_0, M4(3.491e-02, 3.212e-03, 6.530e-02, 8.442e-03, -3.985e-02, -4.695e-02, -4.522e-02, -6.292e-03, 1.154e-02, 3.974e-02, -1.493e-02, -1.318e-02, -3.157e-02, -4.850e-02, 3.412e-03, -2.990e-02), r);\n\tr = MulAdd(s6_1, M4(-7.500e-02, -5.865e-02, 4.797e-02, 8.277e-02, 6.952e-02, 1.155e-01, -5.639e-02, -2.254e-03, -9.671e-02, 6.667e-02, -6.871e-02, -1.310e-02, -3.762e-02, 2.719e-02, -6.958e-02, -7.557e-02), r);\n\tr = MulAdd(s6_2, M4(1.623e-02, 4.220e-02, -7.569e-03, 1.946e-02, -3.877e-02, -1.262e-01, 9.872e-03, -3.236e-03, 1.945e-02, 5.039e-02, -1.551e-01, 6.697e-02, 1.010e-02, -1.044e-02, -1.352e-02, -4.554e-03), r);\n\tr = MulAdd(s6_3, M4(7.151e-02, 5.049e-02, 4.138e-02, 5.704e-02, 1.810e-01, -3.868e-02, 3.789e-02, 1.133e-03, -7.775e-02, -3.426e-02, -6.087e-02, -7.503e-02, -9.109e-02, 2.326e-02, -5.660e-02, 2.871e-02), r);\n\tr = MulAdd(s6_4, M4(-6.362e-02, 2.525e-01, 9.566e-02, 3.626e-02, 1.463e-01, -2.089e-01, -1.323e-01, 1.257e-01, -7.023e-02, 7.012e-02, -1.454e-01, -2.342e-02, -8.142e-02, 6.109e-02, -7.436e-02, -8.377e-02), r);\n\tr = MulAdd(s6_5, M4(-1.045e-01, -8.608e-02, 3.267e-02, 6.552e-02, 6.730e-03, 6.657e-02, -2.295e-02, -3.188e-02, -5.740e-02, -5.613e-04, -1.379e-01, -1.088e-01, 3.836e-03, 3.775e-02, -1.526e-02, 4.745e-02), r);\n\tr = MulAdd(s6_6, M4(2.710e-02, 1.692e-01, 1.235e-01, 3.099e-02, 1.371e-02, -6.910e-02, -2.846e-02, 2.167e-02, -1.561e-02, -8.469e-02, 1.648e-02, 1.011e-03, -1.081e-03, -3.891e-02, -1.399e-01, 2.680e-02), r);\n\tr = MulAdd(s6_7, M4(1.295e-01, 6.213e-02, 2.126e-01, 4.305e-03, -1.509e-01, -3.575e-02, 4.243e-02, 1.890e-01, -1.112e-01, -1.203e-01, -7.555e-02, -8.316e-02, -7.615e-02, 3.685e-02, 5.208e-02, 5.158e-02), r);\n\tr = MulAdd(s6_8, M4(1.497e-02, -3.588e-02, 1.041e-01, -3.959e-02, 6.392e-02, 2.749e-02, 3.729e-02, 3.639e-02, 3.821e-03, -4.464e-02, -5.107e-02, 4.252e-02, 2.359e-02, 1.211e-03, 6.559e-02, 8.423e-02), r);\n\tr = MulAdd(s7_0, M4(4.269e-02, 1.448e-02, -7.251e-02, 4.434e-02, 8.679e-03, -1.043e-01, 3.841e-02, 2.695e-02, 6.740e-02, -2.644e-03, -3.486e-02, 7.661e-03, -6.166e-02, 3.065e-02, 8.044e-02, -7.941e-02), r);\n\tr = MulAdd(s7_1, M4(-8.077e-02, -2.410e-02, -2.501e-02, 8.880e-03, 2.563e-02, 5.505e-02, -4.794e-02, -1.256e-02, 1.219e-02, -1.130e-02, 4.149e-02, -4.619e-03, 3.638e-02, -7.627e-02, -6.329e-02, -6.666e-02), r);\n\tr = MulAdd(s7_2, M4(-6.696e-02, 2.772e-02, -2.924e-02, -8.234e-04, -3.507e-02, -3.574e-02, -8.502e-03, -5.329e-02, -6.518e-02, 2.003e-02, 6.235e-02, 2.691e-03, 5.237e-02, 1.363e-02, -4.233e-03, 1.431e-02), r);\n\tr = MulAdd(s7_3, M4(-1.845e-02, 7.724e-03, -7.974e-02, 4.336e-02, -3.622e-02, 1.163e-01, 1.091e-01, 2.923e-02, -4.799e-02, -8.489e-02, 3.857e-02, -2.627e-02, 1.565e-02, -6.398e-02, -1.880e-01, 9.351e-02), r);\n\tr = MulAdd(s7_4, M4(-7.986e-02, 1.074e-01, -2.022e-01, -2.343e-02, -1.010e-01, -2.735e-02, -2.889e-02, 8.426e-02, -5.666e-02, -2.074e-01, 8.822e-02, -2.570e-01, -5.235e-02, 5.873e-02, 7.100e-03, -4.525e-02), r);\n\tr = MulAdd(s7_5, M4(1.071e-01, -1.071e-01, -1.074e-01, -3.666e-03, 5.386e-02, 7.296e-02, 2.242e-02, 1.896e-03, -7.017e-02, 2.575e-02, -9.618e-03, -3.774e-02, 2.857e-02, 5.077e-02, 6.278e-02, 1.436e-01), r);\n\tr = MulAdd(s7_6, M4(1.732e-02, -5.917e-02, -6.042e-02, 4.714e-02, 3.632e-02, -1.275e-02, -4.554e-02, 3.627e-02, -4.395e-02, -1.144e-02, 6.404e-02, 3.403e-02, -1.123e-02, 6.191e-02, 5.405e-02, -1.169e-03), r);\n\tr = MulAdd(s7_7, M4(1.677e-01, -9.623e-02, -1.186e-02, 9.234e-02, -5.493e-02, 2.045e-02, -1.244e-01, 1.381e-01, -1.582e-02, 5.308e-03, 1.022e-02, -2.167e-01, -5.924e-02, -2.163e-02, 2.311e-02, 2.575e-02), r);\n\tr = MulAdd(s7_8, M4(1.005e-01, 1.794e-02, -1.286e-01, -3.952e-02, 5.529e-03, 5.189e-02, 3.473e-02, 1.438e-02, -9.109e-02, -2.932e-02, 1.696e-02, -4.435e-02, -7.043e-02, 4.999e-02, -3.583e-03, 7.583e-03), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.666e-03, 7.394e-03, -3.562e-03, -1.228e-02 };\n\tr = MulAdd(s0_0, M4(-2.355e-02, 3.296e-02, -3.112e-02, -2.420e-02, 1.337e-01, -1.307e-02, -2.977e-02, 9.591e-02, -2.963e-02, 8.426e-02, 1.922e-02, 6.205e-02, -1.764e-01, -8.246e-02, -9.129e-02, 1.603e-01), r);\n\tr = MulAdd(s0_1, M4(-4.793e-02, -8.006e-02, -5.812e-02, 6.274e-02, 2.285e-01, -9.298e-02, -1.421e-02, 6.073e-02, 9.368e-02, -9.190e-02, 1.002e-01, -1.052e-01, -7.702e-02, 2.329e-01, 2.498e-02, -1.130e-01), r);\n\tr = MulAdd(s0_2, M4(2.014e-02, -3.787e-03, 6.612e-03, 3.495e-02, 1.220e-01, -1.040e-01, -4.782e-02, -1.094e-01, -4.148e-02, -4.323e-02, -7.381e-02, -1.293e-01, 1.620e-02, -4.429e-02, 8.386e-03, -9.178e-02), r);\n\tr = MulAdd(s0_3, M4(-6.812e-02, -9.483e-02, 2.104e-01, -9.087e-02, 5.849e-02, -1.023e-01, -8.344e-02, 3.854e-02, -3.597e-01, -2.107e-02, -2.478e-01, 2.084e-01, -8.659e-02, 3.793e-02, -7.405e-02, 1.419e-01), r);\n\tr = MulAdd(s0_4, M4(-1.178e-01, 1.949e-01, 1.408e-01, -1.079e-01, 8.445e-02, -4.453e-02, -2.549e-01, 1.182e-01, -4.696e-01, 1.053e-01, -2.247e-01, 2.390e-01, -1.133e-01, -1.850e-01, 1.923e-01, 1.488e-01), r);\n\tr = MulAdd(s0_5, M4(-3.204e-02, -4.997e-02, 1.294e-01, -1.489e-01, 1.672e-01, -9.787e-03, -8.510e-02, -2.471e-03, -1.163e-02, 2.536e-01, 1.850e-01, 2.570e-01, -5.157e-02, -9.404e-02, 5.323e-02, -2.672e-02), r);\n\tr = MulAdd(s0_6, M4(1.199e-01, 5.749e-02, -1.579e-01, -2.987e-03, 4.631e-02, -7.230e-04, 4.758e-03, 3.372e-02, 2.937e-03, 5.282e-03, 1.157e-01, 4.203e-03, -3.622e-01, 9.459e-02, -8.716e-02, 7.281e-02), r);\n\tr = MulAdd(s0_7, M4(-4.052e-02, 8.018e-02, -9.348e-02, 1.070e-01, 1.703e-01, -1.062e-01, 1.111e-01, -8.738e-02, 6.301e-02, -1.002e-01, 2.808e-02, 1.008e-02, -9.902e-02, -6.596e-02, -1.198e-01, 5.289e-02), r);\n\tr = MulAdd(s0_8, M4(-1.094e-02, -6.197e-02, 3.224e-02, 1.337e-01, 1.200e-01, -1.145e-01, 7.973e-03, 4.485e-02, -9.850e-02, -2.906e-02, -6.900e-02, 2.700e-02, -4.982e-02, -1.381e-02, -4.235e-02, 7.607e-02), r);\n\tr = MulAdd(s1_0, M4(4.432e-02, 3.255e-03, -1.106e-02, 3.922e-03, -8.093e-02, 4.205e-02, -4.581e-03, -5.722e-02, -8.181e-04, 6.928e-03, 4.826e-03, -2.181e-02, -1.968e-02, 2.710e-02, 4.843e-02, 2.190e-02), r);\n\tr = MulAdd(s1_1, M4(-1.437e-02, -2.659e-02, 1.607e-02, 3.518e-02, -4.626e-02, -6.232e-02, -4.290e-03, 9.698e-03, 4.383e-02, -1.006e-01, 3.067e-02, -9.389e-03, 5.026e-03, 2.198e-01, 9.707e-03, 4.045e-02), r);\n\tr = MulAdd(s1_2, M4(-2.218e-02, -7.174e-02, 1.961e-04, 4.329e-02, -3.113e-02, -6.908e-03, -2.772e-02, 2.195e-02, -2.089e-02, 7.784e-02, 2.704e-02, 1.087e-02, 4.724e-02, 2.037e-02, -4.994e-02, -5.616e-02), r);\n\tr = MulAdd(s1_3, M4(-1.365e-01, -1.411e-01, 1.842e-02, -4.131e-02, -8.218e-02, -6.265e-02, -6.018e-02, -3.876e-02, -4.951e-02, 1.718e-02, 6.618e-02, 8.092e-03, 2.514e-01, 1.053e-01, 3.172e-02, -2.182e-02), r);\n\tr = MulAdd(s1_4, M4(-6.162e-03, 7.960e-02, -9.711e-03, 4.101e-02, -1.553e-01, 2.222e-02, -1.430e-01, -8.064e-02, -3.765e-02, -7.107e-02, -1.621e-02, 6.533e-02, 4.012e-02, 1.249e-01, 3.522e-01, 2.842e-01), r);\n\tr = MulAdd(s1_5, M4(9.114e-02, -4.403e-02, 4.894e-02, -2.185e-02, -7.740e-02, 7.062e-02, -6.714e-02, -6.360e-02, -2.117e-02, 1.966e-02, 5.892e-02, 2.980e-02, -2.791e-02, -7.889e-03, 1.397e-01, -4.555e-02), r);\n\tr = MulAdd(s1_6, M4(2.624e-02, -2.347e-02, 7.362e-02, -1.315e-01, -4.644e-02, 3.628e-03, -3.379e-02, -2.500e-02, -2.819e-04, -1.098e-02, -5.829e-02, 2.258e-02, 1.219e-01, -2.299e-05, 4.017e-02, 6.028e-02), r);\n\tr = MulAdd(s1_7, M4(-6.700e-02, 1.226e-01, -1.034e-01, 2.465e-02, 5.769e-02, -3.604e-02, 6.603e-02, -9.597e-02, -1.400e-02, -2.878e-02, 1.592e-02, -7.906e-02, 1.371e-01, -3.026e-02, -7.622e-03, 1.931e-01), r);\n\tr = MulAdd(s1_8, M4(9.961e-03, -6.016e-02, -7.028e-03, 3.942e-02, -3.351e-02, -4.909e-02, -4.676e-02, 1.124e-03, -1.712e-02, 3.273e-02, 3.916e-02, -2.822e-03, -2.449e-03, -6.221e-02, 8.854e-03, 5.159e-02), r);\n\tr = MulAdd(s2_0, M4(-1.475e-01, 1.531e-01, 7.687e-02, 3.918e-02, -8.268e-02, 8.104e-02, -2.995e-02, 1.998e-03, 1.443e-03, -1.290e-01, 9.060e-02, -1.169e-01, -1.097e-01, -2.346e-02, 8.907e-02, -2.857e-02), r);\n\tr = MulAdd(s2_1, M4(1.968e-01, 1.523e-01, -1.131e-01, -2.772e-02, -5.298e-02, 4.750e-02, 6.926e-03, 2.808e-02, 6.309e-02, 1.446e-01, -4.539e-02, 6.421e-02, -2.716e-01, 4.423e-02, 1.206e-01, 8.484e-02), r);\n\tr = MulAdd(s2_2, M4(5.007e-02, 1.354e-02, 8.236e-03, -8.577e-02, -1.924e-02, 1.052e-01, 1.844e-02, -3.665e-03, 6.377e-02, -1.254e-01, -1.168e-01, -9.514e-02, 3.941e-02, -8.821e-02, 5.721e-02, 2.076e-02), r);\n\tr = MulAdd(s2_3, M4(-1.420e-01, 2.196e-01, 1.402e-02, 1.813e-01, -5.681e-02, 2.581e-02, 3.326e-02, -1.044e-01, -1.836e-01, -1.137e-01, 1.483e-01, -1.946e-01, 2.172e-02, -6.671e-02, -1.008e-01, 9.928e-02), r);\n\tr = MulAdd(s2_4, M4(8.464e-02, 1.939e-01, -5.625e-02, -1.635e-01, 3.426e-02, -1.247e-02, -1.889e-01, 2.819e-02, 2.517e-01, 4.228e-01, 1.090e-02, -1.809e-02, 3.795e-02, 6.264e-02, 4.873e-02, 1.749e-01), r);\n\tr = MulAdd(s2_5, M4(-9.532e-02, 4.131e-01, 6.408e-02, 1.424e-01, -1.770e-02, 2.033e-02, 3.604e-02, -2.169e-02, 2.669e-02, -6.641e-02, -4.143e-02, -4.834e-02, -6.407e-02, -1.596e-03, -7.999e-03, -6.714e-02), r);\n\tr = MulAdd(s2_6, M4(1.511e-02, 1.173e-01, 8.768e-02, 3.224e-02, 1.244e-02, 4.711e-02, 3.580e-02, 2.181e-02, 4.199e-02, -4.670e-02, 4.122e-02, 6.350e-02, 1.441e-01, -1.958e-01, 5.897e-02, -8.286e-03), r);\n\tr = MulAdd(s2_7, M4(5.551e-02, 1.052e-01, -1.443e-01, -5.598e-02, 8.887e-02, -9.084e-02, 2.679e-02, -6.200e-02, 4.895e-02, -2.826e-02, -2.257e-02, -2.243e-02, -9.582e-03, 4.050e-02, -2.564e-01, 3.372e-01), r);\n\tr = MulAdd(s2_8, M4(6.303e-02, 1.638e-01, 2.913e-02, 2.016e-02, -4.983e-02, -2.189e-02, 2.401e-02, -1.876e-02, 2.361e-02, 3.606e-02, 9.776e-03, -4.713e-02, -9.113e-03, -1.176e-02, 1.776e-03, 4.181e-02), r);\n\tr = MulAdd(s3_0, M4(-3.698e-02, -7.844e-02, 3.304e-02, 1.946e-02, 2.104e-02, 1.238e-01, -3.353e-02, -5.077e-03, 6.806e-03, -1.067e-01, 1.479e-02, 2.172e-02, -5.576e-02, 5.420e-03, 6.912e-02, -8.622e-02), r);\n\tr = MulAdd(s3_1, M4(1.883e-02, 7.470e-02, -1.346e-02, 3.899e-03, -1.025e-01, -1.516e-01, -1.512e-01, 7.255e-04, 2.723e-03, -5.665e-02, 3.034e-02, 3.748e-02, -9.337e-02, 9.985e-02, -8.224e-02, 8.647e-02), r);\n\tr = MulAdd(s3_2, M4(5.797e-02, -6.478e-02, -1.018e-01, -1.559e-02, -6.313e-02, 5.765e-02, -7.845e-03, -5.224e-02, 1.853e-02, -5.100e-03, -6.391e-02, -9.475e-03, 4.800e-02, 5.181e-02, -8.398e-02, -4.074e-02), r);\n\tr = MulAdd(s3_3, M4(9.260e-02, 1.461e-01, -3.438e-02, 1.098e-02, -9.020e-02, 3.844e-02, 1.045e-01, -1.025e-02, -1.485e-01, 5.880e-02, -6.117e-02, -2.831e-02, 2.787e-02, 3.503e-02, -6.832e-03, 5.772e-02), r);\n\tr = MulAdd(s3_4, M4(-8.313e-02, 2.058e-01, -3.602e-02, 1.008e-01, 1.512e-02, 9.869e-02, -1.041e-01, -9.628e-02, -4.995e-04, 8.158e-02, 7.221e-02, -6.046e-02, 7.551e-02, 2.327e-01, 1.294e-02, -7.074e-02), r);\n\tr = MulAdd(s3_5, M4(-3.551e-02, -1.121e-02, -1.310e-01, -7.403e-03, -9.578e-02, 8.996e-02, -3.934e-02, 5.779e-02, -3.206e-02, 6.389e-03, 1.956e-02, -1.075e-01, 5.801e-02, -4.545e-02, -4.307e-02, -2.752e-02), r);\n\tr = MulAdd(s3_6, M4(1.101e-01, 1.159e-02, 3.846e-02, -4.415e-02, -1.184e-01, 3.789e-02, -1.983e-02, 5.537e-02, 6.800e-02, -2.283e-02, 2.770e-02, 7.486e-03, 9.361e-02, -1.646e-02, 1.286e-02, -3.693e-02), r);\n\tr = MulAdd(s3_7, M4(-4.379e-03, 5.815e-02, -4.533e-02, 2.994e-02, 1.210e-01, -3.824e-02, -4.413e-02, 1.902e-02, -2.501e-02, 6.130e-03, 6.869e-03, 4.077e-02, -6.249e-02, 5.397e-02, -2.537e-02, 5.363e-02), r);\n\tr = MulAdd(s3_8, M4(3.918e-02, -5.312e-02, 1.762e-02, -9.313e-02, -1.263e-01, 2.528e-02, 4.375e-03, 1.167e-01, -3.206e-02, 2.798e-02, -1.405e-03, 6.325e-02, 1.910e-02, -4.898e-02, -6.247e-02, -6.990e-02), r);\n\tr = MulAdd(s4_0, M4(-6.139e-02, 5.437e-02, 2.453e-02, -4.600e-02, 9.849e-02, 5.693e-02, 1.948e-02, -5.378e-02, 3.049e-02, 1.166e-02, -3.754e-02, 4.416e-02, 1.464e-01, -3.982e-02, -6.770e-02, -1.988e-02), r);\n\tr = MulAdd(s4_1, M4(-6.238e-02, 9.132e-02, 2.410e-02, 5.254e-02, 1.018e-01, -1.521e-01, -4.153e-02, 7.522e-02, -3.337e-02, -1.002e-01, -1.748e-02, 2.526e-02, -6.027e-02, 8.025e-02, -6.918e-02, 8.623e-02), r);\n\tr = MulAdd(s4_2, M4(-1.953e-02, 9.979e-03, 9.253e-03, -2.069e-02, 1.839e-02, -6.225e-02, -5.314e-02, 5.695e-02, 4.989e-02, -1.253e-01, 3.972e-02, 9.918e-05, -3.562e-02, 3.550e-03, -8.320e-02, -2.578e-02), r);\n\tr = MulAdd(s4_3, M4(-7.979e-02, 5.597e-02, -4.311e-02, 7.581e-02, -4.559e-03, 1.095e-01, 1.003e-02, -1.280e-01, 5.793e-02, 1.157e-02, 6.575e-03, 3.772e-02, 2.158e-01, -6.676e-02, -3.684e-02, -2.057e-02), r);\n\tr = MulAdd(s4_4, M4(-8.690e-02, -7.181e-02, 2.561e-02, 9.186e-02, -1.037e-01, 1.092e-01, -8.658e-02, 2.412e-01, -1.142e-01, -1.252e-02, -7.673e-02, 9.523e-02, 1.178e-01, -6.940e-02, -9.813e-03, 9.323e-02), r);\n\tr = MulAdd(s4_5, M4(3.644e-02, 4.980e-02, -6.765e-02, -7.746e-02, -1.077e-02, 1.492e-01, 4.657e-02, 2.160e-02, 1.068e-01, 2.339e-02, -1.746e-02, 4.236e-02, 4.431e-02, 2.937e-02, -1.591e-01, -2.176e-02), r);\n\tr = MulAdd(s4_6, M4(-7.619e-02, -7.187e-02, -5.336e-02, 9.697e-03, -4.500e-02, -1.539e-02, 1.061e-02, 5.191e-03, -3.706e-03, 4.739e-02, -6.342e-02, 2.837e-02, 1.057e-01, -7.125e-02, -1.231e-02, -5.644e-02), r);\n\tr = MulAdd(s4_7, M4(-6.363e-02, -1.806e-02, -1.648e-02, 1.506e-01, 5.504e-02, -1.806e-02, 6.314e-02, -5.645e-02, -6.528e-02, 1.484e-01, -1.558e-01, 1.457e-01, -3.353e-02, 8.053e-02, 7.623e-03, 1.454e-01), r);\n\tr = MulAdd(s4_8, M4(-1.243e-02, -8.742e-02, -4.783e-02, 1.893e-02, -2.716e-02, -4.186e-02, -7.215e-03, 9.908e-03, -1.342e-02, -7.125e-02, 3.621e-02, 3.714e-02, 3.796e-03, -3.665e-02, -3.065e-03, -1.327e-02), r);\n\tr = MulAdd(s5_0, M4(-9.733e-02, 8.479e-02, 1.697e-01, -1.471e-01, 8.367e-02, -9.701e-02, -3.827e-02, -2.734e-02, -5.654e-02, -6.484e-02, -8.206e-02, 5.448e-02, 2.060e-02, -3.717e-02, -6.715e-02, 1.540e-02), r);\n\tr = MulAdd(s5_1, M4(-2.993e-01, -5.256e-03, 2.617e-01, -1.863e-01, -8.625e-02, -1.183e-02, 4.416e-02, 1.162e-01, -5.994e-02, -1.620e-01, -6.483e-02, 6.804e-02, -1.188e-01, -1.673e-01, -6.238e-02, 7.633e-02), r);\n\tr = MulAdd(s5_2, M4(-1.263e-01, -6.865e-02, 7.806e-02, -8.792e-02, 1.829e-02, -1.938e-01, -5.768e-03, -4.756e-02, -3.244e-03, -3.858e-02, -1.668e-02, -9.638e-03, 3.290e-02, 3.288e-02, -7.609e-02, 2.349e-02), r);\n\tr = MulAdd(s5_3, M4(-4.874e-02, 5.302e-02, -9.153e-02, 1.294e-01, 2.020e-02, 2.900e-02, -3.263e-05, -5.333e-02, 2.962e-02, -1.130e-01, 7.812e-02, 2.745e-02, 7.177e-02, -3.814e-03, -3.659e-02, -3.620e-02), r);\n\tr = MulAdd(s5_4, M4(-3.291e-01, -1.647e-01, -1.479e-01, -1.474e-01, 1.411e-02, -2.628e-02, -2.961e-01, 4.556e-01, -1.681e-01, -2.356e-01, -1.208e-02, 2.806e-04, -8.358e-02, -1.067e-01, 5.848e-02, -1.800e-01), r);\n\tr = MulAdd(s5_5, M4(1.800e-02, 4.092e-02, -1.346e-01, -1.005e-02, -6.972e-02, 3.784e-02, 1.267e-01, 5.999e-03, 3.652e-02, 1.367e-02, -1.292e-01, 3.011e-02, 2.985e-02, 2.337e-02, -3.303e-02, -1.028e-01), r);\n\tr = MulAdd(s5_6, M4(-1.082e-01, 1.075e-02, -6.635e-02, -6.803e-02, -9.433e-02, 1.506e-02, -1.537e-02, 7.209e-02, 5.416e-03, 6.978e-04, -5.429e-02, -3.363e-02, 2.783e-02, -3.711e-03, -7.219e-02, 1.395e-02), r);\n\tr = MulAdd(s5_7, M4(-5.227e-02, -2.485e-02, 8.963e-02, -3.228e-02, -7.512e-03, 2.353e-02, -2.470e-02, -6.803e-03, 2.963e-02, 4.069e-02, -4.585e-02, 2.629e-02, 7.656e-03, -6.855e-03, -1.474e-02, 5.023e-02), r);\n\tr = MulAdd(s5_8, M4(-2.069e-02, -5.281e-02, -5.002e-02, 1.623e-03, 4.042e-02, -6.268e-02, 6.316e-02, 8.014e-03, -1.306e-02, 5.471e-02, -7.529e-02, -3.545e-02, -1.707e-04, 1.186e-02, -3.595e-02, 1.790e-02), r);\n\tr = MulAdd(s6_0, M4(3.302e-02, 4.418e-03, -8.796e-02, 6.241e-02, -5.939e-02, -7.157e-02, 3.014e-02, -5.200e-02, -4.419e-02, 4.946e-02, 1.235e-02, -5.338e-02, 1.106e-02, -4.460e-02, 2.467e-02, 1.632e-02), r);\n\tr = MulAdd(s6_1, M4(-1.165e-02, 1.717e-02, -4.187e-02, -5.148e-02, 6.087e-02, 1.062e-02, 7.774e-02, 1.445e-01, -2.212e-01, -2.557e-01, 6.949e-02, -4.760e-02, 1.232e-02, 7.268e-02, 2.847e-02, -3.986e-02), r);\n\tr = MulAdd(s6_2, M4(1.145e-01, -3.325e-02, -1.196e-01, 1.100e-01, 2.360e-02, 2.100e-02, 7.523e-02, -4.792e-02, 6.078e-03, -9.426e-02, -1.088e-01, 3.007e-02, 1.658e-02, 3.352e-02, -6.354e-02, 1.246e-02), r);\n\tr = MulAdd(s6_3, M4(1.542e-02, -6.429e-02, -4.317e-02, 4.337e-02, -8.402e-02, 7.670e-03, -8.973e-02, 1.792e-03, -1.674e-01, 4.020e-02, 4.307e-02, 3.281e-02, 1.149e-01, 1.195e-02, -4.625e-02, 7.528e-02), r);\n\tr = MulAdd(s6_4, M4(1.931e-02, -2.168e-02, 1.550e-03, -2.958e-02, 7.771e-02, 8.194e-02, -3.328e-04, 2.268e-02, -2.748e-01, -1.987e-01, 4.499e-02, -1.982e-01, 1.425e-02, 1.992e-02, -1.424e-02, 1.139e-02), r);\n\tr = MulAdd(s6_5, M4(1.625e-01, -1.027e-01, 1.266e-01, -1.504e-01, 2.596e-02, 2.140e-02, 9.871e-03, 1.368e-01, 2.167e-02, 6.120e-02, 3.605e-02, -1.278e-01, -3.467e-02, 4.308e-02, 8.625e-02, -2.846e-02), r);\n\tr = MulAdd(s6_6, M4(3.814e-02, 7.893e-03, 2.085e-02, -2.793e-02, 3.963e-02, -2.560e-02, 3.084e-02, -6.913e-03, -1.248e-01, 9.007e-02, -1.532e-03, 5.562e-02, 3.947e-02, 1.783e-02, -1.404e-01, 3.774e-03), r);\n\tr = MulAdd(s6_7, M4(1.173e-01, 2.692e-03, 9.529e-02, -6.932e-02, 3.259e-02, -1.284e-01, 4.636e-02, 8.723e-03, -8.999e-03, -3.237e-02, 3.534e-02, -3.240e-02, 5.066e-02, 3.524e-02, -5.775e-02, -8.170e-02), r);\n\tr = MulAdd(s6_8, M4(1.331e-01, 2.378e-02, -1.813e-02, -3.624e-02, 1.946e-02, 2.003e-02, -1.204e-01, 2.374e-02, -5.333e-02, 1.888e-02, 4.138e-02, 2.068e-02, -5.053e-02, 3.120e-02, 1.305e-04, 2.335e-02), r);\n\tr = MulAdd(s7_0, M4(-8.931e-03, 8.554e-03, -3.430e-02, 3.480e-02, 7.631e-03, 2.015e-02, -4.250e-02, 2.783e-03, -5.531e-02, 3.953e-02, -2.883e-02, 1.964e-02, 1.614e-02, -2.080e-02, 9.910e-02, -7.998e-02), r);\n\tr = MulAdd(s7_1, M4(-1.219e-01, 3.186e-02, 6.263e-02, -6.382e-02, -7.854e-03, -1.781e-01, -2.866e-02, -2.123e-03, -1.213e-01, -1.335e-01, 6.055e-03, -5.242e-02, 7.391e-02, -2.211e-02, 2.785e-02, 9.733e-03), r);\n\tr = MulAdd(s7_2, M4(-5.083e-02, 7.194e-02, 1.615e-03, 5.407e-02, 3.814e-02, -6.499e-02, 1.024e-01, -3.536e-02, 2.454e-02, -5.554e-02, 2.108e-02, -6.028e-02, -2.086e-02, 9.931e-02, -1.481e-02, 1.780e-03), r);\n\tr = MulAdd(s7_3, M4(4.580e-02, -2.151e-02, -2.859e-02, -6.446e-02, -1.209e-01, -6.494e-02, 1.413e-01, -5.427e-03, 1.644e-01, 1.515e-02, 1.075e-02, -2.694e-02, 3.681e-02, -8.655e-05, -1.217e-01, 2.980e-02), r);\n\tr = MulAdd(s7_4, M4(5.985e-03, 5.021e-02, -4.879e-02, 5.464e-03, -1.363e-01, -8.347e-03, 1.775e-01, -7.439e-02, 3.814e-02, -1.607e-01, -3.868e-02, 4.007e-02, 1.037e-01, -4.700e-02, -4.177e-02, -1.731e-02), r);\n\tr = MulAdd(s7_5, M4(5.141e-02, -8.676e-02, 6.358e-02, 4.758e-02, 6.764e-02, -3.836e-02, -3.477e-02, 6.865e-02, -1.267e-01, -1.556e-01, -1.500e-02, -1.478e-02, -1.100e-02, 8.284e-02, 9.609e-02, -4.106e-02), r);\n\tr = MulAdd(s7_6, M4(-4.043e-02, 3.920e-02, -2.731e-02, 1.030e-02, 2.214e-02, -3.011e-02, 7.946e-03, -5.982e-02, -5.416e-02, 1.414e-02, 7.464e-02, 1.179e-02, 2.691e-02, -2.210e-02, 6.503e-02, -9.833e-02), r);\n\tr = MulAdd(s7_7, M4(-7.673e-02, 9.742e-03, 2.093e-02, -4.170e-02, 2.232e-02, -2.862e-02, -6.734e-02, 4.183e-02, 1.447e-02, 4.077e-02, 3.989e-03, 6.437e-02, 1.317e-02, 4.673e-03, -4.076e-02, -1.647e-01), r);\n\tr = MulAdd(s7_8, M4(-5.286e-02, 4.923e-02, -9.718e-02, -2.947e-02, -3.456e-02, 1.459e-02, 3.428e-02, 2.702e-02, -1.755e-02, -2.393e-02, -1.549e-02, 4.208e-02, -5.462e-02, 4.807e-02, -1.638e-03, -1.464e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 4.173e-03, 1.409e-02, -1.527e-02, -1.778e-03 };\n\tr = MulAdd(s0_0, M4(-3.406e-03, -2.751e-02, 2.389e-02, -2.671e-02, 9.890e-02, 6.479e-02, 4.287e-01, 2.984e-02, 7.607e-02, -3.654e-02, -1.230e-01, 1.394e-02, 1.981e-02, 1.227e-01, -6.546e-02, 4.504e-02), r);\n\tr = MulAdd(s0_1, M4(-6.942e-03, 8.442e-03, -3.946e-03, -8.129e-02, 8.599e-02, 8.176e-02, -7.871e-02, 5.741e-02, 2.062e-01, 1.058e-02, -5.040e-02, 4.902e-03, 1.612e-01, 1.634e-02, -4.898e-02, -9.324e-02), r);\n\tr = MulAdd(s0_2, M4(-2.069e-02, -2.451e-02, 2.637e-02, -5.626e-03, 6.668e-02, 4.335e-02, 1.039e-01, 8.448e-02, 1.873e-01, 3.773e-03, -2.043e-01, -8.218e-03, -8.518e-03, 5.852e-02, 2.851e-02, 2.286e-02), r);\n\tr = MulAdd(s0_3, M4(1.137e-01, -1.327e-01, -1.789e-02, -1.100e-01, 9.085e-04, -4.401e-02, 1.561e-01, 6.896e-02, -2.459e-02, 1.479e-01, 1.197e-01, 1.124e-01, -1.879e-01, 3.314e-01, 1.166e-01, 1.139e-01), r);\n\tr = MulAdd(s0_4, M4(1.211e-01, -3.114e-02, 2.034e-02, -8.814e-02, 9.038e-02, 6.309e-02, 2.457e-02, 1.404e-01, 3.895e-02, 2.724e-01, 5.470e-02, -1.407e-01, -8.583e-02, -4.419e-02, -2.949e-01, -1.601e-01), r);\n\tr = MulAdd(s0_5, M4(-6.675e-03, 5.540e-02, 1.858e-02, -2.243e-02, 2.324e-02, 1.130e-02, 1.134e-02, 1.121e-01, -2.965e-02, -2.725e-02, -2.064e-01, -1.259e-01, -6.429e-02, -4.605e-02, -4.295e-02, 5.142e-02), r);\n\tr = MulAdd(s0_6, M4(-4.172e-02, -1.160e-01, -1.172e-01, -7.617e-03, 9.909e-02, 2.588e-02, 1.209e-01, -6.817e-02, 1.413e-01, -8.298e-02, -2.084e-03, -1.172e-01, -4.519e-02, 3.606e-02, 4.065e-02, 2.651e-01), r);\n\tr = MulAdd(s0_7, M4(1.167e-01, -6.684e-02, -1.963e-02, 6.528e-02, 1.105e-01, 7.529e-02, 3.613e-02, -1.494e-01, 1.167e-01, -7.575e-02, 1.563e-01, -7.482e-02, 3.625e-02, -9.058e-02, -4.330e-02, 1.325e-01), r);\n\tr = MulAdd(s0_8, M4(1.954e-02, 1.990e-03, 2.500e-02, -9.505e-02, 1.029e-01, -6.343e-03, 1.386e-01, -6.028e-02, 7.436e-03, 5.685e-02, 1.285e-01, 9.548e-03, 1.340e-02, -2.372e-02, -3.000e-02, -3.586e-02), r);\n\tr = MulAdd(s1_0, M4(1.495e-01, -7.398e-02, 5.967e-02, -3.157e-02, -2.459e-02, 5.986e-02, 1.171e-02, 1.771e-02, 2.790e-02, 2.876e-02, 1.154e-02, 7.359e-03, -3.539e-03, 7.870e-02, -1.706e-02, 2.702e-03), r);\n\tr = MulAdd(s1_1, M4(4.107e-02, 3.702e-02, 1.844e-02, -1.665e-02, -9.427e-02, 1.276e-02, -1.905e-01, -3.633e-02, -4.983e-02, -1.865e-02, -4.267e-02, 5.087e-02, 8.844e-02, -1.910e-02, 2.550e-02, -3.833e-02), r);\n\tr = MulAdd(s1_2, M4(-1.749e-02, 1.086e-02, 6.475e-02, 5.569e-03, -3.156e-02, -1.079e-02, -1.211e-02, -4.422e-02, 3.946e-02, -5.961e-02, -3.821e-02, -6.025e-02, 1.419e-02, 1.226e-02, 8.469e-02, 1.532e-03), r);\n\tr = MulAdd(s1_3, M4(-1.309e-02, -6.999e-02, 2.224e-02, 1.539e-02, -8.830e-02, 9.210e-04, -1.607e-01, 1.475e-02, 1.783e-02, -1.197e-02, -2.315e-02, 3.797e-03, -5.802e-02, 6.780e-02, -8.185e-02, -1.038e-02), r);\n\tr = MulAdd(s1_4, M4(1.126e-01, 5.824e-02, -1.136e-01, -1.214e-01, 7.254e-02, 1.392e-01, 4.652e-02, 4.163e-03, -5.078e-03, 1.296e-01, -1.353e-02, 1.771e-02, -7.262e-02, -1.636e-01, 1.676e-01, -1.440e-01), r);\n\tr = MulAdd(s1_5, M4(-2.273e-02, -7.281e-02, -9.637e-02, 5.021e-02, -3.087e-03, 6.811e-02, -8.194e-02, -1.708e-02, -5.312e-02, 5.169e-03, -4.103e-02, -8.083e-02, 4.278e-03, -1.891e-02, 4.832e-02, 9.931e-02), r);\n\tr = MulAdd(s1_6, M4(3.184e-02, 1.020e-01, 4.867e-02, 1.185e-01, -3.356e-02, 3.062e-02, -2.851e-03, 1.745e-03, -6.452e-02, 5.120e-02, 1.792e-02, 1.147e-02, 6.849e-02, -9.902e-02, -4.764e-02, 5.710e-02), r);\n\tr = MulAdd(s1_7, M4(2.578e-02, 1.367e-01, -1.210e-02, -1.233e-01, -1.480e-02, -2.218e-02, -7.835e-02, -8.176e-02, -5.371e-03, 7.040e-02, 2.773e-02, 3.655e-02, -5.689e-02, 2.871e-02, 1.214e-01, 9.351e-02), r);\n\tr = MulAdd(s1_8, M4(-6.080e-02, 1.763e-02, -3.189e-02, -1.273e-01, 3.649e-02, -4.435e-02, 3.761e-02, -7.953e-03, 2.349e-02, -3.095e-02, 1.142e-02, 4.297e-03, -2.715e-02, 4.936e-02, 1.082e-02, 9.799e-02), r);\n\tr = MulAdd(s2_0, M4(-2.776e-02, 1.293e-01, -1.783e-01, 1.529e-01, -2.290e-02, -8.428e-02, 4.169e-02, 1.767e-02, 1.679e-02, 2.074e-02, 1.537e-01, -8.099e-02, 4.739e-02, -3.675e-02, 1.037e-03, -6.920e-02), r);\n\tr = MulAdd(s2_1, M4(-2.531e-02, -2.582e-02, 1.969e-02, -1.393e-02, -5.260e-02, 1.181e-01, -6.617e-02, 5.117e-02, -3.257e-03, 5.455e-02, 6.795e-02, 3.913e-02, 5.635e-02, -9.876e-03, 1.546e-01, -3.741e-02), r);\n\tr = MulAdd(s2_2, M4(4.920e-02, 6.231e-02, 9.032e-02, 1.876e-01, -8.728e-03, -3.089e-02, -1.952e-02, -2.917e-02, -9.372e-02, 8.909e-03, -4.601e-02, 1.724e-01, -4.023e-02, 7.348e-02, -9.672e-03, -5.886e-02), r);\n\tr = MulAdd(s2_3, M4(-7.343e-03, 1.215e-01, 7.028e-02, 6.470e-02, 3.450e-02, -1.520e-01, -1.476e-02, -2.044e-02, 2.039e-01, -8.401e-02, -3.152e-02, 5.093e-03, 8.280e-02, -1.049e-01, 2.218e-01, -3.287e-03), r);\n\tr = MulAdd(s2_4, M4(1.706e-01, -2.375e-01, 2.617e-02, 1.590e-01, 2.274e-01, 2.259e-01, 1.094e-01, 1.597e-01, -4.165e-01, 3.057e-01, -2.471e-01, -1.313e-01, 8.047e-02, 1.695e-01, -6.232e-02, 7.251e-02), r);\n\tr = MulAdd(s2_5, M4(1.763e-01, -6.319e-02, 2.457e-01, 1.073e-01, -4.014e-02, -1.392e-02, -6.100e-02, -9.742e-02, 2.239e-01, 1.344e-01, 1.617e-01, 1.206e-01, 1.906e-01, -2.518e-02, 9.673e-02, 9.477e-02), r);\n\tr = MulAdd(s2_6, M4(-1.280e-01, 1.866e-02, 1.189e-02, 1.655e-01, 2.222e-02, -5.139e-02, 5.157e-03, -7.063e-03, 6.341e-03, -6.532e-02, -8.119e-03, 2.360e-01, 2.154e-01, 2.693e-02, -8.017e-02, -1.507e-01), r);\n\tr = MulAdd(s2_7, M4(-1.199e-01, 2.403e-02, -1.075e-01, 1.460e-01, 6.546e-03, 5.782e-02, 3.762e-02, 1.417e-02, -1.522e-01, 1.086e-01, 8.618e-03, -1.528e-03, 8.101e-02, -1.232e-01, -1.925e-02, -3.502e-01), r);\n\tr = MulAdd(s2_8, M4(3.414e-02, -9.485e-02, -1.213e-01, 1.146e-01, 5.566e-02, 2.470e-02, 2.864e-02, 7.492e-03, 1.215e-03, 6.868e-03, 1.428e-01, 5.823e-02, 3.237e-02, 5.224e-02, -1.235e-02, 5.870e-03), r);\n\tr = MulAdd(s3_0, M4(7.992e-03, 2.747e-02, 6.278e-04, 2.961e-02, -8.173e-02, -4.045e-02, -5.339e-02, -2.496e-02, 2.246e-03, -3.510e-02, -7.723e-02, -3.039e-02, 8.896e-02, -6.327e-02, 5.694e-02, -4.376e-02), r);\n\tr = MulAdd(s3_1, M4(6.935e-02, 6.694e-02, 1.354e-01, 5.321e-03, 1.836e-03, 1.534e-01, -9.230e-02, 6.509e-02, -7.726e-02, 2.394e-02, 9.035e-02, 2.274e-02, -1.634e-02, -9.872e-02, 1.383e-01, -4.576e-03), r);\n\tr = MulAdd(s3_2, M4(-1.918e-02, 5.700e-02, -1.148e-02, -5.842e-03, 3.914e-02, -7.829e-02, -7.173e-02, -3.783e-02, -6.737e-03, 3.288e-02, 1.354e-02, 1.546e-02, -6.535e-02, 1.595e-02, 7.187e-02, 4.985e-02), r);\n\tr = MulAdd(s3_3, M4(4.359e-02, -9.839e-02, 2.936e-02, -6.255e-02, 3.457e-02, -8.771e-02, -6.488e-02, -5.237e-02, 5.229e-02, 1.695e-01, 3.978e-02, 4.679e-02, 5.440e-02, -5.050e-02, -8.147e-02, 2.267e-03), r);\n\tr = MulAdd(s3_4, M4(1.393e-01, -7.356e-02, 1.537e-01, -4.392e-03, 6.915e-02, 3.751e-01, 9.750e-03, 1.061e-01, -2.043e-01, 1.080e-01, -5.034e-02, 7.642e-02, 1.655e-01, 8.132e-02, 1.714e-01, -4.305e-03), r);\n\tr = MulAdd(s3_5, M4(-4.915e-02, 4.699e-03, 1.028e-01, -1.004e-01, -1.316e-02, -4.125e-02, 2.526e-02, -8.864e-02, 3.462e-02, 2.840e-02, -2.860e-02, 3.815e-02, 4.406e-02, -4.006e-02, 1.662e-02, 1.365e-01), r);\n\tr = MulAdd(s3_6, M4(-9.936e-02, -4.912e-02, -2.813e-02, -3.454e-02, -2.135e-02, 4.073e-02, 2.829e-02, 7.408e-03, 8.254e-04, -1.549e-02, -3.958e-02, 6.670e-02, 1.801e-02, -6.790e-02, -1.916e-02, -2.464e-02), r);\n\tr = MulAdd(s3_7, M4(5.843e-02, -6.666e-02, 3.866e-02, -6.407e-03, -1.351e-02, -1.384e-02, -7.414e-02, -2.238e-02, 2.566e-02, -6.237e-02, -2.566e-02, -7.310e-02, 5.082e-02, -6.057e-02, -6.063e-03, -7.529e-02), r);\n\tr = MulAdd(s3_8, M4(4.991e-02, 8.658e-02, 1.033e-01, -1.294e-02, 1.401e-01, -1.581e-02, 8.427e-03, 8.901e-02, -7.779e-03, -3.619e-02, -2.896e-02, -3.628e-02, 4.216e-02, -1.539e-02, 6.614e-02, 1.200e-02), r);\n\tr = MulAdd(s4_0, M4(3.201e-02, -2.314e-02, -9.402e-02, -5.038e-02, -1.166e-01, 5.423e-02, 6.861e-02, 1.893e-02, -1.840e-02, 9.847e-03, 6.309e-02, 1.178e-02, 2.019e-02, -5.657e-02, 1.314e-01, 1.558e-02), r);\n\tr = MulAdd(s4_1, M4(-2.175e-03, 1.075e-02, 9.153e-02, -1.479e-02, -2.999e-02, -9.316e-02, -1.268e-01, 1.921e-02, -3.825e-02, 9.109e-02, 4.885e-03, -1.273e-02, 1.376e-01, -1.753e-01, -1.395e-02, 1.021e-02), r);\n\tr = MulAdd(s4_2, M4(1.570e-02, 5.170e-02, -5.630e-02, -1.281e-02, 1.520e-02, -5.054e-03, 7.073e-03, -5.578e-02, -4.189e-02, 8.996e-02, -3.176e-02, 1.501e-02, 2.722e-02, -1.370e-02, 1.001e-01, 2.858e-02), r);\n\tr = MulAdd(s4_3, M4(-5.160e-02, -7.019e-03, 6.312e-02, 6.056e-02, 3.499e-02, -1.070e-01, 5.695e-02, -3.497e-03, 7.793e-02, 8.020e-02, 3.886e-02, -5.442e-02, 3.345e-03, -5.526e-02, 1.428e-01, 3.020e-03), r);\n\tr = MulAdd(s4_4, M4(2.241e-02, 1.776e-01, 2.629e-02, 1.097e-01, -1.603e-01, 2.221e-02, -1.667e-02, 1.837e-01, -6.043e-02, 2.459e-02, -1.244e-01, -5.165e-02, 1.008e-01, -3.515e-01, 9.694e-02, -1.964e-02), r);\n\tr = MulAdd(s4_5, M4(-2.891e-02, 3.557e-03, -6.549e-02, 4.918e-02, -1.580e-01, 8.213e-03, -1.304e-02, -6.337e-02, -1.537e-01, -2.118e-02, -1.707e-01, -3.469e-02, 1.904e-01, -9.866e-02, 1.235e-01, 1.615e-01), r);\n\tr = MulAdd(s4_6, M4(7.846e-03, -2.377e-02, 5.844e-02, 2.195e-02, 1.136e-02, -4.959e-02, 7.519e-03, -6.324e-02, 2.230e-02, -2.616e-02, 5.732e-02, 6.415e-02, 2.430e-02, -3.475e-02, -1.582e-02, -4.139e-02), r);\n\tr = MulAdd(s4_7, M4(-1.231e-01, 2.511e-02, -7.017e-02, -1.087e-02, 7.429e-02, -2.531e-02, -3.772e-03, 3.162e-02, 4.332e-02, -1.309e-01, 3.291e-02, 1.481e-02, -4.270e-02, -8.337e-02, -3.627e-02, 1.626e-01), r);\n\tr = MulAdd(s4_8, M4(5.311e-02, -5.032e-02, 6.109e-02, 1.034e-02, -3.633e-02, 3.182e-02, 1.081e-02, -7.439e-03, 5.875e-02, 6.472e-02, 3.018e-02, 7.406e-03, 2.786e-02, 2.914e-03, 4.435e-02, 1.405e-01), r);\n\tr = MulAdd(s5_0, M4(-6.742e-02, -9.053e-02, -4.419e-01, -1.174e-01, 2.639e-02, -5.764e-02, 7.424e-02, 5.791e-02, -2.769e-02, 6.398e-02, -1.846e-02, -2.339e-02, -2.575e-02, 3.780e-02, 1.045e-02, -1.989e-02), r);\n\tr = MulAdd(s5_1, M4(-2.244e-02, 1.453e-01, 9.197e-04, -1.394e-03, 1.953e-01, -9.646e-02, 3.490e-02, 6.717e-02, 1.967e-02, 4.580e-02, -1.188e-01, -2.916e-02, 4.751e-02, -7.756e-02, -2.299e-01, 1.251e-03), r);\n\tr = MulAdd(s5_2, M4(-6.215e-02, 5.819e-02, -1.518e-01, -1.638e-01, 1.215e-02, 3.033e-02, 9.672e-03, -2.266e-03, 1.194e-02, 6.312e-02, 2.088e-03, -5.166e-02, -1.069e-01, -7.006e-02, 2.260e-02, 4.479e-03), r);\n\tr = MulAdd(s5_3, M4(-2.098e-01, -1.045e-01, -1.693e-01, 1.107e-02, 2.776e-02, -7.437e-02, -4.281e-02, -4.362e-02, 8.969e-03, 1.298e-01, -2.149e-02, 2.569e-02, -8.281e-02, -8.143e-03, 4.913e-02, -4.221e-03), r);\n\tr = MulAdd(s5_4, M4(1.898e-02, 1.908e-01, 8.051e-02, 7.461e-02, 9.440e-02, -3.972e-02, 2.920e-02, -2.677e-02, -1.486e-01, 5.343e-02, 4.775e-02, 1.144e-02, 1.852e-02, -2.526e-01, 4.969e-02, -4.623e-02), r);\n\tr = MulAdd(s5_5, M4(-8.362e-02, -3.926e-02, -2.237e-01, -6.170e-02, 6.227e-02, 6.022e-02, 1.709e-01, 1.088e-01, -1.182e-01, -7.202e-02, -7.402e-02, 4.212e-02, 1.368e-01, -3.192e-02, -6.101e-02, 1.636e-01), r);\n\tr = MulAdd(s5_6, M4(-4.502e-02, -5.282e-02, 7.133e-04, -9.106e-02, -6.107e-02, 9.297e-03, 2.709e-03, -2.718e-02, 5.338e-02, 3.576e-02, -5.048e-04, -5.170e-03, 8.932e-03, -6.275e-02, -1.041e-03, -1.522e-02), r);\n\tr = MulAdd(s5_7, M4(-1.108e-01, -6.070e-02, -3.770e-02, 4.358e-03, 2.461e-02, -3.630e-02, -5.192e-02, -1.041e-01, 7.605e-03, 3.053e-02, 4.332e-02, 5.214e-02, 1.711e-02, -1.180e-02, 2.084e-03, 6.377e-02), r);\n\tr = MulAdd(s5_8, M4(9.699e-02, -2.121e-02, 4.909e-02, -1.573e-01, 4.100e-02, 1.046e-02, 7.242e-02, 8.504e-02, 2.716e-02, -3.748e-02, 2.484e-02, -1.300e-01, 9.252e-03, -5.036e-03, 2.020e-02, 3.686e-02), r);\n\tr = MulAdd(s6_0, M4(-5.980e-02, 2.806e-02, 6.706e-02, 5.784e-02, 1.031e-01, -5.117e-02, 8.907e-03, -9.963e-03, -5.161e-03, -2.655e-02, -8.112e-02, -7.795e-03, 3.048e-02, 2.583e-02, 4.491e-02, 3.224e-02), r);\n\tr = MulAdd(s6_1, M4(3.521e-02, 1.141e-01, 7.327e-02, 1.688e-02, 1.047e-01, 2.850e-02, -1.072e-01, -1.467e-01, -1.225e-02, 1.753e-02, -1.501e-03, -3.968e-02, -2.848e-02, -1.620e-02, -4.136e-02, 6.977e-03), r);\n\tr = MulAdd(s6_2, M4(-1.329e-01, 1.051e-02, 9.320e-02, -3.299e-02, 5.434e-02, 2.181e-02, 5.300e-02, -8.050e-04, -1.119e-01, 2.738e-02, 4.885e-03, -6.312e-02, -1.215e-02, -5.119e-03, -7.759e-03, -2.041e-02), r);\n\tr = MulAdd(s6_3, M4(-1.590e-02, 3.348e-03, 4.274e-02, 2.294e-02, -1.278e-01, 2.225e-02, 2.812e-02, -8.807e-03, 5.856e-02, 4.580e-02, 3.058e-02, 3.450e-03, 5.969e-02, -6.998e-03, 1.788e-02, 1.617e-02), r);\n\tr = MulAdd(s6_4, M4(-2.731e-02, 2.275e-01, -9.676e-02, 1.035e-01, -3.410e-02, -4.834e-02, 1.038e-01, -1.541e-01, -7.447e-02, 7.343e-02, -7.526e-02, -2.714e-02, 3.142e-01, -4.096e-02, 2.155e-02, 8.973e-02), r);\n\tr = MulAdd(s6_5, M4(-2.646e-02, -1.506e-02, -1.467e-01, -1.181e-01, 1.866e-02, -4.026e-02, 6.877e-03, 5.960e-02, -1.941e-02, 5.781e-02, -1.558e-01, -9.129e-02, 1.407e-02, 5.350e-02, 2.022e-02, -1.799e-02), r);\n\tr = MulAdd(s6_6, M4(1.897e-02, 8.663e-02, 7.349e-02, 7.148e-03, -1.309e-02, 3.192e-02, 5.372e-02, 3.611e-02, -7.302e-03, 2.931e-02, 2.886e-02, 4.663e-02, -1.019e-01, -5.014e-02, -3.633e-02, 4.043e-02), r);\n\tr = MulAdd(s6_7, M4(-7.477e-02, -2.522e-03, -3.245e-02, -1.565e-02, 8.996e-02, 8.576e-02, 9.061e-02, -4.715e-02, 2.940e-02, -6.892e-03, -5.590e-02, 3.380e-02, -5.756e-02, 9.486e-02, 9.597e-02, -8.792e-02), r);\n\tr = MulAdd(s6_8, M4(-2.186e-02, -8.656e-02, -1.093e-01, -3.317e-02, 4.744e-02, -7.635e-03, 1.268e-01, -2.545e-02, -1.122e-01, 2.642e-02, -1.119e-01, -1.527e-02, 6.516e-03, -8.017e-04, 2.662e-03, -8.226e-02), r);\n\tr = MulAdd(s7_0, M4(-2.019e-02, -3.796e-02, -5.359e-02, 8.589e-03, 1.746e-02, 7.377e-02, 9.361e-02, 3.278e-02, -8.813e-02, 2.210e-02, -1.049e-02, 1.715e-02, 1.041e-01, -4.550e-05, 4.012e-03, 2.279e-02), r);\n\tr = MulAdd(s7_1, M4(1.146e-01, 5.459e-02, -6.725e-02, -9.273e-03, -2.321e-02, 1.333e-01, -1.210e-01, 1.025e-03, 3.982e-02, -1.381e-01, -1.400e-02, -2.607e-02, -6.757e-02, -4.364e-02, -5.068e-03, 4.358e-02), r);\n\tr = MulAdd(s7_2, M4(7.601e-02, -3.050e-02, -1.273e-02, -3.718e-02, 4.217e-02, 7.081e-03, 4.354e-02, -1.709e-02, -5.820e-02, 1.073e-01, 8.721e-03, 7.082e-04, 1.634e-02, 3.915e-02, -3.449e-02, -9.085e-03), r);\n\tr = MulAdd(s7_3, M4(-1.358e-02, -1.004e-02, -8.832e-02, -1.193e-01, -2.779e-02, 1.960e-01, 2.438e-02, 2.159e-03, 6.318e-02, -4.563e-02, 6.732e-02, -8.724e-02, -4.285e-02, 8.821e-02, 2.702e-02, 4.149e-02), r);\n\tr = MulAdd(s7_4, M4(3.593e-02, 2.196e-02, 2.173e-02, -4.889e-02, 7.567e-03, -3.813e-02, 5.501e-02, -5.377e-02, 2.046e-01, -1.932e-01, -2.858e-01, 4.373e-02, 1.428e-01, 1.579e-01, 1.093e-01, 2.253e-02), r);\n\tr = MulAdd(s7_5, M4(-1.377e-01, -1.132e-02, -5.150e-02, -6.566e-02, -6.390e-03, -3.158e-02, 4.235e-02, -6.105e-02, 1.130e-01, -4.081e-02, 5.491e-02, 1.827e-01, -2.194e-02, 1.053e-01, -6.559e-02, -4.982e-02), r);\n\tr = MulAdd(s7_6, M4(-6.669e-02, 3.382e-03, -2.385e-02, -2.175e-02, -2.203e-02, 5.512e-02, 2.337e-02, 1.053e-02, 2.608e-03, -3.030e-02, 3.556e-03, 2.730e-02, 8.774e-02, 1.053e-02, -1.591e-02, -8.692e-02), r);\n\tr = MulAdd(s7_7, M4(-1.432e-01, 4.026e-02, 1.347e-01, -2.317e-02, 8.572e-02, 1.513e-02, -5.679e-02, -9.989e-02, -5.869e-02, -1.023e-01, -4.056e-02, 1.494e-01, -2.377e-02, -1.866e-02, -6.367e-02, -2.192e-01), r);\n\tr = MulAdd(s7_8, M4(4.881e-02, 1.017e-02, -3.493e-02, -9.660e-02, 3.625e-02, 2.386e-02, 9.414e-02, 3.077e-02, -7.044e-02, -2.566e-02, -2.265e-02, 2.627e-02, 6.538e-02, 4.887e-02, -4.800e-02, -3.489e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.206e-02, -1.488e-03, 7.432e-03, -5.892e-03 };\n\tr = MulAdd(s0_0, M4(-1.167e-02, 7.113e-02, 3.822e-03, -1.144e-02, -2.224e-01, 1.053e-02, 3.899e-02, 1.143e-02, 6.980e-03, 1.377e-02, -2.633e-02, -1.480e-02, -2.798e-02, 8.914e-02, -5.357e-03, -9.741e-02), r);\n\tr = MulAdd(s0_1, M4(7.215e-02, -2.533e-02, 8.928e-02, -3.974e-02, -1.013e-01, 9.533e-02, -4.489e-02, 2.747e-02, 3.177e-01, -2.748e-01, 7.242e-02, -2.502e-02, 2.636e-01, 5.869e-02, -1.809e-01, -9.835e-02), r);\n\tr = MulAdd(s0_2, M4(-8.355e-05, -4.128e-02, -4.788e-02, -1.433e-02, -8.908e-02, -3.683e-02, 4.406e-02, 9.769e-02, -3.560e-02, -1.459e-02, 1.996e-01, -4.799e-02, -4.419e-03, -4.064e-02, 1.307e-02, -4.230e-02), r);\n\tr = MulAdd(s0_3, M4(5.972e-02, -8.597e-02, -3.847e-02, 1.258e-02, -1.871e-01, 1.066e-01, 1.463e-01, -2.473e-02, -1.240e-01, -5.041e-02, 1.561e-02, 7.376e-02, -2.178e-02, 4.002e-02, 1.836e-01, -1.051e-01), r);\n\tr = MulAdd(s0_4, M4(6.370e-02, -2.171e-02, 8.220e-02, -9.885e-02, -2.903e-01, -8.983e-02, -7.046e-02, -1.940e-01, 5.303e-02, 1.998e-01, -4.619e-01, -4.693e-02, -1.250e-01, -2.295e-01, -1.236e-01, -2.091e-01), r);\n\tr = MulAdd(s0_5, M4(5.260e-02, -6.406e-02, -3.290e-02, -4.443e-03, -6.417e-02, 1.516e-02, -2.519e-02, -3.230e-02, 3.332e-02, -5.458e-01, -1.850e-01, 8.340e-02, -2.379e-02, 7.705e-02, -2.979e-02, 2.320e-02), r);\n\tr = MulAdd(s0_6, M4(3.036e-03, 4.029e-02, -7.705e-02, 1.360e-01, -1.734e-01, 4.693e-02, 1.519e-01, 1.149e-01, -8.603e-02, 2.361e-02, 4.493e-02, -1.080e-01, -3.285e-02, -2.896e-02, 4.286e-02, -5.755e-02), r);\n\tr = MulAdd(s0_7, M4(4.018e-02, -8.063e-02, 3.551e-02, -1.668e-01, -2.488e-01, 7.881e-02, 5.395e-02, -5.390e-02, -1.344e-01, -1.297e-01, 1.513e-01, -1.432e-01, 5.492e-02, 2.255e-01, -6.271e-02, -1.744e-01), r);\n\tr = MulAdd(s0_8, M4(-5.268e-03, 1.191e-01, 3.927e-02, 1.076e-02, -2.728e-01, 8.725e-02, 1.057e-01, -1.054e-01, 1.970e-01, 1.924e-01, 6.983e-02, 1.276e-01, -1.113e-01, -1.624e-01, -4.850e-02, -7.036e-02), r);\n\tr = MulAdd(s1_0, M4(-1.426e-01, 2.334e-02, -1.094e-02, -7.407e-02, -6.792e-02, 2.777e-02, 3.094e-02, -1.318e-02, -5.514e-03, -4.333e-02, 7.728e-04, -5.478e-03, -1.044e-01, -6.804e-02, 5.295e-02, 9.620e-03), r);\n\tr = MulAdd(s1_1, M4(5.492e-02, -4.866e-02, 5.931e-02, 6.582e-02, -5.343e-02, 1.568e-01, -5.726e-02, 3.203e-02, -5.349e-02, 1.842e-03, -9.329e-03, 2.341e-03, 4.785e-02, 6.863e-02, -8.660e-02, -6.837e-02), r);\n\tr = MulAdd(s1_2, M4(-2.827e-02, 5.348e-02, 3.606e-02, 1.615e-02, -3.296e-02, -1.077e-02, -1.476e-02, -1.344e-02, 1.092e-02, -7.954e-02, 2.188e-02, -7.613e-02, -9.541e-02, -9.093e-02, 7.970e-02, 5.269e-03), r);\n\tr = MulAdd(s1_3, M4(-1.361e-03, -8.518e-02, -9.498e-02, 7.772e-02, 2.565e-02, 8.882e-02, 6.306e-02, -4.711e-02, -1.616e-02, 6.767e-02, 5.313e-02, -9.962e-02, 3.099e-02, -4.796e-02, 6.080e-02, 2.616e-02), r);\n\tr = MulAdd(s1_4, M4(-5.855e-02, 2.104e-02, -9.982e-02, 9.721e-02, 1.517e-01, -9.210e-02, -8.640e-02, -8.518e-02, 6.706e-02, 2.991e-02, -1.464e-02, -6.294e-02, -2.638e-02, 1.248e-02, -3.616e-02, 1.223e-01), r);\n\tr = MulAdd(s1_5, M4(7.110e-02, -7.086e-02, 6.703e-03, 3.567e-02, 5.312e-02, -6.496e-03, 8.943e-03, -5.466e-02, 1.895e-02, -3.669e-02, 2.584e-02, -2.765e-03, 3.016e-03, 7.781e-02, 2.094e-02, 8.166e-02), r);\n\tr = MulAdd(s1_6, M4(-1.128e-01, 4.150e-02, 7.408e-02, 9.683e-02, 6.146e-02, -4.690e-02, 4.417e-02, 2.410e-02, 1.917e-02, -2.390e-03, -2.845e-02, -6.984e-03, -1.097e-01, -6.451e-02, -4.617e-02, -2.599e-02), r);\n\tr = MulAdd(s1_7, M4(-5.970e-03, -2.779e-01, 4.142e-02, -1.805e-02, 4.826e-02, -7.818e-03, -1.021e-01, 1.013e-02, -2.918e-02, 1.025e-01, 1.875e-02, 1.042e-02, -1.240e-02, 1.919e-01, -5.672e-03, -4.655e-02), r);\n\tr = MulAdd(s1_8, M4(4.831e-02, 1.212e-01, -1.350e-01, -6.402e-02, 9.789e-02, -4.909e-03, -2.798e-02, -6.644e-02, -9.080e-03, -1.093e-01, -5.033e-02, -1.946e-02, -1.293e-01, -2.352e-02, 4.836e-02, -1.554e-02), r);\n\tr = MulAdd(s2_0, M4(-7.880e-02, 4.960e-02, 1.506e-01, 6.567e-03, 1.914e-02, -5.041e-02, 3.384e-02, -5.016e-02, -7.930e-02, -1.876e-01, -4.583e-02, 1.982e-01, 1.903e-01, 8.947e-02, 4.232e-02, -2.569e-02), r);\n\tr = MulAdd(s2_1, M4(2.007e-01, -1.006e-01, 6.364e-02, -1.107e-01, 1.316e-01, -4.705e-02, 3.292e-02, -5.835e-02, 4.873e-01, 2.395e-01, -1.672e-01, 3.838e-02, 7.992e-04, 5.969e-03, 2.629e-01, 2.465e-02), r);\n\tr = MulAdd(s2_2, M4(-2.404e-02, -4.473e-02, 1.559e-01, 6.163e-02, -4.415e-02, -6.521e-02, -4.490e-02, -6.924e-02, -2.854e-03, -1.285e-01, 2.472e-01, 6.413e-02, -1.113e-01, -4.878e-02, 1.202e-01, 4.318e-02), r);\n\tr = MulAdd(s2_3, M4(1.076e-01, -5.476e-02, 2.212e-01, -8.185e-02, 9.430e-03, -9.689e-02, 1.046e-01, 1.132e-02, -5.601e-02, 1.755e-02, 4.833e-02, 1.235e-01, -1.952e-02, 1.777e-01, -3.257e-02, 1.061e-01), r);\n\tr = MulAdd(s2_4, M4(2.772e-01, -1.444e-01, -3.958e-02, -9.223e-02, 1.794e-01, 5.433e-02, 2.304e-01, -2.276e-01, -2.422e-01, -7.740e-02, -1.114e-01, 1.253e-01, 7.317e-02, -4.988e-03, 2.970e-01, -2.830e-02), r);\n\tr = MulAdd(s2_5, M4(-7.800e-02, 4.609e-02, 1.082e-01, 1.851e-01, -1.878e-03, -1.458e-02, -2.368e-02, -2.698e-02, 1.978e-01, 3.366e-01, 4.870e-02, 3.587e-02, 1.547e-01, 3.822e-02, 1.268e-01, 3.168e-02), r);\n\tr = MulAdd(s2_6, M4(1.717e-03, -1.812e-01, -1.010e-01, -2.942e-02, 1.088e-02, -2.949e-02, -2.280e-02, 1.454e-02, 1.256e-01, 7.694e-02, -2.056e-01, -1.434e-02, -8.130e-02, 1.671e-01, -1.100e-02, -2.191e-02), r);\n\tr = MulAdd(s2_7, M4(-1.673e-01, 4.049e-03, 2.133e-02, 2.319e-01, -3.630e-02, 9.826e-02, 2.562e-02, 1.294e-01, -4.803e-02, -2.150e-01, 1.226e-01, 1.012e-01, 1.222e-01, -1.323e-01, 9.364e-05, -7.661e-03), r);\n\tr = MulAdd(s2_8, M4(-1.020e-01, -7.446e-02, -8.427e-03, 1.322e-01, 6.739e-02, 1.669e-02, 6.415e-02, -6.686e-02, 6.874e-02, 1.706e-01, -5.453e-02, 6.454e-02, -1.321e-02, 5.199e-02, 8.951e-02, 6.274e-02), r);\n\tr = MulAdd(s3_0, M4(-9.301e-02, -9.281e-03, 3.177e-02, -4.602e-02, -2.858e-02, 1.100e-01, 5.152e-03, 8.481e-03, 4.755e-02, -4.921e-02, 3.039e-03, 2.944e-02, -2.085e-02, -1.190e-02, 1.241e-02, 1.770e-02), r);\n\tr = MulAdd(s3_1, M4(1.206e-01, 3.190e-02, 2.019e-02, -5.287e-02, 2.960e-03, -3.259e-02, -3.770e-03, -1.537e-02, 1.747e-02, -1.034e-02, 1.876e-02, 4.201e-02, -1.092e-01, 2.903e-02, -2.532e-02, 7.270e-02), r);\n\tr = MulAdd(s3_2, M4(-5.119e-03, 7.362e-03, -3.890e-02, 4.856e-02, -4.213e-02, -1.402e-01, -2.826e-02, -8.865e-02, -2.333e-02, -2.161e-02, -5.952e-02, 2.058e-02, -5.357e-02, -3.009e-02, 1.872e-02, 2.597e-02), r);\n\tr = MulAdd(s3_3, M4(6.472e-02, -4.584e-02, -7.107e-03, 4.855e-02, -4.056e-02, 8.131e-02, 1.364e-01, -2.552e-02, -7.878e-02, -2.991e-02, 2.130e-02, 1.087e-01, 1.964e-02, 8.321e-02, -1.909e-02, 7.523e-02), r);\n\tr = MulAdd(s3_4, M4(5.038e-02, 2.256e-02, -7.623e-03, -1.872e-02, 1.800e-01, 7.008e-02, 7.587e-02, -2.872e-01, 4.155e-03, 8.453e-04, -1.561e-02, 5.092e-02, -6.359e-02, -9.084e-02, 1.047e-01, -5.319e-02), r);\n\tr = MulAdd(s3_5, M4(-9.609e-02, 1.714e-02, -2.219e-01, 2.245e-02, 1.040e-02, -1.293e-01, 1.025e-01, -7.594e-02, -3.987e-02, 2.213e-02, 6.019e-02, -1.122e-01, -7.775e-02, -5.578e-02, -3.080e-02, -4.930e-02), r);\n\tr = MulAdd(s3_6, M4(-6.516e-02, 1.657e-02, -2.558e-02, -6.124e-02, -3.133e-02, -2.645e-02, -8.707e-03, 2.046e-02, -9.048e-03, -1.351e-02, -2.644e-02, -5.333e-02, -5.207e-02, 5.509e-02, -5.945e-02, -7.672e-02), r);\n\tr = MulAdd(s3_7, M4(4.162e-03, -6.708e-02, 5.431e-02, 1.623e-02, -7.745e-02, 1.429e-01, -2.173e-02, 1.892e-01, -3.614e-02, -4.247e-02, 3.057e-03, 7.932e-02, -2.931e-03, -6.782e-02, 1.497e-02, -5.519e-04), r);\n\tr = MulAdd(s3_8, M4(-1.726e-02, 9.547e-02, 5.438e-02, 6.943e-02, 1.914e-02, -2.154e-02, 1.912e-01, -1.096e-02, 2.614e-02, 1.948e-02, -1.711e-02, -1.831e-02, -3.373e-02, 3.467e-02, -1.693e-02, 1.689e-03), r);\n\tr = MulAdd(s4_0, M4(-6.692e-02, -3.165e-02, 2.808e-02, -5.682e-02, -6.105e-02, -1.175e-02, 7.030e-02, 1.832e-02, 6.584e-02, 2.498e-02, -5.845e-02, 5.704e-02, 4.486e-02, 1.214e-03, -3.955e-02, -8.385e-02), r);\n\tr = MulAdd(s4_1, M4(6.582e-02, -5.290e-02, 1.448e-02, -5.476e-02, -2.031e-01, -5.528e-02, -2.782e-02, -5.046e-02, -2.098e-02, 2.527e-02, 4.160e-02, 4.069e-02, -1.045e-01, -8.357e-02, -2.469e-02, -2.611e-02), r);\n\tr = MulAdd(s4_2, M4(3.378e-03, 7.391e-02, 3.614e-02, -6.354e-02, -1.993e-02, -5.497e-02, -4.947e-02, 4.341e-02, 1.048e-01, 1.082e-01, -1.009e-01, 2.709e-02, -6.418e-02, -1.455e-01, 5.250e-02, -4.911e-03), r);\n\tr = MulAdd(s4_3, M4(6.624e-02, 2.199e-02, -9.857e-03, -3.339e-02, 9.994e-02, -2.933e-02, 1.909e-02, -9.170e-02, -1.106e-02, -2.439e-02, 2.660e-02, -3.228e-02, -3.388e-02, -3.303e-02, -7.651e-02, -9.346e-02), r);\n\tr = MulAdd(s4_4, M4(-8.180e-02, 7.600e-02, 1.538e-02, -1.216e-01, 1.981e-01, 1.502e-02, 4.975e-02, 2.431e-02, -7.522e-02, 3.625e-03, 1.104e-02, -5.448e-03, -1.209e-01, 5.751e-02, -3.896e-03, 1.092e-01), r);\n\tr = MulAdd(s4_5, M4(4.550e-02, -1.330e-01, -3.371e-02, -4.553e-02, -3.309e-02, -4.712e-02, -1.272e-01, 7.661e-02, -1.339e-01, -6.610e-02, -1.053e-01, -1.248e-03, 2.452e-03, -4.445e-02, 1.917e-01, -6.756e-02), r);\n\tr = MulAdd(s4_6, M4(2.202e-02, 6.361e-02, 6.040e-02, -9.084e-02, -2.731e-02, 2.606e-02, -3.115e-03, -5.223e-02, -6.156e-02, -1.456e-01, -6.265e-04, 2.337e-03, -6.716e-02, 1.083e-02, -1.455e-02, -2.764e-02), r);\n\tr = MulAdd(s4_7, M4(-2.959e-02, 5.556e-02, 1.304e-02, 1.678e-02, -5.710e-02, 6.434e-02, -4.860e-02, 9.945e-02, -1.809e-02, -2.464e-01, 1.077e-01, -2.306e-02, -3.565e-02, -1.890e-02, -1.252e-02, -3.337e-02), r);\n\tr = MulAdd(s4_8, M4(-9.485e-03, 1.104e-01, 1.211e-02, -2.105e-02, -1.236e-02, -5.495e-02, 7.685e-02, -4.815e-02, -6.525e-02, 1.109e-01, 1.661e-01, 3.075e-02, -8.373e-02, 9.925e-03, 1.961e-02, -5.981e-02), r);\n\tr = MulAdd(s5_0, M4(9.801e-04, 9.458e-02, 1.762e-01, -1.281e-01, -1.489e-01, -4.986e-02, 5.098e-02, -1.408e-01, -9.999e-03, 3.848e-02, -5.507e-02, -1.034e-02, 4.173e-02, -6.904e-03, -1.325e-03, -6.998e-03), r);\n\tr = MulAdd(s5_1, M4(1.370e-01, -3.919e-02, 2.025e-01, 1.048e-01, 9.064e-03, -8.848e-02, 1.585e-01, -8.881e-02, -7.091e-02, 2.845e-02, -1.275e-02, -1.239e-02, -3.869e-03, -1.170e-03, -5.842e-02, 3.705e-02), r);\n\tr = MulAdd(s5_2, M4(1.817e-01, 1.459e-01, 5.089e-02, -1.269e-01, -5.881e-02, -7.738e-03, 1.224e-01, 3.632e-02, 7.139e-02, 6.373e-02, -3.948e-02, -4.856e-03, -3.270e-02, -2.634e-02, 2.104e-02, -2.706e-02), r);\n\tr = MulAdd(s5_3, M4(1.502e-01, 1.379e-01, 1.538e-02, -7.861e-03, 1.042e-01, -2.230e-02, 4.135e-02, -2.683e-02, -2.117e-02, -7.226e-02, -3.989e-03, 8.275e-02, 8.715e-02, -6.580e-03, 1.703e-02, -9.040e-03), r);\n\tr = MulAdd(s5_4, M4(2.142e-01, 1.061e-01, -3.152e-01, -2.537e-02, 1.539e-01, -8.227e-02, 8.715e-02, -2.106e-01, 1.039e-01, 4.502e-02, -1.235e-01, -1.842e-02, 4.672e-02, 1.679e-01, -2.057e-02, 1.910e-01), r);\n\tr = MulAdd(s5_5, M4(1.570e-01, -6.616e-02, -3.374e-01, 4.379e-02, 9.364e-02, 1.886e-01, 9.683e-02, 1.772e-01, -8.627e-02, -7.643e-02, -1.468e-01, -3.264e-02, 6.554e-02, -2.150e-02, 1.439e-01, -2.549e-02), r);\n\tr = MulAdd(s5_6, M4(2.129e-01, 7.809e-02, -3.730e-02, -9.549e-02, 3.745e-02, 6.747e-02, -3.004e-03, 9.262e-03, -1.267e-03, -3.688e-02, -2.417e-02, 1.145e-02, 1.774e-02, -8.307e-03, -2.078e-02, 1.897e-02), r);\n\tr = MulAdd(s5_7, M4(1.043e-01, -3.778e-02, -1.563e-01, -3.084e-02, -2.736e-03, 8.034e-03, 5.689e-02, -4.467e-02, -4.726e-02, -3.165e-02, 4.804e-02, 1.631e-02, -2.546e-02, 7.656e-02, -2.755e-02, 2.819e-02), r);\n\tr = MulAdd(s5_8, M4(6.321e-02, 7.741e-02, -1.271e-03, -3.950e-03, -2.887e-02, 5.842e-02, 8.823e-02, -3.011e-02, -1.819e-02, -2.790e-02, 1.703e-02, -9.489e-02, 6.141e-03, -1.879e-02, -1.695e-03, -4.482e-02), r);\n\tr = MulAdd(s6_0, M4(-1.058e-01, 1.028e-02, 2.038e-02, 8.475e-02, 2.969e-02, -2.337e-02, -2.119e-02, -1.120e-01, 9.966e-02, 7.796e-02, 8.142e-02, -2.125e-02, -4.534e-02, 2.910e-02, 6.519e-02, 2.339e-03), r);\n\tr = MulAdd(s6_1, M4(-4.818e-02, -2.566e-02, 1.065e-02, -7.687e-02, 6.712e-02, -6.220e-03, 1.980e-02, -9.644e-03, 1.204e-01, -8.267e-03, 1.451e-01, 2.302e-02, 4.919e-02, -4.909e-02, 3.303e-02, 7.169e-02), r);\n\tr = MulAdd(s6_2, M4(-5.701e-02, 1.688e-01, -3.089e-02, 1.287e-03, 1.021e-01, 8.347e-02, 3.803e-02, -5.952e-03, 2.335e-01, 7.194e-02, -1.382e-02, 8.579e-02, -2.265e-02, 3.642e-02, -3.861e-03, -4.818e-02), r);\n\tr = MulAdd(s6_3, M4(-1.187e-01, -4.119e-02, -2.789e-02, 4.240e-02, 7.966e-03, 3.998e-02, -9.259e-02, 1.155e-01, 3.001e-02, -4.175e-02, 5.960e-02, 5.011e-02, 5.314e-02, 8.689e-03, 1.480e-01, -2.816e-01), r);\n\tr = MulAdd(s6_4, M4(-2.291e-01, 3.066e-02, -3.810e-02, -7.246e-02, 5.209e-02, 1.857e-01, -5.975e-02, 9.752e-02, -9.198e-02, 8.753e-03, 2.891e-04, 4.438e-02, 1.461e-01, -6.657e-03, 1.107e-01, -2.582e-02), r);\n\tr = MulAdd(s6_5, M4(-1.170e-01, -9.598e-02, -1.396e-01, 3.307e-02, -1.292e-01, 6.836e-02, 1.472e-02, 4.140e-02, -1.075e-01, 6.799e-02, -7.403e-02, 7.355e-02, 2.433e-02, 4.886e-02, -2.368e-02, 3.433e-03), r);\n\tr = MulAdd(s6_6, M4(-1.018e-01, 2.365e-03, 7.537e-02, 5.097e-02, -7.627e-03, 1.422e-02, 2.085e-02, 1.109e-01, 2.279e-02, -3.080e-02, 4.851e-02, -7.352e-02, 1.192e-01, 3.540e-02, -6.290e-02, -4.978e-02), r);\n\tr = MulAdd(s6_7, M4(-1.705e-01, -6.102e-02, 7.558e-02, 8.990e-02, -1.164e-01, 1.767e-01, 9.091e-02, -7.596e-02, 2.049e-02, -7.114e-02, 2.842e-02, 1.798e-01, 5.774e-02, 1.200e-01, -8.578e-02, 2.649e-01), r);\n\tr = MulAdd(s6_8, M4(-8.003e-02, -1.615e-02, 6.288e-03, 5.704e-02, -4.235e-03, 6.261e-03, 3.897e-02, 3.701e-02, 8.972e-02, -2.166e-02, 3.724e-02, -5.434e-02, 5.026e-02, -4.115e-02, -6.291e-02, 3.271e-03), r);\n\tr = MulAdd(s7_0, M4(9.269e-02, 6.940e-02, 2.366e-02, -4.562e-02, -3.172e-02, 9.314e-03, -6.270e-02, 2.465e-02, -5.319e-03, 4.779e-02, 5.714e-02, 8.881e-02, 4.492e-02, -4.217e-02, -3.386e-02, 6.345e-02), r);\n\tr = MulAdd(s7_1, M4(4.166e-02, -1.216e-01, 5.635e-02, -1.037e-01, 6.698e-02, 1.740e-01, -5.253e-03, 4.376e-02, -1.643e-01, -1.017e-01, -1.700e-02, 7.608e-02, -9.902e-02, -3.625e-02, -2.993e-02, 5.567e-02), r);\n\tr = MulAdd(s7_2, M4(1.017e-01, 3.580e-02, -5.391e-02, -5.787e-02, 7.344e-02, 4.733e-03, 8.307e-02, 2.210e-02, -4.513e-02, 6.641e-02, 2.762e-02, 6.352e-02, -1.433e-02, -2.190e-02, -8.479e-02, 1.480e-02), r);\n\tr = MulAdd(s7_3, M4(7.769e-02, -5.091e-03, -1.465e-02, -5.753e-03, -6.735e-02, 1.561e-01, 2.281e-02, 6.207e-02, -1.018e-02, -7.199e-02, 4.084e-03, 8.673e-02, -2.895e-02, -8.051e-02, 6.780e-03, -2.519e-02), r);\n\tr = MulAdd(s7_4, M4(1.574e-01, 9.303e-02, 1.053e-03, -5.916e-02, 4.135e-02, 2.861e-01, 5.332e-02, 5.538e-02, -5.394e-02, -2.012e-02, -1.075e-01, 7.292e-02, 1.936e-01, 1.745e-01, 3.240e-02, -5.927e-02), r);\n\tr = MulAdd(s7_5, M4(-8.653e-02, -6.805e-02, -1.058e-01, -1.375e-02, -6.762e-02, 5.523e-02, -4.983e-02, 5.782e-02, 4.544e-02, 1.240e-01, 5.341e-02, -9.391e-04, 1.718e-02, -2.817e-02, 9.757e-02, 3.799e-02), r);\n\tr = MulAdd(s7_6, M4(1.094e-01, 2.844e-02, -4.059e-02, 3.584e-02, -3.615e-03, 2.496e-02, -3.317e-03, 5.475e-02, 5.129e-03, 3.327e-02, 7.196e-02, -1.179e-01, -3.309e-02, -4.331e-02, 2.087e-02, -2.335e-02), r);\n\tr = MulAdd(s7_7, M4(1.671e-01, -1.219e-02, -1.035e-03, 2.249e-02, -6.740e-02, 1.508e-01, 5.615e-02, 9.415e-03, 9.352e-02, 2.030e-02, -4.382e-02, 1.021e-01, 4.900e-02, 2.809e-03, -9.955e-02, 5.268e-02), r);\n\tr = MulAdd(s7_8, M4(2.353e-01, 1.480e-01, -2.603e-02, 9.030e-02, -1.118e-02, 1.376e-02, 1.244e-01, 6.137e-02, -1.080e-02, 1.309e-03, 3.426e-03, -9.580e-02, 1.014e-01, 8.073e-02, -4.193e-03, 1.369e-01), r);\n\treturn r;\n}\n\nvoid Pass14(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 15\n//!DESC conv14\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.023e-03, -5.476e-03, -1.095e-03, 8.393e-03 };\n\tr = MulAdd(s0_0, M4(-4.185e-02, 4.091e-03, 2.901e-02, -2.038e-02, -4.890e-02, 1.164e-01, 1.339e-02, 1.634e-03, 2.732e-02, 6.849e-02, 9.277e-02, -7.625e-02, -5.444e-02, 2.505e-02, 9.467e-02, 6.034e-02), r);\n\tr = MulAdd(s0_1, M4(1.256e-02, 8.107e-02, 1.145e-01, -1.047e-01, 1.597e-01, 3.900e-02, 3.008e-02, -6.023e-02, 4.341e-02, -2.507e-02, -4.064e-02, 3.460e-01, 1.876e-02, -9.687e-02, -1.347e-02, -1.907e-01), r);\n\tr = MulAdd(s0_2, M4(9.207e-02, -8.786e-03, -1.540e-02, 7.945e-03, -4.322e-03, -1.837e-01, -1.012e-01, 1.046e-01, -7.684e-02, 2.438e-02, 3.435e-02, -1.049e-01, 1.712e-02, 6.380e-03, -1.597e-02, 4.260e-02), r);\n\tr = MulAdd(s0_3, M4(5.051e-02, 6.101e-02, 1.899e-02, -6.753e-02, 8.176e-02, -1.564e-01, -1.642e-02, -9.951e-02, 7.278e-03, 1.024e-01, 7.590e-02, -1.069e-01, -9.321e-02, -1.165e-01, -1.024e-01, 3.383e-02), r);\n\tr = MulAdd(s0_4, M4(-2.707e-02, -9.375e-02, -2.150e-02, 2.158e-01, 7.356e-02, -1.083e-01, 2.409e-01, 7.838e-02, -2.262e-02, 1.347e-02, 1.614e-01, 9.256e-02, 5.947e-02, -9.669e-02, 5.556e-02, -7.074e-02), r);\n\tr = MulAdd(s0_5, M4(1.220e-01, -5.686e-02, 2.460e-02, 6.564e-02, -1.398e-02, -1.607e-01, -1.804e-01, -2.429e-01, 2.244e-02, -2.300e-01, -1.902e-03, -1.811e-01, 4.572e-02, 1.910e-02, -1.423e-01, 7.379e-02), r);\n\tr = MulAdd(s0_6, M4(-3.069e-03, 5.911e-02, 1.009e-02, -3.404e-02, -6.806e-03, 4.456e-02, 6.687e-03, -6.194e-02, -8.226e-02, 2.784e-03, -8.519e-02, -4.928e-02, -4.491e-02, 1.170e-02, -7.097e-02, -2.554e-02), r);\n\tr = MulAdd(s0_7, M4(-9.643e-02, -3.923e-02, -8.407e-02, 4.769e-02, 4.032e-02, 2.404e-03, 2.330e-02, 6.803e-02, 2.597e-02, -1.978e-01, 4.945e-02, -1.115e-01, 9.908e-02, -6.704e-02, 2.845e-02, -1.589e-01), r);\n\tr = MulAdd(s0_8, M4(3.223e-02, 3.978e-04, -2.161e-02, -5.624e-02, 7.873e-02, 1.726e-01, 1.821e-02, 5.381e-02, 1.479e-01, 6.089e-02, 3.424e-02, 1.370e-01, 1.544e-02, 1.084e-02, -5.044e-02, 8.863e-03), r);\n\tr = MulAdd(s1_0, M4(-6.762e-02, 1.486e-01, -3.739e-04, 2.086e-02, -6.172e-03, 3.222e-03, -5.487e-02, 4.932e-02, -2.639e-02, 2.902e-02, -6.927e-03, -4.605e-02, -5.824e-02, 8.899e-02, 8.049e-02, 1.084e-02), r);\n\tr = MulAdd(s1_1, M4(5.069e-02, 6.858e-02, 1.163e-01, -1.431e-03, -3.230e-03, -1.418e-01, -5.930e-02, -1.903e-02, 4.409e-02, -4.904e-02, 1.191e-01, 1.010e-01, 9.705e-03, 4.082e-02, 2.487e-01, -1.595e-01), r);\n\tr = MulAdd(s1_2, M4(3.732e-02, -2.114e-02, -1.093e-01, 6.778e-02, -8.360e-02, 5.667e-02, -6.203e-02, 3.940e-02, -1.157e-02, -7.115e-02, -1.429e-02, -2.059e-02, 1.053e-01, -1.412e-02, 8.933e-02, 3.629e-02), r);\n\tr = MulAdd(s1_3, M4(-5.475e-04, 4.279e-02, -2.862e-02, 3.817e-02, -5.141e-02, -8.078e-04, 1.451e-01, -5.715e-02, -1.689e-03, -3.475e-02, -3.324e-02, 5.880e-02, -3.765e-02, -2.832e-02, 4.040e-02, -6.736e-02), r);\n\tr = MulAdd(s1_4, M4(6.867e-02, -4.313e-03, -7.039e-02, -8.560e-02, 2.589e-02, -6.891e-02, 1.898e-02, -2.068e-02, 2.681e-02, -1.478e-01, -7.782e-02, 6.469e-02, -5.886e-02, -5.819e-02, -4.400e-02, 4.008e-02), r);\n\tr = MulAdd(s1_5, M4(8.103e-02, 2.388e-02, -8.507e-02, -1.557e-02, -7.126e-02, 4.465e-02, -1.902e-02, -2.335e-02, 4.500e-02, 7.150e-03, 1.615e-01, 1.738e-04, -7.395e-03, -5.280e-02, -4.631e-02, 5.364e-02), r);\n\tr = MulAdd(s1_6, M4(2.050e-02, 1.850e-02, 1.206e-02, -6.519e-02, -2.588e-02, 3.833e-02, 5.943e-02, 7.126e-03, -2.178e-02, 1.797e-02, -3.683e-02, -4.195e-02, -6.068e-03, 2.638e-03, -8.274e-02, -3.730e-03), r);\n\tr = MulAdd(s1_7, M4(-7.091e-03, -1.474e-02, -3.124e-02, 8.422e-02, 3.969e-03, -3.473e-02, -7.462e-02, 8.463e-02, -2.426e-02, -2.767e-02, 3.222e-03, -1.197e-01, 3.608e-02, -7.492e-03, 2.443e-02, 3.272e-02), r);\n\tr = MulAdd(s1_8, M4(-3.515e-02, 7.756e-02, 2.323e-02, -2.068e-03, -3.174e-02, 2.793e-02, -9.549e-03, -3.011e-02, 4.602e-02, 1.534e-02, -2.368e-02, 4.073e-02, 7.721e-04, -5.720e-02, -4.916e-02, -3.721e-02), r);\n\tr = MulAdd(s2_0, M4(-1.820e-02, 2.031e-03, 3.517e-02, -8.364e-05, 2.237e-02, -3.581e-02, -1.704e-02, 4.340e-02, -3.280e-02, -4.180e-02, 1.313e-03, 5.753e-02, 6.811e-02, -2.174e-02, -1.557e-02, 4.522e-02), r);\n\tr = MulAdd(s2_1, M4(7.392e-02, -6.128e-03, -1.237e-02, 1.148e-02, -6.618e-03, -7.516e-02, -1.376e-01, 1.592e-02, -7.999e-02, -8.762e-02, 1.362e-01, -9.180e-02, -4.042e-02, -1.606e-02, -1.146e-01, 5.234e-02), r);\n\tr = MulAdd(s2_2, M4(-8.599e-02, 4.130e-02, -5.231e-02, -1.015e-01, -1.451e-02, 1.074e-02, 7.664e-03, -1.946e-03, -2.727e-02, 2.546e-02, -2.923e-02, 1.054e-03, -1.998e-02, 2.887e-02, -2.058e-02, 6.172e-03), r);\n\tr = MulAdd(s2_3, M4(-2.521e-02, 2.920e-02, -2.884e-02, 5.085e-02, 6.387e-03, 1.388e-01, -2.703e-02, 3.090e-02, -3.353e-02, 1.183e-01, 1.101e-01, -2.499e-03, -6.081e-03, 1.831e-02, 7.712e-02, 2.431e-02), r);\n\tr = MulAdd(s2_4, M4(-2.356e-04, 3.388e-01, 1.425e-01, -9.105e-02, 1.227e-01, 2.337e-01, 3.663e-01, -8.101e-02, -1.345e-01, -1.060e-01, 7.330e-02, 7.492e-02, 6.390e-02, -6.327e-02, -1.059e-01, 2.532e-02), r);\n\tr = MulAdd(s2_5, M4(-2.131e-02, 9.620e-02, 2.738e-02, 1.781e-01, 1.186e-02, -3.139e-02, 1.622e-01, 1.332e-02, 1.446e-02, 6.668e-02, -8.837e-03, -2.280e-02, -1.797e-02, -5.522e-02, -6.821e-02, 5.381e-03), r);\n\tr = MulAdd(s2_6, M4(4.255e-03, 2.915e-02, -1.946e-02, -3.726e-02, 6.154e-02, 9.142e-02, -8.030e-02, -7.413e-02, 8.383e-03, -4.201e-02, 3.769e-02, -3.028e-02, 2.283e-02, 3.682e-02, -2.719e-02, -9.290e-02), r);\n\tr = MulAdd(s2_7, M4(-5.389e-02, -6.357e-02, -3.235e-02, 2.059e-02, -4.903e-02, -4.402e-02, 9.317e-02, -9.028e-02, 3.474e-02, -5.685e-02, -4.770e-02, 6.897e-02, -1.592e-03, -5.508e-02, -1.093e-01, -4.087e-02), r);\n\tr = MulAdd(s2_8, M4(-1.201e-02, 2.813e-02, 7.967e-03, -1.412e-02, -4.968e-03, -7.406e-02, -4.071e-02, 5.814e-02, -3.361e-02, 4.794e-02, 2.608e-02, -1.053e-01, 9.912e-03, -1.430e-02, -5.146e-03, -3.337e-02), r);\n\tr = MulAdd(s3_0, M4(5.399e-03, -1.408e-02, -8.520e-03, 1.828e-02, -3.009e-02, 2.867e-02, 4.295e-02, -4.977e-03, 1.006e-02, 7.139e-02, -7.008e-02, 5.330e-02, 1.151e-02, 3.999e-02, 1.587e-01, -1.187e-02), r);\n\tr = MulAdd(s3_1, M4(3.153e-02, -1.296e-03, -2.652e-02, -2.695e-02, -2.573e-02, 6.398e-02, 7.744e-02, -1.045e-01, -3.284e-02, -2.658e-02, -4.192e-02, 2.935e-02, 1.737e-01, 8.090e-02, 6.350e-02, -3.588e-03), r);\n\tr = MulAdd(s3_2, M4(-1.284e-01, 5.570e-03, -8.051e-02, -3.249e-02, 5.010e-02, 2.614e-02, -1.879e-02, 4.068e-02, 8.508e-03, 7.683e-03, -7.388e-02, -2.009e-02, 1.327e-01, 1.299e-02, 1.105e-01, -5.868e-02), r);\n\tr = MulAdd(s3_3, M4(-4.834e-02, 2.597e-03, 2.513e-02, 3.551e-02, 3.814e-03, -2.818e-02, -3.464e-02, 9.673e-02, -4.243e-02, 9.680e-02, 1.421e-01, -6.778e-02, -3.836e-02, -1.824e-01, -1.275e-01, 6.860e-02), r);\n\tr = MulAdd(s3_4, M4(-3.610e-02, 1.469e-01, 9.565e-02, -7.052e-02, 2.388e-01, 3.281e-01, 1.572e-01, 1.141e-01, -5.664e-02, -9.020e-02, -4.204e-02, -2.142e-01, 9.626e-02, -2.115e-01, 1.149e-01, 3.155e-02), r);\n\tr = MulAdd(s3_5, M4(-1.574e-01, 3.679e-02, -9.191e-02, 1.334e-02, 9.225e-02, 7.839e-02, 1.189e-01, 7.757e-02, -6.101e-03, -1.166e-02, -2.972e-02, 1.585e-02, 8.454e-02, 1.571e-03, -1.009e-01, 8.238e-02), r);\n\tr = MulAdd(s3_6, M4(6.617e-03, 4.276e-03, -1.004e-02, 4.877e-03, -6.908e-02, 3.038e-01, 3.642e-03, 4.298e-02, -1.434e-02, -9.701e-03, 1.031e-01, -3.326e-02, -5.609e-02, 7.265e-02, -9.199e-02, -6.786e-02), r);\n\tr = MulAdd(s3_7, M4(-3.657e-02, -3.907e-02, -2.614e-02, 5.053e-02, -4.674e-02, 3.897e-02, 6.179e-02, 6.518e-02, -2.290e-02, 1.168e-01, 2.693e-02, 1.716e-01, -1.123e-03, -1.441e-01, -7.503e-02, -2.011e-01), r);\n\tr = MulAdd(s3_8, M4(3.712e-03, 9.737e-02, 4.266e-02, -1.522e-02, 1.506e-02, 5.124e-02, -1.050e-02, -2.398e-03, -6.193e-02, 6.949e-03, 9.181e-02, -1.413e-01, 3.692e-02, 3.907e-02, -1.620e-02, 4.723e-02), r);\n\tr = MulAdd(s4_0, M4(-3.832e-02, 1.268e-02, 3.637e-02, -6.497e-03, 1.273e-02, -4.926e-03, 1.769e-02, 2.792e-02, 3.209e-02, 1.789e-02, -1.957e-02, 5.305e-03, -7.697e-02, 5.508e-02, 6.284e-02, 8.246e-02), r);\n\tr = MulAdd(s4_1, M4(1.266e-01, 5.521e-03, 7.739e-02, -3.385e-02, -7.007e-02, -1.094e-01, -8.701e-02, -1.716e-02, 3.682e-02, 2.189e-02, -3.292e-03, 4.518e-02, 5.096e-02, 3.030e-02, -2.765e-02, 1.187e-02), r);\n\tr = MulAdd(s4_2, M4(8.139e-02, -2.641e-03, 4.335e-02, 5.606e-02, -2.860e-02, -2.659e-02, -3.553e-02, -4.523e-02, 6.986e-03, 3.482e-02, 1.516e-02, 3.141e-04, -2.765e-02, 9.525e-02, -2.133e-03, 6.335e-02), r);\n\tr = MulAdd(s4_3, M4(-1.219e-02, -4.573e-02, -7.869e-02, -4.889e-02, 5.090e-02, 6.583e-02, -1.673e-02, -6.859e-02, 2.518e-02, 9.782e-02, 1.145e-01, 3.710e-03, 3.850e-02, 3.397e-02, -8.315e-03, 1.324e-01), r);\n\tr = MulAdd(s4_4, M4(2.313e-01, 7.508e-02, 1.163e-01, 1.122e-01, 2.720e-01, -7.170e-02, 4.317e-03, -1.224e-01, -5.580e-02, 6.872e-02, 6.504e-02, 2.753e-03, 1.016e-01, 1.616e-01, 1.761e-02, 1.978e-01), r);\n\tr = MulAdd(s4_5, M4(6.699e-02, -1.902e-03, 6.323e-02, 2.092e-02, -1.227e-01, 5.553e-02, -1.090e-01, -9.668e-02, 5.901e-02, -4.978e-02, 1.158e-01, 3.121e-02, 3.099e-02, -4.958e-02, 1.446e-03, -1.305e-02), r);\n\tr = MulAdd(s4_6, M4(1.685e-02, 4.815e-02, -7.986e-02, -5.999e-02, -1.223e-02, -7.677e-02, 1.721e-02, -1.356e-03, -1.691e-03, 6.180e-02, 1.034e-02, 6.818e-02, 4.716e-02, 5.924e-02, -5.670e-02, -2.003e-02), r);\n\tr = MulAdd(s4_7, M4(-1.652e-02, -4.076e-02, 1.390e-02, -3.530e-02, -6.357e-02, 1.010e-01, -1.276e-02, -1.293e-01, 2.760e-02, -2.235e-02, 7.857e-02, -1.645e-01, 6.736e-03, -4.910e-02, -1.251e-01, 4.516e-02), r);\n\tr = MulAdd(s4_8, M4(1.493e-02, 1.621e-02, 1.737e-02, -6.024e-02, -6.386e-02, 6.611e-02, 1.032e-02, -2.474e-02, 1.154e-01, -1.667e-02, -1.522e-02, 1.019e-01, 2.936e-02, -1.006e-02, 8.141e-03, -7.483e-02), r);\n\tr = MulAdd(s5_0, M4(3.462e-02, 4.645e-02, -3.133e-02, -5.007e-02, 1.532e-02, 3.076e-02, 4.806e-02, 4.797e-02, 3.307e-02, -3.395e-02, -2.991e-02, 1.428e-02, 6.843e-03, 9.166e-02, 4.885e-02, -1.195e-01), r);\n\tr = MulAdd(s5_1, M4(1.708e-01, -5.167e-02, -2.132e-01, 1.494e-01, -6.992e-02, -3.423e-02, 5.964e-03, -4.237e-02, 8.228e-04, -9.467e-03, -9.449e-02, 2.903e-02, 1.024e-01, -4.823e-02, 2.013e-01, 9.347e-02), r);\n\tr = MulAdd(s5_2, M4(-5.565e-02, 3.143e-02, -7.558e-02, 1.739e-02, 3.807e-03, 4.152e-02, -4.658e-03, -3.292e-02, 2.328e-02, -2.435e-02, -3.833e-02, -2.558e-02, -9.393e-02, 2.188e-03, -1.499e-01, 9.052e-02), r);\n\tr = MulAdd(s5_3, M4(9.999e-02, 3.884e-02, 1.246e-02, -2.378e-01, 3.749e-02, -8.477e-02, -1.596e-01, 5.331e-02, 7.443e-02, -2.068e-03, 7.423e-02, 2.302e-02, -1.746e-02, -8.780e-02, 2.456e-02, 2.892e-02), r);\n\tr = MulAdd(s5_4, M4(1.431e-01, 2.626e-01, 1.768e-03, 2.086e-01, 1.998e-01, 1.039e-01, 1.180e-02, -3.161e-01, -5.660e-02, -7.840e-02, 3.081e-02, -4.673e-02, 1.560e-01, 1.627e-02, -6.563e-02, -2.814e-02), r);\n\tr = MulAdd(s5_5, M4(1.096e-01, -3.109e-02, -2.397e-02, -1.734e-01, -6.526e-02, 3.306e-03, 8.834e-02, -1.194e-01, -1.396e-03, -5.618e-02, 7.349e-02, -4.823e-03, -2.177e-02, -5.782e-02, -1.893e-01, 2.426e-02), r);\n\tr = MulAdd(s5_6, M4(-2.352e-03, -3.160e-02, -1.185e-02, -7.712e-02, -3.358e-02, 4.870e-02, 4.227e-02, -2.398e-02, 1.136e-01, -1.042e-01, 2.561e-02, -9.641e-02, -2.812e-02, 2.797e-02, -1.537e-02, 5.092e-02), r);\n\tr = MulAdd(s5_7, M4(3.419e-02, -2.995e-02, -5.608e-03, 6.518e-02, 1.412e-03, 5.324e-02, -2.010e-02, -6.216e-02, -2.328e-02, -7.162e-02, 3.648e-03, -2.010e-03, 6.645e-02, -2.244e-02, -4.760e-02, -5.183e-02), r);\n\tr = MulAdd(s5_8, M4(5.211e-02, -2.610e-02, -1.471e-02, -9.500e-02, -5.246e-02, -6.899e-02, 1.645e-02, 1.771e-02, 1.832e-02, -1.096e-01, -1.150e-02, 2.276e-02, 1.380e-02, 2.443e-02, 3.817e-03, -1.092e-02), r);\n\tr = MulAdd(s6_0, M4(-3.862e-03, -4.457e-02, 3.379e-02, -4.069e-02, -1.630e-02, -1.174e-01, -8.180e-02, 1.008e-01, -1.150e-02, -2.984e-02, 4.478e-02, -7.575e-02, -2.913e-03, -2.517e-02, 1.156e-02, -2.614e-02), r);\n\tr = MulAdd(s6_1, M4(-1.031e-02, 8.463e-02, -5.762e-02, 6.699e-02, 5.885e-02, -7.425e-02, 3.812e-01, -1.546e-01, 1.595e-01, 3.535e-02, 6.493e-02, 6.501e-02, 2.222e-01, -2.002e-02, 2.322e-01, -1.815e-01), r);\n\tr = MulAdd(s6_2, M4(-6.760e-02, -2.382e-02, -5.488e-03, -4.010e-02, -2.833e-02, 2.207e-02, 4.522e-02, -8.453e-04, 5.499e-02, -7.280e-04, 9.686e-02, -3.247e-02, -3.098e-02, 5.225e-03, 2.746e-03, 4.568e-03), r);\n\tr = MulAdd(s6_3, M4(-2.646e-02, -5.002e-02, -5.677e-02, 2.103e-02, -5.503e-02, 1.762e-01, 2.568e-01, -3.145e-02, -1.158e-01, -2.686e-02, -2.261e-03, 1.432e-01, -5.379e-02, 1.851e-01, -1.858e-01, 1.018e-01), r);\n\tr = MulAdd(s6_4, M4(5.892e-02, 1.199e-01, 4.789e-03, -1.124e-02, 5.058e-03, -4.334e-02, -1.585e-01, -2.955e-02, 3.912e-02, 1.930e-02, 3.203e-01, -1.101e-01, 3.556e-02, -1.962e-01, -7.748e-03, 5.015e-02), r);\n\tr = MulAdd(s6_5, M4(1.142e-02, -9.138e-02, 1.035e-02, 3.228e-02, 7.962e-03, -5.724e-02, 1.176e-01, -8.011e-02, 7.068e-02, 4.782e-02, 5.572e-02, 7.706e-03, -7.708e-02, -1.446e-02, -1.120e-01, 9.828e-02), r);\n\tr = MulAdd(s6_6, M4(-9.079e-02, 1.029e-02, -1.688e-02, -7.920e-03, 2.706e-02, -5.572e-02, -2.741e-02, 2.909e-02, -5.032e-02, 1.062e-01, -3.936e-03, -3.121e-03, 6.855e-02, 8.418e-03, -4.407e-02, 2.442e-02), r);\n\tr = MulAdd(s6_7, M4(-5.259e-02, -3.667e-02, 1.936e-02, -1.913e-02, -1.692e-01, -3.561e-02, 6.175e-03, -1.379e-01, 8.600e-03, -1.716e-02, -2.808e-02, -7.197e-02, 1.118e-01, 7.306e-02, 4.102e-04, -1.042e-02), r);\n\tr = MulAdd(s6_8, M4(-2.531e-02, -5.164e-02, 5.493e-02, 4.854e-03, 4.111e-02, -7.896e-03, -3.981e-02, -1.526e-02, -2.048e-02, 7.083e-02, 4.344e-03, 3.989e-02, -1.630e-02, -1.826e-02, -8.093e-02, -6.308e-04), r);\n\tr = MulAdd(s7_0, M4(3.179e-02, -3.518e-02, 8.211e-03, -3.691e-02, -4.746e-02, -5.822e-02, 5.080e-03, 4.791e-02, -8.146e-02, -4.501e-02, -8.433e-02, 5.157e-02, -5.932e-03, -7.118e-02, 8.522e-02, -2.141e-02), r);\n\tr = MulAdd(s7_1, M4(-1.645e-02, 6.074e-02, -4.580e-02, 1.038e-01, 1.166e-03, 7.635e-02, 8.076e-02, 7.206e-02, -3.724e-02, -2.647e-02, -1.186e-01, -2.410e-01, 3.958e-02, 3.122e-02, 6.193e-02, -2.849e-02), r);\n\tr = MulAdd(s7_2, M4(-4.077e-02, -6.603e-02, 1.554e-02, -9.247e-02, 4.797e-02, 1.116e-02, 5.387e-02, 6.568e-02, 9.707e-02, -1.168e-01, -2.311e-02, -6.518e-02, 5.924e-02, 2.867e-02, 1.313e-02, 3.773e-02), r);\n\tr = MulAdd(s7_3, M4(-3.563e-03, 7.289e-03, 2.709e-02, -4.880e-02, 3.392e-02, 4.283e-02, -5.466e-02, 1.689e-01, -2.436e-01, 1.429e-01, 2.042e-02, -8.785e-03, 3.645e-02, -5.496e-02, -9.380e-02, 2.743e-02), r);\n\tr = MulAdd(s7_4, M4(-1.373e-02, 2.219e-01, 1.243e-01, -7.018e-03, 5.706e-02, 9.000e-02, 6.202e-02, 5.073e-02, 6.981e-02, 1.098e-01, 6.312e-02, -2.690e-01, -6.929e-02, -1.420e-01, -4.161e-02, 4.677e-02), r);\n\tr = MulAdd(s7_5, M4(8.620e-03, -1.344e-01, 1.955e-02, 3.364e-02, 2.047e-02, -2.089e-02, 2.387e-02, 3.861e-02, 8.585e-02, 1.298e-01, 9.145e-02, 1.203e-01, 2.402e-02, 2.671e-02, -5.028e-02, 2.961e-02), r);\n\tr = MulAdd(s7_6, M4(-9.698e-02, -1.387e-01, -4.587e-02, -9.452e-02, -1.401e-02, 6.006e-02, -2.798e-02, -2.705e-02, 1.314e-02, -8.691e-02, 1.942e-01, -6.650e-02, 1.515e-02, -5.807e-02, -1.731e-02, 1.272e-02), r);\n\tr = MulAdd(s7_7, M4(5.433e-02, -1.554e-01, 3.201e-02, -4.814e-02, -1.103e-02, -2.647e-02, -2.818e-02, -1.187e-01, -4.173e-02, -4.040e-02, 1.017e-01, 1.150e-01, 4.694e-02, 5.182e-02, 2.534e-02, 6.666e-02), r);\n\tr = MulAdd(s7_8, M4(-1.063e-01, -1.207e-01, -1.622e-02, -1.400e-01, 1.736e-02, -2.373e-02, -4.898e-02, -7.461e-03, -1.487e-01, 1.490e-01, 6.622e-02, 6.458e-02, -3.789e-02, -8.266e-03, -4.094e-03, -2.403e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 8.587e-03, 7.166e-03, 8.947e-03, 4.751e-03 };\n\tr = MulAdd(s0_0, M4(-2.573e-02, 7.161e-03, -1.394e-01, 1.384e-01, -3.247e-03, 1.157e-02, 3.153e-02, 8.984e-02, -3.248e-02, -2.035e-02, -1.046e-01, 3.980e-03, -3.628e-02, -1.367e-01, 1.576e-02, -3.332e-04), r);\n\tr = MulAdd(s0_1, M4(4.613e-02, -1.812e-01, -1.357e-01, -1.675e-01, -6.227e-02, -1.151e-01, 1.651e-01, -2.293e-01, -9.434e-03, -1.326e-02, -4.655e-02, 1.017e-01, 1.309e-01, -1.708e-01, -1.040e-01, 9.153e-02), r);\n\tr = MulAdd(s0_2, M4(3.717e-03, -7.694e-02, 4.162e-02, 5.294e-03, -7.090e-04, 1.402e-01, 4.746e-01, 3.394e-01, -8.056e-03, 1.615e-01, -1.601e-01, -1.504e-01, -3.151e-02, -1.598e-01, 8.280e-02, -7.239e-02), r);\n\tr = MulAdd(s0_3, M4(1.435e-01, -6.425e-02, 8.871e-02, -3.297e-03, -6.458e-03, -7.106e-02, 6.263e-02, 6.034e-02, -2.182e-02, -4.167e-02, 1.302e-01, -1.225e-01, -4.979e-02, -1.993e-02, -9.899e-02, 3.386e-02), r);\n\tr = MulAdd(s0_4, M4(1.124e-01, 9.458e-02, 9.471e-02, -3.604e-02, 4.534e-02, -1.150e-01, 3.417e-01, -2.311e-01, -3.389e-01, -6.695e-02, -2.336e-01, 1.636e-01, -8.270e-02, -1.108e-01, 3.848e-02, 1.033e-01), r);\n\tr = MulAdd(s0_5, M4(-4.395e-02, -3.300e-02, -1.609e-02, 8.713e-02, 1.459e-01, 5.272e-02, -1.280e-02, 1.466e-01, 1.860e-01, 9.840e-02, -5.078e-02, 2.870e-01, -6.188e-03, 1.225e-02, -9.529e-04, -3.990e-02), r);\n\tr = MulAdd(s0_6, M4(-9.568e-02, -3.502e-02, 1.392e-02, -7.841e-02, -5.583e-02, -7.886e-02, 1.558e-01, 6.859e-03, -7.477e-02, 5.847e-02, -6.967e-02, -1.716e-02, 6.263e-02, 4.919e-02, -4.312e-02, 1.140e-01), r);\n\tr = MulAdd(s0_7, M4(-4.097e-02, 7.478e-03, -4.635e-02, 1.104e-01, -4.515e-02, 2.753e-02, 8.515e-02, -7.188e-02, 2.395e-01, -2.184e-01, 8.484e-02, -3.227e-02, 1.199e-01, 9.138e-03, -3.123e-02, -1.577e-01), r);\n\tr = MulAdd(s0_8, M4(-8.219e-03, -1.490e-02, -8.796e-03, -2.059e-02, -5.515e-02, -6.055e-02, 7.589e-02, -2.023e-01, -4.113e-02, 1.042e-01, -1.265e-02, -1.381e-01, 1.343e-02, 4.605e-02, -3.767e-03, 1.201e-03), r);\n\tr = MulAdd(s1_0, M4(2.016e-04, -1.245e-02, 6.322e-02, -1.525e-02, 2.221e-02, 1.095e-02, 1.194e-02, 9.600e-02, -3.933e-02, 1.940e-02, 3.535e-02, 2.109e-02, -7.410e-03, -9.155e-02, -3.142e-02, -1.542e-02), r);\n\tr = MulAdd(s1_1, M4(-6.849e-02, -1.181e-02, -6.625e-02, -5.465e-02, 9.366e-03, -6.903e-02, 9.370e-03, 2.291e-02, 7.970e-02, -9.807e-02, -5.992e-02, -2.611e-02, 8.352e-02, -3.817e-02, -2.603e-01, -9.509e-02), r);\n\tr = MulAdd(s1_2, M4(-3.822e-02, 1.860e-03, 1.496e-02, 3.446e-02, -4.222e-02, -5.801e-02, -1.759e-02, -3.728e-02, -3.129e-02, -6.919e-02, 3.399e-02, 8.443e-02, -1.116e-02, -1.891e-01, 4.978e-02, -1.214e-01), r);\n\tr = MulAdd(s1_3, M4(6.401e-02, -1.500e-02, 4.268e-02, 6.755e-02, -5.093e-02, 4.304e-03, 3.347e-02, 6.392e-02, -7.130e-03, -7.521e-02, -5.611e-02, 2.549e-02, 5.164e-02, -6.756e-02, -5.487e-02, -8.458e-02), r);\n\tr = MulAdd(s1_4, M4(-1.466e-01, 1.242e-01, -1.156e-01, 5.293e-02, 8.086e-02, 9.438e-02, 8.676e-02, -5.026e-02, -6.387e-02, -3.977e-02, -2.101e-01, 4.470e-02, -1.718e-01, 8.650e-02, -6.104e-02, 2.093e-01), r);\n\tr = MulAdd(s1_5, M4(7.186e-03, 1.095e-01, -3.019e-02, -7.367e-02, 4.784e-02, -2.984e-02, 1.548e-01, 4.014e-02, -2.274e-02, -6.932e-02, 8.882e-03, -8.839e-02, 1.595e-02, -8.845e-02, -3.382e-02, 2.831e-02), r);\n\tr = MulAdd(s1_6, M4(7.803e-02, -3.916e-02, 4.040e-02, -8.003e-03, -2.292e-02, 3.720e-04, 2.760e-04, -9.340e-02, -8.947e-03, 3.776e-02, 1.220e-02, -1.332e-02, 3.498e-02, 8.433e-03, -4.860e-03, 2.310e-02), r);\n\tr = MulAdd(s1_7, M4(9.365e-02, 5.603e-02, 5.709e-02, -2.146e-02, 3.112e-02, 5.482e-02, -1.228e-01, -1.350e-02, -1.083e-01, -6.226e-02, -3.162e-02, 1.401e-01, -9.468e-02, 2.175e-02, -2.463e-02, 1.193e-01), r);\n\tr = MulAdd(s1_8, M4(-4.383e-02, -1.938e-03, 4.882e-02, 1.799e-02, -2.591e-02, -4.417e-03, -1.007e-02, -9.185e-03, 8.383e-02, 6.579e-02, -8.530e-03, -5.193e-02, 2.283e-02, -1.385e-02, -2.455e-02, 3.144e-02), r);\n\tr = MulAdd(s2_0, M4(1.308e-02, -4.129e-02, 6.100e-02, -2.254e-02, 3.781e-03, -3.459e-03, -2.241e-02, 1.786e-02, 1.050e-01, -9.929e-03, 4.915e-02, 2.106e-02, 1.135e-02, 1.480e-02, 7.930e-02, -2.687e-02), r);\n\tr = MulAdd(s2_1, M4(2.061e-02, 1.022e-01, 4.907e-03, -2.897e-04, -4.002e-02, 1.392e-02, 4.454e-02, 1.162e-01, -5.265e-02, -3.792e-02, -1.516e-01, -5.061e-02, -3.113e-03, 5.001e-02, 4.598e-02, 4.826e-02), r);\n\tr = MulAdd(s2_2, M4(-3.237e-02, -2.990e-02, -2.588e-02, -4.802e-02, -3.918e-02, 8.142e-03, -2.035e-02, 4.014e-02, 1.608e-02, -1.177e-01, 7.554e-02, 7.580e-03, -4.732e-03, 7.434e-02, -1.306e-02, -3.381e-02), r);\n\tr = MulAdd(s2_3, M4(-1.094e-02, -2.189e-02, 3.220e-02, -1.951e-02, -3.567e-02, 5.732e-02, -1.381e-02, 4.216e-02, 1.725e-01, 2.610e-02, 9.859e-02, -1.376e-02, -1.063e-02, -6.666e-02, 1.189e-01, -3.116e-02), r);\n\tr = MulAdd(s2_4, M4(2.312e-02, -3.798e-02, 2.498e-01, -2.597e-02, -1.083e-01, -4.158e-02, -5.762e-02, -1.442e-01, -1.496e-01, 2.726e-01, 4.038e-02, 2.902e-01, 1.832e-01, 3.059e-01, 1.669e-01, 8.272e-02), r);\n\tr = MulAdd(s2_5, M4(5.626e-02, 2.406e-02, -4.238e-03, -1.034e-01, 2.738e-02, -6.185e-02, -1.111e-02, 6.729e-02, 3.129e-02, 1.094e-01, 4.609e-02, -9.522e-02, -2.542e-03, 3.714e-02, 7.407e-02, 2.085e-02), r);\n\tr = MulAdd(s2_6, M4(3.705e-02, 2.203e-02, -4.068e-03, -4.938e-03, 3.399e-02, 5.753e-02, -4.125e-02, 6.187e-03, 1.006e-03, -2.532e-02, -7.392e-02, -4.208e-02, 4.891e-04, 4.096e-02, -8.405e-03, -8.183e-02), r);\n\tr = MulAdd(s2_7, M4(-5.748e-02, 1.425e-02, -4.628e-02, -3.472e-02, -8.695e-02, 3.295e-02, -1.161e-04, 7.621e-02, 2.446e-01, -2.509e-02, 4.684e-02, 3.021e-02, 1.064e-01, 3.324e-02, -5.020e-02, 3.505e-02), r);\n\tr = MulAdd(s2_8, M4(1.471e-01, -8.890e-03, -2.134e-02, -5.017e-02, 1.289e-01, 1.870e-02, -1.334e-03, 6.631e-03, -5.090e-02, -2.298e-02, 8.366e-03, 4.866e-02, 2.154e-02, 2.739e-03, -2.546e-02, 1.433e-02), r);\n\tr = MulAdd(s3_0, M4(5.419e-05, -3.101e-02, 1.352e-02, 5.712e-03, 1.911e-02, -5.360e-02, -3.807e-02, 2.918e-02, 6.095e-02, 6.460e-02, 4.945e-02, -3.199e-02, -2.867e-02, -3.446e-02, 3.003e-02, 9.988e-03), r);\n\tr = MulAdd(s3_1, M4(3.341e-02, 4.134e-02, 7.844e-02, 5.281e-03, 3.089e-02, 8.452e-04, -8.457e-03, -3.729e-02, -7.936e-02, -7.109e-02, -9.334e-03, -1.782e-03, 6.665e-02, 8.836e-02, -6.156e-02, -2.519e-03), r);\n\tr = MulAdd(s3_2, M4(3.780e-02, -7.643e-02, 7.086e-02, -1.028e-01, -6.268e-02, -2.949e-02, 3.898e-02, 3.796e-02, 1.433e-02, 5.399e-02, -1.050e-02, -1.622e-02, 6.334e-02, -1.028e-01, -1.726e-02, -4.961e-02), r);\n\tr = MulAdd(s3_3, M4(3.620e-03, 2.926e-02, 3.623e-02, -3.697e-02, -1.348e-01, -1.576e-02, 5.374e-03, 1.145e-01, 9.554e-02, -4.427e-03, 1.754e-01, -1.602e-01, -4.351e-02, -9.182e-03, 2.175e-03, 1.934e-01), r);\n\tr = MulAdd(s3_4, M4(1.113e-02, 3.872e-02, 8.718e-02, 2.359e-01, -2.204e-02, 1.151e-01, 8.256e-02, -1.061e-02, -1.436e-01, 2.401e-01, -1.791e-01, 6.773e-02, 1.237e-01, 6.238e-03, 8.617e-02, 1.325e-01), r);\n\tr = MulAdd(s3_5, M4(6.094e-02, -4.889e-02, -4.181e-02, -5.091e-02, -1.361e-01, 5.353e-02, -1.405e-02, -2.197e-02, -1.387e-02, 1.213e-01, -4.815e-02, 5.208e-02, -8.138e-03, 8.380e-02, 9.473e-02, -2.112e-02), r);\n\tr = MulAdd(s3_6, M4(3.975e-02, 2.303e-02, -2.360e-02, -4.115e-02, -1.806e-01, 6.812e-02, -5.047e-03, 3.640e-02, 4.126e-02, -1.231e-02, -1.294e-02, -1.101e-01, -5.582e-02, 4.136e-02, 5.346e-02, 1.579e-01), r);\n\tr = MulAdd(s3_7, M4(5.396e-03, -1.426e-02, -4.466e-03, 1.801e-02, 1.972e-01, 4.674e-02, -3.575e-03, -2.665e-02, 6.105e-02, 2.017e-02, 6.524e-02, -8.115e-03, 2.212e-01, 2.100e-03, -4.350e-02, 1.854e-02), r);\n\tr = MulAdd(s3_8, M4(-6.050e-02, -1.345e-02, -6.604e-03, -5.172e-02, -8.451e-02, 3.536e-03, 7.087e-02, 5.787e-02, -6.050e-02, -4.158e-02, -1.844e-03, 2.855e-02, -4.274e-03, 1.703e-02, -8.310e-03, -2.246e-02), r);\n\tr = MulAdd(s4_0, M4(-4.596e-02, -1.015e-01, 2.650e-02, 7.098e-02, 3.649e-02, 4.925e-02, 5.334e-02, -8.714e-02, 8.703e-02, 4.129e-02, -2.322e-02, -1.195e-01, -7.584e-02, -5.361e-02, 1.496e-02, 1.593e-02), r);\n\tr = MulAdd(s4_1, M4(4.722e-03, -4.852e-02, 2.723e-02, -2.235e-02, -2.773e-02, 1.028e-01, -1.812e-02, 1.027e-01, -2.067e-02, 1.548e-02, 8.800e-04, -8.573e-02, -9.428e-02, 2.252e-01, -4.724e-02, 9.352e-03), r);\n\tr = MulAdd(s4_2, M4(7.280e-02, -2.637e-03, 4.746e-02, -1.859e-02, -4.016e-02, 9.909e-02, 9.699e-03, 5.240e-02, 1.797e-02, 1.215e-02, 1.597e-02, -4.656e-02, -3.596e-02, 7.321e-02, 4.878e-02, -7.422e-02), r);\n\tr = MulAdd(s4_3, M4(-7.108e-02, 4.416e-02, -1.583e-01, 2.224e-02, 1.006e-02, 3.720e-02, -4.746e-02, -2.819e-02, 6.086e-02, -5.138e-02, 9.156e-02, -1.485e-01, -9.078e-02, -1.576e-02, -1.673e-01, -9.070e-02), r);\n\tr = MulAdd(s4_4, M4(-9.867e-02, -5.303e-03, -1.966e-01, -1.493e-02, -5.443e-02, -1.451e-01, -9.871e-02, 3.058e-01, -1.140e-01, 9.568e-02, 7.999e-02, -2.637e-02, 2.875e-02, 1.180e-01, -7.128e-02, -4.867e-02), r);\n\tr = MulAdd(s4_5, M4(3.243e-02, -1.208e-01, -3.402e-02, -2.245e-03, -4.308e-02, 1.428e-01, -5.843e-02, 9.481e-02, 9.735e-02, -1.653e-02, 9.207e-02, 1.336e-02, -6.181e-03, -8.522e-02, 2.598e-02, -3.312e-02), r);\n\tr = MulAdd(s4_6, M4(1.656e-01, 3.756e-03, 7.547e-02, 7.159e-03, -4.749e-02, -4.120e-02, 4.557e-03, -2.466e-02, -4.164e-02, 1.486e-02, -4.251e-02, -4.409e-02, 1.866e-02, 9.305e-03, 1.946e-02, -3.284e-02), r);\n\tr = MulAdd(s4_7, M4(-2.038e-01, 3.747e-02, -3.268e-02, 1.458e-01, -9.368e-02, 4.332e-02, -9.126e-03, 5.230e-02, 2.123e-02, -2.027e-02, -1.157e-02, 5.292e-03, -1.271e-01, 6.416e-02, -3.124e-02, 9.119e-02), r);\n\tr = MulAdd(s4_8, M4(-1.941e-03, 1.871e-02, -3.535e-02, -5.836e-03, -1.567e-01, -6.096e-02, 8.461e-02, -3.906e-02, -2.157e-03, 4.560e-04, -3.187e-02, -6.424e-02, 9.766e-02, -3.718e-02, -8.667e-03, -5.434e-02), r);\n\tr = MulAdd(s5_0, M4(-1.437e-02, -4.311e-02, 1.089e-01, -4.203e-02, 1.390e-02, -5.211e-02, 1.092e-01, -7.442e-02, 4.226e-02, 3.647e-02, -8.262e-03, 4.980e-03, 1.170e-01, -5.219e-03, -5.846e-02, 4.702e-03), r);\n\tr = MulAdd(s5_1, M4(-6.668e-02, 1.068e-01, 7.230e-02, 4.628e-02, -2.293e-02, -9.088e-03, 4.155e-02, 4.672e-02, 3.436e-02, 2.117e-02, -6.884e-03, -4.562e-02, -2.062e-01, -2.815e-02, -4.868e-02, -8.531e-02), r);\n\tr = MulAdd(s5_2, M4(-2.891e-02, 1.159e-01, -3.923e-02, -6.473e-02, -6.329e-02, 1.374e-01, -6.642e-02, 2.313e-02, 6.638e-02, -4.668e-02, -3.050e-02, -3.969e-02, 5.642e-02, 2.006e-02, 5.561e-02, -1.101e-02), r);\n\tr = MulAdd(s5_3, M4(7.491e-02, -3.847e-02, 1.783e-01, -2.926e-01, -8.981e-02, 1.206e-02, -6.551e-02, 1.380e-01, -1.125e-02, 7.559e-02, -1.997e-02, 1.007e-01, -1.883e-02, -1.027e-02, -2.135e-01, -3.129e-01), r);\n\tr = MulAdd(s5_4, M4(1.314e-01, 8.873e-02, 7.119e-02, 2.532e-02, 9.858e-02, -1.783e-01, 1.628e-01, -2.206e-02, 2.891e-02, 9.753e-02, 1.155e-01, -7.199e-03, 2.056e-03, -6.549e-02, -1.366e-01, 2.333e-03), r);\n\tr = MulAdd(s5_5, M4(-1.068e-02, 1.411e-01, -4.501e-02, 2.911e-02, 9.187e-02, 1.723e-02, -5.198e-02, 1.612e-01, 9.846e-02, -3.100e-02, -2.407e-02, 6.244e-02, 3.320e-02, 9.104e-03, 9.100e-03, -6.003e-02), r);\n\tr = MulAdd(s5_6, M4(1.696e-02, -3.728e-02, -8.617e-03, 8.058e-03, -3.662e-02, 2.435e-02, 1.711e-02, 3.828e-02, 7.287e-03, -3.812e-02, -1.860e-02, 3.019e-02, -1.127e-02, 6.945e-03, -1.815e-02, 1.496e-02), r);\n\tr = MulAdd(s5_7, M4(9.003e-02, -5.317e-02, 2.473e-02, 1.538e-03, 3.161e-02, 4.279e-02, 6.593e-03, -1.882e-01, -1.911e-02, -2.540e-02, 2.651e-02, 4.482e-02, -4.051e-02, 3.864e-02, -1.276e-02, -6.016e-02), r);\n\tr = MulAdd(s5_8, M4(3.874e-02, -2.374e-02, -1.513e-04, -1.703e-03, 9.969e-02, -5.193e-02, 3.489e-02, 8.153e-03, 2.798e-02, 2.703e-02, -2.741e-02, 5.867e-02, -3.113e-02, 3.298e-02, 2.207e-02, 5.378e-02), r);\n\tr = MulAdd(s6_0, M4(-4.333e-02, -2.164e-02, -1.891e-02, -2.478e-02, -8.467e-02, -2.836e-02, 2.656e-02, 2.228e-01, 2.438e-02, -5.832e-02, -5.970e-03, -2.624e-02, -7.549e-02, -8.601e-02, 3.399e-02, 2.754e-02), r);\n\tr = MulAdd(s6_1, M4(3.181e-02, 9.488e-02, 8.526e-02, 2.832e-02, 9.164e-02, 9.265e-02, 2.801e-02, 6.820e-03, 2.016e-02, 4.320e-02, 1.761e-02, 8.020e-02, -2.823e-03, 1.213e-01, -5.059e-03, 1.175e-02), r);\n\tr = MulAdd(s6_2, M4(-3.608e-02, 9.750e-03, -5.425e-02, -1.999e-02, 2.937e-02, 1.068e-01, 1.056e-01, 6.960e-02, -5.103e-03, -1.125e-02, -3.947e-02, -1.366e-02, -2.286e-02, 2.616e-02, 3.017e-02, 2.436e-02), r);\n\tr = MulAdd(s6_3, M4(-2.321e-02, -5.012e-03, -5.651e-02, 6.494e-02, 6.039e-02, -1.996e-02, 1.684e-01, -1.389e-01, 8.584e-03, -5.589e-02, -8.010e-02, -1.454e-02, -1.799e-01, 6.040e-02, -2.547e-04, 1.265e-02), r);\n\tr = MulAdd(s6_4, M4(2.273e-02, 5.835e-02, 4.878e-02, -1.032e-01, -1.307e-01, 3.118e-01, 1.039e-01, 5.808e-02, 7.333e-02, -6.361e-02, 8.217e-02, -2.615e-02, -2.997e-02, 2.579e-01, -2.016e-01, -7.790e-03), r);\n\tr = MulAdd(s6_5, M4(3.064e-02, -1.017e-01, -3.927e-02, -3.303e-04, -1.426e-02, -1.747e-01, -5.337e-02, 3.372e-02, -3.211e-02, 7.596e-02, -2.422e-02, -3.888e-02, 3.963e-03, 1.547e-01, 1.863e-02, 1.161e-02), r);\n\tr = MulAdd(s6_6, M4(-6.109e-02, 5.664e-03, 4.154e-02, 3.335e-02, 1.658e-01, -8.779e-02, 4.245e-02, -9.629e-03, 1.819e-03, -1.133e-02, 5.707e-02, 2.083e-02, -7.984e-03, 3.163e-02, 3.429e-02, 7.658e-02), r);\n\tr = MulAdd(s6_7, M4(5.135e-02, -1.260e-02, 6.356e-03, -7.248e-03, -1.947e-01, -3.594e-02, 1.387e-02, 1.234e-01, 4.695e-02, -1.174e-02, 6.543e-02, -8.830e-02, -6.473e-02, 9.215e-02, -8.994e-03, -5.335e-02), r);\n\tr = MulAdd(s6_8, M4(2.110e-02, 9.331e-02, -2.727e-03, 8.553e-03, 1.118e-01, 1.612e-02, 3.993e-02, -6.754e-02, -7.692e-02, 3.361e-02, 2.152e-02, 2.288e-02, -1.812e-01, 1.344e-02, -2.324e-02, 1.259e-01), r);\n\tr = MulAdd(s7_0, M4(-3.143e-02, 1.270e-02, 2.812e-03, -3.664e-02, -3.640e-02, -5.367e-02, -6.271e-02, 7.864e-02, 3.176e-02, -9.713e-02, -1.309e-01, 1.282e-01, -9.484e-03, -7.186e-02, -5.679e-02, 6.335e-03), r);\n\tr = MulAdd(s7_1, M4(2.077e-02, 4.741e-02, 6.566e-02, 2.128e-02, 1.068e-02, -4.366e-02, 3.465e-03, -7.231e-02, -5.704e-04, 6.338e-02, -6.195e-03, 9.465e-02, -5.166e-02, 4.834e-03, -1.855e-02, 1.058e-01), r);\n\tr = MulAdd(s7_2, M4(2.486e-03, -2.980e-02, -3.408e-02, -1.577e-02, -1.064e-02, -1.997e-02, 2.767e-02, 4.654e-03, 9.022e-03, -1.070e-01, 1.364e-02, 5.342e-02, 1.118e-02, -5.942e-02, 6.186e-02, 3.055e-02), r);\n\tr = MulAdd(s7_3, M4(1.410e-02, -4.275e-02, 7.937e-02, 2.648e-02, -8.021e-03, -1.177e-02, 3.691e-02, 1.041e-01, 4.750e-02, -1.635e-02, -1.884e-02, -2.387e-01, -1.456e-02, 1.608e-02, -9.824e-03, -8.208e-02), r);\n\tr = MulAdd(s7_4, M4(8.184e-02, 1.641e-01, 5.635e-02, -1.439e-01, -1.819e-01, 1.210e-01, -6.449e-02, -5.453e-02, 1.468e-01, 2.512e-01, -6.038e-02, 8.986e-02, -2.204e-01, 1.205e-01, -3.414e-02, -7.794e-03), r);\n\tr = MulAdd(s7_5, M4(1.883e-02, -7.130e-04, 9.819e-02, 9.457e-02, -1.506e-02, 2.341e-03, -2.388e-02, -4.613e-02, 1.039e-01, 6.381e-02, -1.535e-01, -1.390e-01, 1.277e-02, 1.570e-01, 2.231e-02, -1.025e-02), r);\n\tr = MulAdd(s7_6, M4(-1.148e-01, 3.073e-02, -1.026e-01, 2.518e-01, -5.945e-03, 2.623e-02, -1.987e-05, 1.573e-02, 2.702e-03, -7.482e-02, -1.182e-02, 1.288e-02, 2.059e-02, -1.404e-02, 2.169e-03, 1.898e-02), r);\n\tr = MulAdd(s7_7, M4(7.418e-02, -1.265e-01, -1.586e-02, 1.307e-01, 2.444e-03, 2.544e-02, 2.896e-02, 5.353e-03, 3.958e-02, -6.330e-03, -4.618e-03, 1.731e-02, -4.983e-04, 4.898e-02, 3.626e-02, -1.872e-02), r);\n\tr = MulAdd(s7_8, M4(-3.294e-02, 2.496e-02, -4.163e-03, 1.318e-01, 1.180e-01, -1.751e-02, 1.257e-02, -1.621e-02, -1.501e-01, -2.276e-02, 3.091e-02, 1.136e-02, -1.445e-01, 2.529e-02, 1.941e-02, 6.400e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.027e-02, 3.734e-03, -3.699e-03, -3.228e-03 };\n\tr = MulAdd(s0_0, M4(8.282e-02, -7.501e-03, -1.857e-02, 2.125e-02, -9.094e-02, -1.234e-02, 3.117e-02, -4.372e-02, 5.749e-02, 1.487e-02, 2.390e-02, -4.648e-02, 2.412e-02, 9.416e-02, -4.091e-02, -7.010e-03), r);\n\tr = MulAdd(s0_1, M4(7.699e-03, -1.461e-03, -1.739e-01, -1.072e-01, 7.644e-02, 1.704e-01, 4.967e-02, -1.591e-01, -1.191e-01, 6.662e-02, 5.521e-03, 4.485e-02, 2.038e-01, 1.115e-01, 2.296e-02, -3.010e-02), r);\n\tr = MulAdd(s0_2, M4(1.087e-01, -9.153e-02, 8.022e-02, 1.570e-03, -6.340e-02, -3.081e-01, -1.052e-01, 1.030e-01, 9.012e-03, 3.300e-02, -5.430e-02, -5.508e-02, -9.428e-02, 2.964e-02, -2.834e-02, -6.783e-02), r);\n\tr = MulAdd(s0_3, M4(6.784e-03, -1.459e-02, 1.777e-02, 6.636e-02, -5.034e-03, -4.580e-02, 3.943e-02, -6.539e-02, 6.990e-02, -9.399e-02, 3.101e-02, 1.040e-03, 1.083e-01, -3.711e-02, -1.661e-02, 3.074e-02), r);\n\tr = MulAdd(s0_4, M4(-3.250e-02, -1.161e-01, 1.656e-01, -1.243e-01, 1.532e-02, -1.397e-02, 3.399e-02, -7.091e-02, 1.263e-01, 1.034e-01, 3.741e-02, -4.138e-02, 2.900e-01, -9.898e-02, -9.064e-02, 1.358e-01), r);\n\tr = MulAdd(s0_5, M4(1.519e-01, -1.029e-01, -4.519e-02, 1.114e-02, 6.039e-02, 1.862e-01, -4.409e-02, -4.450e-02, 1.858e-01, 5.967e-02, 6.574e-02, 6.440e-02, 5.312e-02, 5.240e-02, -7.643e-02, -4.162e-02), r);\n\tr = MulAdd(s0_6, M4(-4.410e-02, -6.757e-05, 1.782e-02, 3.755e-02, -1.586e-01, -1.383e-02, -1.596e-02, -5.003e-02, -1.231e-01, -2.110e-02, 9.221e-02, 9.457e-02, -4.785e-02, 4.241e-02, -5.256e-02, 3.678e-02), r);\n\tr = MulAdd(s0_7, M4(2.781e-02, -7.796e-02, 4.718e-02, 1.196e-01, -2.547e-01, -2.209e-02, -3.105e-02, -1.510e-01, 6.214e-02, 3.699e-02, -1.110e-02, -2.115e-02, -2.354e-03, 8.718e-02, 1.031e-01, 8.796e-02), r);\n\tr = MulAdd(s0_8, M4(2.464e-02, 2.310e-02, -7.324e-02, -6.761e-02, 2.163e-01, 4.396e-02, 7.289e-03, -1.429e-01, -1.751e-01, -6.605e-02, 2.203e-02, -1.974e-01, -7.655e-02, 4.021e-03, -3.618e-03, 7.687e-02), r);\n\tr = MulAdd(s1_0, M4(-8.670e-02, -4.925e-02, -5.791e-03, -1.917e-02, -4.395e-02, 3.902e-03, -7.226e-04, -2.517e-02, -1.135e-01, 1.866e-02, 7.547e-03, 4.762e-03, -3.201e-02, 7.010e-02, 7.117e-02, 2.464e-03), r);\n\tr = MulAdd(s1_1, M4(-7.021e-02, -2.683e-02, 5.226e-02, -5.977e-02, -6.292e-02, -3.425e-03, 3.800e-02, 7.317e-03, -9.742e-02, -2.554e-02, -7.991e-02, -1.119e-01, 5.196e-02, 9.553e-02, -6.086e-02, -4.175e-02), r);\n\tr = MulAdd(s1_2, M4(-4.576e-02, -3.827e-02, -5.359e-02, 7.820e-02, -8.255e-02, -5.313e-02, -6.502e-02, 3.165e-03, 9.783e-03, -2.458e-02, 1.439e-01, -4.686e-02, -1.003e-01, -8.425e-03, -5.771e-03, -4.758e-02), r);\n\tr = MulAdd(s1_3, M4(5.966e-02, 9.595e-03, -3.856e-02, 5.273e-02, -1.175e-03, 4.427e-02, 3.991e-02, 2.095e-03, -8.498e-02, -2.060e-02, -1.845e-02, -1.425e-01, -7.576e-02, -5.931e-02, 3.845e-02, 7.610e-03), r);\n\tr = MulAdd(s1_4, M4(3.796e-02, 1.447e-01, 9.259e-02, 1.260e-01, 1.608e-03, 7.995e-03, -6.667e-02, 2.510e-02, -9.106e-02, 2.393e-02, 7.300e-03, 9.369e-03, 4.809e-02, -2.241e-01, -1.092e-01, 1.567e-01), r);\n\tr = MulAdd(s1_5, M4(-2.641e-03, 3.406e-02, -5.671e-02, -2.547e-02, -2.399e-03, -3.979e-02, 2.325e-02, 3.546e-02, -3.434e-02, -4.097e-02, -4.166e-02, -1.135e-01, -7.384e-03, -3.778e-02, 6.189e-02, 6.051e-02), r);\n\tr = MulAdd(s1_6, M4(3.849e-02, -1.066e-05, -9.556e-03, -6.462e-02, 1.338e-02, -2.918e-02, -4.090e-04, -9.598e-02, -1.725e-02, -3.150e-02, -3.695e-02, -5.857e-02, -1.094e-02, 4.266e-02, -2.025e-02, 6.002e-02), r);\n\tr = MulAdd(s1_7, M4(1.280e-01, 1.042e-02, -5.609e-03, -9.296e-03, 3.400e-02, -1.899e-02, -2.874e-02, -3.249e-02, 1.947e-03, 1.613e-02, -1.296e-02, -1.637e-02, -4.200e-02, -6.840e-02, 6.963e-02, 5.189e-03), r);\n\tr = MulAdd(s1_8, M4(4.628e-02, -2.528e-02, -4.852e-02, -7.951e-02, -3.145e-02, 3.404e-02, 3.338e-02, -2.195e-02, 7.240e-03, -4.205e-02, 8.960e-02, -6.156e-02, -5.262e-02, 1.937e-02, -4.494e-03, 7.634e-02), r);\n\tr = MulAdd(s2_0, M4(1.292e-03, -7.605e-03, 4.105e-02, -1.246e-01, 1.068e-01, 2.252e-02, -2.295e-02, 3.658e-02, -3.432e-02, -1.054e-01, -6.732e-02, 3.738e-02, -2.803e-02, 1.604e-02, -3.872e-02, -7.219e-02), r);\n\tr = MulAdd(s2_1, M4(4.383e-02, 2.352e-02, 6.190e-03, 1.750e-02, 1.012e-03, -3.472e-03, 1.045e-01, 7.403e-02, -4.373e-02, -1.335e-01, -8.607e-02, 2.795e-03, 6.669e-02, -7.791e-02, -3.136e-02, 1.017e-01), r);\n\tr = MulAdd(s2_2, M4(-7.371e-02, -8.063e-03, 1.434e-02, -7.305e-02, -6.319e-03, 2.461e-03, 1.882e-04, 6.418e-02, -2.161e-02, -1.958e-02, 6.567e-02, 5.888e-02, 2.914e-02, 2.875e-02, 9.276e-03, -3.553e-02), r);\n\tr = MulAdd(s2_3, M4(-5.579e-02, -7.940e-02, -3.232e-04, -8.424e-02, -3.059e-02, -1.152e-01, 1.849e-03, 7.836e-02, -1.220e-02, -2.966e-02, 8.221e-03, 2.005e-02, -3.060e-04, -2.329e-02, -1.330e-02, 1.660e-02), r);\n\tr = MulAdd(s2_4, M4(-2.695e-01, 3.710e-02, 8.364e-02, 5.437e-02, -4.420e-02, 2.428e-02, -1.992e-01, 1.470e-02, -1.727e-01, -2.678e-01, 2.076e-02, 1.628e-01, 9.073e-02, -3.265e-02, -1.376e-01, 1.633e-01), r);\n\tr = MulAdd(s2_5, M4(-2.046e-01, -1.528e-01, -1.308e-01, -2.173e-01, -1.029e-02, -3.100e-03, 2.210e-02, 8.151e-02, 1.365e-02, -8.022e-02, 2.672e-03, 1.166e-02, 2.332e-03, -4.854e-02, -7.820e-03, 1.159e-01), r);\n\tr = MulAdd(s2_6, M4(-5.626e-02, -3.503e-02, -1.289e-03, -8.236e-02, -3.173e-02, -2.268e-02, 1.947e-02, -2.506e-02, 1.289e-01, 1.053e-02, -3.061e-02, 2.538e-02, -9.946e-02, -6.173e-02, 2.473e-02, -2.692e-02), r);\n\tr = MulAdd(s2_7, M4(-2.065e-01, -5.762e-03, 5.203e-02, -2.143e-02, -7.554e-03, -4.648e-02, 1.165e-01, 2.026e-01, -8.369e-02, -1.324e-01, 5.834e-02, -5.356e-02, -6.907e-02, -7.742e-02, 2.550e-02, 6.365e-03), r);\n\tr = MulAdd(s2_8, M4(-2.044e-01, -5.655e-02, 7.710e-02, -1.028e-01, -3.904e-02, -3.208e-03, -5.546e-02, 4.769e-02, -1.686e-02, -2.435e-02, 2.537e-03, 5.641e-02, -2.325e-02, -3.456e-02, 6.530e-02, 9.904e-02), r);\n\tr = MulAdd(s3_0, M4(1.496e-02, -2.228e-02, 1.076e-02, -3.184e-02, -2.095e-02, 2.914e-02, 1.139e-03, -4.919e-02, -6.869e-02, -5.692e-02, -4.088e-02, 2.431e-02, -8.697e-02, -4.383e-02, -6.886e-02, -1.106e-01), r);\n\tr = MulAdd(s3_1, M4(1.025e-01, 4.740e-03, 2.346e-02, -1.739e-02, 1.687e-02, 4.287e-02, -2.448e-02, -2.855e-02, -1.337e-02, -3.874e-02, -1.126e-02, 2.951e-03, 1.042e-01, -5.224e-02, -5.520e-02, -6.284e-02), r);\n\tr = MulAdd(s3_2, M4(2.283e-02, 2.206e-02, 3.470e-02, -8.382e-02, 1.281e-02, -2.636e-02, -2.876e-02, 2.666e-02, 6.015e-02, -2.311e-03, -3.086e-02, 4.340e-02, 6.960e-02, -3.253e-03, 1.285e-01, -6.811e-02), r);\n\tr = MulAdd(s3_3, M4(4.885e-02, -3.848e-02, -3.027e-02, -8.035e-02, 1.811e-02, -2.526e-02, 3.228e-02, 9.239e-02, 2.841e-02, 5.519e-02, 6.826e-02, -3.739e-02, -1.170e-02, -2.528e-02, 5.262e-02, 1.422e-01), r);\n\tr = MulAdd(s3_4, M4(-7.634e-02, -2.835e-02, 1.058e-01, 9.126e-03, 7.710e-02, 1.233e-01, 2.328e-01, 1.879e-01, 1.550e-01, -6.004e-03, -1.373e-01, 4.386e-02, 1.198e-01, -1.807e-02, 1.245e-03, -8.021e-02), r);\n\tr = MulAdd(s3_5, M4(5.724e-02, -1.178e-01, 1.767e-01, -7.646e-02, -2.158e-02, -1.647e-02, -8.337e-02, -7.362e-02, 2.942e-03, 6.778e-02, 4.844e-02, 3.504e-02, -5.358e-03, 2.728e-02, -6.942e-02, 7.962e-03), r);\n\tr = MulAdd(s3_6, M4(4.452e-02, -1.646e-02, -1.147e-02, -5.155e-02, 7.076e-02, -1.398e-02, 9.774e-02, 4.261e-02, 1.003e-01, -1.432e-02, 3.115e-02, 4.306e-02, -1.018e-01, -1.393e-01, 7.043e-02, 1.725e-02), r);\n\tr = MulAdd(s3_7, M4(2.213e-02, -7.985e-02, 1.339e-01, -7.921e-02, 1.285e-01, -1.511e-01, 1.649e-01, 4.592e-02, 3.238e-02, -1.482e-01, -1.781e-03, -8.541e-02, -3.168e-02, -3.916e-02, 4.108e-02, 1.662e-01), r);\n\tr = MulAdd(s3_8, M4(-2.440e-02, -6.708e-02, 7.709e-02, -4.256e-02, -8.491e-02, -6.524e-02, -1.045e-01, -5.467e-02, -5.471e-02, 2.201e-02, -7.658e-03, 8.222e-02, -5.803e-02, -4.567e-02, 1.506e-02, -3.535e-02), r);\n\tr = MulAdd(s4_0, M4(-5.863e-03, -3.528e-02, -7.038e-03, -8.064e-02, 6.389e-02, -3.502e-02, 1.629e-02, -5.566e-02, -8.219e-02, 9.411e-02, -4.741e-02, -2.534e-01, -1.678e-02, -1.364e-02, 6.047e-02, -4.086e-02), r);\n\tr = MulAdd(s4_1, M4(8.560e-02, 1.703e-02, -1.876e-02, 3.156e-02, 1.031e-01, -6.625e-03, 7.125e-02, 6.314e-02, -9.482e-02, -3.137e-02, -1.422e-01, -2.679e-01, 3.143e-02, -3.354e-02, 1.283e-01, -1.122e-01), r);\n\tr = MulAdd(s4_2, M4(-6.814e-02, -4.490e-03, 1.070e-01, 2.167e-03, 1.036e-02, 2.412e-03, -2.831e-02, -1.058e-01, 4.681e-02, 2.511e-02, 2.371e-02, -2.076e-01, -1.166e-01, 3.197e-02, -6.517e-02, -9.961e-02), r);\n\tr = MulAdd(s4_3, M4(5.385e-02, -7.896e-02, 8.853e-02, 6.126e-02, 2.545e-02, 2.880e-02, -5.458e-02, 1.890e-02, -8.357e-02, 5.410e-02, -3.906e-02, -1.762e-01, 1.609e-01, -2.666e-02, -3.527e-02, 3.515e-03), r);\n\tr = MulAdd(s4_4, M4(1.972e-02, 6.908e-02, -9.858e-03, 1.035e-01, 2.817e-01, 2.094e-01, -3.090e-01, -1.431e-01, -1.254e-01, -1.514e-01, -1.544e-01, -7.765e-03, -7.615e-02, 2.419e-02, -5.651e-02, -2.255e-02), r);\n\tr = MulAdd(s4_5, M4(-1.699e-01, -4.790e-02, -4.011e-02, -4.175e-02, 1.003e-01, 9.210e-02, 1.107e-01, 1.973e-02, -2.131e-02, -2.740e-02, 4.149e-02, -1.450e-01, -7.245e-02, -9.400e-02, 1.103e-01, 7.094e-02), r);\n\tr = MulAdd(s4_6, M4(-1.019e-01, -1.939e-02, 5.795e-02, -7.520e-02, -4.166e-02, 3.584e-03, 2.277e-02, 2.896e-02, 8.013e-02, 1.190e-02, -1.715e-02, -5.244e-02, -1.147e-02, 3.578e-02, -4.712e-02, -2.901e-02), r);\n\tr = MulAdd(s4_7, M4(1.753e-01, 6.022e-02, 9.818e-02, 1.606e-01, -2.239e-02, 9.389e-03, -2.591e-02, -3.310e-02, 1.002e-01, 2.405e-02, 3.143e-02, 1.206e-02, -3.505e-02, 2.515e-02, -1.970e-02, 4.895e-02), r);\n\tr = MulAdd(s4_8, M4(-8.281e-02, 8.249e-02, -1.288e-02, -2.050e-02, -7.102e-02, 2.256e-02, -1.944e-03, 8.534e-03, -3.477e-02, -7.072e-04, 3.717e-02, -8.730e-02, -6.472e-02, -9.351e-03, 3.269e-02, -3.213e-02), r);\n\tr = MulAdd(s5_0, M4(9.542e-02, -4.061e-02, -2.904e-02, -1.822e-01, -5.632e-02, -2.788e-02, -8.150e-03, -1.046e-01, 7.828e-03, -2.316e-02, 1.447e-03, -9.084e-02, 2.058e-02, -7.100e-03, 4.199e-02, -5.257e-02), r);\n\tr = MulAdd(s5_1, M4(1.531e-01, -1.350e-01, -3.146e-02, 4.359e-02, -1.677e-02, -2.604e-02, 1.119e-01, 3.979e-02, -5.084e-02, 1.952e-02, 2.422e-02, -9.534e-02, -5.122e-02, 1.170e-02, -2.168e-01, 5.671e-02), r);\n\tr = MulAdd(s5_2, M4(8.436e-02, -7.757e-03, 7.705e-03, -1.189e-01, 8.195e-03, -4.497e-02, -2.285e-02, -6.500e-02, 5.457e-02, -1.213e-02, -5.160e-02, -3.054e-02, -1.466e-01, -1.326e-02, 1.110e-01, 5.654e-02), r);\n\tr = MulAdd(s5_3, M4(-2.890e-02, -6.597e-02, 1.778e-02, -1.974e-01, 7.849e-02, -2.527e-02, -3.367e-02, 4.053e-02, 4.037e-02, -5.426e-02, -2.900e-04, 1.747e-03, 2.388e-01, 1.038e-01, 1.033e-02, 4.588e-02), r);\n\tr = MulAdd(s5_4, M4(-4.453e-03, -8.251e-02, -3.662e-01, -5.380e-02, 5.726e-02, 1.958e-01, 2.646e-02, -1.724e-01, -7.544e-02, -4.307e-02, -2.181e-02, 6.844e-03, 1.017e-01, 9.632e-02, -4.427e-02, -7.737e-02), r);\n\tr = MulAdd(s5_5, M4(1.049e-01, 6.475e-03, -9.022e-03, 4.203e-02, 3.576e-02, 2.242e-02, 1.977e-01, 9.945e-02, 1.133e-02, -8.528e-02, 9.182e-02, 8.884e-02, 3.620e-03, -4.205e-02, 4.046e-02, 4.582e-02), r);\n\tr = MulAdd(s5_6, M4(-7.955e-02, 7.959e-03, -3.231e-02, -1.656e-01, -9.445e-02, 1.195e-02, 7.625e-03, 1.623e-02, 2.095e-01, -1.135e-02, -2.451e-02, 5.500e-02, 2.445e-01, 4.941e-02, -3.756e-02, 7.325e-02), r);\n\tr = MulAdd(s5_7, M4(6.233e-02, -4.545e-02, 8.869e-02, -1.112e-01, 5.572e-02, 4.290e-02, -6.435e-02, -5.352e-02, 1.452e-01, -3.088e-02, 5.818e-02, 6.814e-02, -4.096e-02, 3.249e-02, 1.081e-01, 6.255e-02), r);\n\tr = MulAdd(s5_8, M4(8.141e-02, -7.149e-02, -7.663e-05, -1.042e-01, -8.317e-02, -1.451e-04, 4.788e-02, 2.973e-02, 1.225e-02, 2.898e-02, -3.275e-03, 9.347e-02, 5.865e-03, -1.833e-02, -1.982e-02, 3.362e-02), r);\n\tr = MulAdd(s6_0, M4(-9.579e-03, -2.138e-02, -1.251e-02, 4.840e-02, 3.551e-02, -4.484e-02, 2.255e-02, 2.169e-01, 3.611e-02, 1.155e-01, 4.562e-02, -5.924e-02, 4.021e-02, -3.011e-02, 3.772e-02, -4.811e-02), r);\n\tr = MulAdd(s6_1, M4(6.861e-02, -4.056e-02, -2.885e-02, -2.634e-02, 1.707e-01, -1.619e-02, -5.798e-02, 3.128e-02, -1.866e-02, 2.244e-02, -9.318e-02, -9.833e-02, 1.297e-01, -7.007e-02, -9.872e-02, -1.108e-01), r);\n\tr = MulAdd(s6_2, M4(-2.595e-02, -4.442e-02, 2.363e-03, 3.570e-02, 3.570e-02, -7.211e-03, -3.487e-02, 9.863e-02, 9.703e-02, -1.322e-02, 9.269e-03, -3.481e-02, 3.874e-02, 1.048e-01, 1.030e-01, 5.039e-02), r);\n\tr = MulAdd(s6_3, M4(4.133e-02, 2.960e-02, 1.587e-03, 9.920e-02, -9.105e-02, -5.457e-02, 1.076e-01, 4.433e-03, -8.342e-02, 3.623e-02, 2.680e-02, 7.488e-03, -9.311e-02, -9.511e-02, 1.247e-01, 7.153e-02), r);\n\tr = MulAdd(s6_4, M4(1.213e-01, 3.029e-02, 1.789e-02, -2.763e-01, 1.399e-01, -2.771e-01, -4.651e-02, 6.321e-02, -1.600e-01, -3.096e-02, 3.674e-03, -1.188e-01, -9.643e-02, -3.469e-01, 9.532e-02, -9.500e-02), r);\n\tr = MulAdd(s6_5, M4(-8.947e-02, 2.622e-02, 5.543e-02, 5.093e-02, 1.466e-01, -5.734e-02, -3.783e-03, 6.553e-02, 5.229e-02, 7.388e-03, -4.044e-02, -6.720e-02, -9.627e-02, -3.651e-02, -2.029e-02, -6.617e-02), r);\n\tr = MulAdd(s6_6, M4(-9.539e-02, -1.852e-02, 8.695e-02, 1.081e-01, -5.356e-02, -9.769e-02, 1.502e-01, 8.052e-02, -2.488e-02, -2.784e-02, -7.563e-02, -1.241e-01, -2.712e-02, 2.305e-03, -2.850e-02, -5.494e-02), r);\n\tr = MulAdd(s6_7, M4(-1.394e-01, -2.116e-02, -2.509e-02, -8.494e-03, -1.988e-01, -2.985e-02, 1.067e-01, 1.072e-01, -9.671e-02, -3.063e-02, -3.109e-02, -9.306e-02, 1.372e-01, 3.550e-02, -2.605e-02, -1.606e-02), r);\n\tr = MulAdd(s6_8, M4(-8.505e-02, 2.873e-02, -4.789e-02, 1.880e-01, 8.025e-02, -5.238e-02, -9.657e-02, -9.533e-02, 3.661e-02, -4.519e-02, -6.684e-02, -6.811e-02, -5.086e-02, -2.249e-04, 1.957e-02, 8.516e-02), r);\n\tr = MulAdd(s7_0, M4(1.007e-01, -2.372e-02, -5.813e-03, 1.802e-01, -6.819e-02, -5.721e-03, -2.483e-02, 4.769e-02, -1.184e-01, 1.802e-01, 6.399e-02, 1.555e-01, 2.522e-02, 7.729e-02, 6.577e-02, -1.325e-01), r);\n\tr = MulAdd(s7_1, M4(-1.067e-01, -5.018e-02, -3.361e-02, 6.501e-03, -1.769e-01, -1.063e-02, -5.944e-02, 2.517e-02, -1.636e-02, 9.147e-02, 1.468e-01, -1.176e-02, 9.015e-02, 8.733e-02, -9.278e-03, -8.138e-02), r);\n\tr = MulAdd(s7_2, M4(-5.646e-03, 6.273e-03, 5.086e-02, 1.846e-01, -7.993e-02, 4.087e-03, -2.429e-02, -5.967e-02, 3.460e-02, -1.314e-02, -7.778e-02, 1.111e-01, 1.842e-02, 1.330e-02, 1.344e-01, -1.669e-02), r);\n\tr = MulAdd(s7_3, M4(6.190e-02, -7.613e-02, 4.570e-02, 3.076e-01, -4.863e-02, -7.173e-02, -5.912e-02, -3.602e-03, -7.035e-02, 1.620e-01, 8.289e-02, 7.636e-02, 8.863e-02, -5.070e-02, -5.642e-02, 3.230e-02), r);\n\tr = MulAdd(s7_4, M4(-2.413e-02, 3.622e-02, -1.440e-01, -3.482e-01, -6.614e-02, -6.762e-02, 8.552e-02, 5.454e-02, -6.978e-02, 3.645e-01, -3.436e-03, -4.343e-02, 1.408e-01, -1.524e-01, 1.545e-01, 3.227e-02), r);\n\tr = MulAdd(s7_5, M4(-3.345e-02, -1.264e-01, 2.253e-02, 2.380e-01, -7.325e-03, 6.590e-03, -9.107e-02, -5.741e-02, -2.025e-01, 1.058e-01, -1.391e-01, -1.825e-02, -1.094e-02, 4.747e-03, -3.962e-02, -4.997e-02), r);\n\tr = MulAdd(s7_6, M4(7.408e-02, 2.698e-02, 4.046e-03, 2.575e-01, -6.166e-02, -3.985e-02, 1.817e-03, -7.654e-03, -7.017e-03, 5.605e-03, -1.276e-01, -8.364e-03, 5.742e-02, 2.732e-02, -6.909e-02, -3.055e-02), r);\n\tr = MulAdd(s7_7, M4(-2.354e-02, -2.041e-02, 8.600e-02, 2.454e-02, -2.166e-02, -3.224e-02, 8.548e-02, 2.795e-02, -1.052e-01, -5.736e-02, -5.278e-02, -4.459e-02, 2.451e-01, 6.210e-03, -4.089e-02, -6.621e-02), r);\n\tr = MulAdd(s7_8, M4(-1.025e-01, -7.455e-03, 4.737e-02, 2.978e-01, 4.053e-03, -4.398e-02, -2.958e-02, -5.774e-02, -1.732e-01, 7.104e-02, -5.482e-02, 5.566e-03, -5.713e-02, 1.674e-02, 1.219e-02, 4.699e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.498e-03, -1.644e-03, -9.558e-03, 1.158e-03 };\n\tr = MulAdd(s0_0, M4(1.167e-02, -6.177e-02, 2.921e-02, -1.596e-01, 8.422e-02, 8.787e-04, 4.332e-02, -5.135e-02, -4.080e-02, -6.429e-03, -6.095e-02, -6.061e-02, -4.810e-02, 1.095e-02, 4.549e-02, 1.362e-02), r);\n\tr = MulAdd(s0_1, M4(-1.199e-02, 1.175e-01, -5.049e-02, -2.183e-01, -2.373e-01, -1.157e-02, -2.956e-01, 1.045e-03, 1.205e-01, 4.900e-03, 8.430e-02, -1.391e-01, -1.061e-01, 5.416e-02, 1.508e-01, 9.890e-02), r);\n\tr = MulAdd(s0_2, M4(-4.923e-02, 1.051e-01, 5.703e-02, -9.213e-02, 9.652e-02, -2.554e-01, 2.086e-01, -2.495e-01, -5.233e-02, -7.044e-02, -1.819e-02, -3.957e-02, 3.699e-02, 1.103e-02, 1.985e-03, 7.984e-02), r);\n\tr = MulAdd(s0_3, M4(-1.503e-01, 9.970e-02, -2.322e-01, 1.074e-01, -1.112e-01, 4.230e-02, -1.247e-02, -7.363e-02, 3.949e-02, -3.524e-02, -9.946e-02, -3.385e-03, -6.269e-02, -9.424e-03, 1.054e-01, -1.609e-02), r);\n\tr = MulAdd(s0_4, M4(-3.221e-02, 1.505e-01, -2.525e-02, 4.613e-02, -9.402e-02, -2.385e-02, 1.357e-01, -1.818e-01, -2.465e-01, 5.490e-02, -1.201e-01, -8.243e-02, -5.049e-02, 1.286e-01, 8.802e-02, -2.022e-01), r);\n\tr = MulAdd(s0_5, M4(-7.998e-03, 1.040e-01, -2.233e-02, -3.037e-02, -2.865e-01, -2.228e-01, -1.800e-01, -5.392e-01, -2.904e-02, 6.367e-02, 1.076e-01, -5.523e-02, -4.917e-02, -2.926e-02, -2.309e-03, 5.027e-02), r);\n\tr = MulAdd(s0_6, M4(9.511e-03, -3.289e-02, -3.204e-02, -1.909e-02, -9.725e-02, -1.774e-02, 3.847e-02, -1.456e-01, 9.323e-02, -1.696e-02, 5.904e-03, -6.039e-02, 1.211e-01, 3.649e-02, -8.103e-05, 2.501e-02), r);\n\tr = MulAdd(s0_7, M4(3.629e-02, 4.800e-02, -4.105e-02, -1.008e-01, -1.499e-01, 5.788e-03, 4.249e-02, -8.500e-02, -6.269e-03, -5.566e-02, 6.120e-02, 4.844e-03, -1.538e-01, -3.678e-02, -2.316e-02, 1.633e-03), r);\n\tr = MulAdd(s0_8, M4(2.647e-02, 3.629e-03, 1.782e-02, 7.636e-03, 3.270e-02, 1.552e-01, -2.059e-02, 3.761e-02, -1.712e-01, -1.871e-02, -1.158e-01, 1.193e-01, -1.106e-01, -2.810e-02, -5.419e-02, -4.526e-02), r);\n\tr = MulAdd(s1_0, M4(-9.439e-02, -4.112e-02, -4.822e-02, -6.153e-02, -3.297e-02, 1.769e-02, 2.944e-02, -1.538e-02, -2.350e-02, -2.133e-02, -6.982e-02, -1.509e-02, 8.406e-02, 1.363e-02, 2.682e-02, 7.146e-02), r);\n\tr = MulAdd(s1_1, M4(1.214e-02, 1.628e-02, 7.939e-03, 1.440e-01, -4.604e-02, -3.504e-02, -1.081e-03, -1.222e-02, -1.043e-01, 8.807e-03, -6.214e-02, -7.001e-02, -5.142e-02, -3.879e-02, 2.149e-02, -3.831e-02), r);\n\tr = MulAdd(s1_2, M4(-3.897e-02, -8.496e-04, 1.726e-02, 6.070e-02, 2.546e-02, -1.543e-02, 1.621e-02, -6.286e-02, -7.894e-04, 8.739e-02, 2.938e-02, 8.286e-03, 9.474e-02, -3.996e-02, -2.151e-02, 8.518e-02), r);\n\tr = MulAdd(s1_3, M4(-5.590e-02, -4.005e-02, -2.155e-02, 2.283e-02, 1.415e-02, -4.826e-02, 7.409e-02, -9.884e-03, -2.964e-02, 1.376e-02, 8.224e-03, 2.386e-02, -6.692e-02, -5.007e-02, 1.784e-02, -3.207e-02), r);\n\tr = MulAdd(s1_4, M4(-2.278e-02, -6.852e-02, 1.079e-02, -1.495e-01, -1.100e-01, 4.839e-02, -1.024e-01, -7.718e-02, -2.104e-01, 2.885e-02, -8.595e-02, 5.267e-02, -9.748e-03, -1.048e-01, 1.062e-01, -1.449e-01), r);\n\tr = MulAdd(s1_5, M4(-9.920e-02, 7.857e-03, -8.209e-02, 1.180e-02, 5.777e-02, -2.598e-02, -1.377e-02, 2.015e-02, 1.165e-01, 1.282e-02, 3.508e-02, -5.131e-02, 2.825e-02, 1.456e-02, 2.656e-02, 1.442e-02), r);\n\tr = MulAdd(s1_6, M4(-4.397e-03, -2.337e-02, -4.174e-02, 1.481e-02, -1.727e-02, -3.315e-02, 1.128e-02, 1.027e-02, 7.468e-02, 1.628e-02, 2.491e-02, -5.500e-02, 5.107e-02, 3.508e-02, -3.237e-03, 9.850e-03), r);\n\tr = MulAdd(s1_7, M4(6.569e-02, 5.595e-02, -1.277e-02, 9.735e-02, 1.102e-02, 4.480e-02, 7.978e-03, -4.399e-03, 4.086e-02, 4.144e-03, 1.167e-02, -1.048e-01, -9.323e-02, -6.502e-03, 3.126e-02, -5.535e-02), r);\n\tr = MulAdd(s1_8, M4(3.960e-02, 2.156e-02, 1.231e-02, 1.308e-02, 1.848e-02, -2.566e-02, 4.084e-02, 9.212e-04, -8.791e-02, -1.301e-02, -6.939e-02, 8.119e-02, -6.844e-02, 1.982e-02, -3.903e-02, -3.668e-02), r);\n\tr = MulAdd(s2_0, M4(2.252e-02, -2.096e-02, 2.735e-02, 1.510e-02, -1.478e-02, 1.116e-02, 1.077e-02, -4.348e-02, -1.584e-03, -3.120e-02, 7.883e-03, -1.087e-02, -3.217e-02, -2.267e-02, -8.129e-02, 2.307e-03), r);\n\tr = MulAdd(s2_1, M4(8.523e-02, 1.456e-03, -3.770e-02, -1.888e-02, 1.382e-02, 5.320e-02, 4.826e-02, 3.317e-02, -7.548e-02, 4.860e-02, 1.353e-02, 1.160e-01, 8.436e-03, -1.882e-02, 1.261e-02, -7.137e-02), r);\n\tr = MulAdd(s2_2, M4(-6.370e-02, 5.359e-03, -4.268e-02, -3.003e-02, 2.313e-02, 1.621e-02, 3.060e-03, -1.317e-02, 3.247e-03, 7.697e-02, -1.396e-02, -8.399e-04, -4.960e-04, 3.719e-02, -3.845e-02, 2.111e-02), r);\n\tr = MulAdd(s2_3, M4(2.892e-03, -2.543e-02, 1.176e-02, 9.304e-03, 1.059e-01, -2.285e-02, 2.986e-02, 5.772e-02, -1.142e-01, -4.586e-02, -1.881e-01, 4.963e-03, -3.414e-03, -2.125e-02, -1.125e-01, -5.594e-02), r);\n\tr = MulAdd(s2_4, M4(-5.479e-02, -5.892e-02, -3.187e-01, -1.107e-01, 1.198e-02, 4.036e-02, -6.781e-02, 3.168e-02, -1.152e-01, -5.754e-02, 2.135e-01, -2.608e-01, -8.551e-02, 9.319e-02, -1.178e-01, -8.393e-02), r);\n\tr = MulAdd(s2_5, M4(3.025e-02, -1.882e-01, -7.997e-03, 1.191e-01, -5.916e-02, -5.380e-02, 4.412e-02, -8.905e-03, -1.309e-02, 1.924e-02, 9.663e-03, -8.942e-03, 3.374e-02, 7.815e-02, 3.357e-02, -5.947e-03), r);\n\tr = MulAdd(s2_6, M4(-7.223e-03, 3.911e-02, -1.094e-02, 1.982e-03, 2.219e-02, -3.432e-02, -8.690e-02, 4.018e-02, -6.419e-02, 1.056e-02, -1.133e-01, 9.543e-02, -7.015e-02, 6.164e-02, -1.136e-01, 5.972e-03), r);\n\tr = MulAdd(s2_7, M4(-1.036e-01, -5.610e-02, -4.592e-02, -3.629e-02, -1.625e-01, -2.212e-01, -1.272e-01, -5.642e-02, -4.976e-02, 3.654e-02, -3.748e-02, 9.545e-02, 1.100e-02, -4.112e-02, -6.416e-02, -4.099e-02), r);\n\tr = MulAdd(s2_8, M4(1.330e-02, 1.735e-02, 6.827e-02, 3.413e-02, -1.748e-02, -1.577e-03, 1.129e-02, -2.462e-02, -3.445e-02, 7.756e-03, 2.076e-02, -4.676e-02, -4.606e-02, -2.034e-02, 1.257e-02, -3.683e-02), r);\n\tr = MulAdd(s3_0, M4(-5.320e-02, 2.190e-02, 3.680e-02, -3.580e-02, 2.546e-02, -2.600e-03, 3.017e-02, 6.285e-03, -7.979e-02, 6.201e-02, -6.068e-02, -4.211e-02, 1.232e-01, -2.810e-02, -9.417e-02, 1.045e-01), r);\n\tr = MulAdd(s3_1, M4(6.909e-02, -1.825e-03, -1.253e-02, -3.946e-02, -2.231e-02, 4.658e-02, 4.727e-03, -1.104e-02, 1.596e-02, -6.214e-02, 2.228e-02, -6.638e-02, 5.695e-02, 7.845e-02, -5.545e-02, 2.237e-03), r);\n\tr = MulAdd(s3_2, M4(4.939e-02, -9.207e-02, -3.875e-02, -7.544e-02, 1.800e-03, 1.560e-02, -4.386e-03, -7.557e-03, 1.261e-02, 1.125e-02, 1.801e-02, 1.466e-02, 9.646e-03, 3.503e-02, -3.819e-02, 4.301e-02), r);\n\tr = MulAdd(s3_3, M4(3.208e-02, -7.788e-02, 5.246e-02, 2.746e-03, -2.968e-02, -7.753e-03, 8.223e-02, -2.185e-02, -1.468e-02, -5.539e-02, -1.753e-01, -4.015e-02, 1.448e-01, -7.826e-03, -1.139e-02, -1.166e-01), r);\n\tr = MulAdd(s3_4, M4(-3.785e-02, 1.809e-02, -1.625e-01, -5.018e-02, -2.031e-01, 3.498e-01, 9.538e-03, 1.843e-01, 1.125e-01, -9.325e-02, 1.736e-01, -1.565e-01, -1.106e-01, 3.306e-01, 9.144e-02, -8.085e-02), r);\n\tr = MulAdd(s3_5, M4(2.068e-01, 6.464e-03, 5.312e-03, 8.993e-02, 1.227e-02, -1.338e-01, -4.559e-02, -3.015e-02, -2.496e-02, 4.393e-03, -1.793e-02, -9.457e-02, 5.664e-02, 1.082e-01, 3.646e-02, -1.086e-02), r);\n\tr = MulAdd(s3_6, M4(2.355e-02, 1.312e-02, -4.126e-02, 2.181e-02, 1.985e-01, -1.919e-02, -1.470e-01, 9.793e-02, -1.152e-01, -3.593e-02, -1.032e-01, 4.051e-02, 1.958e-01, 7.270e-02, -4.232e-02, -5.498e-02), r);\n\tr = MulAdd(s3_7, M4(-1.543e-02, -5.805e-02, 6.226e-02, 3.702e-03, -2.578e-01, -2.114e-01, -1.530e-02, 5.345e-02, 4.764e-02, 4.586e-02, 8.577e-02, 1.178e-01, -9.984e-02, -4.481e-02, -5.640e-02, -9.018e-02), r);\n\tr = MulAdd(s3_8, M4(-1.854e-02, 8.643e-04, 1.124e-02, 2.094e-02, -1.009e-01, 3.480e-02, -1.669e-02, 3.460e-02, 3.137e-02, 8.575e-03, 4.781e-02, -2.018e-02, -1.207e-01, 1.016e-02, -4.369e-02, -1.682e-02), r);\n\tr = MulAdd(s4_0, M4(-1.140e-02, 2.420e-02, 6.241e-03, 5.785e-03, 4.436e-02, -4.286e-02, -5.416e-02, 1.132e-02, 2.869e-02, 1.495e-02, -8.035e-02, 7.211e-02, -3.877e-02, -7.195e-02, 7.446e-02, -8.160e-04), r);\n\tr = MulAdd(s4_1, M4(1.645e-03, 9.030e-02, -3.709e-02, 1.805e-02, -1.960e-02, -4.919e-02, 4.553e-02, -6.286e-03, 1.827e-02, -5.295e-02, 1.301e-02, 5.579e-02, 3.799e-02, -1.237e-03, 9.361e-02, 2.773e-02), r);\n\tr = MulAdd(s4_2, M4(4.443e-02, -3.289e-02, -1.185e-02, -3.490e-04, 1.836e-02, -1.090e-01, 8.454e-04, 1.068e-02, 2.049e-02, 8.117e-03, 1.842e-02, 6.967e-02, 2.379e-02, 1.528e-02, 4.916e-03, 4.540e-02), r);\n\tr = MulAdd(s4_3, M4(4.370e-02, -2.791e-02, 1.829e-01, -2.775e-02, -8.279e-02, 3.741e-02, -9.919e-03, 1.260e-01, -2.457e-02, -1.378e-02, -6.458e-02, 1.096e-01, 2.652e-02, 2.717e-02, 1.420e-01, 1.045e-01), r);\n\tr = MulAdd(s4_4, M4(-8.799e-02, 1.364e-01, -1.368e-01, 4.078e-02, 1.992e-01, 4.889e-03, 8.435e-02, 4.096e-01, -3.620e-02, -1.450e-02, 3.992e-02, 2.025e-02, -9.919e-02, -2.361e-02, -1.246e-01, 1.875e-02), r);\n\tr = MulAdd(s4_5, M4(2.370e-02, -1.002e-01, 7.320e-04, 8.148e-02, 1.327e-01, 2.469e-02, -5.037e-02, -1.869e-01, -2.726e-03, -9.535e-03, 2.615e-02, 1.987e-04, -4.594e-03, -1.220e-02, -4.273e-04, 1.355e-01), r);\n\tr = MulAdd(s4_6, M4(1.071e-01, 2.113e-02, -4.413e-03, -4.318e-02, -4.169e-02, -1.027e-02, 2.563e-02, -1.989e-02, -2.810e-02, 2.508e-02, 1.188e-02, 3.574e-02, 7.083e-03, 4.946e-02, -4.187e-02, -9.132e-03), r);\n\tr = MulAdd(s4_7, M4(4.131e-02, -9.007e-02, 2.709e-02, -1.204e-01, 2.620e-02, 1.383e-02, 1.197e-01, 6.891e-02, -6.550e-02, -5.608e-02, -5.058e-02, 6.390e-02, 1.111e-02, 4.349e-02, -9.714e-03, -8.326e-02), r);\n\tr = MulAdd(s4_8, M4(-1.916e-02, -2.350e-02, -1.555e-02, -6.213e-02, 5.593e-02, 4.247e-03, -4.789e-02, 5.948e-02, -4.069e-02, 1.600e-02, 4.016e-02, 6.093e-02, -3.119e-02, 3.793e-03, 5.541e-03, -3.793e-02), r);\n\tr = MulAdd(s5_0, M4(7.864e-02, -1.339e-02, -4.832e-02, -1.218e-01, -2.013e-02, -6.006e-02, -5.262e-02, 2.831e-02, 3.518e-02, 3.341e-02, -1.228e-02, -1.277e-02, 1.757e-04, 2.715e-03, 3.603e-02, 3.215e-02), r);\n\tr = MulAdd(s5_1, M4(1.407e-01, 7.350e-02, 4.234e-02, -9.416e-02, 7.673e-02, -1.417e-01, 1.398e-02, -1.021e-01, 3.521e-02, 1.478e-03, -4.151e-02, -8.832e-04, 8.912e-02, -8.051e-02, 4.631e-02, 2.308e-03), r);\n\tr = MulAdd(s5_2, M4(1.387e-03, 2.925e-02, -2.291e-02, 2.741e-02, -2.734e-02, 6.738e-02, 4.130e-05, -2.597e-02, 2.685e-02, 1.294e-02, 1.009e-02, -1.427e-02, -3.893e-02, 6.289e-02, 3.797e-02, 9.311e-03), r);\n\tr = MulAdd(s5_3, M4(-1.679e-02, -1.508e-01, -1.222e-01, -5.291e-02, 1.247e-02, 1.753e-02, 1.583e-01, -1.962e-02, 9.588e-02, 2.281e-02, -2.183e-03, -2.845e-02, -1.690e-01, 1.808e-02, 1.314e-02, 1.856e-01), r);\n\tr = MulAdd(s5_4, M4(2.043e-01, -5.004e-01, -1.569e-01, -2.278e-01, 6.594e-02, 2.738e-01, -2.904e-01, 1.078e-01, -3.630e-02, 1.078e-02, -8.383e-02, -1.540e-01, -2.902e-01, 1.926e-01, -3.632e-02, 1.952e-02), r);\n\tr = MulAdd(s5_5, M4(-8.471e-03, -5.701e-02, 3.210e-02, -9.791e-02, -1.505e-01, 2.561e-02, 2.135e-02, -6.411e-02, -5.528e-02, 2.373e-02, 1.523e-02, -6.321e-02, -6.808e-02, 8.429e-02, -5.276e-02, -8.066e-03), r);\n\tr = MulAdd(s5_6, M4(-5.639e-02, 4.162e-04, -1.973e-02, 3.684e-03, 5.583e-02, -6.831e-03, -5.978e-03, -4.626e-02, 2.059e-02, -4.358e-02, 1.707e-02, 2.277e-02, 8.244e-02, 5.466e-02, 4.525e-02, 3.121e-02), r);\n\tr = MulAdd(s5_7, M4(9.632e-02, 5.535e-02, 5.899e-02, 1.290e-01, -3.629e-03, -8.752e-02, -3.750e-02, 5.661e-02, 2.227e-02, -8.346e-02, -2.730e-02, 3.271e-03, -9.233e-02, 6.866e-02, 6.858e-03, 5.474e-02), r);\n\tr = MulAdd(s5_8, M4(4.825e-02, -4.488e-02, -3.505e-04, 6.830e-02, 9.736e-02, -3.523e-02, 8.631e-02, 2.603e-02, -5.879e-02, -3.617e-03, 1.704e-02, -3.680e-02, -6.214e-02, -1.883e-02, -4.150e-02, -5.404e-02), r);\n\tr = MulAdd(s6_0, M4(-3.835e-02, -1.861e-02, 4.914e-03, -3.501e-03, -1.264e-02, -1.105e-02, 9.188e-02, -2.862e-02, -7.635e-02, -5.039e-02, 6.528e-03, 1.326e-02, 1.238e-01, -3.823e-02, 1.175e-01, -8.928e-03), r);\n\tr = MulAdd(s6_1, M4(-1.286e-03, 2.701e-02, 3.120e-03, -8.478e-02, 4.093e-02, 1.146e-01, -5.110e-02, 2.109e-01, 1.133e-01, 4.819e-02, 1.865e-02, -3.246e-02, 1.944e-02, -9.811e-02, -2.425e-02, -1.544e-02), r);\n\tr = MulAdd(s6_2, M4(-2.894e-02, -3.921e-02, -1.110e-02, -3.812e-02, 1.139e-01, -1.187e-01, 1.240e-02, -1.277e-01, 2.531e-02, -1.509e-03, 1.453e-02, 1.674e-03, 1.359e-03, -2.390e-02, 1.247e-02, -1.884e-01), r);\n\tr = MulAdd(s6_3, M4(-7.157e-02, 2.103e-02, 2.297e-02, -8.590e-02, 1.141e-01, -9.066e-02, -7.427e-02, 1.697e-01, -6.793e-03, -1.810e-02, 1.913e-01, -2.418e-02, 1.057e-01, -9.030e-03, -7.905e-02, -1.755e-01), r);\n\tr = MulAdd(s6_4, M4(-1.410e-01, 1.156e-02, -1.829e-01, 7.699e-02, 2.267e-01, -3.173e-01, 1.605e-01, -1.500e-01, -8.938e-02, -2.148e-01, -1.502e-02, 1.283e-01, -1.651e-01, -2.558e-01, 1.715e-01, -6.584e-02), r);\n\tr = MulAdd(s6_5, M4(5.515e-02, -4.482e-02, 2.362e-02, 6.511e-02, 7.282e-02, 5.922e-02, 3.418e-02, 1.781e-02, -4.039e-02, -1.749e-02, 2.931e-03, 3.596e-02, 3.957e-02, 4.877e-03, 3.109e-02, 1.089e-01), r);\n\tr = MulAdd(s6_6, M4(-1.752e-02, -8.149e-03, 1.448e-02, -4.546e-02, -2.351e-02, -3.851e-02, 7.208e-02, -1.704e-02, 8.197e-02, 7.848e-04, 6.083e-02, 4.167e-02, 7.052e-03, 4.192e-02, 1.003e-01, 2.385e-02), r);\n\tr = MulAdd(s6_7, M4(-1.248e-01, -8.858e-02, -3.475e-02, 5.719e-02, 4.832e-02, -1.755e-01, -1.149e-01, -1.976e-01, -6.725e-02, -5.124e-02, 8.730e-04, 4.918e-03, -9.000e-02, 8.387e-02, -7.966e-03, 5.869e-02), r);\n\tr = MulAdd(s6_8, M4(-3.407e-02, -4.766e-02, 2.795e-02, 5.029e-02, 1.758e-02, -9.677e-03, 2.503e-02, 4.713e-03, 4.451e-02, 1.719e-02, 3.436e-02, -2.860e-03, 5.170e-02, -6.352e-02, 4.891e-02, -5.977e-03), r);\n\tr = MulAdd(s7_0, M4(-4.166e-03, -1.710e-02, 2.343e-02, 2.181e-02, -2.621e-03, -5.788e-02, 6.793e-02, 1.316e-02, -1.646e-01, 5.274e-02, 1.871e-01, 1.384e-01, 1.043e-01, -6.170e-02, 8.821e-02, 6.585e-02), r);\n\tr = MulAdd(s7_1, M4(-4.526e-02, -1.652e-03, -2.061e-02, 1.634e-02, -8.333e-02, 6.583e-02, -3.144e-02, 6.665e-02, -4.615e-03, 1.102e-01, -2.718e-02, 1.222e-01, -5.337e-03, 4.908e-02, 3.141e-02, 3.663e-02), r);\n\tr = MulAdd(s7_2, M4(-1.944e-03, -3.047e-02, -2.642e-02, -1.176e-02, 1.964e-02, -1.322e-03, -1.799e-02, 6.898e-03, 8.192e-02, -3.458e-02, -5.437e-02, -1.717e-02, 2.824e-02, 9.535e-03, -2.832e-02, -6.371e-02), r);\n\tr = MulAdd(s7_3, M4(-5.550e-02, -4.231e-02, -3.512e-02, -9.145e-02, 1.784e-02, 1.736e-02, 1.449e-03, -8.046e-03, 5.450e-03, 6.594e-02, 2.530e-01, -1.471e-02, -6.283e-02, 7.689e-02, 4.334e-02, -6.218e-02), r);\n\tr = MulAdd(s7_4, M4(-5.743e-02, -2.237e-01, -1.098e-01, -7.820e-02, 4.270e-02, -1.128e-01, -4.468e-02, 7.768e-02, -1.054e-01, -1.931e-01, 5.287e-03, -5.812e-02, 8.197e-02, -8.961e-02, 2.512e-01, -3.005e-02), r);\n\tr = MulAdd(s7_5, M4(4.308e-02, -9.069e-03, 5.157e-02, 1.160e-02, 5.872e-02, -9.286e-02, 1.838e-02, 2.887e-02, -9.272e-02, -1.431e-01, -5.731e-02, 2.200e-02, -1.166e-02, 6.180e-02, -1.418e-02, 6.206e-02), r);\n\tr = MulAdd(s7_6, M4(-4.014e-02, -3.412e-02, 6.475e-02, -9.437e-02, 4.607e-02, -2.936e-02, -2.778e-03, 3.266e-03, -1.539e-01, 9.698e-03, 4.587e-02, 4.971e-02, 3.766e-02, 2.926e-02, 5.401e-02, -1.517e-02), r);\n\tr = MulAdd(s7_7, M4(-2.628e-02, 7.130e-02, 6.909e-02, 1.381e-01, -6.860e-02, -9.530e-02, -9.711e-02, -7.830e-02, -3.834e-02, 2.078e-02, 3.598e-02, 8.188e-02, 3.320e-02, 7.825e-02, 1.107e-01, 5.268e-02), r);\n\tr = MulAdd(s7_8, M4(-5.938e-02, -5.766e-02, 7.675e-03, -5.305e-02, -2.769e-02, 3.557e-02, -2.854e-02, 2.338e-02, 3.690e-02, 7.973e-02, -3.343e-03, 5.789e-02, -1.221e-02, -4.225e-02, -1.986e-02, -4.257e-02), r);\n\treturn r;\n}\n\nvoid Pass15(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 16\n//!DESC conv15\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 8.948e-04, 1.990e-03, 9.713e-04, 1.205e-03 };\n\tr = MulAdd(s0_0, M4(-5.160e-02, -3.732e-03, -6.784e-03, -4.348e-02, 2.435e-03, -1.543e-02, -2.768e-04, 8.964e-03, -3.942e-02, -8.685e-03, 1.014e-03, -3.346e-02, -4.470e-02, 1.599e-02, 8.741e-03, -4.553e-03), r);\n\tr = MulAdd(s0_1, M4(2.393e-02, 1.892e-03, -1.528e-02, -3.904e-02, 1.591e-02, -8.766e-02, 2.341e-02, -1.420e-02, -2.348e-02, -3.359e-03, -3.797e-02, -5.681e-02, -4.980e-02, 4.332e-02, -7.959e-02, -2.571e-02), r);\n\tr = MulAdd(s0_2, M4(-4.175e-02, -3.435e-03, 3.606e-02, -1.366e-01, 6.186e-03, 3.417e-03, 1.596e-02, -2.151e-02, 3.124e-02, -3.555e-02, -5.958e-02, -3.985e-02, 4.484e-02, -1.423e-02, -8.866e-02, -2.162e-02), r);\n\tr = MulAdd(s0_3, M4(-2.821e-02, 1.630e-03, 5.268e-02, -7.234e-03, -4.657e-02, -9.417e-03, -2.170e-03, 7.203e-02, 1.426e-01, -6.417e-02, -4.125e-02, 5.846e-02, 1.178e-03, -7.917e-02, -1.304e-02, -1.637e-02), r);\n\tr = MulAdd(s0_4, M4(1.462e-02, -3.415e-02, -4.206e-02, -5.123e-02, 3.062e-02, 1.558e-01, 6.164e-03, 3.124e-03, -4.108e-02, 1.781e-01, 1.494e-02, -5.756e-03, -1.418e-01, -6.695e-04, 3.986e-02, -1.386e-01), r);\n\tr = MulAdd(s0_5, M4(3.383e-02, 4.660e-02, -1.419e-01, 5.439e-02, -4.897e-02, 1.464e-01, 4.731e-02, 4.934e-02, 8.982e-02, -1.290e-02, 1.695e-02, 9.934e-02, 7.482e-02, -9.254e-03, -1.693e-02, 6.521e-03), r);\n\tr = MulAdd(s0_6, M4(9.238e-02, -2.743e-02, -8.319e-03, 4.795e-03, 1.365e-02, 4.003e-02, -3.559e-02, 7.802e-03, 6.003e-02, 2.358e-02, -3.161e-02, 2.074e-02, 7.416e-03, -4.118e-02, -1.775e-02, 2.159e-02), r);\n\tr = MulAdd(s0_7, M4(4.396e-03, 1.038e-01, 6.255e-02, -9.141e-02, 3.115e-02, 1.052e-01, -4.497e-02, -6.776e-04, -1.772e-02, 9.394e-02, 4.760e-02, -1.007e-01, 1.137e-02, -5.003e-02, -1.147e-02, -1.026e-02), r);\n\tr = MulAdd(s0_8, M4(-1.623e-02, -1.713e-02, 9.693e-02, 7.983e-03, -5.052e-03, -4.564e-02, 4.794e-02, 1.581e-02, -5.652e-03, 5.487e-02, 3.743e-03, -4.529e-02, -9.499e-02, 6.744e-03, -2.605e-03, 8.676e-03), r);\n\tr = MulAdd(s1_0, M4(-2.647e-03, 6.805e-02, -2.540e-02, -1.147e-02, 3.226e-02, -1.310e-02, 2.787e-03, -4.002e-02, 5.170e-02, -3.792e-03, 3.074e-02, 2.460e-02, -7.882e-03, -6.123e-03, -8.279e-03, -8.565e-03), r);\n\tr = MulAdd(s1_1, M4(1.982e-02, 3.020e-02, 3.416e-02, 1.569e-02, 1.891e-02, -2.180e-02, 6.800e-02, 3.906e-02, -1.298e-02, 9.551e-02, -1.343e-03, -4.806e-02, 1.454e-01, 1.524e-02, -2.852e-02, 2.072e-02), r);\n\tr = MulAdd(s1_2, M4(-7.550e-03, 3.784e-02, 8.472e-02, 2.397e-02, 5.939e-04, -2.458e-02, -3.482e-02, -7.235e-02, 6.335e-02, -1.183e-02, -2.582e-02, 1.155e-01, 2.785e-02, 4.992e-03, 7.951e-03, -1.885e-02), r);\n\tr = MulAdd(s1_3, M4(-7.998e-02, 1.170e-01, -8.495e-02, 3.313e-02, 8.535e-03, 3.094e-02, -6.041e-02, -3.323e-02, -8.466e-02, -1.169e-01, -1.145e-01, 1.189e-01, -5.433e-02, -7.204e-02, 2.027e-02, -3.973e-03), r);\n\tr = MulAdd(s1_4, M4(2.866e-02, -3.144e-01, 1.411e-01, -2.229e-01, -6.961e-02, 8.606e-02, -2.027e-01, 6.622e-02, -2.599e-01, 2.075e-01, -3.785e-02, -3.399e-03, -3.173e-01, 6.855e-02, -1.812e-01, -1.432e-02), r);\n\tr = MulAdd(s1_5, M4(1.590e-02, -3.465e-02, -1.312e-01, 7.710e-02, 3.443e-02, 2.024e-01, -4.113e-02, -2.574e-02, 6.197e-02, 7.433e-03, -5.301e-02, 2.927e-01, -1.177e-02, 2.959e-02, 1.459e-01, 2.358e-01), r);\n\tr = MulAdd(s1_6, M4(-1.945e-03, -3.489e-02, 4.217e-02, 6.407e-03, 2.843e-02, 2.252e-02, -4.049e-02, -6.170e-02, -3.052e-02, 2.717e-02, 9.793e-03, 1.795e-01, 7.723e-02, 1.182e-02, 3.257e-02, -2.977e-02), r);\n\tr = MulAdd(s1_7, M4(6.135e-02, 1.503e-01, 6.103e-02, 1.783e-02, 6.338e-02, 1.215e-01, -1.684e-02, -1.483e-01, -3.541e-02, -8.271e-02, 1.444e-01, 1.174e-01, 1.608e-01, -5.001e-02, 8.841e-02, -3.740e-02), r);\n\tr = MulAdd(s1_8, M4(-5.199e-03, 3.357e-03, 1.415e-02, 3.064e-02, 4.466e-02, -2.478e-02, 2.871e-02, 1.724e-02, -3.197e-02, 1.664e-01, 4.358e-02, 1.283e-01, -2.226e-02, -6.676e-02, -9.041e-02, -4.091e-02), r);\n\tr = MulAdd(s2_0, M4(4.154e-02, 6.276e-02, 2.301e-02, -4.867e-02, 9.251e-02, 3.564e-02, 3.035e-02, 2.159e-02, 1.382e-02, -5.546e-02, 4.188e-03, 4.685e-02, 1.802e-02, 4.610e-03, 6.181e-02, -2.626e-04), r);\n\tr = MulAdd(s2_1, M4(-1.424e-01, -1.806e-02, -2.163e-02, -8.487e-02, 3.186e-02, 8.935e-02, 8.248e-02, -1.191e-02, 2.657e-03, 8.261e-03, -4.995e-02, -1.115e-02, 1.825e-03, -2.795e-02, 4.463e-02, 7.749e-02), r);\n\tr = MulAdd(s2_2, M4(-6.608e-02, -7.340e-03, -3.298e-03, -2.887e-02, 8.648e-03, 5.588e-03, 4.404e-03, 2.505e-04, 1.036e-02, -2.976e-02, -3.113e-02, 6.618e-03, 3.879e-02, 5.171e-02, 6.177e-02, 1.429e-01), r);\n\tr = MulAdd(s2_3, M4(-7.782e-03, -8.404e-02, -8.264e-03, 3.970e-02, -2.498e-01, -1.223e-01, -6.400e-02, 7.646e-02, 1.400e-03, -1.271e-02, -1.757e-02, 3.824e-02, 7.211e-02, -3.480e-02, -8.232e-02, -1.930e-02), r);\n\tr = MulAdd(s2_4, M4(1.859e-02, 4.738e-02, -2.169e-02, 2.830e-02, -1.659e-01, -9.680e-03, 2.575e-02, 5.458e-02, -4.625e-02, -3.809e-02, 4.293e-02, -3.743e-02, -6.246e-02, 1.364e-01, 3.725e-02, -3.218e-02), r);\n\tr = MulAdd(s2_5, M4(-4.900e-03, 5.655e-02, 6.519e-02, 1.092e-01, 1.312e-02, -9.273e-02, -9.127e-02, 5.506e-02, 2.990e-02, -1.273e-03, 1.594e-04, -7.715e-03, -1.155e-01, -4.271e-03, 2.533e-03, 8.421e-02), r);\n\tr = MulAdd(s2_6, M4(1.121e-02, 1.366e-02, -3.063e-02, 4.596e-03, -1.070e-01, -4.462e-02, -6.899e-02, 3.754e-02, -8.587e-02, -7.628e-03, 1.734e-02, 4.919e-02, -2.737e-02, 3.897e-02, 1.264e-02, -1.606e-02), r);\n\tr = MulAdd(s2_7, M4(2.536e-02, -3.417e-03, -1.311e-02, 3.645e-03, -1.238e-01, -7.702e-03, 1.116e-01, 1.310e-01, -2.044e-02, -4.430e-02, 1.056e-01, 5.321e-02, -2.567e-02, 1.916e-02, -8.229e-03, -4.110e-04), r);\n\tr = MulAdd(s2_8, M4(-1.896e-03, 1.095e-02, -2.075e-02, 4.741e-02, 4.284e-02, 4.529e-02, 1.737e-02, 1.677e-01, 4.837e-02, -1.854e-02, -7.629e-02, -7.305e-02, 4.157e-02, -2.880e-02, -3.751e-02, 6.790e-02), r);\n\tr = MulAdd(s3_0, M4(-2.048e-02, -5.507e-02, 3.214e-02, 2.952e-03, -5.350e-02, -2.185e-02, 5.288e-03, 1.490e-02, 1.499e-01, -5.311e-02, 1.924e-02, 1.557e-03, 1.908e-02, -1.304e-02, -1.599e-02, 1.458e-03), r);\n\tr = MulAdd(s3_1, M4(1.545e-01, 1.503e-01, 1.255e-01, -2.177e-01, -4.032e-02, -3.143e-02, -3.432e-03, -1.945e-02, 2.517e-02, 4.947e-02, 3.295e-02, 6.607e-02, 1.789e-02, -1.440e-02, 5.069e-02, 3.252e-02), r);\n\tr = MulAdd(s3_2, M4(-3.715e-02, 6.841e-02, -7.904e-02, -1.241e-02, -7.292e-03, -7.211e-03, -2.436e-02, -3.499e-02, 1.088e-02, -6.181e-03, 1.773e-02, 4.539e-02, 4.674e-02, 3.335e-02, 3.972e-02, 1.125e-01), r);\n\tr = MulAdd(s3_3, M4(1.806e-01, -8.409e-02, 1.720e-02, -2.359e-02, 3.185e-03, 6.891e-02, -6.363e-02, 9.348e-02, -1.460e-01, -9.123e-03, 7.783e-04, 4.054e-02, 5.063e-02, 3.042e-03, -2.027e-02, 4.392e-03), r);\n\tr = MulAdd(s3_4, M4(3.199e-02, 1.959e-01, 3.936e-02, -4.458e-02, -6.123e-02, 4.388e-02, -2.194e-01, 1.704e-01, -4.122e-01, -3.330e-01, 2.208e-02, -1.334e-02, -8.992e-02, 1.455e-01, 2.601e-03, -4.506e-02), r);\n\tr = MulAdd(s3_5, M4(-3.373e-02, -2.912e-02, 9.928e-02, -1.240e-01, -2.624e-02, -5.850e-02, -1.761e-02, 1.840e-01, 3.596e-03, -1.025e-01, -7.362e-02, 2.339e-01, -9.203e-02, -4.071e-02, -6.140e-02, 3.832e-02), r);\n\tr = MulAdd(s3_6, M4(9.961e-03, -6.187e-02, -1.933e-02, 8.530e-03, -2.826e-02, 2.153e-02, 9.054e-02, 3.754e-03, -7.562e-02, 4.114e-02, 3.296e-02, -1.196e-02, 8.955e-03, 3.717e-02, -2.063e-02, -5.733e-03), r);\n\tr = MulAdd(s3_7, M4(-7.716e-02, 4.829e-02, -1.901e-02, -4.509e-02, -1.704e-01, 1.060e-01, 4.398e-01, -6.755e-02, 1.498e-01, -1.051e-01, 4.117e-02, 3.259e-02, -1.031e-04, 4.512e-02, -2.488e-02, 1.855e-02), r);\n\tr = MulAdd(s3_8, M4(-2.843e-03, 2.916e-02, 6.268e-02, 6.978e-02, 2.159e-02, 4.315e-03, 5.635e-02, -2.766e-02, 1.239e-01, -4.260e-02, -6.276e-02, -3.447e-01, 1.432e-02, -2.211e-03, -3.597e-02, 8.178e-02), r);\n\tr = MulAdd(s4_0, M4(3.200e-02, 1.179e-02, 1.528e-01, -1.062e-01, -3.512e-02, -3.233e-02, -5.515e-03, 8.355e-02, -2.727e-02, 1.016e-01, 4.321e-02, -7.570e-02, 1.983e-02, -3.089e-02, -3.552e-02, -1.610e-02), r);\n\tr = MulAdd(s4_1, M4(8.069e-02, 9.256e-02, 1.331e-01, -2.860e-01, 5.044e-02, -7.307e-02, -4.262e-02, 7.402e-02, -2.703e-02, 4.398e-02, 2.634e-02, -9.939e-02, 4.440e-02, 2.116e-02, 3.077e-02, -7.031e-02), r);\n\tr = MulAdd(s4_2, M4(1.557e-01, -8.318e-03, 4.308e-02, -1.724e-01, -1.435e-02, -2.526e-02, -2.729e-02, -5.076e-02, 1.765e-02, -2.867e-02, -6.233e-02, -5.362e-02, 1.678e-02, 1.497e-02, 1.017e-03, -5.645e-02), r);\n\tr = MulAdd(s4_3, M4(-4.239e-02, -2.053e-01, -2.306e-01, 6.489e-02, 5.423e-02, -1.091e-02, -1.483e-02, 3.417e-02, -1.686e-02, 2.041e-02, -1.409e-01, 3.213e-02, -4.532e-02, 1.505e-02, 1.634e-02, 3.612e-02), r);\n\tr = MulAdd(s4_4, M4(2.897e-01, -2.806e-01, -2.645e-01, 8.348e-02, 8.619e-02, 1.776e-01, 1.974e-01, 2.876e-02, -3.004e-02, 3.145e-01, 4.906e-02, 1.955e-01, -1.321e-01, -2.143e-02, -6.912e-02, 6.615e-02), r);\n\tr = MulAdd(s4_5, M4(-7.748e-03, -2.532e-01, -3.545e-01, 3.033e-02, -1.635e-02, 1.869e-02, 7.738e-02, -2.264e-02, 9.954e-02, -5.047e-02, 3.741e-03, -1.794e-01, 1.474e-02, 1.596e-03, -1.864e-02, -6.731e-02), r);\n\tr = MulAdd(s4_6, M4(-1.653e-03, -9.351e-03, 3.484e-02, -4.003e-02, -9.898e-02, -2.235e-02, -1.330e-02, 7.185e-02, -7.997e-03, 1.449e-02, 2.336e-02, 7.019e-02, 4.894e-03, -2.798e-02, -5.484e-02, 2.123e-02), r);\n\tr = MulAdd(s4_7, M4(-9.205e-02, 5.108e-02, 1.527e-02, 1.392e-03, 4.100e-03, -5.082e-02, -3.365e-02, 2.265e-02, 2.186e-02, 1.873e-01, -7.729e-02, 6.681e-02, 2.867e-03, -2.340e-02, 8.103e-02, -5.483e-02), r);\n\tr = MulAdd(s4_8, M4(-1.313e-02, 4.408e-03, -8.138e-03, 5.902e-02, -3.839e-02, -2.684e-02, -4.869e-02, 4.440e-02, -2.105e-02, -7.091e-02, 1.829e-02, -3.390e-02, 3.873e-02, 4.157e-02, 1.981e-02, 1.946e-02), r);\n\tr = MulAdd(s5_0, M4(2.334e-02, 3.993e-02, 5.202e-03, -9.693e-03, -3.201e-02, -1.384e-02, -7.217e-02, 2.663e-02, -3.987e-02, 6.253e-03, 1.969e-02, -2.946e-02, -1.711e-02, 3.179e-02, 1.067e-02, 7.245e-04), r);\n\tr = MulAdd(s5_1, M4(-8.893e-03, 1.023e-02, 2.342e-03, -3.203e-02, -5.524e-03, -8.312e-02, -1.058e-01, 4.977e-02, 2.486e-02, 3.833e-02, 6.300e-02, -7.201e-02, -1.001e-01, -5.215e-02, -2.100e-02, -6.421e-02), r);\n\tr = MulAdd(s5_2, M4(5.109e-02, -4.186e-02, 2.191e-02, 2.581e-02, -1.433e-02, -7.580e-03, -3.783e-02, -8.056e-03, -3.377e-02, 8.525e-04, -1.128e-03, -6.093e-02, 2.147e-02, -6.303e-03, -6.241e-02, 6.017e-03), r);\n\tr = MulAdd(s5_3, M4(-4.761e-02, -1.372e-02, -3.552e-02, 3.599e-04, 1.214e-01, -6.299e-03, 1.480e-02, -8.976e-03, 3.266e-02, 1.771e-02, 3.796e-02, -1.831e-02, -1.391e-02, -9.186e-02, -6.225e-03, 5.898e-02), r);\n\tr = MulAdd(s5_4, M4(8.423e-02, 3.137e-02, 4.434e-02, 1.085e-01, 3.023e-01, -8.527e-02, 7.218e-02, -5.191e-02, -1.233e-02, 1.033e-01, 9.048e-03, -4.183e-02, -9.748e-03, -2.114e-02, -2.998e-02, -9.669e-02), r);\n\tr = MulAdd(s5_5, M4(3.973e-02, -7.449e-03, -2.213e-02, -3.953e-02, -9.978e-02, 4.218e-02, 5.922e-02, -3.750e-02, 8.369e-02, -8.765e-03, -8.399e-03, -1.647e-01, 1.567e-02, 6.577e-02, 2.294e-02, 1.047e-02), r);\n\tr = MulAdd(s5_6, M4(-2.095e-02, 4.695e-03, 4.147e-04, -1.174e-02, -5.668e-02, -3.437e-02, 2.057e-02, 3.149e-02, 4.650e-02, 3.221e-04, 1.821e-02, 5.422e-07, 2.965e-02, 1.407e-04, -1.562e-02, 2.078e-02), r);\n\tr = MulAdd(s5_7, M4(-3.733e-02, -3.165e-04, -1.253e-02, -2.114e-03, -4.983e-03, 2.351e-02, -4.800e-03, -1.981e-02, -5.786e-02, 3.940e-02, 6.295e-03, -3.255e-02, 1.012e-01, 6.146e-02, 7.819e-02, -1.884e-02), r);\n\tr = MulAdd(s5_8, M4(2.228e-02, -6.352e-03, 3.042e-03, 5.002e-03, -5.742e-02, -9.249e-02, -1.621e-02, -9.820e-03, -1.002e-02, 5.962e-03, 4.975e-02, 6.422e-02, -7.860e-03, -1.443e-02, -2.501e-02, -9.089e-02), r);\n\tr = MulAdd(s6_0, M4(2.593e-02, -2.106e-02, -9.315e-02, -1.588e-02, -4.834e-04, 4.033e-02, 8.170e-02, -2.834e-02, 7.213e-02, -1.698e-02, 1.755e-02, 7.160e-03, 1.784e-03, 7.740e-03, -2.678e-02, -7.900e-03), r);\n\tr = MulAdd(s6_1, M4(-8.337e-02, -1.989e-02, 3.130e-02, 5.416e-02, 1.566e-02, 1.793e-02, 2.356e-02, -4.471e-02, 1.057e-01, 1.272e-01, -6.899e-03, -3.338e-02, -8.641e-02, 5.219e-02, 3.352e-02, 3.797e-02), r);\n\tr = MulAdd(s6_2, M4(-2.020e-02, 1.724e-02, -4.451e-02, -1.208e-01, 2.702e-02, 2.763e-02, 2.839e-02, -7.844e-02, -1.323e-01, -5.892e-02, 8.941e-02, -4.337e-02, 3.685e-02, 1.741e-02, 2.508e-02, 2.584e-02), r);\n\tr = MulAdd(s6_3, M4(-7.072e-02, 1.945e-01, 2.835e-02, -3.890e-02, -3.469e-02, -1.846e-01, -3.491e-02, 8.323e-02, -2.530e-02, 3.240e-02, -5.642e-02, 3.022e-02, -4.714e-02, 1.422e-01, 2.458e-02, -3.335e-02), r);\n\tr = MulAdd(s6_4, M4(-2.238e-01, -2.635e-01, -7.144e-02, 3.293e-01, -1.628e-02, -2.398e-01, 5.062e-02, -2.532e-02, -1.285e-01, -3.389e-01, 3.699e-02, -5.371e-03, -2.601e-01, 5.951e-03, 8.429e-02, -3.201e-02), r);\n\tr = MulAdd(s6_5, M4(-5.851e-02, 9.951e-02, 1.034e-01, -1.406e-02, -4.372e-02, -1.853e-03, -1.871e-02, 8.760e-02, -7.957e-02, 7.662e-02, 2.337e-02, 3.486e-02, -5.366e-02, -4.282e-02, 5.851e-02, 6.527e-02), r);\n\tr = MulAdd(s6_6, M4(-6.305e-02, 3.629e-03, -3.122e-03, 7.434e-02, 3.563e-02, 2.526e-02, -4.778e-02, -1.559e-02, 1.241e-02, 1.023e-02, 1.879e-02, -1.039e-02, 2.028e-02, 4.485e-02, 1.075e-01, 1.070e-03), r);\n\tr = MulAdd(s6_7, M4(-3.823e-03, 2.645e-03, -1.776e-02, 2.066e-02, -2.833e-02, 3.550e-02, 1.445e-02, -4.985e-02, 1.181e-01, 3.897e-02, 2.937e-02, -9.098e-02, 7.650e-02, 3.899e-02, -4.831e-03, -3.704e-02), r);\n\tr = MulAdd(s6_8, M4(-2.920e-02, -5.251e-02, 2.254e-02, -6.883e-02, 5.724e-03, 2.651e-02, -6.057e-03, 9.096e-03, 3.633e-02, -4.201e-02, -3.488e-02, -8.097e-02, 7.612e-02, 2.966e-02, 2.154e-02, -3.136e-02), r);\n\tr = MulAdd(s7_0, M4(-3.748e-02, -3.980e-03, -3.379e-02, 4.711e-03, -6.762e-02, -5.473e-02, 8.404e-03, 2.376e-02, 1.582e-02, -3.229e-02, 1.971e-02, -1.053e-02, 1.884e-02, -3.556e-02, -1.367e-02, -1.498e-02), r);\n\tr = MulAdd(s7_1, M4(5.522e-02, -4.141e-02, -6.959e-02, -1.048e-02, -2.853e-02, -4.921e-02, -8.172e-02, -5.187e-02, -2.900e-02, 2.090e-02, 2.240e-02, 7.973e-03, 7.124e-02, 4.352e-02, 1.140e-01, 5.031e-02), r);\n\tr = MulAdd(s7_2, M4(6.579e-02, 2.978e-02, -5.727e-02, 3.299e-02, 3.543e-03, -2.614e-02, -7.571e-02, 5.378e-02, 2.043e-02, 3.240e-02, -8.687e-03, -1.598e-01, -7.516e-02, 5.146e-02, -1.406e-02, -8.078e-02), r);\n\tr = MulAdd(s7_3, M4(-2.594e-02, 5.558e-02, -1.456e-02, -6.015e-02, 1.152e-02, -5.249e-03, -2.351e-02, 3.421e-02, -1.144e-02, 1.757e-02, -4.052e-02, 2.019e-02, -1.739e-01, 3.596e-02, -2.141e-02, 4.382e-02), r);\n\tr = MulAdd(s7_4, M4(-1.003e-01, -5.029e-02, -6.679e-02, -4.947e-02, -3.767e-02, -1.240e-01, 5.460e-02, 1.720e-01, 7.184e-02, -2.759e-01, -8.478e-02, 9.016e-02, 1.112e-01, -7.125e-02, 2.813e-01, -5.169e-02), r);\n\tr = MulAdd(s7_5, M4(-1.241e-01, -5.689e-03, 5.222e-02, -8.964e-02, -4.678e-03, 8.057e-02, -6.200e-03, 1.470e-01, -1.116e-01, -5.630e-02, -2.219e-02, -8.636e-02, 2.893e-03, -5.927e-03, 1.032e-01, -6.155e-02), r);\n\tr = MulAdd(s7_6, M4(2.134e-02, -1.446e-02, -3.882e-03, 1.371e-02, 1.431e-01, 4.379e-02, -4.228e-02, -2.528e-02, -2.155e-04, 4.310e-02, 1.660e-02, 3.111e-02, 3.602e-02, 5.593e-02, 1.453e-01, -4.403e-02), r);\n\tr = MulAdd(s7_7, M4(2.626e-02, 6.772e-03, 4.549e-02, -3.049e-02, 6.318e-02, 5.360e-02, -4.657e-02, -6.026e-02, 3.501e-02, 4.578e-02, 7.335e-02, -2.653e-03, -8.575e-02, -1.048e-01, -1.078e-01, 4.408e-02), r);\n\tr = MulAdd(s7_8, M4(1.421e-02, 3.581e-02, -1.463e-02, -3.530e-02, -1.142e-02, 2.423e-02, 5.455e-02, -5.861e-03, -1.333e-02, 1.092e-02, -9.548e-03, -2.754e-02, 4.699e-02, 2.851e-02, 2.327e-02, 6.692e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 6.314e-03, -4.083e-03, -5.575e-03, 2.198e-03 };\n\tr = MulAdd(s0_0, M4(3.389e-03, 7.520e-03, 1.259e-02, -6.127e-03, -2.655e-02, 8.277e-02, 2.915e-02, 6.486e-03, 1.382e-02, 2.716e-02, 3.918e-02, -6.574e-04, 2.565e-03, -2.330e-02, 3.136e-02, 9.207e-03), r);\n\tr = MulAdd(s0_1, M4(-4.758e-02, 2.047e-02, -1.812e-01, 8.253e-02, -6.141e-02, 5.434e-02, 1.445e-02, 2.395e-02, 8.711e-02, -8.225e-02, 9.429e-03, -8.062e-03, 3.237e-02, -6.446e-02, 3.525e-02, -4.911e-02), r);\n\tr = MulAdd(s0_2, M4(-2.555e-02, -3.058e-02, 8.718e-02, 5.322e-03, 9.204e-02, -1.655e-02, 5.964e-02, 1.076e-04, -3.852e-04, 4.576e-02, -3.975e-02, 1.268e-02, -2.084e-02, 6.389e-02, -6.946e-02, -6.118e-03), r);\n\tr = MulAdd(s0_3, M4(-2.187e-02, -1.655e-01, -6.551e-03, 2.522e-02, 2.641e-03, -2.192e-02, 1.919e-02, -3.912e-02, 4.619e-03, 5.472e-02, 9.158e-03, 2.166e-02, -5.676e-02, -9.017e-03, -5.924e-02, 2.695e-02), r);\n\tr = MulAdd(s0_4, M4(4.154e-02, 2.009e-02, 9.076e-02, 4.883e-02, -4.819e-02, 6.009e-02, -6.625e-02, -1.990e-02, 4.523e-02, -8.145e-02, -6.002e-02, -4.633e-02, -5.778e-02, -1.835e-01, -5.321e-03, 2.915e-01), r);\n\tr = MulAdd(s0_5, M4(-4.155e-03, 2.182e-02, -1.415e-01, -4.433e-02, -1.183e-01, -3.640e-02, -1.119e-03, -1.014e-01, -1.588e-02, 2.212e-02, 2.553e-02, 6.293e-03, 1.599e-04, -3.732e-03, 2.497e-02, 8.028e-02), r);\n\tr = MulAdd(s0_6, M4(-6.323e-02, -1.055e-01, -1.316e-02, 2.636e-02, 9.896e-03, 1.086e-02, -8.842e-03, -3.453e-02, -8.107e-02, -1.236e-01, 4.905e-02, 3.644e-02, -2.301e-02, 2.756e-02, 2.838e-02, 1.820e-02), r);\n\tr = MulAdd(s0_7, M4(1.173e-04, 1.045e-01, -4.923e-02, 1.502e-01, 1.812e-02, -3.892e-02, -6.967e-02, -9.212e-02, -4.975e-02, 9.300e-02, -3.681e-02, -3.613e-02, 2.705e-03, -4.590e-02, 5.355e-02, 4.852e-02), r);\n\tr = MulAdd(s0_8, M4(-1.247e-02, 1.215e-02, 8.609e-02, 2.064e-02, 2.757e-02, 2.189e-02, 3.840e-03, 8.995e-02, -4.468e-02, 5.286e-02, 1.303e-02, -1.663e-02, -1.885e-02, -1.112e-01, 3.460e-02, -6.100e-02), r);\n\tr = MulAdd(s1_0, M4(-6.209e-03, -3.165e-02, 7.816e-03, -3.634e-03, 8.947e-03, 6.921e-02, -3.440e-02, 1.416e-02, 6.665e-02, -7.318e-02, 1.376e-01, -2.433e-02, -6.348e-02, 1.719e-02, -9.155e-02, 4.758e-02), r);\n\tr = MulAdd(s1_1, M4(-2.517e-02, -3.704e-02, -1.910e-01, 5.597e-02, 1.456e-02, 4.829e-02, -4.931e-02, -4.123e-02, 1.742e-01, 5.163e-02, 2.168e-02, 2.448e-02, 9.981e-02, -3.471e-02, 1.550e-01, 2.594e-02), r);\n\tr = MulAdd(s1_2, M4(-2.252e-02, 6.209e-03, 8.043e-02, -6.079e-03, -3.058e-02, 2.503e-02, -5.771e-03, -5.417e-02, 2.677e-02, -2.000e-02, -8.863e-03, -2.313e-02, 3.216e-02, 6.615e-02, 7.237e-02, -1.405e-02), r);\n\tr = MulAdd(s1_3, M4(-4.097e-02, -8.106e-02, -8.285e-02, -3.040e-02, -1.665e-02, -3.258e-02, 1.702e-02, -1.129e-01, -2.340e-02, -5.312e-02, -9.272e-02, 6.036e-02, -5.192e-02, 8.648e-02, 3.332e-02, 4.482e-02), r);\n\tr = MulAdd(s1_4, M4(-2.622e-01, 1.383e-01, 1.763e-01, 3.596e-02, -1.208e-01, -2.145e-02, -4.241e-02, 1.184e-03, 7.848e-03, 5.837e-02, 2.803e-02, 1.070e-01, -2.225e-01, -1.420e-01, 1.186e-01, 3.776e-01), r);\n\tr = MulAdd(s1_5, M4(1.724e-02, 2.162e-02, -9.960e-02, 2.283e-02, 9.574e-03, -1.244e-03, 8.956e-02, -6.425e-02, -1.665e-03, -6.402e-02, 1.868e-01, 1.540e-02, -5.122e-02, 5.534e-03, -5.407e-02, 3.521e-02), r);\n\tr = MulAdd(s1_6, M4(-2.751e-02, -4.400e-02, -5.879e-02, 9.095e-02, -1.055e-02, -8.811e-02, -1.175e-02, -3.915e-02, -7.902e-02, 3.564e-02, 7.063e-02, 1.030e-01, -5.694e-02, 4.038e-02, 2.582e-02, 1.242e-02), r);\n\tr = MulAdd(s1_7, M4(-4.710e-02, 5.456e-02, 1.631e-02, -4.291e-02, -4.871e-02, 1.195e-01, -6.078e-02, -1.251e-02, -6.566e-03, -5.065e-03, -6.147e-02, 1.044e-01, -2.083e-02, -1.261e-01, -1.621e-02, 1.057e-01), r);\n\tr = MulAdd(s1_8, M4(-4.416e-02, -8.665e-03, 7.289e-02, 3.140e-02, -3.017e-02, -9.005e-02, -1.364e-02, 7.446e-02, -9.741e-02, -7.978e-02, 7.782e-02, -7.551e-02, 9.433e-03, 9.623e-03, -2.048e-02, -2.947e-02), r);\n\tr = MulAdd(s2_0, M4(-2.772e-02, -2.164e-02, 7.659e-03, 3.794e-02, 3.537e-02, -2.254e-03, 4.604e-02, -2.204e-02, 1.463e-02, -9.815e-03, 4.111e-02, -2.033e-02, -2.097e-02, 5.408e-02, 6.952e-03, 7.498e-03), r);\n\tr = MulAdd(s2_1, M4(-8.917e-02, 2.835e-02, -6.648e-02, 8.636e-02, 8.864e-02, -1.684e-02, 1.480e-02, -4.429e-02, 7.328e-02, -1.959e-02, -3.038e-02, -5.018e-02, -1.222e-01, -5.620e-02, -9.890e-02, -5.691e-03), r);\n\tr = MulAdd(s2_2, M4(6.699e-03, -5.826e-02, 1.179e-01, 2.583e-02, 3.530e-02, 1.282e-02, -2.807e-02, 4.409e-02, -1.438e-02, -3.262e-02, -1.637e-02, 5.157e-02, 3.423e-02, -7.116e-02, -7.770e-03, -1.286e-01), r);\n\tr = MulAdd(s2_3, M4(2.608e-03, 1.971e-03, 4.447e-02, 2.838e-02, 6.664e-02, 5.280e-02, -2.170e-02, 2.916e-02, 3.502e-02, 1.525e-02, 7.754e-03, -3.301e-02, -2.718e-02, 1.582e-02, -1.755e-02, -2.574e-02), r);\n\tr = MulAdd(s2_4, M4(8.622e-02, -2.638e-02, 3.665e-02, 8.406e-02, 1.411e-01, 9.089e-02, 2.236e-02, 1.003e-01, -9.570e-02, -2.679e-02, -1.657e-02, 1.166e-02, -5.251e-02, 5.898e-02, -1.092e-01, -7.743e-02), r);\n\tr = MulAdd(s2_5, M4(6.079e-03, -5.918e-02, -3.265e-02, -1.002e-01, 2.006e-02, 1.386e-02, 1.995e-03, 1.169e-01, -8.563e-02, 1.317e-02, 7.274e-03, -7.258e-02, 3.792e-02, -4.827e-02, -9.086e-02, -8.636e-03), r);\n\tr = MulAdd(s2_6, M4(-3.646e-04, -2.339e-03, 2.319e-04, -1.914e-02, -3.163e-02, 9.229e-02, 5.341e-02, 6.546e-03, 2.506e-02, -1.426e-02, 9.487e-03, 1.894e-02, -4.312e-03, -1.777e-02, -3.552e-02, 1.463e-02), r);\n\tr = MulAdd(s2_7, M4(2.148e-02, -9.688e-02, -9.999e-05, -2.830e-02, 4.155e-02, -6.702e-02, -6.066e-02, 1.354e-01, -3.162e-02, 3.835e-02, 1.017e-02, -3.827e-02, 2.321e-02, -1.329e-01, -7.002e-02, -3.650e-02), r);\n\tr = MulAdd(s2_8, M4(7.319e-03, 5.381e-02, 2.118e-02, -9.138e-03, -2.484e-02, 5.284e-02, -1.983e-02, 1.940e-02, 3.993e-02, 8.693e-02, 1.614e-03, -2.157e-02, 2.590e-02, 3.161e-02, -1.333e-02, 1.129e-02), r);\n\tr = MulAdd(s3_0, M4(-3.835e-02, -1.086e-01, -6.134e-02, 5.504e-02, 3.912e-02, 2.655e-02, 1.710e-02, 1.143e-02, 4.701e-02, 6.549e-02, 6.884e-02, -1.620e-02, -5.762e-02, 9.618e-02, 1.094e-02, 1.850e-02), r);\n\tr = MulAdd(s3_1, M4(-3.649e-02, -6.180e-02, -6.058e-02, 3.240e-02, 7.819e-02, -3.521e-02, -4.401e-03, 3.315e-04, 2.334e-01, 2.764e-02, -2.176e-02, -5.948e-02, -5.164e-02, 4.412e-02, -4.379e-02, 2.517e-02), r);\n\tr = MulAdd(s3_2, M4(7.464e-02, 6.763e-02, 4.442e-02, -1.586e-02, 4.191e-02, -1.634e-03, 2.254e-02, 1.911e-02, -6.519e-03, -1.946e-02, -1.119e-01, 2.122e-02, 1.112e-02, 4.285e-02, 3.919e-03, -8.520e-02), r);\n\tr = MulAdd(s3_3, M4(4.564e-02, 3.957e-02, 4.070e-02, 4.562e-02, 9.257e-02, 1.840e-01, 1.044e-01, -7.292e-02, 1.704e-02, 1.096e-02, -1.576e-02, 1.956e-02, -7.280e-03, 2.829e-02, 4.816e-02, -5.652e-02), r);\n\tr = MulAdd(s3_4, M4(-6.038e-02, -4.830e-02, -3.901e-02, -5.662e-02, 1.457e-01, -8.420e-02, -1.141e-01, 1.137e-02, -2.900e-01, -4.448e-02, 5.993e-02, 5.101e-02, -4.159e-02, 2.104e-02, -5.328e-02, -8.542e-02), r);\n\tr = MulAdd(s3_5, M4(6.747e-02, -1.077e-01, -5.995e-02, 1.671e-02, -9.475e-03, 5.400e-02, 2.693e-02, 3.299e-02, 1.088e-01, -6.452e-02, -1.231e-01, -3.380e-02, 4.675e-02, 1.599e-01, -3.624e-02, -8.522e-02), r);\n\tr = MulAdd(s3_6, M4(7.962e-03, -8.543e-03, -3.318e-02, -5.200e-03, 7.211e-03, -1.726e-01, 1.866e-02, 8.409e-02, -8.670e-03, -9.018e-03, 5.544e-03, 6.002e-03, -2.450e-02, -1.675e-02, -2.034e-03, -2.768e-02), r);\n\tr = MulAdd(s3_7, M4(1.023e-02, -1.049e-02, -1.083e-02, -6.048e-03, -1.614e-02, 1.820e-01, -3.182e-02, 1.057e-01, -8.497e-02, -7.472e-02, -4.692e-02, -1.809e-01, 2.098e-03, -5.967e-02, -1.593e-02, -8.026e-02), r);\n\tr = MulAdd(s3_8, M4(-6.207e-04, -7.989e-02, 2.571e-02, -8.136e-03, -7.600e-02, -8.224e-03, 2.579e-03, -9.677e-03, 1.446e-02, 5.286e-02, 5.722e-02, -2.114e-01, 2.445e-02, 1.152e-01, 2.590e-02, -3.222e-02), r);\n\tr = MulAdd(s4_0, M4(1.107e-01, -1.932e-01, 1.181e-01, 1.244e-01, 1.052e-02, -2.045e-03, -5.702e-02, -5.084e-02, 1.022e-02, 1.248e-01, 3.951e-02, 2.430e-02, -1.406e-02, -7.153e-02, -1.988e-02, -3.406e-02), r);\n\tr = MulAdd(s4_1, M4(2.168e-01, 3.301e-01, -3.037e-01, -1.521e-01, -1.148e-03, -1.835e-02, 1.568e-01, -4.724e-02, 9.126e-03, -4.870e-02, 4.026e-01, 3.410e-02, 2.907e-02, -5.150e-02, 1.901e-02, 1.412e-02), r);\n\tr = MulAdd(s4_2, M4(-2.752e-02, 1.816e-01, 4.655e-02, -7.580e-03, -1.531e-02, -2.478e-02, 4.788e-02, 9.896e-03, 4.648e-02, -1.044e-03, -2.435e-01, 3.216e-02, -7.542e-03, 3.881e-02, -4.490e-02, -1.692e-02), r);\n\tr = MulAdd(s4_3, M4(4.083e-03, -8.252e-02, 7.615e-02, -6.034e-03, -4.900e-02, -7.941e-04, -2.180e-02, 4.432e-02, -1.169e-01, -3.038e-01, -1.582e-01, 3.322e-02, 2.337e-02, 9.954e-02, 5.759e-02, -3.145e-02), r);\n\tr = MulAdd(s4_4, M4(1.809e-01, 1.998e-01, -2.385e-01, -1.622e-01, -2.636e-01, -5.135e-02, -1.089e-01, -7.099e-02, -4.772e-02, -1.316e-02, 6.929e-02, 2.244e-01, -6.401e-02, -1.020e-01, -3.989e-02, -4.384e-02), r);\n\tr = MulAdd(s4_5, M4(1.310e-01, -3.503e-02, -3.116e-02, 4.078e-02, -7.105e-02, 7.444e-02, 1.083e-01, -2.499e-02, -1.096e-01, 1.192e-01, 2.203e-01, 6.741e-02, 7.082e-02, -3.199e-02, -2.389e-02, -7.691e-03), r);\n\tr = MulAdd(s4_6, M4(2.407e-02, -8.619e-02, 1.150e-02, 6.375e-02, -2.031e-02, -4.217e-03, -5.799e-02, -3.167e-02, -1.169e-02, 1.101e-01, 6.112e-02, 9.285e-02, -1.937e-02, -6.077e-02, -2.599e-02, -3.607e-02), r);\n\tr = MulAdd(s4_7, M4(6.888e-02, 8.476e-02, -3.626e-02, -9.159e-02, 8.328e-02, 7.028e-02, 1.003e-01, -1.180e-01, 4.958e-02, 2.138e-01, -3.550e-02, -9.948e-02, 4.862e-02, 3.980e-02, 4.726e-02, 1.236e-01), r);\n\tr = MulAdd(s4_8, M4(-6.420e-02, 1.342e-02, -1.840e-02, 4.381e-03, 5.058e-02, -4.503e-02, -1.165e-02, -5.512e-03, 1.917e-02, -8.328e-02, -4.917e-02, 8.961e-02, -1.187e-03, -6.838e-02, 8.467e-03, 1.941e-02), r);\n\tr = MulAdd(s5_0, M4(-1.283e-02, -3.051e-02, -2.338e-02, 2.785e-02, -8.060e-02, -3.968e-02, -8.266e-03, -3.505e-02, -1.696e-02, 1.227e-03, -6.607e-02, 5.849e-02, 1.190e-02, -5.225e-02, 7.617e-02, -3.870e-02), r);\n\tr = MulAdd(s5_1, M4(-1.012e-02, 2.933e-02, 6.008e-02, -5.941e-02, -1.743e-01, 1.073e-01, 8.960e-02, 3.006e-02, -7.397e-03, -8.892e-03, 1.642e-01, 8.724e-03, -8.483e-03, 3.919e-02, -3.170e-02, 3.047e-02), r);\n\tr = MulAdd(s5_2, M4(-1.243e-02, 4.956e-02, -6.467e-02, -3.278e-03, -4.259e-02, -6.732e-02, 1.487e-01, 6.521e-02, 1.985e-03, 4.255e-02, -7.472e-02, 1.858e-02, 7.445e-02, -5.746e-03, 6.434e-02, 3.068e-02), r);\n\tr = MulAdd(s5_3, M4(-3.875e-02, 3.297e-02, 4.139e-02, 3.460e-03, -8.803e-02, -4.263e-02, -3.565e-02, 1.007e-01, 3.837e-03, -2.905e-02, 7.172e-02, 1.306e-02, 2.493e-02, -5.609e-02, -8.131e-03, 6.291e-02), r);\n\tr = MulAdd(s5_4, M4(1.073e-02, -3.688e-02, -2.959e-02, 9.288e-02, -2.241e-01, 3.321e-01, 1.306e-02, -1.070e-01, -1.482e-02, 2.946e-01, -8.599e-02, -4.609e-02, 2.239e-02, -2.737e-02, 2.610e-02, -4.906e-02), r);\n\tr = MulAdd(s5_5, M4(2.187e-02, 1.376e-02, -3.030e-03, 7.956e-03, -5.125e-02, 1.164e-01, 1.200e-02, -9.520e-03, -5.519e-02, 4.714e-02, 2.154e-01, 1.160e-01, -1.639e-02, 1.855e-02, -1.008e-01, -9.249e-03), r);\n\tr = MulAdd(s5_6, M4(-3.453e-03, 3.348e-02, 1.712e-03, -5.011e-04, -2.201e-02, 2.151e-02, 1.979e-03, -3.395e-03, -1.213e-02, 2.729e-02, -1.139e-02, 2.189e-02, -5.663e-03, -2.467e-02, 2.476e-02, -7.377e-03), r);\n\tr = MulAdd(s5_7, M4(9.396e-03, -7.747e-02, -2.811e-03, -2.149e-02, -1.751e-02, -3.344e-02, 3.985e-02, -1.433e-01, 2.146e-02, 1.891e-01, 3.188e-02, -1.117e-03, -4.576e-02, 1.339e-02, 3.734e-02, 1.048e-01), r);\n\tr = MulAdd(s5_8, M4(1.191e-02, -1.195e-03, -2.296e-02, -1.627e-02, 2.020e-02, -2.480e-02, 3.299e-03, -8.490e-03, 3.822e-03, -5.529e-02, -1.678e-02, 6.861e-02, -2.428e-02, -8.002e-03, 5.558e-02, 1.979e-02), r);\n\tr = MulAdd(s6_0, M4(-5.811e-02, 4.039e-02, -6.513e-02, -6.604e-03, 1.075e-01, 2.321e-02, 5.469e-02, 8.040e-03, 2.506e-02, 1.163e-02, 3.306e-02, -1.456e-03, -1.529e-02, -5.932e-02, -5.833e-02, 2.738e-03), r);\n\tr = MulAdd(s6_1, M4(-4.884e-02, -1.715e-01, -1.916e-01, 2.897e-02, 1.843e-01, -4.692e-02, -1.853e-02, -2.230e-02, 1.414e-01, 7.402e-02, -1.075e-01, -3.494e-02, -4.290e-02, 1.058e-01, -1.465e-01, -2.229e-02), r);\n\tr = MulAdd(s6_2, M4(-1.153e-01, -7.394e-02, -6.556e-02, -6.556e-02, -8.043e-03, 1.193e-02, 5.607e-02, 1.844e-03, -1.837e-01, 9.215e-02, 9.504e-02, 9.817e-03, 2.725e-02, 1.198e-02, 5.897e-02, 3.098e-02), r);\n\tr = MulAdd(s6_3, M4(1.761e-02, 4.537e-02, 1.067e-01, -8.746e-03, 1.787e-02, -9.920e-02, -3.239e-02, 5.108e-02, 4.780e-03, -9.644e-02, -1.311e-02, -3.046e-02, -2.323e-02, -3.263e-02, 5.415e-02, -4.851e-02), r);\n\tr = MulAdd(s6_4, M4(-8.053e-02, 1.545e-02, 1.066e-01, -4.617e-02, -4.559e-02, 1.879e-01, 9.376e-02, -7.496e-02, 6.741e-02, 1.779e-01, 6.361e-02, -7.797e-02, -1.107e-01, 2.214e-01, -2.272e-02, 1.426e-01), r);\n\tr = MulAdd(s6_5, M4(-6.805e-02, -3.927e-02, -6.014e-03, -7.738e-02, 9.368e-02, -1.609e-01, -1.065e-01, 1.225e-02, -6.853e-02, 1.932e-01, -1.668e-02, -9.059e-02, 6.658e-02, 3.841e-02, -5.200e-03, 5.170e-02), r);\n\tr = MulAdd(s6_6, M4(-4.656e-02, 4.504e-02, -5.287e-02, -1.644e-02, -3.346e-02, 3.679e-02, 1.028e-02, -1.186e-02, 1.765e-02, -3.214e-02, -6.109e-03, 1.846e-02, 3.606e-02, -2.207e-02, -2.926e-02, 1.434e-02), r);\n\tr = MulAdd(s6_7, M4(-8.875e-02, -1.138e-01, 3.614e-02, 5.972e-02, -4.303e-02, -6.824e-02, -6.290e-02, 3.037e-02, 8.320e-02, 5.187e-02, 2.754e-04, -2.584e-02, -1.107e-02, 9.315e-02, -6.093e-03, -6.393e-02), r);\n\tr = MulAdd(s6_8, M4(1.157e-02, -4.621e-02, -6.926e-02, 8.876e-02, -9.391e-03, 3.727e-02, -4.458e-02, 2.121e-02, 2.106e-02, -3.948e-02, 8.082e-02, 2.461e-02, 6.079e-02, -4.652e-02, -2.836e-02, 2.681e-02), r);\n\tr = MulAdd(s7_0, M4(5.114e-03, -2.569e-02, 3.260e-02, -2.151e-02, 7.769e-02, -4.802e-02, 5.664e-02, -1.079e-02, 1.984e-02, 1.183e-01, -1.139e-02, -1.175e-02, 3.094e-02, -1.100e-01, -4.499e-02, 1.390e-02), r);\n\tr = MulAdd(s7_1, M4(-3.389e-02, 4.241e-02, 5.527e-03, -2.112e-02, 1.048e-01, 9.467e-02, 5.713e-02, 2.728e-02, 5.989e-03, -9.983e-02, 7.461e-03, 1.058e-02, -5.544e-02, -8.213e-02, -1.014e-01, -3.043e-02), r);\n\tr = MulAdd(s7_2, M4(7.503e-02, -1.825e-02, 5.429e-02, -3.717e-02, 9.214e-02, -5.261e-02, 1.210e-02, -3.390e-03, -3.252e-02, -1.036e-02, 2.489e-02, 6.203e-02, -1.003e-01, -4.716e-02, 1.022e-01, -1.309e-02), r);\n\tr = MulAdd(s7_3, M4(-7.687e-03, -3.867e-02, -1.057e-02, 6.437e-03, -2.496e-03, -3.949e-02, -1.606e-02, 8.343e-02, -5.804e-03, 4.233e-02, -4.025e-03, -6.402e-02, -1.085e-02, -5.191e-02, -2.972e-02, -5.956e-02), r);\n\tr = MulAdd(s7_4, M4(3.281e-02, 1.172e-01, -3.093e-02, -1.255e-01, -4.895e-02, 2.468e-01, 5.429e-02, -1.111e-02, -1.089e-01, -1.431e-01, -1.288e-02, 4.952e-02, -7.425e-02, 2.862e-01, -1.732e-01, 1.773e-01), r);\n\tr = MulAdd(s7_5, M4(-1.177e-02, -1.894e-02, 1.171e-01, 4.028e-02, -1.568e-02, -9.985e-02, 1.032e-02, 2.611e-02, 8.357e-02, -1.436e-01, -2.002e-02, 1.269e-01, -4.641e-02, 1.211e-01, 1.137e-01, -1.541e-02), r);\n\tr = MulAdd(s7_6, M4(-4.138e-02, -2.104e-02, 3.944e-03, 2.774e-02, -4.084e-02, -2.422e-03, 6.718e-03, -5.330e-02, -4.369e-03, -1.373e-02, -5.662e-02, -2.131e-02, -3.799e-03, -1.844e-01, 9.049e-03, 1.410e-02), r);\n\tr = MulAdd(s7_7, M4(-3.916e-02, 1.121e-02, 1.577e-02, 1.032e-01, -7.639e-02, -1.868e-02, -3.693e-03, 2.118e-02, 3.999e-02, 7.610e-02, -1.003e-02, 1.874e-02, 1.143e-02, 9.148e-02, 5.547e-02, -9.316e-02), r);\n\tr = MulAdd(s7_8, M4(-8.276e-02, 4.820e-02, 1.563e-02, -8.235e-04, 1.295e-02, 5.992e-02, -1.244e-05, 4.372e-02, 2.411e-02, -1.194e-01, 5.303e-02, -8.634e-03, 1.812e-02, 4.170e-02, -3.776e-03, 3.476e-03), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.032e-02, 5.736e-03, -4.566e-03, 3.095e-03 };\n\tr = MulAdd(s0_0, M4(-2.317e-02, 2.140e-02, 5.416e-02, -3.220e-02, -5.220e-02, -5.906e-03, -1.792e-02, 3.296e-02, -4.396e-03, -9.631e-03, 6.281e-02, -4.701e-02, -6.206e-02, -7.251e-02, 4.026e-02, -1.600e-02), r);\n\tr = MulAdd(s0_1, M4(2.089e-02, 6.746e-02, -5.823e-03, 5.393e-02, 5.533e-02, 1.709e-02, -3.691e-02, 8.463e-02, 4.272e-02, -3.489e-02, -4.922e-02, 7.840e-03, 5.114e-03, -1.452e-02, 3.875e-02, 1.932e-02), r);\n\tr = MulAdd(s0_2, M4(5.195e-03, 1.274e-03, -5.657e-02, 1.168e-02, -3.941e-02, -1.394e-02, -7.360e-02, 3.376e-02, 2.325e-02, -7.857e-03, 2.286e-02, 8.450e-03, -4.495e-03, 2.191e-02, -1.329e-02, 1.460e-02), r);\n\tr = MulAdd(s0_3, M4(1.573e-04, -4.436e-02, -2.109e-02, -1.335e-01, -1.842e-02, -4.377e-02, -6.477e-02, 2.106e-02, 4.104e-02, -5.521e-02, -9.645e-02, 5.413e-02, 3.379e-02, -1.389e-02, 2.989e-02, -2.019e-02), r);\n\tr = MulAdd(s0_4, M4(1.023e-01, -1.913e-01, -2.146e-01, 6.818e-02, -1.643e-01, -1.071e-02, -1.921e-01, 1.987e-01, 1.573e-01, 8.096e-02, -2.236e-01, 9.724e-03, 1.502e-01, 9.444e-02, -7.957e-03, -2.216e-02), r);\n\tr = MulAdd(s0_5, M4(1.138e-01, -4.090e-02, -2.311e-02, -7.045e-03, 8.998e-02, 9.199e-02, -1.691e-02, -9.715e-02, -9.920e-02, -4.076e-02, 2.764e-02, -2.509e-03, -9.408e-02, -3.508e-02, 3.689e-02, 3.136e-03), r);\n\tr = MulAdd(s0_6, M4(-8.569e-02, -5.073e-02, 1.737e-02, -1.988e-02, 3.497e-02, -3.528e-02, 4.473e-02, 1.117e-02, -3.247e-02, 3.441e-02, 4.658e-02, 3.563e-03, -6.532e-02, 3.094e-02, -2.603e-02, -1.594e-02), r);\n\tr = MulAdd(s0_7, M4(-3.660e-02, 2.247e-02, 9.556e-03, -3.751e-02, 3.481e-02, -7.663e-02, 5.949e-02, 3.491e-02, -6.302e-02, -1.131e-02, 4.001e-02, 4.220e-02, -7.085e-02, 8.020e-02, -1.445e-02, 2.678e-03), r);\n\tr = MulAdd(s0_8, M4(-2.271e-02, 7.600e-03, -2.439e-02, 3.518e-02, 1.157e-01, 1.564e-02, -5.385e-02, 4.756e-02, -1.477e-02, 3.291e-02, 6.282e-02, -3.349e-02, -8.181e-02, 2.934e-03, 2.245e-02, 3.534e-03), r);\n\tr = MulAdd(s1_0, M4(-4.513e-03, 5.126e-03, 2.772e-02, 3.921e-03, 5.944e-02, 3.714e-02, -2.007e-02, 1.012e-02, -5.767e-02, -1.997e-02, 3.428e-02, -5.718e-02, 1.012e-01, -7.172e-03, -3.383e-02, 1.009e-02), r);\n\tr = MulAdd(s1_1, M4(6.715e-02, -5.956e-03, 4.303e-03, -3.528e-02, -1.212e-01, -1.498e-01, 3.718e-02, 3.506e-03, -1.220e-02, 1.185e-02, 4.649e-02, -4.015e-02, 8.337e-02, -8.463e-02, -4.352e-02, 8.703e-02), r);\n\tr = MulAdd(s1_2, M4(-5.595e-02, -1.257e-02, -8.995e-03, 3.012e-03, 2.058e-02, 7.551e-02, -8.898e-02, 3.804e-02, -4.212e-04, 1.656e-02, -2.705e-02, -2.645e-03, 1.868e-03, -3.374e-02, -7.498e-03, -6.545e-03), r);\n\tr = MulAdd(s1_3, M4(-7.578e-02, 5.953e-02, -4.641e-02, -1.321e-01, -1.298e-01, 8.306e-03, -3.359e-02, -7.056e-02, 1.799e-01, -1.448e-01, -1.019e-01, 9.464e-02, -3.545e-02, -9.008e-03, -5.548e-02, 2.500e-01), r);\n\tr = MulAdd(s1_4, M4(-2.196e-01, 7.144e-02, -4.200e-02, -1.117e-01, -9.059e-03, -3.158e-01, -2.360e-01, 3.103e-01, 1.813e-02, 5.464e-01, -1.661e-01, -8.085e-02, 5.253e-01, 8.802e-03, -1.143e-01, -2.565e-02), r);\n\tr = MulAdd(s1_5, M4(1.983e-02, -2.760e-02, 2.705e-03, 2.669e-03, 2.214e-01, 4.875e-02, 4.467e-02, -5.118e-02, -1.282e-01, -6.104e-02, -4.064e-02, 6.221e-03, -4.961e-02, 6.540e-02, 2.248e-02, -6.910e-02), r);\n\tr = MulAdd(s1_6, M4(2.671e-02, 5.138e-02, -1.806e-02, 5.722e-02, 1.702e-02, -1.124e-02, 3.056e-02, 2.635e-02, 1.622e-02, 1.989e-02, -9.058e-02, -1.958e-01, 7.815e-02, -8.188e-02, 5.310e-03, 4.956e-02), r);\n\tr = MulAdd(s1_7, M4(-4.606e-02, 2.003e-02, 9.441e-02, -1.335e-01, 5.994e-02, -4.677e-02, 2.642e-02, -1.509e-01, 1.292e-01, 1.304e-01, -2.094e-01, -1.505e-02, 3.770e-04, -1.385e-01, 4.338e-02, 8.370e-03), r);\n\tr = MulAdd(s1_8, M4(3.139e-02, -1.360e-02, -2.001e-02, 1.669e-02, 6.420e-02, 3.712e-03, -3.536e-02, -1.866e-02, -8.856e-02, 7.694e-02, 3.597e-02, -3.272e-02, 5.091e-02, -7.110e-03, -2.042e-02, -1.545e-03), r);\n\tr = MulAdd(s2_0, M4(-4.959e-02, -1.329e-02, 7.463e-02, -5.105e-02, -6.674e-02, -1.251e-02, -7.988e-02, -2.182e-02, -3.110e-02, 5.533e-03, -8.445e-03, 3.012e-02, -2.530e-03, -2.695e-02, -1.047e-02, 1.376e-03), r);\n\tr = MulAdd(s2_1, M4(-2.554e-02, 3.709e-02, 2.154e-02, 2.171e-02, 1.773e-02, 3.657e-02, 4.825e-03, -2.766e-02, 7.339e-02, 4.920e-03, 1.234e-02, -2.246e-02, 2.705e-02, -3.987e-02, -6.584e-02, 5.236e-02), r);\n\tr = MulAdd(s2_2, M4(-9.939e-02, -4.689e-03, 6.423e-03, -3.887e-02, 1.546e-02, -1.286e-03, -4.168e-03, -5.610e-03, 4.064e-02, -1.559e-02, 6.352e-02, 4.886e-03, 3.035e-02, 4.711e-02, -6.727e-02, -1.255e-02), r);\n\tr = MulAdd(s2_3, M4(-6.140e-02, 2.251e-02, -7.983e-02, 4.682e-02, 7.263e-02, -9.888e-02, 1.013e-01, 2.559e-02, 4.873e-02, -3.090e-02, 1.298e-02, 3.469e-02, 1.480e-02, -1.960e-02, -2.372e-02, 7.838e-02), r);\n\tr = MulAdd(s2_4, M4(1.145e-01, 3.273e-02, -9.605e-02, 9.318e-02, 7.247e-02, 2.200e-01, 6.268e-02, -5.290e-02, -6.122e-02, 1.093e-01, 8.228e-02, 1.287e-02, -1.459e-01, 8.318e-02, -4.853e-02, 5.085e-02), r);\n\tr = MulAdd(s2_5, M4(-4.779e-02, 8.225e-02, 2.385e-02, -4.571e-02, -9.574e-02, -4.217e-02, -4.030e-02, 2.191e-02, -5.811e-02, 1.499e-01, 6.884e-03, -2.423e-02, 5.154e-02, 6.224e-02, -4.652e-03, -6.035e-02), r);\n\tr = MulAdd(s2_6, M4(3.869e-03, -2.026e-02, 6.053e-03, -5.713e-02, -1.018e-01, 9.545e-02, -4.759e-02, -9.942e-02, -1.872e-02, 4.380e-02, -3.654e-02, 8.080e-02, -4.077e-02, -2.924e-03, 7.406e-03, 3.256e-02), r);\n\tr = MulAdd(s2_7, M4(-8.854e-02, -4.094e-02, -2.080e-03, -1.691e-02, 9.260e-02, -6.120e-02, -1.187e-01, -1.536e-02, 8.251e-02, -8.033e-02, -8.385e-04, 2.646e-02, 1.253e-01, -1.084e-01, 2.630e-03, 4.265e-02), r);\n\tr = MulAdd(s2_8, M4(-6.622e-03, 5.509e-02, -8.380e-03, -1.103e-02, -3.211e-02, -3.222e-02, 5.015e-02, -1.870e-02, -1.441e-02, 6.121e-02, -3.573e-02, 1.764e-02, -1.146e-02, 4.329e-02, -2.472e-02, -5.634e-02), r);\n\tr = MulAdd(s3_0, M4(4.565e-02, -9.615e-02, 1.248e-01, 2.272e-02, 1.459e-02, -3.926e-04, 6.452e-02, -2.011e-02, -1.717e-02, 2.410e-02, -6.860e-02, 1.250e-02, -2.947e-02, 4.729e-02, -1.287e-02, -9.612e-03), r);\n\tr = MulAdd(s3_1, M4(-9.178e-02, 1.314e-01, 1.739e-02, -1.607e-01, -1.972e-02, 1.872e-02, -1.539e-02, -6.145e-03, -1.497e-01, -6.470e-02, -8.867e-02, -6.312e-02, -7.243e-02, -1.322e-01, -8.911e-02, 7.905e-02), r);\n\tr = MulAdd(s3_2, M4(2.068e-02, 5.043e-02, 2.388e-02, 3.200e-02, -1.141e-02, 9.786e-03, 4.909e-03, 1.095e-02, 7.105e-02, 8.328e-03, 7.145e-03, 3.723e-02, -7.693e-02, 4.742e-03, -1.476e-02, -4.959e-02), r);\n\tr = MulAdd(s3_3, M4(-8.096e-02, 8.019e-02, -6.519e-02, -1.301e-02, -2.094e-01, 7.597e-03, -2.663e-02, -1.061e-01, 7.876e-02, -5.979e-02, -1.494e-02, -3.206e-03, -1.928e-02, -5.113e-03, -2.049e-03, 2.542e-02), r);\n\tr = MulAdd(s3_4, M4(-1.123e-01, 4.295e-01, -7.619e-02, -1.627e-01, 2.100e-01, -1.334e-01, 3.049e-02, -5.113e-02, 1.782e-01, 9.771e-02, -7.037e-02, 1.228e-02, -2.200e-01, -4.146e-03, -1.990e-02, 2.668e-02), r);\n\tr = MulAdd(s3_5, M4(-2.272e-02, -4.168e-02, 5.787e-03, 8.180e-02, -1.149e-01, 8.850e-03, 2.428e-02, -1.037e-04, 1.139e-03, -3.601e-02, -1.110e-01, 5.826e-02, -1.135e-01, -1.448e-02, -4.284e-02, -8.897e-02), r);\n\tr = MulAdd(s3_6, M4(2.568e-02, -3.332e-02, -1.429e-02, -7.309e-03, 8.377e-02, -8.014e-02, 3.598e-02, 1.488e-02, -5.766e-02, 6.066e-02, 2.302e-02, -7.826e-02, -9.080e-02, -6.473e-03, 2.925e-02, -1.859e-02), r);\n\tr = MulAdd(s3_7, M4(1.522e-02, 9.791e-02, -5.046e-02, -4.644e-02, -1.261e-01, 6.878e-02, 5.854e-03, -7.513e-02, -1.506e-01, -1.318e-01, 1.578e-01, 2.697e-02, -4.071e-03, -2.210e-02, 3.974e-02, 3.940e-02), r);\n\tr = MulAdd(s3_8, M4(-1.474e-02, -1.738e-02, -8.259e-03, -5.853e-03, -2.127e-02, -3.961e-02, 3.582e-02, 3.172e-03, -1.144e-01, -2.996e-02, 3.036e-03, -3.267e-03, -2.002e-02, -2.635e-02, -1.136e-02, -2.688e-02), r);\n\tr = MulAdd(s4_0, M4(4.594e-02, -2.099e-02, 7.548e-02, -2.075e-01, 5.565e-02, -1.654e-02, 2.922e-02, 1.133e-02, -9.739e-02, -6.425e-05, -7.070e-02, 7.836e-03, 6.286e-02, -2.553e-02, 5.762e-02, -2.851e-02), r);\n\tr = MulAdd(s4_1, M4(-1.678e-01, 1.242e-01, 1.588e-01, -1.239e-01, 2.922e-02, 7.846e-02, 1.019e-02, 9.464e-02, -1.160e-03, -5.613e-02, -1.619e-01, 6.253e-02, -3.288e-02, 3.520e-02, -5.805e-02, 2.132e-02), r);\n\tr = MulAdd(s4_2, M4(-1.046e-01, -6.424e-02, 9.591e-02, 4.972e-02, 6.181e-02, 2.169e-02, -1.502e-02, -1.632e-03, 8.814e-03, -1.752e-02, -2.157e-02, -2.900e-03, 1.169e-02, 5.567e-02, 3.245e-03, 1.681e-02), r);\n\tr = MulAdd(s4_3, M4(-4.928e-02, 8.546e-02, -1.618e-01, -2.128e-01, -1.497e-02, 4.482e-02, 4.796e-02, 2.129e-02, 9.864e-02, -1.528e-01, -3.969e-02, 7.450e-02, -1.001e-01, 1.126e-01, -4.606e-02, -2.537e-02), r);\n\tr = MulAdd(s4_4, M4(-2.053e-01, -5.939e-02, -1.161e-01, 1.419e-01, -2.759e-03, 6.388e-02, -1.553e-02, -1.023e-02, 1.505e-01, 8.522e-02, 3.198e-02, 5.720e-02, 2.473e-01, -3.964e-02, 5.463e-02, -4.795e-02), r);\n\tr = MulAdd(s4_5, M4(-5.172e-02, -1.282e-01, -2.116e-01, 1.091e-01, -2.214e-02, 3.969e-02, 4.337e-02, -1.764e-02, 3.215e-02, 3.299e-02, 2.793e-02, 7.400e-03, 6.523e-02, -5.966e-02, -9.938e-03, 4.816e-02), r);\n\tr = MulAdd(s4_6, M4(-8.111e-02, -3.650e-02, 2.723e-02, -1.057e-01, 3.222e-02, 4.503e-02, -1.267e-02, 4.413e-02, -1.724e-01, 1.213e-01, 2.988e-02, -1.441e-02, 5.656e-02, -5.868e-02, 2.248e-02, -4.360e-03), r);\n\tr = MulAdd(s4_7, M4(-4.270e-02, 1.211e-01, 5.248e-03, 3.833e-02, -5.154e-02, -7.461e-02, -2.644e-02, 1.660e-02, -6.261e-02, 1.525e-02, 1.216e-01, -1.214e-01, 3.315e-02, 1.384e-01, -4.694e-02, -3.589e-02), r);\n\tr = MulAdd(s4_8, M4(-1.661e-02, -7.148e-02, 1.711e-02, 1.639e-03, -1.166e-02, -2.743e-02, 7.393e-03, -1.306e-02, -6.771e-02, -5.656e-02, -1.044e-02, 3.744e-03, -3.449e-03, -2.178e-03, 1.882e-02, 2.167e-02), r);\n\tr = MulAdd(s5_0, M4(-9.376e-04, -2.194e-02, -6.724e-02, -2.053e-02, -2.572e-02, 1.345e-02, 6.833e-03, 6.722e-02, 5.867e-02, 1.715e-02, -5.763e-02, 1.907e-02, -7.177e-02, -9.071e-03, 8.056e-02, -4.422e-02), r);\n\tr = MulAdd(s5_1, M4(-3.062e-03, -6.996e-02, -1.865e-02, -5.978e-03, 4.911e-02, 9.800e-02, 1.017e-01, 8.813e-02, -5.140e-02, 1.862e-03, 3.940e-03, -2.055e-02, -1.394e-02, 7.200e-02, 3.466e-02, -4.142e-02), r);\n\tr = MulAdd(s5_2, M4(-5.375e-02, 5.841e-02, -2.139e-02, 1.491e-03, 2.405e-02, -6.375e-02, 2.696e-02, -6.658e-04, -1.718e-02, 1.131e-02, -2.777e-02, 1.809e-02, -3.598e-02, -8.768e-02, 4.309e-02, 2.209e-02), r);\n\tr = MulAdd(s5_3, M4(-9.237e-03, -1.952e-02, -4.659e-02, 3.577e-02, 7.323e-02, 3.267e-02, 3.138e-02, -6.273e-02, 5.708e-02, -4.532e-02, -7.609e-03, 7.341e-02, -1.255e-02, -4.444e-02, -2.852e-02, 2.135e-02), r);\n\tr = MulAdd(s5_4, M4(6.220e-02, -5.132e-02, 5.121e-02, 3.518e-02, -2.193e-01, -1.582e-01, -8.165e-02, -1.271e-02, 6.141e-02, 7.492e-02, 5.174e-02, -6.458e-02, 1.016e-01, -2.288e-02, -2.656e-02, 7.862e-02), r);\n\tr = MulAdd(s5_5, M4(6.700e-02, 4.641e-03, -1.019e-02, 2.040e-03, -1.044e-01, 8.057e-02, 6.980e-02, -8.519e-02, 7.276e-02, -7.165e-04, -2.067e-02, 7.258e-02, 9.370e-03, 6.664e-02, -3.490e-04, -4.492e-02), r);\n\tr = MulAdd(s5_6, M4(2.889e-02, -2.632e-02, 3.510e-03, 3.752e-03, -3.652e-02, 6.490e-02, 1.142e-03, 7.348e-02, -4.659e-02, -9.205e-02, 7.735e-03, -7.285e-03, -1.560e-02, -2.538e-02, 2.098e-02, -4.471e-03), r);\n\tr = MulAdd(s5_7, M4(2.529e-02, 3.207e-02, 1.551e-02, 2.410e-02, -1.143e-01, -1.243e-01, 4.026e-02, -2.224e-02, 2.706e-02, -1.125e-01, -7.444e-04, 1.665e-03, -1.117e-02, 3.164e-02, 5.121e-02, -6.398e-03), r);\n\tr = MulAdd(s5_8, M4(-1.810e-02, 3.387e-02, -1.359e-02, -2.422e-02, -4.049e-02, 8.675e-03, -1.482e-03, 1.121e-02, -5.411e-02, -3.881e-02, 1.730e-02, -2.959e-02, 7.139e-02, 1.425e-02, -9.283e-04, 2.819e-02), r);\n\tr = MulAdd(s6_0, M4(1.039e-01, -1.434e-02, 1.175e-02, 7.725e-03, -4.108e-02, 1.405e-02, 2.887e-02, -6.200e-02, -3.134e-02, -3.633e-02, 2.553e-02, -2.109e-02, -1.613e-02, 3.979e-02, -8.357e-02, -1.594e-03), r);\n\tr = MulAdd(s6_1, M4(-1.276e-01, -1.901e-01, 3.361e-02, -5.895e-02, -8.170e-02, -5.827e-02, 1.289e-01, -5.021e-02, -1.530e-01, -1.626e-01, -5.100e-02, -1.558e-01, 4.318e-02, -5.978e-02, 2.184e-02, -6.124e-02), r);\n\tr = MulAdd(s6_2, M4(1.289e-02, 1.777e-01, -5.825e-02, -9.785e-02, 4.007e-02, 3.836e-02, 3.456e-02, 7.433e-03, 2.243e-02, 3.302e-02, 4.167e-02, 9.464e-02, 4.477e-02, 2.537e-02, -7.013e-03, 3.242e-02), r);\n\tr = MulAdd(s6_3, M4(-1.525e-01, 1.014e-01, -1.807e-03, -1.846e-01, 1.672e-01, -8.167e-02, -1.717e-01, 1.343e-01, 6.778e-03, -5.364e-02, -2.812e-02, -1.182e-01, 3.515e-02, 3.398e-02, -1.040e-02, -1.062e-01), r);\n\tr = MulAdd(s6_4, M4(1.956e-01, -2.669e-01, -1.460e-01, 4.621e-01, -9.447e-02, 2.349e-01, -1.470e-01, -4.941e-02, 7.513e-02, 4.184e-02, -1.044e-01, -2.203e-01, 7.399e-02, -1.302e-01, -3.328e-02, -3.597e-03), r);\n\tr = MulAdd(s6_5, M4(1.476e-01, 4.634e-02, 1.029e-01, -6.998e-02, -3.599e-03, -8.547e-03, -4.742e-02, -8.798e-03, -1.155e-01, -1.334e-02, 1.572e-02, -1.198e-01, -3.377e-02, -1.021e-03, -5.352e-02, 2.362e-02), r);\n\tr = MulAdd(s6_6, M4(-2.038e-02, -1.433e-02, -5.558e-02, -3.899e-02, 5.073e-02, -4.008e-02, -2.158e-03, -4.432e-02, 4.568e-03, 6.172e-02, 1.382e-02, -1.944e-02, 4.529e-02, 1.661e-02, 1.656e-03, 2.364e-02), r);\n\tr = MulAdd(s6_7, M4(-5.675e-02, -1.128e-01, 5.922e-03, -2.657e-02, 4.674e-02, 5.763e-02, -5.162e-03, -2.677e-02, -1.060e-01, -1.866e-02, 6.187e-02, -1.249e-01, 2.508e-02, -6.913e-02, 5.112e-02, 2.815e-02), r);\n\tr = MulAdd(s6_8, M4(7.287e-03, 1.523e-02, -2.667e-02, -1.769e-02, 1.994e-02, -3.947e-02, 3.164e-02, -1.631e-02, 6.569e-02, 2.412e-02, -4.184e-02, 4.302e-02, 1.836e-02, -6.858e-02, 3.069e-02, -2.480e-02), r);\n\tr = MulAdd(s7_0, M4(-6.234e-02, -3.536e-02, 2.735e-02, 1.608e-02, -1.563e-02, -7.788e-02, 9.835e-02, -1.025e-04, -4.066e-02, 7.144e-02, 4.273e-02, 1.307e-02, 2.383e-02, 7.450e-02, -9.114e-02, 2.195e-02), r);\n\tr = MulAdd(s7_1, M4(1.126e-02, 9.804e-02, 9.452e-02, 1.843e-02, 2.402e-02, 1.024e-01, 1.977e-01, -1.763e-02, -6.715e-02, -3.739e-02, 1.339e-01, -1.311e-01, -9.503e-02, 1.242e-02, 4.849e-02, -3.676e-02), r);\n\tr = MulAdd(s7_2, M4(5.123e-02, -1.605e-02, 1.521e-03, 4.712e-02, 2.437e-02, -4.237e-02, -2.470e-02, 7.330e-03, 9.882e-02, -1.058e-02, -1.584e-02, 5.144e-02, 2.768e-02, 9.235e-02, -1.769e-02, -3.762e-02), r);\n\tr = MulAdd(s7_3, M4(-1.533e-02, -7.504e-03, -4.468e-02, -8.556e-02, 3.764e-02, -1.577e-01, -5.104e-02, 3.940e-02, -3.595e-02, -2.249e-02, -4.397e-02, -1.208e-01, 4.481e-02, 1.282e-01, 5.298e-03, -1.793e-01), r);\n\tr = MulAdd(s7_4, M4(-1.851e-02, 7.804e-02, -3.354e-02, 9.737e-02, -6.438e-02, 2.125e-01, -1.693e-01, 2.251e-02, 6.170e-02, -2.258e-02, -7.436e-02, -2.415e-01, -2.285e-01, -2.941e-01, 9.524e-02, 1.657e-02), r);\n\tr = MulAdd(s7_5, M4(-1.524e-01, -4.079e-02, -2.911e-02, -7.842e-03, -1.804e-03, -3.636e-02, 3.002e-02, -4.805e-02, 9.590e-02, -1.424e-01, -2.798e-02, 1.406e-01, -3.761e-02, 1.214e-01, -8.535e-03, -1.786e-02), r);\n\tr = MulAdd(s7_6, M4(2.536e-03, -1.993e-02, -1.801e-02, 4.518e-02, -2.252e-02, -6.023e-02, 2.992e-02, -1.164e-02, 2.239e-02, 3.118e-02, 3.715e-03, -1.298e-02, -4.918e-02, 6.960e-02, 5.030e-02, -3.900e-02), r);\n\tr = MulAdd(s7_7, M4(2.215e-02, 6.815e-03, -1.234e-02, 6.264e-02, 5.752e-02, -5.832e-03, 7.431e-03, -4.491e-02, -8.863e-02, 8.035e-02, 4.167e-03, -1.112e-01, 1.098e-01, -4.264e-03, -1.362e-01, 1.234e-01), r);\n\tr = MulAdd(s7_8, M4(7.512e-03, -3.196e-03, 3.111e-02, -2.059e-02, -2.756e-02, 3.436e-02, 3.508e-02, -3.981e-03, 3.004e-02, -5.253e-02, -4.691e-02, 4.399e-02, -3.001e-02, 4.106e-02, 2.402e-03, -6.141e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.234e-02, 1.399e-03, -3.210e-03, 1.071e-02 };\n\tr = MulAdd(s0_0, M4(1.957e-02, -1.929e-02, -7.233e-02, 6.399e-02, 3.891e-02, -2.368e-02, -5.297e-02, 3.034e-02, 2.073e-02, -5.042e-02, 3.753e-02, -4.414e-03, 2.939e-02, -4.863e-02, -8.268e-03, 4.045e-02), r);\n\tr = MulAdd(s0_1, M4(1.500e-02, 7.816e-03, -3.719e-02, -1.413e-01, -2.540e-02, -5.338e-02, 3.943e-02, 6.922e-02, -5.509e-03, -6.114e-02, 3.186e-02, -3.823e-03, 8.412e-02, -9.854e-02, 3.890e-02, 8.705e-04), r);\n\tr = MulAdd(s0_2, M4(-3.633e-02, -1.220e-02, -1.844e-02, -7.541e-02, -1.891e-02, 3.772e-02, -4.209e-02, 6.710e-02, 4.396e-02, 1.547e-02, 4.528e-02, -2.666e-02, 5.815e-02, -3.918e-02, 1.937e-02, -4.644e-02), r);\n\tr = MulAdd(s0_3, M4(1.167e-01, -3.639e-02, -4.217e-03, -9.302e-02, 6.612e-03, 5.179e-04, 5.621e-02, 2.659e-02, 2.275e-02, 9.503e-02, -2.446e-02, 4.318e-02, 3.466e-02, 4.579e-02, -1.291e-02, -2.690e-02), r);\n\tr = MulAdd(s0_4, M4(-3.764e-03, 1.447e-01, 4.298e-02, 2.666e-01, -7.257e-02, 2.289e-01, -7.192e-02, 1.720e-01, 2.101e-02, 9.109e-02, -2.118e-02, 1.117e-01, -2.413e-02, -3.388e-02, -1.185e-01, 4.957e-02), r);\n\tr = MulAdd(s0_5, M4(1.710e-01, -1.024e-02, 6.099e-02, -5.108e-03, -4.723e-02, -8.317e-02, 2.810e-02, -6.812e-02, 1.933e-02, -4.623e-02, -5.507e-02, -5.481e-02, 2.608e-02, 1.180e-01, -4.448e-02, 7.944e-02), r);\n\tr = MulAdd(s0_6, M4(8.110e-04, 2.934e-02, 9.242e-02, -5.007e-02, -2.002e-02, 1.258e-02, 4.889e-02, -4.423e-03, -2.356e-02, -4.107e-02, 4.342e-02, -6.808e-02, 5.131e-02, 3.878e-02, 4.502e-02, -3.955e-03), r);\n\tr = MulAdd(s0_7, M4(-1.708e-02, 6.205e-02, -6.230e-02, -8.522e-02, -9.137e-02, 9.945e-02, 1.625e-01, -9.107e-03, 9.373e-02, 2.157e-01, 1.192e-02, -1.947e-02, 5.642e-02, -1.830e-02, -4.282e-02, -3.323e-02), r);\n\tr = MulAdd(s0_8, M4(-4.627e-02, -3.488e-02, -2.095e-02, 4.034e-02, -7.047e-02, 4.260e-02, -1.066e-02, 5.798e-02, -1.646e-02, 1.113e-01, 2.390e-02, -3.724e-02, 3.576e-02, -5.889e-02, 4.255e-03, -1.906e-02), r);\n\tr = MulAdd(s1_0, M4(-5.832e-03, 3.125e-02, -1.642e-02, -3.459e-03, -1.119e-02, -2.803e-02, 1.157e-03, -3.958e-02, 4.631e-02, 1.482e-02, 7.727e-02, -3.134e-02, -4.881e-02, -2.130e-02, 6.989e-03, -7.346e-02), r);\n\tr = MulAdd(s1_1, M4(-7.396e-02, 9.412e-02, 7.725e-03, 2.162e-02, 5.224e-02, -1.088e-02, -2.065e-02, -9.780e-02, -1.101e-02, 3.594e-02, 2.216e-02, -1.258e-01, -3.889e-02, 3.863e-02, -4.760e-02, 6.302e-02), r);\n\tr = MulAdd(s1_2, M4(-5.090e-02, -2.363e-02, -3.503e-02, -1.487e-02, 5.198e-02, 4.417e-02, 3.775e-02, -5.158e-02, 3.694e-02, -1.838e-02, 4.035e-02, -2.728e-02, 2.090e-02, -3.677e-02, 1.538e-02, 5.569e-03), r);\n\tr = MulAdd(s1_3, M4(1.207e-01, -3.502e-02, 2.359e-02, 4.536e-02, -1.038e-02, -3.105e-02, 9.460e-02, 3.270e-02, -1.572e-02, 7.465e-02, -4.742e-02, 5.380e-02, -1.301e-01, -8.177e-02, 2.412e-02, -4.786e-02), r);\n\tr = MulAdd(s1_4, M4(8.592e-03, -1.604e-01, 1.551e-01, 1.448e-01, -2.117e-01, 1.461e-01, -8.745e-03, 2.140e-01, -7.602e-02, 9.228e-02, -5.262e-03, 1.787e-01, -2.019e-01, -1.864e-01, 9.426e-03, 1.811e-01), r);\n\tr = MulAdd(s1_5, M4(6.368e-02, 3.336e-02, 3.970e-02, -1.583e-02, -2.103e-02, 6.325e-02, -3.413e-02, -7.886e-02, -7.021e-02, -1.133e-01, -1.177e-02, -2.928e-02, 2.705e-02, -1.405e-01, -5.630e-02, -3.552e-03), r);\n\tr = MulAdd(s1_6, M4(-4.145e-02, -2.657e-02, -5.136e-02, 3.983e-02, -3.112e-02, 3.816e-02, 3.503e-02, -1.835e-02, -4.899e-02, -7.746e-02, -2.181e-02, 3.558e-02, -1.264e-02, 4.415e-02, 1.453e-02, -6.731e-03), r);\n\tr = MulAdd(s1_7, M4(5.223e-03, -7.955e-04, 9.171e-02, -1.591e-01, -1.133e-01, 1.686e-01, -3.125e-02, -5.211e-02, 1.185e-01, -1.874e-01, -3.469e-01, 6.632e-02, 2.601e-02, 1.087e-01, 1.299e-01, -4.201e-02), r);\n\tr = MulAdd(s1_8, M4(-2.578e-02, -7.088e-02, 4.434e-02, -5.593e-02, -1.833e-01, -7.441e-02, -1.421e-02, 3.444e-02, 1.911e-02, 1.664e-03, 7.838e-03, -1.117e-01, 5.608e-02, 5.974e-02, -3.714e-03, 2.898e-04), r);\n\tr = MulAdd(s2_0, M4(2.406e-02, -5.912e-02, 1.298e-02, -1.281e-02, 1.433e-02, 9.674e-02, -3.115e-03, -7.976e-02, -5.297e-03, -1.302e-02, 4.163e-02, 7.091e-03, -8.644e-03, -4.116e-02, -2.294e-02, -2.830e-02), r);\n\tr = MulAdd(s2_1, M4(-1.385e-03, -5.038e-02, 3.441e-02, -1.230e-01, -4.663e-02, 4.946e-02, 2.977e-02, 3.772e-02, -2.058e-02, 1.794e-02, 3.946e-02, -3.506e-02, -7.325e-02, 1.447e-02, -9.563e-02, -7.138e-03), r);\n\tr = MulAdd(s2_2, M4(4.960e-02, 3.821e-02, -1.735e-02, 4.977e-02, 2.546e-02, -4.679e-02, -1.158e-02, 5.616e-03, -2.759e-03, 7.985e-02, 6.386e-03, 6.271e-02, -1.272e-02, 2.503e-03, 8.398e-03, 1.271e-01), r);\n\tr = MulAdd(s2_3, M4(-1.038e-02, 2.823e-02, 4.136e-02, 7.295e-02, 1.117e-02, -6.778e-03, -2.525e-03, 1.712e-02, 2.669e-02, 7.388e-02, -4.112e-04, 4.131e-02, 5.201e-02, 4.515e-04, 1.094e-01, 2.320e-03), r);\n\tr = MulAdd(s2_4, M4(-1.284e-01, 1.210e-01, -9.807e-02, 1.665e-01, 6.781e-02, 1.028e-01, 5.251e-02, -6.496e-02, -2.019e-03, -8.688e-02, -1.587e-01, -6.006e-02, -5.870e-02, -2.039e-02, 9.403e-02, 5.624e-02), r);\n\tr = MulAdd(s2_5, M4(-6.943e-02, -3.505e-02, -1.387e-02, -3.432e-02, 1.336e-02, 1.029e-04, -2.559e-02, -5.021e-02, -1.027e-03, -9.446e-02, 7.434e-02, -6.495e-02, 5.121e-02, -1.844e-01, -1.339e-02, -2.068e-02), r);\n\tr = MulAdd(s2_6, M4(-3.294e-02, 6.696e-03, 1.385e-02, -1.026e-02, 4.626e-02, -1.981e-02, -1.253e-01, 5.887e-02, 1.193e-02, 6.605e-02, -4.059e-02, 5.007e-02, 7.069e-03, -3.892e-02, 1.316e-02, -1.329e-03), r);\n\tr = MulAdd(s2_7, M4(-5.214e-03, -2.388e-02, 8.716e-02, 7.790e-03, 9.102e-02, -1.228e-01, -2.001e-01, 1.346e-02, -9.074e-03, -2.822e-02, -7.053e-02, -2.615e-02, -1.325e-02, 1.692e-02, 1.367e-01, -6.891e-03), r);\n\tr = MulAdd(s2_8, M4(9.435e-03, 8.678e-03, 1.546e-02, 1.673e-02, -4.425e-02, 3.501e-02, -2.438e-03, -2.117e-02, 9.269e-02, -1.192e-02, -9.051e-03, 1.089e-03, 2.173e-02, 6.414e-02, 8.247e-03, 1.388e-02), r);\n\tr = MulAdd(s3_0, M4(1.310e-01, -1.323e-01, -3.285e-02, -6.364e-02, 1.523e-02, -5.964e-02, 2.667e-02, -2.718e-02, -5.582e-02, 4.316e-02, 2.139e-02, -3.882e-03, 2.538e-02, -2.755e-02, 8.806e-04, -2.173e-02), r);\n\tr = MulAdd(s3_1, M4(8.679e-02, 5.650e-02, 1.789e-01, -1.361e-02, -6.412e-02, 2.237e-03, 3.455e-02, -1.238e-01, -1.592e-01, 6.738e-02, -9.433e-02, 5.789e-02, -3.984e-02, -4.034e-02, -1.080e-01, 1.221e-02), r);\n\tr = MulAdd(s3_2, M4(-8.604e-02, 2.297e-02, -3.277e-02, -1.643e-02, 1.366e-02, 1.272e-02, -4.874e-03, -9.394e-03, -9.996e-03, -3.402e-02, 1.908e-02, 4.162e-02, -2.027e-03, 3.923e-02, 1.338e-02, -2.775e-02), r);\n\tr = MulAdd(s3_3, M4(8.514e-02, 4.941e-02, 1.136e-01, 2.181e-02, 7.492e-02, 8.835e-02, 1.281e-01, 5.094e-02, -3.794e-02, 7.078e-02, -1.033e-01, 2.082e-02, 6.665e-02, -4.889e-02, 3.621e-02, -3.375e-03), r);\n\tr = MulAdd(s3_4, M4(-1.772e-01, 1.164e-01, -2.896e-01, 7.526e-02, 6.486e-02, 3.452e-01, -9.239e-02, 1.387e-02, -1.371e-01, -4.009e-02, -1.604e-01, 8.436e-02, 3.300e-03, 5.823e-02, 3.795e-02, 6.376e-02), r);\n\tr = MulAdd(s3_5, M4(-1.047e-01, -2.641e-02, -3.330e-02, 3.592e-02, -3.797e-03, -7.614e-02, -6.192e-02, -2.366e-02, 1.103e-01, 4.321e-02, 2.096e-02, 4.921e-02, 8.541e-02, 1.023e-02, 1.980e-02, -2.827e-02), r);\n\tr = MulAdd(s3_6, M4(-5.483e-02, 6.945e-03, 6.125e-02, -1.114e-02, -3.109e-02, -7.767e-02, -1.777e-01, -1.954e-02, -4.336e-03, 3.103e-02, -9.225e-02, 2.032e-02, 6.714e-03, -9.436e-03, 4.314e-02, -1.701e-02), r);\n\tr = MulAdd(s3_7, M4(-8.160e-02, -6.575e-02, 1.249e-01, 1.150e-02, 3.725e-02, 5.154e-02, -2.207e-01, 1.980e-02, 8.971e-02, -2.289e-02, 6.716e-02, -1.377e-01, 7.987e-03, 6.571e-02, 6.751e-02, -2.847e-02), r);\n\tr = MulAdd(s3_8, M4(-2.108e-02, -6.825e-02, -5.537e-03, -1.622e-03, -7.742e-02, 7.133e-02, -9.959e-03, 1.210e-02, 9.613e-02, 2.147e-01, 4.867e-02, -6.740e-03, 5.943e-02, 1.073e-01, 1.379e-02, 2.028e-02), r);\n\tr = MulAdd(s4_0, M4(8.846e-03, -1.414e-01, -6.767e-02, -1.371e-01, -3.770e-02, 5.099e-03, 9.724e-03, 6.872e-02, -3.600e-02, -2.685e-02, -1.448e-03, -1.022e-01, 3.550e-02, 4.504e-02, 3.020e-02, -2.420e-02), r);\n\tr = MulAdd(s4_1, M4(1.128e-01, -1.848e-01, 2.358e-01, -2.083e-01, -2.705e-02, 9.311e-02, 2.559e-02, -8.758e-02, -2.868e-02, -8.436e-02, 4.441e-02, 1.806e-01, 4.224e-02, 1.685e-02, -9.670e-02, 2.653e-02), r);\n\tr = MulAdd(s4_2, M4(-8.658e-02, -1.178e-01, -2.972e-02, -2.572e-01, 1.680e-02, -4.280e-02, 1.425e-02, 6.848e-03, 4.073e-02, 3.491e-02, 1.308e-02, -3.689e-02, 4.009e-02, -6.097e-02, 1.412e-02, -3.500e-02), r);\n\tr = MulAdd(s4_3, M4(1.121e-01, -8.794e-02, 1.456e-01, 1.664e-01, -8.760e-02, 1.016e-01, -2.300e-02, -2.855e-02, -1.597e-02, 8.344e-02, -5.320e-02, 1.479e-01, -2.902e-03, -3.130e-02, -1.323e-02, -1.673e-02), r);\n\tr = MulAdd(s4_4, M4(3.860e-02, -2.934e-02, 1.809e-01, 1.200e-01, -9.147e-02, 1.260e-01, -1.558e-01, -5.510e-02, 1.671e-01, -1.776e-01, -4.580e-03, -2.861e-01, -3.544e-02, 5.584e-02, 8.725e-02, 1.743e-02), r);\n\tr = MulAdd(s4_5, M4(-3.700e-02, -1.345e-01, 4.381e-02, 1.123e-01, -3.882e-02, -1.464e-02, 1.230e-02, -2.082e-02, -2.821e-02, 4.478e-02, -2.708e-02, -4.165e-02, -1.810e-02, 1.548e-01, -8.655e-03, 2.190e-02), r);\n\tr = MulAdd(s4_6, M4(3.707e-02, -3.001e-03, -5.624e-02, -2.532e-03, 3.347e-02, 1.560e-02, -5.180e-04, 7.213e-03, 1.037e-01, -1.121e-01, 1.677e-02, 3.223e-02, 2.705e-02, 8.575e-02, 3.078e-02, -2.267e-04), r);\n\tr = MulAdd(s4_7, M4(2.250e-02, 1.487e-02, -1.650e-01, -1.409e-02, 7.617e-02, -7.459e-03, 1.392e-01, 6.905e-02, 9.223e-02, 2.307e-01, 1.427e-01, -5.743e-02, 8.216e-03, -1.208e-01, -8.752e-02, 3.296e-03), r);\n\tr = MulAdd(s4_8, M4(1.453e-02, 7.337e-03, -1.524e-02, -1.241e-02, 7.055e-02, -1.957e-02, -2.605e-03, -3.496e-03, -4.691e-02, -1.215e-01, -2.121e-02, 1.250e-02, -1.895e-02, -7.662e-02, -9.187e-03, -4.188e-02), r);\n\tr = MulAdd(s5_0, M4(2.253e-03, 2.895e-02, -3.356e-03, -3.946e-02, 6.570e-02, -1.506e-02, -7.567e-02, -3.304e-02, -8.512e-03, 1.700e-02, -3.170e-02, -9.021e-02, 2.892e-01, -4.648e-02, 2.220e-02, 1.739e-02), r);\n\tr = MulAdd(s5_1, M4(1.111e-01, -4.749e-02, -1.770e-02, 2.719e-02, 4.371e-03, 6.664e-02, -4.068e-03, -2.892e-01, -1.957e-02, 2.262e-02, -5.655e-03, -5.166e-02, 2.833e-01, -7.883e-02, 8.146e-02, -5.218e-02), r);\n\tr = MulAdd(s5_2, M4(2.774e-02, -5.780e-02, 7.517e-03, -7.034e-03, 4.927e-02, 3.076e-02, -3.758e-02, -9.627e-03, -1.044e-02, -1.818e-02, -2.164e-02, -2.569e-03, 2.926e-01, 4.791e-02, 1.676e-02, -4.867e-02), r);\n\tr = MulAdd(s5_3, M4(1.016e-02, 2.146e-02, -1.199e-02, 2.797e-02, -7.898e-02, 9.582e-02, 3.174e-02, -3.970e-02, 9.055e-02, -4.866e-02, -4.249e-02, 2.899e-02, 2.318e-01, 3.959e-02, -6.066e-02, 1.228e-02), r);\n\tr = MulAdd(s5_4, M4(-1.095e-01, 3.017e-02, -2.044e-02, -1.573e-03, -1.158e-01, -4.219e-02, -1.247e-01, 1.312e-01, 4.427e-02, -1.392e-01, 3.504e-02, -1.490e-01, 1.577e-01, 4.934e-02, -9.058e-02, 1.150e-01), r);\n\tr = MulAdd(s5_5, M4(-4.875e-02, 9.593e-03, 3.234e-02, 5.133e-02, -2.486e-02, -8.642e-02, 3.262e-02, 1.322e-02, -6.464e-02, -3.717e-02, -3.904e-02, -2.541e-03, 2.439e-01, -2.009e-02, -2.255e-02, 2.965e-03), r);\n\tr = MulAdd(s5_6, M4(7.269e-03, -5.754e-03, 1.268e-02, 1.436e-03, 6.907e-02, -7.310e-02, 1.493e-03, -2.275e-02, 2.023e-02, 3.361e-03, 2.436e-02, -2.308e-02, 2.661e-01, 1.148e-02, 7.581e-02, -3.858e-02), r);\n\tr = MulAdd(s5_7, M4(-3.640e-02, -2.640e-02, 1.529e-02, 5.979e-03, 1.858e-01, 2.683e-02, 1.042e-01, -3.059e-02, 5.402e-02, -1.913e-02, -4.763e-02, 1.896e-02, 2.559e-01, -3.100e-02, 2.592e-04, -8.341e-02), r);\n\tr = MulAdd(s5_8, M4(-2.953e-02, 3.158e-02, 2.555e-03, 1.784e-02, 1.153e-01, 5.659e-02, -2.682e-02, 1.226e-02, -3.080e-02, -2.664e-02, 7.513e-02, 2.257e-03, 2.487e-01, 1.699e-02, -6.703e-03, -3.605e-02), r);\n\tr = MulAdd(s6_0, M4(-4.189e-02, -9.154e-02, 4.788e-02, -1.111e-01, 1.971e-02, -4.760e-02, 2.981e-02, -7.093e-02, -2.129e-02, -6.233e-02, -6.308e-04, -4.454e-03, -4.643e-02, -7.902e-03, -2.739e-02, 2.428e-03), r);\n\tr = MulAdd(s6_1, M4(3.598e-02, -7.888e-03, -5.828e-02, 1.286e-01, -1.478e-02, -5.556e-02, -1.790e-02, -1.876e-01, -5.060e-02, 1.849e-01, -3.716e-02, -2.660e-02, -1.689e-02, -5.784e-03, 4.138e-04, -7.225e-02), r);\n\tr = MulAdd(s6_2, M4(2.588e-02, -5.272e-02, 1.092e-01, 4.166e-02, -7.974e-03, -2.317e-03, 6.136e-03, 3.086e-03, 5.685e-02, -5.237e-02, -5.456e-03, 5.515e-02, -1.173e-02, -2.115e-02, 1.212e-02, 7.162e-02), r);\n\tr = MulAdd(s6_3, M4(-1.605e-01, -1.559e-01, -6.509e-02, 1.481e-02, -1.061e-01, 1.587e-02, -2.719e-02, 9.496e-02, -1.964e-02, 1.008e-01, 3.483e-02, 6.958e-02, 6.500e-04, 5.742e-02, -2.891e-02, -8.490e-03), r);\n\tr = MulAdd(s6_4, M4(-1.561e-02, 1.292e-01, 1.002e-01, 3.026e-02, -2.482e-02, -3.814e-01, 1.739e-01, -4.705e-02, 5.162e-02, -4.266e-02, 1.289e-02, 8.523e-02, -7.511e-03, -2.839e-02, -6.110e-02, -1.192e-01), r);\n\tr = MulAdd(s6_5, M4(1.514e-01, 7.149e-02, -2.050e-02, -9.953e-02, 3.742e-02, -3.536e-02, -5.580e-02, -4.786e-02, -1.358e-01, 3.836e-02, 6.996e-02, 7.751e-02, -2.538e-02, -1.700e-03, 1.704e-02, 1.054e-02), r);\n\tr = MulAdd(s6_6, M4(6.145e-02, 3.964e-02, -4.079e-02, -2.012e-04, 2.773e-02, 2.789e-02, -2.299e-02, 1.544e-02, -2.108e-02, 7.204e-03, -3.435e-02, -2.166e-02, -4.417e-02, -2.244e-02, -5.070e-02, 1.706e-02), r);\n\tr = MulAdd(s6_7, M4(4.528e-02, -8.002e-02, 3.016e-02, -3.395e-02, 5.715e-02, -1.227e-01, 5.972e-04, -5.689e-03, 2.970e-03, 7.643e-02, -1.862e-02, -5.993e-02, 3.902e-02, -1.052e-01, 4.273e-02, -3.014e-02), r);\n\tr = MulAdd(s6_8, M4(-3.764e-03, -5.511e-02, -9.549e-02, 8.376e-03, 2.026e-02, 2.640e-02, -1.948e-02, -4.695e-02, -6.268e-02, 3.103e-02, -2.264e-02, 1.770e-02, -3.231e-02, 6.016e-02, -2.159e-02, 1.004e-02), r);\n\tr = MulAdd(s7_0, M4(-1.944e-02, -5.163e-02, 9.877e-03, 2.705e-02, 2.228e-02, -1.798e-02, 4.495e-02, -1.212e-02, -1.485e-02, -3.709e-02, 9.257e-03, -3.256e-02, -1.232e-01, -3.018e-03, -1.451e-02, 1.920e-02), r);\n\tr = MulAdd(s7_1, M4(-3.847e-02, 1.337e-02, 5.937e-02, -1.280e-02, 1.287e-02, 2.614e-03, 1.622e-01, -1.062e-01, -6.421e-02, -5.570e-02, 9.379e-02, 1.947e-02, -3.728e-02, -5.490e-02, -6.420e-02, 4.407e-02), r);\n\tr = MulAdd(s7_2, M4(1.588e-02, 7.788e-02, -2.490e-02, 1.825e-02, 1.764e-02, 5.213e-02, 2.868e-02, -1.027e-02, 2.788e-03, -2.785e-02, -6.366e-02, 1.291e-01, 2.413e-02, -6.380e-02, 7.746e-02, 1.257e-02), r);\n\tr = MulAdd(s7_3, M4(-6.544e-02, 5.579e-02, -4.697e-02, 3.908e-02, -7.368e-02, 8.769e-02, -1.372e-01, 7.078e-02, -2.486e-02, 5.890e-02, 4.846e-02, 8.198e-02, 9.691e-02, -5.949e-02, 8.025e-02, 4.313e-02), r);\n\tr = MulAdd(s7_4, M4(2.249e-02, -4.109e-02, -4.662e-02, -9.531e-03, -4.681e-03, -3.572e-01, -7.553e-02, -1.689e-01, -2.535e-02, 2.499e-01, 5.825e-02, 7.886e-02, -1.222e-01, -2.583e-01, -1.378e-01, -2.536e-01), r);\n\tr = MulAdd(s7_5, M4(-2.349e-02, -1.093e-01, -1.163e-02, -4.259e-02, 8.261e-03, 1.136e-02, -2.641e-02, -5.521e-02, -3.955e-02, 3.419e-02, -4.726e-03, 6.041e-02, -6.211e-03, -2.036e-01, -3.757e-02, 4.397e-02), r);\n\tr = MulAdd(s7_6, M4(-1.146e-02, -4.954e-03, 1.249e-02, -1.916e-02, 3.667e-02, 2.107e-02, 6.853e-02, -1.684e-02, -1.248e-02, -1.862e-02, -8.517e-03, -3.226e-02, -4.290e-03, 5.140e-02, -7.347e-02, -3.504e-02), r);\n\tr = MulAdd(s7_7, M4(5.449e-02, 1.826e-02, -7.368e-02, 1.170e-02, -3.612e-02, 5.722e-02, 5.965e-02, -2.463e-02, -2.703e-02, -3.847e-02, 2.002e-02, -4.870e-02, 1.220e-01, -6.682e-02, 3.629e-02, 7.157e-02), r);\n\tr = MulAdd(s7_8, M4(-2.929e-02, 6.953e-02, -1.551e-02, -2.604e-02, -2.354e-02, 4.386e-02, -2.369e-02, -4.634e-02, -2.935e-02, -1.085e-01, 3.650e-02, 8.587e-03, -5.270e-03, -4.489e-02, 1.397e-02, 3.679e-03), r);\n\treturn r;\n}\n\nvoid Pass16(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 17\n//!DESC conv16\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.997e-03, -1.078e-03, -3.096e-04, -3.145e-03 };\n\tr = MulAdd(s0_0, M4(-5.156e-02, 6.165e-02, 2.515e-02, -4.821e-02, 4.392e-02, -1.782e-02, -2.298e-02, 5.459e-04, -6.055e-03, 7.091e-02, -1.707e-02, 3.750e-02, -2.571e-02, 4.308e-02, 8.761e-02, -7.659e-02), r);\n\tr = MulAdd(s0_1, M4(3.125e-02, -2.226e-02, -3.384e-02, -6.259e-02, -2.213e-02, 2.235e-02, 7.938e-02, -4.267e-02, 3.313e-02, -9.646e-02, 2.131e-02, 1.986e-02, 7.270e-02, -5.378e-02, 1.201e-03, -9.428e-03), r);\n\tr = MulAdd(s0_2, M4(-6.791e-02, 3.883e-02, -9.256e-02, 1.588e-02, 4.954e-02, -6.834e-03, -2.625e-02, 2.904e-02, -4.382e-02, 4.837e-03, 1.303e-02, -3.053e-02, 2.798e-03, 8.662e-04, 2.414e-02, -2.178e-02), r);\n\tr = MulAdd(s0_3, M4(-4.441e-03, 3.012e-02, -1.029e-01, 3.504e-02, -6.492e-03, 4.360e-02, -2.207e-03, 3.454e-02, -3.369e-02, -8.222e-02, -5.546e-02, -2.461e-02, -1.658e-02, 2.443e-02, 8.769e-02, -9.597e-03), r);\n\tr = MulAdd(s0_4, M4(-1.814e-01, -2.435e-01, 2.376e-01, -3.096e-01, -5.681e-02, -5.972e-03, 1.443e-01, -1.880e-01, 1.846e-02, -9.695e-02, 7.147e-02, 4.801e-02, 1.037e-01, 2.661e-02, 3.455e-02, 3.356e-02), r);\n\tr = MulAdd(s0_5, M4(3.519e-02, 2.718e-02, 9.848e-02, 8.631e-02, 4.184e-02, -5.676e-02, -6.712e-02, 1.062e-01, -3.166e-03, 6.845e-02, 3.497e-02, -7.318e-03, 4.985e-02, 1.843e-02, 1.803e-02, 7.571e-03), r);\n\tr = MulAdd(s0_6, M4(-3.625e-02, -5.030e-02, -3.556e-02, -9.736e-02, 1.095e-03, -1.929e-02, -5.579e-02, -1.876e-02, 1.891e-02, -3.657e-02, 3.884e-02, 4.106e-03, -1.988e-02, -2.700e-02, 1.826e-02, 8.161e-03), r);\n\tr = MulAdd(s0_7, M4(-2.913e-02, -4.620e-03, 5.326e-02, 7.157e-02, 4.533e-02, 9.379e-02, 1.550e-01, 6.340e-02, 9.767e-03, -1.862e-02, -5.731e-02, -4.649e-03, 1.028e-03, -6.575e-02, -7.045e-02, -7.278e-03), r);\n\tr = MulAdd(s0_8, M4(-3.700e-02, -6.231e-02, -8.645e-02, 2.889e-02, -4.881e-02, -1.095e-03, -4.147e-02, 2.005e-02, 9.187e-03, 1.735e-02, 6.280e-02, -7.805e-02, 1.408e-02, -1.202e-02, -2.381e-03, 8.901e-03), r);\n\tr = MulAdd(s1_0, M4(-3.447e-02, 5.741e-02, 3.830e-03, -5.936e-03, 9.599e-03, -6.178e-02, 4.019e-03, -4.353e-02, 5.675e-02, -4.451e-02, 5.019e-03, 5.025e-02, 8.918e-02, -5.737e-02, 4.635e-02, -6.282e-02), r);\n\tr = MulAdd(s1_1, M4(-1.228e-02, -6.435e-02, 7.405e-02, -1.218e-01, 5.559e-02, -1.284e-02, -4.044e-04, 9.694e-03, 9.755e-02, 4.876e-02, -3.523e-02, 2.152e-01, 8.096e-02, -2.807e-02, -4.256e-02, 9.904e-02), r);\n\tr = MulAdd(s1_2, M4(-1.230e-02, 4.846e-02, 3.442e-03, 1.878e-02, 1.026e-02, 2.434e-03, -4.669e-02, -6.950e-02, -5.199e-02, -1.260e-02, 2.584e-03, -5.970e-02, -4.281e-02, 2.061e-02, 1.963e-02, -2.112e-02), r);\n\tr = MulAdd(s1_3, M4(-1.030e-02, 2.621e-02, 6.983e-02, -2.046e-02, 1.633e-02, -6.756e-02, -1.049e-01, 3.083e-02, 7.832e-03, -1.279e-01, -4.689e-02, 8.196e-02, 2.190e-01, -1.967e-01, 2.125e-01, -3.281e-02), r);\n\tr = MulAdd(s1_4, M4(4.708e-02, -4.659e-02, -6.770e-03, 4.344e-02, 1.488e-01, -6.091e-01, 1.748e-01, -3.358e-01, 2.832e-01, 1.045e-02, 8.715e-02, 9.823e-03, 5.027e-03, 9.443e-02, -1.500e-02, 4.938e-02), r);\n\tr = MulAdd(s1_5, M4(8.091e-02, 2.685e-02, 4.437e-02, -5.866e-03, -5.661e-02, -6.368e-05, -2.218e-02, 1.242e-01, -8.986e-02, 4.820e-02, 3.979e-02, -4.334e-02, 8.221e-03, 6.210e-03, 3.771e-02, 9.308e-03), r);\n\tr = MulAdd(s1_6, M4(-2.767e-02, -4.336e-02, -2.202e-02, -3.286e-02, -6.555e-03, -5.700e-02, -7.689e-02, -1.102e-02, -1.407e-03, -6.665e-02, -3.185e-02, 2.750e-02, -3.314e-02, -5.566e-02, 9.604e-03, 8.935e-02), r);\n\tr = MulAdd(s1_7, M4(8.737e-04, 4.815e-02, 1.344e-02, 1.764e-02, 4.722e-02, -1.648e-02, 1.023e-01, -2.641e-02, 3.347e-02, 9.013e-03, -3.238e-02, -2.522e-03, 9.035e-02, 4.695e-02, -1.043e-01, 3.727e-02), r);\n\tr = MulAdd(s1_8, M4(1.181e-02, -4.895e-02, -1.434e-02, 3.660e-02, 1.319e-02, 1.363e-02, -3.919e-02, 2.970e-02, -1.936e-03, 1.717e-02, 4.928e-02, -4.602e-02, 4.838e-02, 3.795e-02, 3.504e-02, 1.532e-02), r);\n\tr = MulAdd(s2_0, M4(-6.113e-03, 3.948e-03, -1.352e-02, 6.239e-03, -3.047e-02, 1.207e-01, -3.000e-02, -3.911e-02, 1.401e-02, 1.932e-02, -5.285e-02, 3.610e-02, 3.287e-02, -3.219e-02, 9.459e-02, -4.369e-03), r);\n\tr = MulAdd(s2_1, M4(3.883e-03, 1.594e-02, 1.902e-02, -1.362e-03, -1.255e-01, 1.213e-01, 1.349e-02, -4.341e-02, -1.824e-03, -2.703e-02, 2.730e-02, -2.791e-02, 6.127e-02, -1.142e-01, -7.652e-02, -9.776e-03), r);\n\tr = MulAdd(s2_2, M4(-3.686e-02, 5.035e-04, -1.472e-02, 6.111e-03, -1.857e-02, 1.292e-02, 6.319e-03, -1.197e-02, 5.313e-02, 7.473e-03, 3.750e-02, -2.960e-04, -1.047e-01, 5.681e-02, -3.128e-02, -3.333e-02), r);\n\tr = MulAdd(s2_3, M4(3.041e-03, 1.363e-01, 4.553e-02, -1.397e-02, 7.855e-02, -3.787e-01, -1.873e-02, 1.744e-02, 3.652e-02, 1.626e-01, 3.480e-01, 1.356e-02, -3.601e-02, 6.745e-02, -7.356e-02, 4.401e-02), r);\n\tr = MulAdd(s2_4, M4(-2.452e-01, -2.038e-02, 1.651e-02, -4.464e-02, 1.841e-01, -2.265e-01, 1.834e-01, -2.317e-01, 1.901e-01, -1.588e-01, 8.960e-02, 4.321e-02, 3.730e-03, -1.431e-01, 1.646e-01, -1.784e-01), r);\n\tr = MulAdd(s2_5, M4(-2.948e-02, 6.034e-02, 2.741e-02, -1.858e-03, -8.280e-02, -3.976e-02, -1.900e-02, -8.848e-04, 9.574e-03, 9.837e-02, -1.075e-02, -4.271e-02, 8.699e-02, 4.763e-02, 3.408e-02, 1.132e-02), r);\n\tr = MulAdd(s2_6, M4(-5.689e-03, 1.968e-02, -9.377e-03, -7.532e-03, -4.090e-02, 4.229e-02, 6.487e-03, -4.127e-03, -3.308e-02, 5.425e-01, -6.888e-02, -5.967e-02, -4.626e-04, -2.241e-02, -1.314e-02, -9.065e-03), r);\n\tr = MulAdd(s2_7, M4(8.726e-02, -1.536e-02, 5.006e-02, -3.736e-02, -8.779e-02, -7.939e-02, 7.228e-02, 6.325e-02, -2.287e-02, 7.908e-02, 7.380e-02, 1.010e-01, -5.090e-02, -3.593e-02, 2.127e-02, 3.041e-02), r);\n\tr = MulAdd(s2_8, M4(-2.976e-02, -5.428e-03, 1.955e-02, -3.945e-02, 6.621e-02, 7.847e-02, 3.751e-02, -2.453e-02, 5.446e-02, -2.147e-03, 9.343e-02, 1.831e-02, -2.326e-02, 9.726e-03, 9.310e-03, 4.441e-02), r);\n\tr = MulAdd(s3_0, M4(8.006e-03, 1.303e-02, -1.699e-02, 3.502e-02, 3.206e-02, -1.142e-02, 6.145e-02, 4.134e-03, 5.406e-03, -6.115e-02, -1.278e-02, -7.290e-03, 6.903e-02, -1.011e-02, -2.205e-02, 1.344e-01), r);\n\tr = MulAdd(s3_1, M4(-1.503e-04, 1.265e-02, 9.939e-03, -7.723e-04, 6.080e-03, -7.056e-02, -4.305e-02, -3.895e-02, 4.111e-02, -2.079e-02, 3.906e-02, 2.248e-02, 6.166e-02, 3.592e-02, -1.023e-01, 1.410e-02), r);\n\tr = MulAdd(s3_2, M4(4.089e-02, -6.372e-02, -1.870e-02, 2.216e-02, -1.168e-02, 3.430e-02, -3.698e-03, 1.849e-02, 9.200e-03, 2.253e-02, 1.825e-02, 1.871e-02, 4.994e-02, -3.840e-03, -5.043e-02, 7.897e-03), r);\n\tr = MulAdd(s3_3, M4(1.894e-02, -2.918e-02, -3.547e-03, 9.431e-03, 3.416e-02, -1.264e-01, -1.016e-01, 6.763e-02, 6.354e-02, -4.594e-02, -5.100e-02, 6.429e-02, -1.147e-02, 8.992e-02, 2.033e-02, 2.801e-02), r);\n\tr = MulAdd(s3_4, M4(-1.359e-01, -1.328e-01, -2.280e-01, 1.655e-01, 1.170e-01, -3.456e-02, -1.741e-02, 2.617e-02, -4.748e-02, -6.031e-02, -3.827e-02, 6.860e-02, 5.744e-02, -2.272e-01, 9.794e-02, -7.356e-02), r);\n\tr = MulAdd(s3_5, M4(-1.267e-01, 5.624e-02, -5.376e-02, 7.105e-02, 8.256e-03, -1.507e-02, -1.542e-02, 1.324e-02, -4.601e-02, 5.123e-02, -1.844e-02, 2.398e-02, 7.308e-02, 1.566e-02, -3.331e-02, 7.307e-02), r);\n\tr = MulAdd(s3_6, M4(2.185e-02, 1.127e-01, -3.688e-02, 4.312e-02, 5.437e-03, -2.636e-02, -6.787e-02, 2.842e-02, 6.742e-02, 9.200e-03, 3.874e-02, 8.117e-02, 1.908e-03, 2.687e-02, -3.284e-02, 4.026e-02), r);\n\tr = MulAdd(s3_7, M4(-1.473e-02, -2.724e-02, -4.317e-02, -1.223e-01, 8.346e-03, -1.594e-02, 1.405e-03, -1.531e-02, 1.548e-01, -5.796e-03, 5.517e-02, -8.836e-02, -1.659e-02, 2.499e-02, -2.863e-02, 5.616e-02), r);\n\tr = MulAdd(s3_8, M4(4.551e-02, -2.843e-02, 6.142e-03, -6.877e-02, -6.137e-04, -4.215e-03, 1.564e-02, -4.295e-03, 4.038e-02, -3.400e-02, 6.898e-02, -3.296e-02, 3.822e-02, -1.935e-02, -6.912e-03, 2.093e-02), r);\n\tr = MulAdd(s4_0, M4(-2.593e-02, 2.093e-02, -1.977e-02, -8.374e-02, -3.038e-02, 7.975e-02, 2.651e-02, 3.106e-03, -1.552e-02, -2.949e-02, -3.688e-02, -3.919e-02, 2.234e-02, 2.978e-03, -6.088e-03, 1.161e-02), r);\n\tr = MulAdd(s4_1, M4(-9.005e-03, -2.757e-02, 7.088e-02, -9.204e-02, 5.620e-02, -2.922e-02, -6.345e-02, 6.129e-02, 4.920e-02, -2.946e-02, 8.479e-02, -8.622e-03, -3.982e-03, 9.320e-02, 6.492e-02, 6.297e-02), r);\n\tr = MulAdd(s4_2, M4(-2.727e-02, 4.210e-02, 2.567e-02, -3.893e-03, -1.296e-02, 1.579e-02, 2.187e-02, -1.296e-02, 4.373e-03, 2.246e-02, -1.385e-02, 3.281e-02, -2.399e-02, -1.604e-02, -2.746e-02, -5.847e-02), r);\n\tr = MulAdd(s4_3, M4(1.420e-02, -9.644e-02, 8.939e-02, -6.151e-02, 3.273e-02, 7.034e-02, 1.963e-02, 4.333e-02, 7.394e-02, -1.392e-01, -8.823e-02, -1.900e-02, 2.113e-02, -5.623e-03, -3.419e-02, 2.875e-02), r);\n\tr = MulAdd(s4_4, M4(1.148e-02, -1.850e-02, 3.121e-02, 7.214e-02, 1.078e-02, 9.795e-02, 1.532e-01, -6.949e-03, -2.142e-01, -9.572e-02, 1.877e-01, -1.601e-01, -2.678e-02, 8.389e-02, -8.181e-02, -1.043e-01), r);\n\tr = MulAdd(s4_5, M4(-5.404e-02, 2.965e-02, 1.950e-02, -5.925e-02, 5.095e-02, 3.441e-02, 1.074e-01, -5.415e-02, 1.158e-01, 2.059e-02, 1.930e-02, 3.106e-02, 4.156e-02, -1.818e-02, 2.495e-02, -4.216e-02), r);\n\tr = MulAdd(s4_6, M4(-5.912e-03, -2.800e-02, 2.312e-02, -3.870e-03, 8.954e-03, -1.878e-02, 4.475e-03, -3.050e-05, 4.467e-02, 4.924e-02, 2.961e-02, 3.709e-02, 3.406e-02, 3.756e-02, 4.557e-03, 1.972e-02), r);\n\tr = MulAdd(s4_7, M4(-4.816e-03, 6.425e-02, -6.616e-02, -2.269e-02, -1.666e-02, -1.313e-02, -3.477e-02, -4.396e-03, -9.325e-02, -1.418e-02, -6.576e-02, -1.131e-01, -1.779e-03, 1.724e-02, 1.067e-01, -1.243e-02), r);\n\tr = MulAdd(s4_8, M4(-1.228e-02, -7.142e-03, 1.009e-01, -4.010e-02, 2.561e-02, -2.763e-02, -1.154e-02, 4.042e-02, 8.868e-02, -7.952e-02, 3.336e-02, 2.707e-02, -2.938e-02, 2.756e-02, 3.208e-02, 4.626e-02), r);\n\tr = MulAdd(s5_0, M4(-9.159e-02, 6.431e-02, -1.213e-02, -7.887e-02, -3.602e-02, 1.221e-01, -9.357e-02, 3.184e-02, 1.606e-02, -3.790e-02, -5.347e-02, 9.859e-03, -2.165e-02, 6.015e-02, 4.728e-03, 1.987e-02), r);\n\tr = MulAdd(s5_1, M4(-7.130e-02, -7.513e-02, 1.332e-01, -2.038e-01, -2.621e-01, 1.490e-01, 9.949e-02, -1.379e-01, -3.441e-02, 7.215e-02, 8.020e-02, -2.985e-02, -1.117e-02, 2.100e-02, 2.912e-02, 9.687e-03), r);\n\tr = MulAdd(s5_2, M4(-5.556e-02, -2.980e-02, 5.666e-02, -9.088e-02, 5.883e-02, -5.671e-02, 1.815e-02, 1.004e-02, 1.114e-04, 2.225e-03, 1.452e-02, -2.179e-02, 2.119e-02, -3.922e-02, 1.355e-01, -8.419e-02), r);\n\tr = MulAdd(s5_3, M4(-8.849e-03, -2.438e-01, -3.316e-02, -1.082e-01, 1.853e-02, 1.050e-01, 2.802e-02, 6.987e-02, 1.900e-02, -9.460e-02, -4.280e-02, -7.711e-02, 1.582e-02, -1.505e-02, -4.113e-02, 7.351e-05), r);\n\tr = MulAdd(s5_4, M4(-8.418e-02, 1.956e-01, -1.095e-01, 1.026e-01, 1.909e-01, -1.499e-01, 4.226e-01, -1.755e-01, 2.404e-02, -4.169e-02, 3.206e-02, 6.999e-02, -1.089e-02, 2.476e-01, -7.327e-02, 2.165e-01), r);\n\tr = MulAdd(s5_5, M4(5.984e-02, -6.277e-02, 3.448e-02, -4.323e-02, -1.380e-02, -1.972e-02, 6.379e-02, 8.212e-03, 9.482e-02, -1.313e-02, 8.471e-02, -1.677e-02, 5.325e-01, -1.756e-01, 3.271e-01, -1.751e-01), r);\n\tr = MulAdd(s5_6, M4(-6.568e-02, -1.029e-01, 5.247e-02, -1.028e-01, -1.212e-02, 2.766e-02, 1.504e-02, -1.584e-02, 1.014e-02, -3.362e-02, 4.607e-02, -1.774e-02, 1.367e-02, 5.357e-02, 1.847e-02, 7.664e-03), r);\n\tr = MulAdd(s5_7, M4(2.299e-02, 9.632e-02, -1.358e-02, -1.970e-02, -5.210e-02, 1.483e-01, 1.090e-01, 6.136e-04, 3.251e-02, -1.370e-01, -8.047e-02, 9.135e-03, -2.789e-02, -5.084e-02, -8.085e-03, -1.059e-01), r);\n\tr = MulAdd(s5_8, M4(-3.400e-02, -7.040e-03, 3.179e-02, -7.687e-02, 2.856e-02, -4.108e-02, -1.130e-01, 1.423e-02, -4.021e-02, 5.519e-03, 3.914e-03, 4.571e-02, 6.344e-02, -3.582e-02, 1.021e-01, 1.509e-02), r);\n\tr = MulAdd(s6_0, M4(1.058e-01, -7.012e-02, -5.282e-03, 1.225e-01, -2.563e-02, 3.260e-02, 2.460e-02, 1.274e-02, 4.838e-02, -1.180e-01, -3.756e-02, 1.926e-02, 2.041e-02, -1.110e-02, -1.384e-03, 6.233e-03), r);\n\tr = MulAdd(s6_1, M4(-3.115e-02, 7.858e-03, -7.703e-02, -6.222e-02, 3.918e-02, -5.431e-02, 3.723e-03, 3.550e-02, 1.788e-01, 7.275e-02, -2.121e-02, 8.663e-02, 1.253e-02, -5.224e-02, -1.388e-02, -1.968e-02), r);\n\tr = MulAdd(s6_2, M4(7.874e-02, -6.188e-02, -9.159e-02, 1.215e-01, -2.795e-02, 2.348e-02, 1.755e-02, -5.391e-03, -1.187e-01, 3.654e-02, -3.447e-02, -3.986e-02, -9.454e-04, 3.849e-02, 3.628e-02, 4.309e-02), r);\n\tr = MulAdd(s6_3, M4(-1.932e-02, 1.476e-01, -7.003e-02, 3.489e-02, 1.989e-02, -6.807e-02, -6.319e-02, -1.538e-02, -2.931e-02, 6.941e-02, 8.206e-03, 8.153e-02, 1.229e-02, -4.671e-02, -3.886e-02, 1.106e-03), r);\n\tr = MulAdd(s6_4, M4(9.417e-02, -2.394e-01, 1.957e-01, 5.788e-02, -2.446e-02, 8.874e-03, 5.894e-02, 4.274e-02, 1.005e-01, -1.371e-01, -1.676e-01, -3.986e-02, -1.481e-01, 1.306e-02, 2.543e-02, -1.523e-01), r);\n\tr = MulAdd(s6_5, M4(6.421e-02, 3.377e-02, -7.346e-02, -5.284e-03, 2.185e-02, 6.796e-03, 4.730e-02, -3.318e-02, 5.095e-03, 1.153e-01, 7.242e-02, 1.921e-02, 1.145e-01, -5.113e-02, 1.402e-04, 8.227e-02), r);\n\tr = MulAdd(s6_6, M4(2.136e-02, -5.919e-02, -6.817e-02, 5.806e-02, 2.670e-02, -4.493e-03, -4.624e-03, 2.248e-02, 1.443e-02, -2.058e-02, -5.921e-03, 2.605e-02, 8.326e-03, -9.662e-02, -5.167e-02, -2.557e-02), r);\n\tr = MulAdd(s6_7, M4(4.999e-02, -1.434e-01, -1.646e-01, 4.182e-02, -6.911e-02, -4.970e-02, -6.567e-02, -4.646e-03, 2.940e-02, 8.285e-02, 3.201e-02, 1.668e-02, -3.641e-02, 3.822e-02, 6.107e-03, 8.802e-02), r);\n\tr = MulAdd(s6_8, M4(7.182e-02, 3.517e-02, -4.517e-02, 4.548e-02, 5.198e-02, -4.318e-03, 2.819e-02, -8.629e-03, 3.274e-04, -5.217e-03, 2.982e-02, -2.487e-02, -9.713e-03, -2.504e-02, -1.976e-02, 1.010e-02), r);\n\tr = MulAdd(s7_0, M4(-1.477e-03, 1.436e-02, -5.882e-03, 2.125e-02, -6.409e-02, -2.897e-03, -9.065e-03, -2.558e-02, 1.167e-02, -5.244e-02, -7.526e-02, 2.297e-02, 1.680e-02, -1.422e-02, 8.842e-03, 2.474e-02), r);\n\tr = MulAdd(s7_1, M4(2.233e-03, 2.633e-02, -2.334e-02, -3.533e-02, 8.916e-02, -1.052e-01, -4.954e-02, 7.028e-02, 4.928e-02, 1.115e-01, 8.849e-02, 7.943e-02, -3.440e-02, 4.251e-02, -2.732e-02, -2.890e-02), r);\n\tr = MulAdd(s7_2, M4(8.775e-03, -2.610e-02, 2.123e-02, -3.954e-03, -7.393e-02, 6.974e-02, 2.462e-02, -6.027e-02, 1.582e-02, -1.214e-02, -2.985e-02, -4.174e-03, -1.580e-02, 8.317e-03, 9.589e-03, 2.570e-02), r);\n\tr = MulAdd(s7_3, M4(5.606e-03, -1.468e-02, 1.723e-02, -4.016e-02, 1.854e-01, -3.051e-01, -3.555e-02, -7.989e-02, -8.124e-03, -1.631e-02, -3.592e-02, 2.174e-02, -2.360e-02, -8.126e-02, -5.451e-02, -6.362e-02), r);\n\tr = MulAdd(s7_4, M4(-5.537e-02, 1.314e-02, 8.755e-02, -9.445e-03, -3.013e-01, -1.111e-01, -8.096e-02, 2.060e-01, -9.947e-02, 1.158e-02, 3.951e-02, -2.653e-02, -4.153e-01, 2.589e-01, -6.686e-01, -5.985e-02), r);\n\tr = MulAdd(s7_5, M4(1.822e-02, 2.026e-02, -3.674e-02, 1.442e-02, 1.939e-01, -1.377e-03, 1.205e-01, -6.445e-02, 7.434e-02, 3.865e-03, 2.157e-02, -5.609e-02, -6.769e-02, -3.530e-02, 5.183e-02, 2.761e-02), r);\n\tr = MulAdd(s7_6, M4(3.779e-02, 7.490e-03, -6.374e-03, 2.683e-02, 2.187e-02, 6.518e-02, 3.773e-02, 2.820e-02, -1.138e-02, -9.686e-03, 7.643e-03, -9.547e-03, -1.200e-02, 7.512e-02, -1.624e-03, 2.857e-02), r);\n\tr = MulAdd(s7_7, M4(-7.202e-02, 4.839e-03, -6.140e-02, -1.012e-03, -1.585e-02, -2.412e-02, -1.058e-01, -2.273e-02, 2.286e-02, -6.744e-02, -5.347e-02, -2.545e-02, 8.405e-02, -5.129e-02, -5.990e-02, -2.139e-02), r);\n\tr = MulAdd(s7_8, M4(2.350e-02, 1.945e-03, 1.996e-02, 3.091e-03, -6.660e-03, -6.128e-03, 3.594e-02, -5.780e-02, -2.585e-02, 1.893e-02, 6.346e-02, -4.523e-02, -7.251e-02, -1.237e-02, 1.889e-02, 3.806e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 6.699e-04, -8.118e-04, -2.993e-03, -1.333e-03 };\n\tr = MulAdd(s0_0, M4(1.202e-02, -5.206e-02, -1.313e-02, -1.772e-02, 2.042e-02, -1.495e-02, 2.553e-02, -4.534e-02, 4.631e-02, 3.608e-02, -2.366e-02, -1.733e-02, 1.333e-02, -7.776e-02, -5.467e-02, -2.504e-02), r);\n\tr = MulAdd(s0_1, M4(2.778e-03, -4.640e-02, -4.725e-02, 4.790e-02, 1.138e-02, 4.644e-02, -3.479e-02, -1.653e-01, 2.812e-02, -2.482e-02, 2.254e-02, -6.457e-02, 8.879e-03, 5.711e-02, 3.155e-02, -1.638e-01), r);\n\tr = MulAdd(s0_2, M4(4.528e-02, -2.807e-02, -5.630e-02, -3.859e-02, -5.916e-02, 2.698e-02, 7.203e-02, -6.372e-02, -1.076e-02, -2.437e-02, 3.047e-02, -4.819e-02, 1.503e-04, -2.093e-02, -1.619e-03, -7.104e-02), r);\n\tr = MulAdd(s0_3, M4(-1.326e-01, -1.443e-01, 2.782e-02, 2.616e-02, 5.204e-02, 2.389e-02, -8.061e-03, 3.848e-02, 1.095e-01, -4.839e-03, -3.616e-02, 1.281e-02, 4.160e-02, 6.821e-02, -6.438e-02, -8.374e-02), r);\n\tr = MulAdd(s0_4, M4(-3.540e-01, -1.772e-02, -7.275e-02, 1.626e-02, 7.496e-02, 4.160e-02, -3.751e-03, -1.767e-02, 2.694e-02, -3.734e-02, -1.266e-01, 1.995e-02, -4.675e-02, -4.186e-02, 1.885e-01, 3.583e-02), r);\n\tr = MulAdd(s0_5, M4(-5.912e-02, 2.717e-02, -1.152e-01, -2.959e-02, 6.588e-02, 5.299e-02, 1.552e-01, 2.535e-03, 5.990e-02, -2.895e-02, -2.847e-03, 6.045e-02, 2.351e-02, 2.236e-02, -6.715e-02, 9.303e-03), r);\n\tr = MulAdd(s0_6, M4(4.031e-02, -2.244e-03, -1.873e-02, -2.074e-02, -1.312e-02, -1.007e-02, 2.915e-02, -1.229e-02, -3.107e-02, 2.602e-03, -3.643e-02, 3.225e-03, 4.314e-02, 4.228e-02, -6.631e-02, 3.520e-02), r);\n\tr = MulAdd(s0_7, M4(-1.581e-01, -1.810e-01, 7.088e-02, 1.042e-02, 1.581e-01, 2.587e-02, -3.175e-03, 6.183e-02, 2.268e-02, -3.908e-02, -3.724e-02, 8.091e-03, 4.869e-02, 5.575e-03, 9.839e-02, 1.347e-03), r);\n\tr = MulAdd(s0_8, M4(2.168e-02, 5.077e-02, 6.702e-03, -6.015e-03, 3.845e-02, -3.942e-02, 2.236e-02, 5.486e-03, -6.448e-03, -2.784e-02, 2.199e-02, -2.274e-02, 1.640e-02, 2.604e-02, 7.827e-04, -3.243e-03), r);\n\tr = MulAdd(s1_0, M4(-1.666e-02, -4.525e-02, -4.417e-03, 6.513e-03, -5.906e-03, -4.944e-02, 3.514e-04, -1.025e-01, 2.019e-02, -3.469e-02, -1.699e-02, 3.441e-02, 4.242e-02, -3.344e-02, -7.866e-02, 1.878e-01), r);\n\tr = MulAdd(s1_1, M4(2.426e-02, 2.344e-03, -4.044e-02, 2.125e-02, 8.551e-02, -3.998e-02, -5.706e-02, -2.259e-01, 2.623e-02, 6.970e-02, 2.346e-02, 1.463e-02, 3.045e-02, 2.641e-03, 7.730e-02, -4.346e-02), r);\n\tr = MulAdd(s1_2, M4(1.810e-02, 8.911e-03, -2.008e-02, -6.464e-02, -2.773e-02, -2.173e-02, 4.828e-02, -7.345e-02, 1.638e-02, -8.087e-02, 8.820e-03, 2.566e-02, -1.187e-02, -4.421e-03, -5.535e-03, -3.896e-02), r);\n\tr = MulAdd(s1_3, M4(3.406e-02, -1.770e-03, -1.062e-02, -3.381e-02, -1.629e-02, 2.031e-02, 1.762e-02, 4.063e-02, -3.554e-02, 1.917e-01, -9.696e-03, -8.665e-04, 7.837e-02, 2.752e-01, -2.005e-01, -8.668e-02), r);\n\tr = MulAdd(s1_4, M4(-4.266e-02, 6.996e-02, 6.613e-02, -1.204e-02, 3.922e-03, 9.455e-02, -2.608e-01, 5.084e-02, -8.956e-02, 3.111e-02, -1.812e-02, -6.210e-02, -8.112e-02, 6.008e-02, 1.211e-01, -2.499e-02), r);\n\tr = MulAdd(s1_5, M4(-3.288e-02, 1.581e-02, -4.622e-02, -4.464e-03, 6.258e-02, 7.641e-02, 1.685e-01, -2.340e-02, 2.054e-02, -1.410e-02, -4.083e-02, 5.616e-03, 5.094e-02, 2.548e-02, -6.280e-02, -8.699e-03), r);\n\tr = MulAdd(s1_6, M4(4.355e-02, -4.089e-02, -7.083e-03, 2.218e-02, 8.966e-03, -3.881e-03, 4.896e-02, 2.680e-03, 2.440e-02, 3.871e-02, -1.186e-02, -1.416e-02, 3.558e-02, 1.948e-01, -6.474e-02, 7.606e-03), r);\n\tr = MulAdd(s1_7, M4(3.047e-02, 2.547e-02, -6.296e-03, -1.136e-02, -5.031e-02, -5.999e-02, 4.286e-02, 4.152e-02, 1.145e-02, 2.706e-02, -1.632e-02, -3.617e-03, 4.819e-02, -2.707e-02, 1.276e-01, 3.283e-02), r);\n\tr = MulAdd(s1_8, M4(6.520e-02, 4.851e-02, -8.113e-03, 1.440e-02, 4.084e-02, 4.061e-02, 2.539e-02, -1.643e-02, -7.473e-03, -1.430e-02, -5.003e-04, -3.345e-02, 5.729e-02, 1.718e-02, 1.987e-03, 3.236e-03), r);\n\tr = MulAdd(s2_0, M4(-6.699e-03, -2.586e-02, 5.295e-03, 3.528e-02, -6.310e-03, -7.413e-02, 1.474e-02, 3.928e-02, 1.458e-02, 1.269e-02, 1.055e-02, -1.259e-01, 5.331e-02, -6.769e-02, -3.363e-02, -4.863e-02), r);\n\tr = MulAdd(s2_1, M4(-3.673e-02, 1.092e-02, -1.691e-02, -4.693e-02, 4.304e-05, -2.996e-03, -7.283e-03, 5.531e-02, 7.316e-04, -6.074e-04, -6.141e-02, -5.570e-02, 7.371e-02, -2.323e-02, -4.505e-02, 3.014e-02), r);\n\tr = MulAdd(s2_2, M4(-1.643e-03, -9.824e-03, 1.511e-02, -2.464e-02, 1.116e-02, 2.840e-02, -4.088e-02, -6.275e-02, 1.293e-02, 1.246e-02, 1.986e-02, -5.365e-02, -4.314e-02, -2.603e-02, -7.790e-02, 2.061e-03), r);\n\tr = MulAdd(s2_3, M4(5.190e-02, -1.787e-01, 2.032e-02, 1.634e-02, 6.689e-03, 1.083e-01, -1.797e-02, 2.083e-02, -1.605e-02, 1.100e-04, -6.777e-02, 1.240e-01, -2.460e-02, 1.572e-01, 9.084e-02, -4.332e-02), r);\n\tr = MulAdd(s2_4, M4(2.016e-01, 9.259e-02, 8.855e-02, 9.362e-02, 4.120e-02, 5.435e-02, -3.455e-02, -1.942e-01, 2.359e-02, 1.944e-02, -8.789e-02, 6.333e-02, -9.278e-02, -1.680e-02, -2.102e-01, 1.023e-02), r);\n\tr = MulAdd(s2_5, M4(-1.789e-02, -5.531e-02, -1.321e-01, 2.582e-02, 4.118e-02, -1.022e-01, -5.847e-02, 5.383e-02, 4.017e-02, 5.977e-03, -9.539e-02, -4.341e-02, 3.636e-02, 2.195e-02, 9.371e-03, -3.872e-02), r);\n\tr = MulAdd(s2_6, M4(-4.446e-02, 9.027e-03, -3.196e-02, 3.966e-03, 2.963e-03, -1.151e-01, 1.687e-03, 2.612e-02, 2.786e-01, -5.185e-02, -1.802e-01, -1.431e-01, -5.649e-02, -8.974e-02, 3.276e-02, 1.676e-03), r);\n\tr = MulAdd(s2_7, M4(-7.750e-02, -3.620e-02, 1.018e-02, -1.904e-02, 5.416e-02, 3.335e-02, -1.312e-01, 6.845e-02, -5.062e-02, -2.519e-02, -2.546e-01, -3.405e-02, 9.969e-03, 2.791e-02, -2.363e-02, 4.162e-03), r);\n\tr = MulAdd(s2_8, M4(2.480e-02, 6.180e-03, -5.884e-02, -6.062e-03, 1.768e-02, 1.448e-02, -3.561e-02, 1.611e-02, 8.485e-02, 7.662e-02, -4.287e-02, 5.595e-02, 4.231e-02, 4.136e-02, -1.284e-01, 2.549e-02), r);\n\tr = MulAdd(s3_0, M4(-3.932e-03, 7.414e-03, 1.909e-02, 4.169e-03, 1.647e-02, -1.229e-02, -2.545e-02, 6.120e-03, -3.781e-02, 4.003e-02, -3.228e-03, 2.159e-02, -5.261e-02, 2.311e-02, -2.729e-02, 3.838e-02), r);\n\tr = MulAdd(s3_1, M4(-7.097e-02, 3.959e-02, 1.671e-02, 1.431e-02, 6.091e-02, 4.520e-04, 3.667e-03, 3.791e-02, 2.410e-02, 3.634e-02, 2.145e-02, -9.994e-02, -1.372e-01, 4.290e-02, 1.226e-01, 1.016e-01), r);\n\tr = MulAdd(s3_2, M4(2.725e-02, 1.776e-03, 3.241e-02, 3.211e-02, 3.056e-03, 8.507e-03, -1.008e-02, -4.513e-02, 2.783e-02, 2.291e-03, -5.210e-02, -2.966e-02, -5.094e-02, 4.124e-03, 6.788e-02, 6.846e-02), r);\n\tr = MulAdd(s3_3, M4(5.710e-02, -8.337e-02, 3.944e-02, -1.798e-02, 5.437e-02, 1.179e-01, 1.762e-02, -4.683e-02, 2.977e-02, 4.506e-02, 2.724e-02, 6.091e-02, 1.104e-02, 2.352e-01, -2.861e-02, -1.725e-02), r);\n\tr = MulAdd(s3_4, M4(2.343e-01, 6.819e-02, 4.281e-01, 1.513e-01, -7.984e-02, -4.274e-02, 7.711e-02, -9.257e-04, 5.407e-03, -8.743e-02, 5.039e-03, 8.324e-02, -2.269e-02, 1.410e-01, -1.995e-01, 2.319e-02), r);\n\tr = MulAdd(s3_5, M4(8.306e-03, -5.039e-02, -5.041e-02, -1.082e-02, 1.194e-03, -9.653e-03, 8.765e-02, -1.638e-03, 4.377e-03, -2.279e-03, -1.560e-01, -2.593e-02, -5.295e-02, 5.573e-02, 1.626e-01, -1.273e-02), r);\n\tr = MulAdd(s3_6, M4(-1.995e-01, 4.895e-02, 2.898e-02, -3.804e-02, -3.671e-02, 3.441e-02, 5.273e-02, -3.421e-03, -7.544e-02, 1.140e-01, 8.635e-03, 4.871e-02, -4.460e-02, 4.741e-03, 8.239e-02, -1.949e-03), r);\n\tr = MulAdd(s3_7, M4(-2.320e-01, -4.818e-02, -1.578e-02, 1.857e-02, 3.682e-02, 4.703e-02, 3.702e-02, 2.967e-02, -4.824e-02, 6.226e-02, -6.276e-02, 1.757e-02, -3.064e-02, -1.469e-02, 7.422e-03, 2.195e-02), r);\n\tr = MulAdd(s3_8, M4(-2.482e-02, -9.439e-03, 4.244e-03, 1.053e-02, 7.969e-03, 1.956e-02, -2.825e-02, 9.694e-03, 1.038e-02, 3.184e-02, -6.863e-02, 1.815e-03, -6.007e-03, 5.574e-02, -3.238e-02, 1.116e-02), r);\n\tr = MulAdd(s4_0, M4(1.183e-02, -3.921e-02, -1.393e-02, 1.735e-02, -1.585e-03, 1.983e-02, -2.314e-02, -6.488e-03, 4.871e-02, -5.115e-02, 1.302e-02, 5.821e-02, -1.611e-02, -2.594e-02, 2.390e-02, -3.653e-03), r);\n\tr = MulAdd(s4_1, M4(3.723e-02, 4.528e-04, -8.784e-02, -7.429e-02, 1.899e-02, -2.095e-03, 7.305e-02, -8.574e-02, 4.873e-02, -2.074e-02, -4.965e-02, -2.479e-02, -1.387e-02, 1.443e-02, -3.904e-02, -2.719e-03), r);\n\tr = MulAdd(s4_2, M4(2.351e-02, -1.994e-02, -7.496e-02, -7.192e-02, 2.219e-02, -4.016e-02, 1.939e-02, 4.346e-03, 4.140e-02, 9.277e-04, -2.265e-02, -3.892e-02, -8.554e-03, -2.833e-02, 4.008e-02, 4.629e-02), r);\n\tr = MulAdd(s4_3, M4(1.208e-01, -3.823e-02, -3.269e-02, -1.286e-03, 4.417e-03, -4.882e-02, 4.111e-02, 4.979e-03, -6.309e-02, -2.078e-02, 3.575e-03, -2.735e-02, -2.922e-02, -1.231e-02, 2.696e-02, -9.421e-03), r);\n\tr = MulAdd(s4_4, M4(2.303e-02, -2.025e-02, -2.137e-03, -4.277e-02, 9.204e-02, -9.333e-02, 1.704e-02, 6.432e-02, -1.993e-01, 7.357e-02, -1.341e-01, 1.839e-01, -5.953e-02, -7.500e-02, -7.122e-02, 2.273e-02), r);\n\tr = MulAdd(s4_5, M4(5.218e-02, -3.047e-02, -2.291e-01, -1.955e-03, -1.840e-02, 1.907e-02, -1.891e-01, 1.745e-02, 6.113e-03, -1.898e-02, -2.142e-03, -1.337e-02, 9.104e-03, -4.063e-02, 2.113e-01, -2.814e-04), r);\n\tr = MulAdd(s4_6, M4(-1.083e-02, -1.247e-03, 8.832e-03, 2.131e-03, 1.051e-02, 5.914e-02, -3.088e-04, -1.683e-02, -8.502e-02, 2.476e-02, 2.931e-02, 1.084e-02, 9.516e-03, 1.040e-02, 1.929e-02, -8.289e-03), r);\n\tr = MulAdd(s4_7, M4(5.415e-03, -2.825e-02, -3.766e-03, -2.316e-02, -4.971e-02, 5.587e-02, -4.335e-03, -2.868e-02, -3.055e-01, -4.066e-01, -4.920e-02, 2.395e-02, 1.180e-02, -8.303e-02, -9.242e-02, 3.838e-03), r);\n\tr = MulAdd(s4_8, M4(2.608e-02, -3.677e-03, -6.193e-02, -2.307e-02, -1.527e-03, 1.554e-02, 2.510e-02, 1.332e-02, -4.938e-02, 9.703e-02, 6.559e-02, 7.017e-03, -1.648e-02, 1.028e-02, 3.660e-02, 1.336e-02), r);\n\tr = MulAdd(s5_0, M4(2.651e-02, 2.183e-02, 2.040e-02, -2.505e-02, -2.446e-03, -1.051e-01, 3.534e-02, -9.687e-03, 3.315e-03, -2.465e-02, 3.093e-03, 4.203e-03, 2.357e-03, -1.258e-03, -5.855e-03, 4.044e-02), r);\n\tr = MulAdd(s5_1, M4(3.443e-02, 2.962e-03, -4.624e-02, -1.007e-01, -8.151e-02, 6.946e-02, -9.300e-02, 5.324e-02, -2.258e-02, -2.535e-02, -4.632e-02, -6.499e-03, 5.106e-02, -4.213e-02, 2.573e-02, 1.418e-02), r);\n\tr = MulAdd(s5_2, M4(8.939e-03, -1.427e-02, -1.178e-01, 2.562e-02, 4.116e-02, 2.258e-02, -3.821e-02, 1.074e-02, 3.980e-03, -1.391e-02, 1.545e-02, 2.426e-02, 2.410e-02, -4.835e-02, 3.651e-02, 8.455e-02), r);\n\tr = MulAdd(s5_3, M4(7.596e-02, -2.409e-01, -1.144e-03, 6.046e-02, -2.197e-02, -2.105e-02, 4.999e-02, -1.540e-02, 5.708e-02, -4.963e-02, 1.332e-02, -1.245e-01, -1.575e-03, -4.965e-02, 1.620e-02, 2.225e-02), r);\n\tr = MulAdd(s5_4, M4(1.679e-01, 1.666e-01, 1.548e-01, -1.212e-01, 1.830e-01, -1.489e-01, -4.146e-01, 7.725e-05, 2.168e-01, 6.509e-02, -6.296e-02, 7.612e-02, -1.388e-01, 2.861e-01, -3.157e-02, -3.745e-02), r);\n\tr = MulAdd(s5_5, M4(7.487e-02, -2.872e-02, -5.950e-02, 5.356e-04, -7.855e-02, -7.150e-02, -2.891e-01, -4.871e-02, -9.485e-03, 1.422e-03, -6.204e-02, -8.279e-04, -3.348e-02, 1.801e-01, 3.021e-01, 1.198e-01), r);\n\tr = MulAdd(s5_6, M4(-1.100e-01, -7.397e-02, -5.533e-02, 1.415e-02, 3.442e-02, -4.303e-02, 1.338e-03, 1.903e-03, 6.188e-03, 3.195e-02, 2.301e-02, 6.367e-03, -1.015e-02, -7.740e-03, 6.780e-03, -1.874e-02), r);\n\tr = MulAdd(s5_7, M4(4.114e-02, 1.979e-02, -4.935e-02, 1.276e-04, -3.920e-02, -7.128e-02, -5.296e-02, 2.289e-02, -2.920e-02, 5.082e-02, -1.198e-02, -7.483e-02, 3.892e-02, -1.013e-01, -2.029e-02, 2.929e-02), r);\n\tr = MulAdd(s5_8, M4(-6.149e-03, -1.169e-01, 1.167e-02, -1.381e-03, 5.609e-03, 3.120e-02, 4.072e-03, 1.250e-02, 1.698e-02, 3.357e-02, 1.476e-02, -3.236e-02, -1.193e-01, -9.789e-03, 1.314e-01, -2.507e-02), r);\n\tr = MulAdd(s6_0, M4(-5.521e-02, 1.141e-01, 1.397e-02, 5.606e-02, -1.255e-02, 7.418e-03, -1.474e-02, 5.248e-02, -1.691e-03, 1.189e-01, -1.471e-02, 1.164e-02, -2.696e-02, -2.463e-02, 1.766e-02, 1.483e-02), r);\n\tr = MulAdd(s6_1, M4(-7.491e-02, 6.301e-02, 1.107e-01, -8.152e-02, 2.512e-02, -3.004e-02, 4.235e-02, -7.317e-02, 9.981e-02, -1.609e-02, -6.883e-02, 2.647e-01, 1.224e-02, 3.268e-02, -6.409e-03, -5.662e-02), r);\n\tr = MulAdd(s6_2, M4(-6.863e-02, 2.457e-03, 1.028e-01, 6.772e-02, -4.231e-03, -1.520e-02, -6.802e-02, 5.775e-03, 1.304e-02, -6.472e-02, 1.805e-02, 3.022e-02, 2.355e-02, 1.757e-02, -2.309e-02, -1.274e-01), r);\n\tr = MulAdd(s6_3, M4(-1.865e-03, 1.707e-02, 5.189e-02, 1.018e-01, 6.379e-02, 4.276e-03, 2.532e-02, -5.459e-03, -1.039e-01, 1.345e-01, -2.931e-02, -2.603e-02, 1.687e-02, 9.416e-02, 3.137e-02, -6.282e-02), r);\n\tr = MulAdd(s6_4, M4(2.264e-01, 2.890e-01, 1.939e-01, 6.100e-02, -7.269e-02, -4.193e-02, -6.819e-02, -2.447e-02, -1.979e-01, 3.552e-01, -1.022e-02, -8.885e-02, -5.533e-02, 2.902e-02, -1.629e-01, -7.129e-02), r);\n\tr = MulAdd(s6_5, M4(-9.438e-02, -6.314e-02, -1.384e-01, 5.079e-02, 2.769e-02, 2.104e-02, -7.026e-02, 9.677e-03, -5.322e-02, -2.693e-02, -1.211e-03, -2.267e-02, 2.969e-02, 2.716e-02, -2.244e-02, 9.032e-03), r);\n\tr = MulAdd(s6_6, M4(-1.249e-01, 1.369e-01, 1.281e-03, -3.176e-02, 1.988e-02, 1.462e-02, 1.571e-02, 4.847e-03, -1.322e-02, -1.532e-02, 3.146e-02, -6.801e-03, 9.289e-02, -6.906e-02, 2.312e-02, 2.619e-02), r);\n\tr = MulAdd(s6_7, M4(-2.206e-01, -9.270e-03, 1.605e-01, 5.277e-02, 2.533e-02, -7.370e-03, -1.740e-02, 9.123e-04, 4.191e-02, 3.426e-02, -6.864e-02, -1.019e-03, 1.386e-01, 1.430e-01, 1.063e-02, -2.014e-02), r);\n\tr = MulAdd(s6_8, M4(-3.436e-02, 1.079e-01, 6.215e-02, -1.613e-02, -3.978e-02, 2.359e-03, -5.127e-03, 8.879e-03, 3.608e-02, 2.312e-02, -3.583e-02, -9.984e-03, 7.083e-02, 1.000e-02, -6.521e-02, -3.528e-02), r);\n\tr = MulAdd(s7_0, M4(5.631e-03, -1.099e-02, 2.470e-02, -1.599e-02, 4.649e-02, 1.875e-02, -9.796e-03, -1.112e-01, 1.249e-02, 2.323e-02, 8.349e-03, -1.331e-02, -2.411e-02, -7.650e-03, 3.156e-02, 8.621e-03), r);\n\tr = MulAdd(s7_1, M4(-7.994e-03, -1.512e-03, 1.167e-04, 2.619e-02, 8.130e-02, -4.266e-03, 4.462e-02, -3.094e-01, -1.353e-01, 1.170e-01, -3.701e-02, -1.291e-01, 1.761e-03, 6.650e-05, -5.571e-03, 9.789e-02), r);\n\tr = MulAdd(s7_2, M4(8.690e-03, 5.748e-04, 4.321e-03, -1.498e-02, -2.104e-03, -3.877e-02, -6.958e-02, -7.560e-02, 1.514e-02, -3.306e-03, 4.355e-02, -5.623e-02, 1.281e-03, 2.728e-02, -1.032e-02, -5.736e-02), r);\n\tr = MulAdd(s7_3, M4(1.114e-02, 2.890e-02, 2.115e-02, -3.360e-02, 2.141e-02, 2.168e-02, -1.822e-02, -3.781e-02, -1.509e-02, -3.306e-02, -2.132e-02, 9.044e-02, -2.197e-02, 2.614e-03, -9.609e-03, 7.045e-02), r);\n\tr = MulAdd(s7_4, M4(-1.577e-02, -6.364e-02, -1.450e-01, -2.065e-04, -2.633e-01, -1.561e-01, -6.868e-02, -1.999e-02, -1.703e-02, 2.350e-02, -1.037e-01, 6.314e-02, 1.968e-01, -2.012e-01, -1.368e-01, 4.188e-01), r);\n\tr = MulAdd(s7_5, M4(-1.454e-02, 4.459e-02, 5.748e-02, -2.923e-02, -1.995e-02, 6.323e-02, 4.365e-03, 1.299e-01, 3.510e-02, -1.645e-01, -4.284e-02, 7.069e-02, -3.466e-03, 1.841e-02, -5.013e-03, -5.554e-02), r);\n\tr = MulAdd(s7_6, M4(5.101e-03, -2.166e-02, 2.334e-02, 2.765e-02, 2.607e-02, 1.243e-01, -2.958e-02, -2.111e-03, -5.475e-04, 1.362e-03, -2.305e-02, -3.104e-02, 8.770e-03, -2.155e-04, 1.348e-03, 1.383e-03), r);\n\tr = MulAdd(s7_7, M4(6.813e-02, 3.550e-03, -2.008e-02, -6.561e-03, -5.394e-02, -1.180e-01, 6.716e-02, -2.584e-03, -8.732e-02, 1.699e-02, -2.186e-02, -1.698e-02, 1.753e-01, -3.906e-02, 3.391e-01, 2.130e-02), r);\n\tr = MulAdd(s7_8, M4(-2.760e-03, -2.192e-02, 2.986e-02, 2.327e-02, 2.508e-02, 3.758e-02, -2.277e-02, -8.764e-03, 5.948e-02, 3.695e-02, -3.128e-02, -1.495e-02, 7.690e-02, 4.470e-02, 4.537e-02, 6.489e-03), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.322e-03, -2.560e-03, 2.890e-03, 2.624e-03 };\n\tr = MulAdd(s0_0, M4(-8.061e-02, -3.221e-02, 3.068e-03, 3.472e-02, 4.412e-02, -1.193e-02, -8.794e-02, -3.656e-02, -1.386e-02, -2.252e-02, -4.376e-04, -5.507e-03, 5.252e-02, 1.102e-02, -1.491e-02, 7.509e-03), r);\n\tr = MulAdd(s0_1, M4(2.060e-02, 1.551e-01, -1.293e-01, -2.524e-02, -4.112e-02, 2.800e-03, 5.090e-02, 2.449e-03, 1.466e-01, 2.774e-02, 4.342e-02, 1.754e-02, 2.758e-02, 4.681e-02, 1.196e-03, -2.348e-02), r);\n\tr = MulAdd(s0_2, M4(-6.134e-02, -3.286e-02, -1.099e-02, 6.717e-02, -3.991e-02, -4.184e-02, 7.389e-02, 2.607e-02, 3.566e-02, 7.387e-04, -2.247e-02, 8.843e-03, 5.188e-02, 1.185e-02, -1.157e-02, 4.026e-02), r);\n\tr = MulAdd(s0_3, M4(-6.452e-02, -8.306e-03, 4.224e-02, -1.468e-02, -1.446e-02, -2.163e-02, 4.541e-02, 7.892e-03, -5.107e-02, -4.796e-02, -3.330e-02, 4.337e-02, -7.062e-03, -7.219e-03, 3.193e-03, -2.538e-02), r);\n\tr = MulAdd(s0_4, M4(7.595e-02, 1.609e-01, -2.564e-01, 8.810e-02, 1.163e-02, -8.844e-02, -2.578e-01, -5.648e-02, -2.456e-01, 2.254e-01, 1.372e-01, 8.619e-02, 1.230e-01, -2.682e-02, -1.530e-01, 5.659e-02), r);\n\tr = MulAdd(s0_5, M4(-7.065e-02, -9.855e-03, 4.001e-02, 1.496e-02, 4.451e-02, 4.064e-04, 1.064e-01, -4.124e-02, -1.496e-02, -8.857e-02, -8.328e-02, 6.789e-02, -6.524e-04, 2.245e-03, -6.397e-03, 1.306e-02), r);\n\tr = MulAdd(s0_6, M4(3.339e-03, 4.529e-02, -1.501e-02, 8.457e-02, -1.466e-02, 1.757e-02, 1.484e-02, -1.484e-02, 5.979e-02, 3.596e-02, -3.776e-02, -6.466e-02, -1.717e-02, -1.267e-02, 1.249e-02, 4.325e-02), r);\n\tr = MulAdd(s0_7, M4(-9.548e-02, -2.117e-02, 1.458e-02, -1.303e-02, 6.065e-02, -4.683e-02, 4.435e-03, 1.593e-03, 7.541e-02, 3.867e-02, 8.515e-02, 6.758e-02, -2.376e-02, -1.054e-02, 4.306e-02, -7.642e-02), r);\n\tr = MulAdd(s0_8, M4(-6.891e-02, 6.517e-02, 8.366e-02, -5.295e-02, 7.209e-03, 3.726e-02, -2.157e-02, 1.049e-01, 1.034e-02, 5.683e-02, -7.058e-02, 2.181e-02, 7.478e-03, -1.278e-02, -1.492e-02, -3.135e-02), r);\n\tr = MulAdd(s1_0, M4(3.248e-03, 2.825e-02, 3.530e-02, 3.137e-03, 4.960e-02, -1.504e-02, -6.241e-02, 1.014e-02, 4.153e-02, -3.616e-02, 7.992e-02, 1.632e-03, -4.343e-02, -9.899e-02, -4.591e-02, 4.862e-03), r);\n\tr = MulAdd(s1_1, M4(-8.626e-02, -6.787e-02, -4.015e-02, 1.020e-02, 8.740e-02, 7.088e-02, -2.460e-02, 1.434e-02, 1.836e-01, 3.922e-02, -2.350e-02, -5.132e-04, 3.726e-02, -8.695e-02, -5.849e-02, -1.450e-02), r);\n\tr = MulAdd(s1_2, M4(-2.141e-02, -9.575e-02, -6.408e-02, 2.680e-03, -5.232e-02, -4.155e-02, 2.629e-02, 2.581e-02, 7.916e-02, -8.219e-02, -2.804e-02, 4.334e-03, 1.388e-02, 2.954e-02, 1.015e-02, 1.882e-02), r);\n\tr = MulAdd(s1_3, M4(-4.166e-02, -4.172e-03, 5.090e-02, 3.572e-02, 5.285e-02, 8.259e-03, 2.529e-03, -2.082e-02, 6.636e-02, -2.586e-02, 4.243e-02, -1.078e-01, -3.849e-03, -1.010e-01, 1.536e-01, 6.421e-02), r);\n\tr = MulAdd(s1_4, M4(-6.087e-02, 4.722e-02, 6.591e-02, 1.120e-02, 1.958e-01, -2.862e-02, -1.202e-01, -3.503e-03, 2.528e-02, -2.884e-03, 2.872e-01, 2.683e-01, 2.044e-02, -2.790e-01, -1.796e-01, 8.382e-02), r);\n\tr = MulAdd(s1_5, M4(4.732e-02, -5.871e-02, -1.169e-01, -2.031e-02, 2.710e-03, -1.333e-01, 1.421e-01, 7.926e-02, 1.661e-02, -4.483e-02, -8.014e-02, -3.388e-04, 1.691e-02, -4.505e-02, 6.571e-02, -1.348e-02), r);\n\tr = MulAdd(s1_6, M4(3.471e-02, 3.378e-02, -8.717e-02, 7.544e-02, -6.288e-02, 2.081e-02, 2.298e-02, -2.993e-03, 4.522e-03, -7.794e-03, -4.982e-03, -3.590e-02, -7.603e-02, -2.180e-02, 1.330e-01, -4.647e-02), r);\n\tr = MulAdd(s1_7, M4(2.862e-02, -6.317e-02, -5.481e-02, -1.627e-01, 5.290e-02, 5.915e-04, 6.899e-02, 2.046e-01, 9.586e-02, -2.566e-02, -3.599e-02, 1.280e-01, -4.238e-02, -6.985e-02, 6.564e-02, -2.758e-02), r);\n\tr = MulAdd(s1_8, M4(-1.938e-03, 1.242e-02, 3.918e-02, -3.277e-02, 1.170e-02, -1.706e-06, 8.554e-02, -1.090e-01, 2.830e-02, 3.105e-03, -3.886e-02, -6.436e-02, -1.203e-02, -2.878e-02, -5.267e-02, 1.945e-02), r);\n\tr = MulAdd(s2_0, M4(5.528e-02, 9.739e-03, 2.004e-03, 3.160e-03, 4.355e-02, 1.221e-03, -8.703e-02, 2.689e-02, -1.351e-02, -1.205e-02, -3.093e-02, -1.370e-02, 7.025e-02, 9.179e-03, -9.626e-04, 6.785e-03), r);\n\tr = MulAdd(s2_1, M4(-2.777e-02, -8.242e-03, -1.114e-02, -1.084e-03, -3.786e-02, -1.153e-01, 6.387e-02, 2.035e-02, 6.563e-02, -1.642e-02, -6.511e-02, -2.599e-02, 1.560e-02, 1.179e-01, -9.626e-02, -4.517e-02), r);\n\tr = MulAdd(s2_2, M4(-9.169e-03, -2.774e-02, -4.434e-02, -3.142e-02, -2.064e-02, 4.408e-02, -2.709e-02, -4.789e-02, 1.567e-02, 7.772e-03, -2.729e-02, 8.944e-03, -4.433e-02, -6.372e-02, 8.256e-02, 4.168e-02), r);\n\tr = MulAdd(s2_3, M4(3.159e-02, 7.792e-02, 4.675e-02, -2.718e-02, 6.998e-02, 7.288e-02, 1.208e-01, -1.726e-02, -1.381e-01, -3.946e-01, 9.947e-02, 4.269e-03, -4.221e-02, -7.491e-04, -1.230e-01, -4.242e-02), r);\n\tr = MulAdd(s2_4, M4(2.414e-01, -6.188e-02, 6.128e-02, 1.082e-01, -3.194e-02, 2.273e-01, 6.298e-01, 1.135e-02, 1.151e-01, 2.199e-01, -1.289e-01, -6.079e-02, 4.429e-02, -9.703e-02, -4.727e-03, 3.353e-01), r);\n\tr = MulAdd(s2_5, M4(1.498e-02, -4.472e-02, -6.941e-02, 1.081e-02, -9.958e-03, -8.749e-02, 8.206e-02, 9.772e-02, 1.517e-02, -1.153e-02, -1.528e-01, 4.725e-02, -1.250e-02, -4.491e-02, 2.843e-02, -1.356e-01), r);\n\tr = MulAdd(s2_6, M4(4.861e-02, -2.473e-02, -2.656e-02, -2.268e-02, -5.055e-04, 4.137e-02, 6.287e-02, 1.033e-01, -2.895e-02, -2.813e-01, -9.524e-02, -9.396e-02, -6.787e-03, 2.429e-02, -6.387e-03, 2.739e-02), r);\n\tr = MulAdd(s2_7, M4(7.428e-02, 2.142e-02, -4.112e-02, 1.135e-01, -5.415e-02, 2.890e-02, 3.036e-01, -1.455e-02, 1.582e-01, -3.256e-01, -3.263e-01, -3.641e-02, -2.871e-02, 6.356e-02, -9.071e-02, -1.593e-01), r);\n\tr = MulAdd(s2_8, M4(8.001e-02, 2.992e-02, -2.762e-02, 3.298e-02, 3.404e-02, 2.531e-02, -1.675e-01, -3.540e-02, 8.403e-02, 1.865e-02, -6.212e-02, -3.236e-02, 2.719e-02, -2.761e-02, 1.600e-02, 6.571e-02), r);\n\tr = MulAdd(s3_0, M4(3.398e-02, -4.895e-04, 1.614e-02, -2.467e-02, 5.071e-02, 6.983e-03, 2.970e-02, 9.543e-03, -9.451e-02, -3.030e-02, 1.116e-02, 9.318e-03, -4.048e-02, -5.480e-02, 1.110e-01, -7.784e-02), r);\n\tr = MulAdd(s3_1, M4(-2.600e-02, 8.064e-03, 9.369e-02, 2.616e-02, 5.362e-02, 5.782e-02, -1.067e-01, 5.362e-03, 1.306e-02, -7.885e-03, -6.518e-02, 9.381e-03, 8.515e-02, -7.475e-02, -1.343e-01, -6.213e-02), r);\n\tr = MulAdd(s3_2, M4(5.751e-03, 2.538e-02, 1.962e-02, -2.790e-02, -2.377e-02, -4.240e-02, 1.209e-02, 1.314e-02, 2.025e-02, 7.784e-03, -1.837e-02, 5.976e-03, -5.516e-02, -9.428e-02, 1.268e-01, 2.969e-02), r);\n\tr = MulAdd(s3_3, M4(-8.950e-02, -8.800e-03, 1.640e-01, 2.897e-03, -3.997e-02, -3.237e-02, 5.528e-02, -6.530e-04, -1.817e-02, -3.339e-02, 9.188e-03, -2.534e-02, -1.597e-01, -8.423e-02, 2.096e-01, -2.920e-02), r);\n\tr = MulAdd(s3_4, M4(-1.813e-01, -3.936e-01, 2.434e-01, 6.759e-02, -2.571e-04, -1.128e-01, 7.820e-02, 4.335e-02, 8.014e-02, -5.647e-02, -1.626e-01, -6.703e-02, -1.845e-01, 2.022e-03, -4.692e-01, 3.637e-01), r);\n\tr = MulAdd(s3_5, M4(-6.688e-02, -1.025e-01, -5.000e-03, 3.304e-02, 1.616e-02, -1.465e-02, 3.482e-02, -3.793e-02, 3.067e-03, 2.227e-02, -1.094e-01, -4.482e-02, -8.340e-02, -1.492e-01, 1.591e-01, -1.313e-01), r);\n\tr = MulAdd(s3_6, M4(3.724e-02, -5.114e-02, -5.431e-02, -1.917e-01, -9.272e-03, 1.720e-02, -1.993e-03, -2.050e-02, -5.101e-02, -2.640e-02, 1.151e-01, -9.473e-02, -2.140e-02, -1.962e-02, 8.209e-02, 9.717e-03), r);\n\tr = MulAdd(s3_7, M4(1.382e-01, 1.193e-01, 1.643e-01, -2.855e-03, -2.987e-02, 2.089e-02, 3.535e-02, -6.606e-02, 1.455e-01, -6.018e-02, -8.022e-02, -6.451e-02, -4.068e-02, 1.163e-02, 2.179e-02, -1.519e-01), r);\n\tr = MulAdd(s3_8, M4(1.612e-02, 1.713e-02, -2.903e-02, -4.417e-02, -2.605e-03, 1.627e-02, 7.745e-03, -3.383e-02, 3.019e-02, 4.177e-02, -6.136e-02, 1.523e-02, -1.122e-02, -1.083e-02, 7.795e-03, -1.774e-02), r);\n\tr = MulAdd(s4_0, M4(8.440e-02, 3.624e-02, -1.217e-01, 2.625e-02, -3.526e-02, 7.012e-04, 1.416e-02, -2.009e-02, -5.261e-03, -3.329e-02, -6.662e-02, 4.990e-03, 6.008e-03, 2.910e-02, 2.946e-03, -5.679e-03), r);\n\tr = MulAdd(s4_1, M4(5.815e-02, 3.498e-02, -1.135e-01, 3.051e-02, 2.724e-02, 1.011e-02, -2.088e-02, -5.432e-02, 7.455e-02, 6.235e-02, 1.335e-02, 1.592e-02, 2.837e-02, 5.222e-02, 1.051e-01, -1.813e-02), r);\n\tr = MulAdd(s4_2, M4(-1.242e-02, -2.914e-02, -5.577e-02, 1.029e-02, 8.890e-02, 3.141e-02, -1.405e-01, -1.767e-02, 4.576e-02, -1.134e-03, -1.963e-02, 2.131e-02, 1.237e-03, -2.035e-03, 2.491e-02, 1.586e-02), r);\n\tr = MulAdd(s4_3, M4(2.664e-02, 2.865e-02, 3.135e-02, 7.597e-02, 3.308e-03, -2.546e-02, 1.542e-02, -1.449e-02, -5.470e-02, 4.758e-02, -4.097e-02, -2.444e-02, -2.671e-02, -5.544e-03, -1.826e-02, -2.656e-02), r);\n\tr = MulAdd(s4_4, M4(7.071e-02, 4.333e-02, -1.212e-01, 2.524e-02, 8.774e-02, 3.782e-02, -3.828e-02, 1.047e-02, 3.099e-01, -2.004e-02, -1.837e-02, 7.248e-02, 4.387e-02, -2.911e-02, -1.842e-01, 5.597e-02), r);\n\tr = MulAdd(s4_5, M4(8.675e-02, 5.429e-02, -5.555e-02, 3.116e-02, -6.069e-02, 4.293e-02, -6.205e-02, 1.071e-02, 4.696e-03, 1.079e-02, -3.297e-02, 8.385e-02, 3.056e-02, 3.710e-02, -6.256e-02, -3.502e-02), r);\n\tr = MulAdd(s4_6, M4(4.186e-02, 2.620e-02, -3.803e-02, -6.781e-03, 2.082e-02, -7.440e-03, -5.115e-02, -4.232e-02, -8.180e-02, -5.506e-02, 1.055e-02, 2.653e-02, -3.003e-02, -2.209e-02, -2.385e-02, -1.866e-02), r);\n\tr = MulAdd(s4_7, M4(3.895e-02, -4.673e-02, -1.101e-01, 5.077e-02, 1.139e-02, 1.015e-02, -1.229e-01, -6.620e-04, -2.862e-02, -3.238e-02, -2.642e-01, 2.743e-01, -5.964e-02, 9.554e-03, 1.107e-01, -7.634e-03), r);\n\tr = MulAdd(s4_8, M4(9.934e-03, 2.443e-02, -5.030e-02, 4.130e-03, -4.526e-02, -3.115e-02, 2.712e-02, -8.973e-03, -7.820e-02, 1.154e-01, 1.035e-01, -1.474e-01, -6.242e-02, 4.415e-02, 2.875e-02, 8.636e-02), r);\n\tr = MulAdd(s5_0, M4(-4.351e-03, 4.779e-02, -6.555e-02, 4.382e-02, 2.463e-02, 2.040e-02, -5.210e-02, 1.533e-02, 1.934e-02, 7.709e-03, -8.085e-03, 1.167e-03, -4.305e-03, 1.138e-02, 5.643e-02, 5.774e-03), r);\n\tr = MulAdd(s5_1, M4(-5.602e-02, 1.029e-01, 1.462e-02, 1.601e-02, -1.568e-01, -4.966e-02, -7.733e-02, -4.236e-02, 9.258e-03, 7.679e-03, 7.429e-02, 2.600e-02, 4.029e-03, 2.422e-02, 5.462e-02, -2.416e-02), r);\n\tr = MulAdd(s5_2, M4(3.105e-02, 6.461e-02, 7.153e-02, 5.897e-02, -4.944e-02, 3.584e-02, 1.480e-02, -1.872e-02, 1.280e-02, -5.895e-02, -2.277e-02, -1.193e-02, -5.982e-02, -1.221e-01, -1.579e-02, -5.938e-02), r);\n\tr = MulAdd(s5_3, M4(1.689e-01, 2.597e-02, -1.514e-01, 9.314e-02, -1.821e-02, 6.212e-02, 2.740e-02, -3.503e-02, 1.068e-01, 6.841e-02, -1.032e-01, 4.724e-02, -3.427e-02, 1.266e-02, -1.638e-02, -3.180e-02), r);\n\tr = MulAdd(s5_4, M4(-1.264e-01, -7.195e-02, -1.812e-01, -7.201e-02, 1.049e-02, 1.705e-01, 6.078e-01, -6.711e-02, 1.288e-01, -8.016e-02, -6.572e-02, -2.269e-02, -5.248e-02, -9.859e-02, -5.316e-02, -4.961e-03), r);\n\tr = MulAdd(s5_5, M4(-1.837e-02, 7.451e-02, 1.610e-01, 1.456e-01, 2.369e-02, -3.822e-02, 7.146e-02, -2.847e-02, 7.272e-02, 6.773e-02, -2.711e-02, 7.843e-03, 3.587e-02, 1.023e-01, 1.026e-01, -1.263e-01), r);\n\tr = MulAdd(s5_6, M4(6.148e-02, 1.107e-01, 3.425e-02, 1.865e-02, 2.918e-02, 1.356e-02, -4.471e-02, 3.983e-02, 5.005e-02, -1.763e-03, -9.191e-02, 7.853e-04, 2.529e-02, -1.449e-03, -2.292e-02, -5.890e-02), r);\n\tr = MulAdd(s5_7, M4(1.625e-01, -9.214e-02, -1.719e-01, 1.213e-01, 1.133e-01, -2.186e-02, -5.343e-02, 2.231e-02, -9.590e-02, -8.760e-03, -1.772e-02, 2.935e-02, 6.195e-02, 4.969e-02, -2.584e-03, 6.213e-02), r);\n\tr = MulAdd(s5_8, M4(1.340e-02, 4.829e-02, -9.137e-02, 2.154e-01, -4.813e-02, 6.001e-02, -3.136e-02, -1.011e-01, 1.685e-02, -4.554e-02, 9.511e-02, -1.590e-02, -1.125e-01, 4.501e-02, -3.054e-02, 2.447e-01), r);\n\tr = MulAdd(s6_0, M4(-1.053e-01, -8.765e-02, 1.532e-01, -4.659e-02, -2.224e-02, -3.997e-02, 3.599e-02, 1.014e-02, -1.010e-01, 5.718e-02, -1.816e-02, -4.517e-02, 1.942e-02, -2.291e-03, 2.359e-02, 7.930e-03), r);\n\tr = MulAdd(s6_1, M4(-2.403e-01, -9.120e-02, 4.618e-02, 3.295e-02, 8.804e-02, 9.860e-02, -3.428e-02, -2.947e-02, -2.438e-01, -4.033e-01, -1.964e-01, -2.377e-02, -9.690e-03, 7.185e-02, -4.311e-02, 2.419e-03), r);\n\tr = MulAdd(s6_2, M4(-7.526e-02, -5.431e-02, 1.785e-02, -5.604e-02, -8.780e-03, 2.806e-02, -3.138e-02, -2.028e-02, 4.689e-02, -1.410e-01, 6.928e-03, 4.146e-02, 4.977e-02, -6.971e-02, -3.579e-02, 5.402e-03), r);\n\tr = MulAdd(s6_3, M4(-8.901e-02, -5.394e-02, 8.191e-02, -5.543e-03, 2.675e-02, -2.194e-03, -2.872e-02, -1.765e-02, 1.043e-02, -8.325e-02, 8.178e-02, 2.385e-02, -1.619e-02, 9.743e-03, -2.077e-04, -2.131e-02), r);\n\tr = MulAdd(s6_4, M4(1.222e-01, -2.013e-01, 2.624e-01, -1.382e-01, 5.505e-02, 2.544e-02, -3.265e-02, 6.327e-02, -2.611e-02, 1.162e-01, 1.180e-01, 1.988e-01, -6.963e-02, 3.909e-02, 6.545e-03, 1.319e-01), r);\n\tr = MulAdd(s6_5, M4(-9.865e-02, -9.627e-02, 9.023e-02, 7.924e-02, -3.129e-02, -4.344e-02, -3.674e-02, -1.218e-02, -1.191e-02, -2.820e-01, 3.967e-02, -3.797e-02, 5.883e-02, 6.910e-02, -6.787e-02, -3.560e-02), r);\n\tr = MulAdd(s6_6, M4(-1.153e-01, -1.903e-02, 1.505e-01, -6.835e-02, -1.764e-02, 9.724e-03, 3.525e-02, -3.964e-02, -1.022e-04, 6.910e-03, 2.362e-02, -3.179e-02, 7.999e-02, 3.299e-02, -5.418e-02, 8.698e-02), r);\n\tr = MulAdd(s6_7, M4(-5.041e-02, 4.131e-05, 2.529e-02, 1.773e-01, -1.839e-02, 1.195e-02, 7.255e-02, 5.290e-02, 9.252e-02, -8.837e-03, -2.834e-02, 6.677e-03, 9.508e-02, -7.959e-02, -8.882e-02, -1.404e-01), r);\n\tr = MulAdd(s6_8, M4(-4.957e-02, -9.978e-02, 4.352e-02, -1.570e-01, 5.283e-03, -2.421e-02, -4.951e-02, -2.035e-02, 5.054e-02, 1.961e-02, -4.213e-02, -9.692e-02, 2.936e-02, -4.935e-02, 1.523e-02, 4.361e-02), r);\n\tr = MulAdd(s7_0, M4(4.602e-02, -1.675e-02, -1.591e-02, -1.113e-02, -7.082e-02, -3.239e-02, -3.778e-02, 4.838e-03, 7.734e-03, 5.217e-03, -3.286e-02, -1.355e-02, 4.276e-02, 3.737e-03, 1.126e-02, -1.884e-02), r);\n\tr = MulAdd(s7_1, M4(3.971e-02, 4.977e-02, -7.690e-02, -1.284e-02, 1.546e-01, 1.142e-01, -5.093e-02, -9.530e-03, 2.584e-02, 2.739e-02, 1.305e-01, 8.483e-03, -4.204e-02, 2.041e-02, 2.619e-02, 2.992e-02), r);\n\tr = MulAdd(s7_2, M4(-3.270e-02, -3.031e-02, 3.564e-02, -8.750e-04, -2.558e-02, -4.335e-02, -1.101e-01, 2.464e-02, 8.774e-02, 2.588e-02, -2.431e-02, 1.396e-02, 2.774e-02, 7.791e-03, -1.916e-02, -2.248e-02), r);\n\tr = MulAdd(s7_3, M4(-3.812e-02, 3.894e-02, -5.644e-02, -5.112e-02, 9.874e-02, 7.690e-02, -1.340e-01, -8.417e-03, 1.940e-02, -1.649e-02, 7.603e-03, 2.279e-02, -3.198e-02, 1.643e-02, 2.743e-02, 4.726e-02), r);\n\tr = MulAdd(s7_4, M4(-1.155e-02, 4.982e-03, 1.675e-01, 1.221e-01, 2.341e-01, -1.924e-01, 5.387e-02, -3.978e-02, 4.156e-02, -2.215e-02, -5.457e-02, 2.207e-01, -7.213e-02, 3.254e-01, 4.576e-02, 7.598e-02), r);\n\tr = MulAdd(s7_5, M4(3.181e-02, 6.784e-02, -9.888e-02, -5.729e-02, 1.654e-02, 1.320e-01, -1.027e-01, 6.525e-03, -5.506e-02, -7.947e-02, 6.971e-04, 1.817e-02, 1.188e-02, -2.524e-04, 3.319e-02, -4.904e-02), r);\n\tr = MulAdd(s7_6, M4(1.565e-02, -2.185e-02, -1.770e-02, 1.763e-02, 3.587e-02, -5.422e-02, -4.322e-02, -4.995e-02, -6.359e-03, 9.156e-03, 6.813e-02, 1.967e-02, -4.337e-02, -5.229e-02, 9.372e-02, 5.021e-02), r);\n\tr = MulAdd(s7_7, M4(-3.703e-03, -1.231e-03, 6.089e-02, -3.712e-02, -7.186e-02, 2.285e-02, 2.142e-02, -2.935e-02, 3.421e-02, 4.537e-02, -1.223e-01, -2.549e-02, -6.228e-04, 7.104e-02, -1.317e-02, 8.456e-02), r);\n\tr = MulAdd(s7_8, M4(-1.091e-02, -2.291e-02, -3.018e-02, 6.189e-02, -2.207e-02, 1.936e-02, 4.075e-02, -2.174e-02, -8.365e-03, 1.849e-02, -3.259e-03, 1.701e-02, 1.962e-02, -2.471e-02, 4.502e-02, -5.257e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.282e-03, 2.426e-03, 3.717e-03, 9.910e-04 };\n\tr = MulAdd(s0_0, M4(-6.769e-02, 3.430e-02, 2.986e-02, 7.093e-03, -3.817e-02, -3.516e-02, 2.524e-03, 1.512e-02, -5.755e-02, -1.135e-02, 2.727e-02, -1.513e-02, -4.468e-02, 7.272e-02, -3.816e-03, 6.695e-02), r);\n\tr = MulAdd(s0_1, M4(1.413e-01, -7.748e-02, -2.507e-02, 3.006e-02, -4.637e-02, 1.332e-02, 8.965e-03, 2.699e-02, 1.203e-01, 9.388e-02, 1.500e-01, 1.828e-02, 6.282e-02, -3.408e-02, 4.916e-02, -2.253e-03), r);\n\tr = MulAdd(s0_2, M4(-8.667e-02, 7.218e-02, 2.209e-02, -2.577e-02, 3.357e-02, 3.247e-02, -4.440e-02, -2.082e-02, -4.160e-02, 2.560e-02, 3.797e-02, 6.389e-03, -2.219e-02, 4.342e-02, 3.651e-02, 9.668e-03), r);\n\tr = MulAdd(s0_3, M4(-1.324e-02, 4.538e-02, -3.497e-02, -4.271e-02, 1.946e-02, -1.026e-02, -2.813e-02, 1.558e-02, -4.352e-02, -8.227e-02, 4.169e-02, 4.614e-03, -3.101e-02, -1.294e-02, 7.845e-02, 8.703e-02), r);\n\tr = MulAdd(s0_4, M4(-1.333e-01, 1.681e-02, -3.979e-01, 1.636e-01, -2.077e-02, 9.604e-02, -1.053e-02, 1.743e-01, -7.553e-03, 3.166e-01, 4.240e-01, -7.433e-02, -1.270e-03, 3.921e-02, -9.935e-02, 5.428e-02), r);\n\tr = MulAdd(s0_5, M4(8.747e-03, 1.770e-01, -3.575e-01, -1.804e-02, 2.260e-02, -3.461e-02, 3.119e-03, -4.722e-02, -5.255e-02, 2.294e-03, 3.706e-02, 3.062e-02, 1.580e-03, -2.325e-02, -6.594e-02, -8.279e-04), r);\n\tr = MulAdd(s0_6, M4(4.588e-02, 1.887e-02, 8.961e-02, 1.174e-02, 3.929e-02, -2.709e-02, 1.732e-02, -3.915e-02, -2.924e-02, -4.258e-03, -1.060e-02, 4.145e-02, 4.382e-02, 2.807e-02, -2.511e-02, -4.608e-02), r);\n\tr = MulAdd(s0_7, M4(-3.458e-02, 8.814e-02, -9.911e-02, -9.226e-02, -1.297e-02, -5.636e-02, -3.204e-04, 1.668e-01, 2.376e-03, -1.050e-02, -4.832e-02, -9.028e-02, 1.056e-02, -5.040e-03, 6.895e-02, 1.722e-02), r);\n\tr = MulAdd(s0_8, M4(1.385e-02, -1.727e-02, 3.000e-02, -2.268e-02, -7.698e-03, 4.236e-02, 1.831e-02, -2.752e-02, -1.781e-02, 1.875e-02, 6.718e-02, 4.487e-02, 8.638e-03, -4.369e-03, 2.690e-02, 1.162e-02), r);\n\tr = MulAdd(s1_0, M4(9.663e-04, 6.421e-02, 2.348e-03, 3.662e-02, -6.243e-02, -4.922e-03, -1.718e-02, 1.109e-02, 3.626e-02, 6.479e-02, 1.096e-02, 5.092e-02, 2.318e-01, -8.631e-03, -1.290e-01, 1.068e-01), r);\n\tr = MulAdd(s1_1, M4(1.098e-01, 3.674e-02, -3.759e-02, 9.372e-03, -1.836e-02, -8.044e-02, -1.933e-02, -1.283e-03, 2.495e-01, -7.519e-03, 1.665e-01, -6.518e-02, 6.714e-02, -7.408e-02, 8.451e-02, -4.340e-03), r);\n\tr = MulAdd(s1_2, M4(-1.593e-02, -8.483e-02, 6.648e-02, -4.250e-03, 3.890e-02, 5.946e-02, -2.123e-02, 5.192e-04, -3.893e-02, 2.275e-03, 3.886e-02, 2.058e-02, 7.988e-03, 3.680e-02, -7.176e-03, 3.505e-03), r);\n\tr = MulAdd(s1_3, M4(3.470e-02, -1.060e-02, 9.678e-02, 5.614e-02, 6.471e-02, 1.664e-02, -6.896e-02, -1.872e-01, 4.002e-03, -5.795e-02, -2.086e-02, -1.295e-01, 3.125e-01, 3.731e-02, 2.252e-01, 1.431e-03), r);\n\tr = MulAdd(s1_4, M4(-3.841e-02, -7.289e-02, -1.620e-01, -3.709e-03, 2.840e-02, -9.839e-02, -2.641e-01, 9.547e-02, 4.226e-02, -1.201e-01, -1.102e-01, -1.398e-01, 1.233e-01, 9.042e-02, 1.528e-01, -1.018e-01), r);\n\tr = MulAdd(s1_5, M4(2.895e-02, 3.205e-02, -9.373e-02, 2.594e-02, -1.824e-02, 9.412e-02, -1.096e-01, -4.941e-02, -4.628e-02, 3.342e-02, 3.307e-02, 2.623e-02, -3.789e-02, -8.026e-02, 7.834e-02, 1.145e-02), r);\n\tr = MulAdd(s1_6, M4(1.077e-02, 6.507e-02, 9.357e-02, 5.691e-03, 2.728e-02, 1.283e-02, 2.645e-02, -2.391e-02, -1.328e-02, 1.523e-02, 1.871e-02, -4.346e-04, 2.688e-02, -1.068e-02, 3.216e-02, -8.827e-02), r);\n\tr = MulAdd(s1_7, M4(4.487e-02, -4.437e-02, -2.437e-02, 5.312e-03, 1.198e-02, 3.746e-02, 2.767e-02, -6.274e-02, 4.431e-02, -3.679e-02, -1.600e-02, -3.319e-02, -7.497e-03, -9.400e-02, -5.401e-02, -5.201e-03), r);\n\tr = MulAdd(s1_8, M4(4.668e-03, -3.940e-02, 4.642e-02, -1.533e-03, 7.793e-04, -9.078e-02, -2.667e-02, -1.779e-02, -8.360e-03, 3.010e-03, 3.381e-02, 3.870e-02, -6.294e-03, 1.986e-02, -1.353e-03, 1.982e-02), r);\n\tr = MulAdd(s2_0, M4(-1.493e-02, 3.922e-02, -1.123e-02, 3.228e-02, 3.481e-02, -8.864e-02, -3.402e-02, -2.980e-02, -1.228e-03, -1.155e-02, -5.129e-03, -6.118e-04, -6.707e-03, 1.068e-01, 1.294e-01, 9.454e-02), r);\n\tr = MulAdd(s2_1, M4(6.473e-02, 1.190e-02, 9.143e-03, -1.535e-02, -2.666e-01, 2.390e-02, -4.825e-02, -1.338e-02, 2.362e-02, -4.216e-02, 2.073e-03, 1.623e-02, 3.649e-02, -5.048e-02, 1.218e-01, -1.258e-01), r);\n\tr = MulAdd(s2_2, M4(-1.461e-02, -2.262e-02, 1.377e-02, 8.270e-03, -1.703e-02, -3.705e-02, 3.457e-03, 7.981e-03, 9.442e-03, -3.095e-02, 1.217e-02, 1.122e-02, -6.379e-02, 5.288e-02, -4.319e-02, -1.166e-02), r);\n\tr = MulAdd(s2_3, M4(6.899e-02, 8.014e-02, 1.904e-02, 1.901e-01, -6.712e-02, 9.053e-02, 6.660e-02, -1.686e-01, 1.100e-01, 2.037e-02, 1.298e-02, 1.362e-01, -3.602e-02, -1.374e-01, -4.468e-02, -4.311e-02), r);\n\tr = MulAdd(s2_4, M4(-1.657e-01, -4.958e-02, 6.990e-02, -1.729e-01, 1.499e-01, 3.929e-02, 3.195e-01, -1.191e-01, 7.422e-02, -5.251e-04, 1.518e-01, -5.510e-03, 5.051e-02, 1.482e-01, -6.150e-02, -4.369e-02), r);\n\tr = MulAdd(s2_5, M4(-4.362e-03, -2.337e-02, -5.092e-02, 9.135e-03, -3.870e-02, 2.134e-02, 1.440e-02, 3.260e-03, -4.886e-02, -7.149e-02, -5.947e-03, 1.620e-02, 1.830e-02, -6.629e-02, 2.087e-02, 1.329e-02), r);\n\tr = MulAdd(s2_6, M4(2.216e-02, -4.352e-02, -2.959e-02, 4.755e-02, 2.413e-02, -2.525e-03, -4.118e-02, -7.323e-02, 8.579e-03, -3.825e-02, -6.078e-02, -9.820e-02, 7.013e-03, 1.992e-02, -6.306e-02, -2.990e-02), r);\n\tr = MulAdd(s2_7, M4(-1.876e-03, 1.483e-02, 8.292e-02, -7.048e-02, -5.165e-02, 1.388e-02, -2.538e-02, -4.672e-02, -1.392e-02, 6.786e-02, 1.279e-01, 5.121e-02, 6.889e-03, 3.214e-02, 3.471e-02, 5.284e-02), r);\n\tr = MulAdd(s2_8, M4(3.736e-03, -1.720e-02, 3.858e-02, 1.053e-02, 9.189e-03, -5.003e-03, -3.432e-02, 3.109e-02, 2.986e-02, -5.438e-04, -3.111e-02, 3.517e-02, 1.780e-02, -4.259e-04, -1.356e-03, -2.237e-02), r);\n\tr = MulAdd(s3_0, M4(-1.569e-02, -1.265e-02, -1.442e-02, 1.176e-02, 6.370e-02, 1.240e-02, 2.896e-03, 7.663e-02, 3.791e-02, -3.755e-02, -5.019e-02, -1.640e-02, -3.169e-02, 1.265e-01, -3.333e-02, 8.391e-02), r);\n\tr = MulAdd(s3_1, M4(2.693e-02, 9.806e-02, 8.333e-03, -4.201e-02, -2.995e-02, -2.224e-02, 3.885e-02, -3.163e-02, -7.559e-03, -7.851e-02, 5.818e-03, -2.593e-02, 2.332e-01, -2.682e-01, -3.702e-01, -7.207e-02), r);\n\tr = MulAdd(s3_2, M4(1.338e-02, -9.557e-03, 4.011e-02, 1.176e-02, -2.853e-02, 2.508e-02, 3.737e-02, 2.593e-03, -8.633e-03, -2.363e-02, 1.359e-02, 3.321e-03, -1.082e-02, 2.184e-02, -1.364e-01, -1.985e-02), r);\n\tr = MulAdd(s3_3, M4(7.322e-02, 6.110e-02, -6.938e-02, 1.362e-01, -2.306e-02, -1.182e-02, 4.187e-02, -9.458e-02, 4.396e-02, -3.955e-02, 2.733e-02, -4.115e-02, 4.264e-02, -1.599e-01, -2.753e-02, 6.181e-02), r);\n\tr = MulAdd(s3_4, M4(-1.348e-01, -4.207e-02, 2.851e-02, -1.848e-01, 5.648e-02, 7.481e-04, -7.185e-02, 8.991e-02, -2.557e-02, -1.986e-02, -5.941e-03, 1.308e-02, 4.504e-02, 4.393e-01, 3.722e-01, 7.878e-03), r);\n\tr = MulAdd(s3_5, M4(-3.470e-02, -1.129e-02, 3.449e-02, -2.631e-02, 3.715e-03, 3.386e-03, -5.315e-02, -6.027e-03, 1.135e-02, -7.620e-02, 2.472e-03, -1.909e-02, 6.653e-02, -9.478e-02, -1.071e-01, -2.663e-03), r);\n\tr = MulAdd(s3_6, M4(2.318e-04, -4.771e-02, -2.045e-02, -1.086e-02, 4.472e-03, -4.367e-02, -1.824e-02, -6.762e-02, 6.207e-02, -5.995e-02, -6.440e-02, -1.439e-01, 2.135e-02, -4.208e-02, -9.296e-02, -8.298e-02), r);\n\tr = MulAdd(s3_7, M4(2.881e-02, -1.097e-01, 1.400e-02, -1.062e-01, 1.823e-02, -7.184e-04, 6.146e-02, 3.571e-02, 1.869e-02, -1.228e-01, 3.933e-02, 1.774e-02, -7.991e-03, -6.415e-02, -7.725e-02, -5.734e-02), r);\n\tr = MulAdd(s3_8, M4(-1.673e-02, 6.017e-03, -1.099e-02, 9.427e-03, 7.090e-03, -1.586e-02, -8.811e-03, 7.162e-03, -1.503e-03, 1.245e-02, 8.584e-02, 2.865e-02, 1.389e-02, -3.085e-02, -6.177e-03, -2.121e-02), r);\n\tr = MulAdd(s4_0, M4(3.493e-03, -2.886e-03, 4.468e-03, -9.162e-03, -3.429e-02, 1.533e-02, -1.977e-02, 1.296e-02, -7.195e-02, -2.864e-02, 1.670e-02, 2.819e-03, 3.964e-02, 6.730e-03, 4.604e-03, -4.440e-03), r);\n\tr = MulAdd(s4_1, M4(7.038e-02, -5.105e-02, 3.612e-02, 1.737e-03, 8.003e-03, -3.328e-03, 6.301e-02, 8.136e-02, 5.501e-02, 2.321e-02, 3.147e-02, 4.815e-02, 6.608e-02, -2.219e-02, -2.320e-02, 5.550e-03), r);\n\tr = MulAdd(s4_2, M4(-5.361e-02, 6.124e-03, 6.197e-02, 1.861e-02, 5.837e-03, -2.258e-02, 2.421e-02, 2.352e-02, 9.489e-03, -2.379e-02, 2.291e-02, -9.015e-03, 1.667e-03, 5.427e-02, -5.367e-03, -1.688e-03), r);\n\tr = MulAdd(s4_3, M4(-2.280e-03, 2.210e-02, 6.070e-02, 6.741e-02, 3.232e-02, -3.528e-02, -3.783e-02, 7.012e-02, 9.307e-02, 2.999e-02, -3.325e-02, 2.233e-02, -7.461e-03, 3.415e-02, 2.672e-02, -7.837e-02), r);\n\tr = MulAdd(s4_4, M4(-8.615e-02, 1.665e-01, 2.015e-01, -1.366e-02, -2.904e-03, -9.961e-02, -1.997e-02, -2.561e-02, -8.201e-02, -2.483e-02, -2.690e-01, 4.378e-02, -6.957e-02, -7.747e-02, -5.177e-02, 1.053e-01), r);\n\tr = MulAdd(s4_5, M4(-3.442e-02, 2.996e-02, 1.743e-02, 1.939e-02, 2.183e-02, 1.201e-02, -3.384e-03, 4.529e-02, 3.883e-02, 1.622e-02, -1.191e-01, 2.433e-02, -3.534e-03, 1.045e-01, 4.727e-02, 3.186e-02), r);\n\tr = MulAdd(s4_6, M4(-3.222e-02, 7.750e-03, 1.940e-02, -9.354e-03, -2.196e-02, -1.724e-02, 3.045e-02, 5.532e-03, 6.117e-02, -7.738e-02, -9.238e-02, -6.940e-03, 2.963e-02, -3.707e-02, -2.099e-02, -5.924e-02), r);\n\tr = MulAdd(s4_7, M4(2.275e-02, -3.647e-02, 7.601e-04, 4.326e-02, 4.676e-02, -2.737e-02, 1.456e-03, 4.308e-02, 2.049e-02, 1.226e-01, -7.456e-02, 1.435e-01, -3.338e-02, 3.721e-02, 2.961e-02, 1.217e-01), r);\n\tr = MulAdd(s4_8, M4(-2.384e-02, 6.714e-02, 7.770e-02, 4.065e-02, 7.466e-03, 1.779e-02, -2.825e-02, -2.042e-02, -6.037e-03, -1.580e-02, -1.190e-01, -3.517e-02, 1.130e-02, 2.295e-02, -7.750e-02, -3.106e-02), r);\n\tr = MulAdd(s5_0, M4(-4.721e-02, -5.382e-02, 4.564e-02, -6.371e-02, -5.454e-02, -5.059e-02, 9.380e-03, -2.820e-03, 2.496e-02, 1.014e-02, -2.499e-02, -1.110e-02, -1.481e-02, 1.522e-02, -1.918e-02, 1.641e-02), r);\n\tr = MulAdd(s5_1, M4(-4.790e-01, 1.294e-01, 2.610e-01, -5.945e-02, -8.980e-02, 1.320e-02, -2.247e-02, -4.364e-02, 6.614e-02, 6.913e-02, -1.607e-02, 2.799e-02, -3.813e-02, 7.105e-02, 7.943e-02, 6.225e-02), r);\n\tr = MulAdd(s5_2, M4(-6.457e-02, 1.694e-01, -3.872e-02, 4.488e-02, -4.822e-02, -8.567e-02, 7.933e-02, 1.024e-02, 1.063e-03, -4.451e-02, -1.357e-02, 7.988e-03, 1.240e-02, 5.276e-02, 3.980e-02, 6.461e-02), r);\n\tr = MulAdd(s5_3, M4(-1.620e-01, 1.235e-01, 3.256e-02, 5.695e-02, 4.469e-02, -8.958e-02, 2.359e-03, -6.046e-02, 2.983e-02, -3.023e-03, 6.335e-02, 1.317e-02, 3.527e-02, -1.933e-02, -3.699e-02, 6.653e-02), r);\n\tr = MulAdd(s5_4, M4(1.232e-01, 4.089e-01, 1.239e-01, 1.234e-01, 1.253e-02, 3.016e-02, 5.864e-02, -1.790e-01, -8.816e-02, 3.547e-02, 1.620e-01, 6.102e-03, -5.373e-02, -1.860e-01, -1.284e-01, 6.518e-02), r);\n\tr = MulAdd(s5_5, M4(-4.312e-02, 2.143e-03, 1.073e-01, 5.873e-03, 2.948e-02, 3.319e-02, -7.224e-02, 1.756e-02, 6.773e-02, 2.521e-02, 1.380e-02, 4.037e-02, 3.288e-02, -1.908e-01, -1.050e-01, 3.035e-02), r);\n\tr = MulAdd(s5_6, M4(-5.461e-02, 9.170e-02, 6.992e-02, 9.781e-02, -9.620e-03, 2.436e-02, 4.409e-02, -9.482e-02, 1.359e-03, -2.669e-02, -1.697e-02, -3.783e-02, -2.329e-02, -1.386e-02, -1.895e-02, 1.972e-02), r);\n\tr = MulAdd(s5_7, M4(-4.409e-02, -2.055e-02, -1.209e-01, 5.981e-02, -4.746e-02, -9.839e-02, -8.667e-02, -3.684e-04, 3.992e-02, 4.212e-02, -2.215e-02, -2.174e-02, 1.628e-02, 2.727e-02, 1.283e-02, 1.170e-01), r);\n\tr = MulAdd(s5_8, M4(-3.285e-02, 1.315e-01, 5.991e-02, 3.093e-02, 1.831e-02, -2.701e-02, -9.941e-03, -1.247e-02, -1.884e-02, -3.038e-02, 1.778e-02, -1.534e-02, 8.890e-03, 5.855e-02, -5.228e-03, 7.156e-03), r);\n\tr = MulAdd(s6_0, M4(9.490e-02, -1.496e-02, -8.049e-02, -4.893e-02, -4.609e-02, 3.691e-02, 1.122e-02, 1.672e-02, 1.273e-01, 2.604e-02, -3.030e-02, 3.724e-02, -9.443e-03, 9.186e-03, -1.887e-02, 1.724e-02), r);\n\tr = MulAdd(s6_1, M4(3.599e-02, 1.217e-02, -5.710e-02, -3.505e-02, 2.689e-02, -1.739e-03, 8.030e-02, 1.825e-02, 1.923e-01, -1.211e-01, -1.559e-02, -1.202e-02, 4.499e-02, -2.829e-02, -1.283e-02, -2.598e-02), r);\n\tr = MulAdd(s6_2, M4(8.338e-02, -6.812e-02, -4.737e-02, -2.143e-02, -1.269e-02, -2.670e-03, -2.229e-02, 6.926e-04, 9.799e-03, -2.381e-02, -1.008e-02, 2.220e-02, -1.786e-02, -5.033e-02, 2.973e-02, -6.898e-03), r);\n\tr = MulAdd(s6_3, M4(1.293e-01, -1.263e-01, -1.300e-01, 3.399e-02, -3.571e-02, -3.489e-03, 4.969e-02, -6.396e-04, -1.049e-01, -6.914e-02, -6.059e-02, -3.406e-02, -4.433e-02, -3.107e-02, 1.599e-02, -9.359e-02), r);\n\tr = MulAdd(s6_4, M4(-1.572e-02, -4.111e-02, 1.207e-01, -2.561e-01, 8.708e-02, 5.039e-02, 5.332e-02, -7.156e-02, 1.751e-01, -9.601e-02, 8.257e-03, -2.388e-01, -1.028e-02, 5.476e-03, -1.537e-01, 4.572e-02), r);\n\tr = MulAdd(s6_5, M4(5.549e-02, -1.367e-02, -6.034e-02, 2.235e-02, -2.252e-02, -5.300e-02, 4.816e-02, 2.981e-02, -1.995e-02, -1.877e-02, -1.219e-01, 1.896e-02, 7.559e-02, -1.734e-02, 1.740e-02, -9.721e-03), r);\n\tr = MulAdd(s6_6, M4(5.600e-03, -4.349e-02, -3.722e-03, -1.021e-02, -4.450e-03, -1.587e-02, -3.889e-02, -3.046e-02, -2.679e-02, 1.161e-02, -1.043e-02, -2.748e-02, -1.829e-02, 5.464e-02, 6.469e-02, 9.752e-03), r);\n\tr = MulAdd(s6_7, M4(8.553e-02, 1.512e-02, -1.313e-01, -1.637e-01, 8.015e-03, 2.808e-02, 7.920e-02, -1.984e-02, 1.717e-02, -6.763e-02, -8.202e-02, -3.641e-02, 5.455e-02, -8.316e-02, -1.613e-01, -8.608e-03), r);\n\tr = MulAdd(s6_8, M4(2.581e-02, -9.600e-02, -3.212e-02, 4.638e-03, 1.617e-02, 3.466e-03, -2.201e-02, 1.713e-02, 2.723e-03, -6.574e-03, 3.141e-02, 2.810e-02, -5.310e-02, 1.756e-02, 1.155e-01, -9.499e-03), r);\n\tr = MulAdd(s7_0, M4(-5.505e-02, -2.272e-02, -2.377e-03, 1.201e-02, -1.914e-01, 1.033e-02, 9.063e-02, -2.243e-02, -7.919e-02, 4.620e-02, 6.766e-02, -7.420e-02, 1.656e-03, -3.636e-02, -3.654e-02, -1.298e-03), r);\n\tr = MulAdd(s7_1, M4(2.952e-02, -2.152e-02, -1.487e-02, -2.337e-02, 2.447e-02, -4.213e-02, 1.234e-01, 5.147e-03, 2.335e-01, -1.621e-01, -1.609e-01, -5.706e-02, -7.251e-02, 3.109e-02, 1.041e-02, -2.281e-02), r);\n\tr = MulAdd(s7_2, M4(-1.849e-02, 2.297e-02, 2.471e-02, 4.394e-03, -7.618e-02, 2.530e-02, 1.500e-02, 5.996e-03, -5.243e-02, -6.869e-03, 2.549e-02, 6.482e-03, -2.084e-03, -2.925e-02, 1.508e-03, -1.377e-02), r);\n\tr = MulAdd(s7_3, M4(2.360e-02, -2.729e-02, -3.317e-03, -1.427e-02, 2.136e-01, 8.746e-02, 6.818e-02, -6.063e-02, -4.529e-02, 2.893e-02, -8.883e-03, -2.803e-02, 5.528e-02, 3.423e-02, -1.193e-02, -1.598e-01), r);\n\tr = MulAdd(s7_4, M4(-4.718e-02, 1.455e-01, 6.738e-02, 7.756e-02, -1.693e-01, -1.121e-01, -4.263e-01, 6.029e-02, 2.845e-02, -1.797e-02, -7.025e-02, -1.174e-01, -2.348e-01, -1.115e-02, -1.892e-02, -1.518e-02), r);\n\tr = MulAdd(s7_5, M4(2.243e-02, -7.424e-02, -3.931e-02, -2.403e-02, 6.038e-02, 1.797e-02, -1.744e-01, 1.963e-02, -4.382e-02, 9.405e-02, 1.894e-02, 5.672e-02, 1.975e-02, 7.642e-02, 2.796e-02, -8.300e-03), r);\n\tr = MulAdd(s7_6, M4(-9.019e-03, 9.798e-03, -4.330e-03, -1.891e-02, 1.371e-02, -6.128e-02, -3.102e-02, -1.832e-03, -5.050e-02, -1.091e-02, 1.292e-02, 1.969e-02, -1.757e-02, -6.372e-02, -3.461e-02, 2.646e-02), r);\n\tr = MulAdd(s7_7, M4(4.840e-03, -1.643e-02, -1.586e-02, 1.015e-02, 1.271e-02, 1.577e-02, 6.421e-02, -5.505e-02, 2.839e-02, 3.304e-02, 1.282e-02, -3.135e-02, 9.328e-03, -3.226e-02, -1.949e-01, 6.956e-02), r);\n\tr = MulAdd(s7_8, M4(-6.982e-03, 1.910e-02, 1.303e-02, 1.504e-03, 1.284e-02, -1.884e-02, 9.418e-02, 4.628e-02, -1.214e-02, 2.500e-02, 6.745e-02, 4.770e-02, -1.645e-02, 2.692e-02, 3.056e-02, -7.823e-03), r);\n\treturn r;\n}\n\nvoid Pass17(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 18\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0, t1, t2, t3\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -9.892e-05, -2.795e-04, -8.146e-04, -3.370e-04 };\n\tr = MulAdd(s0_0, M4(6.390e-02, 2.774e-02, -1.825e-02, -3.381e-02, 5.142e-03, 1.910e-02, -1.152e-02, -1.715e-02, 4.162e-02, -2.385e-02, -1.464e-02, 2.865e-02, 7.757e-02, -3.907e-02, -1.001e-02, 3.856e-02), r);\n\tr = MulAdd(s0_1, M4(1.028e-02, 1.211e-02, 1.998e-02, 2.118e-02, 4.222e-02, -2.634e-02, -2.654e-02, 1.277e-02, 2.783e-03, -3.517e-03, 9.475e-03, -5.885e-02, 6.169e-02, 2.678e-02, 7.086e-03, -6.372e-02), r);\n\tr = MulAdd(s0_2, M4(-6.586e-03, 3.657e-02, 2.724e-03, 4.726e-04, 5.419e-03, 3.249e-02, 5.477e-03, -3.069e-02, -1.690e-02, 5.874e-03, 1.759e-03, -2.633e-03, -1.629e-02, 5.009e-02, 5.186e-04, 1.089e-02), r);\n\tr = MulAdd(s0_3, M4(-1.309e-01, 6.016e-02, -2.002e-01, 7.875e-02, -3.259e-02, 8.804e-03, -7.355e-04, 3.578e-02, -3.214e-02, 3.275e-03, 2.240e-02, -3.278e-02, 9.548e-02, 3.186e-02, 7.834e-02, -1.996e-02), r);\n\tr = MulAdd(s0_4, M4(1.598e-01, -5.578e-01, 5.417e-02, -2.931e-02, -1.627e-01, -5.194e-02, 1.829e-01, -1.190e-02, 2.025e-01, -4.635e-03, -3.636e-02, 4.761e-02, -3.775e-01, 3.522e-01, 7.375e-02, 1.011e-01), r);\n\tr = MulAdd(s0_5, M4(-4.034e-03, 3.094e-02, -1.570e-02, 5.374e-03, 3.153e-03, 3.226e-02, 1.686e-02, 1.480e-01, -8.735e-03, 8.374e-02, 2.216e-02, 7.613e-02, 1.636e-02, -8.414e-02, 2.502e-02, -5.713e-02), r);\n\tr = MulAdd(s0_6, M4(5.457e-02, -9.016e-03, 1.209e-01, -1.264e-02, 1.254e-02, 1.198e-02, 3.556e-02, -9.702e-03, -3.455e-02, -8.410e-03, -7.007e-02, -4.583e-03, 3.383e-05, -3.308e-02, -2.099e-02, 2.184e-02), r);\n\tr = MulAdd(s0_7, M4(-5.539e-02, 9.357e-02, -1.596e-01, 4.695e-03, 7.270e-02, -9.424e-03, -1.462e-01, 5.083e-03, -9.984e-02, -2.601e-02, 4.360e-02, -8.520e-02, 3.265e-02, -7.759e-02, -1.672e-01, -2.050e-01), r);\n\tr = MulAdd(s0_8, M4(-2.128e-02, 3.748e-02, 1.617e-03, 4.106e-02, 8.666e-03, -6.636e-03, -4.336e-03, -8.958e-02, 5.448e-03, -8.355e-03, -5.292e-04, 2.481e-02, -5.910e-02, 3.845e-03, 2.578e-02, 8.474e-03), r);\n\tr = MulAdd(s1_0, M4(4.021e-02, 2.152e-02, -1.957e-02, -1.908e-02, 9.527e-03, 1.594e-02, 3.373e-04, -1.741e-02, 5.456e-02, -1.393e-02, -1.739e-02, 3.796e-02, 8.570e-02, -4.315e-02, -1.061e-02, 3.398e-02), r);\n\tr = MulAdd(s1_1, M4(9.609e-03, -1.568e-02, 3.150e-02, 2.950e-02, 7.791e-03, -2.504e-02, -1.304e-02, -6.383e-04, 1.061e-01, -1.333e-01, 3.358e-02, -6.262e-02, 1.793e-02, 7.228e-02, 1.766e-02, -5.212e-02), r);\n\tr = MulAdd(s1_2, M4(-8.435e-05, 2.842e-02, -4.049e-04, 3.577e-03, -4.550e-03, 9.252e-02, 8.368e-03, -4.986e-02, -2.765e-02, 2.857e-02, -1.321e-02, 7.323e-03, -1.438e-02, 1.786e-02, -1.333e-03, 7.861e-03), r);\n\tr = MulAdd(s1_3, M4(-1.434e-01, 1.037e-02, -6.555e-02, 6.823e-02, -4.099e-02, 3.701e-03, -6.747e-03, 3.308e-02, -1.705e-02, 1.096e-02, 3.467e-02, -1.692e-02, 7.100e-02, 4.063e-02, 1.319e-01, -2.094e-02), r);\n\tr = MulAdd(s1_4, M4(-1.017e-01, -1.706e-01, 2.838e-02, -1.911e-01, -1.702e-01, 1.835e-02, 4.517e-02, 4.334e-02, 4.174e-01, -1.962e-01, 3.960e-01, -3.778e-01, -4.905e-02, 2.323e-02, -7.309e-02, 1.372e-01), r);\n\tr = MulAdd(s1_5, M4(2.471e-03, 2.260e-02, -1.895e-02, 1.619e-02, 9.813e-02, -6.199e-02, 2.035e-02, 2.360e-01, -2.213e-02, 4.914e-02, 4.391e-04, 9.992e-02, -7.150e-03, -8.029e-02, 4.005e-02, -2.034e-02), r);\n\tr = MulAdd(s1_6, M4(5.574e-02, -1.455e-03, 3.519e-02, -1.652e-02, 8.706e-03, 8.148e-03, 3.186e-02, -1.569e-02, -3.709e-02, -6.221e-03, -7.016e-02, 5.356e-04, -1.886e-03, -1.107e-02, -7.914e-02, 2.951e-02), r);\n\tr = MulAdd(s1_7, M4(2.909e-02, 9.775e-03, -5.673e-02, -5.728e-03, 6.949e-02, -8.710e-03, -1.373e-01, 2.303e-02, -8.227e-02, -3.188e-02, 5.025e-02, -1.153e-01, -1.050e-02, -7.427e-03, -7.233e-02, -1.673e-01), r);\n\tr = MulAdd(s1_8, M4(-7.709e-03, 3.031e-02, 4.567e-03, 1.352e-02, 5.188e-02, -2.272e-02, 8.991e-02, -1.821e-01, 8.971e-03, -5.960e-04, -1.277e-03, 7.427e-03, -6.498e-02, 1.294e-02, 1.555e-02, -1.687e-02), r);\n\tr = MulAdd(s2_0, M4(1.187e-02, -2.125e-02, -1.424e-02, 9.688e-03, 2.789e-02, 3.693e-03, 3.572e-03, -3.632e-02, -7.399e-02, 1.812e-02, -1.472e-03, -8.793e-03, 1.395e-02, -2.879e-03, 7.715e-03, 3.446e-03), r);\n\tr = MulAdd(s2_1, M4(4.279e-02, -8.375e-02, -6.323e-02, -2.238e-02, -2.822e-01, 7.203e-02, 5.882e-02, 1.752e-02, -5.393e-02, 1.155e-01, -4.163e-02, -5.853e-02, -3.211e-02, 1.291e-02, -4.688e-03, -9.039e-03), r);\n\tr = MulAdd(s2_2, M4(-7.677e-02, -2.722e-02, 1.059e-02, -4.523e-02, 3.556e-02, -5.189e-03, -9.061e-03, 1.751e-02, -2.031e-03, -9.133e-03, 3.850e-03, -1.774e-02, 4.552e-03, -9.488e-03, 3.512e-03, 4.578e-03), r);\n\tr = MulAdd(s2_3, M4(2.615e-02, -3.477e-03, -1.008e-02, -1.526e-02, -3.863e-02, -2.732e-03, 3.901e-03, 1.203e-02, -2.661e-01, -2.898e-02, -3.043e-01, 1.183e-02, -1.000e-02, 1.435e-02, -3.403e-02, -8.087e-03), r);\n\tr = MulAdd(s2_4, M4(-9.355e-02, 8.081e-02, 1.895e-02, -3.090e-03, 3.487e-01, 5.679e-02, -7.838e-02, 2.550e-01, 1.324e-02, 3.883e-01, -3.071e-02, 5.176e-01, 1.501e-01, -3.565e-02, -1.969e-02, -8.083e-03), r);\n\tr = MulAdd(s2_5, M4(4.897e-02, 4.358e-02, -2.250e-02, 3.900e-04, -6.904e-02, -1.540e-01, 2.712e-02, -3.057e-01, 2.473e-02, 1.154e-02, 2.076e-02, 4.656e-02, -5.647e-02, -3.986e-03, 9.239e-03, -2.458e-03), r);\n\tr = MulAdd(s2_6, M4(4.262e-03, -1.035e-04, 6.255e-03, 3.230e-03, -2.473e-03, 1.006e-02, 3.284e-02, -2.630e-02, -3.128e-02, -1.357e-03, -8.228e-02, -8.119e-03, -1.882e-01, 8.072e-03, 2.790e-01, -6.116e-02), r);\n\tr = MulAdd(s2_7, M4(9.436e-03, 1.770e-03, 9.203e-02, 1.249e-02, 2.308e-02, -2.907e-02, -2.786e-02, 4.915e-02, -1.968e-02, -3.430e-02, -1.912e-02, -3.145e-03, -3.159e-01, -4.435e-01, 2.317e-01, 6.173e-01), r);\n\tr = MulAdd(s2_8, M4(3.184e-02, -2.678e-03, -6.755e-03, 7.788e-02, -2.232e-02, -5.733e-03, -2.362e-02, 1.816e-02, 1.913e-03, -1.934e-03, -2.528e-03, -1.285e-02, -1.946e-02, -5.783e-02, -2.675e-02, -7.862e-02), r);\n\tr = MulAdd(s3_0, M4(1.347e-02, -6.464e-04, -1.733e-02, 2.701e-04, 1.661e-02, 2.890e-03, 7.689e-03, -1.548e-02, 3.021e-02, -6.908e-03, 5.846e-03, -1.131e-02, 1.495e-02, 2.671e-03, 7.160e-03, 4.655e-03), r);\n\tr = MulAdd(s3_1, M4(-2.134e-01, -2.300e-01, 2.629e-02, 2.755e-02, -8.032e-02, 1.235e-02, 1.920e-02, 5.557e-02, -4.051e-02, -1.978e-02, -4.303e-02, -5.506e-02, -2.838e-02, 1.676e-02, -4.412e-03, -1.334e-02), r);\n\tr = MulAdd(s3_2, M4(-5.847e-02, -1.401e-01, -5.565e-03, -1.700e-02, 2.641e-02, -8.521e-02, -1.057e-02, 3.629e-03, -3.943e-03, -3.006e-03, 4.014e-03, -1.514e-02, 1.348e-02, -3.349e-03, 2.767e-03, 4.664e-03), r);\n\tr = MulAdd(s3_3, M4(2.605e-02, 5.798e-03, -9.194e-03, -1.654e-02, -2.398e-02, 2.579e-03, 3.456e-02, 1.623e-02, -4.851e-02, -7.558e-02, -3.631e-02, -3.477e-02, 1.831e-02, -3.549e-05, -1.464e-02, 2.457e-03), r);\n\tr = MulAdd(s3_4, M4(-3.391e-01, -6.608e-02, 4.936e-01, 2.333e-01, 1.045e-01, 1.597e-01, 3.183e-02, 1.025e-01, 1.371e-01, 1.382e-01, 7.103e-02, 1.793e-01, 1.265e-01, -1.196e-02, 1.296e-02, 2.169e-02), r);\n\tr = MulAdd(s3_5, M4(5.367e-02, -2.184e-02, -2.914e-02, 2.076e-01, -4.832e-02, -8.489e-02, -3.349e-02, -8.611e-02, 6.975e-03, 2.881e-02, 9.430e-03, 5.570e-02, -5.738e-02, -1.056e-02, 8.026e-03, 1.479e-02), r);\n\tr = MulAdd(s3_6, M4(2.914e-03, -7.976e-03, -8.091e-03, 7.943e-03, -7.490e-03, 1.170e-02, 2.435e-02, -2.150e-02, -3.865e-02, 9.554e-03, -3.592e-02, -1.665e-02, 1.543e-02, -3.448e-03, 8.179e-02, -2.743e-02), r);\n\tr = MulAdd(s3_7, M4(2.977e-02, 2.276e-02, 6.616e-02, -1.629e-02, 4.146e-02, -3.141e-02, -4.259e-02, 6.178e-02, -2.579e-02, -3.562e-02, 4.975e-03, -4.307e-02, -7.259e-03, 5.942e-02, -7.202e-02, 1.352e-01), r);\n\tr = MulAdd(s3_8, M4(3.820e-02, 1.063e-02, -8.922e-03, 7.153e-02, -8.104e-03, -1.760e-02, 6.000e-03, -6.468e-02, 9.946e-05, 3.195e-04, -8.201e-03, -3.610e-03, -3.006e-02, -3.924e-02, -1.292e-02, -1.219e-01), r);\n\tr = MulAdd(s4_0, M4(-2.191e-02, 1.599e-02, 8.420e-03, -1.086e-02, 2.063e-02, -2.956e-02, -7.893e-03, 2.008e-02, -5.920e-02, 3.584e-02, -4.143e-03, -6.872e-03, 1.034e-01, -3.611e-02, -3.573e-02, -1.497e-02), r);\n\tr = MulAdd(s4_1, M4(1.523e-02, 2.486e-03, -4.195e-03, 2.462e-02, -3.835e-02, -2.553e-02, -1.036e-03, -2.996e-02, 1.417e-01, -1.515e-01, -4.471e-02, -3.221e-03, -6.459e-02, 1.255e-01, 2.417e-02, -6.074e-02), r);\n\tr = MulAdd(s4_2, M4(1.616e-02, 1.592e-03, -3.734e-04, 2.990e-03, -1.443e-02, 5.308e-03, -5.084e-03, -1.204e-02, -6.789e-03, 2.961e-02, -2.044e-04, -7.314e-03, 2.294e-03, -4.090e-02, -5.013e-03, 9.427e-03), r);\n\tr = MulAdd(s4_3, M4(3.806e-02, 5.284e-03, 2.402e-02, -8.429e-03, -1.201e-01, 6.213e-02, -4.133e-02, -1.134e-02, -1.802e-02, -3.513e-03, -7.280e-02, 2.804e-02, -4.772e-02, 9.656e-03, 3.899e-02, 2.222e-02), r);\n\tr = MulAdd(s4_4, M4(7.007e-02, 6.686e-02, 8.883e-02, 1.203e-01, -2.129e-02, -1.151e-01, -6.914e-02, -4.476e-02, 2.397e-01, -2.011e-01, 4.795e-01, -2.961e-01, 2.885e-02, 1.705e-02, -1.239e-02, 9.686e-02), r);\n\tr = MulAdd(s4_5, M4(3.543e-03, 3.091e-02, 6.047e-03, 8.998e-03, 2.942e-02, -1.122e-02, 2.545e-02, 3.955e-02, 6.927e-03, 1.410e-02, -3.543e-03, 8.472e-02, -5.371e-03, -3.867e-02, 3.605e-03, -6.078e-02), r);\n\tr = MulAdd(s4_6, M4(-1.860e-02, 7.303e-03, 1.120e-02, 2.374e-02, 3.594e-02, 2.375e-04, 1.775e-02, 1.066e-03, -1.177e-02, 1.460e-02, -4.779e-03, 1.629e-02, 1.071e-02, -4.558e-03, -5.317e-03, 2.159e-03), r);\n\tr = MulAdd(s4_7, M4(7.506e-03, -5.090e-02, -8.668e-02, -8.096e-02, 8.813e-02, -7.846e-03, -3.904e-02, 3.086e-03, -1.394e-02, -2.948e-02, -5.211e-02, -6.857e-02, 2.448e-02, -5.364e-03, 2.122e-02, 4.570e-03), r);\n\tr = MulAdd(s4_8, M4(-4.065e-02, 6.996e-03, -2.539e-03, -2.608e-02, -2.044e-02, 1.642e-02, -3.448e-03, -3.108e-02, -1.187e-02, 1.531e-02, -1.770e-03, -2.646e-02, 1.698e-03, 3.386e-03, -4.599e-04, 1.508e-02), r);\n\tr = MulAdd(s5_0, M4(-3.917e-02, 1.278e-02, 9.730e-03, -1.230e-02, 1.849e-02, -1.271e-02, -6.797e-03, 1.483e-02, -7.229e-02, 2.299e-02, 1.742e-03, -1.202e-02, -6.162e-02, -5.012e-02, -8.717e-02, 4.267e-02), r);\n\tr = MulAdd(s5_1, M4(6.843e-03, -1.568e-02, 1.219e-02, 3.503e-02, -4.625e-02, -1.223e-02, 7.350e-03, -3.099e-02, 3.045e-02, -1.862e-02, -4.702e-02, 5.099e-03, -2.587e-01, 5.690e-01, 1.235e-01, -2.007e-01), r);\n\tr = MulAdd(s5_2, M4(1.341e-03, -1.622e-02, 1.479e-03, 1.092e-02, -1.340e-02, -1.026e-04, -3.321e-03, -1.172e-02, 1.401e-03, 2.405e-02, 1.919e-03, -8.970e-03, 8.486e-03, -7.278e-02, -1.391e-03, 1.960e-02), r);\n\tr = MulAdd(s5_3, M4(4.673e-02, -1.780e-03, 3.273e-03, -9.909e-03, -5.724e-02, 8.129e-02, -8.664e-02, 5.244e-03, -1.026e-02, -1.886e-02, -9.682e-02, 1.553e-02, -6.835e-02, -1.168e-02, 2.514e-01, -7.690e-02), r);\n\tr = MulAdd(s5_4, M4(4.072e-01, 2.885e-01, -5.578e-02, -3.700e-03, 8.928e-02, -3.925e-01, -3.394e-02, 3.251e-02, 7.202e-02, -3.607e-02, 2.310e-01, -3.091e-02, 5.465e-02, -9.662e-03, -6.141e-02, 6.591e-02), r);\n\tr = MulAdd(s5_5, M4(-2.544e-02, 1.331e-01, 8.448e-03, -3.918e-02, 2.213e-02, 2.838e-02, 1.538e-02, 2.403e-02, 1.911e-02, 2.710e-02, 7.796e-03, 8.987e-02, -9.308e-03, -4.751e-02, 6.841e-03, -3.261e-02), r);\n\tr = MulAdd(s5_6, M4(-2.069e-02, -3.251e-03, -5.082e-03, 2.418e-02, 3.796e-02, -8.759e-03, 7.109e-02, -5.937e-03, -3.786e-03, 9.591e-03, 5.923e-03, 2.273e-03, 1.387e-02, -2.745e-04, 2.036e-04, -2.293e-04), r);\n\tr = MulAdd(s5_7, M4(6.661e-02, -1.094e-02, -2.950e-01, -2.125e-01, 1.325e-01, 5.139e-02, -2.472e-01, 1.490e-01, -1.114e-02, -2.533e-02, -7.544e-02, -4.432e-02, 2.411e-02, -3.858e-03, 1.384e-02, 1.214e-02), r);\n\tr = MulAdd(s5_8, M4(-3.374e-02, 2.999e-02, 2.523e-03, -1.093e-01, -3.038e-02, -1.977e-02, 1.127e-02, -1.055e-02, -1.511e-02, 9.979e-03, 6.345e-04, -2.642e-02, 4.375e-04, 3.018e-05, -5.478e-03, 4.899e-03), r);\n\tr = MulAdd(s6_0, M4(-2.830e-02, 9.871e-03, 6.143e-05, -6.840e-03, 5.058e-02, -6.543e-03, -3.699e-04, 1.024e-02, -2.405e-02, 3.026e-02, 1.567e-02, -2.056e-02, -1.371e-02, 4.031e-03, 1.189e-02, -1.115e-02), r);\n\tr = MulAdd(s6_1, M4(1.517e-02, -1.438e-02, -2.525e-02, -2.799e-04, 5.445e-02, -4.351e-02, 2.541e-02, 2.961e-02, 6.570e-03, 8.960e-02, -1.932e-02, -3.564e-03, -9.741e-02, 5.371e-02, -2.418e-03, 1.425e-02), r);\n\tr = MulAdd(s6_2, M4(1.501e-03, -2.929e-02, 8.791e-03, -1.576e-03, 3.412e-03, 3.486e-03, 5.511e-03, 1.206e-02, 2.178e-02, -9.940e-03, -8.442e-04, -6.434e-04, 3.137e-02, -1.667e-02, -3.983e-02, 1.849e-02), r);\n\tr = MulAdd(s6_3, M4(3.644e-02, -9.234e-03, 5.457e-02, -1.295e-02, 2.628e-02, -1.708e-02, 4.262e-02, 2.356e-02, -3.927e-02, 4.293e-03, 1.147e-02, 6.816e-03, 8.990e-03, -9.797e-03, -2.532e-02, 2.662e-02), r);\n\tr = MulAdd(s6_4, M4(-1.298e-01, -1.232e-02, 2.945e-02, 1.442e-01, -2.046e-01, 1.258e-01, 9.591e-03, 4.317e-02, 6.559e-02, -1.613e-01, 1.265e-01, 1.035e-01, 2.189e-02, 7.561e-03, -3.462e-02, -1.081e-02), r);\n\tr = MulAdd(s6_5, M4(1.315e-02, 3.954e-02, -2.993e-02, -3.069e-02, 7.408e-03, 4.444e-03, -2.900e-02, 1.511e-02, -2.136e-02, 4.019e-03, -9.298e-03, 2.916e-02, 6.284e-02, -1.254e-01, 1.126e-01, -8.404e-02), r);\n\tr = MulAdd(s6_6, M4(-3.935e-02, -1.433e-03, -5.533e-02, 1.111e-03, -2.772e-02, 2.248e-02, -3.252e-03, -3.881e-02, 2.206e-04, -1.418e-02, -4.193e-02, 8.625e-03, -1.006e-03, 2.233e-03, -1.287e-02, -4.024e-03), r);\n\tr = MulAdd(s6_7, M4(2.404e-01, -6.556e-02, -2.942e-01, -9.692e-02, 7.087e-02, -7.028e-02, -1.317e-01, -5.265e-02, -3.230e-02, 3.590e-02, -7.622e-02, -8.369e-02, 1.372e-02, -1.592e-02, -1.048e-02, -1.536e-02), r);\n\tr = MulAdd(s6_8, M4(6.781e-02, -7.009e-03, 2.860e-02, 2.274e-01, -9.817e-03, 1.673e-02, 1.795e-02, -4.467e-02, 2.646e-03, -1.109e-02, 2.573e-03, -3.715e-02, -5.283e-02, 4.464e-02, 1.801e-02, 1.569e-02), r);\n\tr = MulAdd(s7_0, M4(-2.424e-02, 1.016e-02, 3.816e-04, -8.696e-03, 8.698e-03, 2.044e-03, 1.042e-03, 1.691e-02, -2.034e-02, 3.552e-02, -5.592e-03, -2.426e-02, -4.224e-03, -3.754e-04, 1.771e-02, -1.581e-02), r);\n\tr = MulAdd(s7_1, M4(1.328e-02, -1.689e-02, -2.691e-02, -2.634e-03, 1.176e-01, -1.653e-02, 5.465e-03, -2.580e-03, 4.724e-02, 9.344e-02, -4.456e-02, -3.431e-02, -3.025e-01, 9.328e-02, -1.246e-02, 2.387e-02), r);\n\tr = MulAdd(s7_2, M4(-8.990e-04, -2.366e-02, 6.412e-03, -5.975e-03, -8.695e-03, 3.697e-03, 2.235e-02, 1.274e-02, 1.311e-02, 8.728e-03, -2.676e-04, -1.281e-02, 1.014e-02, 1.266e-01, -2.253e-02, 1.049e-02), r);\n\tr = MulAdd(s7_3, M4(4.771e-02, -9.977e-03, 4.476e-02, -1.020e-02, 2.030e-01, -7.533e-03, 4.306e-02, -2.822e-02, -2.046e-01, 4.606e-03, 1.528e-01, -3.807e-03, 2.697e-02, -1.144e-02, -1.123e-02, 1.569e-02), r);\n\tr = MulAdd(s7_4, M4(-8.972e-02, -1.116e-02, 1.027e-02, 1.296e-01, -9.394e-02, -2.126e-01, -1.783e-01, 3.546e-01, -9.159e-02, -4.756e-01, 2.339e-01, 3.902e-01, -1.207e-01, 7.496e-02, -3.850e-01, 9.175e-02), r);\n\tr = MulAdd(s7_5, M4(-5.036e-03, 7.069e-02, -2.437e-02, -1.670e-02, 4.290e-03, 4.675e-02, -2.716e-02, 1.163e-02, -2.350e-02, -4.682e-03, -5.020e-03, 1.407e-02, -2.286e-02, 1.490e-01, 2.616e-02, 3.160e-01), r);\n\tr = MulAdd(s7_6, M4(-3.243e-02, -3.122e-03, -5.286e-02, 7.820e-03, -2.416e-02, 4.868e-02, -1.168e-01, -1.736e-02, 1.028e-02, -1.177e-02, -1.715e-02, 3.846e-03, -2.036e-03, 2.827e-03, -1.091e-02, 1.062e-03), r);\n\tr = MulAdd(s7_7, M4(1.390e-02, -8.685e-03, -2.752e-02, -1.309e-01, 5.806e-02, -5.186e-02, -7.078e-02, -8.618e-02, -3.155e-02, 4.158e-02, -8.837e-02, -4.630e-02, 1.249e-02, -4.217e-02, -8.350e-03, -2.970e-02), r);\n\tr = MulAdd(s7_8, M4(1.165e-01, 1.334e-02, 1.667e-02, 9.542e-02, -1.276e-02, 1.212e-02, 1.332e-02, -4.138e-02, 2.104e-03, -5.048e-03, -1.939e-04, -5.239e-02, -4.374e-02, 5.139e-02, -7.104e-03, 3.513e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass18(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-2x4C-NVL-DN.hlsl",
    "content": "// CuNNy 2x4C BILINEAR RGB NVL DN - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-DN-D04N02\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0\n\n#define l0(x, y) (dot(MF3(-3.725e-01, -7.046e-01, -1.734e-01), O(INPUT, float2(x, y)).rgb) + MF(1.169e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 1.492e-02, -1.961e-02, -7.539e-03, -3.574e-03 };\n\tr = mad(s0_0, V4(-2.745e-03, -2.925e-03, 1.135e-01, 3.162e-02), r);\n\tr = mad(s0_1, V4(4.049e-03, -3.428e-01, -7.641e-02, 2.484e-02), r);\n\tr = mad(s0_2, V4(-8.372e-03, 3.398e-01, 1.072e-01, -5.449e-02), r);\n\tr = mad(s0_3, V4(1.592e-02, 1.884e-02, -3.160e-02, -7.727e-02), r);\n\tr = mad(s0_4, V4(4.429e-01, -3.936e-01, -4.134e-01, -4.287e-01), r);\n\tr = mad(s0_5, V4(4.556e-02, 3.754e-01, -2.300e-02, 4.971e-01), r);\n\tr = mad(s0_6, V4(-2.031e-02, -6.662e-03, 8.906e-02, 4.602e-02), r);\n\tr = mad(s0_7, V4(-4.365e-01, 2.183e-03, 8.609e-02, 9.402e-03), r);\n\tr = mad(s0_8, V4(-3.845e-02, 5.695e-03, 9.645e-02, -5.310e-02), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 4.789e-02, 4.713e-03, -2.854e-02, 9.967e-03 };\n\tr = MulAdd(s0_0, M4(1.218e-02, -1.208e-01, -1.955e-01, -1.217e-01, 3.123e-02, -2.317e-02, 1.961e-01, -9.984e-02, 3.038e-03, 2.863e-02, -1.042e-01, -5.529e-02, 1.266e-01, -3.877e-01, 2.315e-01, -1.334e-01), r);\n\tr = MulAdd(s0_1, M4(-1.774e-02, 1.636e-01, 1.379e-01, 7.499e-03, -7.890e-02, -3.970e-02, -6.053e-02, -1.431e-02, 4.167e-02, 9.728e-02, 3.825e-02, -2.704e-02, -2.303e-01, -3.348e-01, 2.940e-01, 4.825e-02), r);\n\tr = MulAdd(s0_2, M4(1.239e-02, 1.613e-02, -2.280e-01, 8.985e-02, 2.106e-03, 3.847e-02, -2.539e-02, -3.326e-02, -6.327e-02, -1.427e-01, 4.218e-02, 8.995e-02, -6.045e-02, -1.073e-01, -1.329e-01, -2.085e-02), r);\n\tr = MulAdd(s0_3, M4(-1.601e-01, -2.448e-01, -3.950e-01, 9.169e-03, -3.694e-02, 2.018e-01, -2.524e-01, 1.719e+00, 3.009e-02, 4.927e-02, 1.564e-01, 3.509e-02, -2.630e-02, -3.986e-01, 1.326e-01, -1.037e-02), r);\n\tr = MulAdd(s0_4, M4(-1.074e+00, -1.654e-01, 4.163e-01, 3.816e-02, 4.580e-01, 4.350e-01, -3.490e-01, -1.257e-02, 1.159e-02, -2.083e-01, -2.744e-01, -2.667e-02, 2.826e-03, 1.986e-01, -2.723e-01, 9.612e-02), r);\n\tr = MulAdd(s0_5, M4(-3.195e-01, -1.450e-01, -1.523e-01, -2.999e-03, 1.166e-01, 1.304e-01, 1.475e-01, 7.286e-02, -4.077e-02, -3.477e-02, 1.496e-01, -1.199e-02, 7.881e-02, 8.911e-02, -1.082e-01, -6.762e-02), r);\n\tr = MulAdd(s0_6, M4(2.020e-02, 1.556e-01, -9.837e-03, 1.537e-02, -1.047e-01, 2.095e-01, 2.025e-01, -3.522e-02, -3.407e-02, -8.949e-02, -7.721e-02, -8.910e-03, 9.305e-02, 2.231e-01, 2.178e-01, 1.502e-02), r);\n\tr = MulAdd(s0_7, M4(-7.936e-02, 3.096e-01, 1.869e-01, -1.950e-03, -2.452e-01, -5.098e-01, 5.304e-01, -4.921e-02, -1.073e-01, 1.062e-01, 2.527e-01, 5.909e-04, 3.797e-02, 3.291e-01, -2.395e-01, 2.768e-02), r);\n\tr = MulAdd(s0_8, M4(-5.559e-02, 1.090e-01, -1.757e-01, 1.261e-02, -1.632e-01, -2.476e-01, -5.674e-02, -4.843e-03, 1.064e-02, 1.023e-01, 2.540e-02, -1.336e-02, 1.362e-01, 1.833e-01, 3.772e-03, 5.118e-04), r);\n\tr = MulAdd(s1_0, M4(1.383e-01, 3.469e-01, 3.568e-02, -1.958e-01, -3.170e-02, -1.076e-02, -2.012e-02, -2.104e-04, 2.046e-02, -1.268e-02, -1.618e-01, -6.370e-02, 2.615e-02, 1.494e-01, -1.523e-01, 3.702e-02), r);\n\tr = MulAdd(s1_1, M4(-1.140e-02, 6.811e-01, 5.722e-02, 1.514e-01, -6.311e-02, -3.541e-02, -1.150e-01, 3.625e-02, 1.146e-01, -1.395e-03, 5.059e-01, -7.835e-02, -3.907e-01, 6.172e-02, -9.656e-02, -2.727e-02), r);\n\tr = MulAdd(s1_2, M4(1.239e-01, 1.206e-01, 7.519e-01, 2.106e-02, 8.647e-03, 1.082e-02, 5.931e-02, -4.215e-02, -2.216e-02, -4.829e-02, -1.927e-01, 1.159e-01, -1.789e-01, -9.596e-02, 1.395e-01, -6.395e-02), r);\n\tr = MulAdd(s1_3, M4(1.194e-01, -5.786e-01, -1.761e-03, -1.126e-02, -5.311e-02, -2.325e-01, 1.733e-01, 2.842e-01, -1.080e-01, -1.012e-01, 1.851e-01, 4.253e-02, 1.212e-01, 2.435e-02, -3.061e-01, -9.579e-02), r);\n\tr = MulAdd(s1_4, M4(-4.651e-02, -1.299e+00, -5.020e-01, 5.830e-02, 5.098e-01, 7.344e-02, -1.358e-01, 1.725e-02, -2.980e-01, -6.077e-01, 6.308e-01, -4.014e-02, 3.497e-01, 3.700e-01, -6.035e-01, 8.026e-02), r);\n\tr = MulAdd(s1_5, M4(-1.851e-02, -2.057e-01, 5.081e-01, -5.262e-02, 1.715e-01, 1.387e-01, -1.123e-01, 9.022e-02, -1.532e-01, -3.749e-02, -1.930e-01, 6.423e-02, 2.763e-02, 5.993e-02, 4.141e-01, -8.825e-02), r);\n\tr = MulAdd(s1_6, M4(-6.324e-03, -9.461e-02, 3.044e-02, -4.139e-03, -2.925e-02, 3.975e-01, 1.161e-01, 9.726e-03, 1.353e-01, 2.762e-01, 3.297e-03, 1.076e-02, -8.503e-02, -7.010e-01, -1.967e-01, -1.360e-03), r);\n\tr = MulAdd(s1_7, M4(1.873e-02, 1.099e-01, 1.229e-01, -1.232e-02, -5.723e-01, -4.599e-02, -1.236e-01, -2.003e-02, -4.268e-01, 5.929e-01, 2.942e-01, 3.485e-02, 4.326e-01, -9.250e-02, 3.736e-01, -2.393e-02), r);\n\tr = MulAdd(s1_8, M4(-5.991e-02, 1.199e-03, -1.349e-02, -1.321e-03, -2.036e-01, -1.937e-01, -7.888e-02, -9.144e-03, 1.557e-01, 7.018e-02, -2.646e-01, -3.360e-06, 1.742e-01, 1.814e-01, 1.385e-01, -1.030e-02), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 7.359e-03, -1.132e-02, 1.248e-02, 7.243e-04 };\n\tr = MulAdd(s0_0, M4(-1.565e-01, 1.307e-02, -5.269e-02, 5.465e-02, 2.936e-01, 1.626e-01, 4.589e-02, 2.478e-02, 3.520e-01, -5.445e-02, -2.480e-01, 2.838e-02, 1.841e-04, 1.264e-02, -1.370e-02, 2.588e-02), r);\n\tr = MulAdd(s0_1, M4(2.350e-01, 2.116e-01, 2.167e-02, -1.559e-01, 2.502e-01, 4.320e-01, -7.152e-01, 2.270e-01, -2.668e-01, -2.117e-01, 5.598e-01, 2.261e-01, 4.101e-02, -4.860e-02, 3.530e-02, 8.932e-02), r);\n\tr = MulAdd(s0_2, M4(-4.398e-02, -4.486e-02, -5.040e-02, 9.803e-02, 7.515e-02, 1.203e-01, -5.357e-02, -2.803e-01, -1.435e-01, 7.150e-03, -3.118e-02, -2.636e-01, -2.969e-02, -2.011e-02, 2.658e-02, -2.572e-02), r);\n\tr = MulAdd(s0_3, M4(9.140e-02, -1.875e-01, 9.757e-02, 2.976e-02, -8.325e-02, 6.109e-02, -4.304e-02, 7.057e-02, 7.324e-01, -1.528e-01, 2.930e-01, 7.503e-02, -3.901e-02, 1.109e-03, -2.693e-02, -3.330e-02), r);\n\tr = MulAdd(s0_4, M4(-9.944e-02, 1.858e-01, -2.436e-01, 3.822e-02, 6.685e-02, -1.758e-01, 1.382e-01, -1.715e-01, 3.252e-01, 5.176e-01, -2.939e-01, 4.311e-01, -6.125e-02, 1.905e-01, 8.140e-02, 2.095e-01), r);\n\tr = MulAdd(s0_5, M4(3.193e-02, 6.029e-02, 1.869e-03, 8.627e-04, -1.402e-02, 4.288e-02, -5.756e-02, 8.813e-02, -2.758e-02, -5.267e-02, 1.702e-03, -6.676e-01, 6.373e-02, 5.766e-02, -6.325e-02, -2.744e-01), r);\n\tr = MulAdd(s0_6, M4(4.918e-02, 5.420e-04, 3.692e-02, 7.796e-03, -1.163e-02, -4.074e-02, 2.057e-02, -2.837e-02, 1.083e-01, 1.958e-01, -5.078e-02, 2.750e-02, 5.323e-02, 5.953e-03, 4.766e-02, -2.265e-03), r);\n\tr = MulAdd(s0_7, M4(-3.968e-02, -1.535e-01, 6.564e-02, -2.620e-02, 3.742e-02, 8.659e-02, -4.440e-02, 6.007e-03, -9.585e-02, -9.425e-02, -1.517e-01, 3.701e-01, -1.332e-01, -1.860e-01, -5.436e-02, 3.781e-01), r);\n\tr = MulAdd(s0_8, M4(-1.145e-02, 6.045e-02, -4.676e-02, -5.604e-02, -1.576e-02, -3.528e-02, 2.252e-02, 1.997e-02, -2.546e-02, -6.894e-02, 7.238e-02, -3.495e-01, -6.323e-02, -1.042e-01, 1.091e-01, -4.170e-01), r);\n\tr = MulAdd(s1_0, M4(-5.215e-01, 6.255e-01, 5.587e-02, -5.362e-02, 9.895e-02, -8.743e-03, 1.058e-01, -3.585e-02, -1.594e-02, -1.034e-01, 3.848e-02, -5.432e-02, -1.796e-02, 5.838e-02, 1.304e-01, -2.122e-02), r);\n\tr = MulAdd(s1_1, M4(-6.987e-02, 8.696e-01, -1.130e+00, 5.558e-03, -1.080e-01, 4.195e-02, -1.323e-01, 2.270e-01, 3.451e-02, -1.616e-02, 4.251e-03, 1.470e-01, 2.442e-01, -5.904e-02, -3.467e-01, -2.056e-02), r);\n\tr = MulAdd(s1_2, M4(4.884e-02, -1.034e-01, 5.823e-02, 1.131e-01, -4.126e-02, 6.519e-02, -1.532e-02, -2.420e-01, 1.092e-02, 1.869e-02, 1.913e-03, -1.787e-02, 1.122e-01, -1.481e-01, 1.843e-01, 3.454e-01), r);\n\tr = MulAdd(s1_3, M4(-2.906e-01, -9.847e-01, 4.092e-01, 1.655e-01, 4.092e-02, 2.913e-01, 1.306e-01, -4.682e-02, 2.568e-01, -4.528e-02, 3.207e-02, 9.888e-02, -3.928e-01, -3.546e-01, -2.367e-01, -3.239e-01), r);\n\tr = MulAdd(s1_4, M4(4.463e-01, -1.594e-01, 8.418e-01, -3.525e-01, 5.957e-01, 1.082e+00, -9.245e-01, 2.726e-01, 1.210e-01, 2.024e-01, -8.063e-03, -2.433e-01, -1.512e+00, 9.316e-01, 2.305e-01, -5.109e-01), r);\n\tr = MulAdd(s1_5, M4(-2.393e-02, 1.286e-02, -9.453e-02, 3.071e-01, -1.402e-01, -2.436e-01, 1.202e-01, -1.409e-01, -1.857e-02, 2.421e-02, -2.642e-02, -7.415e-02, 8.786e-01, 5.260e-04, -9.212e-02, 1.849e-01), r);\n\tr = MulAdd(s1_6, M4(8.958e-02, 9.057e-02, 1.712e-02, -2.838e-02, -1.405e-01, -6.455e-02, -2.695e-02, -1.110e-02, 8.731e-03, 6.531e-02, -3.752e-02, 1.194e-01, 4.585e-01, 6.270e-01, -1.367e-01, -2.529e-01), r);\n\tr = MulAdd(s1_7, M4(-4.381e-02, -1.595e-02, -4.601e-02, 7.257e-02, -8.036e-02, -1.360e-01, 1.154e-01, -7.942e-02, -4.653e-02, -7.121e-02, 2.720e-02, 8.346e-02, -1.871e+00, -8.300e-01, -6.760e-01, 7.402e-01), r);\n\tr = MulAdd(s1_8, M4(1.359e-02, -2.489e-02, 3.529e-02, -1.121e-01, -6.190e-02, -2.628e-02, -2.090e-03, 2.359e-01, -2.412e-02, -2.463e-02, 8.317e-03, -5.330e-02, 2.105e+00, 1.550e-01, 1.457e+00, -1.129e+00), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 4\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -7.528e-04, -8.388e-04, -1.247e-03, -1.205e-03 };\n\tr = MulAdd(s0_0, M4(8.642e-03, -1.295e-02, 1.998e-02, -1.289e-03, -4.147e-02, -4.021e-03, 1.491e-04, -7.275e-03, 1.574e-02, -4.122e-03, 1.126e-02, 8.962e-03, 5.174e-02, 3.405e-02, 4.993e-02, 4.529e-02), r);\n\tr = MulAdd(s0_1, M4(-1.028e-01, -2.764e-02, -2.777e-02, -7.170e-03, -8.365e-02, 3.550e-02, 1.288e-01, 2.475e-02, 5.017e-02, 5.917e-02, 3.473e-02, 8.510e-03, 2.332e-02, 8.047e-02, 9.838e-02, 4.234e-02), r);\n\tr = MulAdd(s0_2, M4(-2.319e-02, -4.432e-02, -1.679e-02, 8.855e-03, 3.259e-02, -1.974e-01, 5.938e-02, 1.616e-01, -5.605e-04, 3.183e-02, -3.356e-03, 3.138e-02, 9.572e-03, -3.887e-02, -2.632e-02, -1.161e-02), r);\n\tr = MulAdd(s0_3, M4(-2.947e-02, -4.358e-02, 1.208e-03, -2.705e-02, -1.037e-02, -6.812e-02, -5.436e-02, -3.840e-02, 3.684e-02, 2.560e-02, 1.715e-02, -3.670e-02, -5.930e-02, -2.310e-02, -6.163e-02, -3.562e-02), r);\n\tr = MulAdd(s0_4, M4(5.520e-01, 1.213e-01, 1.753e-01, 5.436e-02, 5.879e-01, 2.281e-01, -2.703e-01, 1.519e-01, 5.739e-01, 2.959e-01, 9.449e-02, 2.473e-02, -5.998e-01, -9.548e-02, -6.035e-01, -9.663e-02), r);\n\tr = MulAdd(s0_5, M4(-9.740e-02, 2.744e-01, -1.522e-01, -7.204e-02, 1.178e-01, 6.112e-01, -4.801e-02, -5.176e-01, 1.480e-02, 8.323e-02, -6.764e-02, 4.138e-02, 1.121e-01, -8.141e-02, 1.211e-01, -8.737e-02), r);\n\tr = MulAdd(s0_6, M4(6.315e-02, 6.323e-02, 1.146e-02, 3.378e-02, -9.598e-02, -1.089e-01, 2.780e-02, -6.091e-02, -1.194e-01, -1.038e-01, -2.147e-02, -4.236e-02, -2.300e-02, -3.184e-02, -1.560e-02, -2.206e-02), r);\n\tr = MulAdd(s0_7, M4(-1.772e-01, -1.304e-01, 1.265e-01, -7.871e-02, 1.978e-01, 1.074e-01, 1.240e-02, 4.600e-02, 1.558e-02, -3.196e-02, 2.018e-01, 1.496e-01, 1.421e-01, 8.472e-02, 7.432e-02, 9.935e-02), r);\n\tr = MulAdd(s0_8, M4(1.132e-02, -2.296e-03, 1.274e-01, 3.428e-01, -5.796e-02, -6.156e-02, -2.549e-01, -2.231e-01, -8.762e-02, -9.318e-02, -2.378e-01, -3.018e-01, 5.601e-03, -2.670e-02, 2.896e-02, -3.910e-02), r);\n\tr = MulAdd(s1_0, M4(4.603e-02, -2.582e-02, -9.045e-03, 1.446e-02, -1.835e-02, -2.533e-02, 3.681e-03, -9.420e-03, -5.802e-02, 2.310e-02, 3.059e-02, 1.313e-03, 9.639e-02, 8.284e-02, 1.071e-01, -3.287e-02), r);\n\tr = MulAdd(s1_1, M4(-2.480e-02, 2.321e-03, -3.594e-02, -1.101e-01, 2.850e-02, 2.912e-02, 2.597e-02, 2.777e-02, 5.701e-02, 9.536e-04, 2.533e-02, 1.102e-02, -3.714e-03, 7.838e-02, -1.716e-02, 1.723e-01), r);\n\tr = MulAdd(s1_2, M4(-4.473e-03, 1.521e-02, -1.887e-02, 6.731e-03, 2.199e-03, 2.965e-02, -3.709e-03, 1.671e-02, 1.376e-02, -4.819e-02, -8.832e-04, 3.531e-02, -8.453e-03, -1.276e-02, -1.461e-02, 4.460e-03), r);\n\tr = MulAdd(s1_3, M4(6.139e-02, -1.511e-01, 1.102e-01, -1.428e-01, -5.114e-02, -6.594e-02, -1.693e-02, -4.651e-02, 2.440e-01, 2.010e-02, -1.900e-01, -1.243e-03, -2.397e-01, 2.002e-01, -3.506e-01, 2.171e-01), r);\n\tr = MulAdd(s1_4, M4(-6.189e-02, 5.137e-01, -8.132e-02, 4.526e-01, 3.263e-01, 2.134e-01, 1.027e-01, 2.067e-02, 2.407e-01, 2.591e-01, 4.489e-01, 2.042e-01, 1.932e-02, -4.463e-01, -1.479e-01, -6.843e-01), r);\n\tr = MulAdd(s1_5, M4(-7.571e-03, -7.787e-02, 9.918e-03, -8.469e-02, 4.056e-02, -1.926e-02, -4.968e-02, 2.416e-02, 2.699e-02, 2.783e-01, -7.854e-02, -6.549e-02, 6.835e-03, 2.288e-02, 1.048e-02, -3.273e-02), r);\n\tr = MulAdd(s1_6, M4(7.034e-02, 4.236e-02, 7.905e-02, -2.283e-03, -8.423e-02, -7.784e-02, -7.540e-03, -3.373e-02, -1.019e-01, -1.421e-01, 6.713e-02, -8.716e-02, -6.980e-02, -4.731e-02, -3.086e-02, -6.210e-03), r);\n\tr = MulAdd(s1_7, M4(-1.597e-01, -2.036e-01, 5.194e-02, 8.457e-02, 1.387e-01, 7.910e-02, 2.030e-02, 5.848e-02, 2.154e-01, 1.382e-01, -8.617e-02, 7.552e-02, 3.127e-02, 5.899e-02, 1.733e-01, 1.657e-01), r);\n\tr = MulAdd(s1_8, M4(3.595e-02, 3.243e-02, 1.450e-01, 2.046e-01, -2.939e-02, -1.306e-02, -1.587e-01, -2.607e-01, -8.980e-02, -5.350e-02, -2.627e-01, -2.861e-01, -1.585e-02, -2.032e-02, -1.662e-02, 1.560e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-2x4C-NVL.hlsl",
    "content": "// CuNNy 2x4C BILINEAR RGB NVL - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-D04N02\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0\n\n#define l0(x, y) (dot(MF3(-6.049e-01, -1.145e+00, -2.540e-01), O(INPUT, float2(x, y)).rgb) + MF(1.794e+00))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 4.440e-03, -1.956e-04, 1.215e-03, 1.790e-03 };\n\tr = mad(s0_0, V4(1.411e-01, -9.763e-03, -1.361e-01, -9.610e-04), r);\n\tr = mad(s0_1, V4(6.068e-02, 7.238e-03, -1.182e-01, -1.535e-02), r);\n\tr = mad(s0_2, V4(-8.549e-02, -2.876e-03, -8.740e-03, 1.652e-02), r);\n\tr = mad(s0_3, V4(-3.249e-01, 5.392e-02, -8.518e-02, -7.437e-03), r);\n\tr = mad(s0_4, V4(2.435e-02, -6.191e-01, 7.147e-01, 5.862e-01), r);\n\tr = mad(s0_5, V4(1.968e-01, 1.868e-02, -1.723e-01, -5.801e-01), r);\n\tr = mad(s0_6, V4(1.528e-01, -4.489e-02, 5.871e-03, 4.528e-03), r);\n\tr = mad(s0_7, V4(-4.619e-01, 6.152e-01, -1.313e-01, -5.326e-02), r);\n\tr = mad(s0_8, V4(2.902e-01, -1.801e-02, -6.907e-02, 5.105e-02), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 3.566e-03, 2.403e-03, -1.451e-03, 4.304e-03 };\n\tr = MulAdd(s0_0, M4(1.120e-01, 8.150e-03, 7.146e-02, -4.942e-02, 3.623e-01, -1.678e-01, 1.189e-01, 1.372e-01, 1.225e-01, -2.568e-02, 6.959e-02, 1.788e-02, 1.962e-01, -1.870e-01, -6.548e-03, -4.334e-02), r);\n\tr = MulAdd(s0_1, M4(1.805e-01, 4.881e-02, -2.342e-03, 2.035e-02, -2.427e-01, -2.197e-02, -2.036e-02, 3.919e-01, -3.037e-01, 7.047e-02, 3.426e-02, -8.694e-02, 2.144e-01, 1.431e-01, -7.851e-02, 2.247e-01), r);\n\tr = MulAdd(s0_2, M4(6.328e-02, -4.140e-02, 3.362e-02, 5.204e-02, -1.052e-01, 1.698e-01, -2.727e-03, 1.110e-01, 7.156e-02, -1.108e-02, -2.717e-02, 5.680e-02, -6.118e-02, 2.435e-02, 1.743e-02, 8.179e-02), r);\n\tr = MulAdd(s0_3, M4(1.557e-01, 1.189e-01, 8.836e-02, 2.178e-02, -3.954e-01, 2.466e-01, -2.166e-01, -7.051e-02, -2.857e-01, -1.611e-02, -8.667e-02, 1.895e-04, 2.744e-01, 1.499e-01, 8.228e-02, 2.938e-02), r);\n\tr = MulAdd(s0_4, M4(2.441e-01, -3.694e-01, 1.751e-01, 6.833e-01, -1.087e-01, -2.065e-01, -1.557e-01, -6.945e-02, -1.403e-02, 2.171e-02, 3.748e-02, 2.646e-01, -3.718e-01, -1.188e-01, 1.569e-01, 8.554e-02), r);\n\tr = MulAdd(s0_5, M4(-5.069e-02, 2.646e-01, -5.754e-02, -3.545e-01, 1.404e-01, 1.123e-01, 4.577e-02, -1.465e-01, -2.119e-02, -1.115e-02, 1.661e-01, -4.029e-01, -2.123e-01, 2.774e-01, -1.905e-02, -1.093e-02), r);\n\tr = MulAdd(s0_6, M4(2.593e-02, -1.801e-02, 9.053e-02, -2.721e-02, 6.658e-03, 3.802e-02, -3.282e-02, -1.116e-01, 1.201e-01, 2.095e-02, -2.061e-02, 2.498e-03, -1.831e-01, -1.743e-01, 1.062e-01, -6.113e-01), r);\n\tr = MulAdd(s0_7, M4(-1.172e-01, -1.130e-02, -6.727e-02, 7.753e-02, -3.958e-03, -9.790e-02, -1.635e-01, 1.049e-01, 2.862e-01, -2.733e-02, -1.566e-01, -2.900e-01, -1.050e-01, -3.441e-01, -8.690e-02, 8.659e-02), r);\n\tr = MulAdd(s0_8, M4(2.145e-01, 4.613e-02, 1.590e-02, -4.749e-02, 3.291e-01, 1.012e-01, 8.647e-03, -2.282e-01, 2.215e-01, 1.713e-01, 1.414e-01, -3.916e-01, -2.488e-01, 1.458e-01, 2.518e-02, -9.979e-02), r);\n\tr = MulAdd(s1_0, M4(-2.127e-02, 3.575e-02, 9.372e-02, -2.662e-02, 4.467e-02, 1.304e-02, 3.849e-02, 5.186e-02, 7.417e-02, 3.647e-02, 4.960e-02, -3.988e-02, -3.998e-02, 1.173e-01, 7.752e-03, -2.263e-02), r);\n\tr = MulAdd(s1_1, M4(-1.283e-01, -1.460e-01, 1.963e-02, -1.108e-01, -4.171e-01, 2.397e-01, -5.886e-02, 7.788e-02, -2.820e-02, -1.719e-01, 9.334e-03, -1.255e-01, 1.392e-01, 9.532e-03, -5.163e-02, 8.641e-02), r);\n\tr = MulAdd(s1_2, M4(-1.889e-01, 1.933e-01, 5.574e-02, 6.723e-02, -1.015e-01, -3.316e-01, -1.460e-02, -1.606e-01, 1.052e-01, 1.027e-02, -4.626e-02, 5.368e-02, -9.160e-03, -9.514e-02, 2.577e-02, 7.122e-02), r);\n\tr = MulAdd(s1_3, M4(-1.958e-01, 1.276e-01, 7.303e-02, -1.135e-01, -2.277e-01, 2.017e-01, -5.223e-02, 1.379e-01, -1.737e-01, 4.871e-02, -8.142e-02, 1.392e-01, 8.113e-02, 4.415e-01, -1.174e-01, 1.910e-02), r);\n\tr = MulAdd(s1_4, M4(-3.233e-01, -4.158e-01, 8.391e-02, 2.017e-01, 9.790e-02, -4.865e-02, -2.172e-01, 2.607e-01, -2.458e-01, -4.931e-01, 3.016e-01, 2.198e-01, -7.173e-02, -5.683e-01, -7.447e-02, -1.264e-01), r);\n\tr = MulAdd(s1_5, M4(-4.189e-01, 3.271e-01, 8.844e-02, -5.295e-01, 6.365e-02, -1.513e-01, 1.246e-02, -2.005e-01, 1.764e-01, 5.796e-01, 7.286e-02, -1.428e-01, -1.130e-01, -6.883e-02, -1.303e-02, -1.091e-01), r);\n\tr = MulAdd(s1_6, M4(-6.621e-02, 9.901e-03, 9.472e-02, -3.568e-02, 1.067e-01, -3.318e-02, 3.152e-01, -5.261e-02, 1.108e-01, 7.081e-02, -1.289e-01, 6.477e-03, 1.036e-01, -1.477e-03, 1.035e+00, -9.204e-02), r);\n\tr = MulAdd(s1_7, M4(-2.721e-01, -5.458e-02, -1.707e-01, -1.096e-02, -1.302e-01, -9.074e-02, 1.694e-01, 6.307e-02, 4.233e-01, -5.112e-02, -3.545e-01, -2.589e-01, 8.276e-02, -3.975e-01, 7.705e-02, 4.482e-01), r);\n\tr = MulAdd(s1_8, M4(1.175e-01, 2.212e-03, 5.751e-02, -8.666e-02, 2.532e-01, 1.303e-01, 7.291e-02, -2.126e-01, 4.815e-01, 1.649e-01, -4.748e-02, -3.330e-01, -1.252e-01, -8.987e-03, -4.285e-03, -1.106e-01), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 5.508e-03, 4.690e-03, -5.708e-04, -7.674e-03 };\n\tr = MulAdd(s0_0, M4(-1.173e-02, 2.762e-03, -2.225e-03, -6.814e-03, 8.328e-02, -1.275e-02, 6.091e-02, -6.470e-02, -6.067e-02, -1.086e-01, 7.501e-02, 1.227e-01, -1.551e-02, -1.728e-02, -2.694e-02, 7.490e-02), r);\n\tr = MulAdd(s0_1, M4(5.326e-02, 1.003e-02, 3.989e-02, -1.908e-03, -4.580e-02, -4.303e-03, 4.333e-02, 8.324e-02, 8.170e-01, 8.040e-01, -3.975e-01, -1.034e+00, 1.362e-01, 3.776e-04, -1.102e-02, -5.030e-02), r);\n\tr = MulAdd(s0_2, M4(-6.068e-02, 6.212e-02, -4.979e-02, 9.626e-03, 1.301e-02, -2.045e-02, 1.798e-02, 2.091e-02, -2.290e-01, 3.612e-01, -7.014e-02, 1.669e-01, -5.191e-03, 1.304e-02, 9.444e-05, -2.137e-02), r);\n\tr = MulAdd(s0_3, M4(-3.235e-02, -6.238e-02, 3.894e-02, 5.893e-02, -3.530e-02, -1.063e-01, 8.668e-02, 1.232e-02, -3.851e-02, 2.952e-02, 6.132e-02, -5.755e-02, 8.317e-02, 8.340e-02, -8.227e-02, 6.481e-03), r);\n\tr = MulAdd(s0_4, M4(2.118e-02, 2.725e-01, -1.393e-01, -2.377e-01, 4.872e-01, 2.235e-01, -1.746e-02, -3.662e-01, -3.945e-01, -1.862e-01, -9.132e-02, 8.777e-02, -5.084e-01, -3.300e-01, -3.443e-02, 4.203e-01), r);\n\tr = MulAdd(s0_5, M4(1.165e-01, -1.743e-01, 4.169e-03, -1.518e-01, 1.174e-01, -3.314e-02, 2.295e-02, -9.160e-02, -1.854e-01, -6.999e-02, -6.985e-02, 4.875e-04, -1.147e-01, 1.722e-01, -2.588e-02, 1.185e-01), r);\n\tr = MulAdd(s0_6, M4(-8.881e-03, 1.907e-03, 9.002e-03, 8.085e-03, -8.728e-03, -1.074e-01, 7.035e-02, 6.519e-02, 4.323e-02, -4.675e-02, 4.382e-02, 1.091e-02, 3.357e-02, 4.384e-02, -8.031e-03, -1.945e-02), r);\n\tr = MulAdd(s0_7, M4(-7.981e-02, 1.492e-02, -9.399e-02, -3.750e-02, -1.274e-01, -3.235e-02, -3.169e-02, 6.420e-02, 4.304e-02, 9.302e-02, 1.250e-02, 3.906e-03, 1.752e-01, -1.211e-02, 9.058e-02, -6.273e-02), r);\n\tr = MulAdd(s0_8, M4(-1.290e-02, -4.309e-02, 3.384e-02, 3.819e-02, -3.309e-02, 3.986e-02, 3.783e-03, 5.361e-02, 5.473e-02, 1.574e-02, -2.385e-02, -7.630e-02, -1.778e-02, 1.375e-02, -2.936e-02, -1.778e-02), r);\n\tr = MulAdd(s1_0, M4(1.219e-01, 1.166e-02, -5.932e-02, 1.191e-02, -2.487e-03, -5.945e-02, 6.637e-02, 5.775e-02, -1.705e-02, 5.538e-02, -5.130e-02, -3.602e-02, 5.461e-02, -1.253e-01, 6.953e-02, 1.066e-01), r);\n\tr = MulAdd(s1_1, M4(6.504e-01, -9.638e-01, 1.371e+00, 5.682e-02, 1.583e-02, -2.371e-02, 5.201e-02, 3.845e-02, 3.478e-02, -1.477e-01, 1.763e-01, 5.129e-02, 2.992e-01, -3.335e-01, 2.490e-02, 4.873e-01), r);\n\tr = MulAdd(s1_2, M4(2.415e-02, 8.838e-02, -1.519e-01, 9.012e-02, -6.676e-02, 3.422e-02, -2.380e-02, 5.608e-02, -1.744e-01, -9.595e-02, -7.627e-02, -5.823e-02, -9.466e-02, 5.554e-02, -1.024e-01, -1.763e-01), r);\n\tr = MulAdd(s1_3, M4(8.380e-02, -7.972e-02, 8.813e-02, 3.371e-02, 5.392e-03, 4.385e-02, 1.207e-02, -5.728e-02, -3.427e-03, -2.027e-03, 1.211e-03, -7.897e-03, 3.360e-02, 4.603e-02, -1.240e-02, -2.219e-02), r);\n\tr = MulAdd(s1_4, M4(-6.699e-01, -3.512e-01, -2.153e-01, 3.218e-01, -5.100e-01, 4.324e-03, 2.713e-01, -2.073e-01, 1.547e-01, -2.123e-03, 7.928e-02, -5.698e-02, 2.450e-02, -4.866e-02, 9.436e-02, 7.900e-02), r);\n\tr = MulAdd(s1_5, M4(1.609e-01, -7.910e-02, 1.112e-01, -2.959e-02, -3.877e-01, -2.803e-01, -1.071e-01, -6.881e-03, 1.922e-02, 2.433e-02, -3.581e-02, -5.264e-02, -3.287e-01, -1.037e-02, -6.159e-02, 8.219e-02), r);\n\tr = MulAdd(s1_6, M4(-4.263e-02, -6.372e-02, 2.607e-02, 5.285e-02, -6.156e-02, -7.837e-02, 7.299e-03, 8.959e-02, -8.706e-03, -1.642e-02, 1.825e-02, 1.850e-02, 2.735e-02, 2.413e-02, -3.236e-02, -9.612e-03), r);\n\tr = MulAdd(s1_7, M4(-5.849e-02, 1.530e-01, -6.767e-02, -1.392e-02, -3.430e-01, -1.851e-01, -1.013e-01, 2.465e-01, -1.715e-02, 4.970e-03, -1.850e-02, -4.214e-03, 1.889e-02, -5.787e-02, 7.154e-02, 9.237e-02), r);\n\tr = MulAdd(s1_8, M4(-2.084e-02, -2.484e-01, 5.767e-02, -2.550e-02, -9.126e-02, 4.292e-01, 1.983e-02, 2.979e-01, -3.807e-03, -3.367e-03, 1.835e-03, 8.694e-03, -9.074e-02, 4.820e-02, -2.886e-02, 5.975e-02), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 4\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -1.734e-03, -1.825e-03, -1.635e-03, -1.665e-03 };\n\tr = MulAdd(s0_0, M4(-1.841e-04, -5.677e-02, 9.249e-03, -8.726e-03, 4.041e-02, -1.295e-01, 1.154e-01, 2.765e-02, 1.833e-01, -8.427e-02, 1.078e-01, -1.432e-01, 1.068e-01, -1.222e-01, 2.535e-02, 5.316e-02), r);\n\tr = MulAdd(s0_1, M4(-3.609e-03, 5.812e-02, -4.650e-02, -2.093e-02, -3.442e-02, 7.643e-02, 1.424e-02, 7.195e-02, 1.552e-01, -8.291e-01, 1.547e-01, 4.354e-01, -2.851e-02, 1.023e-01, -8.481e-03, -6.567e-02), r);\n\tr = MulAdd(s0_2, M4(1.724e-02, -1.165e-02, 1.007e-02, -3.008e-02, -9.814e-04, -2.007e-02, -5.905e-03, 6.714e-03, -1.736e-01, 2.035e-01, -1.333e-01, 1.250e-01, -9.118e-03, -4.989e-02, 2.142e-02, -4.038e-03), r);\n\tr = MulAdd(s0_3, M4(7.885e-02, -8.350e-02, -6.025e-03, -1.139e-01, -8.380e-02, -6.836e-02, -5.589e-01, -4.614e-01, -6.742e-01, 2.118e-01, -4.442e-01, 2.197e-01, -5.873e-02, 1.902e-01, -4.687e-01, -4.712e-01), r);\n\tr = MulAdd(s0_4, M4(-4.506e-01, 2.396e-01, -1.350e-02, 4.072e-01, 3.249e-01, 9.930e-02, 1.576e-02, -2.456e-01, 1.506e+00, 6.047e-02, 8.841e-01, -1.927e+00, -4.337e-01, -5.801e-01, 3.334e-01, 8.276e-02), r);\n\tr = MulAdd(s0_5, M4(5.049e-02, -1.870e-01, 7.413e-02, -2.569e-02, -2.152e-02, 1.139e-01, -3.874e-02, 1.634e-02, -1.325e-01, 4.002e-02, -1.874e-01, 1.204e-01, 2.267e-02, 1.380e-02, -1.055e-02, 5.504e-02), r);\n\tr = MulAdd(s0_6, M4(-2.855e-02, 1.255e-02, 3.941e-02, 4.466e-03, 4.814e-05, -9.003e-03, 1.231e-01, 5.676e-02, 5.020e-02, -5.407e-02, -1.951e-01, 4.240e-02, 3.525e-02, -1.021e-01, 4.517e-01, 2.399e-01), r);\n\tr = MulAdd(s0_7, M4(-5.781e-02, -4.964e-02, -3.981e-01, -1.716e-01, 3.430e-02, -1.644e-02, 2.352e-01, 1.938e-01, 1.266e-01, -1.061e-01, 7.754e-01, 5.337e-01, 2.664e-01, 3.669e-01, -1.113e+00, -1.742e-01), r);\n\tr = MulAdd(s0_8, M4(2.948e-02, 3.723e-02, 2.739e-02, -5.215e-02, -1.542e-02, -2.173e-02, -1.944e-02, 1.856e-02, -4.535e-02, 1.163e-02, -5.014e-02, 8.660e-02, 1.421e-01, 2.314e-01, 1.171e-02, -4.975e-01), r);\n\tr = MulAdd(s1_0, M4(-4.408e-02, -3.573e-02, 3.842e-02, 2.571e-02, 2.872e-01, -4.960e-01, 2.569e-01, -6.254e-02, 2.158e-02, -6.452e-02, 7.495e-02, 1.997e-02, 4.094e-02, -9.741e-02, 3.542e-02, -8.115e-03), r);\n\tr = MulAdd(s1_1, M4(3.480e-02, 1.949e-04, 1.780e-02, 4.483e-02, -2.814e-01, 4.229e-01, -5.482e-02, 1.512e-02, -3.120e-02, 3.945e-02, 4.626e-02, 7.013e-02, -6.686e-03, 5.832e-02, -4.408e-02, -1.262e-02), r);\n\tr = MulAdd(s1_2, M4(-9.847e-03, 1.973e-03, 1.457e-02, 2.290e-02, 4.741e-02, 2.270e-02, 8.902e-04, 1.152e-02, -2.473e-02, -1.948e-02, -3.475e-03, 4.431e-02, 2.044e-02, 1.571e-04, 9.470e-03, -2.825e-02), r);\n\tr = MulAdd(s1_3, M4(5.918e-02, -1.939e-02, -4.628e-02, -7.774e-02, -3.040e-01, 8.634e-02, -5.254e-01, -6.906e-01, -1.218e-01, -6.178e-02, -3.115e-01, -2.697e-01, -2.402e-02, -2.149e-02, -3.878e-01, -3.453e-01), r);\n\tr = MulAdd(s1_4, M4(2.920e-01, 3.711e-01, -2.753e-01, -4.654e-02, 1.379e-01, 3.908e-01, -4.798e-01, 6.668e-01, 4.870e-01, -1.634e-01, -7.790e-02, -2.683e-01, -4.834e-01, -1.822e-02, -8.492e-03, 7.620e-02), r);\n\tr = MulAdd(s1_5, M4(-4.786e-02, 2.412e-02, 4.992e-02, -1.913e-01, 9.058e-02, -4.485e-02, 8.249e-02, -9.418e-02, 3.555e-02, 3.543e-01, -1.140e-01, -1.358e-01, 5.079e-02, -2.007e-01, 6.132e-02, -2.373e-03), r);\n\tr = MulAdd(s1_6, M4(6.553e-03, -7.804e-03, 8.569e-02, 4.875e-02, 5.085e-02, 1.728e-02, 6.949e-02, 1.313e-01, 1.825e-02, -5.557e-02, -7.548e-03, -5.534e-02, 7.059e-02, 4.382e-02, 2.807e-01, 1.919e-01), r);\n\tr = MulAdd(s1_7, M4(-1.071e-01, -3.709e-02, -4.757e-01, -1.943e-01, 8.182e-02, -3.334e-02, 4.170e-01, 6.716e-02, 1.563e-01, 1.382e-01, 7.441e-01, 4.082e-01, -9.101e-02, -3.943e-02, -5.142e-01, -1.910e-01), r);\n\tr = MulAdd(s1_8, M4(4.255e-03, 4.204e-02, 5.834e-02, -6.508e-02, -3.675e-02, 1.165e-02, -2.694e-02, -2.212e-02, -3.036e-02, -4.393e-02, 1.855e-03, 1.909e-01, 3.812e-02, 3.309e-02, 3.942e-02, -7.422e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-3x4C-NVL-DN.hlsl",
    "content": "// CuNNy 3x4C BILINEAR RGB NVL DN - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-DN-D04N03\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0\n\n#define l0(x, y) (dot(MF3(-2.683e-01, -5.217e-01, -1.382e-01), O(INPUT, float2(x, y)).rgb) + MF(7.973e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 3.156e-02, 7.379e-02, 1.078e-02, -5.510e-04 };\n\tr = mad(s0_0, V4(1.850e-01, -2.860e-02, -5.321e-01, 2.390e-03), r);\n\tr = mad(s0_1, V4(-4.299e-01, -2.946e-02, -1.180e-01, -5.652e-02), r);\n\tr = mad(s0_2, V4(-4.798e-01, -2.276e-02, 3.201e-02, 4.870e-02), r);\n\tr = mad(s0_3, V4(2.783e-01, -2.262e-03, -1.864e-01, 1.793e-01), r);\n\tr = mad(s0_4, V4(9.435e-04, 8.115e-01, 7.806e-01, -7.793e-01), r);\n\tr = mad(s0_5, V4(2.180e-01, -2.564e-05, 2.774e-03, -7.015e-02), r);\n\tr = mad(s0_6, V4(1.479e-03, -4.675e-02, 3.323e-02, 3.392e-01), r);\n\tr = mad(s0_7, V4(1.203e-01, 1.509e-02, 5.239e-02, 3.194e-01), r);\n\tr = mad(s0_8, V4(7.680e-02, -4.310e-02, -7.203e-02, 1.255e-02), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 1.427e-02, -1.982e-02, 4.114e-03, -2.883e-02 };\n\tr = MulAdd(s0_0, M4(1.949e-01, -1.247e-01, -7.307e-02, 8.783e-02, -4.773e-02, 6.012e-02, 8.043e-02, -8.489e-02, 6.760e-02, -7.809e-02, -4.745e-02, -1.304e-02, -1.402e-01, -1.248e-01, 3.334e-01, -1.498e-01), r);\n\tr = MulAdd(s0_1, M4(7.053e-02, 9.895e-02, 1.655e-01, 2.251e-01, 3.511e-02, -1.010e-01, -2.736e-01, 1.174e-01, -2.551e-01, 1.100e-01, 1.518e-01, -4.343e-02, -9.293e-01, 5.327e-01, -2.723e-01, 4.006e-01), r);\n\tr = MulAdd(s0_2, M4(-2.390e-02, 8.154e-03, -2.332e-02, -3.708e-02, 2.814e-02, 5.506e-02, -2.627e-01, -8.081e-02, -1.062e-01, -6.819e-02, -9.498e-02, -2.749e-01, -2.457e-01, 6.868e-01, 6.527e-03, 7.676e-01), r);\n\tr = MulAdd(s0_3, M4(2.704e-01, 4.055e-02, -4.756e-01, 2.506e-01, -9.498e-02, 5.838e-02, 1.733e-01, 3.420e-03, -7.051e-02, -8.233e-02, -3.006e-01, 6.824e-02, -1.308e-01, 1.196e-01, 2.560e-01, 8.304e-02), r);\n\tr = MulAdd(s0_4, M4(4.190e-01, -1.207e-01, 2.708e-01, -6.375e-01, 1.740e-01, 1.955e-03, -1.816e-01, -7.933e-02, -9.308e-01, 1.333e-01, -1.335e-01, -1.401e-01, 3.447e-01, 3.389e-01, 6.660e-01, -3.387e-01), r);\n\tr = MulAdd(s0_5, M4(7.310e-02, 1.403e-02, 8.114e-02, 7.400e-02, -2.552e-02, -1.607e-01, -1.208e-01, -3.943e-02, -2.743e-02, -7.229e-03, -1.749e-03, 3.062e-01, 1.429e-01, 8.105e-01, 3.562e-01, 4.580e-01), r);\n\tr = MulAdd(s0_6, M4(2.115e-01, -1.686e-01, -1.948e-01, -1.191e-01, -5.798e-02, 3.493e-02, 8.264e-02, 1.579e-01, -1.081e-01, -1.775e-01, -8.196e-02, -2.085e-01, 6.791e-02, 1.652e-02, -4.933e-03, 2.833e-02), r);\n\tr = MulAdd(s0_7, M4(-2.160e-01, -3.858e-01, -8.407e-01, -1.091e-01, 8.415e-03, 8.626e-02, 2.340e-01, 9.177e-02, -4.697e-01, -6.623e-02, -5.176e-01, 6.762e-02, -3.437e-03, 6.570e-02, 7.630e-02, 8.988e-02), r);\n\tr = MulAdd(s0_8, M4(6.527e-02, -6.320e-02, 1.192e-02, -1.196e-01, -1.605e-02, -9.294e-03, 1.955e-01, -2.356e-02, -3.582e-02, 1.377e-02, 9.253e-02, -2.362e-02, 3.578e-02, 1.822e-01, 3.329e-01, 1.489e-01), r);\n\tr = MulAdd(s1_0, M4(1.154e-01, -1.822e-01, -2.122e-01, 3.031e-02, 6.550e-01, -4.855e-02, 6.554e-02, 4.432e-02, 1.671e-02, -4.477e-02, -9.428e-03, 4.413e-03, -3.185e-02, -1.529e-01, -1.222e-01, 6.523e-02), r);\n\tr = MulAdd(s1_1, M4(-4.920e-02, -1.697e-02, 4.141e-02, 1.997e-01, 6.972e-01, -5.157e-01, 2.031e-01, 2.829e-02, -5.005e-02, 2.335e-01, 2.985e-01, 6.871e-02, -5.232e-01, 2.146e-02, -1.418e+00, 2.193e-01), r);\n\tr = MulAdd(s1_2, M4(-6.472e-02, 2.595e-02, -2.610e-02, -2.279e-02, 4.165e-01, -7.745e-01, 1.261e-01, -3.845e-01, 3.279e-02, 2.445e-02, 1.796e-01, -2.581e-01, -3.838e-01, 6.280e-02, -4.893e-01, -1.475e-01), r);\n\tr = MulAdd(s1_3, M4(9.330e-02, 1.742e-01, -1.685e-01, 2.376e-02, -9.586e-01, -1.236e+00, -7.271e-01, -7.674e-01, 2.500e-01, -3.709e-02, -1.303e-01, 1.490e-01, -2.746e-01, -1.376e-01, -2.321e-02, -1.967e-02), r);\n\tr = MulAdd(s1_4, M4(3.660e-01, 4.772e-02, 5.524e-01, -2.804e-01, -2.756e+00, -1.336e+00, 2.038e-01, 2.593e+00, 2.156e-01, 3.281e-01, 3.152e-01, 8.064e-01, 3.970e-01, -1.379e-01, -7.518e-02, -2.723e-01), r);\n\tr = MulAdd(s1_5, M4(5.214e-03, 1.695e-02, 1.024e-01, 1.333e-01, -2.250e-01, -1.298e+00, 4.673e-01, 1.317e+00, 3.036e-01, -1.273e-01, 2.900e-01, 2.249e-02, -1.870e-01, -1.124e-01, -5.879e-01, 6.314e-02), r);\n\tr = MulAdd(s1_6, M4(-8.225e-02, -1.149e-01, 1.598e-04, -3.662e-01, -8.572e-02, -8.909e-01, 9.891e-02, 1.818e-01, 1.715e-01, -2.348e-01, 1.178e-01, -6.289e-02, 1.522e-02, 1.973e-02, 3.707e-02, 2.911e-02), r);\n\tr = MulAdd(s1_7, M4(-6.380e-02, 8.661e-02, -2.666e-01, 9.586e-02, -1.257e+00, -2.231e+00, -1.232e+00, 5.642e-01, 5.730e-02, -3.294e-01, -1.151e-01, 2.382e-01, 4.529e-02, 4.927e-02, 9.893e-02, 8.365e-02), r);\n\tr = MulAdd(s1_8, M4(1.906e-02, -8.920e-02, 8.931e-02, -6.752e-02, -3.680e-01, -1.282e+00, -1.388e-01, -7.545e-02, 6.262e-02, -1.695e-01, 2.278e-01, -3.066e-01, -7.412e-02, 1.145e-02, 4.667e-02, -4.205e-04), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -1.292e-02, 8.156e-04, -2.055e-03, -3.100e-03 };\n\tr = MulAdd(s0_0, M4(2.965e-01, -1.919e-01, 9.202e-02, 8.775e-03, -4.948e-02, 1.061e-01, -3.754e-02, -1.900e-01, -2.114e-01, 1.267e-01, 1.989e-02, 2.570e-02, 4.634e-03, -2.718e-01, 2.171e-01, 1.512e-01), r);\n\tr = MulAdd(s0_1, M4(-5.527e-01, -4.825e-01, 4.325e-01, 4.447e-01, -6.577e-02, 5.161e-01, 3.286e-02, -3.800e-01, 2.625e-02, 3.835e-01, -7.794e-02, -5.489e-02, -2.647e-01, -4.952e-01, 1.587e-01, 1.471e-01), r);\n\tr = MulAdd(s0_2, M4(-3.687e-01, -1.096e-01, 1.849e-01, -6.915e-02, 2.257e-01, 2.760e-01, -8.875e-02, -8.871e-02, -8.394e-02, -6.714e-02, 5.322e-03, -3.252e-01, -7.885e-02, -2.723e-01, 6.149e-02, 2.998e-01), r);\n\tr = MulAdd(s0_3, M4(1.606e-01, -1.199e-01, 3.573e-01, 2.833e-02, 6.514e-03, -2.242e-02, -6.231e-02, 6.702e-02, -8.717e-02, -2.227e-01, -1.626e-01, 5.313e-02, -1.411e-01, -2.445e-02, 1.194e-01, -1.101e-01), r);\n\tr = MulAdd(s0_4, M4(-1.127e+00, 1.823e-01, 1.358e-01, -1.618e-01, -4.171e-04, -7.771e-02, 2.147e-01, 6.493e-01, 4.989e-01, 3.955e-01, -1.017e-01, -2.861e-01, 3.878e-01, -6.653e-01, -4.968e-01, -5.063e-01), r);\n\tr = MulAdd(s0_5, M4(-2.270e-01, -3.965e-01, -2.794e-02, 1.487e-01, -2.667e-01, -1.410e-02, 1.475e-01, -4.992e-01, -1.071e-01, 2.096e-01, 1.159e-01, -6.073e-02, -7.157e-02, -2.446e-01, -4.807e-02, 1.968e-01), r);\n\tr = MulAdd(s0_6, M4(8.199e-02, 8.336e-02, -3.090e-02, -1.287e-02, -6.954e-02, -7.544e-02, 1.272e-01, 7.930e-02, -3.647e-02, -2.685e-02, -4.235e-02, 3.214e-02, -4.526e-02, 1.479e-01, -4.963e-02, -3.035e-02), r);\n\tr = MulAdd(s0_7, M4(-2.012e-02, -1.497e-02, -2.952e-01, -6.026e-02, 2.135e-03, 2.979e-02, -2.713e-02, 7.951e-03, -8.069e-02, -2.374e-01, 1.865e-01, 1.048e-01, -9.076e-02, 6.683e-02, 9.576e-02, -2.432e-02), r);\n\tr = MulAdd(s0_8, M4(1.455e-01, 2.613e-01, -1.616e-01, -3.564e-01, 1.229e-01, -3.778e-02, 3.316e-02, 5.927e-02, -1.831e-01, -1.388e-01, 5.986e-02, 2.083e-02, -1.368e-03, 2.394e-01, -1.623e-01, -2.768e-02), r);\n\tr = MulAdd(s1_0, M4(7.711e-03, -6.696e-04, -3.229e-02, 1.549e-02, -1.596e-01, 2.068e-01, -6.162e-02, -9.571e-02, -1.500e-01, 1.743e-01, 2.746e-02, -5.845e-02, -7.649e-03, -4.265e-03, 4.154e-03, 3.950e-03), r);\n\tr = MulAdd(s1_1, M4(2.764e-01, -4.505e-02, 4.280e-02, 6.044e-02, 3.396e-02, 2.750e-01, -1.910e-01, -2.153e-01, 9.633e-02, -2.194e-02, -2.131e-01, -1.181e-01, -1.343e-01, 6.123e-02, 1.904e-02, -6.568e-02), r);\n\tr = MulAdd(s1_2, M4(-3.643e-01, -1.709e-02, 1.528e-01, -1.405e-01, 3.307e-01, -1.979e-03, -1.819e-01, 7.635e-02, 1.266e-01, 2.162e-01, -7.492e-02, -9.075e-02, 4.120e-02, 1.521e-01, -2.790e-03, -4.330e-02), r);\n\tr = MulAdd(s1_3, M4(1.913e-02, -5.373e-02, 5.748e-02, -1.443e-02, -2.776e-01, -1.162e-01, -1.994e-01, 1.430e-01, 9.058e-02, -3.720e-02, -3.585e-02, -8.516e-02, -2.228e-02, 7.507e-02, -9.620e-02, -1.013e-01), r);\n\tr = MulAdd(s1_4, M4(-3.592e-01, 1.415e-01, 1.018e+00, -1.555e-01, 5.378e-01, 8.818e-02, 2.190e-01, 1.997e-01, -1.128e-01, 3.331e-02, -1.410e-01, 2.844e-01, 4.756e-01, -5.850e-02, -3.757e-01, -1.716e-01), r);\n\tr = MulAdd(s1_5, M4(2.636e-02, -3.596e-01, -3.280e-01, 2.027e-01, 3.000e-01, -2.297e-01, 4.282e-02, 1.776e-01, 5.222e-02, 1.751e-01, 4.529e-02, -8.347e-02, -3.409e-01, -2.640e-01, 1.753e-01, -5.672e-01), r);\n\tr = MulAdd(s1_6, M4(-1.699e-02, 4.941e-02, -2.642e-02, -1.406e-04, -1.655e-01, -1.464e-02, -4.353e-02, 1.946e-01, 6.067e-02, -1.429e-01, 1.170e-01, -4.644e-02, -6.567e-02, -2.264e-02, 6.666e-02, 9.009e-02), r);\n\tr = MulAdd(s1_7, M4(7.805e-02, 2.173e-02, -3.276e-01, 2.004e-03, -7.789e-02, -1.466e-02, -1.560e-01, -1.126e-01, -3.823e-02, -2.446e-03, 1.465e-01, -2.744e-01, -2.129e-01, -2.141e-02, 4.456e-01, 1.240e-01), r);\n\tr = MulAdd(s1_8, M4(1.315e-02, 2.686e-01, -1.987e-01, -2.093e-01, 3.184e-02, -8.723e-02, 3.012e-01, 3.580e-01, 1.198e-02, -2.655e-01, 1.455e-01, 7.602e-02, -4.605e-02, 3.276e-01, -2.036e-01, -2.590e-01), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 3.045e-03, 3.707e-03, -6.011e-03, -5.162e-03 };\n\tr = MulAdd(s0_0, M4(2.151e-02, -4.754e-02, 3.454e-02, -1.338e-03, -4.337e-02, 4.608e-02, -1.116e-01, -2.296e-02, -2.839e-02, -3.878e-01, -2.317e-02, 5.774e-02, 4.317e-03, 6.680e-02, 6.325e-02, -1.449e-01), r);\n\tr = MulAdd(s0_1, M4(-1.173e-01, -8.942e-02, -1.017e-01, 6.496e-02, 5.558e-02, 2.788e-02, 2.184e-02, -2.837e-03, -1.057e-01, -2.075e-01, -3.255e-02, -1.297e-02, -2.643e-02, -1.695e-02, -9.425e-02, 3.942e-02), r);\n\tr = MulAdd(s0_2, M4(-1.773e-02, -4.118e-02, -2.141e-02, 4.282e-02, 4.234e-02, -1.221e-02, -3.375e-03, 4.469e-02, -2.586e-01, -1.112e-01, -7.688e-02, 3.426e-02, 8.170e-02, -2.355e-02, -3.737e-02, 3.004e-02), r);\n\tr = MulAdd(s0_3, M4(2.192e-01, 1.955e+00, 2.012e-01, -2.598e-02, -7.453e-02, 5.510e-02, -1.517e-01, -2.571e-01, -2.182e-02, -2.345e-02, -5.767e-02, -5.534e-02, -1.996e-02, 2.329e-01, 4.447e-04, -1.111e-01), r);\n\tr = MulAdd(s0_4, M4(3.476e-01, -4.368e-01, -1.180e-01, 5.371e-01, 5.294e-01, 1.509e-01, 2.456e-01, -7.875e-02, 2.055e-01, 9.732e-02, 1.285e-01, 5.178e-01, 3.256e-01, -2.842e-01, 4.421e-02, 3.426e-01), r);\n\tr = MulAdd(s0_5, M4(6.119e-01, -1.393e-01, -1.144e-02, 2.438e-01, -5.126e-02, -1.049e-01, -7.847e-02, 9.942e-02, 5.371e-01, 9.985e-02, 9.193e-02, -3.067e-02, -1.962e-01, -4.272e-02, -7.821e-03, 2.557e-02), r);\n\tr = MulAdd(s0_6, M4(1.224e-02, -5.098e-01, 3.052e-01, 5.332e-01, 2.249e-01, 4.201e-02, 5.423e-01, 1.106e-01, -1.056e-02, -4.091e-03, -1.267e-02, -5.280e-02, 1.898e-02, 9.430e-03, 1.470e-02, 7.235e-02), r);\n\tr = MulAdd(s0_7, M4(-4.342e-01, 2.385e-01, -3.834e-02, -7.654e-02, -9.043e-01, -3.139e-01, -1.511e-01, 3.800e-01, -8.848e-02, -3.911e-02, -7.025e-03, -1.196e-02, -3.322e-03, -1.455e-01, 2.084e-02, 1.106e-01), r);\n\tr = MulAdd(s0_8, M4(1.382e-01, -1.894e-01, -8.814e-02, 1.373e-01, 1.362e-01, -1.298e-01, -1.007e-01, 1.166e-01, -1.553e-02, 8.530e-02, 2.744e-02, -1.083e-01, -5.606e-02, 5.965e-02, 1.406e-02, -4.496e-02), r);\n\tr = MulAdd(s1_0, M4(-4.828e-03, -1.035e-01, -5.021e-02, 1.972e-02, -9.942e-03, -3.057e-01, -7.373e-03, 4.274e-02, -3.475e-03, 4.653e-02, 9.115e-03, -5.794e-02, 1.170e-02, 1.322e-01, 1.195e-01, -2.535e-02), r);\n\tr = MulAdd(s1_1, M4(-5.424e-02, -1.541e-01, -9.945e-02, 8.862e-02, -1.198e-01, -3.591e-05, 4.305e-02, -1.079e-01, 1.605e-02, -3.377e-02, -5.398e-02, 1.201e-02, 3.432e-02, 1.090e-02, 8.871e-02, 3.186e-02), r);\n\tr = MulAdd(s1_2, M4(-1.108e-01, -3.481e-02, -1.616e-02, -4.136e-03, -3.382e-02, 1.836e-02, -3.071e-02, -3.186e-02, -1.014e-01, -1.412e-01, -7.790e-02, 9.763e-02, -1.624e-02, -2.520e-02, -2.152e-02, 2.524e-02), r);\n\tr = MulAdd(s1_3, M4(3.337e-03, -1.439e-02, 2.317e-03, 2.097e-01, 5.091e-03, 4.138e-02, -5.988e-02, -2.348e-02, -5.626e-03, 1.695e-02, 2.371e-02, -1.652e-02, 8.541e-02, -1.851e-01, 1.130e+00, -1.181e-01), r);\n\tr = MulAdd(s1_4, M4(1.184e-01, -3.385e-02, 2.659e-02, 3.233e-01, 2.333e-01, 1.694e-01, 1.915e-01, 1.162e-01, 4.309e-02, -3.793e-02, 1.412e-01, -1.345e-02, -6.074e-01, -2.408e-01, -1.306e-01, 1.033e-01), r);\n\tr = MulAdd(s1_5, M4(3.452e-01, 1.401e-01, 3.650e-02, -4.950e-02, 1.755e-01, -1.210e-01, -1.041e-02, 1.281e-01, 4.262e-01, 2.166e-02, 3.851e-02, 1.295e-01, -1.910e-01, -2.029e-02, -2.151e-02, -1.537e-02), r);\n\tr = MulAdd(s1_6, M4(4.989e-03, -5.730e-02, 5.803e-02, 2.946e-02, 1.825e-02, 2.660e-02, -4.900e-03, 3.848e-03, 1.078e-02, 1.823e-02, -4.751e-03, 4.219e-02, -1.024e-01, 7.721e-02, -6.709e-01, 8.423e-02), r);\n\tr = MulAdd(s1_7, M4(-1.567e-01, 4.125e-02, -2.721e-02, -1.831e-01, 9.470e-03, -1.205e-01, 1.793e-02, 1.160e-01, -4.874e-02, -4.902e-02, -1.479e-01, 7.102e-02, 6.699e-01, -1.383e-01, 1.314e-01, 2.999e-01), r);\n\tr = MulAdd(s1_8, M4(-2.625e-01, -9.735e-02, -6.038e-02, 3.588e-03, 2.247e-02, 4.993e-02, 1.171e-02, -2.071e-02, 2.066e-01, 2.852e-01, -5.781e-02, -3.231e-01, 6.922e-02, 8.960e-02, 9.107e-02, -2.880e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 5\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t1\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 1.708e-05, 2.435e-04, 1.267e-03, 1.926e-03 };\n\tr = MulAdd(s0_0, M4(1.116e-01, 1.402e-01, 1.439e-02, 5.091e-02, -1.526e-02, -2.562e-02, -1.193e-02, -1.365e-02, -6.156e-02, -3.463e-02, 2.155e-02, -2.192e-02, -2.937e-02, -1.072e-01, -4.538e-02, -3.302e-02), r);\n\tr = MulAdd(s0_1, M4(-1.192e-02, -1.724e-02, 9.899e-03, -5.861e-03, -1.552e-02, 2.422e-02, 4.929e-03, 7.339e-03, 4.700e-02, 1.993e-01, -6.323e-02, 5.778e-02, 1.499e-01, 3.916e-01, -4.578e-02, -2.026e-02), r);\n\tr = MulAdd(s0_2, M4(5.431e-03, 1.916e-03, -2.064e-03, -6.545e-04, -1.731e-02, -8.081e-02, 1.391e-02, -7.036e-03, 7.739e-02, -1.588e-01, 2.970e-02, 3.357e-02, 3.869e-02, -7.824e-02, 1.813e-02, -6.252e-02), r);\n\tr = MulAdd(s0_3, M4(5.283e-01, 8.076e-02, 3.430e-01, 2.332e-01, -3.540e-02, 1.903e-02, -1.354e-02, -1.415e-02, -1.644e-01, -1.319e-02, -9.781e-02, -3.256e-02, 2.768e-02, -3.914e-02, 1.596e-01, -1.067e-01), r);\n\tr = MulAdd(s0_4, M4(-1.638e-02, 4.385e-01, -1.479e-01, -1.789e-02, -1.399e-01, -5.884e-02, -7.306e-02, -2.036e-03, 5.196e-01, -1.849e-01, 8.771e-01, 3.595e-01, -7.094e-01, 2.485e-02, -3.977e-02, 7.246e-01), r);\n\tr = MulAdd(s0_5, M4(-1.647e-03, -6.027e-03, -3.787e-03, -1.975e-02, -4.810e-02, -4.557e-01, 4.921e-02, -1.313e-01, -2.044e-02, 3.533e-01, -7.591e-02, 1.249e-02, 2.648e-02, -5.215e-01, 1.204e-01, -2.254e-01), r);\n\tr = MulAdd(s0_6, M4(-2.852e-02, -1.630e-02, 1.249e-01, -1.758e-02, 4.285e-02, 1.425e-02, -1.595e-02, 2.618e-02, 4.460e-03, 1.266e-02, -3.914e-02, 1.111e-02, 5.378e-02, 2.199e-02, 2.561e-03, 2.125e-02), r);\n\tr = MulAdd(s0_7, M4(-6.567e-02, -4.333e-02, -4.153e-03, 1.692e-01, 5.376e-02, 5.736e-02, -1.860e-01, -9.094e-02, 3.357e-02, -3.186e-02, 1.244e-01, -9.606e-02, 6.227e-02, 6.827e-02, -2.086e-01, -6.625e-02), r);\n\tr = MulAdd(s0_8, M4(4.553e-05, -3.116e-02, 1.023e-02, 2.322e-02, 8.623e-02, 1.125e-01, 2.802e-02, -2.768e-01, -1.003e-01, -2.143e-02, -2.413e-02, 1.460e-01, 5.421e-02, 5.798e-02, 3.478e-03, -1.421e-01), r);\n\tr = MulAdd(s1_0, M4(2.165e-01, 1.123e-01, -3.653e-02, -6.070e-03, -1.021e-01, -6.901e-04, 6.256e-03, -3.182e-03, -4.285e-02, -6.763e-02, 2.278e-02, -1.860e-02, -2.689e-02, 2.567e-02, 2.634e-03, 3.600e-02), r);\n\tr = MulAdd(s1_1, M4(-1.159e-01, -1.198e-01, 2.991e-02, -6.143e-02, 1.038e-01, -5.076e-02, -1.785e-02, -3.611e-02, 6.860e-02, 9.302e-02, -1.125e-02, 3.332e-02, 6.457e-02, -3.919e-02, 4.158e-03, -1.201e-02), r);\n\tr = MulAdd(s1_2, M4(-6.554e-03, 3.359e-02, -2.003e-02, -2.227e-04, 3.354e-02, -3.700e-02, -9.588e-03, -3.740e-02, -1.336e-02, -2.556e-04, -4.733e-03, -1.636e-02, 1.127e-02, 1.421e-02, -1.019e-02, -2.731e-02), r);\n\tr = MulAdd(s1_3, M4(3.642e-01, -3.756e-03, 6.584e-01, 1.773e-01, -1.638e-02, 1.109e-02, -7.427e-02, -1.572e-02, -1.869e-01, -3.059e-02, -8.088e-02, -5.092e-02, -5.794e-02, -4.431e-02, -7.912e-02, -9.767e-02), r);\n\tr = MulAdd(s1_4, M4(-3.255e-02, 3.115e-01, -2.109e-01, 2.804e-01, -6.504e-01, -1.342e-02, 1.355e-01, 3.623e-01, 5.142e-01, 2.124e-01, 1.866e-01, 2.268e-01, -2.470e-02, 1.629e-01, 1.163e-01, 1.663e-01), r);\n\tr = MulAdd(s1_5, M4(-1.093e-02, -1.640e-04, -3.502e-02, -3.746e-02, 1.836e-02, -5.959e-01, 1.323e-01, -2.388e-01, 3.482e-02, 1.823e-01, -3.895e-02, 5.164e-03, -7.314e-02, -3.897e-01, 6.275e-02, -3.974e-02), r);\n\tr = MulAdd(s1_6, M4(7.922e-03, -3.284e-02, 1.274e-01, -2.930e-02, 6.307e-02, 2.548e-02, -4.094e-02, 2.130e-02, -1.123e-02, 1.824e-03, -9.595e-02, 1.808e-02, 7.955e-02, 3.285e-02, 4.592e-02, 7.153e-02), r);\n\tr = MulAdd(s1_7, M4(-6.410e-02, -1.423e-02, -4.912e-02, 1.461e-01, 6.612e-02, 9.838e-02, -2.153e-01, -1.067e-01, -1.108e-02, -1.048e-01, 2.778e-01, -1.116e-01, 4.569e-02, 2.955e-02, -1.440e-01, -3.364e-02), r);\n\tr = MulAdd(s1_8, M4(1.721e-02, 1.171e-02, 1.096e-02, -2.832e-02, 7.446e-02, 4.785e-02, 8.270e-03, -1.640e-01, -8.912e-02, -6.617e-02, 3.225e-03, 9.894e-02, 4.367e-02, 8.102e-02, -1.779e-02, -2.410e-01), r);\n\treturn tanh(r);\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-3x4C-NVL.hlsl",
    "content": "// CuNNy 3x4C BILINEAR RGB NVL - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-D04N03\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0\n\n#define l0(x, y) MF((dot(float3(6.094e-01, 1.148e+00, 2.568e-01), O(INPUT, float2(x, y)).rgb) + -1.542e+00))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -4.952e-03, -2.750e-03, -9.137e-04, 6.736e-02 };\n\tr = mad(s0_0, V4(-6.372e-02, 1.685e-01, -2.573e-02, -2.185e-02), r);\n\tr = mad(s0_1, V4(-3.502e-02, -2.984e-03, 5.048e-02, -2.445e-01), r);\n\tr = mad(s0_2, V4(9.644e-02, -7.557e-03, -1.770e-02, 3.162e-02), r);\n\tr = mad(s0_3, V4(7.199e-02, -6.233e-01, -4.180e-01, 1.392e-01), r);\n\tr = mad(s0_4, V4(-5.683e-01, 1.451e-01, -8.148e-02, 9.768e-02), r);\n\tr = mad(s0_5, V4(4.702e-01, -1.319e-03, 3.745e-03, -4.204e-02), r);\n\tr = mad(s0_6, V4(9.855e-03, 3.213e-01, 5.098e-01, 4.001e-02), r);\n\tr = mad(s0_7, V4(8.216e-02, -1.219e-02, -3.347e-02, 5.017e-02), r);\n\tr = mad(s0_8, V4(-6.691e-02, 5.417e-03, 1.235e-02, -9.640e-03), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -1.511e-02, -2.848e-03, 7.160e-03, -2.555e-03 };\n\tr = MulAdd(s0_0, M4(3.169e-01, 3.467e-01, -2.365e-01, 2.253e-01, 6.307e-02, 1.727e-01, -1.053e-01, 9.324e-02, -4.901e-02, -2.112e-01, 8.983e-02, -1.851e-01, -1.987e-01, 6.645e-02, 2.188e-02, 1.988e-02), r);\n\tr = MulAdd(s0_1, M4(4.393e-02, 2.078e-01, -1.967e-01, 4.673e-02, -7.991e-02, 2.461e-01, -6.028e-02, 9.252e-02, 3.871e-01, 6.138e-02, -3.603e-01, -1.485e-01, 2.466e-01, 5.251e-02, -6.181e-02, 8.932e-02), r);\n\tr = MulAdd(s0_2, M4(-1.707e-02, 2.598e-02, 1.641e-02, 2.780e-02, 2.425e-02, 1.769e-01, -8.461e-02, 1.067e-01, -2.503e-01, 6.051e-01, -2.782e-01, 1.311e-01, -8.456e-03, -1.370e-02, -6.391e-02, 6.935e-02), r);\n\tr = MulAdd(s0_3, M4(-8.251e-01, -4.981e-01, -1.726e-01, -1.815e-01, 1.411e-01, 2.889e-02, -3.115e-01, -3.255e-01, 1.812e-03, -4.529e-02, 2.350e-01, 1.999e-01, -1.993e-01, -1.868e-02, 4.249e-02, -1.117e-01), r);\n\tr = MulAdd(s0_4, M4(-4.732e-02, -5.673e-02, 1.274e-01, 4.894e-02, 9.126e-02, 1.717e-01, -3.294e-01, -2.378e-01, -7.089e-02, -8.116e-02, 2.510e-01, 7.381e-02, 1.275e-01, 8.030e-02, -1.671e-01, -1.824e-02), r);\n\tr = MulAdd(s0_5, M4(3.373e-02, -4.163e-02, -4.077e-02, -2.085e-02, 1.265e-01, -4.133e-01, 7.433e-02, 7.763e-02, -1.466e-01, 3.291e-01, -7.784e-02, 9.472e-02, 2.725e-01, -2.393e-01, -6.913e-02, -9.445e-02), r);\n\tr = MulAdd(s0_6, M4(3.043e-02, -9.985e-02, 1.538e-01, -2.529e-01, 2.379e-01, 1.079e-01, -1.517e-01, -9.289e-02, -1.396e-01, -4.354e-02, 8.463e-02, 7.052e-02, 5.629e-02, 3.293e-03, 5.342e-02, -1.606e-01), r);\n\tr = MulAdd(s0_7, M4(3.626e-02, -1.421e-01, 4.017e-02, -3.963e-02, 2.148e-03, 5.522e-02, 3.174e-01, 2.270e-02, -5.590e-02, -9.875e-02, -1.683e-01, 5.415e-02, 1.509e-01, 7.709e-02, -1.161e-01, 1.440e-01), r);\n\tr = MulAdd(s0_8, M4(-1.132e-02, 2.337e-02, 1.264e-02, 2.638e-03, -6.582e-02, -1.965e-01, 2.803e-01, 1.333e-01, 9.171e-02, 1.567e-01, -2.419e-01, -1.602e-01, -2.271e-01, 3.614e-02, 2.179e-01, 4.826e-02), r);\n\tr = MulAdd(s1_0, M4(1.452e-01, 1.313e-01, -6.140e-02, 2.412e-01, -3.691e-02, 7.355e-02, -4.209e-02, 1.343e-01, -2.509e-02, -1.266e-01, 9.017e-02, -1.854e-02, -4.280e-01, -1.004e-01, 2.319e-01, 4.211e-02), r);\n\tr = MulAdd(s1_1, M4(4.894e-02, 7.564e-02, -9.350e-02, 5.422e-02, -6.111e-02, 6.969e-02, -4.398e-02, 6.622e-02, 7.113e-01, 3.461e-01, -5.254e-01, -8.808e-02, 4.481e-01, 3.171e-01, -2.198e-01, 1.048e-01), r);\n\tr = MulAdd(s1_2, M4(-3.483e-02, 3.150e-03, 2.215e-02, 2.616e-02, 1.468e-01, -1.295e-01, -1.470e-01, 3.371e-02, -4.514e-02, 4.677e-02, -1.313e-01, -1.176e-01, 1.507e-03, 2.290e-01, -2.163e-01, 3.895e-02), r);\n\tr = MulAdd(s1_3, M4(-2.258e-01, -1.353e-01, -4.873e-01, -1.236e+00, 1.660e-01, -1.803e-02, -2.797e-01, -4.092e-01, -1.525e-01, -8.178e-02, 2.665e-01, 3.652e-01, -1.853e-01, -3.819e-02, 1.627e-01, -3.896e-01), r);\n\tr = MulAdd(s1_4, M4(-1.005e-01, -3.821e-02, 9.917e-02, -1.324e-01, -2.040e-01, -3.586e-01, 9.776e-02, -1.376e-01, 2.065e-01, 2.017e-01, -1.320e-01, -2.225e-02, 2.944e-01, 5.393e-02, -4.301e-01, -7.240e-02), r);\n\tr = MulAdd(s1_5, M4(5.353e-02, -4.257e-02, -4.131e-02, -3.943e-02, -6.151e-02, 3.059e-01, -1.481e-02, 3.662e-01, 3.098e-02, -8.774e-02, 1.790e-02, -1.332e-01, 8.670e-02, -6.985e-02, -1.359e-01, 2.063e-01), r);\n\tr = MulAdd(s1_6, M4(-9.271e-02, 2.259e-01, 2.200e-02, -2.390e-01, 3.258e-01, 1.082e-01, -1.499e-01, -3.063e-02, -2.775e-01, -9.008e-02, 1.294e-01, 3.533e-02, 1.011e-02, 4.294e-02, 4.935e-02, -1.005e-01), r);\n\tr = MulAdd(s1_7, M4(1.321e-02, -7.160e-02, 7.229e-02, -3.050e-02, 4.303e-02, -1.518e-01, 5.137e-01, 4.029e-02, 4.896e-02, 5.334e-02, -3.545e-01, 2.370e-02, 1.645e-01, 3.433e-02, -9.552e-03, 1.032e-01), r);\n\tr = MulAdd(s1_8, M4(8.370e-03, -2.408e-02, 2.693e-02, -8.183e-03, -2.375e-02, -2.973e-01, 1.889e-01, 1.096e-01, 1.093e-02, 2.310e-01, -1.613e-01, -1.343e-01, -1.718e-01, -2.165e-02, 1.384e-01, 9.956e-02), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -3.514e-03, 2.350e-03, 2.221e-03, 1.089e-03 };\n\tr = MulAdd(s0_0, M4(6.983e-02, 8.935e-03, -1.644e-01, -4.232e-04, -1.981e-01, 9.265e-02, 1.769e-01, 1.705e-01, -2.300e-02, -7.408e-03, -4.221e-02, -1.617e-02, -6.026e-02, -9.185e-03, -7.420e-02, -4.238e-02), r);\n\tr = MulAdd(s0_1, M4(1.832e-01, -1.117e-01, 1.784e-02, 6.345e-02, -9.651e-02, 5.753e-02, 1.480e-01, 1.284e-01, 3.957e-01, -2.684e-01, 2.853e-02, -5.823e-02, -8.184e-02, 1.062e-01, -2.604e-02, -7.579e-02), r);\n\tr = MulAdd(s0_2, M4(-1.753e-01, 5.019e-03, -1.285e-01, 8.470e-02, -2.566e-01, 6.556e-02, -9.751e-02, 7.653e-03, -9.466e-02, 3.098e-02, -9.617e-02, -4.826e-02, 3.951e-02, -5.446e-02, 1.297e-01, 1.076e-01), r);\n\tr = MulAdd(s0_3, M4(-7.377e-02, -2.183e-01, 9.806e-02, 1.735e-01, 2.795e-01, 3.730e-01, 1.906e-01, 1.313e-01, 2.115e-01, 2.222e-01, 1.880e-01, 2.427e-01, -1.177e-01, 2.587e-02, -1.928e-01, -1.489e-01), r);\n\tr = MulAdd(s0_4, M4(-3.487e-01, -3.194e-01, 7.963e-01, -1.044e-01, 3.136e-01, -5.467e-02, 5.059e-01, -4.801e-02, -4.943e-01, -1.466e-01, -5.938e-02, -9.473e-01, 2.661e-01, -1.545e-01, 1.986e-01, -2.172e-02), r);\n\tr = MulAdd(s0_5, M4(-3.450e-01, 1.931e-01, -2.303e-01, -1.880e-01, -1.323e-01, 1.839e-01, -1.130e-01, -5.181e-02, 3.049e-02, 9.834e-02, -1.342e-01, -1.072e-01, 1.925e-02, -9.652e-02, 1.169e-01, 2.084e-01), r);\n\tr = MulAdd(s0_6, M4(1.543e-02, 2.202e-01, 4.809e-02, 1.085e-01, 3.076e-02, -4.127e-01, 4.606e-02, 9.444e-02, 7.886e-02, -1.314e-01, -1.638e-02, 4.353e-02, 9.790e-02, -6.783e-02, -1.008e-01, -1.558e-01), r);\n\tr = MulAdd(s0_7, M4(-4.453e-02, 3.133e-01, -2.217e-01, -5.271e-02, -2.055e-01, -1.000e-01, 8.374e-02, 6.141e-02, 2.147e-02, -3.844e-01, -2.203e-01, -1.105e-01, -3.596e-02, 2.026e-01, 3.174e-01, 1.519e-01), r);\n\tr = MulAdd(s0_8, M4(-5.107e-03, 2.380e-01, 2.147e-02, -8.032e-02, -9.743e-02, 6.943e-02, 9.403e-02, 3.742e-02, -1.822e-02, -4.950e-02, 7.963e-02, -1.338e-01, -1.491e-01, 1.655e-02, -5.817e-02, 1.164e-01), r);\n\tr = MulAdd(s1_0, M4(8.679e-02, -7.335e-02, -5.999e-02, -4.504e-02, -3.329e-02, 4.349e-03, -4.883e-02, 3.159e-02, -7.948e-02, 3.308e-02, 6.579e-02, 1.607e-01, 1.336e-01, -1.042e-01, -2.368e-01, -1.546e-01), r);\n\tr = MulAdd(s1_1, M4(2.764e-01, -6.665e-02, 1.661e-02, -4.103e-02, 1.095e-01, -1.159e-01, -1.142e-01, -1.412e-01, 4.033e-01, -8.697e-02, 2.387e-01, 1.762e-01, 4.948e-01, -1.533e-01, 7.816e-02, 5.700e-02), r);\n\tr = MulAdd(s1_2, M4(1.187e-01, -6.571e-02, 4.698e-02, 4.931e-02, -5.523e-02, 3.925e-02, -7.453e-02, -8.429e-02, -2.202e-01, 6.090e-02, -1.460e-01, 2.777e-02, 4.405e-01, 6.445e-03, 3.494e-01, 3.311e-01), r);\n\tr = MulAdd(s1_3, M4(-4.333e-02, -8.517e-02, 1.372e-01, 2.066e-01, 4.728e-01, 1.195e-01, -2.627e-01, -2.280e-01, 1.606e-01, 2.216e-01, 2.269e-01, 3.505e-01, -2.499e-01, -3.977e-01, -3.659e-02, 1.460e-02), r);\n\tr = MulAdd(s1_4, M4(-4.640e-01, -7.221e-01, -2.524e-01, -6.513e-01, 6.699e-01, -1.727e-01, 4.444e-01, -3.115e-01, -6.748e-01, 1.063e-01, 6.487e-01, -3.195e-01, -5.136e-01, -8.272e-01, 4.014e-01, 4.914e-01), r);\n\tr = MulAdd(s1_5, M4(-1.112e-03, -1.293e-02, 1.567e-02, -1.266e-01, 1.185e-01, 4.940e-02, -9.925e-02, -1.034e-01, -1.041e-01, 1.822e-01, -4.277e-02, 1.313e-01, -6.459e-01, -1.562e-01, -3.961e-01, -7.262e-02), r);\n\tr = MulAdd(s1_6, M4(1.499e-02, 3.135e-01, 2.187e-01, 2.386e-01, 1.171e-01, -4.899e-01, -1.987e-01, -1.717e-01, 5.232e-02, -1.984e-01, 9.338e-04, 1.092e-01, 1.545e-01, 4.183e-01, 1.180e-01, 1.102e-01), r);\n\tr = MulAdd(s1_7, M4(-1.411e-01, 2.619e-01, -2.549e-01, -2.113e-01, -1.109e-01, -3.038e-01, 7.579e-02, -3.585e-02, -1.373e-03, -2.713e-01, -5.527e-02, 7.052e-02, -1.648e-01, 7.324e-01, 3.974e-01, 2.306e-01), r);\n\tr = MulAdd(s1_8, M4(-1.861e-02, 9.414e-02, -6.739e-02, -8.921e-02, -2.337e-02, -2.657e-02, -3.376e-03, -7.209e-02, -1.042e-01, -2.504e-02, 1.287e-01, -1.459e-02, -1.617e-01, 2.384e-01, -6.969e-01, -3.760e-01), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -4.349e-03, -3.760e-03, 4.684e-03, 4.745e-03 };\n\tr = MulAdd(s0_0, M4(1.869e-01, 8.774e-02, -6.451e-02, 6.682e-02, 8.374e-02, 1.313e-02, -2.649e-02, 2.741e-02, -3.609e-02, -9.330e-02, -8.233e-02, 1.117e-01, -1.203e-01, 1.719e-02, 1.288e-01, -9.851e-02), r);\n\tr = MulAdd(s0_1, M4(3.100e-01, 5.063e-02, 1.169e-01, -3.828e-02, 3.428e-01, 4.869e-02, -1.232e-02, -1.003e-02, 2.756e-01, 3.916e-01, 1.450e-01, 1.078e-01, -2.568e-01, -2.157e-01, -1.057e-01, -1.338e-01), r);\n\tr = MulAdd(s0_2, M4(1.199e-01, -1.890e-01, 5.870e-03, -5.995e-03, 2.255e-01, -2.325e-03, 7.916e-03, -2.038e-02, 1.353e-01, -9.590e-02, -2.119e-02, -5.860e-02, -7.698e-02, -3.608e-02, -3.571e-02, 2.010e-02), r);\n\tr = MulAdd(s0_3, M4(9.889e-02, -2.665e-02, -2.627e-01, 3.583e-01, 7.891e-02, 8.737e-02, 5.322e-02, 5.246e-04, -5.188e-02, -8.491e-02, -4.991e-02, -3.735e-02, 5.711e-02, 4.482e-02, 5.660e-02, -1.322e-01), r);\n\tr = MulAdd(s0_4, M4(-5.488e-01, 2.898e-01, 1.046e+00, 6.036e-01, -3.180e-01, -6.309e-01, -2.627e-01, 1.734e-01, -2.067e-01, 3.775e-02, -2.881e-01, -9.242e-02, 3.369e-01, 2.554e-02, -1.645e-01, 4.973e-01), r);\n\tr = MulAdd(s0_5, M4(6.976e-03, -1.830e-01, 2.842e-01, 2.570e-02, -2.902e-01, 5.059e-01, 1.944e-01, 1.794e-02, -1.333e-01, 2.341e-01, 4.161e-01, -5.179e-02, 8.176e-02, -2.435e-02, -1.598e-02, 6.211e-02), r);\n\tr = MulAdd(s0_6, M4(-2.668e-02, -6.958e-02, -5.015e-02, 8.035e-02, 4.451e-02, -1.290e-03, -7.688e-02, 1.708e-01, -5.133e-02, -2.768e-02, -1.780e-02, -6.317e-02, -9.692e-03, -2.748e-03, 9.070e-03, -1.314e-01), r);\n\tr = MulAdd(s0_7, M4(1.402e-01, 4.997e-02, -4.973e-02, 6.839e-01, 2.079e-02, -2.511e-02, 3.403e-01, -3.077e-01, -2.831e-02, 4.816e-02, -9.142e-02, -8.176e-02, -2.999e-02, -5.749e-03, -5.579e-02, -2.355e-01), r);\n\tr = MulAdd(s0_8, M4(-1.783e-02, -2.882e-02, 9.841e-02, 4.473e-02, 4.128e-02, -3.071e-02, -2.378e-01, 1.347e-01, -2.285e-02, 1.317e-02, -1.632e-02, 1.058e-01, -3.696e-02, -6.864e-03, -8.989e-02, -7.315e-02), r);\n\tr = MulAdd(s1_0, M4(8.857e-02, 3.169e-02, -1.896e-02, 1.258e-02, 7.086e-02, 5.699e-02, 1.550e-02, -1.836e-02, 1.209e-01, 5.334e-02, -1.557e-02, -2.374e-02, -1.411e-02, 1.543e-02, 1.769e-02, -4.332e-02), r);\n\tr = MulAdd(s1_1, M4(1.199e-01, -8.203e-03, -1.695e-02, -3.214e-02, 5.918e-01, 3.458e-01, 7.684e-02, -5.137e-01, 2.827e-01, -2.008e-02, -1.848e-01, 2.147e-01, 7.212e-02, -3.906e-03, -2.220e-01, -1.918e-01), r);\n\tr = MulAdd(s1_2, M4(4.464e-02, 4.035e-02, 4.265e-03, 1.350e-02, -4.623e-01, -1.882e-01, 9.929e-02, -2.295e-01, 2.010e-01, 6.059e-01, 3.648e-01, -1.670e-02, -6.763e-02, -2.588e-01, -1.741e-01, 3.358e-02), r);\n\tr = MulAdd(s1_3, M4(1.003e-01, -2.961e-02, -1.715e-01, 1.057e-01, 3.275e-03, 1.877e-02, -4.995e-02, 1.181e-01, 3.600e-02, 2.101e-02, -1.050e-01, 8.035e-02, -8.107e-02, -1.067e-01, -5.457e-02, 5.339e-02), r);\n\tr = MulAdd(s1_4, M4(3.875e-01, 3.638e-01, 1.178e-01, -4.404e-02, 6.128e-02, -1.193e-01, -3.161e-01, 3.510e-01, -3.482e-02, -2.842e-01, -3.917e-01, 4.525e-01, 1.969e-01, 5.299e-01, 4.720e-01, -2.266e-01), r);\n\tr = MulAdd(s1_5, M4(-1.420e-02, 2.325e-02, -8.697e-02, -4.296e-03, 8.697e-02, 7.490e-02, 1.773e-01, 4.010e-01, 2.380e-01, -1.182e-01, 9.121e-01, 2.252e-01, 1.348e-01, -7.448e-02, -8.496e-01, -3.335e-01), r);\n\tr = MulAdd(s1_6, M4(-7.923e-02, -2.533e-02, -4.896e-02, -5.473e-02, -5.329e-03, 1.285e-02, -1.763e-02, 7.009e-02, 9.670e-04, -1.889e-02, -1.008e-01, 1.149e-01, 7.259e-03, 4.080e-02, 1.042e-01, -2.627e-01), r);\n\tr = MulAdd(s1_7, M4(-9.746e-02, 6.679e-02, -1.421e-01, -2.202e-01, -9.918e-03, -2.413e-02, -1.554e-02, 7.011e-03, -3.226e-02, -3.024e-02, -5.431e-02, 7.446e-02, 5.860e-02, 2.851e-02, -2.367e-01, 2.562e-02), r);\n\tr = MulAdd(s1_8, M4(-4.627e-02, 4.226e-02, -8.654e-02, -3.312e-02, 1.600e-02, 2.983e-02, 8.834e-03, -3.871e-02, -4.137e-03, 1.767e-02, 2.492e-02, -5.391e-02, 8.133e-03, 1.430e-02, -2.428e-02, -1.132e-01), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 5\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t1\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 7.204e-05, -6.226e-05, 2.867e-04, -3.251e-05 };\n\tr = MulAdd(s0_0, M4(-4.783e-03, 7.235e-03, -7.275e-03, -2.802e-03, 4.921e-02, 7.543e-02, -3.357e-02, 1.213e-02, 2.900e-02, 2.380e-03, -9.028e-03, -2.594e-02, 1.576e-03, 3.334e-04, -2.460e-02, -1.285e-02), r);\n\tr = MulAdd(s0_1, M4(4.582e-02, 9.378e-04, 2.217e-02, 5.083e-02, -1.054e-02, 8.518e-02, -1.884e-02, -5.149e-02, 1.983e-02, -1.106e-02, -4.317e-03, 5.384e-02, -5.193e-02, 1.089e-02, -9.384e-03, 3.137e-02), r);\n\tr = MulAdd(s0_2, M4(-5.241e-03, 3.821e-02, -1.136e-02, -3.033e-02, 3.186e-02, -3.270e-03, 1.422e-02, 2.401e-02, -1.360e-02, 1.024e-01, -6.042e-02, -2.325e-02, -1.248e-01, -1.377e-01, 1.654e-02, -1.347e-02), r);\n\tr = MulAdd(s0_3, M4(-3.552e-02, -3.211e-02, -2.282e-03, 1.775e-02, 1.360e-01, 2.808e-02, 1.082e-01, -1.311e-02, -1.699e-02, -2.628e-02, 3.430e-02, -3.880e-03, 2.514e-02, -3.171e-02, 4.675e-02, -2.711e-02), r);\n\tr = MulAdd(s0_4, M4(4.756e-01, 2.686e-01, 4.514e-02, -8.813e-02, 2.636e-01, -4.893e-01, 1.301e-01, 1.304e-01, 3.778e-01, 2.765e-01, 3.369e-01, 8.811e-02, 5.080e-02, 2.783e-01, -1.131e-01, 2.487e-01), r);\n\tr = MulAdd(s0_5, M4(-2.961e-02, 7.757e-02, -8.471e-02, -4.636e-02, -6.862e-02, 1.733e-01, -7.301e-02, -1.408e-02, 1.636e-02, 9.982e-02, 5.704e-02, 2.568e-01, -2.224e-02, -2.588e-01, -2.202e-01, -4.898e-01), r);\n\tr = MulAdd(s0_6, M4(1.058e-01, -2.810e-02, -2.960e-02, -8.398e-02, -9.106e-02, 6.642e-02, -2.574e-02, 7.841e-02, -1.978e-02, -3.700e-02, -1.504e-02, -3.186e-02, 2.438e-03, 6.191e-03, -1.155e-02, -1.161e-02), r);\n\tr = MulAdd(s0_7, M4(-6.316e-01, -7.748e-02, 8.006e-01, 3.936e-01, 1.300e-01, -1.999e-01, 2.351e-01, -7.485e-01, -7.151e-02, -4.285e-02, -2.277e-02, 2.849e-02, -2.207e-02, -2.585e-02, -2.498e-02, -3.308e-02), r);\n\tr = MulAdd(s0_8, M4(-2.002e-01, -6.934e-01, -1.093e-01, 3.325e-01, -5.778e-02, 2.138e-02, -2.930e-02, 1.794e-01, -3.028e-03, 2.300e-03, 5.845e-03, -1.959e-02, 1.403e-02, 1.565e-02, 1.840e-02, -6.027e-04), r);\n\tr = MulAdd(s1_0, M4(2.228e-02, -8.352e-03, -1.007e-02, -1.911e-02, -1.489e-02, 2.785e-03, -9.190e-03, 5.858e-03, 2.420e-02, -7.701e-03, -2.327e-02, -2.494e-02, -8.526e-03, -2.384e-02, -2.601e-02, -4.833e-02), r);\n\tr = MulAdd(s1_1, M4(5.671e-02, 3.666e-02, 3.309e-02, 1.011e-02, -8.053e-03, 4.673e-02, -5.358e-02, -2.451e-02, 3.779e-01, 5.642e-02, -2.324e-01, -3.499e-02, -3.479e-01, 1.179e-01, -4.630e-02, 1.118e-01), r);\n\tr = MulAdd(s1_2, M4(-1.650e-02, 6.203e-04, -1.322e-02, -1.996e-02, 2.118e-02, -9.244e-03, 2.813e-02, 9.773e-03, -2.654e-02, -8.373e-02, 6.663e-04, -6.860e-02, -3.436e-02, -7.207e-01, 2.389e-01, 1.903e-01), r);\n\tr = MulAdd(s1_3, M4(-8.045e-02, -2.073e-02, 3.380e-02, 1.327e-02, 1.247e-01, 1.129e-02, 6.421e-02, -8.326e-03, -4.675e-02, 4.920e-02, -3.699e-02, 4.601e-02, 3.389e-02, -4.151e-02, 3.012e-02, -2.241e-02), r);\n\tr = MulAdd(s1_4, M4(5.223e-01, 1.394e-01, 1.222e-01, -7.687e-03, -3.115e-01, 3.989e-02, -1.679e-01, 2.607e-01, 4.393e-01, -1.821e-01, 1.006e+00, -2.920e-01, 8.062e-02, 2.231e-01, -1.282e-02, 2.495e-01), r);\n\tr = MulAdd(s1_5, M4(-1.146e-01, 6.738e-02, -1.655e-02, 1.178e-02, -3.058e-02, 1.093e-01, 9.367e-03, 1.382e-02, -7.397e-02, 2.300e-01, -4.202e-02, 1.765e-01, -4.671e-02, -1.375e-02, -3.662e-01, -5.254e-01), r);\n\tr = MulAdd(s1_6, M4(5.090e-02, 8.633e-03, -1.128e-02, -3.186e-02, -6.263e-02, 4.143e-02, -2.214e-02, 5.270e-02, -1.370e-02, -1.692e-02, -2.644e-02, -9.847e-03, -2.147e-03, -7.941e-03, -1.323e-04, -5.173e-03), r);\n\tr = MulAdd(s1_7, M4(-9.353e-02, 6.696e-02, 2.744e-01, 2.743e-01, 9.809e-02, -1.439e-01, -2.583e-02, -3.717e-01, -5.135e-02, -1.889e-02, -1.775e-02, 9.383e-03, -2.496e-02, -2.936e-02, -2.578e-02, -1.586e-02), r);\n\tr = MulAdd(s1_8, M4(-1.565e-02, -1.635e-01, -1.800e-01, -2.607e-01, 1.975e-02, 1.594e-02, -4.568e-02, 1.218e-01, -6.668e-03, 7.923e-03, -4.625e-02, 1.324e-02, -6.838e-03, 2.045e-02, 1.141e-02, 2.717e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-4x16C-NVL-DN.hlsl",
    "content": "// CuNNy 4x16C BILINEAR RGB NVL DN - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-DN-D16N04\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t7;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) (dot(MF3(1.716e-01, 3.403e-01, 7.642e-02), O(INPUT, float2(x, y)).rgb) + MF(-3.175e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -1.870e-03, 2.595e-02, 1.016e-02, -2.176e-06 };\n\tr = mad(s0_0, V4(1.961e-02, -2.468e-02, -6.114e-02, -2.802e-01), r);\n\tr = mad(s0_1, V4(1.970e-01, -1.878e-01, -2.297e-01, -3.432e-01), r);\n\tr = mad(s0_2, V4(2.960e-01, -8.674e-02, -2.113e-03, 9.338e-03), r);\n\tr = mad(s0_3, V4(-3.926e-02, -7.021e-02, -5.343e-03, 1.575e-01), r);\n\tr = mad(s0_4, V4(-1.290e-01, 9.192e-02, 5.665e-03, 3.820e-01), r);\n\tr = mad(s0_5, V4(3.069e-02, -3.926e-02, 8.457e-03, 6.161e-02), r);\n\tr = mad(s0_6, V4(-1.308e-02, -7.427e-02, 8.740e-02, 3.248e-02), r);\n\tr = mad(s0_7, V4(-2.776e-01, 1.103e-01, 2.417e-01, -9.734e-03), r);\n\tr = mad(s0_8, V4(-9.002e-02, -2.320e-01, -4.780e-02, -1.075e-02), r);\n\treturn r;\n}\n\nV4 f1(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 2.045e-02, 1.725e-04, 6.812e-02, 7.844e-03 };\n\tr = mad(s0_0, V4(8.902e-03, 5.085e-03, 1.299e-01, 3.149e-02), r);\n\tr = mad(s0_1, V4(-5.949e-02, -8.876e-02, -4.402e-02, 1.477e-01), r);\n\tr = mad(s0_2, V4(2.232e-01, 5.137e-01, 1.173e-03, 2.469e-01), r);\n\tr = mad(s0_3, V4(-3.289e-03, -3.042e-02, 1.745e-01, -5.937e-02), r);\n\tr = mad(s0_4, V4(-2.485e-02, -4.547e-01, 1.545e-02, -1.043e-01), r);\n\tr = mad(s0_5, V4(-3.966e-02, 5.600e-02, -4.284e-03, 1.237e-02), r);\n\tr = mad(s0_6, V4(-2.038e-02, 2.123e-02, -2.101e-02, -8.507e-02), r);\n\tr = mad(s0_7, V4(-6.178e-03, -9.692e-03, -1.255e-02, -1.780e-01), r);\n\tr = mad(s0_8, V4(5.415e-03, -1.418e-02, 8.939e-04, -8.693e-03), r);\n\treturn r;\n}\n\nV4 f2(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -1.500e-04, 7.524e-03, 1.305e-02, -1.741e-03 };\n\tr = mad(s0_0, V4(8.013e-02, 2.823e-02, 4.626e-02, -3.119e-02), r);\n\tr = mad(s0_1, V4(1.225e-01, -7.935e-02, 2.124e-01, 9.123e-03), r);\n\tr = mad(s0_2, V4(-1.392e-01, 1.348e-02, 8.561e-03, 1.242e-02), r);\n\tr = mad(s0_3, V4(-3.970e-01, -3.109e-01, -1.089e-02, -5.265e-01), r);\n\tr = mad(s0_4, V4(1.932e-01, -8.691e-02, -2.152e-01, 5.156e-01), r);\n\tr = mad(s0_5, V4(1.372e-01, 7.844e-02, -2.459e-02, -1.269e-03), r);\n\tr = mad(s0_6, V4(3.331e-01, -2.012e-02, 3.449e-03, -1.190e-02), r);\n\tr = mad(s0_7, V4(-3.669e-01, 2.920e-01, -1.854e-02, 3.106e-02), r);\n\tr = mad(s0_8, V4(3.676e-02, 8.013e-02, 2.494e-03, 3.553e-03), r);\n\treturn r;\n}\n\nV4 f3(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -1.022e-02, 3.503e-03, 3.744e-03, -1.218e-02 };\n\tr = mad(s0_0, V4(4.077e-01, -2.281e-01, 4.163e-02, 5.385e-02), r);\n\tr = mad(s0_1, V4(-3.682e-01, 1.155e-01, 2.065e-01, -9.950e-02), r);\n\tr = mad(s0_2, V4(-4.125e-02, -6.752e-02, -1.279e-01, 7.053e-02), r);\n\tr = mad(s0_3, V4(1.673e-02, 2.529e-02, -7.845e-03, -9.448e-02), r);\n\tr = mad(s0_4, V4(-3.023e-02, 3.602e-01, 3.584e-02, -1.269e-01), r);\n\tr = mad(s0_5, V4(1.406e-02, -6.005e-02, -2.131e-01, 3.401e-01), r);\n\tr = mad(s0_6, V4(7.944e-03, 2.771e-02, -1.800e-02, 1.497e-02), r);\n\tr = mad(s0_7, V4(-1.022e-02, -1.165e-02, -2.743e-01, -1.461e-01), r);\n\tr = mad(s0_8, V4(-1.086e-03, -1.616e-01, 3.584e-01, -1.958e-02), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.400e-02, -8.304e-02, -1.885e-02, 5.432e-02 };\n\tr = MulAdd(s0_0, M4(6.447e-02, -4.512e-02, 1.159e-01, 1.963e-01, -1.216e-02, -1.953e-01, 2.400e-01, 8.721e-02, -2.607e-01, 5.455e-02, -3.575e-02, 1.853e-01, 1.885e-01, -4.355e-02, 1.744e-01, -1.562e-03), r);\n\tr = MulAdd(s0_1, M4(4.882e-02, 1.756e-01, 2.833e-01, -1.969e-01, -1.609e-01, 1.577e-01, -7.379e-02, 1.040e-03, -9.190e-02, 1.117e-01, -8.452e-02, 6.563e-02, 2.244e-01, -7.622e-02, 2.172e-01, -1.074e-01), r);\n\tr = MulAdd(s0_2, M4(-1.819e-02, 7.914e-02, 5.432e-02, 6.196e-02, -8.671e-02, -1.125e-01, 9.079e-02, -3.972e-02, 2.892e-02, -1.757e-02, -1.603e-01, -2.536e-01, 2.739e-01, -1.412e-01, -6.144e-02, 4.285e-02), r);\n\tr = MulAdd(s0_3, M4(-2.391e-01, -3.949e-02, 5.552e-03, -2.747e-02, 1.515e-01, -1.024e-01, 4.835e-02, -1.596e-01, 1.805e-01, 2.124e-02, 2.138e-01, -1.019e-01, 9.341e-02, -3.100e-02, 6.799e-02, -2.739e-02), r);\n\tr = MulAdd(s0_4, M4(-1.808e-01, -1.196e-02, 1.694e-01, -5.965e-02, 1.045e-01, 3.773e-02, -8.986e-02, -2.565e-02, 8.836e-02, 2.979e-02, 2.807e-02, 2.927e-01, -3.812e-01, -1.014e-01, 2.351e-01, 8.724e-02), r);\n\tr = MulAdd(s0_5, M4(-7.659e-02, -5.995e-02, -2.753e-01, 8.187e-02, -1.846e-02, -5.299e-02, -1.294e-01, -1.318e-01, 1.982e-02, -3.402e-02, 8.883e-02, -9.631e-03, 1.156e-01, -1.266e-01, 9.954e-03, 1.672e-02), r);\n\tr = MulAdd(s0_6, M4(-6.659e-02, -1.459e-02, 4.547e-02, -5.029e-02, -2.629e-02, -7.733e-02, -6.958e-02, 8.358e-02, -6.566e-02, 6.261e-02, -6.624e-02, -4.336e-03, 3.083e-02, -1.137e-01, 7.962e-02, -2.424e-01), r);\n\tr = MulAdd(s0_7, M4(-6.925e-02, 1.048e-02, -5.944e-02, 1.440e-01, 3.892e-02, -8.438e-02, 6.759e-02, 2.478e-02, 6.631e-02, 2.860e-02, -1.101e-01, 7.350e-02, 3.929e-02, -1.212e-01, -1.219e-02, -3.078e-01), r);\n\tr = MulAdd(s0_8, M4(3.271e-02, 8.140e-02, 8.873e-03, 4.885e-02, 4.142e-02, 3.100e-02, 2.806e-03, -1.107e-01, 5.720e-03, -9.362e-03, 7.347e-02, -8.732e-02, 1.013e-01, -3.682e-01, 1.400e-01, 1.890e-01), r);\n\tr = MulAdd(s1_0, M4(2.605e-02, -1.667e-01, 4.084e-02, 3.665e-02, -2.413e-02, -4.308e-02, 5.995e-03, 1.111e-01, 1.305e-01, -9.948e-02, -2.282e-01, 1.164e-01, 1.546e-01, 4.532e-02, -1.307e-02, -4.186e-02), r);\n\tr = MulAdd(s1_1, M4(7.431e-02, -1.396e-01, 5.474e-02, -1.252e-01, -6.404e-02, -5.702e-02, 1.844e-01, 9.455e-02, -9.482e-02, -2.143e-01, 9.576e-02, -1.013e-01, -2.984e-02, 2.306e-01, 5.085e-02, -1.153e-01), r);\n\tr = MulAdd(s1_2, M4(3.424e-03, 1.031e-02, 2.310e-01, -1.411e-01, 2.611e-03, -1.044e-01, -7.948e-03, -6.975e-02, -1.936e-01, -2.695e-01, 4.106e-01, -4.694e-02, -1.517e-03, 6.812e-02, 2.300e-01, 1.107e-01), r);\n\tr = MulAdd(s1_3, M4(1.403e-01, -2.540e-02, -6.241e-02, 2.002e-01, 7.344e-02, -5.668e-02, -1.206e-02, -1.196e-01, 1.709e-01, -2.606e-01, 2.658e-01, -2.613e-01, -1.726e-01, 1.067e-01, 3.272e-02, 2.019e-01), r);\n\tr = MulAdd(s1_4, M4(2.398e-01, 9.349e-02, -9.843e-04, -1.778e-01, -8.231e-02, -1.592e-01, -1.194e-01, 4.598e-02, -2.137e-01, -3.436e-01, 4.551e-01, -9.698e-02, -1.529e-01, 5.136e-01, -4.330e-01, 1.053e+00), r);\n\tr = MulAdd(s1_5, M4(-1.360e-02, -7.805e-02, -1.060e-01, 7.678e-02, 1.654e-02, -9.582e-02, -6.834e-02, -1.780e-01, 5.788e-02, -8.168e-02, -5.377e-01, -1.501e-01, 1.023e-01, 3.892e-01, -4.508e-01, 4.937e-02), r);\n\tr = MulAdd(s1_6, M4(7.759e-02, 6.410e-02, 1.925e-02, 6.902e-03, -5.195e-02, -3.779e-02, -6.816e-02, 1.005e-01, -7.297e-02, -1.634e-01, -7.858e-02, -1.307e-01, -5.741e-02, 1.518e-01, 9.429e-02, 5.891e-03), r);\n\tr = MulAdd(s1_7, M4(8.913e-02, 1.226e-02, -5.255e-04, -1.558e-01, -4.548e-02, 5.190e-02, 9.607e-02, -3.042e-02, -9.908e-02, 4.117e-02, -6.336e-02, -1.498e-01, -1.247e-01, -1.318e-02, 2.337e-01, 2.582e-01), r);\n\tr = MulAdd(s1_8, M4(-9.251e-02, -3.700e-02, -8.219e-02, -2.187e-02, 1.334e-01, -2.552e-02, 5.251e-02, -1.958e-01, 3.978e-02, 6.368e-02, 2.337e-01, 8.484e-02, -2.190e-01, 6.898e-02, -3.112e-02, 1.067e-01), r);\n\tr = MulAdd(s2_0, M4(9.501e-02, -2.914e-02, -2.567e-03, -7.305e-02, -1.666e-01, 5.910e-02, -4.919e-02, 2.893e-01, 1.400e-02, -1.953e-02, 3.783e-02, -3.476e-01, 1.396e-01, -1.791e-01, 6.593e-02, -1.394e-01), r);\n\tr = MulAdd(s2_1, M4(8.148e-02, 1.092e-01, -3.694e-04, 2.426e-02, -3.004e-01, -2.030e-02, -3.628e-02, 6.085e-02, 1.330e-01, 6.845e-02, 1.253e-01, -6.560e-02, -2.402e-02, -1.013e-01, 1.817e-01, 1.867e-01), r);\n\tr = MulAdd(s2_2, M4(-1.819e-02, -1.737e-01, 7.773e-02, 7.842e-02, -1.850e-01, -9.368e-02, 2.441e-02, -4.203e-02, 1.254e-01, -7.443e-03, -2.320e-02, -4.614e-02, 9.496e-02, 2.893e-02, 4.553e-02, -1.310e-01), r);\n\tr = MulAdd(s2_3, M4(-8.195e-02, -9.179e-02, 2.743e-03, -7.567e-02, -2.320e-01, 2.469e-02, -9.990e-02, 2.617e-01, -1.016e-01, 6.323e-02, -1.192e-01, -1.622e-01, 1.867e-01, 3.104e-02, -8.681e-02, 2.721e-01), r);\n\tr = MulAdd(s2_4, M4(6.398e-03, 8.490e-02, -4.636e-02, 1.341e-01, -1.047e-01, 2.959e-01, -5.207e-02, -3.080e-01, -3.247e-02, 6.690e-02, 3.750e-02, -5.048e-02, 1.982e-01, -2.965e-02, -1.335e-01, -1.964e-01), r);\n\tr = MulAdd(s2_5, M4(-4.427e-02, -8.750e-02, -2.997e-03, -7.999e-02, -2.644e-01, -1.020e-01, 2.151e-01, -9.969e-02, 6.641e-03, -7.456e-03, 2.008e-02, 6.420e-02, 2.294e-01, -1.701e-02, 3.415e-02, 1.749e-01), r);\n\tr = MulAdd(s2_6, M4(-5.600e-02, 5.810e-02, 9.523e-02, -3.474e-02, 1.662e-02, -8.134e-02, -6.425e-02, 1.900e-01, -9.887e-02, 1.930e-02, -7.057e-03, 4.022e-03, -1.439e-01, -4.360e-02, -3.308e-02, 1.963e-02), r);\n\tr = MulAdd(s2_7, M4(-5.579e-02, 1.073e-01, -2.163e-03, -2.249e-02, -2.898e-01, 3.912e-02, 3.370e-04, 5.760e-02, -9.889e-02, 5.421e-02, 1.554e-02, 2.053e-02, 2.035e-02, 6.746e-02, 1.007e-02, -1.987e-01), r);\n\tr = MulAdd(s2_8, M4(7.718e-02, 2.845e-02, -2.573e-02, 5.771e-02, -3.623e-01, -1.526e-01, 3.717e-02, -6.208e-02, 6.221e-02, 6.867e-03, 8.471e-02, 4.190e-02, -8.339e-02, -9.281e-02, -1.494e-01, -1.699e-02), r);\n\tr = MulAdd(s3_0, M4(3.535e-02, 2.739e-01, -6.901e-02, -5.246e-02, 1.448e-01, -1.386e-01, -1.050e-02, 3.544e-01, -6.436e-01, -4.722e-01, 4.010e-01, 4.993e-01, 4.557e-02, 8.169e-02, 2.293e-01, -7.771e-02), r);\n\tr = MulAdd(s3_1, M4(-6.334e-03, 2.898e-01, 1.886e-02, 3.163e-01, 2.765e-01, -8.130e-02, -1.764e-01, 8.914e-02, -4.377e-01, -2.356e-02, -1.108e-01, -3.680e-01, -3.435e-02, 1.245e-01, -1.710e-01, -1.407e-01), r);\n\tr = MulAdd(s3_2, M4(-2.790e-02, -3.380e-01, 1.541e-02, 9.081e-04, 9.270e-02, 1.595e-02, -3.041e-02, -6.194e-02, 6.213e-01, 1.921e-01, 2.577e-01, -7.313e-01, -1.798e-01, 5.474e-02, -1.474e-01, 9.967e-02), r);\n\tr = MulAdd(s3_3, M4(1.118e-02, 4.461e-01, 1.895e-01, 2.578e-02, 2.339e-01, -1.504e-01, 7.090e-02, 5.091e-01, 1.061e-01, 5.312e-01, 3.560e-01, 6.841e-01, -3.614e-01, 2.816e-01, -1.585e-02, 1.301e-02), r);\n\tr = MulAdd(s3_4, M4(3.878e-01, 2.609e-01, 3.861e-01, -6.379e-03, 5.563e-01, -3.751e-01, 5.401e-01, -1.423e-01, 4.032e-01, 5.927e-01, 3.945e-01, -2.637e-01, -2.969e-01, -1.072e-01, 5.569e-01, -8.054e-02), r);\n\tr = MulAdd(s3_5, M4(6.107e-01, -3.043e-01, -1.916e-01, -3.358e-02, 1.300e-01, -1.824e-02, -6.283e-02, 5.680e-02, -5.793e-01, 4.155e-01, -4.202e-01, 7.750e-01, -7.841e-02, 2.290e-01, -3.769e-02, 5.627e-02), r);\n\tr = MulAdd(s3_6, M4(-5.899e-01, -1.017e-01, -4.870e-01, -4.643e-01, 3.543e-01, -1.443e-01, -1.256e-02, -1.110e-01, -8.513e-01, -6.722e-02, 1.312e-01, 1.854e-01, -2.233e-01, 3.904e-01, -1.856e-02, -2.336e-01), r);\n\tr = MulAdd(s3_7, M4(2.534e-01, -2.846e-01, -1.823e-01, 2.098e-01, 3.611e-01, -2.704e-02, -3.301e-01, -1.224e-01, -6.436e-02, 3.539e-01, 7.943e-01, -5.205e-01, -2.392e-01, -6.709e-03, -1.596e-01, 1.236e-01), r);\n\tr = MulAdd(s3_8, M4(-5.994e-02, -9.951e-02, 1.625e-01, 1.883e-01, 3.550e-01, -9.783e-02, 2.766e-03, 5.728e-02, -9.677e-01, -1.069e+00, -1.305e+00, 1.258e-01, -1.179e-01, 1.214e-01, 1.990e-01, -2.664e-02), r);\n\tr = MulAdd(s4_0, M4(-3.032e-02, -6.341e-02, 1.955e-01, 1.018e-01, -4.848e-02, 6.057e-02, -3.525e-02, 4.091e-01, 2.563e-02, 1.286e-01, -9.047e-03, -4.433e-02, 4.546e-02, 1.680e-02, -1.427e-01, -1.832e-01), r);\n\tr = MulAdd(s4_1, M4(-2.021e-01, -5.621e-02, 1.996e-01, 1.614e-01, 1.218e-01, 3.792e-02, -2.175e-02, 2.088e-01, -8.895e-03, 1.143e-01, 5.991e-02, -3.941e-03, -1.036e-01, 9.451e-02, -2.531e-01, -6.738e-01), r);\n\tr = MulAdd(s4_2, M4(-1.508e-01, -4.459e-02, 3.929e-01, -4.255e-02, -1.566e-02, -1.802e-02, -1.293e-01, 7.579e-02, 9.496e-02, -3.538e-02, -5.857e-02, 2.837e-02, -4.240e-01, -7.953e-02, -2.042e-01, -1.126e-02), r);\n\tr = MulAdd(s4_3, M4(5.402e-02, 1.244e-01, -1.710e-01, 1.625e-01, 2.407e-01, 6.736e-02, 1.839e-02, 1.246e-01, -9.068e-02, -1.437e-01, -1.721e-01, -3.842e-02, 2.311e-02, -3.309e-02, -2.087e-01, -2.505e-01), r);\n\tr = MulAdd(s4_4, M4(1.210e-01, 2.186e-01, -6.710e-01, 3.244e-01, 9.447e-02, 4.243e-02, 1.338e-01, 6.541e-02, 5.722e-02, 1.866e-01, -1.403e-02, -2.865e-01, -3.433e-01, 1.530e-01, -2.228e-01, -1.079e-01), r);\n\tr = MulAdd(s4_5, M4(1.869e-01, -2.484e-01, -6.551e-02, 1.844e-01, 8.618e-02, 2.156e-01, -1.590e-01, -4.953e-02, -6.444e-02, -2.472e-03, 6.103e-02, 8.334e-02, 1.835e-01, 2.341e-01, -4.364e-01, -5.950e-01), r);\n\tr = MulAdd(s4_6, M4(6.230e-02, -1.515e-01, -1.308e-01, 3.179e-02, -1.954e-02, -1.493e-01, -3.406e-02, 3.548e-02, -1.568e-01, -2.195e-02, 3.112e-02, -5.072e-02, -1.208e-02, -3.167e-02, 7.318e-03, -4.706e-02), r);\n\tr = MulAdd(s4_7, M4(2.234e-01, 2.180e-01, -2.030e-01, 9.332e-02, -1.910e-01, -8.071e-02, 2.195e-02, -1.386e-01, -1.905e-02, -3.062e-02, -9.065e-02, -1.303e-02, 5.781e-02, -5.280e-02, -8.862e-02, -3.476e-01), r);\n\tr = MulAdd(s4_8, M4(5.860e-02, -7.210e-02, -6.373e-02, 1.618e-01, 7.297e-02, -2.267e-01, 7.240e-02, -1.140e-01, 4.987e-03, -4.222e-04, 8.160e-02, 4.866e-02, 1.083e-01, 3.635e-01, -3.079e-01, -3.762e-02), r);\n\tr = MulAdd(s5_0, M4(5.123e-02, 2.424e-02, -1.494e-02, 3.692e-02, -3.079e-01, -4.090e-02, -2.838e-01, -4.183e-01, 1.221e-01, -2.098e-01, 1.794e-01, 1.631e-01, -5.795e-02, -2.088e-04, -4.571e-02, 1.750e-02), r);\n\tr = MulAdd(s5_1, M4(1.982e-01, 6.487e-02, 1.458e-01, -2.131e-01, -3.524e-01, 7.864e-02, -3.447e-01, 4.320e-03, 7.981e-02, 1.825e-01, -3.480e-01, 2.505e-01, 2.295e-01, -2.307e-02, 2.583e-01, 1.639e-01), r);\n\tr = MulAdd(s5_2, M4(-8.136e-02, -5.082e-02, 2.298e-01, -4.061e-01, -2.214e-02, 2.459e-01, 3.081e-01, -6.793e-02, 3.698e-01, -2.927e-01, 1.958e-01, -1.898e-01, 5.514e-01, 3.832e-01, 1.916e-01, 1.643e-01), r);\n\tr = MulAdd(s5_3, M4(-2.190e-01, 6.332e-02, 5.692e-02, 1.172e-01, 2.420e-03, 1.279e-01, 1.332e-01, 1.204e-01, -3.227e-01, -1.628e-01, 4.120e-01, 7.975e-01, 1.591e-01, 1.314e-01, -3.430e-02, 1.888e-01), r);\n\tr = MulAdd(s5_4, M4(-1.219e-03, -3.286e-01, -1.121e-01, 6.413e-02, 1.490e-01, -2.987e-02, 2.308e-01, 1.192e-01, 5.129e-01, -8.246e-01, -3.672e-01, -3.180e-01, 5.412e-02, -2.440e-01, 1.461e-01, 9.319e-01), r);\n\tr = MulAdd(s5_5, M4(1.519e-01, 1.086e-01, -2.430e-01, -1.782e-01, 2.780e-02, -1.388e-01, 1.403e-01, -2.707e-01, -1.823e-01, -7.689e-02, -3.769e-01, 2.586e-02, 4.413e-01, -1.567e-01, -5.041e-01, 3.854e-01), r);\n\tr = MulAdd(s5_6, M4(-1.499e-01, 9.062e-02, 4.797e-02, -4.072e-02, -1.247e-01, 7.550e-02, -7.091e-03, 8.485e-02, 2.935e-01, -2.076e-01, 2.701e-01, 1.064e-01, -2.023e-02, 2.579e-02, -7.142e-02, 2.565e-02), r);\n\tr = MulAdd(s5_7, M4(-1.786e-01, 8.747e-04, 4.484e-01, -1.268e-01, -1.581e-01, 6.147e-05, 6.692e-02, -8.129e-02, -8.691e-01, -3.015e-01, 9.455e-05, 3.964e-01, -3.570e-02, -7.192e-02, 1.507e-01, 9.453e-03), r);\n\tr = MulAdd(s5_8, M4(-1.882e-01, -1.928e-01, -8.102e-02, -1.670e-01, 4.506e-02, -6.630e-02, -4.875e-02, 4.468e-02, 2.512e-01, -5.685e-01, 1.966e-01, -1.942e-02, 1.186e-01, -1.460e-01, 3.551e-01, 1.879e-01), r);\n\tr = MulAdd(s6_0, M4(8.141e-02, -3.845e-02, 7.287e-02, 9.700e-02, 9.438e-02, -7.974e-03, 4.607e-02, -5.128e-02, 2.503e-01, 8.654e-02, -7.195e-02, -9.607e-02, 2.067e-01, 2.189e-01, -2.576e-02, -3.547e-02), r);\n\tr = MulAdd(s6_1, M4(2.699e-01, -1.357e-01, -6.720e-02, 1.940e-01, 2.150e-01, -3.424e-02, 7.872e-02, -1.613e-01, -1.033e-01, 2.954e-01, -1.858e-01, -1.118e-01, 2.068e-01, -1.190e-01, 2.042e-01, 2.835e-01), r);\n\tr = MulAdd(s6_2, M4(2.463e-01, 7.189e-03, -3.181e-02, 7.164e-02, 2.184e-01, 5.321e-02, 4.966e-02, -4.515e-02, -1.937e-01, -1.148e-01, 1.757e-01, 1.013e-01, 2.788e-01, 3.969e-01, -2.966e-01, 9.242e-02), r);\n\tr = MulAdd(s6_3, M4(3.772e-02, -2.783e-01, 1.094e-01, 2.456e-01, 1.855e-02, 1.505e-01, -5.080e-02, -3.030e-01, -4.574e-02, -9.735e-02, -1.553e-01, 6.876e-02, 8.814e-02, 2.232e-01, 6.247e-01, 1.967e-01), r);\n\tr = MulAdd(s6_4, M4(-1.978e-01, -1.439e-01, 4.346e-01, 5.743e-01, -4.299e-02, 4.223e-03, -1.153e-01, 2.788e-01, -3.678e-02, -3.505e-02, 1.128e-01, -1.830e-01, 2.464e-01, -1.722e-02, 5.527e-02, -2.253e-01), r);\n\tr = MulAdd(s6_5, M4(-2.249e-01, 3.839e-01, 4.971e-01, -5.159e-03, 3.196e-01, 8.920e-02, -2.112e-01, 1.966e-01, -6.575e-02, 7.505e-02, 5.945e-02, 5.247e-03, 3.308e-01, 8.299e-02, 5.452e-01, 3.187e-02), r);\n\tr = MulAdd(s6_6, M4(1.012e-01, 1.740e-01, 7.561e-02, 2.773e-01, -4.444e-02, 1.531e-01, -5.408e-02, -8.835e-02, 5.727e-02, -1.559e-01, 1.616e-01, -7.356e-02, -5.860e-02, 3.471e-01, 2.632e-01, 7.234e-02), r);\n\tr = MulAdd(s6_7, M4(5.798e-01, -6.216e-01, 4.944e-01, 3.934e-01, 3.583e-02, -1.304e-01, 2.764e-01, -3.079e-02, 9.659e-03, -2.553e-02, -2.200e-01, -1.916e-02, -9.476e-02, -1.926e-01, 2.034e-01, -1.094e-01), r);\n\tr = MulAdd(s6_8, M4(8.659e-02, 4.910e-01, 9.655e-02, 4.138e-01, 1.551e-01, 1.225e-01, -5.679e-02, 2.525e-01, 1.482e-02, -3.780e-02, 2.543e-04, 2.486e-02, 1.498e-01, 6.908e-03, 1.059e-01, -1.474e-01), r);\n\tr = MulAdd(s7_0, M4(4.399e-02, -4.862e-02, 1.315e-02, 2.402e-02, -2.072e-01, -6.355e-03, 1.287e-01, 6.578e-02, -4.475e-02, 8.972e-02, 4.329e-01, -3.481e-02, 5.967e-02, -1.230e-01, 8.428e-02, 2.964e-02), r);\n\tr = MulAdd(s7_1, M4(3.685e-02, 3.037e-02, 7.514e-02, 6.420e-02, -2.080e-01, -2.264e-01, 2.694e-01, -8.082e-02, -1.052e-01, 3.057e-01, 3.371e-01, -1.912e-01, -1.573e-01, 6.183e-02, 3.040e-01, -5.470e-02), r);\n\tr = MulAdd(s7_2, M4(-6.083e-02, -7.165e-02, 2.446e-02, 1.037e-01, -1.651e-02, -5.348e-02, 1.667e-01, 4.276e-02, 5.923e-02, 9.977e-02, -6.333e-02, 2.133e-02, -1.822e-02, 7.829e-02, 1.517e-01, -2.538e-02), r);\n\tr = MulAdd(s7_3, M4(1.227e-01, 5.079e-02, -9.135e-02, 1.125e-01, 2.348e-01, -2.053e-01, 1.615e-01, 1.555e-01, -3.941e-02, 3.071e-02, -1.090e-01, -9.880e-02, -5.530e-02, 1.262e-01, -3.636e-02, 4.667e-01), r);\n\tr = MulAdd(s7_4, M4(-1.731e-01, 8.569e-03, -2.809e-01, -1.117e-01, -2.717e-01, 2.132e-01, 1.324e-01, 2.141e-01, -9.432e-02, -2.099e-01, 2.085e-01, 1.134e-01, 6.100e-02, -8.023e-02, -3.192e-01, -1.051e-01), r);\n\tr = MulAdd(s7_5, M4(-8.209e-02, 4.550e-02, -1.288e-01, -2.638e-02, 3.431e-02, -5.752e-02, 4.472e-01, -6.426e-02, -2.833e-02, 6.020e-02, -1.754e-01, 3.198e-02, -6.964e-02, -5.407e-02, -1.586e-01, -1.372e-01), r);\n\tr = MulAdd(s7_6, M4(1.140e-01, -5.882e-02, -1.879e-01, -1.477e-01, -2.029e-01, -2.467e-01, 1.996e-01, -2.316e-01, 9.466e-02, -7.990e-02, 1.334e-01, 1.830e-01, 1.063e-01, -9.067e-02, -4.511e-02, 1.682e-01), r);\n\tr = MulAdd(s7_7, M4(-1.825e-01, 6.514e-02, -2.042e-02, 8.116e-02, 4.532e-02, 6.420e-02, -7.849e-02, -1.527e-01, -6.620e-02, -1.242e-02, 9.573e-02, 1.212e-01, 4.090e-02, -5.942e-02, -4.354e-02, -8.863e-03), r);\n\tr = MulAdd(s7_8, M4(-2.034e-02, -1.613e-01, 2.712e-01, -5.498e-01, -2.044e-01, -1.601e-01, 1.976e-01, 1.045e-01, 5.450e-02, 1.137e-02, 1.852e-02, -5.018e-02, 4.689e-02, -3.913e-03, 4.239e-02, -8.641e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.429e-03, 1.297e-02, 9.825e-04, 2.920e-02 };\n\tr = MulAdd(s0_0, M4(1.418e-01, -4.907e-02, -5.833e-02, -2.070e-01, -1.209e-01, -5.461e-02, -5.275e-03, 1.633e-01, 4.137e-02, -2.121e-02, 1.462e-01, -5.782e-03, 1.371e-01, 5.658e-02, -3.937e-02, 1.050e-01), r);\n\tr = MulAdd(s0_1, M4(-9.628e-02, -7.284e-02, -2.083e-02, 1.706e-01, -3.409e-03, -4.350e-02, 1.405e-01, -7.835e-02, -4.200e-03, -1.420e-01, 2.099e-01, -1.840e-01, -1.310e-01, 1.949e-01, -2.656e-01, -1.484e-02), r);\n\tr = MulAdd(s0_2, M4(1.296e-01, 2.711e-02, -3.426e-01, -3.043e-02, 2.776e-03, -1.989e-02, -6.253e-02, -4.567e-02, -4.105e-02, -9.127e-02, 4.685e-02, -2.144e-02, 3.181e-02, 6.371e-03, -3.940e-02, -9.416e-02), r);\n\tr = MulAdd(s0_3, M4(1.723e-01, -6.048e-02, -1.782e-01, -8.933e-01, 1.664e-01, -9.454e-02, -5.299e-02, 1.880e-02, -1.568e-02, 1.427e-01, -1.972e-01, 3.494e-01, -1.890e-01, -1.659e-01, 1.094e-02, -2.885e-01), r);\n\tr = MulAdd(s0_4, M4(1.079e-01, -3.422e-01, -6.410e-02, -1.914e-01, -6.375e-03, -2.001e-01, 1.226e-01, -1.900e-01, -1.069e-01, -2.609e-01, 3.074e-01, 6.818e-02, 3.675e-01, -3.195e-01, 3.132e-01, -3.454e-01), r);\n\tr = MulAdd(s0_5, M4(-7.183e-02, -1.126e-01, 5.538e-02, -2.937e-02, -1.519e-01, 1.925e-02, -4.814e-02, 1.253e-01, -7.361e-02, 1.049e-01, 7.996e-03, 4.405e-02, 2.253e-01, -4.899e-01, -3.483e-01, -6.220e-02), r);\n\tr = MulAdd(s0_6, M4(9.797e-02, -2.673e-01, -2.695e-02, -1.713e-01, -3.551e-02, 1.042e-01, 2.053e-02, 4.270e-02, 9.539e-02, -4.254e-03, -8.561e-02, 3.853e-02, 1.075e-02, -1.115e-01, -3.529e-02, -5.024e-01), r);\n\tr = MulAdd(s0_7, M4(7.233e-02, -1.376e-01, -3.618e-02, -1.990e-01, 1.102e-01, 1.261e-01, 1.678e-02, -1.131e-02, -1.971e-01, 1.376e-01, -1.146e-01, -2.335e-01, -9.289e-02, -5.176e-01, -1.518e-03, -5.518e-01), r);\n\tr = MulAdd(s0_8, M4(2.104e-04, -5.291e-02, 6.975e-02, -1.103e-02, -7.167e-02, 1.589e-01, -1.667e-01, -1.297e-02, 1.497e-01, 9.252e-02, -3.696e-02, 6.041e-03, -1.474e-02, -3.651e-01, 1.605e-01, -3.741e-01), r);\n\tr = MulAdd(s1_0, M4(1.663e-01, 2.512e-01, -1.903e-02, 2.369e-01, 4.960e-04, -1.401e-01, 8.121e-02, 7.009e-02, -1.363e-01, -1.888e-01, -1.621e-02, -4.053e-01, 2.978e-02, -3.047e-02, 4.469e-02, 3.221e-02), r);\n\tr = MulAdd(s1_1, M4(5.846e-03, 3.942e-01, -2.466e-01, 3.845e-02, -1.473e-01, 1.353e-02, 5.121e-02, -8.860e-02, 6.164e-01, -2.217e-01, -1.919e-01, -3.862e-01, -7.604e-02, 1.613e-01, -3.184e-03, 2.655e-02), r);\n\tr = MulAdd(s1_2, M4(9.709e-03, -3.816e-02, 1.620e-01, 1.450e-01, -8.520e-02, -2.075e-02, -2.589e-02, 3.698e-02, 2.418e-01, -2.286e-01, 1.079e-01, -1.842e-01, 1.802e-01, 2.779e-02, 1.030e-01, 1.619e-01), r);\n\tr = MulAdd(s1_3, M4(4.478e-02, 2.673e-01, 1.790e-01, 8.634e-01, 1.264e-01, -1.054e-01, -5.468e-02, 9.383e-02, 5.269e-02, -1.739e-01, 1.309e-01, -4.688e-02, -9.362e-02, 1.972e-01, 3.641e-02, 1.954e-01), r);\n\tr = MulAdd(s1_4, M4(6.388e-02, 3.896e-01, -3.653e-02, 2.251e-01, -2.954e-03, -1.042e-01, 1.853e-01, -4.550e-02, -1.051e-01, 3.389e-01, -4.250e-01, -2.007e-01, -5.688e-01, -1.508e-01, 7.064e-01, 6.004e-02), r);\n\tr = MulAdd(s1_5, M4(-9.950e-02, 5.541e-02, -2.128e-02, -4.875e-02, -1.383e-01, 3.354e-02, -8.311e-02, 6.638e-02, 1.227e-01, -9.693e-02, -2.800e-01, -1.541e-01, -1.614e-01, 1.966e-01, -7.400e-02, 2.437e-01), r);\n\tr = MulAdd(s1_6, M4(-2.248e-01, 1.920e-01, -1.348e-01, 1.644e-01, 7.828e-02, 6.507e-02, -1.169e-01, -2.298e-03, -5.534e-02, -3.319e-02, 8.279e-02, -3.367e-01, 1.957e-02, -9.159e-02, 3.740e-02, 1.285e-01), r);\n\tr = MulAdd(s1_7, M4(-1.554e-01, 2.691e-01, -1.619e-03, 2.286e-01, 1.322e-01, 1.854e-01, 3.022e-02, -1.145e-01, 2.533e-01, -4.843e-02, -1.417e-01, 8.853e-02, 1.967e-01, 1.184e-01, 1.316e-01, 1.815e-01), r);\n\tr = MulAdd(s1_8, M4(-4.295e-02, 6.376e-02, -3.526e-02, -9.822e-03, -9.027e-02, 1.269e-01, -1.316e-01, -4.076e-02, 1.872e-01, -2.292e-01, -1.654e-02, -4.104e-02, 4.792e-02, 7.334e-04, 8.095e-02, 2.344e-02), r);\n\tr = MulAdd(s2_0, M4(-1.002e-01, 5.501e-02, -9.044e-02, -2.085e-01, 2.396e-01, 9.810e-03, 1.250e-01, -8.117e-02, -8.548e-02, 1.014e-01, 5.014e-03, 4.902e-02, -4.588e-02, -6.699e-02, 5.775e-02, 4.000e-02), r);\n\tr = MulAdd(s2_1, M4(4.693e-02, -1.771e-02, -4.663e-02, 9.740e-03, 2.533e-01, -6.075e-03, 2.745e-01, -1.388e-01, -6.714e-03, 6.294e-02, -1.463e-01, 5.952e-02, 8.493e-03, 1.575e-02, -2.039e-02, -7.066e-02), r);\n\tr = MulAdd(s2_2, M4(2.990e-02, -1.827e-02, 1.280e-01, -4.732e-03, -3.333e-02, 9.852e-02, 6.789e-03, 7.925e-02, 2.172e-01, 1.211e-02, 5.048e-03, -5.788e-03, -1.174e-01, -7.720e-02, 1.081e-01, 2.216e-02), r);\n\tr = MulAdd(s2_3, M4(-3.294e-02, -4.414e-02, 2.925e-02, -2.467e-02, 7.990e-01, 2.652e-01, -6.670e-02, -2.865e-01, -7.467e-02, -7.593e-02, 2.950e-02, 2.605e-02, 1.218e-01, 8.940e-02, 4.734e-02, 1.893e-01), r);\n\tr = MulAdd(s2_4, M4(5.450e-02, -1.838e-02, 4.478e-03, 3.214e-02, 6.661e-01, -4.739e-01, 2.007e-01, -9.035e-03, -9.837e-02, -2.274e-03, -7.101e-02, 8.342e-02, 2.435e-01, 3.271e-01, -4.180e-01, 1.528e-01), r);\n\tr = MulAdd(s2_5, M4(1.515e-01, -5.193e-03, -2.831e-02, -7.512e-03, 3.126e-02, -4.437e-02, 3.982e-02, 3.651e-02, -1.386e-01, 8.916e-03, 3.549e-02, 2.244e-02, -7.115e-02, -5.704e-03, 4.866e-03, -8.916e-02), r);\n\tr = MulAdd(s2_6, M4(1.310e-02, -1.523e-02, 9.267e-02, 4.946e-02, 4.964e-01, 2.664e-02, -6.537e-02, -4.119e-01, -1.304e-01, 3.533e-02, -4.697e-02, -9.565e-02, -1.232e-01, 3.422e-02, 7.040e-02, -3.372e-02), r);\n\tr = MulAdd(s2_7, M4(-1.129e-01, 1.396e-01, 1.748e-01, -1.426e-02, 3.643e-01, -1.541e-01, -7.931e-02, -1.284e-01, 2.232e-02, -4.469e-02, -3.891e-02, -3.585e-02, 5.561e-02, 2.462e-01, 3.234e-02, 2.021e-01), r);\n\tr = MulAdd(s2_8, M4(-1.359e-02, -4.823e-02, -3.557e-02, 2.589e-02, 1.714e-01, 3.752e-04, -8.612e-02, 3.571e-03, 1.894e-02, -5.221e-02, 4.723e-02, -8.858e-02, -9.333e-03, 3.621e-03, 1.998e-02, -5.063e-03), r);\n\tr = MulAdd(s3_0, M4(2.641e-01, 3.315e-01, 4.508e-01, 4.795e-01, -2.357e-01, -8.855e-02, 2.665e-01, -5.523e-02, 1.919e-01, 2.029e-01, -2.329e-01, 1.520e-01, -5.090e-02, -8.241e-02, 1.356e-02, 1.958e-02), r);\n\tr = MulAdd(s3_1, M4(-9.005e-03, -1.667e-01, 3.307e-01, -2.594e-02, -1.753e-01, -3.024e-01, 1.903e-01, -1.350e-01, -4.514e-01, -3.310e-01, -6.884e-01, 3.825e-01, 1.908e-01, -1.299e-01, 8.744e-02, -4.903e-02), r);\n\tr = MulAdd(s3_2, M4(1.283e-01, 2.811e-01, 2.186e-01, -1.949e-01, 2.913e-02, -2.319e-02, -7.935e-02, -1.218e-01, 5.260e-01, 1.168e+00, -3.059e-01, 6.219e-02, -3.941e-02, 8.204e-02, -1.651e-01, -3.590e-02), r);\n\tr = MulAdd(s3_3, M4(-2.824e-01, -2.941e-01, -2.375e-01, 3.744e-01, -1.475e-01, 1.733e-01, 6.679e-01, 1.257e-01, -4.539e-01, 3.346e-01, 7.491e-02, -6.180e-01, 2.857e-01, -1.645e-01, 2.666e-01, -6.673e-01), r);\n\tr = MulAdd(s3_4, M4(-1.184e-01, -2.264e-01, -8.824e-02, 2.530e-04, -1.127e-01, 3.692e-02, -3.473e-01, 1.687e-03, -8.749e-01, -4.262e-01, 2.562e-01, 7.095e-01, -1.857e-01, -3.273e-01, 3.071e-02, -2.807e-01), r);\n\tr = MulAdd(s3_5, M4(-1.840e-01, -1.353e-01, 7.658e-03, -9.348e-02, -1.108e-01, 2.537e-01, 2.278e-01, 7.551e-03, 9.690e-01, 6.814e-01, 6.398e-01, -2.575e-01, 1.214e-01, -3.526e-01, -1.120e-01, -1.305e-01), r);\n\tr = MulAdd(s3_6, M4(4.187e-01, 3.849e-02, -2.515e-01, 3.674e-01, -2.762e-01, 1.309e-01, -1.209e-01, 5.010e-01, 9.787e-02, 2.315e-01, -1.820e-01, -2.462e-01, 1.978e-01, -4.533e-01, 1.127e-04, -1.071e-01), r);\n\tr = MulAdd(s3_7, M4(2.133e-01, -9.526e-02, -6.901e-01, -7.056e-01, -2.181e-01, 2.398e-01, 1.889e-02, 3.611e-01, -1.576e+00, -7.019e-02, -6.407e-01, -2.719e-01, 1.921e-01, 3.341e-02, 1.196e-02, -5.842e-01), r);\n\tr = MulAdd(s3_8, M4(5.534e-01, 1.108e-01, 7.098e-02, -4.399e-01, -1.019e-01, 8.808e-02, 2.568e-02, 2.692e-02, -7.789e-02, 4.973e-01, 1.098e+00, 1.720e-01, 1.772e-01, -2.268e-01, 2.061e-01, 4.719e-02), r);\n\tr = MulAdd(s4_0, M4(1.587e-01, 1.536e-01, -1.577e-01, 2.578e-01, -1.157e-01, -1.004e-01, 2.266e-01, -7.324e-02, 3.054e-02, -6.088e-02, 1.640e-01, -1.862e-02, 1.644e-01, -7.456e-03, -1.357e-01, -6.408e-02), r);\n\tr = MulAdd(s4_1, M4(-1.253e-02, 1.927e-01, -4.527e-01, -3.137e-02, 7.477e-02, -3.825e-01, 2.155e-01, -2.479e-01, -5.870e-02, -1.261e-01, 7.608e-02, 5.194e-02, 2.882e-01, 5.250e-01, -6.071e-01, 2.978e-02), r);\n\tr = MulAdd(s4_2, M4(-1.729e-01, 1.483e-01, -3.575e-02, 2.951e-01, -9.167e-02, -3.164e-01, 5.163e-02, -2.111e-01, -1.754e-02, -8.125e-02, -1.560e-02, 9.648e-02, 4.462e-01, 1.731e-01, -2.170e-01, -6.087e-02), r);\n\tr = MulAdd(s4_3, M4(-1.811e-01, -8.706e-02, 2.581e-02, -5.347e-02, 1.550e-01, 1.538e-01, -4.210e-02, -2.730e-02, 1.282e-02, -1.373e-01, 1.264e-02, 8.382e-03, -2.971e-01, -4.154e-03, -1.343e-01, 9.709e-02), r);\n\tr = MulAdd(s4_4, M4(2.233e-01, -1.945e-01, 1.350e-01, -5.341e-02, 2.933e-01, -9.302e-02, 1.302e-02, 4.402e-02, -9.468e-02, 3.817e-01, -4.733e-01, -6.991e-02, 5.489e-01, -2.329e-01, 3.871e-01, -5.727e-01), r);\n\tr = MulAdd(s4_5, M4(-1.585e-02, -9.024e-02, -9.388e-02, 7.590e-02, 8.037e-02, 8.891e-02, -2.049e-01, 4.058e-02, -2.567e-02, -6.523e-02, 1.244e-01, -9.568e-02, 7.226e-01, -6.335e-01, -1.637e-01, 1.593e-01), r);\n\tr = MulAdd(s4_6, M4(-1.601e-01, 9.097e-02, -2.821e-02, 3.879e-03, -7.961e-02, 6.534e-02, 5.302e-02, 3.970e-03, 2.394e-03, 8.816e-02, 8.474e-02, -1.101e-02, -1.189e-01, -4.395e-02, 9.528e-02, -5.206e-02), r);\n\tr = MulAdd(s4_7, M4(-1.709e-01, -1.114e-01, 5.967e-02, -1.459e-02, 5.295e-02, 7.691e-02, 1.043e-02, 2.034e-01, 1.798e-01, 1.501e-01, 2.531e-03, 5.915e-02, -2.368e-01, -9.150e-05, 1.774e-01, 1.769e-01), r);\n\tr = MulAdd(s4_8, M4(-1.248e-01, 5.240e-02, 3.076e-02, 1.944e-02, -1.145e-01, 9.493e-02, -8.435e-02, -8.691e-02, 1.657e-02, -4.717e-03, -2.467e-02, -3.439e-02, -7.809e-02, -1.662e-01, 4.556e-01, 3.114e-01), r);\n\tr = MulAdd(s5_0, M4(2.135e-01, -5.993e-02, 2.290e-01, 1.518e-01, 3.434e-01, -2.914e-01, 3.053e-02, -5.904e-01, 2.180e-01, 1.652e-01, -2.240e-01, -1.576e-01, -3.795e-02, 8.326e-02, 4.146e-02, -1.860e-01), r);\n\tr = MulAdd(s5_1, M4(-1.012e-01, 4.538e-02, -4.146e-03, -2.427e-02, -6.541e-01, 1.180e-01, 5.420e-02, -1.134e-01, -2.636e-01, -2.055e-01, 2.984e-03, -5.246e-02, -3.146e-01, 3.864e-02, 1.169e-01, 2.068e-01), r);\n\tr = MulAdd(s5_2, M4(1.581e-01, 1.069e-01, -1.180e-01, -4.234e-02, -1.146e-01, -1.985e-01, 1.692e-01, -3.268e-01, -5.819e-02, 3.629e-02, -2.507e-01, -2.992e-01, -1.950e-01, -1.803e-01, 4.073e-01, -5.513e-02), r);\n\tr = MulAdd(s5_3, M4(1.895e-01, -9.019e-02, 3.446e-01, 2.836e-02, 2.208e-01, 6.808e-02, 5.954e-02, -9.321e-02, 1.590e-01, -3.876e-01, 1.642e-01, -6.263e-01, 9.162e-02, 6.038e-02, 4.329e-02, 1.823e-01), r);\n\tr = MulAdd(s5_4, M4(5.040e-02, 2.126e-01, 1.964e-01, -9.975e-04, 1.943e-01, 5.599e-02, -3.350e-02, -3.520e-01, 7.714e-02, -1.129e+00, 2.793e-01, -7.623e-01, 4.531e-02, 1.862e-01, 2.894e-01, 9.525e-02), r);\n\tr = MulAdd(s5_5, M4(5.389e-02, 5.149e-02, -2.258e-02, -8.668e-02, 1.733e-01, 1.634e-02, -1.569e-01, -1.869e-01, 2.677e-01, -5.336e-01, -2.514e-01, -3.674e-01, 1.247e-01, 3.136e-01, -4.908e-01, 1.574e-01), r);\n\tr = MulAdd(s5_6, M4(1.038e-01, -2.041e-02, 2.091e-02, -5.148e-03, 1.047e-01, 8.839e-03, -2.202e-02, 6.192e-02, 4.809e-01, -4.174e-01, 2.981e-01, -7.936e-02, -9.874e-02, -8.878e-02, 1.795e-02, -1.034e-01), r);\n\tr = MulAdd(s5_7, M4(-2.322e-02, -6.292e-02, -1.332e-01, -3.057e-01, -8.255e-02, 6.054e-02, 7.983e-02, -2.289e-01, -2.134e-01, -4.304e-01, -1.994e-01, -6.384e-01, 1.080e-01, -1.530e-02, -1.238e-01, -1.491e-01), r);\n\tr = MulAdd(s5_8, M4(8.246e-02, -5.373e-02, -4.011e-02, 2.231e-02, -4.627e-02, -1.188e-01, -4.430e-02, -9.327e-02, -1.237e-01, -9.078e-02, 1.438e-01, -8.875e-02, -3.324e-02, -2.484e-01, -3.955e-02, 2.300e-02), r);\n\tr = MulAdd(s6_0, M4(1.192e-03, 3.644e-02, -3.324e-02, 5.183e-02, -1.500e-01, 1.644e-01, -1.594e-02, 1.351e-01, 1.059e-02, -1.694e-01, -1.076e-01, -1.518e-01, -7.045e-02, -2.294e-01, -1.497e-01, 7.650e-01), r);\n\tr = MulAdd(s6_1, M4(-5.869e-02, 1.637e-01, 1.052e-01, 5.075e-02, 2.782e-02, 4.687e-02, -2.417e-01, 5.446e-02, 2.118e-01, 5.241e-02, -2.148e-01, -4.308e-02, -7.045e-01, 3.529e-01, -4.069e-01, 3.599e-01), r);\n\tr = MulAdd(s6_2, M4(-2.914e-01, -4.515e-03, 1.882e-01, -5.199e-02, -5.184e-03, 8.319e-02, -5.139e-02, -8.999e-02, -9.549e-02, 2.413e-03, -4.866e-02, 1.453e-01, -2.063e-01, 2.463e-01, 6.671e-02, 6.351e-02), r);\n\tr = MulAdd(s6_3, M4(7.447e-02, -2.294e-03, 1.910e-02, -2.190e-01, -2.705e-01, -5.867e-03, -1.861e-01, 1.657e-01, 1.362e-02, -1.587e-01, 2.105e-01, -1.370e-01, -2.316e-01, 3.930e-02, 5.674e-03, 2.345e-03), r);\n\tr = MulAdd(s6_4, M4(1.365e-02, -5.652e-01, 3.707e-01, -2.277e-01, -1.733e-01, 1.912e-01, 1.706e-01, 1.572e-01, 7.769e-02, -8.719e-02, 1.378e-01, -1.233e-02, -2.064e-01, 3.939e-01, -2.783e-01, 2.233e-01), r);\n\tr = MulAdd(s6_5, M4(-2.941e-01, -9.158e-03, 9.300e-02, -1.640e-01, -1.032e-01, 1.259e-01, 4.342e-02, -3.282e-03, 4.791e-02, -8.513e-03, 1.481e-01, 2.104e-02, 6.097e-02, 2.498e-02, 4.170e-02, -1.108e-01), r);\n\tr = MulAdd(s6_6, M4(3.965e-01, -6.470e-02, 2.955e-01, -5.753e-02, -4.037e-03, -2.916e-02, 8.991e-02, 1.365e-01, -1.050e-01, -2.876e-02, -4.556e-02, -1.204e-01, 2.740e-01, -7.769e-02, -6.419e-02, 7.562e-02), r);\n\tr = MulAdd(s6_7, M4(4.449e-01, 9.539e-02, 4.915e-01, 1.838e-01, -1.030e-01, -1.530e-01, -1.382e-01, 5.573e-03, 2.141e-02, -4.057e-03, 2.855e-02, 2.697e-01, -1.344e-01, 2.599e-01, -8.800e-02, -2.466e-01), r);\n\tr = MulAdd(s6_8, M4(2.154e-03, -2.552e-01, -5.128e-01, 1.831e-02, 1.020e-01, -1.913e-01, 2.779e-01, -2.477e-02, -2.670e-02, 9.595e-02, -3.882e-02, 6.970e-02, -2.032e-01, 4.113e-02, 8.961e-03, 9.796e-02), r);\n\tr = MulAdd(s7_0, M4(9.631e-02, 2.773e-02, 1.361e-02, -6.150e-02, 2.253e-01, 6.211e-02, -1.811e-01, 2.811e-02, -1.038e-01, -9.217e-02, -3.777e-01, 1.273e-01, 1.210e-01, 7.055e-02, 3.595e-02, 5.174e-02), r);\n\tr = MulAdd(s7_1, M4(4.247e-02, 1.466e-02, 3.899e-02, 5.292e-02, 3.122e-01, -3.013e-02, 3.042e-02, 2.134e-01, 2.280e-02, -3.049e-01, -1.718e-01, -6.173e-02, 1.016e-02, 2.278e-02, 3.504e-02, 1.785e-03), r);\n\tr = MulAdd(s7_2, M4(-3.382e-02, 8.445e-02, 9.257e-02, 5.136e-02, 1.694e-01, 7.343e-02, -1.552e-01, 1.099e-01, -1.514e-01, 8.443e-02, 2.600e-01, -2.022e-01, -2.503e-02, 3.217e-03, -2.207e-02, 1.450e-01), r);\n\tr = MulAdd(s7_3, M4(1.311e-02, -6.610e-02, -9.563e-02, 7.953e-02, 1.718e-01, -2.105e-01, 1.410e-02, 7.725e-02, 4.814e-02, -3.939e-02, -1.998e-01, 2.058e-01, 4.837e-02, 1.069e-01, 4.654e-01, -1.726e-01), r);\n\tr = MulAdd(s7_4, M4(-4.907e-02, -4.985e-03, 1.072e-01, 7.100e-02, 8.207e-01, -1.985e-01, 2.636e-02, -2.899e-01, -1.499e-01, 4.449e-01, -2.068e-01, -9.532e-02, 1.470e-01, -1.778e-01, -1.206e-01, -8.091e-02), r);\n\tr = MulAdd(s7_5, M4(-1.207e-01, -6.268e-02, -2.007e-01, -2.291e-02, -3.847e-02, -2.381e-01, 2.108e-01, 7.411e-02, 1.324e-01, 5.207e-02, 2.269e-01, -2.144e-01, 7.696e-02, -3.380e-02, -1.811e-01, 9.073e-03), r);\n\tr = MulAdd(s7_6, M4(-1.933e-01, -3.160e-02, -1.301e-02, 2.390e-02, 3.879e-02, 1.396e-01, -7.546e-03, -2.120e-01, 8.246e-03, 8.081e-02, 3.536e-03, -5.456e-02, -1.409e-01, -7.363e-02, 1.343e-01, -7.728e-02), r);\n\tr = MulAdd(s7_7, M4(6.143e-02, -4.371e-02, -1.936e-01, -1.996e-01, 3.614e-01, -8.935e-02, -1.915e-01, -1.972e-02, 1.197e-01, 1.455e-01, 2.121e-03, -1.250e-01, 5.444e-02, -1.297e-02, -1.260e-01, 6.226e-02), r);\n\tr = MulAdd(s7_8, M4(8.694e-02, 1.276e-01, 5.649e-02, 5.117e-02, 4.046e-02, -1.476e-02, 1.368e-01, -1.461e-01, 9.102e-02, -4.083e-02, -3.203e-02, -1.654e-01, -1.900e-01, -2.258e-03, -7.842e-02, 4.455e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 4.227e-02, -2.005e-02, 4.461e-02, -2.311e-03 };\n\tr = MulAdd(s0_0, M4(6.024e-01, 1.614e-01, 2.969e-02, -9.242e-02, -9.832e-02, -1.728e-01, -2.218e-01, -1.139e-02, -1.441e-01, 7.603e-03, 6.030e-02, -1.796e-01, -3.607e-02, -6.201e-02, 1.123e-02, 9.867e-02), r);\n\tr = MulAdd(s0_1, M4(1.035e-01, 2.519e-01, -1.066e-02, 2.335e-01, 9.790e-02, 7.715e-02, 6.862e-02, -3.410e-02, -1.344e-02, 1.615e-02, -4.114e-02, -1.530e-01, -1.585e-01, 1.480e-01, 3.173e-01, 8.129e-02), r);\n\tr = MulAdd(s0_2, M4(1.971e-02, 2.791e-02, 8.140e-03, -1.451e-01, 4.679e-02, 3.280e-02, 7.822e-03, -9.194e-02, 6.941e-02, -2.800e-02, -1.471e-01, -9.730e-02, -1.746e-01, 1.818e-02, 1.778e-01, -3.595e-02), r);\n\tr = MulAdd(s0_3, M4(1.948e-02, 5.508e-02, -2.931e-02, 1.913e-02, -2.793e-02, 5.774e-02, 1.264e-02, -1.930e-02, 2.701e-01, -5.001e-02, 6.975e-02, 2.101e-01, -1.242e-02, 5.086e-02, 1.624e-01, -1.180e-01), r);\n\tr = MulAdd(s0_4, M4(-1.038e-01, 1.854e-01, 2.881e-01, 1.693e-01, -5.477e-02, -3.241e-02, -1.576e-01, -4.147e-02, -2.655e-01, -6.189e-02, -6.585e-02, 2.051e-02, -2.719e-01, -2.128e-02, -6.742e-02, -1.151e+00), r);\n\tr = MulAdd(s0_5, M4(-8.933e-04, 1.195e-01, 5.673e-02, -8.695e-02, -6.231e-02, 1.636e-01, 5.256e-02, -8.184e-02, 1.224e-01, 1.210e-01, -9.299e-02, -3.799e-02, -2.662e-01, -3.923e-02, 3.441e-01, -4.183e-01), r);\n\tr = MulAdd(s0_6, M4(2.794e-02, 2.201e-01, 6.458e-02, -6.654e-03, 4.686e-02, -8.718e-02, 3.347e-02, 6.941e-02, 1.722e-03, 5.302e-02, 1.548e-02, 7.879e-02, -1.090e-01, -1.296e-01, 1.196e-01, -1.215e-01), r);\n\tr = MulAdd(s0_7, M4(3.276e-01, 4.730e-01, 2.102e-01, -2.684e-02, 6.094e-02, -1.314e-01, -5.663e-02, 1.800e-01, -1.939e-01, 2.985e-02, -1.470e-01, 4.822e-02, -5.254e-01, -1.792e-01, -1.169e-01, 1.054e-01), r);\n\tr = MulAdd(s0_8, M4(1.490e-01, 1.925e-01, 4.673e-03, 9.016e-02, -1.824e-01, 1.178e-01, -7.139e-02, 9.492e-02, -7.642e-02, -1.532e-01, 6.804e-02, -1.857e-02, -2.361e-01, 4.108e-02, 1.072e-01, -6.357e-02), r);\n\tr = MulAdd(s1_0, M4(-3.124e-01, -1.010e-01, 2.682e-02, 9.663e-02, 1.685e-02, 2.384e-02, -1.228e-01, -8.220e-03, 1.251e-01, -8.046e-03, 8.745e-02, -3.563e-01, -1.724e-01, 1.384e-02, -1.248e-01, 1.518e-01), r);\n\tr = MulAdd(s1_1, M4(-2.027e-01, 9.547e-02, -4.659e-03, 2.623e-01, -6.915e-02, 5.698e-02, -1.083e-01, -4.840e-02, 2.208e-01, 1.417e-01, 1.187e-01, -1.917e-01, 2.543e-01, 1.339e-01, 8.921e-02, 3.216e-01), r);\n\tr = MulAdd(s1_2, M4(1.834e-02, -1.707e-03, 1.831e-01, 5.512e-02, -1.295e-02, 9.339e-02, -4.129e-02, -6.925e-02, 3.520e-02, 4.108e-01, 2.608e-01, 2.010e-01, 5.027e-02, 1.602e-01, -9.465e-02, 1.882e-01), r);\n\tr = MulAdd(s1_3, M4(5.955e-02, -2.485e-01, -7.986e-02, -3.319e-02, -1.972e-03, -2.394e-02, 1.219e-01, -5.178e-02, -5.744e-01, 3.955e-01, 1.148e-01, 3.070e-03, 2.324e-01, 9.480e-02, -2.293e-01, 1.773e-01), r);\n\tr = MulAdd(s1_4, M4(-6.757e-02, 1.505e-01, -1.167e-01, -5.043e-02, 8.591e-05, -2.709e-01, -5.627e-02, 5.334e-03, 4.120e-01, -1.987e-01, 4.480e-01, -1.209e-01, 6.104e-01, 2.653e-02, -3.970e-01, -2.835e-01), r);\n\tr = MulAdd(s1_5, M4(4.765e-03, 4.705e-02, 4.717e-02, 8.159e-03, -8.101e-04, 6.611e-02, 5.412e-02, -5.183e-03, -7.808e-02, -3.112e-01, 1.957e-01, 3.155e-01, 8.824e-02, -1.785e-02, -2.577e-01, 2.288e-01), r);\n\tr = MulAdd(s1_6, M4(-8.924e-02, -3.349e-01, -1.986e-01, 8.754e-03, 5.885e-02, 9.169e-02, -1.576e-02, 5.966e-03, 1.663e-02, 1.397e-01, -1.041e-01, -2.549e-02, -1.444e-02, -8.100e-03, -1.193e-01, 7.517e-02), r);\n\tr = MulAdd(s1_7, M4(-1.685e-01, -3.000e-01, -2.483e-01, -1.825e-02, -5.701e-02, -6.274e-02, -1.281e-01, 1.214e-01, 2.599e-01, 2.717e-01, 1.289e-01, 1.857e-02, 9.641e-02, -3.836e-01, -3.064e-02, 1.713e-01), r);\n\tr = MulAdd(s1_8, M4(-4.192e-02, -6.364e-02, 2.977e-02, -8.860e-02, -1.118e-01, 1.485e-02, -7.474e-02, 1.263e-01, 1.917e-01, 2.233e-01, 4.108e-02, -4.125e-02, 3.258e-01, -5.616e-02, -1.479e-01, 1.414e-02), r);\n\tr = MulAdd(s2_0, M4(-1.166e-01, 6.576e-02, -5.141e-02, 2.146e-02, 1.297e-01, -9.262e-02, -2.629e-01, -1.504e-01, 1.028e-02, 1.035e-01, 3.107e-02, 8.578e-02, -5.688e-03, 2.526e-03, 7.956e-02, 8.222e-02), r);\n\tr = MulAdd(s2_1, M4(-2.237e-02, -2.554e-02, -3.804e-02, -9.550e-03, 5.775e-02, -1.148e-01, -5.972e-02, -1.597e-01, -8.328e-03, 8.419e-02, -7.435e-03, 1.412e-01, -2.015e-01, 1.395e-01, 8.639e-02, 2.914e-01), r);\n\tr = MulAdd(s2_2, M4(6.010e-02, 6.698e-02, -9.117e-02, 5.730e-03, 1.754e-01, -4.930e-02, -2.671e-02, 5.044e-02, 4.720e-02, 2.003e-01, 5.494e-04, 1.080e-01, 8.684e-02, 4.576e-02, 8.002e-02, 1.365e-01), r);\n\tr = MulAdd(s2_3, M4(5.108e-02, -2.667e-02, -1.292e-01, -3.799e-02, 1.562e-01, -1.942e-01, -1.129e-01, -4.328e-02, -4.678e-02, 1.000e-02, -2.792e-02, -6.946e-02, -3.776e-02, -2.409e-01, -7.967e-02, -2.662e-01), r);\n\tr = MulAdd(s2_4, M4(6.281e-02, -7.670e-02, -3.073e-02, 2.312e-02, 1.029e-01, 2.886e-01, -1.085e-01, 2.622e-01, 3.088e-02, 2.355e-02, 7.788e-02, 1.948e-02, 9.080e-02, -1.428e-01, -1.498e-01, 1.635e-01), r);\n\tr = MulAdd(s2_5, M4(2.505e-02, 1.141e-01, 5.919e-02, -3.992e-02, 1.990e-01, 8.450e-03, -1.645e-01, 2.123e-02, -3.088e-02, 3.905e-02, -5.922e-02, -5.176e-02, -1.057e-01, 7.104e-02, -9.727e-02, -3.979e-02), r);\n\tr = MulAdd(s2_6, M4(-1.883e-01, -6.903e-02, 1.357e-02, 1.006e-01, 4.127e-02, 6.045e-01, -1.417e-01, 1.510e-01, -1.729e-01, -1.531e-01, -8.601e-02, 1.774e-02, -7.535e-03, 6.714e-04, -9.852e-02, 4.678e-02), r);\n\tr = MulAdd(s2_7, M4(1.303e-03, -1.218e-01, -1.070e-01, -2.185e-02, 3.714e-01, 4.524e-01, 1.029e-01, 1.001e-01, -6.366e-02, -1.359e-01, -1.372e-01, 3.981e-02, -2.002e-02, -6.594e-02, 1.919e-02, -2.447e-02), r);\n\tr = MulAdd(s2_8, M4(-4.613e-02, -5.523e-02, -4.112e-03, -9.545e-02, 2.432e-02, -9.902e-02, -9.300e-02, 2.047e-01, -4.906e-02, -1.037e-01, -6.037e-02, -6.359e-02, -9.715e-02, -5.602e-03, 2.586e-03, -1.759e-01), r);\n\tr = MulAdd(s3_0, M4(3.237e-01, 4.918e-01, -2.668e-01, 1.157e-02, -3.132e-02, -3.390e-02, 1.897e-02, -1.129e-01, -4.634e-01, 5.922e-01, -7.222e-01, 6.022e-01, 2.221e-01, 2.233e-01, -5.005e-02, -4.525e-02), r);\n\tr = MulAdd(s3_1, M4(1.096e-01, 6.729e-01, -1.870e-01, 2.077e-01, -1.609e-01, -7.736e-02, 7.650e-02, -2.442e-01, -2.838e-01, -1.199e-01, -3.359e-01, 1.487e-01, 1.102e-01, 4.324e-02, -7.319e-02, -4.535e-02), r);\n\tr = MulAdd(s3_2, M4(-2.172e-01, 2.894e-01, -1.623e-01, -1.274e-01, -1.549e-01, -5.039e-02, 9.217e-02, -6.576e-02, 3.091e-01, 7.660e-01, 1.150e+00, 1.007e+00, 2.005e-01, 1.174e-01, -2.202e-01, -2.503e-01), r);\n\tr = MulAdd(s3_3, M4(-1.587e-01, -4.409e-01, 7.186e-01, -8.712e-02, -3.360e-01, -1.635e-01, -9.153e-02, -3.941e-02, -1.524e-01, 8.945e-01, -2.371e-01, 6.067e-01, -3.247e-01, 5.680e-02, 1.870e-01, 9.043e-02), r);\n\tr = MulAdd(s3_4, M4(-5.073e-01, 3.782e-01, 1.547e-01, 2.375e-01, -2.941e-01, -2.225e-01, -3.937e-02, 1.585e-01, 6.400e-01, 6.338e-02, 6.255e-01, -9.882e-01, -8.300e-02, 1.964e-01, 2.085e-01, -5.729e-02), r);\n\tr = MulAdd(s3_5, M4(-1.060e-01, -3.881e-01, 1.130e-01, -2.133e-01, -2.131e-01, -5.654e-02, 9.555e-02, 9.273e-02, 3.269e-01, -2.140e-01, 2.201e+00, -4.989e-01, 2.170e-01, 3.391e-01, -1.298e-01, -1.696e-01), r);\n\tr = MulAdd(s3_6, M4(1.210e+00, 1.642e-01, 2.442e-02, 4.690e-01, -3.490e-01, -2.805e-01, 1.715e-01, -6.646e-02, -1.273e-01, 1.969e-01, -8.193e-02, 1.531e-01, -3.637e-01, -4.352e-02, 3.050e-02, 2.056e-01), r);\n\tr = MulAdd(s3_7, M4(3.109e-02, 3.192e-01, 3.558e-01, -7.807e-01, -2.123e-01, -3.377e-02, -6.032e-02, -5.000e-02, -7.944e-01, 4.559e-01, 7.100e-01, -2.139e-01, 1.249e-01, 3.205e-01, 3.829e-01, 8.794e-02), r);\n\tr = MulAdd(s3_8, M4(1.721e-01, -2.141e-02, -5.124e-02, -1.941e-02, -6.881e-02, -1.218e-01, -2.140e-02, -1.477e-02, 2.367e-01, 3.393e-01, 1.307e+00, -9.865e-01, -1.969e-02, -1.983e-02, 1.031e-01, 9.551e-03), r);\n\tr = MulAdd(s4_0, M4(5.793e-03, -2.997e-01, -2.149e-01, 7.801e-02, -5.903e-03, -6.859e-02, 9.974e-04, -2.067e-01, -8.018e-02, 5.507e-02, -5.498e-02, -1.249e-02, 4.331e-02, -7.296e-02, 1.522e-01, 6.020e-02), r);\n\tr = MulAdd(s4_1, M4(-1.126e-03, -2.090e-01, -1.333e-01, 2.479e-01, -6.377e-02, -1.562e-01, 2.477e-02, -4.739e-01, 8.594e-02, -1.862e-02, -1.435e-01, 8.022e-02, -4.041e-01, -2.097e-01, 7.237e-01, 7.145e-01), r);\n\tr = MulAdd(s4_2, M4(4.093e-01, -1.603e-02, -4.302e-02, 1.847e-01, -5.292e-02, -1.715e-02, -4.633e-02, -2.926e-01, 1.107e-02, 1.358e-01, -2.217e-02, 3.609e-02, 3.626e-02, -2.235e-01, 3.172e-01, -2.094e-01), r);\n\tr = MulAdd(s4_3, M4(1.372e-01, -4.963e-02, 3.393e-03, -1.382e-01, -1.840e-01, 2.136e-02, 1.010e-01, 2.007e-01, -1.317e-01, -1.516e-01, 1.125e-01, -3.056e-02, 1.042e-01, -6.974e-02, 6.472e-02, 7.204e-02), r);\n\tr = MulAdd(s4_4, M4(6.797e-02, 5.619e-01, -1.842e-01, -1.167e-01, 1.120e-01, -6.628e-02, -7.528e-02, 1.173e-01, -8.345e-02, 9.310e-03, 2.113e-01, 2.760e-01, -1.062e-01, -2.080e-01, -1.711e-01, -2.247e-01), r);\n\tr = MulAdd(s4_5, M4(1.379e-01, -3.213e-02, -1.093e-01, -1.256e-02, 6.009e-02, 9.502e-02, 7.922e-02, 1.096e-01, -5.342e-02, 2.567e-01, -7.645e-02, -1.566e-01, -4.579e-01, 1.754e-01, 5.527e-01, 4.371e-01), r);\n\tr = MulAdd(s4_6, M4(2.313e-01, -1.434e-01, -2.594e-02, 4.450e-02, -8.749e-02, -4.179e-02, 4.259e-03, 4.061e-03, -7.949e-03, -2.408e-01, -9.617e-03, -3.280e-02, 5.811e-02, 1.831e-02, -2.068e-02, -9.291e-02), r);\n\tr = MulAdd(s4_7, M4(3.050e-01, 1.183e-01, -3.893e-02, 9.341e-02, 2.277e-01, -1.558e-02, 6.117e-02, 3.575e-02, 1.044e-01, 8.139e-02, 5.209e-03, -1.367e-01, 1.577e-01, -3.980e-01, 2.223e-01, -3.205e-02), r);\n\tr = MulAdd(s4_8, M4(8.588e-02, 2.461e-01, 5.215e-04, -7.777e-02, -4.666e-02, 6.132e-02, 5.166e-02, 3.593e-02, 5.295e-02, -6.697e-02, -1.082e-01, 6.431e-02, -2.786e-01, -1.883e-01, -2.140e-01, 6.313e-02), r);\n\tr = MulAdd(s5_0, M4(-1.634e-01, 1.580e-01, -1.498e-01, 1.332e-02, -2.833e-01, 1.933e-02, -1.910e-01, -1.457e-01, -2.154e-01, -1.393e-01, 2.019e-01, 4.654e-02, 5.307e-02, -2.079e-02, -1.021e-01, -6.443e-02), r);\n\tr = MulAdd(s5_1, M4(-1.549e-01, 1.103e-01, -9.549e-02, 1.638e-01, 4.452e-01, 2.824e-02, 8.840e-02, -5.022e-02, 1.916e-02, 6.132e-02, 2.783e-01, -3.927e-01, 1.925e-01, 2.155e-01, -4.751e-03, -6.121e-03), r);\n\tr = MulAdd(s5_2, M4(-1.336e-01, 1.558e-01, 2.160e-01, -8.837e-02, 1.081e-01, 2.939e-01, 1.024e-01, 3.714e-02, -6.304e-01, -4.093e-01, 2.276e-01, 2.333e-01, 1.152e-02, 3.609e-01, -5.508e-01, 3.806e-01), r);\n\tr = MulAdd(s5_3, M4(-2.184e-01, 2.841e-01, 1.092e-01, -2.413e-01, -1.375e-02, 1.723e-01, 2.776e-02, 6.387e-02, 1.073e-01, 1.465e-01, 3.192e-01, -5.573e-01, 3.674e-03, 1.185e-01, 7.853e-03, -1.184e-01), r);\n\tr = MulAdd(s5_4, M4(2.010e-02, 6.965e-02, 4.445e-01, -2.783e-01, 3.320e-01, -6.711e-02, 2.167e-03, -8.034e-02, 3.523e-01, -2.237e-01, 3.191e-01, -8.361e-01, 6.816e-01, 1.419e-02, -2.330e-01, -3.863e-01), r);\n\tr = MulAdd(s5_5, M4(-1.692e-01, -4.727e-02, 1.890e-02, -4.228e-02, -2.228e-01, 1.929e-01, -2.376e-01, 4.520e-02, -1.926e-01, -5.829e-01, 1.372e-01, -6.165e-01, -5.897e-03, 1.233e-01, 9.314e-02, -4.698e-01), r);\n\tr = MulAdd(s5_6, M4(-1.805e-01, -1.371e-01, 6.896e-03, 3.752e-02, -1.036e-01, 3.209e-01, -1.229e-02, -5.416e-02, -2.065e-01, 5.857e-01, 4.271e-01, -2.046e-01, 1.299e-02, 1.409e-01, -6.584e-02, -8.911e-02), r);\n\tr = MulAdd(s5_7, M4(-2.166e-01, -4.869e-01, 3.691e-02, 9.347e-03, -7.123e-02, 7.614e-02, -8.810e-02, 2.679e-02, -3.274e-01, 1.435e-01, 5.891e-01, 2.630e-01, 8.166e-02, -2.710e-03, -1.822e-02, 2.107e-02), r);\n\tr = MulAdd(s5_8, M4(-7.499e-02, -1.186e-01, 2.727e-02, -3.484e-03, -2.397e-01, 6.605e-02, -1.695e-01, 6.389e-02, -2.937e-02, -3.176e-01, 4.547e-01, 2.197e-01, -2.220e-01, -5.530e-02, -5.789e-02, -1.362e-01), r);\n\tr = MulAdd(s6_0, M4(1.284e-01, -5.820e-02, -1.821e-02, -2.132e-02, -1.812e-01, 3.254e-02, -6.980e-02, 4.877e-02, -3.981e-01, -6.346e-03, 1.061e-01, 2.830e-01, -1.488e-01, 2.322e-01, -4.172e-01, 1.401e-01), r);\n\tr = MulAdd(s6_1, M4(1.744e-01, -1.377e-02, 1.247e-01, -9.359e-02, -1.703e-01, -6.018e-02, 3.291e-02, 1.262e-01, -2.660e-01, 3.021e-02, -6.027e-02, 1.319e-01, 1.809e-01, -1.488e-01, -6.257e-01, -7.873e-02), r);\n\tr = MulAdd(s6_2, M4(9.294e-03, -4.738e-02, 2.425e-02, -9.006e-02, -7.711e-02, -1.200e-01, 1.304e-01, 8.477e-02, 5.670e-02, 1.555e-01, -3.501e-02, -8.189e-02, -3.005e-01, -4.845e-02, 1.362e-01, -1.009e-01), r);\n\tr = MulAdd(s6_3, M4(3.859e-02, 7.534e-02, -2.690e-01, -6.434e-02, 2.921e-02, 6.423e-02, -1.309e-01, 2.018e-01, -4.921e-01, 2.839e-01, 1.028e-01, -3.733e-02, 1.341e-01, -7.584e-02, 4.857e-02, -3.187e-01), r);\n\tr = MulAdd(s6_4, M4(2.750e-01, 2.931e-01, -7.052e-01, -5.350e-01, 5.074e-02, -5.417e-02, 1.930e-02, -1.304e-01, 1.098e-01, 8.690e-02, 1.029e-01, 3.523e-02, 5.505e-02, 2.928e-01, -3.176e-01, -5.488e-01), r);\n\tr = MulAdd(s6_5, M4(-1.432e-01, 4.407e-01, -4.435e-01, 6.909e-01, -4.673e-02, 6.270e-02, -5.395e-03, -4.062e-02, 3.409e-02, -2.240e-01, 2.137e-01, -2.802e-02, -7.794e-02, 1.457e-02, -3.355e-02, 3.011e-03), r);\n\tr = MulAdd(s6_6, M4(-1.440e-01, 5.284e-01, 7.095e-02, -3.436e-01, -3.962e-03, -2.807e-02, -1.546e-01, 6.346e-02, -8.007e-03, -6.288e-02, -1.336e-01, -8.172e-02, 6.688e-02, 2.013e-02, 9.883e-02, 6.834e-03), r);\n\tr = MulAdd(s6_7, M4(-7.737e-02, 1.352e-01, -1.823e-02, 1.410e-01, -3.071e-01, 1.073e-01, -1.601e-02, -2.010e-01, 1.849e-01, -1.390e-01, 1.748e-01, 4.664e-02, -2.876e-01, -1.700e-01, -8.310e-02, 6.118e-02), r);\n\tr = MulAdd(s6_8, M4(-2.698e-01, 2.050e-01, -2.982e-01, -4.068e-01, -1.921e-01, -2.708e-02, 9.079e-02, -2.908e-01, 8.824e-02, -1.377e-01, -2.613e-02, 8.476e-02, 2.881e-01, 2.715e-02, 5.938e-02, 4.345e-02), r);\n\tr = MulAdd(s7_0, M4(2.057e-02, 3.372e-02, -8.995e-02, 3.579e-02, 3.542e-01, 7.582e-02, -1.086e-03, -7.511e-02, 2.623e-02, 1.204e-01, -5.686e-02, -6.017e-04, 1.221e-01, -1.064e-02, 1.557e-01, -8.613e-03), r);\n\tr = MulAdd(s7_1, M4(-2.953e-02, -8.286e-02, -9.441e-02, -2.524e-02, 4.550e-01, 2.552e-01, 2.057e-01, 1.977e-01, 1.033e-01, 9.862e-02, 4.592e-02, 5.174e-02, -1.450e-01, -2.149e-02, -2.172e-02, 2.110e-01), r);\n\tr = MulAdd(s7_2, M4(-7.143e-02, -1.142e-01, 2.439e-02, -1.636e-01, 1.959e-01, 8.576e-02, 2.433e-01, -6.556e-02, 1.911e-01, 1.498e-01, -2.678e-02, -7.298e-02, 1.300e-01, -1.324e-01, 2.859e-03, 1.392e-01), r);\n\tr = MulAdd(s7_3, M4(-4.561e-02, 4.549e-02, -1.297e-01, 9.444e-02, -9.785e-02, 2.926e-01, 3.633e-01, 3.022e-02, 3.227e-01, -2.358e-01, 3.198e-01, -1.437e-01, -2.234e-02, -8.447e-02, -7.054e-02, -1.036e-01), r);\n\tr = MulAdd(s7_4, M4(-3.751e-02, -1.283e-01, 1.522e-01, 4.857e-02, 3.744e-01, 5.343e-01, 2.480e-01, -7.117e-02, 5.132e-01, 2.266e-01, -1.138e-01, 3.109e-02, 9.592e-02, 1.364e-02, 4.631e-02, 1.131e-02), r);\n\tr = MulAdd(s7_5, M4(-7.775e-03, -1.390e-01, 1.219e-01, -1.763e-01, 5.525e-01, 1.910e-01, 1.082e-01, 2.706e-01, -5.759e-02, 2.822e-01, 3.152e-02, -2.117e-01, -7.155e-02, -7.768e-02, -1.189e-01, -7.904e-03), r);\n\tr = MulAdd(s7_6, M4(1.032e-01, -1.927e-02, 1.675e-02, -1.546e-02, 1.065e-01, -1.700e-01, 1.457e-01, -1.539e-01, 1.431e-01, -2.567e-02, -4.598e-02, -2.291e-02, -1.475e-01, 2.480e-01, -9.909e-02, 8.509e-04), r);\n\tr = MulAdd(s7_7, M4(3.658e-02, -9.913e-02, 7.420e-02, -6.561e-02, 2.804e-01, 2.319e-01, 3.820e-02, -2.351e-02, 2.700e-01, 2.374e-01, 1.995e-02, -1.508e-01, 1.266e-01, -5.414e-02, 1.113e-01, 1.421e-02), r);\n\tr = MulAdd(s7_8, M4(2.975e-03, -8.924e-02, 7.782e-04, 3.556e-01, 1.857e-01, -1.485e-01, -1.141e-01, -2.377e-02, -3.094e-01, 2.868e-01, -1.138e-01, -1.233e-01, -1.582e-02, 5.449e-02, 8.113e-03, 2.659e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.247e-01, -6.734e-03, 1.475e-01, 4.504e-02 };\n\tr = MulAdd(s0_0, M4(1.261e-01, 1.275e-01, 1.893e-01, -4.490e-02, 3.075e-02, -2.067e-02, 8.184e-02, 6.246e-02, -1.453e-01, -8.347e-02, 1.846e-02, -4.013e-02, 8.788e-02, 7.863e-02, 2.785e-02, -2.049e-02), r);\n\tr = MulAdd(s0_1, M4(5.533e-02, 2.675e-01, 2.347e-01, 1.069e-02, 3.747e-02, 3.292e-02, 1.962e-01, -2.536e-02, 1.213e-01, -6.926e-02, -1.038e-02, 8.587e-02, 1.096e-01, 3.013e-02, -1.298e-01, 1.057e-01), r);\n\tr = MulAdd(s0_2, M4(1.319e-01, -1.151e-01, -9.549e-02, -5.034e-02, 1.870e-02, -6.669e-04, 2.032e-02, 5.385e-02, -1.551e-01, -9.357e-03, 2.673e-02, -2.371e-03, 3.701e-02, 3.333e-02, -1.777e-02, 1.445e-01), r);\n\tr = MulAdd(s0_3, M4(-1.049e-01, -4.468e-01, -2.183e-01, 1.698e-01, 1.613e-01, 1.641e-01, 2.722e-01, -9.911e-02, 3.634e-02, 1.021e-01, 5.158e-02, -9.397e-02, -1.835e-02, 4.337e-02, -3.981e-02, 1.435e-02), r);\n\tr = MulAdd(s0_4, M4(5.649e-02, 1.327e-01, -7.398e-02, 2.571e-01, 1.044e-01, -4.123e-02, -2.703e-03, 1.883e-01, 2.395e-02, -3.654e-02, -6.511e-02, -3.507e-02, 1.353e-01, 7.352e-02, -2.371e-01, 5.515e-01), r);\n\tr = MulAdd(s0_5, M4(-1.566e-01, -2.231e-01, -1.955e-01, 1.308e-01, 7.935e-02, 1.006e-02, 1.399e-01, -1.568e-01, -2.835e-02, 2.378e-01, 4.649e-02, 2.825e-02, 1.614e-01, -1.804e-02, -1.573e-03, 2.541e-01), r);\n\tr = MulAdd(s0_6, M4(-7.541e-03, -2.560e-01, 2.715e-02, 5.328e-02, -3.816e-02, -8.862e-02, 2.168e-01, -1.064e-01, -7.636e-02, 8.903e-02, 7.338e-02, -1.177e-03, 1.478e-01, -1.738e-01, -1.222e-01, 1.096e-01), r);\n\tr = MulAdd(s0_7, M4(-8.512e-02, 1.416e-01, 9.192e-03, 1.923e-01, 1.785e-01, 2.284e-02, 1.032e-01, -1.785e-03, -4.071e-02, -1.462e-01, -5.904e-02, -1.422e-01, -1.056e-01, -2.295e-01, -2.900e-01, 1.496e-01), r);\n\tr = MulAdd(s0_8, M4(-7.149e-02, 2.004e-01, -1.053e-01, 1.203e-01, -6.376e-03, -4.344e-02, 2.072e-01, -1.266e-01, -8.375e-02, -3.221e-02, -1.236e-03, -8.896e-02, -1.123e-01, -2.438e-01, -1.008e-01, 3.596e-01), r);\n\tr = MulAdd(s1_0, M4(-3.661e-02, 7.188e-02, -8.516e-02, 1.255e-01, -2.830e-01, 1.819e-02, 8.893e-02, 1.407e-02, 8.581e-02, -2.465e-01, -2.073e-02, 4.201e-01, -2.264e-02, 2.318e-02, 6.141e-02, -2.330e-02), r);\n\tr = MulAdd(s1_1, M4(-3.989e-02, -2.107e-01, 7.287e-02, 1.096e-01, -2.123e-02, -8.654e-03, 2.330e-01, -5.653e-02, 9.050e-02, -2.271e-02, -3.233e-01, -3.972e-01, -1.002e-01, 8.960e-02, -6.543e-03, -4.752e-02), r);\n\tr = MulAdd(s1_2, M4(-6.677e-03, 4.369e-02, 1.492e-02, -1.174e-01, 8.590e-02, 5.901e-02, 4.269e-02, 7.195e-02, -6.207e-02, 1.069e-01, 1.033e-01, -1.025e-01, -1.156e-01, 5.085e-02, 1.734e-01, -1.801e-01), r);\n\tr = MulAdd(s1_3, M4(-1.858e-02, -1.199e-01, 5.713e-02, -3.361e-02, 1.338e-01, 9.905e-02, 2.074e-01, -5.975e-03, 4.418e-01, -5.371e-01, -1.131e-01, 8.611e-02, -2.646e-01, 2.978e-01, 1.242e-01, 9.650e-02), r);\n\tr = MulAdd(s1_4, M4(-2.745e-01, 2.923e-01, 8.791e-02, -2.121e-01, 2.900e-01, 3.680e-02, 1.520e-01, 1.254e-01, 1.652e-02, 2.902e-01, 2.883e-01, 3.979e-01, -2.851e-01, -5.253e-02, 2.688e-01, -1.871e-02), r);\n\tr = MulAdd(s1_5, M4(-6.374e-02, -2.885e-02, -7.878e-02, -3.370e-02, 3.692e-02, -6.525e-02, 1.714e-01, -9.354e-02, 1.326e-01, -6.534e-02, -6.443e-02, 1.037e-01, -2.664e-01, -9.002e-01, 6.225e-02, -4.174e-01), r);\n\tr = MulAdd(s1_6, M4(3.009e-02, 2.041e-02, -6.071e-02, -9.755e-03, -1.186e-01, -4.602e-02, 2.015e-01, -1.719e-01, -2.484e-02, -3.894e-01, -9.188e-02, 1.068e-01, -1.791e-02, 3.681e-01, 1.223e-01, -2.349e-02), r);\n\tr = MulAdd(s1_7, M4(7.351e-02, 3.737e-03, 1.317e-01, -1.007e-01, 1.540e-01, -1.224e-02, 1.404e-01, -2.308e-02, 3.033e-01, -2.157e-01, 7.529e-02, 4.100e-02, -2.292e-02, 4.977e-02, 2.144e-01, -5.221e-01), r);\n\tr = MulAdd(s1_8, M4(5.573e-02, -1.405e-01, -6.806e-02, 2.158e-02, 1.295e-01, -1.267e-02, 1.694e-01, -5.347e-02, 1.971e-01, 3.000e-01, -1.284e-01, 2.282e-01, 3.039e-02, 1.595e-01, -2.105e-01, -3.446e-01), r);\n\tr = MulAdd(s2_0, M4(2.024e-01, -3.515e-02, -2.489e-03, -2.118e-02, -1.715e-01, -1.940e-01, -6.598e-02, -8.850e-02, -7.708e-02, 5.732e-02, 2.541e-02, -4.510e-02, -2.579e-02, -1.242e-01, 9.859e-02, 1.145e-02), r);\n\tr = MulAdd(s2_1, M4(2.687e-01, -6.414e-02, -4.625e-02, 8.588e-03, 1.435e-02, -1.698e-01, -7.112e-04, -7.204e-02, 1.790e-01, 9.271e-02, 4.105e-02, -5.917e-02, 3.966e-02, -3.604e-02, -5.485e-02, -9.420e-03), r);\n\tr = MulAdd(s2_2, M4(7.422e-02, 7.694e-02, -7.387e-03, -1.102e-02, -2.691e-03, -1.765e-02, 7.516e-02, 4.662e-04, -1.576e-01, 1.058e-01, 2.696e-03, 5.033e-03, -1.272e-01, 3.192e-02, 1.493e-02, 6.949e-07), r);\n\tr = MulAdd(s2_3, M4(2.105e-01, -3.479e-02, 1.751e-02, 2.534e-02, -2.367e-01, -1.494e-01, -2.756e-01, -4.013e-01, -2.370e-02, -1.276e-02, -9.586e-02, 5.129e-03, 7.380e-02, -1.411e-01, -9.599e-02, 5.479e-02), r);\n\tr = MulAdd(s2_4, M4(3.765e-01, 7.629e-02, -9.550e-04, 1.215e-02, -6.660e-02, -2.347e-01, 4.939e-02, -4.931e-01, 2.056e-01, -1.731e-04, -4.735e-02, 2.450e-02, -2.056e-01, 8.265e-02, -5.027e-02, -7.208e-02), r);\n\tr = MulAdd(s2_5, M4(2.828e-03, -1.418e-02, 7.302e-02, 5.425e-03, 8.625e-03, 1.805e-01, -4.860e-02, -1.532e-01, 8.334e-02, -5.988e-02, -1.329e-01, -2.702e-03, 9.095e-03, 1.942e-01, 4.222e-02, -1.058e-03), r);\n\tr = MulAdd(s2_6, M4(8.565e-01, 5.326e-02, 1.705e-02, 5.460e-02, -1.571e-01, -2.404e-01, 9.784e-02, -3.661e-01, -1.714e-01, -4.530e-02, -7.510e-03, -2.285e-01, -4.492e-02, -1.553e-01, 4.557e-02, 2.245e-01), r);\n\tr = MulAdd(s2_7, M4(5.439e-01, -8.800e-02, -7.793e-02, -1.366e-02, 3.674e-02, 4.674e-01, -8.680e-02, -2.205e-01, 4.452e-02, -4.380e-02, 5.358e-02, -1.180e-01, 6.422e-02, 2.963e-01, -1.742e-03, -5.871e-02), r);\n\tr = MulAdd(s2_8, M4(7.783e-02, -2.963e-02, 9.227e-02, -7.006e-02, -1.405e-01, 6.849e-02, 8.228e-03, -6.423e-02, -6.025e-03, 6.067e-03, -8.835e-03, -4.613e-02, -1.066e-01, -2.231e-01, -2.395e-02, -8.309e-02), r);\n\tr = MulAdd(s3_0, M4(5.781e-02, -2.000e-01, 3.001e-01, -4.266e-01, -1.135e-02, -4.194e-03, -1.160e-01, 2.562e-01, -3.129e-01, -4.833e-01, 2.166e-01, -6.893e-01, -5.524e-02, 4.001e-02, 1.344e-01, -7.897e-02), r);\n\tr = MulAdd(s3_1, M4(-1.326e-01, 8.882e-03, -2.982e-01, 1.020e-01, -3.543e-02, 5.500e-02, 1.003e-01, 6.316e-02, -8.846e-02, -9.325e-02, 1.653e-01, 6.537e-01, 1.465e-01, 3.688e-01, 6.048e-02, -1.175e-01), r);\n\tr = MulAdd(s3_2, M4(-2.682e-01, 1.979e-01, 1.594e-01, -1.703e-01, -6.687e-02, 4.401e-02, 1.082e-02, 8.612e-02, -1.097e+00, 2.854e-02, 3.023e-01, 1.011e-01, 2.071e-01, -5.715e-02, -1.160e-02, 1.284e-01), r);\n\tr = MulAdd(s3_3, M4(1.385e-01, 1.462e-02, -6.357e-03, -2.761e-01, -1.417e-02, 7.504e-02, -3.562e-02, 6.311e-01, -3.158e-01, -3.881e-01, -4.738e-02, -1.761e-01, -1.311e-01, -1.783e-01, -6.620e-02, 4.290e-01), r);\n\tr = MulAdd(s3_4, M4(-1.443e-01, -1.535e-02, -1.380e-01, -3.112e-01, -1.150e-01, 1.580e-02, 2.280e-01, 1.955e-02, -5.125e-01, 1.029e+00, -1.082e-01, -4.534e-01, 3.793e-01, -1.121e-01, 1.789e-01, 5.391e-02), r);\n\tr = MulAdd(s3_5, M4(1.708e-01, -2.072e-01, 1.042e-01, 9.238e-02, -1.095e-01, -1.285e-02, -5.910e-03, 3.810e-02, -2.203e+00, 5.042e-01, 1.321e+00, -9.544e-02, 1.855e-01, -2.122e-01, -3.456e-02, 8.827e-02), r);\n\tr = MulAdd(s3_6, M4(-8.513e-01, 1.258e-01, -8.035e-01, 5.733e-01, 5.071e-02, 1.761e-01, 6.746e-02, 5.481e-01, 1.247e-02, -3.302e-01, 5.462e-01, 5.615e-02, -3.885e-03, 1.080e-01, -1.204e-01, -7.939e-02), r);\n\tr = MulAdd(s3_7, M4(-5.870e-01, -4.577e-01, -4.069e-01, 1.490e-01, 2.019e-02, -2.588e-01, 1.686e-01, -1.399e-02, -1.564e-01, 8.066e-01, 1.391e+00, 7.143e-01, -2.593e-02, -2.001e-01, -9.285e-02, -1.235e-01), r);\n\tr = MulAdd(s3_8, M4(7.291e-02, 2.909e-01, -9.548e-02, -2.685e-01, -9.634e-04, -3.878e-04, 1.458e-01, 1.708e-01, -2.020e+00, -1.086e+00, -2.588e-01, -4.462e-01, -1.030e-01, 2.201e-01, 2.603e-02, 1.435e-02), r);\n\tr = MulAdd(s4_0, M4(-1.146e-01, 3.621e-02, -1.112e-01, -1.958e-01, -7.980e-02, 2.275e-01, -2.337e-02, -2.127e-02, -6.880e-02, 3.179e-02, 2.920e-02, -7.738e-02, -1.011e-01, -2.483e-01, 4.229e-02, -2.371e-03), r);\n\tr = MulAdd(s4_1, M4(1.071e-01, -1.620e-01, -1.109e-01, -2.518e-01, -2.020e-01, 1.469e-01, 1.715e-02, -2.811e-01, -6.490e-02, 8.599e-02, -7.551e-03, -8.389e-02, 2.535e-01, -5.084e-01, -2.596e-01, -2.502e-01), r);\n\tr = MulAdd(s4_2, M4(1.108e-01, -1.844e-01, 1.731e-01, -2.074e-01, -1.584e-01, -1.588e-01, 4.427e-02, 4.406e-02, -2.766e-01, 6.326e-02, 1.104e-01, -3.570e-03, 7.484e-02, -2.749e-01, -3.075e-02, 1.215e-02), r);\n\tr = MulAdd(s4_3, M4(-1.798e-02, 5.229e-02, -1.702e-02, 5.724e-02, -9.031e-02, 2.412e-01, -4.968e-02, 2.454e-02, -2.855e-02, -2.255e-01, -2.992e-02, 3.039e-01, -2.892e-03, -4.545e-04, -6.446e-03, -5.023e-01), r);\n\tr = MulAdd(s4_4, M4(6.744e-02, -3.922e-01, -1.469e-01, 3.184e-02, -1.335e-02, -4.252e-01, -1.877e-01, -4.014e-02, 9.306e-02, 1.625e-03, -1.837e-02, -1.705e-01, -1.491e-01, -1.039e-01, -3.117e-01, -4.440e-01), r);\n\tr = MulAdd(s4_5, M4(9.537e-02, -9.820e-02, -1.369e-01, -1.174e-01, 5.395e-02, -3.037e-01, -7.887e-02, -7.200e-02, -2.337e-03, 1.488e-01, 6.189e-02, 9.512e-02, -1.188e-01, 2.278e-01, -1.107e-01, -3.545e-01), r);\n\tr = MulAdd(s4_6, M4(-8.930e-02, 4.310e-02, 6.118e-02, -1.643e-02, -8.316e-02, 5.446e-02, 3.115e-02, 1.496e-01, -1.781e-01, -7.885e-02, 4.587e-02, -1.316e-01, 2.634e-02, 2.030e-02, -1.087e-01, -4.127e-02), r);\n\tr = MulAdd(s4_7, M4(9.015e-02, 2.788e-01, 6.667e-02, 1.200e-01, 1.077e-01, -1.438e-01, 4.557e-02, -4.757e-02, 2.845e-01, 4.945e-02, -7.365e-02, 1.125e-01, -5.808e-02, 2.942e-01, -6.692e-02, 1.674e-01), r);\n\tr = MulAdd(s4_8, M4(1.499e-01, 6.180e-01, 8.160e-02, 9.050e-02, 1.187e-02, 2.776e-01, 2.204e-01, -5.643e-02, -1.233e-01, 2.070e-02, -3.342e-02, -2.091e-01, 4.348e-03, 5.386e-01, 1.921e-01, 2.900e-01), r);\n\tr = MulAdd(s5_0, M4(-2.882e-02, 1.452e-01, -1.705e-02, 2.552e-01, -1.229e-01, -4.764e-01, -2.250e-01, -1.043e-01, 2.435e-02, 6.002e-02, -4.948e-02, -3.049e-01, 8.513e-02, -8.677e-02, -2.205e-02, 3.659e-02), r);\n\tr = MulAdd(s5_1, M4(2.908e-02, 2.192e-01, 3.956e-02, 5.391e-02, 1.977e-01, 3.076e-02, -1.594e-01, 1.171e-01, 1.115e-01, -3.301e-01, -2.461e-03, -7.164e-02, -5.271e-02, 5.961e-01, -7.649e-03, 1.362e-01), r);\n\tr = MulAdd(s5_2, M4(-7.324e-02, -1.870e-01, 1.408e-01, -1.262e-02, 3.113e-01, 1.345e-01, 1.300e-01, -1.704e-01, -4.467e-02, -2.020e-02, -1.222e-01, 2.106e-01, 6.127e-02, 1.340e-01, 1.212e-01, 6.721e-02), r);\n\tr = MulAdd(s5_3, M4(-4.438e-02, 1.089e-01, -1.936e-02, 3.638e-01, -5.397e-03, -1.789e-01, -7.034e-02, 2.115e-01, 2.980e-01, 1.433e-01, -3.109e-01, 5.999e-02, 2.967e-02, 1.040e-01, 8.379e-02, 2.824e-01), r);\n\tr = MulAdd(s5_4, M4(-1.738e-01, -2.783e-02, 1.302e-01, 1.638e-01, 2.230e-01, 3.076e-01, 9.329e-02, 7.890e-02, 3.738e-01, -4.847e-02, 1.343e-01, -4.918e-01, -1.716e-01, 2.760e-01, -2.303e-01, 6.735e-01), r);\n\tr = MulAdd(s5_5, M4(2.113e-02, -6.445e-01, -1.235e-01, -5.110e-02, 1.540e-01, -7.572e-02, 1.704e-01, 1.401e-01, 7.002e-01, 7.781e-01, 4.996e-03, 5.194e-01, 1.068e-01, -6.048e-01, 6.111e-02, 2.408e-02), r);\n\tr = MulAdd(s5_6, M4(-1.330e-01, 8.110e-02, -9.976e-02, -6.708e-02, -5.166e-02, 2.543e-01, -7.829e-03, 8.376e-02, 7.038e-02, -2.733e-01, -1.933e-01, 3.888e-01, 3.742e-02, -3.099e-02, -3.839e-02, -2.899e-02), r);\n\tr = MulAdd(s5_7, M4(4.468e-03, 8.327e-02, -1.232e-02, -2.009e-01, -6.394e-03, -7.117e-02, 8.830e-02, -2.180e-01, -6.541e-01, -1.278e+00, -2.546e-01, -8.400e-01, 3.278e-02, -4.873e-01, 2.989e-02, -2.834e-01), r);\n\tr = MulAdd(s5_8, M4(5.587e-02, 1.196e-01, 6.747e-02, -1.516e-01, 1.226e-01, -3.731e-02, 1.674e-01, -4.205e-03, -3.633e-02, 6.329e-01, 2.203e-01, 3.548e-01, -1.867e-02, -6.607e-02, 1.559e-01, -1.029e-01), r);\n\tr = MulAdd(s6_0, M4(5.776e-02, -4.237e-02, -3.157e-02, -3.967e-02, 5.468e-02, 1.806e-01, 8.435e-02, -4.378e-02, -8.778e-02, -5.004e-02, 1.611e-01, -1.044e-01, -9.836e-02, 1.137e-01, 4.520e-01, 4.521e-01), r);\n\tr = MulAdd(s6_1, M4(1.205e-01, -2.476e-01, -2.943e-02, 2.900e-01, 1.660e-01, 1.942e-01, -3.279e-02, -1.001e-01, 1.873e-01, -5.917e-01, -9.511e-02, 8.591e-02, 2.772e-01, -4.016e-01, -4.060e-02, 4.557e-01), r);\n\tr = MulAdd(s6_2, M4(7.314e-02, 2.591e-01, -5.486e-03, 1.097e-01, 8.268e-03, 2.578e-02, 8.015e-02, -3.003e-02, -1.831e-02, 2.921e-01, 3.462e-02, 4.376e-02, 3.626e-02, -2.226e-01, -2.944e-02, 5.713e-02), r);\n\tr = MulAdd(s6_3, M4(6.148e-02, -1.827e-01, -3.366e-02, -6.681e-02, 4.735e-02, 1.116e-01, -3.804e-02, 1.689e-02, 1.110e-01, -4.969e-01, -1.288e-01, 1.565e-02, 4.991e-02, -7.043e-02, -1.163e-02, 2.936e-01), r);\n\tr = MulAdd(s6_4, M4(-3.330e-01, 7.520e-01, -2.222e-01, 2.143e-01, 8.841e-02, 1.125e-01, -3.049e-02, 1.071e-01, 1.219e-01, 5.266e-01, -1.147e-01, 1.817e-01, -2.865e-01, 4.773e-01, -2.476e-01, -1.749e-01), r);\n\tr = MulAdd(s6_5, M4(-5.390e-02, 1.513e-02, 1.866e-02, -3.879e-02, -1.743e-02, -3.595e-01, 8.142e-02, 1.721e-01, -1.288e-01, 2.899e-02, 1.466e-01, -1.986e-02, 3.972e-01, 3.514e-02, 3.046e-01, 1.597e-01), r);\n\tr = MulAdd(s6_6, M4(1.587e-01, -2.005e-02, 1.181e-01, 6.660e-01, 1.190e-01, -2.422e-02, -8.934e-02, -9.839e-02, -1.263e-01, 1.481e-01, -1.014e-01, -4.174e-02, 4.562e-02, 1.991e-01, 4.164e-02, 1.085e-01), r);\n\tr = MulAdd(s6_7, M4(2.260e-01, 2.539e-01, -4.326e-01, 3.654e-01, 1.095e-02, 1.816e-02, -3.917e-02, -1.604e-01, 6.233e-02, 3.373e-01, -2.174e-02, 1.601e-01, 1.970e-02, -2.403e-01, 8.825e-02, -5.946e-02), r);\n\tr = MulAdd(s6_8, M4(-1.247e-02, -7.207e-01, 3.782e-01, 9.277e-03, -1.601e-01, -1.992e-01, 4.560e-02, 9.246e-02, -5.056e-02, -6.212e-02, 9.100e-02, 2.018e-02, 1.977e-01, -1.284e-01, 3.475e-02, -4.638e-02), r);\n\tr = MulAdd(s7_0, M4(-2.275e-04, 2.430e-02, 2.681e-02, 7.920e-02, -1.901e-03, 8.596e-02, -1.221e-02, -1.267e-01, 1.530e-01, 3.664e-01, 1.657e-01, 7.102e-02, 1.934e-01, -2.876e-02, -6.522e-02, -5.363e-03), r);\n\tr = MulAdd(s7_1, M4(-7.802e-02, -1.425e-01, -4.622e-02, 1.281e-01, 1.430e-01, -2.953e-01, 2.089e-01, -4.956e-02, -1.123e-01, 1.033e-01, 5.525e-02, -1.141e-01, 6.440e-02, 1.535e-01, -6.271e-02, -5.787e-03), r);\n\tr = MulAdd(s7_2, M4(2.966e-01, -2.963e-02, -2.085e-02, 1.250e-02, 1.683e-01, -5.223e-01, 5.280e-02, -1.393e-02, -1.692e-01, 4.296e-02, 8.091e-02, -2.750e-02, -1.376e-01, -1.713e-01, 1.871e-02, -1.477e-01), r);\n\tr = MulAdd(s7_3, M4(-1.420e-01, 6.008e-02, 5.251e-02, -1.548e-01, 1.021e-01, -2.581e-01, -1.735e-02, -9.447e-02, 9.829e-02, 3.613e-01, -7.935e-02, -2.009e-01, -2.036e-01, -1.951e-02, -7.652e-03, 1.836e-01), r);\n\tr = MulAdd(s7_4, M4(-4.783e-02, -2.506e-01, 6.729e-02, 3.130e-02, -3.645e-01, 1.714e-01, -2.112e-01, 1.140e-01, -1.834e-01, -5.257e-01, 1.401e-01, -2.666e-01, -1.429e-01, -3.021e-01, 4.720e-02, -1.594e-02), r);\n\tr = MulAdd(s7_5, M4(9.489e-02, 4.199e-03, 5.857e-03, 2.213e-01, 2.342e-03, 2.767e-01, -1.112e-02, -5.612e-02, -2.421e-01, -1.204e-01, 1.011e-01, -2.542e-02, 7.188e-02, -8.339e-02, 1.519e-01, -2.918e-02), r);\n\tr = MulAdd(s7_6, M4(-4.214e-02, -7.475e-03, 8.229e-04, -1.843e-01, -1.392e-01, -2.375e-01, -1.100e-01, -1.774e-01, 7.883e-02, 3.931e-02, -5.235e-02, -6.999e-02, 9.210e-02, 9.923e-02, -7.138e-02, 3.417e-02), r);\n\tr = MulAdd(s7_7, M4(3.614e-02, -4.942e-03, -5.801e-02, -2.246e-01, -1.091e-01, 2.237e-01, 3.636e-01, -7.534e-02, -3.811e-02, -2.855e-01, 1.454e-01, -1.862e-01, 4.262e-02, 1.475e-01, 3.243e-02, 4.744e-02), r);\n\tr = MulAdd(s7_8, M4(1.115e-01, 3.370e-01, -1.262e-01, -1.915e-01, -1.522e-01, -7.482e-02, 6.731e-02, -7.372e-03, -1.355e-01, -1.548e-01, -1.192e-02, 4.345e-03, 9.265e-02, 9.544e-02, -8.572e-02, -1.153e-01), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.615e-03, -3.608e-04, -7.717e-03, -8.081e-02 };\n\tr = MulAdd(s0_0, M4(6.327e-02, -4.161e-03, -7.095e-02, 8.572e-02, 2.713e-01, -8.915e-02, 1.283e-01, 1.211e-01, 4.276e-02, 1.801e-01, 4.923e-02, 1.689e-01, 4.860e-03, 9.050e-02, 1.170e-01, 2.876e-02), r);\n\tr = MulAdd(s0_1, M4(3.230e-01, 1.148e-02, -8.886e-02, -7.384e-02, -2.449e-01, 1.492e-01, -2.951e-01, 1.323e-01, -1.567e-01, -1.223e-01, -6.559e-02, 1.257e-01, -3.000e-02, -7.952e-02, -4.354e-02, 5.939e-02), r);\n\tr = MulAdd(s0_2, M4(-2.210e-01, -2.521e-02, -1.389e-01, 8.327e-03, 1.671e-01, -8.144e-02, 2.434e-01, 6.808e-02, 7.082e-02, -1.674e-03, -9.994e-02, 1.391e-02, 4.024e-02, 4.371e-01, 1.293e-02, 1.008e-02), r);\n\tr = MulAdd(s0_3, M4(7.365e-02, 1.708e-01, -5.529e-02, 1.132e-01, -2.704e-01, 1.576e-01, 6.757e-01, 2.633e-01, -2.244e-01, -1.270e-01, -1.897e-01, -3.632e-01, 3.384e-01, 1.121e-01, -4.074e-02, -2.217e-02), r);\n\tr = MulAdd(s0_4, M4(1.276e-01, 3.451e-01, 6.513e-01, -1.107e-01, -3.603e-01, 1.250e-01, 1.405e-01, 1.633e-01, -2.302e-01, 3.803e-01, 8.127e-02, 4.307e-02, 1.260e-01, -8.987e-02, 2.313e-01, 1.861e-02), r);\n\tr = MulAdd(s0_5, M4(6.664e-02, 9.814e-02, -2.025e-01, -5.130e-02, 1.402e-01, 2.758e-02, -1.749e-01, 4.557e-02, -6.261e-02, 4.286e-02, 3.171e-02, 3.924e-02, 6.739e-03, 4.048e-01, 3.059e-01, -9.780e-02), r);\n\tr = MulAdd(s0_6, M4(-2.523e-01, 5.620e-02, 1.544e-01, 7.048e-02, 6.348e-02, 1.012e-01, -1.061e-01, -4.494e-02, 2.313e-02, -1.618e-01, -2.614e-01, 2.950e-02, -5.357e-03, -1.370e-01, 4.001e-02, -1.482e-02), r);\n\tr = MulAdd(s0_7, M4(5.214e-02, 3.052e-01, 4.194e-01, -8.665e-02, -9.621e-03, 1.808e-02, 1.415e-01, 3.203e-02, -1.528e-01, 1.688e-01, -1.156e-01, 1.174e-01, 1.449e-01, -2.612e-01, -3.573e-01, -6.727e-03), r);\n\tr = MulAdd(s0_8, M4(1.988e-01, 1.280e-01, -1.995e-02, 4.861e-02, -2.275e-02, -2.332e-01, -3.972e-01, 7.563e-03, -1.249e-01, 5.808e-02, -2.661e-01, 2.108e-02, -1.025e-01, -2.647e-01, 9.820e-02, 1.589e-01), r);\n\tr = MulAdd(s1_0, M4(-8.562e-02, 7.639e-02, 2.790e-02, 4.735e-02, 1.694e-01, 6.082e-02, -1.144e-01, 2.403e-01, -6.880e-02, 1.604e-02, -1.194e-01, 2.735e-02, 9.442e-02, 1.005e-01, 1.251e-01, -9.961e-02), r);\n\tr = MulAdd(s1_1, M4(-5.455e-02, -1.737e-01, -9.332e-02, -6.026e-02, -2.545e-01, 7.186e-02, -1.942e-01, -6.522e-02, 1.620e-01, -1.688e-01, 2.674e-02, 1.777e-02, -3.592e-02, -6.977e-03, 1.704e-01, 4.673e-02), r);\n\tr = MulAdd(s1_2, M4(7.543e-02, 1.294e-01, 1.760e-01, 6.920e-02, 1.324e-01, -3.765e-02, 6.680e-02, 1.844e-01, 3.093e-02, -2.529e-01, -4.490e-02, -7.585e-04, 2.114e-03, -8.864e-03, -5.308e-03, 9.409e-02), r);\n\tr = MulAdd(s1_3, M4(-2.335e-01, 7.110e-02, -3.204e-02, 2.092e-01, -8.619e-02, 1.550e-01, 2.951e-01, -7.618e-02, -8.411e-02, 2.200e-01, -8.623e-02, -2.308e-02, 1.055e-01, -8.905e-02, -6.922e-02, -3.127e-02), r);\n\tr = MulAdd(s1_4, M4(1.158e-01, 1.023e-02, 9.718e-02, -1.151e-01, 6.683e-03, -9.999e-02, -7.944e-02, -3.799e-01, -3.740e-02, 2.614e-01, 2.009e-01, 3.862e-02, -2.460e-01, 4.585e-02, -2.018e-01, 5.815e-02), r);\n\tr = MulAdd(s1_5, M4(5.490e-02, -1.056e-01, -6.731e-02, 5.668e-02, 1.145e-01, 4.128e-02, -3.419e-02, 4.321e-02, 2.014e-01, -8.320e-03, -8.264e-02, -1.081e-02, 2.209e-01, 7.960e-02, -1.285e-02, -1.142e-01), r);\n\tr = MulAdd(s1_6, M4(3.860e-01, 3.242e-01, -4.442e-02, 9.476e-03, -5.421e-02, 7.842e-02, 7.767e-02, 3.662e-02, -5.802e-02, -5.228e-02, -1.865e-02, -1.248e-02, -5.554e-03, -6.500e-03, -1.300e-01, 5.588e-02), r);\n\tr = MulAdd(s1_7, M4(-1.747e-01, -1.868e-02, -2.577e-02, 1.003e-01, -5.426e-02, 6.938e-02, 2.382e-01, 5.263e-02, -7.487e-02, -6.574e-02, 9.440e-02, -1.578e-02, -2.529e-01, -6.164e-02, -1.741e-01, -3.964e-02), r);\n\tr = MulAdd(s1_8, M4(8.963e-02, -3.654e-03, -9.010e-02, 5.938e-02, 2.432e-02, -7.417e-02, -1.305e-01, 1.299e-01, 9.012e-02, -1.098e-01, -7.742e-02, 1.153e-02, -3.196e-01, 8.448e-03, 3.800e-02, -3.158e-04), r);\n\tr = MulAdd(s2_0, M4(1.585e-02, -4.317e-02, -7.029e-02, -1.408e-02, -1.021e-01, -1.469e-01, -6.816e-02, 1.462e-01, 2.180e-01, -1.636e-01, -1.523e-01, -1.271e-01, -3.630e-02, 5.139e-03, 5.684e-02, 1.091e-01), r);\n\tr = MulAdd(s2_1, M4(1.188e-01, 4.941e-02, 1.238e-01, -2.339e-02, 3.207e-01, 1.724e-01, -5.752e-02, 2.132e-03, -1.144e-02, 6.469e-02, -7.387e-02, -2.626e-02, 1.331e-01, 2.901e-01, 1.256e-01, -1.309e-01), r);\n\tr = MulAdd(s2_2, M4(7.347e-02, -6.850e-02, 5.946e-02, -3.748e-02, -9.691e-02, 4.133e-01, -1.619e-01, 2.053e-02, 1.234e-01, -7.837e-02, 3.781e-01, 5.012e-02, 1.324e-01, 1.592e-01, 4.595e-01, 8.679e-02), r);\n\tr = MulAdd(s2_3, M4(-6.365e-02, -1.803e-02, 1.918e-03, -3.813e-02, -2.683e-01, -5.608e-01, -1.542e-02, 1.429e-02, 1.080e-01, -2.332e-01, 1.838e-01, -1.336e-01, -1.502e-01, 5.805e-02, 2.329e-01, 1.809e-02), r);\n\tr = MulAdd(s2_4, M4(1.323e-01, -4.564e-02, 2.595e-04, 2.409e-02, 3.545e-01, 1.530e-01, -6.533e-02, -4.940e-02, 1.852e-01, -7.116e-01, -3.391e-01, 1.780e-01, 3.437e-01, 8.667e-02, 2.948e-01, -1.259e-01), r);\n\tr = MulAdd(s2_5, M4(8.857e-02, -5.210e-02, -7.111e-02, -1.854e-01, 2.610e-01, 2.809e-01, 1.234e-01, -4.128e-02, 2.214e-01, -4.631e-01, 1.295e-01, -3.318e-01, -1.156e-01, 1.898e-01, -4.517e-01, 8.782e-02), r);\n\tr = MulAdd(s2_6, M4(8.610e-02, 2.528e-02, -2.750e-02, -2.833e-02, -2.638e-01, -5.164e-01, -8.466e-02, 9.584e-02, 2.705e-01, 4.046e-02, 4.747e-03, 1.428e-01, -1.552e-01, -1.916e-01, -1.442e-01, -6.089e-02), r);\n\tr = MulAdd(s2_7, M4(-2.071e-01, -3.368e-02, -1.481e-01, -1.713e-02, 1.977e-01, 2.827e-01, 3.648e-01, 1.130e-01, 6.445e-01, -3.686e-01, -3.002e-01, -1.252e-01, 1.120e-01, -4.683e-02, 2.805e-01, -7.061e-02), r);\n\tr = MulAdd(s2_8, M4(3.741e-02, -9.474e-03, 7.240e-02, 1.201e-02, 9.436e-02, 1.156e-01, -8.933e-02, 1.423e-01, 2.941e-01, -1.259e-01, 2.881e-02, -8.421e-02, 7.420e-02, 3.754e-02, -2.140e-01, -3.572e-02), r);\n\tr = MulAdd(s3_0, M4(-1.187e-01, 6.031e-02, -3.228e-02, -3.443e-02, 6.831e-02, 1.834e-01, 6.940e-02, 6.946e-02, -1.477e-01, -4.231e-02, -1.754e-01, -4.200e-02, -8.707e-02, 2.923e-03, -6.957e-02, 7.741e-02), r);\n\tr = MulAdd(s3_1, M4(3.398e-02, 9.156e-02, 4.898e-02, -4.594e-03, 1.062e-01, 1.513e-01, 8.946e-02, -7.440e-02, -3.083e-02, -4.001e-02, -1.423e-01, 6.950e-02, 7.627e-02, -1.463e-01, 1.154e-02, -4.211e-02), r);\n\tr = MulAdd(s3_2, M4(-1.576e-01, 3.827e-01, 2.089e-02, 1.329e-01, 5.788e-02, 6.723e-02, -8.173e-03, 1.822e-02, 5.617e-02, 3.804e-02, 7.445e-03, 9.113e-02, -2.647e-01, -1.568e-01, -1.883e-02, 9.578e-02), r);\n\tr = MulAdd(s3_3, M4(3.644e-02, 2.846e-01, 1.637e-01, 2.092e-02, -2.495e-01, -8.316e-02, 6.982e-02, -5.121e-02, -1.906e-01, 5.269e-02, -3.513e-02, -8.395e-02, -1.062e-01, -3.967e-02, 4.036e-02, 4.684e-02), r);\n\tr = MulAdd(s3_4, M4(4.960e-01, 3.997e-01, 4.401e-02, -1.968e-04, 1.716e-01, 2.557e-01, 2.948e-01, -9.129e-02, -2.818e-02, -1.504e-01, 6.695e-02, 1.177e-01, -2.574e-02, -1.026e-01, 1.391e-01, 2.191e-03), r);\n\tr = MulAdd(s3_5, M4(2.392e-02, 5.665e-01, 2.468e-02, 1.034e-03, 8.954e-02, 1.568e-01, -2.749e-02, -1.099e-01, 7.728e-02, 2.235e-01, 1.992e-01, 9.381e-03, -5.173e-02, -2.759e-02, -2.518e-01, 1.953e-02), r);\n\tr = MulAdd(s3_6, M4(-2.692e-01, -1.146e-01, 1.086e-01, -3.173e-02, 2.293e-03, 8.060e-02, -3.199e-01, 1.096e-01, -1.890e-01, 1.366e-01, 4.567e-02, 7.226e-02, 3.653e-02, 2.276e-02, 4.357e-02, -1.038e-02), r);\n\tr = MulAdd(s3_7, M4(1.461e-01, 3.255e-01, 1.605e-01, -3.955e-02, 3.326e-02, -1.174e-01, 3.523e-01, 9.180e-02, -6.552e-02, 1.428e-01, 1.248e-01, -2.213e-02, -1.386e-01, -5.679e-02, -1.679e-01, -6.844e-02), r);\n\tr = MulAdd(s3_8, M4(2.182e-01, 9.706e-02, 8.389e-02, 3.322e-02, 2.416e-02, 6.132e-02, 6.103e-02, -1.857e-03, 1.241e-01, 2.562e-01, 1.088e-01, -1.497e-02, 1.795e-02, -2.255e-02, -1.364e-01, 2.330e-02), r);\n\tr = MulAdd(s4_0, M4(-1.897e-01, 3.918e-03, 2.127e-02, -3.432e-02, -6.214e-02, -4.871e-02, 2.735e-01, -5.989e-02, 2.061e-01, -2.198e-02, 1.275e-01, -1.477e-04, 9.195e-02, -9.152e-02, -1.392e-01, -6.532e-02), r);\n\tr = MulAdd(s4_1, M4(3.915e-01, 4.246e-02, 2.639e-01, -7.523e-02, 1.005e-01, -1.055e-01, 3.850e-01, -2.673e-01, 3.600e-03, 7.291e-02, -3.459e-02, 8.809e-02, -1.028e-01, -5.200e-02, -2.047e-01, -1.948e-02), r);\n\tr = MulAdd(s4_2, M4(-1.083e-01, -7.279e-03, -2.331e-01, 2.004e-02, -2.114e-01, -2.466e-02, -8.172e-02, -7.143e-02, 4.624e-02, -4.669e-02, -2.231e-02, -9.357e-02, -5.481e-02, -1.953e-02, 4.750e-02, -1.478e-02), r);\n\tr = MulAdd(s4_3, M4(-6.179e-02, 6.193e-03, -1.727e-01, -7.010e-02, -3.048e-01, 4.445e-02, -1.026e-01, 9.666e-02, 4.053e-02, -6.707e-02, 2.172e-01, 5.937e-02, 3.824e-02, 1.248e-01, -1.294e-01, -6.955e-02), r);\n\tr = MulAdd(s4_4, M4(-2.312e-02, -1.556e-01, 1.048e-01, -1.411e-02, 1.620e-01, 3.157e-01, 2.627e-01, 1.063e-01, -1.202e-01, 2.224e-01, 4.503e-01, 5.285e-02, 1.987e-01, 3.739e-01, 2.998e-01, -2.872e-02), r);\n\tr = MulAdd(s4_5, M4(2.167e-01, 2.060e-02, 1.937e-01, -2.236e-02, -8.763e-02, 9.011e-03, 2.259e-02, -8.353e-03, -2.376e-03, -1.644e-01, -1.076e-01, 7.411e-02, -9.956e-02, -3.235e-02, -9.366e-02, 6.449e-02), r);\n\tr = MulAdd(s4_6, M4(4.405e-02, 4.167e-02, 1.097e-01, 7.252e-02, -2.906e-03, 1.321e-02, -1.755e-01, -5.058e-02, -6.062e-02, 1.258e-01, 3.338e-02, 7.420e-03, 1.128e-01, 9.513e-02, 2.138e-01, 5.929e-02), r);\n\tr = MulAdd(s4_7, M4(-7.551e-02, -2.955e-02, -5.810e-02, 6.246e-02, -3.637e-02, 5.806e-02, 9.447e-02, -1.058e-02, -4.137e-02, -3.802e-02, 1.992e-01, 6.407e-02, 7.304e-02, -8.740e-03, -9.634e-02, 3.922e-02), r);\n\tr = MulAdd(s4_8, M4(1.127e-01, -2.911e-02, 9.664e-02, 5.907e-02, 3.276e-02, 2.230e-02, -6.320e-02, -5.340e-02, -1.120e-01, 8.211e-02, -1.139e-02, -1.026e-01, -4.230e-01, 9.882e-02, -1.533e-01, -7.614e-03), r);\n\tr = MulAdd(s5_0, M4(3.628e-02, -1.154e-01, -9.059e-02, 8.894e-02, 1.600e-01, -1.455e-01, 2.762e-01, 8.866e-02, 8.908e-02, -1.244e-01, 6.007e-03, -6.604e-03, -1.643e-02, -1.979e-01, -3.706e-02, -4.506e-02), r);\n\tr = MulAdd(s5_1, M4(-3.384e-02, 6.505e-02, -1.242e-01, 6.364e-02, 6.078e-02, 2.186e-01, -2.541e-02, -1.192e-01, -2.079e-01, -1.322e-02, 7.614e-02, 8.697e-02, -1.462e-01, -1.954e-01, -2.591e-02, 6.293e-03), r);\n\tr = MulAdd(s5_2, M4(8.138e-02, -2.241e-03, 1.985e-01, 9.739e-02, -1.941e-01, -1.051e-01, -1.806e-01, -9.988e-03, 3.914e-02, 1.884e-01, 5.192e-03, 9.964e-02, -4.189e-02, 7.034e-02, -3.800e-02, -3.726e-02), r);\n\tr = MulAdd(s5_3, M4(-1.779e-02, -6.324e-02, -2.182e-01, 1.308e-02, -9.059e-03, -1.412e-01, 7.894e-02, 9.893e-02, 1.928e-01, -2.165e-01, 1.406e-01, 6.054e-02, -1.174e-01, 2.001e-01, 4.642e-02, -6.890e-02), r);\n\tr = MulAdd(s5_4, M4(3.239e-01, -1.116e-01, -1.082e-01, -1.656e-01, 3.001e-01, 2.518e-01, 2.099e-01, 2.291e-01, -2.275e-01, 1.730e-01, 1.631e-01, 2.516e-01, -1.181e-01, -3.579e-01, -2.563e-01, -1.597e-01), r);\n\tr = MulAdd(s5_5, M4(3.881e-02, 4.573e-03, 9.434e-02, 7.049e-02, 2.350e-02, -1.397e-01, -3.036e-01, 5.881e-03, 1.452e-02, -3.329e-01, -3.474e-01, 1.116e-01, -1.395e-01, -3.177e-01, 1.819e-02, 8.131e-02), r);\n\tr = MulAdd(s5_6, M4(-9.471e-02, -2.972e-03, 7.773e-02, 9.366e-02, 4.038e-02, -1.017e-01, -1.674e-01, 1.358e-02, -1.484e-01, -6.491e-02, 1.528e-01, 2.826e-02, -4.188e-02, 5.348e-03, -1.330e-01, 6.659e-02), r);\n\tr = MulAdd(s5_7, M4(-6.946e-02, 1.261e-02, 5.539e-03, 1.232e-01, -3.141e-02, -4.053e-02, -7.442e-02, 4.680e-02, -2.723e-03, 7.596e-02, 1.265e-01, 1.786e-01, -3.848e-01, 4.192e-02, 1.359e-01, 6.009e-01), r);\n\tr = MulAdd(s5_8, M4(8.002e-02, -8.406e-02, -1.795e-01, 5.072e-02, -3.172e-02, -9.015e-03, -9.026e-03, -2.030e-02, 1.183e-01, 1.129e-01, 7.920e-04, 6.145e-02, 6.649e-02, 1.501e-01, 1.855e-01, 1.570e-01), r);\n\tr = MulAdd(s6_0, M4(-9.948e-02, -3.819e-01, -3.683e-01, 1.272e-01, -1.245e-01, 5.014e-02, 2.566e-03, 1.791e-02, -2.544e-02, -1.346e-02, 9.671e-02, -1.296e-01, -1.373e-01, -1.413e-01, -1.511e-01, 5.454e-02), r);\n\tr = MulAdd(s6_1, M4(1.689e-01, 1.160e-01, -3.101e-01, 2.190e-01, 1.594e-02, 1.233e-01, 7.174e-02, 1.163e-01, -3.987e-02, -6.442e-02, 2.028e-02, 2.604e-01, 2.538e-01, -6.826e-03, -8.698e-02, 2.701e-03), r);\n\tr = MulAdd(s6_2, M4(-3.038e-01, -3.873e-02, -3.611e-01, 2.083e-01, 8.210e-03, 2.875e-01, 2.235e-01, -9.963e-03, 2.046e-01, 8.798e-02, 6.654e-02, -8.716e-02, 1.516e-03, 1.959e-01, -1.237e-01, -6.952e-02), r);\n\tr = MulAdd(s6_3, M4(-1.227e-01, -3.209e-01, 4.159e-01, -1.595e-01, 1.925e-01, -6.211e-02, -1.687e-01, -2.715e-02, -2.856e-02, 1.477e-01, 1.866e-01, -1.047e-01, -3.563e-01, -2.639e-02, -1.135e-01, -2.952e-02), r);\n\tr = MulAdd(s6_4, M4(-6.050e-02, 2.194e-03, 5.951e-01, -6.900e-01, 2.066e-01, -3.367e-02, -1.890e-01, 3.375e-02, 9.062e-02, -4.336e-03, -2.486e-01, 4.065e-02, -2.189e-01, 3.577e-01, 4.976e-01, -4.142e-02), r);\n\tr = MulAdd(s6_5, M4(-8.950e-02, -9.476e-02, -5.042e-01, 1.305e-01, -2.734e-01, -6.901e-02, -8.919e-02, 1.665e-02, -1.636e-01, -1.991e-01, -8.216e-02, -4.933e-02, 3.207e-01, 2.510e-01, 4.275e-01, 1.801e-02), r);\n\tr = MulAdd(s6_6, M4(6.011e-02, -3.569e-02, -1.104e-01, 1.611e-01, 6.707e-02, 7.508e-02, 1.801e-01, 4.667e-02, -3.339e-02, 4.987e-02, 3.933e-02, -1.535e-01, -1.190e-01, -9.312e-02, -1.689e-01, -7.907e-02), r);\n\tr = MulAdd(s6_7, M4(5.741e-02, -3.315e-01, -1.535e-02, 2.660e-02, 1.870e-01, 1.909e-01, -1.146e-01, 1.900e-02, -2.739e-02, 9.114e-02, 1.117e-01, 2.496e-01, 2.605e-02, -1.141e-01, 1.132e-01, 8.098e-02), r);\n\tr = MulAdd(s6_8, M4(1.431e-01, -5.832e-02, -2.409e-01, 8.434e-02, -4.826e-02, 1.786e-03, 2.087e-02, 3.139e-02, 1.958e-02, 1.201e-02, -4.888e-02, -4.389e-03, -6.186e-02, 5.031e-02, -2.338e-01, 7.370e-03), r);\n\tr = MulAdd(s7_0, M4(-2.819e-02, 4.830e-02, -1.123e-01, -2.288e-02, -2.261e-01, -3.548e-02, 6.272e-03, -1.159e-01, -1.028e-01, 2.509e-01, 3.823e-01, -3.339e-01, -1.939e-03, 6.241e-02, 1.383e-01, 5.818e-02), r);\n\tr = MulAdd(s7_1, M4(3.128e-01, 1.791e-01, 1.683e-01, 3.046e-02, 2.142e-01, -1.121e-01, 1.690e-01, 4.042e-02, 2.893e-01, -2.183e-01, -1.629e-02, -3.933e-01, 2.875e-01, -6.478e-02, 4.908e-02, -3.129e-02), r);\n\tr = MulAdd(s7_2, M4(-4.698e-02, 1.046e-01, -5.359e-02, 1.036e-01, 1.937e-01, 8.666e-02, 9.641e-02, -9.856e-02, 1.051e-01, -8.032e-02, 1.118e-01, -3.495e-01, 1.361e-01, -7.262e-02, -1.698e-02, 1.504e-02), r);\n\tr = MulAdd(s7_3, M4(1.390e-01, -1.189e-01, 4.071e-02, -6.657e-02, 7.152e-02, 4.180e-02, -2.413e-01, -5.912e-02, -1.159e-01, 7.575e-02, 2.380e-02, -3.793e-01, -2.213e-02, -7.473e-02, 1.470e-01, -4.935e-03), r);\n\tr = MulAdd(s7_4, M4(-1.537e-01, -4.603e-02, 1.730e-01, -8.155e-02, -1.529e-01, -2.781e-01, -2.626e-01, -3.020e-02, -9.334e-02, -3.587e-02, -3.223e-01, -3.744e-01, -1.472e-01, -2.700e-01, 1.532e-01, -4.350e-02), r);\n\tr = MulAdd(s7_5, M4(1.005e-01, -1.657e-01, -1.212e-01, -6.836e-03, 3.816e-02, 1.726e-02, 5.315e-02, -6.332e-02, -1.666e-01, -8.853e-02, 2.522e-01, -3.005e-01, 1.110e-01, 4.975e-02, 1.238e-01, 1.633e-02), r);\n\tr = MulAdd(s7_6, M4(2.830e-03, -3.752e-02, 1.024e-01, 1.412e-02, 2.369e-02, -8.427e-02, -1.137e-01, -5.829e-02, 7.208e-02, 2.210e-01, 1.495e-01, -2.120e-01, 1.816e-01, -9.071e-02, 8.602e-02, -7.145e-02), r);\n\tr = MulAdd(s7_7, M4(-7.057e-02, -2.065e-02, -9.396e-02, 2.313e-02, 2.014e-02, 2.292e-02, -1.276e-01, -7.497e-02, 2.522e-01, 2.429e-01, -2.176e-01, -3.563e-01, 2.477e-01, -1.382e-01, -1.759e-01, 1.100e-01), r);\n\tr = MulAdd(s7_8, M4(-6.531e-02, 7.056e-02, -3.217e-02, 6.280e-02, -1.141e-01, 5.571e-02, -2.464e-02, -6.609e-02, -2.009e-01, 1.591e-01, -4.558e-02, -2.204e-01, -1.367e-01, -1.187e-01, -2.091e-01, 8.745e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.495e-02, -2.023e-02, 2.264e-02, -1.147e-02 };\n\tr = MulAdd(s0_0, M4(-1.536e-01, 2.193e-02, -9.375e-02, -4.897e-02, 1.054e-01, -3.643e-02, 1.441e-01, 1.123e-01, -7.945e-02, 4.298e-02, 7.503e-02, 1.980e-01, 1.347e-01, -3.603e-01, -7.707e-02, -1.264e-01), r);\n\tr = MulAdd(s0_1, M4(-3.196e-02, -3.222e-02, 4.719e-02, 2.527e-03, 1.524e-01, 3.143e-02, -1.850e-02, 4.592e-02, -1.449e-01, -6.270e-02, -1.521e-01, -2.693e-02, 3.581e-02, -8.189e-02, 1.889e-01, -1.276e-01), r);\n\tr = MulAdd(s0_2, M4(-3.966e-02, 6.965e-02, -1.673e-01, -1.664e-03, 1.432e-01, -4.040e-03, 2.888e-01, 1.322e-01, -1.117e-01, 9.460e-02, 3.472e-02, -2.666e-01, 3.271e-02, 4.691e-02, 1.412e-01, 3.633e-01), r);\n\tr = MulAdd(s0_3, M4(3.393e-01, -8.829e-02, 1.219e-01, -2.154e-02, 5.591e-02, -2.134e-02, -2.328e-01, 7.491e-02, 3.801e-02, -2.387e-01, 4.726e-02, -8.321e-02, 1.396e-02, 1.148e-01, 6.694e-02, -4.088e-02), r);\n\tr = MulAdd(s0_4, M4(1.191e-01, 1.926e-01, 1.550e-01, 1.086e-01, -2.196e-01, 7.820e-02, -1.490e-01, -2.558e-01, -5.860e-02, -8.136e-02, -6.774e-03, -5.233e-02, -1.020e-01, 1.495e-01, -2.110e-01, -1.891e-01), r);\n\tr = MulAdd(s0_5, M4(1.661e-03, 8.923e-03, 3.049e-02, -1.079e-01, 1.894e-02, -1.517e-01, -3.742e-02, 1.854e-02, -6.763e-02, -1.833e-01, 5.647e-02, -7.094e-02, -2.422e-03, 2.143e-01, 5.749e-01, -2.184e-01), r);\n\tr = MulAdd(s0_6, M4(-6.715e-03, 1.537e-01, 4.878e-02, 3.618e-03, -1.182e-01, -4.082e-02, 7.658e-02, 5.044e-02, -2.996e-02, -3.596e-02, 1.077e-01, -1.437e-01, -1.350e-02, -1.825e-01, -1.276e-01, -1.177e-01), r);\n\tr = MulAdd(s0_7, M4(-2.086e-01, -8.139e-02, 1.454e-01, 5.074e-02, 6.160e-03, 3.910e-01, 2.105e-01, 5.321e-02, -1.713e-01, 5.953e-02, 1.654e-01, -1.192e-01, 1.336e-01, 2.573e-01, -2.016e-01, 3.498e-02), r);\n\tr = MulAdd(s0_8, M4(6.900e-02, -1.446e-01, -1.762e-01, 2.112e-01, 1.580e-01, 2.114e-01, 9.015e-03, 1.532e-01, 8.336e-03, 5.163e-02, 2.668e-02, -1.992e-01, 1.748e-01, 6.060e-01, 6.609e-04, -1.562e-01), r);\n\tr = MulAdd(s1_0, M4(-7.974e-02, -5.734e-02, 4.343e-02, 1.315e-01, 5.257e-02, 2.619e-02, 1.474e-01, 2.785e-02, -2.122e-01, 1.286e-01, 8.247e-02, -4.775e-02, -8.110e-02, -7.834e-02, 1.119e-01, 6.464e-02), r);\n\tr = MulAdd(s1_1, M4(-1.791e-01, -1.306e-01, -9.517e-02, -9.715e-02, 1.383e-01, -7.254e-02, 2.996e-02, -1.071e-01, 6.347e-03, 3.042e-02, -2.237e-01, 4.132e-02, 7.086e-02, -2.773e-01, 1.161e-01, 2.955e-01), r);\n\tr = MulAdd(s1_2, M4(6.846e-02, 3.698e-02, 5.577e-02, 1.688e-01, 6.940e-02, -4.380e-02, 2.417e-01, 1.075e-01, 4.557e-02, 6.876e-03, -4.562e-02, -7.453e-02, 1.256e-01, -1.922e-01, -2.465e-01, 3.321e-01), r);\n\tr = MulAdd(s1_3, M4(5.729e-02, -7.859e-02, 1.990e-01, 1.460e-01, 3.100e-02, 8.277e-02, 3.022e-02, 1.528e-02, 1.802e-01, 7.794e-02, 6.750e-02, 8.433e-03, -1.899e-01, 6.637e-02, 1.012e-01, -6.952e-02), r);\n\tr = MulAdd(s1_4, M4(2.476e-01, 2.536e-01, 4.014e-01, 2.553e-01, 1.488e-02, 2.272e-01, 1.149e-01, -1.419e-01, 8.072e-02, -3.484e-02, -6.580e-02, -2.480e-04, -2.329e-01, -7.622e-02, -3.141e-01, -2.013e-01), r);\n\tr = MulAdd(s1_5, M4(-8.155e-04, -8.081e-02, 5.585e-02, -1.909e-01, 1.755e-01, -4.790e-02, 1.461e-01, 2.156e-02, 1.235e-01, -4.207e-02, 6.835e-02, -7.678e-02, -5.357e-02, -3.332e-01, 6.888e-02, 3.389e-01), r);\n\tr = MulAdd(s1_6, M4(9.778e-02, -1.402e-01, 2.056e-01, 2.418e-01, -1.001e-01, 4.984e-02, 1.329e-01, -8.407e-02, -1.903e-01, 7.319e-02, 1.819e-01, -1.242e-01, 6.291e-02, -9.227e-02, -6.650e-02, 2.091e-02), r);\n\tr = MulAdd(s1_7, M4(-5.745e-02, -2.956e-02, -2.382e-01, 1.047e-01, -2.035e-02, 1.017e-01, 3.915e-02, 3.923e-03, -1.076e-01, -1.961e-01, -1.103e-01, -1.057e-01, -7.928e-02, -4.208e-01, 3.675e-02, -1.746e-01), r);\n\tr = MulAdd(s1_8, M4(2.269e-02, -8.960e-02, 2.786e-02, 1.194e-01, -7.041e-02, -4.548e-02, 3.849e-03, 1.108e-02, 4.179e-02, -6.224e-03, -1.517e-01, -3.722e-02, -2.309e-01, -4.689e-01, -9.688e-03, -1.259e-01), r);\n\tr = MulAdd(s2_0, M4(-2.010e-02, 5.144e-02, 6.034e-02, 7.541e-03, 1.314e-01, -7.879e-02, -1.082e-01, 3.129e-02, -4.445e-02, 1.534e-01, 2.469e-02, 1.628e-01, 1.400e-01, -3.228e-02, -1.776e-03, 5.769e-02), r);\n\tr = MulAdd(s2_1, M4(1.808e-01, -1.405e-01, 6.782e-02, -4.191e-02, 2.192e-01, -1.407e-01, 1.498e-01, -2.685e-02, 1.277e-01, -2.999e-02, 7.470e-03, -1.035e-01, 2.323e-01, 9.520e-02, -1.943e-01, 6.655e-02), r);\n\tr = MulAdd(s2_2, M4(4.662e-02, 1.309e-01, 2.511e-02, 1.753e-01, -1.090e-01, 1.047e-01, 3.579e-01, 8.986e-02, 1.825e-01, 9.717e-03, 4.552e-02, 6.842e-03, 8.078e-02, -8.883e-02, -3.848e-01, 3.532e-01), r);\n\tr = MulAdd(s2_3, M4(-3.281e-02, 1.429e-01, 4.601e-02, -9.739e-02, 2.633e-01, -1.107e-01, -3.663e-01, -1.183e-01, -1.530e-01, -1.636e-01, -1.450e-01, 1.975e-01, -4.363e-02, 2.147e-02, -1.104e-02, 1.039e-01), r);\n\tr = MulAdd(s2_4, M4(-2.343e-02, 6.642e-02, 2.882e-01, 1.283e-01, 4.546e-01, 2.547e-01, 3.903e-01, -3.050e-01, -1.711e-01, -3.089e-01, -2.291e-01, 4.552e-02, -2.052e-03, -1.387e-01, 1.635e-01, -3.818e-01), r);\n\tr = MulAdd(s2_5, M4(7.496e-02, -1.952e-01, -2.334e-02, -4.991e-02, 7.087e-02, 1.786e-01, 3.642e-01, 1.281e-01, 5.938e-01, -1.237e-01, 3.925e-02, -3.615e-02, 4.378e-02, -1.997e-01, -8.283e-02, -2.681e-01), r);\n\tr = MulAdd(s2_6, M4(6.869e-03, -5.420e-02, -3.790e-03, -7.131e-02, -6.633e-02, 1.967e-01, -1.449e-02, 4.217e-01, 3.091e-01, 9.026e-02, 1.471e-03, 1.838e-01, -1.607e-01, 2.643e-02, -1.177e-03, 3.705e-03), r);\n\tr = MulAdd(s2_7, M4(5.169e-02, 7.583e-02, 7.764e-02, -8.519e-02, -4.837e-02, -6.246e-02, 4.484e-01, -2.561e-01, 4.161e-01, 3.703e-01, -1.218e-01, 4.129e-01, -2.863e-01, -2.196e-03, 3.475e-01, -1.904e-01), r);\n\tr = MulAdd(s2_8, M4(-4.862e-02, 3.213e-01, 1.736e-02, -1.612e-02, -9.350e-02, -1.273e-01, -3.268e-02, -6.336e-02, 1.920e-01, -6.951e-02, 3.064e-03, -1.035e-01, 9.870e-02, -3.462e-01, -1.288e-01, 5.762e-02), r);\n\tr = MulAdd(s3_0, M4(-2.217e-01, 1.547e-01, 5.870e-03, -1.022e-01, 2.492e-01, -2.678e-02, -1.080e-01, 8.747e-02, 1.652e-01, 1.323e-01, -2.610e-02, 6.079e-03, 2.915e-03, -3.514e-02, 8.385e-02, -6.264e-02), r);\n\tr = MulAdd(s3_1, M4(-9.377e-02, -4.420e-02, 5.238e-02, -2.172e-01, 1.824e-01, -3.558e-02, -2.377e-02, 1.185e-01, 5.646e-02, 2.368e-01, -4.782e-02, -2.171e-01, 1.230e-01, 1.990e-01, 5.330e-02, -5.694e-02), r);\n\tr = MulAdd(s3_2, M4(5.045e-02, 2.208e-02, 5.464e-02, 1.499e-01, -1.315e-02, 1.246e-01, 2.056e-01, 8.074e-02, -3.316e-02, 1.584e-01, 5.447e-02, -5.966e-02, -8.432e-02, 4.824e-02, -1.086e-01, -5.020e-02), r);\n\tr = MulAdd(s3_3, M4(1.809e-01, 5.069e-02, 5.310e-02, -1.384e-01, -1.275e-01, -1.509e-01, -2.822e-01, -5.726e-02, -4.277e-02, -7.647e-02, -2.646e-01, 6.126e-02, -5.023e-03, -5.288e-02, -4.901e-02, 7.492e-02), r);\n\tr = MulAdd(s3_4, M4(1.318e-01, -3.723e-01, 4.562e-01, -5.841e-01, 4.835e-02, -1.168e-01, 4.724e-02, 8.787e-02, -3.497e-01, -1.297e-01, -2.496e-01, -2.261e-01, 3.500e-02, 3.051e-01, 2.755e-01, -1.225e-02), r);\n\tr = MulAdd(s3_5, M4(9.279e-02, 1.468e-01, 6.113e-01, -1.173e-01, -9.417e-02, 9.222e-02, -5.217e-02, 8.464e-02, 6.096e-02, 9.554e-02, 1.285e-01, -1.953e-01, 6.569e-02, -2.118e-01, -3.568e-02, -1.352e-01), r);\n\tr = MulAdd(s3_6, M4(-1.768e-01, 8.608e-02, 1.309e-01, -1.416e-01, 8.261e-03, -1.316e-01, 7.054e-02, 4.611e-03, 3.212e-02, 2.430e-02, 9.214e-02, 6.280e-03, -2.185e-02, -3.935e-02, 5.571e-02, 4.193e-02), r);\n\tr = MulAdd(s3_7, M4(8.105e-02, -1.591e-01, 3.039e-01, -9.778e-02, 3.951e-02, -3.152e-01, -1.966e-01, -2.455e-01, -3.366e-02, -7.204e-02, -8.174e-03, -7.198e-02, -6.558e-03, 1.123e-01, -9.551e-02, 6.672e-03), r);\n\tr = MulAdd(s3_8, M4(1.235e-01, 3.982e-02, 3.039e-01, 1.235e-01, 2.316e-02, -8.746e-02, 2.213e-02, 1.028e-01, -1.428e-01, 2.836e-02, -3.352e-02, 4.037e-03, 6.577e-02, 1.374e-01, 1.652e-02, -1.878e-02), r);\n\tr = MulAdd(s4_0, M4(1.246e-01, 1.239e-01, -9.360e-03, 2.423e-01, -1.773e-01, 2.159e-01, -2.099e-01, 2.785e-02, -1.292e-01, -3.997e-02, -3.523e-02, 6.947e-02, -1.759e-02, 4.929e-02, 7.086e-02, -2.629e-02), r);\n\tr = MulAdd(s4_1, M4(5.799e-02, -3.160e-02, -4.384e-02, -6.587e-03, 2.184e-01, -2.625e-02, -2.947e-02, -8.658e-03, -9.866e-03, -1.366e-01, -4.666e-02, -1.631e-02, -2.408e-01, -2.021e-02, 2.256e-02, -1.333e-01), r);\n\tr = MulAdd(s4_2, M4(-3.149e-02, -8.892e-03, 5.679e-02, 1.374e-02, -1.574e-01, 9.301e-02, -9.448e-02, -2.024e-01, 4.531e-02, 1.678e-01, -1.825e-01, -1.331e-02, 9.388e-03, -1.343e-01, -4.238e-02, 3.823e-02), r);\n\tr = MulAdd(s4_3, M4(-3.200e-02, 1.715e-01, 4.701e-02, -1.146e-02, -3.603e-02, -5.154e-02, 4.062e-02, -8.847e-02, 6.117e-02, 1.044e-01, -6.379e-02, -1.141e-01, 1.272e-01, 1.586e-02, -7.757e-02, -1.664e-01), r);\n\tr = MulAdd(s4_4, M4(-5.916e-02, -9.493e-02, -2.504e-01, -8.049e-03, 1.603e-01, -1.276e-01, -6.224e-03, -1.402e-01, 1.848e-01, -9.695e-02, 1.695e-01, 1.547e-01, 2.973e-01, 2.754e-02, 1.808e-01, 1.692e-03), r);\n\tr = MulAdd(s4_5, M4(-3.831e-02, 7.519e-02, 1.461e-01, 1.416e-01, 1.063e-02, -1.076e-01, -1.000e-01, -4.520e-02, -9.602e-02, 1.353e-01, -3.368e-01, 3.250e-02, -1.229e-01, -5.047e-02, -1.801e-01, 1.681e-02), r);\n\tr = MulAdd(s4_6, M4(-5.671e-02, -2.402e-01, 8.270e-03, 1.744e-02, -1.152e-01, 8.024e-02, 2.130e-01, 5.225e-02, 6.645e-02, 3.031e-02, 8.195e-02, -1.439e-01, 2.048e-01, -1.359e-01, 1.120e-01, -3.217e-02), r);\n\tr = MulAdd(s4_7, M4(-1.605e-01, 6.211e-02, 9.125e-02, 8.926e-02, 8.750e-02, -1.852e-01, -2.375e-01, 1.248e-01, 3.083e-02, 4.785e-02, 1.139e-03, -5.040e-03, 3.171e-02, 2.389e-01, 6.904e-02, 2.381e-02), r);\n\tr = MulAdd(s4_8, M4(-7.120e-02, -1.292e-01, -1.611e-01, -9.858e-02, -2.775e-02, 2.880e-02, 2.723e-02, -4.047e-02, -3.972e-02, -2.975e-02, -2.026e-01, 7.687e-02, -8.534e-02, 1.556e-01, 3.034e-01, -5.549e-02), r);\n\tr = MulAdd(s5_0, M4(-9.213e-02, -5.440e-02, -4.894e-02, 3.393e-02, 1.027e-01, 2.624e-02, -4.883e-02, -6.931e-03, -1.735e-01, 2.098e-02, 5.265e-02, 6.680e-03, -8.395e-02, -4.679e-02, 6.241e-02, 4.699e-02), r);\n\tr = MulAdd(s5_1, M4(-1.782e-01, 7.983e-03, -3.259e-02, -1.868e-01, 1.215e-01, -1.321e-01, 5.041e-02, -4.801e-02, 1.265e-01, -1.372e-01, -3.296e-02, 1.442e-01, 3.257e-02, 1.222e-01, -1.512e-02, -1.479e-01), r);\n\tr = MulAdd(s5_2, M4(-2.983e-02, 3.076e-02, 8.010e-02, 2.028e-01, -3.401e-02, -9.389e-02, 1.362e-01, -1.877e-01, 1.574e-01, 9.401e-02, 4.403e-02, 8.403e-02, 4.736e-02, -9.071e-02, -2.370e-02, -2.582e-02), r);\n\tr = MulAdd(s5_3, M4(2.278e-01, 1.284e-01, 4.590e-02, 1.622e-02, 1.337e-01, 7.761e-02, 1.359e-02, -2.618e-02, 4.119e-02, -2.623e-02, 2.930e-02, -2.091e-01, -1.855e-01, 6.665e-02, 8.423e-02, 8.824e-03), r);\n\tr = MulAdd(s5_4, M4(-9.664e-02, 4.501e-02, 2.264e-02, -1.253e-01, 1.688e-01, 1.336e-01, 3.444e-01, 1.840e-01, -3.033e-02, -3.596e-01, 4.561e-02, 2.575e-02, 9.805e-02, 1.956e-01, -1.676e-01, 2.728e-01), r);\n\tr = MulAdd(s5_5, M4(-1.832e-02, -8.205e-02, 1.263e-01, -1.139e-02, -6.246e-02, -1.061e-01, -4.148e-02, 5.692e-02, -1.353e-01, 1.976e-01, -1.707e-01, -1.122e-01, -1.321e-02, -1.263e-01, -1.884e-01, -1.639e-01), r);\n\tr = MulAdd(s5_6, M4(-4.451e-02, -4.525e-02, -4.485e-02, 8.385e-02, -6.119e-03, 1.204e-01, 9.351e-02, 5.574e-02, 9.341e-02, 9.519e-02, -8.570e-02, 5.382e-02, -1.132e-01, -1.837e-01, 2.056e-02, 9.329e-02), r);\n\tr = MulAdd(s5_7, M4(1.321e-01, 9.413e-02, -1.748e-02, 2.099e-01, 3.750e-02, -7.634e-02, -2.838e-02, 1.046e-01, -2.752e-01, 5.688e-02, 2.894e-01, 6.021e-02, -2.231e-01, -7.531e-01, -3.799e-01, -2.388e-01), r);\n\tr = MulAdd(s5_8, M4(3.437e-02, 1.477e-01, 8.038e-02, -1.803e-02, -8.878e-02, -5.580e-03, 1.168e-01, -4.627e-02, -7.544e-03, -8.881e-02, -7.309e-03, 1.347e-02, 1.249e-01, -1.073e-01, 1.571e-01, 2.393e-01), r);\n\tr = MulAdd(s6_0, M4(1.056e-01, -1.655e-01, 6.628e-02, -6.710e-02, 6.007e-02, -1.825e-01, -9.008e-02, 4.077e-02, -4.660e-02, 8.993e-02, -7.418e-02, 5.962e-02, 9.706e-02, 1.196e-01, 3.072e-02, -1.198e-01), r);\n\tr = MulAdd(s6_1, M4(-2.106e-01, -1.708e-01, -1.243e-01, 2.257e-01, -8.822e-02, -1.948e-01, -4.944e-02, 1.032e-01, 8.067e-02, -2.809e-02, 1.437e-02, -8.750e-02, 2.549e-01, 4.931e-02, -8.305e-02, 6.867e-02), r);\n\tr = MulAdd(s6_2, M4(-5.325e-02, -1.668e-01, 1.553e-01, -5.354e-02, 7.197e-02, -1.310e-01, 7.045e-02, 6.476e-02, 9.089e-02, 5.229e-02, 1.479e-01, 8.049e-02, 9.977e-03, 1.119e-01, 2.414e-01, 7.301e-02), r);\n\tr = MulAdd(s6_3, M4(-4.870e-01, 1.024e-01, 1.018e-01, 5.722e-01, -1.674e-01, 4.754e-02, 1.592e-02, 9.791e-02, 1.142e-01, 1.606e-01, 1.078e-01, -7.011e-02, -3.353e-02, -6.611e-02, -1.191e-01, 2.364e-01), r);\n\tr = MulAdd(s6_4, M4(-1.742e-01, 3.119e-01, 2.820e-01, 7.737e-01, 1.333e-01, -2.364e-01, 2.087e-02, -1.183e-01, 7.062e-02, -4.126e-02, 1.620e-01, 1.013e-01, -6.792e-02, 1.401e-01, -2.499e-02, 7.562e-02), r);\n\tr = MulAdd(s6_5, M4(1.543e-01, 1.291e-01, 9.007e-02, -2.081e-01, -6.102e-02, -2.928e-02, -2.347e-02, -2.141e-01, -1.020e-02, 3.410e-02, -6.463e-02, -3.068e-02, -2.030e-01, -3.017e-01, 6.632e-02, 1.002e-01), r);\n\tr = MulAdd(s6_6, M4(-2.041e-01, -1.945e-02, 4.302e-01, -1.541e-01, 1.051e-01, -2.894e-01, -5.986e-02, 1.052e-01, -5.165e-02, -3.485e-02, 1.858e-02, -1.355e-02, -5.686e-02, 1.246e-01, -4.571e-03, -4.745e-02), r);\n\tr = MulAdd(s6_7, M4(-3.618e-02, 1.593e-01, 3.889e-01, 6.082e-02, 9.454e-03, -7.776e-02, 3.672e-02, 1.174e-01, -6.291e-02, 2.715e-02, 6.512e-03, -1.539e-02, -4.770e-02, -2.034e-02, -3.059e-02, -1.692e-01), r);\n\tr = MulAdd(s6_8, M4(6.489e-02, -1.127e-01, -6.162e-03, 6.240e-02, 4.506e-02, -1.909e-01, -7.385e-03, 6.463e-02, -4.856e-02, -1.004e-01, -1.271e-02, -1.031e-01, 1.637e-01, 1.260e-01, 9.375e-02, 8.475e-02), r);\n\tr = MulAdd(s7_0, M4(-1.056e-01, -6.793e-02, -2.290e-02, -5.765e-02, -3.109e-03, 8.130e-02, 9.209e-02, -5.064e-02, 6.955e-03, 1.225e-01, -1.973e-01, -2.322e-02, 1.099e-01, -4.783e-02, 4.413e-02, -1.477e-01), r);\n\tr = MulAdd(s7_1, M4(7.251e-02, -9.158e-02, 1.464e-01, 3.379e-02, 1.043e-01, 8.307e-02, 7.843e-02, 1.139e-01, 3.996e-01, 1.389e-01, -3.900e-02, 2.640e-01, 2.734e-01, 1.025e-01, -6.518e-03, 1.987e-02), r);\n\tr = MulAdd(s7_2, M4(-1.926e-02, -1.240e-01, -7.366e-02, -1.574e-02, 6.097e-02, 8.307e-02, 1.858e-01, 1.307e-01, 1.268e-01, 4.671e-03, -7.674e-03, -4.922e-02, -2.716e-02, 4.860e-02, 6.937e-02, -2.109e-02), r);\n\tr = MulAdd(s7_3, M4(-3.253e-02, -4.109e-02, 1.668e-01, -3.072e-02, -1.440e-01, 1.336e-01, 6.707e-03, -4.122e-02, 1.029e-01, 1.450e-01, 7.241e-02, -5.743e-02, -8.728e-02, 3.656e-02, -2.325e-02, 3.032e-03), r);\n\tr = MulAdd(s7_4, M4(6.291e-02, 7.310e-02, 6.814e-02, 5.994e-02, -5.259e-02, -6.363e-02, -1.033e-01, -1.411e-01, 3.942e-02, 2.257e-01, 2.250e-01, 3.676e-02, -2.449e-01, -1.138e-01, -8.450e-03, -7.929e-02), r);\n\tr = MulAdd(s7_5, M4(-5.406e-02, -5.043e-02, -7.410e-03, 2.141e-02, 3.475e-02, -8.651e-03, -3.283e-02, -4.722e-02, -2.018e-01, 1.197e-02, -9.335e-02, -4.392e-02, -6.526e-02, -2.383e-01, -6.525e-02, 3.451e-01), r);\n\tr = MulAdd(s7_6, M4(9.223e-03, 3.934e-02, -1.763e-01, -2.859e-02, -3.031e-02, 7.242e-02, 4.034e-02, -1.797e-01, -2.029e-01, -1.904e-01, -5.353e-02, 1.297e-02, 4.330e-02, 1.548e-01, -8.438e-03, -3.724e-02), r);\n\tr = MulAdd(s7_7, M4(9.916e-02, 7.321e-02, 1.276e-01, 1.453e-01, -8.301e-02, 1.738e-01, 2.930e-01, -3.099e-01, 2.716e-02, -8.043e-02, 5.851e-02, -5.140e-02, 1.389e-01, 2.330e-01, -1.324e-01, 7.324e-02), r);\n\tr = MulAdd(s7_8, M4(-1.500e-01, 3.048e-02, -3.140e-02, -4.852e-02, -3.718e-02, 2.308e-02, -7.317e-03, -9.998e-02, 4.094e-02, -2.750e-01, -1.856e-01, -2.096e-02, 7.663e-02, 2.274e-01, 1.548e-01, 6.048e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -4.391e-02, -3.059e-02, 2.082e-02, 1.403e-02 };\n\tr = MulAdd(s0_0, M4(4.953e-02, -1.043e-02, -1.914e-02, -1.432e-01, -5.304e-03, 8.359e-02, -1.140e-01, -7.852e-02, -4.640e-02, -2.001e-01, 1.919e-01, 1.548e-01, 8.743e-02, 9.778e-02, 1.424e-02, -2.270e-01), r);\n\tr = MulAdd(s0_1, M4(2.060e-02, 1.248e-01, -4.010e-02, 1.965e-01, -2.438e-02, -4.201e-02, 7.033e-03, 4.888e-02, -6.871e-02, 6.190e-02, 7.333e-02, -3.403e-01, -5.559e-02, 1.867e-01, -1.300e-01, 2.189e-01), r);\n\tr = MulAdd(s0_2, M4(-3.874e-02, 1.285e-01, 3.391e-02, -1.204e-01, 4.428e-02, -1.871e-01, -1.593e-02, 6.042e-03, 3.254e-02, -1.973e-02, 1.518e-01, -1.300e-01, 1.446e-02, -2.044e-01, 2.918e-02, 2.606e-01), r);\n\tr = MulAdd(s0_3, M4(4.960e-02, -6.399e-02, -9.520e-02, -1.839e-01, 2.173e-01, -2.356e-02, -1.127e-01, 8.063e-02, -1.667e-01, 9.172e-02, -4.671e-02, 1.245e-01, 6.115e-02, -9.430e-02, -2.204e-01, -4.703e-02), r);\n\tr = MulAdd(s0_4, M4(-1.679e-01, 1.597e-01, -2.778e-01, 1.738e-01, -1.146e-01, -1.453e-01, -1.057e-01, 1.756e-01, 1.647e-01, 1.490e-01, 9.088e-02, -4.520e-01, 9.319e-03, 1.503e-02, -3.174e-01, -1.853e-01), r);\n\tr = MulAdd(s0_5, M4(-5.286e-02, -3.716e-03, -2.907e-02, -2.483e-01, 6.450e-02, -3.113e-02, -9.256e-03, -7.021e-02, 1.031e-01, -8.872e-02, 9.891e-02, -1.813e-01, 1.220e-01, 9.982e-03, 1.022e-01, 6.488e-01), r);\n\tr = MulAdd(s0_6, M4(-8.355e-02, -1.048e-01, -2.398e-01, 1.720e-01, -1.541e-01, 4.061e-02, -1.442e-01, 9.865e-03, -4.325e-01, -1.424e-01, -2.084e-01, 3.330e-01, 2.950e-02, 1.551e-01, 2.286e-01, -1.593e-01), r);\n\tr = MulAdd(s0_7, M4(1.490e-01, -3.721e-02, 6.991e-02, -2.120e-02, 1.801e-01, 8.975e-02, 1.922e-01, -8.228e-02, 8.051e-02, -2.346e-01, 1.200e-01, -1.173e-01, -2.726e-01, -1.120e-01, -1.173e-01, 2.100e-01), r);\n\tr = MulAdd(s0_8, M4(2.178e-02, 8.923e-02, -4.526e-02, -4.848e-02, 1.993e-01, -1.361e-02, 1.385e-02, 2.657e-01, 1.233e-01, -2.770e-01, 2.021e-01, -8.325e-02, -7.663e-02, 8.893e-02, 8.350e-02, 2.419e-01), r);\n\tr = MulAdd(s1_0, M4(1.109e-01, 6.740e-02, -1.106e-01, -1.285e-01, -5.509e-02, 2.375e-03, -1.023e-01, -3.401e-02, 2.224e-02, 2.057e-01, -4.947e-02, 6.982e-02, -2.823e-02, 1.032e-01, -1.465e-01, -1.322e-01), r);\n\tr = MulAdd(s1_1, M4(-2.185e-01, 2.893e-01, 2.807e-02, -3.932e-02, -8.755e-02, 1.413e-01, -5.673e-02, -1.102e-02, 1.019e-01, 1.588e-01, 8.734e-03, -1.707e-01, -9.751e-02, -7.912e-02, 1.111e-01, -5.010e-02), r);\n\tr = MulAdd(s1_2, M4(1.031e-02, -2.234e-02, -5.363e-02, 5.568e-02, -4.657e-02, -1.581e-01, 3.861e-02, 1.389e-02, 7.192e-02, 6.914e-02, 2.167e-02, 9.141e-02, 1.584e-01, -4.665e-02, 1.057e-01, -1.803e-01), r);\n\tr = MulAdd(s1_3, M4(-2.364e-02, 8.902e-02, 3.271e-02, -9.566e-02, 1.637e-01, -9.631e-02, -1.292e-01, -7.108e-02, -5.199e-02, -1.548e-01, 6.055e-02, 1.562e-01, -2.478e-01, 1.768e-02, 2.132e-01, 7.910e-02), r);\n\tr = MulAdd(s1_4, M4(-2.331e-02, 2.652e-02, 2.280e-01, -7.540e-02, -1.734e-02, -1.351e-01, 9.421e-02, -1.589e-01, 3.353e-02, 3.798e-02, -1.973e-01, -1.582e-01, 9.918e-02, -1.993e-01, -1.849e-01, -5.645e-02), r);\n\tr = MulAdd(s1_5, M4(-8.244e-02, -3.014e-03, -2.259e-02, -6.663e-02, -7.560e-02, -1.792e-01, 7.072e-02, 1.509e-01, 1.072e-01, 3.003e-02, -5.873e-02, 6.435e-02, -5.586e-02, 1.371e-01, -1.778e-01, 1.172e-01), r);\n\tr = MulAdd(s1_6, M4(1.430e-01, 3.925e-02, -4.229e-02, 7.416e-02, -1.553e-01, -6.153e-02, -5.697e-02, 3.974e-03, 1.487e-02, 1.702e-01, -1.097e-01, 1.459e-01, -1.018e-01, -9.522e-02, 1.186e-01, -9.903e-03), r);\n\tr = MulAdd(s1_7, M4(3.177e-01, -2.166e-01, 2.651e-02, -5.773e-02, -2.696e-02, -9.562e-02, 4.629e-02, 5.782e-04, -4.577e-02, 1.483e-01, -1.887e-01, 9.765e-03, -4.184e-01, -7.145e-02, -2.911e-01, 6.700e-02), r);\n\tr = MulAdd(s1_8, M4(1.877e-01, -7.176e-02, 7.557e-02, 3.244e-02, -4.746e-03, -2.181e-02, 2.802e-02, 2.184e-01, 9.669e-03, 2.156e-02, 2.035e-02, -1.332e-01, -2.256e-02, 2.689e-02, -2.441e-02, -2.549e-01), r);\n\tr = MulAdd(s2_0, M4(5.106e-02, 1.100e-01, -7.814e-02, 2.028e-02, -1.567e-01, 1.860e-01, 3.232e-01, 9.718e-02, 5.487e-02, 1.834e-01, -9.297e-02, 8.886e-02, -1.441e-01, -2.210e-01, -5.134e-02, 6.252e-02), r);\n\tr = MulAdd(s2_1, M4(-4.781e-02, -2.123e-01, 4.822e-02, 3.936e-02, 1.046e-02, 4.684e-01, 2.696e-01, -1.558e-01, 1.541e-02, -1.177e-01, -5.005e-02, -1.295e-01, 1.704e-01, -2.501e-01, 6.061e-02, 2.970e-01), r);\n\tr = MulAdd(s2_2, M4(1.695e-02, -1.034e-01, -6.278e-02, -5.928e-02, -3.629e-02, 6.065e-02, -7.926e-03, 1.698e-01, 1.410e-01, 1.694e-01, -2.007e-01, -1.189e-01, 8.948e-02, -3.077e-01, -2.389e-01, 1.502e-01), r);\n\tr = MulAdd(s2_3, M4(3.987e-02, -4.753e-02, 1.210e-01, 7.428e-02, 1.577e-01, 4.927e-01, -5.874e-02, 6.032e-02, 6.508e-02, 2.733e-01, 8.902e-02, -8.632e-02, 2.456e-01, -2.898e-02, -3.099e-01, -2.062e-01), r);\n\tr = MulAdd(s2_4, M4(2.310e-01, -1.338e-01, -5.528e-02, -6.663e-02, 5.035e-03, 5.237e-01, -2.444e-01, 1.748e-03, 1.092e-02, 1.659e-01, -5.375e-01, -1.727e-01, 1.075e-01, -3.335e-02, 1.716e-01, 2.911e-02), r);\n\tr = MulAdd(s2_5, M4(-3.422e-02, 1.164e-01, -7.015e-02, 2.228e-01, -2.588e-01, 1.001e-01, -2.292e-01, 3.307e-01, 1.157e-01, -1.517e-01, -1.974e-01, 1.010e-01, -1.465e-01, 1.708e-01, 6.236e-02, -9.108e-02), r);\n\tr = MulAdd(s2_6, M4(-1.071e-01, 1.134e-02, -8.607e-03, -3.712e-02, 1.710e-01, 2.361e-01, -1.406e-01, 1.209e-01, 2.425e-02, -9.058e-02, -3.232e-01, 4.471e-02, -1.308e-01, -3.260e-02, 6.854e-02, -6.492e-02), r);\n\tr = MulAdd(s2_7, M4(-4.509e-02, 7.984e-02, 1.088e-01, -1.713e-01, 8.724e-02, -2.148e-01, -2.251e-01, -5.391e-01, -1.393e-02, -2.744e-01, -3.601e-01, 1.169e-01, 1.460e-01, 1.543e-01, 1.556e-01, -1.452e-01), r);\n\tr = MulAdd(s2_8, M4(-3.656e-02, 1.428e-01, -1.008e-01, -8.022e-02, -1.002e-01, -1.470e-01, -6.616e-02, 1.897e-02, 1.665e-01, -1.197e-02, -1.142e-01, -5.160e-02, 6.965e-02, -5.536e-02, 2.038e-01, 4.050e-03), r);\n\tr = MulAdd(s3_0, M4(-3.699e-02, -2.169e-01, -1.551e-01, -8.639e-02, -1.323e-01, -3.194e-01, 4.831e-02, -4.322e-02, -5.369e-02, -2.300e-01, 7.718e-02, 1.629e-01, -4.036e-02, -9.572e-03, -3.976e-02, 5.321e-02), r);\n\tr = MulAdd(s3_1, M4(-2.518e-02, -1.041e-01, 7.633e-02, 1.902e-01, 1.493e-02, -1.167e-01, 1.430e-01, -6.275e-02, -5.291e-02, -1.949e-01, -1.360e-03, 2.395e-03, 5.281e-02, 3.305e-01, -9.706e-02, 1.571e-01), r);\n\tr = MulAdd(s3_2, M4(-1.239e-01, 1.558e-02, -8.931e-02, 1.519e-01, -6.491e-02, -8.699e-02, 1.022e-04, 1.037e-02, 7.850e-04, -6.647e-02, -3.083e-03, 9.909e-02, 3.606e-02, -6.656e-02, -4.089e-02, -6.208e-02), r);\n\tr = MulAdd(s3_3, M4(-2.321e-02, -1.324e-01, -2.979e-01, -2.022e-01, -1.156e-01, -2.492e-01, 2.480e-02, 1.023e-01, 1.111e-01, 1.108e-02, 4.745e-02, 2.682e-01, 1.655e-01, 1.510e-01, 2.804e-02, -6.706e-02), r);\n\tr = MulAdd(s3_4, M4(7.570e-02, 1.188e-01, 1.951e-01, -1.867e-01, 5.990e-02, 3.134e-02, -1.611e-01, -2.741e-01, 9.583e-02, -5.437e-02, -1.426e-02, -1.455e-01, -2.097e-02, 2.090e-01, -3.508e-02, 1.004e-01), r);\n\tr = MulAdd(s3_5, M4(-1.678e-01, -1.709e-01, 1.389e-01, 5.599e-01, 5.316e-02, -5.649e-02, -5.180e-02, 1.958e-01, -1.194e-01, 4.412e-02, -1.158e-02, 9.583e-02, 2.081e-01, -1.927e-02, 1.263e-01, 6.535e-02), r);\n\tr = MulAdd(s3_6, M4(-1.998e-01, 7.452e-04, -1.024e-01, -1.500e-01, -1.898e-01, -1.200e-01, 2.673e-01, 1.930e-01, 6.552e-02, 4.753e-02, -5.766e-02, 1.452e-02, -2.033e-02, -1.847e-02, 4.007e-02, -4.012e-02), r);\n\tr = MulAdd(s3_7, M4(-3.738e-02, 9.887e-03, 2.957e-01, -2.111e-01, 1.195e-01, 1.952e-02, -1.179e-01, -2.235e-01, -7.834e-02, -5.193e-02, -2.680e-02, 2.864e-02, -2.601e-02, 6.703e-02, -6.174e-02, 3.249e-02), r);\n\tr = MulAdd(s3_8, M4(-1.530e-01, -8.802e-02, 1.475e-01, 2.635e-01, -9.074e-02, 9.380e-02, 4.124e-02, -7.946e-02, -1.148e-01, 1.286e-02, 4.742e-02, 2.332e-02, -1.977e-03, -5.675e-02, 1.096e-01, 1.150e-02), r);\n\tr = MulAdd(s4_0, M4(-2.261e-01, -2.561e-01, 1.126e-02, 2.395e-01, 1.953e-02, -4.803e-02, -2.832e-01, 2.786e-01, 4.088e-02, 1.210e-01, -1.743e-01, -8.318e-02, -2.497e-02, 9.149e-02, -1.279e-01, -1.996e-01), r);\n\tr = MulAdd(s4_1, M4(9.359e-02, -2.179e-01, -1.029e-01, -2.677e-01, 5.302e-03, 3.054e-01, 9.251e-02, -1.286e-01, 1.787e-04, 2.154e-02, -9.384e-02, 4.740e-02, 9.689e-02, 1.660e-02, -1.787e-01, 1.200e-01), r);\n\tr = MulAdd(s4_2, M4(-1.114e-01, -3.321e-03, -4.210e-02, 4.867e-02, -1.530e-02, 1.223e-01, -1.452e-02, 1.470e-02, 2.443e-01, 1.265e-01, -2.683e-02, 8.435e-02, -2.650e-02, 1.006e-01, -1.267e-01, -1.657e-02), r);\n\tr = MulAdd(s4_3, M4(2.259e-01, -2.401e-02, -7.352e-02, 4.411e-02, -1.591e-01, -4.921e-02, -8.919e-02, 1.951e-01, -3.401e-02, 2.066e-01, -4.425e-02, 1.086e-02, -2.287e-01, 1.715e-01, 1.947e-02, 3.394e-01), r);\n\tr = MulAdd(s4_4, M4(-1.943e-01, 6.106e-02, -2.059e-01, 1.530e-01, -4.310e-01, -5.169e-02, 5.227e-03, -5.809e-02, -8.751e-03, 1.375e-01, 9.137e-02, -5.076e-02, -2.291e-01, 3.071e-01, 8.408e-02, -3.188e-01), r);\n\tr = MulAdd(s4_5, M4(1.396e-01, 1.749e-03, -1.139e-01, 4.759e-03, 1.080e-01, -1.796e-01, 1.342e-01, 1.888e-02, 2.666e-01, 3.913e-02, -2.299e-01, -1.284e-01, 5.995e-02, -1.558e-03, 8.185e-02, -7.686e-02), r);\n\tr = MulAdd(s4_6, M4(-1.669e-01, -6.859e-02, -7.372e-02, -9.100e-02, -3.056e-02, 5.829e-02, 1.240e-01, 1.077e-01, -5.259e-02, -6.470e-02, -1.078e-01, -4.296e-03, -8.721e-02, 4.027e-02, -5.710e-02, 8.209e-02), r);\n\tr = MulAdd(s4_7, M4(-1.577e-01, 6.222e-03, -2.773e-01, 3.279e-02, 1.536e-01, -1.257e-01, -4.675e-02, -1.285e-01, -7.705e-02, -1.055e-01, 2.227e-02, -1.549e-01, 4.493e-01, -2.209e-01, 2.735e-01, 1.233e-01), r);\n\tr = MulAdd(s4_8, M4(-4.798e-01, 1.189e-01, -2.058e-01, -1.575e-01, 8.871e-02, 8.258e-02, -4.181e-03, -5.046e-02, 2.217e-01, 5.726e-02, -1.620e-01, 1.539e-01, -1.201e-01, -1.012e-01, 5.392e-03, 3.764e-02), r);\n\tr = MulAdd(s5_0, M4(1.165e-01, 1.608e-01, -7.487e-02, -1.509e-01, 9.449e-02, 3.221e-01, -3.382e-02, -1.816e-03, -3.550e-02, 1.265e-01, -6.539e-02, -1.075e-01, 3.394e-02, 2.355e-01, 3.894e-02, -8.796e-02), r);\n\tr = MulAdd(s5_1, M4(-2.447e-02, 8.070e-02, 1.423e-01, 1.402e-01, 2.515e-02, 4.841e-01, 4.955e-02, -2.066e-01, -9.107e-02, -2.201e-02, 4.951e-02, -3.315e-03, 1.130e-01, -1.267e-01, -7.044e-02, 5.966e-02), r);\n\tr = MulAdd(s5_2, M4(-1.221e-01, -7.627e-02, -9.912e-02, 3.213e-02, -1.224e-02, 1.525e-02, 5.261e-02, 7.614e-05, 1.389e-01, -2.451e-02, 2.648e-02, 1.036e-01, 1.281e-02, -5.334e-02, -3.525e-02, 4.862e-02), r);\n\tr = MulAdd(s5_3, M4(-4.838e-02, -1.165e-01, 4.634e-02, 5.762e-02, -1.966e-01, 4.590e-03, -1.469e-01, 1.240e-02, -8.315e-02, 1.313e-01, 7.028e-03, -3.308e-01, 8.331e-02, -8.449e-02, -2.792e-01, -1.632e-01), r);\n\tr = MulAdd(s5_4, M4(2.086e-01, -7.599e-02, 6.890e-02, -1.638e-01, 6.631e-02, -3.018e-01, 3.685e-01, 1.289e-01, -3.224e-02, 2.471e-01, 1.554e-01, -9.048e-02, 6.640e-02, -1.579e-01, 4.120e-02, 3.324e-01), r);\n\tr = MulAdd(s5_5, M4(-8.094e-02, 7.154e-02, -2.721e-01, 3.947e-02, 1.108e-01, -9.913e-02, 7.985e-02, 7.660e-02, 1.077e-01, -7.017e-03, -8.944e-02, 6.666e-02, 1.555e-01, -3.792e-02, 2.088e-01, 1.484e-01), r);\n\tr = MulAdd(s5_6, M4(1.184e-01, 8.033e-02, -1.298e-02, 1.090e-01, 7.464e-03, 5.399e-02, 6.435e-02, 9.456e-02, 1.882e-02, 7.983e-02, 6.878e-02, -3.361e-02, -1.222e-01, -1.425e-02, 2.428e-02, 7.745e-03), r);\n\tr = MulAdd(s5_7, M4(1.102e-01, -1.544e-02, 1.597e-01, -4.132e-02, 1.377e-01, -2.824e-02, -8.234e-02, -2.761e-05, 8.093e-02, -2.793e-01, 1.530e-01, 8.385e-02, -7.603e-02, -2.025e-01, 2.766e-01, -1.428e-01), r);\n\tr = MulAdd(s5_8, M4(3.781e-03, -1.045e-01, 1.448e-01, 5.691e-02, -5.157e-02, 5.607e-02, -5.108e-02, -3.895e-02, 1.424e-01, -6.146e-02, -9.942e-02, 1.364e-01, -1.161e-02, 7.988e-02, -1.966e-02, 1.264e-01), r);\n\tr = MulAdd(s6_0, M4(5.254e-02, 4.286e-02, 2.203e-01, 2.235e-01, 1.933e-02, -1.109e-01, 8.487e-02, -9.477e-02, -5.130e-02, -4.777e-02, -2.017e-02, 3.128e-02, -6.470e-02, 1.543e-01, 8.668e-02, 1.235e-02), r);\n\tr = MulAdd(s6_1, M4(1.808e-01, 7.979e-02, 1.731e-01, 1.029e-01, 2.928e-02, -2.398e-01, 2.685e-01, -5.568e-03, 1.759e-01, -9.958e-02, -1.266e-01, 9.668e-02, -9.320e-02, -1.677e-01, 2.248e-01, -9.537e-02), r);\n\tr = MulAdd(s6_2, M4(-1.645e-02, -4.210e-02, 2.464e-01, 2.570e-01, -6.245e-02, -1.263e-01, 7.909e-03, 1.125e-01, 1.147e-02, -8.072e-03, 9.007e-03, -7.610e-02, 7.843e-02, -2.010e-01, -1.495e-02, -3.870e-02), r);\n\tr = MulAdd(s6_3, M4(-3.565e-02, 5.785e-01, -9.211e-01, 5.079e-01, 5.528e-02, 6.960e-02, 2.126e-01, -4.858e-02, 4.311e-04, -7.106e-02, -9.924e-02, 3.560e-02, -4.707e-02, -9.750e-02, 1.573e-01, 2.595e-01), r);\n\tr = MulAdd(s6_4, M4(9.734e-02, 1.154e+00, -2.324e-01, -1.876e-01, 1.616e-01, -4.130e-02, 5.493e-02, -1.671e-01, -2.353e-01, 1.169e-03, 1.057e-01, -2.784e-02, 3.860e-01, 1.029e-01, -4.524e-01, -1.442e-01), r);\n\tr = MulAdd(s6_5, M4(3.244e-01, -6.583e-02, -5.003e-02, -6.686e-01, -5.430e-02, -8.618e-02, 8.184e-02, -5.639e-02, 4.921e-02, -4.133e-02, 1.289e-01, -1.323e-01, -6.690e-02, 1.474e-01, -6.345e-02, 5.825e-02), r);\n\tr = MulAdd(s6_6, M4(-1.715e-01, -3.189e-01, -2.790e-01, -2.477e-01, 1.002e-01, -5.547e-02, 2.995e-02, -1.182e-01, 6.040e-02, 8.125e-02, -1.164e-01, -4.264e-02, 2.022e-02, 1.063e-01, 3.899e-02, 1.597e-01), r);\n\tr = MulAdd(s6_7, M4(-1.266e-01, -9.623e-02, 1.275e-01, -3.748e-02, 1.626e-01, -6.270e-02, 9.291e-02, 5.724e-03, 4.365e-02, 7.480e-02, 5.771e-02, 5.527e-02, -3.332e-01, 3.902e-02, -1.400e-01, 3.447e-06), r);\n\tr = MulAdd(s6_8, M4(3.818e-01, 1.863e-01, -2.614e-02, -3.133e-02, 1.381e-01, -6.371e-02, 6.787e-02, 6.309e-02, -1.131e-01, -4.142e-02, -7.571e-02, 8.214e-02, -1.547e-01, -1.238e-01, 1.511e-02, 1.554e-01), r);\n\tr = MulAdd(s7_0, M4(-5.391e-02, 1.323e-01, 4.757e-02, 4.474e-02, 5.920e-02, -4.543e-02, 3.262e-02, 2.424e-01, -2.397e-02, -1.617e-01, -1.591e-01, 2.583e-02, 5.164e-02, -8.457e-03, 2.784e-02, -4.374e-02), r);\n\tr = MulAdd(s7_1, M4(8.171e-02, -4.498e-02, 1.671e-01, -2.266e-03, -1.252e-01, 1.708e-01, -2.352e-01, 3.477e-02, 8.995e-02, -3.851e-01, -1.649e-01, -4.319e-02, 8.272e-02, -9.280e-02, -1.689e-01, 4.940e-02), r);\n\tr = MulAdd(s7_2, M4(-3.313e-02, 6.006e-02, -9.039e-03, 9.748e-02, -4.762e-02, -5.250e-03, -1.652e-01, 1.174e-01, 4.957e-02, -2.381e-01, 4.842e-02, -3.336e-02, 2.251e-01, -2.005e-02, -1.765e-01, -8.915e-02), r);\n\tr = MulAdd(s7_3, M4(-1.958e-01, 1.081e-01, -8.218e-02, -5.008e-02, 2.882e-01, 2.378e-01, -6.291e-02, 1.016e-01, -2.227e-01, -1.629e-01, 7.849e-02, 6.485e-02, 5.065e-02, 9.825e-02, 4.433e-02, -6.809e-02), r);\n\tr = MulAdd(s7_4, M4(-7.990e-02, 6.251e-02, -7.690e-02, -2.683e-02, -7.804e-02, 2.686e-02, 9.093e-02, 2.700e-02, -1.886e-02, 2.563e-01, 1.230e-01, -8.396e-02, 2.219e-01, -1.033e-01, 9.530e-03, 9.932e-02), r);\n\tr = MulAdd(s7_5, M4(1.400e-02, -2.426e-02, 5.110e-02, 4.281e-02, -1.137e-01, -7.280e-02, 5.152e-02, -9.314e-03, 1.449e-01, 3.328e-02, 1.324e-01, -2.731e-01, -2.096e-01, 2.987e-02, 7.699e-03, 1.335e-01), r);\n\tr = MulAdd(s7_6, M4(4.344e-02, -6.642e-02, -7.341e-02, -6.276e-02, -1.511e-01, 1.958e-01, -7.402e-02, -2.163e-02, 1.100e-01, 1.279e-01, -9.180e-02, -5.255e-02, 1.680e-01, 5.994e-02, -2.382e-02, 1.012e-02), r);\n\tr = MulAdd(s7_7, M4(3.082e-02, -8.443e-02, 9.441e-02, 1.118e-02, -1.380e-01, 1.702e-02, 6.489e-02, 7.571e-02, -1.530e-01, 4.445e-02, 1.333e-01, -8.167e-03, 4.990e-01, 5.790e-02, 1.082e-01, 5.093e-02), r);\n\tr = MulAdd(s7_8, M4(2.108e-01, 1.091e-01, -1.877e-02, -5.456e-02, -1.412e-01, 8.228e-02, -1.366e-01, 8.877e-02, -1.840e-01, -7.525e-02, -6.979e-02, 7.806e-02, -1.131e-01, -1.048e-01, 8.550e-02, 1.826e-01), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.253e-02, -1.539e-02, -3.069e-03, 1.641e-03 };\n\tr = MulAdd(s0_0, M4(-1.003e-01, -5.919e-02, 2.076e-01, 1.672e-02, 2.856e-02, -3.657e-01, -5.536e-02, 6.897e-02, -5.467e-02, -2.065e-01, -8.650e-02, 7.769e-02, 1.806e-01, -6.661e-02, 1.437e-01, -7.272e-02), r);\n\tr = MulAdd(s0_1, M4(1.047e-01, -4.994e-03, 2.010e-02, -1.732e-01, 1.841e-02, -6.717e-02, -9.422e-02, 1.552e-01, -1.356e-01, 5.723e-03, 3.318e-01, 7.563e-02, -7.158e-02, -6.739e-02, -1.119e-01, -3.589e-02), r);\n\tr = MulAdd(s0_2, M4(5.615e-02, -1.190e-01, 1.940e-02, 1.183e-01, 1.353e-01, -1.109e-01, -8.721e-02, -2.443e-01, -7.026e-02, 9.086e-03, 1.657e-01, 5.800e-02, 9.707e-02, 4.103e-02, 8.620e-02, -1.047e-01), r);\n\tr = MulAdd(s0_3, M4(-1.864e-01, 5.525e-01, 5.940e-02, 1.066e-01, -6.391e-02, 2.615e-01, 1.369e-01, 1.755e-01, 5.718e-02, -3.624e-01, -2.133e-01, 2.429e-02, 1.918e-01, 2.540e-02, 1.998e-01, -1.374e-01), r);\n\tr = MulAdd(s0_4, M4(-7.575e-02, -2.771e-01, 1.057e-01, 6.924e-02, 6.660e-02, -3.778e-02, -1.177e-01, -1.973e-01, 1.329e-01, -9.089e-02, 1.796e-01, 2.113e-01, 2.779e-01, 1.087e-01, 1.340e-01, 5.727e-02), r);\n\tr = MulAdd(s0_5, M4(3.028e-01, -1.509e-01, 1.293e-02, 1.337e-01, -5.479e-02, -4.922e-03, 2.247e-01, 4.516e-02, -1.411e-01, -1.697e-01, 7.813e-02, 1.060e-02, -1.126e-01, 3.681e-01, 2.706e-01, -3.745e-01), r);\n\tr = MulAdd(s0_6, M4(-1.866e-01, -1.746e-01, -6.487e-02, 6.742e-02, -1.552e-01, -5.886e-02, 1.360e-01, -1.544e-01, -1.652e-01, 1.706e-02, 2.617e-01, 1.328e-01, -3.640e-03, 9.480e-02, -1.287e-02, 3.921e-02), r);\n\tr = MulAdd(s0_7, M4(1.243e-01, -9.323e-02, -2.042e-01, 1.297e-01, 9.513e-02, -1.313e-02, -1.341e-02, 1.389e-01, 6.648e-02, 1.188e-02, 4.082e-02, 3.604e-01, -2.582e-01, -5.481e-02, 9.386e-02, -2.171e-01), r);\n\tr = MulAdd(s0_8, M4(-1.791e-01, 2.842e-02, 1.129e-01, -2.167e-02, 2.324e-01, 4.512e-02, 6.812e-02, -2.952e-02, -1.427e-01, -2.060e-01, 3.594e-02, 1.304e-01, -3.837e-01, 4.871e-02, 4.871e-01, -2.685e-01), r);\n\tr = MulAdd(s1_0, M4(-7.620e-02, 8.123e-02, 3.190e-02, -1.187e-01, -9.578e-02, -1.791e-01, 2.089e-03, -1.004e-01, -3.081e-02, 7.196e-02, 2.389e-02, -5.165e-03, 5.603e-02, -8.371e-02, -7.499e-02, 2.005e-01), r);\n\tr = MulAdd(s1_1, M4(1.862e-01, -2.538e-02, -2.103e-02, -5.109e-02, -4.727e-02, 4.574e-02, -6.642e-03, -2.504e-02, -6.596e-02, -7.968e-03, -7.350e-02, 1.135e-01, -1.027e-01, -1.208e-01, -3.533e-02, 2.085e-01), r);\n\tr = MulAdd(s1_2, M4(-1.857e-02, -1.421e-01, -5.308e-02, 5.773e-03, -4.630e-02, -4.522e-02, 1.625e-02, -9.741e-02, 9.684e-02, -7.835e-02, 7.179e-02, 8.255e-02, -7.932e-02, 5.574e-02, 3.519e-02, 1.743e-01), r);\n\tr = MulAdd(s1_3, M4(-8.234e-03, -3.040e-01, 1.035e-01, -3.756e-01, -1.978e-01, 1.257e-01, 4.788e-02, 1.895e-01, -1.629e-01, -8.749e-02, -2.094e-03, -3.859e-02, 1.008e-01, -1.914e-01, -1.519e-02, 9.775e-02), r);\n\tr = MulAdd(s1_4, M4(-2.454e-01, 3.034e-01, -1.188e-02, -9.649e-03, 1.881e-01, -8.000e-02, -1.499e-01, -1.489e-01, 3.142e-01, -2.846e-01, -8.070e-02, -3.620e-02, 1.075e-01, 2.874e-01, -3.062e-01, 2.726e-01), r);\n\tr = MulAdd(s1_5, M4(-3.710e-03, 2.431e-01, 1.270e-01, -1.509e-01, -4.571e-02, -4.919e-03, 3.846e-03, -5.178e-02, -1.865e-02, 1.187e-01, 4.861e-02, -1.342e-01, -1.103e-01, 1.058e-01, -2.100e-01, 2.385e-01), r);\n\tr = MulAdd(s1_6, M4(-9.861e-02, 3.686e-01, 1.439e-02, -1.672e-01, -1.270e-01, -7.478e-02, 5.627e-02, -1.598e-01, 2.436e-01, 1.530e-03, -4.498e-02, -1.594e-01, 8.192e-02, 6.402e-02, -1.798e-02, -4.105e-02), r);\n\tr = MulAdd(s1_7, M4(1.852e-01, -2.272e-01, 1.581e-03, 6.883e-02, 1.501e-01, -2.629e-01, -5.432e-02, 1.199e-01, 4.607e-02, 1.023e-01, -5.083e-02, -1.080e-01, 1.099e-02, -2.751e-01, -2.276e-02, -2.410e-02), r);\n\tr = MulAdd(s1_8, M4(6.250e-02, -1.419e-01, -2.915e-03, 1.734e-01, 1.879e-01, -1.916e-02, -9.208e-02, 5.980e-02, 3.169e-02, 6.434e-04, 2.046e-02, -3.522e-03, 2.520e-01, -8.233e-02, -1.115e-01, 2.729e-01), r);\n\tr = MulAdd(s2_0, M4(-4.664e-04, -4.989e-02, -1.104e-01, 1.057e-01, -1.360e-01, 2.355e-01, -4.501e-02, -1.698e-01, -2.486e-02, -9.401e-02, -1.214e-01, -1.000e-01, -4.274e-02, -1.672e-02, -2.114e-01, 2.534e-02), r);\n\tr = MulAdd(s2_1, M4(4.812e-02, -9.418e-02, -1.018e-01, -8.638e-03, 3.706e-02, 7.197e-02, -2.987e-02, 3.142e-02, 1.394e-01, -3.675e-01, -7.134e-02, -5.112e-02, -4.693e-02, -2.533e-01, -3.831e-01, 3.512e-01), r);\n\tr = MulAdd(s2_2, M4(9.591e-02, -1.676e-01, -9.105e-02, 2.459e-02, -1.919e-01, -1.080e-01, -4.686e-02, -2.874e-01, 1.909e-02, -2.085e-01, -2.761e-01, -2.017e-01, 3.358e-01, -4.021e-01, -3.048e-01, 3.027e-01), r);\n\tr = MulAdd(s2_3, M4(-1.724e-01, -7.723e-02, 4.065e-02, 8.664e-02, 9.049e-02, 2.755e-01, -2.836e-01, -3.475e-01, 1.131e-01, -6.232e-03, 5.263e-02, -1.029e-01, -2.092e-01, 9.432e-04, -1.458e-01, 1.312e-01), r);\n\tr = MulAdd(s2_4, M4(-2.089e-01, 2.550e-01, 2.688e-01, -1.896e-01, 2.094e-01, -1.791e-01, -8.042e-02, 8.799e-02, -2.168e-02, 2.295e-01, 2.426e-01, -1.890e-02, 5.267e-02, -3.035e-01, -1.247e-01, -4.930e-01), r);\n\tr = MulAdd(s2_5, M4(2.220e-02, 1.895e-01, 5.114e-02, -1.285e-01, -3.346e-01, -2.613e-01, 1.481e-01, 1.299e-01, -6.024e-02, -3.446e-01, 5.558e-02, -3.976e-01, 5.876e-02, 2.849e-02, -1.475e-02, -1.995e-01), r);\n\tr = MulAdd(s2_6, M4(5.093e-02, 1.313e-02, 1.755e-02, 6.282e-03, -1.416e-01, -1.481e-01, 4.453e-02, -2.304e-01, -2.065e-02, 4.309e-02, 1.393e-01, -6.992e-02, -1.607e-01, -3.332e-01, -4.975e-02, -2.214e-02), r);\n\tr = MulAdd(s2_7, M4(2.077e-01, -1.100e-01, 3.094e-02, 3.014e-02, 2.021e-01, -8.420e-02, -7.505e-02, 4.633e-02, -1.732e-01, 1.133e-01, 3.275e-01, 1.928e-01, 1.625e-01, 3.875e-03, -1.657e-01, 1.779e-03), r);\n\tr = MulAdd(s2_8, M4(3.694e-02, 5.474e-03, 5.581e-02, -3.022e-02, -1.588e-01, 1.027e-01, 2.136e-01, -2.300e-02, 7.629e-02, 3.632e-02, -4.073e-02, -4.021e-01, 9.291e-03, 2.195e-02, 4.774e-02, 5.479e-02), r);\n\tr = MulAdd(s3_0, M4(-1.114e-02, -2.405e-01, -5.870e-02, 2.470e-01, -1.186e-01, 8.453e-03, 1.200e-01, 9.027e-02, -9.437e-03, 1.128e-01, -6.882e-02, -1.012e-01, 3.310e-02, 1.354e-03, -7.321e-02, -6.252e-02), r);\n\tr = MulAdd(s3_1, M4(1.713e-01, -1.959e-01, -4.247e-03, -5.163e-02, 1.953e-01, -1.454e-01, -1.412e-01, 3.189e-01, 2.225e-02, -7.657e-02, -1.032e-01, 6.375e-02, 4.638e-02, -2.646e-02, -5.159e-02, -1.400e-01), r);\n\tr = MulAdd(s3_2, M4(-9.414e-02, 1.055e-01, 8.043e-02, -1.504e-01, -6.142e-02, -1.294e-01, -1.302e-01, 1.671e-02, 1.782e-02, -5.430e-02, -1.272e-01, 5.470e-02, -9.129e-02, 5.558e-04, -7.446e-02, -1.080e-01), r);\n\tr = MulAdd(s3_3, M4(-1.609e-01, 2.412e-01, 1.539e-02, 1.635e-01, 5.731e-02, 4.505e-02, -1.987e-01, 1.142e-01, 7.460e-02, 1.938e-01, -1.055e-01, -1.156e-01, 2.912e-02, -3.555e-02, 4.497e-03, 5.731e-02), r);\n\tr = MulAdd(s3_4, M4(-2.135e-02, 1.500e-01, -4.374e-02, 2.777e-02, 1.931e-01, -1.217e-01, -4.481e-02, 2.285e-01, 1.289e-01, -1.594e-02, -9.186e-02, 2.677e-01, -1.608e-01, 6.458e-03, 1.041e-01, 2.212e-02), r);\n\tr = MulAdd(s3_5, M4(-4.324e-01, 2.047e-01, 4.299e-02, -2.363e-01, -3.169e-02, 1.719e-03, -1.141e-03, 1.626e-01, -1.440e-01, -4.942e-02, 3.266e-02, 2.561e-02, -7.315e-03, 3.041e-01, 1.774e-01, -5.855e-02), r);\n\tr = MulAdd(s3_6, M4(-2.103e-01, -1.573e-01, -1.381e-01, -3.838e-02, -1.851e-04, -8.056e-02, -4.797e-02, -9.107e-02, 5.331e-03, 3.598e-02, -5.975e-02, -1.012e-02, 4.188e-02, 3.601e-02, 6.932e-02, 2.420e-02), r);\n\tr = MulAdd(s3_7, M4(1.788e-01, -1.795e-01, -2.201e-01, -1.477e-01, -9.825e-02, 1.962e-01, 8.007e-02, -9.079e-02, -2.744e-01, 7.188e-02, -1.559e-02, -5.103e-02, -7.550e-03, 2.157e-02, 1.767e-02, 6.859e-03), r);\n\tr = MulAdd(s3_8, M4(-5.107e-02, -6.800e-02, -9.903e-02, 1.452e-01, 1.844e-02, 4.129e-03, 1.381e-02, 5.966e-02, -4.372e-02, 9.473e-02, -6.700e-02, 8.696e-02, -2.279e-01, 5.274e-02, 8.592e-02, -3.748e-02), r);\n\tr = MulAdd(s4_0, M4(2.020e-01, -3.807e-01, -3.319e-01, 1.218e-01, -1.111e-01, 1.247e-01, -1.426e-02, 1.241e-01, 2.500e-01, -2.348e-01, 8.659e-02, 1.143e-01, 7.011e-02, 2.251e-01, 1.403e-01, 3.869e-02), r);\n\tr = MulAdd(s4_1, M4(4.766e-01, -1.855e-01, -8.916e-02, -9.894e-02, 5.991e-01, -2.487e-02, 1.151e-01, 3.345e-01, -5.781e-02, 9.442e-02, 7.019e-03, -2.077e-02, 2.310e-03, 1.404e-01, 2.783e-01, -1.494e-01), r);\n\tr = MulAdd(s4_2, M4(7.451e-02, -1.099e-01, 3.675e-02, 1.111e-02, 4.328e-02, 1.623e-01, 3.479e-02, 5.629e-03, -2.138e-01, 2.511e-01, -1.213e-01, 1.228e-01, -1.394e-03, 2.696e-01, -8.794e-02, -4.609e-02), r);\n\tr = MulAdd(s4_3, M4(9.251e-03, -2.668e-01, -2.042e-01, -7.595e-02, -6.389e-02, 1.573e-02, -6.267e-02, 6.237e-04, 5.438e-02, 3.235e-01, -1.413e-01, -5.880e-02, 2.368e-01, -2.608e-02, -3.962e-01, 2.038e-01), r);\n\tr = MulAdd(s4_4, M4(3.697e-01, -2.039e-01, 3.670e-02, 1.657e-01, -2.546e-01, -5.970e-02, 1.157e-01, -8.191e-02, 1.630e-01, -2.037e-01, -1.200e-01, 1.127e-01, 2.758e-02, 1.736e-01, 8.863e-02, -6.960e-03), r);\n\tr = MulAdd(s4_5, M4(5.224e-02, -2.290e-01, -1.657e-01, 1.463e-01, 2.281e-01, -2.390e-01, -1.169e-01, 5.749e-02, 3.311e-01, -4.811e-02, -2.389e-01, 8.186e-03, 6.221e-02, -9.661e-02, 2.287e-01, 2.388e-01), r);\n\tr = MulAdd(s4_6, M4(1.481e-01, -5.240e-02, -1.941e-02, 8.818e-02, 2.495e-01, -1.412e-02, -2.608e-02, -4.810e-02, -2.315e-01, -8.362e-02, 4.897e-02, -2.118e-02, -1.361e-01, 1.350e-02, -1.880e-01, 1.905e-01), r);\n\tr = MulAdd(s4_7, M4(4.878e-01, -1.511e-01, -1.736e-03, -3.363e-02, -5.360e-01, 7.955e-02, 7.788e-02, 9.979e-02, 2.209e-01, 4.757e-02, -1.000e-01, 4.289e-02, 3.118e-01, -6.413e-02, -1.840e-01, 2.950e-01), r);\n\tr = MulAdd(s4_8, M4(3.545e-01, 6.789e-02, 1.073e-01, -1.039e-02, 1.130e-02, 2.724e-02, -1.097e-02, -5.575e-02, 2.353e-02, -8.818e-02, -3.032e-02, -1.197e-01, 1.907e-01, -1.782e-01, -2.438e-01, 6.993e-02), r);\n\tr = MulAdd(s5_0, M4(-1.077e-01, 1.371e-01, 1.620e-01, -6.391e-02, 1.730e-01, -2.195e-02, 1.333e-01, -5.393e-02, 2.290e-01, -1.654e-01, 6.814e-02, 6.463e-02, 1.763e-02, 7.299e-02, -9.175e-02, 4.784e-03), r);\n\tr = MulAdd(s5_1, M4(9.838e-02, -2.407e-02, 1.090e-01, -4.032e-02, -2.245e-01, 9.300e-02, 1.714e-01, 7.662e-02, -1.342e-01, 1.574e-01, -2.104e-01, -7.998e-02, -9.281e-02, -1.426e-02, -3.546e-02, -1.383e-01), r);\n\tr = MulAdd(s5_2, M4(9.630e-02, -7.988e-02, -4.258e-03, 4.059e-02, 1.575e-01, -2.816e-02, 9.929e-02, -6.793e-02, -1.562e-01, 5.718e-02, -1.190e-01, -2.971e-02, 2.246e-02, 1.853e-01, 2.036e-01, -1.354e-01), r);\n\tr = MulAdd(s5_3, M4(-1.125e-01, 2.767e-02, 1.741e-02, 1.890e-01, -8.985e-02, 5.772e-02, -6.771e-03, 1.740e-01, -1.138e-01, 9.879e-02, 6.454e-02, 2.596e-01, -9.205e-02, 8.011e-02, 2.136e-02, -3.488e-01), r);\n\tr = MulAdd(s5_4, M4(-1.583e-01, 1.084e-01, -1.522e-02, 1.867e-01, 1.444e-01, -7.261e-02, 3.910e-02, 1.073e-01, 3.037e-01, 1.705e-02, -6.208e-02, -7.626e-02, 1.010e-01, -6.482e-03, -2.114e-01, -5.472e-02), r);\n\tr = MulAdd(s5_5, M4(6.420e-02, -4.978e-02, -1.974e-02, -1.764e-01, -1.035e-01, -1.282e-01, 1.841e-02, 1.211e-01, 1.873e-01, -1.638e-02, 1.286e-01, -4.075e-02, -1.992e-01, 3.898e-02, 7.555e-02, 5.191e-02), r);\n\tr = MulAdd(s5_6, M4(4.248e-02, 4.291e-02, -7.928e-02, -5.759e-02, 6.021e-02, -1.298e-01, -4.777e-02, -6.316e-02, -2.009e-01, 3.201e-02, -1.013e-02, 1.052e-01, 3.579e-02, -1.210e-01, -2.331e-01, -1.311e-01), r);\n\tr = MulAdd(s5_7, M4(-6.934e-02, 1.753e-01, 3.212e-02, 6.848e-03, 3.728e-02, -6.126e-02, -1.051e-01, 1.405e-01, -3.361e-01, -1.548e-01, -9.565e-02, 1.302e-01, 5.812e-02, -9.976e-02, -3.195e-01, -1.182e-01), r);\n\tr = MulAdd(s5_8, M4(-1.784e-02, 1.564e-02, 8.872e-02, 2.014e-02, 1.662e-01, -1.599e-02, 3.252e-02, 5.147e-02, -1.107e-01, -2.154e-01, 3.114e-02, 1.464e-01, -1.589e-01, -5.730e-02, -2.735e-01, -1.417e-02), r);\n\tr = MulAdd(s6_0, M4(-2.384e-01, 2.611e-01, -1.268e-01, 1.316e-01, -1.823e-01, 7.801e-02, 9.472e-02, 1.327e-01, -1.290e-02, 6.820e-02, -9.707e-02, 2.936e-02, -1.107e-01, 2.095e-01, 1.146e-01, 5.724e-02), r);\n\tr = MulAdd(s6_1, M4(-1.344e-01, 2.408e-01, 1.536e-01, -3.545e-01, 1.624e-01, 1.110e-01, -7.389e-02, -2.104e-02, 5.315e-02, -1.555e-02, -9.936e-03, 1.219e-01, -1.640e-01, 3.448e-02, 7.913e-02, 1.352e-01), r);\n\tr = MulAdd(s6_2, M4(1.533e-01, -9.037e-03, -1.185e-01, -2.583e-01, -2.308e-01, 2.075e-01, -5.145e-02, -1.724e-01, -1.219e-01, -2.210e-02, -5.663e-02, -1.331e-02, 2.090e-01, -1.316e-01, 4.100e-02, -2.699e-01), r);\n\tr = MulAdd(s6_3, M4(-2.112e-01, -1.713e-02, -1.445e-01, 3.541e-01, 5.172e-02, -6.357e-02, 5.586e-02, -8.194e-02, -1.106e-01, 1.409e-03, -6.749e-02, -6.735e-02, 1.516e-01, -1.863e-03, -1.481e-01, -2.105e-01), r);\n\tr = MulAdd(s6_4, M4(7.159e-01, -5.119e-01, -1.683e-01, 2.406e-01, 1.592e-01, 1.474e-01, 2.973e-01, 8.472e-02, -9.213e-02, -1.400e-01, 9.298e-02, -2.664e-01, -5.050e-02, 2.569e-01, 4.411e-02, 2.103e-01), r);\n\tr = MulAdd(s6_5, M4(-4.620e-01, -8.028e-02, -2.350e-01, 4.759e-02, -4.889e-02, -1.022e-01, -4.022e-03, 9.208e-02, 2.407e-01, 5.864e-03, 2.830e-02, 6.999e-03, -3.806e-02, 3.520e-01, 1.274e-01, 2.909e-02), r);\n\tr = MulAdd(s6_6, M4(-1.176e-01, 1.713e-02, -6.950e-02, 3.435e-01, -2.294e-01, 9.154e-02, -3.631e-02, 1.902e-01, -7.157e-02, -8.642e-02, -7.304e-03, 2.735e-02, 1.880e-01, -9.725e-02, -1.776e-01, 3.204e-02), r);\n\tr = MulAdd(s6_7, M4(-1.755e-01, -6.715e-02, -7.087e-02, -2.950e-01, -2.957e-02, -4.643e-02, -2.744e-02, 1.343e-01, 1.597e-01, -7.456e-03, 4.374e-02, 8.110e-02, 4.893e-01, 1.294e-01, 9.328e-03, -1.487e-01), r);\n\tr = MulAdd(s6_8, M4(-4.028e-02, -1.625e-02, 2.767e-01, 1.098e-01, -3.776e-02, -6.545e-02, 2.046e-02, 1.530e-02, 3.918e-02, -3.557e-02, -7.773e-02, -9.076e-03, -1.003e-01, -1.724e-02, -1.270e-03, -4.472e-02), r);\n\tr = MulAdd(s7_0, M4(-1.844e-01, -4.295e-02, -5.664e-02, 1.616e-01, 6.627e-02, -9.438e-02, -2.259e-01, 1.396e-01, 2.611e-02, 1.834e-01, -2.500e-01, 9.836e-02, -5.051e-02, 3.898e-03, 1.266e-01, 6.027e-03), r);\n\tr = MulAdd(s7_1, M4(1.215e-01, 1.592e-01, 9.098e-02, -1.148e-01, 1.719e-01, -6.846e-02, -1.485e-01, 1.138e-01, 1.436e-01, -1.201e-01, 1.874e-02, 3.492e-01, -1.054e-01, -8.116e-02, 6.488e-02, 1.260e-01), r);\n\tr = MulAdd(s7_2, M4(-1.123e-01, 1.626e-01, -7.825e-02, -1.088e-01, 1.374e-01, -8.742e-02, -1.126e-01, -7.326e-02, -1.524e-02, -1.172e-01, -8.262e-02, 1.151e-01, -2.039e-02, -7.255e-03, 2.493e-01, -1.163e-01), r);\n\tr = MulAdd(s7_3, M4(-1.115e-01, 3.692e-02, 2.518e-02, 2.190e-01, -8.416e-02, -1.554e-01, 5.779e-02, -3.729e-01, -4.536e-02, -2.621e-01, -1.562e-01, -1.263e-01, -4.522e-02, -3.959e-03, 8.233e-02, -3.101e-02), r);\n\tr = MulAdd(s7_4, M4(2.293e-01, -9.952e-02, -1.936e-01, 3.692e-02, 1.759e-02, -2.504e-01, 1.199e-01, 1.134e-01, 1.294e-01, 9.082e-03, 8.671e-02, -2.547e-01, -2.408e-02, 3.526e-02, 1.867e-01, 2.024e-01), r);\n\tr = MulAdd(s7_5, M4(1.211e-01, -3.754e-02, -1.250e-01, 9.511e-02, 1.084e-01, -9.184e-02, 3.417e-02, -5.457e-03, 2.062e-01, 1.586e-01, 2.161e-03, 8.496e-02, 2.035e-01, 1.617e-01, 1.828e-01, -3.025e-02), r);\n\tr = MulAdd(s7_6, M4(-1.154e-01, 1.107e-01, -8.670e-02, 5.546e-02, 1.741e-01, -2.064e-02, 3.745e-02, -2.159e-02, -7.298e-02, -7.743e-02, -4.781e-02, -1.333e-02, -4.613e-02, 3.182e-02, -4.090e-02, 7.631e-02), r);\n\tr = MulAdd(s7_7, M4(-5.393e-02, -1.284e-01, 3.319e-02, -8.761e-02, 2.782e-01, 8.453e-02, -1.033e-01, 3.022e-02, 4.400e-02, 2.091e-01, 8.963e-02, -5.267e-02, -3.514e-02, 4.259e-01, 2.436e-01, -3.799e-02), r);\n\tr = MulAdd(s7_8, M4(1.071e-01, -1.190e-01, 1.713e-01, 7.520e-02, -1.375e-03, -7.968e-03, -5.822e-02, -1.101e-01, -6.349e-03, -1.021e-01, -3.258e-02, -1.664e-03, -3.207e-02, -3.003e-02, 8.426e-02, 6.163e-02), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.502e-02, 2.141e-03, -2.058e-02, 1.180e-02 };\n\tr = MulAdd(s0_0, M4(2.430e-02, -2.502e-03, 6.129e-02, 6.356e-02, -6.155e-02, -7.575e-02, -1.735e-01, 2.518e-02, 6.293e-02, -8.199e-03, 3.854e-02, -1.450e-02, 1.340e-01, 3.969e-02, -1.542e-01, 1.633e-01), r);\n\tr = MulAdd(s0_1, M4(2.588e-02, 1.567e-01, 6.751e-02, 6.298e-02, -4.141e-02, 5.382e-02, -9.239e-02, -1.018e-01, -8.423e-02, -5.073e-02, 1.521e-01, -8.445e-03, -2.287e-01, -1.461e-01, 1.232e-01, -2.732e-01), r);\n\tr = MulAdd(s0_2, M4(-3.856e-02, 6.064e-02, 9.084e-02, 3.555e-02, -1.407e-02, -1.076e-01, 1.188e-01, -5.670e-02, -8.707e-02, 5.879e-02, 5.196e-02, 2.004e-02, -2.128e-02, 7.286e-02, 1.653e-01, 7.814e-02), r);\n\tr = MulAdd(s0_3, M4(-5.635e-02, 6.645e-02, 2.274e-01, -3.328e-03, 6.878e-03, -1.448e-02, 4.074e-02, -2.986e-03, 7.733e-02, 9.767e-02, -1.488e-01, -3.001e-02, 2.552e-01, -4.813e-01, 2.380e-01, 3.349e-01), r);\n\tr = MulAdd(s0_4, M4(-9.538e-02, -9.769e-02, -1.525e-01, 4.189e-02, -6.814e-02, -8.984e-02, 3.600e-02, 1.161e-01, -9.361e-04, 3.397e-02, -5.772e-02, -1.352e-01, 1.652e-01, 2.967e-01, -3.507e-01, -3.361e-01), r);\n\tr = MulAdd(s0_5, M4(-2.982e-02, -9.992e-02, -8.754e-02, -5.282e-02, -3.020e-02, -7.405e-02, 1.307e-02, 2.055e-01, 7.412e-02, 3.693e-02, 1.558e-01, -2.303e-02, -3.333e-01, 1.319e-01, 8.950e-03, -1.264e-01), r);\n\tr = MulAdd(s0_6, M4(-4.504e-02, 1.119e-02, -1.500e-01, 3.713e-02, 1.535e-01, 8.320e-02, 6.245e-02, -4.285e-02, 5.770e-02, -1.590e-02, -7.777e-02, -4.296e-02, -2.475e-01, -2.060e-01, -3.452e-02, -5.126e-03), r);\n\tr = MulAdd(s0_7, M4(-1.587e-01, 5.268e-02, -5.849e-02, 9.573e-03, 5.701e-02, 9.641e-02, -9.526e-02, 7.030e-02, -1.654e-02, -1.078e-01, 8.349e-02, 4.318e-03, 5.628e-03, 1.483e-01, 2.488e-01, -5.701e-01), r);\n\tr = MulAdd(s0_8, M4(1.630e-02, -4.883e-02, -3.023e-02, 9.988e-03, -5.532e-02, 9.620e-03, -1.785e-02, 2.546e-03, -9.849e-03, -1.123e-01, -5.571e-02, -6.771e-02, -1.957e-01, -2.368e-01, 1.368e-01, 1.634e-01), r);\n\tr = MulAdd(s1_0, M4(-1.197e-02, -7.756e-02, -1.080e-01, 4.262e-02, 3.548e-02, -9.235e-02, -3.710e-02, -5.714e-02, -1.188e-03, -2.066e-02, -5.759e-02, 2.447e-01, 2.317e-02, 2.063e-02, -4.138e-02, 9.497e-02), r);\n\tr = MulAdd(s1_1, M4(1.251e-01, 1.449e-01, 2.212e-02, 6.304e-02, 1.226e-02, 5.597e-02, -3.858e-01, -1.712e-01, 9.556e-02, 1.928e-01, 1.014e-01, -1.521e-01, -7.535e-02, 3.528e-02, 1.629e-02, 2.299e-02), r);\n\tr = MulAdd(s1_2, M4(3.850e-02, 8.374e-02, -7.629e-02, 1.294e-01, -5.879e-03, 2.033e-02, -1.193e-01, -9.012e-02, -3.272e-02, -6.056e-02, -1.866e-01, -4.290e-02, -1.694e-02, 5.956e-03, 9.157e-03, -3.825e-02), r);\n\tr = MulAdd(s1_3, M4(1.604e-01, 4.090e-02, 7.334e-02, 2.415e-02, 3.192e-01, -2.538e-02, 2.221e-01, -2.832e-01, 7.005e-02, -1.376e-01, -1.501e-01, 1.552e-01, -5.752e-02, -1.340e-02, 3.240e-02, 5.229e-02), r);\n\tr = MulAdd(s1_4, M4(-5.953e-02, -1.548e-01, 1.631e-01, 2.119e-02, 7.934e-02, 2.167e-01, 1.857e-01, -1.035e-01, 1.381e-01, 3.463e-02, -2.884e-01, 4.351e-01, 1.858e-01, -8.326e-02, -2.519e-02, -9.710e-02), r);\n\tr = MulAdd(s1_5, M4(6.947e-02, -8.995e-02, 2.487e-01, -2.135e-01, 3.198e-03, -9.266e-02, -1.341e-01, 3.048e-02, 8.311e-02, -2.381e-01, 2.681e-02, 5.102e-02, 3.620e-02, 2.993e-02, 1.298e-02, -6.167e-02), r);\n\tr = MulAdd(s1_6, M4(3.554e-01, 4.870e-02, -8.663e-02, 6.653e-02, 1.344e-01, -5.864e-02, 9.889e-02, -2.758e-01, 1.533e-01, 1.133e-01, -1.640e-01, -5.022e-02, -6.187e-02, -1.555e-03, -1.428e-02, -3.003e-02), r);\n\tr = MulAdd(s1_7, M4(-1.435e-01, 3.390e-02, -3.164e-01, 2.373e-01, 2.667e-01, -5.951e-02, -5.348e-02, -4.216e-02, 1.783e-01, 4.678e-01, 1.639e-01, -9.901e-02, -1.401e-01, -5.017e-03, -8.770e-02, 2.325e-02), r);\n\tr = MulAdd(s1_8, M4(-7.280e-02, -1.682e-01, -1.215e-02, 8.937e-02, -3.245e-02, -8.058e-02, 5.462e-02, -1.603e-01, 4.640e-02, -1.189e-01, -2.991e-03, -1.409e-01, 4.921e-02, -6.372e-02, 4.113e-02, -8.392e-03), r);\n\tr = MulAdd(s2_0, M4(2.396e-02, 4.426e-02, 7.507e-02, -2.888e-03, 1.127e-02, -1.107e-03, -1.501e-01, -4.166e-02, 6.494e-02, 4.537e-02, 1.415e-01, 2.229e-02, 5.914e-02, -3.564e-04, 2.547e-02, -4.783e-02), r);\n\tr = MulAdd(s2_1, M4(4.173e-02, -2.709e-02, -8.981e-03, -6.010e-02, 2.876e-02, 1.221e-02, -8.832e-03, -3.574e-02, 1.257e-01, -3.440e-02, 2.348e-01, 2.222e-01, -7.485e-04, -3.096e-02, 7.948e-02, -4.845e-02), r);\n\tr = MulAdd(s2_2, M4(-9.122e-03, 1.967e-02, 7.223e-02, 5.584e-03, -1.126e-01, 9.523e-02, -1.517e-01, -3.730e-02, 6.605e-02, 1.327e-01, 6.751e-02, -5.396e-02, 5.221e-02, 5.649e-02, -2.484e-01, -4.794e-02), r);\n\tr = MulAdd(s2_3, M4(-6.743e-02, -5.392e-02, -3.705e-02, 1.631e-02, 5.557e-03, -6.563e-03, 4.973e-03, 1.547e-01, -5.396e-02, -9.422e-02, -1.079e-01, 1.227e-01, 6.776e-02, 9.316e-02, -3.001e-02, 7.081e-02), r);\n\tr = MulAdd(s2_4, M4(-5.178e-02, 2.642e-02, 1.853e-01, -6.710e-03, -1.842e-02, 6.398e-02, -1.168e-02, 1.464e-01, -8.433e-02, -1.485e-01, -1.797e-02, -6.697e-03, -3.999e-02, 1.180e-01, -8.230e-02, 7.239e-03), r);\n\tr = MulAdd(s2_5, M4(-3.445e-02, 1.215e-01, -4.651e-02, 1.042e-01, 2.504e-02, 1.252e-01, 4.106e-02, -2.745e-02, 3.966e-02, -8.817e-02, -2.228e-02, 1.102e-01, -8.929e-02, 3.381e-03, -6.434e-02, 7.325e-03), r);\n\tr = MulAdd(s2_6, M4(-1.106e-02, -4.253e-02, 1.019e-01, 4.586e-04, 7.738e-02, 8.312e-02, 5.753e-02, 4.607e-02, -2.998e-01, -3.446e-03, -4.848e-03, 1.264e-01, -3.766e-02, -3.247e-02, -3.531e-02, -1.165e-01), r);\n\tr = MulAdd(s2_7, M4(-8.607e-02, -3.008e-01, -1.574e-01, -2.179e-01, -4.569e-02, 1.867e-02, 1.438e-02, -8.711e-02, -1.629e-02, -1.113e-01, 7.664e-02, 9.039e-03, 1.211e-01, -4.794e-02, 3.923e-02, 2.456e-01), r);\n\tr = MulAdd(s2_8, M4(5.356e-02, 2.222e-02, -3.259e-02, 3.216e-02, 6.819e-03, -4.598e-02, -9.678e-02, 5.281e-02, -3.978e-02, 5.241e-02, 1.722e-01, 3.001e-02, 9.125e-02, 7.772e-02, 8.599e-02, -8.592e-02), r);\n\tr = MulAdd(s3_0, M4(3.115e-02, 1.028e-01, -6.195e-02, 2.367e-02, -1.322e-01, -7.176e-02, 7.053e-02, 1.276e-01, 4.564e-02, 1.063e-02, 8.671e-02, 1.843e-02, 3.702e-02, -7.545e-02, 1.198e-01, -1.720e-01), r);\n\tr = MulAdd(s3_1, M4(2.552e-02, -6.462e-02, -7.313e-02, 4.329e-02, 3.530e-02, -3.807e-02, -1.673e-02, -1.561e-01, -1.243e-01, -1.062e-01, 1.733e-01, 1.645e-01, 3.684e-02, 1.227e-01, -7.788e-02, -7.140e-02), r);\n\tr = MulAdd(s3_2, M4(1.483e-02, -1.223e-02, -5.747e-02, -7.337e-02, 2.469e-02, -1.636e-01, -1.594e-01, 2.546e-01, -6.015e-02, 7.157e-02, 1.841e-01, -1.612e-02, 7.649e-02, -4.488e-02, -9.112e-02, -5.642e-03), r);\n\tr = MulAdd(s3_3, M4(6.861e-02, 1.171e-02, -2.535e-01, 1.983e-01, -1.498e-01, -4.660e-02, -6.927e-02, 8.195e-02, 3.378e-02, 1.077e-01, -2.126e-01, -1.488e-01, 9.868e-02, 6.725e-02, -5.056e-02, -9.546e-02), r);\n\tr = MulAdd(s3_4, M4(-8.023e-02, -1.265e-01, 3.597e-02, -2.229e-02, -1.194e-02, -2.538e-01, -7.756e-03, -3.325e-02, -1.065e-01, -1.217e-02, -1.758e-01, -8.267e-03, -5.941e-03, 2.422e-01, 2.235e-01, -8.565e-02), r);\n\tr = MulAdd(s3_5, M4(1.598e-01, -1.432e-01, 1.035e-01, 1.283e-02, 4.021e-02, 8.888e-03, 2.267e-01, 2.556e-02, -1.227e-01, 1.103e-01, 1.254e-01, 5.504e-02, -8.774e-02, 7.539e-02, 2.931e-02, -1.855e-02), r);\n\tr = MulAdd(s3_6, M4(5.906e-02, -4.077e-02, 1.489e-01, 1.314e-01, -3.541e-01, 1.956e-03, 1.613e-02, -2.846e-02, 1.842e-01, 2.073e-02, 1.122e-02, 2.773e-02, -1.092e-01, 2.624e-02, -1.591e-02, -1.047e-01), r);\n\tr = MulAdd(s3_7, M4(3.114e-01, -4.035e-02, -1.719e-01, -1.601e-02, -5.080e-01, -3.678e-02, -2.460e-02, 9.596e-02, 1.603e-01, 2.930e-03, 7.151e-03, -1.612e-01, -9.080e-02, -1.158e-01, -3.950e-02, 7.667e-02), r);\n\tr = MulAdd(s3_8, M4(4.895e-04, 7.552e-02, -1.776e-01, 1.818e-01, -7.535e-02, -7.622e-02, -1.121e-01, 5.100e-03, -2.094e-02, 4.762e-02, 5.506e-02, 8.806e-02, 7.822e-03, 4.282e-02, -5.181e-02, -9.044e-03), r);\n\tr = MulAdd(s4_0, M4(2.090e-02, 5.948e-02, -1.547e-01, 3.702e-02, -8.610e-04, -3.230e-02, -1.227e-01, 3.420e-02, -4.326e-02, -6.442e-02, 2.825e-01, 5.421e-03, 2.814e-02, -8.593e-03, -8.132e-02, -3.103e-03), r);\n\tr = MulAdd(s4_1, M4(-2.322e-01, -3.469e-01, -2.500e-01, -3.387e-02, -6.166e-02, -3.307e-02, -1.402e-01, -1.919e-02, 1.674e-01, -8.884e-02, 1.193e-01, 1.444e-01, -2.201e-02, -1.885e-01, -4.131e-01, 2.004e-01), r);\n\tr = MulAdd(s4_2, M4(-2.260e-01, 4.543e-02, -2.431e-01, 1.101e-01, -5.023e-02, 8.514e-02, -2.432e-02, 8.143e-02, -8.401e-02, -1.176e-01, -1.595e-01, -1.600e-01, -1.187e-01, -4.430e-02, 1.121e-01, -3.468e-02), r);\n\tr = MulAdd(s4_3, M4(-5.215e-03, -1.233e-01, 7.827e-02, -5.274e-02, 1.962e-02, -4.484e-02, 5.968e-02, 1.161e-01, -8.261e-02, 8.903e-02, 1.394e-03, -2.465e-02, 3.084e-02, 1.483e-02, -2.100e-01, -1.218e-01), r);\n\tr = MulAdd(s4_4, M4(1.997e-01, -6.270e-02, 1.550e-01, -1.618e-02, -3.016e-02, 3.239e-01, 8.539e-02, -7.489e-02, 2.133e-02, -3.946e-01, 1.209e-01, 7.094e-01, -9.293e-03, 1.545e-02, 1.811e-01, 8.852e-02), r);\n\tr = MulAdd(s4_5, M4(-1.151e-01, 1.454e-01, 1.800e-01, 4.234e-02, 1.568e-02, -2.295e-01, -1.812e-01, 8.562e-02, 1.648e-01, -7.203e-02, -1.982e-01, -1.259e-01, 5.267e-02, -2.894e-02, -7.699e-02, -1.009e-01), r);\n\tr = MulAdd(s4_6, M4(-1.691e-02, -1.591e-02, 6.519e-02, -1.106e-01, 3.055e-02, -7.047e-02, -1.120e-01, 5.428e-02, 2.806e-02, -7.755e-02, -1.886e-01, 1.087e-01, 1.662e-01, 2.564e-02, 7.856e-02, 5.331e-02), r);\n\tr = MulAdd(s4_7, M4(1.820e-01, 4.350e-02, 5.261e-02, 1.101e-01, 1.758e-01, -2.128e-01, -8.567e-02, -1.119e-01, -5.122e-02, -1.566e-01, -1.069e-01, 8.537e-02, 1.297e-01, 6.946e-02, 8.958e-02, 4.395e-02), r);\n\tr = MulAdd(s4_8, M4(-5.285e-03, 4.673e-02, -4.109e-02, 8.651e-02, 1.925e-02, 5.814e-02, -1.975e-02, 1.046e-01, 7.454e-02, -1.315e-01, 1.961e-02, -2.057e-01, 6.031e-03, 8.229e-02, -1.340e-01, -7.076e-02), r);\n\tr = MulAdd(s5_0, M4(8.428e-02, -6.466e-02, -1.203e-01, 9.652e-02, -9.675e-03, 9.028e-02, 9.799e-03, -4.970e-03, 7.256e-03, -1.621e-02, 1.486e-03, 2.717e-02, 1.641e-02, 1.739e-02, -5.012e-02, 8.156e-02), r);\n\tr = MulAdd(s5_1, M4(-9.258e-02, -2.166e-01, 1.321e-01, 5.894e-02, 4.417e-02, -3.021e-02, -1.223e-01, 1.535e-02, -3.462e-02, 2.490e-02, 1.146e-01, -1.133e-01, -3.950e-02, -7.089e-02, 5.085e-03, 1.121e-01), r);\n\tr = MulAdd(s5_2, M4(-5.568e-03, 3.933e-02, 1.782e-01, -3.796e-02, -4.307e-02, -2.704e-02, 1.217e-01, 2.829e-02, 3.353e-02, -4.298e-02, 1.166e-01, -5.746e-03, -4.542e-02, -6.204e-02, -6.279e-02, 9.747e-02), r);\n\tr = MulAdd(s5_3, M4(6.976e-02, -8.809e-02, 6.384e-02, 6.630e-02, -5.726e-02, 5.241e-02, -2.371e-04, -4.323e-02, 5.460e-02, 2.087e-02, -7.948e-02, 3.768e-03, 3.190e-02, 1.526e-02, 6.161e-02, -1.331e-01), r);\n\tr = MulAdd(s5_4, M4(2.771e-02, -2.025e-01, -9.295e-02, 1.869e-03, -6.839e-03, -8.896e-02, 2.431e-01, 1.043e-01, 2.362e-02, -3.601e-02, -7.062e-02, -2.395e-02, -5.630e-02, 1.035e-01, -1.120e-01, -4.269e-02), r);\n\tr = MulAdd(s5_5, M4(-6.221e-02, 5.515e-02, -6.945e-02, -2.008e-02, -5.769e-02, -2.422e-01, -4.253e-02, -5.424e-02, 1.082e-01, -3.192e-01, 2.441e-01, -4.830e-02, 1.521e-01, -8.100e-02, 6.139e-02, 2.581e-02), r);\n\tr = MulAdd(s5_6, M4(6.218e-02, 1.707e-02, 5.381e-02, 4.556e-02, -1.143e-01, -3.433e-02, 1.830e-02, 7.153e-03, -2.423e-03, -2.425e-02, -4.516e-02, 2.008e-02, 7.175e-02, 2.979e-02, 8.772e-02, 2.496e-02), r);\n\tr = MulAdd(s5_7, M4(1.569e-01, 8.843e-02, 8.214e-02, -3.816e-03, 1.612e-02, -1.714e-01, 6.246e-02, -6.355e-02, -1.388e-01, 6.606e-02, -1.192e-01, 5.246e-02, 1.004e-01, 2.411e-01, 1.450e-01, -2.187e-03), r);\n\tr = MulAdd(s5_8, M4(3.150e-02, 1.450e-01, -7.715e-02, 4.629e-02, 1.862e-02, 2.719e-02, 8.752e-02, -1.093e-01, 5.075e-02, -6.477e-02, -5.522e-02, -1.557e-02, -1.725e-02, 7.111e-02, -5.877e-02, 4.227e-02), r);\n\tr = MulAdd(s6_0, M4(5.059e-02, 3.600e-02, -1.045e-01, 7.332e-03, 4.851e-02, -6.121e-02, -1.669e-01, -2.964e-02, -5.797e-03, 3.425e-02, -4.846e-02, 2.897e-02, -6.363e-02, -4.005e-02, -1.674e-01, -6.592e-02), r);\n\tr = MulAdd(s6_1, M4(-7.886e-02, -3.454e-02, -4.988e-02, 7.899e-02, -1.289e-01, 5.159e-02, -1.258e-02, 1.658e-01, 5.253e-02, -1.218e-01, 9.302e-02, 1.078e-03, 2.690e-02, 6.063e-02, 3.983e-02, -6.998e-02), r);\n\tr = MulAdd(s6_2, M4(4.389e-02, -2.511e-02, 1.766e-02, 3.051e-02, -2.096e-01, -1.513e-02, -2.819e-01, 1.285e-02, 2.957e-02, 3.381e-02, -3.444e-02, 4.307e-02, -1.404e-02, -6.485e-02, 2.216e-01, -2.653e-01), r);\n\tr = MulAdd(s6_3, M4(1.420e-01, -3.867e-02, 1.017e-02, 3.951e-02, 3.024e-01, -6.194e-03, -5.191e-02, -9.082e-02, -3.109e-02, 6.490e-02, 8.594e-02, -1.713e-01, 9.532e-02, 5.568e-02, 2.173e-01, 8.075e-02), r);\n\tr = MulAdd(s6_4, M4(2.442e-02, -1.022e-01, 6.919e-02, -2.534e-02, 1.513e-01, -2.728e-02, 2.169e-01, -1.866e-01, 3.269e-02, 5.941e-02, 1.968e-01, -1.196e-01, 6.886e-02, 3.435e-01, 9.940e-02, 1.840e-01), r);\n\tr = MulAdd(s6_5, M4(-1.406e-02, -4.546e-02, 1.050e-01, -3.953e-02, 2.146e-01, -3.592e-02, 8.963e-02, -2.727e-01, 2.125e-02, -1.543e-01, 8.049e-02, 4.861e-02, -4.433e-02, 3.279e-01, -6.396e-02, 2.270e-01), r);\n\tr = MulAdd(s6_6, M4(1.996e-02, 5.264e-02, -6.494e-03, 4.879e-02, -2.092e-02, -1.126e-01, -2.927e-01, -7.429e-02, -1.299e-01, -6.691e-02, 3.593e-02, 6.911e-02, 2.352e-02, 2.037e-02, 1.791e-03, 7.659e-02), r);\n\tr = MulAdd(s6_7, M4(3.134e-02, 7.911e-04, -4.691e-02, 6.814e-02, -1.124e-01, -3.115e-01, -3.733e-01, 3.364e-01, -4.880e-02, 1.425e-01, -8.420e-02, -1.705e-01, 1.497e-01, 4.582e-02, 2.033e-02, -1.566e-01), r);\n\tr = MulAdd(s6_8, M4(-2.332e-02, 1.154e-01, -3.068e-02, 1.733e-02, 7.944e-04, -1.321e-01, -1.958e-01, 9.601e-02, -1.902e-02, -1.278e-01, 2.439e-02, -9.167e-03, 2.557e-02, 2.074e-01, -6.324e-03, -2.506e-01), r);\n\tr = MulAdd(s7_0, M4(-9.704e-02, 8.497e-02, 4.279e-01, -2.315e-01, 6.230e-02, -1.185e-02, 5.086e-02, -5.616e-02, -4.671e-02, -5.134e-02, 1.671e-01, -5.957e-02, 1.091e-02, -3.777e-02, -9.111e-03, -7.947e-02), r);\n\tr = MulAdd(s7_1, M4(1.325e-01, 1.757e-01, 1.235e-01, 2.153e-01, -4.627e-02, -6.814e-02, 1.869e-01, 1.260e-02, 1.781e-01, 3.753e-02, -8.738e-03, -5.145e-02, -9.106e-02, -1.544e-02, 1.918e-01, 3.458e-02), r);\n\tr = MulAdd(s7_2, M4(-1.953e-01, 2.622e-01, 2.068e-01, -1.512e-01, -2.271e-03, -2.426e-02, 4.496e-03, 2.948e-02, 9.174e-02, 5.540e-02, -3.832e-01, -3.503e-03, -1.018e-01, 4.478e-02, -2.541e-02, -2.804e-02), r);\n\tr = MulAdd(s7_3, M4(-7.293e-02, 1.416e-01, -4.117e-01, -4.729e-02, 7.547e-02, 7.161e-02, -1.651e-01, -2.265e-02, 4.845e-02, 2.563e-02, -3.190e-02, -8.842e-02, 6.109e-02, -1.210e-02, 1.880e-01, -7.380e-02), r);\n\tr = MulAdd(s7_4, M4(-9.428e-02, -1.562e-01, -9.766e-02, 1.031e-01, 2.406e-03, 6.987e-02, -1.348e-01, 9.654e-02, -1.417e-02, 1.787e-01, -1.476e-01, -6.345e-02, 2.099e-02, 7.796e-03, -2.826e-02, -1.217e-01), r);\n\tr = MulAdd(s7_5, M4(-1.551e-01, 1.827e-01, -9.766e-02, -2.134e-01, 4.146e-02, 9.782e-02, -1.664e-01, 1.176e-01, -1.567e-01, -1.144e-01, 1.927e-01, -2.515e-02, 1.365e-02, 2.013e-01, -5.611e-02, 1.228e-01), r);\n\tr = MulAdd(s7_6, M4(-9.818e-02, 1.221e-01, -1.325e-01, 1.431e-01, 6.329e-02, 2.043e-02, 3.903e-02, 3.868e-02, -1.627e-01, -1.269e-01, 8.569e-03, -3.293e-02, -2.025e-01, -7.457e-02, -5.839e-02, 1.231e-02), r);\n\tr = MulAdd(s7_7, M4(-6.773e-02, 3.339e-01, -2.705e-02, -2.185e-01, -2.356e-03, 7.593e-02, 6.016e-02, 8.892e-02, 3.956e-01, -1.463e-01, 3.654e-01, -1.317e-01, -1.505e-01, -7.638e-02, -5.450e-03, -1.264e-01), r);\n\tr = MulAdd(s7_8, M4(-1.649e-01, -1.729e-02, -7.593e-02, 8.465e-02, -3.762e-02, -4.065e-02, 9.005e-02, -1.389e-02, -3.085e-02, 1.258e-02, -1.305e-01, 7.684e-02, -3.777e-02, -8.700e-02, 6.696e-03, -4.232e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.776e-02, -8.120e-03, 1.695e-02, -8.298e-03 };\n\tr = MulAdd(s0_0, M4(3.627e-02, -3.706e-02, 2.273e-03, 1.536e-02, 5.301e-03, -1.796e-02, 1.585e-02, 5.789e-02, 3.824e-02, -2.587e-02, -6.336e-02, 2.388e-02, -1.271e-01, -7.856e-02, 1.474e-01, -2.274e-01), r);\n\tr = MulAdd(s0_1, M4(4.593e-02, -1.174e-01, 9.351e-02, -8.614e-02, 2.725e-02, -6.049e-02, 2.536e-03, 2.922e-02, -3.083e-02, -1.015e-02, -5.483e-02, 4.235e-02, 1.300e-01, -1.464e-02, 1.705e-01, 1.818e-01), r);\n\tr = MulAdd(s0_2, M4(2.636e-02, -6.043e-02, -9.670e-02, 2.721e-02, -8.521e-02, 3.564e-02, -4.830e-03, 1.304e-02, -5.090e-02, -2.392e-02, 6.243e-03, -2.102e-02, -2.274e-01, -1.684e-01, -1.534e-01, 2.337e-01), r);\n\tr = MulAdd(s0_3, M4(4.204e-02, -1.005e-01, 6.872e-02, 4.869e-02, -6.030e-02, 7.907e-02, -6.551e-02, 2.803e-02, -7.273e-02, 1.702e-02, -8.917e-02, 8.109e-02, 9.057e-02, 2.228e-02, -4.067e-01, -2.123e-01), r);\n\tr = MulAdd(s0_4, M4(1.333e-01, 4.912e-02, 7.565e-02, 3.742e-03, 3.059e-02, -3.174e-02, -6.240e-02, 5.730e-02, -7.866e-02, -1.045e-02, 8.373e-02, 5.979e-02, -4.503e-01, 2.687e-01, -7.459e-02, 4.265e-01), r);\n\tr = MulAdd(s0_5, M4(-5.302e-02, 6.140e-02, 7.408e-03, 8.252e-02, -1.031e-02, 1.042e-01, -3.733e-02, -3.354e-02, 7.338e-03, -5.500e-02, 1.031e-01, 2.960e-02, 3.828e-01, -2.754e-02, -2.871e-01, 1.416e-01), r);\n\tr = MulAdd(s0_6, M4(7.235e-02, -9.262e-02, -4.357e-02, 8.340e-02, -3.616e-02, 1.498e-02, 7.191e-02, -7.057e-02, 2.108e-02, -4.524e-03, -2.951e-02, -4.385e-02, 1.128e-01, -3.883e-02, -2.984e-01, 1.454e-01), r);\n\tr = MulAdd(s0_7, M4(4.685e-02, 3.870e-03, -9.658e-02, -4.813e-02, 1.318e-02, -5.383e-02, -6.818e-02, 1.219e-02, -6.892e-02, -1.896e-02, -1.107e-01, 5.092e-02, -8.280e-02, 9.133e-02, 1.534e-01, 1.031e-01), r);\n\tr = MulAdd(s0_8, M4(-7.269e-03, 1.340e-02, 6.275e-02, 7.108e-03, 6.567e-02, 2.403e-03, -3.498e-02, -1.143e-02, -6.371e-02, 9.872e-02, -1.041e-01, -2.016e-02, -3.668e-01, 2.973e-01, -1.393e-01, 1.399e-01), r);\n\tr = MulAdd(s1_0, M4(6.435e-02, 1.008e-02, -3.227e-02, 1.622e-01, 3.116e-02, 1.173e-01, 4.471e-02, 4.926e-02, 1.794e-01, 3.143e-02, -1.059e-01, 6.966e-02, -4.122e-02, -1.442e-02, 5.200e-02, 1.345e-02), r);\n\tr = MulAdd(s1_1, M4(8.526e-02, -1.183e-01, 5.110e-02, -4.240e-02, 3.903e-02, 4.467e-02, -7.250e-02, -1.168e-01, 2.552e-01, -1.188e-02, -8.694e-02, 1.658e-02, 1.522e-01, 2.154e-02, -5.800e-02, -9.179e-02), r);\n\tr = MulAdd(s1_2, M4(6.380e-02, -6.909e-02, -2.660e-02, 4.635e-02, 1.963e-02, 8.193e-03, 1.138e-02, 5.036e-02, 1.687e-02, 9.006e-02, -2.169e-02, -3.294e-02, -4.215e-02, -6.957e-02, -4.407e-02, 1.604e-02), r);\n\tr = MulAdd(s1_3, M4(8.150e-02, -3.895e-02, 1.754e-01, 4.230e-02, -1.249e-01, 2.390e-01, 5.074e-02, -3.046e-02, 2.020e-02, 2.077e-01, 1.416e-01, -1.547e-01, 5.266e-02, -1.331e-01, 4.703e-02, 5.557e-03), r);\n\tr = MulAdd(s1_4, M4(3.522e-01, -1.193e-01, -9.524e-02, 1.514e-01, 9.165e-02, 5.100e-02, 1.074e-01, -1.809e-01, 1.972e-01, -2.142e-02, 3.038e-01, -1.775e-01, -7.309e-02, 1.762e-01, -2.303e-02, 5.562e-02), r);\n\tr = MulAdd(s1_5, M4(-1.424e-01, 1.279e-01, -4.616e-02, 6.096e-02, 1.339e-01, 6.948e-02, 8.022e-02, 2.968e-02, 5.865e-02, 4.638e-02, -7.140e-02, 3.687e-02, -7.514e-02, -5.826e-02, 1.623e-01, 8.376e-03), r);\n\tr = MulAdd(s1_6, M4(1.101e-01, -3.896e-02, 1.135e-01, 1.991e-02, -3.304e-02, 1.337e-01, 2.981e-01, -4.507e-02, -1.599e-02, 8.470e-02, -1.310e-01, -7.373e-02, 3.429e-02, -6.702e-02, -1.505e-03, 9.035e-02), r);\n\tr = MulAdd(s1_7, M4(1.812e-01, -7.926e-02, 2.959e-02, 7.337e-02, -1.275e-01, -7.013e-02, 1.419e-01, 3.057e-02, -1.709e-02, -1.890e-01, 1.521e-01, -2.855e-02, 8.112e-02, 1.838e-03, -5.860e-02, -4.827e-02), r);\n\tr = MulAdd(s1_8, M4(-1.008e-01, 1.633e-01, -2.021e-01, -2.959e-03, 5.128e-02, 1.395e-01, -1.652e-02, 3.358e-02, 9.271e-02, -6.090e-02, -1.068e-01, 1.570e-02, 2.471e-02, 5.604e-02, -3.309e-02, -8.012e-03), r);\n\tr = MulAdd(s2_0, M4(-7.188e-02, 2.960e-02, 6.470e-02, -4.708e-02, 5.598e-02, 5.825e-02, 4.624e-02, 3.552e-02, 5.060e-02, -1.837e-01, -3.757e-03, 9.105e-02, -5.707e-02, -1.952e-02, -1.222e-02, 6.376e-02), r);\n\tr = MulAdd(s2_1, M4(8.038e-02, -1.987e-02, 1.788e-02, -4.915e-03, -1.764e-02, -1.092e-02, -6.952e-02, 4.656e-02, -3.170e-01, -5.994e-02, 7.551e-02, -2.007e-02, 8.198e-02, 4.931e-02, 2.651e-03, 3.904e-02), r);\n\tr = MulAdd(s2_2, M4(5.293e-02, 3.933e-02, -7.201e-02, -4.464e-03, 5.815e-02, 1.212e-02, -6.521e-02, -2.304e-02, 1.165e-01, -7.738e-02, 1.932e-01, 5.646e-02, -9.020e-02, 1.666e-02, 1.118e-01, -8.715e-02), r);\n\tr = MulAdd(s2_3, M4(3.826e-02, 6.648e-02, -7.553e-02, -4.523e-04, -7.340e-02, -7.885e-02, 8.911e-02, 2.264e-02, 1.029e-01, -1.053e-01, -8.941e-02, 4.054e-01, -2.498e-03, -4.982e-02, 6.183e-02, 1.528e-01), r);\n\tr = MulAdd(s2_4, M4(-1.312e-01, -1.318e-01, 1.237e-01, -1.090e-01, 1.089e-01, 2.118e-02, -1.616e-01, -1.268e-01, 9.568e-03, -5.246e-02, -6.390e-01, -9.805e-02, 1.340e-01, -1.311e-01, -4.989e-02, -2.292e-01), r);\n\tr = MulAdd(s2_5, M4(1.449e-01, -4.417e-02, 1.359e-01, -2.568e-02, 7.714e-02, -7.431e-02, 1.489e-01, 1.559e-02, -1.086e-01, -1.940e-02, -1.070e-01, 1.865e-03, 1.768e-01, -1.110e-01, -9.865e-02, -1.790e-01), r);\n\tr = MulAdd(s2_6, M4(-6.517e-02, 2.601e-02, -1.632e-02, 8.751e-02, -9.319e-03, -3.826e-02, 1.682e-01, 1.859e-02, 6.412e-02, -2.240e-02, -7.695e-02, 8.414e-02, 9.562e-02, -1.344e-02, 3.524e-02, -3.504e-02), r);\n\tr = MulAdd(s2_7, M4(1.413e-01, 2.495e-02, -2.045e-01, -2.954e-03, 8.908e-03, -6.806e-02, -2.154e-02, 2.458e-02, -9.071e-02, 6.857e-02, -1.723e-01, -2.654e-02, -5.486e-02, 1.018e-01, 3.252e-01, -8.761e-02), r);\n\tr = MulAdd(s2_8, M4(-1.249e-02, -2.934e-03, -8.129e-05, -8.104e-02, 4.956e-02, 7.004e-02, 1.413e-02, 3.958e-03, -3.843e-02, 1.097e-02, -1.374e-02, 5.251e-02, 5.842e-03, -8.886e-02, 1.657e-01, 9.379e-03), r);\n\tr = MulAdd(s3_0, M4(-7.571e-03, -2.115e-02, -5.197e-02, 9.415e-02, 8.949e-02, 3.121e-03, -1.294e-01, 3.839e-01, 3.977e-04, 3.072e-03, -7.390e-02, -1.015e-01, -1.002e-01, 1.109e-01, 7.192e-02, 8.343e-02), r);\n\tr = MulAdd(s3_1, M4(1.220e-01, 8.792e-03, -6.851e-02, 2.211e-03, -8.430e-02, 1.781e-01, -2.230e-01, 5.424e-02, -1.278e-01, 4.666e-02, 1.977e-01, 9.164e-02, 7.105e-03, 2.962e-02, -7.392e-02, 1.262e-02), r);\n\tr = MulAdd(s3_2, M4(4.917e-02, -7.202e-02, -4.426e-02, -4.060e-02, -2.578e-01, 1.368e-01, -1.178e-01, 7.409e-02, -5.321e-02, -2.093e-02, 4.148e-02, 8.132e-03, 1.633e-03, 5.683e-02, 5.647e-02, -4.462e-03), r);\n\tr = MulAdd(s3_3, M4(5.651e-02, 6.987e-02, 1.022e-02, 2.228e-02, -3.403e-02, -1.238e-01, -8.688e-02, 2.847e-01, 8.300e-02, 1.064e-01, 5.079e-02, 2.312e-01, -2.011e-02, 4.970e-02, 8.474e-02, 1.646e-01), r);\n\tr = MulAdd(s3_4, M4(1.658e-01, 2.664e-02, 6.081e-04, -1.901e-02, -2.153e-01, 1.785e-01, -1.159e-01, 1.344e-01, 2.095e-01, -6.540e-02, -9.419e-02, 2.543e-02, 2.168e-01, -1.920e-01, -1.066e-01, -3.762e-02), r);\n\tr = MulAdd(s3_5, M4(-2.605e-01, 1.033e-01, 5.749e-02, -7.792e-03, -1.805e-01, 3.559e-02, -8.796e-02, -2.171e-02, -1.491e-02, -1.234e-01, -1.024e-01, -4.689e-02, 8.840e-03, -6.047e-02, -1.086e-01, -8.053e-02), r);\n\tr = MulAdd(s3_6, M4(-7.415e-02, 6.573e-02, -1.010e-02, 1.004e-01, 8.146e-02, 1.904e-02, -2.087e-01, 1.677e-01, -8.537e-02, -9.823e-04, 8.008e-02, -2.436e-02, 1.405e-01, 1.090e-02, -1.450e-02, 1.604e-03), r);\n\tr = MulAdd(s3_7, M4(1.052e-01, 2.178e-01, -1.695e-01, -1.675e-01, 7.965e-02, 9.504e-02, -1.882e-01, 2.795e-02, -1.650e-01, 7.266e-02, 2.497e-01, -1.030e-01, -3.892e-02, 4.202e-02, 5.738e-02, -2.670e-02), r);\n\tr = MulAdd(s3_8, M4(2.595e-01, -1.184e-01, -5.760e-03, 1.873e-03, -3.031e-02, 8.616e-02, -1.890e-01, -3.566e-02, -6.621e-02, -6.521e-02, 9.123e-02, 1.774e-02, 1.456e-02, -4.624e-02, 1.121e-01, 7.075e-02), r);\n\tr = MulAdd(s4_0, M4(-1.808e-01, -7.151e-02, 1.136e-01, 8.906e-02, -3.798e-02, 3.175e-02, 3.574e-03, -6.163e-02, -1.217e-02, -3.910e-02, -4.029e-02, 1.510e-02, -5.323e-02, 4.221e-02, -1.139e-02, 2.482e-02), r);\n\tr = MulAdd(s4_1, M4(2.471e-01, 2.122e-01, -2.925e-01, 1.159e-01, 1.034e-01, 3.971e-02, -2.369e-02, -6.175e-02, 1.270e-01, -1.832e-02, -2.061e-01, 2.132e-01, -8.107e-02, 1.786e-01, 8.508e-03, -5.903e-02), r);\n\tr = MulAdd(s4_2, M4(2.225e-01, 1.082e-01, -1.634e-01, -2.090e-02, 3.859e-02, -5.848e-02, -7.811e-02, 2.496e-02, 6.474e-02, 8.606e-02, 1.459e-01, -1.556e-01, -2.996e-02, 1.241e-02, -1.139e-01, -4.844e-02), r);\n\tr = MulAdd(s4_3, M4(6.932e-02, 1.109e-01, -1.615e-01, -6.077e-02, -3.714e-02, 9.318e-02, 4.859e-02, 3.846e-02, 7.590e-02, 3.168e-02, -6.170e-02, 2.132e-01, -1.446e-01, 7.892e-02, -1.163e-01, 9.597e-02), r);\n\tr = MulAdd(s4_4, M4(-4.274e-02, 3.076e-01, 6.231e-02, 1.233e-01, 3.335e-02, -2.843e-01, 2.578e-01, -3.067e-01, 1.023e-01, 1.018e-01, -1.995e-01, -1.487e-01, 3.421e-02, 1.787e-01, -9.120e-03, -6.409e-02), r);\n\tr = MulAdd(s4_5, M4(2.020e-01, -3.115e-01, 1.270e-01, -1.962e-03, 5.069e-02, -1.333e-02, -2.809e-02, 1.169e-01, 6.924e-02, -9.659e-02, 3.233e-01, -8.298e-02, 2.950e-02, -4.171e-02, 1.832e-01, -1.195e-03), r);\n\tr = MulAdd(s4_6, M4(-1.517e-03, 5.659e-02, -8.075e-02, 4.669e-03, 7.980e-02, -2.630e-02, -5.654e-02, -1.299e-01, 2.705e-02, -1.421e-02, -5.630e-02, 3.774e-02, -1.197e-02, -3.027e-02, -9.603e-02, -9.663e-02), r);\n\tr = MulAdd(s4_7, M4(1.387e-02, 4.735e-02, 7.699e-02, -7.601e-02, 1.694e-02, 1.520e-01, -2.505e-01, 7.931e-03, 7.297e-02, 1.056e-01, -2.348e-01, -7.999e-02, -4.488e-02, -1.450e-02, 9.499e-02, 1.999e-02), r);\n\tr = MulAdd(s4_8, M4(-1.672e-02, -6.865e-02, 7.445e-02, -5.010e-03, -5.751e-02, 1.366e-01, -7.348e-02, 4.473e-02, -6.648e-02, 1.935e-01, -6.542e-03, -6.221e-02, 1.000e-02, -4.030e-02, -2.002e-02, -5.702e-02), r);\n\tr = MulAdd(s5_0, M4(-1.844e-02, -2.279e-02, 1.859e-02, -1.994e-01, -7.484e-02, -7.738e-02, -1.324e-01, 6.908e-02, 3.229e-02, 3.760e-02, 2.144e-02, 8.776e-03, -3.110e-03, 3.086e-02, -3.827e-02, -2.496e-02), r);\n\tr = MulAdd(s5_1, M4(1.135e-01, 1.224e-01, 8.033e-02, 7.685e-02, 6.138e-02, -2.476e-02, -1.497e-02, -1.407e-02, -1.467e-02, 4.675e-02, -8.522e-02, -7.936e-02, 5.384e-02, 1.046e-01, 1.349e-02, -8.820e-02), r);\n\tr = MulAdd(s5_2, M4(4.358e-02, -9.912e-02, -3.773e-02, -1.635e-02, -5.953e-02, 5.375e-02, -2.343e-02, 4.447e-02, -6.225e-02, -1.359e-03, 4.897e-02, -4.672e-03, 1.588e-02, 8.632e-02, -1.006e-01, -1.180e-02), r);\n\tr = MulAdd(s5_3, M4(-5.165e-02, 6.907e-02, 3.863e-02, -7.992e-02, -2.743e-03, -4.003e-02, -4.348e-02, -1.824e-02, 6.504e-02, -2.389e-02, -5.433e-02, 1.896e-02, -1.038e-01, 7.700e-02, -4.348e-02, -1.953e-02), r);\n\tr = MulAdd(s5_4, M4(-1.504e-01, 1.324e-01, -1.111e-01, 1.308e-01, -1.680e-02, 9.616e-03, 2.922e-02, -2.276e-01, -6.420e-02, 2.921e-02, 8.717e-02, -2.128e-01, 1.967e-01, -6.838e-02, 7.717e-03, -2.039e-01), r);\n\tr = MulAdd(s5_5, M4(8.521e-02, -3.579e-02, -7.804e-02, 5.746e-02, -2.326e-02, 1.403e-01, -1.433e-01, 5.825e-02, -2.646e-01, 2.818e-01, -4.705e-02, 2.818e-02, 2.052e-02, -4.477e-02, 2.043e-02, 3.274e-02), r);\n\tr = MulAdd(s5_6, M4(-8.509e-02, -1.012e-02, -2.024e-02, 3.751e-02, -1.689e-02, -1.200e-02, -6.649e-03, -9.636e-03, -9.893e-03, 2.870e-02, 1.406e-02, 6.826e-03, -1.444e-01, 2.577e-02, 3.355e-02, -4.936e-02), r);\n\tr = MulAdd(s5_7, M4(6.914e-03, 4.111e-03, -3.507e-02, 4.883e-02, -1.203e-01, 1.782e-01, -1.221e-01, -2.258e-01, 6.142e-02, -5.628e-02, -3.241e-02, -1.518e-02, -1.409e-01, -1.079e-01, 4.747e-02, 4.770e-02), r);\n\tr = MulAdd(s5_8, M4(3.974e-02, -1.140e-01, 9.127e-02, 2.949e-02, -4.091e-02, -3.985e-02, 2.987e-02, 9.161e-03, 1.925e-02, 3.103e-02, -8.920e-02, 1.126e-02, 5.775e-02, -5.850e-02, -1.156e-01, -5.278e-02), r);\n\tr = MulAdd(s6_0, M4(4.430e-02, 2.128e-04, -2.363e-02, -8.580e-02, 4.758e-02, 9.645e-02, 1.086e-01, -4.137e-02, -8.103e-03, 6.940e-02, -1.248e-02, -3.844e-02, 4.752e-02, -6.782e-02, 3.714e-02, -9.741e-02), r);\n\tr = MulAdd(s6_1, M4(6.954e-02, 7.004e-03, -5.223e-02, 9.466e-04, -2.323e-02, -2.353e-02, 5.527e-03, -8.855e-02, -3.303e-02, 2.008e-02, -3.504e-02, -6.496e-03, -3.531e-02, 7.740e-02, -3.346e-02, -2.544e-02), r);\n\tr = MulAdd(s6_2, M4(-1.047e-01, -1.141e-02, -4.571e-02, -5.042e-02, 2.876e-01, -6.013e-02, 1.330e-01, -6.781e-03, 9.382e-03, 2.406e-02, 8.489e-02, -3.575e-02, -8.829e-02, 8.565e-02, 5.110e-04, 1.838e-02), r);\n\tr = MulAdd(s6_3, M4(-6.323e-02, 5.539e-02, 4.282e-02, -1.517e-01, 6.639e-02, 8.618e-02, 6.218e-02, -1.342e-01, -8.240e-02, 2.534e-02, -1.269e-01, -5.660e-02, 1.406e-02, 8.384e-02, 6.082e-02, -1.931e-01), r);\n\tr = MulAdd(s6_4, M4(-1.133e-01, 6.829e-02, -2.698e-02, 2.658e-02, -3.588e-02, 1.752e-01, 4.161e-01, 4.412e-02, -1.112e-02, -1.806e-01, 1.313e-01, 1.439e-01, 4.300e-02, -1.159e-01, -6.542e-02, -2.109e-01), r);\n\tr = MulAdd(s6_5, M4(-1.037e-02, -6.339e-02, -4.106e-02, -7.217e-03, -1.563e-01, -5.163e-02, -1.412e-02, -4.560e-02, -3.262e-02, 2.693e-02, -7.205e-02, -1.538e-01, 2.494e-01, -7.619e-02, 9.734e-02, -1.963e-02), r);\n\tr = MulAdd(s6_6, M4(4.477e-02, -2.460e-02, 1.561e-02, 7.902e-03, 2.819e-02, 8.137e-02, -9.074e-02, 4.879e-02, -7.361e-02, 8.618e-02, -9.277e-02, -1.204e-01, -3.147e-02, -2.592e-02, 4.403e-02, -3.817e-02), r);\n\tr = MulAdd(s6_7, M4(-9.093e-03, -6.024e-02, -4.040e-02, 5.986e-02, 7.624e-02, 1.555e-01, -1.529e-01, 1.163e-01, 2.841e-03, -9.467e-02, -1.644e-01, 5.406e-02, -1.252e-01, 1.712e-02, 1.295e-01, -1.023e-01), r);\n\tr = MulAdd(s6_8, M4(4.371e-02, -7.912e-02, -2.886e-02, -4.878e-03, -3.480e-02, 2.319e-01, -1.500e-01, 9.054e-02, 6.201e-02, 7.539e-02, -1.330e-01, -1.722e-02, 2.272e-01, -2.516e-01, 1.550e-01, -1.427e-02), r);\n\tr = MulAdd(s7_0, M4(-1.865e-01, -5.930e-02, 1.480e-01, 5.092e-02, 8.114e-02, 1.780e-02, 4.968e-02, 1.214e-01, 1.395e-02, 1.867e-02, 6.042e-03, 9.279e-02, -6.797e-02, 2.587e-02, -1.102e-02, -2.887e-02), r);\n\tr = MulAdd(s7_1, M4(-4.457e-01, -1.417e-01, -1.668e-01, -1.126e-01, -1.799e-02, -2.844e-02, -4.474e-02, 4.784e-02, 1.272e-02, 3.509e-02, 5.592e-02, 3.425e-02, -8.181e-02, 8.894e-02, 9.407e-02, -1.074e-01), r);\n\tr = MulAdd(s7_2, M4(2.992e-02, -2.817e-01, 4.041e-02, -1.705e-01, -3.277e-02, 4.062e-02, 1.309e-02, -3.913e-02, 2.197e-02, -5.788e-02, 5.907e-02, -1.210e-01, 1.236e-01, 4.234e-02, -2.209e-02, 3.183e-02), r);\n\tr = MulAdd(s7_3, M4(-1.444e-01, 7.209e-02, -1.524e-01, -1.727e-01, 5.041e-02, -2.331e-02, 4.138e-02, 1.204e-01, -1.734e-01, 9.672e-02, -4.040e-02, -5.078e-02, -2.563e-02, -2.302e-02, -1.457e-02, -3.718e-03), r);\n\tr = MulAdd(s7_4, M4(-4.509e-01, 2.154e-01, 5.315e-01, 2.917e-01, 2.953e-02, -6.827e-02, -1.176e-01, 1.002e-01, 7.062e-02, -6.440e-02, 1.057e-01, 1.603e-01, -2.618e-03, -3.762e-02, -6.451e-02, -2.631e-02), r);\n\tr = MulAdd(s7_5, M4(1.754e-01, -3.155e-01, 1.431e-02, -2.786e-01, 2.343e-02, -5.685e-02, 8.120e-02, -7.000e-02, 6.258e-02, 1.671e-02, -1.732e-01, -8.802e-02, -3.786e-02, -5.198e-02, 1.550e-01, 1.113e-02), r);\n\tr = MulAdd(s7_6, M4(-9.336e-02, 7.900e-03, 1.448e-02, -1.041e-01, 3.344e-02, 3.577e-02, 5.547e-02, -2.618e-02, 9.245e-03, 2.217e-02, -1.096e-01, -1.983e-01, -1.686e-02, 5.541e-02, -1.284e-01, 3.291e-02), r);\n\tr = MulAdd(s7_7, M4(-5.726e-02, -2.849e-01, 4.176e-01, 7.591e-02, 2.073e-02, -1.418e-01, 1.758e-01, 3.021e-02, -1.954e-01, -4.763e-02, 2.269e-01, 1.887e-01, 3.317e-02, 5.195e-02, -1.633e-01, -1.694e-02), r);\n\tr = MulAdd(s7_8, M4(-2.306e-02, -1.179e-01, 4.999e-02, -8.378e-02, 2.885e-03, -1.295e-02, -2.832e-02, -6.580e-02, -8.781e-03, -1.141e-02, 5.429e-02, -2.212e-02, 4.049e-02, 8.520e-02, -1.725e-01, -6.162e-03), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.842e-03, 2.684e-02, -2.388e-02, 1.341e-02 };\n\tr = MulAdd(s0_0, M4(-9.317e-02, 1.915e-02, 8.386e-03, -7.604e-03, 2.599e-02, 3.101e-02, 2.067e-02, -7.477e-02, -3.195e-02, 3.575e-03, -1.788e-02, 3.550e-02, -5.165e-02, 8.900e-02, -1.879e-02, 6.665e-02), r);\n\tr = MulAdd(s0_1, M4(2.323e-02, 4.761e-02, 3.358e-03, 1.379e-02, 6.437e-02, -7.584e-02, 5.153e-02, -8.086e-02, 3.212e-02, -3.236e-02, 4.675e-03, 7.112e-03, 1.418e-01, 3.161e-01, 1.194e-02, -2.045e-01), r);\n\tr = MulAdd(s0_2, M4(1.196e-02, 2.864e-02, 7.652e-02, -9.290e-03, -2.904e-02, 1.836e-02, 3.561e-02, 3.707e-02, 8.349e-02, 4.243e-02, -2.999e-02, 1.486e-02, -1.074e-01, 2.173e-01, 2.716e-02, -5.154e-02), r);\n\tr = MulAdd(s0_3, M4(-7.280e-02, -1.273e-01, 9.497e-02, -2.195e-02, -1.005e-01, 9.936e-02, -4.427e-02, 5.945e-02, 4.234e-02, -6.874e-02, -3.501e-03, -3.821e-02, -5.160e-01, -1.874e-01, 2.054e-01, -6.566e-02), r);\n\tr = MulAdd(s0_4, M4(-1.746e-01, 1.102e-01, 4.787e-02, -3.177e-02, -1.164e-01, 1.112e-01, 5.676e-02, 4.072e-03, -1.577e-02, -3.395e-02, 4.062e-02, -1.182e-01, -5.695e-01, -6.229e-01, -1.910e-01, -6.589e-01), r);\n\tr = MulAdd(s0_5, M4(-4.777e-03, 1.793e-03, 8.129e-02, -1.238e-01, -3.224e-02, 1.482e-01, 2.397e-02, 8.479e-02, 4.881e-03, -5.675e-02, 1.567e-01, -3.732e-02, 2.494e-01, -1.549e-02, 6.266e-02, -8.537e-02), r);\n\tr = MulAdd(s0_6, M4(3.985e-02, -3.295e-02, -5.131e-02, -1.254e-01, 4.139e-02, 1.998e-02, -1.187e-02, -1.422e-02, 4.812e-02, -2.490e-02, -7.066e-02, -6.262e-02, 6.560e-03, -1.073e-01, 1.650e-01, 1.090e-01), r);\n\tr = MulAdd(s0_7, M4(2.583e-02, -5.291e-02, -3.541e-02, -2.015e-02, 1.829e-02, -6.868e-05, -1.853e-01, -8.112e-02, -6.439e-02, -7.911e-02, 4.696e-03, -9.687e-02, -2.225e-01, 5.081e-02, 8.367e-02, 7.498e-01), r);\n\tr = MulAdd(s0_8, M4(2.599e-02, 2.886e-03, -8.094e-02, 4.401e-02, 1.440e-02, -2.015e-02, 1.880e-02, 1.081e-03, -9.465e-02, -9.373e-03, 1.154e-01, -3.917e-02, -1.011e-01, 4.820e-02, -1.554e-01, -3.663e-01), r);\n\tr = MulAdd(s1_0, M4(-1.092e-01, 1.216e-01, -1.118e-01, 1.907e-01, -8.130e-02, -5.784e-02, 6.783e-02, -3.183e-02, -1.563e-01, 1.382e-01, -1.255e-01, 1.461e-01, 3.380e-02, 8.835e-03, -1.597e-02, -1.284e-02), r);\n\tr = MulAdd(s1_1, M4(7.447e-02, -1.840e-02, -1.411e-01, 4.135e-02, -3.556e-02, -2.067e-01, -5.427e-02, -4.274e-02, -9.245e-02, -1.770e-01, -7.212e-02, 7.392e-02, 3.132e-02, 2.501e-02, 8.675e-02, -2.563e-02), r);\n\tr = MulAdd(s1_2, M4(-4.532e-02, -7.753e-02, -4.897e-02, 1.012e-02, -3.691e-02, -1.659e-01, -3.360e-02, -1.401e-01, 1.182e-02, 3.324e-02, -1.490e-01, 4.877e-03, -2.668e-02, 2.633e-02, 2.280e-02, -5.413e-02), r);\n\tr = MulAdd(s1_3, M4(-6.860e-03, -3.030e-02, -5.868e-02, 1.373e-01, -1.136e-01, 6.083e-02, -1.212e-01, 1.402e-01, 5.197e-02, 3.028e-01, 2.910e-04, 2.725e-01, -1.142e-01, 2.221e-02, 1.983e-02, 4.980e-03), r);\n\tr = MulAdd(s1_4, M4(-1.558e-01, 2.200e-02, -7.589e-02, -4.114e-02, -2.075e-02, -2.329e-01, -2.486e-01, 2.982e-01, 5.568e-01, -1.902e-01, -3.293e-01, 2.973e-01, -8.979e-02, -1.734e-01, -8.188e-02, -1.248e-01), r);\n\tr = MulAdd(s1_5, M4(-1.136e-01, 2.001e-02, -6.094e-02, -1.164e-01, -9.559e-03, -2.312e-01, -2.666e-02, 5.802e-02, 5.574e-03, -8.042e-02, 1.882e-02, -5.696e-03, 5.486e-02, -2.811e-02, 3.405e-02, 3.376e-02), r);\n\tr = MulAdd(s1_6, M4(1.890e-02, 2.390e-01, -1.844e-01, 1.908e-01, 6.778e-02, -2.268e-01, 2.431e-02, -6.474e-02, 1.892e-01, 2.155e-01, 1.174e-02, 1.018e-01, 2.103e-02, 9.542e-03, -5.061e-02, 9.833e-02), r);\n\tr = MulAdd(s1_7, M4(2.532e-01, 1.047e-01, -1.373e-01, 6.951e-03, 1.005e-02, -2.509e-01, -1.389e-01, 1.150e-01, 8.669e-02, -9.414e-02, -1.985e-01, -2.291e-02, 3.444e-02, 6.642e-03, 4.162e-02, -1.231e-01), r);\n\tr = MulAdd(s1_8, M4(-7.705e-02, 1.206e-01, 2.046e-02, 2.431e-02, 5.501e-02, -1.745e-01, -6.070e-03, 3.750e-02, -2.622e-03, -1.714e-01, -4.185e-02, 8.370e-02, -2.327e-02, 1.082e-01, -3.338e-02, 7.039e-02), r);\n\tr = MulAdd(s2_0, M4(2.506e-02, -5.960e-03, 8.603e-03, -6.330e-03, -9.869e-03, 4.860e-03, 4.122e-03, -2.970e-02, -1.211e-01, -1.324e-01, 1.043e-01, -1.156e-01, -2.330e-02, 8.029e-03, -1.386e-02, -1.006e-01), r);\n\tr = MulAdd(s2_1, M4(-6.310e-02, 3.873e-02, -8.762e-02, 5.317e-02, -1.089e-01, -9.682e-02, -2.468e-02, -1.545e-02, -5.920e-02, 1.584e-01, -6.268e-03, -7.099e-02, -7.300e-02, 5.048e-02, 6.387e-02, -1.378e-01), r);\n\tr = MulAdd(s2_2, M4(-2.160e-02, 1.193e-02, 5.254e-02, -6.813e-02, 2.525e-02, 2.411e-02, 3.671e-02, -4.003e-02, 7.208e-02, -3.762e-02, -1.295e-01, -2.987e-03, -9.501e-03, 2.885e-02, -2.823e-02, -3.649e-02), r);\n\tr = MulAdd(s2_3, M4(-1.447e-02, -6.604e-03, 5.087e-02, -5.231e-02, -1.432e-01, 9.517e-03, -2.375e-02, 6.718e-02, -1.024e-01, -1.657e-01, 1.543e-02, -2.130e-02, 7.696e-02, -1.628e-01, -2.175e-02, -6.305e-02), r);\n\tr = MulAdd(s2_4, M4(1.241e-01, 3.732e-02, 3.107e-02, 9.781e-02, -1.883e-01, 5.448e-02, -5.869e-02, 3.828e-02, 2.123e-01, 2.982e-01, 3.094e-01, -3.948e-02, 2.509e-01, 6.215e-02, 1.057e-01, 1.183e-01), r);\n\tr = MulAdd(s2_5, M4(1.370e-01, 3.386e-03, -1.440e-02, 1.083e-01, 6.201e-02, -8.137e-02, -5.148e-02, -8.041e-02, 7.349e-03, 2.396e-02, 9.658e-02, -6.630e-02, -5.620e-02, 9.297e-02, 1.075e-01, 2.647e-01), r);\n\tr = MulAdd(s2_6, M4(-8.195e-03, -1.201e-01, -7.786e-03, 8.643e-02, 1.019e-02, 7.961e-02, -5.549e-03, 1.267e-01, -9.394e-02, -1.329e-01, 4.056e-02, 3.870e-02, -2.269e-02, -9.855e-02, -3.089e-02, -5.161e-02), r);\n\tr = MulAdd(s2_7, M4(-4.394e-02, 8.193e-02, 4.097e-02, -2.051e-01, 2.861e-02, 6.525e-02, -2.093e-02, 8.476e-04, -6.580e-02, -1.047e-01, -2.002e-02, -3.528e-01, -5.101e-02, 3.704e-02, -5.583e-02, 1.864e-01), r);\n\tr = MulAdd(s2_8, M4(-6.193e-02, 4.235e-02, 1.458e-01, 1.280e-01, 1.397e-03, 6.387e-03, -3.770e-02, 3.617e-02, -4.485e-02, -1.430e-02, -3.923e-02, -2.988e-02, 9.385e-02, 1.037e-01, -1.469e-02, 8.648e-02), r);\n\tr = MulAdd(s3_0, M4(7.370e-02, -6.681e-02, 6.857e-03, -1.464e-03, -8.139e-02, -2.321e-02, 2.256e-01, -2.762e-01, 4.326e-03, -9.937e-02, 5.479e-02, -1.248e-01, -1.140e-01, 3.124e-02, -3.539e-02, 5.063e-02), r);\n\tr = MulAdd(s3_1, M4(-4.666e-02, -5.328e-02, 4.147e-03, 3.243e-02, -1.825e-01, -1.587e-01, 1.040e-01, -8.371e-02, 7.847e-02, 1.809e-01, 5.909e-02, -2.629e-02, 2.192e-02, -6.512e-03, 7.880e-02, -2.717e-02), r);\n\tr = MulAdd(s3_2, M4(2.217e-02, -3.510e-02, 8.875e-02, 2.984e-02, -8.095e-02, 3.588e-02, 2.922e-02, 2.322e-02, 4.776e-02, 1.330e-01, -5.593e-02, 1.860e-01, -2.725e-02, -4.471e-02, 6.853e-02, -2.785e-02), r);\n\tr = MulAdd(s3_3, M4(4.651e-03, 2.414e-03, -1.772e-02, -9.891e-02, -5.626e-02, 1.426e-01, -1.825e-03, -2.968e-01, 1.269e-01, -3.594e-03, -8.609e-02, 5.360e-03, 8.408e-02, -3.451e-02, 4.265e-03, -4.175e-02), r);\n\tr = MulAdd(s3_4, M4(4.502e-01, -1.098e-01, 1.086e-01, -7.408e-02, -5.760e-02, 1.924e-01, 1.202e-01, -1.614e-01, 2.295e-01, 1.453e-01, 2.048e-01, -1.967e-01, 1.238e-01, 1.250e-01, -9.183e-02, -9.538e-02), r);\n\tr = MulAdd(s3_5, M4(-1.430e-01, -4.830e-02, -7.549e-02, -3.340e-03, -5.755e-02, 9.543e-02, 1.986e-01, 1.168e-02, -5.303e-02, 1.102e-01, 2.070e-01, 6.416e-02, 6.153e-02, 1.059e-01, -4.811e-02, 6.984e-02), r);\n\tr = MulAdd(s3_6, M4(-2.191e-01, 4.890e-02, -5.366e-02, 1.201e-01, -3.396e-02, 4.261e-03, 9.185e-02, 9.099e-02, 1.899e-02, -8.291e-02, -1.536e-01, -7.678e-02, -7.581e-03, -6.502e-02, 1.899e-02, 2.996e-02), r);\n\tr = MulAdd(s3_7, M4(1.050e-01, -6.143e-02, -2.060e-01, -3.645e-01, -4.155e-02, 3.520e-03, -6.472e-02, -4.338e-01, 1.628e-02, -5.007e-02, -5.609e-03, -1.029e-01, 6.029e-02, -2.550e-03, -4.082e-03, 2.602e-01), r);\n\tr = MulAdd(s3_8, M4(1.017e-01, 1.053e-02, 2.575e-01, 6.993e-04, -1.868e-02, 6.033e-02, 1.548e-01, -7.071e-02, -2.339e-02, -6.659e-02, 3.672e-02, 4.389e-02, 6.373e-02, 4.674e-02, -5.896e-02, -1.070e-01), r);\n\tr = MulAdd(s4_0, M4(1.968e-01, -3.459e-03, -1.691e-01, -4.071e-02, 5.010e-02, 2.857e-02, -7.519e-03, -5.577e-03, -1.646e-01, -8.852e-02, 9.672e-03, -5.369e-03, -3.776e-03, -1.913e-02, 7.260e-03, -1.101e-01), r);\n\tr = MulAdd(s4_1, M4(4.915e-02, 2.861e-01, 5.564e-03, 5.088e-01, 4.463e-02, 5.954e-02, -2.309e-02, 5.717e-02, -3.021e-01, -2.191e-01, 6.434e-02, 7.461e-02, -2.205e-02, -4.874e-03, -1.735e-01, 1.253e-01), r);\n\tr = MulAdd(s4_2, M4(1.128e-01, 1.075e-01, -2.875e-02, -1.778e-02, 4.533e-02, -3.758e-02, 2.265e-02, -4.932e-02, 3.630e-02, 2.354e-01, -1.175e-03, -3.448e-02, -3.037e-02, -1.978e-02, 8.120e-02, -8.233e-02), r);\n\tr = MulAdd(s4_3, M4(8.857e-02, 3.684e-02, 9.267e-03, -7.369e-04, -1.267e-01, 1.045e-01, 8.024e-03, 2.250e-02, -1.073e-01, -1.799e-01, -3.614e-02, -1.036e-01, 2.249e-01, -1.213e-01, -1.413e-01, 6.528e-02), r);\n\tr = MulAdd(s4_4, M4(2.018e-02, -7.586e-03, -7.276e-02, 9.245e-02, 2.630e-01, 8.460e-02, -1.289e-01, 1.931e-01, -2.951e-01, -1.197e-01, -1.362e-02, -6.101e-02, -1.125e-01, -7.522e-03, 1.929e-01, 2.081e-01), r);\n\tr = MulAdd(s4_5, M4(1.735e-01, -3.837e-02, -2.689e-01, -1.575e-01, -1.147e-02, -5.049e-02, -8.954e-02, -9.647e-03, 1.735e-02, -7.929e-02, -2.055e-01, -1.046e-01, 2.800e-03, -2.230e-01, 5.326e-02, -8.484e-02), r);\n\tr = MulAdd(s4_6, M4(9.596e-02, 1.478e-01, 8.386e-02, 4.962e-02, 2.575e-02, 2.522e-02, -9.939e-02, -1.447e-02, -7.036e-02, -1.864e-01, -4.597e-02, -1.242e-01, -1.236e-01, -1.066e-01, 2.954e-02, -2.495e-01), r);\n\tr = MulAdd(s4_7, M4(4.021e-02, 8.410e-02, -2.024e-02, 2.625e-01, 2.479e-02, 1.913e-01, -8.467e-02, 2.132e-01, -1.626e-01, -1.470e-01, -1.475e-01, -1.940e-01, 8.031e-02, -3.446e-02, 4.137e-02, 1.510e-02), r);\n\tr = MulAdd(s4_8, M4(5.455e-02, 4.836e-02, -2.443e-03, 4.940e-02, -6.281e-02, 5.090e-02, -7.503e-02, 2.358e-01, -1.184e-01, -7.135e-02, -1.001e-01, 1.106e-01, -2.813e-02, 7.361e-02, -1.206e-01, 7.500e-03), r);\n\tr = MulAdd(s5_0, M4(1.094e-01, 1.463e-01, -4.544e-02, 1.765e-01, 1.195e-02, -1.165e-02, -1.074e-02, -4.479e-02, -4.199e-03, -6.425e-03, -8.801e-03, 1.340e-02, -1.941e-02, 2.875e-02, -2.974e-02, 6.107e-02), r);\n\tr = MulAdd(s5_1, M4(5.405e-02, 1.598e-01, -1.369e-01, -3.004e-02, -3.157e-02, 1.339e-02, 7.332e-02, -3.229e-02, -1.327e-02, 1.182e-02, 4.794e-02, -6.305e-02, 4.248e-02, 7.300e-02, -5.926e-02, 8.302e-02), r);\n\tr = MulAdd(s5_2, M4(2.698e-02, -5.484e-02, 3.239e-03, -2.466e-02, 1.411e-02, 3.545e-02, 7.326e-02, -6.638e-02, 3.476e-02, 9.492e-02, -2.676e-02, 6.366e-02, -3.944e-02, 3.457e-02, -1.909e-02, 3.126e-02), r);\n\tr = MulAdd(s5_3, M4(1.193e-01, 7.390e-02, 5.802e-02, 6.966e-02, -5.505e-02, 5.759e-02, 2.647e-02, 3.655e-02, 8.248e-02, -3.531e-04, 4.006e-02, -2.483e-02, 1.442e-01, 2.735e-02, -5.585e-03, 1.256e-01), r);\n\tr = MulAdd(s5_4, M4(-7.416e-02, 1.455e-02, -3.851e-02, -1.117e-01, 5.953e-02, 6.274e-02, 2.311e-01, 1.762e-01, -9.020e-02, 2.775e-02, -9.684e-02, 4.637e-03, 7.744e-02, 1.524e-01, -4.357e-02, 1.402e-01), r);\n\tr = MulAdd(s5_5, M4(1.048e-02, -6.540e-03, 1.283e-02, 1.530e-02, -7.299e-02, -8.799e-02, 1.209e-01, -1.417e-01, -1.657e-01, 7.952e-02, 9.619e-02, 2.051e-02, -9.300e-02, -8.988e-02, -4.284e-02, -2.833e-02), r);\n\tr = MulAdd(s5_6, M4(1.059e-02, -9.975e-03, -1.002e-02, -5.971e-02, -1.522e-02, -1.066e-01, 2.274e-02, 2.326e-02, 6.018e-03, -3.394e-02, 1.579e-02, 6.317e-03, 4.164e-03, 9.888e-02, -1.304e-02, -7.333e-02), r);\n\tr = MulAdd(s5_7, M4(-2.437e-02, 5.469e-02, 3.865e-02, 2.620e-02, -5.758e-02, -2.490e-02, -4.255e-02, -1.501e-01, 5.814e-03, -2.612e-02, -7.788e-02, -1.049e-01, -3.619e-02, -1.124e-02, -5.754e-02, -1.702e-01), r);\n\tr = MulAdd(s5_8, M4(7.789e-02, -5.184e-03, -1.090e-01, -9.938e-02, -4.395e-02, -8.541e-02, -1.900e-02, 1.958e-01, -5.825e-02, -1.991e-02, 1.695e-01, 4.282e-02, 4.553e-02, 9.582e-03, 4.027e-02, 8.375e-02), r);\n\tr = MulAdd(s6_0, M4(-4.620e-02, 3.979e-02, -7.421e-03, -4.636e-03, -4.301e-02, -1.731e-03, -8.134e-02, -4.580e-02, 8.641e-02, -1.178e-02, -3.114e-02, 2.985e-02, 8.926e-03, -8.501e-02, 1.403e-01, -8.929e-02), r);\n\tr = MulAdd(s6_1, M4(8.552e-03, 1.045e-01, 2.590e-02, -5.385e-02, 1.899e-01, 3.053e-02, 3.391e-02, 8.761e-02, -8.812e-02, 1.820e-02, 2.085e-03, 7.044e-02, -8.843e-03, 3.972e-02, 2.005e-01, -9.386e-02), r);\n\tr = MulAdd(s6_2, M4(-3.533e-02, 8.881e-02, 7.908e-02, -1.673e-02, 2.972e-01, 5.909e-02, 1.822e-01, 7.794e-03, 3.495e-02, 8.208e-03, -8.089e-03, 3.064e-02, -1.182e-01, -3.028e-02, 5.854e-03, 2.649e-02), r);\n\tr = MulAdd(s6_3, M4(4.463e-02, 6.808e-02, -1.320e-02, 7.349e-02, 1.047e-01, 3.442e-02, 5.491e-02, 1.766e-01, 2.378e-01, 5.525e-02, -1.079e-03, 7.857e-02, -1.323e-01, -1.197e-02, -4.535e-02, 5.279e-02), r);\n\tr = MulAdd(s6_4, M4(4.852e-03, -1.891e-01, -8.620e-02, -7.778e-02, -8.466e-02, -1.193e-01, -3.509e-01, -4.832e-02, 2.248e-02, 5.971e-02, -1.411e-01, -1.547e-01, 1.189e-01, -2.901e-02, -3.536e-01, -1.434e-01), r);\n\tr = MulAdd(s6_5, M4(5.967e-04, -8.594e-03, 2.770e-02, 2.773e-02, -6.823e-02, 2.855e-02, 4.400e-03, 3.281e-03, -7.049e-02, 7.300e-02, 1.679e-02, -4.129e-02, 3.537e-02, -7.997e-02, 1.755e-01, 7.430e-02), r);\n\tr = MulAdd(s6_6, M4(2.333e-02, 7.693e-02, -1.168e-02, -5.052e-02, 2.763e-01, -8.145e-02, -2.557e-02, 5.789e-02, -1.378e-01, 3.910e-02, -2.735e-02, -1.627e-01, 1.390e-02, 9.601e-02, 1.422e-02, 1.167e-01), r);\n\tr = MulAdd(s6_7, M4(-5.161e-02, 4.514e-02, 4.401e-02, -4.723e-02, 8.271e-02, -1.165e-02, -1.094e-01, -1.951e-01, 1.299e-01, -1.491e-01, -1.073e-02, -2.226e-01, 3.247e-02, 1.319e-01, -5.319e-02, 1.879e-01), r);\n\tr = MulAdd(s6_8, M4(1.413e-02, 8.114e-02, 8.126e-02, 4.824e-02, -5.459e-02, 1.786e-01, 2.315e-01, 3.483e-01, -6.537e-02, -1.749e-02, -9.204e-02, 8.909e-02, 1.182e-01, -3.454e-01, -2.984e-02, -3.699e-02), r);\n\tr = MulAdd(s7_0, M4(-5.222e-02, -1.666e-02, 3.111e-03, -1.269e-01, -1.162e-01, -1.072e-01, 1.369e-02, -1.421e-01, -4.234e-02, -5.603e-02, 1.896e-02, 3.023e-02, 2.745e-02, -1.633e-02, 7.530e-03, -2.612e-03), r);\n\tr = MulAdd(s7_1, M4(-7.186e-02, 1.331e-01, 1.729e-01, 3.696e-02, -3.435e-02, -5.384e-02, 1.712e-01, -4.012e-02, -2.510e-01, 6.177e-03, -1.304e-01, -3.065e-02, 8.131e-02, -2.031e-02, 5.018e-03, 1.444e-02), r);\n\tr = MulAdd(s7_2, M4(1.941e-01, -4.139e-02, 4.032e-01, -2.533e-01, 3.842e-02, 7.539e-02, -3.439e-02, 2.617e-03, -1.251e-04, 3.135e-03, -1.139e-01, 4.916e-02, -2.644e-02, -1.615e-01, -1.998e-02, 3.684e-02), r);\n\tr = MulAdd(s7_3, M4(1.724e-01, 7.871e-02, -2.757e-01, -1.913e-01, 1.702e-02, -1.198e-01, -1.135e-01, 5.146e-02, 1.594e-01, 8.131e-02, -1.323e-01, 7.771e-02, -1.266e-02, 3.053e-02, 6.846e-02, 2.713e-03), r);\n\tr = MulAdd(s7_4, M4(-8.568e-02, 2.638e-02, 1.671e-01, -4.321e-02, -4.085e-02, -5.166e-02, -5.991e-02, -2.253e-02, 2.570e-01, 1.164e-01, -4.512e-02, 1.597e-01, -2.795e-02, 1.080e-01, -1.880e-01, 3.372e-02), r);\n\tr = MulAdd(s7_5, M4(1.639e-01, -1.249e-01, 3.916e-02, -3.251e-01, 1.722e-01, 5.592e-02, 2.117e-02, 1.050e-01, 8.313e-02, 7.693e-02, 2.470e-01, 1.904e-01, 6.296e-02, -1.557e-01, 1.590e-01, 3.042e-02), r);\n\tr = MulAdd(s7_6, M4(5.130e-02, 2.760e-01, -1.234e-01, -3.254e-01, -5.325e-03, 5.583e-02, -1.817e-02, 3.850e-02, 1.723e-01, 1.316e-01, 1.474e-01, 4.388e-02, -4.979e-03, -5.402e-02, 2.037e-02, -1.502e-02), r);\n\tr = MulAdd(s7_7, M4(9.497e-02, 4.342e-02, 1.315e-01, 6.205e-02, -3.387e-02, 9.014e-02, -5.622e-02, -8.738e-03, -2.491e-01, -2.529e-01, 1.265e-01, -1.339e-01, -7.270e-02, -4.320e-02, -6.492e-02, -2.869e-01), r);\n\tr = MulAdd(s7_8, M4(7.856e-02, 5.496e-02, -1.532e-01, -2.587e-01, 1.621e-02, 4.016e-02, 6.799e-02, -5.266e-02, 3.437e-02, -4.965e-02, -1.842e-01, -1.572e-01, -9.818e-02, -6.989e-02, 1.409e-01, -9.155e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 7.646e-03, -3.306e-02, 1.535e-02, 6.065e-03 };\n\tr = MulAdd(s0_0, M4(1.169e-02, 4.090e-02, 2.344e-02, 4.020e-02, 9.370e-02, -6.211e-03, 1.759e-02, -8.241e-02, -5.080e-02, -8.047e-03, -6.565e-03, 1.017e-01, -2.722e-01, -7.091e-02, -4.424e-02, 2.552e-02), r);\n\tr = MulAdd(s0_1, M4(2.063e-02, 7.496e-02, -2.114e-03, 8.604e-02, -1.607e-01, -1.300e-02, -6.959e-02, 1.666e-02, 1.500e-01, 2.465e-03, -1.725e-02, 5.064e-02, 1.482e-01, -1.181e-01, 9.553e-02, -1.207e-01), r);\n\tr = MulAdd(s0_2, M4(1.909e-01, -3.339e-02, -9.496e-03, 7.458e-02, -4.476e-03, 4.041e-02, -1.012e-03, 4.225e-02, 2.620e-02, -9.565e-02, 7.120e-02, -3.336e-02, -2.538e-01, -5.166e-02, -2.399e-02, -2.251e-01), r);\n\tr = MulAdd(s0_3, M4(-1.458e-01, -5.764e-02, 3.750e-02, 2.984e-02, -1.128e-02, -1.041e-02, -5.174e-02, 7.210e-03, -1.559e-01, -8.793e-03, -5.447e-02, 7.778e-03, 1.510e-01, -3.397e-01, 5.370e-02, -9.013e-02), r);\n\tr = MulAdd(s0_4, M4(-1.753e-01, -4.923e-02, 6.602e-02, -1.124e-02, 7.038e-02, -9.715e-02, -1.053e-01, -8.512e-02, -1.163e-02, -1.973e-02, 1.249e-02, 1.401e-02, 8.067e-01, -1.868e+00, 1.319e+00, -1.978e-01), r);\n\tr = MulAdd(s0_5, M4(8.049e-02, -3.326e-02, 4.174e-02, -5.696e-02, -9.918e-02, 3.153e-02, -4.987e-02, 1.879e-02, -1.179e-01, 1.669e-03, 2.144e-02, 1.086e-01, -5.053e-01, -2.559e-01, -8.946e-02, 1.051e-01), r);\n\tr = MulAdd(s0_6, M4(-1.396e-01, -4.532e-02, -5.139e-02, 5.597e-02, 1.531e-01, 7.081e-02, 1.311e-01, -8.032e-02, 1.066e-01, -3.651e-02, -1.540e-02, -3.857e-02, -2.438e-01, -1.575e-01, -1.553e-01, 8.916e-02), r);\n\tr = MulAdd(s0_7, M4(6.295e-02, 1.070e-01, 1.808e-02, 5.307e-02, 2.205e-02, -3.011e-02, -2.873e-03, 5.554e-02, -1.650e-02, -7.347e-02, -3.139e-02, -7.255e-02, -7.705e-02, -2.776e-01, 1.386e-01, 2.273e-01), r);\n\tr = MulAdd(s0_8, M4(5.068e-02, -2.934e-02, -6.390e-02, -3.529e-03, 2.496e-02, -5.950e-02, 9.848e-03, -4.895e-02, 4.320e-03, 2.137e-02, 8.088e-03, -1.885e-02, 3.472e-02, 7.456e-02, -9.062e-02, -1.616e-01), r);\n\tr = MulAdd(s1_0, M4(-6.916e-02, 1.117e-01, 1.061e-02, -2.858e-02, -1.394e-02, -2.206e-02, 8.983e-02, -9.641e-02, 3.806e-02, 2.601e-02, 3.293e-03, -3.597e-03, -1.863e-02, 1.859e-02, 1.415e-02, 6.731e-03), r);\n\tr = MulAdd(s1_1, M4(-8.516e-02, 8.850e-02, -1.573e-02, 2.316e-01, -1.692e-01, 8.693e-02, -1.889e-02, 5.133e-03, -7.009e-02, -4.160e-02, -5.661e-02, 1.357e-01, 4.354e-02, -2.824e-02, -1.820e-02, 5.339e-02), r);\n\tr = MulAdd(s1_2, M4(1.563e-01, 4.841e-02, 1.820e-02, 2.156e-01, 2.081e-02, 1.728e-02, 6.492e-02, -6.011e-06, 1.238e-01, -1.890e-01, 5.422e-02, -1.803e-02, 3.738e-02, -3.699e-03, -3.440e-02, -4.935e-02), r);\n\tr = MulAdd(s1_3, M4(-3.771e-02, 1.027e-02, 6.767e-02, 2.648e-02, 4.782e-03, -1.468e-01, 8.528e-02, -1.018e-01, 1.828e-01, 9.974e-02, 1.174e-01, -1.621e-01, -4.533e-02, -1.360e-01, 1.073e-01, -2.108e-02), r);\n\tr = MulAdd(s1_4, M4(-2.093e-01, -8.418e-03, -1.582e-01, -1.408e-01, 2.320e-01, -6.685e-05, 8.601e-02, 3.419e-02, -3.267e-03, -2.444e-01, 5.275e-02, -1.274e-01, 3.212e-02, -5.614e-02, 1.082e-01, -5.123e-02), r);\n\tr = MulAdd(s1_5, M4(3.014e-04, 1.183e-02, -8.981e-03, -7.106e-03, -7.303e-02, -6.706e-02, 8.619e-02, 2.726e-02, 2.377e-01, -1.732e-01, 6.783e-03, -8.318e-02, -8.778e-03, -6.088e-02, 3.059e-02, 6.358e-02), r);\n\tr = MulAdd(s1_6, M4(-1.735e-01, -1.492e-02, -4.869e-02, 1.349e-02, 4.406e-02, -5.447e-02, 1.870e-01, -2.048e-01, 2.230e-01, 6.500e-02, -4.847e-02, 1.976e-03, -1.086e-01, 1.539e-02, -4.601e-02, 6.654e-02), r);\n\tr = MulAdd(s1_7, M4(-4.916e-02, 3.111e-01, -2.172e-01, -2.984e-02, 8.054e-02, -9.696e-02, 1.715e-01, 1.023e-01, -3.379e-01, -2.222e-01, -1.553e-01, 2.824e-01, 6.686e-02, 3.219e-02, -3.475e-02, 7.468e-03), r);\n\tr = MulAdd(s1_8, M4(1.450e-01, 1.175e-01, -3.282e-01, -2.399e-01, -3.023e-02, -1.193e-01, 6.894e-02, -2.026e-01, 1.794e-02, -8.950e-02, 3.820e-02, 5.242e-02, -2.527e-02, -2.720e-02, -3.382e-02, -4.500e-02), r);\n\tr = MulAdd(s2_0, M4(-3.438e-02, 5.057e-02, 3.839e-03, -2.960e-02, 3.820e-02, -3.512e-02, 2.248e-02, -7.140e-02, 1.783e-01, -2.689e-02, -5.086e-02, 1.715e-02, -2.994e-02, -2.400e-02, 5.800e-02, -4.431e-02), r);\n\tr = MulAdd(s2_1, M4(-1.055e-01, -5.624e-02, 1.805e-02, -4.016e-02, -1.477e-01, 1.458e-02, -1.010e-01, 1.892e-02, 2.247e-01, 1.387e-01, -6.506e-03, 1.135e-01, -1.305e-01, -4.718e-02, -5.146e-02, -5.844e-02), r);\n\tr = MulAdd(s2_2, M4(-1.991e-02, 4.664e-02, -2.422e-02, 1.581e-02, 1.908e-02, -1.695e-02, 2.632e-02, 7.893e-03, -1.246e-01, -1.096e-01, 2.398e-02, 3.730e-02, -5.910e-02, 4.511e-02, -1.959e-02, -1.711e-02), r);\n\tr = MulAdd(s2_3, M4(6.776e-02, -2.936e-02, -3.144e-02, -1.066e-01, 1.442e-01, -2.189e-02, 1.530e-01, 5.580e-02, -1.258e-01, -1.123e-01, -5.577e-02, -5.266e-02, -1.371e-01, -6.798e-02, 7.172e-02, 7.116e-02), r);\n\tr = MulAdd(s2_4, M4(1.143e-01, 2.555e-02, -5.947e-02, -6.223e-02, 9.015e-02, 7.343e-02, -5.756e-02, 2.320e-02, -1.310e-01, 3.643e-01, -3.327e-01, 2.611e-02, 3.383e-01, 1.516e-01, -8.123e-02, 1.385e-01), r);\n\tr = MulAdd(s2_5, M4(-1.150e-01, -2.017e-01, 6.345e-02, -4.715e-02, -5.644e-02, -3.207e-02, 5.612e-02, 7.632e-02, 2.011e-02, 2.242e-01, -1.096e-01, 7.068e-02, 1.181e-01, 1.197e-01, 2.674e-02, -4.620e-02), r);\n\tr = MulAdd(s2_6, M4(-9.551e-02, -9.498e-02, 2.679e-02, -8.821e-02, 2.767e-02, 7.976e-03, 5.204e-02, 1.872e-02, -1.089e-01, -4.498e-02, -6.061e-02, 8.602e-02, -9.359e-02, -4.350e-03, 3.876e-02, -8.969e-03), r);\n\tr = MulAdd(s2_7, M4(-8.954e-02, -2.433e-01, 1.061e-01, -1.242e-01, -6.749e-02, 1.916e-02, -3.863e-03, 4.032e-02, -3.083e-02, -1.311e-01, -8.384e-02, 4.916e-02, 2.500e-01, 2.014e-02, 1.214e-01, 1.388e-01), r);\n\tr = MulAdd(s2_8, M4(4.107e-03, 9.941e-02, 3.767e-02, 7.627e-02, -5.683e-02, -6.008e-04, -7.914e-03, -3.822e-02, -5.795e-02, 4.685e-02, -4.567e-02, -1.056e-02, -4.484e-02, -3.449e-02, 1.140e-01, 3.265e-02), r);\n\tr = MulAdd(s3_0, M4(-2.306e-02, 2.921e-02, -3.826e-02, 8.888e-02, -7.899e-02, -2.019e-02, -6.082e-02, -1.194e-01, -7.656e-02, -1.032e-02, -1.433e-02, 1.198e-01, 3.798e-02, -3.611e-02, 1.199e-01, -9.537e-02), r);\n\tr = MulAdd(s3_1, M4(2.121e-02, -9.145e-02, 8.246e-02, 9.169e-03, -4.139e-01, 6.092e-02, -8.756e-02, 8.627e-03, 1.045e-01, -3.856e-02, 5.856e-02, -1.957e-01, 7.316e-02, -6.812e-02, 3.636e-03, 6.997e-03), r);\n\tr = MulAdd(s3_2, M4(2.658e-02, 7.785e-02, -3.263e-02, -1.520e-02, 1.612e-01, 4.608e-02, -7.045e-02, -7.303e-03, -1.109e-02, 1.272e-02, -3.647e-02, -3.375e-02, -7.386e-02, -6.704e-02, 1.301e-02, -2.946e-03), r);\n\tr = MulAdd(s3_3, M4(-1.009e-01, 1.465e-01, -2.605e-02, 9.497e-02, -1.340e-01, -1.414e-01, -3.507e-02, 1.428e-01, -2.289e-01, -1.389e-02, 5.820e-02, -1.047e-01, -1.330e-01, 1.576e-02, 7.398e-02, -6.534e-02), r);\n\tr = MulAdd(s3_4, M4(-4.357e-01, 7.855e-02, -2.403e-01, 1.323e-01, -4.297e-01, 4.858e-02, -2.305e-01, 1.827e-01, -1.741e-01, 1.311e-01, -7.600e-02, -2.465e-02, -8.542e-02, 8.355e-02, -2.918e-01, -6.781e-02), r);\n\tr = MulAdd(s3_5, M4(8.516e-02, 5.179e-02, -4.071e-02, 2.149e-01, 3.137e-02, 1.405e-01, -1.702e-01, 1.147e-01, -1.077e-02, 2.508e-01, -9.565e-02, -2.340e-02, -5.770e-03, -2.109e-02, -2.620e-02, -2.459e-02), r);\n\tr = MulAdd(s3_6, M4(1.820e-01, 5.519e-02, -4.102e-02, -2.981e-02, -9.297e-02, 4.135e-02, -1.152e-01, 1.431e-01, 1.658e-01, 1.139e-03, 8.223e-02, -3.856e-02, 3.631e-02, -3.451e-02, 7.224e-02, 9.099e-02), r);\n\tr = MulAdd(s3_7, M4(2.301e-01, -1.471e-02, 3.288e-02, -7.237e-03, 2.109e-01, 2.026e-01, -2.288e-01, -2.980e-02, 9.537e-02, -4.301e-02, 1.508e-01, -4.254e-02, 6.804e-02, -3.899e-02, 4.478e-02, -1.037e-01), r);\n\tr = MulAdd(s3_8, M4(-4.881e-02, 1.157e-01, 3.404e-02, -3.252e-03, 6.786e-02, -5.432e-02, -9.315e-02, -6.633e-02, -3.822e-02, 1.650e-02, 4.145e-02, 5.647e-02, -1.303e-01, -1.228e-01, 9.147e-02, 1.600e-01), r);\n\tr = MulAdd(s4_0, M4(-1.691e-01, 2.079e-02, -7.759e-02, 4.724e-02, -2.213e-02, 5.189e-02, 9.549e-04, 5.798e-03, 8.639e-02, -4.559e-03, 6.095e-02, 4.818e-02, -1.305e-01, -5.503e-02, -1.809e-02, 9.957e-03), r);\n\tr = MulAdd(s4_1, M4(1.043e-01, 6.596e-02, -2.271e-01, -1.330e-01, -2.238e-02, 6.202e-02, 2.146e-02, -2.418e-03, -2.807e-01, 6.046e-02, 1.510e-01, 8.035e-02, -1.384e-01, 2.720e-02, -5.025e-02, -7.221e-02), r);\n\tr = MulAdd(s4_2, M4(2.902e-02, 5.965e-02, -8.962e-02, -1.041e-01, -3.013e-02, 7.582e-03, -5.418e-02, 1.194e-02, -2.878e-02, 1.109e-02, 6.175e-02, 2.218e-01, -3.740e-02, 7.279e-02, 6.343e-02, -1.504e-01), r);\n\tr = MulAdd(s4_3, M4(2.594e-03, 6.859e-02, -8.585e-02, -1.093e-01, 1.127e-01, 2.987e-02, -4.764e-03, -7.266e-02, -2.309e-01, -8.483e-02, 2.689e-02, 9.467e-02, -1.932e-01, 3.025e-02, -1.774e-01, 2.257e-02), r);\n\tr = MulAdd(s4_4, M4(-3.380e-02, -2.715e-01, 2.109e-01, 1.939e-01, 3.544e-01, 1.760e-01, 1.256e-01, 3.389e-01, -1.171e-01, 8.500e-02, -7.548e-03, -6.249e-03, 1.652e-01, 2.683e-01, 1.176e-01, 1.076e-01), r);\n\tr = MulAdd(s4_5, M4(3.852e-02, 5.116e-02, 7.302e-02, 2.183e-02, -6.533e-02, -1.307e-01, -3.048e-02, -5.867e-02, 4.960e-02, -1.511e-01, 1.733e-01, 9.017e-02, -5.388e-02, -9.929e-02, 8.055e-02, 7.235e-03), r);\n\tr = MulAdd(s4_6, M4(1.582e-02, 1.934e-02, -1.586e-02, 5.434e-02, 5.866e-02, 6.706e-02, -7.785e-02, -9.925e-03, -1.298e-01, -3.682e-02, 1.045e-02, -2.375e-02, 5.247e-02, 6.268e-02, 3.628e-02, 1.363e-01), r);\n\tr = MulAdd(s4_7, M4(6.417e-02, 9.830e-02, -5.222e-02, -1.481e-01, 4.089e-02, -2.354e-02, -1.246e-01, -1.849e-01, 7.210e-02, -1.505e-01, 4.560e-02, -3.750e-02, 9.564e-02, 1.137e-01, 6.895e-02, -3.109e-02), r);\n\tr = MulAdd(s4_8, M4(-8.126e-03, -1.664e-02, 4.428e-02, 3.837e-02, -6.828e-02, 6.690e-02, -5.074e-02, 3.574e-02, 4.772e-02, -3.342e-03, -2.924e-02, -1.893e-03, 4.866e-03, -4.318e-02, 1.736e-03, -3.455e-02), r);\n\tr = MulAdd(s5_0, M4(-8.940e-02, 7.315e-02, -5.067e-02, 3.852e-02, 6.637e-02, 6.184e-02, -5.849e-02, 4.301e-02, -5.232e-02, 6.418e-03, 2.258e-02, 5.604e-02, -4.454e-02, -1.157e-03, 1.682e-03, 9.476e-03), r);\n\tr = MulAdd(s5_1, M4(8.366e-02, 6.140e-03, -6.720e-02, -1.008e-01, -8.472e-02, 1.509e-02, -1.952e-02, -1.084e-02, 1.948e-02, 8.458e-02, -1.669e-03, 4.498e-03, -2.013e-01, -1.214e-01, -7.837e-03, -7.837e-02), r);\n\tr = MulAdd(s5_2, M4(-7.940e-02, 2.387e-02, -6.337e-02, 5.181e-02, -1.316e-01, 3.389e-02, -5.279e-02, 2.279e-02, -1.102e-01, -7.101e-02, -9.703e-03, 2.051e-02, 2.353e-02, -4.424e-02, 1.273e-02, -9.692e-02), r);\n\tr = MulAdd(s5_3, M4(5.557e-02, 7.451e-02, 3.178e-03, -4.212e-02, 3.122e-02, -2.396e-02, -8.966e-02, -9.927e-04, 2.508e-02, -5.133e-03, 8.334e-03, -2.729e-02, -5.904e-02, 3.528e-02, -9.926e-02, -1.284e-01), r);\n\tr = MulAdd(s5_4, M4(1.171e-01, -1.991e-02, 3.233e-02, -1.152e-01, -2.104e-02, 8.669e-02, -2.160e-01, -1.384e-02, -3.869e-02, -8.916e-02, -4.776e-02, -5.731e-02, -1.426e-02, -1.452e-01, -9.362e-02, 5.315e-03), r);\n\tr = MulAdd(s5_5, M4(-9.686e-02, 2.843e-02, -1.125e-03, 2.183e-02, -9.590e-02, -1.502e-01, 4.370e-02, -1.739e-01, -6.316e-02, -1.170e-01, 1.243e-01, -1.580e-01, 1.111e-01, -1.091e-01, 2.264e-02, -1.214e-02), r);\n\tr = MulAdd(s5_6, M4(-5.885e-02, -3.099e-02, 1.093e-03, 5.912e-02, -4.486e-02, 3.087e-02, -2.398e-02, -6.617e-02, 1.619e-03, -1.174e-02, 1.940e-02, -6.470e-02, 1.710e-01, 3.624e-02, 4.390e-02, 5.356e-02), r);\n\tr = MulAdd(s5_7, M4(-7.138e-02, 6.516e-02, -3.867e-02, 2.541e-02, 1.851e-01, -7.945e-02, 6.494e-02, -2.329e-01, 3.373e-02, -5.117e-02, 4.693e-02, -1.827e-02, -7.217e-02, -7.580e-02, 7.111e-02, 1.205e-01), r);\n\tr = MulAdd(s5_8, M4(-4.836e-02, 7.135e-03, 8.069e-03, 2.399e-02, -7.394e-03, -3.601e-02, 1.617e-01, -7.325e-02, 1.779e-02, 1.871e-02, -6.577e-03, 5.262e-02, 3.870e-02, -1.992e-02, 4.046e-03, 8.874e-02), r);\n\tr = MulAdd(s6_0, M4(-9.499e-02, 1.140e-02, -2.421e-02, 2.122e-02, -2.021e-01, -3.334e-02, 3.182e-02, -1.274e-01, -8.233e-03, -2.705e-02, -5.592e-03, 3.303e-02, 4.097e-02, -5.783e-02, 1.346e-01, -3.961e-02), r);\n\tr = MulAdd(s6_1, M4(6.091e-02, 6.245e-02, -4.442e-02, 1.453e-02, 2.683e-01, 5.106e-02, -4.170e-02, 8.964e-02, -5.980e-02, -1.027e-01, 2.440e-02, -1.843e-01, -6.987e-02, 1.362e-01, 2.607e-02, 1.640e-01), r);\n\tr = MulAdd(s6_2, M4(-1.758e-02, 4.428e-02, -2.778e-02, 3.710e-02, -3.928e-02, -1.444e-01, 8.485e-02, -2.627e-01, -8.773e-03, -4.307e-02, 3.662e-02, -4.266e-02, -1.248e-01, -4.775e-02, 1.386e-01, -4.849e-02), r);\n\tr = MulAdd(s6_3, M4(2.991e-02, 1.300e-02, -3.722e-02, -1.127e-02, -6.081e-02, -6.664e-02, 2.307e-02, -1.537e-01, -9.816e-02, 6.137e-02, -1.776e-01, -7.971e-02, 1.737e-01, 1.321e-01, 1.894e-02, 6.328e-02), r);\n\tr = MulAdd(s6_4, M4(2.797e-01, -4.712e-02, 9.233e-02, 1.622e-02, -3.759e-01, -3.643e-01, -3.666e-01, -2.763e-01, -1.820e-01, -9.981e-02, -1.633e-01, 5.873e-02, 3.666e-01, 1.277e-02, 2.019e-01, 7.803e-02), r);\n\tr = MulAdd(s6_5, M4(2.367e-02, -8.355e-02, -4.754e-03, -4.127e-02, -2.992e-02, -2.973e-02, -2.183e-01, -1.935e-01, 4.919e-02, 1.440e-01, -1.552e-01, 1.123e-02, 3.556e-02, -2.278e-01, 7.747e-02, -2.039e-01), r);\n\tr = MulAdd(s6_6, M4(2.708e-02, -4.988e-02, 1.906e-02, 6.498e-02, -6.744e-02, -6.364e-02, -6.158e-02, -1.413e-01, 5.636e-02, 2.833e-02, -2.499e-02, -5.730e-02, 2.125e-02, 4.344e-02, -3.250e-02, -1.461e-03), r);\n\tr = MulAdd(s6_7, M4(2.917e-02, 5.699e-02, -9.029e-03, 5.299e-03, -7.207e-03, -3.742e-04, -2.350e-01, -5.041e-01, -5.733e-02, -1.208e-01, -1.018e-01, -8.049e-02, 6.673e-02, 1.619e-02, 5.462e-02, -9.444e-02), r);\n\tr = MulAdd(s6_8, M4(-2.370e-02, 4.235e-02, -9.635e-03, 7.599e-02, -5.283e-02, 1.118e-01, 8.985e-04, -2.380e-01, 5.308e-02, -4.938e-02, -2.485e-02, -4.421e-02, -1.214e-01, -1.494e-01, 1.557e-01, 1.011e-01), r);\n\tr = MulAdd(s7_0, M4(8.055e-03, -1.224e-01, 8.803e-02, -1.356e-01, -2.769e-02, -8.317e-02, 5.839e-02, 8.470e-03, 4.342e-02, -1.724e-02, 2.101e-02, -9.978e-02, 1.580e-02, 7.303e-03, -6.736e-03, -2.369e-02), r);\n\tr = MulAdd(s7_1, M4(2.547e-01, 3.471e-01, 1.057e-01, 2.483e-02, 5.170e-02, 7.626e-02, 3.029e-02, 1.112e-01, -1.420e-01, 6.397e-03, 8.291e-02, 2.148e-02, 4.163e-02, 3.154e-02, 3.481e-04, -2.553e-02), r);\n\tr = MulAdd(s7_2, M4(-3.976e-02, 1.646e-01, 1.366e-02, -6.070e-02, 3.627e-02, -4.193e-02, 3.261e-02, -1.633e-02, 7.845e-02, 1.841e-02, 4.332e-02, 1.388e-01, -9.223e-02, -5.002e-02, 7.201e-02, -1.203e-01), r);\n\tr = MulAdd(s7_3, M4(-2.471e-01, -1.349e-01, -1.073e-01, -1.309e-01, -6.461e-02, 1.575e-02, -5.407e-03, -9.095e-04, 7.147e-02, -5.513e-02, -9.230e-02, -9.799e-02, 1.026e-01, 3.824e-02, -5.407e-02, 3.357e-02), r);\n\tr = MulAdd(s7_4, M4(2.224e-01, 3.955e-01, 6.146e-01, -3.382e-01, -6.338e-04, 4.467e-02, 1.799e-02, 1.858e-01, -6.463e-02, -2.434e-02, -5.017e-02, -6.841e-02, 8.690e-02, 7.333e-02, -5.250e-02, -1.024e-01), r);\n\tr = MulAdd(s7_5, M4(-5.744e-03, -7.747e-02, -1.165e-01, 6.425e-02, 7.534e-04, 2.417e-02, 3.699e-02, -1.184e-03, 1.170e-01, 1.713e-01, -7.106e-02, -7.859e-02, -5.088e-02, 1.855e-02, 8.254e-03, 1.640e-02), r);\n\tr = MulAdd(s7_6, M4(2.489e-01, -1.301e-02, 8.608e-02, -8.025e-03, 1.432e-01, -1.112e-02, 3.130e-02, 4.804e-02, 4.789e-02, 3.900e-02, 5.997e-02, -6.963e-02, -1.209e-01, -2.880e-02, -5.815e-02, -1.188e-02), r);\n\tr = MulAdd(s7_7, M4(6.111e-02, 1.857e-01, -4.093e-02, -2.237e-01, -1.180e-01, -3.436e-03, -5.388e-02, 3.630e-02, -9.795e-02, -5.991e-02, 1.480e-01, -4.211e-02, -5.772e-02, -7.684e-03, -8.719e-02, -9.107e-02), r);\n\tr = MulAdd(s7_8, M4(1.557e-01, -1.302e-02, 3.695e-02, -1.460e-01, 7.050e-02, 6.253e-02, 2.880e-02, 2.843e-02, 4.670e-04, -1.595e-01, 8.835e-02, -6.949e-02, 1.607e-02, 1.309e-03, -1.750e-02, -3.881e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.089e-02, -2.045e-02, 7.370e-03, 9.968e-03 };\n\tr = MulAdd(s0_0, M4(3.218e-02, -9.156e-03, 1.697e-02, -3.071e-02, 1.779e-03, 2.556e-02, -3.235e-02, -4.232e-02, 1.762e-02, -3.808e-02, 1.125e-02, 1.392e-02, 4.069e-03, 2.945e-03, -7.095e-03, -1.031e-02), r);\n\tr = MulAdd(s0_1, M4(-6.904e-03, -7.007e-02, -8.971e-03, 4.521e-02, 2.397e-02, -3.704e-02, -1.335e-02, -4.669e-02, -2.479e-02, 1.644e-02, 6.426e-02, 3.375e-02, -1.541e-03, -6.073e-02, 1.416e-02, -3.269e-02), r);\n\tr = MulAdd(s0_2, M4(-2.058e-02, 7.011e-02, -5.697e-02, 4.020e-02, 7.338e-03, -2.103e-03, 2.206e-02, 6.535e-03, -3.231e-02, 3.870e-02, -3.860e-03, -3.670e-02, 2.495e-02, -2.574e-02, 1.926e-02, -4.973e-02), r);\n\tr = MulAdd(s0_3, M4(-4.293e-02, -3.056e-02, -1.686e-01, 1.441e-02, -1.059e-01, -1.344e-01, 2.379e-02, -4.777e-02, -3.675e-02, 1.265e-01, -5.420e-02, -3.269e-02, -3.922e-03, 5.347e-02, -2.844e-02, -1.718e-02), r);\n\tr = MulAdd(s0_4, M4(-8.574e-02, -9.176e-02, -1.966e-01, 1.048e-01, -8.294e-03, 1.117e-01, 9.178e-02, 1.257e-01, -4.588e-02, -5.564e-02, -1.730e-01, 1.361e-02, 6.663e-02, 1.381e-01, -1.630e-02, -4.021e-02), r);\n\tr = MulAdd(s0_5, M4(4.136e-03, -7.935e-02, -8.286e-02, -1.222e-01, 4.729e-02, 5.418e-02, 8.974e-02, 1.665e-02, -2.416e-02, -6.075e-02, -1.305e-01, 3.602e-02, -3.502e-02, 1.021e-02, -2.809e-02, 2.753e-02), r);\n\tr = MulAdd(s0_6, M4(3.777e-02, 2.017e-02, 3.033e-02, -4.287e-03, 2.545e-02, 1.474e-02, 4.763e-02, -3.844e-02, -8.892e-03, 1.642e-02, 8.656e-02, -8.221e-03, 2.291e-03, -2.849e-02, -1.719e-02, -5.023e-03), r);\n\tr = MulAdd(s0_7, M4(6.786e-02, -3.284e-03, 6.808e-02, -7.077e-04, 3.924e-02, 3.459e-02, 3.492e-02, -3.447e-02, -1.055e-01, -1.112e-01, 2.040e-01, -5.955e-02, 5.243e-03, -4.751e-02, -1.151e-02, 1.004e-01), r);\n\tr = MulAdd(s0_8, M4(-4.098e-02, 7.437e-03, -2.620e-02, -3.189e-02, -1.628e-02, 8.777e-03, 8.764e-03, -7.779e-03, 1.184e-01, 9.020e-03, 7.741e-02, -8.047e-02, 2.824e-02, 5.073e-03, -4.022e-02, 6.762e-02), r);\n\tr = MulAdd(s1_0, M4(4.494e-02, -6.119e-02, 4.058e-02, 5.218e-03, 1.067e-02, 2.838e-02, 2.448e-02, 4.347e-02, -6.863e-03, 1.615e-02, 2.493e-02, -2.700e-02, 4.393e-03, 9.190e-03, -2.479e-02, -2.607e-02), r);\n\tr = MulAdd(s1_1, M4(-1.614e-02, -2.665e-02, 5.162e-02, 4.714e-02, -2.552e-02, 3.422e-02, -2.133e-02, -2.968e-02, 8.076e-03, -1.551e-02, -2.935e-02, -3.791e-03, 5.501e-02, -7.794e-04, 1.778e-02, 3.403e-02), r);\n\tr = MulAdd(s1_2, M4(4.270e-02, -1.920e-02, 1.891e-02, 1.107e-01, -5.436e-03, -2.268e-02, 1.225e-03, 6.840e-03, 5.458e-03, -3.349e-03, 1.522e-02, -4.326e-04, 3.125e-02, -3.705e-02, 9.931e-03, -2.976e-03), r);\n\tr = MulAdd(s1_3, M4(-6.230e-03, 7.126e-02, -8.891e-02, 5.800e-02, 4.454e-02, 9.799e-02, -4.127e-02, 3.676e-02, -1.231e-02, 1.625e-01, -5.166e-02, -3.153e-02, -4.016e-01, -1.090e-03, 2.476e-01, -4.948e-03), r);\n\tr = MulAdd(s1_4, M4(-1.130e-02, 2.329e-01, -2.248e-01, -2.242e-02, 3.017e-02, -7.676e-02, -8.103e-02, -1.202e-01, 6.177e-02, -8.543e-03, 4.122e-02, -1.608e-02, -5.273e-02, -4.625e-02, 5.280e-01, -1.035e-01), r);\n\tr = MulAdd(s1_5, M4(1.048e-01, -4.992e-02, -4.728e-02, -8.256e-02, -1.446e-02, -1.091e-01, -3.986e-03, 3.267e-01, -5.484e-03, -4.397e-02, 1.283e-02, -1.320e-02, -1.774e-02, 2.067e-02, 7.630e-02, -9.716e-02), r);\n\tr = MulAdd(s1_6, M4(-7.980e-02, 4.070e-03, 1.274e-02, 2.572e-02, 5.635e-02, -3.270e-02, 5.764e-02, -9.156e-02, -1.360e-02, -4.462e-03, -1.850e-02, 6.472e-03, -6.115e-02, -5.032e-02, -2.241e-02, -2.497e-02), r);\n\tr = MulAdd(s1_7, M4(-2.255e-02, -4.712e-02, 1.017e-01, 2.487e-02, 1.273e-02, -1.527e-02, -9.580e-02, 1.803e-01, -4.787e-02, 5.310e-03, -8.233e-02, -6.115e-02, -2.104e-01, 2.682e-02, 3.220e-02, -8.610e-02), r);\n\tr = MulAdd(s1_8, M4(9.152e-03, -5.382e-02, -2.372e-02, 3.469e-02, 1.743e-02, 1.022e-02, -1.876e-03, -1.372e-01, 3.201e-02, 8.503e-03, -1.625e-02, 3.147e-02, 3.708e-02, 1.029e-02, -1.535e-02, -1.202e-01), r);\n\tr = MulAdd(s2_0, M4(-3.319e-02, 1.736e-02, 4.131e-03, -1.563e-02, -3.905e-02, 5.418e-02, -6.206e-02, -2.935e-03, 2.800e-02, -2.023e-02, -2.784e-02, 3.006e-03, -6.059e-03, 6.524e-02, -2.346e-02, -1.736e-02), r);\n\tr = MulAdd(s2_1, M4(-4.049e-02, 6.725e-03, -1.085e-02, 4.035e-03, -1.821e-02, 1.768e-01, -8.133e-02, -3.072e-02, 4.867e-02, -6.692e-02, -7.153e-02, -2.925e-02, -2.937e-02, 4.958e-02, 2.931e-02, 2.594e-02), r);\n\tr = MulAdd(s2_2, M4(1.404e-02, 1.566e-02, -2.191e-02, 1.534e-02, 4.273e-02, 1.018e-02, 3.499e-02, -5.138e-02, 3.985e-02, -1.176e-01, -1.058e-01, 1.436e-02, -2.559e-02, 1.130e-02, -2.797e-02, 3.066e-02), r);\n\tr = MulAdd(s2_3, M4(3.445e-02, 1.171e-02, -3.006e-02, 3.256e-03, -3.482e-02, 4.140e-02, -4.909e-02, -6.044e-02, 1.321e-01, -1.897e-01, -8.159e-02, -2.112e-02, 1.763e-02, -1.096e-02, 5.685e-02, 4.375e-02), r);\n\tr = MulAdd(s2_4, M4(-4.789e-02, -4.563e-03, -4.865e-02, -5.439e-02, 5.289e-02, -4.466e-01, -3.885e-01, -7.680e-03, 1.108e-01, 3.201e-02, -1.204e-01, 8.638e-02, -1.449e-02, 3.291e-01, -6.534e-02, 1.375e-01), r);\n\tr = MulAdd(s2_5, M4(-7.094e-02, -9.337e-02, -2.026e-02, -4.696e-02, -9.318e-02, -1.711e-01, 1.475e-03, 2.454e-01, 3.542e-02, -1.756e-01, 3.723e-02, 2.257e-01, 1.025e-01, -1.602e-01, -1.003e-01, -9.612e-02), r);\n\tr = MulAdd(s2_6, M4(6.853e-02, -7.465e-02, -5.793e-02, -1.559e-02, 1.170e-01, -4.489e-02, -1.518e-02, -1.635e-01, 1.255e-01, -6.608e-02, -1.771e-02, -2.516e-02, -2.612e-05, 5.702e-02, -4.380e-02, -1.893e-02), r);\n\tr = MulAdd(s2_7, M4(7.728e-02, 7.197e-02, 4.858e-02, -9.770e-02, 1.490e-02, -9.032e-03, -8.429e-02, 1.293e-02, 1.367e-01, -2.023e-02, 8.069e-02, 1.568e-01, 1.764e-01, 2.864e-02, 3.665e-02, -1.475e-01), r);\n\tr = MulAdd(s2_8, M4(1.070e-02, -7.340e-03, 2.201e-02, -4.505e-02, 1.376e-02, 3.961e-02, -5.880e-02, -2.605e-01, 1.372e-01, -3.956e-02, 3.714e-02, 1.820e-02, -2.554e-02, -1.309e-01, -9.963e-03, -1.017e-01), r);\n\tr = MulAdd(s3_0, M4(-8.436e-02, 7.121e-02, -5.202e-02, -2.004e-03, -2.206e-02, 4.483e-02, 5.284e-02, -1.632e-02, -1.945e-02, 4.127e-02, -3.915e-02, -3.035e-02, -1.770e-02, 2.422e-02, -4.709e-03, -1.520e-02), r);\n\tr = MulAdd(s3_1, M4(-5.321e-02, 1.762e-01, -2.945e-02, 7.592e-02, -1.644e-02, 1.135e-01, -7.430e-03, -3.749e-02, -5.811e-03, 1.906e-02, 2.663e-02, 3.511e-02, 3.281e-03, -1.015e-01, -3.120e-02, -6.097e-02), r);\n\tr = MulAdd(s3_2, M4(-1.092e-03, 3.153e-02, -5.503e-03, -1.146e-02, 5.314e-02, -2.881e-03, -3.640e-02, -9.900e-02, 4.377e-03, 5.991e-02, -2.789e-02, -3.115e-02, -2.704e-03, -1.549e-02, 2.186e-02, 1.206e-02), r);\n\tr = MulAdd(s3_3, M4(-7.141e-02, -1.261e-01, 1.962e-01, 6.488e-02, 2.605e-02, -2.440e-02, -8.179e-02, -3.468e-03, -4.819e-02, -3.724e-02, 7.258e-02, -3.404e-04, 3.014e-02, 3.029e-02, -1.218e-02, -3.531e-02), r);\n\tr = MulAdd(s3_4, M4(-1.182e-01, -6.580e-02, -1.255e-02, 9.880e-02, -3.174e-02, -9.890e-02, -7.282e-03, -9.129e-02, -4.213e-02, 4.028e-02, 9.673e-03, 6.345e-02, -3.783e-03, -1.110e-01, 2.652e-02, 5.203e-02), r);\n\tr = MulAdd(s3_5, M4(-2.349e-02, -8.691e-02, 4.553e-03, -8.088e-02, -6.252e-02, -7.572e-02, 6.911e-02, -1.130e-01, -4.595e-02, -1.190e-01, 6.714e-02, 1.355e-02, -1.892e-02, 1.295e-01, -1.577e-01, -1.358e-02), r);\n\tr = MulAdd(s3_6, M4(2.027e-01, 1.257e-01, -3.358e-02, -4.551e-03, 6.611e-02, 2.388e-02, 1.469e-02, -6.323e-02, -1.892e-02, 2.749e-02, 2.641e-02, 1.404e-03, 2.111e-02, -1.817e-02, -2.992e-02, -2.689e-02), r);\n\tr = MulAdd(s3_7, M4(-1.821e-01, -9.000e-02, 3.136e-02, -4.891e-04, 1.247e-01, 4.818e-02, 1.421e-01, -1.236e-01, -1.147e-02, 6.238e-02, 5.303e-02, 1.022e-02, 2.910e-02, -1.084e-02, 3.081e-02, 5.174e-02), r);\n\tr = MulAdd(s3_8, M4(-1.797e-02, -5.589e-03, -1.555e-02, -6.042e-02, 1.961e-02, 6.395e-02, 1.150e-01, -2.035e-03, 3.739e-02, 4.287e-02, 5.316e-02, -9.278e-02, -1.505e-02, 1.129e-01, 1.067e-01, 1.242e-01), r);\n\tr = MulAdd(s4_0, M4(3.162e-02, -9.156e-02, 4.139e-02, -5.570e-03, 2.892e-02, 2.495e-02, -2.536e-02, 5.830e-04, -1.000e-02, -8.313e-02, -1.337e-01, -1.601e-01, -4.115e-02, 3.800e-02, 2.641e-02, 1.219e-02), r);\n\tr = MulAdd(s4_1, M4(-5.936e-03, -7.623e-02, 3.342e-02, 8.082e-02, -1.409e-02, 7.734e-03, -4.970e-02, -2.206e-02, -8.357e-02, 9.654e-02, -6.065e-02, 8.079e-03, 7.353e-02, -1.206e-01, -5.928e-03, 1.667e-02), r);\n\tr = MulAdd(s4_2, M4(7.881e-04, 6.908e-02, -6.028e-03, -1.618e-02, 4.818e-04, 3.488e-02, 1.759e-03, 2.699e-02, 2.713e-02, 3.136e-02, -2.399e-02, -1.504e-03, -6.237e-03, -4.065e-02, 5.615e-02, -3.163e-03), r);\n\tr = MulAdd(s4_3, M4(-2.860e-02, 1.294e-01, -2.332e-02, 1.808e-02, -1.743e-02, -5.386e-02, -3.762e-02, -4.321e-02, -2.588e-01, 1.398e-01, 1.353e-01, -8.920e-02, 2.448e-02, 4.920e-02, -1.224e-02, -1.614e-02), r);\n\tr = MulAdd(s4_4, M4(1.204e-01, -8.509e-02, -4.924e-02, 6.064e-03, 3.034e-02, 1.574e-02, 4.869e-02, 2.665e-02, 6.871e-02, -6.866e-02, 1.735e-02, 1.449e-01, -1.354e-01, 7.863e-02, 6.953e-02, -1.963e-03), r);\n\tr = MulAdd(s4_5, M4(1.099e-01, 5.797e-02, -1.392e-01, -4.072e-02, 5.068e-02, -4.678e-02, 3.621e-04, -6.722e-02, -7.565e-03, -6.160e-02, 2.661e-02, -3.352e-02, -1.439e-02, 1.805e-02, -3.017e-02, 2.053e-02), r);\n\tr = MulAdd(s4_6, M4(-6.244e-02, -2.477e-04, 1.592e-02, 8.183e-02, 4.341e-02, -3.616e-02, -3.582e-02, -7.649e-03, 1.282e-01, -2.958e-02, 6.122e-02, 4.400e-02, -8.084e-02, 2.607e-02, -1.274e-02, -3.702e-02), r);\n\tr = MulAdd(s4_7, M4(4.572e-02, -7.332e-02, -1.435e-02, -1.354e-03, -7.438e-03, 3.358e-02, -1.565e-02, 2.219e-02, -2.104e-01, 1.387e-01, -1.787e-01, 9.578e-03, -3.047e-02, 8.672e-03, 1.326e-02, 7.549e-02), r);\n\tr = MulAdd(s4_8, M4(2.942e-02, 5.386e-02, 7.478e-02, -1.506e-02, -3.262e-02, 5.324e-02, 1.510e-02, -7.526e-03, -9.404e-02, -2.948e-02, -1.159e-01, 5.612e-02, 1.017e-02, -2.557e-02, 4.533e-02, -7.814e-03), r);\n\tr = MulAdd(s5_0, M4(1.273e-02, -2.335e-02, 4.686e-04, -6.832e-02, -5.006e-03, 1.206e-01, 2.255e-02, 2.793e-02, 2.599e-02, -2.800e-02, -6.195e-02, -1.542e-02, 2.949e-02, 2.249e-02, -1.452e-02, -3.281e-02), r);\n\tr = MulAdd(s5_1, M4(-2.655e-02, -7.515e-02, 5.225e-02, 2.554e-02, -3.540e-03, 1.848e-01, -4.751e-02, 6.319e-02, -1.683e-02, -8.168e-02, -3.264e-04, 1.614e-02, -8.596e-02, 1.572e-01, -7.540e-02, -3.979e-02), r);\n\tr = MulAdd(s5_2, M4(2.264e-02, 2.874e-02, 1.692e-02, -2.441e-02, 8.897e-03, 2.086e-01, -2.564e-02, -6.567e-02, -2.882e-02, 2.852e-03, -1.204e-02, 2.980e-02, 9.673e-02, -8.394e-02, -1.061e-02, -5.353e-02), r);\n\tr = MulAdd(s5_3, M4(-4.644e-02, 2.119e-01, -4.925e-02, 4.407e-02, -2.709e-02, 3.256e-02, 1.203e-01, 7.638e-02, -8.119e-02, -3.423e-02, 5.092e-02, 4.114e-02, -3.080e-02, -4.722e-02, 3.639e-02, 3.353e-02), r);\n\tr = MulAdd(s5_4, M4(1.231e-02, -2.017e-01, 2.356e-01, 4.422e-02, -1.923e-01, 2.277e-01, 2.554e-01, -1.027e-01, 7.785e-02, 1.668e-01, 2.965e-02, 7.079e-02, 1.176e-01, -3.389e-01, -8.714e-02, 7.058e-02), r);\n\tr = MulAdd(s5_5, M4(-9.489e-03, 2.903e-02, -3.210e-02, -1.888e-01, 7.274e-02, -1.247e-01, -3.767e-02, -4.563e-01, 4.031e-02, -6.312e-02, 5.967e-02, -1.956e-02, -1.023e-01, 1.412e-01, -4.549e-02, 7.961e-02), r);\n\tr = MulAdd(s5_6, M4(-1.957e-02, 2.566e-02, -1.645e-02, -4.895e-02, -7.324e-02, 5.104e-02, 1.960e-02, 1.259e-03, -8.464e-02, 1.944e-02, 3.265e-02, 3.044e-02, 6.595e-02, -2.463e-02, 8.220e-02, -3.774e-02), r);\n\tr = MulAdd(s5_7, M4(2.361e-02, 4.172e-02, -2.336e-01, -1.671e-02, -2.482e-01, 1.362e-01, -5.941e-02, -2.531e-01, -1.605e-01, 5.645e-02, -1.127e-02, -2.137e-04, -1.616e-02, -5.168e-03, 5.329e-02, -4.315e-02), r);\n\tr = MulAdd(s5_8, M4(-3.904e-02, 3.886e-02, -4.339e-02, -1.119e-02, 1.983e-02, -1.485e-02, -4.235e-02, -2.184e-01, 5.063e-03, -2.330e-02, -1.304e-02, -2.295e-02, 5.199e-02, -2.578e-03, 1.972e-02, 1.030e-02), r);\n\tr = MulAdd(s6_0, M4(-2.338e-02, 5.055e-02, 1.732e-03, -9.885e-03, -2.915e-02, 8.990e-02, 2.518e-02, 2.124e-02, -1.774e-02, -3.234e-02, 6.783e-02, -1.173e-02, 9.443e-03, -2.168e-02, -1.047e-02, -3.308e-02), r);\n\tr = MulAdd(s6_1, M4(-3.121e-02, 5.847e-02, -1.311e-02, 9.991e-03, 7.540e-02, 3.953e-02, 1.283e-02, -1.149e-01, -2.369e-02, 1.301e-01, 1.979e-03, -1.296e-03, -2.955e-02, -1.485e-02, -8.727e-02, -1.772e-02), r);\n\tr = MulAdd(s6_2, M4(3.338e-02, -2.252e-03, -2.092e-02, 1.192e-03, 9.133e-04, -2.904e-02, 6.185e-03, -6.905e-02, -2.519e-02, 7.629e-02, 4.223e-02, -9.257e-02, 8.333e-03, -3.317e-02, 3.203e-02, 6.154e-02), r);\n\tr = MulAdd(s6_3, M4(1.712e-02, 2.045e-02, -5.793e-02, -2.341e-03, 8.039e-02, -8.269e-02, 2.075e-02, -4.721e-02, 9.015e-02, -3.655e-02, 6.540e-02, 3.960e-02, 1.583e-02, -7.436e-02, -1.300e-02, 1.814e-02), r);\n\tr = MulAdd(s6_4, M4(2.184e-02, -1.733e-02, -1.068e-01, 2.435e-02, -8.370e-02, -5.671e-01, -2.107e-02, 4.727e-02, -4.600e-02, 4.284e-02, -7.898e-02, -1.697e-01, 1.979e-02, -5.546e-02, 1.361e-01, 9.164e-02), r);\n\tr = MulAdd(s6_5, M4(1.320e-02, -1.454e-01, 2.815e-02, -5.059e-02, -1.163e-03, -1.499e-01, 3.430e-02, -2.612e-02, 1.303e-03, 9.012e-03, -9.780e-02, 1.160e-01, -4.786e-02, 1.464e-02, -1.254e-02, -6.177e-02), r);\n\tr = MulAdd(s6_6, M4(1.925e-02, -3.924e-04, -5.408e-02, 8.060e-03, -1.343e-01, -7.555e-02, 8.500e-02, 7.564e-03, -8.056e-03, 9.773e-02, -6.052e-02, 4.965e-02, -2.164e-02, 6.185e-02, -1.131e-01, -2.691e-02), r);\n\tr = MulAdd(s6_7, M4(1.581e-02, 1.541e-02, -9.285e-02, -6.290e-02, 2.561e-02, -2.064e-01, 1.334e-01, -4.603e-02, 3.075e-01, 1.706e-02, -5.560e-02, 1.086e-01, 1.394e-01, -2.809e-02, -8.801e-02, -3.920e-02), r);\n\tr = MulAdd(s6_8, M4(-2.864e-02, 3.645e-03, -3.122e-02, -4.279e-02, 6.721e-03, -5.037e-02, 5.367e-02, -5.210e-02, 1.086e-02, 8.553e-02, -2.049e-02, 1.921e-01, -1.198e-03, 5.278e-02, 3.162e-03, 5.703e-02), r);\n\tr = MulAdd(s7_0, M4(8.237e-04, 7.565e-02, -3.261e-02, 1.459e-02, -3.049e-02, -6.221e-02, -3.988e-02, -2.718e-02, 1.579e-02, -6.823e-02, 9.483e-03, 3.391e-03, -1.150e-02, 2.973e-02, 4.140e-02, 1.146e-02), r);\n\tr = MulAdd(s7_1, M4(-6.292e-02, -3.017e-02, -2.304e-02, -4.184e-02, 6.524e-03, -9.847e-02, 4.331e-03, -2.763e-03, 2.436e-02, 7.249e-02, -4.674e-02, 6.134e-02, 3.011e-02, 3.430e-01, 7.222e-02, 1.344e-01), r);\n\tr = MulAdd(s7_2, M4(3.360e-02, -5.552e-02, -4.943e-02, 3.161e-02, -1.759e-02, 2.561e-02, -1.584e-02, 1.067e-02, -6.018e-03, -2.191e-02, 1.001e-01, -5.162e-02, 4.172e-02, -7.222e-02, -4.320e-02, -1.671e-01), r);\n\tr = MulAdd(s7_3, M4(-1.997e-02, 6.211e-02, 2.093e-02, 2.590e-02, 4.681e-02, -1.864e-01, 2.634e-02, -2.768e-02, -1.375e-03, 5.001e-03, 5.199e-02, 7.349e-02, 2.499e-02, 9.689e-02, -5.260e-02, -4.920e-02), r);\n\tr = MulAdd(s7_4, M4(-2.316e-02, 2.798e-02, -2.930e-03, 2.767e-02, 7.590e-02, -3.101e-01, 1.334e-01, 1.037e-01, -1.135e-02, 4.434e-02, -1.875e-01, -1.480e-01, -3.558e-01, -2.322e-02, 1.764e-02, -3.115e-01), r);\n\tr = MulAdd(s7_5, M4(3.913e-02, -3.022e-02, -8.960e-02, -1.972e-01, 1.655e-02, -2.856e-02, -1.324e-02, 1.702e-03, 3.825e-02, -5.577e-02, -9.738e-02, 2.391e-02, -8.171e-02, 8.100e-02, -3.003e-02, 3.654e-02), r);\n\tr = MulAdd(s7_6, M4(5.264e-02, 4.476e-03, -1.157e-01, -1.648e-02, 1.046e-02, -1.651e-02, -8.078e-02, 3.162e-02, 1.550e-02, 1.141e-02, -9.502e-02, -9.920e-03, -9.480e-02, -5.184e-02, -9.785e-02, -1.331e-02), r);\n\tr = MulAdd(s7_7, M4(7.429e-02, 1.379e-01, 5.235e-02, -1.123e-01, -9.043e-02, -7.733e-02, -6.002e-02, -1.955e-02, 4.030e-02, -1.113e-01, 9.796e-02, -8.453e-03, -2.674e-01, 3.664e-02, -6.066e-02, -1.008e-01), r);\n\tr = MulAdd(s7_8, M4(-8.165e-02, 1.089e-02, 1.097e-01, 2.733e-01, 4.780e-03, -6.589e-03, -3.362e-02, 3.750e-02, -4.349e-02, -2.515e-02, -6.238e-02, -3.233e-02, -2.766e-03, -4.207e-03, -1.958e-02, -1.892e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -8.471e-03, -1.471e-02, -1.078e-02, -1.292e-02 };\n\tr = MulAdd(s0_0, M4(-2.852e-02, 1.417e-02, -5.760e-02, 1.306e-02, -4.786e-02, 1.171e-01, -9.699e-02, -3.414e-02, 2.571e-02, 3.132e-03, -3.758e-02, 4.471e-02, 1.401e-02, 3.463e-02, -1.304e-02, 2.016e-02), r);\n\tr = MulAdd(s0_1, M4(-5.553e-02, 3.789e-02, 4.053e-02, -4.282e-02, 3.149e-02, -2.488e-02, 2.642e-02, 4.853e-03, -2.545e-02, -7.643e-02, -1.664e-02, -2.488e-02, 6.374e-02, -3.734e-02, 3.373e-02, 4.745e-02), r);\n\tr = MulAdd(s0_2, M4(4.395e-02, 5.040e-02, -5.552e-02, 2.688e-02, 4.750e-02, -1.505e-02, -1.916e-03, 1.541e-04, -5.306e-02, 5.310e-02, 2.434e-02, 2.006e-02, -9.437e-02, 5.815e-03, -3.701e-03, -2.521e-02), r);\n\tr = MulAdd(s0_3, M4(2.083e-02, 7.140e-02, -2.608e-02, 2.495e-02, 4.434e-02, -5.999e-02, -6.960e-02, -6.558e-02, -1.061e-01, 4.193e-02, -1.131e-01, -3.521e-02, 8.448e-03, -2.716e-02, -3.281e-02, 4.599e-02), r);\n\tr = MulAdd(s0_4, M4(-3.234e-02, 6.022e-03, -4.811e-02, -1.240e-01, 4.969e-02, -7.316e-02, -2.026e-01, 9.092e-02, 6.015e-02, 2.843e-01, 2.905e-03, -4.195e-02, -5.940e-02, 4.388e-02, 1.342e-02, -2.337e-02), r);\n\tr = MulAdd(s0_5, M4(-2.380e-03, 4.119e-02, -1.256e-02, 2.114e-02, 7.213e-02, 2.175e-02, 3.727e-02, -7.079e-02, 6.056e-02, -9.221e-02, -2.669e-03, -8.523e-02, -2.162e-02, -1.026e-02, 2.079e-03, 1.027e-02), r);\n\tr = MulAdd(s0_6, M4(1.307e-03, -3.766e-03, 5.204e-02, 4.266e-02, -5.200e-02, -5.702e-02, -1.953e-02, -2.081e-03, -2.318e-03, 1.303e-01, 6.440e-02, 9.118e-03, -1.671e-02, 7.427e-02, -6.194e-03, 4.608e-03), r);\n\tr = MulAdd(s0_7, M4(-1.086e-02, -4.986e-02, -5.484e-02, -6.225e-02, 5.482e-02, -4.452e-02, -4.073e-03, -2.407e-02, -3.900e-01, -2.193e-01, -4.044e-02, -1.590e-01, -1.257e-02, 1.443e-02, 2.293e-02, -2.049e-02), r);\n\tr = MulAdd(s0_8, M4(1.868e-02, 2.597e-02, -4.738e-03, 4.515e-03, -7.239e-03, 8.633e-02, -2.154e-02, -2.209e-02, -7.547e-02, -8.588e-03, -2.511e-03, -1.880e-02, 1.668e-02, 1.148e-02, -2.489e-02, -2.564e-04), r);\n\tr = MulAdd(s1_0, M4(-9.664e-03, 6.720e-03, -3.616e-02, -1.741e-02, 2.702e-02, 1.912e-02, -8.431e-02, 1.800e-02, 7.762e-03, -5.716e-03, -3.505e-02, 3.793e-02, -5.187e-02, -8.724e-03, 1.210e-04, 1.115e-02), r);\n\tr = MulAdd(s1_1, M4(3.598e-02, 1.044e-01, -1.339e-02, 5.163e-02, -9.806e-02, -6.674e-02, -1.240e-01, -9.032e-02, 2.787e-02, -3.783e-03, 1.077e-02, -2.244e-02, 2.076e-01, -1.668e-01, 2.460e-01, 1.348e-01), r);\n\tr = MulAdd(s1_2, M4(3.081e-02, -6.488e-02, 4.064e-02, 2.232e-02, -3.069e-02, -2.755e-02, -1.444e-02, -4.403e-02, -3.164e-02, 1.650e-03, -5.957e-04, -1.117e-02, 1.618e-01, 4.197e-02, 4.412e-02, 8.392e-02), r);\n\tr = MulAdd(s1_3, M4(-7.096e-02, -1.122e-02, 7.644e-02, -3.528e-02, 8.855e-02, -4.147e-02, -1.767e-01, -1.084e-02, -2.915e-02, 7.801e-02, -9.706e-02, 1.738e-02, -5.857e-02, -7.020e-02, 1.048e-02, -8.851e-02), r);\n\tr = MulAdd(s1_4, M4(1.548e-01, 2.916e-02, -4.715e-02, 1.714e-01, -4.154e-01, 3.114e-01, -4.738e-02, -2.979e-01, -3.507e-02, -4.455e-02, -2.859e-02, -6.443e-02, 1.712e-01, 1.228e-01, 1.159e-01, 5.612e-01), r);\n\tr = MulAdd(s1_5, M4(-3.328e-02, -7.147e-02, -1.732e-02, -1.046e-01, 3.714e-02, 1.004e-02, 1.801e-02, 4.052e-02, -2.488e-02, -8.034e-02, 2.109e-02, -1.397e-02, -3.360e-02, 1.254e-01, 7.808e-02, 2.022e-01), r);\n\tr = MulAdd(s1_6, M4(1.909e-02, 1.367e-03, -6.469e-02, -1.298e-02, -1.989e-02, -4.991e-02, -5.581e-02, 6.140e-02, -3.023e-02, 2.203e-02, -3.642e-02, -1.523e-02, -2.428e-02, 2.404e-02, -1.127e-03, -1.336e-01), r);\n\tr = MulAdd(s1_7, M4(1.024e-02, -1.469e-01, 8.200e-02, 4.504e-03, -8.006e-02, -6.594e-02, -5.790e-02, -1.692e-01, -8.631e-03, 9.204e-02, -2.329e-02, -1.009e-02, 3.536e-03, 1.820e-01, -2.303e-02, 1.502e-01), r);\n\tr = MulAdd(s1_8, M4(-5.898e-02, -6.566e-02, -7.726e-02, -3.458e-02, -4.422e-02, 1.652e-01, 1.264e-02, 4.795e-02, -4.558e-03, -4.430e-02, -5.889e-03, -2.927e-02, 1.604e-02, 2.417e-01, -2.948e-02, -2.499e-02), r);\n\tr = MulAdd(s2_0, M4(-3.273e-02, 2.925e-03, -1.014e-01, -1.018e-02, -6.325e-02, 4.441e-02, -1.262e-01, 3.454e-02, 2.184e-02, -5.589e-02, 2.767e-02, -1.997e-03, -3.547e-02, 3.166e-02, -3.762e-02, -4.284e-02), r);\n\tr = MulAdd(s2_1, M4(4.734e-02, -1.519e-02, 4.751e-02, -1.437e-02, 1.469e-01, 3.827e-02, -7.801e-02, -4.105e-02, -9.743e-02, -2.653e-02, -1.080e-01, -6.721e-02, 7.721e-02, 1.992e-02, -1.360e-01, 1.240e-03), r);\n\tr = MulAdd(s2_2, M4(-1.485e-02, -4.148e-03, -9.333e-03, -2.213e-02, -1.235e-01, -3.868e-02, -2.507e-02, -2.216e-02, -9.666e-02, -7.740e-02, -3.893e-02, -1.239e-01, 1.794e-02, 1.602e-01, 2.262e-02, -2.582e-02), r);\n\tr = MulAdd(s2_3, M4(8.309e-03, 1.107e-01, -2.482e-01, -5.239e-02, 1.168e-01, -7.872e-02, 1.419e-01, -4.649e-02, -1.291e-03, -1.392e-01, 1.145e-02, -1.387e-02, 2.985e-02, -2.689e-02, 3.944e-02, -7.916e-03), r);\n\tr = MulAdd(s2_4, M4(-8.015e-02, 5.834e-02, 3.784e-02, -1.896e-01, -5.955e-01, 2.887e-01, -2.022e-01, 9.331e-02, -1.495e-01, -4.096e-02, -1.243e-01, -1.639e-01, 2.726e-02, -1.548e-01, 1.335e-01, 1.273e-01), r);\n\tr = MulAdd(s2_5, M4(2.455e-02, 3.565e-02, -3.254e-03, 5.547e-02, 9.475e-02, -3.398e-02, 3.236e-02, -1.890e-01, 9.742e-02, 6.328e-03, -1.349e-04, -1.412e-01, 1.845e-01, 5.447e-01, 1.569e-01, 1.644e-01), r);\n\tr = MulAdd(s2_6, M4(1.251e-02, -1.017e-01, -5.491e-02, -1.858e-02, 5.391e-02, 1.969e-02, 1.018e-02, 5.492e-02, -1.187e-02, -1.082e-01, -2.789e-02, 2.796e-03, 2.415e-02, 1.100e-02, 2.746e-02, 5.840e-03), r);\n\tr = MulAdd(s2_7, M4(-1.939e-02, -1.814e-02, 4.260e-02, -1.620e-02, -9.263e-02, 8.165e-02, -1.502e-01, -8.349e-02, 1.599e-02, 1.467e-01, -5.246e-02, -2.023e-01, 7.758e-02, 2.664e-01, 9.279e-02, 8.311e-02), r);\n\tr = MulAdd(s2_8, M4(-1.522e-02, -3.585e-02, 9.057e-03, 5.160e-02, -8.552e-02, 1.032e-01, 1.580e-02, 7.069e-02, -2.397e-02, -1.317e-02, 5.901e-03, -6.085e-05, 4.503e-02, -1.911e-02, 3.011e-02, -4.191e-03), r);\n\tr = MulAdd(s3_0, M4(-1.978e-01, 1.193e-02, -4.782e-03, -1.304e-01, 2.629e-02, 4.897e-02, -7.251e-02, 1.659e-02, -4.481e-02, 1.271e-04, 9.208e-02, -1.513e-02, 2.725e-02, -2.319e-02, 3.292e-02, 2.903e-02), r);\n\tr = MulAdd(s3_1, M4(1.598e-01, 1.196e-01, 6.364e-03, 7.658e-02, 1.132e-02, -1.454e-02, 2.569e-03, 1.864e-02, 4.843e-02, 6.323e-02, 1.658e-02, 1.019e-01, -5.539e-02, -2.201e-02, -2.732e-02, -2.322e-02), r);\n\tr = MulAdd(s3_2, M4(7.839e-03, 2.614e-02, 4.543e-03, 1.929e-02, 6.896e-02, -5.200e-03, -3.588e-03, -2.290e-02, 5.938e-02, 1.207e-02, -1.416e-02, -7.921e-04, -8.801e-03, 2.962e-02, 1.712e-02, 5.104e-03), r);\n\tr = MulAdd(s3_3, M4(6.813e-02, -6.967e-02, -2.467e-01, -3.398e-02, 6.877e-02, -7.348e-02, 9.109e-02, 2.261e-02, -4.072e-03, -2.712e-02, 1.256e-01, -1.947e-02, -3.744e-03, 8.099e-02, -8.439e-02, 3.376e-02), r);\n\tr = MulAdd(s3_4, M4(1.077e-01, -1.501e-01, 2.260e-01, 9.637e-02, 9.239e-02, -9.979e-02, -6.790e-02, 1.135e-01, 5.774e-02, 8.720e-02, -1.809e-02, 7.099e-02, -1.255e-01, -1.150e-01, -2.787e-01, -1.439e-01), r);\n\tr = MulAdd(s3_5, M4(-2.963e-02, 6.668e-03, -3.052e-02, -7.320e-02, 6.541e-02, -6.276e-02, 7.650e-02, -2.627e-02, 2.684e-02, -5.495e-02, 2.097e-02, -3.237e-02, -1.115e-01, -9.660e-02, -1.034e-01, -3.057e-01), r);\n\tr = MulAdd(s3_6, M4(-8.964e-02, 1.108e-01, 5.358e-02, -8.675e-02, -1.298e-03, 3.944e-02, 4.797e-02, 3.419e-02, 2.338e-02, 1.032e-01, 3.897e-02, -5.207e-03, 2.477e-02, -3.808e-02, 3.602e-02, -7.691e-03), r);\n\tr = MulAdd(s3_7, M4(-2.280e-02, -2.297e-01, -2.656e-02, 4.335e-03, 2.757e-02, -4.156e-02, 1.953e-02, 8.705e-02, 2.555e-02, 1.782e-01, -1.626e-02, 7.317e-02, 3.277e-02, -1.371e-01, 2.527e-02, 1.452e-02), r);\n\tr = MulAdd(s3_8, M4(-2.977e-03, -6.503e-03, 1.028e-02, 1.623e-01, -2.416e-02, 2.116e-02, 1.747e-02, -3.146e-02, 9.452e-03, 9.436e-03, 4.173e-02, 3.043e-02, 2.906e-02, 4.177e-02, -7.579e-02, -7.208e-02), r);\n\tr = MulAdd(s4_0, M4(-3.654e-02, 2.371e-02, -4.703e-02, -3.417e-02, 1.690e-02, 5.024e-02, 6.902e-03, 6.806e-03, -6.909e-02, 1.855e-01, 2.151e-02, -4.070e-02, 2.795e-02, 1.880e-02, 3.047e-02, -8.102e-03), r);\n\tr = MulAdd(s4_1, M4(5.194e-02, -3.014e-02, -8.487e-03, 2.008e-02, 2.216e-02, -5.617e-03, -1.076e-02, -1.327e-02, 9.989e-02, 2.196e-01, 1.202e-02, 9.436e-02, -4.214e-02, -1.455e-02, 2.944e-02, 4.371e-03), r);\n\tr = MulAdd(s4_2, M4(-1.887e-02, 4.668e-02, 5.779e-03, -1.966e-02, 2.824e-02, 3.541e-02, 3.188e-03, 1.323e-02, 3.842e-02, 6.945e-03, -2.692e-02, -6.403e-02, 5.748e-02, -4.583e-02, 5.327e-03, 1.260e-02), r);\n\tr = MulAdd(s4_3, M4(-1.078e-01, 1.597e-02, -6.295e-02, -1.910e-02, -1.310e-02, -5.021e-02, -1.010e-01, -3.924e-02, 8.872e-03, -1.098e-01, 8.058e-02, 1.212e-02, 1.831e-02, 1.778e-02, 5.973e-02, 1.841e-02), r);\n\tr = MulAdd(s4_4, M4(1.154e-01, -6.212e-02, -9.262e-02, -3.601e-02, -8.978e-03, -9.383e-02, 6.147e-02, 1.060e-02, 2.360e-01, -2.783e-01, 1.116e-01, 1.979e-01, -3.989e-02, -1.178e-01, -6.627e-03, -3.447e-02), r);\n\tr = MulAdd(s4_5, M4(4.532e-02, -1.230e-01, 4.558e-02, -2.350e-02, -3.753e-02, 6.548e-02, -1.758e-02, -5.187e-02, -1.046e-01, -1.463e-02, -4.373e-02, -1.568e-01, 2.144e-02, -8.064e-02, -4.304e-02, 3.818e-02), r);\n\tr = MulAdd(s4_6, M4(6.579e-02, 1.296e-01, -6.474e-02, -6.651e-02, -2.080e-02, -7.649e-02, 3.104e-03, -5.876e-03, 3.586e-02, 6.342e-02, -1.736e-02, 2.302e-02, 1.731e-02, 4.072e-02, 1.752e-02, 1.068e-02), r);\n\tr = MulAdd(s4_7, M4(-1.406e-02, -2.128e-01, 1.429e-03, 6.866e-02, -1.158e-02, 1.064e-01, -7.743e-03, -3.322e-02, 2.194e-03, 2.286e-01, 4.062e-02, -7.815e-02, 1.619e-02, 3.628e-02, 2.618e-03, 5.319e-03), r);\n\tr = MulAdd(s4_8, M4(-4.473e-02, -4.662e-02, -3.070e-02, -3.530e-02, -1.360e-02, 1.564e-02, 2.604e-02, -1.164e-02, -3.569e-02, 7.896e-02, -5.832e-02, 2.687e-02, 2.879e-02, 9.026e-03, 2.841e-03, 1.433e-02), r);\n\tr = MulAdd(s5_0, M4(-1.709e-02, 6.835e-02, -5.300e-02, 2.365e-02, 1.208e-02, -5.065e-02, 7.121e-02, 4.341e-03, -2.329e-03, 8.360e-02, 3.878e-02, 1.105e-02, -9.525e-02, 1.938e-02, -7.229e-02, -8.657e-02), r);\n\tr = MulAdd(s5_1, M4(-5.753e-02, -2.475e-02, -8.615e-03, -6.791e-02, 2.518e-01, -1.107e-03, 3.793e-02, 1.224e-01, -8.810e-02, -2.332e-02, -2.174e-02, -8.714e-02, 1.592e-02, 9.309e-02, -1.568e-01, -3.244e-02), r);\n\tr = MulAdd(s5_2, M4(3.602e-02, 5.059e-03, 1.107e-02, 2.958e-02, 2.779e-02, 5.966e-02, -1.819e-03, -2.871e-02, 6.199e-02, -1.606e-02, 1.334e-02, 4.840e-02, -4.332e-02, -1.755e-01, -1.225e-02, -1.465e-01), r);\n\tr = MulAdd(s5_3, M4(1.342e-02, -2.938e-03, -1.333e-01, 4.088e-02, 5.255e-02, 2.106e-02, 1.246e-01, 5.430e-03, 2.071e-02, -1.101e-01, -1.422e-02, -5.257e-02, 4.171e-02, 2.614e-02, -5.425e-02, -5.484e-02), r);\n\tr = MulAdd(s5_4, M4(-3.738e-02, -2.543e-01, -1.355e-01, -2.047e-01, 6.045e-01, 6.712e-04, 2.806e-01, 4.430e-01, 1.019e-01, -5.017e-02, -8.394e-03, 4.678e-04, 4.016e-02, -6.143e-01, -6.335e-02, 9.052e-02), r);\n\tr = MulAdd(s5_5, M4(-1.454e-02, -4.759e-02, 3.359e-02, 1.241e-01, 1.558e-02, -1.056e-01, -2.818e-02, 2.574e-01, 1.429e-02, 2.406e-02, 5.111e-02, 3.146e-02, -5.400e-02, -1.546e-01, -5.701e-02, -1.978e-01), r);\n\tr = MulAdd(s5_6, M4(-1.559e-02, 1.226e-01, -4.477e-02, 2.875e-03, 3.966e-02, -4.744e-02, 5.312e-02, 2.740e-02, -1.497e-02, -1.681e-03, -7.210e-02, -7.023e-02, 1.059e-02, 4.577e-03, 3.884e-02, 1.989e-03), r);\n\tr = MulAdd(s5_7, M4(2.155e-03, 5.351e-02, -5.339e-02, -1.507e-02, 1.282e-03, 1.122e-01, 3.821e-02, 1.328e-01, 1.675e-02, 1.377e-02, -3.465e-02, -3.002e-02, 3.591e-02, 7.138e-02, 6.867e-03, 3.803e-02), r);\n\tr = MulAdd(s5_8, M4(-2.054e-02, -2.482e-03, -4.547e-02, -3.309e-02, -2.872e-02, -5.235e-02, 3.979e-02, 6.017e-02, -1.569e-02, -2.154e-02, -1.878e-02, 3.573e-03, -3.146e-02, 6.997e-02, -3.866e-02, -4.409e-02), r);\n\tr = MulAdd(s6_0, M4(-2.632e-02, 1.644e-02, -5.125e-02, -1.923e-02, 4.263e-02, -8.466e-02, -4.567e-02, 7.356e-02, 1.789e-02, -1.403e-02, 2.957e-02, 2.201e-02, -2.127e-02, 2.052e-02, 4.376e-02, -3.482e-03), r);\n\tr = MulAdd(s6_1, M4(-2.532e-02, 1.704e-02, -5.390e-02, -1.703e-02, 8.306e-02, -5.652e-02, 1.410e-02, 1.581e-02, 1.172e-01, 1.514e-03, 7.870e-04, 1.082e-01, -1.701e-02, -2.203e-02, -3.648e-02, -5.616e-03), r);\n\tr = MulAdd(s6_2, M4(2.110e-02, -6.930e-02, -1.405e-02, -2.682e-02, -3.148e-02, -2.610e-02, 4.580e-02, -1.302e-02, -8.942e-02, 6.348e-02, 3.620e-02, 5.638e-02, 6.823e-02, -9.127e-03, 2.566e-02, -1.982e-02), r);\n\tr = MulAdd(s6_3, M4(2.426e-02, 4.841e-02, -2.629e-02, 1.539e-03, -3.696e-02, -2.072e-02, 5.157e-03, -8.802e-03, 3.766e-02, 5.942e-02, -7.291e-02, 3.623e-02, 2.300e-02, -1.450e-01, 1.207e-01, 3.822e-03), r);\n\tr = MulAdd(s6_4, M4(-6.935e-02, -1.371e-02, 1.685e-03, -9.513e-02, -3.332e-02, -3.843e-01, 4.060e-02, 8.189e-03, -2.561e-01, 3.931e-01, 2.969e-02, -3.895e-02, 7.095e-02, -9.008e-03, 4.266e-02, 1.025e-01), r);\n\tr = MulAdd(s6_5, M4(-1.056e-02, -6.190e-02, 4.329e-02, 5.268e-02, 3.018e-02, -1.134e-01, -1.945e-02, 1.213e-02, -1.794e-01, -9.701e-02, -5.967e-02, -7.068e-02, -5.236e-02, -8.995e-02, 1.906e-02, 3.944e-02), r);\n\tr = MulAdd(s6_6, M4(7.527e-03, 1.485e-03, 1.679e-02, -5.276e-03, 3.644e-02, -2.594e-01, 5.044e-03, 3.530e-02, -5.528e-02, -1.169e-02, -1.202e-02, 1.599e-02, 1.861e-02, 5.332e-02, 1.572e-02, 3.334e-02), r);\n\tr = MulAdd(s6_7, M4(2.066e-02, 6.183e-02, 6.742e-03, 4.145e-02, -2.724e-03, -4.688e-01, 2.701e-02, 1.142e-01, -1.106e-02, -2.290e-01, 2.774e-02, -5.572e-02, -4.977e-03, 7.180e-02, -7.132e-03, 1.043e-01), r);\n\tr = MulAdd(s6_8, M4(1.379e-02, 2.942e-02, 3.097e-02, -1.588e-02, -9.760e-03, -1.506e-01, -1.631e-02, -1.675e-02, -1.553e-02, -1.675e-01, -1.927e-02, -5.148e-02, -6.721e-03, 4.411e-02, -1.285e-02, -7.492e-02), r);\n\tr = MulAdd(s7_0, M4(-3.382e-02, 4.013e-02, -5.116e-02, -4.171e-02, 1.667e-02, 1.291e-02, -6.363e-02, 1.707e-02, -1.358e-02, -3.281e-02, -6.209e-03, -1.720e-02, -4.898e-02, -3.425e-02, 6.959e-02, 9.825e-03), r);\n\tr = MulAdd(s7_1, M4(-5.809e-03, 6.135e-02, -4.941e-02, -4.388e-02, -1.574e-02, -3.333e-02, 3.341e-02, -1.193e-02, 1.603e-01, -7.629e-03, -1.384e-02, 5.651e-02, 2.039e-01, -8.853e-02, -4.779e-02, -3.405e-02), r);\n\tr = MulAdd(s7_2, M4(-5.094e-02, 1.089e-02, -4.568e-02, -4.278e-02, -4.847e-02, 5.021e-02, -9.973e-03, 4.309e-02, -1.239e-01, -5.720e-02, 4.405e-02, 1.561e-02, -3.265e-02, -1.596e-02, 4.407e-02, -7.645e-02), r);\n\tr = MulAdd(s7_3, M4(-7.759e-02, 2.397e-02, -1.377e-01, -4.577e-02, -7.223e-02, -3.973e-02, -6.573e-02, -3.493e-02, 9.430e-02, -7.609e-02, -6.839e-02, 9.491e-03, -3.487e-02, 2.174e-02, 1.111e-01, -1.857e-02), r);\n\tr = MulAdd(s7_4, M4(-3.929e-02, -2.153e-01, -2.263e-02, -1.158e-01, 1.643e-01, -8.632e-02, 1.678e-01, 3.190e-02, -1.678e-01, -1.560e-01, 4.112e-02, 2.362e-02, 4.460e-01, 1.385e-01, 2.484e-01, 2.283e-01), r);\n\tr = MulAdd(s7_5, M4(-1.422e-02, -1.066e-01, 3.035e-02, -1.148e-01, -7.523e-02, 7.633e-02, -7.322e-03, 3.361e-02, 2.663e-02, 7.289e-02, -1.969e-02, 5.205e-02, 7.212e-04, 6.407e-02, 3.565e-02, 2.164e-01), r);\n\tr = MulAdd(s7_6, M4(-3.088e-02, 1.356e-02, -5.746e-03, -8.216e-02, 1.131e-03, -5.902e-02, -4.959e-02, -1.055e-02, -6.029e-02, -2.294e-02, -8.764e-02, 2.750e-02, 7.840e-02, -6.970e-02, -7.362e-05, -7.489e-02), r);\n\tr = MulAdd(s7_7, M4(-6.526e-02, 9.753e-02, 7.053e-02, 3.520e-02, -8.953e-02, -2.164e-01, 9.827e-03, -1.388e-02, 2.596e-02, -2.515e-01, 8.294e-02, -8.363e-02, 4.801e-02, 1.176e-01, 7.288e-02, 1.821e-01), r);\n\tr = MulAdd(s7_8, M4(2.840e-02, 2.860e-02, 4.192e-02, -4.194e-02, 4.181e-03, -2.567e-02, -9.064e-03, 1.524e-02, -2.387e-02, 1.684e-02, -1.586e-02, 8.428e-02, 7.378e-03, 9.452e-02, 1.910e-02, 3.319e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.389e-03, 1.176e-03, 1.090e-02, 3.142e-03 };\n\tr = MulAdd(s0_0, M4(5.564e-02, -2.568e-02, 9.599e-03, -2.108e-02, 4.250e-02, 4.686e-02, -5.431e-02, -2.406e-01, -1.053e-01, -6.775e-02, -4.199e-02, 8.179e-02, -5.315e-04, 4.287e-02, 5.107e-02, 7.491e-02), r);\n\tr = MulAdd(s0_1, M4(-4.795e-02, -5.934e-03, -5.950e-02, 7.670e-02, 1.012e-01, -1.948e-03, -3.097e-03, 2.226e-02, -6.913e-02, -8.117e-03, 7.958e-02, -4.828e-02, 8.114e-02, 2.249e-02, 1.629e-02, 7.050e-02), r);\n\tr = MulAdd(s0_2, M4(-6.514e-02, -1.138e-02, 3.485e-03, 7.612e-03, -6.234e-03, 1.859e-03, 5.234e-02, 2.880e-02, -5.665e-02, 1.437e-02, -1.102e-01, 1.712e-02, 3.604e-02, 1.462e-02, 3.754e-02, 1.502e-02), r);\n\tr = MulAdd(s0_3, M4(-1.039e-01, -5.124e-02, -8.815e-02, 3.959e-02, 5.831e-02, -5.496e-02, 2.485e-02, 1.652e-01, 3.139e-01, -8.668e-02, 6.456e-02, -1.771e-02, 7.739e-02, -4.782e-04, -1.474e-02, 2.205e-02), r);\n\tr = MulAdd(s0_4, M4(3.960e-02, 1.269e-01, 1.638e-01, -2.935e-02, -6.888e-02, 2.781e-02, -2.099e-02, -4.190e-02, 2.912e-01, 1.422e-01, -2.274e-01, 2.599e-02, 1.336e-01, -8.425e-02, -6.435e-03, 2.277e-02), r);\n\tr = MulAdd(s0_5, M4(-5.320e-02, 1.616e-01, -9.022e-02, -4.923e-02, -5.044e-03, 4.681e-02, -8.809e-03, 2.334e-02, 2.030e-01, 4.037e-02, 2.446e-01, 6.085e-02, 1.287e-02, -5.437e-02, 6.038e-02, 2.147e-02), r);\n\tr = MulAdd(s0_6, M4(8.658e-02, 2.401e-03, -1.006e-02, -1.908e-02, -8.866e-02, -1.222e-02, 5.580e-02, -3.716e-02, -2.095e-01, 1.739e-01, -1.304e-01, 1.341e-01, -5.495e-02, -4.232e-02, -1.343e-02, 2.139e-04), r);\n\tr = MulAdd(s0_7, M4(2.428e-02, -7.374e-03, -1.641e-02, -1.115e-05, -1.166e-01, -1.747e-01, -4.897e-02, 2.178e-02, -3.975e-01, 2.204e-01, 1.356e-01, -7.871e-02, -3.107e-02, -3.150e-02, 9.228e-03, -2.140e-02), r);\n\tr = MulAdd(s0_8, M4(9.544e-02, -9.344e-02, 2.867e-02, -9.081e-03, 3.649e-02, 1.379e-02, 1.854e-02, -3.414e-02, -2.156e-01, 4.895e-02, -2.182e-01, -8.193e-02, 9.780e-03, 1.209e-02, -3.988e-02, -9.680e-03), r);\n\tr = MulAdd(s1_0, M4(7.363e-02, -6.508e-03, -2.946e-02, 3.452e-02, -4.840e-02, 5.347e-02, 1.271e-02, 1.585e-01, 2.045e-02, -3.410e-02, 3.161e-02, 1.609e-02, -1.150e-01, 2.777e-03, -3.012e-01, -8.839e-02), r);\n\tr = MulAdd(s1_1, M4(-6.948e-02, 1.041e-02, 1.361e-01, -6.431e-02, -2.487e-02, -1.073e-02, 8.229e-02, 3.936e-02, 5.405e-02, -1.490e-02, -3.526e-02, 4.847e-02, -2.115e-01, -1.143e-01, -2.937e-02, -2.322e-01), r);\n\tr = MulAdd(s1_2, M4(-1.079e-01, -2.854e-02, -6.011e-02, 5.054e-02, -5.800e-02, 2.570e-02, -1.312e-02, 2.525e-02, -8.760e-03, -1.410e-02, 6.679e-02, 1.628e-03, 3.924e-02, 2.187e-02, -3.925e-02, 5.869e-02), r);\n\tr = MulAdd(s1_3, M4(8.716e-02, -2.256e-02, -1.715e-03, -7.717e-02, 2.653e-01, 6.507e-02, -8.374e-02, 1.413e-01, -2.495e-03, 1.303e-02, 6.540e-04, 2.399e-02, -2.225e-01, 9.055e-02, -4.018e-02, -6.299e-02), r);\n\tr = MulAdd(s1_4, M4(2.131e-01, -2.639e-02, -1.449e-01, -7.339e-02, 2.747e-01, -5.850e-02, -4.813e-04, 1.108e-01, 7.560e-03, -4.137e-02, 1.204e-02, 8.980e-03, -2.765e-01, 1.510e-01, -1.933e-01, 3.426e-02), r);\n\tr = MulAdd(s1_5, M4(-1.979e-02, 4.280e-02, 1.420e-01, 5.255e-02, 5.800e-02, -4.042e-02, -4.368e-02, -3.771e-02, -2.228e-02, -4.709e-02, -1.652e-02, -1.663e-04, -9.305e-02, 4.241e-02, -6.751e-02, 1.683e-02), r);\n\tr = MulAdd(s1_6, M4(-4.216e-02, 4.015e-02, -2.219e-03, 6.089e-03, -1.194e-01, -1.567e-01, 5.761e-02, 2.711e-02, -8.200e-02, 2.148e-02, -4.152e-02, 7.995e-02, -1.315e-01, -7.088e-03, -1.967e-02, -4.194e-02), r);\n\tr = MulAdd(s1_7, M4(1.017e-02, -3.080e-02, 1.067e-01, -1.596e-02, -1.468e-01, 5.528e-02, -4.388e-02, -2.552e-02, -8.031e-02, 1.102e-01, 2.575e-02, -5.867e-02, -1.491e-01, -8.697e-02, -1.588e-01, 1.828e-02), r);\n\tr = MulAdd(s1_8, M4(7.462e-03, 2.122e-03, -1.188e-01, 1.442e-02, 5.623e-02, 8.783e-02, -3.208e-02, -3.765e-02, 5.568e-02, -5.648e-03, -2.887e-02, 2.546e-02, -1.080e-02, 1.306e-01, -5.768e-02, -4.871e-02), r);\n\tr = MulAdd(s2_0, M4(6.899e-03, -2.458e-02, 3.732e-02, 2.687e-02, 1.890e-01, 3.174e-02, 6.358e-03, -1.116e-01, 8.355e-02, -2.709e-02, 1.097e-01, 1.508e-01, 3.515e-02, 1.664e-02, 3.033e-03, -1.267e-01), r);\n\tr = MulAdd(s2_1, M4(-1.644e-02, 1.609e-02, -8.031e-02, 3.372e-02, 3.681e-02, -1.157e-01, -1.050e-01, 9.057e-02, 1.149e-01, -4.600e-02, 1.532e-02, 3.066e-02, 5.304e-03, -1.317e-02, 4.920e-02, 5.047e-02), r);\n\tr = MulAdd(s2_2, M4(-1.031e-01, -2.233e-03, -3.758e-02, -4.363e-02, -1.708e-01, -5.747e-02, -4.124e-02, 1.331e-02, 1.331e-01, -1.784e-02, 1.647e-01, -4.233e-02, 8.356e-02, 5.630e-03, 5.010e-02, -4.132e-02), r);\n\tr = MulAdd(s2_3, M4(5.442e-02, 2.208e-02, 5.676e-02, 3.522e-02, 4.321e-02, 1.724e-02, 4.825e-02, 3.068e-02, 3.098e-01, -8.694e-02, -9.975e-03, 7.839e-02, -3.647e-02, -1.175e-02, -8.793e-03, -7.234e-02), r);\n\tr = MulAdd(s2_4, M4(1.310e-01, 1.019e-01, 2.457e-01, -5.249e-02, 4.429e-01, 1.160e-01, 2.001e-01, 2.508e-01, 2.921e-01, -5.226e-01, 2.153e-01, -2.860e-02, -1.546e-01, 1.213e-01, -1.770e-02, -2.842e-01), r);\n\tr = MulAdd(s2_5, M4(1.565e-01, 2.226e-02, -1.299e-02, 2.889e-02, 2.147e-01, 4.120e-02, 1.104e-01, -7.634e-02, 1.461e-01, -1.129e-01, 7.282e-02, 3.477e-02, 1.359e-02, 3.209e-02, 1.097e-02, -7.702e-02), r);\n\tr = MulAdd(s2_6, M4(-2.648e-02, -3.652e-02, -4.807e-02, 8.143e-02, 1.982e-02, -2.093e-01, -8.276e-02, 5.334e-02, 5.568e-02, -2.253e-01, 7.336e-02, 1.876e-02, 1.413e-02, -5.480e-03, 3.730e-02, 1.190e-02), r);\n\tr = MulAdd(s2_7, M4(-2.826e-02, -1.869e-02, 2.409e-02, -1.078e-02, -8.085e-02, -1.092e-01, -1.236e-01, -1.195e-01, -3.388e-02, -3.166e-01, -1.016e-01, 2.367e-02, 2.484e-02, -2.032e-03, 2.010e-03, 9.625e-02), r);\n\tr = MulAdd(s2_8, M4(2.494e-03, -1.099e-01, 1.929e-02, -6.145e-03, 3.189e-03, 1.209e-01, 3.996e-02, -1.905e-02, -1.075e-01, 2.687e-02, 2.764e-02, 1.283e-02, 2.492e-02, -2.514e-02, 2.399e-03, 2.090e-02), r);\n\tr = MulAdd(s3_0, M4(-5.188e-02, -5.302e-04, -4.649e-02, -7.301e-02, -2.265e-02, 5.858e-02, 4.601e-02, 3.600e-02, -1.778e-02, -7.573e-03, 1.024e-02, -1.120e-01, 2.020e-02, 8.781e-03, 1.753e-02, 1.242e-01), r);\n\tr = MulAdd(s3_1, M4(-9.918e-02, 1.148e-02, -1.616e-02, 1.531e-02, -9.831e-03, 2.570e-02, 1.128e-01, -9.396e-04, -8.930e-02, 3.763e-03, -5.709e-02, -1.298e-01, 3.632e-02, 3.189e-02, -8.941e-02, 4.325e-02), r);\n\tr = MulAdd(s3_2, M4(-5.675e-02, -9.192e-04, -1.271e-01, -6.402e-03, 3.858e-02, 1.883e-02, -5.269e-02, -3.356e-02, -8.538e-02, -1.160e-03, -6.894e-02, -1.370e-02, -3.186e-02, 1.357e-02, 5.788e-02, -2.196e-02), r);\n\tr = MulAdd(s3_3, M4(2.708e-02, -4.281e-02, 4.847e-02, 8.453e-02, -3.591e-02, -6.288e-03, 1.320e-02, 8.700e-04, 3.477e-02, -5.825e-02, 1.362e-02, -8.986e-02, 2.621e-02, -1.296e-02, 6.036e-03, -8.892e-02), r);\n\tr = MulAdd(s3_4, M4(1.101e-01, 2.002e-01, 4.733e-02, 6.113e-02, -1.253e-01, 1.351e-02, -5.160e-02, 7.784e-03, 1.009e-01, -1.159e-01, -7.248e-03, 6.105e-02, 3.384e-02, -7.175e-02, -7.411e-03, -2.225e-01), r);\n\tr = MulAdd(s3_5, M4(9.257e-02, 1.273e-01, 1.194e-01, 3.997e-02, 6.216e-02, 4.575e-02, 5.219e-02, 1.013e-03, 1.138e-01, -5.140e-02, 4.693e-03, 2.465e-02, -6.723e-02, -2.648e-02, 4.385e-02, -8.677e-02), r);\n\tr = MulAdd(s3_6, M4(-3.210e-02, 3.838e-02, 7.788e-02, 9.044e-02, 3.106e-02, -4.789e-02, 2.401e-02, 3.500e-02, 5.927e-02, 1.184e-02, -1.481e-02, 1.091e-02, -5.906e-02, -4.968e-02, -1.467e-02, 3.172e-02), r);\n\tr = MulAdd(s3_7, M4(4.558e-02, -8.335e-02, -5.322e-02, -2.910e-02, -1.990e-02, -8.604e-02, -4.847e-03, -4.192e-02, 3.607e-02, 3.262e-02, -7.834e-03, -3.046e-02, 9.790e-03, 4.237e-02, -3.386e-02, 5.023e-02), r);\n\tr = MulAdd(s3_8, M4(-6.291e-02, 4.206e-02, 3.200e-02, 2.044e-02, -9.929e-02, 5.190e-02, 3.410e-02, 1.033e-02, -3.491e-02, 3.895e-02, -2.048e-03, 1.777e-02, 1.251e-01, -6.249e-02, -9.290e-02, 3.368e-02), r);\n\tr = MulAdd(s4_0, M4(7.315e-02, 4.151e-03, -2.859e-02, 5.017e-02, 4.525e-02, 6.032e-03, 5.704e-03, -4.161e-02, 2.248e-01, 1.231e-01, -1.596e-01, -1.029e-01, -1.354e-01, 6.874e-02, -5.986e-02, 2.122e-02), r);\n\tr = MulAdd(s4_1, M4(5.375e-02, -8.616e-02, 6.589e-02, -9.744e-02, 2.313e-02, 5.684e-03, 3.187e-02, 1.480e-02, -8.559e-02, 1.176e-01, -7.169e-02, 1.836e-02, 5.834e-02, 3.290e-02, -1.134e-01, -8.451e-02), r);\n\tr = MulAdd(s4_2, M4(7.774e-02, -4.352e-02, 1.077e-01, 2.943e-02, 3.852e-02, -3.905e-02, -1.682e-02, 7.009e-02, -1.695e-02, 2.796e-02, -7.754e-02, -2.108e-02, 1.772e-02, -3.573e-02, 5.487e-02, 3.715e-03), r);\n\tr = MulAdd(s4_3, M4(-1.166e-01, 7.483e-02, 8.287e-02, -2.406e-01, -2.707e-02, -1.932e-02, 2.245e-03, 1.747e-01, -1.694e-01, -8.341e-02, 1.334e-01, -1.510e-01, 1.329e-01, -5.959e-02, -7.460e-03, -7.832e-02), r);\n\tr = MulAdd(s4_4, M4(1.055e-01, 2.643e-02, -2.022e-01, 9.058e-02, -1.638e-01, 4.163e-03, 3.108e-02, -3.503e-02, 7.427e-02, -1.404e-01, -2.431e-01, -3.152e-02, 2.168e-02, -1.821e-01, 5.341e-03, -4.026e-02), r);\n\tr = MulAdd(s4_5, M4(-1.392e-01, -8.403e-02, 6.099e-02, -5.146e-02, -6.017e-02, 1.218e-01, -2.153e-02, -1.807e-02, 1.186e-01, -4.060e-02, -2.946e-02, 1.951e-02, -6.394e-02, -1.915e-02, -1.332e-01, 1.149e-02), r);\n\tr = MulAdd(s4_6, M4(-1.588e-01, 1.224e-01, -6.327e-02, 4.951e-02, 9.498e-02, -8.888e-02, 2.724e-02, -7.547e-03, 8.303e-02, -8.869e-02, -3.263e-02, -8.616e-02, -6.354e-02, 1.949e-02, -2.067e-04, -4.272e-02), r);\n\tr = MulAdd(s4_7, M4(-1.390e-02, 1.797e-01, 1.093e-01, -2.220e-02, 5.163e-02, 1.969e-02, -2.223e-02, 2.175e-03, 2.056e-01, -1.871e-01, 1.528e-01, -2.037e-02, -1.613e-02, 6.063e-02, -5.701e-02, 6.490e-03), r);\n\tr = MulAdd(s4_8, M4(-8.356e-02, 9.201e-02, -6.660e-02, 5.225e-02, 5.527e-02, -5.178e-02, 4.180e-03, -1.556e-02, 4.026e-02, 2.421e-02, -1.164e-01, 2.126e-02, -4.531e-03, 5.718e-02, 6.483e-02, 1.105e-02), r);\n\tr = MulAdd(s5_0, M4(1.185e-01, 5.196e-03, 3.141e-02, -4.355e-02, 1.014e-01, -6.355e-02, -1.440e-02, -3.068e-01, -3.370e-02, 6.441e-02, -1.696e-02, -1.651e-01, 1.775e-01, 3.987e-02, 1.402e-02, -2.260e-01), r);\n\tr = MulAdd(s5_1, M4(8.821e-02, 4.918e-03, -1.254e-01, -3.305e-02, 9.728e-02, -1.233e-01, -4.204e-01, -1.657e-01, 1.364e-02, 5.103e-02, -4.482e-02, 3.125e-02, 8.831e-02, 1.491e-01, 8.666e-02, -9.823e-02), r);\n\tr = MulAdd(s5_2, M4(4.780e-03, 3.399e-03, 1.170e-01, 1.614e-02, 5.032e-02, -1.143e-01, 9.699e-02, 3.955e-02, 6.252e-02, 1.201e-02, 1.065e-03, 8.514e-03, 1.375e-01, 7.129e-02, -1.061e-02, -5.335e-03), r);\n\tr = MulAdd(s5_3, M4(-1.229e-01, 1.690e-02, -5.375e-02, -1.088e-01, -2.155e-01, 9.302e-02, 3.596e-02, -1.506e-01, 4.357e-02, -2.802e-02, 4.347e-02, -1.340e-02, -2.441e-01, 4.218e-03, -5.089e-02, 3.196e-02), r);\n\tr = MulAdd(s5_4, M4(-9.945e-02, -8.537e-02, 1.498e-01, 5.485e-02, -3.567e-01, 2.777e-01, 3.483e-02, 5.400e-02, 6.884e-02, -4.037e-02, -6.517e-02, -7.915e-03, -2.116e-01, -6.909e-02, 1.464e-01, -1.226e-01), r);\n\tr = MulAdd(s5_5, M4(3.022e-03, -4.202e-03, -1.367e-01, -3.061e-02, 8.022e-02, 1.031e-01, -2.493e-01, 5.077e-02, -4.849e-02, -5.362e-02, 3.291e-02, -2.919e-02, -7.381e-02, -1.435e-01, -3.912e-02, 1.071e-02), r);\n\tr = MulAdd(s5_6, M4(-3.188e-02, -1.425e-03, -8.109e-03, -6.234e-03, 7.547e-02, 3.376e-02, 3.357e-02, 2.933e-02, -5.036e-02, 7.092e-02, -1.196e-02, -2.627e-02, 6.140e-04, -1.185e-02, 1.312e-02, 3.290e-02), r);\n\tr = MulAdd(s5_7, M4(-6.365e-02, 4.057e-03, -1.303e-02, -3.592e-02, -4.351e-02, 1.689e-01, -2.047e-02, -1.170e-02, 2.940e-02, -7.746e-02, 1.809e-02, -8.583e-03, -2.782e-02, 3.031e-02, -6.050e-02, 2.208e-02), r);\n\tr = MulAdd(s5_8, M4(2.310e-02, -3.416e-02, 4.306e-02, 1.533e-02, 9.334e-02, -8.918e-02, -5.069e-02, -7.945e-03, 7.296e-02, -1.590e-02, 1.189e-02, -4.936e-04, -1.224e-02, 8.756e-02, 5.734e-02, -6.707e-03), r);\n\tr = MulAdd(s6_0, M4(6.112e-02, -4.774e-03, -6.005e-03, 2.364e-02, -2.329e-02, -2.986e-02, 1.616e-02, -6.983e-02, -1.663e-01, 2.243e-02, -3.605e-02, 3.315e-01, 9.484e-03, 3.748e-02, -9.987e-03, 9.160e-03), r);\n\tr = MulAdd(s6_1, M4(2.533e-02, 1.706e-02, 1.712e-02, 1.156e-01, -3.681e-02, 2.597e-03, 7.530e-02, 1.275e-02, -1.541e-01, 4.503e-02, 1.143e-01, 1.588e-01, 1.915e-01, -1.275e-02, 3.138e-02, 1.509e-02), r);\n\tr = MulAdd(s6_2, M4(-6.694e-02, -1.834e-02, 8.816e-02, -1.622e-02, -1.021e-01, 1.299e-02, 1.748e-02, -5.791e-02, -5.930e-02, 6.122e-02, 8.327e-04, 3.157e-02, 1.111e-01, -1.483e-02, -1.748e-03, -2.191e-02), r);\n\tr = MulAdd(s6_3, M4(-2.837e-02, 1.398e-02, -2.785e-02, 2.663e-03, 4.867e-02, 4.068e-02, -1.933e-02, 2.442e-02, -3.858e-02, 7.174e-02, 1.585e-02, 1.077e-01, 1.722e-02, -5.831e-02, 5.412e-02, -1.175e-02), r);\n\tr = MulAdd(s6_4, M4(-7.951e-02, 5.032e-02, 8.040e-02, -2.639e-02, 2.334e-01, -4.099e-02, -2.540e-01, 9.531e-02, 4.706e-01, 1.059e-01, 2.458e-01, -4.419e-02, 1.768e-02, -1.573e-01, -3.025e-02, 8.663e-02), r);\n\tr = MulAdd(s6_5, M4(-6.631e-02, 7.565e-03, -1.313e-01, -2.789e-02, 4.157e-02, 6.711e-02, 1.025e-01, 5.542e-04, -3.761e-02, 6.066e-02, 1.626e-01, 2.160e-02, -5.487e-02, -7.425e-02, -1.634e-02, -2.391e-02), r);\n\tr = MulAdd(s6_6, M4(1.005e-02, 3.554e-03, -6.610e-03, -2.522e-02, -6.029e-02, -1.488e-02, 8.100e-02, 3.640e-02, -2.426e-02, 9.615e-02, -2.740e-02, -2.791e-02, 7.064e-02, -6.777e-03, -2.041e-02, 2.271e-02), r);\n\tr = MulAdd(s6_7, M4(7.635e-02, -4.346e-02, -4.108e-02, 6.087e-02, -1.638e-01, 1.368e-01, 5.916e-02, 8.663e-03, 9.976e-02, -5.511e-02, -2.765e-02, -1.956e-02, 3.657e-02, -6.695e-02, 5.414e-02, -2.143e-03), r);\n\tr = MulAdd(s6_8, M4(1.062e-01, -6.264e-02, 5.932e-02, -6.501e-03, -2.462e-02, 1.685e-02, -6.453e-02, 1.135e-02, 2.601e-03, -1.934e-01, 8.357e-03, -9.472e-04, -1.883e-02, 8.681e-03, 4.172e-02, 1.029e-02), r);\n\tr = MulAdd(s7_0, M4(8.194e-02, 1.504e-02, 2.109e-02, -7.019e-02, -6.763e-02, -1.386e-02, 5.007e-05, 4.384e-02, 4.691e-02, 3.245e-03, -4.615e-02, -1.523e-01, 6.344e-02, -9.443e-03, 4.452e-02, 1.401e-01), r);\n\tr = MulAdd(s7_1, M4(5.713e-02, 4.575e-03, -2.760e-02, 1.835e-01, -4.168e-02, 7.856e-02, 1.071e-01, 6.429e-02, 4.507e-02, -6.009e-02, -7.034e-03, 1.460e-01, -6.400e-02, -1.837e-01, -2.117e-01, -4.930e-01), r);\n\tr = MulAdd(s7_2, M4(5.604e-02, 4.955e-02, 2.635e-02, -3.725e-02, -9.501e-02, 3.427e-02, 4.963e-02, -3.468e-02, -6.375e-04, -2.081e-02, 6.959e-02, -1.102e-02, 5.659e-02, 1.112e-01, -6.842e-02, 1.090e-01), r);\n\tr = MulAdd(s7_3, M4(9.068e-02, 1.051e-02, -3.817e-02, 1.735e-01, -2.777e-02, 3.623e-02, 4.151e-02, 3.167e-02, -1.217e-02, 8.726e-03, 4.313e-02, 2.150e-01, 2.386e-01, -2.212e-02, 6.009e-02, -2.260e-01), r);\n\tr = MulAdd(s7_4, M4(1.871e-01, -1.482e-01, 3.274e-02, -3.016e-01, -6.794e-02, -7.395e-02, -2.008e-01, 4.266e-02, 8.102e-02, 2.207e-01, -1.172e-01, -2.571e-02, -1.292e-01, -1.271e-01, -1.939e-01, 3.910e-02), r);\n\tr = MulAdd(s7_5, M4(2.271e-02, -5.943e-02, -4.335e-02, 8.813e-02, 4.214e-02, 2.775e-02, -6.806e-03, -6.327e-03, 3.212e-02, 4.120e-02, 8.407e-03, 2.191e-02, -4.026e-02, -1.536e-01, -1.916e-01, -4.750e-03), r);\n\tr = MulAdd(s7_6, M4(4.624e-02, 2.899e-02, 4.689e-02, -5.187e-02, -2.949e-03, -9.181e-03, -2.542e-02, 3.311e-02, -4.676e-02, -3.951e-02, -7.407e-03, 8.856e-04, 3.157e-02, -7.219e-02, 3.976e-02, -6.937e-02), r);\n\tr = MulAdd(s7_7, M4(6.242e-02, -7.255e-02, -8.852e-02, 6.086e-02, 1.416e-02, 9.508e-02, 6.196e-02, -3.596e-02, -9.707e-02, -6.330e-02, 7.787e-02, 5.456e-02, 1.479e-01, 1.658e-01, 2.335e-02, 6.382e-03), r);\n\tr = MulAdd(s7_8, M4(4.285e-03, 1.385e-02, -1.282e-02, 1.915e-02, -3.214e-02, 1.144e-02, -1.831e-02, -1.096e-02, -8.330e-03, -2.045e-02, -4.096e-02, -5.822e-02, -9.821e-03, 7.185e-02, -3.122e-02, -1.760e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.589e-03, 2.995e-04, -9.737e-05, 7.202e-03 };\n\tr = MulAdd(s0_0, M4(9.318e-03, 1.971e-02, -4.711e-02, -1.441e-02, 2.845e-02, 1.500e-02, -7.066e-02, 4.036e-02, 1.277e-01, -2.572e-02, -2.008e-02, -1.923e-02, -2.453e-02, -5.953e-03, -3.675e-03, -3.523e-03), r);\n\tr = MulAdd(s0_1, M4(4.747e-02, -9.007e-02, 3.769e-02, 2.768e-02, -1.276e-02, 7.454e-02, 1.610e-02, -7.106e-03, 1.486e-03, -6.065e-02, 5.470e-02, -2.325e-02, -2.186e-02, 2.483e-02, 2.275e-02, -9.590e-02), r);\n\tr = MulAdd(s0_2, M4(1.496e-01, -2.921e-02, -3.473e-03, -2.540e-02, -1.334e-01, 3.500e-02, -3.829e-02, -1.840e-02, 1.008e-01, -2.292e-02, 3.331e-02, 1.530e-02, 3.491e-03, 1.641e-03, 2.776e-02, 7.546e-02), r);\n\tr = MulAdd(s0_3, M4(7.560e-02, -3.680e-02, -1.262e-02, -2.280e-02, -3.754e-02, -9.010e-02, 7.737e-02, 6.975e-02, -2.890e-01, -1.377e-01, 6.193e-02, 1.340e-01, 1.297e-02, -2.207e-02, -2.043e-02, -4.829e-02), r);\n\tr = MulAdd(s0_4, M4(2.365e-01, -2.331e-01, 1.118e-01, 1.209e-01, 1.117e-02, -9.303e-02, -9.648e-05, -1.518e-01, -3.367e-01, 8.023e-02, -1.159e-01, -8.597e-02, 1.433e-01, -1.751e-02, 1.518e-03, 3.134e-02), r);\n\tr = MulAdd(s0_5, M4(-4.400e-02, -6.611e-02, -1.059e-01, -2.305e-02, 6.234e-03, -3.756e-02, -4.826e-03, -4.008e-02, -1.677e-01, -1.284e-01, 1.431e-01, 4.148e-02, 1.298e-01, -3.273e-02, 5.965e-03, 5.432e-02), r);\n\tr = MulAdd(s0_6, M4(-6.353e-02, 8.337e-02, -3.857e-02, -2.829e-02, -3.215e-03, -1.428e-01, 3.896e-02, -1.339e-02, 1.479e-02, 7.588e-02, -1.057e-01, 4.416e-02, 6.222e-02, -4.782e-02, -2.898e-02, -3.526e-02), r);\n\tr = MulAdd(s0_7, M4(-1.113e-01, 6.889e-02, 1.222e-01, 5.193e-02, -7.594e-02, 4.964e-02, 8.847e-03, 2.485e-02, 3.323e-01, -2.066e-01, -9.174e-02, 1.259e-01, 8.803e-02, -7.918e-02, 4.065e-02, 1.561e-02), r);\n\tr = MulAdd(s0_8, M4(-4.717e-03, 3.938e-02, -5.724e-02, -1.059e-02, -1.039e-01, 3.829e-02, -6.498e-02, 1.782e-02, 1.593e-01, -5.529e-02, -5.608e-02, 1.020e-01, -3.413e-03, 1.366e-02, 1.714e-02, 5.552e-03), r);\n\tr = MulAdd(s1_0, M4(7.586e-02, 3.628e-02, 3.292e-03, -1.218e-02, -2.084e-02, -7.520e-03, -9.144e-03, -2.570e-02, -4.835e-03, -1.008e-02, -3.211e-02, -2.545e-02, 1.710e-02, -7.760e-02, 7.692e-02, 9.374e-02), r);\n\tr = MulAdd(s1_1, M4(9.785e-02, 8.141e-03, -6.459e-02, -5.718e-02, 8.235e-02, 4.175e-02, -1.180e-01, 1.333e-01, -1.943e-02, 3.633e-02, 4.322e-02, -3.006e-03, 7.250e-02, -1.302e-01, 6.711e-02, -2.551e-01), r);\n\tr = MulAdd(s1_2, M4(1.206e-01, 4.771e-02, 1.311e-01, -1.836e-02, -3.410e-02, 1.290e-02, -6.934e-02, -4.725e-03, -7.862e-02, 3.476e-03, -1.437e-02, 1.828e-02, -1.412e-01, 6.391e-02, 4.649e-03, -9.304e-02), r);\n\tr = MulAdd(s1_3, M4(-5.228e-02, -5.781e-02, -1.174e-02, 3.145e-02, 5.907e-02, 8.617e-02, 6.714e-02, -3.907e-02, 5.771e-02, -7.103e-02, -1.651e-02, 2.482e-02, -3.957e-02, -2.212e-01, 1.794e-01, 7.303e-02), r);\n\tr = MulAdd(s1_4, M4(-1.779e-01, 8.501e-02, 3.207e-02, -1.450e-01, 1.176e-01, 1.274e-01, -4.872e-02, 4.053e-01, 3.342e-02, -4.093e-02, -7.129e-03, -1.106e-02, -2.820e-01, -1.113e-01, 2.251e-01, -7.125e-01), r);\n\tr = MulAdd(s1_5, M4(-1.010e-02, -4.005e-02, 1.107e-01, 8.682e-02, -2.968e-02, 5.384e-02, -1.008e-01, -9.560e-02, 3.131e-02, 1.392e-03, 5.557e-03, 9.966e-03, 1.275e-01, -4.041e-02, 5.097e-02, -1.446e-01), r);\n\tr = MulAdd(s1_6, M4(5.897e-02, -4.893e-02, 1.086e-02, 5.963e-02, 2.258e-02, -9.672e-02, -3.724e-02, -1.315e-01, -1.192e-02, -7.347e-02, 1.482e-02, 3.289e-02, 4.438e-02, -1.143e-01, 1.857e-01, 1.824e-01), r);\n\tr = MulAdd(s1_7, M4(8.749e-02, -5.186e-02, -4.175e-02, -1.028e-01, 5.872e-02, -5.764e-02, 4.637e-02, 2.059e-01, 1.254e-01, -1.173e-01, -2.757e-02, 2.218e-03, -1.354e-01, -1.943e-01, -8.947e-02, -1.984e-01), r);\n\tr = MulAdd(s1_8, M4(3.318e-03, 3.692e-02, 8.340e-02, 1.072e-01, -4.176e-02, 5.210e-02, -3.261e-04, 2.130e-02, -5.689e-03, 3.972e-03, 2.435e-02, 1.099e-02, 7.078e-03, -2.827e-03, 7.182e-02, 8.673e-02), r);\n\tr = MulAdd(s2_0, M4(1.291e-02, -3.830e-02, -4.018e-02, 8.030e-03, 9.176e-02, 3.323e-03, -8.411e-02, -2.544e-02, 8.492e-02, 8.521e-02, -2.509e-02, -5.748e-03, -3.107e-02, -1.200e-02, 1.204e-02, 5.356e-02), r);\n\tr = MulAdd(s2_1, M4(-2.296e-02, -6.058e-03, 7.210e-03, -2.304e-02, -3.666e-02, 9.114e-02, -1.274e-01, 7.791e-02, -1.240e-05, 9.711e-02, -8.943e-02, 9.498e-02, -1.958e-02, -2.426e-02, 5.381e-02, -3.134e-02), r);\n\tr = MulAdd(s2_2, M4(5.071e-02, -2.808e-02, 2.896e-02, 2.517e-02, -1.061e-01, -9.929e-02, 3.763e-02, -6.403e-03, 1.436e-01, 1.704e-02, 2.727e-02, 1.008e-01, 2.704e-02, -5.297e-03, 1.933e-02, -3.730e-02), r);\n\tr = MulAdd(s2_3, M4(2.860e-03, 5.863e-02, -1.089e-01, 5.943e-02, 2.059e-01, 1.105e-01, -3.185e-02, 1.028e-01, 1.689e-01, 2.686e-01, -1.146e-01, -4.051e-03, 4.745e-02, 3.347e-02, 4.123e-02, -3.907e-03), r);\n\tr = MulAdd(s2_4, M4(1.016e-01, -8.799e-02, 1.260e-01, 1.206e-01, 2.857e-01, 1.680e-01, -4.300e-02, 2.488e-01, 1.589e-01, 3.359e-01, -1.774e-01, 2.562e-01, 1.264e-01, 3.470e-03, 1.608e-01, -1.381e-01), r);\n\tr = MulAdd(s2_5, M4(-7.841e-02, 3.849e-02, -4.457e-02, -2.774e-02, -8.847e-02, 5.292e-02, -2.125e-01, -7.150e-02, -1.219e-01, 1.448e-01, 6.493e-02, 5.641e-02, 5.238e-02, 4.933e-02, 1.830e-01, -1.423e-01), r);\n\tr = MulAdd(s2_6, M4(1.342e-02, 2.656e-02, -5.992e-02, 4.271e-02, 4.075e-03, 1.125e-02, 1.313e-02, -1.325e-01, 2.797e-02, -6.779e-02, -7.360e-02, -1.585e-03, -2.407e-03, 4.910e-03, -2.452e-02, 1.567e-02), r);\n\tr = MulAdd(s2_7, M4(9.773e-02, 4.043e-02, 1.555e-02, -1.071e-02, 8.971e-02, 1.628e-01, 1.131e-02, 4.467e-01, 3.060e-02, 6.077e-02, -5.876e-02, 2.018e-01, -3.268e-02, 1.232e-01, 8.955e-02, -1.261e-01), r);\n\tr = MulAdd(s2_8, M4(-1.874e-02, 2.312e-02, -1.151e-01, -3.373e-04, -6.412e-03, 3.135e-02, -4.381e-02, -1.055e-02, 3.871e-03, 4.973e-02, -7.849e-02, 3.332e-03, 1.271e-01, -9.244e-02, 3.887e-02, -5.154e-02), r);\n\tr = MulAdd(s3_0, M4(1.036e-03, -8.569e-02, 1.218e-01, 2.093e-01, -4.657e-02, -3.873e-03, 1.242e-02, -2.976e-02, -2.957e-02, -4.404e-02, 4.678e-02, 4.112e-02, 3.632e-02, -1.145e-02, 1.252e-02, -2.102e-02), r);\n\tr = MulAdd(s3_1, M4(1.155e-01, -1.149e-01, -1.369e-01, -1.560e-01, -1.744e-02, -3.161e-02, 5.220e-03, -2.918e-02, -1.461e-01, -4.223e-02, -2.358e-02, -8.501e-02, 6.100e-02, 4.602e-02, 1.639e-02, 2.726e-02), r);\n\tr = MulAdd(s3_2, M4(3.795e-02, -1.800e-02, 5.280e-02, 1.153e-02, -9.406e-02, 6.172e-03, 5.216e-02, -1.007e-02, -3.424e-02, -3.728e-02, 2.888e-02, -1.508e-02, -9.406e-04, -4.032e-02, -6.712e-02, -2.512e-02), r);\n\tr = MulAdd(s3_3, M4(4.153e-02, 9.395e-02, -9.089e-04, 1.137e-01, 1.831e-01, 5.065e-02, 6.709e-02, -9.444e-03, 1.631e-02, 2.292e-02, 2.117e-02, 4.207e-02, -3.171e-02, 3.065e-02, -1.305e-01, -4.601e-02), r);\n\tr = MulAdd(s3_4, M4(-3.116e-01, -5.851e-02, -2.218e-01, -5.380e-01, 5.661e-02, -7.224e-02, 7.720e-02, -1.200e-01, 1.318e-02, 1.099e-01, -2.581e-02, 3.823e-02, -1.119e-01, -6.392e-03, 6.803e-02, 1.336e-01), r);\n\tr = MulAdd(s3_5, M4(-2.828e-01, -9.250e-02, -7.496e-03, 3.760e-02, -9.597e-02, -1.174e-02, -6.336e-03, -6.538e-02, -9.218e-02, 7.557e-02, -3.513e-03, -5.946e-03, 1.581e-01, -3.998e-02, 7.530e-02, 2.452e-01), r);\n\tr = MulAdd(s3_6, M4(-1.943e-01, 4.789e-02, -6.449e-02, 3.238e-02, -6.507e-02, -3.958e-02, 1.756e-02, -7.005e-02, -3.224e-03, 1.235e-02, 3.941e-02, -9.004e-03, 4.120e-02, 1.704e-02, -6.094e-02, -3.104e-03), r);\n\tr = MulAdd(s3_7, M4(3.313e-02, 1.373e-02, -4.096e-02, -7.572e-03, -1.006e-01, 2.217e-01, -4.270e-02, 6.028e-05, -1.352e-02, -2.511e-02, -1.181e-02, -5.750e-02, 6.419e-02, 3.716e-02, 6.893e-02, -7.033e-03), r);\n\tr = MulAdd(s3_8, M4(2.463e-02, -2.423e-02, 4.314e-02, 2.715e-03, -9.067e-02, 7.964e-03, -1.740e-02, -1.417e-02, -2.412e-03, 8.601e-03, -5.609e-02, -4.326e-02, -2.185e-01, 3.743e-02, 2.167e-03, 3.162e-02), r);\n\tr = MulAdd(s4_0, M4(-3.291e-02, 2.270e-02, 4.077e-02, 2.796e-02, 7.450e-02, -2.478e-03, -3.507e-02, -1.515e-02, -6.977e-02, 3.246e-02, 8.137e-02, 7.233e-02, 6.702e-03, -3.982e-03, 5.725e-02, 2.816e-04), r);\n\tr = MulAdd(s4_1, M4(-3.446e-02, 1.092e-01, -6.071e-02, -8.485e-02, 4.414e-02, -1.326e-02, 2.453e-02, 2.279e-02, 7.401e-02, -1.150e-01, -3.160e-02, -8.228e-02, 4.281e-02, 7.600e-02, 8.618e-02, 1.720e-02), r);\n\tr = MulAdd(s4_2, M4(6.556e-02, 8.818e-02, -2.382e-02, 7.144e-02, -2.628e-02, 3.018e-02, -4.495e-02, -1.798e-02, 4.115e-02, -7.469e-02, -1.743e-02, -2.103e-02, -5.742e-02, 5.787e-02, -6.095e-02, -1.175e-02), r);\n\tr = MulAdd(s4_3, M4(-8.912e-02, -1.611e-01, 6.763e-02, 6.021e-02, 2.892e-02, -1.182e-02, -2.709e-02, 7.934e-02, 4.207e-02, -1.868e-01, -1.718e-01, 3.170e-02, -6.664e-02, 1.254e-02, -1.698e-02, -5.976e-02), r);\n\tr = MulAdd(s4_4, M4(8.374e-02, 9.909e-02, 6.506e-02, -1.439e-02, -6.977e-02, 4.786e-03, -1.697e-01, -9.840e-02, 2.172e-01, -9.600e-03, -1.772e-01, -2.745e-01, -3.708e-02, 2.665e-02, -3.142e-02, 8.629e-02), r);\n\tr = MulAdd(s4_5, M4(2.115e-01, -4.760e-03, -1.529e-01, -4.313e-02, -7.121e-02, -2.899e-02, -4.600e-02, 5.944e-02, -8.202e-02, 7.803e-03, 5.726e-02, 1.435e-01, -2.347e-03, 1.732e-02, 3.681e-02, -4.667e-02), r);\n\tr = MulAdd(s4_6, M4(-2.713e-02, -3.046e-02, 3.364e-02, 6.123e-02, -1.136e-02, 5.839e-02, -6.758e-02, 2.464e-02, -1.570e-02, 1.000e-01, -9.065e-02, -9.243e-02, 4.498e-02, -3.277e-02, -5.533e-03, -1.995e-02), r);\n\tr = MulAdd(s4_7, M4(2.923e-02, -9.440e-02, 6.992e-03, -1.119e-01, 1.441e-03, -1.225e-03, 2.778e-02, 4.411e-02, -9.295e-02, -1.301e-01, 5.208e-02, -2.434e-03, -1.158e-02, -6.665e-03, 1.270e-02, 3.487e-03), r);\n\tr = MulAdd(s4_8, M4(-1.583e-01, -1.284e-02, 1.077e-01, 1.784e-02, 1.477e-02, 1.177e-02, -1.049e-01, 3.212e-02, 1.332e-01, -9.264e-03, 1.031e-01, 1.339e-01, -3.333e-02, -1.368e-02, 8.314e-02, -3.010e-02), r);\n\tr = MulAdd(s5_0, M4(-7.179e-02, 5.272e-02, -1.243e-01, -9.554e-03, -6.960e-02, -8.464e-02, 7.857e-02, -8.299e-03, 9.177e-02, 2.644e-02, -7.346e-02, -3.273e-02, -1.278e-01, 2.899e-02, 1.952e-01, 1.239e-01), r);\n\tr = MulAdd(s5_1, M4(-1.492e-01, 5.505e-02, 6.646e-02, 4.484e-02, -8.677e-02, 1.566e-03, 1.786e-01, -8.437e-02, 3.549e-02, 1.309e-02, 1.116e-01, 1.697e-01, 1.790e-02, 1.489e-01, -3.890e-01, -1.688e-04), r);\n\tr = MulAdd(s5_2, M4(-3.552e-02, 1.203e-02, 4.686e-03, -6.220e-02, 7.194e-02, -1.916e-03, -1.341e-01, 2.712e-02, -2.318e-02, 4.155e-02, -1.011e-01, -8.134e-02, 3.656e-02, -2.726e-02, 2.495e-01, 7.981e-02), r);\n\tr = MulAdd(s5_3, M4(1.123e-01, -1.111e-01, -5.847e-02, -2.608e-02, -1.121e-01, 3.707e-02, 6.862e-02, -3.574e-02, -1.159e-01, -1.770e-01, 2.562e-02, 8.975e-04, 3.038e-02, 4.613e-02, 9.902e-02, 2.753e-02), r);\n\tr = MulAdd(s5_4, M4(2.135e-01, -1.309e-01, 6.215e-02, 1.244e-01, -6.001e-01, -3.448e-01, 6.351e-01, -6.863e-01, -1.117e-01, 1.596e-02, 1.419e-01, 1.092e-02, 2.283e-01, 5.573e-02, -2.652e-01, -3.967e-02), r);\n\tr = MulAdd(s5_5, M4(1.827e-01, 7.803e-03, -3.927e-02, -3.662e-02, -1.242e-01, 7.477e-02, -6.226e-02, 2.110e-03, 2.340e-02, 2.710e-02, -5.058e-02, -2.235e-02, 1.579e-01, -2.095e-02, 1.359e-01, 5.965e-02), r);\n\tr = MulAdd(s5_6, M4(-3.795e-02, -2.222e-02, -5.652e-02, 1.478e-02, 3.860e-02, 2.259e-02, 1.439e-02, 1.043e-02, 2.601e-02, -7.573e-02, 8.292e-02, 7.048e-02, -8.373e-02, 4.477e-02, 4.754e-02, -4.149e-03), r);\n\tr = MulAdd(s5_7, M4(1.704e-01, -9.205e-03, -2.108e-02, 1.881e-02, 1.268e-01, -6.519e-02, 3.233e-02, -1.141e-01, -1.000e-02, -3.744e-02, -2.276e-02, -1.411e-02, -1.528e-01, 3.616e-02, -8.978e-02, -7.246e-02), r);\n\tr = MulAdd(s5_8, M4(1.876e-02, -2.578e-02, 3.945e-02, 6.642e-03, 1.662e-01, 9.105e-02, -1.487e-01, 6.059e-02, -8.806e-03, 2.749e-02, -1.692e-02, 1.774e-02, -1.055e-01, 2.088e-02, 8.990e-02, 5.275e-02), r);\n\tr = MulAdd(s6_0, M4(1.573e-02, -6.888e-03, -4.979e-02, 1.519e-02, 2.973e-02, -5.261e-02, 3.624e-02, -7.583e-02, -3.794e-02, -1.598e-01, 8.630e-02, -2.981e-02, -2.372e-02, 5.984e-02, -2.515e-02, -5.868e-03), r);\n\tr = MulAdd(s6_1, M4(2.470e-02, -4.338e-02, -3.948e-02, 1.234e-02, -1.575e-01, 4.389e-02, -5.306e-02, -6.776e-02, 2.467e-01, -1.589e-01, -1.711e-02, -2.030e-01, -6.872e-03, 1.258e-02, 1.350e-01, 5.095e-02), r);\n\tr = MulAdd(s6_2, M4(-1.180e-02, -3.677e-02, 2.121e-02, -9.657e-03, -2.715e-03, -5.844e-02, 1.344e-01, 3.278e-02, 7.357e-02, -7.242e-02, 3.892e-02, 2.501e-02, -7.762e-02, 3.119e-02, -1.051e-01, -5.809e-02), r);\n\tr = MulAdd(s6_3, M4(1.091e-01, 1.278e-02, -3.599e-02, 5.367e-03, 3.677e-02, -1.054e-01, 1.821e-01, 5.286e-02, -1.328e-01, 6.282e-02, 6.553e-02, -8.289e-03, 1.058e-01, 7.081e-03, 3.306e-02, 1.479e-02), r);\n\tr = MulAdd(s6_4, M4(1.046e-01, -3.988e-02, 4.995e-02, 1.470e-01, 2.933e-01, 1.105e-01, -2.948e-01, -8.135e-02, 4.229e-01, 7.307e-02, -3.227e-01, 1.825e-01, -1.001e-02, 1.679e-01, 7.475e-02, -1.002e-01), r);\n\tr = MulAdd(s6_5, M4(-1.456e-02, 1.389e-02, 2.569e-02, -7.156e-02, -6.755e-02, 3.306e-02, 4.274e-04, -1.295e-02, 9.901e-02, -7.322e-02, 4.438e-02, 5.605e-02, 1.685e-02, -1.109e-02, -8.532e-03, -3.867e-02), r);\n\tr = MulAdd(s6_6, M4(-3.475e-02, 3.209e-02, 1.362e-02, 6.563e-03, -9.628e-02, -2.524e-03, 3.816e-02, 2.843e-02, 4.535e-02, 3.333e-02, -1.107e-01, -2.981e-02, 8.319e-03, 7.799e-04, 2.900e-04, -2.311e-02), r);\n\tr = MulAdd(s6_7, M4(2.919e-02, 1.059e-02, 7.065e-03, -3.345e-02, 2.468e-02, 1.444e-03, -4.799e-02, -7.159e-02, -1.106e-01, 1.015e-01, -6.719e-02, 6.121e-02, 2.030e-01, 9.782e-02, 7.160e-03, -8.295e-02), r);\n\tr = MulAdd(s6_8, M4(-7.268e-03, 4.832e-02, -6.109e-02, 4.652e-02, -6.329e-02, -5.492e-03, 4.236e-02, -9.245e-03, -9.686e-02, 4.322e-02, 2.277e-02, 7.572e-02, 7.280e-02, -2.059e-02, 6.613e-02, 1.643e-02), r);\n\tr = MulAdd(s7_0, M4(-2.119e-02, 3.030e-02, -4.405e-02, 6.537e-02, 2.802e-02, 6.263e-03, -9.705e-03, -4.797e-02, -4.451e-04, 1.365e-02, 2.454e-02, -1.171e-03, -3.285e-03, -9.244e-02, -8.995e-03, 3.439e-02), r);\n\tr = MulAdd(s7_1, M4(-4.763e-02, 8.042e-02, -1.512e-01, 5.042e-03, -1.447e-02, 5.979e-02, 1.804e-02, -3.810e-02, 4.092e-02, 9.670e-02, 7.289e-02, -7.576e-02, 5.053e-02, -1.740e-01, 1.056e-02, 1.016e-02), r);\n\tr = MulAdd(s7_2, M4(-4.215e-02, 9.243e-03, 4.547e-02, 5.101e-02, 1.471e-02, -4.845e-02, 8.137e-02, 6.904e-03, 3.433e-03, 2.506e-03, 4.958e-02, 1.959e-02, 6.461e-02, -8.735e-03, -9.370e-02, 3.753e-02), r);\n\tr = MulAdd(s7_3, M4(2.423e-01, -1.513e-02, -1.648e-01, 7.641e-02, -3.378e-02, 1.648e-02, 2.892e-02, 8.187e-02, -4.073e-02, 4.538e-02, 1.119e-01, -1.919e-02, 7.811e-02, -4.842e-02, -1.180e-01, -1.526e-02), r);\n\tr = MulAdd(s7_4, M4(3.740e-01, 1.261e-01, -3.589e-01, -8.046e-03, -1.334e-01, -6.983e-02, 1.186e-01, -1.908e-01, 2.490e-01, 4.919e-02, 4.566e-02, -1.406e-01, -2.601e-01, 1.413e-03, 6.755e-01, -1.009e-01), r);\n\tr = MulAdd(s7_5, M4(1.648e-01, -9.394e-02, 1.533e-01, 9.692e-02, -3.313e-02, 7.436e-02, 1.267e-02, 6.690e-02, 7.949e-02, -2.163e-02, 5.379e-02, -3.235e-02, 1.076e-01, -6.953e-02, -2.222e-01, -2.015e-01), r);\n\tr = MulAdd(s7_6, M4(-5.087e-03, -3.670e-02, 8.675e-02, 1.666e-01, -9.506e-04, 1.749e-02, -8.476e-02, 1.666e-02, 4.410e-03, 5.603e-03, -8.273e-02, -4.501e-02, 1.623e-01, -1.785e-02, 1.753e-02, 1.361e-01), r);\n\tr = MulAdd(s7_7, M4(-1.254e-01, 1.228e-01, -2.234e-01, 2.425e-02, 2.744e-02, 2.496e-02, -6.378e-02, -3.784e-02, 1.057e-02, -2.370e-02, 1.629e-01, 4.549e-02, -3.170e-02, -3.826e-02, 3.585e-02, -1.727e-01), r);\n\tr = MulAdd(s7_8, M4(1.884e-02, -5.068e-02, -6.821e-02, -7.822e-02, -1.579e-02, -3.825e-02, 3.887e-02, -3.989e-03, 2.832e-02, 2.644e-02, -7.321e-02, -1.082e-02, -1.362e-02, -1.826e-02, -7.490e-03, 2.499e-02), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 6\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0, t1, t2, t3\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.512e-04, -2.611e-04, 1.538e-04, -1.644e-04 };\n\tr = MulAdd(s0_0, M4(6.706e-03, 2.738e-02, 1.982e-02, 3.446e-02, 1.264e-02, 1.304e-02, 7.763e-03, 1.023e-02, 6.302e-02, -1.182e-02, 2.278e-03, -1.232e-02, -3.429e-02, -2.040e-02, -1.168e-02, -1.181e-04), r);\n\tr = MulAdd(s0_1, M4(1.620e-02, -1.199e-02, 4.502e-04, -2.397e-02, 1.938e-02, 2.430e-02, -2.373e-02, -1.482e-02, 2.732e-01, 2.037e-01, 1.514e-02, -4.439e-03, 1.380e-02, -2.781e-02, -1.160e-02, -5.282e-03), r);\n\tr = MulAdd(s0_2, M4(-2.373e-02, -3.357e-02, -1.911e-02, -2.116e-02, 3.150e-03, -1.397e-02, 6.662e-03, 2.505e-03, -6.251e-03, 1.411e-01, -6.574e-03, 2.131e-02, -7.093e-03, -2.413e-03, 4.677e-03, -6.331e-03), r);\n\tr = MulAdd(s0_3, M4(-8.154e-03, -2.709e-02, -4.627e-02, 1.616e-02, -1.821e-02, -1.728e-03, 1.458e-02, 3.793e-03, 7.761e-04, 1.175e-02, 4.766e-02, 4.329e-02, 7.208e-02, 2.035e-02, 3.456e-02, 7.867e-03), r);\n\tr = MulAdd(s0_4, M4(3.753e-02, 8.269e-02, 4.995e-02, -7.103e-02, 2.705e-01, 1.385e-01, 1.998e-01, 1.450e-01, 3.745e-02, -3.325e-02, -5.085e-01, -2.738e-01, -3.485e-02, 8.088e-03, 1.705e-02, -1.057e-02), r);\n\tr = MulAdd(s0_5, M4(-2.050e-02, -2.972e-02, -2.553e-02, 5.540e-03, -3.511e-03, 1.057e-01, 3.660e-04, 5.968e-02, -1.991e-03, 4.205e-02, 2.424e-02, -1.986e-01, -5.259e-03, 1.820e-02, -1.526e-02, 2.478e-02), r);\n\tr = MulAdd(s0_6, M4(9.996e-04, 3.596e-03, 1.001e-02, 1.456e-02, -4.555e-03, 7.179e-03, -2.682e-02, -6.408e-03, 3.120e-03, 1.067e-02, 3.258e-03, -3.356e-03, 1.815e-03, -1.414e-02, 5.043e-03, -3.697e-03), r);\n\tr = MulAdd(s0_7, M4(-3.559e-03, -8.496e-03, 3.859e-02, 9.324e-03, 9.646e-03, 8.992e-04, 9.910e-02, 2.640e-02, -1.351e-02, -3.127e-02, 9.650e-03, 8.386e-03, 1.654e-02, 6.433e-03, -2.265e-02, -1.257e-02), r);\n\tr = MulAdd(s0_8, M4(-1.199e-04, -1.512e-03, -1.954e-03, 2.475e-02, -1.249e-03, 9.731e-03, 5.393e-04, 4.577e-02, -2.155e-03, 5.138e-03, 6.896e-03, 1.335e-02, 3.760e-03, 3.140e-03, 5.814e-03, 9.744e-03), r);\n\tr = MulAdd(s1_0, M4(-8.659e-02, 3.889e-02, -2.871e-02, 3.276e-02, -8.269e-03, -5.772e-03, -7.633e-03, -3.066e-04, 3.702e-02, 6.132e-03, -2.208e-03, -6.681e-03, 2.615e-01, -3.704e-03, 3.935e-02, -1.550e-02), r);\n\tr = MulAdd(s1_1, M4(5.674e-01, -3.038e-01, -7.032e-02, 2.502e-01, -1.740e-02, -8.063e-03, -3.653e-02, -3.674e-02, -1.522e-02, 3.629e-02, 3.234e-02, 1.025e-03, -5.206e-02, -1.642e-01, -3.535e-03, 1.201e-01), r);\n\tr = MulAdd(s1_2, M4(-6.240e-02, -6.285e-03, -3.948e-03, -9.802e-02, -1.037e-02, -2.798e-02, -4.192e-03, -9.613e-03, 9.687e-03, 1.919e-04, 3.353e-03, 3.614e-02, -1.174e-02, -4.330e-02, -4.163e-03, -3.807e-02), r);\n\tr = MulAdd(s1_3, M4(4.163e-02, -9.872e-03, 2.819e-02, 2.463e-02, -6.409e-02, -1.859e-02, -2.710e-02, -2.217e-02, 7.472e-03, 1.579e-02, 5.426e-02, 2.485e-02, -1.173e-01, 4.078e-03, -3.701e-02, 2.325e-01), r);\n\tr = MulAdd(s1_4, M4(-2.448e-02, 1.968e-01, -1.342e-01, -2.612e-01, 2.046e-01, 7.601e-02, 1.447e-01, 1.028e-01, -3.414e-02, -6.663e-02, -8.081e-02, -2.704e-02, 5.723e-04, -3.118e-02, 3.543e-03, -3.026e-01), r);\n\tr = MulAdd(s1_5, M4(-4.390e-02, -7.740e-02, -1.474e-02, 2.634e-01, -2.341e-02, 5.932e-02, -2.056e-02, 2.264e-02, -1.905e-02, -6.032e-03, 2.378e-03, -1.867e-02, 7.279e-04, 2.674e-02, -1.385e-02, 3.487e-02), r);\n\tr = MulAdd(s1_6, M4(3.921e-03, 3.367e-03, 1.907e-02, 1.209e-02, -1.719e-02, -1.690e-03, -5.189e-02, -9.493e-03, 3.343e-03, 9.647e-03, 2.207e-03, 2.075e-03, -3.259e-03, -7.067e-03, -3.279e-02, -2.717e-02), r);\n\tr = MulAdd(s1_7, M4(-2.856e-03, -4.601e-05, 6.812e-02, 4.533e-02, -1.426e-02, -2.584e-02, 5.481e-02, -1.690e-02, -6.950e-03, -2.264e-02, -1.304e-02, -1.176e-04, 2.057e-02, 7.382e-03, -1.340e-02, -5.682e-03), r);\n\tr = MulAdd(s1_8, M4(2.008e-02, -3.867e-05, 4.696e-03, 4.263e-02, -1.265e-03, -7.850e-03, -5.589e-03, 1.498e-02, 1.009e-03, 5.427e-03, -9.848e-03, -2.229e-02, 4.909e-03, 1.174e-02, 1.151e-02, 1.605e-02), r);\n\tr = MulAdd(s2_0, M4(1.550e-02, 7.876e-03, 1.935e-02, -2.579e-02, 3.936e-02, -1.027e-02, -4.275e-03, -4.746e-04, 6.157e-04, 1.466e-03, -8.017e-03, -7.368e-03, -2.300e-01, 6.241e-02, 2.634e-03, 2.035e-02), r);\n\tr = MulAdd(s2_1, M4(-1.844e-02, 6.846e-02, 5.139e-02, 6.380e-02, 1.223e-03, 8.304e-02, 1.181e-02, 1.088e-03, 1.064e-01, -6.148e-03, -5.413e-03, -4.218e-03, -6.852e-03, -7.436e-02, -1.611e-02, 7.466e-03), r);\n\tr = MulAdd(s2_2, M4(-2.136e-03, -2.562e-02, 1.898e-02, 3.205e-02, -6.119e-03, -2.026e-02, -4.648e-03, -2.375e-04, 1.091e-02, 6.421e-02, 6.904e-03, -1.513e-02, 4.585e-03, 1.058e-02, 6.842e-03, 5.545e-03), r);\n\tr = MulAdd(s2_3, M4(1.061e-01, -4.794e-03, 1.037e-01, 3.058e-02, 4.968e-02, 2.590e-02, 9.155e-02, 1.009e-02, -3.137e-02, 1.630e-02, -6.220e-03, 2.111e-02, -9.500e-02, 1.714e-01, -4.057e-01, 1.782e-01), r);\n\tr = MulAdd(s2_4, M4(2.339e-01, -5.819e-01, -2.723e-01, 6.472e-03, -1.238e-01, -1.127e-02, -6.174e-02, 6.429e-02, -1.267e-01, -3.096e-01, 1.014e-01, -2.204e-01, 2.052e-02, 1.475e-01, 6.066e-02, 9.589e-02), r);\n\tr = MulAdd(s2_5, M4(-2.304e-02, 2.318e-02, 2.866e-02, -4.408e-02, 1.489e-02, -5.801e-02, -1.756e-03, -3.577e-02, 5.791e-02, 2.144e-01, 9.753e-03, 1.912e-01, -3.009e-02, 5.106e-03, -1.229e-02, 1.420e-02), r);\n\tr = MulAdd(s2_6, M4(4.358e-02, 3.502e-02, -6.798e-02, 5.187e-02, -4.211e-04, 1.322e-03, 5.382e-03, 2.963e-03, -2.588e-03, -7.874e-03, -2.179e-02, -1.582e-03, -2.461e-02, -6.470e-02, -3.839e-03, 2.191e-02), r);\n\tr = MulAdd(s2_7, M4(-6.287e-03, 2.149e-02, 7.913e-02, -5.061e-02, 1.243e-02, -7.702e-03, -4.872e-02, -1.086e-02, 1.832e-02, 9.044e-02, -5.083e-02, -6.268e-02, 1.514e-02, 1.465e-03, -1.091e-02, 6.273e-03), r);\n\tr = MulAdd(s2_8, M4(1.213e-02, 1.402e-02, -1.088e-02, 1.310e-02, -2.250e-03, 1.604e-02, 6.334e-03, -2.184e-02, -3.757e-04, -3.529e-02, 4.777e-02, 5.153e-02, 8.795e-03, 5.222e-03, -6.544e-03, 9.581e-03), r);\n\tr = MulAdd(s3_0, M4(-1.079e-02, 1.253e-04, 4.458e-03, -1.254e-02, 9.123e-02, 4.150e-03, 1.458e-02, 1.127e-02, 1.968e-02, 4.168e-03, -3.046e-03, -1.191e-02, -2.692e-03, -8.615e-03, -9.278e-03, 2.227e-02), r);\n\tr = MulAdd(s3_1, M4(1.472e-03, -2.004e-02, 2.582e-02, 4.490e-02, 5.903e-02, 1.377e-01, 4.830e-02, 4.055e-02, -5.469e-03, 2.753e-02, -5.264e-03, -7.181e-03, -1.594e-02, -1.295e-01, -6.401e-03, -6.162e-03), r);\n\tr = MulAdd(s3_2, M4(-2.532e-03, 1.243e-02, 2.114e-03, 1.702e-02, 4.265e-03, 1.309e-02, 7.171e-03, 1.492e-02, -1.846e-03, 1.942e-02, 1.357e-02, -1.592e-04, 3.933e-03, 9.982e-03, 6.534e-03, -2.432e-03), r);\n\tr = MulAdd(s3_3, M4(7.380e-03, -2.116e-02, -1.380e-02, 2.664e-02, 7.186e-02, 4.053e-02, 1.256e-01, 2.894e-02, -1.920e-02, 1.135e-02, 3.353e-02, 2.217e-02, 8.643e-02, 4.063e-02, 1.027e-01, -2.016e-02), r);\n\tr = MulAdd(s3_4, M4(-1.645e-02, 3.861e-02, -3.602e-02, -6.018e-02, -1.166e-01, -1.456e-02, -3.626e-02, 9.418e-02, -3.214e-02, -6.153e-02, -5.345e-02, 2.475e-02, -2.590e-02, 6.906e-02, -9.229e-03, -5.921e-02), r);\n\tr = MulAdd(s3_5, M4(-1.950e-02, -1.801e-02, 1.145e-02, -5.417e-03, 1.553e-02, -4.899e-02, 3.746e-03, -2.643e-02, 1.086e-02, -1.598e-02, -2.667e-02, -1.705e-02, -2.110e-02, 2.587e-02, -7.802e-03, 4.066e-02), r);\n\tr = MulAdd(s3_6, M4(2.483e-02, 2.045e-02, 2.890e-02, 2.709e-02, 1.065e-02, 3.481e-03, 2.060e-02, 1.064e-02, -1.112e-02, -1.077e-02, -3.564e-02, -7.229e-03, -2.201e-02, -7.123e-02, -3.014e-02, -9.062e-03), r);\n\tr = MulAdd(s3_7, M4(-1.130e-02, -8.691e-03, -2.022e-02, -1.872e-03, 1.187e-02, -1.794e-03, -5.008e-02, -8.469e-03, 1.349e-02, 7.055e-02, 2.765e-02, -1.753e-02, 2.082e-02, 8.165e-03, -3.951e-04, 5.765e-03), r);\n\tr = MulAdd(s3_8, M4(1.337e-02, -3.658e-03, -1.502e-02, -2.274e-02, -9.337e-04, 1.728e-02, 8.759e-03, -2.078e-02, 4.858e-03, -2.704e-02, 2.696e-02, 5.332e-03, 8.513e-03, -1.582e-03, -4.886e-03, 5.885e-03), r);\n\tr = MulAdd(s4_0, M4(3.610e-03, 1.743e-04, 7.204e-04, -4.711e-03, -1.319e-01, -1.839e-02, -9.755e-03, -9.129e-03, -7.165e-04, -1.347e-02, 6.162e-03, 1.950e-03, 1.229e-03, 3.174e-03, 4.744e-04, 1.910e-03), r);\n\tr = MulAdd(s4_1, M4(1.342e-02, 5.925e-03, 1.500e-02, 1.613e-02, -1.814e-01, -2.920e-01, -1.278e-02, 4.213e-03, -1.575e-02, 5.395e-03, -2.002e-03, -4.321e-03, 1.622e-03, 3.033e-03, -7.231e-03, -6.567e-03), r);\n\tr = MulAdd(s4_2, M4(1.099e-03, 2.215e-03, -5.874e-03, -4.530e-04, 6.192e-03, -6.228e-03, -3.858e-03, -1.363e-02, 3.433e-03, -9.166e-03, 3.268e-03, 4.154e-03, -4.996e-04, -3.292e-04, -7.646e-03, -9.518e-03), r);\n\tr = MulAdd(s4_3, M4(1.052e-02, 1.420e-02, 4.065e-03, 1.323e-02, 3.106e-02, 2.095e-02, 2.641e-02, -2.029e-02, 3.237e-02, -9.146e-03, -1.105e-02, -3.650e-02, -1.699e-02, -5.951e-03, -1.118e-02, -1.966e-02), r);\n\tr = MulAdd(s4_4, M4(-2.217e-04, -3.200e-02, -3.792e-02, -5.471e-02, 2.181e-02, -1.362e-02, 3.526e-01, 2.753e-01, -1.813e-03, 3.984e-02, 7.449e-03, 5.883e-02, -1.606e-02, 2.281e-02, 5.425e-02, 3.770e-02), r);\n\tr = MulAdd(s4_5, M4(1.261e-03, 1.474e-02, 7.484e-03, 1.939e-03, -2.267e-02, 2.509e-02, -2.069e-02, 9.510e-02, -7.844e-03, 4.294e-04, -6.696e-03, -1.740e-02, 3.167e-02, -2.329e-02, 1.160e-02, 5.096e-02), r);\n\tr = MulAdd(s4_6, M4(2.120e-03, 9.430e-03, 1.219e-02, 7.862e-03, 3.047e-03, 1.150e-02, 4.749e-02, 2.562e-02, -9.188e-03, 2.203e-02, 3.607e-02, 3.083e-03, -2.106e-03, 2.432e-03, 1.199e-03, -4.127e-03), r);\n\tr = MulAdd(s4_7, M4(-1.028e-02, -1.226e-02, 3.231e-02, 1.802e-02, 3.789e-03, -6.684e-03, -1.964e-02, 9.650e-03, 3.068e-03, -3.723e-02, -3.946e-02, 1.179e-02, -7.176e-03, -1.497e-02, -7.633e-02, 2.594e-02), r);\n\tr = MulAdd(s4_8, M4(-3.920e-03, -8.312e-03, -9.664e-03, 8.452e-03, 2.961e-03, -2.312e-03, -1.455e-02, -1.813e-02, 2.082e-03, -2.123e-04, 8.967e-04, -1.630e-02, 1.116e-02, 9.301e-03, 3.381e-02, -7.034e-02), r);\n\tr = MulAdd(s5_0, M4(1.728e-02, -1.585e-05, -9.193e-03, -6.659e-03, -1.837e-02, -1.407e-02, 1.653e-03, -5.910e-03, -1.014e-01, -1.989e-02, 1.128e-04, 7.965e-03, 6.667e-03, 5.024e-03, 7.592e-03, 3.754e-03), r);\n\tr = MulAdd(s5_1, M4(3.763e-02, 1.312e-02, -1.504e-02, -1.373e-02, -6.919e-03, -4.613e-02, -1.367e-02, -1.003e-02, 2.991e-02, -9.302e-02, 2.019e-02, 1.075e-02, 2.194e-02, 2.247e-02, 3.750e-03, 2.476e-03), r);\n\tr = MulAdd(s5_2, M4(9.883e-03, 2.720e-02, -1.846e-02, -2.238e-02, -1.193e-02, 5.010e-03, -9.641e-03, -5.314e-03, 5.198e-03, 6.518e-04, 4.161e-03, 6.686e-03, -2.658e-02, -7.220e-03, -7.024e-03, -1.111e-03), r);\n\tr = MulAdd(s5_3, M4(-1.562e-02, 9.244e-03, 6.323e-02, 1.166e-02, 9.164e-03, 6.390e-03, -4.895e-02, 2.439e-03, -3.811e-02, -9.895e-02, 2.417e-01, -6.693e-02, 1.474e-02, -9.886e-05, 7.191e-03, -1.361e-02), r);\n\tr = MulAdd(s5_4, M4(-4.278e-01, -2.293e-01, 3.549e-01, 1.887e-01, 5.394e-02, 2.415e-03, 4.315e-02, -6.372e-02, -2.050e-01, 6.035e-01, -1.450e-01, -2.261e-01, -2.389e-01, 5.383e-02, 8.571e-02, 9.038e-02), r);\n\tr = MulAdd(s5_5, M4(-6.487e-02, -2.900e-01, 3.513e-02, 2.660e-01, -2.179e-02, 4.067e-02, -1.280e-02, 3.715e-02, -1.417e-02, -6.856e-02, -1.100e-03, 1.504e-02, 2.764e-01, -1.850e-01, -7.299e-02, -4.783e-02), r);\n\tr = MulAdd(s5_6, M4(1.426e-02, 7.731e-03, -1.884e-03, 3.143e-03, 6.810e-03, 1.151e-02, 5.335e-02, 1.234e-02, 1.521e-02, 6.843e-03, -6.522e-02, 2.987e-02, -4.732e-03, -1.716e-03, 1.397e-02, 5.751e-03), r);\n\tr = MulAdd(s5_7, M4(1.255e-02, 1.881e-02, 1.056e-02, -1.908e-02, -1.926e-03, -5.265e-03, -2.304e-03, 3.788e-02, -1.586e-02, -7.495e-02, 1.929e-01, -4.114e-02, 2.569e-01, -9.647e-02, -1.509e-01, -1.543e-01), r);\n\tr = MulAdd(s5_8, M4(2.466e-02, 1.450e-02, -3.034e-02, -1.328e-02, 6.704e-03, -1.769e-03, -3.458e-03, 3.007e-03, 2.685e-02, -3.713e-02, -1.753e-02, -4.535e-03, 1.058e-02, -5.708e-02, 5.038e-02, 2.939e-01), r);\n\tr = MulAdd(s6_0, M4(-4.531e-03, -8.348e-03, -5.183e-03, -1.459e-03, 5.203e-03, -1.217e-04, -5.029e-03, 7.963e-03, 2.546e-02, -3.475e-02, 8.723e-03, -1.175e-02, 3.405e-03, 6.611e-03, 1.978e-03, 2.428e-03), r);\n\tr = MulAdd(s6_1, M4(-2.185e-03, -2.680e-03, 4.320e-03, -7.711e-03, -5.130e-02, -1.818e-02, -4.918e-02, -6.470e-02, -1.355e-01, 1.808e-01, -1.148e-02, 9.756e-04, 2.852e-03, -7.537e-02, 2.680e-02, 4.285e-02), r);\n\tr = MulAdd(s6_2, M4(-1.070e-02, 4.954e-03, 2.978e-03, 9.844e-03, 1.107e-02, -9.837e-03, 1.935e-02, 2.246e-02, 2.193e-02, -4.628e-02, 9.669e-03, -8.352e-03, -4.623e-03, 3.010e-02, 1.293e-02, 9.552e-03), r);\n\tr = MulAdd(s6_3, M4(7.925e-03, -5.744e-03, 3.464e-03, 1.769e-04, -1.121e-02, -1.561e-02, 1.824e-02, -3.989e-02, 2.250e-02, -3.043e-02, 3.715e-02, -6.117e-02, 3.335e-02, -1.336e-02, 5.664e-02, 1.929e-02), r);\n\tr = MulAdd(s6_4, M4(6.696e-03, 4.596e-03, -2.174e-02, -2.013e-02, 5.530e-02, 3.743e-02, 5.506e-02, 1.587e-01, -3.331e-01, 3.474e-01, -3.669e-01, 5.025e-01, -4.944e-02, 3.737e-02, -4.266e-02, -1.045e-01), r);\n\tr = MulAdd(s6_5, M4(-1.437e-02, 2.715e-03, -1.708e-03, 7.397e-03, -1.268e-02, 2.074e-02, -1.405e-02, -4.529e-02, 2.829e-03, 1.265e-03, 1.605e-02, -7.341e-02, -5.201e-03, 1.521e-02, -9.495e-03, 4.242e-02), r);\n\tr = MulAdd(s6_6, M4(2.535e-04, 1.031e-02, 7.683e-03, 7.707e-04, -1.282e-02, -5.099e-03, -1.141e-02, -1.839e-02, -1.007e-02, -2.516e-02, -4.471e-03, -1.873e-02, -6.821e-03, -2.326e-02, -2.518e-02, -1.273e-02), r);\n\tr = MulAdd(s6_7, M4(3.362e-03, -2.606e-02, 1.189e-02, 1.764e-02, 2.339e-02, -1.431e-02, -2.236e-02, 1.224e-03, 2.395e-03, 1.231e-02, -6.983e-02, 5.847e-02, 6.893e-03, 9.406e-03, -1.467e-02, 6.487e-03), r);\n\tr = MulAdd(s6_8, M4(1.385e-03, 1.439e-02, -1.064e-02, -7.657e-03, 8.523e-05, 2.189e-02, 3.952e-03, -4.479e-03, 3.323e-03, -1.651e-02, 1.816e-03, -1.029e-03, 1.190e-02, -1.157e-02, 9.120e-03, -1.558e-02), r);\n\tr = MulAdd(s7_0, M4(-4.056e-02, -2.108e-02, 1.828e-02, 1.432e-02, -3.539e-03, 1.663e-02, -9.396e-03, 4.822e-03, 8.786e-03, -8.241e-05, 4.654e-03, 8.757e-03, -8.862e-02, 2.074e-02, 2.974e-02, -1.814e-02), r);\n\tr = MulAdd(s7_1, M4(-5.678e-02, -5.286e-02, 3.109e-02, 1.401e-02, 1.048e-01, 7.690e-02, -3.782e-02, -4.993e-02, -2.728e-02, 1.580e-02, 3.322e-03, -1.647e-02, -1.076e-01, 1.363e-01, -1.095e-02, 5.280e-02), r);\n\tr = MulAdd(s7_2, M4(-1.123e-02, -2.316e-02, 6.307e-03, 2.675e-02, -3.419e-03, 3.929e-02, 9.452e-03, 1.004e-02, -1.637e-03, -1.911e-02, 5.418e-03, 1.204e-02, 1.972e-02, 1.721e-02, 2.992e-02, 8.433e-03), r);\n\tr = MulAdd(s7_3, M4(1.490e-01, -9.791e-03, -1.428e-01, -1.558e-02, -6.523e-02, -1.196e-02, -6.402e-02, -3.144e-02, 5.498e-03, 1.826e-02, 2.666e-02, -1.873e-02, -3.081e-02, 2.688e-02, -1.907e-01, 8.472e-02), r);\n\tr = MulAdd(s7_4, M4(3.719e-01, 4.177e-01, -3.323e-01, -3.875e-01, -6.588e-02, -1.706e-01, 2.773e-01, 1.075e-01, 2.692e-02, -9.144e-03, -3.408e-02, 8.546e-02, -2.251e-01, 7.381e-02, -4.385e-01, 4.693e-01), r);\n\tr = MulAdd(s7_5, M4(-1.497e-02, 1.150e-01, -7.533e-03, -7.972e-02, -7.560e-03, 3.861e-02, -1.411e-02, 9.379e-02, -3.411e-03, -1.342e-03, -1.345e-03, -6.180e-02, 1.408e-02, 4.882e-02, 2.710e-02, 4.628e-02), r);\n\tr = MulAdd(s7_6, M4(-1.653e-02, 4.965e-03, 3.135e-02, 1.568e-02, -9.323e-04, 9.862e-03, -1.727e-02, -1.187e-02, -1.217e-02, -1.441e-02, -2.301e-02, 8.357e-03, 5.023e-03, -1.157e-02, -4.895e-02, -4.306e-05), r);\n\tr = MulAdd(s7_7, M4(-3.122e-02, -5.748e-02, 1.710e-02, 3.771e-02, 1.876e-02, -1.052e-02, -1.102e-01, -6.328e-02, 4.230e-03, 1.399e-02, 3.042e-02, -3.180e-02, -1.349e-02, 3.137e-02, -6.765e-02, 2.530e-02), r);\n\tr = MulAdd(s7_8, M4(1.825e-03, -4.076e-04, 2.666e-03, 1.097e-03, -7.524e-03, 2.039e-02, -3.127e-02, -6.067e-02, -6.952e-03, -8.859e-03, -8.515e-03, 9.646e-03, 2.047e-02, -1.944e-02, 2.644e-02, -2.179e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-4x16C-NVL.hlsl",
    "content": "// CuNNy 4x16C BILINEAR RGB NVL - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-D16N04\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t7;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) (dot(MF3(1.870e-01, 3.591e-01, 7.602e-02), O(INPUT, float2(x, y)).rgb) + MF(-4.087e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -1.070e-02, -1.340e-03, -2.419e-04, 5.535e-03 };\n\tr = mad(s0_0, V4(8.371e-02, -3.545e-01, -3.840e-02, -6.216e-03), r);\n\tr = mad(s0_1, V4(-3.142e-01, 3.579e-01, -1.140e-01, 3.073e-02), r);\n\tr = mad(s0_2, V4(1.333e-01, -7.066e-03, 1.714e-01, 3.818e-01), r);\n\tr = mad(s0_3, V4(-7.350e-02, 4.033e-01, 1.318e-01, -1.724e-03), r);\n\tr = mad(s0_4, V4(-4.259e-02, -3.955e-01, -3.838e-01, -1.100e-01), r);\n\tr = mad(s0_5, V4(1.791e-01, -2.211e-03, -1.344e-01, -2.725e-01), r);\n\tr = mad(s0_6, V4(9.662e-03, -4.290e-02, 2.646e-01, 6.740e-03), r);\n\tr = mad(s0_7, V4(5.519e-02, 3.918e-02, 1.461e-01, -2.911e-02), r);\n\tr = mad(s0_8, V4(-4.700e-02, 5.593e-03, -4.187e-02, -2.506e-03), r);\n\treturn r;\n}\n\nV4 f1(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -6.139e-03, 1.469e-03, -2.491e-05, -8.164e-03 };\n\tr = mad(s0_0, V4(-2.701e-02, 8.362e-02, -1.470e-01, -2.450e-03), r);\n\tr = mad(s0_1, V4(7.854e-02, -6.238e-02, 2.998e-01, -2.166e-02), r);\n\tr = mad(s0_2, V4(-3.843e-02, -1.087e-03, 8.015e-03, -8.253e-03), r);\n\tr = mad(s0_3, V4(8.528e-02, -4.219e-02, -3.129e-02, -7.154e-02), r);\n\tr = mad(s0_4, V4(1.907e-01, -3.604e-01, -1.470e-01, -1.043e-01), r);\n\tr = mad(s0_5, V4(-2.596e-01, 1.101e-01, -1.610e-01, 3.564e-01), r);\n\tr = mad(s0_6, V4(-3.794e-02, -1.201e-02, -4.534e-02, -2.067e-03), r);\n\tr = mad(s0_7, V4(-2.723e-01, -7.101e-03, 2.920e-01, -4.703e-02), r);\n\tr = mad(s0_8, V4(2.764e-01, 2.903e-01, -6.617e-02, -1.000e-01), r);\n\treturn r;\n}\n\nV4 f2(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 5.744e-03, -5.855e-02, 3.652e-03, 6.364e-02 };\n\tr = mad(s0_0, V4(-1.344e-02, -6.919e-03, -1.467e-02, -1.242e-02), r);\n\tr = mad(s0_1, V4(-4.248e-01, 2.286e-01, 5.847e-02, 5.995e-03), r);\n\tr = mad(s0_2, V4(-2.976e-02, 1.412e-01, 3.197e-02, -1.810e-02), r);\n\tr = mad(s0_3, V4(1.150e-02, 3.446e-02, 1.025e-01, -2.692e-02), r);\n\tr = mad(s0_4, V4(3.936e-01, -2.788e-01, 2.418e-01, 2.693e-01), r);\n\tr = mad(s0_5, V4(3.597e-02, 1.973e-01, 5.150e-02, -2.774e-02), r);\n\tr = mad(s0_6, V4(1.056e-02, -1.251e-02, 2.856e-02, 1.177e-02), r);\n\tr = mad(s0_7, V4(1.555e-02, -2.186e-03, -4.072e-01, -4.419e-02), r);\n\tr = mad(s0_8, V4(1.607e-03, 5.487e-03, -1.008e-01, 5.047e-03), r);\n\treturn r;\n}\n\nV4 f3(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 9.305e-03, 1.342e-03, 1.386e-03, -1.248e-03 };\n\tr = mad(s0_0, V4(-1.162e-02, 2.393e-02, 3.063e-01, 1.225e-01), r);\n\tr = mad(s0_1, V4(2.079e-02, -6.710e-02, -4.221e-02, 1.147e-01), r);\n\tr = mad(s0_2, V4(-1.939e-02, 4.827e-03, -1.670e-01, -1.281e-02), r);\n\tr = mad(s0_3, V4(3.828e-02, 6.747e-02, 1.639e-01, -4.572e-01), r);\n\tr = mad(s0_4, V4(-2.201e-02, 1.626e-01, -2.213e-01, 2.021e-03), r);\n\tr = mad(s0_5, V4(3.526e-02, -2.339e-01, -7.593e-02, -7.410e-04), r);\n\tr = mad(s0_6, V4(-3.178e-01, -9.888e-02, 8.550e-03, 2.823e-01), r);\n\tr = mad(s0_7, V4(2.998e-01, 3.429e-01, -1.879e-03, -6.281e-02), r);\n\tr = mad(s0_8, V4(-1.127e-02, -2.026e-01, 2.804e-02, 1.138e-02), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -5.962e-03, -3.537e-03, 1.371e-03, -3.011e-02 };\n\tr = MulAdd(s0_0, M4(1.915e-01, 8.617e-02, 2.783e-01, -2.880e-01, 5.170e-02, 2.674e-01, -1.035e-01, -4.085e-02, -4.754e-02, 2.783e-01, 3.582e-03, 3.390e-02, 7.482e-02, 1.070e-01, -4.532e-02, -1.152e-01), r);\n\tr = MulAdd(s0_1, M4(1.452e-01, -8.931e-02, 9.665e-02, -2.959e-01, 1.034e-01, 8.728e-02, -7.314e-02, -3.113e-01, 7.188e-03, 5.407e-01, 9.069e-02, 1.456e-01, -5.582e-03, -4.387e-02, -3.720e-02, -1.689e-01), r);\n\tr = MulAdd(s0_2, M4(-1.109e-01, -2.353e-01, -1.249e-01, -2.881e-02, 1.277e-02, -2.393e-01, -9.998e-02, 8.359e-02, 8.465e-02, 3.467e-01, -4.426e-01, 1.844e-01, -9.682e-03, 1.228e-02, 2.420e-01, -2.956e-03), r);\n\tr = MulAdd(s0_3, M4(-2.872e-01, -2.808e-01, 1.123e-01, -3.129e-01, -1.782e-01, 1.057e-01, -7.654e-02, -6.484e-02, -9.183e-02, 2.257e-01, -4.162e-02, -3.929e-02, 1.257e-01, -1.185e-01, 1.132e-01, 2.286e-02), r);\n\tr = MulAdd(s0_4, M4(-6.034e-01, -2.698e-01, 2.346e-01, 3.800e-01, 1.354e-01, -2.793e-01, -2.765e-01, 4.368e-01, 2.433e-01, 1.016e-01, -2.549e-01, 1.175e-01, -5.999e-02, 1.617e-01, 2.720e-01, 2.399e-02), r);\n\tr = MulAdd(s0_5, M4(2.778e-01, 2.151e-01, -1.113e-01, 5.907e-02, 2.666e-02, -2.804e-01, -2.523e-01, -1.033e-01, -3.724e-01, 4.970e-02, -6.201e-02, 1.650e-01, 3.048e-02, -3.321e-02, -8.487e-02, 5.839e-02), r);\n\tr = MulAdd(s0_6, M4(-1.577e-01, -5.794e-01, 1.435e-03, -9.709e-02, -2.404e-02, 5.901e-02, 7.698e-02, 3.494e-02, 9.943e-02, -2.683e-03, 3.986e-02, 1.381e-01, -1.134e-01, -7.731e-03, -3.773e-01, -7.648e-02), r);\n\tr = MulAdd(s0_7, M4(-6.406e-01, 2.884e-01, 1.041e-01, -2.176e-01, 3.817e-02, -6.199e-01, -1.545e-01, 2.707e-01, 2.183e-01, -4.624e-02, -1.211e-01, -1.331e-01, 8.447e-02, -5.417e-02, -1.235e-01, -5.106e-02), r);\n\tr = MulAdd(s0_8, M4(1.502e-01, 5.535e-01, -4.493e-01, 5.334e-02, 2.547e-01, -3.920e-01, -1.611e-01, 3.136e-01, -2.486e-01, -1.901e-01, 1.735e-01, 1.422e-01, -1.382e-01, 1.335e-01, -6.865e-02, 5.767e-02), r);\n\tr = MulAdd(s1_0, M4(-1.072e-01, 6.178e-02, -8.950e-02, -4.395e-02, 2.797e-02, 1.097e-01, -1.335e-02, 2.105e-01, -5.711e-02, -7.394e-02, 6.051e-02, -1.298e-01, 8.520e-02, 1.592e-01, -1.618e-02, 2.063e-01), r);\n\tr = MulAdd(s1_1, M4(-9.313e-02, 1.554e-01, 2.962e-01, 2.182e-01, -2.366e-02, -1.189e-01, 1.419e-02, -3.432e-03, -2.118e-01, -1.505e-01, 1.335e-01, -3.626e-01, -1.272e-01, -2.990e-01, -1.156e-01, 2.206e-01), r);\n\tr = MulAdd(s1_2, M4(2.653e-02, 6.007e-03, -9.481e-02, 2.164e-03, -6.669e-02, 1.896e-02, -2.685e-01, 1.459e-02, 1.478e-01, -1.619e-01, 9.891e-02, 4.510e-02, -6.737e-02, 8.488e-02, 2.175e-01, 1.367e-01), r);\n\tr = MulAdd(s1_3, M4(8.973e-02, 1.315e-01, -9.112e-02, -2.657e-02, 4.734e-02, -1.120e-01, 1.049e-01, 8.353e-02, -3.940e-02, -1.524e-02, -4.120e-02, -4.177e-02, -1.102e-01, 4.304e-01, -1.386e-01, 5.626e-02), r);\n\tr = MulAdd(s1_4, M4(1.491e-01, 1.458e-01, 9.985e-02, -3.261e-02, 1.666e-01, -3.331e-01, 1.899e-02, 7.565e-02, 4.484e-03, -2.159e-01, 3.560e-03, 4.046e-02, 2.046e-01, -3.285e-01, -3.512e-01, -1.651e-01), r);\n\tr = MulAdd(s1_5, M4(-3.374e-01, -4.701e-02, -5.227e-02, -5.245e-02, -3.441e-01, 1.487e-01, 1.912e-01, -1.615e-01, -1.529e-01, -1.536e-02, 1.713e-01, -2.163e-01, -2.387e-03, 6.917e-02, 2.498e-01, 9.538e-02), r);\n\tr = MulAdd(s1_6, M4(2.198e-02, 2.846e-02, -7.364e-02, -9.207e-02, 1.338e-01, -1.202e-01, 1.576e-01, 1.028e-01, 4.717e-02, -3.245e-02, -1.692e-02, 1.459e-01, 3.656e-01, -1.545e-01, 4.262e-01, 2.335e-02), r);\n\tr = MulAdd(s1_7, M4(2.171e-01, -1.561e-01, 8.276e-02, 2.344e-02, -1.918e-01, 2.082e-01, -2.113e-01, -2.870e-01, -4.678e-02, -7.053e-02, -3.567e-03, -7.122e-02, -5.404e-01, 1.409e-02, 6.304e-01, -2.495e-02), r);\n\tr = MulAdd(s1_8, M4(-2.908e-02, -3.121e-01, 2.461e-03, 1.053e-02, 6.840e-02, 2.736e-01, 5.635e-01, -1.502e-01, -2.910e-02, 1.594e-02, 1.646e-01, -9.596e-02, -1.050e-01, -1.280e-01, 1.544e-01, 1.133e-01), r);\n\tr = MulAdd(s2_0, M4(-1.709e-01, 4.813e-02, -1.308e-01, -3.929e-01, -2.671e-01, 1.794e-01, -3.473e-02, -1.082e-01, 1.704e-01, -9.371e-02, 1.177e-01, 1.082e-01, -1.074e-01, -1.489e-01, -6.564e-02, 2.592e-01), r);\n\tr = MulAdd(s2_1, M4(-3.982e-01, 1.608e-01, 2.630e-01, 2.781e-01, 9.405e-02, 3.370e-01, 1.315e-01, -2.692e-01, 6.091e-02, -8.330e-02, 1.807e-01, 1.158e-01, 1.087e-01, -4.806e-01, -1.911e-02, 4.111e-01), r);\n\tr = MulAdd(s2_2, M4(7.164e-04, 1.734e-01, 1.819e-01, 6.334e-02, -2.757e-01, -2.027e-02, 2.200e-02, -5.364e-02, 1.775e-01, 9.564e-02, 1.428e-01, 1.097e-01, 2.450e-01, 3.822e-02, -1.977e-01, 1.627e-01), r);\n\tr = MulAdd(s2_3, M4(1.574e-02, 1.611e-01, -2.701e-01, 2.160e-01, 1.052e-01, 1.880e-01, 1.925e-01, 1.191e-01, 2.600e-01, -8.277e-02, 2.963e-02, 1.030e-01, 2.238e-01, -5.039e-02, 2.048e-01, -1.014e-01), r);\n\tr = MulAdd(s2_4, M4(-3.232e-01, 1.614e-01, 3.728e-01, 1.739e-02, 2.750e-01, 9.738e-02, -1.019e-01, -2.264e-01, 2.518e-02, -2.377e-01, 1.322e-01, 8.435e-02, 4.010e-01, 2.758e-01, -4.264e-01, 7.319e-02), r);\n\tr = MulAdd(s2_5, M4(-6.737e-02, 2.770e-01, -3.094e-01, 1.656e-01, -1.544e-01, -2.708e-01, 1.999e-01, -7.944e-02, 1.547e-01, 8.519e-02, 1.132e-01, 2.361e-01, 2.004e-01, -3.373e-01, -1.710e-01, -7.043e-02), r);\n\tr = MulAdd(s2_6, M4(1.828e-01, 1.317e-01, -8.375e-02, -2.125e-01, -7.807e-02, -1.727e-01, 3.817e-02, 4.709e-02, -5.390e-02, -5.449e-02, -4.993e-02, 1.147e-01, -1.161e-01, 4.468e-01, 8.868e-02, -8.974e-02), r);\n\tr = MulAdd(s2_7, M4(9.288e-02, -3.211e-02, 2.103e-01, -1.412e-01, -2.230e-02, -3.565e-01, -1.209e-01, -5.526e-02, 9.967e-02, 9.655e-02, 5.062e-02, -1.023e-01, 5.712e-02, -6.176e-02, -3.075e-02, 2.405e-02), r);\n\tr = MulAdd(s2_8, M4(3.821e-02, -6.003e-02, -1.239e-01, -2.513e-01, -8.277e-02, -1.232e-01, 6.995e-02, -1.091e-01, 2.963e-01, 9.518e-02, 1.699e-01, 9.288e-02, 1.102e-01, -8.510e-02, 2.233e-01, 8.911e-03), r);\n\tr = MulAdd(s3_0, M4(1.078e-01, -6.877e-02, 4.785e-02, 4.049e-03, 2.763e-01, 2.047e-01, -1.208e-01, -3.427e-02, -5.237e-02, -7.717e-02, 1.456e-01, -2.029e-01, -5.558e-02, -3.988e-03, -5.646e-02, -6.426e-02), r);\n\tr = MulAdd(s3_1, M4(2.635e-01, 5.426e-02, -3.762e-01, -8.153e-02, -2.918e-01, 2.323e-01, -4.968e-02, 2.672e-01, -1.023e-01, 2.621e-02, -9.011e-02, -2.466e-01, -9.320e-02, 8.727e-02, 6.309e-02, 3.082e-02), r);\n\tr = MulAdd(s3_2, M4(-7.310e-02, 3.103e-02, 3.669e-01, -1.146e-01, 2.471e-01, 8.364e-02, -2.383e-02, 2.244e-01, -1.019e-02, 1.156e-02, 1.421e-02, -1.744e-02, 6.525e-02, -6.749e-02, -1.353e-01, -4.656e-02), r);\n\tr = MulAdd(s3_3, M4(5.752e-02, -2.742e-01, 2.097e-01, 1.157e-01, 5.903e-02, 7.109e-02, 1.085e-01, -1.613e-01, -1.231e-01, -1.270e-02, -9.659e-02, -1.619e-01, -1.958e-01, 2.087e-01, -9.484e-02, -7.992e-02), r);\n\tr = MulAdd(s3_4, M4(-6.251e-02, -2.237e-01, -2.261e-01, -1.846e-03, 2.110e-01, -2.218e-01, -2.144e-01, 2.588e-01, -2.198e-01, 1.925e-01, -1.086e-01, -1.815e-02, 5.868e-02, 1.777e-01, 1.376e-01, 1.380e-01), r);\n\tr = MulAdd(s3_5, M4(6.631e-02, 8.099e-02, 2.929e-01, 1.477e-01, 1.644e-02, 2.053e-01, -1.695e-01, 9.151e-02, -2.903e-02, 1.207e-01, -1.663e-01, -9.041e-02, 2.284e-02, 4.472e-02, -2.491e-02, 9.218e-02), r);\n\tr = MulAdd(s3_6, M4(-1.521e-01, 1.273e-01, -3.648e-02, 2.055e-02, 3.445e-03, 9.287e-03, 6.272e-03, 1.347e-01, 8.115e-02, 1.683e-01, -8.573e-03, -8.772e-02, 1.265e-01, -1.132e-01, 7.200e-02, 7.849e-02), r);\n\tr = MulAdd(s3_7, M4(-1.989e-01, 1.623e-01, -3.536e-02, 1.904e-01, 1.371e-01, 1.042e-02, -7.387e-02, 2.075e-01, -2.366e-01, 4.228e-02, -1.673e-01, -2.606e-02, 2.563e-02, -1.812e-01, -2.389e-02, -1.613e-01), r);\n\tr = MulAdd(s3_8, M4(4.839e-02, 1.181e-02, -1.900e-01, -1.261e-01, -1.134e-02, 7.055e-02, -4.342e-03, 2.042e-01, -1.193e-01, 1.091e-02, -1.185e-01, -1.153e-01, -5.787e-02, -5.799e-02, 3.598e-02, -1.043e-02), r);\n\tr = MulAdd(s4_0, M4(4.490e-03, -6.261e-02, 1.111e-01, -2.427e-02, -1.759e-01, 1.041e-01, -3.451e-02, -6.152e-02, -2.537e-01, 5.739e-02, -2.566e-02, 3.164e-02, 5.651e-03, 7.279e-02, 7.798e-02, 8.355e-02), r);\n\tr = MulAdd(s4_1, M4(1.033e-01, 1.069e-01, 6.319e-02, -3.446e-02, 1.358e-01, 1.130e-01, 3.079e-01, -1.337e-01, 1.295e-01, -4.400e-01, -2.262e-01, -2.545e-02, 4.901e-02, -5.701e-02, -9.943e-02, -1.870e-02), r);\n\tr = MulAdd(s4_2, M4(-1.782e-01, -5.946e-02, -5.404e-02, 1.318e-01, -9.018e-02, -1.477e-01, -3.033e-01, -1.501e-01, 5.032e-02, -2.488e-01, -1.183e-01, -4.715e-03, -9.155e-04, 1.007e-03, 3.462e-02, -7.236e-02), r);\n\tr = MulAdd(s4_3, M4(2.654e-02, -1.238e-01, -8.066e-02, -5.186e-02, -6.032e-01, 3.248e-01, 6.459e-02, -2.177e-01, -5.860e-02, -9.400e-02, 2.884e-02, 5.215e-02, -8.824e-02, -2.220e-03, 2.254e-02, 6.366e-02), r);\n\tr = MulAdd(s4_4, M4(-3.236e-01, 5.681e-01, 1.250e-01, 1.640e-03, 4.444e-01, -2.916e-02, -3.283e-01, 6.014e-01, 8.423e-02, -1.713e-01, -9.128e-02, 2.059e-02, 8.158e-02, -7.455e-02, -5.478e-02, -6.427e-02), r);\n\tr = MulAdd(s4_5, M4(2.456e-01, -2.188e-01, -4.943e-01, 1.680e-01, 1.525e-03, -2.317e-01, -6.046e-02, -8.908e-02, -1.479e-02, 1.991e-01, 2.361e-01, -1.998e-02, -2.287e-02, 1.821e-02, -8.832e-02, 3.747e-02), r);\n\tr = MulAdd(s4_6, M4(-1.173e-01, 3.572e-02, 5.401e-02, 9.243e-02, -3.274e-01, -2.456e-02, 2.820e-02, -7.847e-01, -4.977e-02, 9.341e-03, 4.813e-03, 1.187e-01, -7.300e-02, 4.657e-02, 3.412e-02, 7.358e-02), r);\n\tr = MulAdd(s4_7, M4(1.495e-01, 8.350e-03, 2.992e-01, 2.885e-01, 3.542e-01, 8.891e-02, -4.413e-01, -3.464e-01, 5.170e-02, -7.054e-03, -1.080e-01, -1.595e-01, 2.983e-02, 7.148e-03, -7.949e-02, -1.909e-02), r);\n\tr = MulAdd(s4_8, M4(1.172e-03, 4.500e-02, -2.422e-01, 1.899e-02, 1.485e-01, -6.020e-02, 7.405e-02, 2.323e-02, 4.174e-02, 4.857e-02, 9.561e-02, 3.943e-02, 4.867e-02, 4.024e-02, 1.465e-01, 1.642e-02), r);\n\tr = MulAdd(s5_0, M4(1.130e-01, 5.549e-02, 1.454e-01, -8.837e-02, -4.060e-02, -1.125e-02, -5.483e-02, -8.110e-02, 1.469e-01, -2.157e-01, 1.990e-02, -5.508e-02, 4.400e-01, 6.614e-01, -2.171e-01, 1.001e+00), r);\n\tr = MulAdd(s5_1, M4(-5.725e-02, -2.493e-01, -3.369e-01, -1.876e-01, 3.814e-02, -1.004e-02, 1.808e-01, -2.036e-02, 4.590e-02, -8.456e-02, 4.353e-01, 1.158e-01, 2.519e-01, -6.799e-02, 1.615e-01, -4.632e-01), r);\n\tr = MulAdd(s5_2, M4(1.155e-01, 1.853e-01, 1.455e-01, 2.910e-02, -4.775e-02, -8.169e-03, -1.597e-01, -2.954e-02, -1.888e-01, 7.739e-02, -2.427e-01, 1.965e-01, -5.393e-01, -6.719e-01, 3.822e-01, -5.405e-01), r);\n\tr = MulAdd(s5_3, M4(-1.053e-01, -2.010e-01, 4.452e-02, 1.220e-01, -1.387e-01, -1.663e-02, 6.420e-02, 5.683e-02, 1.482e-02, -1.238e-01, -5.976e-02, 9.798e-02, 1.887e-01, 2.244e-01, -1.055e-01, 8.778e-01), r);\n\tr = MulAdd(s5_4, M4(2.642e-01, -2.471e-01, 1.213e-01, -4.243e-03, 2.136e-01, -1.197e-01, -1.370e-01, 1.747e-01, -1.902e-01, 4.095e-01, 2.239e-01, -1.064e-01, -1.516e+00, -5.901e-01, -7.535e-01, -9.025e-01), r);\n\tr = MulAdd(s5_5, M4(1.336e-01, -1.581e-01, 4.231e-01, -5.318e-03, -6.304e-02, 1.581e-02, 1.323e-01, -1.488e-02, -4.654e-02, -1.028e-01, -2.243e-01, -6.142e-03, -4.791e-02, 8.956e-01, 8.111e-01, -6.925e-01), r);\n\tr = MulAdd(s5_6, M4(7.804e-02, -9.557e-03, 4.499e-02, 4.405e-02, -6.914e-02, 4.490e-02, 9.597e-02, -1.751e-01, -6.983e-02, -1.291e-01, 1.312e-02, 1.856e-01, 4.377e-01, 3.248e-01, 5.635e-01, 3.066e-02), r);\n\tr = MulAdd(s5_7, M4(-3.601e-02, -4.945e-02, -3.836e-01, -1.191e-01, -4.540e-03, 1.375e-02, -6.256e-02, -6.577e-02, -1.628e-01, -2.256e-02, 2.093e-01, 2.254e-01, 2.224e-01, 2.670e-01, 4.099e-01, 5.051e-02), r);\n\tr = MulAdd(s5_8, M4(-1.848e-02, 1.601e-01, 2.141e-01, -5.077e-02, 6.266e-02, 3.822e-02, -3.642e-02, -1.121e-02, -6.476e-02, -1.910e-01, -1.888e-02, -1.003e-01, 2.444e-01, 4.690e-01, -2.952e-01, 7.102e-02), r);\n\tr = MulAdd(s6_0, M4(7.241e-02, -4.093e-02, 2.419e-02, 2.711e-02, 2.755e-01, -1.572e-01, -8.057e-02, -7.000e-03, 1.500e-02, 3.219e-02, 2.177e-03, -1.652e-02, -1.219e-02, 3.024e-01, 1.092e-01, -9.745e-03), r);\n\tr = MulAdd(s6_1, M4(-1.114e-01, 1.200e-02, 3.204e-04, -2.240e-02, -2.077e-01, 9.453e-02, 1.596e-02, -4.109e-02, -1.172e-02, 1.225e-01, -3.765e-02, -1.096e-02, 3.648e-02, 2.852e-01, -7.502e-02, -1.534e-01), r);\n\tr = MulAdd(s6_2, M4(1.341e-01, 2.011e-01, -2.868e-02, 1.322e-01, -5.997e-02, 8.211e-02, 1.455e-03, -1.164e-01, -1.329e-01, -3.898e-02, -8.764e-02, 2.576e-02, -3.821e-03, -4.150e-01, -4.675e-01, 2.473e-01), r);\n\tr = MulAdd(s6_3, M4(-3.463e-03, 7.775e-02, 6.833e-02, 2.438e-02, 1.574e-01, -1.770e-01, -9.328e-02, 1.130e-03, 1.146e-01, 4.248e-02, 6.905e-03, -1.858e-01, -6.367e-02, -6.603e-02, 4.715e-02, -5.800e-02), r);\n\tr = MulAdd(s6_4, M4(-2.588e-02, 5.901e-02, -3.184e-02, 1.589e-02, -1.631e-01, 8.692e-02, 1.868e-01, 1.412e-01, 3.177e-01, -3.267e-01, -1.985e-02, -3.030e-01, 3.703e-02, -2.103e-01, 1.394e-03, -8.820e-02), r);\n\tr = MulAdd(s6_5, M4(7.007e-02, 1.945e-02, -1.305e-01, -8.563e-02, 9.467e-02, -2.749e-03, -2.522e-01, 4.262e-02, -3.563e-01, -2.511e-01, 2.137e-01, -1.280e-01, 1.020e-01, 1.425e-01, 4.868e-03, 8.239e-02), r);\n\tr = MulAdd(s6_6, M4(5.757e-02, 1.342e-02, 1.885e-02, -1.555e-02, 2.024e-01, 1.458e-02, 5.292e-02, -2.133e-01, -1.199e-02, 6.484e-02, 6.354e-02, -1.145e-01, -7.400e-02, 5.425e-02, 1.474e-02, -5.936e-02), r);\n\tr = MulAdd(s6_7, M4(-4.723e-02, -3.575e-02, -2.449e-02, 4.364e-02, 4.840e-02, 1.412e-01, 5.925e-02, 2.112e-01, -1.469e-01, -1.052e-01, 1.318e-01, -9.390e-02, -1.663e-01, 4.892e-02, 6.059e-02, 1.907e-02), r);\n\tr = MulAdd(s6_8, M4(1.405e-01, -8.783e-02, 2.731e-02, -2.606e-02, -1.139e-01, 1.528e-01, -1.996e-01, -3.131e-02, -1.743e-01, -1.660e-01, -1.564e-02, -6.395e-02, -2.327e-01, 1.027e-01, 1.346e-01, 2.954e-01), r);\n\tr = MulAdd(s7_0, M4(-2.209e-01, 3.902e-01, -1.621e-01, 6.093e-02, -1.620e-01, -3.094e-01, 2.904e-01, 8.403e-02, 3.714e-02, 1.173e-01, 2.281e-03, 1.580e-01, -1.034e-01, 1.150e-01, 5.607e-02, 5.691e-02), r);\n\tr = MulAdd(s7_1, M4(5.886e-01, -3.046e-01, 3.721e-01, -1.162e-01, 6.265e-02, -1.670e-01, 7.349e-02, -3.569e-02, 7.806e-02, 2.046e-03, -6.049e-03, -2.090e-01, 3.608e-02, -1.603e-01, 8.953e-02, -1.140e-01), r);\n\tr = MulAdd(s7_2, M4(-2.383e-01, -3.387e-01, -9.132e-04, -5.473e-01, -3.308e-03, -2.049e-01, 9.447e-03, -3.845e-02, -5.569e-02, -2.745e-01, -6.863e-02, 2.397e-01, 2.584e-01, 3.671e-01, 4.496e-01, -1.728e-01), r);\n\tr = MulAdd(s7_3, M4(9.881e-02, 4.344e-01, 1.883e-01, 1.685e-02, -2.303e-01, -7.714e-02, -1.158e-01, 7.909e-03, -3.606e-02, 2.296e-02, 2.534e-02, 1.496e-01, -7.556e-03, -9.981e-03, 6.978e-02, 6.716e-02), r);\n\tr = MulAdd(s7_4, M4(3.535e-01, -2.261e-01, -3.110e-01, -1.825e-01, 1.536e-01, 7.248e-02, -1.235e-02, -1.980e-01, -6.042e-02, -1.250e-01, -5.143e-02, 2.953e-01, -1.616e-01, 9.051e-02, 1.251e-01, 2.020e-02), r);\n\tr = MulAdd(s7_5, M4(-3.339e-01, -1.343e-01, 1.744e-01, 2.897e-01, 6.002e-02, -4.475e-02, 5.910e-02, -1.401e-01, -7.893e-02, 1.294e-01, -7.917e-02, -3.911e-02, 2.927e-02, -2.521e-01, 1.366e-01, 2.207e-01), r);\n\tr = MulAdd(s7_6, M4(8.209e-02, -5.761e-02, 5.538e-02, 1.485e-01, -4.020e-02, 2.563e-01, 7.761e-02, -2.641e-02, 1.096e-01, 6.517e-02, 7.305e-02, 6.710e-02, 2.998e-02, -8.325e-02, -5.355e-02, -3.583e-03), r);\n\tr = MulAdd(s7_7, M4(1.182e-01, -6.605e-02, -1.125e-01, -2.782e-01, 1.988e-01, 6.287e-02, 1.677e-01, 7.684e-02, 9.364e-02, 1.821e-01, -1.918e-01, 1.370e-01, -2.287e-01, 4.243e-02, 3.614e-02, -1.039e-01), r);\n\tr = MulAdd(s7_8, M4(-7.800e-02, -1.585e-02, 7.305e-02, -1.289e-01, 2.250e-03, -1.136e-02, -1.836e-01, -3.147e-02, 1.269e-01, -3.905e-02, -7.012e-02, 2.610e-01, 1.584e-01, -3.807e-02, -1.562e-01, -3.618e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.553e-03, 1.851e-02, -1.475e-03, -2.046e-03 };\n\tr = MulAdd(s0_0, M4(1.493e-01, -1.360e-03, 1.121e-02, -2.183e-01, 1.482e-01, 1.005e-01, 2.226e-04, 2.673e-02, -6.415e-02, 1.177e-01, 1.227e-01, -7.412e-03, -6.499e-02, 9.640e-02, -6.468e-02, -7.867e-02), r);\n\tr = MulAdd(s0_1, M4(5.620e-02, 1.236e-01, 2.228e-01, -1.802e-01, -5.798e-02, 4.350e-02, 2.388e-01, 3.069e-02, -2.787e-01, 3.844e-01, 8.522e-02, 1.007e-01, -2.076e-02, 8.274e-02, 1.084e-01, -5.538e-02), r);\n\tr = MulAdd(s0_2, M4(-1.091e-01, 1.605e-01, -3.383e-02, -2.930e-02, 5.375e-02, -1.329e-02, 2.408e-01, -8.769e-02, -1.789e-02, 2.825e-01, -2.359e-02, -4.484e-02, -9.254e-02, 1.488e-02, 4.321e-03, 7.121e-02), r);\n\tr = MulAdd(s0_3, M4(-1.047e-01, -3.072e-01, -1.337e-01, -2.016e-01, -8.555e-02, 8.769e-02, -2.449e-02, -2.339e-01, -6.242e-02, 2.778e-01, 3.091e-02, 2.197e-01, 2.342e-01, -2.435e-01, 4.551e-02, -2.338e-02), r);\n\tr = MulAdd(s0_4, M4(3.583e-01, 2.164e-01, 3.505e-02, 1.225e-01, 7.236e-03, -8.012e-02, 4.456e-01, -7.709e-01, 7.706e-02, 1.436e-01, 3.503e-01, -2.874e-01, -8.961e-02, 1.931e-01, -7.575e-02, 3.137e-02), r);\n\tr = MulAdd(s0_5, M4(2.393e-01, 4.598e-01, -4.286e-01, -1.308e-01, -2.729e-01, 2.429e-02, 1.458e-01, -2.588e-01, -4.170e-01, 6.320e-01, -2.866e-01, 2.631e-01, 1.276e-01, 5.969e-02, -1.602e-01, -5.755e-02), r);\n\tr = MulAdd(s0_6, M4(-3.896e-01, -2.052e-01, 4.924e-02, -3.981e-02, 9.718e-02, 6.549e-02, -8.761e-02, -3.933e-01, -4.399e-02, -4.761e-03, 9.525e-02, -1.152e-01, -1.571e-01, 2.094e-02, -6.634e-02, 4.642e-02), r);\n\tr = MulAdd(s0_7, M4(1.463e-03, 6.666e-02, 4.664e-01, -2.558e-01, -2.090e-01, -1.326e-01, -3.289e-01, -2.566e-01, -2.533e-01, 2.534e-01, 1.027e-01, 2.202e-01, -2.342e-01, -8.858e-03, -1.037e-01, 1.784e-01), r);\n\tr = MulAdd(s0_8, M4(1.968e-01, -1.747e-02, 3.331e-01, 1.073e-01, -1.047e-01, 2.814e-03, -6.119e-02, -8.912e-02, -1.593e-01, 2.664e-01, 1.753e-01, 9.957e-02, -1.679e-02, 1.427e-01, 1.291e-01, 6.444e-02), r);\n\tr = MulAdd(s1_0, M4(9.660e-02, 3.016e-02, 4.277e-02, -4.001e-02, 8.294e-02, -5.211e-02, 1.711e-03, -3.301e-02, 2.325e-01, -5.042e-02, -1.068e-01, 1.108e-01, 1.222e-03, -1.030e-01, 1.842e-01, -1.213e-01), r);\n\tr = MulAdd(s1_1, M4(3.118e-02, -1.874e-02, -1.168e-02, 3.724e-02, -5.922e-02, -3.813e-02, 6.865e-02, 9.811e-02, 3.009e-01, -1.214e-01, -1.653e-01, -1.361e-02, -9.460e-02, -4.843e-01, -1.923e-01, -4.082e-02), r);\n\tr = MulAdd(s1_2, M4(-4.070e-02, -6.820e-02, -4.630e-02, 3.216e-02, 1.371e-02, 1.069e-01, 7.885e-02, -1.577e-02, -2.718e-02, -4.756e-01, -4.672e-03, -2.539e-01, 1.984e-02, 3.908e-02, -6.613e-02, 8.673e-02), r);\n\tr = MulAdd(s1_3, M4(-3.718e-02, 6.549e-02, 1.625e-02, 2.071e-01, -6.907e-02, 6.928e-02, -1.844e-01, -1.591e-02, 1.394e-01, -1.004e-02, 1.170e-01, 3.020e-01, 5.181e-02, -5.939e-02, -5.880e-02, 7.376e-02), r);\n\tr = MulAdd(s1_4, M4(1.063e-01, -1.026e-01, 1.934e-01, -2.595e-02, 1.901e-01, -1.462e-01, -5.239e-01, 8.369e-02, 1.658e-01, -2.750e-01, 1.504e-02, -1.351e-01, 4.891e-04, -1.481e-01, 5.045e-02, 1.154e-01), r);\n\tr = MulAdd(s1_5, M4(-1.030e-01, -1.654e-01, 1.218e-01, 2.341e-02, 9.236e-02, 3.391e-01, -3.344e-01, 7.693e-02, -3.664e-02, -1.771e-01, -3.157e-01, -1.499e-01, 3.311e-02, -1.792e-01, 2.381e-01, 1.076e-01), r);\n\tr = MulAdd(s1_6, M4(7.149e-02, -4.252e-02, -1.031e-01, -1.888e-01, -1.277e-01, -5.187e-03, 2.521e-01, -8.569e-02, 2.787e-02, -1.504e-01, -4.477e-02, -1.184e-01, 4.185e-01, -4.126e-02, 2.010e-01, -4.618e-02), r);\n\tr = MulAdd(s1_7, M4(-6.966e-03, -5.100e-02, -1.230e-01, -2.367e-01, 4.423e-02, 3.513e-02, 2.033e-01, 3.137e-01, -6.549e-02, -1.007e-01, -1.392e-01, 9.041e-02, -1.890e-01, -2.362e-01, 3.349e-01, 2.219e-01), r);\n\tr = MulAdd(s1_8, M4(4.125e-02, 1.474e-01, -1.518e-01, 1.076e-01, 4.368e-02, -2.465e-01, 1.384e-01, -1.506e-01, 1.370e-01, 1.435e-02, -2.052e-01, -7.013e-03, -2.786e-01, -1.330e-01, -2.805e-01, -1.722e-01), r);\n\tr = MulAdd(s2_0, M4(2.952e-01, 4.441e-02, -4.741e-01, 4.375e-01, 2.978e-01, -7.597e-02, 1.013e-01, 4.516e-02, -2.158e-01, -1.479e-01, 1.699e-01, -9.469e-02, 1.567e-01, 6.033e-02, -4.819e-02, 2.453e-02), r);\n\tr = MulAdd(s2_1, M4(4.749e-01, 2.013e-01, 1.305e-01, -4.380e-02, 2.683e-01, -1.753e-01, -7.340e-02, -1.215e-01, -2.864e-01, -2.927e-01, -6.246e-02, 1.608e-01, -2.835e-01, 8.082e-03, 5.970e-02, 2.425e-01), r);\n\tr = MulAdd(s2_2, M4(1.911e-01, -3.841e-02, 1.451e-02, -1.175e-01, 4.068e-02, -1.027e-01, 5.235e-02, 3.985e-02, 2.603e-02, -3.411e-03, -4.188e-03, -3.843e-02, -4.186e-02, -3.254e-01, 1.096e-01, -8.038e-03), r);\n\tr = MulAdd(s2_3, M4(2.730e-01, 8.854e-02, 3.190e-01, 3.133e-01, 1.826e-02, 6.850e-02, -3.333e-02, 1.059e-01, 6.928e-02, -1.145e-02, 2.283e-01, -8.865e-02, 2.391e-01, -1.820e-01, -3.573e-02, -1.730e-01), r);\n\tr = MulAdd(s2_4, M4(4.755e-01, -1.270e-01, 4.131e-01, 2.268e-01, 2.208e-01, -3.773e-01, 1.155e-01, -1.669e-01, 2.618e-01, -6.293e-02, -4.787e-02, -1.925e-01, 6.307e-01, 2.681e-01, -2.374e-01, -8.996e-02), r);\n\tr = MulAdd(s2_5, M4(2.443e-01, -2.722e-01, 8.635e-02, -1.306e-01, 3.156e-02, 1.101e-01, -3.838e-01, 8.736e-02, 1.960e-02, -1.844e-01, 3.986e-04, -1.759e-01, -7.092e-03, -3.461e-01, -2.356e-01, 1.175e-01), r);\n\tr = MulAdd(s2_6, M4(-2.070e-02, 1.906e-01, -3.961e-01, 5.045e-02, -1.113e-01, -3.115e-02, -2.427e-01, 8.359e-02, 6.035e-02, -2.168e-02, -7.367e-02, 1.275e-01, 1.385e-01, -4.470e-02, -8.486e-03, 2.152e-01), r);\n\tr = MulAdd(s2_7, M4(1.535e-01, 1.293e-01, 3.150e-03, 1.369e-01, -3.304e-02, 7.236e-03, -1.207e-02, 3.864e-02, 1.884e-02, -3.147e-01, 5.685e-02, 1.124e-01, 1.616e-01, 6.865e-02, -2.169e-02, 1.214e-01), r);\n\tr = MulAdd(s2_8, M4(-2.751e-02, 1.530e-02, -2.166e-01, 1.189e-01, 1.530e-01, -4.993e-02, -2.652e-02, -3.569e-02, -5.124e-02, -2.675e-01, -1.650e-01, -1.609e-02, -9.086e-02, 3.321e-02, 7.116e-03, 8.445e-02), r);\n\tr = MulAdd(s3_0, M4(-1.433e-01, 2.111e-02, 8.117e-02, -2.792e-01, -4.618e-01, 2.032e-01, -8.773e-02, -1.422e-01, 1.648e-02, 2.203e-03, 2.217e-02, 1.057e-01, 1.814e-01, -3.271e-02, 5.886e-02, 1.601e-01), r);\n\tr = MulAdd(s3_1, M4(3.798e-02, -9.214e-02, 1.001e-01, -5.864e-02, -2.529e-01, 1.986e-01, 1.937e-01, 1.154e-01, -8.759e-02, 2.373e-01, -1.875e-01, -5.515e-02, -1.158e-02, 3.020e-01, -1.429e-01, 6.739e-03), r);\n\tr = MulAdd(s3_2, M4(-2.931e-02, 1.164e-01, 1.347e-01, 4.203e-02, -5.261e-02, 1.060e-01, 9.737e-02, -8.234e-02, -1.152e-01, 5.234e-02, 5.639e-02, 2.082e-02, 7.628e-02, 4.062e-02, -1.446e-01, -1.245e-01), r);\n\tr = MulAdd(s3_3, M4(3.235e-02, -1.423e-01, -2.326e-01, -1.616e-01, -6.639e-02, 1.896e-01, 1.743e-01, 7.735e-02, -1.749e-02, -6.962e-02, 1.095e-01, 2.082e-01, -1.188e-01, 6.600e-02, -3.677e-02, 2.052e-01), r);\n\tr = MulAdd(s3_4, M4(-2.059e-01, 1.696e-01, -4.044e-01, 1.401e-01, -1.428e-01, 4.176e-01, -2.219e-03, 6.759e-02, 1.705e-01, 1.514e-01, 3.040e-01, -2.451e-01, -8.452e-02, -2.797e-01, 2.688e-01, 4.933e-02), r);\n\tr = MulAdd(s3_5, M4(1.261e-01, 1.920e-02, -1.831e-01, -7.127e-02, -2.744e-01, 1.421e-01, 1.497e-01, 1.165e-01, -9.432e-02, 8.987e-02, -6.732e-01, 1.422e-01, 7.804e-02, -7.633e-03, 2.764e-01, 1.964e-02), r);\n\tr = MulAdd(s3_6, M4(-1.383e-02, 5.891e-02, 1.599e-01, -7.055e-02, -1.188e-01, 1.840e-02, 1.678e-01, -2.558e-02, 1.142e-01, 9.206e-02, -7.608e-02, 1.032e-01, 3.337e-02, -3.068e-02, -8.554e-02, -1.006e-01), r);\n\tr = MulAdd(s3_7, M4(5.861e-02, 4.090e-02, 2.595e-01, 1.175e-01, -3.135e-01, -4.337e-02, -4.331e-02, -2.942e-02, -1.244e-01, 2.569e-01, 9.823e-02, 1.764e-01, -8.771e-02, -1.305e-01, -1.500e-01, -3.085e-01), r);\n\tr = MulAdd(s3_8, M4(2.161e-02, -6.209e-02, 1.138e-01, 6.710e-02, -9.868e-02, 5.677e-02, 1.302e-01, -4.357e-02, 4.976e-03, 1.871e-01, 1.746e-01, 1.241e-02, -4.849e-02, 5.190e-02, -2.857e-02, -6.322e-02), r);\n\tr = MulAdd(s4_0, M4(-4.927e-02, -4.089e-02, 8.644e-03, 5.684e-02, -5.871e-02, -5.351e-02, 2.254e-02, -3.264e-02, 1.201e-01, -1.862e-01, -2.446e-02, -3.252e-02, -2.362e-02, 4.419e-02, 3.543e-02, 2.515e-02), r);\n\tr = MulAdd(s4_1, M4(8.533e-02, 9.602e-02, -4.276e-02, 2.019e-02, 6.095e-02, 2.188e-01, 5.990e-02, 1.652e-01, 1.754e-01, -5.736e-02, 6.605e-02, -1.228e-01, -9.409e-02, 1.920e-02, 3.324e-02, 2.614e-02), r);\n\tr = MulAdd(s4_2, M4(-1.835e-02, -3.571e-02, -5.266e-02, 4.572e-02, 1.883e-01, -1.398e-01, -2.163e-01, 1.244e-02, 1.965e-01, 2.415e-01, -2.188e-01, -4.871e-03, -5.044e-03, -1.593e-02, 1.016e-02, -8.609e-02), r);\n\tr = MulAdd(s4_3, M4(-7.819e-03, 1.220e-01, -2.014e-01, 1.773e-01, -5.222e-01, -5.908e-01, 2.559e-02, -1.676e-01, 1.346e-02, 1.334e-01, -3.624e-01, -9.509e-02, 2.341e-02, 2.038e-02, -7.312e-03, -5.461e-03), r);\n\tr = MulAdd(s4_4, M4(1.769e-01, 1.743e-01, 7.910e-02, 2.040e-01, -2.588e-01, 2.454e-01, 2.247e-01, -3.087e-01, -7.547e-02, -4.226e-02, -2.001e-01, 5.399e-01, -1.347e-02, -3.727e-02, 8.474e-02, 3.298e-02), r);\n\tr = MulAdd(s4_5, M4(-1.075e-02, -2.296e-01, 1.972e-01, 4.847e-02, -9.768e-02, -9.002e-02, -1.535e-01, -9.385e-02, 1.167e-01, 3.740e-02, 4.510e-01, -3.662e-02, 2.415e-01, 2.915e-02, 8.082e-02, -4.644e-02), r);\n\tr = MulAdd(s4_6, M4(4.066e-02, 1.286e-02, 7.837e-02, -3.065e-01, -3.700e-01, -5.469e-01, 2.814e-01, 3.348e-01, 2.184e-03, -2.622e-02, -7.294e-02, -7.004e-02, 5.945e-02, -4.840e-02, -5.578e-02, -4.259e-02), r);\n\tr = MulAdd(s4_7, M4(4.334e-01, -9.103e-02, -3.913e-02, -7.487e-01, -4.837e-02, -2.505e-01, -4.386e-01, -7.301e-02, -1.304e-01, 1.597e-01, 1.349e-01, -1.269e-01, -3.156e-02, -8.233e-02, -8.439e-02, 6.437e-02), r);\n\tr = MulAdd(s4_8, M4(-4.428e-02, -1.736e-01, 4.854e-02, 1.284e-02, -3.662e-01, 2.678e-02, 5.405e-01, 2.903e-01, -5.651e-02, 9.120e-02, -1.013e-01, 1.912e-01, -4.199e-02, -8.293e-02, -6.620e-02, 2.943e-02), r);\n\tr = MulAdd(s5_0, M4(-1.987e-01, -1.547e-01, -5.561e-02, -8.342e-02, 1.514e-02, 5.663e-02, 2.794e-02, 1.212e-02, -2.875e-01, 6.254e-02, 7.387e-02, -1.633e-01, 8.085e-01, 3.431e-01, 3.014e-01, 2.745e-01), r);\n\tr = MulAdd(s5_1, M4(-2.051e-01, -6.087e-02, 5.766e-02, -7.692e-02, -1.024e-01, -4.273e-02, -1.372e-01, 4.320e-02, -1.518e-01, 1.360e-01, 8.103e-02, -1.821e-01, -2.056e-01, -2.549e-01, 2.046e-01, 5.617e-01), r);\n\tr = MulAdd(s5_2, M4(-1.728e-01, 4.100e-02, 9.013e-02, -1.124e-01, 3.265e-02, 2.598e-02, 9.202e-02, 1.273e-02, -2.965e-01, 1.821e-01, 6.122e-02, -8.528e-02, 2.803e-01, -1.811e-01, 1.370e-01, 2.149e-01), r);\n\tr = MulAdd(s5_3, M4(-1.312e-01, -3.662e-01, 8.119e-02, -2.271e-01, -4.113e-02, 2.732e-02, -1.767e-03, -2.948e-03, -9.039e-02, -7.144e-02, -1.613e-01, -8.596e-02, 8.690e-01, 4.897e-01, -1.207e+00, 9.880e-02), r);\n\tr = MulAdd(s5_4, M4(-2.735e-01, -1.183e-01, -4.351e-02, -3.761e-01, 1.948e-01, -1.191e-01, 1.629e-01, -1.778e-01, -3.398e-01, 2.488e-01, -1.947e-02, -1.321e-01, 6.902e-01, 5.633e-01, -1.232e-01, 4.927e-01), r);\n\tr = MulAdd(s5_5, M4(2.976e-01, 2.988e-01, -6.464e-02, -9.545e-02, -6.653e-02, 9.741e-02, -4.290e-02, 4.555e-02, -2.893e-02, 1.308e-01, 5.605e-02, -6.064e-02, -3.114e-01, -8.178e-01, 3.104e-01, 2.635e-02), r);\n\tr = MulAdd(s5_6, M4(-8.242e-02, -1.583e-01, -1.901e-01, 1.168e-01, -2.350e-02, 6.218e-03, 4.620e-02, 6.105e-02, -1.188e-01, 4.919e-02, 1.486e-01, 1.242e-01, 7.847e-01, 3.252e-02, -5.260e-01, -1.583e-01), r);\n\tr = MulAdd(s5_7, M4(-4.103e-01, -1.964e-01, 2.185e-01, 8.644e-02, -3.499e-02, 2.093e-01, -1.213e-01, 1.163e-01, -3.420e-01, 2.604e-02, 6.462e-02, 1.924e-01, -4.559e-01, 1.323e-01, 5.912e-01, -1.579e+00), r);\n\tr = MulAdd(s5_8, M4(-2.548e-02, -4.858e-02, -3.874e-02, -1.303e-01, -3.209e-02, -1.387e-01, -5.796e-02, -1.124e-01, 2.226e-02, 2.233e-02, -6.212e-02, 1.973e-01, -2.222e-01, 2.089e-01, -9.420e-01, -9.306e-01), r);\n\tr = MulAdd(s6_0, M4(-1.511e-02, 4.097e-03, -4.216e-02, 7.326e-03, -2.635e-01, 1.710e-01, 1.514e-01, -5.487e-02, 4.944e-02, 2.235e-02, -5.493e-02, 1.125e-02, 1.411e-02, -8.220e-02, 1.317e-01, 9.543e-02), r);\n\tr = MulAdd(s6_1, M4(-1.996e-01, 4.866e-02, -8.690e-02, 7.167e-02, -5.474e-01, 4.555e-01, 1.259e-01, -1.487e-01, 5.495e-02, 5.494e-02, 1.018e-02, 3.303e-02, -3.038e-01, -1.981e-01, 2.573e-02, -1.666e-01), r);\n\tr = MulAdd(s6_2, M4(-1.510e-01, -1.444e-01, 1.912e-01, 2.293e-02, -5.680e-02, -1.020e-02, 2.478e-03, 8.278e-02, -4.629e-02, 1.199e-01, -1.316e-02, 1.723e-02, 1.025e-01, -3.087e-01, -1.497e-01, -2.983e-01), r);\n\tr = MulAdd(s6_3, M4(7.026e-02, 8.863e-02, -7.994e-03, 7.872e-02, -1.736e-01, 3.692e-02, 1.725e-01, 2.365e-01, 2.483e-02, 5.723e-02, 7.511e-02, 2.707e-02, -1.319e-01, -1.479e-01, 1.642e-01, -1.211e-02), r);\n\tr = MulAdd(s6_4, M4(1.314e-01, -1.694e-01, 1.535e-01, -9.212e-02, -5.466e-02, -2.357e-03, 1.302e-01, 8.194e-02, 1.791e-01, -8.864e-02, -1.744e-01, -3.018e-01, -4.210e-01, -1.349e-01, 1.893e-02, -4.113e-01), r);\n\tr = MulAdd(s6_5, M4(4.086e-02, 4.316e-02, -2.262e-01, -5.058e-02, -2.932e-01, 4.587e-02, -3.250e-02, -4.383e-02, -2.157e-01, 2.700e-01, -2.430e-01, 7.205e-02, -5.680e-01, -3.811e-01, 2.149e-01, -2.573e-01), r);\n\tr = MulAdd(s6_6, M4(1.078e-02, -3.045e-02, 2.199e-02, -4.741e-03, 1.188e-01, 5.412e-02, -7.901e-02, -3.999e-02, 8.803e-02, -3.155e-02, 4.958e-02, 2.134e-02, -7.579e-02, -8.130e-02, -5.317e-02, -5.295e-02), r);\n\tr = MulAdd(s6_7, M4(-1.196e-01, -1.957e-01, -7.800e-02, 9.788e-04, 2.797e-02, 9.152e-02, 1.106e-01, -8.070e-02, -2.925e-02, -5.609e-02, -2.472e-01, 1.509e-01, -2.631e-01, 7.884e-02, 1.909e-02, 1.659e-02), r);\n\tr = MulAdd(s6_8, M4(1.074e-01, 6.685e-02, 8.382e-02, 1.438e-03, -1.291e-02, 8.508e-02, 8.563e-02, -3.086e-03, 2.686e-01, 7.002e-02, 2.222e-01, -3.415e-02, -1.489e-01, -1.043e-01, 1.182e-02, 2.139e-01), r);\n\tr = MulAdd(s7_0, M4(-1.145e-01, 2.744e-01, -2.056e-01, 1.062e-02, 3.849e-01, -1.757e-01, -4.004e-01, 1.634e-01, -9.739e-02, -2.396e-02, 4.497e-02, -1.056e-01, 1.486e-03, 4.912e-02, -1.418e-02, 2.096e-01), r);\n\tr = MulAdd(s7_1, M4(1.714e-01, -4.460e-03, -1.904e-01, 5.127e-02, 4.457e-01, -2.005e-01, -2.399e-01, 2.293e-01, 6.236e-03, -7.333e-02, -1.223e-01, -8.620e-02, 1.111e-03, -1.813e-03, -7.598e-02, 4.735e-02), r);\n\tr = MulAdd(s7_2, M4(-2.502e-02, -3.663e-01, -8.110e-01, 3.594e-01, 2.693e-01, -1.316e-01, -1.044e-01, 5.490e-02, -7.955e-03, 4.426e-02, 6.322e-02, -3.838e-02, 7.466e-02, 1.846e-01, 1.519e-01, 8.454e-03), r);\n\tr = MulAdd(s7_3, M4(-7.352e-03, 2.623e-01, 3.130e-01, -3.261e-01, 3.505e-01, -1.179e-01, -2.721e-01, 8.523e-02, -6.879e-02, -1.767e-02, 5.651e-02, -8.914e-03, 2.447e-01, -1.083e-01, 4.430e-02, 7.107e-02), r);\n\tr = MulAdd(s7_4, M4(-1.929e-02, 3.448e-01, 2.304e-01, 2.651e-02, 2.087e-01, 1.053e-01, 1.363e-01, -3.634e-01, -1.015e-01, -2.363e-01, 2.921e-01, -2.386e-01, 2.457e-01, 3.764e-01, 3.237e-02, 5.597e-01), r);\n\tr = MulAdd(s7_5, M4(-1.553e-01, -1.074e-01, 5.874e-01, -2.274e-01, 2.114e-01, -6.435e-02, -2.172e-01, -2.761e-02, -3.907e-01, 3.560e-01, -2.775e-01, 6.104e-02, 3.689e-01, -1.453e-02, -1.728e-01, 7.566e-03), r);\n\tr = MulAdd(s7_6, M4(-7.675e-02, -1.726e-01, -6.876e-02, 4.848e-03, 5.463e-02, -1.048e-01, -6.406e-02, -2.276e-01, -1.039e-01, -2.836e-02, -5.157e-02, 5.531e-02, -3.366e-02, -7.267e-02, 1.411e-02, 1.252e-01), r);\n\tr = MulAdd(s7_7, M4(-1.270e-01, -4.631e-02, 1.328e-02, 2.479e-02, 3.272e-01, -2.270e-01, 5.842e-02, -3.250e-01, -2.514e-01, 2.098e-02, 3.925e-02, 4.051e-01, 1.776e-03, 1.506e-01, -1.081e-01, 6.672e-02), r);\n\tr = MulAdd(s7_8, M4(-5.914e-02, 3.369e-02, -3.859e-01, 5.139e-02, 1.176e-02, -2.484e-01, -2.014e-01, -9.925e-02, 8.024e-02, 2.293e-01, 1.120e-01, 3.000e-01, -1.269e-02, 1.858e-01, 3.387e-02, 7.079e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.098e-02, 3.454e-03, -5.766e-03, 4.181e-02 };\n\tr = MulAdd(s0_0, M4(-1.301e-01, 1.852e-01, 5.814e-02, 1.602e-01, -7.324e-02, -9.636e-03, -3.789e-02, 6.091e-02, 2.139e-02, 1.489e-01, -5.092e-02, -2.141e-01, 1.817e-02, -5.365e-02, -8.297e-03, -1.622e-01), r);\n\tr = MulAdd(s0_1, M4(-2.478e-01, 3.316e-02, 8.461e-02, 1.211e-01, -1.180e-01, 1.206e-02, 1.610e-02, -2.749e-01, 1.140e-01, 7.598e-03, -3.519e-02, -1.408e-01, -1.648e-02, -1.656e-02, -4.414e-02, 2.070e-02), r);\n\tr = MulAdd(s0_2, M4(-2.335e-02, 1.978e-01, -1.556e-02, 3.378e-02, -2.163e-01, 3.364e-01, 1.228e-01, 1.547e-02, -6.270e-02, -3.193e-02, 1.627e-01, 2.969e-02, 2.034e-02, 2.136e-02, 6.094e-02, -2.019e-02), r);\n\tr = MulAdd(s0_3, M4(1.285e-02, -2.024e-01, -9.700e-02, -1.794e-01, -9.623e-02, -9.618e-02, -9.907e-02, -9.705e-02, -2.150e-02, 1.495e-01, -4.000e-02, 1.222e-01, 2.313e-02, -6.182e-02, -2.520e-01, -3.130e-02), r);\n\tr = MulAdd(s0_4, M4(4.752e-01, 3.734e-01, 1.631e-01, 4.730e-01, -6.413e-02, -1.026e-01, -3.961e-01, -3.547e-01, -3.024e-03, -3.711e-02, -2.455e-01, -6.002e-02, -1.056e-01, -5.290e-02, 9.390e-02, -9.400e-02), r);\n\tr = MulAdd(s0_5, M4(-2.050e-01, 1.889e-01, 5.210e-02, -1.519e-01, -4.424e-01, 4.170e-01, 3.336e-01, 6.601e-02, -4.192e-02, 1.582e-01, 7.213e-01, -6.145e-02, 2.067e-02, 1.119e-01, 8.269e-02, 2.498e-02), r);\n\tr = MulAdd(s0_6, M4(6.317e-02, -2.393e-01, 2.097e-01, -3.241e-01, -5.513e-02, -2.993e-01, -3.327e-02, 1.146e-01, 6.658e-02, 2.526e-01, -6.466e-02, -1.299e-01, 1.189e-01, 1.805e-01, -1.025e-01, 4.052e-01), r);\n\tr = MulAdd(s0_7, M4(-1.485e-01, -3.282e-01, 2.939e-01, -1.965e-01, 1.870e-01, -8.957e-02, -1.142e-01, -3.095e-01, -1.417e-02, 1.559e-01, 4.212e-03, 1.039e-03, 2.103e-01, 1.226e-01, -1.062e-02, 3.177e-03), r);\n\tr = MulAdd(s0_8, M4(-4.186e-02, -2.353e-01, -3.995e-01, -3.152e-01, -1.573e-01, -1.809e-01, 5.544e-02, 1.379e-01, -8.439e-02, 4.880e-02, 2.083e-01, -2.285e-02, 3.872e-02, 2.384e-02, 1.582e-01, 3.685e-02), r);\n\tr = MulAdd(s1_0, M4(-2.870e-02, -2.180e-01, -3.956e-03, -6.426e-02, -7.369e-02, -5.972e-02, -5.140e-02, 5.628e-03, -5.322e-03, -5.234e-03, -6.372e-02, 7.234e-02, 1.971e-01, -4.791e-02, -1.424e-02, 1.053e-01), r);\n\tr = MulAdd(s1_1, M4(6.124e-02, -2.243e-03, 7.789e-02, -7.308e-02, 6.888e-02, -9.903e-02, -2.497e-03, -2.062e-01, 6.845e-02, 2.470e-01, 2.999e-02, -1.223e-01, 1.429e-01, -1.507e-01, -1.256e-01, 2.482e-02), r);\n\tr = MulAdd(s1_2, M4(2.098e-03, 2.680e-02, 1.280e-03, -4.057e-02, -9.606e-02, 1.380e-01, 6.146e-02, 1.155e-01, -2.300e-01, -4.105e-02, 6.834e-02, 8.465e-02, 9.438e-02, -4.055e-02, 6.837e-02, -7.285e-02), r);\n\tr = MulAdd(s1_3, M4(-1.040e-02, 1.511e-01, -4.298e-02, 1.217e-01, -3.000e-02, 8.181e-02, -8.391e-02, 1.223e-01, 2.920e-02, -1.869e-01, -3.919e-02, 6.057e-02, 1.891e-01, -3.193e-01, -2.273e-01, -5.798e-04), r);\n\tr = MulAdd(s1_4, M4(1.959e-01, -1.577e-01, -2.195e-01, -1.640e-01, 1.440e-01, -2.885e-01, -2.857e-01, 1.112e-01, 1.304e-01, -2.717e-01, -2.614e-01, 1.832e-01, 1.940e-02, 4.701e-02, 2.184e-01, -6.236e-02), r);\n\tr = MulAdd(s1_5, M4(-8.599e-02, 6.717e-02, -1.220e-02, 1.836e-01, 1.421e-01, -1.275e-01, 5.431e-01, -4.815e-02, -1.114e-01, -1.473e-01, 8.673e-01, 7.798e-03, 1.355e-01, 2.496e-02, 4.905e-02, 3.218e-03), r);\n\tr = MulAdd(s1_6, M4(4.089e-02, 3.901e-02, 5.964e-02, 1.996e-01, -7.805e-02, 8.634e-02, 1.071e-02, -2.466e-01, 2.620e-02, -1.834e-01, 1.571e-02, -4.377e-04, 1.694e-03, -3.362e-01, -9.583e-02, -2.825e-01), r);\n\tr = MulAdd(s1_7, M4(-8.871e-03, 1.092e-01, -1.994e-02, 1.509e-01, -7.954e-02, -3.180e-02, 6.564e-02, 2.146e-01, -3.940e-02, 9.707e-02, -5.112e-02, 1.443e-01, -1.240e-01, -1.050e-01, 3.472e-02, -1.069e-01), r);\n\tr = MulAdd(s1_8, M4(-1.782e-01, 6.332e-02, 1.005e-01, 6.335e-02, -3.707e-04, 2.747e-01, -1.506e-01, 1.424e-01, -1.282e-02, -3.532e-02, 1.548e-01, 1.675e-01, 2.869e-02, 5.486e-02, 2.176e-01, -6.712e-02), r);\n\tr = MulAdd(s2_0, M4(-1.412e-01, -3.098e-01, -7.445e-02, 2.157e-01, 5.311e-02, -1.558e-01, -8.965e-02, 4.372e-01, -9.685e-02, 1.470e-01, 1.126e-02, -2.712e-01, -6.178e-03, 2.177e-01, 9.057e-02, -3.586e-01), r);\n\tr = MulAdd(s2_1, M4(-2.887e-02, 3.857e-01, 1.478e-01, -3.073e-01, -4.715e-02, -3.539e-02, -3.963e-02, -5.781e-02, -6.861e-02, 2.639e-02, 6.041e-02, -1.550e-01, 2.678e-03, 2.058e-01, 1.584e-01, 2.845e-02), r);\n\tr = MulAdd(s2_2, M4(-5.053e-02, 2.012e-01, 7.816e-02, 1.918e-01, 3.118e-02, 4.426e-02, 8.575e-02, -7.318e-03, 7.795e-02, 1.365e-01, -3.814e-02, 4.892e-02, 1.396e-01, -2.441e-02, -1.398e-01, 1.301e-01), r);\n\tr = MulAdd(s2_3, M4(-3.261e-01, -5.362e-01, -6.300e-03, 3.624e-01, 5.769e-02, -8.803e-02, -1.381e-01, 1.369e-01, -1.077e-01, 1.248e-01, -1.380e-01, -1.420e-01, -1.239e-01, 1.671e-01, 9.395e-02, -7.019e-01), r);\n\tr = MulAdd(s2_4, M4(-3.974e-01, 2.763e-01, -1.879e-01, 4.564e-01, 1.173e-01, -1.006e-01, -3.845e-01, 2.435e-01, -2.412e-02, 2.398e-01, 1.796e-01, 1.459e-02, 4.543e-01, 1.174e-02, -2.342e-01, -9.092e-02), r);\n\tr = MulAdd(s2_5, M4(-2.089e-02, 1.043e-01, -1.193e-01, 2.741e-01, 3.587e-03, 1.636e-01, 2.701e-01, 1.616e-01, -6.077e-03, 6.642e-03, -1.240e-01, -2.768e-01, 1.194e-01, -2.036e-01, -3.423e-02, 1.648e-02), r);\n\tr = MulAdd(s2_6, M4(1.165e-01, -3.786e-01, 1.182e-01, 1.605e-01, 7.495e-02, -6.525e-02, -4.634e-02, -4.205e-02, 2.304e-03, -2.042e-01, -6.347e-02, -1.020e-01, 1.175e-01, 1.265e-01, -8.620e-02, 5.688e-03), r);\n\tr = MulAdd(s2_7, M4(-7.384e-03, -1.116e-01, -8.951e-02, 2.036e-01, -6.836e-02, -1.773e-01, 1.245e-01, 7.999e-02, 6.993e-02, 1.821e-01, 5.845e-02, -1.998e-01, 1.521e-01, 9.793e-02, 7.695e-02, 1.262e-01), r);\n\tr = MulAdd(s2_8, M4(-8.152e-02, 3.856e-02, -6.092e-02, 2.426e-01, 8.689e-02, -7.674e-04, 1.209e-01, -1.583e-01, -2.678e-02, 1.684e-01, -1.711e-01, -7.350e-03, 2.231e-01, -2.241e-01, 7.775e-02, -1.196e-02), r);\n\tr = MulAdd(s3_0, M4(-1.452e-02, 4.054e-02, -4.633e-02, -8.515e-02, 5.561e-02, 8.761e-02, -1.812e-01, -3.232e-01, 1.194e-01, 2.698e-01, 2.884e-02, -8.514e-02, 6.478e-02, -2.661e-01, -1.670e-03, 8.681e-02), r);\n\tr = MulAdd(s3_1, M4(9.767e-02, -8.863e-02, -3.921e-02, 6.901e-02, 6.170e-02, -1.756e-01, 1.710e-01, -1.548e-01, 6.032e-02, 7.535e-02, 5.940e-02, 7.616e-02, -1.238e-01, 4.833e-02, 1.955e-01, 8.794e-02), r);\n\tr = MulAdd(s3_2, M4(2.524e-02, 2.662e-02, 8.459e-02, -6.155e-03, 3.935e-02, 1.891e-02, 9.259e-03, -1.071e-01, 1.772e-01, -1.131e-01, -5.408e-02, 1.043e-01, -1.338e-01, -1.317e-02, -1.410e-01, 2.864e-02), r);\n\tr = MulAdd(s3_3, M4(-8.616e-03, -2.835e-02, -1.107e-01, -1.689e-01, 5.178e-02, 6.897e-01, -1.391e-01, 8.983e-02, 4.867e-02, -2.122e-01, -1.802e-01, -1.015e-02, -2.706e-03, 1.483e-01, 1.323e-01, 3.286e-01), r);\n\tr = MulAdd(s3_4, M4(-6.784e-02, -7.027e-03, 2.647e-01, -1.590e-02, 1.041e-01, -1.383e-01, -1.478e-01, -1.713e-01, 2.543e-02, -2.550e-01, -8.248e-03, -7.414e-03, 5.348e-02, 1.681e-02, -4.007e-01, -3.284e-02), r);\n\tr = MulAdd(s3_5, M4(-1.803e-02, 7.886e-03, -6.364e-02, -2.430e-02, 8.611e-02, 5.071e-02, 1.808e-01, -1.886e-01, 1.901e-01, -2.587e-01, -7.593e-02, -1.351e-02, 8.406e-02, -7.927e-02, -7.538e-02, -1.249e-01), r);\n\tr = MulAdd(s3_6, M4(-7.358e-02, 8.325e-02, 1.090e-01, -3.392e-02, -5.795e-02, 2.896e-01, -4.952e-02, 1.028e-01, -4.203e-02, -2.732e-02, 8.058e-03, 1.598e-01, -1.319e-02, -8.781e-02, 2.060e-02, 2.139e-02), r);\n\tr = MulAdd(s3_7, M4(-2.411e-02, -4.139e-02, -8.324e-02, 6.797e-02, -8.778e-02, 8.484e-02, 2.128e-02, 6.571e-02, 4.007e-02, -3.879e-02, 9.627e-03, 1.774e-01, 1.298e-02, 1.097e-01, 1.314e-01, -4.692e-02), r);\n\tr = MulAdd(s3_8, M4(-5.470e-02, 4.771e-02, -9.790e-02, -2.405e-04, 7.797e-02, 1.121e-01, 6.055e-02, -8.066e-02, 5.387e-02, 9.211e-03, -1.203e-01, 5.955e-02, 3.587e-02, 3.225e-03, 4.431e-03, -2.250e-02), r);\n\tr = MulAdd(s4_0, M4(-2.785e-02, 7.038e-02, 1.777e-02, -6.899e-02, -1.786e-01, 5.678e-01, 3.086e-01, -6.197e-02, -2.101e-01, -4.708e-01, 7.508e-03, 1.944e-01, 6.144e-02, -1.105e-01, 3.901e-02, 5.978e-02), r);\n\tr = MulAdd(s4_1, M4(2.066e-02, -1.288e-01, 4.087e-02, 1.860e-01, 3.306e-01, 1.913e-01, -1.289e-01, 2.461e-01, -3.596e-02, 5.661e-02, -9.447e-02, -2.039e-02, -7.522e-02, 1.154e-01, 5.388e-03, -5.283e-02), r);\n\tr = MulAdd(s4_2, M4(8.102e-02, -7.280e-02, -1.040e-01, -2.783e-02, 1.147e-01, 9.859e-02, -9.925e-02, 1.961e-01, 9.113e-03, 1.240e-01, 1.797e-01, -1.161e-02, -5.068e-02, -6.592e-03, -7.103e-02, -1.090e-02), r);\n\tr = MulAdd(s4_3, M4(8.255e-02, -3.384e-02, 1.756e-01, -7.400e-02, -6.854e-01, 2.786e-01, 1.294e-01, -1.433e-01, 1.169e-01, 4.389e-02, 8.293e-02, 2.403e-01, -4.694e-02, 6.013e-02, 1.809e-01, -1.189e-03), r);\n\tr = MulAdd(s4_4, M4(6.230e-02, 2.329e-01, 1.511e-01, -1.491e-01, -6.517e-01, -3.116e-01, -7.005e-01, 3.086e-01, 1.032e-01, -8.114e-02, 1.042e-01, -1.800e-02, -1.441e-01, -2.906e-02, -4.734e-02, -4.410e-02), r);\n\tr = MulAdd(s4_5, M4(1.066e-01, -1.437e-01, -3.467e-01, 9.725e-02, -3.574e-01, 1.397e-02, 4.027e-01, -9.219e-02, -1.345e-01, -3.592e-02, 5.481e-02, 2.041e-02, -3.619e-02, -4.025e-02, -8.226e-02, 8.882e-03), r);\n\tr = MulAdd(s4_6, M4(-1.570e-01, 1.786e-01, 1.084e-01, -3.860e-02, -9.958e-01, 5.107e-01, 2.791e-01, -6.198e-01, 8.632e-03, 4.455e-02, 3.793e-02, 1.799e-01, -1.521e-02, -2.071e-03, 1.500e-01, -5.810e-02), r);\n\tr = MulAdd(s4_7, M4(2.058e-02, -5.472e-02, 2.999e-02, -3.534e-01, -5.280e-01, 1.283e-01, 1.379e-02, -2.095e-01, -7.465e-02, -1.780e-02, 5.720e-02, 1.105e-01, -2.299e-02, -8.545e-02, 1.220e-02, -9.390e-02), r);\n\tr = MulAdd(s4_8, M4(-7.549e-02, 2.686e-02, -3.224e-02, -1.891e-01, -2.563e-01, -2.980e-02, -2.683e-01, 4.311e-02, -5.702e-02, 9.769e-02, -3.178e-02, 7.403e-02, -3.932e-02, 9.627e-02, -1.382e-01, -3.233e-02), r);\n\tr = MulAdd(s5_0, M4(-7.157e-02, 1.218e-01, 4.895e-02, -2.697e-02, -2.247e-01, -3.837e-02, 1.527e-01, 4.106e-02, 1.022e-02, 5.294e-02, -1.417e-02, -1.746e-01, -5.884e-02, -8.050e-01, -1.704e-01, -2.815e-01), r);\n\tr = MulAdd(s5_1, M4(-1.708e-01, 4.261e-03, 4.935e-02, -2.315e-01, -7.595e-02, 7.886e-02, -9.628e-02, -1.124e-01, 1.992e-01, 4.148e-02, 1.165e-02, 2.824e-01, 3.617e-01, 1.361e-01, -2.831e-01, -5.913e-01), r);\n\tr = MulAdd(s5_2, M4(-9.310e-02, 3.631e-02, -6.965e-02, -5.447e-02, -1.125e-01, -1.207e-02, -8.180e-02, 6.154e-02, -9.411e-02, -8.497e-02, 1.995e-02, -8.788e-03, -3.000e-03, -6.742e-01, -5.002e-02, 7.143e-01), r);\n\tr = MulAdd(s5_3, M4(-9.140e-02, -3.208e-02, 1.647e-01, -1.924e-01, -3.634e-02, 5.920e-02, 1.146e-01, 5.098e-02, -5.068e-02, -2.226e-01, 1.232e-01, -6.575e-02, -3.223e-01, -7.135e-02, 4.797e-01, -3.695e-01), r);\n\tr = MulAdd(s5_4, M4(2.570e-02, -2.095e-01, 1.539e-01, 1.723e-02, 5.085e-02, -1.300e-01, -2.396e-01, -3.175e-02, -1.770e-01, 2.109e-01, 3.226e-02, 5.015e-02, -1.094e+00, 9.919e-01, 4.163e-01, 3.218e-01), r);\n\tr = MulAdd(s5_5, M4(-2.830e-01, 4.161e-02, -2.056e-01, -8.113e-02, 3.432e-02, 1.171e-01, 1.716e-01, -2.918e-03, -1.261e-02, 1.227e-02, 6.649e-02, -2.405e-01, -3.997e-02, -2.948e-01, -2.825e-01, 8.032e-01), r);\n\tr = MulAdd(s5_6, M4(-6.231e-02, -1.346e-01, 1.226e-01, 1.050e-01, -1.370e-01, -1.499e-01, 1.062e-01, 8.043e-02, 2.492e-02, 1.732e-03, 9.060e-02, -2.609e-01, -3.209e-01, 1.015e+00, -2.472e-01, 3.568e-01), r);\n\tr = MulAdd(s5_7, M4(3.223e-01, 4.831e-02, 1.083e-01, 4.442e-01, -1.101e-01, 1.498e-01, 5.688e-02, 2.313e-02, -4.522e-03, 6.388e-02, 3.195e-02, -1.484e-01, -2.437e-01, 7.016e-01, 1.396e-02, 1.372e-01), r);\n\tr = MulAdd(s5_8, M4(2.243e-01, 1.056e-01, -1.796e-01, 7.784e-02, -2.328e-01, -5.866e-02, -1.860e-01, 4.648e-02, -4.558e-03, 6.233e-02, 3.451e-02, -5.534e-02, 7.662e-02, -2.773e-01, -2.279e-01, -9.295e-02), r);\n\tr = MulAdd(s6_0, M4(-3.374e-02, -2.356e-02, 3.986e-02, -1.112e-01, -1.095e-01, -1.457e-01, -8.422e-02, -3.487e-01, -2.405e-02, -9.978e-02, -3.585e-02, -3.358e-02, -3.417e-02, 2.651e-01, 6.467e-02, 6.501e-02), r);\n\tr = MulAdd(s6_1, M4(9.522e-02, -2.185e-01, 5.612e-02, -2.141e-01, 1.499e-01, -6.949e-02, 2.295e-01, -1.708e-01, 4.647e-02, 5.918e-02, -8.221e-02, -3.715e-02, 6.330e-02, 1.352e-01, -6.976e-02, 2.410e-02), r);\n\tr = MulAdd(s6_2, M4(8.852e-02, -2.405e-02, -1.594e-01, 1.164e-02, -6.867e-02, -2.369e-02, -1.449e-01, 8.873e-02, -2.884e-02, 1.480e-02, 1.827e-01, 4.061e-02, -1.097e-01, -9.323e-03, 3.740e-02, -6.737e-02), r);\n\tr = MulAdd(s6_3, M4(2.529e-03, 2.041e-03, 7.147e-02, -1.587e-01, 5.348e-02, -2.473e-01, 1.089e-01, -4.750e-01, -9.232e-02, 7.928e-03, 2.191e-02, 1.704e-01, -7.646e-03, 1.259e-01, -1.162e-02, -4.419e-02), r);\n\tr = MulAdd(s6_4, M4(4.559e-02, -1.482e-02, -5.774e-02, 4.264e-02, -1.135e-01, 3.957e-02, 3.339e-01, -8.331e-02, 6.278e-02, 7.753e-02, -1.133e-01, 6.567e-02, -1.869e-01, -3.601e-01, 2.568e-01, 5.296e-02), r);\n\tr = MulAdd(s6_5, M4(3.472e-02, 1.764e-02, -6.853e-02, -3.703e-02, -4.294e-03, 6.097e-02, -7.461e-02, -6.429e-02, -1.063e-01, 1.582e-01, 7.603e-01, -1.219e-01, -1.339e-01, -4.161e-01, -3.681e-01, -1.219e-01), r);\n\tr = MulAdd(s6_6, M4(5.539e-02, 5.962e-02, -3.619e-02, 1.538e-01, 1.036e-01, -2.077e-01, 2.501e-02, -4.524e-02, -4.840e-02, -1.428e-01, -1.573e-03, 2.170e-02, 2.106e-02, 3.732e-02, -4.521e-02, 5.403e-02), r);\n\tr = MulAdd(s6_7, M4(-1.762e-02, 8.959e-02, -7.463e-02, -3.898e-03, 3.685e-02, 1.724e-01, -2.027e-01, -7.210e-02, -4.951e-02, -4.845e-02, -6.237e-02, 1.247e-01, 4.155e-02, -1.484e-01, 2.090e-01, 1.118e-01), r);\n\tr = MulAdd(s6_8, M4(1.777e-01, -2.414e-02, -3.344e-02, 5.355e-02, 2.664e-02, 5.144e-02, -3.208e-02, 1.029e-01, -5.298e-02, -1.654e-01, 3.050e-01, -8.195e-02, -2.546e-01, 3.789e-02, -1.125e-01, -9.267e-02), r);\n\tr = MulAdd(s7_0, M4(-1.020e-01, -9.980e-02, -3.541e-02, -6.894e-02, 9.931e-03, 4.217e-01, 5.043e-02, 2.429e-01, -6.606e-02, 4.922e-02, -4.476e-02, -1.333e-01, -3.997e-02, -1.578e-02, 6.067e-02, -2.050e-01), r);\n\tr = MulAdd(s7_1, M4(-1.406e-01, -6.426e-02, -4.408e-02, 2.217e-01, -4.419e-01, -2.667e-02, 4.985e-02, 4.093e-01, 3.958e-02, -5.435e-03, -4.548e-02, -5.027e-02, 1.826e-02, 2.531e-01, -1.185e-01, -1.326e-01), r);\n\tr = MulAdd(s7_2, M4(-5.890e-02, 2.680e-01, 5.605e-01, -1.489e-01, -6.722e-02, 2.036e-01, -5.221e-02, -7.006e-02, -1.348e-01, -4.079e-02, 2.412e-01, 5.350e-02, 1.568e-01, -4.918e-01, 1.060e-01, 6.523e-02), r);\n\tr = MulAdd(s7_3, M4(-9.169e-02, 2.759e-01, 3.524e-03, 3.174e-02, -1.553e-01, 4.311e-02, 1.794e-01, 9.289e-03, 4.978e-02, 2.541e-02, 6.696e-02, -2.903e-01, 2.529e-02, 1.400e-01, -7.264e-02, 7.721e-02), r);\n\tr = MulAdd(s7_4, M4(-4.292e-02, 1.501e-01, -1.926e-01, -3.703e-01, -6.892e-02, -6.903e-02, 8.106e-02, 2.570e-03, 2.991e-02, -3.356e-02, -8.382e-02, -2.773e-01, -3.668e-02, 6.332e-01, 2.201e-01, 1.223e-01), r);\n\tr = MulAdd(s7_5, M4(-3.877e-01, -1.253e-02, 1.201e-01, -6.158e-02, -3.971e-02, -8.619e-02, -1.808e-01, -4.551e-02, -2.302e-01, 2.303e-01, 7.661e-01, -1.921e-01, 2.226e-01, -3.984e-02, -5.196e-01, 1.682e-01), r);\n\tr = MulAdd(s7_6, M4(6.983e-02, 1.725e-01, -1.283e-01, -9.891e-02, -9.465e-03, -1.510e-02, 1.482e-02, -8.322e-02, 6.130e-02, 2.546e-01, -1.395e-02, -2.814e-01, 3.947e-02, 7.462e-02, -3.519e-02, -5.704e-02), r);\n\tr = MulAdd(s7_7, M4(1.587e-01, -1.040e-01, -2.058e-02, -2.364e-01, 1.647e-01, -2.598e-02, -1.130e-01, -6.468e-02, -1.939e-02, 7.214e-02, 6.094e-02, -1.198e-01, 7.880e-02, 5.938e-02, 6.658e-02, 1.664e-01), r);\n\tr = MulAdd(s7_8, M4(1.303e-01, 1.111e-01, -8.631e-02, -1.597e-01, 5.681e-02, 5.566e-02, 1.534e-02, -7.725e-02, -9.031e-02, -1.759e-02, 8.732e-02, -8.315e-02, 5.717e-03, -2.107e-01, -5.688e-02, -4.731e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -9.954e-04, -3.246e-03, 1.139e-02, 8.716e-02 };\n\tr = MulAdd(s0_0, M4(5.935e-02, -3.880e-02, -2.790e-02, -1.735e-01, 1.160e-01, -6.289e-02, -2.058e-03, -9.196e-02, -1.447e-02, -1.849e-01, -4.009e-02, 1.732e-01, 1.334e-03, 2.341e-02, -1.479e-01, -1.151e-01), r);\n\tr = MulAdd(s0_1, M4(-1.772e-01, -9.737e-02, -4.854e-02, 2.510e-02, 1.265e-01, -1.552e-01, -2.271e-01, -1.100e-01, 3.124e-04, -1.101e-01, -6.041e-01, 1.344e-01, 1.428e-01, -4.656e-02, -2.475e-03, -9.346e-02), r);\n\tr = MulAdd(s0_2, M4(3.122e-02, -1.688e-01, 9.462e-03, 1.356e-01, -7.914e-02, -8.563e-02, 3.218e-02, -2.323e-03, 1.664e-01, -4.178e-02, -1.479e-01, 4.674e-02, -7.378e-02, 1.561e-02, -3.414e-02, 1.088e-01), r);\n\tr = MulAdd(s0_3, M4(1.459e-01, -4.136e-02, 7.610e-02, 6.052e-02, -1.811e-02, -1.102e-01, 4.487e-02, -6.445e-02, -2.153e-01, -1.092e-01, -2.133e-02, -7.086e-03, 5.998e-02, -1.157e-01, 2.759e-01, -1.350e-02), r);\n\tr = MulAdd(s0_4, M4(-2.649e-01, -2.284e-01, 1.643e-01, -2.664e-01, 9.469e-02, -2.300e-01, 2.886e-01, -3.613e-01, 2.813e-01, 3.831e-02, 1.587e-01, -2.142e-01, 1.235e-01, -6.098e-02, 4.062e-02, 4.105e-02), r);\n\tr = MulAdd(s0_5, M4(2.236e-01, 9.460e-02, 3.632e-02, -4.123e-01, -1.973e-01, -1.740e-01, -7.194e-02, 3.953e-02, 1.288e-01, 3.952e-03, -1.424e-01, 1.233e-01, 4.519e-02, 8.368e-02, -9.193e-02, 1.482e-01), r);\n\tr = MulAdd(s0_6, M4(3.798e-01, -7.213e-03, 5.432e-02, -7.467e-02, 6.516e-02, -9.290e-02, 1.106e-01, 9.044e-02, -1.529e-01, -7.000e-02, 3.770e-02, -1.429e-02, -5.189e-01, -2.602e-02, 5.561e-02, -5.095e-01), r);\n\tr = MulAdd(s0_7, M4(-1.523e-01, 5.008e-01, -1.562e-01, -7.291e-02, 3.043e-01, -1.469e-01, -1.206e-01, 3.775e-02, -2.512e-02, -2.162e-01, 1.028e-01, 1.379e-01, -4.190e-02, -2.226e-01, 8.129e-02, 6.048e-02), r);\n\tr = MulAdd(s0_8, M4(6.118e-02, 2.485e-01, 1.206e-01, -6.543e-03, -1.393e-01, -1.410e-01, 6.509e-02, 2.388e-03, 1.684e-01, 8.039e-02, 9.741e-02, 2.378e-01, 2.011e-02, -2.027e-01, 3.670e-02, 7.855e-03), r);\n\tr = MulAdd(s1_0, M4(-2.440e-02, 1.029e-01, -4.293e-02, -1.076e-02, -2.178e-03, 7.526e-02, -3.960e-02, -2.570e-02, -5.119e-02, 5.620e-02, -4.994e-02, 6.796e-02, -1.239e-01, 5.108e-02, -4.895e-02, 1.677e-01), r);\n\tr = MulAdd(s1_1, M4(-1.277e-02, 1.926e-01, -2.228e-01, 5.436e-02, 2.798e-02, 9.485e-02, -2.055e-01, 5.804e-02, 5.623e-02, 1.654e-01, -7.012e-01, 2.912e-02, -1.199e-01, 3.823e-01, 1.260e-01, 1.435e-02), r);\n\tr = MulAdd(s1_2, M4(1.549e-02, 4.324e-02, -3.260e-02, 8.202e-02, 4.305e-02, 3.250e-02, 4.104e-02, 3.048e-02, 2.463e-02, 1.867e-01, -9.088e-02, -1.244e-02, -6.285e-02, -5.562e-02, -2.877e-02, 3.847e-02), r);\n\tr = MulAdd(s1_3, M4(-1.821e-01, -2.045e-01, 2.250e-02, -3.304e-02, -5.895e-02, 6.221e-02, 3.330e-02, 5.408e-02, -1.284e-01, 8.601e-04, -4.206e-02, 2.415e-02, -1.203e-01, 1.027e-01, -6.372e-01, 1.800e-03), r);\n\tr = MulAdd(s1_4, M4(5.460e-02, 1.171e-01, -1.551e-01, 3.550e-02, 3.756e-01, 1.625e-01, 4.267e-01, -3.865e-02, 2.818e-01, 1.405e-01, 2.300e-01, -3.230e-01, -2.077e-01, 4.363e-01, -3.084e-01, -8.473e-02), r);\n\tr = MulAdd(s1_5, M4(-7.994e-02, -1.892e-01, 1.632e-01, -9.721e-02, 1.368e-01, 1.737e-01, -2.244e-01, -3.117e-02, -2.395e-01, 2.234e-01, -2.775e-01, 1.149e-01, -2.063e-03, -1.582e-02, -7.830e-02, 6.865e-02), r);\n\tr = MulAdd(s1_6, M4(-6.998e-02, -6.605e-03, 2.792e-02, 2.266e-01, -6.332e-02, 3.743e-02, 5.763e-02, 2.327e-03, -1.112e-01, 1.532e-02, 5.560e-03, -1.085e-01, 4.812e-01, -1.153e-01, 3.079e-01, 4.507e-01), r);\n\tr = MulAdd(s1_7, M4(7.519e-02, 3.813e-02, 1.490e-01, -1.141e-02, -2.822e-01, -1.736e-01, -5.976e-02, 1.584e-02, -9.721e-02, -1.107e-01, 6.983e-02, 8.767e-03, -4.832e-01, -6.800e-02, 1.575e-01, 1.001e-01), r);\n\tr = MulAdd(s1_8, M4(1.033e-01, -4.228e-02, -2.677e-02, -5.970e-02, -7.797e-02, -5.242e-02, -1.062e-02, -5.887e-02, -2.408e-02, 2.243e-01, 4.478e-02, 1.706e-01, -1.517e-01, -1.129e-01, 5.236e-02, -8.809e-03), r);\n\tr = MulAdd(s2_0, M4(2.329e-01, 8.285e-02, 1.670e-01, -1.654e-02, -2.183e-01, -1.100e-02, -1.346e-01, -1.262e-01, -1.249e-01, -8.720e-02, -3.215e-02, 7.218e-03, -2.670e-03, 5.960e-03, 6.482e-04, 7.179e-02), r);\n\tr = MulAdd(s2_1, M4(1.630e-01, 4.832e-01, -1.151e-01, -3.790e-02, 1.828e-02, 1.931e-01, -5.413e-01, -1.107e-02, -5.487e-02, -1.571e-01, -2.764e-01, -9.029e-02, -9.916e-02, 2.014e-01, 1.388e-01, -1.145e-01), r);\n\tr = MulAdd(s2_2, M4(6.762e-03, 2.226e-01, 1.987e-02, -5.423e-02, -1.619e-02, 9.245e-02, -1.441e-01, 9.986e-02, 9.010e-02, -4.430e-02, -8.324e-02, -8.687e-02, -1.810e-01, -1.421e-01, 1.816e-02, -1.274e-01), r);\n\tr = MulAdd(s2_3, M4(-6.187e-02, -2.608e-01, 1.371e-01, -7.463e-02, -1.247e-01, -1.769e-01, 1.860e-02, 1.903e-01, 1.004e-01, 1.098e-01, 6.763e-02, -6.562e-02, -1.488e-01, -7.447e-02, -1.223e-01, -1.545e-01), r);\n\tr = MulAdd(s2_4, M4(-3.720e-01, -2.576e-02, -5.008e-02, -1.121e-01, -2.110e-02, -1.102e-03, 2.392e-01, -4.548e-02, 2.275e-01, 1.186e-01, 4.092e-01, 1.159e-03, -5.391e-02, 1.189e-01, -2.803e-01, -6.989e-02), r);\n\tr = MulAdd(s2_5, M4(-2.357e-01, -2.881e-02, -1.628e-02, -5.717e-02, -5.192e-02, 8.166e-02, 5.828e-02, 1.137e-01, -2.024e-01, -2.246e-01, -1.492e-01, -1.331e-01, -2.242e-01, 2.840e-01, -6.200e-02, -1.559e-02), r);\n\tr = MulAdd(s2_6, M4(3.271e-01, -2.728e-01, -2.201e-02, 1.165e-01, 4.544e-02, -6.330e-02, 9.576e-02, -8.706e-02, 6.837e-02, -9.075e-02, -6.291e-02, -6.290e-02, -2.278e-01, -2.028e-02, 2.094e-02, -1.649e-01), r);\n\tr = MulAdd(s2_7, M4(2.697e-01, -1.229e-01, 2.684e-02, 2.014e-02, -1.793e-01, 7.902e-02, 2.036e-01, 1.403e-02, -1.683e-01, -1.475e-01, -9.334e-02, -9.973e-02, 1.661e-02, 1.149e-01, 8.812e-02, -9.418e-02), r);\n\tr = MulAdd(s2_8, M4(1.436e-02, 5.699e-02, 2.813e-04, -2.904e-02, -4.214e-02, -9.986e-02, 3.843e-02, 3.767e-02, -7.750e-02, -1.411e-01, -7.223e-02, -9.483e-03, 2.011e-01, -1.208e-01, 1.293e-02, -1.869e-01), r);\n\tr = MulAdd(s3_0, M4(1.751e-01, -1.945e-01, -2.919e-02, -1.608e-01, 2.052e-01, -2.025e-01, 3.285e-03, 2.567e-02, 1.568e-02, 6.525e-02, 1.727e-02, 1.762e-01, -7.644e-02, 1.772e-01, -2.706e-03, -9.601e-03), r);\n\tr = MulAdd(s3_1, M4(-8.242e-03, -8.551e-02, 2.167e-01, 9.846e-02, 4.345e-02, -1.528e-01, -6.191e-01, -1.605e-02, -1.175e-01, -1.736e-01, -2.902e-01, -5.365e-02, -2.956e-02, 1.581e-02, 1.141e-01, -7.861e-02), r);\n\tr = MulAdd(s3_2, M4(-8.168e-02, 9.317e-02, 1.080e-03, 7.253e-02, -4.799e-02, 1.806e-01, -2.751e-01, 4.717e-02, 1.430e-01, -1.340e-01, -2.213e-02, 1.214e-01, 1.308e-04, 8.701e-02, 3.179e-03, 9.169e-02), r);\n\tr = MulAdd(s3_3, M4(4.130e-02, 1.459e-01, 8.394e-02, -1.792e-02, -2.212e-02, -1.066e-01, 1.071e-01, 7.341e-02, 1.160e-01, 8.097e-02, 5.112e-02, -7.335e-03, -9.636e-02, -1.319e-01, -4.296e-02, 6.101e-02), r);\n\tr = MulAdd(s3_4, M4(-7.374e-02, -2.285e-02, 3.085e-02, 6.584e-02, 3.442e-01, -9.557e-03, 3.653e-02, -2.316e-01, -4.737e-02, 1.919e-01, 3.546e-01, -6.006e-02, 7.363e-02, 6.111e-02, 1.844e-02, -1.562e-01), r);\n\tr = MulAdd(s3_5, M4(-5.292e-02, -1.842e-01, -5.210e-02, -1.087e-01, -9.492e-02, -1.672e-01, 8.528e-02, 3.359e-02, 7.379e-02, 1.750e-01, -1.559e-01, 5.677e-02, -1.406e-02, -1.478e-01, 2.558e-02, -2.936e-02), r);\n\tr = MulAdd(s3_6, M4(6.805e-03, 9.529e-02, -1.310e-01, 3.838e-02, -3.827e-01, 6.978e-02, 1.043e-01, 4.919e-02, -1.805e-01, 4.051e-02, 1.205e-02, 1.159e-01, 9.640e-02, -1.350e-01, -8.444e-03, 1.027e-01), r);\n\tr = MulAdd(s3_7, M4(3.617e-02, 7.544e-02, -3.033e-02, -1.630e-02, -8.538e-02, 1.023e-01, 1.871e-01, -9.201e-02, 6.537e-02, -1.245e-01, -1.172e-01, -3.826e-02, 4.586e-02, 3.039e-02, 8.042e-02, 1.039e-01), r);\n\tr = MulAdd(s3_8, M4(5.207e-02, -1.440e-01, -7.737e-04, 2.142e-02, -5.843e-02, 1.186e-02, 3.869e-02, 1.482e-02, -1.587e-01, 5.633e-02, -3.806e-02, 1.101e-01, 6.918e-02, 4.886e-02, 8.826e-03, 1.185e-01), r);\n\tr = MulAdd(s4_0, M4(4.134e-02, -5.948e-02, 5.677e-02, 1.336e-01, 6.300e-02, 1.927e-01, 2.735e-01, 2.763e-01, 1.347e-01, 1.102e-01, 2.558e-01, 1.069e-02, -1.023e-01, -2.797e-02, -2.972e-02, 6.513e-02), r);\n\tr = MulAdd(s4_1, M4(-2.106e-02, 4.948e-02, 4.398e-02, 1.727e-01, 7.379e-02, -2.729e-01, -1.749e-01, 2.668e-01, -1.237e-01, 5.604e-02, 8.591e-01, -1.229e-01, 2.704e-01, -1.718e-01, 1.959e-01, -3.976e-02), r);\n\tr = MulAdd(s4_2, M4(1.325e-02, 4.691e-02, 5.585e-02, 6.508e-02, 1.005e-01, -2.067e-01, 1.859e-01, -4.363e-02, 7.888e-02, -3.773e-02, 2.071e-01, -1.816e-01, 6.120e-02, -2.286e-02, 7.740e-02, 5.250e-02), r);\n\tr = MulAdd(s4_3, M4(5.538e-02, 1.723e-01, 5.215e-02, 5.218e-02, -1.293e-01, -2.408e-02, 1.046e-01, 1.966e-01, 1.912e-01, 3.076e-02, -5.604e-03, 2.458e-02, 6.852e-03, 3.539e-02, 7.286e-02, -7.049e-03), r);\n\tr = MulAdd(s4_4, M4(-6.083e-02, 1.961e-01, -7.071e-01, 7.913e-02, 3.160e-01, -5.599e-01, 5.716e-01, -1.436e-01, -1.422e-01, -3.896e-02, 3.694e-02, 6.415e-02, -3.721e-02, 8.450e-02, -2.492e-02, 4.170e-02), r);\n\tr = MulAdd(s4_5, M4(-4.336e-02, -5.783e-02, 1.582e-01, 7.864e-03, -2.993e-01, 5.704e-01, -3.629e-02, 1.938e-02, -3.487e-02, 2.981e-01, -1.278e-01, -1.120e-01, -3.010e-02, 8.082e-02, 8.272e-03, -5.287e-02), r);\n\tr = MulAdd(s4_6, M4(5.917e-01, 2.954e-01, 6.211e-02, 4.851e-02, 1.850e-01, -1.119e-01, -2.654e-01, 4.469e-01, -2.616e-01, 1.536e-01, 5.430e-02, 5.105e-02, -4.489e-02, -1.715e-02, -7.015e-02, -3.212e-02), r);\n\tr = MulAdd(s4_7, M4(3.557e-01, 6.459e-02, -8.283e-02, 9.279e-02, -1.481e-01, -6.049e-01, -2.963e-01, 6.103e-01, -2.518e-01, -1.455e-01, -3.510e-02, 1.284e-01, -6.814e-02, -5.309e-03, -2.072e-01, -2.491e-02), r);\n\tr = MulAdd(s4_8, M4(-9.047e-02, 1.771e-01, -3.731e-02, 8.465e-02, -1.685e-01, 7.672e-01, -3.389e-01, 7.383e-02, -4.803e-02, -1.344e-03, 9.633e-02, 3.742e-02, -2.154e-02, 5.721e-02, -1.354e-01, -2.491e-02), r);\n\tr = MulAdd(s5_0, M4(4.403e-02, -1.212e-01, 3.089e-02, 5.049e-02, 7.390e-02, 1.838e-03, 6.242e-02, 1.249e-01, -8.862e-02, -6.818e-02, 3.279e-01, -5.009e-02, -4.138e-01, 2.611e-01, -3.124e-01, 5.053e-01), r);\n\tr = MulAdd(s5_1, M4(-3.701e-02, -1.304e-01, -5.969e-02, -7.970e-02, 3.802e-02, -1.047e-01, -4.551e-02, 1.588e-01, 1.413e-01, 2.751e-02, 8.287e-01, -5.949e-03, 2.463e-01, -2.822e-01, 8.598e-01, 3.485e-01), r);\n\tr = MulAdd(s5_2, M4(1.565e-01, -1.857e-01, -7.390e-02, -1.039e-01, -2.352e-02, -6.304e-02, 1.453e-01, -5.807e-02, -3.799e-02, 5.020e-02, 2.783e-01, -4.422e-03, 1.387e-01, -5.167e-01, -2.931e-01, 9.587e-02), r);\n\tr = MulAdd(s5_3, M4(8.589e-02, 1.289e-01, -6.683e-02, 4.814e-02, -8.548e-02, 2.677e-02, 6.868e-02, 5.201e-02, 7.186e-02, -1.416e-01, -1.007e-01, -8.311e-02, 3.191e-01, 4.675e-01, 5.159e-01, 7.636e-01), r);\n\tr = MulAdd(s5_4, M4(-6.463e-02, -1.631e-01, 5.215e-01, 3.350e-01, 8.587e-02, 4.618e-02, 4.037e-01, -8.477e-02, -1.770e-01, -1.140e-01, -1.549e-01, -1.450e-01, 1.364e-01, -9.146e-01, -5.524e-01, 1.825e+00), r);\n\tr = MulAdd(s5_5, M4(1.068e-01, -6.471e-02, 2.219e-01, -2.326e-01, -1.201e-01, 7.923e-02, -1.147e-01, 9.964e-02, 1.038e-01, -1.205e-01, -2.941e-02, 1.203e-01, -1.237e-01, -1.006e+00, 3.622e-01, 8.427e-01), r);\n\tr = MulAdd(s5_6, M4(-2.385e-01, -8.214e-02, 4.111e-02, -1.813e-01, 2.792e-03, -1.395e-02, -1.086e-01, 1.065e-01, -2.391e-02, -3.052e-01, 1.056e-01, -3.421e-02, 9.469e-02, 8.340e-01, 2.849e-01, 2.031e-01), r);\n\tr = MulAdd(s5_7, M4(9.971e-02, 5.047e-01, -2.979e-01, -1.733e-01, -8.788e-02, 1.026e-01, -1.817e-01, 4.214e-03, 3.298e-02, -7.605e-02, 1.429e-02, -4.575e-02, -1.267e-01, -5.742e-01, -7.175e-01, 2.723e-01), r);\n\tr = MulAdd(s5_8, M4(9.887e-02, -4.113e-01, -1.008e-01, -1.136e-01, 1.018e-01, -8.625e-02, -1.318e-01, -4.740e-03, -2.426e-02, -1.553e-01, 1.172e-01, 1.149e-01, -2.133e-01, 6.096e-01, 1.745e-02, 3.555e-01), r);\n\tr = MulAdd(s6_0, M4(3.467e-03, 4.382e-02, -1.133e-02, 1.122e-01, -3.510e-01, 7.850e-02, 8.999e-02, 4.331e-02, 7.696e-02, 1.111e-01, 1.802e-02, 4.615e-02, 1.111e-01, -8.898e-02, -4.695e-02, 2.049e-02), r);\n\tr = MulAdd(s6_1, M4(-1.653e-01, 6.621e-02, -9.456e-02, 4.057e-02, -1.378e-01, -2.176e-01, -1.620e-01, 5.770e-02, -6.695e-02, 1.311e-02, -1.634e-01, -6.544e-02, 5.784e-02, -1.495e-01, -2.370e-02, -3.395e-02), r);\n\tr = MulAdd(s6_2, M4(-2.519e-01, -1.395e-01, -1.221e-02, -6.786e-03, -8.544e-02, -1.050e-01, -6.063e-02, 1.284e-01, -6.179e-02, 1.278e-01, -5.883e-02, 6.400e-02, -7.423e-02, -1.831e-01, -2.137e-02, -2.193e-01), r);\n\tr = MulAdd(s6_3, M4(-9.478e-02, 1.650e-01, -1.248e-03, -3.417e-02, 7.054e-01, 2.271e-01, -5.585e-02, 6.382e-02, -7.301e-02, -3.995e-02, -1.089e-01, -7.827e-03, 2.849e-02, -2.844e-02, -1.083e-01, -6.346e-02), r);\n\tr = MulAdd(s6_4, M4(3.468e-01, -2.994e-03, 1.476e-01, -2.409e-01, 7.781e-02, 2.649e-01, -2.783e-01, 1.083e-01, 1.441e-01, 6.688e-02, 2.519e-01, -9.673e-02, -2.108e-01, 1.019e-01, 1.226e-01, 4.383e-02), r);\n\tr = MulAdd(s6_5, M4(2.953e-01, -9.021e-02, -1.069e-01, 8.069e-02, 1.225e-02, -2.118e-01, 8.543e-02, 3.792e-02, -6.041e-02, 3.033e-01, 3.664e-03, 3.392e-01, -1.063e-01, -2.672e-01, -2.135e-01, -2.742e-01), r);\n\tr = MulAdd(s6_6, M4(-9.368e-02, -1.528e-01, 4.258e-02, -3.731e-02, 3.532e-01, 5.316e-02, 1.216e-03, 7.313e-02, -5.776e-02, -6.265e-02, 7.818e-02, 7.796e-02, -9.342e-02, -1.789e-01, -5.186e-03, -3.357e-02), r);\n\tr = MulAdd(s6_7, M4(-1.119e-01, 1.409e-02, -8.511e-02, -8.581e-02, 4.249e-01, -3.115e-02, 1.212e-02, 4.140e-02, -8.697e-02, -3.781e-02, 2.415e-02, 1.004e-01, 2.033e-01, -2.625e-01, -1.195e-01, -1.446e-01), r);\n\tr = MulAdd(s6_8, M4(-3.751e-02, 9.377e-02, 5.160e-02, -1.203e-01, -2.743e-02, 6.405e-02, -3.684e-02, -5.488e-02, 4.787e-02, 9.193e-02, 2.991e-02, -7.666e-02, 1.946e-01, -2.017e-01, -3.872e-02, -1.146e-01), r);\n\tr = MulAdd(s7_0, M4(5.174e-02, -1.932e-01, -5.817e-03, 3.660e-02, 1.551e-01, -7.090e-02, 1.983e-01, 4.514e-02, 2.454e-02, 2.151e-02, 2.254e-02, 2.139e-02, 8.666e-02, -8.359e-02, -6.452e-02, 3.204e-03), r);\n\tr = MulAdd(s7_1, M4(6.476e-01, -2.439e-01, -3.170e-02, 1.879e-01, -1.950e-01, -9.900e-02, 3.069e-02, -1.771e-02, -3.367e-02, -1.146e-01, -2.026e-01, -1.267e-01, -6.860e-02, -5.204e-02, -9.675e-03, -2.931e-02), r);\n\tr = MulAdd(s7_2, M4(3.228e-01, -1.253e-02, 1.359e-01, 3.780e-01, -7.254e-02, -2.202e-01, -1.502e-02, 1.158e-02, -7.370e-02, 7.129e-02, 2.702e-02, 8.427e-02, 3.789e-01, 2.073e-02, -1.668e-02, 2.945e-02), r);\n\tr = MulAdd(s7_3, M4(-5.933e-02, -1.988e-01, 5.261e-02, 1.353e-01, -1.531e-01, -1.078e-01, -7.204e-02, -2.297e-01, 3.892e-02, -6.414e-02, -1.413e-01, -6.568e-02, -4.182e-02, -6.158e-02, -7.575e-02, -1.336e-02), r);\n\tr = MulAdd(s7_4, M4(-5.649e-01, 3.911e-01, 1.717e-01, 1.238e-01, -8.583e-02, -9.941e-02, -2.325e-01, -1.359e-02, 1.744e-01, -3.874e-02, 3.085e-01, -1.988e-01, -1.290e-01, -1.004e-02, 1.707e-01, 1.001e-01), r);\n\tr = MulAdd(s7_5, M4(-3.325e-01, 2.026e-01, -8.293e-02, 2.123e-01, -3.594e-02, 4.981e-02, 1.057e-01, -7.827e-02, -1.563e-01, 1.890e-01, -9.641e-02, 6.924e-02, 7.589e-02, 1.252e-01, 1.572e-01, 4.694e-02), r);\n\tr = MulAdd(s7_6, M4(-3.188e-01, -8.384e-02, 1.629e-02, -1.835e-02, 6.289e-02, 2.915e-02, -2.368e-02, -1.087e-01, -1.791e-02, 4.458e-02, 7.646e-02, 2.115e-03, -1.045e-01, 1.727e-02, 2.779e-03, 4.634e-02), r);\n\tr = MulAdd(s7_7, M4(1.319e-01, -2.771e-01, -6.121e-02, 1.152e-01, -5.918e-02, 1.664e-01, 3.653e-02, -1.324e-01, -3.359e-01, -7.423e-02, 2.660e-02, -8.684e-02, -5.081e-01, -1.056e-01, -1.695e-01, 5.068e-02), r);\n\tr = MulAdd(s7_8, M4(2.551e-01, -2.393e-02, 2.413e-02, 1.231e-01, 6.143e-02, -1.052e-01, -7.441e-03, -8.615e-02, 2.186e-01, 5.253e-02, 5.781e-02, -1.213e-01, -2.231e-01, 5.117e-02, -5.953e-02, -5.153e-02), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 5.086e-03, 1.201e-02, -1.446e-02, -1.059e-01 };\n\tr = MulAdd(s0_0, M4(8.550e-02, 1.482e-01, -6.323e-02, 3.364e-03, 2.080e-02, 2.463e-02, -8.141e-02, 5.245e-02, 8.640e-03, -1.637e-01, -3.179e-01, -5.465e-02, -2.549e-02, 3.515e-02, -4.925e-02, -1.317e-01), r);\n\tr = MulAdd(s0_1, M4(1.858e-02, 9.248e-02, -8.656e-02, 5.550e-02, 1.817e-02, 8.032e-02, -5.676e-02, 5.070e-02, -1.802e-02, -7.254e-02, -2.202e-02, -1.170e-01, 9.502e-02, -2.105e-01, 2.068e-01, 2.038e-02), r);\n\tr = MulAdd(s0_2, M4(7.407e-03, -1.247e-02, -1.068e-02, 6.370e-02, -3.783e-02, -3.181e-02, -8.697e-03, 6.734e-02, 5.835e-02, 3.542e-02, -7.918e-02, -2.409e-02, -6.659e-02, -9.377e-03, -8.609e-02, -1.181e-02), r);\n\tr = MulAdd(s0_3, M4(-7.379e-02, -2.101e-01, 2.361e-02, 5.116e-03, -9.090e-02, -2.460e-02, -8.051e-03, 2.844e-03, -2.771e-01, 1.732e-01, 1.808e-01, 1.874e-02, -2.907e-02, -1.239e-01, 2.501e-01, -1.563e-01), r);\n\tr = MulAdd(s0_4, M4(-4.727e-02, -3.771e-01, -4.637e-02, 2.019e-01, 1.333e-02, -9.634e-02, 6.812e-02, 1.205e-01, 1.588e-01, -7.420e-02, -1.483e-01, -9.922e-02, 2.153e-01, -5.827e-02, 1.769e-01, -3.377e-01), r);\n\tr = MulAdd(s0_5, M4(-7.824e-02, 1.683e-01, 7.693e-02, 4.683e-02, 2.437e-02, 8.481e-02, -1.120e-01, -2.411e-02, -8.791e-02, 9.666e-02, -1.889e-02, -5.651e-02, 3.954e-02, 1.329e-01, -1.240e-01, -4.657e-02), r);\n\tr = MulAdd(s0_6, M4(-3.418e-02, 1.678e-01, -1.421e-01, 2.776e-02, 9.744e-02, -2.309e-01, 1.045e-01, 8.956e-03, 4.882e-02, 9.200e-02, 1.934e-02, -1.460e-01, -1.651e-02, 1.741e-02, -5.017e-02, -8.097e-02), r);\n\tr = MulAdd(s0_7, M4(7.096e-02, -1.308e-02, 1.686e-01, 1.322e-01, 3.749e-02, 3.528e-03, -1.659e-01, -1.403e-02, -3.273e-02, -6.009e-02, 2.140e-01, -1.632e-01, 7.239e-02, -1.206e-01, -1.586e-01, -3.078e-01), r);\n\tr = MulAdd(s0_8, M4(1.512e-03, -7.403e-02, 2.947e-02, -4.233e-02, 1.530e-02, -9.816e-02, -2.201e-02, 7.873e-02, 3.993e-02, -5.018e-02, -1.193e-01, -8.346e-02, 1.808e-02, 4.632e-02, -1.430e-01, -6.569e-02), r);\n\tr = MulAdd(s1_0, M4(3.089e-02, -1.530e-01, -5.461e-02, -1.197e-01, -4.821e-02, -1.186e-02, -2.666e-02, -7.656e-02, 7.529e-02, -8.186e-02, -4.492e-02, 9.174e-02, 2.188e-03, -1.622e-02, 1.487e-02, 9.233e-03), r);\n\tr = MulAdd(s1_1, M4(-7.001e-02, 7.108e-02, -7.005e-02, 4.512e-02, -6.238e-02, 2.113e-01, -2.022e-02, -6.211e-02, -8.457e-02, -7.076e-02, 1.031e-01, 7.805e-02, -8.044e-02, 3.066e-02, -9.706e-02, 6.739e-02), r);\n\tr = MulAdd(s1_2, M4(2.233e-03, 5.735e-02, -1.050e-01, 3.267e-05, 2.600e-02, -1.462e-01, 1.228e-01, 4.476e-02, -5.821e-02, 1.009e-02, -4.157e-02, 5.004e-02, 1.489e-03, -5.188e-02, -1.130e-01, 7.655e-03), r);\n\tr = MulAdd(s1_3, M4(1.187e-01, -1.361e-01, -3.887e-02, -1.879e-01, -1.532e-01, 1.675e-01, 9.292e-02, 1.058e-01, -1.031e-01, 1.873e-01, -1.012e-01, -6.570e-03, -1.088e-01, 6.697e-02, -2.098e-01, -2.466e-02), r);\n\tr = MulAdd(s1_4, M4(-3.238e-02, 2.032e-01, -2.280e-01, -8.513e-02, -7.811e-02, 1.825e-01, 8.879e-02, 5.777e-02, 6.934e-02, 1.430e-01, -1.761e-01, -4.238e-02, -9.137e-02, 2.031e-01, -6.119e-02, -2.051e-01), r);\n\tr = MulAdd(s1_5, M4(-1.427e-01, 1.108e-01, 7.984e-02, 1.138e-01, -6.363e-02, 2.572e-01, -9.833e-02, 4.010e-03, 1.009e-02, -5.946e-02, -2.506e-02, 1.648e-02, -1.293e-02, 3.644e-02, -3.313e-02, -6.616e-02), r);\n\tr = MulAdd(s1_6, M4(5.543e-02, -2.084e-01, 1.536e-01, 1.478e-02, 5.205e-02, 1.060e-01, 2.033e-01, 8.088e-02, 1.063e-03, 1.169e-02, 8.632e-02, 7.281e-03, 5.383e-02, 1.271e-02, 1.117e-01, 9.029e-02), r);\n\tr = MulAdd(s1_7, M4(-1.349e-02, -7.237e-02, 2.589e-01, 5.118e-03, -6.311e-02, 1.450e-02, -6.996e-02, -1.008e-01, -3.551e-02, -5.876e-02, 3.745e-02, -4.988e-02, 8.911e-02, -1.860e-01, 3.110e-01, -1.417e-01), r);\n\tr = MulAdd(s1_8, M4(1.646e-01, -1.234e-01, 1.665e-01, -9.602e-02, -6.306e-02, 1.731e-01, 8.883e-03, -2.104e-02, -3.799e-02, 2.678e-02, 3.067e-02, -4.282e-02, 3.751e-02, 1.611e-02, -3.500e-02, -3.051e-02), r);\n\tr = MulAdd(s2_0, M4(5.755e-02, -9.998e-03, 1.024e-01, 2.299e-02, 1.365e-01, -9.806e-02, 9.162e-02, -1.494e-01, 8.121e-02, -1.116e-01, -5.291e-02, -1.021e-01, -2.382e-03, -8.515e-02, -1.747e-01, -1.377e-01), r);\n\tr = MulAdd(s2_1, M4(-7.788e-02, 6.038e-02, 9.375e-02, -1.776e-02, 5.052e-03, -3.421e-02, -3.974e-02, -3.626e-02, 1.030e-01, 9.294e-03, -9.927e-02, 6.549e-02, 1.685e-02, -1.361e-01, 4.110e-04, 2.135e-01), r);\n\tr = MulAdd(s2_2, M4(2.658e-02, 7.140e-02, -5.212e-02, -6.860e-02, 4.382e-02, 4.198e-02, 3.386e-02, 1.893e-02, 4.225e-03, 1.905e-02, -6.424e-03, -7.844e-02, 6.918e-02, 1.072e-01, -1.525e-01, 9.003e-02), r);\n\tr = MulAdd(s2_3, M4(9.057e-02, -1.498e-01, 4.421e-02, -1.056e-01, -8.476e-02, 1.583e-01, -1.531e-02, -1.883e-01, 5.109e-02, -2.248e-01, -9.583e-02, 4.146e-02, 3.877e-02, -6.171e-02, -1.498e-01, 7.983e-02), r);\n\tr = MulAdd(s2_4, M4(9.063e-02, -1.617e-01, -1.447e-01, -9.241e-02, 3.600e-02, 5.373e-03, -1.078e-01, -1.163e-01, 6.829e-02, -5.413e-02, 8.948e-02, -1.109e-01, 5.275e-02, -3.897e-01, 1.237e-01, 9.982e-02), r);\n\tr = MulAdd(s2_5, M4(4.084e-02, 4.763e-03, -3.784e-02, -4.274e-02, -5.362e-03, -1.529e-02, 7.842e-03, 5.604e-04, 7.714e-02, -1.559e-01, 7.681e-02, -7.394e-02, -8.979e-02, 2.113e-01, 2.168e-01, 4.097e-02), r);\n\tr = MulAdd(s2_6, M4(-8.091e-02, -1.115e-01, 2.361e-01, -1.733e-01, 7.247e-03, -1.287e-01, 1.563e-01, -8.712e-02, -3.140e-03, 9.098e-02, -1.299e-01, 6.030e-03, 4.423e-02, -7.119e-02, -2.863e-01, 6.274e-02), r);\n\tr = MulAdd(s2_7, M4(6.526e-02, -7.356e-02, -2.948e-02, -9.011e-02, 1.460e-02, -6.172e-02, 3.199e-03, 2.079e-02, -5.142e-02, 8.263e-02, 7.087e-02, -1.835e-02, 1.853e-02, 4.476e-02, 5.705e-02, 8.962e-02), r);\n\tr = MulAdd(s2_8, M4(2.256e-02, -3.066e-02, -1.381e-01, -8.295e-02, -2.385e-02, -5.564e-02, -1.301e-01, -1.046e-01, 5.761e-02, -5.741e-02, 8.829e-02, -1.901e-02, 7.150e-02, -4.324e-02, -4.973e-02, 1.143e-01), r);\n\tr = MulAdd(s3_0, M4(3.401e-04, -5.849e-04, 6.542e-02, -1.244e-02, -9.909e-02, 1.931e-01, -7.912e-02, 4.238e-02, 1.492e-02, -2.218e-03, 1.655e-01, -2.451e-02, -3.112e-02, 3.901e-02, 1.196e-01, -4.961e-02), r);\n\tr = MulAdd(s3_1, M4(1.788e-02, -4.814e-02, -7.687e-02, -1.610e-02, -1.226e-01, 3.760e-01, 1.033e-02, 1.085e-01, -1.322e-01, 6.261e-02, 1.646e-01, 1.469e-01, 5.817e-02, -8.755e-02, 2.057e-01, 1.778e-02), r);\n\tr = MulAdd(s3_2, M4(5.219e-02, 1.550e-01, 4.151e-02, -9.940e-02, -1.919e-02, -4.969e-02, 6.124e-02, 3.869e-02, -1.602e-01, 2.288e-01, -7.836e-03, -2.868e-02, -8.724e-02, -5.142e-02, 1.497e-01, 6.299e-03), r);\n\tr = MulAdd(s3_3, M4(1.154e-01, -2.413e-01, -1.159e-01, 3.445e-02, -3.170e-02, -3.682e-02, 4.749e-02, -2.001e-01, -3.168e-02, 2.549e-01, -3.563e-01, 8.866e-02, -4.008e-02, 8.638e-02, 1.173e-01, -1.110e-03), r);\n\tr = MulAdd(s3_4, M4(-2.685e-01, 3.041e-02, -2.903e-01, -4.052e-02, -2.745e-01, 5.754e-01, -3.479e-02, 1.664e-01, -6.268e-02, 5.738e-02, 2.118e-01, -1.481e-01, -1.829e-01, 1.945e-01, -4.317e-02, -2.469e-02), r);\n\tr = MulAdd(s3_5, M4(6.148e-02, -1.607e-01, -3.468e-03, 8.311e-03, -4.307e-02, 1.277e-01, 1.087e-01, -1.532e-02, 2.988e-02, -8.367e-02, 4.991e-02, -5.328e-02, -4.701e-02, 6.573e-02, -2.594e-02, -8.493e-02), r);\n\tr = MulAdd(s3_6, M4(-1.161e-02, 7.270e-02, 1.249e-01, -8.621e-02, 8.553e-02, 2.959e-01, 3.113e-01, 2.873e-03, -1.351e-01, -2.965e-02, -7.862e-02, -5.562e-02, -1.062e-02, 9.243e-02, -5.759e-02, 1.790e-02), r);\n\tr = MulAdd(s3_7, M4(2.188e-01, -5.976e-02, -7.703e-02, 1.416e-02, 1.885e-02, -2.569e-01, 1.704e-01, 1.260e-01, -1.121e-01, 6.791e-02, 1.233e-01, -4.520e-02, -1.194e-01, 1.583e-01, 1.293e-02, 1.602e-02), r);\n\tr = MulAdd(s3_8, M4(-3.095e-03, -2.183e-02, 9.775e-02, 1.380e-02, -4.415e-02, 1.140e-01, -1.133e-01, 4.689e-02, -4.382e-02, -5.442e-02, 2.616e-02, -7.310e-03, 5.992e-02, -5.769e-02, 8.517e-03, 5.975e-02), r);\n\tr = MulAdd(s4_0, M4(-2.874e-02, -3.209e-02, 7.440e-02, -5.051e-02, 3.173e-02, -4.283e-03, 2.989e-02, -8.500e-02, -2.492e-01, 1.640e-01, 2.135e-03, 1.260e-01, 2.995e-02, -4.737e-02, -7.130e-03, -8.467e-03), r);\n\tr = MulAdd(s4_1, M4(-5.790e-02, 1.738e-02, -8.117e-02, -1.148e-01, 8.217e-02, -3.495e-02, 4.301e-02, 3.421e-02, -3.894e-02, 9.015e-03, -6.426e-02, 7.283e-02, 2.620e-02, -8.512e-02, -7.089e-02, -7.352e-02), r);\n\tr = MulAdd(s4_2, M4(-2.312e-02, 3.598e-02, 1.935e-02, 2.357e-02, 2.581e-02, -1.139e-01, 2.659e-02, 3.450e-02, -1.109e-02, -1.854e-02, -7.685e-02, -2.472e-02, 8.593e-02, 1.155e-02, -7.321e-03, 6.701e-02), r);\n\tr = MulAdd(s4_3, M4(7.399e-02, -5.969e-02, 1.448e-01, -1.209e-01, 4.066e-02, 2.562e-02, 1.040e-01, -1.381e-02, -7.872e-01, 4.618e-01, 2.801e-02, 1.128e-01, -1.565e-02, 6.946e-02, -5.437e-02, -2.053e-02), r);\n\tr = MulAdd(s4_4, M4(2.776e-01, -2.267e-01, 2.452e-01, 3.041e-01, 1.735e-03, -6.368e-02, -2.212e-02, 1.169e-01, -6.648e-02, 4.323e-01, -1.261e-01, 2.998e-02, -1.491e-01, -6.740e-02, 4.344e-02, -2.343e-01), r);\n\tr = MulAdd(s4_5, M4(-1.965e-02, 4.745e-02, 3.125e-02, 1.700e-02, -4.554e-02, 2.626e-01, 1.867e-02, 6.873e-02, -5.527e-03, 4.543e-02, 1.086e-01, -2.145e-03, 8.956e-03, -2.003e-02, -4.228e-02, -8.769e-02), r);\n\tr = MulAdd(s4_6, M4(-3.365e-02, 1.210e-01, -6.053e-02, -1.365e-01, -7.537e-02, 4.398e-02, -2.364e-02, -5.594e-02, -1.008e-01, -1.719e-01, 1.680e-01, 9.306e-02, 2.551e-02, 9.705e-02, -1.017e-01, 1.386e-01), r);\n\tr = MulAdd(s4_7, M4(-2.247e-01, -5.840e-02, -1.633e-01, 1.787e-01, -1.938e-02, 6.637e-02, -9.436e-02, -5.768e-02, -2.798e-02, 7.276e-03, 1.510e-01, 2.070e-02, 8.682e-03, -8.152e-02, 1.585e-01, -1.970e-01), r);\n\tr = MulAdd(s4_8, M4(2.726e-02, 1.013e-01, -9.009e-02, 2.377e-02, 4.192e-02, -5.158e-03, 1.333e-01, 5.335e-02, 5.155e-02, 7.597e-03, 1.612e-01, 4.137e-02, 2.126e-02, 2.504e-02, 4.211e-02, 2.331e-02), r);\n\tr = MulAdd(s5_0, M4(7.914e-03, 5.196e-02, 1.528e-01, -1.733e-01, -4.303e-02, -8.394e-02, -6.856e-02, -1.815e-03, 1.145e-01, -6.718e-02, 2.572e-01, -7.499e-02, 5.476e-02, 5.707e-02, -3.430e-02, -2.263e-02), r);\n\tr = MulAdd(s5_1, M4(2.027e-01, -9.534e-02, -4.479e-02, -2.295e-01, -1.571e-04, 1.039e-01, -1.418e-02, -9.583e-03, 1.155e-01, -1.823e-01, 7.095e-02, -8.661e-02, -8.197e-02, -5.617e-02, -2.881e-01, 1.652e-02), r);\n\tr = MulAdd(s5_2, M4(7.570e-02, -5.338e-03, -1.236e-02, -8.058e-02, 1.990e-02, -5.564e-02, -1.548e-01, 9.153e-02, -4.377e-02, 3.944e-02, -3.167e-03, -5.789e-03, 2.200e-02, -7.143e-02, -6.064e-02, 7.612e-02), r);\n\tr = MulAdd(s5_3, M4(2.007e-01, -1.894e-01, 1.677e-02, -1.159e-01, 3.995e-02, -1.170e-01, 2.050e-01, 1.138e-02, 1.128e-02, 3.693e-02, 2.784e-01, -2.002e-01, -4.578e-04, -1.568e-01, 3.455e-02, 1.001e-02), r);\n\tr = MulAdd(s5_4, M4(-1.635e-01, -1.109e-02, 6.541e-02, -3.544e-01, 7.378e-02, 1.112e-01, -5.674e-02, 1.863e-01, 7.911e-01, -2.734e-01, -1.205e-01, 1.684e-01, -1.814e-01, 1.269e-01, 1.220e-01, 7.336e-03), r);\n\tr = MulAdd(s5_5, M4(-4.375e-02, 8.044e-02, 1.655e-01, -2.669e-01, 7.938e-02, 8.039e-02, -2.610e-02, 1.606e-01, 4.477e-02, -1.701e-03, 7.304e-03, -4.718e-02, 2.108e-02, 2.270e-01, 2.392e-01, 4.445e-02), r);\n\tr = MulAdd(s5_6, M4(4.577e-02, -6.396e-03, -9.791e-02, -1.781e-01, -2.233e-02, 1.123e-01, 6.753e-02, -1.246e-01, -6.603e-03, 9.639e-03, 3.877e-02, -3.097e-02, -3.699e-02, -8.160e-02, -1.579e-01, -4.564e-02), r);\n\tr = MulAdd(s5_7, M4(-1.952e-01, 3.921e-04, 2.565e-01, -4.736e-01, -9.141e-02, 3.384e-02, -3.370e-01, -1.511e-02, 1.161e-01, -3.249e-02, -2.568e-01, -2.537e-02, -1.069e-01, -3.597e-02, -4.000e-02, 2.052e-01), r);\n\tr = MulAdd(s5_8, M4(2.847e-02, -7.864e-02, -1.253e-02, -2.447e-01, -9.473e-02, 1.263e-01, -6.200e-02, 3.020e-02, 2.729e-02, 3.150e-02, 4.010e-02, -2.741e-02, 8.655e-02, 1.347e-02, 1.495e-01, -6.498e-04), r);\n\tr = MulAdd(s6_0, M4(7.169e-02, -6.749e-02, 9.479e-02, 3.264e-03, 1.453e-02, -5.768e-02, -7.251e-02, -1.236e-01, 3.857e-03, -2.619e-02, -2.213e-02, -3.012e-03, -6.991e-02, 3.919e-02, -8.657e-03, -3.474e-02), r);\n\tr = MulAdd(s6_1, M4(3.885e-02, 2.170e-02, 6.984e-02, 6.616e-02, 7.536e-02, 1.188e-01, -1.020e-01, 1.248e-02, -6.022e-02, 6.860e-02, 2.724e-02, -1.921e-02, -7.704e-02, 2.208e-02, 1.482e-01, 1.781e-01), r);\n\tr = MulAdd(s6_2, M4(-5.202e-02, -7.019e-02, 2.054e-02, -5.957e-02, 2.252e-02, -9.743e-02, 6.670e-02, 4.199e-02, 3.750e-02, -1.800e-02, 2.483e-02, 8.751e-02, 6.627e-02, 1.258e-01, -4.092e-02, 4.300e-02), r);\n\tr = MulAdd(s6_3, M4(2.245e-02, -1.616e-02, 3.853e-02, -1.251e-01, 1.342e-01, -2.051e-01, 3.328e-01, -2.076e-02, -1.401e-01, -3.579e-02, -1.392e-01, -1.270e-01, 1.674e-02, 3.339e-02, 2.546e-01, 1.754e-01), r);\n\tr = MulAdd(s6_4, M4(-1.724e-01, 2.212e-01, 1.627e-01, -1.674e-01, 9.932e-03, 1.412e-01, 2.723e-01, 7.141e-02, -7.426e-01, 1.770e-01, 2.432e-01, -6.203e-02, 2.387e-01, -9.877e-02, -4.044e-02, 3.033e-01), r);\n\tr = MulAdd(s6_5, M4(1.734e-01, -8.957e-03, 1.074e-01, 1.615e-02, 2.509e-03, -3.180e-02, 1.738e-02, 1.614e-03, -2.015e-01, -5.618e-03, -1.549e-02, -6.552e-02, -1.216e-01, -9.633e-02, -1.392e-01, 6.371e-03), r);\n\tr = MulAdd(s6_6, M4(9.966e-03, -5.015e-02, 1.106e-03, 2.051e-02, -3.092e-02, 8.487e-02, -8.627e-02, 3.511e-02, -4.166e-02, -4.374e-02, -8.720e-02, -2.525e-02, 5.230e-02, -3.937e-02, -3.387e-02, 3.305e-02), r);\n\tr = MulAdd(s6_7, M4(7.256e-02, 8.201e-02, 1.425e-01, 3.578e-02, 4.288e-02, 2.544e-01, -7.146e-02, 1.259e-01, -5.159e-02, 5.622e-02, 8.943e-02, -1.483e-02, -1.130e-01, 1.102e-02, 5.953e-02, 2.999e-02), r);\n\tr = MulAdd(s6_8, M4(-1.649e-02, -6.988e-02, 1.654e-01, 8.961e-02, -5.890e-02, -7.814e-02, -3.838e-02, 5.917e-02, -2.741e-03, 1.389e-01, -7.250e-02, 2.338e-02, -3.435e-02, -1.182e-01, -1.089e-02, -8.475e-02), r);\n\tr = MulAdd(s7_0, M4(1.302e-01, -2.233e-02, -1.353e-01, -9.712e-02, -8.077e-02, -1.417e-01, -6.761e-02, -1.097e-01, -1.623e-02, 2.213e-02, -2.955e-03, 2.299e-02, -2.731e-02, -6.499e-02, 8.680e-02, -2.647e-01), r);\n\tr = MulAdd(s7_1, M4(1.919e-01, 2.093e-01, -3.153e-01, -1.151e-01, 3.468e-02, 7.060e-02, -2.447e-01, 7.122e-02, 8.064e-03, 8.447e-02, 9.937e-02, -6.254e-02, -1.451e-01, -4.861e-02, 2.636e-01, 9.170e-02), r);\n\tr = MulAdd(s7_2, M4(1.963e-02, -4.898e-02, -5.656e-01, -1.833e-02, 1.456e-02, -2.585e-02, 3.618e-02, -1.040e-01, 8.570e-03, -4.964e-03, -2.392e-02, 5.105e-02, 9.810e-02, 1.419e-01, -1.011e-02, -6.824e-02), r);\n\tr = MulAdd(s7_3, M4(-2.838e-02, -3.018e-01, -1.827e-01, -2.484e-02, -2.072e-01, 1.908e-01, -1.321e-01, 2.737e-02, 3.042e-02, -1.350e-01, 5.893e-02, -1.916e-02, 1.234e-01, 1.333e-01, -1.184e-01, 1.806e-01), r);\n\tr = MulAdd(s7_4, M4(1.446e-01, 5.919e-01, -2.780e-01, -9.927e-02, -8.727e-02, 2.295e-01, 8.388e-02, 5.303e-02, 2.302e-01, -2.994e-01, 1.563e-01, -9.238e-02, -2.779e-01, 7.911e-01, -9.902e-01, 1.192e+00), r);\n\tr = MulAdd(s7_5, M4(-1.373e-02, -1.054e-02, -3.860e-01, -7.999e-02, 1.305e-01, -4.235e-02, -1.591e-01, 7.167e-02, -7.756e-02, -1.028e-02, -8.130e-02, -7.158e-02, -1.240e-02, -9.955e-02, -2.537e-01, 1.257e-02), r);\n\tr = MulAdd(s7_6, M4(2.098e-02, -1.965e-01, -2.843e-04, 9.224e-02, -4.041e-02, -6.028e-02, -1.702e-02, 1.063e-01, 5.851e-02, -6.682e-03, 1.789e-01, -9.654e-02, 8.077e-02, -2.780e-01, -2.409e-01, -2.038e-01), r);\n\tr = MulAdd(s7_7, M4(9.059e-02, 2.376e-02, -2.666e-01, 1.010e-01, -2.099e-02, 1.413e-01, -1.796e-01, 1.615e-01, 3.644e-01, -6.318e-01, -2.343e-01, -2.385e-02, 2.060e-01, -1.687e-01, -8.451e-03, -9.400e-02), r);\n\tr = MulAdd(s7_8, M4(1.305e-02, 2.460e-02, -7.354e-02, 8.471e-02, -9.206e-02, -3.224e-02, -4.200e-02, 1.797e-02, 3.352e-02, -4.818e-02, 6.038e-02, 7.224e-03, 2.233e-02, 8.301e-02, -1.024e-01, -1.395e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.069e-02, -2.987e-03, 1.740e-02, -2.946e-02 };\n\tr = MulAdd(s0_0, M4(-1.149e-01, 8.911e-02, 2.520e-01, -2.292e-03, 5.639e-02, -4.318e-02, 1.845e-02, -7.860e-02, 6.697e-03, -1.714e-01, -3.535e-02, -2.981e-01, 5.744e-02, 8.686e-02, 1.889e-02, 2.883e-02), r);\n\tr = MulAdd(s0_1, M4(-4.305e-02, 1.415e-01, 5.839e-03, -1.340e-01, 4.330e-02, -7.875e-02, -1.012e-01, 3.681e-02, -4.121e-01, -4.761e-03, -1.401e-01, -1.585e-01, -2.174e-01, 2.217e-02, 2.682e-01, 6.936e-02), r);\n\tr = MulAdd(s0_2, M4(6.654e-02, 3.023e-02, -1.800e-01, 1.687e-01, 2.321e-02, 7.973e-03, -2.736e-02, -1.150e-01, -5.164e-02, 2.459e-01, 8.378e-02, 7.680e-02, 1.271e-01, -4.691e-02, 1.622e-02, -2.721e-02), r);\n\tr = MulAdd(s0_3, M4(5.899e-02, -9.233e-02, -1.391e-01, -7.216e-02, -7.611e-02, 8.228e-02, 2.076e-01, 3.763e-02, -5.480e-01, 8.615e-02, 3.822e-01, -2.952e-02, -2.619e-01, -5.971e-02, -9.140e-02, 2.824e-01), r);\n\tr = MulAdd(s0_4, M4(-1.667e-01, -2.103e-01, -1.571e-01, -5.567e-02, 1.152e-02, 5.381e-03, -7.040e-02, -3.720e-02, -5.531e-01, 5.504e-02, -5.912e-02, -8.021e-02, 1.411e-01, 8.420e-02, 2.038e-01, 1.034e-01), r);\n\tr = MulAdd(s0_5, M4(2.704e-01, 8.585e-02, -5.662e-02, 4.992e-02, -6.336e-02, 3.235e-01, 2.407e-01, -1.285e-02, -1.531e-01, 2.347e-01, 4.188e-02, -7.345e-03, 6.674e-02, 3.855e-03, 7.364e-02, -1.997e-01), r);\n\tr = MulAdd(s0_6, M4(-1.012e-01, -5.227e-03, 1.766e-01, -9.700e-02, 5.514e-02, -4.035e-02, 7.468e-02, -4.129e-02, -5.134e-01, -1.258e-01, 4.091e-01, 5.850e-02, -8.517e-03, -2.508e-01, -3.440e-01, -8.356e-02), r);\n\tr = MulAdd(s0_7, M4(-2.280e-02, 6.713e-02, 9.325e-02, 4.812e-02, 2.527e-01, -3.502e-02, 1.417e-01, -2.768e-01, -2.534e-01, 3.620e-01, -1.574e-01, 2.076e-02, 2.430e-01, -2.213e-01, 1.102e-01, -1.316e-01), r);\n\tr = MulAdd(s0_8, M4(1.387e-01, -5.009e-03, -5.013e-02, -3.373e-02, -1.025e-01, -1.323e-01, 6.666e-02, -8.504e-02, 1.629e-01, -1.330e-01, -1.634e-01, -2.773e-01, 7.168e-02, 4.939e-03, -6.583e-02, -1.095e-01), r);\n\tr = MulAdd(s1_0, M4(1.867e-01, 1.141e-01, 1.059e-01, 5.602e-03, 3.579e-03, 2.358e-02, -1.528e-01, 2.542e-02, 1.274e-01, -4.719e-02, 5.717e-02, -7.865e-02, 3.376e-02, -1.231e-01, -6.044e-02, 3.892e-02), r);\n\tr = MulAdd(s1_1, M4(9.617e-02, -7.401e-02, -5.730e-02, -3.455e-01, 6.837e-02, 2.837e-02, -1.304e-01, -8.394e-02, 1.283e-01, -6.171e-02, 3.258e-02, 1.780e-02, -1.206e-01, -1.125e-01, 8.222e-04, -3.074e-02), r);\n\tr = MulAdd(s1_2, M4(-1.065e-01, -1.395e-01, -2.066e-01, 1.635e-02, -2.101e-01, -5.436e-03, 8.472e-02, 4.570e-02, 5.396e-02, 1.469e-02, 1.089e-03, -1.631e-02, -3.540e-02, -1.250e-01, -1.126e-01, -1.950e-02), r);\n\tr = MulAdd(s1_3, M4(2.203e-01, -2.307e-03, 5.877e-02, -1.447e-02, -1.733e-01, 5.954e-02, -6.173e-03, -1.295e-02, 1.613e-01, 1.474e-01, 1.018e-01, -3.808e-03, -4.718e-02, -6.116e-02, -3.219e-02, 8.776e-04), r);\n\tr = MulAdd(s1_4, M4(-9.098e-02, -2.021e-01, 1.750e-01, 3.967e-02, -2.998e-01, 1.723e-01, -3.029e-01, -3.594e-02, 2.998e-02, -8.915e-03, 2.087e-01, -8.583e-02, -9.560e-02, -7.081e-02, 9.754e-02, 1.962e-01), r);\n\tr = MulAdd(s1_5, M4(-8.326e-02, 6.852e-03, -1.690e-01, 9.679e-02, -1.238e-01, -4.300e-02, -3.576e-02, 2.092e-01, -1.946e-01, 8.110e-03, 6.578e-02, -6.703e-03, 1.955e-01, 1.397e-01, 1.084e-01, -7.745e-02), r);\n\tr = MulAdd(s1_6, M4(2.939e-01, 1.634e-01, -1.056e-01, 6.142e-02, -2.635e-02, -2.484e-02, -3.410e-01, 1.010e-01, 2.867e-02, -2.709e-02, -3.079e-03, 1.117e-01, -2.867e-02, 1.411e-01, -1.167e-01, 6.789e-02), r);\n\tr = MulAdd(s1_7, M4(-3.754e-02, 1.528e-01, -4.843e-02, 1.548e-01, -8.606e-02, 1.717e-01, -3.897e-01, 1.396e-01, 9.584e-03, 1.372e-01, -1.273e-01, 2.555e-02, 3.264e-02, 1.434e-01, -2.085e-02, 1.285e-01), r);\n\tr = MulAdd(s1_8, M4(-2.823e-01, 4.009e-02, -8.112e-03, -7.967e-02, 5.913e-02, -3.484e-02, -1.382e-01, 1.537e-01, -3.762e-02, -5.813e-02, 5.067e-02, 4.077e-02, -7.708e-02, 1.750e-01, -8.353e-02, -6.431e-02), r);\n\tr = MulAdd(s2_0, M4(-4.761e-02, -3.946e-02, -1.049e-01, 1.499e-02, 6.860e-02, 8.789e-02, 4.937e-02, 1.417e-02, 1.655e-02, -1.264e-01, -4.095e-02, -5.697e-02, 2.133e-02, 4.595e-02, -8.380e-02, -3.804e-02), r);\n\tr = MulAdd(s2_1, M4(-7.046e-04, 1.721e-01, 2.778e-01, -8.966e-02, -5.113e-02, 2.596e-02, 1.490e-01, -9.792e-02, -7.188e-02, -2.215e-02, -6.325e-02, -6.428e-02, 5.408e-02, -2.526e-01, 2.887e-01, -3.238e-02), r);\n\tr = MulAdd(s2_2, M4(2.108e-02, -9.977e-02, -5.268e-02, 9.567e-02, -4.931e-03, 7.264e-03, -4.562e-02, -1.025e-02, 6.414e-02, -3.967e-02, 7.990e-03, 3.237e-03, -6.207e-02, -1.327e-02, -3.273e-01, -4.403e-02), r);\n\tr = MulAdd(s2_3, M4(4.363e-02, 7.571e-02, 1.539e-02, 1.079e-02, 1.036e-02, -3.000e-02, -1.272e-01, -3.467e-02, 4.469e-02, 1.152e-01, 2.394e-01, -9.794e-02, -6.073e-02, 1.029e-01, 5.621e-02, -1.406e-01), r);\n\tr = MulAdd(s2_4, M4(-3.829e-01, -8.430e-02, 3.327e-01, -4.212e-02, 5.647e-02, 5.437e-02, 6.288e-02, 1.051e-01, 6.112e-02, 1.456e-02, 6.431e-02, -7.205e-02, -2.087e-01, 4.363e-01, 1.342e-01, -2.842e-01), r);\n\tr = MulAdd(s2_5, M4(2.446e-01, 3.877e-02, 1.068e-01, 3.048e-02, 5.673e-02, 5.352e-02, 1.736e-01, 1.529e-02, -7.917e-03, -8.124e-03, -8.913e-02, -3.513e-02, 4.064e-02, 2.757e-01, -2.200e-01, -7.200e-02), r);\n\tr = MulAdd(s2_6, M4(1.532e-01, -6.366e-02, -3.245e-01, 1.011e-01, 7.095e-02, -5.889e-02, -7.494e-02, 2.072e-02, -2.135e-02, 2.221e-03, -5.211e-03, -5.587e-02, -4.618e-02, -3.320e-02, 2.060e-01, -1.612e-01), r);\n\tr = MulAdd(s2_7, M4(1.381e-01, -1.927e-01, -2.183e-01, 3.981e-02, 1.200e-02, 2.706e-02, -1.832e-01, 3.230e-02, -1.780e-01, 2.596e-02, -2.166e-03, -5.568e-04, 5.992e-02, -7.717e-02, 4.973e-01, -1.275e-01), r);\n\tr = MulAdd(s2_8, M4(-1.990e-02, 8.939e-02, 2.998e-02, -3.216e-02, -8.370e-02, -2.356e-02, -9.606e-02, -6.189e-02, -1.653e-02, 3.231e-02, -5.651e-02, -3.294e-02, -1.618e-02, 1.377e-01, 1.816e-01, -9.103e-02), r);\n\tr = MulAdd(s3_0, M4(-2.448e-02, 1.816e-02, -6.946e-02, -5.889e-02, 3.135e-02, 3.722e-04, -3.753e-02, -5.770e-02, 1.193e-01, -8.895e-02, -2.573e-01, 1.528e-02, -5.268e-04, 6.228e-02, -4.613e-02, 8.812e-02), r);\n\tr = MulAdd(s3_1, M4(1.488e-01, -1.580e-01, -1.913e-02, -1.196e-01, -8.225e-02, -1.431e-01, -6.842e-02, -4.574e-02, 3.027e-02, 1.272e-01, 9.118e-02, -5.961e-02, 3.162e-02, 2.013e-01, 2.842e-01, 1.782e-01), r);\n\tr = MulAdd(s3_2, M4(-1.842e-01, -1.236e-01, 4.733e-03, 4.541e-02, -2.843e-01, 1.886e-02, -5.482e-02, 1.554e-02, -3.282e-04, 1.603e-01, 2.066e-01, 8.032e-02, -1.252e-01, 9.479e-02, 6.652e-02, -3.031e-02), r);\n\tr = MulAdd(s3_3, M4(1.332e-01, 6.801e-02, 8.690e-02, -1.644e-01, -1.712e-01, 1.379e-03, 5.773e-02, 1.829e-01, -1.392e-01, -3.067e-02, -1.159e-01, -2.234e-01, 6.363e-02, 2.278e-02, -8.508e-02, 1.793e-01), r);\n\tr = MulAdd(s3_4, M4(-1.939e-01, -2.012e-01, -2.093e-02, -2.581e-01, 6.079e-02, 2.150e-01, -1.328e-01, 2.465e-01, -1.639e-01, -1.367e-01, 5.548e-02, -6.148e-02, -8.833e-02, -2.174e-01, -1.782e-01, 6.176e-02), r);\n\tr = MulAdd(s3_5, M4(1.715e-01, -4.351e-02, -5.803e-02, -3.304e-02, 2.949e-01, -8.398e-02, -6.903e-02, 3.449e-01, -3.465e-01, -6.238e-02, 6.393e-03, 5.881e-02, 8.145e-02, 3.321e-02, 3.255e-01, 9.732e-02), r);\n\tr = MulAdd(s3_6, M4(-9.109e-02, 2.088e-02, -2.294e-02, -2.026e-02, 3.452e-02, -1.362e-01, -2.975e-01, 1.434e-01, 2.172e-02, 4.001e-02, 4.512e-02, 9.264e-02, -1.299e-03, -1.395e-02, 5.402e-02, 3.233e-02), r);\n\tr = MulAdd(s3_7, M4(5.424e-02, 1.469e-03, 1.920e-01, 7.914e-02, 8.262e-02, 2.975e-01, 1.553e-01, 1.052e-01, 7.508e-02, -9.778e-02, 1.060e-02, 9.677e-02, 1.410e-01, -1.261e-01, -1.352e-01, 4.144e-02), r);\n\tr = MulAdd(s3_8, M4(-7.174e-02, 1.715e-01, 5.468e-02, -6.194e-02, 3.492e-01, -1.378e-01, -1.953e-01, 1.411e-01, 1.519e-01, -8.186e-02, 6.761e-02, 2.683e-02, -5.830e-02, -4.595e-02, -5.331e-02, -8.498e-02), r);\n\tr = MulAdd(s4_0, M4(-5.072e-02, -3.540e-03, 8.559e-02, 1.311e-01, -1.522e-02, -9.324e-02, -1.275e-01, 4.831e-02, -4.644e-02, -1.001e-01, -1.506e-01, -1.311e-01, 1.272e-02, -7.014e-02, 2.022e-02, 6.296e-02), r);\n\tr = MulAdd(s4_1, M4(-2.854e-02, 1.655e-01, 8.404e-02, -5.780e-02, 3.009e-02, -6.629e-02, -5.704e-02, -6.469e-02, 5.247e-02, -1.604e-01, -9.047e-02, -2.845e-01, 9.670e-02, -1.796e-01, -1.380e-01, -3.574e-03), r);\n\tr = MulAdd(s4_2, M4(-2.697e-03, -4.975e-03, -7.660e-03, 7.743e-02, 3.247e-02, -1.067e-01, -1.018e-01, -1.520e-01, -8.117e-02, -2.336e-02, -1.463e-02, 5.555e-02, 4.583e-03, 1.768e-01, 4.816e-02, -3.692e-02), r);\n\tr = MulAdd(s4_3, M4(1.620e-01, 8.388e-02, -1.169e-01, -3.581e-02, -4.106e-02, -3.627e-02, 1.430e-01, 5.196e-02, -1.702e-01, -3.480e-02, 4.717e-01, -3.194e-02, -3.970e-03, 2.198e-02, -8.772e-02, 5.059e-02), r);\n\tr = MulAdd(s4_4, M4(9.552e-02, 8.912e-02, 1.907e-01, 1.027e-01, -1.978e-02, 7.419e-02, 1.448e-02, 8.088e-02, -1.997e-02, -2.794e-02, -1.128e-01, 2.479e-01, 1.915e-01, 1.131e-01, 1.333e-01, 1.439e-01), r);\n\tr = MulAdd(s4_5, M4(-2.261e-02, 1.215e-01, 2.526e-02, -1.030e-01, 2.554e-02, -5.495e-02, -2.359e-01, 7.267e-02, -6.545e-02, 5.010e-02, -1.986e-01, 1.409e-02, 3.694e-02, 2.374e-02, -1.637e-01, -1.430e-01), r);\n\tr = MulAdd(s4_6, M4(-9.275e-03, -3.836e-02, -2.318e-01, -1.291e-02, 1.239e-02, 2.026e-02, -6.110e-02, 1.283e-01, -2.133e-02, 1.175e-01, -8.486e-02, 1.390e-01, -5.388e-02, 6.180e-03, 5.454e-02, -4.336e-02), r);\n\tr = MulAdd(s4_7, M4(2.686e-03, -2.226e-01, -1.882e-01, -3.096e-02, -1.566e-01, 4.253e-02, 1.095e-01, 6.164e-02, 2.204e-01, 1.283e-01, 1.472e-03, 4.472e-03, -1.886e-02, -7.630e-02, -6.029e-03, 2.414e-02), r);\n\tr = MulAdd(s4_8, M4(-1.006e-02, -1.550e-01, 1.131e-01, 8.689e-02, 1.551e-01, 4.256e-02, 1.496e-02, 1.045e-01, -5.234e-02, 6.156e-02, 8.616e-02, -1.477e-02, 7.000e-02, 4.368e-02, -6.712e-02, -8.073e-03), r);\n\tr = MulAdd(s5_0, M4(-1.165e-02, 3.834e-02, 1.929e-01, 2.580e-01, 3.527e-02, -3.028e-02, 1.145e-01, -4.400e-02, -3.880e-02, 1.096e-01, 3.407e-02, 9.251e-02, -8.576e-03, -4.400e-02, -5.589e-02, -4.480e-02), r);\n\tr = MulAdd(s5_1, M4(-5.521e-02, 1.958e-01, 9.908e-03, -3.048e-02, -1.328e-01, -1.558e-01, -1.928e-01, -3.044e-02, 9.158e-02, 2.361e-01, 1.509e-01, -1.519e-01, -1.864e-01, -2.131e-01, -1.853e-01, -9.660e-02), r);\n\tr = MulAdd(s5_2, M4(8.105e-02, 5.143e-02, 8.310e-02, -3.027e-02, 2.522e-02, -3.523e-02, 6.113e-02, -4.142e-02, 5.358e-02, 2.218e-02, -4.899e-02, 6.927e-02, -1.362e-02, -4.119e-02, -4.594e-02, -8.481e-02), r);\n\tr = MulAdd(s5_3, M4(1.161e-01, -2.525e-02, -3.580e-01, -1.583e-01, 8.566e-02, 1.360e-01, -2.126e-02, 1.256e-01, 8.959e-02, -2.142e-01, -4.432e-01, -2.091e-02, -1.128e-01, -6.440e-02, -9.157e-02, -7.419e-02), r);\n\tr = MulAdd(s5_4, M4(1.432e-01, 9.207e-02, 1.216e-01, 1.868e-01, 4.710e-03, 6.143e-02, 2.036e-02, 2.773e-02, 3.342e-01, -3.121e-02, 1.280e-01, -4.769e-01, -1.556e-01, 1.409e-01, 7.212e-02, 2.450e-01), r);\n\tr = MulAdd(s5_5, M4(-4.965e-02, -2.193e-01, 4.564e-02, -1.510e-02, -1.967e-01, 2.075e-01, -7.082e-02, -1.474e-01, -1.644e-01, -1.231e-02, 1.465e-03, -8.072e-02, 5.559e-02, -2.192e-02, -8.904e-02, 8.271e-02), r);\n\tr = MulAdd(s5_6, M4(2.420e-02, -7.204e-02, -1.764e-01, -1.620e-01, 3.617e-02, -6.037e-02, -7.868e-02, -4.807e-02, -1.401e-01, -1.517e-02, -7.456e-03, -1.255e-01, -4.744e-02, 7.887e-02, 2.760e-01, -8.194e-02), r);\n\tr = MulAdd(s5_7, M4(-1.462e-01, -5.964e-02, -1.076e-01, 1.317e-01, 1.432e-01, -1.444e-01, 1.604e-01, -1.333e-01, 9.255e-02, -3.494e-01, -1.301e-01, -1.314e-01, -1.797e-01, -9.114e-02, 2.844e-01, 8.951e-02), r);\n\tr = MulAdd(s5_8, M4(9.544e-02, -2.597e-01, -5.053e-02, 7.503e-02, -3.005e-02, -1.006e-01, -2.448e-02, -5.392e-03, -3.139e-03, 1.526e-02, 6.304e-02, -3.833e-02, 3.146e-01, 2.355e-01, 1.633e-01, 3.961e-02), r);\n\tr = MulAdd(s6_0, M4(4.636e-02, 4.262e-02, 3.864e-02, 9.925e-03, 1.837e-01, -1.999e-02, -6.969e-02, 1.142e-01, 2.331e-03, 1.973e-02, -1.066e-02, 3.883e-03, 8.835e-02, 4.475e-02, 7.398e-02, 1.614e-01), r);\n\tr = MulAdd(s6_1, M4(-5.366e-03, 9.651e-03, -1.386e-01, 7.966e-02, -5.665e-02, 2.822e-01, 7.414e-02, 9.816e-02, 9.970e-02, -1.057e-01, -1.293e-01, -2.524e-02, -1.975e-01, 8.194e-04, 7.563e-02, 7.114e-02), r);\n\tr = MulAdd(s6_2, M4(-9.110e-02, 3.338e-02, 5.020e-02, 3.362e-02, -5.810e-02, 3.438e-02, -3.802e-02, 4.279e-02, 3.974e-02, -9.508e-02, -2.217e-02, -2.416e-02, 4.781e-02, 5.796e-02, -2.198e-02, -7.349e-02), r);\n\tr = MulAdd(s6_3, M4(3.351e-02, -1.827e-02, 4.784e-02, 6.976e-03, -1.206e-01, -1.366e-01, -1.192e-01, 6.868e-02, 1.499e-01, 1.403e-02, 3.193e-01, -9.053e-02, 2.399e-02, 5.364e-02, -1.321e-01, 5.013e-02), r);\n\tr = MulAdd(s6_4, M4(-1.453e-02, -1.141e-01, -7.246e-02, 1.635e-01, 1.065e-01, 2.452e-02, -3.737e-02, -1.136e-01, -1.491e-01, -3.948e-01, 8.181e-02, 1.890e-02, 2.061e-01, 4.008e-02, 8.056e-02, 7.170e-02), r);\n\tr = MulAdd(s6_5, M4(1.725e-01, -6.943e-02, -1.250e-01, -2.471e-02, -5.219e-02, -1.457e-02, 7.348e-02, 1.527e-02, 1.720e-01, -2.917e-01, 8.404e-02, 1.338e-02, 1.483e-02, -7.198e-03, 1.363e-01, 5.711e-02), r);\n\tr = MulAdd(s6_6, M4(-1.382e-02, 3.408e-02, 2.277e-02, -6.609e-03, -1.179e-02, -1.054e-01, 1.119e-01, 9.839e-02, 2.587e-02, 1.137e-01, 1.036e-01, -1.115e-02, 4.407e-02, -4.043e-02, -3.306e-01, -6.428e-02), r);\n\tr = MulAdd(s6_7, M4(-9.106e-03, 1.359e-01, 1.737e-01, 1.440e-01, 1.975e-01, -1.186e-01, -2.003e-01, 1.971e-02, -1.398e-01, 1.812e-01, 3.037e-01, 1.114e-01, 1.335e-03, -5.942e-02, -1.107e-01, 5.152e-02), r);\n\tr = MulAdd(s6_8, M4(1.070e-02, 1.372e-01, 2.074e-02, 1.492e-02, -1.984e-02, -3.483e-02, 1.191e-02, 2.197e-02, 2.504e-01, 7.123e-02, 5.291e-02, 1.117e-01, 4.101e-02, -6.315e-04, -6.324e-03, 7.728e-02), r);\n\tr = MulAdd(s7_0, M4(-3.974e-02, 2.985e-02, -1.092e-02, 1.240e-01, 1.882e-01, -3.639e-02, 1.109e-01, -1.198e-01, -1.671e-02, 1.336e-02, -5.847e-04, 1.193e-03, 2.677e-01, -5.223e-03, -4.448e-02, 1.367e-01), r);\n\tr = MulAdd(s7_1, M4(-3.101e-01, 2.589e-01, 3.798e-01, -1.355e-01, 8.195e-02, 5.822e-02, -7.400e-02, -1.067e-01, -7.814e-02, 1.383e-01, 5.114e-02, 1.185e-01, 1.133e-01, -2.103e-01, -2.439e-01, -1.480e-01), r);\n\tr = MulAdd(s7_2, M4(-1.113e-01, 3.120e-01, 1.693e-01, -5.996e-01, 2.809e-02, -4.451e-02, 7.395e-02, -6.342e-02, -3.381e-02, 4.870e-02, -1.399e-03, -6.268e-02, 1.393e-01, 6.764e-02, 3.476e-01, -1.854e-01), r);\n\tr = MulAdd(s7_3, M4(4.503e-02, 1.243e-01, -1.130e-01, 2.658e-02, 1.479e-01, 4.798e-02, 1.252e-01, -1.806e-02, -7.891e-02, 1.534e-02, -3.566e-03, 2.627e-02, 5.887e-02, -1.256e-01, -5.538e-01, -2.069e-01), r);\n\tr = MulAdd(s7_4, M4(-2.137e-01, -1.263e-01, -6.078e-02, -1.987e-01, -1.223e-01, -1.493e-01, 8.156e-02, 8.118e-02, -1.225e-01, 3.500e-02, 1.243e-01, 5.459e-03, -1.236e-01, 6.559e-01, 2.614e-01, -1.698e-01), r);\n\tr = MulAdd(s7_5, M4(-3.382e-01, 5.502e-02, 1.169e-01, -3.525e-01, 7.489e-03, -2.617e-02, -8.019e-02, -1.182e-01, -3.470e-02, 2.337e-02, 1.442e-02, -5.355e-02, 3.594e-01, 3.674e-01, 1.463e-01, 3.906e-02), r);\n\tr = MulAdd(s7_6, M4(-1.151e-02, -2.260e-02, -3.088e-02, -6.555e-02, 7.364e-04, -3.801e-02, 6.501e-03, 3.616e-02, 6.097e-02, -6.920e-02, -7.986e-02, -6.582e-02, 2.156e-02, -1.616e-01, -4.479e-01, -1.592e-01), r);\n\tr = MulAdd(s7_7, M4(-6.885e-02, -1.099e-02, -9.592e-02, -9.008e-02, 5.067e-02, -7.398e-02, -5.587e-02, -5.412e-02, 1.803e-01, -7.075e-02, -5.241e-01, -1.093e+00, 1.650e-02, 9.611e-02, 2.075e-01, -4.235e-02), r);\n\tr = MulAdd(s7_8, M4(1.153e-01, 1.718e-02, 8.889e-02, -8.588e-02, -2.290e-01, 1.386e-02, 6.186e-03, 4.417e-02, -2.398e-01, -8.062e-02, -8.487e-02, -2.124e-01, -4.520e-02, 1.713e-01, -1.170e-01, 1.027e-01), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 4.700e-02, -8.415e-04, 3.618e-02, -1.033e-02 };\n\tr = MulAdd(s0_0, M4(-3.484e-02, 1.363e-01, 1.128e-02, 2.731e-02, 2.148e-01, 2.105e-02, 5.216e-02, 5.292e-02, -1.420e-01, -1.113e-01, 7.175e-02, 2.105e-01, -1.338e-01, -1.191e-01, -5.884e-02, -1.030e-01), r);\n\tr = MulAdd(s0_1, M4(-1.851e-01, -1.903e-02, 8.249e-02, 2.198e-02, -2.887e-02, -1.088e-01, -4.141e-03, 6.071e-02, -5.344e-01, 5.386e-02, 2.128e-01, 3.875e-01, 2.583e-01, -2.893e-02, 6.592e-02, -7.484e-03), r);\n\tr = MulAdd(s0_2, M4(1.078e-01, 1.461e-01, -1.388e-02, 1.416e-01, 9.463e-02, -7.817e-02, 2.688e-02, 3.827e-02, 1.508e-01, 1.824e-01, -4.168e-02, 2.600e-01, 4.083e-02, -2.807e-02, -1.836e-02, -8.304e-03), r);\n\tr = MulAdd(s0_3, M4(-1.126e-01, -1.466e-01, -3.001e-02, 1.208e-01, 4.733e-02, -1.028e-01, 5.886e-03, -5.126e-03, -1.510e-01, 3.632e-01, -2.124e-01, 2.895e-01, -1.412e-01, 9.587e-02, -7.396e-02, 8.584e-02), r);\n\tr = MulAdd(s0_4, M4(-7.479e-02, -7.598e-03, 1.048e-01, -1.165e-02, -2.234e-01, -1.819e-01, -6.609e-05, 2.110e-01, -2.571e-02, 2.342e-02, -1.309e-01, -7.539e-03, -1.236e-01, 1.297e-01, -1.038e-01, 1.552e-01), r);\n\tr = MulAdd(s0_5, M4(6.023e-02, 8.846e-02, -1.023e-01, -1.589e-02, -9.358e-03, -3.013e-02, -4.546e-02, 7.737e-02, -3.049e-02, 9.323e-02, -1.501e-01, 1.910e-01, 2.322e-01, -1.065e-01, 4.293e-02, -7.179e-03), r);\n\tr = MulAdd(s0_6, M4(1.627e-02, -1.165e-02, 6.617e-02, -1.753e-01, -5.665e-02, -9.799e-02, -9.912e-03, 2.379e-01, 1.711e-01, 1.360e-01, 1.661e-01, 3.947e-01, 6.462e-03, -1.389e-01, 1.025e-01, 1.542e-01), r);\n\tr = MulAdd(s0_7, M4(1.922e-01, -1.436e-02, 5.552e-02, -7.602e-04, -1.403e-01, -6.904e-02, 1.033e-01, -1.636e-01, 3.080e-01, -1.015e-04, 4.191e-02, 4.467e-01, -2.803e-02, 9.106e-02, 1.607e-01, 1.954e-02), r);\n\tr = MulAdd(s0_8, M4(-3.284e-02, -6.743e-02, 8.716e-03, 2.141e-02, -9.278e-03, -1.025e-01, -4.230e-03, -3.253e-02, -2.380e-01, -1.509e-01, 3.078e-01, -1.802e-02, 1.304e-01, 8.580e-02, -6.820e-04, -1.603e-02), r);\n\tr = MulAdd(s1_0, M4(9.042e-02, -1.366e-01, 1.458e-01, 1.153e-04, -2.110e-02, -9.788e-02, 5.997e-03, 7.205e-02, 1.532e-01, 1.358e-01, 7.913e-03, -3.246e-03, 4.556e-03, 5.523e-02, -7.687e-02, -9.071e-02), r);\n\tr = MulAdd(s1_1, M4(-9.420e-03, -9.019e-02, -8.659e-02, -8.480e-02, -3.355e-01, 3.096e-01, -7.870e-02, -1.325e-01, 1.520e-01, -5.675e-02, -4.352e-04, -4.262e-02, 9.278e-02, 1.046e-01, 1.015e-02, -6.058e-03), r);\n\tr = MulAdd(s1_2, M4(-1.024e-01, -4.386e-02, 4.412e-02, -2.980e-02, 1.547e-01, 2.227e-01, -1.597e-01, -8.375e-02, 6.362e-02, -5.846e-02, 3.936e-02, -4.481e-02, 9.786e-02, -3.618e-02, 1.203e-01, -1.681e-02), r);\n\tr = MulAdd(s1_3, M4(-8.245e-02, 3.859e-02, -9.779e-02, 4.944e-02, -1.470e-01, 3.137e-01, -2.276e-02, -1.920e-01, -1.117e-01, -1.752e-01, 7.393e-02, -1.024e-01, 4.972e-03, -6.864e-02, 1.742e-02, -8.623e-03), r);\n\tr = MulAdd(s1_4, M4(9.116e-02, 3.166e-01, 9.215e-03, -2.985e-01, -4.718e-01, 3.885e-01, -1.375e-01, -3.841e-01, -2.298e-01, 3.961e-02, -1.559e-01, 3.777e-03, 3.737e-01, -4.798e-02, 1.972e-01, -9.030e-02), r);\n\tr = MulAdd(s1_5, M4(1.063e-01, 5.654e-02, 9.905e-02, -4.074e-02, 1.597e-01, 2.864e-01, -1.859e-01, 3.723e-02, 1.923e-02, -6.971e-02, 5.062e-02, -6.205e-03, 2.413e-01, -4.901e-02, -9.816e-02, -1.688e-01), r);\n\tr = MulAdd(s1_6, M4(-5.862e-02, -2.331e-01, 1.486e-02, -5.033e-02, 8.738e-02, 3.527e-01, -1.055e-01, 8.905e-02, -8.721e-02, 3.613e-02, 9.311e-02, -8.565e-02, 1.348e-01, 9.023e-02, -5.384e-02, 2.078e-02), r);\n\tr = MulAdd(s1_7, M4(-7.510e-02, -2.392e-01, -4.755e-01, 8.797e-02, 1.964e-02, 4.879e-01, -1.827e-01, -2.588e-01, -3.040e-02, -1.410e-01, -5.313e-02, 1.515e-02, -1.777e-01, 3.547e-02, -1.833e-01, -4.035e-02), r);\n\tr = MulAdd(s1_8, M4(-3.043e-02, -6.401e-02, 1.010e-02, -1.899e-01, 2.236e-02, 1.968e-01, -8.204e-02, -6.947e-03, 3.201e-02, 1.249e-03, 1.314e-02, -6.879e-02, -2.536e-02, -9.149e-03, -6.333e-02, 3.822e-02), r);\n\tr = MulAdd(s2_0, M4(5.347e-02, 7.325e-03, -4.429e-02, -4.327e-02, -1.392e-01, -3.509e-02, -5.283e-02, 1.858e-02, 7.683e-02, 8.472e-02, -1.160e-01, 3.134e-02, -9.732e-02, -3.585e-01, 4.247e-02, 2.477e-02), r);\n\tr = MulAdd(s2_1, M4(-1.586e-01, -1.442e-01, 1.286e-01, -7.904e-02, 2.603e-02, 1.464e-01, 7.698e-02, -1.023e-01, -1.926e-01, -8.076e-02, 6.816e-02, -2.236e-03, 3.057e-01, 1.784e-01, -8.541e-02, 1.268e-01), r);\n\tr = MulAdd(s2_2, M4(2.412e-01, 1.712e-01, 1.838e-02, 9.514e-02, -7.224e-02, -2.570e-02, -3.206e-02, 7.936e-02, 2.439e-02, -1.086e-01, 2.443e-02, -5.714e-02, 8.040e-02, 1.994e-02, 7.100e-02, -1.015e-01), r);\n\tr = MulAdd(s2_3, M4(9.619e-02, 2.899e-02, -6.595e-02, 2.943e-01, -6.384e-02, -1.141e-02, 2.826e-02, 9.702e-02, 5.752e-02, -8.619e-02, -4.905e-02, -7.927e-02, -1.452e-02, 2.305e-01, -9.046e-02, -6.537e-04), r);\n\tr = MulAdd(s2_4, M4(-2.045e-01, -2.654e-02, 2.702e-01, -9.460e-02, 2.665e-02, -6.689e-02, -1.427e-01, 1.653e-01, 1.390e-01, -1.241e-01, 1.771e-01, -6.290e-02, -2.333e-01, -2.707e-01, 9.625e-03, -5.905e-02), r);\n\tr = MulAdd(s2_5, M4(8.847e-02, -7.852e-02, -1.493e-01, -9.243e-02, -2.261e-01, 7.904e-03, -7.501e-02, -2.753e-02, -6.426e-02, -9.592e-02, 5.333e-02, 2.715e-02, 3.946e-01, -4.773e-02, 5.602e-02, 8.862e-02), r);\n\tr = MulAdd(s2_6, M4(-1.205e-01, -6.520e-02, -5.556e-02, 3.410e-02, -6.862e-02, 5.047e-02, 9.071e-02, -1.081e-01, 3.530e-02, 1.150e-02, -1.697e-02, -4.909e-02, 2.646e-02, -1.374e-01, 4.384e-02, -5.705e-02), r);\n\tr = MulAdd(s2_7, M4(-1.264e-01, 1.952e-02, -1.369e-01, 1.110e-01, 5.948e-02, -1.002e-01, -3.700e-01, 2.251e-01, 1.225e-01, 7.785e-02, 1.945e-02, 3.239e-02, 2.355e-02, 2.343e-02, 2.768e-01, 4.173e-03), r);\n\tr = MulAdd(s2_8, M4(9.095e-02, -9.903e-02, -7.958e-04, 8.852e-02, -1.572e-01, -8.326e-03, 7.338e-02, 9.836e-02, -6.421e-02, 6.471e-02, -2.983e-02, -6.093e-03, 1.107e-01, -9.398e-02, -6.380e-02, 4.922e-02), r);\n\tr = MulAdd(s3_0, M4(-4.309e-02, -1.197e-01, 4.255e-02, -1.473e-02, -1.998e-01, -6.516e-02, -8.865e-02, -1.683e-01, -3.871e-02, 1.745e-01, -1.008e-01, 5.839e-02, 6.387e-02, 4.789e-02, 2.588e-02, 8.918e-02), r);\n\tr = MulAdd(s3_1, M4(1.241e-01, -3.877e-01, 2.505e-02, 9.344e-03, -8.102e-02, 4.774e-01, 1.097e-01, -1.704e-01, -2.908e-01, -2.172e-01, 5.179e-02, 7.486e-02, -3.017e-02, -5.884e-02, -1.501e-01, 1.206e-01), r);\n\tr = MulAdd(s3_2, M4(-7.797e-02, -1.143e-01, 2.076e-01, 1.485e-01, 7.942e-02, 2.727e-01, -2.411e-02, -2.504e-02, -6.716e-02, 1.004e-01, 8.960e-02, 2.700e-01, 9.010e-02, 1.735e-01, 6.447e-02, -1.233e-01), r);\n\tr = MulAdd(s3_3, M4(1.893e-01, -3.796e-03, 3.319e-02, 6.583e-02, -1.925e-01, 3.439e-01, -5.220e-02, -3.126e-02, 4.169e-03, 1.043e-02, 2.200e-01, 5.113e-01, -9.720e-02, 1.513e-01, -5.826e-02, 2.044e-01), r);\n\tr = MulAdd(s3_4, M4(1.065e-01, -3.098e-01, 5.500e-02, -1.968e-01, 2.995e-01, 1.819e-01, 1.623e-01, -4.408e-01, 1.195e-01, 4.975e-02, 3.792e-01, 7.896e-02, -5.645e-02, 1.141e-01, -2.436e-01, 1.889e-01), r);\n\tr = MulAdd(s3_5, M4(2.662e-01, -1.622e-01, 3.682e-01, -1.006e-02, 1.401e-01, 2.683e-01, -2.091e-01, -1.592e-01, -8.872e-02, -3.401e-02, -1.889e-03, 1.025e-01, -5.749e-02, 4.696e-02, 3.135e-01, -9.817e-02), r);\n\tr = MulAdd(s3_6, M4(2.941e-02, -7.613e-02, -6.551e-03, -1.035e-01, -7.753e-02, 4.135e-01, 6.004e-02, -1.295e-01, 2.653e-02, -1.741e-02, -1.511e-01, 2.690e-02, -6.961e-02, -3.361e-02, 1.144e-02, -8.718e-02), r);\n\tr = MulAdd(s3_7, M4(-4.181e-02, -1.020e-01, 2.157e-01, -9.168e-02, 1.548e-02, 2.957e-01, -2.600e-02, -2.993e-01, 4.842e-02, -7.354e-02, 2.110e-01, 1.405e-01, 1.667e-01, 1.008e-01, -6.331e-02, 6.662e-02), r);\n\tr = MulAdd(s3_8, M4(3.903e-03, -1.583e-01, -4.185e-02, -3.656e-02, -4.145e-03, 6.326e-03, -1.888e-01, 1.221e-02, -6.146e-02, -2.519e-02, 6.748e-02, 8.828e-02, -6.787e-02, -5.366e-02, 1.493e-02, 1.099e-02), r);\n\tr = MulAdd(s4_0, M4(-5.212e-02, -2.718e-02, -6.386e-02, 7.415e-02, 1.907e-03, 1.751e-01, -1.435e-02, -1.995e-02, -1.429e-01, -3.443e-02, 1.670e-01, 7.753e-02, -2.640e-03, 2.735e-02, 2.744e-02, 5.876e-02), r);\n\tr = MulAdd(s4_1, M4(6.529e-02, -9.429e-02, 4.892e-02, -1.701e-02, 1.001e-01, 7.521e-02, -5.676e-02, 4.098e-02, 1.464e-02, -3.263e-03, -1.239e-02, 1.567e-01, -1.362e-01, 4.094e-03, -1.228e-01, -4.357e-03), r);\n\tr = MulAdd(s4_2, M4(1.608e-02, 1.142e-01, -6.012e-02, -5.642e-03, -1.307e-02, 1.401e-01, -6.375e-03, -6.159e-02, 3.472e-02, -4.362e-02, 5.201e-02, -1.493e-02, -3.256e-02, 4.176e-03, -4.099e-02, 3.087e-03), r);\n\tr = MulAdd(s4_3, M4(-3.638e-02, 1.756e-01, -1.242e-02, 3.948e-02, 1.582e-01, 1.562e-01, 1.811e-02, -3.975e-02, 3.561e-01, -7.619e-03, 2.069e-01, -2.175e-01, 9.041e-03, -1.801e-01, 1.094e-01, -1.363e-01), r);\n\tr = MulAdd(s4_4, M4(-3.071e-01, -2.576e-01, 5.100e-02, -9.115e-02, 1.922e-01, 9.628e-02, -8.975e-02, 4.941e-02, 2.380e-01, -3.636e-03, -7.834e-03, -4.376e-01, 1.751e-01, -1.537e-01, 4.383e-02, -1.223e-01), r);\n\tr = MulAdd(s4_5, M4(5.033e-02, -5.616e-03, -6.727e-03, -6.098e-02, 7.306e-02, 1.751e-01, 2.450e-01, 3.670e-02, 1.730e-01, -8.718e-02, 3.038e-03, 1.224e-02, -1.678e-02, 9.115e-03, -3.014e-02, 1.537e-01), r);\n\tr = MulAdd(s4_6, M4(-1.150e-01, 2.567e-02, -2.899e-02, -6.135e-02, 3.416e-02, 8.015e-02, -1.608e-01, 1.962e-02, -4.545e-02, -1.634e-01, 3.203e-03, 7.314e-02, 5.206e-02, 4.898e-02, -9.349e-02, 7.265e-02), r);\n\tr = MulAdd(s4_7, M4(6.312e-02, 1.064e-01, -1.538e-01, 8.327e-02, -2.634e-02, 1.686e-02, -4.496e-02, -1.649e-02, -3.866e-02, 1.477e-02, -5.656e-02, 3.023e-02, -2.998e-01, 1.067e-01, 8.864e-02, 1.002e-01), r);\n\tr = MulAdd(s4_8, M4(3.159e-02, 6.080e-03, 4.017e-02, 9.761e-02, 7.659e-02, -2.756e-03, 7.293e-02, -1.748e-01, 5.821e-03, 4.578e-02, -6.616e-02, -1.362e-01, 2.252e-02, -4.367e-02, -7.143e-02, -7.386e-03), r);\n\tr = MulAdd(s5_0, M4(-5.706e-02, 8.028e-02, -4.827e-02, 7.617e-02, 3.856e-03, -5.172e-02, 6.074e-03, -3.814e-02, 3.856e-02, 1.129e-01, -2.847e-03, 5.457e-03, 1.055e-01, -3.678e-02, 2.637e-02, 7.666e-02), r);\n\tr = MulAdd(s5_1, M4(-1.340e-01, 2.221e-02, -1.840e-02, 1.375e-01, 6.071e-03, -4.839e-02, -6.450e-02, -2.356e-03, 1.429e-01, -1.235e-01, -1.162e-01, -3.469e-02, -6.388e-02, -1.347e-03, -1.941e-02, 3.643e-02), r);\n\tr = MulAdd(s5_2, M4(-2.089e-02, 2.257e-01, -3.685e-02, -2.035e-02, 2.204e-01, -1.359e-01, 5.952e-02, -7.981e-02, 7.158e-02, 3.472e-02, -3.589e-02, -5.763e-02, 2.305e-01, 1.726e-01, 1.183e-01, 1.133e-01), r);\n\tr = MulAdd(s5_3, M4(1.358e-01, -5.186e-02, -7.769e-02, 2.976e-01, -4.275e-02, -2.520e-02, 6.198e-03, -7.618e-02, -2.241e-01, -8.704e-02, -1.312e-01, 2.994e-02, 1.104e-01, -7.620e-02, 8.333e-02, -1.020e-01), r);\n\tr = MulAdd(s5_4, M4(-9.760e-02, 8.211e-02, 2.833e-01, 1.034e-01, -1.214e-01, -7.752e-02, 7.067e-02, -3.664e-02, -4.609e-01, -1.316e-01, -4.471e-01, 7.434e-02, 4.300e-01, -5.906e-02, 2.448e-01, -2.251e-01), r);\n\tr = MulAdd(s5_5, M4(2.167e-01, -1.186e-01, -4.355e-02, -1.010e-01, -2.587e-02, 1.355e-02, 1.408e-01, 1.098e-01, -9.257e-03, -1.341e-01, 1.755e-02, 1.099e-01, -1.095e-01, 9.256e-02, 7.816e-02, -4.387e-02), r);\n\tr = MulAdd(s5_6, M4(-6.477e-02, -7.389e-02, 7.819e-02, 2.130e-03, -1.563e-01, 1.246e-03, -9.797e-03, 1.048e-01, 8.510e-02, 1.086e-01, -1.951e-01, 3.935e-02, 8.755e-02, -2.165e-01, 6.726e-02, -9.942e-02), r);\n\tr = MulAdd(s5_7, M4(-9.343e-02, 3.212e-01, -1.502e-01, -2.067e-01, -1.848e-01, 2.423e-02, 6.901e-02, -1.206e-02, 3.628e-02, 4.616e-02, -1.154e-01, 3.674e-02, 1.506e-01, -7.028e-02, 2.274e-01, 1.040e-01), r);\n\tr = MulAdd(s5_8, M4(-1.124e-01, 7.508e-02, 9.292e-03, -2.175e-01, 2.326e-02, -1.198e-03, -1.011e-02, 9.965e-02, -9.725e-03, 8.435e-02, 8.129e-02, -3.936e-02, -1.041e-01, -8.395e-02, 3.440e-02, -1.548e-01), r);\n\tr = MulAdd(s6_0, M4(4.309e-02, 1.069e-02, 5.830e-02, 8.488e-02, 3.710e-02, -1.017e-01, -2.255e-02, 8.133e-02, 8.677e-02, -2.632e-02, -2.362e-03, 6.089e-02, -4.658e-02, -7.388e-02, -6.218e-03, 1.440e-02), r);\n\tr = MulAdd(s6_1, M4(-1.503e-01, -9.422e-02, -2.333e-02, -1.174e-01, -1.932e-01, -8.729e-02, -1.528e-01, 9.658e-02, -2.449e-02, 7.951e-02, 1.074e-02, -1.482e-01, -1.562e-02, 9.610e-02, -1.884e-02, -2.390e-03), r);\n\tr = MulAdd(s6_2, M4(-4.995e-02, 1.221e-01, 7.090e-02, -3.020e-02, 1.030e-01, 7.577e-02, -1.035e-01, -4.602e-02, -7.354e-03, 6.743e-02, -2.907e-02, 8.861e-02, -1.696e-01, 5.770e-02, 1.089e-02, -1.339e-02), r);\n\tr = MulAdd(s6_3, M4(-5.793e-02, -3.234e-02, -1.031e-02, -5.240e-02, -2.342e-01, 2.934e-01, -8.607e-03, -3.140e-02, -1.454e-01, -2.016e-01, -2.977e-02, -1.380e-01, -1.277e-02, 4.317e-02, -8.529e-02, -4.209e-02), r);\n\tr = MulAdd(s6_4, M4(1.006e-01, 7.887e-02, 2.682e-01, -1.783e-01, -3.231e-02, 2.358e-01, -3.659e-02, -9.102e-02, 3.925e-01, 3.797e-01, 3.037e-01, -4.256e-01, -1.432e-01, -4.200e-02, -2.229e-01, 1.447e-01), r);\n\tr = MulAdd(s6_5, M4(-3.216e-02, -7.773e-02, 6.950e-02, -6.786e-02, -5.007e-02, 5.464e-03, -4.387e-02, -1.906e-02, -5.423e-02, 9.449e-02, -1.166e-01, -4.415e-01, 1.884e-02, -1.511e-02, -3.674e-02, -3.145e-02), r);\n\tr = MulAdd(s6_6, M4(2.022e-03, -5.738e-02, -2.423e-02, -2.368e-02, 1.396e-01, -4.719e-02, 6.353e-02, 1.798e-02, -1.106e-01, -6.147e-02, 1.454e-02, -1.188e-01, 3.093e-02, 1.150e-01, -2.183e-02, 5.553e-02), r);\n\tr = MulAdd(s6_7, M4(-4.065e-02, 9.399e-02, 6.671e-02, -5.721e-03, 5.936e-03, 1.269e-01, -7.222e-02, -2.388e-02, 2.619e-01, -2.158e-02, -8.924e-02, 1.281e-01, -1.135e-01, -3.007e-03, -9.746e-02, 1.963e-02), r);\n\tr = MulAdd(s6_8, M4(-5.138e-02, -1.870e-02, -1.453e-01, 6.832e-02, 4.452e-04, -1.008e-02, -4.934e-02, 3.627e-02, -1.170e-01, -7.439e-02, -1.414e-01, 5.688e-02, 8.207e-04, -6.678e-02, -2.995e-02, -1.367e-02), r);\n\tr = MulAdd(s7_0, M4(-6.817e-02, 2.469e-01, -1.395e-01, 8.505e-02, 6.080e-02, -1.734e-01, 1.795e-01, -7.193e-02, 3.754e-02, -5.872e-02, 2.572e-02, 3.828e-02, 1.476e-01, -3.651e-01, 7.070e-03, 1.340e-01), r);\n\tr = MulAdd(s7_1, M4(-6.316e-03, -1.203e-01, 9.622e-02, 3.262e-02, 1.129e-01, 6.123e-02, -3.000e-02, 2.447e-01, -1.079e-01, -2.132e-03, -2.900e-02, 3.731e-02, 3.870e-01, 3.113e-01, -1.099e-01, 4.130e-01), r);\n\tr = MulAdd(s7_2, M4(-1.462e-01, -1.103e-01, -1.563e-01, 3.878e-02, -1.411e-01, 5.459e-02, 6.373e-02, -3.447e-02, -3.014e-02, -4.506e-02, -2.200e-02, -1.378e-02, -4.950e-01, 5.802e-02, -2.420e-02, 2.306e-01), r);\n\tr = MulAdd(s7_3, M4(-4.910e-02, -1.139e-01, -1.849e-01, 8.177e-03, -1.325e-01, -4.014e-01, 1.496e-01, -1.073e-01, 9.380e-02, -4.773e-02, -4.225e-03, 2.243e-01, 1.393e-01, 5.335e-01, -2.668e-01, -2.251e-01), r);\n\tr = MulAdd(s7_4, M4(-1.134e-01, 1.663e-01, 1.440e-01, 1.847e-01, 3.020e-01, -1.341e-01, 1.602e-01, 1.243e-01, 1.085e-01, 2.234e-02, 6.035e-02, 2.298e-01, 9.849e-01, -1.289e-01, 2.030e-01, -2.575e-01), r);\n\tr = MulAdd(s7_5, M4(2.986e-01, -1.106e-01, -5.721e-01, 3.473e-01, -7.268e-02, -1.940e-01, 9.358e-02, 5.481e-02, -8.842e-02, -7.366e-02, -1.714e-01, -4.578e-02, -2.949e-03, 1.634e-02, -4.188e-02, 5.497e-02), r);\n\tr = MulAdd(s7_6, M4(1.568e-02, 3.107e-03, -4.870e-02, 1.169e-01, -9.966e-03, 2.597e-02, 8.971e-02, -9.648e-02, -1.299e-02, 1.173e-01, 8.042e-02, 9.655e-02, 1.278e-02, -4.929e-02, 3.850e-02, 4.322e-02), r);\n\tr = MulAdd(s7_7, M4(-1.831e-02, -1.859e-02, -9.896e-04, 6.425e-02, 2.686e-02, -5.379e-02, 9.713e-02, 4.660e-02, -2.112e-01, -8.350e-02, -5.293e-01, 2.979e-01, -1.496e-01, -2.814e-01, 1.535e-01, 3.757e-01), r);\n\tr = MulAdd(s7_8, M4(-5.505e-04, 1.637e-01, -5.255e-02, 1.151e-01, -3.981e-02, 1.988e-02, -3.469e-02, 9.384e-04, 6.732e-02, -1.318e-01, -3.960e-02, 2.956e-01, -5.225e-02, -8.783e-03, -2.130e-01, 6.466e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.024e-03, -4.227e-03, -3.308e-02, 2.423e-02 };\n\tr = MulAdd(s0_0, M4(5.775e-03, -1.915e-02, 1.380e-01, -2.432e-01, -1.598e-03, -6.168e-02, 1.550e-02, 1.500e-02, -4.176e-02, -1.250e-01, 2.926e-01, -5.989e-01, -1.535e-02, -8.070e-03, 4.714e-02, -1.803e-02), r);\n\tr = MulAdd(s0_1, M4(-1.209e-01, -9.318e-02, -2.872e-02, 4.523e-03, -5.891e-02, 8.063e-02, 1.018e-02, -7.905e-02, 2.183e-01, -9.264e-02, -2.915e-01, -3.450e-01, 2.925e-02, 3.904e-02, -9.594e-02, 3.135e-01), r);\n\tr = MulAdd(s0_2, M4(-6.871e-03, 3.522e-02, 7.605e-02, 1.022e-01, -7.157e-02, -1.163e-02, -9.893e-02, -1.464e-01, -1.112e-01, 5.742e-02, 5.764e-03, 3.180e-03, -1.463e-01, 9.152e-02, 5.833e-02, -1.950e-01), r);\n\tr = MulAdd(s0_3, M4(-4.064e-02, 2.833e-02, -2.051e-02, 8.984e-02, -9.573e-03, -2.246e-02, -1.190e-01, -1.258e-01, -7.168e-01, -1.872e-01, 4.114e-01, 1.773e-01, 8.321e-02, -2.403e-02, -2.976e-02, 8.150e-02), r);\n\tr = MulAdd(s0_4, M4(-1.311e-02, 6.584e-02, 1.059e-01, 5.435e-02, 1.123e-01, -7.403e-02, -1.220e-02, -5.464e-02, -3.922e-01, -2.240e-01, 2.893e-01, -1.939e-01, 4.861e-02, -1.121e-01, 2.521e-02, -4.980e-02), r);\n\tr = MulAdd(s0_5, M4(1.092e-01, -5.111e-02, -5.624e-02, -2.115e-01, -3.735e-02, 3.550e-02, 6.980e-02, 1.099e-01, -1.519e-01, 1.773e-01, -2.026e-02, -4.360e-02, -1.731e-01, -6.923e-02, -5.706e-02, 7.600e-02), r);\n\tr = MulAdd(s0_6, M4(8.325e-02, 3.091e-02, 5.629e-02, 1.093e-01, 7.900e-02, 1.461e-03, -6.437e-02, 1.671e-02, -1.752e-01, 2.031e-02, 2.250e-01, 4.330e-02, 1.337e-01, 9.253e-02, -9.684e-02, -9.401e-02), r);\n\tr = MulAdd(s0_7, M4(-4.894e-02, 1.022e-02, -1.280e-01, -2.706e-01, 4.335e-02, -2.013e-02, -2.357e-01, -1.417e-01, -1.250e-01, 5.286e-02, -5.300e-03, 1.706e-01, 8.294e-02, 1.679e-01, -1.052e-01, -7.337e-02), r);\n\tr = MulAdd(s0_8, M4(-5.247e-02, 2.057e-01, 1.361e-01, 1.726e-01, 1.140e-02, -1.476e-02, 1.134e-01, -2.014e-01, 2.536e-02, 6.699e-02, 4.528e-02, -1.776e-01, -7.202e-02, -7.618e-02, -1.158e-02, 1.702e-01), r);\n\tr = MulAdd(s1_0, M4(-1.952e-03, -6.681e-03, -1.451e-01, 1.533e-01, 1.081e-02, 1.271e-02, 7.490e-02, 1.208e-01, -3.395e-02, -1.497e-02, -2.631e-02, 4.242e-02, 6.987e-02, -2.747e-02, 4.741e-02, 8.648e-02), r);\n\tr = MulAdd(s1_1, M4(3.855e-02, -3.548e-01, -2.914e-01, 3.399e-01, -1.315e-02, 1.092e-01, 2.029e-02, 3.275e-01, 2.009e-02, -5.757e-02, 3.717e-03, 4.731e-02, -2.055e-03, -1.584e-01, -1.442e-01, -1.122e-02), r);\n\tr = MulAdd(s1_2, M4(4.168e-02, -2.889e-01, -8.142e-03, 1.570e-01, 2.149e-02, -1.116e-01, 1.079e-01, 1.796e-01, -8.895e-02, -1.314e-02, -1.826e-02, -2.545e-02, 1.139e-01, -5.690e-02, 1.901e-02, -8.866e-02), r);\n\tr = MulAdd(s1_3, M4(4.450e-02, 5.745e-02, -2.083e-01, 3.231e-01, 6.007e-02, -1.125e-01, -1.766e-01, 1.204e-01, 1.214e-01, -5.118e-02, -2.882e-01, -2.368e-01, 1.062e-01, 3.331e-03, 2.207e-03, 1.383e-01), r);\n\tr = MulAdd(s1_4, M4(6.997e-02, -2.012e-01, 1.352e-01, 4.280e-01, 6.532e-03, -8.004e-02, 1.141e-01, 2.356e-02, -1.539e-02, -5.730e-02, -1.123e-01, 2.892e-02, -6.529e-02, -8.186e-02, 5.215e-02, 1.579e-01), r);\n\tr = MulAdd(s1_5, M4(-1.647e-02, -5.560e-02, 1.827e-01, -4.019e-02, -2.140e-01, -5.621e-02, 9.606e-02, 6.940e-01, 1.692e-01, -4.055e-02, -9.464e-02, 1.215e-01, -2.381e-01, -1.810e-03, -2.217e-02, 9.709e-03), r);\n\tr = MulAdd(s1_6, M4(1.115e-01, -6.232e-02, -1.842e-02, 1.088e-01, 1.617e-02, 1.216e-02, -4.391e-02, -6.813e-02, -1.200e-02, -6.210e-02, -1.142e-01, -1.091e-03, 4.177e-02, -2.947e-03, 8.917e-02, -6.753e-02), r);\n\tr = MulAdd(s1_7, M4(9.709e-02, -1.644e-01, -1.105e-01, 8.448e-01, -3.137e-01, -1.223e-03, 2.051e-01, 2.591e-01, 6.120e-02, -5.587e-02, 5.817e-02, 2.077e-02, -6.603e-02, 1.237e-01, -1.174e-01, 2.430e-01), r);\n\tr = MulAdd(s1_8, M4(1.362e-02, 4.226e-03, 9.381e-02, 3.483e-01, -2.034e-01, -1.091e-01, 8.972e-02, 2.797e-01, -8.692e-02, 9.477e-03, -4.873e-03, 5.114e-02, 6.086e-02, 6.953e-02, -1.248e-01, 1.996e-01), r);\n\tr = MulAdd(s2_0, M4(4.099e-02, -2.409e-02, -1.468e-01, 8.254e-02, -2.475e-02, 3.390e-02, -6.001e-02, -4.829e-05, 1.152e-01, -3.965e-02, -2.303e-02, -4.546e-02, 2.851e-02, 2.591e-02, -1.313e-01, -1.955e-01), r);\n\tr = MulAdd(s2_1, M4(1.176e-01, 8.189e-02, 1.254e-01, 4.143e-02, 1.287e-02, -8.469e-02, 5.808e-02, 6.216e-02, 2.254e-02, 4.490e-02, -1.897e-01, -5.535e-02, -7.591e-02, 6.961e-02, -2.051e-01, 1.174e-01), r);\n\tr = MulAdd(s2_2, M4(-4.913e-02, -3.644e-02, 8.416e-02, -2.713e-01, -2.499e-03, -8.316e-02, -8.719e-02, -2.012e-02, 1.115e-01, -7.469e-02, -2.734e-02, -8.379e-02, 8.680e-02, -1.107e-01, 1.119e-01, -2.290e-02), r);\n\tr = MulAdd(s2_3, M4(3.903e-02, 1.035e-01, 2.128e-02, 6.264e-02, 7.463e-02, -8.552e-02, 6.475e-02, -1.452e-01, -3.157e-02, -7.142e-02, 2.747e-02, 3.922e-01, -5.046e-02, -2.033e-01, -1.181e-01, -7.762e-02), r);\n\tr = MulAdd(s2_4, M4(2.228e-01, 4.668e-02, 4.773e-02, -2.063e-02, -1.213e-01, 7.994e-02, 1.636e-01, -1.763e-01, -5.805e-03, 3.983e-02, -5.585e-02, 7.100e-02, -8.525e-03, -4.250e-01, 8.265e-02, -1.339e-01), r);\n\tr = MulAdd(s2_5, M4(-5.280e-02, -3.438e-02, 3.967e-02, -1.133e-01, 6.352e-03, 1.601e-01, 5.818e-02, 1.326e-01, 1.388e-01, 7.722e-02, 1.132e-01, -3.909e-02, 2.519e-04, -1.723e-01, -1.168e-01, 1.490e-01), r);\n\tr = MulAdd(s2_6, M4(6.596e-03, -7.169e-02, 7.047e-02, -2.775e-01, -3.024e-03, 4.072e-02, 3.099e-03, -6.798e-02, 1.090e-02, 1.233e-03, -1.005e-02, 1.251e-01, 2.488e-02, -2.424e-02, 2.031e-02, 1.340e-02), r);\n\tr = MulAdd(s2_7, M4(1.544e-01, 4.432e-02, -1.298e-01, 1.629e-01, -6.938e-02, -2.137e-02, -1.190e-01, 1.030e-01, -2.966e-02, 2.679e-02, 6.637e-02, -3.573e-02, 4.394e-02, 5.055e-03, -8.268e-02, -1.051e-01), r);\n\tr = MulAdd(s2_8, M4(-4.681e-02, -4.377e-02, 8.927e-02, 5.233e-02, -6.401e-02, -1.798e-02, 8.584e-02, -1.031e-01, 1.057e-01, 3.010e-03, -4.292e-02, -6.953e-02, -3.872e-03, -2.862e-02, -2.269e-02, -7.101e-02), r);\n\tr = MulAdd(s3_0, M4(-2.470e-03, -6.987e-02, -6.901e-02, -1.364e-01, -5.554e-02, -1.329e-01, 2.559e-01, 9.696e-03, -9.911e-02, -2.221e-02, -2.538e-01, 1.265e-01, 4.683e-02, -6.980e-02, -1.954e-01, -8.603e-02), r);\n\tr = MulAdd(s3_1, M4(1.254e-01, 2.579e-01, -6.602e-02, 8.325e-02, 5.961e-02, -2.167e-01, 5.840e-01, -1.367e-01, -2.569e-01, -2.328e-03, -5.283e-03, -1.728e-01, -2.137e-02, 2.465e-01, 5.074e-01, 7.129e-02), r);\n\tr = MulAdd(s3_2, M4(-2.218e-02, -1.554e-01, 3.234e-02, -4.435e-02, 9.366e-02, -5.878e-03, -7.086e-02, 1.741e-01, -2.773e-01, 9.823e-02, 6.571e-02, -1.128e-02, -2.979e-02, 1.190e-01, 1.796e-01, 8.459e-02), r);\n\tr = MulAdd(s3_3, M4(-8.935e-02, 1.110e-01, 9.640e-02, 2.515e-01, -1.905e-01, 1.623e-01, 2.097e-01, 1.553e-01, -1.017e-01, -1.275e-01, 9.053e-02, -1.946e-01, -1.909e-01, -7.685e-02, -2.068e-02, -1.055e-02), r);\n\tr = MulAdd(s3_4, M4(2.260e-01, 1.087e-01, -3.768e-01, -3.065e-03, -2.213e-01, -2.439e-01, 1.779e-01, 6.739e-02, -1.644e-01, -8.631e-02, 4.835e-01, 3.453e-02, 1.473e-01, -6.266e-02, -3.585e-02, 6.705e-02), r);\n\tr = MulAdd(s3_5, M4(-9.208e-03, 9.673e-03, 2.043e-01, -2.582e-01, 1.772e-01, -3.914e-02, 1.438e-02, 4.101e-01, -5.037e-02, -6.065e-02, 2.835e-01, -1.345e-01, 3.581e-02, 1.024e-03, -8.780e-03, 3.375e-03), r);\n\tr = MulAdd(s3_6, M4(1.456e-01, -6.021e-02, 1.159e-01, -1.113e-01, -2.387e-02, 3.019e-01, -1.355e-01, -5.563e-02, -3.382e-01, -1.946e-01, 1.994e-01, 1.954e-01, -7.471e-02, -2.324e-02, -9.937e-03, 3.020e-02), r);\n\tr = MulAdd(s3_7, M4(1.250e-01, 5.734e-02, -3.092e-02, 4.361e-02, -1.033e-01, 4.429e-02, -6.119e-02, -1.869e-01, -9.072e-02, -2.381e-02, 1.206e-01, -1.160e-03, 3.010e-02, 8.222e-02, -1.184e-01, 4.834e-02), r);\n\tr = MulAdd(s3_8, M4(-5.493e-02, 6.257e-03, -1.606e-01, 6.701e-02, 1.589e-02, 6.510e-02, 1.324e-02, 5.111e-02, -1.510e-02, -1.567e-02, 7.450e-02, -1.451e-01, -1.068e-02, 1.092e-02, 4.474e-03, 3.111e-02), r);\n\tr = MulAdd(s4_0, M4(5.026e-03, 1.825e-02, 2.259e-02, -4.380e-03, -5.178e-02, -2.513e-02, -5.339e-02, 1.241e-01, -5.429e-02, 3.186e-02, -2.382e-01, -4.040e-02, 7.159e-02, 1.341e-02, 1.121e-01, -3.143e-03), r);\n\tr = MulAdd(s4_1, M4(-8.335e-02, 5.689e-02, -6.871e-02, -6.070e-03, -2.638e-02, 2.636e-01, -1.103e-01, 9.037e-02, 1.066e-01, -1.255e-01, -6.273e-02, -4.147e-02, -1.496e-01, -3.183e-02, -3.861e-02, -6.475e-02), r);\n\tr = MulAdd(s4_2, M4(-1.181e-03, 5.513e-03, 1.929e-02, -8.892e-03, 9.030e-02, 5.711e-02, -9.029e-02, 5.996e-02, 3.188e-02, -1.179e-01, -3.602e-02, -1.647e-02, -9.029e-02, 3.394e-03, 4.245e-02, 2.177e-01), r);\n\tr = MulAdd(s4_3, M4(-3.745e-02, -1.071e-01, -7.763e-03, 7.312e-02, -1.244e-02, -3.923e-02, 1.577e-01, 7.876e-02, -3.967e-01, -2.705e-01, 1.242e-01, -1.339e-01, 9.164e-02, -8.832e-02, -5.150e-02, 9.188e-04), r);\n\tr = MulAdd(s4_4, M4(3.188e-01, 2.089e-01, 1.191e-01, -1.741e-01, -9.131e-02, -1.280e-01, -8.498e-02, -1.474e-02, -7.363e-01, -6.461e-01, -1.540e-01, -3.043e-01, -8.331e-02, -3.601e-02, -1.337e-01, -3.212e-03), r);\n\tr = MulAdd(s4_5, M4(-1.324e-01, -7.492e-02, -2.765e-02, 1.714e-01, 1.525e-01, -1.808e-01, -5.317e-03, 2.487e-01, -5.368e-02, -1.320e-01, 1.646e-01, -1.221e-01, 1.742e-01, 7.191e-02, 1.264e-01, -1.884e-02), r);\n\tr = MulAdd(s4_6, M4(-5.439e-02, -1.459e-01, -9.954e-02, -1.495e-01, -3.570e-02, 6.260e-02, 1.202e-01, 8.844e-02, -2.543e-02, 6.869e-02, 5.723e-02, -8.969e-02, 4.016e-02, -5.638e-02, -1.861e-02, -2.536e-02), r);\n\tr = MulAdd(s4_7, M4(-2.141e-02, 1.867e-01, 9.165e-02, 3.497e-03, -8.593e-03, 1.722e-02, -9.671e-02, 2.116e-01, -1.176e-01, 9.203e-02, -3.250e-03, 2.352e-01, 4.347e-02, -1.797e-02, 1.628e-02, -1.260e-01), r);\n\tr = MulAdd(s4_8, M4(8.824e-03, -1.198e-01, 1.086e-01, -4.312e-02, 5.914e-02, -6.638e-02, -2.196e-01, -6.658e-02, -1.844e-02, 4.803e-02, -3.338e-02, 2.232e-01, 1.276e-02, 4.370e-02, -1.566e-01, -6.510e-02), r);\n\tr = MulAdd(s5_0, M4(-7.742e-02, -5.564e-03, -1.219e-01, 8.266e-02, -2.908e-02, -5.622e-02, -6.020e-02, 1.122e-01, 3.347e-02, 1.352e-01, 5.121e-02, 1.043e-01, 9.550e-02, 7.644e-02, 1.249e-01, 1.721e-02), r);\n\tr = MulAdd(s5_1, M4(6.050e-02, -5.223e-02, -1.074e-02, -9.829e-02, 1.650e-02, -8.694e-02, -2.254e-01, 1.426e-02, -1.388e-01, 7.306e-02, 5.138e-02, 2.509e-01, -1.576e-02, -4.962e-02, -1.111e-01, 1.685e-02), r);\n\tr = MulAdd(s5_2, M4(6.816e-03, 5.468e-02, -4.772e-02, -4.338e-02, 1.247e-01, 9.513e-02, 8.595e-03, -1.408e-01, -8.185e-02, -3.862e-02, 1.914e-02, -6.964e-02, 5.147e-02, -2.923e-01, -1.373e-01, 5.155e-02), r);\n\tr = MulAdd(s5_3, M4(-5.775e-02, 1.676e-01, 9.105e-02, 8.077e-02, -5.880e-02, 9.001e-03, 5.488e-02, -3.103e-02, 4.378e-01, 5.467e-01, 5.087e-02, 1.015e-02, 1.360e-01, -1.773e-01, 1.621e-01, 9.090e-02), r);\n\tr = MulAdd(s5_4, M4(1.843e-01, -3.777e-02, 2.242e-01, -8.750e-02, 8.410e-02, -1.868e-01, -1.184e-01, -1.742e-01, 2.463e-01, 2.272e-01, 2.064e-02, 1.751e-01, -3.371e-01, -4.247e-01, 1.850e-01, -1.210e-01), r);\n\tr = MulAdd(s5_5, M4(-2.420e-01, 8.496e-02, 3.214e-01, 8.231e-02, 1.791e-01, 8.399e-02, 2.479e-02, -1.334e-01, 7.132e-02, -7.497e-02, -1.178e-02, 1.141e-01, 2.510e-01, -3.215e-01, -2.085e-01, -1.628e-01), r);\n\tr = MulAdd(s5_6, M4(2.309e-02, 1.314e-02, -1.278e-01, -1.081e-01, 4.483e-02, -3.659e-02, -7.600e-02, -9.992e-02, 1.486e-01, -1.862e-01, -6.407e-02, -3.771e-02, 1.169e-02, 7.518e-02, 1.239e-01, 1.198e-01), r);\n\tr = MulAdd(s5_7, M4(1.076e-04, -1.035e-01, 8.117e-02, 2.222e-01, 1.414e-01, -8.499e-04, 7.303e-02, -2.033e-01, 1.418e-01, 7.929e-05, -3.849e-02, -2.114e-01, -1.265e-01, 1.412e-01, 2.669e-01, 2.386e-02), r);\n\tr = MulAdd(s5_8, M4(1.398e-01, 1.127e-02, -2.013e-01, -1.141e-01, 3.554e-02, -1.411e-01, 8.951e-03, -6.957e-02, -6.525e-02, 1.170e-02, 3.001e-02, -5.121e-03, -1.427e-01, 1.769e-01, -1.797e-01, 7.330e-02), r);\n\tr = MulAdd(s6_0, M4(-6.830e-02, 2.586e-02, 6.957e-02, 3.344e-03, -8.251e-02, -1.024e-01, 1.401e-02, -8.155e-02, 3.130e-02, 1.567e-02, 9.907e-02, 8.775e-02, 1.828e-02, -6.401e-02, -1.254e-01, -3.486e-03), r);\n\tr = MulAdd(s6_1, M4(-7.500e-02, 1.524e-01, 1.332e-01, -2.362e-03, -2.281e-01, -1.344e-01, -1.993e-02, 3.437e-02, -4.016e-02, 8.094e-03, -1.552e-01, -9.684e-03, -2.945e-02, 1.827e-01, 1.631e-01, -1.402e-01), r);\n\tr = MulAdd(s6_2, M4(1.283e-01, 1.022e-01, -4.673e-02, -1.206e-01, 6.208e-02, -7.104e-03, -1.880e-03, 9.911e-02, 7.525e-02, -2.320e-02, 1.065e-01, 5.128e-02, -1.031e-01, -5.443e-02, 8.565e-02, 1.749e-02), r);\n\tr = MulAdd(s6_3, M4(-7.235e-02, -4.825e-04, 1.150e-01, -2.535e-02, 2.054e-02, -1.127e-01, -2.437e-01, -2.327e-01, -4.160e-02, -1.421e-02, -1.598e-01, 8.317e-02, 1.066e-01, 9.147e-02, 2.876e-02, -1.104e-01), r);\n\tr = MulAdd(s6_4, M4(-8.142e-02, -1.204e-01, -4.673e-02, 2.870e-02, 1.121e-01, 8.413e-02, 3.548e-01, -8.794e-02, 7.436e-02, -5.747e-01, -3.031e-01, 1.076e-01, -9.881e-02, -4.884e-02, -2.669e-02, 9.961e-02), r);\n\tr = MulAdd(s6_5, M4(4.019e-02, 3.443e-02, 6.175e-02, -1.364e-01, -4.113e-02, 3.754e-02, 9.865e-03, -2.927e-02, 8.488e-02, 5.757e-02, -2.555e-01, 4.841e-02, 1.484e-01, -4.510e-02, 1.274e-01, -3.619e-02), r);\n\tr = MulAdd(s6_6, M4(2.464e-02, 8.601e-02, 7.057e-02, -5.465e-03, -4.709e-02, 1.541e-02, -1.009e-01, 2.418e-01, 1.212e-02, -1.384e-01, -5.690e-03, 7.989e-02, 1.026e-02, 4.835e-03, 1.245e-01, -4.626e-02), r);\n\tr = MulAdd(s6_7, M4(-8.064e-02, -5.022e-02, 6.276e-03, 3.697e-02, -1.358e-01, -2.119e-02, -3.152e-02, 8.134e-03, 4.175e-03, -6.934e-01, 2.208e-02, 1.098e-02, 2.263e-02, 4.586e-02, -8.756e-02, -5.983e-03), r);\n\tr = MulAdd(s6_8, M4(1.869e-02, 6.459e-02, 3.638e-03, 8.153e-04, -2.581e-02, -2.617e-02, 1.255e-01, -8.043e-02, 8.142e-02, -6.911e-02, -1.027e-01, 1.238e-01, -6.244e-02, -3.995e-02, 3.448e-02, 6.247e-02), r);\n\tr = MulAdd(s7_0, M4(6.368e-03, -2.268e-01, -5.136e-02, 2.237e-01, -6.148e-02, -2.566e-02, -1.429e-01, 1.650e-01, -1.630e-02, -3.195e-03, 3.669e-02, -2.326e-02, 1.549e-01, -2.640e-01, 1.995e-01, -1.645e-01), r);\n\tr = MulAdd(s7_1, M4(-1.511e-01, 1.334e-02, 1.126e-01, -9.383e-02, -1.275e-01, -1.259e-01, -1.455e-01, -3.768e-02, -1.533e-02, 8.384e-02, 8.307e-02, -1.146e-01, -5.860e-02, -2.392e-02, 4.100e-04, 2.633e-01), r);\n\tr = MulAdd(s7_2, M4(3.066e-01, -1.423e-03, -4.397e-01, -7.083e-02, 9.075e-02, 7.438e-02, -1.084e-01, -4.088e-02, 2.111e-03, 6.951e-02, 1.201e-02, -7.343e-02, 1.864e-01, -1.239e-01, 9.225e-02, 3.681e-02), r);\n\tr = MulAdd(s7_3, M4(3.698e-02, -2.120e-01, 3.324e-02, 2.238e-01, -3.819e-02, -3.993e-02, 1.447e-01, -1.123e-01, -8.550e-02, 1.485e-01, -1.165e-01, -1.284e-01, 1.179e-01, 2.494e-01, 2.122e-02, -7.347e-02), r);\n\tr = MulAdd(s7_4, M4(2.141e-01, -2.257e-01, -2.297e-01, -1.144e-01, -6.907e-02, 5.844e-02, -3.309e-01, 1.606e-01, 1.254e-01, 6.750e-01, 3.546e-01, 7.465e-02, -1.612e-01, -1.870e-01, -1.952e-01, 5.436e-01), r);\n\tr = MulAdd(s7_5, M4(3.007e-01, -4.092e-01, -2.155e-01, -2.010e-01, 1.396e-01, -4.618e-03, 1.402e-02, -4.520e-02, -1.665e-01, 1.031e-02, 2.096e-01, -5.751e-02, 9.736e-02, 5.130e-02, 2.232e-01, -1.639e-01), r);\n\tr = MulAdd(s7_6, M4(5.731e-02, -6.303e-02, -8.612e-03, 8.817e-02, -7.004e-02, -2.376e-02, 5.575e-02, -7.091e-03, -6.420e-02, -1.200e-01, -1.599e-01, -5.591e-02, -5.707e-02, 4.149e-02, 5.281e-02, -1.419e-01), r);\n\tr = MulAdd(s7_7, M4(-1.024e-01, -1.073e-01, -1.133e-02, -9.733e-02, -5.793e-02, -1.041e-02, -2.091e-01, -5.623e-02, 2.134e-01, 8.509e-02, 3.772e-01, -2.028e-01, -2.103e-01, -5.787e-02, 1.942e-01, -1.438e-01), r);\n\tr = MulAdd(s7_8, M4(3.537e-02, -9.345e-02, 1.828e-01, 8.816e-02, -6.724e-02, -5.321e-02, 7.143e-02, -3.994e-02, -1.362e-01, -6.127e-02, 3.408e-01, -1.016e-01, 1.485e-02, -2.559e-01, -2.418e-02, 6.540e-02), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -9.620e-03, -3.005e-03, 1.671e-02, 3.678e-03 };\n\tr = MulAdd(s0_0, M4(2.687e-01, 8.166e-02, -1.199e-01, -1.438e-01, -1.553e-01, 1.877e-02, -1.204e-02, 1.459e-02, -1.317e-01, 1.964e-02, 3.228e-02, 3.404e-02, -1.089e-01, -6.737e-03, -1.876e-01, 1.835e-02), r);\n\tr = MulAdd(s0_1, M4(-1.304e-01, 1.646e-01, 1.825e-02, -1.453e-01, -7.232e-04, 8.586e-02, 1.332e-01, -6.766e-02, -2.069e-02, 8.783e-02, -6.577e-03, 8.726e-03, -2.289e-01, -5.098e-02, 4.306e-01, -2.771e-01), r);\n\tr = MulAdd(s0_2, M4(9.318e-02, 8.611e-03, -1.182e-01, -2.625e-01, -1.586e-01, 3.613e-02, -1.326e-01, -3.240e-02, -2.252e-03, -2.125e-02, 1.131e-01, 8.956e-02, -1.659e-01, -3.769e-01, 3.006e-01, 1.306e-01), r);\n\tr = MulAdd(s0_3, M4(2.156e-02, -1.255e-01, 2.045e-01, 4.720e-01, 3.673e-02, 1.511e-01, -4.359e-02, 8.447e-02, 9.906e-03, 2.171e-02, -3.553e-02, 8.704e-02, -2.092e-01, -5.608e-02, -1.380e-01, -1.604e-02), r);\n\tr = MulAdd(s0_4, M4(2.147e-01, 3.794e-01, -5.221e-02, 2.407e-01, -8.350e-02, 2.791e-01, 3.463e-01, -1.276e-01, -4.068e-04, 2.771e-02, 8.716e-02, 1.195e-01, 4.733e-01, 1.988e-01, -1.505e-01, -3.883e-01), r);\n\tr = MulAdd(s0_5, M4(8.607e-02, 1.514e-01, -3.988e-01, -3.330e-01, -6.680e-02, -2.056e-01, 2.278e-01, 1.257e-02, -8.822e-02, -1.234e-01, 5.052e-02, 8.519e-02, -2.473e-01, -3.413e-01, 4.017e-01, 8.034e-02), r);\n\tr = MulAdd(s0_6, M4(-8.551e-02, -1.403e-01, 2.125e-01, 7.841e-03, 5.549e-03, -5.862e-02, 9.476e-04, 1.900e-02, -3.914e-02, -3.345e-02, 5.222e-02, -9.521e-03, 2.778e-02, 1.449e-01, -2.182e-01, -2.048e-01), r);\n\tr = MulAdd(s0_7, M4(1.332e-02, -1.636e-01, -1.366e-01, 4.173e-01, 1.212e-01, 3.106e-02, -9.726e-02, -1.551e-01, 5.765e-03, 1.214e-02, -1.040e-01, -1.715e-01, 5.105e-02, -1.803e-02, 2.323e-01, -1.403e-01), r);\n\tr = MulAdd(s0_8, M4(3.398e-02, 6.988e-02, -2.143e-01, -1.702e-01, -2.889e-02, 5.287e-02, -5.093e-02, -5.457e-03, -4.596e-02, -1.432e-02, 4.034e-02, 1.615e-01, -4.963e-02, -1.742e-01, 1.176e-01, 1.721e-01), r);\n\tr = MulAdd(s1_0, M4(-1.326e-01, -2.362e-02, 1.268e-01, 1.417e-01, -2.640e-02, -6.551e-02, -1.278e-02, 6.166e-02, -7.067e-02, 6.927e-02, 1.225e-01, 6.188e-02, -1.689e-02, 1.018e-03, 1.171e-05, 4.638e-02), r);\n\tr = MulAdd(s1_1, M4(5.420e-02, 3.479e-03, 6.777e-02, -1.539e-02, 1.453e-03, 1.949e-01, -1.092e-01, 3.312e-02, 1.668e-02, -2.749e-02, -7.548e-02, 1.983e-02, 3.772e-02, 9.288e-02, 3.287e-02, -1.036e-01), r);\n\tr = MulAdd(s1_2, M4(4.808e-02, -7.779e-03, -8.201e-02, -1.903e-02, -8.753e-02, 9.981e-02, -1.936e-01, 1.469e-01, 2.946e-01, -6.026e-02, 1.247e-01, 1.665e-01, 1.790e-02, -2.399e-02, 1.201e-01, 2.750e-02), r);\n\tr = MulAdd(s1_3, M4(6.217e-02, 9.400e-02, -4.512e-02, 8.812e-02, -2.566e-02, -4.474e-02, 4.474e-02, 1.304e-01, 3.143e-02, -1.294e-02, 2.472e-01, 8.708e-02, 8.283e-03, 6.958e-02, 4.408e-02, 5.403e-02), r);\n\tr = MulAdd(s1_4, M4(1.630e-02, 1.362e-01, -1.194e-01, -3.578e-01, -9.621e-02, -2.325e-02, -6.584e-02, 3.462e-02, -3.388e-01, -3.103e-01, 1.561e-01, -4.855e-01, 1.372e-02, 1.174e-01, -1.389e-01, -1.157e-01), r);\n\tr = MulAdd(s1_5, M4(1.248e-01, -1.963e-02, -1.700e-02, 1.012e-01, 1.012e-01, 1.299e-01, -4.928e-01, 5.774e-02, -4.600e-02, 3.790e-01, 4.851e-01, -2.039e-02, -9.516e-02, -1.836e-01, 1.571e-01, 1.615e-01), r);\n\tr = MulAdd(s1_6, M4(-4.777e-02, -2.571e-02, -1.059e-01, -7.602e-02, 3.390e-04, -3.210e-02, 9.651e-03, -3.705e-02, -4.980e-02, -6.590e-02, 1.129e-01, 1.401e-01, 2.812e-02, 2.992e-02, -1.999e-02, -5.651e-02), r);\n\tr = MulAdd(s1_7, M4(1.004e-01, 2.057e-02, -2.537e-02, 2.206e-02, -6.160e-02, -1.883e-02, -9.290e-03, 4.182e-02, -8.648e-02, -7.383e-03, -8.947e-02, 2.048e-01, 6.374e-02, -3.761e-02, -5.065e-02, -3.502e-02), r);\n\tr = MulAdd(s1_8, M4(-8.064e-02, 5.522e-02, 4.249e-02, 1.068e-01, -1.652e-02, -2.258e-02, -1.323e-01, 1.204e-01, -9.693e-02, -6.873e-02, 2.582e-01, 2.303e-01, -4.725e-02, -3.186e-02, 9.203e-02, 5.410e-02), r);\n\tr = MulAdd(s2_0, M4(3.263e-02, -9.901e-02, 4.089e-02, 3.456e-02, 3.123e-02, -1.064e-02, -1.264e-01, -1.284e-01, -6.946e-02, -2.256e-02, 5.680e-02, 7.784e-02, 3.726e-02, -1.081e-01, -6.456e-02, 1.050e-01), r);\n\tr = MulAdd(s2_1, M4(2.190e-02, 4.159e-02, -1.148e-01, 8.853e-02, -1.967e-01, 4.572e-02, 1.118e-01, 3.464e-02, 5.631e-02, 8.991e-02, -1.654e-02, 1.463e-02, 1.619e-01, 4.864e-02, -5.587e-02, -5.653e-02), r);\n\tr = MulAdd(s2_2, M4(-5.594e-02, -3.155e-02, 8.088e-02, 5.277e-02, -7.377e-02, -1.008e-02, 5.421e-02, 2.860e-02, 8.171e-02, 2.243e-01, -5.323e-02, -1.391e-01, -2.219e-02, 2.425e-02, 1.050e-01, -7.410e-02), r);\n\tr = MulAdd(s2_3, M4(-1.869e-02, -8.442e-02, 3.266e-01, 1.762e-01, 6.582e-02, 2.504e-02, -1.160e-01, 9.119e-02, 5.249e-02, 6.679e-02, -6.709e-03, -5.891e-02, -4.800e-02, 7.017e-03, 6.847e-03, -6.442e-02), r);\n\tr = MulAdd(s2_4, M4(3.592e-03, 1.994e-01, -1.673e-01, 7.164e-02, 1.105e-01, 1.378e-01, -2.136e-01, -2.875e-01, -2.423e-02, 2.685e-02, 9.026e-02, 3.959e-02, -7.615e-02, 2.090e-03, -4.808e-02, 9.262e-02), r);\n\tr = MulAdd(s2_5, M4(-3.896e-03, -7.554e-02, 6.684e-02, 7.698e-02, -9.906e-02, 6.621e-05, 1.286e-01, 1.069e-01, -1.022e-01, 2.141e-02, -4.026e-02, -1.684e-02, 3.187e-02, -3.626e-02, -2.315e-02, -1.050e-01), r);\n\tr = MulAdd(s2_6, M4(4.210e-03, -1.220e-02, 1.567e-01, 6.979e-02, 2.187e-03, -2.065e-03, 1.274e-01, 3.273e-03, -3.667e-02, 9.996e-02, -5.206e-03, -9.575e-02, 4.773e-03, 4.623e-02, -1.341e-02, -1.804e-02), r);\n\tr = MulAdd(s2_7, M4(-6.208e-03, -1.973e-02, 4.654e-02, 3.823e-04, -1.456e-01, -5.811e-03, 2.883e-02, -1.811e-02, 2.366e-02, 5.063e-02, 8.785e-03, -1.582e-01, -1.013e-01, -7.017e-02, 1.187e-01, 8.433e-02), r);\n\tr = MulAdd(s2_8, M4(-2.073e-02, -2.841e-02, 7.324e-02, -1.301e-02, -3.501e-02, -4.349e-02, 4.727e-02, 5.348e-02, -6.533e-02, 3.860e-02, -5.548e-02, -7.562e-02, -7.104e-02, -2.708e-02, -2.633e-02, 1.581e-02), r);\n\tr = MulAdd(s3_0, M4(1.952e-01, -4.406e-02, 2.251e-01, 1.730e-02, 1.321e-01, 2.949e-02, -1.146e-01, -9.297e-02, 3.493e-03, 3.876e-02, 3.592e-02, 1.943e-02, 6.047e-02, 7.362e-02, 3.877e-02, 4.716e-02), r);\n\tr = MulAdd(s3_1, M4(-1.067e-01, 3.903e-01, 1.590e-01, 7.771e-02, 1.419e-01, -4.469e-02, -2.373e-02, 1.276e-01, 1.104e-01, -7.168e-02, -1.678e-02, -8.715e-02, 1.352e-01, 5.306e-02, -2.815e-02, -2.683e-01), r);\n\tr = MulAdd(s3_2, M4(7.782e-02, 1.057e-01, 3.814e-02, -1.432e-01, -3.761e-02, -6.796e-02, 1.127e-01, 1.391e-02, 1.189e-01, 7.453e-02, -7.495e-02, -1.539e-01, 3.333e-01, -3.008e-01, 2.307e-01, 1.726e-01), r);\n\tr = MulAdd(s3_3, M4(2.905e-01, -1.213e-01, 4.333e-02, 3.070e-02, -1.941e-01, 2.148e-02, -4.467e-02, -2.192e-01, 4.357e-02, 1.709e-01, 1.875e-02, -1.411e-02, 2.852e-01, 4.772e-03, 6.625e-02, -3.587e-01), r);\n\tr = MulAdd(s3_4, M4(-1.116e-01, 4.040e-01, -1.487e-01, -1.316e-01, -1.446e-01, -2.333e-01, -1.028e-01, 6.341e-02, -2.364e-01, -2.721e-02, 1.083e-01, -2.123e-01, 4.096e-01, -2.602e-01, 3.234e-01, -2.992e-01), r);\n\tr = MulAdd(s3_5, M4(-8.916e-02, 5.935e-02, 2.286e-02, 3.991e-02, 3.674e-02, 2.909e-02, 2.075e-01, 1.902e-02, 2.073e-01, -3.102e-01, -1.087e-01, 2.351e-01, -1.173e-01, 3.481e-02, 1.374e-01, 1.690e-01), r);\n\tr = MulAdd(s3_6, M4(-2.447e-03, -1.310e-01, 1.115e-01, 7.939e-02, -8.932e-02, -2.751e-02, 6.472e-02, 1.440e-01, -2.778e-01, -7.787e-02, 1.362e-01, 1.740e-01, -2.580e-01, -7.293e-02, -1.313e-01, -4.858e-01), r);\n\tr = MulAdd(s3_7, M4(6.532e-02, 5.795e-02, 1.133e-01, -9.871e-03, -2.339e-01, -1.562e-01, 1.458e-02, -1.546e-01, -1.127e-01, -7.856e-04, -1.915e-01, -3.379e-01, -9.314e-02, -8.137e-02, 2.881e-01, 2.245e-01), r);\n\tr = MulAdd(s3_8, M4(-3.721e-02, -5.194e-02, 1.918e-01, -7.738e-02, -1.546e-02, 5.603e-02, 7.840e-02, 3.734e-02, -1.114e-01, 1.450e-01, -1.754e-01, -2.606e-01, -9.938e-02, 1.193e-01, 1.560e-01, -2.439e-01), r);\n\tr = MulAdd(s4_0, M4(-9.219e-03, 3.068e-02, -6.399e-02, -5.676e-02, 2.555e-01, 3.642e-02, 7.457e-02, -2.328e-02, 5.980e-02, -6.396e-03, 1.706e-01, -5.731e-03, -2.385e-01, -7.905e-02, -4.412e-02, -3.759e-02), r);\n\tr = MulAdd(s4_1, M4(7.442e-02, 2.789e-02, -5.155e-02, 6.180e-02, -4.061e-02, -6.683e-02, 1.053e-01, 3.698e-02, -1.689e-01, -2.763e-01, 1.186e-01, 7.406e-02, -3.383e-01, -2.349e-02, -2.192e-02, -2.980e-02), r);\n\tr = MulAdd(s4_2, M4(1.363e-02, -1.910e-02, 5.765e-03, -8.381e-02, -8.163e-02, -9.549e-03, -7.204e-03, -8.317e-03, 6.825e-02, -7.917e-02, -9.160e-02, 2.864e-02, 4.084e-03, -1.179e-01, -5.971e-02, 1.859e-02), r);\n\tr = MulAdd(s4_3, M4(1.251e-01, 6.503e-02, -2.114e-01, -1.335e-01, 5.915e-02, 2.959e-02, 5.515e-03, -1.260e-01, -1.847e-01, 4.622e-02, 1.991e-01, 1.137e-01, 1.777e-01, 8.480e-02, -1.747e-01, -8.698e-02), r);\n\tr = MulAdd(s4_4, M4(1.291e-01, -3.333e-01, -2.523e-02, 6.282e-02, -2.010e-01, -1.878e-01, 7.108e-02, 1.376e-01, -3.144e-01, -2.832e-01, 1.041e-01, -2.659e-01, -5.124e-02, 2.179e-01, -2.510e-01, 8.983e-02), r);\n\tr = MulAdd(s4_5, M4(1.359e-01, -2.681e-01, 6.136e-02, 1.128e-01, 4.392e-02, -7.634e-02, 1.562e-02, 1.960e-02, -1.059e-01, -8.959e-02, 9.625e-02, 1.929e-01, -1.112e-01, -2.043e-01, 3.311e-02, 7.884e-02), r);\n\tr = MulAdd(s4_6, M4(-5.216e-02, 1.000e-01, -2.716e-01, -1.806e-01, -1.624e-02, -3.480e-02, 6.681e-02, 3.609e-02, 8.244e-02, -6.571e-02, -4.160e-02, 1.384e-02, 9.817e-02, -6.976e-02, -1.353e-01, -8.585e-02), r);\n\tr = MulAdd(s4_7, M4(-1.156e-01, 7.337e-02, 8.131e-02, 3.727e-02, 1.808e-01, 8.877e-02, -7.023e-02, -2.808e-01, 6.601e-02, 5.052e-02, -1.602e-01, 3.795e-02, -7.324e-02, -2.153e-02, -7.231e-02, 4.927e-02), r);\n\tr = MulAdd(s4_8, M4(-1.597e-01, 9.291e-02, 1.072e-01, -9.688e-02, 1.202e-01, -9.313e-02, 2.052e-03, -6.283e-02, 1.234e-02, -4.641e-02, 1.124e-01, 7.310e-02, 5.806e-02, -1.393e-02, -7.467e-02, -1.365e-02), r);\n\tr = MulAdd(s5_0, M4(1.908e-02, 4.101e-02, 7.300e-03, -1.589e-03, 1.602e-02, -8.488e-03, 5.971e-02, 7.128e-03, -1.286e-01, -1.413e-02, 4.143e-02, 4.473e-02, 3.487e-03, 2.195e-02, -3.393e-02, 2.150e-02), r);\n\tr = MulAdd(s5_1, M4(6.465e-02, 1.069e-01, 4.920e-03, -1.181e-02, 2.109e-01, -6.762e-02, 9.279e-02, -8.565e-03, 6.348e-02, 1.019e-01, 3.998e-02, 3.639e-02, -1.348e-01, 2.041e-01, -5.174e-02, -1.375e-01), r);\n\tr = MulAdd(s5_2, M4(-1.421e-02, 4.131e-02, -2.263e-02, -6.063e-02, 3.799e-02, -8.022e-02, 2.392e-02, -9.560e-03, 8.589e-03, -1.635e-02, -1.595e-02, -2.145e-02, 1.137e-02, 3.846e-02, -5.293e-02, 8.807e-02), r);\n\tr = MulAdd(s5_3, M4(1.300e-01, 5.945e-02, 1.313e-02, 4.673e-02, -7.139e-02, 6.130e-02, -8.234e-02, -2.109e-01, 1.234e-01, -1.599e-02, 3.811e-02, -1.684e-01, -1.032e-01, -1.729e-01, 1.180e-01, 1.451e-01), r);\n\tr = MulAdd(s5_4, M4(-2.139e-01, -1.261e-01, 5.155e-02, -3.438e-02, -9.973e-02, 5.261e-02, 1.968e-01, -2.858e-02, -1.402e-01, -7.740e-02, 2.029e-01, -1.669e-02, 9.150e-02, 1.662e-02, -7.390e-02, -1.764e-01), r);\n\tr = MulAdd(s5_5, M4(-1.639e-02, 2.398e-02, 5.206e-02, -4.966e-02, -3.472e-02, -7.197e-02, 1.725e-01, -3.140e-02, 1.676e-02, -1.381e-01, 1.557e-01, 1.213e-01, -7.629e-02, -1.392e-01, 4.410e-02, 4.050e-02), r);\n\tr = MulAdd(s5_6, M4(-1.096e-01, -7.978e-02, 3.590e-02, 8.377e-02, 1.031e-01, 1.100e-01, -5.918e-02, -7.414e-02, 8.954e-02, -1.134e-01, -5.441e-02, -3.733e-02, 8.487e-02, 1.935e-02, 3.119e-02, -7.440e-02), r);\n\tr = MulAdd(s5_7, M4(1.882e-02, 2.669e-02, 7.765e-02, -6.490e-04, -1.474e-02, 1.028e-01, 1.065e-01, -6.083e-02, 1.412e-03, 1.229e-02, 9.548e-03, -1.022e-02, -3.959e-02, 3.008e-02, -8.053e-02, 2.315e-02), r);\n\tr = MulAdd(s5_8, M4(-1.005e-01, -5.850e-02, 1.339e-01, -3.531e-03, -4.871e-02, 8.862e-03, -5.255e-03, -8.616e-02, 2.939e-02, -3.063e-02, 6.904e-02, 8.195e-02, -4.837e-02, -6.718e-02, 1.523e-01, 7.304e-02), r);\n\tr = MulAdd(s6_0, M4(2.511e-01, -2.700e-02, -2.241e-01, -8.827e-02, 1.578e-03, -1.330e-01, -1.169e-01, 1.971e-01, 1.208e-02, -2.703e-02, 8.641e-02, 1.194e-02, 1.682e-02, 1.062e-01, 3.456e-02, -1.125e-01), r);\n\tr = MulAdd(s6_1, M4(-1.913e-01, 2.695e-02, 1.756e-02, 6.275e-02, 9.474e-02, 2.234e-01, -2.228e-01, -1.051e-02, -5.410e-01, 1.036e-01, 5.839e-02, -1.927e-01, 5.608e-01, 7.018e-02, -5.304e-02, -3.249e-01), r);\n\tr = MulAdd(s6_2, M4(6.880e-02, 5.915e-02, -1.394e-01, 7.292e-02, 7.694e-03, 1.793e-01, -3.022e-02, 4.487e-03, 1.501e-01, -6.532e-02, -4.614e-02, 3.067e-02, 2.152e-01, -3.339e-02, 1.689e-01, 5.163e-02), r);\n\tr = MulAdd(s6_3, M4(2.106e-02, 1.292e-01, -5.325e-01, 1.742e-01, 1.928e-01, -1.107e-01, -1.024e-01, 1.384e-01, -3.115e-02, -1.027e-01, 1.363e-01, 6.820e-02, -1.583e-01, 6.273e-02, -1.063e-01, -2.276e-01), r);\n\tr = MulAdd(s6_4, M4(-2.076e-01, 9.245e-02, -1.537e-01, 2.041e-01, -3.218e-01, -9.736e-03, 4.585e-02, 3.374e-01, -2.229e-01, 2.515e-01, -2.451e-01, -3.592e-01, 6.475e-01, 2.927e-01, 1.947e-02, -5.491e-01), r);\n\tr = MulAdd(s6_5, M4(1.881e-01, 9.823e-02, -5.798e-01, 2.706e-01, -7.773e-03, 4.207e-01, -2.544e-01, -6.409e-02, 8.943e-02, 1.581e-01, -3.087e-02, 3.644e-02, 4.059e-01, 1.233e-01, 1.340e-01, -1.729e-02), r);\n\tr = MulAdd(s6_6, M4(1.272e-01, -7.512e-02, -4.167e-01, 1.740e-01, 1.082e-01, -8.696e-05, 6.458e-02, 8.547e-02, -2.630e-02, 6.979e-02, 3.380e-02, 9.220e-02, 2.841e-01, -2.527e-02, 1.248e-01, -7.761e-03), r);\n\tr = MulAdd(s6_7, M4(2.636e-01, 1.016e-01, -5.834e-02, 3.598e-02, 1.360e-01, -6.870e-02, 4.744e-03, 8.948e-02, -2.987e-01, 6.511e-02, -9.257e-02, -4.916e-02, -1.611e-01, -1.630e-01, 2.508e-01, 3.155e-01), r);\n\tr = MulAdd(s6_8, M4(-2.714e-02, -4.710e-02, -7.061e-02, 1.471e-01, 1.043e-01, 3.127e-02, -1.498e-01, 1.127e-01, -7.893e-02, 4.654e-02, -2.941e-02, -5.514e-02, -1.395e-01, 1.096e-01, -1.843e-02, -1.769e-01), r);\n\tr = MulAdd(s7_0, M4(-7.351e-02, -9.425e-03, -2.481e-02, -1.941e-02, 1.248e-01, -3.381e-02, -1.058e-01, -6.811e-02, 5.354e-03, -3.077e-02, 7.082e-02, -1.596e-03, -1.241e-01, -5.744e-02, 9.882e-02, 6.528e-02), r);\n\tr = MulAdd(s7_1, M4(2.069e-01, 1.091e-01, 6.860e-02, -1.470e-01, 2.973e-02, -2.553e-02, -1.002e-01, 8.685e-02, -4.484e-02, -1.102e-01, 1.163e-01, -4.555e-02, -1.942e-02, -1.147e-02, -1.121e-01, -4.226e-02), r);\n\tr = MulAdd(s7_2, M4(-8.667e-02, -6.287e-02, 7.794e-02, 3.801e-02, 2.144e-02, -3.184e-03, -7.759e-02, -3.430e-02, -6.115e-02, 8.789e-04, 4.944e-02, 6.660e-04, -5.836e-04, 2.528e-02, -8.120e-02, -7.806e-03), r);\n\tr = MulAdd(s7_3, M4(1.657e-01, -3.697e-02, -7.059e-02, -4.885e-02, 7.071e-02, -4.343e-03, -2.486e-02, 1.618e-02, -4.309e-02, 7.969e-02, 5.391e-02, 6.220e-02, -1.250e-02, -3.509e-02, 7.260e-02, 8.836e-02), r);\n\tr = MulAdd(s7_4, M4(-1.635e-01, 8.655e-03, 2.083e-01, 2.367e-01, 2.724e-02, 4.316e-02, -3.500e-02, 1.175e-01, -1.324e-01, 8.391e-02, 1.303e-01, 3.996e-02, 2.966e-02, 3.837e-02, 3.528e-02, -3.091e-02), r);\n\tr = MulAdd(s7_5, M4(1.302e-02, 1.612e-01, -9.924e-02, -1.282e-01, 3.968e-02, 2.190e-01, -2.045e-01, -2.511e-01, 1.372e-02, 2.535e-02, 2.012e-02, 7.447e-02, 7.591e-03, 1.943e-02, 5.198e-02, 5.475e-02), r);\n\tr = MulAdd(s7_6, M4(-1.832e-02, -2.806e-02, 3.148e-02, 3.680e-02, -2.261e-02, 9.937e-02, 2.641e-02, -8.156e-02, -6.391e-02, 1.383e-02, -1.494e-02, -3.854e-02, 9.237e-03, 1.985e-02, -6.267e-02, -2.064e-02), r);\n\tr = MulAdd(s7_7, M4(-1.015e-02, -1.696e-03, -3.062e-02, -7.102e-02, 1.778e-02, 1.163e-02, 2.630e-03, -1.040e-01, -1.397e-02, 2.023e-03, -1.445e-01, -9.735e-02, 2.512e-02, 5.539e-03, -4.223e-02, -3.399e-02), r);\n\tr = MulAdd(s7_8, M4(-5.911e-02, -5.396e-02, 3.260e-03, 1.271e-02, -4.968e-02, -5.689e-02, 1.541e-02, -1.444e-02, -2.694e-02, -2.971e-03, -7.396e-02, 7.005e-02, 4.195e-02, 1.648e-02, 2.096e-02, -1.043e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.360e-02, 3.650e-03, -6.944e-03, -3.785e-03 };\n\tr = MulAdd(s0_0, M4(-1.851e-01, -4.425e-02, -1.296e-02, -1.750e-01, 5.089e-02, -6.421e-02, 1.176e-01, 8.044e-02, 2.377e-02, 6.474e-02, 9.873e-03, 9.184e-03, -7.470e-02, -1.489e-01, 1.416e-01, -1.896e-02), r);\n\tr = MulAdd(s0_1, M4(-1.199e-01, 2.641e-01, 1.930e-01, 4.907e-01, -7.344e-02, -5.004e-02, -8.055e-02, -1.078e-02, 7.095e-02, -6.252e-02, -2.632e-02, -3.368e-02, 6.609e-03, 1.314e-01, 5.713e-02, 3.680e-01), r);\n\tr = MulAdd(s0_2, M4(1.390e-01, -1.533e-02, -2.715e-01, -3.167e-02, 2.957e-02, -6.323e-02, -1.147e-02, -9.545e-02, -7.786e-02, -5.598e-02, -1.246e-02, -2.553e-02, -2.138e-01, 2.817e-01, 2.373e-01, -4.542e-02), r);\n\tr = MulAdd(s0_3, M4(3.335e-01, 2.806e-01, -3.541e-01, -8.990e-01, -1.782e-02, -2.947e-02, 1.060e-01, 5.400e-02, -1.187e-01, 8.051e-02, 2.860e-02, 3.945e-02, -5.752e-02, 2.183e-01, 1.091e-01, 3.010e-01), r);\n\tr = MulAdd(s0_4, M4(2.118e-01, -9.166e-01, 2.769e-01, -9.884e-01, -7.564e-03, 6.236e-02, -5.832e-02, -1.010e-01, -1.217e-02, 3.905e-02, -2.208e-01, -4.258e-02, 2.551e-01, 2.034e-01, 3.851e-01, -1.103e+00), r);\n\tr = MulAdd(s0_5, M4(3.171e-01, -5.767e-01, -6.511e-01, 3.612e-01, -2.524e-02, -1.359e-01, -5.570e-02, -5.619e-03, -9.918e-02, 1.493e-01, 2.648e-01, 6.511e-02, 1.727e-01, -1.207e-01, -3.091e-01, 4.578e-01), r);\n\tr = MulAdd(s0_6, M4(-1.468e-01, -6.237e-02, -1.201e-01, 1.999e-01, -7.051e-02, 1.615e-03, -2.254e-02, -2.706e-02, 8.809e-03, -3.437e-02, -6.647e-02, -6.118e-02, 4.269e-01, 1.911e-03, 3.764e-01, 2.219e-01), r);\n\tr = MulAdd(s0_7, M4(-3.013e-01, -2.085e-01, 1.862e-01, -2.243e-01, 1.371e-01, 1.049e-01, 3.014e-02, 2.320e-01, 8.462e-02, -4.937e-04, 1.677e-01, 2.084e-01, 4.763e-01, 1.236e-01, 1.038e-01, 1.427e-01), r);\n\tr = MulAdd(s0_8, M4(-8.250e-02, 1.199e-01, -1.917e-01, 1.713e-01, -2.901e-01, -2.251e-02, 2.543e-02, 7.192e-02, 7.725e-02, -6.247e-02, 1.014e-01, -8.146e-03, 2.485e-01, 9.060e-02, 1.734e-01, -4.235e-02), r);\n\tr = MulAdd(s1_0, M4(1.510e-02, 8.534e-02, -1.256e-01, 2.189e-03, 9.642e-03, -3.459e-02, 6.241e-02, -9.895e-02, -9.687e-02, 6.979e-02, -1.456e-01, -8.158e-02, -8.378e-02, 7.961e-02, -3.521e-02, -2.195e-02), r);\n\tr = MulAdd(s1_1, M4(2.153e-02, -1.841e-03, -7.239e-02, 1.259e-01, 4.431e-03, -6.453e-02, -9.590e-02, -2.068e-01, 9.783e-02, 2.137e-02, -6.300e-02, 1.256e-01, -5.519e-02, -1.348e-01, -1.007e-01, 2.611e-02), r);\n\tr = MulAdd(s1_2, M4(-2.289e-02, 1.505e-02, -9.565e-02, -9.444e-02, 1.853e-02, -4.434e-03, 4.014e-02, -1.921e-01, -9.101e-02, 4.097e-02, 2.745e-01, -4.392e-02, -1.296e-01, 4.348e-02, 2.198e-02, 7.045e-02), r);\n\tr = MulAdd(s1_3, M4(-2.575e-01, 6.324e-02, -8.278e-03, 4.785e-02, -3.651e-02, 3.326e-03, -4.598e-02, -5.095e-02, -2.492e-01, 1.092e-01, -1.840e-01, 2.782e-02, -1.246e-03, -4.282e-02, -6.877e-02, -2.206e-02), r);\n\tr = MulAdd(s1_4, M4(1.184e-01, 2.659e-02, 1.701e-01, -2.271e-02, 2.266e-01, 2.369e-01, 1.755e-01, -1.267e-01, 2.627e-01, 3.871e-01, 1.716e-01, 8.503e-01, 5.393e-02, 1.675e-01, 3.168e-02, -3.640e-02), r);\n\tr = MulAdd(s1_5, M4(-3.522e-01, 1.113e-01, 1.264e-01, -5.386e-02, -1.754e-01, 1.181e-01, 1.734e-01, -1.911e-01, -4.819e-01, -1.085e-01, 2.815e-01, 1.453e-01, 5.816e-02, -5.647e-03, 7.420e-02, -4.151e-02), r);\n\tr = MulAdd(s1_6, M4(-1.874e-02, -8.346e-02, 3.685e-02, -7.575e-02, -4.982e-02, -3.935e-02, -2.556e-03, 1.423e-01, -2.015e-01, -2.308e-02, 5.985e-02, -1.632e-01, -5.075e-02, 1.870e-02, -8.252e-04, 2.759e-02), r);\n\tr = MulAdd(s1_7, M4(-8.994e-02, -1.059e-01, -5.740e-03, -6.832e-02, 7.141e-02, -4.124e-02, 5.578e-02, 1.743e-02, 4.363e-02, -2.104e-01, 1.439e-01, -1.920e-01, 6.467e-02, -6.073e-02, -4.433e-02, 5.301e-02), r);\n\tr = MulAdd(s1_8, M4(-4.437e-02, -1.887e-02, 5.984e-02, 4.283e-02, -1.120e-01, 2.971e-02, 2.586e-02, -1.201e-01, -1.510e-01, 5.116e-02, 5.325e-02, -2.019e-01, 2.296e-02, 3.367e-02, 6.640e-02, -2.484e-02), r);\n\tr = MulAdd(s2_0, M4(-1.154e-01, -3.727e-02, 4.962e-02, -2.989e-01, 1.860e-02, -6.695e-02, 1.899e-01, 8.573e-03, -1.383e-03, 2.706e-02, -3.739e-02, -1.134e-01, -2.095e-02, 3.718e-02, 7.743e-02, -5.088e-02), r);\n\tr = MulAdd(s2_1, M4(-3.608e-02, 7.123e-02, 1.076e-01, -7.700e-02, -3.791e-02, -1.535e-02, -1.460e-01, -9.970e-02, 4.157e-02, -6.670e-02, -2.439e-02, -1.401e-01, -2.776e-02, -8.079e-02, -1.439e-02, -5.680e-03), r);\n\tr = MulAdd(s2_2, M4(3.343e-02, -3.126e-02, -4.215e-02, 3.148e-02, -1.017e-01, 6.599e-02, 8.057e-02, 8.994e-02, 8.925e-02, -1.281e-01, -1.496e-01, -2.940e-02, -2.018e-02, -5.284e-03, -2.517e-02, 1.505e-01), r);\n\tr = MulAdd(s2_3, M4(5.484e-02, 1.543e-01, -9.173e-02, -1.284e-01, 2.570e-02, 3.504e-02, 1.456e-01, -8.890e-02, 4.839e-04, 5.335e-02, 3.747e-03, 1.087e-01, 1.775e-01, 4.767e-02, 7.708e-02, -3.248e-02), r);\n\tr = MulAdd(s2_4, M4(-2.317e-01, 7.581e-02, 1.210e-01, -4.226e-03, -2.791e-02, -8.750e-02, -1.933e-01, 1.012e-01, -4.911e-02, 8.685e-03, -2.032e-02, -3.417e-02, 4.964e-03, -1.350e-01, 2.001e-02, -7.469e-03), r);\n\tr = MulAdd(s2_5, M4(-1.299e-02, 4.379e-02, -5.396e-02, 4.428e-03, -1.233e-02, 4.362e-02, 2.401e-01, 7.475e-02, -1.050e-01, -3.944e-02, -1.340e-01, -1.165e-01, -6.201e-02, -6.557e-02, -1.916e-01, -5.014e-02), r);\n\tr = MulAdd(s2_6, M4(-1.015e-01, -1.525e-01, -8.618e-02, -2.857e-03, -4.288e-03, 2.047e-02, -4.102e-02, 8.515e-02, 3.796e-02, 1.793e-02, -1.177e-02, 3.954e-02, -4.504e-02, -4.991e-02, 2.301e-02, 7.153e-02), r);\n\tr = MulAdd(s2_7, M4(-3.917e-02, -1.842e-02, -6.262e-02, 1.534e-02, 2.883e-02, -1.888e-01, -5.097e-02, -4.846e-02, 1.489e-01, 1.533e-01, 4.138e-02, 1.724e-01, -1.702e-01, -5.663e-02, -1.019e-01, -1.328e-01), r);\n\tr = MulAdd(s2_8, M4(1.018e-01, -5.588e-02, -1.930e-03, 8.572e-02, -6.390e-02, 1.678e-03, 3.503e-02, -4.689e-02, -9.708e-03, 8.473e-02, 2.030e-02, -3.910e-02, -6.516e-02, 7.146e-02, 2.815e-02, 2.361e-02), r);\n\tr = MulAdd(s3_0, M4(-1.943e-01, 2.283e-03, 2.672e-02, -2.011e-01, 1.774e-02, -2.625e-02, 5.873e-02, 6.881e-02, 8.473e-03, -5.936e-02, -1.474e-01, -1.988e-03, -1.413e-01, -1.813e-03, 5.192e-02, 6.340e-02), r);\n\tr = MulAdd(s3_1, M4(1.403e-02, 4.498e-02, -6.944e-02, 1.105e-01, 9.061e-02, -4.487e-02, 1.236e-01, -6.802e-02, 1.823e-02, 1.081e-01, 2.219e-02, 8.465e-02, 5.791e-02, -1.179e-01, -1.434e-01, 2.652e-01), r);\n\tr = MulAdd(s3_2, M4(5.514e-02, 6.423e-02, -9.896e-02, 1.110e-01, -6.340e-03, 5.026e-03, -2.387e-02, 5.807e-02, 2.515e-02, -4.631e-04, -4.919e-02, -3.969e-02, -2.147e-01, 2.110e-01, 3.099e-01, 4.742e-02), r);\n\tr = MulAdd(s3_3, M4(8.744e-02, 1.767e-01, -7.535e-05, -2.209e-02, 8.828e-02, 9.865e-02, -5.802e-02, -8.668e-02, -3.398e-02, 3.748e-02, -1.399e-01, -5.093e-02, 3.669e-01, 3.469e-02, -1.172e-01, 3.117e-01), r);\n\tr = MulAdd(s3_4, M4(-2.595e-01, -1.440e-01, -1.141e-01, -2.532e-01, -1.192e-01, 2.156e-01, 4.248e-01, 3.467e-01, 3.341e-01, 3.922e-01, 8.266e-03, 2.721e-01, 3.318e-01, -8.631e-02, -3.512e-02, 6.408e-01), r);\n\tr = MulAdd(s3_5, M4(-2.619e-02, -2.449e-04, -2.637e-02, -4.795e-02, -1.172e-01, -2.330e-02, 1.458e-01, 2.066e-03, -3.113e-02, 1.527e-01, -8.270e-02, 1.190e-01, -2.479e-01, -7.839e-02, 3.707e-02, -6.188e-04), r);\n\tr = MulAdd(s3_6, M4(7.165e-02, 7.162e-02, -3.879e-02, 4.270e-02, 1.367e-01, 6.812e-02, 9.305e-02, 5.848e-02, -2.524e-01, 2.116e-01, -5.745e-02, -9.440e-02, 2.686e-01, 1.744e-01, 1.037e-01, 2.787e-01), r);\n\tr = MulAdd(s3_7, M4(-7.360e-02, 5.454e-03, -2.180e-02, 1.877e-02, 2.010e-01, -2.632e-01, -2.253e-01, -2.037e-01, 3.199e-01, 2.561e-01, -7.339e-03, 2.001e-01, 2.209e-01, -9.087e-02, 2.985e-01, 1.805e-01), r);\n\tr = MulAdd(s3_8, M4(-2.490e-02, 5.573e-02, -1.460e-02, -4.931e-02, 1.280e-02, -1.876e-02, 6.681e-02, -9.540e-02, -3.020e-02, 4.041e-01, 3.484e-01, 2.859e-01, -6.750e-02, -3.162e-02, -6.087e-02, 1.181e-01), r);\n\tr = MulAdd(s4_0, M4(4.114e-02, 2.156e-02, 3.484e-02, 1.157e-01, -6.806e-02, -1.986e-01, 3.319e-02, -2.484e-02, -1.519e-01, 6.665e-02, -2.368e-01, 6.504e-02, -4.751e-02, 1.172e-01, 1.072e-01, 1.416e-01), r);\n\tr = MulAdd(s4_1, M4(-3.483e-02, -8.210e-03, -5.584e-02, -2.905e-02, 3.782e-04, 2.407e-02, 6.459e-02, -5.554e-04, 7.566e-02, 6.572e-02, 1.876e-01, 1.694e-01, 1.467e-02, 2.151e-01, -3.089e-02, -3.616e-02), r);\n\tr = MulAdd(s4_2, M4(-1.297e-02, 3.713e-03, 4.972e-02, -5.496e-02, 9.963e-02, 1.992e-02, 4.349e-02, -1.380e-01, -1.116e-01, 1.538e-01, 8.035e-02, -7.731e-02, -6.989e-02, 5.333e-02, 1.544e-01, -1.858e-01), r);\n\tr = MulAdd(s4_3, M4(-9.309e-03, 1.125e-02, 4.129e-03, 7.425e-02, 5.974e-02, -1.624e-01, 2.433e-02, 5.115e-02, -4.260e-02, -2.221e-02, -9.451e-02, -1.544e-02, 2.424e-01, -2.633e-01, 1.835e-01, 8.455e-02), r);\n\tr = MulAdd(s4_4, M4(2.690e-02, 3.714e-01, 1.985e-01, 2.515e-01, 5.585e-02, -1.168e-01, 1.335e-02, 3.549e-02, 1.684e-02, -1.506e-01, -6.873e-02, 2.926e-02, 1.050e-01, 1.381e-01, -9.192e-02, -1.441e-01), r);\n\tr = MulAdd(s4_5, M4(3.613e-02, 2.025e-01, 2.172e-01, 1.357e-01, -8.527e-02, 6.962e-03, -9.127e-02, 6.487e-02, -9.093e-02, 1.070e-01, 3.577e-01, -1.280e-01, 1.199e-01, -1.240e-01, -2.633e-02, 1.482e-01), r);\n\tr = MulAdd(s4_6, M4(1.900e-01, -1.009e-01, 8.051e-02, 1.877e-02, -4.018e-02, 5.551e-02, -6.814e-03, 1.446e-02, -1.889e-02, 1.077e-01, 6.959e-02, 6.740e-02, 2.197e-01, -2.703e-02, 1.179e-01, -1.687e-03), r);\n\tr = MulAdd(s4_7, M4(1.679e-01, -1.207e-02, 2.712e-01, -1.008e-01, 6.575e-03, 9.142e-02, -1.550e-01, 3.974e-01, -1.676e-03, 1.305e-01, 8.865e-02, 7.105e-02, -1.234e-01, -1.420e-01, -8.748e-02, -7.283e-02), r);\n\tr = MulAdd(s4_8, M4(2.725e-01, -6.153e-02, 4.981e-02, 1.774e-01, -9.073e-02, 6.040e-02, 9.336e-02, -7.679e-02, 1.834e-02, -1.102e-01, -1.968e-02, -3.985e-02, -4.841e-02, 3.740e-02, 3.600e-02, 6.039e-03), r);\n\tr = MulAdd(s5_0, M4(1.158e-02, 2.884e-02, 4.734e-02, -4.314e-02, 2.771e-02, -9.670e-03, -4.776e-02, 4.941e-02, -2.571e-02, 1.174e-03, 1.968e-01, -8.499e-02, 6.964e-03, -1.313e-01, 8.917e-02, -1.986e-01), r);\n\tr = MulAdd(s5_1, M4(4.028e-02, -1.396e-01, -9.028e-02, -1.018e-01, 2.001e-02, -2.781e-02, -3.648e-02, -3.024e-02, 1.685e-01, -9.134e-02, -2.649e-02, -7.201e-02, 5.048e-02, -5.481e-02, 2.729e-02, -2.042e-01), r);\n\tr = MulAdd(s5_2, M4(3.310e-02, -8.450e-02, -2.617e-02, -2.513e-02, 4.769e-02, -1.087e-02, 2.853e-02, -7.859e-02, 5.306e-02, -5.234e-03, -6.802e-02, -9.789e-03, -1.707e-03, -4.896e-02, 6.068e-02, -3.022e-02), r);\n\tr = MulAdd(s5_3, M4(-3.122e-02, 9.881e-02, -8.278e-02, -1.581e-01, -1.089e-02, -1.052e-01, 1.229e-01, 1.970e-01, -2.099e-01, -4.803e-01, -6.948e-02, 3.955e-02, 1.303e-01, -8.005e-02, -4.979e-02, -3.878e-02), r);\n\tr = MulAdd(s5_4, M4(-9.817e-03, 2.285e-01, 1.675e-01, 3.270e-01, 3.366e-03, 1.700e-02, -2.087e-01, 1.093e-01, -2.263e-01, -1.546e-01, -4.074e-01, 3.933e-01, 1.169e-01, -1.683e-01, -1.159e-01, -1.172e-01), r);\n\tr = MulAdd(s5_5, M4(-6.034e-02, 1.517e-01, 1.172e-01, 6.405e-03, -1.346e-01, -8.563e-02, 2.563e-03, 1.381e-01, -3.129e-02, 1.142e-02, 9.090e-02, -1.378e-03, 3.933e-02, 2.873e-02, -2.354e-02, 5.006e-02), r);\n\tr = MulAdd(s5_6, M4(3.680e-02, -5.471e-02, -6.054e-02, -3.135e-01, 1.337e-01, 9.144e-03, 3.424e-02, 1.716e-01, 1.616e-01, 8.375e-02, 1.528e-01, 1.229e-01, -3.529e-02, 5.043e-02, 6.950e-02, 2.310e-01), r);\n\tr = MulAdd(s5_7, M4(1.190e-01, 2.114e-01, 1.784e-01, 3.127e-01, 2.863e-02, -8.856e-03, -2.116e-01, 8.963e-02, 1.096e-01, -1.033e-01, -1.181e-01, -3.442e-02, -4.559e-02, 3.785e-02, -4.856e-02, 9.249e-02), r);\n\tr = MulAdd(s5_8, M4(1.512e-01, -3.018e-01, 1.104e-01, 5.374e-02, 1.420e-01, -5.410e-02, -2.156e-02, 2.549e-02, -1.304e-01, 7.199e-02, -1.647e-02, -1.655e-02, -1.562e-02, -9.125e-03, 4.871e-02, 8.061e-02), r);\n\tr = MulAdd(s6_0, M4(-1.661e-01, -7.401e-02, 2.991e-01, 3.378e-02, 8.224e-03, 2.133e-01, 1.556e-01, -8.104e-02, -3.602e-02, 1.171e-01, -1.558e-01, -2.589e-01, 5.025e-02, -3.294e-01, 8.721e-02, -9.232e-02), r);\n\tr = MulAdd(s6_1, M4(-4.399e-02, -9.049e-02, -1.463e-01, 1.184e-03, -1.211e-02, -4.100e-01, -1.794e-01, -5.316e-01, -3.010e-02, -1.254e-01, -4.003e-02, 2.558e-01, 1.006e-01, -3.878e-01, 5.315e-02, -4.302e-01), r);\n\tr = MulAdd(s6_2, M4(-6.827e-02, -7.814e-02, -1.883e-02, -7.352e-02, 5.799e-02, -2.375e-01, -1.946e-01, 2.344e-01, -3.900e-02, 1.998e-01, 3.617e-02, 3.397e-01, -3.544e-03, -1.710e-01, -2.681e-01, 3.032e-01), r);\n\tr = MulAdd(s6_3, M4(-1.239e-02, -3.642e-01, 5.169e-01, 1.102e-01, -1.929e-01, -2.757e-01, 2.194e-01, 1.241e-02, 1.100e-02, 5.933e-02, -3.584e-02, 4.883e-02, 8.225e-02, -3.258e-01, -3.024e-01, -7.706e-02), r);\n\tr = MulAdd(s6_4, M4(-1.048e-01, -2.233e-01, -4.194e-01, -1.971e-01, 3.057e-02, -5.247e-01, -3.971e-01, -7.568e-01, 4.288e-01, -4.538e-01, -1.061e-01, -4.279e-03, 3.848e-01, 6.533e-02, 1.332e-01, 6.273e-01), r);\n\tr = MulAdd(s6_5, M4(-3.299e-01, 4.182e-01, 5.688e-02, -3.792e-01, 1.344e-01, -1.587e-01, -3.395e-01, -4.844e-01, -9.787e-02, 2.398e-01, 1.441e-01, -2.164e-01, -2.454e-01, -3.969e-01, 5.676e-02, 1.053e-01), r);\n\tr = MulAdd(s6_6, M4(7.717e-02, 1.401e-01, 5.452e-02, 8.239e-02, -2.146e-01, -7.424e-02, -4.493e-02, 1.239e-01, -1.574e-01, -6.523e-02, 2.124e-02, 3.047e-02, -2.604e-02, -2.442e-01, 1.042e-01, 2.765e-01), r);\n\tr = MulAdd(s6_7, M4(-2.414e-01, 3.261e-01, 4.907e-02, 1.913e-01, -1.530e-01, -2.334e-01, -2.100e-01, -3.092e-01, -3.491e-01, 8.934e-02, -1.828e-01, -2.946e-01, -2.928e-01, -3.750e-01, -1.567e-01, -5.165e-01), r);\n\tr = MulAdd(s6_8, M4(-2.566e-01, 7.944e-03, -3.867e-02, 4.289e-02, -1.935e-01, 2.399e-01, -7.992e-02, -3.480e-01, 2.756e-01, -3.004e-01, -1.980e-01, 8.063e-02, 1.975e-01, -5.120e-01, -7.178e-01, -1.576e-01), r);\n\tr = MulAdd(s7_0, M4(-5.313e-02, -9.675e-02, 8.447e-02, -1.015e-03, 4.811e-02, -5.155e-02, 1.174e-01, -3.531e-02, -5.847e-02, 2.552e-02, -3.431e-02, 9.081e-02, -1.513e-02, 4.855e-02, -5.698e-02, -1.104e-01), r);\n\tr = MulAdd(s7_1, M4(2.220e-02, -2.069e-01, -3.894e-02, -1.384e-01, -3.986e-02, 6.346e-02, 5.772e-03, -5.374e-02, -6.286e-02, 4.130e-02, 7.041e-02, 5.773e-02, -6.073e-02, -4.835e-02, 6.096e-02, -5.045e-02), r);\n\tr = MulAdd(s7_2, M4(-5.409e-02, -2.186e-02, -2.865e-02, 5.458e-02, 6.856e-02, -6.888e-02, -4.426e-02, -1.850e-02, -3.532e-02, 9.458e-02, 4.661e-02, 5.473e-02, -6.527e-03, 2.349e-02, 1.594e-02, 3.684e-02), r);\n\tr = MulAdd(s7_3, M4(7.641e-02, 1.499e-01, 1.137e-01, 9.937e-02, 1.111e-01, -4.915e-02, 6.421e-02, -5.531e-02, -7.104e-02, -7.343e-02, 6.893e-03, 3.452e-02, 7.411e-04, 1.072e-03, -1.191e-02, 1.098e-01), r);\n\tr = MulAdd(s7_4, M4(-1.380e-01, 1.221e-01, -2.653e-01, 1.543e-01, -7.499e-03, -1.484e-01, -6.812e-02, -1.438e-01, 1.563e-01, -9.350e-02, -5.984e-02, -1.608e-02, -1.048e-03, -3.701e-03, 1.823e-03, 1.252e-02), r);\n\tr = MulAdd(s7_5, M4(-5.844e-02, 6.552e-02, -2.884e-04, -1.433e-01, 1.590e-01, 2.454e-02, -1.529e-02, 1.079e-01, -1.876e-02, -7.553e-02, -5.341e-02, 5.856e-02, 5.801e-02, -5.251e-02, -9.596e-02, -1.300e-02), r);\n\tr = MulAdd(s7_6, M4(-3.389e-02, -4.335e-03, 6.620e-02, 1.189e-01, 5.442e-02, 6.087e-02, -7.007e-02, -6.704e-03, 4.338e-02, 6.597e-02, 5.637e-02, -3.489e-02, 1.003e-01, -1.031e-04, 1.344e-02, -2.442e-03), r);\n\tr = MulAdd(s7_7, M4(3.731e-04, 2.007e-03, -2.524e-02, 2.764e-02, 1.374e-01, 9.564e-02, 2.084e-02, 2.440e-01, -7.477e-02, 1.743e-01, 1.243e-01, 5.556e-02, 9.613e-02, 4.185e-02, -2.427e-02, -5.286e-02), r);\n\tr = MulAdd(s7_8, M4(1.166e-01, -1.165e-01, 4.113e-02, -1.206e-02, 3.121e-02, 2.477e-02, 3.920e-02, -3.340e-02, -7.050e-02, 9.544e-03, -1.030e-02, -1.385e-01, -4.626e-02, 1.883e-02, -3.286e-02, 6.743e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.055e-03, 8.217e-04, 1.986e-04, -1.878e-02 };\n\tr = MulAdd(s0_0, M4(1.154e-01, -1.985e-01, 1.499e-01, -3.340e-02, -1.705e-01, 1.114e-01, -9.974e-02, 3.990e-02, -6.327e-02, 9.178e-02, -5.247e-02, -4.332e-02, 1.879e-01, 6.154e-02, 1.950e-01, -1.546e-02), r);\n\tr = MulAdd(s0_1, M4(-3.251e-01, 1.854e-01, -1.207e-01, 8.930e-03, 1.084e-01, 4.698e-02, -2.006e-01, -1.060e-01, -2.855e-02, -5.228e-02, 4.426e-02, -7.995e-02, 2.124e-01, 1.694e-01, -4.630e-02, -2.907e-01), r);\n\tr = MulAdd(s0_2, M4(1.770e-01, -2.177e-02, -3.960e-02, -4.858e-03, 2.929e-02, -9.233e-02, -2.425e-02, -3.472e-02, -3.113e-02, 2.401e-02, 5.923e-02, -1.336e-02, -1.948e-02, 2.982e-01, 2.401e-01, -6.072e-02), r);\n\tr = MulAdd(s0_3, M4(2.466e-01, -1.719e-01, -2.502e-01, -2.076e-01, 5.577e-02, 8.098e-02, 2.537e-02, 3.755e-02, 1.009e-01, 5.775e-02, -6.156e-02, 1.435e-01, 1.549e-01, 7.111e-02, 7.965e-02, 3.535e-02), r);\n\tr = MulAdd(s0_4, M4(-3.845e-01, -4.311e-01, -9.531e-02, 1.549e-01, 1.925e-01, 1.959e-01, -4.525e-02, -1.145e-01, -1.287e-01, 3.548e-02, -2.069e-01, -3.321e-02, -5.058e-01, -5.712e-01, 2.665e-01, -1.251e-01), r);\n\tr = MulAdd(s0_5, M4(-2.107e-01, -2.416e-01, 2.315e-01, 1.819e-01, -1.505e-01, -1.737e-01, -1.769e-01, 2.376e-01, 3.709e-02, -4.289e-03, -1.603e-01, 1.601e-01, 6.685e-02, -1.035e-02, 2.208e-01, 4.211e-01), r);\n\tr = MulAdd(s0_6, M4(1.504e-02, 2.069e-01, -4.744e-02, -4.930e-02, 1.714e-02, -2.204e-02, -3.344e-02, 8.667e-02, -8.427e-02, -1.567e-02, 7.016e-03, 2.903e-02, -2.768e-01, 8.307e-02, 1.835e-01, 3.246e-02), r);\n\tr = MulAdd(s0_7, M4(2.362e-01, 1.497e-01, -2.478e-02, 2.906e-01, -5.144e-02, -3.948e-02, -8.055e-02, 8.972e-02, -3.795e-02, -7.829e-02, 1.327e-01, -2.375e-02, 1.843e-01, 1.676e-02, 7.430e-02, -4.663e-02), r);\n\tr = MulAdd(s0_8, M4(-4.038e-01, -8.562e-02, -2.718e-02, 6.020e-03, -2.424e-03, -8.278e-02, 9.951e-03, 2.370e-01, 1.352e-01, -5.401e-02, 2.332e-02, 9.735e-02, 2.579e-02, -2.907e-02, -1.644e-01, 5.503e-01), r);\n\tr = MulAdd(s1_0, M4(-7.736e-02, 1.452e-02, -1.477e-01, 1.563e-02, -1.381e-01, -3.512e-02, -9.591e-03, 1.146e-01, 1.125e-01, 4.748e-02, -1.161e-01, 2.147e-02, 2.703e-03, 2.926e-02, 8.666e-03, -1.114e-01), r);\n\tr = MulAdd(s1_1, M4(9.165e-02, 1.007e-01, 9.648e-03, -2.103e-01, 9.773e-02, -1.104e-01, 1.274e-01, 6.616e-02, 1.256e-01, -4.704e-03, -5.183e-02, 7.561e-03, -1.578e-02, -1.429e-01, -8.847e-03, -1.296e-01), r);\n\tr = MulAdd(s1_2, M4(-6.068e-02, -1.243e-01, -1.991e-02, 9.462e-02, -1.522e-01, 6.658e-02, 7.342e-02, -8.660e-03, -5.382e-02, -5.284e-02, 1.034e-01, -2.342e-02, 1.933e-02, -1.654e-02, -5.903e-03, -5.457e-02), r);\n\tr = MulAdd(s1_3, M4(-6.515e-02, 1.092e-01, 5.110e-02, -1.597e-01, 1.952e-02, 1.197e-02, -1.445e-01, 1.139e-01, -2.891e-02, -4.518e-02, -8.023e-02, 2.761e-02, 6.582e-02, 6.526e-03, -4.022e-02, 4.173e-02), r);\n\tr = MulAdd(s1_4, M4(-3.641e-02, 2.065e-01, 2.426e-01, -1.669e-01, 1.970e-01, -9.693e-02, 1.057e-01, 8.536e-02, -1.529e-01, -7.039e-02, -6.987e-02, -2.977e-01, -1.966e-01, -7.779e-02, 5.828e-02, 2.423e-02), r);\n\tr = MulAdd(s1_5, M4(-2.706e-02, 9.218e-02, -1.989e-02, -7.584e-02, -2.667e-01, -2.042e-01, -8.444e-02, 8.047e-02, 2.194e-01, -2.141e-03, -2.280e-01, -1.609e-01, 9.254e-02, 1.471e-03, -2.530e-02, 7.227e-03), r);\n\tr = MulAdd(s1_6, M4(3.705e-02, 2.614e-02, 5.001e-02, 1.458e-01, -7.003e-02, 2.803e-03, 3.010e-02, 3.675e-02, -1.411e-01, -7.202e-02, 9.695e-02, -5.535e-02, 6.720e-03, 1.328e-01, -1.939e-02, 3.309e-02), r);\n\tr = MulAdd(s1_7, M4(-8.033e-02, 3.550e-02, 4.386e-02, 7.473e-02, 4.803e-03, 5.806e-02, 6.359e-02, -4.416e-02, 1.404e-01, 2.763e-01, 2.265e-01, -7.626e-02, 8.332e-03, -1.466e-01, 1.343e-02, -1.013e-01), r);\n\tr = MulAdd(s1_8, M4(1.662e-02, -4.509e-02, 2.532e-02, 6.410e-02, -1.172e-01, -4.649e-02, 6.102e-02, 5.086e-02, 1.754e-01, 6.016e-02, 5.396e-02, -1.824e-01, 1.560e-02, 8.324e-02, 3.164e-02, 7.181e-02), r);\n\tr = MulAdd(s2_0, M4(-6.640e-02, -1.426e-01, 1.137e-01, 5.428e-03, -2.069e-01, 4.937e-02, 1.724e-01, 2.726e-02, -1.155e-02, -4.132e-02, -8.424e-02, 1.730e-03, -1.123e-02, 3.346e-02, 6.771e-02, -8.231e-03), r);\n\tr = MulAdd(s2_1, M4(-1.062e-01, 3.203e-02, 8.230e-02, 7.972e-02, 7.404e-03, 1.401e-01, -1.138e-01, 1.447e-01, -1.044e-01, -1.311e-03, 7.789e-02, 7.804e-02, -3.355e-02, 1.654e-02, 7.310e-02, 6.201e-02), r);\n\tr = MulAdd(s2_2, M4(-3.019e-02, -3.596e-02, 2.255e-02, -2.297e-02, 3.052e-03, 8.359e-02, -6.949e-02, -5.776e-02, 8.718e-02, 1.232e-01, 4.465e-02, 8.701e-04, 7.185e-02, -5.816e-02, -8.228e-02, 7.398e-02), r);\n\tr = MulAdd(s2_3, M4(5.284e-02, -1.955e-01, -2.261e-01, -8.229e-02, -1.307e-02, -1.169e-02, 1.719e-02, 1.146e-03, -4.732e-02, 1.624e-02, 3.803e-03, -2.993e-02, -3.137e-02, -4.827e-02, -2.871e-02, 8.863e-02), r);\n\tr = MulAdd(s2_4, M4(1.399e-02, -2.412e-02, -1.161e-01, -7.799e-02, 1.447e-01, 3.550e-02, 1.973e-01, 7.966e-02, -3.834e-02, 5.803e-02, 1.882e-02, -1.382e-01, -6.053e-02, -3.725e-02, 3.926e-02, -1.539e-01), r);\n\tr = MulAdd(s2_5, M4(-5.312e-02, 4.702e-02, 4.705e-02, -1.199e-01, -4.658e-03, -1.364e-02, -8.581e-03, 7.523e-02, -9.700e-02, 4.502e-02, -3.235e-02, -5.661e-02, -3.437e-02, -9.407e-04, 6.316e-02, -8.778e-03), r);\n\tr = MulAdd(s2_6, M4(-6.892e-02, 3.391e-02, 2.239e-02, 8.307e-02, -7.027e-02, -1.052e-01, -2.128e-02, 3.202e-02, 4.993e-02, 2.987e-02, 4.555e-02, -1.847e-02, 1.443e-02, 9.374e-02, 2.856e-02, 4.332e-02), r);\n\tr = MulAdd(s2_7, M4(1.564e-03, 6.275e-02, 6.931e-02, 5.604e-02, 1.268e-01, 1.958e-01, 2.448e-02, -5.129e-03, -4.479e-03, -5.916e-02, 1.685e-02, 2.788e-02, 4.907e-02, 5.102e-02, -6.232e-02, -1.471e-01), r);\n\tr = MulAdd(s2_8, M4(-4.005e-02, 3.995e-02, -5.486e-03, -7.590e-03, -5.829e-02, 8.440e-03, -2.257e-02, 5.725e-02, 7.811e-02, -3.087e-02, 1.459e-02, 7.373e-02, -8.110e-02, -4.362e-02, 9.073e-02, -1.205e-03), r);\n\tr = MulAdd(s3_0, M4(5.996e-02, 2.559e-02, -4.335e-02, -1.921e-02, 3.060e-02, 4.734e-02, 3.138e-02, 4.786e-02, -5.547e-02, -1.006e-01, 6.969e-02, 2.517e-02, 1.450e-01, -1.965e-01, -2.166e-02, 5.454e-02), r);\n\tr = MulAdd(s3_1, M4(-9.509e-02, 2.396e-01, -1.223e-01, 1.525e-01, 1.781e-02, 4.113e-02, 8.034e-02, 4.791e-02, -5.124e-02, 3.655e-02, 5.606e-02, -1.326e-01, 2.362e-01, -2.856e-01, 9.949e-02, -2.503e-03), r);\n\tr = MulAdd(s3_2, M4(-2.826e-02, -4.316e-02, -6.645e-03, -9.037e-02, 2.881e-02, 1.849e-02, -2.980e-02, 6.783e-02, -3.966e-02, -1.189e-01, 2.440e-02, 1.622e-01, 1.795e-01, -2.550e-02, -1.020e-01, -2.077e-01), r);\n\tr = MulAdd(s3_3, M4(2.792e-01, -1.974e-01, 7.530e-02, 1.101e-01, 1.597e-01, -8.238e-03, 1.060e-01, -1.239e-01, -3.282e-02, 2.198e-01, 2.315e-01, 1.032e-01, 3.121e-01, 1.830e-01, 1.565e-01, -1.057e-01), r);\n\tr = MulAdd(s3_4, M4(-1.694e-01, 7.644e-02, 8.391e-02, 1.463e-01, -1.367e-01, 5.560e-02, 2.217e-01, -9.963e-02, 3.859e-01, 5.398e-01, 2.109e-01, -3.869e-01, 2.685e-01, 5.993e-01, 8.275e-01, -4.697e-01), r);\n\tr = MulAdd(s3_5, M4(-1.178e-02, -1.160e-01, 6.509e-02, -3.215e-01, 8.458e-02, -3.025e-02, -2.700e-02, 1.391e-01, -9.935e-02, 1.111e-01, 2.960e-01, -1.086e-01, 1.861e-01, 1.874e-01, -1.004e-01, -1.994e-01), r);\n\tr = MulAdd(s3_6, M4(-1.525e-01, -7.228e-02, 2.043e-02, -8.608e-02, -1.859e-01, 1.840e-01, -1.472e-02, -8.037e-02, 4.645e-02, -3.003e-02, -1.340e-01, 7.466e-03, 3.184e-01, 2.931e-01, 8.777e-03, -3.022e-01), r);\n\tr = MulAdd(s3_7, M4(-2.205e-02, -6.896e-03, 8.011e-02, -1.185e-01, 3.310e-01, 1.849e-01, -1.434e-01, 3.598e-01, -1.459e-01, 1.145e-02, 4.120e-02, 5.183e-02, 2.295e-01, -3.073e-01, -1.620e-01, 5.568e-02), r);\n\tr = MulAdd(s3_8, M4(-6.493e-02, 5.277e-02, 8.076e-02, -2.153e-01, -7.712e-03, 3.392e-02, -8.628e-02, -4.286e-02, 8.173e-02, 1.005e-01, -1.663e-02, 1.694e-01, -8.667e-02, 2.390e-02, -9.287e-02, 4.230e-01), r);\n\tr = MulAdd(s4_0, M4(-2.535e-02, 7.364e-02, -3.215e-02, 4.371e-02, 1.397e-01, -6.697e-02, 2.961e-02, 2.035e-02, 2.170e-01, -6.461e-02, -2.757e-02, -6.409e-02, 6.608e-02, 1.919e-01, 9.635e-03, 1.185e-01), r);\n\tr = MulAdd(s4_1, M4(-9.423e-03, -1.002e-01, -4.713e-02, -5.427e-02, 4.230e-02, 6.388e-02, 6.406e-02, 5.379e-02, 1.912e-01, -2.114e-02, 3.427e-02, -1.870e-01, -9.313e-02, 2.295e-01, -2.073e-02, -5.200e-02), r);\n\tr = MulAdd(s4_2, M4(2.578e-03, -1.141e-01, 6.690e-03, 2.978e-02, -4.502e-03, -8.770e-04, -3.174e-02, 2.535e-02, -1.870e-01, -8.949e-02, 2.078e-02, -9.413e-02, -8.965e-02, 1.744e-02, -4.550e-02, -4.648e-02), r);\n\tr = MulAdd(s4_3, M4(-9.328e-02, 1.079e-01, 1.978e-02, -1.923e-01, 1.085e-01, -6.612e-02, 4.103e-02, -3.044e-02, 3.967e-02, 1.013e-01, 1.862e-01, -1.381e-01, -1.094e-02, 5.844e-02, 3.528e-02, 1.830e-01), r);\n\tr = MulAdd(s4_4, M4(6.287e-02, 1.220e-01, 1.360e-01, -1.083e-01, -1.495e-01, 2.206e-01, -2.363e-01, 2.418e-01, -8.528e-02, 3.689e-01, 1.967e-01, 9.816e-02, -2.394e-01, -3.554e-01, -6.090e-02, 1.320e-01), r);\n\tr = MulAdd(s4_5, M4(-2.292e-02, -7.498e-02, 6.930e-02, -1.607e-03, 1.009e-01, -5.481e-02, 9.314e-02, -7.166e-02, -9.101e-03, 9.149e-03, 4.943e-02, -5.215e-02, -8.129e-02, 1.033e-01, 1.182e-02, 1.077e-01), r);\n\tr = MulAdd(s4_6, M4(-5.504e-02, 9.136e-02, 1.641e-01, 4.553e-02, 6.292e-02, -6.497e-02, -1.033e-01, -4.378e-02, -6.554e-02, -1.832e-01, 2.845e-02, 1.938e-02, -3.586e-02, 1.955e-01, 2.876e-02, -3.387e-02), r);\n\tr = MulAdd(s4_7, M4(3.816e-02, 1.257e-01, 1.176e-01, 1.315e-02, -6.209e-02, -7.614e-03, -2.597e-02, 1.052e-01, -3.444e-02, -8.019e-02, 1.353e-01, 6.694e-02, 1.535e-01, -4.052e-02, -3.827e-02, -1.347e-01), r);\n\tr = MulAdd(s4_8, M4(9.157e-02, 6.265e-02, -1.309e-01, 4.060e-01, 1.959e-01, -2.986e-02, -1.577e-01, -3.929e-01, 1.190e-02, 4.277e-02, 1.645e-02, 1.027e-02, -1.224e-01, -6.421e-02, -3.139e-02, 1.453e-01), r);\n\tr = MulAdd(s5_0, M4(-1.302e-01, 3.300e-02, 6.960e-03, 3.966e-02, 8.696e-02, -6.568e-03, 1.117e-02, -5.805e-02, -1.110e-01, -5.196e-03, -2.877e-02, 1.780e-01, 6.423e-02, -9.575e-03, 7.860e-02, 1.108e-01), r);\n\tr = MulAdd(s5_1, M4(-9.273e-03, 2.335e-02, 4.001e-02, -4.611e-02, 1.594e-01, -8.232e-02, 8.274e-02, 3.317e-02, 1.149e-01, -1.097e-01, -2.183e-03, -5.485e-04, -1.422e-02, 2.953e-02, -2.611e-02, 2.156e-02), r);\n\tr = MulAdd(s5_2, M4(1.851e-02, -1.381e-02, 1.401e-02, 3.595e-02, 1.079e-01, -1.405e-01, 3.376e-02, 4.824e-03, -4.003e-02, -2.315e-02, 3.456e-02, -4.590e-02, -7.153e-02, -5.812e-02, 5.591e-02, -7.371e-02), r);\n\tr = MulAdd(s5_3, M4(6.266e-02, -6.022e-02, 1.909e-02, -9.669e-02, -1.710e-01, 1.155e-01, 1.624e-01, -3.687e-02, 3.599e-02, -9.302e-02, 5.482e-02, -1.785e-02, 1.419e-01, -6.523e-02, -2.334e-01, 2.313e-01), r);\n\tr = MulAdd(s5_4, M4(1.499e-02, 2.946e-01, 3.317e-02, -1.004e-02, 1.402e-01, -5.913e-02, -3.612e-01, 6.792e-02, 7.166e-02, 1.300e-01, 4.334e-02, 2.055e-02, -5.005e-02, -3.802e-01, -1.309e-01, 2.824e-01), r);\n\tr = MulAdd(s5_5, M4(-3.209e-02, 1.013e-01, -3.733e-02, 6.260e-02, 1.285e-01, -2.924e-02, 5.652e-02, -1.114e-01, 4.553e-02, -9.548e-05, -4.586e-02, -1.267e-01, -5.062e-02, -7.563e-02, 3.300e-02, 1.982e-03), r);\n\tr = MulAdd(s5_6, M4(-3.837e-02, 1.041e-02, -8.579e-02, 3.184e-02, 1.004e-01, -5.789e-03, 5.265e-02, 1.051e-01, 9.106e-02, -1.191e-01, -5.411e-02, -6.687e-02, -4.547e-03, -1.372e-01, -2.608e-02, -1.647e-02), r);\n\tr = MulAdd(s5_7, M4(-6.538e-02, -2.211e-01, -2.886e-02, 3.342e-01, 2.763e-01, -1.112e-03, -3.350e-02, -5.897e-02, 9.749e-02, 5.000e-02, -1.087e-01, -1.115e-01, 1.179e-01, -2.407e-01, 2.304e-02, -5.334e-02), r);\n\tr = MulAdd(s5_8, M4(1.509e-01, 3.522e-02, -4.966e-02, 1.525e-01, -9.950e-03, 5.831e-02, -2.597e-02, 5.006e-02, 1.811e-01, 6.085e-02, -2.301e-02, -1.797e-01, 3.146e-02, -3.496e-02, 5.519e-02, -4.698e-02), r);\n\tr = MulAdd(s6_0, M4(-3.889e-01, 8.472e-02, 3.466e-01, -2.317e-02, -3.272e-01, -8.978e-03, 2.403e-01, -8.252e-02, 8.031e-02, 5.331e-02, -1.362e-01, 4.599e-02, -7.745e-01, 5.237e-03, -3.595e-02, 1.151e-02), r);\n\tr = MulAdd(s6_1, M4(-4.438e-02, 1.434e-01, -2.854e-01, 8.344e-02, -2.194e-01, -1.053e-01, 3.440e-01, -1.755e-01, 1.965e-01, 2.596e-01, -2.437e-01, 2.639e-02, 8.182e-02, -6.142e-01, 5.269e-01, 1.076e-01), r);\n\tr = MulAdd(s6_2, M4(4.176e-02, -1.379e-02, -2.602e-02, -1.157e-01, 1.066e-01, 1.188e-01, 1.506e-01, -1.939e-01, -6.532e-02, 1.515e-01, -6.209e-02, -5.568e-02, -2.508e-01, 7.956e-02, -6.839e-03, -7.680e-02), r);\n\tr = MulAdd(s6_3, M4(-5.274e-01, 1.574e-01, 2.322e-02, 1.974e-01, -2.015e-01, -4.006e-02, -4.281e-02, 6.102e-02, -8.254e-02, 2.448e-02, -1.601e-01, 6.131e-02, 6.199e-02, 4.952e-02, -3.097e-01, 4.143e-01), r);\n\tr = MulAdd(s6_4, M4(-1.786e-01, 2.494e-01, 1.251e-01, 9.363e-02, -1.613e-01, 1.808e-01, -6.279e-01, 5.140e-01, -2.397e-01, -3.454e-02, -1.753e-01, 3.366e-01, -4.295e-01, -8.298e-02, -3.088e-01, -2.506e-01), r);\n\tr = MulAdd(s6_5, M4(-5.745e-01, -2.340e-03, 4.310e-02, 1.359e-01, -9.361e-02, 1.619e-01, -1.893e-01, 2.686e-01, 2.511e-01, 3.182e-02, 2.292e-02, -1.272e-01, 1.148e-01, 3.345e-01, -5.757e-01, -2.783e-01), r);\n\tr = MulAdd(s6_6, M4(2.996e-01, -1.552e-01, 1.382e-01, 3.307e-01, 9.571e-02, -1.282e-02, -7.687e-02, -2.027e-02, -1.476e-02, 3.399e-02, -1.134e-01, -2.647e-02, -1.429e-01, -7.036e-02, -1.513e-02, 3.024e-02), r);\n\tr = MulAdd(s6_7, M4(-6.036e-01, -1.425e-01, 1.056e-01, -4.375e-01, -3.845e-01, 1.217e-01, -2.882e-01, 3.131e-01, 1.087e-01, -1.809e-01, -4.599e-02, -1.999e-02, 1.257e-01, 2.246e-01, -1.548e-01, -1.252e-01), r);\n\tr = MulAdd(s6_8, M4(-9.834e-02, 9.684e-02, 7.735e-02, 6.983e-02, 1.036e-01, 1.324e-01, 1.711e-01, -3.028e-01, -2.124e-02, -3.839e-02, 6.275e-02, -6.320e-02, -1.567e-01, 1.782e-01, -1.595e-01, 5.094e-01), r);\n\tr = MulAdd(s7_0, M4(-6.443e-02, -5.409e-02, -9.004e-02, 8.554e-02, 1.222e-02, 6.177e-02, 9.452e-02, -1.811e-03, 2.774e-03, -8.285e-03, -4.119e-02, -2.120e-02, 4.556e-02, 2.671e-02, -7.488e-02, 3.807e-02), r);\n\tr = MulAdd(s7_1, M4(7.269e-02, -9.661e-02, 7.214e-03, 1.116e-01, -6.318e-02, -7.593e-02, -7.289e-03, 1.131e-01, 1.499e-01, 9.402e-02, -4.967e-02, -1.259e-02, -5.367e-02, -7.372e-02, 8.031e-02, -3.618e-02), r);\n\tr = MulAdd(s7_2, M4(6.442e-03, -3.003e-02, -1.879e-02, 6.275e-02, 8.840e-02, 5.896e-02, 6.386e-02, -2.205e-02, -4.846e-02, 6.194e-02, -7.356e-02, -3.447e-03, -1.864e-02, -4.320e-02, -1.732e-02, -4.979e-02), r);\n\tr = MulAdd(s7_3, M4(2.765e-02, 4.141e-02, 2.696e-02, -5.018e-02, 3.907e-02, -7.082e-02, 9.419e-02, -8.741e-03, 1.573e-01, 9.473e-02, 4.708e-02, -1.652e-02, 1.502e-02, 8.182e-02, -1.322e-02, 3.526e-02), r);\n\tr = MulAdd(s7_4, M4(-1.474e-01, -3.990e-02, -1.310e-01, -5.310e-02, 1.340e-01, -1.109e-02, -1.248e-01, 8.321e-02, -1.425e-01, -5.966e-02, -1.426e-01, -1.162e-03, 5.641e-02, 2.371e-03, 1.682e-02, -4.745e-03), r);\n\tr = MulAdd(s7_5, M4(-3.767e-03, 1.891e-02, 2.372e-03, -1.110e-01, 1.951e-02, -4.606e-02, -1.608e-01, 2.397e-01, -7.490e-02, -3.436e-02, 2.068e-02, -1.087e-01, -1.346e-01, 4.235e-02, 1.825e-02, 6.811e-02), r);\n\tr = MulAdd(s7_6, M4(-2.091e-02, 1.196e-02, -2.033e-02, 8.187e-02, 6.749e-02, -3.418e-02, -3.065e-04, -8.559e-02, -6.455e-02, 8.523e-02, 7.157e-02, 2.214e-02, -1.851e-02, -2.486e-04, 3.343e-02, 5.581e-02), r);\n\tr = MulAdd(s7_7, M4(-5.703e-03, 5.631e-02, -2.922e-02, 1.219e-01, 2.548e-02, -1.005e-01, -1.114e-01, -9.546e-02, -2.900e-02, 5.282e-02, 1.550e-01, -1.171e-02, -3.671e-03, 2.578e-02, 1.132e-02, -1.251e-03), r);\n\tr = MulAdd(s7_8, M4(-2.153e-02, 3.114e-02, -2.612e-02, 1.743e-01, 3.585e-02, -2.815e-02, 2.412e-02, -4.767e-02, -1.490e-01, 2.185e-02, 8.061e-02, 8.901e-02, 2.930e-02, -3.864e-03, -4.137e-05, -8.294e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 9.541e-03, -6.427e-03, 9.772e-03, -2.560e-03 };\n\tr = MulAdd(s0_0, M4(-1.929e-02, 1.394e-02, -1.029e-01, 2.892e-01, 4.374e-02, 6.804e-02, -1.009e-02, 3.317e-02, 6.233e-02, -6.770e-02, 6.294e-02, 9.080e-02, 1.315e-01, 2.016e-02, 1.460e-01, -2.511e-01), r);\n\tr = MulAdd(s0_1, M4(1.536e-01, 7.006e-02, 1.478e-01, -1.093e-01, -6.266e-02, 1.507e-02, 5.591e-02, 4.596e-02, 1.262e-02, -6.441e-02, 7.968e-03, -7.319e-02, -4.285e-01, 4.255e-01, 6.450e-02, -2.665e-01), r);\n\tr = MulAdd(s0_2, M4(-3.394e-01, 2.370e-02, -1.853e-01, 4.372e-02, -6.294e-02, 6.183e-02, 1.800e-02, 1.802e-03, 2.202e-02, -3.171e-02, -1.361e-02, 8.976e-03, -9.553e-02, 4.330e-02, 1.193e-01, -2.788e-02), r);\n\tr = MulAdd(s0_3, M4(-6.521e-01, 1.263e-01, -2.676e-01, 6.885e-01, -7.121e-02, 7.531e-02, -2.154e-02, -4.210e-02, 5.622e-02, -4.680e-02, 1.068e-01, 3.298e-02, -1.073e-01, 1.729e-01, -6.696e-02, 4.533e-01), r);\n\tr = MulAdd(s0_4, M4(1.685e-01, 2.405e-01, -1.513e-01, -2.889e-01, -5.371e-01, -4.868e-01, -3.566e-01, -9.242e-02, 2.206e-01, -1.275e-01, 2.622e-01, 1.606e-01, -4.582e-01, 1.417e+00, -7.227e-01, -1.538e-01), r);\n\tr = MulAdd(s0_5, M4(1.065e-01, 6.979e-02, 1.696e-02, 5.949e-02, -7.888e-02, 1.250e-01, -1.149e-02, 5.212e-03, -5.860e-02, 1.635e-04, -1.013e-01, 2.759e-02, -2.364e-01, 2.244e-01, -3.560e-01, 2.910e-01), r);\n\tr = MulAdd(s0_6, M4(-4.975e-02, -9.110e-02, -2.293e-01, 3.099e-01, -6.053e-03, -1.695e-03, 1.976e-02, 2.727e-02, -5.408e-02, -1.152e-02, 7.005e-02, 3.262e-03, 1.176e-01, 1.129e-01, 2.885e-01, -6.376e-02), r);\n\tr = MulAdd(s0_7, M4(3.176e-02, -1.691e-02, -2.270e-01, -1.639e-01, 1.829e-02, 1.531e-02, 1.670e-01, -2.879e-02, -7.558e-02, 1.134e-02, -7.440e-02, 1.989e-02, -6.936e-01, 2.447e-01, -4.170e-01, -1.200e-01), r);\n\tr = MulAdd(s0_8, M4(-9.140e-02, 9.945e-02, -1.102e-01, 1.411e-01, -4.055e-03, 4.229e-02, 8.477e-02, -4.669e-03, -9.157e-02, 1.788e-02, -1.170e-01, -1.028e-04, -1.183e-01, 7.345e-02, -2.036e-01, 1.127e-01), r);\n\tr = MulAdd(s1_0, M4(6.494e-03, -8.688e-02, 7.673e-02, 5.917e-02, 1.075e-01, -4.407e-02, -1.117e-01, 1.813e-01, 1.302e-01, -7.901e-02, 1.289e-01, 2.643e-01, -9.625e-02, 2.704e-02, 7.501e-03, 3.876e-02), r);\n\tr = MulAdd(s1_1, M4(7.495e-02, -4.704e-02, -2.103e-03, -2.250e-02, 3.552e-02, 5.431e-02, 1.374e-01, -1.099e-01, 1.235e-01, 8.284e-02, 1.965e-01, -3.252e-01, -5.457e-02, 4.518e-02, 2.164e-02, -2.932e-02), r);\n\tr = MulAdd(s1_2, M4(3.765e-02, 3.760e-02, 2.836e-02, -1.903e-02, 2.096e-01, 5.725e-02, 9.411e-02, -6.930e-02, 1.475e-01, -8.083e-02, -2.270e-02, -1.851e-02, -1.210e-02, -5.534e-02, 3.330e-02, -2.178e-02), r);\n\tr = MulAdd(s1_3, M4(-5.579e-02, -1.761e-01, 1.940e-01, -1.588e-03, -1.796e-02, -1.910e-02, -2.752e-02, 3.096e-01, -2.540e-02, -1.123e-01, 1.989e-01, -1.469e-01, 1.753e-01, 9.378e-03, -3.200e-02, -4.680e-02), r);\n\tr = MulAdd(s1_4, M4(-1.698e-01, 6.087e-02, -1.699e-01, 4.775e-02, -1.398e-01, 4.084e-02, 1.978e-01, 2.140e-02, -3.981e-01, -4.084e-01, 7.406e-01, 3.177e-02, 3.568e-02, 1.043e-02, 7.653e-02, -6.814e-02), r);\n\tr = MulAdd(s1_5, M4(-6.348e-02, -1.269e-01, -4.933e-02, -6.444e-02, -4.170e-02, 8.089e-02, -7.447e-02, -2.348e-01, 1.053e-01, -8.449e-02, 7.375e-02, 3.311e-02, -3.556e-03, -1.869e-02, -1.145e-01, 7.772e-02), r);\n\tr = MulAdd(s1_6, M4(1.427e-01, -5.258e-02, 1.594e-01, -6.412e-02, -3.988e-03, -6.896e-02, 3.285e-02, 2.957e-02, -8.045e-02, -8.518e-02, -3.740e-02, 1.324e-02, -5.752e-02, -2.155e-02, 8.845e-02, -2.719e-02), r);\n\tr = MulAdd(s1_7, M4(6.319e-02, -1.372e-01, 5.411e-02, -1.137e-02, -1.919e-03, 3.565e-03, 6.239e-02, 2.035e-02, 1.491e-01, -3.921e-02, -2.202e-01, 1.100e-01, 6.417e-02, 3.860e-02, -9.892e-02, 4.096e-02), r);\n\tr = MulAdd(s1_8, M4(-1.877e-02, -8.548e-03, -9.893e-03, 8.239e-02, -1.252e-01, 6.837e-02, -4.214e-02, -1.122e-01, -1.549e-01, -8.251e-02, -1.850e-02, 6.051e-02, -1.606e-02, -4.278e-02, 7.242e-03, 3.119e-02), r);\n\tr = MulAdd(s2_0, M4(2.938e-02, 6.311e-03, -1.603e-02, 1.864e-01, 2.389e-02, -7.010e-02, -1.969e-02, 1.665e-01, -8.765e-03, 3.094e-02, -7.212e-02, 9.473e-02, -9.279e-02, 4.196e-02, -6.420e-02, -1.139e-02), r);\n\tr = MulAdd(s2_1, M4(-6.522e-02, 3.284e-02, 6.400e-03, -6.888e-02, 1.214e-01, 4.339e-02, -4.605e-02, -1.347e-02, -5.231e-02, -4.723e-02, 5.547e-02, 4.327e-04, 3.641e-02, 1.037e-01, -3.036e-02, -5.208e-02), r);\n\tr = MulAdd(s2_2, M4(5.624e-02, -4.202e-02, -7.348e-03, 8.454e-02, -1.246e-02, -3.614e-02, -4.076e-02, 3.926e-02, 7.292e-02, -1.052e-02, 1.421e-01, -1.122e-01, 5.749e-02, 7.618e-03, 7.279e-02, 3.060e-02), r);\n\tr = MulAdd(s2_3, M4(-3.719e-02, 8.886e-02, -2.164e-01, 1.742e-01, 1.479e-01, 8.478e-02, -2.363e-01, 2.324e-01, -7.640e-02, 3.614e-02, -1.143e-02, -4.378e-02, 7.800e-02, 1.697e-02, 2.702e-02, -6.870e-02), r);\n\tr = MulAdd(s2_4, M4(7.121e-03, 5.612e-02, -1.539e-02, -1.779e-01, -2.794e-01, 5.596e-02, -6.104e-03, -4.248e-01, 4.653e-02, -5.111e-02, 4.138e-02, -5.634e-02, 2.431e-02, -1.374e-01, 1.631e-01, 8.579e-02), r);\n\tr = MulAdd(s2_5, M4(-7.348e-02, -2.786e-02, -5.249e-02, 8.804e-02, 1.323e-02, -8.938e-03, -5.376e-02, 1.981e-02, 7.637e-02, -1.045e-02, 4.240e-02, -3.250e-02, 3.613e-02, -7.318e-02, 1.206e-01, 5.736e-02), r);\n\tr = MulAdd(s2_6, M4(-1.362e-01, -4.425e-03, -6.220e-02, -1.334e-02, -1.092e-01, -4.584e-02, -1.233e-01, -6.446e-02, 1.995e-02, 1.654e-02, 9.213e-02, -4.404e-02, 4.236e-02, -2.820e-02, 2.746e-02, -2.553e-02), r);\n\tr = MulAdd(s2_7, M4(-6.418e-02, 4.919e-03, 1.203e-02, -1.571e-01, 1.260e-01, -1.607e-02, 2.401e-01, -8.348e-02, 2.950e-02, -2.530e-02, -4.351e-03, 2.585e-02, -1.479e-01, -2.062e-02, -5.796e-02, 1.788e-02), r);\n\tr = MulAdd(s2_8, M4(6.063e-02, -8.423e-03, -2.582e-02, 1.009e-01, -2.646e-02, -2.565e-02, -3.990e-03, 7.251e-02, 7.221e-02, -1.586e-02, 3.092e-02, -5.658e-02, 8.470e-02, -9.544e-02, 6.901e-02, 3.920e-02), r);\n\tr = MulAdd(s3_0, M4(2.115e-02, -8.124e-03, -2.608e-02, -7.437e-02, -1.013e-01, -1.921e-03, -2.710e-02, 4.266e-02, -1.688e-02, 7.936e-02, 1.422e-01, -1.240e-01, -2.660e-01, 2.149e-01, -1.288e-01, -8.502e-02), r);\n\tr = MulAdd(s3_1, M4(3.215e-01, -2.627e-02, 1.900e-01, -6.555e-02, 5.407e-02, 2.532e-02, -8.633e-02, -6.194e-02, -1.221e-01, 5.269e-03, 4.452e-02, -1.678e-02, -1.882e-01, 7.496e-02, 9.751e-02, -1.519e-02), r);\n\tr = MulAdd(s3_2, M4(7.334e-03, -3.815e-02, 3.329e-02, -4.134e-02, 6.074e-02, -1.149e-02, -1.718e-02, 1.138e-01, 2.585e-02, 3.471e-03, 3.192e-02, -5.751e-02, -2.387e-01, -6.247e-02, -1.428e-01, 1.758e-01), r);\n\tr = MulAdd(s3_3, M4(-8.371e-02, 1.729e-01, -4.040e-02, 7.848e-03, 3.826e-02, 1.037e-01, 3.446e-01, -1.630e-01, 1.937e-01, -2.246e-02, 2.290e-01, -3.674e-01, -3.557e-01, -9.400e-02, 8.883e-02, -2.473e-01), r);\n\tr = MulAdd(s3_4, M4(4.022e-02, 9.074e-02, 3.186e-01, -2.781e-01, -2.178e-01, 1.871e-01, 2.181e-01, -1.682e-01, -2.982e-01, -1.465e-01, 1.422e-01, -2.944e-01, -4.263e-01, -3.463e-01, -1.279e-01, 5.540e-02), r);\n\tr = MulAdd(s3_5, M4(5.062e-03, 2.637e-02, -6.406e-02, 2.344e-02, -2.716e-02, 4.376e-02, -1.275e-02, 1.372e-01, -9.199e-02, -6.601e-02, -1.921e-01, 1.098e-01, -2.245e-01, 4.797e-02, -3.830e-02, -9.858e-02), r);\n\tr = MulAdd(s3_6, M4(-7.698e-02, -1.355e-02, -6.104e-03, -5.110e-02, -1.172e-01, 2.314e-02, -1.717e-01, 4.721e-02, -4.435e-02, -9.955e-03, -7.747e-03, 1.264e-02, 8.600e-02, -8.934e-02, 3.089e-01, -2.826e-01), r);\n\tr = MulAdd(s3_7, M4(2.209e-01, -2.247e-02, 1.127e-01, -1.381e-01, -1.893e-02, -1.863e-02, -1.433e-01, -1.005e-01, 3.568e-01, 1.667e-01, 6.082e-01, -2.027e-01, -4.644e-02, 7.690e-02, -2.035e-01, 7.185e-02), r);\n\tr = MulAdd(s3_8, M4(3.511e-02, -4.453e-02, 5.640e-02, 6.786e-03, -9.863e-02, 3.650e-02, 1.515e-03, 9.665e-02, 3.349e-03, 5.730e-02, 2.440e-01, 5.529e-02, -9.132e-03, 1.216e-01, 1.038e-01, 1.600e-01), r);\n\tr = MulAdd(s4_0, M4(1.456e-02, 1.803e-02, -3.595e-02, 7.360e-02, -3.576e-02, 1.153e-02, 1.893e-02, -6.975e-02, -2.245e-02, -4.034e-03, 1.824e-01, -1.271e-01, 1.824e-01, 6.083e-02, -1.168e-02, 6.473e-02), r);\n\tr = MulAdd(s4_1, M4(2.423e-02, 1.714e-02, -2.532e-02, -2.726e-03, 1.654e-01, -1.382e-02, -9.903e-03, 3.748e-02, 1.648e-02, 1.015e-01, 3.709e-02, -6.161e-02, 1.033e-02, 5.414e-02, 7.422e-02, 7.323e-02), r);\n\tr = MulAdd(s4_2, M4(-1.186e-02, 6.384e-02, 2.749e-02, 4.222e-02, -3.260e-02, -1.220e-02, 1.434e-02, -5.661e-02, -9.468e-02, -3.613e-02, -1.145e-01, 2.334e-02, 9.387e-02, -5.652e-02, -1.897e-02, 2.035e-02), r);\n\tr = MulAdd(s4_3, M4(-8.724e-02, 4.730e-02, 1.411e-01, -2.486e-01, -9.238e-03, 1.033e-01, -2.847e-02, 1.085e-03, -6.764e-02, -7.273e-02, 1.216e-01, -1.953e-01, 2.037e-01, 1.383e-01, -1.154e-01, -9.102e-03), r);\n\tr = MulAdd(s4_4, M4(-3.881e-01, -8.371e-02, 5.415e-02, -5.053e-02, 6.264e-02, 5.022e-02, -1.208e-01, 1.725e-01, 1.402e-01, -1.852e-01, 1.642e-01, 1.540e-01, -6.915e-03, 3.961e-02, -7.876e-02, -1.696e-01), r);\n\tr = MulAdd(s4_5, M4(-4.428e-02, -2.901e-02, -1.489e-01, 1.314e-01, -8.217e-02, -3.771e-02, 2.933e-02, -1.317e-01, -9.995e-02, -1.362e-01, -1.978e-01, -4.783e-02, 4.732e-02, -7.175e-02, -1.323e-02, 2.203e-01), r);\n\tr = MulAdd(s4_6, M4(2.074e-01, 5.412e-02, 2.316e-01, -1.630e-01, -1.077e-01, 7.548e-02, -1.094e-01, 3.166e-02, 1.419e-02, 3.955e-02, -5.825e-03, -3.774e-02, -8.126e-02, 3.387e-03, -3.478e-02, 6.284e-02), r);\n\tr = MulAdd(s4_7, M4(-1.209e-01, -4.387e-03, -2.495e-01, -2.842e-02, 2.790e-01, 4.301e-03, 2.841e-01, -5.945e-02, 2.642e-01, -4.255e-04, 8.720e-02, -1.297e-01, -2.182e-01, 2.956e-03, -1.868e-01, 1.557e-03), r);\n\tr = MulAdd(s4_8, M4(-5.167e-02, 2.543e-02, -3.688e-02, 2.518e-01, -1.135e-01, -4.912e-02, -1.333e-01, -8.341e-02, -8.503e-02, 1.235e-02, -1.045e-01, 5.429e-02, -1.481e-02, -2.261e-02, -5.317e-02, 8.046e-04), r);\n\tr = MulAdd(s5_0, M4(-4.787e-02, 2.142e-02, -3.906e-02, 1.847e-02, -8.494e-02, 6.585e-03, -1.889e-02, -2.740e-02, 3.385e-02, 7.995e-03, 1.826e-02, -1.367e-01, 1.279e-01, 5.466e-02, -3.254e-02, -4.132e-03), r);\n\tr = MulAdd(s5_1, M4(-1.343e-02, 2.381e-03, 6.909e-02, -5.667e-02, -6.099e-02, -5.946e-02, -9.307e-02, 3.245e-02, -6.459e-02, 7.934e-02, -1.250e-02, -2.810e-02, -4.333e-02, -6.090e-05, 8.321e-02, -5.979e-02), r);\n\tr = MulAdd(s5_2, M4(6.584e-02, 4.673e-02, 4.752e-02, -2.226e-02, -1.202e-02, -6.762e-02, -1.710e-02, -4.154e-02, -4.673e-02, -3.560e-02, -3.847e-03, 8.072e-02, -1.030e-02, 1.828e-02, 3.360e-02, -5.665e-02), r);\n\tr = MulAdd(s5_3, M4(9.618e-02, -6.697e-02, 5.786e-02, -1.769e-02, 6.292e-02, 6.496e-02, -5.166e-02, -1.268e-01, 1.838e-01, -5.380e-02, -1.049e-01, -2.942e-01, -8.008e-02, 1.163e-01, -2.147e-01, 8.550e-02), r);\n\tr = MulAdd(s5_4, M4(1.806e-01, -2.214e-02, 1.480e-01, -4.695e-03, -2.015e-01, 4.037e-02, -2.033e-01, 9.411e-02, -1.514e-01, -1.609e-02, 1.584e-01, 9.198e-02, 3.643e-01, 1.669e-01, 5.255e-02, -5.626e-02), r);\n\tr = MulAdd(s5_5, M4(-3.640e-02, -7.449e-02, 4.916e-02, -3.708e-02, 3.561e-02, -6.471e-02, 6.061e-02, 1.204e-01, -7.679e-03, -4.449e-02, -1.074e-01, 5.020e-02, -1.304e-02, 1.463e-02, -1.400e-02, 7.025e-02), r);\n\tr = MulAdd(s5_6, M4(-6.186e-02, 2.234e-02, -2.843e-02, 9.581e-02, 2.966e-02, 7.306e-02, -7.263e-02, 2.891e-02, -4.971e-02, 4.807e-02, -7.351e-02, -2.457e-02, -6.424e-03, 4.141e-02, -2.535e-02, -8.942e-03), r);\n\tr = MulAdd(s5_7, M4(-1.253e-01, 3.679e-02, -4.725e-02, -4.554e-02, -1.710e-02, 5.232e-02, -4.381e-04, -1.350e-01, -2.596e-03, 2.879e-02, -8.824e-02, -1.344e-02, -1.887e-02, -1.858e-02, 1.976e-02, -9.516e-02), r);\n\tr = MulAdd(s5_8, M4(-1.535e-02, 4.001e-02, 2.514e-02, 1.360e-01, 3.558e-02, -1.636e-02, 3.687e-03, 1.382e-01, -7.037e-02, -6.769e-03, -4.821e-02, -9.504e-03, -1.632e-02, -4.082e-02, -4.551e-02, 8.719e-02), r);\n\tr = MulAdd(s6_0, M4(3.314e-01, -1.421e-01, -1.206e-02, 1.993e-01, -1.283e-01, -1.398e-01, -6.857e-02, -4.534e-03, 1.774e-01, 3.379e-03, 1.985e-03, 8.964e-03, -3.737e-01, 4.491e-02, -8.822e-02, -8.766e-02), r);\n\tr = MulAdd(s6_1, M4(1.706e-01, 1.010e-01, 6.570e-02, 3.344e-01, -2.310e-01, -2.290e-01, 1.214e-02, 1.429e-01, 6.835e-02, 1.687e-01, 3.769e-02, 8.285e-02, -5.040e-01, -8.710e-02, -2.200e-01, -2.363e-01), r);\n\tr = MulAdd(s6_2, M4(1.107e-01, 4.987e-02, 6.279e-02, 6.233e-02, -7.785e-02, -8.975e-02, 9.166e-02, -1.674e-01, 4.368e-02, -1.147e-01, -9.301e-02, 2.696e-03, 1.017e-01, 7.177e-02, 1.267e-01, 7.352e-02), r);\n\tr = MulAdd(s6_3, M4(8.419e-01, 1.557e-01, -1.064e-01, 3.449e-01, 1.228e-01, -6.586e-02, -3.389e-01, 4.428e-01, 3.516e-02, 9.812e-04, -1.527e-01, 3.165e-01, 2.210e-01, 1.391e-01, 2.527e-01, 7.654e-01), r);\n\tr = MulAdd(s6_4, M4(-7.380e-02, 2.066e-02, 1.157e-01, 3.417e-01, 6.235e-01, 2.678e-01, -4.457e-03, 7.970e-01, 4.932e-01, 1.805e-01, 1.979e-01, -1.145e-01, 8.089e-01, 1.208e-01, 6.427e-01, 4.596e-01), r);\n\tr = MulAdd(s6_5, M4(1.512e-01, 4.153e-02, -1.349e-02, -3.943e-01, 1.621e-01, 2.125e-01, 3.478e-01, -2.117e-01, -4.187e-01, -1.377e-01, -2.767e-01, -3.075e-01, -3.716e-01, 1.678e-02, -7.506e-02, -7.046e-02), r);\n\tr = MulAdd(s6_6, M4(-5.645e-04, 8.539e-02, 1.192e-02, 1.301e-01, -5.319e-02, 1.275e-02, -1.687e-01, 2.101e-01, 1.096e-01, -2.104e-04, -1.130e-01, -1.952e-03, 1.334e-02, -4.353e-02, -8.794e-02, 3.036e-02), r);\n\tr = MulAdd(s6_7, M4(2.405e-01, -1.602e-02, 1.442e-01, -2.301e-01, 5.157e-01, -2.357e-03, 1.410e-02, 2.979e-01, -4.966e-02, 1.288e-01, 7.233e-02, -1.980e-01, -1.339e-01, 9.085e-02, -2.666e-01, 5.901e-02), r);\n\tr = MulAdd(s6_8, M4(-1.635e-01, -1.742e-02, -7.872e-04, -3.437e-02, -5.201e-02, -7.742e-02, 1.519e-01, -3.565e-01, 1.847e-01, 7.361e-02, 2.874e-02, 5.474e-02, -1.476e-01, 1.268e-01, 1.097e-01, 1.250e-01), r);\n\tr = MulAdd(s7_0, M4(-2.977e-02, 1.180e-01, -1.144e-01, -2.712e-02, 2.344e-02, 3.005e-02, -5.376e-02, 2.245e-02, -1.964e-02, -3.806e-02, 5.948e-02, -3.850e-02, 8.518e-02, 2.359e-02, 3.988e-02, 3.925e-02), r);\n\tr = MulAdd(s7_1, M4(-7.016e-02, 5.264e-02, -1.546e-02, 1.149e-02, -7.637e-02, 5.961e-02, -1.217e-01, 8.794e-02, 4.621e-02, -2.797e-02, -8.991e-05, 1.274e-01, -3.130e-02, 9.594e-02, 9.378e-02, -2.204e-02), r);\n\tr = MulAdd(s7_2, M4(6.668e-02, 1.219e-02, 2.202e-02, 2.572e-02, 3.076e-02, 3.448e-02, -1.584e-02, 7.644e-03, -5.237e-02, 1.070e-02, 8.137e-03, 4.005e-02, -7.023e-02, -3.941e-03, -7.663e-02, 1.537e-02), r);\n\tr = MulAdd(s7_3, M4(8.858e-02, 5.080e-02, -2.043e-01, 6.574e-02, -5.817e-02, 9.694e-02, -1.094e-01, -1.146e-01, -4.703e-02, 7.113e-02, -2.575e-02, 5.163e-03, -4.438e-02, 2.622e-02, -2.860e-02, 1.962e-02), r);\n\tr = MulAdd(s7_4, M4(1.332e-01, -1.357e-01, 1.993e-01, 1.685e-01, 5.237e-02, 3.852e-02, -1.314e-01, 1.839e-01, 1.229e-02, 5.550e-03, -2.378e-02, -4.422e-02, 3.551e-02, -4.724e-02, -2.718e-02, -6.719e-02), r);\n\tr = MulAdd(s7_5, M4(-1.227e-01, -1.223e-02, 3.191e-02, -1.237e-01, -4.575e-02, 8.884e-02, 8.201e-02, -4.919e-02, 6.765e-02, -1.065e-02, -4.379e-02, 3.344e-02, 1.195e-02, 1.224e-02, -4.593e-02, 1.547e-02), r);\n\tr = MulAdd(s7_6, M4(-2.574e-02, 7.691e-03, -9.264e-02, 7.526e-02, -1.241e-02, 3.506e-02, 8.149e-03, -8.028e-02, 9.684e-02, -4.999e-03, 1.119e-01, -1.116e-01, -7.561e-03, 3.837e-02, 5.530e-02, -5.594e-02), r);\n\tr = MulAdd(s7_7, M4(-2.481e-02, 5.517e-02, -8.307e-02, -1.765e-02, 1.868e-02, 1.927e-02, 4.930e-02, 3.460e-02, 2.957e-02, 3.232e-02, -4.537e-02, -8.795e-02, -4.719e-02, 1.410e-02, -2.081e-02, -8.162e-02), r);\n\tr = MulAdd(s7_8, M4(7.341e-03, 6.469e-02, 2.905e-02, -1.249e-02, 7.263e-03, -2.017e-02, 8.103e-04, -4.192e-02, -3.527e-02, -8.213e-03, 2.403e-02, -6.824e-02, 6.086e-02, -2.941e-02, 3.362e-03, 1.645e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -4.202e-04, 6.301e-03, 6.510e-03, 1.881e-03 };\n\tr = MulAdd(s0_0, M4(1.035e-01, -3.131e-02, -1.683e-02, 6.132e-02, 7.106e-02, 8.530e-02, 3.712e-02, 2.200e-02, 5.484e-02, -2.405e-02, 3.609e-03, 2.484e-02, -1.239e-02, 3.143e-02, -1.143e-03, 5.853e-02), r);\n\tr = MulAdd(s0_1, M4(-6.852e-03, -5.276e-02, -1.574e-02, -7.396e-03, -5.895e-03, 2.645e-01, 6.641e-02, 8.550e-02, 8.407e-02, -5.343e-02, -2.788e-02, -2.786e-02, -5.168e-02, 4.419e-03, 8.365e-02, -2.581e-02), r);\n\tr = MulAdd(s0_2, M4(4.320e-03, 4.378e-02, 6.773e-02, 4.165e-02, 6.133e-04, 3.012e-02, -1.258e-02, 9.748e-02, -2.418e-02, 4.472e-02, 5.103e-02, 1.214e-02, 1.352e-02, -2.460e-02, -4.003e-03, -1.377e-02), r);\n\tr = MulAdd(s0_3, M4(2.667e-01, 9.762e-02, 5.992e-02, -3.087e-02, 3.817e-02, -3.431e-02, 2.540e-02, -1.875e-03, 9.802e-02, 6.589e-02, 5.863e-02, -1.504e-02, 9.547e-02, 9.985e-02, -3.192e-02, -4.271e-03), r);\n\tr = MulAdd(s0_4, M4(-1.698e-01, 2.632e-01, -5.454e-03, -7.862e-02, 1.375e-01, -3.125e-01, 9.081e-03, 9.557e-02, 8.478e-02, 2.898e-02, -1.091e-01, -8.330e-02, 6.596e-02, 2.710e-02, 1.680e-01, 1.788e-01), r);\n\tr = MulAdd(s0_5, M4(-9.017e-03, 6.888e-02, 6.141e-02, 1.776e-02, -1.655e-02, -6.601e-03, 3.162e-01, 1.655e-01, 8.691e-03, -6.128e-02, 3.331e-02, 9.702e-03, 1.413e-02, -7.276e-02, 5.032e-02, -1.593e-01), r);\n\tr = MulAdd(s0_6, M4(1.046e-01, -5.227e-02, 5.895e-02, -3.235e-02, 6.427e-02, 3.331e-02, 5.590e-02, 2.335e-02, -1.632e-02, -1.411e-01, 1.116e-01, 3.695e-02, -2.561e-02, -1.120e-02, 5.754e-02, -1.682e-03), r);\n\tr = MulAdd(s0_7, M4(8.318e-02, -7.579e-02, 8.523e-02, 1.695e-01, 1.272e-01, 3.044e-01, 9.789e-02, 2.895e-02, 8.045e-02, -1.118e-01, 1.189e-01, 4.772e-02, 3.643e-02, 1.177e-02, 9.985e-02, -5.121e-02), r);\n\tr = MulAdd(s0_8, M4(-5.202e-02, -6.098e-02, 1.816e-01, -1.054e-01, -1.061e-02, 7.545e-02, 1.807e-01, 1.109e-01, 2.225e-02, 4.505e-02, -1.468e-02, -1.591e-02, 4.481e-02, 8.765e-02, 7.746e-02, 1.284e-01), r);\n\tr = MulAdd(s1_0, M4(-2.938e-02, 5.927e-02, -1.109e-03, -6.546e-04, -4.689e-03, 5.730e-02, -1.717e-02, 1.489e-02, 4.013e-02, 1.947e-02, 2.004e-02, -3.337e-02, -7.947e-02, 1.191e-01, -3.596e-03, 1.463e-02), r);\n\tr = MulAdd(s1_1, M4(5.920e-02, 4.055e-02, -1.927e-02, 5.889e-02, -2.832e-02, 1.920e-02, 8.304e-03, -1.604e-02, 5.066e-02, 2.033e-02, -4.666e-02, 1.436e-01, -4.947e-02, 2.174e-01, -1.265e-03, -7.555e-03), r);\n\tr = MulAdd(s1_2, M4(-2.522e-02, 8.095e-03, -1.292e-02, -4.297e-02, -2.803e-03, 2.694e-03, 9.495e-03, 4.633e-03, -5.493e-03, 2.904e-02, -5.570e-02, -5.671e-02, 1.625e-02, 3.008e-03, -7.597e-02, 4.828e-02), r);\n\tr = MulAdd(s1_3, M4(-2.861e-02, -7.359e-02, -3.017e-02, -6.939e-03, -9.235e-02, -4.895e-02, 3.907e-02, -1.481e-02, -3.577e-02, -1.057e-01, -1.420e-02, -3.991e-02, -3.386e-02, 8.669e-02, 1.668e-02, -6.214e-03), r);\n\tr = MulAdd(s1_4, M4(4.040e-02, -2.914e-02, 4.031e-02, -1.132e-01, -2.109e-02, 3.115e-02, -1.246e-01, -2.000e-02, 1.326e-02, 1.058e-01, -8.576e-02, -1.588e-01, -4.464e-01, -2.079e-01, 2.685e-01, 1.333e-01), r);\n\tr = MulAdd(s1_5, M4(-2.591e-02, 3.814e-02, -3.386e-02, -9.743e-02, 4.114e-02, -3.478e-02, 6.425e-02, -3.640e-02, -8.821e-03, -3.544e-02, -5.167e-02, -2.047e-04, -2.015e-03, -1.694e-02, -1.662e-02, -3.549e-01), r);\n\tr = MulAdd(s1_6, M4(4.528e-02, -1.449e-01, 9.702e-03, 1.420e-03, -3.255e-02, -1.604e-02, -3.173e-02, 1.473e-02, -2.362e-03, -1.247e-01, 3.800e-02, -4.005e-03, -4.589e-02, -4.932e-03, -6.621e-02, -5.870e-03), r);\n\tr = MulAdd(s1_7, M4(2.555e-02, 4.944e-02, -1.997e-02, -3.789e-02, -6.467e-02, -7.647e-02, 2.485e-01, 2.307e-02, 9.054e-02, -1.921e-01, -1.510e-02, 1.256e-01, -6.435e-02, -3.311e-01, -1.668e-01, -8.547e-03), r);\n\tr = MulAdd(s1_8, M4(-5.899e-03, -9.739e-02, -9.003e-03, -1.285e-01, 3.565e-02, 5.708e-02, 5.470e-03, 6.773e-02, -3.124e-02, -1.481e-02, 6.026e-02, -6.631e-02, 5.404e-02, 2.347e-01, -7.943e-02, 5.130e-02), r);\n\tr = MulAdd(s2_0, M4(4.027e-02, 6.051e-02, -1.822e-02, 1.411e-01, -4.953e-02, -2.818e-02, 1.410e-02, 1.730e-02, -1.016e-01, -5.901e-02, -4.021e-02, -6.473e-02, 2.396e-02, -3.431e-02, 3.567e-02, -5.546e-02), r);\n\tr = MulAdd(s2_1, M4(-1.226e-01, 6.911e-02, 2.438e-02, 3.790e-01, 2.273e-02, -9.692e-02, -6.908e-02, -6.222e-02, -2.884e-02, 4.129e-02, 3.012e-02, -2.219e-02, -4.559e-02, 4.080e-02, -1.208e-02, -1.721e-01), r);\n\tr = MulAdd(s2_2, M4(1.698e-02, -5.581e-02, -1.028e-01, -2.648e-01, -2.852e-02, -4.793e-02, 3.531e-02, 4.713e-02, 6.749e-03, -2.892e-02, 1.004e-03, -8.385e-02, 3.496e-03, 7.913e-03, 3.682e-02, 4.875e-02), r);\n\tr = MulAdd(s2_3, M4(-8.191e-02, -2.076e-02, -3.883e-03, -6.020e-03, -4.486e-02, 1.603e-01, -5.054e-02, 1.925e-02, -1.880e-01, -1.032e-01, 9.008e-02, 1.290e-01, -1.580e-01, -1.112e-02, 2.247e-02, 4.732e-02), r);\n\tr = MulAdd(s2_4, M4(-1.828e-02, -1.797e-01, 1.553e-01, 1.716e-01, 1.113e-01, 2.362e-01, -2.680e-01, -3.383e-03, -1.252e-01, 6.608e-02, -2.373e-01, -7.700e-02, -2.883e-01, 9.044e-02, 4.293e-01, 9.977e-02), r);\n\tr = MulAdd(s2_5, M4(-8.041e-03, 2.502e-02, 6.603e-02, 1.422e-01, -5.744e-02, 2.975e-03, -3.393e-02, 2.418e-01, 3.547e-02, 1.473e-03, -5.479e-03, 2.087e-01, 9.054e-02, -5.279e-02, -2.166e-01, -3.318e-01), r);\n\tr = MulAdd(s2_6, M4(-5.745e-02, 5.943e-02, 3.035e-02, 9.155e-03, -2.198e-02, 1.365e-02, 4.023e-04, -9.323e-03, -5.497e-02, -1.600e-02, -3.127e-02, -2.707e-02, -4.076e-02, -6.445e-02, -1.111e-01, -2.571e-02), r);\n\tr = MulAdd(s2_7, M4(-3.950e-02, -7.730e-02, 1.813e-02, -4.415e-02, 5.548e-02, -9.475e-02, -8.720e-02, 5.763e-02, -8.685e-02, 2.206e-01, 2.090e-01, 2.510e-02, -3.670e-02, -2.902e-01, 3.033e-01, 4.140e-02), r);\n\tr = MulAdd(s2_8, M4(4.482e-02, 8.381e-02, 2.472e-01, 6.329e-02, 1.484e-02, -3.689e-02, -1.033e-01, -1.513e-01, -4.236e-03, -1.259e-02, -3.677e-02, -4.812e-02, 4.726e-02, -3.249e-02, -2.763e-02, -1.101e-01), r);\n\tr = MulAdd(s3_0, M4(-3.101e-02, 4.627e-02, 1.449e-02, -3.616e-03, -5.091e-02, 6.408e-02, 1.786e-02, -1.482e-02, -3.041e-02, 3.234e-02, -1.162e-02, -2.272e-02, 7.108e-03, -9.229e-03, 2.850e-02, 1.415e-02), r);\n\tr = MulAdd(s3_1, M4(-5.226e-02, 1.188e-01, 5.643e-02, 6.820e-02, 6.848e-03, 8.559e-02, 4.529e-02, 9.235e-02, -2.974e-03, -2.439e-02, 1.520e-02, 9.824e-03, -5.821e-02, 2.097e-02, 8.484e-03, 5.340e-03), r);\n\tr = MulAdd(s3_2, M4(1.145e-02, -3.415e-02, -3.814e-02, -1.144e-01, 2.474e-03, 2.845e-02, 5.365e-02, 2.777e-02, -7.355e-03, 4.104e-03, -4.118e-02, -3.890e-02, 1.295e-02, -1.091e-02, 1.410e-02, -5.293e-02), r);\n\tr = MulAdd(s3_3, M4(-5.924e-02, -2.347e-03, 4.579e-02, 3.097e-02, -8.237e-03, -3.171e-02, 1.003e-01, -3.099e-02, 8.427e-02, -1.607e-01, -2.136e-02, 5.186e-02, 5.234e-02, 8.716e-02, -2.204e-02, -8.407e-03), r);\n\tr = MulAdd(s3_4, M4(-3.137e-02, -6.165e-02, -4.790e-02, -2.918e-03, -5.244e-02, -7.952e-02, -2.419e-01, -9.282e-02, 1.111e-01, 1.613e-02, -6.698e-02, -9.656e-02, -6.602e-03, 1.187e-01, 9.135e-02, 1.027e-01), r);\n\tr = MulAdd(s3_5, M4(1.183e-02, 4.164e-02, -1.076e-02, -1.707e-02, 1.665e-02, -1.242e-02, 6.418e-02, 1.193e-02, -7.299e-02, 1.017e-01, 1.254e-01, 1.039e-01, -2.898e-02, -1.810e-02, 2.075e-02, -3.683e-03), r);\n\tr = MulAdd(s3_6, M4(-2.723e-02, -6.785e-02, -6.557e-02, -1.114e-02, 7.214e-02, 1.238e-02, 1.335e-03, 2.707e-02, 5.311e-02, 5.707e-02, -1.330e-02, 9.797e-03, -5.754e-02, -1.093e-02, 8.026e-02, -9.979e-03), r);\n\tr = MulAdd(s3_7, M4(-2.533e-03, -1.139e-01, 2.439e-02, -1.492e-02, -6.427e-02, 3.910e-03, 3.283e-02, 5.846e-02, 4.403e-02, -2.133e-03, 3.179e-02, 1.806e-03, 1.629e-02, -6.802e-02, 9.503e-03, -2.512e-02), r);\n\tr = MulAdd(s3_8, M4(2.353e-02, -2.638e-02, 4.675e-02, 2.404e-02, 4.130e-02, 1.884e-02, 1.145e-01, 3.410e-02, -3.601e-02, -9.180e-02, -7.135e-02, -9.899e-02, -9.522e-03, 3.465e-02, 4.162e-02, 7.758e-03), r);\n\tr = MulAdd(s4_0, M4(-1.596e-01, 7.351e-04, -5.917e-02, 9.830e-02, -2.920e-02, -2.196e-02, -2.547e-02, -6.508e-03, -5.261e-03, 2.840e-02, 2.271e-02, 4.707e-03, 3.022e-01, 7.367e-02, 9.815e-02, -4.388e-02), r);\n\tr = MulAdd(s4_1, M4(-5.155e-03, 2.948e-02, 1.522e-02, -2.238e-02, 1.755e-02, -2.385e-02, -1.528e-02, -7.690e-02, 2.317e-02, 9.707e-02, 3.772e-02, 4.510e-02, 7.763e-02, -1.526e-01, -3.017e-02, 2.790e-01), r);\n\tr = MulAdd(s4_2, M4(8.279e-03, -8.619e-02, 4.243e-02, 3.116e-02, -3.015e-02, -1.552e-02, 1.076e-02, -3.931e-02, 1.595e-02, 4.532e-02, -7.481e-03, 4.177e-02, 3.674e-02, 1.605e-03, 5.683e-02, 8.314e-02), r);\n\tr = MulAdd(s4_3, M4(1.502e-01, 4.229e-01, 1.655e-01, -8.824e-02, 1.440e-02, 1.396e-02, 1.824e-02, 5.334e-02, -4.940e-02, 3.722e-02, 1.545e-02, -5.093e-02, 8.613e-02, 1.342e-01, -8.895e-03, -5.035e-02), r);\n\tr = MulAdd(s4_4, M4(2.528e-01, -9.416e-03, 1.601e-01, 4.679e-01, 3.810e-02, 7.959e-03, -1.754e-03, 1.858e-02, -4.325e-02, -1.131e-01, -4.183e-02, -1.017e-01, -4.375e-02, 3.145e-02, -1.272e-01, 8.395e-02), r);\n\tr = MulAdd(s4_5, M4(-2.072e-01, 1.731e-01, 2.855e-01, 2.574e-01, -4.553e-02, 8.366e-02, 6.631e-02, -5.029e-02, 3.748e-02, 2.669e-03, 1.499e-03, -1.058e-01, 2.305e-02, -1.007e-02, 5.451e-02, 3.447e-02), r);\n\tr = MulAdd(s4_6, M4(-1.253e-02, -1.557e-02, 2.680e-01, -4.947e-02, 9.106e-03, -4.863e-02, 3.862e-02, 2.887e-03, 5.714e-02, 1.407e-02, -5.319e-04, 3.290e-02, 9.566e-02, 1.003e-01, 2.218e-02, -2.021e-02), r);\n\tr = MulAdd(s4_7, M4(-1.862e-01, 7.949e-01, -4.100e-02, -1.616e-01, 1.377e-02, -7.986e-02, 3.415e-04, 4.065e-04, -2.645e-02, -1.855e-01, 1.605e-02, 4.846e-02, -6.506e-03, 5.088e-03, 4.173e-02, 2.327e-02), r);\n\tr = MulAdd(s4_8, M4(-1.919e-01, -9.826e-03, 2.859e-01, 3.247e-02, 1.377e-02, -1.271e-01, 5.140e-02, -1.924e-02, 3.601e-02, 7.237e-02, 3.313e-02, 1.073e-01, 2.213e-02, 1.931e-02, -3.036e-02, -1.857e-02), r);\n\tr = MulAdd(s5_0, M4(2.811e-02, -3.688e-02, -1.893e-02, -1.153e-02, 4.608e-02, 7.400e-04, 9.096e-05, 8.831e-03, 4.843e-02, -3.175e-02, 2.007e-03, 3.164e-03, -2.815e-02, -3.291e-02, 6.942e-03, -7.922e-03), r);\n\tr = MulAdd(s5_1, M4(-6.265e-02, -3.621e-02, -1.263e-02, 1.924e-02, 5.043e-02, -8.130e-02, -2.655e-02, -3.845e-02, -2.888e-02, -3.681e-02, -3.308e-02, -6.232e-02, 9.469e-03, -1.419e-01, -6.398e-02, 2.439e-03), r);\n\tr = MulAdd(s5_2, M4(7.006e-03, -8.489e-03, 1.088e-02, -1.893e-02, -1.850e-02, 1.441e-02, 8.278e-03, 1.588e-02, -1.311e-02, 2.058e-02, 1.626e-02, 2.249e-02, 1.278e-02, -1.710e-02, -1.824e-02, -4.346e-02), r);\n\tr = MulAdd(s5_3, M4(-1.600e-02, 4.441e-02, -2.673e-02, 5.737e-02, 1.657e-02, -7.720e-02, -2.863e-02, 3.338e-02, -6.272e-02, -4.107e-02, -3.531e-02, -6.193e-02, -2.302e-01, -8.016e-02, -1.737e-02, -7.314e-02), r);\n\tr = MulAdd(s5_4, M4(-5.253e-02, 6.372e-02, 1.257e-01, 2.593e-02, 1.450e-02, -3.240e-02, 2.255e-02, -5.535e-02, 1.490e-01, -6.299e-02, -9.303e-02, 5.202e-02, -6.767e-04, -6.085e-02, -8.085e-02, -4.924e-02), r);\n\tr = MulAdd(s5_5, M4(2.291e-02, 1.323e-02, 8.572e-02, -3.387e-02, -3.431e-04, 1.920e-02, 6.956e-03, -9.327e-02, -6.671e-02, -6.480e-02, 1.405e-02, 1.114e-01, -6.012e-03, -1.361e-01, -3.791e-02, 4.829e-02), r);\n\tr = MulAdd(s5_6, M4(8.799e-03, 3.142e-02, 8.483e-03, -3.836e-02, 1.978e-01, -1.646e-02, 2.252e-02, -6.048e-02, 4.975e-02, 1.991e-02, 3.369e-02, -2.007e-02, -2.957e-02, -2.680e-03, -2.970e-02, -4.281e-03), r);\n\tr = MulAdd(s5_7, M4(-2.848e-02, 3.081e-02, -8.394e-02, -4.064e-03, 2.752e-02, 3.067e-01, -1.155e-01, 9.175e-02, -2.368e-02, -1.767e-01, 7.387e-02, -4.105e-03, -1.972e-02, 2.154e-02, -3.299e-02, 3.965e-02), r);\n\tr = MulAdd(s5_8, M4(2.673e-04, 2.480e-02, -3.968e-02, 2.957e-02, -1.786e-02, -1.226e-01, -9.062e-02, 4.356e-02, 1.271e-02, 4.314e-02, -1.928e-01, -1.119e-01, 1.780e-02, 4.065e-03, 8.221e-03, -3.530e-02), r);\n\tr = MulAdd(s6_0, M4(2.098e-02, -1.053e-02, 7.348e-03, -2.663e-02, -3.212e-02, 3.080e-02, -4.537e-03, -2.740e-02, 3.162e-02, -2.540e-03, -8.751e-03, -1.148e-02, -4.170e-03, -2.416e-02, -3.985e-03, 5.122e-03), r);\n\tr = MulAdd(s6_1, M4(4.269e-02, -1.696e-02, -1.119e-02, 5.508e-02, 5.475e-02, 3.714e-02, -4.380e-02, 1.362e-02, 4.667e-02, -2.880e-02, -1.132e-02, -3.636e-02, -3.802e-02, -3.298e-03, 4.957e-02, -4.383e-02), r);\n\tr = MulAdd(s6_2, M4(-2.587e-02, 1.347e-02, -8.682e-03, -7.210e-02, -4.046e-02, 1.120e-02, -4.019e-02, -3.884e-02, 6.137e-02, -7.922e-02, -7.046e-03, 1.565e-01, 1.043e-03, 9.036e-03, 1.292e-02, 8.501e-03), r);\n\tr = MulAdd(s6_3, M4(5.580e-02, -2.963e-03, 1.947e-03, -2.473e-03, 1.265e-01, -1.265e-01, 3.623e-02, -7.397e-02, 3.229e-02, 4.138e-02, 4.128e-02, -1.169e-02, 2.586e-02, 2.790e-02, 4.328e-02, -3.918e-02), r);\n\tr = MulAdd(s6_4, M4(6.678e-02, 1.508e-01, -3.867e-02, 5.655e-02, 4.361e-01, -1.392e-01, -3.821e-02, 1.118e-01, -2.316e-01, 1.216e-02, 1.708e-01, -6.198e-02, -2.788e-02, 2.630e-02, -7.593e-02, 4.442e-02), r);\n\tr = MulAdd(s6_5, M4(-2.494e-02, 7.203e-02, 9.884e-02, 4.679e-02, -1.412e-01, 1.266e-01, 1.616e-01, 5.192e-01, 7.496e-02, -6.297e-02, -7.291e-02, -2.761e-03, 2.747e-03, 2.842e-02, -1.438e-02, 8.791e-02), r);\n\tr = MulAdd(s6_6, M4(-6.034e-03, -1.988e-02, 9.423e-03, -8.018e-03, 5.482e-02, 4.266e-02, 2.008e-02, 2.532e-02, 4.935e-02, -4.054e-02, -1.212e-02, -2.818e-03, -1.251e-02, -7.254e-02, 5.047e-02, -1.091e-02), r);\n\tr = MulAdd(s6_7, M4(-4.368e-03, -2.020e-02, 1.459e-02, -2.116e-02, 1.027e-02, 3.926e-01, 3.189e-01, -3.561e-02, -5.842e-02, 5.650e-02, -1.034e-01, -3.434e-02, -7.243e-02, -1.526e-02, 5.262e-03, -1.506e-02), r);\n\tr = MulAdd(s6_8, M4(-4.331e-02, -1.012e-02, -5.957e-02, 2.021e-02, -2.783e-02, -4.619e-02, -1.793e-01, -1.121e-01, 5.735e-02, 3.291e-02, 1.028e-02, 3.021e-02, 1.916e-02, -5.925e-02, 9.729e-02, -3.139e-02), r);\n\tr = MulAdd(s7_0, M4(8.811e-02, -3.230e-02, -2.340e-02, 1.007e-02, 2.262e-02, 1.299e-02, 1.861e-02, 3.002e-03, -4.389e-02, 2.304e-02, 1.989e-02, 4.361e-02, 1.100e-02, 2.912e-02, -6.940e-04, -3.995e-03), r);\n\tr = MulAdd(s7_1, M4(-2.878e-02, -1.447e-02, -8.574e-02, 8.482e-02, 7.547e-02, -5.559e-02, -2.542e-02, -1.200e-02, -9.488e-02, 2.377e-02, 7.290e-02, -1.909e-01, 4.442e-02, -6.422e-02, -1.878e-02, 2.297e-02), r);\n\tr = MulAdd(s7_2, M4(-1.161e-02, 3.624e-02, 2.303e-02, 4.236e-02, -4.980e-02, 1.092e-02, 2.231e-02, -3.462e-02, 2.148e-02, -7.254e-02, -9.069e-02, 5.621e-02, 2.326e-02, 2.044e-02, 1.256e-03, -3.556e-02), r);\n\tr = MulAdd(s7_3, M4(1.694e-01, -6.393e-04, 2.174e-02, 5.228e-02, -7.491e-02, 3.133e-02, 7.240e-02, -1.048e-02, 1.087e-01, -9.066e-02, 1.845e-02, 1.804e-03, -5.398e-03, -6.133e-02, 4.277e-02, -2.896e-02), r);\n\tr = MulAdd(s7_4, M4(4.209e-02, 1.779e-01, -1.103e-02, 8.013e-03, 2.688e-01, -3.924e-02, 2.387e-02, 1.478e-02, -3.389e-01, 5.841e-02, -6.463e-02, 1.170e-01, -2.725e-01, 1.440e-01, -1.064e-02, -5.789e-02), r);\n\tr = MulAdd(s7_5, M4(5.661e-02, -1.287e-02, -1.040e-01, 2.762e-01, -8.414e-02, -2.199e-02, 7.695e-02, 1.284e-01, 2.643e-02, -1.841e-02, -3.880e-03, -2.730e-01, 3.362e-02, 1.292e-03, -6.430e-02, 1.298e-01), r);\n\tr = MulAdd(s7_6, M4(5.765e-02, 1.471e-01, -6.371e-02, 6.783e-03, -2.742e-02, -9.306e-02, 4.691e-02, 2.644e-02, 4.329e-02, -1.373e-01, 3.846e-02, -4.862e-03, 8.690e-03, 1.078e-02, -4.893e-02, 2.456e-02), r);\n\tr = MulAdd(s7_7, M4(-1.123e-02, -3.080e-02, 1.587e-01, 7.075e-02, 4.285e-02, 1.250e-01, 4.928e-02, -4.179e-02, -1.304e-01, -2.597e-01, -1.338e-01, -7.231e-02, -3.581e-03, -2.680e-02, 1.008e-01, -1.061e-02), r);\n\tr = MulAdd(s7_8, M4(-1.404e-02, -6.516e-02, -1.755e-02, -1.282e-01, 4.673e-03, 5.937e-03, -4.064e-02, 2.759e-02, 2.023e-02, -7.021e-02, -1.563e-02, 2.361e-02, 1.991e-02, -1.549e-01, 1.831e-01, 2.950e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.115e-03, 4.044e-03, 5.828e-03, 3.265e-03 };\n\tr = MulAdd(s0_0, M4(1.076e-01, 9.459e-02, 5.018e-02, 6.361e-02, -1.552e-03, -1.362e-02, -5.013e-03, 2.647e-02, 4.040e-02, -2.398e-02, 3.036e-02, 6.250e-02, 6.878e-02, 1.299e-02, 2.376e-03, -5.089e-02), r);\n\tr = MulAdd(s0_1, M4(-3.186e-02, -1.003e-01, 8.043e-03, -1.930e-02, 9.658e-02, 1.229e-01, 1.399e-02, 4.080e-02, -6.420e-02, 2.529e-02, 6.975e-02, 9.162e-02, -1.342e-01, -7.190e-03, 6.387e-02, -3.481e-02), r);\n\tr = MulAdd(s0_2, M4(1.963e-02, 3.109e-02, -7.229e-02, 4.592e-03, -1.123e-01, 2.408e-02, -3.028e-02, 3.707e-02, 8.276e-02, 3.451e-02, -9.454e-03, -3.834e-02, 1.974e-02, -2.533e-02, 5.984e-03, 8.251e-02), r);\n\tr = MulAdd(s0_3, M4(-1.385e-01, 1.865e-01, 7.740e-02, 1.387e-01, 4.463e-02, 1.012e-01, 7.993e-02, 2.930e-02, -5.065e-02, 6.022e-03, -8.449e-02, 9.553e-02, 7.640e-02, 6.897e-02, -7.650e-02, 6.023e-02), r);\n\tr = MulAdd(s0_4, M4(7.506e-02, 4.216e-01, 1.997e-01, -6.951e-02, 4.671e-01, -1.686e-01, 2.571e-01, -2.584e-01, 1.607e-01, 3.681e-02, 4.867e-03, -3.146e-01, 1.337e-01, 1.016e-01, 4.053e-01, 8.276e-02), r);\n\tr = MulAdd(s0_5, M4(2.423e-02, 1.422e-01, -1.150e-03, -3.969e-03, 5.352e-02, -4.009e-03, -3.000e-02, 1.944e-02, -8.228e-02, 1.139e-01, 1.020e-01, 1.204e-01, -7.730e-02, -9.062e-02, 6.823e-02, -6.768e-02), r);\n\tr = MulAdd(s0_6, M4(-2.356e-02, -1.025e-01, 9.710e-02, -3.185e-02, 5.413e-02, 9.684e-02, 1.312e-01, 1.200e-01, 3.235e-02, -5.876e-02, 1.181e-01, -2.789e-02, -1.420e-02, -1.891e-02, -4.461e-02, -4.793e-03), r);\n\tr = MulAdd(s0_7, M4(1.376e-01, -1.486e-01, 1.329e-01, 2.389e-01, 5.239e-02, 1.317e-01, 2.417e-01, -2.170e-02, 9.953e-03, -9.714e-02, 1.253e-01, 1.715e-01, -2.740e-02, -3.472e-02, -2.705e-02, 4.845e-02), r);\n\tr = MulAdd(s0_8, M4(-1.929e-01, -1.534e-01, -1.140e-01, 6.699e-02, 1.044e-01, 6.899e-02, 2.676e-02, 1.343e-01, 1.196e-02, -4.285e-02, 2.777e-02, -1.889e-02, 1.189e-01, 1.513e-03, 7.006e-02, -4.608e-02), r);\n\tr = MulAdd(s1_0, M4(4.727e-02, 4.907e-02, -4.865e-02, 4.088e-02, 7.322e-02, 4.079e-02, -1.010e-02, 1.619e-02, -4.750e-03, 5.155e-02, 2.044e-02, 6.424e-02, 5.315e-02, 2.716e-02, -4.774e-02, -1.353e-02), r);\n\tr = MulAdd(s1_1, M4(7.921e-02, 7.939e-02, 5.319e-02, -5.682e-02, -6.991e-02, 1.192e-01, 6.963e-02, -4.258e-02, 1.701e-01, 6.614e-02, -8.819e-02, -8.870e-03, -5.026e-02, 1.030e-01, 1.329e-02, -1.035e-01), r);\n\tr = MulAdd(s1_2, M4(-3.164e-02, -3.713e-02, -2.748e-02, -7.602e-03, 6.976e-02, 2.410e-02, -3.311e-02, -1.760e-02, -8.627e-02, 4.056e-02, 1.148e-01, -1.721e-02, 6.658e-03, -5.652e-02, -1.008e-01, 6.403e-02), r);\n\tr = MulAdd(s1_3, M4(-2.600e-02, -9.065e-02, -1.888e-02, 5.124e-02, -1.238e-01, -1.830e-01, -2.969e-02, 5.243e-02, -1.284e-01, -7.646e-02, 4.992e-02, 2.685e-03, 3.629e-02, 4.630e-02, -1.430e-01, 3.552e-02), r);\n\tr = MulAdd(s1_4, M4(-2.979e-01, 3.411e-02, 1.029e-01, 3.688e-02, 1.793e-01, -2.283e-01, 1.243e-01, 2.995e-02, -2.282e-01, -1.471e-01, -4.377e-01, 8.713e-02, 8.873e-02, 4.323e-02, -1.517e-01, 1.898e-01), r);\n\tr = MulAdd(s1_5, M4(-1.356e-02, -4.639e-02, -5.458e-03, -1.772e-02, -7.631e-02, -1.901e-02, 7.485e-02, 1.410e-03, 9.795e-02, 8.527e-03, 5.029e-02, -4.242e-02, -8.664e-02, -2.813e-02, -1.742e-01, 1.645e-01), r);\n\tr = MulAdd(s1_6, M4(-2.665e-02, -1.223e-01, 8.783e-02, -6.537e-03, 2.250e-03, -7.386e-03, 3.235e-04, 8.568e-02, 9.910e-02, -9.138e-02, 4.718e-03, -6.234e-02, -6.278e-03, 6.142e-03, -4.212e-02, 2.019e-02), r);\n\tr = MulAdd(s1_7, M4(-2.058e-01, -1.362e-01, -5.059e-03, 2.211e-02, 1.474e-02, -5.797e-03, 1.787e-02, -4.932e-02, 5.892e-02, -1.100e-02, 2.070e-01, 6.475e-02, -8.533e-02, -1.685e-01, -1.017e-01, 2.089e-02), r);\n\tr = MulAdd(s1_8, M4(-1.094e-01, -3.021e-02, -4.875e-02, 4.281e-02, 6.425e-02, 3.246e-02, 5.784e-02, -1.173e-01, -9.465e-02, -8.862e-02, -5.373e-02, 3.057e-02, 8.867e-02, -5.970e-02, 4.623e-02, 8.439e-02), r);\n\tr = MulAdd(s2_0, M4(1.587e-01, -1.166e-01, 7.347e-02, 5.028e-02, -2.301e-02, -1.425e-02, -4.434e-02, -3.650e-02, -5.876e-02, 5.358e-03, -6.112e-02, -3.876e-02, -9.871e-02, -9.629e-02, 2.887e-02, -5.464e-02), r);\n\tr = MulAdd(s2_1, M4(2.192e-01, -8.572e-02, -1.725e-01, -2.315e-01, -4.065e-02, -1.574e-02, -4.730e-02, 4.133e-02, -1.877e-03, -1.450e-02, -4.131e-02, 5.251e-02, -7.241e-02, -2.118e-01, -1.658e-01, -1.554e-02), r);\n\tr = MulAdd(s2_2, M4(-2.951e-02, -6.779e-02, 3.084e-02, -2.750e-01, -1.586e-02, -4.853e-02, 1.521e-02, 1.087e-02, -3.765e-02, 8.129e-03, 4.653e-02, -2.222e-02, 7.725e-03, -7.037e-04, -2.007e-02, -8.173e-03), r);\n\tr = MulAdd(s2_3, M4(1.025e-01, 2.878e-01, 4.804e-02, 1.290e-01, -4.854e-02, 3.440e-02, -5.406e-02, 4.039e-02, 4.142e-02, -1.714e-01, 1.287e-02, -4.413e-02, 9.058e-03, -1.193e-01, 9.933e-02, -1.257e-02), r);\n\tr = MulAdd(s2_4, M4(-6.006e-02, 1.470e-01, -1.725e-01, 8.381e-02, 1.430e-01, -2.764e-01, 2.258e-01, -3.232e-02, -5.532e-02, -3.717e-02, -4.678e-01, 2.989e-01, 2.234e-02, 3.625e-03, -4.473e-01, -1.063e-03), r);\n\tr = MulAdd(s2_5, M4(5.328e-02, 9.418e-03, 4.552e-02, -9.636e-02, 1.165e-01, -5.062e-02, -3.916e-02, 1.290e-01, 6.573e-02, 8.872e-03, 3.454e-02, -7.966e-02, -5.075e-02, -2.213e-02, 1.388e-01, 1.829e-01), r);\n\tr = MulAdd(s2_6, M4(3.882e-02, 2.023e-02, 2.501e-02, 9.446e-02, -2.924e-03, -4.121e-02, -8.625e-02, 4.996e-03, -3.805e-02, 3.746e-02, 1.038e-01, 3.066e-04, 1.063e-03, 6.865e-02, -6.979e-02, 3.771e-02), r);\n\tr = MulAdd(s2_7, M4(5.676e-03, 2.452e-02, -8.635e-02, -7.576e-02, -1.391e-01, 1.490e-01, 2.582e-02, -2.445e-01, -1.249e-01, -2.115e-02, -1.512e-01, 3.049e-01, -6.295e-02, -6.138e-02, -2.572e-01, -3.793e-01), r);\n\tr = MulAdd(s2_8, M4(-1.268e-03, 2.520e-02, -3.155e-02, -9.465e-02, 3.650e-02, 1.035e-02, 3.947e-02, 1.959e-01, -7.596e-02, -2.304e-02, 5.939e-03, -4.067e-02, -7.969e-02, -6.106e-02, 3.986e-02, -4.797e-02), r);\n\tr = MulAdd(s3_0, M4(3.360e-02, 9.741e-02, -3.713e-02, 2.114e-02, 7.099e-04, 7.903e-02, -3.197e-02, 1.065e-02, -2.551e-02, -1.802e-02, -2.769e-02, -1.930e-02, 1.047e-02, 3.540e-02, 1.322e-02, -1.556e-04), r);\n\tr = MulAdd(s3_1, M4(4.761e-02, 1.757e-01, 4.040e-02, -7.825e-02, 7.368e-02, 1.965e-01, 1.090e-02, 3.098e-02, 1.595e-02, 1.373e-02, 1.417e-02, -7.205e-02, -1.419e-02, 4.930e-02, 8.902e-02, 3.248e-04), r);\n\tr = MulAdd(s3_2, M4(-7.793e-02, -5.996e-04, -2.884e-02, 7.126e-02, 4.825e-02, 5.384e-02, 1.636e-02, -2.258e-02, -4.520e-02, -5.878e-02, -4.555e-02, 6.671e-02, -2.214e-02, -1.812e-02, -3.157e-02, 1.006e-02), r);\n\tr = MulAdd(s3_3, M4(4.366e-02, 5.893e-03, -4.569e-02, 8.509e-03, -2.388e-02, -4.327e-02, 8.083e-03, -2.875e-02, 6.482e-03, -2.898e-02, 1.219e-01, 3.075e-02, 4.515e-02, 1.265e-02, -1.177e-02, 1.695e-02), r);\n\tr = MulAdd(s3_4, M4(-4.587e-02, -4.540e-02, -4.528e-02, -3.017e-02, -9.578e-02, -1.165e-01, 6.568e-03, 7.609e-02, -5.974e-02, -1.383e-01, 6.412e-03, -1.829e-02, -3.406e-02, -8.001e-02, -5.122e-02, 1.077e-01), r);\n\tr = MulAdd(s3_5, M4(3.416e-02, -3.407e-02, 8.393e-02, -1.160e-01, -9.369e-03, 3.058e-02, 4.454e-02, -9.247e-02, 9.737e-02, -6.020e-02, -1.013e-01, -2.782e-02, 8.023e-02, -7.069e-02, -1.847e-03, -5.169e-02), r);\n\tr = MulAdd(s3_6, M4(7.537e-03, -6.927e-02, -8.231e-02, 7.270e-02, 4.258e-02, -4.721e-02, 3.532e-02, 2.222e-02, -3.422e-02, 4.518e-02, 9.489e-02, 5.504e-02, 7.420e-03, -1.408e-02, -7.131e-02, -3.159e-02), r);\n\tr = MulAdd(s3_7, M4(-6.396e-03, -1.854e-02, 8.382e-02, -6.459e-02, 5.731e-02, -9.457e-02, -2.301e-02, -4.219e-02, -3.609e-02, 7.196e-02, 9.962e-02, -1.094e-01, 2.650e-02, 6.392e-03, 1.478e-02, 9.639e-02), r);\n\tr = MulAdd(s3_8, M4(4.995e-02, -1.478e-02, -2.014e-02, -2.019e-02, 7.100e-02, -6.871e-04, 5.266e-02, -1.085e-01, -7.515e-02, 2.356e-02, -4.473e-02, 2.427e-01, -5.491e-03, 2.872e-02, 3.165e-02, 5.489e-02), r);\n\tr = MulAdd(s4_0, M4(-3.458e-02, -1.959e-01, -1.213e-01, -2.589e-01, -3.968e-02, -5.974e-02, -1.907e-02, -7.278e-03, 1.537e-02, 4.771e-02, 2.328e-02, 2.913e-02, 1.330e-01, -4.545e-02, 5.589e-03, 1.417e-02), r);\n\tr = MulAdd(s4_1, M4(3.301e-01, 1.127e-01, -2.534e-02, -3.332e-02, -4.439e-02, -8.422e-02, -6.904e-02, -2.112e-02, 5.374e-02, 1.986e-01, -4.109e-02, 3.611e-02, 3.623e-01, 1.059e-02, 3.093e-01, 3.962e-02), r);\n\tr = MulAdd(s4_2, M4(-1.211e-01, -9.423e-02, 9.185e-02, -3.221e-02, -6.293e-02, -6.185e-02, -2.286e-03, 5.499e-03, 9.204e-02, 9.981e-02, 7.664e-02, -2.940e-02, 6.183e-02, 3.852e-02, -5.530e-02, 4.065e-02), r);\n\tr = MulAdd(s4_3, M4(1.963e-03, 1.767e-01, -2.015e-01, -7.453e-02, 3.252e-02, 1.308e-02, 8.874e-02, 5.307e-02, -8.716e-02, -6.464e-02, 1.080e-02, -2.419e-02, 9.475e-02, 2.395e-01, 8.134e-02, -4.515e-02), r);\n\tr = MulAdd(s4_4, M4(-1.869e-02, 4.839e-02, 5.578e-01, -2.113e-01, -1.419e-01, -1.454e-04, -5.902e-02, -1.506e-02, -2.261e-01, -3.061e-01, -2.529e-01, 4.105e-02, 1.003e-01, 1.875e-01, 2.203e-01, 7.133e-02), r);\n\tr = MulAdd(s4_5, M4(5.376e-01, -4.584e-02, 4.556e-02, -4.455e-01, 5.528e-02, -1.674e-02, -8.416e-02, 3.166e-02, -1.333e-01, 2.677e-02, 1.385e-01, 7.247e-02, -3.433e-02, 6.367e-02, 7.385e-03, -4.556e-02), r);\n\tr = MulAdd(s4_6, M4(-1.279e-02, -9.193e-02, 1.330e-01, -3.062e-01, -1.544e-02, -2.016e-02, 6.331e-02, -3.779e-02, 6.792e-02, -9.991e-03, 5.801e-02, 4.266e-03, -3.719e-02, -3.649e-02, 5.247e-02, 8.472e-02), r);\n\tr = MulAdd(s4_7, M4(4.007e-01, 4.785e-02, 1.757e-01, -2.749e-01, -1.780e-02, -9.400e-02, -1.440e-01, -1.256e-03, 1.011e-01, -1.379e-01, -6.547e-02, 2.229e-02, -2.131e-02, -7.870e-02, -1.186e-02, -6.191e-02), r);\n\tr = MulAdd(s4_8, M4(-2.379e-01, 2.552e-02, -3.286e-01, 9.823e-01, -8.046e-03, 5.090e-03, 1.685e-02, 1.315e-01, 4.574e-02, 6.229e-02, 8.783e-02, -1.363e-01, -4.713e-03, -1.715e-02, 2.698e-02, 9.398e-03), r);\n\tr = MulAdd(s5_0, M4(-1.468e-02, -2.028e-02, 1.466e-02, -4.579e-02, 1.535e-02, 3.095e-03, 8.097e-02, 3.445e-02, -4.863e-02, -1.563e-02, 2.629e-02, -3.146e-02, 1.701e-02, -4.191e-03, -3.601e-02, -1.665e-02), r);\n\tr = MulAdd(s5_1, M4(-3.403e-02, -9.204e-02, -5.272e-02, -8.214e-03, 4.176e-02, -4.487e-02, 3.617e-02, -2.815e-02, -1.425e-01, -3.422e-02, -5.875e-02, 3.796e-02, -6.358e-02, -2.590e-01, -9.751e-03, -2.323e-02), r);\n\tr = MulAdd(s5_2, M4(3.660e-03, -1.702e-02, -9.442e-04, 2.394e-02, -2.582e-02, -2.589e-02, -5.776e-02, -1.213e-02, 7.397e-02, 2.383e-02, 2.967e-02, -3.611e-02, -4.360e-02, -4.814e-02, 6.573e-02, 2.316e-02), r);\n\tr = MulAdd(s5_3, M4(1.052e-01, 6.102e-02, -1.410e-03, -2.740e-02, 2.966e-02, 1.002e-03, 1.699e-01, 3.489e-02, -4.189e-02, -7.594e-02, -9.216e-02, -4.146e-02, -5.124e-02, -8.469e-02, -1.911e-01, -3.356e-02), r);\n\tr = MulAdd(s5_4, M4(1.532e-02, 1.675e-01, -6.142e-02, 5.359e-03, -3.161e-01, -1.008e-02, -6.061e-02, -6.506e-02, 1.185e-01, -1.872e-01, -1.266e-01, 2.179e-02, -1.714e-02, 5.675e-02, -1.877e-02, -2.057e-02), r);\n\tr = MulAdd(s5_5, M4(3.497e-02, 9.410e-02, -4.845e-02, -1.955e-02, -9.722e-02, -9.591e-03, -9.701e-03, 6.356e-02, -8.054e-03, 4.357e-02, -8.791e-02, 8.673e-02, -2.616e-03, -1.464e-02, 3.709e-02, -4.116e-02), r);\n\tr = MulAdd(s5_6, M4(-8.170e-02, 1.745e-02, 4.576e-03, -1.441e-02, -1.709e-02, -5.536e-02, 2.046e-01, 4.309e-02, 3.489e-02, 3.760e-02, -1.835e-02, -2.928e-02, 3.855e-02, -2.936e-02, -5.064e-04, 4.572e-03), r);\n\tr = MulAdd(s5_7, M4(-1.266e-02, -2.220e-02, -4.455e-02, 1.910e-02, 2.502e-01, 1.983e-01, -2.494e-02, -8.154e-02, -1.582e-01, -1.609e-02, 2.153e-02, -5.182e-02, -4.083e-03, -1.843e-02, -7.066e-02, -1.014e-01), r);\n\tr = MulAdd(s5_8, M4(9.087e-03, 1.330e-03, -3.767e-04, -4.360e-02, 3.942e-02, -4.327e-02, 7.721e-02, 6.839e-02, -3.861e-02, 3.624e-02, 1.080e-02, 1.728e-01, -3.517e-02, 1.390e-02, 2.920e-02, 2.377e-02), r);\n\tr = MulAdd(s6_0, M4(-1.396e-02, 4.944e-02, -1.320e-02, 1.199e-02, -3.217e-02, -3.029e-02, -9.161e-02, 1.708e-04, -7.892e-03, -4.578e-02, 9.429e-03, -3.443e-02, -2.402e-02, -2.350e-02, -6.804e-02, 1.150e-02), r);\n\tr = MulAdd(s6_1, M4(-8.674e-03, 5.924e-02, 4.191e-02, 3.338e-02, 4.583e-02, 2.542e-02, 6.378e-02, 4.860e-02, 3.023e-02, -1.641e-01, 1.021e-01, -7.298e-03, 1.726e-02, 3.585e-02, -2.231e-02, -7.084e-02), r);\n\tr = MulAdd(s6_2, M4(3.300e-02, -8.408e-03, -5.822e-02, -9.899e-02, -5.071e-02, -4.682e-02, -1.381e-02, 4.860e-02, 7.645e-02, -1.057e-01, 3.290e-02, 4.256e-02, -3.318e-02, 4.675e-02, -4.134e-02, 1.627e-02), r);\n\tr = MulAdd(s6_3, M4(7.606e-03, -5.919e-02, -7.668e-03, -1.690e-03, -5.880e-02, -2.051e-01, 4.579e-02, -7.223e-02, -1.077e-02, -4.231e-02, -4.106e-02, 4.490e-02, -7.850e-02, -3.918e-03, -5.043e-02, -3.242e-02), r);\n\tr = MulAdd(s6_4, M4(8.115e-02, 1.467e-01, 4.984e-02, 2.527e-01, 9.786e-01, -1.904e-01, 6.230e-01, 3.002e-01, -9.438e-02, 1.898e-01, -1.968e-02, -1.330e-01, 7.036e-02, -6.077e-02, 1.128e-01, -2.748e-03), r);\n\tr = MulAdd(s6_5, M4(7.808e-02, 1.051e-01, -1.295e-01, 5.095e-03, 1.513e-01, -1.094e-01, -9.200e-02, -1.044e-01, 7.178e-02, 3.189e-02, 1.993e-01, -1.136e-01, 5.804e-02, -6.015e-02, -3.642e-02, -9.688e-02), r);\n\tr = MulAdd(s6_6, M4(-2.588e-02, 1.746e-02, -2.700e-02, 1.074e-02, 6.922e-02, -2.008e-02, 2.125e-02, -8.833e-02, -3.047e-02, -1.309e-02, 1.033e-01, -5.231e-02, 1.709e-02, -1.158e-02, -2.972e-02, -7.904e-02), r);\n\tr = MulAdd(s6_7, M4(2.365e-02, -5.650e-02, -7.233e-02, 1.694e-01, -2.315e-01, -3.880e-02, 4.061e-02, 1.881e-01, -2.348e-03, 1.333e-01, 3.504e-02, 7.788e-02, -4.871e-02, -4.378e-02, 2.568e-03, -1.388e-02), r);\n\tr = MulAdd(s6_8, M4(-9.590e-03, -3.210e-02, 4.876e-02, 1.297e-03, -7.297e-02, -1.207e-02, -5.161e-02, 1.450e-01, 4.795e-02, 8.561e-02, -5.993e-02, -9.444e-02, 7.645e-03, 6.642e-02, 3.855e-02, -3.747e-03), r);\n\tr = MulAdd(s7_0, M4(1.993e-02, -5.599e-02, 1.307e-02, 5.126e-02, 2.252e-03, -5.554e-02, -4.524e-02, 2.811e-02, -2.211e-02, 2.689e-02, 9.672e-03, -7.220e-02, 4.916e-03, -4.126e-02, -3.318e-02, 3.250e-03), r);\n\tr = MulAdd(s7_1, M4(-1.198e-01, 2.290e-02, -9.118e-02, 1.422e-01, -4.106e-02, 9.354e-03, 6.920e-02, 1.073e-02, -1.082e-01, -1.340e-01, -1.270e-01, -7.924e-02, -5.469e-02, 2.681e-02, 8.133e-02, 8.518e-03), r);\n\tr = MulAdd(s7_2, M4(3.376e-02, -1.809e-02, -2.202e-02, -2.870e-02, 4.718e-03, -1.995e-02, -2.811e-02, -1.792e-02, 1.182e-02, -5.890e-02, 2.217e-02, 4.638e-02, -8.611e-02, 8.245e-02, 8.950e-02, -2.750e-03), r);\n\tr = MulAdd(s7_3, M4(9.746e-02, 4.480e-02, 1.120e-01, 5.923e-02, -1.928e-02, -1.379e-01, -4.855e-02, -3.636e-02, -5.096e-02, -9.697e-02, -1.329e-02, 8.373e-03, -7.251e-02, -8.911e-02, 5.372e-02, -4.751e-02), r);\n\tr = MulAdd(s7_4, M4(4.912e-01, 1.320e-01, -2.570e-01, 1.634e-02, 1.529e-02, -1.948e-01, -1.609e-02, 1.018e-01, -1.592e-01, -9.952e-02, -3.147e-01, -2.723e-01, -6.472e-02, 9.893e-02, -9.035e-02, 1.362e-01), r);\n\tr = MulAdd(s7_5, M4(9.074e-02, 4.720e-02, 5.895e-03, 6.767e-02, 7.657e-02, -7.854e-02, -1.175e-01, -2.531e-02, -7.094e-02, 2.834e-03, 9.916e-02, -1.150e-01, 1.608e-01, -1.808e-01, 1.651e-01, -4.608e-02), r);\n\tr = MulAdd(s7_6, M4(-2.852e-02, 9.908e-02, 5.067e-02, 1.720e-01, 9.137e-03, -2.604e-02, 6.387e-02, -1.178e-01, -4.066e-02, -3.658e-02, 6.847e-02, -8.960e-02, 4.407e-02, -3.909e-02, 6.733e-02, 1.338e-02), r);\n\tr = MulAdd(s7_7, M4(-7.476e-02, 6.065e-03, -4.672e-02, 1.024e-02, -3.047e-02, 2.018e-01, -9.026e-02, 2.397e-02, -1.401e-01, -1.550e-01, -6.817e-02, 1.072e-01, 7.496e-02, -3.902e-02, 4.703e-02, 1.025e-01), r);\n\tr = MulAdd(s7_8, M4(-7.574e-02, 8.433e-03, 1.116e-01, -2.104e-01, 4.504e-02, 7.003e-02, -3.852e-02, 7.617e-02, -9.383e-03, -1.871e-02, -5.760e-02, -8.031e-02, -1.150e-02, -3.233e-03, 1.605e-01, -5.731e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -9.683e-04, -2.415e-03, 4.691e-03, 2.899e-03 };\n\tr = MulAdd(s0_0, M4(-1.188e-02, -3.332e-02, 8.720e-02, 1.829e-03, -6.758e-02, -5.979e-02, 9.119e-02, 1.884e-02, -6.329e-02, -5.896e-02, 3.922e-02, 1.329e-02, 3.359e-03, -4.119e-02, 1.304e-01, -3.453e-02), r);\n\tr = MulAdd(s0_1, M4(4.524e-03, 1.038e-02, -7.542e-02, -2.815e-03, -1.062e-01, 1.727e-02, 1.155e-01, 3.582e-01, 1.361e-02, 2.549e-02, -1.253e-02, -8.946e-02, -2.741e-02, -6.133e-02, 1.343e-03, 1.056e-01), r);\n\tr = MulAdd(s0_2, M4(1.166e-02, 7.431e-02, 7.213e-02, 7.082e-02, 2.824e-02, -6.961e-02, 1.072e-01, -1.137e-01, -9.178e-03, 2.803e-02, 1.748e-02, 2.367e-02, -3.033e-02, 3.265e-03, 2.166e-02, -6.877e-03), r);\n\tr = MulAdd(s0_3, M4(-9.045e-02, -3.842e-02, 8.165e-02, -9.603e-02, -1.656e-01, -1.603e-01, 5.166e-03, 5.611e-02, -2.426e-01, -3.644e-02, 5.843e-02, 2.447e-02, -9.501e-02, 1.309e-01, -3.283e-02, 3.567e-02), r);\n\tr = MulAdd(s0_4, M4(-2.686e-01, -2.336e-02, 1.422e-01, 4.370e-02, 3.774e-01, -3.523e-02, 5.176e-01, -2.106e-02, 7.873e-02, -1.034e-01, 1.042e-01, -1.486e-02, 2.457e-02, 5.041e-02, 1.460e-01, -1.445e-01), r);\n\tr = MulAdd(s0_5, M4(3.611e-02, -1.113e-01, 3.064e-02, -3.519e-02, -9.354e-02, 1.515e-01, -9.649e-02, 3.154e-01, -2.846e-02, -2.897e-02, 2.011e-02, -9.511e-02, 6.145e-02, 8.183e-02, 1.010e-01, -4.757e-02), r);\n\tr = MulAdd(s0_6, M4(4.124e-02, 3.306e-02, -4.793e-02, -4.706e-03, -1.112e-01, 4.022e-02, 6.962e-02, 3.748e-02, 3.347e-02, 2.291e-02, 5.088e-03, 1.170e-02, 9.311e-02, -1.557e-01, 3.237e-02, -2.680e-02), r);\n\tr = MulAdd(s0_7, M4(2.484e-03, 8.932e-02, 1.036e-01, 3.142e-01, 1.771e-03, -1.162e-01, -8.698e-02, 5.788e-02, 3.005e-02, -1.686e-01, -1.090e-02, 7.850e-02, -1.064e-01, 2.479e-02, -2.199e-02, 2.138e-02), r);\n\tr = MulAdd(s0_8, M4(-2.168e-02, -2.943e-02, -3.124e-02, -1.104e-01, -5.848e-02, -2.798e-01, 8.619e-02, -1.055e-02, 7.123e-03, -5.557e-02, 1.454e-03, -1.419e-02, 6.118e-02, 1.648e-02, -2.522e-02, 8.671e-02), r);\n\tr = MulAdd(s1_0, M4(-2.472e-02, 2.191e-02, -4.262e-02, -4.035e-03, 9.183e-03, -2.177e-02, -6.007e-02, 6.140e-02, -2.719e-03, -4.530e-03, -6.548e-02, 3.801e-02, -2.606e-02, -4.633e-02, 6.039e-02, -4.108e-04), r);\n\tr = MulAdd(s1_1, M4(7.687e-02, -2.714e-02, 5.675e-02, -8.649e-02, 3.078e-02, -3.505e-02, 5.217e-02, -9.711e-02, 2.458e-02, 2.113e-02, -1.036e-01, -1.770e-01, 4.180e-02, -1.399e-01, 9.692e-02, 1.941e-01), r);\n\tr = MulAdd(s1_2, M4(-2.535e-02, -3.846e-03, -4.850e-02, -4.418e-03, 1.452e-02, -2.092e-02, 9.281e-03, -5.721e-02, -4.805e-02, -8.908e-02, 6.999e-03, 4.991e-02, 1.403e-02, -7.863e-03, 7.527e-03, -1.596e-01), r);\n\tr = MulAdd(s1_3, M4(-4.035e-02, 3.764e-02, 1.273e-02, -2.216e-02, 6.812e-02, -1.512e-02, 6.997e-02, -5.809e-02, 1.579e-02, -6.077e-02, 3.481e-02, -1.458e-03, -7.933e-03, 6.306e-02, -1.131e-01, -8.109e-02), r);\n\tr = MulAdd(s1_4, M4(-1.046e-01, 1.092e-01, -1.678e-01, -2.851e-01, 4.912e-02, -3.760e-03, 5.742e-02, 5.613e-02, -6.450e-02, 2.752e-01, 4.494e-02, -3.994e-02, 2.077e-01, 1.700e-01, -7.376e-02, -7.578e-02), r);\n\tr = MulAdd(s1_5, M4(-2.043e-02, 6.183e-02, 2.938e-02, -2.012e-03, 1.725e-02, 4.365e-02, 1.063e-01, -7.568e-03, 5.594e-02, -3.278e-02, 4.597e-02, 2.987e-02, -1.881e-02, 5.059e-01, 5.104e-02, -1.365e-01), r);\n\tr = MulAdd(s1_6, M4(6.789e-02, -7.871e-03, -4.167e-02, 2.075e-03, -1.833e-02, 1.941e-01, 1.266e-02, 5.510e-02, 3.110e-02, -1.049e-02, -3.576e-02, -7.252e-03, -6.012e-02, 5.847e-02, 2.815e-02, 2.331e-02), r);\n\tr = MulAdd(s1_7, M4(-9.442e-02, 6.906e-02, -8.851e-02, -2.485e-02, 5.090e-02, -6.309e-02, 3.697e-02, -1.238e-02, 6.781e-02, -8.338e-02, -3.093e-02, 1.085e-01, 9.117e-02, 3.855e-01, 4.742e-02, -1.132e-02), r);\n\tr = MulAdd(s1_8, M4(-1.800e-03, 1.546e-01, -1.963e-02, -7.079e-02, 3.692e-02, 2.564e-02, -1.822e-02, 8.978e-02, -3.236e-02, 1.218e-01, -1.214e-02, -8.239e-02, 5.708e-02, 2.057e-01, 6.424e-02, 8.472e-02), r);\n\tr = MulAdd(s2_0, M4(-5.481e-02, -1.404e-01, 8.220e-02, 1.072e-01, 9.481e-03, 2.446e-02, 2.734e-02, -8.670e-02, 1.175e-01, 1.414e-02, 1.080e-02, 1.073e-01, 5.968e-02, -2.128e-03, 1.044e-01, 7.510e-03), r);\n\tr = MulAdd(s2_1, M4(3.686e-03, -1.669e-01, -1.364e-01, 1.046e-01, 2.527e-04, -1.904e-02, -2.032e-01, 4.817e-02, 3.698e-02, 9.219e-03, -1.743e-02, -2.651e-01, 1.376e-02, 3.408e-02, -3.703e-02, -2.350e-01), r);\n\tr = MulAdd(s2_2, M4(4.511e-02, -6.042e-02, 1.397e-01, -5.209e-02, -3.447e-02, 3.691e-02, -6.187e-03, -5.817e-02, 1.027e-02, -1.841e-02, 1.670e-02, 2.625e-02, 1.474e-02, 6.275e-02, 1.233e-02, 1.266e-01), r);\n\tr = MulAdd(s2_3, M4(-1.833e-01, 3.643e-01, 1.313e-01, 8.859e-02, -2.271e-01, 4.529e-02, -2.425e-01, -2.007e-02, 1.616e-01, -9.640e-02, -8.167e-02, -9.877e-02, 1.014e-01, -2.368e-02, 1.173e-01, -4.600e-02), r);\n\tr = MulAdd(s2_4, M4(-1.047e-01, 5.489e-01, 2.875e-01, -6.239e-02, -1.576e-01, -8.642e-02, 1.690e-01, -1.704e-01, -8.154e-02, -3.884e-02, -1.718e-01, 2.920e-01, -4.465e-01, -1.001e-01, -5.537e-02, 1.294e-01), r);\n\tr = MulAdd(s2_5, M4(3.794e-02, 2.799e-01, 3.400e-02, 2.627e-02, -5.562e-02, -2.795e-02, -7.195e-02, 2.062e-01, 4.760e-02, -1.185e-02, 3.430e-02, 2.486e-02, -1.905e-02, -7.942e-03, 6.469e-02, -2.473e-01), r);\n\tr = MulAdd(s2_6, M4(-3.862e-02, -2.716e-01, -1.779e-02, 1.971e-02, -9.843e-02, 1.211e-01, 1.658e-02, 1.460e-02, -2.303e-03, 5.473e-02, 7.051e-04, -1.557e-02, -1.441e-01, 1.367e-01, 9.302e-02, 1.536e-02), r);\n\tr = MulAdd(s2_7, M4(5.274e-02, -2.609e-01, 6.992e-02, 1.837e-03, 3.149e-02, 2.595e-01, -1.588e-01, -3.238e-02, -9.817e-02, -3.578e-02, -2.076e-02, -7.313e-02, 1.019e-01, 3.797e-01, 3.405e-02, -1.473e-01), r);\n\tr = MulAdd(s2_8, M4(3.928e-03, 7.927e-02, 2.124e-02, -2.093e-02, -7.487e-02, 1.220e-01, 6.759e-02, -9.136e-03, -1.540e-02, -6.047e-02, -4.920e-02, 1.421e-02, 6.404e-02, 2.256e-01, -2.249e-02, 5.230e-03), r);\n\tr = MulAdd(s3_0, M4(-2.836e-02, -6.272e-02, 5.909e-03, 5.849e-03, -1.289e-02, 5.955e-03, -5.245e-02, 5.188e-02, -5.392e-03, -4.093e-02, -7.894e-02, 3.270e-02, -9.103e-03, 1.188e-02, 3.357e-02, -2.240e-02), r);\n\tr = MulAdd(s3_1, M4(4.517e-02, -3.684e-02, -5.974e-02, -4.620e-02, 5.921e-02, 2.377e-02, -3.287e-02, 1.555e-02, 3.179e-02, -5.626e-02, 2.167e-02, -1.737e-02, -4.715e-03, -6.318e-02, 9.200e-03, 8.010e-02), r);\n\tr = MulAdd(s3_2, M4(1.023e-02, -2.900e-03, 1.975e-02, -1.037e-01, 7.047e-03, 2.345e-02, 8.585e-03, 2.902e-02, -3.185e-02, -5.850e-02, 1.260e-02, -7.110e-02, 1.932e-02, -2.763e-02, 2.815e-02, -4.028e-02), r);\n\tr = MulAdd(s3_3, M4(2.569e-02, -3.794e-02, -1.767e-01, 4.292e-02, 6.767e-02, 1.558e-02, 3.336e-02, -2.264e-02, 9.934e-02, 7.835e-02, 7.838e-02, -2.692e-02, -3.773e-02, 2.213e-02, 3.180e-02, 3.728e-02), r);\n\tr = MulAdd(s3_4, M4(-1.067e-02, -4.388e-02, 8.321e-02, -1.344e-01, -7.525e-04, -2.050e-02, 7.072e-02, 8.138e-02, 1.190e-01, 7.250e-02, 9.039e-02, -1.053e-01, 5.307e-02, 3.833e-02, 3.821e-02, -3.772e-02), r);\n\tr = MulAdd(s3_5, M4(7.423e-02, 4.272e-03, -8.332e-03, 2.138e-02, 7.411e-02, 9.967e-02, 2.008e-02, 3.070e-02, -9.977e-02, -3.803e-02, -5.478e-02, 6.565e-02, 1.025e-02, 9.232e-02, 7.907e-04, 3.556e-02), r);\n\tr = MulAdd(s3_6, M4(-1.878e-02, -1.041e-02, 6.881e-02, -7.144e-03, 4.166e-02, 2.246e-02, -3.086e-02, 2.266e-02, -6.732e-02, -1.242e-02, -2.006e-02, 2.065e-02, 9.135e-03, -2.940e-02, 2.761e-02, -2.484e-02), r);\n\tr = MulAdd(s3_7, M4(4.517e-02, 9.055e-02, -4.538e-03, 1.247e-03, 5.470e-02, -2.161e-02, 4.771e-02, 3.237e-02, 5.565e-03, 1.050e-01, -1.003e-01, -2.731e-04, -3.393e-02, 3.448e-02, 3.846e-02, -4.142e-05), r);\n\tr = MulAdd(s3_8, M4(1.010e-02, 5.598e-02, 4.990e-02, 2.106e-03, 6.861e-02, 2.441e-02, 1.923e-02, 2.508e-02, -1.440e-01, 2.018e-02, 7.907e-03, -5.819e-02, -2.897e-02, 2.882e-02, -2.872e-02, -1.642e-02), r);\n\tr = MulAdd(s4_0, M4(-1.741e-02, 1.603e-01, 1.289e-01, 5.191e-02, 2.557e-03, -4.322e-02, -2.579e-02, -5.512e-02, 3.220e-03, -2.343e-02, -6.169e-02, 6.911e-02, 4.653e-02, -2.211e-02, 2.116e-01, 1.909e-01), r);\n\tr = MulAdd(s4_1, M4(4.580e-02, 2.516e-02, -1.149e-01, 7.143e-01, 5.640e-02, 8.803e-02, 1.368e-02, -5.165e-02, -1.294e-02, -3.442e-02, 4.503e-02, -7.777e-02, -4.877e-02, -1.414e-02, 1.643e-01, 5.026e-01), r);\n\tr = MulAdd(s4_2, M4(6.897e-02, 2.236e-02, 3.488e-03, -7.202e-02, -1.974e-02, -4.583e-03, -4.172e-03, -3.397e-02, -1.087e-02, -6.656e-02, -9.977e-03, 4.895e-02, 7.498e-03, 8.218e-03, -6.155e-03, 2.803e-02), r);\n\tr = MulAdd(s4_3, M4(-4.639e-01, 2.028e-01, -1.113e-01, 1.884e-01, -4.210e-02, 5.013e-02, 1.792e-01, 3.296e-02, -4.909e-03, -2.323e-02, 5.133e-02, -1.792e-02, -1.214e-02, 2.493e-02, 1.672e-01, -1.013e-01), r);\n\tr = MulAdd(s4_4, M4(3.603e-01, 9.485e-02, 3.685e-01, -5.827e-01, 7.797e-02, -4.314e-03, -1.100e-01, -3.284e-02, 1.190e-01, 9.011e-02, -1.382e-01, 2.920e-01, -1.540e-02, -2.027e-01, -1.193e-01, 1.663e-01), r);\n\tr = MulAdd(s4_5, M4(1.756e-01, -5.404e-03, -1.063e-01, 2.605e-01, -8.981e-02, 6.862e-02, -2.303e-02, -2.865e-03, -4.260e-02, 1.051e-01, 1.012e-01, -8.179e-02, 4.335e-03, -6.002e-02, 1.632e-02, -8.527e-04), r);\n\tr = MulAdd(s4_6, M4(1.823e-01, -7.957e-02, -6.844e-02, -1.092e-01, 2.816e-02, -7.993e-03, -1.047e-01, -2.782e-04, 8.214e-02, -3.725e-02, 6.411e-02, 4.630e-02, 3.495e-02, -1.434e-02, -1.415e-02, 1.406e-02), r);\n\tr = MulAdd(s4_7, M4(4.341e-01, 1.546e-02, 1.486e-01, 6.923e-01, 2.763e-02, 8.329e-02, 7.277e-02, 3.213e-02, -4.289e-02, -1.067e-02, 5.603e-02, 4.448e-02, -1.503e-02, -7.192e-02, -2.421e-02, 2.587e-02), r);\n\tr = MulAdd(s4_8, M4(-4.639e-01, -1.631e-01, -5.696e-03, -3.638e-01, -6.436e-02, 9.907e-02, 2.130e-02, -3.039e-02, 8.544e-02, -1.465e-02, 8.856e-03, 3.908e-02, -1.725e-03, 1.072e-02, 5.467e-03, 1.618e-02), r);\n\tr = MulAdd(s5_0, M4(3.606e-03, 1.553e-02, 2.554e-03, 2.442e-02, 2.776e-02, -4.318e-03, -4.577e-02, 1.408e-03, 1.245e-02, -3.113e-02, 2.087e-02, 1.057e-02, 8.364e-03, -1.414e-02, -1.301e-01, 6.560e-02), r);\n\tr = MulAdd(s5_1, M4(-2.726e-02, -2.469e-02, 9.038e-02, -2.211e-02, 3.204e-02, 6.069e-02, 1.048e-01, -7.627e-02, -3.532e-02, 1.767e-02, -5.957e-03, -3.333e-02, 7.942e-03, -1.149e-02, -4.773e-02, -1.110e-01), r);\n\tr = MulAdd(s5_2, M4(5.837e-03, 4.688e-02, -1.546e-02, 5.968e-03, 9.293e-03, 1.956e-02, -4.029e-02, -2.396e-02, 1.236e-02, -5.458e-02, -1.188e-03, 3.742e-02, -2.838e-02, 5.513e-02, -2.169e-02, 7.259e-02), r);\n\tr = MulAdd(s5_3, M4(6.263e-02, 2.280e-02, 4.589e-02, 3.006e-02, -9.011e-04, 3.325e-02, 2.086e-01, 7.638e-02, -1.186e-01, 3.649e-02, -1.092e-01, 3.803e-03, 8.423e-02, 7.991e-03, -1.693e-02, -1.075e-01), r);\n\tr = MulAdd(s5_4, M4(2.400e-02, -1.483e-01, -8.745e-02, -3.013e-02, 5.574e-02, 7.154e-02, -2.962e-01, -1.161e-01, 6.972e-03, 5.588e-02, 1.938e-01, 1.804e-01, 6.647e-02, 3.031e-01, -4.253e-02, 9.602e-03), r);\n\tr = MulAdd(s5_5, M4(1.932e-02, -4.527e-02, 1.921e-02, -7.693e-03, -6.628e-02, 7.647e-02, 4.823e-02, 5.237e-02, -2.770e-02, 5.194e-02, -2.895e-02, 1.791e-02, 5.963e-03, 8.029e-02, 2.304e-02, 1.151e-02), r);\n\tr = MulAdd(s5_6, M4(-4.450e-02, 5.960e-02, -2.029e-02, -1.440e-02, 2.494e-02, 7.894e-02, -2.103e-01, 3.868e-02, -1.304e-02, -4.871e-02, 1.784e-01, -3.489e-02, -1.003e-02, -5.506e-02, 3.736e-02, 2.121e-02), r);\n\tr = MulAdd(s5_7, M4(1.365e-02, -2.573e-03, 3.244e-03, 3.968e-02, -1.743e-01, -1.541e-01, 2.862e-01, 1.174e-01, -6.948e-02, 2.940e-01, -1.918e-01, -3.279e-02, 4.482e-02, -5.136e-02, -4.504e-02, 1.486e-02), r);\n\tr = MulAdd(s5_8, M4(3.427e-02, 4.197e-04, 1.681e-03, 4.410e-02, -3.634e-02, -2.480e-02, -1.041e-01, -5.174e-02, -5.241e-02, -1.550e-01, 4.137e-02, -2.072e-02, -1.327e-02, 4.156e-02, -1.612e-02, -2.276e-02), r);\n\tr = MulAdd(s6_0, M4(-4.266e-03, 3.320e-02, 1.134e-02, 1.656e-03, 3.672e-03, 4.921e-02, -5.757e-02, -4.775e-02, 1.112e-02, -9.419e-03, -2.463e-02, -4.559e-02, 6.722e-03, 1.077e-02, 6.055e-02, -4.903e-02), r);\n\tr = MulAdd(s6_1, M4(-7.871e-03, -3.928e-02, 4.258e-02, -6.994e-02, 3.260e-02, -7.975e-03, 1.626e-01, 1.292e-02, -1.299e-02, -1.378e-02, 9.619e-02, 1.042e-01, 2.211e-02, -3.767e-02, -4.459e-02, 4.980e-02), r);\n\tr = MulAdd(s6_2, M4(1.567e-02, -3.108e-02, 4.549e-02, -2.211e-02, -9.127e-03, 8.663e-03, -3.361e-02, -6.962e-02, -1.247e-02, -6.681e-02, -7.330e-02, 1.146e-01, 2.686e-02, 1.850e-02, -8.339e-02, -3.501e-02), r);\n\tr = MulAdd(s6_3, M4(1.518e-02, 7.592e-04, -3.129e-02, 2.893e-02, 1.521e-01, 3.939e-02, 1.852e-01, -1.160e-01, -1.022e-01, 7.489e-02, 9.395e-02, -5.603e-02, -9.725e-02, 7.591e-02, -1.499e-01, 3.280e-02), r);\n\tr = MulAdd(s6_4, M4(-2.125e-01, -5.828e-02, -2.803e-02, 9.889e-02, -3.857e-01, 1.435e-01, 4.770e-01, 5.873e-01, -3.387e-01, 5.346e-02, -1.896e-01, -1.812e-01, 7.526e-02, -4.860e-02, 1.626e-01, 1.091e-01), r);\n\tr = MulAdd(s6_5, M4(4.983e-02, 5.614e-02, -8.512e-02, -6.024e-02, 1.184e-01, 1.253e-01, -5.679e-02, -1.284e-01, 1.984e-02, -6.673e-02, 4.165e-02, 1.339e-02, 2.025e-02, -5.299e-02, 1.479e-01, 1.989e-01), r);\n\tr = MulAdd(s6_6, M4(1.706e-02, 7.105e-02, 1.356e-02, -3.985e-03, 1.652e-02, 1.051e-01, -4.720e-02, 3.490e-02, 9.166e-03, -1.493e-02, -5.726e-02, 1.760e-03, -5.532e-03, 5.947e-03, 6.036e-02, -3.430e-02), r);\n\tr = MulAdd(s6_7, M4(-1.490e-02, -1.024e-01, 6.941e-02, -5.101e-02, -1.117e-01, -6.986e-01, -1.208e-01, -5.732e-02, -9.263e-02, 2.819e-02, -2.642e-02, -4.355e-03, -4.265e-02, 8.176e-02, -1.318e-02, -3.722e-02), r);\n\tr = MulAdd(s6_8, M4(-1.656e-02, -4.463e-02, -1.614e-02, 2.373e-02, -8.426e-02, -2.565e-01, -1.981e-02, -3.502e-02, 5.466e-02, -1.358e-01, 2.843e-02, -5.444e-03, 3.367e-03, 2.317e-02, 1.843e-02, -1.724e-02), r);\n\tr = MulAdd(s7_0, M4(-2.948e-02, 4.966e-02, -6.441e-02, 1.678e-01, -2.802e-02, 2.056e-02, 5.476e-02, -5.943e-02, 1.840e-02, -6.474e-02, 9.075e-02, -5.608e-02, 2.460e-02, 1.304e-02, -3.671e-02, 3.320e-02), r);\n\tr = MulAdd(s7_1, M4(-1.210e-01, -5.928e-03, -9.505e-02, -1.144e-01, 4.999e-02, 4.006e-02, 7.867e-02, -9.689e-02, 2.531e-02, -2.388e-02, -1.326e-01, -4.300e-03, -4.730e-03, -1.709e-02, 9.504e-02, -1.560e-01), r);\n\tr = MulAdd(s7_2, M4(2.368e-02, 1.598e-02, 1.939e-02, 2.229e-02, -8.901e-03, 3.264e-02, -5.201e-02, 2.975e-02, -1.862e-02, -1.274e-02, -5.630e-02, 9.691e-02, -2.017e-02, 1.436e-02, -5.703e-02, -1.329e-01), r);\n\tr = MulAdd(s7_3, M4(6.468e-02, -5.168e-02, -4.589e-02, -1.296e-01, -3.748e-02, 6.205e-02, 1.169e-01, 1.290e-02, -3.376e-02, 1.150e-01, -5.875e-02, 3.723e-02, 5.062e-02, -2.485e-02, 1.010e-01, -3.626e-02), r);\n\tr = MulAdd(s7_4, M4(-3.859e-01, -1.543e-01, 3.731e-02, 2.154e-01, -1.875e-01, -2.323e-02, -6.666e-02, 2.167e-01, 2.360e-01, -5.187e-02, -2.250e-01, -1.269e-01, -1.053e-01, 4.447e-02, 8.836e-02, 3.553e-01), r);\n\tr = MulAdd(s7_5, M4(1.962e-03, -2.099e-02, -3.995e-02, -6.632e-02, 5.703e-02, -2.154e-02, 4.528e-02, -9.169e-02, -3.296e-03, -3.898e-02, 9.495e-02, -7.648e-02, -6.956e-02, -3.532e-02, 1.037e-01, 1.246e-01), r);\n\tr = MulAdd(s7_6, M4(-9.365e-02, 1.239e-01, 3.454e-02, 3.758e-02, 6.988e-02, -4.852e-02, -1.090e-01, -3.746e-02, 2.325e-02, -6.496e-02, -5.741e-02, -3.494e-02, 5.050e-02, 1.425e-02, 1.124e-02, 3.424e-02), r);\n\tr = MulAdd(s7_7, M4(-1.265e-01, 6.155e-02, -1.387e-02, -7.290e-02, -5.033e-02, -4.871e-02, 3.574e-02, -1.409e-02, -8.228e-02, 4.601e-01, 6.758e-04, -3.336e-02, -1.582e-01, -1.377e-01, 5.354e-02, -2.447e-02), r);\n\tr = MulAdd(s7_8, M4(-2.962e-03, 1.799e-01, -1.983e-02, 4.959e-02, -1.261e-02, -1.327e-01, -1.250e-02, -1.425e-02, 8.955e-02, 1.298e-01, -1.716e-02, 1.260e-02, -6.916e-03, 3.633e-02, 1.023e-02, -6.955e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.811e-03, 2.195e-03, -5.315e-03, 3.496e-03 };\n\tr = MulAdd(s0_0, M4(-5.844e-03, 1.554e-01, -9.987e-02, 1.321e-01, -7.304e-02, 9.423e-02, 3.915e-02, -4.898e-02, -5.754e-02, 1.577e-01, -3.256e-02, 1.626e-01, -3.055e-02, -9.402e-03, -1.852e-02, -1.834e-02), r);\n\tr = MulAdd(s0_1, M4(-6.417e-02, 7.474e-02, 4.864e-02, -4.934e-02, -7.196e-02, 1.810e-01, -1.471e-01, -1.831e-02, 6.508e-02, 1.228e-02, -1.634e-02, -9.918e-02, 2.784e-03, 1.068e-02, 9.356e-02, -1.270e-01), r);\n\tr = MulAdd(s0_2, M4(-7.413e-03, 3.390e-02, -1.188e-01, -1.457e-02, -9.838e-03, 1.611e-02, -4.288e-02, -4.426e-02, -6.105e-02, 5.614e-02, 5.299e-02, 7.541e-02, -7.666e-02, -1.571e-02, -6.267e-02, -8.539e-03), r);\n\tr = MulAdd(s0_3, M4(-7.046e-02, -9.099e-02, -7.332e-02, -4.078e-02, -1.651e-01, 2.003e-01, 3.956e-03, 8.217e-03, -1.464e-01, -4.877e-02, -1.386e-01, 1.315e-01, 4.155e-02, 2.929e-02, -3.655e-02, -3.612e-02), r);\n\tr = MulAdd(s0_4, M4(-3.723e-01, -1.761e-01, -2.862e-01, 8.008e-04, -5.477e-02, 1.588e-01, -1.080e-01, 3.813e-01, -7.015e-02, -2.961e-02, -2.635e-02, 2.571e-01, 3.292e-02, -7.038e-02, 5.401e-03, -9.336e-03), r);\n\tr = MulAdd(s0_5, M4(-5.563e-02, -2.680e-02, -1.954e-02, 1.323e-01, -2.530e-01, 1.074e-01, -4.652e-01, 7.981e-02, -2.483e-02, -2.423e-02, -3.723e-02, -8.706e-02, -5.204e-02, -5.312e-02, 2.606e-02, -3.335e-03), r);\n\tr = MulAdd(s0_6, M4(-9.645e-02, 6.358e-02, 4.216e-02, 1.131e-01, 2.108e-02, 2.098e-02, 6.549e-03, -5.148e-02, -9.235e-02, 6.919e-02, 1.248e-02, -4.267e-03, 1.063e-01, -1.325e-02, -2.634e-03, -2.397e-02), r);\n\tr = MulAdd(s0_7, M4(3.359e-02, 1.352e-01, -2.312e-01, -9.207e-02, -7.667e-02, -4.678e-02, -1.027e-01, -7.593e-02, -4.580e-02, 6.862e-03, 5.972e-04, 2.609e-02, -1.291e-01, 4.462e-02, -5.702e-02, 5.811e-02), r);\n\tr = MulAdd(s0_8, M4(1.752e-02, -1.779e-02, 6.688e-03, -1.062e-01, -9.378e-02, 2.514e-02, -2.137e-01, 9.271e-02, -5.857e-02, 3.197e-03, -7.593e-02, 6.963e-02, -5.174e-02, 5.168e-02, 6.475e-02, 5.364e-03), r);\n\tr = MulAdd(s1_0, M4(-2.804e-02, 3.615e-03, -1.209e-02, -2.437e-02, 1.378e-02, -4.057e-02, 3.856e-02, -1.013e-02, 5.417e-02, 1.450e-01, 6.627e-02, -3.019e-02, -5.221e-02, -3.153e-02, 6.608e-02, 1.319e-03), r);\n\tr = MulAdd(s1_1, M4(6.063e-02, 2.107e-02, 4.786e-02, 7.006e-02, -8.505e-03, 3.895e-02, -6.218e-02, -9.748e-02, -9.074e-02, -4.568e-03, -1.059e-01, -4.216e-02, 1.567e-01, 2.320e-02, 3.330e-01, -1.519e-01), r);\n\tr = MulAdd(s1_2, M4(1.058e-03, -2.897e-02, -2.634e-02, -3.948e-02, -3.213e-02, -7.246e-03, 1.435e-02, 1.586e-02, 4.976e-02, 4.865e-02, -1.550e-02, -8.290e-03, -8.188e-02, -8.424e-02, 1.040e-02, 6.041e-02), r);\n\tr = MulAdd(s1_3, M4(-4.196e-02, -1.958e-01, -2.251e-02, -1.413e-01, 6.275e-02, 4.110e-02, 9.982e-02, 5.650e-02, 9.648e-02, -9.338e-02, 3.261e-02, -5.427e-03, 2.020e-02, -4.565e-02, 1.015e-02, -1.362e-01), r);\n\tr = MulAdd(s1_4, M4(-9.324e-02, -1.733e-01, -5.316e-02, -2.774e-01, -5.793e-02, 1.081e-02, -2.404e-01, 1.028e-01, 2.578e-02, 2.004e-02, 8.182e-02, 1.598e-02, 7.152e-01, -1.617e-01, -1.103e-02, -8.309e-02), r);\n\tr = MulAdd(s1_5, M4(4.133e-03, -2.312e-02, 2.066e-02, 7.804e-02, 3.571e-02, -3.780e-03, 9.405e-02, -7.585e-05, 4.132e-02, -9.038e-02, 1.091e-01, 7.613e-02, -1.828e-01, 2.568e-02, -1.351e-01, -9.911e-02), r);\n\tr = MulAdd(s1_6, M4(9.771e-02, 1.240e-02, 2.540e-02, -1.478e-02, 1.216e-01, 4.834e-02, 1.506e-02, -4.087e-02, -1.564e-01, 2.364e-02, -1.977e-03, 1.286e-01, 8.045e-03, 7.522e-03, -1.324e-02, -4.959e-02), r);\n\tr = MulAdd(s1_7, M4(-2.213e-01, -1.216e-02, -7.938e-02, -1.294e-01, 3.202e-02, 3.705e-02, -4.118e-02, -4.715e-02, 8.480e-02, 3.195e-02, -1.020e-01, -8.519e-02, 2.847e-01, 6.033e-02, 5.722e-02, -2.313e-02), r);\n\tr = MulAdd(s1_8, M4(8.365e-02, -1.676e-02, 3.341e-02, -6.065e-02, -9.992e-03, 3.877e-02, 2.455e-02, 2.107e-02, 4.355e-03, -4.409e-02, -4.814e-02, -8.902e-02, -1.522e-02, 2.618e-02, -3.471e-03, 1.016e-02), r);\n\tr = MulAdd(s2_0, M4(2.073e-03, 1.905e-01, 5.916e-02, 8.437e-02, -4.019e-02, 1.317e-02, -6.072e-02, 1.908e-02, 1.679e-01, 6.164e-02, 7.262e-02, -9.583e-03, 6.088e-02, -7.323e-03, 1.460e-01, -1.744e-02), r);\n\tr = MulAdd(s2_1, M4(2.516e-02, 2.239e-01, -2.767e-01, 1.073e-02, 1.391e-01, -7.229e-02, 3.888e-02, -2.419e-02, -3.716e-02, 8.999e-03, 6.149e-02, 2.671e-02, -1.305e-01, -2.019e-01, 1.115e-01, -1.616e-01), r);\n\tr = MulAdd(s2_2, M4(-1.651e-02, 7.084e-02, -1.182e-03, 2.399e-01, -1.086e-01, -6.664e-03, -7.713e-02, -9.798e-02, 7.428e-02, 2.596e-02, -9.965e-03, -2.995e-02, 5.164e-02, -1.678e-03, -1.451e-01, -8.076e-02), r);\n\tr = MulAdd(s2_3, M4(1.190e-01, 3.007e-02, 4.784e-03, -7.826e-02, -2.599e-01, -1.379e-01, -2.805e-02, -1.294e-01, 1.990e-01, -1.185e-01, 5.226e-02, 5.370e-02, 1.508e-01, -9.447e-02, 1.116e-01, 9.319e-02), r);\n\tr = MulAdd(s2_4, M4(1.826e-01, 7.537e-02, -3.623e-02, -3.881e-02, 2.956e-01, -2.971e-01, 1.199e-01, 1.082e-01, 2.164e-02, 5.639e-02, 8.989e-02, -3.416e-03, 7.939e-03, -3.193e-01, -1.613e-01, 1.073e-01), r);\n\tr = MulAdd(s2_5, M4(6.423e-02, 8.481e-02, -1.448e-02, -6.871e-02, -1.065e-01, 1.465e-02, -6.037e-02, 4.801e-03, 6.445e-02, 3.601e-02, -2.203e-03, 8.718e-02, 1.127e-01, -4.716e-02, 9.620e-02, 7.383e-02), r);\n\tr = MulAdd(s2_6, M4(-3.053e-02, -3.952e-02, -6.666e-02, 7.401e-03, -1.246e-01, 5.702e-02, 2.252e-02, -1.665e-01, 5.571e-02, -6.662e-02, 2.469e-02, -1.780e-01, 9.934e-02, -1.687e-02, -1.031e-02, -2.773e-01), r);\n\tr = MulAdd(s2_7, M4(1.636e-01, 1.405e-02, -5.639e-02, -7.883e-02, 6.668e-02, 1.294e-01, 4.010e-03, -7.690e-02, -8.254e-02, -3.036e-02, 2.605e-02, -6.489e-02, -1.315e-03, 5.165e-02, 7.594e-02, -1.500e-01), r);\n\tr = MulAdd(s2_8, M4(-2.363e-02, 5.973e-03, 9.222e-02, 5.499e-02, -6.881e-03, 3.373e-02, -3.033e-02, 8.101e-02, 3.046e-02, -5.542e-02, 1.137e-03, -4.601e-02, 9.911e-02, 3.916e-02, 3.760e-02, -9.976e-02), r);\n\tr = MulAdd(s3_0, M4(-7.036e-03, 2.348e-02, -2.668e-02, -1.673e-02, -1.081e-02, 5.490e-02, 3.197e-02, -1.238e-01, 7.411e-02, -1.263e-03, 5.113e-02, -3.649e-02, -3.940e-02, 1.214e-03, -4.966e-02, 3.034e-03), r);\n\tr = MulAdd(s3_1, M4(9.343e-02, 7.414e-02, 1.265e-01, -1.021e-01, 3.649e-02, 1.131e-01, 2.501e-02, -3.036e-02, -3.411e-02, -2.742e-02, -2.141e-02, 5.247e-02, 1.422e-03, 2.364e-03, 2.285e-02, -4.067e-02), r);\n\tr = MulAdd(s3_2, M4(-2.294e-02, -7.549e-03, 4.819e-02, 2.262e-02, -5.783e-02, 5.869e-02, -1.805e-02, 3.606e-02, -1.720e-02, -4.628e-02, -6.133e-03, 1.211e-02, 1.473e-02, 4.633e-04, 6.455e-02, 1.707e-02), r);\n\tr = MulAdd(s3_3, M4(4.179e-02, 4.599e-02, 8.031e-03, -3.261e-02, -7.724e-02, -2.398e-02, 8.735e-04, 4.392e-02, 1.509e-01, -1.521e-03, -1.172e-02, 7.285e-02, -1.587e-02, -1.100e-02, 6.007e-03, -6.076e-02), r);\n\tr = MulAdd(s3_4, M4(1.015e-01, -9.532e-02, 2.807e-02, 9.613e-02, 1.001e-01, -8.175e-02, -1.064e-01, -2.877e-02, 3.196e-01, -2.984e-02, 2.316e-02, 1.708e-02, 1.076e-01, 1.969e-02, 5.984e-02, -1.004e-01), r);\n\tr = MulAdd(s3_5, M4(5.147e-02, -7.400e-03, 4.185e-02, -1.841e-02, 1.928e-02, -6.324e-02, -7.078e-03, -1.564e-02, -1.146e-01, 8.080e-02, -7.694e-02, 1.290e-02, -8.033e-02, 5.211e-02, -2.262e-03, -2.603e-02), r);\n\tr = MulAdd(s3_6, M4(1.547e-02, 2.161e-02, -1.655e-02, 3.602e-02, -1.989e-02, 8.062e-03, -7.888e-03, 2.668e-02, -2.696e-02, -1.124e-02, 8.936e-03, -7.228e-02, -6.847e-02, -2.122e-02, -1.353e-02, 2.351e-02), r);\n\tr = MulAdd(s3_7, M4(1.200e-01, 4.431e-03, 3.703e-02, -6.798e-02, -4.969e-02, 1.252e-02, -5.912e-02, -6.205e-02, -5.068e-02, 7.159e-03, -4.983e-02, -2.351e-02, 3.609e-02, -2.077e-02, 4.927e-02, 6.275e-02), r);\n\tr = MulAdd(s3_8, M4(-1.623e-02, 2.697e-04, 1.456e-02, 6.648e-02, -3.145e-02, 1.694e-02, 3.269e-02, 5.426e-02, 2.234e-02, -3.981e-03, -4.205e-02, 1.487e-02, -1.922e-02, -2.691e-02, 3.359e-02, -4.451e-02), r);\n\tr = MulAdd(s4_0, M4(-3.743e-01, -2.256e-02, -2.008e-01, 2.801e-01, -1.807e-02, -3.615e-02, 3.172e-02, -1.966e-02, -3.453e-02, 1.082e-01, 4.911e-02, -4.706e-02, -4.231e-02, 8.145e-01, 2.666e-03, 4.914e-01), r);\n\tr = MulAdd(s4_1, M4(1.266e-01, 4.054e-01, 2.968e-01, 4.639e-01, 1.063e-01, -4.573e-02, 4.886e-02, -1.962e-02, -3.122e-02, -1.772e-02, -1.607e-01, -5.203e-02, -2.388e-01, 3.515e-01, -2.278e-01, 3.669e-01), r);\n\tr = MulAdd(s4_2, M4(5.112e-02, -2.854e-02, 2.998e-01, -9.501e-02, 6.029e-03, -3.608e-02, 2.662e-02, -1.232e-01, 2.802e-03, 3.074e-02, 3.239e-02, 9.839e-02, -4.825e-02, 5.658e-02, -8.847e-02, 1.115e-01), r);\n\tr = MulAdd(s4_3, M4(-2.824e-01, 1.812e-01, -1.479e-02, -4.548e-02, -2.106e-02, -1.398e-02, 1.541e-02, -5.793e-02, 2.479e-02, -1.207e-01, 6.618e-02, -1.195e-01, -1.081e-01, 3.893e-03, -3.853e-02, 3.672e-01), r);\n\tr = MulAdd(s4_4, M4(-1.810e-01, -7.004e-02, 2.545e-01, 3.877e-01, 2.124e-01, 2.176e-02, -5.939e-02, -1.713e-01, -9.402e-02, -2.104e-01, -1.047e-01, -2.873e-01, 1.080e-01, -9.161e-03, -1.703e-01, -1.753e-01), r);\n\tr = MulAdd(s4_5, M4(-3.937e-01, 1.740e-01, 2.346e-02, -2.843e-01, -9.724e-02, 1.133e-02, 4.398e-02, 7.771e-02, 4.686e-02, 3.870e-02, 4.896e-02, -1.328e-01, 7.552e-03, 4.673e-02, -2.957e-02, 6.534e-02), r);\n\tr = MulAdd(s4_6, M4(-6.416e-02, -1.017e-01, 1.154e-01, 1.133e-01, -3.764e-02, -3.613e-03, -7.828e-04, 4.870e-02, -1.794e-02, 9.768e-02, -4.049e-02, 1.990e-01, 9.667e-02, 4.579e-02, 2.897e-02, -5.383e-02), r);\n\tr = MulAdd(s4_7, M4(2.810e-01, 2.579e-01, -2.749e-02, -4.264e-01, -7.708e-02, 8.357e-03, 2.550e-02, 4.187e-02, -8.995e-02, -8.624e-02, 2.607e-02, -8.133e-03, -1.030e-01, 2.847e-02, -9.830e-02, -3.134e-02), r);\n\tr = MulAdd(s4_8, M4(-3.575e-01, -2.686e-02, -1.088e-01, -8.145e-02, -4.100e-03, -1.068e-02, 4.221e-03, 1.113e-02, -9.216e-04, 3.555e-02, 1.371e-02, -5.217e-02, -9.224e-04, 1.972e-02, -3.992e-02, -1.156e-02), r);\n\tr = MulAdd(s5_0, M4(5.843e-02, 5.810e-03, 1.973e-02, -4.943e-02, 2.861e-02, 3.491e-02, 2.447e-02, 3.334e-03, 4.134e-02, 6.052e-02, -1.442e-02, 4.824e-03, -6.182e-02, 4.679e-02, -1.181e-02, 5.764e-02), r);\n\tr = MulAdd(s5_1, M4(-1.254e-01, -3.464e-02, -1.534e-02, 1.099e-01, -7.255e-02, 3.052e-02, -1.206e-01, 1.915e-02, 5.714e-02, -1.211e-02, -4.535e-03, -1.104e-01, -1.319e-01, -4.419e-02, 6.282e-02, 1.092e-01), r);\n\tr = MulAdd(s5_2, M4(4.543e-02, -3.484e-02, 5.793e-02, -4.426e-02, 4.397e-02, -4.703e-02, 1.392e-02, -8.030e-02, -1.836e-02, 3.873e-02, 9.299e-02, 2.857e-02, 2.991e-02, -1.835e-02, -5.184e-02, -2.837e-02), r);\n\tr = MulAdd(s5_3, M4(4.986e-02, -2.258e-04, -8.686e-03, 3.482e-02, 8.419e-03, 5.851e-02, -1.684e-02, -5.232e-02, -7.397e-02, -4.820e-02, -3.955e-02, 4.374e-02, 2.606e-02, -1.474e-02, 5.834e-02, 4.784e-02), r);\n\tr = MulAdd(s5_4, M4(-3.278e-04, -4.129e-03, 2.977e-02, -4.259e-02, -7.836e-02, -1.768e-01, -6.157e-02, -4.212e-01, 1.305e-01, 5.900e-03, 3.175e-02, 1.393e-01, 1.560e-01, 1.311e-02, 1.226e-01, -1.183e-01), r);\n\tr = MulAdd(s5_5, M4(-5.974e-02, 6.514e-02, -2.588e-02, 5.216e-02, 5.597e-02, 2.416e-02, 7.330e-02, -2.582e-03, -7.243e-03, 6.378e-03, 3.404e-02, -7.524e-02, 4.381e-02, 1.811e-02, 2.229e-02, 3.689e-02), r);\n\tr = MulAdd(s5_6, M4(2.569e-04, 5.830e-03, 4.810e-03, -3.864e-02, 1.194e-02, 6.163e-02, 2.504e-02, 1.396e-01, -9.142e-03, 2.301e-02, -2.321e-02, -5.109e-02, -4.148e-02, 3.869e-02, 8.283e-04, -3.578e-02), r);\n\tr = MulAdd(s5_7, M4(2.535e-03, 6.239e-02, 4.885e-03, -4.034e-02, -2.369e-01, 3.504e-02, -2.052e-01, 2.957e-01, -6.562e-02, 2.255e-02, -7.893e-03, -1.276e-01, -4.230e-02, 2.348e-02, 5.599e-03, -6.273e-02), r);\n\tr = MulAdd(s5_8, M4(-9.187e-03, 5.527e-02, 9.465e-03, 1.230e-02, -9.693e-02, 2.337e-02, -5.018e-02, 6.008e-03, 1.378e-02, -4.946e-03, 5.239e-02, 2.652e-02, 3.399e-02, -8.836e-04, 1.851e-02, -2.626e-02), r);\n\tr = MulAdd(s6_0, M4(3.379e-02, -2.399e-02, -4.265e-02, -8.043e-02, 2.099e-02, -9.810e-02, 4.898e-02, -5.211e-02, -2.842e-03, -3.843e-02, 3.951e-02, 6.667e-03, 2.649e-02, 1.701e-02, -3.060e-02, 4.041e-02), r);\n\tr = MulAdd(s6_1, M4(-9.006e-03, 1.676e-01, -1.003e-02, 5.151e-02, 3.163e-02, 4.564e-02, -6.965e-02, 2.953e-02, -1.655e-01, -1.426e-01, -1.307e-01, 2.165e-01, 3.455e-02, -3.141e-02, 7.936e-02, -2.925e-02), r);\n\tr = MulAdd(s6_2, M4(-3.907e-02, 1.847e-03, 6.902e-02, 6.066e-02, 2.182e-03, -8.721e-02, 7.738e-02, -6.377e-02, -6.177e-02, 1.658e-02, -1.375e-01, 8.056e-02, 4.474e-02, -4.473e-03, -3.670e-02, -1.195e-01), r);\n\tr = MulAdd(s6_3, M4(2.058e-02, 2.677e-02, -4.589e-04, -2.547e-02, 1.198e-01, -6.429e-02, 1.756e-02, 3.844e-01, -9.013e-02, -5.836e-02, -4.381e-03, -7.382e-02, -5.788e-02, -1.925e-02, -4.363e-02, -9.881e-02), r);\n\tr = MulAdd(s6_4, M4(-1.774e-01, 1.101e-01, -4.123e-02, -2.167e-03, -4.139e-01, -1.634e-01, -4.823e-01, 4.205e-01, -1.990e-01, -5.623e-03, -1.491e-03, 2.477e-03, 8.383e-02, 6.132e-02, 8.338e-02, 8.971e-02), r);\n\tr = MulAdd(s6_5, M4(-1.043e-01, 2.256e-02, 1.143e-01, -6.616e-02, -1.464e-01, -7.427e-02, 3.555e-02, -1.852e-01, 4.454e-02, 1.994e-02, -5.957e-02, 5.819e-02, 5.707e-02, 4.078e-02, -2.942e-02, 1.648e-01), r);\n\tr = MulAdd(s6_6, M4(1.917e-02, 2.395e-02, 1.240e-03, 7.490e-02, 2.125e-02, -5.508e-02, 4.957e-02, -1.780e-01, -4.028e-02, -2.978e-03, 1.606e-02, 8.035e-03, -5.799e-02, -2.113e-03, -3.876e-02, -1.504e-02), r);\n\tr = MulAdd(s6_7, M4(2.720e-02, -2.151e-02, 4.837e-02, 8.041e-02, -3.779e-01, 1.368e-01, 4.470e-02, 1.481e-03, -4.211e-02, 8.353e-03, -8.142e-02, -3.991e-02, -1.079e-01, -7.464e-02, 3.982e-03, -1.240e-01), r);\n\tr = MulAdd(s6_8, M4(9.181e-03, -1.923e-04, 9.953e-03, -6.180e-02, 1.241e-02, 5.246e-03, 4.752e-02, -2.098e-02, 1.469e-02, 5.371e-02, 3.001e-02, 9.175e-02, 3.327e-02, 1.569e-03, 6.034e-02, 1.628e-02), r);\n\tr = MulAdd(s7_0, M4(4.657e-02, 1.687e-01, 3.505e-02, -6.694e-02, -1.819e-02, -4.057e-02, -1.262e-02, -5.044e-02, 8.183e-02, -2.083e-01, -7.118e-02, -1.669e-02, 3.043e-02, 2.407e-02, 3.859e-02, 1.313e-02), r);\n\tr = MulAdd(s7_1, M4(-1.862e-02, -9.117e-02, -2.167e-01, -8.257e-02, 7.039e-02, 1.596e-01, -3.436e-02, -3.428e-02, -4.240e-02, -7.341e-02, 2.769e-01, 5.086e-02, -1.324e-02, -4.328e-02, -1.447e-01, 4.743e-04), r);\n\tr = MulAdd(s7_2, M4(1.579e-02, -1.775e-02, 9.142e-02, -9.606e-03, -1.254e-02, -8.763e-03, 6.363e-02, -6.381e-02, -3.024e-02, 6.262e-02, -1.323e-01, 3.912e-02, 6.531e-02, -7.883e-02, -1.101e-01, -1.480e-01), r);\n\tr = MulAdd(s7_3, M4(4.739e-02, -1.739e-02, 6.063e-02, 1.364e-01, -9.051e-02, -1.215e-01, -7.398e-02, 2.284e-02, 9.971e-02, -1.589e-02, -8.920e-02, -1.952e-01, 7.063e-03, -8.791e-02, 4.235e-02, -3.058e-02), r);\n\tr = MulAdd(s7_4, M4(-2.864e-01, 2.797e-01, -2.977e-01, 2.923e-01, 1.144e-01, -3.507e-01, -7.560e-02, 3.456e-02, 4.366e-01, 9.177e-02, 9.463e-02, -2.082e-01, -2.926e-01, 1.083e-01, -2.552e-01, 6.352e-02), r);\n\tr = MulAdd(s7_5, M4(-2.574e-03, 4.174e-02, 2.754e-02, 5.446e-02, -6.982e-02, -3.854e-02, 3.453e-02, -6.915e-02, 1.067e-01, -2.521e-02, 9.016e-03, 7.085e-02, -3.043e-02, -1.628e-01, -3.251e-01, -1.362e-01), r);\n\tr = MulAdd(s7_6, M4(9.595e-02, 4.518e-02, 3.763e-02, -1.439e-01, -1.223e-01, -4.048e-02, 1.560e-02, 8.571e-02, -7.292e-02, -6.801e-02, -2.210e-02, -3.341e-02, -6.534e-03, -4.839e-03, 2.293e-02, 5.185e-02), r);\n\tr = MulAdd(s7_7, M4(-1.496e-01, 1.637e-01, -1.085e-02, 2.865e-02, -1.082e-01, -4.290e-02, -8.978e-03, 8.324e-02, 4.995e-02, -2.644e-02, 2.657e-03, -1.422e-01, -2.690e-01, -1.773e-01, -1.007e-02, -2.957e-02), r);\n\tr = MulAdd(s7_8, M4(1.455e-02, 5.432e-02, -4.916e-02, -7.562e-02, -2.951e-02, 5.760e-02, 2.528e-02, 4.951e-02, 4.740e-02, -1.737e-03, 6.007e-02, -7.422e-04, -7.052e-02, -3.010e-02, 3.249e-02, -8.888e-02), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 6\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0, t1, t2, t3\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 4.937e-06, -9.679e-05, 1.474e-04, 7.536e-05 };\n\tr = MulAdd(s0_0, M4(1.888e-02, -3.403e-03, 5.631e-03, -8.622e-03, -1.458e-05, -2.226e-02, 2.582e-02, -5.644e-03, -3.952e-02, 9.939e-03, -2.528e-02, -5.767e-03, 1.976e-02, 2.383e-04, -1.765e-02, -2.412e-02), r);\n\tr = MulAdd(s0_1, M4(-4.944e-02, 8.011e-02, -6.296e-02, 1.099e-02, 1.841e-02, 4.527e-02, -9.701e-03, 9.380e-03, -1.764e-02, -8.276e-02, 5.824e-03, -2.972e-02, -2.729e-02, 5.527e-02, -9.236e-03, -8.955e-03), r);\n\tr = MulAdd(s0_2, M4(1.764e-02, -6.812e-02, 3.431e-03, -2.123e-02, -1.605e-02, 1.850e-03, -3.013e-03, 8.246e-03, -6.503e-03, 2.533e-02, -8.876e-03, -9.591e-04, 2.255e-03, -1.201e-02, 1.540e-03, -2.920e-03), r);\n\tr = MulAdd(s0_3, M4(2.650e-02, -5.410e-03, 3.586e-02, -3.986e-04, -4.626e-02, -1.262e-02, -6.323e-02, -1.873e-02, 2.632e-02, -6.002e-03, 1.960e-02, 1.260e-02, -3.853e-02, -6.770e-03, 5.896e-02, -1.443e-03), r);\n\tr = MulAdd(s0_4, M4(1.233e-01, 3.216e-02, 1.401e-01, 1.211e-01, 2.484e-02, 1.150e-02, 1.584e-02, -1.874e-02, 3.018e-02, 8.186e-02, -8.657e-03, 2.788e-03, 3.894e-02, -1.638e-02, -8.682e-03, 2.488e-02), r);\n\tr = MulAdd(s0_5, M4(-8.753e-02, 2.810e-02, -3.129e-02, -5.065e-02, 1.391e-02, -2.717e-03, 4.407e-03, 1.924e-02, -1.319e-02, -2.091e-02, -1.679e-03, 7.680e-03, 9.123e-03, 1.159e-02, 1.399e-03, -1.071e-02), r);\n\tr = MulAdd(s0_6, M4(-4.298e-03, 3.027e-03, 4.670e-03, 3.987e-03, 1.077e-02, 1.056e-03, -2.411e-03, -7.530e-03, 1.200e-03, 6.779e-04, 7.780e-03, 4.998e-03, 6.117e-03, -1.134e-02, -2.398e-02, 6.210e-03), r);\n\tr = MulAdd(s0_7, M4(-1.655e-02, 8.511e-03, -5.150e-03, -1.515e-03, -3.137e-03, 5.990e-03, 3.137e-02, 3.198e-02, -2.858e-03, -2.917e-03, 1.657e-02, 2.253e-02, -6.815e-03, 1.640e-02, 1.105e-02, 2.986e-02), r);\n\tr = MulAdd(s0_8, M4(3.787e-03, -2.778e-02, -3.509e-02, -9.779e-03, 2.890e-03, 4.340e-03, -3.797e-03, -4.003e-03, 2.937e-03, 2.451e-03, -1.992e-03, -4.934e-03, 3.575e-03, 1.287e-03, 7.888e-03, 1.431e-02), r);\n\tr = MulAdd(s1_0, M4(8.311e-04, 3.358e-03, -4.527e-04, -8.006e-03, -2.292e-02, -9.604e-03, 2.427e-02, 1.118e-02, -4.610e-02, -5.515e-02, -8.618e-02, 1.304e-02, -5.202e-02, -8.690e-02, 2.107e-02, -3.049e-02), r);\n\tr = MulAdd(s1_1, M4(1.753e-02, 2.576e-02, -7.201e-02, 4.915e-03, -2.588e-01, -1.619e-01, 2.213e-01, 1.254e-01, -1.919e-01, 2.244e-01, 1.117e-01, -8.585e-02, -1.778e-02, 6.616e-02, 1.959e-03, 3.946e-03), r);\n\tr = MulAdd(s1_2, M4(3.591e-02, -8.080e-02, 4.239e-03, -2.942e-02, 6.586e-04, -4.860e-02, -4.173e-02, 6.332e-02, 7.348e-03, -1.984e-02, 1.691e-02, -4.066e-02, -3.536e-03, -5.051e-03, 9.376e-04, -1.307e-03), r);\n\tr = MulAdd(s1_3, M4(2.056e-03, 8.929e-03, 1.033e-02, 2.423e-02, -2.230e-02, -8.957e-03, -4.406e-02, -9.152e-03, 1.344e-02, -1.218e-02, 2.665e-01, -9.596e-02, 3.645e-01, -4.531e-02, -2.095e-01, 1.210e-01), r);\n\tr = MulAdd(s1_4, M4(3.958e-01, -7.946e-02, 3.844e-01, -8.027e-03, 7.845e-02, 4.609e-02, -2.085e-02, 2.660e-02, 9.713e-02, 1.818e-02, -1.598e-01, 1.207e-02, 1.814e-02, -9.009e-02, -4.132e-03, -8.960e-02), r);\n\tr = MulAdd(s1_5, M4(-5.529e-02, -1.450e-01, 1.146e-02, -1.788e-01, 3.910e-02, 5.140e-02, 2.975e-02, -2.628e-02, -9.157e-03, 3.761e-03, 1.054e-02, 1.309e-02, 1.474e-02, 2.617e-02, -3.821e-03, -9.823e-03), r);\n\tr = MulAdd(s1_6, M4(-4.906e-03, 8.074e-03, -1.045e-02, 6.266e-03, 8.151e-03, 2.609e-03, 2.665e-03, -2.719e-03, 2.041e-04, 1.069e-02, -8.650e-03, -2.215e-03, -3.139e-02, 1.281e-03, -1.727e-02, -7.010e-03), r);\n\tr = MulAdd(s1_7, M4(-1.916e-02, 1.448e-03, 6.456e-02, -4.235e-02, -6.792e-03, 9.169e-04, 3.381e-02, 2.972e-02, -3.892e-03, -2.675e-03, 3.504e-02, 2.591e-02, -2.620e-02, -4.219e-02, -2.688e-04, 1.606e-01), r);\n\tr = MulAdd(s1_8, M4(-7.694e-03, -1.994e-02, -3.518e-02, -5.359e-02, 2.410e-03, -2.129e-04, -5.800e-03, 6.700e-03, -1.502e-03, 1.191e-03, -7.976e-03, -5.875e-03, 8.394e-04, -5.713e-03, 1.298e-02, 2.316e-03), r);\n\tr = MulAdd(s2_0, M4(-4.358e-02, 1.205e-02, -1.150e-02, 1.204e-02, 2.057e-02, 2.434e-03, -7.853e-03, 2.368e-03, -7.508e-03, -1.951e-03, 6.640e-03, 1.790e-03, -1.187e-02, -6.954e-03, -1.163e-02, 6.363e-03), r);\n\tr = MulAdd(s2_1, M4(6.230e-03, -9.421e-02, 2.283e-02, 5.563e-03, -1.273e-02, 3.673e-02, -1.731e-03, 5.327e-03, 1.650e-02, -2.073e-02, 4.072e-03, -1.494e-02, 5.910e-02, -9.066e-03, 1.432e-02, -9.310e-03), r);\n\tr = MulAdd(s2_2, M4(1.872e-03, 4.321e-03, -6.060e-03, 1.506e-03, -1.147e-03, -3.120e-02, 5.099e-03, -8.089e-03, -1.281e-03, 3.518e-02, 2.337e-03, 1.787e-02, -2.022e-03, 2.472e-02, -2.785e-03, 1.791e-03), r);\n\tr = MulAdd(s2_3, M4(8.936e-03, 2.829e-02, -3.183e-02, 2.790e-02, 3.410e-02, 2.374e-02, 4.922e-02, 1.864e-02, -6.471e-02, 6.844e-04, -6.425e-02, -1.419e-03, 2.599e-02, 1.764e-02, -6.465e-03, -1.644e-02), r);\n\tr = MulAdd(s2_4, M4(7.059e-02, 8.303e-03, -6.271e-03, -9.405e-02, -1.386e-01, -9.546e-02, -6.011e-02, -9.171e-03, -2.279e-03, -5.129e-02, 2.251e-02, -5.562e-02, -5.187e-02, -2.396e-02, 4.020e-02, 3.432e-02), r);\n\tr = MulAdd(s2_5, M4(-3.111e-02, 2.546e-02, -1.325e-03, 2.816e-02, 1.775e-02, -1.269e-02, 1.138e-02, -1.000e-02, 1.697e-02, 3.864e-03, 2.087e-03, 3.344e-02, -8.484e-04, -2.693e-02, 3.090e-03, 2.142e-02), r);\n\tr = MulAdd(s2_6, M4(6.730e-03, 3.269e-04, 2.920e-02, 1.163e-02, -1.127e-02, 1.981e-03, 1.961e-03, 1.407e-02, 7.273e-03, -5.854e-03, -7.461e-03, -5.651e-03, -3.546e-04, 4.019e-03, 2.618e-02, 2.367e-02), r);\n\tr = MulAdd(s2_7, M4(2.107e-02, 2.829e-02, 8.396e-02, 4.000e-02, 1.222e-02, -1.084e-02, -7.531e-02, -6.661e-02, -1.950e-03, 3.465e-03, -1.228e-02, 1.770e-05, 4.522e-03, -5.513e-03, -3.509e-02, -4.016e-02), r);\n\tr = MulAdd(s2_8, M4(-3.927e-03, -9.815e-04, -1.947e-02, 6.041e-03, -7.065e-03, -2.652e-03, 5.390e-04, -2.048e-02, 5.926e-03, 7.797e-03, 1.450e-02, 1.169e-02, -1.547e-03, 2.840e-04, -5.163e-03, -1.303e-02), r);\n\tr = MulAdd(s3_0, M4(-5.409e-02, 9.184e-03, -4.422e-03, 1.524e-02, 2.248e-02, -3.864e-03, -6.101e-03, -3.069e-03, -2.527e-02, 6.830e-03, -1.349e-03, 8.878e-03, 1.036e-02, -4.895e-02, 3.211e-02, -2.753e-02), r);\n\tr = MulAdd(s3_1, M4(1.371e-02, -6.961e-02, 3.120e-02, 3.138e-02, 1.296e-01, 1.191e-01, -1.508e-02, 1.052e-02, 1.901e-01, -1.728e-01, 1.270e-02, -7.327e-03, -3.998e-02, 2.193e-01, -1.273e-02, 1.802e-02), r);\n\tr = MulAdd(s3_2, M4(4.931e-03, -2.124e-03, -8.819e-03, 3.987e-03, -9.392e-03, 1.330e-02, 1.135e-03, -2.080e-02, -2.240e-02, 3.794e-02, -8.390e-03, 3.292e-02, 8.262e-03, -5.288e-03, 8.888e-05, -1.230e-03), r);\n\tr = MulAdd(s3_3, M4(6.616e-02, 4.391e-02, -7.932e-02, 3.235e-02, 4.285e-02, 2.983e-02, 3.588e-02, -7.229e-03, -6.323e-02, 2.271e-02, -6.090e-02, 1.291e-02, 1.438e-02, 1.232e-02, -1.788e-02, -3.406e-02), r);\n\tr = MulAdd(s3_4, M4(1.351e-01, 4.053e-01, -1.401e-01, -4.350e-01, -3.408e-02, -3.919e-02, -3.148e-01, -1.567e-01, 2.798e-01, -3.152e-01, 4.335e-01, -4.720e-01, -4.453e-03, -3.111e-02, 5.432e-02, 1.661e-01), r);\n\tr = MulAdd(s3_5, M4(-1.449e-02, 3.672e-02, 3.008e-03, 3.696e-02, 2.229e-02, 4.568e-02, 8.036e-03, -1.061e-01, -8.701e-03, 2.603e-02, -1.476e-02, -8.277e-03, 1.253e-03, -4.533e-02, 1.677e-02, -4.820e-02), r);\n\tr = MulAdd(s3_6, M4(-1.351e-03, -1.201e-03, 2.428e-02, -1.435e-03, -1.643e-02, 3.242e-03, 7.810e-03, 1.274e-02, -9.967e-04, -1.764e-03, -2.105e-02, 1.409e-02, 3.607e-03, 4.228e-03, 2.109e-02, 2.833e-02), r);\n\tr = MulAdd(s3_7, M4(-8.967e-04, 4.304e-04, 1.274e-01, 4.554e-03, -3.403e-03, -2.228e-02, -5.090e-02, -5.075e-02, 1.022e-02, -1.074e-02, 3.729e-02, -4.013e-02, 1.206e-03, 3.008e-03, -3.285e-02, -3.790e-02), r);\n\tr = MulAdd(s3_8, M4(-8.135e-03, -6.612e-03, -1.430e-02, 1.443e-02, -9.392e-03, -8.874e-03, 2.189e-03, -4.325e-03, 3.305e-03, 7.361e-03, -3.845e-03, 4.320e-02, 5.838e-05, -5.906e-03, -9.746e-03, -6.372e-03), r);\n\tr = MulAdd(s4_0, M4(-6.619e-02, 3.386e-03, -1.440e-02, -2.684e-03, 1.861e-01, 6.708e-03, -2.086e-01, -2.792e-02, 5.085e-03, -1.371e-03, 7.496e-04, 5.475e-04, 3.164e-02, -2.828e-03, 7.371e-03, -3.730e-03), r);\n\tr = MulAdd(s4_1, M4(2.662e-01, 9.839e-02, -1.261e-03, 1.859e-02, 1.929e-01, 4.174e-01, -1.989e-01, -4.026e-01, 1.022e-02, 3.651e-03, 1.549e-02, 9.997e-03, 1.631e-02, 5.879e-02, -1.085e-02, 5.666e-03), r);\n\tr = MulAdd(s4_2, M4(-4.957e-03, 5.830e-02, 1.930e-03, 1.448e-02, -1.145e-02, -1.217e-03, -2.842e-02, -1.898e-02, -3.649e-03, -1.017e-02, -6.273e-03, -9.116e-03, -5.015e-04, -1.688e-02, 3.775e-03, -1.721e-04), r);\n\tr = MulAdd(s4_3, M4(2.389e-03, 2.408e-02, -5.210e-02, 6.875e-03, -3.646e-02, -1.013e-02, 4.480e-02, 4.505e-02, 2.366e-03, 3.030e-03, 1.549e-03, -1.001e-03, 9.867e-02, -2.665e-02, 9.044e-02, -1.874e-02), r);\n\tr = MulAdd(s4_4, M4(-3.643e-02, -2.222e-01, 4.160e-01, -8.814e-02, -3.183e-03, -2.813e-02, -2.998e-02, 3.857e-03, 1.168e-02, -2.557e-03, -3.460e-03, 3.700e-02, -5.386e-02, 1.318e-01, 2.204e-02, 1.646e-01), r);\n\tr = MulAdd(s4_5, M4(-1.667e-02, 1.179e-02, -1.704e-02, 1.701e-02, 1.466e-02, 6.225e-03, 1.316e-02, 6.819e-03, 1.538e-02, 1.750e-02, 1.290e-02, -9.130e-03, -9.388e-04, -2.310e-02, 1.012e-03, -2.192e-02), r);\n\tr = MulAdd(s4_6, M4(-4.788e-03, -1.788e-04, 1.942e-03, 2.068e-02, 8.190e-03, 2.922e-03, 8.121e-03, 8.156e-03, -6.692e-04, 4.287e-03, -1.235e-03, -3.182e-04, -3.056e-02, 8.216e-03, -1.327e-02, -1.535e-02), r);\n\tr = MulAdd(s4_7, M4(4.394e-03, -1.151e-02, -1.421e-01, -8.570e-02, -3.001e-04, -3.082e-03, -9.208e-03, -5.047e-03, -2.155e-02, -8.398e-03, -3.852e-02, -2.369e-02, -2.241e-02, -5.901e-02, -6.197e-02, -4.610e-02), r);\n\tr = MulAdd(s4_8, M4(-2.005e-03, -7.680e-03, -7.675e-03, 1.350e-03, 2.217e-03, 5.842e-03, 6.929e-03, 4.388e-03, 2.925e-03, -1.936e-02, 2.993e-03, -6.092e-03, -5.771e-03, -1.297e-02, -8.820e-03, -4.081e-02), r);\n\tr = MulAdd(s5_0, M4(-8.093e-03, -2.108e-02, -5.065e-03, -9.804e-03, 8.706e-03, -2.703e-03, 8.560e-03, -1.145e-03, 1.271e-02, 3.374e-04, -2.669e-03, 3.678e-04, 3.406e-02, -1.116e-03, -4.666e-03, -3.086e-03), r);\n\tr = MulAdd(s5_1, M4(1.444e-01, 8.691e-02, -3.666e-03, -1.186e-02, -2.945e-02, 1.773e-02, -3.385e-03, 9.432e-03, -8.320e-02, 3.048e-02, 4.784e-02, 1.887e-02, 2.853e-02, 4.528e-02, -1.537e-02, 1.443e-02), r);\n\tr = MulAdd(s5_2, M4(1.261e-03, 8.035e-02, 2.059e-03, 1.571e-02, -3.960e-03, -7.533e-03, 1.761e-03, 3.228e-04, 4.202e-02, -6.871e-02, -1.490e-02, -1.569e-02, -1.648e-03, -2.460e-02, 4.012e-03, 1.774e-03), r);\n\tr = MulAdd(s5_3, M4(-1.331e-02, 2.152e-02, -2.614e-02, -9.924e-03, -1.947e-02, 1.059e-02, -1.041e-02, -1.621e-03, -2.572e-02, 2.033e-02, 2.865e-02, 5.849e-03, 5.318e-02, -5.221e-02, 1.551e-01, -2.830e-02), r);\n\tr = MulAdd(s5_4, M4(-1.323e-01, -9.644e-02, 1.592e-01, 1.171e-01, 4.554e-03, -1.978e-02, 7.734e-04, 5.202e-03, 4.516e-01, -1.821e-01, -2.188e-01, -6.628e-02, -1.213e-01, 3.488e-01, 3.650e-02, 1.072e-01), r);\n\tr = MulAdd(s5_5, M4(9.571e-03, -5.795e-02, 1.968e-03, 5.286e-02, 8.690e-03, 4.884e-03, -2.144e-03, 2.432e-03, -6.079e-02, -1.205e-01, -5.606e-02, 2.910e-01, 3.558e-03, -4.736e-02, 1.097e-03, -2.437e-02), r);\n\tr = MulAdd(s5_6, M4(-2.386e-03, 3.239e-03, 1.889e-03, 2.179e-02, 5.114e-03, 2.074e-03, 7.194e-03, 7.554e-03, 2.152e-03, 2.239e-02, -2.804e-02, 7.534e-03, -9.674e-03, 8.039e-03, -5.096e-02, 7.962e-03), r);\n\tr = MulAdd(s5_7, M4(9.905e-03, -1.465e-02, -1.165e-01, -1.121e-01, -1.333e-04, -2.307e-04, -1.100e-02, -1.205e-02, -8.494e-02, -1.837e-02, -8.022e-02, 1.404e-01, -7.194e-02, -5.811e-02, 4.097e-02, -2.056e-01), r);\n\tr = MulAdd(s5_8, M4(-5.079e-04, 1.061e-02, 2.578e-03, -1.954e-02, 1.028e-03, 4.906e-03, 7.644e-03, 5.385e-03, 1.110e-02, 5.051e-03, 3.922e-02, -8.392e-02, -4.674e-03, -2.416e-02, -2.396e-02, -2.507e-02), r);\n\tr = MulAdd(s6_0, M4(-5.674e-03, 1.696e-02, -3.176e-02, 2.557e-02, -6.480e-03, 4.567e-03, -1.663e-03, 1.376e-04, 1.050e-03, 2.005e-02, -7.700e-03, -4.650e-03, 5.174e-03, 2.959e-04, 5.847e-04, 6.868e-03), r);\n\tr = MulAdd(s6_1, M4(1.993e-01, -3.446e-01, 5.166e-02, -6.301e-02, -2.130e-02, -2.832e-02, 1.387e-02, 6.658e-03, -1.506e-02, 1.915e-02, 1.594e-03, -1.395e-02, -3.983e-03, -5.809e-03, -4.394e-03, -2.282e-02), r);\n\tr = MulAdd(s6_2, M4(-3.163e-02, 6.764e-02, -2.420e-02, 4.381e-02, -7.289e-04, -9.938e-03, 1.256e-04, -1.360e-04, -6.267e-03, -2.814e-02, -2.084e-04, -6.295e-03, 1.764e-03, 3.965e-02, 2.172e-03, 1.004e-02), r);\n\tr = MulAdd(s6_3, M4(-3.805e-02, 6.931e-03, 5.346e-02, 1.400e-02, -5.747e-02, 6.911e-03, -4.360e-02, -2.992e-03, 1.962e-01, -5.279e-03, 1.268e-01, 1.710e-02, 3.139e-02, -9.558e-03, 2.899e-02, -3.663e-03), r);\n\tr = MulAdd(s6_4, M4(3.873e-01, -1.973e-01, 4.189e-01, -5.647e-01, -6.008e-03, -7.391e-02, -5.739e-02, -7.744e-02, 8.159e-02, -3.188e-01, 1.655e-02, -5.484e-02, -3.178e-02, 4.290e-02, -2.692e-02, 9.210e-04), r);\n\tr = MulAdd(s6_5, M4(-2.935e-02, -2.705e-02, -1.973e-02, 3.284e-02, 4.812e-03, -1.630e-03, -6.547e-03, -2.704e-02, 3.867e-03, 2.585e-02, -1.039e-02, -2.115e-02, 2.652e-02, -4.987e-03, 9.940e-03, 3.099e-02), r);\n\tr = MulAdd(s6_6, M4(-1.325e-02, 1.862e-02, -6.437e-02, 3.401e-02, 8.708e-03, -9.918e-03, -1.084e-02, -6.120e-03, 9.072e-03, -9.683e-03, 9.543e-02, -1.780e-02, -1.107e-03, 1.807e-03, 8.317e-03, -4.227e-03), r);\n\tr = MulAdd(s6_7, M4(-1.322e-03, -2.431e-02, 1.236e-01, 3.596e-02, 1.617e-02, 3.369e-02, 3.577e-02, 2.416e-02, 2.259e-02, 4.767e-04, 6.982e-02, -2.046e-01, 2.224e-03, -1.279e-02, -3.976e-03, 2.405e-02), r);\n\tr = MulAdd(s6_8, M4(1.170e-02, 1.031e-02, -1.128e-02, -3.595e-03, -2.951e-03, -1.011e-03, 4.208e-03, 8.020e-03, -9.252e-03, 4.930e-03, -4.802e-03, 2.488e-02, 7.594e-03, 1.785e-02, 2.293e-02, 1.881e-02), r);\n\tr = MulAdd(s7_0, M4(-3.035e-02, 1.103e-02, -1.247e-02, 8.212e-03, -3.649e-03, 7.823e-04, -4.061e-03, -5.997e-03, 6.184e-03, 8.128e-03, -1.791e-02, -3.658e-03, 9.366e-03, -1.359e-03, 6.250e-03, 7.013e-03), r);\n\tr = MulAdd(s7_1, M4(-1.474e-02, -9.790e-02, 2.877e-02, -5.354e-03, 1.812e-03, -1.444e-02, -8.681e-04, -4.601e-03, -1.857e-02, 1.924e-02, -4.324e-03, -6.665e-04, -2.237e-02, -1.259e-02, 2.804e-02, -1.132e-02), r);\n\tr = MulAdd(s7_2, M4(4.229e-03, 3.503e-02, -9.494e-03, 3.929e-03, 1.529e-03, 1.047e-02, -1.211e-03, -1.295e-03, -6.108e-03, -3.601e-02, 1.257e-03, -5.264e-03, -3.022e-02, -9.369e-03, 2.472e-02, 4.690e-02), r);\n\tr = MulAdd(s7_3, M4(1.319e-02, -1.454e-02, -5.079e-03, 7.460e-03, -5.480e-02, 5.655e-03, -3.895e-02, -3.164e-03, 4.913e-02, 1.430e-02, 8.021e-02, 1.776e-02, 4.046e-02, 4.571e-03, -2.042e-03, -4.160e-03), r);\n\tr = MulAdd(s7_4, M4(6.519e-02, 8.739e-02, -5.626e-02, -8.788e-02, -3.206e-01, -2.325e-01, 3.845e-02, 7.201e-03, -5.066e-02, -1.198e-02, -4.289e-02, 1.265e-02, 3.552e-01, 1.004e-01, -3.917e-01, -1.470e-01), r);\n\tr = MulAdd(s7_5, M4(-2.531e-02, -1.486e-02, 4.528e-03, 2.192e-02, 7.700e-03, -1.460e-01, 5.769e-03, 8.122e-03, 1.705e-02, 1.979e-02, -6.251e-04, -3.190e-02, 6.387e-02, 2.744e-01, 1.321e-02, -1.953e-01), r);\n\tr = MulAdd(s7_6, M4(1.643e-03, -1.660e-03, 4.977e-03, -1.102e-02, 1.609e-02, -5.231e-03, -9.750e-03, 3.558e-03, -1.151e-02, -5.640e-03, -1.219e-02, 3.597e-03, -2.938e-02, -1.077e-02, 6.192e-02, -1.080e-02), r);\n\tr = MulAdd(s7_7, M4(-8.093e-03, 1.761e-03, 6.421e-02, 7.350e-02, 8.811e-03, 2.184e-02, 2.007e-01, 1.038e-01, 1.103e-02, -7.409e-03, -1.095e-02, -1.284e-03, -1.262e-02, -5.736e-02, -5.778e-03, 1.275e-01), r);\n\tr = MulAdd(s7_8, M4(7.431e-03, 4.067e-03, -1.131e-02, -1.269e-04, -4.994e-03, -3.172e-03, 5.994e-04, 8.132e-02, -1.893e-03, -5.842e-03, 1.233e-02, 1.106e-02, 1.308e-02, 1.715e-02, -7.352e-03, -1.630e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-4x4C-NVL-DN.hlsl",
    "content": "// CuNNy 4x4C BILINEAR RGB NVL DN - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-DN-D04N04\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0\n\n#define l0(x, y) (dot(MF3(2.428e-01, 4.714e-01, 1.229e-01), O(INPUT, float2(x, y)).rgb) + MF(-7.696e-02))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 1.690e-02, 8.856e-03, -9.136e-04, 2.267e-02 };\n\tr = mad(s0_0, V4(9.154e-02, 3.758e-01, 2.353e-02, -5.798e-02), r);\n\tr = mad(s0_1, V4(-5.382e-01, 1.688e-01, -1.190e-01, 4.082e-02), r);\n\tr = mad(s0_2, V4(2.460e-02, -5.810e-02, 7.788e-02, 3.018e-02), r);\n\tr = mad(s0_3, V4(1.211e-01, -1.552e-01, -9.990e-02, 3.963e-02), r);\n\tr = mad(s0_4, V4(-2.611e-01, -4.835e-01, -6.965e-01, -4.893e-01), r);\n\tr = mad(s0_5, V4(-3.017e-01, -4.435e-02, 1.836e-01, 4.600e-01), r);\n\tr = mad(s0_6, V4(1.275e-01, 2.485e-01, 7.354e-02, -4.648e-02), r);\n\tr = mad(s0_7, V4(2.527e-01, 1.279e-01, 3.053e-01, 3.957e-02), r);\n\tr = mad(s0_8, V4(1.003e-02, 1.193e-01, 2.476e-01, -2.051e-02), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -4.697e-03, -2.213e-02, 3.898e-01, -1.481e-02 };\n\tr = MulAdd(s0_0, M4(-4.540e-03, -2.499e-01, 4.202e-02, 1.132e-02, 2.910e-02, -3.788e-02, 3.330e-02, -2.254e-02, -1.953e-01, 1.226e-01, -1.907e-01, -1.378e-01, 9.555e-02, -2.443e-01, 6.124e-02, -7.256e-03), r);\n\tr = MulAdd(s0_1, M4(-1.225e-01, -1.812e-01, -1.238e-02, 4.088e-01, -9.977e-02, 4.395e-02, -2.394e-02, -5.584e-03, 2.939e-01, 4.102e-01, 6.228e-02, 3.822e-01, 8.618e-02, -1.109e-01, 1.776e-01, -7.505e-02), r);\n\tr = MulAdd(s0_2, M4(2.047e-01, -6.853e-02, 1.880e-02, -9.030e-03, 1.505e-01, 7.782e-02, 1.347e-02, 5.566e-01, -6.951e-02, -1.352e-01, 1.941e-03, 3.975e-02, 1.637e-01, 6.708e-02, 1.501e-02, 1.373e-01), r);\n\tr = MulAdd(s0_3, M4(-1.974e-01, 1.068e-01, -1.102e-01, 5.909e-02, 2.355e-03, 1.275e-01, -5.986e-02, -5.288e-02, 8.785e-04, -1.440e-01, -3.369e-01, -9.128e-02, 2.030e-01, 4.937e-01, -1.637e-01, 4.814e-02), r);\n\tr = MulAdd(s0_4, M4(-3.954e-01, 4.772e-01, -5.841e-01, -8.070e-02, -2.056e-01, -2.335e-01, -2.091e-01, 1.223e-01, -2.686e-01, 1.240e+00, 7.095e-02, 6.502e-01, 1.044e-01, -3.071e-01, -2.892e-01, 4.861e-01), r);\n\tr = MulAdd(s0_5, M4(5.943e-02, 2.245e-01, 4.014e-01, -1.063e-01, -1.869e-01, 1.384e-01, 2.996e-01, -1.928e-01, 1.212e-01, 2.849e-01, 2.093e-01, -3.821e-01, -8.705e-02, 1.976e-01, 5.176e-01, -7.461e-02), r);\n\tr = MulAdd(s0_6, M4(1.048e-01, 2.374e-02, 2.730e-01, 1.446e-01, -5.406e-02, -1.587e-02, -2.014e-01, -3.422e-02, -2.114e-01, -5.198e-01, 2.674e-02, -6.078e-02, -2.293e-01, -9.914e-02, -2.110e-01, 7.008e-02), r);\n\tr = MulAdd(s0_7, M4(5.799e-02, 4.932e-01, 4.559e-01, -3.118e-02, 4.706e-02, -2.242e-01, -3.165e-01, -9.912e-02, 4.041e-01, 7.241e-01, -1.696e-01, 1.990e-01, 4.697e-01, 9.965e-03, -1.141e-02, -1.365e-02), r);\n\tr = MulAdd(s0_8, M4(-1.744e-01, -7.119e-02, 3.632e-01, -2.802e-01, -3.155e-01, 4.455e-01, -1.866e-02, -2.667e-02, 1.255e-01, -5.762e-01, -2.226e-02, 2.812e-02, -2.349e-01, 1.552e-01, -6.424e-03, 7.450e-02), r);\n\tr = MulAdd(s1_0, M4(6.159e-02, -4.426e-02, 2.277e-02, 1.040e-01, -6.306e-04, -1.704e-01, 3.807e-02, -8.670e-02, -1.403e-01, 1.644e-01, -9.679e-02, -1.055e-01, 2.394e-01, -5.504e-02, 8.006e-02, 6.312e-02), r);\n\tr = MulAdd(s1_1, M4(-1.134e-01, -1.030e-01, -2.777e-02, 2.955e-01, -1.225e-01, -4.096e-02, -2.748e-02, 9.404e-02, 2.890e-01, -2.441e-01, 1.560e-01, 1.694e-01, 1.853e-01, 3.311e-01, 3.408e-01, -8.678e-02), r);\n\tr = MulAdd(s1_2, M4(1.821e-01, 3.898e-02, -2.560e-02, 1.160e-01, 2.382e-01, -1.638e-01, -1.345e-01, 3.193e-01, -1.839e-01, -2.638e-01, 5.265e-02, 2.415e-01, 2.803e-01, 1.919e-01, -7.340e-02, 1.762e-02), r);\n\tr = MulAdd(s1_3, M4(-2.606e-01, -1.263e-01, -3.067e-02, -1.695e-02, 4.665e-03, 2.947e-02, -1.965e-02, -2.658e-02, -7.935e-02, -1.566e-01, -3.246e-01, -1.075e-03, 1.896e-01, -2.937e-01, -1.020e-01, -1.513e-01), r);\n\tr = MulAdd(s1_4, M4(-3.696e-01, 8.901e-02, -1.890e-01, -2.804e-02, -2.998e-01, -6.597e-02, -2.613e-01, 3.877e-01, -1.032e+00, -2.328e-01, 7.941e-02, 5.733e-01, 8.618e-02, 4.213e-02, -1.242e+00, 5.861e-01), r);\n\tr = MulAdd(s1_5, M4(1.919e-02, -5.609e-02, 3.295e-01, -2.364e-01, -4.238e-01, -6.041e-01, 3.389e-01, -4.460e-01, 4.482e-02, 1.077e-03, 8.990e-02, -2.725e-01, -4.829e-02, 1.184e-01, 1.941e-01, -3.646e-01), r);\n\tr = MulAdd(s1_6, M4(2.968e-01, 2.018e-01, 2.695e-01, 8.891e-02, -5.857e-02, 6.005e-02, -2.440e-01, -1.349e-02, -7.572e-02, -3.213e-01, 6.274e-02, -1.229e-02, -7.589e-01, -2.313e-01, -1.627e-01, 2.538e-01), r);\n\tr = MulAdd(s1_7, M4(-5.728e-02, 1.333e-01, 2.492e-01, -3.609e-02, 1.936e-01, -1.276e-01, -3.034e-01, -1.091e-01, 1.390e-01, 3.356e-01, -1.183e-01, 2.047e-01, 3.779e-01, -3.353e-01, 2.019e-01, 4.337e-02), r);\n\tr = MulAdd(s1_8, M4(-1.386e-01, 1.179e-01, 2.340e-01, -1.604e-01, -4.890e-01, -5.407e-01, -1.546e-01, -1.826e-01, 1.596e-01, -1.784e-01, 5.777e-02, 3.961e-02, -2.290e-01, 2.752e-01, -4.260e-02, 9.649e-02), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -8.341e-03, 1.434e-02, 5.791e-03, -1.033e-02 };\n\tr = MulAdd(s0_0, M4(-1.362e-01, -5.847e-02, 2.766e-02, 2.969e-02, 9.796e-02, 6.555e-02, -3.067e-02, -5.139e-02, 1.512e-01, 1.401e-01, -3.820e-03, 2.649e-02, -1.802e-01, -2.099e-02, -6.604e-02, 4.042e-02), r);\n\tr = MulAdd(s0_1, M4(-2.144e-01, -1.437e-01, 4.670e-02, -2.348e-01, 9.990e-02, -5.186e-02, 1.658e-01, 9.557e-02, -1.353e-01, -1.146e-01, -9.837e-02, -8.956e-02, 1.229e-01, 2.354e-01, -2.342e-01, -1.343e-01), r);\n\tr = MulAdd(s0_2, M4(5.918e-01, 2.130e-02, 5.753e-01, -6.941e-02, -3.156e-02, -4.438e-02, -6.348e-02, 2.682e-02, -1.078e-02, 9.727e-03, 8.472e-02, 1.460e-01, -1.921e-01, 1.872e-01, 6.067e-02, 3.762e-02), r);\n\tr = MulAdd(s0_3, M4(1.341e-01, 1.082e-01, -4.460e-02, -1.008e-02, -1.262e-01, -7.942e-02, 5.610e-02, 4.418e-02, -1.725e-01, -1.158e-01, 6.377e-03, -1.171e-01, -3.447e-02, 4.459e-02, 2.822e-04, -7.623e-02), r);\n\tr = MulAdd(s0_4, M4(1.994e-01, -2.251e-01, -2.432e-01, 2.467e-02, 3.717e-02, 3.275e-01, 2.005e-01, 1.427e-01, 1.122e-01, 2.864e-01, 1.478e-01, 3.701e-01, 3.111e-01, -1.704e-01, -1.410e-01, -7.490e-01), r);\n\tr = MulAdd(s0_5, M4(-1.392e-01, -2.284e-02, 2.819e-01, -5.560e-02, -2.624e-01, 7.282e-02, -2.417e-01, -5.534e-02, -6.351e-03, -1.714e-01, -1.505e-01, -3.035e-01, -3.580e-02, 4.429e-02, 1.628e-01, -1.101e-01), r);\n\tr = MulAdd(s0_6, M4(8.306e-04, 3.258e-02, -2.746e-02, -3.143e-02, -1.301e-02, -5.828e-02, 2.411e-03, 1.395e-02, 3.728e-02, -8.319e-02, 3.326e-02, 1.294e-01, -6.226e-02, 5.103e-02, -1.218e-02, 2.411e-01), r);\n\tr = MulAdd(s0_7, M4(-6.323e-02, -1.343e-02, 3.400e-02, -1.727e-02, 3.683e-02, 6.325e-02, 4.834e-04, 3.849e-02, 9.424e-03, -2.010e-02, -3.447e-02, -1.330e-01, -4.107e-01, -7.682e-02, 4.138e-01, 5.994e-02), r);\n\tr = MulAdd(s0_8, M4(7.556e-02, 1.846e-02, 1.847e-02, 1.057e-01, -1.140e-01, -2.834e-02, -3.141e-02, -1.045e-01, -2.025e-02, 4.729e-02, -2.822e-02, -4.072e-02, 3.368e-01, 6.871e-02, 1.184e-01, 1.536e-01), r);\n\tr = MulAdd(s1_0, M4(-6.688e-02, 2.483e-02, 1.598e-01, -4.834e-02, 2.141e-01, -4.911e-02, -4.452e-02, -4.879e-02, -9.473e-01, 6.527e-01, -6.118e-01, -2.436e-01, -3.017e-02, -3.402e-01, 1.343e-01, 9.397e-02), r);\n\tr = MulAdd(s1_1, M4(-1.330e-01, 2.557e-01, 6.838e-02, -3.936e-01, 4.806e-01, 1.828e-01, 5.073e-01, 4.502e-01, -1.404e+00, -2.954e-01, -6.745e-02, 5.594e-02, 2.640e-01, 2.330e-02, 1.331e-02, -2.700e-02), r);\n\tr = MulAdd(s1_2, M4(2.695e-01, -1.004e-01, 9.104e-02, -4.919e-01, 3.357e-01, 4.895e-02, 4.062e-01, -3.494e-02, -4.352e-01, -1.232e-01, 8.889e-03, 3.472e-01, -1.174e-01, 7.690e-02, 6.341e-02, 9.255e-02), r);\n\tr = MulAdd(s1_3, M4(1.805e-01, 2.494e-01, 3.474e-02, 3.930e-02, 2.671e-02, -1.438e-02, 7.294e-02, 4.854e-02, -2.864e+00, -5.832e-01, 4.350e-01, -4.265e-01, -2.643e-02, -6.234e-01, 1.283e-01, 5.168e-02), r);\n\tr = MulAdd(s1_4, M4(-2.192e-01, 2.982e-01, -2.860e-01, -4.050e-01, 8.612e-02, 5.008e-02, 5.366e-01, 5.256e-01, -6.222e-01, 1.169e+00, 1.897e+00, 3.009e+00, 9.105e-02, -2.369e-01, -4.718e-01, -2.725e-01), r);\n\tr = MulAdd(s1_5, M4(-7.441e-01, -1.820e-01, -5.828e-02, -6.348e-01, 5.721e-01, 1.143e-01, 2.871e-01, 3.254e-01, -1.446e-01, 1.446e-01, -8.526e-02, 7.228e-01, -9.749e-02, -1.665e-01, -1.116e-01, -2.705e-01), r);\n\tr = MulAdd(s1_6, M4(-6.357e-02, -2.576e-02, 1.277e-02, -3.956e-02, 2.724e-02, -2.141e-02, 9.778e-02, 7.199e-03, -1.153e+00, -6.945e-01, -4.788e-01, -1.246e+00, 1.909e-01, 1.315e-01, 4.454e-02, 2.678e-01), r);\n\tr = MulAdd(s1_7, M4(-1.022e-01, 1.572e-01, 9.404e-02, 6.768e-02, 2.191e-01, -3.163e-02, 1.257e-01, 1.058e-01, -6.394e-01, 7.223e-03, -6.930e-01, -2.963e-01, -2.666e-01, 3.461e-03, 2.203e-01, -1.212e-01), r);\n\tr = MulAdd(s1_8, M4(-1.179e-01, 7.311e-02, 1.371e-01, -4.039e-02, 2.171e-01, 3.131e-02, 2.219e-01, 1.564e-02, -4.895e-01, -5.067e-03, -4.528e-01, 5.694e-02, 6.858e-02, 6.808e-03, -1.017e-01, 6.675e-03), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 1.370e-02, 1.151e-02, 2.567e-03, -1.881e-03 };\n\tr = MulAdd(s0_0, M4(-6.123e-02, 9.666e-03, 4.969e-02, 3.030e-02, 1.714e-02, -3.117e-02, -9.470e-02, 2.078e-03, 4.109e-02, -5.560e-02, 3.757e-02, -3.667e-03, -3.500e-02, -8.151e-02, 1.104e-01, -1.219e-01), r);\n\tr = MulAdd(s0_1, M4(9.596e-02, -6.361e-02, 1.162e-02, -3.138e-02, -1.277e-02, -4.005e-02, 1.805e-02, -1.459e-02, -7.903e-03, 1.138e-02, 1.542e-02, -2.357e-02, -1.421e-01, -2.953e-01, 1.322e-01, 6.480e-03), r);\n\tr = MulAdd(s0_2, M4(1.571e-01, -1.081e-01, 1.345e-01, -5.616e-02, -1.211e-02, 4.515e-02, 1.797e-02, 6.143e-02, -9.605e-02, 7.782e-02, -1.421e-01, 3.195e-02, 1.841e-01, -7.735e-02, 1.082e-01, 1.785e-02), r);\n\tr = MulAdd(s0_3, M4(1.739e-03, -4.187e-02, 1.093e-01, 1.042e-01, -6.538e-03, 5.025e-02, -7.052e-03, -1.033e-01, -1.394e-01, -4.638e-01, 4.354e-02, -1.188e-02, 7.809e-04, 2.484e-01, -8.330e-01, -2.787e-01), r);\n\tr = MulAdd(s0_4, M4(-6.489e-03, -6.309e-01, 7.169e-01, 1.557e-01, 1.478e-01, 2.977e-01, -2.818e-01, 5.129e-02, 7.598e-01, 8.124e-01, -1.262e-02, -1.325e-01, -2.764e-01, 3.485e-01, 4.717e-01, -2.467e-01), r);\n\tr = MulAdd(s0_5, M4(2.022e-02, -1.396e-01, 1.865e-01, 1.568e-02, 3.924e-01, -2.466e-01, 4.990e-01, 3.971e-02, -1.176e-01, 1.792e-01, -2.861e-01, 3.555e-02, -1.428e-01, 2.528e-01, -2.085e-01, -1.311e-01), r);\n\tr = MulAdd(s0_6, M4(3.340e-02, -1.203e-01, 1.014e-01, 1.154e-01, -9.031e-03, -5.586e-02, -5.700e-03, 2.391e-02, -3.509e-01, 6.729e-02, 1.004e-01, -3.277e-01, 1.026e-01, 3.286e-03, -6.603e-02, -3.238e-03), r);\n\tr = MulAdd(s0_7, M4(-6.854e-01, 1.013e-01, -6.298e-02, -5.464e-01, 2.486e-01, -2.186e-01, 3.986e-02, 3.800e-01, -1.267e-01, 1.037e-01, 1.538e-01, -2.069e-01, 9.431e-02, 5.337e-02, -8.507e-02, 2.015e-01), r);\n\tr = MulAdd(s0_8, M4(-5.009e-03, 1.493e-01, -3.010e-02, -2.429e-02, -3.137e-01, -2.276e-01, 1.556e-01, 1.452e-02, 2.063e-01, 3.699e-02, -1.675e-03, 8.221e-02, -6.732e-02, 8.296e-02, -8.474e-02, -1.458e-01), r);\n\tr = MulAdd(s1_0, M4(-3.003e-02, -9.777e-03, 1.239e-02, -3.907e-02, 1.841e-01, -8.959e-02, 9.257e-02, 1.333e-01, 5.703e-04, -1.367e-01, -1.026e-01, 6.398e-02, 1.262e-02, 1.101e-02, 4.291e-02, -4.238e-02), r);\n\tr = MulAdd(s1_1, M4(5.516e-02, 9.884e-04, -5.383e-02, -1.048e-02, 2.529e-01, 9.819e-02, 1.255e-01, 3.149e-02, -8.249e-02, -1.386e-02, 6.214e-02, 2.957e-02, 1.001e-01, 1.590e-01, 1.159e-02, 5.273e-02), r);\n\tr = MulAdd(s1_2, M4(4.571e-02, -6.277e-03, 1.496e-01, -4.044e-02, 4.089e-02, -3.801e-02, -3.690e-02, -1.037e-01, -6.031e-02, 2.117e-03, -9.644e-02, 6.392e-02, 5.093e-02, -2.512e-02, 1.131e-01, 1.304e-01), r);\n\tr = MulAdd(s1_3, M4(-3.118e-02, 2.185e-02, 1.763e-01, 8.327e-02, 6.337e-02, 8.724e-02, 6.808e-02, -4.070e-01, -6.922e-02, -2.417e-01, -1.175e-01, -1.845e-01, -3.773e-03, -1.869e-01, -9.345e-02, -2.340e-01), r);\n\tr = MulAdd(s1_4, M4(-1.159e-01, -4.476e-01, 2.989e-01, 2.794e-01, 5.756e-01, -4.803e-01, -5.979e-02, -1.959e-01, 5.261e-02, -2.399e-01, -6.616e-02, -9.243e-01, 4.622e-01, 1.139e-01, 2.482e-01, 2.254e-01), r);\n\tr = MulAdd(s1_5, M4(1.064e-01, -1.989e-02, 8.581e-02, 3.218e-02, 3.344e-01, -5.684e-01, 4.009e-01, 4.482e-01, 7.737e-02, 8.716e-02, -1.382e-01, -7.145e-02, -1.225e-01, 1.471e-01, -1.866e-01, 3.674e-02), r);\n\tr = MulAdd(s1_6, M4(5.376e-02, -6.192e-03, -1.760e-01, 7.590e-02, -3.279e-02, -1.888e-01, 2.057e-01, 2.114e-01, -3.941e-01, 5.584e-03, 9.400e-03, -4.289e-01, -2.289e-01, 1.880e-01, 3.184e-02, -4.442e-01), r);\n\tr = MulAdd(s1_7, M4(-4.174e-01, -1.344e-01, 3.866e-02, 4.521e-02, -4.215e-01, 1.479e-01, 2.476e-01, -7.051e-01, -4.153e-01, 3.373e-01, 8.098e-02, -6.680e-01, 3.920e-01, -1.023e-01, -2.166e-02, 3.816e-01), r);\n\tr = MulAdd(s1_8, M4(-3.441e-02, 3.404e-03, -4.958e-02, 9.652e-03, -1.930e-02, -2.470e-01, 1.610e-01, 1.112e-01, 2.574e-02, 2.310e-01, 3.643e-02, -5.044e-02, 7.788e-02, 1.923e-03, -7.115e-02, -6.575e-03), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 7.249e-03, 2.949e-03, 5.297e-03, 3.693e-03 };\n\tr = MulAdd(s0_0, M4(2.376e-02, 2.931e-02, 7.304e-02, -5.238e-02, -6.500e-03, -3.887e-02, 2.506e-02, 5.201e-03, 5.599e-02, -1.951e-01, -3.847e-01, 8.685e-02, -1.106e-01, -3.954e-02, 1.571e-01, 2.293e-02), r);\n\tr = MulAdd(s0_1, M4(-2.738e-02, 1.554e-01, 1.120e-01, 1.856e-02, 9.513e-03, -2.222e-01, -2.174e-01, -1.065e-02, 3.001e-02, 7.638e-02, -7.497e-02, -2.727e-02, -1.521e-02, 1.843e-01, 3.547e-01, -1.642e-02), r);\n\tr = MulAdd(s0_2, M4(-2.533e-02, -1.959e-02, -6.274e-02, 8.121e-03, -8.703e-03, 5.091e-02, 6.548e-02, 1.988e-02, 4.089e-02, -4.827e-02, -4.089e-02, -4.361e-02, -1.112e-02, -1.101e-02, 2.968e-02, -2.196e-03), r);\n\tr = MulAdd(s0_3, M4(1.813e-02, -2.087e-01, -2.474e-01, -1.066e-01, 2.549e-01, 6.466e-01, 3.169e-01, -1.109e-01, -1.551e-02, -3.119e-01, -3.959e-01, 2.141e-01, 1.121e-01, 3.268e-01, 1.038e-01, -5.818e-02), r);\n\tr = MulAdd(s0_4, M4(-3.147e-01, 2.716e-01, 1.304e-01, 3.887e-01, 9.396e-02, -9.787e-02, -1.596e-01, -7.138e-02, -2.462e-01, -3.027e-01, 6.980e-01, -1.546e-01, 3.730e-02, -7.502e-02, -4.408e-02, 3.814e-02), r);\n\tr = MulAdd(s0_5, M4(-4.177e-02, -1.326e-02, -7.497e-02, 1.168e-03, 5.595e-03, 3.603e-02, 2.589e-02, -2.179e-02, 1.998e-02, -3.544e-03, 1.125e-01, 2.648e-03, -2.417e-02, -1.876e-02, 4.009e-02, 5.481e-02), r);\n\tr = MulAdd(s0_6, M4(-7.181e-02, -2.968e-02, -3.169e-02, -1.899e-02, -3.692e-02, -2.156e-02, 9.595e-02, 1.055e-01, -1.274e-01, -2.576e-02, 8.706e-02, 1.895e-01, 6.316e-04, -4.574e-02, 2.201e-02, 1.199e-01), r);\n\tr = MulAdd(s0_7, M4(-2.193e-01, 1.563e-02, 1.287e-01, 2.403e-01, 2.222e-01, -1.748e-02, 1.486e-02, -7.685e-02, 4.971e-01, 2.920e-01, -2.253e-01, -8.145e-01, 3.018e-01, -4.559e-02, -1.509e-01, -3.003e-01), r);\n\tr = MulAdd(s0_8, M4(1.685e-02, -1.082e-02, 3.539e-03, -2.765e-02, -5.968e-03, -4.628e-03, 3.847e-02, 6.426e-02, -6.284e-02, 5.455e-02, -3.291e-02, 1.636e-01, 5.828e-02, -5.613e-02, -4.404e-02, -1.715e-02), r);\n\tr = MulAdd(s1_0, M4(1.875e-02, 7.150e-02, 3.015e-02, -4.917e-02, 9.333e-03, -1.519e-01, -1.153e-01, 4.344e-02, -1.603e-02, -4.775e-02, -4.484e-02, 6.567e-02, -6.714e-02, 2.569e-01, 4.638e-01, 3.038e-02), r);\n\tr = MulAdd(s1_1, M4(-4.046e-02, 1.372e-01, 2.476e-01, 6.565e-02, 6.481e-04, -1.529e-02, 1.376e-02, 1.367e-02, 2.941e-04, 1.423e-01, 2.311e-01, 7.538e-03, -6.762e-02, -3.992e-01, -1.160e-02, 3.123e-02), r);\n\tr = MulAdd(s1_2, M4(-3.926e-02, 1.709e-04, -4.761e-02, -8.731e-03, 5.123e-03, 7.039e-02, 1.061e-01, -1.322e-03, 4.069e-02, -1.182e-01, -3.698e-04, -7.746e-02, -3.827e-02, 9.957e-02, 9.991e-02, 5.215e-02), r);\n\tr = MulAdd(s1_3, M4(-1.865e-01, -9.784e-01, -5.871e-01, 1.384e-01, 2.097e-01, -1.229e-01, -4.912e-01, -4.254e-02, 3.395e-04, -8.968e-02, -6.923e-02, -4.916e-02, 2.424e-01, 7.730e-01, 2.573e-01, -2.380e-01), r);\n\tr = MulAdd(s1_4, M4(-9.293e-01, 6.176e-01, 1.970e-01, 3.467e-01, 4.341e-01, 9.866e-01, 3.035e-01, -1.062e-01, -1.501e-01, 2.709e-01, 1.991e-01, -2.164e-01, 2.881e-01, -1.696e-01, -4.141e-01, -1.004e+00), r);\n\tr = MulAdd(s1_5, M4(-8.323e-02, -1.285e-02, -3.468e-02, 1.551e-01, 1.330e-01, -1.238e-01, -1.675e-03, 5.588e-02, 2.128e-01, -2.327e-01, -2.891e-02, 1.567e-01, -1.448e-01, 8.781e-02, 3.254e-02, 7.142e-02), r);\n\tr = MulAdd(s1_6, M4(1.231e-01, 5.139e-02, -9.426e-02, -2.822e-01, 1.761e-03, 6.853e-03, 1.165e-01, 7.861e-02, -9.715e-03, 5.489e-03, -1.066e-02, -8.332e-03, -9.111e-02, 3.911e-02, 1.757e-01, 2.222e-01), r);\n\tr = MulAdd(s1_7, M4(2.275e-02, 1.199e-01, 5.904e-02, -2.051e-01, 6.950e-01, 1.592e-02, -9.888e-02, -6.701e-01, -9.096e-02, 3.203e-02, 1.204e-01, 2.153e-01, 1.448e-01, -5.225e-03, 6.786e-02, 2.005e-02), r);\n\tr = MulAdd(s1_8, M4(-3.290e-02, -3.758e-02, -3.158e-02, 8.713e-02, 3.917e-02, 4.275e-02, -2.450e-02, 3.970e-02, 1.928e-01, 5.498e-02, -5.673e-02, -3.743e-01, 4.981e-02, -1.785e-02, 1.958e-02, 3.487e-02), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 6\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 2.510e-03, 4.409e-03, 2.891e-03, 4.977e-03 };\n\tr = MulAdd(s0_0, M4(2.340e-02, 8.171e-02, -1.124e-01, -5.065e-02, -5.505e-02, -5.540e-02, -3.000e-03, -1.346e-02, 3.800e-02, 4.944e-02, -2.084e-02, 6.388e-03, 8.566e-02, 2.480e-02, 1.184e-01, -1.075e-04), r);\n\tr = MulAdd(s0_1, M4(-2.188e-02, -2.056e-01, 1.480e-02, -7.451e-02, 5.240e-02, 4.098e-02, -4.668e-03, 1.810e-02, -2.533e-02, -6.403e-02, 1.984e-02, -5.716e-02, -3.356e-03, -2.173e-01, 1.218e-01, 1.179e-01), r);\n\tr = MulAdd(s0_2, M4(7.330e-03, 2.521e-02, 1.372e-02, 3.411e-02, -1.438e-02, -1.009e-02, 7.676e-03, -1.712e-02, 5.980e-03, 2.040e-02, -8.766e-03, 3.442e-02, -1.623e-02, -2.557e-02, -6.086e-03, 5.413e-04), r);\n\tr = MulAdd(s0_3, M4(1.754e-01, 6.364e-02, 2.842e-01, 2.378e-01, -1.684e-01, -1.911e-02, -3.838e-01, -2.622e-02, 2.065e-01, 3.951e-02, 4.217e-01, 4.374e-02, -1.028e-02, 2.417e-02, -1.595e-02, 6.305e-02), r);\n\tr = MulAdd(s0_4, M4(-5.620e-02, -8.609e-02, -1.256e-01, -3.166e-01, -1.712e-01, -1.602e-01, -1.577e-01, -4.901e-01, -5.012e-02, 1.082e-01, -7.271e-02, 4.072e-01, -7.789e-02, -1.725e-01, -1.397e-01, -4.507e-01), r);\n\tr = MulAdd(s0_5, M4(1.401e-02, 4.716e-02, 1.486e-02, 4.642e-02, 1.131e-02, 3.865e-02, -9.865e-03, 9.301e-02, 3.441e-03, -8.098e-03, -6.012e-03, -1.549e-01, 1.486e-02, 1.872e-02, -2.469e-03, 1.294e-02), r);\n\tr = MulAdd(s0_6, M4(-3.894e-02, -4.136e-05, -3.022e-02, 1.045e-03, -3.730e-02, -1.838e-02, -5.573e-02, -2.760e-02, 3.516e-02, 1.602e-02, 6.358e-02, 3.111e-02, -3.045e-02, -7.728e-03, -4.189e-02, -1.102e-02), r);\n\tr = MulAdd(s0_7, M4(-1.184e-02, 1.728e-02, 7.925e-03, 6.763e-02, 2.590e-03, -9.456e-03, -4.407e-02, -2.044e-02, 4.472e-02, 2.228e-02, 7.233e-02, 4.863e-02, -1.814e-02, -2.034e-03, -4.994e-02, -2.460e-02), r);\n\tr = MulAdd(s0_8, M4(-3.292e-03, -9.015e-03, -3.171e-03, -2.504e-02, 2.120e-03, 3.064e-02, 2.108e-02, 4.592e-02, 2.258e-03, -2.192e-04, -3.576e-03, 3.733e-02, -1.931e-03, -5.083e-03, 5.877e-03, -1.764e-02), r);\n\tr = MulAdd(s1_0, M4(4.321e-02, -8.135e-02, -1.567e-01, -6.888e-03, -6.542e-02, -1.656e-02, 1.236e-02, -7.563e-03, 4.657e-02, 9.222e-03, -6.696e-03, -3.545e-03, -6.401e-01, 1.189e-01, 1.509e-01, 2.417e-01), r);\n\tr = MulAdd(s1_1, M4(-2.058e-02, 1.174e-01, -2.482e-02, -8.423e-02, -1.692e-02, -1.094e-02, 3.530e-02, 1.780e-02, -9.937e-02, -9.030e-02, 2.304e-02, 1.294e-02, 7.976e-02, -3.096e-01, 1.382e-01, 2.456e-01), r);\n\tr = MulAdd(s1_2, M4(4.491e-02, -1.336e-02, 3.593e-02, -3.503e-02, -8.630e-03, -4.295e-03, -1.356e-02, 3.843e-02, 9.887e-03, 1.913e-03, 2.247e-03, 1.113e-02, -7.234e-04, -3.058e-02, 2.833e-03, -1.707e-02), r);\n\tr = MulAdd(s1_3, M4(2.007e-01, 6.756e-02, 9.393e-01, 9.057e-02, -3.701e-01, -1.729e-02, -4.136e-01, 2.233e-02, 2.783e-01, 3.590e-02, 3.564e-01, 8.342e-03, 1.333e-01, 7.944e-02, -2.312e-01, 8.354e-02), r);\n\tr = MulAdd(s1_4, M4(-3.334e-01, -2.705e-01, -4.072e-01, 3.946e-01, 5.159e-03, -5.860e-01, 1.578e-01, -3.614e-01, 5.366e-01, 4.699e-01, -3.700e-01, 9.463e-02, -4.090e-02, -9.767e-02, -7.999e-02, -4.859e-01), r);\n\tr = MulAdd(s1_5, M4(5.700e-02, 6.092e-02, 4.114e-02, -1.564e-02, -1.345e-02, 9.692e-02, 1.456e-03, 9.371e-02, -3.845e-02, -4.751e-02, -2.509e-02, -2.842e-01, 2.938e-03, 2.387e-02, -6.191e-04, -3.120e-04), r);\n\tr = MulAdd(s1_6, M4(3.888e-02, 4.969e-02, -1.851e-01, -9.866e-03, -3.527e-02, -1.377e-02, -7.594e-02, -2.619e-02, 3.259e-02, 9.636e-03, 8.622e-03, 1.788e-02, -3.505e-02, -1.048e-03, -1.329e-02, 1.425e-02), r);\n\tr = MulAdd(s1_7, M4(6.891e-03, 8.118e-02, -6.443e-02, -1.487e-01, 2.183e-02, 1.106e-03, 6.656e-02, -9.506e-02, 7.418e-04, -6.015e-02, 3.594e-01, 1.039e-02, -3.600e-02, -7.771e-03, -3.406e-02, 2.935e-02), r);\n\tr = MulAdd(s1_8, M4(-4.598e-03, -4.678e-03, 1.595e-02, -8.273e-03, 6.740e-03, 1.175e-02, -2.997e-02, -6.116e-03, -3.788e-02, -9.471e-02, -2.149e-02, 4.139e-02, -9.614e-03, -5.573e-03, -1.643e-02, -1.712e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-4x4C-NVL.hlsl",
    "content": "// CuNNy 4x4C BILINEAR RGB NVL - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-D04N04\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0\n\n#define l0(x, y) (dot(MF3(-4.174e-01, -7.873e-01, -1.763e-01), O(INPUT, float2(x, y)).rgb) + MF(1.011e+00))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 3.566e-02, -1.308e-03, -5.595e-03, -5.246e-03 };\n\tr = mad(s0_0, V4(1.222e-01, 7.038e-03, 1.179e-01, 1.876e-01), r);\n\tr = mad(s0_1, V4(1.025e-01, -2.993e-01, 3.154e-01, -1.050e-01), r);\n\tr = mad(s0_2, V4(5.656e-02, -3.117e-03, -6.665e-02, -2.044e-01), r);\n\tr = mad(s0_3, V4(-5.045e-01, -4.189e-01, -3.076e-01, -3.691e-01), r);\n\tr = mad(s0_4, V4(1.365e-01, 6.699e-01, 3.389e-01, 4.561e-01), r);\n\tr = mad(s0_5, V4(-7.690e-02, 2.655e-02, -1.044e-02, 7.271e-02), r);\n\tr = mad(s0_6, V4(1.358e-02, 3.378e-03, -1.802e-01, -1.936e-01), r);\n\tr = mad(s0_7, V4(8.227e-02, 1.550e-02, -1.820e-01, -1.670e-01), r);\n\tr = mad(s0_8, V4(9.988e-03, 1.413e-03, -2.486e-02, 3.258e-01), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -4.317e-03, 2.687e-03, -1.530e-03, 4.681e-04 };\n\tr = MulAdd(s0_0, M4(1.282e-01, 1.199e-01, 1.156e-01, -4.091e-02, -1.771e-02, -1.431e-01, -1.478e-02, 4.041e-02, -1.559e-01, 1.231e-02, -8.571e-02, 2.159e-02, -6.484e-02, 3.819e-02, -3.386e-02, -3.344e-02), r);\n\tr = MulAdd(s0_1, M4(6.131e-02, 1.493e-01, 1.954e-01, -2.565e-01, 1.570e-01, -3.852e-01, -2.313e-01, 9.262e-02, 1.038e-01, -4.169e-01, -2.446e-01, 9.953e-02, -1.830e-01, -9.774e-02, -1.498e-01, 8.626e-02), r);\n\tr = MulAdd(s0_2, M4(9.908e-02, 1.372e-01, -1.254e-02, 4.486e-03, 1.023e-01, 6.484e-02, 1.645e-01, -4.932e-02, -4.221e-02, -1.919e-01, -2.135e-02, 6.955e-02, -1.406e-01, 8.082e-02, -7.935e-02, 3.010e-02), r);\n\tr = MulAdd(s0_3, M4(-7.203e-02, -1.210e-01, 1.084e-01, -6.958e-03, 1.303e-01, 1.030e-01, -2.392e-01, -1.084e-01, 2.173e-01, -7.864e-02, -2.983e-01, -3.510e-01, -3.076e-01, 4.533e-02, 1.940e-01, 4.051e-01), r);\n\tr = MulAdd(s0_4, M4(9.270e-02, -4.072e-01, 2.338e-01, 4.098e-01, -1.440e-01, 6.971e-01, 5.515e-01, 2.682e-01, -1.401e-01, 3.504e-02, 1.366e-01, 6.149e-01, -3.330e-01, 1.880e-01, -4.170e-01, 3.244e-01), r);\n\tr = MulAdd(s0_5, M4(-5.380e-01, -7.843e-02, -1.293e-01, -9.225e-02, 1.393e-01, -2.588e-01, 4.618e-01, -2.264e-02, -5.369e-02, 1.321e-01, -3.029e-02, 7.983e-02, -1.048e-01, 3.279e-02, -5.969e-02, -3.766e-03), r);\n\tr = MulAdd(s0_6, M4(3.432e-02, 1.518e-02, 1.940e-02, -1.086e-01, 1.052e-01, -5.430e-02, -3.343e-02, 1.824e-01, -9.831e-02, 1.097e-02, 6.281e-02, 1.194e-01, 3.253e-02, 4.046e-02, -2.183e-02, -1.328e-01), r);\n\tr = MulAdd(s0_7, M4(1.538e-01, 6.796e-02, -4.870e-01, 7.139e-02, -2.497e-01, 2.916e-02, 6.191e-01, -2.650e-01, -4.194e-02, 1.782e-01, -3.431e-01, -9.707e-02, 2.173e-02, -1.150e-01, -8.162e-03, 4.551e-02), r);\n\tr = MulAdd(s0_8, M4(5.804e-02, 5.436e-02, -1.604e-01, 8.077e-02, 2.685e-01, 4.741e-02, 1.225e-01, -1.033e-01, -4.358e-02, -1.091e-01, 8.815e-02, -3.121e-02, -2.569e-02, -1.093e-02, -2.550e-02, -1.571e-02), r);\n\tr = MulAdd(s1_0, M4(8.760e-02, 1.254e-01, 9.299e-02, -1.140e-02, 4.179e-02, -1.333e-01, 3.048e-03, -3.111e-02, -6.091e-02, 6.563e-03, 4.609e-03, -4.717e-02, -6.470e-02, -5.791e-02, -5.529e-03, 8.697e-02), r);\n\tr = MulAdd(s1_1, M4(6.935e-02, 9.805e-02, 1.851e-01, -2.726e-01, 1.731e-01, -2.863e-01, -2.267e-01, -3.813e-02, 1.104e-01, -3.193e-01, -1.958e-01, 9.567e-02, 1.819e-01, -2.054e-01, 1.228e-01, 3.906e-02), r);\n\tr = MulAdd(s1_2, M4(-1.957e-01, 7.733e-02, -2.023e-01, 1.297e-01, -1.646e-01, 1.304e-01, -1.728e-02, -4.396e-02, 7.828e-02, -2.639e-01, 3.389e-02, 1.101e-01, 1.388e-01, -4.075e-03, 1.023e-01, -7.785e-03), r);\n\tr = MulAdd(s1_3, M4(-2.828e-02, -7.018e-02, 4.269e-02, -1.386e-01, 2.143e-02, 2.504e-01, -2.134e-01, -2.483e-01, 1.075e-01, -2.671e-02, -2.588e-01, -3.271e-01, 1.173e-01, -6.103e-02, 5.539e-01, 5.341e-01), r);\n\tr = MulAdd(s1_4, M4(-2.415e-01, -2.975e-01, -6.622e-02, 4.027e-01, -5.871e-01, 7.506e-01, 1.939e-02, -1.680e-01, 4.796e-01, -2.840e-01, 5.077e-01, 9.122e-02, 1.463e-01, 2.124e-01, 6.358e-02, 2.993e-01), r);\n\tr = MulAdd(s1_5, M4(4.298e-01, -1.754e-01, 5.357e-01, -1.440e-01, -4.439e-01, -3.819e-01, -1.009e-01, 2.113e-02, -2.275e-02, -1.842e-02, 1.441e-01, 6.590e-03, 2.627e-02, 3.381e-02, 9.956e-02, -1.935e-02), r);\n\tr = MulAdd(s1_6, M4(-5.557e-02, 3.378e-02, -2.451e-02, -1.718e-01, -2.037e-01, 1.631e-02, -2.822e-01, -7.724e-02, -6.657e-02, -2.282e-02, 2.673e-02, 8.716e-02, 1.291e-01, 9.472e-03, 3.810e-02, -1.134e-01), r);\n\tr = MulAdd(s1_7, M4(1.441e-01, 4.331e-02, -4.741e-01, 2.165e-01, -5.974e-01, -2.669e-02, -4.949e-02, -3.179e-01, 1.007e-01, 1.512e-01, -4.138e-02, -7.470e-02, 8.828e-02, -1.400e-01, 5.797e-02, -4.988e-03), r);\n\tr = MulAdd(s1_8, M4(-2.478e-01, 1.392e-01, -8.663e-02, -3.629e-02, 1.823e-01, 7.573e-03, -2.445e-01, -1.641e-02, -5.197e-02, -8.804e-02, 1.244e-01, 2.095e-02, 1.683e-02, -4.073e-02, -5.207e-03, -3.854e-03), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -1.043e-03, 3.601e-03, 5.622e-03, -7.848e-04 };\n\tr = MulAdd(s0_0, M4(1.921e-01, -2.132e-02, -5.460e-03, -6.681e-02, 9.988e-02, -2.228e-02, 4.719e-02, 9.124e-03, -1.072e-01, 1.506e-01, 2.070e-02, -4.671e-02, 2.244e-01, -4.895e-02, -8.150e-03, -9.520e-02), r);\n\tr = MulAdd(s0_1, M4(8.226e-02, 4.651e-02, -1.842e-01, -3.376e-02, 1.349e-01, 2.148e-02, -1.746e-01, 1.671e-02, 9.761e-02, 7.581e-02, 1.470e-01, -8.582e-02, -1.149e-01, 2.143e-02, -1.597e-01, 1.626e-01), r);\n\tr = MulAdd(s0_2, M4(-5.810e-04, -3.566e-02, 4.708e-02, -3.068e-02, 1.578e-02, 5.503e-03, 3.081e-02, -4.174e-02, 3.394e-01, 7.398e-02, -9.467e-02, -1.127e-01, -1.314e-01, 1.511e-02, 1.538e-01, -5.695e-03), r);\n\tr = MulAdd(s0_3, M4(2.959e-01, 3.316e-02, -5.716e-02, -2.233e-01, 5.020e-01, -1.416e-01, -6.082e-02, -3.393e-01, 3.292e-01, -6.813e-02, 9.009e-02, -1.638e-01, 1.190e-01, -2.728e-02, -6.042e-02, -1.360e-01), r);\n\tr = MulAdd(s0_4, M4(5.902e-01, 3.040e-01, -2.870e-01, 2.228e-02, -1.646e-01, 2.078e-02, -1.480e-01, 2.083e-01, -4.397e-01, -2.549e-01, -1.168e-01, -4.199e-01, 2.199e-01, 2.596e-02, 2.598e-02, -1.313e-01), r);\n\tr = MulAdd(s0_5, M4(1.043e-01, 1.050e-02, -5.654e-02, -1.265e-01, -1.978e-01, 3.772e-02, 2.474e-01, 1.395e-01, 2.041e-01, 6.617e-02, -2.602e-01, -1.601e-01, -5.577e-02, -1.591e-02, 2.096e-01, 2.594e-02), r);\n\tr = MulAdd(s0_6, M4(7.245e-02, 6.156e-02, 5.317e-02, -3.912e-01, 1.871e-01, -2.079e-02, -2.552e-02, -6.961e-02, 2.686e-01, 8.518e-02, -1.026e-01, -4.040e-01, -6.324e-02, 7.999e-03, 1.317e-02, 1.619e-02), r);\n\tr = MulAdd(s0_7, M4(1.240e-01, -8.349e-02, -1.258e-01, -3.269e-01, 6.624e-01, -1.357e-01, -6.738e-01, -5.998e-01, -8.375e-04, 2.226e-01, -1.880e-01, 5.678e-02, -8.383e-02, -3.455e-02, -1.399e-02, 4.540e-02), r);\n\tr = MulAdd(s0_8, M4(-3.130e-02, 9.691e-02, 1.763e-01, -1.847e-02, -1.193e-01, -7.494e-03, 1.485e-02, 1.244e-02, 9.559e-02, 3.116e-02, 8.046e-03, -1.264e-01, -2.403e-01, 6.389e-02, 2.999e-01, 1.484e-01), r);\n\tr = MulAdd(s1_0, M4(2.569e-01, -8.689e-03, -1.806e-02, -3.993e-02, 9.155e-02, -2.022e-02, 1.034e-02, -3.455e-02, -1.534e-01, 1.836e-02, -1.176e-03, 3.593e-03, 2.642e-01, -6.587e-02, -4.169e-02, -2.237e-01), r);\n\tr = MulAdd(s1_1, M4(1.398e-01, 1.020e-02, -2.478e-01, 2.747e-02, 7.152e-02, 1.835e-02, -2.013e-01, 1.151e-02, -2.586e-01, -3.622e-02, 2.529e-01, 1.465e-01, -3.973e-01, 5.907e-02, -9.450e-02, 3.761e-02), r);\n\tr = MulAdd(s1_2, M4(3.157e-02, 7.847e-03, 8.109e-03, -3.333e-02, -3.333e-02, -6.401e-03, -6.632e-03, 3.296e-02, -1.433e-02, 2.167e-02, 1.194e-01, -1.028e-01, -2.104e-01, 1.352e-02, -6.835e-02, 1.901e-01), r);\n\tr = MulAdd(s1_3, M4(3.443e-01, -1.004e-01, -6.176e-02, -3.047e-01, 4.779e-01, -7.928e-02, -8.134e-02, -4.873e-01, -1.421e-01, 3.972e-02, 7.459e-02, 2.099e-01, 1.118e-01, -1.022e-02, -8.584e-02, -1.657e-01), r);\n\tr = MulAdd(s1_4, M4(-1.721e-01, 2.625e-02, -7.292e-03, 2.646e-01, 2.505e-02, 1.479e-01, -3.357e-01, 1.088e-01, 1.016e-01, -1.902e-01, -1.622e-01, -6.326e-02, -4.305e-01, 4.763e-01, -1.357e-03, -5.685e-01), r);\n\tr = MulAdd(s1_5, M4(3.324e-03, 1.692e-02, -5.726e-02, 2.853e-02, -3.135e-01, -4.534e-03, 2.549e-01, 1.183e-01, -1.277e-01, -5.030e-02, 9.190e-02, 1.145e-01, 3.445e-01, 6.425e-02, -2.707e-01, -1.701e-01), r);\n\tr = MulAdd(s1_6, M4(2.164e-02, 1.998e-02, 1.667e-02, -6.126e-02, 2.400e-01, -9.253e-02, -4.525e-02, 8.615e-03, 5.148e-02, -1.803e-02, -7.495e-02, -7.102e-02, -2.646e-02, 6.819e-02, 1.465e-01, 1.904e-01), r);\n\tr = MulAdd(s1_7, M4(-2.339e-02, 3.350e-02, -1.274e-01, 5.525e-02, 9.120e-01, -9.074e-01, -6.856e-01, -7.422e-02, 4.849e-02, -1.377e-02, -1.409e-01, -5.792e-02, -1.044e-01, 9.079e-02, 2.520e-01, 2.053e-01), r);\n\tr = MulAdd(s1_8, M4(1.891e-02, -1.562e-02, -1.024e-02, -2.686e-02, -1.038e-01, -3.210e-02, 4.222e-01, -2.084e-01, -1.841e-01, 3.231e-02, 7.320e-02, 1.727e-01, 2.861e-01, 2.506e-02, -2.266e-01, -3.940e-01), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -6.562e-04, 7.371e-04, -4.319e-03, -8.757e-04 };\n\tr = MulAdd(s0_0, M4(-7.801e-03, 7.517e-03, 5.348e-02, 7.686e-02, -8.770e-03, 1.144e-02, -2.398e-02, 1.355e-02, -4.642e-02, 5.880e-02, 3.263e-02, 1.860e-01, -4.443e-02, -2.732e-02, -2.133e-02, -1.166e-01), r);\n\tr = MulAdd(s0_1, M4(-1.751e-02, -1.230e-02, -1.218e-01, -1.231e-01, 4.092e-03, -8.769e-03, -2.251e-03, 5.142e-02, 4.354e-03, -4.445e-02, -2.369e-01, -1.616e-01, 4.495e-03, -1.326e-01, -5.371e-01, -5.119e-01), r);\n\tr = MulAdd(s0_2, M4(3.143e-02, 2.366e-02, 8.884e-02, -1.819e-02, 2.358e-03, 3.812e-04, -4.972e-02, -5.311e-02, 1.729e-02, 1.523e-02, 7.798e-02, -1.705e-05, -2.295e-02, 6.567e-02, 1.422e-01, 1.890e-01), r);\n\tr = MulAdd(s0_3, M4(2.363e-02, 1.555e-02, -1.307e-01, -8.190e-02, 1.026e-02, 9.724e-03, 5.358e-02, -2.783e-01, 7.268e-03, 1.659e-01, -5.801e-02, 3.076e-01, -1.575e-01, -9.567e-02, 3.294e-02, -7.694e-01), r);\n\tr = MulAdd(s0_4, M4(1.677e-02, -1.324e-01, 4.019e-01, -2.902e-01, -6.051e-02, -4.625e-02, 8.409e-01, 4.756e-01, -1.135e-01, -3.213e-01, 6.389e-02, -2.083e-01, -1.219e+00, 2.280e-01, 9.667e-01, -3.604e-01), r);\n\tr = MulAdd(s0_5, M4(-5.948e-02, 1.567e-01, 3.883e-02, -4.843e-03, -2.153e-02, 3.439e-02, -1.160e-01, -1.325e-02, -5.312e-02, 1.136e-01, -5.260e-02, -3.524e-02, 7.315e-02, 3.527e-01, 6.186e-01, -7.505e-02), r);\n\tr = MulAdd(s0_6, M4(-3.841e-02, 1.620e-03, 9.449e-02, -8.648e-02, -2.656e-02, -1.676e-03, 2.364e-03, -7.221e-02, -9.590e-02, 4.160e-02, -1.278e-02, -3.171e-02, 6.213e-02, 2.673e-02, -7.931e-02, 2.588e-01), r);\n\tr = MulAdd(s0_7, M4(-3.636e-02, -1.558e-01, 2.151e-01, 1.188e-01, 1.275e-01, -8.114e-02, -8.376e-02, -3.690e-02, -1.968e-02, -1.038e-01, 8.994e-02, 3.846e-02, -1.499e-01, 6.457e-01, -8.201e-02, -3.935e-01), r);\n\tr = MulAdd(s0_8, M4(-2.833e-03, 2.529e-01, -3.350e-03, -3.433e-02, 1.943e-02, -2.796e-02, 3.313e-02, 1.582e-02, 1.702e-02, 5.663e-02, -1.647e-02, -2.229e-02, -4.865e-01, 3.285e-01, -4.462e-01, -4.307e-01), r);\n\tr = MulAdd(s1_0, M4(-6.004e-02, 4.898e-03, 3.591e-02, 1.900e-01, -3.816e-02, -3.269e-02, 1.459e-01, -3.464e-03, -1.235e-02, -3.737e-02, 1.569e-02, 2.559e-01, -3.173e-04, 1.268e-02, 8.886e-03, 2.960e-02), r);\n\tr = MulAdd(s1_1, M4(-1.582e-02, -7.507e-02, -2.026e-01, 2.027e-01, -6.107e-02, 2.055e-02, -5.811e-02, 5.420e-03, 1.028e-02, -1.374e-02, -6.152e-01, -2.259e-01, -3.408e-03, -1.800e-02, 4.574e-02, -9.590e-02), r);\n\tr = MulAdd(s1_2, M4(4.210e-02, 2.126e-02, 8.277e-02, 2.079e-02, -1.733e-01, -2.483e-02, 2.686e-01, 1.498e-01, 7.352e-02, -2.511e-02, 3.159e-02, 5.775e-02, 5.942e-02, 3.383e-02, 1.274e-01, -5.928e-02), r);\n\tr = MulAdd(s1_3, M4(5.614e-02, 7.561e-02, -8.328e-02, 2.427e-01, 7.214e-02, -1.122e-01, 9.434e-02, -2.602e-01, -1.052e-02, -6.944e-02, -3.023e-02, -1.655e-01, 1.236e-03, 4.025e-03, -3.082e-02, -1.533e-01), r);\n\tr = MulAdd(s1_4, M4(6.675e-01, -2.254e-01, 1.173e+00, -8.261e-02, 5.655e-01, -2.000e-01, 8.301e-01, 1.458e+00, -2.497e-01, -1.091e+00, -4.698e-01, -1.876e-01, -3.358e-02, -2.854e-01, 5.032e-01, -1.558e-01), r);\n\tr = MulAdd(s1_5, M4(-1.444e-02, 1.502e-01, -4.221e-02, -4.864e-02, 3.236e-01, -2.572e-01, 1.344e-01, 8.562e-02, -1.030e-01, 2.690e-01, 1.238e-01, 3.309e-02, -3.849e-02, 1.860e-01, 6.528e-03, 2.840e-02), r);\n\tr = MulAdd(s1_6, M4(-1.161e-01, 5.405e-02, -3.101e-02, -1.009e-01, -9.594e-02, -1.207e-02, -3.836e-02, -6.894e-02, -1.770e-02, -2.958e-02, 8.484e-02, -2.284e-02, 2.585e-04, -2.764e-02, 4.972e-02, -5.968e-02), r);\n\tr = MulAdd(s1_7, M4(-4.113e-02, -1.948e-01, -2.728e-02, -3.142e-02, -2.894e-01, -1.111e-01, 7.492e-02, -2.892e-02, 9.054e-02, 4.350e-02, 2.183e-01, 1.489e-01, 1.167e-02, -6.678e-02, 3.696e-02, -1.315e-02), r);\n\tr = MulAdd(s1_8, M4(2.532e-02, 4.585e-02, -3.694e-02, -6.244e-02, -1.673e-01, 6.180e-02, -4.475e-02, 1.028e-02, -1.658e-02, 8.923e-02, 1.711e-02, 3.037e-03, 4.651e-02, 1.652e-01, 7.863e-03, -3.387e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -3.709e-04, 2.029e-04, -3.042e-03, -2.970e-04 };\n\tr = MulAdd(s0_0, M4(-1.087e-01, -5.083e-02, 3.146e-01, -4.241e-02, 4.462e-02, -4.358e-02, -1.562e-01, -2.609e-03, 5.918e-02, -2.526e-02, -3.132e-02, -1.150e-02, -8.799e-03, 3.070e-02, -1.680e-02, -1.046e-02), r);\n\tr = MulAdd(s0_1, M4(1.762e-01, 8.784e-01, -2.704e+00, -1.565e+00, -1.473e-01, -5.723e-01, 7.838e-02, -7.420e-03, -1.769e-01, -2.041e-01, -1.783e-03, -4.944e-03, 1.304e-02, 2.646e-01, -1.708e-01, 7.483e-03), r);\n\tr = MulAdd(s0_2, M4(-1.907e-01, 1.514e-01, -3.657e-01, -5.840e-01, -4.943e-02, -1.014e-02, -2.869e-03, 6.488e-03, 2.266e-02, -3.850e-02, 6.125e-03, 1.899e-02, -3.541e-02, -2.011e-01, 1.567e-01, 1.008e-02), r);\n\tr = MulAdd(s0_3, M4(-3.061e-01, -1.768e-01, 9.163e-02, -2.243e-01, 4.945e-02, 1.106e-01, -1.137e-01, 1.755e-02, 2.640e-01, -9.298e-02, -1.704e-01, 3.935e-02, 1.506e-01, -3.284e-02, 4.719e-02, 5.543e-02), r);\n\tr = MulAdd(s0_4, M4(-4.579e-01, -6.198e-02, -9.889e-01, -4.446e-01, -1.612e-01, 1.518e-01, 2.588e-01, 1.075e-02, -1.527e+00, -7.923e-01, 8.120e-02, -1.116e-01, -2.079e-01, -1.206e-01, -4.422e-01, -1.951e-01), r);\n\tr = MulAdd(s0_5, M4(1.064e-01, -1.684e-01, 2.316e-01, 4.211e-01, -9.153e-02, 9.155e-02, -7.649e-02, -1.385e-01, 9.422e-02, -1.631e-01, 8.278e-02, 3.318e-01, 7.284e-02, 3.489e-01, -2.303e-02, -6.554e-01), r);\n\tr = MulAdd(s0_6, M4(-6.320e-02, -4.390e-02, 1.453e-02, 3.187e-02, 2.166e-02, 2.423e-03, 1.573e-03, -2.226e-02, 1.401e-01, 2.026e-01, -2.249e-01, 6.471e-02, 3.593e-02, -1.575e-02, -3.186e-02, 1.339e-02), r);\n\tr = MulAdd(s0_7, M4(2.778e-02, 7.495e-02, -1.086e-01, 8.862e-02, -2.352e-02, 1.477e-02, 2.741e-02, 4.345e-02, -2.865e-01, 9.405e-02, 1.880e-01, -3.610e-01, -7.797e-02, -5.710e-03, 3.386e-02, 2.830e-02), r);\n\tr = MulAdd(s0_8, M4(-3.734e-02, 3.357e-02, 5.657e-03, -1.596e-01, -7.661e-03, 1.603e-02, -3.137e-02, -7.023e-03, 6.522e-03, -2.715e-02, 2.765e-02, 4.724e-02, 1.922e-02, 3.944e-02, -8.276e-02, -1.915e-02), r);\n\tr = MulAdd(s1_0, M4(-7.121e-02, -2.276e-02, 7.266e-02, -4.411e-03, -5.600e-01, 4.502e-01, -1.817e-01, -2.906e-01, -5.675e-02, 2.653e-02, 3.284e-02, -1.925e-03, -4.729e-03, -1.554e-03, -6.081e-03, -2.195e-02), r);\n\tr = MulAdd(s1_1, M4(2.212e-01, 3.154e-01, -2.765e-01, 4.432e-02, 1.402e+00, 2.159e-01, 4.402e-01, 2.537e-01, 6.697e-02, 1.207e-01, -5.192e-02, 2.638e-02, 5.366e-02, 5.855e-02, -3.687e-02, 4.389e-03), r);\n\tr = MulAdd(s1_2, M4(3.137e-02, -1.157e-01, 9.497e-02, -3.724e-02, 5.241e-02, 7.793e-02, 2.277e-04, -4.033e-01, 1.432e-02, 4.622e-02, -1.636e-02, -5.840e-03, -1.593e-02, -7.447e-02, 3.943e-02, -3.517e-03), r);\n\tr = MulAdd(s1_3, M4(-1.209e-02, -1.350e-01, 3.018e-01, 1.233e-01, -1.262e-03, 2.194e-01, -2.919e-01, -8.031e-03, 4.620e-03, 5.318e-02, 1.247e-02, -4.260e-02, 7.155e-02, 3.256e-02, -9.839e-02, -6.741e-04), r);\n\tr = MulAdd(s1_4, M4(3.291e-01, 2.397e-01, -2.820e-01, 5.703e-01, 7.831e-03, 5.816e-02, -1.696e-02, -1.957e-01, -1.851e-01, 3.696e-02, -2.611e-01, 7.039e-03, -1.562e-01, -7.676e-01, 9.080e-01, 7.823e-02), r);\n\tr = MulAdd(s1_5, M4(9.918e-03, 6.364e-02, 3.364e-02, -3.291e-01, 1.393e-02, 3.139e-02, 1.701e-02, -5.675e-02, 5.085e-02, -2.050e-01, 1.160e-01, 4.875e-02, -1.189e-01, 2.310e-01, -1.353e-01, 2.046e-02), r);\n\tr = MulAdd(s1_6, M4(-5.477e-03, -1.704e-02, 9.510e-03, -1.701e-02, 1.391e-02, -8.760e-03, -3.355e-02, -6.898e-03, -9.203e-03, -2.442e-02, 7.547e-03, 1.817e-02, 1.871e-02, -1.149e-02, 6.458e-02, 1.403e-02), r);\n\tr = MulAdd(s1_7, M4(-5.073e-03, -5.454e-02, -2.710e-02, 1.292e-02, 2.458e-02, 1.739e-02, -2.319e-03, 3.865e-02, 5.399e-02, -1.176e-02, -1.315e-01, 1.489e-01, -7.903e-02, 8.120e-02, 4.749e-02, 1.961e-01), r);\n\tr = MulAdd(s1_8, M4(4.163e-02, -1.603e-02, 8.659e-03, 1.023e-01, 5.233e-03, -2.900e-03, -5.293e-03, -5.829e-03, -1.453e-02, 2.467e-02, 7.198e-02, -2.407e-01, -4.023e-02, 1.009e-01, -1.560e-01, -1.567e-01), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 6\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -3.259e-04, -3.197e-04, 4.954e-04, 4.568e-04 };\n\tr = MulAdd(s0_0, M4(-6.857e-02, -6.042e-02, 3.293e-03, -2.389e-03, -1.606e-01, -1.556e-02, -5.115e-02, -4.602e-02, -3.762e-02, 1.994e-02, -2.370e-02, 3.558e-02, -7.142e-01, 8.184e-01, -1.361e-01, 1.228e-01), r);\n\tr = MulAdd(s0_1, M4(-1.887e-01, -2.260e-01, 1.293e-02, -1.757e-02, 1.257e-01, 1.304e-01, -4.525e-02, 4.471e-02, 6.895e-01, -4.096e-01, 4.096e-02, 1.817e-02, -1.343e-01, -4.170e-01, 3.991e-03, 1.516e-03), r);\n\tr = MulAdd(s0_2, M4(-2.667e-01, -8.692e-02, 1.481e-01, -1.466e-01, 6.142e-02, -2.084e-02, 1.942e-02, 6.700e-04, 3.942e-02, 3.109e-01, -1.323e-02, 2.240e-02, -2.306e-02, -4.749e-02, -1.155e-02, 1.843e-03), r);\n\tr = MulAdd(s0_3, M4(-1.004e-01, -1.184e-02, -8.590e-02, -1.018e-01, 6.862e-02, -4.700e-02, -1.537e-01, -1.096e-01, -1.228e-01, 1.462e-02, -1.715e-01, 1.862e-02, 3.668e-01, -1.138e-01, 8.494e-04, 6.113e-01), r);\n\tr = MulAdd(s0_4, M4(4.389e-01, -5.527e-01, -4.972e-01, -7.620e-01, 1.684e-01, 5.375e-02, 1.032e+00, 5.723e-01, 4.427e-02, -2.447e-01, 1.132e+00, -5.297e-01, 1.150e-01, 3.877e-01, 1.224e-01, 1.294e-01), r);\n\tr = MulAdd(s0_5, M4(-1.023e+00, 1.567e+00, -9.747e-01, 1.051e+00, 1.537e-02, 1.993e-01, -1.679e-01, 1.139e-01, -7.358e-02, -1.782e-01, -1.938e-01, 4.419e-02, 2.001e-02, 5.881e-02, 8.971e-03, 3.368e-03), r);\n\tr = MulAdd(s0_6, M4(-5.126e-03, 1.449e-02, -7.018e-02, 2.929e-02, 4.748e-02, -4.443e-03, -5.791e-02, -3.490e-02, 3.817e-02, 1.007e-02, -5.501e-02, -1.488e-02, -8.848e-03, 4.884e-02, -6.548e-02, 3.392e-02), r);\n\tr = MulAdd(s0_7, M4(-4.449e-02, 7.313e-02, 3.311e-01, 3.138e-02, -6.466e-02, 5.666e-02, 1.929e-01, 8.274e-02, 3.994e-02, 2.105e-02, -1.821e-01, -1.539e-02, -9.333e-03, -4.728e-02, 6.975e-03, -3.292e-03), r);\n\tr = MulAdd(s0_8, M4(2.038e-01, -2.356e-01, -1.987e-01, -3.746e-02, -1.499e-02, -7.007e-02, -9.546e-02, 1.905e-02, -9.802e-03, 1.990e-02, 2.140e-02, -8.164e-03, 5.109e-03, -2.081e-02, -2.386e-02, 1.183e-02), r);\n\tr = MulAdd(s1_0, M4(-7.067e-02, -4.613e-02, -5.433e-04, -2.191e-02, -1.125e-01, -3.650e-02, -1.298e-02, -3.479e-02, -1.118e-01, -1.521e-02, -4.731e-03, -7.478e-03, 1.802e-01, 4.872e-02, -1.599e-03, -1.452e-02), r);\n\tr = MulAdd(s1_1, M4(-2.920e-01, -1.831e-01, -1.305e-02, 4.031e-02, 1.989e-01, 3.120e-03, 2.025e-02, 5.432e-02, 2.607e-01, 2.403e-02, 1.863e-02, 8.423e-02, -3.372e-01, -1.327e-01, -1.248e-01, -1.247e-01), r);\n\tr = MulAdd(s1_2, M4(-9.286e-02, -1.948e-01, -8.532e-03, 7.416e-03, 4.578e-02, 1.581e-01, 1.473e-03, -3.796e-02, 1.011e-01, 2.393e-01, 2.742e-02, -4.224e-02, -9.579e-03, -9.888e-02, -2.065e-03, 7.685e-03), r);\n\tr = MulAdd(s1_3, M4(-2.056e-01, -3.479e-02, -2.666e-01, -5.344e-02, 1.579e-01, -6.091e-02, -1.655e-01, -1.575e-01, -8.230e-02, -4.748e-02, -1.304e-01, -7.186e-02, 2.953e-01, 6.950e-02, 1.865e-01, 7.567e-02), r);\n\tr = MulAdd(s1_4, M4(3.408e-01, -1.054e-01, -2.613e-01, -6.084e-01, 3.193e-01, 6.366e-01, 4.251e-01, 4.066e-01, -3.742e-01, -8.521e-02, 5.906e-01, 1.870e-01, 2.044e-02, 2.495e-01, 1.046e-01, 3.018e-01), r);\n\tr = MulAdd(s1_5, M4(4.748e-03, 2.086e-01, 4.231e-03, -7.764e-03, 3.933e-02, 3.446e-03, -3.431e-02, 8.415e-02, -3.798e-02, -3.428e-01, -7.206e-02, 2.392e-01, 2.157e-02, 2.692e-02, 3.313e-02, 1.841e-02), r);\n\tr = MulAdd(s1_6, M4(1.813e-02, 2.306e-03, -3.402e-02, 1.009e-03, 4.408e-02, -2.307e-02, -3.394e-02, -3.912e-02, 3.822e-02, -1.051e-02, -1.023e-01, -4.626e-02, -4.871e-02, 6.250e-03, 1.367e-01, 3.674e-02), r);\n\tr = MulAdd(s1_7, M4(-1.170e-02, 3.747e-02, 1.548e-01, 1.243e-01, -1.074e-01, -9.848e-03, 2.627e-01, 1.132e-01, 4.550e-02, 5.050e-02, -1.194e-01, -6.091e-02, -2.180e-02, -6.381e-02, -5.949e-02, 1.580e-02), r);\n\tr = MulAdd(s1_8, M4(-1.146e-04, -1.852e-02, -1.515e-02, 2.488e-02, -1.877e-02, -7.739e-02, -6.812e-02, 7.656e-03, 2.688e-02, 5.650e-02, 4.285e-02, -3.270e-02, 1.163e-03, 8.328e-04, -1.998e-02, -2.282e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-4x8C-NVL-DN.hlsl",
    "content": "// CuNNy 4x8C BILINEAR RGB NVL DN - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-DN-D08N04\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t3;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0, t1\n\n#define l0(x, y) (dot(MF3(2.214e-01, 4.385e-01, 1.006e-01), O(INPUT, float2(x, y)).rgb) + MF(-6.858e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 2.880e-04, 1.418e-02, 1.413e-02, -1.036e-01 };\n\tr = mad(s0_0, V4(-2.401e-02, 1.817e-03, -1.218e-01, 2.796e-02), r);\n\tr = mad(s0_1, V4(3.256e-02, 3.929e-03, -5.850e-02, -5.602e-02), r);\n\tr = mad(s0_2, V4(4.497e-04, -1.812e-02, 5.241e-02, 3.698e-02), r);\n\tr = mad(s0_3, V4(5.371e-01, -2.302e-01, -1.373e-01, -4.038e-03), r);\n\tr = mad(s0_4, V4(1.565e-01, -6.067e-02, 3.397e-01, -3.741e-01), r);\n\tr = mad(s0_5, V4(-2.095e-03, 4.044e-02, -3.770e-02, 5.665e-02), r);\n\tr = mad(s0_6, V4(-1.993e-01, -2.645e-01, -8.892e-02, 1.948e-02), r);\n\tr = mad(s0_7, V4(-4.865e-01, 5.400e-01, -1.396e-01, 1.270e-01), r);\n\tr = mad(s0_8, V4(-1.667e-02, -9.433e-03, -1.324e-02, -1.803e-03), r);\n\treturn r;\n}\n\nV4 f1(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -4.485e-04, -2.620e-04, 2.449e-02, -7.403e-04 };\n\tr = mad(s0_0, V4(-4.610e-02, -6.199e-01, 8.493e-03, -1.532e-02), r);\n\tr = mad(s0_1, V4(-7.178e-02, 5.957e-01, 1.575e-03, 1.807e-02), r);\n\tr = mad(s0_2, V4(1.106e-01, 3.625e-03, 3.713e-02, -4.124e-03), r);\n\tr = mad(s0_3, V4(1.288e-01, -5.582e-02, 5.082e-02, 1.674e-02), r);\n\tr = mad(s0_4, V4(-6.074e-01, 8.818e-02, -3.371e-01, -6.663e-01), r);\n\tr = mad(s0_5, V4(-8.030e-02, -4.780e-03, -3.421e-01, 5.358e-02), r);\n\tr = mad(s0_6, V4(4.990e-01, 7.623e-03, 1.778e-03, 2.401e-02), r);\n\tr = mad(s0_7, V4(9.546e-02, -1.656e-02, 6.935e-04, 6.387e-01), r);\n\tr = mad(s0_8, V4(-2.302e-02, 5.209e-03, 5.835e-02, -6.361e-02), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -3.046e-02, 3.515e-02, 4.880e-02, 4.740e-03 };\n\tr = MulAdd(s0_0, M4(7.103e-02, 1.495e-01, -1.731e-02, -9.952e-02, -1.539e-01, -1.103e-01, 7.099e-02, 2.023e-01, 2.681e-02, 5.202e-03, 1.954e-02, -6.822e-02, -1.650e-01, 3.710e-01, -6.020e-01, 4.879e-01), r);\n\tr = MulAdd(s0_1, M4(-1.168e-02, 2.587e-01, -4.670e-01, -3.986e-02, -1.268e-01, 3.619e-02, 5.712e-02, 1.722e-01, 4.473e-02, -1.224e-01, 8.228e-02, -3.981e-02, 4.044e-01, -3.039e-01, -3.390e-01, 5.925e-02), r);\n\tr = MulAdd(s0_2, M4(4.083e-02, 7.140e-02, -5.864e-01, 1.188e-01, 2.214e-01, -2.826e-01, 2.294e-01, -2.199e-01, -9.048e-02, 1.787e-01, -6.887e-02, -6.645e-02, -1.285e-01, -8.261e-02, -1.975e-01, 2.428e-01), r);\n\tr = MulAdd(s0_3, M4(-5.801e-02, -3.381e-02, -2.285e-01, 9.377e-02, 1.878e-01, 9.285e-02, -1.001e-01, -5.059e-02, -2.155e-02, -9.098e-02, -1.279e-02, 9.801e-02, 1.178e-01, -1.967e-01, -4.792e-02, -1.106e-01), r);\n\tr = MulAdd(s0_4, M4(3.048e-01, 2.731e-01, -2.351e-01, -1.516e-01, -1.382e-02, 1.296e-01, -9.530e-02, 2.975e-02, 2.411e-01, 2.343e-02, 1.731e-02, -2.331e-01, -2.161e-01, 4.114e-01, 4.417e-01, 1.225e+00), r);\n\tr = MulAdd(s0_5, M4(3.337e-01, 2.844e-01, 1.065e-01, -2.391e-01, -1.265e-01, -3.625e-02, -7.062e-02, 3.529e-02, 2.208e-02, -8.459e-03, -1.366e-01, -1.563e-02, -1.648e-01, -5.919e-01, 4.061e-01, -4.975e-02), r);\n\tr = MulAdd(s0_6, M4(6.213e-03, -2.020e-02, 2.520e-03, 2.167e-02, -2.361e-01, -1.421e-01, -4.579e-02, -1.353e-01, -2.883e-01, -5.900e-04, 2.720e-02, 1.591e-01, -5.120e-01, -4.253e-01, -3.397e-02, -4.633e-01), r);\n\tr = MulAdd(s0_7, M4(2.456e-01, -6.978e-02, 5.668e-02, -9.795e-03, -1.925e-01, -4.841e-02, -1.273e-02, 1.282e-02, -1.223e-01, -4.080e-02, 2.975e-02, 1.595e-01, -3.345e-01, -1.504e-01, 1.080e-01, 8.549e-01), r);\n\tr = MulAdd(s0_8, M4(8.700e-02, 1.611e-02, 8.589e-02, -3.284e-02, -1.637e-01, 2.627e-01, 1.851e-02, 2.843e-02, 1.224e-01, 6.163e-02, 4.991e-02, -1.510e-01, 1.885e-01, -5.951e-02, -3.463e-02, 2.172e-01), r);\n\tr = MulAdd(s1_0, M4(1.856e-01, -1.041e-01, 1.900e-01, 8.420e-02, -3.223e-01, 6.258e-02, -9.766e-02, -6.517e-01, 3.066e-02, -7.562e-02, 1.015e-02, -1.139e-01, 1.569e-02, -3.684e-02, -2.813e-02, 8.835e-02), r);\n\tr = MulAdd(s1_1, M4(-7.107e-02, -1.146e-01, 5.488e-01, -2.960e-01, 3.743e-01, -5.368e-01, -2.219e-01, -3.122e-01, 2.468e-02, -7.477e-01, 1.858e-01, 3.498e-01, 1.771e-03, 4.215e-03, 8.478e-02, 9.318e-02), r);\n\tr = MulAdd(s1_2, M4(-2.350e-03, -3.382e-01, 5.964e-01, -2.321e-01, 2.011e-01, 1.890e-01, -2.062e-01, -3.725e-02, -1.003e-01, -1.464e-01, 1.040e-01, 9.994e-02, -7.113e-02, -3.827e-02, -1.258e-01, -1.584e-01), r);\n\tr = MulAdd(s1_3, M4(-1.609e-01, -1.460e-01, -4.804e-03, 5.503e-02, 2.784e-01, -1.475e-02, 9.395e-02, -1.128e-01, 1.032e-02, -1.969e-01, 2.170e-01, 2.335e-01, -1.371e-01, 4.853e-02, 8.945e-03, -2.698e-01), r);\n\tr = MulAdd(s1_4, M4(7.739e-02, -1.105e-01, 3.348e-01, 1.093e-01, -7.745e-02, -1.642e-01, -2.191e-01, -2.674e-02, 4.199e-01, -3.302e-01, 1.445e-01, -2.815e-01, -3.154e-01, 6.646e-02, 8.520e-02, -1.053e-01), r);\n\tr = MulAdd(s1_5, M4(-4.165e-01, -8.545e-02, 2.291e-01, -1.042e-01, 3.791e-01, -7.209e-02, -6.332e-02, -3.174e-01, 1.038e-01, 8.122e-03, -9.715e-02, 6.808e-01, -9.362e-02, -4.634e-02, 5.184e-03, 1.295e-01), r);\n\tr = MulAdd(s1_6, M4(-8.179e-02, -8.513e-02, 4.470e-02, -7.799e-02, -1.092e-01, -1.851e-01, -1.025e-01, -4.220e-02, -3.853e-01, 3.040e-02, -9.081e-02, 1.439e-01, -2.730e-02, -5.086e-02, 5.352e-03, -5.102e-03), r);\n\tr = MulAdd(s1_7, M4(7.601e-02, -1.423e-01, 3.421e-01, 2.574e-03, 1.165e-01, 6.863e-03, 1.250e-02, -4.862e-02, -3.859e-01, -1.108e-01, 2.515e-02, 5.564e-01, 2.485e-01, 2.230e-01, -3.839e-02, 3.605e-02), r);\n\tr = MulAdd(s1_8, M4(-9.424e-02, 1.248e-01, 1.980e-01, -1.671e-01, 1.098e-01, 6.555e-02, -7.194e-02, -1.626e-01, -1.439e-01, -2.086e-01, -1.925e-02, 1.520e-01, 2.139e-01, -7.764e-02, 6.469e-02, 7.875e-03), r);\n\tr = MulAdd(s2_0, M4(4.572e-02, 3.661e-02, -3.845e-01, -1.383e-01, 1.729e-02, 1.780e-02, 3.664e-02, -6.961e-02, -9.001e-03, -1.853e-02, -6.735e-02, -1.864e-02, 1.695e-01, -1.420e-01, 2.679e-01, -1.525e-01), r);\n\tr = MulAdd(s2_1, M4(9.967e-02, -2.869e-01, -2.251e-01, 8.470e-02, 3.178e-02, -9.701e-03, 9.260e-02, 4.087e-04, -8.081e-02, 1.341e-01, 5.882e-03, 1.043e-02, 8.559e-03, 6.534e-02, -4.619e-01, -3.010e-01), r);\n\tr = MulAdd(s2_2, M4(-1.676e-02, -3.339e-01, 1.848e-01, -2.562e-01, -8.563e-02, 2.487e-02, 2.495e-01, 9.448e-02, 2.189e-02, -3.018e-02, 5.698e-02, 6.041e-02, -4.869e-02, -2.627e-02, 1.602e-01, 1.092e-01), r);\n\tr = MulAdd(s2_3, M4(6.867e-02, -1.693e-01, -1.614e-01, -1.944e-01, 1.992e-01, 1.720e-01, 2.393e-01, 1.219e-02, 4.866e-02, -1.165e-01, -1.285e-01, 2.929e-01, 2.043e-01, -1.399e-02, 1.595e-02, -2.746e-01), r);\n\tr = MulAdd(s2_4, M4(-4.477e-01, -5.696e-01, -1.760e-02, 1.362e-01, 1.472e-01, 3.113e-01, -2.419e-01, 8.650e-02, -8.358e-02, 1.081e-01, 3.881e-02, -1.400e-01, -2.071e-01, 3.977e-02, -3.149e-01, 2.525e-01), r);\n\tr = MulAdd(s2_5, M4(5.496e-02, -9.963e-02, -1.227e-01, -1.892e-01, 4.361e-02, -3.776e-01, -6.576e-01, 2.628e-01, -8.215e-02, -8.123e-02, 2.248e-03, 1.261e-01, 1.193e-01, 2.608e-01, 2.567e-01, 8.120e-02), r);\n\tr = MulAdd(s2_6, M4(-1.587e-01, -9.849e-02, 1.122e-01, -5.963e-02, -9.176e-02, 7.341e-03, 1.164e-03, -5.660e-02, 1.567e-01, -6.958e-02, -3.780e-02, 4.238e-04, -6.186e-02, 1.777e-01, 2.398e-01, 6.853e-03), r);\n\tr = MulAdd(s2_7, M4(1.062e-01, -1.498e-01, 5.492e-02, 1.108e-01, -3.248e-01, -2.901e-01, -4.360e-01, 1.128e-01, 7.346e-02, 8.659e-02, 9.740e-02, -1.434e-01, 1.538e-01, 1.349e-01, 1.408e-01, -1.367e-01), r);\n\tr = MulAdd(s2_8, M4(1.412e-01, -8.889e-02, 2.029e-02, -1.523e-01, 4.847e-01, -7.432e-01, -1.181e-01, 4.132e-01, 3.119e-02, -5.840e-02, -2.292e-02, -3.125e-02, 2.440e-02, 2.815e-02, 2.759e-01, -8.781e-02), r);\n\tr = MulAdd(s3_0, M4(2.147e-02, 2.192e-01, 2.489e-01, -3.436e-02, 1.086e-02, -2.680e-02, -9.925e-02, 3.978e-02, 1.239e-01, 3.645e-02, 5.463e-01, 5.005e-01, 1.039e-01, -1.694e-01, -3.816e-02, 3.834e-01), r);\n\tr = MulAdd(s3_1, M4(1.418e-01, 5.806e-02, 1.317e-01, 2.227e-01, 1.486e-02, -4.235e-03, -5.750e-02, -1.548e-01, -7.700e-01, 3.263e-01, -1.193e-02, 3.537e-01, -2.841e-01, 4.657e-01, -1.576e-01, -9.526e-02), r);\n\tr = MulAdd(s3_2, M4(7.641e-02, 8.195e-01, 1.080e-01, 1.814e-01, -5.471e-02, 2.211e-02, -4.212e-02, -1.249e-02, 2.469e-02, 5.436e-01, 3.805e-01, -9.622e-02, -6.358e-02, -3.739e-01, -3.504e-01, -2.627e-01), r);\n\tr = MulAdd(s3_3, M4(-9.359e-02, -1.830e-02, -7.015e-02, -7.774e-02, 2.286e-01, -6.321e-02, -5.124e-02, -2.799e-03, -5.063e-01, -1.835e-01, 3.716e-01, 1.130e+00, 3.259e-01, -2.045e-01, -1.792e-01, 4.892e-01), r);\n\tr = MulAdd(s3_4, M4(-7.478e-01, -1.192e-01, 1.022e-01, 8.111e-01, 7.253e-02, 2.280e-01, -1.116e-01, -2.828e-01, -2.364e-01, -1.233e+00, -1.125e+00, 1.750e+00, -1.215e+00, 4.973e-02, 2.070e-01, 6.996e-01), r);\n\tr = MulAdd(s3_5, M4(-4.115e-02, 3.613e-01, 2.694e-01, 4.126e-02, 7.046e-02, 6.242e-02, 9.300e-02, -1.965e-01, -3.211e-01, 8.504e-01, 2.518e-01, -5.622e-01, 5.663e-02, -1.139e-01, 1.150e-01, -1.954e-01), r);\n\tr = MulAdd(s3_6, M4(-1.870e-01, -9.168e-02, -8.947e-02, 6.127e-03, 1.163e-02, 3.733e-04, -3.330e-01, 1.935e-01, 3.424e-01, 1.313e-01, -6.732e-01, 8.256e-02, 6.713e-02, 2.980e-02, -6.912e-02, 1.715e-01), r);\n\tr = MulAdd(s3_7, M4(1.636e-01, 1.212e-01, 2.280e-02, 1.552e-01, -4.955e-01, 8.376e-01, 1.476e-01, 2.192e-01, 9.746e-01, -3.148e-01, 8.206e-01, -8.104e-01, -7.918e-02, -1.604e-01, 5.505e-02, 7.640e-02), r);\n\tr = MulAdd(s3_8, M4(1.248e-01, 2.878e-01, -4.182e-02, -9.214e-02, -1.210e-01, 4.382e-01, 8.062e-02, -3.051e-01, -1.803e-01, -3.041e-01, 1.368e-01, -1.030e-01, 2.941e-02, -2.724e-01, 3.480e-02, 1.396e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 3.015e-03, -4.690e-02, 3.573e-02, -1.486e-02 };\n\tr = MulAdd(s0_0, M4(1.574e-01, -6.104e-03, -2.288e-01, 5.024e-03, -2.149e-03, -8.674e-02, 1.209e-01, 7.107e-02, 1.242e-01, 2.312e-03, -5.300e-02, -2.285e-01, -8.824e-02, 7.402e-02, -4.447e-01, 1.117e+00), r);\n\tr = MulAdd(s0_1, M4(-5.617e-02, 3.613e-01, -4.666e-01, 1.795e-01, 1.718e-01, -1.005e-01, -2.593e-01, 4.103e-01, 2.477e-01, 1.883e-01, 3.928e-02, -3.635e-01, -7.353e-01, 3.209e-01, 2.171e-01, 3.924e-01), r);\n\tr = MulAdd(s0_2, M4(-3.304e-01, 6.332e-01, -3.898e-01, 2.704e-01, 4.110e-02, -2.786e-01, -2.513e-01, 1.800e-01, 9.402e-03, -1.975e-01, -4.040e-02, -2.047e-01, -3.239e-01, -1.623e-01, 1.001e-01, 3.053e-02), r);\n\tr = MulAdd(s0_3, M4(3.935e-01, 5.218e-02, 4.630e-02, 2.202e-02, -2.172e-01, -1.530e-02, -1.782e-01, -9.327e-02, -6.425e-02, -2.402e-02, -2.919e-02, -4.034e-02, 6.589e-01, -4.900e-02, 7.783e-02, 6.334e-01), r);\n\tr = MulAdd(s0_4, M4(-5.475e-02, 1.543e-01, -1.597e-01, -2.500e-01, 4.990e-02, 5.780e-02, 1.162e-01, 1.140e-01, -2.980e-01, -2.524e-02, -2.103e-01, 4.297e-01, 4.528e-01, -3.098e-01, -1.415e-01, 7.565e-01), r);\n\tr = MulAdd(s0_5, M4(-1.097e-01, 3.376e-01, -5.685e-01, 1.347e-01, 1.155e-01, -1.396e-01, -2.840e-01, -1.373e-01, 1.442e-01, 8.711e-02, 1.357e-01, -1.110e-01, 2.095e-01, -2.901e-01, -1.007e-01, -2.473e-01), r);\n\tr = MulAdd(s0_6, M4(-7.405e-02, 9.320e-02, -5.870e-02, -2.569e-01, 6.017e-03, -8.078e-02, -3.798e-02, 2.334e-01, 1.440e-01, -1.852e-01, -6.627e-03, 3.514e-03, -1.499e-02, -6.237e-02, 3.665e-01, 3.270e-01), r);\n\tr = MulAdd(s0_7, M4(2.443e-01, 8.076e-02, -2.143e-01, 1.120e-01, 1.187e-01, 1.317e-01, 1.811e-01, 1.918e-01, -2.164e-02, -1.829e-01, 2.105e-01, 3.085e-01, 3.155e-01, 2.801e-01, -6.834e-01, 2.861e-01), r);\n\tr = MulAdd(s0_8, M4(9.974e-03, 9.704e-02, -2.363e-01, 1.829e-01, 1.844e-02, 9.298e-02, -5.319e-02, -5.899e-02, -2.154e-01, 2.555e-02, -8.374e-02, 1.254e-01, -2.736e-01, -4.065e-02, 4.838e-02, 3.338e-02), r);\n\tr = MulAdd(s1_0, M4(-1.239e-02, -1.316e-01, 8.694e-02, -8.443e-02, -1.143e-01, -6.018e-02, -9.054e-02, 7.381e-02, 2.722e-01, 1.030e-01, -8.583e-02, -4.433e-01, -1.339e-01, 1.264e-01, 8.581e-02, -1.947e-01), r);\n\tr = MulAdd(s1_1, M4(3.030e-01, -3.527e-02, 4.665e-01, -3.372e-02, -2.301e-02, 7.308e-01, 5.938e-01, -5.901e-01, 4.766e-01, 1.081e-01, 8.809e-02, 3.482e-01, -1.938e-01, -8.091e-02, 3.649e-02, 9.321e-02), r);\n\tr = MulAdd(s1_2, M4(1.376e-01, -4.460e-01, 4.298e-01, -4.809e-02, -3.819e-01, 5.216e-01, 2.687e-01, 1.359e-01, 2.936e-01, 1.222e-02, 3.706e-01, 2.481e-01, -4.716e-02, -1.798e-02, 2.731e-02, -7.140e-02), r);\n\tr = MulAdd(s1_3, M4(1.657e-01, -3.624e-02, 1.541e-01, -5.006e-03, -4.051e-01, -9.782e-02, 3.008e-02, 1.962e-01, -6.146e-02, 1.866e-03, -3.052e-01, -2.202e-01, 1.057e-01, -1.151e-01, -6.310e-02, 3.914e-01), r);\n\tr = MulAdd(s1_4, M4(-2.629e-01, 1.029e-01, 1.812e-02, -2.950e-01, -1.191e-01, 2.580e-01, -4.833e-01, 1.095e-01, 2.309e-02, 4.519e-02, 1.086e-01, 5.362e-01, -1.349e-01, -1.278e-01, 7.109e-02, -1.992e-01), r);\n\tr = MulAdd(s1_5, M4(-1.815e-01, 2.898e-01, 3.446e-01, -1.587e-01, -6.360e-02, 1.662e-01, 5.187e-01, 1.701e-01, -2.770e-02, -5.932e-01, 2.467e-01, 3.940e-01, 1.022e-01, 1.033e-01, -5.084e-02, -6.520e-02), r);\n\tr = MulAdd(s1_6, M4(-1.494e-01, 3.180e-02, 9.864e-02, -3.409e-01, 1.397e-02, 9.932e-03, -2.110e-01, 2.636e-01, 1.353e-01, -8.495e-02, -2.680e-03, -2.287e-01, 1.136e-01, -1.047e-01, 2.910e-02, 9.922e-02), r);\n\tr = MulAdd(s1_7, M4(1.533e-01, 4.819e-04, 1.735e-01, 2.027e-01, 1.316e-01, 1.029e-01, 1.446e-01, 1.737e-01, 4.855e-02, 4.781e-02, 2.025e-01, 1.587e-01, 1.661e-01, 7.134e-02, 5.853e-02, -1.530e-01), r);\n\tr = MulAdd(s1_8, M4(-1.476e-01, -4.916e-02, 1.989e-01, 1.159e-01, 4.753e-02, 1.694e-01, 4.343e-02, -6.974e-03, 3.382e-02, 2.275e-01, 3.466e-01, -7.178e-03, -1.104e-01, 2.059e-03, -7.101e-02, 8.934e-02), r);\n\tr = MulAdd(s2_0, M4(-3.467e-01, 8.471e-04, 1.580e-01, 2.685e-01, -2.680e-02, -6.444e-02, 8.843e-02, 5.232e-03, 2.576e-02, -3.756e-02, -7.913e-03, -3.871e-02, -5.374e-02, -6.060e-02, -7.688e-02, 6.738e-01), r);\n\tr = MulAdd(s2_1, M4(-3.963e-01, 1.295e-01, 2.623e-01, 2.565e-01, -1.831e-01, -6.054e-02, 1.817e-01, -8.944e-02, 1.974e-01, -2.800e-04, -3.964e-02, 1.232e-01, -3.477e-01, 3.791e-01, 1.438e-01, -7.862e-02), r);\n\tr = MulAdd(s2_2, M4(2.540e-02, 1.123e-01, 6.461e-01, -3.856e-03, 3.373e-02, -5.719e-02, 1.556e-01, -1.100e-01, -3.499e-02, 9.146e-02, -4.624e-02, 9.774e-02, -1.148e-01, -2.280e-01, 4.977e-01, -1.568e-01), r);\n\tr = MulAdd(s2_3, M4(5.352e-02, -1.293e-01, -6.991e-03, 4.190e-01, -2.334e-03, -4.433e-02, -8.470e-02, 1.162e-01, -1.045e-01, -7.444e-02, 8.951e-02, -1.124e-01, 4.295e-01, 1.086e-01, 1.336e-01, 2.645e-01), r);\n\tr = MulAdd(s2_4, M4(-4.062e-01, -6.781e-02, 4.629e-01, -4.931e-01, -1.875e-01, 1.958e-01, -4.560e-01, -2.286e-02, -2.066e-01, 1.151e-01, -5.924e-02, 1.350e-01, -1.752e-01, 2.244e-01, -3.564e-02, -6.129e-01), r);\n\tr = MulAdd(s2_5, M4(6.644e-02, 4.611e-01, 9.200e-02, 6.845e-03, -1.628e-02, 8.352e-02, -1.119e-01, -4.386e-02, -5.822e-02, -4.769e-02, -3.224e-02, -1.235e-01, -3.296e-01, 5.835e-03, 2.231e-01, 5.535e-02), r);\n\tr = MulAdd(s2_6, M4(-2.961e-02, -5.230e-02, 5.124e-02, 6.542e-02, 2.004e-01, 1.189e-01, -1.797e-01, -1.535e-02, 6.469e-02, 1.134e-01, -1.204e-04, -7.606e-02, 2.436e-02, -1.630e-02, 1.841e-01, -2.529e-01), r);\n\tr = MulAdd(s2_7, M4(-1.147e-02, 3.246e-02, 7.626e-02, -1.013e-01, 1.075e-01, 5.871e-01, -5.227e-01, -3.076e-01, 1.609e-01, 5.768e-02, -1.912e-02, 5.898e-02, -7.530e-02, -1.307e-01, 5.828e-02, -1.456e-02), r);\n\tr = MulAdd(s2_8, M4(-7.053e-02, 8.728e-02, 1.211e-01, 1.410e-01, -2.160e-01, 9.970e-02, -5.345e-01, 1.141e-01, 8.112e-04, -4.348e-02, 9.858e-02, 2.780e-02, -1.116e-01, -2.331e-01, 1.545e-01, 7.984e-02), r);\n\tr = MulAdd(s3_0, M4(-5.412e-02, 6.012e-03, -2.395e-01, -1.209e-02, -5.734e-02, 3.058e-02, -7.202e-02, -7.514e-02, 7.241e-03, -1.702e-01, 1.020e+00, 2.997e-01, -2.173e-01, 4.518e-02, -2.703e-02, -4.087e-02), r);\n\tr = MulAdd(s3_1, M4(-5.670e-02, -9.713e-03, -2.091e-01, -1.621e-01, -5.370e-03, -5.579e-02, 1.042e-01, 2.220e-02, 4.788e-01, -6.623e-01, 5.548e-01, 8.186e-01, 2.462e-01, -7.624e-01, -9.065e-02, -1.105e-02), r);\n\tr = MulAdd(s3_2, M4(4.043e-02, -1.577e-01, -3.166e-01, -1.256e-01, -9.515e-02, -8.852e-02, -4.960e-02, 1.129e-01, 1.690e-01, 2.314e-01, -5.134e-01, 9.584e-02, -3.085e-02, 2.399e-01, -3.381e-01, -7.233e-02), r);\n\tr = MulAdd(s3_3, M4(1.750e-01, -9.450e-02, -2.230e-01, 4.190e-01, 8.900e-02, 2.306e-02, 2.783e-01, -3.295e-01, 2.697e+00, 8.855e-02, 5.728e-01, -8.682e-01, 6.085e-02, 5.010e-02, 1.343e-01, 1.137e-01), r);\n\tr = MulAdd(s3_4, M4(9.857e-02, 3.310e-01, -3.584e-01, -5.586e-01, 5.751e-01, -4.023e-01, 3.838e-01, 1.240e-01, -1.482e-01, -1.233e-01, -5.953e-01, 1.534e+00, 3.390e-01, -2.022e-02, 1.619e-01, -2.959e-01), r);\n\tr = MulAdd(s3_5, M4(1.528e-01, 1.593e-01, -1.886e-01, 2.281e-02, 2.174e-01, -8.846e-01, 5.726e-02, 7.369e-03, -1.490e-01, 3.377e-01, -4.669e-02, 1.206e-01, -1.251e-01, 2.600e-01, -2.439e-01, 2.067e-01), r);\n\tr = MulAdd(s3_6, M4(4.090e-02, -2.118e-02, -9.012e-02, -8.624e-03, 1.464e-01, 6.929e-02, 1.492e-01, -4.039e-01, 6.123e-01, 2.679e-01, -2.284e-01, -3.609e-01, -6.598e-02, 1.341e-01, -2.371e-02, -2.899e-01), r);\n\tr = MulAdd(s3_7, M4(5.189e-02, -3.928e-02, 1.670e-01, -1.536e-01, 5.066e-01, -3.768e-01, 6.577e-01, 1.140e-01, -1.537e-01, -1.941e-01, -9.152e-02, -3.571e-02, 1.068e-01, 4.803e-02, -3.180e-01, 4.361e-02), r);\n\tr = MulAdd(s3_8, M4(-8.453e-02, -1.454e-02, 3.613e-02, 8.974e-03, -1.258e-01, -5.842e-01, 3.264e-01, 2.910e-01, 1.306e-01, 4.552e-01, 4.524e-01, 1.065e-02, -1.792e-02, 1.875e-02, -2.206e-01, 2.028e-01), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 3.575e-03, 3.041e-03, 1.241e-02, -2.230e-03 };\n\tr = MulAdd(s0_0, M4(8.130e-02, -1.243e-01, -7.648e-02, -2.424e-01, -4.742e-02, -5.420e-02, 4.117e-02, 1.568e-01, -3.621e-02, 2.032e-01, 4.484e-02, 1.249e-02, -1.505e-01, 7.294e-02, 4.943e-02, -6.336e-02), r);\n\tr = MulAdd(s0_1, M4(-1.474e-01, -3.366e-01, -5.670e-01, 4.113e-02, -1.260e-01, -1.539e-01, -5.421e-02, 1.779e-01, -1.072e-01, 1.209e-01, 4.423e-02, 2.454e-01, -5.430e-02, -1.442e-01, -1.501e-02, -4.731e-02), r);\n\tr = MulAdd(s0_2, M4(6.444e-02, 1.509e-01, 1.452e-01, -2.840e-02, 9.365e-02, 2.016e-01, 1.002e-01, -3.226e-02, -1.186e-01, 1.535e-01, -1.652e-01, -1.104e-02, 4.170e-02, -4.404e-02, 1.189e-01, 1.007e-02), r);\n\tr = MulAdd(s0_3, M4(-4.618e-02, 1.024e-01, -1.723e-01, -1.354e-01, 1.981e-01, -1.992e-01, 1.670e-01, 3.857e-01, -6.927e-03, 9.087e-02, 1.176e-01, 3.314e-01, 9.860e-02, 4.009e-04, 1.061e-01, -6.930e-02), r);\n\tr = MulAdd(s0_4, M4(4.923e-01, -9.248e-02, 8.616e-03, 4.541e-02, -1.148e-01, 3.990e-03, -3.218e-02, 8.942e-02, 3.219e-02, -9.786e-02, 6.813e-02, 2.492e-01, -3.165e-01, 6.925e-02, -9.826e-02, 4.518e-01), r);\n\tr = MulAdd(s0_5, M4(2.222e-02, 1.046e-01, -2.327e-02, -7.823e-02, 3.540e-01, 3.363e-01, -4.089e-02, 1.292e-02, -2.530e-01, 4.606e-01, -6.191e-02, -3.673e-02, -2.764e-01, -1.360e-01, -2.947e-03, 2.534e-02), r);\n\tr = MulAdd(s0_6, M4(-2.067e-02, -1.566e-01, -8.968e-02, 1.386e-03, -8.841e-02, -1.077e-01, 1.646e-01, 1.987e-01, -3.098e-01, 2.764e-01, 1.935e-01, 1.847e-01, 1.116e-01, -1.514e-01, -5.175e-02, 8.710e-02), r);\n\tr = MulAdd(s0_7, M4(1.266e-02, -2.119e-01, -1.610e-01, -6.512e-02, -1.679e-01, 2.247e-01, -5.854e-02, 1.200e-02, -1.406e-01, 4.393e-01, -8.517e-02, 3.281e-02, -1.177e-01, -1.861e-01, -3.241e-01, -2.918e-02), r);\n\tr = MulAdd(s0_8, M4(-3.015e-02, -1.605e-01, -1.001e-01, 7.795e-03, -5.873e-02, -7.686e-02, -1.448e-01, -1.851e-02, -2.172e-01, 1.977e-01, -1.333e-01, -8.894e-02, -8.939e-03, 1.675e-01, -7.976e-03, 4.020e-02), r);\n\tr = MulAdd(s1_0, M4(1.165e-01, -4.833e-02, 4.750e-02, -4.032e-02, -2.287e-02, -4.825e-02, 9.058e-02, 2.136e-01, 1.009e-01, -2.133e-02, 4.162e-02, -6.816e-02, -9.863e-02, -4.160e-03, -2.467e-02, -9.096e-02), r);\n\tr = MulAdd(s1_1, M4(8.597e-02, -2.205e-01, 1.515e-01, -2.918e-02, -1.099e-01, -4.171e-02, 3.893e-04, -5.273e-03, -2.046e-02, -3.905e-03, 7.793e-04, 5.930e-02, 2.653e-02, -2.546e-01, -8.456e-02, -6.554e-02), r);\n\tr = MulAdd(s1_2, M4(-1.058e-01, 3.302e-01, 1.812e-01, 6.427e-02, -4.601e-02, -1.589e-02, 4.405e-02, -1.366e-02, -5.996e-03, -5.402e-04, 3.237e-02, -5.725e-02, -7.486e-02, 1.358e-01, 4.739e-02, -2.432e-02), r);\n\tr = MulAdd(s1_3, M4(3.333e-02, 5.179e-01, -1.939e-03, 7.798e-02, 2.011e-02, -2.959e-01, 1.135e-01, 3.122e-01, 8.651e-02, -2.708e-02, 7.183e-03, 4.554e-02, -3.342e-02, 9.136e-03, -7.067e-02, -1.867e-01), r);\n\tr = MulAdd(s1_4, M4(6.231e-01, 9.512e-01, 3.523e-01, 3.744e-01, 2.388e-01, -2.827e-01, 9.968e-02, -5.306e-02, -4.498e-02, -2.222e-01, -5.865e-02, 2.967e-02, -3.029e-01, -2.137e-01, -5.363e-01, 8.872e-02), r);\n\tr = MulAdd(s1_5, M4(-4.862e-02, 7.326e-01, 1.354e-01, 5.607e-02, 1.667e-01, -1.184e-01, -1.304e-01, 6.817e-02, 3.287e-02, 3.310e-01, 1.521e-01, -3.212e-02, -8.947e-02, 4.250e-02, -9.770e-02, -8.344e-02), r);\n\tr = MulAdd(s1_6, M4(-9.242e-04, 4.835e-03, 1.322e-01, 3.745e-02, 9.613e-02, -8.310e-03, 4.718e-02, 2.763e-02, -1.616e-02, 6.167e-02, -3.382e-02, 3.624e-02, 1.213e-02, -2.014e-01, -2.776e-03, 4.360e-02), r);\n\tr = MulAdd(s1_7, M4(-6.861e-02, 4.772e-02, -3.779e-02, 7.567e-02, -8.548e-02, -1.028e-02, 1.881e-02, 2.421e-03, 1.378e-01, 1.305e-01, 2.177e-02, -1.118e-03, 5.861e-02, -1.416e-01, -3.140e-01, -9.031e-02), r);\n\tr = MulAdd(s1_8, M4(-4.147e-02, 1.546e-01, 5.650e-02, 4.098e-02, -1.460e-01, -5.779e-02, -1.959e-02, -2.318e-02, 3.538e-02, -5.044e-02, 3.304e-02, -3.517e-03, -1.176e-01, -3.185e-01, -1.738e-01, -4.349e-02), r);\n\tr = MulAdd(s2_0, M4(-3.428e-03, 6.059e-02, 7.024e-02, 2.739e-02, 1.313e-02, -5.748e-02, 9.005e-03, -7.139e-03, 1.165e-01, -1.541e-01, 1.493e-01, 2.725e-01, 3.254e-02, -2.934e-02, 1.115e-02, -2.844e-02), r);\n\tr = MulAdd(s2_1, M4(-8.601e-03, -3.177e-03, 1.878e-01, 1.106e-01, 1.951e-02, 8.194e-02, 4.971e-02, 5.805e-02, 2.515e-02, -2.529e-01, -2.250e-01, 3.498e-02, 7.183e-02, -8.617e-02, -8.616e-02, 1.623e-01), r);\n\tr = MulAdd(s2_2, M4(-8.072e-02, -1.234e-01, 3.482e-02, -2.873e-02, -4.049e-02, 4.828e-03, 1.940e-02, 3.828e-02, -5.156e-03, 4.585e-03, 2.326e-02, 2.346e-02, -8.908e-02, -1.384e-03, -2.366e-02, 1.290e-02), r);\n\tr = MulAdd(s2_3, M4(4.921e-02, 1.726e-01, 3.832e-02, -2.490e-01, -1.152e-01, -1.722e-01, -1.705e-01, 4.228e-01, -8.215e-02, -1.478e-02, 1.554e-01, 3.701e-01, -8.863e-02, 1.068e-01, 8.890e-03, 6.324e-02), r);\n\tr = MulAdd(s2_4, M4(1.307e-01, 2.312e-01, -1.734e-01, 2.083e-02, -1.966e-01, -3.991e-01, -8.681e-02, 1.976e-03, -3.177e-01, 1.528e-01, -2.329e-01, 2.569e-01, -6.230e-03, 6.020e-02, 4.969e-02, -2.039e-01), r);\n\tr = MulAdd(s2_5, M4(1.660e-01, 1.642e-02, 7.203e-02, -1.613e-01, 6.225e-02, 6.470e-02, 3.305e-03, 2.230e-02, -2.455e-02, 6.599e-02, -1.740e-01, 7.887e-02, 3.463e-03, 1.003e-01, -1.850e-01, 7.885e-02), r);\n\tr = MulAdd(s2_6, M4(-2.170e-02, 1.372e-01, 7.445e-02, -9.419e-02, -1.851e-01, 4.957e-02, -2.454e-01, 5.879e-02, -5.800e-02, -1.122e-01, 7.445e-02, 1.190e-01, 2.695e-02, -5.701e-02, -5.166e-02, -5.058e-02), r);\n\tr = MulAdd(s2_7, M4(5.390e-01, 1.674e-01, 1.213e-01, -1.147e-01, -6.939e-02, -1.218e-01, -2.891e-01, 2.682e-02, -2.636e-01, -1.104e-01, -1.556e-01, 3.774e-02, -4.121e-02, -2.431e-01, -1.248e-01, 1.275e-01), r);\n\tr = MulAdd(s2_8, M4(1.053e-01, 2.238e-01, -1.104e-01, 5.372e-02, 6.179e-02, -2.431e-03, -4.843e-02, 3.820e-02, -7.539e-02, 7.898e-02, 7.562e-03, 1.596e-02, 7.298e-02, -1.553e-01, -3.545e-01, 1.990e-02), r);\n\tr = MulAdd(s3_0, M4(8.232e-02, -6.815e-02, -7.421e-02, -3.191e-02, -1.592e-01, 2.814e-01, 5.009e-02, 3.669e-02, -5.908e-02, -5.445e-02, 4.873e-02, 1.538e-01, 1.065e-01, -2.194e-01, -2.612e-02, -2.297e-02), r);\n\tr = MulAdd(s3_1, M4(1.431e-02, -7.835e-02, -2.790e-03, 9.305e-02, -2.975e-01, 1.527e-01, 1.888e-01, -1.279e-02, -1.938e-02, -1.022e-01, -2.197e-02, -2.919e-02, 2.192e-01, -8.056e-02, 1.328e-03, 3.478e-02), r);\n\tr = MulAdd(s3_2, M4(4.920e-03, -6.286e-02, -7.779e-02, 1.075e-01, -1.092e-01, 2.909e-01, 3.056e-01, -9.017e-02, -3.625e-02, 1.079e-01, 1.107e-01, 6.613e-02, 1.696e-01, -1.852e-01, -1.253e-01, -9.675e-02), r);\n\tr = MulAdd(s3_3, M4(-6.350e-02, 1.137e-01, -3.559e-02, -1.684e-01, -2.044e-01, -9.368e-02, 2.283e-01, 8.052e-01, 4.476e-03, -1.599e-01, 2.594e-02, 1.582e-01, -2.483e-02, 9.216e-02, 5.719e-02, 2.237e-01), r);\n\tr = MulAdd(s3_4, M4(-1.694e-01, 1.597e-01, -3.311e-01, 1.880e-01, 2.614e-01, -2.584e-01, 5.296e-02, 9.726e-02, -3.932e-02, -7.518e-02, -1.749e-01, 1.604e-01, 1.008e-01, 2.920e-01, 5.358e-01, -6.383e-01), r);\n\tr = MulAdd(s3_5, M4(-2.706e-01, -2.716e-01, -4.196e-01, 1.023e-01, 2.201e-01, -1.412e-01, 1.003e-01, -6.972e-02, 3.727e-02, -8.424e-02, -7.870e-02, 2.294e-02, 2.836e-01, -4.165e-01, -2.974e-01, -3.567e-02), r);\n\tr = MulAdd(s3_6, M4(-3.434e-02, 6.420e-02, -8.729e-02, -8.600e-02, -2.041e-01, 1.646e-02, 9.025e-02, 1.724e-01, -4.951e-02, -3.894e-02, -7.985e-02, 1.580e-02, 2.554e-01, -3.100e-01, -2.769e-01, 8.336e-05), r);\n\tr = MulAdd(s3_7, M4(-6.557e-02, 3.865e-02, -3.263e-02, 4.621e-02, -2.077e-01, 2.705e-02, -3.354e-01, 1.480e-01, 4.155e-02, -2.143e-01, -2.626e-01, 1.091e-02, 1.382e-01, -1.706e-01, -1.355e-01, -7.700e-02), r);\n\tr = MulAdd(s3_8, M4(-2.004e-01, 4.575e-01, -1.812e-01, 6.102e-02, 3.469e-01, -6.634e-02, 1.302e-01, -9.621e-02, 4.023e-02, 1.048e-01, -9.194e-02, 5.130e-03, 4.272e-01, -5.971e-01, -2.025e-01, -1.364e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -8.611e-03, -6.529e-03, -1.098e-03, 4.669e-03 };\n\tr = MulAdd(s0_0, M4(-1.437e-01, -9.784e-02, 2.649e-01, -8.638e-02, -1.746e-01, 2.031e-01, 1.203e-01, -8.812e-02, -2.317e-01, 2.311e-01, 3.171e-02, -3.619e-02, -7.798e-02, -2.507e-02, 1.902e-01, 5.780e-02), r);\n\tr = MulAdd(s0_1, M4(2.504e-01, 1.577e-01, -5.397e-02, 4.599e-01, -1.392e-01, 2.560e-01, 1.018e-01, 7.968e-02, 2.247e-01, -2.962e-03, 1.421e-03, -1.201e-01, -3.622e-01, 1.378e-01, 1.392e-01, 1.641e-01), r);\n\tr = MulAdd(s0_2, M4(-6.143e-02, -6.336e-02, 1.131e-01, 6.811e-02, -5.817e-02, 7.362e-02, 1.407e-01, 1.823e-02, 4.880e-01, -2.282e-01, -2.704e-01, -4.287e-01, -2.741e-01, 3.163e-02, 1.098e-01, 1.514e-01), r);\n\tr = MulAdd(s0_3, M4(1.794e-01, 1.720e-01, -4.092e-01, 1.277e-01, -1.938e-01, 3.107e-01, 2.915e-01, 2.279e-01, 2.259e-01, 2.136e-01, 5.867e-02, 2.359e-01, -1.589e-01, 1.132e-01, 6.871e-02, 2.837e-01), r);\n\tr = MulAdd(s0_4, M4(-3.070e-01, -4.494e-01, 5.817e-02, 5.153e-01, 5.215e-01, 5.410e-01, 1.286e-01, -5.596e-01, 4.287e-01, 1.821e-01, 1.542e-01, 3.755e-01, 3.820e-01, 2.953e-01, -2.768e-01, -6.977e-02), r);\n\tr = MulAdd(s0_5, M4(-4.881e-02, 2.327e-02, 9.209e-02, -2.102e-02, -1.394e-01, -8.093e-03, 2.263e-01, -4.307e-01, 1.998e-01, -8.793e-02, -1.057e-01, -1.899e-01, 1.577e-01, 3.435e-01, 6.721e-02, 3.093e-01), r);\n\tr = MulAdd(s0_6, M4(7.516e-02, -1.224e-01, 1.257e-02, -6.769e-02, -8.618e-02, 1.283e-01, 2.060e-01, -1.966e-01, 8.166e-02, -1.263e-01, -2.269e-01, -3.272e-01, -3.439e-02, -2.849e-01, 2.105e-01, -3.015e-03), r);\n\tr = MulAdd(s0_7, M4(7.447e-02, -8.731e-02, 2.804e-02, -4.819e-02, -3.311e-01, 3.824e-01, 7.766e-02, 5.672e-02, 4.014e-01, -4.037e-03, 2.287e-01, 5.626e-02, 3.481e-01, -1.010e-01, -1.156e-01, -2.865e-01), r);\n\tr = MulAdd(s0_8, M4(5.454e-02, -5.590e-02, 3.408e-02, 3.551e-03, 1.262e-02, 8.638e-02, 1.222e-01, 3.418e-01, -2.154e-01, 1.868e-01, 1.210e-01, -2.330e-01, -4.810e-02, -5.190e-02, -8.587e-02, -2.145e-01), r);\n\tr = MulAdd(s1_0, M4(-3.063e-01, -1.830e-02, 5.167e-01, 4.813e-02, -7.310e-02, 1.443e-01, 1.654e-01, 1.158e-01, 4.789e-02, -3.030e-02, -1.358e-01, 2.986e-02, -4.855e-02, -7.736e-02, 4.514e-01, -1.797e-02), r);\n\tr = MulAdd(s1_1, M4(4.322e-01, -1.369e-01, 9.431e-02, 3.921e-01, 2.708e-02, -1.218e-02, -9.091e-02, 1.871e-01, 3.763e-02, -9.213e-02, -1.209e-01, -1.587e-01, 3.014e-03, 1.816e-01, 3.099e-01, 3.210e-01), r);\n\tr = MulAdd(s1_2, M4(-7.234e-02, 1.685e-02, 4.444e-01, -1.886e-01, -9.543e-03, 3.966e-02, 1.105e-01, 4.870e-02, 9.471e-02, -5.263e-02, -1.085e-01, 4.226e-02, -1.565e-01, -3.812e-02, 1.708e-01, 1.457e-01), r);\n\tr = MulAdd(s1_3, M4(2.370e-01, -3.354e-02, -9.648e-02, 1.531e-01, -3.468e-01, -3.957e-02, 3.152e-01, 3.402e-02, 3.762e-02, 9.507e-02, 7.836e-02, 9.088e-03, -1.614e-01, 4.377e-02, 4.748e-02, 1.055e-01), r);\n\tr = MulAdd(s1_4, M4(2.342e-01, -5.059e-01, 2.781e-01, 2.906e-01, 1.656e-01, 1.268e-01, 1.183e-01, -2.458e-02, 2.290e-01, 1.779e-01, -8.310e-02, 1.389e-01, 7.282e-02, 1.050e-01, -3.525e-01, 6.810e-02), r);\n\tr = MulAdd(s1_5, M4(1.078e-01, -4.451e-02, 7.031e-02, -2.977e-01, 3.596e-02, 3.359e-02, 9.589e-03, 9.070e-02, -1.862e-01, -1.863e-01, -9.652e-02, -5.039e-02, 1.004e-01, 1.598e-01, 1.466e-01, 2.349e-01), r);\n\tr = MulAdd(s1_6, M4(1.109e-02, -1.607e-01, 1.578e-02, -1.971e-01, 5.020e-02, -7.597e-02, 7.238e-02, 7.241e-02, 2.025e-02, -2.246e-02, 4.652e-02, -8.760e-02, -1.111e-02, 1.890e-02, 1.046e-01, -2.233e-03), r);\n\tr = MulAdd(s1_7, M4(1.252e-01, -8.046e-02, -1.321e-01, -3.724e-01, -1.383e-01, 1.151e-01, 5.397e-02, -1.422e-01, 8.319e-02, 9.089e-02, -2.620e-02, 1.662e-01, 2.847e-02, -1.255e-01, 6.933e-02, -1.636e-01), r);\n\tr = MulAdd(s1_8, M4(-1.517e-01, 3.661e-02, -3.135e-01, -3.395e-01, -1.139e-01, 1.973e-01, 8.547e-03, -3.118e-02, -8.869e-02, -1.209e-01, 1.867e-02, -4.531e-02, 1.016e-01, -6.909e-02, 1.436e-01, 1.663e-01), r);\n\tr = MulAdd(s2_0, M4(-9.314e-02, 1.395e-02, -1.741e-02, -7.208e-02, -5.164e-02, -5.743e-02, 5.702e-02, 1.342e-01, 6.011e-03, 1.626e-01, 1.101e-01, -1.130e-01, 6.127e-02, -8.956e-03, -7.149e-02, -6.488e-03), r);\n\tr = MulAdd(s2_1, M4(-2.534e-01, 1.086e-01, -1.007e-01, -3.067e-02, -1.074e-01, 7.219e-03, 6.768e-02, -1.012e-01, 2.019e-01, 4.263e-03, -7.411e-02, -1.173e-01, 1.961e-01, -5.619e-02, -2.390e-01, -1.323e-01), r);\n\tr = MulAdd(s2_2, M4(-1.039e-01, -9.899e-02, -2.206e-01, -2.187e-01, -8.739e-03, 6.607e-02, 4.125e-02, 5.363e-02, -6.572e-03, 3.014e-02, 1.314e-01, -9.560e-02, 2.106e-01, 1.237e-02, -8.354e-02, -4.939e-03), r);\n\tr = MulAdd(s2_3, M4(-4.682e-02, -1.357e-01, 3.481e-02, -2.187e-01, 1.113e-01, 8.812e-02, -1.211e-01, -2.011e-02, 1.567e-01, -2.216e-02, -4.920e-03, -2.458e-01, 2.263e-02, 6.741e-02, -1.234e-02, 2.338e-02), r);\n\tr = MulAdd(s2_4, M4(5.105e-02, -3.845e-01, 1.812e-01, -1.927e-01, 2.840e-01, -2.094e-01, 5.673e-02, 4.405e-02, 5.957e-01, 1.734e-02, -1.158e-01, -6.956e-01, -2.077e-01, 5.130e-03, 4.744e-01, -1.540e-02), r);\n\tr = MulAdd(s2_5, M4(1.601e-01, -2.680e-01, -1.678e-01, -1.207e-01, -4.648e-02, -6.454e-02, 1.122e-01, -6.567e-02, 1.638e-01, -1.259e-01, -2.470e-02, -3.547e-01, -1.333e-01, -1.219e-02, -7.710e-02, -3.881e-01), r);\n\tr = MulAdd(s2_6, M4(-6.060e-02, 1.662e-01, -2.082e-01, 3.193e-01, -1.317e-01, 1.395e-04, 2.436e-01, -1.480e-01, 6.104e-03, -2.009e-01, -6.729e-02, -2.207e-01, -7.784e-02, -7.589e-02, 7.569e-02, 3.261e-03), r);\n\tr = MulAdd(s2_7, M4(-2.951e-01, -2.050e-01, 2.827e-02, 3.739e-01, 1.947e-01, 5.411e-01, -2.262e-01, -8.808e-03, 2.262e-01, -9.010e-02, -1.476e-01, -3.582e-01, -1.718e-01, 2.844e-02, 7.832e-02, 1.414e-03), r);\n\tr = MulAdd(s2_8, M4(3.534e-01, 1.695e-01, -1.247e-01, 4.750e-01, 4.171e-02, 2.338e-02, -4.525e-02, -4.955e-02, 2.934e-01, -3.865e-02, -1.125e-01, -2.127e-01, 1.326e-01, 5.967e-02, 6.215e-02, 1.048e-01), r);\n\tr = MulAdd(s3_0, M4(4.186e-02, -5.378e-02, 7.641e-02, -3.524e-02, -2.447e-01, -5.374e-02, -1.380e-01, -4.221e-01, -3.797e-02, -7.623e-03, -4.826e-02, 1.791e-02, -1.390e-01, 1.115e-01, 2.252e-01, -9.103e-03), r);\n\tr = MulAdd(s3_1, M4(1.339e-01, 3.093e-01, -3.615e-02, 8.684e-02, -4.098e-01, -1.216e-01, 2.372e-01, -1.247e-01, -5.358e-02, -1.660e-01, -8.435e-02, 3.871e-02, 2.722e-01, -1.145e-01, -3.944e-01, -5.003e-02), r);\n\tr = MulAdd(s3_2, M4(-4.430e-02, -3.135e-02, 1.019e-01, -1.129e-01, -2.647e-01, -1.317e-01, 8.715e-02, -5.466e-02, -3.946e-02, 7.216e-02, 1.677e-01, 9.349e-02, 8.069e-02, -1.097e-01, -9.659e-03, -8.460e-02), r);\n\tr = MulAdd(s3_3, M4(-5.036e-03, 4.992e-02, 1.086e-01, -1.339e-02, 2.792e-01, 3.294e-01, -1.578e-01, 4.592e-01, -7.749e-02, 4.384e-02, -4.212e-02, 2.287e-02, 1.456e-01, 4.774e-02, -1.264e-01, 7.437e-02), r);\n\tr = MulAdd(s3_4, M4(3.022e-01, -2.197e-01, -4.347e-02, -2.198e-01, 3.922e-02, 8.609e-02, 8.862e-02, 3.418e-01, 8.117e-02, -2.026e-02, -3.236e-01, -2.539e-01, -6.030e-02, -2.409e-01, 7.879e-02, -8.457e-02), r);\n\tr = MulAdd(s3_5, M4(3.525e-01, 2.622e-01, -4.994e-02, -1.932e-01, -1.508e-01, 1.229e-01, 1.359e-01, 1.613e-01, 1.830e-01, -4.473e-02, -5.438e-02, -1.041e-01, 4.534e-01, -4.660e-01, -7.405e-02, -1.001e-01), r);\n\tr = MulAdd(s3_6, M4(-1.224e-02, -5.840e-03, 8.031e-02, -2.279e-02, -2.128e-01, 1.477e-01, -9.937e-03, 4.142e-02, -3.726e-02, -1.013e-01, -2.940e-03, -1.333e-01, 1.353e-01, -2.192e-01, -3.858e-01, -1.100e-01), r);\n\tr = MulAdd(s3_7, M4(-8.882e-02, 1.341e-01, 2.707e-01, 2.212e-01, 2.628e-01, 3.454e-01, -3.703e-01, 4.902e-01, 1.527e-01, 8.567e-03, -1.742e-01, -1.884e-01, -7.710e-01, 1.028e-01, 3.233e-01, -3.897e-01), r);\n\tr = MulAdd(s3_8, M4(3.715e-02, 2.936e-01, -1.195e-01, -1.295e-01, -1.313e-01, -1.222e-01, -2.876e-01, 5.694e-02, 6.813e-02, -1.738e-02, -1.154e-01, 1.649e-02, 1.755e-01, -1.639e-01, 3.212e-02, 3.504e-01), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.057e-02, -1.114e-02, 1.597e-04, 1.132e-02 };\n\tr = MulAdd(s0_0, M4(7.356e-02, 8.402e-03, 1.287e-01, 6.762e-02, 2.134e-01, -6.620e-02, -2.788e-01, -5.744e-02, -3.896e-02, -3.993e-02, -7.161e-02, -1.982e-01, -6.734e-02, 8.804e-03, -4.739e-02, 6.502e-02), r);\n\tr = MulAdd(s0_1, M4(2.249e-01, 4.958e-02, 1.138e-01, 3.152e-01, 2.008e-01, 1.703e-01, 5.817e-02, -9.482e-02, -2.371e-01, 3.975e-02, -1.755e-01, -2.666e-01, 2.819e-01, -2.640e-02, 1.405e-01, -6.009e-02), r);\n\tr = MulAdd(s0_2, M4(2.065e-01, -3.027e-02, -3.447e-02, 3.226e-03, -1.252e-02, -7.589e-03, 2.344e-03, -1.704e-02, -8.894e-02, 3.136e-02, -1.517e-01, -2.176e-02, 8.920e-02, -5.322e-02, -9.529e-02, 8.355e-02), r);\n\tr = MulAdd(s0_3, M4(1.136e-01, 1.015e-01, -2.730e-02, -2.144e-01, -9.526e-02, -2.857e-01, 2.711e-01, -1.991e-01, 2.596e-01, 1.602e-01, -2.169e-01, -1.097e-01, 3.353e-02, 6.231e-02, 8.753e-03, 3.707e-01), r);\n\tr = MulAdd(s0_4, M4(-1.945e-01, 3.081e-01, -2.270e-01, -5.963e-02, -1.666e-01, -3.408e-01, 1.161e-01, -6.384e-02, -6.823e-01, -4.014e-01, -6.276e-01, -1.672e-01, 2.986e-03, -1.351e-01, 1.668e-01, -3.133e-01), r);\n\tr = MulAdd(s0_5, M4(4.802e-02, -4.275e-02, 1.978e-03, -7.602e-02, -4.082e-03, 5.572e-02, -3.341e-02, 9.101e-03, -1.038e-01, 1.622e-01, 2.334e-02, 1.768e-01, 9.416e-03, -2.287e-01, 1.048e-01, -2.926e-01), r);\n\tr = MulAdd(s0_6, M4(5.333e-04, 3.089e-02, 2.721e-02, -3.601e-02, -5.081e-02, -1.152e-01, 6.752e-02, 1.701e-01, -2.951e-02, 2.450e-01, -1.684e-01, -4.702e-02, -1.580e-02, 1.200e-02, -1.266e-02, 4.937e-02), r);\n\tr = MulAdd(s0_7, M4(-1.351e-02, -6.248e-02, -3.060e-03, 4.140e-02, -2.090e-01, -6.831e-01, -8.857e-02, 2.536e-01, -2.333e-02, 1.521e-01, -8.033e-02, 2.124e-01, -6.615e-02, 1.317e-01, 1.847e-01, -2.150e-01), r);\n\tr = MulAdd(s0_8, M4(4.605e-02, 1.013e-01, 6.834e-03, -6.411e-02, -1.476e-02, -2.845e-01, -4.312e-02, -1.171e-02, 6.985e-02, -6.859e-02, -2.785e-02, -3.226e-02, 5.186e-02, 1.102e-01, -2.071e-02, -1.250e-01), r);\n\tr = MulAdd(s1_0, M4(1.952e-01, -3.342e-02, -3.770e-02, -2.026e-01, 4.850e-02, -3.174e-02, -1.987e-01, -2.886e-02, -1.298e-01, 1.994e-02, 1.131e-01, 2.950e-02, -1.791e-02, -4.533e-02, 4.695e-02, -6.907e-02), r);\n\tr = MulAdd(s1_1, M4(2.401e-01, 1.809e-01, -5.151e-02, -6.271e-02, -1.409e-01, 9.215e-03, 1.176e-01, 2.717e-02, 1.130e-01, -3.228e-02, -9.086e-02, -1.202e-03, 1.642e-03, -7.943e-03, 1.097e-01, 1.842e-01), r);\n\tr = MulAdd(s1_2, M4(8.774e-02, -1.486e-02, -4.808e-02, 4.089e-02, 6.244e-02, -7.645e-02, 5.614e-02, -5.706e-02, -2.386e-02, 4.407e-02, -1.378e-01, -5.880e-02, 2.936e-02, 2.285e-02, -3.924e-02, 5.724e-02), r);\n\tr = MulAdd(s1_3, M4(2.603e-01, -1.455e-01, 1.429e-01, -2.992e-02, -6.288e-02, -5.216e-02, -1.802e-01, 1.060e-01, -2.473e-02, -6.795e-03, 2.843e-02, 7.745e-02, -4.868e-03, -9.998e-02, -7.961e-02, 5.068e-02), r);\n\tr = MulAdd(s1_4, M4(2.018e-01, -1.293e-01, -5.291e-02, -4.763e-02, 3.484e-02, -1.648e-01, 8.786e-02, -6.101e-02, -1.083e-01, 5.522e-02, -1.814e-01, -2.392e-01, 6.427e-02, -1.908e-02, 2.643e-01, 1.294e-01), r);\n\tr = MulAdd(s1_5, M4(-7.897e-02, -5.967e-02, -2.620e-01, 1.274e-02, -2.583e-02, 5.654e-02, -7.639e-02, -7.534e-03, -5.812e-02, -7.887e-02, -3.738e-03, 7.664e-02, 1.753e-02, -2.842e-01, -3.237e-01, 2.077e-02), r);\n\tr = MulAdd(s1_6, M4(6.558e-02, -9.890e-02, 1.849e-02, 3.242e-04, 1.021e-02, 1.234e-01, 1.224e-02, -4.322e-02, -2.778e-02, 3.860e-02, -5.257e-02, -1.466e-02, -1.001e-02, -1.291e-03, 1.724e-01, -9.167e-02), r);\n\tr = MulAdd(s1_7, M4(-5.291e-02, -2.764e-01, -6.402e-02, 4.327e-02, 1.921e-02, -1.484e-01, 3.286e-02, 4.051e-02, 1.636e-02, 3.932e-01, -5.432e-02, 4.540e-02, 3.947e-02, -1.385e-01, -1.065e-01, 1.569e-01), r);\n\tr = MulAdd(s1_8, M4(-1.729e-02, 8.177e-02, -4.479e-02, -1.275e-01, -3.302e-03, -1.265e-01, -2.922e-02, 3.720e-02, 1.560e-02, 5.266e-02, -1.572e-02, -4.840e-02, 3.991e-03, 1.003e-01, -1.423e-01, 7.414e-02), r);\n\tr = MulAdd(s2_0, M4(-1.207e-02, -2.418e-02, -7.769e-03, -1.401e-01, 1.660e-01, -6.347e-03, -1.092e-02, -1.830e-02, -1.252e-01, -5.217e-02, 9.898e-03, 1.461e-02, 2.654e-02, 1.219e-02, -3.769e-02, 1.897e-02), r);\n\tr = MulAdd(s2_1, M4(-3.650e-02, 1.317e-01, 1.299e-02, -5.512e-02, -1.287e-01, 2.438e-02, -1.609e-03, 1.759e-01, 1.824e-02, 6.477e-03, 2.905e-02, -8.644e-02, 7.496e-02, -9.920e-02, 1.147e-02, 1.889e-01), r);\n\tr = MulAdd(s2_2, M4(-7.005e-03, -4.482e-02, -1.853e-02, 3.441e-02, 1.251e-01, -3.162e-02, -1.701e-01, -5.231e-02, -1.647e-01, 2.261e-02, 8.255e-02, -3.730e-02, 1.811e-01, -9.052e-02, 1.728e-02, 1.911e-02), r);\n\tr = MulAdd(s2_3, M4(2.359e-02, -1.334e-01, 2.761e-02, -1.251e-01, 1.455e-01, 4.076e-02, -3.260e-02, -1.782e-01, -3.575e-02, 1.411e-02, 1.322e-01, -9.592e-02, 5.423e-02, 7.989e-03, -1.460e-01, 8.895e-02), r);\n\tr = MulAdd(s2_4, M4(1.304e-01, 1.296e-01, -7.250e-02, -6.647e-02, 8.382e-02, 1.111e-01, 8.976e-02, -5.914e-02, -2.228e-01, -4.772e-02, -1.931e-03, 8.499e-02, 4.483e-01, 1.327e-01, 5.086e-02, -4.795e-01), r);\n\tr = MulAdd(s2_5, M4(4.674e-02, 7.104e-02, -5.312e-02, -7.730e-02, 2.647e-03, 8.893e-03, -8.889e-02, -5.714e-02, -4.546e-02, -4.002e-02, -1.514e-01, -2.989e-02, -8.669e-02, -5.441e-03, 1.460e-02, -2.327e-02), r);\n\tr = MulAdd(s2_6, M4(1.146e-01, -1.154e-01, 8.289e-03, 7.655e-02, -2.194e-02, -3.908e-02, -2.191e-02, 2.363e-03, 4.527e-02, -7.852e-02, -4.728e-02, 1.066e-01, 4.023e-02, -5.192e-02, -4.180e-02, -3.879e-02), r);\n\tr = MulAdd(s2_7, M4(2.446e-01, -2.295e-01, -5.819e-02, -2.646e-02, 8.106e-02, -8.799e-02, -3.455e-02, 6.900e-02, 5.579e-02, -1.551e-01, 1.609e-01, 9.954e-02, -1.499e-01, 8.628e-02, 1.114e-01, 1.313e-02), r);\n\tr = MulAdd(s2_8, M4(1.028e-02, 9.150e-02, -6.161e-02, 5.124e-03, 3.822e-02, 1.533e-02, 2.329e-02, -1.106e-01, -1.541e-03, -1.818e-01, -9.577e-02, -3.402e-02, 1.784e-02, -1.152e-01, 6.896e-02, -1.111e-01), r);\n\tr = MulAdd(s3_0, M4(-7.349e-02, -4.782e-02, 3.080e-02, -1.668e-01, 9.572e-02, 5.307e-02, 5.573e-03, 6.483e-02, 1.104e-01, -5.707e-02, -8.579e-02, -1.754e-02, 1.038e-01, 1.706e-02, -1.185e-01, 5.863e-02), r);\n\tr = MulAdd(s3_1, M4(-1.639e-01, -6.808e-03, 1.836e-02, -1.482e-01, 1.032e-01, 2.612e-02, -1.751e-01, -1.527e-01, 3.169e-03, 5.272e-02, 7.983e-02, 5.066e-02, 1.191e-01, 3.658e-02, 3.275e-02, -1.122e-01), r);\n\tr = MulAdd(s3_2, M4(-8.279e-02, -1.068e-02, 3.848e-02, -8.857e-03, -3.783e-02, 9.934e-02, -7.181e-02, 2.801e-02, -1.524e-01, -7.166e-02, 1.038e-01, -9.840e-04, -7.254e-03, -3.252e-02, -1.435e-02, 6.052e-03), r);\n\tr = MulAdd(s3_3, M4(-3.534e-02, -2.891e-02, 3.778e-01, -2.472e-01, -4.015e-02, -5.651e-02, 2.006e-01, 1.249e-02, -8.408e-02, -1.160e-02, 2.881e-01, -6.805e-03, 1.340e-02, -1.237e-01, -1.617e-01, 1.894e-02), r);\n\tr = MulAdd(s3_4, M4(-1.512e-02, 3.232e-01, -1.441e-01, -3.778e-01, -1.475e-01, -2.644e-03, -3.149e-01, 3.225e-02, 1.227e-01, -3.620e-02, -1.175e-01, -3.857e-01, 4.834e-02, -1.567e-01, 1.632e-01, -1.292e-01), r);\n\tr = MulAdd(s3_5, M4(-1.592e-01, 3.426e-02, -1.506e-01, 1.215e-01, 1.314e-01, -7.432e-02, -8.767e-02, 1.685e-01, 6.875e-02, 2.804e-01, -3.279e-02, -1.870e-01, 1.049e-01, -9.061e-02, 8.573e-02, -9.407e-02), r);\n\tr = MulAdd(s3_6, M4(5.310e-02, -1.089e-01, -1.496e-01, 2.134e-01, 5.599e-02, -1.565e-01, -6.842e-02, -1.362e-02, 6.861e-02, -2.548e-02, -1.614e-01, -3.698e-02, -2.731e-02, 1.138e-02, 1.288e-02, -1.789e-02), r);\n\tr = MulAdd(s3_7, M4(-7.967e-02, -2.461e-01, -2.139e-01, 3.193e-01, 1.377e-01, -1.213e-01, 8.415e-02, 1.224e-02, 1.192e-01, 1.785e-01, 1.978e-01, 1.008e-01, 3.016e-02, 9.868e-02, 3.118e-03, -3.294e-02), r);\n\tr = MulAdd(s3_8, M4(1.121e-01, -4.625e-02, 3.331e-02, -7.687e-02, 5.520e-02, 6.326e-02, 1.369e-02, 1.850e-02, 4.062e-02, -1.561e-01, -8.640e-02, 1.105e-01, 8.446e-03, -1.746e-03, 4.572e-02, -1.015e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -4.712e-03, -1.187e-02, 1.287e-02, -6.625e-03 };\n\tr = MulAdd(s0_0, M4(2.399e-01, 1.190e-01, 9.941e-02, -5.908e-03, 2.176e-01, -3.861e-02, -4.997e-02, -3.036e-02, -6.079e-02, 2.294e-02, -1.260e-01, 6.001e-02, -7.690e-02, -4.805e-02, 6.117e-03, 4.358e-02), r);\n\tr = MulAdd(s0_1, M4(-4.669e-02, -1.150e-01, 9.700e-03, 2.351e-02, 3.215e-01, -1.737e-03, 2.091e-01, -1.245e-01, -8.592e-02, 1.866e-01, 2.826e-01, -6.728e-01, 1.528e-01, 5.511e-02, -4.930e-02, -1.959e-02), r);\n\tr = MulAdd(s0_2, M4(-2.182e-02, -4.512e-02, 6.864e-02, 8.299e-02, 8.483e-03, -4.855e-02, -1.500e-01, 1.325e-02, 6.098e-02, -1.867e-02, 1.276e-02, 1.721e-02, 5.918e-03, -1.130e-01, 7.066e-04, -1.824e-03), r);\n\tr = MulAdd(s0_3, M4(4.594e-02, 1.518e-01, -2.067e-01, 1.546e-02, -1.548e-02, 1.126e-01, -4.502e-03, -2.014e-02, 2.417e-01, -1.530e-01, -1.095e-01, -4.966e-02, 2.291e-01, -4.598e-03, 2.836e-01, 5.562e-02), r);\n\tr = MulAdd(s0_4, M4(5.432e-02, -3.003e-01, 7.389e-01, -1.497e-01, -2.439e-01, -3.298e-01, 4.081e-01, -2.105e-01, -4.267e-01, 3.913e-01, 5.470e-01, 5.594e-01, -1.221e-01, -5.444e-02, -4.180e-01, 1.515e-01), r);\n\tr = MulAdd(s0_5, M4(2.205e-01, -5.813e-03, 7.451e-03, 8.130e-02, -3.312e-02, -9.387e-02, -9.824e-02, 4.493e-02, 8.187e-02, -2.042e-01, 1.644e-01, 1.562e-01, -8.427e-02, 2.057e-01, -1.668e-02, -2.356e-01), r);\n\tr = MulAdd(s0_6, M4(1.150e-02, 1.442e-02, -1.973e-02, -4.599e-02, -9.680e-02, 3.962e-02, 1.731e-02, -2.402e-02, 3.936e-02, 6.512e-03, 2.103e-02, 2.025e-03, -1.308e-02, -5.259e-02, 5.631e-02, 3.037e-02), r);\n\tr = MulAdd(s0_7, M4(-1.306e-02, -3.164e-02, 1.196e-01, 2.798e-02, -2.533e-01, -1.204e-01, 1.860e-01, 1.564e-01, -4.731e-02, -7.323e-02, 1.441e-03, -9.049e-02, -3.371e-02, -2.801e-04, 2.952e-02, -2.632e-02), r);\n\tr = MulAdd(s0_8, M4(3.024e-02, -1.034e-02, -7.595e-02, -7.550e-02, 3.562e-02, -4.589e-02, -3.066e-02, 7.995e-02, -1.866e-02, 1.022e-01, -2.624e-02, -1.074e-01, 2.176e-02, 1.434e-01, -5.664e-02, -3.473e-02), r);\n\tr = MulAdd(s1_0, M4(2.252e-01, 9.801e-02, -5.786e-02, -6.661e-02, 7.599e-02, -9.244e-02, 4.437e-02, -1.203e-01, -1.577e-01, -3.797e-02, -1.335e-02, 4.540e-02, -3.540e-03, -9.094e-03, -4.076e-02, -8.099e-02), r);\n\tr = MulAdd(s1_1, M4(2.557e-01, -2.549e-01, 2.306e-01, -4.389e-02, -3.677e-02, 5.796e-02, 4.505e-02, -1.209e-01, -4.484e-02, 1.229e-01, -5.686e-02, 2.778e-02, 9.876e-02, -6.893e-04, 9.771e-02, 1.264e-01), r);\n\tr = MulAdd(s1_2, M4(-5.324e-02, -9.632e-02, -1.092e-02, -1.426e-02, 3.082e-02, 9.196e-02, -1.381e-01, -1.013e-01, 7.758e-03, -3.290e-02, 1.630e-02, -4.979e-03, -7.297e-02, -7.534e-02, 2.040e-02, -1.983e-01), r);\n\tr = MulAdd(s1_3, M4(1.951e-01, 3.566e-02, 4.220e-02, 8.086e-02, -5.114e-02, -5.626e-02, -6.912e-02, 1.462e-01, 2.268e-03, -2.592e-02, 3.527e-02, -3.832e-02, 4.756e-02, 1.234e-01, -5.494e-03, 4.695e-02), r);\n\tr = MulAdd(s1_4, M4(4.147e-01, -2.431e-01, 2.372e-01, 2.574e-04, -4.485e-02, 5.014e-02, 3.928e-02, -2.817e-02, 3.512e-01, 2.983e-01, -1.260e-01, 4.326e-01, -2.366e-01, -6.912e-02, 2.259e-01, -4.534e-01), r);\n\tr = MulAdd(s1_5, M4(1.323e-01, 5.260e-03, 2.693e-02, 1.841e-01, -1.105e-01, 6.002e-02, -1.233e-01, 1.012e-02, -9.410e-02, -1.260e-01, 1.264e-02, -3.910e-02, 3.656e-01, -1.103e-01, 5.059e-01, 4.280e-01), r);\n\tr = MulAdd(s1_6, M4(-7.537e-02, -2.153e-02, -4.511e-02, -5.184e-02, -1.745e-02, -1.165e-02, 1.352e-02, -1.951e-02, -4.888e-02, 2.249e-02, -3.915e-02, -4.557e-03, -9.946e-03, -1.633e-04, -3.200e-02, -1.356e-02), r);\n\tr = MulAdd(s1_7, M4(-1.509e-01, -2.227e-02, 1.640e-01, 2.693e-02, 4.846e-02, 3.303e-02, -5.390e-02, 3.607e-02, -2.818e-02, -7.170e-02, 3.311e-02, -9.203e-02, -1.946e-03, -8.577e-02, -2.925e-02, 1.238e-01), r);\n\tr = MulAdd(s1_8, M4(-3.295e-02, 1.995e-02, -1.689e-01, -4.353e-02, -4.138e-02, -7.439e-03, -2.343e-02, 6.997e-02, 8.031e-02, 1.117e-01, 4.894e-02, -6.214e-02, -1.960e-01, -1.630e-01, 8.586e-02, -8.213e-02), r);\n\tr = MulAdd(s2_0, M4(-9.883e-02, -1.168e-02, -1.110e-01, -2.148e-01, 1.452e-01, 3.417e-03, -4.513e-02, 8.845e-02, -7.791e-02, 2.326e-02, -4.188e-02, -3.659e-02, 3.105e-02, -1.318e-02, -4.552e-03, 7.109e-02), r);\n\tr = MulAdd(s2_1, M4(1.958e-02, -6.995e-02, 2.588e-01, -6.431e-02, -2.211e-01, 5.281e-02, 5.399e-02, 8.884e-02, -5.135e-02, -4.768e-02, 1.363e-01, -2.064e-01, -1.391e-01, 1.106e-01, -2.611e-01, 2.038e-01), r);\n\tr = MulAdd(s2_2, M4(-6.883e-02, -1.360e-03, -1.628e-01, 7.301e-02, 1.213e-01, -5.159e-03, 1.194e-01, -1.148e-02, -1.285e-01, -1.448e-01, 1.776e-02, -1.414e-01, -3.022e-02, 1.382e-01, 6.695e-02, -4.201e-02), r);\n\tr = MulAdd(s2_3, M4(-1.194e-01, 1.524e-03, -1.945e-01, -1.496e-01, 1.413e-03, -8.697e-04, -1.542e-01, -1.798e-03, -4.991e-02, -7.944e-03, -1.094e-01, -5.578e-02, 1.526e-01, -6.170e-02, 1.598e-01, 1.306e-01), r);\n\tr = MulAdd(s2_4, M4(3.583e-02, -1.213e-01, 2.087e-01, -4.616e-02, 2.125e-01, -1.242e-01, 2.776e-01, -8.100e-02, -1.733e-01, 1.016e-01, 2.949e-01, 1.489e-01, 5.059e-01, 3.526e-01, -4.764e-01, -1.105e-02), r);\n\tr = MulAdd(s2_5, M4(7.240e-02, 1.034e-01, -1.103e-01, 2.351e-02, -2.711e-02, 1.506e-02, -1.534e-01, 1.093e-01, 5.065e-02, -2.686e-01, 1.423e-01, -4.993e-02, 7.167e-02, 1.084e-01, -8.139e-03, 4.460e-02), r);\n\tr = MulAdd(s2_6, M4(1.243e-01, 1.281e-02, 7.048e-02, 1.117e-01, -1.145e-01, -1.703e-02, -1.470e-02, -3.647e-02, 3.796e-03, 2.441e-02, -8.422e-02, 1.955e-02, -2.861e-02, -6.963e-02, 6.894e-02, -4.071e-02), r);\n\tr = MulAdd(s2_7, M4(2.315e-01, 7.446e-02, -7.632e-02, 1.319e-01, -2.392e-02, 2.525e-02, 4.687e-02, 7.645e-02, 4.250e-02, -4.733e-02, 2.179e-01, -3.843e-02, -3.526e-01, 9.675e-02, -1.837e-01, -1.563e-01), r);\n\tr = MulAdd(s2_8, M4(5.933e-02, 1.490e-01, -5.844e-02, 9.363e-02, 7.616e-04, -1.075e-02, -1.365e-01, -6.094e-02, 7.094e-03, -1.218e-01, 7.021e-02, 3.101e-02, -4.184e-02, 3.989e-02, -7.167e-02, -1.179e-01), r);\n\tr = MulAdd(s3_0, M4(-7.835e-02, 6.392e-02, -5.802e-02, -1.483e-01, 1.374e-01, 3.699e-02, 2.043e-03, 1.554e-01, -6.873e-02, -1.174e-02, -1.518e-01, -1.405e-02, 4.783e-03, -1.131e-01, 4.121e-02, -8.849e-02), r);\n\tr = MulAdd(s3_1, M4(-1.463e-01, 5.240e-02, -1.651e-02, -2.410e-01, 1.092e-01, -3.146e-02, -1.629e-02, -2.974e-02, -7.838e-02, -7.374e-03, 2.745e-01, -1.408e-01, 1.335e-01, 8.634e-02, 1.073e-02, -1.407e-02), r);\n\tr = MulAdd(s3_2, M4(-7.340e-02, 2.321e-02, 1.922e-02, -1.112e-01, 2.932e-02, -2.587e-02, 1.333e-01, 4.721e-02, -1.514e-01, -3.395e-02, -1.264e-01, 1.777e-02, -8.692e-02, 1.186e-02, -7.424e-02, -2.402e-02), r);\n\tr = MulAdd(s3_3, M4(5.052e-02, 2.790e-03, 3.121e-02, -1.839e-01, 3.910e-02, 2.279e-02, 6.041e-02, -8.205e-03, -5.819e-02, 5.701e-04, 5.763e-02, -1.835e-02, -7.273e-02, -1.017e-01, -4.708e-02, 3.331e-02), r);\n\tr = MulAdd(s3_4, M4(-4.521e-02, -3.700e-02, -1.199e-01, -3.863e-01, -4.641e-01, -2.451e-01, 1.512e-03, -3.424e-01, -1.194e-01, 1.119e-01, -1.183e-01, 1.918e-01, 8.865e-02, 1.866e-01, -4.503e-02, 2.355e-03), r);\n\tr = MulAdd(s3_5, M4(5.461e-02, -1.461e-01, 2.827e-01, 2.041e-01, -8.786e-03, 1.079e-02, 1.593e-01, 2.173e-01, 4.916e-01, -1.773e-01, 2.149e-02, -1.461e-01, -5.435e-02, 1.909e-01, -2.171e-01, -7.547e-02), r);\n\tr = MulAdd(s3_6, M4(2.543e-02, 5.455e-02, -6.107e-02, 5.194e-03, 9.984e-02, 8.664e-02, -7.757e-04, 3.957e-02, 1.432e-01, 3.805e-02, -1.005e-03, 7.600e-02, -4.304e-02, -6.326e-02, 3.996e-02, 3.872e-03), r);\n\tr = MulAdd(s3_7, M4(-1.234e-01, -1.276e-01, 1.312e-01, 8.454e-02, 1.539e-01, 6.822e-02, -1.455e-02, 1.223e-01, -1.060e-01, -3.708e-02, -1.480e-01, -7.922e-02, 6.503e-02, 1.105e-01, -1.249e-01, -3.210e-02), r);\n\tr = MulAdd(s3_8, M4(1.676e-01, -7.072e-03, 4.581e-02, -1.006e-01, -1.056e-02, -8.209e-02, -4.804e-02, 2.427e-02, -1.165e-01, -8.224e-02, 2.940e-01, -9.220e-03, 5.420e-02, 1.802e-01, -1.190e-01, 1.433e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -5.270e-03, 1.390e-02, 8.622e-03, 1.255e-02 };\n\tr = MulAdd(s0_0, M4(1.060e-02, 9.173e-03, 9.548e-04, -7.886e-02, -1.324e-02, 4.660e-02, -4.997e-02, -5.676e-02, -3.290e-02, 6.253e-02, -5.777e-02, 1.265e-02, 6.136e-03, 7.179e-02, 3.102e-02, 4.961e-02), r);\n\tr = MulAdd(s0_1, M4(5.787e-03, -2.090e-03, -1.489e-01, 4.380e-02, 1.259e-01, 5.508e-01, 1.211e-01, 3.385e-01, 2.399e-02, -1.436e-01, 2.987e-03, -2.839e-02, -3.021e-02, -8.641e-03, 1.716e-01, -1.328e-02), r);\n\tr = MulAdd(s0_2, M4(-3.284e-02, -5.196e-02, -2.983e-02, -2.858e-02, 1.729e-02, 7.665e-02, 1.387e-01, 1.037e-01, 4.289e-02, 1.274e-01, 3.348e-02, 1.911e-02, -1.786e-02, -4.888e-02, 6.323e-02, -2.989e-02), r);\n\tr = MulAdd(s0_3, M4(2.473e-02, -6.550e-02, -1.373e-01, 3.680e-02, 1.575e-01, -8.270e-02, 3.186e-02, -3.836e-02, 4.508e-02, 4.254e-02, 5.656e-03, -9.132e-02, 1.334e-01, -5.076e-02, -2.445e-02, -4.735e-02), r);\n\tr = MulAdd(s0_4, M4(-5.346e-01, 1.950e-01, 2.121e-01, -3.694e-01, 5.004e-02, 1.610e-02, 2.249e-01, -5.962e-02, -6.243e-02, -3.270e-01, 1.851e-01, 4.051e-02, -2.310e-01, -2.300e-01, -1.314e-01, 3.374e-01), r);\n\tr = MulAdd(s0_5, M4(-4.686e-02, -3.968e-01, 2.772e-02, 2.495e-02, 4.541e-02, 8.724e-02, 4.401e-02, -1.515e-02, -6.453e-02, -7.210e-02, -1.250e-02, 4.044e-02, 3.057e-02, 2.485e-01, 2.228e-02, 6.774e-02), r);\n\tr = MulAdd(s0_6, M4(-1.518e-01, -6.862e-02, -8.148e-02, -2.030e-01, -4.453e-02, -2.133e-03, -6.081e-02, -8.941e-02, -5.417e-02, 1.564e-02, -5.425e-02, 5.875e-02, -8.805e-02, -1.910e-02, 2.099e-02, -1.402e-02), r);\n\tr = MulAdd(s0_7, M4(-1.730e-02, -6.152e-02, -2.764e-01, -8.728e-02, 9.519e-03, -2.799e-02, -5.662e-02, 3.249e-02, 8.716e-02, 2.809e-02, -7.241e-02, 3.046e-02, 1.368e-01, 2.723e-02, 1.130e-01, -4.615e-02), r);\n\tr = MulAdd(s0_8, M4(-5.021e-02, -3.352e-02, 5.072e-02, -1.434e-02, 6.511e-02, 6.519e-02, -8.987e-02, 2.193e-02, 1.583e-04, 2.714e-02, -2.315e-02, -3.077e-02, 7.792e-03, 2.782e-02, 9.282e-02, 5.011e-02), r);\n\tr = MulAdd(s1_0, M4(-2.541e-02, -9.530e-03, -2.089e-01, -2.421e-02, 1.340e-02, 1.228e-01, 8.861e-02, -1.063e-02, -7.461e-02, 5.226e-02, -7.276e-02, 3.544e-02, -1.591e-02, 1.851e-02, 9.562e-03, 4.559e-02), r);\n\tr = MulAdd(s1_1, M4(2.747e-02, -7.982e-02, -1.475e-01, 4.885e-02, -1.175e-02, -9.209e-02, -9.273e-02, -7.428e-02, 3.696e-02, -2.012e-01, 4.627e-02, 3.609e-02, 1.096e-01, -5.087e-02, 2.170e-01, 5.311e-02), r);\n\tr = MulAdd(s1_2, M4(2.410e-02, 6.970e-02, 2.315e-02, 2.908e-02, 2.961e-05, 1.661e-02, 8.374e-02, 5.064e-02, 2.637e-02, 1.330e-01, 5.175e-02, -5.518e-02, -4.871e-03, 1.162e-01, 8.451e-02, 1.741e-02), r);\n\tr = MulAdd(s1_3, M4(4.863e-02, -7.095e-02, 3.927e-03, -9.085e-02, 2.639e-02, -8.297e-02, -1.865e-01, -9.647e-02, 6.967e-02, 1.376e-02, 1.222e-01, -2.819e-01, 1.563e-01, -1.399e-02, -4.367e-02, -5.187e-02), r);\n\tr = MulAdd(s1_4, M4(9.322e-02, 9.848e-02, 1.680e-01, -2.298e-01, -6.183e-02, -4.167e-02, -1.103e-02, -9.856e-03, -2.983e-03, -3.805e-01, -3.115e-01, -4.107e-01, -1.341e-01, -3.703e-01, -3.661e-01, -4.633e-01), r);\n\tr = MulAdd(s1_5, M4(-2.785e-03, -2.188e-02, -2.790e-03, -4.276e-04, 7.082e-02, 1.004e-01, -3.532e-03, 1.740e-03, 6.693e-03, -5.230e-01, 2.119e-01, 2.878e-02, 3.915e-03, 1.842e-01, -1.630e-02, -3.874e-02), r);\n\tr = MulAdd(s1_6, M4(2.313e-02, -6.545e-02, 1.631e-02, -1.278e-01, -4.216e-02, -4.147e-02, 6.827e-02, -1.725e-02, -5.254e-02, -3.942e-02, -2.400e-02, -8.124e-02, -3.250e-02, -1.806e-03, -3.947e-02, -7.056e-02), r);\n\tr = MulAdd(s1_7, M4(8.445e-03, 1.147e-01, -7.772e-02, 1.091e-01, 1.842e-02, -6.040e-03, -7.053e-02, 1.824e-02, 2.212e-01, -8.777e-02, -1.003e-01, 6.533e-03, 2.090e-01, 4.588e-02, 9.886e-02, 6.176e-02), r);\n\tr = MulAdd(s1_8, M4(4.046e-02, 1.872e-02, -5.723e-02, -4.997e-02, 5.232e-03, 1.795e-02, -2.747e-02, -1.507e-02, -1.704e-01, 7.849e-02, -1.475e-01, -4.255e-02, 7.807e-02, 4.185e-02, 3.849e-02, 3.137e-02), r);\n\tr = MulAdd(s2_0, M4(-8.062e-03, 6.677e-02, 6.217e-02, 1.833e-01, -1.475e-01, 2.782e-01, 3.524e-02, -6.275e-02, 4.315e-02, 1.484e-02, 3.820e-02, -3.304e-02, 1.659e-03, -9.567e-03, -3.360e-02, -2.623e-02), r);\n\tr = MulAdd(s2_1, M4(9.928e-02, -2.526e-01, -2.613e-02, 2.043e-01, 1.710e-02, -1.137e-01, 1.798e-01, -1.427e-01, 4.676e-03, 1.728e-01, 8.082e-02, -5.413e-02, -1.710e-02, -3.169e-02, -6.860e-02, 1.496e-02), r);\n\tr = MulAdd(s2_2, M4(1.785e-02, 1.092e-01, -7.685e-02, 7.691e-02, 5.271e-03, -5.168e-02, 3.395e-02, 1.726e-02, 2.936e-02, -1.321e-02, 5.364e-02, -6.785e-03, 2.429e-02, -4.442e-02, -6.348e-02, 3.035e-02), r);\n\tr = MulAdd(s2_3, M4(2.676e-01, 4.022e-03, -5.435e-02, -2.723e-01, -1.412e-01, -6.091e-01, 1.576e-02, 6.829e-02, -1.410e-01, 5.578e-03, 3.833e-03, 1.863e-01, -2.274e-02, 6.034e-03, 1.518e-01, -5.434e-02), r);\n\tr = MulAdd(s2_4, M4(7.884e-02, 5.377e-01, -4.655e-02, -3.752e-01, 1.490e-01, -4.235e-02, -5.390e-02, 2.610e-01, 1.979e-01, -5.718e-02, 1.773e-02, 5.727e-02, 1.703e-02, 7.533e-01, -3.023e-02, 5.456e-02), r);\n\tr = MulAdd(s2_5, M4(-4.898e-02, 4.237e-02, 6.311e-02, -4.635e-02, 3.660e-03, 2.139e-01, -3.722e-02, -6.738e-02, -3.009e-02, -6.140e-02, 2.777e-02, 3.917e-02, -1.421e-01, -4.041e-01, -1.524e-01, -9.837e-02), r);\n\tr = MulAdd(s2_6, M4(6.071e-02, 1.084e-01, -6.370e-02, 1.323e-01, -7.251e-02, -1.079e-01, 1.208e-01, -4.495e-02, -2.115e-03, -4.107e-02, 2.465e-02, -1.230e-01, -6.064e-02, -4.263e-02, -1.388e-01, 6.519e-02), r);\n\tr = MulAdd(s2_7, M4(9.042e-02, -8.032e-02, 1.186e-01, -1.537e-02, -6.566e-03, -3.216e-02, 3.412e-02, -3.207e-02, -1.586e-01, -2.988e-03, -2.358e-03, 2.172e-02, 6.775e-02, -3.590e-01, -4.123e-01, -3.506e-01), r);\n\tr = MulAdd(s2_8, M4(8.486e-02, 4.731e-02, 5.779e-02, 1.000e-01, 9.121e-03, -3.421e-02, 4.891e-02, 4.916e-02, 3.343e-03, 4.437e-03, -2.002e-02, -3.856e-02, -1.319e-01, -4.022e-02, -1.752e-01, -9.250e-02), r);\n\tr = MulAdd(s3_0, M4(-6.652e-03, 6.416e-02, 9.292e-03, 6.520e-02, 1.213e-02, 4.177e-02, 7.038e-02, -3.160e-02, 2.146e-02, -9.523e-02, -1.436e-01, -8.325e-02, -1.234e-02, -1.222e-02, -3.877e-02, -4.175e-02), r);\n\tr = MulAdd(s3_1, M4(-5.171e-02, 1.011e-01, 7.998e-02, -8.804e-02, 1.067e-02, 1.516e-01, 6.508e-02, -7.724e-02, 2.717e-02, -4.901e-02, -6.059e-03, 4.013e-02, -3.833e-02, 1.538e-01, 5.948e-02, -4.945e-02), r);\n\tr = MulAdd(s3_2, M4(1.023e-02, -1.230e-01, -1.861e-02, -2.570e-02, 2.512e-02, -4.630e-02, 6.354e-02, 3.897e-02, -2.146e-02, 2.446e-01, 1.906e-03, -9.068e-03, 1.754e-02, -7.082e-02, 1.107e-04, -9.604e-03), r);\n\tr = MulAdd(s3_3, M4(7.380e-02, 2.216e-02, -2.608e-02, -6.491e-02, 4.018e-02, -6.657e-02, 1.116e-01, 9.405e-02, -7.168e-02, -3.646e-01, 8.387e-02, 1.352e-02, -4.589e-02, 2.235e-02, 1.881e-01, 1.759e-01), r);\n\tr = MulAdd(s3_4, M4(-7.735e-02, -8.574e-02, -6.380e-02, 1.221e-01, 5.556e-02, -1.281e-01, 1.461e-01, 2.757e-01, 8.144e-01, -1.075e-01, 3.165e-03, -2.036e-01, 1.814e-01, 1.744e-01, -1.745e-01, 3.724e-02), r);\n\tr = MulAdd(s3_5, M4(-6.864e-02, 1.273e-02, 7.502e-02, 4.164e-02, 1.301e-02, 1.407e-01, -9.985e-02, -8.079e-02, 1.428e-01, 3.034e-01, -1.564e-02, 6.091e-02, -1.271e-02, -2.153e-01, -7.843e-02, -4.063e-02), r);\n\tr = MulAdd(s3_6, M4(-5.115e-02, 6.016e-02, -2.719e-02, 4.668e-02, -3.214e-02, -2.274e-02, -6.954e-03, -9.099e-03, 4.861e-02, 1.007e-01, -2.150e-01, -1.607e-01, -3.578e-02, 1.230e-02, -5.095e-02, 1.622e-02), r);\n\tr = MulAdd(s3_7, M4(9.498e-02, -6.763e-02, 1.451e-01, 3.408e-03, -3.253e-02, 1.145e-01, 8.122e-03, -9.192e-02, 5.071e-02, -6.317e-02, 1.097e-01, 5.913e-02, 8.494e-02, 2.731e-04, -3.736e-01, -6.110e-03), r);\n\tr = MulAdd(s3_8, M4(1.881e-02, 1.750e-02, 5.956e-02, 4.179e-02, -4.554e-02, -9.824e-02, 8.917e-03, 3.348e-02, 4.160e-02, 6.525e-02, 1.484e-02, -2.331e-02, -8.092e-02, -2.834e-02, -1.284e-01, -7.521e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -7.279e-03, 1.016e-02, -7.400e-03, 4.979e-03 };\n\tr = MulAdd(s0_0, M4(-4.868e-02, -7.333e-02, -1.029e-02, -7.011e-04, 2.404e-02, -9.301e-02, 1.457e-01, 2.242e-02, 6.850e-02, -1.328e-03, -2.557e-02, -4.854e-04, 1.071e-01, 3.788e-04, 1.408e-01, 5.354e-03), r);\n\tr = MulAdd(s0_1, M4(7.892e-03, 5.832e-02, -1.077e-01, -6.140e-02, -1.003e-02, -4.887e-01, 8.263e-01, 2.416e-01, -3.434e-02, 1.089e-02, -1.984e-02, -3.615e-02, -5.692e-03, 1.615e-02, -5.680e-02, 2.041e-02), r);\n\tr = MulAdd(s0_2, M4(2.136e-02, -2.731e-02, -1.742e-02, 2.592e-02, -4.319e-02, 6.426e-03, 2.110e-02, -6.338e-02, -6.921e-03, -1.288e-03, 4.579e-02, -2.155e-03, 3.041e-02, 1.946e-02, 1.238e-02, 6.906e-02), r);\n\tr = MulAdd(s0_3, M4(-2.058e-02, 3.187e-02, -1.057e-01, 2.407e-01, -3.813e-02, -2.640e-02, 3.941e-02, 1.362e-01, 2.406e-02, 1.518e-02, -4.224e-02, 3.455e-02, 5.443e-02, -6.617e-02, -8.858e-02, -1.949e-02), r);\n\tr = MulAdd(s0_4, M4(3.205e-01, -6.490e-01, -3.962e-01, -1.142e-01, -3.091e-02, 4.755e-01, -2.822e-01, -1.328e-01, -5.487e-01, 5.932e-02, -2.439e-02, -1.689e-01, -3.681e-02, -8.227e-02, 3.967e-02, -8.989e-02), r);\n\tr = MulAdd(s0_5, M4(-5.668e-02, 3.658e-02, 1.227e-02, 8.117e-02, 1.161e-01, 9.350e-02, 9.971e-02, -1.220e-01, 7.876e-02, 5.186e-02, -4.261e-02, 1.436e-01, -2.114e-02, 6.113e-02, 2.251e-02, 2.534e-02), r);\n\tr = MulAdd(s0_6, M4(-5.365e-02, -2.678e-02, -2.565e-02, 7.923e-02, -2.138e-02, -4.932e-02, -6.107e-03, 1.685e-02, 5.425e-02, -1.012e-02, -9.037e-03, 8.218e-04, -1.210e-02, 5.623e-02, -2.094e-02, -2.325e-02), r);\n\tr = MulAdd(s0_7, M4(2.031e-02, -3.187e-02, 8.229e-02, 1.457e-01, 1.044e-01, -4.475e-02, 2.858e-02, -7.345e-02, -3.919e-02, -5.753e-02, 1.684e-02, -1.669e-01, 9.680e-03, 1.254e-01, 2.022e-03, -9.900e-02), r);\n\tr = MulAdd(s0_8, M4(-1.164e-02, 5.171e-02, -5.704e-02, -1.643e-01, 2.554e-02, -9.988e-02, 3.699e-02, -3.752e-02, -8.076e-04, -2.527e-02, -2.081e-02, 3.110e-02, 1.484e-03, 4.064e-02, 2.481e-02, 2.225e-01), r);\n\tr = MulAdd(s1_0, M4(4.384e-02, -1.401e-01, -4.071e-02, -1.137e-02, -4.979e-03, 6.159e-02, 1.275e-01, 6.544e-02, 1.288e-01, -4.421e-02, -4.471e-02, 2.682e-02, 5.621e-02, -4.062e-02, 1.034e-01, 6.606e-02), r);\n\tr = MulAdd(s1_1, M4(2.799e-02, -1.333e-01, 1.521e-01, -5.025e-02, -1.895e-01, -7.913e-02, -2.321e-01, -6.526e-02, -1.330e-02, 1.499e-02, 1.620e-01, 6.936e-02, -6.816e-02, 1.353e-01, 1.107e-01, 5.514e-02), r);\n\tr = MulAdd(s1_2, M4(5.826e-03, -5.941e-03, -2.338e-02, -2.826e-02, 9.265e-02, 3.608e-02, 1.114e-01, 1.274e-01, -1.291e-01, 1.284e-02, -7.540e-02, -3.458e-02, -1.006e-02, 2.083e-02, -8.393e-02, 8.186e-02), r);\n\tr = MulAdd(s1_3, M4(-3.893e-02, -1.137e-02, 1.243e-01, 1.118e-01, 7.397e-02, -1.316e-01, -1.303e-01, -7.808e-05, 1.468e-02, -4.172e-03, -5.014e-02, -2.610e-02, 8.366e-02, -2.755e-02, 1.646e-04, -2.938e-02), r);\n\tr = MulAdd(s1_4, M4(-1.114e-01, -2.017e-01, 2.898e-03, -7.984e-02, -8.403e-02, 2.626e-02, 1.563e-01, -1.397e-02, 2.724e-02, -6.698e-01, 2.358e-01, -6.466e-01, -9.650e-03, -6.742e-01, 1.411e-01, -3.343e-01), r);\n\tr = MulAdd(s1_5, M4(7.380e-02, 6.420e-02, 7.990e-02, 6.014e-02, 5.950e-02, 6.212e-02, -7.881e-02, -2.782e-02, 1.087e-01, -3.347e-02, 3.819e-01, 1.988e-01, 5.813e-02, 2.239e-02, 3.012e-01, 1.275e-01), r);\n\tr = MulAdd(s1_6, M4(-9.473e-02, -2.417e-02, -2.870e-02, 7.718e-02, -2.223e-02, 2.306e-02, 8.255e-03, -1.818e-02, -2.983e-02, -3.495e-02, 1.540e-02, 8.013e-02, 1.651e-02, -1.298e-02, 2.377e-02, 5.523e-02), r);\n\tr = MulAdd(s1_7, M4(1.414e-01, 1.346e-01, 4.336e-03, -7.594e-02, -2.044e-02, -9.596e-03, -1.087e-03, 5.324e-02, -2.041e-02, -6.328e-02, 7.533e-02, -3.971e-01, 5.408e-04, 1.087e-01, 9.749e-03, -2.047e-01), r);\n\tr = MulAdd(s1_8, M4(4.656e-02, -4.771e-02, -2.210e-02, -2.060e-02, -6.953e-03, -3.366e-02, -7.290e-03, -3.300e-02, -1.354e-01, -5.015e-02, -2.887e-02, 2.802e-01, 2.605e-02, -1.972e-02, 1.168e-03, 1.422e-01), r);\n\tr = MulAdd(s2_0, M4(8.826e-02, -4.751e-02, 2.493e-01, 4.446e-02, 1.752e-01, 5.741e-03, -1.820e-01, 1.371e-02, -6.855e-02, 1.164e-02, -5.215e-02, -7.373e-04, -1.491e-02, 7.033e-03, -5.440e-02, -9.302e-05), r);\n\tr = MulAdd(s2_1, M4(-6.871e-02, -9.419e-03, 3.276e-01, 2.826e-02, 5.675e-02, -3.974e-03, 1.104e-01, -2.975e-02, 3.281e-02, 8.429e-03, 1.129e-01, -4.830e-02, -4.374e-02, -6.905e-02, 8.143e-02, 3.180e-03), r);\n\tr = MulAdd(s2_2, M4(-7.197e-02, -1.804e-02, -9.024e-02, -1.527e-03, 2.403e-02, 6.062e-02, 3.346e-02, 4.784e-02, -1.462e-02, 4.216e-02, 2.800e-02, 4.034e-04, -4.216e-02, -4.431e-03, -3.496e-02, -3.005e-02), r);\n\tr = MulAdd(s2_3, M4(2.710e-02, -6.523e-02, 1.559e-01, -6.059e-02, 1.965e-01, -1.608e-01, -9.293e-03, -2.404e-01, -4.061e-02, 8.819e-02, 2.112e-02, 2.398e-01, -1.463e-01, 5.373e-02, -1.346e-02, 3.025e-02), r);\n\tr = MulAdd(s2_4, M4(1.846e-02, 3.857e-01, -4.128e-01, -2.530e-01, -2.312e-01, 3.354e-02, -3.948e-01, -1.465e-01, 1.072e-01, -8.544e-02, -7.428e-02, 4.751e-02, 2.139e-01, 3.097e-01, -3.761e-01, 5.621e-02), r);\n\tr = MulAdd(s2_5, M4(-1.203e-02, -9.598e-02, 4.101e-01, 1.578e-01, -5.394e-02, -6.714e-02, -6.320e-02, 8.249e-03, 5.620e-02, -3.219e-02, 9.398e-03, 6.809e-02, -7.400e-02, -1.431e-01, -1.425e-01, -2.358e-02), r);\n\tr = MulAdd(s2_6, M4(4.035e-02, 5.655e-02, -3.307e-03, -3.497e-02, 6.522e-02, 1.103e-01, -9.802e-02, -2.655e-01, -5.802e-02, -4.359e-02, 3.459e-03, 1.592e-01, -2.566e-02, -1.156e-01, 2.646e-02, 3.806e-02), r);\n\tr = MulAdd(s2_7, M4(-3.211e-02, -1.509e-01, 2.028e-03, -1.702e-01, 4.576e-02, -5.340e-02, 5.503e-02, 1.257e-02, -5.581e-02, 9.818e-02, -2.745e-02, 1.486e-01, 1.063e-01, -3.707e-01, 1.116e-01, -6.709e-02), r);\n\tr = MulAdd(s2_8, M4(9.062e-04, -7.371e-03, 8.420e-02, 1.629e-01, -2.707e-02, -5.219e-03, 6.567e-02, 1.766e-01, 4.554e-04, 1.178e-02, -1.124e-02, 3.477e-02, -5.473e-02, -7.643e-02, 9.083e-03, -4.250e-02), r);\n\tr = MulAdd(s3_0, M4(8.537e-02, 7.246e-02, 5.043e-02, 3.850e-02, -3.951e-02, 9.224e-03, 1.640e-02, 1.906e-02, -1.333e-01, -8.517e-02, -1.410e-01, 4.781e-02, -1.641e-02, 2.463e-03, -7.445e-02, -4.602e-02), r);\n\tr = MulAdd(s3_1, M4(7.934e-02, 7.380e-03, -1.062e-01, -4.154e-03, -2.611e-02, -3.119e-02, 9.679e-02, -1.394e-02, -1.108e-01, 1.158e-02, 1.850e-01, -6.765e-02, 5.765e-02, 3.392e-02, -1.560e-02, -6.052e-02), r);\n\tr = MulAdd(s3_2, M4(-3.056e-02, -8.450e-03, 1.524e-02, -1.007e-02, 1.030e-02, 4.032e-02, 9.837e-02, 9.371e-03, 4.740e-02, -4.795e-02, -3.356e-02, 8.602e-03, 2.484e-02, -9.889e-03, 6.734e-02, -2.287e-02), r);\n\tr = MulAdd(s3_3, M4(6.303e-02, -7.328e-02, -5.082e-02, -5.070e-02, -8.129e-03, 7.948e-03, 7.351e-02, 5.601e-02, -4.169e-01, -8.219e-03, 3.373e-01, 1.781e-01, -5.139e-02, 1.471e-01, 3.415e-02, 7.690e-02), r);\n\tr = MulAdd(s3_4, M4(1.455e-01, 6.664e-02, 5.792e-02, -1.276e-01, 2.360e-01, 5.978e-02, 5.147e-02, 2.707e-01, -7.581e-01, -2.740e-01, -3.000e-01, -2.017e-02, 2.005e-01, 6.934e-02, 2.996e-02, -3.036e-01), r);\n\tr = MulAdd(s3_5, M4(-1.708e-01, -6.628e-02, 9.170e-02, 3.461e-02, -1.028e-01, -4.244e-02, -1.955e-01, -1.875e-01, 8.215e-02, 2.976e-02, -4.637e-03, 1.512e-01, -4.626e-02, 3.819e-03, -2.222e-01, -1.078e-01), r);\n\tr = MulAdd(s3_6, M4(9.585e-02, 3.354e-02, -5.140e-03, -2.883e-02, -9.057e-02, 3.950e-02, -5.781e-02, -2.509e-02, -7.106e-02, -1.351e-01, -4.933e-02, 8.332e-02, -2.922e-02, -3.890e-02, 3.291e-03, 7.054e-02), r);\n\tr = MulAdd(s3_7, M4(-8.208e-02, 1.377e-02, -2.475e-02, -1.353e-01, 9.728e-02, 7.136e-02, -3.984e-02, 1.374e-01, -1.160e-01, 4.362e-02, 6.714e-02, 5.038e-03, 1.866e-01, -2.349e-01, 8.599e-02, -1.510e-01), r);\n\tr = MulAdd(s3_8, M4(-3.279e-02, 4.634e-02, 1.698e-02, 1.410e-01, -2.615e-02, 1.178e-02, 5.268e-02, 5.209e-02, 1.624e-02, 2.431e-02, -3.280e-02, 7.160e-02, -6.704e-02, -1.195e-01, -4.136e-02, -2.048e-01), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 6\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0, t1\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.667e-03, -2.914e-03, -1.783e-03, -1.113e-03 };\n\tr = MulAdd(s0_0, M4(1.838e-01, -1.901e-02, 9.627e-03, -5.113e-02, -2.616e-02, -2.850e-02, -1.739e-02, 9.125e-03, 1.563e-02, -1.253e-02, 1.902e-02, -1.512e-02, 3.495e-03, -1.497e-02, 4.974e-03, -1.115e-02), r);\n\tr = MulAdd(s0_1, M4(-4.288e-01, 2.549e-01, -1.017e-01, -1.945e-01, 4.749e-02, 5.258e-02, -8.284e-03, -2.265e-02, -7.010e-02, -1.542e-02, 6.889e-03, 4.028e-02, -1.355e-02, 4.321e-03, 3.330e-02, 8.256e-02), r);\n\tr = MulAdd(s0_2, M4(-1.045e-03, -2.140e-01, -3.928e-02, 1.364e-02, 1.787e-03, -9.427e-03, 1.927e-03, -2.145e-03, -4.617e-03, 2.814e-02, 2.045e-02, 1.776e-02, 3.188e-02, 3.187e-02, -1.498e-02, -2.180e-02), r);\n\tr = MulAdd(s0_3, M4(1.059e-02, -5.522e-02, 6.447e-02, -4.395e-02, -4.846e-02, -2.209e-02, 1.866e-02, -5.920e-02, -2.419e-02, 1.032e-02, 7.736e-04, 1.092e-03, 1.854e-02, -4.388e-03, 3.893e-02, 9.549e-03), r);\n\tr = MulAdd(s0_4, M4(3.358e-02, 7.431e-03, 1.780e-01, 5.353e-01, 2.674e-01, 2.227e-01, 1.450e-01, 2.085e-01, -8.104e-03, -3.561e-02, -1.231e-01, -1.932e-01, -6.538e-02, 3.378e-02, -1.314e-01, -2.862e-02), r);\n\tr = MulAdd(s0_5, M4(-7.887e-02, 4.783e-02, -1.380e-01, -3.877e-01, 3.436e-03, 4.712e-02, -1.250e-02, 2.247e-02, 2.920e-02, 7.190e-02, -2.005e-02, 6.169e-02, 5.594e-03, -4.630e-02, 9.661e-02, 3.625e-02), r);\n\tr = MulAdd(s0_6, M4(1.963e-02, -1.873e-02, 1.489e-02, -1.253e-02, -9.356e-03, 1.334e-02, -3.747e-02, -1.115e-02, 7.741e-04, -6.463e-03, 3.707e-03, -3.598e-03, 1.783e-02, -5.539e-03, 9.899e-03, -9.354e-03), r);\n\tr = MulAdd(s0_7, M4(-2.952e-03, 3.132e-02, -6.679e-02, 2.883e-02, -3.721e-02, -3.573e-02, 1.204e-01, -6.785e-02, -1.208e-02, -1.355e-04, 2.872e-02, 2.196e-02, -1.655e-02, 3.784e-02, -5.921e-03, 2.494e-02), r);\n\tr = MulAdd(s0_8, M4(-1.215e-02, -2.947e-02, -2.454e-03, -6.326e-02, 2.248e-03, 2.302e-02, -2.863e-03, 5.834e-02, 2.187e-02, 9.973e-03, 2.158e-02, 4.902e-02, -2.207e-02, -3.485e-02, -5.118e-02, -6.696e-02), r);\n\tr = MulAdd(s1_0, M4(8.377e-02, -3.093e-02, 2.280e-02, -2.664e-02, -4.333e-02, -3.292e-02, -8.109e-03, 1.105e-02, 1.507e-02, 9.138e-03, 2.597e-02, -1.926e-02, 4.537e-02, -9.080e-03, -1.629e-02, -1.180e-02), r);\n\tr = MulAdd(s1_1, M4(-7.478e-02, 1.238e-01, -5.092e-02, -3.473e-02, 4.269e-02, 4.444e-02, 7.295e-03, 1.274e-04, -1.646e-01, -1.551e-03, 3.424e-02, 4.906e-02, -2.056e-01, -5.847e-02, 5.262e-02, 1.049e-01), r);\n\tr = MulAdd(s1_2, M4(-6.323e-02, -1.179e-01, -1.982e-02, -4.065e-02, 3.089e-03, -9.469e-03, 2.850e-03, 3.314e-03, -1.819e-03, -1.065e-01, 1.882e-02, 9.349e-03, 1.624e-02, -2.906e-02, -2.029e-02, -5.020e-02), r);\n\tr = MulAdd(s1_3, M4(1.101e-01, -3.490e-02, 1.327e-01, -2.853e-02, -5.027e-03, -5.703e-02, 6.484e-03, -6.473e-02, -4.310e-02, 3.882e-02, -3.100e-02, -7.837e-04, -5.501e-02, -1.261e-02, 7.285e-02, 4.648e-02), r);\n\tr = MulAdd(s1_4, M4(-6.214e-02, 1.841e-01, -9.546e-02, 3.700e-01, 2.824e-01, 3.400e-01, 2.309e-01, 2.237e-01, 3.482e-01, -1.294e-01, -4.546e-01, -3.556e-01, -4.730e-01, -1.392e-01, 4.776e-01, 1.210e-01), r);\n\tr = MulAdd(s1_5, M4(-5.408e-02, -1.286e-01, -6.571e-02, -1.230e-01, 9.991e-03, 6.421e-02, 4.305e-03, 1.780e-02, 2.254e-02, 3.661e-01, 6.275e-02, 8.004e-02, -1.834e-02, -3.465e-01, 9.274e-02, 3.935e-01), r);\n\tr = MulAdd(s1_6, M4(-1.620e-03, -1.423e-02, 2.785e-02, -1.252e-02, -1.218e-02, 2.842e-03, -3.496e-02, -2.927e-02, -2.106e-02, -7.099e-03, 2.545e-02, 2.484e-02, 2.973e-02, 4.563e-04, 2.010e-04, -1.839e-02), r);\n\tr = MulAdd(s1_7, M4(1.400e-04, 3.080e-02, -6.992e-03, 8.032e-02, -2.280e-02, -4.436e-02, 7.600e-02, 1.165e-02, -9.494e-02, -2.207e-02, 2.783e-01, 2.095e-01, 2.645e-02, 5.203e-02, -7.492e-02, -1.303e-02), r);\n\tr = MulAdd(s1_8, M4(-5.360e-03, -2.277e-02, -2.252e-02, -6.191e-02, 1.263e-02, 1.540e-02, 9.566e-03, 3.637e-02, -1.265e-02, -3.092e-02, -1.298e-02, -1.187e-02, 1.286e-02, 1.181e-02, -5.675e-02, -5.487e-02), r);\n\tr = MulAdd(s2_0, M4(6.275e-02, 3.332e-02, 2.458e-02, -1.910e-02, -1.764e-02, 2.292e-02, -3.220e-02, -1.127e-02, 4.114e-02, 4.303e-02, -3.355e-02, -8.882e-03, 1.881e-02, 1.788e-02, -3.354e-03, -1.345e-02), r);\n\tr = MulAdd(s2_1, M4(-1.562e-01, -7.407e-02, -5.684e-02, -3.194e-03, 1.150e-01, -2.700e-02, -9.666e-03, -3.629e-02, 5.862e-02, 6.747e-02, -1.085e-02, -3.454e-02, 7.263e-05, 2.167e-02, 5.491e-03, -6.472e-02), r);\n\tr = MulAdd(s2_2, M4(5.068e-03, 4.899e-02, 1.480e-02, -2.153e-02, 1.102e-02, 2.831e-02, -5.931e-03, 1.021e-02, -1.267e-02, -1.569e-02, 5.418e-04, 1.030e-02, -3.280e-02, -3.072e-02, -2.688e-02, -2.208e-02), r);\n\tr = MulAdd(s2_3, M4(-7.105e-02, 1.664e-03, -3.108e-02, 6.985e-02, 3.176e-02, 2.312e-02, -3.835e-02, 3.884e-02, -1.038e-01, 6.660e-02, -1.372e-01, 2.432e-02, -2.888e-04, -2.049e-02, 2.271e-02, 9.383e-03), r);\n\tr = MulAdd(s2_4, M4(4.697e-01, -3.721e-01, 1.705e-01, -2.767e-01, -1.791e-02, -7.276e-02, 2.503e-01, 1.040e-01, 1.180e-02, -5.212e-01, 4.014e-01, 1.946e-01, -2.547e-02, -1.567e-02, -5.652e-02, 9.687e-02), r);\n\tr = MulAdd(s2_5, M4(3.024e-02, 1.618e-02, 2.619e-02, 8.868e-02, -5.217e-02, -7.642e-02, -3.704e-02, -2.374e-02, -4.639e-02, 5.743e-02, -3.967e-02, -2.450e-02, 2.091e-02, -1.108e-02, 6.949e-03, -1.502e-02), r);\n\tr = MulAdd(s2_6, M4(5.298e-03, -6.810e-03, -1.982e-02, 1.960e-04, 3.645e-03, 5.483e-03, 3.357e-03, 3.697e-02, -1.339e-02, 3.253e-02, 3.649e-02, 4.492e-03, 2.076e-02, -9.046e-03, 2.043e-02, -7.803e-03), r);\n\tr = MulAdd(s2_7, M4(-2.707e-02, 7.878e-02, 1.816e-01, -1.506e-03, 9.060e-03, -1.418e-02, -6.983e-02, -5.833e-02, 3.309e-02, -2.537e-02, -3.298e-01, -1.735e-01, -2.132e-03, 5.241e-02, 1.155e-02, 4.817e-02), r);\n\tr = MulAdd(s2_8, M4(-1.781e-02, 1.652e-02, -7.188e-03, 2.114e-03, -1.105e-02, -1.137e-02, -9.037e-03, -5.600e-02, -1.220e-02, 8.292e-03, -3.404e-03, -4.211e-02, -1.018e-02, -1.004e-02, 1.505e-03, -4.591e-03), r);\n\tr = MulAdd(s3_0, M4(7.349e-02, 2.926e-02, 2.398e-02, -1.821e-02, -1.290e-02, 1.201e-02, 5.000e-03, 1.316e-02, -1.567e-02, 2.025e-02, -2.171e-02, -3.941e-04, -7.948e-03, 6.116e-02, -9.445e-03, 1.911e-02), r);\n\tr = MulAdd(s3_1, M4(-1.294e-01, -6.121e-02, -4.576e-02, 9.211e-03, 1.371e-02, -1.964e-02, -3.133e-03, 4.701e-03, 9.544e-02, 6.692e-03, 4.665e-04, -2.056e-02, 3.455e-01, -2.495e-01, 1.027e-02, -7.393e-02), r);\n\tr = MulAdd(s3_2, M4(1.532e-02, 9.402e-03, 6.812e-04, -3.241e-02, 1.245e-03, 6.504e-03, 3.970e-03, 7.168e-03, 9.435e-03, 1.574e-02, -5.118e-03, 5.232e-03, -2.659e-02, -6.011e-02, -2.446e-02, 8.062e-04), r);\n\tr = MulAdd(s3_3, M4(-6.714e-02, 3.454e-03, -1.486e-02, 5.921e-02, 5.177e-02, 3.766e-02, -1.473e-01, 4.371e-02, -7.118e-02, 2.462e-02, -1.810e-02, 3.430e-02, -5.552e-02, 3.047e-02, -5.066e-02, 5.769e-02), r);\n\tr = MulAdd(s3_4, M4(3.191e-02, -1.387e-01, -5.992e-02, -1.554e-01, 4.660e-01, 3.655e-01, 2.406e-02, -3.902e-01, 3.973e-02, -1.333e-01, 1.792e-01, 8.854e-02, 2.477e-01, -3.115e-01, 6.035e-01, -4.717e-01), r);\n\tr = MulAdd(s3_5, M4(7.241e-02, 1.273e-01, 6.810e-02, 1.118e-01, -5.454e-02, -1.728e-02, -1.007e-01, -2.265e-02, -4.534e-02, -5.171e-02, -2.524e-02, -3.337e-02, -2.366e-03, -1.723e-02, 2.300e-02, -9.889e-02), r);\n\tr = MulAdd(s3_6, M4(3.383e-02, -7.898e-03, 1.681e-02, -5.131e-03, 3.687e-02, 1.929e-02, -7.695e-03, 2.145e-03, -2.814e-02, 3.366e-02, -8.788e-02, 3.614e-02, 2.951e-02, -6.964e-03, 2.272e-02, 1.581e-02), r);\n\tr = MulAdd(s3_7, M4(7.020e-03, 6.046e-02, 2.975e-02, 5.663e-02, 2.155e-02, -1.786e-02, -2.588e-01, -1.310e-01, -6.372e-02, -1.218e-01, -7.160e-02, -3.058e-01, 2.297e-03, 3.050e-02, -2.346e-02, 4.674e-02), r);\n\tr = MulAdd(s3_8, M4(-1.071e-02, -1.089e-02, 9.286e-03, 5.202e-02, -2.291e-02, -2.655e-02, 2.386e-02, -3.231e-02, 4.599e-03, 1.114e-02, -1.630e-02, -1.693e-02, -2.194e-03, 1.842e-02, -2.522e-02, 5.265e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-4x8C-NVL.hlsl",
    "content": "// CuNNy 4x8C BILINEAR RGB NVL - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-D08N04\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t3;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0, t1\n\n#define l0(x, y) (dot(MF3(2.329e-01, 4.438e-01, 9.598e-02), O(INPUT, float2(x, y)).rgb) + MF(-5.664e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 3.244e-02, 2.492e-04, 8.562e-04, 1.261e-04 };\n\tr = mad(s0_0, V4(-1.368e-01, -5.123e-02, -2.270e-01, -9.888e-02), r);\n\tr = mad(s0_1, V4(3.682e-01, 4.625e-02, 1.372e-01, 3.834e-01), r);\n\tr = mad(s0_2, V4(-9.245e-02, 7.555e-03, 3.923e-02, 1.252e-02), r);\n\tr = mad(s0_3, V4(-2.312e-01, 2.012e-02, 1.660e-01, 4.386e-01), r);\n\tr = mad(s0_4, V4(-3.965e-02, -4.834e-01, 3.729e-01, -7.207e-01), r);\n\tr = mad(s0_5, V4(2.190e-01, -9.021e-02, -1.087e-01, -9.632e-03), r);\n\tr = mad(s0_6, V4(4.088e-02, 1.183e-01, 8.976e-02, -1.710e-03), r);\n\tr = mad(s0_7, V4(-5.188e-03, 5.274e-01, -8.856e-02, -6.446e-03), r);\n\tr = mad(s0_8, V4(-7.160e-02, -9.349e-02, -3.823e-01, 1.947e-03), r);\n\treturn r;\n}\n\nV4 f1(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -1.971e-02, 8.202e-02, 4.706e-03, -6.665e-02 };\n\tr = mad(s0_0, V4(2.403e-02, 8.569e-03, -8.618e-02, 2.022e-02), r);\n\tr = mad(s0_1, V4(4.893e-01, 2.383e-02, 2.423e-02, -3.486e-01), r);\n\tr = mad(s0_2, V4(-3.682e-02, 2.437e-03, 1.872e-01, 1.135e-01), r);\n\tr = mad(s0_3, V4(-2.361e-02, 2.588e-02, 7.348e-02, -8.229e-03), r);\n\tr = mad(s0_4, V4(-4.433e-01, -5.131e-01, -3.778e-01, 6.107e-02), r);\n\tr = mad(s0_5, V4(-4.423e-02, 2.098e-02, 9.260e-03, 4.444e-02), r);\n\tr = mad(s0_6, V4(-1.370e-02, 1.009e-02, 3.020e-01, 1.159e-02), r);\n\tr = mad(s0_7, V4(-3.030e-03, 8.145e-03, -2.789e-02, -7.085e-03), r);\n\tr = mad(s0_8, V4(2.648e-02, 4.731e-03, -1.067e-01, -4.477e-03), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 3.430e-02, -1.031e-02, -1.631e-02, -3.189e-02 };\n\tr = MulAdd(s0_0, M4(1.205e-01, 8.504e-02, -7.328e-02, 1.539e-01, -9.103e-03, -2.708e-02, -1.401e-01, -2.159e-01, -2.552e-01, 7.462e-02, 5.919e-02, 8.905e-02, 1.169e-01, -4.383e-03, -1.997e-01, -1.379e-01), r);\n\tr = MulAdd(s0_1, M4(2.844e-02, 2.238e-02, 2.143e-01, -1.624e-01, 1.885e-01, 1.316e-01, -1.276e-01, -1.713e-01, 2.553e-03, -1.343e-01, 4.700e-02, 4.762e-01, -2.676e-01, 1.784e-01, -4.065e-02, 1.015e-01), r);\n\tr = MulAdd(s0_2, M4(-4.442e-03, 3.253e-01, 2.650e-02, -2.907e-01, 2.749e-01, -3.510e-01, 8.545e-02, -2.446e-01, -1.579e-01, 9.398e-02, -4.544e-02, -9.123e-02, -2.529e-01, -2.538e-01, -2.686e-01, 2.607e-01), r);\n\tr = MulAdd(s0_3, M4(1.518e-01, -1.515e-01, -1.597e-01, 2.163e-01, -6.933e-02, 7.220e-02, 2.114e-01, -2.227e-01, -3.743e-01, 9.056e-02, 2.612e-02, 3.036e-01, -1.583e-02, -8.293e-02, -1.068e-01, 6.201e-02), r);\n\tr = MulAdd(s0_4, M4(-2.305e-02, 9.029e-02, -1.003e-01, -2.375e-01, -1.891e-01, 3.623e-01, -2.999e-01, -4.511e-01, 1.460e-01, -3.825e-01, 1.231e-01, 6.391e-01, -6.041e-01, 5.588e-01, -3.508e-01, -3.131e-01), r);\n\tr = MulAdd(s0_5, M4(8.812e-02, 2.197e-01, -8.630e-03, 2.287e-02, -1.918e-01, -6.428e-01, 1.496e-01, 2.272e-01, 3.445e-02, -7.188e-03, -8.518e-02, 1.948e-01, 1.606e-01, -8.707e-01, 2.092e-02, -4.993e-01), r);\n\tr = MulAdd(s0_6, M4(9.718e-03, 8.373e-03, 7.436e-02, -1.552e-01, 8.410e-02, -1.728e-02, -1.971e-01, 2.255e-02, -8.645e-02, 1.863e-02, -9.399e-02, -8.424e-02, -1.533e-03, 1.223e-01, 2.715e-01, -1.268e-01), r);\n\tr = MulAdd(s0_7, M4(-4.246e-01, -1.034e-01, 3.236e-01, 5.680e-01, -1.213e-02, 1.577e-01, -9.408e-02, -7.294e-02, -6.410e-02, 4.264e-02, -8.392e-03, 2.192e-01, 1.656e-01, 4.681e-02, 9.146e-01, -6.311e-02), r);\n\tr = MulAdd(s0_8, M4(-1.847e-01, -9.105e-02, -3.260e-02, 2.506e-01, -6.470e-02, 4.430e-02, -1.242e-02, -1.097e-01, 5.488e-02, 9.106e-02, 3.144e-02, -3.367e-05, 2.468e-01, -2.535e-01, 1.409e-01, -5.311e-01), r);\n\tr = MulAdd(s1_0, M4(1.294e-01, 1.098e-01, 7.497e-03, 1.016e-01, 1.377e-02, -1.480e-02, -2.694e-02, -3.417e-02, -1.083e-01, -2.575e-03, 1.137e-01, -2.616e-01, -1.260e-01, -2.567e-02, -1.958e-01, 6.103e-02), r);\n\tr = MulAdd(s1_1, M4(-1.355e-01, 1.168e-01, 2.368e-01, -2.379e-01, 8.556e-01, 1.401e-01, 3.238e-01, 2.737e-01, 8.041e-02, -1.662e-01, 9.181e-02, -3.488e-01, -1.586e-01, 1.407e-01, -1.126e-01, 1.825e-01), r);\n\tr = MulAdd(s1_2, M4(-1.881e-02, 4.604e-01, -1.712e-02, 3.453e-02, 3.171e-01, -1.126e-01, 6.510e-02, 2.908e-01, -9.125e-02, 7.793e-02, -5.580e-02, -3.603e-01, 9.996e-02, -2.647e-01, -2.114e-01, 2.330e-01), r);\n\tr = MulAdd(s1_3, M4(2.957e-01, -1.252e-01, -2.840e-01, 1.815e-01, -2.900e-01, 1.027e-01, 1.404e-01, -1.123e-01, -1.767e-01, 1.535e-03, -3.568e-03, -2.824e-01, 2.015e-01, -7.712e-02, -6.140e-02, 6.517e-02), r);\n\tr = MulAdd(s1_4, M4(-2.439e-01, 7.096e-02, -2.116e-01, -1.980e-01, -3.221e-01, 2.007e-01, -4.243e-01, -5.013e-01, 1.181e-01, -3.735e-01, 1.812e-01, -5.095e-01, 3.646e-01, 4.013e-01, -8.028e-02, 1.287e-01), r);\n\tr = MulAdd(s1_5, M4(-8.389e-02, -1.091e-01, 6.962e-02, 2.605e-01, -3.435e-03, -5.146e-01, 4.125e-01, 5.487e-01, -1.481e-01, 6.810e-02, -1.450e-01, -9.583e-02, 3.305e-01, -1.238e+00, 2.036e-01, 1.879e-01), r);\n\tr = MulAdd(s1_6, M4(-8.033e-02, 5.944e-03, 2.453e-01, -2.971e-01, -5.652e-02, -1.251e-02, -1.449e-01, -5.344e-02, -1.377e-01, 9.383e-03, -1.862e-01, -2.528e-01, -3.825e-02, 7.296e-02, 2.373e-01, -1.935e-01), r);\n\tr = MulAdd(s1_7, M4(-1.795e-01, 1.597e-01, 2.709e-01, -3.738e-01, 2.604e-02, 1.678e-01, -8.718e-02, -9.483e-03, -3.844e-02, 6.235e-02, -1.344e-01, 1.837e-02, -3.074e-02, 2.568e-02, 1.030e+00, 1.831e-01), r);\n\tr = MulAdd(s1_8, M4(4.299e-02, 6.530e-03, -2.571e-02, 3.382e-01, -1.327e-01, 2.975e-02, -2.861e-02, 1.963e-01, 8.130e-04, 9.743e-02, -1.177e-02, -1.273e-01, -1.265e-01, -3.003e-01, 2.635e-01, 5.426e-02), r);\n\tr = MulAdd(s2_0, M4(-1.538e-01, 1.580e-01, 1.392e-01, -1.077e-01, -1.228e-01, 1.853e-01, -1.010e-01, 3.144e-02, 2.203e-01, -3.309e-02, 6.819e-02, 2.708e-01, 1.720e-01, 2.635e-01, -1.290e-01, -2.932e-01), r);\n\tr = MulAdd(s2_1, M4(1.615e-01, -1.424e-01, -2.346e-01, -1.008e-01, 1.386e-01, -2.281e-01, -1.313e-01, -5.902e-02, -3.376e-02, 1.925e-01, -1.172e-01, 7.865e-02, 2.112e-01, -7.280e-02, -1.953e-01, -1.198e-02), r);\n\tr = MulAdd(s2_2, M4(1.280e-01, -1.353e-01, 1.251e-01, 3.212e-02, -1.144e-01, -1.492e-01, -1.499e-01, 2.211e-01, 1.307e-01, 1.336e-01, 1.977e-01, -1.429e-02, -5.395e-02, -2.772e-02, -3.214e-01, -1.907e-01), r);\n\tr = MulAdd(s2_3, M4(-2.703e-01, 3.122e-01, 1.951e-01, -2.005e-01, 1.463e-01, 3.000e-01, 1.058e-01, 8.352e-02, 1.567e-01, -1.256e-01, -1.854e-01, -2.018e-01, 3.248e-01, 8.780e-02, 1.586e-01, -9.757e-03), r);\n\tr = MulAdd(s2_4, M4(3.941e-02, -1.430e-01, 1.023e-01, 2.878e-01, 8.414e-02, 1.385e-01, 8.032e-02, -6.330e-02, -1.020e-01, 2.731e-01, -6.877e-02, -3.492e-01, 3.758e-01, -7.526e-02, 4.955e-01, -5.595e-01), r);\n\tr = MulAdd(s2_5, M4(2.684e-01, -1.924e-02, -2.975e-02, 7.205e-01, 6.611e-02, -1.645e-01, 1.267e-01, 6.066e-02, 1.695e-01, -4.367e-01, -1.450e-01, -4.074e-02, 4.469e-01, -7.176e-03, 4.177e-01, -4.565e-01), r);\n\tr = MulAdd(s2_6, M4(-1.843e-01, 2.522e-01, 3.324e-01, -1.821e-01, -1.327e-01, 1.182e-01, 1.158e-01, -2.494e-01, -6.459e-03, -6.606e-03, 1.333e-01, 2.229e-01, 2.481e-01, -2.018e-01, 2.456e-01, 2.351e-01), r);\n\tr = MulAdd(s2_7, M4(-6.894e-03, -2.822e-01, -1.863e-01, -2.252e-01, 6.755e-02, -1.766e-01, 8.884e-02, -2.720e-03, -4.431e-02, -2.119e-02, 2.876e-01, -5.268e-01, -3.635e-01, -1.001e-01, -8.433e-01, 5.160e-01), r);\n\tr = MulAdd(s2_8, M4(-1.786e-01, 2.208e-01, 4.289e-01, 1.663e-01, -2.341e-01, 8.148e-03, -7.557e-02, 7.817e-02, -1.340e-01, -2.341e-01, 3.123e-02, 1.120e-01, -7.753e-01, 2.056e-01, -2.926e-01, -1.222e-01), r);\n\tr = MulAdd(s3_0, M4(-4.903e-02, 1.377e-01, 6.984e-02, -1.053e-02, -5.115e-01, 2.891e-01, -4.612e-01, -6.693e-01, 4.752e-02, -5.287e-02, -2.183e-02, 4.134e-01, 1.073e-02, 2.383e-01, -2.142e-01, 1.384e-01), r);\n\tr = MulAdd(s3_1, M4(1.680e-01, -1.307e-01, -1.038e-01, -2.130e-02, -1.231e+00, -2.602e-01, -5.456e-01, 3.295e-01, -5.588e-02, 1.505e-01, -4.784e-02, -1.493e-01, 1.202e-01, -2.349e-01, -1.452e-01, -5.111e-02), r);\n\tr = MulAdd(s3_2, M4(-8.858e-02, -1.293e-01, 9.441e-02, -1.295e-01, -3.373e-01, -1.841e-01, -1.818e-01, 1.570e+00, -8.336e-02, 2.012e-01, 1.362e-01, 1.830e-01, -6.053e-02, -1.725e-03, -2.011e-01, -1.021e-01), r);\n\tr = MulAdd(s3_3, M4(-2.017e-01, 3.505e-01, 3.541e-02, 2.044e-01, -3.839e-01, 5.124e-01, 1.104e-01, 1.311e-01, 1.022e-01, -1.111e-01, -2.883e-01, 1.086e-01, 9.932e-02, 1.308e-01, 2.954e-01, -1.416e-02), r);\n\tr = MulAdd(s3_4, M4(6.088e-02, -4.532e-02, -1.302e-01, -1.067e-01, -4.196e+00, 7.383e-01, -2.786e-01, -2.053e+00, -3.758e-01, 2.955e-01, -1.898e-01, 1.875e-01, 1.263e-01, 9.931e-03, 1.016e-01, 5.201e-02), r);\n\tr = MulAdd(s3_5, M4(9.722e-03, -5.478e-02, -1.823e-01, -3.983e-02, -2.434e+00, -4.700e-01, 4.168e-01, 3.938e-01, 1.251e-01, -2.933e-01, -2.054e-02, 8.827e-02, 2.048e-02, 6.212e-02, 1.448e-01, 1.042e-01), r);\n\tr = MulAdd(s3_6, M4(-1.605e-02, 1.851e-01, 2.427e-01, 4.894e-02, -6.032e-01, -3.413e-02, 4.158e-01, 6.903e-01, -1.865e-02, -1.318e-02, 1.003e-01, 3.193e-01, 4.503e-02, 1.880e-01, -4.608e-02, -3.137e-01), r);\n\tr = MulAdd(s3_7, M4(-4.125e-02, -1.494e-01, 8.853e-01, -1.540e-01, -2.445e-01, 2.292e-01, 1.684e+00, 1.098e+00, 5.576e-02, -8.241e-02, 2.507e-01, -1.086e-01, 1.392e-01, -2.115e-01, -2.600e-01, 9.268e-02), r);\n\tr = MulAdd(s3_8, M4(5.677e-02, 9.206e-02, 5.863e-02, 5.663e-02, -2.019e+00, -1.006e-01, -1.769e-01, -3.617e-01, 1.293e-02, -2.766e-01, 2.843e-02, 3.331e-01, -2.316e-01, -1.762e-01, -6.013e-03, -2.482e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 8.007e-03, 2.570e-02, 2.487e-03, -2.496e-02 };\n\tr = MulAdd(s0_0, M4(3.260e-02, 1.675e-01, 8.130e-02, -2.153e-01, -1.987e-01, -9.443e-02, 3.512e-01, 2.289e-02, 9.481e-02, -1.921e-01, -3.818e-01, 1.373e-01, -9.032e-02, 7.892e-02, 1.392e-01, -6.033e-02), r);\n\tr = MulAdd(s0_1, M4(-8.203e-02, -1.015e-01, -1.313e-02, -5.337e-02, -2.948e-01, -2.678e-01, -2.321e-01, -5.995e-01, 1.364e-01, 1.030e-01, 1.546e-01, -1.179e-02, 1.996e-01, 2.244e-01, -2.304e-01, -1.304e-02), r);\n\tr = MulAdd(s0_2, M4(-2.319e-02, -2.236e-02, 3.976e-02, 1.804e-01, 6.474e-02, 1.315e-01, -1.456e-02, -1.538e-01, 3.061e-02, -1.998e-02, -1.918e-02, -8.662e-02, -1.980e-01, -1.596e-01, -4.624e-01, -3.728e-01), r);\n\tr = MulAdd(s0_3, M4(-3.171e-03, -2.887e-02, 3.107e-01, -8.532e-02, 1.489e-02, -2.798e-01, -2.458e-02, 2.922e-01, 5.196e-02, 2.333e-02, -4.100e-01, 3.851e-01, 8.566e-02, 1.655e-01, 3.680e-01, -3.572e-01), r);\n\tr = MulAdd(s0_4, M4(4.618e-02, -3.100e-02, -1.849e-01, 2.228e-02, -2.182e-01, -5.806e-01, -6.298e-02, 2.421e-01, 4.266e-01, 7.738e-02, 4.856e-03, -1.191e-01, 3.469e-01, -8.683e-02, -2.397e-01, 6.512e-02), r);\n\tr = MulAdd(s0_5, M4(8.363e-02, -9.745e-02, 2.398e-01, -1.335e-01, -1.585e-01, -1.161e-02, 2.482e-02, 1.319e-03, -4.696e-02, -6.675e-02, -7.519e-02, 1.125e-01, -1.199e-01, -9.094e-03, -2.590e-01, -8.812e-01), r);\n\tr = MulAdd(s0_6, M4(7.745e-02, 3.414e-02, 6.378e-02, -8.388e-02, 4.456e-02, 1.354e-02, -1.138e-02, 1.131e-01, 2.361e-01, 1.828e-01, -2.135e-01, -1.100e-02, 1.683e-01, 2.134e-01, 1.832e-01, 8.420e-02), r);\n\tr = MulAdd(s0_7, M4(-3.223e-01, -4.870e-02, -1.457e-01, 1.996e-01, -1.632e-01, -1.811e-01, -1.625e-01, 4.046e-02, -8.959e-02, 1.432e-01, -2.360e-02, -9.415e-02, -1.547e-01, 1.379e-01, 5.098e-01, -4.069e-01), r);\n\tr = MulAdd(s0_8, M4(1.568e-01, -2.510e-02, -9.894e-02, 1.124e-01, -1.372e-01, 5.952e-03, 4.501e-02, 9.591e-03, 1.430e-01, 6.422e-02, -1.412e-03, 1.042e-02, 4.601e-02, -5.133e-02, -7.936e-02, -1.621e-01), r);\n\tr = MulAdd(s1_0, M4(1.380e-01, 1.774e-01, 2.958e-01, -2.044e-01, -2.085e-01, 7.192e-03, -7.903e-02, 6.119e-02, -3.542e-02, -1.060e-01, -1.832e-01, 3.603e-01, -3.854e-02, 5.092e-02, -1.092e-01, -2.074e-01), r);\n\tr = MulAdd(s1_1, M4(-5.638e-02, -1.659e-01, -1.006e-02, 5.355e-02, -2.243e-01, 3.533e-01, -2.130e-01, 6.480e-02, 4.462e-02, 1.065e-01, 1.598e-01, 5.025e-03, -3.810e-02, 1.012e-01, 2.123e-02, 2.124e-01), r);\n\tr = MulAdd(s1_2, M4(5.207e-02, -1.428e-01, 1.745e-01, 2.563e-01, 4.058e-01, 5.320e-02, 3.527e-03, -4.664e-02, -1.641e-03, -2.830e-02, 1.453e-02, 1.169e-01, -5.840e-01, -1.545e-01, 3.880e-01, 1.250e-01), r);\n\tr = MulAdd(s1_3, M4(-2.089e-01, 3.070e-02, 3.770e-01, -2.868e-01, -1.965e-01, -2.499e-01, -2.145e-01, 5.348e-02, -1.201e-01, -3.454e-01, -5.723e-01, 4.313e-01, -7.068e-02, -6.358e-02, -2.426e-02, -2.841e-01), r);\n\tr = MulAdd(s1_4, M4(1.315e-01, 2.464e-01, -2.505e-01, -1.589e-01, 4.124e-01, 4.860e-01, -2.493e-01, 1.201e-01, -1.304e-01, -1.620e-01, 2.228e-01, 4.485e-02, 6.945e-02, -2.261e-01, -8.190e-04, 5.678e-01), r);\n\tr = MulAdd(s1_5, M4(3.529e-01, 1.800e-02, -9.794e-02, -1.160e-01, 7.052e-01, 4.176e-01, 5.822e-02, -5.300e-02, -1.144e-01, -1.890e-01, 1.337e-01, 1.163e-01, -5.024e-01, 9.977e-01, 1.831e-01, 2.166e-02), r);\n\tr = MulAdd(s1_6, M4(-1.239e-01, 1.465e-01, 3.700e-01, -1.638e-01, -1.022e-01, -3.216e-02, -2.412e-02, -2.505e-02, 5.450e-02, -1.325e-02, -2.760e-01, 5.219e-02, -5.604e-02, 3.602e-02, -1.026e-01, 4.063e-02), r);\n\tr = MulAdd(s1_7, M4(1.669e-01, 2.580e-01, -2.923e-01, -2.497e-01, 1.135e-01, -1.599e-01, -2.419e-01, -1.202e-01, -3.903e-01, -2.141e-01, 9.642e-02, -6.096e-02, -6.762e-01, 5.614e-01, 3.076e-01, -4.187e-01), r);\n\tr = MulAdd(s1_8, M4(5.456e-02, -6.641e-02, -3.839e-01, 8.629e-02, 1.149e-01, 1.204e-02, -2.509e-02, -1.413e-03, -1.329e-02, -5.670e-02, -6.186e-02, 5.108e-02, 3.592e-02, 4.563e-01, -7.450e-02, -2.259e-01), r);\n\tr = MulAdd(s2_0, M4(1.013e-01, -2.126e-02, -1.260e-01, 8.480e-03, -3.292e-02, 6.069e-04, 4.154e-02, 5.578e-02, 1.586e-02, 8.252e-02, 1.237e-01, -1.312e-01, 1.489e-01, 2.561e-01, -9.917e-02, -1.060e-01), r);\n\tr = MulAdd(s2_1, M4(-1.285e-01, -8.314e-02, 1.521e-02, 1.037e-01, -1.021e-02, 7.112e-02, -2.319e-02, 7.051e-04, -1.101e-01, -1.896e-01, -2.458e-01, -7.399e-02, -4.133e-02, 1.606e-01, -1.511e-01, -2.425e-01), r);\n\tr = MulAdd(s2_2, M4(7.543e-02, 9.235e-02, 2.139e-01, 2.879e-01, 9.583e-02, 4.372e-02, -8.231e-02, 2.498e-01, 1.241e-01, 1.377e-02, 2.380e-01, 2.586e-02, -1.926e-01, -1.406e-01, -3.627e-01, -8.414e-02), r);\n\tr = MulAdd(s2_3, M4(9.655e-03, -9.581e-02, -6.071e-02, 2.231e-01, -1.148e-01, -3.513e-02, -2.013e-02, -1.094e-01, -1.606e-01, 9.180e-02, 3.498e-01, -2.726e-01, -7.696e-03, -4.007e-01, -8.497e-02, -6.989e-01), r);\n\tr = MulAdd(s2_4, M4(4.965e-03, -1.346e-01, -4.517e-02, 2.043e-01, -1.348e-01, 1.451e-01, 8.113e-02, -8.530e-02, -1.414e-01, 7.261e-02, -2.368e-01, 1.601e-01, -2.438e-02, -2.554e-01, 4.057e-01, -2.224e-01), r);\n\tr = MulAdd(s2_5, M4(-8.716e-02, 1.496e-01, -4.429e-02, 6.451e-01, -9.547e-03, -3.189e-02, -1.096e-01, -5.416e-02, -5.032e-01, 1.331e-01, 2.389e-02, 1.028e-01, -3.186e-01, -2.524e-01, 2.663e-02, -9.995e-03), r);\n\tr = MulAdd(s2_6, M4(-2.465e-01, 1.585e-01, 3.196e-01, -9.098e-02, 2.765e-02, -1.793e-01, 1.519e-01, -9.565e-04, -1.160e-01, -3.035e-02, -1.082e-01, 3.172e-02, 5.502e-01, -6.251e-01, -4.487e-01, 1.932e-01), r);\n\tr = MulAdd(s2_7, M4(-5.017e-01, -5.180e-01, -2.682e-01, -4.715e-01, 1.958e-02, -7.007e-02, -3.332e-02, -8.389e-02, -1.135e-01, -2.956e-02, 1.994e-01, 2.315e-02, -2.553e-01, -3.153e-03, 4.275e-01, 1.669e+00), r);\n\tr = MulAdd(s2_8, M4(1.400e-01, 6.775e-01, 5.287e-02, 2.007e-02, 1.213e-01, -1.460e-03, -2.313e-02, 1.282e-01, -8.355e-02, 2.399e-01, -5.277e-02, -1.499e-01, 7.246e-02, -2.553e-02, 2.185e-01, 8.662e-01), r);\n\tr = MulAdd(s3_0, M4(3.069e-02, -3.668e-02, -3.646e-02, 1.140e-01, -7.882e-02, 2.759e-01, 9.170e-01, 2.779e-01, 1.459e-01, 3.766e-02, -1.214e-01, 5.718e-03, -3.323e-02, 9.705e-02, -1.282e-02, -1.401e-01), r);\n\tr = MulAdd(s3_1, M4(-1.405e-02, 2.809e-02, 1.466e-01, -1.286e-01, 4.754e-01, 8.076e-01, 5.775e-02, -5.403e-01, 1.919e-01, -2.015e-01, -1.976e-01, -8.544e-02, -8.431e-02, 9.302e-02, 6.560e-02, 2.011e-02), r);\n\tr = MulAdd(s3_2, M4(2.107e-01, 2.334e-02, -2.591e-01, -1.023e-01, 6.461e-01, 1.138e+00, 3.917e-01, 2.270e-01, 4.023e-01, 6.135e-02, 4.125e-02, -5.551e-02, 1.871e-02, -1.344e-01, -1.534e-01, 1.216e-01), r);\n\tr = MulAdd(s3_3, M4(8.077e-02, -1.149e-01, 6.733e-02, -9.044e-03, -6.431e-02, -1.755e-02, 2.617e+00, 5.203e-01, 8.910e-02, 9.642e-02, 3.720e-01, -2.326e-01, -1.142e-01, -4.017e-02, 2.351e-01, -1.062e-01), r);\n\tr = MulAdd(s3_4, M4(-2.427e-01, -4.425e-03, 4.260e-01, -6.273e-02, 4.224e+00, -2.047e+00, -1.911e+00, 2.329e+00, 2.987e-01, -3.286e-01, -1.115e-01, 2.053e-01, -5.309e-02, -8.751e-02, -1.275e-02, -2.105e-01), r);\n\tr = MulAdd(s3_5, M4(-1.413e-02, -4.404e-01, -1.525e-01, -1.703e-01, -9.999e-01, 5.276e-01, 4.779e-01, -5.145e-01, 4.772e-01, 2.730e-02, -7.651e-02, -2.235e-01, -1.122e-01, -1.686e-01, 9.595e-02, -1.169e-01), r);\n\tr = MulAdd(s3_6, M4(-1.162e-01, 3.109e-01, -2.686e-01, -1.492e-01, 2.122e-01, 6.911e-01, 7.412e-01, 3.675e-02, 1.420e-01, -3.979e-02, -3.526e-02, -1.170e-01, 2.192e-01, 6.369e-02, 2.568e-01, 1.606e-02), r);\n\tr = MulAdd(s3_7, M4(-2.482e-02, 6.355e-01, 4.230e-01, -4.331e-01, -1.462e+00, -9.944e-01, 1.154e+00, 8.760e-01, 3.625e-01, 2.127e-01, 3.382e-01, 6.009e-02, 1.431e-01, 9.892e-02, -2.409e-01, 4.223e-02), r);\n\tr = MulAdd(s3_8, M4(-1.832e-02, 7.811e-02, -1.928e-02, 1.448e-01, -1.288e+00, 1.805e-01, 6.324e-01, -2.704e-02, 6.456e-02, -6.364e-02, 4.971e-02, -6.535e-03, 1.766e-01, 5.142e-02, -1.375e-01, 2.532e-01), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 3.009e-03, -1.445e-03, 8.191e-03, -7.852e-03 };\n\tr = MulAdd(s0_0, M4(2.802e-01, -3.301e-02, -1.047e-01, 6.427e-02, 1.357e-02, -8.015e-02, 7.763e-02, -9.646e-02, 1.136e-01, -1.443e-01, -3.950e-02, 2.744e-01, 8.414e-03, -1.005e-01, -1.683e-01, -5.766e-02), r);\n\tr = MulAdd(s0_1, M4(2.907e-01, 1.339e-01, -7.005e-02, 9.074e-02, -2.491e-03, 6.498e-02, 1.121e-01, -9.272e-02, 3.415e-01, 1.949e-01, -2.613e-01, -2.328e-01, 1.311e-01, 1.285e-01, 1.685e-02, -4.780e-02), r);\n\tr = MulAdd(s0_2, M4(1.671e-01, -2.228e-02, -5.777e-02, -5.853e-02, 1.243e-02, -3.269e-02, 8.757e-03, -1.478e-01, -4.190e-02, 3.164e-02, 2.922e-01, -3.017e-01, -6.631e-02, 5.380e-02, -2.750e-02, -7.771e-02), r);\n\tr = MulAdd(s0_3, M4(-2.454e-02, 2.148e-01, -1.116e-01, -1.125e-01, -1.792e-01, -7.021e-01, -2.183e-01, 2.920e-01, -1.698e-01, 1.827e-01, -6.779e-02, 9.333e-02, -2.153e-01, 2.441e-01, 9.794e-02, -2.729e-01), r);\n\tr = MulAdd(s0_4, M4(-6.750e-02, 1.324e-01, -5.087e-02, 2.746e-01, 1.579e-01, -1.909e-01, -7.631e-01, -4.744e-01, -1.732e-01, -2.741e-01, 4.145e-02, -2.124e-01, 7.946e-02, -1.579e-01, 2.856e-01, 5.090e-02), r);\n\tr = MulAdd(s0_5, M4(8.392e-02, -1.504e-01, 2.815e-01, -1.174e-01, 3.942e-02, 1.918e-02, 1.561e-01, -1.457e-01, -5.976e-02, 1.230e-01, -2.539e-01, -1.965e-01, 1.869e-01, -1.795e-01, -1.283e-01, -3.447e-02), r);\n\tr = MulAdd(s0_6, M4(-3.547e-03, -6.576e-03, -5.087e-02, 3.466e-02, -3.130e-03, -3.176e-01, 8.737e-02, 4.018e-02, -6.489e-02, -1.580e-03, -8.784e-03, -4.500e-02, 2.343e-03, 5.945e-02, -5.201e-02, -3.127e-02), r);\n\tr = MulAdd(s0_7, M4(-3.546e-02, 1.145e-01, -4.773e-02, 8.280e-02, 6.746e-03, -1.036e-01, -6.616e-02, -1.224e-01, 7.156e-02, -1.941e-01, 9.307e-02, -3.567e-02, -2.215e-01, 2.437e-01, -5.542e-04, 1.208e-01), r);\n\tr = MulAdd(s0_8, M4(-1.115e-02, -4.687e-02, -3.210e-02, -1.470e-01, -4.609e-02, 4.657e-02, -6.476e-02, -1.372e-01, -4.956e-03, 1.024e-01, -2.349e-01, -8.472e-02, -2.757e-02, -1.707e-02, 2.065e-01, 1.863e-02), r);\n\tr = MulAdd(s1_0, M4(3.728e-02, -7.100e-02, -4.937e-02, 6.239e-02, -7.377e-03, -3.033e-02, 1.675e-01, -1.863e-02, -2.631e-02, -9.633e-02, -1.130e-01, -1.201e-01, 1.414e-01, -1.737e-01, -8.031e-02, -6.951e-02), r);\n\tr = MulAdd(s1_1, M4(-3.703e-02, 4.012e-02, -2.289e-02, 3.332e-02, 2.161e-02, 8.828e-02, 5.544e-02, 1.017e-01, 3.684e-01, 3.149e-01, 3.662e-01, 4.298e-02, 1.966e-01, -2.697e-02, 2.216e-02, 7.540e-02), r);\n\tr = MulAdd(s1_2, M4(-4.974e-02, -3.826e-02, -2.810e-02, -8.318e-02, 3.356e-02, -7.605e-02, -1.087e-01, 1.987e-02, -1.153e-01, -1.039e-01, -5.868e-02, -3.313e-02, -1.750e-02, 3.884e-03, -9.170e-02, -1.011e-01), r);\n\tr = MulAdd(s1_3, M4(2.119e-01, -1.340e-01, -3.650e-02, 2.219e-01, 3.634e-01, 3.474e-01, 2.302e-01, 7.494e-02, -2.253e-01, 1.239e-01, -6.032e-02, 1.293e-01, 9.583e-02, 4.424e-02, -3.920e-02, -1.870e-01), r);\n\tr = MulAdd(s1_4, M4(-2.664e-01, 8.462e-02, -4.745e-01, 1.985e-01, 2.803e-01, 7.429e-02, 7.814e-01, 4.658e-01, 3.661e-01, -2.319e-02, 3.324e-01, 2.860e-01, 3.178e-01, 9.301e-02, 1.316e-01, 4.547e-02), r);\n\tr = MulAdd(s1_5, M4(5.369e-02, 6.912e-02, 2.659e-01, -1.491e-01, 4.462e-02, -4.823e-02, 1.130e-01, 1.710e-02, -7.604e-02, -7.003e-02, 3.093e-01, 2.537e-01, 2.466e-01, -1.039e-01, 2.413e-02, -1.256e-01), r);\n\tr = MulAdd(s1_6, M4(-1.188e-01, 1.026e-01, 4.215e-02, -9.677e-02, 2.443e-03, 1.957e-01, 2.961e-02, -5.553e-02, -3.488e-02, 2.515e-02, -4.840e-03, 1.814e-02, 9.644e-02, -8.802e-02, 3.516e-03, -2.940e-03), r);\n\tr = MulAdd(s1_7, M4(-1.792e-01, 1.391e-01, 1.322e-02, -1.514e-02, -2.173e-01, 1.743e-01, 1.530e-01, 5.286e-02, -8.655e-02, 2.541e-01, 6.282e-02, 1.167e-01, 9.664e-02, 2.304e-01, -1.538e-01, -1.298e-01), r);\n\tr = MulAdd(s1_8, M4(-1.720e-01, 4.693e-02, 2.790e-01, 2.187e-02, -4.386e-02, 7.714e-03, 9.800e-02, 6.484e-03, -5.497e-02, 1.216e-01, 3.924e-02, 5.162e-02, 1.403e-01, -5.364e-03, -6.795e-03, -6.163e-02), r);\n\tr = MulAdd(s2_0, M4(2.905e-01, -3.799e-02, 1.332e-01, 2.496e-02, 7.202e-02, -3.659e-01, -2.940e-02, -1.028e-03, -1.221e-01, 1.147e-01, 3.613e-02, 9.125e-02, -8.760e-03, 1.489e-02, -9.652e-02, 4.452e-03), r);\n\tr = MulAdd(s2_1, M4(4.027e-01, -2.178e-01, -8.478e-02, 2.903e-01, 2.463e-02, 9.527e-03, -2.835e-01, 2.066e-01, -6.698e-02, -2.653e-01, -6.667e-02, 4.320e-02, -2.610e-01, -1.351e-01, 7.826e-02, -5.429e-02), r);\n\tr = MulAdd(s2_2, M4(-1.249e-01, 4.376e-02, -6.245e-02, 1.702e-01, -5.731e-02, 8.022e-02, -1.335e-01, 1.528e-01, -2.969e-02, 1.062e-01, -1.303e-01, 1.226e-01, 2.030e-02, 5.205e-02, -1.877e-01, 4.309e-02), r);\n\tr = MulAdd(s2_3, M4(-6.329e-02, -1.286e-01, -7.222e-02, 5.592e-03, -3.023e-02, 9.502e-02, -4.077e-02, -2.299e-01, -1.038e-01, -5.742e-02, -5.106e-04, 5.143e-02, 3.098e-02, -1.235e-01, 1.987e-02, 1.477e-02), r);\n\tr = MulAdd(s2_4, M4(1.113e-01, -1.761e-01, 5.038e-02, -1.304e-01, 3.668e-01, -3.430e-01, 2.169e-01, 3.877e-01, -3.750e-02, 2.473e-01, 3.416e-02, 2.184e-01, 5.168e-01, -7.132e-02, 3.818e-01, -1.508e-01), r);\n\tr = MulAdd(s2_5, M4(1.479e-01, -8.656e-02, -1.700e-01, 3.874e-01, 2.286e-02, -8.854e-02, 3.305e-02, -4.668e-03, -1.481e-01, 5.115e-02, 2.686e-01, 4.113e-01, -3.740e-01, -2.013e-01, 9.838e-04, 3.008e-01), r);\n\tr = MulAdd(s2_6, M4(3.428e-01, -3.200e-01, 7.593e-02, 1.911e-01, 1.219e-01, 1.211e-02, -5.694e-02, -5.767e-02, 3.119e-02, -7.609e-02, 6.471e-02, 1.215e-01, -2.793e-04, 1.650e-02, 7.190e-03, -4.468e-02), r);\n\tr = MulAdd(s2_7, M4(3.970e-01, -3.192e-01, -5.639e-02, 8.182e-02, -2.831e-02, 4.036e-02, 7.004e-02, 1.095e-01, -3.655e-02, 2.443e-01, 5.606e-02, -4.974e-02, 9.825e-02, 1.158e-01, -5.104e-02, -2.986e-02), r);\n\tr = MulAdd(s2_8, M4(1.440e-01, 5.504e-02, -2.020e-01, 2.618e-03, -1.098e-02, -3.678e-02, 7.661e-02, 5.652e-02, -7.426e-02, 5.461e-02, 4.239e-01, 2.093e-01, 9.316e-03, -3.679e-02, 6.108e-02, 2.036e-01), r);\n\tr = MulAdd(s3_0, M4(1.806e-02, 2.233e-02, 5.056e-02, 1.758e-01, 3.566e-02, -1.383e-01, 5.349e-02, 1.066e-01, 3.314e-02, -1.258e-01, -2.885e-02, -6.648e-02, -6.860e-03, -2.283e-02, -1.052e-01, -1.623e-02), r);\n\tr = MulAdd(s3_1, M4(7.369e-02, -3.141e-02, 3.877e-03, 8.113e-03, -1.773e-01, 5.122e-03, -3.198e-01, 9.005e-02, 7.291e-02, -1.519e-01, -1.501e-01, -8.202e-02, -4.729e-02, -2.877e-02, -4.056e-02, 7.599e-02), r);\n\tr = MulAdd(s3_2, M4(1.282e-01, 2.477e-03, 6.185e-02, 3.967e-02, -1.343e-01, 8.884e-02, 5.299e-02, -7.324e-02, 1.842e-01, -3.053e-02, -1.335e-01, -6.790e-03, -8.128e-02, 6.665e-02, 1.583e-03, -5.358e-02), r);\n\tr = MulAdd(s3_3, M4(1.135e-01, 9.360e-03, 1.646e-01, 1.844e-01, 1.104e-02, 7.072e-02, -9.632e-02, -1.169e-01, -1.458e-01, 2.540e-02, -5.132e-02, -1.627e-01, -1.066e-01, -4.819e-02, -4.340e-02, -5.074e-02), r);\n\tr = MulAdd(s3_4, M4(-1.198e-01, -7.965e-02, -2.989e-01, -4.946e-01, -1.666e-02, -2.136e-01, -3.575e-02, 1.351e-01, -8.546e-02, 2.553e-02, -7.878e-02, -3.233e-01, -2.955e-01, -7.765e-02, 1.450e-01, -2.114e-01), r);\n\tr = MulAdd(s3_5, M4(-7.593e-02, -1.849e-03, -1.688e-01, 3.626e-02, 4.408e-03, 4.014e-02, -1.401e-01, -2.239e-01, 9.538e-02, -2.310e-01, 2.831e-02, 5.065e-02, 1.135e-01, 2.542e-02, -4.365e-01, 4.393e-02), r);\n\tr = MulAdd(s3_6, M4(-5.217e-02, -1.327e-02, -1.851e-02, 2.806e-02, 4.648e-02, -9.047e-04, 2.961e-02, -2.922e-02, 6.360e-02, -3.494e-02, 2.573e-02, 1.309e-02, -2.512e-03, -4.086e-02, -2.086e-03, -6.018e-02), r);\n\tr = MulAdd(s3_7, M4(9.887e-02, -9.515e-03, 1.306e-01, 5.290e-02, 1.832e-01, -2.549e-01, -4.640e-02, -1.256e-01, 4.915e-02, -5.163e-02, 3.044e-02, -9.871e-02, 8.168e-03, -7.112e-02, -5.743e-02, 3.687e-02), r);\n\tr = MulAdd(s3_8, M4(-6.440e-02, 2.530e-02, -2.166e-03, -4.680e-02, 8.009e-02, -6.634e-02, -1.390e-01, -2.524e-02, 6.524e-02, -1.120e-01, -4.252e-02, -8.413e-03, -2.017e-02, 1.444e-02, -4.483e-02, 4.690e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -6.039e-04, -3.875e-03, -3.020e-03, 2.282e-03 };\n\tr = MulAdd(s0_0, M4(-1.005e-01, -6.367e-02, 4.428e-02, 1.687e-02, -9.639e-02, -1.209e-01, -1.374e-02, 4.932e-02, -9.949e-02, -2.569e-01, 1.199e-01, 1.077e-02, 5.110e-02, -1.129e-01, 6.104e-02, -4.656e-03), r);\n\tr = MulAdd(s0_1, M4(-2.156e-01, 8.505e-02, 4.815e-04, -1.042e-01, -2.724e-01, -1.870e-01, 3.876e-02, 7.840e-02, -4.018e-01, -8.239e-01, 2.611e-01, -3.623e-01, -6.999e-03, 1.848e-02, 6.095e-02, -2.318e-02), r);\n\tr = MulAdd(s0_2, M4(-2.195e-01, -6.727e-02, 7.111e-02, 5.119e-02, 7.396e-02, 1.116e-02, -1.261e-02, 9.531e-02, -3.892e-01, 1.430e-01, -9.840e-02, -2.423e-01, 2.669e-01, 3.009e-02, -2.478e-02, 1.168e-01), r);\n\tr = MulAdd(s0_3, M4(-4.344e-01, 8.202e-02, 9.272e-03, -8.384e-02, -8.136e-02, -4.359e-01, 2.361e-01, -2.183e-01, 4.609e-02, -2.144e-02, 9.525e-03, -7.197e-02, -9.339e-02, 1.927e-01, -1.687e-02, 3.193e-02), r);\n\tr = MulAdd(s0_4, M4(4.702e-01, 1.415e-04, 1.097e-01, 2.415e-01, 1.899e-01, -7.324e-01, -4.745e-03, -1.237e-01, -2.043e-01, 2.674e-02, 6.899e-01, 8.700e-02, 5.083e-02, 2.271e-01, 4.884e-02, 3.767e-01), r);\n\tr = MulAdd(s0_5, M4(6.758e-02, -4.638e-02, 9.477e-02, -8.290e-02, -1.994e-01, 1.090e-01, -5.148e-02, -1.470e-01, 7.433e-02, 3.404e-01, 1.020e-01, -8.353e-02, 1.793e-01, -1.368e-01, 6.375e-02, 5.993e-02), r);\n\tr = MulAdd(s0_6, M4(1.596e-02, 3.589e-02, 1.177e-02, 1.541e-01, -1.159e-01, -1.621e-02, 2.451e-01, 2.767e-01, -3.754e-04, 4.995e-02, -6.760e-02, -9.945e-02, 4.017e-01, 4.413e-02, 2.189e-02, 4.126e-02), r);\n\tr = MulAdd(s0_7, M4(1.635e-01, -1.853e-01, -1.823e-01, -1.003e-01, -4.884e-02, 1.686e-01, 7.826e-02, 5.419e-01, -1.017e-01, 7.007e-02, 2.084e-01, 2.030e-01, 5.150e-01, -1.861e-01, -3.037e-01, -3.846e-01), r);\n\tr = MulAdd(s0_8, M4(1.162e-01, 9.675e-02, -9.807e-02, 7.794e-02, 1.154e-01, 7.680e-02, 7.823e-02, 1.665e-01, 1.414e-01, 4.509e-02, -1.327e-02, 1.752e-01, -2.721e-01, -9.636e-04, 2.198e-02, -9.405e-02), r);\n\tr = MulAdd(s1_0, M4(-3.554e-02, 7.673e-02, -1.735e-02, 3.910e-02, -9.934e-02, 1.798e-01, -4.244e-02, -2.008e-02, -1.586e-01, 7.918e-02, 6.812e-02, 1.784e-01, -2.173e-01, 8.736e-02, -3.130e-02, -1.487e-02), r);\n\tr = MulAdd(s1_1, M4(1.142e-01, 2.330e-02, -7.096e-03, 5.291e-02, -3.702e-01, 2.102e-01, 7.156e-02, -1.416e-01, 1.017e-01, 3.888e-01, -5.335e-02, 9.686e-02, -1.093e-01, -1.631e-02, -2.884e-03, -4.091e-02), r);\n\tr = MulAdd(s1_2, M4(4.795e-02, 4.423e-03, 1.494e-02, 2.666e-02, 1.261e-01, -7.251e-02, 2.103e-02, 1.095e-01, 2.166e-01, -1.249e-01, 8.981e-03, 1.792e-01, -3.697e-02, 6.864e-03, -1.141e-02, 2.430e-02), r);\n\tr = MulAdd(s1_3, M4(-1.206e-01, 1.584e-03, -1.789e-02, -1.335e-02, 2.398e-01, 8.681e-01, -1.241e-01, -4.454e-02, -7.396e-02, 1.759e-02, -9.138e-02, 1.573e-01, -2.025e-01, 8.569e-02, 2.132e-02, 9.791e-02), r);\n\tr = MulAdd(s1_4, M4(-4.834e-02, -7.974e-01, 2.858e-01, -2.441e-01, 4.163e-01, -1.650e-01, -1.897e-01, 1.309e-01, 4.031e-02, -8.242e-02, 3.338e-01, 3.567e-01, -1.532e-01, 2.807e-01, -7.324e-02, 5.093e-03), r);\n\tr = MulAdd(s1_5, M4(-1.538e-01, 9.244e-02, -7.570e-02, -4.333e-02, -1.407e-01, -4.201e-02, -4.186e-02, -1.603e-01, -2.031e-01, 6.309e-02, -8.191e-02, 9.121e-02, -8.138e-02, -4.037e-02, 3.793e-02, 4.240e-02), r);\n\tr = MulAdd(s1_6, M4(1.780e-01, 1.059e-01, -5.233e-03, 1.087e-01, 1.808e-01, -1.409e-01, 1.162e-02, -1.312e-01, 6.866e-02, 1.401e-02, 6.420e-02, 5.614e-02, -6.830e-02, 1.731e-02, 5.889e-02, 2.257e-02), r);\n\tr = MulAdd(s1_7, M4(2.057e-01, -2.093e-02, -1.741e-01, 9.891e-02, -3.673e-02, 3.314e-02, -2.223e-01, -3.177e-01, 2.374e-01, -5.871e-02, -5.086e-02, -9.418e-02, -1.935e-02, -1.902e-02, -1.255e-01, -2.744e-01), r);\n\tr = MulAdd(s1_8, M4(1.654e-01, 7.328e-02, 2.874e-02, 1.256e-01, -2.608e-01, 1.926e-03, 4.500e-02, -7.882e-02, -1.035e-02, -3.478e-02, -1.061e-01, -8.474e-02, -2.438e-01, -6.889e-02, -7.579e-02, -1.871e-01), r);\n\tr = MulAdd(s2_0, M4(6.493e-02, 1.357e-01, -6.197e-02, -5.055e-02, 2.568e-01, -5.699e-02, -1.266e-01, -1.411e-02, 2.936e-02, -5.234e-02, -5.882e-03, -8.014e-02, -5.334e-02, -8.555e-02, 5.632e-02, 8.296e-03), r);\n\tr = MulAdd(s2_1, M4(-3.582e-01, 2.351e-01, -1.636e-01, 2.172e-01, -1.840e-01, 9.838e-02, -7.565e-02, 1.535e-01, 8.151e-02, 3.002e-02, 1.149e-01, 1.180e-01, 1.323e-01, -7.682e-03, 5.013e-02, -2.190e-02), r);\n\tr = MulAdd(s2_2, M4(-1.957e-01, -5.823e-02, -1.131e-01, -7.025e-02, 3.355e-01, 1.378e-01, -2.046e-01, 2.575e-01, 1.663e-01, 2.567e-02, -3.703e-02, -9.489e-02, -6.431e-02, -6.700e-02, 9.598e-02, 4.460e-03), r);\n\tr = MulAdd(s2_3, M4(-1.522e-01, 1.335e-01, -2.140e-01, 3.368e-02, -5.076e-02, 2.412e-01, 6.141e-03, 2.456e-02, -9.105e-03, 1.014e-02, -1.056e-02, 1.368e-01, 8.030e-02, -2.874e-02, -7.499e-02, -2.675e-02), r);\n\tr = MulAdd(s2_4, M4(2.115e-02, -6.849e-02, -8.528e-02, -3.270e-01, 2.112e-02, 7.309e-02, -3.852e-02, 2.604e-01, 1.772e-01, 4.115e-01, -2.443e-01, 3.100e-01, 3.139e-01, 3.829e-01, -2.701e-01, 1.463e-01), r);\n\tr = MulAdd(s2_5, M4(2.664e-03, 4.352e-02, -2.378e-01, 5.316e-02, -1.369e-01, -1.293e-01, 1.587e-01, 2.153e-01, 3.820e-01, -1.515e-01, -4.429e-02, 2.391e-01, -3.720e-01, -1.154e-01, -1.196e-01, 3.172e-01), r);\n\tr = MulAdd(s2_6, M4(-3.174e-01, -2.340e-01, 1.286e-01, -1.076e-01, 5.834e-02, 6.138e-02, -6.854e-03, 5.658e-02, 5.314e-02, -1.751e-02, 9.115e-03, 8.328e-03, 8.394e-03, 2.608e-02, 1.125e-01, 1.593e-01), r);\n\tr = MulAdd(s2_7, M4(-6.600e-01, 1.899e-01, 1.094e-01, 1.665e-02, 1.089e-01, -1.034e-01, -1.811e-01, -3.040e-01, 4.782e-01, 3.160e-02, -4.648e-02, 1.286e-01, 1.070e-01, -1.022e-01, 5.693e-02, -5.195e-02), r);\n\tr = MulAdd(s2_8, M4(3.748e-03, -4.142e-02, -7.021e-02, -2.596e-01, -2.444e-01, -6.341e-05, 4.125e-02, -7.382e-02, 4.456e-02, 3.144e-02, -5.055e-02, -1.724e-01, -1.835e-01, 4.462e-02, -1.398e-01, -2.631e-02), r);\n\tr = MulAdd(s3_0, M4(-1.892e-01, -2.298e-01, 7.045e-02, -6.423e-02, 7.789e-02, -9.540e-02, -3.161e-02, -5.171e-02, -3.656e-02, -6.148e-02, -1.413e-02, -8.995e-02, 2.536e-02, 1.995e-03, 3.317e-02, 1.918e-02), r);\n\tr = MulAdd(s3_1, M4(1.245e-02, -4.971e-03, 1.026e-02, -7.525e-02, -2.233e-01, -4.502e-01, -4.530e-03, -1.802e-01, -1.799e-01, 1.915e-02, 1.043e-02, 4.008e-02, 1.524e-01, 1.881e-03, -7.387e-02, 1.566e-02), r);\n\tr = MulAdd(s3_2, M4(-1.750e-01, 3.216e-03, -1.033e-03, -7.055e-02, -1.263e-01, 1.586e-01, 2.603e-02, -1.282e-01, 5.606e-02, -1.498e-02, -3.338e-02, -8.978e-03, -2.218e-02, -5.852e-02, -3.208e-03, -1.352e-02), r);\n\tr = MulAdd(s3_3, M4(-9.577e-02, -8.859e-02, 7.921e-02, -1.569e-02, -7.962e-02, 2.890e-02, 4.107e-02, -5.870e-02, 2.510e-02, 1.765e-02, 4.458e-02, 1.891e-02, 7.541e-02, 3.492e-02, 3.160e-02, 1.201e-02), r);\n\tr = MulAdd(s3_4, M4(-6.228e-02, 9.576e-02, -1.743e-01, -1.935e-01, 2.054e-01, 1.479e-01, 8.056e-04, 3.321e-02, -1.362e-01, 5.003e-01, 9.071e-02, 8.153e-02, 2.283e-01, -3.484e-01, 4.509e-02, -4.658e-01), r);\n\tr = MulAdd(s3_5, M4(2.528e-01, -9.286e-04, -2.468e-02, 1.338e-01, 4.431e-02, 3.503e-02, 1.304e-01, 1.652e-01, 4.628e-01, -2.670e-01, 1.880e-01, 1.516e-01, -1.538e-01, 1.379e-01, -3.334e-02, 2.977e-02), r);\n\tr = MulAdd(s3_6, M4(1.385e-01, -6.592e-02, -1.225e-01, -1.381e-01, -4.498e-02, -6.343e-03, 4.811e-02, 9.639e-02, 1.635e-02, -3.467e-02, 3.640e-03, -3.186e-02, 6.265e-02, 2.282e-01, 9.661e-02, 1.295e-01), r);\n\tr = MulAdd(s3_7, M4(-3.053e-03, 7.999e-02, 2.407e-01, 2.655e-01, -3.969e-01, -9.502e-03, 1.900e-02, 9.557e-02, -6.199e-02, -3.574e-02, 8.350e-02, -7.837e-02, -1.442e-02, -5.281e-03, 4.503e-01, 4.026e-01), r);\n\tr = MulAdd(s3_8, M4(-1.313e-01, 4.424e-02, -1.155e-02, 6.769e-02, 2.192e-02, 6.721e-02, 5.694e-03, 7.376e-02, -2.155e-01, -7.512e-02, 6.252e-03, -3.428e-01, 3.324e-01, 2.784e-03, -5.606e-02, 2.108e-01), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 8.385e-03, 1.035e-02, -6.465e-04, -6.502e-03 };\n\tr = MulAdd(s0_0, M4(8.947e-02, -1.234e-01, -3.169e-02, -9.158e-02, -1.406e-01, 6.941e-02, -1.367e-02, -1.406e-02, 9.073e-02, 5.642e-01, -2.007e-02, 9.725e-02, 7.122e-03, -1.956e-03, 6.532e-03, -5.457e-02), r);\n\tr = MulAdd(s0_1, M4(-1.130e-01, -4.645e-02, 3.624e-02, 3.391e-02, 3.882e-01, 2.453e-01, -2.237e-01, -2.271e-01, 2.803e-01, 1.718e-01, 3.255e-02, -2.046e-01, 1.441e-01, -1.880e-03, 2.335e-02, -1.232e-01), r);\n\tr = MulAdd(s0_2, M4(2.016e-01, 1.243e-01, -3.895e-02, -1.135e-01, -2.167e-02, 1.465e-02, -7.776e-02, -1.213e-01, -7.195e-03, 4.404e-03, 6.598e-02, -5.135e-02, -2.062e-01, -3.725e-02, -8.296e-03, 8.739e-03), r);\n\tr = MulAdd(s0_3, M4(-2.068e-02, -3.876e-02, 5.737e-02, 9.886e-02, -9.663e-02, -2.569e-01, 6.761e-02, -1.454e-01, 4.660e-02, 7.810e-01, -2.254e-01, 1.899e-01, -9.628e-02, 8.080e-02, -1.093e-02, 1.451e-02), r);\n\tr = MulAdd(s0_4, M4(3.133e-01, 2.759e-01, -9.917e-02, -3.134e-01, 1.137e-01, -5.446e-01, -2.044e-03, -5.215e-01, -6.867e-02, 5.254e-01, -1.466e-01, -3.048e-01, 3.408e-01, 5.791e-01, -2.594e-01, -4.879e-04), r);\n\tr = MulAdd(s0_5, M4(6.871e-02, -1.221e-01, -5.702e-02, -2.731e-02, 6.025e-01, 1.350e-01, -3.119e-01, -4.130e-01, 2.091e-01, 1.003e-01, 4.509e-02, -1.541e-01, 1.151e-01, -1.558e-01, 6.309e-03, -2.192e-01), r);\n\tr = MulAdd(s0_6, M4(2.139e-02, 1.540e-02, -9.451e-02, 8.898e-02, 1.983e-02, -1.259e-01, 2.162e-01, -9.477e-02, -2.253e-01, -1.456e-01, -2.432e-02, 9.649e-02, 2.147e-02, -9.523e-02, 2.042e-02, -7.790e-02), r);\n\tr = MulAdd(s0_7, M4(-3.105e-03, 1.944e-01, -1.808e-01, -3.058e-02, 4.007e-01, 5.645e-01, -2.452e-01, -7.366e-02, 1.279e-02, 3.212e-02, -1.573e-01, -1.267e-01, 1.613e-02, -1.976e-01, -1.519e-01, -2.687e-02), r);\n\tr = MulAdd(s0_8, M4(-1.906e-04, 8.306e-02, 2.480e-02, 1.696e-02, 1.275e-01, 1.372e-01, 1.205e-01, 1.120e-02, 1.424e-02, -1.526e-01, -6.629e-02, -9.104e-02, 2.042e-02, -1.167e-01, 1.050e-01, 1.560e-02), r);\n\tr = MulAdd(s1_0, M4(-2.398e-02, -1.009e-01, 2.671e-02, -8.841e-02, -7.277e-03, -4.411e-02, -1.240e-02, -5.367e-04, -1.223e-01, -7.251e-02, 4.941e-02, 7.545e-02, 6.688e-02, 1.727e-02, -1.144e-02, -7.713e-02), r);\n\tr = MulAdd(s1_1, M4(-1.507e-01, -3.095e-01, 5.017e-02, -1.145e-01, 3.430e-02, -2.241e-01, -9.050e-02, -8.470e-02, -8.624e-02, -1.021e-02, -1.620e-02, 3.932e-03, 7.775e-02, -2.376e-02, 6.270e-02, -7.896e-02), r);\n\tr = MulAdd(s1_2, M4(3.578e-02, -3.242e-02, 9.400e-03, -2.998e-02, -1.545e-02, -1.481e-01, -6.667e-02, 3.496e-02, 6.722e-02, 7.676e-04, -8.215e-04, 2.142e-03, 4.007e-02, 9.690e-02, -1.652e-03, 3.858e-02), r);\n\tr = MulAdd(s1_3, M4(6.321e-02, -1.472e-01, 6.571e-02, -1.929e-01, -7.340e-02, -8.067e-02, 1.715e-02, 2.182e-02, -8.623e-02, -2.195e-01, -6.101e-02, 8.246e-02, -4.908e-02, -3.293e-02, -7.341e-02, -1.941e-01), r);\n\tr = MulAdd(s1_4, M4(5.609e-01, 5.581e-01, -1.143e-01, -1.052e-01, 2.477e-01, 2.387e-01, 1.272e-01, 3.284e-03, -3.135e-01, 8.385e-02, -7.393e-02, -2.270e-01, 4.403e-01, -1.179e-01, -1.620e-01, 2.978e-01), r);\n\tr = MulAdd(s1_5, M4(-3.015e-02, 1.055e-01, 1.072e-01, 1.177e-01, 3.838e-01, 3.206e-02, -4.556e-03, -5.072e-02, 4.250e-02, -1.665e-02, -1.759e-02, 2.822e-02, -2.408e-01, -2.204e-02, -3.440e-02, 6.520e-02), r);\n\tr = MulAdd(s1_6, M4(9.180e-04, 3.395e-02, -1.211e-02, -5.605e-03, -7.356e-03, -2.439e-02, -2.498e-02, -6.361e-04, -5.167e-02, -1.009e-02, 7.202e-02, 3.652e-02, 3.036e-03, -7.672e-03, -2.822e-02, -9.942e-02), r);\n\tr = MulAdd(s1_7, M4(-7.041e-02, -2.366e-01, -1.556e-01, 1.499e-01, -2.674e-02, 6.601e-03, -1.490e-01, 1.329e-02, -1.127e-01, 8.363e-03, -1.333e-01, 1.038e-02, -1.219e-02, -1.366e-01, 8.814e-02, 4.260e-03), r);\n\tr = MulAdd(s1_8, M4(-1.397e-02, 2.863e-02, 5.459e-03, -1.166e-02, -1.201e-02, 1.346e-01, 5.461e-02, 1.584e-02, -8.155e-02, 8.451e-03, -3.444e-02, 3.920e-02, 2.082e-02, -4.174e-02, 6.205e-02, 5.646e-02), r);\n\tr = MulAdd(s2_0, M4(5.465e-02, 7.303e-02, 1.200e-01, 8.938e-03, -8.960e-02, -2.248e-01, -1.073e-02, 6.882e-02, 4.637e-02, -1.215e-01, -2.319e-02, -2.049e-01, -8.235e-02, -2.689e-02, 8.521e-02, 2.612e-02), r);\n\tr = MulAdd(s2_1, M4(-1.284e-01, -8.509e-02, 6.859e-02, 2.538e-02, -7.401e-02, 2.860e-01, -2.240e-01, 1.754e-01, -2.073e-01, -9.333e-02, -9.310e-02, -3.311e-01, 2.251e-01, 1.948e-01, -1.091e-01, 2.448e-02), r);\n\tr = MulAdd(s2_2, M4(4.550e-03, 2.884e-02, -1.023e-02, -1.793e-02, 1.472e-01, 1.728e-02, -5.533e-02, -4.606e-02, -1.128e-01, 1.845e-01, -9.297e-02, 7.245e-02, 2.303e-02, -1.293e-01, -2.277e-02, -1.523e-02), r);\n\tr = MulAdd(s2_3, M4(5.703e-02, 4.629e-03, -7.495e-02, -7.220e-02, -1.245e-01, 1.142e-01, -1.688e-03, -9.906e-03, 9.714e-02, -2.851e-02, 7.069e-03, -3.250e-01, -5.029e-03, -1.421e-01, -4.162e-02, 1.032e-01), r);\n\tr = MulAdd(s2_4, M4(5.200e-02, -3.414e-02, -3.809e-02, -9.742e-02, 8.686e-01, 1.140e+00, 2.062e-01, 8.598e-02, 4.073e-01, -3.313e-01, 2.673e-01, 1.050e-01, -9.355e-02, 1.764e-01, 8.423e-02, 1.156e-01), r);\n\tr = MulAdd(s2_5, M4(-5.260e-03, 8.804e-02, 3.636e-02, 3.074e-03, 1.724e-01, 2.433e-01, -1.126e-02, -2.652e-01, -1.229e-01, 3.135e-02, 1.187e-02, -6.661e-02, -1.872e-02, -6.508e-02, -7.109e-02, 1.141e-01), r);\n\tr = MulAdd(s2_6, M4(6.180e-03, 2.059e-03, -1.768e-02, 4.877e-03, -7.838e-02, 1.366e-01, -7.231e-02, -2.826e-02, 6.251e-02, 7.375e-02, 2.531e-02, 2.038e-02, -4.462e-03, -4.896e-02, -4.376e-02, -7.998e-03), r);\n\tr = MulAdd(s2_7, M4(1.011e-01, 8.753e-02, -5.554e-02, 6.949e-04, 4.137e-02, 2.710e-01, -3.203e-01, 6.752e-02, 9.720e-02, 3.447e-02, -5.777e-02, -1.723e-02, -9.154e-03, 5.461e-02, 1.248e-01, -3.906e-04), r);\n\tr = MulAdd(s2_8, M4(4.126e-02, 3.442e-02, 9.763e-03, -4.560e-02, -4.233e-04, -1.519e-01, 2.421e-02, -4.043e-02, -1.281e-02, 1.166e-02, 2.489e-04, -3.061e-02, -4.476e-02, 4.493e-03, -4.164e-02, 9.694e-03), r);\n\tr = MulAdd(s3_0, M4(-1.352e-01, -1.938e-01, 7.285e-02, -4.706e-02, 1.920e-02, 1.891e-02, 1.233e-02, 3.876e-02, 1.342e-02, 2.020e-01, 3.292e-02, 2.778e-02, -5.017e-02, 3.560e-02, 7.028e-02, 7.562e-03), r);\n\tr = MulAdd(s3_1, M4(3.014e-01, 1.243e-01, -2.656e-02, -9.796e-02, 1.585e-01, 2.259e-01, -6.651e-02, 4.080e-02, 1.902e-01, 2.705e-01, -9.774e-02, -1.144e-02, -4.653e-01, -3.536e-01, 2.515e-02, 9.628e-02), r);\n\tr = MulAdd(s3_2, M4(-7.724e-02, 1.181e-01, 2.182e-02, 1.999e-02, -7.114e-02, -4.414e-02, -5.748e-06, -8.931e-03, 4.985e-03, 6.360e-02, 4.422e-02, 6.005e-02, 1.335e-01, -8.144e-03, -3.979e-02, 6.952e-03), r);\n\tr = MulAdd(s3_3, M4(-1.826e-03, 2.390e-02, 4.665e-03, -3.357e-02, 2.088e-02, 1.436e-01, -2.474e-02, 1.100e-02, 2.727e-02, -1.649e-02, -9.539e-02, -1.112e-01, -2.427e-02, 1.811e-01, -4.267e-02, 1.060e-01), r);\n\tr = MulAdd(s3_4, M4(9.873e-02, -1.417e-01, -1.365e-01, -3.187e-01, -7.583e-03, 3.047e-01, -2.480e-02, 2.623e-01, -3.193e-01, -1.539e-01, -2.986e-01, 2.350e-01, 4.367e-01, 2.441e-01, -3.426e-01, -5.108e-02), r);\n\tr = MulAdd(s3_5, M4(-8.384e-02, 1.343e-01, 1.653e-01, 7.978e-02, 6.329e-02, 7.040e-02, 2.203e-02, -2.280e-01, 2.531e-02, -9.408e-02, -5.137e-02, -1.717e-01, -1.577e-01, 4.030e-02, -2.802e-01, 1.155e-01), r);\n\tr = MulAdd(s3_6, M4(1.895e-02, 1.436e-01, 3.568e-04, -6.075e-02, 3.213e-02, -3.462e-02, -2.821e-02, -8.374e-03, 3.451e-02, -2.349e-02, 9.517e-03, 2.092e-02, -8.229e-02, 6.530e-02, 6.116e-03, -2.414e-02), r);\n\tr = MulAdd(s3_7, M4(1.530e-01, 2.073e-01, -7.258e-02, -6.975e-02, -6.610e-03, -3.885e-02, -5.636e-03, 1.227e-01, 8.913e-02, 4.336e-02, -1.931e-03, -3.869e-02, -2.019e-02, -1.340e-02, -1.506e-02, 1.591e-02), r);\n\tr = MulAdd(s3_8, M4(2.536e-02, -3.220e-02, 6.413e-02, -1.835e-02, -9.124e-02, -8.098e-02, -5.479e-02, -1.361e-02, -3.146e-03, 1.204e-01, -4.020e-02, -6.924e-02, -1.030e-01, -1.301e-01, 1.634e-02, 1.029e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -2.994e-04, -3.163e-05, 4.528e-03, -1.285e-02 };\n\tr = MulAdd(s0_0, M4(-5.222e-02, -3.069e-02, 2.456e-03, -1.117e-02, 4.933e-02, 5.166e-02, -6.284e-03, -9.151e-02, 1.439e-02, 1.755e-02, -8.848e-02, -9.796e-02, -2.835e-02, 3.699e-02, 2.912e-02, 4.373e-02), r);\n\tr = MulAdd(s0_1, M4(6.333e-03, -2.767e-02, -7.247e-02, 8.441e-02, -3.433e-02, -4.699e-02, -1.193e-02, -1.729e-01, 2.481e-02, -4.121e-02, -2.861e-01, -1.202e-02, 2.687e-02, -1.313e-01, 1.747e-02, -9.108e-02), r);\n\tr = MulAdd(s0_2, M4(1.309e-02, -1.968e-02, -1.246e-01, -3.915e-02, -1.159e-01, -6.491e-03, 3.316e-01, -6.851e-02, -2.940e-02, -1.787e-02, -5.850e-03, -6.207e-02, 5.272e-02, 9.800e-02, 4.709e-02, 7.491e-02), r);\n\tr = MulAdd(s0_3, M4(-1.127e-01, -3.748e-02, -1.091e-01, 1.788e-01, -7.982e-02, -7.528e-02, 1.898e-01, -1.355e-01, -1.568e-01, 9.648e-02, 2.337e-01, -9.666e-02, -7.316e-02, 2.915e-02, 2.259e-02, -1.310e-02), r);\n\tr = MulAdd(s0_4, M4(1.689e-02, -1.028e-01, 1.304e-01, -6.012e-02, -8.030e-02, -1.823e-01, 4.179e-01, -3.553e-01, 9.095e-04, 9.972e-02, 3.227e-01, -4.967e-02, -2.329e-01, 1.272e-01, 4.332e-01, -8.456e-01), r);\n\tr = MulAdd(s0_5, M4(1.815e-02, -5.743e-02, 7.236e-02, -8.782e-02, 1.161e-01, 2.258e-01, 7.053e-01, -2.993e-01, 6.605e-02, -2.666e-03, -4.733e-02, -1.087e-01, -1.101e-01, 1.554e-01, 1.656e-01, 2.530e-01), r);\n\tr = MulAdd(s0_6, M4(-7.750e-02, -6.619e-02, 2.202e-02, 4.186e-02, -1.519e-01, -8.918e-03, -1.919e-01, -7.085e-02, -1.356e-01, -1.363e-01, 1.782e-01, -1.499e-02, 9.670e-02, 1.450e-03, 5.675e-02, -3.337e-02), r);\n\tr = MulAdd(s0_7, M4(-9.267e-02, 1.661e-01, 1.306e-01, -2.387e-01, -2.261e-02, 2.870e-01, -2.711e-01, 6.281e-02, 2.181e-02, 1.010e-01, 2.979e-01, -9.254e-02, 1.307e-01, -2.024e-02, 2.013e-01, -1.862e-02), r);\n\tr = MulAdd(s0_8, M4(-7.233e-02, 8.276e-02, 1.279e-02, -3.778e-02, -3.737e-01, -2.422e-01, -1.352e-01, -1.631e-01, 6.518e-02, 2.511e-01, 1.588e-01, -3.599e-02, 8.821e-02, 3.757e-02, -1.340e-01, 1.006e-01), r);\n\tr = MulAdd(s1_0, M4(1.034e-02, 8.194e-02, 9.844e-02, -1.052e-01, 4.683e-03, 4.432e-03, 8.420e-03, 7.511e-03, 7.210e-02, -8.697e-03, -9.834e-02, 1.366e-01, 3.221e-04, 1.836e-02, 1.307e-02, -6.823e-02), r);\n\tr = MulAdd(s1_1, M4(-7.232e-02, 1.103e-01, 2.975e-01, 4.747e-02, -1.075e-01, -6.863e-02, 2.378e-01, -2.994e-02, 6.426e-02, 2.459e-02, -1.361e-01, 4.394e-02, 4.558e-02, -5.684e-02, -3.386e-02, 8.075e-02), r);\n\tr = MulAdd(s1_2, M4(-1.568e-02, 6.463e-02, 4.001e-02, 3.549e-02, -3.385e-02, -1.547e-02, 2.510e-01, 3.198e-02, 2.533e-02, -6.612e-02, -5.453e-02, 1.387e-03, 3.071e-02, -5.115e-03, -9.345e-02, 1.790e-02), r);\n\tr = MulAdd(s1_3, M4(1.723e-01, 2.119e-02, -3.394e-01, -1.101e-01, 7.882e-03, -4.188e-02, -6.882e-02, 5.060e-02, 4.902e-02, 2.919e-02, 7.773e-02, 1.080e-01, 8.944e-02, -2.819e-02, -1.252e-02, -2.744e-01), r);\n\tr = MulAdd(s1_4, M4(2.682e-01, 8.840e-03, -3.974e-01, 2.436e-01, 1.156e-02, 3.806e-04, -5.090e-01, -1.339e-02, 1.677e-02, -1.337e-01, -1.050e-01, 2.647e-01, -1.971e-01, -1.145e-02, 1.471e-01, -7.814e-02), r);\n\tr = MulAdd(s1_5, M4(-5.376e-02, 2.321e-02, -1.908e-01, -1.538e-01, 5.032e-03, 2.979e-02, -3.934e-02, -1.754e-01, 3.674e-02, 8.713e-03, -7.429e-02, -2.768e-03, -1.878e-01, -1.382e-01, 1.114e-01, 4.843e-02), r);\n\tr = MulAdd(s1_6, M4(4.390e-03, 1.082e-02, 6.300e-03, -2.220e-02, -1.578e-02, -3.883e-02, 6.290e-02, 5.752e-03, 9.478e-02, 5.108e-03, 6.174e-02, 8.270e-02, -5.128e-02, -3.664e-02, 3.095e-02, -1.575e-01), r);\n\tr = MulAdd(s1_7, M4(2.131e-01, 8.669e-03, 8.288e-02, 1.767e-01, -8.764e-02, -6.440e-03, 1.179e-01, -9.407e-02, -1.114e-01, -1.384e-01, 7.349e-02, 2.379e-02, 6.264e-02, -6.347e-02, -1.973e-01, 3.150e-02), r);\n\tr = MulAdd(s1_8, M4(6.920e-02, 2.737e-01, 5.444e-02, -1.065e-01, -8.435e-02, 1.268e-01, -7.219e-03, -4.022e-02, -3.687e-02, -3.873e-02, 5.773e-02, 1.171e-02, 5.552e-02, -2.870e-02, -4.903e-02, 2.162e-02), r);\n\tr = MulAdd(s2_0, M4(-6.811e-02, 3.915e-02, -1.970e-02, 5.496e-02, -3.225e-02, -5.284e-02, -3.737e-03, -1.864e-03, -1.361e-01, -7.308e-02, -4.948e-02, -1.634e-01, 5.283e-02, 1.746e-02, -8.374e-02, 7.123e-02), r);\n\tr = MulAdd(s2_1, M4(4.868e-03, 7.851e-02, 1.067e-01, 5.576e-02, 1.276e-01, -7.837e-02, -2.875e-01, 3.754e-02, -1.315e-01, -9.095e-02, 8.041e-02, -1.156e-01, 1.309e-02, 1.086e-01, -1.335e-01, 9.059e-02), r);\n\tr = MulAdd(s2_2, M4(-1.092e-02, 1.501e-01, -3.542e-02, 2.500e-02, 1.500e-02, -1.832e-01, -3.447e-01, -2.562e-02, -1.110e-01, 1.362e-01, 1.634e-01, -5.146e-02, -1.184e-02, -1.154e-01, 4.862e-02, 1.344e-03), r);\n\tr = MulAdd(s2_3, M4(3.103e-02, -2.009e-02, 2.266e-02, 5.094e-02, 5.909e-01, 1.844e-01, -3.418e-02, -1.460e-01, 1.218e-02, -3.631e-02, -2.582e-01, -2.230e-01, 9.666e-02, -6.432e-02, 7.267e-02, 7.577e-02), r);\n\tr = MulAdd(s2_4, M4(8.062e-02, -3.981e-02, -3.232e-02, -1.032e-01, -9.859e-02, 6.539e-01, 5.533e-01, -1.046e-02, -5.348e-01, 1.009e-02, -3.879e-01, 1.190e-01, -1.151e-01, 1.835e-01, -7.797e-02, 1.418e-01), r);\n\tr = MulAdd(s2_5, M4(-1.404e-02, -1.730e-01, -4.516e-02, -2.158e-02, 2.544e-01, 4.463e-01, 1.404e-01, -6.854e-02, -9.712e-02, -4.920e-01, -2.485e-02, -6.416e-02, 3.612e-02, 2.451e-01, 2.327e-02, -1.251e-03), r);\n\tr = MulAdd(s2_6, M4(6.507e-02, -2.267e-02, -7.660e-02, 3.043e-02, 3.541e-01, 2.804e-01, 2.783e-01, -2.580e-01, -1.185e-01, 8.028e-02, -1.395e-01, -4.988e-03, 4.702e-02, -5.327e-02, 4.580e-02, 3.130e-03), r);\n\tr = MulAdd(s2_7, M4(9.806e-02, 6.990e-02, -4.317e-02, -2.415e-02, -2.263e-01, -1.723e-01, 2.669e-02, -3.393e-01, 9.368e-02, -6.775e-02, -1.883e-01, -8.601e-02, -2.278e-01, 1.612e-01, 1.625e-01, 8.821e-02), r);\n\tr = MulAdd(s2_8, M4(-1.921e-02, 1.119e-01, 3.717e-02, -2.554e-02, 2.852e-02, 8.987e-02, 1.246e-01, 6.463e-03, 2.548e-02, -2.950e-02, 7.289e-02, 1.802e-02, 2.576e-02, 5.798e-02, 6.021e-02, -5.030e-03), r);\n\tr = MulAdd(s3_0, M4(-1.023e-01, -3.759e-02, -2.437e-02, 1.032e-01, -2.143e-02, -4.189e-02, -6.139e-02, 9.887e-02, -9.094e-03, 3.087e-02, -1.056e-01, 1.376e-01, 1.702e-02, 3.138e-02, -1.243e-01, -5.115e-02), r);\n\tr = MulAdd(s3_1, M4(3.439e-02, -1.018e-01, -3.260e-01, 6.226e-02, 3.794e-02, -6.747e-02, -1.743e-01, -9.149e-02, 6.116e-02, -3.539e-02, -3.971e-01, -2.458e-02, -1.436e-01, 4.323e-02, 5.595e-01, 1.160e-01), r);\n\tr = MulAdd(s3_2, M4(-7.596e-02, -9.502e-02, -1.112e-02, -7.256e-02, -1.625e-02, -1.013e-01, -7.450e-02, 2.969e-03, -1.481e-02, -1.199e-01, -8.230e-02, 2.952e-02, -3.199e-02, 8.852e-02, -1.541e-02, 1.722e-02), r);\n\tr = MulAdd(s3_3, M4(2.768e-03, -9.600e-02, 1.333e-01, -1.174e-01, -7.190e-02, 1.265e-02, 8.135e-02, -6.909e-03, 9.249e-02, -2.800e-02, 2.029e-01, -1.212e-02, 9.955e-02, -2.791e-02, -1.172e-01, 2.079e-01), r);\n\tr = MulAdd(s3_4, M4(-1.948e-01, -1.936e-01, 5.127e-01, -7.970e-02, -1.135e-01, 1.060e-01, 1.226e-01, -3.195e-01, -4.980e-01, -5.665e-03, 3.167e-01, -2.413e-01, 2.036e-01, 1.519e-01, 7.793e-04, -1.316e-01), r);\n\tr = MulAdd(s3_5, M4(-8.284e-02, -1.590e-01, 5.041e-03, -2.936e-02, 1.485e-01, 8.341e-02, -3.804e-02, 3.576e-02, 1.499e-01, -8.989e-02, 7.085e-02, -4.898e-02, 1.070e-01, 5.825e-02, 1.863e-01, -9.850e-03), r);\n\tr = MulAdd(s3_6, M4(-3.057e-01, 2.794e-02, -7.737e-02, -4.168e-02, 2.696e-02, 1.279e-02, 2.638e-02, 8.177e-02, 1.217e-01, 2.531e-02, -1.188e-01, 1.018e-01, -5.486e-02, -6.606e-03, 1.868e-01, -1.050e-01), r);\n\tr = MulAdd(s3_7, M4(-3.018e-01, -1.795e-01, -1.578e-01, -1.809e-01, 1.241e-01, -4.960e-02, -1.067e-01, -1.004e-02, -8.835e-02, 6.620e-02, 1.309e-01, -1.399e-01, 4.651e-02, 4.837e-02, -9.106e-02, 1.670e-01), r);\n\tr = MulAdd(s3_8, M4(1.081e-02, -9.947e-02, 1.643e-02, -2.769e-02, 9.803e-02, -8.389e-02, -2.782e-02, -2.689e-02, 3.693e-02, -3.436e-03, 1.229e-02, -2.929e-02, -1.751e-01, -5.859e-03, 1.543e-01, 8.225e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -3.261e-03, 1.350e-04, -6.605e-05, 1.307e-04 };\n\tr = MulAdd(s0_0, M4(5.681e-02, -7.933e-02, -1.161e-02, -3.257e-02, -1.507e-02, 2.248e-02, -1.351e-02, 2.789e-02, -1.713e-01, 9.482e-02, 2.715e-02, 9.506e-02, 1.714e-01, -1.090e-01, -7.237e-02, -1.563e-01), r);\n\tr = MulAdd(s0_1, M4(-9.622e-03, -7.774e-04, -4.095e-02, 1.106e-02, -3.592e-02, -4.358e-02, 1.983e-02, -1.134e-02, -1.313e-02, -1.086e-01, 1.102e-01, -3.091e-01, 1.982e-01, 1.438e-01, -6.038e-02, 9.579e-02), r);\n\tr = MulAdd(s0_2, M4(-3.893e-02, 1.554e-02, -7.763e-05, 1.610e-02, 3.470e-03, 9.915e-03, -9.881e-03, 5.331e-02, -9.152e-02, 6.899e-02, -3.615e-02, 1.558e-01, -3.300e-02, 4.493e-02, 2.148e-02, -3.677e-02), r);\n\tr = MulAdd(s0_3, M4(1.939e-01, -7.700e-02, -1.449e-01, -1.942e-02, 9.649e-02, -3.580e-03, -1.767e-02, 2.394e-02, -1.299e-01, 1.160e-01, 8.000e-02, 9.737e-02, 2.751e-01, -4.435e-01, 1.013e-01, -1.782e-01), r);\n\tr = MulAdd(s0_4, M4(-2.745e-01, 2.922e-01, -2.008e-01, 1.636e-01, -4.843e-02, 4.172e-01, 3.097e-02, 3.326e-01, -1.798e-02, -3.860e-01, 3.246e-02, 4.225e-01, -1.057e-01, 2.302e-01, -7.879e-02, 4.832e-02), r);\n\tr = MulAdd(s0_5, M4(-6.834e-04, -3.372e-02, -9.351e-02, 1.547e-02, 5.621e-02, -1.195e-02, -9.402e-03, 6.439e-02, 8.787e-02, 1.499e-02, 1.928e-01, 6.693e-02, 6.516e-02, -1.145e-01, -6.610e-02, 3.986e-02), r);\n\tr = MulAdd(s0_6, M4(7.682e-02, -9.222e-02, 1.566e-01, -1.438e-02, 5.080e-02, -2.762e-02, -3.121e-02, -1.242e-02, 2.046e-02, -1.131e-02, 4.555e-02, -3.006e-02, 1.125e-01, -7.883e-02, 1.063e-01, 3.027e-03), r);\n\tr = MulAdd(s0_7, M4(-1.395e-01, 4.847e-02, 1.605e-01, 1.363e-01, 6.243e-02, -1.464e-02, 3.336e-02, -8.862e-02, 3.286e-02, -2.398e-02, -2.326e-02, -8.408e-02, 1.274e-01, -4.997e-02, 1.548e-01, -8.650e-02), r);\n\tr = MulAdd(s0_8, M4(4.236e-02, 3.116e-02, 7.690e-02, 3.084e-02, 6.290e-03, 1.016e-02, 7.155e-02, -9.786e-02, -1.453e-02, -4.564e-04, -3.654e-02, 7.179e-03, -2.110e-02, -2.766e-02, 1.022e-01, -6.664e-02), r);\n\tr = MulAdd(s1_0, M4(-2.814e-02, 6.473e-02, 5.209e-02, 6.202e-02, -1.898e-02, 6.061e-02, -1.557e-02, 3.561e-02, 2.137e-01, -1.913e-01, 2.387e-03, -1.470e-01, 4.553e-02, -3.358e-02, 1.936e-03, -4.798e-02), r);\n\tr = MulAdd(s1_1, M4(4.947e-03, -8.431e-02, -3.362e-03, -1.057e-01, -6.735e-02, 8.463e-03, -4.622e-02, -2.022e-02, -1.450e-01, -1.687e-03, -1.541e-02, -1.116e-02, 4.447e-02, 5.088e-02, -7.198e-03, 3.279e-02), r);\n\tr = MulAdd(s1_2, M4(1.202e-03, -2.591e-02, -5.357e-03, -3.844e-02, -7.403e-03, 3.771e-02, -6.171e-02, 8.820e-02, 6.744e-03, -4.156e-02, -1.377e-02, 9.398e-02, -2.643e-02, 4.991e-02, -2.000e-02, 1.056e-02), r);\n\tr = MulAdd(s1_3, M4(3.923e-01, 3.525e-02, -1.294e-01, 1.478e-02, 9.667e-02, 1.289e-01, 8.960e-02, 1.946e-02, 3.128e-01, -3.315e-01, -3.019e-01, 1.021e-01, 2.095e-01, -1.488e-01, -9.439e-02, -9.635e-02), r);\n\tr = MulAdd(s1_4, M4(-3.641e-01, -9.985e-02, -3.482e-01, -2.646e-01, -5.257e-01, 9.475e-01, 1.714e-01, 5.842e-01, -2.199e-01, -6.131e-02, -4.597e-01, 5.556e-01, 7.933e-02, -2.150e-01, -3.469e-01, -1.978e-01), r);\n\tr = MulAdd(s1_5, M4(7.883e-05, -2.207e-02, -1.735e-02, 2.167e-02, 4.628e-02, 8.814e-02, -4.837e-02, 6.515e-02, 1.617e-01, -4.460e-02, -1.002e-01, 7.496e-02, -1.180e-01, 5.540e-02, -5.708e-02, 5.715e-02), r);\n\tr = MulAdd(s1_6, M4(1.680e-01, -5.262e-02, 6.143e-02, -4.758e-02, -5.343e-02, 4.332e-02, 1.191e-01, 8.545e-03, 1.171e-01, -8.169e-02, 1.535e-02, -2.281e-01, 8.009e-02, -9.744e-02, 6.114e-02, 8.379e-03), r);\n\tr = MulAdd(s1_7, M4(-9.744e-02, 2.573e-02, 6.125e-02, 1.265e-01, 9.253e-02, -1.227e-01, 3.224e-01, -2.402e-01, 1.083e-01, 1.607e-02, 1.155e-01, -4.014e-01, -2.347e-02, -3.821e-02, 2.379e-01, 2.605e-02), r);\n\tr = MulAdd(s1_8, M4(5.428e-02, -5.434e-02, -2.345e-02, -2.189e-03, 1.274e-02, 7.503e-02, 1.442e-01, -8.839e-02, -3.480e-02, 1.444e-02, -3.859e-02, -1.089e-01, -3.183e-02, 9.172e-02, 1.092e-01, 6.688e-02), r);\n\tr = MulAdd(s2_0, M4(2.283e-01, 3.872e-02, -5.533e-02, -1.704e-02, -1.533e-02, 1.459e-02, 3.842e-02, 6.367e-02, -4.041e-02, -6.411e-03, -5.052e-03, -8.331e-03, 2.786e-03, -5.502e-02, 6.695e-03, -1.982e-02), r);\n\tr = MulAdd(s2_1, M4(-4.716e-01, 4.092e-01, -1.581e-01, 4.209e-01, 1.255e-01, -7.138e-02, 7.300e-02, -1.357e-01, -6.908e-02, -1.986e-02, 1.801e-02, -4.505e-02, -1.611e-01, -1.216e-01, -6.522e-02, -9.093e-02), r);\n\tr = MulAdd(s2_2, M4(1.019e-01, -3.650e-02, 1.353e-02, 2.487e-01, -1.344e-04, 4.653e-02, 1.721e-02, 4.005e-02, 7.572e-03, -4.357e-02, -3.720e-02, 2.091e-02, 6.051e-03, -6.957e-02, -9.009e-02, -1.788e-02), r);\n\tr = MulAdd(s2_3, M4(2.159e-02, -3.325e-02, 3.084e-02, 1.091e-01, -9.662e-02, 1.040e-01, 1.078e-01, -2.572e-02, 2.237e-04, -2.571e-02, -2.335e-02, -1.554e-02, 1.275e-01, -4.579e-02, -1.772e-02, 3.282e-02), r);\n\tr = MulAdd(s2_4, M4(4.984e-02, 2.302e-01, 6.568e-02, 1.279e-01, 6.857e-02, -1.499e-01, -4.461e-02, -1.977e-01, -1.903e-01, 1.430e-01, 3.271e-02, 1.978e-01, 2.410e-01, 5.980e-01, -1.394e-01, 2.261e-01), r);\n\tr = MulAdd(s2_5, M4(2.188e-02, -8.976e-03, 2.475e-02, 1.340e-02, -4.458e-02, 5.360e-02, 2.628e-02, -1.405e-02, 6.166e-02, -4.895e-02, 1.348e-03, 5.680e-02, -1.123e-01, 7.224e-02, -6.458e-02, 1.314e-01), r);\n\tr = MulAdd(s2_6, M4(3.252e-02, -2.389e-02, -2.067e-02, -6.871e-02, -8.327e-02, 7.793e-02, 7.681e-03, 5.095e-02, -1.693e-02, -3.622e-02, 3.065e-02, -1.582e-02, -6.963e-03, 2.835e-02, 6.805e-02, -1.475e-02), r);\n\tr = MulAdd(s2_7, M4(4.783e-02, -2.945e-02, 4.732e-02, -9.789e-04, -1.619e-02, -2.603e-02, -1.368e-01, 2.956e-02, 9.844e-02, -1.214e-01, 1.776e-01, -1.461e-01, -5.165e-02, -1.055e-02, 1.793e-01, -4.355e-02), r);\n\tr = MulAdd(s2_8, M4(2.619e-03, 4.801e-02, 6.393e-02, -2.399e-02, -1.280e-03, -2.210e-02, -4.649e-02, 1.561e-03, -1.789e-02, 5.576e-02, 1.200e-01, 3.338e-03, 4.475e-02, -2.957e-02, 9.300e-02, -7.837e-02), r);\n\tr = MulAdd(s3_0, M4(-1.536e-01, -3.593e-03, -1.064e-02, 1.740e-02, 9.197e-02, 2.772e-01, 5.258e-01, 5.745e-01, 2.331e-02, 8.995e-02, 2.611e-02, 5.463e-02, 4.872e-02, -8.230e-03, -1.742e-02, 3.405e-03), r);\n\tr = MulAdd(s3_1, M4(4.799e-02, 1.088e-01, -7.562e-02, 5.926e-02, 4.190e-01, -4.922e-01, -1.822e-01, -2.309e-01, 1.776e-01, 1.799e-01, 1.213e-01, 3.198e-01, -1.565e-01, 2.118e-02, -5.914e-02, 1.048e-01), r);\n\tr = MulAdd(s3_2, M4(-6.867e-02, -2.488e-02, 2.563e-02, -3.161e-02, -4.038e-02, 5.042e-02, 2.474e-02, 3.962e-03, -4.263e-02, 4.382e-02, -6.197e-03, 5.435e-02, 8.477e-02, -7.694e-02, -2.473e-02, -2.000e-02), r);\n\tr = MulAdd(s3_3, M4(-6.567e-02, 7.271e-02, -2.275e-02, -4.345e-03, -4.825e-02, -7.541e-01, 5.163e-01, 9.170e-01, -1.040e-01, -9.911e-03, 3.569e-02, 2.347e-01, 2.350e-02, 6.202e-02, 7.421e-03, 2.377e-02), r);\n\tr = MulAdd(s3_4, M4(-3.371e-02, -2.738e-02, 1.670e-01, 2.607e-01, -5.009e-02, 5.743e-03, -6.991e-01, -2.858e-02, -6.907e-02, -4.016e-01, 3.462e-01, 9.128e-01, -1.622e-01, 1.392e-01, 2.250e-01, 1.183e-01), r);\n\tr = MulAdd(s3_5, M4(-8.330e-03, 1.029e-01, 1.045e-01, 2.013e-01, 2.609e-02, 7.939e-02, -1.054e-01, 6.487e-02, 1.165e-01, -6.250e-02, 1.274e-01, 2.396e-01, 2.390e-01, -2.468e-01, 1.178e-02, 6.794e-02), r);\n\tr = MulAdd(s3_6, M4(5.411e-02, -5.669e-02, 2.831e-02, -3.762e-02, 1.186e-01, 1.750e-01, -2.862e-01, -9.876e-02, 5.851e-02, 2.750e-02, 7.348e-03, -2.151e-01, -3.151e-02, 5.225e-02, 3.178e-02, 1.438e-02), r);\n\tr = MulAdd(s3_7, M4(-2.053e-03, 2.875e-02, -4.633e-02, -7.843e-02, -5.216e-02, -1.497e-04, -2.534e-01, -5.098e-01, 3.092e-02, -4.215e-02, -1.330e-01, -9.137e-02, 5.062e-02, 5.514e-02, -1.958e-01, 6.162e-03), r);\n\tr = MulAdd(s3_8, M4(3.627e-02, 1.482e-02, 2.228e-02, -7.151e-02, -1.770e-02, 6.009e-02, 2.013e-01, 2.403e-02, 1.912e-03, -9.001e-03, 1.673e-02, -3.465e-02, 5.222e-02, -3.027e-02, -4.458e-03, -6.391e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.782e-04, -1.204e-03, 6.004e-04, -1.736e-03 };\n\tr = MulAdd(s0_0, M4(-5.528e-02, 2.435e-02, -2.728e-02, 5.042e-02, -2.357e-02, 1.752e-02, 6.730e-02, -1.869e-02, 5.562e-02, 2.108e-03, -2.535e-02, -7.791e-02, -6.984e-02, 8.842e-02, 7.203e-02, 3.709e-02), r);\n\tr = MulAdd(s0_1, M4(-6.164e-02, -1.824e-02, 8.179e-02, -3.238e-02, 5.338e-02, -5.506e-02, -1.020e-01, 1.520e-02, 1.953e-01, -2.850e-02, 8.323e-02, -8.899e-02, 5.112e-02, 6.369e-02, -5.510e-02, 1.997e-02), r);\n\tr = MulAdd(s0_2, M4(6.117e-02, -1.311e-02, -9.258e-03, -1.479e-02, -2.710e-02, 2.958e-02, 2.946e-02, -9.472e-03, 4.257e-02, -7.053e-02, -5.896e-02, 5.475e-02, 6.131e-02, -1.827e-02, -2.909e-02, -6.470e-02), r);\n\tr = MulAdd(s0_3, M4(-1.411e-01, 1.597e-01, 2.142e-01, 6.972e-02, 1.704e-02, 4.423e-02, -8.405e-02, 4.993e-02, 1.176e-02, -8.471e-02, 4.062e-02, -1.001e-01, -3.805e-02, 3.820e-02, -6.258e-01, 2.568e-01), r);\n\tr = MulAdd(s0_4, M4(3.384e-01, -2.619e-01, 1.799e-01, -3.175e-01, 3.472e-03, -1.186e-01, 7.886e-02, -1.126e-01, 1.378e-01, -3.772e-02, -1.396e-02, 6.889e-02, -1.383e-01, 1.958e-01, 7.297e-02, -1.066e+00), r);\n\tr = MulAdd(s0_5, M4(-4.115e-04, 8.733e-03, 3.432e-02, 5.650e-02, 9.203e-02, 6.899e-02, -9.987e-03, 5.139e-02, 2.075e-01, -1.229e-02, 5.912e-02, -2.866e-02, -1.602e-01, 1.654e-01, 6.957e-02, 5.472e-02), r);\n\tr = MulAdd(s0_6, M4(-1.000e-01, 9.401e-02, -3.864e-02, 1.160e-01, 1.108e-03, 8.814e-02, 6.570e-04, 2.167e-02, 6.762e-05, -1.080e-02, -1.670e-02, -4.178e-03, -9.704e-03, 2.164e-01, 3.748e-02, -1.258e-02), r);\n\tr = MulAdd(s0_7, M4(7.557e-02, -2.360e-01, -2.727e-02, -7.688e-02, -3.110e-02, 1.671e-02, -4.238e-02, 5.553e-02, 6.518e-02, 3.357e-02, -2.725e-02, -2.524e-02, -1.352e-01, -1.005e-01, -4.108e-02, 2.664e-01), r);\n\tr = MulAdd(s0_8, M4(9.624e-02, 5.754e-03, 8.412e-02, -2.955e-02, 2.850e-02, 8.830e-03, -4.162e-02, -1.337e-02, -4.374e-02, -2.352e-02, -1.566e-02, 1.822e-02, 7.979e-02, -9.058e-02, -1.071e-01, -3.379e-03), r);\n\tr = MulAdd(s1_0, M4(1.395e-02, 1.801e-02, 1.899e-03, -3.313e-02, 2.251e-02, -3.697e-03, 5.577e-02, -3.001e-02, -6.090e-02, 1.645e-01, -1.047e-01, 1.483e-01, -6.634e-03, 3.917e-04, -1.999e-02, 2.114e-02), r);\n\tr = MulAdd(s1_1, M4(2.859e-03, 5.455e-02, 4.336e-02, -2.717e-02, 9.302e-02, -9.807e-02, 7.046e-02, -3.707e-02, -1.275e-01, -3.463e-02, -1.160e-01, -4.227e-02, 3.162e-02, 3.583e-02, 4.579e-02, -1.196e-02), r);\n\tr = MulAdd(s1_2, M4(-7.086e-03, 2.542e-03, 1.500e-03, -6.273e-03, 5.711e-02, -5.317e-02, -5.455e-03, 4.847e-02, 8.830e-02, 5.991e-02, 3.356e-02, 1.214e-03, -5.272e-03, -5.211e-02, -2.142e-02, -1.246e-02), r);\n\tr = MulAdd(s1_3, M4(-4.807e-02, 4.530e-02, 2.719e-01, -1.035e-02, 4.911e-02, -5.824e-03, -6.478e-02, -1.051e-03, -1.348e-02, 6.405e-01, -4.257e-01, 3.690e-01, -9.665e-02, 2.101e-01, 6.571e-02, 9.738e-02), r);\n\tr = MulAdd(s1_4, M4(2.423e-01, -2.074e-01, -4.394e-01, -2.830e-02, 5.415e-02, -2.337e-01, 6.080e-01, -1.843e-01, -5.128e-01, 1.559e-01, -2.033e-01, -6.040e-02, -6.726e-02, 2.589e-01, 1.901e-01, -9.598e-02), r);\n\tr = MulAdd(s1_5, M4(-1.456e-01, 6.484e-02, 1.125e-01, -1.183e-02, 2.186e-01, 2.930e-02, -4.285e-02, 6.272e-02, 1.500e-01, 1.033e-01, 2.173e-01, -3.328e-02, -6.785e-02, -7.882e-02, -1.450e-01, 7.182e-02), r);\n\tr = MulAdd(s1_6, M4(-4.062e-02, 9.988e-02, -5.106e-02, 1.546e-01, 5.122e-02, -7.398e-02, -5.320e-03, -5.669e-02, -4.188e-02, 2.035e-01, -5.253e-02, -7.554e-03, -6.233e-02, 1.285e-01, 1.152e-02, 7.495e-02), r);\n\tr = MulAdd(s1_7, M4(1.168e-01, -1.061e-01, -8.798e-02, -2.456e-01, -1.274e-01, -9.338e-02, 6.064e-04, 1.255e-01, 2.944e-02, -9.599e-02, -1.606e-01, 1.477e-01, -5.541e-02, -9.992e-02, -5.652e-02, 1.402e-02), r);\n\tr = MulAdd(s1_8, M4(-8.447e-02, -2.272e-02, 3.291e-02, 1.141e-01, 2.835e-01, 2.747e-02, 9.338e-03, -1.271e-01, 1.118e-03, -3.543e-02, -3.201e-02, 5.803e-02, 1.793e-01, -6.889e-02, -3.139e-02, -1.000e-01), r);\n\tr = MulAdd(s2_0, M4(3.477e-02, 8.152e-03, -8.100e-03, 3.869e-02, 4.675e-02, 8.080e-02, -4.909e-02, 6.764e-03, -2.946e-03, -7.021e-02, -1.191e-02, -1.660e-02, -5.967e-02, -1.872e-02, -3.485e-02, 3.391e-02), r);\n\tr = MulAdd(s2_1, M4(1.685e-01, -2.681e-01, -2.340e-01, -1.748e-01, -1.593e-01, 7.496e-02, 3.748e-02, 1.562e-02, 5.150e-02, -3.648e-02, 3.739e-02, -4.384e-02, -1.521e-02, -1.061e-01, -1.381e-01, 1.733e-02), r);\n\tr = MulAdd(s2_2, M4(1.573e-01, 1.415e-01, 1.714e-01, -5.175e-02, -2.442e-02, 1.054e-02, 3.047e-03, -5.944e-03, -6.027e-03, 1.034e-02, -3.381e-02, 4.299e-02, -9.763e-02, 4.729e-02, 9.642e-02, -1.450e-02), r);\n\tr = MulAdd(s2_3, M4(8.191e-03, 1.353e-01, -6.018e-02, 5.677e-02, -1.725e-02, -1.324e-01, 1.646e-01, -1.154e-01, -9.796e-03, 3.066e-02, -5.975e-02, 2.878e-02, -1.381e-01, 1.550e-01, 3.556e-02, 8.926e-02), r);\n\tr = MulAdd(s2_4, M4(1.715e-01, -2.115e-02, 8.179e-02, -2.066e-01, 1.275e-01, 1.599e-01, 2.325e-02, -9.637e-03, 6.565e-02, -1.901e-01, 7.185e-02, -1.559e-01, 1.106e-01, -6.210e-02, -3.672e-01, 6.248e-02), r);\n\tr = MulAdd(s2_5, M4(-3.453e-03, 5.284e-02, -1.031e-01, 5.091e-02, 1.538e-02, -9.971e-02, -5.610e-02, -2.585e-02, 6.441e-02, 1.113e-01, 3.085e-02, 6.860e-02, -6.167e-02, -6.774e-02, -6.898e-02, -4.397e-03), r);\n\tr = MulAdd(s2_6, M4(-1.561e-02, 5.106e-02, 2.999e-03, -7.663e-03, 6.665e-02, -1.217e-01, -9.529e-03, -2.096e-02, -2.825e-02, 4.854e-02, -2.196e-02, -7.191e-03, 2.274e-03, 1.698e-02, -1.727e-02, 1.967e-03), r);\n\tr = MulAdd(s2_7, M4(3.534e-02, -1.077e-02, 1.607e-02, 4.542e-02, -7.989e-02, 1.294e-01, 4.920e-02, -6.332e-02, -9.402e-02, 2.028e-02, -6.305e-03, 9.061e-02, 2.225e-03, 2.352e-02, -4.032e-03, -4.985e-02), r);\n\tr = MulAdd(s2_8, M4(7.112e-02, -1.427e-02, -2.352e-02, -2.989e-02, -5.633e-02, -6.039e-03, 3.496e-03, 2.535e-02, 1.265e-01, -4.541e-02, -5.393e-02, -5.355e-02, 1.498e-03, 2.057e-02, 1.278e-02, 5.662e-02), r);\n\tr = MulAdd(s3_0, M4(9.523e-02, -7.183e-02, -2.740e-01, -1.569e-02, 1.008e-01, 3.065e+00, -2.003e-01, 1.938e-01, 7.503e-02, -1.096e-01, -3.177e-02, -4.074e-02, 1.090e-03, -2.250e-02, -4.727e-02, 2.528e-02), r);\n\tr = MulAdd(s3_1, M4(-7.789e-02, 7.186e-03, 3.838e-01, -1.314e-01, -4.119e-01, 1.344e-01, 5.252e-02, -4.478e-02, -2.421e-01, 8.221e-02, 1.588e-01, 5.943e-02, -6.960e-02, -7.055e-02, -5.857e-02, -2.367e-02), r);\n\tr = MulAdd(s3_2, M4(1.578e-01, -5.477e-02, -1.343e-01, 7.698e-02, 9.761e-02, -2.725e-02, -6.329e-02, -5.552e-02, -6.854e-02, 1.143e-02, -8.043e-02, 1.416e-02, 5.387e-02, 1.371e-01, 1.146e-01, -5.881e-04), r);\n\tr = MulAdd(s3_3, M4(7.307e-03, -8.177e-02, 5.634e-02, -1.149e-01, -4.060e-01, 1.613e+00, -3.145e-01, 2.057e-02, -9.555e-02, 2.548e-01, 5.932e-02, 7.789e-02, 7.174e-03, -6.399e-03, -2.315e-02, 8.381e-03), r);\n\tr = MulAdd(s3_4, M4(1.200e-01, 1.356e-01, 8.711e-03, 7.537e-02, -1.751e-01, 3.458e-02, 2.391e-01, -1.111e-01, 1.506e-01, -3.165e-01, -4.619e-01, -9.386e-02, -4.377e-02, -1.492e-01, -5.002e-01, 9.821e-02), r);\n\tr = MulAdd(s3_5, M4(1.539e-01, 7.309e-02, 4.257e-03, -1.539e-01, -4.757e-01, 1.070e-01, 1.702e-02, 9.709e-02, -1.140e-01, 1.938e-01, 1.982e-01, -3.215e-02, -3.822e-01, 3.408e-01, 1.647e-01, 1.597e-01), r);\n\tr = MulAdd(s3_6, M4(-3.320e-02, 4.854e-02, -1.957e-02, 3.353e-02, 1.823e-01, 8.532e-02, 3.236e-02, -1.874e-01, -1.073e-02, -6.598e-03, -2.954e-02, -2.175e-02, 1.184e-02, -3.856e-02, 2.166e-02, -2.608e-02), r);\n\tr = MulAdd(s3_7, M4(2.038e-02, -4.606e-02, -3.841e-02, -4.008e-02, -2.542e-01, -1.076e-01, -2.891e-02, 1.837e-01, 3.842e-02, 1.753e-01, 3.043e-02, -3.298e-02, 2.990e-02, 1.215e-01, 9.583e-02, -5.860e-02), r);\n\tr = MulAdd(s3_8, M4(6.138e-02, 3.405e-02, 3.364e-04, 6.037e-03, 1.811e-01, 9.691e-04, 3.497e-02, -1.810e-02, -3.940e-02, -1.159e-01, -7.007e-02, 1.170e-01, 1.829e-02, -2.216e-02, -1.689e-02, 1.150e-01), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 6\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0, t1\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -8.480e-04, -1.222e-04, -8.629e-04, -1.828e-04 };\n\tr = MulAdd(s0_0, M4(-6.910e-02, 1.215e-03, -2.039e-03, -1.079e-04, 8.088e-02, -2.119e-02, -1.929e-02, 1.865e-02, -6.142e-02, 2.499e-02, -4.185e-03, 1.951e-03, -1.099e-02, 1.071e-02, 3.133e-03, -9.539e-03), r);\n\tr = MulAdd(s0_1, M4(-2.129e-02, 6.812e-02, 2.738e-02, -2.965e-02, -1.569e-01, -7.369e-02, 6.714e-02, -2.416e-02, 6.421e-02, -3.329e-02, 4.397e-03, 1.902e-02, 1.426e-01, 7.469e-02, -3.306e-02, 1.260e-02), r);\n\tr = MulAdd(s0_2, M4(-2.521e-02, -1.556e-02, -1.880e-02, 1.813e-02, -2.926e-03, -3.967e-02, -2.562e-02, 1.669e-02, 1.699e-03, 2.545e-02, 9.862e-03, 1.052e-02, -1.392e-02, 1.215e-02, 2.436e-02, 2.113e-04), r);\n\tr = MulAdd(s0_3, M4(1.800e-02, -2.761e-02, 1.145e-02, -6.469e-02, 1.392e-01, 1.033e-02, 1.406e-01, -7.326e-03, -2.077e-02, 2.985e-03, -1.102e-01, 2.804e-02, -1.544e-02, 5.050e-02, 2.915e-02, 2.396e-02), r);\n\tr = MulAdd(s0_4, M4(1.242e-01, -4.463e-01, -3.829e-01, 1.871e-01, -8.392e-02, 6.470e-02, -3.115e-01, -1.970e-01, -1.186e-01, -1.204e-01, -2.296e-02, -1.763e-01, -1.265e-01, -1.919e-01, 6.718e-02, 8.923e-02), r);\n\tr = MulAdd(s0_5, M4(-2.493e-02, 3.014e-02, 2.446e-02, -1.488e-01, 1.299e-02, -5.759e-02, 2.138e-02, -9.211e-02, -8.051e-03, -4.216e-02, -1.327e-02, -9.724e-04, 3.675e-02, 7.968e-03, -3.353e-02, -4.044e-02), r);\n\tr = MulAdd(s0_6, M4(2.027e-02, 3.813e-03, -2.557e-03, -2.670e-02, 2.068e-02, 1.886e-02, 6.014e-02, 3.191e-02, -1.917e-03, -2.659e-03, 1.273e-02, 3.109e-03, 9.881e-03, -4.410e-04, 7.569e-03, 1.276e-02), r);\n\tr = MulAdd(s0_7, M4(-1.802e-03, 4.820e-02, 4.201e-02, 4.574e-02, 2.826e-02, 2.044e-02, 1.196e-01, 9.132e-02, 1.800e-02, 2.670e-02, -3.398e-03, 1.359e-02, 1.247e-02, 1.268e-02, 1.628e-03, -1.067e-02), r);\n\tr = MulAdd(s0_8, M4(5.233e-03, 3.648e-02, 2.719e-02, 2.838e-02, 1.857e-03, -1.999e-03, 1.703e-02, 5.921e-02, 7.925e-03, -2.543e-03, 5.431e-03, -1.102e-02, -1.116e-02, -5.510e-03, -9.183e-03, -8.054e-03), r);\n\tr = MulAdd(s1_0, M4(-6.423e-02, -5.758e-03, -8.948e-03, -2.227e-03, 5.802e-02, -2.252e-02, -8.134e-03, 1.448e-02, -3.642e-02, 4.476e-03, 7.865e-03, 3.269e-03, 1.053e-02, 1.269e-02, -1.530e-03, -9.628e-03), r);\n\tr = MulAdd(s1_1, M4(-2.553e-02, 4.747e-02, 4.136e-02, -2.368e-02, -1.401e-01, -4.967e-02, 6.372e-02, -1.788e-04, 3.663e-01, 2.193e-01, -8.228e-02, -8.507e-02, 1.404e-01, 8.229e-02, -5.862e-02, -1.161e-02), r);\n\tr = MulAdd(s1_2, M4(-2.216e-02, -7.521e-03, -2.522e-02, 2.337e-02, -2.651e-03, -3.786e-02, -9.854e-03, 2.033e-02, 9.696e-03, 1.237e-01, 6.173e-03, 2.898e-02, -1.335e-02, 2.948e-02, 9.778e-03, -1.243e-02), r);\n\tr = MulAdd(s1_3, M4(-1.598e-02, -1.677e-02, -4.726e-02, -2.250e-02, 2.076e-01, -2.825e-02, 1.389e-01, -2.552e-02, 3.209e-02, -3.267e-03, -9.876e-02, 3.775e-02, -5.440e-02, 6.367e-02, 8.425e-02, 7.583e-03), r);\n\tr = MulAdd(s1_4, M4(-2.339e-01, -8.617e-02, -3.313e-01, 1.470e-01, -1.249e-01, 3.994e-01, -7.191e-01, -2.121e-01, 2.521e-02, 4.601e-02, -3.584e-01, -4.014e-01, -4.299e-01, -4.828e-01, 4.034e-01, 3.633e-01), r);\n\tr = MulAdd(s1_5, M4(3.413e-02, -4.685e-03, 4.308e-02, -1.211e-01, 3.722e-02, -1.000e-01, 5.938e-02, -1.900e-01, 3.286e-03, 6.076e-03, 2.628e-02, -1.190e-01, 3.968e-02, -3.583e-02, -4.724e-02, 5.713e-02), r);\n\tr = MulAdd(s1_6, M4(3.008e-02, -2.083e-02, 7.970e-03, -2.011e-02, -8.809e-03, 9.741e-03, 7.228e-02, 1.875e-02, -8.374e-03, -2.245e-03, 1.642e-02, -9.996e-03, 2.093e-02, 6.393e-03, 6.227e-03, -6.775e-03), r);\n\tr = MulAdd(s1_7, M4(1.113e-02, 5.783e-02, -1.430e-02, 2.826e-02, -1.250e-02, -3.106e-02, 1.754e-01, 2.001e-01, -1.431e-02, -1.368e-02, 4.329e-02, 4.832e-02, 4.089e-02, 3.702e-02, -5.774e-03, 8.701e-03), r);\n\tr = MulAdd(s1_8, M4(1.395e-03, 3.747e-02, 2.706e-02, 4.675e-02, -1.191e-02, -2.163e-02, 3.137e-02, 7.056e-02, 4.929e-03, -6.465e-03, 1.083e-03, 1.816e-02, -3.896e-03, 1.081e-02, -1.507e-02, -1.412e-02), r);\n\tr = MulAdd(s2_0, M4(5.551e-02, 3.061e-02, 2.172e-02, -4.435e-04, 7.341e-02, -4.254e-03, -3.710e-02, 2.005e-02, 3.528e-02, 1.764e-02, 4.547e-03, -6.460e-03, 1.949e-01, 2.466e-02, 7.886e-02, -2.722e-03), r);\n\tr = MulAdd(s2_1, M4(-1.216e-03, 4.895e-02, -2.548e-02, 1.354e-02, 1.184e-01, -2.592e-01, 3.262e-02, 3.213e-02, -7.885e-02, -2.429e-02, -5.811e-02, 1.909e-02, 3.185e-02, -7.057e-02, -2.388e-02, 1.018e-01), r);\n\tr = MulAdd(s2_2, M4(-4.325e-03, 8.278e-03, -7.126e-04, -3.013e-03, -2.277e-02, 6.470e-02, -3.258e-02, 6.558e-03, 2.954e-02, 9.175e-03, -1.066e-03, -1.931e-02, 3.523e-03, 1.347e-03, -1.837e-03, -3.765e-03), r);\n\tr = MulAdd(s2_3, M4(-1.063e-01, 1.364e-02, -1.031e-01, 7.569e-02, -3.770e-02, 3.667e-02, 2.683e-02, 5.980e-02, -1.057e-01, -1.107e-02, -7.272e-02, 5.094e-02, 7.605e-02, 1.566e-02, 1.708e-01, 2.124e-01), r);\n\tr = MulAdd(s2_4, M4(1.344e-02, -6.091e-02, 2.694e-02, -2.727e-02, 2.786e-01, 5.187e-02, 6.738e-01, -9.220e-01, 1.745e-01, -1.468e-02, 1.843e-01, -1.866e-01, -9.396e-02, -1.505e-01, 2.471e-01, -1.138e+00), r);\n\tr = MulAdd(s2_5, M4(6.506e-03, 7.226e-03, 9.650e-03, 3.959e-03, -2.858e-02, -1.124e-01, -5.599e-02, 8.081e-02, -3.923e-02, 6.977e-02, 2.327e-03, 1.164e-01, 1.242e-02, -1.947e-02, -4.582e-02, 2.119e-02), r);\n\tr = MulAdd(s2_6, M4(-1.730e-02, -2.202e-02, -2.408e-02, -6.448e-02, -3.767e-03, 2.506e-02, -4.165e-02, 4.527e-02, 1.431e-02, -2.421e-02, -1.170e-02, -6.665e-02, -1.236e-02, 5.709e-03, -6.345e-03, -3.440e-02), r);\n\tr = MulAdd(s2_7, M4(-4.211e-02, -5.191e-02, -9.762e-02, -1.275e-01, 2.079e-02, -1.004e-01, 7.470e-02, 1.084e-02, -1.789e-02, 8.006e-02, 3.170e-02, 1.111e-01, -4.772e-02, -6.100e-02, 2.375e-02, 2.545e-03), r);\n\tr = MulAdd(s2_8, M4(-7.109e-03, 1.968e-03, -9.159e-03, -1.523e-02, -1.024e-02, -5.787e-04, -4.581e-02, -1.496e-02, 2.302e-02, -1.568e-02, 2.850e-02, 9.731e-03, -1.219e-02, 1.316e-03, -1.859e-02, 8.662e-02), r);\n\tr = MulAdd(s3_0, M4(2.241e-01, 1.599e-02, -3.007e-02, -8.278e-02, -2.343e-02, -1.323e-02, 6.153e-03, 8.030e-03, 1.988e-02, 1.870e-02, 7.620e-03, -1.035e-02, 2.443e-01, 4.061e-02, 3.123e-02, -4.152e-03), r);\n\tr = MulAdd(s3_1, M4(-1.500e-02, -2.365e-02, -2.046e-02, 4.369e-02, 7.611e-03, -9.342e-03, 4.413e-03, -1.110e-03, -1.238e-01, -3.394e-02, -4.442e-02, 2.423e-02, -9.742e-02, -2.324e-02, -3.479e-02, 4.742e-02), r);\n\tr = MulAdd(s3_2, M4(5.839e-03, 1.560e-02, -3.631e-03, 6.730e-03, -2.371e-03, -1.011e-02, -3.821e-03, 1.830e-03, 2.255e-02, 1.426e-02, -1.146e-02, -1.650e-02, 9.035e-03, 5.831e-03, 2.660e-03, -4.854e-03), r);\n\tr = MulAdd(s3_3, M4(-1.694e-01, -2.771e-01, 6.449e-01, -2.979e-01, 9.108e-02, -2.277e-02, -5.309e-02, -3.552e-02, -1.626e-01, 2.544e-02, -7.033e-02, 7.145e-02, -1.334e-01, 1.008e-01, 1.121e-01, 1.733e-01), r);\n\tr = MulAdd(s3_4, M4(-1.019e-01, 1.989e-01, -6.682e-02, -7.066e-02, -3.795e-02, 1.362e-01, 4.307e-02, -4.383e-02, 6.286e-01, -3.881e-01, 1.970e-01, -3.421e-01, -5.374e-03, -2.446e-01, -8.874e-02, -4.099e-01), r);\n\tr = MulAdd(s3_5, M4(1.279e-02, -1.406e-02, 7.997e-03, 1.743e-02, 2.251e-02, -4.285e-02, -2.154e-03, -1.441e-02, -2.329e-02, 1.667e-02, 4.333e-02, 1.229e-01, -2.284e-03, -2.450e-02, -8.000e-03, -1.712e-02), r);\n\tr = MulAdd(s3_6, M4(7.251e-02, 9.488e-03, -1.511e-01, -6.947e-02, -2.728e-02, 7.342e-03, 2.289e-02, 1.443e-02, 1.492e-02, -8.903e-03, -5.817e-02, -4.836e-02, -1.677e-03, 1.964e-02, -6.858e-03, -1.328e-02), r);\n\tr = MulAdd(s3_7, M4(-8.618e-02, -5.596e-02, -1.276e-01, -1.230e-01, 4.851e-03, -5.676e-02, 2.939e-02, -4.192e-02, -2.508e-02, 4.430e-02, 1.352e-01, 2.072e-02, -8.584e-03, -3.983e-02, 1.177e-02, -4.721e-02), r);\n\tr = MulAdd(s3_8, M4(6.050e-03, -3.781e-04, -3.124e-03, -1.667e-02, -1.291e-02, -1.315e-02, -2.106e-02, -5.240e-03, 1.412e-02, -2.504e-02, 3.138e-02, -2.989e-02, -6.363e-03, -1.480e-04, 1.157e-03, 1.933e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-6x8C-NVL-DN.hlsl",
    "content": "// CuNNy 6x8C BILINEAR RGB NVL DN - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-DN-D08N06\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t3;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0, t1\n\n#define l0(x, y) (dot(MF3(-2.035e-01, -4.051e-01, -9.041e-02), O(INPUT, float2(x, y)).rgb) + MF(4.315e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -8.698e-03, -1.051e-02, -2.456e-02, 8.033e-03 };\n\tr = mad(s0_0, V4(-5.333e-02, 1.506e-02, -4.863e-02, 5.352e-03), r);\n\tr = mad(s0_1, V4(3.064e-02, -1.241e-03, 3.831e-02, 1.406e-01), r);\n\tr = mad(s0_2, V4(-3.234e-03, 3.668e-03, -1.982e-02, -1.101e-01), r);\n\tr = mad(s0_3, V4(-4.854e-01, 5.950e-01, -9.253e-02, -3.601e-01), r);\n\tr = mad(s0_4, V4(-1.239e-01, 1.942e-01, 4.939e-01, 5.723e-01), r);\n\tr = mad(s0_5, V4(-1.746e-02, 8.397e-04, 4.267e-02, -7.863e-02), r);\n\tr = mad(s0_6, V4(5.387e-01, -5.918e-01, -5.641e-02, 2.018e-02), r);\n\tr = mad(s0_7, V4(9.656e-02, -2.095e-01, -1.788e-01, -1.900e-01), r);\n\tr = mad(s0_8, V4(1.780e-02, -3.460e-03, -1.204e-01, -1.629e-02), r);\n\treturn r;\n}\n\nV4 f1(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 1.285e-01, 1.293e-01, -1.923e-02, 1.313e-02 };\n\tr = mad(s0_0, V4(1.238e-02, 8.036e-03, 3.125e-01, 1.440e-01), r);\n\tr = mad(s0_1, V4(-5.165e-02, -8.626e-03, -3.096e-01, 4.477e-02), r);\n\tr = mad(s0_2, V4(3.169e-04, 1.974e-02, -2.705e-01, -5.500e-02), r);\n\tr = mad(s0_3, V4(-2.838e-02, 3.386e-03, 1.727e-01, 4.413e-01), r);\n\tr = mad(s0_4, V4(1.497e-01, 1.326e-02, 3.072e-01, -5.548e-01), r);\n\tr = mad(s0_5, V4(1.428e-04, -3.819e-01, -2.438e-01, 5.685e-03), r);\n\tr = mad(s0_6, V4(-3.416e-02, 2.989e-03, 2.969e-02, 2.118e-02), r);\n\tr = mad(s0_7, V4(5.299e-01, 4.041e-03, -9.012e-02, -7.878e-02), r);\n\tr = mad(s0_8, V4(-5.243e-02, 9.452e-03, 7.145e-02, 3.160e-02), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 2.009e-02, -6.020e-02, -2.095e-01, -2.428e-04 };\n\tr = MulAdd(s0_0, M4(1.415e-01, -1.943e-02, -8.607e-02, 1.720e-02, -5.503e-02, -7.077e-02, 6.357e-02, 1.637e-01, -3.997e-04, 3.993e-01, 1.124e-02, -7.681e-02, 2.275e-01, 2.744e-01, 3.333e-02, -7.161e-02), r);\n\tr = MulAdd(s0_1, M4(9.960e-02, 3.193e-01, 1.675e-01, -3.303e-01, 2.128e-01, -4.128e-01, -2.347e-01, 7.342e-01, 1.727e-01, 3.478e-02, -1.685e-01, 2.954e-01, 3.302e-01, -4.103e-01, -1.933e-01, 6.543e-01), r);\n\tr = MulAdd(s0_2, M4(3.761e-01, -1.545e-01, -1.035e-01, 4.556e-01, 2.239e-01, 2.557e-01, -2.634e-01, -3.533e-01, 1.636e-01, -6.189e-02, 7.688e-02, 4.012e-01, 2.164e-01, -1.716e-01, -1.205e-01, 8.663e-02), r);\n\tr = MulAdd(s0_3, M4(-1.181e-02, 1.876e-01, -6.568e-02, -5.398e-02, 1.158e-01, -1.222e-01, 5.085e-02, 2.418e-01, 1.176e-01, -3.773e-01, -2.300e-02, 1.588e-02, 3.060e-02, 6.070e-02, -7.153e-02, 1.807e-04), r);\n\tr = MulAdd(s0_4, M4(2.148e-01, -3.282e-01, -1.202e-01, -5.740e-02, -8.745e-02, 4.563e-01, 1.371e-01, -2.197e-02, 1.796e-01, -8.210e-02, 4.639e-01, -2.013e-02, -1.657e-01, 1.274e-01, 1.544e-01, -3.108e-01), r);\n\tr = MulAdd(s0_5, M4(5.544e-01, 1.682e-01, -5.642e-01, 2.636e-01, -5.510e-01, -1.371e-01, 1.450e-01, -4.443e-01, 1.705e-01, -1.304e-01, -2.385e-02, -7.088e-02, -3.489e-01, 6.447e-02, 6.309e-02, -1.137e-01), r);\n\tr = MulAdd(s0_6, M4(-1.218e-01, -2.795e-02, -1.160e-01, 8.723e-02, -2.646e-02, -2.134e-01, 1.170e-02, 1.284e-01, -1.001e-02, 1.919e-01, -9.593e-02, -2.529e-01, -8.665e-02, 1.473e-01, 3.237e-01, -9.264e-02), r);\n\tr = MulAdd(s0_7, M4(-2.280e-01, -1.011e-01, -1.681e-01, -1.644e-01, 7.984e-02, 4.135e-02, 9.764e-02, 1.405e-01, -3.485e-01, 2.078e-01, 8.260e-02, -6.538e-02, -1.472e-01, -2.301e-02, -1.911e-02, -6.720e-04), r);\n\tr = MulAdd(s0_8, M4(-2.326e-01, -1.645e-01, -1.724e-01, -1.018e-01, 1.470e-01, 2.117e-01, 3.018e-01, -7.956e-02, -1.260e-01, -2.090e-01, -7.409e-02, 8.810e-03, 7.153e-02, 1.818e-02, 8.868e-03, -1.993e-03), r);\n\tr = MulAdd(s1_0, M4(-4.601e-02, -1.224e-01, 1.492e-01, 1.063e-01, 1.004e-01, 3.807e-02, -7.326e-02, 3.358e-02, 2.690e-02, 3.908e-02, 7.352e-02, -1.512e-01, -1.342e-02, 3.690e-01, -2.220e-01, -9.966e-02), r);\n\tr = MulAdd(s1_1, M4(-4.769e-01, 1.653e-01, -2.428e-01, 3.893e-02, 8.017e-01, -5.618e-01, 7.747e-02, 2.968e-01, 2.540e-01, -3.845e-01, -2.625e-01, 4.699e-01, 4.378e-01, -9.630e-01, -5.949e-02, 8.363e-01), r);\n\tr = MulAdd(s1_2, M4(-4.463e-01, -1.382e-01, -3.918e-01, -4.812e-01, 3.207e-01, -2.003e-01, 1.050e-01, 1.800e-01, 2.242e-01, -1.199e-01, -4.862e-02, 1.616e-01, 1.341e-01, -4.310e-01, -1.937e-01, 2.326e-01), r);\n\tr = MulAdd(s1_3, M4(2.147e-02, -2.783e-01, 8.845e-02, 2.262e-01, 1.024e-01, 2.714e-01, -4.063e-02, -7.636e-03, 1.980e-02, -1.420e-01, -2.109e-02, 3.946e-02, 8.302e-02, 5.234e-01, -2.883e-01, -1.296e-01), r);\n\tr = MulAdd(s1_4, M4(-5.593e-02, 7.059e-02, -1.420e-01, 8.657e-02, 2.728e-01, -8.770e-02, 1.477e-01, -1.427e-01, -1.250e-01, 6.256e-02, -3.762e-01, -1.046e-01, -3.094e-01, 5.179e-01, -3.617e-02, -2.885e-01), r);\n\tr = MulAdd(s1_5, M4(-1.382e-01, 2.495e-02, 3.461e-01, -5.939e-01, 3.019e-01, -8.266e-02, -3.544e-01, 2.824e-01, -1.029e-01, -3.089e-04, 1.307e-01, -6.184e-02, -1.293e-01, -4.540e-02, -3.406e-01, -1.988e-01), r);\n\tr = MulAdd(s1_6, M4(-6.472e-02, -2.037e-01, -1.320e-02, 1.285e-01, -1.378e-01, -3.275e-02, -8.836e-02, 9.191e-02, 1.123e-01, 1.736e-01, -2.116e-01, 2.340e-02, -1.655e-01, 1.227e-01, 2.700e-01, -1.485e-01), r);\n\tr = MulAdd(s1_7, M4(1.229e-01, 2.141e-02, 1.523e-01, 7.696e-02, -1.830e-01, -1.036e-01, -9.236e-02, -1.558e-01, -2.906e-01, -3.243e-02, -2.723e-02, -8.754e-02, -2.951e-01, 2.923e-02, -9.960e-02, -9.770e-03), r);\n\tr = MulAdd(s1_8, M4(9.990e-02, 3.377e-01, 1.933e-01, -1.242e-01, -1.515e-01, -6.217e-02, 4.245e-02, -6.189e-02, -9.236e-02, -2.214e-01, -6.575e-02, 6.456e-03, 1.795e-02, 4.278e-02, -6.188e-02, 1.573e-02), r);\n\tr = MulAdd(s2_0, M4(1.491e-01, -9.449e-02, -1.071e-01, 3.575e-02, -6.811e-04, -4.960e-02, -5.181e-04, 7.298e-02, 3.839e-02, -2.178e-02, -1.703e-02, 1.046e-01, -4.208e-02, 9.251e-03, 3.523e-02, -2.881e-01), r);\n\tr = MulAdd(s2_1, M4(3.309e-02, 6.440e-02, 2.337e-01, 1.524e-01, -1.725e-02, 3.153e-02, 9.155e-03, -5.480e-02, 4.245e-02, -1.042e-01, -1.053e-01, 1.759e-01, -1.713e-01, -1.269e-01, -1.378e-02, -6.438e-02), r);\n\tr = MulAdd(s2_2, M4(-1.648e-01, -6.306e-03, 8.299e-02, -1.812e-01, 6.679e-02, -6.670e-02, -8.122e-02, 1.284e-01, -7.879e-02, 9.292e-02, 7.607e-02, -2.007e-01, 2.088e-02, 5.058e-02, -1.943e-01, 1.150e-01), r);\n\tr = MulAdd(s2_3, M4(9.643e-02, 2.546e-01, -5.823e-02, 6.665e-02, -6.931e-02, 1.891e-02, 1.862e-01, 1.711e-02, 1.426e-01, 2.191e-01, -2.335e-01, 2.214e-01, -5.269e-02, 2.464e-02, -9.016e-02, -7.974e-02), r);\n\tr = MulAdd(s2_4, M4(3.501e-02, -1.022e-02, 1.990e-01, -7.641e-02, -1.492e-01, 1.836e-01, 8.877e-02, -2.226e-01, -2.686e-01, 1.809e-01, 2.979e-01, -2.644e-01, 1.681e-01, -3.821e-01, -1.366e-01, 7.164e-01), r);\n\tr = MulAdd(s2_5, M4(2.277e-01, -1.757e-01, -1.340e-02, 1.040e-01, -7.691e-02, 1.556e-01, -1.029e-02, -9.558e-02, 2.705e-01, 4.410e-02, 1.649e-01, 6.361e-02, 1.790e-01, 2.952e-01, -5.692e-02, -3.225e-02), r);\n\tr = MulAdd(s2_6, M4(-5.395e-02, 8.925e-02, 6.361e-02, -4.226e-02, -3.947e-02, -1.783e-01, -3.393e-02, 5.163e-02, 4.873e-02, 2.768e-01, -1.197e-01, -1.120e-01, -1.770e-02, 9.506e-02, 1.098e-01, -1.090e-01), r);\n\tr = MulAdd(s2_7, M4(-2.177e-01, 7.495e-02, 8.441e-02, -1.043e-01, 2.036e-01, -1.763e-01, 1.748e-01, 1.660e-01, 1.121e-01, -2.253e-01, -1.790e-01, -1.439e-01, -1.083e-01, 5.504e-02, 2.336e-01, -9.936e-02), r);\n\tr = MulAdd(s2_8, M4(-1.184e-01, -8.465e-02, 5.144e-02, 2.009e-02, 7.120e-02, 9.413e-02, 4.370e-02, -5.484e-02, -1.443e-01, -8.664e-02, -4.848e-02, 1.242e-01, 5.112e-02, 2.200e-01, -5.659e-03, 5.474e-02), r);\n\tr = MulAdd(s3_0, M4(6.419e-01, -3.023e-01, 2.127e-01, 3.398e-01, -1.325e+00, -2.531e-01, -9.418e-01, -1.673e+00, -2.186e-02, -1.045e-01, -4.623e-02, 9.273e-02, 5.411e-02, 2.154e-01, 1.728e-01, -1.901e-01), r);\n\tr = MulAdd(s3_1, M4(-1.247e-01, 2.308e-01, -5.479e-01, -4.446e-02, -2.334e-01, -7.716e-02, -1.220e-01, -3.670e-01, 2.478e-02, -4.998e-02, -7.881e-02, 1.175e-01, -6.152e-01, 8.178e-02, -8.520e-02, -2.934e-01), r);\n\tr = MulAdd(s3_2, M4(-8.153e-01, 1.575e-01, 7.752e-01, 9.207e-01, 3.695e-02, -2.903e-01, -1.513e-01, 6.705e-03, -5.714e-02, 1.421e-01, 4.701e-02, -8.445e-02, 1.149e-01, -1.975e-01, -2.647e-01, 3.480e-01), r);\n\tr = MulAdd(s3_3, M4(3.278e-02, 4.846e-01, -6.441e-01, -5.745e-02, 1.015e+00, -5.113e-01, -2.161e+00, 9.403e-01, 1.408e-01, 2.036e-01, -8.272e-02, 1.226e-01, -1.586e-01, -6.721e-02, -1.057e-01, -5.341e-02), r);\n\tr = MulAdd(s3_4, M4(-1.353e+00, 7.765e-01, -7.567e-01, -9.945e-01, 4.103e-01, 1.065e-01, -1.313e-02, 2.815e-01, -3.549e-02, -1.802e-01, 3.446e-01, -3.407e-01, 3.526e-01, -3.278e-01, -2.182e-01, 7.167e-01), r);\n\tr = MulAdd(s3_5, M4(2.939e-01, 1.015e+00, -1.901e-01, 7.339e-01, -1.241e-01, 8.653e-02, 3.034e-01, 4.420e-01, 1.446e-02, 3.259e-04, 1.860e-01, -1.794e-02, -1.243e-01, -7.423e-02, -1.561e-01, -3.792e-01), r);\n\tr = MulAdd(s3_6, M4(-2.100e-02, 1.608e-01, 6.866e-02, 8.797e-02, 6.613e-01, -5.224e-01, -9.743e-01, 1.941e-01, -3.859e-02, 9.605e-02, -1.248e-02, -4.475e-03, 8.367e-02, 2.368e-01, 1.273e-01, -9.406e-02), r);\n\tr = MulAdd(s3_7, M4(1.635e-01, 3.213e-01, -1.108e-01, 5.477e-01, 2.577e-01, -4.309e-01, 2.367e-01, 7.649e-02, -1.462e-02, -1.543e-01, -1.300e-01, -3.833e-02, -4.089e-02, -2.145e-02, 2.984e-01, 5.385e-02), r);\n\tr = MulAdd(s3_8, M4(1.851e-01, -4.212e-01, -1.136e-01, -1.345e-01, -2.134e-01, -4.054e-01, -2.896e-01, -5.105e-02, -4.118e-02, -6.056e-02, 1.869e-02, 6.431e-02, 2.077e-02, -1.061e-01, -5.865e-02, 2.204e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.228e-02, -4.362e-02, 4.248e-02, -2.610e-02 };\n\tr = MulAdd(s0_0, M4(1.340e-01, -2.739e-02, -5.723e-01, 5.792e-02, -2.152e-01, 5.695e-02, 1.657e-01, 1.371e-01, -1.275e-01, 2.891e-01, -2.673e-01, 9.725e-02, -5.268e-02, 5.140e-02, -3.580e-01, 4.427e-01), r);\n\tr = MulAdd(s0_1, M4(2.613e-01, 3.597e-01, -3.318e-01, -1.844e-02, -1.190e-02, -2.073e-01, -1.665e-01, -3.505e-01, 8.562e-02, -3.558e-01, 1.160e-01, 1.326e-03, -7.102e-02, -4.067e-01, 3.810e-01, 1.910e-01), r);\n\tr = MulAdd(s0_2, M4(4.934e-02, -5.566e-01, 6.730e-01, -1.377e-01, 1.549e-02, 2.280e-01, -3.924e-01, 1.057e-01, 6.662e-03, -2.799e-01, 9.640e-02, -8.985e-02, 1.093e-02, -1.567e-01, 8.349e-02, -1.169e-01), r);\n\tr = MulAdd(s0_3, M4(9.578e-02, -9.551e-02, 4.883e-02, 1.361e-01, -2.646e-01, 9.763e-02, -2.427e-01, 4.072e-01, -3.877e-01, 1.953e-01, 1.251e-01, 4.511e-02, 6.040e-02, 1.248e-02, -2.899e-02, 2.293e-01), r);\n\tr = MulAdd(s0_4, M4(1.141e-01, -3.109e-01, -2.500e-01, -2.775e-01, -8.209e-02, 7.398e-02, 2.509e-01, 4.549e-02, 7.525e-02, 4.394e-01, 3.993e-01, 1.754e-01, 1.776e-01, 2.971e-01, -3.441e-01, -5.120e-01), r);\n\tr = MulAdd(s0_5, M4(-6.703e-03, 5.090e-01, -1.500e-01, 2.635e-01, 1.989e-01, -6.816e-01, 4.591e-01, -3.330e-01, 4.645e-03, -1.490e-01, -1.983e-01, -1.401e-01, 1.173e-01, -1.492e-02, 3.411e-01, -3.166e-02), r);\n\tr = MulAdd(s0_6, M4(-3.800e-02, -1.477e-01, 5.108e-02, 2.905e-01, -7.616e-03, -1.992e-01, -1.272e-01, 1.880e-01, -3.035e-02, 2.286e-01, 8.193e-02, 2.364e-01, -4.650e-02, 6.422e-03, 2.178e-01, -3.440e-01), r);\n\tr = MulAdd(s0_7, M4(1.507e-02, -1.787e-01, 2.303e-01, -8.268e-02, -8.501e-02, -6.999e-02, -2.088e-01, 1.476e-01, 1.189e-01, 1.203e-01, -2.417e-01, -2.783e-01, 5.869e-02, 2.074e-01, -1.446e-01, 1.392e-01), r);\n\tr = MulAdd(s0_8, M4(9.754e-02, 1.925e-01, -3.828e-03, -2.816e-01, -1.213e-01, -2.292e-02, 2.923e-01, -2.626e-01, -1.298e-01, -9.575e-02, 2.873e-02, -9.571e-02, 9.200e-02, -1.673e-01, -1.188e-01, 8.730e-02), r);\n\tr = MulAdd(s1_0, M4(-2.350e-01, 1.587e-01, 3.174e-01, 1.542e-01, 1.652e-01, -9.002e-02, -4.229e-01, 9.736e-02, 5.939e-02, 3.149e-01, -1.059e-01, 1.857e-01, -3.531e-01, 2.776e-01, -2.455e-01, 4.585e-01), r);\n\tr = MulAdd(s1_1, M4(-3.605e-01, -1.254e-01, -4.447e-01, -4.215e-01, 2.543e-01, -1.086e-02, 3.330e-01, 1.645e-01, 4.044e-02, -1.669e-01, 1.289e-01, -2.380e-02, -3.433e-01, -3.620e-01, 1.712e-01, 1.668e-01), r);\n\tr = MulAdd(s1_2, M4(1.756e-02, -2.704e-03, -3.697e-01, 3.403e-01, -3.247e-02, -2.006e-01, -3.319e-02, -2.798e-01, -1.027e-01, -1.990e-01, -4.246e-01, 7.520e-02, 1.787e-01, -3.869e-01, 7.570e-02, -3.073e-01), r);\n\tr = MulAdd(s1_3, M4(-8.614e-02, 6.455e-02, -1.730e-01, 5.939e-02, -1.393e-02, -2.230e-02, 1.723e-01, 4.100e-01, 1.529e-02, -1.270e-01, -1.502e-01, 3.934e-01, -3.637e-01, -6.028e-02, 1.548e-01, 3.118e-01), r);\n\tr = MulAdd(s1_4, M4(-1.500e-01, -1.187e-01, 4.891e-01, 1.696e-01, 1.480e-01, 2.560e-01, -2.057e-01, -4.255e-01, 1.289e-01, -1.118e-02, -1.087e-02, -1.905e-01, 1.239e-01, 2.520e-02, -1.996e-02, -3.386e-01), r);\n\tr = MulAdd(s1_5, M4(1.052e-01, -2.239e-02, 3.975e-01, -1.405e-01, -1.267e-02, 4.224e-01, -2.635e-01, 9.741e-02, 1.863e-02, -2.286e-01, 3.328e-01, -2.667e-01, -6.544e-02, -3.208e-01, -2.388e-01, 4.362e-02), r);\n\tr = MulAdd(s1_6, M4(-5.319e-03, -1.865e-01, -4.191e-02, 2.387e-01, -2.874e-02, -1.661e-01, 1.281e-01, 2.304e-01, -2.066e-01, -1.021e-01, -1.088e-01, 2.609e-01, -1.502e-01, -1.255e-01, 1.263e-01, -4.176e-01), r);\n\tr = MulAdd(s1_7, M4(-6.257e-02, -1.212e-01, -2.666e-01, 5.840e-03, 1.525e-01, 2.046e-01, 2.017e-01, 4.602e-02, 3.198e-02, 9.142e-02, 6.658e-02, -1.799e-01, 5.912e-02, 2.451e-01, 4.026e-01, 2.306e-02), r);\n\tr = MulAdd(s1_8, M4(-3.453e-02, 1.717e-01, 1.058e-01, -2.543e-01, -8.375e-03, 1.824e-03, -1.615e-01, -2.510e-01, 4.237e-02, -7.161e-02, 1.259e-01, -9.696e-02, 3.739e-02, 2.963e-02, -3.003e-01, 5.154e-02), r);\n\tr = MulAdd(s2_0, M4(-3.399e-02, 4.481e-02, -1.857e-01, 2.356e-01, -3.322e-02, -5.841e-02, 6.648e-02, -1.404e-01, -1.145e-02, -6.816e-02, -1.611e-02, 5.459e-02, -5.165e-03, 2.280e-01, -7.486e-02, -1.055e-01), r);\n\tr = MulAdd(s2_1, M4(5.683e-02, -1.365e-01, -7.714e-03, 2.856e-02, 5.374e-02, -1.428e-01, 1.258e-01, -7.951e-02, 9.614e-02, -2.378e-01, 2.039e-01, -1.078e-01, -5.929e-02, 5.041e-02, -1.935e-01, -1.077e-01), r);\n\tr = MulAdd(s2_2, M4(-7.949e-02, 3.859e-02, 1.619e-01, -1.051e-01, 8.312e-02, 2.784e-02, -1.049e-01, 9.604e-02, -9.492e-02, 1.578e-01, -4.464e-02, 1.584e-03, -2.066e-03, 5.707e-02, -2.157e-02, 8.817e-02), r);\n\tr = MulAdd(s2_3, M4(1.038e-01, 8.953e-02, 5.480e-02, 2.716e-01, -7.691e-02, -3.918e-02, -9.394e-02, 9.078e-02, -1.943e-01, -7.785e-02, -2.547e-01, 8.458e-01, -1.954e-02, 1.182e-01, -1.381e-01, -3.832e-01), r);\n\tr = MulAdd(s2_4, M4(-2.084e-01, 3.375e-02, -1.733e-01, -7.274e-02, -9.431e-02, 1.635e-01, -1.894e-01, -3.871e-02, 4.172e-02, 2.193e-01, -3.097e-01, -4.415e-01, -1.866e-01, -3.925e-01, 2.134e-01, 6.298e-01), r);\n\tr = MulAdd(s2_5, M4(1.212e-01, -5.359e-02, -2.222e-02, -2.707e-01, -9.405e-02, 6.387e-02, 8.948e-03, 1.820e-01, -8.107e-02, 1.164e-01, -2.881e-01, -8.921e-02, -1.152e-01, 5.029e-01, -5.062e-01, 7.837e-02), r);\n\tr = MulAdd(s2_6, M4(-5.824e-02, 9.913e-02, 9.971e-02, 1.557e-01, 7.915e-02, -8.769e-02, 7.980e-02, -3.432e-02, -1.692e-01, -9.786e-02, 1.282e-01, 1.709e-01, -1.265e-01, -6.808e-02, 7.225e-02, 1.675e-01), r);\n\tr = MulAdd(s2_7, M4(-4.990e-02, -6.602e-03, -1.068e-01, -1.430e-02, 8.055e-02, -2.758e-02, -6.937e-02, -4.834e-02, -1.227e-02, 8.519e-02, 7.793e-01, -1.867e-01, -3.421e-01, -7.152e-02, -1.059e-01, 1.740e-01), r);\n\tr = MulAdd(s2_8, M4(8.256e-02, -7.590e-03, 6.570e-02, -1.256e-01, -8.610e-02, 2.026e-01, -3.546e-02, 1.104e-01, 1.248e-01, -1.588e-01, 5.464e-01, -6.521e-02, 1.475e-01, -1.531e-01, 3.597e-01, -1.642e-01), r);\n\tr = MulAdd(s3_0, M4(6.340e-01, 3.940e-01, 1.113e+00, 1.007e+00, -1.212e+00, 2.533e-01, -1.397e+00, 6.065e-01, -7.533e-02, -2.773e-02, -1.402e-02, 4.141e-02, 8.358e-02, 7.306e-02, 7.087e-03, -1.155e-01), r);\n\tr = MulAdd(s3_1, M4(1.419e+00, 4.487e-01, -7.031e-01, -8.197e-01, 2.210e-01, -1.184e+00, 8.590e-01, -4.940e-01, 1.331e-01, -3.564e-01, 2.108e-01, -8.584e-02, -2.572e-01, -1.731e-02, 2.636e-01, -1.133e-01), r);\n\tr = MulAdd(s3_2, M4(9.915e-01, -7.961e-01, 5.330e-01, -4.510e-01, -5.253e-01, 1.903e-01, -4.662e-01, 3.206e-01, 2.827e-02, 2.187e-02, -3.303e-02, 1.886e-02, -1.535e-02, -1.334e-02, 6.018e-03, 1.582e-01), r);\n\tr = MulAdd(s3_3, M4(4.868e-02, 5.590e-01, 5.528e-02, 4.772e-01, 2.589e-01, -4.851e-01, 9.148e-01, 7.832e-01, -3.434e-01, -5.368e-02, -1.723e-01, 1.019e+00, 2.202e-01, 1.859e-01, 5.046e-03, -7.167e-01), r);\n\tr = MulAdd(s3_4, M4(2.415e+00, 1.390e+00, 6.607e-01, -2.473e-01, 2.204e-01, -1.690e-01, -6.748e-01, -6.208e-01, 5.492e-02, 1.191e-01, -3.462e-01, -4.150e-01, 2.729e-01, -2.437e-01, 1.929e-01, 1.347e-01), r);\n\tr = MulAdd(s3_5, M4(9.691e-01, -8.869e-01, 3.704e-01, -5.191e-02, -1.921e-02, 1.358e+00, -4.369e-01, 4.558e-01, -5.294e-02, 3.324e-02, -1.043e-01, -1.216e-01, 1.593e-01, 5.623e-01, -4.612e-01, -1.042e-01), r);\n\tr = MulAdd(s3_6, M4(-1.293e-01, 4.959e-01, 1.363e-01, 5.027e-02, -5.043e-01, -4.472e-01, -6.873e-02, -6.303e-02, -2.425e-01, 1.265e-01, -1.273e-01, 2.420e-01, 6.472e-03, 5.157e-02, 1.899e-01, 6.324e-02), r);\n\tr = MulAdd(s3_7, M4(-2.009e-01, 5.446e-01, -2.478e-01, -9.895e-03, 6.806e-02, -3.905e-01, -3.134e-01, -4.657e-01, -9.783e-02, -1.021e-01, 3.844e-01, -1.041e-01, -4.335e-03, 3.746e-01, -1.352e-01, 5.207e-02), r);\n\tr = MulAdd(s3_8, M4(3.874e-01, 2.981e-02, 2.205e-01, -1.412e-01, 3.674e-01, 8.717e-01, -6.576e-01, 4.285e-01, -4.677e-02, 1.490e-02, 1.870e-01, -1.712e-02, 1.799e-01, 2.057e-01, -9.212e-02, -6.896e-02), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 3.966e-02, 2.168e-04, 3.712e-03, 7.866e-03 };\n\tr = MulAdd(s0_0, M4(-1.867e-01, -2.287e-03, -1.191e-01, -1.249e-02, -8.376e-02, 2.333e-01, 3.011e-02, 8.727e-02, -1.528e-01, 4.522e-02, -1.092e-01, 1.235e-01, 1.179e-01, 1.085e-01, 2.075e-01, -4.524e-02), r);\n\tr = MulAdd(s0_1, M4(-6.251e-02, 9.622e-02, -1.299e-01, -8.819e-02, 8.242e-02, -4.033e-01, -1.512e-01, -8.449e-02, -2.673e-01, 3.868e-01, 2.615e-02, 1.069e-01, 2.055e-01, -1.800e-01, 7.375e-03, 8.391e-03), r);\n\tr = MulAdd(s0_2, M4(1.410e-01, -8.185e-02, 2.465e-02, 3.546e-02, -7.339e-02, -4.492e-02, -6.633e-02, -1.005e-02, 5.993e-02, 5.536e-02, -6.278e-03, -8.258e-02, -1.498e-01, 5.872e-02, 1.560e-01, -7.461e-02), r);\n\tr = MulAdd(s0_3, M4(-2.116e-01, 2.332e-01, 2.930e-01, -1.691e-01, -9.505e-02, -8.336e-02, 1.302e-01, -8.985e-03, 1.795e-01, 4.858e-01, -5.144e-02, 1.663e-01, 2.647e-01, -3.083e-01, -1.612e-01, 9.123e-02), r);\n\tr = MulAdd(s0_4, M4(2.233e-01, 3.415e-01, 2.541e-01, 1.521e-01, 2.939e-01, 5.545e-02, 2.474e-01, -1.522e-01, 1.945e-01, 1.302e-01, 6.035e-02, 1.204e-01, -5.938e-02, -1.101e-01, -9.751e-02, -2.144e-01), r);\n\tr = MulAdd(s0_5, M4(-1.567e-01, 7.505e-02, 7.642e-02, -1.079e-01, 3.845e-02, -9.225e-02, 1.250e-02, -9.117e-02, 3.753e-01, -1.417e-01, -7.198e-02, 3.818e-01, -5.320e-02, -2.646e-01, 2.586e-03, 1.312e-01), r);\n\tr = MulAdd(s0_6, M4(-9.201e-02, 1.449e-01, 2.745e-01, -2.933e-02, 8.872e-02, -7.589e-02, 1.074e-01, -1.002e-01, -8.457e-03, -3.762e-01, 5.415e-02, 1.822e-01, 2.688e-01, -2.326e-01, -5.302e-01, -6.336e-02), r);\n\tr = MulAdd(s0_7, M4(1.119e-01, -1.561e-02, -6.547e-03, -9.972e-02, -1.073e-01, 9.063e-02, 3.843e-02, 6.815e-02, 3.779e-01, -1.196e-01, -1.353e-01, -2.813e-02, 1.060e-01, 2.387e-01, 1.267e-02, 1.083e-01), r);\n\tr = MulAdd(s0_8, M4(-9.346e-02, 1.792e-02, -1.428e-01, 3.228e-02, -1.043e-01, -1.120e-01, -3.488e-03, -4.356e-02, -2.876e-01, -7.053e-02, -4.502e-02, -5.783e-02, -2.254e-01, 5.783e-02, 3.232e-01, 7.605e-04), r);\n\tr = MulAdd(s1_0, M4(9.940e-02, 9.588e-03, -3.584e-01, 1.252e-01, -1.917e-01, 1.258e-01, 2.297e-01, 1.390e-01, 4.639e-02, -1.121e-01, -1.118e-01, -4.381e-02, -1.695e-01, 1.821e-01, 2.465e-01, -9.049e-02), r);\n\tr = MulAdd(s1_1, M4(5.143e-02, 1.069e-02, -8.068e-02, -8.982e-02, -2.494e-02, -7.513e-02, 1.598e-02, 3.467e-02, -1.174e-01, 2.261e-01, -8.818e-02, -1.923e-02, -3.776e-02, -3.819e-01, -8.594e-02, 4.435e-03), r);\n\tr = MulAdd(s1_2, M4(-3.623e-02, -5.439e-02, -9.351e-03, 1.235e-01, -9.703e-03, -1.335e-01, 1.036e-01, 2.097e-02, 1.458e-02, 3.203e-02, 1.967e-01, -1.818e-02, -9.724e-02, -7.890e-02, 3.670e-02, -4.865e-02), r);\n\tr = MulAdd(s1_3, M4(-2.127e-01, -2.056e-02, 3.076e-01, 5.685e-02, 9.937e-02, -2.134e-01, 3.166e-02, -4.301e-02, 6.663e-02, -5.974e-02, 8.903e-02, 3.410e-02, 4.111e-02, 1.169e-01, 4.898e-02, 5.654e-02), r);\n\tr = MulAdd(s1_4, M4(1.874e-01, 1.435e-01, -4.010e-01, 6.335e-05, 3.853e-01, -4.015e-01, -4.051e-01, -2.454e-01, -2.675e-02, 2.236e-01, 2.143e-01, -4.164e-02, -2.142e-01, -1.742e-01, 4.441e-01, -2.792e-01), r);\n\tr = MulAdd(s1_5, M4(-1.686e-01, -3.803e-02, 1.583e-01, 9.059e-02, -1.233e-01, 7.512e-02, 1.737e-01, 6.937e-02, 1.250e-01, -9.459e-02, -2.433e-01, 2.107e-01, 8.135e-02, -1.054e-01, -1.870e-01, -1.011e-01), r);\n\tr = MulAdd(s1_6, M4(1.078e-01, -1.143e-01, 2.303e-01, 1.447e-01, -6.396e-02, -1.863e-01, -1.454e-01, -1.476e-01, 2.346e-02, -1.712e-02, 3.948e-02, -2.445e-02, -7.822e-02, 5.100e-01, 1.676e-01, 5.526e-02), r);\n\tr = MulAdd(s1_7, M4(2.939e-01, -3.193e-01, 1.130e-01, 1.019e-01, -2.836e-01, -3.252e-01, -1.221e-01, -1.886e-01, -1.541e-02, -3.348e-02, -1.192e-01, 5.553e-02, 2.747e-01, 3.810e-01, -1.083e-01, 8.926e-02), r);\n\tr = MulAdd(s1_8, M4(-1.914e-01, -1.810e-01, 3.616e-01, 1.443e-01, -2.356e-01, 1.987e-02, 2.206e-01, -7.203e-03, -4.873e-02, 1.449e-02, 2.429e-03, 4.135e-03, 1.601e-01, 1.436e-02, -2.503e-01, -1.747e-01), r);\n\tr = MulAdd(s2_0, M4(5.158e-02, -5.768e-01, 1.059e-01, 6.356e-02, 5.453e-02, 1.182e-01, 1.025e-01, -4.581e-03, -4.476e-02, -7.326e-02, 3.128e-02, -1.658e-02, 7.979e-02, -1.015e-01, -7.756e-03, 5.261e-02), r);\n\tr = MulAdd(s2_1, M4(-9.209e-02, 5.020e-04, 1.687e-01, 2.337e-01, 5.893e-02, -1.190e-02, 2.134e-01, 2.056e-01, -8.468e-02, 1.393e-01, 2.666e-01, 8.482e-02, 9.005e-03, 1.830e-01, 1.487e-01, 1.541e-01), r);\n\tr = MulAdd(s2_2, M4(-1.577e-02, 1.800e-01, -4.463e-02, 1.857e-01, -2.505e-02, -4.244e-02, 3.534e-02, 1.091e-02, 3.562e-02, -1.613e-02, 7.525e-02, -6.411e-02, -1.120e-01, 2.570e-01, 1.793e-01, 3.232e-01), r);\n\tr = MulAdd(s2_3, M4(1.081e-01, -3.272e-01, 9.989e-02, -1.714e-01, 1.272e-02, -8.817e-02, -6.541e-01, 9.601e-03, 5.846e-03, -1.214e-01, 4.286e-02, -1.424e-04, 2.707e-02, -1.255e-01, -1.766e-01, 7.553e-02), r);\n\tr = MulAdd(s2_4, M4(1.707e-01, 2.406e-02, 7.128e-01, 3.512e-01, 4.649e-01, -2.976e-02, -2.139e-01, -1.608e-01, 1.348e-01, -1.933e-01, -1.625e-01, -1.502e-01, 3.457e-02, -2.310e-01, -1.418e-01, -1.607e-01), r);\n\tr = MulAdd(s2_5, M4(2.141e-01, -3.424e-01, -2.787e-01, 1.588e-01, -8.585e-03, 1.987e-01, 8.631e-02, -2.482e-02, -1.159e-01, 3.130e-02, 6.300e-02, -1.646e-01, 2.076e-01, 3.123e-01, 7.450e-02, 8.300e-01), r);\n\tr = MulAdd(s2_6, M4(-1.156e-01, 5.885e-01, 2.790e-01, 1.944e-01, -2.609e-02, 1.192e-01, 1.064e-01, 2.452e-01, 6.769e-02, 7.500e-02, 1.444e-01, 1.657e-02, 1.032e-04, 6.885e-02, -3.119e-01, 1.838e-02), r);\n\tr = MulAdd(s2_7, M4(2.686e-01, -3.624e-01, -3.820e-01, -1.910e-02, 2.541e-01, -3.535e-02, 3.461e-02, 6.867e-02, 1.792e-01, -4.944e-02, 9.518e-02, -9.353e-02, 1.577e-01, -2.950e-01, -5.366e-01, -9.244e-02), r);\n\tr = MulAdd(s2_8, M4(-5.502e-02, -3.642e-02, 2.950e-01, 1.710e-02, 1.386e-03, -4.643e-03, -5.468e-02, 1.526e-01, -3.839e-02, 2.502e-02, 6.890e-02, -5.190e-02, -3.046e-01, -8.298e-02, -2.710e-01, -4.361e-02), r);\n\tr = MulAdd(s3_0, M4(3.470e-02, -1.794e-01, 4.939e-03, 5.871e-02, -3.644e-02, 2.163e-01, 1.659e-01, 1.729e-02, -7.065e-02, -4.364e-02, -1.401e-01, -6.392e-02, 2.933e-02, -2.708e-01, -6.419e-02, 2.552e-02), r);\n\tr = MulAdd(s3_1, M4(2.013e-01, 1.346e-01, 1.245e-01, 2.012e-01, 1.159e-01, 2.536e-02, 3.348e-01, 2.151e-01, -1.428e-01, 3.330e-02, 5.570e-02, 1.265e-01, -1.421e-01, -2.205e-01, -2.407e-02, -1.310e-02), r);\n\tr = MulAdd(s3_2, M4(1.897e-01, 1.382e-01, 8.547e-02, 1.685e-02, 3.906e-02, -1.645e-02, 8.177e-02, -1.090e-01, 2.720e-02, -1.483e-01, -1.471e-01, -3.796e-02, -9.755e-02, 2.098e-01, -1.363e-01, 8.741e-04), r);\n\tr = MulAdd(s3_3, M4(-8.746e-02, -2.411e-01, -5.564e-01, 1.288e-01, -1.560e-03, -1.454e-01, -3.086e-01, -1.364e-01, -6.448e-02, 2.139e-02, -6.920e-02, 1.125e-01, 2.256e-02, -1.337e-01, 2.318e-01, -9.337e-02), r);\n\tr = MulAdd(s3_4, M4(1.330e-01, 7.059e-02, 2.570e-01, -3.958e-02, 2.678e-01, -1.782e-01, -4.249e-01, -7.859e-02, -7.410e-03, 4.629e-02, 1.869e-01, 6.028e-02, -2.636e-01, -8.746e-01, 4.294e-01, -7.591e-01), r);\n\tr = MulAdd(s3_5, M4(6.538e-02, 3.535e-01, 3.381e-01, 1.665e-01, -1.464e-01, -4.395e-02, 6.332e-02, 6.707e-02, 4.085e-02, 3.123e-02, -8.943e-02, -1.124e-01, 7.129e-01, -2.572e-01, -3.428e-02, -3.166e-01), r);\n\tr = MulAdd(s3_6, M4(3.447e-02, 1.964e-02, -1.246e-02, -4.894e-02, -3.053e-02, 6.215e-02, 1.432e-01, 4.347e-02, 9.639e-02, 2.140e-01, 1.791e-01, 1.898e-01, -5.042e-02, 2.674e-01, 1.714e-01, 8.155e-02), r);\n\tr = MulAdd(s3_7, M4(3.324e-02, -2.281e-01, 8.075e-02, 8.469e-02, 7.409e-02, 4.094e-02, 1.500e-01, 7.922e-02, 1.632e-01, 3.876e-02, -1.316e-01, 1.200e-01, 3.408e-01, 1.752e-01, -1.315e-01, 1.251e-01), r);\n\tr = MulAdd(s3_8, M4(-1.043e-01, -2.295e-01, -2.968e-01, -7.326e-02, 9.514e-02, 1.595e-02, -2.148e-02, -7.380e-02, -3.873e-02, 5.639e-02, 5.948e-02, 6.939e-02, 4.680e-01, 2.191e-01, -1.091e-01, -4.211e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 2.464e-02, -1.503e-02, -3.365e-02, 7.710e-03 };\n\tr = MulAdd(s0_0, M4(1.510e-01, 1.269e-02, -1.267e-01, 1.446e-01, 3.963e-02, 3.673e-02, -3.129e-02, 2.499e-02, 1.567e-02, 1.863e-01, -4.694e-03, -1.522e-01, -1.215e-01, 1.422e-01, 1.161e-01, -1.114e-01), r);\n\tr = MulAdd(s0_1, M4(-2.120e-02, 1.988e-01, 1.436e-01, -1.165e-01, 1.754e-01, 6.868e-02, -1.784e-01, 1.453e-02, 1.257e-02, -3.559e-01, 6.345e-02, 7.528e-02, -1.168e-01, -3.730e-01, -1.436e-02, 2.597e-02), r);\n\tr = MulAdd(s0_2, M4(-1.577e-01, 4.407e-03, -3.120e-02, -3.013e-03, -1.327e-01, -1.630e-01, -8.175e-02, -1.577e-02, -2.674e-01, -5.831e-02, 1.139e-01, -9.667e-02, 1.499e-01, -3.017e-02, -7.416e-02, 8.048e-02), r);\n\tr = MulAdd(s0_3, M4(-3.099e-01, 1.730e-01, 4.941e-02, 3.643e-01, 5.996e-03, -1.379e-01, 3.862e-01, 1.959e-01, 3.855e-01, 2.959e-01, -1.075e-01, -3.195e-01, 5.520e-02, -2.633e-02, 6.609e-01, -2.863e-01), r);\n\tr = MulAdd(s0_4, M4(-1.581e-01, 5.127e-01, 5.755e-01, -1.758e-02, 2.351e-02, -1.945e-01, -3.701e-01, -2.035e-01, 1.510e+00, -6.021e-01, 2.540e-01, 1.989e-03, -2.473e-01, 6.479e-01, -1.236e-01, -2.509e-02), r);\n\tr = MulAdd(s0_5, M4(6.567e-02, 4.649e-02, 1.349e-01, 4.919e-02, 4.185e-02, -1.002e-02, 9.981e-02, -2.859e-02, -2.278e-01, 4.727e-01, 1.868e-01, -2.588e-01, 8.428e-02, 7.575e-03, -3.525e-01, 3.996e-03), r);\n\tr = MulAdd(s0_6, M4(-1.744e-01, -9.151e-02, 1.860e-01, 2.731e-01, -6.986e-02, -3.020e-02, -1.869e-01, -1.327e-02, -1.042e-01, -2.540e-02, -2.241e-01, 3.422e-01, -1.022e-01, 1.238e-01, 2.314e-01, -3.349e-01), r);\n\tr = MulAdd(s0_7, M4(-2.791e-02, 1.601e-01, 2.001e-01, -7.415e-02, 1.847e-01, -9.655e-02, -3.229e-02, 2.887e-02, -9.137e-02, -3.329e-02, 2.700e-01, 9.334e-02, 9.282e-02, -6.146e-02, 1.428e-01, 1.684e-01), r);\n\tr = MulAdd(s0_8, M4(1.795e-01, -2.872e-02, 3.678e-02, 6.662e-02, -1.044e-01, -3.932e-02, 2.314e-02, -7.340e-02, 9.445e-02, 1.306e-01, -2.439e-01, 9.100e-02, 3.984e-02, -9.294e-02, -6.069e-02, -2.545e-02), r);\n\tr = MulAdd(s1_0, M4(4.324e-01, 2.259e-01, -4.051e-02, 4.797e-03, -1.294e-01, 2.765e-02, 1.875e-01, 5.255e-02, -1.390e-02, 2.073e-01, 6.489e-02, -1.416e-01, -2.698e-01, 2.849e-02, 1.129e-01, 6.424e-02), r);\n\tr = MulAdd(s1_1, M4(-1.527e-01, -3.081e-01, -2.367e-01, -1.744e-01, -1.040e-02, -1.817e-01, 1.216e-01, -5.997e-03, -1.056e-01, 1.047e-02, -9.173e-02, 6.123e-02, 1.587e-01, 3.438e-01, 8.663e-02, 1.487e-01), r);\n\tr = MulAdd(s1_2, M4(-1.173e-01, -1.156e-01, -4.805e-02, 5.150e-02, -8.245e-02, 7.996e-02, -1.812e-01, 1.072e-01, -4.140e-02, -1.859e-01, 9.617e-03, 9.194e-02, 9.678e-03, 4.886e-02, -7.522e-02, 1.882e-02), r);\n\tr = MulAdd(s1_3, M4(4.124e-02, -1.781e-01, -8.895e-01, 1.978e-02, -1.229e-01, -1.255e-01, 1.666e-01, 3.719e-01, -1.012e-01, -4.286e-02, 8.884e-02, -1.577e-01, -1.258e-01, 1.669e-01, 4.306e-01, 2.863e-01), r);\n\tr = MulAdd(s1_4, M4(-3.640e-01, 7.624e-02, -5.308e-01, -3.999e-02, 6.426e-02, -2.244e-01, -2.932e-01, -2.347e-01, 3.475e-01, -1.236e-01, 1.469e-01, 8.772e-02, 9.278e-02, 5.106e-01, -7.446e-02, -5.061e-02), r);\n\tr = MulAdd(s1_5, M4(2.733e-01, 2.298e-01, -4.516e-02, 1.068e-01, -6.146e-02, 1.248e-01, 1.512e-01, -1.409e-01, -2.574e-02, 1.303e-01, -6.689e-02, -1.138e-01, 3.539e-02, 3.450e-03, -3.933e-02, -2.456e-02), r);\n\tr = MulAdd(s1_6, M4(-1.740e-01, 1.962e-01, -2.318e-01, 4.245e-02, 1.837e-01, 1.318e-02, 6.216e-02, -8.214e-02, 3.329e-02, 4.938e-02, -1.139e-01, 2.849e-02, 7.127e-02, -1.978e-01, -6.718e-02, 3.379e-01), r);\n\tr = MulAdd(s1_7, M4(1.036e-01, -1.074e-01, 1.211e-01, -1.502e-01, 3.505e-01, 2.469e-02, 3.160e-02, 1.840e-01, -5.042e-02, 1.114e-02, 1.469e-02, -2.675e-02, -6.888e-02, -1.076e-01, -1.764e-01, -1.250e-03), r);\n\tr = MulAdd(s1_8, M4(-1.227e-01, 3.169e-02, -1.346e-01, 2.663e-02, -3.523e-01, -4.952e-02, 2.526e-02, -3.065e-01, 1.105e-01, -1.705e-02, -2.442e-02, 4.761e-02, 2.978e-01, -1.184e-01, -2.559e-02, -1.439e-01), r);\n\tr = MulAdd(s2_0, M4(-6.434e-02, -1.450e-01, 6.691e-02, -1.498e-02, -2.586e-01, -1.415e-01, 2.408e-02, 1.405e-02, -9.741e-02, -2.278e-02, -7.323e-03, 1.029e-01, 1.971e-01, -7.889e-02, 1.621e-01, -1.481e-01), r);\n\tr = MulAdd(s2_1, M4(7.306e-02, 8.261e-03, -1.106e-01, -6.119e-02, 9.048e-02, 3.668e-01, -4.932e-02, 1.419e-01, -1.065e-01, 1.921e-01, -6.933e-03, 1.397e-01, 1.131e-01, -2.959e-01, 2.377e-01, -8.244e-02), r);\n\tr = MulAdd(s2_2, M4(-6.484e-02, -8.438e-02, -8.452e-02, 7.652e-02, 1.060e-01, 2.751e-01, -4.448e-02, 6.228e-02, 2.452e-02, 1.715e-01, -2.210e-01, 1.880e-01, -1.089e-01, -4.575e-01, 1.402e-01, 2.589e-02), r);\n\tr = MulAdd(s2_3, M4(5.019e-02, 1.179e-01, -3.322e-01, -1.521e-01, 1.682e-01, 5.881e-02, -4.209e-01, -8.599e-02, 1.338e-02, 1.764e-02, -1.383e-01, 7.389e-02, 3.577e-02, 7.338e-02, -2.762e-01, -9.510e-02), r);\n\tr = MulAdd(s2_4, M4(-1.853e-01, -4.620e-01, -1.324e-01, -2.907e-01, 4.004e-01, 6.572e-02, -3.924e-01, 3.585e-02, 1.534e-02, 2.261e-01, -1.448e-01, 7.334e-02, -4.871e-01, 2.474e-01, 6.138e-01, 1.618e-01), r);\n\tr = MulAdd(s2_5, M4(-3.986e-02, -5.998e-02, -1.165e-01, 2.199e-01, 1.416e-01, -2.026e-01, -1.034e-01, -8.049e-03, 2.830e-01, 1.312e-03, -1.952e-01, 1.926e-01, 1.404e-01, -1.712e-01, 2.704e-01, 5.702e-02), r);\n\tr = MulAdd(s2_6, M4(1.954e-01, 1.098e-01, -4.060e-01, 6.263e-01, 9.565e-02, 3.321e-02, -9.177e-02, 1.727e-01, -3.629e-02, -3.498e-02, -1.498e-01, -1.020e-02, 7.289e-02, -1.008e-01, -6.138e-02, -7.229e-02), r);\n\tr = MulAdd(s2_7, M4(4.694e-01, 4.689e-02, -2.026e-02, -1.420e-01, -1.815e-01, 1.337e-01, -3.029e-03, 8.901e-03, -7.604e-02, 6.520e-03, -9.244e-02, 1.180e-01, 1.924e-01, 4.576e-03, 9.215e-02, 1.393e-01), r);\n\tr = MulAdd(s2_8, M4(-2.694e-01, -7.673e-02, -3.907e-02, 2.054e-01, -7.508e-02, 4.244e-02, 8.589e-03, -2.004e-02, 1.029e-01, -2.785e-04, -1.329e-01, 1.480e-01, 1.240e-01, 1.682e-01, 4.375e-02, 5.794e-02), r);\n\tr = MulAdd(s3_0, M4(1.908e-01, -9.550e-02, -6.231e-02, -8.961e-02, -2.150e-01, -5.266e-02, -5.877e-02, 6.574e-02, 1.206e-01, -5.647e-02, 1.819e-01, 9.125e-03, -1.411e-02, -7.630e-02, 1.694e-01, -6.670e-02), r);\n\tr = MulAdd(s3_1, M4(-7.247e-02, -1.664e-02, 3.111e-02, -8.914e-02, 1.373e-02, -7.042e-03, 2.124e-01, 8.056e-03, 1.248e-01, 1.013e-01, 1.053e-01, 8.886e-02, -3.534e-01, -5.092e-02, -8.903e-02, 1.120e-01), r);\n\tr = MulAdd(s3_2, M4(-1.274e-01, 1.296e-01, 6.739e-02, -1.061e-01, 1.488e-02, 1.174e-01, -2.220e-02, 3.190e-02, -8.067e-03, 6.182e-03, 3.938e-02, -1.144e-02, 1.720e-02, 2.232e-02, -1.033e-01, 1.938e-01), r);\n\tr = MulAdd(s3_3, M4(2.119e-01, -7.107e-03, -1.771e-01, 3.717e-03, -9.809e-02, -2.060e-01, -1.242e-01, 1.331e-01, 1.656e-01, -4.429e-02, 3.430e-01, -1.180e-01, -8.243e-02, 2.318e-01, -3.745e-01, 2.954e-02), r);\n\tr = MulAdd(s3_4, M4(5.462e-02, 2.234e-01, 5.211e-02, 4.298e-02, 2.002e-01, -6.029e-02, 8.922e-02, -1.422e-01, 4.850e-03, 2.692e-02, 1.883e-03, -5.867e-02, -1.761e-01, -2.994e-01, -1.180e-01, 5.357e-01), r);\n\tr = MulAdd(s3_5, M4(-1.020e-01, -9.731e-03, 4.965e-02, 1.040e-01, 3.933e-02, -7.445e-02, -8.691e-02, 2.101e-02, 1.135e-01, -4.423e-02, 7.911e-02, -7.177e-04, 7.153e-03, -2.231e-01, -2.036e-01, 2.961e-01), r);\n\tr = MulAdd(s3_6, M4(-8.583e-02, -1.500e-01, -4.673e-02, -1.242e-01, 5.128e-02, 1.491e-03, 2.211e-01, 4.382e-03, -1.899e-01, -1.419e-02, 1.903e-01, -1.301e-01, 6.635e-02, -2.247e-02, -5.734e-02, 3.099e-01), r);\n\tr = MulAdd(s3_7, M4(1.511e-01, -1.528e-01, 1.166e-01, 1.147e-01, -3.419e-01, 3.498e-02, 1.819e-02, -1.488e-01, -1.092e-01, -4.590e-02, 2.240e-01, -2.029e-01, 3.950e-02, 2.020e-02, 1.403e-02, 4.349e-01), r);\n\tr = MulAdd(s3_8, M4(4.921e-02, 8.799e-02, -6.688e-03, 9.084e-02, 3.443e-02, 3.622e-02, 8.327e-02, -2.267e-02, -1.895e-02, -2.932e-02, 8.468e-02, -4.335e-02, -5.082e-02, 8.529e-02, 7.031e-02, 2.080e-01), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 1.554e-02, -1.502e-02, 3.403e-02, -3.054e-03 };\n\tr = MulAdd(s0_0, M4(-1.303e-01, -2.502e-01, 6.500e-03, 2.601e-01, -3.627e-02, 1.172e-02, -2.737e-02, 1.167e-02, -1.626e-01, -3.004e-02, 2.364e-02, -2.347e-02, -4.186e-02, 1.951e-01, 2.632e-02, 1.146e-01), r);\n\tr = MulAdd(s0_1, M4(-1.030e-01, -1.744e-01, -7.392e-03, 1.713e-02, 7.134e-02, -2.497e-04, -1.421e-01, 1.345e-01, -1.077e-01, -2.417e-01, 7.019e-02, -3.896e-01, -7.303e-02, -4.439e-03, -4.887e-02, 9.957e-02), r);\n\tr = MulAdd(s0_2, M4(-3.608e-02, 1.177e-02, 1.276e-01, -1.034e-01, 3.357e-02, 1.218e-01, -6.970e-02, 2.349e-02, -8.838e-03, -1.774e-01, -1.413e-01, -9.342e-02, -4.418e-02, -7.144e-02, 4.315e-02, 6.959e-02), r);\n\tr = MulAdd(s0_3, M4(-2.867e-01, -2.233e-01, 4.131e-01, 6.114e-01, 7.602e-02, 1.683e-01, -1.640e-01, 5.004e-02, -1.479e-01, -1.302e-01, 1.253e-01, -5.586e-02, 1.083e-02, 2.092e-01, 4.253e-01, 5.892e-02), r);\n\tr = MulAdd(s0_4, M4(2.991e-01, -2.867e-01, 3.591e-01, 1.815e-01, 1.301e-01, 2.781e-02, 6.110e-02, -7.526e-02, -2.236e-01, -2.383e-01, -1.365e-01, -1.511e-01, -3.541e-02, 2.105e-01, 1.880e-01, -2.169e-01), r);\n\tr = MulAdd(s0_5, M4(1.310e-01, 6.178e-03, 6.162e-02, 8.473e-02, -4.512e-02, 2.741e-01, -2.587e-01, -1.368e-01, 1.448e-01, -2.241e-01, 1.788e-01, 1.691e-01, -7.749e-02, -6.264e-02, 4.554e-02, 6.527e-02), r);\n\tr = MulAdd(s0_6, M4(9.763e-02, 4.812e-02, -1.276e-01, -2.642e-01, -2.232e-02, -2.877e-02, -1.684e-01, 1.152e-01, -9.840e-02, 1.224e-01, 3.182e-02, -6.762e-02, 8.287e-02, 3.558e-01, -4.662e-02, -2.938e-01), r);\n\tr = MulAdd(s0_7, M4(1.670e-01, -1.360e-02, -9.542e-02, -1.691e-01, -1.819e-01, -9.168e-03, 9.087e-02, -7.566e-02, -9.845e-03, 1.043e-01, -1.144e-01, 2.102e-02, -7.557e-02, -2.903e-02, 2.711e-02, 4.163e-02), r);\n\tr = MulAdd(s0_8, M4(3.748e-02, 7.026e-02, -5.355e-02, -2.032e-01, -1.054e-01, 7.008e-02, -3.887e-03, 9.327e-02, -5.416e-02, -4.324e-02, -8.562e-02, -2.246e-01, 4.115e-02, -5.455e-02, -5.699e-02, 9.352e-02), r);\n\tr = MulAdd(s1_0, M4(-1.647e-01, -6.626e-02, -1.987e-01, 1.533e-01, -4.810e-02, -1.097e-02, -1.609e-01, -2.368e-01, 1.036e-02, 5.420e-02, 5.011e-02, 1.669e-01, -6.079e-02, -1.636e-01, -1.879e-03, -2.154e-01), r);\n\tr = MulAdd(s1_1, M4(-2.303e-01, -1.604e-01, 5.711e-02, 1.264e-01, -3.227e-02, -3.792e-01, -1.013e-01, -1.919e-01, 2.945e-02, 1.079e-01, 2.416e-01, -1.813e-01, -8.157e-02, -2.102e-01, -1.462e-01, 1.594e-01), r);\n\tr = MulAdd(s1_2, M4(-5.792e-02, -1.373e-02, 1.286e-01, 4.894e-02, -9.753e-02, -2.114e-01, -1.218e-02, -1.496e-01, 4.394e-02, 1.692e-02, -7.685e-02, -1.331e-01, 4.462e-03, -5.792e-02, 1.508e-01, 1.907e-01), r);\n\tr = MulAdd(s1_3, M4(-3.344e-01, 2.221e-01, 3.409e-01, 2.959e-01, 2.695e-01, -5.308e-02, -2.027e-01, 1.681e-01, -7.817e-02, 1.927e-02, 1.200e-01, -1.694e-01, 4.014e-01, 2.818e-01, 1.119e-01, -2.400e-01), r);\n\tr = MulAdd(s1_4, M4(-2.868e-02, -7.143e-02, 2.904e-01, 5.075e-02, -1.590e-01, -3.739e-01, 1.705e-01, -1.525e-01, -7.932e-02, -8.959e-02, -1.228e-01, 1.294e-01, 1.669e-01, -2.851e-01, 2.203e-02, -6.589e-01), r);\n\tr = MulAdd(s1_5, M4(-1.570e-02, 2.385e-02, -1.108e-02, 9.343e-02, -2.494e-01, -3.927e-01, 4.257e-02, 2.139e-01, 1.506e-01, 1.220e-02, 1.834e-01, -9.939e-02, -1.581e-01, 6.915e-02, -1.147e-01, -2.094e-01), r);\n\tr = MulAdd(s1_6, M4(7.238e-02, 2.064e-02, -8.644e-02, 1.141e-01, 9.264e-02, -1.623e-01, -5.621e-02, 2.077e-03, -1.771e-01, 6.011e-02, 1.249e-01, 2.444e-02, 1.023e-02, 2.457e-02, 1.956e-01, 1.182e-01), r);\n\tr = MulAdd(s1_7, M4(-1.855e-02, 1.438e-01, -5.501e-02, -2.316e-01, -7.153e-02, -1.020e-02, -1.145e-01, -4.723e-01, 1.101e-01, -2.734e-02, -8.558e-03, 5.762e-01, 8.280e-02, -1.551e-01, 8.434e-02, 2.051e-01), r);\n\tr = MulAdd(s1_8, M4(1.539e-02, 1.436e-02, 8.719e-03, -6.027e-02, -1.844e-01, -1.623e-01, 8.752e-02, 7.324e-02, 8.527e-02, 6.751e-03, -8.172e-02, 5.645e-02, -9.335e-02, 9.705e-03, -1.859e-03, 2.190e-01), r);\n\tr = MulAdd(s2_0, M4(1.063e-02, -5.882e-02, 7.294e-02, 1.135e-01, 6.834e-03, 2.521e-01, 3.334e-02, -7.202e-02, 1.982e-02, 8.106e-04, 5.125e-02, -3.961e-02, 1.600e-02, -1.903e-01, 8.996e-02, 1.905e-01), r);\n\tr = MulAdd(s2_1, M4(1.227e-01, 1.424e-01, 1.137e-01, 3.396e-02, -7.578e-02, 9.724e-02, -2.649e-02, -7.468e-02, 2.632e-02, -2.053e-01, -2.161e-02, -8.906e-02, -5.289e-02, -1.019e-02, -5.841e-02, -2.570e-02), r);\n\tr = MulAdd(s2_2, M4(3.359e-02, 5.073e-02, 1.054e-01, -3.593e-03, -7.366e-02, 1.187e-02, 2.007e-03, 2.112e-02, 8.835e-02, 7.359e-02, 2.478e-02, 4.758e-02, -8.954e-02, -2.354e-02, -1.852e-01, 1.836e-01), r);\n\tr = MulAdd(s2_3, M4(-2.403e-01, -3.137e-01, 4.761e-02, -1.840e-01, 1.012e-01, 5.392e-02, -1.457e-01, -6.425e-02, -6.436e-03, -2.480e-02, 9.199e-02, -8.296e-02, -2.894e-01, 1.054e-01, 1.282e-01, -7.266e-02), r);\n\tr = MulAdd(s2_4, M4(3.247e-01, -1.603e-01, 6.251e-02, -1.106e-01, -4.083e-02, 2.252e-01, -2.616e-01, 1.397e-01, -1.153e-01, -4.065e-02, 5.923e-02, -4.491e-03, 6.616e-02, -2.146e-01, 6.314e-02, 5.401e-01), r);\n\tr = MulAdd(s2_5, M4(7.356e-02, 3.269e-03, 1.710e-01, -2.914e-02, -7.138e-02, 2.294e-02, 1.634e-01, 1.120e-01, -7.388e-02, -1.768e-02, -3.813e-02, -3.019e-02, -4.569e-02, -1.257e-01, -1.341e-01, 4.040e-03), r);\n\tr = MulAdd(s2_6, M4(-1.479e-01, 2.260e-02, 5.173e-02, 1.889e-01, -1.911e-01, -6.621e-02, 1.666e-01, 1.329e-01, -1.320e-01, 3.452e-02, 1.232e-01, -1.545e-02, 7.646e-02, 4.924e-02, -9.582e-02, -1.941e-01), r);\n\tr = MulAdd(s2_7, M4(1.873e-01, -1.340e-02, -1.278e-01, 9.443e-02, 4.326e-02, 1.467e-01, 7.788e-02, 1.345e-01, 8.715e-02, -1.063e-01, -1.265e-01, 1.358e-01, 3.897e-02, -9.523e-03, -6.335e-02, 2.356e-02), r);\n\tr = MulAdd(s2_8, M4(-1.881e-02, -5.854e-02, -1.554e-02, -1.388e-01, -5.206e-03, 4.616e-02, -4.462e-02, 8.522e-03, -4.023e-02, -1.133e-01, 8.830e-02, -7.407e-02, -1.715e-02, -3.550e-02, 2.474e-02, 9.114e-02), r);\n\tr = MulAdd(s3_0, M4(7.529e-02, 2.230e-01, 1.972e-02, -1.296e-02, 1.146e-01, -6.835e-02, 4.912e-02, 1.397e-02, 1.189e-01, 6.960e-02, -4.406e-02, -7.066e-02, -1.058e-01, 6.757e-02, 1.539e-01, 1.892e-01), r);\n\tr = MulAdd(s3_1, M4(-6.716e-02, 2.716e-01, 1.435e-01, -2.363e-01, 5.216e-02, -3.579e-02, 1.132e-01, -8.205e-03, 3.452e-01, 1.436e-01, -4.125e-02, 2.391e-01, -1.578e-01, 1.164e-02, 1.621e-01, -7.879e-02), r);\n\tr = MulAdd(s3_2, M4(-1.167e-01, 1.343e-01, -1.091e-01, -1.064e-01, -1.269e-02, -8.151e-02, 7.006e-02, -3.599e-02, 1.215e-01, 2.535e-02, -8.567e-02, 7.653e-02, 1.470e-02, 1.479e-01, -6.068e-02, 8.576e-02), r);\n\tr = MulAdd(s3_3, M4(-2.659e-01, 5.315e-02, 8.693e-02, 1.562e-01, 2.764e-01, -4.758e-01, -2.118e-02, -1.585e-01, 1.634e-01, 1.815e-01, 3.742e-02, 1.125e-01, -1.832e-01, 3.244e-01, 1.500e-01, 1.319e-01), r);\n\tr = MulAdd(s3_4, M4(-7.748e-02, -1.417e-01, -2.502e-02, -5.102e-01, 5.740e-02, -1.569e-01, -1.604e-01, 1.076e-01, 9.692e-02, 1.335e-01, 1.066e-01, 2.489e-01, -1.600e-01, -2.911e-02, 9.011e-04, -1.260e-01), r);\n\tr = MulAdd(s3_5, M4(-5.218e-02, 1.823e-01, 2.527e-02, 5.142e-02, 3.503e-02, -1.782e-01, 1.947e-01, 1.810e-01, 1.059e-01, 3.631e-02, -1.122e-01, -1.281e-01, -6.201e-02, 5.464e-02, -2.633e-01, -2.567e-01), r);\n\tr = MulAdd(s3_6, M4(-3.602e-01, 8.443e-02, 3.335e-02, 2.454e-01, 2.898e-02, -5.114e-01, 1.577e-01, 1.251e-01, -6.350e-02, 4.388e-02, 4.373e-02, 3.042e-03, 4.010e-02, 4.499e-02, -8.740e-02, -1.123e-01), r);\n\tr = MulAdd(s3_7, M4(-1.979e-01, 3.968e-02, -6.856e-02, 9.250e-02, 5.656e-02, -2.908e-01, 4.040e-01, 1.679e-01, 3.232e-01, 2.436e-01, -2.430e-01, 3.446e-01, -1.092e-01, 8.027e-02, 5.210e-03, -1.632e-01), r);\n\tr = MulAdd(s3_8, M4(-8.864e-02, 5.409e-02, -7.792e-02, -6.164e-02, -3.213e-02, 5.911e-02, -3.344e-02, -1.642e-01, -3.467e-02, 1.005e-01, -4.552e-02, -5.140e-02, -3.020e-02, -5.049e-02, 5.460e-02, 2.551e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.519e-02, -1.626e-03, -6.363e-03, 2.015e-02 };\n\tr = MulAdd(s0_0, M4(2.210e-01, -8.771e-02, 8.433e-02, -1.834e-02, 4.487e-03, 1.229e-01, 9.812e-02, 1.122e-02, 6.535e-02, 2.964e-02, -5.238e-02, -8.784e-03, 1.608e-01, -3.298e-01, -7.243e-02, -2.594e-02), r);\n\tr = MulAdd(s0_1, M4(1.251e-01, 2.624e-03, 1.901e-01, -4.362e-02, -2.175e-02, 6.931e-02, 8.964e-03, -1.462e-02, 4.903e-02, 4.953e-03, 4.655e-02, -7.294e-02, 1.417e-01, -8.032e-02, 3.567e-02, -2.951e-02), r);\n\tr = MulAdd(s0_2, M4(6.153e-02, -1.150e-01, 1.440e-01, -5.493e-02, 4.033e-02, 1.981e-03, -2.974e-02, 2.702e-02, 5.450e-02, -7.033e-02, -2.222e-02, -7.965e-02, 1.456e-02, 2.782e-02, 2.746e-02, 1.040e-02), r);\n\tr = MulAdd(s0_3, M4(2.015e-01, 3.217e-01, 7.861e-02, -8.683e-03, 3.937e-02, -4.713e-03, -3.380e-02, 2.001e-03, 1.475e-02, 4.002e-02, -1.472e-02, -6.966e-02, 1.221e-01, -1.903e-01, -2.130e-02, 2.612e-02), r);\n\tr = MulAdd(s0_4, M4(-1.416e-01, 6.991e-02, 5.720e-02, 8.791e-02, 1.773e-01, -3.038e-01, -3.310e-01, -1.970e-01, -1.473e-01, 2.420e-01, 3.486e-02, -5.738e-02, -2.204e-01, -5.488e-02, -2.149e-01, 4.573e-01), r);\n\tr = MulAdd(s0_5, M4(-4.676e-02, 6.991e-02, 8.723e-02, -4.131e-02, -3.696e-03, -9.530e-02, -2.305e-01, 7.145e-02, 1.770e-01, 1.801e-01, 7.689e-02, -2.927e-01, 2.088e-01, -6.714e-02, 6.918e-02, -8.667e-02), r);\n\tr = MulAdd(s0_6, M4(2.136e-01, -2.888e-03, 6.237e-02, -2.379e-01, -1.859e-01, -4.943e-02, 9.806e-02, 3.477e-02, 1.773e-01, -1.017e-02, -8.464e-02, -4.892e-02, 1.725e-01, -2.379e-02, -1.774e-01, 6.270e-02), r);\n\tr = MulAdd(s0_7, M4(9.334e-02, 4.811e-03, 1.178e-01, -8.021e-02, 3.474e-02, -4.447e-02, 2.635e-02, 3.954e-02, 6.511e-02, -1.431e-01, -3.595e-02, -2.550e-01, -1.586e-01, -2.793e-01, -5.439e-02, 1.146e-01), r);\n\tr = MulAdd(s0_8, M4(-1.065e-02, -2.644e-02, 2.093e-02, 8.023e-02, 3.019e-02, 1.242e-02, -3.142e-02, -1.020e-01, 1.166e-01, -4.816e-02, -7.099e-02, -4.466e-02, 1.021e-01, 1.844e-02, -5.070e-02, 5.314e-02), r);\n\tr = MulAdd(s1_0, M4(-4.590e-02, -2.057e-01, -1.242e-01, -3.319e-02, -2.894e-01, 3.706e-01, 1.807e-01, 4.483e-02, -3.240e-03, 6.281e-02, -1.038e-01, 1.921e-02, 2.339e-01, -3.037e-01, 1.067e-01, -7.859e-02), r);\n\tr = MulAdd(s1_1, M4(-1.438e-01, 1.188e-02, 1.465e-01, -5.182e-02, -1.534e-01, 9.311e-02, 2.122e-01, -5.038e-03, -1.265e-01, -5.506e-03, -3.281e-02, -1.296e-02, -2.746e-02, -1.885e-02, 1.191e-01, -6.267e-03), r);\n\tr = MulAdd(s1_2, M4(-8.901e-03, -1.093e-01, 8.306e-02, -6.763e-02, -8.580e-02, 1.989e-01, 2.396e-01, 9.082e-02, 6.451e-03, -9.354e-02, -7.606e-02, 4.595e-02, -6.431e-02, 2.274e-01, 2.200e-01, 8.497e-02), r);\n\tr = MulAdd(s1_3, M4(-8.861e-02, 1.255e-01, 3.949e-02, -6.585e-02, -4.185e-02, 4.627e-01, -3.145e-02, 2.407e-02, -5.978e-02, -7.530e-02, -9.670e-03, -1.027e-02, -9.589e-02, 9.377e-02, 2.228e-01, 2.195e-02), r);\n\tr = MulAdd(s1_4, M4(-3.904e-01, 3.109e-03, -1.475e-01, 3.837e-01, -1.894e-01, 6.479e-02, -6.395e-02, -1.995e-02, -2.757e-01, 8.815e-02, -7.492e-02, 1.081e-01, -3.250e-01, 2.217e-02, -2.679e-01, 2.825e-01), r);\n\tr = MulAdd(s1_5, M4(-3.827e-02, -8.505e-02, -4.066e-02, -6.333e-02, -7.558e-02, 2.457e-01, 1.232e-01, -2.482e-01, 3.403e-02, 4.594e-02, -4.212e-03, -1.739e-01, -2.179e-01, -1.252e-01, 2.949e-02, 2.564e-01), r);\n\tr = MulAdd(s1_6, M4(6.617e-02, -9.007e-02, 8.929e-02, -1.230e-01, -1.098e-01, -1.735e-02, 6.949e-02, -4.675e-02, -6.309e-02, -7.797e-02, -6.646e-02, -5.128e-03, 2.148e-01, 1.261e-01, -1.065e-01, 1.382e-01), r);\n\tr = MulAdd(s1_7, M4(5.742e-02, -1.194e-01, 8.199e-02, -5.755e-02, -6.747e-03, 2.054e-01, 1.251e-01, 3.603e-02, -1.160e-01, -1.202e-01, -1.329e-01, -1.194e-02, -1.654e-01, -2.280e-02, -2.143e-01, 9.542e-02), r);\n\tr = MulAdd(s1_8, M4(8.072e-02, -2.271e-02, -2.824e-02, -9.697e-03, -2.783e-01, -2.375e-02, 1.056e-01, -4.308e-02, -9.954e-02, -5.603e-02, 1.340e-02, 6.323e-02, -9.490e-02, 1.534e-01, -9.825e-02, 1.031e-01), r);\n\tr = MulAdd(s2_0, M4(-6.657e-02, 1.213e-01, -4.044e-03, -1.773e-02, -1.002e-01, -9.754e-02, -8.548e-02, -7.991e-03, -1.089e-02, 2.650e-02, 7.231e-02, 1.553e-02, 1.862e-02, -4.304e-02, -2.659e-02, -9.413e-02), r);\n\tr = MulAdd(s2_1, M4(-1.215e-01, 2.919e-01, -1.007e-01, 5.449e-02, -3.993e-02, -2.603e-01, -9.447e-02, 4.317e-02, 1.249e-02, 6.626e-03, 3.549e-02, 2.056e-02, -1.929e-01, 2.127e-01, 1.262e-01, 1.266e-01), r);\n\tr = MulAdd(s2_2, M4(-1.348e-01, 9.263e-02, 4.868e-02, 3.141e-02, -3.260e-02, -5.119e-02, 1.882e-02, -2.687e-02, 1.175e-01, 7.400e-03, 5.936e-02, -3.558e-02, -1.845e-01, 1.852e-01, 1.900e-01, 3.633e-02), r);\n\tr = MulAdd(s2_3, M4(-1.500e-01, 5.300e-01, 1.362e-01, 1.648e-02, -2.638e-01, -1.051e-01, -8.124e-02, 6.321e-02, 1.936e-02, -9.783e-03, -2.973e-03, -3.255e-02, -8.121e-03, 1.057e-01, 3.040e-02, 1.927e-03), r);\n\tr = MulAdd(s2_4, M4(-3.394e-01, -9.811e-02, 1.051e-01, 7.235e-02, 7.202e-02, -4.507e-02, -3.230e-01, 7.066e-02, -9.951e-02, -3.135e-02, -3.983e-02, -1.663e-02, -1.988e-01, -1.760e-01, 7.408e-02, 7.511e-03), r);\n\tr = MulAdd(s2_5, M4(-1.656e-01, -5.325e-02, 8.364e-02, -1.237e-01, -2.843e-02, -1.214e-01, 2.234e-02, -8.794e-02, -5.301e-02, -9.052e-02, -7.931e-03, 1.106e-01, -5.915e-02, 2.891e-01, 1.154e-02, 4.972e-01), r);\n\tr = MulAdd(s2_6, M4(-1.144e-01, 1.519e-01, -1.635e-02, -4.138e-02, -2.222e-01, -2.007e-02, -9.045e-02, 7.578e-02, -1.112e-02, 7.288e-02, -6.133e-02, 4.914e-02, -3.029e-02, 6.290e-02, -3.176e-02, -5.098e-02), r);\n\tr = MulAdd(s2_7, M4(9.470e-03, -3.087e-02, -4.088e-02, -1.636e-01, -1.954e-01, -3.066e-02, -6.252e-01, 3.643e-01, -8.264e-02, -9.051e-02, -4.227e-02, -1.096e-01, -1.828e-01, 9.511e-02, -1.038e-01, 1.368e-01), r);\n\tr = MulAdd(s2_8, M4(-1.110e-01, 1.403e-02, 6.434e-02, 4.785e-02, -9.627e-02, -9.932e-02, -3.143e-02, 1.898e-01, 5.175e-02, 1.199e-01, 1.578e-01, 1.062e-02, -1.138e-01, 8.965e-02, 4.713e-03, 1.549e-01), r);\n\tr = MulAdd(s3_0, M4(3.829e-02, -1.337e-01, -1.104e-03, -7.664e-03, 6.715e-02, 1.739e-01, 1.395e-02, 1.015e-02, -6.929e-02, -4.876e-02, -3.160e-02, 4.958e-03, 3.909e-02, -7.175e-02, 6.043e-02, -1.690e-03), r);\n\tr = MulAdd(s3_1, M4(-4.348e-02, -3.422e-01, -1.035e-01, 5.749e-02, -2.770e-02, -6.681e-02, 9.643e-02, -3.363e-02, -1.086e-01, 1.263e-01, -3.565e-02, 1.481e-01, 2.105e-01, -1.008e-01, 2.541e-02, -1.773e-03), r);\n\tr = MulAdd(s3_2, M4(-1.641e-01, -1.775e-01, -3.140e-02, -2.266e-02, 5.426e-02, 1.135e-01, 1.251e-01, -6.043e-02, -1.022e-01, 4.385e-01, 7.205e-03, 9.644e-02, 9.829e-02, -5.496e-02, -2.885e-02, -8.019e-02), r);\n\tr = MulAdd(s3_3, M4(-1.623e-01, -4.012e-02, 4.193e-02, 5.826e-02, 7.017e-02, 3.917e-02, 1.997e-01, -8.713e-02, -2.845e-02, 8.698e-02, -1.084e-02, 3.293e-02, 3.392e-04, 6.589e-02, -7.126e-02, 2.960e-02), r);\n\tr = MulAdd(s3_4, M4(-3.154e-01, -1.805e-01, -2.569e-01, 1.802e-02, 5.784e-01, 3.153e-02, 1.085e-01, -8.445e-02, -1.383e-01, 3.813e-01, -4.014e-01, 2.353e-01, 7.655e-02, -5.224e-01, -2.345e-01, -5.558e-02), r);\n\tr = MulAdd(s3_5, M4(-7.284e-02, -4.643e-01, -1.979e-01, -2.940e-01, 3.934e-02, 1.468e-01, 2.169e-01, -1.865e-01, 3.773e-02, 1.863e-01, -2.202e-01, 3.661e-01, 2.442e-01, -6.375e-02, -1.982e-01, -2.276e-02), r);\n\tr = MulAdd(s3_6, M4(-6.857e-02, -1.182e-01, -5.203e-02, -4.814e-02, 1.110e-01, 5.270e-02, 1.293e-01, -6.715e-02, -1.529e-01, 1.844e-01, -1.089e-01, 6.857e-02, 1.382e-01, 3.184e-02, 2.557e-02, -2.965e-02), r);\n\tr = MulAdd(s3_7, M4(1.598e-01, -3.311e-01, -1.057e-01, -4.271e-01, 2.381e-01, -4.726e-02, 1.948e-01, -8.839e-02, -9.368e-02, 1.343e-01, -1.369e-01, 8.824e-02, 7.348e-02, 3.476e-02, -2.949e-02, 6.313e-03), r);\n\tr = MulAdd(s3_8, M4(1.153e-01, -1.471e-01, -5.845e-02, -2.276e-01, 1.669e-01, -4.299e-02, 7.663e-02, -3.158e-02, -1.171e-01, 1.190e-01, -5.942e-02, 1.771e-01, 1.996e-03, 2.404e-02, -3.151e-02, -3.041e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 7.981e-03, 1.017e-02, -9.502e-03, -2.618e-02 };\n\tr = MulAdd(s0_0, M4(-4.603e-02, 1.457e-02, 4.018e-02, 1.284e-01, -2.497e-02, 1.041e-02, 8.365e-02, -2.611e-02, 2.223e-02, -8.476e-03, -1.068e-01, -1.092e-02, -2.023e-02, -6.393e-02, 3.540e-02, -3.517e-02), r);\n\tr = MulAdd(s0_1, M4(4.999e-02, -3.245e-02, 3.582e-03, -1.362e-01, 5.032e-02, 2.189e-03, -1.182e-01, -5.752e-02, -3.133e-02, -4.474e-02, 6.192e-02, -5.508e-02, 2.607e-02, 3.363e-02, -4.378e-02, -6.372e-02), r);\n\tr = MulAdd(s0_2, M4(-1.613e-01, -8.100e-02, -7.770e-03, 1.425e-02, -1.075e-02, 4.560e-02, -1.378e-02, 2.426e-02, 4.124e-02, 6.632e-02, 1.771e-01, 1.226e-01, -8.028e-02, 3.032e-02, 2.187e-02, -7.814e-03), r);\n\tr = MulAdd(s0_3, M4(4.616e-02, 1.362e-01, -1.578e-01, -7.459e-02, -1.762e-01, 3.738e-02, -2.270e-02, -1.593e-01, -9.981e-02, 7.580e-02, 1.020e-01, -1.905e-02, -4.813e-02, -3.603e-02, -6.406e-02, 5.516e-02), r);\n\tr = MulAdd(s0_4, M4(-3.955e-01, 4.862e-03, 4.408e-01, 3.431e-01, 1.827e-01, 4.348e-02, 1.825e-02, 3.428e-02, 9.285e-02, 2.980e-01, -1.655e-01, 1.925e-02, 1.656e-01, -7.685e-02, -2.193e-01, -6.239e-02), r);\n\tr = MulAdd(s0_5, M4(1.214e-01, -1.069e-02, -2.443e-01, 4.160e-03, -2.923e-03, -3.846e-01, 1.242e-01, 1.638e-02, 1.392e-01, 2.218e-01, 8.119e-02, 6.071e-02, -3.691e-02, -2.882e-01, 1.464e-01, 7.349e-02), r);\n\tr = MulAdd(s0_6, M4(-1.240e-01, 7.950e-03, 6.145e-02, -8.886e-02, 5.262e-02, 9.563e-02, -2.241e-02, -5.722e-02, -1.371e-02, 4.435e-02, 1.125e-01, 1.029e-01, -1.878e-02, -3.662e-03, 2.522e-02, -6.313e-02), r);\n\tr = MulAdd(s0_7, M4(-2.502e-02, 1.062e-01, -2.685e-01, 4.436e-02, 2.446e-02, 7.840e-02, -6.193e-02, -7.416e-05, 2.145e-02, 2.132e-01, -1.304e-01, 1.844e-01, -3.718e-04, -8.233e-02, 1.137e-01, -1.111e-02), r);\n\tr = MulAdd(s0_8, M4(6.311e-02, 1.239e-02, 3.474e-02, 6.830e-02, 7.880e-02, 1.460e-01, 1.436e-02, 5.359e-03, 1.001e-01, 1.663e-01, 3.111e-02, 1.435e-02, 1.698e-02, 1.415e-02, 6.806e-02, 2.488e-03), r);\n\tr = MulAdd(s1_0, M4(1.176e-02, -4.177e-02, -5.899e-02, -8.043e-02, -5.556e-02, -5.232e-02, 1.104e-01, -1.912e-02, -1.999e-02, 3.132e-02, 3.493e-02, -4.262e-02, 8.312e-02, 9.728e-02, -4.373e-02, 9.260e-02), r);\n\tr = MulAdd(s1_1, M4(-1.069e-01, 4.645e-02, 2.282e-01, -5.721e-02, -3.651e-02, -3.742e-03, -8.886e-03, -5.040e-02, -5.751e-02, 4.869e-02, 9.988e-03, 1.313e-02, -3.140e-02, 1.363e-01, -9.975e-02, -3.207e-02), r);\n\tr = MulAdd(s1_2, M4(-1.288e-01, -2.886e-02, 9.747e-02, 2.324e-02, 1.364e-02, -8.983e-02, 5.610e-02, 2.811e-02, -2.433e-02, 2.233e-01, -1.660e-02, 7.249e-02, -4.680e-02, 2.193e-01, -2.173e-01, -8.384e-02), r);\n\tr = MulAdd(s1_3, M4(-1.302e-03, -2.432e-02, 1.779e-01, 8.593e-02, -1.982e-01, 5.378e-02, -5.749e-03, -3.947e-02, -2.771e-02, 6.767e-02, -1.146e-01, -3.119e-02, 6.422e-02, 9.432e-02, -3.233e-01, 9.318e-02), r);\n\tr = MulAdd(s1_4, M4(-2.855e-01, 1.026e-01, 2.524e-01, 2.993e-01, 2.177e-01, -1.882e-01, -5.235e-02, -6.145e-03, 2.709e-02, 2.778e-01, 2.826e-01, -2.878e-01, 3.057e-01, 1.621e-01, -2.407e-01, -3.343e-01), r);\n\tr = MulAdd(s1_5, M4(-3.628e-02, 5.554e-03, 1.063e-01, 4.774e-02, 3.746e-02, -1.545e-01, -4.221e-02, 6.273e-02, 7.253e-02, 5.197e-01, -5.520e-02, -6.371e-02, 1.401e-01, 2.903e-02, -6.322e-02, -1.457e-01), r);\n\tr = MulAdd(s1_6, M4(-3.768e-02, 8.166e-03, 3.330e-01, 9.689e-02, -3.890e-02, 1.159e-01, 6.738e-02, -8.253e-02, -7.114e-03, -1.422e-02, 1.549e-01, 6.271e-02, -1.100e-02, 2.598e-02, -2.596e-01, -8.673e-02), r);\n\tr = MulAdd(s1_7, M4(-1.372e-01, 6.481e-02, -1.001e-01, 7.663e-02, 5.323e-02, 1.137e-01, 9.721e-02, 3.063e-01, 7.966e-02, 1.892e-01, -2.452e-01, 8.129e-02, 6.147e-02, -4.174e-02, -8.889e-02, -2.223e-01), r);\n\tr = MulAdd(s1_8, M4(-7.513e-02, 1.446e-02, 1.697e-01, 7.281e-02, 2.272e-02, 1.891e-01, -2.171e-01, -8.146e-02, 4.419e-02, 9.160e-02, 3.967e-02, 3.398e-02, 1.016e-02, 1.109e-02, -1.280e-02, 6.043e-03), r);\n\tr = MulAdd(s2_0, M4(-1.125e-02, -4.668e-02, 8.017e-03, -1.144e-01, -1.167e-01, 1.599e-02, 1.427e-01, -8.549e-02, -8.563e-02, -7.150e-03, 1.269e-01, -1.134e-02, -1.111e-02, -9.739e-02, 5.041e-02, -7.451e-02), r);\n\tr = MulAdd(s2_1, M4(-4.166e-02, -2.516e-02, 9.528e-02, 5.857e-02, 9.985e-02, -1.021e-02, 1.122e-02, 1.325e-02, -3.881e-02, 5.275e-02, -1.425e-01, 2.573e-01, 3.958e-02, -1.059e-01, 1.155e-01, 4.783e-02), r);\n\tr = MulAdd(s2_2, M4(-9.030e-03, -9.384e-03, 1.231e-01, -2.887e-02, 6.405e-02, -2.676e-02, -7.671e-03, 1.489e-02, -3.528e-02, -2.811e-01, 1.087e-01, 2.132e-02, -4.533e-02, 1.584e-02, 7.144e-02, 3.402e-02), r);\n\tr = MulAdd(s2_3, M4(1.897e-01, 6.806e-03, -2.573e-01, 1.147e-02, -4.295e-02, 5.574e-02, -1.997e-01, -1.539e-01, 2.371e-01, 8.366e-02, -5.064e-02, 7.570e-02, 2.415e-01, -9.769e-02, 1.666e-02, 1.138e-01), r);\n\tr = MulAdd(s2_4, M4(4.319e-01, -1.018e-02, -2.282e-01, -6.357e-02, -2.734e-02, -2.508e-01, 7.848e-02, 6.481e-02, 1.501e-01, 1.706e-01, -7.193e-02, -4.792e-01, -7.641e-02, -7.082e-02, -1.236e-01, -6.017e-02), r);\n\tr = MulAdd(s2_5, M4(-7.273e-02, -2.068e-01, -9.371e-02, -2.801e-02, 1.659e-01, 5.531e-02, -1.428e-02, 2.927e-02, -1.047e-01, -2.108e-01, 1.224e-01, 1.807e-01, -5.600e-02, -1.184e-02, -8.557e-02, 2.045e-02), r);\n\tr = MulAdd(s2_6, M4(6.962e-02, -9.497e-02, -1.894e-02, 7.397e-02, 4.261e-02, 1.095e-02, 1.084e-01, 8.961e-02, 1.426e-01, 5.959e-02, -2.532e-02, -7.401e-02, 9.025e-02, -2.152e-02, 5.712e-02, -7.736e-02), r);\n\tr = MulAdd(s2_7, M4(1.248e-01, -1.912e-01, 2.197e-01, -3.152e-02, 1.601e-02, -5.634e-02, 1.397e-01, 3.612e-01, 5.845e-02, 1.990e-01, 1.667e-01, 1.460e-01, -1.803e-02, -1.255e-01, 2.606e-02, -3.095e-02), r);\n\tr = MulAdd(s2_8, M4(-7.043e-02, -1.660e-01, -1.409e-02, 2.977e-02, 9.866e-02, 6.648e-02, -8.271e-02, -1.705e-02, -5.470e-02, -4.730e-02, -9.331e-02, -9.813e-02, -2.882e-02, -7.116e-02, 3.656e-02, 7.024e-02), r);\n\tr = MulAdd(s3_0, M4(3.335e-02, -1.035e-01, -4.027e-02, -9.856e-02, 1.123e-02, -4.545e-02, -1.428e-02, -4.436e-02, -1.125e-02, 5.338e-02, 1.272e-01, 7.738e-02, 2.460e-01, 6.170e-02, -2.828e-01, -9.801e-02), r);\n\tr = MulAdd(s3_1, M4(-1.291e-02, -9.460e-02, 1.647e-01, 3.956e-02, 6.269e-02, -1.042e-01, 1.587e-01, 1.304e-01, 8.502e-03, 3.894e-02, 4.633e-02, 1.400e-01, -1.945e-02, 3.277e-01, 1.464e-01, 1.050e-01), r);\n\tr = MulAdd(s3_2, M4(-3.341e-02, -1.665e-02, 7.029e-02, 4.459e-02, 5.240e-02, -1.783e-01, 1.174e-01, 7.980e-02, -6.808e-04, 3.650e-02, -9.933e-02, -2.446e-02, -7.836e-02, 1.854e-01, 5.613e-02, -1.825e-02), r);\n\tr = MulAdd(s3_3, M4(-2.069e-01, -4.267e-02, 2.725e-01, 5.264e-03, -4.267e-02, -9.650e-03, -3.641e-02, -5.011e-02, 1.346e-01, 1.087e-01, -1.854e-01, 1.758e-01, 4.033e-01, -1.891e-01, 1.411e-01, -1.705e-01), r);\n\tr = MulAdd(s3_4, M4(3.056e-01, -5.330e-01, 5.010e-02, 2.460e-01, -2.118e-02, 1.479e-01, 1.269e-01, 2.600e-01, 9.058e-02, -2.206e-01, 2.627e-02, -2.579e-01, -5.702e-03, -2.285e-01, 2.033e-01, -1.174e-01), r);\n\tr = MulAdd(s3_5, M4(6.399e-02, -1.645e-01, -1.331e-01, 5.684e-02, 4.928e-02, -2.339e-01, 2.013e-02, -4.284e-02, -2.017e-01, -4.847e-02, 2.648e-02, -1.329e-02, -1.203e-01, -1.062e-01, -7.317e-02, 7.343e-02), r);\n\tr = MulAdd(s3_6, M4(1.753e-02, -9.153e-03, 9.648e-02, 1.480e-01, 2.131e-02, 6.322e-03, 1.606e-01, 2.550e-01, 1.438e-02, 9.530e-02, -1.749e-02, -3.708e-03, 1.606e-01, 6.072e-02, 1.209e-01, -1.087e-01), r);\n\tr = MulAdd(s3_7, M4(4.474e-02, -1.546e-01, -1.312e-02, 4.897e-02, 9.376e-02, 8.851e-02, 8.660e-02, -7.482e-03, 1.519e-01, 8.864e-02, 5.592e-02, -1.059e-02, -1.083e-01, -1.601e-01, 2.599e-01, 6.959e-02), r);\n\tr = MulAdd(s3_8, M4(-1.033e-01, -1.514e-01, 3.964e-02, 5.707e-02, -2.455e-02, -1.163e-01, 2.173e-01, 1.447e-01, -1.753e-02, -3.387e-02, 2.775e-02, -3.772e-02, -1.142e-01, 5.344e-02, -1.796e-01, -1.290e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.969e-02, 1.581e-02, -1.910e-02, -1.871e-02 };\n\tr = MulAdd(s0_0, M4(4.499e-03, -1.196e-02, -1.650e-02, 6.240e-02, -4.222e-02, -1.463e-02, -6.762e-02, -3.560e-02, 1.501e-01, -1.203e-01, 1.276e-01, 3.161e-02, 8.032e-02, -5.788e-02, 3.964e-02, -1.081e-01), r);\n\tr = MulAdd(s0_1, M4(7.720e-02, -1.253e-01, 1.192e-01, 4.363e-02, 2.300e-03, 3.121e-02, -9.608e-02, -1.262e-01, -1.082e-02, -5.831e-02, 1.486e-01, 1.558e-01, 2.582e-02, -7.162e-02, -1.317e-01, -1.325e-01), r);\n\tr = MulAdd(s0_2, M4(-3.036e-02, -1.122e-01, -2.954e-02, 4.476e-02, 5.942e-02, 1.889e-02, 2.699e-02, 3.370e-02, 7.309e-02, 7.204e-03, 8.554e-02, -3.684e-02, 2.101e-03, 5.032e-02, 4.602e-02, -4.234e-02), r);\n\tr = MulAdd(s0_3, M4(1.287e-01, -6.731e-02, -1.535e-01, 6.860e-02, 1.347e-01, -6.583e-02, -2.647e-02, -7.921e-03, 1.514e-01, -4.460e-02, -5.672e-02, -1.412e-01, 2.153e-01, -8.017e-03, 3.155e-03, 9.885e-02), r);\n\tr = MulAdd(s0_4, M4(1.192e-01, -1.237e-01, -1.446e-01, -2.197e-01, 5.265e-02, -1.721e-02, 1.762e-01, -1.570e-01, -2.728e-01, -9.284e-02, -1.318e-01, -2.472e-01, 2.642e-01, 3.686e-02, 2.810e-01, -7.129e-02), r);\n\tr = MulAdd(s0_5, M4(1.372e-01, -3.096e-01, 1.258e-01, 1.579e-01, -1.576e-01, 3.233e-01, -7.987e-02, -1.414e-01, -6.258e-02, 8.063e-02, -9.703e-02, 1.087e-01, 2.968e-02, 3.011e-02, 3.135e-01, 5.113e-02), r);\n\tr = MulAdd(s0_6, M4(-4.781e-02, -1.868e-02, -1.984e-02, 3.647e-02, -7.447e-02, -1.965e-02, -7.801e-02, -2.734e-02, 5.353e-02, 7.222e-02, -2.888e-02, -5.486e-02, 5.216e-02, -2.872e-02, -1.073e-02, 3.894e-02), r);\n\tr = MulAdd(s0_7, M4(-8.822e-02, 2.075e-01, -9.096e-02, -5.276e-03, 3.016e-01, 9.170e-02, -3.208e-02, 1.088e-01, -1.142e-01, 3.082e-01, -1.133e-01, -2.093e-01, 2.744e-01, 2.188e-02, 2.380e-02, 9.535e-02), r);\n\tr = MulAdd(s0_8, M4(-1.286e-02, -8.243e-02, 2.199e-02, 2.645e-01, 6.284e-02, 1.616e-02, -5.037e-02, 8.813e-02, -2.444e-02, -8.535e-02, 3.516e-02, 3.767e-02, -8.980e-02, 1.333e-01, 2.389e-02, 4.367e-02), r);\n\tr = MulAdd(s1_0, M4(-1.972e-02, -4.719e-02, 4.859e-02, -8.123e-03, 7.200e-02, -2.635e-02, -1.962e-02, -6.082e-02, 7.614e-02, 6.818e-03, 6.225e-02, 7.733e-02, -2.530e-02, -2.384e-02, -1.177e-01, -4.357e-02), r);\n\tr = MulAdd(s1_1, M4(1.055e-01, -8.694e-02, 4.911e-03, -5.235e-02, 2.067e-02, -7.520e-02, -1.095e-01, -2.507e-01, 4.948e-02, -5.254e-02, -7.734e-02, 3.959e-01, -5.456e-02, -8.501e-02, -2.084e-01, -7.064e-02), r);\n\tr = MulAdd(s1_2, M4(-4.418e-02, -2.485e-03, -9.979e-02, -1.702e-02, -1.339e-01, 2.062e-02, -6.812e-02, -3.193e-01, -8.136e-02, 8.432e-02, -9.392e-02, -7.457e-02, -4.301e-02, -9.250e-02, -3.137e-01, -1.783e-01), r);\n\tr = MulAdd(s1_3, M4(7.296e-02, 6.799e-03, -8.333e-04, 4.303e-02, 2.939e-01, -1.032e-01, 2.746e-02, 1.708e-02, 1.057e-01, -7.090e-02, -1.024e-01, 1.230e-03, 3.034e-02, -7.408e-02, -1.711e-01, 2.089e-01), r);\n\tr = MulAdd(s1_4, M4(2.376e-01, -4.740e-01, -2.568e-01, 2.305e-01, 1.795e-01, 3.196e-03, 2.923e-01, -2.949e-01, -2.451e-01, -1.050e-01, 6.901e-03, -1.139e-01, 1.644e-01, -1.711e-03, -2.378e-02, 1.237e-01), r);\n\tr = MulAdd(s1_5, M4(1.772e-01, -1.673e-01, 2.690e-01, -1.356e-03, 6.326e-03, 1.908e-01, 6.859e-02, -1.588e-02, 5.134e-02, 1.322e-01, -1.345e-01, 2.626e-01, 6.353e-02, -6.034e-03, -4.632e-03, 6.808e-02), r);\n\tr = MulAdd(s1_6, M4(-1.538e-01, -2.396e-02, 9.343e-02, -9.545e-02, 2.179e-01, -6.521e-02, 3.206e-02, -1.402e-01, 8.921e-02, -1.290e-02, -8.212e-03, -3.336e-03, -1.101e-01, -7.274e-02, -1.222e-01, -3.584e-03), r);\n\tr = MulAdd(s1_7, M4(-2.568e-01, 3.896e-01, -1.382e-01, -1.016e-01, 6.448e-01, 2.466e-02, -1.558e-01, -1.596e-01, 9.313e-03, 2.957e-01, -1.509e-01, -1.101e-03, 1.536e-01, -6.831e-02, -2.091e-02, -5.669e-03), r);\n\tr = MulAdd(s1_8, M4(2.950e-02, -3.207e-02, 3.291e-02, 1.807e-02, 2.214e-01, -6.876e-02, -1.293e-01, 2.144e-01, -8.780e-02, -1.075e-01, 1.157e-02, 1.124e-01, -1.431e-01, 7.471e-02, 2.634e-02, -1.739e-01), r);\n\tr = MulAdd(s2_0, M4(-3.641e-02, -1.460e-01, 3.591e-02, 7.587e-02, -1.678e-02, 3.743e-02, -9.497e-02, -4.368e-02, -7.434e-02, 6.365e-02, -5.406e-02, -1.009e-01, -4.776e-02, -1.209e-01, 1.313e-01, -1.629e-02), r);\n\tr = MulAdd(s2_1, M4(-2.724e-02, -4.254e-02, -1.241e-02, -1.851e-01, -1.199e-01, 3.992e-02, -1.018e-01, -2.485e-01, 2.846e-02, 3.044e-02, -2.142e-01, -1.481e-01, 5.311e-02, -6.084e-02, 2.746e-02, 2.253e-01), r);\n\tr = MulAdd(s2_2, M4(2.912e-02, -8.517e-02, 4.616e-02, 2.585e-02, -3.418e-02, 7.831e-02, -6.313e-02, -6.349e-02, -2.185e-01, 4.734e-03, -1.576e-01, -2.940e-01, 3.779e-02, -4.732e-02, -2.341e-02, 9.825e-02), r);\n\tr = MulAdd(s2_3, M4(-1.595e-01, 1.192e-01, -1.748e-02, 1.593e-01, 2.061e-01, -1.857e-01, 1.617e-01, 1.555e-02, -1.745e-02, 4.421e-02, -4.839e-02, -1.656e-01, -1.701e-01, 2.096e-01, 2.222e-01, -1.145e-01), r);\n\tr = MulAdd(s2_4, M4(-7.095e-02, 2.911e-01, 1.119e-01, 6.460e-01, -1.009e-01, 2.390e-01, 4.439e-01, -2.016e-01, 3.076e-01, 1.578e-01, -8.802e-02, 2.667e-01, -8.825e-02, -4.537e-01, -2.085e-01, -3.020e-01), r);\n\tr = MulAdd(s2_5, M4(5.685e-02, -2.135e-01, 3.319e-02, -1.256e-03, 9.093e-03, 2.351e-01, 8.694e-02, 1.826e-02, 1.843e-02, 1.012e-01, 9.358e-02, -1.900e-01, -5.482e-02, -1.073e-01, 2.982e-02, 8.203e-02), r);\n\tr = MulAdd(s2_6, M4(-2.368e-01, -9.192e-03, 2.210e-02, 1.076e-01, -9.849e-02, 3.512e-02, 1.548e-02, -3.966e-02, 3.754e-01, 1.172e-01, -6.346e-02, 1.927e-01, 1.465e-01, -1.343e-01, 1.473e-01, 1.476e-01), r);\n\tr = MulAdd(s2_7, M4(-1.001e-01, -2.172e-01, 3.278e-01, 3.514e-01, -2.047e-01, 2.959e-01, -2.066e-01, -2.066e-01, 2.820e-01, 2.278e-01, 3.879e-02, -9.134e-02, 1.094e-01, 3.713e-02, 7.681e-02, 1.422e-01), r);\n\tr = MulAdd(s2_8, M4(1.533e-01, -9.170e-02, -1.468e-02, -1.166e-01, -1.566e-02, 2.613e-02, -6.614e-02, 1.829e-01, 1.087e-02, 5.517e-02, 6.255e-02, 1.459e-01, 4.011e-02, -6.970e-02, 5.322e-02, -1.088e-02), r);\n\tr = MulAdd(s3_0, M4(-1.905e-02, -1.010e-01, 1.092e-01, 4.898e-02, -2.340e-02, 3.379e-02, 9.514e-02, 5.005e-03, 3.866e-03, -3.382e-02, -3.593e-02, 2.363e-02, -1.810e-01, 1.544e-01, 6.000e-02, 4.837e-02), r);\n\tr = MulAdd(s3_1, M4(-1.749e-02, -1.130e-01, 6.763e-02, -4.278e-02, -3.698e-02, 7.479e-02, 1.882e-01, -1.991e-02, 9.916e-02, -3.566e-02, -2.936e-02, -6.237e-03, 9.864e-02, -1.650e-02, 8.939e-02, 6.387e-01), r);\n\tr = MulAdd(s3_2, M4(1.503e-03, -3.209e-02, 1.688e-02, 9.354e-02, -6.807e-02, 1.355e-01, 1.820e-01, -4.962e-02, 7.103e-02, -2.163e-02, -5.474e-03, 8.376e-02, -4.150e-03, -1.194e-01, -3.023e-02, 3.833e-02), r);\n\tr = MulAdd(s3_3, M4(5.056e-02, 6.071e-02, 2.378e-01, -1.013e-01, -2.159e-02, 1.218e-01, 2.809e-02, -6.215e-02, -1.733e-01, -3.470e-04, -7.359e-02, 7.317e-03, -5.394e-01, 5.426e-01, 3.015e-01, -3.820e-01), r);\n\tr = MulAdd(s3_4, M4(-6.020e-02, -2.055e-01, 3.680e-01, -1.910e-01, -8.192e-02, 2.159e-01, -3.798e-02, -2.656e-01, 5.141e-02, 2.568e-01, -3.443e-01, 2.042e-01, -3.336e-01, -6.124e-01, 2.211e-01, -2.492e-01), r);\n\tr = MulAdd(s3_5, M4(-3.453e-02, -4.960e-02, 7.981e-02, 2.635e-01, -7.613e-02, 2.725e-01, 1.583e-02, -1.533e-01, -6.782e-02, -1.673e-01, -1.790e-01, -1.456e-01, 1.161e-01, -2.882e-01, -4.865e-02, -8.904e-02), r);\n\tr = MulAdd(s3_6, M4(-6.294e-02, 3.362e-02, 5.988e-02, 2.554e-02, -2.094e-01, 6.535e-02, 6.381e-02, -7.398e-02, 1.185e-01, -8.304e-02, -2.793e-02, -1.274e-01, 6.660e-02, 1.347e-02, 3.585e-02, -4.377e-02), r);\n\tr = MulAdd(s3_7, M4(5.355e-02, -1.068e-01, -2.474e-02, 2.486e-01, 2.395e-01, -1.376e-01, 5.042e-02, 1.474e-01, 1.529e-01, 8.491e-02, 7.636e-02, -8.829e-03, 1.284e-01, -1.563e-01, 2.101e-01, -1.310e-01), r);\n\tr = MulAdd(s3_8, M4(4.926e-02, -1.433e-01, -2.143e-02, -6.901e-02, -9.212e-02, 2.929e-01, 2.215e-01, 8.423e-02, 5.067e-02, 5.809e-02, 1.200e-01, 8.764e-02, 9.560e-02, -2.676e-01, -2.228e-01, -9.947e-02), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 6\n//!DESC conv5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 1.622e-02, 8.633e-03, 2.282e-02, -1.091e-02 };\n\tr = MulAdd(s0_0, M4(-5.629e-02, -1.499e-02, 2.729e-02, 5.240e-02, -2.085e-02, 1.943e-02, 2.721e-01, 1.895e-02, 1.703e-05, -2.185e-03, 5.241e-02, 1.372e-01, 9.478e-02, -1.754e-01, -5.204e-02, -3.875e-02), r);\n\tr = MulAdd(s0_1, M4(-1.752e-01, 8.544e-03, 2.009e-01, 1.081e-01, -6.113e-02, -1.264e-02, -1.099e-01, 7.721e-02, -8.883e-02, 6.624e-02, 1.543e-01, -1.470e-01, 7.084e-02, 2.041e-02, -1.353e-01, 5.514e-02), r);\n\tr = MulAdd(s0_2, M4(-8.100e-02, 7.181e-02, 1.823e-02, 1.137e-01, -7.627e-03, 1.157e-02, 6.381e-03, -2.029e-02, -1.793e-01, 2.163e-01, 1.071e-01, 1.975e-01, 4.782e-03, -1.038e-01, -2.722e-02, -2.863e-02), r);\n\tr = MulAdd(s0_3, M4(-1.987e-01, 2.234e-02, 1.629e-01, 1.411e-01, 1.686e-01, -1.169e-01, -1.153e-01, 5.303e-02, -1.401e-01, 7.446e-02, 1.651e-02, 1.049e-01, 6.766e-02, -4.508e-03, -4.739e-02, -1.971e-02), r);\n\tr = MulAdd(s0_4, M4(-6.077e-01, -1.132e-01, 5.496e-02, -1.474e-01, -4.083e-02, -2.358e-02, 5.782e-02, -8.903e-03, -2.187e-01, -5.799e-01, -2.327e-01, 3.352e-01, 4.096e-01, 1.543e-01, 2.634e-01, 1.353e-02), r);\n\tr = MulAdd(s0_5, M4(-1.090e-01, -1.697e-02, -6.169e-02, 8.472e-02, 3.849e-02, -4.439e-02, -2.872e-02, 2.331e-02, -2.056e-01, 2.056e-01, -6.852e-02, 2.337e-03, -6.904e-02, 9.751e-02, 2.718e-02, 2.761e-02), r);\n\tr = MulAdd(s0_6, M4(-4.874e-02, 2.765e-02, -2.766e-02, 9.790e-02, -3.487e-02, 9.293e-02, 6.253e-02, 2.296e-02, -6.212e-02, 1.142e-01, 5.876e-02, 1.080e-01, -5.299e-02, -8.509e-04, -9.618e-02, -6.980e-03), r);\n\tr = MulAdd(s0_7, M4(-2.509e-02, -1.062e-01, 4.788e-02, 9.037e-02, 6.434e-03, -4.993e-02, 1.378e-02, -2.191e-02, -2.489e-02, 1.125e-01, -3.071e-02, 1.494e-01, 1.074e-02, -1.213e-02, -6.753e-02, -1.152e-01), r);\n\tr = MulAdd(s0_8, M4(-6.282e-02, 7.023e-03, -1.272e-02, 4.021e-02, -4.950e-02, 7.900e-02, -3.829e-03, 5.379e-02, -7.884e-02, 4.758e-02, -2.827e-02, 2.264e-02, 3.407e-02, -1.753e-01, 5.579e-03, 3.211e-02), r);\n\tr = MulAdd(s1_0, M4(2.093e-02, -4.623e-02, -3.265e-02, 1.873e-02, 3.220e-02, -1.627e-01, 5.046e-02, -4.882e-02, -6.228e-02, 2.889e-02, 5.429e-03, 2.945e-02, -4.053e-02, -6.110e-02, -4.289e-02, 1.538e-02), r);\n\tr = MulAdd(s1_1, M4(1.844e-02, -5.925e-02, -1.384e-01, -1.712e-01, 2.836e-02, -7.524e-02, -1.785e-01, -6.518e-02, -3.521e-02, -1.454e-02, 1.426e-01, -4.671e-02, 4.228e-02, 4.236e-02, -3.918e-02, 3.684e-02), r);\n\tr = MulAdd(s1_2, M4(-5.506e-02, -1.322e-02, -8.521e-02, 2.606e-02, 2.439e-02, -3.190e-02, 8.334e-03, -1.499e-03, -5.366e-02, -1.778e-02, 5.984e-02, -5.725e-02, 2.785e-02, -3.899e-02, -4.964e-02, 5.202e-02), r);\n\tr = MulAdd(s1_3, M4(-2.135e-02, 1.172e-02, -3.127e-03, 4.214e-02, -1.414e-01, -7.592e-02, -9.769e-01, 3.319e-01, -3.444e-02, 3.007e-02, -3.268e-02, 6.656e-03, 4.946e-02, 7.209e-02, 5.624e-03, 4.819e-02), r);\n\tr = MulAdd(s1_4, M4(2.301e-02, -8.416e-03, -1.886e-01, -4.043e-01, 5.243e-02, 8.550e-02, -1.203e-01, -2.122e-01, -8.371e-03, -2.264e-01, -1.174e-01, -1.152e-01, -2.725e-02, 1.957e-01, 5.036e-02, 1.214e-01), r);\n\tr = MulAdd(s1_5, M4(9.059e-02, -1.391e-01, -2.427e-01, -1.716e-03, 1.048e-01, -9.487e-02, -8.739e-02, 1.464e-02, -5.532e-02, -8.633e-02, -1.491e-01, 1.422e-01, -7.080e-02, 2.580e-01, -1.783e-02, 1.028e-01), r);\n\tr = MulAdd(s1_6, M4(5.407e-02, -4.321e-02, -6.909e-02, -5.464e-04, 2.971e-02, 6.365e-02, -3.780e-02, 3.135e-04, -1.352e-02, 5.407e-02, -2.180e-02, 1.456e-02, -2.334e-02, -6.107e-03, 3.552e-02, 1.831e-02), r);\n\tr = MulAdd(s1_7, M4(9.306e-02, -3.273e-01, 6.469e-02, -6.293e-02, 7.617e-02, -5.466e-02, 5.817e-04, -1.038e-01, -8.348e-03, -4.016e-02, 5.163e-02, 5.153e-02, -4.913e-02, -3.528e-02, -1.018e-02, -4.440e-02), r);\n\tr = MulAdd(s1_8, M4(-1.901e-02, -1.003e-02, 4.926e-03, -5.469e-02, 4.712e-02, 6.210e-02, 6.828e-03, 8.601e-03, -4.973e-02, 1.034e-01, 8.064e-02, -4.831e-02, -8.915e-03, 1.338e-01, -2.552e-02, 1.284e-01), r);\n\tr = MulAdd(s2_0, M4(1.099e-01, -3.907e-02, -5.627e-02, 3.726e-02, -4.089e-02, 3.905e-02, -7.333e-02, -5.201e-02, 1.199e-01, -3.077e-02, 7.080e-02, -6.518e-02, 5.478e-02, 3.929e-02, 3.922e-02, 5.502e-02), r);\n\tr = MulAdd(s2_1, M4(-1.650e-01, 1.957e-02, -1.799e-01, 2.149e-01, 8.199e-02, -1.061e-01, -4.542e-02, -1.756e-01, -3.644e-02, -2.350e-02, -1.891e-01, -1.270e-01, 7.510e-02, 6.960e-02, 1.670e-01, -3.395e-01), r);\n\tr = MulAdd(s2_2, M4(1.296e-01, -1.354e-02, -1.690e-01, 1.539e-01, 4.985e-02, -5.993e-02, 1.355e-03, 1.321e-02, 5.868e-02, -6.005e-03, 7.050e-03, -4.139e-02, 2.584e-02, -5.562e-02, 1.896e-03, -6.420e-02), r);\n\tr = MulAdd(s2_3, M4(-3.750e-03, 9.356e-02, 8.346e-02, -9.586e-02, 5.356e-02, 1.038e-01, 6.120e-02, 7.898e-02, 2.210e-01, -5.833e-02, -2.771e-01, -6.909e-02, 1.841e-01, -2.505e-02, -1.723e-01, 6.775e-02), r);\n\tr = MulAdd(s2_4, M4(-1.675e-01, 2.077e-01, 3.639e-01, 1.616e-01, -1.849e-02, -6.565e-02, 2.531e-01, -3.022e-01, -2.568e-01, 1.240e-01, -3.299e-01, 2.133e-01, 2.786e-01, -2.316e-01, -4.497e-02, -2.981e-01), r);\n\tr = MulAdd(s2_5, M4(-1.918e-01, 1.659e-01, 1.114e-01, 1.974e-01, 3.208e-02, -2.558e-02, -1.265e-02, -2.035e-02, 2.564e-01, -3.624e-02, -6.179e-02, -1.233e-01, -3.454e-02, -7.588e-02, 2.185e-02, -5.032e-02), r);\n\tr = MulAdd(s2_6, M4(1.514e-02, -9.920e-03, 3.117e-02, -5.511e-02, 4.066e-02, 3.938e-02, -5.380e-03, -5.667e-02, -1.978e-02, -4.687e-02, 1.253e-01, -1.195e-02, -7.667e-03, 5.952e-02, 2.288e-02, 3.814e-02), r);\n\tr = MulAdd(s2_7, M4(-3.610e-02, -3.112e-02, 3.272e-02, 7.061e-02, 3.913e-02, -1.046e-01, -1.197e-03, 2.646e-02, 9.618e-03, 1.146e-01, 7.210e-02, -1.143e-01, -1.136e-03, 6.210e-02, -1.122e-02, -2.587e-02), r);\n\tr = MulAdd(s2_8, M4(-7.697e-02, -9.952e-04, -7.539e-03, -1.513e-02, -9.029e-03, 1.408e-02, 2.055e-06, -1.059e-02, 7.768e-02, 3.124e-02, 3.368e-02, -1.155e-02, -1.546e-02, -2.931e-03, 2.106e-02, -3.257e-02), r);\n\tr = MulAdd(s3_0, M4(7.144e-03, -1.322e-02, -1.944e-01, -1.612e-02, -4.237e-02, 1.456e-01, -5.996e-02, -2.145e-01, 4.330e-02, -3.849e-02, 8.443e-02, -4.098e-03, 1.960e-03, 5.152e-03, 9.973e-02, 8.078e-02), r);\n\tr = MulAdd(s3_1, M4(1.113e-01, -3.005e-02, 1.199e-01, -4.029e-02, 9.934e-02, -1.540e-01, -3.818e-01, 3.199e-02, -3.314e-02, 3.015e-02, -8.632e-02, 7.195e-02, -8.405e-02, 1.511e-02, -1.364e-01, -4.779e-02), r);\n\tr = MulAdd(s3_2, M4(-7.198e-02, -9.730e-03, -7.659e-02, -9.198e-02, -1.291e-02, -2.118e-02, -7.500e-02, 3.164e-03, -3.136e-02, 2.908e-02, 6.306e-02, -3.065e-03, 1.294e-04, -2.250e-02, 6.295e-02, 1.235e-02), r);\n\tr = MulAdd(s3_3, M4(-3.799e-03, 3.301e-02, 1.588e-01, 2.691e-02, 1.612e-01, 2.476e-01, -6.205e-02, 2.352e-01, 9.168e-02, 7.156e-03, 2.315e-02, -2.909e-02, 3.882e-02, 3.297e-02, -1.062e-01, 9.778e-02), r);\n\tr = MulAdd(s3_4, M4(-1.450e-01, 8.155e-02, 6.351e-02, -7.599e-02, -9.454e-04, -4.971e-01, 1.665e-01, -5.560e-01, -1.282e-01, 1.987e-01, 7.292e-02, 6.917e-02, 2.889e-02, 2.158e-01, 1.941e-01, -1.472e-01), r);\n\tr = MulAdd(s3_5, M4(-6.303e-03, 4.578e-02, 5.086e-02, -1.684e-02, -5.308e-02, 2.573e-01, 6.806e-02, 2.070e-02, 1.006e-01, -1.195e-01, 9.802e-03, -1.123e-01, 1.097e-02, 6.926e-03, 7.695e-02, 1.168e-01), r);\n\tr = MulAdd(s3_6, M4(3.211e-02, -1.982e-02, -2.188e-02, -4.794e-02, 2.477e-02, 3.063e-02, 7.311e-02, -9.376e-02, 6.516e-02, -1.927e-02, 4.276e-02, 7.122e-04, -4.200e-02, 2.947e-02, 8.275e-02, 3.763e-02), r);\n\tr = MulAdd(s3_7, M4(-1.918e-02, -3.916e-03, -6.341e-03, 5.559e-02, 1.027e-01, -7.839e-02, -3.427e-02, 9.477e-03, 1.564e-03, -2.435e-02, -3.752e-02, -4.801e-02, 4.764e-02, -1.354e-01, 1.214e-02, -5.935e-02), r);\n\tr = MulAdd(s3_8, M4(2.244e-02, -2.103e-02, 2.209e-02, -3.679e-02, -1.259e-02, 8.911e-02, -2.068e-02, -8.888e-03, 3.137e-02, -4.821e-02, -2.994e-03, -7.204e-03, -6.453e-02, -7.934e-02, 7.787e-03, -5.808e-03), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -6.201e-03, -2.350e-02, 4.995e-03, 5.325e-03 };\n\tr = MulAdd(s0_0, M4(-1.176e-01, 4.590e-02, -1.097e-03, 9.562e-03, -9.896e-02, -4.315e-02, 5.445e-03, 5.506e-02, -1.072e-01, 2.441e-02, 1.076e-02, -7.966e-02, -1.692e-01, 3.632e-02, 4.413e-03, -4.337e-02), r);\n\tr = MulAdd(s0_1, M4(-1.753e-01, 1.540e-01, 9.123e-02, 1.894e-01, 3.174e-02, 1.360e-01, -9.307e-02, 1.550e-01, -3.076e-01, -7.511e-02, -9.321e-03, 2.660e-01, 1.373e-01, 2.495e-02, 1.941e-01, 2.048e-02), r);\n\tr = MulAdd(s0_2, M4(-7.759e-02, 7.841e-02, -7.251e-02, 2.212e-01, -2.399e-02, -1.360e-02, -1.016e-02, 2.063e-03, 9.256e-03, -1.288e-02, 8.587e-02, -2.566e-02, 9.888e-02, 8.241e-02, -4.956e-02, -1.440e-01), r);\n\tr = MulAdd(s0_3, M4(-1.812e-01, 4.365e-02, 1.120e-01, -1.079e-01, -7.096e-02, 1.734e-01, 5.045e-02, -6.046e-02, 7.682e-02, 2.865e-02, -4.742e-03, -2.903e-02, 1.958e-01, 1.039e-02, -4.816e-02, -6.483e-03), r);\n\tr = MulAdd(s0_4, M4(-2.251e-01, 5.948e-02, 2.301e-01, 3.526e-01, 1.676e-01, 3.284e-01, 7.006e-02, -4.188e-01, -1.429e-01, 4.799e-01, 4.885e-02, 1.954e-01, -1.919e-01, -3.617e-01, -1.317e-01, -1.693e-01), r);\n\tr = MulAdd(s0_5, M4(5.904e-02, 1.668e-01, 2.446e-01, -6.086e-03, 2.400e-02, 6.791e-03, -1.382e-02, 4.357e-02, -6.655e-02, -2.124e-01, -1.177e-01, 7.355e-02, -5.483e-03, -3.423e-02, 2.298e-01, -8.469e-02), r);\n\tr = MulAdd(s0_6, M4(2.939e-03, 4.728e-02, 1.274e-01, -9.988e-02, -6.243e-03, -8.422e-03, 1.984e-02, -1.120e-02, -3.664e-02, 1.984e-02, 5.726e-02, -1.255e-01, 1.866e-02, 3.333e-02, -4.936e-02, 4.108e-02), r);\n\tr = MulAdd(s0_7, M4(-1.240e-02, 1.239e-01, 1.241e-01, 5.387e-02, -1.040e-01, -2.150e-04, -1.027e-02, 1.470e-01, -2.384e-02, -2.690e-02, 2.359e-01, 5.578e-02, 2.181e-02, -2.860e-02, -4.156e-02, 5.233e-03), r);\n\tr = MulAdd(s0_8, M4(-1.985e-02, 1.875e-02, 2.490e-02, 4.427e-02, 1.119e-02, -1.343e-02, -1.967e-02, 2.461e-02, 1.923e-02, -1.645e-02, 8.968e-02, 1.569e-02, 6.168e-02, 8.987e-02, -7.952e-02, -2.058e-02), r);\n\tr = MulAdd(s1_0, M4(-7.795e-02, -3.943e-02, -9.027e-02, 4.130e-02, -4.783e-02, 3.800e-02, -1.264e-01, 3.568e-02, -4.561e-02, -5.500e-03, -3.950e-03, 2.980e-02, 1.306e-02, 4.398e-02, -1.101e-01, 6.269e-02), r);\n\tr = MulAdd(s1_1, M4(7.817e-03, -8.656e-02, -1.610e-01, 1.343e-01, 7.768e-03, 6.015e-02, -2.118e-01, 9.987e-02, -9.086e-02, 3.293e-02, -1.073e-02, 2.126e-02, 9.909e-02, 7.013e-02, -1.638e-02, 1.370e-02), r);\n\tr = MulAdd(s1_2, M4(1.524e-02, 1.213e-01, -2.121e-01, -7.601e-03, -1.088e-03, -7.068e-03, -3.429e-02, -1.854e-02, -1.256e-01, -5.000e-02, -4.249e-03, 6.956e-02, 1.810e-01, 1.228e-01, -1.183e-01, -2.285e-02), r);\n\tr = MulAdd(s1_3, M4(-3.223e-02, -3.501e-02, 5.832e-02, -1.608e-01, 3.728e-01, 5.507e-01, -3.432e-02, -1.058e-01, -5.823e-02, 5.583e-03, 4.258e-02, -4.061e-02, 5.032e-02, -1.031e-02, 6.090e-02, -6.812e-02), r);\n\tr = MulAdd(s1_4, M4(-5.041e-02, -6.582e-01, 1.553e-01, 1.593e-01, 1.460e-01, 2.310e-02, 3.522e-02, -4.788e-01, -1.449e-01, -4.072e-02, 1.242e-01, -1.751e-02, 3.372e-02, -1.114e-01, -5.362e-02, -2.117e-02), r);\n\tr = MulAdd(s1_5, M4(1.978e-01, 2.884e-01, 5.209e-02, -1.751e-01, 3.227e-02, 1.168e-02, -9.727e-03, 4.108e-02, 2.009e-02, 7.821e-02, 2.300e-01, 1.131e-01, 7.034e-02, 5.115e-02, -2.973e-01, 1.802e-01), r);\n\tr = MulAdd(s1_6, M4(1.958e-02, 2.796e-02, 6.192e-02, -5.750e-02, -6.072e-02, 8.721e-02, 4.716e-02, 4.567e-02, -4.567e-02, -2.416e-02, 2.033e-02, -3.503e-02, 3.544e-03, 2.999e-02, -1.305e-02, 3.346e-02), r);\n\tr = MulAdd(s1_7, M4(8.872e-03, 8.004e-02, -7.152e-02, 4.066e-02, -3.603e-02, -9.614e-02, 3.228e-02, 9.803e-03, -6.331e-02, -4.420e-02, 1.642e-01, -1.447e-02, 4.909e-02, 5.909e-02, -8.621e-02, 1.548e-01), r);\n\tr = MulAdd(s1_8, M4(-1.711e-02, 5.139e-02, -7.837e-02, -7.919e-03, -1.636e-02, -4.681e-03, 2.828e-03, 2.137e-02, -1.023e-01, -7.483e-03, 7.474e-02, 1.323e-01, 1.304e-01, 2.446e-02, -9.139e-02, -9.162e-02), r);\n\tr = MulAdd(s2_0, M4(7.268e-02, 3.978e-02, -1.480e-01, 1.105e-01, 1.312e-01, 1.599e-02, -4.579e-02, 9.830e-02, 5.525e-02, -7.153e-02, 4.305e-02, -3.304e-02, -4.484e-02, -7.667e-05, -1.446e-02, 3.995e-03), r);\n\tr = MulAdd(s2_1, M4(1.060e-01, 7.116e-02, -2.697e-01, -2.968e-01, 7.944e-02, -1.363e-03, 7.398e-02, -3.584e-01, -2.039e-02, -3.787e-02, -2.126e-01, 3.468e-02, -3.340e-01, -2.642e-01, -1.053e-01, 4.584e-02), r);\n\tr = MulAdd(s2_2, M4(8.515e-02, 7.926e-02, -1.782e-01, 3.409e-01, -4.535e-02, 6.948e-02, 4.167e-03, -8.690e-02, -1.100e-03, -1.622e-02, -2.110e-02, -4.446e-03, -2.315e-02, 1.463e-03, 4.195e-03, -7.673e-02), r);\n\tr = MulAdd(s2_3, M4(7.574e-02, -6.551e-02, -7.931e-02, 1.847e-02, -1.222e-01, -2.567e-02, 1.781e-02, 6.826e-02, 1.751e-01, 6.480e-02, 9.014e-02, 5.389e-02, -6.614e-02, 1.289e-01, 3.795e-02, 7.552e-02), r);\n\tr = MulAdd(s2_4, M4(1.655e-01, 1.347e-01, -4.840e-02, -4.500e-02, -2.469e-01, -1.613e-02, 9.173e-02, 2.510e-02, 6.241e-01, 9.625e-02, 3.608e-01, -9.156e-02, -3.869e-01, -2.592e-01, 3.916e-01, -2.647e-01), r);\n\tr = MulAdd(s2_5, M4(3.298e-02, 2.479e-01, 9.145e-02, 1.734e-01, 1.213e-02, 3.894e-02, -4.250e-02, 1.374e-01, 1.559e-01, -3.204e-02, -1.421e-01, -2.360e-01, -1.211e-01, -1.204e-02, 1.006e-01, 1.015e-01), r);\n\tr = MulAdd(s2_6, M4(-3.940e-02, -3.056e-02, 9.430e-03, -2.775e-03, -1.404e-03, -5.216e-02, 1.604e-02, -2.766e-02, 3.187e-02, 9.107e-02, -1.513e-01, 1.491e-01, 2.200e-02, -5.174e-03, -4.308e-02, -1.033e-02), r);\n\tr = MulAdd(s2_7, M4(-4.013e-02, 3.924e-02, 3.782e-02, 2.474e-02, 6.905e-02, -1.493e-02, 7.994e-04, -1.260e-01, -3.816e-02, 8.267e-02, -2.321e-01, -4.363e-03, 5.037e-02, -9.344e-02, -3.923e-02, 2.305e-02), r);\n\tr = MulAdd(s2_8, M4(-9.598e-02, 6.235e-02, -3.485e-02, 1.507e-01, 2.140e-02, -1.713e-02, -2.150e-02, 5.550e-03, -7.057e-02, -4.752e-02, -8.683e-02, 9.942e-02, 1.652e-02, -2.513e-03, 6.316e-03, -1.445e-02), r);\n\tr = MulAdd(s3_0, M4(7.494e-03, 6.167e-02, -2.229e-02, 9.588e-02, 2.098e-01, -2.744e-01, -1.121e-01, -1.093e-01, -3.600e-02, 7.007e-03, 6.640e-02, -6.241e-02, -2.350e-02, -2.487e-02, -8.227e-03, -9.150e-02), r);\n\tr = MulAdd(s3_1, M4(3.763e-02, 2.717e-02, 2.647e-01, -3.230e-01, 4.209e-01, 3.723e-01, -1.271e-01, -1.294e-01, -3.973e-02, -2.565e-02, -4.823e-02, 2.920e-01, -3.086e-02, 2.765e-02, -8.713e-02, 1.211e-01), r);\n\tr = MulAdd(s3_2, M4(-8.572e-02, -2.810e-03, -4.112e-02, 1.389e-01, 1.504e-03, -1.636e-03, -4.064e-03, 7.007e-02, -6.103e-02, -9.792e-03, 6.503e-02, -2.098e-02, -1.478e-02, -1.370e-02, 5.957e-02, -2.460e-02), r);\n\tr = MulAdd(s3_3, M4(-7.273e-02, -7.381e-02, -1.120e-02, 2.998e-02, -1.515e-01, 2.393e-02, 1.901e-01, -2.623e-02, 9.012e-02, 3.699e-02, -5.944e-02, 5.235e-02, -4.027e-02, 1.674e-01, -4.495e-03, 3.007e-02), r);\n\tr = MulAdd(s3_4, M4(-1.656e-01, -2.356e-02, -1.028e-01, 1.295e-01, -4.564e-01, -2.254e-01, 2.951e-01, -1.610e-02, 1.831e-01, 2.144e-01, -1.461e-01, -4.598e-02, -2.185e-01, -2.248e-01, 5.653e-01, -4.681e-01), r);\n\tr = MulAdd(s3_5, M4(-4.814e-02, 6.573e-02, 2.865e-02, 1.553e-01, -7.495e-02, -4.398e-02, -1.738e-01, 1.548e-01, -4.272e-03, 3.478e-02, -2.813e-02, -9.149e-02, -7.011e-02, -3.629e-03, 6.780e-02, 8.682e-02), r);\n\tr = MulAdd(s3_6, M4(-4.552e-03, -7.880e-03, 3.240e-02, -4.527e-02, -4.243e-02, -3.649e-02, -3.803e-02, 6.218e-02, 4.543e-03, 1.675e-02, -1.154e-02, 3.727e-03, -6.186e-02, 3.390e-02, 2.030e-02, 3.279e-02), r);\n\tr = MulAdd(s3_7, M4(3.833e-02, -3.550e-04, 4.441e-02, -7.695e-02, 1.958e-01, -5.135e-02, -1.626e-01, -1.099e-01, 7.221e-02, 3.797e-02, -8.113e-02, -1.506e-01, -1.960e-01, 7.023e-02, 4.237e-02, 1.152e-01), r);\n\tr = MulAdd(s3_8, M4(-4.346e-02, -3.773e-03, 6.954e-02, 6.227e-03, 7.212e-02, -4.309e-02, -1.550e-02, -9.249e-02, -1.252e-02, -3.851e-03, -1.582e-02, -2.023e-02, -3.647e-02, 6.547e-02, 5.062e-02, 4.362e-02), r);\n\treturn r;\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 7\n//!DESC conv6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -3.105e-03, 3.230e-03, 4.884e-04, 1.938e-03 };\n\tr = MulAdd(s0_0, M4(-1.952e-02, -2.301e-02, -3.736e-04, -1.581e-02, 7.341e-02, -3.569e-02, 5.963e-03, 1.284e-01, 6.945e-03, 1.208e-02, -2.852e-02, 1.210e-02, -5.234e-02, 3.450e-02, 1.034e-02, 9.300e-04), r);\n\tr = MulAdd(s0_1, M4(-1.048e-01, 4.626e-02, 1.610e-02, -1.378e-02, -1.910e-01, 2.419e-02, 7.012e-01, -2.998e-01, -8.037e-02, -4.437e-02, -3.772e-02, -1.620e-02, -3.646e-01, -2.323e-02, 1.019e-02, 3.517e-02), r);\n\tr = MulAdd(s0_2, M4(-9.399e-02, -3.329e-02, 1.219e-02, -8.421e-03, -3.055e-02, 3.756e-02, 3.237e-02, 1.406e-01, -1.392e-02, -1.962e-02, 1.136e-01, 2.379e-02, -6.186e-03, -4.576e-02, -4.557e-02, -1.548e-01), r);\n\tr = MulAdd(s0_3, M4(1.638e-02, 8.104e-02, -3.369e-02, 2.663e-02, 4.984e-02, 2.547e-01, -3.319e-02, 1.098e-01, -8.594e-03, 4.489e-03, 9.319e-03, -1.642e-02, 3.309e-02, -2.018e-02, -4.158e-03, -2.341e-02), r);\n\tr = MulAdd(s0_4, M4(4.271e-02, -2.245e-01, 5.310e-02, -1.032e-01, 2.033e-02, -5.645e-01, -1.033e-01, -1.308e-01, 1.039e-01, -5.559e-02, 2.827e-02, -1.009e-01, 3.317e-01, -1.548e-01, -6.898e-02, -2.608e-01), r);\n\tr = MulAdd(s0_5, M4(5.093e-02, 1.337e-01, 2.877e-02, 1.042e-01, -1.935e-02, 5.340e-02, 3.398e-02, -1.656e-02, 1.024e-02, 2.018e-01, -5.609e-02, 2.052e-01, -1.878e-02, -1.618e-01, 3.110e-02, -1.025e-01), r);\n\tr = MulAdd(s0_6, M4(-1.982e-03, -4.609e-02, 2.637e-02, -9.266e-03, 2.498e-04, 2.218e-02, -1.013e-02, 2.184e-02, 5.965e-03, 1.045e-02, 1.644e-03, 2.716e-02, 3.749e-03, -3.710e-02, -1.464e-02, -1.227e-02), r);\n\tr = MulAdd(s0_7, M4(-1.146e-02, -3.264e-03, -1.180e-02, -2.658e-02, -2.606e-02, -3.221e-02, -1.237e-02, -2.961e-02, 9.372e-03, -4.673e-02, -5.785e-04, -4.285e-02, 1.433e-03, -7.620e-02, -2.407e-03, 2.959e-02), r);\n\tr = MulAdd(s0_8, M4(-3.948e-04, 6.024e-02, 9.655e-04, 2.124e-02, -1.357e-02, -2.965e-02, -1.354e-03, -6.947e-03, 3.782e-02, 4.020e-02, -2.875e-02, 3.749e-02, -5.428e-03, -3.603e-02, -3.256e-02, -2.771e-02), r);\n\tr = MulAdd(s1_0, M4(3.111e-03, -4.528e-02, 2.406e-02, -3.269e-02, 2.000e-02, -5.895e-02, 3.012e-02, -2.212e-02, 1.071e-01, 1.928e-02, -3.492e-02, 1.053e-01, -6.362e-02, 4.470e-02, 2.578e-02, -1.040e-02), r);\n\tr = MulAdd(s1_1, M4(1.134e-01, 6.078e-02, -4.550e-03, -7.141e-03, -1.449e-01, 7.662e-02, 1.104e-01, -3.543e-02, 4.676e-01, 1.248e-02, -3.675e-01, -1.655e-01, 7.049e-02, 2.875e-02, -3.009e-02, 9.027e-02), r);\n\tr = MulAdd(s1_2, M4(-5.208e-02, -3.105e-02, -3.721e-02, 1.006e-01, -3.864e-02, 2.810e-02, 1.604e-02, 8.082e-02, 8.273e-02, 7.069e-02, -2.601e-02, 8.756e-02, -2.213e-02, -3.431e-02, -3.394e-02, -4.138e-02), r);\n\tr = MulAdd(s1_3, M4(6.901e-02, -1.813e-02, -6.033e-02, -5.048e-02, 1.642e-02, 6.266e-02, -4.282e-02, 2.908e-02, -5.339e-02, 2.241e-02, -7.009e-02, -2.048e-02, 5.016e-02, 1.243e-02, -2.653e-02, 8.097e-02), r);\n\tr = MulAdd(s1_4, M4(-8.214e-03, -6.216e-02, 3.436e-02, 3.719e-02, 1.412e-01, -1.256e-01, -9.253e-02, 1.326e-01, 8.852e-01, -4.551e-02, -7.485e-01, -1.673e-01, -9.588e-03, -1.411e-01, -4.338e-02, -4.232e-01), r);\n\tr = MulAdd(s1_5, M4(7.913e-02, 5.560e-01, 9.992e-02, 5.410e-01, -1.700e-03, -1.288e-02, -3.230e-02, -8.186e-02, 1.255e-01, 4.736e-02, -5.084e-01, 7.951e-02, 1.181e-01, -8.278e-02, 3.674e-02, -1.468e-01), r);\n\tr = MulAdd(s1_6, M4(-6.616e-03, -4.503e-02, 2.533e-02, -1.964e-02, -8.381e-03, -6.342e-03, 6.659e-03, -1.064e-02, 4.090e-02, 7.180e-02, 5.233e-02, 5.864e-03, -1.308e-03, 5.536e-03, -2.743e-03, -1.219e-02), r);\n\tr = MulAdd(s1_7, M4(2.071e-02, 7.370e-02, 2.681e-04, 9.920e-03, -2.067e-02, 1.362e-01, 1.855e-02, 5.200e-04, 3.511e-01, -2.001e-01, -1.940e-01, 9.383e-02, -3.934e-02, -1.915e-01, 2.669e-02, 1.094e-02), r);\n\tr = MulAdd(s1_8, M4(-2.372e-02, 1.062e-01, -1.496e-02, 1.175e-02, -1.135e-02, 6.667e-03, 3.389e-03, 1.929e-02, -1.125e-02, 1.674e-01, -3.336e-02, -6.202e-02, 6.653e-03, 1.235e-02, -1.633e-02, 5.038e-02), r);\n\tr = MulAdd(s2_0, M4(-3.964e-02, -3.119e-03, -9.673e-03, -6.366e-03, 8.531e-02, -3.670e-02, -5.924e-03, 1.261e-02, -6.665e-02, -1.278e-02, -1.696e-02, -2.727e-02, -3.882e-02, 1.510e-03, 2.840e-02, -1.340e-02), r);\n\tr = MulAdd(s2_1, M4(-1.639e-01, -1.744e-02, -5.910e-03, -1.800e-02, 4.918e-02, 2.777e-02, 4.527e-02, -1.255e-01, -1.224e-01, -4.651e-02, 3.581e-02, -2.700e-03, -6.049e-02, 2.921e-02, 4.759e-02, -3.412e-03), r);\n\tr = MulAdd(s2_2, M4(-1.017e-01, 3.087e-02, 4.443e-01, 7.643e-02, -5.113e-02, 3.162e-02, -2.544e-02, 1.116e-01, 2.750e-03, 6.519e-02, -1.121e-02, 5.005e-02, -6.372e-02, -2.334e-02, 6.144e-02, 6.538e-02), r);\n\tr = MulAdd(s2_3, M4(2.036e-01, -2.519e-02, -1.132e-02, -6.775e-02, -1.205e-02, 2.868e-02, -1.777e-02, -1.051e-02, 7.531e-02, -8.572e-02, 5.924e-02, -8.820e-02, 1.963e-01, -4.408e-02, -4.202e-02, -4.132e-02), r);\n\tr = MulAdd(s2_4, M4(-4.319e-01, 2.154e-02, 4.534e-01, 1.691e-02, -5.194e-02, 8.830e-03, 4.441e-02, 2.165e-01, -4.723e-02, 2.877e-01, 2.503e-02, 2.071e-01, 2.739e-01, 1.595e-01, -1.141e-01, 4.121e-01), r);\n\tr = MulAdd(s2_5, M4(3.627e-01, 8.034e-02, 2.531e-01, 1.357e-01, -5.579e-03, -5.171e-02, 4.784e-02, -1.580e-01, -1.597e-03, -2.143e-02, 1.145e-02, -2.409e-02, 1.135e-01, 1.942e-02, -2.637e-02, -1.371e-01), r);\n\tr = MulAdd(s2_6, M4(5.398e-02, 8.680e-03, 1.624e-02, -2.777e-02, -1.992e-02, 9.359e-03, 2.106e-02, 1.651e-02, -3.371e-02, -3.989e-02, 2.268e-02, -1.706e-02, 7.451e-03, -3.325e-02, -2.215e-02, -1.584e-02), r);\n\tr = MulAdd(s2_7, M4(1.898e-02, -7.606e-02, -8.297e-02, 5.946e-03, -2.822e-02, 1.434e-02, 6.815e-03, -7.690e-02, -2.483e-02, 1.220e-02, 2.584e-02, -1.723e-02, -1.801e-02, 2.864e-01, 2.826e-02, -1.121e-02), r);\n\tr = MulAdd(s2_8, M4(5.351e-02, 1.077e-01, -6.458e-02, 6.860e-02, -1.110e-02, 3.929e-02, 1.543e-02, 6.122e-02, -8.551e-03, 4.159e-02, 2.833e-03, 3.752e-02, 2.189e-02, 2.252e-04, -1.454e-02, 8.179e-02), r);\n\tr = MulAdd(s3_0, M4(-1.542e-02, -7.969e-03, -1.764e-02, 1.333e-02, 1.272e-01, -2.018e-02, -1.554e-02, 1.398e-02, -6.583e-02, 4.630e-02, -5.456e-02, -5.594e-02, -1.606e-01, -2.573e-02, 4.592e-02, -4.465e-02), r);\n\tr = MulAdd(s3_1, M4(-4.177e-02, -3.885e-02, -5.615e-02, -3.797e-02, -5.923e-02, -2.316e-02, 1.191e-02, -1.548e-01, -6.239e-01, -8.157e-02, 1.527e-01, 8.326e-02, -2.888e-01, -6.520e-02, 3.209e-02, 1.560e-02), r);\n\tr = MulAdd(s3_2, M4(-2.764e-03, 2.741e-02, 5.627e-02, 1.597e-02, 1.443e-02, 4.968e-02, 1.132e-02, 9.153e-02, -5.382e-03, -1.644e-02, 5.247e-03, 3.311e-02, -4.528e-02, 2.605e-02, 4.794e-02, 7.640e-02), r);\n\tr = MulAdd(s3_3, M4(2.045e-02, -1.614e-03, 2.289e-03, -4.305e-02, -1.017e-01, 5.861e-02, -1.314e-02, 2.477e-02, -1.999e-01, -1.155e-01, 1.294e-01, -2.392e-02, 1.875e-01, 2.845e-02, -3.870e-02, 5.380e-02), r);\n\tr = MulAdd(s3_4, M4(5.933e-02, -1.103e-02, 7.176e-02, -3.689e-02, 5.613e-02, -3.270e-01, 3.240e-02, -2.858e-01, -1.259e+00, 2.597e-01, 3.525e-01, 1.430e-02, 1.284e-01, 8.753e-02, 7.569e-02, -5.311e-02), r);\n\tr = MulAdd(s3_5, M4(2.279e-02, 1.895e-01, -6.586e-02, 1.515e-01, -2.923e-02, -1.046e-01, 7.716e-03, -1.229e-01, 2.289e-02, -7.755e-02, 1.265e-01, 8.574e-02, 1.189e-02, 6.164e-02, -7.733e-03, 5.218e-03), r);\n\tr = MulAdd(s3_6, M4(-8.498e-03, -3.724e-02, 2.832e-02, -7.279e-03, -3.663e-02, 2.402e-02, 2.821e-02, 1.569e-02, 2.319e-02, 2.036e-02, 2.252e-02, -1.611e-02, 9.843e-03, -3.099e-02, 3.160e-03, -5.084e-02), r);\n\tr = MulAdd(s3_7, M4(-2.465e-02, 1.290e-02, 2.281e-02, -5.200e-04, -6.553e-02, -1.768e-01, 9.698e-03, -6.422e-02, -1.386e-02, -1.391e-01, -5.888e-02, 5.580e-03, 2.841e-02, 2.990e-02, -5.399e-02, 5.650e-03), r);\n\tr = MulAdd(s3_8, M4(-4.902e-03, 9.385e-03, -8.622e-03, 1.815e-02, -8.117e-03, 4.919e-02, 1.259e-02, 4.528e-02, 2.606e-02, 4.409e-02, -1.766e-02, 1.950e-02, -1.739e-02, 7.717e-03, -1.473e-02, -1.569e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 4.076e-03, -1.858e-02, 9.260e-03, 6.390e-04 };\n\tr = MulAdd(s0_0, M4(-9.510e-02, 5.523e-03, -5.580e-02, -3.107e-02, 2.588e-02, -3.076e-02, 4.525e-02, 2.069e-02, 1.302e-01, 1.260e-02, 3.877e-02, -1.878e-02, -1.553e-01, -3.705e-02, 2.666e-02, -1.631e-02), r);\n\tr = MulAdd(s0_1, M4(1.518e-01, 5.025e-04, 1.008e-01, 2.029e-02, -1.343e-01, 1.633e-01, 3.819e-01, 6.217e-03, -7.098e-02, 2.839e-02, 1.971e-02, -4.067e-02, -7.846e-02, -2.545e-01, 1.126e-01, 1.475e-02), r);\n\tr = MulAdd(s0_2, M4(-6.206e-02, -4.029e-02, 2.049e-02, -1.331e-02, 4.682e-02, 3.132e-03, 1.294e-01, -3.039e-02, 5.065e-02, -2.711e-03, 7.522e-02, 1.499e-01, 1.383e-03, -2.086e-02, -5.117e-02, -8.129e-02), r);\n\tr = MulAdd(s0_3, M4(-7.973e-02, 2.775e-02, -1.490e-02, -7.830e-02, 8.944e-02, -7.283e-02, 1.841e-01, -4.484e-02, -3.632e-02, 1.255e-02, 3.882e-02, -2.862e-02, -2.390e-01, -2.774e-02, 6.677e-02, 1.939e-02), r);\n\tr = MulAdd(s0_4, M4(2.243e-01, 8.911e-02, -1.718e-01, 1.485e-01, 9.759e-02, 2.321e-01, -4.390e-01, 2.092e-01, 4.278e-02, 1.205e-01, -1.966e-01, 2.130e-02, -2.223e-01, 3.818e-01, -5.426e-01, -3.762e-01), r);\n\tr = MulAdd(s0_5, M4(-2.560e-02, -7.789e-02, -1.339e-01, 4.073e-02, -4.376e-03, -1.462e-01, -2.860e-02, 1.660e-01, -3.137e-02, 2.393e-01, 2.252e-02, 5.165e-02, 6.906e-02, -1.712e-02, 3.349e-02, -3.350e-01), r);\n\tr = MulAdd(s0_6, M4(3.665e-03, 8.648e-02, -5.364e-02, 3.068e-02, -2.822e-02, -7.398e-02, 5.950e-03, 6.154e-03, 1.010e-02, 1.587e-02, -7.437e-03, 1.494e-02, 6.585e-02, 4.852e-02, 1.699e-02, -2.453e-02), r);\n\tr = MulAdd(s0_7, M4(-6.942e-02, -1.231e-01, 1.254e-01, -7.903e-03, 1.278e-02, -4.337e-02, 1.014e-01, -3.921e-02, 3.086e-02, 8.863e-02, 3.278e-03, -1.790e-02, -4.250e-02, -6.413e-02, 6.324e-02, 9.679e-02), r);\n\tr = MulAdd(s0_8, M4(-4.634e-02, 3.222e-03, 3.770e-02, -6.919e-02, 6.432e-03, 3.093e-02, -1.804e-02, -3.677e-02, 1.142e-03, 5.227e-02, -1.075e-01, 1.375e-01, 1.826e-02, 1.763e-02, 4.677e-02, -2.110e-02), r);\n\tr = MulAdd(s1_0, M4(-1.817e-02, 1.265e-02, -2.043e-02, 1.326e-02, -1.695e-01, 1.255e-01, -8.576e-02, 7.959e-03, 7.193e-02, 7.724e-02, -4.627e-02, -2.431e-02, -1.319e-01, -5.651e-02, 5.140e-02, 1.678e-02), r);\n\tr = MulAdd(s1_1, M4(3.337e-02, 4.582e-02, -2.165e-02, 9.076e-03, -4.945e-02, -8.773e-03, 9.112e-02, 1.320e-01, 3.413e-02, 3.273e-01, -2.814e-01, 1.595e-02, 1.343e-01, -6.513e-02, 4.512e-02, -8.970e-02), r);\n\tr = MulAdd(s1_2, M4(3.505e-02, 2.270e-02, 7.114e-02, 1.198e-01, 3.787e-02, 1.018e-02, 6.472e-02, -2.210e-02, 2.939e-02, 8.307e-02, 2.993e-03, 1.123e-01, -9.273e-02, 2.409e-02, -4.903e-02, -4.636e-02), r);\n\tr = MulAdd(s1_3, M4(-4.843e-02, -6.013e-02, 2.715e-02, -9.149e-03, 1.452e-01, 3.518e-02, 7.180e-02, 3.286e-03, -2.588e-01, -1.638e-01, 1.521e-01, -1.203e-02, -2.689e-01, 4.285e-02, -1.837e-01, -5.794e-03), r);\n\tr = MulAdd(s1_4, M4(2.749e-01, -3.031e-01, 1.152e-01, -7.245e-02, 9.716e-02, 8.837e-02, -3.117e-01, 5.664e-02, -1.557e-01, 3.682e-01, 1.259e-01, 3.908e-02, -8.916e-02, 2.177e-01, 1.254e-01, -2.862e-01), r);\n\tr = MulAdd(s1_5, M4(3.740e-02, 1.899e-01, -9.864e-02, 6.740e-01, -8.316e-03, 1.469e-02, -4.439e-02, 2.380e-02, 1.310e-02, 2.651e-01, -3.290e-02, -4.670e-02, -3.505e-02, -1.649e-01, -2.098e-01, 1.243e-01), r);\n\tr = MulAdd(s1_6, M4(-3.589e-02, 2.351e-02, -2.010e-02, 1.626e-02, -4.976e-02, -8.924e-02, -1.295e-03, 2.366e-02, -1.079e-02, 9.095e-02, -5.359e-02, -2.689e-02, 1.871e-02, -4.332e-03, -3.191e-02, -2.244e-02), r);\n\tr = MulAdd(s1_7, M4(-4.806e-02, 1.472e-02, 6.391e-02, -5.629e-03, 3.986e-02, -8.815e-02, 1.416e-01, -6.209e-02, -2.343e-03, 3.541e-01, -7.232e-02, 1.099e-01, 2.329e-03, 7.972e-02, -7.797e-02, 1.009e-02), r);\n\tr = MulAdd(s1_8, M4(-1.305e-02, -6.657e-02, 4.004e-02, 3.393e-03, 1.116e-02, 4.225e-03, -1.438e-02, -1.464e-02, 6.804e-02, -1.095e-02, -1.145e-01, 2.725e-01, -2.005e-02, 6.875e-02, 7.349e-02, 1.354e-02), r);\n\tr = MulAdd(s2_0, M4(5.085e-02, 3.046e-02, -8.986e-03, -1.066e-02, -6.250e-02, 6.891e-02, -9.668e-02, 1.813e-02, 1.333e-01, -6.920e-02, 4.096e-02, -2.500e-02, -1.387e-01, -3.212e-02, -7.621e-03, 5.839e-03), r);\n\tr = MulAdd(s2_1, M4(-6.667e-02, 1.181e-02, 7.953e-02, 7.288e-02, 2.128e-02, 2.170e-01, -3.280e-02, 5.377e-02, 6.852e-03, -7.527e-03, 9.964e-02, 7.642e-02, 3.760e-02, -4.753e-02, 7.111e-02, -1.569e-02), r);\n\tr = MulAdd(s2_2, M4(2.790e-02, 3.059e-02, 2.660e-01, 1.046e-01, 2.424e-02, -2.548e-02, 3.858e-02, 2.470e-02, -1.736e-03, 1.112e-03, 6.293e-03, -3.455e-02, 5.024e-03, -3.655e-02, 7.447e-02, 3.024e-02), r);\n\tr = MulAdd(s2_3, M4(-8.148e-02, 1.468e-01, -2.009e-02, 6.602e-02, 1.842e-02, -2.225e-01, 2.157e-01, -1.562e-02, -1.049e-01, 9.012e-02, -3.863e-02, 7.084e-02, -7.823e-02, 8.032e-03, 4.661e-02, 1.247e-01), r);\n\tr = MulAdd(s2_4, M4(2.322e-01, 6.905e-02, -6.217e-01, -2.876e-01, 2.005e-01, -8.268e-01, 1.071e-02, -1.958e-01, 1.116e-01, 1.250e-01, -5.871e-02, -1.294e-01, 3.019e-01, 3.933e-01, 3.487e-01, -2.436e-01), r);\n\tr = MulAdd(s2_5, M4(-9.753e-02, 6.593e-02, -2.563e-01, 2.381e-01, 4.691e-02, 1.796e-01, 1.375e-03, -3.460e-02, -3.481e-02, -2.220e-02, 3.476e-03, 9.687e-02, -4.415e-02, 1.811e-01, -1.381e-01, -6.685e-02), r);\n\tr = MulAdd(s2_6, M4(-1.212e-03, 4.823e-02, -1.680e-03, 1.062e-02, -3.830e-02, -5.797e-02, 1.147e-02, 2.973e-02, 1.650e-02, -2.618e-02, 5.139e-02, 1.433e-02, -1.063e-01, -2.012e-01, 1.667e-01, 3.318e-02), r);\n\tr = MulAdd(s2_7, M4(-2.061e-02, 5.721e-02, 4.963e-02, 3.164e-02, 1.512e-02, -4.045e-02, 1.890e-01, -3.224e-02, -2.952e-02, -1.150e-01, 3.362e-02, -3.598e-03, 2.868e-02, -2.058e-01, 2.494e-01, -1.499e-01), r);\n\tr = MulAdd(s2_8, M4(-3.157e-02, -1.385e-01, 1.396e-02, 6.336e-02, -2.137e-02, -9.049e-02, 1.104e-02, -3.260e-03, 2.508e-03, -4.677e-02, -1.825e-02, -3.115e-03, -3.979e-02, -1.426e-01, 2.571e-02, 1.175e-01), r);\n\tr = MulAdd(s3_0, M4(1.485e-01, -6.051e-03, 3.529e-02, -2.369e-02, -2.982e-01, 1.121e-01, -1.680e-01, -2.738e-02, 1.186e-01, -8.329e-02, 5.089e-02, -2.131e-02, 1.111e-01, -4.026e-02, 9.861e-02, -2.885e-02), r);\n\tr = MulAdd(s3_1, M4(-1.694e-01, 2.375e-02, -3.937e-02, -3.478e-02, 2.193e-02, 7.665e-02, -5.437e-02, 4.724e-02, -6.213e-02, -4.031e-01, 1.861e-01, 9.586e-03, -4.383e-02, -1.106e-01, 1.108e-01, 4.909e-02), r);\n\tr = MulAdd(s3_2, M4(6.812e-02, -2.311e-02, 5.210e-02, 9.546e-02, 2.433e-02, 3.416e-02, 2.978e-02, 2.772e-02, -5.155e-03, -2.713e-02, 2.212e-02, -6.056e-03, 5.356e-02, -5.571e-02, 7.526e-02, 6.467e-02), r);\n\tr = MulAdd(s3_3, M4(-1.633e-01, -2.742e-02, -7.204e-03, -8.113e-03, -2.917e-01, -1.351e-01, 5.153e-02, -8.188e-02, -1.977e-01, -1.460e-01, -1.173e-01, -1.349e-02, 7.836e-02, 1.091e-01, -5.539e-02, 9.694e-02), r);\n\tr = MulAdd(s3_4, M4(2.165e-01, 1.383e-01, -1.362e-01, 8.388e-02, 9.544e-02, -4.350e-01, -3.249e-01, 1.559e-01, 1.919e-01, -4.631e-01, -4.345e-01, -3.247e-01, 7.224e-02, 2.959e-01, -2.107e-01, -2.463e-01), r);\n\tr = MulAdd(s3_5, M4(-4.089e-02, 2.202e-01, 6.955e-02, -1.248e-01, 1.140e-02, -7.158e-03, -3.404e-02, 1.370e-01, -4.043e-03, -7.008e-02, 7.084e-02, 8.809e-02, 1.570e-02, 6.716e-02, -9.100e-04, -1.166e-02), r);\n\tr = MulAdd(s3_6, M4(2.194e-02, 6.765e-02, -9.062e-03, 1.480e-02, 1.792e-02, 4.489e-02, -1.333e-02, 3.524e-02, 3.035e-02, 1.197e-01, -5.057e-02, -2.569e-03, -5.396e-02, -3.068e-02, 3.150e-02, -3.015e-02), r);\n\tr = MulAdd(s3_7, M4(-7.630e-02, -1.487e-01, 1.509e-01, -2.381e-02, 2.594e-02, -2.307e-02, 1.260e-01, -3.836e-02, -2.424e-02, 3.167e-02, 3.592e-03, 8.270e-02, -5.491e-02, -1.358e-01, 9.294e-02, 2.589e-02), r);\n\tr = MulAdd(s3_8, M4(-4.926e-04, -1.151e-01, -4.633e-02, 5.883e-02, -5.406e-03, 1.852e-02, -2.089e-02, -5.929e-02, -1.291e-02, -2.909e-02, -1.351e-02, -1.849e-02, -1.130e-02, -7.846e-02, -9.407e-03, -1.708e-02), r);\n\treturn r;\n}\n\nvoid Pass7(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 8\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0, t1\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 6.897e-04, 1.064e-03, 8.808e-04, 1.561e-03 };\n\tr = MulAdd(s0_0, M4(1.911e-02, 7.153e-03, -2.976e-04, -7.179e-03, -1.377e-02, -6.451e-03, 2.290e-02, -1.537e-02, 2.230e-02, 1.335e-02, -2.970e-03, -1.058e-02, 2.051e-02, 6.362e-03, -2.487e-02, -6.941e-04), r);\n\tr = MulAdd(s0_1, M4(-2.149e-02, 8.997e-03, 5.809e-02, 4.138e-02, -3.275e-02, -2.813e-02, 1.701e-02, -8.705e-03, 2.320e-02, 9.248e-03, -3.233e-02, -6.138e-03, 4.763e-02, 2.689e-02, -5.537e-02, -2.760e-02), r);\n\tr = MulAdd(s0_2, M4(-1.414e-02, -3.483e-02, -7.279e-03, 1.521e-02, -8.604e-03, -5.970e-02, -3.428e-02, -1.553e-02, 3.362e-03, 3.209e-02, 2.829e-03, -1.605e-02, 1.413e-02, 6.860e-02, 3.001e-02, -1.223e-03), r);\n\tr = MulAdd(s0_3, M4(-6.645e-02, -8.320e-03, 4.523e-02, 5.457e-02, 1.400e-02, 3.198e-02, 1.427e-02, 1.483e-02, -1.421e-01, -2.657e-02, 4.797e-02, 7.217e-02, -3.955e-02, -3.721e-02, 2.393e-02, 2.795e-02), r);\n\tr = MulAdd(s0_4, M4(-1.653e-02, -1.199e-01, -4.775e-01, -3.048e-01, 5.775e-02, -2.554e-02, 1.568e-01, 3.992e-02, -1.368e-01, -2.363e-01, -5.499e-02, -1.315e-01, -2.829e-02, 1.148e-02, -4.298e-02, -2.297e-02), r);\n\tr = MulAdd(s0_5, M4(2.388e-02, 9.640e-02, -6.766e-04, -1.894e-01, -1.938e-02, -1.417e-02, -6.162e-03, 1.409e-02, 1.217e-02, -8.992e-03, 2.264e-02, 8.724e-02, 7.060e-03, 1.580e-02, 1.648e-02, 4.897e-02), r);\n\tr = MulAdd(s0_6, M4(7.503e-03, -2.970e-03, -5.068e-03, -1.602e-02, 1.288e-02, 9.609e-03, -1.090e-02, 1.443e-03, -1.047e-02, 1.581e-02, -7.625e-03, -7.056e-02, -2.884e-02, -3.020e-02, -2.549e-02, -4.848e-02), r);\n\tr = MulAdd(s0_7, M4(2.075e-02, 1.442e-02, 4.774e-02, 2.273e-02, 1.258e-02, 1.637e-02, -7.148e-02, -5.842e-02, 1.055e-02, -3.364e-02, 1.822e-01, 2.194e-01, -2.953e-02, -2.531e-02, 4.235e-02, 4.981e-02), r);\n\tr = MulAdd(s0_8, M4(-6.428e-03, 9.970e-03, 1.333e-02, 5.654e-02, -9.648e-03, 2.059e-04, -1.464e-02, -3.448e-02, 3.807e-03, 1.338e-02, -2.262e-02, -1.434e-02, 6.271e-03, -9.572e-03, 6.071e-03, 1.341e-02), r);\n\tr = MulAdd(s1_0, M4(1.419e-02, 5.825e-03, 3.581e-03, -2.137e-03, 2.863e-03, 7.173e-03, 4.501e-02, -2.820e-02, 3.248e-02, -7.079e-03, 1.837e-02, 2.565e-02, 1.775e-02, 1.246e-02, -3.047e-02, 1.125e-02), r);\n\tr = MulAdd(s1_1, M4(-4.685e-02, 1.148e-03, 7.450e-02, 5.961e-02, -7.743e-02, -1.134e-02, -2.803e-02, -8.041e-03, 1.388e-01, 1.785e-01, -2.667e-02, -3.292e-02, 2.367e-02, 1.317e-02, -5.723e-02, 6.215e-03), r);\n\tr = MulAdd(s1_2, M4(-9.482e-03, -5.237e-02, -5.906e-04, 2.193e-02, 2.896e-03, -6.707e-02, -9.075e-03, -1.458e-02, -4.769e-05, 2.592e-02, 1.115e-02, -9.638e-03, 2.494e-02, 7.106e-02, 2.839e-02, 5.956e-03), r);\n\tr = MulAdd(s1_3, M4(-6.437e-02, -4.261e-03, 6.120e-02, 6.179e-02, 3.619e-02, 6.905e-02, -7.007e-02, -9.677e-02, 1.439e-02, -5.513e-02, -1.084e-01, 9.009e-02, -2.376e-01, -7.979e-02, -7.095e-03, 8.423e-02), r);\n\tr = MulAdd(s1_4, M4(-3.465e-02, -1.174e-01, -4.971e-01, -2.725e-01, -1.110e-01, -2.241e-01, -1.919e-01, 1.115e+00, 1.600e-01, 1.870e-01, -3.286e-01, -5.513e-01, -4.899e-01, 9.921e-01, -1.312e-01, -2.666e-01), r);\n\tr = MulAdd(s1_5, M4(6.483e-03, 4.674e-02, 1.070e-02, -2.163e-01, -4.141e-03, -2.429e-02, 4.874e-02, -1.576e-01, -3.007e-02, 2.606e-02, 4.476e-02, 6.729e-02, 5.863e-02, -6.616e-02, 7.878e-03, 9.787e-02), r);\n\tr = MulAdd(s1_6, M4(2.207e-02, 5.671e-03, 2.283e-03, -1.648e-02, 5.681e-03, -1.943e-03, 1.594e-02, 2.148e-02, -3.016e-02, 3.046e-04, 4.328e-02, -4.072e-02, -1.499e-02, -6.713e-03, -8.285e-02, 1.440e-03), r);\n\tr = MulAdd(s1_7, M4(-4.522e-02, -1.953e-02, 3.004e-01, 1.255e-01, 6.459e-03, 3.954e-02, -1.323e-01, -1.315e-01, -1.715e-02, -5.240e-02, 1.653e-01, 2.243e-01, -2.645e-02, -2.654e-02, 3.446e-02, 1.267e-02), r);\n\tr = MulAdd(s1_8, M4(1.441e-02, 2.868e-03, 4.941e-02, 2.607e-01, -5.114e-03, -6.024e-03, 3.945e-03, -4.669e-02, 6.142e-03, 4.197e-03, -4.871e-03, 2.252e-04, 1.890e-02, 1.142e-02, -1.040e-02, 7.153e-02), r);\n\tr = MulAdd(s2_0, M4(4.156e-03, 3.821e-03, -1.529e-03, 2.462e-03, -2.837e-02, -1.254e-02, -1.678e-02, -5.421e-03, -8.727e-03, -8.809e-03, -3.158e-02, -2.025e-02, -1.411e-02, 7.584e-03, 8.450e-02, 4.221e-02), r);\n\tr = MulAdd(s2_1, M4(1.418e-02, -7.004e-03, -2.935e-02, -2.645e-02, -1.518e-02, -3.918e-02, -6.617e-02, -5.273e-02, -9.888e-02, -1.090e-02, 1.380e-01, 7.376e-02, -1.161e-02, -1.487e-02, 2.550e-02, 6.274e-02), r);\n\tr = MulAdd(s2_2, M4(5.309e-03, 2.695e-02, 1.267e-02, -3.495e-03, 9.392e-03, 2.603e-02, 2.278e-02, 3.305e-03, -1.302e-02, -1.123e-01, -1.547e-02, 3.941e-02, 1.298e-03, -1.396e-02, 1.964e-03, 7.526e-03), r);\n\tr = MulAdd(s2_3, M4(-1.822e-02, 8.636e-03, 8.368e-03, 1.102e-02, 6.230e-02, -2.289e-02, -1.296e-02, -1.681e-02, 4.747e-02, -1.882e-02, 9.110e-03, -1.084e-02, -2.726e-02, -2.000e-02, -1.814e-01, -7.070e-02), r);\n\tr = MulAdd(s2_4, M4(-4.428e-02, -6.799e-02, -5.391e-03, -2.368e-02, 3.822e-01, 3.324e-01, 2.766e-01, 1.771e-01, 1.929e-01, 2.418e-01, -2.039e-01, 5.701e-03, 1.467e-01, 4.835e-02, 1.470e-01, -7.146e-02), r);\n\tr = MulAdd(s2_5, M4(-9.316e-03, -2.872e-03, 7.287e-03, 5.032e-02, -2.617e-02, 9.548e-02, -3.550e-02, 9.550e-02, -4.338e-02, -2.402e-02, -4.187e-02, -2.445e-01, -5.388e-03, 3.789e-02, -2.563e-02, 2.686e-02), r);\n\tr = MulAdd(s2_6, M4(9.817e-03, 4.676e-03, -6.399e-03, 7.844e-03, -1.019e-02, -8.003e-04, 5.167e-02, 1.419e-02, -9.988e-03, -2.480e-03, 2.983e-02, -6.955e-03, -4.089e-02, -1.849e-02, -3.747e-02, -2.679e-02), r);\n\tr = MulAdd(s2_7, M4(3.122e-02, 1.641e-02, 5.238e-02, -1.886e-03, -1.368e-02, -1.047e-02, 4.063e-02, 8.081e-02, -2.436e-02, -1.314e-02, 7.406e-02, 1.255e-01, 1.328e-03, -1.480e-02, -2.203e-02, -6.794e-03), r);\n\tr = MulAdd(s2_8, M4(-1.214e-02, 3.663e-02, -5.298e-02, 4.172e-02, -1.636e-03, -1.193e-02, 1.591e-02, 1.546e-02, -4.897e-03, -2.570e-02, 1.029e-02, -1.321e-02, 1.692e-03, -4.016e-03, 1.854e-02, -2.154e-02), r);\n\tr = MulAdd(s3_0, M4(1.653e-02, 8.081e-04, -8.249e-04, -2.749e-03, -4.287e-02, -1.117e-02, -1.953e-02, -1.392e-02, -9.860e-03, -1.139e-02, -3.431e-02, -2.482e-02, 2.073e-03, 2.388e-02, 8.476e-02, 5.234e-02), r);\n\tr = MulAdd(s3_1, M4(1.545e-02, 2.697e-03, -2.547e-02, -1.587e-02, 2.739e-02, -5.155e-02, -8.569e-02, -6.176e-02, -4.554e-02, -2.669e-02, 1.469e-01, 7.837e-02, -3.883e-02, -1.063e-02, 3.383e-02, 7.495e-02), r);\n\tr = MulAdd(s3_2, M4(1.549e-02, -4.319e-03, 3.554e-02, -1.405e-02, 3.542e-03, 5.563e-02, 1.556e-02, -6.819e-03, -2.139e-02, -4.968e-02, -2.142e-02, 3.475e-02, -1.378e-02, -3.919e-02, -8.013e-03, -5.496e-03), r);\n\tr = MulAdd(s3_3, M4(-3.531e-03, 9.257e-03, 1.262e-02, 4.105e-03, 4.193e-02, -2.331e-02, -2.424e-02, -2.262e-02, 5.437e-02, -3.147e-02, 2.348e-02, -2.547e-02, -1.490e-01, 2.063e-02, -1.968e-01, -2.503e-02), r);\n\tr = MulAdd(s3_4, M4(-6.533e-02, -2.179e-02, 2.316e-02, -8.762e-03, 2.356e-01, 2.350e-01, 3.014e-01, 1.560e-01, 2.691e-01, 3.561e-01, -4.286e-01, -1.469e-01, 5.332e-01, -3.363e-01, 2.388e-01, -2.940e-01), r);\n\tr = MulAdd(s3_5, M4(3.350e-01, -2.028e-01, -8.521e-02, -1.395e-02, -4.912e-02, 1.973e-02, -3.872e-02, 1.125e-01, -6.922e-02, -1.093e-01, -1.874e-02, -2.666e-01, -4.931e-02, 8.861e-02, -4.383e-02, 8.293e-03), r);\n\tr = MulAdd(s3_6, M4(1.665e-02, -1.267e-03, 2.164e-03, 3.524e-03, -1.150e-02, -4.903e-03, 2.395e-02, 2.391e-03, -1.383e-02, 1.477e-03, 1.728e-02, -1.356e-02, 2.222e-03, 6.370e-03, -7.935e-02, -8.551e-03), r);\n\tr = MulAdd(s3_7, M4(2.945e-02, 3.503e-02, 1.334e-02, 6.900e-02, -1.146e-02, -1.218e-02, 5.461e-02, 7.172e-02, -2.653e-02, -2.229e-02, 1.076e-01, 1.016e-01, -7.640e-03, -5.440e-03, 5.615e-02, -5.270e-02), r);\n\tr = MulAdd(s3_8, M4(1.949e-02, -1.039e-01, 6.569e-01, -3.909e-01, -1.983e-03, -1.781e-02, -3.701e-03, -1.970e-02, -1.160e-02, -2.080e-02, -1.361e-02, 1.851e-03, -1.366e-02, -2.093e-02, -4.601e-03, -1.360e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass8(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-6x8C-NVL.hlsl",
    "content": "// CuNNy 6x8C BILINEAR RGB NVL - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-D08N06\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t3;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0, t1\n\n#define l0(x, y) (dot(MF3(2.668e-01, 5.128e-01, 1.094e-01), O(INPUT, float2(x, y)).rgb) + MF(-8.262e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 2.110e-03, -3.283e-04, -1.730e-02, -4.942e-03 };\n\tr = mad(s0_0, V4(3.453e-03, -2.009e-02, 1.029e-02, -4.229e-02), r);\n\tr = mad(s0_1, V4(-1.162e-01, -3.046e-01, 3.944e-01, -3.426e-02), r);\n\tr = mad(s0_2, V4(4.098e-02, 2.644e-01, 7.739e-03, 1.740e-02), r);\n\tr = mad(s0_3, V4(-5.645e-01, 3.510e-01, -1.381e-01, 3.015e-01), r);\n\tr = mad(s0_4, V4(5.692e-01, 2.277e-02, -1.002e-02, -2.280e-01), r);\n\tr = mad(s0_5, V4(1.874e-02, -2.802e-01, -2.867e-02, -9.688e-02), r);\n\tr = mad(s0_6, V4(3.162e-02, -3.273e-01, -1.823e-03, 2.738e-02), r);\n\tr = mad(s0_7, V4(9.148e-02, 3.054e-01, 4.438e-02, 2.153e-01), r);\n\tr = mad(s0_8, V4(-7.020e-02, -1.003e-02, 3.250e-03, -1.590e-01), r);\n\treturn r;\n}\n\nV4 f1(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 3.018e-03, 1.376e-02, -1.274e-02, 5.625e-03 };\n\tr = mad(s0_0, V4(4.130e-03, -1.028e-02, -7.847e-02, -1.277e-01), r);\n\tr = mad(s0_1, V4(1.850e-02, 1.097e-02, -1.303e-01, 1.772e-01), r);\n\tr = mad(s0_2, V4(-3.426e-02, 3.168e-01, 9.948e-03, -4.789e-02), r);\n\tr = mad(s0_3, V4(1.225e-03, 1.298e-02, 2.803e-01, -1.551e-02), r);\n\tr = mad(s0_4, V4(-1.303e-02, -1.703e-02, 1.588e-01, 2.124e-01), r);\n\tr = mad(s0_5, V4(5.410e-01, -2.998e-01, 2.618e-02, -1.909e-01), r);\n\tr = mad(s0_6, V4(-1.382e-03, 4.087e-03, 1.879e-01, 4.719e-02), r);\n\tr = mad(s0_7, V4(-3.849e-03, 1.123e-02, -2.463e-01, -5.789e-02), r);\n\tr = mad(s0_8, V4(-5.129e-01, -2.681e-02, 3.530e-02, 7.564e-03), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 6.864e-03, -7.720e-03, -1.170e-02, 2.714e-03 };\n\tr = MulAdd(s0_0, M4(1.042e-01, -4.946e-02, 6.554e-02, -8.392e-03, 1.283e-01, 1.651e-01, 3.683e-04, -1.051e-01, 4.040e-02, -6.936e-02, 1.557e-01, -1.129e-01, 2.308e-01, -4.099e-02, -5.587e-02, 5.584e-02), r);\n\tr = MulAdd(s0_1, M4(-6.587e-02, -5.729e-02, 2.461e-01, -1.196e-02, -4.689e-02, 1.865e-01, 1.570e-02, 3.911e-03, -1.411e-01, -3.073e-02, 4.971e-02, -2.336e-01, 1.874e-01, -9.632e-02, 1.814e-01, -3.548e-01), r);\n\tr = MulAdd(s0_2, M4(1.724e-01, 2.876e-01, 1.552e-01, -2.105e-01, 1.037e-01, 3.116e-01, 1.832e-01, -8.618e-02, 6.401e-02, 1.319e-01, 3.862e-02, 2.301e-01, -1.265e-02, -2.864e-01, -3.199e-02, 2.311e-01), r);\n\tr = MulAdd(s0_3, M4(4.153e-02, -5.609e-02, -1.424e-01, 3.368e-02, 2.271e-01, -8.217e-02, -8.373e-02, -2.666e-01, -3.089e-01, -3.909e-02, -3.284e-02, -1.384e-01, 1.265e-02, 2.006e-01, -5.720e-02, 1.076e-01), r);\n\tr = MulAdd(s0_4, M4(-4.261e-02, 1.184e-01, 3.302e-01, -2.949e-01, -3.369e-02, 3.576e-02, 1.019e-01, 3.097e-01, -4.891e-02, -2.452e-01, 5.598e-02, -2.664e-01, 6.785e-02, -1.832e-02, -6.347e-01, 2.930e-01), r);\n\tr = MulAdd(s0_5, M4(5.791e-01, -1.328e-01, -2.570e-01, 2.606e-01, 8.937e-02, -2.239e-01, 6.957e-02, 1.786e-02, 2.350e-01, -4.333e-03, 9.579e-02, 2.193e-02, -2.945e-02, 1.651e-01, -8.800e-02, 3.369e-01), r);\n\tr = MulAdd(s0_6, M4(-1.784e-01, -1.200e-01, -1.743e-01, 1.992e-01, -3.070e-02, -1.489e-01, -1.489e-01, 4.937e-03, -5.589e-01, -5.703e-01, 5.314e-01, -5.588e-01, -2.519e-02, 2.655e-03, -3.409e-02, 2.062e-01), r);\n\tr = MulAdd(s0_7, M4(-4.764e-02, -2.769e-01, -8.199e-01, 6.832e-02, -1.419e-02, -5.326e-02, -2.143e-01, -6.217e-03, -2.033e-01, 9.656e-02, 1.715e-01, -2.919e-01, 1.069e-01, 2.729e-01, -8.952e-04, 1.155e-01), r);\n\tr = MulAdd(s0_8, M4(1.953e-02, -3.145e-01, 1.220e-02, -1.279e-01, -1.510e-01, -1.802e-01, -9.842e-02, 1.264e-02, -2.215e-01, 2.586e-02, 4.424e-01, 6.816e-01, -7.124e-02, 1.132e-01, 4.702e-02, 4.041e-01), r);\n\tr = MulAdd(s1_0, M4(9.269e-02, 1.047e-02, 5.079e-02, 5.864e-02, -3.747e-02, 1.270e-01, 1.255e-01, -1.602e-01, 7.921e-02, 5.447e-03, 1.268e-01, -4.616e-02, 2.253e-01, -9.203e-03, 6.893e-04, -8.571e-02), r);\n\tr = MulAdd(s1_1, M4(-1.425e-01, 3.062e-02, 2.404e-01, -3.486e-01, -4.895e-01, -1.163e-01, 1.275e-01, -2.587e-01, -4.745e-02, 5.669e-02, 7.794e-02, -1.012e-01, 8.594e-02, -4.235e-01, 3.494e-01, -3.638e-01), r);\n\tr = MulAdd(s1_2, M4(-2.751e-01, -4.543e-01, 2.819e-01, -3.893e-01, -8.049e-03, 2.251e-01, 1.453e-01, -2.370e-01, 3.627e-02, 2.143e-01, 1.543e-02, 1.223e-01, 6.544e-02, -2.368e-01, 9.235e-03, 2.656e-01), r);\n\tr = MulAdd(s1_3, M4(1.210e-01, 9.555e-02, -5.417e-02, 1.165e-01, -1.068e-01, 6.166e-02, -2.891e-02, -8.389e-02, -1.224e-01, 5.482e-02, 2.476e-02, -8.222e-03, -1.536e-01, 6.750e-02, -1.824e-01, 1.234e-01), r);\n\tr = MulAdd(s1_4, M4(-2.644e-02, 1.267e-01, 4.029e-01, 2.617e-01, -4.951e-01, 1.263e-01, 1.485e-01, 5.693e-01, -8.725e-03, 2.043e-01, -4.077e-03, -1.607e-01, -2.110e-01, -4.477e-02, -5.539e-01, 3.658e-01), r);\n\tr = MulAdd(s1_5, M4(2.017e-01, 6.315e-01, -2.568e-01, -6.606e-01, 4.404e-01, -4.315e-01, -2.281e-02, -3.790e-01, 6.808e-02, -3.220e-02, -7.074e-02, -8.168e-02, -3.823e-01, 1.807e-01, 9.908e-02, -7.475e-02), r);\n\tr = MulAdd(s1_6, M4(-1.382e-01, -2.290e-01, -1.867e-01, 2.769e-01, -6.167e-02, -1.228e-01, -1.397e-01, 1.529e-01, -1.591e-02, -4.457e-02, 2.053e-01, 2.664e-02, -9.287e-02, 3.469e-02, 8.066e-02, -5.675e-02), r);\n\tr = MulAdd(s1_7, M4(3.744e-01, -3.467e-01, -9.004e-01, 5.327e-01, 5.426e-02, -6.985e-02, -3.799e-01, 4.876e-01, -6.079e-02, 2.228e-03, 2.478e-02, -2.092e-01, 2.800e-02, 2.458e-01, -1.370e-02, -1.551e-01), r);\n\tr = MulAdd(s1_8, M4(2.552e-01, 1.097e-01, -1.182e-01, 1.627e-01, 2.166e-01, -4.759e-03, -1.014e-01, 2.126e-02, 6.229e-02, 2.329e-02, 9.464e-02, 4.757e-02, 3.131e-03, -2.587e-03, -2.741e-02, -4.537e-02), r);\n\tr = MulAdd(s2_0, M4(1.745e-01, 4.940e-01, 2.727e-02, -8.500e-02, -2.356e-01, -1.500e-01, 9.724e-03, -2.077e-01, -5.020e-02, -1.467e-01, 1.685e-01, 3.359e-01, 2.094e-01, 1.175e-02, -6.380e-02, 4.710e-02), r);\n\tr = MulAdd(s2_1, M4(-3.113e-02, 8.027e-01, -4.982e-03, -1.428e-01, 6.573e-02, 4.074e-04, 1.637e-01, 1.466e-01, 3.238e-01, 2.433e-01, -3.147e-01, -1.136e-02, -3.248e-02, -1.969e-01, 9.390e-02, -2.485e-01), r);\n\tr = MulAdd(s2_2, M4(-1.045e-01, 2.494e-01, -3.734e-02, 4.765e-02, 5.332e-03, -2.832e-01, -2.026e-01, -1.339e-02, -4.321e-01, -7.626e-01, 1.908e-01, 3.502e-01, 3.451e-01, 1.199e-01, -7.371e-02, -6.362e-02), r);\n\tr = MulAdd(s2_3, M4(-1.629e-01, -4.320e-01, 7.872e-01, -2.766e-01, -1.373e-01, 1.317e-02, -1.461e-01, 2.414e-02, -9.297e-02, 3.045e-02, -6.804e-02, 8.275e-02, -3.640e-01, -1.441e-01, -3.555e-02, 1.300e-01), r);\n\tr = MulAdd(s2_4, M4(-3.256e-01, -5.021e-01, 1.595e-01, 4.114e-01, 7.795e-02, 1.064e-01, -9.154e-02, 1.568e-01, -2.319e-01, -8.268e-02, 3.692e-01, -9.510e-03, -1.566e-01, 1.517e-01, 2.046e-01, -5.032e-02), r);\n\tr = MulAdd(s2_5, M4(-2.343e-01, -3.166e-01, -2.043e-04, -5.327e-02, -2.782e-02, -2.989e-01, -7.909e-02, 1.890e-01, -2.144e-01, 5.248e-01, -3.855e-02, 1.994e-01, -3.525e-01, -6.465e-02, -1.340e-02, 1.749e-01), r);\n\tr = MulAdd(s2_6, M4(2.183e-02, 1.909e-03, 3.262e-02, 7.862e-02, -3.753e-01, 2.833e-01, 4.159e-01, -2.270e-01, 2.925e-02, -2.160e-01, -1.200e-01, -3.268e-02, -1.949e-01, -1.118e-01, 8.766e-02, 2.260e-02), r);\n\tr = MulAdd(s2_7, M4(-1.560e-02, -3.559e-02, 3.894e-02, -7.496e-02, 1.947e-01, 4.921e-01, 2.227e-01, -2.002e-01, 3.045e-01, -1.339e-01, -5.773e-01, -2.032e-01, -2.834e-02, -1.129e-01, -2.371e-01, -6.408e-03), r);\n\tr = MulAdd(s2_8, M4(1.109e-02, -4.708e-02, -3.267e-02, -6.323e-02, 2.935e-01, 2.542e-01, 1.224e-01, -9.832e-02, -1.134e-02, -7.131e-02, -5.557e-02, 5.606e-01, 2.551e-01, 2.313e-02, -8.756e-02, 8.658e-02), r);\n\tr = MulAdd(s3_0, M4(-4.977e-01, 7.734e-02, 1.035e-01, -5.555e-01, -1.226e-01, -7.049e-02, -6.882e-02, -3.950e-02, -5.240e-03, -1.275e-01, 1.254e-01, 1.743e-01, 5.163e-02, 5.000e-03, -8.731e-02, -6.371e-02), r);\n\tr = MulAdd(s3_1, M4(-3.240e-02, -1.207e-01, 1.163e-01, -1.555e-01, 1.009e-01, -1.052e-01, 2.058e-01, 2.205e-01, 6.038e-02, 1.410e-01, -1.091e-01, -2.054e-02, -3.050e-01, -6.117e-03, 1.110e-01, -1.869e-01), r);\n\tr = MulAdd(s3_2, M4(1.899e-01, 9.263e-02, -4.842e-02, 2.578e-02, -1.349e-01, -1.889e-01, -1.932e-01, 2.278e-02, -1.531e-01, -1.199e-01, 2.886e-03, 3.222e-02, -2.776e-02, 1.405e-01, -6.920e-02, -5.137e-01), r);\n\tr = MulAdd(s3_3, M4(-4.189e-01, 1.880e-01, -1.234e-01, 7.659e-01, 5.997e-01, -1.043e-01, -1.229e-01, 6.046e-01, -1.916e-01, 5.904e-02, 2.624e-02, 1.703e-02, -1.891e-02, 3.916e-02, 1.597e-01, -1.509e-01), r);\n\tr = MulAdd(s3_4, M4(5.301e-01, -1.048e-01, -8.784e-02, -4.903e-01, 3.227e-01, -4.585e-01, -2.122e-01, 3.939e-01, -1.169e-01, -8.373e-03, 1.272e-01, 6.810e-02, 2.517e-01, 2.839e-01, 1.257e-01, -4.846e-01), r);\n\tr = MulAdd(s3_5, M4(1.499e-01, -2.604e-01, -1.691e-01, -3.895e-01, -4.073e-01, 3.564e-02, 8.605e-02, -2.012e-01, 4.062e-02, 4.141e-02, 1.726e-02, -9.629e-02, 1.348e-01, -9.468e-02, 2.113e-03, -7.229e-02), r);\n\tr = MulAdd(s3_6, M4(-5.457e-02, 1.150e-01, -1.297e-01, 2.096e-01, 4.355e-01, -6.530e-02, -6.438e-01, 6.335e-01, 5.057e-02, -2.750e-01, -2.055e-01, 8.634e-02, -5.581e-01, -1.185e-01, 2.945e-02, 1.703e-01), r);\n\tr = MulAdd(s3_7, M4(-1.032e-02, -4.045e-02, 9.848e-02, -1.865e-01, -1.078e-01, -4.990e-01, 4.652e-01, -1.320e-01, 1.969e-01, -1.816e-01, -4.724e-01, 1.471e-01, 5.619e-01, 4.145e-02, -3.606e-02, 8.608e-01), r);\n\tr = MulAdd(s3_8, M4(4.007e-02, -5.339e-02, -2.525e-04, 1.082e-01, -2.520e-01, 2.832e-01, 4.025e-01, 1.532e-01, 1.244e-01, -9.873e-02, -8.482e-02, 5.278e-02, 1.618e-01, -3.404e-02, 2.947e-02, 2.445e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.499e-01, -1.776e-03, -6.774e-03, 1.322e-02 };\n\tr = MulAdd(s0_0, M4(-5.307e-02, -6.220e-02, 7.854e-02, 3.023e-02, 1.780e-02, -4.660e-02, 5.384e-02, -3.152e-02, 1.070e-01, -8.460e-02, 1.359e-01, -8.144e-02, -1.251e-01, -7.183e-02, -5.920e-02, -1.442e-01), r);\n\tr = MulAdd(s0_1, M4(-7.721e-02, 5.857e-02, 1.973e-01, 3.698e-02, -1.199e-01, -2.585e-02, 7.877e-02, -1.865e-01, -3.580e-01, 1.767e-01, -1.279e-02, -4.554e-02, -1.928e-01, 1.017e-01, 2.319e-01, -2.160e-01), r);\n\tr = MulAdd(s0_2, M4(-9.376e-02, -1.128e-01, -6.333e-02, 3.354e-02, -1.542e-02, 7.209e-02, 2.742e-01, 2.597e-02, 5.620e-02, -6.394e-02, -7.670e-03, 4.574e-02, -7.222e-02, 6.187e-02, -1.593e-01, 3.579e-03), r);\n\tr = MulAdd(s0_3, M4(5.476e-02, 8.972e-02, -2.571e-01, 2.037e-01, 7.994e-02, -7.436e-06, -1.929e-01, -8.885e-02, 2.996e-01, 3.133e-01, 1.697e-01, 2.396e-02, 2.580e-01, -8.171e-02, -5.660e-01, 1.743e-01), r);\n\tr = MulAdd(s0_4, M4(-7.670e-01, 4.858e-01, 1.888e-01, -3.512e-01, 1.555e-01, 1.685e-01, 1.297e-01, -1.428e-01, -1.589e-01, 6.807e-02, 2.787e-01, -7.520e-01, -3.137e-02, -2.188e-01, 4.388e-01, 1.228e-01), r);\n\tr = MulAdd(s0_5, M4(2.404e-01, -3.138e-01, 2.209e-01, 9.275e-02, 5.628e-02, 7.736e-02, -3.531e-01, -7.307e-02, 1.796e-01, -2.184e-01, 2.552e-01, 2.046e-01, -2.306e-01, 1.558e-01, -4.967e-02, -1.155e-01), r);\n\tr = MulAdd(s0_6, M4(1.131e-01, -2.256e-02, 1.024e-01, 1.899e-01, 1.293e-01, 2.068e-02, -1.174e-01, 1.143e-01, -5.395e-02, 4.318e-02, -9.846e-02, 1.123e-01, 4.766e-02, -2.608e-01, -1.273e-01, -2.761e-01), r);\n\tr = MulAdd(s0_7, M4(1.882e-01, -5.930e-02, -2.394e-01, 1.931e-01, 1.246e-01, -2.508e-02, -7.158e-02, -2.783e-02, -2.621e-01, 7.212e-01, -1.169e-01, -3.426e-01, -1.276e-01, 6.132e-02, 2.120e-01, -3.544e-01), r);\n\tr = MulAdd(s0_8, M4(1.605e-02, 4.498e-02, 3.280e-01, -9.840e-02, 1.066e-01, -2.167e-02, 1.566e-01, -6.055e-02, -7.933e-02, 2.419e-01, -6.969e-01, -1.372e-01, 6.544e-02, -4.269e-02, -3.820e-04, 1.499e-01), r);\n\tr = MulAdd(s1_0, M4(-8.681e-02, -1.087e-01, 9.044e-02, -1.616e-01, 5.700e-02, -1.112e-01, 7.944e-02, -1.029e-01, 2.576e-02, -8.748e-02, 1.241e-01, 7.166e-03, 2.636e-02, 2.446e-02, -4.103e-02, 1.675e-01), r);\n\tr = MulAdd(s1_1, M4(1.572e-02, 3.793e-02, 2.414e-01, -2.281e-01, -8.712e-02, -6.538e-02, 1.419e-01, -2.081e-01, -9.182e-02, 2.571e-02, 1.355e-01, -1.110e-01, -2.355e-01, 2.339e-01, 1.910e-02, -1.032e-01), r);\n\tr = MulAdd(s1_2, M4(1.797e-02, -6.616e-02, -1.663e-02, -1.947e-01, -3.057e-02, 5.054e-02, 1.722e-01, -1.862e-02, 7.327e-03, 2.610e-02, -3.037e-01, 1.290e-01, -5.838e-02, 2.218e-02, -5.471e-02, 6.622e-02), r);\n\tr = MulAdd(s1_3, M4(7.168e-03, 8.656e-02, -1.933e-01, 1.346e-01, 8.983e-04, -7.273e-03, -1.299e-01, 4.448e-02, -1.194e-02, 1.806e-01, 2.176e-01, 9.534e-02, 2.997e-01, -4.100e-02, -6.068e-01, 3.835e-01), r);\n\tr = MulAdd(s1_4, M4(-2.998e-01, 4.814e-01, 1.137e-01, -9.396e-01, -1.303e-01, 3.726e-02, 2.731e-01, 4.488e-01, -1.218e-01, 1.669e-01, 1.251e-01, -7.614e-02, 2.104e-01, -1.051e-01, 1.398e-01, 3.838e-01), r);\n\tr = MulAdd(s1_5, M4(4.201e-01, -1.504e-01, 1.123e-01, 1.165e-01, 7.321e-03, 1.057e-01, -5.330e-01, -1.028e-01, 6.962e-02, 1.858e-01, 1.840e-01, -1.049e-01, 4.850e-02, 2.241e-01, -2.765e-01, 2.054e-02), r);\n\tr = MulAdd(s1_6, M4(1.442e-01, -6.238e-02, 1.505e-01, -7.470e-02, 8.926e-02, -9.376e-03, 2.118e-02, 1.368e-01, 5.482e-02, 1.042e-01, -1.818e-01, 1.364e-01, 8.520e-02, -2.172e-01, -1.501e-01, -1.698e-01), r);\n\tr = MulAdd(s1_7, M4(2.163e-01, -6.139e-02, -2.190e-01, -1.932e-01, -4.070e-02, -5.123e-02, -9.987e-02, 1.412e-01, -1.614e-01, 6.292e-01, -1.916e-01, -8.262e-02, -2.486e-01, 8.627e-03, 2.816e-01, -2.516e-02), r);\n\tr = MulAdd(s1_8, M4(-4.631e-02, -2.598e-02, -8.044e-02, -1.965e-01, 9.235e-02, -2.282e-02, -9.376e-02, 1.773e-02, -9.385e-02, 2.837e-01, -5.315e-01, 1.079e-01, 3.615e-02, -3.025e-02, -8.471e-02, 1.044e-01), r);\n\tr = MulAdd(s2_0, M4(1.066e-01, 7.468e-02, 1.383e-01, -2.494e-01, -5.715e-02, 1.462e-01, -4.641e-02, -6.538e-02, -3.077e-02, 6.170e-02, 2.492e-01, 1.307e-01, 1.527e-01, 4.648e-02, -1.311e-01, 1.123e-02), r);\n\tr = MulAdd(s2_1, M4(-2.184e-02, -8.723e-02, -6.092e-02, 3.431e-03, 9.186e-02, 5.499e-03, 2.798e-01, -1.613e-02, 2.447e-01, 2.809e-02, -3.777e-02, 4.224e-02, 9.632e-02, -3.813e-02, -6.021e-02, -5.802e-02), r);\n\tr = MulAdd(s2_2, M4(7.639e-02, 1.966e-02, 2.578e-01, 1.208e-01, 2.502e-02, -3.256e-02, -1.851e-01, -2.343e-02, -2.017e-01, -5.456e-02, -1.051e-01, -1.624e-01, 2.899e-02, -1.224e-03, 3.144e-01, 1.033e-01), r);\n\tr = MulAdd(s2_3, M4(-1.768e-01, 1.433e-01, 1.390e-01, -1.494e-01, -3.681e-02, -1.480e-01, -3.328e-01, 4.138e-02, -1.058e-01, 2.190e-01, 3.278e-01, -2.495e-01, 8.836e-02, 1.228e-01, -3.728e-01, 3.534e-01), r);\n\tr = MulAdd(s2_4, M4(5.058e-02, -9.077e-02, -7.532e-02, 9.344e-02, 1.096e-01, 5.318e-02, -2.979e-01, 1.779e-01, -1.682e-01, 3.371e-01, 1.964e-01, -2.526e-01, -3.013e-01, 5.184e-02, 3.613e-01, 5.832e-02), r);\n\tr = MulAdd(s2_5, M4(-4.613e-02, 3.121e-02, 5.499e-02, 7.645e-02, -1.745e-01, -4.111e-02, 3.210e-01, -2.519e-02, -8.660e-02, 4.306e-01, 5.642e-01, -1.645e-01, -6.127e-02, 3.565e-02, 3.529e-02, 5.166e-02), r);\n\tr = MulAdd(s2_6, M4(-1.482e-01, 3.199e-02, -1.302e-02, 7.168e-02, 2.378e-01, -7.776e-02, 2.090e-01, 1.870e-01, 1.820e-01, 8.673e-02, -9.481e-05, 2.911e-01, 6.907e-02, -4.005e-02, -1.265e-01, -1.030e-01), r);\n\tr = MulAdd(s2_7, M4(1.354e-01, 2.906e-03, 6.018e-02, 8.451e-02, -1.123e-02, -1.011e-01, 7.115e-02, -8.680e-02, 2.088e-01, 2.977e-01, 8.741e-02, 2.908e-05, -2.357e-01, 3.996e-02, -1.434e-02, -1.192e-01), r);\n\tr = MulAdd(s2_8, M4(2.121e-03, 2.972e-02, -5.123e-02, -5.465e-03, -1.124e-01, 7.063e-02, 1.180e-02, -1.732e-01, -1.739e-01, 8.947e-02, -8.452e-02, 4.847e-01, -5.393e-02, -4.491e-02, -3.357e-02, -5.699e-03), r);\n\tr = MulAdd(s3_0, M4(4.013e-01, 1.153e-01, 5.353e-03, -2.882e-01, -5.749e-02, 5.224e-02, -2.923e-02, -3.499e-02, 2.801e-02, -1.767e-02, 9.020e-02, -8.928e-02, 9.319e-02, -3.256e-02, -4.600e-02, -2.629e-01), r);\n\tr = MulAdd(s3_1, M4(1.098e-01, -1.177e-03, -2.211e-01, 1.097e-02, 3.512e-02, 1.884e-02, 2.745e-01, -1.055e-01, 3.093e-02, 7.905e-02, 5.369e-02, 1.962e-01, -8.069e-03, -1.057e-01, -5.889e-02, 6.130e-02), r);\n\tr = MulAdd(s3_2, M4(1.107e-01, -2.817e-02, 8.050e-02, 6.254e-02, -1.035e-02, -7.545e-02, -1.390e-01, -8.220e-02, -7.958e-02, -1.110e-01, -2.425e-01, -8.612e-02, 8.152e-03, -1.041e-01, 2.705e-01, -2.947e-03), r);\n\tr = MulAdd(s3_3, M4(-1.766e-01, 2.151e-01, 5.500e-01, 1.463e-01, -3.390e-01, -9.116e-02, -1.704e-01, 9.677e-02, -1.434e-01, 2.198e-01, 4.151e-01, -1.036e-01, 2.908e-01, 1.355e-01, -3.566e-01, -1.082e-01), r);\n\tr = MulAdd(s3_4, M4(1.299e-01, -6.859e-02, -4.033e-01, 2.197e-01, -1.170e-01, 9.324e-03, -2.593e-01, 1.434e-01, -1.492e-01, 4.124e-01, 3.600e-01, -1.676e-01, 2.548e-02, -1.581e-02, 1.796e-01, -3.075e-01), r);\n\tr = MulAdd(s3_5, M4(-5.624e-02, 1.779e-02, 5.036e-02, -1.849e-01, -1.064e-01, -1.738e-02, 3.161e-01, 5.391e-02, -5.693e-02, 3.279e-01, -6.516e-02, -3.823e-02, -1.512e-01, 9.958e-03, -4.383e-02, -1.996e-01), r);\n\tr = MulAdd(s3_6, M4(-1.586e-01, -2.236e-03, -8.471e-02, -1.331e-01, -3.366e-02, -3.968e-01, -2.313e-01, -5.757e-01, 1.606e-01, 3.686e-02, 1.387e-02, 9.619e-02, -1.653e-01, -1.318e-01, -1.257e-01, -1.748e-01), r);\n\tr = MulAdd(s3_7, M4(1.938e-01, 1.519e-02, 2.123e-02, 1.121e-01, 5.456e-02, -1.568e-01, 2.224e-01, -5.000e-01, -6.363e-02, 2.205e-01, -3.627e-02, 1.547e-01, 8.136e-03, 2.279e-02, 4.444e-01, -5.358e-02), r);\n\tr = MulAdd(s3_8, M4(-5.716e-02, -5.222e-03, -1.156e-02, -6.042e-02, -1.024e-01, 7.483e-02, -2.342e-02, 1.065e-01, -5.690e-02, 6.041e-02, -1.489e-01, -5.921e-02, -1.887e-02, -2.115e-01, 6.895e-02, -7.626e-02), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -2.216e-03, -1.314e-01, -1.773e-02, 2.580e-02 };\n\tr = MulAdd(s0_0, M4(-1.716e-02, -1.345e-01, 1.032e-01, 4.104e-02, 8.711e-02, 8.589e-02, 8.094e-02, -4.856e-02, 1.430e-01, 7.623e-02, -6.074e-02, 9.124e-02, 3.848e-03, -2.421e-02, -3.542e-02, 2.262e-02), r);\n\tr = MulAdd(s0_1, M4(5.328e-02, -4.876e-02, 2.747e-01, -3.134e-01, 5.165e-02, -8.168e-02, -9.645e-02, 9.013e-02, 5.684e-01, 3.945e-01, -5.757e-02, 3.315e-01, 2.290e-01, -2.012e-01, -1.305e-01, 1.678e-01), r);\n\tr = MulAdd(s0_2, M4(-5.859e-02, -1.364e-01, 1.517e-02, -2.630e-01, 2.100e-02, 1.196e-02, -6.509e-03, 3.381e-02, 1.752e-01, 1.950e-01, 3.989e-02, -3.574e-03, -1.470e-01, -2.938e-01, 9.845e-02, 8.800e-02), r);\n\tr = MulAdd(s0_3, M4(-3.231e-02, -1.792e-01, 4.669e-01, 2.254e-01, -5.143e-03, -1.238e-01, -1.704e-01, -2.428e-01, -1.350e-01, -1.620e-01, -2.490e-01, 5.236e-02, -9.524e-02, -5.944e-02, -1.270e-01, 2.059e-01), r);\n\tr = MulAdd(s0_4, M4(-6.691e-02, 8.980e-03, 1.013e-02, 1.386e-01, -8.353e-02, -1.772e-01, -6.338e-02, -3.381e-01, -6.478e-02, 2.335e-01, 6.344e-02, 2.214e-01, 1.850e-01, 2.665e-02, -1.302e-01, -3.592e-01), r);\n\tr = MulAdd(s0_5, M4(-6.946e-02, -3.227e-03, 1.130e-01, -3.646e-01, 6.317e-02, -2.508e-01, 1.449e-02, 1.909e-01, 4.092e-02, -1.928e-01, 4.181e-02, 1.998e-01, -1.042e-01, -1.643e-01, 1.123e-01, -1.423e-01), r);\n\tr = MulAdd(s0_6, M4(4.571e-04, -2.226e-01, 1.542e-01, -1.980e-01, 2.272e-01, 6.605e-02, -1.823e-01, -3.202e-01, -1.017e-02, 4.403e-02, -1.199e-01, -6.896e-02, -2.050e-02, -4.035e-03, -2.686e-02, 6.758e-02), r);\n\tr = MulAdd(s0_7, M4(-2.184e-02, 2.620e-01, -1.598e-01, -1.310e-01, -1.282e-02, -6.247e-02, -5.500e-02, -1.549e-01, -1.201e-02, 2.664e-02, -1.159e-01, 2.574e-02, -4.379e-02, 4.502e-02, -1.428e-01, 2.220e-01), r);\n\tr = MulAdd(s0_8, M4(8.156e-03, -1.909e-03, 1.260e-01, -8.108e-02, 8.324e-02, -1.054e-01, 3.860e-02, -5.290e-02, -1.608e-03, -3.940e-02, -1.942e-02, -8.427e-02, -5.776e-02, -1.097e-01, -1.933e-02, 1.763e-01), r);\n\tr = MulAdd(s1_0, M4(-2.796e-02, -6.590e-02, -1.873e-01, 2.170e-01, -8.312e-02, -2.841e-02, 1.736e-01, -1.202e-01, 6.437e-02, 1.920e-03, 1.832e-01, -2.252e-01, 1.106e-01, 1.346e-01, 8.420e-03, -2.089e-01), r);\n\tr = MulAdd(s1_1, M4(7.340e-02, 2.419e-02, 8.738e-03, 1.919e-01, -6.706e-02, -1.429e-02, -9.722e-02, -1.269e-01, -4.527e-02, -1.184e-01, -3.381e-03, -1.308e-01, 1.871e-01, 2.487e-01, -2.376e-02, -1.436e-01), r);\n\tr = MulAdd(s1_2, M4(1.461e-01, 1.143e-01, -1.074e-01, 8.386e-02, -1.447e-01, -1.686e-01, 9.007e-02, -1.183e-01, 5.843e-02, -7.875e-02, -6.239e-02, 5.076e-02, -8.418e-02, -5.289e-02, 7.695e-02, -4.506e-02), r);\n\tr = MulAdd(s1_3, M4(-1.277e-01, -9.044e-02, -2.494e-01, 2.466e-01, -3.309e-02, -1.805e-01, 2.197e-01, 9.758e-02, 2.339e-02, -2.082e-01, 2.091e-01, -3.370e-01, 1.096e-01, 1.691e-01, -1.687e-01, 1.317e-03), r);\n\tr = MulAdd(s1_4, M4(7.503e-02, -9.570e-02, -3.911e-01, 3.020e-01, -3.351e-01, 3.397e-01, -1.038e-01, 4.915e-01, -2.002e-01, 2.340e-01, 1.700e-01, 1.536e-01, 2.331e-01, 3.055e-01, -7.175e-02, -2.936e-01), r);\n\tr = MulAdd(s1_5, M4(1.693e-01, 6.752e-02, -6.320e-02, 1.731e-01, 5.053e-02, 1.589e-01, -3.209e-02, 2.180e-02, -2.516e-02, -3.550e-01, -6.057e-02, 1.766e-01, 6.070e-02, 2.377e-01, 1.420e-01, -1.750e-01), r);\n\tr = MulAdd(s1_6, M4(5.968e-02, 1.878e-01, -7.204e-02, -1.839e-01, 9.632e-02, 4.321e-02, 1.055e-02, -5.708e-02, -5.873e-02, -3.095e-02, -2.059e-02, 1.277e-02, -1.520e-02, 1.516e-01, -2.994e-01, -7.694e-02), r);\n\tr = MulAdd(s1_7, M4(-5.850e-02, 3.689e-02, -2.758e-01, -5.820e-02, -7.878e-02, 1.943e-01, 1.318e-01, -6.132e-03, 3.420e-02, 1.539e-01, -1.353e-01, 1.066e-01, -1.837e-02, 1.026e-01, -2.007e-01, 1.803e-02), r);\n\tr = MulAdd(s1_8, M4(3.459e-02, -7.917e-02, -6.715e-02, -6.375e-02, 5.512e-02, -1.532e-01, -1.008e-02, 3.281e-02, 2.993e-02, 6.528e-02, 1.202e-02, -1.341e-01, 1.046e-01, 2.568e-01, -3.195e-02, -6.128e-03), r);\n\tr = MulAdd(s2_0, M4(-1.676e-01, 6.091e-02, 1.021e-01, 1.900e-01, 6.284e-01, 3.015e-01, 1.076e-01, -4.315e-01, 9.855e-02, 7.527e-02, 1.173e-01, 1.454e-01, -1.936e-02, -7.795e-02, 4.561e-02, -1.009e-01), r);\n\tr = MulAdd(s2_1, M4(-1.538e-01, 1.924e-01, -2.160e-01, 1.121e-02, 3.876e-01, 6.074e-01, 1.912e-01, 1.107e+00, -1.019e-01, 2.046e-02, 4.697e-01, 2.091e-02, -1.841e-01, -4.174e-02, 2.999e-01, 8.326e-02), r);\n\tr = MulAdd(s2_2, M4(-9.220e-02, 1.825e-01, -1.562e-01, 3.358e-01, 5.226e-02, 6.678e-01, 3.058e-01, 2.938e-01, 1.706e-01, 8.658e-02, -6.464e-02, -3.511e-01, 4.983e-02, 1.655e-01, 6.151e-02, -2.758e-01), r);\n\tr = MulAdd(s2_3, M4(-1.193e-01, -8.883e-03, -6.676e-02, -1.863e-01, 5.507e-01, 2.139e-01, -2.313e-01, -3.117e-01, 7.110e-03, -2.253e-02, 2.619e-02, -1.450e-01, 2.895e-02, 1.838e-02, 1.456e-02, -1.848e-02), r);\n\tr = MulAdd(s2_4, M4(8.266e-01, 1.957e-01, -5.592e-01, -1.102e+00, -1.108e+00, -2.799e-01, 2.460e+00, -2.017e+00, -1.304e-01, 5.934e-02, 2.235e-01, -1.531e-01, 2.761e-01, -2.611e-02, -2.482e-01, -2.947e-02), r);\n\tr = MulAdd(s2_5, M4(1.606e-01, 1.278e-02, -9.921e-02, 9.180e-02, 1.138e-01, -3.889e-02, 1.627e-01, 2.813e+00, 5.255e-02, -2.075e-02, -1.651e-01, -1.358e-01, -1.813e-01, 3.018e-01, 3.389e-04, -3.242e-01), r);\n\tr = MulAdd(s2_6, M4(-1.029e-02, 1.966e-01, 9.284e-03, 3.095e-01, -1.677e-01, -5.509e-02, -1.289e+00, -3.562e-02, 2.497e-02, 1.040e-01, -1.576e-01, -1.242e-01, -6.614e-02, -2.606e-02, -2.151e-02, 9.371e-02), r);\n\tr = MulAdd(s2_7, M4(2.008e-01, -2.042e-01, 3.626e-03, -8.524e-03, -3.760e-01, 3.521e-01, -4.482e-01, -7.956e-01, -1.076e-01, -2.298e-02, 1.228e-01, 2.675e-01, 8.843e-02, 2.774e-01, -1.114e-01, 6.773e-02), r);\n\tr = MulAdd(s2_8, M4(7.028e-03, 2.032e-01, -2.760e-01, -5.645e-02, 7.888e-02, 4.420e-01, 1.608e-01, 7.254e-02, 8.015e-02, -1.828e-01, -1.142e-02, -2.063e-02, -1.091e-01, -3.137e-02, 2.670e-02, -1.370e-03), r);\n\tr = MulAdd(s3_0, M4(3.985e-02, -4.648e-04, -6.229e-02, 1.024e-02, 2.510e-02, -1.833e-01, -2.537e-02, -5.906e-02, 1.551e-01, 1.097e+00, -9.003e-01, 9.391e-01, -1.978e-02, -5.407e-02, 2.358e-01, 1.039e-01), r);\n\tr = MulAdd(s3_1, M4(-1.454e-02, 6.619e-02, -5.213e-03, -5.554e-02, 4.323e-02, 1.004e-01, 1.153e-01, 1.370e-01, 4.502e-01, 3.804e-01, 2.568e-01, 7.781e-01, -3.095e-02, 3.557e-02, 1.035e-01, -2.194e-02), r);\n\tr = MulAdd(s3_2, M4(-3.902e-02, -1.607e-01, 5.826e-02, 1.034e-02, -2.753e-03, 1.175e-01, 3.703e-02, 1.375e-02, 7.297e-02, 2.820e-01, 5.462e-04, -5.188e-02, 2.212e-01, 1.518e-01, -1.325e-01, 9.074e-02), r);\n\tr = MulAdd(s3_3, M4(-5.867e-02, -1.032e-01, -2.187e-02, 2.861e-02, 6.211e-02, 8.308e-02, -1.475e-01, 3.146e-02, -1.838e-01, -1.555e-01, -8.405e-01, -3.969e-01, -2.232e-02, -1.254e-01, 1.786e-01, -2.215e-01), r);\n\tr = MulAdd(s3_4, M4(1.142e-01, -2.823e-01, -3.135e-01, 2.494e-01, -2.510e-01, 1.359e-01, 2.920e-01, 3.156e-03, -1.326e-01, -4.658e-01, 2.085e-01, -2.149e-01, 3.455e-01, 5.045e-01, -3.612e-01, 2.250e-01), r);\n\tr = MulAdd(s3_5, M4(9.107e-03, -2.388e-01, 8.027e-02, -1.974e-01, 2.763e-01, -7.958e-02, 1.082e-01, 1.907e-01, 1.002e-01, -7.503e-02, 1.903e-02, 1.209e-01, -3.394e-01, -5.029e-03, -2.791e-01, -3.699e-02), r);\n\tr = MulAdd(s3_6, M4(-1.739e-02, 6.326e-02, 8.739e-02, 6.420e-02, -3.866e-02, -9.341e-02, -2.571e-01, -1.428e-01, -4.662e-02, 8.787e-02, -2.799e-01, -2.134e-01, 1.020e-02, -2.975e-02, 7.063e-02, -1.584e-01), r);\n\tr = MulAdd(s3_7, M4(1.056e-01, -1.006e-01, 1.313e-01, 1.137e-02, -9.836e-02, -4.874e-02, -2.130e-01, -1.634e-01, -5.612e-02, -1.760e-01, -1.908e-01, 1.199e-01, -1.486e-02, 1.704e-01, -7.049e-03, -1.845e-01), r);\n\tr = MulAdd(s3_8, M4(-1.343e-01, -2.351e-02, -1.138e-01, 1.969e-02, -2.157e-02, -2.178e-01, 6.627e-02, 2.071e-02, -8.215e-02, -2.077e-01, 6.798e-02, 3.783e-02, -4.294e-02, 2.298e-01, 3.238e-01, -3.153e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 5.906e-02, -2.826e-02, 3.865e-02, 1.167e-02 };\n\tr = MulAdd(s0_0, M4(1.193e-01, -1.140e-01, -1.286e-01, 1.857e-01, 1.764e-02, 2.680e-02, -2.096e-02, -2.392e-02, 1.995e-02, -1.275e-01, -1.179e-02, -9.041e-02, 2.080e-02, -2.054e-02, -6.917e-02, -3.731e-02), r);\n\tr = MulAdd(s0_1, M4(5.910e-02, -3.300e-02, 2.187e-01, -4.265e-02, -1.050e-02, -3.859e-02, 7.390e-02, 1.629e-02, 4.529e-02, -1.788e-01, 4.091e-01, -6.928e-02, 1.657e-01, -4.254e-03, -3.151e-01, 2.919e-01), r);\n\tr = MulAdd(s0_2, M4(-4.341e-02, 2.223e-02, -1.008e-01, 8.143e-02, -9.846e-03, 5.909e-02, -2.690e-02, 3.039e-02, 1.086e-01, -6.404e-02, -6.064e-02, -1.898e-01, 9.368e-02, 3.736e-03, -3.105e-02, 6.931e-02), r);\n\tr = MulAdd(s0_3, M4(-3.157e-02, -1.135e-02, -4.165e-01, -1.928e-01, -7.721e-02, 1.880e-01, -1.479e-01, 1.343e-01, 1.394e-01, -1.888e-01, 4.132e-02, 3.282e-02, 1.008e-01, 3.034e-02, -1.672e-01, 2.711e-01), r);\n\tr = MulAdd(s0_4, M4(5.348e-02, -7.725e-02, 1.096e-01, 1.428e-01, 2.230e-02, 4.346e-01, -1.861e-01, 2.064e-01, 9.964e-02, -1.543e-01, 2.040e-01, -2.667e-01, 2.274e-01, -4.279e-02, 2.191e-01, 1.740e-01), r);\n\tr = MulAdd(s0_5, M4(-4.585e-02, 7.224e-02, 2.702e-02, -5.440e-02, -8.830e-02, 1.219e-01, -5.870e-02, -1.575e-02, -2.895e-01, 1.297e-01, -2.219e-01, -3.090e-01, 1.459e-02, 6.562e-02, 8.912e-02, 3.619e-02), r);\n\tr = MulAdd(s0_6, M4(5.821e-02, -1.235e-01, 2.805e-01, 1.661e-02, -1.411e-01, 4.756e-01, 1.758e-02, 2.091e-01, -7.398e-02, -1.141e-02, 9.094e-03, 5.836e-02, -5.062e-02, -1.953e-02, 9.519e-03, 1.514e-01), r);\n\tr = MulAdd(s0_7, M4(-2.608e-02, 5.385e-02, 2.445e-01, -2.328e-02, -1.261e-02, 3.237e-01, -1.273e-01, -9.910e-02, 6.702e-03, -9.507e-03, 1.413e-01, -8.367e-02, 6.338e-02, 7.485e-02, 1.797e-01, -7.493e-03), r);\n\tr = MulAdd(s0_8, M4(-1.616e-01, 9.600e-02, 5.955e-02, -1.206e-01, -1.295e-02, -7.217e-03, -9.834e-02, 1.012e-02, -9.242e-02, -8.508e-03, -8.789e-02, -1.357e-01, 3.131e-02, 1.343e-02, -8.285e-02, 1.658e-02), r);\n\tr = MulAdd(s1_0, M4(-1.426e-02, 1.560e-02, -2.351e-01, 1.411e-02, 6.414e-02, -1.062e-02, -6.187e-02, 3.851e-02, -1.255e-01, -2.124e-01, 5.334e-02, -1.702e-01, -1.592e-02, 8.683e-02, 3.298e-02, -1.396e-01), r);\n\tr = MulAdd(s1_1, M4(2.771e-02, 1.236e-01, 3.715e-01, 3.765e-03, 1.343e-01, -8.645e-02, -2.129e-01, 2.529e-01, -3.053e-01, 6.211e-02, 6.285e-01, 6.935e-02, -1.150e-01, -1.477e-01, 1.362e-01, -7.007e-02), r);\n\tr = MulAdd(s1_2, M4(-1.013e-01, 2.877e-02, -1.274e-01, 6.261e-02, 4.531e-02, -6.713e-02, -1.651e-02, -9.269e-02, -1.616e-01, -3.828e-03, -3.715e-01, 1.978e-03, 2.994e-02, 5.941e-02, -1.039e-01, -9.121e-02), r);\n\tr = MulAdd(s1_3, M4(1.614e-01, 2.806e-01, -5.564e-01, 1.712e-01, 3.865e-02, -9.885e-02, 1.400e-01, -1.006e-01, 3.954e-02, -7.045e-02, 2.290e-01, 5.378e-03, -4.572e-02, 5.276e-02, 3.839e-02, 7.448e-02), r);\n\tr = MulAdd(s1_4, M4(-2.672e-02, 2.006e-01, 2.841e-01, -1.999e-02, 1.419e-02, 8.672e-02, 2.153e-01, 2.087e-01, 1.046e-02, 9.963e-01, 6.317e-01, 7.537e-01, -2.202e-01, -7.516e-02, 3.076e-01, -1.556e-01), r);\n\tr = MulAdd(s1_5, M4(-3.143e-01, 5.866e-02, -1.605e-01, -1.615e-01, -8.577e-02, 7.590e-03, 2.199e-01, 9.684e-03, -2.125e-02, -2.988e-02, -4.535e-01, 5.538e-02, -2.528e-01, 1.243e-01, 1.700e-01, -1.200e-01), r);\n\tr = MulAdd(s1_6, M4(-1.574e-01, 6.763e-02, 4.039e-02, 1.469e-01, 2.257e-03, 1.424e-01, -1.655e-01, 8.329e-02, -7.065e-02, -2.476e-01, -9.983e-02, 1.232e-01, -7.377e-02, 1.521e-02, -3.496e-02, -1.429e-02), r);\n\tr = MulAdd(s1_7, M4(-3.125e-04, -2.618e-03, -6.887e-02, -2.244e-01, -4.241e-02, -1.978e-01, 1.768e-01, -1.142e-01, 3.186e-02, -8.708e-02, 1.963e-01, 1.347e-01, -9.015e-02, -1.290e-01, 1.373e-01, -1.238e-01), r);\n\tr = MulAdd(s1_8, M4(-2.192e-01, 5.605e-04, -1.505e-01, -2.801e-01, 1.144e-01, -1.020e-01, -5.691e-02, 1.329e-01, -4.557e-02, -5.067e-02, -5.847e-03, 1.539e-02, -2.222e-01, -1.948e-02, -7.628e-02, -1.468e-01), r);\n\tr = MulAdd(s2_0, M4(1.248e-02, -6.067e-02, 6.221e-03, -2.587e-01, 1.340e-01, 9.183e-02, 1.780e-01, 1.129e-01, -5.239e-03, 7.200e-03, -8.953e-03, 1.245e-01, -5.878e-02, -5.848e-02, 4.972e-02, -1.553e-02), r);\n\tr = MulAdd(s2_1, M4(5.369e-02, -1.389e-01, 2.474e-01, -9.388e-02, 1.382e-01, -2.378e-01, 1.034e+00, -4.127e-01, -5.765e-02, -2.028e-01, -5.532e-02, -6.872e-02, -1.059e-02, 7.206e-03, -2.455e-01, -4.938e-02), r);\n\tr = MulAdd(s2_2, M4(1.712e-01, -7.478e-02, 2.833e-01, -1.819e-01, 3.654e-01, -1.324e-01, 2.584e-01, -3.937e-01, 1.282e-01, -7.266e-02, 7.739e-02, 1.304e-01, -4.748e-02, -1.578e-01, 4.012e-02, -3.365e-02), r);\n\tr = MulAdd(s2_3, M4(-1.748e-01, -1.185e-01, 3.252e-01, 8.781e-02, 3.503e-01, -6.309e-01, 1.597e+00, 9.112e-02, -3.477e-01, -7.516e-02, -5.034e-02, -2.982e-01, 1.566e-01, -7.671e-03, -5.705e-02, 4.100e-02), r);\n\tr = MulAdd(s2_4, M4(-7.281e-01, 7.474e-01, -7.460e-01, -5.525e-01, 6.676e-01, -2.384e+00, -2.085e+00, 2.139e+00, 5.178e-02, -2.687e-01, 4.824e-02, 4.211e-02, -4.863e-03, -2.555e-01, 1.548e-01, -5.389e-02), r);\n\tr = MulAdd(s2_5, M4(2.294e-01, 4.563e-02, -1.082e-01, 1.918e-01, -4.791e-01, -3.667e-01, -9.200e-01, -7.338e-02, 2.055e-01, 1.443e-01, -1.102e-01, 3.247e-01, -1.077e-01, 1.510e-01, 9.772e-02, -9.652e-02), r);\n\tr = MulAdd(s2_6, M4(-7.180e-02, -6.766e-02, 4.233e-02, 2.346e-01, 2.416e-01, -5.872e-01, -3.803e-01, 1.459e-01, 1.314e-01, 1.762e-01, 2.180e-01, -6.325e-02, -2.639e-02, -6.961e-02, -6.823e-02, 1.208e-01), r);\n\tr = MulAdd(s2_7, M4(-1.771e-02, 8.693e-01, 6.895e-02, 1.746e-01, 7.339e-01, -2.318e+00, -9.599e-02, 6.005e-03, -2.361e-01, 4.397e-03, 4.241e-02, -3.560e-01, -2.276e-01, 2.720e-01, -2.148e-03, 1.158e-01), r);\n\tr = MulAdd(s2_8, M4(1.415e-02, 4.584e-02, -3.553e-01, 5.112e-02, -6.470e-01, -1.005e+00, -4.282e-02, -9.747e-01, -4.664e-02, 1.182e-01, -1.638e-01, 3.781e-02, 9.961e-02, 6.290e-02, 1.452e-01, -2.967e-02), r);\n\tr = MulAdd(s3_0, M4(-1.042e-02, 1.059e-02, 8.109e-02, -1.976e-02, 5.573e-02, 1.743e-01, 2.189e-03, 1.850e-01, -2.536e-01, 2.196e-01, 9.472e-01, -4.919e-01, 1.358e-02, -1.083e-02, -4.265e-01, -5.187e-02), r);\n\tr = MulAdd(s3_1, M4(8.612e-02, -1.189e-01, -2.101e-01, 1.060e-01, 1.314e-01, -1.630e-02, -5.186e-02, 4.664e-02, -6.413e-01, -3.610e-01, 4.229e-01, -4.334e-01, 4.259e-02, -1.822e-02, 4.311e-01, -2.530e-01), r);\n\tr = MulAdd(s3_2, M4(2.664e-02, 2.255e-02, 3.200e-02, -1.377e-01, -1.708e-01, -8.546e-02, 8.941e-02, -8.314e-02, -2.572e-01, -4.522e-03, 2.598e-02, -3.987e-02, -7.309e-02, -7.170e-02, 3.738e-01, -1.056e-01), r);\n\tr = MulAdd(s3_3, M4(1.327e-03, -1.352e-01, -1.486e-01, -4.253e-03, 9.866e-02, 2.134e-01, 2.813e-01, 1.472e-01, 3.699e-01, -6.387e-01, 4.480e-01, -5.420e-01, 6.457e-02, -1.278e-01, 1.867e-01, -2.355e-01), r);\n\tr = MulAdd(s3_4, M4(-1.330e-01, -1.691e-01, 3.231e-01, -2.959e-01, 2.198e-01, -1.739e-02, -6.569e-02, 3.037e-01, -2.062e-01, 9.855e-02, -5.762e-01, -1.501e-02, 4.521e-02, 2.517e-01, -3.916e-01, -3.841e-01), r);\n\tr = MulAdd(s3_5, M4(2.251e-01, 2.664e-02, 3.331e-02, 2.836e-01, -2.527e-01, 4.076e-02, -1.331e-02, -3.068e-03, -4.003e-04, -3.312e-02, -4.418e-02, -7.245e-02, 1.807e-01, -5.017e-01, 6.191e-02, -6.283e-01), r);\n\tr = MulAdd(s3_6, M4(-5.410e-02, 7.319e-02, -4.022e-02, -5.598e-02, 1.675e-01, -1.364e-02, 3.302e-02, 2.473e-03, 1.630e-01, -1.955e-02, 2.311e-02, -1.402e-01, -1.078e-02, -1.675e-01, 1.211e-01, -3.069e-03), r);\n\tr = MulAdd(s3_7, M4(-3.596e-02, -1.378e-02, 1.912e-01, 1.530e-02, 1.993e-01, -2.688e-01, -6.555e-02, -2.267e-01, -9.549e-02, -1.909e-01, -1.314e-01, -1.145e-01, -3.460e-01, -2.630e-02, 3.692e-01, -1.209e-01), r);\n\tr = MulAdd(s3_8, M4(2.329e-01, 4.865e-02, 1.411e-02, 1.037e-01, -3.701e-01, -9.056e-02, -1.421e-01, -3.640e-01, -2.971e-02, -8.960e-02, 4.366e-03, -1.232e-01, -5.654e-02, -6.378e-02, 2.785e-01, -1.645e-01), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -9.721e-03, -6.824e-03, 1.589e-03, -2.346e-03 };\n\tr = MulAdd(s0_0, M4(1.057e-01, 8.402e-02, -7.690e-02, -5.544e-02, -1.356e-02, -1.211e-01, -3.841e-02, 7.556e-02, -1.057e-01, -6.017e-02, -5.377e-03, -3.373e-02, 2.015e-02, -3.443e-01, 4.561e-03, -1.471e-01), r);\n\tr = MulAdd(s0_1, M4(-9.330e-02, -3.572e-02, 1.283e-01, 1.837e-02, -1.698e-02, -7.926e-02, -3.830e-02, -6.985e-02, 1.791e-01, -1.764e-02, -2.987e-01, -2.914e-02, -1.109e-01, -2.236e-01, 1.116e-02, 1.155e-03), r);\n\tr = MulAdd(s0_2, M4(-1.422e-02, -3.524e-02, 6.026e-02, 2.085e-03, 3.122e-02, -8.025e-02, -2.071e-01, 6.779e-03, 3.087e-02, -1.078e-01, -1.336e-01, 3.374e-02, 4.059e-02, -1.509e-01, -2.500e-02, 1.575e-02), r);\n\tr = MulAdd(s0_3, M4(2.079e-01, 1.217e-01, -9.225e-02, -1.526e-01, 2.831e-01, -2.399e-01, -1.879e-01, 3.896e-02, -2.888e-02, 1.898e-01, 7.200e-03, 1.166e-01, 4.709e-01, -2.553e-01, -8.659e-02, -1.966e-01), r);\n\tr = MulAdd(s0_4, M4(-2.466e-01, 1.668e-01, -3.000e-01, 1.331e-01, 1.691e-01, -8.165e-02, 1.461e-01, -2.816e-01, 4.627e-01, -5.020e-02, 4.608e-02, -4.259e-01, 1.733e-01, -2.493e-01, -2.859e-01, 1.255e-01), r);\n\tr = MulAdd(s0_5, M4(-1.061e-01, -1.312e-02, 4.457e-03, 6.950e-02, -1.528e-02, -8.325e-03, 9.288e-03, 4.323e-04, -1.349e-01, -4.300e-02, -1.214e-01, -6.221e-02, 1.326e-01, 1.729e-02, -9.435e-03, -8.256e-02), r);\n\tr = MulAdd(s0_6, M4(-2.764e-01, 2.277e-01, -6.479e-02, 9.793e-02, -1.252e-01, -2.225e-01, -3.927e-02, 9.069e-03, -3.082e-02, -9.839e-02, -1.432e-02, 4.213e-03, 1.038e-01, -1.336e-02, -8.449e-02, 9.390e-03), r);\n\tr = MulAdd(s0_7, M4(1.321e-01, -1.783e-01, 3.953e-02, -4.840e-03, -8.847e-02, 3.953e-02, -2.180e-03, 3.542e-02, -1.772e-01, -9.279e-02, -1.972e-02, -1.933e-02, 9.595e-02, -7.297e-02, -2.008e-02, 2.667e-02), r);\n\tr = MulAdd(s0_8, M4(-1.079e-02, -5.796e-02, 8.349e-02, 9.407e-03, -6.521e-02, 2.585e-02, 3.029e-02, -2.179e-02, 1.644e-02, 2.894e-02, 9.475e-02, 2.535e-02, -1.062e-01, 1.059e-01, 5.134e-02, -4.920e-02), r);\n\tr = MulAdd(s1_0, M4(2.292e-02, -1.255e-01, 6.694e-03, -1.429e-02, 2.778e-02, 1.610e-02, -5.433e-02, -1.691e-02, -8.172e-02, 1.096e-01, -7.444e-02, -1.744e-02, -1.607e-02, -1.718e-02, 2.261e-02, -7.930e-02), r);\n\tr = MulAdd(s1_1, M4(-1.606e-01, 2.755e-01, 2.518e-01, -8.121e-02, 8.844e-02, -9.943e-02, -1.479e-01, 2.317e-03, -1.857e-02, 3.330e-01, -2.844e-01, 5.172e-03, 4.147e-02, 8.858e-05, -3.684e-02, 2.822e-02), r);\n\tr = MulAdd(s1_2, M4(1.972e-02, 1.372e-01, 8.050e-02, -3.001e-02, -2.199e-02, -1.105e-03, -6.767e-02, -1.520e-02, 2.293e-02, 4.982e-04, 1.077e-01, -4.043e-02, -3.146e-04, 1.341e-04, -2.927e-02, 1.540e-03), r);\n\tr = MulAdd(s1_3, M4(6.177e-01, -2.128e-01, -1.951e-01, -2.603e-01, -2.382e-01, 4.451e-02, -6.117e-02, 2.986e-01, -1.350e-01, -3.939e-02, -2.575e-02, 6.810e-02, -5.279e-02, -4.608e-02, -8.021e-02, -7.411e-02), r);\n\tr = MulAdd(s1_4, M4(-1.743e-01, 3.337e-01, -2.366e-01, 1.677e-01, 1.648e-01, -1.324e-01, 4.842e-02, -1.070e-01, 1.649e-01, 5.767e-01, 8.170e-02, -1.744e-01, 1.955e-01, 1.592e-01, -2.500e-01, -7.249e-02), r);\n\tr = MulAdd(s1_5, M4(-1.271e-01, -1.008e-01, 7.718e-04, 6.185e-03, 2.051e-02, -1.960e-02, 5.900e-02, -7.462e-03, -9.429e-02, -6.792e-02, -1.796e-01, 7.379e-02, -3.235e-02, 4.667e-03, -8.281e-02, -1.639e-02), r);\n\tr = MulAdd(s1_6, M4(2.655e-01, 4.646e-02, -7.062e-02, 1.656e-01, 1.325e-01, -1.897e-01, 5.944e-04, 4.675e-02, -5.384e-02, -9.959e-02, -6.261e-05, 2.482e-03, -1.603e-01, 1.532e-03, -6.567e-02, 5.924e-02), r);\n\tr = MulAdd(s1_7, M4(3.912e-01, -2.348e-01, -1.125e-02, 6.278e-02, -8.276e-02, 1.717e-01, -2.386e-02, 5.405e-02, 1.651e-01, -7.568e-02, -2.812e-02, 1.120e-02, 7.600e-02, -3.569e-02, 8.237e-02, 3.588e-02), r);\n\tr = MulAdd(s1_8, M4(-1.545e-01, -2.594e-01, 5.109e-02, -3.375e-02, -6.946e-02, 5.645e-04, -3.457e-02, -1.802e-02, -8.377e-02, 3.700e-02, -5.377e-02, 2.370e-03, -5.512e-02, 3.772e-02, -6.696e-03, -2.474e-02), r);\n\tr = MulAdd(s2_0, M4(9.595e-02, -1.386e-01, 6.095e-02, 1.382e-01, -6.666e-02, 3.536e-02, 3.510e-02, 9.837e-02, -7.013e-02, 1.777e-02, -6.525e-02, 4.813e-03, 4.890e-02, 1.697e-01, 4.055e-02, 3.352e-03), r);\n\tr = MulAdd(s2_1, M4(-9.534e-02, -1.931e-01, 7.936e-02, -5.563e-03, 1.180e-01, -1.126e-01, -4.561e-01, 1.382e-02, -5.442e-02, 1.826e-02, -1.906e-01, 2.481e-02, 1.479e-01, 6.991e-02, -4.527e-01, 4.636e-02), r);\n\tr = MulAdd(s2_2, M4(2.077e-02, -1.935e-02, 2.863e-02, -1.457e-03, 8.646e-02, -3.495e-02, -1.110e-01, -5.121e-02, 1.296e-02, 1.610e-01, 1.111e-02, -5.463e-03, -6.310e-02, 9.282e-02, -1.124e-02, -5.502e-03), r);\n\tr = MulAdd(s2_3, M4(-2.461e-01, 2.046e-01, 7.247e-02, 4.344e-01, -2.654e-03, -1.548e-01, 5.001e-02, -2.193e-02, -2.841e-02, 4.966e-02, -5.860e-02, -1.607e-02, -3.365e-01, 3.779e-01, -7.002e-02, 2.456e-01), r);\n\tr = MulAdd(s2_4, M4(-3.244e-02, 4.290e-01, 8.561e-02, -8.759e-02, 5.843e-01, 2.402e-01, -7.254e-02, 1.672e-01, 9.564e-03, 6.555e-01, 1.018e-01, 2.472e-01, 3.227e-01, -2.279e-01, 2.948e-01, 1.007e-01), r);\n\tr = MulAdd(s2_5, M4(7.899e-02, -3.829e-02, -6.897e-02, -6.274e-02, -1.648e-01, 1.819e-01, -3.680e-02, -2.700e-02, -1.223e-01, 3.068e-02, -9.879e-02, 9.617e-02, -1.048e-01, 8.574e-03, 1.253e-01, 1.451e-02), r);\n\tr = MulAdd(s2_6, M4(6.709e-02, -2.087e-03, -3.317e-02, 9.660e-02, -4.432e-02, 1.087e-01, -3.855e-03, 3.000e-02, -1.565e-01, 1.285e-02, -1.122e-02, -2.268e-02, 2.213e-01, -5.280e-03, -1.048e-02, 1.095e-02), r);\n\tr = MulAdd(s2_7, M4(3.409e-02, 1.319e-02, -3.860e-02, 1.186e-01, -1.729e-01, 6.734e-02, -4.122e-02, -1.425e-02, -1.333e-01, 3.082e-01, -5.667e-02, 1.330e-02, -7.902e-02, -2.279e-01, -2.277e-02, -7.345e-02), r);\n\tr = MulAdd(s2_8, M4(-8.456e-02, 7.960e-03, -3.009e-02, 3.726e-02, -1.028e-01, 9.260e-02, -9.118e-03, -1.295e-02, 8.764e-02, 3.246e-03, -3.662e-02, 3.309e-02, -6.546e-02, -1.168e-01, 1.179e-02, -1.356e-02), r);\n\tr = MulAdd(s3_0, M4(2.830e-01, -1.486e-01, -6.659e-02, 7.406e-02, 3.936e-02, 1.384e-01, -8.613e-02, 5.222e-02, -2.008e-02, -3.306e-02, 3.603e-03, 8.508e-03, 6.657e-02, 8.277e-03, -1.684e-02, -3.086e-02), r);\n\tr = MulAdd(s3_1, M4(2.673e-02, -1.550e-01, -1.939e-01, 1.124e-01, 1.494e-01, 3.597e-01, -2.434e-01, -3.767e-02, 6.287e-02, -1.489e-02, -2.108e-01, 9.890e-02, -6.012e-02, -1.588e-01, 5.574e-02, 6.678e-02), r);\n\tr = MulAdd(s3_2, M4(7.056e-02, -9.550e-02, 1.579e-02, 6.754e-02, 6.387e-02, 9.595e-02, -1.968e-01, -3.396e-02, -6.625e-03, 1.153e-01, -2.162e-02, -1.236e-02, -2.182e-02, 9.085e-02, -7.137e-02, 3.357e-02), r);\n\tr = MulAdd(s3_3, M4(8.677e-02, -7.446e-02, 8.953e-02, 2.128e-01, 3.175e-01, 1.377e-02, 9.215e-02, 8.452e-02, -2.583e-01, 5.582e-03, 4.653e-02, 1.038e-01, -5.802e-01, -1.506e-01, -5.875e-02, -4.308e-02), r);\n\tr = MulAdd(s3_4, M4(-5.314e-02, 5.278e-01, 5.725e-02, -3.945e-02, 3.018e-01, -3.613e-02, 1.135e-01, 6.378e-02, 1.129e-01, 3.251e-01, -2.298e-01, 2.272e-01, -2.859e-02, -1.997e-01, -1.289e-02, -9.605e-02), r);\n\tr = MulAdd(s3_5, M4(-8.572e-03, 1.098e-01, 6.951e-02, -1.006e-01, 8.029e-02, -1.004e-02, 3.641e-03, 3.452e-02, -2.027e-01, -1.419e-01, 9.411e-02, 4.631e-03, -2.382e-02, -1.774e-01, 9.282e-02, 7.921e-02), r);\n\tr = MulAdd(s3_6, M4(-5.645e-02, 5.717e-02, -8.271e-02, 1.460e-01, 1.135e-01, -2.347e-02, 3.011e-02, 6.505e-02, -1.186e-01, 6.520e-02, 2.698e-03, -4.274e-02, 3.661e-03, 1.253e-01, 1.867e-02, 3.871e-03), r);\n\tr = MulAdd(s3_7, M4(9.708e-02, -1.020e-01, -1.182e-01, 1.458e-01, -1.234e-01, -1.871e-01, -2.362e-02, -5.212e-02, 2.773e-01, -6.513e-02, -4.346e-03, -4.354e-02, 3.573e-01, -2.655e-02, 4.325e-02, -2.378e-02), r);\n\tr = MulAdd(s3_8, M4(-8.228e-02, -2.852e-02, -2.048e-02, 3.619e-02, 9.848e-03, 4.128e-02, -4.446e-03, -9.824e-03, -1.064e-01, -5.623e-02, 4.160e-03, -3.699e-02, -6.863e-03, -2.035e-02, 1.601e-03, -4.166e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -2.548e-03, 2.631e-03, -1.796e-03, 6.472e-05 };\n\tr = MulAdd(s0_0, M4(-2.150e-02, 3.627e-02, 1.098e-01, -2.531e-02, 7.604e-03, 6.546e-02, -3.447e-01, 5.052e-03, -5.728e-02, 1.302e-02, 1.200e-01, -3.060e-02, 3.626e-02, 8.441e-03, -1.570e-01, 1.402e-02), r);\n\tr = MulAdd(s0_1, M4(-3.360e-02, -1.269e-01, 1.234e-02, 9.393e-02, -1.762e-01, 2.675e-01, -1.063e-01, -8.648e-02, -1.491e-01, 1.604e-01, -1.693e-01, 5.005e-02, 1.166e-01, -1.870e-02, 8.843e-02, 1.417e-02), r);\n\tr = MulAdd(s0_2, M4(6.443e-02, 2.579e-02, 5.084e-02, -2.141e-02, -4.518e-02, -6.926e-02, -7.947e-02, -5.832e-03, 7.140e-02, -1.427e-01, 1.275e-01, 7.012e-02, -1.982e-03, -6.910e-02, -2.167e-01, 1.330e-02), r);\n\tr = MulAdd(s0_3, M4(-2.132e-02, 2.807e-02, 1.044e-01, 1.442e-02, 3.026e-01, 1.629e-01, 1.141e-01, 1.649e-01, 6.632e-02, 1.488e-02, -1.725e-01, 3.376e-02, -4.740e-01, 5.156e-03, -2.510e-01, 6.820e-02), r);\n\tr = MulAdd(s0_4, M4(-7.393e-02, 1.460e-01, -2.561e-02, 2.588e-01, 2.248e-01, 1.511e-01, 2.192e-01, -1.222e-01, 4.382e-01, 3.200e-02, 3.125e-02, -3.612e-01, -1.890e-01, -2.971e-01, -1.180e-01, -1.741e-01), r);\n\tr = MulAdd(s0_5, M4(-8.022e-03, 3.348e-03, -9.508e-02, -5.842e-03, 2.266e-02, -3.213e-02, -1.024e-01, -8.443e-02, 2.648e-03, -1.541e-01, 8.091e-02, -4.184e-02, -2.928e-02, 9.030e-02, -1.811e-01, -1.895e-02), r);\n\tr = MulAdd(s0_6, M4(2.134e-01, 1.204e-02, 2.013e-02, -8.178e-02, 1.413e-02, 5.513e-02, 1.111e-01, 2.577e-01, 1.495e-03, -5.161e-02, 1.933e-02, 7.202e-02, -1.053e-01, -6.070e-03, -1.038e-01, -1.344e-01), r);\n\tr = MulAdd(s0_7, M4(3.203e-01, -1.824e-01, -4.901e-02, -2.154e-01, 3.227e-02, 2.323e-02, 1.477e-02, 1.885e-02, 1.952e-01, -3.905e-02, 3.536e-02, 1.957e-01, 2.784e-01, -1.506e-01, -1.907e-01, 5.836e-02), r);\n\tr = MulAdd(s0_8, M4(-7.886e-02, -1.750e-01, 4.233e-02, -2.816e-01, -1.097e-02, 5.733e-03, -2.752e-02, 3.943e-03, -6.800e-02, -1.612e-02, -5.243e-02, -1.074e-02, -8.493e-02, 9.050e-02, -7.421e-02, -1.520e-01), r);\n\tr = MulAdd(s1_0, M4(1.024e-01, -3.071e-02, -7.767e-02, -1.160e-02, -1.668e-01, -7.681e-03, 7.039e-02, 4.690e-02, -4.672e-02, 3.627e-03, 2.337e-02, -1.154e-02, 2.441e-03, 1.719e-02, 3.137e-02, 2.789e-02), r);\n\tr = MulAdd(s1_1, M4(1.128e-01, 4.853e-02, 3.627e-01, 5.215e-03, -4.474e-02, -3.383e-02, 5.492e-03, 1.021e-01, -3.035e-02, 7.184e-03, 9.787e-02, 6.902e-02, 2.559e-02, 6.446e-03, -1.559e-01, 1.046e-01), r);\n\tr = MulAdd(s1_2, M4(5.861e-02, 8.621e-02, -4.399e-03, 1.267e-02, 1.553e-02, -1.611e-02, 5.352e-02, 2.444e-03, -3.847e-02, 1.450e-01, 2.706e-01, -1.122e-01, -2.804e-03, 1.538e-02, 6.326e-02, -8.110e-02), r);\n\tr = MulAdd(s1_3, M4(-4.627e-01, -2.751e-02, 1.883e-02, 6.767e-02, 1.365e-03, -7.980e-02, -1.068e-01, -8.643e-02, -1.110e-01, -5.781e-02, 2.143e-01, 6.533e-02, 9.844e-02, -1.375e-01, 1.719e-01, 1.652e-02), r);\n\tr = MulAdd(s1_4, M4(-3.445e-01, 1.223e-01, -5.479e-01, 1.608e-01, 2.282e-01, 4.579e-02, 2.864e-02, -2.323e-01, 3.533e-01, -1.573e-01, 5.705e-02, -1.202e-01, -3.604e-02, 7.107e-02, -7.818e-02, -1.104e-01), r);\n\tr = MulAdd(s1_5, M4(9.595e-02, 2.793e-01, -1.118e-01, -7.789e-02, -5.870e-02, -9.267e-02, 1.003e-01, -7.460e-02, 3.747e-02, -4.606e-01, 1.714e-01, -7.485e-04, -1.787e-02, -2.575e-02, 8.273e-02, -3.576e-02), r);\n\tr = MulAdd(s1_6, M4(8.346e-03, -1.200e-01, 1.913e-03, -5.262e-02, -3.471e-02, -3.522e-02, 4.409e-02, 7.695e-02, 4.910e-02, -5.825e-02, 1.350e-01, 3.096e-04, 3.797e-03, -9.389e-02, 5.738e-02, -1.094e-02), r);\n\tr = MulAdd(s1_7, M4(3.179e-01, -2.333e-01, 7.353e-02, -4.401e-01, -1.195e-01, 6.711e-02, -2.217e-02, -1.906e-01, 1.201e-01, -8.349e-02, 4.145e-02, -2.381e-02, 6.768e-02, 1.101e-02, 2.261e-02, -2.036e-01), r);\n\tr = MulAdd(s1_8, M4(-4.521e-02, -3.368e-01, 2.684e-01, -1.975e-01, -1.879e-02, 1.738e-02, 4.605e-02, 1.067e-01, -6.758e-02, -8.444e-02, 1.229e-01, -6.125e-02, -1.200e-02, -6.803e-03, -6.103e-03, 5.747e-02), r);\n\tr = MulAdd(s2_0, M4(-1.677e-02, -7.385e-03, 7.314e-03, 6.695e-02, 5.321e-03, -7.504e-03, 1.785e-01, 8.061e-02, 6.187e-02, 2.549e-02, -4.809e-02, -3.195e-02, -1.591e-01, 8.312e-02, -6.793e-02, 3.581e-02), r);\n\tr = MulAdd(s2_1, M4(3.261e-02, -7.202e-02, -1.190e-01, 1.516e-01, -5.670e-03, 1.967e-01, -4.255e-01, 4.834e-02, 4.823e-02, 4.959e-02, 2.604e-01, -9.989e-02, -4.437e-02, -6.331e-02, 5.512e-02, -4.163e-02), r);\n\tr = MulAdd(s2_2, M4(4.071e-02, 7.433e-02, 7.196e-02, -3.118e-02, -4.637e-02, -3.775e-02, -2.451e-02, -1.277e-02, 4.582e-02, -4.385e-02, 3.060e-01, -1.481e-02, 3.523e-03, 1.282e-02, -1.091e-01, 6.814e-02), r);\n\tr = MulAdd(s2_3, M4(2.584e-01, -1.657e-02, -1.307e-01, -1.203e-01, -5.162e-02, 6.113e-04, 6.253e-02, 1.557e-01, -1.242e-01, -5.452e-02, 3.666e-01, -9.119e-02, 5.750e-01, -4.420e-02, -2.222e-01, 3.541e-02), r);\n\tr = MulAdd(s2_4, M4(-3.262e-02, 1.971e-01, -7.493e-02, -2.959e-01, 1.890e-02, -4.554e-02, -1.241e-01, -2.084e-01, -3.179e-01, -6.226e-02, -3.992e-01, -4.678e-02, 9.481e-02, -2.873e-01, -9.361e-02, -2.487e-01), r);\n\tr = MulAdd(s2_5, M4(-9.744e-02, -3.792e-02, -1.262e-01, -1.641e-02, -9.649e-02, 2.342e-01, 7.814e-02, -1.527e-01, -2.606e-01, -1.009e-01, 1.738e-02, -1.352e-01, 4.687e-03, -4.251e-03, 8.552e-02, -1.215e-01), r);\n\tr = MulAdd(s2_6, M4(4.338e-02, -6.728e-02, -2.316e-02, 1.704e-01, -4.922e-02, -2.497e-02, -3.437e-02, -2.233e-02, 8.673e-02, -8.427e-02, 3.012e-01, 1.868e-02, -5.820e-02, 2.842e-02, 1.574e-01, -5.813e-02), r);\n\tr = MulAdd(s2_7, M4(7.404e-02, -4.425e-02, 8.098e-02, -7.744e-02, -2.555e-02, 7.253e-02, 8.971e-02, -4.607e-02, -1.052e-01, 7.666e-02, 3.011e-02, -3.467e-01, 5.327e-02, -4.348e-02, 2.473e-01, 1.847e-01), r);\n\tr = MulAdd(s2_8, M4(-1.205e-02, -1.017e-01, 1.288e-02, -6.228e-02, -7.597e-03, 9.311e-03, 2.267e-02, 5.187e-04, 2.936e-02, -1.846e-01, 2.377e-02, 1.072e-01, 7.069e-02, -6.199e-02, 1.657e-01, 1.708e-01), r);\n\tr = MulAdd(s3_0, M4(-2.337e-01, 2.411e-01, -5.654e-02, -6.128e-02, 1.441e-01, -7.801e-02, 8.768e-02, -1.401e-02, -7.979e-02, 2.938e-02, 3.423e-02, 2.258e-02, 3.470e-02, 1.049e-01, -9.900e-02, -3.849e-02), r);\n\tr = MulAdd(s3_1, M4(1.636e-01, -5.372e-01, 7.445e-02, 4.422e-01, 2.717e-02, 4.842e-01, -3.236e-01, -1.247e-01, 9.917e-03, 2.162e-02, -1.777e-01, 3.460e-02, -1.702e-01, -4.158e-02, -6.269e-02, 3.410e-03), r);\n\tr = MulAdd(s3_2, M4(-2.422e-03, -5.821e-02, -8.683e-02, -1.286e-02, 7.737e-02, 1.772e-01, 1.056e-01, -5.362e-02, 3.000e-02, 3.260e-02, -2.047e-02, -2.903e-02, 4.510e-02, 3.030e-02, 3.413e-02, 1.265e-01), r);\n\tr = MulAdd(s3_3, M4(-3.559e-01, -4.824e-03, 2.601e-01, 5.725e-02, 1.480e-01, 9.340e-02, -6.162e-03, -1.121e-01, 3.200e-02, -2.580e-02, -1.105e-01, 3.647e-02, 1.558e-01, 3.367e-02, -3.009e-01, 2.425e-01), r);\n\tr = MulAdd(s3_4, M4(-3.534e-01, 1.046e-01, -1.263e-02, -2.606e-01, 1.026e-01, 2.504e-01, -2.282e-01, -1.836e-01, 7.199e-02, -3.665e-02, -2.959e-01, -2.501e-01, 2.980e-02, -1.711e-01, 2.363e-01, -1.904e-01), r);\n\tr = MulAdd(s3_5, M4(-1.381e-01, 9.220e-02, 1.082e-01, -1.717e-01, 5.453e-02, 1.216e-01, 6.893e-03, 4.137e-02, -3.005e-02, -2.100e-03, -5.898e-02, -3.922e-02, 1.715e-01, -1.886e-01, -2.510e-01, 2.493e-01), r);\n\tr = MulAdd(s3_6, M4(5.587e-02, -5.724e-02, 4.462e-02, 1.133e-01, 2.672e-02, 1.392e-02, -1.762e-02, 8.027e-02, 1.795e-02, 4.128e-02, -1.986e-02, 1.847e-02, -1.562e-01, 6.650e-02, -1.597e-01, -8.866e-02), r);\n\tr = MulAdd(s3_7, M4(5.177e-02, -1.843e-01, 6.256e-03, 3.103e-02, -8.057e-03, 1.538e-01, 8.820e-02, 9.421e-02, -1.280e-01, 3.670e-02, 2.720e-03, -7.796e-02, -5.717e-02, -1.237e-01, -1.806e-01, 9.065e-02), r);\n\tr = MulAdd(s3_8, M4(-4.682e-02, -1.655e-01, 3.621e-02, 1.126e-02, 1.055e-01, 4.565e-02, -4.206e-02, 1.496e-01, 6.181e-02, 5.189e-02, 6.303e-02, -1.095e-01, -1.832e-02, 1.099e-01, 6.317e-03, -2.335e-01), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.083e-02, 2.841e-03, 4.056e-03, -3.056e-03 };\n\tr = MulAdd(s0_0, M4(4.108e-02, 4.397e-02, 8.099e-02, 6.707e-02, -7.574e-03, -3.379e-02, -1.189e-01, 2.469e-02, 5.677e-02, 1.936e-01, -2.147e-01, 2.745e-02, -2.339e-02, 1.413e-01, 9.424e-03, -1.532e-02), r);\n\tr = MulAdd(s0_1, M4(6.845e-02, 2.566e-01, -3.429e-01, 7.152e-02, 7.412e-03, -1.234e-01, 1.319e-01, -1.394e-01, -1.452e-01, 4.029e-02, -8.428e-02, -9.997e-02, 3.241e-01, 4.534e-01, 1.353e-01, -6.836e-02), r);\n\tr = MulAdd(s0_2, M4(8.957e-02, 2.015e-01, -9.037e-02, 4.122e-02, -9.043e-02, -2.070e-01, 1.988e-01, -7.000e-02, -1.122e-02, 3.547e-02, 2.630e-03, -6.662e-03, 1.449e-01, 1.636e-01, -4.471e-02, 7.979e-02), r);\n\tr = MulAdd(s0_3, M4(7.138e-02, 3.893e-02, 7.791e-02, 4.093e-02, -2.462e-01, 3.752e-02, 7.621e-03, -4.290e-02, -1.033e-01, 1.806e-01, -8.490e-03, -1.038e-01, 4.361e-02, 7.536e-02, 7.619e-02, -5.600e-02), r);\n\tr = MulAdd(s0_4, M4(-2.419e-02, 1.601e-01, 1.182e-01, -6.286e-02, 4.891e-02, 4.624e-02, -9.374e-02, 1.644e-01, -1.319e-01, 3.175e-01, -5.865e-02, -8.696e-02, 5.228e-01, 3.163e-01, -2.053e-01, 1.315e-01), r);\n\tr = MulAdd(s0_5, M4(2.643e-02, -1.714e-01, -2.308e-02, 2.050e-02, -1.852e-01, -5.479e-02, 6.061e-02, -1.538e-01, -7.382e-02, -4.387e-04, -5.849e-02, -5.184e-02, 1.197e-01, 5.114e-02, -3.098e-02, 1.580e-02), r);\n\tr = MulAdd(s0_6, M4(3.068e-02, 4.721e-04, 3.968e-02, 3.974e-02, 1.701e-02, -2.658e-02, 4.949e-02, -7.216e-02, -1.259e-01, -6.904e-03, 7.295e-02, 1.948e-02, -3.177e-02, -3.845e-03, 2.910e-02, -6.175e-03), r);\n\tr = MulAdd(s0_7, M4(3.500e-02, -6.070e-02, -3.675e-02, 5.680e-02, -8.178e-02, -1.257e-01, -1.144e-03, 1.419e-01, 1.017e-01, 6.111e-02, -9.663e-02, 3.145e-01, 1.886e-01, 1.274e-01, -6.735e-02, 1.646e-02), r);\n\tr = MulAdd(s0_8, M4(1.100e-02, -1.008e-01, -2.527e-02, 9.051e-02, -2.122e-02, -3.495e-02, 2.186e-02, -3.673e-02, -5.042e-02, -4.490e-02, -6.696e-02, -1.370e-01, 8.272e-02, -1.107e-01, 3.828e-02, 2.405e-02), r);\n\tr = MulAdd(s1_0, M4(4.308e-02, -1.587e-02, 5.034e-02, -1.256e-03, -3.630e-03, 9.342e-02, -1.246e-01, 1.407e-03, 2.283e-01, 7.103e-02, 1.496e-01, 1.529e-03, 7.748e-02, -4.744e-02, 1.267e-01, 8.372e-05), r);\n\tr = MulAdd(s1_1, M4(-2.667e-01, 4.345e-03, -6.051e-02, 7.748e-04, 5.212e-02, 7.912e-02, -7.013e-02, -4.177e-02, -5.925e-03, 7.525e-03, 1.316e-01, 1.347e-02, -1.046e-01, -3.121e-01, 4.098e-01, -3.102e-02), r);\n\tr = MulAdd(s1_2, M4(-7.060e-02, 2.314e-01, -9.224e-02, 2.077e-02, -4.781e-03, -7.540e-02, 7.904e-02, -2.268e-02, 4.577e-02, 1.067e-01, -1.948e-03, 4.846e-02, -2.153e-01, -1.920e-01, 7.195e-02, 5.041e-02), r);\n\tr = MulAdd(s1_3, M4(1.662e-02, 3.623e-03, 9.545e-03, 5.119e-04, -1.384e-01, 9.941e-03, 4.085e-02, 1.023e-02, 8.623e-02, -1.836e-02, 1.508e-01, 2.565e-02, 1.250e-01, -6.873e-02, 1.039e-02, 3.096e-02), r);\n\tr = MulAdd(s1_4, M4(-3.783e-01, 5.804e-02, 5.745e-02, -1.070e-01, 4.047e-01, 4.005e-01, -2.802e-01, 1.174e-01, -3.899e-01, -2.940e-01, 6.426e-01, -1.456e-01, -2.346e-01, -2.872e-01, 3.019e-02, 2.075e-01), r);\n\tr = MulAdd(s1_5, M4(-1.279e-01, -5.204e-02, 1.008e-01, -7.402e-02, -1.272e-01, -2.809e-02, 4.025e-02, -4.037e-02, 1.705e-01, 1.347e-01, 4.935e-02, -5.119e-03, -3.623e-01, -2.111e-01, 2.074e-01, -4.637e-01), r);\n\tr = MulAdd(s1_6, M4(3.894e-02, 1.740e-02, 1.167e-02, -8.472e-02, 2.890e-02, -2.453e-02, 4.209e-02, 1.043e-01, 8.521e-02, -9.523e-02, 6.200e-02, 1.241e-02, 3.387e-03, -2.783e-02, -2.927e-02, -2.315e-02), r);\n\tr = MulAdd(s1_7, M4(-1.122e-01, -5.652e-02, -4.186e-02, -4.056e-02, 1.860e-02, 8.204e-03, -1.358e-02, 2.056e-01, -6.379e-02, -1.215e-02, 1.135e-01, -2.047e-01, -1.013e-02, 1.194e-02, -1.397e-01, -1.773e-01), r);\n\tr = MulAdd(s1_8, M4(-2.283e-03, -1.172e-02, 2.030e-02, -3.740e-03, 6.208e-02, -1.690e-02, 7.899e-03, 1.212e-01, 1.094e-01, -4.111e-02, 4.576e-02, 7.825e-02, -6.665e-02, -9.950e-02, 6.104e-03, -1.272e-01), r);\n\tr = MulAdd(s2_0, M4(5.802e-02, -8.129e-02, 7.649e-02, 8.207e-02, -7.115e-02, -9.510e-02, 2.679e-01, 5.415e-02, 3.331e-02, -5.390e-02, 2.535e-01, -6.838e-02, 1.007e-01, -8.470e-02, 1.052e-01, -4.556e-03), r);\n\tr = MulAdd(s2_1, M4(-7.709e-02, -2.091e-01, 7.253e-02, 3.751e-02, -3.012e-02, 2.705e-01, 9.391e-02, 5.310e-02, -3.819e-02, -1.502e-01, 3.674e-01, 6.050e-02, 8.643e-02, -3.193e-02, 3.706e-01, -1.272e-01), r);\n\tr = MulAdd(s2_2, M4(-8.654e-02, -1.264e-01, 9.612e-02, -5.250e-02, 1.367e-02, 2.760e-02, 3.644e-02, 5.628e-02, -2.305e-02, -3.072e-02, 7.435e-02, 1.310e-01, 1.349e-03, -8.390e-02, 8.076e-02, 9.622e-02), r);\n\tr = MulAdd(s2_3, M4(2.535e-02, 3.247e-02, -3.928e-02, 1.713e-02, -1.630e-01, -4.284e-02, -8.256e-02, 2.143e-01, 1.523e-01, -1.190e-01, 1.579e-01, 1.972e-02, -1.024e-01, -3.809e-02, -1.194e-01, 1.843e-02), r);\n\tr = MulAdd(s2_4, M4(-2.534e-01, 4.147e-03, 3.652e-02, -2.514e-01, -4.926e-02, 1.540e-01, -6.906e-02, -2.077e-01, -4.119e-02, 6.231e-01, -2.267e-01, -1.284e-01, -1.211e-01, 1.260e-01, -3.930e-02, 1.480e-01), r);\n\tr = MulAdd(s2_5, M4(-1.185e-01, -1.450e-01, 5.094e-02, -1.236e-01, 5.897e-02, 3.769e-02, 4.215e-02, 4.909e-02, -1.146e-01, 1.742e-02, 2.068e-01, 1.393e-01, 7.795e-02, 1.028e-01, 4.501e-02, 1.306e-01), r);\n\tr = MulAdd(s2_6, M4(7.121e-03, 1.788e-02, 8.609e-03, 4.098e-02, 9.014e-02, 4.066e-02, -4.107e-02, -5.454e-02, 8.660e-02, 3.154e-02, 1.323e-01, 2.997e-02, 1.011e-02, -7.761e-02, 8.035e-02, 1.981e-02), r);\n\tr = MulAdd(s2_7, M4(-2.280e-02, -5.927e-02, -4.650e-02, -2.669e-02, 1.326e-02, -6.787e-02, -9.816e-02, -2.418e-01, -2.725e-02, -2.671e-02, 6.625e-02, 1.176e-01, -1.511e-01, -8.170e-02, 8.073e-02, -4.317e-02), r);\n\tr = MulAdd(s2_8, M4(2.503e-02, -5.313e-02, -5.163e-02, -1.025e-01, 3.311e-03, 5.522e-02, -2.906e-02, 6.220e-02, -1.606e-01, -9.050e-02, 1.435e-01, -7.260e-02, -1.731e-03, -3.100e-02, 6.860e-02, 5.068e-02), r);\n\tr = MulAdd(s3_0, M4(2.504e-01, 3.584e-02, 4.543e-02, 5.108e-03, 1.660e-01, 3.755e-02, 2.497e-02, 3.799e-02, 1.946e-01, 6.233e-02, 1.666e-02, 2.337e-02, 4.533e-01, -1.371e-01, -3.372e-01, 9.264e-02), r);\n\tr = MulAdd(s3_1, M4(-2.139e-01, -3.254e-01, 2.315e-01, 1.407e-01, -4.157e-02, 1.958e-01, -6.251e-03, 2.082e-03, -3.687e-02, 7.719e-02, 8.827e-02, 1.692e-02, 2.429e-03, -4.380e-02, -1.665e-01, -4.293e-01), r);\n\tr = MulAdd(s3_2, M4(2.632e-02, -4.644e-01, 3.778e-01, 1.915e-01, 1.765e-02, 9.826e-02, -5.215e-02, 6.615e-02, 4.066e-02, 8.500e-02, -6.289e-02, 1.127e-01, 4.373e-02, -2.529e-02, -3.463e-03, 1.561e-02), r);\n\tr = MulAdd(s3_3, M4(1.812e-01, 3.307e-02, -1.222e-01, -1.056e-01, 3.178e-01, -6.752e-02, -4.926e-02, 9.877e-02, -1.413e-02, 2.520e-02, 2.318e-02, -5.239e-02, -1.853e-02, 1.247e-01, -2.800e-01, -4.267e-02), r);\n\tr = MulAdd(s3_4, M4(-2.170e-01, 9.658e-02, -2.656e-02, -3.532e-01, -2.667e-01, -1.484e-01, 1.986e-01, 3.970e-01, -9.642e-02, 3.251e-01, -4.856e-02, -1.348e-01, -2.365e-01, -7.690e-02, -4.313e-02, -3.293e-01), r);\n\tr = MulAdd(s3_5, M4(3.116e-01, 3.575e-01, -1.439e-01, -2.788e-01, 1.682e-01, 3.373e-02, 1.132e-03, -2.062e-02, 2.790e-02, 4.237e-02, 6.550e-02, -7.303e-02, 1.220e-01, 4.608e-02, 2.672e-02, -6.588e-02), r);\n\tr = MulAdd(s3_6, M4(1.361e-01, 1.959e-02, -6.558e-02, -5.488e-02, 1.780e-01, 1.400e-02, -8.174e-02, 3.617e-02, 2.232e-02, 1.570e-02, 2.935e-02, 1.595e-02, 4.166e-02, 1.395e-02, -7.261e-02, 3.343e-02), r);\n\tr = MulAdd(s3_7, M4(-6.674e-03, -7.837e-02, 2.041e-02, -7.274e-02, -1.975e-01, -1.022e-01, 3.521e-02, -2.381e-01, 4.452e-02, -4.855e-02, -2.357e-02, 4.965e-02, -2.079e-03, -5.777e-02, -4.211e-02, -1.147e-01), r);\n\tr = MulAdd(s3_8, M4(1.852e-02, -4.532e-02, 3.780e-02, -2.960e-02, 4.216e-03, 7.749e-02, -2.922e-03, 9.211e-02, 1.465e-02, 1.361e-03, -5.097e-02, 2.529e-02, 6.341e-02, 1.534e-02, -2.929e-02, 6.519e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -5.051e-03, -7.374e-04, -9.013e-03, -1.041e-02 };\n\tr = MulAdd(s0_0, M4(-6.130e-04, -7.656e-02, 1.752e-01, 1.022e-01, 5.050e-03, -7.227e-02, 4.673e-03, -1.316e-01, -8.276e-02, -2.565e-02, 1.057e-01, 4.770e-02, -6.372e-02, -9.303e-02, 3.416e-02, 2.778e-02), r);\n\tr = MulAdd(s0_1, M4(-1.171e-01, 7.738e-02, 1.872e-01, 2.325e-02, 5.726e-02, 6.929e-02, -1.247e-01, -3.376e-02, -1.218e-01, 1.106e-01, -9.175e-02, 2.578e-02, -1.139e-01, -5.745e-02, -5.009e-03, 1.082e-01), r);\n\tr = MulAdd(s0_2, M4(-1.007e-01, 7.851e-03, 2.006e-02, 1.214e-01, 8.999e-02, -2.452e-02, -6.921e-02, -1.470e-01, -2.441e-02, -6.812e-02, -3.163e-02, -3.730e-02, -9.304e-02, -6.580e-02, -3.085e-02, 4.557e-02), r);\n\tr = MulAdd(s0_3, M4(2.147e-02, 2.392e-02, 6.809e-02, 5.823e-02, -5.266e-02, -6.499e-02, -1.937e-01, -1.774e-01, -7.026e-02, 5.565e-02, 2.104e-01, 9.940e-02, -6.656e-02, -5.599e-02, -9.527e-02, -2.195e-02), r);\n\tr = MulAdd(s0_4, M4(-1.314e-01, -2.100e-02, -8.236e-02, -5.332e-03, -8.806e-02, -1.931e-02, -3.184e-02, 1.283e-01, -1.044e-01, -9.658e-02, -3.773e-02, 4.251e-01, -6.699e-01, -2.441e-01, 2.817e-01, 3.949e-02), r);\n\tr = MulAdd(s0_5, M4(-6.834e-02, 1.218e-01, -6.189e-02, -1.587e-01, -9.935e-03, 4.393e-02, -2.135e-01, -2.161e-01, 5.552e-03, 5.016e-02, 3.099e-02, -1.251e-01, 2.489e-02, -4.931e-01, 5.038e-03, -8.030e-03), r);\n\tr = MulAdd(s0_6, M4(3.225e-02, -2.105e-02, 3.418e-03, 1.529e-02, -3.405e-02, 3.200e-02, -1.592e-01, -9.388e-02, 6.723e-02, 3.172e-02, -4.816e-02, 1.309e-01, -1.431e-02, -7.290e-02, -9.302e-02, -8.654e-02), r);\n\tr = MulAdd(s0_7, M4(4.884e-02, 1.260e-01, 6.116e-02, 8.572e-02, 1.022e-01, 2.291e-02, -7.667e-02, -1.023e-01, -1.076e-01, 2.182e-01, 1.787e-01, 4.600e-01, 4.603e-02, 4.013e-02, -1.248e-01, 1.515e-02), r);\n\tr = MulAdd(s0_8, M4(2.182e-02, 1.733e-01, 1.738e-01, 1.317e-01, -3.960e-02, 1.821e-02, -6.237e-02, -3.957e-02, -8.466e-02, 3.118e-01, -1.109e-03, 6.180e-02, 1.087e-01, 1.219e-01, 1.164e-01, 7.167e-02), r);\n\tr = MulAdd(s1_0, M4(-5.654e-03, -5.632e-02, -1.110e-01, -8.149e-02, -4.162e-02, -3.990e-02, 7.565e-02, -5.569e-02, 5.983e-02, 3.346e-02, 1.598e-02, 3.390e-02, 7.153e-02, 7.041e-03, -1.990e-02, 1.044e-01), r);\n\tr = MulAdd(s1_1, M4(-1.193e-02, -1.392e-01, -6.353e-02, -5.281e-02, -3.663e-02, 4.147e-02, -1.629e-01, -1.972e-02, 4.507e-02, 6.254e-02, -2.663e-02, -2.552e-02, 2.680e-01, 6.236e-02, -5.901e-02, -1.626e-02), r);\n\tr = MulAdd(s1_2, M4(-1.057e-01, -3.432e-02, 5.563e-02, 1.240e-01, 1.598e-02, -3.795e-02, -1.715e-02, -2.897e-03, 1.671e-02, 7.545e-04, 3.111e-02, 5.136e-02, 1.207e-01, -1.587e-02, 7.899e-02, 3.483e-02), r);\n\tr = MulAdd(s1_3, M4(-1.056e-02, 8.004e-03, -1.297e-02, -2.314e-02, -4.324e-02, -1.453e-02, -3.458e-02, 7.711e-03, 9.450e-02, -7.279e-03, -1.025e-01, -2.236e-01, 5.674e-02, 6.152e-02, 7.612e-02, 8.618e-03), r);\n\tr = MulAdd(s1_4, M4(-1.020e-01, -1.119e-01, -4.415e-01, -4.113e-01, -2.564e-01, -8.898e-02, 2.198e-01, 3.662e-01, 3.076e-01, -3.531e-01, -3.432e-02, 2.568e-01, -1.218e-01, 5.504e-02, 2.069e-01, -6.714e-01), r);\n\tr = MulAdd(s1_5, M4(-5.354e-02, 5.475e-02, -3.443e-01, -2.398e-01, -2.952e-02, 1.826e-02, -3.823e-02, -9.658e-02, -1.836e-02, -7.218e-02, 5.875e-02, -1.017e-01, 2.128e-01, -2.690e-01, -1.918e-01, -2.150e-01), r);\n\tr = MulAdd(s1_6, M4(9.334e-04, 1.622e-02, 3.458e-02, 6.131e-02, 2.779e-02, 4.021e-03, 4.950e-02, -1.843e-02, 7.233e-02, 2.085e-03, -1.719e-02, 2.032e-02, 4.844e-03, -5.081e-03, 2.610e-02, 1.633e-02), r);\n\tr = MulAdd(s1_7, M4(-3.670e-02, 5.013e-02, -6.773e-02, -6.609e-02, 1.170e-01, 3.290e-02, -9.547e-02, -2.685e-02, -1.327e-01, -3.630e-03, -2.409e-01, -3.083e-01, 3.003e-02, 1.812e-01, 1.606e-01, 1.490e-01), r);\n\tr = MulAdd(s1_8, M4(-4.339e-02, 3.640e-03, -4.089e-02, -2.330e-02, 2.747e-02, 1.597e-01, 6.442e-03, 1.263e-01, -1.345e-02, 7.396e-02, 1.475e-02, -2.817e-03, -3.443e-02, 1.270e-01, 8.616e-02, 2.625e-02), r);\n\tr = MulAdd(s2_0, M4(5.066e-02, 8.901e-02, -5.357e-02, -3.008e-04, 6.639e-02, 4.513e-02, -7.859e-02, 1.288e-01, 1.788e-02, 3.146e-03, -1.870e-01, 8.331e-03, 8.237e-02, 1.556e-02, -4.060e-02, -3.354e-02), r);\n\tr = MulAdd(s2_1, M4(1.211e-01, -1.958e-02, -1.821e-01, -2.678e-01, 5.985e-02, -3.434e-02, -1.473e-04, -4.211e-02, 9.400e-02, -1.979e-01, -1.631e-01, -1.431e-01, 1.288e-01, 1.301e-01, 7.110e-02, 1.196e-01), r);\n\tr = MulAdd(s2_2, M4(9.777e-02, 7.517e-02, 5.213e-02, 2.601e-02, 6.137e-04, 2.892e-02, -3.826e-02, 3.445e-02, 2.244e-02, -2.289e-01, -2.827e-02, -1.499e-01, -1.293e-02, -1.242e-01, 7.029e-03, 3.803e-02), r);\n\tr = MulAdd(s2_3, M4(-7.883e-03, 3.989e-02, 2.103e-01, 9.354e-02, -2.803e-02, -2.155e-02, 1.230e-01, -2.510e-01, -4.577e-02, -8.206e-02, -4.634e-02, -5.687e-02, -4.763e-02, 8.117e-04, 4.716e-02, -6.873e-02), r);\n\tr = MulAdd(s2_4, M4(5.074e-02, -9.310e-02, -3.064e-01, -2.342e-01, -3.624e-01, 1.487e-01, -1.847e-01, -1.638e-01, -2.098e-01, -2.940e-01, -7.838e-02, -3.450e-01, -1.351e-01, 1.343e-01, -2.153e-01, -3.085e-01), r);\n\tr = MulAdd(s2_5, M4(-9.094e-02, 1.096e-01, -1.252e-01, -1.611e-01, -1.475e-02, -1.251e-01, -3.660e-02, -9.706e-02, 8.987e-02, -2.422e-01, -1.290e-01, -8.441e-02, 1.325e-01, -1.979e-01, 1.195e-01, 1.066e-01), r);\n\tr = MulAdd(s2_6, M4(3.450e-02, -1.976e-03, -2.692e-02, 2.470e-02, 4.134e-02, 1.106e-01, 5.587e-03, 1.203e-01, 3.348e-03, -1.976e-01, -6.304e-03, -9.345e-02, 4.034e-03, -2.611e-02, -2.223e-02, -4.153e-02), r);\n\tr = MulAdd(s2_7, M4(-1.626e-02, 9.840e-02, -8.620e-03, -1.479e-02, -1.601e-01, -1.274e-01, -1.019e-01, -1.193e-01, 1.353e-01, -1.601e-01, -3.038e-01, -2.066e-01, 4.585e-02, -7.649e-02, -1.581e-01, -1.694e-01), r);\n\tr = MulAdd(s2_8, M4(-6.049e-02, -7.053e-02, 6.931e-03, -1.654e-02, 1.932e-02, 2.112e-02, 6.621e-02, 7.266e-02, -5.272e-02, -5.286e-02, -2.885e-01, -2.012e-01, 5.525e-02, -1.721e-02, -4.575e-02, -9.210e-04), r);\n\tr = MulAdd(s3_0, M4(-2.271e-02, 2.668e-02, -1.480e-01, -2.625e-02, 9.554e-03, 6.925e-02, -1.252e-01, 2.866e-02, 1.177e-02, -4.071e-02, -2.070e-02, -2.731e-02, 8.067e-02, 1.324e-01, 5.591e-02, 1.092e-01), r);\n\tr = MulAdd(s3_1, M4(2.863e-01, -3.245e-02, -2.369e-01, -2.863e-01, -2.117e-03, -4.875e-02, 3.885e-02, -1.088e-01, 3.018e-02, -7.956e-02, 1.067e-01, 4.768e-03, 2.319e-01, 4.443e-01, 1.081e-01, -2.955e-01), r);\n\tr = MulAdd(s3_2, M4(2.579e-01, -1.163e-01, -4.524e-02, 1.974e-01, -3.204e-02, 2.183e-02, -9.418e-03, 1.514e-03, -7.422e-02, -8.652e-02, -1.831e-02, 7.031e-02, 1.678e-02, -6.474e-02, 3.298e-03, 1.898e-01), r);\n\tr = MulAdd(s3_3, M4(-1.287e-01, 6.977e-02, 2.034e-01, 1.203e-01, -1.577e-01, -1.159e-01, 5.411e-01, 1.079e-01, -5.869e-02, -9.771e-02, 4.457e-02, 1.618e-02, -1.096e-01, 7.700e-02, 1.746e-01, -4.051e-02), r);\n\tr = MulAdd(s3_4, M4(-2.308e-01, -1.267e-01, -1.459e-01, 5.467e-03, -1.625e-01, 2.188e-01, -1.188e-01, -9.377e-03, -2.440e-01, -8.329e-02, -1.366e-01, 4.782e-02, -3.538e-01, 1.737e-01, -1.531e-01, -1.443e-01), r);\n\tr = MulAdd(s3_5, M4(-4.365e-01, 5.178e-01, -2.166e-01, -2.063e-01, 3.981e-02, -1.054e-02, 5.701e-03, -4.639e-02, 4.680e-03, 2.433e-02, -3.099e-02, -1.344e-01, -4.936e-03, -2.510e-02, 9.593e-02, 6.336e-03), r);\n\tr = MulAdd(s3_6, M4(-9.464e-03, 6.306e-02, 9.266e-02, 1.239e-01, 9.411e-02, -8.883e-03, 1.447e-02, 3.888e-02, 3.209e-03, -4.987e-02, -7.248e-02, -4.528e-02, 3.389e-02, 3.453e-02, 4.363e-02, -1.139e-02), r);\n\tr = MulAdd(s3_7, M4(-1.101e-01, -7.831e-02, -6.882e-02, -4.597e-02, -2.022e-01, -1.681e-01, -8.124e-02, -1.088e-01, 7.872e-02, 5.759e-02, 6.814e-02, 9.876e-02, -3.474e-02, 5.673e-02, 1.178e-01, 1.018e-01), r);\n\tr = MulAdd(s3_8, M4(-4.424e-02, -1.753e-01, -1.880e-01, -1.999e-01, 1.189e-02, 2.421e-02, 7.007e-03, -2.655e-02, -3.715e-02, 6.751e-02, -7.333e-02, -7.710e-02, 2.700e-02, 2.248e-02, 9.982e-02, 5.511e-02), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 6\n//!DESC conv5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -8.722e-04, 4.321e-03, -2.282e-03, 5.775e-04 };\n\tr = MulAdd(s0_0, M4(-3.543e-02, 7.950e-02, 4.966e-02, -1.433e-03, 8.905e-03, -6.500e-02, 3.529e-02, -6.468e-03, -9.021e-04, -2.890e-03, 2.941e-02, 1.722e-02, -9.993e-02, -4.554e-02, 1.116e-01, 4.605e-03), r);\n\tr = MulAdd(s0_1, M4(-1.089e-01, -6.759e-02, 5.507e-02, 2.826e-02, 3.102e-02, 4.981e-03, -6.957e-03, -2.970e-02, 3.893e-02, -1.985e-02, 3.482e-03, -3.115e-03, 6.911e-02, -1.665e-01, -3.388e-02, -1.252e-02), r);\n\tr = MulAdd(s0_2, M4(1.046e-01, 2.638e-02, -8.177e-02, -9.476e-02, -2.313e-02, 9.290e-03, -1.408e-03, 4.678e-02, -1.106e-01, 4.373e-02, 4.853e-02, 4.161e-02, 2.201e-02, -4.520e-02, 1.641e-02, 1.639e-03), r);\n\tr = MulAdd(s0_3, M4(-3.788e-02, -1.936e-01, 4.114e-02, 1.067e-02, 2.481e-02, 1.257e-02, -2.408e-02, 9.182e-02, -1.143e-02, -2.779e-02, -5.009e-02, -3.573e-02, -4.170e-01, -3.232e-01, 1.870e-01, 1.240e-02), r);\n\tr = MulAdd(s0_4, M4(-2.012e-01, 3.719e-03, 4.258e-01, 1.357e-01, 1.017e-01, -9.143e-02, 1.062e-01, -2.157e-01, 2.065e-01, -1.497e-01, 2.811e-01, -1.238e-01, 4.285e-01, -1.183e-03, -2.368e-01, 3.175e-01), r);\n\tr = MulAdd(s0_5, M4(2.946e-01, 5.902e-02, 3.874e-02, -9.653e-02, -9.581e-02, 2.797e-02, -5.432e-02, -3.276e-03, -2.409e-01, 4.022e-02, 6.466e-03, -1.014e-01, 8.373e-02, 1.670e-02, 4.462e-02, 8.036e-02), r);\n\tr = MulAdd(s0_6, M4(-8.663e-02, -2.484e-02, 3.960e-02, -4.742e-03, 5.179e-02, 8.916e-02, -2.668e-02, -2.848e-02, 9.887e-02, 1.283e-02, -2.283e-02, -8.960e-02, -1.223e-01, -1.672e-02, 6.586e-02, 2.669e-02), r);\n\tr = MulAdd(s0_7, M4(-2.569e-01, 1.932e-03, 1.442e-01, -1.947e-04, 1.002e-01, 9.362e-02, 1.206e-01, 5.726e-02, -3.269e-02, 1.274e-01, 7.910e-02, -1.930e-01, 9.277e-02, 2.994e-02, -4.800e-02, 8.016e-02), r);\n\tr = MulAdd(s0_8, M4(9.842e-02, 1.108e-01, -1.303e-01, -3.840e-01, -4.456e-02, -6.372e-02, -6.192e-02, 4.026e-02, -8.011e-02, -7.656e-02, -2.155e-02, 1.167e-02, 4.969e-02, -8.967e-03, -1.639e-02, 6.565e-02), r);\n\tr = MulAdd(s1_0, M4(-3.505e-03, 5.798e-02, -1.063e-02, 1.098e-02, -5.275e-02, -1.071e-02, 9.760e-02, -4.337e-02, 2.637e-02, -4.918e-02, 1.090e-03, -1.405e-02, -6.812e-02, -5.049e-02, 1.111e-01, -3.104e-02), r);\n\tr = MulAdd(s1_1, M4(-6.327e-02, 8.466e-03, 1.248e-01, 2.211e-03, 7.483e-03, 6.452e-02, -1.087e-01, 3.269e-02, 2.075e-02, -1.408e-01, 3.009e-02, -4.146e-02, 1.034e-01, 1.109e-01, -9.252e-02, -1.611e-02), r);\n\tr = MulAdd(s1_2, M4(7.447e-02, 4.614e-02, -6.169e-02, -2.029e-02, -7.331e-02, -3.250e-02, 7.219e-02, 1.042e-02, -2.912e-02, 4.549e-02, -1.047e-02, 2.094e-03, -5.769e-02, -1.615e-02, 8.071e-03, 3.771e-02), r);\n\tr = MulAdd(s1_3, M4(-4.766e-02, -1.712e-01, 8.735e-02, -5.360e-02, -1.975e-01, -2.133e-01, 8.035e-02, 5.819e-02, -7.093e-02, -2.900e-01, -3.236e-02, -2.934e-02, -3.232e-01, -1.972e-01, 2.268e-01, 1.010e-01), r);\n\tr = MulAdd(s1_4, M4(-2.210e-01, -1.157e-01, 2.817e-01, 5.840e-02, 2.098e-01, -8.874e-02, 7.924e-02, -2.510e-01, 1.030e-01, 1.279e-01, 6.653e-02, 1.219e-01, 4.141e-01, 2.998e-01, -9.834e-02, 1.607e-01), r);\n\tr = MulAdd(s1_5, M4(1.294e-01, -1.988e-02, -1.361e-01, 2.103e-01, -1.155e-01, -2.235e-02, 6.869e-02, -8.075e-02, -4.372e-03, 5.632e-02, -7.754e-02, 7.795e-02, -1.595e-01, -1.241e-01, -2.547e-03, 9.130e-02), r);\n\tr = MulAdd(s1_6, M4(-4.901e-02, -4.760e-02, 1.173e-02, -6.623e-02, -2.803e-01, -1.136e-01, 2.054e-01, -7.351e-03, -1.322e-01, -2.660e-01, 3.918e-02, -8.464e-02, -1.010e-01, 3.265e-02, 6.085e-02, 7.092e-02), r);\n\tr = MulAdd(s1_7, M4(-1.737e-01, 5.872e-02, 1.029e-01, -1.338e-01, 1.971e-02, -1.182e-03, 6.404e-02, 1.520e-01, 2.388e-01, -3.107e-02, -1.075e-01, -1.224e-01, 1.625e-01, -7.233e-03, -6.741e-02, 2.098e-01), r);\n\tr = MulAdd(s1_8, M4(1.496e-01, 7.058e-02, -7.112e-02, -7.923e-03, -8.993e-02, -9.366e-02, -1.300e-02, 1.920e-01, 1.403e-01, 1.831e-01, 1.431e-01, -2.287e-01, 2.402e-02, 5.445e-03, 2.004e-02, 4.421e-02), r);\n\tr = MulAdd(s2_0, M4(2.048e-02, -2.281e-01, -6.323e-03, -3.437e-02, -4.873e-03, -1.313e-01, 9.471e-02, -1.031e-01, 8.325e-02, 9.654e-02, -6.140e-02, 3.037e-02, -1.616e-01, -3.013e-02, 1.615e-01, 6.894e-03), r);\n\tr = MulAdd(s2_1, M4(-1.950e-01, 3.048e-01, -1.785e-01, 1.902e-01, 9.630e-02, 2.068e-01, -1.684e-01, -1.342e-01, 4.692e-02, 6.126e-02, -7.899e-02, 9.330e-02, 3.255e-02, 3.098e-01, -2.201e-01, 4.671e-02), r);\n\tr = MulAdd(s2_2, M4(1.306e-01, 5.318e-02, -5.240e-02, 2.361e-02, 2.423e-02, 2.361e-03, -1.695e-02, 1.569e-02, -7.172e-02, -3.968e-02, 1.209e-01, 7.186e-02, 5.879e-02, 1.591e-02, -1.891e-02, -2.890e-02), r);\n\tr = MulAdd(s2_3, M4(2.569e-01, 4.588e-01, -2.766e-01, 7.439e-02, -2.793e-01, -1.519e-01, 7.798e-02, 2.029e-02, 2.249e-01, 2.073e-01, -2.353e-01, 3.969e-02, -3.564e-01, -1.221e-01, 2.605e-01, -1.442e-02), r);\n\tr = MulAdd(s2_4, M4(-5.101e-01, -1.367e-01, 1.769e-02, -8.440e-01, 5.105e-02, 1.282e-01, 7.769e-02, 9.786e-02, -2.935e-02, 8.851e-02, 6.132e-01, 3.093e-01, -1.629e-01, -7.917e-02, -3.350e-01, 1.921e-01), r);\n\tr = MulAdd(s2_5, M4(1.598e-01, 7.845e-02, 1.064e-01, 2.970e-03, 3.521e-02, 5.990e-02, 7.355e-03, 2.954e-02, -1.850e-01, 2.212e-01, -3.574e-02, -5.264e-01, 2.390e-01, 2.798e-01, 7.917e-03, -4.841e-02), r);\n\tr = MulAdd(s2_6, M4(1.539e-01, 6.461e-02, -2.001e-02, 8.195e-03, -1.185e-01, -7.702e-02, 4.283e-02, -1.233e-01, 1.809e-01, 1.459e-02, -5.636e-02, -1.972e-02, -9.290e-02, 1.186e-01, 3.799e-02, 6.921e-02), r);\n\tr = MulAdd(s2_7, M4(-1.350e-01, -1.079e-01, 3.874e-02, -2.217e-02, 7.493e-02, 1.194e-01, 3.591e-02, -1.228e-01, -4.547e-02, -2.423e-02, 6.285e-02, -9.256e-02, 6.649e-02, 6.761e-03, -1.018e-01, 1.880e-01), r);\n\tr = MulAdd(s2_8, M4(1.154e-02, 5.337e-03, -8.154e-03, -4.658e-02, 5.640e-03, -1.535e-02, 3.469e-02, -3.478e-02, -1.819e-01, -1.338e-01, 2.321e-02, 2.736e-01, 1.002e-01, 5.359e-02, 5.718e-02, -6.956e-03), r);\n\tr = MulAdd(s3_0, M4(6.467e-02, -1.265e-01, -5.698e-03, -7.443e-03, -1.703e-02, 4.604e-02, 2.747e-02, -1.545e-02, 1.014e-01, 2.919e-02, -5.269e-02, 4.818e-02, -8.014e-02, 5.749e-02, 3.776e-02, 7.501e-03), r);\n\tr = MulAdd(s3_1, M4(-1.627e-01, -3.031e-02, 3.391e-02, 4.149e-05, 6.013e-02, 8.038e-02, 1.545e-02, 1.997e-02, -1.785e-02, -3.410e-01, 1.219e-01, 1.513e-02, -7.337e-02, -2.446e-02, -7.831e-03, 2.064e-02), r);\n\tr = MulAdd(s3_2, M4(5.945e-02, -7.145e-02, -4.252e-03, -1.227e-02, -4.884e-02, -2.366e-02, 4.214e-04, 4.615e-02, -3.871e-02, 3.228e-02, -7.452e-03, 3.501e-02, 9.101e-02, 3.086e-02, -8.161e-02, 4.753e-02), r);\n\tr = MulAdd(s3_3, M4(1.265e-01, 5.028e-02, -2.140e-02, 6.421e-02, -4.819e-03, -1.641e-01, -3.700e-02, -6.100e-02, 1.873e-01, 2.147e-01, -2.009e-01, 1.324e-03, -7.643e-02, -1.167e-01, 1.724e-01, 2.491e-02), r);\n\tr = MulAdd(s3_4, M4(-4.396e-01, -8.640e-02, -1.586e-01, -1.634e-01, 2.135e-01, 2.594e-01, 3.525e-01, -4.384e-01, 1.224e-01, 1.559e-02, 9.960e-02, -4.443e-02, -2.066e-01, 5.257e-02, -1.255e-01, 1.136e-01), r);\n\tr = MulAdd(s3_5, M4(1.476e-01, 1.642e-02, 8.563e-02, -2.731e-02, -9.205e-02, -8.172e-03, -9.883e-03, 4.732e-02, -1.877e-01, -4.119e-02, -3.235e-02, 1.874e-02, 1.632e-01, 3.157e-02, -7.976e-02, 6.713e-02), r);\n\tr = MulAdd(s3_6, M4(5.719e-02, 2.829e-03, -3.028e-02, -3.731e-02, -1.195e-01, -2.658e-02, 7.224e-02, -6.579e-03, 7.836e-02, -5.193e-02, -2.216e-02, -3.423e-02, -7.006e-02, 1.208e-02, 9.662e-04, 3.652e-03), r);\n\tr = MulAdd(s3_7, M4(-1.694e-01, 5.317e-02, 1.652e-01, -4.481e-02, 7.641e-04, 2.080e-02, 1.120e-02, 3.510e-02, 7.017e-03, -1.044e-01, 4.685e-03, 4.015e-02, 1.265e-01, 1.437e-01, -9.223e-02, -6.538e-02), r);\n\tr = MulAdd(s3_8, M4(2.532e-02, -4.911e-02, -7.204e-02, -3.564e-02, 9.314e-03, 5.000e-02, 8.495e-02, -5.174e-02, -1.079e-01, -5.239e-02, -3.180e-02, 5.520e-02, 2.376e-02, 3.436e-02, 7.244e-02, -9.291e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 2.664e-03, 8.117e-03, -7.210e-03, -3.509e-03 };\n\tr = MulAdd(s0_0, M4(7.753e-02, -5.337e-02, -2.432e-02, 3.644e-02, 1.594e-03, 2.936e-02, -2.457e-02, 9.446e-03, -1.292e-03, 1.233e-02, -3.333e-02, -1.896e-02, 2.404e-02, -8.731e-04, -1.313e-02, -5.993e-02), r);\n\tr = MulAdd(s0_1, M4(-1.016e-03, 1.421e-01, -1.392e-01, -8.620e-02, 2.236e-02, -5.276e-02, -9.275e-03, 1.497e-01, 5.114e-02, 1.802e-01, 2.670e-02, 1.683e-02, -8.748e-04, -1.293e-01, 2.992e-01, 2.780e-01), r);\n\tr = MulAdd(s0_2, M4(-7.056e-02, 2.695e-02, -1.473e-01, 3.070e-02, -3.678e-02, 5.208e-02, 2.452e-03, -5.092e-02, -8.107e-02, 1.028e-01, -9.323e-02, -1.948e-01, -1.106e-01, -1.169e-01, 6.257e-02, 4.575e-02), r);\n\tr = MulAdd(s0_3, M4(-1.961e-01, 7.539e-02, -8.065e-02, -6.256e-02, -1.814e-01, 8.188e-02, -1.757e-02, -9.656e-02, -4.720e-02, -3.039e-02, 1.786e-03, -2.460e-02, 6.616e-02, 1.227e-02, -1.082e-01, 2.060e-01), r);\n\tr = MulAdd(s0_4, M4(1.100e-02, 1.185e-01, -3.507e-01, 1.974e-01, 8.355e-03, -1.227e-01, 3.761e-01, 3.390e-01, 8.516e-04, -1.056e-01, 2.269e-01, -2.299e-01, -3.527e-01, -3.526e-01, -7.157e-02, 6.354e-02), r);\n\tr = MulAdd(s0_5, M4(-9.008e-02, 4.770e-01, -9.990e-02, 9.218e-02, 7.512e-02, -1.304e-01, 9.839e-02, 9.985e-03, 1.453e-01, -3.162e-02, -4.388e-02, 7.887e-02, 3.180e-03, -9.248e-02, 1.566e-02, 5.009e-03), r);\n\tr = MulAdd(s0_6, M4(3.981e-02, -3.872e-02, 6.997e-02, 2.283e-02, -3.285e-02, 5.390e-02, -2.957e-02, -8.100e-02, 1.132e-02, 6.093e-02, -5.962e-02, 2.166e-02, -3.606e-02, -1.190e-03, 4.312e-03, 4.615e-02), r);\n\tr = MulAdd(s0_7, M4(-2.725e-01, 3.443e-02, 9.929e-02, -9.112e-03, 4.324e-02, 1.421e-01, 2.795e-02, 1.846e-03, 1.279e-01, -1.918e-02, -4.382e-02, 1.812e-01, -4.804e-02, 9.204e-04, -8.716e-02, 4.059e-02), r);\n\tr = MulAdd(s0_8, M4(4.227e-02, -1.239e-01, -6.485e-02, 8.795e-02, 7.347e-02, 1.209e-01, 3.079e-03, -5.941e-02, -1.296e-01, 1.148e-01, -5.571e-02, -1.353e-01, -7.367e-02, -1.618e-02, 6.989e-03, -2.546e-02), r);\n\tr = MulAdd(s1_0, M4(-6.146e-02, -4.772e-02, -9.417e-03, -4.165e-02, 2.001e-01, 4.540e-02, -4.097e-02, 3.659e-02, 2.014e-02, -6.690e-02, 4.933e-02, 8.231e-02, -9.543e-03, -3.356e-02, -2.012e-02, -5.326e-02), r);\n\tr = MulAdd(s1_1, M4(1.254e-01, 1.032e-01, -7.584e-02, -1.386e-01, -1.665e-01, -4.887e-03, 3.620e-02, 6.679e-02, 3.288e-02, 3.521e-03, 4.558e-02, 1.208e-01, 5.012e-02, 4.727e-02, -2.972e-02, 1.239e-01), r);\n\tr = MulAdd(s1_2, M4(1.979e-03, -9.131e-03, 1.800e-02, 3.867e-02, 2.082e-02, -2.502e-02, -9.056e-02, -9.712e-02, -8.861e-02, 4.792e-02, -2.188e-02, -5.227e-02, 4.840e-02, 7.105e-02, -7.533e-03, -1.297e-01), r);\n\tr = MulAdd(s1_3, M4(1.216e-01, 8.527e-02, -2.377e-02, 4.553e-02, -3.099e-01, -8.314e-02, 9.121e-02, -1.404e-01, 3.008e-02, 2.271e-02, 2.118e-02, 1.255e-01, 6.427e-02, 1.129e-02, -8.356e-02, 1.902e-01), r);\n\tr = MulAdd(s1_4, M4(-5.332e-01, 2.151e-01, -2.231e-01, -6.729e-02, 3.100e-01, -5.922e-01, 4.658e-01, 4.307e-01, -2.838e-01, 1.628e-01, -2.627e-02, -3.515e-01, -3.412e-01, -8.481e-01, -1.145e-01, 4.690e-01), r);\n\tr = MulAdd(s1_5, M4(-4.161e-01, 2.098e-02, -1.141e-01, -1.561e-02, -5.537e-02, -3.509e-01, 1.350e-01, 2.163e-01, 2.016e-01, -1.842e-01, -4.780e-02, 2.205e-01, -8.208e-02, -1.956e-01, -4.500e-02, -2.913e-01), r);\n\tr = MulAdd(s1_6, M4(-5.157e-03, -9.563e-03, 3.716e-02, 2.411e-02, 2.625e-01, 2.386e-02, 5.859e-02, 1.699e-01, 1.736e-01, -4.062e-02, 1.283e-01, 2.319e-01, 4.247e-02, 6.236e-02, -3.562e-02, -9.159e-02), r);\n\tr = MulAdd(s1_7, M4(-1.881e-01, -8.441e-02, -4.476e-03, -2.962e-03, -1.410e-01, -1.377e-01, -1.603e-01, 2.566e-01, -1.171e-01, -2.909e-01, -7.991e-02, 3.955e-03, -1.577e-01, 8.067e-02, 3.065e-02, -7.451e-02), r);\n\tr = MulAdd(s1_8, M4(3.017e-02, 5.592e-02, -1.845e-02, 8.121e-02, -1.605e-01, -1.450e-02, 6.103e-02, 5.926e-02, 1.401e-02, 7.801e-02, -1.884e-01, 1.805e-01, 1.250e-01, -4.373e-03, -2.044e-02, 7.077e-03), r);\n\tr = MulAdd(s2_0, M4(-2.586e-02, -5.334e-02, -4.608e-02, 1.800e-01, 5.117e-02, 7.026e-02, -1.504e-01, 1.845e-01, 5.936e-02, -1.167e-01, 1.007e-01, 1.775e-02, 9.509e-02, 1.031e-01, -4.267e-02, -4.285e-02), r);\n\tr = MulAdd(s2_1, M4(-2.268e-01, -3.782e-01, -1.416e-01, 1.976e-02, 7.927e-02, -3.233e-01, 4.022e-02, 1.397e-01, -1.285e-01, -2.301e-02, 2.178e-01, -3.169e-01, -1.043e-01, 1.333e-01, 6.284e-02, -2.571e-01), r);\n\tr = MulAdd(s2_2, M4(1.330e-01, -2.228e-01, -2.477e-02, 1.212e-01, 1.048e-01, -3.967e-02, 6.519e-02, -3.451e-02, 2.996e-03, -8.184e-02, -3.909e-02, -4.447e-02, 1.670e-01, -4.006e-02, 5.001e-02, 7.491e-03), r);\n\tr = MulAdd(s2_3, M4(-1.906e-01, 2.986e-02, -3.952e-02, -2.861e-01, 1.208e-01, 2.352e-01, 2.821e-02, -4.515e-02, 2.386e-02, -1.363e-01, 5.457e-02, 1.751e-02, 2.567e-01, 4.067e-02, -3.435e-02, 1.811e-01), r);\n\tr = MulAdd(s2_4, M4(5.372e-01, 4.567e-01, 1.075e-02, -4.759e-02, 5.753e-02, 2.359e-01, -1.344e-01, -3.942e-01, 1.139e-01, 2.329e-01, 7.097e-03, -2.416e-01, -3.146e-01, -5.996e-01, -8.141e-05, 2.811e-01), r);\n\tr = MulAdd(s2_5, M4(1.261e-02, 1.636e-01, -1.048e-01, 1.364e-02, 3.740e-03, 5.542e-02, -5.258e-02, -1.429e-01, 2.881e-01, -4.462e-01, 1.270e-02, -7.021e-03, -4.951e-02, -2.034e-03, 4.602e-02, 1.214e-01), r);\n\tr = MulAdd(s2_6, M4(-6.033e-02, 1.222e-02, 3.018e-03, -1.194e-01, 1.189e-01, -4.994e-02, 6.138e-02, 6.122e-02, -2.687e-02, 2.007e-02, -7.344e-04, -3.446e-02, 6.520e-02, -1.479e-02, -3.500e-02, -2.706e-02), r);\n\tr = MulAdd(s2_7, M4(1.186e-01, -6.526e-02, 1.112e-01, 3.259e-02, 4.759e-02, -1.519e-01, 6.760e-02, 2.415e-02, -2.772e-02, -9.989e-02, 3.411e-02, -2.095e-01, 8.407e-02, 2.159e-01, -4.676e-02, -1.920e-02), r);\n\tr = MulAdd(s2_8, M4(8.961e-02, 5.177e-03, 2.837e-02, 8.839e-02, 5.019e-03, -2.271e-02, -2.850e-02, -6.803e-02, 8.845e-02, 1.518e-01, 1.899e-01, -3.774e-02, 3.282e-02, -5.420e-03, -3.044e-02, -8.935e-02), r);\n\tr = MulAdd(s3_0, M4(-6.317e-02, -8.128e-02, 2.424e-02, 7.323e-02, 8.362e-02, 1.499e-01, -9.427e-02, -4.817e-02, -5.095e-02, -4.980e-02, 1.289e-02, 3.431e-02, 1.232e-01, 9.105e-02, -2.362e-03, -6.421e-02), r);\n\tr = MulAdd(s3_1, M4(-3.092e-02, -2.956e-01, 1.516e-01, 4.510e-02, 9.056e-04, 8.930e-02, -6.518e-02, -9.671e-03, -3.079e-02, -1.072e-01, 1.636e-01, 8.242e-02, -1.800e-02, 9.257e-02, -2.550e-02, -7.577e-02), r);\n\tr = MulAdd(s3_2, M4(2.229e-02, -1.460e-01, -6.113e-03, 1.165e-01, 2.291e-02, -2.013e-02, 5.773e-02, -8.558e-02, -1.616e-01, -2.072e-01, 1.440e-01, 6.408e-02, -4.857e-02, 2.835e-02, 1.128e-01, 1.248e-02), r);\n\tr = MulAdd(s3_3, M4(-7.688e-02, -2.559e-02, 5.337e-02, -1.297e-01, -1.065e-01, 3.964e-03, 2.806e-02, -8.071e-03, -7.883e-02, -1.012e-01, 6.138e-02, -1.165e-01, -3.865e-02, 8.460e-02, -8.840e-02, 1.374e-02), r);\n\tr = MulAdd(s3_4, M4(-6.546e-02, 3.511e-01, 2.069e-02, 5.183e-01, 3.118e-01, 4.113e-02, -2.531e-01, 1.565e-01, -7.322e-03, 1.533e-01, 7.628e-02, -2.852e-01, 8.712e-02, -2.433e-01, 7.957e-02, 4.118e-01), r);\n\tr = MulAdd(s3_5, M4(-1.812e-01, -3.087e-02, -4.874e-02, -4.923e-02, -9.320e-03, -7.889e-02, -8.610e-02, -4.763e-02, 8.360e-02, -2.848e-02, -1.165e-02, -6.383e-02, -9.233e-02, 1.244e-01, -4.966e-02, -2.979e-02), r);\n\tr = MulAdd(s3_6, M4(-2.472e-02, 4.788e-02, -2.114e-02, -1.386e-02, -7.752e-02, 6.096e-02, 3.628e-02, -6.224e-02, 6.418e-02, -5.069e-02, 1.566e-02, 5.723e-02, -1.027e-01, 7.279e-02, -7.078e-02, -3.996e-02), r);\n\tr = MulAdd(s3_7, M4(1.666e-02, -1.710e-03, 6.469e-04, 6.369e-03, 2.621e-02, 2.647e-02, 1.027e-01, 7.724e-02, -1.024e-01, -8.304e-02, 1.842e-02, -5.779e-02, 1.711e-01, 8.228e-02, -1.305e-01, 8.329e-02), r);\n\tr = MulAdd(s3_8, M4(-2.309e-02, 2.703e-02, -2.298e-02, -7.029e-03, 6.323e-02, 6.507e-02, -4.531e-02, -1.340e-02, -7.977e-02, -4.942e-02, 4.605e-02, 9.001e-02, 8.840e-02, 8.368e-02, -5.912e-02, -1.229e-01), r);\n\treturn r;\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 7\n//!DESC conv6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 1.496e-03, 1.976e-03, -2.228e-03, 2.339e-03 };\n\tr = MulAdd(s0_0, M4(-7.726e-02, -4.236e-02, 2.663e-02, 7.717e-02, 1.578e-02, -3.045e-02, 1.833e-03, 4.928e-03, 2.055e-02, 1.234e-03, 1.293e-02, 8.221e-03, -2.347e-02, 4.309e-02, 7.447e-02, 4.002e-03), r);\n\tr = MulAdd(s0_1, M4(2.106e-02, 1.496e-01, 2.554e-02, 9.246e-02, -2.261e-01, 9.247e-02, 2.955e-02, 3.709e-02, -9.295e-02, 1.226e-02, -2.886e-02, -6.831e-04, -1.196e-01, 2.725e-01, -2.178e-01, -1.039e-01), r);\n\tr = MulAdd(s0_2, M4(3.396e-02, -8.075e-03, -6.267e-02, -4.931e-02, 1.142e-02, -4.036e-02, 4.313e-02, 9.018e-02, 2.037e-02, 2.323e-03, 5.455e-02, 7.263e-02, 6.421e-02, -3.649e-02, 3.168e-01, 8.844e-02), r);\n\tr = MulAdd(s0_3, M4(-5.285e-03, -4.309e-02, -7.397e-02, -5.091e-02, 1.711e-02, 9.498e-02, 1.229e-02, 3.768e-02, 3.743e-03, 2.677e-02, -1.260e-02, 3.233e-02, -1.630e-01, -2.482e-02, -3.347e-03, -6.632e-03), r);\n\tr = MulAdd(s0_4, M4(-1.568e-01, -9.216e-02, -1.668e-02, -4.316e-03, -1.176e-02, 3.826e-02, -5.394e-02, 6.991e-02, 1.248e-01, 2.796e-02, -1.266e-01, -2.623e-02, -1.338e-01, -4.132e-01, 4.030e-02, 5.239e-02), r);\n\tr = MulAdd(s0_5, M4(-8.780e-02, 5.905e-02, 3.941e-03, 7.738e-02, 1.064e-01, 1.930e-02, -9.021e-03, 3.723e-02, -1.666e-01, -1.172e-03, -3.216e-01, 6.315e-02, -5.310e-02, -3.348e-02, -7.481e-02, 4.842e-02), r);\n\tr = MulAdd(s0_6, M4(-1.376e-02, 2.783e-02, 1.790e-02, 3.019e-02, -1.654e-02, 5.290e-03, -2.644e-02, 9.440e-03, -1.162e-02, -1.778e-02, -9.626e-03, -1.727e-02, 6.551e-03, 3.601e-02, -7.306e-03, 9.867e-03), r);\n\tr = MulAdd(s0_7, M4(7.459e-03, -1.180e-01, -2.086e-02, 7.975e-03, 3.646e-02, 1.958e-01, 3.334e-02, 1.391e-02, -1.209e-01, 2.599e-03, 7.582e-02, 2.697e-03, 3.305e-02, 3.455e-02, -5.884e-02, 2.060e-02), r);\n\tr = MulAdd(s0_8, M4(6.161e-02, -2.655e-02, 3.691e-02, -2.139e-02, -9.580e-02, -1.344e-02, -8.940e-04, 1.652e-02, 4.274e-02, 4.742e-02, 1.043e-01, 6.114e-03, -2.154e-02, 3.635e-03, -7.209e-02, 2.929e-03), r);\n\tr = MulAdd(s1_0, M4(-5.330e-02, 2.271e-02, -2.661e-02, 5.278e-02, 1.092e-02, -1.082e-02, 4.099e-04, 4.704e-02, -1.445e-02, -1.413e-02, 3.703e-02, -4.442e-02, -6.642e-02, 4.103e-03, 5.965e-02, 4.796e-03), r);\n\tr = MulAdd(s1_1, M4(-9.926e-04, 2.275e-01, 5.207e-03, 4.746e-02, -2.941e-01, -5.993e-02, 1.567e-02, 1.336e-01, -1.455e-01, 1.303e-01, -3.239e-02, -1.908e-03, 5.867e-02, 8.483e-02, -1.097e-01, -1.861e-01), r);\n\tr = MulAdd(s1_2, M4(1.195e-02, 1.569e-02, 1.077e-01, -1.050e-03, 1.581e-01, 3.738e-03, -6.575e-02, -1.782e-01, -5.437e-04, -3.055e-04, 1.013e-01, 1.508e-01, 9.356e-03, -1.633e-02, 1.667e-01, 8.674e-02), r);\n\tr = MulAdd(s1_3, M4(-1.561e-02, 5.396e-02, -1.401e-02, -3.718e-02, 8.327e-02, 8.406e-02, 3.457e-02, -3.943e-02, 5.426e-02, 4.467e-02, -1.367e-02, -1.917e-02, -1.209e-01, -6.920e-02, -7.704e-02, -9.114e-03), r);\n\tr = MulAdd(s1_4, M4(-4.008e-02, -7.207e-01, -7.651e-03, -2.095e-01, -5.950e-03, 1.458e-02, -8.664e-02, 2.716e-01, 3.749e-01, -2.539e-01, -1.156e-01, -5.679e-02, 3.828e-02, -2.838e-01, -7.992e-02, 2.495e-01), r);\n\tr = MulAdd(s1_5, M4(1.640e-02, 1.746e-01, 5.193e-02, -8.520e-02, -1.726e-01, 2.218e-02, 4.205e-01, 1.427e-01, 1.426e-02, -1.424e-02, -4.810e-02, -7.034e-02, -4.420e-02, 4.693e-02, -1.059e-01, 6.651e-02), r);\n\tr = MulAdd(s1_6, M4(1.277e-02, 1.624e-02, 2.739e-02, 5.491e-03, -1.327e-01, -6.239e-02, -6.986e-02, 4.944e-02, -8.849e-02, 1.346e-02, -2.343e-02, 8.993e-03, 1.826e-02, 4.062e-02, 2.256e-02, -2.188e-02), r);\n\tr = MulAdd(s1_7, M4(-3.195e-02, 5.322e-03, 2.795e-02, 4.747e-02, 5.449e-01, 8.519e-02, 2.450e-01, -1.700e-01, -8.635e-02, -1.283e-01, -3.413e-03, 3.388e-02, 1.035e-03, 3.489e-03, -4.357e-02, -8.121e-03), r);\n\tr = MulAdd(s1_8, M4(8.044e-02, -4.392e-02, 2.967e-02, 1.582e-02, -2.407e-01, -5.252e-02, -1.646e-01, 1.136e-01, 5.603e-03, -1.985e-02, 2.054e-02, 7.259e-03, -1.430e-02, 4.313e-02, -1.538e-03, -1.881e-02), r);\n\tr = MulAdd(s2_0, M4(2.887e-02, -3.079e-02, -2.064e-02, -1.707e-02, 1.619e-03, 9.501e-03, -3.989e-02, 6.850e-02, -1.874e-02, 4.451e-02, 1.375e-02, 3.694e-02, -5.088e-02, 2.351e-03, 1.058e-02, 1.304e-01), r);\n\tr = MulAdd(s2_1, M4(3.288e-02, 3.849e-02, -1.623e-02, 1.541e-02, -4.641e-02, -5.803e-02, -5.059e-02, 7.932e-02, 3.378e-02, 4.757e-02, 1.197e-02, -1.701e-01, -2.045e-01, -1.753e-01, -6.869e-03, 4.030e-01), r);\n\tr = MulAdd(s2_2, M4(1.061e-02, -1.051e-02, 1.275e-02, -7.823e-03, -2.037e-03, 1.164e-02, -3.866e-03, -1.300e-02, 3.747e-02, -1.642e-02, 2.196e-02, 2.024e-02, 5.399e-02, 1.077e-02, -8.838e-02, -3.091e-02), r);\n\tr = MulAdd(s2_3, M4(-3.355e-03, -6.519e-02, 9.655e-03, -2.412e-02, -2.784e-01, 3.036e-01, -6.591e-02, 5.922e-02, 5.079e-02, 2.057e-01, -4.058e-02, -1.246e-01, 8.695e-02, 2.195e-01, 1.155e-02, -3.856e-02), r);\n\tr = MulAdd(s2_4, M4(-1.359e-01, -6.361e-02, -2.067e-02, 6.341e-02, -4.197e-01, 2.943e-01, -6.616e-02, 2.731e-01, -9.448e-02, -2.046e-01, -1.120e-01, -4.872e-01, 5.110e-01, 5.573e-02, -2.966e-02, -2.035e-01), r);\n\tr = MulAdd(s2_5, M4(-2.759e-02, 1.413e-02, -3.434e-02, 1.415e-02, 4.479e-02, -3.119e-02, -3.333e-02, 6.124e-02, -6.661e-03, 6.655e-02, 1.934e-03, 9.448e-04, 2.794e-02, -2.752e-02, 2.138e-01, -8.479e-03), r);\n\tr = MulAdd(s2_6, M4(2.669e-04, 5.510e-03, 1.853e-02, 7.035e-03, -1.453e-01, -4.035e-02, -4.686e-02, 3.419e-02, 7.741e-02, -4.406e-02, -4.407e-02, -3.379e-02, -1.623e-02, 3.556e-02, -4.110e-03, 2.244e-03), r);\n\tr = MulAdd(s2_7, M4(7.366e-02, 3.837e-02, -9.561e-04, -6.028e-02, 1.728e-04, 3.019e-02, -4.455e-02, 5.838e-02, 2.192e-01, 1.857e-01, -3.371e-02, 1.257e-02, -1.802e-01, -1.366e-02, -5.060e-02, 1.007e-01), r);\n\tr = MulAdd(s2_8, M4(4.923e-03, 1.485e-02, 1.286e-02, -3.308e-02, -7.387e-03, 1.748e-02, -2.415e-02, 3.404e-02, 1.977e-02, -9.480e-02, -2.739e-02, -2.710e-02, -4.596e-03, 3.783e-03, -2.672e-02, 1.560e-03), r);\n\tr = MulAdd(s3_0, M4(1.821e-01, -1.726e-02, 6.138e-02, -2.267e-01, 3.341e-03, 3.308e-02, 2.540e-02, 5.495e-02, -6.068e-02, 1.206e-02, 3.137e-02, 9.503e-02, -8.975e-03, 4.392e-03, 3.276e-03, 8.800e-02), r);\n\tr = MulAdd(s3_1, M4(-8.920e-02, 2.005e-02, 2.098e-01, 2.013e-01, -6.256e-02, 5.254e-02, -7.322e-02, -6.087e-02, -1.509e-01, -6.047e-02, -1.060e-01, 1.994e-01, -3.721e-02, -6.304e-02, -7.775e-02, 1.860e-02), r);\n\tr = MulAdd(s3_2, M4(3.821e-02, 2.521e-02, -2.931e-01, -6.716e-02, 6.188e-02, -1.317e-02, 1.047e-01, -1.675e-02, -6.626e-02, 1.678e-02, 3.259e-02, 9.227e-02, 3.036e-02, 1.550e-02, 8.623e-02, 3.820e-02), r);\n\tr = MulAdd(s3_3, M4(-3.170e-01, 1.141e-01, -2.329e-01, -8.852e-03, -2.495e-01, 3.291e-01, -1.958e-02, -5.070e-02, 6.349e-02, 1.136e-01, 2.229e-02, -8.225e-02, -9.059e-02, 2.346e-01, 2.239e-02, 4.994e-02), r);\n\tr = MulAdd(s3_4, M4(4.100e-01, -5.625e-01, -8.633e-02, -1.264e-01, -5.683e-01, 3.076e-01, 6.387e-01, 7.517e-02, 1.931e-01, 6.261e-02, 9.888e-02, -1.452e-01, -6.821e-03, 1.317e-01, -1.053e-01, -8.811e-02), r);\n\tr = MulAdd(s3_5, M4(-9.594e-02, 8.279e-02, 1.886e-01, -4.391e-02, -2.549e-02, -3.722e-02, -5.847e-02, 1.530e-01, 1.440e-02, -1.658e-03, -5.252e-02, -3.569e-03, -8.633e-02, -3.385e-02, -6.311e-02, -2.457e-02), r);\n\tr = MulAdd(s3_6, M4(1.305e-01, -1.413e-02, 2.234e-02, -3.575e-02, -2.280e-01, -1.338e-01, -7.509e-02, 5.110e-02, 1.254e-02, -9.590e-02, -6.164e-02, -8.308e-03, -2.046e-02, 2.761e-02, -2.675e-02, 3.092e-02), r);\n\tr = MulAdd(s3_7, M4(2.543e-02, -3.494e-02, -5.345e-02, -2.582e-02, -1.284e-02, -2.036e-01, 1.160e-01, 7.207e-02, 4.682e-02, 1.265e-01, 4.585e-02, -1.319e-02, -6.320e-02, 9.944e-03, 3.594e-02, 5.627e-02), r);\n\tr = MulAdd(s3_8, M4(-1.190e-02, -1.152e-02, -6.325e-02, -1.505e-02, -2.987e-02, -4.424e-03, -7.566e-03, 1.253e-02, -2.009e-02, -4.585e-02, 2.023e-02, 1.135e-02, 5.201e-02, 1.751e-02, -7.444e-03, 1.437e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.351e-03, -1.537e-03, -2.278e-03, 6.430e-04 };\n\tr = MulAdd(s0_0, M4(1.417e-02, 2.377e-02, 7.056e-02, -1.708e-01, -4.606e-04, 1.689e-02, 4.567e-02, -1.430e-02, 2.483e-02, 3.123e-02, 4.566e-02, 2.764e-02, -1.146e-01, -3.580e-02, -1.005e-01, 6.299e-02), r);\n\tr = MulAdd(s0_1, M4(9.670e-02, -8.422e-02, 1.885e-02, 2.737e-01, -6.124e-02, -3.411e-02, 1.177e-02, -4.768e-02, 8.543e-02, -8.313e-02, 4.539e-02, -1.623e-02, 2.000e-01, -5.159e-02, -1.927e-01, 2.705e-01), r);\n\tr = MulAdd(s0_2, M4(-6.511e-03, 2.374e-02, -3.419e-02, 5.751e-02, 3.509e-03, -5.322e-03, -2.503e-02, -5.954e-02, 7.219e-02, -3.067e-02, -1.468e-02, 2.907e-03, -1.977e-01, -3.698e-02, -8.116e-02, 1.209e-02), r);\n\tr = MulAdd(s0_3, M4(-7.616e-03, 1.184e-01, -8.993e-02, 4.361e-02, 1.499e-02, -4.169e-03, -4.891e-02, 3.895e-02, 3.504e-02, -2.033e-02, -3.223e-02, -6.037e-02, -7.856e-02, -5.490e-02, 6.653e-02, 8.377e-02), r);\n\tr = MulAdd(s0_4, M4(1.822e-01, -2.446e-01, -2.585e-01, 1.245e-01, -5.140e-02, 1.930e-01, 1.942e-02, 1.680e-02, -2.178e-01, 1.537e-01, -1.011e+00, -4.548e-01, 3.506e-01, 2.489e-01, 2.640e-01, 1.546e-01), r);\n\tr = MulAdd(s0_5, M4(7.701e-02, -3.282e-02, -4.543e-02, -4.894e-02, 3.782e-03, -9.876e-04, 5.202e-02, -2.252e-02, 2.125e-01, 1.396e-01, -7.587e-02, -2.342e-01, -2.900e-01, 5.066e-02, 2.059e-01, -1.003e-01), r);\n\tr = MulAdd(s0_6, M4(1.741e-02, -5.800e-02, -1.900e-02, -1.103e-01, -1.544e-02, 1.248e-02, -2.188e-02, 2.753e-02, -6.159e-03, 3.643e-02, 2.510e-02, -1.613e-02, -1.972e-02, -5.235e-02, -3.681e-02, 5.366e-02), r);\n\tr = MulAdd(s0_7, M4(1.740e-02, 1.441e-01, 3.796e-02, 2.267e-02, -2.051e-02, -1.564e-01, -6.488e-02, -6.801e-02, 3.368e-02, -6.264e-02, 1.791e-02, -5.944e-02, -4.683e-02, -1.256e-02, -6.540e-02, 3.546e-02), r);\n\tr = MulAdd(s0_8, M4(-6.253e-02, -2.709e-02, 3.707e-02, 1.718e-02, -3.430e-02, 3.417e-02, -5.257e-02, -3.959e-04, 2.007e-01, -7.594e-02, -3.454e-02, -2.327e-05, -2.480e-02, 5.655e-02, -4.720e-02, 3.006e-02), r);\n\tr = MulAdd(s1_0, M4(3.999e-03, 1.203e-03, -9.676e-03, -2.231e-02, 3.772e-02, 2.693e-02, 2.818e-02, 2.641e-02, -3.407e-02, -1.765e-02, -9.486e-04, -5.857e-03, -8.413e-02, 6.513e-03, -2.523e-02, 2.071e-02), r);\n\tr = MulAdd(s1_1, M4(6.666e-02, -5.555e-02, -1.008e-01, 2.823e-01, -4.945e-02, 3.166e-03, 1.133e-01, -3.291e-01, 1.761e-01, -1.626e-02, 6.843e-02, 2.767e-02, 2.024e-01, -9.546e-02, -1.752e-01, 6.617e-02), r);\n\tr = MulAdd(s1_2, M4(-1.210e-01, -6.037e-02, 5.096e-02, 8.161e-02, 1.310e-01, -2.582e-02, -6.073e-02, 5.804e-02, 5.883e-02, -5.329e-02, -1.231e-02, -2.863e-02, -5.061e-02, -2.119e-02, -9.351e-02, -8.943e-02), r);\n\tr = MulAdd(s1_3, M4(-3.971e-02, -1.009e-01, -6.313e-02, 1.450e-01, 6.074e-02, -6.618e-02, -6.086e-04, 1.100e-01, 7.771e-02, 9.246e-02, -8.459e-02, -7.042e-03, -1.138e-01, 1.398e-01, -5.286e-02, 6.421e-02), r);\n\tr = MulAdd(s1_4, M4(-3.669e-01, -6.429e-02, 4.852e-02, -5.484e-01, -1.444e-01, 5.232e-01, -2.359e-02, -2.425e-01, 3.525e-01, 1.542e-01, -1.489e-01, 1.304e-01, 2.430e-01, 3.256e-01, 2.770e-01, 4.015e-02), r);\n\tr = MulAdd(s1_5, M4(-1.860e-01, 9.205e-02, -6.804e-02, 2.132e-01, 3.018e-01, -1.301e-02, 2.932e-01, -4.531e-01, -1.165e-01, 1.096e-01, -5.766e-02, 2.676e-02, -8.117e-02, -4.090e-02, 7.593e-02, -1.031e-01), r);\n\tr = MulAdd(s1_6, M4(2.984e-02, 5.976e-03, 2.771e-02, -1.520e-02, 9.423e-03, 7.899e-02, -3.400e-02, -1.421e-01, -1.602e-02, -1.316e-02, -1.356e-02, -1.758e-02, -3.187e-02, -8.554e-02, -6.954e-02, 6.126e-02), r);\n\tr = MulAdd(s1_7, M4(3.484e-03, 5.750e-02, 4.953e-02, 1.427e-02, 5.264e-02, 1.119e-01, -1.563e-01, -1.832e-02, 7.184e-02, 1.238e-01, 1.384e-03, -2.950e-03, -2.796e-02, -1.510e-02, -5.581e-02, 5.907e-03), r);\n\tr = MulAdd(s1_8, M4(-2.979e-02, -1.805e-01, 4.289e-02, 7.547e-02, 1.453e-01, 1.155e-01, -6.317e-02, 2.787e-03, 6.409e-02, -2.811e-02, 2.758e-02, 1.464e-02, -4.431e-02, 2.005e-03, -3.745e-02, 6.827e-03), r);\n\tr = MulAdd(s2_0, M4(2.466e-02, 3.345e-02, 1.015e-02, 1.515e-02, 1.833e-02, 8.333e-03, -2.040e-03, 6.401e-02, 2.044e-02, -6.089e-02, -5.738e-02, 3.871e-02, -1.920e-02, 5.305e-02, 5.707e-02, 2.513e-02), r);\n\tr = MulAdd(s2_1, M4(7.018e-02, -2.544e-02, -2.494e-02, 1.088e-01, -3.509e-02, -8.734e-03, -1.365e-02, -9.361e-02, -2.252e-03, -1.209e-02, -3.689e-02, 7.149e-02, -3.120e-02, 2.036e-02, 4.506e-02, -3.936e-01), r);\n\tr = MulAdd(s2_2, M4(-8.268e-03, -1.327e-02, 2.513e-02, -4.868e-03, -2.935e-02, 8.804e-03, -5.610e-03, 2.269e-02, 6.841e-03, -6.307e-04, -6.629e-02, -4.883e-03, 2.400e-02, -7.430e-04, -8.010e-03, 7.980e-02), r);\n\tr = MulAdd(s2_3, M4(-1.232e-02, -2.083e-02, -1.672e-02, -2.160e-02, 1.786e-02, -2.434e-01, -7.226e-02, 1.562e-01, 9.118e-02, -1.116e-01, -6.319e-02, 2.136e-01, -3.159e-03, -1.786e-01, -6.991e-02, 4.110e-01), r);\n\tr = MulAdd(s2_4, M4(-2.275e-02, -2.278e-02, -1.567e-01, 9.989e-02, -1.908e-01, 5.677e-02, -1.271e-01, -2.123e-02, -1.454e-01, 2.650e-01, 2.278e-01, -1.885e-01, -9.669e-02, 1.841e-01, 7.851e-02, -6.762e-01), r);\n\tr = MulAdd(s2_5, M4(-3.343e-02, 3.704e-02, -3.857e-02, 8.299e-03, 2.396e-02, -5.124e-02, -5.434e-02, 7.997e-02, 3.406e-02, -4.136e-02, 1.870e-02, 3.525e-02, -6.752e-02, -8.309e-02, 1.068e-01, 3.379e-03), r);\n\tr = MulAdd(s2_6, M4(7.981e-03, -4.048e-02, 3.325e-02, -9.389e-03, -1.876e-02, 2.147e-02, -6.131e-02, 9.452e-02, 1.583e-02, 1.418e-01, -1.309e-02, 1.419e-02, -4.582e-03, -4.512e-03, -3.895e-02, 4.452e-02), r);\n\tr = MulAdd(s2_7, M4(-3.083e-03, 3.093e-03, 2.493e-02, 3.899e-02, 4.875e-02, -1.968e-01, -1.069e-01, 6.543e-02, -1.266e-01, -2.185e-01, -9.342e-02, 9.424e-02, -5.126e-02, -1.718e-02, 9.158e-03, -3.601e-02), r);\n\tr = MulAdd(s2_8, M4(-3.967e-02, -3.457e-02, 2.545e-02, 2.582e-02, 1.908e-03, 3.888e-02, -4.385e-02, -2.935e-02, 7.741e-02, 3.255e-02, -3.235e-02, 6.256e-02, 1.187e-02, -2.497e-02, -3.396e-02, 1.806e-02), r);\n\tr = MulAdd(s3_0, M4(1.117e-02, -7.495e-02, -4.312e-02, 6.636e-05, -3.893e-02, -4.891e-02, -8.095e-02, 8.555e-02, -1.992e-02, 1.728e-03, -3.447e-02, -8.472e-02, -1.013e-02, 2.594e-02, 6.256e-02, 1.169e-01), r);\n\tr = MulAdd(s3_1, M4(-1.737e-01, 9.502e-02, -3.787e-02, 1.131e-01, 4.237e-02, 1.059e-02, -8.165e-02, 9.365e-03, 1.581e-03, 1.907e-01, 1.439e-01, -2.903e-02, 9.400e-03, -4.874e-02, -1.740e-02, -9.145e-02), r);\n\tr = MulAdd(s3_2, M4(2.043e-01, 1.205e-03, -3.967e-02, 5.084e-02, -3.772e-02, -1.594e-02, -2.356e-02, 4.866e-02, -3.912e-02, -1.182e-01, 1.228e-01, 2.044e-02, -2.094e-02, -6.302e-03, -8.608e-03, 4.632e-02), r);\n\tr = MulAdd(s3_3, M4(1.028e-02, -2.428e-01, 4.209e-02, 2.619e-01, 8.150e-02, -2.480e-01, -3.820e-02, 9.968e-02, 4.816e-02, -4.436e-02, -3.762e-03, 6.175e-02, -3.872e-03, -2.305e-01, -1.069e-01, 1.947e-01), r);\n\tr = MulAdd(s3_4, M4(-7.723e-01, 9.837e-02, 3.011e-02, 1.353e-01, -1.254e-01, 2.501e-01, 1.086e-02, -4.026e-01, -2.775e-02, -2.070e-01, -1.837e-01, -1.658e-01, 1.984e-02, 1.307e-01, 1.635e-01, -1.135e-01), r);\n\tr = MulAdd(s3_5, M4(1.416e-02, -9.369e-02, 1.069e-01, -8.305e-02, 1.437e-01, -3.897e-02, -6.218e-02, 3.772e-02, 6.288e-02, 1.493e-01, -5.597e-02, 7.343e-02, -8.453e-02, 4.008e-02, -1.136e-02, 1.524e-02), r);\n\tr = MulAdd(s3_6, M4(6.399e-02, 1.405e-01, -1.857e-03, 3.541e-02, -1.237e-02, 1.110e-01, -4.929e-02, 2.277e-02, 1.195e-02, 1.679e-01, 2.287e-02, 1.645e-02, 8.215e-03, -2.489e-04, -3.430e-02, -2.937e-02), r);\n\tr = MulAdd(s3_7, M4(-5.599e-02, 3.509e-01, 7.784e-02, 3.488e-02, 5.222e-01, -1.892e-01, 1.668e-02, 1.938e-04, -8.913e-03, -3.322e-02, -6.398e-02, -2.276e-02, 5.969e-04, -1.078e-01, -5.033e-03, 6.744e-02), r);\n\tr = MulAdd(s3_8, M4(-1.150e-02, -5.770e-02, -1.917e-02, 1.003e-01, 2.864e-02, -6.083e-04, -2.847e-02, -1.435e-02, 4.296e-02, -9.737e-04, -4.802e-02, 6.634e-02, 4.267e-02, -3.589e-02, 1.502e-02, 1.632e-02), r);\n\treturn r;\n}\n\nvoid Pass7(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 8\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0, t1\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 1.205e-04, 8.082e-04, 5.443e-04, -3.668e-04 };\n\tr = MulAdd(s0_0, M4(1.665e-02, -8.034e-03, -1.825e-02, 3.618e-03, -1.946e-03, -9.426e-03, -8.760e-03, 1.811e-02, 5.287e-02, -2.521e-02, 1.465e-02, -2.874e-02, -1.678e-04, -5.970e-03, -2.613e-03, -4.475e-03), r);\n\tr = MulAdd(s0_1, M4(1.441e-01, 5.668e-02, 9.456e-03, -6.067e-02, 2.085e-01, 9.162e-02, 3.905e-02, -2.220e-02, -9.590e-02, -4.507e-02, -2.980e-02, 3.405e-02, 5.457e-02, 1.862e-02, 2.969e-02, -3.874e-03), r);\n\tr = MulAdd(s0_2, M4(-3.635e-02, 4.605e-02, -2.088e-02, -1.038e-03, -5.091e-02, 3.757e-02, -2.177e-02, -3.267e-03, 3.186e-02, 3.149e-03, 7.400e-03, 3.707e-03, -2.361e-02, -4.816e-03, -1.245e-02, 1.252e-02), r);\n\tr = MulAdd(s0_3, M4(-2.961e-02, -3.446e-03, 9.278e-03, -3.365e-02, 1.645e-03, -1.782e-02, -5.623e-03, -4.475e-02, 2.640e-02, -1.904e-02, -1.195e-01, 1.154e-01, -2.134e-02, 6.999e-03, -1.240e-02, -2.264e-02), r);\n\tr = MulAdd(s0_4, M4(-4.989e-01, -3.369e-01, 5.449e-01, 3.551e-01, 2.530e-01, 1.923e-01, 4.218e-01, 2.627e-01, -4.863e-02, 1.521e-01, 6.711e-02, -2.250e-01, -8.437e-02, -2.255e-01, -1.239e-02, 7.682e-02), r);\n\tr = MulAdd(s0_5, M4(-3.139e-02, -1.480e-01, -2.284e-02, 8.665e-02, -4.610e-02, 4.704e-02, -3.240e-02, 8.506e-02, 1.377e-03, 2.643e-02, 2.989e-03, 8.917e-03, -2.035e-02, 3.411e-02, 1.877e-02, -4.490e-02), r);\n\tr = MulAdd(s0_6, M4(9.737e-03, 1.686e-02, -3.094e-02, 2.318e-02, -6.414e-03, -2.440e-03, 2.925e-03, -1.545e-03, 4.439e-02, 9.093e-04, 3.674e-01, -3.203e-01, 5.221e-02, 2.167e-02, 4.061e-02, 4.237e-02), r);\n\tr = MulAdd(s0_7, M4(2.009e-02, -4.379e-03, 6.470e-02, -6.519e-02, -2.176e-02, -8.537e-03, 2.645e-02, 1.331e-02, 3.747e-02, 4.555e-02, 3.777e-02, -1.084e-02, 1.072e-01, 1.385e-01, 1.934e-02, -9.520e-02), r);\n\tr = MulAdd(s0_8, M4(1.143e-02, 1.461e-02, -4.811e-02, 1.175e-02, -1.676e-02, -2.844e-02, -4.268e-02, -2.958e-02, -5.801e-03, 1.108e-03, -1.108e-02, 4.385e-02, -9.585e-03, -1.232e-02, -3.864e-02, 1.812e-02), r);\n\tr = MulAdd(s1_0, M4(6.319e-04, -1.321e-02, -4.810e-03, 3.134e-03, 1.949e-02, 8.926e-04, 3.095e-04, 1.404e-02, 2.945e-02, -1.625e-02, -1.022e-03, -8.526e-03, 1.548e-02, -1.219e-02, -9.063e-03, -8.040e-03), r);\n\tr = MulAdd(s1_1, M4(1.512e-01, 5.866e-02, 2.923e-02, -2.301e-02, 1.588e-01, 1.093e-01, 4.457e-02, -2.858e-02, -9.663e-02, -4.469e-02, -3.315e-02, 1.949e-02, 6.519e-02, 4.569e-02, 2.538e-02, -2.218e-02), r);\n\tr = MulAdd(s1_2, M4(-4.665e-02, 2.594e-02, -1.993e-02, 1.175e-02, -3.333e-02, 2.913e-02, -9.827e-03, 3.326e-05, 3.552e-02, -3.633e-03, 8.832e-03, 9.121e-04, -2.972e-02, -8.319e-03, -1.437e-02, 1.409e-02), r);\n\tr = MulAdd(s1_3, M4(-1.715e-02, 2.335e-02, -1.714e-02, -3.837e-02, -8.227e-02, 8.352e-04, 6.854e-04, -3.553e-02, 3.693e-02, -8.114e-02, -1.259e-02, 1.459e-02, -1.087e-01, 3.946e-04, 2.406e-02, -1.555e-02), r);\n\tr = MulAdd(s1_4, M4(-4.320e-02, -1.420e-01, 1.501e-01, 1.979e-01, 4.555e-01, 5.655e-02, 4.005e-01, 4.561e-01, -6.498e-02, 1.753e-01, 7.693e-02, -2.573e-01, -1.655e-01, -3.975e-01, -6.450e-03, 1.195e-01), r);\n\tr = MulAdd(s1_5, M4(-3.430e-02, -4.627e-02, -3.033e-02, 9.612e-03, -4.261e-02, 9.353e-02, -5.574e-02, 7.956e-02, -1.190e-03, 1.946e-02, 9.613e-03, 2.960e-02, -1.353e-02, 6.958e-02, 1.888e-02, -3.233e-02), r);\n\tr = MulAdd(s1_6, M4(-3.424e-03, 8.490e-03, 4.527e-03, 2.695e-02, 9.218e-03, -3.838e-04, 5.782e-03, -1.419e-02, 6.274e-02, -1.145e-02, 4.382e-02, -1.952e-02, -1.567e-03, 1.579e-02, 1.813e-01, 3.017e-02), r);\n\tr = MulAdd(s1_7, M4(3.557e-02, 1.086e-02, -6.621e-02, -9.656e-02, 4.175e-02, 5.237e-02, -1.381e-01, -1.110e-01, 3.749e-02, 5.361e-02, 3.329e-02, 8.597e-02, -9.733e-03, -8.791e-02, 1.724e-01, 3.238e-01), r);\n\tr = MulAdd(s1_8, M4(1.282e-02, 7.556e-03, -2.733e-02, -1.689e-02, -3.745e-02, -4.170e-02, -3.300e-02, -4.508e-03, 3.246e-03, 5.182e-03, -1.597e-02, 3.762e-02, 3.515e-03, 8.707e-04, -2.837e-02, 2.238e-02), r);\n\tr = MulAdd(s2_0, M4(2.606e-02, -4.157e-03, 1.889e-02, -1.571e-02, -1.264e-03, 1.164e-02, 3.781e-02, 2.570e-02, -1.546e-02, 5.382e-03, 3.603e-02, 2.516e-02, 6.918e-03, 1.161e-02, 3.155e-03, -1.756e-03), r);\n\tr = MulAdd(s2_1, M4(-4.998e-02, -6.958e-02, -5.387e-02, 2.511e-02, -1.032e-02, -1.567e-01, 1.284e-01, 4.528e-02, -5.753e-02, 1.843e-02, 6.067e-02, 1.268e-02, -8.389e-02, -3.496e-02, -1.261e-02, 1.271e-02), r);\n\tr = MulAdd(s2_2, M4(2.201e-02, 1.038e-02, 1.562e-03, 6.786e-03, 3.414e-02, 6.890e-02, -2.765e-02, 2.985e-02, 1.279e-02, -3.082e-02, 1.793e-03, 9.163e-03, 2.754e-02, -2.456e-02, 7.180e-03, 1.141e-03), r);\n\tr = MulAdd(s2_3, M4(6.714e-02, 1.266e-02, 1.392e-03, 7.777e-02, 1.648e-02, -3.943e-02, 7.426e-02, -1.875e-02, 3.643e-01, 7.651e-02, -3.760e-01, -3.663e-02, -2.532e-02, -5.826e-03, 1.486e-02, 2.171e-02), r);\n\tr = MulAdd(s2_4, M4(3.235e-01, -3.337e-01, 2.851e-01, -4.555e-01, 2.373e-01, 3.584e-01, -4.600e-01, 1.548e-01, 5.534e-01, 6.629e-01, 9.779e-03, -4.056e-01, 8.883e-02, -1.558e-01, -1.062e-01, -1.018e-01), r);\n\tr = MulAdd(s2_5, M4(-4.431e-02, 1.741e-02, -2.464e-02, 4.318e-02, -1.063e-02, -9.543e-02, 9.203e-02, 3.816e-03, -8.191e-02, 3.298e-02, -3.944e-02, -1.789e-02, -3.580e-02, 9.644e-02, 2.248e-02, -5.676e-03), r);\n\tr = MulAdd(s2_6, M4(-1.707e-02, -1.871e-03, 6.918e-03, -9.750e-03, 1.813e-02, 1.149e-02, 1.491e-02, -2.354e-03, -6.421e-02, -2.200e-03, 6.571e-02, 3.823e-02, 1.606e-02, 1.188e-02, -2.462e-04, -6.835e-03), r);\n\tr = MulAdd(s2_7, M4(-1.709e-02, -3.317e-02, 7.031e-02, -7.599e-02, -3.559e-03, 5.356e-03, 1.223e-01, 5.016e-03, -3.943e-02, -5.634e-02, 6.522e-02, 1.959e-02, 2.838e-03, 3.219e-02, 8.960e-02, -2.077e-02), r);\n\tr = MulAdd(s2_8, M4(-1.128e-02, -1.450e-02, -2.515e-02, -1.278e-02, 1.182e-02, -6.085e-03, -3.478e-02, -7.803e-05, 2.175e-03, -1.893e-02, -3.165e-02, 1.144e-02, -4.075e-03, -1.776e-02, -2.098e-02, 2.191e-02), r);\n\tr = MulAdd(s3_0, M4(3.673e-02, -7.948e-03, 1.825e-02, -2.366e-02, -4.290e-03, 1.377e-02, 8.323e-03, 1.511e-02, -5.298e-03, 2.701e-03, 8.641e-03, 4.330e-03, 1.059e-03, 1.412e-02, -7.184e-03, 3.384e-04), r);\n\tr = MulAdd(s3_1, M4(-1.180e-01, -1.494e-02, -2.777e-02, 3.327e-02, 2.241e-02, -4.968e-02, -2.362e-02, 6.181e-02, 3.152e-02, 5.492e-03, 1.043e-02, -2.723e-02, -6.920e-02, -5.721e-02, -2.918e-03, 9.618e-03), r);\n\tr = MulAdd(s3_2, M4(4.164e-02, 4.799e-03, 7.672e-03, 6.442e-03, 2.289e-02, -5.849e-03, -1.497e-02, 3.935e-02, -9.540e-03, -5.052e-03, -6.008e-03, 3.086e-04, 1.775e-02, 5.478e-03, 6.428e-03, 3.996e-03), r);\n\tr = MulAdd(s3_3, M4(-4.285e-02, 2.518e-02, -6.202e-02, 7.750e-02, 3.723e-02, -1.612e-02, 1.900e-03, 1.359e-02, 3.029e-03, 2.731e-03, -5.163e-03, -2.669e-02, -3.451e-03, 1.188e-02, 2.654e-02, 4.026e-02), r);\n\tr = MulAdd(s3_4, M4(1.114e-01, 2.722e-02, 8.689e-02, -2.510e-01, 3.922e-02, 1.319e-01, 1.630e-01, -7.910e-02, 2.532e-01, 1.401e-01, 1.096e-01, 1.772e-01, 3.884e-01, -4.444e-01, 5.710e-02, -2.594e-01), r);\n\tr = MulAdd(s3_5, M4(-3.528e-02, 1.519e-03, -1.285e-02, 2.613e-02, -5.286e-02, 3.211e-02, 1.899e-02, -8.061e-03, -6.238e-02, 7.851e-03, -1.807e-02, -3.191e-02, -3.676e-02, 5.701e-02, 6.615e-03, 1.207e-02), r);\n\tr = MulAdd(s3_6, M4(-8.811e-03, -2.217e-03, -8.144e-03, -2.373e-02, 1.499e-02, 6.994e-03, 2.934e-02, -5.142e-03, -6.236e-03, 7.265e-04, -2.347e-03, 1.380e-02, 1.357e-02, 1.125e-02, 7.815e-03, 1.489e-03), r);\n\tr = MulAdd(s3_7, M4(-2.411e-02, -3.528e-02, -1.130e-02, 2.333e-02, 1.379e-02, 2.206e-02, 9.893e-03, 3.702e-02, -2.773e-02, -7.861e-04, 9.765e-02, 7.302e-03, 3.641e-02, 2.749e-02, 2.540e-01, -1.831e-01), r);\n\tr = MulAdd(s3_8, M4(-2.727e-03, -1.083e-02, -1.462e-02, -1.577e-02, -2.030e-03, -6.144e-03, -2.325e-02, 1.531e-02, 2.263e-04, -1.137e-02, -2.704e-02, -1.031e-02, -1.318e-02, -8.554e-03, -3.022e-02, 1.633e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass8(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-8x16C-NVL-DN.hlsl",
    "content": "// CuNNy 8x16C BILINEAR RGB NVL DN - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-DN-D16N08\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t7;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) (dot(MF3(-1.941e-01, -3.865e-01, -8.377e-02), O(INPUT, float2(x, y)).rgb) + MF(2.427e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 8.018e-03, 1.569e-02, 1.090e-02, -7.794e-05 };\n\tr = mad(s0_0, V4(3.079e-02, -3.606e-03, 7.865e-02, -7.318e-03), r);\n\tr = mad(s0_1, V4(-8.047e-03, 1.049e-02, -8.037e-02, 1.078e-02), r);\n\tr = mad(s0_2, V4(2.018e-03, -5.329e-03, 8.914e-02, -2.185e-03), r);\n\tr = mad(s0_3, V4(2.427e-01, -1.099e-01, -4.625e-02, -3.691e-01), r);\n\tr = mad(s0_4, V4(-2.399e-01, 1.115e-01, -4.162e-02, 3.721e-01), r);\n\tr = mad(s0_5, V4(-1.869e-02, -1.139e-02, 3.210e-02, 2.956e-04), r);\n\tr = mad(s0_6, V4(1.169e-01, -2.234e-01, -1.335e-02, -1.347e-02), r);\n\tr = mad(s0_7, V4(-1.421e-01, 2.203e-01, -5.437e-02, -6.029e-04), r);\n\tr = mad(s0_8, V4(8.644e-03, 1.055e-02, -3.855e-04, 9.967e-03), r);\n\treturn r;\n}\n\nV4 f1(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 1.318e-02, 1.522e-02, 4.021e-03, -8.088e-02 };\n\tr = mad(s0_0, V4(7.324e-02, 1.679e-02, -2.775e-02, -4.778e-02), r);\n\tr = mad(s0_1, V4(2.549e-01, 4.843e-02, 5.584e-02, 7.739e-02), r);\n\tr = mad(s0_2, V4(1.709e-02, -8.911e-02, -4.865e-02, -1.851e-02), r);\n\tr = mad(s0_3, V4(-6.274e-02, -7.121e-02, 1.284e-01, 1.029e-01), r);\n\tr = mad(s0_4, V4(-2.921e-01, -1.194e-01, -6.886e-02, 2.502e-01), r);\n\tr = mad(s0_5, V4(-1.090e-02, -3.670e-02, 7.626e-02, 3.154e-02), r);\n\tr = mad(s0_6, V4(9.342e-03, 4.821e-02, -1.915e-02, -6.984e-02), r);\n\tr = mad(s0_7, V4(5.284e-03, 6.002e-02, -4.112e-02, 1.237e-01), r);\n\tr = mad(s0_8, V4(-5.183e-03, 1.393e-01, 8.273e-03, -1.178e-02), r);\n\treturn r;\n}\n\nV4 f2(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 1.425e-02, -3.870e-03, -1.067e-02, 7.370e-03 };\n\tr = mad(s0_0, V4(1.577e-01, 5.275e-03, -8.819e-02, -1.712e-02), r);\n\tr = mad(s0_1, V4(-1.033e-01, 1.714e-01, -2.117e-01, -2.830e-02), r);\n\tr = mad(s0_2, V4(-6.247e-02, -2.103e-02, -2.257e-03, 4.623e-02), r);\n\tr = mad(s0_3, V4(-2.031e-02, 7.706e-02, -6.031e-02, -3.312e-01), r);\n\tr = mad(s0_4, V4(-1.796e-01, 2.363e-01, 1.926e-02, 1.713e-01), r);\n\tr = mad(s0_5, V4(9.624e-02, 8.355e-02, 1.085e-01, 1.431e-01), r);\n\tr = mad(s0_6, V4(3.225e-04, -7.018e-02, 3.764e-02, -6.763e-02), r);\n\tr = mad(s0_7, V4(5.291e-02, -4.092e-01, 1.667e-01, 9.630e-02), r);\n\tr = mad(s0_8, V4(7.371e-03, -7.103e-02, 2.365e-02, -1.196e-02), r);\n\treturn r;\n}\n\nV4 f3(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -4.116e-03, 1.699e-02, -1.220e-02, -2.878e-03 };\n\tr = mad(s0_0, V4(2.076e-03, 1.123e-02, 5.660e-02, -2.469e-02), r);\n\tr = mad(s0_1, V4(8.450e-02, -8.344e-03, 3.408e-01, 1.068e-01), r);\n\tr = mad(s0_2, V4(-8.521e-02, -8.863e-02, -8.628e-03, 4.745e-02), r);\n\tr = mad(s0_3, V4(4.301e-02, 1.143e-02, -6.893e-02, -1.578e-01), r);\n\tr = mad(s0_4, V4(8.960e-02, 3.037e-01, -3.176e-01, 4.196e-02), r);\n\tr = mad(s0_5, V4(-1.172e-01, -2.426e-01, -8.905e-03, 2.253e-01), r);\n\tr = mad(s0_6, V4(-4.505e-02, -7.804e-03, 1.783e-02, -8.501e-02), r);\n\tr = mad(s0_7, V4(-1.606e-01, -1.452e-02, -1.241e-02, -1.597e-01), r);\n\tr = mad(s0_8, V4(1.909e-01, 3.577e-02, 6.756e-03, 1.028e-02), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.168e-01, -7.048e-03, 9.668e-03, -7.673e-03 };\n\tr = MulAdd(s0_0, M4(2.048e-02, -4.829e-03, 1.116e-01, 1.424e-01, 4.054e-02, -1.403e-02, -1.093e-02, -4.677e-02, 1.253e-01, 2.540e-02, 1.268e-02, 7.303e-02, 6.252e-02, 1.872e-01, -8.308e-02, -1.259e-01), r);\n\tr = MulAdd(s0_1, M4(-4.819e-02, 9.732e-02, 2.710e-03, 4.293e-02, -4.048e-02, -7.517e-02, -1.502e-01, -9.363e-02, -1.166e-01, -4.531e-02, 1.796e-01, 2.567e-02, -2.013e-01, 1.364e-01, -4.303e-02, -2.691e-02), r);\n\tr = MulAdd(s0_2, M4(1.476e-01, 3.921e-02, 1.519e-01, 5.807e-02, 3.850e-02, -2.336e-01, -2.001e-01, 6.151e-03, 5.383e-02, 6.078e-02, -1.792e-01, -1.423e-01, 8.391e-02, 2.738e-01, 1.784e-01, -7.098e-02), r);\n\tr = MulAdd(s0_3, M4(4.426e-04, -1.720e-01, -5.887e-02, 1.816e-02, 1.950e-02, 2.097e-01, -5.867e-02, 1.822e-02, -4.042e-03, -1.147e-02, -6.860e-02, 3.117e-02, 8.652e-02, 1.681e-01, -6.179e-02, -8.912e-02), r);\n\tr = MulAdd(s0_4, M4(-2.212e-01, 2.744e-01, -3.287e-02, 1.385e-02, -2.971e-03, 2.905e-02, 4.532e-02, 4.762e-02, -2.109e-02, 5.882e-02, -4.547e-02, -2.030e-02, 1.673e-01, 6.945e-02, -3.483e-01, -4.171e-01), r);\n\tr = MulAdd(s0_5, M4(-4.755e-02, 2.782e-01, 8.658e-02, -3.461e-01, 2.831e-02, 7.165e-03, 5.473e-02, 9.912e-02, -5.727e-02, 4.351e-02, -1.463e-01, 1.089e-01, -7.061e-02, 3.919e-01, 1.370e-01, 6.642e-02), r);\n\tr = MulAdd(s0_6, M4(1.101e-01, 5.662e-02, -7.494e-02, -5.565e-03, 1.182e-01, -4.261e-02, 5.721e-02, 2.424e-02, 1.077e-01, 1.178e-02, 3.188e-02, -1.370e-02, 2.044e-02, 8.463e-02, -9.320e-02, 1.874e-02), r);\n\tr = MulAdd(s0_7, M4(1.014e-02, 1.127e-01, 3.595e-02, -2.266e-01, -9.668e-02, 3.770e-02, 1.041e-01, 2.042e-02, -9.701e-02, -2.058e-02, -4.635e-02, -1.055e-01, -2.100e-01, -1.200e-01, 1.076e-01, 5.583e-01), r);\n\tr = MulAdd(s0_8, M4(1.595e-01, -1.046e-02, -1.695e-02, 2.403e-02, -3.490e-02, -1.954e-01, -1.325e-02, -1.459e-02, 1.135e-02, -1.278e-01, 3.800e-02, -4.423e-02, -8.423e-02, -4.600e-01, -3.075e-02, 2.350e-01), r);\n\tr = MulAdd(s1_0, M4(1.528e-02, -1.405e-02, -6.905e-02, -5.089e-02, 1.860e-02, -1.111e-02, 8.663e-02, -5.265e-02, 7.609e-02, 6.255e-02, -1.408e-01, 1.661e-01, -5.898e-02, -2.493e-01, 5.922e-02, -4.831e-02), r);\n\tr = MulAdd(s1_1, M4(2.318e-01, -1.965e-01, -1.191e-02, 9.833e-03, 1.083e-01, 4.304e-01, 1.066e-01, -1.447e-01, 1.249e-01, 7.425e-02, 4.746e-02, 2.711e-01, -5.051e-02, -1.087e-01, -2.176e-02, 2.572e-01), r);\n\tr = MulAdd(s1_2, M4(7.448e-02, -1.738e-01, -1.739e-01, 8.456e-02, 2.159e-01, 4.333e-01, -1.027e-01, -3.007e-01, -4.220e-02, 2.373e-01, -1.648e-01, -5.700e-02, -4.307e-02, -2.232e-01, -7.669e-02, 1.161e-01), r);\n\tr = MulAdd(s1_3, M4(2.425e-03, 7.625e-02, -5.265e-02, 6.556e-02, 7.800e-02, -5.827e-02, -7.143e-02, -1.148e-01, -8.064e-02, 1.301e-02, -1.257e-01, 1.360e-01, -5.066e-02, -1.077e-01, 1.705e-02, 5.452e-02), r);\n\tr = MulAdd(s1_4, M4(2.348e-01, -1.722e-01, 7.330e-02, 5.327e-01, 1.861e-01, 1.807e-01, -3.935e-03, 9.360e-02, 6.946e-03, -2.022e-02, 1.355e-01, -1.639e-01, 4.145e-01, -1.285e-01, -1.717e-01, -5.645e-01), r);\n\tr = MulAdd(s1_5, M4(1.669e-01, -3.700e-01, -2.197e-01, 2.970e-01, -3.760e-01, 8.613e-02, 1.677e-02, -1.083e-01, 6.986e-02, 2.914e-01, 1.835e-01, -3.219e-02, -3.564e-01, -4.215e-02, 1.380e-01, 2.394e-01), r);\n\tr = MulAdd(s1_6, M4(6.843e-02, 5.395e-02, -3.803e-02, 1.370e-01, -1.090e-02, -1.215e-01, 1.153e-02, -4.736e-02, -6.143e-02, -1.871e-01, 2.793e-01, 1.721e-01, -8.387e-03, -7.740e-03, 1.398e-01, -3.166e-02), r);\n\tr = MulAdd(s1_7, M4(-5.026e-02, -1.521e-02, -4.912e-02, -1.959e-01, 2.314e-02, -4.775e-02, -1.317e-01, 8.754e-02, 3.595e-02, 2.588e-01, -1.679e-01, -1.083e-01, -3.263e-02, 2.192e-03, 1.870e-01, 3.609e-01), r);\n\tr = MulAdd(s1_8, M4(1.043e-01, 1.864e-01, -3.583e-01, 5.765e-02, -7.832e-02, -4.087e-02, -3.872e-02, 1.526e-01, -1.825e-01, -1.559e-01, -9.546e-02, 3.329e-01, 1.625e-01, -1.244e-03, -8.165e-02, -2.106e-01), r);\n\tr = MulAdd(s2_0, M4(4.537e-02, 8.269e-02, -7.632e-02, -2.650e-02, -5.914e-02, -2.708e-02, -5.644e-02, -1.955e-02, 4.075e-01, 1.023e-01, 2.545e-01, -3.611e-02, -4.924e-01, 2.777e-01, 2.361e-01, 8.845e-02), r);\n\tr = MulAdd(s2_1, M4(1.618e-02, -4.293e-02, -2.222e-01, 9.574e-02, 5.111e-02, -7.128e-02, -8.863e-02, -9.884e-02, 2.190e-01, 2.622e-01, 4.013e-01, -2.096e-03, -5.959e-01, -5.596e-01, 2.032e-01, -5.020e-01), r);\n\tr = MulAdd(s2_2, M4(-2.909e-02, -4.977e-02, -1.716e-01, 7.754e-02, -3.726e-02, -6.215e-02, -2.769e-02, 4.118e-02, 3.981e-01, -9.391e-02, 3.138e-01, 6.588e-03, -5.657e-02, 3.557e-01, 5.208e-02, 1.875e-01), r);\n\tr = MulAdd(s2_3, M4(-1.199e-02, 3.765e-02, 2.132e-01, 1.092e-01, 7.937e-02, 8.123e-02, 3.154e-02, 1.558e-01, -3.848e-01, 4.161e-02, -4.289e-01, 2.959e-01, -3.045e-01, -1.637e-01, -1.188e-01, -2.289e-01), r);\n\tr = MulAdd(s2_4, M4(-1.106e-01, -6.425e-02, -2.421e-05, 2.504e-01, -5.712e-02, -4.485e-02, 9.015e-02, 1.155e-01, -4.607e-01, 4.294e-01, -8.332e-02, 8.106e-03, -5.400e-01, -5.825e-01, -4.254e-01, -6.588e-01), r);\n\tr = MulAdd(s2_5, M4(-6.044e-02, -1.510e-02, -1.153e-01, 1.034e-01, -3.919e-02, 1.693e-01, -9.993e-02, 9.887e-02, -4.767e-01, -5.224e-01, -2.356e-01, -2.719e-01, 2.220e-01, -5.790e-02, -2.353e-01, 3.756e-01), r);\n\tr = MulAdd(s2_6, M4(-3.249e-02, 1.989e-01, -9.129e-02, -2.266e-01, 9.810e-02, 1.517e-02, -6.743e-02, -7.139e-02, 5.856e-02, -1.223e-01, 1.849e-01, -2.400e-01, -6.638e-01, -1.431e-01, 7.543e-02, 7.866e-02), r);\n\tr = MulAdd(s2_7, M4(1.129e-01, -2.504e-01, -1.268e-01, -4.894e-01, -2.064e-02, -6.057e-02, 1.197e-01, -2.185e-01, -9.475e-02, -5.783e-03, 1.411e-01, 1.097e-02, -6.736e-01, 2.996e-01, 2.517e-02, 5.610e-01), r);\n\tr = MulAdd(s2_8, M4(7.648e-02, -8.256e-02, -1.898e-03, -6.823e-02, -3.014e-02, 2.219e-02, -1.916e-02, 9.177e-02, -1.586e-01, 6.034e-02, -1.241e-01, 8.531e-02, -9.582e-02, 1.067e+00, -1.194e-01, 4.834e-01), r);\n\tr = MulAdd(s3_0, M4(2.375e-01, -4.091e-01, 1.832e-01, 1.283e-01, -6.383e-03, 7.594e-02, 2.752e-01, -1.586e-02, 3.441e-02, -5.528e-02, 6.215e-02, -5.897e-02, 6.831e-02, 1.216e-02, 4.011e-02, -3.186e-02), r);\n\tr = MulAdd(s3_1, M4(6.683e-02, 2.236e-01, 3.607e-01, -7.426e-02, 2.785e-03, 1.162e-01, -2.118e-01, -1.945e-03, -1.978e-02, -3.249e-03, 1.293e-01, -1.713e-01, 1.218e-01, -1.215e-02, -1.414e-01, -6.262e-02), r);\n\tr = MulAdd(s3_2, M4(-3.481e-02, 1.937e-01, 5.413e-02, -6.549e-02, -1.993e-02, -9.367e-02, -1.667e-01, -3.937e-02, 2.967e-02, -7.572e-02, -1.416e-01, 3.481e-02, 1.576e-01, 6.027e-02, -3.635e-03, -7.787e-02), r);\n\tr = MulAdd(s3_3, M4(1.250e-01, -4.078e-01, 1.158e-01, -1.665e-02, -3.614e-03, -1.915e-01, 2.157e-01, -5.540e-01, -9.113e-02, 1.063e-01, 7.709e-02, 4.088e-02, 2.007e-01, -8.304e-02, -3.002e-02, -5.822e-02), r);\n\tr = MulAdd(s3_4, M4(-4.140e-02, -8.432e-02, 2.778e-01, 2.684e-01, -2.473e-01, -6.407e-02, -1.096e-01, -1.436e-01, 7.597e-02, 3.470e-02, 1.170e-01, -8.363e-02, 1.282e-01, -5.355e-03, -3.813e-02, 2.595e-02), r);\n\tr = MulAdd(s3_5, M4(8.598e-02, -1.880e-01, 1.063e-01, -3.625e-02, -1.067e-02, -1.114e-01, 4.480e-02, -7.637e-02, 1.680e-02, 1.438e-01, 8.682e-02, 5.675e-02, 1.712e-01, -1.034e-01, -5.088e-02, -3.905e-02), r);\n\tr = MulAdd(s3_6, M4(1.316e-01, 2.414e-02, 1.710e-01, -1.727e-02, 8.122e-02, -1.222e-01, 1.751e-01, -1.420e-01, 2.528e-02, -6.473e-02, 1.683e-03, 4.588e-02, 8.350e-03, 1.496e-02, -4.137e-03, -2.057e-02), r);\n\tr = MulAdd(s3_7, M4(2.034e-01, 5.782e-01, 3.159e-01, 3.472e-01, 1.365e-01, -2.080e-01, 3.101e-02, 1.994e-01, -5.950e-02, -1.722e-01, -6.752e-02, -7.090e-02, 4.903e-02, -3.817e-02, -5.804e-02, 7.004e-02), r);\n\tr = MulAdd(s3_8, M4(8.316e-02, -5.188e-02, 2.791e-02, 2.633e-01, 8.128e-02, -6.263e-02, 4.355e-03, 1.811e-01, 1.124e-03, 1.370e-01, -1.033e-01, 9.403e-02, 4.089e-03, 1.682e-01, -1.840e-02, 1.889e-01), r);\n\tr = MulAdd(s4_0, M4(6.883e-02, -3.365e-02, -7.749e-02, -1.125e-02, -5.791e-02, 8.547e-02, -1.313e-01, 8.004e-02, 1.737e-01, -1.435e-01, 5.896e-02, 3.570e-01, 6.774e-03, -9.935e-02, -7.111e-02, -2.184e-02), r);\n\tr = MulAdd(s4_1, M4(2.542e-02, 4.588e-02, -2.912e-02, 7.918e-02, -1.258e-01, 1.255e-01, 2.762e-01, 8.645e-02, 1.868e-01, -4.082e-02, 1.071e-01, -8.159e-02, 1.061e-01, -7.220e-02, 7.972e-02, -1.144e-01), r);\n\tr = MulAdd(s4_2, M4(-3.943e-02, -2.530e-03, -1.421e-01, 1.234e-02, -6.156e-02, -5.961e-02, 1.371e-01, -8.217e-02, -1.241e-02, 2.655e-02, 1.023e-01, 2.034e-02, -2.526e-02, -2.962e-01, -1.047e-01, -5.024e-02), r);\n\tr = MulAdd(s4_3, M4(-3.914e-02, -3.351e-02, -9.769e-02, 3.761e-02, -4.687e-02, 5.776e-03, -1.007e-01, -1.576e-02, 2.036e-02, 8.528e-02, -1.367e-01, -3.148e-02, 3.450e-02, 5.910e-02, -1.594e-01, 6.574e-02), r);\n\tr = MulAdd(s4_4, M4(-1.158e-01, 9.737e-02, 4.901e-02, 9.995e-02, 3.487e-01, 2.029e-01, -1.692e-01, -3.025e-01, 2.957e-02, 1.805e-01, 2.607e-01, -2.922e-01, -3.176e-02, 7.012e-04, -6.591e-02, 1.762e-01), r);\n\tr = MulAdd(s4_5, M4(1.198e-02, 1.014e-01, -1.126e-01, -2.023e-02, -7.713e-03, -3.943e-01, -3.786e-02, 1.089e-02, -1.520e-02, -1.209e-02, 1.198e-01, -3.087e-01, -4.675e-02, -1.251e-01, -1.260e-02, 1.825e-01), r);\n\tr = MulAdd(s4_6, M4(-2.353e-03, 1.799e-02, -1.054e-01, -7.154e-02, 5.610e-02, -1.107e-01, -1.445e-01, -9.241e-02, -3.225e-02, -1.135e-01, -1.337e-01, -9.913e-02, -3.790e-02, -8.893e-03, 3.147e-02, 7.881e-02), r);\n\tr = MulAdd(s4_7, M4(4.549e-02, 3.463e-03, -1.602e-01, -1.657e-01, -4.810e-02, -6.075e-02, 1.189e-01, 2.263e-01, 4.268e-02, 3.193e-02, 5.690e-02, -8.275e-02, -3.675e-02, 2.772e-02, 1.014e-01, 1.266e-01), r);\n\tr = MulAdd(s4_8, M4(-2.574e-02, -6.567e-02, 5.514e-02, -2.007e-02, -6.985e-02, -3.602e-02, 1.411e-01, 2.116e-01, 2.192e-02, 2.803e-01, -4.727e-02, -1.305e-01, 7.359e-02, -2.774e-01, 1.381e-02, 2.945e-02), r);\n\tr = MulAdd(s5_0, M4(1.886e-01, -3.069e-01, 1.924e-01, 8.122e-05, 1.030e-01, 3.917e-01, 9.103e-02, 1.352e-02, -5.548e-03, -9.670e-02, -1.490e-01, 4.872e-02, 1.341e-01, 2.537e-01, 3.456e-02, 2.064e-01), r);\n\tr = MulAdd(s5_1, M4(-7.483e-03, 1.570e-01, -3.750e-02, 7.532e-02, -1.204e-01, -7.274e-02, -1.715e-01, -6.946e-02, -8.478e-03, 2.234e-02, -6.538e-02, 8.187e-02, -4.276e-02, 3.250e-01, 7.092e-02, -1.634e-01), r);\n\tr = MulAdd(s5_2, M4(-2.400e-01, -6.757e-02, -2.895e-01, -4.304e-02, -6.639e-02, 2.374e-01, 2.146e-02, -2.000e-01, -1.112e-01, 3.496e-02, 1.347e-01, -1.487e-02, -1.085e-01, 4.659e-01, 1.224e-01, -8.265e-02), r);\n\tr = MulAdd(s5_3, M4(3.145e-01, 1.658e-02, -2.276e-02, -1.438e-01, -3.178e-02, 3.935e-02, -3.544e-02, -1.899e-01, -5.814e-02, -1.307e-01, -1.382e-01, -3.227e-02, 1.437e-02, 1.111e-01, -1.035e-01, -7.885e-02), r);\n\tr = MulAdd(s5_4, M4(-3.229e-01, -9.307e-02, 3.023e-01, 6.295e-03, 2.145e-01, -1.877e-01, -1.613e-01, -6.503e-01, -8.287e-03, 1.163e-01, 9.040e-02, 3.824e-01, 7.898e-02, 3.488e-02, 5.911e-02, -2.907e-01), r);\n\tr = MulAdd(s5_5, M4(1.529e-01, -3.209e-01, 4.762e-04, -1.543e-01, -1.263e-01, 1.533e-01, -8.658e-02, -1.062e-01, 1.029e-01, 1.971e-01, 3.683e-03, -6.256e-02, 3.022e-02, 3.967e-01, 3.126e-01, 1.873e-01), r);\n\tr = MulAdd(s5_6, M4(2.686e-01, -4.941e-01, -1.025e-01, -1.662e-01, 1.417e-01, 1.175e-01, -1.813e-01, -2.293e-01, -1.127e-01, -6.958e-02, -9.037e-02, 1.713e-01, 1.146e-01, -1.494e-01, -1.107e-01, 9.983e-02), r);\n\tr = MulAdd(s5_7, M4(-2.660e-01, 1.089e-02, 5.858e-02, 2.201e-01, -1.121e-02, -2.135e-01, -2.460e-02, -1.489e-01, -2.915e-02, 1.928e-01, 7.983e-02, 3.235e-01, -1.740e-01, -7.737e-02, 1.455e-03, -3.482e-02), r);\n\tr = MulAdd(s5_8, M4(-1.029e-02, 3.737e-01, 1.250e-01, 3.295e-02, -7.525e-02, 3.134e-01, -1.192e-01, 1.571e-01, -4.867e-02, 7.209e-02, -2.612e-02, 4.915e-02, 1.351e-01, -4.645e-02, -9.808e-02, -3.062e-02), r);\n\tr = MulAdd(s6_0, M4(7.136e-02, 3.892e-01, -2.039e-02, -9.361e-02, -3.301e-02, 2.963e-02, -1.642e-02, -4.920e-03, -1.372e-01, -1.734e-01, -4.992e-02, -3.279e-02, 2.520e-02, 1.099e-01, 8.215e-02, 8.987e-02), r);\n\tr = MulAdd(s6_1, M4(-3.586e-02, 5.550e-01, -1.931e-02, 5.454e-02, -1.024e-01, -1.373e-03, -1.027e-01, -1.894e-02, 2.436e-02, -7.983e-02, 1.831e-01, -7.232e-02, -9.584e-02, 2.270e-01, 4.128e-01, -1.151e-01), r);\n\tr = MulAdd(s6_2, M4(9.899e-03, -8.969e-02, -1.024e-01, -9.267e-02, -5.787e-02, -5.934e-03, 3.101e-02, -8.005e-03, 1.361e-02, 5.110e-02, 1.814e-01, 9.458e-03, -5.395e-02, -1.132e-01, 8.022e-02, -9.348e-02), r);\n\tr = MulAdd(s6_3, M4(-1.691e-02, 1.228e-01, -4.414e-01, -4.493e-02, 6.157e-02, 1.725e-01, 1.978e-01, 9.639e-02, -2.200e-01, 1.519e-02, -6.653e-02, -1.240e-01, 1.104e-01, -2.867e-01, -1.772e-01, -1.694e-01), r);\n\tr = MulAdd(s6_4, M4(4.175e-03, -3.042e-03, -4.069e-01, -1.799e-01, 7.398e-02, 1.979e-01, -2.934e-01, -3.110e-01, -2.453e-01, 3.449e-01, 2.932e-03, 4.631e-01, -5.239e-02, 4.868e-02, -1.146e-01, -3.701e-01), r);\n\tr = MulAdd(s6_5, M4(-1.675e-02, -3.687e-01, 5.851e-02, -9.250e-02, 4.892e-02, -1.813e-01, 4.720e-03, 3.314e-02, -1.723e-01, -1.135e-01, 3.627e-02, 5.550e-02, 6.245e-02, 3.006e-01, 1.394e-01, 1.003e-01), r);\n\tr = MulAdd(s6_6, M4(-3.407e-02, -2.386e-01, 5.349e-02, -2.292e-01, 9.524e-02, 4.638e-02, -7.525e-02, -2.798e-02, 1.035e-01, 1.299e-01, 3.415e-01, -1.354e-01, 7.460e-02, -1.440e-01, 1.353e-01, 3.060e-03), r);\n\tr = MulAdd(s6_7, M4(-1.258e-01, 2.745e-02, 1.231e-01, 1.713e-01, -2.098e-02, 7.189e-02, -1.986e-01, 2.369e-01, 1.856e-01, 4.211e-01, 6.151e-03, 6.073e-01, -3.834e-02, -2.427e-01, 5.039e-02, 1.161e-02), r);\n\tr = MulAdd(s6_8, M4(-1.989e-02, -4.339e-03, 2.842e-01, -1.031e-02, 1.369e-02, -1.014e-01, -6.263e-02, 1.122e-01, -1.563e-01, -6.126e-01, 1.238e-01, 5.685e-02, 4.562e-02, -1.745e-01, 1.086e-01, -1.466e-01), r);\n\tr = MulAdd(s7_0, M4(-4.805e-02, -1.401e-01, 6.923e-02, 1.697e-01, -2.523e-01, 8.848e-02, 1.435e-01, -2.233e-01, -5.380e-02, -6.852e-02, -1.428e-01, 2.790e-03, -2.441e-02, -2.829e-02, -5.574e-02, 1.381e-01), r);\n\tr = MulAdd(s7_1, M4(1.177e-01, -7.392e-02, 1.024e-02, -1.602e-01, 7.005e-02, -5.573e-02, 2.307e-01, -7.645e-02, -3.209e-02, -7.073e-02, -1.727e-01, -1.063e-02, 6.527e-02, -3.432e-01, -4.096e-02, 7.950e-03), r);\n\tr = MulAdd(s7_2, M4(-8.284e-02, 1.449e-01, -1.798e-02, -3.799e-02, -1.531e-03, -2.513e-01, -9.600e-02, -4.397e-02, -2.352e-02, 7.292e-03, -6.193e-02, 7.588e-02, -8.963e-02, 9.885e-04, -1.486e-01, 5.317e-02), r);\n\tr = MulAdd(s7_3, M4(-6.310e-02, -2.401e-01, 4.052e-02, 1.000e-01, -8.855e-02, -2.369e-01, 2.686e-01, -7.257e-02, 2.088e-02, -2.243e-01, 3.193e-03, 1.760e-01, -6.365e-02, 9.996e-02, 2.837e-03, -8.671e-02), r);\n\tr = MulAdd(s7_4, M4(8.164e-02, -4.756e-02, 2.309e-02, -2.026e-01, 4.132e-01, 4.186e-01, -2.936e-01, -2.088e-01, 5.347e-02, -2.918e-01, 2.646e-01, 9.397e-02, 4.247e-02, -6.289e-02, 7.642e-02, -2.434e-01), r);\n\tr = MulAdd(s7_5, M4(-3.417e-02, 3.304e-02, -2.885e-02, 1.089e-02, -1.627e-02, 1.389e-01, 1.373e-01, 2.479e-02, 3.377e-02, 1.498e-01, 7.101e-02, 4.019e-02, 7.393e-03, 2.319e-01, -2.269e-02, 1.284e-01), r);\n\tr = MulAdd(s7_6, M4(1.941e-02, 8.722e-02, -2.539e-02, 4.058e-02, -8.321e-02, -1.395e-01, -1.337e-01, 6.340e-02, 1.466e-02, 2.007e-01, 4.412e-02, -9.243e-02, -1.015e-01, 1.885e-01, -4.207e-02, 1.015e-01), r);\n\tr = MulAdd(s7_7, M4(3.785e-02, 4.694e-02, 7.932e-02, 2.261e-02, 1.802e-01, -3.702e-01, 2.005e-02, 4.594e-03, 8.157e-02, -9.254e-02, 8.060e-02, -4.165e-01, 6.297e-02, 5.093e-02, 4.032e-03, -2.049e-02), r);\n\tr = MulAdd(s7_8, M4(9.597e-03, 1.507e-01, -4.030e-02, 1.059e-01, 4.280e-02, -1.442e-01, -7.376e-02, -1.243e-01, -7.370e-02, 1.650e-01, 1.268e-01, -2.555e-01, 3.424e-02, -5.523e-02, -6.058e-02, -1.255e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -4.065e-02, 3.730e-03, 1.817e-03, 1.345e-02 };\n\tr = MulAdd(s0_0, M4(2.536e-02, -1.410e-02, 1.647e-02, 3.362e-02, -5.931e-02, 5.242e-02, 8.443e-02, 1.832e-02, -6.297e-02, 1.131e-02, 1.886e-03, 7.406e-02, 2.468e-01, 3.622e-02, 9.487e-02, -1.406e-01), r);\n\tr = MulAdd(s0_1, M4(1.708e-02, 5.549e-02, 8.309e-02, -3.319e-01, -8.135e-02, -6.274e-02, 4.542e-02, -1.088e-02, -6.131e-05, -6.698e-02, 2.377e-01, 1.074e-02, 2.328e-01, -5.083e-02, 5.312e-02, 3.142e-02), r);\n\tr = MulAdd(s0_2, M4(2.108e-01, -2.520e-01, -1.814e-01, -2.618e-01, 1.928e-01, 1.105e-01, 3.550e-01, 2.058e-01, 3.686e-02, -1.207e-01, -3.100e-02, -3.347e-03, -2.387e-02, 1.090e-01, -5.270e-02, -1.661e-01), r);\n\tr = MulAdd(s0_3, M4(-1.782e-01, 9.148e-02, 1.673e-02, 1.584e-01, 9.863e-02, -6.084e-02, -1.283e-01, 4.255e-02, 3.218e-02, -1.173e-01, -2.996e-02, -7.470e-02, -1.136e-01, -6.690e-02, 1.829e-02, -2.640e-01), r);\n\tr = MulAdd(s0_4, M4(-2.231e-01, -6.642e-02, -1.165e-01, 4.834e-01, 1.864e-01, 1.146e-01, 6.213e-02, -1.358e-01, -2.288e-02, -9.995e-02, -1.871e-02, -3.403e-02, 4.270e-02, -1.442e-01, 2.548e-01, -3.048e-01), r);\n\tr = MulAdd(s0_5, M4(6.320e-02, 5.797e-02, 1.611e-01, -1.258e-01, 5.108e-02, -6.501e-02, -2.157e-01, -5.767e-02, -4.806e-03, 5.627e-02, 8.263e-02, 6.277e-02, 1.150e-01, 1.506e-01, 3.555e-02, -2.758e-01), r);\n\tr = MulAdd(s0_6, M4(6.143e-02, -1.360e-01, 6.878e-02, 1.956e-02, 4.439e-02, -6.323e-02, -5.701e-02, -3.591e-02, -3.441e-02, 3.028e-02, -9.030e-02, -2.044e-01, -1.354e-01, -1.885e-01, 6.433e-02, -8.726e-02), r);\n\tr = MulAdd(s0_7, M4(2.577e-02, 1.404e-01, -5.843e-02, 9.891e-02, 4.416e-02, -1.072e-01, -2.792e-03, -2.544e-02, 8.820e-02, 1.357e-01, -5.828e-02, 1.665e-01, 8.421e-02, 7.829e-02, -1.086e-02, 1.252e-01), r);\n\tr = MulAdd(s0_8, M4(1.450e-01, 4.198e-02, -3.822e-03, 9.691e-02, 2.170e-02, 1.878e-01, -1.555e-01, 1.012e-01, -2.978e-02, 7.988e-02, -5.955e-02, 6.559e-02, -1.048e-01, -2.250e-01, 6.121e-02, -1.443e-01), r);\n\tr = MulAdd(s1_0, M4(1.716e-01, 1.011e-01, 8.449e-02, -1.361e-01, 7.292e-02, -2.243e-01, 9.731e-02, -8.865e-02, -2.096e-01, -4.386e-01, -1.018e-01, -1.794e-01, -1.590e-02, 1.191e-01, -1.300e-01, 7.400e-02), r);\n\tr = MulAdd(s1_1, M4(-2.492e-01, 1.453e-01, 2.022e-01, 4.891e-02, -7.163e-02, -1.665e-01, 2.042e-02, 5.348e-01, 3.951e-01, 4.514e-01, 1.276e-01, 1.216e-01, 3.184e-02, 6.502e-02, -2.052e-01, 1.890e-01), r);\n\tr = MulAdd(s1_2, M4(3.835e-02, -5.284e-02, -2.494e-01, 2.411e-01, -5.676e-03, -1.005e-01, 2.276e-01, -7.575e-01, 1.925e-01, 4.742e-01, -4.667e-01, -1.748e-01, -4.170e-01, -1.441e-01, -3.124e-03, 3.889e-01), r);\n\tr = MulAdd(s1_3, M4(1.985e-01, -1.217e-01, 6.853e-02, -6.425e-01, -1.093e-01, 3.058e-02, 1.008e-01, -1.000e-02, -4.686e-02, 3.577e-01, 5.252e-02, 2.789e-02, 1.321e-01, 2.989e-01, -7.806e-02, 1.051e-01), r);\n\tr = MulAdd(s1_4, M4(2.250e-01, -4.267e-01, 7.196e-02, -8.018e-01, 1.341e-01, 1.303e-01, 1.809e-01, 6.113e-01, 1.488e-02, 8.244e-02, 9.509e-02, -6.869e-02, 3.005e-01, 2.894e-01, 1.626e-01, 5.481e-02), r);\n\tr = MulAdd(s1_5, M4(3.079e-01, -2.656e-01, -4.390e-02, 1.123e-01, 3.129e-02, 2.423e-01, 1.855e-01, 6.808e-02, 1.320e-01, 2.064e-02, -2.904e-02, -1.324e-01, -8.232e-02, -1.363e-01, -5.007e-01, 3.797e-01), r);\n\tr = MulAdd(s1_6, M4(5.187e-02, -1.303e-02, -1.266e-01, -1.807e-01, 1.205e-01, -7.534e-02, 2.407e-01, 3.149e-02, 8.110e-03, -3.276e-02, 8.138e-02, -5.819e-02, -6.869e-02, -1.575e-01, -4.518e-02, 4.960e-02), r);\n\tr = MulAdd(s1_7, M4(7.838e-02, -1.572e-01, -8.077e-02, -5.178e-01, 1.536e-02, -1.072e-01, 1.329e-01, 3.574e-02, -1.702e-01, -2.425e-01, -1.537e-01, -3.181e-01, 1.056e-01, 3.161e-01, -1.665e-01, 6.447e-02), r);\n\tr = MulAdd(s1_8, M4(-1.255e-01, -1.266e-01, -3.164e-02, -2.112e-01, -1.026e-01, 2.861e-01, 1.551e-02, -1.131e-02, 6.266e-02, -2.642e-01, -2.798e-01, 2.402e-01, -2.326e-01, 2.260e-01, -8.163e-02, 5.749e-02), r);\n\tr = MulAdd(s2_0, M4(-8.472e-02, 3.525e-02, -3.044e-03, 8.102e-02, -1.510e-01, 2.814e-02, -2.020e-01, -2.593e-02, -1.469e-01, 2.096e-01, 1.935e-01, 1.393e-01, -3.591e-01, 4.131e-01, -7.662e-01, 2.411e-01), r);\n\tr = MulAdd(s2_1, M4(3.957e-02, -6.504e-02, 3.046e-01, -8.791e-02, 2.511e-02, 1.664e-01, 2.942e-01, -9.583e-02, 1.185e-01, 6.388e-02, -1.285e-01, 2.930e-01, -3.716e-01, 9.728e-01, -2.521e-01, 5.220e-02), r);\n\tr = MulAdd(s2_2, M4(7.598e-02, 9.158e-02, 2.824e-02, -6.247e-02, -1.126e-01, 8.460e-02, 5.086e-02, 1.760e-01, 3.303e-02, 2.893e-01, 3.190e-01, 6.632e-03, 6.721e-01, -1.753e-01, -2.229e-01, 2.627e-01), r);\n\tr = MulAdd(s2_3, M4(1.787e-01, -1.077e-02, -5.198e-02, -7.528e-02, 1.769e-03, 1.579e-01, 1.184e-01, -8.013e-02, 6.146e-03, -2.568e-01, 7.215e-02, -1.016e-01, 3.469e-01, -3.423e-01, -6.154e-02, -1.618e-01), r);\n\tr = MulAdd(s2_4, M4(1.202e-02, -1.281e-01, -1.330e-01, -1.741e-02, 9.794e-02, -1.963e-01, -8.935e-02, 8.661e-02, 3.888e-01, -8.260e-02, -1.119e-01, -1.267e-02, -1.810e-01, 7.144e-02, 5.592e-01, -2.022e-01), r);\n\tr = MulAdd(s2_5, M4(-6.198e-02, -1.699e-03, 9.683e-02, -1.632e-02, 1.796e-03, 3.730e-02, -1.630e-01, -7.638e-04, 1.343e-01, -3.744e-02, -3.589e-01, -3.690e-02, 4.693e-01, -1.661e-01, -2.354e-01, -1.382e-03), r);\n\tr = MulAdd(s2_6, M4(1.837e-02, -2.326e-02, -1.332e-01, -2.146e-02, 1.084e-01, -1.774e-01, 2.879e-03, 1.380e-02, 3.178e-02, 2.288e-01, 4.481e-02, 1.634e-01, -3.233e-01, -1.216e-01, 6.813e-02, 3.430e-02), r);\n\tr = MulAdd(s2_7, M4(1.806e-01, -1.755e-01, 2.481e-02, 8.190e-02, -1.475e-02, -1.077e-01, 1.408e-02, -1.033e-02, 2.499e-02, -8.072e-02, -9.272e-02, -4.949e-02, -4.336e-01, 5.354e-01, 1.022e+00, -1.878e-01), r);\n\tr = MulAdd(s2_8, M4(-3.080e-03, 6.252e-02, 4.382e-02, 1.736e-01, -1.568e-02, 1.294e-01, 1.588e-01, -3.209e-03, -5.668e-02, -2.989e-02, 2.673e-01, -1.652e-01, -1.984e-01, -2.244e-01, -1.289e-01, -2.206e-02), r);\n\tr = MulAdd(s3_0, M4(-3.345e-02, -6.145e-02, 1.239e-01, 1.860e-01, 5.689e-01, 5.143e-02, -1.748e-01, -4.751e-01, -2.738e-01, -1.132e-01, -1.073e-01, -5.956e-02, 6.889e-02, 4.414e-02, -5.410e-02, 2.421e-02), r);\n\tr = MulAdd(s3_1, M4(-4.755e-02, -3.658e-02, 1.941e-01, 1.070e-01, 6.188e-02, -4.438e-01, 6.193e-02, -8.983e-02, 8.250e-02, -3.456e-02, -3.287e-03, 1.277e-01, 8.643e-02, 3.769e-02, -1.689e-01, -5.630e-02), r);\n\tr = MulAdd(s3_2, M4(4.335e-02, 1.358e-02, 5.347e-02, 1.566e-01, -4.897e-02, -1.998e-01, 2.272e-01, -7.817e-02, -1.532e-01, 3.866e-02, -4.835e-02, -8.465e-03, -1.622e-01, -8.045e-02, 8.395e-02, -1.099e-01), r);\n\tr = MulAdd(s3_3, M4(-2.014e-01, 8.535e-02, -1.486e-01, 4.427e-01, 5.379e-01, -2.338e-02, -1.982e-01, -1.629e-01, -9.256e-03, 1.563e-01, -2.911e-02, -6.092e-02, -7.215e-02, 1.460e-01, -4.224e-03, 4.965e-02), r);\n\tr = MulAdd(s3_4, M4(5.919e-02, 3.212e-01, -3.621e-02, -4.207e-01, 6.892e-02, 8.369e-02, 4.878e-02, -1.324e-01, -1.539e-01, 9.862e-03, -1.181e-01, 1.386e-01, 4.491e-02, 4.382e-02, 5.232e-02, 1.089e-01), r);\n\tr = MulAdd(s3_5, M4(-4.122e-02, 1.981e-01, 3.009e-02, 1.198e-01, 6.533e-01, -1.429e-01, -4.168e-01, -8.503e-02, 3.888e-02, 3.679e-02, -1.368e-01, -3.706e-02, 4.718e-02, -1.036e-01, 6.045e-02, 2.219e-02), r);\n\tr = MulAdd(s3_6, M4(-1.123e-01, -1.056e-01, -3.821e-02, -8.801e-02, -4.420e-02, 4.255e-03, -2.447e-01, 4.728e-03, 1.282e-01, 1.008e-01, 1.862e-01, -9.000e-03, -1.476e-02, -6.480e-02, 1.721e-02, 8.208e-02), r);\n\tr = MulAdd(s3_7, M4(8.583e-02, -5.756e-02, -2.266e-01, -3.114e-01, -2.369e-01, 1.099e-01, -2.180e-01, -2.813e-01, -8.890e-02, -8.020e-02, 1.347e-01, -5.877e-02, 1.781e-01, 1.528e-02, 2.447e-02, -6.176e-02), r);\n\tr = MulAdd(s3_8, M4(-5.824e-02, -2.396e-02, -1.056e-01, 2.120e-01, 7.797e-02, -7.151e-03, 9.115e-02, -1.450e-01, 7.011e-02, 2.717e-02, -1.055e-01, -8.077e-02, -1.130e-01, -1.042e-01, -6.020e-03, 5.198e-03), r);\n\tr = MulAdd(s4_0, M4(5.166e-03, 1.304e-01, -4.617e-02, 2.465e-01, -1.138e-01, -8.594e-02, 2.374e-02, 2.387e-01, -1.221e-01, 3.200e-01, -4.661e-02, -2.573e-01, -1.490e-01, 8.570e-02, 1.173e-01, -8.304e-02), r);\n\tr = MulAdd(s4_1, M4(-1.341e-01, -9.204e-02, 1.326e-01, -4.510e-02, 1.127e-01, -1.129e-01, -9.003e-02, 6.497e-02, -8.473e-02, 2.957e-01, -5.822e-02, 2.001e-01, -1.312e-01, 1.851e-01, 6.737e-02, 2.108e-01), r);\n\tr = MulAdd(s4_2, M4(-1.810e-01, 5.466e-02, 1.819e-01, 1.517e-01, 7.883e-02, -2.586e-02, -1.670e-01, -7.121e-02, -2.213e-01, 2.562e-01, -1.028e-02, 1.537e-01, -2.064e-01, 1.528e-01, 2.646e-01, 8.116e-02), r);\n\tr = MulAdd(s4_3, M4(1.251e-01, -1.643e-01, -1.100e-01, -1.026e-01, -1.469e-01, 1.956e-01, -1.132e-01, -2.920e-01, -1.660e-01, 4.833e-01, 7.354e-02, 3.729e-01, 2.297e-01, 1.096e-01, 1.608e-01, -9.050e-02), r);\n\tr = MulAdd(s4_4, M4(-1.269e-01, -1.451e-01, -1.771e-01, -2.583e-02, 2.799e-01, -7.998e-02, -7.126e-02, -3.134e-01, -1.531e-01, 2.349e-01, -6.403e-02, 3.341e-01, 5.373e-01, 3.720e-01, 5.513e-02, -3.110e-02), r);\n\tr = MulAdd(s4_5, M4(2.867e-01, -7.715e-02, -2.043e-02, -1.149e-01, -7.275e-02, 1.572e-01, 1.648e-02, -1.160e-03, -8.993e-02, -1.441e-02, -2.222e-01, 1.281e-01, 6.476e-02, 2.251e-01, -2.359e-01, -1.092e-01), r);\n\tr = MulAdd(s4_6, M4(-1.415e-02, 1.372e-01, -1.024e-02, -1.359e-01, -1.174e-01, 1.206e-01, 3.089e-02, 9.655e-02, -7.835e-02, 2.261e-01, 8.681e-02, 3.623e-01, 1.141e-01, -1.457e-03, -1.088e-01, -1.918e-01), r);\n\tr = MulAdd(s4_7, M4(-1.089e-01, -7.624e-02, -2.815e-02, -6.304e-02, -7.850e-02, 2.300e-01, 1.237e-02, -1.772e-01, -1.581e-01, 1.061e-01, 1.307e-02, 2.340e-02, -1.419e-01, -1.174e-01, -2.259e-01, -2.288e-01), r);\n\tr = MulAdd(s4_8, M4(1.302e-01, -4.664e-03, -3.681e-02, 5.637e-02, -1.678e-01, 8.718e-02, -2.442e-02, -7.711e-02, 4.939e-02, 2.992e-01, 1.165e-01, -4.479e-02, -1.839e-01, 1.086e-01, -9.941e-02, -4.750e-02), r);\n\tr = MulAdd(s5_0, M4(2.046e-01, 1.038e-01, -4.133e-01, -2.010e-01, 2.893e-02, -1.592e-01, 1.398e-01, -7.004e-02, 1.399e-01, -1.197e-01, 2.010e-02, -6.009e-02, 1.121e-01, -1.981e-01, -1.484e-01, -6.293e-02), r);\n\tr = MulAdd(s5_1, M4(2.744e-02, -1.539e-01, -4.901e-01, -1.259e-01, 7.296e-03, 1.802e-03, -3.523e-02, 2.218e-02, -2.658e-02, -1.041e-01, 1.138e-02, 9.445e-02, 3.299e-02, -2.628e-01, -1.952e-01, -2.199e-01), r);\n\tr = MulAdd(s5_2, M4(1.606e-02, 1.991e-01, 1.412e-01, 1.806e-03, -2.459e-01, -5.529e-02, -1.762e-01, 9.896e-02, 2.059e-01, -1.678e-01, 3.718e-02, 2.952e-02, 3.115e-01, -1.161e-01, -2.211e-01, -1.061e-01), r);\n\tr = MulAdd(s5_3, M4(-3.352e-01, 1.077e-01, 2.678e-01, -4.436e-01, 1.087e-02, -1.374e-02, 2.687e-02, 6.731e-02, 5.617e-02, -9.116e-02, 1.330e-02, -9.804e-02, -1.134e-01, -2.236e-02, -1.948e-01, -7.179e-02), r);\n\tr = MulAdd(s5_4, M4(2.647e-01, -2.525e-02, -2.016e-01, -1.311e-01, 3.206e-01, 2.642e-01, 9.656e-02, 5.895e-02, 5.513e-02, -2.987e-02, 8.391e-02, -1.445e-01, -2.961e-01, -5.127e-01, -1.732e-01, 3.098e-02), r);\n\tr = MulAdd(s5_5, M4(-8.694e-02, 6.743e-01, 3.185e-01, 1.705e-01, -7.492e-02, 5.664e-02, -1.143e-01, 1.243e-01, 1.243e-01, -1.035e-01, 5.420e-02, -1.083e-01, -1.275e-01, -2.274e-01, -2.832e-01, -1.849e-02), r);\n\tr = MulAdd(s5_6, M4(1.238e-01, 1.585e-01, 5.295e-01, 8.451e-02, 5.142e-02, -2.950e-02, 2.497e-02, 1.916e-01, -7.226e-02, -1.434e-01, 1.111e-01, -1.004e-01, 2.997e-02, -1.751e-02, -5.959e-02, -4.726e-02), r);\n\tr = MulAdd(s5_7, M4(8.209e-01, 1.719e-01, 5.450e-01, -2.042e-02, 9.534e-02, 1.269e-01, 5.457e-02, -1.328e-02, -2.037e-01, 9.191e-02, -8.484e-02, 5.416e-03, 1.403e-02, -3.179e-02, 2.140e-01, -4.565e-02), r);\n\tr = MulAdd(s5_8, M4(1.142e-01, 5.137e-01, 1.714e-01, 5.144e-01, -1.404e-02, -4.950e-02, 1.041e-01, 1.605e-01, -4.338e-02, 4.684e-02, -1.573e-02, -1.635e-02, 5.163e-02, -1.147e-01, 6.578e-02, 2.531e-01), r);\n\tr = MulAdd(s6_0, M4(1.340e-01, -2.285e-01, -9.562e-02, 1.714e-01, 2.930e-01, 8.161e-02, -4.617e-02, -4.056e-02, -2.496e-03, 4.013e-03, -5.556e-02, 2.695e-02, 2.549e-01, -2.422e-01, -5.763e-03, -3.592e-01), r);\n\tr = MulAdd(s6_1, M4(-2.073e-01, -2.901e-01, 2.882e-01, 1.224e-01, 2.254e-01, -6.127e-02, 1.563e-01, 1.424e-01, -1.351e-01, 1.496e-02, 2.001e-02, 2.628e-02, 8.940e-02, -3.824e-01, -2.008e-02, -2.165e-01), r);\n\tr = MulAdd(s6_2, M4(1.411e-01, 7.237e-02, -7.323e-02, -6.832e-02, -2.638e-02, 2.173e-02, -5.183e-02, -2.793e-02, 1.588e-01, -3.605e-02, -1.937e-01, 2.666e-01, 3.727e-02, -1.306e-01, -1.939e-01, -2.043e-01), r);\n\tr = MulAdd(s6_3, M4(-9.488e-02, -1.844e-01, 7.070e-02, -1.471e-01, -9.504e-03, -1.100e-01, 5.983e-02, -7.031e-03, 2.339e-01, 2.060e-01, -1.541e-01, -1.469e-01, -6.130e-02, -1.651e-01, 5.473e-03, -4.535e-01), r);\n\tr = MulAdd(s6_4, M4(-9.408e-02, 1.051e-01, 5.935e-01, 2.440e-01, 4.207e-02, -1.485e-01, 2.241e-01, -1.543e-01, 4.195e-02, -1.073e-01, -3.652e-01, 7.859e-02, 2.443e-01, -3.602e-01, 7.919e-02, -3.963e-01), r);\n\tr = MulAdd(s6_5, M4(-9.282e-02, -5.716e-03, 2.926e-01, 1.167e-02, 4.879e-02, 3.732e-02, -8.926e-02, 4.256e-02, -1.788e-01, 2.622e-01, 1.357e-01, 7.940e-02, 1.382e-01, 6.902e-02, -1.767e-01, -1.719e-01), r);\n\tr = MulAdd(s6_6, M4(-1.696e-03, -1.124e-01, 1.223e-01, -2.895e-01, 1.031e-01, -7.886e-02, 3.023e-02, 7.795e-02, -4.661e-02, -9.979e-02, 6.993e-02, -7.016e-02, 4.502e-02, -7.555e-02, -6.096e-02, -3.440e-01), r);\n\tr = MulAdd(s6_7, M4(-3.132e-02, -1.518e-01, 9.386e-02, 3.184e-02, -2.529e-02, 2.358e-01, -1.085e-01, 1.057e-01, 7.691e-03, -2.959e-01, 3.834e-03, 1.955e-01, 1.709e-01, -3.687e-02, 8.499e-02, 2.509e-02), r);\n\tr = MulAdd(s6_8, M4(3.696e-02, 5.454e-02, -1.603e-01, 1.265e-01, -9.435e-02, 5.880e-02, -3.653e-02, 6.345e-02, -1.639e-02, -2.848e-01, -6.280e-02, 2.619e-01, 7.176e-02, -4.521e-02, 5.806e-02, 8.413e-02), r);\n\tr = MulAdd(s7_0, M4(-8.326e-02, -6.503e-02, -2.698e-01, 1.909e-01, 2.131e-02, -2.712e-01, 7.258e-02, -5.686e-03, 2.315e-02, 1.176e-01, -3.460e-02, -2.184e-01, -1.923e-01, 4.375e-02, -3.431e-03, 1.264e-01), r);\n\tr = MulAdd(s7_1, M4(1.767e-01, 1.411e-01, 5.236e-02, -2.954e-02, -5.819e-02, -1.108e-01, -1.118e-02, -9.685e-02, -2.081e-02, -7.350e-02, 5.443e-02, -1.465e-01, -1.765e-01, 1.862e-01, -3.695e-02, 2.506e-01), r);\n\tr = MulAdd(s7_2, M4(9.326e-02, 6.618e-03, -7.719e-02, -1.290e-01, -3.512e-02, -8.315e-02, -3.536e-01, 8.163e-02, -8.239e-02, 1.151e-01, 7.672e-02, -5.276e-02, -2.285e-01, -2.168e-02, 1.083e-01, 1.704e-01), r);\n\tr = MulAdd(s7_3, M4(2.332e-02, 1.445e-01, 1.241e-01, -6.039e-02, 8.266e-02, -1.892e-01, -5.408e-01, 8.206e-02, 2.250e-01, 2.425e-01, 6.192e-02, 5.134e-03, -5.053e-02, 2.632e-01, -7.094e-03, 9.883e-02), r);\n\tr = MulAdd(s7_4, M4(-2.304e-02, -8.378e-02, -6.218e-02, -1.157e-01, -4.370e-02, 1.416e-01, 4.883e-01, 1.203e-01, -1.086e-01, 5.591e-02, -2.372e-01, 5.909e-02, -1.630e-01, 1.430e-01, 8.641e-02, -4.704e-03), r);\n\tr = MulAdd(s7_5, M4(-1.545e-01, -6.740e-02, 1.799e-01, -4.104e-02, -3.570e-02, 2.898e-01, -1.500e-01, -2.319e-01, -1.425e-01, -4.409e-02, 2.314e-01, 2.013e-02, -1.138e-01, 1.329e-01, -1.275e-01, 9.538e-02), r);\n\tr = MulAdd(s7_6, M4(6.026e-02, 2.461e-01, 6.967e-02, 1.197e-01, -7.590e-02, 7.220e-02, -6.694e-02, -6.113e-01, 6.629e-02, 8.935e-02, -1.509e-01, 1.458e-01, -3.097e-02, 8.744e-02, 5.177e-02, 1.485e-01), r);\n\tr = MulAdd(s7_7, M4(-7.051e-02, -1.119e-01, -7.987e-02, 3.374e-02, -2.263e-01, 5.299e-02, -2.333e-01, -6.558e-01, 9.406e-02, -2.782e-01, 1.104e-01, -2.358e-01, -1.142e-01, -4.699e-02, -2.193e-01, -5.177e-02), r);\n\tr = MulAdd(s7_8, M4(-1.533e-02, -4.159e-02, -9.005e-02, -2.094e-02, 4.571e-02, 8.586e-02, -7.003e-02, -1.314e-01, -2.340e-02, -3.771e-02, 9.190e-02, 1.260e-01, -1.660e-01, -9.283e-03, 8.861e-02, -9.932e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -8.533e-04, -5.599e-03, -1.843e-02, 5.456e-02 };\n\tr = MulAdd(s0_0, M4(9.513e-02, -1.023e-01, 1.587e-01, 1.025e-01, -6.720e-02, 1.538e-01, -3.814e-02, 2.291e-02, 8.159e-02, -5.872e-02, 8.317e-02, 1.526e-01, 1.371e-01, -4.979e-04, -1.534e-01, -3.054e-02), r);\n\tr = MulAdd(s0_1, M4(-5.019e-03, 1.215e-01, -2.858e-01, 1.509e-01, -7.670e-02, -1.181e-01, -3.646e-02, -5.105e-02, 1.079e-01, 8.831e-02, -1.282e-02, -1.592e-01, 2.819e-01, -1.678e-01, 1.269e-01, 2.218e-02), r);\n\tr = MulAdd(s0_2, M4(-2.377e-01, -3.966e-02, -4.808e-02, -1.515e-03, 2.682e-02, -1.740e-02, 1.949e-01, -2.585e-01, 1.936e-01, -2.997e-02, 6.483e-02, -1.305e-01, 8.261e-02, -1.004e-01, 7.083e-03, -8.298e-02), r);\n\tr = MulAdd(s0_3, M4(-1.870e-02, -2.180e-02, 1.287e-01, -1.681e-02, 5.307e-02, -1.779e-02, -3.764e-02, -6.278e-03, -6.895e-02, -1.381e-01, 8.012e-02, 1.061e-02, -1.052e-02, 6.920e-02, -9.246e-02, -1.925e-01), r);\n\tr = MulAdd(s0_4, M4(1.152e-01, 3.707e-01, -3.938e-01, -2.672e-02, -2.630e-02, -3.670e-01, 9.251e-02, 1.047e-01, 3.332e-02, 3.702e-02, 3.343e-02, -4.699e-02, 1.887e-01, -3.178e-01, 4.346e-01, -1.446e-01), r);\n\tr = MulAdd(s0_5, M4(-1.992e-01, 2.275e-01, -1.044e-01, -1.716e-01, 8.659e-03, -1.067e-01, -5.529e-02, 1.015e-01, -2.028e-01, -6.617e-03, 3.986e-02, -1.639e-01, 6.785e-01, 1.518e-01, 1.681e-01, -1.835e-01), r);\n\tr = MulAdd(s0_6, M4(-1.659e-01, -8.147e-02, 1.015e-01, 5.627e-02, -6.553e-02, 1.071e-01, -1.059e-01, -1.409e-01, 1.422e-02, -9.457e-02, -1.223e-01, 9.262e-02, 2.481e-01, 3.273e-01, -4.202e-02, -1.980e-01), r);\n\tr = MulAdd(s0_7, M4(1.837e-01, 1.838e-01, 4.286e-02, -2.344e-02, 1.487e-01, 3.209e-02, -3.188e-02, 8.071e-02, 9.691e-03, 8.573e-02, 2.254e-01, -5.335e-02, 6.388e-02, 7.047e-02, -1.156e-01, -1.170e-01), r);\n\tr = MulAdd(s0_8, M4(-2.658e-01, 1.008e-01, 3.286e-02, 2.389e-03, 7.517e-02, -2.851e-02, 6.483e-02, 7.479e-02, -1.277e-01, 7.402e-02, -1.648e-01, 6.628e-02, 1.634e-01, 1.439e-01, -2.544e-01, 4.385e-02), r);\n\tr = MulAdd(s1_0, M4(-1.361e-02, -2.189e-02, -1.571e-01, 7.063e-02, 1.665e-01, 1.246e-01, 2.842e-01, -3.367e-02, -2.822e-01, -2.907e-01, -5.340e-01, -1.405e-01, -3.345e-02, -7.615e-02, 2.898e-02, 5.967e-02), r);\n\tr = MulAdd(s1_1, M4(-4.387e-02, -4.236e-01, 4.281e-01, -1.953e-01, 7.487e-01, 7.529e-01, -5.215e-01, 1.123e-01, -1.363e-01, 1.408e-02, -1.552e-01, 3.233e-01, -2.761e-01, 8.336e-02, -7.412e-02, -9.009e-02), r);\n\tr = MulAdd(s1_2, M4(-4.157e-02, -3.318e-02, 2.718e-01, 1.120e-01, 3.292e-01, 1.252e-01, -2.324e-01, -5.152e-03, -3.227e-01, -2.902e-02, -4.069e-01, 2.859e-01, 2.375e-01, -4.981e-02, -1.607e-01, -1.368e-02), r);\n\tr = MulAdd(s1_3, M4(2.961e-02, -3.944e-01, 6.968e-02, 6.573e-02, 2.166e-02, 1.155e-01, 1.526e-01, 1.394e-01, 1.478e-01, 7.622e-02, 5.468e-02, 4.773e-02, -1.586e-02, -1.204e-02, 5.099e-02, 1.672e-01), r);\n\tr = MulAdd(s1_4, M4(-4.088e-01, -1.786e-02, 3.435e-01, 1.761e-01, 4.563e-01, 7.573e-01, -3.591e-01, -1.546e-01, -2.650e-01, 8.012e-02, -3.056e-01, 1.255e-01, -1.513e-01, -2.147e-01, -8.252e-02, 2.772e-02), r);\n\tr = MulAdd(s1_5, M4(-1.657e-01, -1.217e-01, 3.345e-01, -2.820e-01, 3.113e-03, 4.717e-01, 4.105e-02, 2.253e-01, 2.879e-01, 1.124e-01, 6.953e-02, 5.647e-01, -2.668e-01, -3.415e-01, -1.983e-02, 1.841e-01), r);\n\tr = MulAdd(s1_6, M4(5.096e-02, -3.405e-02, 2.642e-01, -1.489e-01, -1.688e-02, -1.223e-01, 2.398e-01, 9.426e-02, -2.125e-01, -1.438e-01, 5.223e-02, -2.062e-01, -2.646e-01, 1.598e-01, 4.466e-02, 2.793e-01), r);\n\tr = MulAdd(s1_7, M4(-1.469e-01, -2.421e-01, 3.448e-01, -4.945e-02, 2.766e-01, 1.970e-01, -2.203e-01, -6.525e-02, 2.432e-02, 4.168e-01, 4.742e-01, 2.581e-01, -1.645e-01, -4.138e-01, -1.509e-01, 1.089e-01), r);\n\tr = MulAdd(s1_8, M4(2.470e-01, -1.231e-01, -1.178e-01, -6.888e-02, -5.987e-02, -3.821e-02, -1.473e-01, 1.678e-01, 5.462e-01, 9.235e-02, -7.806e-01, 3.665e-01, -1.915e-01, -1.793e-01, -9.810e-02, 2.176e-01), r);\n\tr = MulAdd(s2_0, M4(2.157e-01, 2.611e-02, 2.140e-02, 7.000e-02, 1.860e-01, -1.012e-02, 5.828e-02, 1.636e-01, 1.133e-02, 5.581e-02, -1.959e-01, 9.071e-03, -3.571e-01, 1.393e-01, -2.630e-01, -4.527e-01), r);\n\tr = MulAdd(s2_1, M4(-2.209e-02, -8.153e-02, -2.016e-01, -2.546e-02, -1.248e-01, 3.990e-02, -2.968e-02, -1.432e-01, -7.041e-02, -2.290e-01, -1.667e-01, 2.402e-01, -3.291e-01, -3.824e-02, 4.528e-01, -2.175e-01), r);\n\tr = MulAdd(s2_2, M4(4.376e-01, 3.842e-02, 4.605e-02, 3.200e-02, 2.267e-01, -1.208e-02, -2.008e-01, -1.760e-01, -1.106e-01, -7.952e-02, -2.439e-02, -2.233e-02, 2.287e-01, 7.038e-02, -8.782e-02, 2.208e-01), r);\n\tr = MulAdd(s2_3, M4(-2.928e-01, -1.633e-01, 2.021e-01, -1.321e-01, -1.699e-01, -1.313e-01, 2.450e-01, 9.154e-02, -1.370e-01, -1.742e-01, 3.649e-01, 1.948e-02, -1.845e-01, 5.658e-01, -3.862e-01, -5.922e-01), r);\n\tr = MulAdd(s2_4, M4(-1.180e-01, 5.187e-02, -1.602e-01, 1.942e-01, -6.294e-02, 6.854e-02, -4.731e-02, -1.045e-01, 4.786e-01, 1.082e-01, -2.489e-01, -3.709e-01, 1.893e-01, -8.286e-02, 1.363e-01, -5.499e-01), r);\n\tr = MulAdd(s2_5, M4(3.056e-02, 8.957e-02, -1.323e-01, -4.396e-02, 1.382e-01, 4.930e-02, 1.285e-01, -1.072e-01, -8.383e-02, 7.365e-02, -3.295e-02, -4.595e-02, 3.012e-01, -3.066e-01, 3.639e-01, 6.333e-03), r);\n\tr = MulAdd(s2_6, M4(1.122e-01, -1.318e-01, 2.506e-02, 7.950e-02, -1.492e-01, -1.961e-02, 1.083e-01, 6.986e-02, -6.250e-02, 1.755e-01, 1.868e-01, -1.286e-01, -4.907e-01, 1.165e-01, 2.817e-01, -7.604e-01), r);\n\tr = MulAdd(s2_7, M4(5.926e-02, -1.446e-02, 6.740e-02, -1.877e-01, 1.512e-01, 4.305e-02, -4.368e-02, -3.655e-02, 2.004e-01, 8.357e-02, -4.056e-01, -2.699e-01, 6.772e-02, -5.004e-01, 7.243e-01, -6.036e-01), r);\n\tr = MulAdd(s2_8, M4(-1.636e-01, 3.726e-02, -7.612e-02, -3.775e-02, -3.209e-02, -6.485e-02, -1.036e-01, 3.863e-02, -2.952e-01, -1.468e-01, 5.695e-01, -3.171e-01, 2.957e-01, -2.874e-01, -7.122e-02, 2.408e-01), r);\n\tr = MulAdd(s3_0, M4(-2.847e-01, -6.624e-02, 3.070e-01, 2.705e-01, -4.489e-01, -2.211e-02, 6.367e-02, -1.580e-01, -3.082e-02, 1.637e-02, -5.281e-02, -2.793e-01, 1.842e-03, 1.121e-01, -1.861e-01, -2.153e-02), r);\n\tr = MulAdd(s3_1, M4(-1.506e-01, -8.362e-03, 2.448e-01, 2.311e-01, -1.994e-04, 1.714e-01, -5.810e-02, -3.037e-01, -1.406e-01, 1.158e-02, -9.110e-02, -1.218e-03, 7.478e-02, -2.950e-03, 1.240e-02, 4.613e-02), r);\n\tr = MulAdd(s3_2, M4(-1.082e-01, 2.173e-01, 1.511e-01, -3.761e-01, -1.362e-01, -7.930e-02, -3.676e-01, 3.172e-02, -1.701e-01, -8.242e-02, 7.806e-03, -9.085e-02, 8.387e-02, -4.756e-02, 1.034e-01, 2.831e-02), r);\n\tr = MulAdd(s3_3, M4(1.168e-01, -1.872e-01, 2.581e-02, 1.804e-01, 3.309e-01, 3.506e-02, -1.452e-01, -5.199e-01, 8.211e-02, 1.174e-02, -3.079e-02, -7.860e-03, 2.571e-02, 2.033e-01, -2.844e-03, -5.911e-03), r);\n\tr = MulAdd(s3_4, M4(5.956e-01, 3.077e-01, -2.823e-01, 4.851e-01, 2.023e-01, 8.281e-02, -1.973e-02, 2.091e-01, 7.000e-02, 2.272e-01, 7.937e-02, 1.465e-02, -3.652e-02, -8.854e-02, 5.284e-02, 2.072e-02), r);\n\tr = MulAdd(s3_5, M4(2.745e-01, 1.015e-01, 1.909e-01, 1.966e-02, 8.355e-02, 1.783e-01, 1.539e-01, 2.331e-01, -1.056e-01, -5.163e-02, 2.818e-03, 2.078e-02, -6.584e-02, 1.102e-02, 6.753e-02, 3.359e-03), r);\n\tr = MulAdd(s3_6, M4(1.170e-01, 2.291e-01, 1.342e-01, -1.054e-01, -3.271e-01, 3.134e-01, 2.687e-01, 3.008e-02, -9.659e-02, -2.473e-02, -3.813e-03, 5.018e-03, 5.568e-02, 9.386e-03, -1.370e-01, -1.200e-01), r);\n\tr = MulAdd(s3_7, M4(2.118e-01, -1.038e-01, 4.191e-01, 2.680e-01, -1.326e-01, -2.662e-01, -2.487e-01, -1.841e-01, 4.636e-02, 3.607e-02, -1.344e-01, 1.520e-01, -5.490e-02, -5.336e-02, -3.617e-02, 2.010e-03), r);\n\tr = MulAdd(s3_8, M4(7.668e-03, -3.285e-03, 1.146e-01, -5.370e-03, -2.923e-01, 2.723e-02, -1.948e-01, 7.522e-02, 7.848e-02, -1.212e-01, 2.810e-01, 8.272e-02, -3.596e-02, -1.255e-01, 7.025e-02, 6.561e-02), r);\n\tr = MulAdd(s4_0, M4(-5.750e-02, -2.343e-03, 1.155e-02, 1.263e-01, 2.045e-01, -1.364e-01, 4.942e-02, 2.860e-02, -2.458e-01, -1.640e-01, 2.016e-01, 6.267e-02, 9.234e-02, -6.066e-02, 3.070e-02, 6.094e-02), r);\n\tr = MulAdd(s4_1, M4(-3.113e-02, 7.467e-02, 2.200e-02, -6.583e-02, 2.668e-01, -7.219e-02, 1.316e-01, -9.913e-02, -4.762e-02, 4.021e-02, -2.226e-01, -1.450e-01, 9.304e-02, -8.959e-02, 1.760e-01, 2.760e-02), r);\n\tr = MulAdd(s4_2, M4(2.147e-01, -8.705e-03, 4.760e-03, -2.295e-01, 9.373e-02, -8.850e-02, -3.576e-02, 2.126e-01, -1.836e-01, -1.994e-02, 2.873e-02, -2.957e-03, 1.928e-01, 4.375e-02, 6.175e-02, -5.182e-02), r);\n\tr = MulAdd(s4_3, M4(-5.723e-02, -1.145e-01, 2.409e-01, 1.399e-01, 3.128e-02, 4.703e-03, -1.700e-01, -5.630e-02, -7.253e-02, -1.281e-01, -4.285e-03, 4.734e-02, -8.377e-02, -3.062e-01, 2.587e-01, 1.099e-01), r);\n\tr = MulAdd(s4_4, M4(-7.614e-02, -9.925e-03, -8.455e-03, -4.035e-02, 2.741e-01, 7.492e-02, 6.086e-01, 1.481e-01, -1.592e-02, -7.169e-02, 1.228e-01, 1.198e-01, -1.680e-01, -2.289e-01, 4.790e-01, 3.902e-02), r);\n\tr = MulAdd(s4_5, M4(-1.123e-01, 8.752e-02, 1.686e-02, -1.039e-01, -1.253e-01, -1.933e-02, 1.212e-03, 1.023e-01, 7.552e-02, -9.984e-02, 3.426e-02, 6.780e-02, 2.702e-02, -6.068e-02, 1.967e-01, 8.629e-02), r);\n\tr = MulAdd(s4_6, M4(5.797e-02, -1.353e-01, 1.033e-01, -1.719e-01, -1.335e-01, 6.762e-02, 7.013e-02, -7.472e-02, 3.723e-02, -3.790e-02, 9.515e-02, 8.516e-02, -7.411e-02, -2.409e-01, -2.353e-02, 2.940e-01), r);\n\tr = MulAdd(s4_7, M4(2.548e-02, 2.544e-03, -1.350e-02, -2.464e-01, -2.018e-01, -1.882e-02, -2.318e-01, -1.809e-01, -1.304e-02, 1.333e-01, 9.827e-02, 9.163e-02, -4.668e-02, -4.071e-02, -8.042e-03, -2.185e-03), r);\n\tr = MulAdd(s4_8, M4(3.587e-02, 1.501e-01, -5.163e-01, 1.042e-01, -6.538e-02, -1.005e-01, -4.472e-02, 4.179e-02, 1.050e-01, -4.198e-02, 2.039e-01, 2.244e-02, -1.004e-01, -1.028e-01, 2.824e-02, 8.763e-02), r);\n\tr = MulAdd(s5_0, M4(7.821e-02, 7.323e-02, -3.199e-02, -1.595e-01, 3.097e-01, -3.831e-02, 1.785e-02, -2.153e-01, 1.812e-01, -4.676e-02, 1.000e-01, 2.932e-02, -9.241e-02, 9.792e-02, 7.440e-02, -3.885e-02), r);\n\tr = MulAdd(s5_1, M4(-3.028e-01, -3.757e-02, -5.032e-02, 2.849e-01, -2.772e-01, 8.332e-02, -2.052e-01, 5.729e-02, 6.911e-02, -7.431e-02, 1.082e-01, 1.315e-01, 9.834e-02, 3.055e-02, -1.315e-01, 5.726e-03), r);\n\tr = MulAdd(s5_2, M4(-1.636e-01, 1.645e-01, -4.554e-02, -2.774e-01, -2.691e-02, -5.220e-02, 9.571e-02, -3.884e-02, 4.966e-02, 2.502e-02, -9.109e-02, -2.851e-02, 6.685e-02, 3.636e-02, 5.882e-02, -1.581e-01), r);\n\tr = MulAdd(s5_3, M4(-1.163e-01, 2.638e-02, -1.828e-01, -2.552e-01, 3.410e-03, -6.034e-03, 4.494e-02, 1.072e-01, 2.371e-01, -2.228e-01, -1.056e-02, -1.276e-02, 3.036e-02, 2.416e-01, -3.011e-01, -2.545e-01), r);\n\tr = MulAdd(s5_4, M4(1.485e-01, 2.530e-01, -2.858e-01, 4.832e-01, -5.213e-02, -2.858e-01, -1.698e-01, -1.453e-01, -1.771e-01, 1.007e-01, -1.706e-01, -1.012e-01, 3.282e-02, 5.874e-02, -5.467e-01, 3.825e-02), r);\n\tr = MulAdd(s5_5, M4(-3.837e-01, 3.641e-03, 5.814e-01, 4.933e-01, 3.131e-02, 8.307e-02, -3.989e-02, 5.503e-02, 6.367e-02, -4.050e-02, 7.006e-02, 2.848e-02, -4.190e-02, 1.647e-01, -9.264e-02, -3.662e-02), r);\n\tr = MulAdd(s5_6, M4(-9.389e-02, -2.259e-01, 1.881e-01, -7.548e-02, 3.967e-02, 8.459e-02, 1.937e-01, 2.617e-02, -1.179e-01, -1.718e-01, 1.474e-01, 1.257e-01, 3.605e-02, -2.829e-02, 2.272e-02, -3.789e-01), r);\n\tr = MulAdd(s5_7, M4(-2.656e-02, -1.844e-01, 3.402e-01, 4.901e-01, -5.836e-02, 3.312e-02, -2.004e-01, -4.783e-02, -2.746e-01, 1.515e-01, 3.878e-02, -7.158e-02, -1.820e-02, 3.105e-01, -1.832e-02, -1.099e-03), r);\n\tr = MulAdd(s5_8, M4(4.523e-01, 1.502e-01, -2.123e-01, 2.320e-01, 2.085e-01, 5.715e-02, 3.191e-02, 7.901e-02, -8.453e-02, 5.544e-02, 4.279e-03, -1.328e-01, -9.691e-02, -2.488e-02, -4.719e-02, -1.008e-01), r);\n\tr = MulAdd(s6_0, M4(4.345e-01, -8.277e-02, -7.012e-02, 8.223e-02, -1.071e-01, 1.610e-01, 1.502e-01, 4.634e-02, -1.456e-01, 2.283e-02, 1.598e-01, 9.160e-02, 1.612e-02, -2.086e-01, -7.139e-02, -2.495e-01), r);\n\tr = MulAdd(s6_1, M4(3.248e-01, -1.401e-01, -2.566e-02, 1.442e-01, 1.050e-01, -5.083e-02, 1.393e-01, 3.161e-02, -1.916e-01, 2.434e-02, 2.304e-01, -1.068e-02, -1.549e-01, 2.850e-01, -3.977e-02, 1.540e-01), r);\n\tr = MulAdd(s6_2, M4(1.457e-02, 2.612e-02, -2.899e-02, -2.297e-01, 4.891e-02, -6.237e-02, -3.175e-02, 2.566e-02, 1.602e-01, 1.467e-02, -8.463e-02, -1.173e-01, 3.783e-02, -3.369e-03, -5.365e-02, -1.653e-03), r);\n\tr = MulAdd(s6_3, M4(-1.816e-01, -1.660e-02, 1.077e-01, -3.667e-01, 2.299e-01, 2.353e-01, -3.491e-01, -3.060e-02, 1.803e-01, -9.714e-02, 7.105e-02, 9.895e-02, 1.764e-01, 3.558e-02, 9.593e-02, 8.519e-02), r);\n\tr = MulAdd(s6_4, M4(1.539e-01, 1.200e-01, -1.353e-01, 1.529e-01, -9.333e-02, -2.507e-01, 3.316e-01, -1.001e-01, 1.263e-01, 3.118e-02, -1.714e-01, 4.910e-01, 1.587e-01, -5.905e-02, -1.439e-01, -1.274e-01), r);\n\tr = MulAdd(s6_5, M4(-1.838e-01, -2.972e-02, -9.090e-02, 1.057e-01, 1.846e-01, -7.972e-02, -9.290e-02, 1.015e-01, 2.065e-01, 4.804e-02, -1.697e-01, -3.964e-01, 5.007e-02, 5.312e-02, -3.128e-02, 9.884e-02), r);\n\tr = MulAdd(s6_6, M4(-3.086e-02, -6.920e-02, -9.317e-02, 4.002e-02, -2.568e-01, 2.163e-01, -7.020e-02, -5.020e-02, 1.172e-01, -1.631e-01, -2.243e-01, -1.067e-01, 3.532e-02, -3.497e-01, 1.851e-01, -1.516e-01), r);\n\tr = MulAdd(s6_7, M4(2.297e-01, 2.157e-01, 7.460e-02, -8.860e-02, 8.448e-02, -3.654e-02, -2.066e-01, 1.232e-01, -2.739e-01, 2.449e-01, -2.853e-01, -1.242e-01, -1.292e-01, 8.422e-02, -2.224e-01, -1.715e-02), r);\n\tr = MulAdd(s6_8, M4(6.990e-02, 7.739e-02, 2.214e-01, 6.205e-03, 2.966e-02, -2.918e-02, -3.100e-01, -3.494e-02, -2.535e-01, -6.415e-02, -3.804e-02, 7.443e-02, 1.881e-01, -4.946e-02, -1.682e-02, 4.035e-02), r);\n\tr = MulAdd(s7_0, M4(-3.276e-02, 5.851e-02, -7.947e-02, 1.102e-01, 1.314e-01, -2.101e-02, 4.667e-03, 1.552e-01, 1.391e-01, 9.108e-02, -5.034e-02, -1.252e-01, 1.662e-01, -2.567e-01, 2.469e-02, -2.212e-01), r);\n\tr = MulAdd(s7_1, M4(-6.053e-02, -5.261e-02, -6.294e-02, -2.328e-01, 3.425e-01, 1.057e-01, 7.203e-02, -3.723e-01, 2.148e-02, 3.648e-02, -1.026e-01, 4.757e-02, 5.726e-02, 5.349e-02, 1.339e-01, -1.629e-01), r);\n\tr = MulAdd(s7_2, M4(-3.005e-03, 8.149e-02, 1.175e-01, -6.981e-02, 7.763e-02, -7.641e-02, 2.218e-01, -1.141e-01, 7.203e-02, -5.508e-02, -8.120e-02, 8.905e-02, 1.130e-01, -1.605e-01, 1.333e-01, -4.009e-02), r);\n\tr = MulAdd(s7_3, M4(8.709e-02, -1.158e-02, 6.767e-03, 4.893e-02, 3.468e-01, -1.774e-01, 2.457e-01, -2.309e-01, -2.759e-01, -1.656e-01, 5.379e-03, 5.537e-02, -2.075e-01, -3.874e-01, 9.547e-02, 1.176e-01), r);\n\tr = MulAdd(s7_4, M4(1.664e-01, -6.784e-03, 1.283e-01, -5.551e-02, 5.972e-01, -1.779e-01, 7.139e-01, -3.232e-02, -1.695e-01, 1.692e-01, -1.356e-01, 5.937e-02, -1.303e-01, -5.354e-02, 1.923e-01, -6.313e-03), r);\n\tr = MulAdd(s7_5, M4(1.809e-01, -5.603e-02, -1.256e-01, 1.202e-01, 2.529e-01, 4.616e-02, -5.929e-02, 5.680e-02, -2.929e-01, 7.123e-02, 1.358e-01, -3.910e-02, -2.787e-01, 2.232e-02, 5.208e-02, -1.017e-01), r);\n\tr = MulAdd(s7_6, M4(-2.591e-01, -6.096e-02, 8.695e-02, 1.089e-01, 1.466e-01, -6.621e-01, 2.940e-01, 1.774e-01, 2.114e-01, 4.313e-02, 1.019e-01, -3.813e-02, 1.112e-02, -1.973e-01, 1.290e-01, -1.048e-02), r);\n\tr = MulAdd(s7_7, M4(3.255e-02, -2.408e-02, -1.358e-01, -8.922e-02, 2.999e-01, -8.591e-02, -1.777e-01, 2.427e-01, 1.476e-01, -1.198e-01, 1.215e-01, -7.049e-02, -1.513e-01, 2.305e-02, 1.597e-01, 3.870e-02), r);\n\tr = MulAdd(s7_8, M4(-1.616e-01, 6.090e-02, 7.322e-02, 3.689e-02, 1.026e-02, -5.670e-02, 5.745e-02, 1.727e-01, 9.462e-02, 6.318e-02, 1.639e-01, -1.412e-02, -2.783e-01, -1.519e-01, -1.171e-01, 1.104e-03), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.625e-03, -6.509e-02, -2.543e-02, 2.655e-02 };\n\tr = MulAdd(s0_0, M4(-2.560e-02, -7.087e-03, -1.410e-01, 9.884e-02, -3.941e-02, 4.886e-03, 9.250e-02, -1.153e-01, 1.099e-01, 1.787e-02, 7.890e-02, 7.949e-02, 4.733e-02, 4.525e-02, -1.421e-01, 1.549e-01), r);\n\tr = MulAdd(s0_1, M4(-1.759e-02, 3.651e-02, -2.068e-01, -6.240e-02, -1.894e-01, -6.618e-02, -5.977e-02, 1.928e-01, 2.456e-02, -4.077e-02, 1.906e-02, 7.152e-02, 2.549e-01, 1.165e-01, 2.430e-01, 1.737e-01), r);\n\tr = MulAdd(s0_2, M4(1.805e-03, -2.171e-03, -1.793e-01, -2.124e-01, 1.723e-01, 2.540e-02, -5.076e-03, 8.146e-02, 5.550e-03, 1.639e-02, -1.948e-01, 3.635e-03, -4.027e-02, -3.399e-02, 2.736e-01, 6.094e-02), r);\n\tr = MulAdd(s0_3, M4(-2.643e-02, -3.043e-02, 1.180e-01, -8.517e-02, 2.385e-02, 4.729e-02, 3.137e-02, 9.062e-02, -1.664e-01, -3.938e-02, -2.115e-02, -4.653e-03, 2.821e-01, 9.189e-02, -2.044e-02, -2.310e-02), r);\n\tr = MulAdd(s0_4, M4(5.197e-01, 1.222e-01, 6.437e-02, 1.062e-01, -3.377e-01, 4.647e-02, -9.965e-02, -7.055e-02, 1.566e-02, 5.988e-02, 2.100e-02, -5.248e-02, -3.215e-01, -1.829e-01, -1.951e-01, -8.805e-02), r);\n\tr = MulAdd(s0_5, M4(-1.388e-01, 6.670e-02, 2.007e-01, -8.099e-02, 8.637e-02, -5.086e-02, 3.154e-02, -3.167e-03, 6.398e-02, -5.311e-03, 1.620e-01, -7.674e-02, -3.382e-01, -1.289e-01, 5.176e-01, -1.229e-01), r);\n\tr = MulAdd(s0_6, M4(5.681e-02, -2.286e-02, 3.962e-02, -4.412e-02, -1.683e-01, 3.669e-02, 1.467e-01, -2.707e-03, -1.067e-01, -3.951e-03, -4.406e-02, 5.629e-02, -3.607e-02, -1.522e-02, -1.369e-01, -5.543e-02), r);\n\tr = MulAdd(s0_7, M4(2.579e-01, 1.184e-01, 8.497e-02, 1.449e-01, -5.598e-02, 3.054e-02, -8.097e-02, -1.113e-01, 2.554e-01, -5.213e-02, -3.915e-02, -6.455e-02, -3.335e-01, 1.170e-01, -9.548e-02, 2.320e-02), r);\n\tr = MulAdd(s0_8, M4(-2.914e-01, -1.802e-01, 2.361e-02, -7.381e-02, 1.470e-01, 5.039e-02, -7.519e-02, -4.570e-03, -1.217e-01, 1.500e-02, 6.749e-02, 7.562e-02, -3.426e-01, -1.080e-01, 6.514e-02, 6.881e-02), r);\n\tr = MulAdd(s1_0, M4(1.618e-01, -3.931e-02, -2.383e-02, 1.431e-01, 5.090e-02, -1.330e-02, -1.028e-01, 6.260e-02, -2.058e-01, 7.500e-03, 1.932e-01, -7.916e-02, -1.371e-01, -8.696e-02, -4.685e-02, -2.273e-02), r);\n\tr = MulAdd(s1_1, M4(-3.040e-01, -5.094e-02, 9.008e-02, -1.285e-01, 7.680e-01, -9.636e-02, -2.345e-02, -2.210e-01, 4.076e-02, 1.152e-01, 3.239e-01, -7.640e-01, 1.565e-02, -5.839e-02, 2.723e-01, 2.319e-01), r);\n\tr = MulAdd(s1_2, M4(4.965e-03, 1.240e-01, 2.817e-01, 1.224e-01, 7.815e-02, 4.454e-02, -7.984e-03, -2.240e-01, -3.825e-01, 7.662e-02, -1.033e-01, -2.338e-01, 2.427e-02, 1.267e-01, 1.043e-01, 3.834e-01), r);\n\tr = MulAdd(s1_3, M4(-8.741e-02, -2.785e-02, 1.292e-01, -9.184e-02, 7.198e-02, -5.808e-02, -1.383e-01, 4.611e-02, 8.833e-02, -2.850e-02, -1.079e-01, -6.543e-02, 2.152e-02, -8.040e-02, 4.714e-02, -1.107e-01), r);\n\tr = MulAdd(s1_4, M4(-1.832e-01, 4.999e-02, 2.310e-01, 2.137e-01, 2.118e-01, -4.953e-02, -7.942e-04, -2.041e-02, 9.558e-02, -1.278e-02, -2.033e-01, 1.049e-01, -1.479e-01, -2.008e-01, -5.131e-02, -2.963e-01), r);\n\tr = MulAdd(s1_5, M4(-6.279e-02, 2.429e-01, 4.757e-03, -1.206e-01, -1.910e-01, -1.530e-01, 6.063e-01, -2.034e-01, 1.171e-01, 6.146e-02, -3.540e-02, 2.388e-01, 4.859e-01, 1.376e-01, -6.543e-01, 1.784e-01), r);\n\tr = MulAdd(s1_6, M4(-1.344e-01, 1.360e-02, 9.947e-02, 1.474e-03, 1.993e-02, 3.195e-03, 4.908e-02, -3.237e-02, 1.468e-01, 8.365e-02, 1.188e-01, -1.473e-01, -4.335e-02, 2.327e-02, -5.855e-02, -1.053e-01), r);\n\tr = MulAdd(s1_7, M4(-4.558e-03, 1.134e-02, -5.775e-02, 8.397e-02, 1.323e-01, 3.408e-02, 1.067e-01, 1.505e-02, -1.862e-01, -2.054e-01, 1.248e-01, 1.360e-01, -1.162e-01, 5.213e-02, 5.240e-03, 8.693e-02), r);\n\tr = MulAdd(s1_8, M4(1.518e-01, 2.164e-01, 8.775e-02, -5.471e-02, -8.322e-03, 8.992e-02, -5.009e-03, -9.936e-02, -8.858e-02, -1.484e-01, 1.137e-01, -4.466e-01, 3.340e-01, 6.147e-02, -1.144e-01, -8.945e-02), r);\n\tr = MulAdd(s2_0, M4(-4.849e-02, -1.255e-02, -1.621e-01, -7.859e-02, -2.514e-01, -1.148e-02, -9.760e-02, -1.137e-01, 2.550e-01, 1.699e-02, -8.587e-02, 7.128e-02, 7.682e-02, -7.427e-02, -8.652e-02, 3.613e-01), r);\n\tr = MulAdd(s2_1, M4(2.779e-02, 7.570e-03, -1.344e-01, 1.296e-02, -1.083e-02, 3.117e-02, -1.328e-01, -3.693e-02, 2.474e-01, 1.763e-01, 1.408e-02, 1.362e-01, -2.391e-02, -2.802e-01, -4.279e-02, 3.188e-01), r);\n\tr = MulAdd(s2_2, M4(-1.033e-01, -3.043e-02, -7.807e-02, -5.715e-02, 1.855e-01, -1.128e-01, 1.395e-02, -9.351e-02, -2.720e-01, 2.711e-01, -4.261e-02, 6.892e-02, 1.308e-01, -1.577e-01, 1.907e-01, 4.823e-01), r);\n\tr = MulAdd(s2_3, M4(-1.561e-01, -2.317e-02, 2.741e-02, -1.019e-01, -2.797e-02, 7.486e-02, -6.564e-02, 2.268e-02, 2.078e-01, -2.920e-01, -1.632e-01, -5.214e-02, -2.783e-01, -3.381e-01, 2.476e-01, -4.718e-01), r);\n\tr = MulAdd(s2_4, M4(2.369e-01, 3.477e-02, 2.674e-01, 2.764e-01, 1.127e-02, 2.274e-02, 5.289e-02, 1.770e-01, -1.297e-03, 1.805e-02, 1.734e-01, 3.586e-03, 1.278e-01, -6.466e-01, -5.282e-03, -3.198e-01), r);\n\tr = MulAdd(s2_5, M4(3.002e-02, 1.447e-01, 2.242e-01, 3.591e-02, 1.510e-02, 5.069e-02, 1.510e-01, 1.019e-01, 9.118e-02, -4.876e-02, -1.372e-01, 2.119e-01, 5.599e-01, -2.415e-01, -2.045e-01, -5.714e-01), r);\n\tr = MulAdd(s2_6, M4(-6.998e-02, -3.651e-02, 2.052e-03, -1.139e-01, 5.134e-02, -6.756e-02, -6.024e-02, -1.392e-01, 1.954e-01, 9.353e-02, 1.594e-02, -2.237e-01, -1.781e-01, -1.366e-01, -2.123e-01, 2.311e-02), r);\n\tr = MulAdd(s2_7, M4(1.693e-01, -9.344e-02, 1.462e-01, 1.420e-01, -8.540e-02, 4.959e-02, -4.992e-02, 1.013e-01, -5.185e-01, 9.739e-02, -5.330e-02, -1.208e-01, -1.194e-01, -2.685e-01, -2.982e-01, -1.289e-01), r);\n\tr = MulAdd(s2_8, M4(1.141e-01, -5.735e-02, 8.146e-02, -2.221e-02, 9.828e-02, -5.525e-02, 6.784e-02, -9.348e-02, -1.546e-01, 3.030e-01, -2.793e-02, 1.449e-02, -3.587e-01, -1.617e-01, 1.805e-01, 2.176e-01), r);\n\tr = MulAdd(s3_0, M4(-8.667e-03, -5.350e-02, -3.774e-02, 7.121e-02, 1.094e-01, 2.259e-02, 5.645e-01, 4.007e-02, 6.136e-03, 2.721e-02, 1.573e-02, -1.529e-02, 3.419e-02, -1.128e-01, 1.004e-01, 6.939e-02), r);\n\tr = MulAdd(s3_1, M4(3.826e-02, -2.135e-02, -3.854e-01, -4.123e-01, 1.643e-01, 8.967e-02, 7.549e-02, -3.133e-01, -8.262e-02, -2.612e-02, 1.106e-01, 1.795e-01, -7.740e-02, -3.704e-02, 2.029e-01, 1.461e-02), r);\n\tr = MulAdd(s3_2, M4(-6.023e-02, 6.654e-02, -1.361e-01, -1.431e-01, 7.496e-02, 1.351e-01, 1.292e-01, 1.911e-01, -6.692e-02, -3.242e-02, 3.928e-02, -8.824e-03, -1.226e-03, -4.044e-02, 1.344e-01, 1.214e-01), r);\n\tr = MulAdd(s3_3, M4(-3.305e-02, -1.101e-01, -1.894e-01, -3.469e-01, -1.210e-01, -3.212e-02, 2.904e-01, -2.047e-01, -1.211e-03, -7.072e-02, -1.544e-02, -5.603e-02, 1.195e-01, -2.336e-01, -5.574e-02, -3.214e-02), r);\n\tr = MulAdd(s3_4, M4(-2.567e-01, 1.577e-01, -2.711e-01, -1.814e-01, 2.629e-01, -1.322e-01, 4.110e-01, -2.530e-01, 1.157e-01, -6.624e-02, -6.523e-02, 9.403e-02, -3.037e-02, -1.903e-01, -4.489e-02, -6.323e-02), r);\n\tr = MulAdd(s3_5, M4(3.183e-01, 1.222e-01, -1.796e-01, -6.899e-01, -3.581e-02, 7.077e-02, 1.821e-01, -2.122e-01, -3.829e-03, 3.924e-02, 4.984e-02, 3.319e-03, -1.210e-02, -1.916e-01, -6.451e-02, -5.390e-02), r);\n\tr = MulAdd(s3_6, M4(9.451e-02, 1.416e-01, 2.363e-01, -2.431e-03, -4.550e-01, 9.670e-02, 4.511e-01, -2.440e-01, -1.039e-02, -7.438e-03, -5.394e-02, -1.583e-01, 5.988e-02, -1.223e-01, -6.949e-02, -7.947e-02), r);\n\tr = MulAdd(s3_7, M4(-4.528e-01, 1.578e-01, -2.586e-01, 9.291e-02, -4.691e-02, 1.333e-01, 7.600e-02, -6.177e-03, 1.024e-02, -2.282e-02, -7.689e-02, -6.901e-02, -6.665e-02, -4.332e-02, -1.728e-01, -6.849e-02), r);\n\tr = MulAdd(s3_8, M4(1.362e-01, 2.879e-02, -1.518e-01, -8.947e-02, -9.332e-02, 1.320e-01, 1.138e-01, -1.209e-01, -4.019e-02, 1.469e-01, 1.528e-03, -1.214e-01, -5.435e-02, -1.586e-01, -2.739e-02, 6.551e-02), r);\n\tr = MulAdd(s4_0, M4(-1.033e-01, -6.952e-02, -1.560e-02, 1.402e-02, -3.370e-02, -7.858e-02, 2.946e-01, -9.622e-02, -4.151e-02, -3.780e-02, -1.132e-01, 1.453e-01, 1.965e-02, -3.571e-02, 9.255e-02, -1.576e-02), r);\n\tr = MulAdd(s4_1, M4(-6.419e-02, 1.816e-02, -1.188e-01, -1.148e-01, -4.849e-02, 2.576e-03, 5.385e-01, 6.037e-03, 4.484e-02, -1.937e-02, -4.330e-01, -7.164e-02, -8.341e-02, 3.394e-02, -6.566e-02, 2.859e-01), r);\n\tr = MulAdd(s4_2, M4(1.414e-01, 9.715e-03, -2.075e-02, 3.829e-02, -8.767e-02, -9.468e-02, 3.312e-01, -6.282e-03, 3.118e-02, 1.290e-02, -7.580e-03, 9.585e-02, 1.152e-01, -7.785e-02, 8.913e-02, 1.269e-01), r);\n\tr = MulAdd(s4_3, M4(-1.300e-01, -8.615e-02, 2.134e-02, -2.515e-02, 4.651e-02, 2.008e-01, -6.371e-02, -1.236e-02, 2.614e-01, -1.788e-01, -1.925e-02, -1.645e-02, -1.069e-01, -6.968e-02, 6.480e-02, 3.090e-02), r);\n\tr = MulAdd(s4_4, M4(1.352e-01, -1.886e-02, -1.145e-01, 4.115e-02, -3.652e-01, -8.227e-02, 5.339e-02, -2.728e-01, 1.191e-01, 2.115e-02, 2.001e-01, -1.219e-02, -5.189e-01, -9.690e-03, 9.258e-02, -7.153e-02), r);\n\tr = MulAdd(s4_5, M4(-3.574e-02, 6.680e-02, -2.589e-02, -3.711e-02, -1.948e-01, 8.654e-02, 2.185e-01, -1.511e-01, -9.703e-02, 1.522e-01, -2.773e-01, 1.940e-01, -7.396e-02, 1.386e-01, 2.249e-01, -3.014e-02), r);\n\tr = MulAdd(s4_6, M4(-1.586e-01, -3.006e-02, 4.357e-02, 3.494e-02, 1.060e-01, 6.097e-02, -4.613e-02, 1.076e-01, 1.332e-01, 1.145e-01, -5.582e-02, 1.621e-01, -1.310e-02, -2.543e-02, -1.657e-02, -2.863e-02), r);\n\tr = MulAdd(s4_7, M4(1.932e-01, 6.256e-02, 1.217e-01, -8.493e-02, -4.115e-01, 1.171e-03, 1.135e-01, -7.224e-02, -1.774e-02, 9.645e-02, -1.115e-01, 6.669e-02, -5.159e-02, 6.090e-02, -4.863e-02, -1.897e-02), r);\n\tr = MulAdd(s4_8, M4(-7.878e-02, -9.714e-02, 1.048e-01, 9.664e-03, 8.354e-02, 2.088e-02, 2.220e-02, 2.531e-02, -6.113e-02, 3.972e-02, -9.207e-02, 4.613e-02, 1.827e-01, 7.274e-02, -2.476e-01, -5.481e-02), r);\n\tr = MulAdd(s5_0, M4(1.970e-01, 1.672e-01, 2.433e-01, -8.995e-02, 7.859e-02, -3.751e-02, -3.454e-02, 2.298e-01, -1.324e-01, -1.465e-02, -8.560e-02, -2.178e-01, -3.343e-02, 6.746e-02, 8.993e-02, -4.901e-02), r);\n\tr = MulAdd(s5_1, M4(-6.850e-03, -1.971e-01, -5.692e-02, 7.432e-02, 3.548e-01, -1.108e-01, 3.175e-01, 1.081e+00, 5.009e-03, -4.461e-02, 2.832e-02, -2.137e-01, 2.470e-01, 5.725e-02, -1.697e-02, -1.859e-02), r);\n\tr = MulAdd(s5_2, M4(5.239e-02, 6.549e-02, -2.298e-01, -1.966e-01, -9.228e-02, -1.393e-01, 1.912e-01, 4.543e-01, -1.425e-02, 9.029e-02, -9.371e-02, -2.144e-01, 7.205e-02, 2.581e-02, -1.731e-01, -2.638e-01), r);\n\tr = MulAdd(s5_3, M4(9.616e-02, 1.156e-01, -4.901e-02, 3.704e-02, -1.969e-02, 3.668e-02, -7.894e-02, 4.214e-03, -1.831e-01, 2.568e-02, 1.322e-02, 4.639e-02, -7.497e-02, 6.491e-02, -5.406e-03, -1.238e-01), r);\n\tr = MulAdd(s5_4, M4(-1.216e-01, 2.233e-01, -8.263e-02, -1.517e-01, 2.918e-01, -5.018e-02, -1.391e-01, 2.899e-02, -1.208e-01, -1.490e-01, -2.105e-01, -5.076e-02, -8.915e-03, 4.420e-03, -3.801e-01, -5.936e-03), r);\n\tr = MulAdd(s5_5, M4(8.879e-02, 2.007e-01, -2.374e-02, 4.744e-01, -2.168e-01, 8.071e-02, 6.015e-03, 8.826e-02, 1.548e-01, -1.410e-01, 1.649e-01, -1.502e-01, 4.645e-03, 8.603e-02, 4.699e-02, 1.293e-02), r);\n\tr = MulAdd(s5_6, M4(2.715e-01, 2.036e-01, -1.004e-01, 2.508e-01, 5.107e-02, 1.315e-01, 6.567e-02, 6.999e-02, 1.513e-02, -1.198e-01, -3.505e-02, 1.060e-01, 8.095e-02, -3.236e-03, 2.448e-01, 7.195e-03), r);\n\tr = MulAdd(s5_7, M4(-7.150e-01, 2.499e-01, -3.129e-01, 2.092e-01, 2.434e-02, -6.082e-03, -5.837e-02, 2.251e-02, -1.022e-01, -2.280e-02, -2.848e-01, -1.327e-02, 4.425e-02, 6.298e-02, 1.132e-02, -9.445e-02), r);\n\tr = MulAdd(s5_8, M4(-5.568e-02, -6.042e-02, 1.757e-01, -5.052e-02, -5.824e-02, 6.717e-03, -8.544e-02, -1.293e-02, -8.259e-02, 5.506e-02, 9.705e-02, 9.304e-02, -1.503e-01, -8.160e-02, 1.082e-01, -1.377e-01), r);\n\tr = MulAdd(s6_0, M4(3.476e-01, 9.336e-02, 2.231e-02, 1.022e-02, -3.424e-02, -7.095e-02, 3.900e-02, 9.158e-02, -1.061e-01, -5.546e-02, -9.304e-02, -5.883e-02, 1.331e-01, 7.858e-02, 1.167e-01, 7.884e-02), r);\n\tr = MulAdd(s6_1, M4(-1.835e-02, -1.974e-01, -1.369e-01, 2.903e-01, -1.457e-02, -2.445e-02, 1.877e-02, 1.939e-01, -9.732e-02, 3.776e-02, -1.752e-01, -2.629e-01, 2.034e-01, -6.453e-02, 2.623e-01, -2.109e-01), r);\n\tr = MulAdd(s6_2, M4(-3.623e-02, 5.361e-02, -2.681e-01, 1.447e-01, -3.448e-02, 4.750e-02, 9.537e-02, 1.124e-03, 1.402e-01, 1.087e-01, -1.424e-01, -1.509e-01, 3.056e-02, -5.132e-02, -5.697e-03, -1.327e-02), r);\n\tr = MulAdd(s6_3, M4(-4.655e-02, -4.782e-02, 2.343e-01, 8.769e-02, 1.124e-01, -2.491e-03, -2.597e-02, -6.833e-02, -1.243e-01, 4.811e-02, -3.578e-01, 2.454e-02, -1.434e-01, 5.503e-03, -6.405e-02, 2.061e-02), r);\n\tr = MulAdd(s6_4, M4(-2.463e-01, -8.253e-02, 3.349e-01, -2.741e-01, -1.254e-02, 3.522e-02, -1.978e-01, 1.421e-03, -1.022e-02, 1.297e-02, -9.613e-02, -2.839e-01, 1.682e-01, 3.789e-02, -1.225e-01, -1.144e-01), r);\n\tr = MulAdd(s6_5, M4(-1.381e-01, 1.578e-01, 1.174e-01, 9.555e-02, 1.071e-01, -1.781e-02, 4.394e-02, 3.225e-02, 1.769e-01, -1.736e-01, -3.724e-01, -4.223e-01, -1.162e-01, 3.163e-02, -5.523e-02, -9.306e-02), r);\n\tr = MulAdd(s6_6, M4(5.363e-02, 2.286e-02, -1.182e-01, 2.210e-01, -7.831e-02, 3.203e-03, 7.760e-02, 3.020e-03, 2.411e-01, -5.532e-02, -2.875e-02, 1.754e-01, 1.305e-01, -2.458e-03, 1.417e-01, 6.157e-03), r);\n\tr = MulAdd(s6_7, M4(-1.955e-01, -1.845e-01, 8.119e-02, -1.347e-01, -3.374e-02, 1.839e-02, 3.874e-03, -1.838e-01, -4.347e-01, -2.846e-01, -1.806e-01, 5.604e-02, 1.243e-01, -2.117e-02, -5.486e-02, 6.884e-03), r);\n\tr = MulAdd(s6_8, M4(7.283e-02, -1.282e-01, -2.823e-01, 5.028e-02, -1.353e-01, 1.419e-01, -5.407e-02, -6.650e-03, 3.999e-01, -1.855e-01, -2.906e-01, -3.688e-02, -1.405e-01, 1.427e-02, -2.796e-02, -4.579e-02), r);\n\tr = MulAdd(s7_0, M4(9.975e-02, 7.898e-02, 1.381e-01, 8.796e-02, 2.603e-01, -8.414e-02, -1.423e-01, -9.692e-03, -1.139e-01, 6.085e-02, -3.823e-03, -7.671e-02, 1.877e-02, -8.808e-03, 2.768e-02, 2.780e-01), r);\n\tr = MulAdd(s7_1, M4(8.771e-02, 1.460e-02, 1.628e-02, 5.329e-03, 1.449e-01, -3.699e-01, 3.923e-01, 2.301e-02, -1.277e-01, -2.741e-02, -1.047e-01, 5.968e-02, -5.592e-02, 7.473e-02, 2.236e-01, 6.206e-01), r);\n\tr = MulAdd(s7_2, M4(-1.469e-01, -7.466e-02, -5.950e-02, -1.130e-01, 2.839e-02, -2.606e-02, 1.334e-01, 1.732e-01, 3.303e-02, -9.745e-02, -1.245e-01, 6.786e-02, 1.955e-01, -5.324e-02, 2.093e-01, 1.236e-01), r);\n\tr = MulAdd(s7_3, M4(-1.293e-01, -2.116e-02, -3.673e-02, -9.411e-02, -5.480e-01, 1.889e-01, 7.690e-02, 1.970e-01, -4.543e-02, 5.556e-02, -6.816e-02, 1.532e-02, -2.292e-03, -1.880e-02, 7.113e-02, 2.672e-02), r);\n\tr = MulAdd(s7_4, M4(6.920e-02, -4.618e-02, -6.882e-02, 3.691e-02, -8.673e-02, -1.959e-01, -3.585e-01, -9.090e-02, 2.925e-01, 3.724e-02, 2.743e-01, 3.540e-01, -2.959e-01, -3.552e-02, -4.064e-02, -1.069e-01), r);\n\tr = MulAdd(s7_5, M4(-3.202e-02, 2.347e-02, 7.362e-02, 2.157e-02, -7.213e-02, -1.073e-01, 2.008e-01, -2.052e-01, -1.134e-01, -2.505e-02, 1.241e-02, 1.802e-01, -1.081e-01, 5.897e-02, 1.798e-02, 7.188e-02), r);\n\tr = MulAdd(s7_6, M4(-5.356e-04, 6.207e-02, 8.194e-02, 8.600e-03, -2.790e-01, 2.941e-01, -4.157e-02, -2.512e-01, 8.039e-02, -1.770e-02, -5.099e-02, 3.033e-02, -8.296e-02, -2.268e-02, -1.175e-01, 1.419e-02), r);\n\tr = MulAdd(s7_7, M4(-4.728e-03, -4.249e-02, -9.443e-02, 2.155e-03, -1.180e-01, -1.111e-01, 5.674e-02, 1.564e-01, 3.111e-01, 4.206e-02, 1.174e-01, 2.935e-02, 5.181e-02, -9.064e-02, 8.466e-02, -9.002e-03), r);\n\tr = MulAdd(s7_8, M4(1.323e-01, 8.600e-02, -3.627e-02, 3.855e-02, -5.842e-02, 3.473e-01, -2.465e-02, -1.118e-01, -6.674e-02, 4.149e-03, 6.115e-04, 4.737e-02, 1.022e-01, 4.757e-02, 2.210e-02, -5.416e-02), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.067e-03, -2.480e-01, 1.181e-02, 1.629e-02 };\n\tr = MulAdd(s0_0, M4(4.835e-02, -2.396e-02, 1.538e-01, -1.119e-02, -7.433e-03, 2.244e-02, -4.176e-01, 3.162e-02, 2.272e-02, 2.109e-02, 2.717e-02, 1.403e-01, 4.632e-01, 8.008e-02, -3.298e-01, -1.300e-01), r);\n\tr = MulAdd(s0_1, M4(-7.625e-02, -1.928e-02, -3.921e-02, -5.083e-02, -1.915e-01, 1.015e-01, -4.724e-01, 5.635e-02, -1.024e-02, 9.931e-03, -8.880e-02, 4.998e-02, 6.319e-01, -1.827e-01, 1.566e-01, -3.693e-01), r);\n\tr = MulAdd(s0_2, M4(-6.468e-02, -1.760e-01, -7.115e-02, -4.285e-02, -2.285e-01, 8.701e-02, -2.009e-01, -1.627e-01, -8.255e-02, -5.679e-02, 5.767e-03, 2.168e-01, 4.349e-02, 3.930e-02, 4.913e-02, -1.117e-01), r);\n\tr = MulAdd(s0_3, M4(1.302e-01, 5.135e-02, 4.496e-02, -3.394e-02, -7.374e-02, -4.251e-02, -5.037e-02, -2.096e-02, 3.509e-02, -1.396e-01, 1.593e-01, 6.313e-02, 9.144e-03, 6.799e-02, -2.578e-01, 1.379e-02), r);\n\tr = MulAdd(s0_4, M4(-4.673e-02, -3.859e-02, 7.260e-03, -1.913e-01, 9.779e-02, -1.876e-02, -1.807e-01, -1.189e-02, -4.810e-02, 1.021e-01, 6.610e-02, 5.553e-02, -3.128e-02, 3.649e-01, 2.145e-02, 1.857e-01), r);\n\tr = MulAdd(s0_5, M4(-6.326e-02, -2.190e-02, -1.025e-01, 2.645e-01, 1.325e-01, -3.209e-02, 3.893e-03, 1.114e-01, -1.186e-01, -2.977e-02, -8.407e-02, -2.533e-01, 1.688e-01, -2.146e-02, 2.017e-01, -2.172e-01), r);\n\tr = MulAdd(s0_6, M4(-2.134e-02, 2.436e-03, 7.637e-02, 1.031e-02, 1.962e-02, -2.824e-02, -1.031e-01, -1.505e-01, 4.045e-02, -3.927e-02, 4.998e-02, -1.292e-01, -7.246e-03, 1.795e-03, 7.585e-02, 4.875e-02), r);\n\tr = MulAdd(s0_7, M4(-2.179e-02, -3.530e-02, -1.362e-01, -2.993e-02, 1.283e-01, 1.468e-02, 1.005e-01, 3.694e-01, 4.319e-02, 7.983e-02, 2.198e-02, -4.084e-02, -1.126e-02, 3.306e-02, 5.772e-02, -1.415e-01), r);\n\tr = MulAdd(s0_8, M4(4.490e-02, -4.903e-02, 3.056e-02, 4.978e-02, -1.774e-02, -1.850e-02, 1.111e-01, -1.493e-02, 4.528e-02, 7.043e-02, 7.131e-02, 1.664e-01, 7.829e-02, -1.444e-02, 4.841e-02, -4.486e-02), r);\n\tr = MulAdd(s1_0, M4(-3.755e-02, -4.232e-02, -5.924e-02, 6.035e-02, -1.205e-01, 1.010e-02, 2.912e-02, 1.513e-01, -8.444e-02, -4.351e-02, -5.507e-02, 9.106e-02, -2.273e-03, -5.590e-02, 8.234e-02, -8.793e-02), r);\n\tr = MulAdd(s1_1, M4(1.390e-01, -5.847e-02, -1.205e-01, 3.187e-01, -2.568e-01, 3.647e-02, -4.785e-02, 1.482e-01, 8.543e-02, 1.616e-01, -1.851e-01, 5.716e-02, -4.927e-01, -1.209e-01, 3.762e-02, 1.529e-01), r);\n\tr = MulAdd(s1_2, M4(-1.530e-01, -1.645e-01, -1.839e-02, 2.038e-01, 8.178e-02, 1.021e-02, 6.465e-02, 7.910e-02, 2.042e-02, -1.093e-01, 2.834e-03, -3.437e-02, -1.692e-01, -8.842e-02, 1.308e-01, 2.947e-01), r);\n\tr = MulAdd(s1_3, M4(7.424e-02, -1.654e-01, -1.246e-01, 1.160e-01, 1.581e-01, -6.440e-03, -8.087e-03, 6.360e-02, 1.111e-01, 2.032e-02, 2.760e-02, 2.297e-01, -2.736e-02, 1.178e-02, 4.567e-02, 6.139e-02), r);\n\tr = MulAdd(s1_4, M4(3.265e-01, -5.441e-01, 9.085e-02, -1.616e-01, -1.701e-02, -4.155e-02, 4.148e-02, -3.896e-01, 2.620e-01, 1.954e-01, 1.190e-01, -1.761e-01, -3.432e-01, 1.121e-01, -2.782e-01, 2.503e-01), r);\n\tr = MulAdd(s1_5, M4(-3.005e-01, -3.291e-01, -2.238e-02, -3.021e-02, -1.015e-02, -7.567e-02, -1.607e-01, -5.375e-02, 1.436e-01, 1.396e-02, 9.834e-02, -1.777e-01, -1.109e-01, -9.568e-02, 4.459e-02, 2.166e-01), r);\n\tr = MulAdd(s1_6, M4(-1.383e-02, -1.195e-01, -7.240e-02, -7.391e-02, 7.793e-02, -8.250e-04, 2.773e-02, -9.196e-02, 1.148e-01, 3.961e-02, 3.218e-02, -5.892e-02, -1.103e-02, 6.608e-02, -9.241e-03, 9.855e-02), r);\n\tr = MulAdd(s1_7, M4(-2.428e-01, -2.303e-01, 2.808e-04, -2.284e-01, 1.944e-01, 7.671e-02, 1.247e-01, 2.123e-01, -6.229e-02, 3.342e-01, -4.740e-02, 1.074e-01, -9.819e-02, -3.941e-02, -3.164e-02, -4.836e-02), r);\n\tr = MulAdd(s1_8, M4(1.763e-01, -1.885e-01, -5.378e-02, 2.569e-01, 5.091e-02, -2.026e-02, 1.619e-01, -4.407e-02, 5.194e-02, 5.987e-02, -6.887e-02, 2.649e-01, -8.527e-02, -2.827e-03, 2.306e-02, -5.023e-02), r);\n\tr = MulAdd(s2_0, M4(-8.205e-03, 4.433e-03, -1.343e-01, 2.500e-02, 1.505e-01, 1.889e-02, -1.210e-01, -8.672e-02, 3.076e-02, 1.498e-02, -2.644e-01, 5.938e-02, -8.131e-02, -2.713e-02, 1.534e-01, -1.360e-01), r);\n\tr = MulAdd(s2_1, M4(-2.952e-02, -1.140e-01, 3.189e-02, 2.388e-01, -1.578e-01, -7.641e-03, -5.162e-02, -2.394e-01, 2.268e-02, -4.927e-02, 8.503e-02, -1.354e-01, 1.159e-01, -3.340e-02, 4.248e-02, -1.120e-01), r);\n\tr = MulAdd(s2_2, M4(-8.455e-02, -9.497e-02, 5.362e-03, 1.827e-01, 1.962e-02, 4.699e-02, 8.229e-03, 4.554e-02, -7.800e-02, -6.534e-03, -5.066e-02, 3.068e-02, -1.612e-01, -1.929e-02, -1.645e-01, 1.841e-01), r);\n\tr = MulAdd(s2_3, M4(-1.360e-01, -1.711e-02, -6.952e-02, -1.146e-01, 6.530e-02, 3.795e-02, 1.130e-01, 9.324e-02, 1.226e-01, 6.978e-02, 9.599e-02, -7.250e-03, 2.414e-02, 2.477e-02, 9.773e-02, 1.837e-01), r);\n\tr = MulAdd(s2_4, M4(2.329e-01, -6.908e-02, -3.555e-03, -2.507e-01, -7.980e-02, -1.374e-02, -2.531e-01, 2.446e-01, -1.155e-01, -1.329e-01, -1.561e-01, 1.295e-01, -8.048e-02, -9.703e-02, 1.904e-01, 2.686e-02), r);\n\tr = MulAdd(s2_5, M4(-7.302e-02, -5.162e-02, -1.045e-01, -1.587e-01, 1.160e-01, -3.129e-02, -2.348e-02, -1.675e-01, 6.703e-02, 8.933e-02, -9.654e-02, -1.748e-02, -1.317e-01, -2.547e-02, 3.693e-03, -4.579e-01), r);\n\tr = MulAdd(s2_6, M4(-2.708e-02, 2.805e-02, 1.276e-01, 6.081e-02, 1.260e-01, -1.918e-02, -1.428e-02, 4.839e-02, 1.033e-02, -1.845e-02, 4.060e-02, -1.122e-01, -2.161e-01, 7.566e-02, 8.280e-02, 5.468e-02), r);\n\tr = MulAdd(s2_7, M4(-5.334e-02, -2.162e-01, 1.007e-01, 2.634e-01, -1.227e-01, -2.969e-02, -9.729e-03, 3.114e-02, 4.496e-03, 1.649e-02, 1.208e-01, 7.892e-02, -7.813e-02, -6.307e-02, -1.427e-01, -5.671e-02), r);\n\tr = MulAdd(s2_8, M4(-1.008e-01, -3.837e-02, -3.730e-02, 6.125e-02, 3.003e-02, -2.922e-02, -1.998e-02, -1.995e-03, 1.952e-02, -1.100e-02, -1.260e-01, 1.306e-01, 1.291e-01, 3.207e-02, 5.305e-02, 1.342e-01), r);\n\tr = MulAdd(s3_0, M4(3.873e-03, -1.372e-02, -1.029e-01, 1.221e-01, -4.917e-01, 4.365e-02, -1.042e-01, -2.129e-02, -2.043e-02, 4.700e-02, -2.792e-01, 7.757e-03, 7.957e-02, 1.361e-02, 1.071e-01, 7.693e-02), r);\n\tr = MulAdd(s3_1, M4(9.662e-02, -2.932e-02, 1.941e-01, -3.194e-01, -1.324e-01, -1.779e-02, -1.697e-01, -2.333e-01, 6.349e-02, -1.091e-01, 1.962e-01, 9.707e-02, 4.680e-02, -2.846e-02, 2.182e-01, 6.872e-02), r);\n\tr = MulAdd(s3_2, M4(4.693e-02, -3.250e-03, -4.054e-02, -2.195e-01, 5.278e-02, 1.146e-01, -3.060e-01, -1.790e-01, 4.953e-02, 2.110e-02, -5.913e-02, -2.237e-01, 4.825e-02, -1.640e-02, -1.017e-02, 2.968e-03), r);\n\tr = MulAdd(s3_3, M4(-6.447e-02, 3.180e-02, 2.896e-02, 1.189e-01, 2.795e-01, 3.655e-03, -6.887e-02, 5.190e-02, -6.438e-02, 9.903e-04, 2.467e-01, -1.479e-01, 1.112e-01, -2.545e-02, 6.097e-02, -8.142e-02), r);\n\tr = MulAdd(s3_4, M4(1.924e-01, 3.832e-02, -3.986e-01, 9.887e-02, 5.257e-01, -1.760e-01, -1.260e-01, 1.574e-01, 6.137e-01, -1.438e-01, -4.044e-01, -2.024e-01, 4.315e-02, -4.846e-02, 9.769e-02, 8.331e-02), r);\n\tr = MulAdd(s3_5, M4(-2.651e-01, 4.248e-02, -2.012e-02, 5.405e-01, 8.924e-03, -5.811e-02, -1.290e-02, 4.415e-01, -2.601e-02, -2.126e-02, -1.961e-02, 3.511e-01, 4.215e-02, -2.716e-02, 1.296e-01, -2.416e-01), r);\n\tr = MulAdd(s3_6, M4(-9.102e-02, 7.787e-02, 8.254e-02, 1.284e-01, 2.343e-02, 7.932e-02, 1.647e-01, 7.651e-02, 6.076e-02, 1.102e-01, -4.897e-02, 1.291e-02, -5.505e-02, 4.130e-02, 5.113e-04, -1.506e-02), r);\n\tr = MulAdd(s3_7, M4(1.474e-01, -5.158e-02, 1.400e-01, -7.421e-02, 3.513e-02, 1.671e-03, 2.964e-01, 1.693e-01, -1.401e-01, 3.910e-01, 2.678e-03, -1.492e-01, 9.331e-02, 2.221e-02, -2.008e-02, -1.650e-01), r);\n\tr = MulAdd(s3_8, M4(-5.802e-02, 4.015e-03, -7.727e-02, -1.935e-01, 7.799e-03, -2.203e-02, -6.666e-02, -1.774e-01, 4.786e-03, 1.240e-01, -1.484e-01, 4.574e-02, -1.314e-01, 3.668e-02, -3.512e-03, 2.067e-01), r);\n\tr = MulAdd(s4_0, M4(-3.480e-02, -3.356e-02, -4.895e-02, -5.957e-03, -4.391e-02, 2.161e-02, -8.893e-02, 4.473e-03, -3.188e-01, 3.568e-02, -2.502e-02, 5.069e-02, -6.971e-02, 1.207e-02, -8.822e-02, -1.065e-02), r);\n\tr = MulAdd(s4_1, M4(-4.001e-02, -1.151e-03, -1.282e-01, -1.111e-01, 7.041e-03, -5.520e-02, -2.813e-01, 2.801e-01, -2.163e-02, 1.550e-01, 2.525e-02, 9.990e-02, 1.432e-02, -8.062e-02, 1.754e-01, 7.733e-02), r);\n\tr = MulAdd(s4_2, M4(1.065e-01, 4.473e-02, -1.780e-02, -1.057e-01, 2.457e-01, -6.964e-02, 2.837e-01, 5.544e-02, 1.114e-01, 1.061e-01, -4.014e-03, -7.439e-02, 6.132e-02, 2.903e-02, -2.439e-02, 3.338e-02), r);\n\tr = MulAdd(s4_3, M4(2.458e-01, 2.098e-02, -1.032e-01, -5.928e-02, 1.101e-01, 6.145e-02, 3.779e-03, -5.586e-03, -1.783e-01, -1.598e-01, -1.364e-01, 1.479e-01, -8.708e-03, -2.184e-02, -7.759e-02, 1.388e-02), r);\n\tr = MulAdd(s4_4, M4(-2.294e-02, -5.229e-02, 9.278e-02, 3.531e-02, -4.284e-02, 1.636e-01, 2.907e-02, -1.274e-01, 1.585e-01, -5.364e-02, 1.031e-01, -2.084e-01, -1.381e-01, 9.829e-02, 6.917e-02, 1.736e-01), r);\n\tr = MulAdd(s4_5, M4(7.420e-02, 1.156e-01, 2.054e-02, -8.936e-02, 4.535e-02, -4.649e-02, -3.211e-02, 2.075e-01, 1.284e-01, 1.272e-03, 1.120e-01, 1.890e-01, -2.611e-03, 5.461e-02, 2.135e-02, 2.503e-02), r);\n\tr = MulAdd(s4_6, M4(-1.240e-01, -1.611e-02, 5.571e-02, 1.172e-01, 7.590e-02, -1.411e-02, -8.898e-02, 1.471e-01, -5.932e-02, 2.798e-02, -7.635e-02, -3.789e-02, -1.260e-01, 2.772e-02, 1.101e-01, -8.736e-02), r);\n\tr = MulAdd(s4_7, M4(-1.001e-01, 1.539e-02, 7.691e-02, 3.275e-03, -1.396e-01, -8.471e-02, 5.078e-02, -3.117e-03, -4.415e-02, 1.229e-01, 8.650e-02, 1.605e-01, 2.221e-01, -7.118e-02, -1.555e-01, 3.037e-02), r);\n\tr = MulAdd(s4_8, M4(4.324e-02, -7.434e-02, 1.425e-01, 2.127e-02, -1.275e-01, 1.402e-02, 4.531e-02, -1.775e-01, 7.208e-03, 1.470e-01, -9.997e-02, 4.179e-02, 3.099e-02, 3.236e-03, 1.256e-02, -5.362e-02), r);\n\tr = MulAdd(s5_0, M4(-5.499e-02, 1.089e-02, 1.966e-01, 1.265e-01, 1.598e-02, -8.382e-03, -5.048e-02, -1.358e-01, 1.039e-01, 5.560e-02, 5.535e-02, -5.814e-02, -2.833e-01, -8.683e-03, -1.797e-02, 2.128e-02), r);\n\tr = MulAdd(s5_1, M4(-3.021e-01, -1.367e-01, -6.594e-02, -2.379e-01, -1.311e-01, -1.704e-02, 1.063e-01, -1.499e-01, -2.149e-02, 1.256e-01, 3.517e-02, -1.273e-01, 5.299e-02, 4.324e-02, -4.636e-02, -1.730e-01), r);\n\tr = MulAdd(s5_2, M4(1.915e-01, -3.671e-02, 7.262e-02, 3.138e-01, 8.891e-02, -1.213e-02, 6.398e-02, -1.219e-01, -1.356e-01, -9.526e-03, -2.735e-02, -7.145e-02, -2.606e-01, 2.359e-02, 1.698e-01, 1.522e-01), r);\n\tr = MulAdd(s5_3, M4(-2.451e-01, 1.785e-02, 3.102e-01, 3.007e-02, 1.073e-01, -4.354e-02, -4.559e-03, -3.315e-02, -6.856e-02, -7.520e-02, 1.284e-03, -6.251e-02, 8.424e-02, 1.095e-02, -3.088e-01, -9.742e-02), r);\n\tr = MulAdd(s5_4, M4(-1.551e-01, -1.494e-01, 2.153e-01, 1.393e-02, -2.496e-01, 2.217e-01, 1.903e-01, 7.574e-02, 1.421e-01, -1.086e-01, -4.961e-02, 1.004e-01, 1.392e-01, 3.209e-01, 1.138e-01, -2.434e-01), r);\n\tr = MulAdd(s5_5, M4(-4.235e-01, 2.616e-02, 1.230e-01, -8.260e-02, 6.940e-02, -8.190e-02, -6.281e-03, -2.808e-01, 3.210e-02, -7.540e-02, 1.612e-01, 2.514e-01, 3.180e-02, 1.199e-01, -9.426e-02, 2.046e-01), r);\n\tr = MulAdd(s5_6, M4(-3.787e-01, 1.389e-01, 3.114e-01, 1.714e-01, 5.573e-02, 3.739e-02, -8.473e-02, -4.610e-02, 9.574e-02, 2.153e-03, -8.866e-03, -4.410e-02, -1.155e-02, -5.400e-02, 1.925e-02, 1.738e-01), r);\n\tr = MulAdd(s5_7, M4(-8.150e-02, -2.090e-01, -1.538e-01, 4.760e-01, -1.717e-01, 1.913e-02, 9.299e-03, 1.178e-02, 8.386e-02, -2.141e-02, -4.802e-02, -2.068e-01, 1.744e-01, -4.770e-02, -1.123e-01, 1.521e-01), r);\n\tr = MulAdd(s5_8, M4(1.337e-01, -5.348e-02, 1.427e-02, -1.795e-02, 2.848e-03, -1.898e-02, -4.698e-03, -4.581e-02, -1.794e-01, 5.208e-02, 2.183e-02, 8.358e-02, -2.178e-01, -3.258e-03, -1.373e-01, 1.160e-01), r);\n\tr = MulAdd(s6_0, M4(-2.858e-02, -5.607e-02, 6.122e-02, 1.521e-02, 1.714e-02, 1.630e-01, -1.331e-01, 7.024e-02, -6.379e-02, -2.672e-02, 2.664e-02, -1.155e-01, -3.388e-02, 4.736e-02, -8.130e-02, 3.151e-01), r);\n\tr = MulAdd(s6_1, M4(-2.304e-01, 4.245e-02, -3.877e-01, 4.955e-02, -4.519e-02, 4.113e-02, 5.945e-02, 4.988e-02, 6.812e-02, 1.708e-02, 5.513e-02, 2.077e-01, 5.672e-03, 3.768e-02, -1.364e-02, 9.538e-02), r);\n\tr = MulAdd(s6_2, M4(3.777e-01, 2.776e-03, 4.238e-01, 2.226e-01, 4.303e-02, 1.494e-01, -6.361e-02, 2.114e-02, 3.915e-02, -5.454e-02, -1.746e-02, -8.090e-02, -4.120e-02, -5.266e-03, -3.846e-02, 1.031e-01), r);\n\tr = MulAdd(s6_3, M4(-1.792e-01, 7.010e-02, -3.349e-01, 1.673e-01, -9.938e-02, 1.228e-01, 4.501e-02, -3.223e-02, -1.085e-01, -2.602e-02, 3.112e-01, 1.934e-02, -4.332e-02, -1.565e-02, 2.233e-01, 2.114e-01), r);\n\tr = MulAdd(s6_4, M4(3.164e-02, 1.312e-01, 2.002e-01, -8.395e-04, -6.305e-02, 1.137e-01, -8.620e-03, -1.526e-02, -3.245e-02, 2.534e-02, 3.431e-01, 2.682e-01, 6.176e-02, 7.767e-02, -1.683e-02, -1.062e-01), r);\n\tr = MulAdd(s6_5, M4(3.983e-01, -1.263e-01, 1.939e-01, -4.347e-01, 1.405e-02, 1.783e-01, -9.961e-02, 3.092e-02, -1.693e-01, -2.893e-02, 2.976e-02, 8.765e-02, -8.958e-02, 6.622e-03, -1.051e-01, -2.510e-01), r);\n\tr = MulAdd(s6_6, M4(3.025e-02, 4.474e-02, 8.671e-02, -1.723e-01, -3.552e-02, 6.098e-02, 6.620e-02, -6.662e-02, -2.257e-01, -6.825e-02, -6.809e-02, 8.563e-02, -3.061e-02, -7.433e-03, 9.983e-02, 1.045e-01), r);\n\tr = MulAdd(s6_7, M4(2.197e-02, 1.158e-01, 1.172e-01, -8.142e-02, 8.136e-03, 1.074e-01, 8.381e-03, -8.652e-02, 1.715e-01, -9.235e-02, -4.468e-03, 2.780e-01, 1.224e-01, -4.897e-02, -1.505e-01, -3.873e-01), r);\n\tr = MulAdd(s6_8, M4(1.077e-01, 9.874e-02, 2.784e-01, 1.056e-02, 1.047e-01, 3.006e-02, 7.689e-02, -7.230e-02, -7.157e-02, 2.606e-02, 1.841e-02, 7.986e-02, 2.093e-01, -7.551e-02, 1.089e-01, -2.931e-01), r);\n\tr = MulAdd(s7_0, M4(-7.262e-02, -2.929e-02, 1.450e-01, -1.313e-01, -2.737e-02, 2.686e-01, 1.031e-01, -1.140e-01, 6.014e-02, -1.711e-02, -1.712e-01, 2.743e-01, -3.961e-03, 5.349e-02, 3.779e-02, -1.480e-01), r);\n\tr = MulAdd(s7_1, M4(-2.523e-01, -8.444e-02, -5.685e-02, 1.679e-01, 1.718e-01, 3.372e-02, -1.776e-01, 3.977e-01, -1.106e-01, 4.569e-02, -3.599e-02, -6.396e-02, -5.179e-02, 1.339e-02, 7.202e-02, 8.055e-02), r);\n\tr = MulAdd(s7_2, M4(1.646e-02, -4.254e-02, -2.996e-02, 2.612e-01, 3.034e-01, 2.075e-01, 5.784e-02, 1.962e-01, -4.796e-02, -1.175e-02, 1.115e-02, -4.677e-02, 1.267e-01, -9.842e-02, 5.732e-02, 4.389e-02), r);\n\tr = MulAdd(s7_3, M4(-1.339e-01, 4.460e-02, -1.090e-01, 4.402e-02, -6.307e-01, 2.004e-01, 1.306e-01, -1.242e-01, 3.439e-01, 5.751e-02, 1.782e-01, -4.005e-02, 1.038e-02, 3.962e-02, -7.156e-02, -5.698e-02), r);\n\tr = MulAdd(s7_4, M4(-5.161e-02, 1.104e-01, 1.064e-01, -2.529e-01, 1.336e-01, -1.512e-01, 2.080e-02, -3.020e-01, 1.244e-01, 1.446e-01, 2.897e-01, -3.604e-01, 3.560e-02, 2.879e-01, -6.541e-02, 4.722e-02), r);\n\tr = MulAdd(s7_5, M4(-1.565e-02, -8.385e-02, -1.309e-01, -2.954e-01, 5.100e-03, 3.356e-01, -2.372e-01, -1.208e-01, -7.546e-02, 2.556e-02, 2.936e-02, -2.685e-01, 1.546e-01, 4.975e-02, -7.203e-02, 3.938e-02), r);\n\tr = MulAdd(s7_6, M4(-9.647e-02, -2.487e-03, 1.106e-01, -1.505e-02, -1.015e-01, 1.383e-01, 1.683e-01, -5.457e-02, -4.709e-02, 2.964e-02, 1.209e-01, -1.821e-01, 1.030e-01, 8.563e-02, -3.546e-01, 1.567e-02), r);\n\tr = MulAdd(s7_7, M4(5.586e-03, 7.714e-04, -8.230e-02, -7.812e-02, -2.193e-02, -9.724e-02, -2.037e-01, -2.090e-02, 1.396e-01, 1.463e-02, 5.520e-02, -2.476e-01, 9.839e-02, 2.303e-02, -8.032e-02, 1.211e-02), r);\n\tr = MulAdd(s7_8, M4(4.894e-02, -2.312e-02, -1.515e-01, -7.387e-02, 2.279e-01, 1.422e-01, 1.680e-02, -1.466e-02, 9.482e-02, -2.726e-02, -3.037e-02, 2.144e-01, 1.412e-01, 2.566e-02, 1.389e-02, 2.099e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 7.251e-02, -4.031e-02, -3.769e-02, 6.364e-02 };\n\tr = MulAdd(s0_0, M4(-6.296e-02, 7.760e-03, 6.615e-03, -6.910e-02, -1.733e-01, -1.156e-01, -1.551e-01, -1.193e-01, 4.787e-02, 6.314e-03, -3.864e-02, -1.277e-01, -1.072e-01, -1.677e-01, -1.273e-01, -6.141e-01), r);\n\tr = MulAdd(s0_1, M4(-1.401e-02, -7.855e-02, 7.498e-02, 1.439e-01, -1.983e-01, -1.254e-01, -6.861e-02, 2.587e-01, -1.967e-01, -4.699e-02, 1.141e-01, 1.117e-01, -1.657e-01, -1.043e-01, -1.024e-01, -3.792e-01), r);\n\tr = MulAdd(s0_2, M4(-8.788e-02, 1.379e-02, 3.835e-02, -4.003e-02, 7.202e-02, -2.507e-02, -7.286e-03, 9.680e-02, 4.744e-02, 7.028e-02, 4.711e-02, 1.302e-01, 5.147e-02, -1.442e-01, -1.021e-01, -1.200e-01), r);\n\tr = MulAdd(s0_3, M4(-1.092e-01, 3.675e-02, 1.100e-01, -1.764e-02, 1.332e-01, 3.322e-02, -1.338e-01, 3.050e-01, -1.125e-01, 1.422e-01, 3.435e-02, 5.083e-02, -1.082e-01, 3.614e-03, -1.721e-01, -2.248e-01), r);\n\tr = MulAdd(s0_4, M4(-1.823e-01, -4.488e-02, 2.356e-01, 6.690e-03, 4.926e-02, -6.168e-02, -6.737e-02, 9.670e-02, 7.045e-02, -9.428e-02, -1.176e-01, 2.986e-01, -8.239e-03, -1.726e-01, -2.281e-01, 4.943e-02), r);\n\tr = MulAdd(s0_5, M4(-2.979e-02, 1.098e-02, 1.388e-01, 1.658e-02, 8.264e-02, -1.971e-02, -7.715e-02, 3.450e-02, -7.950e-02, 4.570e-02, 4.495e-02, -3.240e-03, -2.056e-01, 8.439e-02, -1.198e-02, -8.534e-03), r);\n\tr = MulAdd(s0_6, M4(2.039e-02, 1.046e-01, 1.343e-01, -1.218e-01, 1.207e-02, -9.623e-02, -7.417e-02, 9.335e-03, -3.468e-03, 9.762e-02, 9.744e-03, -4.961e-02, -7.627e-02, 9.029e-02, 1.106e-02, 4.004e-03), r);\n\tr = MulAdd(s0_7, M4(8.910e-02, -1.111e-02, -9.261e-03, -1.198e-01, 5.008e-02, -1.737e-02, -2.231e-01, 9.532e-02, 1.245e-03, -3.073e-02, -5.711e-02, 6.196e-02, -1.358e-01, -1.777e-01, 1.823e-03, 6.634e-02), r);\n\tr = MulAdd(s0_8, M4(2.888e-02, 1.446e-01, 1.182e-01, -2.587e-02, -7.939e-03, -6.873e-02, 9.312e-02, -7.450e-02, 1.244e-02, -1.426e-01, -1.923e-02, -9.536e-02, 1.318e-01, -4.630e-02, 1.188e-01, -5.019e-02), r);\n\tr = MulAdd(s1_0, M4(8.971e-02, -9.082e-02, -7.461e-02, -2.907e-02, -1.107e-01, 1.039e-01, -8.184e-03, -1.111e-01, 2.382e-02, 1.451e-01, -4.172e-02, 1.012e-02, 2.358e-01, -1.155e-01, 3.239e-02, 7.585e-02), r);\n\tr = MulAdd(s1_1, M4(2.872e-02, -2.363e-01, 7.393e-02, 2.592e-01, 2.485e-02, 4.569e-02, 8.531e-02, 1.181e-01, 2.343e-02, 1.434e-01, -1.593e-01, 5.882e-02, 3.096e-01, 4.042e-02, 6.920e-02, -3.214e-02), r);\n\tr = MulAdd(s1_2, M4(-3.794e-02, -6.319e-03, 2.241e-01, 2.066e-02, -1.690e-01, 2.888e-02, -2.124e-02, 2.206e-02, 6.969e-02, 1.724e-01, -4.655e-02, 1.423e-01, 3.927e-02, 1.894e-02, 1.240e-01, 4.935e-02), r);\n\tr = MulAdd(s1_3, M4(-4.410e-01, -4.775e-02, -2.330e-01, 2.230e-01, -2.839e-01, -6.997e-02, -1.015e-01, -1.054e-01, -2.014e-01, 2.071e-01, -1.688e-02, 1.301e-01, 2.427e-01, -4.421e-02, 8.016e-03, 4.136e-02), r);\n\tr = MulAdd(s1_4, M4(-3.077e-01, -1.590e-01, -1.906e-01, 1.468e-01, 1.443e-02, -1.398e-01, -2.670e-02, -7.530e-02, 1.152e-01, 8.916e-02, -5.355e-02, 2.350e-01, 3.961e-01, 1.659e-01, -1.960e-01, 7.532e-02), r);\n\tr = MulAdd(s1_5, M4(-2.561e-01, 1.781e-02, 1.265e-02, 1.338e-01, 8.716e-02, 2.390e-02, 9.098e-02, -8.604e-03, -2.280e-01, 2.041e-02, 1.755e-01, 1.053e-01, 9.669e-03, 2.135e-01, 1.511e-01, -3.904e-02), r);\n\tr = MulAdd(s1_6, M4(1.296e-01, -1.541e-01, -2.282e-01, 1.621e-01, 1.033e-02, -6.657e-02, 1.396e-01, -7.432e-02, 2.574e-01, 2.337e-02, -9.461e-02, -5.584e-02, 6.284e-02, 1.940e-01, 1.195e-01, -1.045e-02), r);\n\tr = MulAdd(s1_7, M4(2.040e-01, 1.778e-02, -3.518e-01, 3.646e-02, 4.260e-02, 2.341e-01, 1.879e-02, -6.436e-02, 1.185e-01, -2.253e-01, 7.939e-02, 1.112e-02, -5.558e-02, 1.451e-01, 4.042e-02, -7.908e-02), r);\n\tr = MulAdd(s1_8, M4(-4.773e-02, 1.554e-01, -1.877e-01, -1.379e-01, -5.846e-02, -1.405e-02, 9.912e-02, -5.957e-02, 3.975e-01, -5.402e-02, -5.425e-02, 4.381e-02, -1.086e-01, 5.943e-02, 2.654e-02, 5.067e-02), r);\n\tr = MulAdd(s2_0, M4(6.013e-03, -1.253e-01, 1.684e-01, 1.034e-02, 6.153e-03, -2.489e-02, 2.605e-02, -3.455e-02, -2.483e-02, -7.223e-02, -2.935e-02, -3.720e-02, -1.545e-01, 7.488e-02, 1.590e-01, -9.646e-02), r);\n\tr = MulAdd(s2_1, M4(-1.124e-01, -2.540e-02, -1.007e-01, 3.891e-01, 9.111e-02, -6.169e-02, 4.814e-03, -2.303e-02, 1.628e-01, 4.082e-03, -1.690e-02, 3.356e-02, -2.616e-01, 3.774e-03, -2.280e-01, 2.459e-01), r);\n\tr = MulAdd(s2_2, M4(3.480e-02, 6.542e-02, 3.395e-02, 1.568e-01, 1.253e-01, 1.658e-02, -1.394e-02, 9.313e-02, 1.123e-01, 3.798e-02, -7.904e-02, 5.355e-02, 1.717e-02, -7.496e-02, 1.604e-01, -1.738e-02), r);\n\tr = MulAdd(s2_3, M4(-3.165e-03, -8.321e-02, -1.332e-01, -2.712e-02, 8.552e-02, -2.493e-01, -1.120e-01, 1.037e-03, 1.315e-01, -1.144e-01, -5.099e-02, 3.977e-02, 1.624e-01, -2.295e-01, 2.364e-01, 6.290e-02), r);\n\tr = MulAdd(s2_4, M4(-9.325e-02, -1.038e-01, 1.666e-02, 1.585e-01, -7.056e-02, 1.631e-01, -3.784e-03, 1.019e-01, -1.726e-01, 3.181e-03, -9.122e-02, -7.055e-02, 5.812e-01, -2.316e-01, -3.565e-02, -7.114e-02), r);\n\tr = MulAdd(s2_5, M4(-6.748e-02, -1.361e-01, -1.217e-01, -7.496e-02, 1.507e-03, -1.285e-01, 9.394e-02, 2.374e-02, -1.774e-01, -6.646e-02, 3.708e-02, -1.242e-02, 1.416e-01, -1.894e-01, -1.324e-01, 1.631e-01), r);\n\tr = MulAdd(s2_6, M4(1.277e-01, 4.821e-02, 9.689e-02, 3.256e-02, -3.484e-02, -2.009e-02, -5.629e-02, -5.021e-02, 1.237e-01, -1.442e-02, -4.216e-03, 9.495e-02, -7.393e-02, 2.990e-02, 3.954e-01, 3.259e-02), r);\n\tr = MulAdd(s2_7, M4(1.946e-01, 1.638e-01, 5.388e-02, -1.684e-02, 1.038e-01, 1.256e-02, 1.280e-01, -1.644e-04, 2.570e-01, -2.273e-01, 1.624e-01, -3.824e-02, 1.537e-01, -1.509e-01, -4.485e-02, -1.919e-02), r);\n\tr = MulAdd(s2_8, M4(1.524e-02, 1.102e-01, 1.297e-01, -6.958e-02, 3.049e-02, -1.014e-01, -4.677e-03, 6.799e-02, 1.526e-01, -7.553e-02, 2.533e-03, 1.559e-01, -9.696e-03, -2.257e-01, 2.736e-01, -2.925e-01), r);\n\tr = MulAdd(s3_0, M4(-5.678e-03, -9.975e-02, 5.608e-02, -1.878e-02, 1.492e-01, -1.788e-01, 6.868e-02, -3.736e-02, -9.419e-02, -1.721e-02, 1.413e-02, -1.774e-02, -7.584e-02, 6.618e-03, 2.523e-02, -6.888e-02), r);\n\tr = MulAdd(s3_1, M4(9.743e-02, -5.011e-02, -1.033e-01, 1.148e-01, 7.509e-02, 1.483e-01, -2.218e-02, -2.814e-01, 2.120e-01, 6.953e-03, 7.592e-02, -2.436e-01, -1.137e-01, -2.710e-02, -8.729e-02, -4.858e-02), r);\n\tr = MulAdd(s3_2, M4(5.880e-02, 2.609e-02, 4.146e-02, 2.087e-01, -1.517e-01, 9.844e-02, 5.635e-02, -2.144e-01, -8.840e-02, 1.367e-01, 2.265e-03, 1.798e-02, -8.372e-02, -1.541e-02, -8.325e-02, 6.236e-02), r);\n\tr = MulAdd(s3_3, M4(1.284e-01, -5.165e-02, -1.073e-01, 1.566e-02, -8.156e-02, 9.434e-02, -1.572e-01, -2.248e-01, 1.289e-02, -2.447e-02, -1.321e-02, -1.364e-01, 1.252e-03, -2.467e-01, 9.000e-02, 1.592e-01), r);\n\tr = MulAdd(s3_4, M4(3.242e-02, 8.790e-02, 6.500e-02, 1.169e-01, 1.310e-01, 5.295e-02, -3.770e-01, 2.659e-02, -1.715e-01, 7.007e-02, -3.154e-02, -1.503e-01, 1.687e-01, -1.812e-01, 1.072e-01, -5.560e-02), r);\n\tr = MulAdd(s3_5, M4(5.164e-02, 2.774e-02, 3.806e-02, -1.682e-01, 2.807e-01, -1.499e-01, -1.471e-01, -1.294e-01, 3.739e-02, 1.806e-02, -3.975e-02, -7.185e-02, 1.505e-01, -7.103e-03, -1.306e-01, 1.362e-01), r);\n\tr = MulAdd(s3_6, M4(1.583e-01, -2.523e-01, -9.988e-02, -4.831e-02, 1.392e-01, 2.817e-01, -2.417e-01, -1.503e-01, 2.149e-02, 4.919e-01, 7.501e-02, -4.918e-02, -3.924e-03, 2.290e-01, 5.465e-02, -3.692e-02), r);\n\tr = MulAdd(s3_7, M4(-2.568e-01, 2.126e-01, -9.229e-02, -9.968e-02, 2.697e-01, -2.022e-01, 7.863e-02, -1.691e-01, -3.892e-01, 8.126e-02, 5.303e-01, -9.675e-02, -5.414e-02, -5.654e-02, -5.946e-02, -1.013e-01), r);\n\tr = MulAdd(s3_8, M4(-4.412e-02, 8.399e-02, -2.984e-01, 1.498e-01, -1.460e-01, -1.423e-01, -2.728e-01, 7.422e-02, -1.358e-01, 5.904e-02, -9.015e-02, -2.758e-02, 5.924e-02, -1.556e-01, 5.550e-02, -4.398e-02), r);\n\tr = MulAdd(s4_0, M4(-1.170e-01, -1.378e-01, -4.116e-02, 1.387e-01, 1.216e-01, 9.390e-02, 1.264e-01, -1.458e-01, 8.866e-02, -1.196e-01, 1.862e-01, 5.594e-01, 4.088e-02, -5.253e-03, -3.735e-02, 1.472e-01), r);\n\tr = MulAdd(s4_1, M4(8.938e-03, -6.878e-03, -2.098e-02, -3.777e-02, 2.842e-01, 1.345e-01, 1.345e-02, -2.262e-02, -3.473e-02, -1.377e-02, -5.251e-02, -3.000e-01, 5.819e-02, 7.130e-03, 8.860e-02, -4.931e-02), r);\n\tr = MulAdd(s4_2, M4(-7.974e-02, -1.470e-02, -1.071e-01, 6.803e-02, 2.739e-02, 1.840e-01, 1.857e-02, 1.595e-02, -9.594e-02, -2.005e-01, -1.699e-01, -6.428e-02, -1.115e-01, 2.762e-02, -1.109e-01, -5.929e-02), r);\n\tr = MulAdd(s4_3, M4(-7.114e-02, 2.181e-02, -2.073e-01, -1.219e-02, 4.196e-02, 2.025e-01, 5.159e-02, 1.224e-01, -2.798e-01, -1.442e-01, 1.147e-02, 7.897e-02, -3.916e-03, 3.012e-02, -1.081e-01, 3.503e-03), r);\n\tr = MulAdd(s4_4, M4(-3.617e-02, 1.201e-01, 5.453e-02, 1.035e-01, -2.327e-01, 1.920e-01, -6.373e-02, 2.633e-01, -1.994e-01, 1.184e-01, 1.997e-01, -8.347e-02, 6.505e-02, -1.572e-01, -3.503e-02, 1.064e-01), r);\n\tr = MulAdd(s4_5, M4(-1.005e-01, -2.648e-02, -4.836e-02, 8.596e-02, 9.809e-02, 7.420e-02, 1.844e-01, -1.432e-01, 1.792e-01, -2.256e-01, -4.148e-01, 9.456e-02, 2.001e-02, -3.829e-02, -2.361e-01, -1.106e-01), r);\n\tr = MulAdd(s4_6, M4(1.471e-02, 9.680e-02, 5.551e-02, -5.460e-02, 6.416e-02, 1.523e-02, -1.561e-01, -9.986e-02, 4.359e-02, -1.792e-01, 2.300e-01, 3.665e-02, -1.285e-02, -1.844e-01, -8.183e-02, -2.661e-02), r);\n\tr = MulAdd(s4_7, M4(1.598e-02, -1.975e-02, 2.088e-01, -8.643e-02, 1.618e-01, 1.001e-01, -1.640e-01, -2.352e-02, 2.128e-01, -4.072e-04, -5.130e-01, 4.805e-04, -5.274e-02, 9.536e-02, -7.823e-02, 5.530e-02), r);\n\tr = MulAdd(s4_8, M4(-2.983e-02, 4.106e-02, 4.312e-02, -8.918e-02, -1.063e-01, 2.148e-01, 1.454e-02, 7.327e-02, -2.582e-03, 2.259e-02, -3.194e-01, -1.971e-02, 2.798e-02, 5.562e-02, -1.398e-01, -6.819e-02), r);\n\tr = MulAdd(s5_0, M4(4.513e-01, 4.676e-01, 5.226e-01, 1.764e-01, -9.800e-02, -7.946e-02, 2.521e-02, -4.449e-02, 6.989e-02, -8.352e-02, -4.870e-02, 3.570e-02, 4.503e-02, 2.162e-01, -9.362e-02, 3.516e-01), r);\n\tr = MulAdd(s5_1, M4(-5.371e-02, 1.972e-01, -4.532e-02, 2.918e-01, -2.111e-01, -3.814e-02, 1.917e-01, -5.373e-03, 6.381e-02, 1.753e-02, 6.961e-02, 3.351e-02, 1.103e-01, -9.770e-02, -9.194e-02, -5.176e-02), r);\n\tr = MulAdd(s5_2, M4(9.004e-02, -1.363e-02, -1.163e-02, -9.717e-02, -1.343e-01, -5.610e-02, -1.661e-01, 3.208e-02, 8.446e-02, -3.063e-02, 7.279e-02, -1.185e-01, 3.186e-01, 6.196e-02, 1.419e-01, 1.332e-01), r);\n\tr = MulAdd(s5_3, M4(2.893e-01, -4.345e-02, 6.999e-02, -4.645e-02, 1.928e-01, -2.891e-01, -5.506e-02, -5.547e-02, 6.418e-02, 5.734e-02, 6.073e-03, 1.036e-01, 1.590e-01, -1.633e-01, -2.515e-02, -5.278e-02), r);\n\tr = MulAdd(s5_4, M4(-1.224e-01, -2.496e-01, 4.529e-02, 3.488e-01, 1.504e-03, -4.240e-01, 2.477e-02, 4.511e-02, 5.403e-02, 1.711e-01, 1.764e-01, 3.557e-02, 1.015e-01, -3.583e-01, 3.328e-01, 7.640e-02), r);\n\tr = MulAdd(s5_5, M4(-1.450e-01, -2.665e-01, -1.446e-01, 1.696e-01, -1.642e-01, -7.631e-02, -3.422e-03, -9.272e-02, -1.440e-02, 3.656e-02, 4.633e-02, 6.810e-02, 7.371e-02, 2.298e-01, 2.306e-01, -2.436e-01), r);\n\tr = MulAdd(s5_6, M4(3.661e-01, 1.620e-01, 4.195e-01, -3.285e-01, 1.617e-02, -2.502e-01, 1.880e-02, 1.265e-01, -4.917e-02, 4.856e-02, 1.003e-01, -7.730e-02, -1.180e-01, -1.242e-01, 6.801e-03, 3.626e-03), r);\n\tr = MulAdd(s5_7, M4(3.307e-01, -1.375e-01, -2.029e-01, 2.181e-01, 1.969e-01, -3.681e-01, 1.225e-01, -2.982e-02, 4.205e-02, 8.890e-02, -1.453e-01, -8.069e-02, 3.265e-01, -7.184e-02, 6.168e-02, -1.892e-01), r);\n\tr = MulAdd(s5_8, M4(1.585e-01, 2.796e-01, 2.616e-01, 8.947e-02, 1.624e-01, -1.246e-01, -2.392e-01, 9.131e-02, -8.142e-02, -1.192e-02, 3.717e-02, -8.612e-02, 1.071e-01, -1.051e-01, 1.600e-01, 7.882e-02), r);\n\tr = MulAdd(s6_0, M4(-5.474e-02, -1.008e-01, 1.636e-02, 1.844e-01, 1.248e-01, 3.317e-02, 1.378e-02, 3.465e-03, 7.883e-02, -1.977e-02, 1.255e-01, -1.549e-01, -7.282e-02, 1.778e-01, -5.500e-02, 9.860e-02), r);\n\tr = MulAdd(s6_1, M4(2.543e-01, -2.954e-01, 4.462e-02, -9.544e-02, 1.528e-02, -9.023e-02, 1.001e-01, -1.330e-01, 6.335e-03, -2.947e-02, 5.462e-02, -1.493e-01, 4.117e-02, -6.603e-02, -5.900e-03, 3.771e-02), r);\n\tr = MulAdd(s6_2, M4(6.381e-02, 2.838e-03, -3.115e-01, 9.896e-02, 9.216e-02, -2.670e-02, 6.396e-02, -2.471e-02, 3.709e-02, -6.857e-02, -3.678e-02, 4.962e-02, 8.385e-03, 1.931e-01, 1.366e-02, -1.669e-02), r);\n\tr = MulAdd(s6_3, M4(8.992e-02, -8.330e-02, 2.828e-02, -1.335e-01, 4.957e-02, 7.820e-03, 7.989e-02, 6.431e-02, 1.280e-01, -2.863e-03, 1.777e-01, -1.335e-01, -5.924e-02, 1.229e-01, -7.804e-02, 1.636e-01), r);\n\tr = MulAdd(s6_4, M4(-1.124e-01, -1.182e-01, 3.981e-02, 2.047e-01, -1.712e-02, -1.877e-02, 1.001e-01, -3.272e-02, -1.424e-01, -8.957e-02, -6.594e-02, -1.042e-02, -9.962e-02, 2.836e-02, 6.545e-02, 1.542e-01), r);\n\tr = MulAdd(s6_5, M4(5.565e-03, 2.089e-01, -8.464e-02, 5.421e-02, -1.540e-01, -5.868e-02, 1.151e-01, -1.651e-01, -1.522e-03, 3.179e-02, -1.211e-02, 1.724e-02, 4.772e-02, -2.717e-01, -1.096e-03, -2.160e-01), r);\n\tr = MulAdd(s6_6, M4(-1.562e-02, 1.106e-01, 3.543e-02, 7.591e-02, -3.997e-02, 6.842e-02, 1.129e-01, 1.381e-01, 1.876e-01, 4.092e-01, 1.209e-01, 6.818e-02, -1.437e-01, 1.191e-01, -1.169e-01, 8.674e-02), r);\n\tr = MulAdd(s6_7, M4(-4.597e-02, -3.929e-02, -1.468e-02, 7.116e-02, -8.660e-02, 3.209e-02, 3.214e-02, -3.238e-02, -1.492e-01, 2.566e-02, 1.710e-01, -1.887e-01, -2.617e-01, 3.479e-01, -1.033e-01, 2.452e-01), r);\n\tr = MulAdd(s6_8, M4(5.360e-01, -6.639e-02, 4.089e-02, -2.392e-02, -2.369e-01, 1.002e-01, 2.614e-02, -3.216e-02, -3.226e-02, 8.686e-02, 2.782e-02, 3.562e-02, 5.844e-02, 8.772e-02, 3.218e-01, -2.124e-03), r);\n\tr = MulAdd(s7_0, M4(-4.048e-02, -9.997e-02, 8.137e-02, 2.078e-02, 1.268e-01, -1.598e-01, 3.866e-02, -1.074e-01, -2.593e-01, 9.528e-02, 9.960e-02, 5.756e-02, 1.358e-01, -5.139e-03, -1.316e-02, -1.092e-01), r);\n\tr = MulAdd(s7_1, M4(-1.213e-01, 8.196e-02, -8.100e-02, 1.871e-01, 1.131e-01, 1.529e-01, -6.739e-03, -2.926e-01, 6.150e-02, -3.458e-02, 8.555e-02, -9.260e-02, 1.937e-02, -8.979e-02, 2.298e-02, 8.512e-02), r);\n\tr = MulAdd(s7_2, M4(-8.931e-03, -3.090e-03, -1.055e-01, -9.030e-02, 8.746e-02, -9.688e-02, 9.056e-02, 8.719e-02, 1.805e-03, -6.690e-02, 3.257e-02, -1.213e-02, 1.109e-02, 2.994e-02, 2.223e-03, 1.758e-01), r);\n\tr = MulAdd(s7_3, M4(-1.470e-01, -1.280e-02, 6.654e-02, 4.358e-02, 9.439e-02, 1.011e-01, 1.927e-01, 2.059e-01, -2.276e-01, 1.261e-01, -6.429e-02, -1.375e-02, 2.319e-01, -1.480e-01, -1.147e-01, -3.065e-01), r);\n\tr = MulAdd(s7_4, M4(-3.930e-02, -2.527e-01, 2.501e-01, 8.167e-02, -1.693e-01, -1.588e-01, 2.412e-01, 4.158e-01, 1.166e-01, -1.097e-01, -1.071e-01, 1.972e-01, 2.167e-01, -5.103e-02, -2.525e-02, 4.689e-02), r);\n\tr = MulAdd(s7_5, M4(-1.498e-01, 9.670e-02, -3.224e-02, -1.630e-01, -3.076e-01, 1.045e-02, 1.002e-01, -1.043e-01, 1.172e-01, 7.072e-04, -7.597e-02, 9.863e-03, -5.800e-02, -4.964e-02, -3.846e-02, -9.352e-04), r);\n\tr = MulAdd(s7_6, M4(-1.372e-01, 1.598e-01, -1.029e-01, -7.709e-02, 4.725e-02, 5.317e-02, 4.150e-01, 7.688e-02, -2.923e-01, 2.772e-01, -3.063e-01, 7.638e-02, 1.667e-01, -1.784e-01, -5.216e-02, -2.791e-02), r);\n\tr = MulAdd(s7_7, M4(-8.641e-02, 1.598e-01, 8.128e-02, -4.598e-02, 9.464e-02, 2.164e-01, 4.623e-01, 4.714e-02, -1.506e-01, 1.833e-01, -8.676e-02, 3.411e-01, -2.230e-02, -1.713e-01, 4.596e-02, -2.925e-02), r);\n\tr = MulAdd(s7_8, M4(-9.475e-02, -3.959e-02, 7.701e-02, 4.111e-02, -4.562e-01, 2.156e-02, -2.381e-03, -2.020e-01, 8.663e-02, 5.398e-02, -1.718e-01, -3.074e-02, -5.906e-02, -4.721e-02, 2.176e-01, -8.696e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -5.796e-02, -9.994e-02, -4.215e-02, -3.212e-02 };\n\tr = MulAdd(s0_0, M4(-1.698e-02, -1.873e-01, -6.680e-02, 4.658e-02, -1.640e-02, -4.673e-02, 2.303e-02, -7.395e-02, 9.013e-02, -2.312e-02, 7.911e-02, -3.101e-02, 1.765e-01, -3.523e-01, 2.891e-01, -1.342e-01), r);\n\tr = MulAdd(s0_1, M4(-5.807e-02, 1.886e-01, 3.353e-03, -1.506e-02, -2.154e-01, -5.218e-03, 2.449e-01, -1.151e-01, 6.348e-02, -1.934e-02, -3.096e-02, 1.163e-02, 5.664e-01, -1.311e-01, 3.078e-01, 8.386e-02), r);\n\tr = MulAdd(s0_2, M4(-4.766e-02, -3.748e-02, 1.156e-01, -1.899e-02, 2.700e-02, 7.951e-02, -1.855e-02, -1.360e-01, -9.049e-02, 1.629e-01, 5.111e-02, 2.138e-02, -4.326e-02, -6.232e-02, 1.730e-01, 9.890e-02), r);\n\tr = MulAdd(s0_3, M4(-9.821e-02, -8.497e-04, 3.265e-02, 3.157e-02, 3.790e-02, 2.119e-01, -2.147e-01, 7.346e-02, 1.442e-01, -5.694e-02, -6.352e-02, 1.299e-01, 2.590e-01, 3.356e-02, 2.009e-01, 3.760e-01), r);\n\tr = MulAdd(s0_4, M4(1.312e-01, 2.749e-01, 3.881e-02, 2.240e-01, 1.452e-01, -5.652e-02, 1.002e-01, 3.697e-03, -2.693e-01, -4.560e-02, -5.198e-02, -1.121e-01, -5.385e-02, -2.180e-01, 2.357e-01, -4.682e-02), r);\n\tr = MulAdd(s0_5, M4(1.037e-01, -4.922e-03, -1.589e-02, 1.669e-01, 6.173e-02, 8.454e-03, 3.746e-01, 1.235e-01, -8.087e-02, -1.984e-02, 3.124e-02, -1.156e-01, -1.325e-01, 2.218e-01, 1.087e-01, 1.539e-01), r);\n\tr = MulAdd(s0_6, M4(-5.949e-03, -2.015e-01, 7.017e-02, -9.461e-02, -1.481e-01, 1.249e-01, -1.170e-01, -1.190e-01, 6.665e-02, -7.714e-02, -3.005e-02, -1.891e-01, 5.926e-02, 2.404e-02, -2.855e-02, 4.209e-02), r);\n\tr = MulAdd(s0_7, M4(1.168e-01, 1.383e-01, 4.428e-02, -2.288e-01, 9.044e-02, 2.164e-01, -8.071e-02, 6.872e-02, 1.572e-02, -4.685e-02, 2.427e-01, -2.775e-02, -4.994e-02, 3.562e-02, 4.875e-02, 1.291e-01), r);\n\tr = MulAdd(s0_8, M4(4.041e-03, 2.384e-02, -1.436e-01, 7.285e-02, -9.456e-02, -2.413e-02, 1.093e-01, 1.186e-01, -3.203e-02, 1.475e-02, -1.489e-02, 2.053e-01, 5.281e-02, 4.876e-02, -6.375e-02, 1.727e-02), r);\n\tr = MulAdd(s1_0, M4(-2.273e-02, 1.106e-01, -2.805e-01, 4.683e-02, 4.003e-02, 1.739e-03, -9.869e-02, -6.333e-02, -7.502e-02, 2.742e-01, 6.364e-02, -8.908e-02, 1.085e-01, 3.470e-01, -3.442e-01, -9.594e-02), r);\n\tr = MulAdd(s1_1, M4(-2.592e-01, -2.718e-02, 2.159e-01, 5.279e-02, -7.593e-02, -5.258e-02, 1.568e-01, 1.135e-01, 1.196e-01, 1.640e-01, 2.071e-01, -3.588e-01, -1.379e-01, 1.784e-01, 6.214e-03, -5.460e-02), r);\n\tr = MulAdd(s1_2, M4(-1.736e-02, 2.079e-01, 4.595e-03, -1.123e-01, -2.302e-02, 6.572e-02, -1.167e-01, 1.474e-02, -1.697e-03, -2.812e-01, 1.269e-02, -3.907e-03, -6.566e-02, 1.811e-01, 1.914e-01, -3.899e-02), r);\n\tr = MulAdd(s1_3, M4(-1.516e-01, -1.128e-02, -1.515e-01, -5.396e-02, 3.382e-02, -4.851e-02, 5.555e-02, 1.203e-01, 7.104e-02, 2.457e-01, 3.103e-02, 7.618e-02, -1.235e-02, -6.414e-02, -1.932e-01, 2.398e-01), r);\n\tr = MulAdd(s1_4, M4(9.719e-02, -2.010e-01, 1.421e-01, -3.102e-03, 4.764e-02, 1.152e-01, -1.954e-03, -2.084e-01, 1.056e-01, -7.074e-02, -2.112e-02, -1.057e-01, -1.572e-01, -4.169e-02, -6.214e-02, -7.277e-01), r);\n\tr = MulAdd(s1_5, M4(8.558e-02, -2.495e-01, -1.989e-01, 9.590e-02, 1.615e-01, -1.643e-01, -1.051e-02, -9.111e-02, -6.694e-02, 1.960e-01, 3.509e-01, 2.216e-02, -1.859e-01, -3.016e-01, -1.452e-01, 1.759e-01), r);\n\tr = MulAdd(s1_6, M4(1.043e-01, -1.302e-01, 3.582e-02, -2.599e-01, 9.496e-02, -1.366e-01, 3.558e-02, -1.240e-01, -8.862e-02, 1.433e-01, -2.149e-02, -1.374e-02, 2.642e-02, -2.283e-02, -2.794e-02, -2.896e-02), r);\n\tr = MulAdd(s1_7, M4(1.294e-01, -1.096e-01, -1.064e-01, -2.245e-01, 8.796e-02, 9.860e-02, 2.812e-02, 1.750e-02, 1.139e-01, -1.873e-01, 2.878e-02, 1.735e-01, 1.740e-02, 1.851e-02, -2.990e-02, -1.145e-01), r);\n\tr = MulAdd(s1_8, M4(-1.369e-01, -6.807e-02, -5.180e-02, 1.313e-01, -3.927e-05, -1.128e-01, 4.890e-02, 3.989e-02, -2.035e-01, 2.148e-01, -2.251e-01, 1.421e-01, -7.962e-03, 1.509e-01, -1.495e-02, -1.019e-01), r);\n\tr = MulAdd(s2_0, M4(-9.294e-02, -2.481e-02, 1.403e-01, -1.359e-01, -1.061e-01, -5.883e-02, -1.400e-01, 5.274e-02, -2.305e-02, 4.316e-02, -1.507e-01, 1.499e-02, 1.564e-02, -4.029e-01, 1.641e-01, -5.780e-02), r);\n\tr = MulAdd(s2_1, M4(-1.752e-02, -4.913e-02, 1.778e-02, -1.957e-03, -1.179e-01, 8.784e-02, -1.297e-01, -1.210e-02, -4.552e-02, 7.796e-02, -1.006e-02, -8.141e-02, -2.534e-01, -5.645e-02, 5.620e-02, 7.241e-02), r);\n\tr = MulAdd(s2_2, M4(-2.166e-01, -5.779e-02, 1.009e-02, 1.082e-01, 3.005e-02, -2.124e-01, 7.502e-02, 1.306e-02, -2.851e-02, 6.912e-02, 3.177e-02, 1.945e-02, -1.518e-01, -1.881e-01, -1.107e-01, 1.201e-02), r);\n\tr = MulAdd(s2_3, M4(-4.604e-02, 9.225e-02, 1.064e-01, 6.817e-03, -1.436e-01, 1.484e-01, 8.814e-03, 1.094e-01, -2.963e-02, -1.773e-01, 4.952e-02, 3.703e-02, -1.068e-01, -4.995e-02, -1.110e-01, -2.143e-01), r);\n\tr = MulAdd(s2_4, M4(-1.260e-01, 4.946e-01, 9.564e-02, -8.133e-02, 1.674e-01, -2.238e-01, 7.130e-02, -1.971e-02, 1.666e-01, 2.136e-02, -1.943e-02, 2.817e-02, 6.673e-02, 5.442e-02, -9.210e-02, -2.027e-01), r);\n\tr = MulAdd(s2_5, M4(1.928e-02, 3.097e-01, 1.487e-01, -2.217e-01, 1.282e-01, -2.386e-02, 6.971e-03, 8.529e-02, -9.620e-03, -5.562e-02, -1.293e-01, -7.603e-02, 2.167e-02, 1.700e-01, 3.485e-02, -5.729e-02), r);\n\tr = MulAdd(s2_6, M4(-8.671e-02, 1.699e-01, 1.681e-01, 5.908e-02, -4.252e-03, -3.336e-02, 1.989e-01, 3.247e-02, 4.496e-02, -6.578e-02, -1.127e-01, -1.141e-01, -1.770e-01, -1.885e-01, 3.977e-02, 7.611e-02), r);\n\tr = MulAdd(s2_7, M4(-1.079e-01, -8.983e-02, -1.298e-01, 1.607e-01, -1.065e-01, 1.661e-02, -7.341e-02, -4.099e-02, 2.815e-02, 1.428e-01, 7.976e-02, -2.694e-02, 2.546e-01, -4.262e-02, 6.669e-02, 4.667e-02), r);\n\tr = MulAdd(s2_8, M4(-7.842e-02, -1.926e-01, 1.274e-02, -1.604e-02, 1.094e-02, 6.732e-02, 3.969e-02, 7.989e-03, -4.900e-02, -1.781e-01, -2.337e-02, -1.487e-02, 1.947e-01, -2.330e-01, 1.304e-01, -1.592e-02), r);\n\tr = MulAdd(s3_0, M4(-1.820e-01, -7.021e-02, -8.828e-02, 7.994e-02, 9.838e-02, -7.559e-02, -6.619e-02, 6.800e-02, -9.744e-03, -6.037e-02, 1.779e-02, -4.527e-02, 3.634e-02, 3.175e-01, 2.481e-03, -1.218e-01), r);\n\tr = MulAdd(s3_1, M4(-3.103e-02, 3.963e-02, -7.307e-02, 4.523e-02, -1.794e-01, -3.067e-01, 1.376e-01, 1.912e-01, 9.885e-02, -5.196e-02, -8.585e-02, 9.436e-02, -1.400e-01, 8.002e-02, -5.219e-03, 5.146e-02), r);\n\tr = MulAdd(s3_2, M4(1.009e-01, 1.692e-01, 1.049e-01, -9.813e-03, 8.228e-02, 7.716e-02, 3.513e-01, -1.930e-01, -8.766e-02, -7.978e-02, -2.276e-01, -7.862e-02, -1.635e-02, 1.706e-01, -1.281e-01, 5.733e-02), r);\n\tr = MulAdd(s3_3, M4(-1.142e-01, -1.328e-01, -6.850e-02, -7.040e-02, -1.122e-01, 1.799e-01, 2.511e-01, 9.606e-02, -9.700e-02, -2.469e-01, 2.237e-01, -2.198e-01, 3.658e-02, -6.923e-02, 1.219e-01, 7.830e-02), r);\n\tr = MulAdd(s3_4, M4(1.073e-01, -1.174e-01, 1.235e-02, 1.604e-01, 3.105e-01, -1.302e-02, 3.550e-01, -1.716e-01, 1.775e-01, 2.759e-02, 1.459e-02, 1.077e-01, 3.152e-03, -1.262e-01, -3.016e-02, -1.051e-01), r);\n\tr = MulAdd(s3_5, M4(-4.056e-02, 3.065e-02, 9.051e-02, 1.969e-01, 1.910e-01, 2.110e-01, 5.586e-02, 7.756e-02, -1.644e-01, -1.751e-01, -6.551e-02, 4.693e-02, -8.392e-02, 1.207e-01, -9.491e-02, 9.841e-02), r);\n\tr = MulAdd(s3_6, M4(4.175e-02, -1.885e-02, -3.087e-02, -3.164e-01, 7.055e-04, 1.036e-01, -1.606e-01, -6.494e-02, 2.920e-01, -4.953e-01, 1.364e-01, 2.848e-02, 2.253e-02, 7.942e-02, 1.192e-01, -3.001e-02), r);\n\tr = MulAdd(s3_7, M4(3.773e-03, -4.945e-02, 5.913e-02, -1.400e-01, 1.157e-01, 9.907e-02, -5.604e-02, 8.307e-02, 1.586e-01, 9.916e-02, -1.486e-02, 3.248e-01, 1.851e-01, -7.099e-02, 8.477e-02, 4.372e-02), r);\n\tr = MulAdd(s3_8, M4(-2.045e-02, -7.855e-02, -4.495e-02, 6.078e-02, -6.315e-02, -7.862e-02, -1.406e-01, 3.674e-02, -1.628e-01, 1.351e-01, -6.527e-02, -6.756e-03, 6.466e-02, 1.532e-02, 4.055e-02, -3.032e-02), r);\n\tr = MulAdd(s4_0, M4(-1.499e-01, -7.250e-02, -6.480e-02, 1.274e-01, 2.127e-01, -3.638e-02, -1.541e-01, 1.998e-02, -1.626e-01, -1.542e-02, -2.297e-01, -4.711e-02, 1.672e-01, 1.783e-01, 1.519e-01, -2.619e-02), r);\n\tr = MulAdd(s4_1, M4(-1.092e-01, -8.656e-02, 1.802e-01, -7.827e-02, -4.769e-02, -3.521e-01, -6.076e-02, -1.028e-01, 9.007e-02, 7.495e-02, 1.750e-01, -1.573e-02, -9.365e-02, -1.703e-01, -2.072e-01, -3.748e-02), r);\n\tr = MulAdd(s4_2, M4(4.518e-02, -2.296e-02, -1.432e-01, 5.951e-02, 2.120e-01, -1.424e-01, 1.259e-01, 1.291e-01, 1.397e-01, 2.877e-01, 2.697e-01, -2.689e-02, 7.480e-03, 1.533e-01, -1.073e-01, 6.312e-02), r);\n\tr = MulAdd(s4_3, M4(-3.880e-02, -4.093e-02, 4.001e-02, -8.178e-02, -6.328e-02, -7.422e-02, 9.309e-02, 2.872e-02, -2.817e-01, 2.359e-01, -1.395e-01, -2.873e-01, -8.667e-02, 1.968e-01, 7.938e-02, -1.771e-02), r);\n\tr = MulAdd(s4_4, M4(-2.421e-02, -8.792e-02, 4.204e-02, 3.885e-02, -8.507e-02, -1.308e-01, -1.262e-01, -2.356e-01, 1.499e-01, 1.452e-01, 1.380e-01, 2.543e-01, 1.627e-02, -1.195e-01, 5.032e-02, -1.295e-02), r);\n\tr = MulAdd(s4_5, M4(1.467e-02, 1.872e-01, 5.851e-02, -1.954e-02, 1.338e-01, -5.445e-02, -9.792e-02, -1.148e-01, -9.106e-02, 7.280e-02, 1.391e-02, -1.308e-01, -3.100e-02, 9.612e-02, 5.221e-02, 1.605e-02), r);\n\tr = MulAdd(s4_6, M4(5.990e-02, -4.208e-02, -1.734e-01, -1.367e-01, -7.889e-02, 1.409e-01, -5.239e-02, -5.982e-02, 1.043e-01, 3.526e-03, 2.075e-03, -2.397e-01, 8.369e-02, 3.376e-02, 7.339e-02, 2.281e-01), r);\n\tr = MulAdd(s4_7, M4(2.764e-01, -1.796e-01, 1.455e-01, -3.286e-02, -4.900e-02, -1.909e-02, -2.249e-02, -9.996e-02, -3.512e-02, -1.206e-01, 1.847e-02, 2.303e-02, -6.943e-02, -1.329e-01, -7.892e-02, -7.028e-02), r);\n\tr = MulAdd(s4_8, M4(4.555e-02, 1.136e-01, 1.246e-02, -1.455e-01, -4.663e-02, -2.871e-02, -2.046e-01, -1.446e-01, -2.253e-01, 2.763e-02, -1.004e-01, 2.980e-03, 7.329e-02, -1.165e-01, -2.569e-02, -1.452e-01), r);\n\tr = MulAdd(s5_0, M4(1.021e-01, -4.993e-01, -3.943e-01, -3.816e-02, -1.130e-01, -9.294e-02, -1.374e-01, -2.294e-02, 1.072e-01, 4.437e-02, -4.967e-02, 2.527e-03, -5.801e-02, 5.197e-01, -6.761e-02, -7.898e-02), r);\n\tr = MulAdd(s5_1, M4(1.401e-01, -1.985e-02, -2.018e-01, -2.551e-01, -3.057e-01, -8.481e-02, 7.933e-02, -2.035e-01, 4.128e-02, -2.439e-01, 1.204e-01, -5.914e-02, -1.325e-01, 1.267e-01, 6.798e-02, 1.577e-01), r);\n\tr = MulAdd(s5_2, M4(-5.245e-02, -9.068e-02, 4.098e-03, -1.682e-03, -2.397e-01, 3.945e-02, -2.103e-02, 6.739e-02, 9.228e-02, -1.101e-01, 3.726e-01, 7.907e-02, -1.078e-01, -1.618e-01, -8.862e-02, -2.620e-02), r);\n\tr = MulAdd(s5_3, M4(-4.351e-01, -1.867e-01, -1.876e-01, -1.895e-01, 7.828e-03, -1.009e-01, 8.182e-02, 2.871e-03, 1.487e-01, 5.502e-02, -2.857e-02, -1.281e-01, 8.090e-02, 2.686e-01, 8.667e-02, 5.965e-02), r);\n\tr = MulAdd(s5_4, M4(-1.018e-01, -1.264e-01, -3.769e-02, 4.907e-02, -2.531e-01, -1.157e-02, -2.996e-04, -1.775e-01, 6.139e-02, 1.082e-01, 5.053e-02, 1.333e-01, -3.971e-02, 5.975e-02, 6.767e-02, -1.828e-01), r);\n\tr = MulAdd(s5_5, M4(1.820e-01, 1.515e-01, 1.530e-02, 1.505e-01, -9.685e-02, 4.150e-02, 2.998e-02, -1.715e-01, -5.765e-02, -2.729e-02, -5.637e-03, 9.204e-02, -2.588e-02, -4.561e-01, -4.315e-02, -8.377e-02), r);\n\tr = MulAdd(s5_6, M4(8.928e-02, 1.850e-01, -1.260e-01, 1.848e-01, -4.262e-02, -5.891e-02, -6.487e-02, 9.753e-02, 5.160e-02, -6.055e-02, 1.049e-01, 9.045e-02, -9.491e-02, 5.606e-02, -1.062e-01, 2.199e-01), r);\n\tr = MulAdd(s5_7, M4(1.982e-02, 1.538e-01, -1.591e-01, 3.782e-03, -7.732e-02, 2.261e-01, -9.981e-02, 9.836e-02, 3.086e-02, -1.224e-01, -7.203e-02, -4.307e-02, 9.526e-02, 5.374e-02, -8.144e-02, 1.073e-01), r);\n\tr = MulAdd(s5_8, M4(-3.075e-01, -2.543e-02, 1.095e-01, -9.644e-02, -5.159e-02, 8.254e-03, -9.783e-02, 7.402e-02, -2.176e-01, -1.525e-02, 1.419e-02, 5.681e-02, 7.628e-03, -1.650e-01, 1.085e-01, -7.338e-03), r);\n\tr = MulAdd(s6_0, M4(1.741e-02, 2.125e-01, 1.168e-01, -4.260e-02, 1.296e-01, 1.149e-01, -1.442e-01, -8.121e-03, -2.016e-02, -1.870e-02, 5.396e-02, 1.021e-01, -1.165e-02, 1.188e-01, -9.040e-03, -3.638e-02), r);\n\tr = MulAdd(s6_1, M4(2.115e-01, 3.941e-01, 2.957e-02, 1.120e-01, 7.739e-02, 3.555e-02, -3.015e-02, -9.409e-02, -1.270e-01, 2.272e-01, 7.447e-02, 9.663e-03, -9.259e-02, -1.570e-01, 1.401e-01, -2.905e-02), r);\n\tr = MulAdd(s6_2, M4(5.055e-02, -2.221e-01, 9.541e-02, 3.872e-01, -1.639e-01, -2.329e-02, 4.069e-02, 1.590e-02, -8.454e-02, -2.204e-03, -6.812e-02, 1.247e-01, 2.795e-02, 8.716e-02, 2.249e-01, -1.203e-01), r);\n\tr = MulAdd(s6_3, M4(9.096e-02, 2.607e-01, 1.479e-02, -8.888e-05, 1.222e-01, 8.601e-02, -5.109e-02, 7.726e-02, 1.441e-01, -2.092e-01, 1.506e-01, 1.928e-02, -6.446e-02, 2.402e-01, -2.574e-01, -2.931e-02), r);\n\tr = MulAdd(s6_4, M4(-1.233e-01, 1.028e-01, -4.458e-02, 4.378e-01, -3.634e-02, 1.858e-01, 2.470e-02, -2.198e-01, -2.388e-01, 5.963e-02, 5.429e-01, -1.237e-01, -1.648e-01, 3.738e-02, -3.718e-01, 3.435e-02), r);\n\tr = MulAdd(s6_5, M4(1.562e-01, -3.674e-01, 1.336e-01, -2.522e-01, -4.597e-02, 6.303e-03, 9.126e-02, -2.470e-02, -9.233e-02, -6.120e-02, 1.047e-01, 8.981e-02, 1.036e-01, 1.669e-01, 2.349e-02, -2.290e-02), r);\n\tr = MulAdd(s6_6, M4(-6.684e-03, -2.623e-01, -1.988e-01, 7.140e-02, 3.641e-02, 1.881e-02, -5.311e-02, 1.847e-01, -5.423e-02, 1.317e-01, -8.327e-02, -6.475e-02, -2.640e-02, -1.547e-01, 2.943e-01, 1.121e-01), r);\n\tr = MulAdd(s6_7, M4(2.161e-01, -2.097e-01, 8.820e-02, 2.329e-01, -9.084e-03, -6.403e-02, 8.263e-02, 1.153e-01, -1.475e-01, -2.645e-02, -1.344e-01, 1.451e-01, -1.776e-01, -2.007e-01, 2.800e-02, 7.088e-01), r);\n\tr = MulAdd(s6_8, M4(1.772e-01, -2.968e-01, -8.142e-02, -2.700e-01, -3.186e-02, -3.387e-02, 7.155e-02, 8.385e-02, -8.074e-02, -6.685e-02, -1.783e-01, 2.027e-01, -5.418e-02, 7.905e-03, 1.838e-01, -1.703e-02), r);\n\tr = MulAdd(s7_0, M4(-8.795e-03, 8.697e-02, -1.522e-02, -4.836e-02, 2.736e-01, -3.156e-02, 2.585e-02, -7.371e-02, -8.043e-02, -9.909e-02, 1.712e-01, 9.713e-03, 1.880e-01, 2.281e-02, -4.252e-02, 3.635e-02), r);\n\tr = MulAdd(s7_1, M4(-2.456e-01, -3.123e-02, -8.438e-02, 5.096e-02, 2.406e-02, 5.820e-02, 1.871e-01, 9.246e-02, -4.854e-02, -1.220e-02, 8.671e-02, -8.788e-02, 9.197e-02, -1.051e-02, -1.603e-02, 7.826e-03), r);\n\tr = MulAdd(s7_2, M4(-1.740e-01, -1.295e-01, -7.792e-02, 3.404e-02, -1.469e-01, -7.475e-02, 5.725e-02, -2.245e-01, -5.151e-02, -2.124e-02, -8.004e-02, 7.175e-02, 1.452e-02, 1.684e-01, -1.166e-01, -4.261e-02), r);\n\tr = MulAdd(s7_3, M4(-2.162e-02, 6.368e-02, 4.331e-02, 3.686e-02, 4.560e-01, 3.422e-02, -7.137e-02, -1.088e-01, 6.296e-02, -1.548e-01, 2.900e-01, 2.713e-02, 2.923e-01, -1.117e-01, 9.811e-02, -5.212e-02), r);\n\tr = MulAdd(s7_4, M4(-1.214e-01, -1.009e-01, -1.105e-01, -1.741e-01, -3.244e-01, 2.416e-02, -1.582e-01, -2.779e-01, 3.225e-02, -1.660e-01, 7.940e-02, 1.323e-01, 1.905e-01, -4.041e-02, 6.546e-03, -9.449e-02), r);\n\tr = MulAdd(s7_5, M4(-8.208e-02, -3.476e-02, -9.438e-02, -1.004e-01, -2.276e-02, 4.244e-01, -2.006e-02, -1.780e-01, -6.147e-02, 3.855e-02, 2.678e-02, -7.125e-02, 1.039e-01, -2.048e-02, -1.289e-01, -2.667e-02), r);\n\tr = MulAdd(s7_6, M4(3.593e-02, -2.194e-02, -7.869e-02, -1.356e-01, -4.294e-02, -6.255e-02, 1.837e-01, 3.174e-01, -4.049e-02, 1.013e-02, 9.296e-02, 1.090e-01, 7.926e-02, -7.720e-02, -1.803e-01, 5.508e-02), r);\n\tr = MulAdd(s7_7, M4(-2.289e-02, -5.673e-02, 2.362e-02, 2.427e-01, 7.482e-03, -3.263e-01, 3.090e-01, 3.126e-01, -5.159e-02, 1.584e-01, -1.165e-01, 3.172e-01, 2.170e-01, -7.058e-02, 8.322e-02, -4.230e-02), r);\n\tr = MulAdd(s7_8, M4(-4.434e-02, 8.279e-02, -1.851e-01, 7.341e-02, -5.335e-02, 1.912e-01, 3.554e-01, 4.142e-02, 4.895e-02, 3.337e-03, 1.815e-01, -5.542e-02, -2.550e-02, -7.432e-02, -2.534e-02, -3.253e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.183e-02, 2.789e-02, -4.360e-02, 1.810e-03 };\n\tr = MulAdd(s0_0, M4(-7.087e-02, 6.239e-02, 5.798e-02, 8.463e-02, 2.003e-01, 1.054e-01, -5.041e-02, -9.348e-02, -1.609e-01, 7.109e-02, 1.378e-01, -1.261e-01, -1.773e-01, -1.247e-01, -1.533e-01, -3.260e-02), r);\n\tr = MulAdd(s0_1, M4(-5.111e-02, -8.474e-02, -1.873e-01, -1.267e-01, -8.925e-03, 5.333e-02, -2.662e-01, -1.796e-01, -1.243e-02, 2.119e-02, -1.518e-02, -6.461e-02, 5.907e-02, 3.671e-04, -4.520e-02, 4.513e-02), r);\n\tr = MulAdd(s0_2, M4(6.582e-03, -1.185e-02, -4.998e-02, -3.709e-02, -2.846e-02, 4.560e-02, -1.383e-02, -1.422e-01, -5.102e-02, -7.843e-02, -4.691e-02, -1.638e-01, 1.126e-01, -1.427e-01, 7.998e-02, 6.866e-02), r);\n\tr = MulAdd(s0_3, M4(1.005e-01, 9.193e-02, 1.235e-02, -2.497e-02, 8.452e-02, 7.020e-02, 1.421e-01, 8.788e-02, 8.692e-02, -8.267e-02, -6.585e-05, 1.645e-01, -4.443e-02, -9.324e-02, -2.148e-01, 1.671e-01), r);\n\tr = MulAdd(s0_4, M4(4.984e-02, 1.531e-01, -8.617e-02, -2.485e-02, -1.843e-01, 7.348e-02, 6.349e-02, 2.055e-01, 2.145e-02, -5.108e-02, -4.078e-02, 9.661e-02, 8.807e-02, -5.728e-02, 6.109e-03, 2.942e-01), r);\n\tr = MulAdd(s0_5, M4(-9.202e-02, -9.519e-02, 1.117e-01, -4.526e-02, -2.775e-01, 7.643e-02, 1.403e-02, 2.340e-02, -1.074e-02, -1.436e-01, 7.396e-03, 1.238e-03, 1.729e-01, 2.339e-02, 1.535e-01, -8.622e-02), r);\n\tr = MulAdd(s0_6, M4(1.005e-02, -3.189e-02, 9.263e-02, 3.803e-02, 1.789e-01, -1.022e-01, 6.633e-02, -7.069e-03, -5.458e-02, 3.946e-02, -1.137e-01, -7.933e-02, -8.455e-02, 9.216e-02, 5.908e-03, -6.718e-02), r);\n\tr = MulAdd(s0_7, M4(1.734e-01, -4.896e-02, 1.712e-01, 9.361e-03, 3.362e-02, 9.108e-02, 4.730e-01, 2.667e-01, -5.602e-02, -1.280e-01, 1.817e-01, -7.983e-02, 5.922e-03, -1.085e-02, -7.856e-02, 4.042e-02), r);\n\tr = MulAdd(s0_8, M4(4.479e-02, -5.251e-02, 3.659e-03, -6.087e-02, -2.521e-02, -9.217e-02, 1.009e-01, 5.147e-02, 7.763e-02, 9.779e-02, -1.913e-02, -1.032e-02, -5.252e-02, -2.632e-02, 6.120e-02, -4.011e-02), r);\n\tr = MulAdd(s1_0, M4(1.749e-01, 4.373e-02, 1.850e-01, -1.322e-03, 7.954e-02, 1.727e-02, -1.852e-01, 4.827e-02, 1.903e-01, -1.351e-01, 9.082e-02, -7.283e-02, -1.823e-01, 5.595e-02, -2.808e-02, -9.443e-03), r);\n\tr = MulAdd(s1_1, M4(-1.981e-02, 8.999e-02, -2.314e-01, -1.194e-01, 1.176e-01, 2.058e-02, -1.970e-02, -6.448e-02, -1.178e-02, 1.526e-01, 9.951e-02, 2.790e-02, 3.800e-02, 2.846e-01, 1.088e-01, -9.929e-02), r);\n\tr = MulAdd(s1_2, M4(-2.137e-03, -9.093e-02, -8.969e-02, -7.525e-02, 2.343e-01, -8.973e-02, -9.970e-02, 7.148e-02, 1.542e-01, 4.977e-02, -1.556e-01, 6.833e-02, -2.306e-02, 9.185e-02, -1.417e-01, 3.659e-02), r);\n\tr = MulAdd(s1_3, M4(-9.093e-04, 8.085e-02, 1.412e-01, -2.497e-01, -1.439e-01, 9.891e-02, 2.928e-02, 1.516e-01, 4.379e-03, -4.236e-02, 2.203e-02, -8.157e-02, 7.379e-02, -1.329e-01, 2.084e-01, -7.908e-02), r);\n\tr = MulAdd(s1_4, M4(-9.692e-02, 2.172e-01, -5.032e-03, -4.059e-01, -1.811e-01, -1.188e-01, -6.957e-02, 2.046e-01, 2.704e-01, -2.443e-01, 2.411e-01, -4.141e-02, -1.404e-01, -1.501e-01, 3.869e-02, 1.738e-01), r);\n\tr = MulAdd(s1_5, M4(1.970e-01, -4.060e-01, -2.504e-01, 2.264e-01, 2.595e-02, -1.535e-01, 1.830e-01, 6.851e-02, -6.238e-02, -3.365e-01, -2.264e-01, -7.431e-03, -4.215e-02, 1.390e-01, -4.475e-01, -1.452e-01), r);\n\tr = MulAdd(s1_6, M4(-2.510e-01, 1.528e-02, 4.968e-02, -2.842e-01, -3.769e-02, 9.383e-02, -8.688e-02, -1.122e-01, -1.430e-01, 5.863e-02, -5.752e-02, 1.801e-01, 1.882e-01, 6.842e-02, 2.072e-01, -2.585e-02), r);\n\tr = MulAdd(s1_7, M4(-3.887e-02, -5.653e-02, 4.207e-02, -8.963e-02, -5.419e-02, 2.145e-02, 1.625e-01, 1.640e-02, -4.333e-03, 1.425e-02, 1.677e-01, 3.464e-01, 1.892e-01, 1.811e-02, 2.237e-02, -1.581e-02), r);\n\tr = MulAdd(s1_8, M4(1.410e-01, -2.081e-01, -4.614e-02, 6.339e-02, 5.790e-02, 1.528e-02, -1.789e-01, -3.247e-02, 2.894e-01, -1.078e-01, 6.089e-02, 6.678e-02, 8.685e-02, 1.617e-02, -9.748e-02, -1.817e-02), r);\n\tr = MulAdd(s2_0, M4(-2.281e-01, 1.145e-01, 1.690e-01, 3.860e-03, -2.416e-02, 3.134e-02, 3.746e-02, 9.753e-02, -1.249e-02, -2.384e-02, -6.270e-02, -1.023e-01, 9.561e-02, 1.324e-01, 2.370e-02, -1.242e-01), r);\n\tr = MulAdd(s2_1, M4(2.798e-02, 2.944e-02, -1.391e-01, -2.065e-02, 1.531e-02, 8.454e-03, 5.738e-02, -8.349e-02, 1.830e-02, -4.295e-02, -1.300e-01, 3.290e-02, -7.138e-02, -6.105e-02, -1.993e-01, 1.054e-01), r);\n\tr = MulAdd(s2_2, M4(1.498e-01, -2.510e-02, 6.616e-02, -8.944e-02, -3.445e-02, 1.348e-01, -5.942e-02, 9.708e-02, 1.031e-01, 2.463e-02, 5.985e-03, -7.200e-02, 3.105e-01, -1.207e-01, 3.550e-02, -1.467e-01), r);\n\tr = MulAdd(s2_3, M4(2.385e-02, 1.033e-01, -4.184e-02, 1.449e-01, -1.506e-01, -1.277e-01, 2.225e-01, -1.859e-01, -1.908e-01, -1.564e-01, 7.764e-02, -1.052e-01, -1.490e-02, 1.196e-01, 3.107e-01, -2.853e-02), r);\n\tr = MulAdd(s2_4, M4(-8.772e-02, -4.082e-02, -2.519e-01, 2.430e-01, 3.050e-01, -1.207e-01, 2.054e-02, -1.949e-01, 8.330e-02, 1.593e-01, -1.335e-01, -9.296e-02, -6.047e-01, 9.570e-02, -1.153e-01, 3.585e-01), r);\n\tr = MulAdd(s2_5, M4(-1.555e-01, -9.061e-02, -1.124e-01, 1.400e-01, 5.122e-03, -4.839e-02, -4.809e-02, 5.546e-02, 1.789e-01, 4.024e-02, -8.952e-02, 4.942e-02, -1.059e-01, -8.778e-02, -2.437e-01, 5.702e-02), r);\n\tr = MulAdd(s2_6, M4(9.926e-02, -9.385e-03, 1.125e-01, 9.954e-03, -7.612e-02, 8.703e-02, 5.513e-02, 2.757e-03, -7.221e-02, 4.016e-02, -5.296e-03, -1.003e-01, 5.334e-01, -3.056e-02, -3.064e-01, 7.117e-03), r);\n\tr = MulAdd(s2_7, M4(-2.532e-01, -4.781e-02, 9.780e-02, -8.244e-02, 2.035e-02, 4.577e-03, -1.115e-01, -6.034e-02, -2.605e-01, -8.794e-02, 3.998e-01, 5.975e-02, -1.221e-01, -4.130e-03, -1.800e-01, -1.644e-01), r);\n\tr = MulAdd(s2_8, M4(-5.837e-02, -1.843e-01, -2.463e-02, -2.233e-01, -1.517e-01, -5.376e-02, -1.700e-01, 5.567e-02, 6.757e-02, -1.117e-01, 4.710e-04, 1.177e-01, -1.470e-01, -1.264e-01, -3.143e-01, -1.695e-01), r);\n\tr = MulAdd(s3_0, M4(1.737e-02, 1.084e-01, 1.796e-01, 3.595e-02, -1.737e-01, 8.785e-04, -2.436e-01, -4.031e-02, -1.042e-01, 4.849e-02, 1.806e-02, -9.414e-02, -2.708e-01, 9.794e-02, -1.460e-01, 3.161e-02), r);\n\tr = MulAdd(s3_1, M4(1.500e-01, -1.101e-01, -2.117e-01, 1.373e-01, 2.621e-01, -8.611e-02, -1.486e-02, 4.369e-02, -3.867e-02, -6.837e-02, -4.205e-01, 2.570e-03, 4.208e-02, 1.402e-01, 2.627e-01, 7.434e-02), r);\n\tr = MulAdd(s3_2, M4(5.101e-02, 4.293e-02, 1.221e-01, 2.186e-02, -1.894e-02, -1.332e-01, -2.449e-01, 3.077e-02, 1.728e-01, 8.873e-02, -1.142e-01, 3.216e-02, 9.510e-02, -2.458e-02, 9.526e-02, -4.923e-02), r);\n\tr = MulAdd(s3_3, M4(-7.877e-02, -2.980e-02, 1.517e-01, -4.755e-02, 3.299e-02, -1.722e-02, 6.496e-04, 2.745e-01, -3.029e-01, 2.031e-02, 4.097e-02, 4.456e-02, 1.630e-01, -6.488e-02, 2.990e-01, -5.979e-02), r);\n\tr = MulAdd(s3_4, M4(2.165e-01, -1.397e-01, -8.698e-02, 6.277e-02, -1.256e-01, 2.055e-01, 1.409e-01, 2.895e-01, 5.554e-01, 2.140e-01, -1.626e-01, 8.477e-02, -4.270e-01, 1.513e-01, -1.548e-01, -1.152e-01), r);\n\tr = MulAdd(s3_5, M4(-6.026e-02, -1.783e-02, 1.314e-01, -6.727e-02, -2.205e-01, -1.427e-01, 2.454e-01, 3.660e-02, -8.011e-02, -6.024e-02, 2.695e-01, 2.440e-01, 2.838e-02, -5.347e-02, -4.060e-02, 8.471e-03), r);\n\tr = MulAdd(s3_6, M4(-2.508e-01, 2.804e-01, 2.255e-02, -2.307e-01, 1.237e-02, 2.406e-02, 2.628e-01, 8.921e-02, -2.000e-01, 7.200e-02, 3.133e-01, -4.548e-01, 8.203e-02, -1.264e-01, -3.128e-03, 1.769e-01), r);\n\tr = MulAdd(s3_7, M4(7.194e-02, 2.412e-02, -7.567e-02, 8.308e-02, -2.699e-01, 9.371e-02, 1.981e-01, 9.185e-02, 4.334e-02, -4.782e-02, -3.260e-01, -1.932e-01, 2.238e-01, 1.088e-01, -1.397e-02, 9.171e-02), r);\n\tr = MulAdd(s3_8, M4(-5.989e-02, 2.174e-02, 1.074e-01, 7.843e-02, 2.823e-01, 2.629e-02, -2.285e-02, 1.446e-01, 1.295e-02, 1.623e-01, -4.525e-02, 1.443e-01, -1.739e-01, 1.968e-02, 1.531e-01, -1.264e-03), r);\n\tr = MulAdd(s4_0, M4(3.647e-02, -1.538e-01, -2.943e-02, 1.765e-02, 3.218e-03, 8.694e-02, -1.315e-01, -6.913e-03, 3.649e-01, 1.162e-01, -1.007e-02, -7.707e-02, 5.933e-02, -7.162e-02, -1.167e-01, -4.503e-02), r);\n\tr = MulAdd(s4_1, M4(-2.816e-02, -1.272e-03, 1.170e-01, -2.845e-02, 3.693e-01, -1.619e-01, -6.193e-02, -1.078e-01, -2.879e-01, -8.741e-02, 1.235e-02, 3.369e-01, -2.247e-01, 1.600e-01, 2.450e-01, 1.223e-01), r);\n\tr = MulAdd(s4_2, M4(1.452e-01, -7.362e-02, -1.782e-01, 8.628e-03, -1.430e-01, 1.576e-01, -1.538e-01, 9.937e-02, -1.037e-03, 8.466e-02, -7.769e-03, 1.498e-01, -7.806e-02, -1.294e-01, -2.572e-02, 1.327e-01), r);\n\tr = MulAdd(s4_3, M4(-5.415e-02, -1.741e-01, 5.747e-02, -2.019e-02, 1.861e-01, -6.486e-02, 1.126e-01, 2.221e-01, 1.252e-01, -3.269e-02, -1.470e-01, -1.061e-01, -3.489e-02, -4.614e-02, -4.317e-02, 2.373e-02), r);\n\tr = MulAdd(s4_4, M4(-1.777e-01, 2.710e-02, -3.992e-02, -1.750e-01, -1.067e-01, -1.050e-01, -3.173e-01, 1.977e-01, 1.913e-01, 1.056e-01, 6.696e-02, -3.033e-01, 9.398e-02, -6.405e-03, -9.652e-03, 3.989e-02), r);\n\tr = MulAdd(s4_5, M4(3.614e-02, -2.415e-02, -7.483e-02, 1.032e-01, -2.156e-01, 3.760e-01, -2.740e-01, -9.042e-02, -2.041e-01, 1.055e-01, 2.293e-01, -8.301e-02, -1.113e-01, 8.617e-03, -2.125e-02, -9.272e-02), r);\n\tr = MulAdd(s4_6, M4(9.263e-02, -6.307e-02, 5.636e-02, -2.100e-02, -1.294e-01, -7.647e-03, -4.177e-02, -3.614e-02, -5.024e-01, -9.556e-02, -1.460e-01, -1.035e-01, -5.274e-02, -3.602e-02, 7.783e-02, 7.514e-02), r);\n\tr = MulAdd(s4_7, M4(1.637e-01, 1.444e-01, 4.168e-02, -1.246e-01, 8.515e-02, -1.587e-01, -2.420e-01, -2.454e-01, 1.013e-01, 2.599e-01, 3.772e-01, 6.808e-02, -6.795e-02, 1.837e-01, 6.424e-02, -2.261e-02), r);\n\tr = MulAdd(s4_8, M4(-9.780e-02, -2.525e-02, 1.251e-01, 1.286e-01, 2.938e-01, -4.910e-02, -6.868e-02, -4.813e-02, 1.199e-01, 1.295e-01, -3.079e-01, 8.940e-02, -3.757e-03, -1.445e-01, 9.543e-02, 1.553e-01), r);\n\tr = MulAdd(s5_0, M4(1.186e-01, -2.205e-02, -3.427e-01, -3.424e-01, 1.843e-02, 6.114e-02, -1.087e-01, -7.415e-03, 3.993e-02, 2.651e-02, 1.467e-01, 6.105e-04, -1.080e-01, 1.258e-01, -1.729e-01, -7.216e-03), r);\n\tr = MulAdd(s5_1, M4(-2.679e-01, 5.804e-02, -1.816e-01, 2.207e-01, -2.009e-01, -1.762e-02, 3.188e-02, -1.822e-01, 5.268e-02, -6.641e-02, 2.279e-01, 7.508e-02, 3.310e-02, 8.985e-02, -1.834e-01, -3.886e-02), r);\n\tr = MulAdd(s5_2, M4(1.843e-02, 1.547e-01, -3.799e-01, 5.699e-02, 3.773e-01, 1.677e-01, -9.834e-02, 7.512e-02, -2.524e-01, 1.043e-01, -3.282e-02, 4.121e-02, 1.174e-01, 3.207e-03, -1.808e-01, -3.663e-02), r);\n\tr = MulAdd(s5_3, M4(-5.561e-02, 4.176e-01, -2.231e-01, 1.208e-01, -2.510e-01, -8.773e-02, 9.459e-02, -5.313e-02, 1.463e-01, -1.630e-01, -4.437e-02, -8.088e-02, -4.934e-01, -6.573e-02, 8.557e-02, -4.096e-02), r);\n\tr = MulAdd(s5_4, M4(8.186e-02, -1.844e-01, 1.705e-01, 7.483e-02, -2.746e-01, -6.372e-02, 6.459e-02, -1.048e-01, 2.139e-01, -1.889e-02, -2.934e-01, -2.557e-01, 2.013e-01, -1.773e-01, 1.988e-01, 1.563e-01), r);\n\tr = MulAdd(s5_5, M4(-4.151e-03, 3.976e-02, 8.492e-02, -6.545e-02, 2.319e-01, 1.423e-01, -1.815e-02, 3.074e-02, -5.575e-02, 1.540e-02, -6.605e-02, -1.032e-03, 1.375e-01, 4.536e-02, 1.015e-01, -1.465e-01), r);\n\tr = MulAdd(s5_6, M4(3.149e-02, -1.012e-01, -5.762e-01, 3.408e-01, 4.326e-02, 5.614e-03, 1.175e-01, 1.259e-02, 4.803e-02, -1.723e-01, -1.382e-01, 1.344e-01, 4.600e-01, -1.617e-01, -2.588e-01, 1.638e-01), r);\n\tr = MulAdd(s5_7, M4(2.048e-01, 4.332e-02, 1.848e-01, -3.604e-01, -2.261e-01, -1.508e-01, -6.950e-03, 9.758e-02, -6.281e-02, -8.408e-02, 4.513e-02, -9.105e-02, -3.698e-01, 4.274e-02, -1.901e-01, -5.405e-03), r);\n\tr = MulAdd(s5_8, M4(-1.685e-01, 4.163e-02, 3.980e-02, -1.844e-01, -4.091e-02, 7.826e-02, -1.567e-02, 1.459e-01, -2.282e-02, 7.285e-02, -3.953e-01, 1.006e-01, 7.857e-03, -3.035e-02, -1.264e-01, -4.881e-02), r);\n\tr = MulAdd(s6_0, M4(4.902e-02, -1.445e-01, 2.465e-01, 3.400e-02, 2.473e-02, -1.400e-01, 1.087e-01, -7.253e-02, -1.108e-01, 1.126e-01, -3.531e-02, 1.471e-02, 5.746e-02, 2.257e-02, 1.677e-01, -1.217e-01), r);\n\tr = MulAdd(s6_1, M4(-1.741e-01, 2.362e-01, 1.354e-01, 1.540e-01, -7.186e-02, -1.081e-01, 3.640e-02, -7.877e-02, -3.734e-02, 2.443e-02, -3.647e-01, -1.431e-01, -1.476e-01, 5.666e-02, 2.071e-01, 1.688e-01), r);\n\tr = MulAdd(s6_2, M4(4.008e-01, 7.678e-02, 3.198e-01, -4.019e-02, 7.331e-02, 1.380e-01, -4.423e-02, -6.537e-02, 9.380e-02, -1.094e-02, 6.226e-02, 1.114e-01, -1.281e-01, -6.551e-02, 1.202e-01, -1.214e-01), r);\n\tr = MulAdd(s6_3, M4(-2.556e-02, 1.131e-02, -2.070e-01, 1.448e-01, -2.169e-02, -6.685e-02, 1.419e-01, 2.091e-03, -1.227e-01, 3.769e-02, 5.021e-02, 5.427e-03, 1.610e-01, -9.560e-02, 5.762e-02, 3.525e-01), r);\n\tr = MulAdd(s6_4, M4(4.889e-02, 1.146e-01, 4.403e-01, 1.301e-01, -7.739e-02, 2.461e-02, 3.249e-03, -4.671e-02, 7.585e-02, -2.600e-01, 1.391e-01, -1.733e-01, -2.416e-01, -2.492e-01, -3.474e-01, 3.281e-01), r);\n\tr = MulAdd(s6_5, M4(1.752e-01, 1.489e-01, 4.170e-01, 2.319e-02, -6.171e-02, 2.129e-01, -5.746e-02, -2.849e-02, 1.139e-01, 1.991e-01, -2.380e-01, 1.588e-01, -1.587e-01, -1.974e-01, 1.952e-01, 1.432e-01), r);\n\tr = MulAdd(s6_6, M4(-1.657e-02, 8.776e-02, 2.591e-02, -2.024e-01, 1.049e-01, -1.078e-01, 3.503e-02, -4.971e-02, -1.480e-01, -9.008e-02, -2.529e-01, 2.549e-01, 5.592e-01, -5.244e-02, 8.626e-02, 3.597e-02), r);\n\tr = MulAdd(s6_7, M4(-3.532e-02, 8.905e-02, 1.791e-01, -9.458e-02, 6.780e-02, -5.794e-02, -1.292e-01, 1.035e-02, -2.125e-01, 1.398e-01, 1.009e-01, 2.977e-02, 2.564e-01, -2.495e-01, -6.772e-01, -4.445e-01), r);\n\tr = MulAdd(s6_8, M4(-9.304e-02, 2.128e-01, 3.858e-01, 2.376e-02, 1.338e-01, 4.078e-02, -4.558e-02, 2.654e-02, 7.575e-02, -1.313e-01, 3.156e-02, -5.099e-02, -1.872e-01, 6.766e-02, -8.702e-02, -1.713e-01), r);\n\tr = MulAdd(s7_0, M4(-5.595e-02, 6.183e-02, 2.464e-01, -1.414e-01, 7.124e-02, -6.475e-02, 2.529e-01, -1.904e-01, 3.912e-02, -9.186e-02, -1.179e-01, -1.466e-01, 9.174e-03, 1.061e-02, 5.436e-02, 9.571e-02), r);\n\tr = MulAdd(s7_1, M4(-2.018e-01, -8.089e-03, -7.846e-02, -9.330e-02, -1.790e-02, 3.018e-02, 1.472e-01, -1.160e-01, -1.650e-01, -8.923e-02, -1.474e-01, -7.902e-02, 4.715e-02, 9.154e-02, 3.535e-02, 2.654e-02), r);\n\tr = MulAdd(s7_2, M4(-1.588e-01, -8.289e-02, 2.280e-03, -7.578e-02, -1.446e-01, 3.556e-01, -1.940e-01, -2.261e-01, -4.402e-02, 7.329e-03, 2.272e-02, -4.111e-02, 4.818e-02, -6.474e-02, -8.609e-02, 3.821e-03), r);\n\tr = MulAdd(s7_3, M4(1.366e-01, 2.409e-03, -5.919e-02, 5.778e-02, -2.203e-01, -1.450e-01, 5.869e-02, -1.753e-01, 9.278e-02, -3.186e-01, 1.456e-01, 2.001e-02, 1.284e-03, -3.633e-02, 6.268e-02, 3.140e-02), r);\n\tr = MulAdd(s7_4, M4(-2.500e-01, 4.451e-02, -2.156e-01, -1.797e-01, -6.846e-02, -4.157e-01, 4.179e-01, -5.199e-02, -8.430e-02, -2.177e-01, 1.486e-01, 2.498e-01, -4.685e-02, -8.815e-02, 1.002e-01, 1.469e-01), r);\n\tr = MulAdd(s7_5, M4(5.817e-02, 1.482e-01, -1.004e-01, 7.580e-02, 2.545e-01, 3.320e-01, -3.625e-01, -1.010e-01, -1.058e-01, -1.438e-02, 4.576e-02, 3.802e-02, 3.077e-01, 1.275e-01, -3.467e-01, 1.315e-01), r);\n\tr = MulAdd(s7_6, M4(7.622e-02, -9.737e-03, -5.742e-02, -8.808e-02, 2.788e-01, -8.131e-02, 2.101e-02, 2.700e-02, 2.274e-01, -4.161e-02, 2.973e-01, -2.978e-02, -1.343e-01, 5.086e-04, 2.287e-02, 5.469e-02), r);\n\tr = MulAdd(s7_7, M4(8.660e-02, -1.785e-01, -1.782e-01, 1.151e-01, -9.595e-02, -1.576e-01, -5.201e-02, 3.305e-01, -7.192e-02, 2.183e-01, 1.806e-02, -1.954e-01, -1.990e-01, 3.558e-01, 1.260e-01, 2.973e-01), r);\n\tr = MulAdd(s7_8, M4(-1.830e-01, -1.268e-01, 2.358e-02, -1.262e-02, -1.297e-02, 2.289e-01, -4.859e-02, 1.057e-01, 5.627e-02, -1.755e-02, 8.560e-02, -1.372e-01, 1.458e-01, 2.299e-02, -2.603e-01, 4.789e-02), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -6.233e-03, -4.512e-02, 8.188e-02, 1.874e-02 };\n\tr = MulAdd(s0_0, M4(5.898e-02, 1.023e-01, 5.179e-02, 3.510e-02, -4.142e-01, -5.004e-01, -2.296e-01, 1.074e-02, 6.569e-02, -1.632e-02, -4.021e-02, 2.674e-02, -1.201e-01, 2.210e-03, 1.166e-01, -2.971e-02), r);\n\tr = MulAdd(s0_1, M4(-1.003e-01, 1.235e-01, 6.209e-02, -1.355e-01, -2.316e-01, -1.078e-01, 2.680e-01, -4.341e-01, -3.042e-02, 1.843e-01, 1.914e-02, -3.570e-02, -5.369e-02, -1.635e-02, 6.805e-02, 3.052e-02), r);\n\tr = MulAdd(s0_2, M4(-1.906e-02, 6.295e-02, 5.892e-02, -1.250e-01, 2.057e-01, 1.112e-01, 2.352e-01, -2.113e-01, 1.208e-01, -6.867e-03, 4.805e-02, 7.473e-02, -6.804e-03, -1.886e-02, -1.671e-02, 2.571e-02), r);\n\tr = MulAdd(s0_3, M4(-1.429e-01, 1.016e-01, 1.189e-01, -1.123e-01, -5.401e-01, -1.508e-01, 1.473e-01, 2.299e-01, -2.651e-01, -2.545e-01, -9.793e-02, 1.652e-01, -1.913e-01, 2.026e-01, 3.793e-02, -1.470e-01), r);\n\tr = MulAdd(s0_4, M4(8.107e-02, 1.051e-01, 2.518e-01, 8.745e-02, 6.514e-01, -3.956e-01, 1.570e-01, -4.313e-01, 1.011e-01, -2.761e-01, 1.706e-01, -7.386e-02, 8.301e-02, 1.543e-01, -7.868e-03, -2.640e-01), r);\n\tr = MulAdd(s0_5, M4(4.034e-02, 1.852e-01, -8.966e-02, -7.864e-02, 5.985e-02, -3.990e-01, 4.423e-01, 3.717e-01, 2.115e-01, 7.712e-02, 1.040e-01, 7.704e-02, 5.719e-02, 3.220e-02, -4.211e-02, -3.406e-02), r);\n\tr = MulAdd(s0_6, M4(-5.175e-02, -7.418e-02, 5.758e-03, 6.788e-02, -3.265e-01, -2.676e-01, -1.584e-02, 2.578e-01, -2.691e-02, -3.379e-02, -1.588e-02, -3.627e-03, -1.053e-01, -7.474e-02, 9.695e-02, 4.017e-02), r);\n\tr = MulAdd(s0_7, M4(2.569e-02, -1.294e-01, -2.184e-01, -1.896e-01, 1.249e-01, -3.481e-01, 3.441e-01, -2.525e-01, -1.948e-02, 4.415e-02, -1.896e-01, -1.199e-01, -3.296e-02, 5.648e-04, 7.137e-02, -6.672e-02), r);\n\tr = MulAdd(s0_8, M4(-1.059e-01, -1.555e-01, -4.792e-03, -2.355e-02, 8.325e-02, -1.706e-01, 2.737e-02, -3.699e-02, 5.793e-03, -3.858e-02, 7.466e-02, -2.144e-02, -1.472e-01, -8.354e-02, 9.293e-04, 7.899e-02), r);\n\tr = MulAdd(s1_0, M4(1.214e-01, -3.888e-02, -7.692e-02, 7.518e-03, -1.114e-01, -6.412e-02, 3.779e-02, -3.651e-02, 6.508e-02, 4.873e-02, -8.752e-02, -2.748e-04, 1.274e-01, 2.137e-02, 3.784e-02, 1.540e-02), r);\n\tr = MulAdd(s1_1, M4(9.708e-02, 5.635e-02, -8.596e-02, 9.531e-02, -2.201e-02, -6.158e-02, -9.603e-02, 4.481e-02, 1.933e-01, 5.793e-02, -8.643e-02, -1.559e-01, 1.082e-01, 9.472e-02, 1.581e-01, 2.260e-01), r);\n\tr = MulAdd(s1_2, M4(-4.898e-02, -5.911e-03, 1.488e-02, 5.290e-02, 8.232e-02, -6.016e-03, 2.088e-02, -2.137e-03, -6.928e-02, 7.237e-02, 1.024e-01, 4.490e-02, 2.106e-01, 3.186e-02, 1.385e-01, 2.273e-01), r);\n\tr = MulAdd(s1_3, M4(-2.274e-03, 1.202e-01, 8.561e-02, -2.359e-03, 9.927e-03, 6.843e-02, 3.887e-02, 6.791e-02, 2.428e-02, -5.698e-02, -5.294e-02, -1.431e-02, 1.391e-01, -1.181e-01, -8.015e-02, -1.303e-01), r);\n\tr = MulAdd(s1_4, M4(1.543e-01, 2.311e-01, 5.523e-01, 4.505e-01, 1.687e-01, -1.044e-01, 2.146e-01, 7.037e-02, 3.646e-01, -8.474e-02, -2.911e-02, -3.091e-02, 1.659e-01, 1.867e-01, -1.452e-02, -9.702e-03), r);\n\tr = MulAdd(s1_5, M4(-5.954e-02, 1.475e-01, -1.169e-01, -2.935e-02, -1.248e-02, -2.545e-02, 1.196e-01, 7.875e-02, -1.230e-01, -4.100e-02, -1.244e-01, 2.200e-02, -8.112e-02, 1.377e-02, 4.385e-02, 3.784e-01), r);\n\tr = MulAdd(s1_6, M4(-6.024e-02, -1.752e-01, -4.626e-02, 1.655e-01, 1.731e-03, -7.482e-02, -1.530e-01, -7.325e-02, 5.236e-02, 1.229e-01, 3.696e-02, -4.321e-03, -1.850e-01, 2.204e-02, -2.633e-02, 3.600e-01), r);\n\tr = MulAdd(s1_7, M4(2.696e-02, -1.389e-02, 4.563e-02, -7.437e-02, -3.164e-02, 3.326e-03, -5.309e-02, -3.683e-02, 1.613e-01, 1.284e-01, -2.614e-02, -8.940e-02, -1.848e-01, -4.281e-02, 6.911e-03, 1.952e-01), r);\n\tr = MulAdd(s1_8, M4(6.517e-02, -1.205e-01, -1.575e-01, -2.235e-01, -3.822e-02, 8.424e-02, 3.246e-02, -2.478e-02, -7.266e-03, -6.509e-02, -1.253e-01, -4.156e-02, -1.074e-01, -9.996e-02, 6.088e-02, 2.346e-01), r);\n\tr = MulAdd(s2_0, M4(7.127e-02, -1.396e-02, -6.454e-03, 2.312e-01, 2.245e-01, 1.260e-01, -5.369e-02, 6.271e-02, 5.813e-03, 1.763e-01, 5.081e-02, -1.903e-02, 9.205e-02, 3.677e-02, 1.465e-02, -3.572e-02), r);\n\tr = MulAdd(s2_1, M4(-8.076e-02, 2.054e-01, -1.043e-01, 1.886e-02, 1.810e-01, 1.393e-01, 1.145e-01, 1.048e-01, 7.747e-02, 1.002e-01, 3.084e-02, -1.256e-01, 1.678e-01, -5.360e-02, 9.116e-03, -3.719e-02), r);\n\tr = MulAdd(s2_2, M4(7.671e-02, -1.683e-01, 2.119e-02, -1.963e-01, 3.664e-02, -3.882e-02, -6.431e-02, 4.355e-02, 5.644e-03, -2.142e-02, 1.063e-02, -1.070e-02, -3.074e-03, 7.798e-02, 5.430e-02, -5.788e-02), r);\n\tr = MulAdd(s2_3, M4(1.597e-01, 4.635e-03, -9.995e-02, -5.731e-02, 2.099e-01, -1.744e-01, -1.172e-01, -3.430e-02, 4.002e-02, -4.481e-02, -1.069e-01, 1.615e-03, -5.802e-03, 6.416e-02, -7.563e-03, -3.679e-03), r);\n\tr = MulAdd(s2_4, M4(-7.730e-02, 8.141e-02, 2.194e-01, 3.742e-02, -5.233e-02, -1.086e-01, 2.415e-02, -2.193e-01, -4.474e-02, -4.683e-02, -5.579e-02, 8.826e-02, 3.113e-01, -9.740e-02, 2.551e-01, 4.137e-02), r);\n\tr = MulAdd(s2_5, M4(-6.207e-02, 2.488e-02, 5.997e-02, -2.508e-01, 9.913e-02, 8.113e-02, 4.466e-02, 2.117e-01, -1.341e-02, 2.354e-02, 4.115e-02, 1.401e-02, -3.650e-02, -1.225e-01, -3.836e-02, 1.445e-01), r);\n\tr = MulAdd(s2_6, M4(1.256e-01, -7.921e-02, 5.601e-02, 1.096e-01, -1.118e-01, 2.026e-02, -9.184e-02, 5.103e-02, -5.814e-02, -1.031e-01, -1.367e-01, -8.229e-02, -1.179e-01, 4.272e-02, -2.452e-03, 1.150e-01), r);\n\tr = MulAdd(s2_7, M4(1.799e-01, 3.391e-02, 1.348e-01, 2.273e-01, 6.945e-02, 1.657e-01, 7.544e-02, -7.215e-02, -5.604e-02, -1.335e-02, 1.002e-01, 1.115e-01, 1.283e-01, 5.942e-02, -7.851e-02, 9.534e-02), r);\n\tr = MulAdd(s2_8, M4(5.800e-02, -4.717e-03, -4.043e-02, -3.308e-01, 4.501e-02, -3.996e-02, -5.832e-02, -9.447e-02, -2.623e-03, 7.341e-03, 2.828e-02, 1.066e-02, -7.222e-03, -9.796e-02, -4.808e-02, 8.999e-03), r);\n\tr = MulAdd(s3_0, M4(1.333e-01, 9.811e-02, 3.517e-02, 1.008e-02, 2.086e-01, -1.047e-01, -2.222e-02, 1.142e-01, 1.103e-01, 4.521e-02, 3.430e-01, 1.308e-01, -1.588e-02, 5.853e-02, -6.328e-02, -8.583e-02), r);\n\tr = MulAdd(s3_1, M4(-1.590e-02, 5.338e-02, 1.783e-01, -3.995e-02, -2.121e-01, -2.104e-01, -8.402e-02, -6.910e-02, -2.198e-01, -1.369e-01, 4.857e-01, -3.527e-01, 5.229e-02, 4.553e-02, 3.975e-02, 1.113e-01), r);\n\tr = MulAdd(s3_2, M4(1.378e-01, 5.009e-02, 1.147e-02, -4.811e-02, 1.995e-02, -4.220e-02, -1.434e-02, -1.682e-01, 1.375e-02, -2.277e-01, 4.034e-01, 1.324e-02, -1.265e-01, -4.825e-03, -5.124e-02, 4.928e-02), r);\n\tr = MulAdd(s3_3, M4(3.023e-01, -1.505e-01, -1.060e-01, -2.507e-02, -1.052e-01, -4.072e-03, 9.374e-02, 1.291e-01, 2.717e-02, -2.332e-02, 1.779e-01, 2.247e-01, 4.461e-02, -3.617e-02, 1.135e-01, 1.578e-01), r);\n\tr = MulAdd(s3_4, M4(6.922e-03, -7.092e-03, -7.514e-02, -1.999e-01, -7.352e-02, 9.282e-02, -4.062e-02, 4.427e-02, -2.842e-01, 5.538e-02, 1.728e-01, 6.405e-01, 5.666e-02, -1.584e-01, 2.390e-01, -1.563e-01), r);\n\tr = MulAdd(s3_5, M4(-1.542e-01, 6.271e-02, -7.880e-02, -6.906e-02, 5.749e-02, 3.161e-01, -1.099e-01, -2.815e-01, -1.928e-01, 2.556e-02, 2.316e-01, 3.207e-01, -7.350e-02, -8.937e-02, -8.128e-02, -3.217e-02), r);\n\tr = MulAdd(s3_6, M4(-1.054e-01, -6.319e-02, 1.393e-01, 1.755e-01, 1.463e-02, 4.238e-02, 1.288e-01, 2.410e-02, 6.348e-02, -9.399e-02, 5.054e-02, 1.567e-01, -9.147e-02, -9.821e-02, -5.046e-02, -9.996e-02), r);\n\tr = MulAdd(s3_7, M4(4.389e-02, 1.437e-01, 1.209e-01, -1.093e-01, -3.484e-02, -9.388e-03, -1.517e-02, 2.933e-02, 2.747e-02, -2.815e-03, 2.313e-02, 4.478e-02, -2.331e-02, -2.325e-02, 4.810e-02, 3.544e-03), r);\n\tr = MulAdd(s3_8, M4(1.622e-01, -7.435e-02, -2.240e-02, -1.503e-01, 9.484e-02, 7.273e-03, 1.479e-02, 5.303e-04, -3.781e-02, 1.331e-02, 2.239e-01, 6.487e-02, 3.113e-02, -1.109e-02, -7.214e-02, -5.213e-02), r);\n\tr = MulAdd(s4_0, M4(-1.767e-01, -1.761e-02, 5.794e-02, -2.092e-01, -1.063e-01, -6.469e-02, -1.832e-01, -2.754e-01, 6.988e-02, 4.643e-02, -8.930e-04, 2.108e-02, -1.621e-01, 1.921e-03, 9.110e-03, 5.548e-02), r);\n\tr = MulAdd(s4_1, M4(-3.711e-02, 4.007e-02, -2.122e-02, 1.410e-01, -4.001e-01, -2.502e-01, -3.357e-01, 1.560e-01, -6.828e-02, -2.182e-01, -2.920e-02, 7.451e-02, 2.454e-01, 5.595e-02, 1.532e-02, 2.326e-01), r);\n\tr = MulAdd(s4_2, M4(-3.415e-02, 1.130e-01, 1.315e-01, 9.990e-02, 2.578e-01, 3.132e-02, -2.092e-02, -4.679e-02, 1.714e-01, -6.984e-02, -3.989e-02, 6.598e-03, 2.138e-02, 5.911e-02, -1.324e-01, 2.257e-02), r);\n\tr = MulAdd(s4_3, M4(-3.899e-02, -2.317e-02, -5.292e-02, 1.811e-01, -1.660e-02, 3.567e-01, -3.313e-02, -1.344e-01, 3.119e-02, 1.979e-02, 1.413e-01, 2.558e-02, -2.075e-01, -5.004e-02, 1.268e-01, 4.136e-02), r);\n\tr = MulAdd(s4_4, M4(-1.033e-01, 1.753e-01, -3.781e-02, -1.163e-02, -1.936e-02, -7.617e-02, -1.734e-01, 3.961e-01, 2.580e-02, 2.199e-02, 3.309e-02, -1.168e-04, -1.629e-01, 2.210e-01, -1.099e-01, -6.111e-02), r);\n\tr = MulAdd(s4_5, M4(-1.314e-01, 1.596e-01, -4.496e-02, 3.517e-02, 3.716e-01, 1.264e-02, 1.556e-01, -1.134e-01, -4.923e-02, 8.925e-02, 5.157e-02, -1.111e-01, 1.235e-01, -5.074e-02, -9.965e-02, -2.354e-01), r);\n\tr = MulAdd(s4_6, M4(-2.187e-01, -8.205e-02, -5.784e-02, -1.245e-01, -1.000e-01, 9.404e-02, 7.355e-02, -5.207e-01, 2.849e-02, 4.311e-02, -2.477e-03, -1.228e-01, -7.596e-02, 3.517e-02, 5.883e-02, 6.495e-02), r);\n\tr = MulAdd(s4_7, M4(-1.546e-01, 1.033e-01, -8.544e-02, 1.434e-01, -2.261e-01, -1.058e-01, 7.453e-03, 2.644e-01, -1.821e-01, 3.247e-03, 1.335e-01, 1.569e-01, 1.079e-01, 1.831e-02, 7.809e-02, 7.146e-02), r);\n\tr = MulAdd(s4_8, M4(-1.282e-01, 4.611e-02, 1.102e-01, 8.853e-02, -1.722e-01, -1.031e-01, 2.514e-01, -1.527e-01, -2.682e-03, 1.106e-01, -6.223e-03, -2.285e-02, 1.846e-01, 1.044e-02, -4.121e-02, -9.054e-02), r);\n\tr = MulAdd(s5_0, M4(1.332e-01, -5.180e-02, 7.027e-03, 4.352e-02, -2.723e-02, -2.257e-02, -5.886e-02, -4.457e-02, -7.016e-02, 6.257e-02, 1.170e-02, 8.506e-02, -4.006e-02, -6.097e-02, 6.540e-02, 8.862e-02), r);\n\tr = MulAdd(s5_1, M4(-4.496e-02, -5.056e-02, -1.407e-03, 1.206e-01, -4.892e-02, -8.885e-02, 6.538e-03, 4.501e-02, 4.362e-02, -8.527e-02, -1.946e-01, 1.466e-01, 1.045e-01, -1.014e-01, 1.647e-01, -2.132e-01), r);\n\tr = MulAdd(s5_2, M4(1.616e-02, -1.825e-01, -2.892e-02, 3.381e-03, -2.863e-02, 4.838e-02, -1.173e-02, 5.060e-03, 1.067e-01, -1.108e-01, 1.812e-01, -3.503e-02, -1.645e-01, 6.200e-02, 4.331e-02, -1.618e-01), r);\n\tr = MulAdd(s5_3, M4(-1.727e-01, -1.164e-01, -7.706e-02, 1.022e-02, -8.109e-02, 8.064e-02, 1.430e-01, -3.233e-02, -1.537e-01, 5.173e-03, -1.557e-01, 5.926e-02, -1.343e-01, -2.039e-03, -2.499e-02, -7.986e-02), r);\n\tr = MulAdd(s5_4, M4(-2.449e-01, 8.561e-02, -5.706e-02, -2.523e-02, -7.240e-02, 4.196e-02, -1.457e-01, 1.570e-01, -7.590e-02, -5.256e-02, -1.481e-01, -2.097e-01, -2.887e-01, -5.940e-02, -2.843e-02, -4.960e-02), r);\n\tr = MulAdd(s5_5, M4(-6.858e-02, 2.541e-02, -3.451e-02, -3.459e-01, 1.838e-02, -1.523e-03, 2.673e-02, -8.445e-02, 3.166e-04, 1.589e-02, -1.491e-01, -1.015e-01, -3.630e-01, -3.018e-01, 7.412e-02, 1.560e-01), r);\n\tr = MulAdd(s5_6, M4(-1.742e-02, 1.457e-03, -1.061e-01, 1.826e-02, 6.549e-02, 1.906e-02, -3.508e-02, 2.989e-02, -4.677e-02, -1.683e-01, 2.756e-01, -2.025e-01, 1.932e-02, 1.945e-02, 2.062e-02, -2.864e-02), r);\n\tr = MulAdd(s5_7, M4(1.323e-01, -1.310e-01, -4.512e-02, -4.500e-02, 1.232e-01, 1.050e-02, -1.799e-02, -1.608e-01, 1.488e-01, 1.833e-02, 3.364e-02, -1.157e-01, -8.935e-02, 6.832e-02, -2.770e-02, -4.232e-02), r);\n\tr = MulAdd(s5_8, M4(8.221e-02, 8.575e-03, -4.399e-02, -2.292e-01, -4.005e-02, -7.331e-02, 7.642e-03, -1.209e-01, 6.489e-02, 1.665e-01, 5.812e-02, 1.639e-01, -1.728e-01, -4.343e-02, 1.431e-01, -1.113e-01), r);\n\tr = MulAdd(s6_0, M4(-3.535e-02, 9.030e-02, -5.320e-02, 7.737e-02, -5.293e-03, -5.581e-03, -7.533e-02, -1.016e-01, 4.049e-02, 1.179e-01, 8.793e-02, 5.243e-02, -2.340e-01, -1.673e-01, -4.937e-02, -4.802e-02), r);\n\tr = MulAdd(s6_1, M4(5.493e-02, -6.066e-02, -1.590e-01, 9.192e-02, -7.866e-02, -1.228e-01, -1.021e-01, 4.901e-02, -2.071e-02, 9.203e-02, 2.903e-01, 5.426e-02, 6.469e-02, 1.092e-01, 9.984e-02, -1.571e-01), r);\n\tr = MulAdd(s6_2, M4(1.058e-01, 2.990e-02, 8.940e-03, 4.651e-02, 1.527e-01, -2.858e-02, 2.792e-02, 1.128e-01, -7.559e-02, -4.387e-02, 1.674e-01, 1.207e-01, -2.941e-02, 4.771e-03, -6.180e-02, -1.577e-01), r);\n\tr = MulAdd(s6_3, M4(1.342e-01, 1.282e-01, 2.951e-02, -6.237e-02, 2.081e-01, 2.897e-02, 3.082e-01, 5.621e-02, -5.228e-02, -7.116e-03, -3.120e-02, 3.504e-02, -6.504e-02, 1.618e-01, 2.461e-02, -1.625e-01), r);\n\tr = MulAdd(s6_4, M4(-1.675e-01, 2.803e-02, 3.666e-02, 2.285e-01, 4.541e-02, 1.696e-01, -3.614e-01, 6.305e-02, -1.967e-01, 1.952e-02, 1.416e-01, -1.762e-01, -7.810e-02, 1.376e-01, -7.025e-02, 1.066e-01), r);\n\tr = MulAdd(s6_5, M4(1.353e-01, 1.662e-01, -4.207e-02, -2.346e-02, 3.252e-03, -4.560e-02, 1.697e-02, 2.627e-01, -1.936e-01, -9.696e-02, 2.661e-02, -7.479e-02, 1.646e-01, 1.714e-01, 1.544e-01, -3.598e-01), r);\n\tr = MulAdd(s6_6, M4(1.437e-01, 3.831e-02, 6.898e-02, 2.046e-01, 7.234e-02, -1.429e-01, 1.993e-01, 1.094e-01, -4.150e-02, 2.519e-02, -7.068e-02, -8.525e-02, 2.540e-01, 6.760e-02, -1.217e-01, -2.109e-02), r);\n\tr = MulAdd(s6_7, M4(1.491e-01, 1.031e-01, 1.842e-02, 7.649e-02, -1.016e-01, -1.476e-01, 1.011e-01, 3.578e-02, -1.648e-01, -4.999e-02, 1.983e-01, 1.706e-01, 1.083e-01, -4.382e-02, 3.283e-02, 2.631e-01), r);\n\tr = MulAdd(s6_8, M4(1.966e-01, 3.838e-03, 3.439e-02, 5.648e-02, -5.775e-02, 4.761e-02, -2.427e-02, -6.857e-02, 9.181e-02, 4.807e-02, -4.314e-02, 1.334e-01, 1.542e-01, 1.521e-01, 7.161e-03, -1.978e-01), r);\n\tr = MulAdd(s7_0, M4(1.146e-02, -6.005e-02, 5.545e-02, -9.761e-02, 1.503e-01, -2.184e-02, -2.481e-02, 7.512e-03, 1.664e-01, 1.335e-01, -1.812e-02, 7.166e-04, 1.337e-02, -2.437e-02, 1.074e-01, -1.082e-01), r);\n\tr = MulAdd(s7_1, M4(-1.392e-01, -4.758e-02, -1.420e-01, -1.394e-01, 8.528e-02, 1.490e-01, -1.346e-02, -1.093e-02, -1.024e-02, -1.676e-01, 9.042e-02, -9.947e-02, -4.090e-02, -4.279e-03, 2.057e-01, 2.859e-02), r);\n\tr = MulAdd(s7_2, M4(-1.675e-01, -2.194e-01, 5.117e-02, -1.949e-01, 1.652e-02, -9.819e-02, 5.137e-02, 4.510e-02, -1.041e-01, -8.313e-02, -8.920e-02, -1.221e-02, -8.391e-02, -7.470e-02, -3.483e-02, 2.702e-02), r);\n\tr = MulAdd(s7_3, M4(1.624e-01, -1.387e-02, 1.789e-01, 4.982e-02, 2.285e-01, -1.281e-01, 1.582e-01, -1.199e-01, -1.904e-02, -2.422e-02, 1.750e-01, 1.218e-02, 8.004e-02, -1.072e-01, 3.704e-02, 1.066e-01), r);\n\tr = MulAdd(s7_4, M4(-6.251e-03, -1.467e-02, 3.164e-02, 1.254e-01, -8.096e-02, 6.160e-02, -1.487e-01, -4.789e-03, 1.438e-01, -4.290e-02, 5.777e-02, -6.356e-02, 8.993e-02, -8.667e-02, -2.150e-01, 6.103e-02), r);\n\tr = MulAdd(s7_5, M4(-1.233e-01, -1.353e-01, -8.816e-03, -1.068e-01, -3.542e-02, -6.869e-02, 1.217e-01, 2.516e-01, 1.305e-01, 1.769e-01, -3.911e-02, 3.566e-02, 4.754e-02, 1.708e-02, -5.803e-02, 1.294e-01), r);\n\tr = MulAdd(s7_6, M4(-6.324e-02, -1.053e-01, 8.470e-02, 1.818e-02, 1.645e-02, -4.823e-02, 1.704e-01, -1.717e-02, -7.712e-02, 1.961e-02, -1.057e-01, -7.132e-02, 5.527e-02, -2.007e-02, 4.258e-02, -5.366e-02), r);\n\tr = MulAdd(s7_7, M4(-7.590e-02, 1.014e-02, -4.700e-02, -8.332e-02, -2.349e-04, 8.786e-02, -9.277e-03, 8.736e-02, -2.654e-03, -1.076e-02, 6.248e-02, 1.686e-01, -2.289e-02, 8.949e-03, 3.939e-02, 2.480e-01), r);\n\tr = MulAdd(s7_8, M4(-1.031e-01, -1.418e-01, -1.160e-02, -9.134e-02, -8.708e-02, -1.059e-02, 3.590e-02, 9.035e-02, 6.970e-02, 4.722e-02, -1.140e-01, -2.233e-02, 5.186e-02, -1.830e-03, 4.614e-02, -5.985e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.698e-03, 2.579e-02, -1.678e-02, 7.305e-03 };\n\tr = MulAdd(s0_0, M4(1.072e-02, 2.987e-02, -4.870e-02, -9.877e-02, -2.593e-01, 8.765e-02, -3.330e-01, 4.828e-02, 3.932e-02, 3.659e-04, 1.314e-01, -1.119e-01, 2.564e-02, 5.181e-02, 7.177e-02, -2.318e-02), r);\n\tr = MulAdd(s0_1, M4(1.366e-01, 8.945e-02, 6.219e-02, 1.591e-01, 1.157e-01, 1.207e-01, -1.396e-01, 1.469e-01, -1.020e-01, -1.702e-02, -3.086e-02, -8.716e-02, 5.325e-02, -7.046e-02, -5.272e-02, 1.926e-01), r);\n\tr = MulAdd(s0_2, M4(9.012e-02, -1.006e-02, 5.874e-03, 1.501e-01, -5.434e-02, 9.288e-02, -3.788e-02, -1.272e-01, -6.693e-03, 5.686e-03, -3.368e-02, -2.107e-02, -3.497e-02, 3.170e-02, 5.741e-02, 5.688e-02), r);\n\tr = MulAdd(s0_3, M4(-8.879e-02, 1.134e-01, -2.091e-01, -2.618e-02, -1.441e-01, -1.830e-01, 1.010e-01, -2.361e-02, 7.942e-02, -9.917e-02, 7.310e-02, 1.108e-01, -4.764e-02, 9.027e-03, 1.707e-01, 6.562e-02), r);\n\tr = MulAdd(s0_4, M4(-1.312e-01, 2.961e-02, 3.481e-02, 8.557e-02, 7.619e-01, -4.109e-01, -7.920e-02, -6.275e-01, -3.851e-02, 1.703e-02, -1.155e-01, -6.941e-02, 8.292e-02, -7.877e-02, -1.201e-01, 8.829e-02), r);\n\tr = MulAdd(s0_5, M4(6.816e-02, -1.082e-01, -1.076e-01, -2.286e-01, -2.404e-01, 3.053e-01, -1.037e-01, 1.641e-01, 1.430e-01, 1.705e-01, 8.834e-03, 8.574e-02, -4.016e-02, -2.470e-02, 7.121e-02, 1.250e-03), r);\n\tr = MulAdd(s0_6, M4(6.383e-02, 1.785e-02, 1.217e-01, -5.187e-02, -1.436e-01, -1.256e-01, -9.063e-02, 1.767e-01, -3.213e-02, -2.595e-01, -1.391e-01, 8.152e-03, -9.418e-02, -2.258e-01, 2.352e-02, -5.914e-02), r);\n\tr = MulAdd(s0_7, M4(2.106e-02, -1.326e-01, -1.596e-01, 1.914e-02, -8.504e-02, 6.304e-01, 1.081e-01, 2.286e-01, -1.086e-01, -1.806e-01, 1.410e-01, -3.709e-02, -4.926e-02, -1.029e-01, -9.883e-02, -2.675e-02), r);\n\tr = MulAdd(s0_8, M4(-7.430e-03, 2.211e-02, -1.627e-02, -3.563e-02, -1.603e-02, -1.272e-01, -7.611e-02, 1.647e-01, -2.259e-01, 5.723e-02, -1.199e-01, 9.717e-03, -1.614e-02, -3.597e-02, -2.514e-02, -1.460e-01), r);\n\tr = MulAdd(s1_0, M4(1.850e-02, 7.559e-02, 2.411e-01, -5.024e-02, -2.092e-03, 8.279e-03, 1.779e-01, 7.559e-02, 3.466e-02, -1.003e-01, 6.475e-02, -6.812e-02, 7.454e-02, -1.681e-01, 8.178e-02, 5.003e-02), r);\n\tr = MulAdd(s1_1, M4(-7.757e-02, 1.018e-01, -4.131e-02, -2.083e-01, 2.325e-02, 1.465e-02, -4.361e-02, 8.990e-02, -1.067e-01, -1.373e-01, 4.339e-02, 1.775e-01, -4.043e-02, -1.337e-01, 9.192e-03, 8.997e-02), r);\n\tr = MulAdd(s1_2, M4(-1.574e-01, -1.295e-01, -6.844e-02, -9.125e-02, -8.375e-03, 6.014e-02, 2.392e-02, -4.710e-02, -2.392e-02, -1.597e-01, 2.631e-03, -3.381e-03, 1.888e-01, -2.238e-01, -3.792e-02, -1.087e-01), r);\n\tr = MulAdd(s1_3, M4(-5.730e-02, 1.616e-01, -1.510e-01, 1.484e-01, 2.380e-03, -5.401e-02, 3.699e-02, -4.056e-02, 1.217e-01, 2.217e-02, -4.013e-02, 1.260e-01, -1.723e-02, -2.650e-01, 2.407e-01, -6.329e-02), r);\n\tr = MulAdd(s1_4, M4(-3.091e-01, 2.740e-01, -1.965e-02, 2.077e-02, 1.116e-01, -9.509e-02, -2.301e-01, -7.686e-02, -5.567e-02, 6.194e-02, -2.114e-02, -5.373e-02, 1.820e-01, -3.116e-01, -2.269e-01, 7.808e-02), r);\n\tr = MulAdd(s1_5, M4(2.357e-01, 3.560e-02, -6.030e-02, -2.233e-01, 1.096e-01, 5.193e-02, -2.080e-01, 2.401e-02, 7.055e-02, -2.879e-02, 4.936e-02, 1.033e-01, -9.082e-02, 1.456e-02, -1.203e-01, -9.185e-02), r);\n\tr = MulAdd(s1_6, M4(-4.888e-03, -1.463e-02, -1.374e-01, -7.310e-02, -8.804e-02, -1.713e-03, 1.975e-01, -7.981e-02, 1.088e-01, -3.366e-02, -2.186e-01, 5.982e-03, -5.231e-02, -8.029e-02, 1.584e-01, 1.171e-02), r);\n\tr = MulAdd(s1_7, M4(-2.043e-01, -2.478e-01, -1.684e-01, 7.396e-02, -5.522e-02, 1.367e-02, 2.299e-02, -6.665e-02, -7.718e-02, 7.285e-02, 1.271e-01, 8.786e-02, 1.472e-01, 7.952e-02, -2.088e-01, -7.105e-02), r);\n\tr = MulAdd(s1_8, M4(-2.984e-02, -9.663e-02, -6.416e-03, 4.946e-02, -5.698e-02, 5.056e-02, 4.170e-02, 7.171e-03, 1.453e-01, 3.092e-02, -5.553e-02, -6.796e-03, 1.211e-01, 1.874e-02, -1.011e-01, -3.792e-02), r);\n\tr = MulAdd(s2_0, M4(-1.008e-01, -5.194e-02, -2.756e-02, -6.745e-03, -1.505e-01, -1.320e-01, -1.929e-01, 4.847e-02, -1.121e-01, -2.102e-01, -1.006e-01, 1.444e-02, -8.762e-02, -8.098e-03, -7.473e-02, -1.624e-01), r);\n\tr = MulAdd(s2_1, M4(1.426e-01, 1.293e-01, -1.464e-02, -1.140e-02, -2.014e-02, 4.292e-02, -2.943e-01, -1.110e-01, 1.252e-01, -5.200e-02, 1.308e-01, 6.224e-02, 7.254e-02, -2.254e-02, 7.862e-02, -2.198e-01), r);\n\tr = MulAdd(s2_2, M4(4.654e-02, -2.551e-01, -2.251e-01, 2.466e-01, -1.344e-01, -4.730e-02, -1.331e-01, 8.710e-02, -2.163e-01, -1.685e-01, 2.531e-02, 4.731e-02, 3.408e-02, 1.302e-02, -4.481e-02, -7.309e-02), r);\n\tr = MulAdd(s2_3, M4(-1.833e-01, 1.709e-01, 5.242e-02, -2.393e-02, 5.576e-02, 6.886e-02, 4.389e-01, -4.525e-02, 7.399e-02, 1.564e-01, 9.747e-03, -1.112e-01, -2.863e-02, 2.534e-01, 1.318e-01, 1.231e-01), r);\n\tr = MulAdd(s2_4, M4(1.389e-02, -2.544e-01, 6.263e-02, 4.152e-02, -4.439e-02, 9.213e-02, 1.155e-01, -3.731e-02, 4.804e-02, 6.394e-02, 3.836e-02, -1.901e-02, 3.252e-01, -1.103e-01, 3.155e-01, -3.334e-01), r);\n\tr = MulAdd(s2_5, M4(2.692e-02, 1.670e-03, -1.956e-01, -2.065e-01, 2.862e-02, 1.070e-01, -5.289e-04, 2.543e-01, 3.560e-03, 3.700e-02, 2.995e-02, -1.575e-01, -2.839e-02, -1.122e-02, -1.519e-01, -3.399e-01), r);\n\tr = MulAdd(s2_6, M4(-3.126e-02, 6.623e-02, 1.242e-01, 1.889e-02, -4.032e-02, 8.464e-03, 1.190e-01, 4.678e-02, -1.823e-02, -1.588e-02, -2.659e-02, 6.273e-02, -7.421e-02, -1.694e-01, 1.068e-01, -7.284e-03), r);\n\tr = MulAdd(s2_7, M4(1.102e-01, -1.866e-01, -1.061e-01, -2.824e-01, 1.737e-02, 1.007e-01, 5.043e-03, -1.614e-01, 3.293e-03, 1.382e-01, -1.468e-02, -1.901e-02, -3.788e-02, 9.288e-02, -1.407e-01, -2.130e-02), r);\n\tr = MulAdd(s2_8, M4(2.724e-02, 6.120e-02, 1.856e-01, 1.509e-02, 1.522e-01, 4.458e-02, 1.284e-01, 1.431e-01, -1.399e-02, -4.098e-02, 6.481e-02, -6.521e-02, 1.377e-01, -2.937e-02, 2.207e-02, 3.419e-02), r);\n\tr = MulAdd(s3_0, M4(1.091e-02, -8.703e-02, 2.567e-01, 3.758e-02, -1.626e-01, 9.900e-02, 9.897e-02, 1.972e-02, -1.741e-01, -3.328e-01, 9.653e-02, -7.223e-02, -7.728e-02, 1.670e-01, 1.268e-01, -1.022e-02), r);\n\tr = MulAdd(s3_1, M4(8.696e-02, 4.460e-02, -1.843e-01, 5.664e-02, 2.322e-01, 2.416e-01, 4.537e-02, -8.637e-02, 2.466e-01, -3.734e-01, -1.130e-01, -4.065e-02, 6.738e-02, 1.748e-01, 5.445e-02, -1.321e-01), r);\n\tr = MulAdd(s3_2, M4(4.309e-02, 1.146e-01, 1.336e-03, -1.639e-01, 8.132e-02, 1.614e-01, 4.700e-02, -3.760e-01, -2.383e-01, 1.015e-01, 1.638e-02, 3.249e-01, -3.819e-02, 4.556e-02, -5.602e-02, 2.362e-01), r);\n\tr = MulAdd(s3_3, M4(-1.616e-01, 1.037e-01, 4.294e-01, -8.711e-02, 9.881e-02, -1.627e-01, -4.622e-02, -3.638e-02, -1.581e-01, -2.005e-01, -2.844e-01, -1.328e-01, -5.698e-02, 1.438e-02, 2.079e-01, 1.697e-02), r);\n\tr = MulAdd(s3_4, M4(-4.821e-02, -3.568e-02, -1.423e-01, -7.904e-02, 1.332e-01, 7.288e-03, 8.952e-02, -5.698e-02, 5.983e-02, 2.679e-01, -9.634e-02, 6.227e-02, 2.570e-01, -2.033e-02, -3.207e-01, -4.696e-02), r);\n\tr = MulAdd(s3_5, M4(2.321e-01, 1.473e-02, 4.822e-02, -1.961e-01, 3.712e-01, 1.017e-02, -1.449e-02, 9.831e-02, 8.188e-02, 2.311e-01, 1.631e-01, -5.482e-02, -5.875e-02, -2.277e-01, 2.308e-02, -5.562e-02), r);\n\tr = MulAdd(s3_6, M4(3.540e-03, 1.396e-01, -7.204e-02, 3.212e-02, -5.876e-02, 5.417e-02, -1.013e-01, -1.313e-02, -1.003e-01, -3.366e-01, 9.102e-02, 4.483e-02, -1.129e-01, -8.134e-02, 1.506e-01, -4.069e-02), r);\n\tr = MulAdd(s3_7, M4(-4.611e-02, 6.878e-03, -1.654e-02, 4.913e-02, -5.735e-02, 1.157e-01, -1.774e-02, -8.984e-02, 2.189e-02, 2.690e-01, 2.728e-02, -6.942e-03, 5.850e-02, -9.036e-02, -1.306e-01, -4.179e-03), r);\n\tr = MulAdd(s3_8, M4(-8.081e-02, -5.007e-02, 5.750e-02, 5.247e-02, -2.169e-02, 1.248e-01, 1.077e-05, 1.078e-01, -1.131e-01, -3.974e-02, 2.086e-01, -1.031e-02, 9.351e-02, -1.307e-01, -2.288e-01, 4.383e-02), r);\n\tr = MulAdd(s4_0, M4(3.424e-02, 7.999e-02, 7.685e-02, 4.790e-03, -6.946e-02, 3.152e-01, -1.126e-01, 2.237e-01, -2.916e-02, 4.300e-02, 3.158e-02, 2.072e-02, 1.954e-02, 1.402e-01, 1.155e-01, -5.400e-02), r);\n\tr = MulAdd(s4_1, M4(4.558e-02, -1.627e-01, 1.460e-01, -1.519e-01, 1.269e-01, -1.166e-01, 7.981e-02, -1.032e-01, -1.566e-02, -7.502e-02, 1.240e-02, -6.222e-02, -1.907e-02, 1.501e-01, 1.784e-01, -2.211e-01), r);\n\tr = MulAdd(s4_2, M4(1.578e-02, 2.068e-02, 1.515e-02, -2.311e-02, -2.813e-02, 1.740e-01, 1.060e-01, -7.887e-02, 2.634e-02, 7.770e-02, 2.411e-02, 5.767e-02, 9.125e-02, -2.644e-02, -2.305e-02, -9.402e-02), r);\n\tr = MulAdd(s4_3, M4(1.087e-01, -2.020e-01, 1.134e-01, 2.271e-02, -7.384e-02, 1.375e-01, -3.297e-01, 6.567e-02, -2.486e-02, 1.378e-01, -2.338e-03, 1.319e-01, 6.882e-02, 1.297e-01, -6.683e-02, 1.000e-01), r);\n\tr = MulAdd(s4_4, M4(-2.737e-01, 1.427e-01, -3.568e-01, 3.743e-02, 2.118e-01, -8.814e-03, 2.406e-01, 9.181e-02, -4.541e-02, 8.189e-03, 1.395e-01, 4.992e-02, -7.127e-02, 1.991e-01, 3.851e-01, 1.538e-01), r);\n\tr = MulAdd(s4_5, M4(1.133e-01, -3.303e-02, 4.544e-02, -1.079e-02, -6.669e-02, -1.649e-01, 1.830e-01, 5.873e-02, -6.171e-02, 6.666e-02, 9.514e-02, -1.057e-01, 1.724e-01, 8.855e-02, 6.628e-02, -9.804e-02), r);\n\tr = MulAdd(s4_6, M4(-1.156e-01, 4.579e-02, -1.436e-01, -1.500e-01, 1.156e-04, 1.470e-01, 2.128e-02, 1.526e-02, -2.010e-02, -4.426e-02, -2.241e-02, 1.347e-02, -3.333e-02, -8.785e-03, -1.368e-01, 3.007e-02), r);\n\tr = MulAdd(s4_7, M4(3.182e-02, -3.640e-02, -2.042e-02, 6.383e-03, 1.342e-01, -1.910e-01, -2.039e-01, -2.644e-01, -5.062e-02, -6.343e-02, -1.043e-02, -7.188e-02, -1.742e-01, -5.018e-02, 3.093e-02, -2.548e-02), r);\n\tr = MulAdd(s4_8, M4(2.927e-02, 8.337e-02, -4.069e-03, -4.532e-02, -1.445e-02, -1.190e-02, 5.480e-02, -2.169e-01, 6.353e-02, -2.374e-01, -1.116e-01, 2.739e-02, -9.849e-04, -9.187e-02, 2.816e-02, 1.036e-01), r);\n\tr = MulAdd(s5_0, M4(-6.044e-02, 8.869e-02, 1.616e-03, -5.585e-02, 5.658e-02, 9.891e-03, -1.156e-02, 1.706e-02, 7.989e-03, 3.445e-01, -3.770e-02, 1.117e-01, -1.178e-01, -1.527e-01, -2.576e-01, -1.498e-01), r);\n\tr = MulAdd(s5_1, M4(-6.545e-02, -9.450e-03, -6.159e-02, -4.696e-02, 8.623e-02, -7.169e-02, -5.838e-02, 1.784e-02, 1.132e-01, 1.126e-01, 1.970e-02, 1.624e-01, -4.806e-02, -2.634e-01, -1.809e-01, -3.138e-01), r);\n\tr = MulAdd(s5_2, M4(1.511e-01, 9.117e-02, -5.241e-02, -6.197e-02, -6.328e-02, -1.878e-02, -2.180e-02, -4.510e-02, -1.126e-01, 1.166e-01, 1.270e-01, 1.281e-01, -8.226e-02, -7.153e-02, 3.331e-02, -1.265e-01), r);\n\tr = MulAdd(s5_3, M4(7.965e-02, -1.161e-02, 1.187e-01, 9.454e-02, -2.232e-02, -1.270e-02, -4.553e-02, 4.193e-02, -1.702e-01, 6.725e-02, -2.090e-01, -3.786e-02, 1.777e-01, -1.197e-01, 2.123e-01, 9.745e-02), r);\n\tr = MulAdd(s5_4, M4(2.837e-02, -3.252e-01, 3.035e-01, 1.311e-01, 5.649e-02, -2.523e-02, 3.847e-02, 1.933e-01, -1.843e-01, 8.062e-02, 2.911e-02, -1.414e-01, 1.123e-01, 1.763e-01, -1.875e-01, 1.437e-01), r);\n\tr = MulAdd(s5_5, M4(1.268e-01, -1.762e-01, 3.054e-01, -1.945e-01, -8.692e-02, -5.161e-04, 7.561e-02, 3.989e-02, 1.580e-01, -2.259e-01, 1.818e-01, -2.756e-01, -2.821e-01, -5.012e-02, -1.082e-01, -2.341e-01), r);\n\tr = MulAdd(s5_6, M4(-7.304e-02, 9.063e-03, -1.128e-01, -9.447e-02, 1.103e-01, -2.242e-01, -2.195e-01, -2.092e-02, -5.718e-02, -9.265e-03, -1.021e-02, 9.082e-02, 6.298e-02, 8.127e-02, 1.945e-01, 6.062e-02), r);\n\tr = MulAdd(s5_7, M4(1.440e-01, -1.044e-01, -1.070e-01, -3.389e-02, -2.963e-02, 5.793e-02, -3.072e-02, -2.344e-03, -2.492e-02, -2.873e-01, -3.807e-01, 2.718e-01, -2.020e-02, 1.431e-01, -1.180e-01, -1.030e-01), r);\n\tr = MulAdd(s5_8, M4(3.213e-01, 6.824e-03, -7.111e-02, 3.511e-01, -4.654e-02, -6.974e-02, 6.345e-02, 1.485e-02, 2.044e-01, -1.140e-01, -4.490e-02, 1.607e-01, -9.209e-02, 1.401e-01, -5.090e-02, -8.411e-03), r);\n\tr = MulAdd(s6_0, M4(6.762e-02, 3.111e-02, 8.905e-02, -8.417e-02, 3.567e-02, 4.367e-02, 1.799e-01, -6.583e-02, 2.586e-01, -5.969e-02, 9.891e-02, -6.286e-02, 2.217e-01, 9.322e-02, 1.010e-02, 4.488e-03), r);\n\tr = MulAdd(s6_1, M4(-6.680e-02, 3.286e-02, 3.087e-02, -4.619e-03, -1.036e-02, 7.282e-02, 1.468e-01, -5.122e-02, 2.252e-01, 1.292e-01, -7.800e-02, -1.970e-01, -9.419e-02, 9.136e-02, -4.977e-02, 2.149e-01), r);\n\tr = MulAdd(s6_2, M4(-4.593e-03, 3.990e-02, 1.935e-01, 1.642e-01, -1.323e-01, -3.260e-02, 6.514e-03, 8.888e-02, 1.945e-01, -2.007e-01, -1.095e-01, 8.508e-02, 2.230e-01, 1.375e-01, 5.262e-01, 3.002e-02), r);\n\tr = MulAdd(s6_3, M4(-1.067e-01, 1.100e-02, -9.022e-02, -8.760e-03, -1.470e-01, 4.327e-02, -4.423e-01, -9.102e-02, -7.296e-02, -5.397e-02, 3.183e-01, -9.107e-02, 7.823e-02, 1.340e-01, -3.831e-01, 3.284e-01), r);\n\tr = MulAdd(s6_4, M4(-1.125e-01, -1.064e-01, 5.733e-02, 2.783e-01, 4.943e-02, 8.598e-02, -1.754e-01, 1.106e-01, 7.048e-03, -1.128e-01, -1.402e-01, 7.994e-02, 6.531e-02, -1.963e-01, -1.339e-01, -1.787e-01), r);\n\tr = MulAdd(s6_5, M4(6.126e-02, -2.194e-01, -1.802e-02, -1.396e-01, -1.366e-01, 1.403e-03, -2.045e-02, -4.980e-03, 3.831e-03, -5.249e-02, -8.786e-02, -9.294e-02, 5.863e-02, 2.601e-01, 1.074e-01, 2.285e-01), r);\n\tr = MulAdd(s6_6, M4(4.155e-02, -2.726e-02, -1.368e-01, -3.527e-02, -1.657e-03, 4.799e-02, -1.674e-01, -2.810e-02, 1.697e-01, -2.212e-01, -1.978e-01, -8.034e-02, -3.231e-02, -3.516e-01, 1.731e-01, -2.747e-02), r);\n\tr = MulAdd(s6_7, M4(1.853e-01, 6.818e-02, 4.581e-02, 2.965e-02, 2.423e-01, -1.597e-01, 1.566e-01, 2.783e-01, 4.119e-02, -5.123e-02, 2.303e-01, -9.911e-02, -9.150e-02, -6.106e-02, 1.850e-02, 2.050e-01), r);\n\tr = MulAdd(s6_8, M4(2.283e-01, -1.458e-01, 1.233e-01, 8.499e-02, 6.123e-02, 1.016e-01, -5.853e-03, -8.747e-02, 7.646e-02, -6.887e-02, -2.715e-02, -3.436e-02, -1.119e-01, -1.890e-01, 2.693e-01, 2.559e-03), r);\n\tr = MulAdd(s7_0, M4(1.384e-02, -1.850e-01, 5.129e-02, -1.023e-01, 9.918e-02, -2.892e-02, 1.510e-01, -8.043e-02, -5.683e-02, 4.200e-02, -1.634e-01, 4.746e-02, 3.527e-02, -5.455e-02, -1.567e-01, -1.112e-01), r);\n\tr = MulAdd(s7_1, M4(-1.209e-01, -2.167e-01, -9.072e-02, 6.864e-02, -1.791e-01, -7.372e-02, 7.429e-02, -2.261e-01, 5.672e-02, -8.587e-02, -1.480e-01, 8.569e-02, -4.476e-02, 4.380e-02, -2.727e-01, 2.679e-01), r);\n\tr = MulAdd(s7_2, M4(-9.439e-02, -1.420e-01, -8.216e-02, 1.063e-01, -2.824e-02, -1.300e-01, 4.051e-02, -3.691e-02, -3.306e-02, -6.779e-02, -1.291e-02, 1.214e-01, -1.861e-02, -7.860e-02, 6.709e-02, -1.240e-01), r);\n\tr = MulAdd(s7_3, M4(-4.692e-02, 4.636e-03, -3.419e-02, 3.887e-02, -9.496e-02, -5.115e-02, -1.757e-01, 8.311e-02, -8.690e-03, 5.378e-02, 2.403e-01, -1.772e-02, 8.144e-03, 1.039e-02, -1.007e-02, 2.934e-02), r);\n\tr = MulAdd(s7_4, M4(-8.310e-02, -1.082e-01, 1.465e-01, 1.458e-01, -6.636e-02, 1.827e-01, -1.259e-01, 7.035e-02, 1.577e-01, 2.910e-02, 1.289e-01, 1.968e-01, 6.651e-02, -1.057e-01, 3.715e-02, -2.438e-01), r);\n\tr = MulAdd(s7_5, M4(-2.911e-02, -9.885e-02, -2.341e-02, -2.019e-01, 2.090e-01, 8.860e-02, -1.892e-01, 1.353e-01, -5.556e-02, -7.870e-03, 5.824e-02, 5.973e-02, -3.291e-02, 7.454e-03, 3.751e-02, -1.121e-01), r);\n\tr = MulAdd(s7_6, M4(7.551e-02, -3.335e-02, -1.762e-01, 5.832e-02, 5.756e-02, -1.613e-02, 1.464e-01, -9.083e-02, 1.369e-02, -1.940e-02, 2.754e-02, -5.272e-02, -4.991e-02, 1.147e-01, -2.800e-02, -5.788e-02), r);\n\tr = MulAdd(s7_7, M4(-2.630e-02, 8.548e-02, -3.191e-02, 1.016e-01, 2.250e-01, 8.246e-02, 1.763e-01, 8.115e-03, -1.055e-01, 6.761e-02, 2.263e-02, -9.174e-02, 4.222e-02, 7.305e-02, 1.293e-01, -2.264e-03), r);\n\tr = MulAdd(s7_8, M4(3.674e-02, -2.297e-02, -3.111e-02, 1.134e-02, -1.363e-01, 1.643e-01, 9.281e-02, -7.981e-02, 8.216e-02, -9.746e-02, -1.500e-02, 7.859e-02, -8.993e-02, -1.750e-02, 1.173e-01, 4.751e-03), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.455e-02, -5.682e-02, 3.028e-02, 8.647e-03 };\n\tr = MulAdd(s0_0, M4(-6.186e-02, 7.644e-02, -1.504e-01, 6.998e-03, 3.227e-01, 5.705e-01, 1.276e-02, -9.864e-03, 2.392e-01, 1.188e-02, 2.665e-02, 4.136e-03, 1.107e-01, -1.087e-02, -3.264e-02, -1.099e-01), r);\n\tr = MulAdd(s0_1, M4(5.791e-02, -8.280e-02, -2.316e-01, -1.607e-01, -4.218e-01, 6.681e-01, 1.097e-01, -7.250e-01, -1.247e-01, -1.116e-01, 6.560e-02, -9.282e-02, -3.846e-02, 4.643e-02, -2.071e-02, -2.146e-01), r);\n\tr = MulAdd(s0_2, M4(3.270e-03, 3.178e-02, -1.218e-01, 5.875e-02, 2.629e-03, 2.297e-01, 4.372e-01, -2.591e-01, 2.010e-02, -6.648e-02, 2.203e-02, -3.337e-02, 5.933e-02, -9.940e-02, -8.647e-02, -3.455e-02), r);\n\tr = MulAdd(s0_3, M4(-7.295e-02, 1.090e-01, -2.574e-01, -4.590e-02, 1.968e-01, 5.900e-01, 6.299e-02, -3.414e-02, 1.580e-01, -7.376e-02, 9.417e-02, -4.065e-02, 1.430e-03, -1.640e-02, 4.694e-02, -3.214e-05), r);\n\tr = MulAdd(s0_4, M4(5.960e-02, -1.084e-01, -2.587e-01, 1.333e-01, -7.512e-02, 8.546e-01, -3.336e-01, 3.835e-01, 1.885e-01, 5.548e-02, -6.802e-02, 5.619e-03, -1.972e-02, 1.343e-01, 8.009e-02, -2.308e-01), r);\n\tr = MulAdd(s0_5, M4(7.935e-02, -2.185e-02, 9.521e-03, 2.267e-02, 4.557e-02, 4.106e-01, -5.828e-02, 1.617e-01, -8.067e-02, 1.044e-01, -5.421e-02, 2.106e-01, 9.214e-02, -9.703e-03, -6.816e-03, 5.811e-02), r);\n\tr = MulAdd(s0_6, M4(-8.258e-02, 5.813e-02, -3.165e-01, -4.061e-02, -2.125e-01, 3.517e-01, 1.852e-01, 3.948e-02, -3.181e-02, -9.381e-02, 3.857e-03, 1.596e-02, 1.605e-01, 1.763e-02, 6.127e-02, 5.993e-02), r);\n\tr = MulAdd(s0_7, M4(-1.638e-01, 6.370e-02, -3.140e-02, -6.196e-02, -8.679e-02, 3.919e-01, -7.714e-02, 6.702e-01, 2.352e-01, 4.334e-02, 2.054e-01, -1.406e-01, -1.907e-02, -1.223e-02, 7.092e-02, 5.143e-02), r);\n\tr = MulAdd(s0_8, M4(-2.864e-02, 2.101e-02, -5.985e-02, -3.778e-02, 1.740e-01, 4.349e-01, 3.508e-01, -8.256e-02, 1.417e-01, -2.963e-02, 5.655e-02, 5.685e-02, -3.032e-02, -7.560e-03, -3.227e-02, 1.275e-01), r);\n\tr = MulAdd(s1_0, M4(-1.037e-01, -5.329e-02, -1.153e-03, 1.188e-03, 4.432e-02, 9.465e-02, 3.873e-02, -1.126e-02, 9.906e-02, -6.669e-03, -3.942e-02, -4.308e-02, 8.005e-03, 3.278e-02, -6.866e-02, -4.305e-02), r);\n\tr = MulAdd(s1_1, M4(2.644e-01, 3.882e-02, 1.599e-01, 2.417e-01, -1.866e-01, -5.371e-02, -3.262e-02, -1.531e-01, -9.844e-02, -1.569e-02, -1.239e-02, -1.319e-02, -7.975e-02, 2.914e-02, 9.776e-02, 1.726e-01), r);\n\tr = MulAdd(s1_2, M4(-7.199e-03, -9.698e-02, 5.974e-02, 2.839e-02, 1.722e-02, 1.038e-02, 4.286e-02, -1.109e-01, -1.882e-01, -5.766e-02, -1.242e-01, 6.661e-02, -9.155e-02, 9.355e-02, 4.687e-02, -7.348e-03), r);\n\tr = MulAdd(s1_3, M4(-2.169e-01, 1.116e-01, -1.917e-01, -3.858e-03, 7.152e-02, -2.615e-02, -7.558e-02, -8.680e-02, -3.220e-02, 1.908e-01, 1.524e-02, 4.523e-03, 8.582e-02, 5.460e-02, 1.954e-01, 2.942e-01), r);\n\tr = MulAdd(s1_4, M4(3.139e-02, -9.837e-02, 1.743e-02, 1.242e-01, 8.060e-02, 1.809e-01, -1.421e-01, 1.008e-01, -1.521e-01, 6.146e-02, -8.842e-02, 2.465e-01, -3.182e-01, -4.065e-02, 1.646e-01, -3.455e-01), r);\n\tr = MulAdd(s1_5, M4(5.098e-02, -2.421e-02, 1.039e-01, 6.447e-02, -1.005e-01, 1.246e-02, -3.039e-03, 4.305e-02, -6.107e-02, 2.312e-02, -9.916e-02, 1.579e-01, 8.034e-03, 4.809e-02, 4.289e-02, -3.629e-02), r);\n\tr = MulAdd(s1_6, M4(2.395e-01, -3.280e-02, -8.095e-02, -1.944e-02, 5.828e-02, 5.073e-02, -2.697e-02, 1.291e-02, -2.329e-01, 1.244e-01, -9.033e-02, 9.723e-02, 7.572e-03, 4.856e-02, -1.690e-01, 1.099e-01), r);\n\tr = MulAdd(s1_7, M4(2.168e-02, 3.986e-02, 2.528e-01, -1.322e-01, 9.191e-02, -7.203e-02, -4.302e-02, 1.143e-01, -2.355e-02, 2.543e-03, -4.589e-03, -8.326e-02, -1.032e-01, -1.386e-01, -1.470e-01, 9.319e-02), r);\n\tr = MulAdd(s1_8, M4(-4.893e-02, -1.262e-04, 1.475e-01, -7.349e-02, -1.439e-02, -1.244e-03, 7.020e-02, 1.256e-01, 1.024e-01, -4.272e-02, -5.351e-02, 2.883e-02, -6.076e-02, -1.863e-02, -1.155e-01, -1.205e-03), r);\n\tr = MulAdd(s2_0, M4(1.458e-02, -5.736e-02, 1.231e-02, 1.840e-01, -1.126e-01, -4.911e-02, -1.182e-01, 1.364e-01, 1.724e-03, 7.908e-02, 6.441e-02, -1.983e-01, -8.041e-02, -3.410e-02, -9.758e-02, -3.682e-02), r);\n\tr = MulAdd(s2_1, M4(-1.064e-01, 1.305e-02, 1.300e-02, -2.330e-01, 1.571e-01, -5.209e-02, -1.620e-01, -8.339e-02, -5.291e-02, 6.925e-02, -1.189e-02, 1.150e-01, 1.358e-04, -1.515e-01, 2.310e-02, 8.484e-02), r);\n\tr = MulAdd(s2_2, M4(-1.471e-02, 8.768e-02, 1.317e-01, 6.032e-02, -2.307e-02, 4.888e-02, 4.469e-02, -2.151e-01, -1.492e-01, 1.163e-01, 7.104e-02, 8.186e-02, 8.922e-02, -5.862e-02, -9.091e-02, 2.635e-01), r);\n\tr = MulAdd(s2_3, M4(7.698e-02, 4.197e-02, -4.196e-02, 1.545e-01, 1.266e-02, -1.129e-01, 1.528e-01, -5.952e-02, 3.781e-02, 8.110e-02, 1.030e-01, -2.405e-02, -5.800e-02, -1.409e-02, -6.333e-02, -2.070e-02), r);\n\tr = MulAdd(s2_4, M4(-9.783e-02, 6.081e-02, -6.229e-02, 7.337e-02, -1.360e-01, 1.127e-03, 4.817e-02, -2.041e-01, 6.752e-02, -1.186e-02, -7.077e-02, -1.223e-01, 2.327e-02, 7.801e-03, 6.270e-02, 3.135e-01), r);\n\tr = MulAdd(s2_5, M4(9.916e-02, -4.970e-02, 4.994e-02, -7.438e-02, 1.170e-01, 9.513e-02, -1.987e-01, 1.479e-01, -1.008e-01, 1.637e-02, -4.408e-02, 1.639e-01, 1.416e-02, 7.802e-02, 7.414e-02, 2.309e-01), r);\n\tr = MulAdd(s2_6, M4(2.317e-02, -9.267e-03, 2.679e-03, -1.355e-02, 1.708e-01, 9.609e-02, 7.928e-02, -2.145e-03, 2.286e-01, 5.851e-02, 7.349e-02, -4.331e-02, 4.207e-02, 5.328e-03, -1.931e-01, 1.520e-02), r);\n\tr = MulAdd(s2_7, M4(-4.572e-02, -5.036e-02, 4.120e-02, -2.082e-01, -1.949e-01, -9.669e-02, 4.695e-02, 2.991e-02, -6.106e-03, 6.338e-02, -1.248e-02, 3.833e-02, 1.196e-01, 3.891e-02, 1.696e-01, 3.910e-02), r);\n\tr = MulAdd(s2_8, M4(1.415e-03, 5.763e-02, -1.149e-02, -2.407e-01, 1.740e-03, -8.224e-02, -1.945e-02, 1.355e-02, -4.428e-02, 1.613e-02, -3.505e-02, -4.122e-02, -2.886e-02, -6.491e-02, -5.194e-02, -8.513e-02), r);\n\tr = MulAdd(s3_0, M4(-1.765e-01, -1.367e-01, -4.111e-02, 1.888e-02, -4.251e-03, 1.376e-02, -3.862e-02, -8.980e-03, 1.037e-01, -1.789e-01, 9.146e-02, 2.300e-01, -1.614e-01, 1.308e-01, -1.819e-01, 1.665e-01), r);\n\tr = MulAdd(s3_1, M4(-2.059e-01, -5.625e-02, 2.864e-02, -7.048e-02, -1.706e-03, -1.770e-01, -4.874e-02, -2.786e-02, -1.275e-01, -5.649e-02, 3.366e-02, 1.795e-01, -1.223e-02, -2.242e-01, -1.622e-01, 1.141e-01), r);\n\tr = MulAdd(s3_2, M4(1.345e-01, 6.934e-02, 6.283e-02, 1.327e-01, 6.862e-02, -2.143e-01, 8.570e-02, -3.989e-02, -4.377e-02, -1.398e-01, 2.988e-01, 1.374e-01, 1.468e-01, 8.299e-02, -4.532e-02, 2.113e-01), r);\n\tr = MulAdd(s3_3, M4(3.431e-01, -9.639e-03, 2.325e-01, -5.670e-02, -1.314e-01, 3.757e-02, -6.452e-02, 6.469e-02, -5.444e-03, -1.508e-01, -4.739e-01, -1.679e-01, 1.373e-01, -6.124e-02, 7.933e-03, -1.489e-02), r);\n\tr = MulAdd(s3_4, M4(-1.132e-01, 5.289e-02, 1.535e-02, -2.451e-01, 3.783e-03, 1.595e-01, 9.528e-02, 1.430e-01, 1.694e-01, -1.169e-01, -2.842e-01, -2.346e-01, 3.864e-01, -1.825e-01, -2.749e-01, -1.994e-01), r);\n\tr = MulAdd(s3_5, M4(-7.642e-03, 8.555e-02, -1.200e-02, 1.146e-01, 1.802e-02, 1.937e-01, 1.797e-01, 5.593e-03, 4.507e-02, -1.199e-01, -2.198e-01, 1.812e-01, -5.173e-03, 1.568e-01, 9.984e-02, -2.659e-02), r);\n\tr = MulAdd(s3_6, M4(6.704e-02, 4.698e-02, -1.374e-02, -9.021e-02, -1.707e-01, 4.764e-03, -9.841e-03, 5.072e-02, 1.605e-01, -2.053e-01, -3.838e-02, -1.444e-02, 2.384e-02, -1.151e-01, -1.005e-01, 4.233e-02), r);\n\tr = MulAdd(s3_7, M4(-8.390e-02, 1.908e-02, -1.100e-01, -8.602e-02, 4.900e-02, 1.116e-02, 2.053e-01, -5.726e-02, -9.621e-02, -1.169e-01, 2.024e-01, 4.824e-02, -2.096e-02, 3.369e-02, 2.029e-01, -1.462e-01), r);\n\tr = MulAdd(s3_8, M4(1.567e-01, -2.444e-02, 9.509e-02, -1.816e-02, -3.936e-02, -2.473e-02, -1.129e-01, 2.242e-02, -3.106e-03, -1.018e-01, -1.701e-01, 1.499e-01, -1.430e-01, -3.654e-02, 2.967e-02, 8.369e-02), r);\n\tr = MulAdd(s4_0, M4(1.034e-01, -5.312e-04, -1.239e-01, -5.456e-02, 1.879e-02, -7.676e-02, -5.956e-02, -1.783e-01, -1.130e-01, -6.370e-02, 2.026e-01, 3.057e-02, -2.113e-01, 5.926e-02, -5.394e-02, 1.535e-01), r);\n\tr = MulAdd(s4_1, M4(-6.531e-03, -1.431e-01, -1.812e-01, 1.802e-01, 8.262e-03, 7.741e-02, -6.223e-02, 9.611e-03, -9.345e-02, -8.801e-02, 3.407e-02, 1.188e-01, 1.595e-01, -4.748e-02, 1.459e-02, 2.855e-01), r);\n\tr = MulAdd(s4_2, M4(1.810e-01, -4.054e-02, -3.277e-02, -1.111e-01, 6.464e-02, -2.245e-01, 1.261e-02, -2.225e-01, 1.451e-01, 1.198e-01, 2.836e-02, 3.377e-02, 1.767e-01, -4.248e-02, 8.389e-02, 2.485e-02), r);\n\tr = MulAdd(s4_3, M4(-9.627e-02, 5.986e-02, 7.569e-03, -7.105e-02, 2.928e-01, -1.040e-01, -2.868e-01, -1.463e-01, -8.511e-03, -1.502e-02, -7.755e-02, 1.688e-01, 6.127e-02, 8.810e-02, 3.685e-02, 2.663e-02), r);\n\tr = MulAdd(s4_4, M4(-6.368e-02, 5.359e-02, -3.643e-02, 1.399e-01, 3.936e-03, 2.547e-01, 2.957e-01, 2.191e-01, 2.612e-01, 3.846e-02, 3.046e-02, -7.856e-02, -3.086e-02, -6.937e-02, 5.934e-02, 7.798e-02), r);\n\tr = MulAdd(s4_5, M4(-1.666e-01, 4.368e-02, -9.936e-02, 5.513e-02, 2.653e-01, -7.287e-02, -2.554e-01, 2.655e-01, -1.452e-01, 5.002e-02, -6.006e-02, 3.174e-02, -5.631e-03, 7.299e-02, 1.471e-01, 6.928e-03), r);\n\tr = MulAdd(s4_6, M4(7.689e-02, -6.132e-02, -9.584e-02, 5.564e-02, 9.063e-02, 1.710e-01, -6.893e-02, -1.494e-01, -1.700e-01, -5.163e-02, -7.758e-02, -4.896e-02, -1.714e-02, 3.621e-02, 8.242e-02, 2.643e-02), r);\n\tr = MulAdd(s4_7, M4(1.566e-02, -1.998e-02, -1.708e-01, 2.358e-01, 2.403e-02, 2.645e-01, 4.161e-01, -1.649e-01, 2.306e-01, -3.243e-02, 9.435e-02, -1.145e-01, 1.212e-01, 7.266e-02, 1.598e-01, -7.062e-02), r);\n\tr = MulAdd(s4_8, M4(3.270e-02, -1.166e-01, -3.694e-02, 2.545e-01, -1.235e-01, 1.676e-01, 3.960e-03, -1.373e-01, -5.666e-03, -1.110e-01, -9.305e-03, 6.505e-02, -7.349e-03, -2.651e-02, 7.352e-02, -6.788e-03), r);\n\tr = MulAdd(s5_0, M4(8.014e-02, 1.658e-02, -5.292e-02, 1.630e-02, -7.409e-02, 1.580e-02, 5.897e-02, -1.103e-02, 8.100e-02, -1.677e-01, -2.744e-01, 8.982e-02, 4.863e-02, -7.768e-02, 2.005e-01, -8.596e-03), r);\n\tr = MulAdd(s5_1, M4(-1.216e-01, -7.057e-02, 4.285e-02, 6.371e-02, 5.647e-02, 6.204e-02, 4.051e-03, 1.280e-02, -5.409e-02, 2.483e-02, 4.165e-02, -1.142e-01, 2.118e-01, -2.997e-01, -9.129e-02, 3.454e-01), r);\n\tr = MulAdd(s5_2, M4(5.001e-02, 8.768e-02, -7.564e-02, 7.259e-02, -2.339e-02, -4.598e-02, 3.337e-02, 6.158e-02, 2.909e-01, -1.490e-01, 1.540e-01, 6.356e-02, -6.790e-03, 3.766e-02, 2.135e-02, 1.071e-01), r);\n\tr = MulAdd(s5_3, M4(3.641e-02, 7.143e-02, -1.138e-01, -2.032e-02, -1.992e-02, -7.735e-02, -5.734e-02, -4.763e-02, -8.787e-03, 3.215e-02, 3.169e-02, 6.289e-02, 3.540e-01, -7.365e-02, -8.671e-02, 9.639e-02), r);\n\tr = MulAdd(s5_4, M4(1.139e-01, -1.842e-01, 2.704e-01, -1.627e-01, -4.522e-02, -3.535e-02, 9.351e-02, -2.893e-02, 1.861e-01, 2.077e-01, 1.372e-02, 4.970e-02, 1.317e-01, -3.054e-01, -8.803e-02, 1.714e-01), r);\n\tr = MulAdd(s5_5, M4(2.900e-02, 3.563e-03, 1.104e-01, -2.544e-01, 1.542e-02, -6.940e-02, 3.600e-03, 5.139e-02, -3.194e-01, 2.563e-01, 2.459e-02, -3.874e-02, -6.024e-02, 2.414e-02, -1.001e-01, -1.498e-01), r);\n\tr = MulAdd(s5_6, M4(-4.244e-02, -5.413e-02, -9.869e-02, 2.158e-02, 1.469e-02, 7.325e-02, 1.743e-01, 1.407e-02, -3.738e-01, -2.959e-02, 3.194e-02, -1.635e-01, 1.413e-01, -4.843e-02, -1.413e-03, -3.039e-02), r);\n\tr = MulAdd(s5_7, M4(1.139e-01, -6.672e-03, 2.730e-01, -3.003e-02, 2.715e-02, -3.701e-02, 2.281e-01, -1.225e-01, 2.238e-01, -8.357e-02, -6.010e-03, -2.614e-01, 7.331e-02, -1.523e-02, -2.548e-01, -8.554e-02), r);\n\tr = MulAdd(s5_8, M4(3.213e-02, 1.268e-01, 3.449e-02, -2.570e-01, -1.225e-01, 7.178e-02, 9.433e-02, 2.491e-02, 1.620e-01, 1.357e-02, -2.706e-02, 6.437e-03, 1.109e-01, -7.013e-02, -6.792e-02, -1.037e-01), r);\n\tr = MulAdd(s6_0, M4(8.426e-02, 1.621e-01, -3.307e-02, 6.085e-02, -2.910e-01, 1.052e-01, -1.113e-01, 1.969e-01, -1.820e-02, -4.381e-02, 5.765e-02, 8.801e-03, -1.752e-01, -4.596e-02, 2.692e-03, -1.809e-02), r);\n\tr = MulAdd(s6_1, M4(5.368e-02, 8.830e-03, 1.342e-01, -1.547e-01, 1.712e-01, -2.743e-02, 2.409e-02, 2.343e-01, 2.959e-01, -6.927e-02, 1.156e-01, -2.541e-02, 1.364e-01, 1.695e-01, 1.817e-02, 5.368e-02), r);\n\tr = MulAdd(s6_2, M4(5.028e-02, 1.692e-01, 2.213e-02, -7.803e-02, -1.072e-01, 4.685e-02, -5.682e-03, 5.716e-02, 1.669e-01, 8.173e-03, 1.611e-01, 1.414e-01, -1.356e-01, -2.232e-01, -8.235e-02, 1.440e-01), r);\n\tr = MulAdd(s6_3, M4(-5.098e-02, 1.137e-01, -9.407e-02, -6.296e-02, -1.385e-01, 1.617e-01, -1.909e-01, 1.068e-01, -6.835e-03, -5.320e-02, -2.809e-01, 4.434e-02, -1.940e-01, 1.189e-01, 6.201e-03, -1.800e-02), r);\n\tr = MulAdd(s6_4, M4(-6.221e-02, 5.196e-02, -2.060e-02, 5.637e-02, 3.642e-01, 5.141e-02, 2.882e-02, -2.343e-01, 1.591e-01, -1.559e-02, -1.596e-01, 2.177e-02, 7.673e-02, 3.992e-01, -1.146e-01, 2.448e-01), r);\n\tr = MulAdd(s6_5, M4(-5.695e-02, 7.100e-02, -2.178e-02, 1.582e-01, 2.372e-02, -2.224e-02, -4.140e-02, -8.826e-02, -4.937e-02, -1.031e-01, -1.706e-01, -4.947e-02, -1.536e-01, 1.721e-01, 6.676e-03, 8.255e-02), r);\n\tr = MulAdd(s6_6, M4(-9.010e-02, 1.503e-01, 7.492e-02, -1.993e-03, -3.702e-01, 1.511e-01, -3.409e-02, -2.098e-02, -4.503e-01, -6.997e-02, -1.055e-01, -2.102e-02, -7.406e-02, 2.809e-02, 3.084e-01, 8.653e-02), r);\n\tr = MulAdd(s6_7, M4(-1.697e-01, 1.711e-01, 1.144e-01, 2.860e-02, 2.195e-02, 1.660e-03, -7.057e-02, -1.680e-01, -1.430e-01, -3.346e-02, -5.121e-02, 2.135e-02, 1.318e-01, -1.161e-02, 1.916e-01, 1.212e-01), r);\n\tr = MulAdd(s6_8, M4(-3.071e-02, 1.432e-01, 1.052e-01, 7.180e-02, -4.928e-02, 5.232e-02, -3.310e-03, -3.017e-05, 1.398e-01, -7.870e-02, -9.837e-02, 2.374e-02, 1.507e-01, -8.493e-02, -5.154e-02, 5.780e-02), r);\n\tr = MulAdd(s7_0, M4(2.455e-01, -7.282e-02, 7.852e-02, 4.070e-02, -3.297e-02, 4.145e-02, -1.426e-01, 7.745e-02, -3.729e-02, 8.566e-03, 1.435e-01, -1.010e-01, 6.033e-02, -8.686e-03, -7.574e-02, -3.943e-02), r);\n\tr = MulAdd(s7_1, M4(-5.348e-02, -1.035e-01, 1.114e-01, -1.529e-01, -6.293e-03, -3.968e-02, -6.971e-02, 1.515e-01, 7.013e-02, 1.038e-01, -3.970e-02, -1.193e-01, 1.365e-01, 6.677e-02, 2.004e-02, -1.010e-02), r);\n\tr = MulAdd(s7_2, M4(1.277e-02, -3.852e-02, -6.031e-02, -1.067e-02, -1.349e-02, -5.066e-02, -9.634e-02, 1.096e-01, -4.221e-02, -2.845e-02, -6.615e-02, -1.064e-01, -5.977e-02, -1.288e-01, -1.142e-01, 3.774e-02), r);\n\tr = MulAdd(s7_3, M4(1.835e-01, -1.255e-01, 6.001e-02, -9.365e-02, -8.400e-02, -2.954e-02, -1.218e-01, 2.082e-02, 9.881e-03, -6.183e-02, 7.922e-02, 4.288e-02, -8.498e-02, -7.827e-02, -1.268e-02, 5.906e-06), r);\n\tr = MulAdd(s7_4, M4(-1.167e-02, -1.976e-01, 1.218e-01, 2.846e-02, 1.403e-01, -1.914e-02, -3.142e-02, -6.645e-03, 1.120e-01, 4.741e-02, -4.679e-02, 1.165e-01, 6.907e-02, 9.039e-02, -1.763e-01, 6.242e-02), r);\n\tr = MulAdd(s7_5, M4(-6.373e-02, -4.400e-02, -3.731e-02, -3.382e-02, 7.034e-02, -4.918e-02, 8.839e-03, -4.738e-02, -1.555e-02, -2.111e-02, -1.032e-02, 7.233e-03, 8.502e-02, 9.928e-02, -1.683e-02, 1.288e-01), r);\n\tr = MulAdd(s7_6, M4(1.680e-01, 1.016e-02, 6.608e-02, -4.082e-03, 3.294e-02, 4.425e-02, -1.113e-01, -6.943e-02, -3.064e-02, -1.889e-02, 9.421e-02, 2.824e-02, 6.753e-02, -7.434e-02, -5.314e-02, -2.174e-02), r);\n\tr = MulAdd(s7_7, M4(-3.561e-02, -1.050e-01, -1.267e-01, -7.304e-02, 9.945e-02, -1.332e-01, -4.349e-02, -7.886e-02, -7.833e-02, 1.614e-01, 7.414e-02, 2.130e-03, 1.372e-01, 1.233e-02, -1.111e-01, 3.728e-02), r);\n\tr = MulAdd(s7_8, M4(-1.044e-02, -5.582e-02, 1.359e-02, -1.386e-02, -3.630e-02, -1.954e-02, -1.212e-01, 1.234e-02, -2.190e-02, 1.427e-02, -3.315e-02, 1.844e-02, -1.252e-01, -5.419e-02, -3.355e-02, 2.707e-03), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -4.162e-03, -6.545e-02, 3.186e-02, -6.206e-02 };\n\tr = MulAdd(s0_0, M4(-1.096e-01, -1.852e-02, -1.637e-02, 4.392e-02, -2.820e-02, 2.433e-02, -1.942e-01, -1.233e-01, 1.259e-01, -9.204e-02, 2.761e-02, 2.025e-02, -5.680e-02, 2.470e-02, 1.573e-01, 1.047e-01), r);\n\tr = MulAdd(s0_1, M4(2.607e-01, -2.214e-02, 3.786e-02, 7.953e-02, 1.091e+00, -3.300e-01, -5.729e-02, 1.207e-01, -7.803e-02, -1.589e-01, 1.505e-02, -2.123e-02, 1.959e-01, 5.892e-02, -1.357e-02, 1.410e-01), r);\n\tr = MulAdd(s0_2, M4(-5.059e-02, -7.549e-02, 4.878e-03, 7.983e-02, -1.802e-01, 1.381e-01, -7.327e-02, -1.975e-01, 1.452e-02, 1.400e-01, -1.519e-01, 1.185e-01, 2.760e-02, -8.449e-02, 3.833e-02, 1.663e-02), r);\n\tr = MulAdd(s0_3, M4(-4.666e-02, -3.460e-04, 1.701e-02, -8.272e-02, -1.174e-01, -1.036e-01, 1.497e-03, 2.781e-01, 9.424e-02, 2.704e-02, -3.550e-02, -1.404e-01, 1.897e-01, 1.363e-01, 1.109e-01, 3.753e-02), r);\n\tr = MulAdd(s0_4, M4(-1.341e-01, 3.821e-02, -3.010e-02, -1.671e-01, -1.511e-01, -6.140e-01, -1.095e-01, -3.052e-01, 2.433e-01, -3.002e-02, -2.312e-01, -8.997e-04, 1.391e-02, 1.397e-01, 1.878e-01, -2.238e-02), r);\n\tr = MulAdd(s0_5, M4(1.033e-01, -8.012e-03, -6.417e-02, 9.283e-02, -1.379e-01, -4.926e-02, -2.075e-01, -1.917e-01, 4.786e-02, 2.361e-02, -5.584e-02, 9.578e-02, -5.804e-02, -4.844e-03, -1.844e-02, -1.057e-02), r);\n\tr = MulAdd(s0_6, M4(-2.536e-02, -5.752e-02, 2.363e-02, 1.713e-01, -5.923e-01, 3.168e-01, 1.674e-01, 1.652e-01, -6.523e-02, -3.655e-03, -5.167e-02, 1.683e-02, -1.840e-01, 5.627e-02, -1.028e-01, 1.927e-01), r);\n\tr = MulAdd(s0_7, M4(-1.704e-01, 1.462e-02, 3.242e-02, 7.732e-02, -6.424e-01, 1.905e-01, -8.243e-02, 7.533e-02, 2.171e-01, 6.840e-02, -9.205e-02, -6.206e-03, 5.733e-02, -1.789e-02, -9.110e-02, 5.664e-02), r);\n\tr = MulAdd(s0_8, M4(-5.938e-03, -7.444e-02, 5.562e-02, -6.044e-02, -3.737e-01, 1.747e-01, 1.633e-01, 1.036e-01, 1.738e-02, -2.388e-02, -1.659e-01, -8.670e-02, 7.200e-02, -1.353e-01, -4.155e-04, -8.666e-02), r);\n\tr = MulAdd(s1_0, M4(1.040e-01, 4.584e-04, 7.114e-02, -1.014e-01, -4.784e-02, 8.807e-02, -2.202e-02, -6.059e-02, -1.686e-02, -6.356e-02, 1.230e-01, 1.079e-01, -1.823e-02, 2.432e-01, -1.581e-01, -2.449e-01), r);\n\tr = MulAdd(s1_1, M4(3.786e-02, -1.782e-01, -4.362e-02, 8.725e-02, 1.882e-03, -5.855e-02, 1.016e-01, 8.599e-02, -1.231e-01, 5.488e-02, 5.245e-02, -8.730e-02, -3.452e-01, 1.340e-01, -2.548e-02, -2.157e-01), r);\n\tr = MulAdd(s1_2, M4(-1.819e-03, -1.625e-01, 2.959e-02, 1.547e-02, -6.048e-03, 1.479e-01, -1.464e-01, 7.402e-02, -1.513e-01, 3.002e-02, 6.133e-02, 5.366e-02, -1.184e-01, 3.590e-01, -1.053e-01, -1.425e-01), r);\n\tr = MulAdd(s1_3, M4(1.404e-01, -9.241e-02, 1.825e-01, 2.719e-04, -5.835e-02, 6.595e-03, -9.739e-03, -1.057e-01, 1.661e-01, -1.151e-02, 6.201e-02, 1.203e-02, 3.053e-01, -8.240e-03, 6.581e-02, -1.970e-02), r);\n\tr = MulAdd(s1_4, M4(-2.797e-01, 2.141e-02, 1.896e-01, 3.946e-02, -1.040e-01, -2.634e-01, 1.826e-01, -2.420e-01, -2.634e-01, -1.385e-01, 1.424e-01, -1.114e-01, 1.808e-01, -1.194e-01, 9.477e-02, -2.438e-01), r);\n\tr = MulAdd(s1_5, M4(3.524e-01, -2.425e-02, -8.163e-02, 1.418e-02, 1.681e-01, 1.876e-02, -1.001e-01, 5.731e-02, -7.652e-02, -2.750e-02, 2.377e-01, -1.445e-01, -1.499e-01, -6.638e-02, 2.818e-02, -2.138e-01), r);\n\tr = MulAdd(s1_6, M4(-3.080e-02, 1.693e-02, 5.671e-03, 1.528e-01, 5.871e-02, -2.643e-02, -5.709e-02, 4.359e-02, -2.522e-02, 1.197e-01, -9.253e-02, 4.255e-02, 1.676e-01, 2.026e-01, -2.956e-01, -2.714e-01), r);\n\tr = MulAdd(s1_7, M4(-1.606e-01, 6.631e-02, -1.906e-01, -2.287e-01, -6.485e-02, -7.836e-02, 4.530e-02, 5.725e-02, 6.908e-02, 1.061e-01, 1.805e-01, 7.356e-02, 2.819e-01, 1.429e-01, -1.723e-01, -3.174e-02), r);\n\tr = MulAdd(s1_8, M4(-8.581e-02, -2.105e-02, -5.922e-03, -3.853e-02, 4.403e-02, 7.008e-02, 2.021e-02, 8.475e-02, -4.575e-02, -1.065e-01, 5.490e-02, 8.552e-02, 1.052e-01, -5.821e-02, -3.439e-02, -1.344e-02), r);\n\tr = MulAdd(s2_0, M4(-9.902e-02, -3.794e-02, 1.320e-01, 1.776e-02, -7.469e-02, -1.189e-02, -7.807e-02, -7.543e-02, 4.629e-02, 3.148e-02, -1.269e-01, -1.108e-01, -6.617e-02, 5.129e-02, -1.180e-01, 2.706e-03), r);\n\tr = MulAdd(s2_1, M4(9.910e-02, -1.586e-01, 8.186e-02, 5.193e-01, 2.276e-01, 2.274e-02, -1.020e-01, -1.754e-03, 1.400e-01, -8.362e-02, 3.942e-02, 5.102e-02, -8.412e-02, 6.594e-02, -2.943e-02, -6.063e-02), r);\n\tr = MulAdd(s2_2, M4(1.368e-02, 4.901e-02, -1.587e-01, -3.238e-02, 4.454e-02, -1.343e-01, -1.012e-01, -2.655e-01, -1.020e-01, 1.676e-01, 1.253e-01, -9.942e-02, 3.205e-02, -5.055e-02, -1.117e-01, -1.089e-01), r);\n\tr = MulAdd(s2_3, M4(-5.653e-03, -1.945e-02, 1.854e-01, 7.696e-02, 1.377e-02, -1.351e-01, -2.388e-01, -1.644e-01, 1.011e-02, -5.458e-02, -7.235e-02, 2.097e-02, -1.990e-02, 1.203e-02, 9.880e-02, -1.743e-01), r);\n\tr = MulAdd(s2_4, M4(-8.908e-02, 7.718e-03, 6.576e-02, 1.137e-03, 7.829e-02, 2.680e-01, -1.524e-01, -1.810e-01, -6.039e-02, 1.009e-02, -7.063e-02, 2.310e-01, -2.906e-01, -6.006e-02, 1.890e-01, -1.672e-01), r);\n\tr = MulAdd(s2_5, M4(-2.529e-03, 8.173e-02, 3.242e-02, -5.432e-02, 3.282e-02, -1.262e-01, 1.755e-01, 9.609e-03, -7.836e-02, 9.272e-02, 3.969e-02, 1.379e-01, -1.428e-01, -2.265e-02, -1.399e-01, 9.609e-02), r);\n\tr = MulAdd(s2_6, M4(8.486e-02, -3.489e-02, 7.254e-02, 2.976e-02, 4.917e-02, -7.064e-02, -7.310e-02, -1.542e-01, -1.208e-01, -1.891e-02, -2.144e-02, -1.589e-02, -3.039e-04, 1.014e-01, -1.183e-02, -1.660e-02), r);\n\tr = MulAdd(s2_7, M4(1.340e-01, 1.040e-01, -7.289e-02, -3.622e-02, -4.446e-03, -6.201e-02, 1.615e-01, 1.755e-01, 7.300e-02, 8.229e-02, -8.150e-02, 4.328e-02, -5.828e-02, -5.730e-03, -1.219e-01, -1.250e-01), r);\n\tr = MulAdd(s2_8, M4(-8.284e-02, -1.916e-02, 1.192e-01, -1.383e-01, 2.001e-02, -8.057e-03, 8.148e-02, -8.773e-04, 2.151e-02, 1.743e-04, -6.163e-04, -4.874e-02, 1.019e-01, -1.012e-02, -1.159e-02, -3.961e-02), r);\n\tr = MulAdd(s3_0, M4(-9.251e-03, 1.791e-01, 6.008e-02, -1.205e-01, -1.015e-02, 7.059e-02, -9.721e-02, -1.524e-02, -1.661e-01, 1.372e-01, 4.558e-02, -1.628e-01, -1.264e-01, -3.679e-02, -3.447e-02, 2.277e-02), r);\n\tr = MulAdd(s3_1, M4(-1.366e-01, 2.667e-01, -4.057e-02, 1.793e-02, -1.248e-01, 1.381e-01, 1.214e-01, 5.758e-02, 9.372e-02, -1.240e-01, 3.346e-01, -7.787e-02, 6.877e-02, -3.500e-01, 1.308e-01, 3.518e-02), r);\n\tr = MulAdd(s3_2, M4(-3.532e-03, -1.039e-01, -1.171e-01, 6.105e-02, 2.353e-01, -1.094e-01, 1.156e-01, -2.502e-03, -2.945e-01, 1.159e-01, 2.745e-01, 7.918e-02, 6.662e-03, -6.117e-02, 3.318e-02, 6.362e-03), r);\n\tr = MulAdd(s3_3, M4(5.691e-02, -8.692e-02, -8.899e-02, 1.076e-01, 8.120e-03, 1.426e-02, -1.447e-01, -3.731e-02, 7.444e-02, -1.054e-01, 1.010e-01, 1.529e-01, 4.061e-02, 1.064e-01, -1.352e-01, -1.880e-01), r);\n\tr = MulAdd(s3_4, M4(-1.729e-01, 2.776e-02, -7.887e-03, -2.290e-01, -2.224e-01, 2.358e-03, -7.686e-02, -2.962e-02, 2.791e-01, -3.004e-01, 2.505e-02, -2.687e-01, 1.216e-01, 9.880e-02, 7.356e-02, -6.637e-02), r);\n\tr = MulAdd(s3_5, M4(1.795e-01, -3.148e-02, -2.065e-01, -2.491e-01, -1.342e-01, -1.418e-01, 1.059e-01, -1.083e-01, -2.623e-02, 1.010e-01, 1.061e-01, 2.263e-01, 1.283e-02, 2.022e-01, 2.694e-02, 1.391e-01), r);\n\tr = MulAdd(s3_6, M4(-2.450e-02, 1.307e-02, -8.529e-03, 3.717e-02, 4.865e-02, 1.302e-01, 4.016e-02, -4.964e-02, -1.244e-01, -5.523e-02, 1.237e-02, -4.402e-02, -1.660e-02, 4.089e-02, -9.886e-02, -9.060e-03), r);\n\tr = MulAdd(s3_7, M4(-8.691e-02, -5.331e-02, 1.517e-01, 1.034e-01, -9.627e-02, 3.671e-02, 7.032e-02, 2.741e-02, 1.266e-01, 1.678e-02, -7.681e-02, -7.390e-02, -5.747e-02, 2.561e-01, -1.791e-02, 4.539e-02), r);\n\tr = MulAdd(s3_8, M4(-7.839e-02, 6.835e-03, -3.815e-02, -6.703e-02, 1.276e-02, -4.495e-02, -8.536e-02, -5.965e-02, 7.876e-02, -7.166e-02, 1.930e-01, 1.739e-01, 2.574e-02, -6.235e-02, 1.674e-01, -2.943e-02), r);\n\tr = MulAdd(s4_0, M4(3.382e-02, -5.765e-02, -1.294e-01, -1.117e-01, 7.191e-02, -1.291e-01, -1.010e-01, -6.787e-02, -9.919e-02, -1.310e-02, -5.468e-02, -8.673e-02, -4.614e-02, 2.058e-02, 1.568e-02, 6.677e-02), r);\n\tr = MulAdd(s4_1, M4(9.792e-02, -1.954e-01, -1.295e-01, -9.406e-02, 7.871e-03, 2.065e-02, -1.771e-01, -1.587e-01, 1.736e-02, -7.412e-02, -1.920e-02, 6.103e-02, -1.134e-01, -7.384e-02, 2.419e-01, -2.548e-01), r);\n\tr = MulAdd(s4_2, M4(-1.086e-01, -6.933e-02, -2.300e-02, -4.260e-02, 7.342e-02, 1.651e-01, -2.871e-01, -1.338e-01, 2.483e-02, 1.475e-02, 2.509e-02, 8.418e-02, 9.221e-02, 8.517e-02, -3.979e-02, 1.869e-02), r);\n\tr = MulAdd(s4_3, M4(-1.124e-01, 1.399e-01, -2.047e-01, -1.929e-01, 6.006e-02, 3.435e-02, 2.235e-01, 4.982e-02, -1.128e-01, -2.094e-02, 3.461e-01, -9.115e-04, -7.437e-02, -2.786e-03, 9.743e-02, 1.126e-01), r);\n\tr = MulAdd(s4_4, M4(-2.532e-01, -1.764e-02, -7.388e-02, 2.223e-01, 3.639e-01, 1.871e-01, 7.373e-02, 9.498e-02, 1.290e-01, 1.640e-02, 3.807e-02, 1.783e-01, -6.746e-02, 2.492e-02, -2.109e-01, -7.012e-02), r);\n\tr = MulAdd(s4_5, M4(-2.031e-01, -1.759e-01, -4.291e-02, -1.635e-01, 1.516e-01, 1.822e-01, -8.788e-02, -9.115e-02, -3.340e-02, 1.875e-02, -1.274e-01, -1.669e-01, -4.712e-02, 2.403e-02, 2.677e-02, -9.679e-02), r);\n\tr = MulAdd(s4_6, M4(-1.202e-01, -1.172e-01, 1.657e-01, 1.462e-01, 1.135e-01, -2.146e-02, 1.613e-01, -8.259e-02, -3.707e-02, 1.363e-01, 1.371e-01, -8.764e-02, 7.924e-02, 3.371e-02, 7.389e-02, 2.623e-02), r);\n\tr = MulAdd(s4_7, M4(-4.097e-03, -6.457e-02, 3.019e-01, 9.493e-02, -1.907e-01, 2.051e-01, 1.891e-01, 1.184e-01, -6.448e-02, -3.581e-02, -9.772e-03, -1.005e-02, -9.187e-02, -5.031e-02, -7.213e-02, 4.266e-02), r);\n\tr = MulAdd(s4_8, M4(4.281e-02, -5.041e-02, 1.101e-01, 9.184e-02, -2.280e-01, 6.764e-03, -1.061e-01, -2.754e-01, 2.351e-02, -4.372e-02, -4.200e-02, 1.559e-02, -1.357e-02, 3.516e-02, 4.607e-02, -1.332e-02), r);\n\tr = MulAdd(s5_0, M4(-7.007e-02, 1.679e-01, -1.274e-02, 7.591e-02, 1.389e-02, 1.539e-02, -9.365e-02, 8.885e-02, -7.271e-02, 4.573e-02, 1.978e-01, 3.180e-02, 3.804e-02, -1.208e-01, -1.929e-01, 1.365e-01), r);\n\tr = MulAdd(s5_1, M4(-3.422e-03, 9.937e-02, 2.542e-02, 1.253e-01, -7.473e-02, -1.020e-03, -1.301e-02, 5.780e-02, 1.960e-01, -7.564e-02, 8.091e-02, 4.205e-02, -3.428e-01, -1.536e-01, -1.327e-01, -1.579e-01), r);\n\tr = MulAdd(s5_2, M4(9.969e-02, -1.642e-01, -5.405e-02, 1.528e-01, 3.682e-02, -1.369e-02, 1.060e-01, -5.419e-02, 9.039e-03, -3.165e-02, -8.450e-02, -8.017e-02, -8.518e-02, 2.551e-02, -1.087e-01, 1.125e-01), r);\n\tr = MulAdd(s5_3, M4(-1.152e-01, 7.566e-02, 7.127e-02, -4.112e-02, 3.422e-02, -2.033e-01, 7.094e-02, -3.279e-03, 1.251e-01, -1.479e-01, 3.210e-01, 2.175e-02, 1.728e-01, -5.799e-02, -7.935e-03, 9.648e-02), r);\n\tr = MulAdd(s5_4, M4(2.459e-01, 2.175e-01, 2.886e-02, -6.984e-02, 1.226e-01, 7.211e-03, 1.837e-02, 9.922e-02, 4.560e-01, -1.017e-01, 2.737e-02, 6.745e-02, 1.495e-03, 1.674e-01, -1.435e-01, -4.169e-02), r);\n\tr = MulAdd(s5_5, M4(-7.349e-02, -5.326e-02, 1.862e-01, -1.118e-01, -6.708e-02, -1.111e-01, -3.200e-02, -1.652e-01, -3.148e-03, -4.066e-02, -7.074e-02, -5.107e-02, -3.497e-02, -1.160e-01, -1.724e-01, 5.532e-03), r);\n\tr = MulAdd(s5_6, M4(4.559e-02, 8.109e-02, 8.744e-02, 8.321e-02, -8.380e-03, 8.471e-02, -9.455e-02, -8.131e-02, -2.126e-01, 1.962e-01, -1.948e-02, 7.930e-02, 1.526e-01, -1.633e-01, -6.995e-02, 8.871e-02), r);\n\tr = MulAdd(s5_7, M4(-6.974e-02, 5.436e-02, 3.158e-02, 9.851e-02, -1.683e-02, 1.089e-01, -3.526e-02, -8.762e-02, -2.212e-01, -4.418e-02, -1.515e-01, 6.581e-02, 2.384e-01, -1.836e-02, -6.843e-02, -7.604e-02), r);\n\tr = MulAdd(s5_8, M4(4.627e-03, 5.753e-02, -6.744e-02, -2.015e-01, -4.092e-02, 6.422e-02, 1.893e-02, -2.088e-01, -9.010e-02, 2.032e-02, -6.638e-02, -3.300e-03, 8.718e-02, -2.528e-02, 2.858e-02, 1.160e-01), r);\n\tr = MulAdd(s6_0, M4(6.870e-02, 1.131e-02, 7.865e-02, -3.451e-02, 1.591e-02, -1.381e-01, -9.905e-02, -2.441e-01, -1.138e-01, 2.561e-01, -2.368e-02, -1.296e-01, 1.939e-01, -2.497e-01, -4.962e-02, -1.540e-01), r);\n\tr = MulAdd(s6_1, M4(1.207e-01, 1.171e-01, -9.254e-02, -8.790e-03, -5.541e-02, -1.699e-01, -2.360e-02, -1.511e-01, 4.065e-02, -1.579e-01, -1.230e-01, 3.388e-02, -7.535e-02, -2.809e-04, -1.092e-01, 8.226e-02), r);\n\tr = MulAdd(s6_2, M4(1.462e-01, 1.123e-02, -1.396e-01, 3.841e-02, -1.342e-01, 1.159e-01, 7.373e-03, -9.726e-02, 1.521e-01, 2.392e-01, -3.398e-02, -7.629e-02, 3.649e-02, 1.545e-01, 1.291e-01, -1.353e-01), r);\n\tr = MulAdd(s6_3, M4(1.193e-01, 6.714e-02, -5.676e-02, -6.763e-02, 2.939e-01, -4.573e-02, -2.876e-02, 7.910e-02, 2.628e-01, -3.672e-02, 5.333e-02, -1.391e-01, -2.088e-02, 3.584e-01, 3.513e-02, 3.537e-02), r);\n\tr = MulAdd(s6_4, M4(-3.668e-02, -4.670e-02, 7.637e-02, -3.769e-02, 3.771e-02, 1.010e-01, -2.853e-01, 1.099e-01, -1.628e-02, -2.058e-01, -5.978e-02, 2.668e-01, -2.075e-01, -2.548e-01, 2.696e-01, 1.503e-01), r);\n\tr = MulAdd(s6_5, M4(-9.871e-02, 1.987e-01, -5.740e-02, 6.089e-02, -1.584e-01, 8.837e-02, -3.021e-02, 1.039e-01, -9.652e-02, -1.423e-01, -4.528e-02, 3.550e-02, 8.129e-02, 7.949e-02, -3.520e-02, 1.582e-01), r);\n\tr = MulAdd(s6_6, M4(-9.904e-03, 5.141e-02, -4.732e-03, 2.337e-02, -3.112e-03, 1.407e-01, 6.291e-02, 5.261e-02, 1.129e-02, 1.724e-01, 1.948e-01, 1.209e-01, -3.328e-02, 6.157e-02, -1.265e-01, -1.565e-01), r);\n\tr = MulAdd(s6_7, M4(1.120e-01, 1.573e-01, 7.552e-02, -1.189e-01, -1.018e-01, -5.837e-03, 1.956e-01, -1.450e-01, -1.985e-01, -2.056e-01, 1.990e-01, 2.739e-02, -7.748e-02, 2.858e-02, -1.676e-01, -2.205e-01), r);\n\tr = MulAdd(s6_8, M4(3.343e-02, -1.598e-02, 8.243e-02, -1.057e-01, -9.837e-02, -1.382e-01, 4.827e-02, -2.322e-02, -6.006e-02, -1.225e-02, -8.345e-03, 3.788e-02, 7.137e-02, -8.822e-02, -1.240e-01, 1.587e-01), r);\n\tr = MulAdd(s7_0, M4(4.197e-03, -9.150e-02, 2.243e-02, 1.510e-01, -4.178e-02, -4.519e-03, -2.065e-01, -1.866e-01, -6.665e-02, 6.482e-02, -3.272e-02, -1.524e-02, -5.689e-02, -8.562e-02, -1.224e-01, -5.034e-02), r);\n\tr = MulAdd(s7_1, M4(-2.028e-01, 1.248e-02, -7.040e-02, 6.906e-02, -1.455e-01, -9.177e-02, -2.913e-02, -8.226e-02, 8.236e-02, 1.811e-01, -5.199e-02, 9.111e-02, 2.452e-01, -2.731e-03, -1.706e-02, 8.847e-02), r);\n\tr = MulAdd(s7_2, M4(4.152e-02, -2.097e-02, -6.550e-02, 5.457e-02, -8.043e-02, 4.064e-02, 2.533e-02, 4.574e-02, -5.159e-02, -2.161e-02, -4.714e-02, -1.196e-01, 1.831e-02, -7.269e-02, -2.514e-02, -1.522e-01), r);\n\tr = MulAdd(s7_3, M4(1.127e-01, -1.283e-01, -6.297e-02, 1.758e-02, 1.899e-01, 2.562e-02, -1.396e-01, -8.503e-02, -3.588e-02, 8.375e-02, -1.897e-01, 3.284e-02, -5.664e-02, 7.889e-02, -1.285e-01, -4.259e-02), r);\n\tr = MulAdd(s7_4, M4(1.804e-01, -1.357e-01, -9.422e-02, 1.343e-01, 6.370e-02, -8.731e-02, -2.610e-01, 3.235e-02, 2.090e-02, 1.737e-02, 3.840e-02, 6.650e-02, -1.454e-01, -9.199e-02, 1.087e-01, -8.518e-02), r);\n\tr = MulAdd(s7_5, M4(-7.470e-02, 1.550e-02, 5.159e-02, 1.604e-01, -2.909e-02, -3.405e-02, -4.281e-02, 1.604e-01, -7.784e-02, 9.256e-02, 1.461e-01, 1.052e-01, -6.975e-02, 2.712e-02, 9.854e-02, 6.271e-02), r);\n\tr = MulAdd(s7_6, M4(5.877e-02, -1.074e-01, -1.386e-01, 5.543e-02, -6.297e-03, -4.513e-02, -5.606e-02, 8.423e-02, -9.024e-02, -8.228e-02, 5.863e-02, -1.366e-02, -6.564e-02, -4.470e-04, 1.867e-03, 1.007e-01), r);\n\tr = MulAdd(s7_7, M4(5.408e-02, -1.122e-02, -1.600e-01, -2.141e-02, 2.848e-01, -3.632e-02, 5.869e-02, -1.663e-01, 1.365e-01, 8.206e-03, 6.789e-02, -3.498e-02, 3.298e-02, -9.073e-02, 4.929e-02, -3.582e-02), r);\n\tr = MulAdd(s7_8, M4(6.673e-02, -8.083e-02, -5.151e-03, -4.743e-02, 3.548e-02, -1.058e-01, -6.822e-02, -2.533e-02, -2.161e-02, -8.336e-02, 1.863e-02, -4.424e-02, 8.914e-02, 1.755e-02, 6.385e-02, 3.120e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.042e-02, -1.567e-02, 1.777e-02, 8.206e-03 };\n\tr = MulAdd(s0_0, M4(6.038e-02, -1.027e-01, 5.822e-02, -6.061e-02, -7.843e-02, 5.764e-02, -4.207e-02, -6.612e-02, 5.435e-02, -1.535e-02, -2.172e-02, 6.898e-02, -6.557e-02, 8.073e-02, 1.011e-02, -4.904e-02), r);\n\tr = MulAdd(s0_1, M4(8.764e-04, 1.018e-01, 1.772e-01, 1.661e-01, 6.140e-02, -2.055e-02, -1.707e-01, -7.450e-02, 7.612e-02, -1.036e-01, 1.102e-01, -1.187e-01, -1.174e-02, -3.453e-02, -9.480e-02, -9.441e-02), r);\n\tr = MulAdd(s0_2, M4(-5.569e-02, -1.362e-01, 1.829e-01, 1.028e-01, 2.850e-02, -2.040e-03, 5.163e-02, 3.880e-02, 5.329e-02, 5.051e-03, -2.657e-02, -4.745e-02, -5.201e-02, -1.034e-02, 3.430e-02, -7.121e-02), r);\n\tr = MulAdd(s0_3, M4(-1.999e-01, 2.646e-01, -1.668e-02, -2.097e-02, -3.757e-02, 2.681e-03, 9.334e-02, -7.001e-03, 1.230e-01, -3.327e-02, 3.168e-03, 2.902e-02, 6.001e-02, 9.742e-02, -1.138e-04, 8.002e-02), r);\n\tr = MulAdd(s0_4, M4(4.957e-02, 2.881e-01, -2.932e-01, 9.982e-02, -5.757e-02, -1.387e-01, 1.029e-01, -1.149e-01, -9.208e-02, 2.486e-01, 3.498e-02, 4.900e-02, 4.180e-02, 8.201e-03, 1.992e-01, -1.461e-02), r);\n\tr = MulAdd(s0_5, M4(5.227e-02, -3.034e-02, -2.078e-02, 3.595e-02, -8.179e-02, 2.010e-02, 1.053e-01, 1.640e-02, -1.606e-01, 3.057e-02, -4.679e-02, 9.908e-02, 4.368e-02, -1.294e-02, -4.690e-02, 8.246e-02), r);\n\tr = MulAdd(s0_6, M4(2.268e-02, 1.556e-01, -1.868e-02, 3.933e-02, 3.993e-02, -8.431e-02, -6.621e-02, 4.407e-02, -2.419e-02, 8.918e-02, -4.738e-02, -7.020e-02, 4.749e-02, -1.842e-02, -5.654e-02, -8.227e-03), r);\n\tr = MulAdd(s0_7, M4(-5.760e-04, 1.471e-01, -1.820e-01, 6.890e-02, 1.373e-01, 9.203e-03, -2.028e-01, 9.876e-02, 1.083e-01, 5.770e-02, -3.253e-02, 2.297e-02, 1.292e-02, 1.122e-01, -1.429e-01, -8.835e-02), r);\n\tr = MulAdd(s0_8, M4(-5.292e-02, 1.342e-01, -2.273e-03, 2.506e-01, 1.349e-02, 3.801e-03, -1.132e-01, -8.694e-02, 1.308e-01, 1.180e-02, -1.627e-01, 1.411e-01, 3.735e-02, -1.071e-01, 1.332e-02, -7.277e-02), r);\n\tr = MulAdd(s1_0, M4(2.520e-01, 1.005e-02, -6.599e-02, -1.435e-02, -8.251e-02, 9.219e-02, 2.099e-01, 4.397e-02, 7.254e-02, 5.108e-02, -6.084e-02, 2.280e-01, -7.666e-02, 2.139e-01, -1.559e-01, 3.090e-02), r);\n\tr = MulAdd(s1_1, M4(-1.438e-01, 1.429e-01, -1.312e-01, 2.296e-02, -1.380e-01, -1.234e-02, -9.997e-02, 1.424e-01, -1.930e-01, -2.154e-01, -5.713e-03, -1.436e-01, -1.227e-01, -6.206e-02, 1.316e-01, 1.183e-01), r);\n\tr = MulAdd(s1_2, M4(-3.133e-02, -7.789e-03, 9.705e-02, -2.099e-01, 2.683e-01, 8.855e-02, -1.552e-01, -2.798e-01, -4.940e-02, 7.202e-02, 4.606e-02, -1.568e-01, -1.705e-01, -2.370e-02, 6.812e-02, 5.503e-02), r);\n\tr = MulAdd(s1_3, M4(-2.010e-01, 7.593e-02, 1.140e-01, -1.111e-01, 3.125e-01, 1.057e-03, -2.343e-01, 2.188e-01, 1.613e-01, -5.725e-02, 2.443e-01, 1.606e-01, -1.111e-01, -3.890e-02, -1.082e-01, 2.268e-01), r);\n\tr = MulAdd(s1_4, M4(-1.969e-02, 1.231e-01, -1.682e-01, -2.341e-01, -2.476e-01, -2.521e-02, 1.433e-01, 2.585e-01, -5.905e-01, -6.658e-03, 3.786e-01, 1.818e-02, -3.195e-01, -4.331e-02, 2.499e-01, 3.572e-01), r);\n\tr = MulAdd(s1_5, M4(-2.933e-02, 6.255e-02, 5.270e-02, -6.322e-02, -6.288e-01, 3.056e-02, 2.344e-01, -5.509e-01, 4.417e-02, -1.143e-01, 1.720e-01, -3.562e-01, -1.757e-02, -7.980e-02, -5.221e-02, 1.142e-01), r);\n\tr = MulAdd(s1_6, M4(4.704e-02, -7.956e-03, -4.388e-02, 8.044e-02, 1.961e-01, 3.794e-02, -3.145e-01, 4.592e-02, 7.526e-02, 5.595e-02, -8.909e-02, -8.451e-02, -3.933e-02, 7.445e-02, -4.443e-01, -4.812e-02), r);\n\tr = MulAdd(s1_7, M4(-6.361e-03, -2.334e-02, 6.683e-02, 5.801e-02, 4.036e-01, 3.348e-01, -5.469e-01, -4.894e-01, 7.236e-02, -1.876e-02, 3.989e-02, -1.081e-01, 2.781e-02, -4.224e-02, 7.930e-02, 8.278e-02), r);\n\tr = MulAdd(s1_8, M4(7.127e-03, -7.018e-02, -1.531e-02, -2.631e-02, 1.443e-01, -1.601e-01, -2.977e-01, -3.354e-01, 2.859e-02, 3.597e-02, -6.660e-02, -9.328e-02, -2.760e-03, -1.686e-01, 4.671e-03, -5.109e-02), r);\n\tr = MulAdd(s2_0, M4(1.738e-01, 2.499e-01, 1.767e-01, -2.066e-01, -2.718e-02, 5.185e-02, 1.130e-01, 4.579e-02, -5.349e-02, -1.729e-02, 9.773e-03, 7.695e-02, -4.065e-02, -3.152e-02, -5.521e-02, -4.779e-02), r);\n\tr = MulAdd(s2_1, M4(1.050e-01, -2.569e-02, 1.166e-01, -4.488e-02, 5.872e-03, -1.715e-01, -4.873e-02, -8.728e-02, -5.655e-02, -5.162e-02, -2.014e-02, 5.109e-02, -2.352e-01, -6.745e-02, -4.318e-02, -1.529e-01), r);\n\tr = MulAdd(s2_2, M4(-5.747e-02, -1.001e-04, -1.659e-01, -1.151e-02, 1.184e-01, 1.088e-02, 9.885e-02, -4.186e-02, 2.511e-03, -4.830e-02, -9.706e-02, -2.413e-02, -1.844e-02, 3.858e-02, -7.717e-03, -6.948e-02), r);\n\tr = MulAdd(s2_3, M4(7.010e-02, -1.670e-02, 2.139e-01, 7.957e-02, -1.501e-01, 1.199e-02, 9.177e-02, -1.012e-01, 8.116e-03, -3.847e-02, -8.662e-02, 3.384e-02, 2.598e-02, 1.091e-01, 1.689e-02, -1.996e-02), r);\n\tr = MulAdd(s2_4, M4(5.851e-01, -4.156e-02, -2.361e-02, -1.495e-01, -4.768e-03, 2.125e-02, -5.071e-02, -2.313e-02, 1.628e-01, -1.056e-01, 4.753e-02, -5.418e-02, -1.305e-01, -1.263e-01, 3.208e-02, -7.109e-03), r);\n\tr = MulAdd(s2_5, M4(2.752e-01, -4.555e-04, -3.288e-01, 9.494e-02, 6.333e-02, 2.145e-01, -5.950e-02, -4.529e-02, -1.564e-01, 4.102e-02, 1.456e-01, 1.577e-01, -2.017e-01, -1.197e-02, -1.137e-01, -4.620e-02), r);\n\tr = MulAdd(s2_6, M4(3.852e-01, -3.149e-02, -2.738e-02, -1.856e-02, -2.038e-02, -1.391e-02, 1.545e-01, 4.244e-02, -7.351e-02, -1.266e-01, 6.077e-02, 2.922e-02, -1.241e-01, 5.051e-02, -1.331e-01, 1.044e-01), r);\n\tr = MulAdd(s2_7, M4(-1.448e-01, 1.017e-01, 1.255e-01, -1.116e-01, 6.711e-02, -4.391e-02, 4.815e-03, 1.760e-01, -8.878e-02, 5.888e-03, -1.435e-01, -1.693e-01, -2.145e-01, -6.326e-02, 1.285e-02, -7.705e-02), r);\n\tr = MulAdd(s2_8, M4(-9.547e-02, -1.173e-01, 1.793e-01, -7.501e-02, 7.400e-02, -6.034e-03, 3.186e-02, 1.514e-01, 2.215e-02, -4.265e-02, 6.466e-03, 2.240e-02, -1.609e-01, 7.133e-02, -3.133e-02, -7.962e-03), r);\n\tr = MulAdd(s3_0, M4(1.172e-02, 2.080e-01, 1.168e-01, -5.939e-02, -6.782e-02, -4.500e-02, 9.755e-04, 3.416e-02, 2.640e-01, 9.256e-02, 3.313e-02, 6.642e-02, -5.530e-02, -4.369e-02, 9.257e-02, -6.417e-02), r);\n\tr = MulAdd(s3_1, M4(7.388e-02, -9.949e-02, -7.112e-02, -6.696e-02, -1.935e-02, -5.532e-02, -3.353e-02, 8.160e-02, 9.737e-02, -5.728e-02, -2.573e-02, 2.480e-01, -2.191e-01, 1.059e-01, 2.171e-01, 2.034e-02), r);\n\tr = MulAdd(s3_2, M4(7.582e-02, 1.122e-01, -1.356e-03, -2.247e-01, 8.112e-02, 5.689e-02, -1.266e-01, -1.438e-01, 1.457e-01, 3.666e-02, -3.664e-02, -9.318e-02, 3.935e-02, 1.949e-02, -7.842e-02, -3.551e-02), r);\n\tr = MulAdd(s3_3, M4(-1.352e-01, -2.188e-01, -8.137e-02, 1.343e-01, -9.011e-02, 1.735e-01, -2.651e-01, -4.401e-02, -1.104e-01, -1.712e-02, -4.738e-02, 9.005e-02, 2.003e-01, 7.993e-02, 2.341e-02, -5.732e-02), r);\n\tr = MulAdd(s3_4, M4(-3.021e-01, -1.628e-01, -9.939e-02, -5.101e-02, 1.852e-01, 4.853e-02, -2.408e-01, 1.685e-01, -1.590e-01, -1.416e-01, 2.550e-01, 8.751e-02, -1.338e-01, -7.205e-02, 7.076e-02, 1.652e-01), r);\n\tr = MulAdd(s3_5, M4(1.865e-02, -1.665e-02, 2.272e-02, 3.661e-02, -1.933e-01, 2.391e-01, -4.422e-01, -2.826e-02, -9.839e-02, -3.878e-03, -1.376e-01, 8.164e-03, 2.325e-02, 5.991e-02, -1.257e-01, -1.250e-01), r);\n\tr = MulAdd(s3_6, M4(2.248e-02, -1.574e-01, 1.337e-01, 2.721e-02, -7.530e-02, 6.672e-02, -1.552e-01, -3.174e-02, -6.926e-03, -8.575e-02, 6.217e-02, -7.909e-02, 3.127e-02, 2.158e-01, -1.689e-01, -8.679e-02), r);\n\tr = MulAdd(s3_7, M4(-1.810e-02, 1.414e-01, -1.642e-01, 1.957e-01, 9.396e-02, 9.682e-02, 6.155e-02, -5.372e-02, 3.441e-03, 1.170e-01, -4.898e-04, 1.152e-01, 1.871e-01, -2.607e-01, -9.338e-02, 1.715e-01), r);\n\tr = MulAdd(s3_8, M4(-3.406e-02, -5.075e-02, 7.496e-02, -1.226e-01, -1.136e-02, 6.224e-02, -2.319e-01, 2.711e-02, 1.313e-01, 8.848e-02, -3.355e-01, -2.899e-01, 3.552e-02, 4.240e-02, -1.280e-01, -1.896e-01), r);\n\tr = MulAdd(s4_0, M4(2.978e-03, 4.338e-02, 2.667e-01, -3.428e-02, 4.550e-02, -5.447e-02, -3.128e-01, -5.822e-02, 7.073e-02, 9.923e-02, -1.416e-01, -8.767e-02, -6.636e-02, 1.224e-01, -4.772e-02, 2.206e-02), r);\n\tr = MulAdd(s4_1, M4(5.822e-02, 4.371e-02, 5.661e-02, 9.083e-04, -1.675e-01, 4.282e-02, 9.959e-02, 2.148e-02, 6.614e-02, -6.577e-02, 9.507e-02, 1.344e-01, -2.506e-02, -6.194e-02, 5.761e-02, -1.130e-01), r);\n\tr = MulAdd(s4_2, M4(-6.944e-02, -5.566e-02, 1.012e-01, -4.955e-02, -4.260e-02, 4.159e-02, -1.214e-01, -1.117e-01, -6.724e-03, -8.405e-02, -1.590e-01, 6.350e-02, 5.316e-02, -2.193e-03, -6.465e-02, 6.182e-02), r);\n\tr = MulAdd(s4_3, M4(-7.619e-02, -6.501e-02, 2.396e-01, 2.766e-02, -9.113e-02, -2.040e-01, 1.268e-01, -5.021e-02, -5.359e-02, -3.492e-03, 9.936e-02, 1.327e-01, -1.176e-02, 1.324e-01, -6.895e-02, -1.033e-01), r);\n\tr = MulAdd(s4_4, M4(-9.050e-02, -1.741e-01, 1.353e-01, -2.499e-02, 1.499e-01, 6.837e-02, 1.544e-01, -2.328e-01, -1.001e-01, -3.200e-01, 2.555e-02, 3.163e-02, 5.167e-03, 6.599e-02, 5.332e-02, -2.383e-02), r);\n\tr = MulAdd(s4_5, M4(-1.380e-01, -6.767e-02, 7.205e-02, 7.794e-02, 3.260e-02, 8.421e-03, 9.155e-02, 2.219e-03, -2.114e-01, -5.606e-02, 9.497e-02, 1.809e-01, 3.274e-02, -3.988e-03, -9.138e-02, -8.120e-02), r);\n\tr = MulAdd(s4_6, M4(-2.992e-02, -2.485e-03, 2.118e-02, 1.017e-02, 9.404e-02, -4.484e-02, -2.044e-01, 3.509e-02, -8.506e-02, -7.819e-02, -2.538e-02, -2.135e-02, 1.035e-01, 8.211e-02, -6.053e-02, 2.719e-02), r);\n\tr = MulAdd(s4_7, M4(-1.954e-02, -1.303e-01, 2.458e-02, 1.259e-01, 6.521e-02, 7.827e-02, -2.962e-02, -1.487e-01, 1.335e-01, -1.090e-01, 5.524e-02, 1.814e-01, -1.546e-01, 1.165e-01, 4.443e-04, -1.573e-01), r);\n\tr = MulAdd(s4_8, M4(-3.494e-03, 4.970e-02, 4.422e-02, 8.782e-02, -5.605e-02, 2.573e-01, -2.386e-01, -1.946e-01, 2.648e-02, -1.001e-01, -5.948e-02, 1.535e-01, 3.174e-02, 8.339e-02, -5.591e-02, 1.059e-02), r);\n\tr = MulAdd(s5_0, M4(3.668e-02, 5.965e-02, -1.721e-02, -3.068e-02, 1.906e-02, -1.586e-01, -1.670e-01, 1.607e-01, -1.702e-01, -1.249e-01, -2.854e-01, 2.574e-02, -1.970e-01, -1.641e-02, -8.082e-02, -5.110e-02), r);\n\tr = MulAdd(s5_1, M4(-1.574e-01, 1.272e-01, 1.492e-02, -7.330e-03, -2.324e-01, -6.950e-02, 1.762e-02, 2.972e-02, -3.110e-01, -6.619e-03, -3.372e-02, -9.828e-02, -1.360e-02, -9.453e-02, 9.109e-02, -6.697e-02), r);\n\tr = MulAdd(s5_2, M4(3.255e-02, 1.122e-01, 3.934e-02, -1.884e-01, -2.090e-01, -6.767e-02, 6.147e-02, 1.271e-01, -9.991e-02, -8.133e-02, -9.660e-02, -4.156e-02, 2.997e-02, -9.234e-02, -6.113e-02, -1.478e-01), r);\n\tr = MulAdd(s5_3, M4(-5.160e-02, -1.590e-02, -1.875e-01, -4.392e-02, -5.295e-02, -1.335e-01, -4.673e-02, 5.958e-02, -6.313e-02, -5.531e-02, 1.475e-01, 1.547e-02, 1.027e-01, -6.958e-02, 2.418e-02, 2.403e-02), r);\n\tr = MulAdd(s5_4, M4(9.424e-02, -8.101e-02, -2.912e-01, -1.108e-01, 1.939e-01, 3.821e-02, -5.703e-02, 1.513e-02, 9.871e-02, 4.350e-02, 2.875e-02, -1.627e-01, -2.624e-02, -1.394e-01, 1.132e-01, -1.424e-02), r);\n\tr = MulAdd(s5_5, M4(-6.870e-02, -6.601e-02, -1.372e-01, -1.179e-01, 1.986e-01, 5.603e-02, 1.706e-01, -9.338e-03, 1.029e-01, -5.792e-02, 6.861e-02, -7.211e-02, -4.139e-02, -2.509e-01, -1.461e-01, -1.405e-01), r);\n\tr = MulAdd(s5_6, M4(7.451e-02, 2.164e-01, -2.009e-01, 2.788e-02, 1.175e-01, -9.648e-02, -1.430e-02, -7.214e-02, 9.366e-02, -6.314e-03, -1.510e-01, -6.284e-03, -1.500e-01, 2.851e-02, 5.196e-02, 1.170e-01), r);\n\tr = MulAdd(s5_7, M4(-3.499e-04, 8.393e-02, -1.515e-01, 5.736e-02, 3.603e-02, 1.352e-02, 9.950e-02, -2.798e-02, 2.069e-01, 7.262e-02, 4.129e-02, -1.399e-01, -1.792e-01, -3.952e-01, 1.173e-01, -4.999e-02), r);\n\tr = MulAdd(s5_8, M4(-4.190e-02, 1.134e-01, -2.901e-01, -8.789e-02, -1.495e-01, 2.644e-01, -9.540e-02, -3.225e-01, -7.771e-02, 1.823e-01, -2.192e-01, -1.170e-01, -4.472e-03, -1.040e-01, 1.290e-01, 1.096e-02), r);\n\tr = MulAdd(s6_0, M4(-1.807e-01, -3.467e-02, -1.978e-01, 4.916e-03, 6.145e-02, 1.576e-02, 1.923e-02, -1.277e-02, 2.114e-02, -3.700e-02, -3.673e-02, -9.642e-02, 1.059e-01, 6.235e-02, 6.436e-02, 2.042e-02), r);\n\tr = MulAdd(s6_1, M4(-9.068e-02, 5.704e-02, -8.745e-02, -6.303e-02, 2.124e-01, -1.943e-01, -1.370e-01, -1.624e-01, -1.096e-01, 4.166e-02, 6.197e-02, -1.716e-02, 1.131e-01, 4.626e-02, 8.055e-02, 6.132e-02), r);\n\tr = MulAdd(s6_2, M4(7.138e-02, -5.989e-02, 1.507e-01, 5.818e-02, 1.495e-01, -2.149e-02, -7.632e-02, -1.873e-01, 7.602e-02, 1.672e-02, 1.305e-01, 5.485e-02, -1.106e-01, 9.418e-02, 2.097e-01, -1.107e-01), r);\n\tr = MulAdd(s6_3, M4(-7.939e-02, -9.415e-02, -3.253e-01, 5.550e-02, -5.333e-02, -6.900e-02, 2.532e-01, -1.236e-02, 6.154e-02, 2.696e-03, -1.090e-01, 9.496e-02, -5.117e-02, 2.633e-01, 9.791e-02, -5.712e-02), r);\n\tr = MulAdd(s6_4, M4(-1.092e-02, 5.562e-02, 2.001e-02, -8.640e-02, 2.022e-01, 1.713e-01, 7.558e-02, -2.621e-02, -2.034e-01, -7.972e-02, -9.542e-02, -7.372e-02, -2.119e-02, -9.791e-02, -4.815e-02, 1.717e-01), r);\n\tr = MulAdd(s6_5, M4(-6.813e-02, -1.132e-01, 9.465e-02, -2.221e-02, 8.347e-02, -2.863e-02, 1.618e-02, 1.241e-01, -1.080e-01, -4.588e-02, -1.048e-02, 8.343e-02, 2.000e-02, -7.991e-03, 3.295e-01, -7.222e-02), r);\n\tr = MulAdd(s6_6, M4(-1.257e-01, 2.813e-02, -5.140e-02, -1.422e-01, 1.255e-01, 1.617e-01, -9.818e-02, 9.477e-03, -1.898e-03, 8.431e-02, 1.631e-01, -2.976e-02, 2.819e-01, 6.733e-02, 4.286e-02, 8.241e-02), r);\n\tr = MulAdd(s6_7, M4(-1.021e-01, -1.888e-01, -8.428e-02, 1.146e-01, 1.510e-01, -5.692e-02, -1.291e-01, 5.237e-02, 2.558e-02, -3.653e-02, 1.264e-01, 3.667e-02, -9.369e-02, 1.182e-01, -2.564e-01, -4.997e-02), r);\n\tr = MulAdd(s6_8, M4(4.274e-02, 9.755e-02, -9.820e-02, -5.409e-03, 9.648e-03, -3.442e-02, -1.963e-01, -9.613e-02, 8.596e-02, -2.486e-02, -7.731e-02, 1.119e-01, 3.031e-03, 1.189e-02, 7.198e-02, -2.010e-02), r);\n\tr = MulAdd(s7_0, M4(-8.593e-02, 4.410e-02, 5.916e-02, 5.405e-02, 1.801e-02, 3.804e-02, 8.731e-02, 4.344e-02, 2.200e-01, -2.394e-02, 1.496e-01, 6.278e-02, -7.431e-02, 1.860e-01, 7.845e-02, -9.594e-02), r);\n\tr = MulAdd(s7_1, M4(-1.069e-01, -2.582e-02, 5.910e-02, -6.761e-02, -1.506e-01, -8.254e-02, 8.958e-02, -4.935e-02, -1.770e-01, -2.038e-01, 7.928e-02, 3.037e-01, -1.013e-01, 2.359e-02, -1.057e-01, -5.003e-02), r);\n\tr = MulAdd(s7_2, M4(6.604e-02, -8.159e-02, 9.681e-02, -9.276e-03, 4.673e-02, -1.199e-02, -2.188e-01, 4.027e-02, 1.614e-01, 4.145e-02, 2.027e-01, 4.471e-02, -5.706e-02, 8.516e-03, -2.315e-02, -5.171e-02), r);\n\tr = MulAdd(s7_3, M4(5.693e-02, -2.617e-03, 9.846e-02, 1.033e-01, -1.299e-01, -6.217e-03, 1.042e-01, -1.079e-01, -2.066e-01, -2.701e-01, 3.056e-01, 9.355e-02, 7.681e-02, 1.426e-01, -1.712e-01, 9.973e-02), r);\n\tr = MulAdd(s7_4, M4(1.308e-01, 5.535e-02, 1.887e-01, -7.625e-02, 4.354e-02, 4.574e-02, -7.604e-03, -1.578e-02, -1.550e-01, 1.512e-01, -3.109e-01, -3.903e-01, -1.085e-01, -1.300e-01, 8.819e-02, 3.659e-02), r);\n\tr = MulAdd(s7_5, M4(-5.433e-02, 1.856e-04, 1.124e-01, -1.339e-01, -1.416e-01, -1.226e-02, -7.421e-02, -3.983e-02, -1.132e-01, 1.275e-01, -4.816e-02, -1.477e-01, 1.074e-01, 7.671e-02, 1.985e-01, 1.291e-01), r);\n\tr = MulAdd(s7_6, M4(-3.036e-02, -1.725e-02, -2.685e-02, -2.915e-03, 3.075e-02, 1.702e-01, -9.196e-02, -1.142e-01, 6.406e-02, 7.094e-03, -1.987e-02, 9.400e-02, 6.958e-02, 4.125e-02, -2.776e-02, 2.524e-02), r);\n\tr = MulAdd(s7_7, M4(8.227e-02, -1.415e-01, 3.321e-02, 1.146e-03, -5.870e-02, -4.962e-02, 4.423e-02, -8.562e-03, -1.255e-01, -2.399e-02, -9.390e-02, 2.133e-01, 9.043e-02, -1.159e-02, -1.988e-01, 5.948e-03), r);\n\tr = MulAdd(s7_8, M4(3.438e-02, 1.674e-01, -9.081e-02, 1.104e-01, -8.589e-02, -1.508e-01, -6.714e-03, -1.057e-02, -3.694e-02, 9.586e-02, -8.628e-03, 1.749e-01, 1.191e-02, -7.848e-02, -1.482e-01, -2.125e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.081e-02, 1.104e-03, 2.498e-03, 2.111e-03 };\n\tr = MulAdd(s0_0, M4(-1.871e-01, -2.821e-02, -2.131e-01, -2.105e-02, 1.113e-02, -8.090e-02, -6.108e-02, -1.710e-02, -2.215e-02, -1.474e-03, 1.704e-02, 3.001e-02, -5.379e-02, 4.545e-02, -1.134e-01, -2.035e-01), r);\n\tr = MulAdd(s0_1, M4(-9.495e-04, -1.423e-01, -2.280e-02, -2.646e-02, -4.118e-02, 1.052e-01, -6.480e-02, -3.867e-02, -1.676e-02, -2.095e-02, 7.072e-02, 1.037e-01, 1.288e-01, -1.114e-02, 1.837e-02, -2.369e-02), r);\n\tr = MulAdd(s0_2, M4(-1.243e-02, -1.434e-01, 8.768e-03, 2.108e-01, 1.194e-01, 5.633e-02, -1.265e-02, -9.167e-02, -2.684e-02, -1.275e-01, -3.768e-02, -5.514e-02, -4.753e-02, 3.975e-02, 1.264e-01, 3.772e-02), r);\n\tr = MulAdd(s0_3, M4(-5.436e-02, 1.387e-01, -4.905e-02, 1.009e-02, 2.186e-04, -9.563e-02, -7.090e-02, -1.014e-01, 2.932e-03, 1.358e-01, -2.002e-02, 3.347e-02, 7.167e-02, 1.143e-01, 1.485e-01, -9.345e-02), r);\n\tr = MulAdd(s0_4, M4(-1.239e-01, -6.966e-02, 1.447e-01, -1.225e-01, -6.644e-03, -6.150e-02, -1.980e-01, 2.807e-02, -3.973e-03, 1.241e-02, 1.473e-01, -2.119e-01, -5.985e-02, -1.174e-02, -1.191e-01, -1.458e-01), r);\n\tr = MulAdd(s0_5, M4(-1.331e-01, -8.315e-02, -1.300e-01, -1.763e-01, -6.882e-02, -4.095e-03, -3.071e-02, -1.962e-01, -1.584e-03, -1.034e-01, -4.404e-02, -9.630e-02, -1.096e-02, -3.780e-02, -3.443e-02, 5.438e-02), r);\n\tr = MulAdd(s0_6, M4(-7.963e-02, -3.774e-02, 2.984e-02, 7.809e-02, -5.955e-02, -3.516e-02, -2.589e-02, -6.405e-02, 1.241e-02, -4.356e-02, 2.731e-02, -4.592e-02, -1.681e-02, -2.013e-02, 1.026e-04, 6.043e-02), r);\n\tr = MulAdd(s0_7, M4(6.424e-02, -1.309e-01, -1.238e-01, -4.344e-02, 1.308e-03, -1.141e-01, -5.711e-02, -1.666e-01, -3.539e-03, -1.410e-02, -6.655e-02, -2.380e-02, 1.941e-02, -7.815e-02, 1.136e-01, -3.781e-02), r);\n\tr = MulAdd(s0_8, M4(-2.276e-02, -2.375e-01, -2.214e-02, 5.372e-03, 6.425e-03, -7.252e-02, 7.044e-02, -8.419e-03, -7.296e-02, -4.230e-02, 3.871e-03, 3.827e-02, -3.834e-02, 7.722e-02, 2.097e-03, -8.225e-02), r);\n\tr = MulAdd(s1_0, M4(4.056e-02, -3.233e-02, -6.508e-02, -6.274e-02, -1.572e-01, -1.340e-01, 6.801e-02, 8.273e-02, 8.778e-02, 8.204e-02, 1.450e-01, 1.294e-01, 6.334e-02, -2.436e-01, -2.443e-01, 1.411e-01), r);\n\tr = MulAdd(s1_1, M4(1.442e-01, 1.466e-03, -9.557e-02, -5.947e-02, 1.829e-01, 2.630e-01, -6.553e-02, 1.282e-02, 2.104e-01, 7.472e-03, 2.137e-01, -1.518e-02, 1.268e-01, -3.356e-01, -5.628e-02, -1.184e-01), r);\n\tr = MulAdd(s1_2, M4(1.325e-01, -6.010e-02, -8.943e-03, 1.608e-02, -4.346e-02, 2.257e-02, 2.482e-02, -1.306e-01, 1.403e-01, 1.675e-01, -3.712e-02, -3.032e-02, -1.534e-01, -2.324e-01, 9.234e-02, 6.583e-02), r);\n\tr = MulAdd(s1_3, M4(7.828e-02, -4.908e-02, -3.408e-02, 4.230e-02, 2.449e-02, 3.121e-01, -8.996e-02, -8.823e-02, -1.253e-01, 1.874e-01, 1.196e-01, 1.294e-01, -1.330e-01, 2.173e-01, 6.471e-02, 2.821e-02), r);\n\tr = MulAdd(s1_4, M4(2.224e-02, -2.149e-02, 2.666e-01, -9.329e-02, 2.452e-01, -5.926e-01, -1.972e-01, 1.340e-02, 7.994e-03, -1.694e-01, 5.613e-01, -3.168e-01, -1.292e-01, 1.472e-02, -1.207e-01, -1.759e-01), r);\n\tr = MulAdd(s1_5, M4(-2.011e-02, 4.120e-02, 8.215e-02, -2.399e-01, -2.318e-01, -8.668e-02, 1.445e-01, 1.350e-01, -1.501e-01, -1.454e-02, -8.517e-02, -1.553e-01, 3.227e-02, 1.248e-02, 5.942e-02, 1.594e-01), r);\n\tr = MulAdd(s1_6, M4(7.560e-03, 4.543e-02, -6.540e-02, 4.231e-02, 2.725e-02, 1.371e-02, 2.006e-01, 1.437e-01, -4.834e-02, -1.133e-02, 8.049e-02, -2.226e-02, -8.326e-02, -8.656e-02, -7.931e-02, 4.502e-02), r);\n\tr = MulAdd(s1_7, M4(-6.518e-02, 8.934e-02, -1.219e-01, -4.372e-02, 4.623e-02, -3.027e-01, -1.326e-01, -1.512e-01, -3.234e-02, -6.440e-02, 5.738e-02, -4.798e-03, 6.094e-02, 2.635e-02, 1.314e-01, -7.782e-02), r);\n\tr = MulAdd(s1_8, M4(6.408e-02, 4.318e-02, -1.060e-02, -6.661e-02, -2.892e-01, -5.121e-01, 2.127e-01, -2.559e-01, -1.175e-01, -1.270e-01, 8.104e-03, -6.716e-02, -5.801e-02, 1.361e-01, -2.497e-02, -3.579e-02), r);\n\tr = MulAdd(s2_0, M4(-2.161e-01, 1.363e-01, 8.227e-02, -6.284e-02, -5.903e-02, 5.772e-03, 2.087e-02, -1.065e-01, -1.529e-02, 1.757e-01, 6.662e-02, -2.364e-02, -6.565e-02, 7.983e-02, -7.751e-02, -7.226e-02), r);\n\tr = MulAdd(s2_1, M4(-2.017e-02, 4.055e-02, 9.606e-02, -2.980e-02, -3.927e-02, 1.147e-01, 2.286e-02, 2.563e-01, 3.504e-02, 1.352e-01, 5.012e-02, -3.308e-04, -1.470e-01, -3.391e-02, 1.755e-01, 9.478e-02), r);\n\tr = MulAdd(s2_2, M4(-1.474e-01, -1.028e-01, 7.540e-02, -1.023e-01, -7.313e-02, 1.066e-01, 5.016e-02, -1.897e-01, -5.914e-02, 7.808e-02, -4.346e-02, -2.776e-02, 2.904e-02, 8.417e-02, -4.232e-02, 1.674e-01), r);\n\tr = MulAdd(s2_3, M4(2.335e-01, -2.842e-02, -5.739e-02, -1.221e-01, 2.011e-02, 3.406e-02, 1.656e-01, -1.083e-01, 3.551e-02, -9.249e-02, 5.859e-02, 3.906e-02, 7.709e-02, 1.910e-01, 2.195e-02, 7.340e-02), r);\n\tr = MulAdd(s2_4, M4(7.809e-02, -1.515e-02, 1.817e-01, -7.771e-02, 9.634e-02, 1.301e-01, -3.744e-02, 1.008e-01, -4.234e-02, 2.875e-03, -9.835e-04, 3.331e-02, 2.310e-01, -2.396e-01, -2.066e-01, -7.600e-02), r);\n\tr = MulAdd(s2_5, M4(2.134e-02, -4.246e-02, 7.435e-03, -9.941e-03, 2.696e-02, -1.199e-01, -6.648e-03, -6.885e-02, 6.191e-03, -4.447e-02, 1.650e-02, 9.745e-02, 1.988e-01, -1.938e-01, 2.823e-01, 1.705e-01), r);\n\tr = MulAdd(s2_6, M4(1.660e-01, -2.599e-01, 4.331e-02, -1.877e-01, 6.713e-02, 1.880e-02, 7.058e-03, -4.739e-02, -1.476e-02, 2.851e-02, -2.477e-02, -2.204e-03, 1.588e-02, 7.779e-03, -1.553e-01, 3.717e-02), r);\n\tr = MulAdd(s2_7, M4(1.023e-01, -1.597e-02, -6.167e-02, 6.849e-02, 4.146e-02, 7.833e-03, 4.950e-02, 1.834e-03, 2.423e-03, 1.970e-02, 2.839e-02, -5.577e-02, -1.964e-01, -1.136e-01, 7.158e-03, -4.833e-02), r);\n\tr = MulAdd(s2_8, M4(-6.461e-02, 1.330e-01, -9.992e-03, 3.494e-02, 1.050e-02, 3.294e-02, -7.505e-02, 1.301e-03, 6.948e-02, -3.319e-03, 4.139e-02, -1.808e-02, 1.410e-01, -7.249e-02, -9.410e-02, -2.916e-03), r);\n\tr = MulAdd(s3_0, M4(9.794e-02, -8.956e-02, 9.463e-03, -3.120e-02, -1.004e-01, -1.610e-01, -4.092e-02, -2.509e-01, -9.779e-03, -2.849e-01, 9.762e-02, 3.390e-02, -7.858e-02, -2.126e-02, -8.321e-02, -4.915e-02), r);\n\tr = MulAdd(s3_1, M4(1.035e-03, -5.190e-02, 9.745e-02, 2.534e-01, -1.810e-01, 2.817e-01, -1.096e-01, 2.089e-01, -9.686e-02, -2.929e-01, 2.868e-02, 1.402e-01, -8.799e-02, -2.324e-02, 7.078e-02, -2.115e-03), r);\n\tr = MulAdd(s3_2, M4(9.160e-02, 2.894e-02, -8.441e-03, -1.818e-01, -1.529e-01, 9.104e-02, 6.442e-02, -2.131e-01, -3.002e-01, -1.751e-01, -1.274e-01, 7.683e-02, 2.336e-02, 6.137e-02, -2.225e-02, 9.249e-02), r);\n\tr = MulAdd(s3_3, M4(-9.086e-02, -1.176e-01, -2.192e-01, 2.074e-02, 9.874e-02, 7.857e-02, 5.903e-02, -1.617e-01, -1.056e-01, -2.939e-01, 1.331e-02, -2.528e-02, -9.598e-02, -1.886e-02, 1.347e-02, -2.747e-02), r);\n\tr = MulAdd(s3_4, M4(3.116e-02, -1.008e-01, 1.747e-01, 2.508e-02, 1.102e-01, 8.567e-02, -1.714e-01, -3.481e-02, -2.085e-01, -3.166e-02, -9.038e-02, 1.993e-01, 1.475e-01, -1.922e-01, -9.841e-02, -2.740e-02), r);\n\tr = MulAdd(s3_5, M4(-2.964e-02, 3.304e-02, -5.346e-02, -3.595e-02, -1.856e-02, -2.969e-01, -1.847e-01, -4.361e-02, -1.784e-01, 9.786e-02, 1.694e-01, 1.664e-01, 7.496e-02, 2.784e-02, 1.145e-01, -2.746e-02), r);\n\tr = MulAdd(s3_6, M4(-4.400e-02, 2.339e-02, 6.149e-02, 1.891e-03, 1.015e-01, -3.804e-03, 1.096e-01, -7.637e-02, -7.288e-02, -9.137e-02, -7.551e-02, 8.777e-03, -6.516e-02, 1.604e-02, 4.501e-02, -5.608e-02), r);\n\tr = MulAdd(s3_7, M4(3.896e-03, -7.334e-02, -3.673e-02, 2.116e-03, 1.060e-01, 2.827e-03, 5.156e-02, -1.699e-01, -3.804e-02, -1.013e-02, -2.048e-01, 1.115e-01, -5.598e-02, 1.942e-01, -3.608e-02, -9.662e-03), r);\n\tr = MulAdd(s3_8, M4(-1.038e-01, 4.401e-02, 1.331e-02, -1.917e-02, 9.200e-02, 1.028e-01, 3.215e-02, -4.704e-02, -1.374e-01, -1.129e-01, -8.069e-02, -6.331e-02, -2.008e-02, 1.892e-02, 7.121e-03, 1.436e-02), r);\n\tr = MulAdd(s4_0, M4(-7.756e-02, 2.062e-02, 4.399e-02, 1.107e-02, 6.661e-02, -5.046e-03, 1.393e-01, -6.560e-02, -1.426e-01, -1.762e-01, 8.760e-03, -1.763e-02, -5.790e-02, -5.544e-02, -7.877e-02, -5.698e-02), r);\n\tr = MulAdd(s4_1, M4(-6.876e-02, -5.972e-02, 3.602e-02, 1.548e-01, -1.600e-01, 1.551e-01, -9.600e-02, -2.685e-01, -2.378e-02, -4.005e-02, -3.964e-02, 2.882e-01, -5.547e-02, 1.104e-01, 8.137e-02, 1.379e-01), r);\n\tr = MulAdd(s4_2, M4(-9.239e-02, 7.299e-02, 4.045e-02, 5.511e-03, -1.197e-02, 2.754e-02, 2.256e-01, 1.320e-02, 2.351e-02, -1.223e-01, 5.086e-02, 7.153e-02, 5.949e-02, 2.832e-03, -5.051e-03, 1.528e-02), r);\n\tr = MulAdd(s4_3, M4(-1.235e-01, 6.233e-02, -8.211e-02, -1.093e-01, -1.089e-01, 7.827e-03, 1.260e-01, 3.940e-02, -1.223e-01, 2.037e-02, -3.039e-03, -1.007e-02, -1.453e-01, 1.705e-01, 5.045e-02, -6.679e-02), r);\n\tr = MulAdd(s4_4, M4(-1.850e-01, 1.124e-01, -2.744e-02, 4.633e-01, -1.888e-02, -1.497e-01, 2.819e-01, -9.535e-02, 4.777e-02, 9.229e-03, -1.721e-01, 1.564e-01, -2.240e-01, 8.776e-02, -1.616e-01, 2.031e-01), r);\n\tr = MulAdd(s4_5, M4(2.790e-02, 6.465e-02, 1.183e-01, 6.803e-02, 2.085e-01, 8.519e-02, 5.526e-02, 1.918e-02, 9.109e-02, 1.322e-01, 1.707e-01, 9.906e-02, 6.375e-02, 1.046e-01, 4.839e-02, -7.507e-02), r);\n\tr = MulAdd(s4_6, M4(-5.825e-02, 1.863e-02, -2.560e-02, -1.343e-01, -6.049e-02, -8.857e-02, 6.271e-02, -8.805e-02, 4.986e-02, 1.458e-01, 1.089e-01, -1.048e-02, -3.973e-02, -8.065e-02, 3.775e-02, -3.309e-02), r);\n\tr = MulAdd(s4_7, M4(-9.327e-02, 4.840e-02, -1.265e-01, 1.491e-01, 7.817e-02, 4.162e-02, 1.440e-01, 1.603e-01, -5.780e-02, -1.189e-01, -7.263e-03, -1.101e-01, -1.226e-02, -3.063e-02, -3.353e-02, 2.052e-01), r);\n\tr = MulAdd(s4_8, M4(1.751e-02, -1.135e-01, 1.571e-02, -2.205e-02, -3.998e-02, -1.429e-01, -2.788e-02, -7.556e-02, -7.037e-02, 1.664e-01, 9.417e-02, 4.116e-02, 1.210e-02, -6.077e-02, -3.109e-03, -9.682e-02), r);\n\tr = MulAdd(s5_0, M4(4.328e-02, -2.640e-03, 1.726e-02, -6.619e-02, -7.153e-02, -5.347e-03, 1.232e-01, 1.862e-03, 1.355e-04, -5.360e-02, -9.326e-03, -1.251e-02, 2.813e-02, 5.841e-02, -3.303e-02, -1.476e-01), r);\n\tr = MulAdd(s5_1, M4(-8.970e-03, -9.200e-02, -1.182e-01, 8.614e-02, 1.028e-02, -3.642e-02, -4.635e-02, -1.499e-01, -1.331e-01, 1.114e-01, -1.823e-01, -1.963e-01, -1.437e-01, -6.405e-02, 1.130e-01, -1.615e-02), r);\n\tr = MulAdd(s5_2, M4(3.005e-03, 1.274e-01, 2.344e-02, 1.668e-02, -5.464e-02, 5.698e-02, 4.789e-02, -9.728e-02, 1.634e-01, -2.751e-01, 7.409e-03, -6.518e-02, 4.952e-02, 1.257e-02, 4.623e-03, -9.371e-02), r);\n\tr = MulAdd(s5_3, M4(-9.059e-02, -1.951e-02, -3.413e-02, -8.996e-02, 5.690e-02, 4.996e-02, -9.201e-02, 1.690e-01, 1.255e-01, 6.144e-02, 6.561e-02, 4.638e-02, -4.952e-02, 1.578e-01, 2.006e-02, -1.715e-01), r);\n\tr = MulAdd(s5_4, M4(7.592e-02, 7.317e-02, -1.401e-01, 9.003e-04, 1.105e-01, 6.094e-02, 6.376e-02, -5.125e-02, 1.325e-01, 3.113e-01, -9.730e-02, -1.553e-01, -2.130e-01, 2.451e-01, 4.230e-02, 1.606e-01), r);\n\tr = MulAdd(s5_5, M4(5.599e-02, -2.547e-02, 3.313e-02, -7.994e-02, -5.691e-02, 9.699e-02, -7.989e-02, -1.939e-01, -2.585e-02, 1.913e-01, -4.057e-02, -7.749e-02, 1.399e-01, 2.816e-01, 9.736e-02, -1.271e-02), r);\n\tr = MulAdd(s5_6, M4(-3.046e-02, -5.232e-02, 6.563e-02, 9.402e-03, -9.218e-02, 8.404e-03, -3.375e-02, -9.036e-02, 4.413e-02, 3.919e-02, -2.495e-02, -1.239e-03, -3.065e-02, -2.916e-02, 4.007e-03, -2.579e-01), r);\n\tr = MulAdd(s5_7, M4(-7.098e-03, -1.860e-03, -1.707e-01, 5.445e-03, 1.281e-01, 1.628e-01, 1.225e-01, 7.790e-02, -1.567e-03, 7.209e-02, 1.182e-01, -9.290e-02, -1.202e-01, 2.262e-01, -2.065e-02, 1.571e-01), r);\n\tr = MulAdd(s5_8, M4(9.056e-02, -1.256e-02, 5.825e-02, -7.197e-02, -5.779e-02, -1.845e-01, -1.186e-01, -1.548e-01, -1.480e-01, 1.068e-01, -1.482e-01, -5.204e-02, -2.760e-02, -8.757e-02, 1.002e-01, -1.388e-02), r);\n\tr = MulAdd(s6_0, M4(7.393e-03, 1.422e-01, -4.407e-02, 2.375e-02, 7.300e-02, 7.536e-02, 4.936e-02, 8.964e-02, 3.491e-03, 1.315e-02, 4.104e-02, 7.586e-02, 5.862e-02, 9.637e-02, -8.634e-02, -1.815e-02), r);\n\tr = MulAdd(s6_1, M4(5.447e-02, -4.146e-02, -1.955e-01, 3.767e-02, -8.846e-02, -2.408e-02, 7.166e-02, 9.727e-03, 8.169e-02, -2.903e-03, -8.014e-02, -2.011e-02, 7.493e-02, -1.732e-02, 1.244e-01, 5.136e-02), r);\n\tr = MulAdd(s6_2, M4(8.524e-02, -2.271e-02, -4.364e-02, 3.690e-02, -9.154e-02, 6.250e-02, 4.295e-02, -2.384e-01, 8.008e-02, -7.720e-06, 1.023e-01, -9.540e-02, -2.173e-01, 5.006e-02, -5.404e-02, 1.215e-01), r);\n\tr = MulAdd(s6_3, M4(5.341e-02, -1.380e-02, 4.311e-02, -6.630e-02, -3.448e-02, -6.397e-02, 2.076e-02, 1.184e-02, 2.474e-02, -1.257e-01, -7.047e-02, 6.348e-02, 1.586e-01, 1.115e-01, 3.230e-02, -1.733e-01), r);\n\tr = MulAdd(s6_4, M4(4.991e-02, -1.141e-01, -1.378e-01, -6.951e-03, 1.873e-01, 4.493e-02, -4.137e-02, -4.430e-02, 1.579e-01, -3.852e-02, 1.640e-01, 9.429e-02, 1.355e-01, 1.617e-01, -5.072e-01, -6.408e-02), r);\n\tr = MulAdd(s6_5, M4(6.064e-03, -6.852e-02, -1.470e-01, 8.329e-03, 7.775e-03, -9.763e-02, -5.572e-02, 1.070e-01, 9.256e-02, 1.398e-01, -9.383e-02, -1.502e-02, -6.022e-02, 1.013e-01, 1.429e-02, -1.039e-02), r);\n\tr = MulAdd(s6_6, M4(-8.822e-02, 4.282e-03, -7.599e-02, 4.053e-02, -2.953e-02, 3.238e-02, 1.071e-01, 5.918e-03, -1.500e-02, 8.788e-03, -2.782e-02, 3.525e-02, 7.210e-02, -1.199e-01, 2.845e-02, -2.940e-01), r);\n\tr = MulAdd(s6_7, M4(-8.471e-02, 1.662e-01, -6.165e-02, 3.814e-02, 7.629e-02, 2.466e-02, 7.141e-02, -1.585e-03, -1.659e-01, 4.623e-02, -9.034e-02, 3.881e-03, -2.486e-01, 1.006e-01, 3.395e-02, -1.782e-02), r);\n\tr = MulAdd(s6_8, M4(-5.127e-03, -6.243e-03, -1.914e-01, 2.034e-02, 1.134e-01, -2.337e-01, 8.303e-02, 5.794e-02, 5.706e-02, 8.810e-02, -1.217e-02, -9.543e-02, -5.800e-02, 1.709e-02, -5.711e-02, -1.136e-02), r);\n\tr = MulAdd(s7_0, M4(1.130e-01, 8.798e-02, 2.158e-02, -8.030e-02, 1.381e-01, 1.055e-02, -6.276e-03, -3.859e-02, 3.457e-02, -1.523e-01, 1.370e-01, 4.508e-02, -7.988e-02, 5.912e-02, -5.479e-02, -6.642e-02), r);\n\tr = MulAdd(s7_1, M4(1.081e-01, -1.007e-03, 1.322e-02, -8.172e-02, -1.023e-02, 9.431e-02, 8.142e-02, 2.190e-02, 3.612e-01, -2.514e-01, -1.085e-01, 1.408e-01, 7.889e-02, -1.442e-02, 1.788e-01, -7.563e-03), r);\n\tr = MulAdd(s7_2, M4(7.983e-02, 4.121e-02, 1.014e-01, 5.905e-02, 3.933e-02, -2.331e-02, 3.376e-02, -1.003e-01, -1.513e-01, -1.039e-01, -9.056e-02, -3.042e-01, 3.447e-02, -1.100e-01, -9.911e-02, -7.386e-02), r);\n\tr = MulAdd(s7_3, M4(7.042e-02, 7.651e-03, 6.423e-02, -4.223e-02, -9.795e-02, 1.053e-01, -6.054e-02, -9.443e-02, -2.108e-01, 7.588e-02, -1.837e-01, 4.932e-02, 6.889e-02, -4.395e-02, 2.615e-02, 9.409e-03), r);\n\tr = MulAdd(s7_4, M4(5.884e-02, -7.014e-03, 1.347e-02, -6.053e-02, 1.090e-01, 1.379e-01, -2.118e-01, -1.471e-01, -1.746e-02, 2.390e-01, 2.742e-01, 1.095e-02, 1.466e-01, 8.033e-02, -1.313e-01, -1.958e-01), r);\n\tr = MulAdd(s7_5, M4(7.272e-03, 1.305e-02, -1.297e-01, -9.173e-02, -5.465e-02, 8.300e-02, 3.174e-02, 1.459e-01, 5.363e-02, 2.652e-01, 3.240e-02, -1.516e-01, -1.920e-02, 8.674e-02, -2.512e-02, 8.875e-02), r);\n\tr = MulAdd(s7_6, M4(-9.080e-02, -9.108e-02, -2.072e-02, -7.774e-02, -1.248e-01, 6.572e-02, 1.437e-01, -1.314e-01, 2.497e-02, 2.202e-01, 1.100e-01, 2.945e-02, -2.824e-02, -5.907e-02, -4.124e-02, 9.261e-02), r);\n\tr = MulAdd(s7_7, M4(-6.926e-02, 2.453e-01, 1.731e-01, -4.591e-03, -1.366e-01, -1.971e-02, -1.156e-01, -1.253e-03, -1.535e-01, 2.887e-02, -1.003e-01, 8.991e-02, -3.469e-02, 1.163e-01, 1.835e-01, -3.614e-02), r);\n\tr = MulAdd(s7_8, M4(1.541e-02, -6.370e-02, -7.276e-02, 9.494e-03, -4.712e-02, 1.327e-02, 4.455e-02, -9.613e-02, 1.129e-01, -2.214e-01, -7.553e-02, 5.877e-03, -7.342e-02, 4.476e-02, 5.164e-02, -2.974e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.410e-02, -9.396e-03, 1.051e-02, 5.262e-02 };\n\tr = MulAdd(s0_0, M4(-9.523e-02, 7.526e-03, -2.074e-01, 4.818e-02, -5.945e-02, -3.677e-02, -1.007e-01, 2.116e-02, 1.844e-01, -2.631e-02, 4.416e-02, 1.048e-01, 4.360e-02, -7.908e-03, -4.849e-02, -6.085e-02), r);\n\tr = MulAdd(s0_1, M4(1.516e-01, 5.656e-02, -8.160e-02, 1.651e-02, -1.158e-01, 3.780e-02, 1.881e-01, 2.673e-02, 1.120e-01, 3.675e-02, -8.565e-02, -3.982e-02, -7.177e-02, -9.332e-02, 8.668e-02, -1.560e-01), r);\n\tr = MulAdd(s0_2, M4(1.006e-01, -7.895e-02, -1.341e-01, 5.189e-02, 4.895e-02, 4.167e-02, -1.296e-01, -6.457e-02, 2.716e-02, 7.833e-02, 8.289e-02, -1.103e-03, -9.103e-02, 1.081e-01, 2.987e-02, 6.692e-03), r);\n\tr = MulAdd(s0_3, M4(3.345e-02, -6.734e-02, 2.309e-02, 5.627e-02, 8.582e-02, -2.582e-02, 4.288e-02, -4.792e-02, -5.124e-03, 1.531e-02, 2.494e-02, -3.836e-04, 1.338e-01, -4.618e-02, 8.606e-02, 8.540e-02), r);\n\tr = MulAdd(s0_4, M4(-9.091e-02, -2.635e-01, 1.093e-01, 2.452e-01, -6.538e-02, 7.022e-02, 4.870e-02, -1.239e-01, 1.271e-02, 4.693e-03, 1.197e-01, 5.333e-02, -6.442e-02, 6.737e-02, 6.474e-02, -1.860e-01), r);\n\tr = MulAdd(s0_5, M4(1.886e-01, 1.379e-01, 7.388e-02, 9.951e-02, 5.822e-02, 9.415e-03, 1.483e-01, 9.551e-02, -4.265e-02, 7.647e-02, -7.110e-02, 1.301e-01, -4.740e-02, 2.135e-02, -3.256e-02, 7.272e-02), r);\n\tr = MulAdd(s0_6, M4(1.471e-02, -2.215e-02, 1.118e-02, -4.224e-03, -9.526e-03, 1.056e-01, 6.225e-02, 6.163e-03, -1.199e-02, 3.090e-02, 1.100e-01, 4.367e-02, -6.287e-02, 2.110e-03, 4.653e-02, 2.634e-03), r);\n\tr = MulAdd(s0_7, M4(-9.156e-02, 6.332e-02, 8.221e-02, -2.532e-02, 9.286e-02, 1.789e-01, -7.587e-02, 3.588e-03, 1.320e-01, 3.023e-02, -7.919e-02, 9.182e-03, 4.106e-02, 1.427e-02, -1.481e-01, -3.329e-02), r);\n\tr = MulAdd(s0_8, M4(-8.374e-02, 5.366e-02, -2.426e-01, 4.147e-03, 5.590e-02, -5.014e-02, -7.904e-03, -8.100e-02, -5.368e-02, 7.723e-03, -2.304e-02, 6.514e-02, 2.844e-03, 3.521e-02, -1.951e-02, 9.246e-03), r);\n\tr = MulAdd(s1_0, M4(3.039e-02, -1.293e-03, 1.293e-01, -3.167e-02, -1.130e-01, -6.094e-02, -1.905e-01, 9.723e-02, 6.267e-02, 4.243e-06, 2.944e-01, -8.186e-02, 1.090e-01, 1.586e-02, 1.518e-01, -8.095e-02), r);\n\tr = MulAdd(s1_1, M4(6.135e-02, 6.516e-02, -7.528e-02, -4.670e-02, -2.456e-01, -5.538e-02, 1.169e-01, -2.047e-01, 1.181e-02, 1.002e-02, 2.542e-01, -4.795e-01, 2.283e-01, -1.144e-01, -1.208e-01, 2.578e-02), r);\n\tr = MulAdd(s1_2, M4(5.741e-02, 8.183e-02, -8.066e-02, 9.448e-02, 7.245e-02, 4.110e-02, 7.466e-02, 1.324e-01, 1.988e-01, -2.446e-01, 2.133e-01, -2.613e-02, -2.349e-02, -1.161e-01, 6.522e-02, 1.124e-01), r);\n\tr = MulAdd(s1_3, M4(-9.236e-02, -9.255e-02, -1.040e-01, 4.370e-02, 7.208e-02, 1.923e-01, 1.063e-02, 7.156e-02, -6.318e-02, 2.311e-01, -1.186e-01, -5.819e-02, 1.928e-01, 1.622e-01, 1.470e-01, 1.048e-01), r);\n\tr = MulAdd(s1_4, M4(-6.268e-02, -1.375e-01, 6.604e-03, 2.802e-02, -3.740e-02, -5.399e-02, -1.374e-01, 2.602e-01, -1.768e-02, 3.827e-01, 6.387e-01, 2.928e-02, 5.753e-02, 1.206e-01, 3.682e-03, 4.942e-02), r);\n\tr = MulAdd(s1_5, M4(4.952e-02, 2.523e-01, 3.339e-02, 3.963e-02, -3.530e-01, -3.700e-01, -1.063e-01, -1.958e-01, 1.963e-01, -6.659e-02, 3.456e-01, -3.005e-02, -1.509e-01, -1.022e-01, 1.169e-01, -4.150e-02), r);\n\tr = MulAdd(s1_6, M4(-1.231e-01, 1.060e-01, 1.328e-02, -8.564e-02, 3.125e-01, 2.742e-03, -7.321e-02, -5.935e-03, -5.441e-02, 2.168e-01, 2.433e-01, -1.589e-01, 1.178e-01, -1.255e-01, 8.176e-02, -8.035e-02), r);\n\tr = MulAdd(s1_7, M4(-8.170e-02, 1.597e-01, 1.886e-01, -7.304e-02, 3.819e-01, 7.933e-02, 1.686e-01, -2.394e-02, -7.509e-02, -2.816e-02, 3.992e-02, -3.778e-02, 3.477e-02, -5.884e-02, -7.473e-02, -1.785e-03), r);\n\tr = MulAdd(s1_8, M4(-7.482e-02, 1.184e-02, -3.933e-03, -4.874e-02, 6.113e-02, 3.012e-01, 3.709e-02, 1.862e-01, 5.347e-04, -1.135e-01, -8.545e-02, -7.592e-02, 1.704e-02, 1.547e-02, 1.187e-01, -1.872e-02), r);\n\tr = MulAdd(s2_0, M4(-1.486e-01, 8.789e-02, 2.623e-02, 1.376e-01, -1.004e-03, 6.926e-02, 4.750e-02, -7.964e-03, 5.269e-02, -4.034e-02, 1.346e-01, 4.845e-03, -1.978e-02, -2.621e-02, -6.480e-02, -3.674e-02), r);\n\tr = MulAdd(s2_1, M4(1.335e-01, 2.026e-01, -1.693e-01, -1.756e-01, -1.606e-01, 1.774e-01, -9.483e-03, -2.651e-02, -1.382e-01, -2.495e-01, 5.076e-03, -1.924e-02, -1.548e-02, 3.372e-02, 6.016e-02, -4.393e-02), r);\n\tr = MulAdd(s2_2, M4(5.384e-02, -4.307e-02, 3.152e-02, 3.141e-02, 2.630e-01, 1.072e-02, 7.661e-02, -8.139e-03, -1.391e-01, 6.246e-02, -7.113e-02, -5.639e-02, -4.102e-02, 1.321e-02, -3.045e-02, -4.878e-02), r);\n\tr = MulAdd(s2_3, M4(-5.485e-02, -5.021e-02, -9.393e-02, 2.505e-01, 6.772e-02, 3.911e-02, -1.625e-01, 6.379e-02, -7.047e-02, -1.624e-02, 8.427e-02, -9.974e-02, -2.270e-02, -3.061e-02, 2.650e-01, -1.225e-01), r);\n\tr = MulAdd(s2_4, M4(1.345e-01, -3.003e-01, 8.125e-02, -7.746e-02, -8.684e-02, 1.411e-01, 9.097e-02, -1.195e-01, -7.510e-02, 1.460e-01, -2.291e-01, -1.175e-01, -4.250e-02, 1.536e-01, -3.261e-02, -4.076e-01), r);\n\tr = MulAdd(s2_5, M4(-1.581e-01, 3.753e-02, -1.418e-02, -6.127e-02, 5.118e-02, 2.163e-02, -2.048e-02, -2.313e-02, -1.666e-01, 7.394e-02, -1.726e-01, -1.422e-01, -1.639e-01, 2.895e-01, -4.619e-02, -6.550e-02), r);\n\tr = MulAdd(s2_6, M4(8.274e-02, -1.434e-01, 1.279e-02, -5.499e-02, 3.480e-02, -9.788e-02, -1.559e-02, -4.615e-02, -1.374e-02, 2.087e-02, 1.207e-02, 1.965e-02, -7.874e-02, 2.656e-02, -1.384e-01, 5.413e-03), r);\n\tr = MulAdd(s2_7, M4(-1.188e-01, -1.006e-01, -3.870e-03, 1.726e-02, -4.400e-02, -4.391e-02, 1.943e-02, -7.128e-02, -2.829e-02, -7.835e-02, -1.709e-02, 1.198e-03, -9.185e-02, 1.434e-01, -4.201e-02, 1.719e-02), r);\n\tr = MulAdd(s2_8, M4(-2.822e-02, -3.034e-02, 8.413e-03, 9.900e-03, -5.806e-02, 5.050e-03, -2.474e-02, 2.117e-04, -6.470e-02, 2.178e-02, -2.448e-02, -3.711e-02, -1.022e-01, 7.474e-02, -8.927e-02, 3.808e-03), r);\n\tr = MulAdd(s3_0, M4(4.649e-02, 5.995e-02, 1.237e-01, -4.439e-02, -8.079e-02, 4.739e-02, -1.330e-01, -7.111e-02, 1.249e-01, -1.390e-02, -4.347e-02, 3.089e-02, -1.378e-02, -5.054e-02, -2.371e-01, 1.214e-01), r);\n\tr = MulAdd(s3_1, M4(-4.147e-02, 1.312e-01, 8.521e-02, 4.791e-02, -2.893e-01, -8.516e-03, 3.991e-02, 4.734e-03, 4.495e-02, -1.611e-01, -2.962e-02, 7.655e-02, 3.432e-03, -8.433e-02, 4.505e-02, -6.860e-02), r);\n\tr = MulAdd(s3_2, M4(1.496e-01, -7.197e-03, 1.138e-01, 2.208e-02, 1.407e-01, 8.353e-02, 2.982e-02, -5.375e-02, 1.311e-01, 1.746e-02, -9.200e-02, 1.702e-01, -1.306e-01, -2.512e-02, 4.415e-03, 2.814e-02), r);\n\tr = MulAdd(s3_3, M4(-1.853e-02, 1.384e-02, -5.118e-02, -4.419e-02, 2.638e-02, -6.450e-02, 2.930e-02, 1.899e-02, 4.168e-02, -2.827e-02, 2.166e-01, 1.744e-02, 2.126e-01, -4.719e-02, 7.233e-02, 1.602e-01), r);\n\tr = MulAdd(s3_4, M4(-2.018e-01, -1.064e-01, 2.128e-02, -2.395e-02, -7.627e-02, 1.624e-01, -1.261e-02, -7.677e-02, -1.227e-01, 1.087e-01, -1.174e-01, -1.210e-01, 6.392e-02, 2.524e-01, 1.421e-02, 5.939e-03), r);\n\tr = MulAdd(s3_5, M4(4.596e-02, -1.440e-01, -8.835e-02, -4.192e-02, -7.037e-02, -5.660e-02, -2.150e-02, 5.382e-02, -6.105e-02, 2.803e-02, -7.108e-02, 7.229e-02, 3.941e-02, 1.201e-01, 3.529e-02, 1.408e-01), r);\n\tr = MulAdd(s3_6, M4(-1.068e-01, -4.231e-02, -4.821e-02, -1.200e-02, -2.450e-02, -9.650e-03, -2.444e-02, 6.018e-02, -1.616e-02, -2.735e-02, 7.351e-03, 3.997e-02, 1.775e-01, -4.294e-03, 8.998e-02, 4.438e-02), r);\n\tr = MulAdd(s3_7, M4(-6.566e-02, -3.504e-02, 5.708e-02, 1.989e-02, -1.345e-02, -1.144e-01, -3.381e-02, 3.762e-03, 5.950e-02, -5.932e-02, -1.283e-01, 1.091e-01, -6.164e-02, -7.551e-02, -1.460e-01, -1.032e-01), r);\n\tr = MulAdd(s3_8, M4(-3.855e-02, 4.966e-02, -7.798e-02, -4.355e-02, -7.390e-02, 8.112e-02, 1.543e-02, 9.386e-03, 5.591e-02, 1.782e-02, 6.727e-02, 5.322e-02, 4.568e-02, 9.473e-02, 1.551e-01, 1.565e-01), r);\n\tr = MulAdd(s4_0, M4(1.207e-02, -4.134e-02, -8.656e-02, 1.051e-01, 5.978e-02, -5.619e-02, 8.259e-02, -3.851e-02, 5.958e-02, 3.760e-02, 3.731e-03, 9.856e-02, -4.378e-02, -2.418e-02, -1.357e-01, 4.911e-02), r);\n\tr = MulAdd(s4_1, M4(-6.349e-02, 5.498e-03, 1.302e-02, 4.400e-02, -1.769e-01, 1.710e-02, 5.431e-02, -1.440e-01, 8.952e-02, 7.151e-02, -3.314e-02, 6.503e-02, -4.302e-02, -1.076e-02, 5.917e-02, 1.234e-01), r);\n\tr = MulAdd(s4_2, M4(-9.742e-03, 7.909e-02, 1.068e-01, -1.500e-01, -6.214e-02, 1.684e-01, -7.083e-03, 1.061e-01, 6.843e-02, -3.233e-02, 3.288e-03, 1.763e-01, 6.327e-02, -5.016e-02, -3.696e-02, -2.885e-02), r);\n\tr = MulAdd(s4_3, M4(7.711e-02, -9.057e-02, -6.094e-02, -3.825e-02, -2.414e-01, -4.039e-02, -1.211e-01, 1.822e-01, -4.986e-02, 8.437e-02, 6.417e-02, -3.619e-02, 6.501e-02, 3.774e-02, -1.829e-02, 8.399e-02), r);\n\tr = MulAdd(s4_4, M4(-2.235e-01, -4.193e-02, 6.100e-02, 9.313e-02, 5.158e-02, 1.821e-02, -2.817e-01, -2.336e-02, -2.633e-02, 1.295e-01, -1.070e-01, -6.050e-02, -1.249e-01, 4.648e-02, 5.849e-02, 7.926e-02), r);\n\tr = MulAdd(s4_5, M4(-1.228e-01, 8.444e-02, 1.364e-02, 1.304e-02, 1.845e-02, 2.311e-01, -6.098e-02, 1.697e-01, -2.870e-02, 3.777e-02, 7.205e-02, -1.859e-01, -1.704e-02, 1.537e-02, -2.451e-02, -7.949e-02), r);\n\tr = MulAdd(s4_6, M4(5.451e-02, -3.614e-02, -1.951e-02, -5.074e-03, 5.978e-02, -1.053e-01, 9.244e-02, -2.224e-02, -3.829e-02, -6.109e-02, 9.426e-02, -4.299e-02, 3.332e-02, 4.194e-02, -7.992e-02, 2.305e-02), r);\n\tr = MulAdd(s4_7, M4(-7.507e-02, 3.732e-02, 9.090e-02, 2.122e-02, -3.735e-03, -1.434e-01, 1.082e-01, 4.114e-02, -5.953e-02, -7.751e-02, -1.033e-01, -2.877e-02, -1.485e-01, -4.885e-02, 8.432e-02, 4.760e-02), r);\n\tr = MulAdd(s4_8, M4(-1.455e-03, -9.294e-03, -8.645e-02, -2.720e-02, 4.855e-02, 3.842e-02, -5.364e-02, -5.806e-02, -2.382e-02, -2.905e-02, 8.819e-02, -1.782e-02, 2.207e-02, -1.173e-02, -2.117e-02, 4.590e-02), r);\n\tr = MulAdd(s5_0, M4(-8.125e-03, -1.201e-01, -3.500e-02, 1.288e-01, -1.329e-02, -4.118e-02, 1.373e-01, -7.228e-02, -4.887e-02, 3.610e-02, -2.157e-02, -9.036e-02, -9.072e-02, 6.122e-02, 1.467e-01, 5.007e-02), r);\n\tr = MulAdd(s5_1, M4(-5.586e-02, -3.752e-02, -8.767e-02, 4.407e-02, -6.290e-02, 4.581e-02, -5.733e-02, -9.619e-02, -6.788e-02, -6.172e-02, -6.335e-03, 2.470e-02, 7.034e-02, 7.370e-02, 1.988e-01, 1.529e-01), r);\n\tr = MulAdd(s5_2, M4(-6.664e-02, 2.605e-02, 1.183e-01, -1.122e-01, -1.632e-02, 4.579e-02, -4.336e-02, -2.472e-02, 1.734e-01, -2.186e-01, -4.677e-02, 1.248e-01, -3.843e-02, 9.578e-02, 1.781e-01, 1.108e-01), r);\n\tr = MulAdd(s5_3, M4(1.859e-02, 2.767e-02, -3.291e-02, 8.182e-02, -1.983e-01, 2.496e-02, 7.179e-02, -1.044e-02, -5.468e-02, 1.339e-02, -6.350e-02, -2.690e-02, -1.548e-01, 5.006e-02, 4.520e-02, 5.536e-02), r);\n\tr = MulAdd(s5_4, M4(4.791e-02, -2.237e-01, 3.843e-02, 2.922e-01, 4.297e-02, -5.274e-02, -1.429e-01, -1.418e-02, 1.950e-01, -1.983e-02, 6.589e-02, -4.016e-02, -2.981e-02, 1.265e-01, -5.908e-02, 3.204e-01), r);\n\tr = MulAdd(s5_5, M4(-8.215e-02, -8.358e-03, 5.427e-02, 1.616e-01, 2.650e-01, 2.579e-01, 1.048e-01, 1.796e-01, 1.994e-01, -1.162e-01, 3.958e-02, -4.143e-02, -1.218e-02, -2.132e-01, 3.810e-02, -1.137e-01), r);\n\tr = MulAdd(s5_6, M4(-8.306e-02, -1.655e-02, 9.988e-02, 4.427e-02, 5.594e-02, -1.272e-01, 4.672e-02, -2.217e-02, -9.166e-02, -7.092e-03, -6.258e-02, -3.021e-02, 2.103e-02, 9.653e-04, -2.749e-01, 1.407e-02), r);\n\tr = MulAdd(s5_7, M4(-4.161e-02, -4.165e-02, 3.618e-02, -9.598e-03, -5.146e-02, -3.152e-02, -1.016e-01, -9.250e-03, -7.838e-02, -1.316e-01, -1.805e-01, -4.386e-02, -1.398e-01, -2.552e-01, 2.408e-01, 9.776e-02), r);\n\tr = MulAdd(s5_8, M4(-4.489e-02, -4.643e-02, -6.028e-02, 6.739e-02, -6.689e-02, -1.980e-01, -1.361e-02, -2.730e-02, -8.366e-02, -2.995e-02, -7.422e-02, -8.726e-02, 9.930e-02, 9.294e-02, 2.463e-01, 1.307e-01), r);\n\tr = MulAdd(s6_0, M4(-1.925e-02, -1.450e-01, 1.278e-01, -3.691e-02, 3.996e-02, 2.192e-02, 2.472e-02, 1.158e-01, -7.544e-02, -1.339e-02, -3.826e-02, -3.638e-02, 7.539e-02, -4.897e-03, 4.112e-03, 6.074e-02), r);\n\tr = MulAdd(s6_1, M4(7.575e-02, -7.417e-02, -3.193e-02, -4.582e-03, -1.736e-01, 1.612e-01, 1.551e-01, 2.777e-01, 1.157e-01, 5.545e-02, -5.521e-02, -1.460e-01, 1.296e-01, 5.881e-02, 1.068e-02, 2.062e-01), r);\n\tr = MulAdd(s6_2, M4(7.444e-02, -8.126e-02, -3.648e-02, 1.020e-01, 8.436e-02, -9.793e-02, 6.097e-02, 6.469e-02, 2.770e-03, 1.760e-02, 1.403e-01, -2.313e-02, -2.332e-02, 1.045e-01, 5.235e-02, 3.027e-02), r);\n\tr = MulAdd(s6_3, M4(2.360e-02, 5.155e-03, 2.159e-01, -4.357e-02, -1.689e-01, 2.565e-02, -1.304e-01, 8.094e-02, -8.436e-02, -5.728e-04, -4.061e-02, -1.199e-02, 2.252e-01, -1.218e-01, -4.930e-02, 4.136e-02), r);\n\tr = MulAdd(s6_4, M4(2.147e-01, -9.630e-02, -1.378e-01, -1.134e-02, 8.536e-02, 1.351e-02, -2.152e-01, 2.169e-01, -1.158e-01, -2.056e-01, 1.360e-01, -6.122e-02, 1.519e-01, -4.620e-02, 1.102e-01, -4.739e-02), r);\n\tr = MulAdd(s6_5, M4(1.090e-01, -6.277e-02, -8.943e-02, 2.391e-01, -2.288e-01, -4.373e-01, -1.907e-01, -8.421e-02, 1.734e-02, -1.778e-01, 3.346e-02, 2.713e-02, 1.243e-01, 2.066e-01, -1.519e-01, -1.352e-01), r);\n\tr = MulAdd(s6_6, M4(1.169e-02, 4.047e-03, -5.656e-02, 5.895e-02, 9.585e-02, 1.338e-02, -1.428e-01, 3.144e-02, -3.333e-02, -1.187e-01, 1.244e-01, 1.784e-02, 2.415e-01, -1.440e-01, 1.009e-01, -7.098e-02), r);\n\tr = MulAdd(s6_7, M4(7.430e-02, 2.219e-03, -9.441e-03, -3.378e-02, 2.002e-01, -3.325e-02, 1.963e-02, -4.829e-02, -7.793e-02, 5.002e-02, -6.652e-02, -1.204e-02, -6.962e-02, 3.672e-02, -7.999e-02, -3.428e-02), r);\n\tr = MulAdd(s6_8, M4(2.586e-02, -1.384e-01, 1.233e-01, 6.076e-03, -1.840e-02, 5.091e-02, 1.198e-01, 4.472e-02, -5.558e-02, 9.491e-02, 6.196e-03, -9.158e-02, 6.259e-02, 8.428e-02, -1.255e-01, 4.307e-02), r);\n\tr = MulAdd(s7_0, M4(-3.222e-02, 3.138e-03, 1.957e-02, 1.499e-02, -4.444e-02, -2.183e-02, 1.365e-01, -8.917e-02, 2.109e-02, 8.503e-02, 1.513e-01, -1.106e-02, -5.235e-02, -2.710e-02, -7.498e-02, 4.757e-02), r);\n\tr = MulAdd(s7_1, M4(5.725e-02, -2.067e-03, 3.363e-02, -6.695e-03, -4.120e-02, 1.073e-01, 7.809e-02, 1.221e-01, 1.075e-01, -4.413e-03, -2.130e-01, -6.235e-02, 1.317e-01, -5.886e-02, -1.093e-01, 1.391e-01), r);\n\tr = MulAdd(s7_2, M4(1.989e-02, -1.940e-03, 1.291e-01, 2.503e-02, -1.334e-01, -1.339e-01, 1.157e-01, 2.046e-02, 1.673e-01, -1.449e-02, 5.462e-02, 1.793e-02, 3.130e-02, -2.726e-02, 2.497e-02, 1.924e-02), r);\n\tr = MulAdd(s7_3, M4(-3.377e-02, 5.555e-02, 1.141e-01, -3.961e-02, -1.033e-01, 6.960e-02, -1.337e-02, 2.128e-02, -3.006e-01, 7.817e-02, -2.368e-01, -2.991e-02, -3.921e-02, 1.059e-01, 2.200e-01, -1.236e-01), r);\n\tr = MulAdd(s7_4, M4(1.268e-01, 1.573e-01, -1.810e-01, 5.189e-02, 9.665e-02, 1.684e-01, -9.649e-02, 1.212e-01, -3.799e-01, -1.285e-01, 2.667e-01, -1.329e-01, 1.717e-01, 1.509e-01, -2.089e-01, 1.262e-02), r);\n\tr = MulAdd(s7_5, M4(6.720e-02, 5.172e-02, -1.574e-02, 9.391e-02, -2.402e-01, -2.259e-01, -4.062e-02, -1.388e-01, -1.521e-01, -2.795e-02, -7.224e-03, 3.382e-02, -7.645e-04, 4.380e-02, 1.791e-02, 5.836e-03), r);\n\tr = MulAdd(s7_6, M4(-5.870e-02, 1.127e-01, -2.018e-02, 1.996e-02, 2.143e-01, 6.391e-02, 2.659e-02, 5.426e-02, -4.221e-03, 2.226e-02, -2.242e-02, -6.617e-02, -1.122e-01, 9.153e-02, 5.476e-02, -9.256e-02), r);\n\tr = MulAdd(s7_7, M4(-1.343e-01, 2.115e-02, -1.554e-01, -3.678e-02, 9.672e-02, -4.869e-02, -4.701e-02, 3.799e-02, -2.664e-01, 1.993e-01, -5.260e-02, -7.176e-02, 6.625e-02, 5.332e-03, -1.422e-01, -5.649e-02), r);\n\tr = MulAdd(s7_8, M4(-7.533e-02, -2.946e-02, 1.724e-01, 8.496e-03, 2.760e-02, 1.191e-02, -7.346e-02, -2.989e-02, 1.546e-02, -3.697e-02, -4.831e-02, -5.810e-04, -4.130e-02, -7.427e-02, 1.663e-01, -1.218e-01), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.190e-02, 2.995e-03, -4.483e-02, 1.950e-02 };\n\tr = MulAdd(s0_0, M4(-1.541e-01, 7.445e-02, -1.031e-01, -4.227e-02, 1.194e-01, 1.177e-01, 4.318e-03, 3.377e-02, -1.042e-01, -7.155e-02, 3.097e-02, 3.587e-03, 2.435e-02, 1.159e-01, 1.653e-02, 4.330e-02), r);\n\tr = MulAdd(s0_1, M4(9.426e-02, 1.593e-02, -1.154e-02, 2.807e-01, -1.165e-01, -5.208e-02, 1.036e-01, -3.098e-02, 1.813e-02, 2.485e-02, -7.865e-02, -2.436e-01, -4.745e-02, 1.809e-01, 2.603e-02, -3.831e-02), r);\n\tr = MulAdd(s0_2, M4(2.777e-02, -1.637e-02, -7.339e-03, 1.470e-01, 4.922e-02, 3.150e-02, 2.567e-02, 8.265e-03, 5.751e-02, 2.533e-02, -3.575e-02, 8.372e-02, 1.036e-01, 3.502e-02, -3.228e-04, -4.643e-02), r);\n\tr = MulAdd(s0_3, M4(4.781e-02, 2.210e-01, -5.909e-04, -4.151e-03, 1.515e-01, -1.007e-01, 6.112e-02, -5.742e-02, -1.989e-01, -8.581e-02, -7.817e-02, 1.420e-02, -8.560e-03, 5.586e-02, -6.567e-02, -4.390e-02), r);\n\tr = MulAdd(s0_4, M4(-5.837e-02, 3.538e-02, -5.611e-02, -8.464e-02, -8.826e-02, -9.334e-02, 1.638e-01, -9.774e-02, -4.502e-02, 2.860e-02, 4.700e-02, -4.664e-02, -1.113e-01, -1.132e-01, -6.476e-02, -2.240e-02), r);\n\tr = MulAdd(s0_5, M4(-1.893e-02, 1.075e-01, -1.443e-01, 4.658e-02, -3.577e-02, -1.106e-01, -1.077e-01, -5.052e-02, -1.149e-02, -4.290e-02, 3.050e-02, 1.243e-01, -9.772e-02, -3.819e-02, -1.082e-01, -3.553e-02), r);\n\tr = MulAdd(s0_6, M4(2.176e-02, -1.894e-01, -7.480e-02, 1.118e-01, 4.854e-02, 1.391e-02, 5.312e-02, -6.790e-02, -1.328e-02, -2.371e-02, -5.487e-02, -3.335e-02, -4.248e-02, 1.991e-02, -4.070e-02, 3.184e-02), r);\n\tr = MulAdd(s0_7, M4(-4.676e-02, 1.857e-01, 1.548e-01, -8.722e-02, 2.913e-02, -2.723e-02, -7.639e-02, -3.793e-02, 1.133e-01, -1.049e-01, -6.420e-02, -5.949e-03, -1.141e-01, -1.956e-02, 5.989e-02, -1.345e-01), r);\n\tr = MulAdd(s0_8, M4(3.326e-02, -1.111e-01, 1.462e-01, 8.195e-02, 6.368e-02, -1.687e-03, -1.765e-02, 4.541e-02, 1.443e-01, 1.527e-01, 2.521e-02, -6.235e-02, -7.915e-02, -4.487e-02, -5.134e-02, 3.652e-02), r);\n\tr = MulAdd(s1_0, M4(3.368e-02, 8.714e-02, 6.110e-03, -1.981e-01, 2.033e-01, -8.898e-02, 8.475e-03, 1.873e-01, -1.498e-01, 4.971e-02, 1.536e-01, 3.002e-01, -2.681e-01, -3.378e-02, 1.997e-02, 4.818e-01), r);\n\tr = MulAdd(s1_1, M4(1.055e-01, 1.301e-01, -2.522e-02, -7.098e-02, -1.269e-01, 2.670e-02, 1.136e-01, 7.816e-02, -1.890e-01, 2.785e-01, -2.470e-01, -8.519e-02, -2.315e-02, 1.341e-01, -9.506e-02, 1.278e-01), r);\n\tr = MulAdd(s1_2, M4(1.948e-02, -3.190e-02, -3.223e-02, 3.931e-02, 3.433e-02, 1.312e-01, -1.393e-02, -1.037e-01, 8.951e-02, 1.129e-01, 6.835e-02, -9.325e-02, 1.195e-01, -3.151e-02, -1.330e-02, 5.604e-03), r);\n\tr = MulAdd(s1_3, M4(9.086e-02, 1.209e-01, 6.033e-02, -1.874e-02, -1.190e-01, -1.473e-01, 8.160e-02, 5.619e-02, -3.533e-01, -1.393e-01, -2.688e-01, 1.894e-01, 3.564e-02, 2.016e-01, -1.385e-01, 4.488e-02), r);\n\tr = MulAdd(s1_4, M4(-9.440e-03, -1.706e-02, -1.748e-02, 2.662e-02, 4.748e-02, 1.932e-02, 1.696e-01, 2.769e-01, -5.026e-01, 2.010e-01, 9.951e-02, 1.637e-01, 1.957e-01, -3.575e-01, -1.192e-01, 1.617e-01), r);\n\tr = MulAdd(s1_5, M4(-3.517e-03, -4.071e-02, -8.419e-02, 1.006e-01, -1.733e-01, 2.983e-01, -1.682e-01, 5.680e-02, -5.220e-02, -1.610e-01, -2.310e-01, -1.312e-02, 1.825e-02, -3.759e-02, -1.022e-01, -5.093e-02), r);\n\tr = MulAdd(s1_6, M4(-8.118e-02, -5.037e-03, 1.736e-03, -3.371e-02, -1.289e-02, 8.800e-03, 9.251e-02, -1.756e-01, -1.530e-02, 2.300e-01, 5.308e-02, -1.295e-01, 6.294e-02, 1.396e-01, -3.647e-02, 2.122e-03), r);\n\tr = MulAdd(s1_7, M4(3.921e-02, 1.880e-04, 7.184e-02, -5.317e-03, -1.052e-01, 1.530e-01, -2.644e-01, -1.468e-02, 3.993e-02, -4.042e-03, 6.291e-02, -3.918e-02, -2.002e-01, -2.985e-02, -3.781e-02, 1.375e-02), r);\n\tr = MulAdd(s1_8, M4(-8.215e-02, 9.509e-03, 2.562e-02, -2.062e-02, 1.324e-01, 1.454e-02, 3.688e-02, 1.111e-01, 2.343e-01, -4.873e-02, 1.626e-01, -6.006e-02, -1.030e-01, 7.297e-02, -2.219e-02, 9.851e-02), r);\n\tr = MulAdd(s2_0, M4(5.611e-02, -3.181e-01, -4.837e-02, -6.922e-02, 2.914e-03, 5.952e-02, -4.679e-02, -2.544e-02, 2.193e-02, -1.003e-01, -9.020e-03, 2.205e-02, -1.759e-03, 3.894e-02, 1.423e-02, -8.472e-02), r);\n\tr = MulAdd(s2_1, M4(-7.214e-02, 1.584e-02, -4.465e-02, 2.169e-01, -3.078e-02, 5.434e-02, -3.933e-02, 1.729e-03, -1.555e-02, 5.433e-02, 2.206e-02, 4.131e-02, -8.110e-02, -1.106e-01, -4.616e-02, -2.315e-02), r);\n\tr = MulAdd(s2_2, M4(1.754e-01, -5.070e-02, -3.150e-02, 7.899e-02, 5.769e-02, -2.129e-01, -4.636e-02, 4.046e-02, -1.395e-01, 4.660e-02, 2.975e-02, 1.117e-02, -6.117e-02, -1.751e-02, -2.903e-02, 6.764e-02), r);\n\tr = MulAdd(s2_3, M4(-6.471e-02, 2.146e-01, 5.085e-02, -5.202e-01, -1.359e-02, 5.058e-02, -7.127e-02, -1.601e-02, -6.091e-02, -1.459e-02, -7.134e-02, 1.549e-01, 1.276e-01, -9.287e-02, 1.771e-01, 1.394e-01), r);\n\tr = MulAdd(s2_4, M4(1.596e-01, -1.380e-01, -2.423e-01, 2.340e-01, 1.000e-02, 2.824e-02, 1.236e-01, 3.541e-02, -1.289e-01, 2.382e-02, -6.086e-02, 2.541e-02, 5.685e-03, -3.143e-02, 5.591e-02, -1.216e-01), r);\n\tr = MulAdd(s2_5, M4(-8.766e-02, -2.235e-02, -2.451e-02, 1.227e-02, 1.550e-01, -5.607e-02, 7.935e-02, 8.179e-02, -2.942e-01, 1.411e-01, -1.799e-02, -3.496e-02, -2.725e-02, 1.133e-01, 5.287e-02, 1.074e-01), r);\n\tr = MulAdd(s2_6, M4(-1.036e-01, 1.293e-01, 5.427e-02, -3.299e-01, -6.639e-02, 2.028e-02, -6.833e-02, 4.915e-02, -4.676e-03, 4.487e-02, -5.957e-03, 7.035e-02, -7.784e-02, 5.093e-02, 1.658e-01, 1.278e-02), r);\n\tr = MulAdd(s2_7, M4(3.254e-02, -6.731e-02, 6.136e-02, -6.006e-02, -4.211e-03, 1.189e-01, 7.107e-02, -5.250e-02, 1.580e-01, 1.173e-01, 7.031e-02, -2.363e-02, 4.882e-02, -6.122e-02, 3.727e-02, 1.939e-02), r);\n\tr = MulAdd(s2_8, M4(2.800e-02, -2.528e-02, 4.430e-02, -3.989e-02, -3.861e-02, -7.836e-02, -5.991e-02, -1.907e-02, -1.333e-01, 3.260e-02, -6.408e-03, 5.615e-02, 2.487e-02, 3.189e-02, 7.691e-02, -1.030e-01), r);\n\tr = MulAdd(s3_0, M4(-7.688e-02, 4.350e-02, -1.354e-01, -5.353e-02, 1.306e-01, 1.329e-01, -4.048e-02, -8.876e-02, 1.484e-02, -2.443e-01, 3.756e-03, 7.480e-02, -8.744e-02, 8.263e-02, -2.327e-02, 1.993e-02), r);\n\tr = MulAdd(s3_1, M4(1.341e-02, -4.843e-02, 1.961e-02, 1.442e-01, 1.704e-01, 8.335e-02, -9.952e-02, 1.931e-02, -5.787e-02, -2.613e-01, 2.198e-02, 6.073e-02, -1.278e-02, -2.314e-01, 3.446e-02, 2.892e-02), r);\n\tr = MulAdd(s3_2, M4(1.312e-02, -1.539e-02, -6.587e-02, 3.002e-02, 1.623e-01, -1.527e-01, -2.507e-02, 8.886e-02, -3.306e-03, 1.216e-01, -5.373e-02, -4.630e-02, 2.683e-02, 1.528e-03, 1.237e-01, -1.357e-01), r);\n\tr = MulAdd(s3_3, M4(-3.629e-02, -1.790e-02, 8.143e-02, 3.422e-02, -7.654e-02, -1.413e-01, 1.523e-02, -1.196e-01, 5.257e-02, -1.080e-01, -3.571e-03, -1.339e-01, 1.751e-02, 4.219e-02, 9.139e-02, 1.905e-01), r);\n\tr = MulAdd(s3_4, M4(-1.332e-01, 1.085e-01, -5.291e-02, 1.711e-02, -1.511e-01, -1.611e-02, 6.475e-02, -1.778e-01, 1.864e-02, 1.446e-03, -9.403e-03, -1.638e-01, -6.173e-02, -1.837e-01, -7.164e-02, 9.682e-02), r);\n\tr = MulAdd(s3_5, M4(4.124e-02, -5.000e-02, -3.391e-02, -5.335e-02, 1.619e-01, 4.778e-02, 1.230e-01, -9.066e-02, 2.046e-01, 2.125e-02, -5.583e-02, -2.781e-01, 2.121e-01, 4.222e-02, 5.072e-02, -6.791e-02), r);\n\tr = MulAdd(s3_6, M4(5.591e-02, -4.172e-02, 5.074e-03, 6.773e-02, 7.004e-02, 3.783e-03, 1.241e-02, -3.087e-02, 5.125e-02, -2.546e-02, -6.424e-02, -1.288e-01, -6.226e-02, -1.023e-01, -1.236e-01, -1.059e-01), r);\n\tr = MulAdd(s3_7, M4(6.663e-02, 2.416e-02, -5.159e-02, -3.987e-02, -1.621e-02, 1.979e-02, 4.159e-02, -6.761e-02, -3.534e-02, -1.029e-01, -1.345e-02, -4.275e-02, -2.683e-01, 1.552e-01, -2.544e-01, 2.859e-04), r);\n\tr = MulAdd(s3_8, M4(-1.992e-02, 5.768e-02, -5.584e-03, 6.441e-03, 1.317e-01, 3.139e-02, 6.948e-02, 1.451e-02, 1.074e-01, -7.998e-02, -8.032e-02, -6.475e-02, 1.482e-01, -9.720e-03, -5.256e-02, -1.479e-02), r);\n\tr = MulAdd(s4_0, M4(-4.839e-02, 1.140e-03, -3.622e-02, 7.300e-02, 4.100e-02, -1.103e-01, 3.436e-02, -2.778e-02, -9.181e-02, -6.152e-02, -4.272e-02, 1.237e-01, 1.008e-02, 6.290e-02, -8.303e-03, 9.899e-03), r);\n\tr = MulAdd(s4_1, M4(-6.312e-02, -8.452e-02, 7.491e-03, 9.689e-02, -6.351e-02, -1.581e-01, -5.564e-02, -7.967e-03, -3.090e-02, -3.347e-02, 9.113e-02, 1.925e-01, 4.861e-02, -2.838e-02, 4.783e-02, -1.699e-01), r);\n\tr = MulAdd(s4_2, M4(-1.478e-01, 4.556e-02, -5.336e-02, -6.732e-03, -2.761e-03, -5.113e-02, -1.607e-03, 1.340e-01, 1.012e-01, 2.428e-02, 1.503e-02, -7.795e-02, 6.548e-02, -7.697e-02, 1.112e-02, 3.049e-03), r);\n\tr = MulAdd(s4_3, M4(-2.407e-03, -2.252e-03, -4.581e-02, 5.584e-02, 5.979e-03, -4.358e-02, 6.233e-02, 1.063e-02, -2.296e-01, -1.326e-01, -4.987e-02, 1.989e-02, 1.359e-01, 2.509e-01, 1.292e-01, 7.777e-02), r);\n\tr = MulAdd(s4_4, M4(-2.050e-01, 1.206e-01, 3.710e-02, 1.986e-01, -1.741e-01, 7.256e-02, -3.484e-02, -3.576e-01, 2.451e-01, -1.688e-01, -1.057e-01, 9.107e-02, 8.758e-02, -2.751e-01, 2.239e-01, 2.364e-02), r);\n\tr = MulAdd(s4_5, M4(-5.809e-02, 1.454e-02, -3.366e-02, -2.671e-02, -9.982e-02, -1.511e-02, -1.628e-01, -1.030e-01, -6.869e-02, 1.522e-01, 1.662e-01, -3.735e-02, 1.431e-01, 3.946e-03, 1.875e-01, -6.482e-02), r);\n\tr = MulAdd(s4_6, M4(3.218e-02, -7.122e-02, -1.460e-02, 7.275e-02, 8.113e-02, -3.292e-03, -5.182e-02, 1.175e-01, 1.257e-02, 5.358e-02, -3.594e-02, 5.446e-02, 7.923e-02, 3.842e-02, 2.085e-01, 7.095e-02), r);\n\tr = MulAdd(s4_7, M4(1.590e-02, 1.359e-01, 3.769e-03, 4.688e-02, 4.924e-02, 1.446e-01, 1.228e-01, -2.817e-02, -1.074e-01, 1.347e-01, 2.297e-02, 2.567e-02, 5.231e-02, -3.432e-03, 3.995e-01, -2.672e-02), r);\n\tr = MulAdd(s4_8, M4(-1.036e-01, -3.753e-02, 7.380e-02, -7.441e-03, 2.090e-04, 7.063e-02, 1.665e-01, 6.673e-03, 9.839e-02, 1.731e-02, -1.267e-01, 2.546e-02, 1.349e-01, -7.099e-02, 8.893e-03, -3.966e-02), r);\n\tr = MulAdd(s5_0, M4(-3.046e-02, -1.849e-01, -1.706e-02, -1.224e-01, -5.873e-03, -1.910e-01, 5.894e-02, 1.852e-01, 8.535e-03, 8.984e-02, -5.644e-02, -1.735e-01, -2.286e-01, 1.058e-01, -3.983e-02, 2.355e-02), r);\n\tr = MulAdd(s5_1, M4(2.592e-02, 6.491e-03, 1.929e-02, -7.618e-02, -1.963e-01, -1.009e-01, 6.043e-02, -1.961e-01, -1.542e-02, 5.331e-04, 8.130e-02, 1.849e-01, -2.411e-01, 1.440e-01, -7.786e-02, 3.432e-02), r);\n\tr = MulAdd(s5_2, M4(-8.275e-03, 3.609e-03, 9.891e-03, -8.344e-02, 2.447e-02, 1.084e-01, 9.394e-02, -1.679e-02, -6.476e-02, 4.520e-02, 9.260e-02, 2.126e-01, -1.950e-01, 9.232e-02, -3.969e-02, 6.067e-02), r);\n\tr = MulAdd(s5_3, M4(-7.232e-04, -6.282e-02, 5.756e-02, -3.110e-02, -1.114e-01, -7.194e-02, 4.142e-03, 1.695e-01, 7.497e-02, -2.395e-02, 6.252e-02, 1.579e-02, -1.255e-01, 2.525e-01, 5.575e-02, 6.153e-01), r);\n\tr = MulAdd(s5_4, M4(-6.491e-02, 7.502e-02, 3.167e-03, -2.348e-02, -8.472e-02, 2.548e-01, -4.978e-02, -1.951e-02, -3.048e-02, -5.704e-02, 1.774e-01, -6.338e-03, -2.838e-01, -1.511e-01, -4.053e-02, 6.059e-01), r);\n\tr = MulAdd(s5_5, M4(-2.412e-02, -1.205e-01, -6.613e-02, -5.165e-02, -8.040e-02, -4.929e-02, -1.725e-01, -3.018e-02, -1.233e-01, -9.717e-03, 5.918e-02, 1.565e-01, -1.531e-02, 5.785e-02, 1.118e-01, -3.537e-02), r);\n\tr = MulAdd(s5_6, M4(3.586e-02, -4.831e-02, -1.700e-02, -1.002e-01, 5.432e-02, -1.102e-02, -2.840e-02, 1.737e-01, 3.152e-03, 1.527e-01, 4.713e-03, 7.891e-03, -1.070e-01, -7.131e-02, -3.445e-02, 7.807e-02), r);\n\tr = MulAdd(s5_7, M4(-6.315e-02, 1.014e-01, 1.688e-01, -1.030e-01, 1.241e-01, 7.856e-02, 8.263e-02, 2.699e-02, -3.012e-02, 2.876e-02, 1.430e-01, -1.694e-01, -8.311e-02, -5.530e-02, -2.528e-01, 1.123e-01), r);\n\tr = MulAdd(s5_8, M4(4.501e-02, 7.023e-02, 9.987e-02, 1.779e-02, 2.821e-02, -7.071e-02, 8.364e-02, -4.817e-02, 1.017e-01, -1.175e-01, 6.084e-02, -2.026e-02, -4.104e-02, 1.192e-01, -2.724e-01, -7.172e-02), r);\n\tr = MulAdd(s6_0, M4(-2.403e-02, -1.430e-01, -4.463e-02, 2.115e-01, -3.311e-03, 1.294e-01, 2.786e-02, 6.036e-02, -3.302e-02, -3.810e-02, 1.050e-02, 9.657e-03, -6.527e-02, -3.026e-02, -1.425e-02, -2.182e-01), r);\n\tr = MulAdd(s6_1, M4(-1.318e-01, 2.104e-02, -1.155e-01, 1.466e-01, -1.479e-01, 3.399e-01, 4.071e-02, -4.176e-02, -1.956e-02, -4.514e-02, -1.132e-03, -3.509e-04, 4.392e-02, -4.815e-03, -5.243e-02, -3.786e-02), r);\n\tr = MulAdd(s6_2, M4(1.311e-02, -1.032e-02, -8.790e-03, 1.187e-01, -5.755e-02, -1.255e-01, -1.005e-01, -1.453e-02, -1.102e-02, -4.807e-02, 1.795e-02, -1.851e-01, -9.856e-02, 1.487e-01, -7.258e-02, -5.214e-03), r);\n\tr = MulAdd(s6_3, M4(-4.654e-02, -3.135e-02, -1.684e-01, 3.834e-01, -2.876e-02, 1.784e-01, -1.386e-02, -4.142e-02, -8.756e-02, -2.283e-01, -9.441e-02, -4.160e-02, 2.263e-01, 2.885e-01, -3.452e-03, -2.400e-01), r);\n\tr = MulAdd(s6_4, M4(7.687e-02, -6.810e-02, -1.320e-01, 2.525e-01, 1.797e-01, -2.430e-02, 1.885e-02, -6.292e-02, -3.197e-02, -7.428e-03, -2.033e-02, 1.679e-01, 6.859e-02, 7.989e-02, -7.397e-02, -2.282e-01), r);\n\tr = MulAdd(s6_5, M4(4.482e-02, -7.678e-02, 1.278e-03, 2.601e-01, 4.335e-03, 1.209e-01, 3.467e-03, -2.305e-01, 1.498e-01, 8.959e-02, 3.266e-02, 1.003e-01, -1.326e-01, -3.894e-02, -6.801e-02, 5.746e-02), r);\n\tr = MulAdd(s6_6, M4(5.336e-02, -9.724e-02, -1.431e-01, 2.915e-01, 1.202e-01, -1.028e-01, -8.011e-03, 1.251e-01, 4.663e-02, -5.798e-02, -8.256e-02, 2.405e-02, -5.388e-02, -8.614e-02, -7.355e-02, -3.901e-02), r);\n\tr = MulAdd(s6_7, M4(-3.570e-02, 2.925e-01, -7.481e-02, 2.625e-02, 1.195e-01, 4.382e-02, -3.380e-02, 1.320e-02, -6.054e-02, 1.930e-01, 1.641e-01, -5.457e-02, -6.494e-02, 4.445e-02, 1.441e-01, 4.620e-02), r);\n\tr = MulAdd(s6_8, M4(9.954e-02, 1.499e-01, 3.501e-02, 1.605e-02, -2.730e-01, 1.298e-01, -4.405e-02, -2.582e-02, -5.153e-03, -1.636e-02, -3.186e-02, -1.102e-01, 8.378e-02, -5.718e-02, 1.241e-02, 2.242e-02), r);\n\tr = MulAdd(s7_0, M4(4.522e-03, 1.157e-01, 6.721e-02, -1.100e-01, -3.192e-02, 1.623e-02, -1.048e-02, 4.959e-02, -8.910e-02, -8.295e-02, 3.892e-03, 7.422e-02, 7.690e-02, 1.323e-02, 1.388e-01, 3.940e-02), r);\n\tr = MulAdd(s7_1, M4(-6.403e-03, 9.173e-02, 7.153e-03, -1.033e-01, -6.463e-02, 6.393e-02, -4.339e-02, -6.190e-03, -1.071e-01, 7.056e-02, 5.481e-02, 6.483e-02, -6.428e-02, 2.973e-02, 1.292e-01, 1.169e-01), r);\n\tr = MulAdd(s7_2, M4(5.770e-02, 5.588e-02, 6.031e-02, -1.759e-01, -3.895e-02, 2.467e-03, -2.560e-02, -1.027e-01, 2.629e-02, -1.205e-01, -9.231e-02, -2.143e-01, -2.209e-02, 7.736e-02, 1.911e-02, -6.816e-02), r);\n\tr = MulAdd(s7_3, M4(1.705e-02, 5.705e-02, -4.597e-02, -7.820e-02, 8.144e-03, 6.708e-02, -3.695e-02, 2.001e-01, -1.255e-01, -1.630e-02, -2.811e-02, -5.311e-03, 1.111e-01, 6.014e-02, 1.773e-02, 8.124e-02), r);\n\tr = MulAdd(s7_4, M4(1.531e-02, -1.537e-02, -9.494e-02, -6.804e-02, 1.393e-01, -6.602e-02, 4.988e-02, 2.267e-01, -3.947e-02, 8.325e-02, -8.862e-02, -6.870e-02, 1.717e-01, -2.222e-01, 4.594e-02, -1.655e-01), r);\n\tr = MulAdd(s7_5, M4(1.169e-01, 1.878e-02, 4.611e-02, 2.927e-02, 7.513e-02, 4.478e-02, 8.064e-02, 2.155e-02, 2.792e-01, -1.029e-01, 9.900e-02, -3.829e-02, -1.461e-02, -5.504e-02, -6.803e-02, -1.202e-02), r);\n\tr = MulAdd(s7_6, M4(3.775e-02, -4.092e-02, -9.230e-02, 3.931e-02, -2.544e-02, -5.744e-02, -1.008e-01, 8.357e-03, 4.594e-03, -5.746e-03, -1.147e-01, -3.240e-02, 2.209e-02, -7.544e-02, 8.800e-02, 3.604e-02), r);\n\tr = MulAdd(s7_7, M4(7.549e-02, -3.910e-02, -5.900e-02, -2.941e-03, -8.728e-02, -4.351e-02, -7.503e-02, 1.369e-01, -4.670e-02, 2.395e-01, 2.080e-01, -6.757e-02, 1.841e-02, 7.237e-03, -4.694e-02, 1.169e-02), r);\n\tr = MulAdd(s7_8, M4(7.998e-02, -1.301e-02, 8.638e-02, -2.254e-01, -1.370e-01, -5.376e-02, -3.425e-02, -2.080e-03, -1.539e-01, -1.300e-01, 4.326e-02, -3.162e-02, 3.087e-03, 1.125e-01, 8.557e-02, -6.775e-02), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 6\n//!DESC conv5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.939e-02, 1.703e-02, -4.544e-03, -7.752e-03 };\n\tr = MulAdd(s0_0, M4(-3.325e-02, 3.102e-02, -1.201e-02, 2.268e-02, 7.444e-03, 1.479e-01, -1.168e-01, -5.885e-03, 4.910e-03, -2.434e-02, 4.692e-02, -8.707e-03, 1.163e-01, -5.718e-02, 4.571e-02, -3.987e-03), r);\n\tr = MulAdd(s0_1, M4(9.745e-02, 4.481e-02, -5.736e-03, 4.527e-02, -6.175e-02, -8.090e-02, -1.783e-01, -4.490e-02, -1.074e-01, 6.241e-03, 1.121e-01, 5.417e-02, -1.167e-01, -1.013e-01, -9.217e-03, -8.213e-02), r);\n\tr = MulAdd(s0_2, M4(-1.143e-01, -2.914e-02, 1.086e-02, 5.355e-02, -5.619e-02, 7.229e-02, -3.712e-02, -2.005e-02, 1.814e-02, 3.906e-02, 9.007e-02, 4.586e-02, 4.925e-02, -4.990e-02, 3.002e-02, -5.329e-02), r);\n\tr = MulAdd(s0_3, M4(-7.281e-02, -1.456e-01, 6.030e-02, -7.220e-03, 1.217e-02, 3.942e-02, 2.493e-03, -2.184e-02, -4.370e-02, -2.313e-02, -3.702e-03, -1.439e-02, 5.491e-02, -1.097e-01, -1.525e-02, 1.306e-02), r);\n\tr = MulAdd(s0_4, M4(2.689e-02, 6.599e-02, 1.036e-01, -8.721e-02, -2.337e-01, 1.000e-01, 1.439e-02, 2.684e-01, 2.232e-02, 7.914e-03, -3.002e-02, 7.379e-02, -2.289e-02, -1.065e-02, -4.016e-02, -1.150e-01), r);\n\tr = MulAdd(s0_5, M4(7.046e-02, -1.307e-03, -1.191e-02, 4.801e-02, -2.147e-02, 1.351e-01, 3.794e-02, -3.068e-02, 3.729e-02, 1.114e-02, -1.309e-02, 1.434e-02, -1.162e-01, 1.812e-02, -5.316e-02, -5.238e-02), r);\n\tr = MulAdd(s0_6, M4(-1.274e-03, 3.140e-02, 1.683e-02, 3.169e-02, -2.787e-03, -9.452e-02, 1.432e-02, -2.380e-02, -3.839e-02, 1.362e-01, -8.840e-03, 2.950e-02, -9.202e-02, -4.772e-02, 2.859e-02, 3.891e-02), r);\n\tr = MulAdd(s0_7, M4(5.686e-02, 2.562e-02, 3.277e-02, -3.834e-03, -4.117e-02, -1.190e-03, 8.718e-02, -3.681e-02, 2.798e-02, 1.672e-02, 8.348e-02, 1.928e-02, 2.370e-02, 6.126e-02, 5.123e-02, -7.158e-02), r);\n\tr = MulAdd(s0_8, M4(6.307e-04, 2.505e-02, -2.436e-03, -2.344e-02, -6.344e-02, 2.815e-02, -3.121e-02, 5.070e-02, 2.422e-02, 8.561e-03, 2.690e-02, -8.370e-02, 9.301e-03, -2.347e-02, -4.862e-02, -4.908e-02), r);\n\tr = MulAdd(s1_0, M4(-2.105e-01, 5.742e-02, 5.282e-02, 1.075e-01, 8.419e-02, -8.720e-03, 3.498e-02, 8.101e-03, -4.217e-02, -6.896e-02, 1.060e-01, 1.892e-02, 1.353e-01, -5.279e-02, 3.427e-02, -1.061e-01), r);\n\tr = MulAdd(s1_1, M4(-5.899e-02, -8.880e-02, 4.749e-02, 5.689e-02, -1.243e-01, -1.050e-01, 1.305e-01, -1.822e-01, -1.794e-01, -2.956e-01, 2.878e-01, -5.563e-02, 1.107e-01, -9.594e-02, 1.681e-01, -4.173e-01), r);\n\tr = MulAdd(s1_2, M4(2.088e-01, -1.263e-02, 8.239e-02, 1.372e-01, -1.523e-01, -4.600e-02, -6.727e-02, 1.620e-02, -1.129e-01, -1.329e-01, -2.328e-02, -8.638e-02, -8.206e-02, -5.865e-02, 7.702e-02, 8.697e-02), r);\n\tr = MulAdd(s1_3, M4(1.856e-03, -1.151e-01, 1.269e-01, -1.246e-01, -2.480e-02, 1.943e-02, -7.583e-02, -7.204e-02, 2.768e-02, 6.190e-02, 8.628e-02, -1.388e-01, 3.124e-02, -8.930e-02, -1.392e-01, 3.038e-01), r);\n\tr = MulAdd(s1_4, M4(1.273e-01, -4.104e-02, 5.600e-01, -1.033e-01, -2.556e-01, 8.996e-02, -2.634e-02, 1.067e-02, -2.025e-01, 1.187e-01, 3.098e-01, -1.177e-01, 2.340e-01, 9.085e-02, -7.989e-02, -3.875e-01), r);\n\tr = MulAdd(s1_5, M4(-4.001e-01, -2.410e-01, -2.005e-01, 3.053e-01, -4.187e-02, -2.079e-02, 3.795e-02, -5.801e-01, 1.572e-01, -3.704e-02, 1.789e-01, 3.634e-02, -2.765e-03, 3.068e-01, 6.566e-02, 1.782e-01), r);\n\tr = MulAdd(s1_6, M4(-5.601e-02, -2.663e-01, -5.452e-02, -3.342e-02, 2.845e-02, -5.523e-02, 3.937e-02, -1.254e-02, -9.803e-02, -4.092e-02, 1.070e-01, -1.884e-02, -8.056e-02, 5.957e-02, -2.268e-01, -2.883e-02), r);\n\tr = MulAdd(s1_7, M4(3.602e-02, 3.605e-01, -1.058e-01, -1.025e-01, 7.327e-02, 1.212e-02, 3.897e-02, -1.530e-03, -2.248e-01, 2.349e-01, 7.325e-02, -6.040e-02, 2.359e-01, 5.645e-01, 1.694e-02, -4.593e-02), r);\n\tr = MulAdd(s1_8, M4(-6.717e-02, -2.712e-01, -7.268e-02, 4.477e-02, 5.479e-02, 2.246e-02, 3.345e-02, -7.484e-02, 4.180e-02, -4.276e-02, 2.712e-02, 1.372e-02, 6.067e-02, -6.065e-02, -1.066e-01, -1.852e-02), r);\n\tr = MulAdd(s2_0, M4(-9.897e-02, -1.366e-01, 3.089e-02, -4.977e-03, 6.995e-02, 2.994e-01, 8.808e-02, -3.481e-02, -5.962e-02, -5.574e-02, -5.478e-02, -2.862e-02, 3.514e-02, 9.242e-02, -1.727e-02, -1.140e-02), r);\n\tr = MulAdd(s2_1, M4(-2.045e-01, 1.060e-01, 1.197e-01, -7.549e-02, 2.766e-01, -3.171e-02, 8.807e-02, -1.171e-02, 8.605e-02, -1.305e-01, -1.057e-01, -8.969e-02, -1.155e-01, 3.084e-02, -2.138e-02, -5.441e-03), r);\n\tr = MulAdd(s2_2, M4(-5.702e-02, -1.392e-02, 2.288e-02, 9.423e-02, 1.703e-02, -8.309e-02, 8.809e-03, -1.677e-01, -1.509e-02, -4.547e-02, 4.150e-02, -3.334e-02, -1.208e-01, 9.868e-02, -8.768e-02, -1.492e-02), r);\n\tr = MulAdd(s2_3, M4(-1.112e-02, 1.112e-01, -3.933e-02, 2.128e-02, -2.588e-03, 3.539e-01, 3.261e-02, -4.850e-02, 5.691e-02, -1.492e-01, 4.581e-02, 1.560e-02, 1.683e-01, -2.399e-02, 9.759e-02, -8.359e-02), r);\n\tr = MulAdd(s2_4, M4(-9.395e-02, 3.051e-02, -2.703e-01, -5.509e-02, -7.402e-02, 1.713e-01, -1.217e-02, -1.481e-01, -1.499e-01, 9.432e-02, 1.353e-01, 1.110e-01, 7.470e-02, -1.484e-01, 2.865e-02, 1.123e-01), r);\n\tr = MulAdd(s2_5, M4(-4.374e-02, 2.185e-01, -1.399e-02, -3.567e-02, 1.530e-01, 2.002e-01, 1.431e-02, -2.271e-01, -1.001e-01, -9.959e-03, -2.941e-02, -3.313e-02, 4.434e-02, -1.691e-02, 3.744e-02, 2.550e-01), r);\n\tr = MulAdd(s2_6, M4(-7.543e-02, -1.643e-02, 3.870e-02, -2.994e-02, -9.913e-02, -4.311e-02, -7.535e-02, 7.141e-02, -1.986e-02, -3.983e-02, -1.601e-02, 1.515e-02, 5.399e-02, -1.822e-02, -1.145e-01, -1.189e-01), r);\n\tr = MulAdd(s2_7, M4(5.299e-02, 5.771e-02, -1.905e-02, 4.469e-04, -8.914e-03, 1.371e-01, -3.636e-02, -1.195e-03, -3.347e-02, -3.162e-02, -3.516e-02, -1.002e-01, -1.821e-01, 1.202e-01, 8.073e-02, 1.828e-02), r);\n\tr = MulAdd(s2_8, M4(-3.079e-02, 4.782e-02, 4.581e-02, 3.428e-02, 1.364e-02, 3.328e-02, 1.065e-01, -5.447e-02, 1.521e-02, 1.987e-03, -5.060e-02, -4.637e-02, -1.284e-01, 1.990e-02, -5.804e-02, 5.293e-02), r);\n\tr = MulAdd(s3_0, M4(-3.279e-02, -1.138e-01, -7.613e-02, 5.656e-02, -2.444e-02, -4.692e-02, 2.756e-02, 3.238e-02, -5.189e-03, 6.887e-04, -2.633e-02, -4.697e-02, -7.190e-02, 1.854e-01, 1.255e-01, -5.488e-02), r);\n\tr = MulAdd(s3_1, M4(8.669e-02, -3.164e-02, 8.179e-02, -2.261e-02, 9.947e-02, 7.810e-02, -2.032e-02, 9.205e-03, 1.738e-01, 2.339e-02, -3.427e-02, -4.536e-02, 2.671e-01, 1.905e-01, -1.258e-01, -1.761e-01), r);\n\tr = MulAdd(s3_2, M4(9.081e-02, 2.051e-02, -6.132e-03, -2.126e-02, -1.383e-01, -1.578e-02, -2.328e-02, 3.190e-03, 1.567e-01, -6.032e-02, 8.671e-02, 1.130e-02, -1.476e-01, 1.344e-01, -1.120e-01, -5.130e-02), r);\n\tr = MulAdd(s3_3, M4(-2.872e-02, 1.763e-02, -7.216e-02, -1.072e-01, -1.180e-01, -1.004e-01, -4.798e-02, -2.352e-02, 1.105e-01, -2.879e-02, 1.592e-02, 6.813e-03, -4.098e-01, -1.040e-01, -2.934e-01, 3.858e-02), r);\n\tr = MulAdd(s3_4, M4(8.946e-02, 9.835e-02, -2.144e-01, 5.372e-02, -2.239e-01, -2.255e-02, -1.035e-01, -1.412e-01, -2.732e-01, 1.072e-01, 3.488e-02, 1.192e-01, 3.397e-01, 2.329e-01, 4.348e-02, -1.439e-01), r);\n\tr = MulAdd(s3_5, M4(-1.008e-01, -5.632e-02, -7.657e-03, -2.069e-02, -1.341e-01, -2.471e-02, 7.401e-02, 4.367e-03, -1.240e-02, 1.633e-01, -1.791e-03, -1.558e-01, -1.800e-01, -2.511e-01, 1.134e-01, -1.670e-02), r);\n\tr = MulAdd(s3_6, M4(-3.769e-02, 9.544e-03, 4.993e-02, 3.764e-03, 3.193e-02, -9.158e-02, -9.055e-02, 4.805e-02, 6.795e-02, 5.456e-02, -1.025e-01, 1.730e-02, 1.168e-02, 1.310e-01, -3.507e-02, 4.382e-02), r);\n\tr = MulAdd(s3_7, M4(-5.501e-02, -3.820e-02, 5.317e-02, -6.017e-02, 1.382e-01, 1.471e-01, -1.624e-01, 2.640e-02, 2.001e-02, 1.615e-01, -6.277e-02, -9.653e-02, -2.665e-01, 2.116e-01, -1.292e-02, -5.260e-02), r);\n\tr = MulAdd(s3_8, M4(4.992e-02, 9.520e-02, -3.869e-02, 7.041e-02, -1.096e-01, -7.984e-02, 6.372e-02, 4.116e-02, -5.481e-02, 6.716e-02, -7.373e-02, 3.300e-02, -1.699e-01, 1.113e-01, -5.838e-02, 2.048e-02), r);\n\tr = MulAdd(s4_0, M4(3.478e-03, 1.604e-01, 1.143e-02, 3.950e-02, 2.978e-02, -2.053e-02, 1.382e-02, -3.209e-02, -4.983e-02, -1.550e-01, 1.172e-02, -1.038e-01, 5.117e-02, -4.133e-02, 1.129e-01, 1.274e-02), r);\n\tr = MulAdd(s4_1, M4(1.712e-01, -3.888e-02, -1.187e-01, 6.333e-02, 2.066e-02, 1.027e-01, -6.894e-02, -9.356e-02, -1.740e-01, 4.635e-02, 1.101e-01, -9.743e-02, -1.694e-01, -3.618e-02, 1.157e-01, 9.724e-03), r);\n\tr = MulAdd(s4_2, M4(1.616e-01, -8.447e-03, -3.057e-02, -5.442e-02, -1.433e-01, -5.447e-02, -4.839e-02, 3.747e-02, -2.974e-02, -2.371e-02, 8.349e-03, -7.386e-02, 2.599e-03, 1.992e-02, 5.651e-02, -9.889e-02), r);\n\tr = MulAdd(s4_3, M4(-1.205e-01, 4.766e-02, -1.792e-01, -7.001e-03, -1.023e-01, 2.760e-03, -1.750e-01, 1.432e-02, 2.140e-02, -1.442e-02, -1.203e-02, 5.236e-03, 2.750e-02, 5.747e-02, 4.160e-02, 1.839e-02), r);\n\tr = MulAdd(s4_4, M4(1.175e-01, -6.460e-02, -1.678e-01, -1.293e-01, 4.098e-02, -1.212e-01, -9.402e-02, -1.696e-01, -1.637e-01, -2.059e-02, -3.352e-02, 1.008e-01, -2.280e-01, -1.991e-02, 1.460e-01, -5.383e-02), r);\n\tr = MulAdd(s4_5, M4(-5.260e-02, -6.286e-02, -7.651e-02, -3.258e-01, -8.880e-02, -6.865e-02, -2.491e-02, 5.650e-02, 3.969e-03, 4.130e-05, 7.006e-02, -8.126e-02, 3.293e-04, 1.805e-02, 1.934e-01, -4.173e-02), r);\n\tr = MulAdd(s4_6, M4(2.222e-02, 5.658e-02, -1.776e-03, 3.331e-02, 2.624e-02, 4.201e-02, -1.271e-01, 1.976e-02, -7.570e-02, -5.879e-02, 1.233e-01, -4.147e-02, 5.968e-02, -1.057e-02, -4.891e-02, -6.360e-02), r);\n\tr = MulAdd(s4_7, M4(7.232e-02, -1.316e-01, 8.325e-02, -3.296e-02, 1.187e-01, 2.971e-02, 8.751e-02, -3.254e-02, -1.432e-01, -2.923e-02, 1.748e-01, 7.771e-02, 1.595e-01, 1.106e-01, -1.131e-01, 1.774e-02), r);\n\tr = MulAdd(s4_8, M4(-9.671e-02, -5.734e-02, -5.968e-02, -3.762e-02, 1.582e-02, 1.257e-02, 3.137e-02, -7.635e-04, -7.236e-02, -3.294e-02, -3.009e-02, -7.280e-02, -7.171e-02, -4.889e-03, -2.667e-02, -4.693e-03), r);\n\tr = MulAdd(s5_0, M4(9.525e-03, 2.583e-01, 1.577e-01, -8.960e-02, -1.342e-01, 5.619e-02, 7.415e-02, -5.099e-02, 1.083e-02, -1.041e-02, 7.983e-02, 5.332e-02, -7.776e-03, -6.704e-02, 1.509e-01, 4.181e-02), r);\n\tr = MulAdd(s5_1, M4(-2.083e-01, 1.158e-01, -2.234e-02, 7.118e-02, 5.266e-02, 4.810e-02, 9.202e-02, -1.003e-01, -1.734e-01, 4.296e-02, 1.714e-01, -2.401e-03, -1.137e-01, -1.756e-01, 6.021e-02, -2.741e-02), r);\n\tr = MulAdd(s5_2, M4(6.815e-02, 5.817e-02, -6.170e-02, -4.732e-02, 3.478e-02, -4.199e-03, -1.851e-02, -3.221e-03, 8.744e-02, 5.604e-02, 5.947e-02, -1.328e-01, 1.943e-02, -8.131e-03, 1.900e-02, -7.607e-02), r);\n\tr = MulAdd(s5_3, M4(2.857e-01, 1.539e-01, 1.038e-01, 1.132e-02, 1.329e-02, 2.174e-01, 1.244e-02, 8.200e-02, -4.505e-02, -5.227e-02, 4.619e-04, 6.776e-02, -5.088e-02, -3.256e-02, 6.318e-02, -4.579e-02), r);\n\tr = MulAdd(s5_4, M4(-4.660e-02, -2.435e-01, -6.781e-03, -7.809e-02, 1.874e-01, -1.164e-01, -1.782e-01, -2.800e-01, 2.698e-02, 6.071e-02, -5.110e-02, 7.245e-02, 1.245e-02, 1.899e-01, 1.096e-01, -5.294e-02), r);\n\tr = MulAdd(s5_5, M4(8.890e-02, 9.728e-02, 4.997e-02, -9.887e-02, 5.615e-02, 2.021e-02, -2.259e-02, -1.068e-01, -3.950e-02, -8.120e-02, -1.665e-02, -4.129e-02, -8.374e-02, -1.258e-01, 1.182e-01, -1.213e-02), r);\n\tr = MulAdd(s5_6, M4(-8.262e-03, 1.664e-02, -7.024e-02, -3.985e-02, -2.808e-02, 1.221e-01, -1.890e-01, -1.087e-01, 1.692e-02, -1.162e-02, 2.958e-02, 2.775e-02, -6.859e-02, -1.296e-02, 1.193e-02, 4.396e-03), r);\n\tr = MulAdd(s5_7, M4(8.172e-02, 1.117e-01, -1.482e-02, 5.308e-03, -5.901e-03, -5.041e-02, 4.588e-02, -1.821e-02, 8.305e-02, 1.224e-01, -6.272e-03, 1.969e-02, 4.009e-02, -3.353e-02, 6.791e-02, -1.372e-02), r);\n\tr = MulAdd(s5_8, M4(-1.109e-01, -1.571e-02, -4.466e-02, 9.630e-02, 7.569e-03, 6.390e-02, 2.270e-02, 7.346e-03, 2.162e-02, 6.602e-02, -7.577e-02, 3.169e-02, 6.660e-03, -7.800e-02, -5.085e-03, 7.740e-02), r);\n\tr = MulAdd(s6_0, M4(-1.017e-01, -4.034e-02, 6.708e-02, 7.748e-02, -7.052e-02, -6.251e-02, 6.019e-02, -4.987e-03, 1.404e-01, 1.748e-01, -1.077e-01, 8.488e-02, -5.884e-03, -4.451e-03, 2.979e-02, -3.478e-02), r);\n\tr = MulAdd(s6_1, M4(-2.065e-02, 2.125e-01, 1.827e-01, -1.059e-01, 5.760e-02, 7.237e-02, 6.810e-02, 8.762e-03, -8.153e-02, 8.979e-02, -9.872e-03, 7.730e-02, 9.600e-02, -1.581e-01, 9.862e-02, -8.078e-02), r);\n\tr = MulAdd(s6_2, M4(1.839e-02, 8.069e-02, -5.765e-02, -3.410e-02, -1.856e-01, 3.381e-02, -4.610e-02, -1.308e-02, 7.696e-02, -3.619e-02, 1.082e-01, -1.086e-01, 8.181e-02, -3.576e-02, 8.041e-03, -1.460e-01), r);\n\tr = MulAdd(s6_3, M4(-1.003e-01, 6.476e-02, 4.396e-02, -1.430e-02, -1.837e-02, 1.834e-01, 1.998e-02, 6.159e-02, -9.878e-02, 1.229e-01, -9.909e-02, -8.428e-02, 2.370e-02, -1.355e-01, 1.162e-02, -9.837e-03), r);\n\tr = MulAdd(s6_4, M4(1.037e-01, 1.753e-01, -1.921e-01, -6.578e-02, 6.742e-02, 3.040e-02, 1.255e-01, 6.624e-02, 8.632e-02, 1.224e-02, -7.217e-03, 9.856e-02, 1.402e-01, 1.209e-01, 1.964e-01, -2.759e-02), r);\n\tr = MulAdd(s6_5, M4(3.978e-02, 2.199e-02, -2.567e-02, -1.525e-01, -1.993e-01, 9.225e-02, -8.903e-02, -1.027e-01, 1.432e-01, 7.147e-02, 3.857e-03, -6.097e-02, 1.333e-01, -4.337e-02, -7.006e-02, -2.442e-01), r);\n\tr = MulAdd(s6_6, M4(-1.520e-01, -1.692e-02, 1.714e-02, 5.022e-02, -9.391e-02, 5.515e-03, 4.718e-02, -1.328e-02, -2.968e-02, -6.351e-02, -5.077e-02, 7.981e-02, 5.259e-02, -1.407e-02, 3.420e-02, -9.187e-02), r);\n\tr = MulAdd(s6_7, M4(4.626e-03, 7.643e-03, 7.219e-02, -4.271e-02, 7.871e-02, 8.244e-03, 2.424e-01, 9.938e-02, 1.456e-01, -4.297e-03, -7.914e-02, -4.582e-02, 1.354e-01, -1.694e-02, -8.773e-02, 1.764e-02), r);\n\tr = MulAdd(s6_8, M4(-4.360e-02, 6.883e-02, -3.494e-02, -3.672e-02, -1.503e-01, 5.198e-02, -1.430e-02, 2.389e-02, -7.594e-02, -1.904e-02, 5.872e-02, 3.285e-02, 1.975e-01, 1.726e-01, -9.447e-02, -9.414e-02), r);\n\tr = MulAdd(s7_0, M4(3.853e-02, -1.717e-01, 2.571e-02, -4.859e-03, 4.389e-02, -1.690e-01, 1.320e-02, -3.390e-02, -1.307e-01, 5.201e-02, 2.112e-01, -5.495e-02, -3.004e-02, 5.965e-02, -5.489e-03, 4.998e-02), r);\n\tr = MulAdd(s7_1, M4(-1.303e-03, 5.981e-03, 4.903e-02, 7.560e-03, 1.147e-01, -3.206e-02, -7.700e-02, -9.505e-02, 6.375e-02, 1.431e-01, 2.929e-01, -1.937e-01, -4.918e-02, 3.872e-02, 1.358e-01, 4.230e-02), r);\n\tr = MulAdd(s7_2, M4(-1.391e-01, -6.461e-02, -4.030e-02, -3.580e-02, 1.159e-03, -8.988e-02, -1.543e-02, -1.233e-01, 1.509e-01, -5.529e-02, 1.104e-01, 1.352e-01, -5.030e-02, 5.567e-02, 1.109e-01, -2.720e-03), r);\n\tr = MulAdd(s7_3, M4(-2.481e-02, -1.004e-01, 1.421e-02, -5.236e-03, -8.489e-03, -6.281e-02, -1.650e-02, 1.920e-02, 1.945e-02, -5.418e-02, -6.112e-02, -7.400e-02, -7.176e-02, 2.431e-02, -3.867e-02, -7.052e-03), r);\n\tr = MulAdd(s7_4, M4(-4.605e-02, -1.893e-02, -2.272e-01, -6.262e-02, 1.103e-01, -2.067e-01, 9.526e-02, 1.047e-01, -1.670e-01, -1.132e-01, 1.711e-01, 7.622e-03, -7.388e-02, 1.010e-02, -1.279e-02, 4.707e-02), r);\n\tr = MulAdd(s7_5, M4(3.021e-02, 8.185e-02, -1.230e-01, 2.231e-01, -3.762e-02, -2.493e-01, -2.623e-02, -2.778e-01, 6.918e-02, 1.902e-02, -9.916e-02, -2.807e-01, -4.177e-02, 3.213e-02, -5.395e-02, 5.346e-02), r);\n\tr = MulAdd(s7_6, M4(-3.677e-02, 8.425e-03, 1.583e-02, -7.588e-03, 3.335e-02, 4.774e-02, -1.190e-02, 1.936e-02, -5.956e-02, -2.931e-02, -6.092e-02, 6.113e-02, 8.702e-03, -2.472e-02, -7.609e-03, -7.800e-02), r);\n\tr = MulAdd(s7_7, M4(-1.198e-01, 6.918e-02, -2.854e-02, 2.875e-02, 8.723e-02, -1.937e-01, 2.986e-02, 1.310e-01, -6.265e-02, -1.409e-01, -1.194e-01, 2.090e-01, -1.643e-02, -1.501e-01, 4.103e-02, -1.420e-02), r);\n\tr = MulAdd(s7_8, M4(2.341e-02, 8.679e-02, 1.332e-02, 7.991e-02, 1.440e-01, -8.666e-02, 5.631e-02, -8.778e-02, 1.794e-01, 4.280e-02, -1.685e-02, -1.721e-01, -4.744e-02, 4.625e-02, -3.583e-02, -2.333e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.256e-03, -1.254e-02, 2.979e-02, 1.394e-02 };\n\tr = MulAdd(s0_0, M4(6.320e-02, -7.718e-02, 9.506e-02, 7.016e-03, -6.464e-02, 2.906e-03, -1.199e-01, 9.856e-02, -8.741e-02, 3.326e-02, 1.542e-02, -5.129e-02, 1.470e-01, -7.230e-02, -6.427e-02, 3.123e-02), r);\n\tr = MulAdd(s0_1, M4(-8.588e-02, -2.614e-02, 8.184e-02, 7.694e-02, -5.604e-02, 5.216e-02, 1.357e-01, 2.437e-01, -1.033e-01, 7.084e-02, 4.441e-02, 4.397e-02, -3.856e-02, -7.256e-02, 2.395e-02, 4.535e-03), r);\n\tr = MulAdd(s0_2, M4(-4.604e-02, 1.596e-02, 1.392e-01, 3.868e-02, 5.121e-02, 2.543e-01, 7.318e-02, 7.010e-02, 3.419e-02, 3.113e-02, -1.747e-02, -2.473e-02, -2.759e-02, -9.824e-02, -7.014e-02, -6.002e-02), r);\n\tr = MulAdd(s0_3, M4(-3.614e-02, -1.616e-01, -5.425e-02, 8.711e-02, -7.508e-02, 1.317e-01, 3.801e-02, 3.961e-02, -2.620e-03, -1.130e-02, -2.620e-02, 5.976e-02, -7.145e-03, 1.283e-01, -7.578e-02, -7.914e-02), r);\n\tr = MulAdd(s0_4, M4(4.839e-02, -1.199e-02, -3.252e-02, 5.731e-02, -1.909e-01, 1.175e-01, -1.192e-01, 1.086e-01, -9.094e-02, 1.143e-01, -3.654e-02, -3.028e-02, -8.647e-02, -6.826e-02, -1.610e-01, -3.038e-03), r);\n\tr = MulAdd(s0_5, M4(-1.978e-02, -1.834e-02, -4.260e-02, -1.173e-01, 1.760e-01, 1.418e-01, 4.347e-02, -2.425e-01, 3.787e-02, -2.291e-02, 5.158e-02, 6.051e-03, 2.596e-02, 7.399e-02, 1.628e-02, 7.668e-02), r);\n\tr = MulAdd(s0_6, M4(-1.158e-02, -3.459e-02, -7.090e-03, 6.518e-02, 1.804e-02, -4.394e-02, -1.789e-02, 5.996e-03, -6.698e-03, 4.131e-02, 1.149e-01, -8.381e-02, 7.473e-02, 1.978e-03, 9.873e-02, 8.531e-03), r);\n\tr = MulAdd(s0_7, M4(3.496e-02, 8.744e-02, 4.371e-02, -1.088e-01, -3.036e-02, -5.697e-02, 1.940e-02, -6.022e-03, 6.581e-03, 3.124e-03, 1.142e-02, -8.218e-02, 3.751e-02, -1.171e-01, -7.349e-03, -1.270e-01), r);\n\tr = MulAdd(s0_8, M4(4.895e-02, 2.241e-02, 5.956e-03, -3.883e-02, -7.192e-02, 1.757e-01, 4.466e-02, 4.012e-02, -3.673e-02, -1.307e-02, -2.441e-02, -9.896e-02, -2.868e-02, -1.131e-02, 4.646e-02, 9.386e-02), r);\n\tr = MulAdd(s1_0, M4(-1.430e-03, 3.561e-02, -3.690e-01, 1.564e-01, 3.685e-02, 2.425e-03, -1.631e-01, -4.238e-02, -2.123e-01, -5.178e-02, 9.378e-02, -7.436e-02, 6.296e-02, -6.532e-02, -2.221e-01, 6.686e-01), r);\n\tr = MulAdd(s1_1, M4(-9.776e-03, -4.756e-02, -5.781e-02, 2.344e-01, -4.454e-02, -1.328e-01, -4.029e-02, 1.455e-01, -2.053e-01, 1.001e-02, 1.591e-01, -2.491e-01, -2.265e-01, -2.036e-01, -3.604e-02, -6.287e-03), r);\n\tr = MulAdd(s1_2, M4(1.567e-01, 1.016e-01, -1.516e-01, -7.148e-02, 2.769e-02, 5.141e-02, 2.809e-02, -5.084e-02, -1.296e-01, 3.819e-02, 3.261e-01, -2.187e-01, 1.355e-02, -2.216e-01, 4.251e-03, 2.603e-02), r);\n\tr = MulAdd(s1_3, M4(-5.761e-02, 1.639e-01, 1.786e-01, -3.273e-01, 9.615e-02, 6.864e-02, 9.650e-02, -4.877e-02, -4.408e-02, 7.343e-03, 7.796e-02, -2.653e-01, 1.835e-01, 1.345e-01, 9.666e-02, 2.262e-01), r);\n\tr = MulAdd(s1_4, M4(-3.391e-01, 4.119e-02, 2.529e-01, -2.811e-01, -2.786e-03, -1.297e-01, -8.726e-02, 7.554e-02, -3.214e-01, -4.229e-02, 6.652e-02, -3.961e-01, -5.312e-02, -1.620e-01, 1.159e-02, 2.044e-01), r);\n\tr = MulAdd(s1_5, M4(-8.320e-02, 1.444e-01, 1.536e-01, -3.765e-01, 2.449e-02, -3.528e-02, -1.436e-01, -9.440e-02, -2.857e-01, -3.807e-01, 1.571e-01, -1.162e-01, 2.310e-02, 1.582e-01, 1.143e-01, -1.543e-02), r);\n\tr = MulAdd(s1_6, M4(-5.282e-02, 1.744e-01, 4.193e-02, 2.067e-01, -1.906e-02, 6.041e-02, 4.649e-02, -4.463e-03, -6.232e-02, 4.702e-02, 1.993e-01, -3.678e-01, 2.422e-01, 1.648e-01, 1.056e-01, 3.540e-01), r);\n\tr = MulAdd(s1_7, M4(-2.235e-01, 5.221e-01, 1.819e-01, 5.619e-02, -1.677e-02, -1.433e-01, 1.799e-02, 1.457e-02, -1.292e-01, 1.292e-01, 2.298e-01, -3.856e-01, 1.253e-01, -2.538e-01, -2.143e-01, -3.131e-01), r);\n\tr = MulAdd(s1_8, M4(-1.091e-01, 6.784e-02, -2.271e-01, -5.712e-02, -8.358e-02, -2.816e-02, -1.511e-02, -9.424e-02, -4.637e-02, -1.751e-01, 1.128e-01, -1.316e-01, 3.199e-03, 3.003e-02, -2.507e-03, 3.708e-02), r);\n\tr = MulAdd(s2_0, M4(7.022e-02, 9.826e-03, 1.264e-01, -6.655e-02, -9.567e-02, 7.824e-02, -1.140e-01, -6.869e-02, -4.578e-02, -4.380e-02, 8.145e-02, 1.228e-02, 2.101e-02, -2.336e-02, 4.873e-02, -4.936e-02), r);\n\tr = MulAdd(s2_1, M4(9.575e-03, 5.262e-02, -9.150e-02, 4.189e-02, -7.853e-02, 2.990e-02, -4.065e-03, -1.226e-01, -3.636e-04, 1.089e-02, 9.353e-02, 1.230e-02, 6.342e-03, -4.481e-02, -3.678e-02, -3.514e-03), r);\n\tr = MulAdd(s2_2, M4(1.176e-01, -1.579e-01, 4.680e-02, 2.423e-02, -1.349e-01, -2.077e-01, 3.620e-02, -1.201e-01, -2.024e-02, -6.755e-03, 2.079e-02, 4.859e-02, 1.734e-01, 8.149e-03, 1.137e-01, 2.593e-03), r);\n\tr = MulAdd(s2_3, M4(1.332e-02, -1.541e-01, -5.517e-02, -2.061e-02, 7.641e-02, -4.840e-02, -1.162e-01, -3.291e-01, -1.245e-01, 3.492e-02, -2.600e-02, 1.613e-01, 9.448e-02, 1.412e-01, 2.535e-02, -1.406e-01), r);\n\tr = MulAdd(s2_4, M4(2.151e-01, -1.365e-02, 1.180e-02, 2.581e-02, 6.572e-02, -1.372e-02, -1.722e-01, -1.926e-01, 4.826e-02, -1.078e-01, -1.183e-01, -7.610e-02, -7.766e-03, 4.998e-02, -1.190e-02, -1.360e-02), r);\n\tr = MulAdd(s2_5, M4(2.103e-01, -1.463e-02, -1.856e-01, 2.490e-02, 2.971e-02, -1.128e-01, -2.542e-01, -1.356e-01, -8.917e-03, 6.293e-02, -1.829e-02, -5.433e-02, 8.434e-02, -1.365e-01, -2.178e-01, -9.137e-02), r);\n\tr = MulAdd(s2_6, M4(3.370e-01, -2.690e-01, -1.512e-02, -1.231e-01, -5.368e-02, -6.936e-02, 5.311e-02, -3.567e-02, 7.326e-02, -7.379e-02, 3.780e-03, -4.926e-03, -5.118e-03, 4.603e-02, 1.331e-02, 7.783e-02), r);\n\tr = MulAdd(s2_7, M4(1.102e-01, -4.355e-02, -1.842e-01, -4.951e-02, -2.790e-02, -2.210e-01, -4.385e-02, -1.147e-01, 3.262e-02, 2.523e-02, -3.362e-02, 5.086e-02, -7.375e-02, 5.865e-03, 7.601e-02, 1.326e-01), r);\n\tr = MulAdd(s2_8, M4(2.669e-01, -2.111e-01, 7.244e-03, -7.698e-02, -2.844e-02, -4.207e-02, -3.568e-03, -6.819e-02, 3.351e-02, 2.784e-03, 2.415e-04, -2.362e-02, -2.661e-02, 2.854e-02, -2.674e-02, -6.056e-02), r);\n\tr = MulAdd(s3_0, M4(3.955e-02, 2.142e-02, -2.566e-02, 1.080e-02, 4.278e-02, -7.498e-02, 3.332e-02, 1.456e-02, -3.917e-03, -3.820e-02, -1.247e-01, -6.262e-02, -2.027e-02, -1.745e-01, -1.151e-01, -1.639e-02), r);\n\tr = MulAdd(s3_1, M4(5.990e-02, 4.835e-02, -1.038e-01, 7.007e-02, -2.788e-02, 2.322e-03, 1.116e-01, -9.015e-02, 4.873e-02, -7.391e-02, 1.696e-02, 4.602e-02, -2.696e-01, -1.999e-01, -1.103e-01, -1.714e-02), r);\n\tr = MulAdd(s3_2, M4(3.210e-02, -8.543e-02, -8.054e-02, -1.211e-02, 1.079e-02, 3.980e-02, 6.774e-02, -3.586e-02, -5.813e-02, -9.956e-02, -1.907e-02, -8.042e-02, -1.100e-01, 1.353e-01, -4.048e-02, 2.285e-02), r);\n\tr = MulAdd(s3_3, M4(-2.530e-02, -3.663e-02, 5.284e-02, -7.050e-02, -3.852e-02, 6.278e-03, -7.247e-02, -2.077e-02, 7.670e-04, 4.137e-02, 4.632e-02, 4.830e-02, 2.586e-01, 6.367e-02, -6.495e-02, -3.022e-02), r);\n\tr = MulAdd(s3_4, M4(-2.026e-01, 1.004e-01, 2.051e-01, 1.364e-02, 1.316e-01, 9.292e-02, -5.945e-02, 1.091e-01, 1.033e-01, -1.929e-01, -1.421e-01, -5.142e-02, -1.676e-02, -2.549e-01, 2.412e-01, -3.018e-01), r);\n\tr = MulAdd(s3_5, M4(-3.704e-02, -6.964e-02, 6.598e-03, 8.814e-02, 7.165e-02, -4.431e-02, -1.288e-01, -5.984e-02, 3.779e-02, -1.225e-01, -3.971e-03, 5.088e-02, -5.586e-02, -7.200e-02, 2.022e-02, -1.665e-01), r);\n\tr = MulAdd(s3_6, M4(-1.237e-01, -1.838e-01, 1.462e-02, -7.791e-02, 1.130e-01, 6.404e-02, 5.346e-02, -4.299e-04, 1.870e-02, 4.440e-02, 3.492e-03, 1.038e-01, -6.858e-02, -2.071e-02, -2.566e-02, 4.679e-02), r);\n\tr = MulAdd(s3_7, M4(-7.821e-02, 9.331e-02, -6.336e-02, 8.823e-02, -4.691e-03, -1.123e-02, -4.472e-02, 1.027e-01, -5.471e-02, 8.144e-02, 1.998e-02, 1.143e-01, -2.183e-01, 7.181e-02, -3.760e-02, -8.993e-02), r);\n\tr = MulAdd(s3_8, M4(5.917e-02, -2.845e-02, -2.938e-02, -3.687e-02, -1.116e-01, -1.184e-01, 1.099e-01, 1.020e-01, 2.030e-03, 1.817e-03, -3.595e-02, 4.143e-04, -5.942e-02, 3.027e-02, -4.019e-02, 9.432e-02), r);\n\tr = MulAdd(s4_0, M4(-4.261e-02, 1.766e-02, 9.293e-02, -5.081e-02, 9.748e-02, -6.530e-02, -1.216e-01, 1.010e-02, -2.167e-01, -7.010e-03, 2.974e-02, -4.901e-02, -2.646e-03, 1.033e-02, -6.713e-02, -1.442e-01), r);\n\tr = MulAdd(s4_1, M4(7.373e-02, -6.465e-02, -7.503e-02, -7.127e-02, -1.255e-01, 1.340e-02, -1.245e-01, 3.496e-02, -1.546e-01, -3.533e-02, -5.367e-02, -8.579e-03, 1.241e-01, 1.731e-02, -1.479e-02, -2.206e-02), r);\n\tr = MulAdd(s4_2, M4(5.265e-02, -7.941e-02, 5.017e-02, -2.362e-02, 2.740e-02, 6.718e-02, 1.580e-02, -4.146e-02, -5.366e-02, -3.145e-02, 1.035e-01, 2.084e-02, 1.680e-02, -9.646e-02, -1.065e-01, -1.834e-02), r);\n\tr = MulAdd(s4_3, M4(8.164e-02, 7.382e-03, 5.676e-02, 7.940e-02, 8.327e-02, 7.134e-02, 1.251e-01, -1.103e-02, -1.549e-01, -6.383e-02, 1.144e-02, -7.174e-02, 3.976e-02, 8.730e-02, -1.003e-01, -5.632e-02), r);\n\tr = MulAdd(s4_4, M4(1.269e-01, -1.364e-01, 2.985e-01, 4.161e-02, 3.140e-03, 9.006e-02, -1.225e-02, 2.627e-01, -3.744e-01, 4.081e-02, 9.455e-02, 3.477e-02, -9.757e-03, 8.997e-03, -2.210e-01, 2.177e-01), r);\n\tr = MulAdd(s4_5, M4(2.005e-02, 7.934e-02, -8.341e-03, 5.906e-02, 4.050e-02, 8.305e-02, -6.599e-02, 4.685e-02, -3.776e-02, -1.510e-01, 3.013e-02, -1.222e-02, -1.127e-01, 1.073e-02, -1.633e-02, -1.180e-01), r);\n\tr = MulAdd(s4_6, M4(-3.381e-02, -4.626e-02, 3.144e-02, -6.961e-02, 9.662e-02, -1.304e-02, -4.102e-02, 6.509e-02, -1.617e-01, -1.666e-02, 2.633e-02, 1.079e-01, 1.275e-01, 2.305e-01, 1.164e-01, 5.076e-02), r);\n\tr = MulAdd(s4_7, M4(8.643e-02, -1.511e-01, -6.230e-02, -6.197e-02, -6.672e-02, 2.599e-02, -7.017e-02, 5.437e-02, -1.406e-01, 3.464e-02, -8.536e-02, -5.700e-02, -8.383e-02, 1.391e-01, 3.891e-01, 8.632e-02), r);\n\tr = MulAdd(s4_8, M4(4.181e-02, -4.849e-02, -7.718e-02, 7.518e-02, 1.577e-03, -1.840e-02, -9.197e-03, -4.337e-02, -1.126e-01, 5.666e-02, 1.596e-03, -1.028e-01, -1.218e-01, 6.298e-02, 1.049e-01, 8.461e-02), r);\n\tr = MulAdd(s5_0, M4(-1.387e-01, 4.819e-03, 3.064e-02, -1.743e-01, 1.076e-01, -4.823e-02, -4.510e-02, 4.724e-02, -9.852e-03, 2.309e-03, -2.033e-02, -1.944e-02, 2.860e-03, 2.271e-02, -4.729e-02, -9.371e-02), r);\n\tr = MulAdd(s5_1, M4(-7.357e-02, -5.027e-02, -1.819e-01, -5.641e-02, 8.112e-02, -4.896e-02, -9.809e-02, 5.778e-03, 4.078e-02, -6.831e-02, -1.898e-01, -1.351e-02, 1.226e-01, 6.178e-02, -4.512e-02, -2.158e-02), r);\n\tr = MulAdd(s5_2, M4(5.850e-02, -5.272e-02, 1.044e-01, -7.582e-02, 1.749e-02, 4.037e-02, 6.002e-02, -6.747e-03, 1.003e-01, -9.924e-02, -9.152e-02, 5.488e-03, -1.101e-02, -7.243e-02, -1.296e-01, 1.558e-02), r);\n\tr = MulAdd(s5_3, M4(6.173e-02, 1.755e-01, -7.152e-02, -3.348e-01, 3.104e-01, -6.098e-02, 2.352e-01, -3.734e-01, 5.136e-02, 4.157e-02, 5.028e-02, -1.600e-01, -1.269e-01, 4.136e-02, -1.563e-02, -6.619e-02), r);\n\tr = MulAdd(s5_4, M4(-1.144e-02, 2.076e-01, 6.527e-02, -1.160e-01, -1.525e-01, 8.878e-02, 2.254e-01, 1.486e-01, -1.173e-01, -2.311e-02, 3.828e-02, -3.514e-02, -1.886e-01, 1.043e-01, -1.510e-01, 7.074e-02), r);\n\tr = MulAdd(s5_5, M4(2.749e-02, -6.254e-02, -1.639e-01, -2.591e-01, 7.234e-02, -1.603e-03, -9.239e-02, 4.716e-02, 2.100e-02, -1.405e-01, 1.463e-01, 8.715e-02, -1.764e-01, 1.204e-01, 3.718e-02, 3.813e-02), r);\n\tr = MulAdd(s5_6, M4(2.766e-02, 1.623e-01, 1.378e-01, -1.562e-01, 1.616e-01, 8.169e-02, 5.208e-02, -1.288e-01, 6.320e-02, 9.176e-02, 1.180e-02, 1.137e-01, 8.061e-02, -1.175e-01, 6.469e-02, -1.322e-02), r);\n\tr = MulAdd(s5_7, M4(-1.880e-01, 2.300e-02, 1.062e-01, 1.907e-02, -9.183e-02, -8.551e-02, 9.594e-02, 1.451e-01, 1.138e-01, 1.241e-01, -7.151e-02, 9.592e-02, 5.135e-02, -8.747e-02, -8.409e-02, -6.575e-02), r);\n\tr = MulAdd(s5_8, M4(-2.020e-01, -1.719e-01, -6.394e-02, 1.819e-02, 8.297e-02, -9.173e-02, 5.302e-02, -9.164e-02, 1.000e-01, -1.038e-01, -8.130e-02, 1.412e-01, -1.411e-01, 1.092e-01, 2.095e-02, 9.288e-02), r);\n\tr = MulAdd(s6_0, M4(-4.180e-02, -5.188e-02, 9.579e-02, -2.742e-02, -9.921e-04, 1.066e-02, 9.985e-02, -4.637e-02, 6.303e-02, -1.439e-02, 4.576e-02, -2.195e-02, 4.854e-02, -1.255e-01, -8.582e-03, 6.013e-02), r);\n\tr = MulAdd(s6_1, M4(-3.422e-02, 2.045e-02, -4.093e-02, -1.336e-01, -8.530e-02, 5.189e-02, 1.427e-01, -1.012e-01, 1.486e-01, -1.828e-02, -9.215e-02, 2.158e-02, 1.942e-02, -1.541e-02, -1.068e-01, -3.169e-02), r);\n\tr = MulAdd(s6_2, M4(-3.700e-02, -1.217e-01, 1.191e-01, -4.359e-03, -2.485e-02, 1.825e-02, 1.838e-01, -3.668e-02, 2.293e-02, 3.977e-02, -8.759e-02, 4.553e-03, -6.276e-02, -2.628e-02, -3.391e-02, 1.566e-04), r);\n\tr = MulAdd(s6_3, M4(-1.024e-02, -2.777e-02, 4.128e-02, -6.782e-02, -3.726e-03, -5.963e-02, -9.420e-03, -9.402e-02, -8.151e-02, -9.414e-02, -3.991e-02, 7.724e-02, -7.746e-02, -7.503e-02, 7.464e-02, -8.905e-02), r);\n\tr = MulAdd(s6_4, M4(-2.709e-01, 2.423e-01, 2.496e-01, 2.597e-03, -1.579e-01, 2.001e-01, -1.406e-01, -7.105e-02, 3.040e-01, -3.878e-02, -1.402e-01, -6.004e-02, -8.634e-02, -1.154e-01, 7.337e-02, -5.099e-02), r);\n\tr = MulAdd(s6_5, M4(8.580e-02, -1.532e-01, 5.976e-02, 2.598e-01, -1.812e-02, 2.478e-01, -1.218e-02, 1.008e-01, -3.848e-02, -3.495e-02, 1.092e-03, -1.450e-01, -9.653e-02, -9.008e-02, 4.896e-02, 7.095e-02), r);\n\tr = MulAdd(s6_6, M4(-1.837e-01, -1.233e-01, -1.180e-02, -1.169e-02, -1.061e-01, -2.287e-02, -8.552e-03, -5.326e-02, 7.852e-02, 7.589e-03, 2.108e-02, -4.405e-03, 3.078e-02, -9.147e-02, -1.023e-01, -1.030e-02), r);\n\tr = MulAdd(s6_7, M4(1.237e-01, -2.445e-01, -2.362e-01, -2.529e-02, -7.137e-02, -5.691e-04, -7.231e-02, -1.206e-01, -5.707e-02, 8.429e-02, -2.818e-02, -5.455e-03, -1.368e-01, 1.412e-01, 1.685e-01, 1.579e-01), r);\n\tr = MulAdd(s6_8, M4(8.906e-02, -7.479e-03, -4.303e-02, 4.799e-02, -8.465e-02, 7.594e-02, -1.030e-02, -1.335e-01, -8.414e-03, -4.142e-02, -7.459e-03, 3.904e-02, -1.490e-01, -8.325e-04, 6.042e-02, 1.324e-01), r);\n\tr = MulAdd(s7_0, M4(4.533e-02, -5.916e-02, -9.127e-02, -4.446e-02, 8.467e-02, -1.642e-02, 9.352e-02, 3.970e-03, -1.636e-01, -1.423e-01, 4.556e-03, -1.125e-01, -4.726e-02, 8.311e-02, 5.499e-02, 3.963e-02), r);\n\tr = MulAdd(s7_1, M4(4.547e-02, 3.472e-03, -8.499e-02, 6.881e-02, 8.495e-02, -8.364e-02, -4.263e-02, 1.058e-01, -9.016e-02, -7.198e-02, -1.056e-01, -6.057e-03, -4.490e-02, 1.829e-02, 4.157e-02, -8.081e-02), r);\n\tr = MulAdd(s7_2, M4(-8.375e-02, -1.000e-02, -1.144e-02, 5.829e-02, 5.197e-02, -1.701e-01, -2.617e-02, -3.956e-02, 2.774e-03, -6.882e-02, -1.381e-01, -2.288e-01, -6.002e-02, 3.220e-02, -1.218e-03, 6.675e-02), r);\n\tr = MulAdd(s7_3, M4(5.483e-02, -1.547e-02, -6.716e-03, -1.510e-01, 7.996e-02, -1.777e-02, 4.348e-02, 8.002e-02, 1.035e-01, -9.894e-03, -2.000e-02, 1.043e-01, -9.879e-02, -1.135e-01, -2.837e-02, 1.051e-01), r);\n\tr = MulAdd(s7_4, M4(-2.424e-01, 2.243e-01, -3.853e-02, 2.895e-01, 2.039e-01, -1.486e-01, -3.057e-02, -6.787e-02, 1.795e-02, -1.118e-01, -2.165e-01, -4.785e-02, 5.191e-02, 1.092e-01, -1.205e-01, 1.643e-01), r);\n\tr = MulAdd(s7_5, M4(2.205e-01, -2.171e-02, 4.996e-02, 9.916e-02, 5.749e-02, 3.081e-02, 8.032e-02, 1.415e-01, -2.332e-01, 1.230e-02, -1.489e-02, 2.408e-02, 4.951e-02, -7.304e-02, 3.857e-02, 3.996e-03), r);\n\tr = MulAdd(s7_6, M4(-6.612e-02, 1.535e-02, -8.325e-02, 9.137e-02, 2.110e-02, 2.828e-02, -3.476e-02, -3.593e-02, 6.483e-03, -6.664e-02, 1.464e-01, 3.244e-03, -4.637e-02, -3.400e-02, 8.721e-03, -2.291e-02), r);\n\tr = MulAdd(s7_7, M4(1.081e-01, -8.187e-03, -5.687e-02, 5.623e-02, 9.695e-02, 9.866e-03, -3.664e-02, -7.675e-03, 2.581e-02, 7.745e-02, 5.536e-02, -7.075e-02, -1.414e-01, -5.800e-02, -1.569e-02, 4.333e-02), r);\n\tr = MulAdd(s7_8, M4(6.782e-02, 2.670e-02, -1.368e-02, -1.088e-01, -6.193e-02, -5.791e-02, 8.965e-02, -6.801e-03, 2.512e-02, -3.296e-02, 1.083e-01, 3.109e-02, 2.950e-02, 2.437e-02, -2.642e-02, 8.794e-03), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.299e-02, 3.575e-02, 4.653e-02, -5.926e-02 };\n\tr = MulAdd(s0_0, M4(3.887e-02, 3.025e-02, 1.517e-03, -3.288e-02, -1.083e-01, -4.845e-02, 2.170e-02, 4.413e-02, 2.451e-02, -6.292e-02, -2.513e-02, 5.728e-02, 3.625e-02, 7.753e-02, 7.297e-02, -5.741e-02), r);\n\tr = MulAdd(s0_1, M4(-1.728e-02, -5.232e-02, -8.858e-02, -2.687e-02, -1.604e-02, -6.041e-02, -1.106e-01, 7.307e-02, -3.834e-02, 1.996e-02, -1.364e-02, -1.310e-02, -1.076e-01, -1.056e-01, -1.804e-02, -1.684e-02), r);\n\tr = MulAdd(s0_2, M4(1.105e-01, -2.900e-02, 5.276e-02, -5.441e-03, -7.289e-02, 1.312e-01, 1.417e-01, -7.838e-03, -9.457e-02, 3.891e-04, 6.369e-02, -1.775e-02, 9.250e-02, 1.866e-02, -9.643e-02, 4.267e-02), r);\n\tr = MulAdd(s0_3, M4(-1.042e-01, 4.142e-02, -1.478e-01, -4.082e-02, -2.004e-01, -4.275e-02, 5.319e-02, 3.056e-02, -9.493e-03, 9.243e-03, -8.440e-02, -1.425e-02, -2.520e-02, -5.825e-02, 5.914e-02, -2.031e-02), r);\n\tr = MulAdd(s0_4, M4(-1.251e-01, -1.828e-01, -3.615e-02, 9.177e-02, -2.178e-01, 1.441e-01, -1.189e-01, -4.995e-02, -6.180e-02, 2.246e-02, 2.158e-02, 2.159e-03, -1.302e-01, -7.711e-02, -1.093e-01, -1.144e-02), r);\n\tr = MulAdd(s0_5, M4(1.565e-02, 2.006e-02, -2.840e-02, 4.644e-02, -1.280e-01, 7.514e-02, 6.596e-02, -1.821e-01, 3.658e-02, 8.469e-03, 5.564e-02, -5.136e-02, 2.397e-02, -1.296e-02, -4.520e-02, -1.471e-02), r);\n\tr = MulAdd(s0_6, M4(-3.172e-02, 4.281e-02, 5.391e-04, -7.864e-02, -1.542e-02, 1.393e-02, 8.824e-02, -5.775e-02, -1.202e-02, 6.912e-02, 1.232e-02, 7.675e-03, -4.605e-03, 7.013e-03, -1.183e-02, -1.676e-02), r);\n\tr = MulAdd(s0_7, M4(-1.415e-01, -5.271e-02, -5.525e-02, 6.507e-02, -3.757e-02, 3.016e-02, -1.386e-02, -4.343e-02, 1.544e-03, 1.466e-02, -1.114e-01, 7.776e-02, -2.544e-03, 1.628e-02, 1.985e-02, 5.872e-02), r);\n\tr = MulAdd(s0_8, M4(3.167e-02, -7.367e-02, -4.462e-02, 3.674e-02, 5.715e-02, -3.717e-02, -5.898e-02, 2.154e-02, 1.026e-01, -8.293e-03, -4.104e-02, 9.261e-04, 2.202e-02, 2.020e-02, -7.776e-03, -8.210e-03), r);\n\tr = MulAdd(s1_0, M4(-2.467e-01, -1.944e-02, 8.368e-02, 7.498e-02, 7.499e-02, 2.208e-03, 9.049e-02, -8.912e-02, -8.240e-02, 6.174e-02, 3.425e-02, -4.272e-02, -1.418e-01, 2.797e-01, 2.659e-01, -5.863e-02), r);\n\tr = MulAdd(s1_1, M4(6.391e-02, -6.175e-02, -1.784e-02, -4.688e-03, 1.535e-01, -3.568e-02, 3.525e-02, 2.541e-02, -1.344e-01, 3.259e-01, -3.196e-02, -6.148e-02, -3.933e-02, 1.929e-01, -1.274e-02, -2.005e-01), r);\n\tr = MulAdd(s1_2, M4(-7.743e-02, 1.428e-01, 1.349e-01, -5.239e-02, 1.095e-01, 4.970e-02, -1.311e-02, -1.640e-03, 1.850e-02, 1.172e-01, -2.602e-02, -4.640e-02, -1.370e-01, 8.976e-02, -8.676e-02, -7.201e-02), r);\n\tr = MulAdd(s1_3, M4(-1.673e-01, 1.323e-01, 1.950e-02, -1.240e-02, 8.475e-02, 2.113e-02, 8.506e-02, -5.274e-02, 1.806e-01, 1.457e-01, 2.915e-01, -1.440e-01, -1.149e-01, -1.061e-01, -2.980e-02, 6.842e-02), r);\n\tr = MulAdd(s1_4, M4(-2.799e-01, 2.112e-02, -2.612e-01, -1.700e-01, 3.217e-02, 1.276e-01, -9.203e-02, 2.761e-02, -2.181e-01, 5.061e-01, 3.991e-01, -1.106e-01, -2.741e-02, -2.481e-01, 2.170e-01, -2.852e-01), r);\n\tr = MulAdd(s1_5, M4(3.487e-01, 7.214e-02, 4.494e-02, 5.371e-02, 8.193e-02, 9.480e-02, -1.073e-01, 2.985e-02, 1.997e-02, 7.729e-02, 9.772e-02, -7.332e-02, -2.498e-01, 6.762e-02, 2.293e-02, -2.888e-01), r);\n\tr = MulAdd(s1_6, M4(4.480e-02, 1.056e-01, 1.198e-01, -1.012e-01, 1.828e-01, -7.560e-02, 3.066e-02, -6.429e-02, 8.751e-02, 3.170e-02, 7.807e-02, -3.122e-02, 9.162e-02, -1.106e-02, -1.311e-02, 9.599e-02), r);\n\tr = MulAdd(s1_7, M4(3.818e-02, -1.433e-01, 3.782e-01, -2.188e-02, 3.919e-02, -8.324e-02, -3.761e-02, 1.588e-02, -1.014e-01, 1.850e-01, 2.286e-02, 3.918e-02, 1.407e-01, -6.814e-02, 1.631e-01, 1.562e-02), r);\n\tr = MulAdd(s1_8, M4(-4.358e-04, -9.482e-02, 2.193e-01, -2.293e-01, 2.554e-01, -9.018e-02, -8.484e-02, 5.927e-02, 7.714e-02, 1.900e-01, 3.396e-02, 1.056e-02, -7.022e-02, 1.926e-02, 4.448e-02, 4.663e-02), r);\n\tr = MulAdd(s2_0, M4(1.784e-02, -7.199e-02, -5.824e-02, 6.873e-02, -3.191e-04, -9.134e-02, 8.370e-02, -3.068e-02, -5.419e-02, -6.458e-02, 6.291e-03, 3.031e-02, -4.128e-02, 5.380e-02, 4.977e-02, -7.324e-03), r);\n\tr = MulAdd(s2_1, M4(1.181e-02, -1.516e-01, -9.786e-02, 7.405e-02, 1.638e-01, -4.243e-02, 1.167e-01, 5.082e-02, 1.001e-01, 1.146e-01, -1.138e-01, 3.022e-02, -4.277e-02, 1.614e-02, 9.942e-02, -7.122e-03), r);\n\tr = MulAdd(s2_2, M4(1.158e-01, -1.022e-01, -2.080e-02, -7.057e-02, 5.919e-02, -1.602e-01, -5.761e-02, 6.987e-02, 1.531e-01, -6.507e-02, -8.643e-02, 9.661e-02, -4.889e-02, -4.945e-03, -1.143e-02, -2.502e-02), r);\n\tr = MulAdd(s2_3, M4(-1.857e-01, 1.340e-01, -2.733e-01, 1.031e-01, -4.808e-02, 1.324e-01, 4.173e-02, 3.009e-02, -1.060e-01, -2.040e-02, 9.355e-03, 6.253e-02, 5.537e-02, 8.865e-02, 1.822e-01, -1.006e-01), r);\n\tr = MulAdd(s2_4, M4(-9.784e-02, 2.023e-02, -1.142e-01, -2.146e-01, -3.103e-02, 1.708e-02, 1.423e-01, 3.270e-02, -1.197e-01, 2.456e-01, -1.454e-01, 3.783e-01, 1.439e-02, -4.989e-03, 8.481e-02, 5.491e-03), r);\n\tr = MulAdd(s2_5, M4(1.557e-01, -1.260e-02, 9.447e-02, 7.943e-02, 2.710e-02, 5.271e-02, 2.650e-02, 7.770e-02, 7.340e-02, -5.755e-02, -3.267e-03, 8.076e-02, -7.777e-02, 6.201e-02, 2.384e-02, -6.711e-03), r);\n\tr = MulAdd(s2_6, M4(-1.337e-01, 2.017e-01, 1.967e-01, 8.228e-02, -1.399e-03, -1.107e-01, 1.128e-02, 8.017e-02, -2.114e-02, 2.236e-02, 3.746e-02, 1.154e-01, 7.151e-03, -4.103e-02, 2.060e-01, 3.782e-02), r);\n\tr = MulAdd(s2_7, M4(1.582e-01, 4.512e-02, 1.201e-01, 3.814e-02, -8.135e-02, -5.291e-03, -5.477e-03, 9.017e-02, 1.552e-01, -3.701e-02, -7.238e-02, 1.975e-01, 4.302e-02, -3.722e-02, -7.104e-02, 1.231e-01), r);\n\tr = MulAdd(s2_8, M4(-1.981e-02, 1.215e-01, -6.274e-02, 5.424e-02, 9.411e-02, 6.553e-02, -7.473e-02, 1.218e-01, 4.111e-03, 1.296e-02, -1.339e-02, 6.284e-02, -3.329e-02, 4.491e-03, -4.000e-02, 2.687e-02), r);\n\tr = MulAdd(s3_0, M4(1.900e-02, 3.132e-02, -1.107e-02, 2.916e-02, -2.324e-02, -3.320e-02, -7.677e-02, -3.622e-03, -1.094e-01, 2.387e-02, 8.828e-03, 4.683e-03, 2.363e-01, 6.495e-02, 6.438e-02, -4.063e-03), r);\n\tr = MulAdd(s3_1, M4(1.306e-02, -7.558e-03, 8.329e-04, 8.291e-02, 1.002e-01, 6.220e-02, 3.872e-02, 2.616e-02, -6.577e-02, 1.472e-01, -1.272e-01, 1.232e-02, 1.216e-01, 3.466e-02, -5.328e-02, 3.051e-02), r);\n\tr = MulAdd(s3_2, M4(2.935e-02, -8.973e-02, 6.832e-02, -2.761e-02, 3.865e-02, 2.328e-02, -7.397e-02, -1.242e-02, 2.967e-02, 1.057e-01, -1.049e-01, 1.078e-01, -6.954e-02, 1.442e-02, 1.111e-01, -4.695e-02), r);\n\tr = MulAdd(s3_3, M4(2.117e-02, 6.500e-02, -7.845e-02, 8.502e-04, -6.699e-02, 3.160e-02, -8.446e-02, -3.742e-02, -1.103e-01, 4.940e-02, 1.327e-01, 6.795e-02, 2.514e-01, 1.525e-02, 1.133e-01, -7.580e-02), r);\n\tr = MulAdd(s3_4, M4(-1.365e-01, -1.377e-02, 2.066e-02, -3.622e-02, 1.422e-01, -1.854e-01, 1.101e-01, 9.160e-02, -2.666e-01, 2.378e-01, -2.834e-01, 2.074e-01, 6.809e-01, -6.729e-02, 1.868e-01, 2.246e-01), r);\n\tr = MulAdd(s3_5, M4(7.356e-02, -9.508e-02, -1.172e-04, 5.422e-02, -1.893e-02, 6.854e-02, -1.892e-02, 6.860e-03, -2.202e-02, -9.934e-02, 2.023e-02, 1.135e-01, 8.935e-02, 1.218e-01, -6.803e-02, 5.408e-02), r);\n\tr = MulAdd(s3_6, M4(1.426e-01, -9.283e-02, 2.520e-02, -5.103e-02, 1.056e-01, -1.709e-02, 9.450e-02, -2.310e-02, -1.719e-02, 6.322e-02, 2.448e-02, 8.671e-02, 9.691e-02, -1.051e-01, -2.729e-02, 2.363e-02), r);\n\tr = MulAdd(s3_7, M4(-9.781e-02, -1.276e-01, -1.571e-01, 1.159e-02, -4.129e-03, -1.075e-01, 1.402e-01, -1.880e-02, 1.100e-01, -4.011e-02, -1.048e-02, 1.545e-01, 3.196e-01, -1.222e-01, 3.091e-02, 5.484e-02), r);\n\tr = MulAdd(s3_8, M4(-2.461e-02, -1.011e-01, -2.695e-02, 2.886e-02, 4.451e-02, -5.603e-02, -7.350e-02, 1.154e-02, 6.965e-02, 1.972e-02, -5.793e-03, 5.401e-02, 6.273e-02, -1.393e-01, 6.810e-02, -1.290e-02), r);\n\tr = MulAdd(s4_0, M4(-7.404e-02, 5.460e-02, -4.076e-02, -3.550e-02, 6.267e-02, 3.118e-02, 3.598e-02, -1.232e-02, 7.524e-02, -1.605e-02, -8.208e-02, 2.116e-02, 1.133e-01, -4.855e-02, -1.767e-02, 6.122e-03), r);\n\tr = MulAdd(s4_1, M4(-2.916e-02, -3.449e-02, -1.089e-02, 8.319e-03, -4.846e-02, -1.997e-01, 2.053e-03, 5.580e-02, -6.975e-02, -8.495e-02, -4.238e-03, 4.718e-02, 3.513e-02, 6.665e-02, 6.092e-02, 5.555e-02), r);\n\tr = MulAdd(s4_2, M4(1.128e-01, 4.959e-02, -3.970e-02, 2.896e-03, 1.092e-02, 2.103e-02, -3.434e-03, -3.586e-02, 1.436e-02, 4.328e-02, -4.943e-03, 2.167e-02, -1.454e-02, -1.050e-02, 3.731e-03, -1.429e-02), r);\n\tr = MulAdd(s4_3, M4(5.178e-02, 2.050e-02, -1.067e-01, -1.003e-02, 1.600e-01, 1.565e-01, -1.674e-01, 1.675e-02, 1.097e-01, -8.281e-03, -4.795e-02, -6.924e-03, 1.339e-01, -7.568e-02, -8.288e-02, 9.900e-02), r);\n\tr = MulAdd(s4_4, M4(-4.674e-02, -2.970e-02, -2.418e-01, -4.915e-04, 3.764e-03, -1.025e-01, -1.236e-01, -2.139e-01, -6.857e-02, 5.994e-03, -1.035e-01, -7.110e-02, -1.443e-01, -6.694e-02, 1.153e-01, -3.853e-02), r);\n\tr = MulAdd(s4_5, M4(7.134e-02, 1.370e-02, -2.476e-02, 7.440e-02, 3.270e-02, -2.947e-02, 1.667e-02, 8.067e-03, 2.572e-02, 1.023e-01, -7.215e-02, -3.183e-03, -7.987e-02, -4.945e-02, -1.032e-04, 4.923e-02), r);\n\tr = MulAdd(s4_6, M4(2.903e-02, -5.938e-03, -4.288e-02, -2.255e-02, 2.899e-02, 6.334e-03, 2.114e-02, 3.533e-02, 8.110e-03, -9.280e-02, -1.825e-02, -4.875e-02, 2.026e-01, -7.598e-02, -3.330e-03, -6.580e-02), r);\n\tr = MulAdd(s4_7, M4(-1.462e-01, 3.489e-02, 3.617e-02, -1.989e-02, 5.885e-02, -2.127e-04, -1.736e-02, 8.010e-03, -7.144e-03, -6.051e-02, -9.249e-02, -8.694e-02, -6.210e-02, -1.074e-01, 2.473e-01, -5.482e-02), r);\n\tr = MulAdd(s4_8, M4(1.274e-01, 4.183e-02, 2.901e-02, 3.209e-03, -8.022e-02, 1.969e-02, 2.072e-02, -2.608e-02, 5.421e-02, -1.053e-01, 2.146e-02, -5.179e-02, 7.973e-02, -5.988e-02, 1.210e-01, -4.631e-03), r);\n\tr = MulAdd(s5_0, M4(2.636e-02, 8.165e-03, 1.182e-01, -6.995e-02, -6.976e-02, 2.215e-03, -5.314e-02, 8.933e-02, -4.300e-02, 2.515e-02, -8.037e-02, 6.770e-03, -9.013e-02, -1.090e-02, -1.293e-02, 7.325e-02), r);\n\tr = MulAdd(s5_1, M4(2.783e-02, 1.057e-01, 1.285e-01, -4.333e-02, -2.084e-02, -1.239e-02, 1.368e-02, 1.511e-02, -1.975e-02, 9.784e-02, 7.017e-02, -2.711e-02, 5.978e-02, -2.261e-02, 2.617e-02, 2.476e-02), r);\n\tr = MulAdd(s5_2, M4(5.491e-02, 9.302e-02, -6.994e-02, -3.273e-02, -7.603e-02, 5.919e-02, -2.470e-02, 5.787e-02, -1.126e-01, 1.712e-01, 9.627e-03, -2.791e-02, -6.110e-02, -5.188e-02, 3.332e-03, 6.078e-02), r);\n\tr = MulAdd(s5_3, M4(2.370e-01, -4.704e-02, 2.878e-01, 1.572e-02, 8.702e-02, 2.085e-01, -1.493e-01, 4.833e-03, 2.878e-03, 9.338e-02, -9.101e-02, -4.112e-02, 1.460e-01, 3.081e-02, -1.515e-01, 8.386e-02), r);\n\tr = MulAdd(s5_4, M4(7.837e-02, 8.659e-03, 1.307e-01, -1.490e-01, -1.352e-01, 1.181e-01, -7.400e-03, 1.975e-02, 1.048e-02, 7.512e-02, -7.127e-02, -3.951e-02, -1.431e-01, -1.643e-01, 1.383e-01, 7.349e-02), r);\n\tr = MulAdd(s5_5, M4(-6.518e-02, -7.774e-03, 4.944e-02, -1.617e-02, -6.328e-02, -7.094e-02, 4.030e-02, 6.984e-02, 9.349e-02, -2.611e-02, -4.126e-02, -4.661e-02, -9.324e-02, -5.326e-02, -3.313e-02, 1.342e-01), r);\n\tr = MulAdd(s5_6, M4(4.095e-02, 6.703e-02, 1.374e-01, 5.021e-02, -8.304e-02, 7.704e-02, 3.923e-02, 7.668e-02, -1.441e-01, 6.898e-02, 8.456e-04, -3.362e-02, -5.124e-02, -5.141e-02, -1.341e-01, 7.546e-02), r);\n\tr = MulAdd(s5_7, M4(2.028e-01, -6.965e-02, 1.672e-01, 8.417e-02, 1.001e-01, -1.704e-02, -3.863e-02, 7.112e-02, -1.513e-02, 2.499e-02, 1.131e-01, -2.397e-02, -1.813e-01, -5.494e-02, -9.805e-04, -9.176e-02), r);\n\tr = MulAdd(s5_8, M4(1.635e-01, 6.301e-02, 3.947e-02, -2.926e-02, -1.375e-01, 4.817e-02, -2.079e-02, 4.112e-02, 2.780e-02, 2.360e-03, 7.991e-03, 2.806e-02, -2.174e-02, -1.659e-01, 6.571e-02, 2.288e-02), r);\n\tr = MulAdd(s6_0, M4(1.174e-02, 3.992e-02, -2.902e-02, -1.564e-02, -9.947e-03, 1.022e-01, -4.538e-02, 3.136e-02, -3.908e-02, 2.333e-02, -1.226e-02, -1.850e-02, 7.776e-02, 4.887e-02, -3.093e-02, -3.977e-02), r);\n\tr = MulAdd(s6_1, M4(-5.709e-02, 2.241e-01, 7.495e-02, -8.553e-02, -1.715e-02, 7.678e-02, -8.276e-02, -1.398e-01, 6.393e-02, 2.037e-02, -3.649e-02, -4.055e-02, 1.133e-01, 1.523e-01, -2.925e-02, -1.990e-02), r);\n\tr = MulAdd(s6_2, M4(-4.584e-02, 5.224e-02, -1.234e-01, -6.822e-02, 7.514e-02, -3.682e-02, -1.897e-02, -6.379e-02, 4.519e-02, 2.138e-02, -4.252e-02, 5.279e-02, 1.038e-01, 1.302e-01, -1.700e-02, 1.614e-05), r);\n\tr = MulAdd(s6_3, M4(-1.100e-01, 6.973e-02, -5.033e-02, -4.205e-02, 1.030e-01, 9.182e-02, -5.071e-02, -1.013e-01, 9.751e-02, 4.474e-03, 3.944e-02, -2.502e-02, 4.318e-02, 3.176e-02, 7.114e-02, -9.254e-02), r);\n\tr = MulAdd(s6_4, M4(-1.743e-02, -1.281e-01, 1.648e-01, -1.096e-01, -1.154e-01, -1.067e-01, -1.176e-01, -2.978e-02, -1.082e-01, -1.007e-01, 1.235e-01, -2.123e-01, -3.999e-02, 8.520e-02, 1.106e-01, -1.162e-01), r);\n\tr = MulAdd(s6_5, M4(5.794e-02, -1.919e-01, 1.467e-01, -1.568e-01, -2.875e-02, -9.323e-02, 7.649e-02, -1.092e-01, 6.633e-02, 6.140e-02, 4.574e-02, 4.918e-02, 1.785e-01, 1.223e-01, 4.278e-03, -1.782e-01), r);\n\tr = MulAdd(s6_6, M4(-7.013e-02, -4.507e-02, -7.393e-02, 2.513e-03, 1.189e-01, 1.257e-02, -4.197e-02, -3.805e-02, 7.862e-03, 7.478e-02, -1.991e-02, 1.965e-02, 1.314e-01, -1.430e-02, 2.908e-02, -6.047e-02), r);\n\tr = MulAdd(s6_7, M4(-3.217e-02, 4.262e-02, -1.983e-01, 4.035e-02, -1.659e-02, -9.437e-02, -4.622e-02, -6.658e-02, -8.081e-02, 3.849e-02, 1.314e-01, -5.261e-02, 8.661e-02, -8.237e-03, 1.585e-01, -1.614e-01), r);\n\tr = MulAdd(s6_8, M4(-5.737e-02, -3.302e-03, -6.742e-02, -9.583e-02, -3.381e-02, -2.261e-02, -1.857e-02, 2.350e-03, 1.091e-01, -6.425e-02, 1.871e-02, -6.960e-02, 1.333e-01, -2.407e-02, 2.956e-02, -2.104e-01), r);\n\tr = MulAdd(s7_0, M4(-2.732e-02, -6.994e-02, -1.080e-01, 1.307e-02, 5.425e-03, 6.067e-02, 4.972e-03, 6.205e-02, 5.202e-02, 1.135e-02, -5.078e-02, -9.209e-02, -8.480e-02, -5.938e-02, -2.936e-02, 2.958e-02), r);\n\tr = MulAdd(s7_1, M4(-9.352e-02, 4.578e-02, -1.038e-01, 4.931e-02, 2.834e-02, 2.557e-02, 1.260e-01, 8.063e-02, -4.916e-02, -2.708e-02, 1.820e-01, -6.008e-02, 5.311e-02, -2.096e-02, -6.459e-02, -2.527e-02), r);\n\tr = MulAdd(s7_2, M4(-1.379e-02, -6.491e-02, -3.690e-02, 8.692e-03, 6.566e-02, -2.458e-02, 7.286e-02, 1.636e-03, 3.495e-02, 9.653e-02, 4.719e-02, 4.307e-04, 3.166e-02, -2.120e-02, 1.104e-03, 2.250e-02), r);\n\tr = MulAdd(s7_3, M4(-2.417e-02, -3.347e-02, -5.044e-03, -2.641e-03, 7.385e-02, 5.451e-02, -3.506e-02, 3.922e-02, 1.964e-01, 7.353e-02, 5.081e-02, 5.929e-02, -1.945e-01, -9.979e-03, -2.426e-01, 5.309e-02), r);\n\tr = MulAdd(s7_4, M4(1.228e-01, 3.044e-02, -4.675e-02, -6.772e-02, -1.994e-01, -7.171e-02, -1.114e-01, 2.572e-01, -2.172e-01, -1.079e-01, 9.681e-03, -6.967e-02, 1.219e-03, -4.686e-03, -7.765e-03, 8.815e-03), r);\n\tr = MulAdd(s7_5, M4(-6.989e-02, -1.078e-01, 8.804e-02, -1.109e-01, 1.683e-01, -4.964e-02, -2.924e-02, 1.125e-02, 2.629e-01, 1.073e-01, -5.051e-02, 1.134e-01, 3.944e-02, -2.659e-02, -3.542e-02, 2.898e-02), r);\n\tr = MulAdd(s7_6, M4(2.536e-02, -6.420e-02, -4.203e-02, -1.582e-02, 4.380e-02, -3.555e-02, -2.422e-02, -8.902e-03, -1.086e-01, 2.797e-02, -1.048e-01, 1.116e-01, -1.139e-02, 3.176e-02, 2.587e-02, 2.958e-02), r);\n\tr = MulAdd(s7_7, M4(5.033e-02, 1.780e-02, -9.527e-02, 3.954e-02, -6.976e-02, -1.139e-02, 4.906e-02, 7.189e-02, -2.352e-02, 5.318e-02, 5.140e-02, 4.704e-02, -4.843e-02, -3.853e-02, -7.482e-02, -8.305e-02), r);\n\tr = MulAdd(s7_8, M4(-1.397e-01, 2.179e-02, 2.338e-02, -1.016e-01, 1.103e-01, -6.863e-02, 1.780e-02, 2.561e-02, 1.304e-01, -1.720e-02, 2.107e-02, 4.751e-03, 4.767e-02, -1.159e-01, -1.885e-01, 1.317e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.173e-02, 1.947e-02, 2.270e-02, 7.192e-02 };\n\tr = MulAdd(s0_0, M4(-5.885e-03, -2.546e-02, 2.558e-02, -2.541e-02, 3.475e-02, 1.645e-01, -4.967e-02, 5.703e-02, -8.175e-03, 1.006e-02, -9.734e-03, 1.796e-02, 1.192e-01, -6.662e-02, 1.989e-02, 6.194e-02), r);\n\tr = MulAdd(s0_1, M4(-1.198e-01, 3.162e-02, -3.272e-02, -3.826e-02, -3.700e-01, 1.482e-01, -2.114e-01, -1.351e-01, -8.899e-02, -4.971e-02, 1.209e-01, -8.257e-02, 1.265e-01, -1.939e-02, -6.032e-03, 1.074e-01), r);\n\tr = MulAdd(s0_2, M4(1.562e-02, -8.563e-02, -6.263e-03, -9.005e-02, -1.248e-01, 1.228e-01, -6.548e-03, -2.062e-01, 8.436e-02, 6.663e-02, 9.394e-02, -9.600e-02, -6.184e-02, 4.953e-02, -1.026e-01, 3.131e-02), r);\n\tr = MulAdd(s0_3, M4(-6.295e-02, -4.597e-02, 8.288e-02, 1.139e-01, -2.021e-01, 6.453e-02, 1.036e-02, -1.155e-01, 2.089e-02, -2.989e-02, -3.874e-02, 1.819e-02, -1.555e-02, -1.129e-01, 9.900e-03, -1.252e-01), r);\n\tr = MulAdd(s0_4, M4(9.694e-02, 5.782e-02, 1.188e-02, -9.054e-02, -3.874e-01, 2.309e-01, -1.367e-01, -1.582e-01, -2.347e-01, 6.123e-03, -7.074e-02, -4.260e-02, 8.489e-02, -1.239e-01, 1.993e-02, -3.858e-02), r);\n\tr = MulAdd(s0_5, M4(-4.685e-02, -1.415e-01, -1.177e-01, -4.488e-02, 1.536e-01, 2.300e-01, -7.466e-02, 9.373e-02, 1.940e-02, -6.754e-02, 8.615e-03, 4.944e-02, -5.749e-02, 1.053e-01, 3.029e-02, 7.247e-02), r);\n\tr = MulAdd(s0_6, M4(-9.967e-02, -5.030e-02, 2.466e-03, 1.887e-02, -5.499e-02, 1.128e-03, -2.234e-03, 6.063e-03, 4.992e-02, -3.842e-02, -6.264e-03, 6.056e-04, -2.896e-02, -1.566e-02, -7.347e-02, -3.167e-02), r);\n\tr = MulAdd(s0_7, M4(3.720e-03, -4.195e-02, -2.264e-02, 4.933e-02, 3.558e-02, 3.830e-02, -2.230e-02, 1.220e-02, 5.597e-02, -3.489e-02, -4.640e-02, 3.423e-03, -3.118e-02, -1.338e-02, -1.107e-01, -1.904e-02), r);\n\tr = MulAdd(s0_8, M4(8.768e-02, 9.464e-02, -7.227e-02, -4.277e-03, -7.150e-02, 8.855e-02, -1.373e-02, -2.813e-02, 9.033e-03, 1.266e-02, 2.571e-02, 2.239e-02, 7.557e-02, -2.955e-02, 3.206e-02, -3.293e-02), r);\n\tr = MulAdd(s1_0, M4(1.093e-01, 2.123e-01, 1.520e-01, -1.096e-02, 1.140e-01, -6.139e-04, 1.689e-01, 7.166e-02, 8.511e-02, -8.368e-02, -5.352e-02, -1.224e-01, 3.872e-01, -1.178e-01, 2.918e-01, 2.200e-01), r);\n\tr = MulAdd(s1_1, M4(1.231e-01, 1.746e-01, 4.732e-02, -5.149e-02, 1.214e-01, -1.181e-01, 7.278e-02, 7.755e-02, -5.278e-02, -1.474e-01, 1.502e-02, -3.327e-02, -3.196e-03, 4.036e-01, 7.350e-01, 8.395e-02), r);\n\tr = MulAdd(s1_2, M4(2.968e-02, 9.406e-02, -4.022e-02, -1.459e-01, -7.690e-02, -4.029e-03, -5.914e-02, -5.643e-02, -1.059e-01, -8.707e-03, 2.767e-02, -2.201e-01, -5.068e-02, 1.015e-01, 1.402e-01, 6.987e-03), r);\n\tr = MulAdd(s1_3, M4(1.979e-02, 2.252e-01, -2.014e-01, -2.294e-01, 1.291e-01, -3.770e-02, 4.641e-02, -7.505e-02, 2.448e-01, -2.456e-01, 6.304e-02, -3.550e-02, 9.021e-02, -7.235e-02, 2.433e-01, -3.196e-02), r);\n\tr = MulAdd(s1_4, M4(-1.443e-01, -4.827e-02, 5.127e-02, 1.965e-01, 1.573e-02, -8.680e-02, 9.137e-02, 6.669e-02, 3.524e-01, 3.636e-03, 1.260e-01, 2.576e-01, -1.165e-01, -3.268e-02, 2.371e-01, 1.671e-01), r);\n\tr = MulAdd(s1_5, M4(1.851e-01, 3.140e-01, -3.121e-01, 2.096e-01, -1.471e-01, -6.644e-03, -7.641e-02, -4.940e-03, -1.964e-02, 4.312e-02, 1.531e-01, 5.525e-02, -7.958e-02, -4.680e-04, -3.540e-02, -1.654e-01), r);\n\tr = MulAdd(s1_6, M4(1.756e-01, 8.053e-02, 8.184e-02, 1.962e-01, 6.900e-02, 2.487e-03, 2.113e-02, -4.635e-02, -1.309e-01, -1.730e-01, -1.307e-01, -1.163e-01, 1.018e-01, 3.996e-02, 9.020e-02, 6.544e-02), r);\n\tr = MulAdd(s1_7, M4(-7.530e-02, 2.220e-01, 1.192e-01, -6.576e-02, 3.215e-02, -2.875e-02, 3.263e-02, 8.846e-03, 4.031e-02, -1.396e-01, -1.058e-01, -3.059e-02, -2.242e-01, 1.991e-01, -1.833e-02, -1.613e-02), r);\n\tr = MulAdd(s1_8, M4(-2.439e-01, 9.792e-02, 6.240e-02, -9.079e-02, 2.016e-02, -3.977e-02, -5.885e-02, 2.288e-02, 2.199e-01, -9.182e-02, 4.601e-02, -3.255e-02, 1.085e-01, -1.052e-01, 3.403e-02, -8.799e-02), r);\n\tr = MulAdd(s2_0, M4(-8.172e-02, -5.813e-02, -1.148e-01, -5.606e-02, 1.254e-01, -1.118e-02, 8.617e-02, 3.101e-02, -6.399e-02, 2.935e-02, -3.022e-02, -9.815e-02, 1.263e-01, 8.716e-02, 1.488e-03, 2.892e-02), r);\n\tr = MulAdd(s2_1, M4(-2.403e-01, -6.756e-02, 3.861e-02, -1.272e-01, 1.012e-01, -9.013e-03, -3.556e-02, 4.456e-02, 3.567e-02, 8.643e-02, -6.859e-04, 7.789e-02, -9.175e-02, 8.167e-02, 9.014e-03, -3.291e-03), r);\n\tr = MulAdd(s2_2, M4(-2.589e-02, -8.047e-02, 1.765e-02, -5.666e-02, 2.589e-02, -6.236e-02, 5.595e-02, 1.409e-01, -9.791e-02, -3.648e-02, 9.036e-03, -3.095e-02, -7.711e-02, -9.589e-02, 7.740e-02, -3.167e-02), r);\n\tr = MulAdd(s2_3, M4(-4.075e-01, -2.607e-01, -1.351e-01, 8.469e-02, -4.617e-02, -6.523e-02, -6.272e-03, 1.454e-01, 7.918e-02, 4.549e-02, -1.289e-01, 4.559e-04, -1.578e-01, -3.195e-02, -1.310e-01, -1.988e-01), r);\n\tr = MulAdd(s2_4, M4(-1.001e-01, 1.142e-01, -2.295e-01, -1.917e-01, 2.870e-01, -2.153e-01, 1.699e-01, 8.478e-02, 7.359e-02, -2.038e-01, 1.080e-01, 9.298e-02, 1.395e-03, -6.084e-02, 8.516e-03, 5.921e-02), r);\n\tr = MulAdd(s2_5, M4(4.890e-02, -1.980e-01, 5.298e-02, -7.964e-02, -6.946e-02, -2.022e-01, -1.893e-03, -8.310e-02, -5.277e-02, -9.537e-03, 5.377e-02, 6.629e-02, 1.544e-02, 3.057e-03, -7.162e-02, -1.441e-01), r);\n\tr = MulAdd(s2_6, M4(7.994e-02, -2.992e-02, -1.136e-01, 2.080e-03, -5.637e-02, 3.382e-02, 8.393e-03, -1.294e-02, 2.123e-02, 6.833e-03, 3.525e-02, 3.002e-02, 7.027e-02, 7.827e-02, 1.082e-01, 1.245e-02), r);\n\tr = MulAdd(s2_7, M4(-2.703e-01, -1.811e-01, 1.082e-01, -1.525e-02, 1.525e-01, 9.581e-02, -4.152e-02, -1.611e-02, -1.248e-01, -1.078e-02, 1.731e-02, -4.998e-02, -1.774e-01, 5.634e-02, -1.451e-01, 6.042e-02), r);\n\tr = MulAdd(s2_8, M4(7.234e-02, -7.818e-02, 4.948e-04, 4.252e-02, 1.517e-01, -6.549e-02, -9.122e-02, -1.192e-02, 4.772e-02, 4.773e-02, -2.814e-02, -4.270e-02, 2.777e-02, 7.317e-02, -1.038e-01, 2.099e-03), r);\n\tr = MulAdd(s3_0, M4(-1.160e-03, -4.776e-02, 1.320e-01, -5.099e-02, -7.016e-02, -3.634e-02, 5.819e-03, -3.680e-02, 2.560e-02, 9.705e-03, -1.349e-01, 4.162e-02, 2.998e-01, 6.999e-02, -9.148e-02, 1.306e-01), r);\n\tr = MulAdd(s3_1, M4(8.671e-02, -2.513e-04, 2.481e-01, -3.360e-02, 1.810e-02, 1.426e-02, -1.753e-01, -7.422e-02, -4.182e-04, 2.963e-02, -4.225e-02, 7.439e-02, -5.775e-02, 1.039e-01, -8.999e-02, 1.931e-01), r);\n\tr = MulAdd(s3_2, M4(1.279e-01, 4.706e-02, 1.274e-01, 5.953e-02, -4.903e-02, -4.301e-02, -6.777e-02, 1.582e-02, -3.740e-02, -1.648e-03, -9.810e-05, 1.001e-01, 1.818e-01, -9.297e-02, 3.020e-04, -5.370e-02), r);\n\tr = MulAdd(s3_3, M4(-9.060e-02, 1.185e-02, -1.783e-01, -4.235e-02, -1.380e-01, -2.946e-03, 1.148e-01, 1.939e-02, 1.450e-01, 2.229e-02, -2.045e-01, 3.980e-02, 2.243e-01, -7.762e-02, -9.742e-04, -8.569e-02), r);\n\tr = MulAdd(s3_4, M4(-2.442e-02, 2.062e-01, -1.265e-01, 4.012e-02, 2.739e-01, 4.146e-03, 1.713e-01, 3.659e-02, 1.138e-01, -1.864e-01, -4.026e-02, 1.728e-01, -7.976e-02, 6.411e-02, 2.068e-02, 2.147e-01), r);\n\tr = MulAdd(s3_5, M4(-1.294e-01, 2.487e-02, 1.467e-01, 8.779e-02, -1.647e-01, 4.106e-02, 3.740e-02, 1.564e-02, -1.010e-03, 2.372e-02, 3.233e-02, 1.864e-01, -1.230e-01, -7.062e-02, 4.219e-02, -1.362e-01), r);\n\tr = MulAdd(s3_6, M4(1.222e-01, -5.516e-02, -8.402e-02, 1.478e-02, -4.594e-02, 2.981e-02, -3.904e-02, -8.650e-02, -1.487e-03, 1.269e-03, 4.843e-02, 2.894e-02, 5.032e-02, 6.047e-02, -1.473e-03, 3.292e-02), r);\n\tr = MulAdd(s3_7, M4(9.554e-02, 2.187e-02, -1.455e-01, -8.992e-02, 1.309e-03, -3.460e-02, 1.417e-01, -3.960e-02, -1.057e-01, -3.014e-02, 1.360e-01, -6.093e-02, 2.066e-01, 2.765e-01, -1.451e-02, 2.153e-01), r);\n\tr = MulAdd(s3_8, M4(6.974e-02, -8.067e-03, -1.227e-02, 2.595e-02, -8.348e-03, -6.840e-02, -1.754e-02, 3.177e-02, -3.672e-02, -3.918e-03, 9.301e-04, 6.000e-02, 4.009e-02, 1.286e-01, 1.005e-01, 4.752e-02), r);\n\tr = MulAdd(s4_0, M4(-6.639e-03, 1.205e-02, -9.161e-02, 6.168e-02, 1.450e-01, -8.361e-02, 2.304e-01, 8.059e-02, -3.226e-03, -8.089e-02, 1.486e-01, 3.589e-02, 1.554e-04, -2.149e-02, -1.098e-01, 6.157e-03), r);\n\tr = MulAdd(s4_1, M4(-7.550e-02, 2.784e-02, -1.346e-01, 3.855e-02, 1.488e-01, -8.323e-02, 1.272e-03, -1.955e-02, 7.526e-02, -4.654e-02, 1.138e-01, -2.886e-02, 1.533e-01, -5.429e-02, 1.491e-01, 1.911e-02), r);\n\tr = MulAdd(s4_2, M4(2.749e-02, 2.167e-03, -2.995e-02, 1.297e-01, -3.067e-02, -1.002e-01, -1.171e-01, 5.089e-02, 7.106e-02, 2.617e-02, 7.060e-02, -1.464e-02, 1.128e-01, 1.469e-01, 1.755e-01, -1.565e-02), r);\n\tr = MulAdd(s4_3, M4(-3.147e-02, -2.933e-02, 1.108e-01, -5.021e-03, 5.973e-02, -1.508e-01, 1.813e-01, 9.161e-02, -5.187e-02, 8.315e-02, -6.392e-02, 8.132e-02, -1.111e-01, 4.777e-02, 8.955e-02, -9.181e-02), r);\n\tr = MulAdd(s4_4, M4(7.240e-02, 5.859e-02, -9.687e-03, 9.683e-02, -2.997e-01, 5.311e-02, -7.869e-02, 1.245e-01, 4.405e-01, 2.145e-04, 1.532e-02, -1.421e-01, 1.712e-02, -3.623e-02, 2.816e-01, -9.044e-02), r);\n\tr = MulAdd(s4_5, M4(-1.773e-01, 8.718e-02, 1.580e-01, -6.844e-02, 1.122e-01, -3.360e-04, -5.619e-02, -8.491e-02, -1.605e-01, 1.087e-01, -6.330e-03, -5.711e-02, -1.025e-01, -2.467e-03, 6.342e-02, -3.439e-02), r);\n\tr = MulAdd(s4_6, M4(2.071e-02, -5.719e-02, 4.813e-03, 4.429e-02, 9.461e-02, -2.034e-02, 1.234e-01, 1.544e-02, -4.892e-02, 2.310e-02, 6.791e-02, 4.307e-02, -2.855e-02, -4.628e-04, 1.339e-02, -5.448e-02), r);\n\tr = MulAdd(s4_7, M4(3.531e-02, 7.981e-02, -2.148e-01, 2.049e-02, -1.053e-02, -3.160e-02, 1.023e-01, 2.071e-02, -8.098e-02, 9.493e-02, -5.892e-02, -1.295e-02, 1.871e-01, -4.189e-02, 9.112e-02, 8.300e-02), r);\n\tr = MulAdd(s4_8, M4(-1.699e-02, -3.385e-02, -3.076e-02, -2.967e-02, 1.298e-02, -1.494e-02, 7.397e-03, 4.782e-02, 1.178e-01, 5.643e-02, 2.861e-02, -9.439e-03, -8.228e-02, 1.107e-01, -4.137e-03, -3.320e-02), r);\n\tr = MulAdd(s5_0, M4(1.071e-01, 8.736e-02, -5.126e-02, -3.961e-02, 1.843e-01, -2.182e-01, 1.343e-01, 1.082e-01, -6.434e-02, -9.993e-02, -4.548e-02, -3.949e-02, 3.089e-02, -4.468e-02, -5.958e-03, -1.703e-02), r);\n\tr = MulAdd(s5_1, M4(5.276e-02, 2.210e-01, -1.552e-01, 1.921e-01, 2.015e-01, -9.600e-02, 4.278e-02, -1.323e-01, -6.578e-03, -1.043e-01, 5.091e-02, 4.558e-02, 4.814e-02, -2.042e-01, 1.910e-01, 3.570e-02), r);\n\tr = MulAdd(s5_2, M4(-7.656e-02, 1.000e-01, 6.224e-02, -2.822e-02, -6.178e-02, -1.274e-01, -8.665e-02, -3.369e-02, -7.111e-02, 3.011e-02, 3.098e-02, 1.618e-02, 7.771e-02, -2.006e-03, 1.463e-01, -4.340e-02), r);\n\tr = MulAdd(s5_3, M4(1.671e-02, -2.406e-02, 3.675e-02, -6.527e-02, 1.862e-02, -2.094e-01, 1.246e-01, -3.006e-02, -2.290e-02, 2.513e-02, -5.528e-02, -3.249e-02, 1.135e-01, -1.494e-01, -7.521e-02, -3.806e-02), r);\n\tr = MulAdd(s5_4, M4(2.826e-01, 1.471e-01, 2.434e-01, 6.211e-01, -1.110e-01, 5.876e-02, 2.357e-02, 1.291e-01, 1.158e-01, -6.958e-02, -4.165e-02, -1.199e-02, -1.858e-01, -2.900e-01, 2.511e-03, 2.313e-02), r);\n\tr = MulAdd(s5_5, M4(2.556e-02, 3.107e-01, 6.381e-02, 1.181e-01, 1.081e-01, -1.219e-02, -2.541e-02, -7.888e-02, -1.273e-01, -9.006e-02, -1.173e-02, -1.212e-02, -8.626e-03, 1.553e-02, 4.044e-02, -5.263e-02), r);\n\tr = MulAdd(s5_6, M4(7.118e-02, 1.130e-01, 9.119e-02, 8.911e-03, 1.276e-01, -6.608e-02, 5.927e-02, -4.754e-02, -1.168e-01, -1.445e-03, -4.022e-02, -3.406e-02, -3.202e-02, -1.565e-01, -1.082e-01, -6.669e-02), r);\n\tr = MulAdd(s5_7, M4(-1.636e-01, -4.448e-02, 2.813e-02, 1.441e-01, -1.376e-02, 2.730e-02, 8.901e-04, -2.648e-02, -1.212e-01, 8.716e-02, 3.431e-02, -7.011e-02, 6.266e-02, -6.659e-03, -5.885e-02, 1.105e-02), r);\n\tr = MulAdd(s5_8, M4(-1.766e-02, 1.021e-02, 3.733e-02, 7.508e-02, 2.418e-02, 2.041e-02, -1.344e-02, -1.642e-02, 6.738e-02, 1.122e-02, 4.157e-02, -2.922e-02, -1.743e-02, 9.020e-02, 1.103e-01, -7.592e-02), r);\n\tr = MulAdd(s6_0, M4(1.134e-01, -3.963e-02, 1.128e-01, 3.215e-02, 3.800e-02, 3.478e-02, -9.269e-02, 8.044e-02, -2.934e-01, 1.042e-02, -1.862e-01, -9.349e-02, 7.495e-02, 6.232e-02, 1.725e-01, 1.731e-02), r);\n\tr = MulAdd(s6_1, M4(1.909e-02, 4.707e-02, -1.050e-01, 2.469e-02, -3.667e-02, 1.034e-01, -5.543e-02, -5.119e-02, -2.366e-01, -1.433e-01, -1.732e-01, -2.134e-01, 5.333e-02, -6.928e-02, 7.900e-02, 8.672e-02), r);\n\tr = MulAdd(s6_2, M4(-7.238e-02, 1.367e-02, -1.049e-01, 1.265e-01, -3.939e-03, 2.224e-02, -8.017e-04, -2.103e-02, -1.096e-01, -1.776e-03, 1.391e-01, 1.414e-01, 1.216e-01, 9.376e-02, 5.524e-02, 6.758e-02), r);\n\tr = MulAdd(s6_3, M4(-1.067e-01, 1.998e-02, -2.571e-02, -5.100e-03, -1.376e-01, -5.383e-02, -1.193e-01, -7.877e-02, -2.767e-04, 2.886e-02, 2.653e-02, 1.714e-01, -1.229e-02, -7.802e-02, 3.130e-02, -2.958e-02), r);\n\tr = MulAdd(s6_4, M4(-7.202e-02, -6.781e-02, 7.058e-02, 1.504e-02, 1.208e-01, 9.888e-02, -4.686e-03, -1.753e-02, 1.937e-01, 7.496e-02, -1.258e-01, 1.294e-01, -1.517e-02, -1.711e-03, 2.826e-01, 2.925e-01), r);\n\tr = MulAdd(s6_5, M4(7.727e-02, -1.526e-01, 2.852e-01, 2.777e-01, -8.854e-02, 6.094e-02, -5.698e-03, -1.644e-01, -7.879e-02, 1.572e-02, 3.822e-02, 9.991e-02, -1.252e-01, 1.024e-01, 2.398e-01, 2.683e-01), r);\n\tr = MulAdd(s6_6, M4(-2.504e-03, -7.172e-02, -1.091e-01, 1.194e-02, 7.060e-02, -4.136e-03, 2.395e-03, 5.092e-02, -2.992e-02, -2.311e-03, -4.920e-02, -1.680e-01, 4.731e-02, 3.985e-02, 1.189e-01, 8.127e-02), r);\n\tr = MulAdd(s6_7, M4(7.482e-02, -5.409e-02, -7.627e-02, -3.000e-02, 4.041e-02, 9.987e-02, -1.435e-02, 1.451e-01, -2.708e-02, -7.973e-02, 1.030e-01, 8.814e-02, 3.109e-03, -7.251e-02, 1.606e-01, 3.079e-02), r);\n\tr = MulAdd(s6_8, M4(-7.090e-02, -1.135e-01, 8.462e-02, -6.155e-02, -3.090e-02, 5.601e-02, 3.941e-02, 4.744e-03, 2.282e-02, 4.505e-02, 1.192e-02, 6.843e-02, 1.088e-01, -1.489e-01, 1.263e-01, 5.793e-02), r);\n\tr = MulAdd(s7_0, M4(2.178e-02, 1.912e-02, 4.309e-02, 1.703e-02, 3.737e-02, -7.983e-03, 2.782e-02, 1.850e-02, 1.452e-01, -1.497e-01, 4.961e-02, 5.188e-02, 1.984e-02, -2.894e-02, 1.030e-01, -3.062e-04), r);\n\tr = MulAdd(s7_1, M4(-2.136e-01, -4.810e-02, -9.977e-02, 1.103e-01, -3.734e-02, -1.038e-01, -3.264e-02, 1.932e-02, 3.639e-01, -6.706e-02, 4.201e-01, 1.576e-02, -4.993e-02, -1.537e-02, -5.964e-02, 4.097e-02), r);\n\tr = MulAdd(s7_2, M4(2.272e-02, -2.516e-02, -1.510e-02, 5.791e-02, -7.611e-02, -2.916e-02, 1.016e-01, 1.075e-01, 1.209e-02, 7.300e-02, 6.268e-02, 9.154e-02, 8.169e-02, -7.432e-02, -2.736e-02, -2.039e-03), r);\n\tr = MulAdd(s7_3, M4(-5.458e-02, -3.447e-02, -3.795e-03, -5.079e-02, -6.263e-02, -1.703e-01, 2.396e-02, -2.922e-02, 2.510e-01, 2.071e-02, -6.895e-02, 8.368e-02, -1.364e-01, 4.028e-02, -7.619e-02, -6.385e-02), r);\n\tr = MulAdd(s7_4, M4(-1.184e-01, -7.357e-02, 2.109e-01, 9.892e-02, 1.238e-01, 3.710e-03, -6.457e-02, -9.826e-02, -3.336e-01, 2.071e-02, -2.630e-02, -4.478e-02, 6.411e-02, 4.174e-03, 9.080e-02, 4.497e-02), r);\n\tr = MulAdd(s7_5, M4(1.538e-01, 7.003e-02, 6.026e-02, 3.331e-02, -1.284e-01, -8.834e-02, 1.376e-01, 8.211e-02, -1.947e-01, -1.464e-01, 3.603e-02, -8.266e-02, -1.739e-02, -6.261e-02, -1.003e-01, 4.533e-02), r);\n\tr = MulAdd(s7_6, M4(-1.178e-01, -5.722e-02, 2.677e-02, -4.211e-03, -1.071e-01, -8.749e-02, 1.005e-01, 7.650e-02, -1.112e-01, 6.735e-02, -8.316e-02, -9.940e-02, 1.052e-01, -9.073e-02, -3.761e-02, 4.248e-02), r);\n\tr = MulAdd(s7_7, M4(5.572e-02, -3.820e-02, -1.385e-01, 3.057e-02, 5.144e-02, -1.668e-02, 1.240e-01, 1.815e-01, -5.345e-02, 1.495e-01, -8.913e-02, 9.643e-02, -2.567e-03, -6.845e-02, 1.134e-01, 8.737e-02), r);\n\tr = MulAdd(s7_8, M4(-8.663e-04, -8.466e-04, 6.296e-02, 7.255e-02, 9.676e-02, -7.858e-02, 1.671e-01, 8.251e-02, 2.800e-01, 1.228e-01, -1.019e-01, -5.512e-02, -4.996e-02, 5.146e-02, -9.201e-02, -2.324e-02), r);\n\treturn r;\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 7\n//!DESC conv6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.325e-03, -1.910e-04, -2.453e-02, -3.947e-02 };\n\tr = MulAdd(s0_0, M4(-4.959e-02, 2.300e-02, 6.317e-03, 1.703e-02, -2.688e-03, 1.642e-02, -2.200e-02, -2.420e-02, 2.363e-02, -1.022e-01, 6.023e-02, -2.609e-02, 9.291e-02, -1.160e-01, 2.052e-02, 2.354e-01), r);\n\tr = MulAdd(s0_1, M4(-1.879e-02, -1.916e-02, -8.637e-03, 4.526e-02, 6.088e-02, -2.138e-03, -4.232e-02, -4.008e-02, -4.421e-02, 2.282e-01, 3.115e-02, -1.581e-02, -6.951e-03, -2.424e-02, 1.346e-01, -3.285e-02), r);\n\tr = MulAdd(s0_2, M4(-4.787e-02, -1.360e-01, 5.257e-02, -4.066e-02, 2.153e-02, 2.471e-02, 3.004e-02, -7.448e-02, -1.941e-02, 1.677e-01, -1.904e-01, -2.967e-02, -7.226e-03, 8.123e-03, 1.559e-01, -1.188e-02), r);\n\tr = MulAdd(s0_3, M4(-3.923e-02, -4.992e-02, 6.446e-02, 7.936e-02, -3.738e-02, -1.250e-02, 5.185e-02, 2.579e-02, 5.660e-02, -1.233e-01, 5.719e-02, 1.460e-02, 2.067e-01, -4.069e-02, 3.571e-02, 1.317e-01), r);\n\tr = MulAdd(s0_4, M4(2.346e-02, -2.846e-01, -2.588e-02, 5.688e-02, -5.397e-03, -1.564e-02, -6.028e-02, 7.542e-02, -1.610e-01, 6.204e-02, 5.513e-02, 1.456e-02, -2.901e-01, 9.572e-02, 2.208e-02, -1.044e-01), r);\n\tr = MulAdd(s0_5, M4(-9.583e-02, -2.630e-02, 4.636e-02, -1.747e-02, 5.710e-02, -3.728e-02, -9.599e-02, 2.775e-02, 9.363e-02, -1.286e-02, -6.437e-02, 8.923e-03, 5.191e-02, 2.725e-02, 5.111e-02, 5.944e-02), r);\n\tr = MulAdd(s0_6, M4(3.916e-02, 1.242e-04, -2.263e-02, 1.843e-02, -2.212e-02, 1.383e-02, 4.635e-02, -8.325e-03, 8.122e-02, -1.123e-01, 1.783e-02, -7.211e-03, 5.749e-03, -1.679e-03, -5.085e-02, 6.039e-03), r);\n\tr = MulAdd(s0_7, M4(-4.237e-02, 2.693e-02, 7.501e-03, -5.510e-02, 1.524e-02, -4.218e-02, -1.076e-02, -3.760e-02, 1.048e-01, -5.222e-02, 1.925e-02, -1.094e-02, 7.092e-03, -3.861e-02, 5.624e-02, 1.161e-02), r);\n\tr = MulAdd(s0_8, M4(4.406e-03, 6.380e-02, 1.261e-02, -2.852e-02, 1.263e-02, -1.119e-02, -5.527e-02, -2.118e-02, 1.659e-02, 1.159e-01, -5.585e-02, -2.343e-02, 1.292e-02, -4.138e-02, 1.541e-02, 6.174e-02), r);\n\tr = MulAdd(s1_0, M4(-1.596e-02, 1.235e-01, -1.475e-02, -1.215e-01, 4.439e-02, 2.252e-02, -1.036e-04, 2.227e-01, 2.471e-02, 1.859e-02, -1.305e-02, 2.673e-02, 1.234e-02, -7.778e-02, -6.012e-02, -3.814e-02), r);\n\tr = MulAdd(s1_1, M4(-1.121e-01, 1.950e-01, 1.715e-01, 1.439e-02, 6.037e-02, -3.254e-01, -7.611e-02, -1.765e-01, 3.997e-02, 6.524e-02, 9.926e-02, 4.034e-02, -3.307e-02, -8.003e-02, -1.239e-02, 2.386e-02), r);\n\tr = MulAdd(s1_2, M4(-6.216e-02, 1.513e-01, 1.518e-02, 1.468e-02, -5.238e-02, -1.184e-02, 9.673e-02, 8.954e-02, -3.878e-02, -3.462e-02, 1.696e-03, 4.314e-02, 3.306e-02, -2.129e-02, 3.722e-02, 9.545e-03), r);\n\tr = MulAdd(s1_3, M4(-4.358e-02, 1.169e-01, -6.705e-02, 7.877e-02, 6.420e-02, 1.647e-02, -1.408e-01, -1.886e-02, -1.090e-02, -7.420e-02, 1.611e-02, -2.608e-02, 1.181e-02, 1.139e-02, -3.279e-02, -1.538e-01), r);\n\tr = MulAdd(s1_4, M4(-7.269e-02, -9.624e-02, 2.104e-01, -3.678e-02, -8.138e-02, -7.530e-02, 1.403e-01, 1.101e-01, -2.562e-01, 1.725e-01, -2.215e-01, -1.774e-02, -9.527e-02, 2.512e-02, -1.014e-01, -6.340e-02), r);\n\tr = MulAdd(s1_5, M4(9.204e-02, 1.466e-01, -8.662e-03, -7.309e-02, 1.940e-01, 1.822e-03, -1.982e-01, -4.872e-02, -9.534e-02, -3.194e-03, -2.147e-01, -5.603e-02, 4.305e-02, 4.031e-02, -1.879e-01, 1.564e-02), r);\n\tr = MulAdd(s1_6, M4(-4.283e-02, 4.618e-02, -8.197e-02, -6.512e-02, -7.169e-02, -6.047e-02, 2.293e-02, 3.459e-02, -5.382e-02, -5.021e-02, 7.904e-02, -3.021e-02, 2.588e-03, -6.667e-02, 5.148e-02, 5.692e-02), r);\n\tr = MulAdd(s1_7, M4(-8.603e-02, 1.255e-01, 2.339e-01, -3.309e-02, -5.634e-02, -1.763e-01, 9.410e-02, 1.203e-01, -3.287e-02, -4.261e-02, 1.248e-01, 7.539e-02, -5.734e-03, -3.458e-02, 8.259e-02, 8.584e-04), r);\n\tr = MulAdd(s1_8, M4(9.075e-02, -4.847e-02, -4.681e-02, 1.470e-01, -1.874e-02, -1.161e-01, -1.934e-01, 3.652e-02, 4.413e-02, 4.896e-02, -1.374e-01, -6.084e-02, 8.472e-02, 6.868e-03, -5.092e-02, 2.943e-02), r);\n\tr = MulAdd(s2_0, M4(-7.578e-02, 3.864e-02, 3.828e-02, 1.041e-01, -2.067e-02, -1.882e-02, 2.747e-03, 1.201e-02, 1.090e-02, 7.076e-04, 4.765e-03, -3.586e-02, 5.400e-02, -2.777e-02, 1.078e-02, 1.827e-02), r);\n\tr = MulAdd(s2_1, M4(5.610e-02, -6.995e-03, 4.990e-03, 9.165e-02, -1.922e-02, 7.537e-02, 1.615e-02, -1.001e-01, -3.874e-02, -6.028e-03, 1.239e-01, 4.476e-02, -5.677e-02, 2.028e-01, 8.904e-02, -6.016e-02), r);\n\tr = MulAdd(s2_2, M4(-3.735e-02, -1.418e-01, -7.564e-02, -2.437e-02, -1.181e-02, -3.410e-02, 7.301e-02, 8.895e-03, -3.613e-02, -3.974e-02, -3.959e-02, 1.515e-02, -1.539e-03, -2.772e-03, -3.304e-02, -3.478e-02), r);\n\tr = MulAdd(s2_3, M4(-1.914e-02, -9.525e-02, 8.687e-02, 2.162e-02, -3.970e-02, -4.097e-02, -2.761e-02, -8.150e-02, 1.069e-02, 1.161e-02, 4.322e-02, 3.107e-02, -6.213e-02, 5.408e-04, -2.306e-03, -2.409e-02), r);\n\tr = MulAdd(s2_4, M4(1.511e-01, 1.203e-01, -2.227e-01, -9.491e-02, -1.130e-01, 1.699e-01, -5.111e-02, 8.725e-02, 5.434e-02, -1.741e-01, 1.328e-02, 1.151e-01, 2.696e-02, 1.803e-01, 2.174e-02, 1.227e-01), r);\n\tr = MulAdd(s2_5, M4(-1.622e-02, 2.244e-01, 2.659e-02, -2.045e-02, -5.316e-02, 2.989e-02, -3.311e-02, -1.226e-01, -3.029e-03, 6.464e-03, -1.315e-02, 2.236e-02, -6.947e-02, -5.856e-02, -7.343e-02, -1.114e-02), r);\n\tr = MulAdd(s2_6, M4(-4.299e-02, 4.939e-03, 1.489e-01, 2.805e-02, 3.084e-02, 1.229e-02, -3.138e-02, 2.415e-02, 2.300e-02, -5.926e-02, 3.672e-02, -9.303e-02, -2.705e-02, -7.170e-02, 8.702e-02, 5.325e-02), r);\n\tr = MulAdd(s2_7, M4(-1.679e-02, -1.060e-01, -6.970e-02, 6.048e-02, -1.964e-02, 2.604e-02, 1.357e-01, 2.298e-02, -1.148e-01, 5.353e-02, -8.100e-02, 2.667e-02, 1.939e-02, -3.578e-02, -1.812e-02, 3.766e-02), r);\n\tr = MulAdd(s2_8, M4(-3.038e-04, -5.991e-03, -3.775e-02, -3.493e-02, 2.390e-02, -7.596e-02, 2.851e-02, 6.164e-02, 1.460e-02, -1.681e-03, 4.620e-02, -1.403e-02, 2.086e-02, 2.709e-02, -1.620e-02, 3.560e-02), r);\n\tr = MulAdd(s3_0, M4(1.141e-04, 2.863e-02, 7.410e-02, 6.073e-02, -1.141e-01, 6.118e-02, -3.687e-03, 6.243e-02, -4.684e-03, 8.379e-02, 2.439e-02, -9.396e-02, 4.764e-04, -1.569e-02, 8.856e-02, 7.804e-03), r);\n\tr = MulAdd(s3_1, M4(-2.494e-02, -2.837e-01, 5.573e-02, 1.198e-02, -4.818e-02, 2.223e-02, -9.465e-02, 5.685e-02, -2.476e-02, 2.298e-01, -5.739e-02, 1.791e-01, -4.102e-02, 9.728e-02, -5.806e-02, -3.767e-02), r);\n\tr = MulAdd(s3_2, M4(9.027e-02, 2.405e-03, 1.261e-01, -1.430e-02, 6.552e-03, -5.556e-02, 1.538e-02, 1.255e-02, -5.140e-02, 1.569e-01, -1.936e-01, 1.306e-02, 4.347e-02, -1.850e-02, -1.557e-03, -1.791e-02), r);\n\tr = MulAdd(s3_3, M4(9.246e-02, -1.177e-01, -7.298e-02, -1.532e-02, -1.054e-01, -5.527e-02, 5.620e-03, -8.630e-02, -1.256e-01, -7.708e-02, 6.246e-02, 2.278e-02, -1.151e-01, -2.338e-02, 4.332e-02, 4.785e-02), r);\n\tr = MulAdd(s3_4, M4(5.673e-02, 6.712e-02, -1.401e-02, -1.203e-03, 3.747e-02, 4.443e-03, -4.435e-02, 5.732e-02, -1.563e-03, -7.244e-03, -1.148e-01, -1.453e-01, 1.674e-01, -9.521e-02, -3.138e-02, 1.018e-01), r);\n\tr = MulAdd(s3_5, M4(-5.533e-02, 1.502e-01, 1.289e-01, -4.958e-02, -6.971e-02, -1.172e-01, 1.874e-01, 6.877e-03, 1.016e-02, 1.560e-01, -1.155e-01, 6.263e-03, -1.972e-02, 5.096e-03, 1.872e-01, -1.115e-01), r);\n\tr = MulAdd(s3_6, M4(-2.659e-02, -4.438e-02, 3.411e-02, -4.316e-02, 2.489e-02, -5.362e-02, 6.324e-03, 2.250e-02, 6.458e-02, -1.310e-01, 1.392e-01, 5.710e-02, -2.336e-02, 3.723e-02, 2.933e-02, -9.192e-03), r);\n\tr = MulAdd(s3_7, M4(-3.195e-02, 1.089e-02, 3.270e-02, 7.136e-02, 6.604e-03, -6.304e-02, 4.783e-02, 5.569e-02, -9.362e-02, -4.429e-02, -6.615e-02, 8.673e-02, 1.845e-01, -7.756e-03, -1.776e-01, -1.473e-02), r);\n\tr = MulAdd(s3_8, M4(-1.581e-02, -5.631e-02, 1.651e-02, 3.415e-02, -7.547e-02, 5.109e-02, 2.791e-02, 8.264e-03, -2.090e-02, -1.188e-01, 5.602e-02, 8.052e-02, -2.345e-02, 6.393e-02, -1.052e-02, 5.089e-02), r);\n\tr = MulAdd(s4_0, M4(2.126e-02, 6.163e-02, 5.698e-02, -4.189e-02, -1.033e-02, -8.728e-02, -5.533e-02, -3.495e-03, 9.104e-02, -4.146e-02, -3.394e-02, -3.003e-02, 9.144e-02, -2.309e-01, 1.130e-01, -1.458e-02), r);\n\tr = MulAdd(s4_1, M4(1.959e-02, 1.240e-01, -2.060e-01, -8.081e-02, 7.705e-03, -2.860e-02, 6.000e-02, -5.123e-02, -3.581e-02, 1.002e-01, 8.903e-02, -5.170e-02, -2.747e-02, 9.524e-03, -5.792e-02, -6.941e-01), r);\n\tr = MulAdd(s4_2, M4(4.583e-02, -6.945e-02, 8.239e-02, -9.996e-03, 9.288e-03, -2.209e-02, 3.012e-02, -2.720e-02, -6.338e-02, -1.081e-01, -1.522e-01, 1.295e-02, -4.195e-02, -1.774e-02, 9.414e-02, -1.140e-01), r);\n\tr = MulAdd(s4_3, M4(-1.832e-02, 1.066e-01, 1.446e-01, 8.115e-02, -3.907e-02, -9.588e-03, 4.508e-02, -2.114e-02, 7.214e-03, 5.881e-02, -9.425e-03, 1.351e-02, -7.886e-03, -1.125e-02, 8.937e-02, -1.805e-01), r);\n\tr = MulAdd(s4_4, M4(-1.545e-01, 3.279e-02, -7.314e-02, 3.145e-02, -2.324e-01, 2.880e-02, -4.514e-02, -7.526e-02, -3.248e-02, 1.011e-01, 1.070e-01, 9.826e-02, -6.378e-01, -1.113e-01, -5.476e-03, -6.405e-01), r);\n\tr = MulAdd(s4_5, M4(4.225e-02, 4.995e-02, -5.151e-02, -6.658e-02, -3.270e-03, 2.154e-02, 4.740e-02, 3.039e-03, -1.839e-02, -1.744e-01, -1.593e-01, 6.823e-02, -1.242e-01, -1.483e-02, -1.341e-01, -2.339e-01), r);\n\tr = MulAdd(s4_6, M4(1.194e-02, -7.981e-02, 6.914e-02, 3.322e-02, 5.713e-02, -4.931e-02, -3.948e-02, -2.579e-03, -4.410e-02, 6.070e-02, 1.195e-03, -3.376e-02, 1.641e-02, -5.587e-02, -4.053e-02, -1.630e-02), r);\n\tr = MulAdd(s4_7, M4(4.789e-02, -4.548e-02, 3.627e-02, 7.645e-02, -4.072e-02, 1.233e-01, 2.409e-02, 2.719e-02, 1.063e-01, 6.620e-03, 5.710e-02, 2.887e-02, -1.481e-02, 1.618e-02, -4.501e-02, -7.504e-02), r);\n\tr = MulAdd(s4_8, M4(3.256e-02, -6.711e-02, -7.155e-02, 1.077e-03, 1.179e-01, 1.927e-02, -7.517e-02, -5.050e-03, -1.652e-02, 2.988e-02, -6.473e-02, -2.233e-02, 1.078e-01, 1.606e-02, 1.051e-01, 1.858e-02), r);\n\tr = MulAdd(s5_0, M4(1.185e-02, -8.303e-02, 7.525e-02, -3.948e-02, -2.980e-02, -5.279e-03, 1.521e-02, -3.329e-02, 3.512e-02, -4.894e-03, 1.869e-03, -9.467e-02, 4.547e-02, -1.113e-01, -4.921e-04, -3.650e-02), r);\n\tr = MulAdd(s5_1, M4(-2.533e-02, -5.457e-02, 6.664e-02, -1.109e-01, 2.634e-03, -3.898e-02, -1.115e-01, -9.777e-02, 4.398e-03, 2.218e-01, -8.076e-02, -8.298e-03, -1.466e-03, 6.349e-02, -9.325e-02, -7.098e-02), r);\n\tr = MulAdd(s5_2, M4(-1.490e-02, -1.382e-01, 6.412e-02, 4.542e-02, 2.084e-02, 3.895e-02, -1.326e-01, -2.134e-02, 5.695e-02, 1.803e-01, -6.086e-02, -8.669e-02, 3.222e-02, -8.005e-02, 6.315e-02, -7.551e-02), r);\n\tr = MulAdd(s5_3, M4(-1.885e-03, 9.724e-02, -8.784e-02, 1.272e-02, -5.185e-02, -1.148e-02, -4.775e-02, 1.111e-02, -3.767e-02, -4.852e-02, 1.005e-01, 3.394e-02, -2.777e-02, 1.755e-02, 2.754e-02, -5.608e-02), r);\n\tr = MulAdd(s5_4, M4(-8.003e-02, -3.442e-02, -1.281e-03, -5.182e-03, -3.213e-01, -1.581e-02, 6.228e-02, -1.903e-01, -1.459e-01, -1.218e-01, 2.070e-01, 4.157e-01, -1.788e-01, 1.294e-01, -6.393e-02, -4.187e-02), r);\n\tr = MulAdd(s5_5, M4(-3.751e-02, 6.109e-02, 4.843e-02, -1.268e-02, -1.034e-01, -6.947e-02, -2.445e-02, -4.195e-02, -1.025e-01, -2.431e-01, -2.601e-01, 1.780e-01, -6.830e-02, -6.775e-02, -2.807e-02, -7.518e-02), r);\n\tr = MulAdd(s5_6, M4(6.528e-03, -7.250e-02, 1.841e-02, 2.886e-02, 1.267e-02, 9.469e-03, -2.174e-01, -1.515e-02, -3.808e-02, 3.925e-02, -5.356e-02, -4.861e-02, 6.533e-03, 1.848e-02, 4.500e-04, -4.908e-02), r);\n\tr = MulAdd(s5_7, M4(-4.713e-02, -4.756e-02, 3.375e-02, 4.234e-02, -2.338e-01, 1.421e-01, 4.348e-02, -1.375e-01, 7.462e-02, 7.048e-02, -7.856e-02, -1.155e-01, 3.095e-02, 4.129e-03, -2.738e-02, -2.082e-02), r);\n\tr = MulAdd(s5_8, M4(1.326e-02, -8.204e-02, -7.037e-02, 5.335e-02, -5.314e-03, 7.717e-02, 2.884e-02, -8.406e-02, 9.963e-03, 1.188e-01, -2.833e-02, 1.061e-02, 1.649e-02, 6.136e-03, 2.692e-02, -6.118e-02), r);\n\tr = MulAdd(s6_0, M4(-1.225e-01, -3.199e-02, -2.469e-02, -3.257e-01, 2.266e-03, 5.483e-02, -2.814e-02, 4.752e-02, 4.902e-02, 8.969e-02, -1.586e-02, 4.620e-02, 4.357e-03, 7.414e-02, -4.872e-02, -4.663e-02), r);\n\tr = MulAdd(s6_1, M4(-4.936e-02, 1.609e-01, -1.327e-01, -1.711e-01, 2.718e-02, 8.757e-03, -4.149e-02, 4.596e-03, -2.391e-02, 1.315e-02, 1.624e-01, 1.233e-01, 1.183e-01, 1.777e-01, -2.123e-02, 4.965e-02), r);\n\tr = MulAdd(s6_2, M4(-1.488e-02, 2.607e-02, -2.137e-01, -9.055e-02, 1.082e-01, -7.058e-03, -8.666e-02, 4.212e-02, -9.235e-03, -9.004e-02, 1.824e-01, 3.037e-02, 3.261e-02, 1.020e-01, -2.231e-02, -1.477e-02), r);\n\tr = MulAdd(s6_3, M4(-1.582e-01, -7.736e-04, 1.119e-01, -2.861e-01, 1.220e-01, -1.340e-01, -6.330e-02, 6.531e-02, 1.245e-01, 5.890e-02, -6.131e-02, 5.569e-02, -1.808e-01, 6.471e-02, 2.407e-02, -9.163e-02), r);\n\tr = MulAdd(s6_4, M4(5.294e-02, 2.264e-02, 9.260e-02, 2.702e-03, 6.289e-02, -1.609e-01, -1.517e-02, -9.012e-02, 9.663e-02, 8.651e-02, -7.378e-02, -2.462e-01, 7.932e-03, 5.327e-02, -6.168e-02, -2.111e-02), r);\n\tr = MulAdd(s6_5, M4(-5.505e-02, 1.211e-01, 2.485e-02, 6.687e-05, 2.232e-02, 4.068e-02, -8.433e-02, -5.399e-02, 1.062e-01, 4.350e-02, 1.213e-01, -1.309e-03, 4.683e-02, 5.696e-02, -2.095e-01, 2.013e-02), r);\n\tr = MulAdd(s6_6, M4(-6.952e-02, 8.277e-02, 6.191e-02, -1.102e-01, 6.552e-02, -1.717e-02, -4.441e-02, 3.744e-02, -1.211e-03, 2.891e-02, 2.197e-02, 3.364e-02, 7.535e-03, -6.770e-03, -6.397e-02, -1.047e-01), r);\n\tr = MulAdd(s6_7, M4(-1.045e-02, 1.324e-01, -6.323e-03, -1.891e-01, -1.024e-01, 8.601e-03, -3.786e-02, -4.529e-02, -1.346e-01, -2.908e-02, -1.530e-03, -5.581e-02, -5.267e-02, 4.319e-02, 6.115e-04, -4.299e-02), r);\n\tr = MulAdd(s6_8, M4(-1.878e-02, 2.048e-01, -4.330e-02, -4.895e-02, -1.007e-02, 1.237e-02, -2.172e-02, -8.858e-03, 1.403e-02, -6.982e-02, 1.142e-01, -2.795e-03, 6.235e-02, 2.970e-02, -8.211e-02, 3.042e-02), r);\n\tr = MulAdd(s7_0, M4(-5.024e-02, -3.928e-02, 8.248e-03, 3.024e-02, 5.021e-02, -2.346e-02, 6.404e-02, 1.671e-01, 4.870e-02, 4.704e-03, -2.799e-02, -2.238e-02, 3.293e-02, -5.885e-02, 8.025e-02, 8.911e-03), r);\n\tr = MulAdd(s7_1, M4(4.734e-02, -5.602e-02, -8.165e-02, 8.589e-02, -6.049e-02, -2.462e-01, 9.227e-03, -2.058e-01, -2.801e-02, 1.579e-01, 3.732e-02, -4.812e-02, 1.353e-01, -3.953e-02, -9.637e-02, 8.001e-02), r);\n\tr = MulAdd(s7_2, M4(-3.973e-03, -1.591e-02, 1.366e-03, 4.087e-02, 5.343e-02, -5.346e-02, -5.055e-02, 2.863e-02, 5.103e-02, 1.944e-02, 6.019e-02, -8.776e-02, 3.405e-02, 2.922e-02, 1.362e-01, -7.645e-03), r);\n\tr = MulAdd(s7_3, M4(-4.861e-04, -4.012e-02, 4.286e-02, -4.906e-03, 1.627e-01, -1.097e-01, -1.243e-01, -6.100e-02, 6.076e-02, -1.064e-02, 2.648e-02, 6.042e-02, -7.793e-02, -1.243e-02, 6.117e-02, -5.637e-02), r);\n\tr = MulAdd(s7_4, M4(2.827e-02, 3.054e-02, 1.967e-02, 1.132e-01, 1.891e-01, -1.120e-01, 6.793e-02, 1.781e-01, -6.503e-02, 3.875e-02, -1.368e-01, -6.066e-02, 8.103e-02, 4.358e-02, -1.609e-01, 3.028e-02), r);\n\tr = MulAdd(s7_5, M4(-2.243e-02, 6.646e-03, 4.602e-02, -8.031e-02, -2.034e-01, 2.752e-02, 8.253e-02, 5.569e-03, 1.200e-01, 1.976e-02, 1.460e-01, 1.773e-01, 5.920e-02, -8.765e-02, -3.917e-02, 2.605e-02), r);\n\tr = MulAdd(s7_6, M4(3.516e-02, -1.987e-02, -3.543e-02, 5.867e-02, -3.802e-02, 5.770e-02, 1.447e-01, 2.270e-02, 1.202e-02, 6.453e-02, -6.165e-03, -1.177e-02, 9.626e-02, -5.555e-02, -9.464e-02, -6.232e-02), r);\n\tr = MulAdd(s7_7, M4(-8.539e-04, -4.631e-02, 5.124e-02, 2.576e-02, -7.279e-02, 1.385e-01, -1.287e-01, -5.966e-02, -9.662e-03, 5.361e-02, -5.509e-03, -2.013e-02, 6.722e-02, -7.907e-02, -6.298e-02, -6.806e-02), r);\n\tr = MulAdd(s7_8, M4(-1.113e-02, -1.198e-02, 6.223e-03, -3.262e-04, 2.197e-02, 1.376e-01, -2.326e-02, -9.016e-02, 2.050e-02, 3.226e-02, 3.427e-02, -4.716e-02, 7.373e-02, 5.725e-02, 5.104e-02, 5.237e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.817e-02, -3.278e-02, 5.487e-03, -3.455e-03 };\n\tr = MulAdd(s0_0, M4(1.452e-02, -2.213e-02, 3.418e-02, -1.868e-03, 5.112e-02, 2.362e-02, 6.041e-02, 2.931e-02, 3.201e-02, -6.846e-02, 1.007e-02, -1.945e-02, -1.491e-01, -1.026e-01, -6.356e-02, 8.083e-03), r);\n\tr = MulAdd(s0_1, M4(-3.302e-02, 1.039e-02, -7.105e-02, 4.512e-02, 1.699e-02, -4.399e-02, -1.129e-01, -3.180e-03, 4.396e-02, -2.110e-02, -2.890e-02, -1.940e-02, 1.083e-01, 1.618e-03, -4.433e-02, 2.564e-02), r);\n\tr = MulAdd(s0_2, M4(-2.591e-02, 4.649e-03, -1.796e-04, -1.397e-04, 3.523e-03, 3.807e-03, -2.256e-02, -2.057e-02, 2.152e-02, -4.283e-02, -4.498e-03, 5.868e-02, 8.216e-02, -1.374e-02, -1.599e-02, 1.185e-01), r);\n\tr = MulAdd(s0_3, M4(-2.138e-02, -2.510e-02, 3.635e-03, 5.926e-02, 1.948e-02, -1.106e-02, 2.721e-02, -6.293e-03, -1.257e-01, 3.189e-02, -2.102e-02, -1.052e-01, -1.488e-01, -2.395e-02, -1.034e-01, 4.175e-02), r);\n\tr = MulAdd(s0_4, M4(3.801e-02, -5.686e-02, -2.110e-02, 8.493e-02, -4.898e-02, -1.377e-01, 2.817e-02, -1.992e-01, 2.107e-01, 2.706e-01, -6.196e-02, -1.218e-01, 1.192e-01, 1.155e-01, -1.004e-01, 1.263e-01), r);\n\tr = MulAdd(s0_5, M4(6.634e-02, -6.558e-02, -5.310e-02, 8.774e-02, -1.082e-01, -1.092e-01, 9.039e-02, 4.413e-02, -1.282e-01, 4.255e-02, 2.607e-02, 3.934e-02, -3.736e-02, -3.743e-02, -7.450e-02, 5.096e-02), r);\n\tr = MulAdd(s0_6, M4(-3.132e-02, 1.058e-01, 5.335e-02, 3.218e-02, -8.362e-03, -1.239e-02, 7.032e-02, -2.217e-02, -9.698e-02, -2.439e-02, -2.590e-02, -1.107e-01, -1.166e-02, 1.432e-03, -2.418e-02, -4.755e-02), r);\n\tr = MulAdd(s0_7, M4(1.094e-02, -5.756e-02, -1.564e-02, -5.575e-02, -5.384e-02, 5.222e-03, -1.447e-02, 3.893e-02, -1.928e-01, 3.496e-02, 2.032e-01, 5.912e-02, 6.310e-02, 1.259e-02, -1.224e-02, 8.429e-02), r);\n\tr = MulAdd(s0_8, M4(-6.143e-02, 8.296e-02, 3.608e-02, -6.786e-03, -8.912e-02, 7.147e-02, 3.735e-03, -1.193e-02, 6.371e-02, -1.715e-03, 6.778e-02, 4.096e-02, -2.178e-03, -2.116e-02, 3.634e-02, 2.353e-02), r);\n\tr = MulAdd(s1_0, M4(3.726e-02, -2.700e-02, 5.479e-02, 2.802e-02, -4.521e-02, 6.023e-02, 1.441e-01, -3.327e-02, 7.922e-03, 9.608e-02, 6.132e-02, 6.058e-02, -1.181e-01, 1.375e-02, 3.535e-02, 1.659e-02), r);\n\tr = MulAdd(s1_1, M4(9.419e-02, 4.554e-02, -1.226e-02, 3.050e-02, 1.130e-01, -5.704e-02, 4.752e-02, -1.253e-01, -5.118e-02, 4.104e-02, -6.749e-02, -5.343e-02, 5.244e-02, 6.944e-02, 1.140e-01, -9.239e-02), r);\n\tr = MulAdd(s1_2, M4(-4.040e-02, 5.244e-02, 2.012e-02, 5.836e-02, 4.047e-02, 3.844e-02, 2.243e-01, -2.281e-02, 6.051e-02, -4.283e-02, 8.320e-02, 4.852e-02, -6.591e-03, 1.960e-02, 1.263e-01, -3.942e-02), r);\n\tr = MulAdd(s1_3, M4(2.830e-02, 8.144e-02, -3.719e-02, -6.285e-02, -8.031e-02, -2.416e-02, -1.323e-01, -4.774e-02, 2.482e-03, 1.067e-01, 8.261e-02, 7.856e-02, -4.436e-02, 6.318e-02, -2.072e-02, 4.913e-03), r);\n\tr = MulAdd(s1_4, M4(1.982e-02, 1.753e-01, -5.781e-02, 3.787e-01, -9.268e-02, -4.545e-01, 2.008e-01, -1.498e-02, 3.232e-02, -4.611e-02, -3.575e-01, -1.095e-01, 1.653e-02, -1.507e-02, -1.033e-03, -9.718e-02), r);\n\tr = MulAdd(s1_5, M4(-2.268e-01, -9.784e-02, -1.059e-01, -3.203e-02, 5.056e-02, 1.258e-01, 4.908e-02, -2.078e-01, 9.348e-02, 1.395e-01, -1.733e-01, 7.156e-02, -1.265e-01, 8.872e-03, -9.426e-02, -9.058e-02), r);\n\tr = MulAdd(s1_6, M4(-4.677e-02, -2.115e-02, -1.070e-02, 7.677e-02, 1.224e-02, -8.576e-02, 9.551e-02, -6.854e-02, 7.423e-02, 2.429e-02, 5.618e-02, -2.685e-02, -9.624e-02, -6.545e-02, 4.498e-02, -3.158e-02), r);\n\tr = MulAdd(s1_7, M4(-1.134e-01, 8.718e-02, -1.208e-01, -1.686e-02, 1.400e-01, -3.213e-01, 9.984e-02, 1.925e-01, 9.047e-02, -7.602e-02, -1.353e-01, 3.362e-02, 3.519e-03, -7.485e-02, -4.753e-03, 3.789e-02), r);\n\tr = MulAdd(s1_8, M4(-1.636e-01, -5.761e-02, 8.762e-02, 3.048e-02, 8.438e-02, 3.496e-02, 8.871e-02, -1.531e-01, 2.154e-02, 2.129e-02, -1.388e-01, -1.133e-02, -9.511e-02, -4.549e-02, -1.384e-02, -5.895e-02), r);\n\tr = MulAdd(s2_0, M4(4.882e-03, 1.283e-01, -2.763e-02, 9.043e-02, -2.804e-03, -5.500e-03, 9.404e-02, 2.569e-02, 3.186e-02, 5.725e-02, -2.883e-02, -8.733e-02, -5.914e-02, 7.541e-02, -2.237e-03, 1.062e-02), r);\n\tr = MulAdd(s2_1, M4(2.729e-02, 1.656e-02, 4.354e-02, 6.795e-02, -6.394e-02, 6.677e-04, -9.367e-02, -7.237e-03, 1.514e-03, -6.692e-02, 5.455e-02, -8.540e-03, 4.207e-02, 1.632e-01, 5.576e-02, -2.645e-02), r);\n\tr = MulAdd(s2_2, M4(-1.607e-02, -2.096e-02, -1.031e-01, -1.291e-02, 7.235e-02, -3.595e-04, -1.461e-03, 1.701e-02, -1.732e-03, 8.503e-02, -1.746e-03, 1.168e-03, 8.124e-02, -3.384e-02, -1.580e-02, 9.406e-02), r);\n\tr = MulAdd(s2_3, M4(-4.748e-02, 2.919e-02, 1.506e-01, 1.201e-01, 3.544e-03, 6.126e-02, 1.094e-01, 7.174e-02, -3.791e-02, 1.865e-01, -6.470e-02, -1.531e-01, 1.565e-02, 3.920e-02, 4.791e-02, 4.874e-02), r);\n\tr = MulAdd(s2_4, M4(-6.980e-02, -3.444e-02, -7.843e-02, -7.325e-02, 1.878e-01, -9.045e-03, -8.041e-02, -2.307e-02, -5.940e-02, -3.866e-02, 6.295e-02, 1.268e-01, 1.971e-02, 1.880e-01, -7.046e-02, 7.267e-02), r);\n\tr = MulAdd(s2_5, M4(1.551e-01, -1.490e-01, 4.663e-02, 2.092e-03, 4.003e-02, -9.856e-03, -1.524e-01, 8.802e-02, -6.113e-02, 1.032e-01, -5.811e-02, -1.167e-01, -1.040e-01, -1.417e-02, -7.664e-02, 6.155e-02), r);\n\tr = MulAdd(s2_6, M4(9.057e-02, 1.014e-01, -9.122e-03, -1.784e-02, 3.977e-02, 4.477e-02, 4.628e-02, 2.379e-02, -1.242e-02, 6.113e-02, -9.431e-03, -5.879e-02, 2.596e-02, -2.014e-02, 3.798e-02, 2.791e-02), r);\n\tr = MulAdd(s2_7, M4(1.446e-02, -1.929e-02, 2.062e-02, -5.054e-02, 8.961e-02, -2.919e-02, -3.591e-02, -4.359e-05, 8.416e-02, -9.472e-03, -6.747e-02, -4.886e-02, 4.601e-02, 2.285e-01, -4.229e-02, -1.883e-02), r);\n\tr = MulAdd(s2_8, M4(2.301e-02, -8.001e-03, -3.776e-02, -4.969e-02, -6.737e-02, -7.542e-02, 9.241e-02, 4.902e-05, 1.421e-02, 1.136e-01, -1.230e-01, -2.179e-02, -9.226e-02, 1.140e-01, 5.157e-03, -4.170e-02), r);\n\tr = MulAdd(s3_0, M4(5.915e-02, 1.352e-01, -6.930e-02, -3.117e-02, 6.114e-02, -1.653e-01, 1.082e-01, 8.015e-02, 3.380e-02, 3.502e-03, 4.469e-02, 1.862e-02, 6.960e-03, 9.355e-03, 5.013e-02, 9.937e-02), r);\n\tr = MulAdd(s3_1, M4(-1.468e-01, 4.873e-02, 1.114e-01, -5.181e-03, 5.865e-02, -9.539e-02, -8.387e-02, 5.829e-02, 6.005e-02, -1.361e-01, -8.120e-02, -8.009e-02, 1.379e-01, -1.110e-01, -3.764e-02, 7.363e-02), r);\n\tr = MulAdd(s3_2, M4(-1.323e-02, 1.469e-01, 4.694e-02, 1.735e-02, 3.762e-02, -9.231e-02, -7.239e-02, 1.063e-02, 4.043e-02, 4.433e-02, -5.364e-02, -3.767e-02, -3.601e-02, -6.791e-02, 7.434e-03, 8.255e-02), r);\n\tr = MulAdd(s3_3, M4(-3.209e-02, 8.216e-02, 1.743e-01, -5.094e-02, 1.137e-01, -2.192e-01, -4.207e-02, 8.447e-03, -1.389e-02, 1.533e-01, 6.047e-03, -6.254e-03, -1.571e-02, 1.528e-02, 4.149e-02, 3.927e-02), r);\n\tr = MulAdd(s3_4, M4(1.320e-01, -2.930e-02, -1.799e-02, 2.068e-01, 4.463e-02, -1.153e-03, -1.415e-02, -1.850e-01, 2.495e-01, 4.801e-02, -2.517e-01, 1.030e-01, -3.563e-01, 2.625e-01, 3.427e-02, 5.950e-02), r);\n\tr = MulAdd(s3_5, M4(-7.095e-02, 5.167e-02, 1.356e-02, -5.700e-02, 1.530e-01, -1.915e-01, -1.541e-02, 1.587e-01, -3.247e-02, 1.876e-01, -2.764e-01, -2.076e-01, 3.612e-02, 1.690e-01, 8.827e-02, 6.959e-02), r);\n\tr = MulAdd(s3_6, M4(-5.147e-02, 4.759e-02, 3.091e-02, 1.571e-02, -4.751e-02, 2.807e-02, -1.546e-02, -2.250e-02, -3.121e-03, 1.554e-02, -8.659e-02, -1.952e-01, 4.762e-04, -3.163e-02, -8.135e-02, 6.519e-02), r);\n\tr = MulAdd(s3_7, M4(-2.127e-02, -1.332e-02, 2.117e-02, 1.499e-02, 4.184e-03, 6.348e-03, 4.794e-02, -4.764e-03, -1.938e-01, 3.070e-02, 5.067e-02, -1.063e-01, -7.583e-02, 9.846e-02, -5.883e-02, 1.245e-02), r);\n\tr = MulAdd(s3_8, M4(-7.546e-02, -6.857e-02, 4.869e-02, 6.144e-04, 2.149e-02, -1.723e-01, 3.948e-02, 1.033e-01, -9.994e-02, -1.799e-02, -4.577e-02, 1.503e-02, 1.917e-02, 2.287e-02, -3.749e-02, 3.704e-03), r);\n\tr = MulAdd(s4_0, M4(2.386e-02, -6.699e-02, 1.179e-01, 1.217e-01, -3.840e-03, -9.233e-02, -5.570e-02, -4.940e-02, -3.374e-02, 1.446e-02, -3.170e-02, -2.923e-02, 6.858e-03, 1.429e-02, -1.063e-01, 3.806e-02), r);\n\tr = MulAdd(s4_1, M4(6.160e-02, 4.078e-02, -9.278e-02, 8.813e-03, 4.014e-02, 8.360e-02, 1.578e-01, 2.356e-02, 1.554e-02, -1.546e-02, 1.870e-01, -2.622e-02, 1.007e-01, -2.018e-02, 3.210e-02, -1.491e-01), r);\n\tr = MulAdd(s4_2, M4(4.191e-02, 8.331e-02, 7.167e-02, -2.731e-02, 2.408e-03, -9.919e-03, -1.365e-03, -9.990e-03, -6.103e-02, -6.417e-02, -4.156e-02, 4.083e-02, 1.673e-01, 1.464e-02, -5.283e-02, -1.810e-02), r);\n\tr = MulAdd(s4_3, M4(1.847e-01, -5.065e-02, 1.175e-01, 1.171e-01, 1.287e-02, -1.970e-01, 1.837e-02, 9.569e-02, -5.157e-02, 1.203e-01, 8.410e-02, -6.370e-02, 6.671e-02, 1.668e-01, 3.538e-02, 6.047e-02), r);\n\tr = MulAdd(s4_4, M4(-1.742e-01, 1.513e-01, 1.198e-01, 3.599e-02, -5.566e-02, 9.012e-02, -1.984e-01, -2.470e-02, 1.116e-01, 3.129e-01, -8.667e-02, 1.346e-01, 1.939e-01, 2.393e-02, -9.264e-02, -2.492e-01), r);\n\tr = MulAdd(s4_5, M4(4.079e-02, 7.863e-02, 3.043e-02, 8.451e-02, 7.184e-02, 9.325e-02, -3.495e-02, 6.198e-02, -8.641e-02, -2.968e-02, 1.519e-01, -1.383e-01, -5.764e-02, -1.684e-01, -7.344e-02, -1.298e-01), r);\n\tr = MulAdd(s4_6, M4(2.949e-02, 5.492e-02, -6.664e-02, -1.867e-02, -2.591e-02, -2.480e-02, 2.903e-02, 1.387e-01, 5.483e-02, -1.129e-01, 1.877e-02, 7.596e-03, -1.058e-01, -1.558e-01, 9.410e-02, 6.218e-02), r);\n\tr = MulAdd(s4_7, M4(7.291e-02, -9.164e-02, -2.596e-02, 1.246e-01, -1.701e-02, -1.238e-01, -8.126e-02, -1.795e-02, -6.595e-02, 1.063e-01, 2.183e-02, 5.273e-02, 1.348e-02, -5.259e-02, 1.109e-01, -1.108e-01), r);\n\tr = MulAdd(s4_8, M4(-8.273e-02, -2.826e-02, 5.756e-02, -6.913e-02, -9.518e-02, 3.518e-02, -4.045e-02, -1.886e-03, -5.751e-03, 1.910e-02, 8.394e-03, -5.276e-02, 5.724e-02, 9.454e-04, 3.042e-02, 1.589e-03), r);\n\tr = MulAdd(s5_0, M4(-4.081e-02, 2.613e-02, -1.001e-02, -7.691e-02, 6.423e-03, -7.491e-03, 7.306e-02, 5.021e-02, 5.762e-02, -7.077e-02, -6.219e-02, 1.087e-01, 4.356e-02, -1.110e-02, 2.045e-02, -4.486e-02), r);\n\tr = MulAdd(s5_1, M4(-8.378e-02, 9.047e-02, 7.844e-02, -1.880e-01, 9.810e-02, 1.244e-01, 4.427e-02, 8.744e-02, 9.155e-02, 9.292e-02, 8.227e-02, 8.444e-02, -1.160e-02, 2.979e-02, 5.415e-02, -1.836e-02), r);\n\tr = MulAdd(s5_2, M4(9.188e-02, 4.463e-02, 3.819e-02, 2.323e-02, -8.297e-03, -5.695e-02, -3.495e-02, -6.575e-03, -2.870e-02, 3.126e-02, -7.547e-02, 4.411e-02, 5.214e-03, 4.028e-02, -2.259e-02, 3.480e-02), r);\n\tr = MulAdd(s5_3, M4(-3.300e-02, 4.670e-02, -6.394e-02, -7.687e-03, 8.160e-02, -1.323e-01, -3.512e-02, 6.628e-02, 5.705e-03, 2.856e-03, 9.416e-02, -2.114e-02, 2.401e-02, 9.146e-03, 7.629e-03, -6.669e-02), r);\n\tr = MulAdd(s5_4, M4(-1.094e-01, 2.638e-01, 3.507e-02, 5.298e-03, -1.671e-01, 1.657e-01, 4.612e-02, -6.475e-02, 3.626e-01, -6.742e-02, 2.930e-01, 1.344e-01, -9.630e-02, -5.689e-02, -4.070e-02, -1.976e-01), r);\n\tr = MulAdd(s5_5, M4(5.550e-02, 7.444e-02, 6.249e-02, 9.736e-02, -9.858e-02, -3.331e-02, -3.191e-02, -1.121e-02, -2.269e-01, -2.242e-01, -6.816e-04, -3.120e-01, -1.583e-02, 8.640e-03, -3.154e-02, -1.502e-01), r);\n\tr = MulAdd(s5_6, M4(3.199e-02, 6.824e-02, -5.314e-02, 6.801e-03, -1.462e-01, 7.690e-02, 5.163e-02, 3.599e-02, 1.236e-02, -5.421e-02, 2.565e-02, -3.847e-03, -3.625e-02, 4.862e-02, -1.461e-02, 1.887e-02), r);\n\tr = MulAdd(s5_7, M4(1.903e-02, 1.049e-01, -9.422e-02, 7.068e-03, 7.797e-02, -2.580e-02, -2.133e-02, -8.385e-02, 2.896e-01, -7.134e-02, -3.428e-02, 3.129e-02, -8.228e-02, 6.240e-02, 1.937e-02, -5.818e-02), r);\n\tr = MulAdd(s5_8, M4(2.743e-02, -1.725e-02, 2.877e-02, 1.920e-02, -9.789e-02, -9.666e-02, -1.232e-02, -1.358e-01, -5.698e-02, -6.617e-02, -2.075e-01, -9.234e-02, 7.224e-02, 5.932e-02, 3.815e-02, 5.836e-03), r);\n\tr = MulAdd(s6_0, M4(1.294e-01, -1.894e-01, 1.271e-02, -3.241e-02, 6.861e-02, 7.944e-03, -6.318e-02, 7.642e-02, -1.590e-03, 2.999e-02, -1.520e-01, -3.941e-02, 8.424e-02, 1.252e-01, 3.210e-02, 3.888e-02), r);\n\tr = MulAdd(s6_1, M4(7.113e-03, -3.657e-01, -5.681e-02, -2.579e-02, 3.934e-03, -6.467e-02, -4.227e-02, -1.791e-02, -4.824e-02, -4.570e-02, 1.281e-01, -1.851e-01, -7.617e-02, -2.520e-02, 4.820e-02, -3.522e-02), r);\n\tr = MulAdd(s6_2, M4(7.420e-02, -1.187e-01, 1.931e-02, -7.240e-02, 1.547e-02, 1.421e-02, -2.403e-02, 5.392e-02, -2.654e-02, -3.127e-02, 5.019e-02, -9.106e-03, -2.130e-03, 7.296e-02, -1.444e-02, 4.740e-02), r);\n\tr = MulAdd(s6_3, M4(5.434e-02, -9.763e-02, -1.274e-01, 3.995e-02, -4.936e-03, -9.896e-02, -1.038e-01, -9.221e-03, 1.122e-02, 7.027e-02, -1.762e-01, 9.409e-03, -1.257e-02, -4.714e-02, 1.009e-01, -5.563e-02), r);\n\tr = MulAdd(s6_4, M4(2.441e-01, -1.990e-01, 8.441e-02, 1.368e-01, 9.119e-02, 6.636e-03, -4.092e-02, 3.751e-02, 8.522e-02, 2.960e-02, -5.376e-02, -1.098e-01, 1.705e-01, -1.020e-01, -8.451e-02, 1.714e-01), r);\n\tr = MulAdd(s6_5, M4(1.497e-01, -7.163e-02, -7.517e-02, 1.158e-01, -4.815e-02, 4.708e-02, -6.679e-03, -1.606e-02, 6.199e-02, -6.321e-02, -1.431e-02, -8.619e-02, -1.887e-01, 1.032e-01, -1.129e-01, -5.719e-02), r);\n\tr = MulAdd(s6_6, M4(1.094e-01, -9.081e-02, -1.038e-01, -3.552e-02, -5.055e-03, -7.073e-02, -3.967e-02, 1.570e-02, -4.736e-02, -9.455e-02, 1.999e-02, 8.959e-03, 1.274e-02, 9.704e-02, 3.143e-02, -6.793e-03), r);\n\tr = MulAdd(s6_7, M4(2.531e-01, -6.100e-02, -2.354e-01, -6.290e-02, -4.297e-02, 2.630e-03, 1.902e-02, -4.228e-02, -5.898e-02, 3.427e-02, 2.461e-02, -7.373e-02, 1.105e-01, -1.016e-01, 1.337e-02, -7.272e-02), r);\n\tr = MulAdd(s6_8, M4(9.801e-02, -5.510e-02, -1.810e-01, -5.994e-02, 7.279e-02, -1.181e-02, 6.652e-02, 2.043e-03, 7.534e-02, -1.073e-01, 1.965e-02, -4.311e-02, -1.470e-01, 4.022e-02, 1.256e-02, -1.590e-01), r);\n\tr = MulAdd(s7_0, M4(2.198e-03, 1.195e-02, 4.987e-02, 2.487e-02, -3.843e-02, 6.466e-02, 6.872e-03, -4.453e-02, -4.167e-02, 3.627e-02, 9.219e-03, -1.346e-02, 7.166e-02, 2.580e-02, -2.460e-03, 1.006e-01), r);\n\tr = MulAdd(s7_1, M4(-1.733e-02, -1.171e-02, -9.107e-02, 7.854e-02, 5.693e-02, -1.864e-02, 1.852e-02, 5.034e-02, 7.212e-02, 3.279e-02, 7.340e-03, -1.160e-02, 1.476e-02, -1.143e-01, 5.309e-02, 8.046e-02), r);\n\tr = MulAdd(s7_2, M4(1.709e-03, -9.215e-03, 3.640e-02, -2.015e-02, -7.813e-02, -2.006e-02, 5.107e-03, -3.323e-02, 3.283e-03, 1.799e-01, -6.751e-02, -3.501e-02, 5.822e-02, -1.271e-02, -1.269e-02, 3.323e-02), r);\n\tr = MulAdd(s7_3, M4(-4.981e-02, 1.224e-01, 9.955e-03, 4.094e-02, -1.480e-01, -1.458e-01, -1.077e-01, 4.140e-02, 6.963e-02, -9.296e-03, -7.067e-02, 6.662e-02, -1.469e-01, -7.788e-02, 3.749e-02, -6.122e-02), r);\n\tr = MulAdd(s7_4, M4(8.569e-02, -3.485e-03, 6.274e-02, 4.062e-02, -8.150e-02, -2.033e-02, -4.892e-02, -3.897e-02, -7.900e-02, 3.007e-02, -7.428e-02, -9.108e-02, 1.780e-01, -1.877e-01, -8.340e-02, 2.277e-01), r);\n\tr = MulAdd(s7_5, M4(-2.498e-03, 4.742e-02, -1.618e-02, 5.209e-02, 7.432e-02, -5.888e-02, 5.732e-02, 2.196e-02, 2.111e-02, -1.725e-01, 5.155e-02, -7.693e-03, -1.316e-01, 6.684e-04, 3.329e-02, 4.710e-02), r);\n\tr = MulAdd(s7_6, M4(-3.028e-03, -1.294e-02, 7.406e-03, 1.783e-02, 6.747e-03, 1.236e-02, 5.246e-02, 1.643e-01, -5.246e-02, 5.649e-03, -3.658e-02, -5.173e-02, -2.663e-02, -1.295e-01, 3.044e-02, -1.094e-03), r);\n\tr = MulAdd(s7_7, M4(-1.570e-02, 1.167e-01, 2.844e-02, -6.654e-03, 1.367e-01, -2.043e-01, -9.955e-02, -1.525e-01, 6.153e-02, 7.433e-03, -1.944e-02, 1.738e-02, 6.937e-02, -2.045e-02, 1.065e-01, -1.348e-01), r);\n\tr = MulAdd(s7_8, M4(-6.352e-03, 3.662e-02, 5.139e-02, 2.546e-02, 6.839e-02, -2.401e-02, -9.333e-02, -1.460e-01, 6.587e-02, 6.411e-02, -6.108e-02, -1.712e-02, -3.972e-02, -4.960e-02, 2.875e-02, 1.562e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.570e-03, -4.291e-02, -1.299e-02, 1.425e-02 };\n\tr = MulAdd(s0_0, M4(8.094e-04, 3.656e-02, 2.530e-02, 1.321e-02, 3.186e-02, 2.905e-02, -3.188e-02, 2.978e-03, 1.053e-01, -6.066e-02, 4.463e-02, -9.486e-02, -5.617e-02, 1.871e-01, 1.274e-01, -8.033e-02), r);\n\tr = MulAdd(s0_1, M4(3.014e-02, 1.179e-01, -4.175e-03, -4.586e-02, -6.619e-02, -1.521e-02, -1.647e-02, 9.131e-04, 2.558e-02, 4.775e-02, -5.385e-02, 4.971e-02, -8.648e-02, 7.845e-02, -3.333e-02, -3.736e-02), r);\n\tr = MulAdd(s0_2, M4(2.093e-02, 1.867e-03, -5.568e-02, 6.354e-03, -1.903e-02, -1.263e-02, -7.210e-03, -2.144e-03, -3.158e-03, -2.480e-02, 1.009e-01, 2.064e-02, -3.645e-02, -2.622e-02, -5.732e-02, -2.596e-02), r);\n\tr = MulAdd(s0_3, M4(-7.684e-02, 1.370e-01, -3.305e-02, -5.904e-03, -4.982e-03, -1.551e-01, 5.245e-02, -2.731e-02, -3.460e-02, 2.563e-02, -1.279e-01, 1.652e-04, -3.821e-01, 1.504e-01, -1.377e-02, -6.622e-02), r);\n\tr = MulAdd(s0_4, M4(-1.214e-01, -8.551e-02, -1.371e-01, 3.295e-02, 7.233e-02, 9.524e-02, 1.523e-01, -1.300e-02, -9.606e-03, 1.983e-01, 2.064e-01, -8.872e-02, 4.599e-02, 1.161e-01, 1.250e-01, -1.654e-01), r);\n\tr = MulAdd(s0_5, M4(-4.586e-02, -6.165e-02, -6.160e-02, 1.361e-02, 2.826e-02, 4.357e-02, 3.549e-02, 3.897e-02, -5.086e-02, -1.082e-01, 1.085e-01, 1.877e-01, -4.027e-02, -2.616e-02, 4.383e-02, -8.405e-02), r);\n\tr = MulAdd(s0_6, M4(-7.785e-02, 4.741e-02, -3.778e-02, -8.051e-02, 1.224e-01, -5.179e-02, -2.464e-02, 6.087e-02, -7.910e-02, 1.355e-01, -6.820e-02, 5.459e-02, -7.689e-02, 7.860e-02, 7.812e-02, -2.411e-02), r);\n\tr = MulAdd(s0_7, M4(-1.077e-01, -6.815e-02, -5.486e-02, -2.057e-02, 5.878e-02, 1.066e-01, -5.390e-02, 4.218e-02, -1.593e-01, 6.220e-02, 2.660e-02, 3.090e-02, -1.283e-01, -1.931e-02, -6.371e-02, -2.323e-02), r);\n\tr = MulAdd(s0_8, M4(3.539e-02, 2.408e-04, 1.936e-02, -3.251e-02, -1.620e-02, -8.020e-02, 1.042e-01, 6.912e-04, -6.654e-02, 1.033e-01, 2.011e-01, -8.273e-02, -3.157e-02, 2.211e-02, 4.827e-02, 3.244e-02), r);\n\tr = MulAdd(s1_0, M4(-2.871e-02, -2.896e-02, -4.957e-02, 9.638e-03, -6.017e-02, 4.270e-01, 1.089e-01, -1.574e-01, 5.912e-02, -8.238e-03, 6.139e-02, -4.290e-02, -6.069e-02, 1.503e-01, 1.930e-02, 3.593e-02), r);\n\tr = MulAdd(s1_1, M4(8.551e-02, -1.489e-01, -1.031e-02, -5.748e-02, -1.455e-02, 8.760e-02, -6.351e-02, 2.076e-01, -6.131e-02, 1.324e-02, 1.597e-02, -9.106e-03, -7.278e-02, 3.747e-04, 1.872e-02, 7.650e-02), r);\n\tr = MulAdd(s1_2, M4(1.915e-02, -7.556e-02, 3.498e-02, 6.874e-02, 3.128e-02, 2.021e-01, 4.100e-02, 4.759e-02, 2.797e-03, 7.574e-02, -2.713e-02, -6.555e-02, 4.066e-02, 3.684e-03, -6.114e-02, 9.379e-05), r);\n\tr = MulAdd(s1_3, M4(-1.447e-02, 2.614e-03, 1.120e-01, -5.897e-02, 5.813e-02, 2.165e-01, 2.444e-01, 8.125e-02, -1.264e-03, -3.225e-02, -1.145e-01, -8.569e-02, -1.534e-01, -1.499e-01, -1.726e-01, 2.016e-01), r);\n\tr = MulAdd(s1_4, M4(3.678e-02, -2.782e-01, 1.807e-01, 1.374e-01, 1.275e-01, 1.405e-01, -1.047e-01, 4.539e-02, -1.196e-01, -2.815e-02, 5.395e-02, 3.457e-02, 1.847e-01, -1.763e-01, -9.819e-02, 2.932e-01), r);\n\tr = MulAdd(s1_5, M4(-2.290e-02, 5.359e-02, 1.682e-01, -4.842e-02, -2.260e-01, 1.002e-01, 1.145e-02, -2.250e-01, 6.991e-03, 1.070e-01, 1.103e-01, -1.632e-02, 8.423e-02, 1.185e-01, 4.030e-02, 4.863e-03), r);\n\tr = MulAdd(s1_6, M4(1.285e-01, 1.951e-01, 9.006e-02, -8.574e-02, 7.778e-02, 2.669e-01, 1.092e-01, -2.875e-02, 2.324e-02, 5.815e-02, -4.646e-02, 2.474e-02, 6.236e-03, -4.835e-02, 2.692e-02, -1.556e-02), r);\n\tr = MulAdd(s1_7, M4(6.567e-02, -1.771e-01, 1.636e-01, 1.389e-01, 1.923e-02, -2.261e-02, -1.336e-01, 7.837e-02, 7.038e-02, 7.848e-02, 7.020e-02, -4.635e-02, 2.443e-02, -1.174e-01, -1.740e-02, 2.764e-02), r);\n\tr = MulAdd(s1_8, M4(4.308e-02, -1.546e-02, -3.099e-02, 3.656e-02, 1.635e-01, 3.060e-01, 9.050e-02, 1.285e-01, -1.200e-01, -7.059e-02, 7.957e-03, 4.086e-02, 9.437e-02, 5.796e-02, -4.148e-03, 3.257e-02), r);\n\tr = MulAdd(s2_0, M4(-2.373e-02, -4.504e-02, -1.705e-03, 5.850e-02, 4.369e-02, -2.675e-02, -1.464e-02, 1.841e-03, -2.994e-02, -8.266e-03, 1.376e-03, -7.074e-02, 5.712e-03, 6.283e-02, -1.036e-02, -4.803e-02), r);\n\tr = MulAdd(s2_1, M4(1.495e-02, 1.791e-01, 4.742e-02, -1.452e-01, -1.541e-02, 1.155e-01, 5.500e-02, -1.145e-01, -9.387e-03, 1.789e-02, 3.983e-02, 6.136e-02, -1.055e-01, 1.866e-01, -4.713e-02, -5.747e-02), r);\n\tr = MulAdd(s2_2, M4(-1.225e-01, 2.266e-02, 1.181e-02, -7.051e-03, -6.077e-02, 9.735e-02, -7.292e-02, -8.954e-02, 1.563e-02, -2.959e-03, 2.662e-02, -2.103e-02, 8.584e-03, -9.759e-02, -7.741e-02, 3.616e-02), r);\n\tr = MulAdd(s2_3, M4(3.635e-02, -1.645e-01, -1.969e-02, 4.328e-03, 4.810e-02, 3.235e-02, -1.383e-01, -2.948e-02, 5.382e-02, -8.886e-02, 8.926e-03, -2.520e-02, 6.535e-02, -7.581e-02, -2.856e-02, 1.286e-02), r);\n\tr = MulAdd(s2_4, M4(5.513e-02, 7.227e-02, 2.869e-02, 2.017e-02, 8.521e-02, 2.349e-02, 2.405e-01, -1.228e-01, 2.694e-02, 1.984e-02, 6.508e-02, -5.179e-02, 1.851e-02, 1.414e-01, 4.834e-01, -7.654e-02), r);\n\tr = MulAdd(s2_5, M4(-4.136e-02, -6.083e-02, -4.117e-02, 4.112e-03, -6.040e-02, -1.106e-01, 3.498e-02, 4.838e-02, 4.583e-02, 5.135e-02, 3.665e-02, 1.567e-01, 7.413e-02, -1.082e-01, 2.292e-01, 1.199e-01), r);\n\tr = MulAdd(s2_6, M4(-5.964e-03, -1.046e-01, 1.439e-01, -3.429e-02, -3.755e-02, 4.449e-02, 8.300e-02, 4.855e-02, 2.292e-02, -4.491e-02, -5.796e-02, 4.857e-02, 5.673e-03, -6.138e-02, 2.884e-02, -6.701e-04), r);\n\tr = MulAdd(s2_7, M4(2.151e-02, 1.747e-01, -1.631e-01, 9.152e-02, 5.497e-02, -6.721e-02, -1.185e-02, 6.380e-02, 1.387e-02, 1.475e-01, -2.808e-02, -9.629e-02, 7.208e-02, 1.401e-01, -7.801e-02, 6.167e-02), r);\n\tr = MulAdd(s2_8, M4(-4.352e-02, 1.319e-03, 8.084e-02, 3.737e-03, 6.664e-02, 1.447e-01, -1.793e-02, -4.077e-02, -1.716e-02, -6.143e-02, 4.823e-03, 5.037e-02, -9.153e-03, 5.060e-02, 1.001e-01, 4.966e-02), r);\n\tr = MulAdd(s3_0, M4(5.649e-02, -3.891e-02, -2.430e-02, -2.174e-02, 1.105e-01, -3.841e-02, 4.498e-02, -5.182e-02, 9.689e-03, -9.495e-02, 5.334e-03, -6.659e-02, 3.015e-02, 4.723e-02, 1.369e-02, -1.516e-02), r);\n\tr = MulAdd(s3_1, M4(1.232e-02, -6.351e-02, -1.843e-01, -8.472e-02, 1.921e-02, -6.587e-02, -1.244e-02, -3.887e-02, 2.925e-04, 1.065e-01, 3.573e-02, 4.122e-02, 6.901e-03, -7.812e-02, 7.476e-02, 4.080e-02), r);\n\tr = MulAdd(s3_2, M4(-6.150e-03, 3.499e-02, -5.778e-02, -7.025e-02, 2.570e-02, -2.516e-02, -5.620e-02, -2.414e-02, -8.359e-03, -2.838e-02, 8.285e-02, 1.164e-01, -8.725e-03, 2.962e-02, 5.898e-02, -1.734e-02), r);\n\tr = MulAdd(s3_3, M4(4.642e-02, 6.787e-02, -1.394e-01, -1.438e-03, 3.154e-02, 2.288e-02, -1.279e-02, 5.279e-02, 7.700e-02, 9.242e-02, 6.436e-02, -1.958e-02, 2.512e-02, -1.689e-01, 1.819e-01, -4.532e-02), r);\n\tr = MulAdd(s3_4, M4(-3.873e-02, -1.275e-01, -2.041e-01, -3.506e-02, 2.099e-02, 3.069e-01, 1.333e-01, -2.164e-01, 3.009e-02, -2.383e-02, 1.660e-01, 7.033e-03, -1.980e-01, 1.627e-01, -3.039e-02, -1.680e-01), r);\n\tr = MulAdd(s3_5, M4(-1.979e-02, -3.970e-02, 1.013e-01, 1.470e-02, -8.796e-03, -1.388e-01, -2.466e-01, -1.449e-02, -4.928e-02, -1.117e-01, 6.766e-03, 2.252e-01, -8.004e-02, -1.170e-01, 1.027e-02, -4.645e-02), r);\n\tr = MulAdd(s3_6, M4(3.630e-02, 1.871e-02, -7.153e-02, -1.659e-02, -2.352e-02, 5.419e-02, 6.725e-02, 5.810e-03, -9.791e-02, -6.364e-03, 1.147e-01, 1.143e-01, 7.626e-02, 6.141e-02, 3.847e-03, 4.719e-02), r);\n\tr = MulAdd(s3_7, M4(2.607e-02, 1.518e-02, 4.637e-02, 2.521e-02, -5.243e-02, 2.306e-02, -4.595e-02, -5.553e-02, 2.664e-02, 1.821e-01, 1.098e-01, -1.458e-01, -2.127e-01, -1.272e-02, 6.474e-02, 6.118e-02), r);\n\tr = MulAdd(s3_8, M4(2.075e-02, 1.177e-02, -4.928e-02, 1.140e-02, -1.305e-01, -2.648e-03, 1.769e-02, -1.216e-01, 1.441e-01, 3.274e-02, 3.489e-02, -6.273e-02, -7.208e-02, 1.051e-01, 1.537e-01, -1.123e-01), r);\n\tr = MulAdd(s4_0, M4(7.110e-02, 4.850e-02, -1.157e-02, 4.185e-02, 5.356e-02, 4.014e-02, 7.733e-02, -1.246e-02, -2.777e-02, -2.533e-02, 2.298e-02, -2.722e-02, -1.042e-01, 3.940e-02, 9.855e-02, -1.004e-01), r);\n\tr = MulAdd(s4_1, M4(2.769e-02, 4.162e-02, -1.011e-01, 1.103e-01, -4.562e-02, -2.646e-02, -3.413e-02, 4.516e-02, -5.508e-02, 1.650e-01, 6.129e-02, 1.280e-01, -1.667e-01, 6.874e-02, -1.240e-01, 1.050e-01), r);\n\tr = MulAdd(s4_2, M4(2.617e-02, 1.081e-02, 5.938e-02, -2.068e-02, 9.066e-02, 5.606e-02, 1.225e-02, 6.061e-03, -2.554e-03, -1.691e-02, 4.391e-02, 7.897e-03, -3.455e-02, 4.846e-02, -9.722e-02, -4.085e-02), r);\n\tr = MulAdd(s4_3, M4(1.545e-01, -1.108e-01, 2.369e-01, 3.505e-02, -6.744e-02, 8.668e-02, -6.337e-02, -2.470e-03, 1.048e-01, 3.657e-03, 6.390e-03, -7.144e-02, -2.276e-02, -1.648e-01, -2.147e-01, -1.581e-03), r);\n\tr = MulAdd(s4_4, M4(1.460e-01, 9.660e-03, -1.189e-01, 3.128e-02, 1.497e-01, 5.374e-02, 2.867e-02, 3.194e-02, -1.442e-01, -4.870e-02, 7.521e-04, 2.193e-01, 5.682e-01, -3.875e-01, 4.589e-01, 4.727e-01), r);\n\tr = MulAdd(s4_5, M4(2.797e-02, -5.300e-02, -2.445e-01, -5.600e-02, -6.601e-02, -2.028e-02, -3.025e-02, -3.851e-02, 2.073e-02, -2.140e-02, -2.093e-01, 2.266e-01, 8.101e-02, 1.409e-01, 8.547e-02, -8.630e-02), r);\n\tr = MulAdd(s4_6, M4(8.292e-02, -7.876e-02, -8.856e-02, 1.907e-02, -6.368e-02, -3.828e-02, -1.131e-01, 4.408e-02, 7.031e-03, -4.064e-02, 6.172e-02, -6.402e-02, -5.491e-02, -4.418e-02, -1.405e-01, -5.717e-02), r);\n\tr = MulAdd(s4_7, M4(6.500e-02, -7.290e-03, 2.594e-02, 4.244e-02, 9.845e-02, -1.441e-01, 1.111e-01, -1.345e-02, -4.688e-02, -1.691e-01, 9.880e-02, 4.007e-02, -1.081e-01, 2.336e-01, 1.152e-01, -7.479e-02), r);\n\tr = MulAdd(s4_8, M4(1.162e-01, -2.099e-02, 1.145e-01, 1.166e-01, -8.507e-02, 5.079e-02, 7.288e-02, -1.387e-01, 5.778e-02, 6.205e-02, -3.556e-02, 8.295e-02, -8.924e-02, -9.102e-02, -5.964e-02, 8.599e-02), r);\n\tr = MulAdd(s5_0, M4(-1.462e-02, 8.082e-02, 4.455e-02, -4.356e-02, 7.335e-02, 4.376e-02, 8.118e-03, -4.540e-03, 1.430e-02, -9.267e-03, -4.582e-02, -8.926e-04, -5.143e-02, 1.560e-02, 2.137e-02, -2.697e-02), r);\n\tr = MulAdd(s5_1, M4(-3.726e-02, 1.228e-01, -4.132e-02, 7.470e-02, 1.000e-02, 9.297e-02, 1.480e-01, -1.979e-04, 3.006e-02, -3.010e-02, -7.384e-02, 1.877e-01, 1.923e-02, 1.162e-01, -9.008e-02, 1.230e-01), r);\n\tr = MulAdd(s5_2, M4(-2.161e-02, 1.287e-02, -6.257e-02, 1.472e-02, 5.709e-02, -4.043e-02, 1.515e-02, 1.690e-02, 2.494e-02, -1.136e-01, -9.791e-03, -5.449e-02, -3.664e-02, -4.210e-02, -1.805e-02, 4.579e-02), r);\n\tr = MulAdd(s5_3, M4(-5.763e-02, 3.082e-02, -1.415e-02, -5.158e-04, -9.545e-02, 4.433e-02, 1.523e-03, -3.887e-03, 8.415e-02, -1.272e-01, 1.091e-01, 2.093e-02, -4.191e-02, -3.525e-02, -1.222e-01, -5.924e-03), r);\n\tr = MulAdd(s5_4, M4(-3.762e-02, 1.749e-02, -2.028e-01, -4.117e-02, 1.383e-01, 9.640e-02, -3.933e-02, -1.313e-01, 2.118e-01, -9.010e-02, 2.746e-01, -3.513e-02, 2.214e-01, 5.478e-03, 9.056e-02, 2.379e-01), r);\n\tr = MulAdd(s5_5, M4(-5.022e-02, 5.552e-02, -8.665e-03, -7.388e-02, 7.463e-03, -1.085e-01, 1.008e-01, 4.463e-02, 1.378e-01, 3.763e-02, 8.676e-02, 1.877e-01, -1.080e-02, 9.133e-02, 8.161e-02, -1.125e-01), r);\n\tr = MulAdd(s5_6, M4(-3.119e-02, 1.863e-02, 1.994e-02, -3.058e-02, -5.287e-02, 1.133e-01, -2.383e-01, 8.179e-03, 6.562e-03, -7.171e-02, -7.081e-02, 3.105e-02, -6.101e-02, 9.925e-02, -8.762e-02, -8.117e-02), r);\n\tr = MulAdd(s5_7, M4(3.108e-02, 5.279e-02, 2.264e-02, 6.178e-02, 1.021e-01, 5.481e-02, 1.419e-01, -7.912e-03, 1.020e-02, -2.002e-01, -1.818e-01, 9.782e-02, -5.765e-03, 9.245e-02, 8.338e-02, -8.818e-03), r);\n\tr = MulAdd(s5_8, M4(-1.147e-02, -2.966e-02, 5.288e-03, -1.074e-03, 3.207e-02, -2.794e-02, -9.356e-03, -2.497e-02, 9.674e-02, 2.462e-02, -6.490e-02, 9.148e-02, -4.516e-02, -6.141e-02, -4.324e-02, 4.126e-02), r);\n\tr = MulAdd(s6_0, M4(1.036e-01, -2.570e-01, -1.208e-01, 8.886e-02, 7.710e-02, -2.474e-02, 2.849e-03, 1.278e-02, -1.482e-02, -1.193e-01, -1.380e-02, 1.007e-02, 1.184e-01, -1.439e-01, -1.044e-01, 2.887e-02), r);\n\tr = MulAdd(s6_1, M4(1.209e-01, -3.716e-01, 1.783e-01, 1.966e-01, 1.532e-02, -5.382e-02, -8.952e-02, 8.532e-02, -7.640e-02, 1.069e-01, 1.326e-01, -1.499e-01, -1.033e-02, -2.936e-02, 1.092e-01, 8.362e-02), r);\n\tr = MulAdd(s6_2, M4(4.508e-02, -7.873e-02, -2.155e-02, 7.153e-02, 1.640e-02, 6.660e-02, 2.897e-03, 4.817e-03, -3.263e-02, 1.306e-02, -6.786e-02, 8.870e-02, 9.132e-03, 5.999e-02, -1.520e-02, 1.487e-02), r);\n\tr = MulAdd(s6_3, M4(1.034e-01, -3.553e-01, 1.452e-01, 8.826e-02, 2.262e-02, 3.700e-02, 8.773e-03, 2.630e-02, -2.575e-02, 8.167e-02, -2.821e-02, -3.883e-02, 1.549e-01, -1.925e-02, 2.490e-01, -6.542e-02), r);\n\tr = MulAdd(s6_4, M4(1.189e-01, -2.134e-01, 1.221e-01, 1.048e-01, -1.359e-01, -2.367e-02, -2.231e-01, -2.973e-02, 9.188e-02, -8.502e-02, -1.946e-02, 8.132e-02, 3.279e-01, -1.637e-01, 9.216e-02, 3.257e-02), r);\n\tr = MulAdd(s6_5, M4(1.481e-01, -2.576e-01, -3.705e-03, 1.502e-01, 1.999e-02, 1.120e-01, 6.229e-02, -4.918e-02, -4.610e-03, 1.663e-01, -6.736e-02, -2.088e-01, 4.956e-02, 4.480e-02, 2.288e-01, 1.646e-01), r);\n\tr = MulAdd(s6_6, M4(4.327e-02, -2.827e-01, 1.014e-01, 1.575e-01, -2.061e-03, 1.758e-01, -1.348e-01, -5.756e-02, -4.617e-02, -7.614e-02, 3.244e-02, -5.471e-02, 6.149e-02, 1.591e-01, -1.890e-01, 3.956e-03), r);\n\tr = MulAdd(s6_7, M4(-1.924e-03, -2.328e-01, 7.678e-02, 1.188e-01, -3.185e-02, -1.139e-01, 1.001e-01, 3.155e-02, 1.520e-01, 1.029e-01, -4.720e-02, 8.691e-02, 5.704e-02, -7.140e-02, -2.305e-02, 9.784e-02), r);\n\tr = MulAdd(s6_8, M4(3.108e-02, -1.951e-01, 8.722e-02, 7.469e-02, -2.963e-02, 2.462e-02, 3.282e-02, -9.392e-02, 8.362e-02, -9.343e-02, -8.554e-02, -7.126e-03, -6.007e-02, 7.685e-02, 3.067e-02, 7.109e-02), r);\n\tr = MulAdd(s7_0, M4(-1.303e-02, 3.881e-02, -5.598e-02, 3.519e-02, -2.655e-02, 1.206e-01, 8.129e-02, -1.125e-01, 3.243e-02, 7.205e-02, 1.959e-02, 4.478e-02, -1.042e-02, -4.264e-03, 3.322e-02, 7.399e-03), r);\n\tr = MulAdd(s7_1, M4(2.747e-02, 1.158e-02, -6.186e-02, -1.866e-02, -1.027e-02, -2.844e-02, -7.940e-02, -2.550e-04, 8.304e-03, -8.307e-02, 3.995e-04, 1.069e-02, -4.984e-03, 6.702e-02, 1.038e-01, 2.283e-02), r);\n\tr = MulAdd(s7_2, M4(-2.234e-03, 1.159e-02, -5.776e-02, -2.739e-02, 6.097e-05, -3.496e-02, 4.195e-02, 2.330e-02, -2.140e-02, 1.020e-02, 3.447e-03, 1.336e-02, -5.864e-02, 2.480e-02, -2.061e-04, -5.578e-02), r);\n\tr = MulAdd(s7_3, M4(-9.866e-03, -1.995e-02, -6.760e-02, 3.330e-02, -2.021e-01, 1.889e-01, -1.641e-01, 7.595e-02, -1.147e-02, -4.509e-02, 5.394e-02, -2.518e-02, 6.504e-02, -4.305e-02, 2.914e-02, -1.353e-01), r);\n\tr = MulAdd(s7_4, M4(-2.741e-02, 1.660e-02, 3.526e-02, -1.491e-03, -2.191e-01, 2.912e-01, -4.188e-01, -1.748e-01, 1.531e-01, -1.138e-01, 2.163e-01, 2.023e-01, 8.601e-02, 1.334e-01, 5.447e-02, -6.781e-02), r);\n\tr = MulAdd(s7_5, M4(-6.088e-03, -3.201e-02, 2.290e-02, -5.825e-02, -1.473e-02, -6.408e-02, -7.407e-02, 6.456e-02, 1.347e-02, 1.728e-02, 3.563e-02, -1.706e-01, 4.241e-02, 6.153e-02, 4.919e-02, -3.836e-03), r);\n\tr = MulAdd(s7_6, M4(7.463e-03, 4.043e-02, 8.435e-02, 3.904e-02, -1.027e-01, -9.643e-02, -3.152e-02, 2.372e-02, 4.518e-02, 1.498e-02, 1.794e-02, -3.230e-02, -1.977e-02, 6.486e-02, -1.300e-01, 2.541e-03), r);\n\tr = MulAdd(s7_7, M4(-2.846e-02, 3.876e-02, 6.175e-02, 4.732e-03, -3.786e-02, 9.850e-02, -7.317e-02, 1.009e-01, 8.281e-02, -3.916e-02, -1.173e-01, 4.051e-02, 2.851e-02, 7.268e-02, -1.119e-01, 5.271e-02), r);\n\tr = MulAdd(s7_8, M4(-3.044e-02, 3.166e-02, 4.317e-03, -2.729e-03, -8.130e-02, -1.958e-01, 1.340e-01, -1.164e-02, -4.582e-03, -5.562e-02, 3.506e-02, -6.888e-02, -2.856e-02, -5.796e-02, -5.004e-02, -1.432e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -2.098e-02, 7.151e-03, -1.746e-02, -5.302e-02 };\n\tr = MulAdd(s0_0, M4(-4.462e-02, -1.310e-02, 6.609e-03, 5.740e-02, -8.642e-03, 4.899e-02, -1.583e-02, 2.844e-02, 6.648e-02, 3.871e-03, -1.768e-02, -4.883e-04, -9.543e-02, -1.685e-02, 1.791e-02, -3.466e-02), r);\n\tr = MulAdd(s0_1, M4(-6.833e-02, 5.737e-02, 8.637e-02, -7.064e-02, -2.990e-02, 3.789e-03, -1.489e-02, 3.995e-02, -2.039e-02, -6.969e-02, 1.027e-01, 1.380e-01, 7.285e-03, 2.917e-02, 7.228e-02, -1.042e-01), r);\n\tr = MulAdd(s0_2, M4(-5.274e-02, 2.310e-02, -6.004e-02, 1.292e-02, -3.580e-02, -8.655e-02, -3.162e-02, 2.008e-02, 6.223e-02, -2.044e-01, -1.197e-01, -4.355e-02, 1.107e-02, -7.214e-02, -3.807e-02, -5.094e-02), r);\n\tr = MulAdd(s0_3, M4(1.280e-02, -1.115e-02, 2.182e-04, -2.115e-02, -3.455e-02, -1.242e-02, 2.680e-03, -6.225e-02, -7.121e-02, 1.230e-02, 2.253e-02, -6.083e-02, 4.416e-03, 6.251e-03, -1.459e-01, -1.779e-01), r);\n\tr = MulAdd(s0_4, M4(1.331e-01, -1.431e-01, 1.044e-01, 3.952e-02, -1.209e-01, 1.043e-02, -9.951e-02, -8.294e-02, -1.616e-01, 1.760e-01, 7.440e-02, -6.678e-02, -5.565e-02, -9.580e-02, -7.826e-02, -1.852e-01), r);\n\tr = MulAdd(s0_5, M4(2.952e-03, 1.791e-03, -1.559e-02, -7.742e-02, -6.616e-03, -7.258e-02, -5.087e-02, -7.048e-03, -7.029e-02, 4.702e-02, 1.028e-02, -8.031e-02, 1.639e-02, 1.458e-02, 3.045e-02, -5.971e-02), r);\n\tr = MulAdd(s0_6, M4(-4.983e-02, -3.599e-03, -8.925e-04, -3.772e-02, 1.299e-03, -2.566e-02, -6.971e-03, 9.303e-02, -5.120e-02, -4.997e-02, 1.306e-02, 6.740e-02, 3.890e-02, -1.435e-01, -9.920e-02, 4.651e-02), r);\n\tr = MulAdd(s0_7, M4(-4.194e-02, -2.549e-02, 8.896e-03, -5.754e-02, 8.325e-03, 7.072e-02, 5.385e-02, -1.802e-02, 1.931e-02, 2.261e-01, -9.477e-02, -1.303e-01, -1.919e-02, -2.643e-02, 1.063e-01, -2.408e-02), r);\n\tr = MulAdd(s0_8, M4(-7.756e-03, 7.950e-03, 1.119e-03, -5.365e-03, -6.542e-03, -2.240e-02, 4.740e-03, -5.067e-02, -8.639e-03, -5.217e-02, -1.758e-02, -5.323e-02, 3.224e-02, -1.480e-02, -4.384e-02, -3.711e-02), r);\n\tr = MulAdd(s1_0, M4(-7.298e-02, 1.445e-02, -9.454e-03, -1.058e-02, -8.425e-02, 5.788e-02, 4.315e-02, -4.853e-02, 3.247e-02, 1.929e-02, 1.093e-02, 5.032e-02, -3.654e-02, -9.867e-02, 6.489e-02, -3.972e-03), r);\n\tr = MulAdd(s1_1, M4(-1.560e-02, 9.919e-03, 1.003e-02, 7.083e-03, -2.534e-01, -2.473e-01, -4.555e-02, -4.074e-02, 7.089e-02, 1.078e-02, -9.212e-02, -1.034e-01, -6.360e-02, 3.824e-02, -1.433e-02, -7.397e-02), r);\n\tr = MulAdd(s1_2, M4(6.288e-02, -1.428e-03, 2.118e-02, 2.259e-04, -2.058e-01, 6.832e-02, -6.487e-02, -8.280e-02, -2.492e-02, -3.735e-02, -7.691e-02, 4.195e-02, -5.090e-02, -2.049e-02, -2.962e-02, 2.124e-02), r);\n\tr = MulAdd(s1_3, M4(4.037e-02, -1.183e-01, -3.306e-02, -2.481e-02, -8.280e-02, -1.402e-01, -1.123e-01, -1.309e-01, 1.840e-02, 5.922e-02, 6.474e-02, 9.333e-02, 1.322e-02, 1.328e-01, -7.711e-04, 1.101e-01), r);\n\tr = MulAdd(s1_4, M4(2.431e-01, -1.526e-02, 3.973e-01, 6.055e-02, -2.158e-01, 1.573e-01, 1.153e-01, -2.713e-01, 1.282e-01, 1.626e-01, 2.550e-01, 9.282e-02, 1.051e-01, 1.085e-01, 7.336e-02, 2.281e-02), r);\n\tr = MulAdd(s1_5, M4(-5.789e-02, -1.408e-01, 2.681e-01, 8.174e-02, -1.873e-01, -1.429e-01, 1.980e-02, -2.227e-02, 1.378e-01, -7.831e-02, -1.198e-01, -5.265e-02, 6.618e-02, 1.066e-01, 2.457e-02, 1.241e-02), r);\n\tr = MulAdd(s1_6, M4(-1.809e-02, 3.453e-02, -2.993e-02, -4.992e-02, 3.207e-02, -4.045e-02, -1.958e-03, -3.240e-02, -3.410e-02, 3.105e-02, -1.371e-01, 1.361e-01, 3.359e-02, -2.561e-02, -5.956e-03, -1.423e-02), r);\n\tr = MulAdd(s1_7, M4(-1.847e-02, 1.268e-01, 2.167e-01, -4.562e-04, 8.563e-02, -1.685e-01, -6.241e-02, -2.425e-01, 1.773e-01, 1.288e-02, 6.724e-02, 1.295e-01, -3.540e-02, -1.026e-01, 7.806e-02, 1.190e-01), r);\n\tr = MulAdd(s1_8, M4(5.638e-02, 9.204e-02, 4.834e-02, -3.144e-02, 1.102e-01, -1.814e-02, 1.203e-01, 1.756e-02, 2.416e-03, -2.827e-02, 1.459e-01, 1.547e-01, 3.526e-02, 1.291e-02, 8.043e-02, 3.777e-02), r);\n\tr = MulAdd(s2_0, M4(1.361e-01, 3.691e-02, 4.395e-02, 1.606e-01, 7.802e-03, -1.292e-01, -1.353e-01, 3.487e-02, 1.666e-02, 6.090e-03, 1.957e-02, 1.009e-02, -2.801e-02, 7.073e-03, -6.974e-03, -1.360e-01), r);\n\tr = MulAdd(s2_1, M4(4.295e-02, 1.758e-02, -1.065e-01, 1.572e-01, 3.012e-02, 6.403e-02, -6.217e-02, -2.477e-02, 5.268e-02, -4.278e-02, -3.036e-02, 3.319e-02, -3.211e-02, 6.374e-02, -8.323e-02, -5.754e-02), r);\n\tr = MulAdd(s2_2, M4(-3.358e-03, -2.677e-02, -5.062e-03, -8.726e-02, -1.376e-01, -3.560e-02, -6.401e-02, 6.773e-02, 2.704e-02, 3.601e-02, 1.257e-02, 3.423e-02, 1.469e-01, -1.546e-01, -1.254e-01, -1.696e-02), r);\n\tr = MulAdd(s2_3, M4(5.545e-02, 4.398e-02, -2.672e-02, 1.246e-01, 3.295e-02, 8.615e-02, -4.438e-03, 1.501e-02, -4.680e-02, 2.229e-02, 1.763e-02, 5.402e-02, 5.715e-02, -5.796e-03, -3.928e-02, 7.037e-02), r);\n\tr = MulAdd(s2_4, M4(2.797e-02, -1.276e-01, 1.149e-01, 4.661e-02, 1.573e-01, 1.898e-01, 2.875e-01, 2.349e-01, 1.526e-01, -1.870e-01, 4.934e-02, 2.432e-01, 6.115e-02, -2.159e-03, 5.827e-02, -1.524e-01), r);\n\tr = MulAdd(s2_5, M4(6.111e-02, -2.927e-02, -1.449e-01, 7.417e-02, 4.468e-02, 2.148e-02, 4.834e-02, -7.180e-02, 6.146e-02, 5.945e-02, 2.432e-02, 2.849e-02, 1.800e-01, 8.602e-02, 1.058e-01, -1.170e-01), r);\n\tr = MulAdd(s2_6, M4(5.160e-02, 7.842e-03, -3.424e-02, 8.373e-02, -4.979e-02, -1.220e-01, -1.123e-01, 4.353e-03, 4.925e-02, 6.592e-02, -6.178e-04, -1.969e-02, -1.097e-03, 3.600e-03, 3.540e-02, 4.032e-03), r);\n\tr = MulAdd(s2_7, M4(4.263e-02, 5.162e-02, -4.264e-02, 1.454e-02, -4.603e-02, -2.586e-02, -4.238e-02, 7.478e-02, -3.296e-02, -2.916e-02, -3.310e-02, 8.334e-02, -1.462e-02, 2.845e-02, -1.949e-02, -8.869e-02), r);\n\tr = MulAdd(s2_8, M4(7.671e-03, -1.960e-02, 8.305e-03, 3.879e-03, 1.967e-02, 2.672e-02, -1.089e-02, 1.420e-02, 7.171e-03, -2.250e-02, 5.168e-02, 1.100e-01, -6.511e-02, -1.224e-02, -1.919e-01, -5.954e-02), r);\n\tr = MulAdd(s3_0, M4(-5.489e-02, -1.202e-01, -6.728e-02, -8.068e-02, 7.251e-02, 5.867e-02, -6.234e-02, 1.155e-01, 5.125e-02, -5.765e-02, -5.751e-02, -1.635e-02, 1.864e-02, 6.609e-02, -1.105e-03, -4.950e-02), r);\n\tr = MulAdd(s3_1, M4(-1.404e-01, -4.070e-02, -2.387e-01, 6.615e-03, -4.551e-02, 1.071e-01, 5.698e-02, 9.160e-02, 8.717e-02, -7.866e-02, 3.544e-02, 1.517e-01, -2.900e-02, -1.239e-02, -5.162e-02, 1.900e-02), r);\n\tr = MulAdd(s3_2, M4(-6.847e-02, -1.020e-01, -7.745e-02, 3.094e-02, -4.354e-02, -6.276e-02, -3.621e-02, -6.242e-02, 5.462e-02, -1.308e-01, -1.210e-01, -2.065e-02, -4.381e-02, -5.895e-02, 8.102e-02, -1.266e-01), r);\n\tr = MulAdd(s3_3, M4(-1.059e-04, -1.497e-01, -1.039e-02, -4.629e-02, 2.626e-02, 1.801e-02, -9.512e-04, 6.084e-02, 4.065e-02, 9.308e-02, -2.085e-02, -2.430e-03, 1.454e-02, -5.680e-03, -1.196e-01, -5.078e-02), r);\n\tr = MulAdd(s3_4, M4(-8.717e-02, -1.156e-01, -4.551e-02, -1.233e-01, -3.711e-02, -9.569e-02, 7.082e-02, -9.574e-02, 3.863e-01, 1.752e-02, 7.915e-02, 4.365e-01, -6.295e-02, -1.045e-02, 4.266e-02, -2.812e-01), r);\n\tr = MulAdd(s3_5, M4(-1.277e-03, -8.856e-02, -1.335e-02, 8.308e-02, -1.264e-01, 8.471e-02, -9.759e-02, -7.361e-02, 1.505e-01, 2.235e-01, 1.617e-01, 1.516e-02, -2.184e-02, 3.152e-02, -2.481e-01, -1.529e-01), r);\n\tr = MulAdd(s3_6, M4(-6.069e-02, 7.997e-02, -2.999e-02, 6.667e-02, -3.571e-02, -8.018e-02, -4.923e-02, -2.775e-02, 2.642e-02, -7.642e-02, -3.110e-02, -8.301e-02, 3.597e-02, -6.190e-02, 5.578e-02, 1.650e-02), r);\n\tr = MulAdd(s3_7, M4(1.950e-03, -5.827e-02, -1.350e-01, -3.964e-02, 2.067e-02, 8.880e-02, -5.618e-02, -9.141e-02, 6.710e-02, 1.227e-02, -1.851e-01, -1.946e-01, 4.703e-02, -4.175e-03, 1.142e-01, -2.030e-01), r);\n\tr = MulAdd(s3_8, M4(-4.808e-02, -8.059e-02, -1.219e-01, -1.497e-01, 5.362e-02, -6.077e-02, -7.402e-02, -9.153e-02, 1.003e-01, -4.803e-03, -7.885e-02, -2.247e-02, 1.434e-02, -4.348e-02, 6.374e-02, -1.095e-01), r);\n\tr = MulAdd(s4_0, M4(8.929e-02, 1.477e-01, 1.770e-01, 1.408e-01, 6.920e-03, 5.607e-02, -1.516e-02, -5.035e-02, 2.399e-02, -4.023e-02, -4.029e-02, -6.642e-02, -2.567e-02, -4.240e-02, -4.215e-02, -3.904e-01), r);\n\tr = MulAdd(s4_1, M4(2.250e-02, -3.173e-03, 1.788e-02, 1.658e-01, 5.531e-02, -4.699e-02, -2.140e-02, -1.022e-01, -1.031e-02, -2.320e-02, 6.078e-02, -1.768e-02, 4.480e-01, -3.266e-01, -6.451e-02, -1.013e-01), r);\n\tr = MulAdd(s4_2, M4(5.465e-02, 8.356e-02, 2.870e-04, -4.076e-02, 6.278e-02, 7.096e-03, -2.026e-02, -2.613e-02, -4.095e-03, -8.923e-02, 1.429e-02, 1.257e-02, -2.308e-02, -4.313e-02, -8.777e-02, 2.147e-02), r);\n\tr = MulAdd(s4_3, M4(1.128e-02, -8.824e-02, 3.743e-02, 1.121e-01, 3.255e-02, 6.373e-03, 3.494e-02, 5.817e-02, -5.255e-02, 6.612e-02, -2.657e-02, 9.935e-02, -5.839e-02, 1.502e-03, 1.674e-02, -2.483e-01), r);\n\tr = MulAdd(s4_4, M4(-3.301e-03, 1.381e-03, 2.348e-01, -7.932e-02, 7.121e-02, 1.894e-02, 5.626e-02, 1.242e-01, 3.424e-02, 2.703e-01, 9.893e-02, 9.129e-02, 3.413e-02, 3.306e-01, -6.402e-02, 1.710e-01), r);\n\tr = MulAdd(s4_5, M4(1.190e-03, -1.362e-01, 6.616e-02, 7.430e-02, -1.908e-02, -7.131e-02, -6.680e-02, -1.412e-02, -1.783e-03, 1.154e-01, -5.414e-02, -1.866e-01, -6.085e-02, -8.559e-02, 1.169e-01, -4.633e-02), r);\n\tr = MulAdd(s4_6, M4(-4.513e-03, 3.699e-02, 9.614e-02, 6.584e-02, -4.287e-02, -9.917e-02, -2.837e-02, -1.147e-01, 5.015e-02, 8.579e-03, 4.115e-02, 9.666e-02, 4.970e-02, 3.432e-02, 1.172e-01, -1.503e-01), r);\n\tr = MulAdd(s4_7, M4(4.660e-02, 5.717e-02, 1.118e-02, -1.337e-02, 1.256e-02, -4.309e-02, 8.529e-02, -4.747e-02, -5.440e-02, -1.774e-02, 1.103e-01, 4.132e-02, -3.581e-02, 9.867e-02, 2.425e-02, -1.120e-02), r);\n\tr = MulAdd(s4_8, M4(5.126e-02, 3.103e-02, 1.489e-01, 8.006e-02, -3.423e-02, -6.998e-02, 6.039e-02, -2.939e-02, -1.505e-02, 7.190e-03, -4.863e-02, -2.403e-02, -6.097e-02, -8.975e-02, -3.179e-02, -8.617e-02), r);\n\tr = MulAdd(s5_0, M4(-8.262e-02, 2.481e-02, 4.836e-03, -4.425e-02, -2.515e-02, 5.051e-02, -6.125e-03, -5.547e-02, 6.078e-02, 5.525e-02, 9.176e-02, 1.572e-02, -1.979e-02, 5.908e-02, 9.396e-02, 5.186e-02), r);\n\tr = MulAdd(s5_1, M4(-4.726e-02, 3.977e-02, -1.014e-01, -1.503e-02, 3.785e-02, -1.439e-02, 1.512e-02, -3.868e-02, 5.295e-02, -8.620e-02, 8.191e-02, 6.278e-02, 1.169e-01, -1.905e-01, 7.085e-02, 1.050e-01), r);\n\tr = MulAdd(s5_2, M4(-2.736e-02, 6.220e-02, -5.548e-02, 6.147e-02, 1.232e-01, 1.163e-02, 1.780e-02, -7.604e-02, 1.381e-01, 6.557e-03, 8.610e-03, 6.522e-03, 2.147e-02, 1.777e-02, 1.541e-02, 1.560e-02), r);\n\tr = MulAdd(s5_3, M4(5.259e-02, -3.546e-02, 6.230e-02, 6.797e-02, 7.732e-02, 8.863e-03, -1.746e-02, -3.139e-02, -5.820e-02, 2.022e-02, -1.225e-01, -3.615e-02, -4.625e-02, -2.697e-02, -2.579e-02, 1.510e-01), r);\n\tr = MulAdd(s5_4, M4(-2.816e-02, -9.628e-02, 7.526e-02, -5.355e-02, -1.576e-01, -2.085e-01, -3.468e-01, -2.840e-02, -1.601e-02, 1.563e-01, 4.990e-02, -7.243e-02, -1.961e-01, 1.467e-01, 7.937e-02, 4.030e-02), r);\n\tr = MulAdd(s5_5, M4(-3.320e-03, -1.204e-01, -5.233e-02, -5.508e-02, 1.663e-01, 1.481e-01, 2.805e-02, -1.490e-01, 1.753e-01, 2.295e-01, 2.995e-01, -5.415e-02, -9.904e-02, -8.550e-02, -1.067e-01, 2.813e-02), r);\n\tr = MulAdd(s5_6, M4(-1.444e-02, 1.265e-02, 3.572e-02, 9.024e-03, -5.852e-02, -7.202e-02, -1.086e-01, -1.721e-01, 3.204e-02, 8.423e-03, 4.847e-02, 3.032e-02, 7.523e-03, 2.191e-02, 8.512e-03, -5.825e-02), r);\n\tr = MulAdd(s5_7, M4(4.656e-02, 4.840e-02, -3.721e-02, -5.674e-02, 3.699e-02, -7.553e-02, -2.514e-02, 3.656e-02, -3.952e-02, 4.498e-03, 1.271e-03, 2.396e-01, -2.891e-02, 3.648e-02, 3.780e-03, 8.656e-03), r);\n\tr = MulAdd(s5_8, M4(5.193e-02, 5.043e-02, 3.167e-02, 1.211e-02, -4.968e-02, -7.751e-02, -5.472e-02, -1.230e-01, -8.041e-02, 7.367e-03, 3.397e-02, -6.051e-02, 1.718e-02, -1.775e-02, -3.377e-02, 2.839e-03), r);\n\tr = MulAdd(s6_0, M4(2.356e-01, 2.417e-01, -7.312e-03, 2.296e-01, 1.123e-02, 2.061e-02, 1.249e-01, 1.465e-01, -8.119e-02, -8.273e-02, 2.396e-02, -5.723e-02, -1.368e-03, -8.216e-02, -7.126e-02, 1.767e-01), r);\n\tr = MulAdd(s6_1, M4(3.064e-01, 1.425e-01, 1.339e-01, 1.613e-01, 5.711e-02, 1.105e-01, 3.318e-02, -1.383e-02, -1.848e-01, 7.377e-02, -1.934e-01, -1.845e-01, 2.550e-02, 9.450e-02, 4.248e-02, 1.391e-02), r);\n\tr = MulAdd(s6_2, M4(2.085e-01, 1.108e-01, 1.701e-01, 2.713e-02, 4.024e-02, 1.521e-02, 7.399e-02, 4.808e-02, -6.747e-02, 5.166e-02, 5.017e-02, 6.361e-02, -2.552e-02, -6.003e-02, 4.130e-04, 5.567e-02), r);\n\tr = MulAdd(s6_3, M4(2.763e-01, 2.114e-01, 4.282e-02, 1.008e-01, 2.514e-02, 6.967e-03, 7.642e-02, 7.630e-02, 2.342e-02, -5.306e-02, 1.487e-02, -1.732e-01, 3.900e-02, -1.407e-01, -1.259e-01, 1.265e-01), r);\n\tr = MulAdd(s6_4, M4(1.623e-01, -1.235e-02, 2.044e-01, 5.010e-02, 2.684e-01, -5.874e-02, 4.729e-02, -2.150e-03, -8.674e-02, -2.515e-03, 1.375e-02, 1.261e-01, 1.919e-01, -1.287e-01, 2.525e-01, 4.040e-01), r);\n\tr = MulAdd(s6_5, M4(1.842e-01, 1.762e-01, 1.343e-01, 1.453e-01, -4.476e-02, -1.114e-02, -2.291e-02, 2.730e-02, -1.311e-01, -1.116e-01, -1.276e-01, 1.305e-01, 6.493e-02, 8.502e-02, 9.360e-02, -1.174e-02), r);\n\tr = MulAdd(s6_6, M4(1.881e-01, 9.549e-02, -2.598e-02, 1.182e-01, 2.119e-03, 4.513e-02, 3.322e-02, -5.448e-02, -6.380e-03, -1.790e-02, -1.076e-02, -7.405e-02, -4.231e-02, 1.375e-02, -2.372e-02, 9.198e-02), r);\n\tr = MulAdd(s6_7, M4(8.190e-02, -4.095e-02, 3.436e-02, 2.693e-01, 9.724e-03, -8.337e-02, 4.002e-04, -1.853e-01, -4.698e-02, -4.704e-03, -1.762e-01, 1.410e-02, 5.535e-02, -4.814e-02, -2.937e-02, 1.699e-01), r);\n\tr = MulAdd(s6_8, M4(7.594e-02, 2.500e-02, 2.054e-01, 1.359e-01, -6.950e-03, -3.872e-02, -8.553e-02, 3.117e-02, 8.458e-02, 1.037e-01, 9.023e-03, 6.317e-02, -5.330e-02, -1.181e-02, -1.154e-02, 1.801e-02), r);\n\tr = MulAdd(s7_0, M4(3.500e-02, -1.354e-02, -6.275e-02, 2.530e-02, -1.126e-01, -2.442e-02, 6.522e-02, -4.946e-02, -3.849e-02, -1.052e-03, 7.946e-02, 8.609e-02, 8.536e-02, -8.888e-02, -1.648e-02, -9.296e-03), r);\n\tr = MulAdd(s7_1, M4(1.536e-02, -1.095e-01, -9.734e-03, 1.057e-01, -3.581e-02, -1.352e-01, -6.353e-02, 6.288e-02, 7.990e-02, -1.541e-02, -2.616e-02, -2.092e-02, -1.386e-01, 3.706e-02, 9.455e-02, -8.811e-02), r);\n\tr = MulAdd(s7_2, M4(-1.917e-02, 3.680e-03, -9.103e-02, 6.932e-03, 1.862e-02, 5.211e-02, 4.197e-02, -2.273e-02, -4.925e-03, 5.122e-02, 6.613e-02, 4.453e-02, -1.724e-02, -3.789e-02, -5.483e-03, -6.117e-02), r);\n\tr = MulAdd(s7_3, M4(6.494e-02, 5.085e-02, -3.084e-02, -4.360e-02, -3.047e-04, 1.334e-01, 1.050e-01, -5.439e-02, 3.051e-02, 5.960e-02, 8.870e-02, -2.083e-02, 6.208e-02, -2.183e-02, -5.802e-02, 6.238e-02), r);\n\tr = MulAdd(s7_4, M4(7.910e-02, 3.215e-02, -5.218e-02, -2.821e-02, 1.271e-01, -2.276e-01, -1.860e-01, -1.064e-01, 2.585e-02, 3.594e-02, 2.412e-01, 2.176e-01, 1.651e-01, -1.164e-01, 4.035e-01, -8.403e-02), r);\n\tr = MulAdd(s7_5, M4(3.154e-02, -6.521e-02, -3.050e-02, 6.594e-02, 1.437e-01, 1.430e-02, -1.211e-01, -3.589e-02, 6.985e-02, 6.226e-02, 3.090e-02, 1.198e-01, -6.754e-03, -1.157e-02, -1.102e-01, -1.356e-01), r);\n\tr = MulAdd(s7_6, M4(2.194e-02, -1.653e-02, -4.073e-02, -1.260e-02, 3.354e-02, 3.995e-02, -3.034e-02, -9.874e-02, -2.932e-02, 2.086e-02, -1.687e-02, 5.243e-02, 2.606e-02, 2.746e-02, -2.158e-02, -3.860e-02), r);\n\tr = MulAdd(s7_7, M4(2.909e-02, -1.935e-02, -9.481e-02, -4.910e-02, -9.199e-02, 1.076e-02, 9.528e-03, 1.829e-01, 1.451e-03, 2.201e-03, -2.104e-02, 1.605e-01, -8.880e-02, -1.363e-01, -9.424e-02, -2.646e-02), r);\n\tr = MulAdd(s7_8, M4(-1.473e-02, -5.392e-02, -7.442e-02, -2.511e-02, -1.129e-02, -6.392e-02, 1.128e-01, 6.659e-02, -1.281e-02, -1.358e-02, -2.367e-02, 7.697e-02, 2.667e-03, -4.043e-02, -8.640e-02, -6.715e-02), r);\n\treturn r;\n}\n\nvoid Pass7(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 8\n//!DESC conv7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.150e-02, 5.513e-03, -4.366e-02, 3.548e-03 };\n\tr = MulAdd(s0_0, M4(2.429e-02, -2.332e-02, 4.314e-02, 1.064e-02, 2.172e-03, -9.378e-03, -6.456e-02, 5.519e-02, -1.450e-01, 3.668e-02, 5.025e-02, 1.031e-01, 1.049e-02, 1.149e-02, -3.782e-02, -6.485e-02), r);\n\tr = MulAdd(s0_1, M4(-1.216e-02, 1.289e-01, 4.855e-03, -5.725e-03, 5.489e-02, -1.701e-02, 9.362e-04, 2.121e-02, -4.344e-02, -1.216e-01, 7.830e-02, 1.137e-01, 2.323e-02, -2.009e-02, -4.112e-02, -6.864e-02), r);\n\tr = MulAdd(s0_2, M4(-4.899e-02, -3.241e-02, -3.536e-03, 5.684e-02, -2.514e-02, -3.484e-02, -3.530e-02, 9.876e-03, 5.883e-02, 2.769e-02, 4.048e-02, -3.935e-02, -2.423e-02, -9.510e-03, 3.234e-02, 1.199e-02), r);\n\tr = MulAdd(s0_3, M4(-1.349e-01, -1.353e-01, 6.827e-03, -5.336e-02, -6.016e-02, -1.109e-02, 9.085e-02, -5.200e-02, -1.802e-01, -2.713e-02, 4.700e-02, 4.469e-02, -7.109e-03, -5.905e-02, -7.286e-02, -1.176e-01), r);\n\tr = MulAdd(s0_4, M4(-1.088e-01, 2.120e-01, -9.531e-02, -7.526e-02, -3.024e-02, -8.052e-02, 7.018e-02, -1.512e-01, -8.795e-02, -9.058e-02, 1.183e-02, 8.818e-02, -2.706e-01, 5.783e-02, -6.422e-02, -7.333e-02), r);\n\tr = MulAdd(s0_5, M4(-1.192e-02, -8.800e-02, 2.284e-02, 4.938e-02, 2.447e-02, 1.127e-01, 2.742e-02, -1.041e-01, -6.344e-03, 5.594e-03, -1.393e-01, -1.855e-02, -1.230e-01, 2.002e-02, -9.026e-02, -7.525e-04), r);\n\tr = MulAdd(s0_6, M4(-2.280e-02, -7.241e-02, 2.928e-02, 1.022e-02, -5.593e-02, 2.254e-02, 6.370e-02, 1.904e-02, -8.088e-02, -4.722e-02, 5.025e-02, 6.547e-02, 1.310e-01, -4.054e-02, 1.521e-02, 7.518e-04), r);\n\tr = MulAdd(s0_7, M4(1.161e-01, -6.198e-03, 8.148e-02, 1.159e-02, 1.194e-01, -4.006e-04, 7.621e-02, 6.951e-03, 2.882e-03, -2.765e-02, 4.471e-02, 8.374e-02, -1.463e-01, 2.266e-01, -2.111e-01, 8.026e-03), r);\n\tr = MulAdd(s0_8, M4(-5.146e-02, -5.043e-02, -4.174e-04, 8.790e-03, 7.446e-02, -3.545e-02, 1.583e-02, 9.433e-03, -5.614e-02, -2.652e-02, 1.538e-02, 6.623e-02, -2.130e-02, -1.283e-01, -1.310e-02, -3.202e-02), r);\n\tr = MulAdd(s1_0, M4(-6.381e-02, 3.036e-02, 5.632e-02, 6.065e-03, -7.098e-02, -4.316e-02, 3.370e-02, -9.274e-02, 1.666e-03, -3.818e-03, 3.570e-02, 2.863e-02, -3.719e-03, 1.548e-02, 8.114e-04, -2.087e-02), r);\n\tr = MulAdd(s1_1, M4(-1.125e-01, 2.095e-01, -5.373e-03, 5.728e-02, -1.684e-02, 5.683e-02, 6.455e-02, 8.118e-02, -2.147e-02, -6.171e-02, 5.331e-02, -2.312e-02, 5.723e-02, -7.003e-02, -5.061e-02, -6.937e-02), r);\n\tr = MulAdd(s1_2, M4(-3.802e-02, -1.043e-02, 4.402e-02, 5.884e-03, -6.816e-02, 2.554e-02, -6.462e-02, 3.692e-02, 2.855e-02, -7.795e-02, -1.158e-01, 9.489e-03, -3.566e-02, -3.169e-02, 1.226e-02, -1.260e-02), r);\n\tr = MulAdd(s1_3, M4(-7.747e-02, -1.154e-03, -1.686e-01, -6.604e-02, -6.979e-02, 1.844e-02, -1.876e-01, 1.099e-01, -1.142e-01, -2.556e-02, 4.666e-02, 5.026e-02, -1.906e-02, -4.265e-02, 4.301e-02, -8.881e-02), r);\n\tr = MulAdd(s1_4, M4(1.986e-03, -3.458e-01, 3.094e-01, -1.274e-01, 2.375e-01, -7.486e-02, -1.912e-01, 4.443e-02, 6.306e-02, 8.115e-02, -5.890e-02, 2.617e-03, -3.320e-02, -8.362e-02, -1.985e-03, -1.438e-01), r);\n\tr = MulAdd(s1_5, M4(2.581e-02, 1.221e-02, 2.112e-02, 5.072e-02, -6.900e-02, 4.629e-02, -5.685e-02, 7.048e-02, -4.532e-02, -3.919e-02, 9.927e-02, -3.342e-02, -3.581e-02, 5.119e-02, -1.537e-01, 1.891e-02), r);\n\tr = MulAdd(s1_6, M4(5.745e-03, 4.427e-02, 5.853e-02, 3.445e-02, 1.085e-01, -1.109e-01, 5.323e-02, 1.128e-01, -5.432e-02, 7.260e-02, -1.084e-01, 8.378e-02, 8.080e-02, -6.499e-02, 1.355e-01, 4.337e-02), r);\n\tr = MulAdd(s1_7, M4(8.341e-02, 3.424e-02, 3.290e-02, -1.363e-02, 1.580e-01, 3.006e-01, 2.149e-03, 2.191e-01, 8.049e-02, 1.118e-02, 8.779e-03, 6.471e-02, -1.069e-01, -2.980e-02, -4.201e-02, 1.076e-01), r);\n\tr = MulAdd(s1_8, M4(-6.640e-02, -2.167e-03, -7.802e-02, -6.291e-04, -5.879e-02, -1.432e-01, -1.221e-02, 4.027e-02, 1.564e-02, 1.884e-02, -3.517e-02, 2.630e-02, 7.528e-03, -1.925e-02, 4.156e-02, -1.512e-02), r);\n\tr = MulAdd(s2_0, M4(-5.786e-02, -3.811e-02, 7.465e-02, -1.153e-01, 9.855e-03, 1.133e-03, -9.657e-02, -5.820e-02, -4.431e-02, -3.342e-02, 3.839e-03, 1.346e-02, 3.735e-03, -6.809e-03, -1.971e-02, -7.439e-02), r);\n\tr = MulAdd(s2_1, M4(-2.957e-02, 2.258e-02, 9.420e-02, -4.162e-02, -2.241e-02, 3.396e-02, -9.463e-03, 6.093e-02, 2.241e-02, 5.466e-03, -1.272e-02, 9.590e-02, -2.979e-02, 1.120e-01, 2.448e-02, -3.680e-02), r);\n\tr = MulAdd(s2_2, M4(6.455e-04, 3.673e-02, 7.003e-02, -6.360e-03, 3.664e-02, -6.810e-03, 2.913e-02, 8.731e-03, 9.219e-03, 7.756e-02, -1.472e-01, 1.450e-02, -3.781e-03, 3.535e-03, -6.173e-02, 3.913e-02), r);\n\tr = MulAdd(s2_3, M4(4.824e-03, 3.512e-02, -1.684e-01, -4.602e-02, 4.232e-02, -2.799e-02, 9.374e-02, 2.816e-02, 7.564e-02, 1.042e-01, -8.223e-02, 2.283e-02, -7.351e-02, 3.973e-02, -1.391e-01, 2.565e-03), r);\n\tr = MulAdd(s2_4, M4(-2.335e-01, 2.684e-02, -3.716e-01, -1.481e-02, 5.490e-02, 1.224e-01, -2.276e-02, 6.176e-02, 3.403e-02, 1.614e-01, 1.994e-02, 2.240e-01, -4.081e-02, 1.772e-02, 5.466e-02, 9.059e-02), r);\n\tr = MulAdd(s2_5, M4(5.616e-02, -2.055e-02, -1.607e-01, 2.489e-02, -7.941e-02, 1.590e-01, -2.552e-02, 2.637e-02, 3.266e-03, -1.990e-02, 1.649e-01, 1.237e-01, 1.191e-01, -6.178e-02, 2.103e-01, -2.459e-02), r);\n\tr = MulAdd(s2_6, M4(-4.669e-02, -3.467e-02, 2.145e-01, 6.600e-03, 9.879e-03, 2.595e-02, 1.483e-02, -3.995e-02, 1.454e-03, -4.725e-03, 4.796e-02, 6.020e-02, 5.114e-02, 7.967e-03, -8.423e-02, -1.184e-02), r);\n\tr = MulAdd(s2_7, M4(8.979e-02, 2.301e-01, 2.273e-01, -2.155e-02, 2.495e-03, -3.534e-02, 5.817e-02, -4.511e-03, -1.832e-02, 2.070e-01, 7.383e-02, 6.175e-02, 4.585e-02, -6.402e-03, 1.827e-02, 1.981e-02), r);\n\tr = MulAdd(s2_8, M4(1.809e-02, -7.041e-02, 3.777e-03, -9.913e-04, -8.198e-04, 6.589e-02, -9.252e-02, 4.381e-02, -2.878e-02, -3.744e-02, 1.090e-02, -6.804e-02, 1.619e-02, 1.085e-01, -1.391e-02, -4.922e-02), r);\n\tr = MulAdd(s3_0, M4(-3.984e-02, 5.420e-03, -4.550e-02, -1.233e-01, 4.322e-02, -5.213e-02, 1.335e-02, -5.276e-03, -1.693e-02, -7.303e-03, 6.252e-03, -4.690e-02, 3.173e-02, 3.850e-02, -8.569e-02, 5.811e-02), r);\n\tr = MulAdd(s3_1, M4(2.930e-02, 2.401e-02, -8.850e-02, -1.446e-01, -5.032e-02, 1.690e-01, 7.153e-02, 6.679e-02, -9.158e-02, 7.794e-02, -3.869e-02, 3.164e-02, -7.438e-02, 2.832e-02, 9.705e-02, -6.236e-02), r);\n\tr = MulAdd(s3_2, M4(3.107e-02, 4.798e-02, 2.440e-02, -5.775e-02, 1.245e-02, -1.367e-01, 1.987e-01, 5.487e-02, -7.530e-02, -2.864e-02, -6.313e-02, 2.412e-02, -4.335e-02, -1.480e-02, 3.736e-02, 7.179e-02), r);\n\tr = MulAdd(s3_3, M4(1.861e-02, 3.280e-02, -1.080e-01, -1.617e-02, 6.373e-02, -7.300e-02, 1.517e-03, -1.489e-02, 2.597e-02, -7.612e-02, 5.984e-02, -4.236e-02, -6.426e-03, -7.361e-02, 5.293e-02, -2.767e-02), r);\n\tr = MulAdd(s3_4, M4(-1.651e-01, -9.867e-02, -5.652e-02, -5.221e-02, 8.410e-02, 1.038e-01, -7.153e-02, -2.243e-02, -2.833e-02, -4.937e-02, 2.125e-01, -5.315e-02, 5.610e-02, -1.936e-01, 4.265e-01, 2.646e-01), r);\n\tr = MulAdd(s3_5, M4(-5.804e-02, 2.708e-02, 3.219e-02, 6.301e-02, -9.947e-02, 6.365e-02, -1.993e-01, -2.109e-02, 7.368e-03, 8.566e-02, -1.474e-02, 4.023e-02, 6.955e-02, -3.642e-02, 7.850e-02, 1.153e-02), r);\n\tr = MulAdd(s3_6, M4(2.621e-02, 1.533e-02, 8.712e-02, -6.340e-02, 1.455e-03, -5.999e-03, 2.176e-01, 4.310e-02, -2.057e-02, -5.172e-02, 7.316e-02, -7.311e-02, -3.093e-02, 6.763e-02, -1.499e-01, 1.656e-02), r);\n\tr = MulAdd(s3_7, M4(6.913e-02, 4.051e-02, 6.953e-02, -6.580e-02, 7.922e-03, 4.726e-02, 1.577e-01, 2.761e-02, 4.748e-02, -6.473e-02, 7.108e-02, -1.199e-02, -1.576e-02, 4.525e-02, 9.625e-03, 6.197e-02), r);\n\tr = MulAdd(s3_8, M4(2.181e-02, 5.856e-02, -2.680e-02, -4.358e-03, 2.145e-02, -5.667e-02, 1.037e-01, 7.757e-03, 2.428e-02, -3.369e-02, 2.964e-02, -4.941e-02, 3.692e-02, 7.243e-02, 3.112e-02, -2.451e-02), r);\n\tr = MulAdd(s4_0, M4(5.122e-03, -1.978e-03, 7.659e-02, 8.961e-02, 3.828e-02, -4.181e-02, -7.118e-02, 1.168e-02, 7.047e-02, -3.212e-03, 1.733e-03, 5.195e-02, 4.263e-02, 3.222e-02, -7.399e-02, 1.099e-02), r);\n\tr = MulAdd(s4_1, M4(-1.358e-03, -7.553e-02, 1.239e-01, 6.855e-02, -8.082e-02, 2.287e-02, 1.084e-01, -1.193e-01, -7.322e-02, 1.251e-01, 1.231e-02, -1.121e-02, -9.672e-02, 2.728e-02, -5.787e-02, 3.771e-02), r);\n\tr = MulAdd(s4_2, M4(1.228e-01, -2.115e-02, -5.478e-02, -9.391e-02, -7.383e-02, -1.139e-01, -2.159e-02, 1.082e-01, -5.576e-02, -8.820e-02, 8.714e-02, -7.996e-03, -1.793e-02, 4.947e-03, -4.892e-03, 9.143e-02), r);\n\tr = MulAdd(s4_3, M4(4.650e-02, -1.056e-01, -1.316e-01, -9.701e-03, 8.937e-02, -7.974e-02, -1.177e-02, 7.090e-02, -2.849e-02, -2.004e-02, 4.543e-02, -4.452e-02, 7.714e-02, -7.697e-02, 1.959e-02, 7.751e-02), r);\n\tr = MulAdd(s4_4, M4(-1.665e-01, 1.863e-01, -8.215e-02, -5.029e-02, -1.530e-02, 2.796e-01, 1.253e-01, -1.444e-01, -1.062e-01, 2.850e-02, -6.918e-03, -7.752e-02, -8.895e-02, -4.825e-03, 7.103e-02, 7.231e-02), r);\n\tr = MulAdd(s4_5, M4(1.011e-01, 8.921e-02, -8.754e-02, -8.981e-02, -3.880e-02, -2.067e-01, 8.463e-02, -8.275e-02, 7.571e-02, -1.195e-02, 1.401e-02, -8.276e-02, 2.977e-02, 7.257e-02, 1.761e-01, 9.600e-02), r);\n\tr = MulAdd(s4_6, M4(3.094e-02, -6.186e-03, 7.496e-02, 2.487e-02, -3.221e-02, -6.985e-03, 1.212e-01, -3.637e-02, -1.775e-02, 1.375e-02, -3.809e-02, -2.806e-02, -1.726e-03, 4.752e-02, -9.841e-03, -2.093e-02), r);\n\tr = MulAdd(s4_7, M4(-6.665e-02, 8.968e-02, -1.947e-03, 7.916e-03, 1.457e-01, 9.335e-02, -1.535e-01, 5.746e-02, -3.287e-02, -1.573e-02, 4.369e-02, -4.585e-03, 1.116e-01, 8.898e-03, -6.204e-02, 6.182e-02), r);\n\tr = MulAdd(s4_8, M4(5.083e-02, -3.205e-02, 4.880e-02, -4.987e-04, -2.765e-02, -7.642e-02, 7.199e-02, -1.001e-02, -4.057e-02, 2.807e-02, -1.059e-02, 3.827e-03, -6.015e-02, -4.428e-02, -1.895e-02, -2.997e-02), r);\n\tr = MulAdd(s5_0, M4(1.595e-02, -4.492e-02, -6.387e-02, -7.062e-02, 8.614e-03, -1.412e-02, 5.415e-02, -3.994e-02, 1.212e-02, 2.353e-02, -5.643e-02, -9.880e-02, -9.901e-02, 3.936e-02, 3.183e-02, 1.666e-02), r);\n\tr = MulAdd(s5_1, M4(2.284e-02, 9.285e-02, -7.087e-02, 1.962e-02, 1.836e-02, -9.249e-02, 7.274e-02, -3.925e-02, -1.148e-01, -3.381e-02, -1.147e-01, 1.551e-02, -1.443e-01, -1.351e-02, 2.367e-02, 7.472e-02), r);\n\tr = MulAdd(s5_2, M4(-6.567e-02, -6.534e-04, -2.999e-02, 3.788e-02, 5.928e-02, 2.940e-02, -3.614e-02, -8.431e-02, 6.493e-03, 9.792e-02, 8.166e-02, 8.121e-03, 3.733e-03, -6.000e-02, 1.023e-02, -2.708e-02), r);\n\tr = MulAdd(s5_3, M4(4.225e-02, -3.035e-02, -3.136e-02, -7.348e-02, -1.554e-02, 3.912e-02, -2.285e-01, -4.692e-02, 1.047e-01, -8.994e-02, 1.769e-01, 1.248e-01, -6.176e-02, 1.573e-02, -8.333e-02, 3.275e-02), r);\n\tr = MulAdd(s5_4, M4(7.160e-02, 2.975e-01, 1.284e-01, -4.519e-02, 1.370e-01, -7.781e-02, -8.876e-02, 1.955e-02, -1.218e-01, 3.048e-01, 1.675e-01, 1.339e-01, -1.556e-01, 5.754e-02, 3.948e-02, 8.600e-02), r);\n\tr = MulAdd(s5_5, M4(-2.356e-01, 7.179e-02, -8.412e-02, 1.549e-02, 8.241e-02, -2.647e-02, 7.431e-02, -4.565e-02, 1.053e-01, -1.426e-01, 1.563e-01, 8.870e-02, 1.115e-01, -2.496e-02, 3.625e-02, -9.573e-03), r);\n\tr = MulAdd(s5_6, M4(2.063e-02, -1.548e-02, 9.447e-02, -9.163e-03, 4.279e-03, 7.593e-03, 4.727e-02, -1.522e-02, -3.840e-02, 8.830e-02, -7.936e-02, 3.788e-03, -9.664e-02, 6.229e-02, -1.123e-02, -2.040e-02), r);\n\tr = MulAdd(s5_7, M4(4.598e-02, 1.724e-01, -9.667e-02, -3.743e-02, 7.593e-02, 8.019e-03, 7.071e-02, 2.795e-02, -1.156e-01, -3.966e-02, -1.742e-01, -7.907e-02, -2.258e-03, -8.263e-02, 8.969e-02, 9.902e-02), r);\n\tr = MulAdd(s5_8, M4(6.340e-02, 5.018e-02, -9.251e-02, 1.755e-02, 2.021e-02, -7.445e-02, -7.248e-03, 3.071e-03, -4.418e-02, 1.510e-01, -5.434e-02, -4.775e-02, 8.281e-03, -7.794e-02, 1.005e-01, 2.240e-02), r);\n\tr = MulAdd(s6_0, M4(-8.541e-02, -7.668e-03, 8.428e-02, -5.870e-02, -2.830e-03, 2.378e-02, 3.209e-02, 4.221e-02, -1.416e-02, -7.413e-02, -2.234e-03, 9.183e-03, 4.123e-02, 3.226e-03, 5.348e-02, 7.047e-03), r);\n\tr = MulAdd(s6_1, M4(4.549e-02, -2.740e-02, 4.882e-02, 1.613e-02, -2.580e-02, 1.114e-02, 6.591e-02, -1.712e-02, 4.918e-02, 1.411e-01, -6.373e-03, 4.880e-02, -1.052e-01, 7.112e-02, 1.284e-01, -2.216e-02), r);\n\tr = MulAdd(s6_2, M4(-5.023e-02, 6.376e-03, 1.275e-02, 7.544e-02, -2.007e-02, -2.550e-02, 7.617e-03, 1.943e-03, -3.676e-02, -2.099e-02, -3.072e-02, 6.026e-02, -3.776e-02, -3.612e-02, 1.224e-02, -3.338e-02), r);\n\tr = MulAdd(s6_3, M4(-6.905e-02, -9.304e-02, -1.556e-01, -4.700e-02, 7.271e-03, 3.053e-03, -1.253e-01, 3.238e-02, 7.153e-02, 1.051e-02, -3.062e-02, 2.274e-02, -8.820e-02, 7.336e-03, -1.870e-01, -3.185e-02), r);\n\tr = MulAdd(s6_4, M4(2.769e-01, -5.243e-02, -1.432e-01, 8.889e-02, -2.395e-03, -1.144e-01, 1.223e-01, -4.498e-02, -1.315e-01, 1.572e-01, -1.973e-01, 1.578e-01, 3.022e-01, 5.166e-02, -1.834e-01, 1.442e-03), r);\n\tr = MulAdd(s6_5, M4(-4.584e-02, -1.975e-03, -1.124e-02, 1.870e-02, -3.355e-02, -6.602e-03, 4.581e-02, -2.536e-02, -1.210e-01, 1.289e-02, -1.664e-01, 4.967e-02, 1.213e-01, 6.296e-02, -1.414e-01, -5.444e-04), r);\n\tr = MulAdd(s6_6, M4(-1.273e-02, -5.103e-02, 7.597e-02, -5.106e-03, 1.498e-03, -6.909e-02, -3.966e-02, -4.536e-03, -1.409e-02, 3.820e-02, 4.236e-03, 2.091e-02, 8.105e-03, -8.909e-03, -4.405e-02, 5.760e-02), r);\n\tr = MulAdd(s6_7, M4(-8.759e-02, -8.420e-02, -1.538e-01, 1.251e-01, 8.604e-02, 8.704e-02, 2.454e-02, -5.437e-02, 1.268e-01, 1.532e-02, 4.255e-02, 4.514e-02, -7.425e-02, 5.124e-02, -1.197e-02, 1.105e-02), r);\n\tr = MulAdd(s6_8, M4(-9.679e-02, -3.635e-02, -1.599e-01, 2.217e-02, 1.157e-02, 7.903e-02, -1.282e-02, 2.517e-02, 3.072e-03, 1.212e-02, -5.068e-02, 1.219e-02, -5.048e-02, -4.789e-02, 6.014e-02, -1.834e-02), r);\n\tr = MulAdd(s7_0, M4(-7.395e-02, 4.417e-02, -7.326e-02, 1.657e-04, -8.550e-02, 5.602e-03, -2.309e-02, 1.407e-02, 2.018e-02, -4.896e-02, 5.191e-02, -1.649e-02, 1.707e-02, -9.629e-03, 1.198e-01, 5.186e-02), r);\n\tr = MulAdd(s7_1, M4(9.423e-02, -3.370e-02, -5.891e-02, -2.028e-03, -7.932e-02, -3.480e-02, 4.558e-02, 8.408e-02, 7.433e-02, 2.920e-02, -1.659e-02, -4.810e-03, -1.731e-01, 6.637e-03, 1.876e-01, -3.583e-02), r);\n\tr = MulAdd(s7_2, M4(-3.342e-02, 5.117e-02, -6.354e-02, -2.572e-02, -8.278e-02, 4.129e-02, 3.478e-02, 5.152e-02, 1.427e-02, -4.283e-02, 3.041e-02, -3.038e-02, -5.652e-02, -1.183e-01, 3.366e-02, 4.271e-02), r);\n\tr = MulAdd(s7_3, M4(-1.862e-01, 6.683e-02, -8.013e-02, -1.807e-01, -6.053e-02, -1.974e-02, -1.750e-01, -2.887e-02, -3.272e-03, -6.210e-02, 2.414e-02, -1.185e-02, -6.046e-02, -6.312e-02, -5.798e-02, -7.354e-03), r);\n\tr = MulAdd(s7_4, M4(-1.143e-01, -9.726e-03, -8.392e-02, 2.117e-01, -5.687e-02, -1.317e-01, 8.600e-02, -1.780e-03, -2.099e-02, 8.315e-02, -2.715e-02, 5.463e-02, 1.539e-01, 1.487e-01, -2.683e-01, 5.775e-02), r);\n\tr = MulAdd(s7_5, M4(-1.194e-01, -3.820e-02, 4.998e-02, -4.698e-02, -9.662e-02, 5.332e-02, 6.678e-03, 1.984e-02, -5.187e-02, 3.933e-02, -2.790e-02, 2.727e-02, -1.750e-02, -5.128e-02, 4.539e-02, 6.119e-02), r);\n\tr = MulAdd(s7_6, M4(8.464e-02, -5.824e-02, 6.962e-02, -2.679e-02, 3.461e-03, -1.479e-02, -4.726e-02, 7.719e-02, 3.804e-02, -1.091e-02, 1.558e-01, 8.211e-03, -3.342e-02, -5.296e-02, -5.517e-02, 3.337e-02), r);\n\tr = MulAdd(s7_7, M4(3.936e-02, -9.005e-02, -2.283e-01, 4.386e-02, 2.988e-02, -1.306e-01, 3.540e-02, -1.752e-02, 6.241e-02, -8.067e-03, 5.707e-02, 2.101e-02, -2.648e-02, -6.828e-02, 6.354e-02, 4.999e-02), r);\n\tr = MulAdd(s7_8, M4(1.137e-01, 1.752e-02, -1.071e-01, 1.907e-02, -6.962e-02, 2.038e-02, -8.363e-02, 5.959e-02, 5.774e-02, 3.732e-03, 1.098e-01, -3.748e-03, -1.016e-01, -4.212e-02, 8.611e-02, -2.438e-03), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.020e-02, -4.553e-03, -2.459e-02, 1.937e-02 };\n\tr = MulAdd(s0_0, M4(7.776e-02, -8.490e-02, -2.067e-02, 5.440e-02, 1.813e-02, 1.135e-01, 2.268e-02, 3.435e-02, -4.555e-02, -1.398e-01, -8.772e-02, -3.666e-02, -7.805e-02, 5.617e-02, -8.735e-04, -8.572e-04), r);\n\tr = MulAdd(s0_1, M4(-3.737e-02, -1.494e-01, -3.927e-04, 3.512e-02, -1.903e-02, 3.908e-02, 2.908e-02, 9.508e-02, -1.152e-02, -1.174e-01, -1.210e-02, -8.811e-02, 1.220e-02, 1.813e-01, 5.844e-03, -1.913e-03), r);\n\tr = MulAdd(s0_2, M4(3.612e-02, -7.414e-02, -2.258e-02, 4.371e-02, 1.355e-02, -1.887e-02, -3.716e-03, 2.872e-02, -5.748e-02, -3.006e-02, 2.186e-02, 9.390e-02, 5.408e-04, 7.620e-02, 2.978e-02, -4.244e-02), r);\n\tr = MulAdd(s0_3, M4(4.609e-02, 4.968e-02, -8.155e-02, -8.411e-02, 6.703e-02, -1.381e-01, -6.787e-02, 1.911e-02, -4.370e-02, 5.156e-03, -2.329e-02, -1.051e-01, 3.994e-02, -2.949e-02, -3.222e-02, -7.972e-02), r);\n\tr = MulAdd(s0_4, M4(1.459e-01, 1.109e-01, -5.734e-02, 1.614e-01, -1.681e-01, 3.539e-03, -9.288e-02, -1.257e-01, -1.014e-01, 5.845e-02, -2.211e-01, -1.245e-02, 1.704e-01, -1.163e-01, -1.202e-01, -1.136e-01), r);\n\tr = MulAdd(s0_5, M4(-5.593e-02, 8.014e-02, 4.557e-02, 1.334e-02, 5.387e-02, -2.346e-02, 4.065e-02, -3.965e-02, -3.307e-02, 1.917e-02, 4.113e-02, -3.794e-02, -4.636e-02, -6.311e-02, -6.138e-02, 1.189e-01), r);\n\tr = MulAdd(s0_6, M4(-2.809e-02, 2.056e-02, 3.268e-02, -1.146e-01, 1.179e-01, 9.341e-02, -6.772e-02, -1.389e-01, -1.195e-01, 8.743e-02, 1.178e-01, -9.008e-02, -7.854e-02, 5.421e-02, -3.389e-02, 3.070e-02), r);\n\tr = MulAdd(s0_7, M4(-6.888e-02, -3.600e-02, 9.016e-02, -3.882e-02, -1.024e-01, -4.963e-02, 6.431e-02, -2.895e-02, 6.086e-02, -1.285e-01, 1.493e-01, 9.648e-02, 2.547e-01, 1.457e-01, -1.138e-01, 5.216e-02), r);\n\tr = MulAdd(s0_8, M4(1.205e-02, -1.702e-02, 5.149e-02, 7.429e-03, 8.371e-02, 4.814e-03, 2.502e-02, -9.301e-02, 3.953e-02, 2.052e-02, -1.253e-03, -1.018e-03, -1.161e-01, 1.265e-02, 4.431e-02, -8.109e-02), r);\n\tr = MulAdd(s1_0, M4(1.480e-01, -1.260e-01, 4.616e-02, 4.163e-02, 4.978e-03, 1.068e-02, -1.285e-02, 2.300e-02, -1.355e-03, -2.255e-02, -6.099e-03, 5.602e-02, 1.958e-02, 4.921e-03, -2.415e-02, 5.545e-03), r);\n\tr = MulAdd(s1_1, M4(-1.063e-01, 4.527e-02, -4.872e-02, 7.474e-02, 5.204e-02, 2.735e-02, -1.533e-02, -1.948e-02, -1.332e-01, -1.691e-02, -1.712e-03, -6.606e-02, -2.148e-02, -6.268e-02, -4.682e-02, -1.285e-02), r);\n\tr = MulAdd(s1_2, M4(-4.936e-02, 8.319e-03, 2.232e-02, -4.762e-02, -5.726e-03, -1.410e-02, 3.006e-02, -5.014e-03, 2.384e-02, -1.393e-02, 1.334e-02, 1.541e-02, 2.470e-02, -1.395e-02, 1.095e-02, -3.093e-02), r);\n\tr = MulAdd(s1_3, M4(9.590e-02, 7.083e-02, -1.208e-01, -4.706e-02, -1.534e-01, -5.825e-03, 2.298e-02, -1.212e-01, 6.187e-03, -4.588e-03, -8.587e-02, -3.169e-03, -1.830e-02, 1.651e-02, -1.949e-02, -1.584e-02), r);\n\tr = MulAdd(s1_4, M4(-2.469e-01, 4.538e-02, -1.953e-01, -1.554e-01, -7.490e-02, -3.285e-01, 1.109e-01, -7.588e-03, 1.271e-01, 2.494e-03, 6.129e-02, 5.532e-02, -4.167e-02, 2.438e-01, -2.073e-01, -2.021e-01), r);\n\tr = MulAdd(s1_5, M4(1.644e-02, 1.013e-02, 4.682e-02, 4.437e-02, 7.156e-02, -3.308e-02, -3.563e-02, 9.885e-02, -4.479e-02, 1.694e-02, -1.865e-02, -8.136e-03, 2.330e-02, 1.699e-02, -1.056e-01, 1.087e-01), r);\n\tr = MulAdd(s1_6, M4(-6.609e-02, 2.807e-02, 3.110e-02, -8.848e-02, 2.765e-02, 8.620e-02, 3.319e-02, -5.906e-02, 8.444e-02, 2.822e-02, 1.107e-02, -3.552e-02, -9.031e-02, 1.956e-02, -5.127e-02, -5.593e-03), r);\n\tr = MulAdd(s1_7, M4(1.399e-01, -4.111e-02, 2.611e-02, 4.028e-02, -1.003e-02, 1.235e-01, -1.821e-02, -1.066e-02, 3.003e-02, -9.736e-03, 1.179e-01, -3.768e-02, 4.234e-02, 5.035e-02, -2.162e-01, -4.588e-02), r);\n\tr = MulAdd(s1_8, M4(1.795e-02, -3.291e-02, 6.307e-03, 5.110e-02, -1.168e-01, 7.285e-03, -6.830e-02, 3.189e-02, 6.169e-02, 7.242e-03, 2.605e-02, -2.164e-02, -1.964e-02, -3.577e-02, -4.418e-02, -3.246e-02), r);\n\tr = MulAdd(s2_0, M4(-3.049e-02, 3.876e-02, 1.798e-02, 1.660e-02, 5.262e-03, -7.100e-03, -2.275e-04, -2.742e-02, -5.409e-02, 1.216e-01, 1.681e-02, -8.374e-02, 1.909e-01, -1.592e-02, -2.350e-02, 4.850e-02), r);\n\tr = MulAdd(s2_1, M4(-3.809e-02, 7.727e-02, -1.538e-02, -7.747e-02, -1.638e-02, 3.303e-03, -4.032e-02, -1.914e-02, 6.667e-02, -1.473e-01, 9.159e-02, 2.177e-02, 7.800e-02, -2.749e-02, 2.020e-02, -7.160e-02), r);\n\tr = MulAdd(s2_2, M4(3.598e-02, -6.197e-02, 1.842e-02, -8.793e-03, -1.018e-02, 5.654e-02, 5.311e-02, 2.156e-02, 6.909e-02, -4.899e-02, -7.643e-04, 5.588e-02, -2.846e-02, 1.155e-02, -6.372e-02, -4.291e-02), r);\n\tr = MulAdd(s2_3, M4(3.729e-02, 1.007e-01, 2.525e-02, -1.302e-01, -1.402e-02, -3.402e-02, -2.153e-02, 9.281e-02, 1.373e-01, -5.732e-02, -3.573e-02, -3.186e-02, -4.562e-02, -1.542e-01, -2.256e-02, 2.462e-02), r);\n\tr = MulAdd(s2_4, M4(1.297e-01, -8.224e-02, -2.092e-01, 2.684e-01, -2.339e-03, 2.797e-02, 3.087e-02, 1.398e-01, 9.239e-02, 7.381e-02, -8.860e-02, -5.791e-02, 6.191e-02, 5.237e-02, 7.781e-02, 2.119e-01), r);\n\tr = MulAdd(s2_5, M4(-4.760e-02, 1.027e-02, 3.280e-02, -1.385e-02, 5.485e-02, 3.425e-02, -8.161e-02, 1.306e-01, -7.043e-04, -1.177e-02, 5.946e-02, -7.133e-02, -3.342e-02, -6.026e-02, 2.064e-02, -1.492e-02), r);\n\tr = MulAdd(s2_6, M4(-9.405e-02, -4.250e-02, 1.683e-02, 7.080e-03, 2.519e-02, 1.549e-02, 3.318e-02, -1.970e-02, 8.231e-02, -8.037e-02, -7.925e-02, -6.067e-03, 3.509e-03, -4.632e-02, 5.849e-02, 7.958e-02), r);\n\tr = MulAdd(s2_7, M4(1.424e-01, 5.223e-02, 3.317e-02, -2.217e-01, 5.145e-02, 1.991e-02, 3.337e-03, -8.977e-02, 6.504e-02, -5.637e-02, 1.894e-01, 6.373e-02, -8.009e-02, -2.898e-02, -2.254e-02, 5.607e-02), r);\n\tr = MulAdd(s2_8, M4(4.897e-02, -2.811e-02, 4.906e-02, 4.026e-02, -1.230e-01, -5.932e-02, 4.591e-03, 4.566e-02, -9.466e-02, -2.565e-02, 3.836e-02, 5.090e-02, 2.224e-02, 4.254e-02, -7.822e-02, -1.107e-02), r);\n\tr = MulAdd(s3_0, M4(-1.730e-02, -3.316e-02, 3.565e-02, -2.075e-02, -1.353e-02, 7.812e-03, 9.693e-03, -2.420e-02, -1.212e-02, -9.251e-03, -1.824e-02, -5.754e-02, 4.554e-02, 6.043e-02, 2.870e-02, 3.500e-02), r);\n\tr = MulAdd(s3_1, M4(-7.212e-02, 2.119e-02, 3.419e-02, 8.373e-02, -3.011e-02, 1.856e-02, -1.155e-01, -2.185e-03, 7.813e-02, -2.907e-02, -3.720e-02, 3.578e-02, -1.057e-01, -8.175e-03, -5.053e-02, 2.420e-02), r);\n\tr = MulAdd(s3_2, M4(9.529e-02, 1.016e-01, 3.172e-02, -2.386e-02, -8.391e-02, 6.843e-02, -9.736e-03, -9.194e-02, 1.399e-02, -8.978e-03, 2.900e-02, -6.146e-02, -6.319e-02, -1.560e-03, -9.177e-02, -6.033e-02), r);\n\tr = MulAdd(s3_3, M4(2.028e-02, 1.315e-02, 5.543e-02, 7.761e-02, -8.352e-02, 6.295e-03, -6.043e-03, 9.804e-02, -3.626e-02, -5.410e-02, -2.883e-02, -1.200e-02, -2.720e-03, -3.627e-02, 6.209e-02, -1.272e-02), r);\n\tr = MulAdd(s3_4, M4(1.698e-02, -1.959e-03, -1.426e-01, -7.658e-02, -5.019e-03, 7.411e-02, 1.118e-01, 1.282e-01, 8.223e-02, 2.384e-01, -8.747e-02, -1.974e-01, 2.444e-02, -6.515e-02, 5.985e-02, -2.092e-01), r);\n\tr = MulAdd(s3_5, M4(-5.460e-03, -2.205e-02, 8.765e-02, -6.076e-02, -5.173e-02, -5.875e-02, -8.130e-02, 2.187e-01, 1.908e-02, -2.804e-02, -4.912e-03, -1.549e-02, 3.233e-03, -2.002e-02, 4.922e-02, 1.501e-01), r);\n\tr = MulAdd(s3_6, M4(4.957e-02, -3.018e-02, 1.195e-02, -1.627e-02, -2.495e-02, 2.673e-02, 3.557e-02, -1.834e-02, -3.139e-02, 1.945e-01, -4.287e-02, -2.590e-01, 6.648e-02, -1.035e-01, 1.978e-02, 2.497e-01), r);\n\tr = MulAdd(s3_7, M4(4.261e-02, -4.467e-03, 9.605e-02, -1.084e-01, -4.150e-02, 8.793e-03, -4.267e-02, -6.823e-02, -4.787e-02, -1.536e-01, 1.780e-01, 1.504e-02, -8.017e-02, 6.095e-02, -1.297e-01, 1.903e-01), r);\n\tr = MulAdd(s3_8, M4(3.615e-02, -5.108e-02, 3.453e-02, 1.011e-01, -7.597e-02, -6.015e-03, 1.119e-02, -3.885e-02, 2.361e-02, 3.135e-02, -5.040e-02, -3.085e-02, 3.696e-02, 7.501e-02, -2.058e-02, -1.242e-01), r);\n\tr = MulAdd(s4_0, M4(4.920e-02, -7.762e-02, -1.594e-02, 6.495e-02, -6.660e-03, 6.573e-02, 5.427e-02, -1.234e-01, 4.898e-02, 6.072e-03, 4.608e-02, 5.062e-02, 9.321e-02, -5.075e-03, -1.583e-02, 6.021e-03), r);\n\tr = MulAdd(s4_1, M4(5.049e-02, 7.086e-02, -7.803e-02, -2.777e-03, 1.827e-01, -1.059e-01, -8.425e-02, 1.674e-01, 9.989e-03, -5.947e-02, 7.359e-03, 1.393e-01, -1.248e-01, 6.799e-02, -1.108e-01, -3.081e-02), r);\n\tr = MulAdd(s4_2, M4(-9.983e-02, -3.100e-03, 5.232e-02, 3.045e-02, 7.090e-02, -1.493e-02, 3.596e-02, -6.723e-02, -3.310e-02, 3.425e-02, -6.720e-02, -7.788e-02, -2.674e-02, -1.370e-02, 6.114e-02, -7.593e-02), r);\n\tr = MulAdd(s4_3, M4(-1.041e-01, 7.343e-02, 5.043e-02, -8.283e-03, -3.446e-02, -7.448e-02, 1.155e-01, 9.511e-02, -4.565e-03, -7.229e-03, -4.273e-02, 5.366e-02, -1.361e-01, -4.208e-02, 1.054e-01, 1.825e-01), r);\n\tr = MulAdd(s4_4, M4(1.120e-01, 1.808e-02, -1.422e-01, 4.162e-02, 3.161e-01, 8.619e-02, 1.298e-01, -2.176e-01, 7.566e-02, -1.184e-01, -4.221e-02, -6.631e-03, -1.206e-02, 2.938e-02, -1.332e-01, 4.335e-02), r);\n\tr = MulAdd(s4_5, M4(2.097e-01, 3.137e-02, 1.642e-01, -1.393e-01, -2.272e-01, -7.897e-02, -9.002e-02, 5.244e-02, -2.101e-02, -5.433e-02, 1.045e-01, -1.250e-02, 4.406e-02, 1.994e-02, -2.391e-02, 6.093e-02), r);\n\tr = MulAdd(s4_6, M4(-6.634e-02, -6.862e-03, 8.092e-03, 3.152e-02, 9.126e-02, 3.181e-02, -2.699e-02, -2.576e-02, 2.686e-02, -5.285e-02, 1.551e-02, 1.751e-02, 1.191e-01, 8.773e-02, 1.456e-02, -1.665e-01), r);\n\tr = MulAdd(s4_7, M4(-2.891e-02, -3.612e-02, -5.749e-02, 2.471e-02, 2.772e-01, -1.306e-01, 8.702e-02, 1.480e-01, -4.810e-02, 4.675e-02, -4.128e-03, -1.958e-02, 5.197e-02, -6.999e-02, 9.079e-02, 7.055e-02), r);\n\tr = MulAdd(s4_8, M4(9.988e-02, 1.870e-02, 8.131e-02, -2.260e-02, -8.316e-02, 8.149e-03, 2.334e-02, -5.434e-03, 5.043e-02, 2.868e-02, -2.653e-02, 6.189e-02, -3.698e-02, 3.083e-02, -3.091e-02, 2.374e-03), r);\n\tr = MulAdd(s5_0, M4(5.254e-02, -7.315e-02, -2.225e-02, 2.153e-02, 5.725e-02, -4.636e-02, 1.601e-03, 4.516e-02, 8.068e-02, 2.729e-02, -3.870e-02, -7.201e-02, 6.760e-02, 4.552e-03, 4.438e-02, 4.500e-02), r);\n\tr = MulAdd(s5_1, M4(1.685e-01, 1.509e-01, 2.948e-03, 1.776e-02, 1.675e-02, 6.696e-02, -5.363e-02, -6.286e-03, 6.024e-02, 3.023e-03, -5.779e-02, 5.292e-03, -1.165e-01, 7.991e-02, -1.851e-02, 4.630e-04), r);\n\tr = MulAdd(s5_2, M4(-7.170e-02, 1.589e-02, -1.884e-02, -3.883e-02, 7.200e-02, -1.746e-02, -2.195e-02, 9.030e-02, 1.058e-01, -8.948e-02, -1.143e-01, 6.897e-02, -6.149e-02, 1.574e-03, 4.231e-02, 1.363e-02), r);\n\tr = MulAdd(s5_3, M4(3.745e-02, 1.247e-01, 2.019e-02, -3.741e-02, -3.449e-03, -4.847e-03, 1.767e-03, 5.781e-03, -7.935e-02, -2.522e-01, 3.269e-02, 1.529e-01, 3.102e-01, -1.893e-01, -6.841e-02, 3.808e-02), r);\n\tr = MulAdd(s5_4, M4(1.921e-01, -7.191e-02, 1.048e-01, 6.779e-03, 6.828e-02, 2.094e-02, 4.389e-02, 5.065e-02, -1.595e-02, -2.677e-01, -7.935e-02, -1.236e-01, 1.635e-01, -4.481e-02, 4.704e-02, 1.869e-01), r);\n\tr = MulAdd(s5_5, M4(6.662e-03, 6.683e-02, -9.824e-02, 1.703e-01, -2.904e-02, 5.726e-02, -3.509e-02, -1.256e-01, -1.423e-01, 9.473e-02, -1.299e-01, 1.175e-01, -3.071e-02, -2.751e-02, 4.384e-02, -8.192e-02), r);\n\tr = MulAdd(s5_6, M4(-1.580e-02, -3.752e-02, 4.568e-02, 7.775e-03, 2.727e-02, 7.825e-03, -1.738e-02, -9.195e-03, -3.736e-02, -6.091e-02, 3.713e-02, 6.820e-02, 1.742e-02, 1.099e-02, -2.703e-02, -4.711e-02), r);\n\tr = MulAdd(s5_7, M4(-2.568e-02, -3.585e-02, -8.110e-05, -1.047e-02, 1.640e-02, -2.770e-02, 2.889e-02, 3.152e-02, 8.110e-02, -1.274e-01, 6.282e-02, 1.401e-01, 1.375e-02, -5.635e-02, 4.940e-02, 5.975e-02), r);\n\tr = MulAdd(s5_8, M4(4.971e-02, -3.187e-02, 5.470e-02, -5.790e-02, 2.007e-02, 1.442e-02, -5.515e-02, 8.206e-02, 9.185e-03, -2.850e-02, -4.617e-02, -2.761e-02, 7.174e-02, -2.299e-03, -8.726e-03, -4.167e-02), r);\n\tr = MulAdd(s6_0, M4(-2.564e-02, -1.334e-03, 1.618e-02, -3.692e-02, 1.668e-02, -1.014e-02, 3.184e-02, -8.247e-05, -5.784e-02, -6.551e-02, -1.474e-02, -1.508e-02, 1.280e-02, 1.104e-02, 1.940e-02, -2.254e-02), r);\n\tr = MulAdd(s6_1, M4(1.281e-02, 2.432e-02, -3.916e-02, -8.733e-02, 2.112e-02, -1.650e-02, -5.389e-02, 2.289e-02, 6.510e-02, -1.273e-01, 8.516e-02, -4.619e-02, 7.458e-02, -4.286e-02, -1.097e-01, -4.328e-02), r);\n\tr = MulAdd(s6_2, M4(2.650e-02, -1.040e-02, 7.558e-03, -1.189e-02, -6.083e-03, -3.193e-03, -9.984e-03, -3.848e-02, -2.653e-02, -7.239e-02, 2.185e-02, 1.225e-02, -3.582e-02, -2.979e-02, -6.728e-02, -6.881e-02), r);\n\tr = MulAdd(s6_3, M4(-3.437e-02, 6.707e-02, 3.284e-02, -1.281e-01, 2.801e-02, 2.978e-03, 2.879e-02, -7.024e-03, -5.116e-02, 3.863e-02, -5.467e-02, 8.941e-02, 5.295e-02, -1.732e-01, -1.607e-01, -6.141e-03), r);\n\tr = MulAdd(s6_4, M4(-5.183e-02, 9.150e-02, 2.158e-01, 1.855e-01, -1.774e-01, 4.494e-02, -3.685e-02, -2.582e-02, 1.537e-01, -1.493e-02, -8.099e-02, 1.548e-01, 8.523e-02, -1.556e-02, 1.480e-01, 1.893e-01), r);\n\tr = MulAdd(s6_5, M4(1.187e-01, 5.356e-02, -6.313e-02, 9.672e-02, 2.376e-03, 1.626e-02, 6.959e-03, -9.679e-02, 5.677e-03, -3.208e-02, -9.106e-02, 1.793e-01, 1.366e-02, -1.316e-02, 6.110e-02, -5.431e-02), r);\n\tr = MulAdd(s6_6, M4(-3.338e-03, 8.092e-02, 6.916e-02, -1.039e-01, -6.471e-02, 8.988e-03, 5.310e-02, 7.353e-02, 1.128e-02, 3.089e-02, -2.249e-02, 1.239e-02, -6.665e-02, -3.720e-02, -2.291e-02, 5.894e-02), r);\n\tr = MulAdd(s6_7, M4(1.134e-01, 1.221e-02, -6.070e-02, 2.300e-01, -8.134e-02, 3.754e-02, 9.095e-02, -3.804e-02, 7.501e-02, -1.004e-01, 1.162e-01, 5.006e-03, 4.744e-02, 1.739e-02, -1.323e-01, 8.227e-02), r);\n\tr = MulAdd(s6_8, M4(-1.192e-01, -2.425e-02, -9.741e-03, 1.033e-02, 1.348e-02, 4.238e-03, 5.134e-02, 2.432e-02, -3.472e-02, 2.930e-02, -1.485e-02, -6.624e-03, 2.464e-02, -6.743e-03, -5.677e-02, -1.125e-02), r);\n\tr = MulAdd(s7_0, M4(2.961e-04, 5.695e-02, 1.692e-02, 1.641e-02, 1.896e-02, 3.423e-02, 3.964e-02, -4.835e-02, -7.153e-02, -1.021e-02, -1.489e-02, -4.491e-02, 6.248e-03, 6.234e-02, 3.034e-02, -4.721e-02), r);\n\tr = MulAdd(s7_1, M4(4.580e-02, -4.302e-03, 5.372e-02, 1.092e-01, 9.311e-02, 7.429e-02, -7.219e-02, 1.315e-02, -4.621e-02, -3.435e-02, 8.618e-02, 6.339e-04, -5.809e-02, -5.998e-02, -8.710e-02, -5.751e-02), r);\n\tr = MulAdd(s7_2, M4(4.485e-02, 2.007e-02, 3.034e-02, 5.546e-02, -1.602e-02, -3.560e-02, -2.043e-02, 4.087e-02, 4.749e-02, -8.724e-04, 4.623e-02, 1.840e-02, -3.697e-02, 8.748e-03, -3.764e-03, -1.345e-01), r);\n\tr = MulAdd(s7_3, M4(1.538e-01, -1.023e-01, -1.091e-01, -1.067e-01, 1.039e-01, 2.164e-03, -3.211e-02, 3.243e-02, -7.896e-02, 8.814e-02, -3.925e-02, -7.875e-02, 5.796e-03, -5.906e-02, -7.718e-02, 3.024e-02), r);\n\tr = MulAdd(s7_4, M4(-1.636e-01, -7.883e-02, -2.044e-01, 3.189e-02, -2.025e-01, -3.092e-02, -2.128e-01, 3.520e-02, -5.502e-03, 7.618e-02, -1.111e-01, 4.137e-02, 2.036e-01, -2.299e-02, 2.865e-02, 1.354e-01), r);\n\tr = MulAdd(s7_5, M4(1.363e-01, -4.054e-02, -2.335e-02, 2.584e-02, 3.570e-02, 8.628e-02, 1.420e-02, -1.352e-02, -3.313e-03, -4.462e-03, -1.690e-03, 3.997e-02, -1.273e-01, -3.589e-03, -4.635e-02, -2.387e-02), r);\n\tr = MulAdd(s7_6, M4(8.699e-02, 7.315e-03, 4.443e-02, 1.327e-02, -7.019e-02, -1.051e-02, 4.505e-02, 4.059e-02, -5.563e-02, 3.547e-02, 8.318e-03, -7.002e-02, -3.911e-02, 1.473e-02, -2.082e-02, -4.584e-03), r);\n\tr = MulAdd(s7_7, M4(2.100e-03, -4.188e-02, 1.642e-01, 2.146e-01, 5.512e-02, 1.341e-01, -6.786e-02, -2.989e-02, -6.685e-02, -7.217e-02, 1.433e-01, -1.345e-02, -5.557e-02, 2.869e-02, -8.787e-02, 5.125e-02), r);\n\tr = MulAdd(s7_8, M4(9.447e-02, -1.057e-02, 9.580e-02, 3.739e-03, -6.323e-02, -3.503e-03, 1.983e-02, 7.549e-03, -5.925e-02, -3.357e-02, 2.204e-03, 2.899e-02, -6.129e-02, 1.970e-02, -2.830e-02, -5.696e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.436e-02, 1.957e-02, -1.232e-02, -3.296e-02 };\n\tr = MulAdd(s0_0, M4(1.077e-01, 9.312e-02, -5.188e-02, 7.384e-02, -5.968e-02, 2.927e-03, -3.236e-02, -5.140e-02, -3.015e-02, -3.844e-02, 8.994e-02, -1.180e-01, -9.557e-02, -4.035e-02, 4.019e-02, -4.095e-02), r);\n\tr = MulAdd(s0_1, M4(-6.296e-02, -4.241e-02, -6.281e-03, -6.678e-02, 9.068e-03, 3.762e-02, 1.032e-01, -4.027e-02, 2.218e-02, 6.294e-02, -1.689e-02, 1.324e-01, -1.670e-02, -7.119e-02, -5.797e-02, -4.215e-03), r);\n\tr = MulAdd(s0_2, M4(-6.613e-02, -1.290e-02, 1.807e-02, 4.846e-04, 4.511e-02, 4.319e-02, -1.287e-02, 1.502e-02, -3.730e-02, -1.057e-02, 2.362e-02, -5.695e-02, -5.287e-03, 1.501e-02, -1.542e-02, -1.826e-02), r);\n\tr = MulAdd(s0_3, M4(-3.606e-02, 1.462e-01, 2.109e-01, -2.420e-02, 1.386e-03, -5.487e-02, 5.800e-03, 4.513e-02, -1.422e-01, -8.521e-02, 2.863e-01, -2.422e-01, 2.749e-02, -1.105e-01, 1.328e-03, -2.261e-01), r);\n\tr = MulAdd(s0_4, M4(1.142e-01, 4.361e-02, 4.532e-02, 2.146e-03, -1.481e-01, -1.284e-01, -3.127e-02, -9.069e-02, -1.411e-01, -2.611e-02, -2.912e-01, 2.501e-01, 1.544e-01, -3.091e-02, -1.803e-01, -5.694e-02), r);\n\tr = MulAdd(s0_5, M4(-5.748e-02, -8.738e-02, -1.973e-02, 4.722e-02, -3.113e-02, -7.124e-03, 8.854e-03, -1.669e-02, 6.880e-02, 2.122e-02, -5.463e-02, 1.973e-03, -6.377e-02, -5.127e-03, -3.509e-02, 5.819e-02), r);\n\tr = MulAdd(s0_6, M4(5.161e-02, 6.178e-02, -6.580e-03, 7.210e-02, 1.012e-01, 1.839e-02, 5.339e-02, 2.248e-02, 6.152e-02, 3.338e-02, 4.869e-03, -1.636e-01, -5.381e-02, -7.649e-02, 3.155e-02, -9.452e-02), r);\n\tr = MulAdd(s0_7, M4(3.837e-02, -2.835e-03, 9.076e-02, -8.489e-04, 6.508e-02, 2.648e-02, -6.215e-02, 8.233e-02, 2.223e-02, -6.067e-02, 5.139e-02, -4.934e-02, -9.968e-02, 6.218e-02, 2.873e-03, -6.527e-02), r);\n\tr = MulAdd(s0_8, M4(5.733e-02, 1.893e-02, -6.683e-02, 4.339e-02, -4.547e-02, 2.725e-02, 1.997e-02, -1.831e-02, 3.253e-02, 5.693e-02, -3.447e-02, 3.470e-02, 6.988e-02, -1.481e-01, 4.093e-02, 4.865e-02), r);\n\tr = MulAdd(s1_0, M4(1.218e-01, 1.391e-01, -9.917e-02, 2.681e-01, -6.814e-03, -4.386e-02, -1.731e-02, -4.896e-02, -4.263e-03, 7.133e-03, -2.855e-02, 1.162e-01, -6.505e-02, -3.310e-02, 4.968e-02, -7.657e-02), r);\n\tr = MulAdd(s1_1, M4(-1.714e-01, -3.825e-02, 1.989e-03, -8.984e-02, 4.135e-02, 3.992e-02, -8.609e-03, -6.335e-02, -3.296e-02, -3.458e-02, 4.691e-03, 1.030e-01, 2.207e-02, -1.372e-02, -2.782e-02, 7.251e-02), r);\n\tr = MulAdd(s1_2, M4(1.158e-02, 2.207e-02, 1.008e-02, -1.122e-02, 5.151e-02, 3.024e-02, -4.144e-02, 5.029e-02, 6.255e-02, 6.074e-03, 3.316e-02, -3.334e-02, 9.460e-04, 3.999e-02, 4.258e-02, -1.319e-02), r);\n\tr = MulAdd(s1_3, M4(-6.833e-03, 2.981e-01, 1.190e-01, 4.172e-01, -2.082e-01, -1.010e-01, 1.663e-01, 2.756e-02, 1.126e-02, 6.412e-02, 5.292e-02, 3.232e-02, 5.397e-02, -6.604e-02, -8.024e-02, -3.327e-02), r);\n\tr = MulAdd(s1_4, M4(1.082e-01, -7.797e-02, 3.743e-01, -2.278e-02, 1.222e-01, 3.582e-02, 3.057e-01, -1.525e-01, 3.195e-02, 3.684e-03, 1.318e-01, -1.431e-02, -1.279e-01, -1.193e-01, -9.534e-02, 1.111e-02), r);\n\tr = MulAdd(s1_5, M4(-7.195e-02, -8.329e-03, 2.136e-02, 1.546e-02, -3.515e-02, -3.558e-02, 3.955e-02, 8.360e-02, -1.101e-01, -1.174e-01, -3.039e-02, -2.660e-02, -1.078e-02, -1.269e-02, -1.314e-01, 7.183e-02), r);\n\tr = MulAdd(s1_6, M4(5.152e-02, 5.627e-02, -4.271e-02, 1.356e-01, 1.291e-01, -1.450e-01, -1.893e-02, 1.868e-01, 6.525e-02, 5.429e-02, 1.105e-01, -9.555e-02, -7.097e-02, 1.332e-02, 3.753e-02, -4.533e-03), r);\n\tr = MulAdd(s1_7, M4(3.159e-02, 5.370e-02, 1.118e-01, -2.614e-02, 1.104e-01, 4.714e-03, 8.088e-02, -1.254e-01, 5.789e-02, 1.972e-02, -2.895e-02, 1.946e-02, 5.596e-02, 1.046e-01, 3.249e-02, -6.347e-02), r);\n\tr = MulAdd(s1_8, M4(4.930e-02, 2.392e-02, -3.323e-02, 3.137e-02, -1.039e-01, -1.100e-01, 1.549e-02, 1.914e-02, 5.477e-02, 1.615e-03, 6.294e-02, -3.471e-02, 6.569e-02, -4.273e-02, 1.651e-02, 9.589e-03), r);\n\tr = MulAdd(s2_0, M4(3.221e-02, 7.105e-02, 2.089e-02, 2.255e-02, -6.648e-03, -2.093e-02, 6.522e-03, -2.318e-02, -8.746e-03, 5.476e-02, -3.258e-02, -1.102e-01, 1.749e-01, 2.147e-02, -2.678e-02, -5.268e-02), r);\n\tr = MulAdd(s2_1, M4(-1.864e-02, -4.252e-04, -8.805e-02, -4.201e-02, -8.959e-02, -2.189e-02, 2.673e-02, 4.537e-02, 2.190e-01, 1.311e-01, 5.191e-03, 4.206e-02, -2.308e-02, -9.327e-02, -3.661e-02, -1.148e-01), r);\n\tr = MulAdd(s2_2, M4(-2.992e-02, 3.498e-02, 5.053e-02, 1.144e-02, 3.595e-02, 1.984e-02, 1.643e-02, -2.382e-02, 3.988e-02, 4.426e-02, 1.589e-02, 3.642e-02, 6.817e-03, 9.914e-03, -7.543e-02, 4.210e-02), r);\n\tr = MulAdd(s2_3, M4(-1.351e-01, 1.527e-01, 2.414e-03, -2.222e-01, 9.301e-03, -4.186e-04, -7.728e-03, -1.186e-01, 7.279e-04, 4.599e-02, 1.162e-02, -1.156e-01, -9.149e-03, 2.266e-02, 3.615e-02, -1.548e-01), r);\n\tr = MulAdd(s2_4, M4(1.148e-01, 1.567e-01, -2.782e-01, 3.847e-03, -2.695e-02, -1.642e-03, -8.825e-02, -1.578e-02, 1.793e-01, 2.009e-01, -2.151e-01, -1.173e-01, -1.997e-02, -3.643e-02, 1.601e-02, 3.910e-02), r);\n\tr = MulAdd(s2_5, M4(4.336e-02, 8.253e-02, 1.158e-02, -1.455e-02, -5.475e-02, -1.940e-02, -6.271e-02, 1.003e-02, -1.544e-02, 4.810e-03, 6.860e-02, -2.462e-02, -6.332e-02, -6.534e-02, 8.899e-02, 2.976e-02), r);\n\tr = MulAdd(s2_6, M4(-3.050e-02, -1.263e-02, -1.012e-01, -3.166e-02, -7.449e-02, -2.503e-02, -5.525e-02, 3.306e-02, -3.886e-02, 5.543e-02, 5.382e-02, -3.963e-02, 3.195e-02, 3.792e-03, -2.265e-02, -2.995e-02), r);\n\tr = MulAdd(s2_7, M4(-9.550e-02, 8.093e-03, -6.212e-02, 1.538e-02, -4.168e-04, 4.310e-03, -1.145e-04, 1.177e-01, -2.583e-02, 1.046e-01, -5.829e-03, 1.304e-01, 3.170e-02, -6.325e-02, 3.423e-02, 6.609e-03), r);\n\tr = MulAdd(s2_8, M4(4.738e-02, 2.854e-02, -7.887e-02, 4.673e-02, 8.907e-03, 1.670e-02, 2.104e-02, -5.520e-02, 3.884e-02, 1.973e-02, 1.202e-01, 7.833e-02, -7.837e-02, -4.010e-02, 8.031e-02, -9.000e-02), r);\n\tr = MulAdd(s3_0, M4(2.679e-02, 2.173e-02, -1.323e-02, -1.968e-03, 1.052e-02, 2.645e-02, -4.180e-02, 3.171e-02, -2.261e-02, -2.448e-02, -5.866e-02, -7.578e-02, 7.423e-02, 5.530e-02, -1.174e-02, 1.807e-02), r);\n\tr = MulAdd(s3_1, M4(-5.659e-02, -4.152e-02, -6.892e-02, -7.556e-02, -1.425e-01, -7.938e-02, 3.291e-02, -3.197e-02, 6.805e-02, 8.159e-02, -9.808e-02, -1.154e-01, -5.595e-02, -8.041e-02, -1.891e-02, -1.454e-01), r);\n\tr = MulAdd(s3_2, M4(-1.225e-03, -7.471e-03, 4.640e-03, -2.132e-02, -1.187e-01, -3.307e-02, -3.342e-02, 5.745e-02, -4.317e-03, 6.259e-02, -9.434e-03, 8.730e-02, -2.601e-02, -3.185e-02, -5.734e-02, 6.062e-02), r);\n\tr = MulAdd(s3_3, M4(8.051e-03, 5.024e-02, -7.025e-02, 8.818e-02, -8.869e-02, -1.515e-02, 5.252e-03, -2.860e-02, -6.840e-02, -2.742e-03, 8.916e-02, 2.543e-02, 1.025e-01, -2.034e-02, -5.761e-03, 3.742e-01), r);\n\tr = MulAdd(s3_4, M4(-4.240e-02, 7.146e-02, -4.326e-02, 8.698e-02, -1.976e-02, -1.082e-01, -2.198e-02, -1.269e-01, 6.265e-03, 7.006e-02, -1.549e-02, -1.263e-01, -1.393e-01, -1.977e-01, 4.258e-01, 8.264e-02), r);\n\tr = MulAdd(s3_5, M4(-4.435e-02, 2.545e-02, 1.863e-02, 2.360e-02, -3.587e-02, -8.683e-02, 8.091e-02, 1.216e-02, -1.017e-02, 2.783e-02, -2.242e-02, -4.877e-02, 3.016e-02, -4.084e-02, 2.683e-02, 3.136e-02), r);\n\tr = MulAdd(s3_6, M4(4.558e-02, -3.461e-02, 1.245e-02, 6.048e-02, -3.341e-03, -4.436e-02, 1.241e-02, 5.533e-02, 8.177e-03, -4.103e-03, 3.365e-02, 7.956e-02, -7.129e-02, 5.349e-02, -4.337e-02, -1.018e-01), r);\n\tr = MulAdd(s3_7, M4(-3.148e-03, -2.321e-02, 3.585e-02, -1.823e-02, -1.738e-02, 3.308e-02, 9.017e-02, 3.342e-04, -5.252e-03, -2.761e-02, 1.347e-01, 2.909e-02, -3.061e-03, 2.617e-02, -1.475e-02, -3.956e-02), r);\n\tr = MulAdd(s3_8, M4(9.334e-03, -1.697e-02, -5.276e-02, 2.803e-02, 3.719e-03, -2.596e-03, -3.970e-02, 2.540e-02, -1.326e-01, -3.069e-02, 4.041e-02, -2.985e-02, -5.079e-02, 6.418e-02, -2.325e-02, -7.249e-02), r);\n\tr = MulAdd(s4_0, M4(3.710e-02, 3.287e-02, 4.836e-02, -9.585e-02, 1.885e-03, 5.685e-03, -5.507e-03, 4.869e-02, 8.140e-02, 2.910e-02, -7.700e-02, 8.265e-02, -8.802e-03, 7.170e-02, -8.877e-04, -2.661e-02), r);\n\tr = MulAdd(s4_1, M4(-1.652e-02, 7.513e-04, 3.076e-02, 5.516e-02, -2.761e-02, 6.551e-03, 1.027e-01, -4.674e-02, -5.690e-03, 5.166e-03, -3.712e-02, -1.844e-02, -3.894e-02, -3.135e-02, -6.120e-02, 1.714e-02), r);\n\tr = MulAdd(s4_2, M4(6.301e-02, -5.956e-03, -3.980e-03, -2.500e-02, 4.266e-02, 1.491e-01, -6.553e-02, 1.103e-01, -3.315e-02, -1.231e-02, -3.530e-02, -6.407e-03, 3.088e-02, 4.581e-02, 6.168e-02, 5.876e-02), r);\n\tr = MulAdd(s4_3, M4(-1.942e-02, -8.815e-03, -6.423e-02, 1.349e-02, -9.786e-02, -5.757e-02, -2.002e-02, 1.992e-01, 3.463e-02, 5.042e-02, 2.547e-03, -2.162e-02, -7.019e-02, -1.184e-01, 6.112e-02, -1.267e-01), r);\n\tr = MulAdd(s4_4, M4(2.089e-03, 1.035e-02, -1.179e-01, 6.884e-02, 1.921e-01, -1.789e-02, 1.577e-01, -2.155e-01, 3.626e-03, 1.062e-02, 1.924e-02, 9.510e-02, -9.622e-02, -1.313e-01, -3.070e-02, 1.933e-01), r);\n\tr = MulAdd(s4_5, M4(7.287e-02, 1.362e-01, 3.051e-02, -7.536e-02, -8.768e-02, 6.265e-02, -8.248e-02, -5.200e-02, 2.649e-02, -7.968e-02, 1.080e-02, -6.782e-03, -6.966e-02, -3.352e-02, 2.188e-02, -3.046e-03), r);\n\tr = MulAdd(s4_6, M4(-4.444e-03, -1.998e-02, -3.328e-02, 4.993e-02, 1.821e-02, -1.305e-02, -1.285e-02, 1.196e-01, -1.910e-02, 1.556e-02, -1.920e-02, 4.315e-03, 5.933e-02, 1.134e-03, 3.927e-03, -1.362e-02), r);\n\tr = MulAdd(s4_7, M4(-3.740e-02, -4.676e-02, 6.161e-02, 7.081e-03, -1.382e-01, 1.377e-01, -5.139e-02, -1.040e-01, -7.295e-04, -2.772e-02, 2.037e-02, 3.765e-02, 2.740e-02, -3.209e-02, -1.239e-02, -3.002e-03), r);\n\tr = MulAdd(s4_8, M4(-8.065e-02, 8.158e-03, -6.351e-02, 3.085e-02, 8.517e-02, -4.434e-02, -9.817e-02, -1.627e-03, 1.648e-02, 8.428e-03, 1.192e-02, -3.798e-02, 5.931e-02, -2.690e-02, 5.350e-02, 2.766e-02), r);\n\tr = MulAdd(s5_0, M4(-1.622e-02, -4.403e-02, 1.023e-01, -1.139e-01, 5.014e-02, 2.008e-02, 2.745e-02, 2.676e-02, 7.143e-02, 2.604e-03, -1.732e-01, 2.093e-02, 7.864e-02, 5.946e-02, -5.021e-02, -2.883e-02), r);\n\tr = MulAdd(s5_1, M4(3.377e-02, 3.455e-02, 1.131e-01, -1.224e-01, -1.474e-02, -1.274e-02, -7.299e-02, 2.685e-02, -1.012e-02, 8.374e-02, 1.117e-01, 1.403e-01, -2.833e-02, -1.101e-02, -1.028e-01, 1.124e-01), r);\n\tr = MulAdd(s5_2, M4(-1.305e-01, -9.027e-02, -1.216e-01, 2.585e-02, 5.500e-02, 4.169e-02, 3.386e-02, -4.850e-03, 1.853e-02, -9.479e-03, 1.559e-01, -5.464e-02, -4.298e-02, -1.684e-02, 4.651e-02, 2.252e-02), r);\n\tr = MulAdd(s5_3, M4(-2.488e-02, 1.727e-02, 3.289e-02, -1.119e-01, -7.352e-02, 6.214e-03, 5.950e-02, -5.322e-02, -2.526e-03, -2.031e-02, -1.997e-01, 2.193e-01, 1.698e-01, 9.388e-02, -1.760e-02, -2.799e-01), r);\n\tr = MulAdd(s5_4, M4(-1.644e-01, -6.465e-02, -1.964e-01, -2.100e-01, -8.515e-03, 8.435e-04, 2.077e-02, 6.934e-02, -1.016e-02, 1.320e-01, -4.857e-01, -1.243e-01, 2.594e-02, 5.574e-02, -2.013e-01, -6.372e-02), r);\n\tr = MulAdd(s5_5, M4(6.039e-02, 1.160e-02, -8.932e-02, -9.111e-03, -3.383e-02, 1.090e-02, 7.543e-02, -7.096e-02, -1.671e-01, -2.288e-01, -1.212e-01, 4.297e-02, -7.059e-02, 4.491e-02, 3.937e-02, 5.454e-02), r);\n\tr = MulAdd(s5_6, M4(2.136e-02, -8.988e-03, -3.129e-02, 1.085e-02, 4.960e-02, -2.167e-03, 2.436e-03, -5.589e-02, -3.687e-02, 2.597e-02, 5.500e-02, 7.337e-02, -2.889e-02, 1.762e-01, 9.740e-02, -2.120e-01), r);\n\tr = MulAdd(s5_7, M4(-5.648e-02, -9.203e-02, 1.907e-02, -7.378e-02, -1.303e-02, 3.863e-03, -1.161e-01, 2.245e-02, 6.718e-02, 4.304e-02, 2.344e-01, 2.262e-02, 8.896e-02, 6.554e-02, -2.300e-01, 7.788e-02), r);\n\tr = MulAdd(s5_8, M4(-3.322e-02, 3.952e-02, -6.377e-02, 1.787e-02, 1.770e-02, -1.739e-03, 5.596e-03, 1.804e-03, 1.023e-01, 2.178e-02, -4.965e-02, -1.213e-02, 5.301e-02, -1.652e-02, 4.560e-02, 3.575e-02), r);\n\tr = MulAdd(s6_0, M4(5.305e-02, 6.024e-03, -6.012e-03, -2.101e-02, 9.004e-04, 1.515e-02, -3.313e-02, 6.079e-02, -2.658e-02, -4.520e-02, -7.564e-03, -1.143e-01, 9.037e-02, 8.192e-03, -3.790e-02, 1.233e-01), r);\n\tr = MulAdd(s6_1, M4(-4.037e-02, 2.179e-02, -7.962e-02, 9.745e-02, -5.554e-02, -3.406e-02, -3.068e-03, -5.949e-02, 6.269e-02, 5.716e-02, 5.162e-02, 3.283e-02, 3.814e-02, -1.724e-02, -1.610e-02, -3.306e-02), r);\n\tr = MulAdd(s6_2, M4(2.850e-02, 1.388e-02, -1.091e-02, -1.767e-03, 4.596e-04, 7.681e-04, -4.901e-02, 3.987e-02, -6.414e-03, -2.162e-02, 2.892e-02, -6.097e-03, -2.390e-02, -3.975e-02, -3.758e-02, 3.565e-02), r);\n\tr = MulAdd(s6_3, M4(-1.030e-01, 5.867e-02, 6.311e-02, 4.378e-02, -7.515e-02, 7.870e-04, 2.617e-02, 1.581e-02, 2.060e-02, -2.820e-02, -6.539e-03, -2.060e-01, 1.867e-02, 7.975e-02, 7.304e-02, -1.851e-01), r);\n\tr = MulAdd(s6_4, M4(1.318e-01, 6.028e-02, 8.039e-02, -4.800e-02, -1.777e-01, -2.444e-01, 7.054e-02, -2.082e-02, 1.185e-01, 1.637e-01, -1.121e-01, -2.441e-02, 2.106e-01, 4.146e-02, -6.769e-02, 6.979e-02), r);\n\tr = MulAdd(s6_5, M4(1.051e-02, 2.402e-02, 4.806e-02, -3.359e-02, -6.737e-02, -3.636e-02, 4.301e-02, 1.530e-03, 1.313e-01, 1.824e-02, -8.806e-02, -7.708e-02, 9.100e-02, 3.534e-02, 2.935e-02, 3.096e-02), r);\n\tr = MulAdd(s6_6, M4(3.856e-02, -3.014e-03, 3.394e-02, 1.071e-01, -4.078e-02, -6.640e-02, -2.350e-02, 1.959e-02, 9.128e-03, -4.047e-02, -3.454e-02, -8.068e-02, -3.010e-02, 6.882e-02, 5.409e-02, -7.349e-02), r);\n\tr = MulAdd(s6_7, M4(6.851e-02, 8.326e-02, 1.533e-01, -6.287e-02, 1.728e-02, -1.714e-01, -5.740e-02, 4.809e-03, 2.828e-02, 3.169e-02, -6.673e-02, 3.754e-02, -2.514e-02, 3.858e-02, 6.254e-02, -7.638e-02), r);\n\tr = MulAdd(s6_8, M4(-5.590e-03, 5.953e-02, 7.725e-02, -2.560e-03, -1.225e-01, -2.320e-02, 4.039e-02, -3.092e-02, 3.539e-02, 9.669e-03, -8.232e-02, -3.003e-02, 1.670e-02, -2.627e-02, 1.353e-02, -1.655e-02), r);\n\tr = MulAdd(s7_0, M4(-6.490e-02, 5.115e-03, -1.528e-02, -1.145e-01, 7.564e-02, 7.405e-02, -5.443e-02, 6.745e-03, -6.547e-02, -4.020e-02, -4.225e-02, 3.839e-02, 1.049e-01, 4.631e-02, -5.378e-02, 1.743e-01), r);\n\tr = MulAdd(s7_1, M4(3.424e-04, 1.829e-02, 9.501e-03, 5.903e-02, 1.090e-01, 1.012e-01, -6.213e-03, -4.232e-02, -3.044e-02, -3.550e-03, 6.156e-02, -1.484e-03, 6.939e-03, -8.635e-03, 2.082e-03, -3.243e-02), r);\n\tr = MulAdd(s7_2, M4(7.190e-02, 9.364e-02, 2.862e-02, -8.397e-02, 6.550e-02, 6.722e-02, -6.371e-02, -4.278e-03, 4.129e-02, 6.908e-03, -5.093e-02, 8.225e-04, -3.228e-02, 1.587e-02, 1.322e-02, 9.009e-02), r);\n\tr = MulAdd(s7_3, M4(-1.729e-02, 7.476e-02, 6.151e-02, 3.103e-02, 8.877e-02, 6.905e-02, -2.906e-02, -9.292e-02, -1.081e-01, -6.498e-02, 8.411e-02, -3.789e-02, -2.383e-02, 5.354e-02, -1.833e-03, -4.389e-03), r);\n\tr = MulAdd(s7_4, M4(8.625e-02, 5.764e-02, -2.618e-01, -3.980e-02, -6.684e-02, -1.350e-02, -2.388e-01, 1.900e-01, 6.187e-02, 2.144e-02, -3.389e-03, -9.097e-02, 1.580e-01, 1.538e-01, 2.038e-02, -6.656e-02), r);\n\tr = MulAdd(s7_5, M4(-1.117e-01, 1.565e-02, -5.238e-02, -8.835e-02, 6.472e-03, 8.414e-02, 3.239e-02, -4.135e-02, 1.121e-02, -7.688e-03, -1.144e-01, 1.978e-02, 5.818e-02, 6.246e-02, -3.547e-02, 4.597e-02), r);\n\tr = MulAdd(s7_6, M4(2.220e-02, 7.870e-03, 2.765e-02, 2.444e-03, -7.059e-02, 6.972e-02, -5.966e-02, 1.448e-01, 5.399e-02, -1.218e-01, -5.895e-02, 3.625e-02, -4.502e-02, 6.365e-02, 2.878e-02, 4.715e-02), r);\n\tr = MulAdd(s7_7, M4(-7.888e-02, 1.038e-01, -3.999e-02, 2.142e-01, 7.834e-02, 1.839e-02, 9.709e-02, 2.613e-02, -3.665e-02, -1.361e-03, 3.381e-02, -3.310e-02, -3.747e-02, 6.834e-02, 3.315e-02, 8.918e-03), r);\n\tr = MulAdd(s7_8, M4(-3.474e-02, 6.471e-02, 8.885e-02, -4.717e-02, 3.719e-02, 9.219e-02, -4.642e-02, -9.449e-03, -2.453e-02, -2.280e-02, -6.700e-02, -5.099e-03, -2.730e-02, 1.369e-02, 4.512e-02, 2.629e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 9.662e-03, 1.842e-02, 1.390e-02, 1.935e-02 };\n\tr = MulAdd(s0_0, M4(1.208e-01, -1.226e-01, 4.139e-02, 1.672e-02, 3.747e-02, 1.641e-02, -1.400e-02, 2.603e-03, -9.280e-02, 1.165e-01, 6.712e-02, 5.747e-02, 5.795e-03, -1.884e-02, -5.806e-02, -2.103e-02), r);\n\tr = MulAdd(s0_1, M4(-4.448e-02, -1.759e-01, 4.656e-02, -5.958e-02, -7.425e-02, 4.919e-02, -8.946e-02, 3.773e-02, 1.568e-01, 1.065e-01, -4.453e-02, -7.229e-02, 3.335e-03, -1.265e-02, -3.742e-02, -5.298e-02), r);\n\tr = MulAdd(s0_2, M4(9.436e-03, -1.831e-02, 4.140e-03, 6.075e-02, 3.335e-02, 3.694e-02, -2.059e-02, 3.985e-02, -3.482e-02, -2.645e-02, -6.472e-02, -5.205e-03, -1.363e-02, -1.129e-01, 6.678e-03, 1.812e-02), r);\n\tr = MulAdd(s0_3, M4(-1.682e-02, 3.792e-02, -9.146e-02, -8.048e-03, 1.158e-01, 6.700e-04, 2.752e-02, -5.915e-03, -6.619e-02, -2.281e-01, -1.466e-01, 1.194e-01, -7.796e-02, 2.379e-01, 4.111e-03, -6.715e-02), r);\n\tr = MulAdd(s0_4, M4(-2.327e-01, 8.179e-02, -2.227e-01, -1.154e-01, -3.701e-02, 2.974e-02, 8.689e-02, -9.778e-02, 7.231e-02, -8.271e-02, -7.702e-02, -6.086e-02, -7.075e-02, 3.773e-02, 1.167e-01, 1.593e-02), r);\n\tr = MulAdd(s0_5, M4(2.426e-02, 4.114e-02, -7.095e-02, 1.081e-01, 2.005e-03, 2.834e-02, -4.480e-02, -1.039e-03, -3.527e-02, 9.050e-02, 8.530e-02, -2.006e-02, 2.647e-02, 4.315e-02, 4.213e-02, 6.488e-02), r);\n\tr = MulAdd(s0_6, M4(-3.340e-02, 4.409e-02, 2.409e-04, 3.593e-03, -1.914e-03, 5.568e-02, -1.601e-02, 6.657e-02, -3.951e-02, 1.302e-02, 8.837e-02, 6.599e-02, 5.774e-02, -9.646e-02, -4.925e-02, -7.544e-02), r);\n\tr = MulAdd(s0_7, M4(-4.754e-02, 3.320e-02, -6.046e-02, -5.000e-02, 1.162e-01, -6.466e-03, 1.049e-01, -4.923e-02, 4.806e-02, -2.365e-03, 4.935e-02, -1.513e-02, 6.068e-02, -4.087e-02, -2.004e-02, 1.045e-01), r);\n\tr = MulAdd(s0_8, M4(4.572e-02, 2.684e-02, 4.193e-02, -6.155e-03, -1.725e-02, 1.555e-02, 1.902e-02, -7.173e-02, 3.296e-02, -2.906e-02, -3.089e-02, 1.108e-01, -2.672e-02, -1.714e-03, -2.541e-02, 1.468e-02), r);\n\tr = MulAdd(s1_0, M4(1.692e-01, -3.109e-01, 7.963e-02, 3.339e-02, 4.335e-02, -8.582e-03, 9.552e-03, -2.264e-02, -7.118e-02, 2.155e-02, 5.057e-02, 3.908e-03, -2.734e-02, 7.640e-03, -4.017e-02, 1.679e-02), r);\n\tr = MulAdd(s1_1, M4(-4.408e-02, -2.848e-01, 9.724e-02, -6.205e-02, -6.897e-03, -1.005e-01, 7.328e-02, -2.755e-02, -3.623e-02, 8.837e-03, -1.560e-02, -7.135e-02, 1.371e-02, 1.046e-01, 1.830e-02, -2.500e-02), r);\n\tr = MulAdd(s1_2, M4(-4.164e-02, -5.760e-02, -4.867e-03, -4.731e-02, -1.110e-02, -3.070e-02, 2.912e-02, 3.289e-02, 3.885e-02, -5.508e-04, -1.053e-02, 1.754e-02, 5.379e-03, -5.888e-02, 3.521e-02, -2.847e-02), r);\n\tr = MulAdd(s1_3, M4(1.379e-02, 1.928e-01, -9.303e-03, 5.900e-02, -1.323e-01, 8.078e-02, -5.612e-02, -5.716e-02, 3.289e-02, -9.726e-02, -8.349e-02, 5.944e-02, -6.001e-02, 6.552e-03, 2.450e-03, -3.166e-02), r);\n\tr = MulAdd(s1_4, M4(-1.411e-01, -1.940e-02, -3.377e-01, -9.430e-02, -2.508e-02, 1.420e-01, -2.662e-02, 1.240e-01, -9.893e-02, 1.008e-01, -1.202e-01, -4.663e-02, -8.621e-02, -6.152e-02, -1.013e-01, -4.004e-03), r);\n\tr = MulAdd(s1_5, M4(1.475e-02, 5.437e-02, -1.313e-02, 8.481e-02, 6.013e-02, 1.428e-02, 2.697e-03, 7.665e-02, 2.210e-02, -4.551e-02, -6.520e-02, 3.908e-03, 2.881e-02, 2.892e-02, 9.411e-02, 1.113e-02), r);\n\tr = MulAdd(s1_6, M4(1.295e-02, 2.119e-02, 3.595e-02, -1.883e-02, 5.922e-02, 1.354e-01, 1.468e-02, 1.992e-02, 8.332e-02, 2.735e-02, -5.336e-02, 7.069e-02, -2.745e-02, -4.790e-02, -7.620e-02, 2.050e-02), r);\n\tr = MulAdd(s1_7, M4(-1.151e-01, 1.238e-02, -3.719e-03, -8.327e-03, -1.265e-01, 4.812e-02, 9.510e-03, 2.710e-02, 1.868e-02, -3.206e-02, -1.689e-02, 8.033e-02, 4.113e-02, 8.544e-02, -2.066e-03, 2.793e-02), r);\n\tr = MulAdd(s1_8, M4(-2.543e-02, 2.565e-02, 5.130e-02, 3.102e-03, 5.037e-02, 4.359e-02, -5.993e-02, 1.153e-01, 4.809e-03, 4.918e-02, 3.962e-02, -4.677e-03, 1.491e-02, -5.397e-02, -2.091e-02, 1.154e-02), r);\n\tr = MulAdd(s2_0, M4(-4.696e-02, -6.299e-02, -2.885e-02, -3.337e-02, 5.491e-02, -7.292e-02, -2.948e-02, -5.428e-02, -4.811e-02, 1.687e-01, 9.580e-03, -3.189e-02, 1.525e-01, -1.680e-03, 2.752e-02, -5.007e-04), r);\n\tr = MulAdd(s2_1, M4(6.137e-02, 8.930e-02, 1.935e-02, -9.878e-02, 6.470e-03, -1.180e-03, 4.439e-02, -4.159e-02, 7.039e-02, 6.277e-02, -4.220e-02, -3.506e-02, -7.495e-02, -4.569e-02, 9.915e-02, -4.819e-02), r);\n\tr = MulAdd(s2_2, M4(-6.690e-03, -4.709e-02, -8.617e-03, 1.128e-02, -1.234e-02, -5.296e-02, -1.959e-02, 8.562e-03, 2.983e-02, 6.469e-02, -8.118e-03, 9.698e-03, 1.594e-02, 1.233e-01, 7.226e-02, 4.709e-02), r);\n\tr = MulAdd(s2_3, M4(1.362e-01, 9.432e-02, 6.378e-02, -2.612e-02, 4.053e-02, -3.164e-02, 2.733e-02, -2.000e-02, 1.917e-01, 3.272e-02, -4.118e-02, -2.870e-02, 1.899e-01, 1.436e-02, 6.496e-02, -2.292e-02), r);\n\tr = MulAdd(s2_4, M4(-1.569e-02, 7.891e-03, 1.097e-01, -1.259e-01, 5.660e-03, -2.804e-02, -1.121e-01, 4.181e-02, 1.050e-01, -3.083e-02, -4.846e-02, -8.452e-02, 1.462e-02, -8.250e-02, -1.173e-01, -9.593e-03), r);\n\tr = MulAdd(s2_5, M4(-1.959e-02, 4.876e-03, 6.666e-02, 2.711e-02, 5.521e-02, 2.238e-02, 2.469e-02, 1.929e-01, -3.808e-02, -1.214e-01, -4.719e-02, 1.663e-01, -5.399e-02, -1.247e-01, -1.763e-01, -4.044e-02), r);\n\tr = MulAdd(s2_6, M4(1.661e-01, -7.206e-02, 4.163e-02, -7.267e-02, 3.635e-02, -3.221e-02, 3.350e-03, -6.100e-03, 2.232e-02, -4.944e-03, -3.431e-02, -1.230e-01, -5.037e-02, 7.514e-02, 2.936e-02, 3.774e-03), r);\n\tr = MulAdd(s2_7, M4(-2.536e-03, -2.618e-02, -1.153e-02, -5.133e-02, -5.048e-02, -7.482e-03, -9.806e-03, -2.532e-02, -1.631e-02, 1.052e-03, 6.459e-02, 1.764e-02, -3.458e-03, 1.575e-02, 2.013e-02, 1.126e-01), r);\n\tr = MulAdd(s2_8, M4(-1.950e-03, 1.616e-02, 4.400e-02, -2.765e-03, -2.407e-02, 2.714e-02, 6.637e-02, 5.078e-02, -2.704e-02, 6.811e-02, -6.171e-02, -6.063e-02, -3.555e-03, -7.526e-03, -1.073e-02, -6.472e-02), r);\n\tr = MulAdd(s3_0, M4(-1.586e-02, -8.472e-02, 1.757e-02, -7.384e-04, 7.426e-03, -6.145e-02, 1.518e-02, -5.079e-02, 3.692e-02, -2.280e-02, 1.228e-02, 2.641e-02, -2.579e-02, -2.550e-02, -9.544e-03, 2.705e-03), r);\n\tr = MulAdd(s3_1, M4(-3.033e-02, 1.983e-02, -6.241e-03, -6.516e-02, -4.897e-02, -1.499e-01, -2.616e-02, 5.815e-02, 7.285e-02, 1.058e-01, 8.509e-02, 5.656e-02, -7.548e-02, -1.785e-01, 3.110e-02, -1.290e-02), r);\n\tr = MulAdd(s3_2, M4(-2.506e-03, -8.837e-02, -4.282e-02, -2.442e-02, -1.142e-02, -1.472e-01, 8.187e-02, -6.503e-03, 4.318e-03, 1.718e-02, 3.119e-02, 4.592e-02, 4.852e-02, 6.621e-02, 6.957e-02, 8.130e-02), r);\n\tr = MulAdd(s3_3, M4(7.670e-03, 4.436e-02, 3.912e-02, -2.809e-02, 3.055e-02, -1.178e-01, -4.016e-02, -1.266e-02, 2.756e-02, -1.929e-02, -2.997e-02, -3.582e-02, -9.364e-02, -8.080e-02, 1.828e-02, 2.897e-02), r);\n\tr = MulAdd(s3_4, M4(-8.633e-02, -6.935e-02, -7.481e-03, -1.387e-01, -4.836e-02, -1.039e-01, -5.183e-02, -1.802e-02, 4.349e-02, -1.398e-01, -1.713e-01, -7.101e-02, -4.267e-02, -3.547e-02, -2.141e-01, -3.583e-01), r);\n\tr = MulAdd(s3_5, M4(-6.121e-03, 2.361e-02, -1.575e-02, 7.977e-02, 4.023e-02, 6.795e-02, -1.890e-02, 6.154e-02, 3.224e-03, -1.176e-02, 4.541e-02, 7.858e-02, -5.268e-02, -3.705e-02, -1.409e-01, 9.165e-02), r);\n\tr = MulAdd(s3_6, M4(-2.116e-02, 4.334e-02, -2.392e-03, -3.574e-02, -6.518e-03, -3.482e-02, 6.002e-03, -2.301e-02, -7.438e-02, -2.872e-02, -6.940e-02, -2.751e-02, 1.971e-02, -1.097e-02, 6.442e-02, -5.565e-02), r);\n\tr = MulAdd(s3_7, M4(-2.776e-02, -1.469e-03, -5.992e-02, -8.719e-02, -2.990e-02, 3.825e-02, 3.316e-03, -1.588e-02, -2.449e-04, 2.527e-02, -2.485e-02, -1.512e-01, 5.911e-02, 3.865e-02, 9.859e-03, 1.625e-01), r);\n\tr = MulAdd(s3_8, M4(1.487e-02, -5.139e-03, 1.519e-02, 9.446e-03, -1.208e-02, -3.288e-02, 1.786e-03, 1.715e-02, 3.260e-02, -1.019e-01, -1.111e-01, -6.100e-02, -4.261e-02, -2.880e-02, 1.342e-02, -6.207e-02), r);\n\tr = MulAdd(s4_0, M4(7.473e-02, -9.843e-02, 4.634e-02, 1.222e-02, -9.640e-02, 8.247e-02, -3.801e-02, -2.276e-02, 1.277e-02, 4.691e-03, 2.958e-02, -2.230e-02, 1.357e-02, 1.769e-02, -4.195e-02, -6.130e-02), r);\n\tr = MulAdd(s4_1, M4(4.292e-02, 5.470e-02, 3.183e-03, 9.491e-02, -5.083e-02, -3.304e-02, -9.519e-02, 5.875e-02, -4.293e-03, -5.284e-02, 2.780e-02, 3.798e-02, 1.284e-02, -2.329e-03, 1.198e-02, -5.990e-02), r);\n\tr = MulAdd(s4_2, M4(-6.650e-02, 5.448e-02, -4.260e-02, -2.709e-02, 8.678e-02, 3.785e-02, 7.341e-02, -4.835e-02, -1.063e-02, -7.336e-02, 2.946e-03, -6.587e-02, -3.151e-02, 3.142e-02, -3.179e-02, 3.592e-02), r);\n\tr = MulAdd(s4_3, M4(1.646e-02, 1.071e-01, -8.085e-02, 9.750e-03, 2.637e-02, -5.760e-02, -2.088e-02, -1.460e-01, 7.848e-03, -5.850e-02, -1.927e-03, -1.073e-02, -7.960e-02, -1.548e-01, -2.802e-02, -8.254e-03), r);\n\tr = MulAdd(s4_4, M4(1.430e-01, -1.003e-01, -1.136e-01, 1.973e-01, -2.317e-01, 9.932e-02, 6.234e-02, -1.388e-02, 6.027e-02, 7.720e-03, 2.609e-02, -2.970e-02, -5.399e-03, -3.966e-02, -8.715e-02, 8.388e-02), r);\n\tr = MulAdd(s4_5, M4(-5.722e-02, 2.848e-02, 6.717e-02, -1.891e-01, 1.238e-01, 1.638e-02, -9.690e-02, 2.956e-02, 2.124e-02, -4.084e-02, 8.300e-03, -6.430e-02, -5.404e-02, -3.029e-03, -4.792e-02, 1.314e-01), r);\n\tr = MulAdd(s4_6, M4(-5.015e-02, -9.406e-02, 2.852e-02, -5.992e-03, 8.162e-02, -4.082e-02, -1.592e-03, 4.615e-02, -7.159e-02, 2.490e-02, 1.560e-02, -4.330e-02, -4.604e-02, 6.942e-02, -1.232e-02, 1.700e-03), r);\n\tr = MulAdd(s4_7, M4(6.375e-02, 6.614e-02, -1.595e-02, 5.002e-02, -5.885e-02, -6.411e-02, 7.694e-02, -2.888e-03, -4.576e-03, -6.373e-03, -5.908e-02, -6.341e-03, 7.994e-03, -2.970e-02, -2.836e-03, 1.464e-01), r);\n\tr = MulAdd(s4_8, M4(-6.851e-02, -9.533e-02, 1.039e-02, -7.268e-02, 1.300e-01, -2.387e-02, -4.770e-02, 1.225e-02, 7.557e-04, 1.826e-02, 2.401e-02, 2.455e-03, 9.505e-03, 1.583e-02, -7.808e-03, -4.432e-02), r);\n\tr = MulAdd(s5_0, M4(1.032e-02, -1.248e-01, -4.259e-02, -2.107e-02, -2.476e-02, -2.230e-02, 3.155e-03, -6.801e-03, -6.227e-02, 1.033e-01, 1.546e-02, -2.175e-03, -1.698e-02, 4.505e-02, 1.032e-01, -1.746e-02), r);\n\tr = MulAdd(s5_1, M4(7.643e-02, 4.087e-02, -5.026e-02, 9.843e-02, 5.734e-02, -1.803e-02, -3.746e-02, -4.964e-02, 1.173e-01, 1.584e-02, -1.999e-01, -7.213e-02, 3.227e-03, -5.543e-02, -8.192e-02, -2.449e-02), r);\n\tr = MulAdd(s5_2, M4(1.835e-02, 4.458e-03, 4.713e-02, 1.193e-02, -7.368e-03, -2.718e-02, -7.838e-02, 1.944e-02, -1.046e-02, 3.976e-02, -1.163e-01, -8.234e-02, -7.764e-02, -5.386e-03, -3.642e-02, -4.625e-03), r);\n\tr = MulAdd(s5_3, M4(-4.249e-02, -4.110e-02, -9.450e-02, -3.841e-02, 4.038e-02, -5.472e-02, -4.634e-02, 5.570e-02, -2.153e-01, 1.431e-01, 1.478e-01, -1.139e-01, 6.344e-02, -6.702e-02, -6.537e-02, 4.383e-02), r);\n\tr = MulAdd(s5_4, M4(2.586e-01, -1.978e-01, 2.032e-02, 4.913e-02, -8.419e-02, 4.377e-02, 3.250e-02, -5.745e-02, -1.402e-01, 5.409e-02, 2.995e-02, 1.815e-02, 5.592e-03, -2.316e-02, 1.624e-01, 2.534e-01), r);\n\tr = MulAdd(s5_5, M4(-3.445e-02, -4.932e-02, -1.166e-02, 7.935e-02, -2.074e-02, 1.331e-02, -6.949e-02, -9.694e-02, 7.806e-02, -4.970e-02, 8.471e-02, -3.458e-03, -5.019e-02, 4.166e-03, -9.217e-02, -5.729e-02), r);\n\tr = MulAdd(s5_6, M4(3.876e-02, 5.201e-04, 7.537e-02, -6.016e-02, 3.884e-02, 2.412e-02, 3.531e-02, -2.031e-02, -1.272e-01, -5.110e-02, -1.301e-01, -6.391e-03, -8.345e-03, 1.014e-01, 7.550e-02, -4.753e-03), r);\n\tr = MulAdd(s5_7, M4(9.155e-02, 8.092e-02, -4.110e-02, 2.557e-02, 6.704e-02, -4.796e-02, 9.720e-03, 6.098e-02, -1.181e-01, -1.338e-02, 1.684e-02, -3.873e-02, -3.165e-02, 3.809e-02, -8.942e-02, 1.094e-01), r);\n\tr = MulAdd(s5_8, M4(-1.930e-02, -1.798e-02, 5.993e-02, -3.256e-02, -2.257e-02, 5.359e-03, 7.253e-04, -4.748e-02, 9.689e-02, 2.043e-02, 1.876e-02, -7.769e-02, -1.006e-02, -1.476e-02, 1.630e-02, -3.216e-03), r);\n\tr = MulAdd(s6_0, M4(-1.942e-02, -1.636e-02, -2.003e-03, -9.176e-03, 4.595e-02, -3.816e-02, -6.196e-03, 4.540e-02, 4.486e-02, -5.883e-02, 4.952e-02, -4.961e-02, -2.278e-02, 8.348e-02, 4.060e-02, 3.106e-02), r);\n\tr = MulAdd(s6_1, M4(5.459e-02, -7.661e-03, 3.247e-02, -2.312e-02, 1.555e-03, 2.422e-03, 2.480e-02, 8.737e-03, 8.432e-03, 3.619e-02, 4.601e-02, 7.276e-02, 4.691e-02, -2.799e-02, -3.063e-02, -5.632e-02), r);\n\tr = MulAdd(s6_2, M4(1.771e-02, -4.439e-02, 8.003e-03, 4.068e-02, 2.212e-02, 2.882e-02, 3.817e-02, 1.550e-02, 4.477e-02, 5.303e-03, 4.320e-02, 8.337e-02, -2.148e-02, -1.042e-02, -4.141e-02, -7.424e-03), r);\n\tr = MulAdd(s6_3, M4(-1.046e-02, 1.348e-01, -7.347e-02, 3.864e-04, -2.987e-02, 1.721e-02, -1.031e-02, 1.365e-02, 1.127e-01, -1.271e-01, -2.893e-02, -2.252e-02, 7.782e-02, 6.553e-02, 1.611e-02, 7.165e-02), r);\n\tr = MulAdd(s6_4, M4(-1.647e-01, 8.367e-03, -1.954e-01, 3.519e-02, -6.066e-02, -1.751e-01, 1.987e-02, 4.552e-02, -3.052e-02, 1.324e-01, 7.788e-02, 1.411e-01, 5.785e-02, 8.841e-03, 3.008e-02, -1.193e-02), r);\n\tr = MulAdd(s6_5, M4(4.575e-02, 2.933e-02, -3.609e-02, -1.482e-02, -4.333e-02, -2.008e-02, -3.871e-02, -5.532e-02, 9.783e-02, 6.445e-02, 1.499e-01, 1.683e-01, -2.356e-02, 6.141e-02, 2.904e-03, 2.112e-02), r);\n\tr = MulAdd(s6_6, M4(-3.586e-02, 7.513e-03, 2.905e-02, -2.824e-02, 2.945e-02, -4.356e-02, 8.347e-04, 1.698e-03, 8.889e-02, -3.999e-02, -4.600e-02, -8.680e-03, -9.044e-03, -5.725e-03, 2.258e-03, 3.439e-02), r);\n\tr = MulAdd(s6_7, M4(-5.036e-02, 1.410e-01, 2.360e-03, -7.009e-02, 4.161e-02, -9.975e-02, -1.061e-01, -1.230e-02, -4.415e-02, -6.260e-02, 4.748e-02, 7.399e-02, 7.400e-02, 5.209e-02, 1.495e-02, 1.961e-02), r);\n\tr = MulAdd(s6_8, M4(3.887e-02, 2.861e-02, -5.926e-02, 3.014e-02, -4.256e-02, -3.001e-02, -5.039e-03, 1.458e-04, 6.518e-02, -2.086e-02, 5.172e-02, 3.376e-02, -2.826e-02, -1.956e-02, -6.630e-02, 2.044e-02), r);\n\tr = MulAdd(s7_0, M4(2.581e-02, -8.798e-02, -3.776e-02, 5.633e-02, -4.144e-02, 1.434e-01, 5.310e-02, 4.405e-02, 8.046e-04, -7.999e-02, 3.022e-02, -4.280e-02, -5.826e-02, 9.874e-02, 3.675e-02, 1.498e-02), r);\n\tr = MulAdd(s7_1, M4(4.093e-02, 1.469e-01, 3.709e-02, -2.254e-02, 5.227e-02, 1.961e-02, 2.499e-02, 4.711e-02, -4.289e-02, -3.350e-02, -1.520e-02, -1.267e-02, 1.336e-02, -1.772e-01, -7.237e-03, -6.089e-02), r);\n\tr = MulAdd(s7_2, M4(-3.291e-03, 4.629e-03, -2.715e-02, -4.765e-03, 4.204e-03, -7.442e-03, 1.517e-02, -3.461e-03, 6.636e-02, 6.446e-02, 5.237e-02, -1.822e-02, 1.204e-02, 9.596e-03, 2.026e-02, -4.059e-02), r);\n\tr = MulAdd(s7_3, M4(1.446e-01, 1.120e-01, 1.445e-02, 4.715e-02, -9.855e-02, 1.332e-01, 7.686e-02, 3.075e-02, 1.389e-01, -2.450e-02, -1.558e-01, 2.449e-02, -1.939e-02, -2.909e-02, 2.642e-02, 1.386e-02), r);\n\tr = MulAdd(s7_4, M4(-3.889e-02, 1.283e-01, 1.610e-01, -1.688e-01, 3.061e-02, -1.769e-01, 2.392e-01, 8.607e-02, -5.087e-02, 9.072e-02, 3.085e-02, -4.719e-02, 7.219e-02, 1.239e-01, 8.664e-02, -4.961e-02), r);\n\tr = MulAdd(s7_5, M4(7.244e-02, -2.825e-02, 7.402e-02, 3.481e-03, -3.425e-02, 4.283e-02, 7.261e-02, -8.555e-02, 1.067e-01, -8.323e-03, 1.513e-02, 7.220e-02, -5.575e-02, 1.445e-02, -1.231e-02, 8.109e-02), r);\n\tr = MulAdd(s7_6, M4(-1.548e-02, -1.125e-01, 7.741e-02, -2.596e-02, 3.716e-02, -4.756e-02, -3.039e-02, 3.515e-02, 1.175e-02, -5.446e-03, -3.847e-02, -9.783e-03, -3.526e-02, 6.083e-03, -2.624e-02, 3.069e-02), r);\n\tr = MulAdd(s7_7, M4(1.090e-01, -8.652e-02, 1.857e-01, 4.552e-02, -1.905e-02, 4.213e-02, -4.890e-03, -1.129e-01, -5.078e-02, -1.977e-02, 8.947e-02, 2.143e-02, 8.086e-03, -2.149e-02, 1.718e-02, -1.472e-02), r);\n\tr = MulAdd(s7_8, M4(-1.970e-02, -4.491e-03, -2.376e-02, -7.501e-02, -1.957e-03, 6.665e-02, 1.631e-02, -9.853e-03, 6.115e-02, 5.283e-03, -1.900e-02, -1.069e-02, -2.595e-02, -2.954e-02, -1.801e-02, 1.378e-02), r);\n\treturn r;\n}\n\nvoid Pass8(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 9\n//!DESC conv8\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.181e-03, 8.230e-03, -8.373e-04, -2.226e-04 };\n\tr = MulAdd(s0_0, M4(8.887e-02, 3.201e-02, 3.272e-03, 3.765e-02, 5.024e-02, 2.837e-02, 8.306e-03, 2.390e-02, -1.173e-01, -2.534e-02, -1.399e-01, 8.948e-02, -5.215e-03, -1.560e-02, 8.428e-03, -2.487e-02), r);\n\tr = MulAdd(s0_1, M4(5.189e-02, -5.796e-02, -4.014e-02, 3.733e-02, 3.837e-02, 9.472e-02, -6.379e-03, 1.350e-02, -1.656e-01, 5.211e-02, 1.362e-01, -6.236e-02, -2.758e-02, -6.192e-02, -1.576e-02, -2.115e-02), r);\n\tr = MulAdd(s0_2, M4(5.693e-02, 4.895e-02, -5.442e-02, -3.899e-03, -2.244e-02, -3.409e-02, 2.633e-02, 2.265e-02, -9.917e-02, -2.025e-01, 2.870e-02, -5.216e-02, 5.458e-02, 5.259e-02, 7.653e-03, -7.861e-03), r);\n\tr = MulAdd(s0_3, M4(3.048e-02, -2.534e-03, 1.112e-02, -9.310e-02, -4.621e-02, -1.901e-02, 7.749e-02, 6.284e-02, -2.183e-01, 7.311e-03, 8.476e-02, -5.162e-02, 4.214e-02, -2.302e-02, -5.391e-02, 5.794e-02), r);\n\tr = MulAdd(s0_4, M4(-9.152e-03, -1.432e-01, 2.792e-02, 8.631e-02, 5.127e-02, 6.313e-03, 5.178e-02, -2.321e-02, -4.154e-01, -2.910e-01, 5.044e-01, 1.183e-01, -3.116e-02, 8.087e-02, 5.677e-02, -3.368e-02), r);\n\tr = MulAdd(s0_5, M4(1.282e-02, 2.131e-02, 5.910e-03, 3.835e-02, 4.310e-02, 6.678e-02, -3.528e-03, -5.441e-03, -1.461e-01, 2.870e-01, 8.298e-02, -1.276e-01, 1.755e-02, 4.309e-03, 2.989e-02, -2.564e-02), r);\n\tr = MulAdd(s0_6, M4(7.705e-02, -1.516e-02, 2.567e-02, 1.081e-01, 2.617e-02, 2.163e-02, -4.291e-02, -9.064e-03, 8.263e-02, 2.934e-03, -3.025e-02, 1.798e-02, -9.562e-02, 2.937e-02, 3.906e-02, -2.487e-02), r);\n\tr = MulAdd(s0_7, M4(9.005e-02, 3.765e-02, -3.861e-02, 1.184e-02, -2.468e-02, -2.764e-03, 6.975e-03, 3.962e-02, 1.575e-02, 2.822e-02, -2.852e-02, 1.132e-01, 2.799e-02, -4.942e-05, 6.324e-02, -4.779e-02), r);\n\tr = MulAdd(s0_8, M4(-9.121e-03, -2.050e-02, -5.023e-03, 3.821e-02, -2.644e-02, 1.712e-02, 4.536e-02, -2.812e-02, 1.159e-01, -1.993e-02, -1.738e-01, -4.798e-02, 1.387e-03, -1.129e-02, -4.604e-02, 3.013e-02), r);\n\tr = MulAdd(s1_0, M4(-2.237e-02, 5.579e-02, -2.246e-02, 3.570e-02, -2.149e-02, 8.068e-02, -1.792e-02, 3.440e-02, -1.433e-02, 1.115e-02, 1.515e-02, 2.813e-02, -1.558e-02, -3.391e-02, -1.400e-02, -4.613e-02), r);\n\tr = MulAdd(s1_1, M4(-1.341e-02, 2.247e-02, 3.174e-02, -1.056e-02, 4.711e-02, 2.507e-01, 5.819e-02, -2.294e-02, 5.427e-03, 2.027e-02, 1.049e-03, -1.555e-02, -4.490e-02, -3.285e-02, -5.561e-02, 2.131e-02), r);\n\tr = MulAdd(s1_2, M4(3.709e-02, -1.982e-02, 4.372e-03, -3.034e-03, 3.273e-02, 3.586e-02, -3.369e-02, 9.327e-04, -3.915e-02, -2.741e-02, 3.030e-03, -9.380e-05, -5.189e-02, 2.277e-02, 4.675e-02, 5.198e-03), r);\n\tr = MulAdd(s1_3, M4(-7.693e-02, 8.631e-05, 2.404e-02, -5.598e-02, 1.511e-03, 4.933e-02, 5.708e-02, -8.107e-02, 3.209e-02, -1.408e-02, 3.269e-03, 2.666e-02, -1.425e-01, -1.133e-01, -1.107e-02, -1.065e-01), r);\n\tr = MulAdd(s1_4, M4(-3.071e-02, -9.263e-02, -7.140e-03, -1.791e-03, -2.620e-01, 2.204e-01, 1.028e-01, -6.621e-02, -2.582e-02, -5.728e-02, 3.437e-02, -1.372e-02, 5.936e-03, -3.954e-01, -4.912e-02, -4.338e-02), r);\n\tr = MulAdd(s1_5, M4(5.105e-03, -1.751e-02, 2.083e-02, -5.066e-02, 1.203e-01, -2.110e-02, 2.213e-02, -5.408e-02, 4.408e-02, 1.305e-02, 5.215e-04, -2.305e-02, -1.895e-02, 2.121e-01, 7.568e-03, -1.781e-02), r);\n\tr = MulAdd(s1_6, M4(-1.679e-02, -4.701e-02, 3.984e-03, 1.883e-02, 1.751e-02, -8.799e-03, -5.917e-02, -7.541e-02, 3.519e-02, 1.518e-02, -2.381e-02, -4.177e-02, -6.473e-02, -2.278e-02, -1.700e-02, -2.191e-02), r);\n\tr = MulAdd(s1_7, M4(2.106e-02, -4.757e-02, -1.853e-02, 2.467e-02, 4.212e-02, 5.024e-02, -9.230e-02, -3.573e-02, -4.607e-03, -2.600e-02, -1.520e-03, 8.444e-02, -9.903e-02, -2.004e-01, 2.285e-01, 1.495e-02), r);\n\tr = MulAdd(s1_8, M4(-4.115e-02, -5.467e-02, -4.223e-03, -8.214e-03, -4.322e-03, 5.092e-02, 2.288e-02, -2.948e-03, 6.988e-03, 4.056e-02, 7.262e-03, -2.476e-02, -5.517e-02, 5.640e-02, -1.188e-02, -1.767e-02), r);\n\tr = MulAdd(s2_0, M4(-1.913e-02, 2.134e-03, 1.936e-02, -2.429e-02, -5.421e-02, -2.326e-02, -5.509e-02, -3.796e-02, -3.348e-02, 3.749e-02, 1.311e-02, 2.045e-02, 3.166e-03, 1.811e-02, -1.005e-02, 1.696e-02), r);\n\tr = MulAdd(s2_1, M4(-9.150e-02, -1.023e-01, 7.368e-03, 2.306e-02, 7.247e-02, -8.859e-02, -2.536e-02, -6.319e-03, -2.311e-02, -1.426e-04, 4.821e-02, -6.262e-02, -1.403e-03, -1.258e-02, 2.554e-02, -1.763e-02), r);\n\tr = MulAdd(s2_2, M4(2.814e-02, 3.237e-02, -6.889e-03, 3.033e-02, 3.767e-02, 2.573e-02, -1.026e-01, -4.388e-02, -5.742e-03, -5.933e-02, 2.558e-02, -7.563e-03, -4.052e-02, -4.367e-02, 7.445e-03, -2.313e-02), r);\n\tr = MulAdd(s2_3, M4(1.518e-03, 5.084e-02, -2.629e-02, -7.922e-04, -7.820e-02, -4.543e-02, -3.833e-02, -3.059e-02, 2.764e-02, 2.558e-02, -1.724e-02, 1.145e-01, -1.394e-02, -7.350e-03, 2.198e-02, -1.572e-02), r);\n\tr = MulAdd(s2_4, M4(-4.070e-02, -2.989e-02, 8.852e-02, -3.323e-02, -1.839e-01, 2.319e-01, 1.441e-01, -6.286e-02, 4.204e-02, 1.371e-01, -7.721e-02, 3.164e-02, -3.207e-02, -1.033e-01, -1.103e-02, 1.647e-02), r);\n\tr = MulAdd(s2_5, M4(-3.430e-02, -5.789e-02, 5.859e-02, 5.950e-02, -4.161e-03, -1.968e-01, -5.103e-02, -2.885e-02, -4.215e-02, -4.254e-02, -9.712e-03, -6.761e-03, 1.942e-02, -1.867e-02, -3.283e-02, 1.285e-02), r);\n\tr = MulAdd(s2_6, M4(9.657e-03, -2.888e-02, -2.190e-02, 4.982e-02, 1.119e-01, -1.187e-02, 2.497e-03, -2.191e-02, -4.578e-02, -1.121e-02, -3.918e-02, -5.578e-02, 3.260e-02, 1.351e-02, -1.695e-02, -1.870e-02), r);\n\tr = MulAdd(s2_7, M4(-6.146e-03, -5.304e-03, -2.515e-02, 6.409e-03, -1.061e-01, -6.602e-02, 1.038e-01, 7.992e-02, -1.125e-02, -1.140e-01, 2.139e-02, 1.562e-02, 3.380e-02, -4.087e-02, -3.406e-02, 2.572e-02), r);\n\tr = MulAdd(s2_8, M4(-4.541e-03, -1.534e-02, -1.960e-02, 4.713e-03, 3.191e-02, 3.243e-02, -3.525e-03, 8.842e-02, 2.320e-02, -5.254e-02, 5.576e-03, -6.195e-04, -1.623e-02, 9.936e-03, 2.434e-02, -1.706e-02), r);\n\tr = MulAdd(s3_0, M4(-6.865e-02, -2.470e-03, -7.014e-02, 9.169e-02, 8.304e-03, 1.561e-02, -3.308e-02, 6.586e-03, 5.683e-02, -3.107e-02, 1.599e-02, 1.966e-02, 8.197e-03, -8.098e-02, 3.804e-02, 2.126e-03), r);\n\tr = MulAdd(s3_1, M4(2.214e-02, 1.383e-01, 1.963e-01, 5.929e-02, 1.310e-02, 3.765e-02, 5.032e-04, 1.223e-02, 5.856e-03, -6.911e-02, -1.580e-02, -4.967e-02, 7.396e-02, 8.123e-02, -2.005e-02, 2.053e-02), r);\n\tr = MulAdd(s3_2, M4(2.141e-02, 4.417e-02, -2.593e-02, 1.296e-02, -4.732e-03, 2.229e-02, -1.534e-02, -8.790e-03, -6.795e-03, -3.142e-02, -1.915e-02, -3.137e-03, -8.709e-02, -1.506e-01, 1.318e-01, 3.611e-02), r);\n\tr = MulAdd(s3_3, M4(-3.602e-02, 1.065e-02, 6.388e-02, 6.761e-02, -8.897e-02, 1.601e-02, 1.340e-02, -9.509e-03, 1.011e-01, -9.129e-03, 1.162e-02, 7.398e-02, 2.940e-01, -2.547e-01, -4.550e-02, -1.246e-02), r);\n\tr = MulAdd(s3_4, M4(3.596e-02, 3.200e-01, -1.405e-01, -2.549e-01, -2.897e-02, 5.599e-02, 1.866e-02, -4.516e-02, 1.024e-02, 2.166e-03, -1.358e-02, 1.027e-01, 2.121e-01, 1.760e-01, -2.349e-01, 5.819e-02), r);\n\tr = MulAdd(s3_5, M4(-9.025e-02, -1.524e-01, 2.781e-01, -3.188e-02, 1.139e-02, -1.866e-02, 1.844e-02, 2.610e-02, -4.711e-03, -3.051e-03, -5.856e-02, 2.500e-02, 6.084e-02, -1.612e-02, -6.092e-02, -4.106e-02), r);\n\tr = MulAdd(s3_6, M4(-4.519e-02, 6.426e-02, -5.022e-02, -6.991e-02, -6.298e-03, 3.535e-02, 4.076e-02, -1.325e-02, 4.969e-02, 1.608e-02, -5.519e-03, -1.369e-02, -7.312e-02, 6.747e-02, 6.830e-02, 3.065e-03), r);\n\tr = MulAdd(s3_7, M4(-4.999e-02, -1.162e-02, 1.204e-01, 2.076e-01, 8.110e-02, 4.946e-02, -5.974e-02, -8.557e-02, 1.209e-02, 2.526e-02, 3.859e-02, -5.364e-02, 1.788e-02, 5.056e-02, 2.686e-02, 7.050e-02), r);\n\tr = MulAdd(s3_8, M4(7.296e-02, -7.147e-02, -1.277e-01, 1.150e-01, -4.047e-02, -2.960e-02, 3.931e-02, 1.868e-02, 5.949e-02, 3.640e-02, 8.097e-03, 1.534e-02, 2.215e-02, -2.979e-02, 3.785e-02, -4.045e-02), r);\n\tr = MulAdd(s4_0, M4(2.419e-02, -3.334e-02, -6.239e-02, 1.849e-02, -1.288e-01, 3.855e-03, 8.238e-03, -3.097e-03, -2.360e-02, 3.227e-03, -2.656e-02, -7.296e-02, -2.975e-02, 1.910e-02, 3.925e-02, -1.792e-02), r);\n\tr = MulAdd(s4_1, M4(-2.377e-02, 1.642e-02, -1.290e-02, 5.035e-02, -8.455e-03, -9.846e-02, 2.072e-02, -1.479e-01, 1.688e-01, 8.426e-02, 7.203e-02, 6.841e-02, -5.795e-02, 1.265e-01, 1.150e-02, 6.977e-02), r);\n\tr = MulAdd(s4_2, M4(-1.809e-02, -9.698e-03, 1.761e-02, 1.454e-02, -8.195e-03, -6.953e-02, 4.992e-02, -4.566e-02, -7.422e-02, -1.824e-02, -4.712e-02, -5.545e-03, -2.661e-02, 4.049e-02, 2.054e-02, 3.071e-02), r);\n\tr = MulAdd(s4_3, M4(1.207e-02, -4.860e-02, 1.842e-02, 4.550e-02, 1.145e-02, -3.759e-02, -5.589e-02, -1.074e-01, 9.698e-02, 7.776e-02, -1.022e-02, 1.271e-01, -4.734e-02, 2.670e-02, -3.132e-02, -2.664e-02), r);\n\tr = MulAdd(s4_4, M4(5.663e-02, -4.446e-02, -6.395e-02, -6.242e-02, -6.249e-02, -1.642e-01, 2.852e-02, 1.742e-01, 1.478e-01, 3.719e-01, -7.803e-02, -3.928e-01, 1.613e-01, 2.810e-01, -6.044e-02, 3.681e-02), r);\n\tr = MulAdd(s4_5, M4(1.708e-02, 2.751e-02, 6.601e-03, 3.119e-02, -7.969e-03, 1.282e-01, -3.515e-02, -1.187e-01, 6.335e-02, -1.502e-01, -4.561e-02, -2.970e-02, -1.501e-01, 5.000e-01, -2.194e-01, 4.952e-02), r);\n\tr = MulAdd(s4_6, M4(8.606e-02, -5.005e-02, 2.406e-02, 1.606e-01, 4.853e-02, -2.827e-02, 6.015e-02, 9.987e-02, -1.819e-02, 4.406e-02, -9.072e-03, -8.452e-03, 4.792e-04, -1.547e-02, 2.470e-02, 3.105e-03), r);\n\tr = MulAdd(s4_7, M4(8.391e-03, 9.081e-02, -9.720e-03, -1.825e-02, 8.768e-02, -1.014e-02, -1.528e-01, -1.106e-01, 7.172e-03, 1.264e-01, -2.313e-02, -3.496e-02, -2.137e-01, -3.030e-02, 9.430e-02, -1.309e-01), r);\n\tr = MulAdd(s4_8, M4(-2.614e-02, 4.468e-02, 4.065e-02, -2.869e-02, -1.297e-02, -2.339e-02, -2.540e-03, 1.588e-02, -4.478e-02, 3.770e-02, 3.070e-02, 7.073e-03, -4.713e-02, 8.982e-02, 1.057e-01, -1.787e-01), r);\n\tr = MulAdd(s5_0, M4(1.929e-01, -6.049e-02, 1.261e-02, -7.127e-02, -1.489e-01, 1.863e-02, 4.513e-02, -4.118e-03, -5.224e-03, -2.984e-02, -3.773e-02, 6.289e-03, 4.134e-02, 1.385e-02, 8.470e-03, 1.358e-02), r);\n\tr = MulAdd(s5_1, M4(1.664e-02, -1.110e-03, -2.606e-01, 1.177e-01, 5.526e-03, 6.164e-02, 1.086e-01, -9.018e-02, -1.285e-01, -8.475e-02, -7.029e-03, -4.614e-02, -1.016e-02, 6.228e-03, -6.354e-03, -1.944e-02), r);\n\tr = MulAdd(s5_2, M4(2.205e-02, 1.012e-01, -6.228e-02, -2.201e-02, -3.456e-02, -3.355e-02, 2.056e-02, -2.969e-03, -1.091e-01, -1.215e-01, 5.271e-02, 3.107e-02, -1.952e-02, -3.789e-02, -4.389e-03, 1.075e-02), r);\n\tr = MulAdd(s5_3, M4(1.921e-01, 1.543e-01, -1.211e-01, 3.928e-01, 4.351e-02, -2.524e-02, -6.480e-02, 1.052e-01, -2.238e-02, 2.424e-02, -3.844e-02, 9.200e-03, 4.739e-03, -9.607e-03, -1.322e-02, 3.699e-02), r);\n\tr = MulAdd(s5_4, M4(-2.783e-01, 7.867e-02, -2.074e-01, 2.666e-01, 5.335e-02, 1.131e-01, -2.982e-01, 2.570e-02, 3.721e-02, 2.780e-02, -1.026e-01, -1.936e-01, -2.599e-04, 4.792e-02, 2.084e-02, -4.745e-02), r);\n\tr = MulAdd(s5_5, M4(1.033e-01, 7.341e-02, -2.279e-02, -5.819e-02, -8.561e-02, 8.010e-03, -3.334e-03, -2.201e-02, 2.485e-02, -2.677e-02, -7.876e-02, 4.692e-02, -1.914e-03, -2.119e-02, 2.180e-02, 5.092e-02), r);\n\tr = MulAdd(s5_6, M4(7.233e-03, -1.247e-01, -1.209e-02, -8.267e-02, 1.057e-03, -1.752e-02, 7.966e-02, -6.080e-03, 3.715e-02, -1.670e-03, -3.067e-03, 1.106e-01, -2.165e-02, 7.407e-04, -8.410e-03, 1.055e-03), r);\n\tr = MulAdd(s5_7, M4(-3.666e-02, 1.788e-02, 1.756e-02, 9.302e-02, 7.233e-03, -7.879e-03, -1.701e-02, 6.506e-03, 6.389e-03, -4.760e-06, -2.765e-02, -1.567e-02, -2.391e-02, -4.882e-02, -3.183e-02, -1.139e-02), r);\n\tr = MulAdd(s5_8, M4(1.248e-01, -5.499e-02, -1.877e-01, 3.818e-02, -1.905e-02, 5.370e-03, -2.512e-02, -2.418e-03, -4.736e-02, 2.345e-02, 1.898e-02, -5.234e-02, -7.952e-02, -5.534e-03, 6.866e-02, -1.501e-02), r);\n\tr = MulAdd(s6_0, M4(3.349e-02, 3.433e-02, 2.367e-03, 1.707e-02, 2.834e-04, 2.968e-02, -1.011e-02, 3.636e-02, 6.394e-02, -4.141e-02, -7.244e-02, -8.106e-03, 2.991e-02, 8.409e-03, -2.334e-02, 2.244e-02), r);\n\tr = MulAdd(s6_1, M4(3.531e-02, 4.867e-02, 5.204e-03, -1.661e-02, 1.252e-02, 3.131e-02, 3.468e-02, -1.069e-02, 2.216e-02, -5.971e-02, -2.087e-01, -1.454e-03, -8.230e-02, 1.256e-02, 3.144e-02, -6.300e-03), r);\n\tr = MulAdd(s6_2, M4(1.198e-02, -1.093e-01, 2.009e-03, 5.850e-03, 4.185e-02, -4.072e-04, 1.377e-02, -2.387e-03, -6.416e-02, -3.365e-02, -7.202e-02, -2.289e-02, -9.483e-03, -1.216e-02, -3.992e-02, 1.798e-02), r);\n\tr = MulAdd(s6_3, M4(-2.601e-02, 4.478e-02, 3.726e-02, 8.723e-02, -3.169e-02, -5.242e-03, 2.795e-02, -9.956e-03, -2.930e-02, -1.820e-03, -1.177e-02, -1.033e-01, 2.332e-02, -3.233e-02, 7.997e-03, 7.938e-02), r);\n\tr = MulAdd(s6_4, M4(1.140e-02, -2.316e-02, -3.004e-02, -2.630e-02, 8.140e-03, -1.012e-01, -2.611e-03, -5.549e-02, 1.747e-01, 8.882e-02, -1.212e-01, 3.937e-02, 5.680e-02, -1.092e-02, -5.874e-02, 1.098e-01), r);\n\tr = MulAdd(s6_5, M4(4.590e-02, 3.616e-02, -1.270e-01, -9.277e-03, 2.422e-02, -9.688e-02, -1.732e-02, -3.310e-02, -3.165e-02, 2.455e-02, -8.957e-02, 1.277e-02, -9.996e-03, 2.412e-02, 3.442e-02, -1.002e-02), r);\n\tr = MulAdd(s6_6, M4(-1.275e-02, 5.449e-03, -4.332e-03, -1.923e-02, 6.185e-02, 2.942e-02, -2.970e-02, 1.438e-02, -5.858e-02, 1.987e-02, 5.388e-02, 1.758e-02, 1.038e-02, -2.942e-02, -6.372e-02, -5.622e-02), r);\n\tr = MulAdd(s6_7, M4(-4.430e-02, 3.630e-02, 8.744e-03, -5.341e-02, 1.083e-01, 3.413e-02, -1.207e-01, 1.866e-02, -1.196e-02, 6.106e-02, 1.101e-01, 1.858e-03, 1.266e-02, -1.900e-02, -2.594e-02, 1.300e-02), r);\n\tr = MulAdd(s6_8, M4(-7.216e-02, -3.953e-03, 5.978e-02, 2.634e-02, -2.210e-02, -3.100e-02, -3.031e-02, 9.694e-03, -3.416e-02, 6.459e-03, 2.769e-02, -5.562e-02, -1.805e-02, -3.524e-02, 1.197e-02, -2.079e-03), r);\n\tr = MulAdd(s7_0, M4(2.432e-02, -3.764e-02, 2.184e-06, -9.107e-03, -3.065e-02, -1.918e-02, -2.148e-02, -5.258e-02, -3.428e-02, 4.043e-02, -7.553e-02, -2.058e-02, 3.945e-02, 3.997e-02, 4.444e-02, -1.918e-02), r);\n\tr = MulAdd(s7_1, M4(1.699e-02, -1.853e-02, -1.586e-02, -3.566e-02, 9.624e-02, 1.364e-01, -3.323e-03, 6.777e-02, 5.119e-02, -5.110e-02, 2.388e-02, -5.701e-03, -1.320e-01, -2.138e-01, 4.052e-02, -1.073e-02), r);\n\tr = MulAdd(s7_2, M4(3.618e-02, 7.331e-02, -2.008e-02, -4.520e-02, -3.762e-02, -2.573e-02, -4.067e-02, -6.379e-03, -3.185e-02, -1.700e-02, -2.503e-02, -1.310e-02, 4.268e-02, 8.023e-02, -2.566e-02, 1.200e-02), r);\n\tr = MulAdd(s7_3, M4(5.186e-02, -1.451e-01, 1.294e-03, -8.585e-02, 1.538e-01, -8.961e-02, 4.282e-02, 1.006e-01, 1.072e-01, -1.157e-01, -1.704e-02, 1.783e-02, 7.231e-02, 3.331e-03, 2.005e-02, -3.466e-02), r);\n\tr = MulAdd(s7_4, M4(8.486e-02, -2.125e-01, 3.064e-02, 3.166e-01, 5.850e-02, 1.479e-01, -9.927e-02, -3.233e-01, 3.735e-01, 6.033e-03, -2.300e-01, -2.835e-01, 1.770e-02, 1.745e-01, -1.580e-01, -6.637e-02), r);\n\tr = MulAdd(s7_5, M4(-2.507e-02, 2.838e-03, 6.493e-02, 4.726e-02, -1.672e-01, -2.349e-01, 1.630e-01, 8.437e-02, 6.116e-02, 3.310e-02, -5.197e-02, 2.226e-02, 4.672e-03, -1.372e-01, 8.634e-03, -1.429e-02), r);\n\tr = MulAdd(s7_6, M4(-3.649e-02, -1.269e-02, -1.024e-02, 2.659e-02, -1.143e-02, 1.632e-02, -2.783e-02, -1.192e-01, 5.262e-02, 3.661e-03, -4.617e-02, -2.578e-02, 1.772e-02, -1.441e-01, -5.866e-02, -8.424e-02), r);\n\tr = MulAdd(s7_7, M4(-8.299e-02, -9.926e-02, 5.071e-02, -3.511e-02, -2.202e-01, -2.311e-01, 2.417e-01, 3.174e-01, 6.560e-03, 3.771e-02, -6.069e-02, 8.530e-02, 3.150e-02, -1.810e-03, 1.121e-02, -3.748e-02), r);\n\tr = MulAdd(s7_8, M4(-3.565e-02, 4.143e-02, 1.022e-02, -8.715e-02, 5.984e-02, 1.291e-01, -1.059e-02, -2.838e-01, 3.367e-02, 1.852e-02, 1.254e-02, -5.066e-02, 5.227e-03, -4.538e-03, -1.702e-02, 6.824e-03), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.831e-03, -2.140e-04, -1.201e-04, 7.332e-03 };\n\tr = MulAdd(s0_0, M4(3.735e-02, 7.321e-03, -9.063e-02, 2.655e-02, 5.782e-03, -1.955e-02, 4.747e-03, -1.940e-02, 4.638e-02, -4.222e-03, 1.020e-01, -2.915e-02, -6.362e-02, -1.949e-02, 8.342e-03, 1.491e-02), r);\n\tr = MulAdd(s0_1, M4(-4.903e-02, 9.009e-02, -4.578e-02, 5.669e-02, 5.086e-02, 3.943e-02, -1.008e-01, -1.949e-03, -1.187e-01, 1.094e-01, -1.198e-01, 8.811e-02, -2.927e-02, 1.096e-02, 4.834e-02, 1.965e-02), r);\n\tr = MulAdd(s0_2, M4(1.657e-02, 5.933e-03, -2.361e-02, 7.328e-02, 3.851e-02, -8.436e-04, 4.338e-03, 2.002e-04, -3.099e-03, -4.612e-03, 6.618e-02, -5.134e-02, 4.999e-02, -1.884e-02, -9.779e-03, 4.197e-02), r);\n\tr = MulAdd(s0_3, M4(-2.789e-02, -1.824e-02, -3.909e-02, 4.040e-02, 1.013e-02, 8.704e-02, 1.274e-02, -3.519e-02, -2.138e-01, 2.234e-02, -2.230e-01, 5.964e-02, 1.265e-01, -1.117e-02, 3.896e-02, -2.179e-02), r);\n\tr = MulAdd(s0_4, M4(-3.369e-02, 3.132e-02, -2.603e-02, -1.647e-01, -7.495e-02, -7.839e-02, -3.332e-02, -9.295e-02, -4.065e-02, -1.203e-01, -7.278e-03, -4.638e-01, -6.658e-02, 7.366e-04, 3.104e-02, -1.348e-01), r);\n\tr = MulAdd(s0_5, M4(-2.310e-02, 3.044e-02, -2.977e-02, 6.350e-02, 1.043e-02, 4.835e-03, -1.005e-03, 1.369e-02, 2.835e-02, -4.378e-02, -1.284e-02, 1.836e-01, -1.514e-01, 2.900e-04, -4.419e-03, 3.467e-02), r);\n\tr = MulAdd(s0_6, M4(-1.773e-02, 8.370e-02, -4.369e-02, 4.831e-03, 6.303e-03, -2.615e-02, -4.635e-02, 1.748e-02, 1.000e-01, 5.347e-02, -2.080e-02, 8.705e-02, -4.790e-02, -2.085e-02, 2.236e-02, -7.095e-02), r);\n\tr = MulAdd(s0_7, M4(8.422e-03, 4.460e-02, -4.504e-02, -5.108e-02, 1.772e-02, 2.164e-02, -4.921e-02, 9.575e-02, 2.302e-01, 6.677e-02, 9.069e-02, -2.652e-02, -6.605e-03, 2.440e-02, -6.203e-02, 7.330e-03), r);\n\tr = MulAdd(s0_8, M4(5.511e-02, 1.542e-02, -5.059e-03, 3.171e-02, -6.442e-02, -5.679e-03, 1.145e-02, 2.220e-05, 1.217e-01, -7.622e-03, 7.413e-03, 7.513e-02, 5.875e-02, -7.754e-03, -1.073e-02, 6.121e-02), r);\n\tr = MulAdd(s1_0, M4(2.168e-02, -4.579e-02, 4.918e-02, -1.727e-02, 4.170e-02, -1.246e-01, 5.060e-02, 8.042e-03, 2.092e-02, -7.061e-03, 2.682e-02, -4.390e-03, -5.984e-03, 2.385e-02, 3.160e-02, -2.543e-02), r);\n\tr = MulAdd(s1_1, M4(-7.658e-02, 5.386e-02, -7.724e-03, -5.315e-02, 6.599e-02, 1.275e-01, -2.768e-02, 6.249e-02, 3.247e-02, -3.022e-03, 1.086e-02, -3.709e-03, 3.864e-02, -4.664e-02, 6.696e-02, 8.100e-03), r);\n\tr = MulAdd(s1_2, M4(-6.044e-02, -1.413e-02, -5.048e-03, -3.623e-02, 3.267e-02, -2.345e-03, -2.573e-02, 2.255e-02, 4.310e-02, 2.143e-03, 1.195e-02, -1.254e-03, 3.588e-02, 5.696e-04, 3.540e-02, -5.437e-02), r);\n\tr = MulAdd(s1_3, M4(5.584e-02, 2.195e-02, 1.284e-01, -2.934e-02, -1.995e-02, 1.069e-01, 1.716e-02, 3.259e-02, 2.022e-02, 6.430e-02, 1.950e-02, -1.204e-03, -8.247e-03, -1.034e-01, 4.017e-02, -1.014e-01), r);\n\tr = MulAdd(s1_4, M4(7.738e-02, -7.787e-02, -8.559e-02, -3.832e-01, -1.601e-01, 1.303e-02, 1.333e-01, -5.981e-01, 4.252e-02, -3.160e-02, 3.228e-02, -3.681e-03, -1.285e-01, 2.940e-01, 2.559e-01, 1.676e-02), r);\n\tr = MulAdd(s1_5, M4(-1.728e-02, -9.817e-03, 2.978e-02, -1.828e-01, 1.827e-02, -1.183e-02, -3.527e-02, -8.733e-03, 5.358e-02, 2.633e-02, 1.640e-02, -2.296e-02, 2.498e-02, -5.456e-03, 4.117e-02, 1.054e-01), r);\n\tr = MulAdd(s1_6, M4(1.625e-02, 3.119e-02, 2.967e-02, -4.471e-02, 3.823e-02, -6.555e-02, -2.538e-02, 8.332e-02, 2.353e-02, -3.428e-03, 2.937e-02, 1.472e-02, 1.979e-01, 1.279e-01, 2.702e-02, 4.688e-02), r);\n\tr = MulAdd(s1_7, M4(-2.596e-02, 1.838e-02, -1.123e-02, -1.558e-01, 7.660e-02, -4.095e-02, -2.568e-03, 1.184e-01, 5.229e-02, 2.339e-02, -1.010e-02, 1.139e-02, -6.036e-02, -1.079e-01, -7.627e-02, -1.255e-01), r);\n\tr = MulAdd(s1_8, M4(2.202e-02, -6.740e-03, 4.657e-02, -1.208e-01, 1.782e-03, 1.630e-02, 1.916e-02, -2.809e-02, 1.417e-02, -7.265e-04, -5.384e-04, 5.627e-03, -1.229e-03, 1.043e-02, -2.705e-02, 1.526e-01), r);\n\tr = MulAdd(s2_0, M4(2.447e-02, 1.729e-02, -2.765e-02, 5.449e-02, -4.221e-02, -8.931e-02, 3.146e-02, -2.128e-02, -2.070e-02, 1.432e-03, -3.099e-02, -1.587e-02, 6.266e-03, -3.164e-02, -3.437e-02, 2.344e-02), r);\n\tr = MulAdd(s2_1, M4(-9.059e-02, 5.509e-02, 3.072e-02, 1.440e-02, 9.820e-03, -1.885e-02, -5.084e-02, -7.885e-02, -2.189e-02, -1.145e-01, 3.476e-02, -5.418e-02, -1.010e-01, -1.096e-03, -3.446e-03, -1.668e-02), r);\n\tr = MulAdd(s2_2, M4(-9.562e-02, 5.623e-03, -1.658e-02, 3.662e-02, -2.377e-02, -3.407e-02, -3.480e-02, 7.729e-02, -4.953e-02, 1.609e-02, 1.767e-02, -1.126e-01, -2.488e-02, -3.236e-02, -3.311e-03, -1.805e-02), r);\n\tr = MulAdd(s2_3, M4(1.759e-02, -2.190e-02, -5.458e-02, 2.657e-02, 3.511e-02, -2.803e-01, 4.074e-02, -8.826e-02, 3.244e-02, 8.148e-02, 4.088e-02, 4.509e-02, -9.224e-02, -2.484e-04, -4.308e-02, -1.777e-03), r);\n\tr = MulAdd(s2_4, M4(9.104e-04, 3.797e-02, -5.060e-02, 2.746e-03, 2.471e-01, 1.048e-01, 1.037e-01, 3.233e-01, 1.347e-01, 1.900e-03, 1.886e-02, -3.936e-01, -3.162e-02, 7.359e-02, 9.111e-02, -3.810e-02), r);\n\tr = MulAdd(s2_5, M4(1.120e-02, 3.946e-02, 3.958e-03, 3.405e-02, -3.474e-02, -3.862e-02, -7.786e-03, 1.777e-01, 1.561e-02, 5.411e-03, 5.232e-02, -2.836e-01, 1.983e-02, 3.910e-03, 4.503e-02, -2.982e-02), r);\n\tr = MulAdd(s2_6, M4(2.452e-02, 3.821e-02, -3.523e-02, 1.539e-02, -4.772e-02, 1.718e-02, -3.666e-02, -6.527e-02, 1.994e-02, -6.181e-03, 5.485e-02, -4.438e-03, 4.088e-02, 3.997e-02, 1.727e-02, 5.171e-02), r);\n\tr = MulAdd(s2_7, M4(6.000e-02, 3.510e-02, 3.557e-02, -8.980e-02, -5.613e-02, -4.479e-02, -1.678e-01, 5.538e-02, 5.004e-02, 1.512e-02, 2.275e-02, -1.108e-01, 1.488e-01, 2.930e-03, -1.023e-02, 3.367e-02), r);\n\tr = MulAdd(s2_8, M4(6.663e-03, -1.386e-03, -1.365e-02, -2.420e-02, -5.310e-02, 2.358e-02, -1.795e-02, -2.243e-02, 1.510e-02, 4.362e-03, 8.571e-05, -9.362e-02, 5.626e-03, -1.368e-02, -1.471e-03, 3.142e-02), r);\n\tr = MulAdd(s3_0, M4(-3.950e-02, -4.733e-02, 9.475e-02, -4.892e-02, 9.380e-02, -1.509e-02, 1.450e-02, -2.095e-02, -3.504e-02, 2.453e-02, -5.969e-02, 2.178e-03, 6.615e-02, 7.004e-02, 8.001e-02, -6.070e-02), r);\n\tr = MulAdd(s3_1, M4(-1.676e-02, -1.485e-02, 2.666e-01, 8.033e-02, -4.579e-03, -3.812e-02, 3.769e-03, 3.362e-03, -9.428e-02, -3.817e-02, -3.272e-02, 1.008e-01, -3.819e-02, 7.791e-02, -7.914e-02, 2.262e-02), r);\n\tr = MulAdd(s3_2, M4(-2.685e-02, 2.254e-02, 3.175e-02, -7.497e-02, -5.441e-03, 3.000e-03, -3.112e-03, 2.195e-02, 5.569e-03, 1.282e-02, 2.887e-02, 1.238e-02, -1.596e-01, 1.621e-02, 1.791e-02, -1.396e-01), r);\n\tr = MulAdd(s3_3, M4(9.641e-02, -1.211e-02, 1.318e-01, -2.892e-02, 9.309e-02, -1.012e-01, 5.106e-02, -2.608e-02, 3.708e-02, 8.899e-03, -7.867e-03, 6.110e-02, -2.357e-01, 2.636e-01, -1.759e-01, 3.462e-02), r);\n\tr = MulAdd(s3_4, M4(1.184e-01, -6.208e-02, -7.662e-02, -1.109e-01, 1.660e-01, 2.238e-02, 2.532e-02, -2.775e-02, 6.642e-02, 1.673e-01, -1.187e-02, -1.796e-01, 3.810e-02, -1.789e-01, 3.771e-02, 5.403e-01), r);\n\tr = MulAdd(s3_5, M4(-1.026e-03, 3.177e-02, -7.086e-02, 1.776e-01, 2.638e-02, 3.480e-02, 1.754e-02, 5.252e-02, 5.514e-03, 6.224e-03, 4.988e-04, 1.556e-03, 7.209e-02, 2.107e-02, 3.573e-02, -2.720e-01), r);\n\tr = MulAdd(s3_6, M4(-7.826e-02, -2.392e-02, 7.209e-02, -7.598e-02, -1.960e-02, -9.385e-03, 3.182e-02, -2.384e-02, -3.284e-03, 2.330e-02, 2.146e-02, 3.374e-02, -3.855e-02, -2.250e-02, -2.083e-02, 2.701e-02), r);\n\tr = MulAdd(s3_7, M4(-1.451e-01, 4.434e-02, -8.629e-02, 1.044e-02, 1.889e-01, 2.243e-02, 3.330e-03, -2.253e-02, 7.287e-03, -1.563e-02, 2.876e-03, -1.321e-02, -3.684e-02, 8.823e-02, 2.742e-02, 4.708e-02), r);\n\tr = MulAdd(s3_8, M4(-6.824e-02, 2.854e-02, -6.687e-03, -9.146e-02, 6.651e-02, -1.166e-02, 1.677e-02, -5.796e-02, 7.355e-03, 8.139e-03, -2.706e-02, 5.048e-02, 3.256e-02, -7.823e-03, 3.660e-03, -1.004e-01), r);\n\tr = MulAdd(s4_0, M4(-9.431e-03, 5.889e-02, -2.126e-02, -1.830e-02, 2.106e-02, -9.595e-02, 7.357e-02, -6.164e-02, -3.097e-03, -7.961e-02, 1.315e-01, 2.196e-02, 1.916e-02, 5.432e-02, 9.130e-03, 1.871e-02), r);\n\tr = MulAdd(s4_1, M4(1.210e-01, 3.681e-02, 2.575e-02, 5.345e-02, -6.667e-02, 2.085e-02, -5.452e-02, -1.316e-01, 8.277e-02, 1.974e-02, -4.569e-03, 6.749e-02, 4.601e-02, -6.241e-03, 4.080e-01, 9.546e-02), r);\n\tr = MulAdd(s4_2, M4(6.069e-02, 1.337e-02, 3.668e-03, 4.510e-02, 3.752e-02, -6.577e-02, 6.636e-02, -6.562e-02, -2.238e-02, 2.513e-03, -3.745e-02, 1.332e-01, -1.584e-01, -1.608e-02, 1.324e-01, -1.189e-01), r);\n\tr = MulAdd(s4_3, M4(-1.071e-01, 2.279e-02, -3.308e-02, -1.314e-03, 4.047e-03, 5.535e-02, 5.889e-02, 1.296e-02, 9.058e-02, 4.993e-02, 7.142e-02, 3.842e-02, -3.450e-02, -1.056e-01, 3.612e-02, 1.292e-02), r);\n\tr = MulAdd(s4_4, M4(1.172e-02, -9.352e-03, 5.152e-02, -5.238e-03, -3.401e-02, 9.417e-03, -2.763e-02, 5.862e-02, 2.160e-01, -1.091e-01, 2.705e-02, -1.936e-01, -5.915e-02, 1.654e-01, 5.814e-01, -7.901e-02), r);\n\tr = MulAdd(s4_5, M4(1.396e-01, 3.896e-02, 1.335e-04, -3.864e-02, -5.279e-02, -4.169e-02, -2.619e-02, 7.096e-02, 9.102e-02, -3.263e-02, 7.145e-03, -5.895e-02, 5.079e-02, 2.301e-01, 2.891e-01, -8.593e-02), r);\n\tr = MulAdd(s4_6, M4(1.144e-02, 2.328e-02, -7.695e-02, -1.343e-03, 5.186e-02, 6.368e-02, -2.607e-02, -2.692e-02, -5.042e-02, -4.400e-02, 1.485e-02, 2.958e-03, 4.236e-02, 5.249e-03, -1.026e-01, 2.812e-02), r);\n\tr = MulAdd(s4_7, M4(5.092e-02, -3.809e-03, 4.445e-02, 2.612e-02, 1.142e-01, -7.595e-02, 5.381e-02, 1.712e-02, -1.065e-01, -7.024e-03, 2.167e-02, -9.190e-02, 6.058e-02, -9.443e-02, 1.459e-01, -4.769e-02), r);\n\tr = MulAdd(s4_8, M4(3.684e-04, -1.860e-02, -1.058e-02, 1.948e-02, 2.465e-03, -5.119e-03, 2.769e-02, 1.458e-02, -2.639e-02, 8.080e-03, -1.704e-02, -2.213e-02, 5.268e-02, -5.988e-02, 3.712e-02, 1.254e-01), r);\n\tr = MulAdd(s5_0, M4(-2.496e-02, 8.809e-02, -1.426e-01, 6.392e-02, 3.160e-02, -6.681e-02, 8.480e-02, -7.819e-02, -2.165e-02, 2.542e-02, -1.916e-02, 2.132e-02, -3.296e-02, 1.161e-02, -1.487e-02, 2.013e-02), r);\n\tr = MulAdd(s5_1, M4(2.416e-01, 1.343e-02, 4.903e-02, 6.341e-02, -9.003e-02, -7.302e-02, -1.000e-01, -5.732e-03, -2.697e-02, 5.232e-02, -8.220e-02, -3.580e-02, 9.402e-03, -1.418e-03, -1.429e-02, 7.107e-03), r);\n\tr = MulAdd(s5_2, M4(1.023e-01, 2.851e-02, -1.219e-02, 3.114e-02, 9.954e-03, -2.428e-02, 4.689e-02, 8.756e-03, -1.618e-02, 1.071e-02, -1.172e-02, -8.114e-03, -3.601e-02, 3.402e-02, -7.213e-03, -1.546e-02), r);\n\tr = MulAdd(s5_3, M4(2.819e-02, 3.272e-01, -3.521e-02, -1.169e-01, 1.235e-01, 1.380e-01, 1.391e-01, -1.713e-02, -4.166e-02, -1.108e-01, -5.924e-02, 6.759e-02, -4.242e-02, 1.073e-02, -3.557e-02, -3.206e-02), r);\n\tr = MulAdd(s5_4, M4(-1.297e-03, -7.965e-02, 2.005e-01, 3.798e-01, 1.215e-01, -3.609e-02, -8.034e-02, 6.808e-02, 4.566e-02, -1.028e-02, 1.626e-02, 2.790e-02, -6.773e-02, -5.215e-02, -1.234e-02, 1.084e-02), r);\n\tr = MulAdd(s5_5, M4(1.163e-01, 6.928e-02, -7.286e-02, -7.548e-02, -7.859e-02, -3.504e-02, 1.962e-02, -1.861e-02, 6.673e-02, 5.095e-03, 4.188e-02, 3.247e-02, 5.449e-02, -3.710e-02, -4.225e-03, -6.734e-03), r);\n\tr = MulAdd(s5_6, M4(-6.793e-02, -8.408e-02, -1.155e-01, 6.691e-02, -6.385e-03, -1.279e-02, 7.386e-02, -2.486e-02, 2.807e-02, 7.187e-02, -6.588e-02, 2.863e-02, 3.158e-02, 4.317e-03, -1.664e-02, -9.957e-03), r);\n\tr = MulAdd(s5_7, M4(4.247e-02, 7.270e-02, 1.199e-02, -2.256e-01, 3.120e-02, 3.151e-03, -1.541e-02, -9.396e-02, 2.435e-02, 9.246e-03, 8.851e-04, -8.081e-02, 3.958e-02, 1.086e-02, -9.265e-04, -3.038e-02), r);\n\tr = MulAdd(s5_8, M4(4.742e-02, 5.148e-02, -3.171e-02, -1.373e-01, 5.415e-02, -9.496e-03, 1.975e-02, 3.439e-03, -5.139e-02, -2.697e-02, 1.210e-02, -1.295e-02, -3.452e-02, -2.794e-03, 1.383e-02, 1.658e-02), r);\n\tr = MulAdd(s6_0, M4(-2.507e-02, -7.946e-04, 1.110e-02, -4.932e-04, 2.526e-02, 9.996e-03, 2.226e-02, -1.076e-02, -6.662e-03, -3.381e-02, -2.353e-02, 5.043e-03, 3.321e-03, 2.826e-02, 4.069e-02, 5.503e-03), r);\n\tr = MulAdd(s6_1, M4(3.050e-02, -2.427e-03, -1.249e-01, -4.679e-03, 3.654e-03, -4.095e-02, -3.797e-03, 5.638e-03, 4.113e-03, 3.107e-02, -3.934e-02, -6.310e-02, -3.349e-02, 7.328e-02, 3.905e-02, 5.081e-02), r);\n\tr = MulAdd(s6_2, M4(2.691e-02, -3.391e-02, -1.199e-02, 4.570e-03, -6.239e-02, 2.360e-03, -3.945e-02, -6.586e-03, -2.278e-02, 2.032e-04, 7.616e-03, 2.224e-02, 1.718e-03, 1.473e-02, 1.707e-02, -1.987e-02), r);\n\tr = MulAdd(s6_3, M4(-4.025e-03, 2.814e-02, 6.370e-02, -3.235e-02, -1.529e-02, 3.723e-02, -1.565e-03, 1.399e-02, 7.093e-02, -7.519e-02, 4.052e-02, 1.021e-02, 4.772e-02, 3.930e-02, -1.189e-01, -1.362e-02), r);\n\tr = MulAdd(s6_4, M4(-3.540e-02, 8.062e-02, -1.039e-01, 1.217e-02, 3.187e-03, 1.265e-02, -4.382e-02, -2.559e-02, 1.570e-01, -7.089e-02, 8.914e-03, 7.153e-02, 1.327e-01, -9.643e-02, -5.999e-02, 7.664e-02), r);\n\tr = MulAdd(s6_5, M4(-2.217e-02, 1.164e-02, -1.264e-02, 4.551e-02, -6.797e-02, 1.238e-03, 3.343e-02, 9.795e-03, 1.598e-01, 3.646e-02, 4.413e-02, -1.461e-02, 2.523e-03, -5.439e-04, -4.791e-02, 1.033e-03), r);\n\tr = MulAdd(s6_6, M4(1.176e-02, 1.414e-02, -3.136e-03, -2.034e-03, 2.634e-02, 4.214e-02, 2.754e-02, 3.087e-02, -3.876e-02, -4.940e-02, -3.528e-02, -6.377e-03, -1.154e-02, -3.120e-02, 8.880e-02, 2.014e-02), r);\n\tr = MulAdd(s6_7, M4(4.944e-02, 3.875e-03, 2.216e-02, -5.348e-02, 4.101e-02, 7.348e-02, -7.037e-02, 5.307e-02, -1.714e-01, 1.506e-02, -4.873e-02, -5.804e-02, -2.607e-02, 1.517e-02, 5.446e-02, -2.876e-02), r);\n\tr = MulAdd(s6_8, M4(-7.465e-02, 7.315e-04, 9.037e-03, 1.764e-02, 3.369e-02, 5.548e-04, 5.357e-02, 2.939e-02, 4.354e-02, -1.601e-02, -3.103e-03, -7.247e-02, 5.881e-02, -7.223e-03, 2.963e-02, -1.031e-01), r);\n\tr = MulAdd(s7_0, M4(-5.706e-02, -5.552e-03, -1.280e-01, -2.101e-02, -1.691e-02, -3.833e-02, 4.682e-02, -3.053e-03, -2.772e-02, -1.184e-01, 5.773e-02, -3.441e-02, 4.748e-02, -2.675e-02, -1.698e-01, 5.623e-02), r);\n\tr = MulAdd(s7_1, M4(-1.115e-01, -5.093e-02, -2.015e-01, -1.037e-01, 7.328e-02, 4.829e-02, 6.089e-02, 5.624e-02, -1.812e-01, -6.170e-03, -6.281e-02, -6.716e-02, -8.051e-02, 3.991e-02, 7.369e-02, -7.423e-02), r);\n\tr = MulAdd(s7_2, M4(8.941e-02, -1.362e-01, 4.570e-02, 5.541e-02, -1.336e-01, 3.946e-02, -1.285e-01, -6.767e-02, -3.703e-02, 2.243e-02, 1.189e-02, 2.213e-02, 7.284e-03, 1.078e-02, -3.074e-02, 6.708e-02), r);\n\tr = MulAdd(s7_3, M4(-9.038e-02, -5.443e-02, -2.140e-01, 2.917e-02, -8.495e-02, 1.500e-01, -1.034e-01, -6.819e-03, 1.175e-01, -2.877e-02, 3.825e-02, 1.543e-02, -6.762e-02, 6.191e-02, -3.292e-02, 1.214e-01), r);\n\tr = MulAdd(s7_4, M4(1.351e-01, 1.929e-01, -4.921e-01, 5.014e-02, -2.351e-01, -3.016e-01, -1.121e-01, 3.097e-01, -1.658e-01, -1.272e-01, 7.207e-02, -3.743e-01, 3.631e-01, -1.412e-01, -1.938e-01, -8.993e-02), r);\n\tr = MulAdd(s7_5, M4(-4.301e-02, 7.487e-02, 2.500e-02, 1.069e-01, -1.016e-01, 4.391e-02, 1.315e-01, 5.845e-02, 4.127e-02, 1.446e-02, -1.786e-02, -8.449e-02, -4.528e-02, -1.804e-02, -2.909e-02, -8.959e-02), r);\n\tr = MulAdd(s7_6, M4(3.403e-02, 5.445e-02, -8.672e-03, -5.562e-02, 1.259e-01, 7.118e-02, -1.102e-03, 6.377e-03, -6.440e-03, -3.774e-02, -1.121e-02, -4.780e-02, 2.907e-03, -6.161e-02, 4.809e-02, 6.793e-02), r);\n\tr = MulAdd(s7_7, M4(3.418e-02, -1.906e-02, -4.124e-02, -6.526e-02, -1.621e-01, -3.490e-02, -4.261e-02, -1.441e-01, -1.343e-02, 3.143e-02, 8.302e-03, 1.160e-01, -4.174e-02, 7.590e-03, 1.030e-01, -2.129e-01), r);\n\tr = MulAdd(s7_8, M4(6.975e-03, 1.297e-02, 3.317e-02, -8.614e-02, -1.193e-01, 6.797e-02, -2.014e-02, -6.614e-02, 9.511e-02, 1.817e-02, 6.716e-03, 2.764e-02, -4.762e-03, -4.361e-03, 1.822e-02, -7.534e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -7.390e-04, 1.816e-03, -2.728e-04, -1.866e-03 };\n\tr = MulAdd(s0_0, M4(-6.422e-02, 1.680e-02, -4.666e-02, -4.495e-02, -2.339e-03, 8.326e-03, -1.462e-02, -4.952e-02, 5.134e-02, -1.934e-02, 4.511e-02, 1.334e-01, -4.618e-03, -8.103e-03, 3.456e-02, 1.580e-02), r);\n\tr = MulAdd(s0_1, M4(-1.842e-03, -3.105e-02, -2.950e-03, 1.885e-02, -3.407e-02, -3.604e-03, -2.389e-03, -5.071e-02, -8.016e-02, -3.803e-02, -8.330e-02, 1.628e-01, 1.962e-02, 3.725e-02, 2.377e-02, 3.499e-02), r);\n\tr = MulAdd(s0_2, M4(-7.064e-03, 6.164e-03, -4.705e-02, -8.524e-03, -5.537e-03, 3.894e-02, -2.029e-02, -2.486e-02, -9.182e-03, 1.519e-01, -1.817e-02, 6.079e-02, -9.486e-03, -2.110e-02, 3.287e-02, -2.019e-03), r);\n\tr = MulAdd(s0_3, M4(-1.171e-01, -5.278e-02, 7.026e-02, 4.255e-02, 1.090e-02, -5.941e-02, -3.697e-02, -3.014e-02, -1.685e-01, 2.513e-02, -4.012e-02, 8.469e-03, 1.878e-02, -1.719e-02, -8.298e-03, 1.018e-01), r);\n\tr = MulAdd(s0_4, M4(-6.699e-02, 5.956e-04, -9.047e-02, -1.346e-01, 2.411e-02, -4.314e-02, 3.185e-02, -9.635e-02, 2.837e-01, -3.088e-02, -2.452e-02, -1.238e-01, -9.648e-02, 4.971e-02, -4.276e-02, -8.128e-02), r);\n\tr = MulAdd(s0_5, M4(3.128e-02, -6.913e-02, -1.041e-02, -7.746e-02, -4.009e-02, -8.374e-02, 4.016e-02, 8.426e-03, 4.522e-03, 1.049e-01, 9.970e-02, -3.086e-01, -6.120e-03, -1.388e-01, -1.063e-01, -5.434e-02), r);\n\tr = MulAdd(s0_6, M4(-3.365e-02, -3.072e-02, -9.321e-02, -1.832e-02, -5.298e-03, 7.121e-04, 2.169e-03, 4.990e-02, -8.102e-02, 4.921e-02, -5.902e-02, -2.201e-02, 1.276e-02, 3.207e-02, 3.180e-02, -1.999e-02), r);\n\tr = MulAdd(s0_7, M4(-9.262e-02, -1.065e-01, -6.215e-02, -9.939e-02, 7.738e-02, -1.434e-02, 9.368e-03, 8.076e-02, 8.899e-03, -1.052e-01, -1.082e-01, 4.778e-02, -1.707e-01, -5.856e-02, -6.962e-02, -1.961e-02), r);\n\tr = MulAdd(s0_8, M4(3.140e-02, 1.377e-02, 1.593e-04, -2.125e-02, 9.562e-03, 3.623e-02, -4.402e-02, -2.442e-02, -8.968e-02, 1.988e-01, 1.410e-02, 5.882e-02, 7.932e-02, 9.126e-02, 6.180e-02, -4.356e-02), r);\n\tr = MulAdd(s1_0, M4(-1.858e-02, -9.682e-04, 1.851e-02, -2.569e-02, -1.704e-02, -5.016e-03, 4.800e-02, -9.740e-02, -5.270e-03, -6.199e-03, -2.214e-02, -2.733e-02, 3.645e-03, 5.273e-03, -2.155e-02, 1.597e-02), r);\n\tr = MulAdd(s1_1, M4(2.906e-02, 6.890e-03, -2.221e-02, 5.509e-02, -1.067e-01, 3.076e-01, -1.190e-01, -3.612e-04, -7.062e-03, -2.028e-02, 5.407e-03, 3.502e-02, 4.203e-02, -5.999e-03, 6.040e-02, -9.000e-03), r);\n\tr = MulAdd(s1_2, M4(-1.598e-02, -2.484e-02, -1.963e-02, 9.807e-03, 2.597e-02, -8.287e-02, 1.311e-02, -6.579e-02, 1.673e-02, 2.149e-02, 5.862e-03, -2.455e-03, -7.638e-04, 9.753e-03, -1.168e-02, 3.686e-03), r);\n\tr = MulAdd(s1_3, M4(-2.996e-02, 1.216e-02, 2.214e-02, 1.757e-02, -1.134e-02, 5.456e-02, -3.628e-02, 4.101e-02, -1.514e-02, -2.445e-02, 6.486e-03, -4.812e-02, 4.947e-02, 1.221e-02, 1.329e-02, 4.396e-02), r);\n\tr = MulAdd(s1_4, M4(1.473e-02, 1.606e-01, -5.135e-02, -3.255e-02, -1.753e-01, -5.682e-01, 1.286e-01, -4.066e-02, 8.350e-02, 4.364e-02, 9.298e-03, 1.028e-01, -3.886e-02, 3.602e-02, -2.097e-01, 2.511e-03), r);\n\tr = MulAdd(s1_5, M4(3.637e-02, -9.506e-03, 6.912e-02, -1.290e-02, -2.436e-03, 1.188e-01, 5.628e-02, 1.431e-02, -2.094e-02, -1.958e-02, -3.403e-02, 4.689e-02, -7.153e-03, -3.282e-02, -3.716e-02, 1.626e-01), r);\n\tr = MulAdd(s1_6, M4(-2.461e-02, 5.353e-02, -3.433e-02, 3.605e-02, -6.121e-02, -3.178e-03, 5.595e-02, 1.794e-02, -6.023e-02, -3.588e-03, -3.785e-02, 3.699e-02, 1.142e-01, 2.821e-02, -5.308e-02, 6.403e-02), r);\n\tr = MulAdd(s1_7, M4(5.947e-02, -7.719e-02, 4.145e-02, -7.409e-03, -1.055e-01, 1.610e-01, -4.151e-02, 1.995e-02, 6.130e-02, -2.186e-02, -1.589e-02, 1.102e-01, 1.114e-01, -4.216e-02, 1.647e-03, -1.100e-01), r);\n\tr = MulAdd(s1_8, M4(7.085e-03, 2.188e-02, -6.992e-03, -2.332e-03, 1.478e-02, -6.092e-02, -4.126e-02, 3.169e-04, -1.958e-02, -4.985e-03, -1.923e-03, -3.218e-02, 1.927e-02, -8.432e-03, -4.363e-02, 1.668e-03), r);\n\tr = MulAdd(s2_0, M4(-6.546e-03, 1.343e-02, 2.296e-02, 5.659e-02, 2.752e-02, -4.231e-02, 6.074e-02, -5.683e-03, -3.253e-02, -5.294e-02, 1.101e-02, 9.926e-03, -1.273e-02, 3.820e-04, 4.827e-02, -4.940e-04), r);\n\tr = MulAdd(s2_1, M4(4.736e-02, 2.476e-02, -9.261e-03, 7.812e-02, -1.871e-02, 1.027e-02, -4.256e-02, 1.155e-02, 2.293e-02, 2.758e-02, -1.940e-02, -1.913e-02, 1.163e-02, -1.837e-02, -1.667e-02, 1.094e-02), r);\n\tr = MulAdd(s2_2, M4(-1.668e-02, -5.029e-02, -1.440e-02, 4.319e-02, 1.579e-02, -1.302e-02, 5.899e-02, 2.061e-02, -6.245e-03, -1.449e-02, 3.008e-02, -1.664e-02, 2.230e-02, 9.839e-03, 5.975e-02, 1.928e-02), r);\n\tr = MulAdd(s2_3, M4(-1.839e-02, -2.045e-02, -4.858e-02, 3.903e-02, 7.104e-03, 1.747e-02, -5.856e-02, -1.094e-01, 1.239e-02, 2.181e-02, -1.091e-01, -8.099e-02, -4.212e-02, 3.092e-03, 4.736e-02, -7.150e-02), r);\n\tr = MulAdd(s2_4, M4(-7.680e-03, 2.967e-02, -2.112e-02, -1.317e-02, -2.971e-01, -2.871e-01, 3.943e-01, -2.758e-01, 8.246e-02, 1.079e-01, 4.440e-03, 1.274e-01, 1.480e-02, 1.701e-03, -8.268e-02, 1.860e-02), r);\n\tr = MulAdd(s2_5, M4(1.855e-02, 4.260e-02, -4.680e-02, -1.964e-02, 4.660e-02, 2.995e-01, -8.861e-02, 3.235e-02, 2.948e-02, 2.388e-03, 3.504e-03, -2.162e-03, 1.332e-02, 1.133e-02, 3.025e-02, 1.443e-02), r);\n\tr = MulAdd(s2_6, M4(7.442e-03, 8.911e-03, -6.702e-03, -4.585e-02, 1.291e-01, -4.421e-02, 1.339e-01, 3.993e-02, -1.566e-02, 2.829e-02, 3.262e-02, 1.285e-02, -7.299e-03, 2.724e-02, -3.766e-02, 1.047e-02), r);\n\tr = MulAdd(s2_7, M4(-3.381e-02, -1.174e-02, -4.296e-02, 1.705e-03, -4.339e-03, 2.267e-01, 7.326e-02, -2.796e-03, 6.150e-02, 3.889e-02, -6.071e-04, 9.139e-02, -3.776e-02, 2.394e-02, -5.208e-02, 5.949e-02), r);\n\tr = MulAdd(s2_8, M4(-3.450e-02, -3.383e-02, 7.836e-03, 1.100e-02, 1.184e-02, -1.977e-01, -2.924e-02, -4.890e-02, -3.583e-03, -4.512e-02, -1.497e-02, 4.827e-02, 2.246e-03, 2.053e-02, 2.313e-02, -4.874e-02), r);\n\tr = MulAdd(s3_0, M4(5.694e-02, -5.528e-02, 5.212e-02, 2.986e-02, 1.836e-02, 3.805e-02, -2.986e-02, 5.002e-02, -2.912e-02, -2.534e-02, -3.611e-02, -2.406e-02, 6.479e-03, -5.702e-03, -1.243e-01, 3.241e-02), r);\n\tr = MulAdd(s3_1, M4(2.800e-02, -1.076e-01, 4.683e-02, 2.143e-02, 1.158e-02, -3.525e-02, 1.007e-01, -1.794e-03, -9.832e-03, -2.611e-02, 5.176e-03, -5.500e-02, -3.821e-02, 1.060e-02, 4.090e-02, -4.569e-02), r);\n\tr = MulAdd(s3_2, M4(1.089e-02, -1.146e-01, -1.153e-02, -5.991e-02, 1.177e-02, 3.417e-03, -2.044e-02, -1.345e-03, 1.305e-03, 1.239e-02, 1.726e-02, -3.599e-02, 1.674e-02, -5.590e-02, -8.140e-02, -4.265e-02), r);\n\tr = MulAdd(s3_3, M4(2.527e-02, 8.669e-02, 4.049e-02, -9.185e-03, -2.413e-02, -1.824e-03, 1.046e-01, 2.065e-02, -3.119e-02, -7.965e-02, -4.623e-02, 2.911e-02, 7.088e-02, -1.067e-01, 1.576e-01, 3.075e-02), r);\n\tr = MulAdd(s3_4, M4(-1.465e-01, 1.556e-01, 6.490e-02, 1.404e-01, -1.715e-02, 1.477e-01, 1.859e-02, 1.233e-01, 2.244e-02, 8.846e-02, 1.742e-02, 6.853e-02, 8.496e-02, 2.641e-01, -2.901e-01, 1.538e-01), r);\n\tr = MulAdd(s3_5, M4(5.795e-02, -5.553e-02, -1.528e-01, 2.953e-02, 4.175e-03, 3.038e-02, -7.615e-02, -2.932e-02, -3.998e-03, 3.270e-04, -5.368e-02, 4.379e-03, -3.845e-02, -8.842e-02, 1.667e-01, -1.082e-01), r);\n\tr = MulAdd(s3_6, M4(-4.638e-02, 7.122e-02, 4.453e-03, -1.115e-01, 4.361e-02, 8.474e-03, 1.944e-02, 2.350e-02, -1.112e-02, -5.496e-02, 6.062e-03, -4.375e-03, -4.352e-02, 7.870e-02, -1.025e-01, -1.199e-01), r);\n\tr = MulAdd(s3_7, M4(-9.071e-02, -5.780e-02, 3.592e-02, 3.266e-02, -7.675e-02, 7.431e-02, -9.768e-02, 2.174e-01, -9.449e-02, 2.945e-02, -7.159e-02, -6.166e-02, 9.235e-02, -1.781e-01, -5.495e-02, 7.006e-02), r);\n\tr = MulAdd(s3_8, M4(-1.563e-02, 6.241e-02, 3.845e-02, -4.126e-02, 5.171e-02, -7.622e-03, -1.806e-03, 1.221e-01, 1.445e-02, -3.859e-02, -2.371e-02, 2.360e-02, -3.919e-02, 5.525e-02, 7.753e-04, -4.543e-02), r);\n\tr = MulAdd(s4_0, M4(-7.578e-03, 2.589e-02, -3.446e-02, 9.255e-04, 1.508e-02, -4.230e-02, -3.854e-02, -8.312e-02, 5.879e-02, 2.448e-02, 3.286e-02, -8.081e-02, 2.705e-02, 5.509e-02, 1.780e-03, 9.692e-03), r);\n\tr = MulAdd(s4_1, M4(7.212e-04, -9.108e-03, 8.121e-03, -4.260e-02, -3.512e-02, 5.898e-02, 9.525e-03, 4.439e-02, -1.030e-02, -1.913e-02, 5.020e-02, -1.238e-01, 9.665e-02, -1.807e-02, 5.449e-02, 2.058e-01), r);\n\tr = MulAdd(s4_2, M4(1.662e-02, 3.488e-05, -4.044e-02, -5.045e-02, -2.282e-02, 7.772e-02, 5.240e-02, 1.573e-01, 3.551e-02, -1.906e-02, -4.839e-02, 3.603e-02, -5.828e-03, 1.748e-02, -1.287e-01, 1.122e-01), r);\n\tr = MulAdd(s4_3, M4(-4.855e-02, -6.473e-02, -3.205e-02, -1.106e-02, 6.551e-02, 1.172e-01, 3.972e-02, -1.110e-02, 1.708e-01, -7.197e-02, 5.240e-02, 6.689e-02, 4.516e-02, -6.609e-02, 1.406e-02, 7.274e-03), r);\n\tr = MulAdd(s4_4, M4(-4.430e-02, -1.395e-01, -4.970e-02, 1.998e-02, 1.560e-01, -1.112e-01, 6.712e-02, -4.218e-04, -2.212e-01, 5.050e-03, -1.333e-01, 2.678e-01, 2.361e-01, -1.204e-01, -2.388e-01, -1.541e-01), r);\n\tr = MulAdd(s4_5, M4(1.204e-02, -1.997e-02, -6.763e-02, 1.468e-01, -6.895e-02, 7.981e-02, 3.946e-02, -1.001e-01, -5.877e-03, 1.462e-01, 1.895e-02, 9.893e-02, -7.228e-03, -3.419e-01, 5.974e-02, -3.917e-01), r);\n\tr = MulAdd(s4_6, M4(7.028e-03, -1.167e-01, -1.396e-02, 6.679e-02, -1.213e-01, -1.553e-01, -6.473e-02, 5.061e-02, -4.635e-02, 6.373e-02, -2.930e-02, 2.868e-02, 6.047e-02, 3.747e-03, -5.183e-03, 2.880e-02), r);\n\tr = MulAdd(s4_7, M4(9.784e-02, 2.841e-02, -6.079e-02, 4.337e-02, 4.047e-02, 1.088e-01, 2.636e-02, 7.993e-02, 1.425e-01, -2.001e-02, 2.533e-02, -1.085e-02, 1.535e-02, 8.569e-02, 1.048e-01, 4.093e-02), r);\n\tr = MulAdd(s4_8, M4(-2.997e-02, -2.626e-02, 5.060e-02, 2.708e-02, 1.564e-02, -4.655e-03, 1.835e-02, -4.612e-03, 1.653e-02, -6.783e-03, -4.532e-05, -8.021e-02, -1.153e-01, 1.970e-01, -1.619e-01, 1.018e-01), r);\n\tr = MulAdd(s5_0, M4(-7.963e-02, 8.415e-02, -8.603e-02, -6.643e-02, 5.413e-02, 1.145e-02, 4.283e-03, 1.071e-02, 1.425e-02, 9.550e-03, -5.742e-03, 2.553e-03, 8.458e-03, -1.834e-03, 2.582e-02, 1.234e-02), r);\n\tr = MulAdd(s5_1, M4(4.813e-02, -3.183e-02, -8.014e-02, -1.980e-02, -4.461e-02, 3.795e-02, 1.069e-01, -3.706e-02, -1.612e-03, 2.115e-02, 4.532e-02, 1.812e-02, 4.970e-03, -7.523e-03, 6.517e-03, 4.676e-02), r);\n\tr = MulAdd(s5_2, M4(-3.456e-03, 8.783e-03, -3.684e-03, -3.165e-02, 5.899e-03, 4.142e-02, 4.836e-02, 8.154e-02, 2.633e-02, 5.588e-02, -6.064e-02, 5.039e-02, -1.274e-02, 5.913e-04, -7.067e-02, -3.322e-02), r);\n\tr = MulAdd(s5_3, M4(9.003e-02, -8.612e-02, -1.561e-01, 3.709e-02, 5.988e-02, 8.174e-02, -2.205e-02, -2.136e-02, 2.638e-02, -1.036e-01, 6.140e-02, 3.036e-02, -4.891e-02, -2.581e-02, -4.581e-02, -4.246e-02), r);\n\tr = MulAdd(s5_4, M4(9.493e-03, -3.479e-01, -7.998e-02, -9.455e-02, 3.910e-02, -1.593e-02, 4.751e-02, 6.188e-02, 9.840e-02, 1.341e-01, -5.374e-02, -2.259e-02, 1.011e-01, 2.673e-02, -9.297e-03, -1.089e-01), r);\n\tr = MulAdd(s5_5, M4(-3.690e-02, -3.564e-03, -7.306e-02, 6.273e-03, 5.888e-03, 1.425e-02, 1.465e-02, -4.929e-02, -1.569e-02, -5.070e-03, 6.049e-02, 8.172e-02, 7.841e-03, -3.845e-03, 9.943e-02, 2.239e-02), r);\n\tr = MulAdd(s5_6, M4(-2.568e-01, 7.435e-02, -2.228e-02, 7.944e-02, -5.772e-02, -6.852e-02, -2.834e-02, 8.123e-02, 1.470e-01, 1.859e-02, -2.704e-02, 9.363e-03, 3.166e-02, 2.803e-02, -1.214e-03, 1.293e-02), r);\n\tr = MulAdd(s5_7, M4(-6.304e-02, -2.063e-01, -7.649e-02, -1.351e-01, 5.625e-02, 3.581e-02, 2.647e-02, 9.335e-03, 1.043e-01, 5.061e-03, -5.448e-03, -1.123e-01, 2.964e-02, -9.273e-03, 4.073e-02, 8.731e-03), r);\n\tr = MulAdd(s5_8, M4(-6.478e-02, -6.498e-02, -5.031e-02, 2.011e-01, 6.402e-03, 4.651e-02, 1.568e-02, 8.174e-02, -4.208e-02, -2.012e-02, 7.375e-03, -2.978e-02, 3.769e-02, -5.344e-03, -1.052e-02, 4.279e-02), r);\n\tr = MulAdd(s6_0, M4(-5.605e-03, -1.344e-02, 3.815e-02, 6.425e-02, -4.361e-04, -5.982e-03, -2.016e-03, -6.674e-03, 1.816e-03, -6.747e-03, 9.217e-03, 7.074e-02, 1.043e-02, -9.410e-03, -2.738e-02, 2.603e-02), r);\n\tr = MulAdd(s6_1, M4(-3.818e-02, -4.530e-02, 1.982e-03, 1.438e-02, 2.250e-02, -7.125e-03, -7.718e-05, -1.763e-02, -1.533e-02, 3.678e-02, -2.880e-02, 6.018e-02, 3.396e-02, -3.313e-02, 3.760e-03, 5.717e-02), r);\n\tr = MulAdd(s6_2, M4(1.833e-02, 4.613e-02, -8.530e-03, -2.255e-02, -7.005e-03, -1.823e-02, 6.326e-04, -1.960e-02, 1.857e-02, 4.009e-03, 1.863e-02, 1.340e-02, 7.106e-03, 1.505e-02, -3.722e-02, 9.284e-03), r);\n\tr = MulAdd(s6_3, M4(-1.978e-02, -2.542e-02, -5.701e-02, -3.668e-02, -3.079e-02, 1.690e-02, -4.785e-04, -4.757e-02, 2.229e-02, 3.626e-02, 7.499e-02, 7.492e-02, -8.919e-02, -1.301e-02, 3.316e-02, -2.238e-02), r);\n\tr = MulAdd(s6_4, M4(5.750e-02, 1.236e-01, -3.727e-02, -9.971e-02, 5.715e-02, 3.370e-02, -5.223e-03, 6.820e-02, -3.931e-02, -2.162e-02, 4.768e-02, -3.176e-01, 1.332e-01, 8.223e-03, -6.747e-02, 1.525e-02), r);\n\tr = MulAdd(s6_5, M4(-5.534e-02, 2.196e-02, -3.586e-02, 4.086e-02, -3.519e-02, 5.550e-02, 7.686e-03, 1.698e-02, 4.426e-02, 4.819e-02, -3.056e-02, 4.639e-03, 8.257e-03, -5.203e-03, 4.029e-02, 1.317e-02), r);\n\tr = MulAdd(s6_6, M4(-4.034e-02, 5.021e-02, -5.809e-03, 2.783e-02, -2.373e-02, -3.029e-02, -5.745e-02, -1.953e-02, 7.143e-02, 7.924e-02, 9.374e-03, -6.179e-03, -3.599e-02, 3.946e-02, 3.311e-02, 1.562e-02), r);\n\tr = MulAdd(s6_7, M4(4.839e-02, -6.011e-02, -1.972e-02, 6.475e-02, -1.888e-02, -4.052e-02, -5.563e-02, -6.110e-02, 7.359e-02, -2.875e-02, 4.410e-02, -6.216e-02, 3.299e-02, -2.920e-02, 1.754e-02, 4.605e-02), r);\n\tr = MulAdd(s6_8, M4(4.073e-02, -1.848e-02, -1.961e-02, -3.710e-02, 4.170e-02, 1.913e-02, -2.446e-02, -1.048e-01, -2.286e-02, -1.650e-02, -8.772e-03, 7.160e-02, -2.420e-02, -3.058e-02, 3.382e-02, 3.350e-02), r);\n\tr = MulAdd(s7_0, M4(-2.956e-02, -5.428e-02, 3.595e-02, 2.180e-02, -2.980e-02, -1.348e-02, -4.355e-02, 6.596e-02, 3.844e-02, 7.667e-03, 2.615e-02, 4.893e-02, -7.366e-02, 3.688e-02, -3.084e-02, -2.588e-02), r);\n\tr = MulAdd(s7_1, M4(5.338e-02, 4.289e-02, 3.982e-02, 6.554e-02, 2.097e-03, -3.347e-02, 4.455e-02, 2.917e-02, -6.689e-03, -3.879e-02, 8.891e-02, -9.196e-02, 7.563e-03, 1.112e-01, -1.969e-01, 8.919e-02), r);\n\tr = MulAdd(s7_2, M4(6.999e-02, 1.312e-03, 1.772e-01, 2.577e-03, -3.489e-02, -1.944e-02, -9.796e-02, -2.732e-02, 4.999e-03, -6.560e-03, -4.190e-02, 6.350e-02, -2.773e-02, -2.716e-02, 6.816e-03, -4.187e-02), r);\n\tr = MulAdd(s7_3, M4(-2.480e-02, 1.246e-01, -2.110e-04, -5.843e-02, 5.100e-02, -5.059e-02, -5.935e-02, -1.641e-01, 5.114e-02, -6.457e-02, -3.647e-02, -4.605e-02, -2.080e-01, -9.407e-02, -4.015e-02, 8.764e-02), r);\n\tr = MulAdd(s7_4, M4(-2.201e-01, 4.873e-01, -1.571e-01, -8.180e-02, 7.717e-02, 2.528e-01, 1.153e-02, -3.846e-02, -1.282e-01, 3.397e-01, 1.587e-01, -2.980e-01, -1.068e-02, 8.088e-02, 3.736e-01, -1.061e-01), r);\n\tr = MulAdd(s7_5, M4(2.394e-02, -6.763e-02, -1.783e-01, 3.603e-02, 4.565e-03, -1.765e-01, 1.102e-01, -2.667e-01, 1.554e-02, -6.939e-02, 1.764e-03, -3.768e-02, 2.578e-02, 9.643e-02, 3.601e-02, -2.208e-02), r);\n\tr = MulAdd(s7_6, M4(2.830e-02, 8.147e-03, 6.145e-03, -4.349e-02, -1.741e-01, 2.157e-02, -1.054e-01, -1.158e-01, 4.637e-02, -1.196e-02, 1.201e-01, -8.628e-03, -2.468e-01, 3.790e-02, 5.359e-02, 2.575e-02), r);\n\tr = MulAdd(s7_7, M4(-8.000e-02, 3.732e-02, 1.501e-02, -4.495e-03, 1.110e-01, 5.499e-02, 3.363e-02, -9.936e-02, 8.269e-02, 4.787e-02, -5.760e-02, 4.804e-03, -6.810e-02, -6.330e-02, -5.539e-02, 4.120e-02), r);\n\tr = MulAdd(s7_8, M4(3.943e-02, 1.279e-02, -8.367e-04, 4.311e-02, -1.619e-01, 4.199e-01, -2.100e-03, -3.792e-01, -4.745e-02, -2.734e-03, -4.497e-02, -2.701e-02, -2.135e-02, -2.782e-02, 1.058e-02, 2.532e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 8.583e-03, -6.438e-03, 6.338e-03, 1.485e-04 };\n\tr = MulAdd(s0_0, M4(1.895e-02, -3.486e-03, -1.379e-02, -1.842e-02, -3.970e-02, 3.895e-02, -3.372e-03, -4.028e-02, -8.637e-02, 1.274e-01, -1.950e-02, -1.323e-01, 2.921e-02, -8.863e-03, -3.657e-02, -3.447e-02), r);\n\tr = MulAdd(s0_1, M4(-1.112e-02, -1.559e-02, 1.731e-02, -9.551e-02, 4.760e-02, -4.934e-02, -2.834e-02, 2.646e-02, -7.670e-02, -6.197e-02, -1.755e-01, -2.571e-03, -8.377e-03, 2.422e-02, 3.033e-02, 1.416e-02), r);\n\tr = MulAdd(s0_2, M4(-2.654e-03, -9.362e-02, 3.156e-02, -3.364e-02, 5.052e-03, 7.076e-02, -7.983e-03, 2.995e-03, 2.022e-02, 3.845e-02, 1.639e-02, 2.667e-02, 2.051e-02, -5.142e-02, 4.048e-03, 9.972e-03), r);\n\tr = MulAdd(s0_3, M4(7.535e-02, -3.695e-02, -1.487e-03, 1.763e-02, 2.683e-02, 2.572e-02, -3.221e-03, 4.724e-02, 1.230e-01, -1.008e-02, -3.410e-01, -1.780e-02, -5.457e-02, 7.070e-02, 5.849e-02, 3.655e-02), r);\n\tr = MulAdd(s0_4, M4(-1.365e-02, 6.174e-02, 3.209e-02, 1.707e-02, 2.051e-01, 3.121e-02, 1.777e-02, -5.450e-02, 8.808e-02, 2.535e-02, -3.146e-01, -9.044e-02, 4.733e-02, -1.513e-01, -4.178e-02, 1.460e-01), r);\n\tr = MulAdd(s0_5, M4(5.314e-03, -9.108e-02, -1.646e-02, -6.978e-02, 4.098e-02, 4.081e-02, 3.569e-02, 3.792e-02, -5.984e-02, -5.551e-02, -2.214e-01, -4.605e-02, -6.742e-02, -4.717e-03, 3.778e-02, -4.409e-02), r);\n\tr = MulAdd(s0_6, M4(-5.846e-02, 3.342e-02, 5.078e-02, -3.740e-02, 5.761e-02, -2.075e-02, 1.671e-02, -3.571e-02, -5.007e-02, -7.200e-02, 3.912e-02, -3.255e-02, 4.228e-02, -2.367e-02, -2.202e-02, 7.920e-03), r);\n\tr = MulAdd(s0_7, M4(6.797e-02, -1.165e-01, 5.155e-02, -3.932e-02, 1.142e-02, 3.870e-02, -4.763e-04, -1.028e-02, -1.720e-01, 7.857e-02, -1.793e-02, -1.800e-02, 5.313e-02, -9.309e-02, 3.770e-02, -1.870e-02), r);\n\tr = MulAdd(s0_8, M4(-1.552e-02, -1.472e-02, -4.440e-02, -1.742e-02, -9.677e-03, -2.365e-03, 8.017e-03, -3.447e-03, -4.267e-02, 9.093e-02, -5.832e-03, 1.950e-02, -4.456e-03, -1.277e-01, -9.661e-02, -3.767e-02), r);\n\tr = MulAdd(s1_0, M4(1.220e-02, 2.545e-02, -2.427e-02, -2.919e-02, 1.376e-01, -4.778e-02, -5.280e-02, 3.424e-02, -1.951e-02, 5.586e-02, -2.064e-02, -1.663e-02, 5.072e-03, -1.511e-02, 2.885e-02, 3.522e-02), r);\n\tr = MulAdd(s1_1, M4(-4.135e-03, -4.255e-02, 1.657e-02, 1.401e-02, 2.459e-01, -1.500e-01, -1.057e-01, 8.905e-02, 2.055e-02, -3.477e-02, -4.044e-02, -3.994e-02, 8.582e-03, 8.109e-02, -2.204e-03, -1.661e-02), r);\n\tr = MulAdd(s1_2, M4(-5.406e-04, 1.480e-02, 2.395e-02, -2.375e-02, -4.139e-02, 7.214e-02, -6.710e-02, 1.183e-02, 6.631e-03, 4.481e-02, -2.836e-02, 1.352e-02, 1.651e-02, 1.306e-02, -4.984e-02, 8.676e-03), r);\n\tr = MulAdd(s1_3, M4(-5.175e-03, 4.428e-02, -5.746e-02, 4.562e-02, 1.205e-02, -7.419e-02, 1.158e-02, 6.830e-02, 1.129e-02, -2.328e-02, 2.257e-02, 2.547e-02, 9.760e-03, 5.335e-02, -6.050e-02, 1.134e-01), r);\n\tr = MulAdd(s1_4, M4(6.943e-04, 6.939e-02, 4.084e-03, -4.701e-02, 1.362e-01, -3.526e-01, -3.718e-02, 5.053e-02, -6.910e-02, 5.202e-02, -5.544e-02, -5.834e-02, -1.604e-02, 8.243e-02, 1.663e-01, -3.396e-02), r);\n\tr = MulAdd(s1_5, M4(3.533e-03, -4.729e-02, -3.179e-02, 3.769e-02, 4.131e-02, -1.719e-01, -1.389e-02, 2.174e-02, 4.603e-03, -2.876e-02, 6.189e-02, 4.800e-02, 3.724e-02, 2.389e-02, -5.403e-02, 1.807e-02), r);\n\tr = MulAdd(s1_6, M4(-1.131e-01, 8.189e-02, -1.971e-02, 1.542e-02, 9.368e-02, 6.963e-02, 3.110e-02, 1.709e-02, -1.058e-02, -2.140e-03, 2.814e-02, 1.187e-02, 8.828e-02, -1.966e-03, -1.097e-01, -3.622e-02), r);\n\tr = MulAdd(s1_7, M4(8.828e-02, -1.550e-01, 2.141e-03, -2.533e-03, 2.275e-03, -9.305e-02, 2.913e-03, -2.725e-03, -3.023e-02, 7.153e-02, -2.468e-02, -1.383e-02, 9.642e-02, 1.112e-01, -2.530e-01, 5.328e-02), r);\n\tr = MulAdd(s1_8, M4(-4.595e-02, 8.567e-02, -1.921e-02, 1.341e-02, -4.145e-03, -6.961e-02, -2.132e-03, -1.025e-02, 1.577e-02, -2.728e-02, 8.589e-03, -1.513e-02, -2.036e-03, 3.103e-02, 2.803e-02, -9.909e-03), r);\n\tr = MulAdd(s2_0, M4(1.872e-02, -3.554e-02, -4.315e-02, 9.349e-03, 1.951e-02, 2.302e-02, -2.166e-02, 1.058e-02, 5.752e-02, -2.872e-02, 1.595e-03, -2.577e-02, 4.223e-02, 3.590e-02, -2.997e-02, -9.733e-03), r);\n\tr = MulAdd(s2_1, M4(-6.303e-02, 8.675e-02, -4.988e-03, -4.818e-02, 6.319e-02, -9.892e-02, 8.761e-02, 5.963e-02, -3.507e-02, -1.705e-02, 6.934e-02, 4.970e-02, 2.267e-03, -4.190e-02, -2.179e-03, -3.351e-02), r);\n\tr = MulAdd(s2_2, M4(2.213e-02, -3.701e-02, 3.497e-02, -5.799e-02, -3.614e-02, -2.253e-02, -4.799e-02, -4.115e-02, 8.547e-03, 7.009e-02, -1.611e-03, 3.784e-02, 1.500e-03, 5.809e-02, -2.469e-02, 2.074e-02), r);\n\tr = MulAdd(s2_3, M4(-2.082e-02, 5.921e-02, -5.766e-03, -6.030e-02, 7.578e-03, 1.904e-02, -1.047e-01, 1.059e-01, -7.170e-02, 5.991e-02, 4.122e-02, -4.622e-02, 3.416e-03, 1.202e-03, 1.250e-02, 2.651e-02), r);\n\tr = MulAdd(s2_4, M4(-5.199e-02, -8.660e-03, -9.264e-02, 4.332e-02, -2.770e-01, -9.477e-02, -1.739e-01, 3.310e-02, -5.992e-02, -2.027e-01, 1.018e-01, -6.506e-02, -1.506e-01, -3.280e-02, 7.540e-02, -2.998e-02), r);\n\tr = MulAdd(s2_5, M4(-4.084e-02, -1.771e-02, 1.499e-02, -2.934e-02, -1.790e-02, -1.188e-01, 1.644e-01, -5.213e-02, -9.989e-03, 8.711e-02, -5.337e-02, -8.002e-03, -3.434e-02, 2.052e-02, 2.082e-02, 2.510e-02), r);\n\tr = MulAdd(s2_6, M4(1.092e-02, 2.723e-02, 7.463e-03, -1.953e-02, -9.929e-02, -3.255e-02, 7.282e-02, -8.302e-02, 4.877e-02, -2.527e-02, 2.649e-04, 2.636e-02, -3.057e-02, -2.064e-02, 3.504e-02, 1.511e-02), r);\n\tr = MulAdd(s2_7, M4(-2.356e-02, 1.447e-02, 3.365e-02, -6.376e-03, 1.848e-02, -4.435e-02, -1.451e-01, -1.324e-01, -1.865e-02, 2.552e-02, -5.798e-02, 8.032e-03, -4.240e-02, 6.194e-02, -7.205e-02, -7.899e-03), r);\n\tr = MulAdd(s2_8, M4(5.712e-02, -8.752e-03, 3.965e-02, -1.018e-02, 5.286e-03, -3.574e-02, 7.631e-02, -1.518e-02, -1.465e-02, 1.768e-02, 2.405e-02, 8.130e-03, 2.138e-04, -6.461e-03, -2.955e-02, 3.826e-03), r);\n\tr = MulAdd(s3_0, M4(-4.841e-02, 2.032e-01, -3.635e-02, -2.115e-01, 1.990e-02, 4.568e-03, 2.516e-03, -1.000e-02, 5.002e-02, -4.300e-02, 9.021e-03, -5.821e-02, -7.489e-02, 1.239e-02, 1.077e-01, 1.305e-01), r);\n\tr = MulAdd(s3_1, M4(-4.201e-02, -1.989e-01, -3.334e-02, -6.472e-03, 1.388e-02, 2.082e-02, -4.926e-02, -1.762e-02, -5.040e-02, -2.869e-03, 2.892e-02, -4.308e-02, -2.206e-02, 1.446e-02, -7.367e-02, -6.763e-02), r);\n\tr = MulAdd(s3_2, M4(2.386e-02, -9.420e-02, 1.363e-01, 1.211e-02, -6.687e-04, -3.608e-02, 7.732e-03, 1.757e-03, 2.526e-03, -1.860e-02, 4.211e-02, 2.851e-02, 4.414e-03, 6.763e-03, 8.533e-02, 3.429e-03), r);\n\tr = MulAdd(s3_3, M4(-2.262e-01, 4.314e-02, -9.302e-02, 1.245e-01, 1.110e-01, 3.947e-02, -1.664e-02, 3.281e-02, -4.983e-02, 1.251e-02, 4.169e-02, -5.546e-02, 2.145e-01, -1.460e-01, 3.327e-01, -6.628e-02), r);\n\tr = MulAdd(s3_4, M4(-2.728e-02, -4.408e-01, -9.411e-02, -2.079e-02, -1.833e-01, 6.247e-02, -7.999e-02, 7.305e-02, -7.140e-02, -5.381e-02, 2.619e-02, 4.561e-02, -1.321e-01, 1.948e-01, 5.573e-01, 6.632e-02), r);\n\tr = MulAdd(s3_5, M4(-1.393e-01, -9.259e-02, -7.399e-02, -1.722e-01, -1.226e-02, -2.651e-02, 2.733e-02, -3.692e-02, -8.345e-03, 3.471e-02, 1.499e-02, -5.093e-02, 4.088e-03, 1.013e-02, 4.411e-02, 2.132e-02), r);\n\tr = MulAdd(s3_6, M4(-1.362e-01, 1.633e-02, 3.048e-03, -2.313e-02, -1.697e-03, -5.715e-03, 2.150e-02, -1.245e-02, 6.827e-02, -7.725e-02, 5.958e-02, -2.006e-03, -8.098e-02, 1.432e-02, -1.368e-01, 2.472e-02), r);\n\tr = MulAdd(s3_7, M4(-6.272e-02, -1.959e-01, 1.151e-01, -3.563e-02, -5.832e-02, -4.127e-02, -6.041e-04, 3.039e-02, 8.441e-03, 4.542e-02, -5.644e-02, -3.768e-03, -5.552e-03, -2.609e-02, 1.490e-01, -3.899e-02), r);\n\tr = MulAdd(s3_8, M4(-2.868e-02, 1.260e-01, 2.419e-02, -7.906e-03, -1.357e-02, 6.577e-02, -3.260e-02, -1.060e-02, -9.049e-03, -8.496e-02, 1.345e-02, 1.437e-02, -4.895e-02, 5.249e-02, -3.312e-02, -1.726e-02), r);\n\tr = MulAdd(s4_0, M4(1.845e-02, -1.428e-02, 3.025e-02, -3.601e-02, -7.456e-02, 4.700e-02, -5.271e-03, 8.968e-02, -3.187e-02, 8.715e-03, 1.572e-03, 7.963e-03, -2.486e-02, -3.948e-02, -4.365e-02, 1.295e-02), r);\n\tr = MulAdd(s4_1, M4(5.060e-02, -3.672e-02, 4.173e-02, 5.038e-02, -1.104e-01, 4.492e-02, -6.302e-02, 2.167e-02, 1.372e-01, -3.682e-02, -3.740e-02, 2.062e-02, -6.461e-02, -5.470e-03, -8.412e-02, -1.235e-01), r);\n\tr = MulAdd(s4_2, M4(-1.806e-02, 1.559e-02, -2.325e-02, -4.432e-02, 3.505e-02, -4.632e-03, 4.085e-02, 1.421e-01, -4.986e-03, 4.484e-03, 6.821e-03, 5.988e-03, 1.689e-01, -7.924e-02, 2.597e-02, -3.159e-02), r);\n\tr = MulAdd(s4_3, M4(1.002e-01, -6.215e-02, -2.484e-02, -9.233e-02, 4.768e-02, -1.974e-01, -8.080e-03, 5.666e-03, -1.172e-02, 4.765e-03, -2.743e-03, -5.749e-02, -3.136e-02, -1.183e-02, 4.700e-02, 2.595e-02), r);\n\tr = MulAdd(s4_4, M4(-3.767e-02, 2.888e-02, 1.105e-01, 1.856e-02, 9.276e-02, 7.851e-02, -5.774e-02, -1.489e-01, -7.548e-02, -7.316e-02, 6.093e-01, 3.221e-01, -5.959e-01, 9.822e-02, 8.992e-02, 1.061e-01), r);\n\tr = MulAdd(s4_5, M4(-5.871e-03, 9.548e-03, -1.592e-02, 1.531e-02, 5.870e-02, -3.468e-03, 4.422e-02, 2.998e-02, 3.743e-03, -5.535e-02, 3.347e-02, 1.525e-02, 3.906e-02, 6.235e-02, -1.618e-02, 1.045e-01), r);\n\tr = MulAdd(s4_6, M4(1.008e-03, 3.806e-03, 1.244e-02, -7.620e-02, 1.407e-02, 8.177e-03, 6.615e-02, -2.112e-02, -4.001e-02, -2.659e-02, 2.051e-03, -1.621e-02, 1.130e-01, -3.558e-02, -6.091e-02, -6.975e-03), r);\n\tr = MulAdd(s4_7, M4(-1.033e-01, 5.164e-02, -8.706e-02, 5.892e-02, -2.319e-02, -6.319e-02, -1.004e-01, 6.903e-02, 3.794e-02, -1.284e-01, 5.790e-02, -3.345e-03, -1.194e-01, 1.352e-01, -8.862e-02, 9.251e-02), r);\n\tr = MulAdd(s4_8, M4(6.850e-02, 2.214e-02, -2.984e-02, -6.584e-03, -6.177e-02, 1.027e-01, -1.062e-04, 1.554e-02, 2.624e-02, 2.446e-02, -2.709e-02, -6.687e-03, -8.656e-03, 6.004e-02, -8.694e-02, 2.832e-02), r);\n\tr = MulAdd(s5_0, M4(6.199e-02, -1.131e-01, 6.170e-02, -7.534e-03, -4.255e-02, 4.538e-02, -3.063e-02, 4.212e-02, 2.331e-02, -1.634e-02, -6.050e-03, -4.349e-02, 2.814e-03, -1.989e-03, -1.116e-02, -2.933e-02), r);\n\tr = MulAdd(s5_1, M4(-3.261e-02, 7.652e-02, 6.421e-02, -1.008e-01, 5.395e-02, 5.759e-02, -1.665e-01, 1.023e-01, 5.627e-02, -2.189e-02, 8.770e-03, 1.208e-01, -1.837e-02, -5.015e-02, 3.498e-02, 4.259e-02), r);\n\tr = MulAdd(s5_2, M4(2.237e-02, 9.596e-03, -4.689e-02, 1.668e-02, -4.693e-02, 3.892e-02, -4.201e-02, 8.341e-03, 1.646e-02, 9.753e-02, 7.488e-04, -4.371e-02, -4.316e-02, 1.629e-02, 1.219e-02, -4.465e-02), r);\n\tr = MulAdd(s5_3, M4(1.071e-01, 1.818e-01, 1.804e-01, -4.161e-01, -5.134e-02, -2.543e-03, 4.252e-02, -1.254e-01, 8.945e-02, -6.327e-02, -1.708e-02, -7.655e-02, -1.818e-02, 1.160e-02, 5.056e-02, -9.572e-03), r);\n\tr = MulAdd(s5_4, M4(-7.047e-02, 5.558e-02, -2.566e-01, 2.293e-02, 1.344e-01, -5.759e-02, 1.336e-01, -1.365e-01, -1.018e-01, 1.131e-01, -2.599e-04, 5.203e-02, -4.006e-02, 5.433e-02, -1.179e-02, 4.684e-02), r);\n\tr = MulAdd(s5_5, M4(9.100e-03, -5.963e-02, -4.189e-02, 2.374e-02, -1.049e-02, -1.697e-02, 3.455e-02, 7.721e-02, 4.418e-02, 9.174e-02, 1.238e-01, 6.190e-02, 7.101e-02, 7.415e-02, 8.181e-03, 5.949e-02), r);\n\tr = MulAdd(s5_6, M4(-3.657e-02, 8.785e-02, -1.366e-01, 3.699e-02, -5.526e-02, 3.303e-02, -1.172e-02, 5.110e-02, 1.694e-02, -4.945e-02, -1.527e-02, -5.031e-02, 4.639e-03, -3.881e-03, -2.765e-02, -5.272e-03), r);\n\tr = MulAdd(s5_7, M4(-1.075e-01, -3.386e-02, -4.008e-03, -2.277e-01, 2.691e-02, 5.804e-02, -7.960e-02, -1.331e-02, -1.555e-03, 2.882e-02, -2.749e-02, 1.986e-02, 4.661e-02, 5.051e-03, 2.789e-04, -1.044e-02), r);\n\tr = MulAdd(s5_8, M4(3.584e-02, 5.666e-02, 2.708e-02, -7.064e-02, -1.714e-02, 3.086e-02, -6.665e-03, 1.561e-02, 3.868e-02, 1.260e-02, 3.594e-02, 1.405e-02, 4.834e-02, 1.432e-02, -1.207e-03, -3.702e-02), r);\n\tr = MulAdd(s6_0, M4(-7.545e-03, 5.817e-03, -3.976e-03, -6.886e-02, 1.241e-03, 3.949e-02, -9.141e-03, -2.932e-02, 3.061e-02, -3.527e-03, 4.619e-02, -6.930e-03, 4.226e-03, -3.380e-02, -4.733e-03, -9.659e-02), r);\n\tr = MulAdd(s6_1, M4(1.434e-02, -5.702e-02, 1.086e-02, 1.870e-02, -8.674e-04, -2.612e-03, -4.122e-02, -1.223e-02, 3.054e-02, 2.505e-02, 4.928e-02, -2.850e-02, -6.155e-02, -2.670e-02, -2.795e-02, -2.198e-02), r);\n\tr = MulAdd(s6_2, M4(3.110e-02, 1.396e-02, 4.330e-02, -5.054e-03, -1.258e-03, 9.789e-04, 2.307e-03, 3.330e-03, 1.202e-02, -1.888e-03, -7.485e-03, -3.196e-02, 4.168e-03, 1.211e-02, 4.629e-02, -1.252e-02), r);\n\tr = MulAdd(s6_3, M4(-5.995e-02, 2.188e-02, -2.808e-02, 1.556e-02, -1.819e-02, -5.827e-03, -2.431e-02, 4.258e-02, 6.412e-03, 2.012e-02, 1.066e-02, 8.169e-02, 4.143e-02, 2.179e-01, -3.265e-02, -8.631e-03), r);\n\tr = MulAdd(s6_4, M4(1.035e-01, -1.406e-01, 1.473e-01, 7.944e-02, -3.233e-02, -1.322e-02, 1.975e-02, 4.355e-02, -6.917e-02, 6.086e-02, 1.008e-03, -5.061e-02, -1.441e-01, 6.546e-02, -2.602e-02, -1.753e-01), r);\n\tr = MulAdd(s6_5, M4(8.260e-02, -4.606e-02, 1.443e-01, 9.276e-03, -6.593e-03, 3.684e-02, 3.764e-02, 1.085e-03, -1.626e-02, -5.051e-02, -1.110e-02, 7.292e-02, 3.659e-02, -2.852e-02, -3.503e-02, 2.781e-02), r);\n\tr = MulAdd(s6_6, M4(-2.993e-02, 3.806e-02, 3.685e-03, -1.483e-02, -3.055e-02, -1.343e-02, 5.796e-02, -2.555e-02, -3.573e-03, 2.753e-02, -1.052e-01, 5.268e-03, -6.556e-02, 1.491e-02, 1.841e-02, 2.626e-02), r);\n\tr = MulAdd(s6_7, M4(6.475e-02, -1.022e-01, -1.800e-02, -6.002e-03, 1.126e-01, -1.013e-01, 1.138e-01, -5.236e-02, 5.473e-02, -4.970e-02, 7.074e-02, -2.390e-02, -2.350e-02, -2.878e-02, 2.098e-02, 7.152e-02), r);\n\tr = MulAdd(s6_8, M4(3.902e-02, -7.221e-03, 2.533e-02, -1.634e-02, -7.790e-02, 1.895e-02, 3.363e-02, 2.468e-02, 5.341e-02, 3.363e-02, -8.903e-03, 2.315e-03, 5.390e-03, 1.790e-02, -2.082e-02, -2.614e-04), r);\n\tr = MulAdd(s7_0, M4(4.407e-02, -4.841e-02, 8.242e-02, 2.578e-02, -2.986e-02, -2.456e-02, -3.235e-02, 2.050e-02, 1.417e-02, 3.272e-02, -5.705e-03, -5.092e-02, 3.907e-02, -7.260e-02, -9.419e-02, 1.317e-02), r);\n\tr = MulAdd(s7_1, M4(-6.845e-03, 2.661e-02, 7.769e-03, -6.435e-02, 7.383e-03, -1.629e-02, -4.591e-02, -7.700e-02, 6.616e-02, -9.670e-03, 1.328e-02, 7.153e-02, -4.024e-02, -2.898e-02, 4.793e-02, 7.884e-02), r);\n\tr = MulAdd(s7_2, M4(-1.220e-02, -8.752e-02, -6.199e-02, 9.084e-03, 1.325e-02, -5.939e-02, 4.166e-02, 7.510e-03, -2.051e-02, -3.170e-02, 2.921e-02, -3.657e-02, -4.016e-02, 3.860e-02, -6.299e-02, -3.094e-02), r);\n\tr = MulAdd(s7_3, M4(1.389e-01, 8.623e-05, 2.497e-03, 6.358e-02, 2.282e-02, 5.944e-03, 9.160e-02, 6.074e-02, -4.673e-02, 8.961e-02, 4.270e-02, 1.630e-01, 5.060e-01, 5.417e-03, 1.208e-01, 3.584e-02), r);\n\tr = MulAdd(s7_4, M4(3.425e-02, 1.627e-01, 1.463e-01, -1.593e-01, 5.820e-02, -1.009e-01, -2.588e-01, 1.984e-01, -5.505e-02, -8.789e-02, -2.568e-02, -1.750e-01, 1.750e-01, -4.991e-01, -1.489e-01, -1.970e-02), r);\n\tr = MulAdd(s7_5, M4(-9.526e-02, -5.354e-02, 4.962e-02, 1.750e-02, -8.023e-02, 2.113e-01, -1.938e-01, -2.143e-01, 1.331e-02, 1.890e-02, 8.502e-03, 1.317e-01, 3.780e-03, -1.992e-02, 1.165e-02, 5.067e-03), r);\n\tr = MulAdd(s7_6, M4(8.740e-04, -1.707e-02, -5.092e-03, -2.246e-02, 3.230e-02, -2.677e-02, -4.519e-02, 1.569e-02, 2.273e-02, -7.644e-02, 5.968e-02, -5.865e-02, -7.115e-02, 2.750e-02, -2.825e-02, 5.514e-02), r);\n\tr = MulAdd(s7_7, M4(1.093e-01, -4.552e-02, -2.246e-02, 5.209e-02, 1.481e-01, -4.852e-02, -7.095e-02, 1.554e-01, -5.972e-02, 4.680e-02, 4.096e-02, 7.233e-02, -2.237e-02, -1.442e-01, 4.287e-02, 4.532e-02), r);\n\tr = MulAdd(s7_8, M4(1.076e-03, -9.680e-02, 6.785e-03, 3.552e-02, -9.446e-02, 1.963e-02, 1.414e-01, 1.773e-02, -2.142e-02, 3.047e-02, -3.103e-02, -2.439e-02, 1.599e-03, 8.774e-03, 1.240e-02, 2.460e-02), r);\n\treturn r;\n}\n\nvoid Pass9(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 10\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0, t1, t2, t3\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 4.986e-04, 3.006e-04, 5.437e-04, 6.561e-04 };\n\tr = MulAdd(s0_0, M4(8.288e-03, -1.321e-02, -2.106e-02, -1.756e-02, 3.676e-02, 1.095e-02, 1.181e-02, -2.697e-03, 4.596e-02, 2.905e-02, 1.476e-02, 2.231e-02, 2.701e-03, 3.902e-03, -3.031e-03, 8.976e-03), r);\n\tr = MulAdd(s0_1, M4(3.357e-02, 4.993e-02, 2.113e-02, 2.618e-02, -5.839e-02, 4.692e-03, 2.007e-02, 1.737e-02, 1.132e-02, 4.016e-02, -2.122e-02, -2.512e-02, 2.428e-02, 2.614e-02, -5.047e-02, 1.221e-02), r);\n\tr = MulAdd(s0_2, M4(1.581e-03, 2.179e-02, -2.680e-02, -2.460e-02, 1.697e-03, -3.966e-02, -2.177e-03, 2.177e-03, 3.197e-03, 2.340e-02, -2.558e-03, 1.068e-02, 2.225e-02, 4.831e-04, 2.057e-02, -3.325e-02), r);\n\tr = MulAdd(s0_3, M4(-8.245e-03, 1.447e-02, 4.863e-02, 3.704e-02, 9.376e-03, -1.558e-02, 4.408e-02, 5.230e-02, -1.237e-01, 2.204e-02, -4.083e-02, -7.021e-02, -3.404e-02, 2.196e-02, -5.405e-02, 1.713e-02), r);\n\tr = MulAdd(s0_4, M4(-1.691e-02, -5.413e-02, 1.412e-02, -4.122e-02, 3.281e-02, 1.344e-01, -9.106e-02, 5.237e-02, 7.495e-02, -2.874e-01, 1.509e-01, 9.939e-02, 6.605e-02, 1.485e-02, 2.092e-01, -3.814e-02), r);\n\tr = MulAdd(s0_5, M4(3.302e-02, 9.497e-03, 5.188e-02, 7.025e-02, -3.038e-02, -4.289e-02, 8.231e-03, -6.615e-02, -3.845e-02, 6.910e-02, -1.664e-03, 1.457e-02, -3.180e-02, -7.829e-02, -7.862e-02, -4.652e-02), r);\n\tr = MulAdd(s0_6, M4(9.334e-03, -2.657e-02, -6.000e-02, -5.408e-02, 3.188e-02, -1.277e-02, 1.829e-02, -6.218e-02, 1.772e-02, 7.507e-03, -1.788e-02, 9.071e-03, 8.863e-03, -9.756e-03, -8.313e-04, -1.364e-02), r);\n\tr = MulAdd(s0_7, M4(-6.391e-02, 1.455e-02, -4.018e-03, -1.183e-02, -1.013e-01, -3.137e-02, -4.261e-02, 2.507e-02, -5.843e-03, 5.284e-02, -7.524e-02, -2.047e-02, -6.055e-02, 2.008e-02, 1.745e-02, 6.396e-02), r);\n\tr = MulAdd(s0_8, M4(9.589e-03, -7.702e-03, -1.385e-02, -3.273e-03, 7.148e-03, -2.582e-02, -1.582e-02, -4.480e-02, 1.874e-02, 7.253e-03, -7.904e-03, -2.832e-02, 9.305e-03, -1.280e-02, -3.018e-02, 9.239e-03), r);\n\tr = MulAdd(s1_0, M4(-2.402e-03, -1.702e-02, -1.430e-02, -1.437e-02, 3.541e-02, 1.098e-02, 1.285e-02, -4.486e-03, -3.848e-03, 1.516e-02, 1.246e-02, 2.232e-02, -1.736e-02, -6.417e-03, -5.782e-03, 1.797e-02), r);\n\tr = MulAdd(s1_1, M4(2.029e-02, 3.807e-02, 3.010e-02, 3.850e-02, -6.865e-02, -1.083e-02, 2.365e-02, 1.968e-02, -1.490e-02, -2.014e-02, -8.668e-03, -2.748e-02, -3.469e-04, 9.138e-02, -1.043e-01, 2.116e-02), r);\n\tr = MulAdd(s1_2, M4(-7.515e-03, 3.076e-03, -2.357e-02, -1.654e-02, -4.330e-03, -3.571e-02, -3.355e-03, 4.346e-04, 5.423e-03, 9.114e-03, 3.344e-03, 2.062e-02, 2.949e-02, -7.357e-02, 1.904e-02, -2.418e-02), r);\n\tr = MulAdd(s1_3, M4(-3.964e-02, 1.319e-02, 1.290e-02, 1.144e-02, 3.125e-02, -1.283e-02, 5.506e-02, 5.888e-02, -7.126e-03, 2.046e-03, 2.282e-02, -3.216e-02, 1.672e-02, 9.030e-03, -5.734e-02, 3.116e-02), r);\n\tr = MulAdd(s1_4, M4(3.315e-01, 5.508e-02, -1.405e-01, -1.298e-01, 3.390e-02, 1.265e-01, -1.198e-01, 1.523e-02, 1.206e-01, -1.592e-02, -1.558e-02, 4.463e-03, -5.783e-02, 1.140e-03, 6.348e-01, -2.935e-01), r);\n\tr = MulAdd(s1_5, M4(2.099e-02, 1.821e-01, 5.430e-02, -2.893e-03, -2.511e-02, -3.087e-02, 6.097e-03, -5.772e-02, -1.947e-02, 1.794e-02, -3.531e-03, -2.538e-02, -1.085e-01, 1.207e-01, -1.402e-01, -1.096e-01), r);\n\tr = MulAdd(s1_6, M4(3.216e-02, -2.144e-02, -6.793e-02, -5.081e-02, 4.411e-02, -7.452e-03, 3.820e-02, -4.924e-02, -2.191e-02, -3.942e-03, -6.666e-02, -3.475e-03, 1.302e-02, -1.511e-02, -1.236e-02, -1.293e-02), r);\n\tr = MulAdd(s1_7, M4(5.775e-03, 6.997e-02, -2.382e-01, -1.491e-01, -8.038e-02, -1.730e-02, -1.200e-02, 4.096e-02, -4.595e-02, -1.271e-02, 6.949e-02, 5.294e-03, -5.210e-02, 3.667e-03, -6.985e-02, 7.442e-02), r);\n\tr = MulAdd(s1_8, M4(2.313e-02, 2.815e-02, -3.577e-03, -8.620e-02, 8.754e-03, -1.742e-02, -1.739e-02, -2.487e-02, 4.649e-03, -1.378e-02, -1.452e-02, 2.420e-02, -6.308e-04, -1.359e-02, -5.233e-02, 1.669e-02), r);\n\tr = MulAdd(s2_0, M4(-3.368e-02, -3.980e-03, -9.703e-04, 1.080e-02, 9.988e-03, -1.531e-02, -4.364e-03, -1.666e-02, 3.106e-03, -5.797e-03, -9.667e-03, -1.150e-02, -2.375e-02, 2.223e-02, 2.287e-02, 2.405e-02), r);\n\tr = MulAdd(s2_1, M4(5.779e-03, -2.728e-02, -3.430e-03, -2.802e-02, 6.992e-03, 5.027e-03, -1.433e-02, -1.959e-02, -2.256e-02, 2.146e-02, -1.511e-03, 1.838e-02, -4.855e-03, -6.710e-02, 5.815e-03, -5.167e-03), r);\n\tr = MulAdd(s2_2, M4(-1.631e-02, -4.753e-03, 6.240e-03, 2.216e-02, -7.764e-04, 2.601e-02, -1.759e-02, -1.272e-02, -9.234e-03, 1.193e-02, -1.557e-02, 9.221e-03, 3.824e-03, 1.605e-02, -1.521e-03, 4.219e-03), r);\n\tr = MulAdd(s2_3, M4(5.929e-02, -1.351e-02, -3.640e-02, -7.495e-02, 2.995e-04, -5.310e-03, 9.308e-03, 5.831e-03, -3.071e-02, 3.279e-02, 2.226e-02, 2.718e-02, -7.876e-02, -1.108e-02, -1.091e-01, -3.100e-03), r);\n\tr = MulAdd(s2_4, M4(2.597e-01, 2.576e-01, -1.353e-01, -3.268e-02, -1.675e-02, -1.212e-02, -1.013e-01, 7.113e-03, -1.483e-01, -6.736e-02, -1.158e-01, -5.368e-02, -2.017e-02, -1.257e-01, -7.094e-02, -2.066e-01), r);\n\tr = MulAdd(s2_5, M4(-6.604e-03, 4.490e-02, -1.689e-02, -8.739e-02, -1.825e-02, 2.317e-02, -7.293e-03, 6.325e-02, -3.538e-02, 2.314e-01, -3.612e-03, 9.028e-02, 1.150e-02, 3.354e-02, 2.008e-02, 4.114e-02), r);\n\tr = MulAdd(s2_6, M4(-6.085e-02, 8.006e-03, 5.597e-03, 4.375e-03, 5.102e-02, -7.769e-03, 5.785e-02, -3.648e-02, 2.499e-02, -1.236e-02, -2.100e-02, -9.887e-03, 1.139e-02, 1.272e-02, 9.081e-03, 2.087e-03), r);\n\tr = MulAdd(s2_7, M4(-2.607e-02, -9.075e-02, 3.944e-02, 8.550e-02, 1.373e-02, 2.031e-02, 1.814e-02, -7.935e-02, -4.653e-02, 8.520e-02, -8.139e-02, 5.661e-02, 1.263e-02, 1.954e-02, 2.187e-02, 3.499e-02), r);\n\tr = MulAdd(s2_8, M4(-1.408e-02, -2.322e-02, -2.956e-02, -5.237e-02, -3.299e-02, -6.760e-03, 3.166e-02, 9.487e-02, 4.560e-03, 5.893e-03, -5.681e-02, 1.580e-01, 1.593e-03, 1.052e-03, 5.417e-03, 1.003e-02), r);\n\tr = MulAdd(s3_0, M4(-1.585e-02, -6.165e-03, -6.595e-03, 6.867e-03, 2.167e-02, -1.104e-02, -5.165e-03, -1.270e-02, -1.542e-03, -9.897e-04, -9.215e-03, -7.713e-03, -3.071e-02, 2.166e-02, 2.315e-02, 2.699e-02), r);\n\tr = MulAdd(s3_1, M4(2.748e-02, -9.194e-03, -9.189e-03, -3.307e-02, 2.411e-02, 8.146e-03, -1.984e-02, -1.898e-02, -1.813e-02, 4.340e-03, 5.052e-03, 1.439e-02, -1.342e-02, -7.745e-02, 4.404e-03, -8.122e-03), r);\n\tr = MulAdd(s3_2, M4(-9.177e-03, 1.751e-02, 4.400e-03, 2.236e-02, 4.106e-03, -8.324e-03, -2.258e-02, -2.498e-03, 4.850e-03, -1.186e-02, -1.428e-02, -8.462e-03, 1.590e-03, 1.123e-02, -6.362e-03, 1.537e-03), r);\n\tr = MulAdd(s3_3, M4(1.300e-02, -2.392e-02, 1.641e-02, -5.358e-02, 2.303e-02, 9.964e-04, 2.607e-02, 1.629e-02, -4.236e-02, 3.306e-02, 1.082e-02, 3.368e-02, -9.061e-02, -1.555e-02, -1.254e-01, -9.231e-03), r);\n\tr = MulAdd(s3_4, M4(1.093e-02, 6.117e-02, -2.334e-02, 7.731e-02, -1.889e-01, -4.521e-02, -1.381e-01, 4.990e-02, -3.273e-03, -1.392e-01, -5.917e-02, -1.084e-01, -4.124e-02, -1.464e-01, -8.814e-02, -2.305e-01), r);\n\tr = MulAdd(s3_5, M4(2.954e-03, -2.640e-02, -1.878e-02, -4.553e-02, -1.245e-01, 3.719e-01, 7.327e-02, -8.666e-02, 7.281e-02, 6.134e-02, 6.567e-02, 7.487e-03, 7.990e-03, 2.353e-02, 1.700e-02, 3.026e-02), r);\n\tr = MulAdd(s3_6, M4(-1.941e-02, 4.529e-03, -4.042e-02, 2.598e-03, 4.582e-02, -7.800e-03, 3.671e-02, -2.995e-02, 1.575e-02, -9.918e-03, -3.626e-02, -7.104e-03, 1.194e-02, 1.250e-02, 1.155e-03, -5.683e-04), r);\n\tr = MulAdd(s3_7, M4(1.277e-02, -1.435e-02, 1.008e-01, 3.798e-02, -1.700e-03, 2.830e-02, 2.744e-01, -1.602e-01, -3.744e-02, 9.253e-02, 9.984e-03, 2.357e-02, 7.448e-03, 1.759e-02, 1.404e-02, 2.423e-02), r);\n\tr = MulAdd(s3_8, M4(-2.164e-02, -2.065e-02, -2.798e-02, 4.532e-03, -2.055e-02, -4.854e-02, -2.606e-02, 1.503e-02, 2.083e-02, -1.722e-02, 1.066e-02, 5.132e-02, 3.575e-04, -2.594e-03, 2.816e-03, 5.034e-03), r);\n\tr = MulAdd(s4_0, M4(-1.426e-02, 1.257e-02, 1.033e-02, 1.935e-02, -3.030e-02, 1.229e-02, -4.250e-03, 6.165e-03, -1.997e-03, -9.436e-03, -2.618e-02, -1.437e-02, -1.190e-02, -2.632e-02, 2.175e-02, 2.317e-02), r);\n\tr = MulAdd(s4_1, M4(2.095e-01, -5.779e-02, 5.158e-02, 2.231e-03, -4.922e-02, -8.571e-02, -4.875e-02, 2.141e-02, 9.009e-02, -1.725e-02, -5.313e-02, -2.566e-02, 1.735e-02, 4.925e-02, 1.420e-02, 1.780e-02), r);\n\tr = MulAdd(s4_2, M4(-9.185e-02, -5.607e-02, -8.766e-02, -1.148e-01, -3.548e-03, -2.415e-02, -2.607e-02, -2.083e-02, 1.337e-03, 5.432e-02, 6.464e-03, 3.675e-03, 5.501e-03, -3.110e-03, 1.074e-02, 2.205e-02), r);\n\tr = MulAdd(s4_3, M4(3.402e-02, -2.865e-02, -1.933e-02, -3.812e-02, -4.599e-02, 3.587e-03, -5.386e-02, 4.163e-02, 6.190e-02, -1.407e-02, 1.190e-02, -6.332e-03, 1.268e-01, 7.919e-03, -1.616e-01, 9.103e-03), r);\n\tr = MulAdd(s4_4, M4(-1.923e-02, 1.850e-02, 2.046e-01, -1.099e-01, 1.178e-01, 2.343e-01, 2.749e-01, -1.415e-01, -3.663e-01, 2.106e-01, 1.741e-01, 7.106e-02, 2.185e-01, 2.617e-01, -2.407e-01, -4.685e-01), r);\n\tr = MulAdd(s4_5, M4(-7.289e-02, 1.753e-02, -6.698e-02, 1.516e-01, -2.065e-02, -4.328e-02, -4.114e-02, -1.211e-02, 4.070e-02, 5.314e-02, -3.458e-02, -2.126e-01, -3.308e-03, 6.276e-02, -2.422e-03, 5.390e-03), r);\n\tr = MulAdd(s4_6, M4(-2.044e-02, 9.857e-03, -5.566e-03, 1.947e-02, -2.924e-03, -2.792e-02, -2.582e-02, -1.406e-02, 4.819e-02, -3.570e-02, 5.594e-02, -4.488e-02, 1.468e-02, -1.481e-02, 2.532e-02, 4.259e-03), r);\n\tr = MulAdd(s4_7, M4(4.942e-02, -2.351e-02, 6.075e-03, -4.373e-03, -1.144e-02, 5.010e-03, -1.145e-03, 3.259e-02, -1.478e-03, -5.162e-03, 4.193e-03, -8.413e-02, -4.683e-02, 2.837e-03, -2.870e-02, -3.504e-02), r);\n\tr = MulAdd(s4_8, M4(-9.462e-03, 3.463e-04, -3.184e-02, -2.237e-02, -5.753e-03, -8.946e-03, -1.983e-02, 1.403e-02, 3.208e-04, -6.783e-03, 2.986e-02, 9.583e-02, 9.652e-03, -1.106e-02, 2.724e-02, 4.058e-02), r);\n\tr = MulAdd(s5_0, M4(-4.553e-03, 1.354e-02, 1.294e-02, 2.198e-02, -3.796e-02, 1.777e-03, -1.345e-02, -2.558e-03, 6.565e-03, -8.288e-03, -1.664e-02, -1.294e-02, -5.033e-03, -5.418e-03, 3.318e-03, 9.769e-03), r);\n\tr = MulAdd(s5_1, M4(2.888e-03, -1.481e-02, 1.988e-02, -5.457e-03, -3.176e-02, -4.046e-02, -3.968e-02, -7.777e-03, 3.050e-03, 1.551e-02, -4.423e-02, -2.049e-02, -2.785e-03, 8.283e-03, 8.081e-03, 5.535e-03), r);\n\tr = MulAdd(s5_2, M4(-7.639e-03, 5.054e-03, -6.512e-02, -4.601e-02, -1.182e-02, -4.087e-02, -1.517e-02, -3.973e-02, 1.923e-02, -3.636e-03, 2.031e-02, -7.553e-03, 6.687e-03, 1.134e-02, 6.916e-03, 1.592e-02), r);\n\tr = MulAdd(s5_3, M4(5.164e-02, -3.007e-02, 6.146e-04, -4.163e-02, -2.801e-02, 7.026e-03, -2.300e-02, 1.935e-02, -3.085e-03, -6.896e-03, 2.654e-02, -5.054e-03, -1.381e-02, 3.617e-03, -2.664e-02, -2.407e-03), r);\n\tr = MulAdd(s5_4, M4(-5.210e-02, 6.646e-02, -5.044e-02, -2.083e-02, 1.804e-01, 6.674e-02, 1.508e-01, 7.434e-03, 7.070e-02, 1.608e-02, -3.052e-02, 1.301e-03, 1.424e-02, -3.447e-02, 8.955e-03, -5.847e-02), r);\n\tr = MulAdd(s5_5, M4(2.626e-03, -2.935e-02, 9.258e-02, 9.205e-02, -2.765e-02, 1.139e-03, -2.845e-02, -1.555e-02, -5.127e-02, 1.636e-02, -3.642e-02, 4.822e-02, -1.547e-02, 1.102e-02, -5.527e-03, 7.313e-03), r);\n\tr = MulAdd(s5_6, M4(-2.205e-02, 7.127e-03, 3.632e-03, 1.646e-02, -1.045e-02, -9.007e-03, -3.836e-02, -2.190e-02, 2.273e-02, -3.534e-03, 1.640e-02, -4.160e-02, 1.927e-02, -9.104e-03, 3.589e-02, -3.850e-03), r);\n\tr = MulAdd(s5_7, M4(3.426e-02, -1.793e-02, 2.421e-02, 1.227e-02, -1.653e-02, 1.187e-02, 2.618e-02, 1.769e-03, -5.266e-02, -9.613e-03, 7.193e-03, 8.483e-03, -1.251e-02, 1.625e-02, -4.461e-02, -3.639e-03), r);\n\tr = MulAdd(s5_8, M4(-5.050e-03, 1.453e-02, -2.586e-02, -2.142e-02, -5.868e-03, -6.412e-03, -1.996e-02, 1.883e-02, -3.762e-04, -2.114e-02, 1.910e-02, 1.897e-02, 7.753e-03, -1.023e-03, 1.424e-02, 4.169e-03), r);\n\tr = MulAdd(s6_0, M4(-3.845e-03, 1.689e-02, 5.021e-03, 1.254e-02, -1.487e-03, 3.818e-02, -1.402e-02, 2.054e-02, -3.812e-03, 2.115e-02, 2.435e-02, 2.093e-02, 1.783e-02, -4.674e-03, -3.655e-03, 3.153e-03), r);\n\tr = MulAdd(s6_1, M4(5.142e-03, -6.075e-02, 1.070e-02, -2.858e-02, 7.935e-02, -9.109e-02, 4.375e-02, 1.193e-02, -9.096e-02, -7.053e-02, -1.485e-02, -7.337e-03, 1.038e-01, 3.523e-02, 1.287e-02, 3.620e-02), r);\n\tr = MulAdd(s6_2, M4(-1.055e-02, 3.804e-02, -1.936e-02, 2.036e-02, -9.637e-03, 2.061e-02, -1.709e-02, 1.762e-02, 3.860e-03, -3.284e-02, 8.486e-03, 8.479e-03, 4.988e-03, 2.713e-02, -1.273e-02, -2.067e-02), r);\n\tr = MulAdd(s6_3, M4(2.856e-03, 1.376e-02, 1.553e-02, 1.966e-02, 6.574e-02, 1.731e-02, 9.099e-02, 4.415e-02, 8.429e-04, -9.494e-03, -2.708e-03, -2.939e-03, 1.001e-01, -7.926e-03, 3.623e-02, 6.166e-02), r);\n\tr = MulAdd(s6_4, M4(-5.182e-02, -8.474e-03, -7.333e-02, -3.194e-02, 2.440e-01, -3.135e-01, 1.841e-01, -3.585e-01, 1.917e-01, 1.126e-01, -7.704e-02, -6.519e-02, -4.877e-01, 1.928e-01, 4.962e-02, -2.862e-01), r);\n\tr = MulAdd(s6_5, M4(7.056e-02, -4.759e-03, 7.693e-02, -1.180e-02, -1.746e-03, 7.848e-03, 2.640e-02, 1.388e-02, -4.918e-02, -9.407e-03, -1.582e-02, -4.991e-02, 2.390e-02, 1.084e-02, -5.813e-02, 9.644e-02), r);\n\tr = MulAdd(s6_6, M4(1.613e-02, -9.781e-03, -1.865e-02, -4.360e-03, -8.337e-03, 5.040e-03, -1.687e-02, 4.597e-04, -3.722e-02, 1.425e-02, -1.447e-02, 2.435e-02, 1.344e-02, -1.216e-02, -3.054e-04, -3.275e-02), r);\n\tr = MulAdd(s6_7, M4(-9.062e-03, 3.863e-02, 4.212e-02, -2.035e-04, -1.452e-02, 9.739e-03, 8.968e-02, -7.169e-02, 2.987e-02, -2.008e-02, 1.045e-01, 7.690e-02, 3.761e-02, -3.235e-02, 1.704e-01, 9.325e-02), r);\n\tr = MulAdd(s6_8, M4(-1.967e-02, -2.017e-02, -4.216e-02, 7.447e-03, -5.092e-03, 2.067e-03, -2.545e-02, -7.547e-03, -1.169e-02, -9.225e-03, -1.654e-02, 1.105e-02, 1.381e-02, 1.372e-02, 1.354e-02, -1.234e-01), r);\n\tr = MulAdd(s7_0, M4(-3.337e-03, 8.507e-03, -3.598e-03, 5.681e-03, 1.162e-02, 1.914e-02, -2.418e-03, 8.949e-03, -5.832e-03, 1.836e-02, 2.189e-02, 1.753e-02, 2.472e-02, -1.509e-03, -8.574e-03, -5.146e-03), r);\n\tr = MulAdd(s7_1, M4(5.323e-02, -1.037e-02, 9.631e-03, -2.247e-02, -1.439e-02, -1.350e-02, 4.510e-02, -2.726e-03, -3.537e-02, -4.546e-02, -4.999e-03, -8.271e-03, 3.596e-02, 4.316e-02, 2.662e-02, 3.942e-02), r);\n\tr = MulAdd(s7_2, M4(-7.218e-03, -6.411e-03, -1.728e-02, 3.503e-02, -3.096e-03, -4.575e-03, -5.780e-03, 6.029e-03, -1.083e-02, -5.370e-03, 1.031e-02, 1.510e-02, 2.472e-03, 9.614e-03, -2.293e-04, -1.862e-02), r);\n\tr = MulAdd(s7_3, M4(3.626e-02, 9.689e-03, 4.372e-02, 9.929e-03, -1.615e-03, 1.196e-02, 3.210e-02, 4.786e-02, -9.144e-03, 6.885e-03, -1.638e-03, -5.414e-03, 1.300e-02, 1.148e-02, -4.992e-03, 5.277e-02), r);\n\tr = MulAdd(s7_4, M4(-2.144e-01, 8.854e-02, -5.507e-02, 9.481e-02, 9.738e-03, -1.262e-02, -9.155e-02, -4.065e-02, 2.764e-01, 8.610e-02, -2.896e-01, -1.021e-01, -8.618e-02, -3.892e-02, -3.471e-02, -9.937e-02), r);\n\tr = MulAdd(s7_5, M4(1.219e-01, -1.227e-01, 9.791e-02, -1.922e-01, 1.401e-02, 1.540e-02, 3.960e-02, 1.178e-02, -1.002e-02, 1.329e-01, -2.955e-02, -2.166e-01, 2.488e-03, -8.343e-04, -3.448e-02, -3.006e-03), r);\n\tr = MulAdd(s7_6, M4(1.627e-02, -1.631e-02, -8.284e-03, -1.098e-02, 4.314e-03, -3.418e-03, -1.261e-02, -1.564e-02, -4.235e-02, 2.073e-02, 2.123e-02, 1.715e-02, 1.017e-02, -4.602e-04, 1.562e-02, -2.705e-02), r);\n\tr = MulAdd(s7_7, M4(-1.332e-02, 3.030e-02, -7.299e-02, 2.072e-03, -2.778e-02, -2.832e-03, 8.620e-03, 4.325e-03, -7.304e-04, -4.965e-02, 1.513e-01, 1.655e-01, 6.935e-05, -3.351e-02, 8.485e-02, -4.985e-03), r);\n\tr = MulAdd(s7_8, M4(-1.102e-02, -6.604e-03, -1.332e-02, 2.311e-02, -3.667e-03, -1.546e-02, -1.896e-02, -2.554e-02, -1.369e-02, -2.191e-02, -2.209e-02, -7.603e-03, -1.588e-02, -3.563e-03, -2.569e-02, 5.890e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass10(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-8x16C-NVL.hlsl",
    "content": "// CuNNy 8x16C BILINEAR RGB NVL - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-D16N08\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t7;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) (dot(MF3(2.271e-01, 4.365e-01, 9.234e-02), O(INPUT, float2(x, y)).rgb) + MF(-4.932e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 5.208e-02, -8.290e-03, 2.168e-03, 1.841e-03 };\n\tr = mad(s0_0, V4(-2.811e-02, 2.484e-02, 8.152e-03, -1.120e-01), r);\n\tr = mad(s0_1, V4(-3.057e-02, 1.311e-02, 6.150e-04, -2.159e-03), r);\n\tr = mad(s0_2, V4(-1.407e-02, -3.651e-02, -3.011e-02, 1.178e-03), r);\n\tr = mad(s0_3, V4(2.646e-01, -6.081e-02, -3.473e-03, 8.330e-02), r);\n\tr = mad(s0_4, V4(-1.848e-02, 1.380e-01, -2.730e-02, -8.572e-02), r);\n\tr = mad(s0_5, V4(2.680e-02, -1.536e-02, 1.157e-01, 1.092e-01), r);\n\tr = mad(s0_6, V4(-3.694e-02, -1.645e-01, 9.501e-03, -1.749e-02), r);\n\tr = mad(s0_7, V4(-3.178e-02, 5.182e-02, 1.843e-02, 1.107e-01), r);\n\tr = mad(s0_8, V4(-4.695e-03, 5.493e-02, 1.829e-02, -4.980e-02), r);\n\treturn r;\n}\n\nV4 f1(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -3.218e-03, 2.366e-03, -5.615e-03, -1.653e-02 };\n\tr = mad(s0_0, V4(3.963e-04, -3.350e-01, -9.155e-02, -2.133e-02), r);\n\tr = mad(s0_1, V4(1.792e-01, 3.877e-01, -1.398e-01, -8.170e-03), r);\n\tr = mad(s0_2, V4(-1.861e-01, -6.714e-02, 7.203e-02, 3.912e-02), r);\n\tr = mad(s0_3, V4(-4.146e-03, 1.344e-01, 1.741e-01, 7.374e-02), r);\n\tr = mad(s0_4, V4(-2.301e-01, -1.333e-01, -2.999e-01, 8.431e-02), r);\n\tr = mad(s0_5, V4(2.309e-01, 1.260e-02, -8.470e-02, -8.617e-02), r);\n\tr = mad(s0_6, V4(-4.725e-03, 1.410e-02, 1.814e-01, -8.658e-02), r);\n\tr = mad(s0_7, V4(3.358e-02, -1.292e-02, 2.253e-01, 1.051e-01), r);\n\tr = mad(s0_8, V4(-2.100e-02, -3.521e-03, -3.845e-02, -2.268e-02), r);\n\treturn r;\n}\n\nV4 f2(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 1.307e-03, 1.096e-02, -1.139e-02, 4.148e-05 };\n\tr = mad(s0_0, V4(1.224e-01, 3.559e-03, 8.155e-03, -7.150e-02), r);\n\tr = mad(s0_1, V4(-3.380e-02, 2.165e-01, 2.783e-01, -1.733e-01), r);\n\tr = mad(s0_2, V4(2.199e-03, 8.188e-02, 5.409e-02, 5.578e-02), r);\n\tr = mad(s0_3, V4(-5.406e-02, -1.757e-02, 1.233e-01, -2.783e-01), r);\n\tr = mad(s0_4, V4(-2.804e-02, -2.474e-01, -4.381e-01, 2.157e-01), r);\n\tr = mad(s0_5, V4(-9.010e-04, -5.054e-02, -4.162e-02, 6.518e-02), r);\n\tr = mad(s0_6, V4(1.605e-02, -3.841e-03, -8.540e-03, 1.233e-01), r);\n\tr = mad(s0_7, V4(5.971e-02, 5.600e-02, -6.272e-03, 8.912e-02), r);\n\tr = mad(s0_8, V4(6.856e-03, -2.717e-02, 2.613e-02, -2.536e-02), r);\n\treturn r;\n}\n\nV4 f3(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -9.510e-02, 6.547e-03, 7.733e-03, 2.232e-02 };\n\tr = mad(s0_0, V4(-4.770e-03, 2.395e-02, 5.034e-02, -9.936e-03), r);\n\tr = mad(s0_1, V4(-1.666e-02, -1.328e-02, 1.166e-01, 2.045e-02), r);\n\tr = mad(s0_2, V4(-2.423e-02, -7.371e-03, -1.666e-01, 2.468e-02), r);\n\tr = mad(s0_3, V4(-2.045e-02, 1.276e-02, 5.554e-02, -1.668e-02), r);\n\tr = mad(s0_4, V4(4.601e-01, -2.658e-01, 5.586e-02, -2.036e-01), r);\n\tr = mad(s0_5, V4(6.315e-02, 1.528e-01, -1.345e-01, 1.167e-01), r);\n\tr = mad(s0_6, V4(-2.105e-03, -5.846e-02, -7.890e-03, 1.110e-02), r);\n\tr = mad(s0_7, V4(-2.450e-02, -8.582e-02, 2.247e-02, 1.425e-01), r);\n\tr = mad(s0_8, V4(-2.825e-02, 2.409e-01, 8.078e-03, -7.072e-03), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.968e-01, 2.644e-02, 3.143e-03, -1.147e-02 };\n\tr = MulAdd(s0_0, M4(-2.485e-02, -7.793e-02, -1.391e-01, 1.353e-01, 1.305e-01, 2.742e-01, -1.513e-01, -7.074e-02, -2.830e-01, -1.284e-02, 7.441e-02, -2.870e-02, 3.071e-03, -2.819e-03, -7.844e-02, 6.126e-02), r);\n\tr = MulAdd(s0_1, M4(2.001e-01, -3.732e-02, -5.838e-02, 1.521e-01, 2.003e-01, -2.565e-01, -2.830e-01, -8.331e-03, 1.059e-01, 1.106e-01, -9.151e-02, 1.678e-01, -6.968e-02, 1.177e-01, 7.009e-02, -2.027e-01), r);\n\tr = MulAdd(s0_2, M4(2.422e-02, -7.541e-02, -1.327e-01, 1.145e-01, 2.656e-02, 7.576e-02, -1.218e-01, -2.693e-02, 4.026e-02, -2.779e-02, 2.237e-02, 7.016e-03, -1.143e-01, 1.814e-01, 1.175e-01, 2.384e-02), r);\n\tr = MulAdd(s0_3, M4(2.299e-01, -1.172e-02, -1.626e-01, 2.057e-02, 1.941e-01, -2.038e-01, 1.522e-01, -1.223e-01, 4.546e-01, -1.078e-01, -7.791e-02, 9.659e-02, -1.704e-01, -4.998e-02, 4.930e-02, 5.194e-02), r);\n\tr = MulAdd(s0_4, M4(5.608e-01, 4.285e-02, -2.509e-02, -1.151e-01, 5.909e-02, 4.300e-02, 1.090e-01, -1.141e-01, 3.319e-02, -5.049e-01, 1.955e-01, 4.758e-02, 2.172e-01, 1.379e-01, -6.424e-02, 5.035e-02), r);\n\tr = MulAdd(s0_5, M4(7.594e-01, -6.796e-02, 1.366e-01, -1.236e-01, 2.804e-01, -4.411e-03, 2.242e-01, -6.970e-02, -9.327e-02, -2.049e-01, 1.850e-02, -6.979e-02, 6.384e-02, 5.082e-02, 1.190e-02, -1.455e-02), r);\n\tr = MulAdd(s0_6, M4(-3.605e-02, -3.102e-02, 8.660e-02, -1.093e-01, 1.433e-01, 3.220e-03, 8.072e-02, -2.325e-02, -4.192e-01, -1.610e-01, -7.125e-02, -4.631e-02, -5.018e-02, 2.527e-02, 8.482e-02, -8.232e-02), r);\n\tr = MulAdd(s0_7, M4(9.651e-02, -3.884e-02, 1.191e-01, -1.640e-01, -6.699e-02, -1.876e-02, 3.375e-01, -5.633e-02, -1.872e-01, 2.687e-01, 1.714e-01, -1.203e-01, -4.437e-02, 4.755e-02, -3.764e-02, -1.596e-01), r);\n\tr = MulAdd(s0_8, M4(3.349e-02, -1.671e-03, 1.049e-01, -5.840e-03, -1.073e-01, -7.845e-02, 2.098e-01, -6.893e-02, -1.870e-01, 6.613e-02, 6.280e-02, -6.822e-02, -1.402e-01, -2.053e-02, -1.265e-02, -1.554e-02), r);\n\tr = MulAdd(s1_0, M4(-2.111e-01, -9.747e-02, -1.930e-01, 9.786e-02, 1.359e-01, -4.889e-02, 6.019e-02, 1.145e-02, 5.121e-02, 2.447e-02, -5.930e-02, 2.061e-01, 8.178e-02, -1.531e-02, -5.044e-03, 1.083e-01), r);\n\tr = MulAdd(s1_1, M4(-3.074e-03, -8.969e-02, 1.186e-01, -1.392e-03, -1.821e-01, 2.694e-02, 5.397e-02, 1.006e-01, -9.086e-02, -1.056e-01, -1.693e-01, 4.910e-02, -1.256e-01, -8.187e-02, -8.469e-02, -6.965e-02), r);\n\tr = MulAdd(s1_2, M4(-4.244e-01, -2.091e-01, 2.887e-02, 2.439e-01, -1.329e-01, -7.817e-03, 9.411e-03, 1.358e-01, 1.921e-02, 5.657e-02, 6.304e-02, 4.841e-02, 6.155e-02, 8.668e-02, -6.354e-02, 1.539e-01), r);\n\tr = MulAdd(s1_3, M4(1.953e-01, 3.159e-02, -3.004e-01, -1.409e-02, -9.977e-02, -2.672e-03, -8.568e-03, -5.583e-02, -3.060e-01, 1.161e-01, -7.316e-02, 2.468e-02, -9.539e-02, 1.675e-02, -1.193e-01, -9.390e-02), r);\n\tr = MulAdd(s1_4, M4(-2.435e-01, 1.206e-02, -3.330e-01, 2.784e-01, -1.101e-01, -1.052e-01, -1.901e-01, -1.526e-01, -5.335e-02, 2.873e-01, -4.360e-02, -3.828e-02, -7.663e-02, -1.771e-01, 7.653e-02, 1.080e-01), r);\n\tr = MulAdd(s1_5, M4(-4.594e-01, -1.617e-01, 1.607e-02, 2.628e-01, 5.469e-02, 4.403e-02, 1.393e-01, 8.063e-02, 9.056e-02, -1.311e-01, 6.889e-02, -1.527e-02, -1.205e-02, -5.024e-02, 3.551e-02, -1.588e-01), r);\n\tr = MulAdd(s1_6, M4(-8.833e-02, -2.610e-01, 1.757e-01, -1.550e-01, 4.564e-02, 9.005e-02, -2.060e-01, 1.243e-01, 2.637e-01, 2.292e-01, -4.701e-02, -9.572e-02, 2.924e-01, 1.623e-01, 5.523e-02, 1.126e-02), r);\n\tr = MulAdd(s1_7, M4(3.183e-01, -8.466e-02, 4.289e-01, -1.178e-01, 4.748e-02, -2.097e-01, 1.554e-01, -8.571e-02, -5.126e-02, -1.034e-01, 1.339e-02, -1.571e-01, 4.438e-02, -4.967e-02, 1.716e-02, 1.383e-02), r);\n\tr = MulAdd(s1_8, M4(-3.187e-01, 2.494e-01, 2.216e-02, -6.215e-02, 2.288e-01, 2.446e-01, 9.322e-02, -3.364e-02, 5.613e-02, -6.874e-02, 9.164e-02, 7.186e-03, -9.362e-03, -5.247e-03, 3.488e-02, 2.015e-02), r);\n\tr = MulAdd(s2_0, M4(8.030e-02, -1.244e-02, 7.993e-02, 2.598e-01, -2.316e-02, 5.534e-02, 5.730e-02, -5.297e-02, -1.069e-01, 7.793e-02, 2.488e-01, 1.935e-02, 2.498e-01, 1.815e-01, -1.495e-01, -7.393e-02), r);\n\tr = MulAdd(s2_1, M4(-8.116e-02, 4.036e-02, 1.196e-01, -1.272e-01, 1.161e-01, 1.581e-01, -8.973e-02, 8.201e-02, -2.048e-01, 1.527e-01, 4.581e-01, -3.365e-01, 3.989e-01, 4.902e-01, -1.368e-01, 1.206e-01), r);\n\tr = MulAdd(s2_2, M4(9.207e-02, 3.834e-01, 1.062e-01, -1.624e-01, 4.958e-02, -7.315e-02, 1.455e-02, 7.133e-04, -1.119e-01, 5.565e-02, 1.329e-01, -2.086e-01, -2.720e-01, 2.259e-02, -3.638e-02, 2.410e-01), r);\n\tr = MulAdd(s2_3, M4(-2.493e-02, -2.591e-01, -2.875e-02, -1.175e-01, 1.286e-01, -1.532e-01, 9.002e-02, -1.420e-01, 6.273e-02, -1.023e-01, 7.325e-02, 1.587e-01, 1.253e-01, -6.595e-01, 6.359e-02, 1.891e-01), r);\n\tr = MulAdd(s2_4, M4(1.595e-01, -1.435e-01, -1.631e-01, -7.877e-02, 1.582e-01, 1.051e-01, -7.296e-02, 2.245e-01, -1.422e-01, -4.053e-01, 1.393e-01, -2.186e-03, 5.780e-02, -6.208e-02, -1.152e-01, -4.898e-01), r);\n\tr = MulAdd(s2_5, M4(5.204e-02, 5.165e-02, 9.230e-03, 2.811e-02, -3.048e-02, -9.137e-02, -7.371e-02, -1.152e-01, -6.553e-02, -1.954e-01, -6.013e-01, 3.103e-02, -2.552e-01, -5.532e-01, 4.900e-04, 7.283e-02), r);\n\tr = MulAdd(s2_6, M4(-6.250e-02, -8.190e-02, -2.849e-01, -2.471e-02, 1.289e-01, -3.091e-01, 1.231e-01, 6.081e-02, 3.088e-02, 1.494e-01, -4.576e-02, -4.224e-02, -1.199e-01, 2.171e-01, 5.012e-02, -1.173e-01), r);\n\tr = MulAdd(s2_7, M4(-5.584e-02, -1.592e-02, 5.392e-02, 2.378e-02, -2.354e-02, 1.150e-01, -3.141e-02, -1.676e-01, 7.981e-02, -2.169e-02, 1.075e-01, -5.479e-03, 2.861e-01, -2.411e-01, 2.733e-01, -2.672e-01), r);\n\tr = MulAdd(s2_8, M4(-4.809e-02, -2.214e-01, -3.851e-02, -1.119e-01, -1.870e-01, -4.463e-02, -1.437e-02, 1.404e-02, -6.566e-03, -2.549e-01, -8.061e-02, -2.557e-02, -2.421e-01, 4.801e-01, -1.782e-01, 1.192e-01), r);\n\tr = MulAdd(s3_0, M4(1.082e-01, -9.349e-02, -4.882e-03, -9.671e-02, -5.846e-02, 5.447e-02, -4.925e-02, 6.508e-02, -7.234e-03, 2.136e-01, 1.191e-01, -1.146e-01, -2.104e-02, 5.780e-02, -4.717e-02, -5.266e-02), r);\n\tr = MulAdd(s3_1, M4(8.722e-02, -4.961e-02, -4.340e-02, -1.314e-01, 2.672e-02, -1.840e-02, -4.682e-02, 2.123e-01, 7.567e-04, 1.599e-01, 3.556e-01, -6.521e-01, -8.441e-02, -9.187e-02, -9.814e-02, 1.154e-01), r);\n\tr = MulAdd(s3_2, M4(-1.778e-01, -7.969e-02, 6.154e-02, 3.048e-02, -3.972e-02, -1.056e-01, 6.651e-02, 1.559e-01, -3.278e-03, 9.446e-02, 6.509e-02, -1.627e-01, 8.409e-02, 5.832e-02, 1.216e-01, 8.892e-02), r);\n\tr = MulAdd(s3_3, M4(-1.267e-02, 9.277e-02, 1.067e-01, -2.599e-02, -8.945e-02, 9.880e-02, -2.422e-02, -9.366e-03, 1.762e-01, -3.082e-02, -8.064e-02, 1.689e-01, -5.425e-02, -3.865e-03, 1.076e-02, -3.944e-02), r);\n\tr = MulAdd(s3_4, M4(-3.883e-02, 8.021e-02, 6.377e-02, 3.235e-01, -1.697e-01, 3.375e-02, 7.622e-03, 3.170e-01, 8.253e-02, 4.422e-02, 8.716e-03, 9.710e-02, -1.294e-01, -8.479e-02, -2.092e-01, 9.940e-03), r);\n\tr = MulAdd(s3_5, M4(-4.877e-02, -1.744e-01, -9.427e-02, 1.363e-01, -6.597e-02, -4.598e-02, 6.530e-02, -1.739e-01, -7.951e-02, 5.267e-01, -3.922e-01, -5.767e-02, 1.514e-01, 1.597e-01, 1.178e-01, 1.291e-02), r);\n\tr = MulAdd(s3_6, M4(1.090e-01, 8.036e-02, 7.251e-02, -1.705e-01, 7.163e-02, 7.327e-02, 2.597e-02, 1.043e-01, 9.985e-02, -5.557e-02, -5.285e-02, -3.540e-02, -2.397e-02, 5.184e-02, -7.039e-02, 1.035e-03), r);\n\tr = MulAdd(s3_7, M4(-7.628e-02, 8.150e-03, -1.005e-01, -1.243e-01, -2.891e-01, 1.770e-01, 7.126e-02, -1.134e-01, -7.591e-02, 4.806e-02, 9.831e-03, 1.433e-01, 1.231e-01, -1.298e-01, 1.780e-01, -1.115e-01), r);\n\tr = MulAdd(s3_8, M4(1.036e-01, 1.694e-01, -5.191e-02, 1.982e-02, -1.932e-01, 5.030e-02, 1.057e-01, -3.385e-02, 2.534e-02, -2.275e-01, -9.040e-02, 2.515e-02, -1.305e-01, -2.527e-02, 5.679e-02, 5.587e-02), r);\n\tr = MulAdd(s4_0, M4(8.688e-02, 2.072e-01, -8.062e-02, 9.266e-02, 6.784e-02, 2.153e-02, 6.418e-02, -2.933e-02, -9.443e-02, -4.865e-02, 1.375e-01, -1.764e-01, -2.457e-02, 9.365e-02, -7.196e-02, -6.391e-02), r);\n\tr = MulAdd(s4_1, M4(2.333e-01, 3.864e-01, -1.380e-01, 9.062e-02, 1.107e-03, 1.837e-01, -5.382e-02, -4.475e-02, -3.119e-02, 1.173e-01, 1.274e-01, -1.866e-02, 1.037e-01, 2.066e-01, -7.300e-02, -1.161e-01), r);\n\tr = MulAdd(s4_2, M4(-1.456e-01, 2.448e-01, 1.572e-01, 1.278e-01, -1.013e-02, -5.934e-02, -2.116e-02, -2.452e-02, -1.327e-01, 2.185e-02, -1.993e-02, -3.170e-02, -8.520e-02, 1.591e-01, 3.506e-02, -9.729e-02), r);\n\tr = MulAdd(s4_3, M4(2.335e-01, -2.123e-01, 2.018e-02, -1.073e-02, -9.702e-02, -5.556e-02, 8.472e-02, 9.629e-02, 1.970e-01, -5.520e-02, 4.945e-02, 1.202e-01, 4.341e-02, 1.853e-01, -1.267e-01, 2.928e-02), r);\n\tr = MulAdd(s4_4, M4(2.631e-01, -6.454e-02, -1.787e-01, 2.898e-02, 1.660e-01, -7.202e-03, -9.751e-02, 5.543e-01, 5.921e-02, 3.227e-01, 1.145e-01, 6.503e-01, 1.196e-01, -1.562e-03, 9.743e-02, 3.687e-02), r);\n\tr = MulAdd(s4_5, M4(1.116e-01, 1.249e-01, -1.325e-01, 1.028e-01, -8.355e-03, 1.822e-01, 1.045e-01, 1.230e-01, -2.942e-01, -3.597e-02, -2.454e-01, 6.629e-02, 1.839e-02, 3.743e-01, 5.781e-02, 5.934e-02), r);\n\tr = MulAdd(s4_6, M4(-3.997e-02, 1.346e-01, 9.830e-02, -2.274e-02, -1.619e-01, 1.750e-01, -6.734e-02, -1.691e-02, -1.965e-01, -7.976e-02, 6.646e-02, 8.609e-02, -2.992e-02, 6.498e-02, 7.941e-03, 9.300e-02), r);\n\tr = MulAdd(s4_7, M4(1.906e-01, 6.598e-02, 1.268e-03, -6.979e-02, -2.120e-01, -1.267e-01, -1.558e-01, -1.895e-01, -1.123e-01, -2.401e-02, -2.582e-01, 1.998e-01, 3.098e-03, 1.005e-01, 1.134e-01, 1.317e-02), r);\n\tr = MulAdd(s4_8, M4(2.842e-02, -9.225e-02, -1.068e-01, -2.368e-01, 8.938e-02, -9.841e-02, -4.640e-02, -2.911e-02, -2.735e-02, 4.138e-02, -3.043e-01, -3.354e-02, -1.169e-01, 6.541e-02, 7.405e-02, -5.760e-02), r);\n\tr = MulAdd(s5_0, M4(-2.697e-02, -8.209e-02, -6.014e-02, 8.016e-02, -5.242e-02, 6.674e-02, -9.365e-02, -3.331e-02, 1.423e-01, 1.208e-01, 2.431e-01, -1.652e-01, -3.686e-02, -1.841e-01, -4.516e-02, -6.155e-02), r);\n\tr = MulAdd(s5_1, M4(-4.963e-02, -2.090e-01, 8.904e-02, 1.540e-02, 6.672e-03, -8.529e-02, 2.023e-01, -3.174e-01, -8.613e-02, 8.896e-02, 1.635e-01, 2.409e-02, -8.966e-02, 1.215e-01, -1.935e-02, -2.705e-02), r);\n\tr = MulAdd(s5_2, M4(6.732e-02, -1.502e-02, -9.210e-02, -1.770e-01, 1.581e-02, 4.328e-02, -9.155e-02, 9.680e-02, 3.393e-02, -1.307e-01, -6.939e-02, -6.385e-02, -9.215e-03, -1.056e-01, 1.467e-01, -1.616e-01), r);\n\tr = MulAdd(s5_3, M4(-7.139e-02, 1.397e-01, -1.181e-01, -3.929e-02, 3.273e-01, 1.138e-01, 2.840e-01, -3.111e-01, 8.805e-02, -1.499e-02, 2.261e-01, -1.184e-01, -1.775e-01, -2.000e-01, -1.358e-01, 5.634e-03), r);\n\tr = MulAdd(s5_4, M4(-1.534e-01, -1.025e-01, 1.112e-01, 2.105e-02, 5.764e-02, -8.380e-02, 1.161e-01, -4.252e-01, -4.067e-02, -1.210e-01, -1.053e-01, 2.702e-01, -1.395e-02, -1.419e-01, 1.070e-01, -1.636e-01), r);\n\tr = MulAdd(s5_5, M4(-3.549e-02, 7.727e-02, 1.248e-02, 5.666e-02, -1.519e-01, 5.273e-02, -1.705e-01, -1.669e-01, 1.945e-01, 1.301e-01, -2.281e-01, -1.808e-01, -6.349e-02, -3.592e-01, 2.363e-01, 3.038e-02), r);\n\tr = MulAdd(s5_6, M4(-1.288e-02, -1.269e-01, -3.312e-02, -6.917e-02, -1.319e-01, -1.544e-02, 1.783e-01, 6.150e-02, -2.866e-02, 6.708e-02, -7.747e-02, -4.994e-02, 1.626e-01, 7.398e-04, 8.980e-02, 3.971e-02), r);\n\tr = MulAdd(s5_7, M4(-9.159e-02, -5.895e-04, 8.511e-02, -3.319e-02, 7.901e-02, -7.770e-02, -4.426e-02, -2.112e-01, -1.948e-01, 2.900e-01, -2.900e-01, -6.018e-03, 1.328e-01, -2.664e-01, 1.343e-01, -7.560e-02), r);\n\tr = MulAdd(s5_8, M4(1.040e-01, 5.183e-02, 1.105e-01, 8.969e-02, -8.304e-02, -1.443e-01, -2.251e-01, -7.725e-02, -9.840e-02, -2.817e-01, -2.504e-01, -3.580e-02, 3.837e-03, 1.300e-01, 1.364e-01, -3.900e-02), r);\n\tr = MulAdd(s6_0, M4(5.644e-01, 2.238e-02, -3.205e-01, 2.862e-01, -4.545e-02, 9.792e-03, 2.880e-01, -2.262e-01, -7.295e-02, -6.523e-02, -3.954e-02, -3.450e-02, 8.041e-02, 6.435e-02, -1.465e-01, 6.761e-02), r);\n\tr = MulAdd(s6_1, M4(1.684e-01, 6.494e-02, -3.871e-02, 4.333e-01, -1.253e-01, -1.290e-02, -3.312e-02, 1.780e-02, -7.196e-02, 1.142e-01, 1.516e-01, -9.619e-02, 3.103e-02, -1.658e-01, 7.592e-02, -1.505e-01), r);\n\tr = MulAdd(s6_2, M4(1.490e-01, 1.816e-01, -2.416e-01, 2.591e-01, -3.719e-02, -1.706e-01, 7.797e-02, -3.245e-02, -5.190e-03, 2.357e-02, -3.275e-02, -6.354e-02, 1.407e-01, 6.104e-02, -3.129e-02, 8.271e-02), r);\n\tr = MulAdd(s6_3, M4(7.564e-01, 3.245e-01, -3.065e-01, -1.192e-01, 5.567e-02, -8.577e-02, -8.148e-02, 4.286e-02, -8.816e-02, -4.774e-02, -1.396e-01, -1.188e-01, 7.332e-03, 1.308e-02, -1.512e-02, -3.359e-02), r);\n\tr = MulAdd(s6_4, M4(-5.122e-01, 4.765e-01, 2.806e-01, -3.779e-01, 3.113e-03, 1.925e-01, 1.279e-01, -5.210e-02, 2.445e-02, -6.378e-03, 5.360e-02, 1.194e-01, 6.073e-02, -8.251e-02, 1.349e-02, 1.866e-01), r);\n\tr = MulAdd(s6_5, M4(-6.574e-01, -5.307e-01, 4.246e-01, -1.077e-01, 1.071e-01, 3.634e-01, -9.335e-02, 5.315e-03, -2.182e-01, 1.369e-01, -2.047e-01, -3.629e-02, 6.883e-03, -1.242e-02, 8.672e-02, 3.954e-03), r);\n\tr = MulAdd(s6_6, M4(-1.734e-01, -2.474e-01, -9.461e-02, -2.095e-01, 4.038e-02, -1.877e-02, -1.431e-01, 6.783e-03, 2.776e-01, 5.036e-02, -1.359e-01, 1.062e-01, -3.608e-04, 2.903e-02, 5.130e-02, -3.758e-02), r);\n\tr = MulAdd(s6_7, M4(-1.645e-01, -5.196e-01, 3.487e-02, 1.290e-01, 1.361e-01, 1.889e-02, -1.576e-01, 4.734e-02, 3.265e-02, -1.890e-01, 1.266e-01, 5.530e-02, -9.453e-02, 1.284e-02, -4.585e-02, -1.094e-01), r);\n\tr = MulAdd(s6_8, M4(-8.783e-02, 1.852e-01, 7.476e-02, -1.801e-01, -5.164e-02, 8.656e-03, -2.029e-02, -2.596e-02, 2.435e-02, -9.673e-03, 3.363e-02, 4.865e-03, 1.859e-02, 5.536e-02, 1.141e-01, -1.484e-02), r);\n\tr = MulAdd(s7_0, M4(-6.820e-02, -2.884e-02, -1.303e-01, 1.882e-01, 2.328e-01, 1.377e-01, 5.239e-02, -4.071e-02, -5.681e-02, -2.048e-01, -1.447e-01, 5.849e-02, -8.528e-02, -1.719e-01, -6.476e-02, -8.679e-02), r);\n\tr = MulAdd(s7_1, M4(-5.278e-02, -1.000e-02, -1.634e-02, 2.524e-01, 2.194e-01, 2.207e-02, 1.995e-01, -1.895e-01, 6.924e-02, 2.295e-02, -6.099e-03, 1.654e-01, 3.084e-02, 4.470e-01, 1.683e-01, -4.328e-01), r);\n\tr = MulAdd(s7_2, M4(-5.793e-02, 1.309e-01, 2.056e-02, 6.027e-02, -1.388e-01, 7.674e-02, -1.620e-01, 2.527e-03, 3.178e-02, 5.334e-02, -6.098e-02, -6.434e-02, 8.816e-02, 1.462e-01, -8.037e-02, -5.590e-02), r);\n\tr = MulAdd(s7_3, M4(-2.568e-01, 1.857e-02, -1.087e-01, -8.671e-02, 1.852e-01, -4.477e-02, -8.057e-02, 1.461e-01, 1.091e-01, -1.958e-01, -6.820e-02, 1.089e-01, -2.141e-01, 1.391e-01, 1.000e-01, 1.991e-01), r);\n\tr = MulAdd(s7_4, M4(-1.097e-01, -5.762e-02, -1.018e-01, -8.032e-02, 4.852e-02, -2.752e-01, -1.481e-01, 1.985e-01, -4.663e-03, 3.380e-01, 7.200e-02, 9.291e-03, 4.142e-01, 4.841e-03, 1.571e-01, 3.154e-01), r);\n\tr = MulAdd(s7_5, M4(5.582e-03, -7.928e-02, 1.440e-01, -9.364e-02, -8.041e-02, -1.663e-01, -2.057e-01, 1.327e-01, -5.687e-02, 9.180e-02, -1.950e-01, 1.874e-01, -2.831e-02, -1.973e-01, -1.410e-01, 1.005e-01), r);\n\tr = MulAdd(s7_6, M4(8.888e-02, -2.330e-02, 7.020e-02, -1.240e-01, -6.910e-02, 2.411e-02, 3.791e-03, 1.450e-01, -3.441e-01, -4.260e-01, 5.536e-02, -4.727e-02, -3.908e-01, 1.535e-01, -6.593e-02, 2.619e-02), r);\n\tr = MulAdd(s7_7, M4(-9.912e-02, 8.917e-02, 1.139e-01, -3.587e-02, -1.437e-03, -1.247e-01, -7.667e-03, 1.110e-01, -1.200e-01, 9.394e-02, 2.830e-01, -1.033e-01, 1.121e-01, 2.775e-01, -1.737e-01, -7.406e-02), r);\n\tr = MulAdd(s7_8, M4(-4.771e-02, 2.535e-02, -2.644e-03, -8.139e-02, -3.943e-02, -7.504e-02, -1.410e-01, -8.238e-03, 5.641e-02, 3.758e-02, 3.588e-01, -4.553e-02, -1.887e-01, -5.847e-01, 1.438e-01, -1.075e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.879e-03, 4.492e-03, 1.006e-02, 3.190e-02 };\n\tr = MulAdd(s0_0, M4(-1.665e-01, 1.341e-01, -3.784e-02, -7.759e-02, -7.067e-02, -1.354e-02, -3.162e-01, 9.772e-02, -7.751e-03, 1.089e-01, -7.867e-02, 7.391e-02, 1.113e-01, 2.431e-02, -1.126e-02, -1.944e-02), r);\n\tr = MulAdd(s0_1, M4(-7.397e-02, 1.614e-01, -9.000e-02, 6.037e-02, -2.921e-01, 2.061e-01, 5.314e-04, 2.018e-01, -9.617e-02, -1.867e-02, -2.428e-02, 1.273e-01, -1.373e-01, 2.826e-02, -6.593e-02, -2.146e-01), r);\n\tr = MulAdd(s0_2, M4(3.230e-02, 1.260e-01, 1.749e-01, -2.806e-02, -3.382e-01, 1.529e-01, -7.863e-02, -1.249e-01, 1.769e-03, 9.832e-02, 1.502e-01, 1.163e-01, 7.971e-02, -4.328e-02, -9.819e-02, -3.709e-02), r);\n\tr = MulAdd(s0_3, M4(-7.267e-02, 9.105e-03, -2.213e-01, -7.500e-02, -9.302e-02, 2.785e-02, 1.968e-01, -7.105e-02, -6.686e-02, 3.332e-02, 7.118e-02, -1.031e-01, 2.227e-02, -1.745e-01, -5.851e-02, -4.692e-02), r);\n\tr = MulAdd(s0_4, M4(-4.300e-02, 5.561e-03, -1.691e-01, 1.734e-02, -2.447e-01, 1.481e-01, 4.838e-02, -2.720e-01, 3.631e-02, -1.309e-01, 4.375e-02, 3.994e-01, -6.899e-02, 1.035e-01, 1.422e-01, 6.815e-02), r);\n\tr = MulAdd(s0_5, M4(-5.045e-03, 9.328e-03, 6.229e-02, -2.625e-01, 2.517e-01, 1.145e-01, 1.115e-02, 6.815e-02, 5.933e-02, 3.550e-02, 1.827e-01, -2.651e-01, 5.388e-02, -1.054e-01, -5.995e-02, 3.073e-01), r);\n\tr = MulAdd(s0_6, M4(1.986e-02, -5.852e-02, -6.029e-02, 6.415e-02, -1.902e-01, 9.542e-02, 6.488e-02, 9.892e-02, -1.327e-02, -2.054e-02, -2.209e-01, -1.727e-01, -7.929e-02, 8.246e-02, -2.585e-02, -1.415e-02), r);\n\tr = MulAdd(s0_7, M4(1.705e-01, -1.150e-01, 5.452e-02, 1.132e-01, -2.629e-01, 1.903e-03, -1.429e-01, 5.953e-02, 2.621e-02, -1.295e-01, 6.998e-02, 1.393e-01, 1.141e-02, -1.841e-02, 4.103e-02, -7.428e-02), r);\n\tr = MulAdd(s0_8, M4(8.787e-02, -1.161e-01, 4.994e-02, 8.147e-02, 1.031e-01, 2.212e-02, 7.269e-02, 1.561e-01, 6.051e-02, 3.214e-02, -9.364e-02, -4.011e-01, -1.217e-01, 6.956e-02, 1.112e-01, 1.290e-01), r);\n\tr = MulAdd(s1_0, M4(6.202e-02, 4.040e-02, -2.698e-01, -1.926e-01, -3.636e-02, 1.379e-02, 8.940e-02, -3.803e-02, -1.049e-02, -5.670e-02, -3.738e-02, -1.053e-01, 1.952e-03, -4.216e-02, 1.101e-01, -1.522e-01), r);\n\tr = MulAdd(s1_1, M4(-9.631e-02, -8.827e-03, -3.405e-01, -5.959e-02, -2.423e-01, 2.353e-01, 9.648e-03, -5.868e-02, 5.729e-02, 7.017e-03, -4.890e-02, -1.569e-01, 1.440e-01, -4.340e-02, -2.159e-02, 8.336e-02), r);\n\tr = MulAdd(s1_2, M4(2.106e-01, -6.010e-03, 1.479e-01, -3.243e-02, 1.049e-01, -2.281e-01, 2.060e-01, -4.001e-04, 1.115e-01, 2.111e-02, -8.208e-03, -4.814e-02, 4.377e-02, -7.831e-02, 6.725e-02, 1.976e-01), r);\n\tr = MulAdd(s1_3, M4(-2.004e-01, -6.799e-02, -5.068e-02, 2.889e-01, 7.638e-02, -1.213e-01, -1.691e-01, 6.234e-03, -3.056e-02, -4.525e-02, -2.898e-01, 1.399e-01, -3.600e-01, 1.727e-01, -1.132e-02, 9.502e-02), r);\n\tr = MulAdd(s1_4, M4(-5.388e-01, -7.512e-03, -8.975e-02, 8.544e-02, 1.271e-01, -7.689e-02, -1.746e-02, 1.128e-01, -4.000e-02, 2.901e-02, -1.270e-01, -2.532e-01, 1.449e-01, 6.640e-02, -2.687e-01, 8.076e-02), r);\n\tr = MulAdd(s1_5, M4(8.166e-01, -1.339e-01, 6.942e-01, 9.886e-01, -4.053e-02, 1.141e-01, -1.294e-02, 6.103e-02, -7.290e-03, 5.853e-02, 1.198e-01, 4.576e-02, -2.898e-02, 4.735e-02, 4.603e-02, -3.222e-01), r);\n\tr = MulAdd(s1_6, M4(-2.741e-01, -3.591e-02, 1.510e-01, 4.335e-02, 7.137e-02, 1.127e-02, 7.848e-02, 3.701e-02, -1.164e-01, 6.880e-02, 6.543e-03, 9.484e-02, 2.741e-01, 2.886e-02, 4.433e-02, 1.999e-01), r);\n\tr = MulAdd(s1_7, M4(-1.289e-01, -5.624e-02, 6.800e-02, -1.822e-01, 8.965e-02, 2.975e-02, -1.535e-01, -1.449e-01, -5.375e-02, -2.592e-02, 1.103e-01, 6.022e-02, 1.662e-01, -1.462e-01, 1.722e-02, -3.086e-02), r);\n\tr = MulAdd(s1_8, M4(-1.834e-01, 7.416e-02, 4.816e-01, 4.575e-01, -4.881e-02, -5.429e-03, 4.699e-02, 7.298e-02, 1.488e-01, -6.241e-02, 6.913e-02, 1.607e-01, -1.697e-01, -1.273e-01, -2.675e-04, -1.878e-01), r);\n\tr = MulAdd(s2_0, M4(3.750e-02, -3.793e-02, 3.057e-01, 2.131e-02, -1.262e-01, 1.202e-01, 2.102e-02, 5.652e-02, -4.985e-02, -2.134e-01, 1.306e-01, -4.159e-04, -4.256e-01, 2.828e-01, 1.423e-01, 3.310e-01), r);\n\tr = MulAdd(s2_1, M4(9.804e-02, -1.908e-01, 4.843e-02, -9.660e-02, -2.456e-01, 2.842e-03, 1.447e-03, 9.591e-02, 4.590e-02, -5.576e-01, 3.068e-01, 4.523e-02, -2.539e-01, 1.984e-01, 6.054e-02, -2.267e-01), r);\n\tr = MulAdd(s2_2, M4(-1.325e-02, -1.171e-01, -6.820e-02, 6.680e-02, -4.834e-02, 8.046e-02, -1.157e-02, 1.409e-01, -1.438e-01, -3.252e-01, -2.903e-01, 3.376e-02, -8.853e-02, 8.772e-02, 2.176e-01, 4.031e-01), r);\n\tr = MulAdd(s2_3, M4(2.235e-01, -1.113e-01, 2.688e-01, 2.116e-01, -1.617e-01, -1.286e-02, 2.732e-01, 6.103e-02, -1.480e-01, 4.627e-02, -1.872e-02, 6.235e-02, 4.024e-01, 8.464e-02, -4.365e-01, 8.703e-02), r);\n\tr = MulAdd(s2_4, M4(-1.671e-01, 1.626e-01, -5.575e-02, -2.082e-02, -1.876e-01, 3.607e-01, -1.139e-01, -4.762e-02, -1.988e-02, 1.190e-01, -2.995e-01, 1.082e-01, 3.695e-01, 1.920e-02, -2.015e-01, -6.103e-01), r);\n\tr = MulAdd(s2_5, M4(-1.472e-01, 7.181e-02, 5.143e-02, 1.519e-01, 7.109e-02, -6.342e-02, 1.723e-01, 2.540e-01, -5.503e-01, -1.194e-01, -1.900e-01, -2.061e-01, 1.004e-01, -1.319e-01, 3.679e-01, 1.158e-01), r);\n\tr = MulAdd(s2_6, M4(-2.509e-02, 5.266e-02, 3.585e-01, -1.288e-01, 1.018e-01, 8.921e-02, 1.694e-01, -1.240e-01, -1.423e-01, 3.175e-02, -4.048e-02, 5.739e-02, -1.162e-01, 1.158e-01, -1.085e-01, 1.682e-01), r);\n\tr = MulAdd(s2_7, M4(2.379e-01, -3.928e-02, 1.503e-01, 8.918e-02, 2.459e-01, -1.859e-01, 4.131e-01, 5.902e-02, -2.605e-01, -8.128e-03, 3.047e-02, -1.869e-01, 5.074e-02, -1.430e-01, 1.626e-01, -1.676e-02), r);\n\tr = MulAdd(s2_8, M4(-6.399e-02, 9.947e-02, 7.501e-02, -1.298e-01, 3.091e-01, -1.130e-01, 1.293e-01, -1.407e-01, -2.135e-01, 6.533e-02, 1.802e-02, -1.939e-01, 1.320e-01, -1.771e-01, -3.453e-02, 1.703e-01), r);\n\tr = MulAdd(s3_0, M4(-1.142e-01, 1.466e-01, 7.215e-03, -4.026e-02, 4.854e-02, -2.248e-02, 4.894e-02, -3.407e-02, 1.147e-01, -1.795e-01, 6.157e-02, 5.692e-02, 3.947e-02, 3.094e-02, -6.908e-02, 9.956e-02), r);\n\tr = MulAdd(s3_1, M4(-1.148e-02, 6.514e-02, 3.684e-03, -1.459e-02, 2.465e-02, -2.901e-02, -8.985e-02, -1.146e-01, 4.421e-01, -4.375e-01, 2.371e-01, -1.641e-01, -2.372e-02, -1.411e-02, 6.435e-02, 9.437e-02), r);\n\tr = MulAdd(s3_2, M4(5.557e-02, -2.242e-01, -3.345e-02, -2.953e-02, -1.091e-02, 2.882e-03, -1.566e-01, -3.146e-02, 6.489e-02, -2.984e-01, -9.024e-04, -4.651e-02, -4.070e-04, 5.174e-02, -5.263e-02, -1.400e-01), r);\n\tr = MulAdd(s3_3, M4(-1.358e-01, 5.689e-02, -1.724e-01, -4.284e-02, 1.669e-01, -1.199e-01, -3.149e-01, -1.468e-01, -5.475e-03, 1.038e-01, 2.023e-01, -2.987e-02, -8.255e-02, 7.491e-02, -6.692e-02, -8.698e-02), r);\n\tr = MulAdd(s3_4, M4(2.665e-01, 1.084e-01, 3.464e-02, 1.097e-01, -1.104e-01, 2.399e-01, -3.444e-01, 1.153e-01, 1.271e-01, 1.372e-01, -2.740e-01, 1.911e-01, 3.881e-03, -7.096e-02, -9.862e-02, -1.155e-02), r);\n\tr = MulAdd(s3_5, M4(-1.003e-02, -8.276e-02, 1.139e-01, -9.830e-02, 5.847e-02, -2.887e-01, -3.093e-01, -1.283e-01, -1.310e-01, 1.559e-02, -1.089e-01, -1.444e-01, -6.158e-02, -1.244e-01, -1.105e-01, 1.040e-01), r);\n\tr = MulAdd(s3_6, M4(-4.486e-02, -8.327e-02, -2.001e-01, 1.306e-01, -2.507e-01, -1.655e-01, -3.430e-01, -5.603e-02, -1.088e-02, -1.598e-02, 5.772e-02, -2.714e-02, -6.248e-02, 2.533e-02, -3.380e-02, -4.265e-02), r);\n\tr = MulAdd(s3_7, M4(-2.085e-01, 1.207e-01, -3.720e-02, 3.187e-02, 8.328e-02, -1.478e-01, -3.583e-01, -8.352e-02, 1.044e-01, -1.021e-02, 1.267e-01, -8.480e-02, 1.596e-01, 1.340e-02, 9.415e-03, -8.058e-02), r);\n\tr = MulAdd(s3_8, M4(9.541e-02, 2.103e-02, -3.731e-03, 2.217e-02, -2.704e-01, -6.955e-02, -2.359e-01, -3.753e-01, 5.169e-02, 3.572e-02, 2.793e-02, -8.367e-02, 2.345e-02, -2.282e-02, 3.577e-02, -1.130e-01), r);\n\tr = MulAdd(s4_0, M4(-1.707e-01, 3.997e-02, -1.141e-01, 1.112e-01, 1.392e-02, -1.528e-01, 6.816e-02, 1.333e-02, 1.177e-03, -5.273e-02, 1.844e-02, 1.732e-02, 1.027e-01, 9.282e-02, -8.965e-02, -3.378e-02), r);\n\tr = MulAdd(s4_1, M4(3.575e-02, -7.195e-02, -5.859e-02, 8.818e-02, -8.622e-02, -1.008e-01, 2.017e-02, -1.139e-02, 1.806e-02, -2.028e-01, 5.585e-02, 1.500e-01, 1.127e-01, -3.169e-02, 1.197e-01, 4.792e-02), r);\n\tr = MulAdd(s4_2, M4(-2.604e-03, 1.051e-02, 1.412e-01, -5.863e-02, -4.217e-02, 3.996e-02, -9.017e-03, 2.003e-01, 3.660e-02, 4.378e-02, -4.152e-02, -1.036e-01, 1.732e-01, -3.565e-02, 7.231e-02, 1.261e-01), r);\n\tr = MulAdd(s4_3, M4(2.970e-02, -4.589e-02, -1.678e-02, -1.266e-02, 1.554e-01, -8.091e-02, 1.432e-01, -2.513e-02, 6.188e-02, 3.822e-02, 1.232e-01, 8.549e-02, -7.653e-02, -1.183e-02, 5.302e-02, 1.202e-01), r);\n\tr = MulAdd(s4_4, M4(2.794e-01, -4.722e-02, -3.501e-02, 3.923e-02, -3.495e-02, 2.474e-01, -1.880e-01, 4.487e-02, 4.384e-02, 2.064e-01, -3.922e-01, 1.410e-01, 1.671e-01, -3.333e-01, 2.001e-01, -1.453e-01), r);\n\tr = MulAdd(s4_5, M4(8.181e-02, -1.581e-02, 1.478e-01, 1.558e-01, -6.474e-02, -1.127e-01, 4.454e-02, -1.335e-01, 1.221e-01, -2.658e-01, -2.024e-02, -2.517e-02, 7.345e-02, 5.997e-02, -1.399e-02, 1.402e-01), r);\n\tr = MulAdd(s4_6, M4(-1.348e-01, -6.138e-02, -9.543e-03, -7.792e-03, -1.458e-02, -7.404e-03, -1.125e-01, 3.650e-02, 3.389e-02, 2.502e-02, 8.436e-02, 1.033e-02, 1.219e-01, -4.412e-02, -5.576e-02, -3.970e-03), r);\n\tr = MulAdd(s4_7, M4(-3.417e-02, -1.380e-01, -1.627e-01, -1.374e-01, -1.803e-01, -4.939e-02, -7.251e-02, -2.915e-01, 1.441e-01, -1.316e-01, 2.778e-01, -8.583e-02, 3.703e-01, 6.378e-02, -1.088e-01, 1.179e-02), r);\n\tr = MulAdd(s4_8, M4(-1.187e-02, 2.075e-01, -6.312e-02, -4.515e-01, 1.636e-01, 5.593e-03, -1.043e-02, 2.057e-02, -4.680e-01, -2.561e-02, -1.386e-01, -2.197e-01, 2.314e-01, -8.280e-02, -1.032e-01, -2.514e-01), r);\n\tr = MulAdd(s5_0, M4(-9.275e-02, -6.584e-02, 8.687e-02, -1.240e-01, 1.077e-01, -3.266e-01, 3.930e-02, -1.755e-01, 1.417e-01, 9.351e-03, 6.679e-03, 4.820e-02, -2.202e-01, -1.487e-02, 2.234e-01, 5.928e-02), r);\n\tr = MulAdd(s5_1, M4(4.244e-03, -8.613e-02, 7.380e-02, -5.880e-02, -1.364e-01, 1.651e-04, 1.180e-01, -4.176e-02, 2.033e-01, -1.228e-01, 3.606e-02, 1.587e-01, -2.911e-01, -1.252e-01, 2.768e-02, 2.469e-02), r);\n\tr = MulAdd(s5_2, M4(-3.755e-02, 5.802e-02, 5.191e-02, -5.098e-02, 3.585e-01, -6.661e-02, 3.846e-02, -7.954e-02, -1.309e-01, 6.603e-02, 6.997e-02, 6.127e-03, -1.656e-01, -5.526e-02, -1.928e-01, 2.505e-01), r);\n\tr = MulAdd(s5_3, M4(4.658e-02, -1.393e-02, -8.022e-03, -6.763e-02, 1.514e-02, -4.698e-02, 8.419e-02, -5.550e-02, 2.622e-01, 1.319e-01, 2.548e-01, 1.069e-02, -1.016e-01, -8.551e-03, 2.224e-01, 2.126e-02), r);\n\tr = MulAdd(s5_4, M4(-7.520e-02, 4.847e-02, -5.405e-02, -3.974e-02, 5.266e-02, 2.176e-01, 9.205e-02, 1.811e-01, -3.110e-01, 5.955e-01, -2.327e-01, 9.697e-02, -9.345e-02, -1.508e-01, 1.331e-01, -1.117e-01), r);\n\tr = MulAdd(s5_5, M4(-8.692e-03, 1.264e-01, -2.997e-02, -1.821e-01, 5.133e-02, 1.825e-01, 1.131e-01, 3.357e-02, -6.751e-02, 1.866e-02, -3.785e-02, -2.172e-01, -1.564e-01, 9.422e-02, -1.388e-01, 1.427e-01), r);\n\tr = MulAdd(s5_6, M4(-1.623e-01, -3.759e-02, 6.117e-04, -2.766e-02, 1.206e-02, 5.389e-03, 3.726e-02, 5.531e-02, -9.318e-02, -3.451e-02, -1.199e-01, 6.547e-03, -1.887e-01, -5.438e-03, 1.026e-01, 4.290e-02), r);\n\tr = MulAdd(s5_7, M4(-5.104e-02, -5.492e-03, 5.954e-02, 6.657e-02, 1.943e-01, 3.488e-02, 1.388e-01, 9.089e-02, -3.791e-01, -8.801e-02, 7.101e-03, -4.950e-02, 1.226e-01, 5.452e-02, -1.631e-01, -3.946e-03), r);\n\tr = MulAdd(s5_8, M4(2.790e-01, -3.594e-02, 7.538e-03, 5.006e-01, -5.859e-02, 1.508e-01, 1.898e-02, -7.446e-02, 1.573e-01, -4.166e-02, -4.040e-02, -2.340e-01, -5.971e-02, -1.561e-01, 2.550e-02, 4.738e-01), r);\n\tr = MulAdd(s6_0, M4(2.046e-01, -1.122e-04, 2.898e-01, 3.846e-01, 2.241e-01, -2.985e-02, -1.752e-01, -6.644e-02, -4.047e-02, 5.151e-02, 4.937e-02, -5.024e-02, -5.910e-02, -4.902e-02, -2.496e-02, -6.992e-03), r);\n\tr = MulAdd(s6_1, M4(5.641e-02, 1.904e-01, 1.219e-01, 1.229e-01, 2.531e-01, -2.566e-01, 4.242e-02, 3.250e-02, 6.437e-02, -4.655e-02, 9.904e-02, -4.682e-02, -5.524e-02, -1.369e-01, 2.982e-02, -1.623e-01), r);\n\tr = MulAdd(s6_2, M4(-2.628e-03, -2.270e-01, 1.512e-01, 3.369e-01, 1.355e-01, -6.808e-02, 3.351e-02, -1.966e-01, -5.281e-02, 4.194e-02, -9.085e-02, 1.204e-01, 1.040e-02, -4.112e-02, -3.086e-02, 8.178e-02), r);\n\tr = MulAdd(s6_3, M4(1.006e-01, 2.417e-01, -8.287e-01, 4.077e-02, 3.227e-01, 7.162e-02, 2.490e-01, 1.280e-03, -2.438e-01, 8.278e-02, -1.428e-01, 6.916e-02, -6.346e-02, 9.989e-03, 1.231e-01, -1.119e-01), r);\n\tr = MulAdd(s6_4, M4(-3.708e-01, -1.883e-01, 1.621e-01, -5.998e-01, -3.890e-02, 2.311e-01, 4.260e-02, 1.297e-01, -4.501e-02, -3.365e-02, -9.721e-02, -2.446e-01, -7.368e-02, 1.547e-01, -1.569e-01, 2.454e-01), r);\n\tr = MulAdd(s6_5, M4(2.725e-01, 1.215e-01, 1.762e-01, 6.795e-01, -2.529e-01, -2.387e-02, -4.304e-02, -1.798e-01, -1.911e-01, -5.147e-02, -1.566e-01, -1.684e-02, 9.833e-02, 2.260e-02, 9.704e-02, -1.864e-01), r);\n\tr = MulAdd(s6_6, M4(-5.371e-02, 7.565e-02, 2.204e-02, 7.461e-02, 1.265e-01, -8.627e-03, -3.540e-02, -1.881e-02, -2.202e-01, -6.486e-02, 2.303e-01, 5.538e-02, -4.212e-02, -4.130e-02, -5.136e-02, 6.881e-04), r);\n\tr = MulAdd(s6_7, M4(3.574e-01, -3.207e-01, 3.057e-01, 2.824e-02, -1.310e-01, 4.847e-02, 1.734e-03, -1.464e-01, -8.705e-02, -1.006e-02, 6.186e-02, -7.267e-03, 8.074e-02, 7.032e-03, 3.469e-02, -8.714e-02), r);\n\tr = MulAdd(s6_8, M4(-8.964e-02, -1.811e-02, 8.905e-02, 1.990e-01, 9.651e-03, 4.939e-02, -9.253e-02, -1.371e-01, 2.030e-01, -8.662e-02, 9.539e-02, 7.320e-02, 8.916e-02, -1.663e-04, 6.775e-02, 4.441e-02), r);\n\tr = MulAdd(s7_0, M4(-1.150e-01, 1.302e-01, 2.498e-02, -1.342e-02, -1.705e-01, -9.536e-02, 1.426e-01, 8.821e-02, -3.133e-01, -1.155e-01, -2.864e-02, 3.672e-02, 1.816e-01, -1.225e-01, 2.499e-01, -2.514e-01), r);\n\tr = MulAdd(s7_1, M4(-1.405e-01, 2.139e-01, -5.854e-02, 9.749e-02, -2.042e-01, -3.271e-01, -2.073e-01, -8.136e-02, 9.598e-03, -4.593e-02, 1.091e-01, -2.762e-02, -3.500e-01, -1.995e-01, 5.697e-02, -1.257e-01), r);\n\tr = MulAdd(s7_2, M4(-3.587e-02, 8.100e-02, 2.962e-02, -7.049e-03, -9.572e-02, -1.407e-01, -9.330e-02, 3.043e-03, 1.304e-01, -1.072e-01, -1.646e-02, 4.262e-02, 1.474e-01, 3.215e-01, 1.387e-01, -1.788e-02), r);\n\tr = MulAdd(s7_3, M4(-1.266e-01, -1.491e-02, -1.457e-01, 1.780e-03, -3.194e-01, -8.968e-02, 1.055e-01, 5.862e-02, 1.295e-01, -2.288e-02, -2.382e-01, -7.022e-02, 7.631e-02, -1.671e-01, -1.156e-01, 2.249e-01), r);\n\tr = MulAdd(s7_4, M4(7.300e-02, -2.788e-01, 1.545e-01, 1.328e-02, -3.348e-02, 1.600e-01, -1.660e-01, 3.905e-01, 3.055e-01, 2.023e-01, -9.910e-02, 7.181e-02, 3.161e-01, 2.028e-01, 1.169e-02, 2.192e-02), r);\n\tr = MulAdd(s7_5, M4(7.258e-02, -2.385e-02, 1.135e-01, 7.305e-02, 9.155e-02, -7.233e-02, -4.916e-03, -6.268e-02, 2.865e-01, -1.185e-01, 2.418e-01, 1.128e-01, 2.614e-01, 5.352e-03, 1.853e-01, 2.046e-01), r);\n\tr = MulAdd(s7_6, M4(1.259e-01, 6.414e-02, -2.537e-02, 1.707e-02, -6.568e-02, -1.171e-01, 2.287e-01, 1.265e-01, 1.589e-01, -3.707e-02, -7.229e-02, -1.701e-01, -5.609e-02, -1.182e-01, -7.153e-02, 3.566e-01), r);\n\tr = MulAdd(s7_7, M4(1.983e-01, -1.802e-01, -6.150e-02, 7.762e-02, -7.200e-02, -1.003e-01, 3.782e-02, 6.884e-02, 3.277e-01, -5.731e-02, 1.945e-01, 1.746e-01, -2.106e-01, -8.215e-02, -1.878e-01, 8.132e-02), r);\n\tr = MulAdd(s7_8, M4(-2.486e-02, 9.845e-03, 1.111e-01, -6.140e-02, 8.605e-03, -6.981e-02, 2.888e-02, 1.531e-01, -1.288e-01, 8.149e-02, 1.744e-01, 2.852e-02, 1.347e-01, 9.315e-02, 5.734e-03, -1.109e-01), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 6.665e-02, -2.861e-02, -7.364e-02, -7.743e-02 };\n\tr = MulAdd(s0_0, M4(6.655e-03, 5.556e-02, -8.105e-02, 1.458e-01, -8.150e-02, -1.538e-02, -1.082e-01, -1.079e-02, -1.527e-01, -4.165e-02, 1.901e-01, 2.564e-02, -1.333e-01, 1.045e-01, 4.315e-03, 4.170e-03), r);\n\tr = MulAdd(s0_1, M4(-2.539e-02, 4.535e-02, 1.207e-02, 9.199e-03, 2.607e-01, 1.892e-01, -4.678e-01, -1.581e-01, -5.594e-02, -7.519e-02, -1.405e-01, -2.092e-02, -4.527e-02, 9.793e-02, -1.439e-01, 1.186e-01), r);\n\tr = MulAdd(s0_2, M4(1.802e-02, -2.676e-03, -2.571e-02, 4.971e-02, 2.588e-01, -8.633e-02, -1.160e-01, -2.965e-03, -7.715e-02, 9.330e-02, -1.310e-01, 7.265e-02, 1.781e-01, -4.536e-02, -1.389e-01, -8.484e-02), r);\n\tr = MulAdd(s0_3, M4(2.170e-02, 2.383e-02, -1.583e-02, -5.823e-02, 1.480e-02, 8.420e-02, -8.576e-02, -3.458e-02, -6.119e-01, 1.272e-02, 1.903e-01, 1.106e-01, 1.466e-01, -2.758e-04, 5.097e-02, 5.463e-02), r);\n\tr = MulAdd(s0_4, M4(-7.211e-02, 6.139e-02, 9.620e-02, -5.765e-03, -3.925e-01, -2.522e-01, -5.260e-02, 1.453e-01, 7.604e-02, -7.873e-03, 1.661e-02, -3.368e-02, 7.994e-03, -1.523e-01, -1.285e-01, -9.694e-02), r);\n\tr = MulAdd(s0_5, M4(-2.075e-01, -5.935e-02, 2.857e-01, -8.070e-03, 4.043e-02, -2.901e-02, 5.117e-02, -1.444e-01, -1.882e-01, 3.192e-01, -6.324e-02, -5.315e-02, 3.058e-01, 4.921e-02, 8.788e-02, 1.490e-02), r);\n\tr = MulAdd(s0_6, M4(3.021e-02, -1.996e-02, -3.307e-03, 6.202e-03, 9.278e-02, -2.484e-01, 2.414e-02, 9.733e-02, 8.946e-02, -2.138e-01, 1.501e-01, 1.242e-01, -1.088e-01, -8.307e-02, -5.870e-02, 2.474e-02), r);\n\tr = MulAdd(s0_7, M4(-5.499e-02, -3.792e-03, -8.923e-02, 5.841e-02, -3.779e-02, -2.041e-01, 7.140e-02, -4.398e-02, 2.706e-02, -7.244e-02, 5.549e-02, 8.587e-03, -6.630e-02, 1.648e-01, 4.909e-02, 1.227e-02), r);\n\tr = MulAdd(s0_8, M4(-1.652e-02, 1.010e-02, 3.214e-02, 6.838e-02, 3.679e-02, -2.320e-01, -1.775e-02, -4.921e-02, 1.925e-02, 1.835e-01, 3.734e-02, 3.136e-02, -7.236e-04, -3.134e-01, 9.843e-02, -3.487e-02), r);\n\tr = MulAdd(s1_0, M4(-1.105e-01, 1.907e-01, -1.500e-01, 1.024e-01, 2.619e-02, -6.697e-02, 6.286e-02, -5.147e-03, 1.463e-01, 7.406e-03, -1.897e-01, -5.971e-01, 7.540e-03, -5.692e-02, -5.279e-02, -8.061e-02), r);\n\tr = MulAdd(s1_1, M4(-2.672e-01, -1.255e-01, 1.946e-01, -1.145e-02, -3.182e-02, -7.422e-02, 4.570e-02, 9.251e-02, -1.189e-02, 1.085e-01, -2.353e-02, -1.135e-02, 6.594e-02, 4.029e-03, -3.751e-02, 2.063e-02), r);\n\tr = MulAdd(s1_2, M4(-8.084e-02, -1.826e-01, -1.234e-01, 4.054e-01, -9.095e-02, -1.165e-01, 1.121e-01, -2.741e-02, 7.305e-02, -3.217e-02, 9.786e-02, -6.659e-02, 1.157e-01, -4.444e-02, 2.270e-01, 1.763e-03), r);\n\tr = MulAdd(s1_3, M4(1.931e-01, -3.257e-02, -4.842e-01, -8.259e-02, 1.276e-02, -3.639e-02, 1.284e-01, -4.754e-02, 3.171e-01, -1.167e-01, -2.868e-01, -1.150e+00, 2.319e-01, -1.294e-01, -1.171e-01, -3.551e-02), r);\n\tr = MulAdd(s1_4, M4(-2.500e-01, -1.085e-01, 1.923e-02, 8.237e-02, 2.004e-01, 4.469e-02, 9.436e-02, 5.312e-02, -1.068e-01, -7.486e-02, -4.478e-02, 1.552e-01, -2.460e-01, 1.511e-02, 3.162e-01, 5.281e-02), r);\n\tr = MulAdd(s1_5, M4(7.678e-01, -3.055e-02, -4.185e-01, -6.309e-02, -9.683e-02, 1.223e-01, 5.832e-02, 4.524e-02, 1.655e-02, -1.655e-01, -1.073e-01, -1.390e-01, -4.154e-01, 7.540e-02, -1.736e-01, 1.085e-01), r);\n\tr = MulAdd(s1_6, M4(-3.131e-01, -1.286e-01, -1.378e-01, -5.605e-02, 1.242e-02, -6.596e-02, 1.168e-01, 6.750e-02, 5.484e-02, 9.939e-02, -2.480e-01, 2.647e-02, 4.495e-02, 1.346e-01, -4.221e-04, -7.027e-02), r);\n\tr = MulAdd(s1_7, M4(-4.976e-01, -3.209e-01, 6.290e-01, -3.283e-02, -4.935e-02, 1.593e-01, -1.244e-01, 9.397e-03, -1.819e-01, 2.349e-01, 1.214e-01, 4.953e-02, -1.022e-01, 7.186e-02, -4.505e-02, 1.690e-02), r);\n\tr = MulAdd(s1_8, M4(7.415e-02, -5.239e-01, -1.586e-02, 3.447e-01, -3.513e-02, 1.279e-01, -3.171e-02, -6.615e-02, -2.123e-01, -1.534e-01, 1.701e-02, 4.486e-03, 1.917e-01, 1.039e-01, 6.547e-02, 2.694e-02), r);\n\tr = MulAdd(s2_0, M4(8.618e-02, -4.803e-02, -1.171e-01, -1.513e-02, 2.974e-02, -2.265e-02, 9.962e-02, -1.931e-02, 6.049e-02, -8.627e-02, 3.800e-02, 9.618e-02, 2.536e-01, -4.773e-01, 3.032e-02, -3.750e-02), r);\n\tr = MulAdd(s2_1, M4(6.232e-02, 1.536e-01, 1.781e-02, -6.115e-02, -5.699e-04, -4.098e-02, 1.818e-01, 1.820e-02, -1.301e-01, -4.811e-01, 1.531e-01, 8.739e-02, 1.003e-01, -1.786e-01, 4.009e-01, 1.199e-01), r);\n\tr = MulAdd(s2_2, M4(-1.296e-01, 6.706e-02, 3.536e-02, -5.269e-03, 9.650e-03, 6.253e-02, 9.542e-02, -2.238e-02, -8.852e-04, -2.723e-01, -1.343e-01, 6.277e-02, 2.481e-01, -3.909e-01, -2.848e-01, -2.311e-02), r);\n\tr = MulAdd(s2_3, M4(-1.844e-01, 2.576e-01, 1.042e-01, -3.795e-02, -1.274e-02, -6.163e-02, 1.016e-02, 5.374e-02, 1.026e-01, -5.200e-02, -1.895e-01, 1.465e-02, -4.053e-01, 3.662e-01, 1.275e-01, -1.067e-01), r);\n\tr = MulAdd(s2_4, M4(-7.130e-03, 2.468e-01, 1.063e-01, -8.518e-02, -2.571e-01, 1.458e-01, 1.766e-01, -8.033e-03, -2.254e-01, -3.894e-01, 3.050e-02, -2.920e-01, -6.229e-01, -2.740e-02, -4.316e-01, 2.365e-01), r);\n\tr = MulAdd(s2_5, M4(1.404e-01, 1.765e-01, 3.307e-02, 4.062e-02, -5.348e-02, 1.879e-01, 1.456e-01, 1.174e-01, 2.685e-01, -1.430e-01, -8.005e-02, 1.036e-01, -1.043e-01, -1.460e-01, -1.615e-01, 3.867e-02), r);\n\tr = MulAdd(s2_6, M4(5.364e-03, 2.301e-02, 9.842e-02, 7.951e-02, -2.416e-02, 1.013e-01, -5.920e-02, 1.695e-02, 2.026e-02, -2.394e-01, 8.882e-02, 3.650e-02, -1.144e-01, -3.474e-01, 3.686e-01, 1.380e-02), r);\n\tr = MulAdd(s2_7, M4(-8.185e-02, 1.872e-01, 1.357e-01, 2.697e-02, -2.581e-01, 3.224e-01, -2.279e-02, 3.041e-03, 2.607e-02, -1.089e-01, -2.909e-02, -1.060e-01, 2.486e-01, -1.111e-01, 2.357e-01, 1.090e-02), r);\n\tr = MulAdd(s2_8, M4(-2.989e-02, -1.133e-01, 2.163e-01, -9.537e-03, -8.489e-02, -2.383e-01, -1.081e-01, -1.091e-02, 1.138e-02, -4.123e-01, -4.767e-02, 4.099e-02, 2.298e-01, 1.293e-01, 1.773e-01, 7.660e-02), r);\n\tr = MulAdd(s3_0, M4(3.896e-02, -3.133e-02, 3.217e-02, 4.139e-02, 5.093e-02, 2.823e-02, -8.577e-03, -3.780e-02, 2.861e-03, -1.689e-03, -7.514e-02, 6.305e-02, -2.362e-02, 4.346e-03, 4.735e-03, -1.194e-01), r);\n\tr = MulAdd(s3_1, M4(6.590e-02, -2.471e-02, -7.886e-03, 9.714e-03, 1.811e-01, 5.951e-03, -8.243e-02, -6.037e-02, 1.833e-02, -7.481e-02, -1.821e-01, 8.750e-02, 1.107e-01, 1.240e-01, -9.746e-02, 5.775e-02), r);\n\tr = MulAdd(s3_2, M4(-6.174e-02, -5.979e-02, -3.929e-03, 1.273e-03, 1.079e-01, 1.519e-01, 1.121e-01, -5.081e-02, -7.291e-03, 3.345e-02, -1.553e-02, -2.742e-02, 2.182e-02, -1.318e-01, 5.946e-02, -5.933e-02), r);\n\tr = MulAdd(s3_3, M4(3.138e-02, -3.365e-01, -1.367e-02, 1.570e-01, 3.432e-02, -7.250e-02, -1.769e-01, -1.685e-02, -5.534e-02, 1.023e-01, -8.995e-02, 2.204e-02, 5.705e-03, 1.595e-01, 4.186e-02, 2.708e-02), r);\n\tr = MulAdd(s3_4, M4(-1.008e-01, -8.172e-02, -1.077e-02, -4.102e-02, -1.583e-01, -2.770e-01, -6.289e-04, -1.642e-01, -2.202e-01, 1.332e-01, -4.903e-02, -1.783e-01, 2.032e-02, -6.282e-02, 1.980e-02, -2.676e-01), r);\n\tr = MulAdd(s3_5, M4(1.053e-01, 1.076e-01, -3.948e-02, 4.915e-02, 2.136e-01, -2.357e-01, -1.255e-01, -1.459e-02, 9.773e-02, 1.624e-01, -2.384e-02, 2.292e-01, 1.363e-01, 5.480e-02, -6.351e-02, -1.213e-01), r);\n\tr = MulAdd(s3_6, M4(8.917e-03, 4.804e-03, 3.635e-02, -7.499e-02, 2.543e-01, -1.210e-02, -8.202e-02, -9.351e-03, -1.585e-02, -5.763e-03, 8.240e-02, 5.701e-02, -4.596e-02, 4.842e-02, 1.877e-02, -1.446e-01), r);\n\tr = MulAdd(s3_7, M4(-1.232e-01, -6.384e-02, -1.339e-01, -8.216e-02, 3.312e-01, 6.954e-02, 3.517e-02, 1.689e-01, -4.765e-02, 2.718e-01, -1.615e-01, -1.460e-01, -8.312e-02, 9.253e-02, -1.689e-01, -1.620e-01), r);\n\tr = MulAdd(s3_8, M4(8.432e-02, 1.952e-01, -4.068e-02, -3.398e-03, 2.903e-01, -1.703e-01, -1.062e-01, 3.111e-02, -1.865e-01, 9.773e-02, -1.087e-01, 3.428e-02, -2.037e-02, -4.488e-02, 5.985e-02, -7.044e-02), r);\n\tr = MulAdd(s4_0, M4(2.537e-01, -1.393e-01, 3.364e-02, 5.812e-02, 1.427e-01, -1.551e-02, 1.041e-01, 1.064e-01, 4.486e-02, -3.444e-02, -5.496e-02, 3.862e-02, 9.252e-02, -1.363e-02, 6.163e-03, 2.246e-02), r);\n\tr = MulAdd(s4_1, M4(8.846e-03, 4.557e-02, -1.059e-02, 1.340e-01, 1.547e-01, -5.603e-02, 2.197e-02, 1.421e-01, -2.348e-01, -1.163e-01, 3.919e-03, -2.110e-01, 9.481e-02, 1.260e-02, 1.355e-02, 9.323e-02), r);\n\tr = MulAdd(s4_2, M4(-7.205e-02, -1.342e-01, 4.100e-03, 7.338e-02, 7.469e-02, -3.581e-02, 9.859e-02, 1.051e-01, -1.580e-01, 3.044e-02, -1.745e-01, -2.835e-02, -5.595e-02, 4.080e-01, 6.298e-02, -5.029e-02), r);\n\tr = MulAdd(s4_3, M4(2.531e-01, 5.550e-02, 4.475e-02, -1.046e-01, 8.019e-02, 6.507e-02, -1.792e-01, 2.618e-02, -5.059e-02, -2.618e-01, -3.367e-02, -1.395e-01, 2.896e-01, -2.934e-02, -5.490e-02, 9.300e-02), r);\n\tr = MulAdd(s4_4, M4(7.890e-02, 3.029e-01, 2.133e-02, -5.126e-02, -3.385e-01, -1.758e-01, -6.291e-02, -3.150e-01, -4.135e-01, 2.422e-01, 1.068e-02, -1.341e-01, 3.631e-01, 1.772e-02, -7.548e-04, 4.115e-02), r);\n\tr = MulAdd(s4_5, M4(1.689e-01, 1.690e-01, -9.701e-02, -1.115e-01, 9.889e-02, -4.711e-02, -1.317e-01, -8.123e-03, -9.076e-02, -8.810e-02, 2.362e-01, -3.804e-02, 2.086e-02, 2.328e-01, -1.051e-01, -1.188e-01), r);\n\tr = MulAdd(s4_6, M4(8.424e-02, -3.195e-01, 9.356e-02, 7.451e-02, 4.294e-03, 4.530e-02, -4.655e-03, 1.649e-02, -2.645e-02, -4.658e-02, -1.554e-01, -1.458e-02, 7.289e-02, 1.307e-01, 6.133e-02, 1.640e-03), r);\n\tr = MulAdd(s4_7, M4(-7.246e-02, 1.717e-02, -2.153e-01, 3.459e-02, -2.573e-01, 2.923e-01, 1.217e-01, 8.217e-02, 3.190e-01, 3.920e-01, 1.205e-01, 1.563e-02, 3.302e-02, 1.573e-01, -2.217e-01, -6.957e-02), r);\n\tr = MulAdd(s4_8, M4(-5.015e-01, -3.158e-02, -6.849e-02, 9.000e-02, -3.464e-01, -3.587e-04, 2.693e-02, -3.674e-02, 1.743e-01, 1.260e-01, 5.700e-02, 1.168e-01, 1.287e-01, 4.054e-01, -1.939e-01, 9.138e-02), r);\n\tr = MulAdd(s5_0, M4(-1.275e-01, 9.258e-02, -3.912e-02, -5.020e-02, -1.170e-01, 1.043e-01, 1.126e-01, 2.848e-02, 1.123e-02, -7.908e-02, -2.502e-02, 1.207e-01, -9.056e-02, 1.312e-01, 5.744e-02, -2.529e-03), r);\n\tr = MulAdd(s5_1, M4(6.956e-02, 6.685e-02, 4.250e-02, 1.363e-01, -5.655e-02, 4.736e-01, 2.432e-02, 7.977e-03, 1.009e-01, -1.834e-01, 8.792e-03, -6.653e-02, -2.083e-01, 1.321e-02, 3.548e-02, 3.161e-02), r);\n\tr = MulAdd(s5_2, M4(-1.823e-02, -9.938e-02, 1.187e-01, 1.367e-01, -5.580e-02, 1.312e-01, -1.650e-01, 5.498e-02, -1.319e-03, 4.431e-02, 1.802e-01, 1.547e-02, -6.616e-02, 1.764e-02, 2.344e-02, 4.526e-02), r);\n\tr = MulAdd(s5_3, M4(-1.979e-01, 1.126e-02, 4.399e-02, -5.940e-02, -1.603e-01, -3.065e-01, 1.705e-01, -5.170e-02, -1.620e-02, 5.378e-03, -3.391e-02, -3.194e-02, -1.239e-01, 1.018e-01, 1.143e-02, -4.358e-03), r);\n\tr = MulAdd(s5_4, M4(-1.316e-01, -1.408e-01, 3.692e-02, -6.235e-02, 9.756e-02, 1.965e-01, 1.613e-01, -1.826e-02, 1.529e-01, 2.658e-01, -1.722e-01, -2.159e-01, -9.866e-02, -4.192e-01, -7.198e-02, 1.045e-01), r);\n\tr = MulAdd(s5_5, M4(-6.488e-02, -1.184e-01, -9.189e-02, 4.309e-02, -1.599e-01, -2.858e-01, 2.405e-01, 2.957e-02, 1.531e-01, -5.256e-02, -1.240e-01, 1.017e-01, -9.043e-02, -1.965e-01, 2.388e-01, -6.754e-02), r);\n\tr = MulAdd(s5_6, M4(7.957e-02, 7.197e-02, -1.815e-01, 1.702e-01, 9.849e-02, -3.109e-01, -1.147e-01, 1.632e-01, 1.087e-01, 1.393e-02, 7.967e-02, -8.238e-02, -4.902e-02, -4.507e-02, 7.177e-03, -1.265e-02), r);\n\tr = MulAdd(s5_7, M4(-7.930e-02, -3.751e-02, 2.822e-01, 1.702e-01, 4.284e-01, -4.733e-04, -1.522e-01, 4.036e-01, 1.503e-01, 1.747e-02, -2.079e-02, 2.941e-01, -1.312e-01, -1.859e-01, 4.046e-02, -4.338e-02), r);\n\tr = MulAdd(s5_8, M4(2.182e-01, 1.775e-01, 4.035e-02, -1.053e-01, 2.385e-01, 1.134e-01, 2.134e-01, 6.980e-02, -1.202e-01, -2.052e-01, -1.275e-01, 6.549e-02, 3.340e-02, -2.139e-01, 1.350e-01, 1.552e-02), r);\n\tr = MulAdd(s6_0, M4(2.772e-01, 7.592e-02, 2.153e-02, 2.310e-01, -7.911e-03, 3.401e-03, 1.073e-01, -4.014e-02, 1.460e-02, 8.533e-02, -4.139e-02, -6.476e-02, -2.862e-02, -1.944e-02, 3.860e-01, -4.332e-02), r);\n\tr = MulAdd(s6_1, M4(4.812e-01, 1.803e-02, 3.650e-01, 4.224e-01, -1.578e-01, -1.214e-01, 8.779e-02, -7.715e-03, 1.075e-01, 2.096e-01, 6.006e-02, 8.946e-02, 3.282e-03, -4.351e-02, -7.451e-02, 1.163e-01), r);\n\tr = MulAdd(s6_2, M4(3.159e-01, -1.897e-01, 2.192e-01, 1.379e-01, 6.565e-02, -1.496e-01, -6.414e-04, 1.160e-01, -4.805e-02, -7.635e-02, -5.523e-02, 5.868e-02, -5.129e-02, 5.904e-02, 1.374e-02, 5.361e-02), r);\n\tr = MulAdd(s6_3, M4(4.315e-01, 1.023e-01, 1.276e-01, 4.328e-01, 9.514e-02, -8.882e-02, -1.540e-01, 6.534e-02, -1.634e-01, 7.222e-02, -6.178e-02, 1.048e-02, 4.497e-02, -1.487e-01, 2.292e-02, -2.380e-02), r);\n\tr = MulAdd(s6_4, M4(-2.985e-01, -7.845e-02, 8.364e-01, 1.638e+00, -2.243e-01, 1.157e-01, -1.560e-02, -3.542e-01, 1.578e-01, -1.317e-02, -1.165e-01, -4.623e-02, -1.523e-01, -4.097e-02, 7.027e-02, -1.893e-01), r);\n\tr = MulAdd(s6_5, M4(-4.130e-02, -6.393e-01, -6.269e-02, 2.810e-01, 6.838e-02, 2.387e-01, -3.504e-02, 4.013e-02, 3.874e-02, 6.386e-03, 5.781e-02, 5.188e-02, 1.292e-01, 1.734e-01, -4.389e-02, 8.661e-02), r);\n\tr = MulAdd(s6_6, M4(-3.234e-01, -8.243e-02, 2.946e-01, -3.210e-02, -1.900e-03, 1.524e-01, 1.520e-01, 6.625e-02, 3.115e-02, -1.955e-01, -1.206e-01, 3.781e-02, -2.400e-02, -1.820e-01, 1.845e-01, 7.588e-02), r);\n\tr = MulAdd(s6_7, M4(-4.346e-01, 1.289e-01, 7.611e-01, 4.578e-01, 6.179e-02, 7.028e-02, -1.120e-01, -3.356e-02, 2.095e-01, -2.202e-03, -2.747e-02, -7.018e-04, -4.247e-02, 2.166e-01, 1.138e-01, 7.714e-02), r);\n\tr = MulAdd(s6_8, M4(1.182e-01, 4.479e-01, 1.944e-01, 2.369e-01, -9.513e-02, -3.546e-02, -1.288e-01, 5.557e-02, 4.410e-02, -8.010e-02, 1.142e-01, 2.252e-02, 5.250e-02, 5.762e-02, 9.484e-02, 1.049e-02), r);\n\tr = MulAdd(s7_0, M4(2.362e-02, -7.456e-02, -8.570e-02, 1.749e-01, 7.050e-02, -1.714e-01, -2.974e-01, -1.436e-02, -1.732e-01, 1.164e-01, 2.513e-01, -5.570e-02, 1.232e-02, 4.972e-02, -3.535e-01, 1.783e-01), r);\n\tr = MulAdd(s7_1, M4(1.016e-01, -5.980e-02, -9.087e-02, 1.968e-01, 5.459e-02, -2.606e-01, -3.196e-01, 4.241e-03, -7.105e-02, 7.151e-02, 2.115e-01, 1.034e-01, -1.907e-03, 9.728e-02, -1.425e-02, 3.176e-01), r);\n\tr = MulAdd(s7_2, M4(6.123e-02, 1.818e-02, 6.712e-02, 8.668e-02, 8.312e-02, -1.384e-01, -2.917e-02, 7.580e-03, -3.688e-02, 2.069e-01, 3.602e-02, -1.538e-02, 2.226e-03, -1.482e-01, 5.510e-02, 9.440e-02), r);\n\tr = MulAdd(s7_3, M4(-3.627e-02, 5.019e-02, -9.160e-02, 6.557e-02, 2.114e-01, -3.279e-01, -3.847e-02, 2.284e-01, 9.347e-03, 2.755e-01, 3.278e-01, -1.176e-01, 1.993e-01, 2.487e-01, -1.174e-01, 4.235e-01), r);\n\tr = MulAdd(s7_4, M4(8.905e-02, -4.722e-02, -1.047e-01, -6.425e-01, 6.954e-02, -2.695e-02, 2.081e-01, -2.489e-01, -1.908e-01, -2.528e-02, 1.878e-01, 3.810e-02, -2.715e-01, -2.092e-01, -1.303e-01, -9.392e-02), r);\n\tr = MulAdd(s7_5, M4(-5.402e-03, 2.137e-02, 8.297e-02, 5.125e-03, 1.445e-02, -1.290e-01, -9.459e-02, -1.349e-02, -3.473e-02, -1.413e-03, -3.585e-02, 8.633e-02, 8.299e-02, -9.031e-02, 1.890e-02, 8.582e-02), r);\n\tr = MulAdd(s7_6, M4(-2.498e-02, -8.174e-02, 5.545e-02, 1.061e-01, 5.317e-02, -1.445e-01, -5.075e-02, -2.452e-02, -6.244e-02, 2.842e-01, 1.286e-01, 5.565e-02, -1.222e-01, -4.650e-03, -3.429e-01, 7.063e-02), r);\n\tr = MulAdd(s7_7, M4(-4.282e-02, 4.579e-03, 8.260e-02, 4.414e-02, 7.506e-02, -3.467e-02, -1.103e-01, -2.087e-02, -3.690e-01, -2.446e-02, 4.477e-02, -5.426e-03, -7.949e-03, 1.122e-01, -2.450e-01, 1.310e-01), r);\n\tr = MulAdd(s7_8, M4(5.690e-02, 3.884e-02, 1.819e-02, 1.769e-01, -3.959e-02, -2.336e-01, 8.080e-02, 3.858e-02, 5.694e-03, 1.613e-01, -1.850e-01, 1.164e-01, -2.013e-01, -1.304e-01, -9.271e-02, 2.405e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.921e-03, 1.878e-02, 2.174e-02, -2.472e-02 };\n\tr = MulAdd(s0_0, M4(-4.188e-02, 3.911e-02, -2.494e-03, -2.831e-02, -1.972e-01, 2.131e-01, 2.042e-04, -1.627e-02, 1.885e-01, 8.479e-02, 1.430e-01, -6.999e-02, -5.654e-02, 6.220e-02, 3.930e-02, -8.713e-02), r);\n\tr = MulAdd(s0_1, M4(9.534e-04, -9.037e-02, -4.319e-02, 1.939e-01, -1.410e-01, -1.372e-01, -5.143e-01, 2.666e-03, 8.914e-02, 2.363e-01, -9.561e-02, 1.199e-01, 9.545e-02, 8.177e-02, -2.727e-02, 3.668e-02), r);\n\tr = MulAdd(s0_2, M4(2.061e-01, 4.186e-02, 9.197e-02, 6.201e-02, 2.803e-01, 6.116e-02, 2.712e-01, 3.081e-01, 1.745e-01, -6.947e-02, 8.908e-02, -5.336e-03, -4.432e-02, 8.851e-02, 1.293e-01, 1.005e-01), r);\n\tr = MulAdd(s0_3, M4(-1.996e-01, 4.379e-02, -1.397e-01, -1.841e-01, 1.023e-01, -2.295e-02, -1.174e-01, 3.601e-02, -2.838e-01, 9.978e-02, 1.481e-01, -1.023e-01, 3.961e-02, 6.618e-02, 9.490e-02, -2.691e-02), r);\n\tr = MulAdd(s0_4, M4(3.418e-02, -1.448e-01, -1.010e-01, 2.336e-02, -1.532e-01, -7.991e-02, -1.969e-01, -1.017e-01, 5.245e-02, 2.387e-01, -2.388e-01, -1.195e-01, -1.677e-01, 6.502e-02, -2.937e-01, 1.324e-01), r);\n\tr = MulAdd(s0_5, M4(1.576e-02, -4.273e-02, 8.894e-02, -5.236e-02, -2.616e-01, -1.620e-01, -5.406e-02, 3.255e-01, 3.261e-03, 1.246e-01, 1.157e-01, 1.764e-01, -1.268e-02, 3.138e-02, 1.725e-01, 5.102e-03), r);\n\tr = MulAdd(s0_6, M4(-1.819e-01, 3.163e-02, -2.232e-01, -8.649e-02, 2.477e-01, 3.868e-02, -1.274e-01, -1.264e-01, -3.308e-02, -1.345e-01, -1.506e-01, -3.680e-02, 1.321e-01, 7.888e-03, 7.519e-02, -7.002e-02), r);\n\tr = MulAdd(s0_7, M4(-3.134e-02, 8.152e-02, -1.868e-02, -6.641e-02, 1.172e-01, 1.674e-02, -1.663e-01, 9.303e-02, -7.864e-02, 3.147e-01, -5.638e-02, -7.548e-03, -1.552e-01, 1.281e-02, -6.565e-02, 1.074e-01), r);\n\tr = MulAdd(s0_8, M4(1.213e-01, -6.248e-02, 7.482e-02, 9.157e-02, -8.935e-02, 1.599e-02, 1.405e-02, 1.277e-01, -2.177e-02, -5.653e-02, 1.523e-01, 1.668e-01, -1.860e-02, 7.483e-02, 6.869e-02, -1.209e-02), r);\n\tr = MulAdd(s1_0, M4(2.365e-01, -2.096e-02, -1.695e-01, -8.783e-02, 1.421e-02, -1.485e-02, -8.857e-02, 9.697e-03, -8.778e-02, 8.530e-02, -1.804e-02, 5.474e-02, 1.052e-01, -1.055e-02, 9.641e-02, 1.474e-02), r);\n\tr = MulAdd(s1_1, M4(4.347e-01, 2.115e-01, 1.887e-01, 2.844e-01, 5.543e-02, 1.159e-01, 2.477e-01, -9.212e-02, -1.935e-01, -5.802e-02, -1.655e-02, 4.781e-02, -6.906e-02, -1.315e-01, -5.511e-02, -1.924e-01), r);\n\tr = MulAdd(s1_2, M4(-6.568e-02, -2.548e-01, 3.426e-02, 8.463e-02, 1.262e-02, -1.018e-01, -1.622e-01, -8.035e-03, 1.554e-01, -3.247e-02, 8.714e-02, -5.855e-02, -2.333e-01, -1.695e-01, -1.537e-02, 1.658e-01), r);\n\tr = MulAdd(s1_3, M4(-1.008e-01, 2.533e-01, -9.077e-02, -7.201e-02, -9.625e-02, 1.257e-02, -3.490e-02, 6.242e-02, 1.221e-01, -2.578e-01, 4.224e-02, -3.465e-02, -2.070e-02, -1.371e-01, 1.174e-01, -5.439e-02), r);\n\tr = MulAdd(s1_4, M4(-5.705e-01, 3.135e-01, -3.738e-01, 1.494e-01, 6.415e-02, -3.706e-03, 1.545e-01, -8.638e-02, -5.674e-02, -9.102e-02, -1.021e-01, 1.764e-01, 7.511e-02, 1.061e-01, 5.827e-03, 9.464e-02), r);\n\tr = MulAdd(s1_5, M4(6.192e-01, -5.291e-02, 8.063e-02, -1.212e-01, 2.809e-01, 6.766e-02, 2.371e-02, 8.214e-02, 8.186e-02, -5.705e-02, -4.991e-02, 9.358e-02, 3.349e-01, -7.810e-02, 5.105e-03, -1.689e-02), r);\n\tr = MulAdd(s1_6, M4(-8.209e-03, 1.708e-01, -6.446e-02, -5.466e-02, -5.550e-02, -7.580e-02, 1.763e-02, 7.632e-02, -2.885e-02, 1.813e-02, 3.694e-02, -1.628e-01, -1.729e-01, 1.523e-01, -4.755e-02, -1.874e-02), r);\n\tr = MulAdd(s1_7, M4(-2.842e-02, -5.038e-01, -1.441e-01, -1.192e-01, -1.994e-01, 7.440e-02, -1.168e-01, -1.152e-01, -2.554e-02, 4.832e-02, -1.121e-03, -1.208e-01, -9.660e-02, 3.061e-02, -1.091e-01, -1.257e-01), r);\n\tr = MulAdd(s1_8, M4(-1.060e-01, 1.430e-01, 6.638e-03, -8.655e-02, 5.032e-03, 6.352e-02, -1.219e-02, -1.721e-02, -2.960e-02, -9.753e-03, 1.217e-01, 6.606e-02, 1.146e-01, -2.372e-02, -1.066e-01, 1.112e-01), r);\n\tr = MulAdd(s2_0, M4(1.512e-01, -1.360e-01, 1.003e-01, -2.228e-02, -1.981e-02, 5.680e-02, -2.351e-02, -2.149e-02, -3.795e-02, -6.851e-03, 6.286e-03, 5.634e-02, 3.187e-01, -7.946e-02, -1.691e-01, -3.474e-02), r);\n\tr = MulAdd(s2_1, M4(1.811e-01, -2.832e-02, -3.044e-02, -2.047e-01, -6.424e-02, 7.703e-02, 6.279e-02, 5.720e-02, 2.866e-01, 1.931e-01, 6.403e-02, -3.005e-02, 5.048e-02, -1.983e-02, 2.380e-01, -4.797e-02), r);\n\tr = MulAdd(s2_2, M4(-1.311e-01, -3.905e-02, -1.600e-02, -1.287e-01, 3.135e-02, -1.035e-01, 1.382e-02, 2.109e-01, -1.353e-01, 8.187e-02, -1.933e-02, -2.058e-01, -3.192e-01, 5.833e-03, 1.582e-01, 1.055e-01), r);\n\tr = MulAdd(s2_3, M4(-7.578e-02, -1.802e-02, 1.142e-03, -6.449e-03, 1.890e-02, 8.185e-02, -1.360e-01, -1.382e-01, 2.346e-01, -1.593e-01, 1.064e-01, 8.349e-02, 8.157e-02, -7.758e-01, -4.485e-01, 1.432e-01), r);\n\tr = MulAdd(s2_4, M4(-1.904e-01, -1.111e-02, 6.158e-02, 1.036e-03, -1.510e-01, 1.728e-01, -2.534e-01, 1.353e-01, 3.318e-02, 3.215e-01, -3.263e-01, 1.328e-01, -4.546e-01, 1.714e-01, 1.746e-01, 3.783e-01), r);\n\tr = MulAdd(s2_5, M4(-1.312e-01, 5.085e-02, 3.116e-02, -8.743e-02, 2.796e-02, -8.472e-02, 7.036e-02, -8.341e-02, -2.516e-01, -5.612e-02, 8.958e-02, -1.229e-01, 2.736e-01, 1.007e-01, 1.740e-01, 2.939e-01), r);\n\tr = MulAdd(s2_6, M4(6.271e-01, -6.375e-02, 3.872e-02, 1.205e-01, 1.454e-01, -1.306e-01, -2.290e-01, -1.096e-01, 5.513e-02, -1.251e-01, 7.400e-02, 4.007e-03, 2.942e-02, -1.990e-02, -4.658e-02, -2.138e-01), r);\n\tr = MulAdd(s2_7, M4(1.030e-01, 2.035e-01, -9.021e-02, -2.600e-01, 9.415e-02, 1.905e-02, 1.688e-01, -3.456e-02, 2.280e-02, -4.347e-03, -9.776e-03, 1.257e-01, 4.754e-02, 7.155e-02, -7.335e-02, -1.227e-01), r);\n\tr = MulAdd(s2_8, M4(4.734e-02, 8.976e-02, -7.800e-02, -4.560e-04, -9.280e-02, 8.119e-02, -4.994e-02, 2.394e-01, -9.923e-02, 1.476e-02, -3.865e-02, -5.304e-02, 4.677e-01, 2.234e-01, -2.916e-02, -7.769e-02), r);\n\tr = MulAdd(s3_0, M4(8.064e-02, 1.291e-01, 7.727e-02, -1.999e-02, 1.549e-02, -4.633e-02, -3.663e-02, 1.059e-01, -6.190e-02, 1.411e-01, -6.361e-02, 9.450e-03, -1.625e-02, -1.700e-02, 1.808e-02, -1.312e-01), r);\n\tr = MulAdd(s3_1, M4(3.164e-02, 8.257e-02, 9.946e-03, 5.608e-02, 2.040e-01, 1.026e-01, 4.893e-02, 4.471e-02, -2.647e-01, 5.232e-02, 8.367e-02, -4.396e-02, 1.204e-01, 2.318e-02, 2.416e-02, -5.404e-04), r);\n\tr = MulAdd(s3_2, M4(-1.614e-01, -7.945e-02, -8.010e-02, 5.496e-03, 2.406e-01, 3.090e-01, 6.862e-02, 1.258e-01, -3.788e-02, 2.183e-01, 5.092e-02, -1.573e-01, 6.735e-02, -5.002e-02, 1.514e-01, 1.107e-01), r);\n\tr = MulAdd(s3_3, M4(1.479e-01, 2.361e-02, 1.040e-01, 2.166e-02, -1.189e-01, 4.638e-03, 6.935e-02, -8.744e-03, 2.469e-01, -6.632e-02, 6.656e-02, 1.682e-01, -1.416e-01, 1.223e-01, -3.064e-01, 6.913e-03), r);\n\tr = MulAdd(s3_4, M4(1.550e-01, 1.376e-01, -8.576e-02, 7.891e-02, 4.181e-02, -3.444e-04, -1.821e-01, 2.611e-01, -1.614e-01, 4.019e-02, -2.548e-01, 9.231e-02, -1.216e-01, -3.186e-02, -1.297e-01, -1.230e-01), r);\n\tr = MulAdd(s3_5, M4(3.948e-02, 4.112e-02, -7.857e-03, -8.752e-02, 1.139e-01, 6.144e-02, 1.122e-01, 3.369e-02, -1.216e-01, -1.379e-01, 2.298e-01, -4.286e-01, -3.835e-02, -6.797e-02, 4.648e-02, 7.861e-02), r);\n\tr = MulAdd(s3_6, M4(-2.087e-01, -1.544e-01, -9.079e-03, -1.595e-01, -1.079e-02, -1.745e-02, -8.393e-02, -5.607e-02, 2.371e-01, 2.013e-02, -3.454e-02, 3.150e-02, -8.327e-02, 2.099e-02, -2.286e-02, 5.170e-02), r);\n\tr = MulAdd(s3_7, M4(-6.763e-02, -3.678e-02, 2.372e-02, 1.024e-01, -2.997e-01, 2.999e-01, 1.426e-01, -1.557e-01, 7.995e-02, -1.268e-02, -8.075e-02, 1.920e-01, 8.148e-03, -7.839e-03, -2.837e-02, 1.963e-02), r);\n\tr = MulAdd(s3_8, M4(-5.668e-02, -1.421e-01, -5.679e-02, 1.756e-02, -7.119e-02, -2.055e-01, 9.936e-02, 1.253e-01, -1.029e-01, 2.465e-02, -4.078e-02, -2.501e-01, 7.316e-02, 1.241e-01, 1.499e-01, 6.111e-02), r);\n\tr = MulAdd(s4_0, M4(-5.703e-02, 1.207e-01, 1.984e-02, -6.309e-02, -1.560e-02, -7.092e-02, -4.825e-02, -1.273e-01, 1.707e-02, -2.400e-02, 7.366e-02, 5.471e-03, 1.441e-01, 1.125e-01, 1.191e-01, -8.359e-02), r);\n\tr = MulAdd(s4_1, M4(1.581e-01, 1.683e-01, 1.421e-02, 6.891e-02, 1.447e-02, 1.112e-01, -5.353e-02, 5.701e-02, -2.312e-01, -2.978e-02, -4.824e-03, 3.022e-01, -2.496e-01, 1.148e-01, -7.820e-02, -2.643e-01), r);\n\tr = MulAdd(s4_2, M4(-1.181e-01, 2.555e-01, 2.130e-01, -3.359e-02, -1.143e-01, -8.525e-02, 2.284e-02, 1.125e-01, 3.372e-02, 4.638e-03, 6.635e-02, -2.298e-01, -2.304e-01, 2.675e-01, -3.765e-02, 1.185e-01), r);\n\tr = MulAdd(s4_3, M4(-8.087e-02, -1.942e-01, -2.963e-01, -1.275e-01, 1.163e-01, -6.763e-02, 6.468e-02, 9.737e-02, 3.722e-01, -2.215e-01, 1.129e-01, 1.155e-01, -5.863e-02, -1.467e-02, -7.591e-03, 7.242e-02), r);\n\tr = MulAdd(s4_4, M4(1.517e-01, -2.668e-02, -1.133e-01, 2.084e-02, 1.579e-01, -7.591e-02, -2.788e-01, -2.643e-02, -5.141e-01, 1.799e-01, -8.189e-03, 1.877e-01, 8.521e-02, -2.388e-01, 8.918e-02, -3.055e-01), r);\n\tr = MulAdd(s4_5, M4(-4.801e-02, 1.488e-01, 4.658e-02, 1.361e-01, -3.208e-03, 7.001e-02, 9.136e-03, -9.821e-02, -4.169e-01, -1.277e-01, 7.576e-02, -2.144e-01, 1.671e-01, 3.049e-03, -1.878e-02, 3.510e-01), r);\n\tr = MulAdd(s4_6, M4(-3.959e-02, -2.581e-01, 5.174e-02, -1.911e-01, 6.262e-02, 7.314e-03, 8.208e-02, -1.864e-02, -1.688e-01, -1.582e-01, 5.003e-02, -3.514e-02, 8.005e-02, 1.571e-01, 1.045e-01, -2.215e-02), r);\n\tr = MulAdd(s4_7, M4(1.552e-01, -2.325e-01, -6.920e-02, 7.045e-02, 2.340e-02, -1.740e-01, 1.765e-01, 1.311e-01, 2.823e-01, 1.528e-01, 9.451e-02, -5.164e-02, -8.723e-02, 1.079e-01, -5.113e-02, -1.851e-01), r);\n\tr = MulAdd(s4_8, M4(-2.172e-01, -2.458e-01, 1.762e-01, 6.071e-02, -4.242e-02, 4.728e-02, 5.004e-02, -3.509e-03, -6.302e-02, -1.150e-01, 1.248e-01, -1.306e-01, 3.278e-02, 5.849e-02, 6.113e-02, 6.530e-03), r);\n\tr = MulAdd(s5_0, M4(2.186e-02, -8.463e-03, 2.938e-02, 2.110e-02, 1.763e-03, 4.754e-01, -1.752e-01, 4.844e-02, 1.616e-01, 8.694e-02, 1.584e-01, -5.774e-02, 4.046e-02, -1.407e-01, -1.444e-01, -6.617e-02), r);\n\tr = MulAdd(s5_1, M4(3.854e-02, 1.206e-02, -2.397e-02, 1.277e-02, -3.590e-01, 3.185e-02, 1.971e-02, 4.395e-02, -2.453e-03, 5.720e-02, -6.919e-02, -1.315e-02, -1.392e-01, -2.179e-02, 5.873e-02, 1.179e-01), r);\n\tr = MulAdd(s5_2, M4(1.175e-01, -1.706e-01, -5.034e-02, 1.384e-01, 3.400e-01, 4.653e-02, -3.204e-02, 2.707e-01, -2.241e-01, -6.196e-03, 1.705e-02, -2.575e-01, 2.917e-01, 3.558e-02, -4.881e-02, 2.312e-01), r);\n\tr = MulAdd(s5_3, M4(-3.266e-02, 1.648e-01, -1.035e-01, -6.685e-02, -2.771e-01, 8.880e-02, 1.625e-01, 4.664e-02, 1.847e-01, 2.458e-01, 2.510e-01, -4.112e-02, 5.400e-02, -2.309e-02, -6.306e-02, 1.013e-01), r);\n\tr = MulAdd(s5_4, M4(-1.191e-01, 7.659e-03, 1.893e-01, 8.074e-02, -4.872e-01, 2.676e-01, 6.461e-02, 1.923e-01, 2.383e-01, 1.264e-01, -4.948e-01, 1.789e-01, -4.451e-02, -1.557e-01, 3.381e-01, -4.749e-02), r);\n\tr = MulAdd(s5_5, M4(9.079e-03, -2.406e-01, 1.096e-01, -7.782e-02, 2.432e-01, -8.577e-03, 2.335e-02, 5.146e-02, -3.574e-01, -1.064e-01, -1.162e-01, -3.525e-01, 2.478e-01, 2.060e-02, 6.505e-02, 3.386e-01), r);\n\tr = MulAdd(s5_6, M4(4.418e-02, 2.185e-01, 1.616e-02, -4.339e-02, -1.643e-01, 2.276e-01, 2.055e-01, 1.004e-01, 1.394e-01, 2.683e-02, 1.894e-01, 1.381e-01, 2.891e-02, 3.274e-02, -1.072e-02, 4.000e-03), r);\n\tr = MulAdd(s5_7, M4(-9.906e-02, 7.663e-02, -3.076e-02, -1.080e-02, 9.497e-03, 2.714e-01, -1.414e-01, -6.790e-02, 1.749e-01, 7.840e-02, 2.961e-01, 2.120e-01, -3.710e-01, -1.305e-03, -1.149e-01, -6.740e-02), r);\n\tr = MulAdd(s5_8, M4(1.217e-01, 3.720e-01, -6.066e-02, -2.051e-02, 1.724e-01, 2.266e-01, 4.978e-03, 5.818e-02, -5.622e-02, -7.869e-02, 3.167e-02, 2.765e-02, -3.049e-02, -4.279e-02, 3.039e-02, 1.064e-01), r);\n\tr = MulAdd(s6_0, M4(1.905e-01, -5.906e-01, -3.203e-01, -2.408e-01, 2.004e-01, 1.413e-01, 2.745e-01, 2.631e-02, -1.010e-01, 4.333e-02, -2.646e-01, 2.150e-02, -5.612e-02, -3.617e-03, 1.065e-01, 5.784e-02), r);\n\tr = MulAdd(s6_1, M4(-6.313e-02, -4.270e-01, 1.188e-01, -8.757e-02, -8.934e-02, -4.415e-02, -1.320e-01, 5.785e-02, 2.906e-01, 9.523e-02, 1.325e-01, 3.187e-02, -3.050e-02, 2.539e-02, -9.284e-03, -2.695e-02), r);\n\tr = MulAdd(s6_2, M4(3.490e-02, 6.192e-02, 7.606e-02, -6.606e-02, -6.879e-02, 6.426e-02, -2.263e-02, -2.917e-02, 5.522e-02, 9.662e-02, 9.221e-02, -3.130e-02, -6.562e-02, -8.454e-02, 4.558e-02, 3.649e-02), r);\n\tr = MulAdd(s6_3, M4(-2.788e-01, -1.476e-01, -3.335e-01, -1.557e-01, 9.530e-02, -1.893e-01, 4.636e-01, -8.215e-02, -3.601e-01, 1.247e-01, -3.906e-01, 6.218e-02, 6.371e-02, 8.757e-02, 1.279e-01, -6.788e-02), r);\n\tr = MulAdd(s6_4, M4(-3.870e-01, -3.416e-01, 6.768e-01, -1.327e-01, -4.949e-02, -2.135e-01, -3.057e-01, 5.377e-01, -1.211e-01, 1.121e-01, 7.310e-02, -5.575e-02, 1.120e-01, 9.291e-02, -3.408e-01, 1.694e-01), r);\n\tr = MulAdd(s6_5, M4(4.870e-02, 2.610e-01, -7.851e-03, 2.329e-01, -6.136e-02, -1.045e-01, 7.367e-02, -9.340e-02, 2.040e-01, -6.531e-02, 1.480e-01, -4.656e-02, 1.423e-01, -9.352e-03, 1.209e-01, 7.090e-03), r);\n\tr = MulAdd(s6_6, M4(-1.423e-01, -4.668e-01, -2.745e-01, -2.214e-02, -6.964e-02, -6.048e-02, 2.676e-01, -7.026e-03, -1.628e-01, 1.677e-01, -2.451e-01, -1.609e-02, -7.104e-02, 1.026e-01, 7.345e-02, -7.246e-02), r);\n\tr = MulAdd(s6_7, M4(-2.397e-01, 5.067e-02, -2.079e-01, 2.579e-02, 2.359e-02, -3.813e-02, -3.910e-02, -2.711e-03, -4.485e-02, 6.503e-02, 1.338e-01, 1.947e-02, -5.614e-02, -1.120e-01, -6.167e-02, -7.495e-02), r);\n\tr = MulAdd(s6_8, M4(-2.891e-02, 9.384e-02, 1.046e-01, 1.467e-01, 5.332e-02, -7.476e-03, 2.731e-02, -6.231e-02, -3.199e-02, 4.240e-02, -8.893e-04, 8.002e-02, 3.404e-02, -7.099e-03, -4.124e-02, 1.343e-01), r);\n\tr = MulAdd(s7_0, M4(6.439e-03, -3.159e-02, -7.080e-02, -2.024e-02, -2.219e-01, -1.744e-01, -2.094e-01, 9.819e-02, -2.095e-01, 5.943e-02, -1.185e-01, 6.477e-02, 1.859e-01, 1.926e-01, 3.075e-02, -9.657e-02), r);\n\tr = MulAdd(s7_1, M4(3.378e-02, -8.277e-02, 5.498e-03, 2.163e-02, -3.447e-01, 1.273e-02, 1.832e-01, -3.245e-01, 1.922e-01, -2.858e-01, -2.330e-02, 4.936e-02, -3.989e-02, 2.286e-01, -2.226e-01, -4.291e-02), r);\n\tr = MulAdd(s7_2, M4(1.610e-01, -4.787e-02, 1.686e-01, -9.226e-03, -1.239e-02, 6.896e-02, 4.769e-02, -1.828e-01, -1.080e-01, 1.338e-01, 8.961e-04, -4.600e-03, 3.174e-01, 1.484e-01, 6.866e-02, 1.677e-01), r);\n\tr = MulAdd(s7_3, M4(-2.186e-01, 1.113e-01, -1.255e-01, -1.763e-01, 5.137e-01, -2.105e-01, 3.290e-01, 5.426e-02, 3.304e-01, 1.222e-01, -3.562e-01, -4.745e-02, -2.218e-01, -1.034e-01, 3.933e-01, -2.037e-01), r);\n\tr = MulAdd(s7_4, M4(1.024e-01, -1.234e-01, 8.316e-02, -1.358e-02, 2.174e-01, 2.707e-01, -1.130e-01, -2.329e-01, 6.534e-02, -2.604e-01, 4.130e-03, -9.019e-02, -4.505e-01, 2.406e-01, -3.111e-01, 6.225e-03), r);\n\tr = MulAdd(s7_5, M4(5.314e-02, -7.235e-02, 5.180e-02, 2.898e-01, -4.080e-02, -2.012e-02, 5.062e-02, 1.625e-02, -5.302e-02, 6.459e-02, 5.811e-02, 8.758e-02, 6.558e-02, -3.686e-01, 3.314e-02, -4.048e-02), r);\n\tr = MulAdd(s7_6, M4(-1.078e-01, -3.606e-03, -4.979e-02, -1.336e-01, 3.099e-01, -1.052e-02, 1.959e-01, 4.290e-02, 2.026e-01, -2.581e-02, 2.090e-02, -2.610e-01, 1.948e-01, 2.015e-02, 3.395e-02, -1.098e-01), r);\n\tr = MulAdd(s7_7, M4(-5.818e-02, 6.125e-02, -8.358e-02, -9.321e-02, -9.888e-02, -3.231e-02, -1.697e-01, -1.265e-01, 3.775e-01, -1.196e-01, -3.976e-02, 3.943e-01, 2.197e-01, 2.273e-01, 6.525e-02, 1.704e-01), r);\n\tr = MulAdd(s7_8, M4(5.946e-02, 1.244e-02, 7.324e-02, 6.264e-02, 6.809e-02, 1.185e-01, -4.188e-02, 9.021e-02, 6.260e-02, -1.134e-01, -2.057e-02, 1.018e-01, -2.984e-01, -5.999e-02, 7.880e-02, 2.304e-01), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.099e-03, -1.032e-02, 3.082e-02, 1.035e-02 };\n\tr = MulAdd(s0_0, M4(2.212e-01, 2.454e-01, -1.446e-01, 1.203e-01, -4.809e-02, 4.895e-03, 2.550e-02, 3.495e-02, -3.779e-02, 2.177e-02, -5.566e-02, 6.897e-02, -4.681e-02, 6.815e-03, -6.666e-02, -4.678e-02), r);\n\tr = MulAdd(s0_1, M4(-4.755e-01, 2.214e-01, -4.025e-02, -1.050e-01, 1.359e-01, -3.377e-03, -1.989e-02, 5.404e-02, -2.671e-03, -8.268e-02, 7.647e-02, 4.717e-02, -1.557e-02, -5.494e-02, 1.315e-01, -6.446e-03), r);\n\tr = MulAdd(s0_2, M4(-2.166e-01, -3.459e-01, 1.548e-01, -1.338e-01, -1.053e-02, 2.242e-01, -8.194e-02, 9.585e-02, -6.271e-02, 1.752e-01, -8.877e-03, 9.082e-02, 1.508e-02, -1.941e-02, 1.588e-02, 3.329e-02), r);\n\tr = MulAdd(s0_3, M4(2.467e-01, 2.249e-01, 1.149e-02, -7.518e-02, 3.673e-03, -9.865e-02, 4.413e-02, 1.193e-01, 1.032e-01, 1.033e-01, -8.545e-02, 2.160e-01, -5.246e-02, -1.470e-01, 1.206e-02, -1.987e-02), r);\n\tr = MulAdd(s0_4, M4(6.004e-02, -8.828e-02, -1.406e-01, -4.759e-03, 8.425e-02, 6.162e-02, -6.374e-02, -3.446e-02, -6.185e-02, 1.739e-02, -9.953e-02, 1.651e-01, -3.235e-02, -7.202e-02, 6.607e-02, 4.503e-02), r);\n\tr = MulAdd(s0_5, M4(-8.011e-02, -1.428e-02, 8.263e-01, 1.851e-02, -1.110e-01, -1.280e-01, -6.627e-02, 2.972e-02, 5.936e-04, 1.779e-02, -1.123e-01, 4.516e-02, 5.523e-02, 1.052e-01, -2.980e-02, -1.024e-01), r);\n\tr = MulAdd(s0_6, M4(-1.973e-01, -3.293e-01, 4.685e-02, -4.712e-02, 3.160e-02, -1.253e-01, 8.609e-03, -1.802e-01, 6.503e-02, -3.227e-02, 6.668e-02, -3.067e-02, -2.189e-01, 2.032e-01, -1.786e-02, -1.548e-01), r);\n\tr = MulAdd(s0_7, M4(-7.875e-03, -2.037e-01, -2.293e-01, -1.999e-01, 1.738e-02, -1.747e-01, 7.696e-02, 1.080e-01, -1.258e-01, -1.728e-02, 5.457e-02, 2.354e-01, 1.137e-01, 8.128e-02, -8.535e-02, -1.716e-01), r);\n\tr = MulAdd(s0_8, M4(-1.705e-01, 1.495e-01, 1.148e-01, -3.005e-02, -1.323e-01, 2.338e-01, 1.695e-02, 7.834e-02, -1.096e-01, -2.646e-02, -9.663e-02, 1.223e-02, 3.244e-01, 2.172e-01, -6.180e-02, -1.141e-01), r);\n\tr = MulAdd(s1_0, M4(2.153e-01, 2.090e-01, 7.578e-03, 8.058e-02, -3.850e-02, -4.181e-02, 3.850e-02, -5.033e-02, -4.772e-02, 1.897e-01, 1.058e-02, 1.598e-01, -4.700e-02, 2.071e-01, 7.882e-02, 9.560e-02), r);\n\tr = MulAdd(s1_1, M4(-1.755e-01, 5.417e-02, -1.480e-03, 6.746e-02, 1.306e-01, 2.608e-02, 1.655e-01, -2.009e-01, -6.070e-03, 1.411e-01, 1.808e-03, -1.645e-01, 2.538e-02, 6.212e-03, 1.568e-02, -1.292e-01), r);\n\tr = MulAdd(s1_2, M4(4.012e-02, -9.499e-02, 6.889e-02, 1.433e-03, -1.366e-02, -1.862e-02, -3.913e-03, -6.391e-02, -1.184e-01, -8.437e-02, -7.939e-02, 7.770e-02, -1.310e-01, -5.947e-02, -2.605e-02, 2.056e-01), r);\n\tr = MulAdd(s1_3, M4(-5.553e-02, -8.364e-02, -4.346e-02, -6.295e-02, -2.389e-01, -1.519e-01, 3.629e-02, -1.357e-01, 1.861e-01, 4.494e-02, -7.831e-02, -1.440e-01, 8.470e-02, 2.375e-01, -5.131e-02, 8.162e-02), r);\n\tr = MulAdd(s1_4, M4(-1.542e-02, -2.632e-01, 5.705e-04, -8.803e-03, 3.299e-01, 2.544e-01, 6.760e-02, 1.361e-01, -1.028e-01, 1.969e-01, -5.706e-02, -3.219e-02, -1.354e-01, -9.802e-02, 5.579e-03, -1.029e-01), r);\n\tr = MulAdd(s1_5, M4(8.236e-03, 4.757e-02, -1.364e-01, 8.383e-02, -5.845e-02, 1.069e-02, 9.025e-02, -1.442e-01, 2.297e-01, -9.455e-03, 1.582e-01, -1.652e-01, -1.464e-01, 2.857e-02, -7.026e-03, 1.508e-02), r);\n\tr = MulAdd(s1_6, M4(-5.483e-02, 1.512e-01, -6.832e-02, 2.700e-02, 9.996e-02, 7.300e-02, -7.276e-02, 6.971e-04, 2.286e-01, 7.757e-03, 1.104e-01, -4.327e-02, 2.467e-01, -1.336e-01, -1.043e-01, -2.068e-01), r);\n\tr = MulAdd(s1_7, M4(1.299e-02, -4.620e-02, 5.300e-02, -7.250e-02, -1.643e-01, 6.016e-02, 3.074e-02, -1.602e-03, -1.272e-01, -1.616e-01, 3.392e-02, -1.739e-01, -1.736e-01, -3.615e-01, 9.518e-02, 3.172e-02), r);\n\tr = MulAdd(s1_8, M4(1.366e-01, 2.474e-02, 1.869e-02, -7.502e-02, -1.707e-01, 6.866e-03, 1.730e-02, -3.564e-01, -1.743e-02, 2.640e-01, -7.773e-02, -1.156e-01, -1.503e-01, 2.721e-01, -5.628e-02, 7.231e-02), r);\n\tr = MulAdd(s2_0, M4(5.409e-02, 2.008e-01, -1.055e-02, 2.275e-02, 5.160e-02, -3.948e-02, 8.856e-03, 6.052e-02, 1.490e-01, 1.651e-02, -5.934e-02, 1.815e-01, 2.453e-01, 6.284e-03, -7.930e-02, 1.752e-02), r);\n\tr = MulAdd(s2_1, M4(-1.884e-01, 2.381e-01, 6.626e-02, 4.132e-02, 1.137e-01, 5.828e-02, -1.162e-01, -1.047e-01, 1.733e-01, 9.714e-02, 1.684e-02, -4.726e-03, -4.425e-02, 1.308e-01, -4.460e-02, -5.757e-02), r);\n\tr = MulAdd(s2_2, M4(-1.542e-01, -3.185e-02, 9.634e-02, -1.251e-01, 1.490e-02, -2.816e-02, -1.006e-02, 4.482e-02, 2.626e-01, 2.221e-01, -1.039e-01, 2.020e-01, 2.064e-01, 8.088e-02, 9.808e-02, -2.205e-02), r);\n\tr = MulAdd(s2_3, M4(-1.850e-01, -1.351e-01, -2.917e-02, -8.903e-02, 9.033e-02, 1.841e-01, -8.272e-02, 5.601e-02, 1.014e-01, -2.128e-02, 2.091e-03, 2.212e-01, 7.023e-02, 1.933e-01, -2.272e-01, -3.150e-01), r);\n\tr = MulAdd(s2_4, M4(-1.211e-01, -2.385e-01, -6.887e-02, -6.697e-02, 7.170e-02, 1.047e-01, -2.363e-02, -9.154e-02, 9.584e-02, -3.987e-02, -2.447e-01, 1.670e-01, 4.113e-02, -2.052e-01, -4.104e-02, -4.027e-02), r);\n\tr = MulAdd(s2_5, M4(-1.085e-01, -8.478e-02, 2.455e-02, -1.240e-01, 5.816e-02, -2.644e-01, 1.125e-01, 2.009e-02, -1.308e-01, -1.138e-01, -4.613e-02, -1.862e-01, -9.501e-02, -9.699e-02, 3.395e-01, 5.730e-02), r);\n\tr = MulAdd(s2_6, M4(6.815e-02, -2.550e-01, 2.668e-02, 3.038e-01, -5.298e-02, -2.368e-01, -2.784e-02, 5.199e-02, -4.197e-02, 1.275e-01, -2.058e-02, -5.542e-02, 2.150e-01, -7.770e-02, -8.895e-03, 7.471e-02), r);\n\tr = MulAdd(s2_7, M4(-4.084e-01, -4.059e-02, 1.784e-02, 2.544e-01, -1.274e-01, -3.351e-01, 1.204e-01, -1.889e-01, -1.438e-01, 1.072e-01, 5.287e-02, -2.757e-01, -5.043e-02, 2.986e-02, -1.980e-01, 7.566e-02), r);\n\tr = MulAdd(s2_8, M4(-6.861e-03, 2.390e-01, 1.255e-01, 5.195e-02, -3.367e-01, -1.951e-01, -5.925e-02, 2.316e-01, -2.390e-01, 2.294e-01, -7.012e-02, -5.888e-02, -1.562e-01, -2.314e-02, 5.731e-02, 7.487e-02), r);\n\tr = MulAdd(s3_0, M4(-4.302e-02, 2.332e-03, -8.797e-02, -7.757e-03, 6.083e-02, 2.518e-03, -1.708e-02, 4.168e-02, -8.930e-02, -1.290e-01, -1.024e-01, -5.323e-02, -2.374e-01, -8.708e-02, -8.992e-02, 6.791e-02), r);\n\tr = MulAdd(s3_1, M4(1.011e-01, 4.688e-02, -4.851e-02, 5.773e-02, -2.069e-02, 3.742e-02, -2.873e-02, 5.670e-02, -4.502e-02, -1.294e-01, 4.502e-03, -2.117e-02, 3.284e-01, 1.058e-01, 5.544e-02, 1.677e-02), r);\n\tr = MulAdd(s3_2, M4(-3.529e-02, 3.277e-02, 4.281e-02, -1.646e-01, -1.416e-01, 5.331e-02, 3.031e-02, -9.500e-02, -1.216e-01, -9.459e-02, 3.225e-02, 1.333e-01, 6.765e-02, 1.066e-01, -1.228e-01, 8.375e-02), r);\n\tr = MulAdd(s3_3, M4(2.865e-02, 6.776e-02, -1.468e-01, 1.705e-02, 1.683e-01, 2.070e-01, -5.935e-03, 2.404e-01, 5.563e-03, -1.044e-01, -4.681e-02, -6.475e-02, 1.726e-01, -8.206e-02, -8.217e-02, 1.699e-01), r);\n\tr = MulAdd(s3_4, M4(-1.561e-01, 1.354e-01, 1.323e-01, -1.370e-01, -1.199e-01, -1.138e-01, 8.551e-03, 7.738e-02, 2.900e-01, 2.553e-01, 1.056e-02, -3.161e-02, -2.244e-01, -8.941e-02, -3.090e-02, 1.149e-01), r);\n\tr = MulAdd(s3_5, M4(1.853e-01, -1.157e-01, 3.784e-03, -1.762e-02, -2.290e-01, 2.807e-02, 4.872e-02, -1.992e-01, -2.161e-01, 2.253e-01, -1.192e-01, 1.535e-01, -9.834e-02, 1.402e-02, -2.921e-02, 1.029e-01), r);\n\tr = MulAdd(s3_6, M4(-6.681e-02, -2.734e-02, -7.752e-02, 1.202e-01, -6.007e-02, 1.529e-01, -1.549e-02, 3.140e-01, 5.553e-02, 5.046e-02, -3.036e-02, 1.311e-02, 1.555e-01, 1.706e-01, 1.118e-02, -9.797e-02), r);\n\tr = MulAdd(s3_7, M4(-1.464e-01, 1.390e-01, -1.009e-01, 1.939e-01, 8.315e-02, 7.123e-02, -1.456e-01, -3.606e-02, -1.194e-01, 2.929e-02, 1.934e-01, -4.639e-02, 1.440e-01, -9.890e-02, 1.106e-01, -2.761e-01), r);\n\tr = MulAdd(s3_8, M4(1.840e-01, -1.987e-01, 3.754e-02, 1.706e-01, 2.631e-02, -1.048e-01, -7.390e-02, -2.744e-01, 3.353e-01, -3.437e-01, -2.453e-02, -1.555e-02, 2.551e-02, -1.634e-01, -3.265e-02, -4.991e-02), r);\n\tr = MulAdd(s4_0, M4(-1.614e-01, 3.217e-02, 2.040e-02, -5.201e-02, 1.162e-01, 7.774e-02, 5.804e-02, 5.019e-02, -1.326e-01, -8.524e-02, 4.765e-03, -3.015e-01, -3.097e-01, 6.249e-01, -4.764e-01, -1.097e-01), r);\n\tr = MulAdd(s4_1, M4(2.482e-01, -7.808e-02, 4.798e-02, -2.799e-02, 3.943e-02, 3.450e-01, 8.065e-02, 2.050e-01, -5.876e-02, -1.702e-01, -1.998e-01, -4.602e-01, -6.030e-01, -7.888e-01, -1.939e-01, -7.929e-01), r);\n\tr = MulAdd(s4_2, M4(5.042e-02, 3.316e-02, 1.540e-01, 7.098e-02, 7.762e-02, -1.345e-02, -6.667e-02, 7.275e-02, -2.205e-01, 5.857e-02, -4.728e-02, -3.452e-02, -2.423e-02, -2.893e-01, -5.288e-01, 4.894e-01), r);\n\tr = MulAdd(s4_3, M4(2.116e-02, -6.328e-02, -3.709e-02, 5.392e-02, 6.060e-02, 2.983e-02, -2.665e-02, -2.008e-01, 1.694e-02, -3.005e-01, 1.903e-01, 2.144e-02, -2.694e-02, -1.083e+00, 2.387e-01, -2.326e-01), r);\n\tr = MulAdd(s4_4, M4(-4.878e-02, -1.432e-01, 9.417e-02, 3.703e-02, -2.023e-01, -2.737e-02, 4.717e-02, -1.997e-01, 1.266e-01, -1.233e-02, -1.508e-01, -1.969e-02, 5.024e-01, -1.841e-01, -1.062e+00, -1.704e-01), r);\n\tr = MulAdd(s4_5, M4(8.148e-02, -3.165e-02, -4.487e-02, -1.383e-02, 1.128e-01, -1.619e-01, -2.010e-02, 2.163e-02, -2.844e-02, -7.585e-02, -7.373e-02, 2.590e-02, 1.708e-01, 2.063e-01, -9.584e-01, 2.464e-01), r);\n\tr = MulAdd(s4_6, M4(-2.254e-01, 5.652e-02, 8.183e-02, 1.288e-01, -4.934e-02, -2.113e-01, 2.622e-02, -1.164e-01, -3.864e-01, -2.177e-02, -3.944e-03, 1.932e-01, -4.718e-01, 1.481e-01, -3.146e-01, -7.798e-01), r);\n\tr = MulAdd(s4_7, M4(1.397e-01, 7.781e-04, -7.422e-02, -8.363e-04, -3.861e-02, 2.361e-01, -5.971e-02, -5.968e-02, 4.388e-01, 6.492e-02, -2.985e-02, -2.851e-01, 4.776e-01, -2.561e-01, -3.868e-01, -7.250e-01), r);\n\tr = MulAdd(s4_8, M4(8.290e-02, 1.899e-01, 8.968e-02, -8.672e-02, 1.264e-01, -1.086e-01, 3.075e-02, 1.026e-01, -3.738e-01, -1.710e-02, -1.849e-01, 3.125e-01, 1.557e-02, 1.924e-01, -5.640e-01, 4.823e-01), r);\n\tr = MulAdd(s5_0, M4(-2.199e-01, -2.204e-01, -3.381e-02, -8.068e-02, -7.093e-02, 3.299e-02, -3.280e-02, -2.355e-02, 6.614e-02, -2.524e-02, -6.671e-03, -2.634e-02, -4.228e-02, 8.667e-02, -1.000e-02, 2.644e-02), r);\n\tr = MulAdd(s5_1, M4(4.993e-02, 8.674e-02, 1.256e-02, 3.661e-02, -5.597e-02, -3.691e-02, 1.224e-01, -1.100e-03, -2.995e-02, -5.264e-02, 2.138e-02, -5.663e-02, 7.679e-02, -3.386e-02, 2.181e-02, -7.541e-02), r);\n\tr = MulAdd(s5_2, M4(2.458e-02, -5.279e-01, 6.858e-02, -6.139e-02, 2.203e-01, 1.888e-01, 5.875e-02, 2.987e-02, 5.732e-02, 1.023e-01, -8.229e-03, 4.815e-02, 5.105e-02, -4.501e-05, 3.425e-02, 2.668e-02), r);\n\tr = MulAdd(s5_3, M4(8.183e-02, -2.298e-02, -4.129e-02, 9.875e-02, 4.211e-02, -1.205e-01, 8.649e-02, -2.774e-02, 1.283e-01, -7.503e-02, 1.555e-01, -4.780e-02, -1.808e-01, -5.178e-02, 9.190e-02, -9.965e-02), r);\n\tr = MulAdd(s5_4, M4(-4.966e-01, -7.886e-02, 5.324e-02, -1.069e-01, -1.466e-01, -1.293e-01, -1.252e-01, 5.233e-02, 1.714e-01, -5.468e-02, 9.061e-02, 5.902e-02, -6.234e-02, -6.380e-02, -7.879e-02, -1.139e-01), r);\n\tr = MulAdd(s5_5, M4(-4.539e-01, -1.093e-01, -3.171e-01, 8.606e-02, 3.207e-02, -3.530e-01, -3.926e-02, 1.447e-01, -1.871e-01, 1.184e-01, 1.986e-01, -1.303e-01, 9.940e-02, -1.997e-02, -7.409e-02, 1.339e-01), r);\n\tr = MulAdd(s5_6, M4(6.859e-02, 1.065e-01, -6.674e-02, -7.343e-02, -2.186e-02, -1.898e-02, 8.683e-02, -2.241e-01, -1.526e-01, -1.297e-01, 1.090e-01, 1.081e-01, -1.008e-01, -2.101e-02, -2.802e-02, -5.817e-03), r);\n\tr = MulAdd(s5_7, M4(-2.935e-01, 2.552e-01, -1.772e-01, -3.008e-02, 2.061e-02, 1.602e-01, -1.067e-01, -1.088e-01, -9.616e-02, -4.000e-03, -1.740e-01, 1.931e-02, 1.135e-01, -1.029e-02, -2.060e-01, 1.138e-01), r);\n\tr = MulAdd(s5_8, M4(2.994e-01, -1.938e-01, -3.579e-02, -3.688e-01, 1.932e-01, 7.019e-02, -5.929e-02, 5.967e-02, -6.230e-02, 2.406e-01, -1.282e-01, 4.323e-02, 5.835e-02, -9.893e-02, -2.381e-02, 1.695e-02), r);\n\tr = MulAdd(s6_0, M4(-1.354e-01, -3.961e-02, 6.492e-02, -8.158e-02, -4.522e-02, -1.466e-01, 1.229e-01, 1.025e-01, -1.393e-01, 1.328e-01, 5.425e-02, -9.843e-02, -6.086e-02, -9.741e-02, 8.276e-02, 1.117e-01), r);\n\tr = MulAdd(s6_1, M4(2.726e-01, -1.876e-02, -7.329e-02, 6.114e-03, 1.353e-01, 6.079e-02, -1.053e-01, 9.964e-03, 6.344e-02, 1.528e-01, -4.556e-02, -2.029e-01, -7.652e-02, -7.684e-02, 2.392e-02, -8.908e-02), r);\n\tr = MulAdd(s6_2, M4(1.107e-01, 1.692e-01, 8.991e-02, 6.804e-03, 1.382e-01, 1.504e-01, 6.543e-02, 1.005e-02, 1.183e-01, -6.809e-02, -6.099e-03, 8.215e-02, 1.307e-01, -4.720e-02, -4.203e-02, 8.069e-02), r);\n\tr = MulAdd(s6_3, M4(-2.380e-01, -7.450e-02, 9.634e-02, -1.225e-01, -1.447e-01, 1.746e-03, -6.290e-02, 9.689e-02, 5.720e-03, -5.844e-02, 2.926e-02, -1.172e-02, -2.900e-01, -5.345e-02, 1.743e-02, -1.469e-01), r);\n\tr = MulAdd(s6_4, M4(1.879e-01, 2.363e-01, 5.324e-02, 5.700e-03, -1.848e-01, 4.805e-02, -2.434e-01, -1.537e-01, 1.913e-01, 1.772e-01, -1.126e-01, -1.782e-01, -2.319e-01, -2.431e-01, 2.707e-01, -9.524e-02), r);\n\tr = MulAdd(s6_5, M4(-1.009e-01, 2.484e-01, -1.493e-02, -2.903e-02, -2.510e-01, -2.396e-01, 1.763e-02, -2.132e-02, 1.837e-01, 1.076e-01, -1.937e-01, 2.437e-01, -1.143e-01, -1.318e-01, 1.889e-01, -4.204e-02), r);\n\tr = MulAdd(s6_6, M4(5.626e-02, 5.041e-03, -5.609e-02, -3.812e-02, 7.537e-02, 1.685e-02, 2.526e-02, 4.571e-02, -1.270e-01, 2.408e-02, 6.618e-02, -1.684e-01, 1.652e-01, -2.247e-02, 3.996e-02, 1.444e-01), r);\n\tr = MulAdd(s6_7, M4(-4.078e-02, 4.302e-03, 2.513e-02, -1.440e-01, 2.091e-01, -1.047e-01, 7.912e-02, -5.481e-02, 1.110e-02, -8.656e-02, -1.186e-01, 5.608e-02, 3.072e-01, 3.693e-02, 5.291e-03, -1.331e-01), r);\n\tr = MulAdd(s6_8, M4(2.316e-01, -1.662e-01, -3.324e-02, 4.843e-02, 9.420e-02, 1.201e-01, 2.672e-01, -1.255e-01, -8.873e-02, -1.695e-01, -7.646e-02, 2.508e-01, 1.432e-02, 1.685e-01, 4.257e-03, 1.293e-02), r);\n\tr = MulAdd(s7_0, M4(-1.156e-01, 2.078e-02, 7.249e-02, -4.292e-02, -2.089e-01, -3.016e-02, -5.166e-02, -2.298e-02, 1.414e-01, 5.890e-02, 2.651e-02, -6.890e-03, 6.678e-02, 1.153e-01, -2.381e-01, -1.701e-01), r);\n\tr = MulAdd(s7_1, M4(-8.216e-02, -1.252e-01, -9.205e-02, -2.337e-02, 6.869e-02, 6.252e-02, 2.805e-03, 2.468e-03, -1.468e-01, -2.906e-01, 1.110e-01, 1.351e-01, -3.282e-01, -2.939e-02, -4.672e-02, 5.490e-02), r);\n\tr = MulAdd(s7_2, M4(-3.332e-02, -5.059e-02, -6.004e-03, -1.088e-01, -1.242e-01, -1.408e-01, 1.822e-01, 7.609e-02, 1.225e-01, 5.925e-02, 6.622e-02, 1.194e-01, -4.135e-02, 2.762e-02, 2.292e-02, 3.052e-02), r);\n\tr = MulAdd(s7_3, M4(1.758e-02, 1.008e-01, -2.348e-02, 8.004e-02, 2.981e-02, -2.197e-01, 1.005e-01, -1.421e-01, 8.495e-02, -1.553e-01, -1.481e-02, 6.916e-02, 3.988e-02, 2.724e-01, 1.441e-01, 1.326e-01), r);\n\tr = MulAdd(s7_4, M4(1.742e-02, -7.544e-02, -3.567e-02, 1.585e-01, 3.817e-01, -6.355e-01, 7.750e-02, 6.887e-02, -1.694e-01, -7.131e-02, -2.473e-02, 2.996e-01, 1.122e-01, 2.002e-01, -1.043e-01, 1.335e-01), r);\n\tr = MulAdd(s7_5, M4(-1.301e-01, 1.746e-01, 4.739e-02, 1.297e-01, 1.039e-01, -1.531e-01, -1.170e-03, -2.399e-01, -1.084e-01, 2.192e-02, 1.281e-01, 4.687e-01, -4.872e-02, 3.747e-02, 1.742e-02, -7.458e-02), r);\n\tr = MulAdd(s7_6, M4(1.210e-02, 2.003e-03, 5.535e-02, -5.994e-02, -2.231e-02, 1.939e-01, 1.085e-01, -2.014e-01, -4.221e-02, 5.293e-02, 6.648e-02, 1.168e-01, 2.498e-01, 2.621e-03, -7.611e-02, 3.010e-01), r);\n\tr = MulAdd(s7_7, M4(-1.793e-02, -1.727e-02, -9.524e-02, 1.842e-01, 8.004e-02, 6.735e-02, 2.665e-01, 6.073e-02, 1.393e-01, 2.396e-03, 7.789e-02, -6.060e-02, 6.975e-02, -2.149e-01, -6.495e-02, 2.075e-01), r);\n\tr = MulAdd(s7_8, M4(1.462e-01, -1.483e-01, 5.319e-02, 1.039e-01, -3.684e-01, 5.993e-01, 4.945e-02, 2.637e-02, 1.762e-01, -2.052e-01, 1.416e-02, 3.124e-02, 4.168e-02, 3.415e-02, 2.557e-02, -1.337e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.497e-02, -1.151e-02, 1.197e-02, 4.981e-03 };\n\tr = MulAdd(s0_0, M4(1.907e-02, -1.632e-01, 2.621e-01, 4.495e-01, 2.450e-01, -7.969e-02, -9.695e-02, -5.663e-03, 3.399e-01, -1.211e-01, 2.122e-02, 1.645e-01, -2.607e-02, 3.828e-02, 4.675e-02, 7.656e-02), r);\n\tr = MulAdd(s0_1, M4(-1.433e-01, 4.079e-02, -3.504e-02, 8.135e-03, -8.809e-02, 5.904e-02, -1.062e-01, -1.113e-01, 1.678e-01, 1.022e-01, 1.594e-02, 1.814e-02, -4.683e-02, -5.523e-02, -5.405e-04, 2.947e-03), r);\n\tr = MulAdd(s0_2, M4(4.109e-01, 5.408e-01, -3.117e-02, -1.181e-01, 1.400e-02, 2.948e-02, 3.592e-02, -5.692e-02, -2.324e-02, 1.214e-01, 7.887e-02, 5.319e-02, -2.901e-02, -3.335e-02, 2.581e-02, -3.054e-02), r);\n\tr = MulAdd(s0_3, M4(7.100e-02, 1.275e-01, -1.635e-01, 8.014e-02, -1.194e-01, 1.243e-01, -1.275e-01, 7.479e-02, 7.746e-02, 7.278e-02, -1.005e-01, 1.226e-01, 2.339e-01, -5.814e-02, 6.769e-03, 2.113e-01), r);\n\tr = MulAdd(s0_4, M4(-1.694e-01, -4.253e-01, -8.214e-02, 4.835e-01, -2.095e-01, -6.991e-02, 2.059e-01, 3.859e-02, 7.947e-02, -3.136e-01, -2.686e-01, 2.411e-02, -1.857e-02, 1.003e-01, 1.938e-03, -7.732e-02), r);\n\tr = MulAdd(s0_5, M4(-1.707e-01, 2.349e-02, -2.010e-01, -9.759e-02, -5.680e-02, 1.641e-02, 6.537e-02, 5.386e-02, -7.561e-02, 1.374e-01, 4.763e-02, 4.752e-02, -1.764e-02, 4.048e-02, -9.938e-02, -8.344e-02), r);\n\tr = MulAdd(s0_6, M4(2.419e-01, -7.465e-01, 1.612e-01, -7.485e-02, -5.591e-03, -1.207e-01, 3.387e-02, -4.188e-02, -9.178e-02, -8.270e-02, -7.268e-02, 1.242e-01, 2.741e-01, 1.636e-01, -5.916e-02, 1.017e-01), r);\n\tr = MulAdd(s0_7, M4(-1.365e-02, 1.412e-01, -2.887e-01, -7.540e-02, 7.596e-02, 4.870e-02, 3.877e-02, 6.815e-02, -1.386e-01, -2.262e-02, -2.122e-02, 7.128e-02, -1.927e-01, 3.095e-02, -1.590e-01, 1.062e-01), r);\n\tr = MulAdd(s0_8, M4(1.916e-01, -2.455e-01, 7.014e-02, -1.270e-02, 5.769e-02, -2.310e-02, 7.511e-02, 7.148e-02, -4.717e-02, 5.066e-02, 1.695e-01, 7.793e-02, 1.294e-01, 1.100e-01, -1.557e-01, -4.429e-02), r);\n\tr = MulAdd(s1_0, M4(1.231e-01, 1.075e-02, 5.984e-02, 1.041e-02, -3.679e-01, 7.167e-03, -3.533e-02, -1.685e-01, 8.681e-02, 7.785e-02, -2.864e-02, 1.379e-01, -2.166e-01, -1.711e-01, -7.297e-02, 5.376e-02), r);\n\tr = MulAdd(s1_1, M4(-8.928e-02, 1.137e-02, 1.586e-02, 6.383e-02, 9.266e-03, 1.548e-01, -1.330e-01, -6.228e-02, 5.766e-02, 1.847e-01, -3.778e-02, 2.073e-01, 1.731e-01, 1.187e-01, 9.969e-02, -2.130e-01), r);\n\tr = MulAdd(s1_2, M4(-3.809e-02, 7.181e-02, -1.175e-01, 7.879e-03, -5.394e-02, -3.892e-02, 7.642e-02, -1.793e-01, -5.986e-02, 4.414e-02, 4.186e-03, -4.312e-02, -1.446e-02, -2.616e-02, -9.201e-02, 6.201e-02), r);\n\tr = MulAdd(s1_3, M4(-1.076e-02, 1.282e-01, -4.642e-02, 8.175e-02, 1.753e-01, 3.502e-02, -2.682e-01, 4.726e-03, 3.721e-01, -1.364e-02, -2.574e-02, 2.671e-01, -3.350e-01, -2.237e-01, -3.944e-02, -1.978e-01), r);\n\tr = MulAdd(s1_4, M4(-7.233e-02, -1.170e-01, 9.592e-02, 1.430e-01, 1.253e-01, 1.406e-01, -2.460e-01, 2.717e-01, 4.557e-01, 9.758e-03, -9.454e-02, -8.419e-02, 7.404e-02, 9.134e-02, -7.464e-04, -1.799e-01), r);\n\tr = MulAdd(s1_5, M4(-4.020e-02, -5.117e-02, -3.810e-02, -5.862e-03, 1.119e-01, -3.387e-04, 5.410e-02, 1.892e-01, -2.735e-02, -2.799e-02, -1.642e-01, -4.453e-02, 3.855e-02, 2.473e-01, 1.063e-02, 5.474e-02), r);\n\tr = MulAdd(s1_6, M4(-1.402e-02, -1.952e-01, -9.704e-03, -2.762e-04, -3.107e-02, 6.896e-03, 1.085e-01, -6.318e-02, 8.645e-03, 9.242e-02, 8.004e-02, 1.478e-01, -4.364e-01, -4.608e-02, -2.816e-02, -4.576e-02), r);\n\tr = MulAdd(s1_7, M4(1.324e-02, 1.314e-01, -2.591e-02, -1.382e-01, -9.404e-02, 1.415e-01, 6.301e-02, 2.456e-01, 1.937e-01, 1.006e-01, -2.163e-01, 2.670e-02, 4.946e-01, -8.813e-03, 3.136e-01, -4.913e-03), r);\n\tr = MulAdd(s1_8, M4(3.963e-02, -3.145e-02, 8.015e-02, 8.454e-02, 7.263e-02, 1.905e-02, -2.074e-02, 1.540e-01, 3.261e-02, -1.254e-02, -3.647e-02, -1.329e-03, -5.681e-02, 8.675e-02, 2.288e-01, 9.746e-02), r);\n\tr = MulAdd(s2_0, M4(-2.334e-01, -2.600e-01, -2.643e-02, -1.333e-01, -1.530e-01, -1.996e-03, -4.574e-02, -5.363e-02, 9.298e-02, 6.021e-02, 3.740e-02, -5.791e-03, 2.563e-01, -7.183e-02, 1.385e-01, 2.428e-01), r);\n\tr = MulAdd(s2_1, M4(-1.647e-01, -1.176e-01, -7.941e-02, -8.957e-03, 4.862e-02, 1.564e-01, 2.620e-02, -1.008e-01, -6.024e-02, -2.132e-01, -3.268e-03, -1.069e-01, 1.208e-01, 8.403e-02, 1.108e-01, 1.906e-01), r);\n\tr = MulAdd(s2_2, M4(-2.604e-02, 7.566e-04, -1.394e-01, 3.329e-03, 4.651e-03, 7.781e-02, -8.141e-02, 3.367e-02, -1.990e-01, -2.031e-01, 1.658e-02, -1.671e-02, 3.172e-02, 7.532e-02, -7.900e-02, -1.872e-01), r);\n\tr = MulAdd(s2_3, M4(-3.348e-01, -8.474e-02, -2.502e-02, -4.599e-03, -1.662e-01, -6.901e-02, -5.174e-02, 1.332e-01, -3.291e-02, 7.699e-02, 1.718e-01, 6.653e-02, 3.260e-01, 1.176e-01, 1.030e-01, 8.394e-02), r);\n\tr = MulAdd(s2_4, M4(-1.590e-01, 5.059e-02, -1.914e-01, 3.241e-01, -1.179e-01, -6.522e-02, -1.250e-01, -2.417e-01, -1.997e-01, 5.494e-02, 1.203e-01, 3.542e-01, -2.391e-01, 1.825e-01, -1.598e-01, -4.109e-02), r);\n\tr = MulAdd(s2_5, M4(8.463e-02, 2.909e-02, 5.116e-02, 5.316e-02, 4.028e-02, 3.305e-02, -4.200e-02, 3.466e-02, -1.374e-01, 4.134e-02, 1.360e-01, -2.347e-02, -8.626e-02, 8.375e-03, -8.745e-02, -1.782e-01), r);\n\tr = MulAdd(s2_6, M4(-4.684e-02, -2.580e-02, 6.509e-02, -3.403e-02, -3.545e-01, -9.629e-02, 1.430e-01, -1.666e-02, -1.962e-02, 1.495e-01, 5.942e-02, 5.085e-03, -5.955e-02, 1.693e-01, -3.783e-02, -2.697e-02), r);\n\tr = MulAdd(s2_7, M4(8.830e-02, -1.563e-01, 1.951e-01, -8.618e-02, 2.719e-01, -1.812e-01, 3.895e-01, -1.152e-01, 4.660e-02, 1.743e-01, -5.543e-03, -4.107e-02, -1.726e-01, 4.877e-02, 9.327e-02, -2.110e-02), r);\n\tr = MulAdd(s2_8, M4(2.213e-01, -7.418e-02, 3.567e-02, 5.040e-02, 3.594e-02, -3.393e-02, 5.708e-02, -5.244e-02, 1.290e-01, -4.411e-02, -1.165e-01, 7.365e-02, -4.063e-02, 2.345e-01, -2.177e-01, -9.990e-03), r);\n\tr = MulAdd(s3_0, M4(-1.619e-01, -7.468e-02, 9.396e-03, 9.876e-03, 1.080e-01, 6.918e-02, 3.217e-02, 2.366e-02, 1.652e-01, 1.072e-01, -2.474e-02, 1.887e-02, -1.703e-01, 8.238e-02, -7.572e-02, -5.797e-03), r);\n\tr = MulAdd(s3_1, M4(1.951e-01, 1.886e-01, 2.757e-02, 5.847e-02, -5.980e-02, -4.676e-02, -3.278e-02, 8.578e-02, -2.480e-01, -5.365e-02, -4.106e-02, -1.306e-01, 9.232e-02, -1.016e-01, 5.433e-02, -1.421e-01), r);\n\tr = MulAdd(s3_2, M4(4.314e-02, 6.689e-02, -1.937e-01, 1.043e-01, 2.926e-02, 2.950e-02, 4.578e-02, -2.616e-02, 4.214e-02, -7.447e-02, 6.302e-02, -6.889e-02, 7.305e-03, -7.965e-02, 6.470e-02, 2.100e-02), r);\n\tr = MulAdd(s3_3, M4(7.317e-02, 9.556e-02, 3.596e-02, -5.933e-02, 3.440e-01, 7.869e-02, 2.328e-02, 1.309e-02, 1.867e-01, 4.689e-02, -3.954e-02, -2.069e-01, -5.222e-02, -7.956e-02, 1.548e-01, 7.688e-02), r);\n\tr = MulAdd(s3_4, M4(7.289e-02, 5.660e-03, 5.053e-02, -4.467e-02, -2.159e-01, 4.814e-02, -7.589e-02, -6.821e-02, 7.689e-02, 4.093e-02, 1.302e-02, 2.377e-01, 1.480e-01, 1.310e-01, -4.508e-02, -2.226e-01), r);\n\tr = MulAdd(s3_5, M4(-9.152e-02, -7.684e-02, -2.148e-01, 9.026e-02, 9.941e-03, 6.244e-03, 1.108e-01, 1.261e-02, 5.612e-02, 1.847e-01, -2.409e-01, 3.319e-01, -6.235e-02, -7.327e-02, 7.389e-02, 4.743e-02), r);\n\tr = MulAdd(s3_6, M4(2.987e-02, -1.183e-01, -6.748e-02, -2.711e-02, 2.086e-01, -6.959e-02, 1.568e-01, -5.467e-02, 5.666e-02, -1.374e-02, 1.058e-01, -1.353e-02, 4.040e-02, -4.324e-02, -1.479e-02, 1.396e-01), r);\n\tr = MulAdd(s3_7, M4(-2.289e-01, 2.539e-01, -9.910e-02, 8.551e-02, -2.529e-01, 1.199e-01, 5.722e-01, 2.933e-01, -1.577e-01, -1.241e-01, 1.151e-01, 7.669e-02, -3.677e-02, 2.457e-02, 7.805e-02, 1.246e-01), r);\n\tr = MulAdd(s3_8, M4(-2.348e-01, -7.462e-02, 3.307e-02, -1.614e-01, 1.204e-01, -1.886e-01, 6.438e-02, -1.010e-01, 4.648e-02, 1.065e-01, -5.959e-02, -4.188e-02, 2.160e-02, -7.793e-02, -7.079e-02, -1.110e-01), r);\n\tr = MulAdd(s4_0, M4(-9.089e-02, -1.331e-02, 3.064e-02, -4.192e-02, 2.900e-01, 5.748e-02, 7.296e-02, 3.985e-02, 2.369e-01, -2.515e-01, -2.009e-01, -8.283e-02, -2.083e-01, 2.022e-01, 9.404e-02, 1.635e-01), r);\n\tr = MulAdd(s4_1, M4(6.761e-02, 1.662e-01, -5.494e-02, 3.434e-02, -4.001e-02, -4.373e-02, 1.369e-01, -1.741e-01, 1.579e-01, -7.934e-03, 1.573e-02, -1.471e-01, -9.026e-01, -2.991e-01, 3.170e-02, -2.082e-01), r);\n\tr = MulAdd(s4_2, M4(1.668e-01, 1.150e-01, 3.365e-02, 4.915e-02, 1.548e-01, -9.861e-02, -1.739e-03, -1.006e-01, 2.509e-01, 4.215e-02, -1.952e-01, -2.514e-01, 2.461e-01, -7.303e-01, 2.846e-01, -5.022e-02), r);\n\tr = MulAdd(s4_3, M4(-1.248e-01, 1.479e-01, 5.223e-02, -7.043e-03, 1.892e-01, 9.435e-02, -9.993e-02, 2.667e-01, -1.804e-02, -1.080e-01, -1.120e-01, 1.346e-02, 1.712e-01, 5.516e-01, 1.766e-01, -3.375e-01), r);\n\tr = MulAdd(s4_4, M4(2.485e-01, -2.547e-02, -1.379e-02, 1.010e-01, 2.497e-02, 5.752e-02, -3.676e-02, -1.949e-01, 2.648e-01, -2.184e-01, 1.004e-01, 3.635e-01, 2.710e-01, 4.792e-02, 1.356e+00, 7.392e-01), r);\n\tr = MulAdd(s4_5, M4(-1.044e-01, -1.185e-01, -5.964e-02, 1.050e-01, -2.880e-01, -2.760e-01, -2.040e-02, -6.421e-02, -2.995e-01, 4.306e-01, -1.035e-01, 8.934e-03, -9.378e-02, -6.214e-01, -5.966e-02, -4.196e-01), r);\n\tr = MulAdd(s4_6, M4(-6.191e-03, -1.208e-02, 1.564e-01, -1.394e-02, 1.507e-03, -8.000e-02, -8.325e-02, 9.059e-02, 2.129e-01, 2.970e-01, 1.032e-01, -9.473e-02, 6.199e-02, 4.550e-01, 1.335e-01, -1.861e-01), r);\n\tr = MulAdd(s4_7, M4(-1.637e-01, -1.532e-01, 3.509e-02, -7.038e-02, -6.394e-02, -3.487e-01, -1.210e-01, 1.353e-01, -2.038e-01, -1.799e-01, -1.739e-01, 2.214e-02, -2.637e-01, -1.615e-01, -7.865e-01, 3.009e-01), r);\n\tr = MulAdd(s4_8, M4(1.204e-02, -8.630e-02, 4.670e-02, 9.570e-03, -1.212e-01, -3.283e-02, 2.147e-02, -6.195e-02, -7.173e-02, 1.658e-01, 1.884e-01, -6.430e-02, -3.136e-01, -2.145e-01, -5.900e-01, -1.781e-01), r);\n\tr = MulAdd(s5_0, M4(-1.602e-01, 7.305e-03, 1.013e-01, -4.396e-02, 2.237e-01, 9.667e-02, -2.031e-02, 6.526e-02, -6.753e-02, -2.687e-02, -2.583e-02, -4.206e-02, -7.052e-02, 5.000e-02, 3.210e-02, -2.945e-02), r);\n\tr = MulAdd(s5_1, M4(-8.484e-02, -1.646e-01, -2.160e-01, 2.718e-02, -1.412e-01, 3.326e-03, -8.358e-02, 3.792e-02, -5.224e-02, -2.208e-02, 5.928e-02, -1.132e-01, 1.771e-01, -2.547e-02, 9.220e-02, -2.003e-02), r);\n\tr = MulAdd(s5_2, M4(1.226e-01, -1.186e-01, -3.271e-02, 1.741e-01, -1.654e-01, 5.303e-02, 9.859e-02, -1.076e-01, -1.267e-01, -2.056e-02, 1.518e-02, -3.594e-02, 1.399e-01, 5.955e-02, 2.196e-02, 3.942e-03), r);\n\tr = MulAdd(s5_3, M4(2.204e-01, -4.739e-02, 1.469e-02, 1.821e-01, -3.276e-02, 4.900e-02, -9.718e-02, 2.035e-01, 2.070e-02, 8.194e-02, -4.337e-02, -5.462e-02, -1.732e-01, -1.340e-01, 1.204e-01, 5.843e-02), r);\n\tr = MulAdd(s5_4, M4(1.484e-01, 4.451e-01, 1.947e-02, -5.255e-03, -1.856e-01, -5.393e-02, 6.210e-03, -1.717e-01, 1.926e-02, -9.610e-02, -7.933e-02, 9.830e-02, -8.662e-02, -9.962e-03, 5.713e-02, 4.462e-02), r);\n\tr = MulAdd(s5_5, M4(-1.955e-01, -5.243e-01, -6.282e-03, 1.982e-01, -1.204e-01, 7.155e-02, -1.225e-02, -1.338e-01, -3.579e-02, 1.574e-01, 7.702e-02, 3.390e-03, -6.295e-02, 3.460e-02, -1.409e-01, -2.541e-02), r);\n\tr = MulAdd(s5_6, M4(-8.898e-02, 2.620e-01, 1.795e-01, -2.550e-02, -4.822e-02, 1.556e-01, -3.864e-02, -3.345e-02, 3.608e-02, -6.921e-02, 3.265e-02, 5.650e-02, -1.416e-02, 5.370e-02, -3.530e-02, -8.904e-03), r);\n\tr = MulAdd(s5_7, M4(-8.129e-03, -1.428e-01, 2.235e-02, -8.305e-03, 1.021e-02, 3.031e-02, 5.251e-02, -6.861e-02, 6.833e-02, 5.761e-02, -5.271e-02, -4.588e-03, 1.608e-02, -1.631e-01, -5.513e-02, 6.018e-02), r);\n\tr = MulAdd(s5_8, M4(-1.300e-01, -2.935e-01, -8.674e-02, 1.337e-01, -8.421e-02, 1.442e-01, -1.998e-01, 6.850e-03, 1.218e-01, -2.039e-01, 5.682e-02, -1.322e-02, -7.433e-04, -8.572e-03, 2.511e-02, -4.253e-02), r);\n\tr = MulAdd(s6_0, M4(4.771e-01, -1.221e-02, -6.044e-02, 2.828e-02, -3.951e-02, -3.085e-02, -2.765e-02, 1.833e-02, -2.159e-01, -4.498e-02, -1.684e-02, 1.719e-02, 1.547e-01, 2.494e-02, 8.313e-04, 2.347e-01), r);\n\tr = MulAdd(s6_1, M4(3.691e-01, -9.233e-02, 7.315e-02, -4.366e-02, 1.347e-01, 1.336e-01, -1.657e-03, 1.456e-02, -9.590e-02, -3.634e-02, 6.165e-02, 5.148e-02, 1.741e-01, -4.495e-02, 7.363e-02, -3.365e-02), r);\n\tr = MulAdd(s6_2, M4(4.099e-02, 7.470e-02, 5.907e-02, -2.502e-02, 1.264e-01, -9.254e-02, -1.626e-02, 4.827e-02, -6.567e-02, -7.848e-02, -7.057e-02, 1.220e-01, 1.094e-01, 5.916e-02, -3.141e-02, -6.242e-03), r);\n\tr = MulAdd(s6_3, M4(1.557e-01, -2.321e-01, -3.681e-02, 1.202e-01, -1.754e-01, 6.722e-03, 5.256e-02, -1.179e-01, 2.371e-01, 3.811e-02, -4.509e-02, -5.125e-03, -2.686e-01, 1.801e-01, -7.930e-02, 2.836e-01), r);\n\tr = MulAdd(s6_4, M4(4.213e-01, 3.607e-02, -3.110e-02, 1.138e-01, -1.559e-01, -2.379e-01, 6.866e-02, -8.668e-02, 2.498e-01, 4.497e-02, 3.912e-01, 3.999e-02, 2.063e-01, -4.619e-02, 1.196e-01, -3.082e-02), r);\n\tr = MulAdd(s6_5, M4(1.284e-01, 3.436e-03, -4.267e-02, 3.899e-02, 8.482e-02, -3.773e-02, 3.275e-03, -3.904e-02, -1.216e-01, -7.397e-02, -4.438e-01, -2.248e-02, -1.356e-01, -7.888e-02, 2.795e-02, -1.139e-02), r);\n\tr = MulAdd(s6_6, M4(1.131e-01, -2.566e-02, 4.791e-03, -1.055e-01, -9.828e-02, 5.326e-02, -5.499e-02, -3.927e-02, 1.275e-01, 6.263e-02, -4.156e-02, 9.745e-02, 1.533e-01, -3.617e-02, -6.586e-02, 3.466e-02), r);\n\tr = MulAdd(s6_7, M4(8.247e-02, -7.658e-02, 1.527e-01, 3.525e-02, 8.408e-02, -9.757e-02, -2.895e-02, 5.078e-02, -2.114e-01, -1.057e-01, -1.833e-01, -1.000e-01, 2.378e-01, 2.511e-01, -1.157e-01, -4.118e-02), r);\n\tr = MulAdd(s6_8, M4(1.356e-02, -8.041e-02, 4.849e-02, -1.023e-01, 7.375e-03, 6.931e-02, -2.521e-02, 1.345e-01, -1.532e-01, -1.823e-02, -4.957e-02, -8.803e-02, 1.450e-01, 7.583e-02, -3.735e-03, -8.479e-02), r);\n\tr = MulAdd(s7_0, M4(-1.693e-02, -4.398e-03, -5.467e-02, 1.243e-01, -3.660e-02, 1.610e-01, 1.077e-01, 1.909e-01, 8.232e-03, -1.508e-01, 1.603e-02, -8.618e-02, 3.586e-02, 1.234e-01, 7.491e-02, -1.224e-01), r);\n\tr = MulAdd(s7_1, M4(-2.283e-01, 2.992e-01, -1.198e-01, -4.329e-03, 1.752e-01, -1.657e-01, 3.741e-02, -1.488e-01, 1.842e-01, -2.037e-01, 3.463e-02, -6.749e-02, -1.872e-01, -1.033e-01, -7.260e-02, 1.512e-01), r);\n\tr = MulAdd(s7_2, M4(1.502e-02, -1.062e-01, -9.573e-03, -4.199e-02, -1.554e-01, -4.714e-02, 9.064e-02, 1.631e-02, 1.476e-01, -1.704e-01, -3.367e-02, 7.365e-02, 5.617e-02, 5.865e-02, -1.278e-02, -4.977e-02), r);\n\tr = MulAdd(s7_3, M4(-1.026e-01, -1.229e-01, 4.286e-02, 1.130e-01, -2.324e-02, -4.465e-02, 4.590e-02, 6.720e-02, 8.055e-02, 2.163e-02, -4.712e-02, -1.149e-01, 1.638e-01, 5.185e-02, -6.191e-02, -2.353e-02), r);\n\tr = MulAdd(s7_4, M4(-8.012e-02, 2.777e-01, -8.581e-02, 9.079e-03, -6.133e-03, 9.574e-02, -6.214e-02, -2.644e-01, 5.576e-02, 9.414e-02, 4.962e-02, 3.748e-01, -1.098e-01, -2.278e-01, -1.171e-01, 6.858e-02), r);\n\tr = MulAdd(s7_5, M4(-2.794e-01, -1.326e-01, -6.401e-02, 2.166e-01, -9.729e-03, 1.545e-02, 1.940e-03, -9.707e-02, 3.446e-02, -2.200e-01, 1.705e-01, 5.518e-02, 1.778e-02, 5.802e-02, 7.104e-02, 8.698e-02), r);\n\tr = MulAdd(s7_6, M4(-2.421e-01, 3.375e-02, -8.096e-02, 5.195e-02, -1.542e-02, -2.469e-02, 2.463e-02, -3.006e-02, 1.313e-01, -1.252e-02, -8.934e-02, 6.374e-02, -2.305e-01, 9.282e-02, -1.796e-01, 1.911e-02), r);\n\tr = MulAdd(s7_7, M4(-1.725e-01, 1.027e-01, -7.768e-02, -5.955e-02, -3.257e-02, -2.853e-02, -3.702e-02, 2.073e-01, -3.216e-02, -3.304e-02, 5.860e-02, 1.499e-01, -5.883e-02, -1.523e-02, 3.860e-01, -9.647e-03), r);\n\tr = MulAdd(s7_8, M4(-2.646e-02, 7.739e-02, 1.050e-01, -9.308e-02, 1.479e-01, -8.549e-02, 1.245e-01, -1.132e-01, -2.107e-01, 1.525e-02, -7.752e-02, 1.466e-01, -2.482e-02, 6.425e-02, -6.532e-02, -2.433e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.033e-02, -7.655e-03, -2.000e-03, -1.543e-02 };\n\tr = MulAdd(s0_0, M4(1.909e-01, -9.392e-02, -1.340e-01, -2.449e-01, 5.722e-02, 8.879e-02, 7.768e-02, -2.801e-02, 3.341e-02, 1.701e-01, -9.158e-02, 7.848e-02, -3.646e-02, 3.091e-02, 5.503e-02, -6.088e-02), r);\n\tr = MulAdd(s0_1, M4(-3.235e-01, -1.921e-01, -7.293e-02, 2.558e-02, 5.880e-02, -1.773e-02, -4.682e-02, 5.679e-02, 1.830e-01, -9.583e-03, 7.674e-02, 2.682e-01, -2.694e-02, -4.065e-02, -6.315e-03, 4.434e-02), r);\n\tr = MulAdd(s0_2, M4(-5.880e-02, -1.520e-02, -1.367e-01, -4.294e-02, 3.502e-02, 5.052e-02, 5.428e-02, -6.451e-02, 2.027e-01, -5.946e-03, 4.097e-02, -4.362e-04, -3.192e-03, -5.913e-03, 1.121e-02, 5.335e-02), r);\n\tr = MulAdd(s0_3, M4(-2.988e-01, -1.461e-01, -1.896e-01, 1.015e-01, -9.158e-03, 9.632e-02, 1.427e-02, -1.338e-02, -1.538e-01, 1.926e-01, 1.612e-01, -1.565e-01, 1.402e-01, -1.831e-01, -1.946e-02, -1.303e-01), r);\n\tr = MulAdd(s0_4, M4(-1.630e-01, -4.281e-01, -2.889e-01, -5.586e-01, -5.453e-03, 4.795e-02, -9.513e-03, 6.337e-02, 1.790e-02, -6.090e-02, 1.318e-01, -2.561e-01, -3.402e-02, 1.715e-01, 3.424e-01, -3.754e-02), r);\n\tr = MulAdd(s0_5, M4(-1.246e-02, 2.287e-01, 1.475e-02, -1.082e-01, -1.570e-02, -1.497e-01, 6.988e-02, -2.614e-04, 8.724e-02, -2.052e-02, 1.028e-01, -1.492e-01, -1.553e-01, -9.396e-02, -2.078e-01, 4.730e-02), r);\n\tr = MulAdd(s0_6, M4(-2.498e-01, -1.893e-01, 6.595e-02, -1.457e-01, -3.905e-02, -8.088e-02, 8.604e-02, -3.156e-02, 1.087e-01, 6.363e-02, -1.002e-01, -1.236e-01, 1.007e-01, -1.389e-01, -3.014e-01, 3.087e-03), r);\n\tr = MulAdd(s0_7, M4(-1.523e-01, -6.811e-02, -1.732e-01, -1.112e-01, 8.779e-03, -2.401e-02, -2.397e-01, -9.294e-02, 2.584e-01, -4.145e-02, 1.146e-01, -1.261e-02, -8.641e-02, -3.330e-02, 3.006e-01, 2.466e-01), r);\n\tr = MulAdd(s0_8, M4(2.154e-01, 7.314e-02, 5.351e-01, -2.390e-01, 1.053e-01, -5.376e-02, 8.874e-02, 2.467e-02, 1.434e-01, 1.391e-02, -1.465e-01, -3.703e-02, 4.802e-03, 6.735e-02, -1.079e-01, 1.807e-02), r);\n\tr = MulAdd(s1_0, M4(4.027e-02, 4.182e-03, -3.632e-03, 2.185e-03, 1.107e-01, 7.939e-02, 8.598e-02, -3.633e-03, -1.802e-01, 1.115e-01, 1.924e-01, -2.745e-02, -2.830e-02, 3.712e-02, 3.799e-02, 6.096e-02), r);\n\tr = MulAdd(s1_1, M4(1.654e-01, 7.838e-02, -7.628e-02, 1.194e-02, 7.754e-02, -6.591e-02, -5.081e-02, -2.008e-01, -2.290e-01, 1.068e-01, 9.374e-02, 8.226e-02, 9.247e-02, 8.664e-02, -2.329e-01, -1.179e-01), r);\n\tr = MulAdd(s1_2, M4(-7.976e-02, -1.166e-02, 6.066e-02, -1.187e-02, 1.831e-02, 2.978e-02, -1.625e-01, -6.556e-02, 1.551e-02, -8.357e-03, -1.501e-02, 1.152e-01, 1.086e-01, 4.976e-02, -5.822e-02, 1.128e-01), r);\n\tr = MulAdd(s1_3, M4(-7.695e-02, 5.394e-02, 2.071e-02, -2.995e-02, 1.951e-01, 3.876e-01, -6.261e-01, 1.248e-01, -3.093e-01, -1.460e-01, -9.240e-02, -1.225e-01, -2.002e-01, 7.938e-02, 2.530e-01, -4.350e-02), r);\n\tr = MulAdd(s1_4, M4(1.746e-02, 1.007e-01, 1.308e-01, -5.175e-02, 2.391e-02, 2.728e-01, 5.621e-02, 2.392e-01, -2.932e-01, 2.731e-01, 1.057e-01, -1.151e-01, -9.188e-02, -5.725e-03, -1.019e-01, -3.376e-01), r);\n\tr = MulAdd(s1_5, M4(-4.040e-02, -3.587e-02, 5.088e-03, 1.021e-01, 3.585e-02, -1.990e-02, -1.224e-01, -8.409e-04, -8.527e-02, -1.184e-01, -4.145e-02, 1.970e-01, 3.514e-02, 2.597e-02, 3.056e-01, 1.344e-01), r);\n\tr = MulAdd(s1_6, M4(8.428e-03, 6.969e-02, -1.480e-01, -2.313e-02, -1.710e-01, 3.692e-03, -1.741e-01, 5.840e-02, -2.906e-01, -3.011e-02, -3.556e-01, 3.636e-02, -3.008e-02, -1.295e-01, 2.098e-01, 1.202e-02), r);\n\tr = MulAdd(s1_7, M4(-5.380e-02, -5.372e-04, -1.522e-01, 4.360e-02, -1.928e-02, 9.617e-02, 9.124e-02, -2.028e-02, -8.165e-02, 1.276e-01, -2.829e-02, -2.586e-02, -3.088e-01, 4.260e-02, -5.864e-01, -1.700e-01), r);\n\tr = MulAdd(s1_8, M4(1.006e-01, -5.047e-02, 2.980e-02, -9.510e-02, 4.533e-02, 1.175e-01, 1.323e-01, -1.472e-01, -7.008e-02, -1.289e-02, -1.284e-01, -2.242e-02, 2.611e-01, -7.120e-02, 2.681e-01, -9.496e-02), r);\n\tr = MulAdd(s2_0, M4(-2.248e-02, -2.052e-01, 1.088e-01, -4.810e-04, 9.921e-02, -5.395e-02, -4.588e-02, 3.818e-02, 9.605e-02, -1.101e-01, -8.049e-03, -2.017e-02, 1.018e-01, 3.519e-02, -1.687e-01, -5.327e-02), r);\n\tr = MulAdd(s2_1, M4(-9.805e-02, -8.320e-02, 4.706e-02, -2.388e-01, 1.018e-01, -1.821e-02, 7.596e-02, -8.032e-02, -1.246e-01, 5.725e-02, -9.168e-02, 6.510e-02, 1.830e-01, -8.114e-02, 3.057e-01, -1.710e-01), r);\n\tr = MulAdd(s2_2, M4(-1.154e-01, -2.258e-02, -8.471e-02, -7.985e-02, 1.000e-01, 1.283e-02, -7.777e-02, -7.797e-02, 5.683e-02, 9.853e-02, -1.674e-02, -1.913e-01, -8.108e-02, -1.205e-01, -1.177e-01, 5.743e-02), r);\n\tr = MulAdd(s2_3, M4(3.045e-02, 8.145e-02, 1.612e-01, -1.759e-02, -4.420e-02, -2.996e-03, -8.212e-04, -2.170e-02, 8.253e-03, -1.066e-02, -3.993e-02, -7.132e-02, 9.062e-02, 3.725e-01, 1.848e-01, -1.038e-01), r);\n\tr = MulAdd(s2_4, M4(5.332e-01, -1.182e-01, 6.704e-02, 1.766e-01, 1.094e-01, -1.092e-01, -2.973e-01, -2.605e-01, -2.007e-01, 2.994e-02, -2.023e-02, 1.198e-01, 8.121e-03, -5.029e-02, -1.861e-01, 9.399e-02), r);\n\tr = MulAdd(s2_5, M4(6.238e-02, 6.043e-02, -1.120e-01, 2.542e-01, 1.376e-01, 7.607e-02, 3.749e-02, -1.192e-01, -5.898e-02, -2.174e-02, -1.773e-01, 8.908e-02, -7.967e-02, 4.329e-02, -1.669e-01, 1.684e-01), r);\n\tr = MulAdd(s2_6, M4(-4.076e-02, -2.539e-02, 1.274e-01, -3.387e-02, -1.354e-01, -4.052e-02, 4.505e-01, -7.179e-02, 1.687e-01, -7.329e-02, -3.303e-02, -9.880e-02, 9.480e-02, 9.589e-02, 1.248e-01, 1.260e-01), r);\n\tr = MulAdd(s2_7, M4(2.201e-01, 2.431e-02, 1.420e-01, -4.548e-02, -2.243e-01, 9.200e-02, -4.429e-01, -1.139e-01, -3.171e-02, 2.493e-02, 2.451e-01, 1.560e-01, -2.732e-01, -5.226e-02, -3.352e-02, 3.464e-02), r);\n\tr = MulAdd(s2_8, M4(1.893e-01, -3.349e-02, 3.033e-01, 1.017e-02, 5.704e-02, -1.901e-02, 1.118e-01, -8.800e-02, -7.282e-02, 4.033e-02, 1.738e-01, -1.165e-01, 6.738e-02, 7.975e-02, 2.274e-01, -7.196e-04), r);\n\tr = MulAdd(s3_0, M4(9.206e-02, -1.831e-01, -6.781e-02, 2.038e-02, -2.567e-02, 5.166e-04, -1.552e-01, -4.678e-02, 9.775e-02, 3.774e-02, -8.049e-02, -9.916e-03, -1.460e-01, -1.929e-01, 4.039e-02, -2.443e-02), r);\n\tr = MulAdd(s3_1, M4(1.030e-01, 6.380e-02, -3.697e-03, 6.689e-02, -5.646e-03, -5.289e-02, 1.262e-01, 2.126e-01, 3.095e-02, 9.231e-02, -7.421e-02, 2.347e-02, 6.161e-02, -1.098e-01, 2.264e-03, 1.615e-01), r);\n\tr = MulAdd(s3_2, M4(-1.076e-01, -2.051e-02, -1.032e-01, 4.689e-02, -3.618e-02, -8.719e-03, -1.070e-02, 8.687e-02, 3.851e-01, -2.398e-02, 1.685e-01, -1.628e-01, 3.233e-02, -3.770e-02, -4.527e-02, -3.666e-02), r);\n\tr = MulAdd(s3_3, M4(3.846e-02, 1.956e-01, -9.103e-02, -5.621e-02, -2.641e-02, -8.174e-03, -2.783e-01, 2.945e-02, -1.613e-01, 1.782e-01, 1.632e-02, 6.232e-02, -1.465e-01, 5.124e-02, -1.099e-02, 6.585e-02), r);\n\tr = MulAdd(s3_4, M4(-3.682e-02, 2.582e-01, 2.437e-02, 4.205e-02, 4.762e-02, 4.686e-03, 4.395e-01, -6.323e-02, -1.190e-02, 1.435e-01, -1.645e-01, 1.554e-02, -7.464e-02, -1.012e-02, -5.116e-02, 9.937e-02), r);\n\tr = MulAdd(s3_5, M4(-1.994e-01, 8.514e-02, -6.310e-03, -1.008e-01, 4.595e-02, 6.921e-02, -9.169e-02, 1.508e-01, 3.123e-02, -9.426e-02, 1.300e-01, -3.395e-01, 9.113e-02, 4.549e-02, 6.148e-02, -5.932e-02), r);\n\tr = MulAdd(s3_6, M4(9.103e-02, -8.564e-04, -9.881e-02, -4.359e-02, -3.149e-02, -2.886e-02, -2.087e-01, -1.312e-01, 6.307e-02, 2.503e-02, -2.925e-01, -1.377e-02, 6.212e-02, 1.372e-01, 2.146e-02, 9.611e-03), r);\n\tr = MulAdd(s3_7, M4(8.192e-02, -1.447e-01, 2.783e-01, -4.569e-02, 1.534e-01, 5.361e-02, 4.747e-01, 2.498e-02, -9.529e-02, -5.268e-02, 2.216e-01, 1.535e-01, 4.301e-02, 7.891e-02, -3.746e-02, -1.234e-01), r);\n\tr = MulAdd(s3_8, M4(-1.645e-01, -5.479e-02, -1.110e-01, 1.579e-01, -3.121e-02, 6.516e-02, -2.857e-02, -1.048e-03, -2.337e-02, -1.801e-02, 9.869e-03, 5.126e-02, -1.556e-01, 5.252e-02, -1.183e-01, 3.949e-02), r);\n\tr = MulAdd(s4_0, M4(-6.007e-02, 8.082e-02, 2.268e-01, 2.774e-02, -1.145e-01, 9.654e-02, 6.821e-02, -8.230e-02, -6.243e-02, 7.611e-03, -1.037e-01, 1.656e-02, 9.589e-02, -2.637e-01, 4.317e-01, 4.253e-03), r);\n\tr = MulAdd(s4_1, M4(-8.680e-02, 1.404e-02, 7.664e-02, -2.373e-01, -2.451e-02, 4.017e-02, 2.163e-02, 2.062e-01, -4.538e-03, 4.677e-04, -6.182e-02, 8.661e-02, -6.298e-01, 3.219e-01, -2.024e-01, 1.064e-01), r);\n\tr = MulAdd(s4_2, M4(9.728e-02, 2.038e-02, 1.630e-01, 7.928e-02, 9.660e-02, -1.617e-02, 1.229e-01, -1.092e-01, 3.430e-03, -6.904e-03, -3.568e-01, 2.237e-01, 1.376e-02, -2.085e-01, 8.966e-03, -1.802e-01), r);\n\tr = MulAdd(s4_3, M4(-2.242e-02, -1.785e-02, 5.024e-02, 1.283e-02, -1.134e-01, -4.483e-02, 4.119e-02, 1.140e-02, -4.267e-01, -9.236e-02, 4.341e-02, 1.355e-01, 2.437e-01, -2.002e-03, -1.510e-01, -3.528e-02), r);\n\tr = MulAdd(s4_4, M4(-8.638e-02, 3.394e-02, -2.240e-01, 1.461e-01, 8.683e-02, 4.206e-02, -1.933e-01, -2.008e-01, 8.629e-02, 3.030e-01, 2.997e-01, -4.533e-01, -7.390e-01, 7.208e-01, 5.560e-01, -1.510e-01), r);\n\tr = MulAdd(s4_5, M4(-2.310e-02, -2.152e-02, 1.186e-01, -1.363e-01, 8.357e-02, -3.742e-02, -8.575e-02, -1.443e-01, -6.026e-02, -2.186e-01, -4.317e-01, 2.039e-02, 3.948e-02, 6.303e-01, -9.625e-02, 1.544e-01), r);\n\tr = MulAdd(s4_6, M4(1.165e-01, 6.348e-02, -1.213e-01, -1.745e-02, 1.120e-01, -2.659e-02, 1.632e-01, -3.124e-02, -1.503e-03, 4.689e-03, -2.001e-01, 7.933e-02, -3.229e-01, 8.996e-02, -4.774e-01, -1.837e-01), r);\n\tr = MulAdd(s4_7, M4(2.074e-02, 3.243e-02, 5.314e-02, 8.075e-02, 5.473e-02, -3.461e-02, 2.726e-04, -1.971e-02, 3.940e-01, -3.165e-02, 2.749e-01, -1.532e-01, 1.806e-01, -3.744e-01, 7.934e-01, 5.761e-01), r);\n\tr = MulAdd(s4_8, M4(-8.621e-02, -2.195e-02, -3.822e-02, -1.355e-01, 1.395e-02, 1.608e-02, -1.285e-01, -8.663e-02, 5.349e-02, -1.050e-01, 4.588e-02, -1.015e-01, -9.686e-02, -7.499e-02, -2.442e-01, 5.441e-03), r);\n\tr = MulAdd(s5_0, M4(3.871e-02, 2.105e-02, 5.524e-02, -1.114e-01, -9.998e-03, 1.988e-01, 1.913e-01, 5.834e-02, -4.073e-02, 1.370e-02, -7.718e-03, -6.434e-02, 1.075e-01, 9.595e-02, 2.916e-02, -1.640e-02), r);\n\tr = MulAdd(s5_1, M4(-2.685e-01, 6.975e-02, -4.860e-03, -8.839e-02, -1.550e-01, -1.042e-01, 5.083e-02, -2.413e-02, -2.945e-02, 3.974e-02, 5.426e-02, 1.020e-02, -1.489e-01, -9.121e-02, -2.901e-02, -1.348e-01), r);\n\tr = MulAdd(s5_2, M4(1.314e-01, 1.061e-01, -3.463e-02, 1.217e-01, 5.746e-02, -1.503e-02, -6.959e-02, 2.556e-02, 1.508e-01, 2.171e-02, 3.378e-02, -1.861e-02, 1.151e-01, -5.487e-02, -1.317e-02, 7.012e-02), r);\n\tr = MulAdd(s5_3, M4(5.046e-02, 9.001e-02, 7.535e-02, 9.960e-02, -1.300e-01, -3.197e-02, 1.296e-01, -7.338e-02, -1.165e-01, -9.652e-02, -7.622e-03, 1.548e-01, 6.067e-02, -9.001e-02, 1.764e-02, -3.334e-02), r);\n\tr = MulAdd(s5_4, M4(-2.184e-01, -3.564e-01, -2.250e-01, 2.224e-01, 1.726e-01, -1.349e-02, -1.225e-01, 4.080e-02, -5.255e-03, 4.612e-02, -1.111e-01, -7.368e-02, -2.174e-01, 3.929e-02, 5.635e-02, -7.094e-04), r);\n\tr = MulAdd(s5_5, M4(1.605e-01, -8.327e-02, 2.503e-01, 1.224e-01, -4.251e-02, -1.025e-01, -1.459e-01, -5.656e-03, 1.767e-02, 4.757e-02, -3.971e-03, 4.450e-03, -8.019e-03, 1.259e-02, 3.239e-02, 1.144e-01), r);\n\tr = MulAdd(s5_6, M4(9.060e-02, -3.711e-02, -2.303e-01, 1.852e-02, 1.322e-01, 1.307e-01, -6.601e-02, 2.163e-02, 6.238e-02, -1.110e-01, 2.882e-02, -5.058e-02, 9.467e-02, 4.748e-02, -7.884e-03, -1.830e-02), r);\n\tr = MulAdd(s5_7, M4(1.264e-01, -5.228e-03, -1.240e-01, 3.818e-02, 5.384e-02, 4.479e-02, 3.874e-03, -1.177e-02, 4.849e-02, -2.571e-02, -5.829e-02, 1.062e-01, -1.312e-01, -3.904e-02, 1.222e-01, 3.495e-02), r);\n\tr = MulAdd(s5_8, M4(2.607e-01, -9.389e-02, -3.262e-01, -1.223e-01, 1.637e-01, 1.665e-02, -1.061e-01, 4.082e-02, -6.843e-03, 5.625e-02, -6.985e-03, -3.316e-02, -1.778e-02, -5.197e-03, -1.276e-01, -4.753e-02), r);\n\tr = MulAdd(s6_0, M4(1.556e-02, 4.461e-02, 1.887e-01, -5.260e-02, -1.009e-01, -4.502e-02, 1.875e-01, 5.034e-02, -6.320e-02, 4.153e-02, -7.159e-02, -6.840e-02, 3.229e-01, -1.182e-01, -8.201e-02, -1.455e-01), r);\n\tr = MulAdd(s6_1, M4(-2.783e-01, -9.929e-02, -1.127e-01, -5.826e-02, -5.076e-02, 6.958e-03, -1.807e-01, -1.226e-01, 6.811e-02, 3.467e-01, -1.360e-01, -1.994e-01, 1.270e-01, 6.603e-02, -1.298e-01, -3.304e-02), r);\n\tr = MulAdd(s6_2, M4(-2.217e-01, 5.182e-02, -6.665e-03, -3.633e-02, -4.371e-02, -4.715e-02, 3.733e-02, 1.725e-02, 6.393e-02, -1.111e-01, 3.107e-01, -2.297e-01, 7.185e-02, -6.411e-02, -5.181e-02, -8.180e-02), r);\n\tr = MulAdd(s6_3, M4(-1.247e-01, 1.267e-01, -9.271e-03, 3.259e-02, -1.425e-01, 1.140e-01, 3.898e-02, 7.075e-02, 4.735e-02, -2.949e-02, 8.820e-02, 1.113e-01, -1.436e-01, 8.337e-02, 1.733e-02, 1.245e-01), r);\n\tr = MulAdd(s6_4, M4(-2.865e-01, 1.341e-01, -2.989e-01, 2.276e-02, 8.616e-02, -1.108e-01, -2.146e-01, -8.174e-02, -3.244e-01, 8.870e-01, -1.164e-01, 1.193e-01, 1.702e-02, 5.640e-03, 2.127e-02, -2.143e-01), r);\n\tr = MulAdd(s6_5, M4(-2.566e-01, -1.100e-01, -2.349e-01, 5.444e-02, 1.520e-01, 6.735e-02, -3.749e-02, 1.863e-01, -3.958e-01, 1.222e-01, -1.456e-01, -3.227e-01, -1.480e-01, -4.675e-02, 3.483e-03, 1.997e-01), r);\n\tr = MulAdd(s6_6, M4(-3.229e-01, -1.253e-01, -6.043e-02, -1.934e-02, -3.176e-02, -3.484e-02, -3.086e-02, -6.326e-02, -3.011e-02, 1.207e-01, -2.762e-02, 2.276e-02, 1.165e-01, 7.742e-02, -1.514e-01, -1.235e-01), r);\n\tr = MulAdd(s6_7, M4(-3.719e-01, -1.963e-01, 6.235e-02, -1.683e-01, -3.227e-02, -6.104e-03, -9.616e-03, -8.380e-03, -3.989e-02, 8.398e-03, 2.611e-01, 1.075e-01, 8.220e-03, 6.441e-02, -1.289e-01, -5.594e-02), r);\n\tr = MulAdd(s6_8, M4(-1.177e-01, -1.073e-01, 3.336e-02, 1.620e-02, 8.025e-02, 4.244e-02, 8.190e-02, 4.761e-02, -1.916e-01, 1.267e-03, -1.027e-01, 1.053e-01, -3.592e-02, 7.911e-02, -3.845e-02, 4.658e-02), r);\n\tr = MulAdd(s7_0, M4(1.107e-01, 1.350e-02, 3.278e-02, 8.089e-02, -1.457e-02, -1.257e-01, 7.460e-02, -1.540e-01, -1.525e-01, -5.342e-02, -9.262e-02, -3.793e-02, -1.195e-01, 3.176e-01, 6.309e-02, -6.491e-02), r);\n\tr = MulAdd(s7_1, M4(7.589e-02, -1.908e-02, -1.394e-01, 4.513e-02, 1.998e-01, -3.807e-02, -2.032e-01, 9.955e-02, 2.990e-01, -1.441e-01, -2.311e-01, -3.531e-02, -1.162e-01, -7.590e-02, 2.470e-01, -2.878e-01), r);\n\tr = MulAdd(s7_2, M4(2.050e-02, 1.155e-01, 1.018e-01, -1.042e-01, 7.442e-03, -7.654e-03, 1.812e-01, -6.073e-02, 4.555e-02, -4.195e-02, -1.939e-01, -8.081e-02, -2.205e-02, -2.936e-02, 2.581e-03, 7.297e-02), r);\n\tr = MulAdd(s7_3, M4(1.223e-01, 6.592e-02, 5.053e-02, -4.009e-03, -1.685e-01, 1.338e-01, -5.836e-03, -2.778e-02, -8.277e-02, -1.650e-01, 1.238e-01, 4.748e-02, 8.084e-02, 6.089e-01, 8.423e-02, -6.395e-02), r);\n\tr = MulAdd(s7_4, M4(1.704e-01, 1.564e-01, -1.928e-01, -6.911e-03, -1.700e-01, -2.909e-01, 4.752e-01, 1.944e-01, 1.536e-01, -1.364e-01, -1.005e-01, 1.071e-01, -1.150e-01, -1.112e-01, -3.265e-02, -4.512e-01), r);\n\tr = MulAdd(s7_5, M4(3.312e-02, 7.618e-02, 3.051e-02, -2.499e-01, -4.351e-02, 1.448e-01, -5.512e-02, 6.151e-02, 3.365e-01, -3.036e-02, 6.411e-02, -2.202e-01, 7.528e-02, -4.650e-02, 1.802e-02, 1.700e-01), r);\n\tr = MulAdd(s7_6, M4(8.020e-02, 1.847e-02, 5.864e-02, -1.005e-01, -2.217e-02, -7.133e-03, -3.747e-01, 5.838e-02, -1.770e-01, 2.267e-02, 4.268e-02, 2.468e-02, -1.118e-01, 1.149e-02, -6.731e-02, -7.425e-02), r);\n\tr = MulAdd(s7_7, M4(-2.701e-02, -7.810e-02, 7.503e-02, 2.226e-02, 5.091e-01, 1.019e-01, 4.667e-01, -2.403e-02, 1.082e-01, -2.768e-02, 2.378e-01, -4.118e-02, -7.649e-02, -1.219e-01, -2.735e-01, -5.228e-02), r);\n\tr = MulAdd(s7_8, M4(4.283e-02, 4.777e-02, 7.159e-02, -6.319e-03, -7.433e-02, -1.139e-01, -2.676e-01, 5.704e-03, 2.529e-02, 2.313e-02, 1.420e-01, -1.098e-01, 1.671e-02, 6.478e-02, 5.599e-03, 3.933e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.171e-03, 1.231e-02, -3.483e-03, 2.026e-03 };\n\tr = MulAdd(s0_0, M4(-3.758e-03, 7.617e-02, 6.912e-02, 2.377e-01, 7.070e-02, -5.379e-02, -7.769e-02, 2.329e-02, -1.681e-01, 5.942e-02, 5.860e-02, 6.472e-02, 8.355e-02, -5.434e-02, 5.401e-03, -3.641e-02), r);\n\tr = MulAdd(s0_1, M4(-1.019e-01, 5.684e-01, 4.270e-02, 5.252e-02, 4.030e-02, 7.683e-02, 1.746e-02, -1.488e-01, -1.782e-01, -8.970e-02, 1.105e-01, -4.931e-02, -4.062e-02, 8.742e-02, 1.987e-02, -5.478e-02), r);\n\tr = MulAdd(s0_2, M4(3.552e-02, 4.850e-01, -1.131e-02, 1.896e-01, 8.424e-02, -4.286e-02, -2.712e-03, 2.802e-02, 2.943e-02, 8.074e-02, 4.319e-03, -1.202e-01, -1.101e-01, -2.639e-02, -2.619e-02, 7.176e-02), r);\n\tr = MulAdd(s0_3, M4(-1.692e-01, -1.949e-01, -3.303e-02, -1.001e-02, -3.108e-02, -5.779e-02, 6.328e-02, -1.635e-01, 3.118e-01, -8.366e-02, -2.326e-01, -3.063e-01, -1.434e-02, 6.857e-02, -5.738e-02, -5.841e-03), r);\n\tr = MulAdd(s0_4, M4(-4.082e-01, -1.538e-01, -4.761e-02, -8.800e-02, 4.440e-02, -1.050e-01, 6.496e-02, 1.187e-01, 1.208e-01, 1.621e-01, 2.869e-01, -4.994e-02, 2.745e-02, 1.254e-01, -7.371e-02, 8.563e-02), r);\n\tr = MulAdd(s0_5, M4(-3.001e-01, 2.473e-01, 2.051e-01, -1.431e-01, -3.970e-02, -8.972e-02, 2.985e-02, 3.882e-02, 5.168e-02, 2.137e-02, 1.726e-02, -3.367e-03, -2.589e-02, 5.863e-03, -4.580e-02, 8.751e-02), r);\n\tr = MulAdd(s0_6, M4(3.715e-02, -1.473e-01, -5.820e-02, -1.097e-03, 5.256e-02, 1.142e-01, -9.848e-02, 7.447e-02, -6.206e-03, 3.195e-02, 7.233e-02, -1.535e-01, -1.121e-01, 1.395e-01, -2.690e-02, -8.704e-02), r);\n\tr = MulAdd(s0_7, M4(-3.731e-01, -6.268e-01, -1.841e-01, 6.942e-02, -3.763e-02, 6.455e-02, 5.035e-02, -1.305e-01, 1.451e-01, 1.066e-01, 3.048e-01, 1.745e-02, 1.996e-02, -2.749e-02, 1.726e-01, -2.763e-01), r);\n\tr = MulAdd(s0_8, M4(2.241e-01, -1.718e-01, 6.101e-03, 2.807e-01, 2.449e-03, 4.505e-02, -8.207e-02, -2.656e-02, 5.609e-03, 2.359e-01, -1.738e-02, 1.096e-01, 5.393e-02, -1.916e-02, -8.992e-02, -1.024e-01), r);\n\tr = MulAdd(s1_0, M4(6.518e-02, 7.482e-02, 1.297e-02, -4.784e-02, -1.974e-01, -5.278e-02, 6.695e-02, -1.773e-01, -1.970e-01, -9.692e-02, 5.651e-02, -6.470e-02, -6.872e-02, -5.913e-02, -3.371e-02, -2.319e-02), r);\n\tr = MulAdd(s1_1, M4(-6.429e-02, 1.404e-02, 7.580e-02, -1.190e-01, -1.332e-01, -9.807e-02, 5.872e-02, 6.732e-02, -2.426e-01, -2.158e-01, 1.174e-01, -2.639e-02, 2.155e-01, -2.171e-01, 4.090e-02, -4.613e-02), r);\n\tr = MulAdd(s1_2, M4(5.646e-02, 6.236e-02, 4.568e-03, -3.600e-02, 6.474e-02, -6.144e-02, 2.782e-02, 1.139e-01, 7.254e-03, -7.956e-02, -2.111e-03, -7.433e-02, -5.684e-02, 1.990e-02, 4.432e-02, -1.449e-02), r);\n\tr = MulAdd(s1_3, M4(-2.484e-01, -9.496e-02, -5.244e-03, 4.678e-03, 3.685e-01, -1.557e-01, 1.238e-01, 5.032e-01, 3.138e-02, -1.324e-01, -9.592e-02, 4.115e-02, 2.581e-01, -2.674e-02, -3.571e-03, -1.843e-01), r);\n\tr = MulAdd(s1_4, M4(4.006e-02, 8.431e-02, 4.414e-02, 4.780e-02, -6.018e-02, -3.496e-01, 6.532e-02, 1.016e-01, -1.647e-01, 1.719e-01, 1.165e-01, 1.253e-01, 1.866e-01, -4.797e-02, 4.293e-02, -3.443e-01), r);\n\tr = MulAdd(s1_5, M4(-9.642e-02, -3.151e-02, 5.090e-02, 4.500e-02, -1.058e-01, -3.040e-01, 7.838e-02, 1.731e-01, -4.494e-02, -3.210e-02, 4.687e-02, -7.305e-02, -1.455e-01, -2.310e-02, 1.105e-01, 6.461e-02), r);\n\tr = MulAdd(s1_6, M4(6.516e-02, 2.049e-01, -7.350e-03, 1.887e-01, -2.249e-01, 4.453e-02, -1.392e-01, 3.856e-02, 3.693e-02, -1.981e-02, 2.009e-01, 2.242e-02, -6.250e-03, 1.109e-01, -1.288e-01, 4.991e-02), r);\n\tr = MulAdd(s1_7, M4(1.644e-01, -1.369e-01, -1.025e-01, 8.022e-03, -4.350e-01, 5.228e-02, 5.725e-02, 4.300e-02, -3.344e-01, -4.307e-02, 4.145e-02, -2.767e-01, -1.284e-01, 3.278e-01, -7.789e-01, 9.142e-01), r);\n\tr = MulAdd(s1_8, M4(-2.715e-02, -2.013e-02, -6.933e-02, 4.864e-02, 6.995e-02, 2.184e-01, 3.157e-02, 1.156e-01, 6.813e-02, 5.536e-02, 3.155e-02, 1.914e-02, 1.898e-02, -1.525e-01, -1.083e-01, 8.293e-02), r);\n\tr = MulAdd(s2_0, M4(3.057e-01, 3.366e-02, -7.672e-02, -1.528e-01, -8.638e-02, 3.335e-02, 1.581e-02, 1.377e-02, 7.964e-02, -6.812e-02, 5.726e-03, 6.136e-02, -2.493e-01, 1.237e-01, 4.327e-02, 4.104e-02), r);\n\tr = MulAdd(s2_1, M4(-4.913e-03, -6.517e-02, -7.917e-02, -1.400e-01, 6.403e-02, -4.813e-02, 7.681e-03, 6.456e-02, 1.468e-01, -1.053e-03, 3.867e-03, -1.601e-01, -8.750e-02, 2.363e-01, -4.503e-02, 1.427e-01), r);\n\tr = MulAdd(s2_2, M4(1.049e-02, -2.269e-01, -5.767e-02, 1.123e-01, 4.629e-02, -7.771e-03, 1.951e-02, -1.070e-01, 3.297e-03, 1.909e-02, -6.388e-02, -1.872e-02, 1.106e-01, -1.076e-01, -4.868e-02, -4.004e-02), r);\n\tr = MulAdd(s2_3, M4(9.685e-02, -1.747e-01, 5.253e-02, 2.288e-02, 2.158e-01, 4.820e-02, 1.199e-01, -1.479e-01, 1.971e-01, 5.220e-02, -1.107e-01, 1.755e-02, 2.448e-01, 2.043e-01, -5.064e-02, -1.467e-01), r);\n\tr = MulAdd(s2_4, M4(1.483e-01, -9.338e-02, 3.053e-01, 3.674e-02, -4.789e-02, -6.824e-02, 2.009e-01, -2.110e-01, 9.896e-02, 3.739e-01, -3.624e-02, -6.419e-02, -1.496e-01, 2.263e-01, 2.480e-01, -3.066e-01), r);\n\tr = MulAdd(s2_5, M4(4.285e-02, -1.865e-01, 1.919e-01, 1.222e-01, 2.484e-02, -1.035e-01, 5.325e-02, -1.774e-02, 8.416e-02, 8.750e-03, 1.072e-01, 1.335e-01, 1.340e-01, 1.472e-01, -2.104e-02, -1.035e-01), r);\n\tr = MulAdd(s2_6, M4(5.401e-02, -1.072e-01, -2.533e-02, 9.819e-02, -1.101e-01, -6.547e-02, -2.413e-01, 1.610e-01, 1.089e-01, -4.599e-02, -9.606e-02, -2.390e-01, 3.399e-02, -1.979e-01, 5.705e-02, -5.747e-02), r);\n\tr = MulAdd(s2_7, M4(-8.321e-02, 7.437e-02, -3.539e-01, -1.672e-02, -1.665e-02, 2.068e-01, -7.621e-01, 6.597e-01, -2.447e-01, 2.339e-02, 9.553e-02, 2.941e-02, -2.685e-01, 1.937e-01, -2.887e-01, 2.725e-01), r);\n\tr = MulAdd(s2_8, M4(2.926e-02, -1.894e-01, 6.963e-03, 6.560e-02, -1.028e-01, -1.773e-01, -9.563e-02, 8.999e-02, -1.051e-01, -1.072e-01, -5.523e-02, 9.691e-02, -6.205e-02, 7.601e-03, 5.785e-03, 5.219e-02), r);\n\tr = MulAdd(s3_0, M4(1.045e-01, 6.734e-02, 4.300e-02, 1.489e-01, 6.522e-02, -6.717e-02, -6.585e-03, -2.107e-02, 4.468e-02, -1.545e-01, 4.438e-02, 8.534e-02, 1.208e-01, 1.860e-02, 5.553e-02, -2.556e-02), r);\n\tr = MulAdd(s3_1, M4(-7.592e-02, -5.138e-02, -7.580e-02, 1.265e-01, -1.954e-01, 8.033e-02, 2.697e-02, 7.622e-03, -1.312e-01, 8.863e-02, -2.099e-02, 5.640e-02, 2.769e-02, -5.627e-03, -1.252e-02, -1.444e-01), r);\n\tr = MulAdd(s3_2, M4(-2.088e-02, 6.035e-02, 1.498e-02, 2.430e-02, -1.182e-02, -1.124e-01, -3.626e-02, 4.757e-02, 1.656e-01, -1.633e-01, -9.650e-02, 9.102e-02, 9.852e-04, -4.813e-02, 2.747e-02, -1.393e-01), r);\n\tr = MulAdd(s3_3, M4(3.472e-01, 3.092e-02, -6.392e-02, 6.680e-02, 1.125e-01, 1.447e-03, -7.247e-02, -6.417e-02, -1.433e-02, 1.248e-01, 2.670e-02, 8.518e-02, -5.483e-02, 6.709e-03, -4.418e-02, 1.285e-01), r);\n\tr = MulAdd(s3_4, M4(1.294e-01, 9.550e-02, 1.910e-01, -2.522e-01, -5.592e-03, -1.394e-01, 6.054e-02, 8.921e-02, 4.476e-01, 1.155e-01, -1.468e-01, 2.610e-01, -1.090e-01, -1.395e-02, 3.005e-02, 3.408e-03), r);\n\tr = MulAdd(s3_5, M4(-1.316e-01, 1.761e-02, -3.773e-02, -7.906e-02, -5.174e-02, -6.989e-02, 1.748e-02, -2.507e-03, -2.583e-02, -3.823e-02, 1.149e-01, -7.926e-02, -2.495e-02, -3.870e-02, -4.058e-02, 1.254e-01), r);\n\tr = MulAdd(s3_6, M4(7.346e-02, 4.658e-02, -1.027e-01, -9.269e-02, -1.354e-02, -3.943e-03, -2.036e-01, -1.463e-01, 5.179e-02, 1.687e-01, -5.164e-02, -2.656e-02, -5.462e-02, -5.923e-02, 1.995e-02, -6.361e-02), r);\n\tr = MulAdd(s3_7, M4(1.919e-02, -3.371e-03, 2.938e-01, -1.992e-01, -2.979e-03, -1.093e-01, 1.858e-01, -4.176e-01, -8.299e-02, -6.490e-02, 3.646e-01, -2.355e-01, 1.422e-02, 5.154e-02, -3.259e-02, 1.654e-01), r);\n\tr = MulAdd(s3_8, M4(-3.358e-02, 2.703e-03, -1.307e-01, -4.966e-02, -8.679e-02, 1.698e-01, -1.447e-01, 4.559e-02, -1.525e-01, 8.874e-02, -6.838e-02, -1.685e-01, 2.004e-02, -4.271e-02, -1.110e-02, 1.418e-02), r);\n\tr = MulAdd(s4_0, M4(1.153e-01, 3.278e-02, -1.984e-02, 9.321e-03, -1.442e-01, 1.189e-01, -1.124e-02, 5.252e-02, 3.034e-01, -9.655e-02, -6.094e-02, 2.892e-01, -3.730e-03, 8.028e-01, -6.173e-02, -1.532e-01), r);\n\tr = MulAdd(s4_1, M4(1.025e-01, -8.287e-02, 3.901e-02, -1.558e-01, -2.023e-01, -1.739e-01, 4.269e-02, 2.685e-02, -6.982e-02, -1.987e-01, -6.712e-02, 4.156e-02, 3.297e-01, 6.498e-01, 2.479e-01, -5.953e-01), r);\n\tr = MulAdd(s4_2, M4(-1.068e-01, -2.891e-02, 8.870e-02, -1.661e-01, 1.573e-01, 5.167e-02, -7.041e-03, -8.596e-02, -2.175e-02, 2.233e-01, 1.118e-02, -7.196e-02, 4.037e-01, 4.387e-01, -1.536e-01, -4.341e-02), r);\n\tr = MulAdd(s4_3, M4(-1.184e-01, -4.621e-02, 5.939e-02, -8.380e-02, 1.851e-01, -2.091e-01, -8.024e-04, 9.550e-02, -1.187e-01, -2.302e-01, 1.589e-01, 8.751e-02, -7.050e-01, -7.811e-01, 4.696e-01, 1.788e-01), r);\n\tr = MulAdd(s4_4, M4(-2.695e-02, 4.550e-02, -1.792e-01, 1.519e-01, -1.141e-01, 2.095e-01, -8.601e-02, -9.451e-02, -4.056e-01, -3.000e-01, 2.386e-02, 1.290e-01, 2.230e-01, -3.472e-02, -9.723e-01, 2.486e-01), r);\n\tr = MulAdd(s4_5, M4(2.915e-03, -7.673e-02, -1.262e-02, 1.916e-02, 1.816e-01, -3.453e-02, -2.695e-04, -1.356e-01, 3.496e-02, 5.267e-02, -8.667e-02, -3.235e-01, 3.861e-01, 5.660e-01, -1.828e-01, -1.704e-01), r);\n\tr = MulAdd(s4_6, M4(1.632e-01, 2.510e-01, -9.598e-02, 3.087e-02, -5.671e-03, -1.048e-01, -4.369e-03, 1.901e-02, 2.465e-01, 8.645e-03, 1.715e-01, 2.438e-01, 5.865e-01, 4.047e-01, 5.474e-01, 6.404e-01), r);\n\tr = MulAdd(s4_7, M4(-1.204e-01, 4.781e-02, 3.613e-02, -4.889e-02, -5.033e-03, -2.781e-01, -2.346e-02, 2.110e-02, 9.348e-02, -7.106e-02, -1.281e-01, 1.660e-01, 3.296e-01, -9.292e-01, 1.562e+00, -1.151e+00), r);\n\tr = MulAdd(s4_8, M4(5.152e-03, 1.871e-02, -6.217e-03, 1.707e-01, 1.013e-01, 1.548e-01, 4.119e-02, -4.431e-02, -1.716e-02, 8.323e-02, -2.118e-02, -2.531e-01, 2.598e-01, 5.480e-02, -5.895e-01, -6.074e-01), r);\n\tr = MulAdd(s5_0, M4(-1.151e-01, -8.785e-02, -7.595e-02, 2.556e-02, -1.627e-01, 9.401e-02, -6.269e-02, 5.041e-02, 3.075e-02, -1.058e-01, 2.416e-03, -8.175e-02, -2.533e-02, 1.259e-01, -1.033e-02, -1.544e-02), r);\n\tr = MulAdd(s5_1, M4(2.719e-01, -5.704e-02, -4.706e-02, 1.435e-02, 1.781e-02, -8.804e-02, 6.679e-02, 3.407e-02, -8.725e-02, -1.454e-01, -3.964e-02, 1.686e-01, 3.078e-02, 1.527e-01, -2.336e-02, 8.638e-02), r);\n\tr = MulAdd(s5_2, M4(-9.739e-02, -1.581e-01, 1.193e-01, -1.140e-01, 8.583e-02, 1.014e-01, -4.930e-02, -3.523e-02, -3.552e-02, 2.957e-02, 9.932e-02, -1.241e-01, 5.827e-04, 4.510e-03, 8.899e-02, 7.640e-03), r);\n\tr = MulAdd(s5_3, M4(-7.002e-02, 1.106e-01, 7.769e-02, -3.625e-01, -2.617e-02, 6.854e-04, 1.240e-01, -2.399e-01, -1.245e-02, 1.096e-01, 7.265e-02, -5.656e-02, -1.526e-02, -4.186e-03, 4.619e-02, -1.449e-01), r);\n\tr = MulAdd(s5_4, M4(2.417e-01, 1.537e-01, 4.630e-03, 5.479e-02, -1.961e-02, -5.185e-02, -1.879e-01, 1.597e-01, -5.192e-03, -1.293e-02, -6.857e-03, 4.178e-02, -1.144e-01, -1.014e-01, -1.105e-01, 2.070e-01), r);\n\tr = MulAdd(s5_5, M4(1.026e-01, -2.085e-01, 9.310e-04, 6.208e-02, 5.632e-02, -3.012e-01, -1.693e-02, -1.228e-01, 3.079e-02, 6.654e-03, 2.042e-02, 3.115e-03, 2.767e-02, -3.941e-02, -1.027e-01, -1.193e-01), r);\n\tr = MulAdd(s5_6, M4(-5.361e-02, 1.839e-01, -1.381e-02, -4.992e-02, 1.197e-01, -2.658e-02, 4.414e-02, 3.060e-01, 2.078e-01, -5.305e-02, -7.618e-02, -1.528e-01, 8.231e-02, 1.479e-02, -1.472e-02, -1.767e-02), r);\n\tr = MulAdd(s5_7, M4(-1.962e-03, 1.135e-01, -8.852e-02, -1.797e-02, 2.641e-01, -1.138e-01, -1.912e-02, 2.951e-01, 6.433e-03, 7.263e-03, -6.725e-02, 1.238e-01, -1.916e-01, -1.174e-01, 3.328e-02, 1.476e-01), r);\n\tr = MulAdd(s5_8, M4(-8.259e-02, 1.196e-01, 2.297e-02, 4.276e-02, 3.669e-02, -2.559e-02, 6.839e-02, 1.683e-01, -5.570e-02, 1.671e-01, -1.644e-02, -9.741e-02, 1.025e-01, -8.816e-02, 1.826e-02, -2.364e-02), r);\n\tr = MulAdd(s6_0, M4(-2.535e-01, 1.111e-02, 1.390e-02, -1.202e-01, -5.318e-02, -4.885e-02, -4.511e-02, -4.861e-03, -1.718e-01, -5.259e-02, 2.545e-02, 2.374e-02, -1.528e-01, -6.412e-03, -1.480e-02, 1.350e-01), r);\n\tr = MulAdd(s6_1, M4(-2.912e-01, -1.131e-02, 3.652e-02, -1.608e-02, 4.979e-03, -5.479e-02, 2.703e-02, -4.558e-02, -4.872e-02, 3.846e-02, 8.584e-02, 9.559e-02, 1.828e-01, -9.439e-04, -5.438e-02, 1.303e-01), r);\n\tr = MulAdd(s6_2, M4(-5.778e-02, 5.187e-02, -2.630e-02, -7.704e-02, -3.566e-02, -5.934e-02, 1.820e-02, 5.576e-02, -2.745e-02, 3.232e-02, 8.394e-02, 3.470e-02, 5.279e-02, 4.295e-02, 5.794e-02, -4.407e-03), r);\n\tr = MulAdd(s6_3, M4(-2.326e-02, -1.651e-02, 9.584e-02, 8.951e-02, -4.249e-02, 4.926e-02, 2.225e-02, 8.911e-02, -2.212e-01, 6.553e-03, 5.084e-02, 2.918e-02, 1.774e-02, -1.435e-01, 4.841e-02, 4.622e-02), r);\n\tr = MulAdd(s6_4, M4(2.492e-01, 2.205e-02, 1.578e-02, -1.140e-01, -3.456e-02, 1.953e-01, 2.578e-02, 1.255e-01, 1.047e-01, 3.143e-02, -3.481e-01, 1.965e-01, -1.062e-01, -1.112e-01, 5.874e-02, 6.422e-02), r);\n\tr = MulAdd(s6_5, M4(-1.986e-01, 1.203e-01, -6.987e-02, -9.607e-02, -1.267e-02, 1.618e-01, -5.594e-02, 2.820e-02, -1.304e-03, 2.070e-01, -1.037e-01, 2.567e-01, -9.442e-02, 9.773e-02, -6.431e-02, 4.221e-02), r);\n\tr = MulAdd(s6_6, M4(6.672e-02, 5.162e-02, -4.157e-02, 4.170e-02, 2.030e-02, -5.778e-02, -8.677e-03, -7.128e-02, -5.729e-02, 2.775e-03, 1.171e-01, 9.867e-02, 3.169e-01, 2.530e-01, -2.410e-03, -3.967e-03), r);\n\tr = MulAdd(s6_7, M4(2.745e-02, -9.191e-02, -4.763e-02, -7.475e-02, 2.111e-01, -1.829e-01, -5.249e-02, -6.307e-02, -1.656e-01, -4.147e-01, 2.770e-02, -1.667e-01, 1.274e-01, -2.991e-01, -9.795e-02, -2.018e-01), r);\n\tr = MulAdd(s6_8, M4(6.462e-02, 8.191e-02, 1.501e-02, -3.084e-01, 3.494e-02, -1.754e-02, 2.011e-02, -1.587e-01, -1.362e-01, 1.886e-01, -1.740e-01, -1.429e-01, -7.398e-02, -7.677e-02, -1.702e-02, -5.762e-02), r);\n\tr = MulAdd(s7_0, M4(1.334e-01, 1.942e-01, -1.171e-02, 8.299e-02, -8.526e-02, -2.180e-01, 5.514e-02, -1.436e-02, 5.323e-02, 3.455e-02, 2.642e-02, 1.681e-02, 9.616e-03, 1.213e-02, 7.231e-02, -1.113e-02), r);\n\tr = MulAdd(s7_1, M4(-1.613e-01, 5.467e-02, 3.423e-02, 1.011e-02, 1.974e-01, 1.498e-01, 1.780e-02, -6.198e-02, 2.254e-01, -6.978e-04, -2.064e-02, 6.975e-03, -7.109e-02, -6.513e-02, -3.146e-02, -8.605e-02), r);\n\tr = MulAdd(s7_2, M4(1.097e-01, 1.303e-01, -2.511e-02, 1.708e-02, -2.600e-02, 3.643e-02, 4.636e-02, -9.953e-04, 1.382e-01, 3.000e-01, -7.425e-02, 3.608e-02, -2.558e-02, 1.338e-01, 3.733e-02, 7.616e-02), r);\n\tr = MulAdd(s7_3, M4(1.074e-01, 6.512e-02, -4.465e-02, 6.519e-02, -1.936e-02, -1.653e-01, 1.620e-03, -8.754e-04, -1.027e-01, -1.507e-01, -2.866e-02, 1.681e-01, 2.847e-01, 2.362e-01, -2.515e-01, -3.844e-01), r);\n\tr = MulAdd(s7_4, M4(5.933e-02, -9.733e-02, -5.048e-02, 1.283e-01, -1.207e-01, 4.300e-01, -9.009e-02, 2.569e-01, 3.240e-01, -1.023e-01, -2.388e-01, -2.404e-01, 3.049e-02, 1.859e-01, -1.149e-02, 8.890e-02), r);\n\tr = MulAdd(s7_5, M4(-4.837e-02, -4.022e-02, -9.985e-02, 2.189e-02, -1.578e-01, -4.311e-02, -2.034e-02, -1.535e-01, 1.856e-01, 8.270e-02, -7.737e-02, -1.922e-02, -4.536e-02, 4.765e-02, -1.193e-03, 7.205e-02), r);\n\tr = MulAdd(s7_6, M4(1.942e-01, -1.707e-01, -4.945e-02, 7.447e-02, -4.521e-02, -4.525e-02, 5.924e-02, 1.494e-02, -1.148e-01, -2.395e-02, 9.159e-02, -1.781e-01, -8.017e-02, -1.350e-01, 1.942e-02, -1.520e-01), r);\n\tr = MulAdd(s7_7, M4(1.286e-01, -5.202e-02, -8.071e-02, 2.529e-02, -2.521e-01, 4.532e-01, -2.095e-01, 2.114e-01, 7.191e-02, -4.856e-02, 3.030e-01, 2.091e-02, -8.676e-02, 7.358e-02, -1.278e-01, 2.998e-02), r);\n\tr = MulAdd(s7_8, M4(9.250e-02, 2.525e-01, 2.439e-02, -7.490e-02, 8.973e-03, 2.871e-01, -1.946e-01, -3.327e-02, 2.057e-01, 3.037e-02, 3.450e-02, -1.399e-01, 3.158e-02, -4.555e-02, 4.175e-02, 1.327e-03), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.950e-03, -9.835e-03, -5.918e-03, -6.251e-03 };\n\tr = MulAdd(s0_0, M4(-1.148e-01, -8.185e-02, -1.411e-02, 5.234e-02, 1.760e-01, -2.862e-02, 2.125e-03, -9.211e-03, 1.019e-01, 3.912e-02, 3.709e-02, 1.898e-02, 9.759e-02, 1.289e-01, 1.633e-02, -1.400e-01), r);\n\tr = MulAdd(s0_1, M4(-1.021e-01, -2.273e-02, 9.546e-02, 2.171e-02, -5.309e-02, -7.581e-03, -9.869e-03, 1.025e-01, -5.688e-02, -9.736e-03, -3.693e-02, -9.752e-02, 3.177e-01, 1.791e-03, -4.513e-03, -3.494e-02), r);\n\tr = MulAdd(s0_2, M4(1.081e-02, -3.946e-02, -8.423e-02, -5.189e-03, 2.352e-02, 9.578e-02, -2.665e-02, 7.931e-02, 1.164e-01, -7.756e-02, -7.551e-02, 2.317e-02, -1.850e-02, 2.503e-02, 1.020e-02, 3.127e-02), r);\n\tr = MulAdd(s0_3, M4(-1.711e-01, -5.064e-02, 5.811e-02, 9.636e-02, -9.589e-02, -1.298e-02, -4.247e-02, -2.036e-02, -1.126e-01, -6.640e-02, -6.445e-03, 1.700e-01, 7.660e-02, -6.665e-03, -4.980e-02, -2.623e-02), r);\n\tr = MulAdd(s0_4, M4(1.482e-01, -1.146e-01, -1.488e-01, -1.059e-01, -1.714e-01, 8.280e-02, 4.026e-02, 1.548e-01, -5.075e-02, 1.049e-01, 3.046e-02, 6.307e-02, -2.167e-02, 5.749e-02, -2.166e-01, 2.334e-01), r);\n\tr = MulAdd(s0_5, M4(-6.098e-02, 3.640e-02, -1.929e-02, -4.996e-02, -1.136e-02, 1.956e-01, 1.212e-02, 1.828e-01, 1.526e-02, 5.544e-02, 2.381e-02, -3.802e-02, -1.418e-01, 4.179e-02, -1.739e-01, 1.139e-01), r);\n\tr = MulAdd(s0_6, M4(-7.260e-02, 7.911e-02, 5.132e-03, 2.420e-02, 1.140e-03, -1.315e-01, -3.142e-02, -4.042e-02, 4.358e-02, 6.544e-02, 6.622e-03, 3.360e-02, 1.223e-01, 5.543e-02, 3.080e-02, 1.314e-01), r);\n\tr = MulAdd(s0_7, M4(-8.027e-03, 4.926e-02, -3.521e-03, -2.338e-02, -1.126e-01, 5.741e-03, 5.360e-02, 1.018e-01, 1.403e-01, 7.060e-02, -5.804e-02, 1.384e-01, -1.067e-01, -1.198e-01, -3.449e-02, 1.961e-01), r);\n\tr = MulAdd(s0_8, M4(-3.738e-02, -1.306e-01, 1.107e-02, -7.607e-02, 1.243e-01, -1.010e-01, 1.212e-02, 2.539e-01, -8.092e-02, -7.852e-03, 1.825e-02, -2.749e-04, 9.700e-02, 7.530e-02, -4.116e-02, -5.427e-02), r);\n\tr = MulAdd(s1_0, M4(1.050e-01, -1.468e-02, -7.091e-02, -8.371e-02, 1.020e-02, 9.543e-02, -2.195e-02, -1.574e-04, 2.162e-01, -3.034e-01, -3.787e-02, 2.131e-01, -1.148e-02, 1.077e-02, 9.198e-02, 1.001e-01), r);\n\tr = MulAdd(s1_1, M4(-3.883e-02, -4.188e-02, 6.138e-02, -8.807e-02, -1.576e-01, 1.075e-01, 5.166e-02, -2.216e-02, 1.049e-01, -1.876e-02, -9.194e-02, -4.131e-02, -8.374e-02, -5.167e-02, -1.251e-01, 1.607e-01), r);\n\tr = MulAdd(s1_2, M4(-4.730e-02, 1.121e-01, 7.568e-02, 5.447e-02, 8.668e-02, 5.584e-02, -9.957e-03, -3.589e-03, 2.666e-01, 6.166e-02, 2.291e-02, 1.741e-01, 5.895e-02, 4.918e-02, -8.752e-02, 1.369e-01), r);\n\tr = MulAdd(s1_3, M4(-1.635e-01, -4.629e-02, 5.164e-02, 8.537e-03, -8.651e-02, -1.172e-01, 2.755e-04, 1.021e-01, -1.107e-01, 1.182e-01, 2.746e-02, 2.390e-01, 1.820e-02, 8.032e-02, -7.235e-02, 7.531e-02), r);\n\tr = MulAdd(s1_4, M4(1.067e-01, -4.792e-03, -9.543e-02, 5.090e-03, 2.230e-02, -3.161e-01, -5.231e-02, 2.124e-01, 2.475e-01, 1.983e-01, 7.380e-03, 1.579e-01, -1.399e-02, -1.190e-01, -1.073e-01, -9.188e-02), r);\n\tr = MulAdd(s1_5, M4(7.826e-02, 1.374e-01, -9.163e-02, -3.429e-02, 2.204e-01, -3.229e-02, 5.139e-02, -9.958e-02, 7.382e-02, 2.384e-01, -2.388e-01, 3.980e-02, -8.830e-02, -4.230e-02, -1.036e-01, 5.042e-02), r);\n\tr = MulAdd(s1_6, M4(2.173e-03, -6.181e-02, 3.234e-02, 1.587e-01, 7.717e-02, -2.153e-02, -2.742e-02, -9.150e-02, 7.825e-02, -2.646e-01, 1.481e-02, 2.971e-01, 2.110e-02, 1.253e-01, -7.860e-03, -8.129e-02), r);\n\tr = MulAdd(s1_7, M4(7.583e-02, 1.063e-01, -2.099e-02, -4.610e-04, 1.094e-01, -5.212e-02, -2.047e-02, -6.110e-02, -1.883e-01, -7.224e-02, -4.196e-02, 9.632e-02, -1.147e-01, 6.630e-02, 3.887e-03, 1.138e-02), r);\n\tr = MulAdd(s1_8, M4(3.765e-02, 1.596e-01, 5.584e-02, 1.169e-01, 5.791e-02, -4.240e-02, 1.590e-02, 2.315e-02, -3.759e-02, 1.557e-01, -2.875e-02, 8.878e-02, 4.666e-02, -4.438e-02, 4.127e-02, 7.803e-02), r);\n\tr = MulAdd(s2_0, M4(-2.433e-02, -2.140e-02, 3.534e-02, 8.763e-02, -6.537e-02, 2.888e-03, 1.781e-02, -9.516e-02, -4.959e-02, -7.305e-04, -3.082e-03, 1.726e-01, -1.093e-01, 4.877e-04, -3.107e-02, 1.510e-01), r);\n\tr = MulAdd(s2_1, M4(4.781e-02, 2.146e-02, -7.985e-02, 1.144e-01, 6.127e-02, -1.343e-01, -4.452e-02, 1.627e-01, 3.195e-02, -1.323e-01, -6.793e-02, -8.531e-02, 9.914e-03, 1.234e-01, 5.605e-02, 7.464e-02), r);\n\tr = MulAdd(s2_2, M4(2.733e-02, 6.205e-02, 2.271e-02, -3.695e-02, -7.404e-02, 6.556e-02, -9.502e-02, 3.729e-02, -1.791e-01, -2.851e-02, 7.849e-02, -7.159e-02, 5.587e-02, 1.027e-01, -1.121e-01, -5.296e-02), r);\n\tr = MulAdd(s2_3, M4(4.445e-02, 4.192e-02, -6.881e-03, 1.003e-01, 6.648e-02, 1.018e-01, -4.082e-03, 1.489e-02, -5.513e-02, 5.094e-02, -1.898e-02, -1.538e-01, -4.049e-02, -7.602e-02, -4.031e-02, 2.744e-01), r);\n\tr = MulAdd(s2_4, M4(-4.634e-02, 1.529e-01, 4.334e-02, -7.627e-03, -2.217e-01, -1.784e-02, 1.034e-02, 7.111e-02, 4.219e-01, 3.733e-01, 5.571e-01, -3.626e-01, 2.417e-01, 5.628e-02, 6.872e-03, 6.866e-02), r);\n\tr = MulAdd(s2_5, M4(-3.169e-02, -7.973e-02, -2.056e-01, 8.751e-02, 1.181e-02, -8.371e-02, -1.162e-01, 3.191e-02, -3.315e-02, -1.636e-01, -1.206e-01, 3.676e-02, -1.169e-01, -1.986e-01, -1.931e-01, 6.134e-02), r);\n\tr = MulAdd(s2_6, M4(-6.188e-02, -3.657e-02, 1.201e-03, -6.201e-03, 4.759e-02, -1.386e-01, 6.573e-02, -4.832e-01, 5.454e-02, -1.073e-01, 5.971e-03, 4.345e-02, -1.782e-01, 1.215e-01, 2.692e-02, 2.557e-01), r);\n\tr = MulAdd(s2_7, M4(-7.797e-02, -1.084e-01, 5.175e-03, 9.329e-02, -2.287e-01, 1.999e-01, -6.601e-03, -9.554e-02, -3.143e-02, 1.081e-01, -6.461e-02, -6.680e-02, 3.113e-02, -1.750e-03, -5.845e-02, 2.402e-02), r);\n\tr = MulAdd(s2_8, M4(2.924e-02, 1.331e-01, 7.454e-03, -3.124e-02, 1.476e-02, 2.380e-02, 9.213e-03, -7.625e-02, -5.502e-02, -2.179e-01, -3.804e-02, -4.410e-02, 4.534e-02, 1.053e-01, 5.307e-02, 5.106e-02), r);\n\tr = MulAdd(s3_0, M4(1.826e-02, -6.125e-02, 5.636e-02, -6.383e-02, 1.119e-01, -5.472e-02, -1.497e-02, -4.192e-02, 2.173e-01, -4.268e-02, 8.650e-02, -4.834e-02, -7.294e-02, -3.110e-02, 7.425e-03, 8.361e-03), r);\n\tr = MulAdd(s3_1, M4(-2.545e-02, -2.326e-01, -4.745e-02, 2.995e-01, -2.049e-02, -8.489e-02, 3.580e-02, 1.492e-02, 1.409e-01, -4.312e-02, -1.762e-01, -4.962e-02, 5.562e-03, 3.523e-02, 7.543e-02, -5.587e-02), r);\n\tr = MulAdd(s3_2, M4(-4.105e-02, -2.489e-01, -6.214e-02, 8.548e-02, 2.323e-02, -2.092e-03, -8.933e-02, 6.399e-02, 4.277e-02, -7.947e-02, 1.034e-01, -2.830e-02, 7.203e-02, -1.177e-02, -5.893e-02, -1.309e-01), r);\n\tr = MulAdd(s3_3, M4(1.762e-01, -1.742e-01, 6.785e-02, -1.550e-01, -2.695e-02, -8.647e-03, -2.921e-02, 2.048e-03, -1.097e-01, -6.132e-02, 4.258e-02, 1.509e-01, 8.423e-02, 3.367e-03, -2.041e-03, -1.195e-01), r);\n\tr = MulAdd(s3_4, M4(1.996e-01, -1.168e-01, -9.302e-02, 3.043e-01, -3.837e-02, 2.810e-01, 5.145e-02, -1.396e-01, 3.323e-03, -9.145e-02, 1.519e-01, 3.587e-01, 2.582e-01, -3.045e-01, 5.168e-02, -1.023e-01), r);\n\tr = MulAdd(s3_5, M4(2.237e-01, -1.517e-01, -2.061e-01, 1.276e-02, -3.531e-02, 1.714e-02, -2.996e-02, -2.775e-02, 7.813e-02, -6.512e-05, -6.621e-02, -4.317e-03, 1.628e-01, -1.701e-01, -3.663e-01, -2.800e-01), r);\n\tr = MulAdd(s3_6, M4(-2.112e-01, -1.664e-01, -1.945e-02, -3.029e-01, 1.268e-01, 1.859e-02, 2.151e-02, 7.883e-02, -1.175e-01, -7.301e-02, -1.675e-02, 3.992e-02, 3.473e-03, 4.124e-02, -1.485e-02, -1.433e-01), r);\n\tr = MulAdd(s3_7, M4(-1.850e-01, -6.911e-02, -5.602e-02, -9.484e-02, 4.773e-02, 5.576e-02, -1.829e-02, 6.391e-02, 5.080e-02, 1.449e-01, 7.632e-02, 1.613e-02, 4.483e-03, -2.650e-01, -3.473e-02, 1.705e-02), r);\n\tr = MulAdd(s3_8, M4(-6.757e-02, -6.804e-03, 1.366e-02, -2.227e-01, 2.078e-02, -8.953e-02, -1.051e-02, 3.131e-02, 1.905e-02, -4.710e-02, -1.816e-02, 1.138e-01, -9.230e-02, -1.380e-01, -7.560e-02, -1.729e-01), r);\n\tr = MulAdd(s4_0, M4(-7.715e-02, -4.226e-02, -1.726e-04, -3.048e-02, 1.289e-01, -1.014e-02, 6.840e-04, -3.068e-02, 1.129e-02, -2.180e-02, 2.234e-02, -3.127e-02, -4.607e-02, -2.965e-02, 4.736e-02, 1.610e-02), r);\n\tr = MulAdd(s4_1, M4(-1.268e-02, -6.178e-02, 8.163e-02, 6.305e-02, 1.033e-01, -3.181e-02, -4.803e-02, 1.333e-02, 3.381e-03, -1.908e-02, 2.222e-02, 7.992e-02, -9.103e-02, 3.049e-02, 8.586e-02, -8.075e-02), r);\n\tr = MulAdd(s4_2, M4(5.629e-02, 1.303e-01, 2.169e-02, -1.143e-01, -9.910e-02, 9.202e-02, -4.430e-02, -5.384e-02, 1.788e-02, 5.285e-02, -1.935e-02, 1.770e-01, 9.311e-03, 1.101e-01, 5.366e-02, 8.400e-02), r);\n\tr = MulAdd(s4_3, M4(-1.919e-01, 4.128e-02, -6.310e-02, 1.233e-01, 5.438e-02, 4.894e-02, 3.223e-02, -1.526e-01, 9.431e-03, -1.171e-01, -2.802e-03, 4.199e-02, 3.082e-01, -2.440e-01, 8.263e-02, -4.082e-02), r);\n\tr = MulAdd(s4_4, M4(1.600e-01, -1.433e-01, 8.529e-02, -1.535e-01, -4.229e-01, -3.177e-02, -1.559e-01, 9.507e-02, -4.231e-02, -1.538e-01, 2.965e-02, 1.360e-01, 2.269e-01, -3.023e-01, -1.756e-01, -7.350e-02), r);\n\tr = MulAdd(s4_5, M4(-1.554e-01, 7.256e-02, 1.819e-01, -3.069e-02, -1.896e-01, 8.487e-03, 3.531e-02, 1.163e-02, 9.509e-02, 7.207e-02, 3.051e-02, 1.369e-01, -1.521e-02, -3.002e-02, -1.198e-01, 5.352e-02), r);\n\tr = MulAdd(s4_6, M4(1.679e-01, 8.049e-03, 3.098e-02, -3.888e-03, 1.408e-01, -5.948e-02, -4.859e-02, -6.342e-02, 1.652e-01, -5.122e-02, 2.694e-02, -4.236e-03, -7.010e-02, -2.119e-01, -2.484e-02, -1.795e-01), r);\n\tr = MulAdd(s4_7, M4(4.459e-02, 9.580e-02, -1.811e-02, 1.641e-01, 7.625e-02, -9.174e-02, -4.983e-02, -1.211e-01, -4.453e-02, -2.507e-03, -6.407e-02, 6.882e-03, -8.679e-03, -2.247e-01, 6.515e-02, 4.370e-03), r);\n\tr = MulAdd(s4_8, M4(-4.617e-03, -9.140e-02, 5.284e-03, -5.855e-02, 1.690e-01, -2.470e-02, -2.958e-02, -8.857e-02, 4.823e-02, 1.163e-01, -5.515e-02, 7.202e-02, -3.170e-03, -2.632e-01, -3.346e-02, 2.844e-04), r);\n\tr = MulAdd(s5_0, M4(-1.674e-02, 4.465e-02, -1.055e-02, 7.767e-02, -2.578e-04, -9.568e-03, 5.266e-02, -1.918e-02, -1.499e-01, 2.841e-02, 2.862e-02, -7.700e-02, -1.363e-01, 7.312e-02, -2.431e-02, -6.614e-02), r);\n\tr = MulAdd(s5_1, M4(-1.206e-01, -1.045e-02, -1.220e-01, 3.041e-02, 1.275e-01, -9.547e-02, 2.891e-02, 1.913e-02, 1.539e-01, 1.372e-01, -3.102e-02, 6.877e-04, -1.430e-01, 1.275e-01, 3.678e-02, 3.973e-02), r);\n\tr = MulAdd(s5_2, M4(-9.990e-02, 6.500e-02, 2.164e-02, -3.470e-02, -1.054e-02, 1.669e-02, 6.746e-02, -4.130e-03, -5.044e-02, 8.461e-02, 1.025e-01, -7.755e-02, 2.416e-02, 4.338e-02, 3.518e-02, 5.068e-02), r);\n\tr = MulAdd(s5_3, M4(-4.167e-02, 8.291e-02, -2.738e-02, -8.643e-02, -3.288e-01, -9.592e-03, 5.701e-02, 1.109e-01, -7.073e-02, -1.127e-02, 9.348e-03, 1.247e-01, 7.212e-02, -2.192e-02, -1.036e-01, 2.019e-01), r);\n\tr = MulAdd(s5_4, M4(1.178e-01, 3.756e-01, 2.588e-01, -1.759e-01, 1.811e-01, -1.029e-01, 2.225e-01, -9.112e-02, -2.861e-01, 3.868e-02, 2.409e-02, 1.286e-01, -4.091e-02, 8.834e-02, 5.362e-01, 1.704e-01), r);\n\tr = MulAdd(s5_5, M4(8.134e-02, -8.084e-02, -1.983e-02, 5.903e-02, -7.677e-02, -1.245e-01, -7.246e-01, 2.680e-02, -6.540e-02, 1.478e-01, 6.562e-02, -8.869e-02, -1.622e-02, 8.597e-02, -1.023e-01, 9.386e-02), r);\n\tr = MulAdd(s5_6, M4(-7.100e-02, 1.966e-02, 3.316e-03, 1.300e-02, -1.048e-02, 9.209e-02, 1.191e-02, 1.060e-02, -9.255e-02, -1.161e-02, -1.859e-02, 3.663e-02, 3.179e-02, -2.344e-02, -4.789e-02, 5.694e-02), r);\n\tr = MulAdd(s5_7, M4(-1.197e-01, 8.330e-02, 7.398e-03, 7.946e-02, 3.528e-02, 3.732e-02, 1.538e-01, -7.668e-02, -2.119e-01, 7.178e-03, -4.201e-03, -7.287e-02, -1.259e-02, -7.504e-02, 1.869e-02, -1.209e-02), r);\n\tr = MulAdd(s5_8, M4(-1.196e-01, 1.395e-01, 5.809e-02, 1.249e-01, 2.554e-01, 1.052e-01, -2.597e-01, 5.365e-02, 4.474e-02, 1.310e-01, -1.281e-02, -1.988e-01, -1.366e-03, 5.336e-02, -4.164e-02, -4.151e-02), r);\n\tr = MulAdd(s6_0, M4(4.469e-03, 1.737e-02, -1.705e-02, 5.297e-03, 1.855e-01, -8.838e-02, 2.011e-02, -2.865e-02, 3.722e-01, 1.446e-02, 1.195e-01, -8.723e-02, 3.307e-01, 2.032e-01, 4.686e-02, -1.524e-01), r);\n\tr = MulAdd(s6_1, M4(1.355e-01, -1.272e-01, -1.107e-02, -4.717e-02, 1.443e-01, -7.464e-02, -1.940e-01, 1.704e-01, 1.906e-01, 5.857e-02, -1.822e-01, 1.136e-01, -2.085e-01, 1.741e-01, 8.393e-02, -9.816e-02), r);\n\tr = MulAdd(s6_2, M4(1.483e-01, 1.003e-02, -5.125e-02, 1.980e-01, -4.966e-02, 4.141e-02, 1.500e-01, -1.313e-01, -4.901e-02, 4.779e-02, 1.867e-01, -8.433e-02, -5.538e-02, 6.535e-02, -1.589e-02, 8.818e-02), r);\n\tr = MulAdd(s6_3, M4(-2.199e-01, 1.984e-02, 5.543e-02, 2.550e-01, -6.954e-02, -1.127e-01, 1.846e-02, 1.339e-01, 3.304e-01, -7.356e-02, 8.280e-02, -2.870e-01, 1.830e-01, 1.442e-02, -6.192e-02, -4.446e-01), r);\n\tr = MulAdd(s6_4, M4(1.546e-01, -1.441e-01, 6.545e-04, -1.750e-01, -6.359e-02, 6.407e-02, -1.872e-01, 1.754e-01, -6.559e-02, -3.563e-01, -2.623e-01, 4.802e-02, -7.486e-02, 2.299e-01, -1.259e-01, -2.384e-01), r);\n\tr = MulAdd(s6_5, M4(-1.093e-01, -3.822e-02, -4.077e-01, 1.806e-01, 1.153e-01, -7.748e-02, 8.795e-02, -7.897e-02, -3.800e-01, 8.830e-02, 2.954e-01, 8.917e-02, 8.809e-02, 2.980e-02, 1.702e-01, 3.553e-02), r);\n\tr = MulAdd(s6_6, M4(5.084e-02, 1.546e-01, 4.755e-02, -9.203e-02, -1.390e-03, 9.045e-02, 4.932e-02, 4.791e-02, -1.887e-02, 7.416e-03, -2.694e-02, -6.002e-02, 6.272e-02, 4.008e-02, -1.954e-02, -1.398e-01), r);\n\tr = MulAdd(s6_7, M4(1.455e-01, 2.552e-01, 2.080e-02, -1.462e-01, 1.691e-01, -6.206e-02, -1.155e-02, -1.095e-01, 1.461e-02, -4.326e-02, 1.744e-02, -9.827e-02, -1.507e-01, 8.395e-02, 2.241e-02, -3.994e-02), r);\n\tr = MulAdd(s6_8, M4(1.827e-01, 2.126e-01, -2.834e-02, 1.223e-01, 1.185e-01, -6.990e-02, -5.047e-02, 3.786e-02, -1.499e-01, -4.389e-02, -1.992e-02, 1.044e-01, 7.411e-02, 1.526e-01, 7.076e-02, -1.150e-01), r);\n\tr = MulAdd(s7_0, M4(2.013e-02, 2.178e-02, 1.181e-03, -1.664e-02, -5.620e-02, 5.579e-02, 1.369e-02, -5.287e-02, -1.574e-01, 1.091e-01, 1.789e-02, 5.556e-02, 1.153e-01, -9.259e-02, -1.508e-02, 4.501e-02), r);\n\tr = MulAdd(s7_1, M4(-5.281e-02, 1.956e-03, 6.077e-02, 1.593e-02, -6.373e-02, 1.553e-01, 1.510e-03, 1.487e-01, -4.906e-02, -3.564e-02, -1.032e-02, 2.023e-01, 1.741e-02, -3.038e-01, 7.891e-02, 3.233e-01), r);\n\tr = MulAdd(s7_2, M4(-4.136e-02, 7.703e-02, 1.899e-02, 1.387e-03, -3.422e-03, 1.277e-01, -6.664e-02, -1.432e-02, 1.807e-01, -1.567e-01, -1.541e-02, -5.388e-02, 6.383e-02, 8.804e-03, 1.239e-02, 9.009e-02), r);\n\tr = MulAdd(s7_3, M4(-3.707e-02, 1.029e-02, 2.850e-02, 3.530e-02, 9.392e-02, -1.465e-02, 4.523e-02, -1.691e-01, -1.945e-01, 3.733e-02, 1.005e-01, -1.274e-01, -1.351e-01, -1.047e-01, -9.687e-02, -1.313e-01), r);\n\tr = MulAdd(s7_4, M4(1.389e-01, -7.439e-02, 1.753e-02, -8.637e-02, 2.850e-03, 2.085e-01, -8.887e-02, -7.542e-02, -4.613e-01, -3.791e-01, -3.039e-02, 7.370e-02, -2.159e-02, -2.957e-02, -1.411e-01, -4.683e-02), r);\n\tr = MulAdd(s7_5, M4(1.765e-02, 9.105e-02, -2.574e-01, -9.403e-02, -5.962e-02, -1.298e-01, 2.107e-02, -8.077e-02, 1.534e-01, 4.160e-02, 1.538e-01, 1.304e-03, 8.285e-02, -5.715e-02, 1.655e-01, 1.594e-02), r);\n\tr = MulAdd(s7_6, M4(6.028e-02, -1.492e-02, 2.226e-02, 7.234e-02, -1.236e-01, 4.281e-02, 4.460e-02, -3.847e-02, 8.586e-02, 4.478e-03, 3.610e-03, 1.477e-02, 5.615e-02, 1.035e-02, -3.046e-02, 1.156e-01), r);\n\tr = MulAdd(s7_7, M4(-1.278e-01, -8.835e-02, -6.829e-03, 1.548e-02, -5.993e-02, -1.321e-01, 5.002e-02, -1.982e-01, -8.825e-02, -1.431e-01, -1.756e-02, -1.548e-01, -8.113e-02, -7.183e-02, 7.995e-03, 1.356e-01), r);\n\tr = MulAdd(s7_8, M4(-2.751e-02, 6.631e-03, -1.008e-02, 5.478e-02, 5.620e-02, 6.144e-02, -2.082e-02, -2.847e-02, 9.692e-02, 7.541e-02, 2.322e-02, -7.078e-02, 4.336e-02, -9.761e-02, 1.265e-02, -1.849e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -5.217e-03, 3.975e-03, 1.864e-03, 6.483e-03 };\n\tr = MulAdd(s0_0, M4(6.175e-02, 7.904e-03, -3.665e-03, -7.399e-02, -7.346e-02, 3.634e-02, -1.192e-01, -1.515e-01, 1.484e-01, 8.720e-03, -1.163e-01, 5.150e-02, -1.065e-02, 1.991e-02, 1.009e-01, -4.675e-03), r);\n\tr = MulAdd(s0_1, M4(-6.935e-02, -7.346e-02, 1.201e-02, -1.113e-01, 1.152e-01, 1.159e-01, 4.594e-02, -1.963e-02, -6.518e-02, -1.182e-01, -4.926e-02, 6.986e-02, -1.866e-01, -1.810e-01, -6.166e-02, -8.193e-02), r);\n\tr = MulAdd(s0_2, M4(4.910e-02, 1.101e-01, -6.767e-02, 2.115e-02, 7.057e-02, -1.978e-01, 1.134e-01, -7.613e-02, 7.247e-02, 1.279e-01, -5.826e-03, -2.475e-02, -1.172e-01, -2.345e-02, -4.468e-02, -3.181e-02), r);\n\tr = MulAdd(s0_3, M4(8.155e-02, 7.672e-02, 1.507e-02, 8.836e-02, -1.557e-01, 8.005e-02, 1.360e-01, -7.389e-03, 4.173e-02, -4.035e-02, -5.395e-02, 1.547e-01, -1.499e-01, -1.392e-01, -2.050e-01, 1.376e-01), r);\n\tr = MulAdd(s0_4, M4(2.037e-01, 3.868e-02, -4.294e-01, -1.597e-01, 5.532e-02, 1.920e-01, -2.047e-01, -1.017e-01, 4.292e-02, -9.700e-02, 1.780e-01, -2.914e-01, -1.116e-01, -1.649e-01, -6.510e-02, 3.566e-01), r);\n\tr = MulAdd(s0_5, M4(-9.637e-02, -4.248e-02, 5.101e-02, -3.660e-02, 5.758e-02, 1.896e-01, 2.192e-01, 1.228e-01, -9.211e-02, 7.804e-02, -3.575e-02, 7.258e-02, -2.384e-01, -2.825e-01, 8.578e-02, 5.352e-02), r);\n\tr = MulAdd(s0_6, M4(5.512e-02, -6.419e-02, -1.067e-01, -5.827e-02, 4.080e-02, -1.957e-02, -1.244e-01, -1.166e-05, 5.461e-02, 3.495e-02, -3.948e-02, 4.974e-02, -7.014e-03, -1.700e-01, -9.444e-02, -3.135e-01), r);\n\tr = MulAdd(s0_7, M4(-7.096e-02, 2.266e-01, 1.377e-02, -7.295e-02, -6.385e-02, 7.439e-02, -1.597e-02, -7.386e-02, -8.307e-02, -1.431e-02, -1.351e-02, -9.143e-02, -6.140e-02, -4.966e-02, -1.690e-02, -2.453e-01), r);\n\tr = MulAdd(s0_8, M4(6.443e-02, 1.683e-02, -9.873e-02, -5.451e-02, 7.690e-02, 1.760e-01, -1.316e-03, -2.711e-02, -5.968e-02, -5.324e-05, 8.865e-03, -6.855e-02, 1.687e-02, 3.854e-03, 3.375e-02, -3.976e-02), r);\n\tr = MulAdd(s1_0, M4(1.615e-01, 7.675e-02, 6.130e-02, -4.256e-03, 9.372e-03, 2.417e-02, -1.267e-02, 3.520e-02, 1.206e-01, 2.362e-01, -3.508e-02, -7.321e-02, -9.689e-03, 9.016e-02, -1.529e-01, 1.355e-01), r);\n\tr = MulAdd(s1_1, M4(-1.988e-01, -1.015e-02, 2.393e-01, -1.601e-01, 4.967e-02, -5.905e-02, 1.260e-01, -4.496e-02, -1.891e-01, -3.653e-01, 2.536e-01, 9.012e-02, 1.276e-01, 7.789e-02, -1.061e-01, 5.498e-03), r);\n\tr = MulAdd(s1_2, M4(-2.339e-03, 4.687e-02, 1.132e-01, 3.913e-02, -4.598e-02, 4.816e-02, 2.352e-01, 2.179e-03, -1.488e-01, 7.972e-03, 1.557e-01, -6.133e-02, -9.475e-03, 6.294e-03, -5.184e-02, -1.031e-01), r);\n\tr = MulAdd(s1_3, M4(1.105e-02, -6.888e-02, 1.064e-01, 3.589e-01, -9.730e-02, -4.418e-02, 5.653e-02, 7.384e-02, 1.762e-01, -3.605e-01, 3.389e-02, 1.859e-01, -1.296e-02, -6.121e-02, -5.948e-02, -1.777e-01), r);\n\tr = MulAdd(s1_4, M4(7.330e-02, -8.254e-03, -3.507e-01, 5.515e-02, -1.987e-02, -7.001e-02, -2.392e-01, -2.122e-02, 2.566e-01, -3.824e-01, 2.372e-01, -1.870e-01, 8.637e-02, -4.245e-02, -9.150e-02, 1.525e-01), r);\n\tr = MulAdd(s1_5, M4(7.944e-03, -1.674e-01, 2.152e-01, 9.441e-02, -9.459e-02, -9.693e-02, 8.168e-03, 6.529e-02, -8.503e-02, 7.804e-02, -4.030e-02, 1.310e-01, -5.279e-02, -2.527e-01, 1.448e-01, 1.888e-02), r);\n\tr = MulAdd(s1_6, M4(-1.401e-01, -5.401e-02, 5.864e-02, 1.263e-01, 1.251e-01, 5.264e-02, -7.004e-02, 2.028e-01, -2.203e-01, 2.476e-01, 2.297e-01, 6.445e-02, -1.481e-02, -9.286e-03, 4.134e-02, -6.499e-02), r);\n\tr = MulAdd(s1_7, M4(-2.704e-01, 6.734e-03, 3.892e-02, -6.472e-02, 4.565e-02, -1.986e-01, 6.916e-02, -3.508e-02, -1.698e-01, -8.924e-02, -5.845e-02, -1.234e-01, 3.300e-02, 2.426e-01, -2.275e-02, 3.760e-02), r);\n\tr = MulAdd(s1_8, M4(-1.011e-01, -6.674e-03, 6.852e-02, 3.372e-02, -1.279e-02, 1.429e-02, -1.103e-01, 5.372e-02, -4.091e-02, 2.646e-01, 6.331e-02, -2.434e-01, 2.344e-02, 1.366e-01, -1.057e-01, 3.504e-02), r);\n\tr = MulAdd(s2_0, M4(-5.324e-02, -3.071e-02, 5.975e-02, -2.922e-02, 8.010e-02, 6.930e-02, 1.457e-01, -6.005e-02, -2.727e-01, 2.198e-03, 3.540e-02, 6.303e-04, -3.038e-02, 1.291e-01, 1.789e-01, -4.896e-02), r);\n\tr = MulAdd(s2_1, M4(6.958e-02, 1.246e-01, -2.802e-01, -3.116e-02, 1.069e-01, 3.366e-02, -1.711e-01, -3.527e-02, 1.861e-02, 1.582e-01, -9.334e-02, -5.769e-02, -3.187e-03, -9.438e-04, 3.405e-02, -1.271e-01), r);\n\tr = MulAdd(s2_2, M4(2.848e-02, -1.627e-01, 7.388e-02, -5.333e-03, -2.879e-02, -1.583e-01, -4.654e-02, -1.668e-02, -3.003e-02, 1.797e-04, -1.960e-01, -1.396e-01, -9.244e-02, -9.475e-02, 4.937e-02, -8.130e-02), r);\n\tr = MulAdd(s2_3, M4(-1.044e-01, -3.147e-02, 3.702e-02, -1.435e-01, 1.565e-01, -2.193e-01, 8.940e-02, 1.489e-01, 7.603e-02, -2.348e-03, 1.507e-01, 2.641e-02, -2.228e-02, 2.442e-02, 1.193e-01, -9.107e-02), r);\n\tr = MulAdd(s2_4, M4(-4.541e-02, -1.822e-02, 5.480e-02, 7.376e-02, -1.664e-02, 7.738e-02, 2.179e-01, -9.347e-02, -1.609e-01, -2.437e-01, -3.415e-02, 1.117e-01, -3.191e-01, 5.072e-02, -9.656e-02, -2.812e-01), r);\n\tr = MulAdd(s2_5, M4(-7.991e-03, 1.267e-01, 8.988e-02, 7.728e-02, 1.820e-02, 2.832e-01, 1.555e-01, 1.880e-01, 5.675e-02, 1.278e-01, -9.058e-02, 3.068e-02, -1.569e-01, -3.377e-02, -5.649e-02, -2.665e-03), r);\n\tr = MulAdd(s2_6, M4(-1.005e-01, 5.469e-02, -6.973e-03, -1.356e-02, -3.452e-02, -1.223e-01, -1.872e-01, 1.028e-01, -9.021e-02, -1.790e-01, -1.233e-01, 2.326e-01, -1.541e-03, 2.155e-01, 2.144e-02, 1.006e-02), r);\n\tr = MulAdd(s2_7, M4(-9.650e-03, 6.253e-03, 5.875e-02, -6.425e-02, -9.983e-03, -3.266e-01, -2.351e-01, -7.764e-02, 6.405e-02, -2.074e-01, -4.355e-02, -2.418e-01, -8.434e-02, 2.632e-01, 3.880e-02, -1.288e-02), r);\n\tr = MulAdd(s2_8, M4(-1.866e-02, -1.200e-01, 4.102e-02, -7.159e-02, -1.540e-01, -4.532e-02, 2.856e-02, 4.375e-02, 3.164e-02, -1.313e-01, 1.993e-03, -1.613e-01, -1.341e-02, 4.682e-02, -2.229e-02, 1.230e-01), r);\n\tr = MulAdd(s3_0, M4(1.488e-02, 9.005e-02, -1.650e-01, 1.927e-01, 4.848e-03, 1.231e-01, 7.445e-02, 5.600e-02, 1.567e-01, -1.090e-02, -8.759e-02, 9.907e-02, 3.108e-02, -1.901e-02, 1.039e-03, 9.998e-02), r);\n\tr = MulAdd(s3_1, M4(-3.929e-02, 2.184e-01, 1.619e-01, -9.356e-02, -6.699e-02, 7.045e-02, -4.070e-02, -8.299e-03, 6.922e-02, 1.851e-01, 8.325e-02, -8.713e-03, 2.463e-02, 6.725e-02, -1.198e-01, 8.346e-02), r);\n\tr = MulAdd(s3_2, M4(2.297e-01, 4.461e-01, -8.689e-02, 8.217e-02, -3.398e-03, -1.322e-02, 8.756e-02, -1.440e-01, -2.319e-02, 1.481e-01, -1.330e-01, -7.913e-02, -8.133e-02, -1.326e-02, -8.318e-02, 1.419e-01), r);\n\tr = MulAdd(s3_3, M4(3.549e-01, 1.413e-01, -1.879e-01, 4.910e-02, 1.367e-02, -1.706e-01, -6.252e-02, -5.629e-03, 2.197e-01, -1.161e-02, -5.096e-02, 1.135e-01, 1.198e-01, 3.848e-02, 7.361e-02, -4.333e-02), r);\n\tr = MulAdd(s3_4, M4(3.386e-01, 2.337e-01, -1.768e-01, -1.808e-01, 7.786e-02, -7.506e-03, 8.529e-02, 5.867e-02, -8.106e-03, 1.265e-01, -2.229e-01, 2.138e-02, -2.045e-01, 1.796e-01, -1.054e-02, -8.061e-02), r);\n\tr = MulAdd(s3_5, M4(-9.682e-02, 8.621e-03, -1.507e-01, -6.597e-02, -5.754e-02, 5.580e-02, -1.207e-02, 6.156e-02, 4.528e-02, 1.013e-01, 2.147e-02, -1.057e-01, -1.034e-01, -9.300e-03, -6.939e-02, 1.647e-01), r);\n\tr = MulAdd(s3_6, M4(3.209e-02, 1.255e-01, -1.737e-02, 7.589e-03, -9.270e-02, 2.263e-02, -1.341e-02, -2.919e-02, -1.460e-02, -1.164e-01, -3.115e-02, -2.339e-01, 7.292e-02, 4.512e-02, -7.044e-03, 5.427e-02), r);\n\tr = MulAdd(s3_7, M4(2.959e-01, 2.545e-01, -3.127e-01, -4.098e-02, 9.167e-02, 2.408e-02, -1.048e-01, 2.020e-01, 1.810e-02, 7.126e-02, -3.573e-02, 3.418e-02, 1.661e-01, -1.921e-01, 1.919e-02, 2.044e-01), r);\n\tr = MulAdd(s3_8, M4(3.867e-02, 3.393e-02, -1.677e-01, 2.496e-01, -2.441e-04, 1.317e-02, -1.696e-02, -1.264e-01, 7.009e-02, 5.613e-02, -7.472e-02, 7.745e-02, -1.621e-02, -1.794e-01, -3.901e-01, 1.637e-01), r);\n\tr = MulAdd(s4_0, M4(-1.428e-01, -1.089e-01, -3.830e-02, 1.444e-02, 1.623e-02, -9.268e-02, -1.500e-01, 4.216e-02, 3.939e-02, -4.109e-02, 1.220e-02, 4.494e-03, -6.716e-02, -8.483e-02, -1.629e-01, 5.165e-03), r);\n\tr = MulAdd(s4_1, M4(-4.999e-02, 7.906e-02, -2.173e-01, 8.715e-02, -2.991e-02, -4.797e-02, 5.975e-02, 1.296e-01, 7.575e-02, -6.238e-02, 1.654e-02, 3.190e-02, -7.018e-02, -1.173e-01, 1.215e-04, 1.444e-02), r);\n\tr = MulAdd(s4_2, M4(-9.951e-02, -2.135e-01, -6.087e-02, 6.044e-03, 1.522e-01, 7.643e-02, 2.089e-01, 7.293e-02, 6.425e-02, -3.798e-02, 1.156e-01, 8.501e-03, -1.260e-02, 2.014e-02, 3.734e-02, 5.496e-02), r);\n\tr = MulAdd(s4_3, M4(3.064e-02, -4.301e-02, -5.276e-02, 9.839e-02, 1.045e-01, 1.096e-01, -1.898e-01, 2.660e-02, -1.665e-01, 1.566e-02, 1.201e-01, 7.686e-02, 2.139e-01, 2.064e-02, -1.203e-01, 1.569e-01), r);\n\tr = MulAdd(s4_4, M4(1.121e-01, 2.903e-02, -4.011e-02, -6.393e-02, 5.334e-02, 1.105e-01, 3.123e-02, 2.782e-01, 1.157e-01, -8.022e-02, -8.132e-02, -2.135e-02, -2.199e-02, 2.053e-02, 9.230e-02, -1.862e-01), r);\n\tr = MulAdd(s4_5, M4(-8.481e-02, -1.462e-01, -1.066e-01, 7.641e-02, 5.543e-02, 2.511e-02, 1.210e-01, 7.573e-02, 7.727e-02, 5.993e-02, 1.690e-01, -3.876e-02, -7.304e-02, -1.495e-01, -1.047e-01, -8.634e-02), r);\n\tr = MulAdd(s4_6, M4(-1.278e-01, -2.702e-02, -1.215e-01, 5.285e-02, 1.277e-01, -7.058e-02, 4.249e-02, -5.602e-02, -5.366e-02, -8.487e-02, 7.268e-03, -3.483e-02, 2.169e-01, -1.059e-01, 5.655e-02, 1.155e-01), r);\n\tr = MulAdd(s4_7, M4(-1.284e-01, -6.037e-02, 2.295e-01, -7.331e-02, -7.732e-02, -8.565e-02, 2.233e-01, 6.804e-02, 3.330e-02, 3.514e-02, 1.514e-01, 5.941e-02, 2.931e-02, 2.716e-02, -2.180e-01, 4.854e-01), r);\n\tr = MulAdd(s4_8, M4(-7.057e-02, -8.788e-02, 5.648e-02, -1.189e-01, 9.679e-02, -3.120e-02, -5.615e-02, 1.174e-01, -1.002e-01, -2.512e-02, 1.596e-03, 1.479e-01, -4.285e-02, -1.325e-01, -5.417e-02, 1.184e-01), r);\n\tr = MulAdd(s5_0, M4(-7.336e-02, 4.986e-02, -6.978e-02, -1.250e-01, 1.747e-02, -1.301e-01, 8.508e-04, -6.684e-03, 5.767e-02, -2.091e-01, -7.641e-02, 8.003e-03, 1.121e-02, 1.188e-01, 3.061e-02, 5.473e-02), r);\n\tr = MulAdd(s5_1, M4(-4.532e-02, -8.673e-02, 1.559e-01, 4.620e-02, 4.773e-02, -1.382e-01, -2.404e-01, -3.637e-02, -1.933e-02, 1.359e-02, -4.025e-01, -5.301e-02, -5.870e-02, -1.347e-01, 9.181e-02, -6.606e-02), r);\n\tr = MulAdd(s5_2, M4(8.472e-02, -1.045e-02, -3.147e-03, 1.595e-02, -2.099e-02, 2.361e-02, -1.277e-01, 6.447e-03, 1.178e-01, 2.549e-01, -1.025e-01, 6.712e-02, 3.116e-02, 2.829e-02, 6.850e-02, 4.284e-02), r);\n\tr = MulAdd(s5_3, M4(1.353e-01, 1.083e-01, 7.092e-02, 8.925e-02, -1.226e-01, -1.477e-01, 1.308e-01, 7.759e-02, -8.527e-02, 8.495e-02, -3.606e-02, 7.682e-02, 1.057e-01, -4.422e-02, 1.012e-01, -3.112e-02), r);\n\tr = MulAdd(s5_4, M4(5.194e-01, 1.127e-01, -1.789e-01, -2.902e-01, -8.033e-02, 2.070e-01, -1.377e-01, 1.797e-01, -9.848e-02, -2.584e-01, -3.094e-01, -3.850e-02, 6.486e-02, -2.379e-02, -7.151e-02, -1.400e-01), r);\n\tr = MulAdd(s5_5, M4(1.470e-02, -5.933e-02, 3.310e-01, -2.670e-02, -6.346e-03, 3.447e-01, 6.178e-02, 1.894e-01, 2.137e-01, 4.231e-01, -1.992e-01, -7.742e-02, -1.112e-01, 5.088e-02, 7.837e-02, -1.893e-02), r);\n\tr = MulAdd(s5_6, M4(-3.262e-02, -5.235e-02, 2.604e-02, -1.442e-03, -1.549e-01, 1.616e-01, 2.533e-02, 3.798e-02, 2.459e-02, -3.005e-02, -1.046e-01, -1.406e-01, -1.479e-01, 2.075e-01, 1.014e-02, -1.128e-01), r);\n\tr = MulAdd(s5_7, M4(-2.366e-02, -9.877e-02, 2.663e-01, -5.407e-02, 3.387e-01, 9.756e-02, 1.765e-02, -8.855e-02, 8.803e-02, -7.577e-02, -7.924e-02, -1.757e-01, 2.251e-01, -8.353e-02, 1.433e-01, -8.220e-02), r);\n\tr = MulAdd(s5_8, M4(-9.193e-02, 1.416e-01, -3.479e-02, -1.860e-01, 9.943e-03, -4.209e-01, 2.237e-01, -8.746e-02, 8.944e-03, -4.964e-02, 8.007e-02, -7.402e-02, 2.539e-02, -5.937e-02, -7.718e-02, 6.535e-02), r);\n\tr = MulAdd(s6_0, M4(-1.149e-02, 1.336e-01, -2.739e-02, -3.410e-02, 2.509e-01, -5.544e-02, 4.526e-02, 2.260e-02, -9.964e-03, 1.702e-01, -2.814e-01, 1.477e-01, -9.708e-02, -1.924e-02, -1.130e-01, -9.316e-02), r);\n\tr = MulAdd(s6_1, M4(1.282e-01, 1.518e-01, 7.988e-02, -2.483e-04, -3.388e-02, 6.106e-03, 8.260e-02, -1.189e-01, 2.677e-01, -1.093e-02, 2.075e-01, -6.567e-03, -2.249e-01, -4.893e-02, 1.156e-01, 5.537e-02), r);\n\tr = MulAdd(s6_2, M4(-4.985e-02, 6.145e-03, -7.943e-02, -6.762e-02, 1.689e-03, 8.528e-03, 1.398e-01, 4.994e-02, 1.496e-01, 3.995e-02, -1.541e-01, -2.495e-01, -8.654e-02, 9.015e-02, -1.485e-01, -8.601e-02), r);\n\tr = MulAdd(s6_3, M4(-4.579e-02, 1.257e-01, -1.238e-01, -1.227e-01, 1.272e-01, 5.987e-02, 4.823e-02, 1.464e-01, 9.932e-02, 3.692e-02, -1.035e-01, 1.131e-01, -2.758e-01, 9.812e-02, 1.047e-01, 2.907e-02), r);\n\tr = MulAdd(s6_4, M4(-2.408e-02, 2.359e-01, 1.678e-01, -2.143e-01, -1.030e-01, 9.555e-02, 9.212e-02, 1.842e-01, 5.318e-01, -1.305e-01, 8.809e-02, -1.592e-01, 8.247e-02, 2.926e-02, -1.886e-01, -1.824e-02), r);\n\tr = MulAdd(s6_5, M4(-1.915e-01, 2.335e-02, -2.525e-02, -1.063e-02, 9.678e-02, -6.154e-02, -7.538e-02, -9.964e-02, 1.441e-01, 6.867e-02, -2.635e-01, -3.383e-02, -9.144e-02, -1.622e-01, 1.558e-01, -2.456e-01), r);\n\tr = MulAdd(s6_6, M4(-2.307e-01, -5.792e-03, -2.040e-02, -5.944e-02, 1.412e-02, -6.434e-02, 1.781e-01, -1.091e-01, -1.130e-02, -6.017e-02, 6.683e-03, -1.664e-01, -1.574e-01, -2.125e-02, -6.781e-02, -1.266e-01), r);\n\tr = MulAdd(s6_7, M4(1.197e-01, 5.015e-01, 6.010e-02, 8.000e-02, 8.383e-02, -8.292e-02, 1.608e-01, -6.668e-02, -6.837e-02, 7.250e-02, -2.721e-01, 2.325e-01, -1.741e-02, 3.360e-02, 2.856e-03, 4.512e-02), r);\n\tr = MulAdd(s6_8, M4(-3.674e-02, 2.187e-01, -1.116e-02, 4.427e-02, -1.097e-01, -1.043e-01, 1.155e-01, 4.850e-02, 8.935e-02, 4.684e-02, -8.794e-02, 1.239e-02, -8.093e-02, -2.943e-02, -5.811e-02, 9.012e-02), r);\n\tr = MulAdd(s7_0, M4(3.852e-02, -1.208e-01, 5.057e-02, -6.356e-02, -1.381e-02, -9.910e-02, -6.690e-02, -2.560e-01, -1.577e-01, -9.102e-02, 1.005e-01, 4.090e-02, 1.631e-01, -9.212e-03, -1.694e-01, -4.077e-04), r);\n\tr = MulAdd(s7_1, M4(5.392e-02, 2.484e-02, 6.332e-02, -7.669e-03, 7.114e-03, 1.714e-01, 2.427e-01, -1.117e-01, -8.476e-02, -2.812e-01, 1.370e-02, -1.133e-02, 3.609e-02, 2.885e-01, 9.425e-02, 1.530e-01), r);\n\tr = MulAdd(s7_2, M4(-6.421e-02, -6.706e-02, -3.964e-02, -4.779e-02, -1.862e-02, 1.248e-01, -2.874e-01, -3.995e-02, 7.169e-02, 1.507e-01, 1.772e-01, -2.482e-02, 4.256e-02, -5.777e-02, 4.751e-02, -1.001e-01), r);\n\tr = MulAdd(s7_3, M4(-5.318e-02, 3.495e-06, -8.124e-02, 1.093e-01, -1.059e-01, -1.241e-01, -6.011e-02, -5.487e-02, 2.842e-02, -1.128e-01, -7.228e-03, 1.620e-01, 1.305e-01, 7.061e-02, -1.104e-02, 3.548e-02), r);\n\tr = MulAdd(s7_4, M4(-2.013e-01, 1.019e-01, 1.301e-01, 3.976e-02, -1.030e-01, 4.746e-02, -3.342e-02, 1.966e-02, -8.156e-02, -2.459e-01, 1.101e-01, -5.803e-01, 7.450e-02, 5.037e-02, -7.837e-02, 2.862e-03), r);\n\tr = MulAdd(s7_5, M4(-3.368e-02, -4.640e-02, 1.928e-01, 6.733e-03, 1.056e-01, -1.108e-01, 1.836e-01, -1.951e-03, -9.614e-02, 1.760e-02, 4.410e-01, -1.877e-01, 6.688e-02, -1.423e-01, 1.370e-01, 6.039e-02), r);\n\tr = MulAdd(s7_6, M4(1.508e-02, -8.418e-02, 5.578e-02, -3.385e-02, 7.789e-02, -2.398e-02, -9.028e-02, -2.499e-01, -7.129e-03, 1.097e-02, -3.166e-02, 1.110e-01, -4.634e-02, 1.620e-02, 8.152e-02, 2.475e-02), r);\n\tr = MulAdd(s7_7, M4(-6.457e-02, -7.338e-02, -1.095e-02, -1.514e-01, 6.464e-02, -1.237e-01, 6.907e-03, -3.423e-01, -1.199e-01, -1.148e-01, -6.688e-02, -4.312e-04, 1.324e-01, -1.295e-01, 1.495e-01, 1.148e-02), r);\n\tr = MulAdd(s7_8, M4(-3.264e-02, -8.084e-02, 1.435e-01, 2.666e-03, -9.529e-02, 9.988e-03, -8.879e-02, 6.709e-02, -2.555e-02, -1.776e-01, 2.287e-01, 1.296e-02, -1.190e-02, -7.646e-02, 9.769e-02, 4.489e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -5.067e-03, 2.460e-02, -2.325e-02, 1.200e-02 };\n\tr = MulAdd(s0_0, M4(8.175e-02, -1.694e-02, -8.569e-02, -5.949e-02, -6.620e-02, -1.900e-01, -1.319e-01, 4.160e-02, 4.001e-02, 3.895e-02, 2.037e-02, -1.075e-01, -8.762e-03, -1.409e-01, 1.355e-01, 5.291e-02), r);\n\tr = MulAdd(s0_1, M4(6.718e-03, 3.007e-03, 3.151e-02, 2.068e-01, -8.581e-02, -1.870e-02, -9.235e-02, -4.185e-02, 6.026e-03, 2.650e-02, 7.126e-02, 1.114e-02, 1.412e-01, -1.346e-01, -7.167e-02, -6.741e-02), r);\n\tr = MulAdd(s0_2, M4(-1.020e-01, 5.801e-02, -6.347e-02, 4.344e-02, 6.335e-02, -1.528e-01, -5.082e-02, -6.141e-02, -2.859e-02, -1.392e-01, 3.954e-02, -1.084e-01, 7.401e-02, 9.802e-02, 2.179e-01, -3.707e-02), r);\n\tr = MulAdd(s0_3, M4(-5.845e-02, -6.849e-02, 1.452e-01, 1.408e-01, -7.707e-02, 1.754e-01, 1.260e-02, 1.368e-02, -7.258e-02, -7.262e-02, 1.172e-01, -9.114e-02, -2.357e-01, 2.814e-01, 3.940e-01, -6.121e-02), r);\n\tr = MulAdd(s0_4, M4(-6.395e-02, 2.226e-01, -7.355e-02, 1.557e-01, -3.481e-03, 9.685e-02, -2.766e-01, -2.425e-01, 1.484e-01, 1.361e-01, 3.202e-02, 2.433e-03, 8.253e-03, -1.182e-01, 2.435e-01, 9.558e-02), r);\n\tr = MulAdd(s0_5, M4(3.071e-02, -5.864e-02, -7.887e-02, 1.055e-01, -2.783e-01, -1.640e-01, -8.075e-02, -3.597e-02, 1.222e-02, -1.484e-01, -1.331e-01, 1.219e-01, 1.875e-01, -9.749e-02, 8.626e-02, 1.095e-01), r);\n\tr = MulAdd(s0_6, M4(-5.163e-03, -1.028e-03, -8.240e-02, 4.871e-02, -8.953e-02, -9.021e-02, -1.815e-02, 1.325e-02, -1.685e-02, -9.949e-02, 7.342e-02, -1.037e-02, 2.025e-01, -9.399e-02, 2.651e-01, -8.776e-03), r);\n\tr = MulAdd(s0_7, M4(3.271e-02, -8.339e-02, -7.430e-02, -8.341e-02, 2.406e-02, -1.733e-01, -1.173e-01, -2.147e-02, 8.118e-02, -5.234e-03, -2.090e-02, 1.759e-02, -5.028e-02, -4.672e-02, 2.634e-02, 2.789e-01), r);\n\tr = MulAdd(s0_8, M4(-6.788e-02, 6.316e-02, 1.329e-01, 3.159e-02, 1.531e-01, -9.412e-02, 9.037e-02, 6.997e-02, 1.121e-01, 5.133e-03, 6.301e-02, 2.824e-02, 2.527e-02, 3.360e-01, 1.835e-01, -6.276e-02), r);\n\tr = MulAdd(s1_0, M4(7.692e-04, -1.298e-01, -8.722e-02, -1.373e-01, -7.525e-02, 3.236e-03, -1.369e-02, -3.295e-02, 8.296e-02, -3.321e-01, 1.751e-01, -8.234e-02, -6.476e-02, -5.886e-02, -4.614e-02, 1.376e-01), r);\n\tr = MulAdd(s1_1, M4(3.652e-02, 3.372e-02, 9.810e-02, 6.269e-03, 7.645e-02, 1.129e-01, 2.408e-02, -1.142e-02, 1.517e-01, -2.540e-01, 1.259e-01, -4.302e-02, -1.289e-01, -6.566e-02, -3.015e-01, -9.834e-02), r);\n\tr = MulAdd(s1_2, M4(-5.508e-02, 1.215e-01, -1.047e-01, -7.241e-02, 2.695e-02, 8.539e-02, 1.089e-01, -1.456e-02, 1.320e-01, 8.422e-02, -1.003e-01, 4.924e-02, 2.336e-02, -1.863e-02, 2.462e-03, -5.588e-02), r);\n\tr = MulAdd(s1_3, M4(-1.951e-01, -1.009e-01, 1.124e-01, -2.740e-02, 1.498e-01, -1.999e-02, 5.868e-03, -9.946e-02, 1.999e-01, -3.002e-01, 3.018e-01, -2.979e-01, -2.358e-02, 4.934e-03, -6.591e-02, -1.072e-01), r);\n\tr = MulAdd(s1_4, M4(-3.023e-01, 2.393e-01, -6.489e-02, 1.939e-01, -5.500e-02, -8.528e-02, 4.696e-02, 9.167e-02, 1.327e-01, -2.103e-01, 3.693e-01, 2.747e-01, -4.635e-03, -9.574e-02, -1.332e-01, -2.372e-02), r);\n\tr = MulAdd(s1_5, M4(-4.051e-02, -1.101e-01, -1.208e-02, -9.351e-02, 1.126e-01, -2.147e-01, 1.626e-01, -7.501e-02, 5.165e-02, 4.960e-02, -1.825e-01, 2.578e-01, -7.848e-03, -1.683e-02, -1.148e-01, 2.115e-01), r);\n\tr = MulAdd(s1_6, M4(8.666e-02, -9.403e-02, 2.449e-02, -1.476e-02, -2.238e-02, 2.431e-01, 5.181e-02, -1.073e-01, 2.711e-01, 9.686e-04, 1.803e-01, -1.269e-02, 1.704e-02, -1.467e-02, 5.393e-02, 3.761e-03), r);\n\tr = MulAdd(s1_7, M4(9.757e-02, -5.646e-02, 5.085e-02, -1.721e-01, 2.511e-02, 1.110e-01, -6.198e-02, -9.647e-03, 1.704e-01, -9.128e-02, 3.873e-01, -1.793e-01, -1.634e-02, 3.471e-02, -1.560e-01, -4.559e-02), r);\n\tr = MulAdd(s1_8, M4(1.608e-02, -3.813e-02, 1.002e-01, -1.142e-01, 1.281e-02, 8.274e-02, 4.468e-02, 7.662e-02, 1.245e-01, 3.294e-01, 4.836e-02, 9.884e-02, -8.359e-02, -8.662e-02, 4.983e-02, 4.233e-02), r);\n\tr = MulAdd(s2_0, M4(1.087e-01, -4.769e-02, 4.811e-02, 1.460e-02, 5.261e-02, -5.656e-02, -6.427e-02, 1.753e-02, -1.460e-02, 2.694e-02, 1.154e-01, 1.164e-02, 3.179e-02, -6.948e-02, -5.754e-02, -5.212e-02), r);\n\tr = MulAdd(s2_1, M4(-1.007e-01, -7.738e-04, -2.879e-02, -1.565e-02, 2.736e-01, -1.106e-01, -3.022e-01, 1.108e-01, -1.894e-01, -1.313e-01, 8.509e-02, 5.408e-02, -5.045e-03, 1.082e-02, -3.259e-03, 3.258e-02), r);\n\tr = MulAdd(s2_2, M4(1.436e-01, 3.734e-02, 7.259e-02, -2.224e-02, 9.575e-02, -1.723e-01, -5.512e-02, -6.942e-02, 8.918e-02, 1.282e-01, 1.010e-01, -4.529e-02, 2.712e-02, -8.669e-02, 8.110e-02, 4.198e-02), r);\n\tr = MulAdd(s2_3, M4(5.501e-02, -8.083e-02, 4.484e-02, -5.572e-02, -2.468e-02, -1.174e-01, 1.079e-01, 9.341e-02, 1.402e-01, 8.040e-02, 5.163e-02, -2.897e-01, 1.123e-01, 7.672e-04, -1.428e-02, -1.394e-02), r);\n\tr = MulAdd(s2_4, M4(5.681e-02, 9.800e-03, -2.085e-01, 5.270e-03, -8.993e-02, 1.132e-01, 8.583e-02, 1.973e-01, 3.957e-02, 4.412e-01, -1.045e-01, -5.221e-02, -3.447e-01, -7.384e-02, -1.200e-01, -3.953e-01), r);\n\tr = MulAdd(s2_5, M4(-1.139e-02, -8.055e-02, 4.224e-02, 2.346e-02, -7.170e-02, 6.123e-02, -1.175e-01, 1.110e-01, 3.642e-02, -4.370e-01, -1.034e-01, -2.471e-02, 1.901e-01, -1.608e-01, 1.655e-01, 7.686e-02), r);\n\tr = MulAdd(s2_6, M4(-1.402e-02, -7.039e-02, -2.052e-02, 7.504e-04, -2.909e-01, -2.023e-01, 3.094e-01, 1.406e-01, -9.770e-02, 6.719e-02, 1.718e-01, -5.942e-02, 5.432e-03, 3.151e-03, 8.278e-04, 2.630e-02), r);\n\tr = MulAdd(s2_7, M4(7.474e-02, -8.459e-02, 1.493e-01, 4.954e-02, -1.415e-01, -1.227e-01, 1.662e-01, -1.843e-01, 9.970e-02, -1.265e-01, -6.688e-02, 7.964e-02, -1.391e-01, 7.834e-02, -8.791e-02, 5.538e-02), r);\n\tr = MulAdd(s2_8, M4(5.384e-02, 2.338e-01, 1.137e-01, -6.666e-02, 1.326e-01, -2.095e-01, -8.753e-02, -6.168e-02, -7.500e-02, 1.145e-02, -1.898e-02, 6.601e-02, 9.443e-02, 1.106e-01, 2.410e-03, -6.149e-02), r);\n\tr = MulAdd(s3_0, M4(1.665e-02, 1.127e-01, -1.350e-01, -1.032e-01, -8.179e-02, 9.332e-02, 1.726e-01, 4.077e-02, -1.100e-01, 3.697e-02, 5.525e-03, 6.523e-02, 2.083e-02, 4.354e-02, -6.635e-02, -4.197e-02), r);\n\tr = MulAdd(s3_1, M4(-2.168e-01, -2.338e-01, 3.560e-01, 1.092e-01, -9.485e-03, -2.303e-02, 5.368e-02, 5.366e-02, 1.152e-01, -8.287e-02, 6.032e-02, 2.436e-02, 6.182e-02, 7.975e-02, 7.848e-02, 9.542e-02), r);\n\tr = MulAdd(s3_2, M4(-1.242e-01, 3.587e-01, -1.079e-01, 7.291e-02, -5.030e-03, 7.853e-02, -1.000e-01, 1.934e-02, 9.251e-02, -9.404e-02, -1.389e-02, -2.388e-02, 3.480e-02, -3.708e-02, 1.649e-01, -6.239e-02), r);\n\tr = MulAdd(s3_3, M4(3.882e-03, -1.262e-02, -3.503e-01, 1.038e-01, 4.361e-02, -1.343e-02, -1.585e-01, 1.887e-02, -6.785e-02, 1.701e-01, 3.468e-02, 1.744e-01, 6.101e-02, 8.358e-02, 1.072e-01, -6.852e-03), r);\n\tr = MulAdd(s3_4, M4(3.522e-02, 8.764e-02, 2.818e-01, 4.541e-01, -2.372e-01, 4.611e-02, -1.067e-01, -1.908e-01, -3.359e-01, 2.583e-02, -2.675e-02, 2.571e-01, -2.065e-01, -1.061e-01, -1.042e-01, -9.321e-02), r);\n\tr = MulAdd(s3_5, M4(2.322e-01, -1.438e-01, 1.788e-01, 3.579e-02, 6.962e-02, -2.912e-01, -6.591e-02, 5.557e-03, 1.749e-01, -1.945e-02, -6.441e-02, -1.344e-01, 2.166e-01, 2.930e-02, 7.383e-02, 1.014e-01), r);\n\tr = MulAdd(s3_6, M4(-2.261e-01, 2.485e-02, -2.500e-01, 1.323e-01, 1.172e-02, -1.858e-01, 2.890e-02, 9.360e-02, 5.834e-02, 2.847e-02, 5.543e-02, 7.950e-02, -5.224e-02, -4.632e-02, -1.439e-01, 1.235e-02), r);\n\tr = MulAdd(s3_7, M4(-1.517e-01, 1.218e-01, -1.181e-01, 1.744e-01, -2.539e-02, 7.465e-02, -5.315e-02, -4.634e-02, 1.238e-02, -6.372e-02, -1.333e-01, 3.696e-02, -1.387e-01, 8.102e-02, 1.716e-01, 5.472e-02), r);\n\tr = MulAdd(s3_8, M4(-6.559e-02, 2.729e-03, -1.297e-02, -1.486e-01, 6.707e-02, -3.678e-02, -3.943e-02, 4.336e-02, -1.812e-02, 2.694e-01, -3.442e-02, 3.155e-02, 7.208e-02, 7.274e-02, 2.978e-01, -3.940e-02), r);\n\tr = MulAdd(s4_0, M4(-3.465e-02, -3.034e-02, 7.630e-02, 1.403e-01, -1.252e-02, 7.796e-02, -5.032e-02, 8.881e-02, 5.965e-03, 1.355e-01, 2.053e-02, -9.148e-02, 8.013e-02, -3.946e-03, 1.344e-01, 8.953e-02), r);\n\tr = MulAdd(s4_1, M4(1.583e-01, 3.370e-02, 8.927e-02, 7.169e-02, 2.966e-03, 3.740e-02, 1.197e-01, -1.622e-02, -9.327e-03, -4.305e-02, 6.365e-02, 5.527e-02, 8.257e-02, 1.567e-01, 5.987e-02, 1.150e-01), r);\n\tr = MulAdd(s4_2, M4(2.552e-02, 5.595e-02, 1.547e-01, -3.538e-02, -1.693e-01, -6.647e-02, -1.526e-01, -5.070e-02, -1.726e-01, 6.701e-02, -3.221e-02, 1.440e-02, -1.106e-01, 1.239e-01, -3.553e-03, -2.591e-02), r);\n\tr = MulAdd(s4_3, M4(-8.017e-02, 4.509e-02, 5.302e-03, -2.601e-03, -1.256e-01, -2.064e-02, 1.372e-01, 1.490e-01, 1.511e-02, -1.598e-01, 8.642e-02, 1.566e-02, 9.403e-02, 1.655e-01, 1.993e-01, -5.423e-03), r);\n\tr = MulAdd(s4_4, M4(2.370e-01, -1.393e-02, 8.122e-02, -1.765e-01, -8.387e-03, 2.716e-02, -1.179e-01, 1.011e-03, -5.295e-02, -1.455e-01, -4.660e-02, 3.690e-02, -2.313e-01, 5.659e-03, -2.144e-01, -2.195e-01), r);\n\tr = MulAdd(s4_5, M4(-7.810e-02, 1.379e-01, 7.611e-02, -4.972e-02, 7.791e-02, 2.354e-02, 1.488e-01, -5.709e-02, 1.128e-01, 1.971e-01, -3.833e-02, -5.006e-02, -8.859e-02, -1.341e-01, 5.348e-02, 1.773e-01), r);\n\tr = MulAdd(s4_6, M4(1.223e-01, -6.146e-02, 4.563e-02, -4.953e-02, 2.958e-02, -3.501e-03, 7.077e-02, -1.045e-01, 8.601e-03, 8.685e-02, 8.424e-02, 9.376e-02, -1.085e-02, 1.768e-01, -1.373e-01, -1.582e-02), r);\n\tr = MulAdd(s4_7, M4(1.227e-01, -2.950e-01, -1.184e-01, -4.928e-02, 1.532e-01, -1.195e-02, -1.455e-01, -9.216e-02, -2.379e-01, 3.406e-03, -3.235e-02, 1.262e-01, -1.763e-01, 1.022e-01, 1.341e-01, -1.310e-02), r);\n\tr = MulAdd(s4_8, M4(1.543e-02, 6.190e-02, 2.085e-01, 5.636e-02, -1.432e-01, -8.273e-02, -1.181e-01, -1.172e-01, 5.136e-02, -1.107e-01, -2.913e-02, -2.501e-02, 4.145e-03, -1.520e-01, -4.142e-02, 2.424e-01), r);\n\tr = MulAdd(s5_0, M4(-2.120e-01, -1.650e-01, 1.832e-03, 1.610e-01, 1.080e-01, -2.009e-02, 2.099e-02, -2.894e-02, 5.138e-02, 1.296e-01, -3.023e-02, -1.079e-01, -6.958e-03, -1.421e-01, -1.021e-01, 6.042e-02), r);\n\tr = MulAdd(s5_1, M4(-2.127e-01, -1.592e-01, -1.114e-01, 1.150e-01, 1.399e-01, 1.044e-02, -2.055e-01, -2.212e-01, 3.304e-03, -2.082e-01, 2.292e-02, -3.990e-02, 8.811e-02, 8.488e-02, 2.211e-02, 6.205e-02), r);\n\tr = MulAdd(s5_2, M4(-1.944e-01, 1.505e-02, -5.527e-02, -4.706e-02, 4.283e-02, 2.693e-01, 6.356e-02, -6.605e-02, -1.454e-01, 1.435e-01, -9.110e-02, -1.689e-01, -4.769e-02, 1.216e-02, -4.311e-02, -1.373e-01), r);\n\tr = MulAdd(s5_3, M4(1.193e-01, 7.729e-02, -1.368e-01, -1.508e-01, -1.828e-02, 2.755e-02, 1.502e-01, -1.052e-01, 2.362e-02, -9.706e-02, 1.241e-01, 2.726e-02, 2.339e-01, 5.539e-02, -2.415e-01, -9.340e-02), r);\n\tr = MulAdd(s5_4, M4(7.527e-02, 1.521e-01, 1.750e-01, -2.241e-01, -1.489e-01, -1.223e-01, -1.495e-02, 2.460e-01, 1.867e-01, 9.202e-02, 3.072e-01, -6.468e-02, -8.080e-02, 3.779e-01, -3.739e-02, -3.178e-01), r);\n\tr = MulAdd(s5_5, M4(5.583e-02, -1.809e-01, 1.902e-03, 3.495e-02, -1.362e-01, -2.026e-01, -6.797e-02, 7.779e-02, -6.602e-03, -2.163e-01, -1.743e-01, -2.702e-01, 1.207e-01, -2.103e-02, 6.260e-02, 8.788e-02), r);\n\tr = MulAdd(s5_6, M4(-5.838e-02, 1.205e-02, 2.150e-04, -7.729e-02, 1.545e-01, 1.068e-02, -1.927e-01, -1.463e-01, -1.943e-01, 3.998e-03, -3.427e-02, 2.359e-01, 1.087e-01, -1.524e-01, -2.440e-02, -7.714e-02), r);\n\tr = MulAdd(s5_7, M4(7.689e-03, -1.592e-01, -1.664e-01, 3.732e-02, -1.136e-01, 1.350e-01, -1.804e-01, 1.284e-01, -1.086e-01, 8.763e-02, 2.806e-01, -3.983e-02, -7.330e-02, -6.553e-02, 1.183e-02, -1.207e-01), r);\n\tr = MulAdd(s5_8, M4(-7.484e-02, 9.195e-02, 9.746e-02, 1.688e-01, 2.331e-01, 3.554e-01, 9.061e-02, -6.124e-02, 1.140e-01, -2.146e-01, -3.030e-04, -2.512e-01, 2.448e-02, 4.512e-02, 1.486e-02, -6.921e-03), r);\n\tr = MulAdd(s6_0, M4(-1.454e-01, -1.499e-01, 9.947e-02, 4.342e-02, -7.904e-02, -1.603e-02, 5.748e-02, -1.114e-01, 6.683e-02, 1.973e-01, -4.840e-02, -9.544e-02, -1.170e-01, -1.969e-01, 1.633e-02, -1.046e-01), r);\n\tr = MulAdd(s6_1, M4(6.078e-02, 3.313e-02, -3.110e-01, -8.444e-02, 4.440e-03, -6.000e-02, -1.246e-01, -8.377e-02, -1.621e-01, -2.073e-01, -2.110e-01, -2.681e-01, -2.036e-01, 4.124e-03, 7.424e-02, -8.063e-02), r);\n\tr = MulAdd(s6_2, M4(1.763e-01, 1.183e-01, 1.006e-01, 3.332e-02, -1.681e-01, 2.043e-01, 1.328e-01, -3.412e-02, 1.243e-01, -1.779e-02, -9.896e-02, -4.547e-02, -6.308e-02, -2.888e-01, -3.873e-02, -6.873e-02), r);\n\tr = MulAdd(s6_3, M4(1.491e-01, -1.762e-01, -3.981e-01, -7.978e-03, -7.435e-02, -5.581e-04, -5.818e-02, 1.080e-01, 6.340e-02, 1.617e-01, 1.582e-02, -9.899e-02, 4.189e-02, -2.024e-01, 5.597e-02, -1.077e-01), r);\n\tr = MulAdd(s6_4, M4(-2.062e-01, -1.078e-01, -1.528e-01, -2.963e-01, 3.182e-02, -8.465e-02, -3.658e-01, 8.401e-02, -4.927e-02, -1.083e-01, -6.493e-02, -3.408e-01, 2.211e-01, 1.792e-01, 5.270e-02, -1.743e-01), r);\n\tr = MulAdd(s6_5, M4(7.843e-02, -6.175e-02, -2.934e-01, 2.443e-01, -1.198e-01, -1.715e-01, -7.102e-03, 2.675e-02, 6.839e-02, 2.838e-01, -6.958e-02, 4.742e-02, 2.483e-01, -8.091e-03, -6.271e-02, 5.051e-03), r);\n\tr = MulAdd(s6_6, M4(4.133e-02, -6.723e-02, -1.961e-02, 2.190e-02, 5.627e-03, -4.316e-02, -3.063e-02, 1.018e-01, -8.854e-02, 8.450e-02, 3.357e-02, 1.446e-01, -1.041e-01, -1.390e-01, 8.766e-02, 8.002e-02), r);\n\tr = MulAdd(s6_7, M4(-1.550e-01, 1.802e-01, -3.769e-02, -2.384e-01, 2.138e-02, -1.589e-02, 6.241e-02, 1.630e-01, -4.882e-02, 1.133e-01, -1.028e-01, -4.794e-02, -1.160e-01, 2.888e-01, 1.580e-01, -9.242e-02), r);\n\tr = MulAdd(s6_8, M4(8.358e-02, -1.748e-01, -1.645e-01, 2.587e-02, -1.026e-02, 1.733e-01, 1.958e-01, 1.793e-02, -4.920e-02, -6.777e-03, 3.666e-02, 3.048e-02, 1.459e-02, -1.088e-01, 7.087e-02, -1.663e-01), r);\n\tr = MulAdd(s7_0, M4(5.895e-02, -4.794e-02, 1.086e-01, -7.724e-02, -5.413e-02, 3.616e-02, -2.307e-01, -4.889e-02, -1.410e-01, -2.301e-02, 8.944e-02, -5.812e-02, 4.765e-02, 2.087e-03, 3.673e-02, -8.790e-02), r);\n\tr = MulAdd(s7_1, M4(9.140e-02, 1.553e-01, -7.140e-02, 7.401e-02, -2.839e-01, 2.154e-02, -1.562e-01, 1.315e-01, -1.543e-01, 8.124e-02, 1.522e-01, 4.624e-02, 9.527e-02, 1.319e-01, -1.317e-01, 2.476e-02), r);\n\tr = MulAdd(s7_2, M4(7.932e-02, -3.181e-02, 7.362e-02, 5.767e-02, -9.275e-02, -1.133e-01, -8.605e-02, 5.333e-02, 7.329e-02, -1.955e-01, 4.367e-02, -6.820e-02, 4.126e-02, 3.145e-02, -4.424e-02, -4.117e-02), r);\n\tr = MulAdd(s7_3, M4(-2.246e-01, -9.220e-02, -7.055e-02, 7.230e-02, 7.646e-04, 6.877e-02, 1.218e-01, 2.049e-01, -2.007e-01, -9.204e-02, -6.821e-03, 2.486e-03, -2.154e-01, 6.851e-02, 2.000e-01, -1.530e-01), r);\n\tr = MulAdd(s7_4, M4(-1.474e-01, 1.235e-01, 1.286e-01, -8.364e-02, 3.537e-01, -2.301e-01, 7.560e-02, -1.851e-01, 2.242e-01, -1.849e-01, 2.154e-01, 2.809e-01, 1.367e-02, 1.298e-01, -1.446e-01, 2.667e-01), r);\n\tr = MulAdd(s7_5, M4(-6.607e-04, 1.046e-01, -2.800e-02, 1.565e-01, 7.318e-02, -1.494e-01, -6.101e-02, -1.297e-01, 5.198e-02, 1.059e-01, 1.264e-01, -2.130e-02, -1.369e-01, -1.306e-01, 1.246e-02, 1.328e-01), r);\n\tr = MulAdd(s7_6, M4(1.957e-02, 5.465e-02, 7.663e-02, 3.571e-02, 2.113e-02, 6.583e-02, 7.021e-03, 2.210e-01, -6.460e-02, -1.017e-01, 7.844e-02, -5.866e-02, 5.942e-02, -1.024e-01, -7.892e-02, -1.215e-02), r);\n\tr = MulAdd(s7_7, M4(6.379e-02, 2.692e-02, 3.743e-02, 1.136e-01, 7.757e-02, 2.353e-02, 5.736e-02, 1.397e-01, 1.707e-02, -3.405e-02, 1.132e-02, -3.412e-02, 1.058e-01, -2.043e-02, -1.351e-01, 8.975e-02), r);\n\tr = MulAdd(s7_8, M4(3.588e-02, 4.297e-02, 4.129e-02, -1.757e-02, 6.987e-02, -7.156e-02, -2.011e-02, -2.481e-02, -3.291e-03, -5.477e-02, 4.980e-02, -1.382e-01, 9.755e-02, 5.748e-02, 1.447e-01, -4.677e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.168e-02, -1.996e-02, -1.898e-02, 1.578e-02 };\n\tr = MulAdd(s0_0, M4(5.937e-02, -2.293e-02, 4.463e-02, 1.063e-01, 4.986e-02, -1.206e-01, 3.787e-02, -2.935e-02, -2.059e-02, -1.142e-01, 2.708e-02, 6.391e-02, -6.658e-02, 6.910e-02, 4.432e-02, -9.706e-03), r);\n\tr = MulAdd(s0_1, M4(8.342e-02, 9.988e-02, -8.872e-02, -1.077e-01, 8.941e-02, -6.181e-02, 2.197e-01, -1.389e-01, -7.792e-02, 1.116e-02, 2.648e-02, 1.142e-01, -5.875e-02, 1.048e-01, -2.993e-01, 1.287e-01), r);\n\tr = MulAdd(s0_2, M4(8.515e-03, -6.301e-02, -3.246e-02, -7.302e-02, -4.694e-02, -5.162e-02, 3.283e-02, 1.284e-01, 3.292e-02, 3.917e-03, 4.455e-04, 3.902e-02, 1.077e-01, 7.922e-02, 7.547e-02, 1.984e-01), r);\n\tr = MulAdd(s0_3, M4(5.984e-02, -1.123e-01, 5.092e-03, 7.493e-02, 8.852e-03, 1.073e-01, -4.862e-04, -1.227e-01, 6.467e-02, 2.370e-01, 2.201e-02, 4.920e-02, 1.976e-02, 2.423e-01, 8.258e-02, -2.042e-01), r);\n\tr = MulAdd(s0_4, M4(1.104e-01, -1.184e-02, 4.333e-02, 1.280e-01, -9.092e-02, 4.953e-03, 5.800e-02, -2.968e-02, 1.006e-01, 2.226e-01, 6.584e-02, -3.137e-01, 3.614e-02, -1.852e-01, 8.170e-02, -3.669e-02), r);\n\tr = MulAdd(s0_5, M4(9.177e-03, 3.203e-02, 1.440e-01, -1.248e-01, 3.477e-02, -3.008e-03, -5.599e-02, 9.376e-02, -4.932e-02, -2.787e-02, 5.835e-02, -1.218e-01, 2.021e-02, -1.881e-01, -2.538e-02, -2.028e-01), r);\n\tr = MulAdd(s0_6, M4(1.072e-01, 2.250e-01, 5.476e-02, 6.869e-02, -6.962e-02, 7.225e-02, 5.069e-02, 5.585e-04, -1.927e-02, -1.290e-01, -3.297e-03, 7.809e-02, 1.727e-01, -1.283e-01, 6.731e-03, 1.033e-01), r);\n\tr = MulAdd(s0_7, M4(4.805e-02, 2.181e-02, 9.102e-02, -1.635e-01, -3.383e-02, 4.860e-02, -7.892e-02, 1.356e-02, -4.804e-02, 1.178e-01, 3.489e-02, 1.040e-02, 4.216e-02, 2.385e-02, 1.314e-02, -9.646e-02), r);\n\tr = MulAdd(s0_8, M4(4.335e-02, -2.793e-04, 1.483e-02, 3.358e-02, 3.870e-03, -7.282e-02, -4.608e-02, 1.967e-01, -9.398e-02, -1.592e-03, 5.984e-02, -5.951e-02, -6.416e-02, 4.254e-02, -1.406e-02, -6.531e-02), r);\n\tr = MulAdd(s1_0, M4(-6.368e-02, -5.346e-02, -1.291e-01, 6.706e-02, -6.380e-03, 5.830e-02, 1.084e-01, 1.159e-01, -4.290e-02, -2.932e-01, -1.320e-01, 3.104e-01, -5.508e-02, -5.885e-02, 1.250e-01, -6.253e-02), r);\n\tr = MulAdd(s1_1, M4(-5.418e-02, 9.444e-02, -1.881e-01, -7.574e-02, 1.423e-02, -2.660e-02, 5.467e-02, -7.591e-02, -5.805e-02, 3.760e-01, 1.647e-01, -1.093e-02, -9.242e-02, -4.123e-02, 8.769e-02, -4.475e-02), r);\n\tr = MulAdd(s1_2, M4(-4.797e-02, -4.127e-02, -7.547e-02, -8.719e-02, -6.771e-02, 3.789e-02, 3.921e-02, -1.768e-02, 3.238e-02, 1.440e-01, 6.898e-02, -7.619e-02, 2.587e-02, -2.627e-02, -8.274e-02, -7.502e-02), r);\n\tr = MulAdd(s1_3, M4(-1.377e-01, 1.457e-02, -1.122e-03, 8.004e-03, 4.097e-02, -5.827e-02, -2.435e-02, -1.067e-01, -5.614e-02, 3.039e-01, -2.157e-01, 1.790e-02, -6.650e-02, 4.609e-02, -1.470e-02, 8.873e-02), r);\n\tr = MulAdd(s1_4, M4(3.185e-02, -8.179e-02, -3.400e-03, 6.147e-02, -5.562e-02, -2.330e-02, -1.119e-01, 3.381e-02, 1.271e-01, 7.784e-01, 8.042e-02, -7.207e-01, -1.046e-02, -9.352e-02, -7.585e-02, 8.128e-02), r);\n\tr = MulAdd(s1_5, M4(-1.194e-01, -3.287e-03, -3.034e-02, 9.041e-03, 3.797e-02, -4.496e-02, -5.645e-02, 1.959e-01, -7.990e-02, -1.278e-01, -1.153e-01, 3.814e-02, -4.159e-02, 1.539e-01, 9.543e-02, 4.509e-03), r);\n\tr = MulAdd(s1_6, M4(-4.600e-02, 9.363e-02, 1.716e-02, -1.629e-02, -8.715e-02, 1.116e-01, 1.500e-02, -4.391e-02, 5.248e-02, -2.408e-01, 2.500e-02, -1.324e-01, 3.408e-02, -6.700e-02, -6.231e-02, 1.441e-01), r);\n\tr = MulAdd(s1_7, M4(6.006e-02, -5.199e-02, 7.669e-02, -3.729e-02, 9.547e-02, -1.554e-01, -8.385e-02, 3.733e-02, -7.727e-02, 3.808e-03, 8.038e-02, 1.458e-01, -7.448e-02, 2.456e-01, 8.873e-02, 2.466e-02), r);\n\tr = MulAdd(s1_8, M4(-6.046e-02, 5.374e-02, -4.915e-02, -1.280e-02, 4.251e-02, -2.449e-02, -1.484e-02, -6.294e-02, -1.233e-01, -1.737e-01, 1.045e-01, -7.113e-02, -4.748e-02, 9.857e-02, 3.051e-02, 7.290e-02), r);\n\tr = MulAdd(s2_0, M4(3.988e-02, 1.215e-01, 2.073e-02, 8.147e-02, -1.999e-01, -9.151e-02, 7.208e-02, 7.089e-02, -1.319e-01, -9.644e-02, -6.533e-02, -2.290e-01, -1.754e-02, 1.557e-02, 1.087e-01, -3.825e-02), r);\n\tr = MulAdd(s2_1, M4(3.377e-02, 8.423e-02, 1.295e-01, -5.479e-02, 3.646e-03, 9.721e-03, -9.836e-02, 3.895e-02, -1.662e-01, 5.533e-02, -4.808e-01, -6.657e-02, 2.083e-02, -4.455e-02, -3.605e-02, -5.959e-02), r);\n\tr = MulAdd(s2_2, M4(2.542e-02, -1.808e-01, -9.664e-02, 2.839e-02, -1.618e-01, -1.337e-01, -1.843e-02, 1.430e-01, 2.806e-02, 1.548e-02, 9.068e-02, -7.111e-03, 1.574e-02, -5.401e-02, -1.237e-01, 1.971e-01), r);\n\tr = MulAdd(s2_3, M4(5.944e-03, 2.828e-02, 4.389e-03, 1.235e-01, -8.884e-02, 1.212e-01, 2.049e-01, 1.114e-01, -6.525e-02, 1.918e-01, 2.489e-01, 2.571e-01, 2.687e-02, 1.020e-01, 1.152e-01, 6.966e-02), r);\n\tr = MulAdd(s2_4, M4(4.975e-02, 9.571e-02, 6.714e-02, -5.031e-02, 5.163e-03, 1.960e-01, -2.494e-01, 2.110e-02, 1.925e-01, 8.133e-02, -1.473e-02, 2.836e-01, 1.063e-01, -3.164e-01, 8.172e-02, 1.662e-02), r);\n\tr = MulAdd(s2_5, M4(-2.252e-02, -1.249e-01, -6.242e-02, 9.623e-02, -7.664e-03, -7.865e-02, -4.791e-02, 1.493e-02, -5.184e-02, -1.797e-01, -1.056e-01, 9.278e-03, 5.084e-02, 7.665e-03, -4.054e-02, 1.255e-01), r);\n\tr = MulAdd(s2_6, M4(3.234e-02, -6.118e-02, -1.704e-02, -3.087e-02, 1.263e-01, 2.389e-01, 7.382e-02, 9.601e-02, 5.484e-02, -6.373e-02, -1.740e-02, -1.325e-01, -4.036e-02, -8.706e-02, -2.694e-02, -6.775e-03), r);\n\tr = MulAdd(s2_7, M4(2.323e-02, -2.030e-01, 1.767e-02, -4.558e-02, -1.615e-01, 9.983e-02, 9.543e-02, 6.072e-03, 1.758e-01, -1.039e-01, -1.035e-01, 7.006e-02, -8.250e-02, -5.464e-02, 8.563e-02, -1.959e-01), r);\n\tr = MulAdd(s2_8, M4(2.464e-02, 6.963e-02, 1.998e-02, -2.792e-02, 1.232e-02, -1.589e-01, 2.308e-01, -9.732e-02, 6.288e-02, -2.257e-01, 6.418e-02, -4.960e-02, -1.244e-01, -7.443e-03, -1.028e-01, 6.149e-02), r);\n\tr = MulAdd(s3_0, M4(-6.824e-02, 6.319e-02, 2.871e-02, -1.192e-02, -6.657e-02, 8.899e-02, 7.591e-03, -9.148e-02, 7.225e-02, -1.377e-01, -1.220e-01, 4.634e-02, 2.185e-02, 5.536e-02, -4.606e-02, -5.407e-02), r);\n\tr = MulAdd(s3_1, M4(-8.597e-02, 6.928e-02, 1.251e-01, 5.169e-03, 2.121e-02, 7.393e-02, -7.205e-03, -1.571e-01, -1.590e-01, -2.689e-02, 9.329e-02, 6.116e-03, -7.495e-02, -6.854e-02, -4.035e-02, -1.580e-03), r);\n\tr = MulAdd(s3_2, M4(4.135e-02, 1.288e-01, -3.735e-01, -2.938e-01, 3.338e-03, -3.670e-02, 2.704e-02, -2.551e-02, -4.303e-03, -4.822e-02, 1.012e-01, -2.797e-02, -9.120e-03, 3.496e-02, -1.207e-01, 5.322e-02), r);\n\tr = MulAdd(s3_3, M4(-2.273e-02, 7.031e-03, -2.290e-01, 5.618e-02, -3.347e-02, 7.457e-02, 1.635e-01, 7.182e-02, 2.456e-01, 1.405e-02, -1.609e-01, 4.749e-02, 4.866e-03, -6.041e-02, -5.774e-02, -3.683e-02), r);\n\tr = MulAdd(s3_4, M4(4.012e-02, -2.310e-01, -1.690e-01, 1.429e-01, -1.200e-02, 5.024e-04, -9.359e-02, -1.916e-02, 1.757e-01, 1.968e-02, -1.216e-02, 1.541e-01, 8.348e-02, -4.863e-02, 3.573e-02, -2.066e-03), r);\n\tr = MulAdd(s3_5, M4(-6.490e-02, 3.889e-01, 5.566e-02, 2.052e-01, 1.422e-02, -1.181e-01, -6.391e-02, 1.733e-01, -1.568e-02, 2.046e-01, -1.073e-02, -7.929e-03, 1.964e-02, -6.834e-02, 1.291e-01, -1.093e-01), r);\n\tr = MulAdd(s3_6, M4(-7.826e-02, -6.393e-02, -4.312e-02, -5.907e-02, -1.805e-02, 3.583e-02, 4.076e-02, 4.257e-03, 1.829e-02, 4.131e-02, -4.771e-02, 4.777e-02, -1.655e-01, 4.371e-02, -2.452e-02, -3.887e-03), r);\n\tr = MulAdd(s3_7, M4(9.980e-02, 4.313e-02, -6.232e-02, 1.371e-02, -6.087e-02, 5.576e-04, -3.771e-02, -1.848e-02, 1.194e-01, 5.277e-02, -7.765e-03, -1.474e-02, -1.705e-01, 6.577e-02, -4.634e-02, -8.420e-02), r);\n\tr = MulAdd(s3_8, M4(7.784e-02, -4.871e-02, 3.519e-02, -1.021e-01, 9.847e-02, -7.194e-02, 7.018e-02, 2.838e-02, -1.022e-01, 7.930e-02, 9.779e-03, 9.524e-02, -5.524e-02, -1.703e-01, 1.328e-02, -4.709e-02), r);\n\tr = MulAdd(s4_0, M4(6.635e-02, 1.713e-01, 6.315e-04, -5.086e-02, 1.460e-02, 6.128e-02, -4.817e-02, -1.842e-03, 3.093e-02, 6.817e-02, 1.114e-01, -6.893e-02, 4.283e-02, 1.032e-01, -5.799e-02, -1.508e-01), r);\n\tr = MulAdd(s4_1, M4(3.042e-02, 1.621e-01, 2.273e-01, 1.352e-02, 2.633e-02, -1.172e-01, -1.457e-01, 5.422e-02, 6.442e-02, -2.030e-01, 2.280e-01, -7.099e-02, -1.303e-02, 7.623e-02, -2.583e-01, -1.344e-01), r);\n\tr = MulAdd(s4_2, M4(-3.789e-02, -2.870e-02, 4.769e-02, -3.381e-02, -2.221e-02, -8.522e-02, -2.436e-01, -3.402e-02, 8.091e-02, 5.432e-02, -6.819e-02, 2.341e-02, -3.246e-02, 6.236e-02, 2.118e-02, -1.794e-01), r);\n\tr = MulAdd(s4_3, M4(6.806e-02, -6.803e-02, -2.788e-02, 1.043e-01, 9.637e-02, -1.210e-01, -3.798e-02, -6.496e-02, -3.167e-02, 4.748e-02, 5.062e-02, 1.399e-01, 2.309e-02, -1.467e-02, -3.349e-01, -3.838e-01), r);\n\tr = MulAdd(s4_4, M4(-8.276e-02, 3.518e-02, -2.816e-02, -1.163e-01, 1.189e-01, 2.213e-01, 2.881e-01, 8.944e-02, 1.077e-01, 5.187e-02, 6.710e-02, -2.642e-02, 4.845e-03, 2.246e-01, 1.476e-01, 1.532e-01), r);\n\tr = MulAdd(s4_5, M4(3.816e-02, -9.649e-02, 7.975e-02, -1.843e-01, -5.197e-02, -6.506e-02, 6.936e-02, -1.033e-01, 1.675e-01, 5.399e-03, 8.398e-02, 6.698e-02, 2.103e-02, -1.023e-02, -2.291e-02, 6.593e-02), r);\n\tr = MulAdd(s4_6, M4(-2.078e-02, 4.519e-02, -4.727e-02, -4.325e-02, 8.269e-02, -1.692e-01, -1.491e-03, -1.700e-02, 3.600e-02, -6.412e-02, 8.008e-03, -7.571e-02, -3.149e-02, -1.032e-01, 1.922e-02, -1.210e-01), r);\n\tr = MulAdd(s4_7, M4(1.219e-01, -7.195e-02, 3.661e-02, 1.487e-01, -9.657e-02, 1.968e-01, -3.820e-02, 1.134e-01, 2.622e-02, -3.342e-03, 9.060e-02, 7.066e-02, -2.124e-02, 2.729e-01, 6.725e-02, -1.748e-01), r);\n\tr = MulAdd(s4_8, M4(6.273e-02, -1.209e-01, 7.117e-02, 2.641e-02, 2.375e-01, 1.264e-01, 2.762e-01, -2.528e-01, 2.499e-02, 6.918e-02, 1.109e-01, -5.336e-02, -3.088e-02, -1.585e-01, -1.852e-03, 9.760e-02), r);\n\tr = MulAdd(s5_0, M4(1.189e-01, -1.113e-01, 2.007e-01, -1.077e-01, -1.777e-04, 8.058e-02, 2.036e-02, 5.560e-02, 8.056e-04, 1.197e-01, 2.565e-02, 1.867e-01, 2.823e-02, 2.924e-02, 2.840e-01, 7.127e-02), r);\n\tr = MulAdd(s5_1, M4(-2.611e-03, 1.372e-01, -2.056e-01, -9.923e-03, -4.385e-03, -1.626e-01, -8.826e-02, 3.440e-02, -7.744e-02, 4.044e-02, 1.851e-01, 2.742e-01, 1.524e-02, 4.314e-03, 2.586e-02, 4.220e-02), r);\n\tr = MulAdd(s5_2, M4(-5.841e-02, -3.703e-02, -1.729e-01, -1.789e-01, 5.015e-02, 3.310e-02, -5.206e-02, 8.799e-02, -5.436e-02, -2.004e-01, 6.269e-02, -1.548e-01, 5.159e-03, -3.037e-02, 3.914e-03, 1.735e-02), r);\n\tr = MulAdd(s5_3, M4(4.642e-02, 1.776e-02, 2.240e-02, 1.530e-01, -1.358e-02, -1.500e-01, -5.521e-02, -3.159e-02, -5.773e-02, -9.288e-02, -1.132e-01, 8.716e-02, 3.616e-02, 7.593e-02, 8.513e-02, 1.642e-01), r);\n\tr = MulAdd(s5_4, M4(-3.231e-02, 9.385e-02, 3.161e-02, -9.241e-02, 1.490e-01, 5.756e-02, -6.718e-03, -1.243e-01, -5.694e-02, -3.817e-02, -1.343e-01, 4.011e-01, 6.475e-02, -8.970e-02, 2.720e-01, -8.860e-02), r);\n\tr = MulAdd(s5_5, M4(9.055e-04, -1.747e-01, 7.801e-02, 3.477e-01, 7.295e-02, -7.419e-03, -2.549e-01, 2.997e-01, 2.373e-03, -1.371e-01, -1.807e-01, -1.003e-01, -6.018e-02, -8.462e-03, -3.585e-02, 8.651e-02), r);\n\tr = MulAdd(s5_6, M4(-4.387e-02, -1.482e-01, 4.883e-02, -7.088e-02, -4.485e-02, 1.373e-01, 3.773e-02, -3.221e-02, -5.640e-02, -5.259e-02, 5.393e-03, -2.579e-03, -2.197e-01, -8.668e-02, -7.545e-03, 8.670e-02), r);\n\tr = MulAdd(s5_7, M4(-4.584e-02, -3.105e-02, -4.795e-02, 7.210e-02, -5.926e-02, -2.145e-01, -8.820e-02, 7.103e-02, 7.993e-02, -1.930e-01, -1.305e-01, 8.054e-02, -1.110e-01, -1.978e-01, -8.814e-02, -4.387e-02), r);\n\tr = MulAdd(s5_8, M4(1.532e-01, -6.750e-02, 2.989e-04, -2.344e-02, -9.692e-02, -6.528e-02, 2.085e-01, 1.146e-01, -1.238e-01, -8.914e-02, -7.088e-02, 7.841e-02, -2.884e-02, 1.230e-01, -4.543e-02, -1.687e-02), r);\n\tr = MulAdd(s6_0, M4(3.081e-03, 2.668e-02, 3.257e-02, 9.723e-02, 5.252e-02, 2.582e-02, -5.727e-02, -9.103e-02, -7.886e-02, -1.317e-01, 4.829e-02, -5.289e-02, -7.629e-02, -3.883e-02, 9.692e-02, -2.103e-02), r);\n\tr = MulAdd(s6_1, M4(2.955e-03, 6.440e-02, -2.578e-01, -1.746e-01, -4.254e-02, -1.108e-02, 1.443e-01, 1.771e-01, -1.395e-01, -3.343e-01, 6.528e-02, -1.191e-01, -9.412e-02, 1.384e-01, 8.339e-02, -1.644e-01), r);\n\tr = MulAdd(s6_2, M4(2.409e-02, -8.311e-02, -1.283e-01, -3.643e-03, 5.327e-02, 1.244e-01, -8.937e-02, -1.428e-01, 1.809e-02, -3.257e-02, -2.078e-02, 1.377e-01, -1.504e-01, -6.163e-02, -1.606e-01, -1.277e-01), r);\n\tr = MulAdd(s6_3, M4(-1.773e-01, -2.236e-01, 1.885e-01, 9.712e-03, -1.424e-01, 3.719e-02, -9.438e-02, -8.754e-02, -1.713e-01, -1.251e-01, -1.434e-01, 8.788e-02, -1.422e-01, -8.237e-02, 7.846e-02, -5.479e-02), r);\n\tr = MulAdd(s6_4, M4(-3.731e-02, -1.801e-01, -1.077e-01, 1.602e-03, 3.596e-03, -1.675e-01, -1.324e-02, 1.178e-01, -7.492e-01, -5.005e-02, -1.284e-01, -2.411e-01, -1.177e-01, 4.184e-02, 1.022e-01, -1.371e-02), r);\n\tr = MulAdd(s6_5, M4(-6.394e-02, 5.309e-02, -2.414e-02, 2.214e-01, -2.043e-02, 9.590e-04, -3.341e-03, -8.743e-02, -2.566e-02, 1.464e-01, -1.183e-01, 1.416e-01, -1.272e-01, -8.216e-02, 1.574e-01, 1.021e-01), r);\n\tr = MulAdd(s6_6, M4(-2.556e-01, 4.513e-01, 1.047e-01, 1.659e-01, -5.061e-02, -3.856e-02, 9.099e-03, 1.066e-01, 9.161e-03, 2.961e-02, -4.449e-02, 2.394e-02, -7.822e-02, 3.447e-02, 5.728e-02, -7.670e-02), r);\n\tr = MulAdd(s6_7, M4(7.941e-02, 7.430e-02, 2.056e-02, -2.944e-03, -1.515e-02, 2.618e-02, 5.338e-02, 9.276e-02, -9.431e-02, 2.459e-02, 4.625e-02, -5.752e-02, -2.353e-01, -4.392e-02, 1.227e-01, -1.196e-01), r);\n\tr = MulAdd(s6_8, M4(-1.129e-01, 1.712e-01, -6.834e-02, 3.321e-01, 4.220e-02, 8.974e-02, -2.602e-03, -5.431e-02, -1.216e-02, 1.084e-02, -8.162e-02, 1.976e-01, -4.058e-02, 1.933e-01, 6.706e-02, -7.726e-02), r);\n\tr = MulAdd(s7_0, M4(5.551e-02, -3.296e-02, -2.882e-02, 5.526e-02, 2.951e-02, -1.036e-01, -1.112e-01, -8.518e-02, 1.286e-01, 7.652e-02, 1.076e-01, -7.867e-02, 3.029e-02, -8.501e-02, 1.274e-01, -1.497e-02), r);\n\tr = MulAdd(s7_1, M4(5.751e-02, -1.738e-02, -7.516e-02, 1.059e-01, -6.178e-02, -1.163e-01, 1.264e-01, -1.363e-01, 1.472e-01, 9.282e-02, 4.998e-01, 2.662e-01, 4.779e-02, 5.058e-02, -5.293e-01, -4.943e-02), r);\n\tr = MulAdd(s7_2, M4(-1.004e-02, -2.006e-02, 3.513e-02, 8.537e-02, -3.947e-02, -2.097e-02, -1.330e-01, -1.661e-01, 6.878e-02, -1.212e-01, 1.790e-01, 1.831e-01, -5.628e-02, 1.959e-03, 2.541e-01, 2.014e-02), r);\n\tr = MulAdd(s7_3, M4(1.014e-02, 8.258e-02, -5.835e-02, 2.635e-03, -8.298e-03, -8.856e-02, -3.623e-02, -1.395e-02, 1.996e-01, 1.699e-01, 4.473e-02, -2.008e-02, 8.142e-02, 1.458e-01, 9.426e-02, -1.071e-01), r);\n\tr = MulAdd(s7_4, M4(-3.228e-02, -1.110e-01, 1.505e-02, -6.655e-02, 7.545e-02, -1.883e-01, -1.282e-01, -3.508e-03, -2.321e-02, -3.186e-02, 2.323e-01, -1.491e-01, 2.796e-01, 6.684e-02, 3.796e-02, 1.500e-01), r);\n\tr = MulAdd(s7_5, M4(1.068e-02, -1.265e-01, -1.353e-01, -9.899e-02, 4.629e-02, -1.067e-01, 1.070e-01, 9.997e-02, -3.634e-02, -1.548e-01, 1.127e-01, -3.369e-01, -8.821e-02, 1.451e-02, -6.364e-02, -2.183e-01), r);\n\tr = MulAdd(s7_6, M4(2.495e-03, -6.878e-02, -3.258e-02, -5.085e-02, 7.895e-02, -7.889e-02, -4.088e-02, 1.297e-01, 5.189e-02, 9.643e-02, -1.326e-02, -2.523e-02, -5.041e-03, -7.283e-02, 1.669e-02, 1.419e-02), r);\n\tr = MulAdd(s7_7, M4(1.606e-01, -1.207e-01, 5.464e-02, 2.323e-02, 6.808e-02, 1.081e-01, 4.238e-02, -6.394e-02, 4.764e-02, -7.067e-02, 4.302e-02, -5.596e-02, -6.000e-02, -2.220e-01, -3.503e-02, 9.465e-02), r);\n\tr = MulAdd(s7_8, M4(9.846e-03, 1.402e-01, -1.452e-02, -7.531e-02, 6.204e-02, 1.329e-01, 1.072e-02, -2.937e-02, 3.163e-02, 1.031e-01, -1.080e-03, -1.216e-01, -6.041e-03, -2.592e-02, -7.239e-03, -7.482e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.017e-03, -2.179e-03, -9.947e-04, -1.717e-02 };\n\tr = MulAdd(s0_0, M4(3.786e-02, -3.112e-02, 2.629e-02, 2.290e-02, 4.508e-02, -3.219e-02, -8.563e-02, -1.302e-01, -1.291e-02, 2.642e-02, 1.880e-01, 5.598e-02, -4.183e-02, 1.934e-02, 4.311e-02, -2.900e-02), r);\n\tr = MulAdd(s0_1, M4(1.442e-02, 4.047e-02, -6.616e-02, 3.778e-02, -7.813e-02, -6.908e-02, -7.353e-02, -3.166e-02, -1.249e-01, 2.744e-02, -2.803e-02, 1.487e-02, 9.480e-02, -5.564e-02, -3.953e-02, -3.077e-01), r);\n\tr = MulAdd(s0_2, M4(-1.819e-01, 4.849e-04, 8.099e-02, -8.160e-02, 2.268e-01, -5.019e-02, -2.439e-01, 1.967e-02, -1.063e-01, 9.971e-02, -2.644e-02, 6.571e-02, 1.156e-01, -1.429e-01, 1.537e-02, 1.328e-03), r);\n\tr = MulAdd(s0_3, M4(1.714e-01, -1.112e-02, -3.325e-02, 1.182e-01, 1.532e-02, -4.505e-02, -5.494e-02, 1.101e-01, 4.073e-01, 3.473e-02, 9.761e-02, 3.505e-01, -8.731e-02, -7.174e-02, -2.050e-01, 1.128e-01), r);\n\tr = MulAdd(s0_4, M4(4.445e-02, -3.808e-02, 5.439e-02, 3.406e-02, 5.838e-02, 3.611e-02, 6.767e-02, 7.023e-02, -4.706e-03, -3.040e-02, -1.740e-02, -6.775e-02, -2.607e-01, 6.729e-03, 8.469e-02, -1.808e-02), r);\n\tr = MulAdd(s0_5, M4(1.413e-03, 4.123e-02, -4.701e-02, 9.418e-02, -3.279e-02, -2.479e-02, -2.107e-01, 1.633e-01, 9.501e-02, 8.430e-02, 4.720e-02, -1.022e-01, -1.958e-01, -1.459e-02, 2.013e-02, -5.798e-02), r);\n\tr = MulAdd(s0_6, M4(3.062e-02, -7.145e-02, -7.975e-02, 6.689e-02, -2.102e-02, 4.818e-02, -3.446e-02, -2.829e-02, 1.792e-01, 7.161e-03, -1.020e-01, -6.972e-02, -6.039e-02, 7.220e-03, -5.098e-03, 4.861e-02), r);\n\tr = MulAdd(s0_7, M4(6.546e-02, 1.474e-02, 9.940e-02, 3.281e-02, -4.283e-02, 7.346e-02, -3.103e-02, -1.691e-02, -5.183e-02, -1.116e-02, 1.681e-02, -1.291e-01, -4.107e-03, 6.317e-02, 1.915e-01, -2.165e-01), r);\n\tr = MulAdd(s0_8, M4(-9.153e-02, -6.225e-02, 6.091e-02, 7.788e-03, 3.638e-03, -6.062e-04, -4.613e-02, 2.878e-02, 1.371e-02, 5.369e-02, 4.774e-02, 7.444e-03, -8.460e-02, 1.729e-02, 4.011e-02, 4.154e-03), r);\n\tr = MulAdd(s1_0, M4(9.022e-02, -1.628e-02, 1.448e-01, -1.261e-02, 1.103e-01, -1.530e-02, 2.661e-01, 1.835e-01, -2.674e-02, 2.139e-02, 2.871e-02, 1.505e-01, -4.545e-02, 7.065e-04, -1.055e-01, -1.179e-01), r);\n\tr = MulAdd(s1_1, M4(1.442e-01, -5.332e-02, -2.574e-01, 1.344e-02, 2.326e-01, -4.114e-02, -2.524e-01, 6.122e-02, 2.069e-01, -1.513e-01, -1.736e-01, -1.241e-02, -3.533e-03, 5.831e-02, 4.833e-03, 5.475e-02), r);\n\tr = MulAdd(s1_2, M4(1.091e-01, -8.201e-02, 1.823e-02, -3.055e-02, -5.081e-02, -7.545e-02, -1.518e-01, 2.404e-02, 3.938e-02, -2.439e-02, -2.380e-02, 1.095e-01, -6.177e-02, 9.110e-02, 4.643e-02, 7.123e-02), r);\n\tr = MulAdd(s1_3, M4(-1.171e-01, 5.602e-02, 1.115e-01, 4.051e-02, -6.017e-02, 9.896e-03, 6.392e-02, -2.940e-02, -3.572e-01, 7.977e-02, -8.511e-02, 9.054e-02, 7.819e-02, -8.478e-02, -6.579e-02, 8.911e-02), r);\n\tr = MulAdd(s1_4, M4(9.697e-02, -1.022e-01, -2.703e-01, -1.566e-01, -1.255e-01, -1.421e-01, -3.423e-01, 9.287e-02, -2.351e-01, -5.762e-01, 5.198e-02, -2.300e-01, -2.060e-01, -5.823e-02, -1.229e-01, 1.165e-01), r);\n\tr = MulAdd(s1_5, M4(1.825e-01, 7.774e-02, -1.016e-01, -2.725e-02, -7.310e-02, 6.078e-02, 2.814e-01, 1.973e-02, 9.262e-02, -1.498e-01, -2.977e-02, -1.005e-01, -4.163e-02, -6.892e-02, -4.553e-02, -1.923e-02), r);\n\tr = MulAdd(s1_6, M4(-8.986e-02, -2.023e-02, -5.516e-03, 8.968e-02, 8.664e-02, -4.974e-02, -1.499e-01, 7.626e-02, 6.857e-02, -4.699e-02, 1.069e-01, -6.722e-02, 6.621e-02, -3.576e-02, -2.946e-02, 7.705e-02), r);\n\tr = MulAdd(s1_7, M4(-1.015e-02, -2.559e-02, -8.076e-02, 1.014e-01, 5.824e-02, 1.264e-01, 8.622e-03, 7.740e-02, -1.513e-01, -1.809e-01, -2.511e-02, -1.863e-01, 9.051e-02, 5.982e-02, 1.576e-01, 2.685e-03), r);\n\tr = MulAdd(s1_8, M4(8.626e-02, 2.226e-02, 1.986e-01, 1.037e-01, 1.898e-01, 2.340e-02, 1.760e-01, 4.621e-02, 3.388e-02, -3.321e-02, -1.556e-02, 1.179e-01, -7.777e-02, -1.524e-02, 9.254e-02, 6.025e-02), r);\n\tr = MulAdd(s2_0, M4(3.083e-02, 3.455e-02, 7.274e-02, -3.024e-01, -9.245e-02, -1.497e-02, -2.403e-02, -1.094e-01, 6.849e-03, 2.399e-02, -6.319e-02, 1.405e-01, -5.364e-02, 6.548e-02, 6.240e-02, -2.531e-03), r);\n\tr = MulAdd(s2_1, M4(-1.212e-01, 5.625e-04, -3.083e-01, -1.114e-01, -5.217e-03, 1.887e-02, 2.076e-01, -1.734e-02, -1.215e-01, 5.826e-02, -2.346e-02, 1.103e-01, -1.194e-01, -5.841e-02, -1.227e-02, -2.174e-02), r);\n\tr = MulAdd(s2_2, M4(-3.621e-02, -7.684e-02, -9.088e-04, 1.813e-02, -1.315e-01, -2.461e-04, 1.060e-03, 3.393e-03, -7.380e-02, 1.814e-02, -2.801e-01, 1.468e-01, 1.288e-01, -4.260e-02, -1.871e-02, -5.461e-02), r);\n\tr = MulAdd(s2_3, M4(5.318e-02, 6.631e-03, -9.817e-02, -2.529e-01, 2.421e-02, 2.086e-02, 3.605e-02, 8.178e-02, 4.743e-02, 9.302e-02, 4.339e-02, -7.637e-02, -2.042e-01, -9.427e-03, -4.775e-02, -1.017e-01), r);\n\tr = MulAdd(s2_4, M4(-1.250e-01, -5.397e-02, -6.126e-02, -1.112e-01, 9.591e-02, 1.181e-01, -2.184e-01, 4.689e-02, 3.767e-01, -1.545e-01, -4.446e-02, 2.062e-01, -9.482e-02, 6.146e-03, -3.114e-01, -1.503e-01), r);\n\tr = MulAdd(s2_5, M4(-2.206e-01, -5.046e-02, -4.007e-02, -4.498e-02, -1.744e-01, -3.015e-02, -4.830e-02, 1.551e-03, 1.089e-01, 4.379e-02, -4.175e-02, -5.496e-02, -1.987e-02, -4.003e-02, 2.631e-02, 1.678e-03), r);\n\tr = MulAdd(s2_6, M4(5.501e-02, -2.809e-03, -3.428e-02, 1.954e-02, -1.177e-02, -1.439e-02, 1.093e-01, -1.743e-01, 1.530e-01, -1.372e-01, -3.701e-01, -1.271e-01, -1.260e-02, 4.581e-02, 4.199e-02, -2.764e-02), r);\n\tr = MulAdd(s2_7, M4(-2.162e-02, -2.844e-04, 1.154e-01, -8.801e-02, -1.666e-01, -1.124e-01, -1.474e-01, -1.242e-02, 2.482e-01, 1.539e-01, -1.349e-02, -8.576e-02, 1.625e-03, 7.734e-02, -3.190e-02, -1.014e-01), r);\n\tr = MulAdd(s2_8, M4(-8.863e-02, 6.740e-02, 2.618e-02, 6.910e-02, 8.198e-03, -6.465e-02, 8.453e-02, -1.630e-01, 1.622e-01, -3.858e-02, -3.013e-02, 7.943e-02, 5.486e-02, 1.231e-02, 5.551e-02, 1.091e-01), r);\n\tr = MulAdd(s3_0, M4(-4.926e-02, -5.191e-03, 4.592e-03, 2.580e-03, -5.176e-02, 2.099e-02, -7.537e-02, -5.804e-04, 5.594e-03, 1.473e-02, 1.102e-01, -4.678e-02, 1.494e-01, -2.218e-02, 2.460e-02, -5.700e-02), r);\n\tr = MulAdd(s3_1, M4(-8.926e-02, -5.994e-02, -9.126e-03, 5.391e-02, 1.378e-01, 1.110e-02, -3.565e-02, -1.239e-01, -8.361e-02, 7.913e-02, -1.435e-02, -7.187e-03, -1.193e-02, 1.499e-01, -4.087e-03, 1.375e-01), r);\n\tr = MulAdd(s3_2, M4(-1.276e-01, 4.709e-02, 4.652e-02, -3.621e-02, 6.574e-02, -9.898e-02, -7.531e-02, 1.525e-02, -6.954e-02, -3.843e-02, 5.811e-02, 1.199e-02, 8.230e-02, 2.024e-01, 3.189e-02, -4.189e-03), r);\n\tr = MulAdd(s3_3, M4(-8.962e-02, 2.121e-02, 6.877e-03, 4.628e-02, -6.696e-02, -1.758e-02, 6.365e-02, 1.147e-01, 1.634e-01, -8.616e-02, -1.130e-01, -3.855e-02, 1.976e-01, -4.414e-02, -2.729e-02, 1.943e-01), r);\n\tr = MulAdd(s3_4, M4(1.419e-01, -1.145e-01, 7.334e-02, 3.357e-02, 1.087e-01, 6.161e-02, -4.461e-02, -8.577e-02, 1.379e-01, 5.960e-02, 7.210e-02, 9.497e-02, 9.145e-02, 2.237e-01, -2.762e-02, 1.797e-02), r);\n\tr = MulAdd(s3_5, M4(-1.733e-01, -1.167e-01, 5.172e-02, -8.973e-02, -3.348e-02, 1.052e-01, -5.964e-03, -2.220e-02, -1.058e-01, 4.942e-02, 2.739e-02, 2.404e-02, 1.421e-01, 1.827e-01, 1.569e-01, -1.539e-01), r);\n\tr = MulAdd(s3_6, M4(2.506e-02, 1.950e-02, 2.321e-03, -4.077e-02, 1.772e-01, -7.419e-02, 9.891e-02, 2.252e-01, -2.654e-02, 1.410e-02, 7.146e-02, -2.953e-02, 8.560e-02, 2.365e-02, -4.493e-03, -1.049e-01), r);\n\tr = MulAdd(s3_7, M4(-6.964e-02, 7.567e-02, 1.144e-01, -1.584e-01, 9.097e-02, 1.047e-01, 2.855e-02, 1.349e-01, -1.304e-01, 4.699e-02, 8.094e-02, 2.085e-02, 2.096e-02, -2.421e-03, 8.454e-03, -9.203e-02), r);\n\tr = MulAdd(s3_8, M4(-3.464e-02, -4.869e-02, 3.778e-03, 1.347e-01, 3.872e-02, -2.634e-02, -1.421e-01, -7.913e-02, -1.429e-03, -1.537e-02, -8.353e-03, 4.449e-02, -4.023e-03, 8.170e-02, 1.893e-01, 1.227e-01), r);\n\tr = MulAdd(s4_0, M4(4.691e-02, 6.286e-02, 6.771e-02, -1.503e-01, -1.064e-02, 5.082e-03, 9.837e-02, -9.486e-02, 1.464e-02, -2.707e-02, -6.510e-02, -2.803e-03, 6.008e-02, 9.668e-03, 7.732e-02, -2.190e-01), r);\n\tr = MulAdd(s4_1, M4(4.686e-02, -5.499e-02, 1.427e-02, 1.013e-01, -8.526e-02, 6.392e-02, -2.287e-02, 8.515e-03, -5.218e-02, -4.427e-02, 9.739e-02, -1.362e-01, -3.744e-03, -6.457e-02, -1.491e-01, -1.083e-01), r);\n\tr = MulAdd(s4_2, M4(1.916e-02, -6.114e-02, 5.091e-02, 5.791e-02, -1.167e-01, 2.778e-02, 3.416e-02, 5.700e-02, 8.694e-02, -2.474e-02, -6.353e-02, -4.257e-02, 2.920e-02, -8.550e-02, -2.982e-02, -8.382e-03), r);\n\tr = MulAdd(s4_3, M4(1.841e-02, -1.143e-02, -3.103e-03, -1.753e-01, 7.652e-02, 1.885e-02, -1.299e-02, 3.879e-02, 3.357e-02, -8.420e-04, -4.729e-02, 7.755e-02, 1.938e-02, 6.921e-02, 4.764e-02, -2.407e-01), r);\n\tr = MulAdd(s4_4, M4(3.810e-03, 1.434e-01, -4.722e-02, 1.589e-01, -3.296e-02, -6.644e-02, -2.176e-02, 8.273e-02, -4.930e-02, 5.519e-04, 3.101e-02, -6.996e-03, -2.028e-01, 1.508e-01, -1.391e-01, -9.957e-02), r);\n\tr = MulAdd(s4_5, M4(-8.341e-03, -1.784e-01, 6.608e-02, 1.683e-02, -3.243e-02, 2.721e-02, -2.764e-02, 1.793e-01, -1.665e-01, -4.042e-02, -1.725e-01, -4.332e-02, -2.139e-02, -3.609e-02, -1.666e-01, -8.603e-03), r);\n\tr = MulAdd(s4_6, M4(8.658e-02, 3.472e-03, 1.808e-02, 4.573e-02, 3.757e-03, -2.061e-02, -2.943e-02, 7.366e-02, -2.444e-02, -4.287e-02, 7.998e-02, -1.348e-01, 1.004e-01, -3.994e-02, 1.171e-01, 7.248e-02), r);\n\tr = MulAdd(s4_7, M4(1.384e-02, -4.799e-03, 6.849e-02, -4.029e-02, -5.857e-02, -4.379e-02, 7.338e-02, 1.482e-02, -2.001e-01, -2.230e-02, -6.334e-02, 2.028e-01, -6.983e-02, 6.961e-02, -1.304e-01, 9.270e-02), r);\n\tr = MulAdd(s4_8, M4(-1.824e-02, -3.640e-02, -7.442e-02, 9.155e-02, 2.034e-02, -4.918e-03, -7.245e-02, 2.484e-02, 1.855e-01, -6.453e-03, -1.036e-01, -7.459e-02, 5.481e-02, -2.091e-02, 1.651e-01, 6.029e-02), r);\n\tr = MulAdd(s5_0, M4(-8.622e-02, 3.879e-02, 3.278e-02, -9.564e-02, 1.094e-01, 5.871e-02, 8.887e-02, -1.808e-01, 2.255e-02, -3.330e-02, -3.161e-02, -5.811e-02, 1.091e-01, -5.190e-03, 1.022e-01, -8.137e-02), r);\n\tr = MulAdd(s5_1, M4(7.586e-02, -6.875e-02, -6.969e-02, 2.362e-01, 2.035e-01, -8.574e-02, -1.608e-01, -2.036e-01, -1.019e-01, -4.419e-02, -4.203e-02, 7.364e-02, 2.055e-02, -2.850e-02, 1.823e-03, 3.981e-03), r);\n\tr = MulAdd(s5_2, M4(1.079e-02, -1.865e-02, -1.433e-02, 8.257e-02, 1.680e-01, -5.562e-02, 8.500e-02, -1.274e-01, -2.049e-02, -4.915e-02, 6.383e-02, -6.182e-03, -1.959e-02, 2.753e-02, -1.664e-02, 4.208e-02), r);\n\tr = MulAdd(s5_3, M4(-3.978e-02, -4.015e-02, -2.950e-02, -2.059e-01, 9.038e-02, 1.546e-02, -1.041e-01, -1.511e-02, 1.272e-02, 2.335e-02, -1.798e-02, 3.744e-02, 6.389e-02, 7.648e-02, -1.019e-01, -2.651e-02), r);\n\tr = MulAdd(s5_4, M4(-6.980e-02, 2.744e-02, -4.570e-02, 1.148e-01, 1.342e-02, -4.770e-02, -8.229e-02, 6.089e-02, 3.118e-02, 2.920e-01, 3.167e-01, -1.521e-01, 5.399e-02, 1.020e-01, 1.149e-02, -8.619e-02), r);\n\tr = MulAdd(s5_5, M4(3.253e-02, -2.127e-01, -3.972e-02, 3.569e-03, 4.084e-02, 6.521e-02, -9.020e-02, 2.094e-02, -9.394e-02, -1.544e-02, -4.392e-02, -1.579e-01, -8.755e-02, -5.974e-02, -4.310e-02, 7.993e-02), r);\n\tr = MulAdd(s5_6, M4(-9.472e-02, 4.516e-02, -8.202e-02, -4.753e-02, 1.139e-01, -3.746e-02, 2.098e-03, -1.064e-01, 9.612e-02, -2.597e-02, 1.139e-01, 9.148e-03, 1.091e-01, -2.330e-02, -7.269e-02, 1.313e-01), r);\n\tr = MulAdd(s5_7, M4(-1.524e-01, 3.063e-02, -1.198e-01, 1.550e-01, -3.171e-02, -5.483e-02, -4.361e-02, -6.489e-02, -1.526e-01, 6.543e-02, -6.782e-02, 1.009e-01, -1.401e-02, 1.156e-01, -2.638e-02, -2.473e-02), r);\n\tr = MulAdd(s5_8, M4(1.049e-02, 6.141e-02, 7.195e-04, 5.764e-02, 3.226e-02, 1.319e-02, -1.031e-01, -1.945e-02, -7.885e-02, -3.438e-02, -9.568e-02, 5.990e-02, 1.148e-02, 5.140e-02, 2.240e-01, 6.594e-03), r);\n\tr = MulAdd(s6_0, M4(1.406e-01, -2.602e-02, 1.205e-01, 2.176e-01, -1.926e-04, -5.914e-02, -5.769e-02, 1.209e-01, 6.493e-03, -3.487e-02, -3.463e-02, -7.879e-02, -2.138e-01, 1.331e-02, 4.086e-02, 4.241e-02), r);\n\tr = MulAdd(s6_1, M4(2.871e-02, 3.683e-02, 7.109e-02, 1.031e-01, 5.881e-02, 6.017e-03, -2.555e-01, 6.659e-02, -4.397e-03, 8.779e-02, 2.377e-02, -9.669e-02, -1.420e-01, 1.134e-01, -1.499e-01, 1.266e-01), r);\n\tr = MulAdd(s6_2, M4(1.369e-01, -1.154e-01, -1.666e-01, 5.584e-02, -1.002e-01, -6.546e-03, 1.571e-02, 1.530e-01, -1.969e-03, 2.545e-02, -6.619e-02, -6.586e-02, -1.282e-01, 7.008e-02, 9.567e-03, 1.252e-01), r);\n\tr = MulAdd(s6_3, M4(-1.094e-01, 1.610e-02, 9.718e-02, 1.548e-01, 9.198e-02, -4.904e-02, -7.468e-04, 2.606e-01, 5.387e-03, 4.550e-02, 3.330e-02, -7.607e-02, 8.492e-02, -8.416e-02, -8.928e-02, 1.261e-01), r);\n\tr = MulAdd(s6_4, M4(1.180e-01, 3.047e-02, -3.698e-01, -5.206e-02, 2.965e-02, 6.208e-02, -6.801e-02, 7.428e-02, 4.247e-02, -9.038e-03, 7.127e-03, -1.259e-01, -7.449e-02, -1.251e-01, -2.252e-01, -5.215e-02), r);\n\tr = MulAdd(s6_5, M4(-1.766e-01, 1.002e-01, 2.354e-01, -1.658e-01, 1.370e-01, -4.224e-02, -6.316e-02, 2.053e-01, -1.863e-01, 7.560e-02, -1.606e-02, 8.289e-02, 2.111e-01, 8.929e-02, 1.141e-01, 1.075e-01), r);\n\tr = MulAdd(s6_6, M4(6.023e-02, 5.537e-02, 8.805e-02, -1.834e-01, 8.324e-02, -9.879e-03, -3.770e-02, 1.114e-01, 2.186e-01, 3.151e-02, 2.377e-02, -9.786e-02, 5.232e-02, 2.238e-02, 1.318e-01, 4.875e-02), r);\n\tr = MulAdd(s6_7, M4(8.652e-02, 2.481e-03, 2.506e-02, -5.165e-02, 8.771e-02, 9.404e-03, 4.192e-02, -5.653e-02, 3.218e-01, 1.354e-02, 8.510e-02, 8.392e-02, -6.334e-02, 7.593e-03, 1.150e-01, 4.606e-02), r);\n\tr = MulAdd(s6_8, M4(-6.697e-02, -3.352e-02, -1.902e-02, -8.258e-02, -6.843e-02, -2.708e-02, 7.777e-02, 1.236e-01, 1.371e-02, 3.588e-02, -5.964e-02, 2.603e-04, 1.174e-01, 1.747e-02, -8.251e-02, 4.398e-02), r);\n\tr = MulAdd(s7_0, M4(-2.168e-02, 7.199e-02, -5.631e-02, 1.383e-01, 1.324e-02, -4.067e-02, -1.283e-02, 6.363e-02, 2.488e-02, -6.017e-02, 3.009e-02, 1.336e-01, -2.399e-02, 5.897e-02, 8.480e-03, -4.747e-02), r);\n\tr = MulAdd(s7_1, M4(1.093e-01, 7.825e-03, 3.643e-02, 4.922e-02, 7.785e-03, 7.618e-02, -4.316e-02, -1.097e-01, 6.528e-02, -7.597e-02, 1.538e-01, 3.378e-02, 1.036e-02, 1.740e-02, -1.892e-01, 2.236e-02), r);\n\tr = MulAdd(s7_2, M4(2.499e-01, 1.734e-01, 1.939e-01, -1.016e-01, -2.700e-02, -1.218e-02, 1.330e-01, -4.832e-02, 7.202e-02, -3.737e-03, 7.867e-02, -1.434e-02, 1.819e-02, -1.655e-01, -1.782e-01, -3.900e-02), r);\n\tr = MulAdd(s7_3, M4(5.788e-02, -1.806e-02, 4.414e-02, -6.338e-02, -4.268e-02, -3.505e-02, 5.591e-02, -2.530e-02, -4.892e-03, 2.751e-02, 1.689e-02, 1.906e-02, 2.026e-01, 5.643e-02, 1.002e-01, 1.098e-02), r);\n\tr = MulAdd(s7_4, M4(-2.294e-02, -4.774e-02, 2.901e-01, 6.578e-02, -1.541e-01, 1.067e-01, 3.197e-01, -5.122e-02, 2.727e-02, -9.901e-02, -2.789e-02, -1.267e-01, -5.750e-02, 4.390e-02, -1.721e-01, -1.499e-01), r);\n\tr = MulAdd(s7_5, M4(-9.402e-02, -2.030e-02, 5.222e-02, -1.743e-01, -4.580e-02, -3.926e-02, 2.109e-01, 5.317e-02, 8.321e-02, -3.145e-02, -1.214e-02, 1.857e-01, -3.654e-02, 2.986e-02, 2.944e-03, 8.246e-03), r);\n\tr = MulAdd(s7_6, M4(-1.619e-01, 4.667e-02, -4.234e-02, -2.656e-02, -1.973e-02, 6.608e-02, 5.465e-02, -1.520e-01, 1.372e-02, -1.880e-03, 1.187e-01, 1.466e-01, 4.376e-02, 5.925e-03, 3.483e-02, -8.434e-02), r);\n\tr = MulAdd(s7_7, M4(8.179e-02, -6.455e-02, 1.127e-01, -1.037e-01, -2.037e-01, 1.271e-01, 2.132e-01, -1.660e-01, -1.013e-01, 7.165e-03, 3.201e-03, -7.004e-02, -1.350e-01, -8.418e-02, -9.617e-04, -1.091e-02), r);\n\tr = MulAdd(s7_8, M4(-1.502e-01, 2.698e-02, -2.027e-01, 2.748e-02, -1.763e-01, -6.399e-02, -4.648e-02, -1.599e-02, 4.186e-02, -3.419e-02, -1.255e-02, 1.214e-01, 6.660e-02, -2.269e-02, -3.588e-02, -2.921e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.256e-03, 5.569e-03, -5.325e-03, 5.488e-04 };\n\tr = MulAdd(s0_0, M4(-3.068e-04, -1.204e-01, 4.292e-02, -2.322e-01, 7.263e-02, -6.732e-02, -2.801e-02, 9.964e-03, -6.590e-03, 2.334e-02, 6.538e-02, -3.565e-01, 2.108e-02, -1.036e-01, 6.134e-02, 1.382e-01), r);\n\tr = MulAdd(s0_1, M4(-5.029e-02, -7.275e-02, 5.063e-02, -1.110e-02, 4.380e-02, 4.034e-02, -1.042e-01, -1.455e-02, 1.055e-02, 3.170e-02, -1.554e-02, -1.033e-01, 2.073e-01, 3.202e-03, -8.257e-03, 2.445e-01), r);\n\tr = MulAdd(s0_2, M4(5.688e-02, -7.895e-02, 5.165e-02, 6.176e-03, 6.183e-02, -7.351e-02, 1.285e-02, 1.244e-01, 1.361e-02, 2.905e-02, -3.437e-02, -6.790e-02, -2.269e-03, -4.321e-02, 6.246e-02, 1.473e-01), r);\n\tr = MulAdd(s0_3, M4(-2.291e-02, -1.502e-01, -7.603e-03, 1.355e-01, -5.305e-02, 1.134e-01, -1.282e-02, 1.570e-02, -2.111e-01, -3.812e-01, -3.447e-01, 1.578e-01, 2.417e-03, 5.896e-02, -5.163e-02, -5.294e-02), r);\n\tr = MulAdd(s0_4, M4(1.900e-01, -2.398e-01, 1.170e-01, -1.547e-02, 4.756e-03, -1.449e-01, -5.318e-02, -1.763e-01, 2.585e-01, -2.209e-01, 6.118e-02, -1.008e-01, -2.421e-01, -4.606e-02, -1.322e-01, 1.209e-02), r);\n\tr = MulAdd(s0_5, M4(-5.750e-03, -5.512e-02, -3.397e-04, -6.929e-02, 7.312e-03, 2.912e-02, 6.804e-02, -9.701e-02, 5.363e-02, -3.913e-02, 1.144e-02, -6.841e-02, 9.510e-02, -1.010e-02, -7.571e-02, 6.174e-02), r);\n\tr = MulAdd(s0_6, M4(3.139e-03, 1.147e-02, -1.003e-02, 2.934e-03, 1.570e-02, 3.821e-02, 1.733e-03, 1.197e-01, 1.307e-01, 1.198e-01, 5.437e-02, -1.454e-01, 7.494e-02, 8.354e-02, 4.805e-02, 8.956e-02), r);\n\tr = MulAdd(s0_7, M4(-1.305e-02, -9.896e-03, -2.490e-02, -7.780e-02, 3.909e-02, 2.933e-02, -1.095e-02, 1.387e-03, 7.792e-02, -3.871e-02, 1.720e-01, -1.900e-01, 1.288e-02, -1.080e-01, -1.026e-01, 7.740e-03), r);\n\tr = MulAdd(s0_8, M4(4.990e-03, 2.552e-02, 1.105e-01, 9.851e-02, -2.520e-02, -8.242e-02, -9.196e-02, -2.433e-02, -1.909e-02, -9.932e-04, -2.983e-02, -3.875e-02, 1.385e-02, 3.129e-02, -4.664e-03, 2.485e-02), r);\n\tr = MulAdd(s1_0, M4(5.915e-02, 6.590e-02, 1.312e-02, -1.948e-01, -6.246e-02, 1.216e-01, 8.398e-02, -3.320e-01, 7.135e-02, -2.850e-03, 6.330e-03, 1.095e-01, 4.058e-02, -1.627e-02, -6.460e-02, -5.208e-02), r);\n\tr = MulAdd(s1_1, M4(-2.444e-01, 1.257e-01, -3.160e-02, 6.848e-02, -1.397e-01, 1.748e-01, -3.867e-02, 1.034e-01, -6.418e-02, -2.701e-02, -3.038e-02, 2.540e-01, 1.164e-01, -4.954e-02, -3.766e-02, 5.431e-02), r);\n\tr = MulAdd(s1_2, M4(-7.726e-02, -5.139e-02, -9.235e-02, -1.074e-01, -2.585e-02, -1.357e-01, -3.064e-02, -2.004e-01, -2.334e-02, -4.123e-02, -2.273e-02, 1.205e-02, 6.541e-02, 8.848e-03, 7.449e-02, 1.229e-01), r);\n\tr = MulAdd(s1_3, M4(1.603e-01, 1.097e-01, -8.866e-02, 2.797e-01, -3.778e-02, -7.621e-02, -7.649e-02, 2.947e-01, -2.127e-01, -1.054e-01, 2.025e-01, 6.307e-02, -8.014e-02, 5.530e-02, -4.694e-02, -7.250e-02), r);\n\tr = MulAdd(s1_4, M4(1.233e-01, -1.892e-01, -1.193e-02, 2.636e-01, 4.172e-02, -2.724e-01, -2.380e-02, -1.760e-01, -2.191e-01, -2.573e-02, 5.340e-01, -1.145e-01, 2.839e-02, -4.719e-02, 6.835e-02, 3.499e-02), r);\n\tr = MulAdd(s1_5, M4(9.120e-04, -9.661e-02, -2.830e-01, -3.171e-02, 8.802e-02, -1.440e-01, 1.313e-01, -1.072e-01, -1.169e-01, 4.815e-02, 4.976e-02, 1.967e-01, 2.588e-02, 1.345e-02, 2.592e-02, -5.276e-02), r);\n\tr = MulAdd(s1_6, M4(1.288e-01, -7.539e-02, -1.382e-01, 1.609e-02, -4.723e-02, 3.042e-02, -8.309e-02, -1.198e-01, -1.033e-01, -1.751e-01, 4.485e-03, 1.238e-01, 9.003e-02, 8.127e-02, 1.875e-02, 1.353e-02), r);\n\tr = MulAdd(s1_7, M4(-9.747e-02, 1.855e-01, -1.925e-01, -5.547e-02, -7.088e-02, -9.803e-02, 1.539e-01, -9.433e-02, -1.762e-01, -1.183e-01, 1.326e-01, 2.236e-01, 4.235e-02, 2.056e-02, -3.245e-02, 1.732e-02), r);\n\tr = MulAdd(s1_8, M4(8.181e-02, -5.216e-03, -8.506e-02, 8.966e-02, -2.085e-03, 1.868e-01, -3.452e-02, 1.632e-01, 1.210e-02, -1.903e-02, -6.220e-02, 5.310e-02, 4.398e-02, -3.663e-02, 3.722e-02, -4.242e-02), r);\n\tr = MulAdd(s2_0, M4(-1.206e-01, 9.558e-02, -4.620e-02, 3.062e-03, -4.847e-02, -1.453e-01, 4.601e-02, 3.178e-02, -9.780e-02, 1.438e-01, 1.179e-01, 1.688e-01, -3.957e-02, -1.288e-02, 1.401e-01, 5.510e-02), r);\n\tr = MulAdd(s2_1, M4(-1.381e-01, 1.737e-01, 5.948e-02, -1.221e-01, 5.363e-02, -1.066e-01, -5.197e-03, -9.137e-02, 4.265e-03, 2.725e-01, 1.724e-01, 1.988e-01, 5.521e-03, -8.716e-02, 1.280e-01, 2.470e-02), r);\n\tr = MulAdd(s2_2, M4(5.819e-02, -7.113e-02, 8.023e-02, -2.218e-01, 5.752e-03, -5.493e-02, 6.714e-04, 1.236e-01, 2.653e-02, 1.468e-01, 1.229e-02, -6.665e-02, -7.151e-02, 1.198e-02, 1.073e-01, 6.364e-02), r);\n\tr = MulAdd(s2_3, M4(6.612e-02, 4.067e-02, -4.382e-02, -4.092e-01, -1.763e-01, -3.350e-02, 1.109e-01, -1.721e-01, -3.335e-01, -1.528e-01, -4.465e-02, -2.936e-01, -3.856e-02, -2.933e-02, 4.427e-02, 1.626e-01), r);\n\tr = MulAdd(s2_4, M4(-1.707e-02, 1.707e-02, -3.251e-01, 1.643e-01, 1.466e-01, 3.248e-02, 1.353e-02, 1.580e-02, -8.672e-04, 2.900e-01, -6.717e-02, 2.236e-01, -8.835e-02, -7.532e-02, 3.308e-02, -1.505e-01), r);\n\tr = MulAdd(s2_5, M4(-1.692e-02, 7.445e-02, 2.193e-01, 8.993e-02, 9.978e-02, -2.544e-02, 1.497e-01, -1.315e-01, -2.081e-02, -7.005e-02, 2.727e-01, 1.743e-01, -6.032e-02, -1.367e-01, -1.602e-03, -8.789e-02), r);\n\tr = MulAdd(s2_6, M4(-1.569e-02, 7.364e-02, 2.221e-02, 1.627e-01, -7.248e-02, -1.373e-01, 5.594e-02, -8.769e-03, -1.682e-02, 1.029e-01, 1.361e-01, -3.526e-01, 1.620e-02, 4.748e-02, 2.704e-02, -1.062e-01), r);\n\tr = MulAdd(s2_7, M4(-1.054e-01, -1.154e-02, -7.373e-02, -2.821e-01, 5.064e-02, -1.059e-03, 1.904e-01, 1.205e-01, 2.214e-01, -5.921e-04, 2.009e-01, -1.527e-01, -6.023e-02, -6.896e-02, -4.439e-02, 3.888e-02), r);\n\tr = MulAdd(s2_8, M4(1.200e-01, 1.974e-02, -1.368e-01, -1.805e-01, -1.308e-01, -9.498e-02, 5.894e-02, -1.164e-01, -1.340e-01, 1.556e-01, -2.300e-02, 1.509e-01, 5.887e-02, 1.487e-02, 2.487e-02, 6.804e-02), r);\n\tr = MulAdd(s3_0, M4(4.228e-02, -5.438e-02, -2.953e-02, 2.476e-02, -3.938e-03, 8.333e-02, -2.764e-02, -3.250e-02, -2.921e-02, -4.583e-02, -1.548e-02, -1.151e-02, -3.856e-03, -7.593e-02, 1.128e-02, 6.069e-02), r);\n\tr = MulAdd(s3_1, M4(1.559e-01, -1.065e-01, -2.049e-02, 6.581e-02, -5.467e-02, 1.221e-02, 2.313e-02, 7.192e-03, -2.114e-02, 2.589e-02, -7.534e-03, -1.009e-02, 1.563e-02, 4.367e-02, -1.770e-01, 1.473e-01), r);\n\tr = MulAdd(s3_2, M4(9.814e-02, -3.655e-02, 5.478e-02, 4.815e-02, -2.470e-02, -6.146e-02, -7.068e-02, -6.625e-03, 4.639e-02, 1.204e-02, -2.514e-02, 1.869e-02, -3.452e-02, 6.861e-02, -3.143e-02, -2.935e-02), r);\n\tr = MulAdd(s3_3, M4(-4.938e-02, -7.948e-02, 1.161e-02, -1.234e-02, -2.432e-02, 4.279e-02, 3.968e-02, -6.227e-02, -6.645e-02, 8.690e-02, -1.461e-01, -5.690e-03, 3.831e-02, 2.937e-01, 4.653e-02, 4.828e-02), r);\n\tr = MulAdd(s3_4, M4(-7.999e-02, 2.704e-01, -2.645e-01, 1.795e-01, -5.116e-02, -2.315e-01, -6.567e-02, -7.200e-02, -5.511e-02, -1.013e-01, -7.740e-02, 5.260e-02, -1.919e-03, 1.028e-01, 9.671e-02, -6.519e-02), r);\n\tr = MulAdd(s3_5, M4(-6.789e-03, -3.671e-02, 1.186e-01, -3.797e-01, -8.049e-02, 7.739e-02, 6.670e-02, 1.133e-01, -7.665e-03, 6.210e-02, 1.060e-01, -2.092e-02, 1.680e-01, 1.804e-02, -2.171e-02, 8.897e-02), r);\n\tr = MulAdd(s3_6, M4(-5.568e-02, -1.409e-01, 1.968e-02, -3.617e-02, -3.076e-02, -3.317e-02, 1.160e-01, -5.722e-03, 6.979e-03, 6.354e-02, 1.354e-02, 7.411e-02, -4.428e-03, 9.028e-02, -1.606e-02, 5.119e-02), r);\n\tr = MulAdd(s3_7, M4(-8.462e-02, 6.714e-02, -5.238e-03, 6.400e-03, 1.121e-01, -2.286e-02, -2.020e-02, -7.229e-04, 5.897e-04, -4.113e-02, 1.337e-01, 8.621e-03, -2.099e-01, -2.948e-02, -1.520e-02, 1.098e-01), r);\n\tr = MulAdd(s3_8, M4(4.036e-02, -1.405e-01, 5.163e-02, -7.905e-03, 1.593e-02, -2.116e-02, -7.974e-03, 5.984e-02, 4.096e-02, 4.600e-02, 4.659e-02, 5.924e-02, 1.334e-02, 4.451e-02, -7.178e-02, 6.131e-03), r);\n\tr = MulAdd(s4_0, M4(3.154e-02, 3.548e-02, 1.730e-02, 3.346e-02, -4.024e-02, -3.264e-02, -1.470e-01, -1.200e-01, 1.690e-02, -2.265e-02, -4.149e-02, -2.140e-02, 1.119e-01, 2.084e-01, -1.121e-01, -1.373e-01), r);\n\tr = MulAdd(s4_1, M4(-5.462e-02, 3.954e-02, -2.348e-02, 6.568e-02, -6.036e-02, 7.795e-02, -9.620e-02, 3.154e-01, 8.862e-02, -7.174e-02, -9.480e-02, -3.692e-02, -1.154e-01, 3.932e-02, 1.292e-01, -2.248e-01), r);\n\tr = MulAdd(s4_2, M4(2.872e-02, -5.408e-02, 4.336e-02, -7.111e-02, 4.963e-02, 3.748e-02, -6.812e-02, 8.766e-02, 9.474e-03, 5.083e-02, -7.391e-02, 1.053e-01, 6.506e-02, -6.320e-02, 1.222e-01, 9.191e-03), r);\n\tr = MulAdd(s4_3, M4(-6.555e-02, 4.505e-02, -4.655e-02, -9.145e-02, 6.602e-03, 1.364e-01, 8.412e-02, -4.747e-03, -2.966e-02, 6.929e-02, 9.440e-02, -1.133e-01, 1.360e-01, 3.425e-02, -2.808e-02, -1.973e-01), r);\n\tr = MulAdd(s4_4, M4(-9.314e-02, 6.382e-03, -1.005e-01, 8.729e-02, 5.224e-02, -9.051e-02, 2.902e-01, 1.207e-01, -5.073e-02, 2.289e-01, 8.406e-02, 6.964e-02, 1.459e-02, -2.334e-01, 1.740e-01, 1.771e-01), r);\n\tr = MulAdd(s4_5, M4(1.237e-01, 8.729e-02, 4.959e-02, -1.984e-02, 1.293e-02, 7.650e-04, 4.499e-02, 5.544e-02, -1.017e-01, -8.729e-02, 2.581e-02, -7.212e-02, 3.828e-02, -3.534e-02, 2.333e-01, -2.448e-01), r);\n\tr = MulAdd(s4_6, M4(-2.343e-02, -4.688e-02, 2.338e-02, 3.721e-02, 2.008e-02, 1.627e-03, 5.451e-02, 2.319e-01, 6.909e-02, -7.454e-03, -4.210e-03, 3.158e-02, -1.099e-02, 9.028e-02, -4.876e-02, 1.138e-01), r);\n\tr = MulAdd(s4_7, M4(-6.356e-02, -1.661e-01, 2.443e-02, -5.680e-02, 1.244e-01, -1.160e-01, 5.501e-02, -1.000e-01, -1.478e-01, -8.587e-02, 6.595e-02, -1.460e-01, -1.961e-01, -1.595e-01, -1.242e-01, -1.330e-01), r);\n\tr = MulAdd(s4_8, M4(3.144e-02, 3.457e-02, 4.639e-02, 3.490e-03, 7.927e-02, 5.451e-02, 1.042e-01, 4.356e-02, 2.098e-02, -1.338e-02, -5.927e-02, 5.882e-02, -5.585e-02, -9.631e-03, -4.868e-02, 7.457e-02), r);\n\tr = MulAdd(s5_0, M4(-3.288e-03, 6.522e-02, -3.526e-03, -1.352e-02, 1.039e-01, 1.087e-01, -1.976e-02, -1.398e-01, -1.507e-02, 2.050e-02, 2.135e-02, 7.472e-02, 2.467e-02, 1.739e-03, -2.406e-03, 3.458e-02), r);\n\tr = MulAdd(s5_1, M4(1.557e-01, 4.224e-02, -3.892e-02, 1.267e-01, 2.728e-02, -3.507e-02, 6.106e-02, -2.876e-02, 6.176e-02, 1.852e-02, -1.066e-01, 1.126e-01, -2.912e-02, -7.657e-02, -1.089e-01, -2.211e-02), r);\n\tr = MulAdd(s5_2, M4(8.400e-02, -3.667e-02, 8.771e-02, -2.185e-02, -1.031e-02, 2.948e-02, -2.570e-02, -5.338e-02, 1.059e-01, -1.223e-02, -1.557e-01, 8.655e-02, 2.410e-02, 4.648e-02, 1.769e-02, -7.573e-02), r);\n\tr = MulAdd(s5_3, M4(8.675e-02, -6.990e-02, 2.511e-02, -9.416e-03, 9.809e-02, 1.254e-01, -5.303e-02, -8.618e-02, -8.457e-02, 9.567e-02, -9.494e-02, -1.148e-01, -1.560e-02, 6.806e-02, 9.405e-02, 4.098e-02), r);\n\tr = MulAdd(s5_4, M4(5.280e-02, 6.067e-02, -1.976e-01, 9.863e-02, -8.271e-02, -1.365e-02, 1.193e-01, -1.790e-01, -6.840e-03, 1.895e-01, -9.188e-02, -1.218e-01, -3.719e-03, 6.033e-02, -2.169e-02, 2.204e-01), r);\n\tr = MulAdd(s5_5, M4(2.242e-01, -2.921e-03, -3.570e-04, -3.935e-03, -1.253e-03, -6.734e-02, 7.546e-04, -2.474e-02, -1.686e-01, 5.612e-02, 1.091e-01, -4.316e-02, 1.036e-01, 2.184e-02, 9.947e-02, -1.900e-01), r);\n\tr = MulAdd(s5_6, M4(2.334e-02, -3.774e-02, -6.603e-02, -1.323e-01, 3.283e-02, -4.643e-02, -6.959e-02, -3.146e-03, -7.513e-03, 1.399e-03, -5.232e-02, 4.053e-02, 9.091e-03, 3.483e-02, 6.393e-03, 1.083e-02), r);\n\tr = MulAdd(s5_7, M4(6.783e-02, -2.924e-01, -2.529e-02, -4.163e-01, 4.052e-02, -6.870e-02, -4.707e-02, -9.593e-02, -2.101e-01, -1.228e-01, -4.197e-02, 1.293e-02, -5.435e-02, -2.645e-01, 7.583e-02, -1.708e-01), r);\n\tr = MulAdd(s5_8, M4(8.686e-03, -1.299e-01, -5.771e-02, -1.496e-01, 1.606e-02, -1.679e-02, -3.246e-03, -1.859e-01, -4.083e-02, -1.148e-01, -7.817e-03, 4.128e-02, 6.493e-02, 2.126e-02, 4.033e-03, 1.422e-01), r);\n\tr = MulAdd(s6_0, M4(-1.077e-01, 3.526e-02, 7.391e-02, -5.982e-02, 3.658e-02, 6.680e-02, 1.467e-02, -1.150e-03, 1.662e-02, -3.063e-03, -8.420e-02, -1.484e-01, -2.569e-03, -2.318e-02, 1.749e-03, 2.355e-01), r);\n\tr = MulAdd(s6_1, M4(-1.208e-01, 1.325e-01, 1.647e-02, 9.317e-02, 1.960e-02, 3.862e-02, 3.310e-02, 7.721e-02, 4.446e-02, -4.653e-03, -1.381e-02, 6.921e-02, -1.951e-01, 2.847e-02, -2.456e-01, -3.425e-02), r);\n\tr = MulAdd(s6_2, M4(-4.401e-02, 1.811e-02, 4.561e-02, 3.513e-01, 1.081e-02, -3.141e-02, 2.725e-02, -2.780e-02, -6.767e-02, -1.508e-02, 8.973e-03, -2.144e-02, 1.207e-03, -2.087e-02, -1.307e-01, -1.781e-01), r);\n\tr = MulAdd(s6_3, M4(-3.827e-02, -3.661e-02, 1.011e-02, 1.545e-01, 1.581e-02, 6.656e-02, -4.645e-02, 8.442e-02, -2.433e-02, 6.781e-02, -1.275e-01, 8.078e-02, -8.402e-02, -1.286e-02, 1.922e-01, 1.349e-01), r);\n\tr = MulAdd(s6_4, M4(1.241e-01, -6.509e-01, -5.271e-02, -2.358e-01, -8.803e-02, 1.740e-01, -2.688e-01, 1.401e-01, -5.751e-02, 2.101e-02, -9.749e-02, -1.048e-01, -6.910e-02, -4.104e-02, 3.521e-01, -1.025e-01), r);\n\tr = MulAdd(s6_5, M4(8.778e-03, -5.586e-02, 7.706e-02, -4.578e-02, 1.213e-02, 9.870e-02, -4.086e-02, -8.745e-02, -6.358e-02, 2.182e-02, -1.452e-02, 2.654e-02, -3.300e-02, 5.861e-02, 7.919e-02, 1.088e-01), r);\n\tr = MulAdd(s6_6, M4(-6.089e-02, -2.363e-02, -1.039e-02, -8.941e-02, 4.292e-02, -3.782e-03, 4.320e-02, 5.394e-03, -6.660e-02, 1.384e-02, -1.341e-01, -1.106e-01, -7.917e-02, 3.123e-02, 3.668e-02, 1.299e-01), r);\n\tr = MulAdd(s6_7, M4(5.717e-02, 1.718e-01, 9.223e-02, 4.245e-01, -2.327e-03, -1.134e-01, -9.775e-03, 4.413e-02, -5.453e-02, 4.146e-01, -8.485e-02, 2.315e-01, 1.504e-03, 1.173e-01, -5.307e-02, 3.062e-02), r);\n\tr = MulAdd(s6_8, M4(-1.238e-01, 4.796e-02, -8.737e-02, -1.498e-01, 8.415e-02, -2.357e-02, 1.694e-01, 8.595e-02, 1.155e-01, -2.768e-02, -9.003e-02, -1.101e-01, -8.561e-02, -1.678e-02, -6.089e-02, 3.184e-02), r);\n\tr = MulAdd(s7_0, M4(-4.965e-02, -4.120e-02, 1.285e-01, 1.078e-02, -1.119e-02, -6.779e-03, -5.037e-02, 1.074e-01, 6.507e-03, -1.108e-01, 6.075e-02, -6.955e-04, 1.402e-01, 9.810e-02, -7.748e-03, 4.435e-02), r);\n\tr = MulAdd(s7_1, M4(1.647e-02, 3.714e-02, -5.533e-02, 6.509e-03, -7.659e-02, -8.373e-02, 5.623e-02, -7.749e-03, -6.849e-02, -8.011e-02, 6.262e-02, 1.709e-01, 7.538e-02, 1.420e-01, 1.243e-01, -4.103e-02), r);\n\tr = MulAdd(s7_2, M4(-8.281e-02, -6.420e-02, 1.808e-02, -1.000e-01, 3.493e-02, -5.424e-02, 5.403e-02, -2.961e-02, 6.306e-02, 3.705e-02, -3.130e-02, -4.529e-02, -4.749e-02, 6.859e-04, 5.235e-02, -2.872e-02), r);\n\tr = MulAdd(s7_3, M4(1.268e-01, -1.369e-01, 8.872e-02, -1.221e-01, 1.602e-02, 5.109e-03, -1.217e-01, 1.610e-01, 1.709e-01, -7.700e-03, 1.607e-01, 9.319e-02, 2.199e-01, -1.097e-01, -3.539e-02, -1.032e-01), r);\n\tr = MulAdd(s7_4, M4(-4.076e-01, 1.495e-01, 6.882e-02, -5.524e-02, -4.597e-01, 4.264e-02, -2.740e-01, 1.135e-01, -6.260e-02, 8.472e-03, 3.468e-01, -1.748e-01, -9.361e-02, 8.264e-03, 5.110e-01, -1.052e-01), r);\n\tr = MulAdd(s7_5, M4(-9.600e-02, -2.135e-02, -2.585e-02, -4.248e-02, -2.243e-01, 1.290e-01, -1.017e-01, 4.722e-02, -1.032e-02, 2.541e-02, 9.565e-02, -8.045e-02, -7.933e-02, -5.089e-02, 1.153e-01, 9.537e-03), r);\n\tr = MulAdd(s7_6, M4(-5.367e-02, -3.114e-02, -1.703e-02, 9.851e-03, -1.690e-01, -8.414e-02, -8.379e-02, -5.830e-04, 2.686e-01, 1.545e-01, 9.429e-02, 1.295e-01, 2.207e-01, -6.419e-02, 3.829e-02, 5.205e-02), r);\n\tr = MulAdd(s7_7, M4(7.676e-02, 1.129e-01, 3.466e-02, -2.708e-02, -9.591e-02, -1.674e-01, -8.708e-02, 7.116e-02, -2.083e-01, -6.360e-02, 1.431e-01, -1.180e-01, -6.194e-02, 9.175e-02, 3.166e-02, 2.715e-02), r);\n\tr = MulAdd(s7_8, M4(-7.521e-02, -4.163e-02, -7.575e-02, -1.588e-01, 2.143e-02, 3.748e-02, 1.099e-02, 1.665e-01, 6.809e-02, -5.992e-02, 1.567e-01, 1.218e-01, 1.592e-02, -3.885e-02, -2.286e-02, -8.052e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 5.089e-03, 6.337e-03, -1.003e-03, -8.375e-03 };\n\tr = MulAdd(s0_0, M4(-1.547e-01, -1.336e-02, -9.624e-02, -1.577e-03, 3.593e-02, 3.042e-02, -8.003e-02, 2.192e-02, -4.950e-02, 7.476e-02, -6.039e-02, 8.056e-02, -7.910e-02, -8.635e-02, -1.421e-01, 8.092e-02), r);\n\tr = MulAdd(s0_1, M4(-1.913e-02, 4.725e-02, -1.637e-01, -1.348e-01, -9.849e-02, -1.759e-01, -4.068e-02, 2.364e-02, -1.270e-01, -1.379e-02, -1.358e-01, 1.061e-01, 1.210e-01, -3.639e-02, -8.988e-02, -1.070e-01), r);\n\tr = MulAdd(s0_2, M4(1.796e-02, 3.540e-02, -7.519e-02, -5.215e-02, 4.199e-02, -5.199e-02, 1.456e-03, -3.571e-03, -3.944e-02, -6.634e-03, -4.133e-02, 4.924e-02, -1.425e-01, -1.294e-01, 1.045e-01, -2.157e-02), r);\n\tr = MulAdd(s0_3, M4(-9.407e-02, 7.844e-02, -3.308e-02, 5.621e-02, 1.042e-01, -3.890e-02, 2.055e-01, -1.072e-01, 2.748e-02, 4.462e-01, -1.676e-01, 3.662e-01, 8.381e-03, 1.181e-02, 3.234e-02, 3.358e-02), r);\n\tr = MulAdd(s0_4, M4(-1.005e-01, -2.126e-03, 5.502e-02, -6.089e-02, 2.273e-01, 4.151e-03, -1.460e-01, 1.359e-01, 9.257e-02, 2.512e-02, -1.959e-01, 3.031e-01, 1.875e-01, 9.293e-02, 4.954e-02, -9.439e-02), r);\n\tr = MulAdd(s0_5, M4(8.254e-02, -3.787e-02, 8.115e-03, 1.379e-01, -6.686e-02, -5.386e-02, -1.296e-01, -5.086e-02, -4.210e-02, -4.231e-03, -4.891e-02, 9.751e-02, -9.846e-03, -7.811e-02, 3.148e-02, -8.734e-02), r);\n\tr = MulAdd(s0_6, M4(-3.271e-02, 1.928e-02, 2.436e-03, -6.287e-02, -3.796e-02, 7.205e-02, -7.604e-03, -1.239e-02, -4.773e-02, 9.715e-02, -8.941e-03, 9.275e-02, -9.353e-02, 4.975e-02, -1.497e-01, -9.723e-02), r);\n\tr = MulAdd(s0_7, M4(-6.321e-02, -3.796e-02, -5.824e-02, 1.675e-01, 1.885e-01, 4.765e-02, 1.688e-01, 1.402e-02, -2.094e-01, 7.993e-02, -6.426e-02, 3.454e-02, -1.092e-01, 4.996e-02, -7.640e-02, 6.195e-02), r);\n\tr = MulAdd(s0_8, M4(-1.590e-02, 1.018e-02, -3.362e-02, -4.663e-02, 9.686e-02, -5.498e-03, 1.110e-01, -8.963e-02, 7.007e-02, 6.482e-02, -2.983e-03, 9.060e-02, -2.021e-02, 3.653e-02, -2.570e-02, -1.258e-01), r);\n\tr = MulAdd(s1_0, M4(-3.619e-02, -1.744e-01, -4.347e-02, -4.267e-02, -4.923e-03, -9.286e-02, 2.422e-01, -4.670e-02, 1.320e-01, -1.984e-01, 2.182e-01, 1.958e-02, 4.612e-03, 8.703e-03, -5.831e-02, -7.535e-02), r);\n\tr = MulAdd(s1_1, M4(-5.531e-03, -9.462e-02, 2.501e-02, 9.215e-02, -1.924e-02, -1.056e-01, 1.524e-01, -5.061e-02, 9.483e-02, -1.310e-01, 1.569e-01, 1.182e-01, 6.513e-02, 2.052e-02, -9.772e-02, 2.345e-02), r);\n\tr = MulAdd(s1_2, M4(3.993e-02, 2.333e-02, 2.727e-01, -1.340e-02, 2.623e-02, 3.439e-02, 2.126e-02, 9.785e-02, 9.983e-02, -2.156e-03, 6.621e-02, 5.928e-02, 6.364e-02, -8.201e-02, -1.501e-02, -8.141e-02), r);\n\tr = MulAdd(s1_3, M4(1.770e-02, -1.235e-02, -4.150e-04, 1.100e-01, 5.326e-02, 2.712e-02, -1.292e-01, 7.162e-02, -1.035e-01, 2.255e-01, 1.976e-02, -2.447e-01, 1.629e-02, -8.791e-02, -2.548e-02, -1.104e-01), r);\n\tr = MulAdd(s1_4, M4(-9.864e-04, -1.118e-01, 1.131e-01, -2.565e-01, -9.560e-02, 1.174e-01, -2.686e-01, 9.302e-02, -1.345e-01, -2.369e-01, 4.699e-02, -1.489e-02, 1.831e-01, 1.548e-01, 5.183e-02, 1.790e-01), r);\n\tr = MulAdd(s1_5, M4(1.439e-01, 4.397e-03, -3.498e-02, 1.244e-01, 1.418e-01, -2.472e-02, -2.413e-01, 1.052e-01, 1.606e-01, -8.201e-03, 6.680e-02, -8.102e-02, -2.082e-02, -3.969e-02, -7.201e-02, -4.495e-02), r);\n\tr = MulAdd(s1_6, M4(6.272e-02, 4.990e-02, 8.887e-02, 3.249e-02, 3.269e-02, -8.323e-02, 1.116e-01, 2.040e-02, 1.995e-02, 1.057e-01, -6.512e-03, -3.846e-02, -2.073e-02, 8.689e-03, 2.337e-02, -8.896e-03), r);\n\tr = MulAdd(s1_7, M4(-1.356e-01, 2.012e-02, 3.494e-02, -6.068e-02, 8.204e-02, -3.639e-02, 1.480e-01, 1.784e-01, -4.654e-03, -8.309e-03, 5.955e-02, -9.202e-02, 3.201e-02, 7.348e-02, 1.535e-01, 1.772e-01), r);\n\tr = MulAdd(s1_8, M4(7.614e-02, 4.078e-03, 2.274e-01, 6.708e-02, 1.090e-01, -4.981e-03, 1.636e-01, 1.457e-01, 7.425e-02, -6.353e-02, 1.289e-02, -2.213e-02, 1.256e-02, -4.327e-02, 4.475e-02, -5.957e-02), r);\n\tr = MulAdd(s2_0, M4(-3.046e-02, 1.478e-01, 4.846e-02, -1.134e-01, -9.139e-02, -3.482e-03, -8.726e-02, -8.179e-02, -9.263e-02, -9.555e-03, 1.925e-02, 1.085e-01, -1.840e-02, 2.115e-01, 5.158e-02, 5.294e-02), r);\n\tr = MulAdd(s2_1, M4(1.175e-01, -7.622e-02, 1.346e-01, -2.636e-01, -8.279e-02, 2.601e-02, -1.111e-02, -1.346e-01, -1.376e-01, -1.053e-01, -4.803e-01, 1.282e-01, -1.441e-01, -6.537e-02, -1.831e-01, -7.560e-02), r);\n\tr = MulAdd(s2_2, M4(-5.088e-02, 6.594e-02, 3.108e-02, 1.725e-02, 1.314e-01, -2.219e-02, -7.137e-02, 3.789e-02, 5.741e-02, -2.482e-02, -2.007e-01, 1.658e-02, -5.010e-02, -5.699e-02, 9.114e-02, -5.246e-02), r);\n\tr = MulAdd(s2_3, M4(-8.034e-02, 3.582e-04, 4.709e-02, -1.542e-01, 1.968e-02, 5.846e-02, 1.434e-01, -5.554e-02, -3.457e-01, 8.977e-02, -3.070e-01, -8.939e-02, -9.490e-02, 1.739e-02, -1.325e-02, -6.021e-02), r);\n\tr = MulAdd(s2_4, M4(3.695e-02, 4.282e-01, -4.779e-02, -2.542e-01, 4.170e-01, -4.199e-03, 2.635e-01, 9.272e-02, -1.018e-01, -3.018e-01, -1.229e-01, 5.847e-01, 5.349e-02, -9.264e-02, 1.590e-01, -8.636e-02), r);\n\tr = MulAdd(s2_5, M4(2.304e-01, 8.633e-02, -8.647e-02, -1.178e-01, 6.404e-02, 2.085e-02, 5.816e-02, 6.002e-02, -2.182e-01, -6.899e-03, 1.213e-01, -2.377e-01, 1.045e-01, -6.460e-03, -6.306e-02, 9.807e-02), r);\n\tr = MulAdd(s2_6, M4(4.065e-02, 4.113e-02, -1.966e-02, -1.033e-02, 6.379e-02, -9.661e-02, -7.923e-02, -3.830e-02, -1.658e-01, -1.424e-01, -1.789e-01, -2.376e-01, 3.041e-02, 2.283e-02, 8.950e-02, 3.774e-02), r);\n\tr = MulAdd(s2_7, M4(4.361e-03, 4.963e-02, -4.400e-02, 3.623e-02, 5.359e-02, 3.067e-04, -6.885e-02, -1.999e-01, -1.801e-02, 3.282e-02, -1.433e-01, 4.356e-01, 1.168e-01, -9.429e-02, 7.713e-03, 2.926e-02), r);\n\tr = MulAdd(s2_8, M4(1.808e-01, -1.784e-02, 1.194e-01, 9.667e-02, 5.927e-02, -2.430e-02, -3.530e-02, 3.124e-02, -1.911e-01, -8.520e-02, -1.675e-01, 3.291e-02, 3.590e-02, -5.538e-02, 8.543e-03, 2.209e-02), r);\n\tr = MulAdd(s3_0, M4(-4.417e-03, 6.142e-02, 3.291e-03, 4.601e-06, 9.343e-03, 6.774e-03, 3.549e-02, 1.940e-02, -1.764e-02, 8.100e-02, 4.121e-02, 5.637e-03, 4.980e-02, -3.647e-02, 6.004e-05, 4.063e-02), r);\n\tr = MulAdd(s3_1, M4(2.011e-02, -3.297e-02, -2.439e-01, 9.536e-02, -4.038e-02, -1.251e-02, 9.924e-02, -2.949e-02, 1.093e-01, 7.510e-02, -2.881e-02, -2.545e-02, 1.724e-01, 8.464e-02, -7.721e-02, 1.169e-01), r);\n\tr = MulAdd(s3_2, M4(2.340e-02, 7.193e-04, -1.792e-01, -6.388e-02, 1.548e-01, 1.248e-01, 9.521e-02, 3.513e-02, 4.711e-02, 1.726e-02, -7.443e-02, 1.201e-02, 1.924e-02, -8.228e-02, -3.082e-02, 1.620e-01), r);\n\tr = MulAdd(s3_3, M4(-4.869e-02, 5.506e-02, -1.423e-03, -8.865e-02, 4.620e-02, -3.023e-02, -6.991e-02, -5.063e-02, -5.804e-03, 9.471e-04, -1.476e-02, -7.117e-02, 2.921e-02, -8.528e-02, 9.544e-02, -6.845e-02), r);\n\tr = MulAdd(s3_4, M4(-3.153e-02, 2.901e-01, 1.062e-01, -1.654e-01, 3.504e-02, -1.983e-01, 3.474e-02, 2.137e-01, 5.099e-02, 1.739e-02, 1.364e-01, 3.750e-02, -1.250e-02, -4.225e-02, -6.298e-02, 1.174e-01), r);\n\tr = MulAdd(s3_5, M4(3.235e-02, 1.014e-01, -4.390e-02, 1.367e-02, -7.041e-02, -8.663e-02, 4.107e-02, -1.313e-01, -5.041e-02, -8.777e-03, 6.259e-02, 2.509e-02, 1.405e-01, 1.588e-01, 2.664e-02, 1.379e-01), r);\n\tr = MulAdd(s3_6, M4(4.731e-02, 3.992e-02, 8.726e-02, 8.352e-02, -4.385e-02, 6.694e-04, 5.591e-02, -1.869e-02, 3.434e-02, -4.853e-02, -6.173e-02, -4.227e-02, 1.133e-02, 7.837e-02, -6.929e-02, 5.805e-02), r);\n\tr = MulAdd(s3_7, M4(1.449e-01, 1.094e-02, -5.163e-02, 9.452e-02, 1.171e-01, 1.046e-03, 1.260e-01, 1.795e-01, 3.258e-03, 3.548e-03, 2.109e-02, 1.907e-02, 5.014e-02, 4.713e-02, 1.726e-02, -7.078e-02), r);\n\tr = MulAdd(s3_8, M4(8.935e-02, -6.422e-02, 6.770e-02, -4.356e-02, -1.583e-02, -1.684e-02, -8.968e-02, 2.203e-02, -1.843e-02, -2.197e-02, -1.469e-02, 1.552e-02, 2.657e-02, -4.394e-03, 4.107e-02, -7.831e-03), r);\n\tr = MulAdd(s4_0, M4(7.700e-02, 3.542e-02, 2.845e-02, -6.420e-02, 2.802e-02, 6.201e-02, 1.097e-01, -1.347e-01, 3.497e-02, 9.450e-02, -1.123e-02, 5.075e-02, 8.997e-02, -1.132e-01, -1.337e-02, 5.028e-02), r);\n\tr = MulAdd(s4_1, M4(-7.537e-02, 5.639e-02, 1.085e-01, -1.155e-01, 2.222e-01, 6.309e-02, -3.337e-02, -8.426e-02, -4.272e-02, 1.215e-02, -1.528e-01, 6.993e-02, -2.884e-01, -2.062e-01, 2.984e-02, -1.550e-02), r);\n\tr = MulAdd(s4_2, M4(4.233e-03, -1.193e-01, 4.585e-02, 1.372e-01, -3.937e-02, -6.613e-02, -4.116e-02, 2.296e-03, 7.788e-02, 3.592e-02, 1.762e-02, -2.034e-01, -8.970e-02, 2.347e-02, 2.314e-02, -5.101e-02), r);\n\tr = MulAdd(s4_3, M4(5.040e-02, -6.901e-02, 7.410e-03, -5.935e-02, -1.089e-02, 1.786e-01, 1.902e-01, -3.943e-03, 2.349e-03, -6.481e-02, -4.593e-02, 3.733e-02, 6.607e-02, -1.105e-01, 1.234e-01, -6.116e-02), r);\n\tr = MulAdd(s4_4, M4(-1.231e-01, 8.899e-02, 5.861e-02, 6.610e-02, -1.799e-02, -2.101e-02, -4.797e-03, 2.038e-01, -1.418e-01, -3.988e-02, 3.584e-02, -1.958e-01, -2.224e-01, -1.563e-01, -1.337e-02, -1.558e-01), r);\n\tr = MulAdd(s4_5, M4(2.220e-01, -1.101e-02, 2.653e-03, 7.280e-02, -3.506e-02, 7.103e-04, 1.225e-01, 3.272e-04, -4.636e-02, 1.115e-01, 4.076e-02, -1.121e-01, 4.149e-02, -4.349e-02, -1.524e-01, 3.738e-02), r);\n\tr = MulAdd(s4_6, M4(7.249e-02, -5.538e-03, 3.810e-02, 7.547e-02, -4.347e-02, 3.399e-02, 1.992e-02, -4.980e-02, 1.005e-02, 3.027e-02, -4.584e-02, -2.648e-02, 3.174e-02, 1.282e-01, 3.011e-02, -1.462e-01), r);\n\tr = MulAdd(s4_7, M4(1.377e-01, -3.892e-02, 1.709e-02, 1.353e-01, 3.778e-02, -8.988e-02, 1.101e-01, 7.760e-02, 6.029e-02, -1.098e-01, 1.895e-01, -9.690e-02, 2.427e-01, -9.797e-02, -8.529e-02, -5.416e-02), r);\n\tr = MulAdd(s4_8, M4(1.343e-01, -7.242e-02, 2.388e-02, 2.345e-02, -3.886e-02, 3.248e-02, 1.910e-02, -8.438e-03, 2.481e-02, -4.870e-02, -6.791e-03, 1.061e-01, 3.995e-02, -4.022e-03, -6.221e-03, -5.024e-02), r);\n\tr = MulAdd(s5_0, M4(5.602e-02, -4.308e-02, 9.808e-02, 6.040e-04, 6.339e-02, 5.917e-02, -4.881e-02, -9.820e-02, -4.466e-02, 7.009e-03, 2.818e-02, -3.478e-02, 1.907e-02, -1.026e-01, -2.022e-02, -9.760e-02), r);\n\tr = MulAdd(s5_1, M4(-1.070e-01, -1.691e-03, 9.849e-02, 1.522e-01, -7.722e-03, 2.113e-02, -9.818e-02, -5.139e-02, 1.086e-01, -3.740e-02, 5.049e-02, -2.643e-02, 9.843e-03, 4.505e-02, -6.481e-02, 2.022e-02), r);\n\tr = MulAdd(s5_2, M4(-9.071e-02, -6.706e-02, -2.061e-02, 1.538e-01, -3.540e-02, 2.135e-02, 9.540e-04, 3.653e-02, 1.507e-01, 1.192e-01, 1.021e-01, -8.306e-03, -4.461e-02, -5.049e-02, -1.124e-01, 9.884e-03), r);\n\tr = MulAdd(s5_3, M4(6.294e-02, -1.282e-01, 3.868e-02, -1.814e-01, 4.439e-02, 7.000e-02, -1.362e-01, 7.447e-02, 2.668e-02, 4.819e-02, -5.729e-02, 8.139e-03, -5.443e-02, 9.531e-02, 1.156e-01, 4.085e-02), r);\n\tr = MulAdd(s5_4, M4(-8.484e-03, 6.197e-03, 6.633e-02, 1.655e-01, 6.602e-02, -7.951e-02, -1.966e-01, 1.283e-01, -1.011e-01, 4.280e-02, -5.414e-02, -2.545e-01, -1.495e-01, -6.738e-02, 1.571e-02, -1.941e-01), r);\n\tr = MulAdd(s5_5, M4(2.349e-01, 9.500e-02, -1.113e-01, -2.583e-02, 2.032e-02, 5.190e-02, -1.364e-01, -4.065e-02, -1.637e-01, 1.754e-02, -2.211e-02, -5.600e-02, 2.849e-01, 5.747e-02, -2.978e-02, 5.666e-02), r);\n\tr = MulAdd(s5_6, M4(-6.206e-02, 2.496e-02, 2.480e-02, 3.657e-02, -1.159e-01, 5.506e-02, -1.441e-01, -2.198e-02, 2.306e-03, 9.180e-02, 2.019e-02, -4.232e-04, 2.116e-02, -2.850e-02, -4.118e-02, -3.627e-02), r);\n\tr = MulAdd(s5_7, M4(8.919e-02, -4.855e-02, 6.477e-02, 1.439e-01, -6.477e-02, 1.138e-01, -9.273e-02, -2.459e-02, 2.984e-02, -5.195e-02, 5.993e-02, 1.544e-02, 1.065e-01, 5.338e-02, 5.271e-02, 1.000e-01), r);\n\tr = MulAdd(s5_8, M4(1.037e-01, -3.917e-02, 1.450e-02, -5.118e-02, -5.068e-02, 3.593e-02, -2.183e-01, -2.920e-02, -8.386e-02, -5.458e-02, 8.985e-02, 4.988e-02, 7.487e-02, 2.530e-02, 5.512e-02, -2.582e-02), r);\n\tr = MulAdd(s6_0, M4(-1.468e-02, 3.283e-02, 2.486e-01, -2.172e-02, -3.365e-02, -7.289e-02, -1.009e-01, 3.873e-02, -5.674e-02, -2.549e-03, -4.322e-02, 7.819e-03, 4.291e-02, -9.667e-02, -7.909e-04, -1.967e-01), r);\n\tr = MulAdd(s6_1, M4(-2.950e-02, -1.050e-01, 1.905e-01, 3.581e-01, 6.321e-02, -6.692e-02, -6.391e-03, -6.914e-04, 3.219e-02, -4.255e-02, -6.420e-02, -7.836e-02, 2.385e-01, 2.386e-02, 3.324e-02, 5.495e-02), r);\n\tr = MulAdd(s6_2, M4(8.648e-02, 9.869e-02, 3.091e-01, -5.345e-02, 7.443e-02, 1.316e-02, -1.180e-02, 3.567e-02, -2.939e-02, 1.190e-02, -5.904e-02, -9.631e-03, 1.171e-01, 1.086e-01, -4.678e-02, 3.794e-02), r);\n\tr = MulAdd(s6_3, M4(-4.051e-02, -8.971e-02, -3.028e-01, 1.302e-01, 4.434e-02, -2.039e-02, -9.829e-02, 1.112e-02, 1.413e-01, 2.567e-01, 3.658e-02, -6.832e-02, -1.298e-01, -1.938e-01, 7.153e-02, -1.650e-02), r);\n\tr = MulAdd(s6_4, M4(-8.773e-02, -2.883e-01, -4.347e-01, 1.199e-01, -4.540e-02, 3.200e-02, 9.576e-02, 6.254e-03, -1.749e-01, 2.754e-01, -3.059e-01, -8.842e-02, -3.085e-01, -1.033e-01, -4.969e-02, -1.340e-01), r);\n\tr = MulAdd(s6_5, M4(-7.059e-02, 3.359e-03, -2.079e-01, 4.492e-02, -7.667e-02, -1.844e-02, 1.917e-01, 1.008e-02, -9.998e-02, -9.386e-02, -1.054e-01, -4.729e-02, -2.093e-01, -9.179e-02, 1.722e-01, 3.993e-02), r);\n\tr = MulAdd(s6_6, M4(-7.153e-02, 5.159e-02, 8.474e-02, 1.321e-01, 1.886e-02, -1.753e-02, -5.105e-02, 5.375e-02, 4.419e-02, 1.282e-01, 4.456e-02, 9.137e-02, -4.818e-02, -1.826e-02, -1.290e-01, -3.767e-02), r);\n\tr = MulAdd(s6_7, M4(-9.777e-02, 1.020e-01, -1.329e-01, -1.994e-01, 4.367e-02, 2.940e-02, -1.080e-01, 9.001e-02, 3.387e-01, 1.146e-01, 2.638e-01, 9.648e-02, -1.823e-01, -3.080e-02, 1.478e-01, 2.614e-02), r);\n\tr = MulAdd(s6_8, M4(-5.921e-02, -3.250e-02, 4.172e-02, -7.936e-02, -5.095e-02, 2.877e-02, -1.530e-01, -9.587e-02, 2.092e-02, 7.210e-02, 1.127e-01, 3.929e-02, -8.320e-02, -3.228e-03, 1.452e-01, 1.284e-01), r);\n\tr = MulAdd(s7_0, M4(-5.253e-02, 2.278e-02, 6.018e-02, 9.507e-02, 3.973e-02, 6.387e-02, 6.711e-03, -4.682e-02, -1.063e-01, 4.267e-03, 2.971e-02, -4.539e-02, 1.165e-01, -7.157e-02, 4.141e-02, 1.145e-01), r);\n\tr = MulAdd(s7_1, M4(-4.652e-02, 7.815e-02, -1.048e-01, -4.295e-02, 1.362e-01, 6.352e-02, -2.051e-04, 2.946e-02, -1.731e-01, 3.810e-02, -8.881e-02, -2.138e-02, 9.736e-02, -3.249e-02, 6.547e-02, 1.465e-02), r);\n\tr = MulAdd(s7_2, M4(-1.197e-01, -2.140e-02, -1.381e-02, -1.613e-02, 9.536e-02, 2.392e-02, -1.832e-02, -4.791e-03, -4.896e-02, -5.699e-03, 9.083e-03, -6.092e-02, 2.628e-02, 6.739e-02, 3.363e-02, 7.787e-02), r);\n\tr = MulAdd(s7_3, M4(2.299e-02, -1.116e-01, -1.895e-01, 6.158e-02, -2.903e-02, 1.976e-01, -5.169e-02, -6.359e-03, -1.108e-01, -2.721e-02, -4.755e-02, 1.108e-02, -5.540e-03, 5.188e-02, 4.148e-02, 2.312e-01), r);\n\tr = MulAdd(s7_4, M4(5.459e-02, -1.114e-01, -2.955e-01, 2.604e-02, -7.562e-02, 3.799e-02, 7.620e-02, -8.782e-02, -4.982e-01, -4.289e-02, -1.030e-01, 5.294e-02, -5.541e-02, -6.984e-02, 1.854e-02, -2.165e-02), r);\n\tr = MulAdd(s7_5, M4(-1.309e-01, 1.373e-01, 1.565e-02, -2.078e-02, -2.317e-02, 4.668e-03, 1.389e-01, -7.272e-02, -1.375e-01, 4.768e-02, 8.811e-02, -1.680e-04, 9.234e-03, -6.011e-04, 1.287e-02, 1.274e-01), r);\n\tr = MulAdd(s7_6, M4(-3.351e-02, -1.516e-02, 1.227e-02, 1.531e-02, -3.170e-02, 1.613e-01, 6.721e-02, 6.211e-02, 2.716e-02, -1.389e-01, 3.411e-02, 1.396e-03, -9.898e-02, 6.533e-03, -3.053e-02, -7.764e-03), r);\n\tr = MulAdd(s7_7, M4(-5.799e-02, -7.095e-03, -7.659e-02, 1.150e-01, -2.979e-02, 5.477e-02, -1.147e-01, 7.278e-02, -1.017e-01, -9.430e-02, -4.289e-02, 1.574e-01, -8.640e-02, -4.577e-02, -1.199e-01, -1.743e-01), r);\n\tr = MulAdd(s7_8, M4(7.061e-02, -4.189e-02, -3.871e-03, -3.726e-02, -2.013e-02, 1.605e-02, -8.725e-02, -6.317e-02, -1.159e-01, -6.920e-02, -9.147e-02, -1.023e-02, 6.410e-03, 3.396e-02, -2.014e-02, 6.373e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.894e-02, -4.402e-03, -8.438e-03, -1.903e-03 };\n\tr = MulAdd(s0_0, M4(3.675e-02, 5.997e-02, -3.650e-02, -9.469e-02, -1.309e-03, -1.026e-02, -4.568e-02, 1.177e-02, -2.319e-02, 3.435e-02, -4.605e-03, 8.751e-03, -1.265e-01, 7.075e-05, 1.598e-03, -7.128e-03), r);\n\tr = MulAdd(s0_1, M4(-3.769e-02, 1.289e-01, 7.292e-02, 2.980e-02, -1.155e-01, -6.349e-02, 7.930e-02, -2.253e-02, -2.302e-02, -2.740e-02, 5.069e-03, 2.801e-02, -1.855e-01, -2.358e-01, -4.332e-02, 4.699e-02), r);\n\tr = MulAdd(s0_2, M4(3.070e-02, 8.126e-02, -8.298e-02, 2.904e-03, 8.344e-02, -9.977e-02, -2.161e-01, -1.270e-02, 5.156e-02, -1.070e-01, 3.527e-02, -1.041e-02, -7.620e-02, -1.792e-01, -7.605e-02, -2.338e-02), r);\n\tr = MulAdd(s0_3, M4(8.779e-02, 1.977e-02, 8.397e-03, -6.088e-02, -4.488e-02, 3.835e-03, -3.778e-02, 3.318e-04, 2.340e-01, 1.722e-01, -1.464e-01, 2.562e-02, 1.394e-01, -1.146e-01, 3.923e-02, -3.789e-02), r);\n\tr = MulAdd(s0_4, M4(-1.314e-01, 4.759e-02, -1.111e-01, -8.904e-02, 2.705e-01, -1.703e-01, 2.401e-01, -3.214e-01, 3.357e-01, -3.734e-02, 1.988e-01, -1.702e-01, 6.567e-02, -3.786e-01, -6.481e-02, 7.642e-02), r);\n\tr = MulAdd(s0_5, M4(-2.133e-02, 5.389e-02, -1.925e-02, 1.168e-02, -6.679e-02, -1.289e-01, 1.040e-02, -1.619e-01, 5.680e-02, 4.877e-02, 5.648e-02, 5.265e-02, 1.574e-01, -3.657e-01, -1.724e-01, 6.129e-02), r);\n\tr = MulAdd(s0_6, M4(6.074e-03, -7.729e-02, -1.006e-01, -1.152e-02, 9.523e-02, -6.766e-02, -2.787e-03, 9.933e-03, 6.489e-02, -5.330e-02, -8.086e-04, -9.893e-02, 4.494e-02, -1.720e-01, 7.374e-02, 7.742e-02), r);\n\tr = MulAdd(s0_7, M4(-1.204e-01, 7.328e-02, 7.396e-02, -1.209e-01, 9.194e-02, -1.228e-01, 4.137e-02, 4.043e-02, -1.156e-01, -2.074e-02, -5.843e-02, -4.110e-03, -2.273e-01, 8.433e-02, -1.024e-02, 3.197e-03), r);\n\tr = MulAdd(s0_8, M4(-4.821e-02, -4.134e-02, -1.442e-01, -8.328e-02, 2.852e-02, 3.135e-02, 6.543e-03, 2.640e-02, 4.538e-02, 9.523e-02, 1.585e-02, -9.692e-02, -6.346e-02, -1.823e-01, -4.534e-02, 3.876e-02), r);\n\tr = MulAdd(s1_0, M4(2.361e-02, -8.350e-02, 1.339e-01, -7.668e-02, -7.288e-02, 5.647e-02, 2.951e-02, -8.884e-02, -2.109e-02, 6.377e-02, 3.692e-01, -5.184e-02, 6.710e-02, -1.169e-01, 4.998e-02, -1.445e-02), r);\n\tr = MulAdd(s1_1, M4(3.144e-02, -8.041e-02, 2.650e-01, 5.868e-02, 3.754e-02, 1.225e-01, -5.726e-02, 2.163e-01, 2.362e-02, 1.440e-01, 1.214e-01, 3.473e-04, -1.772e-01, 1.047e-01, -8.946e-02, 8.762e-02), r);\n\tr = MulAdd(s1_2, M4(-1.873e-01, 3.456e-03, -3.806e-02, 9.440e-02, 7.302e-02, 1.553e-02, -4.385e-02, -2.931e-02, -5.164e-02, 1.311e-01, 3.349e-02, -1.530e-02, 1.267e-01, 3.255e-02, 1.438e-02, 2.959e-02), r);\n\tr = MulAdd(s1_3, M4(1.597e-01, -1.768e-01, 1.526e-01, 5.055e-02, -5.962e-03, -1.644e-01, -8.546e-02, -4.917e-02, -1.387e-01, -6.411e-02, 4.689e-01, -1.519e-01, 2.620e-02, -2.779e-02, -7.039e-02, -4.236e-02), r);\n\tr = MulAdd(s1_4, M4(2.026e-02, -4.697e-01, 9.243e-02, -2.950e-01, 5.595e-02, -1.964e-01, -1.564e-01, -4.191e-01, -3.245e-01, -4.436e-02, 1.247e-01, -2.702e-01, -3.343e-03, -9.253e-03, 1.241e-01, -5.372e-02), r);\n\tr = MulAdd(s1_5, M4(-1.612e-01, -3.095e-01, -1.355e-02, 1.140e-01, -1.342e-01, 2.531e-01, 2.424e-01, -2.119e-02, -6.644e-02, -1.501e-02, -3.428e-02, 1.780e-02, -1.017e-01, 7.337e-02, -1.332e-02, 1.211e-01), r);\n\tr = MulAdd(s1_6, M4(1.561e-01, -6.944e-02, 4.193e-02, 8.192e-02, 1.577e-01, 1.281e-02, -1.118e-01, -5.691e-02, -2.364e-02, 1.690e-02, 1.312e-01, 8.214e-02, 7.732e-02, 1.035e-01, 3.027e-02, -1.452e-02), r);\n\tr = MulAdd(s1_7, M4(1.421e-01, -2.347e-01, 2.118e-02, 1.315e-01, 1.566e-01, 1.144e-01, 1.285e-01, 4.122e-02, -3.384e-02, 8.157e-02, -1.205e-01, 1.959e-02, -6.363e-02, 1.399e-01, 5.847e-02, 4.064e-02), r);\n\tr = MulAdd(s1_8, M4(1.111e-02, -8.978e-02, -5.925e-02, -7.568e-02, 1.495e-01, 2.570e-01, -5.507e-04, 2.520e-02, -1.118e-02, -9.439e-02, -6.084e-02, -5.373e-02, -1.533e-03, 1.219e-01, -1.389e-02, -1.508e-01), r);\n\tr = MulAdd(s2_0, M4(-4.162e-02, -4.071e-02, -5.766e-02, 5.628e-03, -6.182e-02, 4.116e-02, 1.410e-02, -1.759e-02, 2.086e-01, -1.512e-01, -1.230e-01, -1.002e-01, 4.260e-02, -2.905e-02, 8.458e-02, 1.022e-02), r);\n\tr = MulAdd(s2_1, M4(3.019e-02, -1.456e-01, -1.264e-01, -4.691e-02, 7.353e-02, 5.608e-02, -1.380e-01, -4.886e-02, -7.036e-02, 1.277e-01, -1.796e-01, -2.979e-01, -3.455e-01, 1.449e-01, 7.792e-02, -7.989e-02), r);\n\tr = MulAdd(s2_2, M4(8.347e-02, -4.100e-03, -3.079e-02, 1.025e-01, 8.068e-02, 1.296e-01, 8.245e-02, 1.703e-02, 1.256e-01, 2.133e-02, 1.571e-01, -8.556e-02, -1.067e-01, -1.455e-01, -2.035e-02, -6.335e-02), r);\n\tr = MulAdd(s2_3, M4(-4.614e-02, 7.387e-02, 1.166e-01, -7.077e-02, -2.393e-02, 1.081e-01, -2.396e-01, 8.131e-02, -3.251e-03, -4.704e-02, -7.487e-02, 7.985e-03, -1.166e-01, -4.941e-02, 1.027e-02, 1.565e-01), r);\n\tr = MulAdd(s2_4, M4(4.681e-02, -1.264e-02, 1.491e-01, 4.652e-02, -1.520e-03, 2.008e-01, -8.360e-02, -1.407e-01, -6.069e-02, 3.109e-01, -1.926e-02, -1.985e-02, -8.434e-02, -1.484e-02, 1.761e-01, -4.318e-02), r);\n\tr = MulAdd(s2_5, M4(-3.128e-01, -4.635e-02, 1.431e-01, 1.348e-01, 1.183e-01, 4.978e-02, 1.522e-01, -9.026e-02, 1.138e-01, 1.307e-01, -4.564e-02, -1.154e-01, -3.911e-03, 8.876e-04, -1.357e-01, -1.134e-01), r);\n\tr = MulAdd(s2_6, M4(-2.743e-02, 3.054e-02, 6.684e-02, 9.738e-04, -2.262e-01, 1.640e-01, -3.429e-02, -1.071e-02, -6.768e-02, -2.352e-02, -2.361e-01, -3.020e-01, 1.184e-02, 7.232e-02, 3.476e-02, -9.865e-03), r);\n\tr = MulAdd(s2_7, M4(-2.802e-01, -2.529e-01, -1.229e-01, -1.349e-01, -5.267e-02, 1.006e-01, -2.282e-02, -3.943e-02, 3.723e-01, -2.812e-01, 3.149e-01, 1.970e-02, -3.297e-02, -1.841e-01, 9.541e-02, 1.027e-01), r);\n\tr = MulAdd(s2_8, M4(1.147e-02, -8.793e-03, 1.588e-01, -1.293e-02, -1.458e-01, 1.161e-01, -2.741e-02, -6.339e-02, 3.385e-02, 6.893e-02, -6.859e-02, -1.301e-01, 4.266e-02, 4.091e-03, 9.147e-03, -6.810e-02), r);\n\tr = MulAdd(s3_0, M4(5.698e-02, 8.608e-02, -7.571e-02, -1.704e-02, 7.851e-02, -7.372e-02, 4.605e-02, -3.019e-02, -3.718e-02, -2.448e-02, -3.068e-02, -5.345e-02, 1.398e-01, -1.581e-02, -1.463e-01, -8.957e-02), r);\n\tr = MulAdd(s3_1, M4(3.903e-02, 1.542e-02, -1.304e-01, 2.455e-02, 6.567e-02, -2.254e-02, 1.981e-02, 8.340e-02, -8.381e-02, 8.334e-02, -1.282e-01, -6.353e-03, -3.466e-02, 9.503e-02, 2.178e-02, 2.268e-02), r);\n\tr = MulAdd(s3_2, M4(7.165e-02, 6.839e-02, -1.454e-02, -2.518e-02, -3.534e-02, 6.600e-02, -3.333e-02, 1.099e-02, -5.149e-02, -5.962e-02, 3.705e-02, 8.507e-03, 1.171e-01, -5.122e-02, 1.308e-01, -7.599e-02), r);\n\tr = MulAdd(s3_3, M4(-4.663e-02, -1.340e-02, -1.379e-01, 2.231e-03, -2.979e-02, 4.621e-02, -1.211e-01, -7.539e-02, -1.957e-02, 1.509e-01, -6.523e-03, -1.156e-01, 6.592e-02, -4.868e-02, 6.305e-03, -1.144e-01), r);\n\tr = MulAdd(s3_4, M4(2.060e-01, 2.034e-03, -7.575e-03, 1.314e-01, -8.559e-02, -9.837e-02, 5.653e-02, -1.914e-01, 1.889e-02, 3.174e-02, -8.599e-02, 8.587e-02, 2.706e-01, -4.214e-02, 6.817e-02, -3.622e-01), r);\n\tr = MulAdd(s3_5, M4(-5.971e-02, 1.780e-01, 1.817e-03, 1.477e-02, 2.373e-02, -2.837e-01, 2.382e-02, -9.675e-02, 1.090e-01, 1.249e-01, 1.647e-01, -2.997e-02, 2.477e-01, 1.275e-01, -6.222e-02, -1.336e-02), r);\n\tr = MulAdd(s3_6, M4(-1.423e-02, 6.043e-02, 4.517e-02, -2.434e-02, -2.237e-03, 1.330e-01, -2.076e-02, 5.665e-02, -1.149e-01, -8.142e-02, 1.748e-02, 4.757e-02, 7.014e-02, -4.076e-03, 1.268e-02, 2.145e-02), r);\n\tr = MulAdd(s3_7, M4(-1.785e-01, -7.156e-02, -2.492e-02, 4.320e-02, -1.728e-02, 1.034e-02, 5.533e-02, -5.906e-02, -1.259e-03, -1.854e-02, -5.582e-02, 3.797e-03, 3.889e-02, -7.529e-02, 2.445e-02, 8.897e-02), r);\n\tr = MulAdd(s3_8, M4(-4.278e-02, 5.844e-02, 1.486e-02, -7.576e-03, -7.155e-03, -1.057e-01, -2.649e-02, -5.033e-03, 3.644e-02, 3.797e-02, 4.688e-02, 3.603e-02, 7.478e-02, 4.200e-02, 4.086e-02, 1.633e-02), r);\n\tr = MulAdd(s4_0, M4(2.954e-02, 6.368e-02, 1.124e-02, 1.156e-02, -7.933e-02, 6.929e-02, 1.515e-02, 3.256e-02, -3.112e-02, 1.080e-01, -1.936e-01, -3.785e-02, -9.351e-02, -1.354e-01, 2.461e-01, -5.817e-02), r);\n\tr = MulAdd(s4_1, M4(2.363e-02, -2.653e-02, -1.473e-01, 3.505e-02, 2.167e-02, -6.371e-02, 9.751e-02, -2.605e-02, -1.820e-01, -1.218e-01, 9.630e-02, -7.706e-02, -2.210e-01, -1.898e-01, 2.049e-01, -3.112e-02), r);\n\tr = MulAdd(s4_2, M4(4.299e-02, 1.021e-01, 8.898e-02, 3.527e-02, -5.120e-02, -2.351e-01, 2.368e-02, 3.834e-02, -4.556e-02, -1.265e-01, -6.203e-02, -2.289e-02, 9.493e-02, -1.414e-02, 6.036e-03, -5.510e-02), r);\n\tr = MulAdd(s4_3, M4(-3.797e-02, 3.851e-02, -9.470e-02, 5.490e-02, 6.167e-02, -1.562e-02, 1.131e-01, -9.297e-02, 1.683e-03, 1.295e-02, -6.105e-02, 1.045e-02, -1.353e-01, 1.796e-01, 1.789e-01, -1.213e-01), r);\n\tr = MulAdd(s4_4, M4(-8.445e-02, 8.678e-02, -1.243e-01, -2.097e-02, -1.798e-01, 1.405e-01, 1.165e-01, 1.772e-01, 1.905e-01, 4.926e-02, 1.375e-01, -3.092e-02, 2.535e-01, 1.857e-02, -1.840e-01, -2.340e-01), r);\n\tr = MulAdd(s4_5, M4(1.488e-01, 1.463e-01, 5.667e-02, -1.390e-02, 3.493e-02, 5.218e-03, 4.365e-02, 7.459e-02, -1.294e-01, -1.785e-01, -1.037e-01, -9.532e-02, -4.308e-02, -7.546e-02, 7.063e-02, -1.180e-02), r);\n\tr = MulAdd(s4_6, M4(-5.328e-02, 1.059e-01, -4.184e-02, -2.673e-02, -1.184e-01, 7.588e-02, 7.261e-02, -9.560e-05, -1.074e-01, 3.232e-02, 2.400e-02, -6.284e-02, -1.591e-01, -5.297e-02, 1.021e-01, 1.491e-02), r);\n\tr = MulAdd(s4_7, M4(-5.382e-02, -1.088e-01, -2.641e-03, -3.996e-03, -1.735e-01, 1.856e-01, 1.465e-01, -1.005e-01, -5.233e-02, -7.944e-03, 8.574e-02, 3.987e-02, -1.473e-01, -4.357e-01, -1.162e-02, 7.022e-02), r);\n\tr = MulAdd(s4_8, M4(1.801e-01, 8.448e-02, 4.178e-02, -3.872e-02, 4.254e-02, -1.712e-01, 3.371e-03, -8.948e-02, 1.224e-02, -9.654e-02, -3.794e-02, 4.958e-02, 8.737e-02, 6.929e-02, -1.333e-01, -2.040e-02), r);\n\tr = MulAdd(s5_0, M4(-4.158e-02, 2.599e-02, 7.901e-02, 8.321e-03, -1.736e-01, -6.602e-02, -6.660e-02, 8.860e-02, 1.724e-02, 1.033e-02, -8.451e-02, -2.804e-02, 3.716e-02, 3.139e-02, -1.055e-03, 2.071e-02), r);\n\tr = MulAdd(s5_1, M4(2.268e-01, -1.047e-01, -1.858e-01, 5.456e-02, -1.151e-01, -2.588e-01, -3.722e-02, 3.701e-02, 6.879e-02, -8.261e-02, 2.911e-02, 6.549e-02, -2.712e-02, 4.789e-02, 1.068e-01, -1.197e-01), r);\n\tr = MulAdd(s5_2, M4(-4.443e-02, -9.052e-02, -4.703e-02, 4.579e-03, -1.075e-01, -1.352e-01, -7.144e-02, -9.541e-03, 1.335e-01, -5.074e-03, 5.284e-02, 2.923e-02, 6.626e-02, 1.579e-03, 4.798e-02, -1.005e-01), r);\n\tr = MulAdd(s5_3, M4(-1.143e-01, -1.722e-01, 2.441e-02, 1.310e-01, 3.420e-02, -5.373e-02, 7.689e-02, -4.045e-02, 1.203e-01, -9.565e-02, -7.908e-02, -2.734e-02, 1.031e-01, -3.036e-02, 9.257e-03, -9.268e-02), r);\n\tr = MulAdd(s5_4, M4(-3.542e-02, -1.875e-01, 2.537e-02, -2.439e-02, -9.876e-02, -3.396e-02, 6.292e-02, 6.549e-02, 1.529e-01, -4.029e-02, 2.000e-01, 1.193e-01, -2.729e-02, -1.903e-02, -1.803e-01, -1.793e-02), r);\n\tr = MulAdd(s5_5, M4(-6.030e-02, -1.222e-01, -1.170e-01, 2.348e-01, 6.808e-02, -3.617e-02, -7.631e-02, -2.720e-02, -2.292e-01, -3.099e-01, -8.020e-03, -1.038e-01, 6.242e-02, 5.190e-02, 8.095e-02, 9.514e-02), r);\n\tr = MulAdd(s5_6, M4(6.978e-03, -6.634e-02, 4.558e-02, -5.632e-02, 3.886e-02, 1.042e-01, 6.360e-03, 1.132e-01, -5.098e-02, 8.961e-02, 9.910e-02, 8.475e-02, 8.224e-02, -4.271e-02, -7.546e-02, 2.300e-03), r);\n\tr = MulAdd(s5_7, M4(6.222e-02, -3.369e-01, -6.016e-02, -2.080e-01, -1.476e-01, 1.600e-01, -9.421e-02, 1.922e-03, 6.097e-02, 1.039e-01, 6.280e-02, -4.231e-02, 3.617e-02, -2.071e-01, -2.099e-02, -7.936e-02), r);\n\tr = MulAdd(s5_8, M4(1.362e-02, -2.364e-01, -2.881e-02, -1.893e-01, -4.383e-02, -5.227e-02, -6.600e-02, -2.155e-02, 1.962e-02, -4.751e-05, -1.398e-01, 9.889e-02, 1.032e-01, 2.337e-02, 2.391e-02, 4.492e-02), r);\n\tr = MulAdd(s6_0, M4(3.002e-02, -2.149e-01, -5.255e-02, -1.344e-01, 5.155e-03, -4.274e-02, -1.978e-02, -2.494e-02, -7.873e-03, -4.412e-02, 2.502e-02, -4.448e-02, 2.398e-01, 1.624e-01, -9.287e-02, -6.755e-02), r);\n\tr = MulAdd(s6_1, M4(-1.541e-02, 1.594e-01, 2.824e-02, 1.672e-01, 1.304e-01, -3.634e-02, -1.861e-02, 2.413e-02, 8.032e-02, 5.426e-02, 7.488e-02, -4.554e-02, 1.686e-01, 2.354e-01, 2.844e-01, -8.371e-02), r);\n\tr = MulAdd(s6_2, M4(-2.267e-02, -7.544e-02, -8.038e-02, 1.154e-01, 1.699e-02, 8.058e-02, 7.575e-03, 4.182e-03, 2.275e-02, 8.964e-02, -7.309e-03, -7.329e-02, 7.492e-02, 1.014e-01, -4.596e-03, -2.045e-02), r);\n\tr = MulAdd(s6_3, M4(2.319e-01, 3.723e-02, -1.344e-01, 1.486e-01, 4.493e-02, -4.327e-02, -8.266e-02, 3.615e-02, -1.576e-01, 2.074e-02, -5.127e-02, 3.548e-02, -5.083e-03, 2.821e-01, 1.122e-01, -7.263e-03), r);\n\tr = MulAdd(s6_4, M4(-2.149e-03, -2.494e-01, -9.982e-02, -8.301e-01, 1.845e-01, -1.506e-01, -3.571e-03, -2.393e-02, -1.104e-01, -5.359e-02, -2.173e-02, 4.126e-02, 1.100e-01, -4.346e-02, 2.896e-01, 8.233e-03), r);\n\tr = MulAdd(s6_5, M4(-8.545e-02, -7.732e-02, 7.867e-02, -2.736e-01, 1.708e-01, -1.131e-02, -3.363e-02, 3.079e-02, -1.554e-01, -4.239e-02, 5.462e-02, -1.106e-01, 4.246e-02, 9.369e-02, 1.026e-02, -2.496e-02), r);\n\tr = MulAdd(s6_6, M4(-1.443e-01, 2.616e-02, 7.678e-02, -3.301e-02, -1.494e-04, -2.239e-02, -8.535e-02, 2.077e-02, -2.918e-01, 5.707e-02, 9.960e-02, 1.440e-02, 2.924e-02, 1.643e-02, -2.174e-02, 8.667e-03), r);\n\tr = MulAdd(s6_7, M4(2.497e-01, 3.967e-02, -7.436e-02, 4.780e-01, 1.139e-01, 6.077e-02, 3.787e-02, 3.072e-02, 4.866e-02, -3.114e-02, 2.210e-01, 5.498e-01, 2.244e-03, 1.709e-01, 1.689e-01, 1.226e-01), r);\n\tr = MulAdd(s6_8, M4(-9.497e-02, 1.582e-01, 9.806e-02, 2.241e-01, 1.024e-01, 1.254e-01, 9.498e-02, -7.761e-03, -1.223e-02, 6.641e-02, 1.096e-01, 6.125e-03, 3.307e-02, -2.369e-02, -4.217e-02, -1.282e-01), r);\n\tr = MulAdd(s7_0, M4(-4.745e-02, 6.797e-02, -7.921e-02, -2.684e-02, -4.855e-02, -6.523e-02, 6.867e-02, -7.047e-02, 7.915e-02, 4.574e-02, -2.760e-02, -1.326e-02, 1.022e-02, -3.943e-02, 1.583e-01, -4.302e-02), r);\n\tr = MulAdd(s7_1, M4(-1.258e-01, -6.023e-02, -3.607e-02, 3.000e-02, -4.323e-02, 1.399e-01, -3.115e-02, -7.780e-03, 1.587e-01, -1.995e-02, -1.057e-02, -3.390e-02, -1.875e-02, -7.517e-02, 8.273e-02, -1.273e-02), r);\n\tr = MulAdd(s7_2, M4(-9.371e-02, 1.472e-01, 7.151e-02, -2.068e-02, -6.272e-02, 1.100e-01, -3.908e-03, -3.746e-02, 1.264e-01, -2.117e-03, -5.027e-03, 9.286e-03, 1.609e-03, -6.072e-02, 7.644e-05, -7.595e-02), r);\n\tr = MulAdd(s7_3, M4(-8.126e-02, 1.954e-02, 1.255e-01, 1.604e-02, -4.537e-02, -1.292e-01, 8.680e-02, -1.509e-02, -3.346e-04, -5.120e-03, 2.588e-02, 1.256e-03, 1.354e-01, 9.971e-03, 3.504e-02, 1.009e-02), r);\n\tr = MulAdd(s7_4, M4(-1.952e-04, -2.518e-01, -1.969e-01, 1.067e-01, -1.505e-01, 7.530e-02, 1.211e-01, -7.975e-02, -4.654e-02, -1.149e-01, -8.681e-02, 3.955e-02, 1.141e-01, -1.718e-01, 1.252e-01, -8.142e-02), r);\n\tr = MulAdd(s7_5, M4(-6.035e-02, 5.333e-02, -4.389e-02, -9.822e-02, -7.485e-02, 7.244e-02, 7.671e-03, -4.813e-02, 1.363e-01, -3.805e-02, -1.642e-01, -1.544e-01, -3.469e-02, 6.749e-02, -5.906e-02, -1.140e-02), r);\n\tr = MulAdd(s7_6, M4(6.610e-02, -1.710e-02, -3.299e-02, -7.538e-02, -1.988e-01, -1.846e-02, 8.273e-02, 1.009e-01, 1.600e-01, 1.211e-02, 5.993e-02, -5.980e-02, -9.680e-02, 9.439e-02, 1.498e-01, 1.416e-01), r);\n\tr = MulAdd(s7_7, M4(2.026e-02, -7.128e-02, -1.125e-01, -6.044e-02, -1.754e-01, 7.820e-02, -4.586e-02, 1.090e-01, 1.076e-02, -9.473e-02, -1.519e-02, 7.060e-02, -1.306e-01, 2.420e-01, -4.872e-02, 1.552e-01), r);\n\tr = MulAdd(s7_8, M4(-4.903e-02, -4.213e-02, 6.470e-02, -2.639e-02, -1.248e-01, -3.860e-02, 6.273e-02, 4.119e-03, 1.416e-01, 1.482e-01, -1.337e-01, -1.764e-01, -6.911e-02, 4.784e-02, 5.185e-02, 1.931e-02), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 6\n//!DESC conv5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -8.272e-03, -2.557e-04, 6.658e-03, 1.107e-02 };\n\tr = MulAdd(s0_0, M4(-2.983e-02, -2.355e-02, 1.340e-02, -1.287e-02, 2.803e-02, -2.711e-02, 3.019e-02, -3.417e-03, 2.946e-01, 2.738e-01, -8.508e-02, 2.910e-01, -6.676e-02, -9.997e-02, 2.409e-02, -7.472e-05), r);\n\tr = MulAdd(s0_1, M4(-1.825e-02, 8.480e-02, 4.182e-02, -8.584e-02, -1.625e-02, -2.023e-02, -6.646e-03, -3.011e-02, -5.927e-02, 1.397e-01, -7.290e-02, 1.314e-01, -1.138e-01, -8.384e-02, -8.820e-02, 8.265e-02), r);\n\tr = MulAdd(s0_2, M4(-2.600e-02, 2.241e-02, -5.769e-02, -8.343e-02, 1.166e-02, -2.480e-02, 3.902e-02, 5.080e-02, 7.858e-02, 5.016e-02, 5.021e-02, 9.969e-03, -1.482e-01, -4.674e-03, -1.362e-01, -3.118e-03), r);\n\tr = MulAdd(s0_3, M4(-9.168e-02, 7.943e-02, -6.831e-03, -4.480e-02, 1.472e-01, -5.284e-02, -1.962e-01, 1.886e-01, 1.174e-01, -1.334e-01, 3.624e-04, 2.994e-01, 3.111e-03, -9.108e-02, 9.959e-02, 6.819e-02), r);\n\tr = MulAdd(s0_4, M4(1.782e-01, -3.958e-02, 5.934e-02, 3.938e-02, 5.210e-02, -1.230e-02, 3.478e-01, -3.377e-02, -7.085e-01, 1.658e-01, -3.095e-03, -9.614e-02, 1.435e-01, -2.333e-01, -5.669e-02, 4.046e-02), r);\n\tr = MulAdd(s0_5, M4(-1.679e-03, -3.512e-02, -1.010e-01, -2.660e-02, -2.707e-02, -3.091e-02, 9.248e-02, -6.013e-02, -2.270e-03, -4.490e-02, 2.436e-01, 1.211e-01, -1.776e-01, -3.132e-02, -9.672e-02, 2.008e-01), r);\n\tr = MulAdd(s0_6, M4(-1.127e-01, -2.387e-02, -8.957e-02, -4.969e-02, 1.061e-01, 7.138e-02, -1.068e-01, -5.554e-02, 3.265e-01, 6.205e-03, -2.548e-01, -9.893e-02, -1.051e-01, -5.722e-03, -3.117e-02, -9.438e-02), r);\n\tr = MulAdd(s0_7, M4(-3.578e-02, -2.550e-03, -2.800e-02, 9.891e-02, -1.086e-01, 1.480e-01, -7.757e-02, 4.708e-02, -1.695e-01, 3.290e-01, -5.393e-03, -1.031e-01, -1.637e-01, 1.105e-03, 8.458e-02, -6.238e-02), r);\n\tr = MulAdd(s0_8, M4(-7.570e-02, -1.015e-02, 8.985e-02, 1.137e-01, 4.670e-02, 2.523e-02, -2.495e-02, 6.150e-02, 1.182e-01, -1.322e-01, 7.917e-02, -8.437e-02, -5.996e-02, -1.705e-01, -2.269e-02, 5.902e-02), r);\n\tr = MulAdd(s1_0, M4(-3.108e-02, 2.095e-02, -5.984e-02, -3.504e-02, 6.117e-02, 5.307e-02, 6.236e-03, -9.603e-02, -2.684e-02, -2.362e-02, -2.378e-02, -2.466e-02, 1.570e-02, -3.570e-02, 1.274e-02, -6.502e-03), r);\n\tr = MulAdd(s1_1, M4(-1.283e-03, 4.384e-02, 8.365e-02, 5.915e-02, -1.145e-02, 2.392e-02, 1.088e-01, -1.762e-03, 4.372e-02, -2.140e-02, 4.264e-02, 9.236e-03, -4.373e-03, -4.429e-02, 9.449e-02, -3.923e-02), r);\n\tr = MulAdd(s1_2, M4(-1.221e-02, 9.479e-02, 4.346e-02, 2.486e-02, 4.054e-02, -4.108e-02, -2.336e-02, 2.922e-02, -1.015e-01, 4.149e-02, -9.165e-04, -1.976e-02, 2.947e-02, 3.191e-02, 1.560e-01, -1.711e-01), r);\n\tr = MulAdd(s1_3, M4(6.241e-02, 6.151e-02, 1.526e-02, -1.081e-01, -7.364e-02, 9.332e-02, -1.636e-01, 2.652e-01, -4.666e-02, -4.395e-02, 2.264e-02, -4.261e-02, 2.372e-02, 2.705e-02, -1.008e-02, 7.214e-02), r);\n\tr = MulAdd(s1_4, M4(5.696e-02, -7.886e-02, 7.643e-02, -8.079e-02, 1.814e-01, -8.703e-02, 1.432e-01, -6.011e-02, -5.641e-02, -1.646e-01, 3.240e-02, -5.445e-02, 5.017e-02, -2.545e-02, -2.747e-02, -2.010e-01), r);\n\tr = MulAdd(s1_5, M4(1.828e-03, -6.594e-02, 1.822e-02, -4.988e-02, 7.417e-03, -6.251e-02, 4.977e-02, -7.883e-02, -3.799e-02, -6.548e-02, -9.739e-02, -6.066e-02, 7.457e-02, 7.262e-02, -1.766e-01, -8.015e-02), r);\n\tr = MulAdd(s1_6, M4(9.728e-02, 8.458e-03, -1.198e-02, -7.956e-02, -1.125e-01, 8.212e-04, -3.966e-02, 1.108e-01, 1.952e-02, -1.352e-02, -1.405e-02, -1.585e-02, -2.641e-02, -2.669e-02, 4.201e-02, 3.363e-02), r);\n\tr = MulAdd(s1_7, M4(6.647e-02, 3.102e-02, 1.156e-01, -3.595e-03, -3.543e-03, 6.918e-02, -1.841e-01, 2.141e-01, 3.876e-02, 1.731e-02, 8.944e-02, -6.585e-02, 1.066e-01, 4.440e-02, 1.549e-01, 1.150e-01), r);\n\tr = MulAdd(s1_8, M4(1.277e-01, -6.115e-02, 1.196e-01, 1.267e-02, -1.131e-02, -1.013e-03, -7.094e-02, -6.453e-02, 9.931e-02, 4.298e-02, 3.554e-02, -2.879e-02, -2.796e-02, 1.079e-01, -6.519e-02, -7.899e-05), r);\n\tr = MulAdd(s2_0, M4(3.688e-02, -1.057e-01, 6.859e-02, 7.128e-03, -9.767e-02, -2.339e-01, -1.277e-03, -6.880e-02, 2.195e-02, 5.017e-02, 3.168e-02, -3.514e-02, 5.195e-03, -1.414e-01, 6.491e-03, -9.037e-02), r);\n\tr = MulAdd(s2_1, M4(6.062e-02, 6.298e-02, 1.971e-02, 1.479e-02, 2.941e-02, -1.413e-01, -9.835e-02, 1.221e-01, 1.035e-01, 1.188e-01, 9.886e-02, -2.821e-02, -9.335e-02, -1.124e-01, 1.724e-01, -2.172e-01), r);\n\tr = MulAdd(s2_2, M4(9.788e-02, -1.209e-02, 1.114e-01, 5.620e-02, -5.509e-02, -5.775e-02, -2.744e-01, -6.316e-02, -4.517e-02, -8.469e-03, 9.252e-02, -7.269e-02, -4.882e-02, -1.046e-01, 3.074e-02, -1.737e-01), r);\n\tr = MulAdd(s2_3, M4(1.225e-02, 8.615e-03, 1.241e-01, -3.521e-02, 1.214e-01, -1.194e-01, 2.046e-01, -1.198e-01, -1.477e-01, 1.091e-01, -8.267e-02, -1.965e-02, -4.767e-02, -4.121e-02, -1.680e-02, -1.344e-01), r);\n\tr = MulAdd(s2_4, M4(1.174e-01, -4.352e-02, -6.449e-02, -4.885e-02, 2.678e-01, -4.427e-01, 3.447e-01, -2.581e-01, -4.840e-01, 4.853e-01, -1.646e-01, 1.738e-01, -1.628e-02, 4.239e-02, 1.317e-01, -3.075e-01), r);\n\tr = MulAdd(s2_5, M4(3.840e-02, -1.366e-01, -2.506e-02, -6.418e-02, 1.866e-01, -1.816e-01, 1.662e-01, -6.389e-02, -8.916e-02, 9.377e-03, 5.231e-02, -1.304e-01, -5.023e-02, -7.681e-02, 1.138e-02, -1.651e-01), r);\n\tr = MulAdd(s2_6, M4(4.548e-02, 2.773e-02, 6.133e-02, -8.995e-03, 2.604e-02, 3.399e-02, 4.119e-02, -5.129e-02, -7.591e-02, -7.953e-02, -6.499e-03, 9.256e-02, 8.176e-02, -7.033e-02, -2.963e-02, -1.108e-01), r);\n\tr = MulAdd(s2_7, M4(5.637e-02, 2.460e-02, 4.969e-03, 1.028e-02, 9.972e-02, -8.314e-03, 1.056e-01, -8.911e-02, -2.204e-01, -2.369e-02, -1.037e-01, 1.372e-01, 1.047e-01, -6.154e-02, -3.977e-02, -1.519e-01), r);\n\tr = MulAdd(s2_8, M4(6.608e-02, 2.095e-02, -7.517e-02, -6.470e-02, 1.252e-02, 3.683e-02, -9.879e-03, -7.856e-02, -1.072e-01, -7.476e-03, 4.455e-02, 3.734e-02, 6.658e-02, -1.017e-01, -1.125e-01, -1.040e-01), r);\n\tr = MulAdd(s3_0, M4(5.096e-02, 2.713e-02, -2.334e-02, 6.541e-02, 2.906e-02, 6.274e-02, -8.113e-02, 1.571e-02, -5.359e-02, 2.073e-02, 3.527e-02, -3.818e-02, -3.931e-02, 6.263e-02, -5.998e-02, -1.589e-02), r);\n\tr = MulAdd(s3_1, M4(6.973e-02, 1.830e-01, -7.406e-02, 1.496e-01, -3.793e-02, 1.698e-01, -7.125e-02, -6.870e-03, 1.689e-02, 2.680e-02, -1.572e-02, -3.051e-03, -2.107e-02, 3.672e-02, 5.379e-03, 9.172e-02), r);\n\tr = MulAdd(s3_2, M4(-1.318e-01, 8.081e-02, -1.517e-01, -4.654e-02, -2.576e-02, 4.760e-02, -2.348e-02, 4.061e-02, -3.277e-02, -3.141e-02, 2.763e-02, -1.285e-01, -4.142e-02, -5.539e-02, -2.869e-02, -1.739e-02), r);\n\tr = MulAdd(s3_3, M4(1.962e-02, -2.933e-02, -3.957e-02, 9.155e-02, -1.313e-02, 1.458e-01, 9.674e-02, 9.480e-02, -1.406e-01, -2.761e-02, 3.372e-02, -3.480e-02, -4.371e-02, 3.017e-02, -7.958e-02, 3.795e-02), r);\n\tr = MulAdd(s3_4, M4(1.400e-01, 2.186e-01, -2.147e-01, 4.190e-02, -1.207e-01, -1.876e-02, 1.263e-01, -2.033e-01, -1.781e-01, 1.664e-01, -3.067e-01, 2.183e-01, -6.203e-02, -4.359e-03, 1.373e-01, 5.447e-02), r);\n\tr = MulAdd(s3_5, M4(-1.102e-01, -2.220e-02, -2.002e-02, -4.875e-02, 8.470e-02, -4.010e-02, 2.741e-02, -4.627e-02, 3.194e-02, -4.281e-02, 3.218e-02, -6.617e-02, -2.043e-02, 4.356e-02, -9.002e-02, 7.398e-02), r);\n\tr = MulAdd(s3_6, M4(-1.732e-02, -4.082e-02, -9.573e-03, -1.600e-02, -1.415e-02, -3.000e-02, -9.384e-04, 2.921e-02, -1.245e-01, -4.522e-02, 1.950e-02, -3.415e-02, -4.652e-02, -4.946e-02, -9.613e-02, -5.485e-02), r);\n\tr = MulAdd(s3_7, M4(-1.953e-02, -1.297e-02, -7.540e-02, -5.647e-02, 7.540e-02, -1.910e-02, -1.929e-02, 7.800e-03, -7.194e-02, 2.666e-02, 1.040e-02, 5.431e-02, 1.307e-01, -7.904e-02, -9.697e-02, 3.888e-02), r);\n\tr = MulAdd(s3_8, M4(-1.090e-02, 4.749e-02, -4.702e-02, 2.379e-02, 6.314e-02, 1.123e-01, 1.127e-02, -8.094e-03, 2.719e-02, 3.356e-02, 6.262e-02, 3.288e-02, -8.982e-02, -1.419e-02, -9.496e-02, -8.593e-03), r);\n\tr = MulAdd(s4_0, M4(5.229e-03, -1.874e-02, -1.448e-02, -1.926e-02, -4.822e-02, 5.543e-02, -2.640e-02, -2.112e-02, -3.138e-02, 4.573e-02, -1.124e-01, -1.924e-02, 2.307e-02, 7.430e-02, -1.039e-01, -2.323e-02), r);\n\tr = MulAdd(s4_1, M4(1.936e-02, -2.353e-02, -1.491e-02, -2.211e-02, 1.228e-02, 2.580e-02, 4.658e-02, 5.566e-02, 5.166e-02, 1.327e-01, -2.065e-01, 9.453e-02, -3.007e-02, -2.316e-01, -4.635e-02, -1.694e-01), r);\n\tr = MulAdd(s4_2, M4(-1.102e-02, 7.086e-02, 5.652e-02, -1.799e-02, 7.982e-02, 7.910e-02, 6.309e-02, 6.261e-02, 4.725e-02, -6.972e-02, -9.501e-02, -6.557e-02, 5.831e-02, -1.474e-01, 1.304e-01, 3.218e-02), r);\n\tr = MulAdd(s4_3, M4(-9.656e-02, -8.320e-02, 9.073e-02, -1.961e-01, -4.695e-02, -3.599e-02, 6.276e-02, -7.496e-02, 8.017e-02, -6.791e-02, -1.330e-01, 8.306e-02, 1.257e-01, 5.050e-02, 6.683e-02, 2.878e-01), r);\n\tr = MulAdd(s4_4, M4(-4.799e-02, 1.671e-02, -2.723e-01, 3.626e-01, 1.262e-01, 9.708e-02, -3.368e-01, -2.745e-01, 2.264e-01, -9.542e-02, -3.528e-02, 8.713e-02, -1.441e-01, 2.150e-02, 1.147e-02, -1.302e-03), r);\n\tr = MulAdd(s4_5, M4(-3.114e-02, 2.848e-02, -2.716e-02, 4.827e-02, -7.087e-03, 2.009e-01, -7.128e-03, 7.284e-02, 6.485e-02, -5.746e-02, 6.051e-02, -1.055e-01, 8.923e-02, -2.384e-01, 2.393e-01, -1.864e-02), r);\n\tr = MulAdd(s4_6, M4(1.962e-02, 3.224e-02, 8.620e-02, 4.632e-02, -5.171e-02, 2.773e-02, 1.982e-02, -1.368e-02, 7.032e-02, 1.549e-02, 2.737e-03, -2.220e-02, 1.133e-01, -5.129e-02, -6.812e-02, 2.359e-02), r);\n\tr = MulAdd(s4_7, M4(-4.866e-02, 6.495e-02, -2.213e-02, -5.636e-02, 4.421e-02, 2.423e-02, -2.990e-02, 1.080e-01, -8.973e-02, 6.921e-02, -1.620e-02, -9.782e-02, -1.811e-01, 7.043e-02, -3.606e-02, -2.599e-01), r);\n\tr = MulAdd(s4_8, M4(3.589e-02, 4.545e-02, 7.728e-02, 3.590e-04, 2.634e-02, 9.737e-02, 1.026e-01, 9.209e-02, -1.511e-02, -6.577e-02, 3.313e-02, -1.148e-01, 1.270e-01, -2.888e-02, -7.045e-02, -1.277e-01), r);\n\tr = MulAdd(s5_0, M4(-3.020e-02, -5.183e-03, 5.261e-02, -4.663e-02, -4.414e-03, 9.873e-02, -4.187e-02, -1.327e-02, 7.123e-03, -1.098e-02, -5.922e-04, 7.608e-02, -4.072e-02, -8.271e-02, 2.753e-02, 3.148e-02), r);\n\tr = MulAdd(s5_1, M4(6.317e-03, -5.983e-02, 1.294e-01, 1.844e-02, 4.390e-02, 6.267e-02, -1.477e-02, 1.219e-01, 2.467e-01, -2.997e-02, -2.403e-02, -2.382e-02, 8.718e-02, -7.586e-02, 2.001e-02, 5.484e-03), r);\n\tr = MulAdd(s5_2, M4(-5.760e-02, 6.528e-02, 1.958e-02, -5.853e-02, 8.200e-02, -2.746e-02, -8.542e-02, -1.933e-02, -1.067e-01, -2.666e-02, -7.423e-03, -4.112e-05, 1.513e-01, -8.296e-02, -4.183e-02, 6.055e-02), r);\n\tr = MulAdd(s5_3, M4(-8.693e-02, -9.612e-02, -3.179e-02, -1.840e-01, 2.673e-03, -1.627e-01, 1.450e-01, 1.381e-02, -1.577e-02, -4.878e-02, -3.985e-02, 5.845e-02, -1.944e-02, 3.944e-02, 2.018e-02, -6.841e-02), r);\n\tr = MulAdd(s5_4, M4(3.629e-02, 7.570e-02, -2.611e-01, 3.883e-01, 2.307e-02, -7.597e-02, 5.077e-02, -9.529e-02, 7.492e-02, 5.572e-02, 3.370e-02, 5.929e-02, -8.509e-03, 1.385e-01, -1.515e-01, 5.605e-02), r);\n\tr = MulAdd(s5_5, M4(-1.791e-02, -6.816e-02, -3.925e-02, 1.986e-03, 8.331e-02, -9.256e-03, 7.505e-03, -6.509e-05, 4.694e-03, 1.398e-02, 6.624e-02, -6.567e-02, -1.356e-01, 4.696e-02, 4.942e-02, 1.464e-01), r);\n\tr = MulAdd(s5_6, M4(5.126e-02, 2.097e-02, -5.698e-02, 4.155e-02, 1.072e-01, -1.438e-01, -4.168e-02, -3.538e-02, 8.435e-03, -1.050e-01, 5.704e-02, -9.189e-03, -5.236e-02, -5.514e-02, 9.633e-03, -5.798e-02), r);\n\tr = MulAdd(s5_7, M4(-1.121e-01, 3.105e-02, -9.268e-02, -2.804e-02, -3.624e-04, -2.704e-02, 2.646e-02, 5.227e-03, 1.228e-01, -7.355e-02, -1.755e-01, -1.466e-01, -6.640e-02, -5.099e-02, 1.853e-02, -8.626e-02), r);\n\tr = MulAdd(s5_8, M4(5.962e-02, 2.513e-02, 2.069e-03, 4.396e-03, -7.240e-02, 9.301e-02, -1.609e-02, -4.861e-02, 5.102e-02, -3.210e-02, 7.308e-02, -3.986e-02, -5.460e-02, -2.136e-02, -8.392e-02, -2.622e-02), r);\n\tr = MulAdd(s6_0, M4(3.397e-02, 1.469e-01, 1.022e-02, 3.374e-02, -6.321e-02, -3.230e-02, -5.053e-02, 2.549e-02, 3.016e-02, 5.150e-02, 9.509e-02, 2.499e-02, 7.613e-02, 1.003e-01, 5.365e-02, 1.140e-01), r);\n\tr = MulAdd(s6_1, M4(1.483e-02, 2.225e-02, -7.262e-02, -3.496e-02, 1.585e-02, 1.828e-01, -9.560e-02, 1.770e-01, -6.260e-02, 8.682e-03, -7.969e-03, -8.573e-02, -4.427e-03, 1.680e-02, -4.615e-02, -3.744e-02), r);\n\tr = MulAdd(s6_2, M4(-1.174e-01, 4.881e-02, -1.090e-01, 3.989e-02, 7.840e-02, 5.978e-02, -7.178e-02, 9.298e-02, 3.747e-02, -8.806e-02, 3.627e-02, -6.363e-02, 1.044e-01, -1.821e-02, 1.555e-01, 1.578e-01), r);\n\tr = MulAdd(s6_3, M4(-3.267e-02, -3.088e-02, 6.056e-02, 5.069e-02, -8.374e-03, -2.427e-03, -1.422e-01, -2.646e-02, -1.065e-01, -6.290e-03, -2.208e-02, -1.302e-02, 1.189e-01, 2.485e-01, -7.258e-02, 7.887e-02), r);\n\tr = MulAdd(s6_4, M4(8.752e-02, -8.758e-02, 3.225e-02, 4.662e-03, -5.213e-02, 3.250e-02, -7.458e-02, 1.800e-02, -8.516e-02, 1.490e-01, -4.668e-02, 2.436e-02, -2.587e-01, 3.084e-01, -3.252e-01, -1.146e-01), r);\n\tr = MulAdd(s6_5, M4(-1.196e-01, 5.511e-02, -9.120e-02, 5.974e-02, -8.223e-02, -7.963e-03, -7.138e-02, 7.335e-02, -5.691e-02, 2.994e-01, -1.789e-01, -1.437e-01, -2.558e-02, -1.812e-01, -3.163e-02, 7.934e-04), r);\n\tr = MulAdd(s6_6, M4(-1.534e-02, 1.289e-02, 5.497e-02, -2.597e-02, -1.122e-03, 5.876e-02, -7.101e-02, 3.765e-02, -8.104e-02, 2.093e-02, 4.369e-02, -2.960e-03, 1.265e-01, -2.050e-02, 1.893e-02, 6.858e-02), r);\n\tr = MulAdd(s6_7, M4(2.254e-01, 2.685e-02, 7.641e-02, 6.965e-02, -9.506e-02, -4.696e-03, -7.411e-02, 1.041e-01, 7.990e-02, 2.651e-03, 1.266e-01, 1.861e-01, 1.269e-01, -8.610e-02, -3.560e-02, 5.815e-02), r);\n\tr = MulAdd(s6_8, M4(-9.611e-02, 1.951e-03, -2.302e-02, 4.085e-02, -8.276e-02, -2.860e-02, -5.000e-02, 7.451e-02, -1.413e-01, 1.717e-02, -6.044e-02, 5.176e-02, 9.992e-02, -4.323e-02, 2.536e-02, 3.481e-02), r);\n\tr = MulAdd(s7_0, M4(1.046e-02, 1.490e-02, -8.906e-02, -2.217e-02, -9.614e-02, 3.381e-02, -2.320e-02, -5.408e-02, 5.732e-02, -2.322e-02, 6.762e-02, 2.361e-02, -1.171e-01, -2.232e-02, -7.652e-02, -5.135e-02), r);\n\tr = MulAdd(s7_1, M4(-2.535e-03, -3.717e-02, -2.368e-02, 7.242e-02, 2.283e-02, 1.875e-02, -7.956e-02, 2.926e-02, -1.207e-02, -6.466e-02, -5.971e-02, -4.580e-02, 7.839e-02, 4.433e-02, -1.667e-02, -3.645e-02), r);\n\tr = MulAdd(s7_2, M4(-4.826e-02, -1.186e-02, -1.457e-02, 7.339e-02, 7.090e-03, -1.427e-02, -5.455e-02, 1.983e-02, 6.506e-02, -6.326e-02, 3.217e-02, -3.848e-02, -5.468e-02, -2.149e-02, -8.942e-02, -1.877e-02), r);\n\tr = MulAdd(s7_3, M4(-7.380e-02, -6.317e-02, 9.416e-02, 8.520e-02, -5.836e-03, -8.181e-03, 1.923e-02, -5.096e-02, -9.014e-02, 1.214e-02, 1.116e-02, -6.535e-02, -1.251e-01, 1.161e-01, 7.658e-02, -9.742e-02), r);\n\tr = MulAdd(s7_4, M4(1.341e-02, -2.221e-02, 1.310e-01, 1.086e-01, 3.843e-02, -7.049e-03, 1.505e-01, -1.371e-01, -6.582e-02, -1.022e-01, 1.110e-01, -3.664e-02, -1.304e-01, 1.503e-02, -7.246e-02, -6.176e-02), r);\n\tr = MulAdd(s7_5, M4(-9.001e-02, -4.611e-02, 8.131e-03, 1.494e-01, 4.858e-02, -4.241e-02, 7.965e-02, 5.774e-02, 1.301e-01, 8.733e-03, 1.785e-01, 4.300e-02, 5.781e-02, -8.571e-02, -4.702e-03, -9.600e-03), r);\n\tr = MulAdd(s7_6, M4(2.557e-03, -5.550e-02, -4.600e-02, -2.987e-02, 2.553e-02, 4.577e-02, -1.413e-02, 7.015e-02, 7.875e-03, 4.624e-02, -3.063e-02, -1.460e-02, -9.625e-02, 4.864e-02, 7.717e-02, 1.122e-02), r);\n\tr = MulAdd(s7_7, M4(2.427e-02, 1.764e-03, -8.690e-04, -3.449e-02, 1.256e-01, -5.344e-03, -6.869e-02, 3.021e-02, 4.185e-02, -2.832e-02, 1.056e-01, -2.813e-02, -7.792e-02, -1.077e-02, 1.005e-01, 3.086e-02), r);\n\tr = MulAdd(s7_8, M4(-3.092e-03, -6.802e-02, 6.346e-02, -2.153e-02, -7.435e-03, 1.288e-02, -2.567e-02, 4.306e-02, -2.163e-02, 4.064e-02, 1.108e-01, -4.732e-02, -2.121e-03, -4.824e-02, 2.181e-02, 3.273e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 7.346e-03, -4.905e-03, 3.653e-03, -1.770e-02 };\n\tr = MulAdd(s0_0, M4(1.291e-03, -3.309e-02, -2.467e-01, -3.733e-02, -5.110e-02, 6.313e-02, -2.229e-02, 6.136e-03, 8.936e-02, 5.282e-03, 2.755e-01, 5.059e-01, -6.946e-02, 4.384e-02, -3.811e-02, -6.313e-02), r);\n\tr = MulAdd(s0_1, M4(1.246e-02, -1.170e-02, 3.099e-03, -4.764e-02, -5.165e-02, -2.684e-02, -1.382e-01, 4.533e-02, -4.507e-02, -2.643e-02, -5.564e-01, 1.367e-01, 1.495e-02, 5.881e-02, -6.815e-02, 1.318e-02), r);\n\tr = MulAdd(s0_2, M4(8.372e-02, -6.137e-03, 8.760e-02, 9.903e-02, 3.475e-02, 6.949e-02, -4.691e-02, -8.269e-02, 2.272e-01, -7.034e-02, -2.833e-01, 2.207e-02, -1.049e-01, 2.166e-02, 5.872e-02, -1.278e-01), r);\n\tr = MulAdd(s0_3, M4(-1.501e-02, 1.160e-01, -1.171e-01, -9.724e-02, -3.094e-02, 3.841e-02, 1.923e-02, 2.305e-01, 6.338e-02, 6.327e-02, 3.315e-01, 3.623e-01, -5.208e-02, 9.519e-02, -2.070e-01, 2.181e-02), r);\n\tr = MulAdd(s0_4, M4(-8.023e-02, 3.626e-02, -3.083e-02, 1.394e-01, -1.228e-01, -4.644e-01, -1.909e-01, -7.613e-02, -3.076e-02, -2.855e-01, 4.138e-02, -5.659e-01, -1.743e-01, 1.125e-01, -1.574e-01, 8.071e-02), r);\n\tr = MulAdd(s0_5, M4(-3.689e-03, 5.895e-02, 1.111e-01, 2.136e-01, 5.732e-03, 8.751e-02, -7.304e-02, 1.102e-01, 4.004e-02, 1.096e-01, 2.202e-01, 1.658e-01, 8.041e-02, 9.342e-02, -2.770e-01, -8.961e-02), r);\n\tr = MulAdd(s0_6, M4(3.158e-02, 2.862e-02, -7.400e-02, 7.428e-03, 7.282e-02, -2.117e-01, 1.888e-02, 4.067e-02, 6.130e-02, -7.229e-03, 1.495e-01, -1.791e-01, -6.976e-02, -1.617e-02, 1.593e-02, -6.792e-03), r);\n\tr = MulAdd(s0_7, M4(6.011e-02, 1.272e-01, 9.626e-03, 3.926e-02, -1.353e-01, -2.315e-01, 4.421e-02, 7.008e-02, 9.128e-02, -4.335e-01, -2.076e-01, 3.413e-01, -5.586e-02, 6.942e-02, 1.589e-01, 2.176e-02), r);\n\tr = MulAdd(s0_8, M4(-3.488e-02, 1.162e-01, -1.783e-01, -1.375e-01, -1.052e-02, 7.387e-03, -2.240e-02, 3.897e-02, -5.279e-02, -6.690e-02, 8.762e-03, 2.620e-01, -1.395e-02, -3.752e-02, -6.188e-03, -5.247e-03), r);\n\tr = MulAdd(s1_0, M4(2.785e-02, 3.127e-02, 3.176e-04, -5.409e-03, -2.951e-02, -2.531e-02, -4.053e-02, 7.329e-02, 2.876e-02, -3.404e-02, 1.595e-02, -1.918e-02, -1.012e-02, -4.033e-02, 3.814e-02, 8.836e-02), r);\n\tr = MulAdd(s1_1, M4(-4.760e-02, 9.454e-02, -1.390e-02, 7.537e-04, -2.286e-02, -9.383e-02, -7.304e-02, 3.868e-02, 6.908e-02, 4.284e-02, -6.230e-02, -1.251e-03, -4.050e-03, -2.775e-02, -4.178e-02, -7.595e-03), r);\n\tr = MulAdd(s1_2, M4(5.763e-02, 6.505e-03, -2.169e-02, -3.739e-02, -1.116e-01, 6.552e-02, 1.033e-01, -7.501e-02, -2.211e-02, -3.400e-02, -2.577e-01, -5.478e-02, -3.244e-03, -2.211e-01, 1.557e-01, -5.314e-03), r);\n\tr = MulAdd(s1_3, M4(4.992e-02, -7.075e-02, -3.430e-03, -1.137e-02, -1.171e-01, 3.794e-02, 5.846e-02, 2.164e-01, 2.679e-02, -1.327e-02, -1.268e-02, -5.339e-02, 1.704e-02, 3.727e-02, 6.319e-03, -2.865e-03), r);\n\tr = MulAdd(s1_4, M4(-1.487e-01, -1.586e-01, -9.926e-02, 4.898e-03, -8.301e-02, 3.593e-01, 2.840e-03, 3.870e-01, 1.008e-01, -8.199e-02, 1.092e-01, -3.774e-02, 6.955e-02, 4.101e-02, 1.254e-01, -8.251e-02), r);\n\tr = MulAdd(s1_5, M4(1.882e-02, -2.076e-02, 9.574e-02, 1.333e-03, -4.918e-03, -1.920e-01, 2.487e-02, -2.706e-01, 4.526e-02, 7.234e-02, -3.801e-02, 1.536e-01, 1.891e-02, 3.662e-02, -6.406e-03, 1.036e-01), r);\n\tr = MulAdd(s1_6, M4(1.646e-01, -7.632e-02, 6.412e-02, -3.754e-02, -5.181e-02, -2.892e-01, 1.465e-01, -7.335e-02, 9.862e-03, 2.385e-02, -1.057e-01, 3.245e-02, 3.830e-02, -1.001e-01, 1.262e-01, -7.832e-02), r);\n\tr = MulAdd(s1_7, M4(5.726e-02, -6.863e-02, -7.450e-02, -3.658e-02, -9.617e-02, -4.115e-02, 6.957e-02, 1.118e-01, 5.442e-02, 1.292e-01, 1.318e-01, 4.223e-02, -6.430e-03, -1.448e-02, 8.713e-02, 1.552e-01), r);\n\tr = MulAdd(s1_8, M4(-8.153e-02, 7.037e-02, -2.301e-01, -1.310e-02, -1.227e-01, 4.840e-02, 6.444e-02, -2.853e-02, -1.863e-02, 1.027e-02, -2.087e-02, 7.927e-02, 1.077e-01, -9.496e-02, 6.346e-02, -9.540e-03), r);\n\tr = MulAdd(s2_0, M4(-7.252e-03, 3.289e-02, -1.045e-02, -6.928e-02, -3.508e-02, 3.188e-02, 6.015e-02, -1.932e-01, -3.900e-02, -8.703e-02, -3.339e-02, 4.936e-02, 8.343e-02, -4.920e-02, -1.612e-02, 1.044e-01), r);\n\tr = MulAdd(s2_1, M4(-6.517e-02, 4.847e-03, 2.091e-02, 5.731e-03, -3.055e-02, 9.127e-02, 1.281e-01, -3.861e-01, -1.372e-01, 5.403e-02, 1.831e-02, 1.047e-01, 2.894e-02, -2.678e-02, 3.758e-03, 1.354e-01), r);\n\tr = MulAdd(s2_2, M4(9.071e-02, -8.716e-02, -1.136e-01, 3.664e-02, 5.630e-02, -9.930e-02, -1.636e-02, -1.948e-01, 9.435e-03, 1.274e-02, -6.383e-02, -1.053e-01, -1.528e-02, -7.607e-02, 4.260e-02, -2.555e-02), r);\n\tr = MulAdd(s2_3, M4(1.587e-02, -1.370e-01, 2.455e-02, -1.010e-01, 9.949e-02, -8.042e-02, -1.017e-01, -1.325e-01, -9.916e-02, 3.663e-02, -1.898e-02, 5.855e-02, -3.613e-03, 1.490e-02, -8.589e-02, 1.047e-01), r);\n\tr = MulAdd(s2_4, M4(-3.639e-02, 2.064e-01, 1.610e-01, 1.304e-01, -2.004e-01, -6.326e-02, 6.047e-03, -2.861e-02, 4.202e-02, -5.227e-02, 6.733e-01, 5.908e-02, 8.132e-02, 1.850e-01, -1.535e-01, 5.053e-02), r);\n\tr = MulAdd(s2_5, M4(-2.291e-01, 3.613e-02, 5.034e-02, -6.692e-02, 7.868e-02, 9.361e-02, -2.765e-02, -1.248e-01, -2.660e-01, 6.824e-02, -7.938e-03, 1.081e-01, -6.854e-02, 1.499e-01, 2.329e-01, -1.853e-02), r);\n\tr = MulAdd(s2_6, M4(-3.399e-02, -6.068e-02, 5.757e-02, 7.576e-03, 6.779e-03, 3.723e-02, 1.359e-01, 4.284e-02, -2.183e-02, -8.148e-02, 1.455e-01, 4.367e-02, 6.087e-02, -1.987e-02, -1.896e-03, 1.028e-01), r);\n\tr = MulAdd(s2_7, M4(-3.554e-02, -1.274e-01, 7.710e-02, 1.122e-01, -9.602e-02, 1.558e-01, 2.125e-02, -1.126e-01, -3.836e-02, 1.923e-01, 1.389e-01, -1.328e-01, 9.033e-02, 8.393e-02, -7.585e-02, 1.295e-01), r);\n\tr = MulAdd(s2_8, M4(8.556e-02, 3.137e-02, 4.851e-03, -1.591e-02, -2.889e-02, 4.844e-02, -1.649e-01, -2.942e-03, -2.426e-01, -2.373e-02, 3.365e-02, 8.732e-02, 9.597e-02, 1.103e-02, 1.947e-01, 1.305e-01), r);\n\tr = MulAdd(s3_0, M4(-3.671e-02, 6.794e-02, 6.830e-02, 5.933e-02, 1.526e-02, -2.671e-02, 3.779e-02, 1.246e-01, 1.483e-03, -3.035e-02, 1.430e-02, -3.135e-02, -2.275e-02, 4.349e-03, -5.725e-02, -2.111e-02), r);\n\tr = MulAdd(s3_1, M4(-2.024e-01, 5.901e-02, 5.708e-02, 1.054e-01, 2.930e-02, -2.702e-02, -3.093e-02, -1.245e-01, -3.232e-02, -2.342e-02, 3.634e-02, 7.495e-03, -9.151e-03, 1.306e-02, 1.040e-01, -8.540e-03), r);\n\tr = MulAdd(s3_2, M4(-3.154e-01, -1.633e-02, -1.445e-01, 9.304e-02, -3.271e-02, -7.434e-04, -7.387e-02, 3.626e-02, 2.005e-02, 1.719e-02, 6.899e-02, -4.114e-02, -7.850e-02, 6.077e-02, 2.796e-02, 2.726e-02), r);\n\tr = MulAdd(s3_3, M4(-3.014e-02, -1.029e-01, -3.616e-02, 2.436e-02, -1.202e-02, 5.488e-03, -1.213e-01, 7.005e-02, 5.867e-02, 1.751e-02, -2.769e-01, 1.044e-01, -8.570e-02, 2.694e-03, -1.806e-01, 2.735e-02), r);\n\tr = MulAdd(s3_4, M4(4.306e-03, -1.465e-01, 1.886e-02, 1.922e-01, -6.173e-02, 1.205e-01, 7.775e-02, -1.166e-01, 5.807e-02, -1.333e-01, 8.454e-02, 9.130e-02, 1.484e-03, 1.367e-01, -1.749e-01, 8.416e-02), r);\n\tr = MulAdd(s3_5, M4(-1.530e-01, 1.928e-01, -7.508e-02, 1.057e-01, 2.565e-02, -1.256e-01, -1.364e-01, 1.981e-01, -5.027e-02, 9.177e-02, -7.396e-02, 7.215e-02, -7.897e-02, -1.941e-03, -1.516e-01, -1.162e-01), r);\n\tr = MulAdd(s3_6, M4(-4.693e-02, 4.573e-02, 7.748e-02, -6.776e-02, -7.843e-03, 2.080e-02, 1.602e-01, 3.083e-02, 5.916e-02, -3.198e-03, 8.122e-02, -2.043e-02, -2.682e-02, -7.973e-03, -9.084e-02, -1.076e-01), r);\n\tr = MulAdd(s3_7, M4(-1.377e-01, -5.352e-02, 2.281e-01, 5.663e-02, 2.000e-02, 8.774e-02, 8.066e-02, -1.324e-01, 1.974e-02, 8.534e-02, -9.524e-02, -7.202e-02, 7.866e-02, -3.841e-02, -1.220e-01, 1.124e-01), r);\n\tr = MulAdd(s3_8, M4(-2.706e-02, -4.287e-02, 5.619e-02, 5.859e-02, -1.406e-02, 1.458e-02, -9.863e-02, 4.974e-02, -2.573e-02, 1.474e-01, -1.410e-01, 3.558e-02, 9.707e-02, 4.624e-03, -4.750e-02, -6.996e-02), r);\n\tr = MulAdd(s4_0, M4(-9.143e-03, -4.070e-02, 3.796e-02, -1.124e-01, 5.682e-03, -5.952e-03, -1.083e-02, 5.149e-02, -3.908e-02, 8.725e-02, 7.219e-02, 2.210e-01, 2.867e-02, -5.124e-02, 1.472e-01, -1.298e-02), r);\n\tr = MulAdd(s4_1, M4(8.129e-02, -5.610e-02, -1.131e-01, -7.804e-02, -6.142e-02, 4.405e-02, -1.935e-02, -7.470e-02, 3.230e-02, -1.014e-01, 5.993e-02, -6.655e-02, 1.223e-01, 5.139e-02, 7.857e-02, -5.123e-02), r);\n\tr = MulAdd(s4_2, M4(-1.356e-02, -3.369e-02, -6.812e-02, -3.916e-02, 1.548e-02, -5.267e-02, -7.823e-02, -5.235e-02, -1.383e-01, 1.316e-02, 2.379e-01, 1.717e-01, -1.081e-01, 2.928e-02, 9.720e-02, -1.537e-01), r);\n\tr = MulAdd(s4_3, M4(2.175e-02, -2.189e-02, 6.430e-02, -3.381e-02, 1.401e-01, -1.494e-01, -2.787e-02, -1.198e-02, -4.582e-04, 7.047e-02, -1.555e-02, 1.178e-01, 8.088e-02, 3.321e-02, 2.701e-02, 4.858e-02), r);\n\tr = MulAdd(s4_4, M4(5.293e-02, -1.604e-01, -1.621e-01, -9.211e-03, 2.066e-02, -1.176e-02, 6.895e-02, 2.245e-01, -1.504e-01, -1.978e-01, -1.014e-01, 2.641e-01, -1.521e-01, -7.876e-02, -1.239e-01, -2.509e-01), r);\n\tr = MulAdd(s4_5, M4(1.149e-01, 7.713e-02, 5.451e-03, -1.498e-03, -5.268e-02, -4.282e-01, -1.254e-01, 4.745e-02, 3.676e-01, -4.390e-02, 6.719e-02, -1.942e-01, -2.018e-01, 1.954e-02, 3.925e-02, 2.230e-02), r);\n\tr = MulAdd(s4_6, M4(1.009e-01, -8.919e-02, -1.311e-02, 1.212e-01, 5.160e-02, -5.236e-02, -1.207e-02, 3.179e-02, 5.818e-02, 3.536e-02, 5.943e-02, -1.230e-02, -9.296e-02, 1.911e-02, 3.187e-02, -6.943e-02), r);\n\tr = MulAdd(s4_7, M4(5.399e-02, 1.614e-01, -1.053e-02, -1.500e-01, 4.298e-02, -1.918e-01, 6.961e-02, -3.480e-02, 8.393e-02, 2.346e-01, -1.064e-01, -3.027e-01, -1.800e-01, -9.699e-02, -3.132e-01, -1.252e-01), r);\n\tr = MulAdd(s4_8, M4(-3.151e-02, -2.081e-02, 1.231e-01, 7.380e-02, 1.128e-01, -4.889e-01, 2.393e-02, 9.431e-02, -1.470e-01, 1.966e-01, 8.645e-02, 1.004e-01, -1.134e-01, -5.037e-02, -1.599e-02, 5.272e-02), r);\n\tr = MulAdd(s5_0, M4(3.013e-03, -1.013e-01, -4.385e-02, 4.259e-02, -6.318e-03, -1.260e-02, -4.536e-02, -6.414e-03, 1.995e-02, 7.380e-02, -9.842e-02, -4.764e-03, -7.561e-03, 3.450e-02, -7.110e-02, -6.934e-02), r);\n\tr = MulAdd(s5_1, M4(5.377e-02, -6.271e-03, -7.884e-03, -1.168e-01, -3.067e-02, 7.240e-03, 1.859e-02, -2.578e-02, 1.713e-02, -2.894e-02, 1.178e-01, 1.695e-01, -2.749e-03, 2.910e-02, 6.388e-02, 2.339e-02), r);\n\tr = MulAdd(s5_2, M4(5.237e-02, -8.001e-02, -8.870e-02, -4.603e-02, -4.446e-02, 5.708e-02, 1.001e-01, 2.091e-01, -9.143e-02, 3.154e-02, -1.637e-01, 6.044e-02, 2.701e-02, -1.251e-02, 3.416e-02, -7.120e-02), r);\n\tr = MulAdd(s5_3, M4(6.492e-02, 3.277e-02, -4.320e-02, -9.589e-02, 9.444e-02, -7.879e-02, 4.590e-02, -1.423e-01, -3.251e-02, -1.204e-01, -1.721e-02, -1.954e-02, -5.756e-02, 3.336e-02, 2.164e-02, -1.029e-02), r);\n\tr = MulAdd(s5_4, M4(8.779e-02, -1.304e-01, 1.074e-01, 2.571e-01, -4.797e-02, 9.547e-02, 1.564e-01, -6.865e-02, 4.324e-02, 2.505e-01, 6.845e-02, -1.870e-01, 5.440e-02, -1.351e-01, -2.531e-02, 1.165e-01), r);\n\tr = MulAdd(s5_5, M4(-1.558e-02, 1.486e-01, 1.116e-01, -1.995e-02, -4.122e-02, -3.351e-01, -7.674e-02, -1.872e-01, -1.542e-01, 8.164e-03, -1.037e-01, 5.730e-02, -8.803e-02, 3.506e-02, 1.483e-01, -8.270e-03), r);\n\tr = MulAdd(s5_6, M4(4.533e-02, 1.590e-02, -2.368e-01, 1.415e-01, 1.681e-02, 1.097e-02, 5.881e-02, 1.226e-01, 4.352e-03, 2.580e-02, 1.681e-01, -1.145e-01, -6.715e-02, 3.188e-04, 1.465e-01, 2.430e-02), r);\n\tr = MulAdd(s5_7, M4(-3.316e-02, -2.123e-01, -1.365e-01, 1.252e-02, 4.186e-02, 3.447e-02, 6.215e-02, -4.931e-03, -5.371e-02, -1.396e-01, -2.083e-02, 8.467e-03, -5.557e-02, 9.560e-02, 7.489e-02, 3.044e-02), r);\n\tr = MulAdd(s5_8, M4(4.188e-02, -2.360e-02, -7.651e-04, -3.802e-02, 2.662e-02, 3.421e-02, -1.124e-01, -1.103e-01, 5.888e-02, 4.408e-02, 2.304e-02, -4.045e-02, -3.763e-02, -2.086e-01, 2.852e-02, 6.561e-02), r);\n\tr = MulAdd(s6_0, M4(2.000e-03, -3.707e-02, 6.655e-02, -9.570e-02, -1.103e-01, 3.724e-02, 3.844e-02, -4.925e-02, -5.481e-02, -4.484e-02, -5.163e-02, -1.044e-02, 1.085e-03, -5.087e-02, 5.953e-02, -1.942e-02), r);\n\tr = MulAdd(s6_1, M4(7.659e-02, -6.084e-02, 3.926e-02, 6.993e-02, -5.095e-02, 5.799e-02, -2.354e-01, -1.374e-02, -3.596e-02, 5.061e-02, -6.000e-02, -2.160e-02, 1.592e-02, -7.282e-02, -1.824e-02, -3.632e-02), r);\n\tr = MulAdd(s6_2, M4(-1.971e-02, 9.811e-02, -5.877e-02, 3.986e-02, -2.436e-02, 2.289e-04, -4.199e-02, 6.084e-02, 4.541e-02, 4.178e-02, 1.270e-01, -6.550e-02, 7.945e-02, 4.713e-02, 4.875e-02, -8.960e-02), r);\n\tr = MulAdd(s6_3, M4(7.449e-02, -1.146e-01, -3.359e-03, -1.997e-02, -2.627e-02, 5.933e-02, 1.181e-02, 3.691e-02, 7.721e-02, 1.114e-01, 1.744e-01, -2.290e-01, 1.149e-02, 1.007e-02, 2.065e-01, 1.243e-01), r);\n\tr = MulAdd(s6_4, M4(1.933e-01, -1.209e-01, 3.074e-01, -1.103e-01, -1.163e-01, 1.550e-01, -3.422e-01, -4.443e-02, 2.270e-01, -8.393e-03, 6.525e-02, -2.852e-01, -6.272e-02, 5.415e-02, 4.149e-02, 1.192e-02), r);\n\tr = MulAdd(s6_5, M4(8.516e-02, -1.365e-01, -1.232e-01, 1.896e-03, 5.019e-02, -1.542e-01, -2.283e-01, -1.782e-01, 1.130e-01, -4.613e-02, -1.606e-01, 2.634e-02, -2.544e-01, -6.516e-02, 1.625e-01, -1.134e-01), r);\n\tr = MulAdd(s6_6, M4(-5.353e-02, -3.659e-03, -2.821e-02, 5.288e-02, 5.496e-02, 2.354e-02, -7.293e-02, 5.376e-02, -1.864e-02, -2.116e-02, 1.268e-01, 2.539e-02, 4.690e-02, -2.525e-02, -8.503e-02, -3.469e-02), r);\n\tr = MulAdd(s6_7, M4(1.192e-01, 4.570e-02, 2.053e-01, 6.541e-02, -6.350e-02, -1.007e-01, -2.017e-01, -7.632e-02, 1.655e-01, 1.507e-01, -9.662e-03, 7.911e-02, 8.390e-02, -1.917e-01, 4.232e-02, 1.134e-01), r);\n\tr = MulAdd(s6_8, M4(1.551e-02, 1.855e-01, -9.961e-02, -1.690e-01, 2.262e-02, -3.772e-02, -6.411e-02, -5.053e-02, 9.622e-02, -4.271e-02, 1.404e-01, 7.263e-02, 1.561e-01, 5.037e-03, -2.265e-02, -7.068e-02), r);\n\tr = MulAdd(s7_0, M4(3.013e-02, 2.365e-02, 2.057e-01, -1.254e-02, 1.532e-03, 3.604e-02, -2.406e-03, -1.678e-02, 1.235e-02, -7.218e-03, 7.051e-02, -3.434e-02, -9.820e-03, -1.599e-05, -3.336e-02, -1.208e-01), r);\n\tr = MulAdd(s7_1, M4(1.232e-03, 2.311e-02, 1.745e-02, -1.300e-01, 4.110e-02, 4.932e-02, 2.509e-02, 9.283e-02, -6.518e-02, -4.350e-02, 7.861e-02, 2.999e-02, -1.083e-02, 4.835e-02, -8.659e-02, 1.901e-02), r);\n\tr = MulAdd(s7_2, M4(-1.039e-01, 5.171e-02, 9.599e-03, -5.878e-02, -5.113e-02, 4.864e-02, 9.085e-02, 4.473e-02, 8.764e-02, -6.118e-02, 1.407e-01, 1.097e-01, -4.434e-02, -4.787e-03, -1.495e-01, -2.378e-02), r);\n\tr = MulAdd(s7_3, M4(-7.828e-02, 1.726e-02, -1.521e-01, 8.278e-02, -3.601e-02, 2.918e-03, 1.109e-01, -2.525e-02, -6.621e-02, 2.801e-02, -7.083e-02, -9.028e-02, 7.347e-03, -1.125e-02, -4.711e-02, 8.305e-02), r);\n\tr = MulAdd(s7_4, M4(-2.757e-02, -2.611e-01, -2.337e-01, -1.758e-01, 2.819e-02, 1.947e-01, 1.002e-02, -1.656e-01, -1.142e-01, -1.469e-01, -1.394e-01, -1.329e-01, 2.162e-02, 2.422e-01, 1.128e-01, -2.176e-01), r);\n\tr = MulAdd(s7_5, M4(4.132e-03, -8.471e-02, -2.148e-01, -1.064e-01, -5.095e-02, 2.288e-02, -1.660e-01, -1.214e-01, 1.449e-01, -2.335e-01, -4.872e-02, -6.141e-03, -1.364e-01, 1.272e-01, -4.421e-02, 1.197e-02), r);\n\tr = MulAdd(s7_6, M4(-2.372e-02, 3.105e-02, 1.059e-01, 1.354e-02, 3.583e-02, -3.911e-02, -1.577e-01, 8.424e-02, 7.771e-02, 1.798e-02, -5.473e-02, 1.030e-01, -4.950e-02, 6.024e-02, -1.077e-01, 3.528e-02), r);\n\tr = MulAdd(s7_7, M4(8.236e-02, -4.677e-02, -9.013e-02, 9.874e-03, 3.090e-02, -1.172e-01, -9.468e-03, 2.097e-02, 1.017e-01, -8.313e-02, -7.684e-02, 1.709e-01, -8.242e-02, -5.089e-03, 1.613e-02, -4.114e-02), r);\n\tr = MulAdd(s7_8, M4(-1.382e-02, 6.332e-02, -8.293e-02, -8.057e-02, 5.590e-02, -1.382e-03, 1.901e-02, -2.149e-02, 6.884e-02, 4.025e-02, 9.417e-02, 4.098e-02, -6.400e-02, 4.939e-02, 2.244e-02, -2.732e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.144e-02, 3.230e-03, 4.037e-03, -8.587e-03 };\n\tr = MulAdd(s0_0, M4(-2.541e-02, 1.657e-01, 5.189e-02, 4.130e-02, -1.890e-02, -1.867e-01, 6.755e-03, 3.576e-02, -2.349e-01, -3.670e-01, 1.333e-01, 1.520e-01, 5.807e-02, -9.119e-02, -5.037e-02, 1.544e-02), r);\n\tr = MulAdd(s0_1, M4(-2.454e-02, 5.878e-02, -1.489e-03, -2.959e-02, 7.611e-02, -6.616e-02, -7.461e-02, -7.549e-02, 1.804e-01, 1.865e-02, -2.235e-01, 1.794e-01, 4.243e-02, -6.137e-02, -1.085e-01, 7.175e-02), r);\n\tr = MulAdd(s0_2, M4(2.578e-02, -2.126e-02, -2.135e-02, 3.540e-02, -1.959e-02, 9.802e-02, 3.496e-03, 5.008e-03, -1.620e-01, -9.267e-02, 4.342e-02, 1.210e-02, 1.633e-01, -5.267e-02, -3.548e-02, 5.545e-02), r);\n\tr = MulAdd(s0_3, M4(1.066e-01, 1.287e-02, 1.572e-01, 1.008e-01, -2.488e-01, -3.298e-01, -3.237e-02, 4.881e-02, 1.514e-01, -6.376e-01, 1.029e-01, 5.323e-03, 1.547e-01, 3.549e-02, -1.129e-01, 8.727e-02), r);\n\tr = MulAdd(s0_4, M4(6.195e-02, 5.402e-02, -7.368e-02, 3.011e-03, -5.653e-02, -6.636e-03, 1.059e-02, -1.094e-01, 3.677e-01, -2.147e-01, 7.097e-03, 6.449e-02, -1.228e-01, 1.789e-02, -8.807e-02, 1.331e-01), r);\n\tr = MulAdd(s0_5, M4(1.190e-01, 1.595e-02, 5.008e-02, 1.302e-02, -8.819e-02, 5.241e-02, -1.451e-02, 2.478e-02, -2.438e-02, 2.972e-01, -1.010e-01, -1.309e-02, -4.738e-02, 3.030e-02, -4.334e-02, 1.129e-01), r);\n\tr = MulAdd(s0_6, M4(-1.379e-01, -1.129e-01, -7.080e-02, 1.190e-01, -2.756e-03, -3.091e-02, -1.385e-01, 4.875e-02, 2.495e-01, 7.972e-02, -1.587e-01, -2.658e-02, 2.143e-01, 6.147e-02, -5.138e-02, 8.032e-02), r);\n\tr = MulAdd(s0_7, M4(-6.998e-02, -2.174e-04, 9.370e-02, 5.419e-02, 1.114e-01, -4.153e-02, -6.582e-02, 1.344e-03, -2.531e-01, -3.355e-01, -3.122e-03, 4.636e-02, 4.160e-02, 6.323e-03, -9.927e-02, 7.349e-02), r);\n\tr = MulAdd(s0_8, M4(1.713e-02, 3.632e-02, 3.580e-02, 6.532e-02, -7.740e-02, 6.009e-02, -7.090e-02, -6.667e-02, 2.703e-01, 3.117e-01, -3.105e-01, -1.004e-01, 1.942e-01, 7.943e-02, -5.937e-02, 1.907e-04), r);\n\tr = MulAdd(s1_0, M4(-6.210e-02, -1.937e-01, 9.403e-03, 8.441e-03, 4.634e-02, 1.566e-01, 2.479e-03, 1.181e-01, -2.323e-02, -6.377e-02, 3.282e-02, -2.346e-02, -1.981e-02, -1.853e-02, -2.167e-02, -1.601e-02), r);\n\tr = MulAdd(s1_1, M4(-1.900e-02, 4.846e-02, -1.145e-01, -3.643e-02, 9.235e-02, -7.407e-02, 3.720e-02, -3.503e-02, -8.768e-02, 4.017e-02, -1.982e-03, 3.914e-02, -1.236e-01, 1.869e-01, 8.603e-02, -2.607e-02), r);\n\tr = MulAdd(s1_2, M4(-1.153e-02, -4.062e-02, -2.601e-02, 2.952e-02, 6.171e-02, 2.022e-02, 3.942e-03, -4.038e-02, 1.993e-02, -6.770e-02, -9.243e-03, -5.448e-03, 2.202e-02, -2.069e-02, -3.895e-02, 3.428e-02), r);\n\tr = MulAdd(s1_3, M4(-3.642e-03, -3.672e-01, 8.635e-02, 4.287e-03, 1.548e-01, -1.348e-01, 4.053e-01, 9.992e-02, 1.639e-02, -1.043e-01, -1.408e-01, -8.160e-02, 1.151e-02, -6.836e-02, -1.649e-01, 9.633e-02), r);\n\tr = MulAdd(s1_4, M4(8.913e-02, -1.053e-01, -2.394e-01, -5.300e-02, -2.605e-01, 1.961e-01, -2.876e-01, 9.147e-03, 5.131e-02, 4.177e-03, -1.395e-02, 1.537e-02, 1.370e-01, 2.980e-01, 5.745e-02, -4.793e-02), r);\n\tr = MulAdd(s1_5, M4(3.644e-02, 3.103e-02, -6.005e-02, -6.355e-02, 1.551e-02, -1.944e-01, 7.983e-02, 4.173e-02, 1.034e-01, 1.462e-01, -7.341e-02, -7.670e-03, 7.584e-02, 8.634e-02, 8.598e-02, 4.030e-02), r);\n\tr = MulAdd(s1_6, M4(-1.251e-01, -1.384e-01, -1.873e-01, 8.910e-02, 1.206e-01, 9.330e-02, 1.335e-01, 7.109e-02, -3.307e-02, -6.496e-02, -9.494e-02, -5.701e-03, 5.430e-02, 1.328e-02, 5.097e-02, 4.453e-02), r);\n\tr = MulAdd(s1_7, M4(-6.189e-02, -5.578e-02, 1.039e-01, 2.118e-01, 2.626e-02, 9.107e-02, -8.293e-02, -1.334e-01, -5.788e-02, 2.230e-02, 8.005e-02, -9.271e-04, -1.776e-01, 1.208e-01, -1.381e-01, -2.869e-01), r);\n\tr = MulAdd(s1_8, M4(1.049e-01, 9.033e-03, -9.022e-02, 8.736e-02, -5.168e-02, 1.815e-03, 2.325e-01, 3.552e-03, -5.869e-03, 1.311e-02, 5.271e-04, 8.746e-03, -1.477e-01, -1.359e-01, 1.665e-01, -1.557e-01), r);\n\tr = MulAdd(s2_0, M4(6.086e-03, 2.242e-02, 1.090e-01, 7.514e-04, 1.319e-01, -1.659e-01, 9.627e-02, -1.201e-02, -3.408e-02, 9.862e-02, 5.550e-02, -3.620e-02, -4.180e-02, 8.080e-02, 4.050e-02, 1.541e-01), r);\n\tr = MulAdd(s2_1, M4(-1.202e-01, -2.337e-02, 1.652e-02, 1.014e-01, 6.757e-02, -2.003e-01, -2.529e-01, 1.267e-01, -2.596e-02, 2.547e-02, -1.586e-01, -2.041e-02, -2.650e-02, 5.746e-02, -4.375e-02, 1.520e-01), r);\n\tr = MulAdd(s2_2, M4(-1.836e-02, 3.823e-02, -2.390e-02, -1.450e-02, 2.732e-02, -1.365e-01, 2.013e-02, -3.332e-02, 4.141e-02, -4.937e-02, 5.944e-02, 3.866e-02, 8.445e-02, -8.183e-02, 4.818e-02, 1.139e-01), r);\n\tr = MulAdd(s2_3, M4(1.174e-01, 6.777e-02, 1.279e-02, 3.960e-02, -2.694e-02, 1.882e-01, -1.899e-02, 3.758e-02, 7.822e-02, 4.007e-01, 1.465e-01, 1.781e-01, 3.478e-02, 5.389e-02, -6.454e-04, 1.149e-01), r);\n\tr = MulAdd(s2_4, M4(-3.450e-03, -1.621e-01, -3.191e-02, 1.023e-01, -2.158e-01, -1.803e-03, 5.940e-02, 2.468e-01, 4.695e-01, -2.193e-01, 5.147e-02, -1.365e-01, -3.636e-02, -3.669e-02, -2.557e-01, 8.754e-02), r);\n\tr = MulAdd(s2_5, M4(4.038e-02, 1.148e-01, -5.276e-02, 4.902e-02, -3.413e-02, 4.901e-02, -5.960e-02, 3.716e-02, 3.228e-02, 1.062e-02, 1.174e-01, -3.452e-02, 1.159e-01, -1.491e-02, -4.849e-02, 5.492e-02), r);\n\tr = MulAdd(s2_6, M4(3.433e-02, -1.013e-03, -5.464e-02, -6.439e-02, -1.780e-02, -4.620e-03, 5.071e-02, 1.898e-02, -1.033e-02, 3.266e-02, 2.992e-02, -1.400e-01, 1.042e-01, 2.634e-02, -2.643e-02, 6.895e-02), r);\n\tr = MulAdd(s2_7, M4(6.651e-04, 1.780e-03, 3.300e-02, -5.542e-02, 3.230e-02, -4.599e-02, 9.108e-02, 4.865e-02, 1.771e-01, 1.276e-02, 2.705e-01, 1.487e-01, 6.958e-02, 3.214e-02, -1.242e-01, -1.647e-02), r);\n\tr = MulAdd(s2_8, M4(-2.757e-02, 4.429e-03, -1.220e-02, -1.905e-02, 2.517e-02, 3.895e-02, -5.111e-02, 1.087e-01, 3.492e-03, 4.499e-02, 5.900e-02, -1.582e-02, 1.012e-01, -3.097e-02, -1.988e-01, 3.916e-02), r);\n\tr = MulAdd(s3_0, M4(-2.900e-04, -5.983e-02, 3.252e-03, 2.125e-02, -4.191e-02, 6.632e-02, -1.033e-01, -5.799e-02, -2.119e-02, -2.728e-02, -5.169e-02, 2.993e-02, -2.283e-02, 2.173e-02, -3.010e-02, 2.619e-02), r);\n\tr = MulAdd(s3_1, M4(2.626e-02, 2.380e-02, 7.962e-02, 3.137e-02, 5.138e-02, -4.827e-02, 8.346e-02, -1.010e-01, 4.306e-02, -1.095e-01, -2.155e-02, -8.967e-02, 2.533e-02, -1.816e-02, 2.855e-02, 2.077e-02), r);\n\tr = MulAdd(s3_2, M4(2.225e-02, 5.791e-02, 6.161e-02, 5.779e-03, -5.488e-02, -3.480e-02, -6.262e-03, 5.816e-02, 9.009e-03, -4.501e-04, 6.241e-02, 2.831e-03, 2.386e-02, 2.153e-02, 4.770e-02, -6.131e-03), r);\n\tr = MulAdd(s3_3, M4(8.755e-02, -7.699e-02, -5.070e-02, 1.162e-01, -1.126e-01, 1.112e-01, 3.857e-02, 1.604e-02, -4.325e-02, 1.515e-01, -3.948e-02, 1.030e-01, -5.669e-02, -6.762e-02, -2.610e-02, -4.522e-02), r);\n\tr = MulAdd(s3_4, M4(-1.948e-01, -6.880e-02, -6.947e-02, 1.657e-01, 7.452e-02, -6.016e-02, 1.256e-01, 1.398e-01, 5.748e-02, -1.528e-01, 3.831e-02, -8.106e-03, -1.903e-01, 1.807e-01, -1.225e-01, 1.406e-01), r);\n\tr = MulAdd(s3_5, M4(-2.452e-02, 2.292e-01, 1.474e-01, 7.133e-02, -1.047e-01, 6.568e-02, -1.582e-02, -1.310e-01, -1.071e-01, 5.300e-02, -2.739e-03, -2.249e-02, 9.331e-02, -1.606e-01, 3.771e-02, -4.263e-02), r);\n\tr = MulAdd(s3_6, M4(1.518e-01, 1.917e-02, 1.447e-01, 9.757e-02, 1.160e-02, 4.976e-02, 8.316e-02, -4.158e-02, 1.367e-03, -2.320e-02, -8.661e-02, 2.788e-02, 8.342e-02, -1.139e-02, -2.212e-02, 6.059e-02), r);\n\tr = MulAdd(s3_7, M4(1.919e-01, 7.601e-02, 1.733e-01, 1.862e-01, 3.007e-02, -1.910e-02, 2.440e-03, -1.434e-01, 4.645e-02, -9.358e-02, 9.214e-03, 1.602e-01, -1.101e-01, 1.797e-02, -2.656e-01, -1.126e-01), r);\n\tr = MulAdd(s3_8, M4(5.247e-02, -4.065e-02, 2.272e-02, -2.877e-02, -9.167e-02, -3.887e-02, 7.758e-03, -8.309e-02, 1.724e-02, 2.718e-02, -2.350e-02, 1.850e-02, -2.346e-02, -8.699e-03, -2.707e-02, -5.296e-04), r);\n\tr = MulAdd(s4_0, M4(3.924e-03, 2.069e-02, -5.953e-02, -1.139e-02, -6.720e-02, -4.303e-02, 4.648e-02, 2.124e-02, -4.898e-02, -7.581e-02, -1.027e-01, 7.361e-02, 3.286e-02, -4.268e-02, 4.958e-02, 9.935e-03), r);\n\tr = MulAdd(s4_1, M4(-5.555e-02, 2.395e-02, -9.125e-03, -1.445e-01, -9.143e-02, -3.216e-02, 1.013e-01, 5.860e-02, 1.781e-01, -1.297e-01, 1.468e-01, -9.593e-02, 1.366e-02, -2.647e-01, -1.196e-02, -9.786e-02), r);\n\tr = MulAdd(s4_2, M4(2.921e-02, -6.674e-02, 7.710e-02, 1.678e-02, -6.434e-02, 7.683e-02, -4.142e-02, -4.854e-02, 4.405e-02, 1.401e-01, -2.295e-01, -2.968e-02, -1.859e-01, -2.424e-02, 1.021e-01, -7.019e-03), r);\n\tr = MulAdd(s4_3, M4(1.175e-02, 2.339e-01, 1.141e-01, -6.781e-02, -6.412e-02, -4.740e-02, 8.388e-03, -9.825e-03, -6.027e-02, 1.537e-01, 4.414e-01, -3.699e-02, -3.760e-01, -3.269e-01, 5.088e-03, 3.482e-02), r);\n\tr = MulAdd(s4_4, M4(-4.872e-02, -1.092e-01, -1.548e-01, -1.096e-01, -1.383e-01, 6.343e-02, -1.440e-01, 4.788e-02, -3.298e-01, -1.797e-03, 2.764e-01, -1.386e-01, 4.241e-02, 1.295e-01, -8.381e-02, 8.987e-02), r);\n\tr = MulAdd(s4_5, M4(-8.056e-02, 4.051e-02, -3.443e-03, 9.557e-03, -6.056e-02, -6.300e-02, 5.039e-02, -3.456e-02, -1.464e-01, -1.846e-01, 4.648e-02, -1.561e-01, -2.740e-02, 2.142e-01, -1.022e-01, -2.809e-02), r);\n\tr = MulAdd(s4_6, M4(-5.604e-02, -1.731e-03, -2.083e-02, 9.337e-03, 1.118e-02, 8.124e-03, -1.683e-01, 2.042e-02, 2.922e-03, 6.654e-03, 2.038e-02, 1.058e-01, 4.162e-02, -9.044e-02, 1.658e-01, -1.673e-02), r);\n\tr = MulAdd(s4_7, M4(2.176e-01, 6.536e-02, 2.805e-02, 7.785e-02, -2.137e-01, -1.928e-01, -1.061e-01, 5.347e-02, 3.740e-01, -4.384e-02, 1.540e-01, -1.887e-02, 1.949e-01, 3.791e-02, 1.475e-01, 1.193e-01), r);\n\tr = MulAdd(s4_8, M4(-7.921e-02, 3.755e-02, 8.097e-03, -3.115e-02, -1.875e-01, -7.991e-02, -5.474e-02, -1.879e-02, 9.336e-02, 1.441e-01, -2.849e-02, 3.442e-02, 8.304e-02, 1.779e-02, -1.017e-01, -8.835e-02), r);\n\tr = MulAdd(s5_0, M4(-6.224e-02, -1.286e-01, -1.065e-01, -5.836e-02, -4.088e-02, 9.037e-02, 7.194e-02, 8.010e-03, 3.740e-02, 7.190e-02, 1.243e-01, 9.762e-02, 4.848e-02, 4.667e-03, 1.339e-01, 8.745e-02), r);\n\tr = MulAdd(s5_1, M4(1.937e-02, 1.509e-01, -8.489e-02, -7.999e-02, 6.341e-03, -1.031e-01, -1.684e-03, 1.612e-01, -1.448e-02, -2.470e-02, -8.730e-02, -1.667e-02, -6.683e-03, 1.188e-03, 8.151e-03, 3.647e-02), r);\n\tr = MulAdd(s5_2, M4(4.567e-02, -5.051e-02, 2.011e-02, 4.950e-02, 6.689e-03, -8.069e-02, 7.060e-02, -1.987e-01, 4.187e-02, -5.661e-02, 5.078e-02, -2.869e-02, 1.583e-02, -6.038e-02, 8.259e-02, 1.968e-02), r);\n\tr = MulAdd(s5_3, M4(-5.837e-02, -3.722e-02, 9.666e-03, -4.201e-02, -1.323e-01, 1.443e-01, -5.002e-03, 4.363e-02, -1.992e-02, -1.277e-02, -3.254e-02, -1.540e-02, 3.748e-02, 2.348e-01, -4.119e-02, 7.178e-02), r);\n\tr = MulAdd(s5_4, M4(-8.116e-02, 3.259e-04, -2.917e-03, -2.878e-02, 2.343e-01, 5.959e-01, -1.587e-02, 1.861e-01, 3.467e-02, -1.485e-01, 8.425e-02, 1.610e-02, -8.615e-02, -6.870e-02, -1.616e-01, 1.586e-02), r);\n\tr = MulAdd(s5_5, M4(-3.545e-02, 7.843e-02, 6.399e-03, -1.176e-02, 2.016e-01, -2.844e-01, 1.951e-01, -1.060e-01, -4.997e-02, -7.652e-02, 1.541e-02, 6.366e-02, -1.896e-01, -2.584e-02, 2.438e-02, 1.348e-01), r);\n\tr = MulAdd(s5_6, M4(-1.974e-01, -8.405e-03, -2.123e-01, -8.176e-02, 9.694e-02, 5.998e-02, 1.547e-02, -2.905e-03, 8.708e-02, 8.034e-03, 3.775e-02, 1.818e-01, 5.126e-02, 3.987e-02, 1.284e-01, -1.518e-03), r);\n\tr = MulAdd(s5_7, M4(5.220e-02, 1.340e-02, -1.743e-01, 4.127e-02, -1.978e-02, 7.040e-02, -2.645e-02, -1.323e-02, 9.182e-02, -4.373e-02, -1.061e-01, -1.235e-02, -2.161e-02, -2.467e-02, -2.966e-02, 8.084e-02), r);\n\tr = MulAdd(s5_8, M4(-6.631e-02, -5.012e-02, -4.244e-02, -3.246e-02, 4.081e-02, -8.937e-02, 2.919e-01, 1.024e-01, -1.422e-02, 1.074e-01, -9.297e-02, 5.605e-02, 6.896e-02, -4.789e-02, -1.934e-02, 1.737e-02), r);\n\tr = MulAdd(s6_0, M4(-9.073e-03, -1.754e-02, 4.972e-02, -6.835e-02, -3.904e-02, -1.677e-01, 8.521e-02, 3.834e-02, 2.069e-02, 4.147e-02, 1.049e-01, 3.096e-02, -2.174e-02, -8.744e-02, -1.113e-02, -7.001e-02), r);\n\tr = MulAdd(s6_1, M4(3.434e-02, -2.274e-02, 1.253e-01, -1.063e-01, -3.540e-02, -9.340e-02, 6.120e-02, 1.239e-01, 5.530e-02, 7.165e-02, -5.067e-03, 1.067e-01, -9.119e-02, -8.561e-02, -1.101e-01, 1.067e-01), r);\n\tr = MulAdd(s6_2, M4(-4.281e-02, -2.995e-02, -1.066e-01, 6.098e-02, 8.980e-03, -7.168e-02, -4.666e-02, 2.937e-02, 3.310e-03, 3.018e-02, 2.480e-02, 7.947e-02, -1.268e-01, 7.243e-02, -1.587e-01, 2.873e-02), r);\n\tr = MulAdd(s6_3, M4(2.600e-02, 5.897e-02, -1.263e-03, -6.894e-02, -6.384e-02, -1.612e-01, -5.427e-02, 6.186e-02, 1.760e-01, 2.669e-01, 3.821e-02, 3.010e-01, -1.674e-01, -7.476e-02, 8.858e-02, 1.153e-01), r);\n\tr = MulAdd(s6_4, M4(1.203e-01, 1.557e-01, 1.469e-01, -9.516e-02, 1.520e-03, -1.370e-02, -1.449e-01, 2.500e-01, -4.001e-02, 1.999e-01, 2.881e-01, -1.819e-02, -3.389e-02, 6.567e-02, 8.503e-02, 1.733e-02), r);\n\tr = MulAdd(s6_5, M4(3.438e-02, -1.250e-01, -6.958e-02, -4.063e-02, -5.483e-02, -6.863e-02, -1.213e-01, -2.927e-02, 1.284e-01, -6.142e-03, 1.957e-02, -1.307e-02, 1.251e-01, 1.507e-01, -2.603e-01, -1.227e-02), r);\n\tr = MulAdd(s6_6, M4(2.157e-02, -1.465e-02, 1.523e-01, -6.046e-02, -8.609e-02, -4.715e-02, 1.801e-02, 9.497e-02, -1.116e-01, 2.122e-01, 1.647e-01, -4.762e-02, -1.156e-02, 1.387e-01, 1.673e-02, 4.068e-02), r);\n\tr = MulAdd(s6_7, M4(-1.946e-01, 9.404e-02, -2.110e-02, 3.399e-02, 6.190e-02, 1.982e-02, -1.791e-01, -2.514e-02, -1.027e-01, 1.270e-01, 6.977e-02, -1.515e-01, -2.467e-01, 1.036e-02, -1.526e-01, 5.823e-02), r);\n\tr = MulAdd(s6_8, M4(-1.138e-02, -1.343e-03, 1.883e-02, 4.750e-03, -1.078e-01, -6.960e-02, 2.031e-02, -9.450e-03, -1.573e-01, 5.856e-02, 8.049e-02, 1.523e-02, -7.131e-03, 2.186e-02, -1.193e-01, -4.367e-03), r);\n\tr = MulAdd(s7_0, M4(6.713e-02, -1.520e-01, -6.436e-02, -6.020e-02, 2.039e-02, -1.286e-01, -5.889e-02, 5.892e-03, 5.342e-02, 2.392e-02, 1.846e-02, -4.619e-02, 8.635e-02, -3.852e-02, 1.285e-02, -7.964e-02), r);\n\tr = MulAdd(s7_1, M4(6.131e-02, -4.675e-03, -2.128e-03, -2.768e-02, -1.824e-02, 1.480e-02, 7.807e-03, 2.532e-02, 3.629e-02, 3.362e-02, 8.573e-02, 5.274e-02, 6.908e-02, 4.769e-02, 1.208e-01, -1.841e-01), r);\n\tr = MulAdd(s7_2, M4(1.717e-03, 5.158e-02, -3.611e-02, 2.600e-02, -1.293e-02, 1.304e-03, -3.547e-02, 2.271e-02, 3.415e-02, 7.292e-02, -1.885e-02, 8.324e-02, 2.077e-02, -6.252e-02, 4.631e-03, -1.112e-03), r);\n\tr = MulAdd(s7_3, M4(-5.372e-02, 2.620e-02, 5.227e-02, -3.020e-03, -8.740e-02, -1.964e-02, -2.730e-02, -2.839e-02, 5.457e-02, 3.909e-02, 2.537e-02, 6.894e-02, 5.165e-02, 4.257e-02, -1.101e-01, 7.219e-02), r);\n\tr = MulAdd(s7_4, M4(3.319e-02, -2.076e-02, 6.214e-02, -2.477e-02, -1.349e-01, -4.793e-02, 5.303e-02, 2.127e-01, -8.348e-02, 2.164e-01, 1.433e-01, -2.909e-02, 1.139e-01, 1.535e-01, 1.743e-01, 1.616e-01), r);\n\tr = MulAdd(s7_5, M4(8.549e-02, 5.226e-02, -1.042e-01, 1.041e-02, 4.782e-03, 7.801e-02, -6.359e-02, -3.618e-02, -1.527e-02, 8.395e-02, -4.284e-02, -7.498e-03, 1.422e-01, 1.298e-01, -1.283e-01, 6.424e-02), r);\n\tr = MulAdd(s7_6, M4(3.569e-02, -6.977e-02, -8.615e-02, 2.842e-02, 7.590e-03, -1.724e-02, -7.115e-04, -7.015e-03, -1.663e-01, -8.630e-03, -2.303e-03, -4.852e-02, -4.141e-02, 1.975e-02, 5.583e-03, -1.889e-03), r);\n\tr = MulAdd(s7_7, M4(-8.110e-02, 2.969e-02, 7.912e-02, 1.544e-01, -3.533e-02, 8.551e-02, -4.045e-02, -3.620e-02, -2.196e-01, -4.689e-03, -7.544e-02, 9.318e-02, 1.025e-02, 5.217e-02, 1.583e-01, -1.998e-02), r);\n\tr = MulAdd(s7_8, M4(5.941e-02, 5.430e-02, -4.319e-02, 1.788e-01, -1.098e-01, -3.786e-02, 4.683e-02, 1.391e-02, 7.806e-02, 6.420e-02, 6.208e-03, 1.265e-01, 3.927e-02, 6.978e-03, 7.370e-02, 3.876e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 4.936e-03, 2.207e-02, -4.522e-03, -1.855e-03 };\n\tr = MulAdd(s0_0, M4(4.333e-02, 7.243e-02, -1.420e-02, -1.528e-02, 9.266e-04, -8.016e-02, 3.355e-03, 5.928e-02, 7.778e-03, 1.089e-01, -3.087e-01, -1.395e-02, -4.188e-02, 6.859e-02, -4.320e-03, 5.852e-02), r);\n\tr = MulAdd(s0_1, M4(1.893e-03, -4.743e-02, -3.286e-03, 4.100e-02, 1.026e-01, -2.680e-02, 1.772e-02, 3.075e-02, 1.845e-01, 8.216e-02, -1.240e-01, -3.225e-02, -5.808e-02, 5.763e-02, 1.253e-02, 6.966e-02), r);\n\tr = MulAdd(s0_2, M4(3.112e-02, 6.029e-03, 4.024e-02, 9.813e-02, -1.934e-02, -1.030e-01, -5.682e-03, -1.142e-01, 1.591e-01, -4.722e-02, -4.683e-02, -4.834e-02, 4.591e-02, 1.959e-01, 2.813e-02, 1.684e-02), r);\n\tr = MulAdd(s0_3, M4(3.717e-03, 4.428e-02, -2.979e-02, -1.319e-01, -7.907e-02, -2.063e-01, 1.318e-01, 3.302e-01, 3.874e-01, -1.794e-01, -3.385e-01, 8.205e-02, -9.249e-02, 8.499e-02, 5.865e-02, 7.559e-02), r);\n\tr = MulAdd(s0_4, M4(7.178e-02, -1.156e-01, 1.608e-01, -9.580e-03, 1.050e-01, -2.917e-01, -2.364e-02, -2.877e-01, -2.610e-02, 1.579e-01, -2.220e-01, 4.093e-01, -1.190e-03, -1.960e-02, 1.909e-01, 4.487e-02), r);\n\tr = MulAdd(s0_5, M4(-3.653e-03, 1.197e-04, -5.824e-02, 4.286e-02, -4.729e-02, -5.418e-02, 3.518e-03, -2.898e-02, 1.607e-01, -2.224e-01, -5.801e-02, -1.593e-01, 4.829e-02, 4.995e-02, -3.266e-02, 2.814e-02), r);\n\tr = MulAdd(s0_6, M4(6.767e-02, -2.756e-03, 6.101e-02, -5.580e-02, 3.613e-02, 1.924e-02, 3.047e-03, -1.283e-01, 3.231e-01, 1.304e-01, -9.342e-02, -4.034e-02, 4.553e-02, -7.184e-03, 1.890e-02, -1.038e-02), r);\n\tr = MulAdd(s0_7, M4(1.376e-01, -8.569e-02, -3.427e-02, 5.919e-02, 1.711e-01, -1.167e-01, 4.846e-02, 8.636e-03, -5.423e-03, -2.490e-02, -2.068e-01, 2.383e-01, -2.875e-02, -7.850e-02, -9.597e-02, 7.667e-02), r);\n\tr = MulAdd(s0_8, M4(1.119e-02, -3.089e-02, -1.391e-01, -5.112e-02, 7.785e-02, -1.214e-01, 6.563e-02, -2.149e-02, 2.425e-01, -3.175e-02, 8.154e-02, 5.956e-02, -1.279e-03, 4.092e-02, -4.260e-03, -1.078e-02), r);\n\tr = MulAdd(s1_0, M4(-7.396e-02, 5.582e-02, -1.548e-02, 2.137e-02, 4.709e-02, -5.059e-02, -2.153e-02, 2.702e-03, 1.671e-02, -4.083e-03, 2.723e-02, -1.240e-02, -1.083e-01, -5.522e-02, -3.805e-02, -5.451e-03), r);\n\tr = MulAdd(s1_1, M4(-5.498e-02, -8.589e-02, -3.719e-02, 3.869e-02, -6.313e-02, -1.802e-01, -3.138e-02, -1.590e-02, 8.387e-02, -3.262e-02, -2.200e-02, -1.219e-01, 7.055e-02, -3.643e-02, -3.876e-02, 2.919e-02), r);\n\tr = MulAdd(s1_2, M4(-5.971e-02, -9.605e-02, 1.531e-02, 2.150e-02, -1.796e-02, 1.420e-01, -2.047e-02, -7.588e-02, -1.726e-02, -5.413e-02, 2.955e-02, -6.840e-03, 1.229e-01, -5.442e-02, 1.122e-02, 9.035e-02), r);\n\tr = MulAdd(s1_3, M4(-2.981e-02, 4.970e-02, 1.666e-02, 3.094e-02, -7.380e-02, -6.886e-03, 9.964e-02, -1.509e-01, 4.556e-03, 3.679e-02, -1.705e-02, 2.600e-02, 2.041e-02, -1.858e-02, -9.259e-02, -6.156e-02), r);\n\tr = MulAdd(s1_4, M4(-1.437e-01, -1.724e-01, 2.822e-01, 2.717e-01, 4.589e-02, -6.308e-01, 5.793e-02, -2.265e-02, 5.042e-02, 1.364e-01, -3.804e-02, 4.237e-03, 2.043e-01, 1.153e-02, 1.238e-01, 1.210e-02), r);\n\tr = MulAdd(s1_5, M4(1.812e-02, -5.285e-02, 2.342e-02, 7.906e-02, -7.495e-02, 2.884e-01, 8.660e-02, 2.412e-02, 4.516e-02, -1.052e-01, -1.014e-03, -2.533e-02, 4.660e-02, 9.580e-02, -7.580e-02, -5.971e-02), r);\n\tr = MulAdd(s1_6, M4(-9.260e-02, 6.785e-02, 1.371e-01, -1.164e-01, 1.498e-01, 1.070e-01, -6.899e-02, -1.077e-01, -5.263e-02, 1.199e-02, -1.819e-03, -3.347e-02, -1.207e-02, -5.150e-02, -7.479e-02, -8.583e-02), r);\n\tr = MulAdd(s1_7, M4(-4.297e-02, -3.878e-02, 1.497e-01, 7.435e-02, 9.017e-02, -1.620e-02, 1.384e-01, 3.013e-02, 6.530e-02, 7.376e-02, -1.695e-02, 4.129e-02, -1.378e-01, -1.839e-01, 5.109e-02, -2.315e-02), r);\n\tr = MulAdd(s1_8, M4(-9.330e-02, -6.025e-02, 1.083e-02, 6.513e-02, -6.527e-02, -8.349e-02, 3.801e-03, -5.190e-02, 4.935e-02, -1.226e-02, -1.807e-05, 2.047e-02, -1.693e-01, 4.893e-03, 4.495e-02, -8.611e-02), r);\n\tr = MulAdd(s2_0, M4(-4.397e-03, -2.235e-03, 1.233e-02, 1.180e-02, -4.661e-02, 6.362e-02, 1.035e-01, 7.738e-02, -2.816e-02, 1.176e-01, -2.514e-02, 5.308e-02, 1.755e-01, 1.390e-01, -4.273e-03, 4.984e-02), r);\n\tr = MulAdd(s2_1, M4(5.881e-02, -7.890e-02, -4.904e-02, -1.664e-01, -1.577e-01, -1.212e-01, 1.829e-01, 1.517e-01, 2.948e-02, -3.110e-02, -6.089e-02, 8.470e-02, 2.931e-01, 1.623e-02, -1.035e-02, 1.867e-02), r);\n\tr = MulAdd(s2_2, M4(8.029e-03, -5.064e-02, 3.720e-02, 4.260e-02, -9.060e-03, 2.332e-01, 5.485e-02, -1.948e-01, -4.837e-02, -2.903e-02, -3.019e-02, -9.514e-04, 2.468e-01, -1.600e-02, 5.436e-02, 5.084e-02), r);\n\tr = MulAdd(s2_3, M4(-1.575e-01, 2.353e-02, 3.893e-02, 5.288e-02, -1.999e-02, 1.489e-01, -6.922e-02, -9.150e-02, 1.382e-01, 6.813e-02, -3.534e-02, -6.858e-02, 1.107e-01, 9.316e-02, 1.947e-03, 1.004e-01), r);\n\tr = MulAdd(s2_4, M4(-3.720e-01, -5.447e-02, 2.549e-02, 2.286e-01, 1.167e-01, -2.583e-02, -6.140e-02, 1.555e-01, -6.848e-03, 4.610e-01, -2.326e-02, -9.978e-02, -9.189e-02, 1.148e-02, 5.049e-02, 4.296e-02), r);\n\tr = MulAdd(s2_5, M4(-9.210e-02, 1.150e-01, -1.262e-02, -3.182e-02, -6.583e-02, 3.653e-02, -1.123e-01, -3.868e-02, 4.312e-02, -2.195e-02, -2.840e-02, 9.926e-02, 1.779e-01, 4.119e-02, 7.840e-02, 1.152e-02), r);\n\tr = MulAdd(s2_6, M4(-5.914e-02, -2.219e-02, -9.741e-02, -9.852e-03, -2.060e-01, -2.879e-02, -3.191e-02, -6.268e-03, 1.707e-01, -4.309e-02, -9.542e-02, 1.030e-02, 1.644e-01, 6.315e-02, 2.777e-02, -4.545e-02), r);\n\tr = MulAdd(s2_7, M4(6.399e-02, 2.502e-03, -8.012e-04, 2.422e-02, 1.429e-02, -2.728e-02, -8.389e-02, 3.381e-02, 5.823e-02, 4.210e-03, -2.876e-01, 1.036e-01, 7.736e-02, 5.577e-02, 6.369e-02, -1.008e-01), r);\n\tr = MulAdd(s2_8, M4(-5.091e-02, -5.603e-03, 2.450e-02, 3.630e-02, -2.032e-03, -2.386e-02, -7.338e-02, -9.917e-02, 8.712e-02, -2.359e-02, -1.168e-01, -4.326e-02, 1.907e-01, 9.281e-02, 8.805e-02, -1.709e-02), r);\n\tr = MulAdd(s3_0, M4(-8.492e-03, -1.684e-01, -7.766e-02, -4.028e-02, -4.158e-02, -2.127e-02, -7.257e-03, 5.917e-03, 1.217e-02, 7.317e-02, -2.137e-02, 5.041e-02, -4.243e-02, -2.898e-02, 1.979e-02, 4.331e-02), r);\n\tr = MulAdd(s3_1, M4(-6.358e-02, -1.387e-01, -6.814e-02, -1.817e-01, 4.827e-02, 5.557e-02, -5.562e-02, -2.517e-02, 7.520e-02, -5.369e-02, -2.957e-02, 6.842e-02, -4.920e-02, 9.637e-03, -9.558e-03, -5.943e-02), r);\n\tr = MulAdd(s3_2, M4(-1.849e-01, -1.107e-01, 1.328e-02, 6.648e-02, -6.986e-03, -3.831e-02, 2.777e-02, -9.664e-02, -1.188e-02, -8.414e-02, -5.005e-03, -6.809e-02, -3.758e-03, 3.419e-02, 1.044e-02, 2.588e-02), r);\n\tr = MulAdd(s3_3, M4(-3.455e-02, -6.447e-02, 4.304e-02, -3.681e-02, 1.114e-02, -2.089e-02, -1.545e-01, -1.155e-01, 7.848e-02, 3.047e-02, 7.575e-03, -1.164e-01, 4.672e-02, 7.194e-03, -8.710e-03, 1.492e-02), r);\n\tr = MulAdd(s3_4, M4(-4.902e-01, -1.553e-01, 1.198e-02, 1.993e-01, 2.566e-01, -1.017e-02, -3.468e-01, -9.216e-02, 1.138e-01, 9.617e-02, 2.042e-01, 3.819e-02, 1.073e-02, -1.215e-01, -1.253e-01, 7.351e-02), r);\n\tr = MulAdd(s3_5, M4(1.501e-01, 9.681e-03, -1.894e-01, 5.893e-02, 8.715e-02, 4.639e-02, -7.896e-02, -2.378e-02, -4.966e-03, -2.195e-02, 6.299e-02, 1.118e-01, -4.372e-02, 4.882e-02, 4.516e-02, -5.960e-02), r);\n\tr = MulAdd(s3_6, M4(-2.788e-02, -5.976e-02, -1.486e-02, -6.390e-02, 1.490e-02, -5.229e-02, 9.739e-03, 1.628e-02, 1.290e-01, 1.911e-02, -9.108e-02, -1.047e-01, 5.630e-02, 5.946e-02, 2.895e-02, -7.990e-03), r);\n\tr = MulAdd(s3_7, M4(1.312e-01, -7.650e-05, -8.691e-03, 2.166e-01, 6.408e-02, 2.675e-02, -5.012e-02, -1.038e-01, 2.693e-02, -5.429e-02, -5.977e-02, 2.153e-02, -2.628e-02, 7.319e-02, 1.860e-01, 1.051e-04), r);\n\tr = MulAdd(s3_8, M4(-2.411e-02, 7.000e-03, 3.083e-02, 1.198e-01, 2.981e-02, 1.489e-03, -7.782e-03, 1.403e-02, 9.663e-02, -7.251e-02, -8.213e-02, -3.074e-02, 9.806e-04, -4.858e-03, 5.047e-02, -1.717e-02), r);\n\tr = MulAdd(s4_0, M4(7.733e-02, -3.449e-02, 5.216e-04, 3.603e-02, 6.168e-02, -5.736e-02, 1.789e-02, 4.947e-02, 5.769e-02, -1.078e-01, 3.067e-02, 7.693e-02, -1.915e-02, -1.371e-01, -6.832e-03, -7.441e-02), r);\n\tr = MulAdd(s4_1, M4(-2.435e-02, 6.718e-02, -2.504e-02, -1.398e-02, -4.522e-03, -1.198e-01, 8.722e-04, -6.143e-02, -1.031e-01, 1.309e-01, 8.645e-02, -1.824e-01, 9.033e-02, -6.244e-02, 6.688e-02, 8.934e-02), r);\n\tr = MulAdd(s4_2, M4(9.768e-03, -6.388e-03, 2.846e-04, 2.673e-02, -7.163e-02, -1.729e-01, 4.732e-02, -6.461e-02, 5.416e-02, 7.461e-02, 6.755e-03, 7.088e-02, -1.494e-01, -1.939e-01, -2.334e-02, -6.639e-02), r);\n\tr = MulAdd(s4_3, M4(4.916e-02, 7.842e-02, 8.636e-02, 4.896e-03, 2.077e-02, -7.260e-03, 6.933e-02, -1.500e-01, 3.326e-02, -6.514e-02, 4.309e-02, 5.474e-02, 2.360e-03, 3.087e-02, -1.838e-02, 3.402e-02), r);\n\tr = MulAdd(s4_4, M4(8.343e-02, -7.392e-02, 2.044e-01, -2.791e-02, -3.864e-01, -3.340e-02, 7.701e-02, 2.842e-01, 1.702e-01, 4.962e-02, -1.480e-02, 1.600e-02, -3.186e-01, -2.030e-02, -4.357e-02, 3.020e-01), r);\n\tr = MulAdd(s4_5, M4(-2.993e-02, -8.284e-02, -1.575e-02, 5.972e-02, 3.788e-02, -1.095e-01, 4.894e-03, -3.231e-02, 1.271e-01, 1.447e-01, -3.134e-02, 1.608e-01, 8.349e-02, -1.777e-01, -4.498e-02, 1.421e-02), r);\n\tr = MulAdd(s4_6, M4(7.155e-02, 5.883e-04, 1.742e-02, -6.199e-02, 5.508e-03, -1.616e-02, -8.643e-02, -5.801e-02, 3.736e-02, 3.901e-03, -3.167e-02, -6.554e-03, 8.429e-02, 4.994e-03, 2.081e-02, 1.212e-01), r);\n\tr = MulAdd(s4_7, M4(9.735e-02, -1.938e-03, -1.700e-02, -1.096e-03, 5.024e-02, 6.836e-02, 2.904e-02, -1.549e-01, -4.559e-02, 5.448e-02, -1.101e-01, -5.234e-02, -1.289e-01, -1.165e-03, -3.390e-01, 1.432e-01), r);\n\tr = MulAdd(s4_8, M4(2.385e-02, -9.496e-02, 4.213e-02, 1.313e-01, 1.014e-01, -3.205e-02, -2.377e-03, 9.691e-02, 3.838e-02, 5.198e-02, -4.253e-02, -2.289e-02, 2.043e-01, 1.153e-01, 3.498e-02, 4.674e-02), r);\n\tr = MulAdd(s5_0, M4(7.349e-02, -2.872e-02, 9.839e-03, 2.575e-02, 5.040e-02, -1.200e-02, 8.394e-03, 2.789e-02, 2.753e-02, -1.327e-02, 1.611e-02, -4.654e-02, 9.155e-02, 5.441e-03, 7.285e-03, -2.150e-02), r);\n\tr = MulAdd(s5_1, M4(-3.458e-02, 6.279e-02, -9.407e-02, -4.962e-02, -2.365e-02, -3.668e-03, -5.242e-02, 4.234e-02, 1.004e-01, 8.471e-02, -7.121e-03, -3.339e-02, 1.435e-01, 1.598e-02, -9.651e-03, -9.784e-03), r);\n\tr = MulAdd(s5_2, M4(5.242e-02, 4.609e-02, -5.016e-02, -8.921e-03, -3.206e-02, 9.631e-02, 2.813e-02, 1.163e-01, -7.121e-02, -2.991e-02, 4.636e-02, 1.120e-02, -9.152e-03, 1.125e-01, -2.285e-02, -2.552e-02), r);\n\tr = MulAdd(s5_3, M4(5.592e-02, 1.196e-01, 1.682e-01, -2.464e-02, 9.764e-02, 1.534e-02, 2.007e-02, 1.612e-03, 1.054e-02, 3.811e-03, 3.054e-02, 7.187e-02, 3.507e-03, 5.375e-04, -3.795e-02, 9.252e-02), r);\n\tr = MulAdd(s5_4, M4(3.448e-02, -1.545e-01, 2.232e-01, -1.527e-01, -2.125e-02, 2.051e-02, -1.904e-01, 2.173e-01, -9.658e-02, 1.783e-02, -1.125e-01, 5.383e-02, -2.253e-02, -2.935e-02, 7.137e-02, 2.442e-02), r);\n\tr = MulAdd(s5_5, M4(-5.549e-02, 8.547e-04, 2.289e-02, -1.332e-02, 2.281e-02, 5.366e-01, -5.318e-02, 1.265e-01, 1.038e-01, 4.680e-02, -8.508e-03, -1.544e-03, -1.590e-01, -1.295e-01, -1.334e-02, -5.572e-02), r);\n\tr = MulAdd(s5_6, M4(-6.454e-02, -7.916e-03, 2.528e-01, 8.998e-02, 4.818e-02, -5.405e-02, 2.007e-02, 5.993e-02, -4.428e-02, 5.162e-02, 3.843e-03, -2.584e-02, -5.946e-02, -1.401e-02, 6.041e-03, 3.848e-02), r);\n\tr = MulAdd(s5_7, M4(1.182e-03, -9.651e-02, 9.935e-02, 4.947e-02, -1.461e-01, -5.850e-02, -9.432e-03, 1.211e-01, -9.445e-02, 1.133e-01, 1.787e-01, 4.793e-03, -8.293e-03, 5.160e-02, -2.377e-02, -5.676e-02), r);\n\tr = MulAdd(s5_8, M4(-1.146e-02, -4.489e-02, 7.513e-02, 5.885e-04, -1.190e-01, -8.698e-03, -9.437e-02, -1.321e-01, 2.545e-02, -2.781e-02, 1.584e-02, -2.690e-02, 1.731e-01, 2.264e-02, 2.818e-02, 4.671e-02), r);\n\tr = MulAdd(s6_0, M4(-5.553e-02, -3.049e-02, -2.810e-02, -1.063e-01, 1.536e-02, -2.471e-02, 1.935e-02, 4.999e-02, 6.846e-02, 1.009e-01, -2.470e-02, 1.182e-02, -1.138e-01, 9.476e-02, 5.192e-02, -6.661e-02), r);\n\tr = MulAdd(s6_1, M4(-3.158e-02, 5.134e-02, -6.506e-03, 7.267e-02, -1.884e-02, -9.547e-02, 3.190e-02, -6.813e-02, -8.190e-03, -8.898e-02, -5.854e-03, 1.788e-02, -1.405e-01, -1.055e-01, 7.843e-02, 4.259e-02), r);\n\tr = MulAdd(s6_2, M4(-4.024e-02, 1.837e-01, -9.659e-03, -9.674e-03, 8.621e-03, 2.509e-02, 5.523e-02, -4.426e-02, 4.017e-02, 5.583e-02, -2.628e-02, -3.894e-02, 1.962e-02, -1.237e-01, -2.311e-02, -9.066e-02), r);\n\tr = MulAdd(s6_3, M4(-3.900e-02, -1.781e-02, -7.406e-02, 1.704e-02, -9.738e-02, -2.576e-02, 7.946e-02, 5.064e-02, 1.845e-01, 2.445e-02, -2.101e-03, -6.988e-02, -2.396e-01, -5.705e-02, 9.223e-02, 9.614e-03), r);\n\tr = MulAdd(s6_4, M4(1.962e-01, 2.403e-01, -5.725e-02, -8.831e-02, -2.979e-01, -2.226e-01, 1.183e-02, 1.560e-02, -1.624e-01, 2.325e-01, 3.164e-02, 1.086e-01, -2.150e-01, -1.872e-02, -1.079e-03, 2.493e-01), r);\n\tr = MulAdd(s6_5, M4(1.691e-04, -9.056e-02, 1.531e-01, -6.422e-02, -1.466e-01, 7.739e-02, 6.450e-02, -1.165e-01, 1.404e-04, 1.104e-01, 1.496e-02, -3.789e-02, -5.526e-02, 3.597e-02, 1.578e-01, -4.722e-02), r);\n\tr = MulAdd(s6_6, M4(-9.485e-02, -2.619e-03, -2.968e-02, 2.768e-03, 9.337e-02, 1.958e-02, 2.719e-02, -8.179e-03, 7.328e-02, -2.161e-02, -4.146e-02, 5.023e-02, 1.997e-01, -3.878e-02, 4.260e-02, 1.436e-02), r);\n\tr = MulAdd(s6_7, M4(8.732e-02, 9.822e-03, -1.201e-02, 1.027e-01, 8.020e-02, 1.386e-02, 9.703e-02, 9.239e-02, 1.340e-01, 5.484e-02, 9.953e-02, -7.304e-02, 3.625e-02, -4.690e-02, 9.176e-02, 6.110e-02), r);\n\tr = MulAdd(s6_8, M4(-9.272e-02, 3.165e-02, -5.926e-02, -5.496e-02, -3.022e-02, 2.849e-02, 6.468e-02, 1.194e-02, -4.001e-02, -3.142e-02, -3.773e-02, -7.805e-02, -3.019e-02, -6.167e-02, 5.378e-02, 6.293e-02), r);\n\tr = MulAdd(s7_0, M4(-6.682e-02, -3.100e-03, 4.288e-02, -4.757e-02, 1.168e-02, 4.485e-03, 1.499e-02, -4.155e-02, -5.604e-02, -3.052e-03, 4.053e-03, -9.959e-03, 2.347e-02, 1.329e-01, -7.440e-02, 1.943e-02), r);\n\tr = MulAdd(s7_1, M4(-1.225e-01, 1.294e-01, -1.058e-02, -1.070e-02, -1.750e-02, 4.497e-03, 3.608e-02, 1.315e-02, -1.025e-01, -6.416e-02, 6.496e-02, 3.045e-03, 6.792e-02, 4.245e-02, -6.879e-02, 2.115e-01), r);\n\tr = MulAdd(s7_2, M4(-4.218e-02, 5.811e-02, -4.552e-02, -4.372e-02, 1.682e-02, 3.276e-02, 1.525e-02, -1.266e-02, 6.467e-02, -6.312e-02, -2.242e-02, -2.783e-02, 2.884e-02, 6.089e-02, -2.662e-02, 2.866e-02), r);\n\tr = MulAdd(s7_3, M4(-2.057e-02, -4.344e-02, 2.442e-02, 1.680e-01, -8.247e-02, 1.266e-02, -3.677e-02, 2.206e-02, 3.236e-02, -2.898e-02, -7.851e-02, 7.222e-02, -1.709e-02, 6.476e-02, -1.110e-01, -1.086e-01), r);\n\tr = MulAdd(s7_4, M4(-7.845e-02, 1.909e-01, 3.045e-02, 8.544e-02, -7.163e-02, -1.065e-01, -1.011e-01, -1.703e-01, -1.102e-01, 1.369e-01, 2.257e-01, 3.306e-01, 1.614e-01, -4.870e-02, -1.226e-01, -2.679e-01), r);\n\tr = MulAdd(s7_5, M4(9.959e-03, -9.835e-02, 2.715e-02, -6.583e-03, 4.776e-02, 2.997e-02, -1.947e-02, -4.679e-02, 2.217e-02, -4.622e-02, -7.050e-02, 1.626e-02, -2.419e-02, -7.395e-02, 1.233e-01, 6.038e-02), r);\n\tr = MulAdd(s7_6, M4(-4.357e-02, -2.921e-03, 1.762e-02, 4.688e-03, -3.021e-02, 4.270e-03, 9.634e-02, -1.632e-02, 1.907e-02, 5.368e-02, 7.232e-02, -2.958e-02, 6.972e-02, 4.948e-02, -8.427e-02, -7.472e-03), r);\n\tr = MulAdd(s7_7, M4(-4.863e-02, 2.256e-03, 1.555e-01, 9.200e-02, 5.525e-02, -7.310e-02, 7.447e-02, -4.961e-02, -9.250e-02, -2.349e-02, 1.928e-01, 2.023e-02, 4.853e-02, -3.875e-02, -2.442e-01, -7.941e-02), r);\n\tr = MulAdd(s7_8, M4(-1.036e-02, -4.162e-03, -3.954e-02, 3.330e-02, -5.723e-02, -3.625e-02, 2.070e-02, 1.482e-03, 5.367e-03, -3.066e-02, -5.701e-02, -3.775e-02, 3.520e-02, 7.684e-02, -4.128e-02, -2.718e-02), r);\n\treturn r;\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 7\n//!DESC conv6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.936e-02, -1.244e-02, 5.264e-03, 1.250e-03 };\n\tr = MulAdd(s0_0, M4(2.892e-02, 9.057e-04, -2.227e-02, 1.170e-01, 5.052e-02, -4.755e-02, -2.612e-02, 6.990e-02, -6.464e-02, -4.279e-02, 1.755e-02, -4.057e-02, -3.950e-02, 6.520e-03, -3.059e-02, -7.818e-03), r);\n\tr = MulAdd(s0_1, M4(9.898e-03, 1.838e-02, -3.997e-02, 3.761e-02, -2.064e-02, -6.330e-02, 2.579e-02, -3.046e-02, -1.524e-02, 4.854e-02, -7.193e-02, -3.546e-03, 1.800e-02, 7.523e-04, -1.513e-02, 5.210e-03), r);\n\tr = MulAdd(s0_2, M4(-5.011e-02, -7.229e-02, -1.374e-02, -5.250e-02, 5.590e-04, -1.762e-02, -3.047e-02, -5.688e-02, -5.930e-02, 2.584e-02, -1.109e-03, 8.703e-02, 1.787e-02, -1.783e-02, -4.701e-02, -2.684e-02), r);\n\tr = MulAdd(s0_3, M4(-9.078e-02, -3.604e-03, 8.995e-02, 3.718e-02, 1.311e-01, -3.371e-02, -3.473e-02, -2.238e-01, 8.436e-02, 2.053e-02, 4.818e-02, -3.848e-02, 1.036e-01, 1.370e-01, -6.924e-02, -1.183e-01), r);\n\tr = MulAdd(s0_4, M4(-1.547e-01, 9.445e-02, -6.589e-02, 1.662e-01, 1.747e-01, -1.342e-01, 5.341e-02, -3.193e-01, 2.132e-01, 2.009e-01, 5.479e-02, -1.624e-01, -9.093e-02, 1.332e-01, 2.477e-01, -3.623e-01), r);\n\tr = MulAdd(s0_5, M4(2.956e-02, 5.554e-02, 2.417e-02, -5.816e-02, 1.005e-01, 8.073e-02, 2.686e-02, 3.986e-03, -1.567e-02, -4.538e-02, -7.194e-02, 8.519e-03, 5.708e-02, 7.690e-02, -5.197e-03, -7.138e-02), r);\n\tr = MulAdd(s0_6, M4(-5.022e-02, 1.932e-02, 1.924e-03, -2.213e-02, 1.373e-02, -8.656e-02, -3.289e-03, -5.205e-02, -3.293e-02, -5.007e-02, 6.656e-02, 6.720e-03, 1.852e-01, 1.395e-01, -1.305e-01, 7.133e-02), r);\n\tr = MulAdd(s0_7, M4(3.341e-02, 2.647e-02, -1.255e-01, 9.840e-02, 1.228e-01, 3.911e-02, -1.104e-01, 4.893e-02, 1.619e-01, -1.152e-02, 1.642e-01, -2.472e-01, 7.064e-02, 7.472e-02, -2.321e-02, 1.860e-01), r);\n\tr = MulAdd(s0_8, M4(3.182e-03, -1.035e-02, -4.764e-03, -2.834e-02, -4.592e-02, -8.360e-02, -1.049e-01, 9.181e-02, -5.580e-03, -2.966e-02, 4.314e-02, -5.040e-02, 7.959e-03, -4.075e-02, -7.035e-02, 7.185e-03), r);\n\tr = MulAdd(s1_0, M4(1.005e-02, 3.869e-02, -9.593e-02, -6.703e-02, -5.489e-03, -6.815e-02, -2.919e-02, 7.197e-02, -3.231e-02, -8.941e-02, -2.824e-03, -1.433e-01, -4.432e-02, 2.306e-02, 2.600e-02, 2.355e-02), r);\n\tr = MulAdd(s1_1, M4(-1.337e-02, 6.519e-02, 6.904e-02, 2.077e-01, -7.160e-02, -6.044e-03, -9.011e-02, -4.576e-02, -6.759e-02, -3.018e-02, 2.219e-02, -2.280e-02, 3.455e-03, -8.716e-02, 2.434e-02, 2.113e-02), r);\n\tr = MulAdd(s1_2, M4(-4.231e-03, 8.658e-02, -4.622e-04, -1.155e-01, -6.464e-02, -7.393e-03, 2.837e-02, -3.901e-03, -3.928e-02, -1.095e-01, -2.863e-02, -9.264e-02, -5.068e-02, -1.030e-01, -1.353e-02, -3.888e-02), r);\n\tr = MulAdd(s1_3, M4(6.558e-02, -2.655e-02, 2.628e-02, 1.995e-02, 7.401e-02, -5.787e-02, 5.426e-02, -1.168e-01, -4.519e-02, -1.051e-01, 4.971e-02, -2.537e-01, -9.540e-02, 1.039e-01, -1.761e-02, 1.026e-02), r);\n\tr = MulAdd(s1_4, M4(1.446e-02, 1.660e-01, -1.851e-01, 4.339e-01, 9.934e-02, -1.544e-01, -2.348e-01, 8.207e-02, -2.856e-02, 7.433e-02, 7.259e-02, -7.759e-02, -1.389e-01, -3.222e-02, 2.700e-01, -1.827e-01), r);\n\tr = MulAdd(s1_5, M4(7.654e-02, 3.500e-02, -6.733e-02, 1.029e-01, -8.113e-03, -7.692e-02, -8.108e-02, 4.407e-02, -8.400e-02, -2.423e-01, -5.516e-02, -2.318e-01, 2.917e-02, 8.021e-02, 1.554e-01, -1.132e-01), r);\n\tr = MulAdd(s1_6, M4(-5.160e-03, 1.790e-04, -3.341e-02, 1.601e-02, 7.012e-02, -6.386e-02, -9.156e-03, 5.564e-03, 6.886e-02, 2.401e-02, -2.487e-02, -9.339e-02, 6.921e-02, 1.156e-01, -1.217e-01, 8.888e-02), r);\n\tr = MulAdd(s1_7, M4(-4.282e-02, 7.150e-02, 3.611e-02, 2.136e-02, -6.391e-03, 1.245e-01, 2.154e-03, 6.634e-02, 6.563e-02, 1.349e-01, 5.738e-02, -1.428e-02, 1.269e-01, 2.861e-02, -1.129e-01, -3.461e-02), r);\n\tr = MulAdd(s1_8, M4(8.093e-02, 6.132e-02, -3.980e-02, 4.061e-03, -6.737e-03, -1.218e-01, -7.884e-02, 2.701e-02, -5.346e-02, -3.825e-02, -3.358e-03, -3.880e-02, 4.392e-02, 1.837e-02, -3.878e-02, 2.689e-02), r);\n\tr = MulAdd(s2_0, M4(-1.140e-01, -1.977e-01, 8.833e-02, 3.602e-02, -8.492e-02, -4.644e-02, 7.422e-02, 4.735e-02, -6.120e-02, -2.640e-02, -9.553e-03, -4.967e-02, 2.549e-01, 6.415e-02, -2.526e-02, 5.049e-02), r);\n\tr = MulAdd(s2_1, M4(1.352e-01, 4.401e-02, -6.839e-02, 5.522e-04, -5.163e-03, -1.764e-01, 1.450e-01, 2.832e-02, -1.245e-02, -1.053e-02, -7.027e-03, 2.384e-02, 1.973e-01, 3.105e-01, -1.400e-01, -3.123e-02), r);\n\tr = MulAdd(s2_2, M4(-5.263e-02, -3.082e-02, 2.771e-02, 7.748e-02, 7.367e-02, 5.136e-02, 9.221e-03, -9.403e-02, -3.892e-02, 2.250e-02, 3.406e-02, -3.803e-03, 1.243e-01, 1.343e-01, 4.603e-02, 9.632e-02), r);\n\tr = MulAdd(s2_3, M4(-2.570e-02, 9.713e-02, -3.603e-02, -1.741e-01, -3.212e-01, -1.177e-01, 5.072e-02, -6.159e-02, 1.046e-02, -8.851e-03, 1.964e-03, -2.628e-02, 5.741e-02, 1.188e-01, -5.907e-02, -9.158e-02), r);\n\tr = MulAdd(s2_4, M4(4.535e-02, 1.107e-01, -8.172e-02, -9.792e-02, -6.629e-03, 1.336e-01, 3.079e-01, 1.386e-01, 3.253e-02, -6.700e-02, 4.914e-02, -2.250e-01, 2.649e-01, 9.882e-02, 5.684e-02, -1.145e-01), r);\n\tr = MulAdd(s2_5, M4(8.656e-04, -1.921e-02, 4.709e-02, -2.374e-02, 1.168e-02, -1.003e-01, -7.816e-03, 2.747e-02, -1.393e-02, 4.043e-02, -1.118e-02, 4.130e-02, 5.784e-02, -2.393e-02, -1.445e-01, -2.710e-02), r);\n\tr = MulAdd(s2_6, M4(-3.388e-03, -3.829e-02, 5.542e-02, -7.072e-02, 7.206e-02, -1.228e-01, 5.047e-02, 5.735e-02, -1.856e-02, -2.545e-02, -2.100e-02, 6.857e-03, -1.250e-02, -3.396e-02, 7.393e-02, -6.130e-02), r);\n\tr = MulAdd(s2_7, M4(-8.575e-03, -4.300e-02, -1.490e-01, 2.881e-02, -2.819e-02, -9.092e-02, 2.132e-01, -1.420e-01, 2.622e-02, -5.709e-02, 5.645e-03, 2.712e-02, 8.451e-02, 4.578e-02, 8.928e-03, 9.006e-02), r);\n\tr = MulAdd(s2_8, M4(4.345e-02, 2.069e-02, 1.854e-02, -1.189e-02, 4.093e-02, -2.959e-02, -1.770e-02, 7.986e-02, -1.470e-02, -2.281e-02, 6.168e-03, -5.472e-03, 1.018e-01, 5.524e-02, -1.023e-01, -3.456e-02), r);\n\tr = MulAdd(s3_0, M4(-7.354e-02, 2.029e-02, 4.034e-02, 4.410e-02, 5.180e-02, 4.118e-02, 4.462e-02, 9.580e-02, -2.305e-01, -1.860e-01, -1.725e-01, -2.209e-01, -1.102e-01, -3.227e-02, 3.321e-02, -5.393e-02), r);\n\tr = MulAdd(s3_1, M4(3.237e-02, -1.845e-02, 7.690e-03, 2.054e-01, 2.388e-03, 2.858e-02, 2.746e-03, 6.395e-02, -2.665e-01, -2.872e-01, 1.131e-01, -9.316e-02, 2.001e-02, 1.909e-02, 3.956e-02, 7.376e-02), r);\n\tr = MulAdd(s3_2, M4(-3.274e-02, 4.116e-02, 9.165e-03, -6.812e-02, 1.102e-02, 5.621e-02, -3.189e-02, 6.348e-02, -2.511e-02, -6.700e-02, -3.697e-02, -1.694e-01, -5.214e-03, -2.888e-02, -4.806e-02, 6.745e-03), r);\n\tr = MulAdd(s3_3, M4(-1.959e-01, -1.499e-01, -1.345e-01, 4.864e-02, -7.274e-02, -8.329e-02, -2.831e-03, 9.697e-02, 4.047e-01, 6.853e-02, -1.007e-01, -4.966e-02, -3.069e-02, -5.057e-02, -3.145e-02, 1.141e-01), r);\n\tr = MulAdd(s3_4, M4(1.736e-02, 3.371e-02, -1.292e-02, 9.849e-03, -2.007e-02, 8.965e-03, 1.146e-01, 6.432e-02, -9.202e-02, 6.812e-02, 1.029e-01, -1.521e-01, -3.578e-02, 1.258e-01, 6.123e-02, -3.616e-02), r);\n\tr = MulAdd(s3_5, M4(-1.039e-01, 2.152e-02, 5.538e-04, -1.052e-01, 2.065e-02, -6.045e-02, -4.725e-02, -7.233e-02, -2.188e-01, 1.499e-02, -1.378e-01, 6.032e-02, 2.544e-03, -2.566e-03, -8.906e-03, -4.056e-02), r);\n\tr = MulAdd(s3_6, M4(-6.231e-02, 4.043e-02, -6.667e-02, 4.605e-02, 1.026e-01, -1.503e-02, -2.104e-02, 8.022e-02, 1.437e-01, -2.244e-01, 7.704e-02, -1.969e-01, -8.773e-02, -8.024e-02, 9.243e-03, 3.532e-02), r);\n\tr = MulAdd(s3_7, M4(6.778e-02, 8.541e-03, -8.499e-02, 5.502e-02, -1.259e-02, -1.763e-02, 5.560e-02, -1.815e-02, -1.941e-01, -3.327e-02, 2.370e-01, -3.977e-03, 1.362e-02, 3.610e-02, -1.219e-01, 9.990e-02), r);\n\tr = MulAdd(s3_8, M4(1.069e-01, 7.105e-02, -1.385e-02, -8.030e-03, 5.911e-02, -1.568e-02, -7.717e-03, -1.807e-02, 1.325e-01, 1.617e-03, 3.105e-02, -2.326e-01, 2.131e-02, 4.202e-02, 3.413e-03, -4.040e-02), r);\n\tr = MulAdd(s4_0, M4(8.906e-02, 1.115e-03, 3.390e-02, -2.516e-03, 5.805e-02, -3.799e-02, 4.655e-02, 2.257e-02, 4.932e-02, 2.314e-02, -4.908e-02, 2.996e-02, 4.110e-02, -4.586e-02, -6.483e-04, -5.355e-02), r);\n\tr = MulAdd(s4_1, M4(9.657e-02, 2.625e-02, 7.033e-02, -1.720e-02, 4.770e-02, -2.590e-02, -2.325e-02, -2.599e-02, -3.552e-02, 7.924e-02, 2.860e-02, 2.673e-02, 7.177e-02, 2.816e-02, -7.265e-03, -1.118e-01), r);\n\tr = MulAdd(s4_2, M4(4.743e-02, -3.720e-02, 8.744e-02, -1.634e-02, -8.956e-02, 2.616e-02, 1.434e-02, 4.662e-03, 5.470e-02, 3.277e-02, -1.178e-03, -1.544e-02, -1.169e-01, -9.655e-02, 4.487e-02, -1.241e-02), r);\n\tr = MulAdd(s4_3, M4(-1.359e-02, -5.988e-02, 2.693e-02, 2.846e-02, 9.406e-02, 5.142e-02, 5.821e-02, 3.332e-02, 1.010e-01, -4.253e-03, -5.963e-02, -1.029e-03, 4.573e-02, -6.321e-02, 3.603e-02, 3.449e-02), r);\n\tr = MulAdd(s4_4, M4(1.066e-01, 7.866e-02, 1.535e-02, -1.959e-01, -1.472e-02, -1.645e-01, -4.944e-02, 8.975e-02, -5.317e-02, -7.101e-02, -1.510e-02, 3.471e-02, 1.469e-01, 4.420e-03, -2.352e-01, 2.438e-01), r);\n\tr = MulAdd(s4_5, M4(3.382e-02, 6.457e-02, 1.342e-01, -6.023e-02, -7.056e-02, -1.374e-02, 3.042e-02, 8.520e-03, 1.263e-01, -7.204e-02, 1.232e-01, 1.482e-02, -8.120e-02, -1.545e-01, 5.136e-02, 5.783e-02), r);\n\tr = MulAdd(s4_6, M4(-4.757e-02, 2.582e-02, -7.227e-03, -1.299e-02, -7.072e-02, 2.237e-02, 5.139e-02, 3.069e-02, -4.099e-02, -4.838e-02, -9.954e-03, 6.936e-03, -6.913e-02, -4.324e-03, 3.736e-02, 2.256e-02), r);\n\tr = MulAdd(s4_7, M4(8.430e-02, 4.440e-02, -6.424e-02, 4.997e-02, 1.963e-02, 3.090e-02, -1.815e-02, 2.615e-02, 3.461e-02, 5.020e-02, -4.343e-02, 2.793e-02, 3.126e-03, 6.713e-03, -1.250e-02, 8.975e-02), r);\n\tr = MulAdd(s4_8, M4(-4.362e-02, 2.579e-02, -8.012e-03, 5.232e-02, -7.003e-02, -4.135e-02, -7.833e-03, 8.398e-03, 3.151e-02, 7.675e-02, 2.003e-02, 1.107e-02, -1.208e-01, -7.307e-02, -2.827e-02, 1.377e-02), r);\n\tr = MulAdd(s5_0, M4(-5.169e-02, 1.376e-02, 7.169e-02, 3.810e-02, 3.989e-04, 4.194e-02, -3.871e-02, -1.040e-02, 1.715e-01, -2.089e-02, -2.049e-02, -1.927e-02, -6.435e-03, -1.077e-01, -2.022e-02, -4.709e-02), r);\n\tr = MulAdd(s5_1, M4(8.097e-02, 1.595e-01, 6.419e-02, 6.755e-02, 9.451e-03, 3.660e-03, -1.911e-03, -3.770e-02, 6.812e-02, -1.181e-02, 7.683e-02, 9.669e-02, -1.066e-02, 9.533e-03, -6.897e-02, -3.196e-02), r);\n\tr = MulAdd(s5_2, M4(-1.290e-01, -1.846e-01, 3.082e-02, -3.248e-02, -9.121e-02, -5.633e-02, 1.155e-02, -7.674e-02, -4.658e-02, -1.558e-01, -7.535e-03, -6.349e-02, 5.137e-02, -1.630e-02, 3.026e-02, -3.777e-02), r);\n\tr = MulAdd(s5_3, M4(-2.546e-02, -1.736e-02, 5.887e-02, 6.525e-02, 1.211e-01, 4.194e-02, -9.258e-02, 7.958e-02, 1.622e-02, -8.012e-02, 1.706e-02, -1.745e-01, 3.421e-02, -4.461e-02, 7.792e-02, -3.323e-02), r);\n\tr = MulAdd(s5_4, M4(-1.058e-02, 5.965e-02, 3.412e-03, -7.582e-02, 1.101e-01, 1.057e-01, 5.295e-02, 1.138e-01, 1.188e-01, -1.380e-01, -3.663e-02, -1.563e-01, 1.298e-01, -7.933e-02, -2.861e-01, 1.125e-01), r);\n\tr = MulAdd(s5_5, M4(-1.250e-01, 1.039e-01, 9.261e-02, -6.083e-02, -6.239e-02, -1.635e-01, 1.773e-02, -7.921e-02, 7.637e-02, -4.078e-02, 2.057e-01, -1.251e-01, -3.691e-02, -3.187e-02, 7.676e-02, 1.064e-01), r);\n\tr = MulAdd(s5_6, M4(-1.186e-01, -9.549e-03, 4.969e-02, -3.553e-02, 3.041e-02, 4.041e-02, 2.331e-02, -1.049e-02, 9.832e-03, -3.467e-02, -3.237e-02, 5.767e-02, 3.448e-02, 3.118e-02, 1.128e-02, -2.170e-02), r);\n\tr = MulAdd(s5_7, M4(8.589e-02, 1.011e-02, 6.850e-02, -1.698e-01, 4.856e-02, 7.526e-02, -1.202e-02, -1.346e-02, 2.155e-01, 3.896e-02, -3.379e-02, -6.320e-03, 8.241e-02, -5.493e-03, -2.139e-02, -4.874e-02), r);\n\tr = MulAdd(s5_8, M4(8.309e-03, 1.014e-01, 1.912e-04, -1.443e-02, -9.996e-02, -5.747e-02, -1.427e-02, -3.418e-02, 1.229e-02, 4.351e-02, 3.041e-02, 4.928e-02, -2.213e-02, -3.990e-02, -1.135e-02, -3.189e-03), r);\n\tr = MulAdd(s6_0, M4(-1.363e-03, 3.767e-02, 2.673e-02, 1.090e-01, -5.906e-02, -6.840e-02, -3.299e-03, 5.067e-02, -8.695e-02, -7.577e-03, -2.977e-02, -3.850e-02, -3.534e-02, -6.116e-02, 4.473e-02, -6.983e-02), r);\n\tr = MulAdd(s6_1, M4(-6.196e-02, -2.664e-02, 1.405e-03, -6.275e-02, 1.508e-01, 8.178e-02, -3.065e-02, 4.872e-02, -4.752e-02, 1.714e-01, 6.112e-02, 8.994e-02, 6.323e-02, -7.808e-02, 1.595e-02, -1.112e-02), r);\n\tr = MulAdd(s6_2, M4(7.586e-02, 5.583e-02, -2.494e-02, 6.153e-02, 5.347e-02, 3.702e-02, 3.865e-02, 8.649e-02, -1.919e-02, 2.277e-01, 4.381e-02, 9.435e-02, 7.158e-02, -8.172e-02, -3.918e-02, -1.481e-02), r);\n\tr = MulAdd(s6_3, M4(6.842e-03, 4.130e-02, 2.458e-02, -1.275e-01, -1.430e-02, 5.328e-02, 2.890e-02, -7.957e-02, 1.503e-03, -8.867e-02, 3.256e-03, 2.632e-02, -5.296e-02, -3.447e-02, 5.496e-02, 2.323e-02), r);\n\tr = MulAdd(s6_4, M4(-2.043e-01, -1.940e-02, 1.762e-01, -2.170e-01, -4.904e-02, 5.043e-02, -8.911e-02, -1.098e-01, 6.870e-02, -4.414e-01, -1.441e-01, 1.978e-01, -6.663e-02, -1.210e-01, -9.031e-02, 2.019e-02), r);\n\tr = MulAdd(s6_5, M4(4.577e-02, -4.071e-02, -3.518e-03, -1.440e-01, 5.879e-03, -6.269e-02, -2.873e-02, 7.060e-02, -1.238e-01, -1.681e-01, 5.140e-02, 1.019e-01, 1.375e-01, 1.099e-01, 1.521e-02, -7.575e-02), r);\n\tr = MulAdd(s6_6, M4(-1.973e-03, -5.379e-02, 5.083e-02, -2.667e-02, 2.298e-01, 5.915e-02, -1.261e-01, 5.676e-02, -5.795e-02, -9.618e-03, 3.732e-02, -7.761e-03, 4.008e-02, -1.175e-02, 2.934e-02, 4.812e-03), r);\n\tr = MulAdd(s6_7, M4(-3.987e-03, 9.212e-03, 3.804e-02, -8.632e-02, 2.043e-02, 4.381e-02, -5.177e-02, 1.427e-01, 1.331e-02, 3.319e-02, 6.874e-02, -1.323e-01, -1.051e-01, -7.225e-02, 8.682e-02, -7.441e-02), r);\n\tr = MulAdd(s6_8, M4(2.258e-02, 6.892e-03, 9.611e-02, -7.609e-02, 1.090e-01, -4.216e-03, -5.880e-02, -4.078e-02, -9.083e-02, 2.742e-02, 6.515e-02, 1.319e-02, 6.738e-02, 3.922e-02, 9.416e-03, -4.067e-02), r);\n\tr = MulAdd(s7_0, M4(1.031e-01, 1.012e-01, -4.783e-03, 4.571e-02, -5.356e-02, -2.030e-02, 5.415e-02, 4.546e-02, -2.107e-02, -5.140e-02, 2.113e-02, 5.384e-02, 5.068e-02, 3.218e-04, -1.839e-02, 7.545e-02), r);\n\tr = MulAdd(s7_1, M4(-4.294e-02, 7.765e-02, 3.601e-02, -3.077e-02, 6.524e-02, -1.347e-02, -5.919e-02, 1.791e-02, 2.274e-01, 6.908e-02, -7.778e-02, 1.627e-01, 6.772e-02, 1.251e-01, -6.367e-02, 6.658e-02), r);\n\tr = MulAdd(s7_2, M4(5.673e-02, -1.761e-02, -3.663e-03, 1.791e-02, -2.510e-02, 2.097e-02, -2.502e-02, -7.294e-04, 4.252e-03, 7.918e-02, 4.567e-02, 1.122e-01, -6.216e-02, -3.072e-03, 7.834e-03, 2.619e-02), r);\n\tr = MulAdd(s7_3, M4(1.263e-01, 4.895e-02, -4.581e-02, -1.277e-01, -1.994e-01, 2.217e-01, 5.047e-02, 5.175e-02, -3.767e-02, -2.373e-02, -3.259e-02, -1.706e-01, 1.840e-01, -1.054e-01, -3.272e-02, 4.739e-02), r);\n\tr = MulAdd(s7_4, M4(-1.134e-02, -7.667e-03, 2.331e-01, -3.020e-01, 1.627e-01, -3.228e-01, 5.315e-02, -6.137e-02, 5.719e-02, -2.665e-02, 1.806e-01, -3.680e-01, 1.204e-01, -4.809e-02, -3.139e-01, 3.382e-01), r);\n\tr = MulAdd(s7_5, M4(1.173e-01, -3.797e-02, -7.569e-02, -9.224e-02, 1.795e-01, -2.326e-02, -1.464e-02, 1.275e-01, 1.945e-02, -1.106e-01, 1.670e-01, -1.490e-01, 9.719e-02, 1.096e-01, -6.054e-02, 1.833e-01), r);\n\tr = MulAdd(s7_6, M4(1.252e-01, -5.389e-03, 1.982e-02, -7.582e-02, 4.581e-02, 3.180e-02, -5.152e-02, 3.405e-02, -7.310e-03, -3.880e-02, -2.935e-02, -2.388e-02, -1.040e-01, 1.890e-02, 1.067e-01, -4.400e-02), r);\n\tr = MulAdd(s7_7, M4(6.951e-02, 2.690e-02, -2.907e-02, 4.672e-03, 6.524e-02, 6.165e-02, 1.446e-02, 1.205e-01, 1.406e-01, 7.088e-02, 1.196e-03, 7.178e-02, -1.725e-01, -1.580e-01, 1.284e-01, -1.150e-01), r);\n\tr = MulAdd(s7_8, M4(6.039e-02, 1.726e-03, 2.689e-02, 6.749e-02, 5.954e-03, -5.211e-02, 1.374e-03, 1.189e-01, -1.196e-02, 1.119e-02, 4.533e-03, 1.074e-01, -7.028e-02, -2.072e-02, -1.303e-01, -1.357e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 1.116e-03, 1.909e-02, 1.793e-02, -7.700e-03 };\n\tr = MulAdd(s0_0, M4(-1.215e-02, -4.540e-02, -6.182e-02, 9.210e-02, -1.343e-01, -6.008e-02, 1.022e-02, 6.817e-03, 6.076e-02, -3.628e-02, 9.117e-02, -3.748e-02, 4.280e-02, 2.804e-02, 7.215e-02, -4.456e-02), r);\n\tr = MulAdd(s0_1, M4(1.086e-01, -7.696e-02, 1.310e-01, 4.790e-02, -1.208e-02, 3.135e-02, -8.876e-04, 8.954e-02, -4.514e-02, -4.020e-02, -4.946e-02, 9.281e-03, -5.115e-02, -3.673e-02, -2.748e-02, 2.463e-03), r);\n\tr = MulAdd(s0_2, M4(1.640e-02, 9.478e-02, 6.299e-02, -9.613e-03, -6.623e-02, -2.458e-02, -6.038e-03, -6.066e-02, 5.517e-02, -9.301e-02, -2.742e-02, -1.356e-02, 1.062e-02, -5.368e-02, -4.682e-02, 1.174e-02), r);\n\tr = MulAdd(s0_3, M4(-1.294e-01, 6.481e-02, 6.688e-02, 4.674e-02, -2.854e-02, 2.854e-02, 1.117e-01, -6.279e-02, -2.460e-02, -6.481e-02, 3.189e-02, 1.215e-02, 2.836e-02, 3.841e-02, -3.548e-01, 1.343e-01), r);\n\tr = MulAdd(s0_4, M4(1.699e-01, 3.216e-02, -2.921e-01, -1.732e-02, 2.208e-02, 1.366e-02, 5.443e-02, 4.008e-02, -1.648e-01, 2.962e-01, 1.915e-01, -1.546e-01, 5.420e-02, -1.610e-01, 1.169e-01, 2.131e-01), r);\n\tr = MulAdd(s0_5, M4(-6.936e-02, 1.159e-01, 7.268e-02, -5.801e-02, 1.414e-02, 2.981e-02, 1.797e-01, 4.795e-02, 9.202e-02, -1.694e-01, -4.349e-02, -1.511e-02, 1.350e-02, -1.415e-02, -8.296e-02, 7.228e-02), r);\n\tr = MulAdd(s0_6, M4(-3.815e-02, 5.744e-02, -6.128e-02, 7.184e-03, -2.640e-03, 2.213e-02, -9.551e-02, -2.212e-02, -2.726e-02, -1.189e-02, 2.630e-02, 6.464e-02, 1.301e-02, 3.157e-03, 6.255e-02, -7.935e-02), r);\n\tr = MulAdd(s0_7, M4(-1.957e-01, -2.873e-02, 1.256e-01, -3.955e-03, -3.953e-02, 7.481e-02, 1.962e-01, -1.755e-01, 3.431e-01, 1.885e-02, -8.772e-02, 3.388e-02, -3.657e-01, 1.158e-01, 2.079e-01, -1.171e-01), r);\n\tr = MulAdd(s0_8, M4(-2.954e-02, 7.288e-02, -2.538e-02, 4.632e-03, 5.899e-02, -4.524e-02, -7.829e-02, 1.084e-01, 4.310e-02, 3.622e-02, -4.349e-03, 5.737e-03, -2.865e-02, -5.213e-02, -5.996e-02, 1.157e-01), r);\n\tr = MulAdd(s1_0, M4(-2.228e-02, 6.939e-03, -7.273e-02, -2.658e-02, -8.725e-02, -9.682e-02, -1.142e-02, 1.096e-02, -3.200e-03, 3.983e-02, 6.569e-02, -3.135e-02, 2.560e-02, -8.801e-04, 1.067e-01, -4.188e-02), r);\n\tr = MulAdd(s1_1, M4(-1.916e-02, -5.042e-02, 5.203e-02, 1.398e-01, -5.274e-02, -1.499e-01, 4.090e-02, -1.336e-01, -1.097e-01, -2.390e-02, -5.167e-03, 3.541e-02, -1.152e-01, 1.872e-02, -6.303e-02, 4.480e-02), r);\n\tr = MulAdd(s1_2, M4(-3.511e-02, 6.722e-02, -1.625e-02, -1.987e-01, -8.731e-03, 5.991e-02, -3.776e-03, -4.745e-02, 9.009e-02, -3.480e-02, -7.581e-02, 1.785e-02, -3.545e-02, -3.787e-02, 3.436e-02, -4.523e-02), r);\n\tr = MulAdd(s1_3, M4(-7.645e-02, 5.618e-03, -6.662e-03, -5.060e-04, -1.354e-01, 2.537e-02, 1.650e-01, -9.984e-02, -1.982e-02, 2.930e-02, 1.762e-02, 1.023e-01, 4.403e-02, -4.789e-03, -2.220e-01, 2.075e-01), r);\n\tr = MulAdd(s1_4, M4(1.497e-01, -5.995e-02, 4.478e-02, 1.940e-01, -1.135e-01, -3.094e-01, 1.325e-02, 3.125e-01, -1.059e-01, 1.516e-01, -2.374e-02, 1.221e-01, 1.473e-01, -3.604e-01, -2.142e-01, 2.015e-01), r);\n\tr = MulAdd(s1_5, M4(-8.634e-02, -3.871e-03, 1.723e-02, 9.041e-02, 7.761e-03, 4.224e-02, 5.476e-03, 6.053e-02, 2.046e-03, -1.409e-01, -6.809e-02, 9.993e-02, -2.364e-02, 1.081e-01, 2.678e-02, -1.273e-02), r);\n\tr = MulAdd(s1_6, M4(1.241e-02, 3.972e-02, -1.697e-02, -7.475e-03, 2.857e-02, 9.824e-03, -6.627e-02, -2.487e-02, 2.585e-02, -1.836e-02, -1.115e-01, -3.251e-02, -2.263e-02, 2.889e-02, 7.380e-02, -1.795e-02), r);\n\tr = MulAdd(s1_7, M4(-6.224e-02, 9.404e-02, 1.472e-01, -9.855e-02, -2.213e-02, 7.542e-02, 1.146e-01, -1.254e-01, -2.543e-02, -7.808e-02, 1.043e-01, -1.256e-01, -1.819e-01, 8.211e-02, 1.043e-01, -3.737e-02), r);\n\tr = MulAdd(s1_8, M4(-2.377e-03, -5.938e-03, -7.043e-02, 2.431e-02, 6.489e-02, -4.866e-02, -3.791e-02, 7.250e-02, 4.674e-02, 4.103e-02, -6.961e-03, 6.558e-02, -7.019e-02, 2.432e-02, -2.384e-02, 4.730e-02), r);\n\tr = MulAdd(s2_0, M4(-1.052e-01, 1.714e-01, 1.920e-01, 8.695e-03, 1.192e-01, 2.749e-02, 6.753e-03, -7.678e-02, 5.081e-03, 1.391e-02, 5.604e-02, -1.924e-02, -1.572e-02, -2.414e-02, -5.768e-02, -1.455e-02), r);\n\tr = MulAdd(s2_1, M4(-1.224e-01, -9.588e-02, -9.905e-02, 7.559e-03, -9.213e-02, 2.499e-01, 1.938e-01, 9.930e-02, -1.303e-02, -3.614e-02, -5.201e-02, -5.518e-02, 1.356e-02, -1.071e-01, 1.854e-01, -4.967e-02), r);\n\tr = MulAdd(s2_2, M4(3.354e-02, -5.809e-03, -3.624e-02, 4.022e-02, -1.559e-01, -3.162e-02, -1.018e-01, -8.528e-02, 3.540e-02, -1.690e-02, 2.697e-03, 3.760e-02, 8.552e-02, 1.354e-03, 3.932e-02, 2.864e-02), r);\n\tr = MulAdd(s2_3, M4(1.616e-02, 1.046e-01, 1.022e-02, -1.411e-01, -1.700e-02, 2.493e-01, 1.387e-01, -1.636e-02, 3.542e-02, -5.554e-02, -5.075e-02, -3.120e-02, -3.111e-02, 1.070e-01, 4.874e-02, -1.538e-02), r);\n\tr = MulAdd(s2_4, M4(7.770e-02, 3.983e-02, 1.571e-01, -2.401e-02, -9.394e-03, 1.850e-01, 4.855e-01, -3.089e-01, -9.375e-03, 1.036e-02, 7.071e-02, -6.796e-02, 1.023e-01, 1.237e-03, 4.321e-01, -2.218e-01), r);\n\tr = MulAdd(s2_5, M4(-8.584e-02, 4.444e-02, -1.155e-02, 4.413e-02, 2.076e-02, -1.746e-01, -2.055e-01, 1.220e-01, 3.257e-03, 9.627e-03, 1.818e-02, 1.360e-02, 7.268e-02, -2.056e-01, -2.268e-01, 1.396e-01), r);\n\tr = MulAdd(s2_6, M4(1.675e-01, -1.478e-02, 4.312e-02, 8.251e-02, -8.362e-03, 2.056e-02, -5.405e-02, 1.599e-01, -3.400e-02, 1.371e-02, 3.787e-02, 1.585e-02, 8.075e-02, -9.411e-02, 1.153e-01, 9.444e-02), r);\n\tr = MulAdd(s2_7, M4(-6.376e-02, -8.809e-02, 7.907e-03, 1.811e-02, 1.512e-02, 7.979e-02, -1.030e-01, 6.388e-02, -4.510e-02, 3.419e-02, 5.330e-03, 5.456e-02, -1.586e-01, -7.157e-02, 8.941e-02, 1.130e-01), r);\n\tr = MulAdd(s2_8, M4(-2.671e-02, 3.746e-02, -7.254e-02, -2.724e-02, -1.712e-01, -3.450e-02, 2.189e-03, 1.064e-02, 5.478e-02, 6.619e-03, 2.169e-02, 1.149e-03, -1.430e-01, -6.315e-02, 1.675e-01, -8.328e-02), r);\n\tr = MulAdd(s3_0, M4(-2.198e-02, 6.295e-02, -2.934e-02, -1.750e-02, -7.554e-03, 9.127e-03, -2.459e-02, -8.642e-02, -5.513e-02, 1.146e-01, -1.102e-01, 5.863e-02, 5.379e-02, 1.021e-02, 3.317e-02, -5.760e-02), r);\n\tr = MulAdd(s3_1, M4(-1.049e-01, -8.519e-02, 7.863e-02, 1.037e-01, 4.839e-02, 4.829e-02, 6.753e-02, 1.505e-01, -2.484e-01, 2.085e-01, 4.480e-02, -2.862e-02, 4.703e-03, 1.778e-02, -2.094e-02, 1.421e-01), r);\n\tr = MulAdd(s3_2, M4(-8.694e-03, -4.337e-02, 1.965e-03, 1.981e-03, -4.066e-02, -4.434e-02, 3.244e-02, 2.163e-02, -1.357e-01, -1.646e-01, -1.628e-01, 7.207e-02, 8.472e-03, -2.433e-02, 2.950e-02, 8.439e-02), r);\n\tr = MulAdd(s3_3, M4(-5.182e-02, 4.552e-02, -8.238e-02, 1.243e-01, -3.660e-02, 5.286e-02, -4.190e-02, 7.928e-02, 7.770e-02, -8.976e-02, -3.774e-02, -2.373e-01, 3.765e-02, 5.051e-02, -2.150e-02, 1.144e-01), r);\n\tr = MulAdd(s3_4, M4(-9.187e-02, 1.787e-01, 2.883e-01, -2.009e-01, -1.131e-01, 2.180e-01, 1.205e-01, -3.869e-02, -1.832e-01, 2.039e-01, 2.666e-01, -2.910e-01, 1.322e-01, 4.483e-02, 4.458e-02, -1.985e-01), r);\n\tr = MulAdd(s3_5, M4(-3.202e-02, -2.526e-02, -1.951e-02, -1.423e-01, 5.709e-02, -4.307e-02, -4.011e-02, 2.025e-02, -5.903e-02, -7.382e-02, -2.092e-02, -2.200e-01, 8.407e-03, -1.098e-01, 4.387e-02, -9.421e-02), r);\n\tr = MulAdd(s3_6, M4(-5.411e-02, 1.843e-03, 7.369e-02, -1.694e-01, -5.671e-02, -2.274e-02, -1.143e-02, -3.773e-02, 2.281e-01, 2.538e-01, -8.968e-02, 2.383e-01, -4.948e-02, -1.031e-02, -5.387e-03, 6.528e-02), r);\n\tr = MulAdd(s3_7, M4(-1.095e-01, -7.263e-03, -1.382e-01, 1.252e-01, -5.913e-03, 4.645e-02, 5.962e-03, -7.470e-02, 1.801e-01, 2.301e-01, 1.172e-01, 2.978e-02, 3.583e-02, 1.851e-03, 7.472e-02, 7.639e-02), r);\n\tr = MulAdd(s3_8, M4(-4.003e-02, 2.485e-02, -1.482e-02, 3.177e-02, -7.820e-02, 1.081e-02, 2.634e-03, 3.374e-02, 2.240e-01, 5.150e-02, -1.188e-01, 7.844e-02, 1.009e-01, 3.870e-02, 7.445e-02, 4.500e-02), r);\n\tr = MulAdd(s4_0, M4(2.603e-02, 2.744e-02, 1.406e-01, -7.488e-02, 5.131e-02, 9.312e-03, 6.753e-02, -3.920e-02, 2.157e-02, -2.596e-02, -1.122e-01, -3.905e-02, -4.067e-03, -4.047e-02, 8.484e-02, -3.328e-03), r);\n\tr = MulAdd(s4_1, M4(-5.090e-02, -7.445e-03, 1.373e-01, 4.901e-02, 6.356e-02, 5.066e-02, 4.342e-02, -3.282e-02, 6.329e-02, 7.936e-02, -2.880e-03, -7.725e-02, 5.561e-02, -1.732e-01, 3.595e-02, -9.497e-02), r);\n\tr = MulAdd(s4_2, M4(-1.719e-01, 8.029e-02, 8.783e-02, 1.613e-02, 9.234e-02, 1.685e-02, -2.163e-03, 5.326e-03, 1.671e-02, -2.033e-02, 2.985e-02, -6.389e-02, 1.169e-01, -7.354e-02, -1.723e-01, -1.210e-01), r);\n\tr = MulAdd(s4_3, M4(-3.432e-02, -1.843e-02, -9.934e-02, 1.439e-01, 5.726e-02, -4.894e-02, 1.138e-01, 1.118e-03, 1.394e-02, -2.013e-03, -8.812e-02, -1.739e-02, -6.373e-02, -8.443e-02, -1.352e-01, -2.226e-02), r);\n\tr = MulAdd(s4_4, M4(1.253e-02, 7.655e-02, -4.875e-03, 1.001e-01, -9.879e-02, -1.880e-01, -1.733e-01, 2.513e-01, 8.727e-02, -7.056e-02, 7.586e-02, 2.894e-02, 7.644e-02, -2.775e-01, -2.627e-01, 3.969e-01), r);\n\tr = MulAdd(s4_5, M4(2.915e-02, 6.822e-02, 6.869e-02, -3.122e-02, -8.106e-03, 4.366e-02, 4.509e-02, 5.110e-02, -9.694e-02, 2.586e-02, -5.651e-02, 2.758e-02, -4.959e-02, 6.587e-02, 2.136e-01, 8.082e-04), r);\n\tr = MulAdd(s4_6, M4(1.144e-02, -4.841e-02, 4.750e-02, -2.561e-02, -9.700e-02, -4.014e-02, 7.104e-02, -7.030e-02, 4.325e-02, 6.899e-03, -7.420e-02, 1.027e-01, -3.142e-02, 7.203e-02, -2.908e-02, -6.599e-03), r);\n\tr = MulAdd(s4_7, M4(-5.599e-02, -4.933e-02, 1.603e-01, -1.476e-01, 3.497e-02, 4.775e-02, -1.490e-03, 2.038e-02, -6.058e-02, -6.507e-02, -5.224e-02, -8.929e-02, -1.684e-01, -2.646e-02, 9.190e-02, -4.504e-02), r);\n\tr = MulAdd(s4_8, M4(-1.992e-02, 3.383e-02, -5.947e-02, -2.892e-02, 8.796e-02, 3.969e-03, -2.367e-02, 2.041e-02, 7.427e-03, 3.707e-02, -5.194e-02, -5.459e-02, 1.220e-02, 8.075e-03, -1.319e-02, 9.306e-02), r);\n\tr = MulAdd(s5_0, M4(-2.438e-02, 1.312e-02, -4.178e-03, 1.038e-01, -1.106e-02, 6.018e-02, 7.408e-02, -5.235e-02, 1.112e-02, -1.607e-02, -9.098e-02, -8.538e-02, -1.336e-01, 3.770e-02, -7.036e-02, 1.547e-01), r);\n\tr = MulAdd(s5_1, M4(-2.156e-01, 1.579e-02, -1.175e-01, 3.351e-01, 9.171e-02, 5.327e-02, 1.050e-01, -1.305e-02, -6.839e-02, 1.260e-01, 5.867e-02, 5.210e-02, 1.380e-02, -6.424e-02, 1.335e-01, -1.469e-01), r);\n\tr = MulAdd(s5_2, M4(-1.872e-02, -2.200e-02, -7.178e-02, 1.159e-01, 8.871e-03, 1.458e-02, -7.591e-02, 4.722e-02, -1.248e-02, -4.026e-02, -6.267e-02, 1.666e-02, -4.916e-02, -4.396e-03, -2.585e-02, -8.002e-02), r);\n\tr = MulAdd(s5_3, M4(-5.758e-03, 2.092e-04, 6.852e-02, 4.371e-02, -1.390e-04, 2.203e-02, -8.133e-02, 5.463e-02, 8.813e-03, 2.453e-02, 4.666e-02, -1.089e-01, -1.602e-02, 3.621e-03, -6.850e-02, -1.048e-02), r);\n\tr = MulAdd(s5_4, M4(-1.057e-01, -1.195e-01, 1.295e-03, -1.879e-01, 4.307e-02, -3.808e-02, 2.598e-01, 6.048e-02, -7.240e-02, 1.263e-01, 6.689e-02, -6.630e-02, -8.146e-02, -1.077e-01, 1.230e-02, 3.512e-02), r);\n\tr = MulAdd(s5_5, M4(-2.763e-02, 1.045e-01, 9.368e-02, -2.891e-02, -1.262e-01, -2.279e-02, -9.170e-02, -5.480e-03, -6.894e-02, 2.340e-01, 1.316e-01, 9.275e-02, 7.497e-03, 8.773e-02, 1.450e-01, -4.171e-02), r);\n\tr = MulAdd(s5_6, M4(2.338e-02, 2.649e-03, 1.191e-02, 1.114e-01, 8.369e-03, 2.264e-02, 5.923e-02, -8.366e-02, 2.113e-02, -1.026e-01, 4.153e-03, 1.457e-02, 8.502e-03, 8.433e-02, 1.364e-02, 9.216e-02), r);\n\tr = MulAdd(s5_7, M4(2.501e-01, 4.072e-02, 4.366e-02, 1.529e-01, 7.336e-03, -1.041e-03, 6.438e-02, 4.095e-02, 1.695e-01, 4.772e-02, 3.436e-03, -7.710e-02, -1.302e-03, 6.680e-02, 1.340e-02, 7.820e-02), r);\n\tr = MulAdd(s5_8, M4(1.079e-01, -2.753e-02, -8.011e-02, 5.671e-02, 2.691e-02, 1.961e-02, -5.833e-02, 7.675e-02, 4.570e-02, 1.346e-02, -1.609e-02, -1.391e-01, 1.159e-01, -2.085e-03, -4.314e-02, 1.949e-01), r);\n\tr = MulAdd(s6_0, M4(1.760e-02, -5.478e-02, -1.305e-02, -2.815e-02, -5.564e-02, -2.450e-03, -3.298e-02, 1.908e-02, 1.709e-02, -5.423e-02, -7.570e-03, -9.201e-02, -2.826e-02, 6.207e-02, 1.535e-01, -7.470e-03), r);\n\tr = MulAdd(s6_1, M4(-1.485e-02, 1.209e-01, 1.303e-01, -1.392e-01, 4.982e-02, -1.113e-01, -5.884e-02, 1.599e-02, 1.865e-01, 1.140e-01, 3.929e-02, 4.492e-02, -1.871e-01, -5.820e-02, -4.093e-03, -1.097e-01), r);\n\tr = MulAdd(s6_2, M4(-6.840e-02, 6.539e-03, 7.601e-02, 1.108e-01, 6.659e-02, 1.486e-02, -7.902e-02, 3.357e-02, 2.116e-01, 2.026e-02, -7.777e-02, 1.355e-01, -9.171e-02, 1.374e-02, 4.920e-02, 3.573e-02), r);\n\tr = MulAdd(s6_3, M4(-1.232e-02, -4.098e-02, 8.025e-02, -2.882e-02, 4.008e-03, 6.138e-02, -2.122e-01, 1.824e-01, 3.671e-02, -9.563e-02, 9.838e-02, -1.417e-02, 4.926e-02, -1.583e-02, -9.245e-02, 8.478e-02), r);\n\tr = MulAdd(s6_4, M4(-4.521e-02, -2.417e-02, 3.265e-02, -2.099e-03, 6.462e-02, 9.975e-02, 1.865e-02, -3.928e-02, -2.705e-02, -2.945e-01, 1.402e-02, 2.707e-01, 2.218e-01, -1.392e-01, -4.710e-02, 3.750e-02), r);\n\tr = MulAdd(s6_5, M4(8.548e-02, -3.462e-03, -4.457e-02, -8.958e-02, 6.745e-02, 3.801e-02, 3.625e-02, 2.756e-03, 3.118e-02, -7.609e-02, 1.555e-01, 7.602e-02, 1.309e-01, 1.372e-01, -4.452e-02, -1.374e-01), r);\n\tr = MulAdd(s6_6, M4(-8.046e-02, 2.717e-02, -1.334e-01, 3.780e-03, -2.606e-02, -8.003e-02, 1.969e-02, -1.529e-01, -2.649e-02, 7.647e-02, -3.141e-03, 6.980e-02, 2.159e-02, -1.673e-02, -1.130e-01, -1.533e-02), r);\n\tr = MulAdd(s6_7, M4(8.020e-02, -2.917e-02, -1.353e-01, -1.353e-02, -8.177e-02, -5.781e-02, -5.298e-02, 3.476e-02, -2.233e-02, 9.911e-02, -2.051e-02, -4.530e-02, -7.769e-02, 5.231e-02, -1.739e-02, 1.335e-02), r);\n\tr = MulAdd(s6_8, M4(1.209e-01, 2.396e-02, -2.819e-02, 5.762e-02, 1.112e-01, 2.399e-02, 7.932e-02, 1.191e-01, 1.207e-01, 1.213e-02, -4.203e-02, 3.251e-02, -9.532e-02, -1.213e-02, 5.176e-02, 7.673e-03), r);\n\tr = MulAdd(s7_0, M4(-9.347e-02, -2.286e-02, -8.569e-02, 5.922e-02, -1.050e-02, 1.615e-02, -6.755e-02, 8.917e-02, 5.177e-02, -8.341e-02, 8.778e-02, -1.525e-01, -8.610e-02, 8.524e-03, 3.540e-02, 2.440e-01), r);\n\tr = MulAdd(s7_1, M4(-4.814e-02, 3.439e-02, 2.050e-01, -7.712e-02, -5.364e-02, -8.788e-02, -1.331e-01, 1.023e-01, -1.185e-01, -1.326e-01, -3.383e-01, 6.328e-02, -1.424e-01, -1.064e-01, -2.044e-01, -2.384e-02), r);\n\tr = MulAdd(s7_2, M4(-7.306e-02, -9.739e-02, -7.158e-02, -6.684e-02, 1.426e-02, 1.303e-03, 1.836e-02, 4.949e-03, 9.151e-02, 7.248e-02, 7.497e-03, 2.724e-01, -6.642e-03, 6.167e-03, 3.202e-04, -1.025e-03), r);\n\tr = MulAdd(s7_3, M4(-1.537e-02, -9.354e-02, 4.753e-02, 2.086e-02, 2.520e-02, 2.105e-03, -4.706e-02, -4.345e-02, -4.939e-02, 2.905e-02, 9.454e-02, 1.517e-02, 1.502e-02, 4.808e-02, -1.780e-01, 2.719e-01), r);\n\tr = MulAdd(s7_4, M4(-9.833e-02, 3.796e-02, 2.619e-04, 8.518e-02, -8.701e-03, 9.340e-02, 4.374e-02, -1.319e-02, 1.728e-01, 8.227e-02, -1.186e-01, 4.184e-01, 2.972e-01, -3.795e-01, -4.548e-01, 7.204e-02), r);\n\tr = MulAdd(s7_5, M4(-8.860e-02, -2.519e-02, -6.967e-02, -2.032e-02, 6.664e-03, 6.918e-02, 1.030e-01, 1.352e-01, 6.802e-02, -6.259e-04, 3.941e-02, -8.391e-02, 1.389e-01, 1.509e-01, -1.392e-01, 2.699e-01), r);\n\tr = MulAdd(s7_6, M4(3.628e-02, -4.122e-02, -1.470e-01, 2.078e-02, -3.632e-02, -6.245e-02, -5.451e-02, 2.176e-01, 1.773e-03, 3.551e-03, -8.369e-02, -1.283e-03, 7.591e-02, 6.184e-02, 3.148e-02, 4.768e-02), r);\n\tr = MulAdd(s7_7, M4(-1.721e-03, -8.997e-02, -1.011e-01, -2.121e-03, 1.935e-01, 2.244e-02, 3.641e-03, 2.111e-02, -2.126e-01, -1.150e-01, 2.173e-02, -2.666e-01, -2.086e-01, 6.622e-02, 6.155e-03, 1.749e-01), r);\n\tr = MulAdd(s7_8, M4(6.197e-02, -3.724e-02, 5.872e-02, 3.360e-02, 7.349e-02, -1.592e-02, 5.272e-03, -2.045e-02, 9.958e-02, 1.306e-02, -4.321e-02, -2.412e-02, -1.620e-01, -1.109e-01, 2.305e-02, -9.959e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -6.267e-03, 7.941e-03, 4.343e-03, 7.643e-03 };\n\tr = MulAdd(s0_0, M4(1.919e-02, -7.925e-02, 1.392e-03, 7.669e-02, 4.054e-02, -6.717e-02, -2.192e-02, 4.973e-02, -2.415e-02, 3.759e-02, -2.293e-03, 2.573e-02, -5.178e-02, -4.537e-02, -3.029e-03, 8.999e-02), r);\n\tr = MulAdd(s0_1, M4(2.788e-02, 1.615e-01, -9.678e-02, 5.520e-02, 9.562e-02, -3.281e-02, 2.804e-02, -1.793e-03, -4.934e-02, -7.966e-02, 3.871e-02, 1.981e-02, 4.654e-03, -5.576e-02, -1.091e-01, 6.611e-02), r);\n\tr = MulAdd(s0_2, M4(3.869e-02, 7.204e-02, -1.226e-02, 4.877e-02, -8.615e-02, -1.289e-02, -7.947e-03, 9.051e-02, -3.714e-02, 1.279e-02, 6.112e-02, -6.459e-02, -9.514e-03, 1.510e-02, 4.982e-02, -2.587e-02), r);\n\tr = MulAdd(s0_3, M4(-2.231e-03, 2.710e-02, -4.442e-03, 3.404e-02, 1.433e-02, -3.752e-02, -4.109e-02, 1.475e-01, 6.381e-02, 2.638e-02, -1.825e-02, 6.887e-03, -8.052e-02, -2.248e-01, 7.873e-02, -7.883e-03), r);\n\tr = MulAdd(s0_4, M4(3.477e-02, 1.055e-01, 4.676e-02, 4.323e-02, -1.675e-01, 3.107e-01, 1.456e-01, 9.397e-03, -2.638e-01, 2.122e-02, 1.550e-01, -1.148e-01, 1.629e-01, 2.266e-01, 4.130e-03, 1.362e-01), r);\n\tr = MulAdd(s0_5, M4(5.124e-02, -7.977e-03, 2.135e-02, 4.652e-02, 1.013e-01, -4.334e-03, -4.985e-02, 2.150e-02, 1.560e-02, 1.660e-05, 6.906e-02, 8.347e-03, -4.262e-02, 8.572e-02, 8.665e-03, 1.076e-01), r);\n\tr = MulAdd(s0_6, M4(-1.136e-02, 1.071e-02, 6.784e-02, 6.999e-02, -2.730e-02, -4.259e-02, 6.931e-03, 9.898e-02, -5.586e-02, -3.762e-02, -1.208e-01, -6.106e-02, -3.304e-02, -1.983e-02, 1.497e-01, -6.972e-02), r);\n\tr = MulAdd(s0_7, M4(-4.612e-02, 1.210e-01, -1.136e-01, -1.952e-01, -1.998e-02, 1.264e-01, -1.409e-01, 1.728e-02, 9.948e-02, -2.794e-02, 2.301e-01, 6.005e-02, -9.681e-02, 2.339e-01, -1.852e-01, -3.059e-01), r);\n\tr = MulAdd(s0_8, M4(-7.229e-03, 1.016e-02, 5.459e-02, 9.762e-02, -4.530e-02, 9.182e-02, 6.607e-02, 1.315e-01, 2.363e-02, -1.151e-02, 7.571e-03, -1.558e-01, -2.558e-02, -2.231e-02, 1.212e-01, 4.068e-03), r);\n\tr = MulAdd(s1_0, M4(1.568e-03, -6.265e-02, -3.742e-02, 3.680e-02, 4.999e-02, 6.828e-02, 8.172e-03, 6.230e-02, -3.445e-02, 1.025e-02, 6.826e-04, 1.275e-01, -1.594e-02, 8.525e-03, -6.673e-02, 1.133e-01), r);\n\tr = MulAdd(s1_1, M4(7.044e-02, 1.775e-01, 1.069e-01, 1.081e-01, 3.330e-02, -1.107e-01, -4.276e-02, -1.295e-01, 4.836e-02, -5.847e-02, 3.050e-02, 1.332e-01, -7.048e-02, -5.868e-02, 6.968e-02, 1.823e-02), r);\n\tr = MulAdd(s1_2, M4(1.368e-02, 4.063e-02, 1.168e-01, 3.856e-02, 1.630e-03, 1.284e-02, 1.284e-02, 1.563e-03, -5.222e-02, 4.899e-02, -1.622e-02, -1.790e-03, -1.195e-02, 3.564e-02, 4.695e-04, 1.405e-02), r);\n\tr = MulAdd(s1_3, M4(1.593e-03, -3.215e-02, 7.395e-02, -7.133e-02, 7.484e-03, 1.356e-01, -9.938e-02, 3.818e-02, -1.549e-02, 2.184e-02, -1.766e-01, 6.092e-02, -6.955e-02, -6.860e-02, 1.052e-02, 9.732e-02), r);\n\tr = MulAdd(s1_4, M4(1.515e-01, 1.307e-01, -2.911e-01, 3.438e-02, -3.025e-02, -4.919e-02, 1.980e-01, -1.327e-01, -6.091e-02, -1.083e-01, -2.129e-01, -1.964e-01, 1.909e-01, 1.199e-01, 1.115e-01, 1.683e-01), r);\n\tr = MulAdd(s1_5, M4(4.515e-02, 2.601e-02, -1.402e-02, 4.323e-03, 6.401e-02, -4.858e-02, 1.265e-01, -3.195e-03, 1.839e-03, -7.002e-02, -3.491e-02, 2.607e-01, -4.128e-02, -1.300e-02, -1.078e-01, 1.049e-01), r);\n\tr = MulAdd(s1_6, M4(4.349e-03, 2.439e-02, 1.118e-01, -6.831e-02, 1.013e-01, -6.029e-02, -2.105e-02, 3.956e-02, -4.134e-02, -3.690e-02, 1.320e-02, 3.823e-02, -7.655e-02, 4.842e-02, 1.105e-01, 4.895e-02), r);\n\tr = MulAdd(s1_7, M4(-8.619e-02, 1.346e-01, -1.204e-01, -2.886e-02, 8.199e-02, 1.387e-01, 1.203e-01, 2.969e-02, -6.761e-02, -5.815e-02, -8.640e-02, 8.694e-03, -2.326e-02, 1.259e-01, -1.610e-01, -5.322e-02), r);\n\tr = MulAdd(s1_8, M4(-2.302e-02, -1.948e-02, 5.414e-02, 1.489e-01, -3.227e-03, 4.110e-02, 1.508e-01, -7.698e-02, -3.182e-02, 9.852e-02, 1.671e-03, -9.501e-03, -2.827e-02, -5.427e-02, 4.112e-02, 1.148e-01), r);\n\tr = MulAdd(s2_0, M4(-2.653e-02, 1.115e-01, 8.772e-02, -7.303e-02, 7.044e-02, 1.019e-01, -1.103e-02, 4.589e-02, -9.427e-04, 5.866e-02, -1.047e-02, 3.651e-02, 8.821e-02, 3.674e-02, 1.745e-01, -2.124e-01), r);\n\tr = MulAdd(s2_1, M4(-8.092e-03, -1.616e-01, -2.955e-02, -5.523e-02, 2.648e-02, 2.296e-01, 1.767e-01, -1.016e-01, -1.790e-02, -2.629e-02, 6.654e-03, 3.217e-03, -6.323e-02, -8.076e-02, 1.921e-02, -1.112e-01), r);\n\tr = MulAdd(s2_2, M4(-1.211e-02, -2.244e-02, 3.096e-02, 1.203e-01, -2.039e-02, -1.193e-01, 2.880e-02, -3.508e-02, -2.365e-02, -1.497e-02, -4.153e-02, -4.644e-02, 8.814e-02, -7.433e-03, 9.270e-02, -9.398e-02), r);\n\tr = MulAdd(s2_3, M4(-1.593e-01, -1.226e-01, 1.925e-01, -5.361e-02, -8.462e-02, 2.094e-01, 5.406e-02, -1.166e-01, -5.615e-03, 6.467e-02, -9.683e-02, 2.345e-02, -9.391e-02, -1.485e-01, 1.865e-01, -2.633e-02), r);\n\tr = MulAdd(s2_4, M4(-1.018e-01, 1.159e-01, 1.366e-01, 1.475e-01, -1.902e-01, 5.375e-01, -1.445e-01, 1.699e-01, 5.062e-02, 3.539e-02, 5.849e-02, 2.295e-02, 4.430e-02, 5.493e-02, -2.390e-01, 3.035e-01), r);\n\tr = MulAdd(s2_5, M4(2.495e-02, 2.272e-03, 3.160e-02, 3.626e-02, -1.549e-01, -3.333e-02, 2.068e-01, -7.810e-02, 3.562e-02, 2.132e-02, -5.171e-02, -2.567e-02, 3.387e-02, 6.526e-02, 3.167e-01, -5.440e-02), r);\n\tr = MulAdd(s2_6, M4(1.138e-01, -5.602e-02, 1.855e-02, -3.468e-02, -3.070e-02, 6.960e-02, -5.956e-02, -7.770e-02, -4.455e-03, 2.730e-02, -1.527e-02, -3.028e-03, 6.344e-02, 4.287e-02, -1.154e-02, -9.056e-02), r);\n\tr = MulAdd(s2_7, M4(2.557e-02, -7.715e-02, 1.273e-01, 2.954e-02, 8.715e-02, -7.615e-02, -6.236e-02, 1.199e-01, -5.666e-04, 3.760e-02, -1.870e-02, -5.789e-02, -4.855e-02, 1.091e-01, 8.060e-02, -2.648e-01), r);\n\tr = MulAdd(s2_8, M4(-1.947e-02, 1.035e-02, -1.053e-01, -4.396e-02, 1.595e-02, 2.110e-03, 2.073e-02, -2.046e-01, -5.264e-04, -1.792e-03, 3.973e-02, 3.448e-02, 1.158e-01, -9.957e-02, 2.655e-01, -2.842e-01), r);\n\tr = MulAdd(s3_0, M4(-2.472e-02, 1.291e-02, 7.998e-02, 1.255e-01, 1.699e-02, 7.149e-02, -4.039e-02, 8.269e-02, 2.302e-01, 2.576e-01, 7.557e-02, -1.364e-01, -2.455e-02, -2.370e-02, 5.928e-02, 1.647e-02), r);\n\tr = MulAdd(s3_1, M4(9.621e-02, -7.109e-02, -2.288e-03, -9.891e-04, 4.067e-02, 1.103e-02, -7.506e-03, 2.783e-03, 1.373e-01, 1.752e-01, -7.984e-02, 1.528e-01, -4.504e-02, 4.944e-02, 9.320e-02, -2.287e-02), r);\n\tr = MulAdd(s3_2, M4(3.217e-03, -6.484e-03, 7.505e-02, 6.081e-02, -9.189e-03, -1.712e-02, -3.935e-02, 1.990e-02, 4.870e-03, -2.051e-02, 5.300e-02, -8.601e-02, -2.530e-02, 1.760e-02, 3.964e-03, 4.869e-02), r);\n\tr = MulAdd(s3_3, M4(1.133e-01, -4.615e-02, -6.186e-02, -1.925e-01, 5.439e-02, 4.079e-02, -4.954e-03, 7.498e-02, -1.841e-01, 1.061e-01, 1.851e-01, 2.452e-02, -1.568e-02, 1.887e-02, -7.677e-02, -2.606e-02), r);\n\tr = MulAdd(s3_4, M4(-9.875e-02, 1.220e-01, 5.520e-03, -6.611e-03, -3.200e-02, 2.402e-01, -1.204e-01, 9.334e-02, -6.591e-02, 8.266e-02, -1.431e-01, -3.456e-02, -7.360e-03, 5.965e-02, 1.024e-01, 1.577e-01), r);\n\tr = MulAdd(s3_5, M4(-2.872e-03, -1.813e-02, -1.353e-02, 4.279e-02, -2.792e-02, -1.463e-02, 4.871e-02, 4.340e-02, -1.887e-01, 2.890e-02, -6.791e-02, 3.276e-03, -1.405e-02, 2.299e-02, -1.046e-01, -2.743e-02), r);\n\tr = MulAdd(s3_6, M4(-1.520e-02, 9.810e-03, 1.150e-01, -6.546e-02, 2.204e-02, 5.595e-04, -2.268e-02, -1.272e-01, 1.290e-01, -2.221e-02, 4.320e-02, 1.093e-01, -8.626e-02, -1.002e-02, -9.400e-02, -3.952e-02), r);\n\tr = MulAdd(s3_7, M4(-5.020e-02, -4.450e-02, -1.630e-02, 6.843e-02, 9.166e-03, 3.361e-02, -1.517e-02, -5.835e-02, -1.530e-01, 1.442e-01, 8.440e-02, 2.064e-01, 3.143e-02, -2.700e-02, 9.761e-02, 9.864e-03), r);\n\tr = MulAdd(s3_8, M4(5.993e-03, -6.822e-02, -2.974e-02, -1.074e-01, 2.007e-02, -6.954e-03, -1.659e-03, -5.546e-02, 3.050e-02, -7.359e-02, 1.188e-01, 1.087e-01, -9.732e-03, 4.313e-02, -1.093e-01, -1.936e-02), r);\n\tr = MulAdd(s4_0, M4(4.651e-02, 5.734e-02, -4.370e-02, 1.303e-02, -3.990e-02, -5.264e-02, -5.082e-02, -4.679e-02, 2.346e-02, -1.208e-01, 9.092e-02, 4.726e-02, 1.249e-03, -4.455e-02, 6.476e-02, -6.071e-02), r);\n\tr = MulAdd(s4_1, M4(1.019e-01, 7.586e-02, 1.363e-02, 6.434e-04, 4.875e-02, -8.355e-03, -4.770e-02, -4.833e-02, -2.720e-02, 2.546e-02, 6.016e-02, 1.284e-01, -4.937e-02, -2.311e-02, -7.206e-02, -7.221e-02), r);\n\tr = MulAdd(s4_2, M4(7.047e-02, 3.157e-02, -4.150e-02, -1.577e-01, -2.810e-03, 5.189e-02, 3.640e-02, 1.522e-01, 4.752e-02, -5.240e-02, 2.253e-02, 4.064e-02, -1.003e-01, -2.042e-02, 1.207e-01, -7.717e-02), r);\n\tr = MulAdd(s4_3, M4(-2.889e-02, -1.341e-02, -4.202e-02, -7.141e-02, 1.300e-01, 1.342e-01, -1.211e-01, -8.244e-02, 1.337e-02, -7.162e-02, 1.231e-02, -3.629e-02, 1.921e-02, -6.773e-02, -7.825e-02, 9.541e-03), r);\n\tr = MulAdd(s4_4, M4(-7.117e-02, 1.538e-01, 1.473e-01, 1.600e-03, -2.881e-01, -2.482e-01, 1.880e-01, -1.685e-01, 1.229e-01, 1.265e-01, -4.801e-02, 4.958e-02, 1.078e-01, -7.656e-02, -1.398e-01, 7.078e-02), r);\n\tr = MulAdd(s4_5, M4(8.922e-02, 2.713e-02, -1.388e-01, -2.041e-02, 2.752e-02, 1.451e-01, 2.079e-01, 9.657e-03, 7.133e-02, 6.334e-02, -1.286e-02, -1.663e-01, -1.750e-02, 9.428e-02, 3.086e-02, -3.345e-03), r);\n\tr = MulAdd(s4_6, M4(-1.315e-02, 4.226e-03, 1.794e-02, -3.194e-02, 1.228e-02, 9.752e-02, -3.953e-02, -8.082e-02, 4.687e-02, -3.622e-02, 1.084e-02, 3.371e-02, -3.397e-02, -7.870e-03, 9.080e-02, 5.172e-02), r);\n\tr = MulAdd(s4_7, M4(-5.259e-02, 1.199e-01, -3.419e-02, -7.587e-02, 4.479e-02, -1.376e-01, 2.607e-01, 1.360e-01, -3.254e-03, -3.870e-02, -8.618e-02, 3.234e-02, -1.817e-02, -3.851e-03, -1.145e-01, -1.043e-01), r);\n\tr = MulAdd(s4_8, M4(-5.326e-02, 1.129e-02, 3.093e-03, -1.843e-02, 1.400e-02, 7.148e-02, 2.607e-03, -6.451e-02, 6.076e-03, 3.317e-03, -2.717e-02, 5.046e-02, -8.958e-03, 7.050e-03, 4.207e-02, 8.876e-02), r);\n\tr = MulAdd(s5_0, M4(2.586e-02, -2.349e-02, 2.932e-02, -5.166e-02, -7.897e-03, -7.043e-03, 2.976e-02, 6.619e-02, 4.217e-02, -4.423e-02, -1.386e-02, -4.745e-02, -5.444e-02, -5.169e-02, 7.885e-02, -1.084e-01), r);\n\tr = MulAdd(s5_1, M4(8.738e-03, 7.152e-02, 7.845e-02, -2.044e-01, -8.195e-03, 5.205e-02, -4.538e-02, 3.715e-02, 9.693e-02, 7.824e-02, 2.084e-02, -2.676e-02, -4.720e-03, 1.107e-02, -1.449e-01, 1.888e-01), r);\n\tr = MulAdd(s5_2, M4(-5.442e-02, 4.418e-02, 1.137e-01, 1.856e-02, -1.403e-02, 1.813e-02, 9.986e-02, 7.905e-02, -5.202e-02, -2.849e-02, -1.480e-02, -6.858e-02, -3.246e-02, -1.286e-02, 8.856e-02, -1.391e-01), r);\n\tr = MulAdd(s5_3, M4(-1.563e-02, -4.548e-02, 1.092e-01, 1.109e-01, -5.316e-02, -3.517e-02, 3.365e-02, -6.571e-02, 5.587e-02, 3.823e-02, -6.547e-02, -4.291e-02, -1.775e-02, -1.006e-01, -2.846e-02, -5.472e-02), r);\n\tr = MulAdd(s5_4, M4(-3.610e-01, -9.005e-02, -6.767e-03, -4.964e-02, 4.135e-02, 5.995e-02, -4.848e-02, -2.138e-01, -8.977e-02, 1.354e-01, 9.247e-02, -9.705e-02, -4.618e-02, -1.068e-01, -2.381e-01, -7.140e-02), r);\n\tr = MulAdd(s5_5, M4(-7.878e-02, 3.430e-02, -1.457e-01, -2.780e-02, 2.820e-02, 1.043e-01, 2.156e-01, 1.127e-03, 1.850e-01, 9.750e-02, 4.406e-02, -1.432e-02, -9.345e-02, 1.137e-01, -1.125e-01, 6.013e-03), r);\n\tr = MulAdd(s5_6, M4(-4.722e-02, 3.935e-02, -6.742e-02, -3.255e-02, 2.962e-02, -2.233e-02, 7.806e-02, 3.130e-03, -2.012e-02, -1.018e-02, -1.552e-01, -7.894e-03, -4.820e-03, -4.500e-04, 1.913e-02, 5.634e-02), r);\n\tr = MulAdd(s5_7, M4(4.246e-02, -4.113e-02, 1.959e-01, 1.608e-01, 2.533e-02, 7.140e-02, 3.818e-02, 2.888e-02, 1.182e-01, 3.901e-02, 5.552e-02, 5.373e-03, 3.537e-02, 3.370e-02, -6.001e-02, 6.745e-02), r);\n\tr = MulAdd(s5_8, M4(-2.812e-02, -7.215e-02, -6.015e-02, -7.893e-02, -2.153e-02, 3.129e-02, 2.694e-02, 1.638e-02, -9.557e-03, 5.442e-02, -1.113e-01, -4.262e-02, 2.120e-02, 2.377e-02, 4.144e-02, 9.725e-02), r);\n\tr = MulAdd(s6_0, M4(6.638e-02, 1.293e-01, -3.926e-02, -1.474e-02, -2.119e-02, -9.355e-02, 1.058e-02, 3.320e-02, 4.711e-03, 1.100e-02, -3.412e-02, 4.699e-02, 7.911e-03, 3.650e-02, 9.713e-03, 3.565e-03), r);\n\tr = MulAdd(s6_1, M4(-1.812e-02, 1.561e-01, -2.708e-02, -6.048e-02, 3.477e-02, -1.129e-01, -8.815e-02, -1.316e-01, 6.414e-02, 1.344e-01, 1.704e-01, 1.308e-01, 1.101e-02, -2.568e-02, 5.194e-02, -1.636e-01), r);\n\tr = MulAdd(s6_2, M4(2.318e-02, -1.935e-02, -8.109e-02, -1.403e-01, 6.967e-03, 6.255e-02, 8.782e-02, 4.827e-02, -4.230e-02, 4.459e-02, 1.309e-02, -1.259e-01, 1.007e-03, -9.404e-03, -3.368e-02, -5.957e-02), r);\n\tr = MulAdd(s6_3, M4(1.722e-02, -3.367e-02, -3.620e-02, 5.109e-02, -4.373e-02, -6.842e-02, -5.616e-02, 8.769e-03, 3.662e-02, 1.232e-01, 1.555e-02, 8.083e-02, -3.390e-02, -6.567e-02, 3.499e-02, -3.386e-02), r);\n\tr = MulAdd(s6_4, M4(3.609e-02, 2.455e-01, 1.008e-01, 1.145e-01, -2.302e-01, -8.653e-02, 1.462e-01, 2.283e-01, 8.103e-02, 2.725e-02, -1.431e-01, 1.184e-01, -1.233e-01, -1.137e-03, -4.487e-02, 8.764e-02), r);\n\tr = MulAdd(s6_5, M4(-1.343e-01, -6.138e-02, -7.601e-02, 9.977e-02, -4.357e-02, 2.132e-01, 1.662e-02, -4.598e-03, 5.994e-02, 8.297e-02, 4.904e-03, -1.470e-01, 4.775e-02, 6.281e-02, -6.231e-02, 1.806e-02), r);\n\tr = MulAdd(s6_6, M4(-3.251e-02, -1.148e-01, -4.861e-03, 5.381e-02, 1.793e-02, -6.575e-02, 2.040e-01, 8.277e-02, -4.758e-02, 2.284e-03, -3.811e-02, 9.341e-02, 2.977e-02, -6.401e-02, 6.955e-02, 5.232e-02), r);\n\tr = MulAdd(s6_7, M4(2.862e-02, -7.521e-02, 1.306e-02, 7.799e-02, 5.028e-02, -7.196e-02, 8.181e-02, -2.600e-01, 9.961e-02, 2.078e-02, -1.647e-02, 1.198e-01, -4.754e-03, -4.463e-02, 1.081e-01, 8.039e-03), r);\n\tr = MulAdd(s6_8, M4(3.599e-02, -5.464e-02, 2.697e-02, 3.897e-02, 3.239e-02, 8.551e-02, -2.349e-02, 8.737e-02, 3.774e-02, 2.686e-02, -3.910e-02, -4.101e-02, -4.239e-02, -5.345e-03, -1.815e-02, -1.052e-02), r);\n\tr = MulAdd(s7_0, M4(6.361e-02, 1.666e-02, 6.952e-02, -7.429e-02, 2.763e-02, -3.904e-02, -4.123e-02, -4.483e-02, 4.661e-02, 1.431e-01, -1.064e-01, 2.846e-02, -1.981e-02, -7.592e-02, -8.377e-02, 2.062e-02), r);\n\tr = MulAdd(s7_1, M4(1.801e-02, 4.869e-02, -1.355e-01, -8.545e-02, 3.710e-02, -1.189e-01, 2.334e-02, -1.174e-01, 2.970e-01, -2.013e-01, 2.017e-01, -2.807e-01, 6.321e-03, -1.310e-01, 6.355e-02, -3.919e-02), r);\n\tr = MulAdd(s7_2, M4(-6.371e-02, -5.002e-02, -7.557e-02, -1.677e-01, -1.730e-02, 3.528e-02, -1.888e-02, 3.005e-02, -4.489e-02, 1.365e-01, -1.371e-01, -2.878e-03, -3.842e-02, -7.498e-03, 4.025e-02, 1.424e-01), r);\n\tr = MulAdd(s7_3, M4(-2.998e-02, -1.091e-01, 4.644e-02, -7.317e-02, -3.092e-02, 5.669e-02, -5.759e-02, 2.531e-02, -2.543e-02, 1.224e-01, -3.314e-02, 7.981e-02, -3.281e-02, -2.382e-01, -6.380e-02, 5.425e-02), r);\n\tr = MulAdd(s7_4, M4(9.577e-02, 1.862e-01, -8.069e-02, 3.945e-02, -3.530e-01, 1.752e-01, 1.975e-01, -9.724e-02, 1.410e-01, 1.204e-01, 1.678e-01, 3.374e-01, 5.233e-02, -1.467e-01, -1.658e-01, 1.150e-01), r);\n\tr = MulAdd(s7_5, M4(-1.004e-03, -1.027e-01, 4.311e-02, -1.368e-01, 9.128e-02, 2.698e-02, -9.869e-03, -2.861e-01, 1.421e-01, 9.835e-02, 1.079e-01, -1.416e-01, 9.540e-02, 2.884e-02, 1.069e-02, 1.558e-01), r);\n\tr = MulAdd(s7_6, M4(7.539e-02, -7.728e-02, 2.320e-02, -2.850e-02, -4.240e-02, 6.454e-02, 6.304e-02, -1.285e-01, 2.739e-04, -2.594e-02, 7.202e-02, -3.416e-02, -2.743e-02, -1.126e-01, -3.591e-02, 1.367e-01), r);\n\tr = MulAdd(s7_7, M4(-7.965e-03, -6.042e-02, 1.168e-02, -1.293e-01, 2.336e-02, 2.117e-01, 7.645e-02, 2.310e-02, -9.815e-02, 1.744e-04, -1.813e-01, -3.124e-02, -1.347e-01, -1.265e-01, -1.931e-01, 1.153e-01), r);\n\tr = MulAdd(s7_8, M4(2.452e-02, 3.323e-02, -4.251e-02, -1.928e-01, 1.504e-02, 2.942e-02, -2.489e-02, -1.146e-01, 4.450e-02, -2.973e-02, 9.084e-02, -1.068e-01, 3.174e-02, -7.544e-02, 1.781e-01, -6.189e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.684e-03, 7.998e-03, -4.249e-03, -9.809e-03 };\n\tr = MulAdd(s0_0, M4(3.242e-02, -3.043e-02, 1.724e-03, -2.338e-02, -1.597e-01, -2.985e-02, -1.658e-02, 1.889e-02, 3.976e-02, 2.116e-02, 7.945e-02, -3.781e-02, 7.506e-02, -4.380e-03, 3.268e-02, 2.745e-02), r);\n\tr = MulAdd(s0_1, M4(-1.011e-01, 6.166e-02, -3.718e-02, 1.284e-02, 7.213e-02, -2.187e-02, 1.332e-02, 8.331e-02, 1.490e-01, -2.006e-02, 3.534e-02, 3.973e-02, -5.176e-02, -1.232e-02, 8.295e-03, -4.230e-02), r);\n\tr = MulAdd(s0_2, M4(7.887e-03, -1.568e-02, -1.862e-02, -1.451e-02, -8.544e-02, -1.506e-02, 3.749e-02, 2.105e-02, 8.908e-04, 2.095e-02, 3.198e-02, -4.995e-02, -2.329e-02, 4.272e-02, -1.463e-02, 1.879e-02), r);\n\tr = MulAdd(s0_3, M4(1.510e-01, 6.255e-02, 1.248e-02, -1.567e-02, 1.991e-02, 1.207e-01, 7.475e-02, -5.247e-02, -3.974e-02, 1.786e-02, 6.710e-02, -2.180e-02, 3.164e-01, -1.499e-01, 3.093e-02, 4.123e-02), r);\n\tr = MulAdd(s0_4, M4(-5.023e-02, 7.105e-02, -2.487e-01, 9.555e-02, -1.562e-01, 2.903e-01, 1.295e-01, 1.401e-02, 1.188e-01, 1.839e-01, -1.013e-01, -1.282e-02, -1.435e-02, -1.721e-01, 2.703e-01, -1.190e-01), r);\n\tr = MulAdd(s0_5, M4(3.173e-02, -1.025e-01, 4.968e-02, 3.047e-02, 7.803e-02, -3.848e-02, 6.896e-02, 5.594e-02, -2.399e-02, 1.367e-02, 1.396e-02, -6.260e-02, -1.713e-01, -2.355e-02, 2.674e-02, -1.170e-03), r);\n\tr = MulAdd(s0_6, M4(-1.532e-02, -5.737e-02, 2.050e-02, 5.561e-02, -3.862e-02, -6.803e-02, -2.710e-03, -3.916e-02, 1.681e-01, -4.161e-02, 1.610e-02, 6.376e-02, -1.845e-01, 1.477e-01, -3.059e-02, -1.877e-01), r);\n\tr = MulAdd(s0_7, M4(3.860e-03, 1.489e-01, -1.101e-01, 1.475e-02, -2.062e-02, 1.160e-01, -4.358e-02, 4.451e-02, -9.945e-02, -1.303e-01, 3.533e-02, -2.152e-01, 2.757e-01, 1.130e-01, 3.199e-03, 1.912e-01), r);\n\tr = MulAdd(s0_8, M4(1.013e-02, -7.638e-02, 1.709e-02, 1.420e-02, -8.507e-02, -1.362e-01, -1.667e-01, 1.247e-01, -1.274e-02, -6.610e-03, 1.401e-02, -8.954e-03, -1.633e-01, 3.407e-02, -8.177e-03, -5.574e-02), r);\n\tr = MulAdd(s1_0, M4(-1.150e-01, 2.966e-02, 4.007e-02, -7.870e-03, -1.109e-01, -1.495e-02, -2.973e-03, 4.372e-02, 6.264e-02, -1.931e-02, 5.305e-02, 3.212e-02, -1.566e-01, -8.504e-03, -3.634e-02, -9.955e-03), r);\n\tr = MulAdd(s1_1, M4(-1.646e-01, -2.965e-02, 1.954e-02, -3.065e-03, 2.236e-02, 2.265e-02, 5.543e-02, 1.480e-01, 2.759e-02, -6.297e-02, 1.368e-02, -5.885e-03, 1.066e-02, -3.342e-02, -1.769e-01, 5.950e-02), r);\n\tr = MulAdd(s1_2, M4(4.900e-03, -3.373e-02, -6.463e-02, 1.797e-02, 9.084e-02, -2.802e-02, 7.399e-03, -1.786e-02, -4.209e-02, 2.269e-02, 8.133e-02, 6.693e-02, -1.182e-01, -2.003e-02, -5.869e-02, 5.395e-03), r);\n\tr = MulAdd(s1_3, M4(2.159e-01, 1.300e-01, -1.812e-02, 1.410e-02, -4.700e-02, 1.181e-01, 5.018e-02, -4.040e-02, -1.996e-02, 1.707e-02, 3.876e-02, -3.725e-02, 2.240e-01, -5.119e-02, 3.179e-02, -2.737e-02), r);\n\tr = MulAdd(s1_4, M4(5.540e-02, -4.359e-02, -3.364e-01, 2.532e-01, 1.279e-01, 4.092e-01, 4.303e-02, -2.805e-02, -3.769e-02, -5.191e-02, -1.827e-01, -4.137e-03, -7.552e-02, 5.388e-02, 3.330e-01, -2.527e-01), r);\n\tr = MulAdd(s1_5, M4(3.848e-02, -2.629e-02, -2.358e-01, 1.037e-01, 1.382e-01, 3.943e-02, 9.022e-02, -9.599e-02, -1.610e-01, -4.049e-02, 1.917e-02, 4.318e-02, -2.772e-02, -1.126e-01, 1.029e-01, -8.321e-02), r);\n\tr = MulAdd(s1_6, M4(1.567e-02, 2.873e-02, -2.628e-02, -6.763e-02, 1.361e-01, -4.261e-02, -9.321e-03, 3.030e-02, -1.324e-01, -1.161e-02, 1.182e-02, -8.724e-02, -1.285e-01, 1.195e-01, 5.453e-03, -1.037e-01), r);\n\tr = MulAdd(s1_7, M4(1.467e-01, -3.218e-02, 1.390e-02, 9.988e-02, -5.050e-02, 3.019e-01, -1.035e-02, 1.410e-01, -9.858e-02, -8.520e-02, 1.264e-01, -1.111e-01, 6.724e-02, -1.416e-02, -1.929e-01, 1.696e-01), r);\n\tr = MulAdd(s1_8, M4(-4.329e-02, -1.751e-02, -2.354e-02, -5.241e-02, -8.490e-03, -6.171e-02, -3.452e-02, 2.030e-02, -8.949e-02, 6.865e-03, 1.079e-01, 1.670e-02, -1.447e-01, 7.597e-03, -3.787e-02, -1.937e-02), r);\n\tr = MulAdd(s2_0, M4(-1.686e-01, -2.961e-02, -8.625e-02, 2.167e-02, -1.101e-01, -2.648e-02, 4.794e-03, -3.042e-02, -3.449e-02, 2.160e-02, -6.026e-03, 2.033e-02, 1.714e-01, 3.822e-02, -3.474e-02, 7.751e-02), r);\n\tr = MulAdd(s2_1, M4(6.028e-03, -4.305e-02, 2.270e-03, 3.999e-02, 2.744e-02, 1.034e-02, 1.535e-02, 1.389e-01, -2.836e-02, -1.379e-02, 4.342e-02, -2.250e-02, 7.039e-02, 9.988e-02, 1.646e-01, -3.523e-02), r);\n\tr = MulAdd(s2_2, M4(-9.132e-02, -1.591e-02, 4.453e-02, -3.060e-02, -9.097e-02, -4.457e-02, 2.598e-02, -3.109e-02, 6.325e-02, -2.730e-02, -1.516e-02, 4.366e-03, 1.352e-01, 8.085e-03, -3.540e-02, -2.945e-02), r);\n\tr = MulAdd(s2_3, M4(1.619e-01, 4.548e-02, -1.683e-02, -1.876e-01, 1.306e-01, 1.099e-01, 1.160e-01, 3.330e-02, 2.466e-02, -2.324e-02, 3.287e-02, -2.988e-02, 2.974e-01, 6.584e-02, 8.339e-02, -3.905e-02), r);\n\tr = MulAdd(s2_4, M4(1.930e-02, 6.519e-02, 6.865e-02, -7.566e-02, 6.272e-02, 2.777e-01, 2.815e-01, -1.267e-01, 2.525e-02, -1.705e-02, 9.735e-02, 1.840e-02, -6.507e-03, 2.442e-02, 1.873e-01, 4.203e-02), r);\n\tr = MulAdd(s2_5, M4(-3.090e-02, 1.316e-02, 5.238e-02, -2.696e-02, -2.512e-01, 1.003e-02, -5.793e-02, 4.695e-02, -1.130e-02, -4.208e-03, -2.160e-02, -2.077e-02, -2.198e-01, 1.261e-01, 3.839e-02, 1.232e-01), r);\n\tr = MulAdd(s2_6, M4(2.053e-03, -3.048e-02, -2.046e-02, -7.591e-03, 1.779e-01, 8.231e-04, 1.298e-02, 4.006e-02, -1.434e-02, 2.252e-02, -2.371e-03, -2.140e-02, -1.074e-01, 4.943e-02, 3.980e-02, 4.531e-02), r);\n\tr = MulAdd(s2_7, M4(-1.625e-01, -5.116e-02, -1.598e-02, -7.413e-02, -5.324e-02, -1.362e-01, -1.930e-02, 3.562e-01, 5.185e-02, 2.173e-02, 1.555e-02, -1.232e-03, -4.592e-02, 1.353e-01, 6.000e-02, 1.579e-01), r);\n\tr = MulAdd(s2_8, M4(5.657e-02, -4.500e-02, 7.839e-02, 2.178e-02, 7.723e-02, 1.228e-01, -1.940e-02, -1.431e-01, -1.076e-02, -3.345e-02, -3.213e-03, -3.475e-02, 4.939e-02, 1.538e-01, 3.908e-02, -1.416e-01), r);\n\tr = MulAdd(s3_0, M4(-1.069e-01, -1.324e-01, 6.342e-02, 2.082e-04, 3.583e-02, -3.487e-02, 2.995e-02, -2.249e-02, -1.052e-01, -8.666e-02, -4.117e-01, 2.250e-01, -1.018e-02, 1.228e-02, 2.876e-02, -1.193e-02), r);\n\tr = MulAdd(s3_1, M4(9.583e-03, -8.960e-02, -5.485e-02, 3.417e-02, -5.225e-02, 2.194e-02, 5.862e-02, 1.720e-02, -1.366e-01, -1.365e-01, -1.698e-01, -1.327e-01, 1.010e-01, -5.445e-03, -2.382e-02, 4.554e-03), r);\n\tr = MulAdd(s3_2, M4(-1.024e-01, -6.450e-03, 4.188e-02, 2.180e-02, -1.434e-02, -2.351e-02, 1.839e-02, 1.035e-02, -7.543e-02, 4.912e-03, -2.013e-01, 1.131e-01, -3.632e-02, 3.108e-02, -2.070e-02, 1.023e-03), r);\n\tr = MulAdd(s3_3, M4(-1.625e-01, -2.299e-01, -2.886e-01, 1.418e-01, -5.067e-02, 1.427e-02, -8.063e-02, -3.631e-02, 2.188e-04, 1.541e-01, -9.286e-02, -4.220e-02, 1.546e-01, -1.059e-01, 5.016e-02, 4.690e-02), r);\n\tr = MulAdd(s3_4, M4(9.926e-02, -7.945e-02, 7.997e-02, -7.018e-02, -2.057e-02, 5.219e-02, -5.427e-02, 2.626e-03, 2.019e-01, -4.701e-02, 2.854e-01, -1.967e-01, -2.431e-01, 5.754e-02, 8.832e-02, -3.383e-02), r);\n\tr = MulAdd(s3_5, M4(-7.371e-03, -3.424e-02, 1.090e-02, -6.494e-02, -5.179e-02, 1.272e-02, -5.241e-02, -2.506e-02, -3.050e-03, 5.860e-02, 4.395e-02, -1.695e-01, 4.741e-03, -6.107e-02, 1.171e-02, -5.669e-02), r);\n\tr = MulAdd(s3_6, M4(2.198e-02, 7.570e-02, -3.538e-02, -1.042e-01, 8.800e-02, 4.772e-02, -1.502e-02, 2.290e-02, 2.151e-01, -1.611e-01, -1.154e-02, 8.626e-02, 7.106e-02, -1.341e-02, -1.330e-02, 5.211e-02), r);\n\tr = MulAdd(s3_7, M4(-3.916e-02, -1.489e-01, 3.314e-02, -7.587e-03, -2.311e-02, -4.384e-02, -7.661e-03, 3.772e-02, 1.526e-01, -2.412e-01, 7.222e-02, 2.626e-01, -2.176e-02, 3.308e-02, -1.065e-01, 7.574e-02), r);\n\tr = MulAdd(s3_8, M4(1.587e-01, 7.943e-03, 3.881e-02, -7.019e-02, -1.458e-02, -2.718e-03, 3.520e-02, -1.612e-02, 5.317e-02, 7.138e-03, -9.154e-03, -2.594e-02, 1.313e-02, -4.044e-02, 3.335e-02, 9.018e-02), r);\n\tr = MulAdd(s4_0, M4(-9.390e-02, -2.957e-02, 3.991e-02, -1.721e-02, -4.073e-03, -5.301e-03, 3.996e-03, -2.481e-02, 3.193e-02, -2.475e-02, 4.997e-02, 1.875e-02, 1.144e-01, 2.920e-02, 2.555e-02, 1.171e-02), r);\n\tr = MulAdd(s4_1, M4(-1.798e-01, -5.046e-02, -5.546e-02, 9.627e-02, 1.348e-01, -7.918e-03, 2.355e-02, 7.920e-03, -1.839e-02, -5.136e-03, 1.009e-01, -7.109e-02, 1.589e-02, 6.215e-02, 1.106e-01, -8.872e-03), r);\n\tr = MulAdd(s4_2, M4(1.272e-01, -1.213e-01, -4.277e-03, 6.587e-02, -2.318e-02, -6.901e-03, 4.194e-02, -1.869e-02, -4.644e-02, -1.502e-02, -1.545e-02, 7.140e-03, -2.498e-02, 3.137e-02, 8.960e-02, -2.048e-02), r);\n\tr = MulAdd(s4_3, M4(7.322e-02, -1.178e-01, -2.634e-02, 8.765e-02, -3.430e-01, -1.100e-03, -2.190e-03, 2.631e-02, 1.021e-01, -3.667e-02, 3.094e-03, 4.869e-03, 1.616e-01, -6.794e-02, -2.141e-02, 3.300e-02), r);\n\tr = MulAdd(s4_4, M4(-7.055e-02, 1.225e-01, 1.412e-02, 1.065e-02, 2.057e-01, -8.213e-02, -4.030e-02, 9.385e-02, -1.705e-01, -2.334e-02, -8.216e-02, 7.482e-02, -1.352e-01, -2.363e-02, -6.218e-02, 2.513e-01), r);\n\tr = MulAdd(s4_5, M4(1.639e-01, -1.603e-01, -3.466e-02, -8.816e-03, 4.738e-02, 2.710e-03, -1.057e-02, 1.490e-02, -2.733e-02, -6.313e-03, 4.574e-02, 2.334e-02, 1.030e-01, 1.220e-02, 1.563e-02, 1.519e-01), r);\n\tr = MulAdd(s4_6, M4(-6.611e-02, 4.803e-02, -3.370e-02, -2.136e-02, 1.686e-01, 3.868e-02, -2.811e-02, 1.314e-01, -6.832e-02, -6.332e-02, 3.891e-03, 1.078e-03, 1.259e-02, 1.347e-02, -1.795e-02, -1.823e-02), r);\n\tr = MulAdd(s4_7, M4(-4.383e-02, 3.919e-02, -1.702e-02, 6.133e-02, 2.650e-02, 1.528e-01, 1.077e-02, -1.136e-01, -3.415e-02, -4.393e-02, -1.535e-02, 5.751e-03, 7.887e-02, 8.357e-02, -1.169e-01, 9.759e-02), r);\n\tr = MulAdd(s4_8, M4(5.286e-02, -1.319e-01, 2.557e-02, -6.891e-02, 8.569e-03, -1.494e-02, -8.862e-02, 6.980e-02, 2.563e-03, 3.462e-02, 9.554e-02, -3.793e-02, -5.212e-02, 1.955e-02, -3.071e-02, -3.454e-02), r);\n\tr = MulAdd(s5_0, M4(-1.768e-01, 2.204e-02, 2.787e-02, -2.393e-02, -1.002e-02, 2.389e-02, 3.614e-02, -1.781e-02, -2.353e-02, -2.875e-02, 4.366e-03, 1.779e-03, 1.665e-01, -4.700e-02, -6.477e-02, 3.770e-02), r);\n\tr = MulAdd(s5_1, M4(-2.880e-02, 1.783e-02, -4.043e-02, 6.825e-02, -1.876e-02, 5.088e-02, 1.608e-02, 1.315e-02, 3.018e-02, -1.662e-02, 4.605e-03, -5.020e-02, -1.377e-01, 5.353e-02, 8.571e-02, -1.120e-01), r);\n\tr = MulAdd(s5_2, M4(4.789e-02, -5.843e-02, 3.200e-02, 4.193e-02, -6.985e-02, 1.890e-02, -4.449e-02, -1.330e-02, -2.758e-02, -2.345e-02, 3.961e-02, 6.886e-02, 5.490e-02, 4.636e-03, 4.952e-02, 1.662e-03), r);\n\tr = MulAdd(s5_3, M4(2.187e-02, -7.181e-02, 7.356e-03, 3.356e-02, 4.571e-02, -4.116e-02, -4.134e-02, 3.689e-02, -5.024e-02, 2.879e-02, 4.638e-02, 1.015e-02, 2.537e-02, 4.648e-02, -8.458e-03, -4.430e-02), r);\n\tr = MulAdd(s5_4, M4(-6.847e-02, 3.472e-01, 1.254e-01, 3.952e-02, 6.795e-02, 9.090e-02, -2.754e-02, -7.743e-02, -2.736e-02, 6.506e-02, 2.538e-02, 4.489e-02, -1.526e-02, 2.073e-02, -7.722e-02, 5.576e-02), r);\n\tr = MulAdd(s5_5, M4(2.726e-01, -1.925e-01, 7.170e-02, -7.306e-02, -1.318e-01, 5.286e-02, -8.710e-03, -1.056e-01, 1.901e-01, -1.255e-01, 5.971e-02, -6.112e-02, 1.548e-01, -3.938e-02, 3.478e-02, 3.970e-02), r);\n\tr = MulAdd(s5_6, M4(1.714e-01, 4.680e-03, 4.453e-02, 7.159e-02, 2.744e-02, 8.789e-02, -3.985e-03, -6.283e-02, -5.795e-02, -8.652e-02, 7.511e-03, 1.671e-02, 6.817e-02, 7.215e-02, 1.972e-02, -5.465e-03), r);\n\tr = MulAdd(s5_7, M4(-7.153e-02, 3.829e-02, 6.513e-03, 5.031e-02, -4.022e-02, 1.541e-01, -1.352e-01, 8.070e-02, -8.733e-02, 3.275e-02, 1.219e-01, -9.393e-02, 6.974e-02, 1.334e-02, -5.241e-02, 9.083e-02), r);\n\tr = MulAdd(s5_8, M4(7.991e-02, -1.213e-01, 2.898e-02, 2.543e-02, -1.676e-02, 8.872e-04, -1.376e-02, -1.789e-02, 5.687e-02, -1.101e-01, 1.071e-01, -1.883e-02, -4.311e-02, -2.708e-02, -3.975e-02, -3.926e-02), r);\n\tr = MulAdd(s6_0, M4(-1.041e-01, -1.478e-02, 3.713e-02, -8.654e-03, -1.223e-02, -2.924e-02, -9.693e-03, 2.120e-02, 4.728e-02, -2.734e-02, 7.005e-02, 6.289e-03, -1.467e-01, -3.108e-02, 2.606e-03, 1.035e-02), r);\n\tr = MulAdd(s6_1, M4(-8.825e-02, 6.671e-04, -2.186e-01, 4.616e-02, 7.066e-02, 2.789e-02, 7.979e-02, 5.889e-03, 1.313e-01, 7.202e-02, 1.629e-01, -1.344e-01, -8.374e-03, -5.702e-02, -6.884e-02, 9.055e-02), r);\n\tr = MulAdd(s6_2, M4(2.092e-01, -4.789e-02, -2.173e-02, -4.804e-02, -1.003e-01, 3.567e-02, 1.570e-02, 1.596e-02, -4.941e-02, -2.362e-02, 1.388e-01, 4.125e-02, 2.788e-02, 3.079e-02, 1.342e-02, -2.604e-03), r);\n\tr = MulAdd(s6_3, M4(-2.535e-02, 4.078e-03, 8.193e-02, 3.778e-03, 3.107e-01, 5.877e-02, -8.162e-02, -1.081e-02, -4.131e-02, -2.058e-02, -6.159e-02, -4.414e-02, 1.622e-01, -1.059e-01, 4.606e-02, -5.873e-02), r);\n\tr = MulAdd(s6_4, M4(4.429e-02, 4.277e-02, 3.192e-02, -8.978e-02, -1.494e-01, 7.105e-02, 2.000e-02, 7.918e-02, -1.043e-01, -3.371e-01, -2.302e-01, 2.748e-01, -7.409e-02, 1.661e-02, 3.416e-02, -6.733e-02), r);\n\tr = MulAdd(s6_5, M4(5.293e-03, -2.558e-02, 2.730e-02, -1.202e-02, 1.339e-02, 6.815e-02, 5.157e-02, 9.234e-03, 3.241e-02, -1.237e-02, -2.822e-01, 3.455e-02, 1.194e-01, 2.901e-02, 6.449e-02, -4.839e-02), r);\n\tr = MulAdd(s6_6, M4(6.621e-02, -9.204e-02, 4.267e-02, -2.218e-02, -5.260e-02, 6.895e-02, 3.258e-02, -5.115e-02, 4.922e-02, -5.462e-03, -1.338e-02, -5.627e-02, 1.055e-02, -6.708e-02, 9.224e-03, 2.283e-02), r);\n\tr = MulAdd(s6_7, M4(-6.565e-02, -3.862e-02, 1.656e-02, -1.221e-02, 1.148e-01, 3.873e-02, -4.293e-02, -7.591e-02, -5.572e-02, 2.340e-03, -1.108e-02, 1.175e-01, 1.409e-02, -7.847e-02, 1.175e-02, -4.514e-02), r);\n\tr = MulAdd(s6_8, M4(-2.909e-03, 5.116e-02, 7.008e-02, -1.192e-01, -5.601e-02, 5.023e-02, -6.509e-02, 1.439e-01, 6.913e-03, -3.456e-03, 1.591e-02, -1.092e-01, 2.563e-03, -2.662e-03, -2.068e-02, -3.506e-02), r);\n\tr = MulAdd(s7_0, M4(1.868e-01, -1.714e-02, -3.043e-02, 3.179e-02, 8.869e-02, -3.393e-02, -4.821e-02, -3.797e-02, -2.281e-01, 1.769e-02, -4.862e-02, 3.733e-03, -1.018e-01, -7.720e-02, 8.861e-03, 6.126e-02), r);\n\tr = MulAdd(s7_1, M4(3.822e-02, 3.344e-02, -4.502e-02, 2.524e-02, 1.802e-01, 3.652e-02, -2.133e-02, 2.703e-02, 1.495e-01, -4.717e-02, -5.456e-02, 8.936e-02, -5.424e-02, -5.804e-02, -7.314e-02, 3.841e-02), r);\n\tr = MulAdd(s7_2, M4(1.188e-01, -9.731e-03, -3.472e-03, -1.714e-02, 5.064e-02, 3.891e-02, -1.604e-02, -5.796e-02, 1.003e-01, -8.472e-02, -3.450e-02, 1.285e-02, -3.742e-02, 1.612e-03, -3.046e-02, -1.759e-02), r);\n\tr = MulAdd(s7_3, M4(1.873e-01, 1.052e-01, 2.580e-02, -1.778e-02, -7.024e-02, 1.224e-01, 1.048e-01, -1.203e-01, 2.369e-01, 1.081e-01, 3.423e-02, 3.875e-02, 2.634e-02, -1.966e-01, -6.384e-02, -3.763e-02), r);\n\tr = MulAdd(s7_4, M4(4.489e-02, -9.274e-02, 1.093e-01, 1.736e-02, -9.947e-02, 2.066e-02, -1.510e-02, 2.141e-02, -2.248e-01, -8.135e-02, 1.751e-01, 7.487e-02, -5.824e-02, -3.883e-02, -5.598e-02, -2.840e-03), r);\n\tr = MulAdd(s7_5, M4(1.493e-01, 3.032e-02, 3.953e-02, -3.044e-02, 1.585e-01, 1.179e-03, -6.519e-02, -6.421e-02, 5.900e-02, -2.839e-02, -3.216e-02, -3.307e-02, -6.550e-02, 1.080e-01, 4.691e-02, 2.331e-02), r);\n\tr = MulAdd(s7_6, M4(-6.866e-03, -3.810e-03, 3.708e-02, -2.128e-02, 1.840e-01, 3.419e-02, 7.918e-02, 3.062e-01, -8.909e-02, -7.120e-03, 4.227e-03, -1.091e-01, -3.904e-02, -3.161e-02, 7.149e-02, 2.966e-02), r);\n\tr = MulAdd(s7_7, M4(4.679e-02, 2.399e-02, 7.689e-02, -9.124e-02, 2.010e-01, -1.263e-01, 1.106e-01, -4.843e-02, -3.990e-02, -4.025e-02, 7.679e-02, 4.350e-02, 8.031e-02, -1.385e-01, -2.760e-02, 1.475e-01), r);\n\tr = MulAdd(s7_8, M4(1.304e-01, 1.269e-02, 5.142e-02, -1.304e-01, 1.175e-02, -7.449e-03, -9.245e-02, 1.372e-01, 3.384e-02, 7.022e-02, 8.292e-02, -4.169e-02, -9.016e-02, 1.304e-01, -1.643e-01, -2.188e-02), r);\n\treturn r;\n}\n\nvoid Pass7(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 8\n//!DESC conv7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1, t2, t3\n//!OUT t4, t5, t6, t7\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -3.895e-03, -8.356e-03, 7.020e-03, 2.656e-03 };\n\tr = MulAdd(s0_0, M4(7.928e-02, 4.822e-02, 5.804e-04, -4.495e-02, -3.156e-02, -4.858e-02, 1.014e-01, 2.752e-02, 9.953e-02, 4.994e-02, -5.578e-02, -2.008e-02, 3.357e-02, 3.335e-02, 4.004e-03, 3.210e-02), r);\n\tr = MulAdd(s0_1, M4(-5.454e-02, 1.172e-01, 5.500e-02, 3.605e-02, -4.624e-02, -1.258e-01, -5.372e-02, 5.674e-02, -1.013e-01, -3.818e-02, 3.052e-02, 5.311e-02, -1.847e-01, 1.806e-01, 4.878e-02, 2.028e-02), r);\n\tr = MulAdd(s0_2, M4(1.427e-01, 3.897e-02, -3.087e-02, -2.563e-02, -5.991e-02, -5.467e-02, 2.661e-02, 5.379e-02, 9.090e-02, -7.985e-02, -4.141e-02, -1.746e-02, -1.910e-02, -1.430e-02, 3.502e-02, 2.449e-02), r);\n\tr = MulAdd(s0_3, M4(9.980e-02, 2.403e-02, 1.376e-01, -3.144e-02, 5.065e-02, 2.243e-02, -6.782e-02, -1.758e-02, 6.117e-02, -6.080e-02, -2.983e-02, -5.149e-02, 4.535e-04, -3.357e-02, -9.829e-03, 4.028e-02), r);\n\tr = MulAdd(s0_4, M4(7.933e-02, 1.366e-01, -1.287e-01, -1.279e-01, -1.537e-01, -3.683e-01, 3.433e-01, 2.802e-01, -3.495e-02, -4.771e-02, -1.293e-01, -1.279e-01, -3.095e-01, -6.632e-02, -9.007e-02, 5.759e-02), r);\n\tr = MulAdd(s0_5, M4(7.745e-02, 1.275e-01, 8.537e-03, -1.231e-01, -2.843e-02, -6.560e-02, 1.503e-02, 4.679e-02, 7.496e-02, -1.226e-03, 6.703e-02, -3.926e-02, 7.192e-02, 4.207e-02, -4.325e-02, 2.096e-02), r);\n\tr = MulAdd(s0_6, M4(-3.992e-02, 1.466e-02, -1.168e-02, 9.433e-03, -4.607e-03, -3.028e-02, 8.283e-02, 7.753e-03, -3.722e-02, -4.383e-02, -7.033e-03, 3.636e-02, -2.195e-02, -4.262e-02, 3.918e-02, 3.968e-02), r);\n\tr = MulAdd(s0_7, M4(9.177e-02, 3.323e-02, 7.248e-02, 2.168e-02, -7.738e-02, -1.661e-01, -1.904e-01, 2.629e-03, -6.617e-02, -4.853e-02, -6.812e-02, 5.823e-02, -1.688e-01, 1.137e-01, -3.627e-02, -7.605e-02), r);\n\tr = MulAdd(s0_8, M4(-2.016e-02, 4.008e-02, -4.592e-02, -3.231e-02, 5.997e-02, -3.119e-02, 7.739e-02, 8.729e-02, -1.062e-02, -1.966e-02, -3.977e-02, -9.933e-03, 3.076e-02, 3.503e-02, -5.243e-02, -5.442e-02), r);\n\tr = MulAdd(s1_0, M4(6.632e-03, -2.218e-02, -8.032e-02, -2.854e-02, -8.480e-02, -5.885e-02, 2.241e-02, 7.530e-03, 1.836e-01, -4.341e-02, 6.516e-02, 4.234e-02, -4.015e-02, -1.274e-02, 2.232e-03, -4.298e-03), r);\n\tr = MulAdd(s1_1, M4(-1.793e-01, 9.310e-02, 1.594e-02, 7.977e-04, -6.755e-02, -7.043e-02, -6.245e-02, -4.357e-02, -4.572e-02, -8.671e-02, -1.630e-01, -1.412e-01, 7.826e-02, -6.310e-02, -9.400e-02, -6.938e-02), r);\n\tr = MulAdd(s1_2, M4(6.265e-02, -3.672e-02, 5.506e-03, 4.493e-03, -1.238e-01, -2.876e-02, 1.421e-02, 1.911e-02, -2.735e-02, 1.067e-01, -2.680e-02, -8.603e-02, 3.457e-02, 4.358e-02, -1.305e-02, 6.127e-03), r);\n\tr = MulAdd(s1_3, M4(-5.895e-02, -3.985e-02, 8.656e-02, -3.214e-02, 1.907e-03, 5.553e-02, -1.673e-01, -4.178e-02, 2.555e-02, 5.746e-03, 9.090e-02, 2.383e-02, 3.308e-02, 2.390e-02, 2.692e-02, 1.934e-02), r);\n\tr = MulAdd(s1_4, M4(1.077e-01, 8.866e-02, -1.509e-01, -7.764e-02, -3.423e-01, -1.899e-01, 2.406e-01, 9.025e-02, 1.675e-01, -8.327e-02, 9.804e-02, -4.304e-01, -1.195e-01, 6.765e-02, 1.466e-01, 2.829e-02), r);\n\tr = MulAdd(s1_5, M4(2.812e-03, -4.669e-03, -6.641e-02, -2.064e-02, 1.053e-01, -1.186e-01, -2.315e-02, 5.758e-02, 5.627e-02, -8.880e-02, -1.077e-01, -6.856e-02, -7.529e-03, 3.375e-02, -1.046e-03, -5.482e-02), r);\n\tr = MulAdd(s1_6, M4(-1.219e-01, 3.633e-03, -7.520e-02, 2.118e-02, -8.152e-02, -2.245e-02, -2.174e-02, -2.503e-02, -5.606e-02, 6.988e-03, -4.448e-02, 5.467e-02, 2.982e-02, -4.799e-02, -1.716e-02, 2.838e-02), r);\n\tr = MulAdd(s1_7, M4(7.319e-02, 6.005e-03, 1.300e-02, 4.553e-02, -1.912e-01, -8.610e-02, -1.208e-01, 2.906e-02, -7.969e-02, -3.817e-02, 1.276e-01, 8.493e-02, -1.141e-01, 9.560e-03, -9.636e-02, 2.154e-02), r);\n\tr = MulAdd(s1_8, M4(-3.762e-02, -5.653e-04, -5.481e-02, -1.965e-02, 2.146e-02, -5.393e-03, 3.041e-02, 6.961e-02, 1.217e-02, 5.822e-03, -2.191e-02, -4.545e-02, 3.931e-02, -1.587e-03, -1.719e-02, 1.047e-02), r);\n\tr = MulAdd(s2_0, M4(2.373e-02, 2.247e-02, -6.849e-04, 1.556e-02, -7.684e-02, 2.018e-02, -9.347e-02, -4.673e-02, -3.720e-03, -9.546e-02, 5.003e-02, 8.953e-04, -3.589e-02, -2.696e-02, 3.924e-03, 2.185e-02), r);\n\tr = MulAdd(s2_1, M4(1.047e-01, 7.446e-03, 2.984e-02, -2.656e-02, 1.127e-01, -1.081e-01, -9.928e-02, -5.862e-02, 1.805e-03, -3.810e-02, -4.034e-04, 4.211e-02, 4.344e-02, -1.064e-01, 4.765e-02, -9.679e-02), r);\n\tr = MulAdd(s2_2, M4(6.379e-02, 5.960e-02, 3.886e-02, -2.070e-03, 2.553e-02, 2.428e-02, -5.641e-02, -1.192e-02, -3.963e-02, -4.780e-03, -2.298e-02, -2.753e-02, 1.223e-02, -2.535e-03, 4.660e-03, -6.159e-02), r);\n\tr = MulAdd(s2_3, M4(1.149e-01, 2.259e-02, 2.713e-03, 3.219e-03, 2.691e-03, -5.508e-02, -1.100e-02, 3.262e-02, -1.204e-01, -2.375e-02, -2.582e-02, 2.569e-02, 1.195e-01, 4.853e-02, -2.514e-01, 6.026e-02), r);\n\tr = MulAdd(s2_4, M4(-8.884e-02, -4.142e-02, 1.428e-01, 2.254e-01, 4.768e-02, -1.388e-01, 2.105e-01, 1.763e-01, 3.213e-02, 5.192e-02, -3.433e-02, -5.249e-03, -3.116e-02, 1.466e-01, -1.701e-03, 3.028e-01), r);\n\tr = MulAdd(s2_5, M4(3.556e-02, 2.233e-02, 8.829e-03, -9.730e-03, 6.758e-03, 3.418e-02, -7.578e-03, 7.302e-04, -3.096e-02, -2.904e-02, -4.008e-02, -4.763e-02, -8.620e-02, -1.078e-01, 7.608e-02, 9.286e-02), r);\n\tr = MulAdd(s2_6, M4(7.097e-03, -3.942e-03, 8.524e-03, -1.820e-02, 1.128e-02, -6.837e-04, -1.842e-02, -3.144e-02, -7.628e-02, -2.179e-02, 5.451e-03, 3.382e-02, 3.599e-01, -1.985e-02, 3.210e-01, -1.446e-01), r);\n\tr = MulAdd(s2_7, M4(2.867e-02, 3.294e-02, -4.666e-03, 3.856e-02, 1.143e-01, 4.184e-02, 5.582e-02, 8.814e-03, -7.175e-02, 2.063e-02, 2.047e-02, 2.778e-02, 3.098e-01, 4.170e-02, 2.116e-01, -9.749e-02), r);\n\tr = MulAdd(s2_8, M4(-2.635e-02, 4.096e-02, 3.253e-03, -3.084e-03, 3.638e-02, 8.699e-03, 1.527e-02, -1.289e-03, 6.092e-02, 9.191e-03, -3.761e-03, -2.226e-02, 4.413e-02, 4.219e-02, 3.322e-02, -1.974e-02), r);\n\tr = MulAdd(s3_0, M4(-3.994e-02, 8.130e-02, -3.198e-02, -1.669e-02, -8.029e-03, -6.796e-02, -6.583e-02, -3.012e-02, 9.142e-03, -1.086e-01, 5.108e-02, 4.155e-02, 5.000e-02, -9.506e-03, 8.482e-03, 1.235e-02), r);\n\tr = MulAdd(s3_1, M4(-1.659e-01, 2.043e-02, 4.550e-02, 5.520e-02, 1.052e-01, -5.562e-02, -7.151e-02, -9.228e-02, -1.309e-01, -1.847e-02, 4.913e-02, 4.541e-02, -8.032e-02, 3.619e-02, -2.746e-02, 1.785e-02), r);\n\tr = MulAdd(s3_2, M4(7.671e-02, 2.484e-02, 6.241e-02, -1.613e-02, 6.753e-02, -1.390e-02, -6.519e-03, 3.430e-02, 5.440e-02, 2.179e-02, -5.459e-02, -3.557e-02, -5.773e-02, -1.613e-02, 1.931e-02, 1.466e-02), r);\n\tr = MulAdd(s3_3, M4(6.151e-02, 8.306e-04, 8.367e-02, 2.388e-02, 9.813e-02, -5.005e-02, -6.053e-03, 8.916e-02, 5.964e-02, -1.682e-02, -2.338e-02, 1.274e-01, 7.861e-02, 3.454e-02, 1.468e-03, 5.767e-03), r);\n\tr = MulAdd(s3_4, M4(9.943e-02, -9.606e-02, -6.648e-02, 1.613e-01, 1.685e-01, -2.279e-01, 1.675e-01, 2.100e-01, -3.538e-01, -2.136e-01, 1.959e-02, -2.794e-01, -1.435e-01, 1.942e-02, -3.614e-02, -7.109e-03), r);\n\tr = MulAdd(s3_5, M4(-3.280e-02, 3.541e-02, -1.235e-02, -2.704e-02, -1.406e-01, 3.437e-02, 3.113e-02, 3.525e-02, 2.545e-01, -3.342e-02, -9.375e-02, -1.359e-01, 6.469e-03, -3.424e-02, 7.331e-03, 2.436e-02), r);\n\tr = MulAdd(s3_6, M4(-4.128e-02, -9.223e-03, -3.515e-02, -3.574e-03, 8.755e-02, 1.804e-02, 5.316e-02, 4.868e-02, -2.996e-02, -6.481e-02, 1.053e-01, 5.608e-02, -5.896e-02, 8.228e-03, -9.137e-03, -1.011e-02), r);\n\tr = MulAdd(s3_7, M4(3.142e-02, 3.920e-02, 5.861e-03, 7.950e-03, 1.942e-01, 1.906e-02, 2.305e-03, -1.533e-02, -5.578e-01, 4.189e-02, -2.218e-01, 1.115e-01, 5.651e-02, 2.233e-02, -1.435e-02, -2.548e-03), r);\n\tr = MulAdd(s3_8, M4(-7.958e-02, 4.222e-02, -8.568e-03, -1.070e-02, -6.441e-03, 7.074e-03, 3.075e-03, 4.157e-02, 2.458e-01, 4.872e-02, 7.116e-02, -3.461e-02, 4.319e-02, -5.893e-03, 3.991e-02, 8.141e-03), r);\n\tr = MulAdd(s4_0, M4(3.418e-02, -9.294e-02, -1.456e-01, -4.444e-02, 6.170e-02, 1.936e-02, 6.358e-02, 2.248e-02, 3.492e-02, -8.125e-02, 2.340e-02, 5.791e-02, 4.087e-02, 1.529e-02, -2.263e-02, 7.531e-03), r);\n\tr = MulAdd(s4_1, M4(4.576e-02, -1.343e-01, -2.147e-01, -1.267e-01, -6.335e-02, 9.448e-02, 3.801e-02, 1.031e-02, 1.429e-02, -9.072e-04, 4.151e-03, -7.928e-03, -8.103e-02, 8.228e-02, 1.606e-02, -9.433e-03), r);\n\tr = MulAdd(s4_2, M4(-9.938e-02, 2.235e-02, -2.479e-02, -5.497e-02, -5.530e-02, -5.077e-02, 9.537e-02, 7.495e-02, 3.749e-02, -6.759e-04, -7.712e-02, -3.873e-02, 5.519e-02, -1.195e-03, -4.125e-02, -9.629e-03), r);\n\tr = MulAdd(s4_3, M4(-4.165e-02, 1.206e-02, -3.113e-01, 7.691e-02, 1.725e-01, 4.061e-02, 6.413e-02, -4.162e-02, 3.836e-02, -1.379e-02, 6.306e-02, 6.000e-02, 5.685e-02, 6.323e-02, 3.697e-02, -5.615e-02), r);\n\tr = MulAdd(s4_4, M4(-3.059e-01, -1.780e-01, -2.509e-01, -6.061e-02, 1.590e-01, 8.690e-02, -8.801e-02, -1.086e-01, 2.244e-01, 1.915e-02, -1.168e-02, 3.451e-02, -1.122e-01, 8.629e-02, -2.466e-02, -1.351e-01), r);\n\tr = MulAdd(s4_5, M4(8.602e-02, -9.071e-02, -8.880e-02, 1.006e-01, -1.470e-01, 2.896e-02, 8.073e-02, 5.723e-02, 5.191e-02, -3.617e-03, 4.879e-03, -3.711e-02, 9.028e-02, 3.305e-02, 1.294e-02, -3.785e-02), r);\n\tr = MulAdd(s4_6, M4(6.079e-02, -2.926e-02, -3.995e-02, 4.857e-02, -1.966e-02, -8.598e-03, -4.296e-02, -2.273e-02, -1.563e-02, -3.625e-02, 2.455e-02, 5.626e-02, -5.617e-02, 1.546e-02, -5.664e-02, 7.118e-03), r);\n\tr = MulAdd(s4_7, M4(6.910e-02, 5.679e-02, -1.621e-02, -1.419e-01, -4.303e-02, -3.255e-02, -3.813e-03, -1.900e-02, -1.566e-01, -1.576e-02, -3.888e-02, 1.545e-02, 1.173e-04, 1.922e-02, 1.461e-02, -3.308e-02), r);\n\tr = MulAdd(s4_8, M4(3.567e-02, -3.772e-02, -8.326e-02, -3.235e-02, -5.440e-02, -5.952e-02, -1.039e-02, 2.460e-03, 2.784e-03, 3.484e-03, 3.995e-02, 4.645e-03, 5.301e-02, -4.191e-03, 8.651e-03, -4.718e-03), r);\n\tr = MulAdd(s5_0, M4(7.415e-03, 7.788e-04, -5.342e-02, 1.154e-02, -9.967e-02, -9.571e-03, -2.785e-02, 1.109e-02, -1.993e-02, 5.363e-02, 3.610e-02, 4.299e-02, 4.654e-02, 5.421e-03, -5.148e-02, -1.616e-02), r);\n\tr = MulAdd(s5_1, M4(-1.031e-01, 1.385e-02, 9.443e-02, -3.626e-02, 6.729e-02, -1.415e-02, 1.051e-01, -9.966e-03, 2.624e-01, -1.492e-02, -1.411e-01, -2.688e-02, -1.547e-03, 1.719e-02, -1.118e-01, -9.640e-02), r);\n\tr = MulAdd(s5_2, M4(6.631e-02, -2.274e-02, -1.288e-02, 1.491e-03, 2.390e-02, -3.272e-02, -9.256e-03, -4.146e-02, -2.112e-01, 8.644e-02, 4.942e-02, -4.721e-03, -7.967e-02, -4.386e-04, -6.615e-02, -3.745e-02), r);\n\tr = MulAdd(s5_3, M4(-3.943e-02, -2.252e-02, -8.333e-02, -1.378e-02, 8.017e-02, 2.037e-03, 8.727e-03, -2.196e-02, -1.023e-01, -3.603e-02, -2.292e-01, 1.195e-02, 7.777e-02, 8.270e-03, 1.038e-02, -4.713e-02), r);\n\tr = MulAdd(s5_4, M4(-1.392e-01, -8.142e-03, -1.491e-01, -1.440e-01, 3.064e-01, -1.491e-01, -1.275e-01, -3.076e-01, 3.082e-01, 3.986e-01, 4.476e-02, 3.037e-01, -3.026e-01, 9.497e-02, 9.989e-02, -2.319e-01), r);\n\tr = MulAdd(s5_5, M4(-2.376e-02, -3.715e-03, 6.960e-02, 2.098e-02, 1.130e-01, 3.826e-02, 3.829e-03, -2.412e-02, -2.564e-01, -4.456e-04, -5.662e-02, 4.287e-02, 4.126e-02, 3.119e-04, 3.600e-02, 6.596e-03), r);\n\tr = MulAdd(s5_6, M4(1.803e-02, 1.501e-02, -4.666e-03, 9.316e-03, 2.560e-02, -2.137e-03, 2.721e-02, 2.083e-02, -9.668e-02, -1.302e-02, -2.248e-02, 1.082e-01, -1.994e-03, -2.949e-02, -7.086e-02, -4.480e-02), r);\n\tr = MulAdd(s5_7, M4(-5.131e-03, -2.336e-02, -1.813e-02, -3.692e-02, 2.265e-02, -3.541e-02, 5.478e-02, -8.799e-02, -4.778e-03, 1.823e-02, 4.562e-02, 1.143e-01, -9.672e-02, -7.293e-03, -4.857e-02, -6.498e-02), r);\n\tr = MulAdd(s5_8, M4(2.416e-02, -1.683e-02, -1.683e-02, -9.997e-03, -1.394e-02, -6.069e-02, -3.461e-02, -4.660e-02, -1.422e-01, 1.486e-02, -1.097e-02, -2.757e-03, -5.731e-04, -1.561e-02, -5.748e-02, -2.341e-02), r);\n\tr = MulAdd(s6_0, M4(-1.249e-02, 3.845e-02, 5.718e-03, 1.434e-02, 6.750e-02, -5.721e-02, -8.473e-02, 5.111e-02, -5.758e-02, 1.557e-02, -3.896e-02, -1.285e-02, 1.352e-02, -5.283e-03, 2.060e-02, 4.702e-02), r);\n\tr = MulAdd(s6_1, M4(2.872e-02, 7.152e-02, 1.209e-02, 3.583e-02, 7.593e-02, -7.288e-03, -1.075e-01, -9.605e-02, -1.324e-01, 4.844e-02, 2.521e-04, -4.092e-02, -8.412e-02, -3.797e-02, -1.491e-01, -1.859e-01), r);\n\tr = MulAdd(s6_2, M4(-6.098e-03, -4.373e-02, -7.894e-03, 3.482e-02, -7.495e-02, -3.480e-02, 3.454e-02, 1.662e-02, 5.705e-02, -4.046e-02, 3.114e-02, 6.800e-02, 4.427e-02, 1.664e-02, -2.560e-02, 2.520e-02), r);\n\tr = MulAdd(s6_3, M4(-7.703e-02, 1.120e-01, 1.198e-02, -1.646e-03, -1.605e-02, 1.075e-02, 5.630e-02, -7.171e-02, -5.739e-02, -1.108e-01, -3.192e-02, 3.843e-02, -2.070e-03, -1.209e-01, 7.992e-03, -6.664e-03), r);\n\tr = MulAdd(s6_4, M4(-1.091e-01, 1.296e-02, -2.629e-02, -4.328e-02, 1.123e-01, 2.018e-02, 1.686e-01, -1.707e-01, 1.179e-01, 1.125e-01, -1.860e-01, -1.666e-01, 1.630e-01, 5.831e-03, -4.884e-02, 1.543e-02), r);\n\tr = MulAdd(s6_5, M4(6.148e-02, -3.357e-02, 4.384e-02, 1.890e-02, -5.325e-02, -1.146e-02, 2.605e-02, 5.642e-02, 3.314e-02, -1.044e-03, 2.765e-02, 1.145e-01, -3.975e-02, -3.602e-02, 6.113e-02, 2.219e-02), r);\n\tr = MulAdd(s6_6, M4(-4.629e-03, 6.955e-02, -3.905e-03, -2.236e-02, -2.049e-02, 4.068e-02, 1.674e-03, -1.239e-02, 7.260e-02, -3.747e-03, 1.437e-02, 3.210e-02, -2.625e-03, -5.696e-02, 1.303e-02, 4.426e-02), r);\n\tr = MulAdd(s6_7, M4(4.351e-02, 3.086e-02, 2.064e-02, -2.015e-02, -5.198e-02, 4.068e-02, 5.444e-02, -1.383e-02, 2.095e-01, 3.082e-02, 9.118e-02, -5.258e-02, -1.734e-02, -2.578e-02, 3.836e-02, 5.330e-03), r);\n\tr = MulAdd(s6_8, M4(-1.897e-02, 3.367e-03, -7.593e-02, 5.187e-02, -4.588e-02, 3.120e-04, -4.319e-03, -2.105e-02, -1.110e-01, 3.202e-02, -4.200e-03, -1.821e-02, -4.845e-02, 2.483e-02, 1.924e-02, -8.146e-03), r);\n\tr = MulAdd(s7_0, M4(-5.626e-02, 6.364e-03, -1.765e-02, 1.029e-02, 1.255e-01, 7.597e-02, -4.705e-02, 2.156e-02, -1.286e-01, -8.622e-02, -5.481e-02, 6.097e-03, -5.013e-02, 2.833e-02, -9.929e-03, -1.467e-02), r);\n\tr = MulAdd(s7_1, M4(5.623e-02, 2.189e-02, 2.068e-02, 2.171e-02, 1.321e-02, 2.415e-01, 2.451e-02, 1.200e-02, -2.508e-01, 5.658e-03, -5.360e-02, -2.568e-02, 1.899e-01, 4.632e-02, -2.182e-01, -1.004e-02), r);\n\tr = MulAdd(s7_2, M4(-6.903e-02, 1.023e-02, -8.371e-03, 9.310e-03, -8.910e-02, -7.477e-02, -4.199e-03, -3.107e-02, 1.413e-01, -2.929e-02, -1.731e-02, 8.115e-02, -1.723e-01, 3.023e-02, 5.058e-02, 1.814e-02), r);\n\tr = MulAdd(s7_3, M4(-9.143e-02, 3.089e-02, -3.683e-02, -3.701e-02, 5.979e-02, -5.476e-02, 7.731e-02, -3.719e-02, -8.051e-02, 4.463e-03, 1.348e-01, 6.575e-02, 4.512e-02, -1.238e-03, 1.535e-01, 1.107e-02), r);\n\tr = MulAdd(s7_4, M4(2.022e-02, -5.338e-03, -3.378e-02, -5.679e-02, -6.939e-02, -2.564e-01, -2.188e-02, -1.236e-01, -3.304e-01, 2.622e-01, -3.185e-02, -4.603e-01, 3.060e-01, 2.514e-03, 7.321e-02, -4.819e-02), r);\n\tr = MulAdd(s7_5, M4(4.261e-02, -3.187e-02, -5.567e-02, 9.319e-04, -5.670e-04, -2.831e-02, -9.990e-02, -1.360e-02, -1.421e-01, 7.289e-02, 1.848e-02, -1.327e-02, -1.597e-01, 2.097e-02, -1.113e-02, 3.342e-02), r);\n\tr = MulAdd(s7_6, M4(-3.785e-02, 2.305e-02, -4.138e-02, -6.811e-03, 3.313e-03, 2.111e-02, -4.657e-02, 2.641e-02, 1.650e-02, 5.746e-03, -8.368e-03, 4.657e-03, 4.895e-02, -1.558e-02, 1.198e-02, 3.993e-02), r);\n\tr = MulAdd(s7_7, M4(-3.501e-02, 4.877e-03, 5.460e-02, -6.116e-02, 1.592e-02, 1.768e-02, 5.892e-02, -1.304e-02, -1.658e-02, 4.944e-02, -3.337e-02, -3.778e-02, -4.636e-02, 2.160e-02, 6.470e-02, 1.165e-03), r);\n\tr = MulAdd(s7_8, M4(1.307e-02, -2.179e-03, 3.846e-02, -1.762e-02, -5.784e-02, -3.612e-03, -4.913e-02, -1.284e-02, 1.709e-02, 4.493e-02, 3.720e-02, -4.552e-03, -8.815e-03, 4.349e-02, 3.794e-02, -3.816e-03), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 4.997e-03, 6.270e-03, 8.008e-03, -5.621e-03 };\n\tr = MulAdd(s0_0, M4(-1.111e-01, -3.175e-04, 1.594e-02, -2.178e-02, 6.486e-02, 3.492e-02, -5.328e-02, -8.276e-02, 8.186e-03, -2.455e-02, 3.569e-02, -3.164e-03, -6.172e-02, -3.503e-02, -1.473e-02, -3.031e-02), r);\n\tr = MulAdd(s0_1, M4(8.157e-02, -1.452e-02, -6.915e-02, 1.309e-02, -6.614e-03, -5.674e-02, -1.737e-02, 2.184e-02, 1.774e-01, 4.415e-02, -1.119e-01, -9.674e-02, -8.765e-02, 1.167e-01, 4.151e-04, -4.010e-02), r);\n\tr = MulAdd(s0_2, M4(-1.075e-01, 1.050e-01, 9.690e-02, 4.260e-02, 2.686e-02, 4.955e-02, 3.839e-02, -1.783e-02, 4.947e-02, 1.239e-01, 4.785e-02, 4.874e-02, 5.631e-02, 5.338e-02, 1.938e-02, 1.017e-02), r);\n\tr = MulAdd(s0_3, M4(2.327e-04, 4.618e-02, -8.965e-02, -2.445e-02, 1.397e-02, 1.034e-01, 3.686e-02, 4.144e-02, 7.913e-02, -1.383e-01, 2.294e-02, 7.601e-02, -1.200e-01, -1.116e-01, -8.621e-02, 8.035e-02), r);\n\tr = MulAdd(s0_4, M4(-2.977e-02, -5.948e-02, 2.419e-02, 9.913e-02, 1.271e-01, -1.856e-02, 1.742e-01, -6.541e-03, 8.201e-02, -4.481e-02, -3.520e-03, 1.960e-01, -3.483e-01, -1.156e-01, 2.198e-01, -2.455e-02), r);\n\tr = MulAdd(s0_5, M4(1.596e-02, -9.178e-03, -5.511e-02, -5.448e-02, 6.330e-02, -5.342e-02, -3.141e-02, 3.838e-02, -1.185e-01, 2.116e-01, 4.580e-02, -4.053e-02, -1.246e-01, -1.606e-01, -1.765e-02, 4.382e-03), r);\n\tr = MulAdd(s0_6, M4(4.333e-02, 3.341e-02, 1.798e-02, -2.895e-02, -3.774e-02, -1.775e-02, -1.273e-02, -4.692e-02, 3.420e-02, -7.636e-04, 3.939e-02, 1.415e-02, 4.825e-02, -2.230e-03, -1.590e-02, 8.207e-02), r);\n\tr = MulAdd(s0_7, M4(2.826e-02, -2.563e-03, -6.100e-02, -7.286e-02, -3.553e-02, -1.938e-01, -3.848e-02, -5.982e-02, -8.330e-03, -1.613e-01, 1.356e-02, 1.181e-01, -5.626e-02, 2.223e-02, -4.682e-02, 2.161e-01), r);\n\tr = MulAdd(s0_8, M4(-1.068e-02, 2.957e-02, -7.559e-02, -2.765e-03, -5.642e-02, -6.326e-02, -9.012e-02, -1.650e-01, -7.645e-02, 2.591e-02, 3.277e-02, 7.611e-02, 4.265e-02, -4.556e-02, 2.665e-02, -4.761e-03), r);\n\tr = MulAdd(s1_0, M4(-8.369e-03, -7.104e-02, -4.053e-03, 2.696e-02, 6.111e-02, -1.225e-02, 7.894e-03, -5.733e-02, 6.659e-02, -7.197e-02, 8.736e-02, 7.836e-02, -3.087e-02, 5.446e-03, -5.538e-03, 2.015e-02), r);\n\tr = MulAdd(s1_1, M4(8.236e-03, 3.515e-02, -7.031e-02, -4.893e-04, 7.165e-02, 2.122e-02, -6.245e-02, 5.521e-02, -2.507e-01, -7.431e-03, -6.972e-02, 1.014e-01, -9.786e-02, 4.074e-02, -1.138e-03, 1.096e-01), r);\n\tr = MulAdd(s1_2, M4(-8.829e-02, -3.148e-02, -2.142e-02, 5.981e-02, 5.066e-03, -6.110e-02, 3.339e-03, 7.664e-03, -2.020e-02, 5.512e-03, -7.908e-02, -2.970e-03, 9.111e-03, 1.377e-02, 1.319e-02, 8.516e-03), r);\n\tr = MulAdd(s1_3, M4(-5.001e-02, 2.919e-03, -5.871e-02, 1.821e-02, -7.493e-02, -4.757e-02, 2.643e-02, 1.199e-02, -2.783e-01, -1.154e-01, 1.419e-01, -7.777e-02, 3.460e-02, -2.820e-02, -4.490e-02, -4.171e-03), r);\n\tr = MulAdd(s1_4, M4(-7.329e-02, -7.155e-03, -4.647e-02, 1.127e-01, 8.173e-02, 1.380e-01, 1.007e-01, -1.666e-01, 3.941e-01, 1.394e-01, -6.078e-02, -1.604e-01, -2.940e-01, 1.331e-01, -3.606e-02, -1.772e-01), r);\n\tr = MulAdd(s1_5, M4(2.868e-02, -2.188e-01, -6.634e-02, -3.221e-02, 4.437e-02, -1.630e-01, 4.866e-03, 4.620e-02, -1.544e-02, -1.962e-02, -1.514e-03, 3.143e-02, 1.624e-02, 4.628e-02, 7.661e-03, 3.106e-02), r);\n\tr = MulAdd(s1_6, M4(1.388e-02, 8.381e-04, 1.228e-02, 5.737e-02, 3.986e-02, -3.514e-02, -7.946e-02, 5.119e-02, 4.793e-02, -1.235e-02, 5.782e-02, -1.727e-02, 9.271e-02, 4.089e-03, 1.185e-02, 6.081e-02), r);\n\tr = MulAdd(s1_7, M4(-2.851e-02, -6.290e-02, -9.474e-03, -6.267e-02, -8.284e-02, -5.416e-02, -1.131e-02, 2.230e-01, 9.527e-03, -1.781e-01, 8.715e-02, -1.448e-01, 9.062e-02, 9.679e-03, 2.458e-02, 9.532e-02), r);\n\tr = MulAdd(s1_8, M4(-4.635e-02, -4.072e-02, -7.488e-02, 6.482e-02, -1.024e-01, 2.769e-02, -5.381e-02, -7.026e-02, -1.038e-01, -9.665e-03, 5.855e-02, 1.004e-01, -3.043e-03, -3.584e-02, 5.021e-02, -2.025e-02), r);\n\tr = MulAdd(s2_0, M4(-3.691e-02, 4.343e-03, 1.944e-03, 5.121e-03, -6.205e-02, 1.779e-02, 1.133e-02, 8.393e-02, 6.189e-02, -5.052e-02, -1.885e-04, -2.769e-02, 8.502e-02, 6.285e-02, -1.575e-01, -9.110e-03), r);\n\tr = MulAdd(s2_1, M4(-2.548e-02, 3.900e-02, -7.437e-02, 1.593e-02, -6.999e-02, -1.089e-01, -8.605e-02, 1.203e-01, 1.808e-02, 2.306e-02, 4.526e-02, 1.072e-02, -1.069e-01, -1.257e-01, -1.824e-01, 1.765e-01), r);\n\tr = MulAdd(s2_2, M4(2.279e-02, 5.037e-03, 8.069e-02, -1.478e-03, -3.047e-02, -8.335e-02, -2.637e-02, 2.844e-02, -2.300e-03, -1.131e-02, -3.253e-02, -2.081e-02, -1.460e-01, -2.562e-02, -2.515e-02, -1.627e-02), r);\n\tr = MulAdd(s2_3, M4(8.925e-02, -8.621e-05, 3.551e-02, 5.852e-02, 7.491e-02, -1.479e-01, -8.129e-02, -1.654e-01, 2.907e-02, 4.001e-03, 1.898e-02, 1.946e-02, 1.645e-01, 9.341e-02, -1.773e-02, -2.151e-01), r);\n\tr = MulAdd(s2_4, M4(-1.025e-01, -6.147e-02, 1.116e-01, -2.732e-01, 4.592e-02, 9.316e-02, 2.190e-01, -1.172e-01, 8.032e-03, -3.184e-02, -3.324e-02, 4.468e-02, 3.894e-01, -4.911e-02, -2.667e-01, -6.591e-01), r);\n\tr = MulAdd(s2_5, M4(3.605e-02, -1.431e-02, 1.066e-01, -1.271e-03, -8.170e-02, -5.271e-02, -1.263e-01, 7.878e-03, -2.190e-02, 3.071e-02, -2.802e-02, 2.736e-02, -2.978e-02, -5.201e-02, -1.224e-01, -3.254e-01), r);\n\tr = MulAdd(s2_6, M4(-7.998e-02, -8.551e-03, -9.969e-03, -6.664e-02, 3.013e-02, -1.551e-02, -5.777e-03, 3.318e-02, 2.715e-02, 1.761e-03, 1.030e-02, 1.606e-02, -7.406e-03, 7.278e-03, -4.858e-02, 5.677e-02), r);\n\tr = MulAdd(s2_7, M4(-4.434e-02, 3.694e-02, 2.225e-02, 5.404e-02, -5.965e-02, 1.155e-01, -1.446e-02, -1.431e-01, -1.449e-02, 3.707e-02, -8.811e-03, 2.222e-02, 3.625e-02, 4.348e-02, 1.404e-01, 1.871e-02), r);\n\tr = MulAdd(s2_8, M4(7.695e-02, 5.765e-02, 1.118e-01, -2.032e-02, 6.812e-02, -1.101e-01, 1.491e-02, -8.794e-02, -4.007e-03, 8.639e-04, 9.093e-03, 2.268e-02, -8.533e-03, -1.890e-02, -8.417e-03, -2.010e-02), r);\n\tr = MulAdd(s3_0, M4(-5.556e-02, 6.920e-02, 1.927e-02, -2.532e-02, -6.915e-02, -2.470e-02, -6.204e-02, 3.620e-02, 6.127e-02, -5.440e-02, -3.001e-02, -4.251e-02, 4.457e-02, -9.204e-03, 3.700e-03, -3.529e-02), r);\n\tr = MulAdd(s3_1, M4(1.667e-01, 1.160e-01, -8.801e-02, -1.770e-01, -1.248e-01, 1.147e-02, -1.574e-01, 8.512e-02, 8.809e-02, -2.999e-03, 5.942e-02, 1.731e-02, 3.972e-02, -4.257e-02, -1.670e-02, -2.578e-02), r);\n\tr = MulAdd(s3_2, M4(3.448e-02, 2.192e-02, -1.129e-02, -4.515e-02, -4.126e-02, -5.978e-02, -3.035e-02, 4.129e-02, -1.721e-02, 3.501e-02, 1.505e-02, 2.744e-02, 4.188e-02, -2.930e-02, 2.939e-02, -3.203e-02), r);\n\tr = MulAdd(s3_3, M4(-2.527e-02, -6.208e-02, 2.997e-02, 8.396e-02, -1.245e-03, -1.697e-02, -9.905e-02, -9.929e-02, 1.386e-01, 5.462e-02, 1.256e-01, 1.261e-01, 4.739e-02, 2.547e-02, 1.957e-02, 2.484e-03), r);\n\tr = MulAdd(s3_4, M4(-1.878e-01, -1.528e-01, 3.545e-02, 1.051e-02, 1.128e-02, 2.776e-01, 3.176e-01, -1.291e-01, -2.102e-01, -2.655e-01, -4.457e-02, 3.313e-01, 3.943e-02, -8.620e-02, -3.682e-02, 8.068e-02), r);\n\tr = MulAdd(s3_5, M4(2.688e-02, -4.420e-02, -7.753e-03, 1.846e-02, -3.534e-02, -1.075e-01, -1.408e-01, -6.160e-02, -6.013e-02, -3.317e-02, -4.455e-02, 1.931e-01, -2.555e-02, -2.839e-02, 1.649e-02, 1.812e-02), r);\n\tr = MulAdd(s3_6, M4(-2.297e-02, -5.681e-02, -5.738e-02, -5.830e-02, -3.678e-02, 3.950e-02, 3.693e-02, -4.448e-02, -1.573e-03, 8.136e-02, 1.578e-02, -1.116e-01, 6.074e-02, 2.165e-02, 2.547e-02, -1.440e-02), r);\n\tr = MulAdd(s3_7, M4(-8.937e-03, 2.686e-02, -1.064e-01, 4.029e-03, -3.302e-02, 7.123e-02, 2.526e-02, -1.513e-02, 9.030e-02, 9.048e-02, 4.383e-02, -7.035e-03, -3.051e-02, -6.291e-02, 1.686e-03, 4.893e-02), r);\n\tr = MulAdd(s3_8, M4(6.268e-02, -9.602e-03, 1.679e-02, -3.474e-02, 6.772e-02, -4.073e-02, -5.241e-02, -3.012e-02, 4.198e-03, -1.029e-02, 4.477e-02, -1.357e-01, 1.368e-02, -8.683e-03, -1.462e-02, -3.328e-02), r);\n\tr = MulAdd(s4_0, M4(-1.728e-04, -4.062e-02, -5.267e-03, 9.502e-02, -6.827e-02, 3.119e-02, -3.602e-02, -3.598e-02, 7.886e-02, -4.163e-02, -2.511e-02, -5.339e-03, 2.045e-03, -4.370e-02, -3.567e-02, -6.170e-02), r);\n\tr = MulAdd(s4_1, M4(-1.357e-01, -5.105e-03, -1.439e-01, 1.387e-01, 3.401e-02, 7.299e-02, 1.007e-01, -8.077e-02, -2.987e-02, 5.897e-02, -5.838e-02, 1.707e-02, 4.441e-02, 7.889e-02, 3.613e-02, -4.555e-02), r);\n\tr = MulAdd(s4_2, M4(-9.628e-02, 7.116e-03, -1.357e-01, -5.248e-02, 9.198e-02, 5.426e-02, 4.230e-02, -4.582e-02, -4.610e-02, -2.197e-02, -3.523e-02, 3.964e-02, -4.567e-02, 2.019e-02, 1.297e-02, 3.994e-02), r);\n\tr = MulAdd(s4_3, M4(1.021e-01, 8.482e-02, -9.234e-03, 1.916e-01, -2.604e-02, 5.640e-02, -4.721e-02, 2.153e-02, -4.347e-02, 2.935e-02, 1.933e-02, 8.553e-02, -1.625e-02, 3.943e-02, 7.231e-02, -3.787e-02), r);\n\tr = MulAdd(s4_4, M4(2.682e-01, 2.765e-01, -2.186e-01, -3.614e-01, 1.081e-02, 2.499e-02, -4.153e-02, -2.146e-02, 6.579e-02, -2.080e-02, -8.323e-03, 6.411e-02, -1.551e-01, 1.018e-01, -1.316e-01, 5.251e-02), r);\n\tr = MulAdd(s4_5, M4(4.870e-02, 9.739e-02, -1.611e-01, 5.916e-02, -9.009e-02, 1.231e-02, 3.923e-02, -5.300e-02, -5.035e-02, 1.460e-02, -1.402e-02, -2.836e-02, 5.409e-02, 6.433e-02, -2.114e-03, -3.348e-02), r);\n\tr = MulAdd(s4_6, M4(4.469e-02, -1.401e-03, -8.021e-03, 7.605e-02, 1.365e-02, -2.579e-02, -6.499e-02, 2.021e-02, -1.392e-02, -4.463e-02, 3.883e-02, -8.082e-02, 5.414e-02, 3.849e-02, -3.084e-02, 5.126e-02), r);\n\tr = MulAdd(s4_7, M4(-6.951e-02, 7.847e-02, 1.060e-01, 3.783e-01, 1.528e-03, -1.161e-03, -3.397e-02, 2.894e-02, 2.840e-02, 2.163e-02, 5.997e-02, -2.849e-02, 1.324e-02, -1.374e-02, 3.235e-02, 7.879e-02), r);\n\tr = MulAdd(s4_8, M4(-6.662e-02, -5.941e-02, 2.370e-02, 1.409e-01, -3.225e-02, 4.043e-02, 5.481e-03, 1.394e-02, -6.735e-03, -1.254e-02, -2.157e-02, -1.412e-02, -3.787e-02, 7.276e-02, 1.049e-02, 2.077e-02), r);\n\tr = MulAdd(s5_0, M4(4.753e-02, -4.741e-02, 4.268e-02, -2.750e-02, -1.499e-02, 4.141e-02, 4.314e-02, -2.799e-02, -4.858e-02, 4.180e-02, -5.937e-02, 7.599e-03, -1.086e-01, -3.846e-02, -4.511e-01, 2.891e-02), r);\n\tr = MulAdd(s5_1, M4(-3.799e-02, 1.486e-02, 1.909e-02, -5.205e-02, 8.668e-03, 9.116e-02, 9.902e-02, -6.908e-05, -1.486e-01, -4.575e-02, 9.426e-02, 7.493e-02, -7.610e-02, 2.594e-02, -4.155e-01, 1.043e-01), r);\n\tr = MulAdd(s5_2, M4(-1.578e-02, -2.317e-02, -1.873e-02, 6.506e-03, 5.834e-03, 6.624e-02, 5.604e-02, -4.697e-03, 5.603e-02, 1.003e-01, 3.492e-02, -4.066e-02, -8.498e-02, -3.709e-02, -4.663e-01, 4.506e-02), r);\n\tr = MulAdd(s5_3, M4(1.530e-01, -1.419e-02, 4.457e-02, 1.735e-02, -1.507e-02, 1.339e-01, 8.650e-02, 4.461e-02, 7.934e-02, -6.799e-02, -8.232e-02, -8.079e-03, 2.353e-02, -1.112e-01, -3.234e-01, -1.513e-01), r);\n\tr = MulAdd(s5_4, M4(-9.873e-02, 1.266e-02, -4.563e-02, -6.144e-02, 8.620e-03, -1.178e-01, -5.440e-02, 1.080e-01, -2.497e-01, 6.533e-02, -3.113e-02, 1.041e-01, -1.834e-01, 1.515e-01, -3.158e-01, -5.617e-02), r);\n\tr = MulAdd(s5_5, M4(-1.181e-02, 1.017e-01, -2.301e-02, 4.789e-03, 6.093e-02, -7.036e-02, -5.387e-02, -3.476e-02, -8.936e-02, 2.091e-01, 1.606e-01, 9.772e-02, 6.605e-02, -5.859e-02, -5.548e-01, -5.306e-02), r);\n\tr = MulAdd(s5_6, M4(3.997e-04, 2.750e-02, 1.809e-02, 6.481e-02, -1.627e-02, 5.154e-03, -6.532e-02, -1.683e-02, -5.241e-02, -6.942e-03, 4.336e-02, 5.270e-02, 2.331e-02, 1.883e-02, -4.827e-01, 7.747e-02), r);\n\tr = MulAdd(s5_7, M4(2.166e-02, 2.180e-02, 5.002e-02, 8.731e-02, -1.527e-02, 4.645e-03, -1.913e-02, 3.873e-02, -4.044e-03, 1.239e-01, 7.787e-02, -2.459e-02, 8.016e-03, -2.391e-02, -5.045e-01, 1.226e-01), r);\n\tr = MulAdd(s5_8, M4(-2.626e-02, 7.217e-02, 8.186e-02, 5.629e-02, -2.961e-02, 7.589e-02, 1.711e-02, 2.898e-02, 9.636e-02, 4.845e-02, -1.364e-02, 1.790e-03, -1.044e-01, 1.256e-02, -4.494e-01, -1.234e-02), r);\n\tr = MulAdd(s6_0, M4(1.140e-02, 9.363e-03, 4.300e-01, -1.318e-02, 2.510e-01, -7.819e-02, 8.848e-02, -9.342e-03, -1.298e-02, 7.493e-02, 5.181e-02, 2.558e-02, 1.605e-03, -5.114e-02, 2.143e-02, -4.397e-02), r);\n\tr = MulAdd(s6_1, M4(-9.611e-04, 7.419e-02, 4.901e-01, -4.664e-02, -8.663e-03, -1.639e-01, -1.429e-01, 3.733e-02, -1.649e-02, 3.757e-02, -1.612e-03, 1.383e-02, -3.144e-01, 1.175e-01, -2.074e-01, 7.000e-02), r);\n\tr = MulAdd(s6_2, M4(-1.122e-02, -2.168e-02, 4.276e-01, 1.530e-02, -6.548e-02, 8.041e-02, 9.651e-03, -2.591e-02, 4.500e-02, -1.279e-01, 8.215e-02, -2.642e-02, 1.282e-03, -1.513e-01, -2.194e-01, 5.308e-03), r);\n\tr = MulAdd(s6_3, M4(-5.915e-02, 6.068e-02, 3.973e-01, 5.852e-02, -5.017e-02, -3.912e-02, 3.955e-02, -1.229e-01, 2.079e-01, 5.003e-02, -7.709e-02, 2.521e-02, 4.375e-02, -3.964e-02, -3.442e-02, -9.235e-02), r);\n\tr = MulAdd(s6_4, M4(-1.313e-01, -2.077e-02, 1.088e-01, 1.850e-02, -1.380e-01, -9.510e-02, -4.841e-02, -3.782e-02, 4.680e-02, 9.948e-02, -2.507e-01, 1.493e-02, 5.328e-03, 4.027e-02, -8.760e-02, 4.633e-02), r);\n\tr = MulAdd(s6_5, M4(5.972e-02, 1.194e-02, 3.225e-01, -9.068e-02, 5.225e-02, -2.503e-02, 4.713e-02, 2.473e-02, -4.251e-02, 2.470e-02, 5.847e-02, -1.685e-03, 1.264e-01, -2.465e-02, -1.440e-01, -7.791e-02), r);\n\tr = MulAdd(s6_6, M4(-9.400e-03, 3.380e-02, 3.979e-01, -2.205e-02, 2.998e-02, 2.225e-02, 3.898e-02, -9.355e-02, -1.261e-03, -3.366e-02, 9.228e-02, -2.655e-03, -1.726e-02, -5.696e-02, 6.734e-03, -7.790e-02), r);\n\tr = MulAdd(s6_7, M4(6.232e-02, -2.392e-02, 3.940e-01, 2.002e-02, 6.472e-02, -4.588e-02, -2.079e-02, -6.893e-02, 6.273e-02, 1.513e-01, 7.043e-02, -1.354e-01, -2.504e-02, 6.867e-02, -1.033e-02, -1.156e-01), r);\n\tr = MulAdd(s6_8, M4(1.024e-01, 1.242e-03, 3.614e-01, -7.435e-02, 3.118e-03, -8.220e-03, 2.923e-02, -1.808e-03, -2.953e-03, 1.355e-02, 3.267e-02, 1.208e-02, 9.185e-03, 4.535e-02, -5.062e-02, 3.119e-02), r);\n\tr = MulAdd(s7_0, M4(-1.910e-02, -1.887e-02, -4.592e-02, -2.185e-02, 8.543e-03, -3.987e-02, 3.666e-02, 3.995e-02, 6.334e-02, -5.211e-02, -5.736e-02, 4.134e-02, -1.546e-01, -1.693e-02, 7.901e-02, 4.490e-02), r);\n\tr = MulAdd(s7_1, M4(2.399e-02, 3.919e-02, 2.938e-02, -3.529e-02, 1.825e-02, 4.760e-02, -9.350e-03, -6.631e-02, 4.184e-02, 2.180e-02, 3.567e-02, 1.530e-03, -8.034e-02, 3.142e-02, -2.671e-02, 4.697e-02), r);\n\tr = MulAdd(s7_2, M4(1.911e-02, 7.166e-03, 4.074e-02, -1.249e-03, -1.535e-01, 1.070e-01, 5.826e-02, -2.056e-02, 7.336e-02, -1.698e-01, -2.646e-02, 6.150e-02, 8.283e-03, 8.127e-02, -3.357e-02, -9.405e-02), r);\n\tr = MulAdd(s7_3, M4(-4.339e-02, -4.750e-03, -5.452e-02, 3.019e-02, -2.252e-02, -1.077e-01, 1.085e-02, -3.993e-02, 1.242e-02, 3.231e-02, -3.038e-02, -1.896e-01, -6.426e-02, -8.185e-03, 1.091e-01, -4.529e-02), r);\n\tr = MulAdd(s7_4, M4(-1.119e-01, 4.192e-02, -1.368e-01, 1.173e-01, -1.318e-01, -3.726e-01, 6.285e-02, 1.275e-01, -2.175e-01, 9.336e-02, -1.567e-01, 8.716e-03, -1.037e-01, 3.719e-02, 6.634e-02, -4.542e-02), r);\n\tr = MulAdd(s7_5, M4(5.178e-02, 8.103e-03, -6.096e-02, 5.751e-02, 6.189e-02, 1.582e-01, 4.693e-02, 8.167e-03, -4.985e-02, -8.742e-02, 5.395e-02, 1.497e-03, 8.699e-02, -1.446e-02, -3.192e-03, 8.255e-02), r);\n\tr = MulAdd(s7_6, M4(-2.826e-02, 3.149e-03, -7.046e-02, 3.496e-03, -1.670e-02, -5.437e-03, 3.555e-03, -3.939e-02, -2.075e-02, 1.419e-04, 1.303e-02, 6.702e-02, -1.347e-02, -2.402e-02, 6.611e-02, -9.259e-02), r);\n\tr = MulAdd(s7_7, M4(-3.679e-02, 6.286e-02, -1.727e-03, 4.870e-02, 5.135e-03, -3.917e-02, -4.287e-03, -1.575e-03, 4.891e-02, 1.372e-01, -6.934e-02, -1.228e-03, 1.604e-02, 3.688e-02, 8.385e-02, -6.384e-02), r);\n\tr = MulAdd(s7_8, M4(-5.084e-02, 6.363e-02, 1.538e-02, -4.257e-02, -1.282e-02, 5.665e-02, 4.601e-02, 8.042e-02, 2.497e-02, 5.432e-02, 2.507e-02, -5.704e-02, 3.731e-02, 9.438e-03, 8.206e-02, 1.792e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.572e-03, -2.868e-03, -4.500e-03, -2.959e-03 };\n\tr = MulAdd(s0_0, M4(-5.530e-02, -1.617e-02, 2.352e-02, -1.485e-02, 4.881e-02, -2.329e-02, -4.558e-03, 8.385e-03, -1.442e-01, -4.004e-02, 2.705e-02, -9.990e-03, -1.235e-01, -1.013e-01, -1.527e-02, 3.842e-02), r);\n\tr = MulAdd(s0_1, M4(4.684e-03, 5.035e-04, -5.050e-02, -8.947e-03, 1.573e-02, -2.615e-02, 6.428e-02, -3.808e-03, -4.715e-02, -2.329e-02, 3.442e-02, 3.093e-02, -4.718e-02, 4.890e-02, -2.897e-02, 7.459e-02), r);\n\tr = MulAdd(s0_2, M4(7.853e-02, -1.839e-03, -3.160e-02, -3.292e-02, -1.984e-02, 6.870e-02, -4.005e-02, 3.317e-02, -3.989e-03, 1.158e-01, -2.007e-02, 9.144e-03, -5.287e-02, -1.566e-03, -5.974e-02, 5.084e-03), r);\n\tr = MulAdd(s0_3, M4(1.097e-01, 3.125e-02, -2.672e-02, 5.035e-02, -7.439e-02, -2.495e-02, -3.683e-02, -5.713e-03, 3.229e-02, 5.931e-02, -1.243e-02, 7.279e-03, 6.230e-02, -9.399e-02, 1.939e-02, -6.977e-02), r);\n\tr = MulAdd(s0_4, M4(4.851e-02, -8.625e-02, -7.390e-03, -1.343e-01, -1.915e-01, 3.872e-02, -5.489e-02, -5.599e-02, -4.943e-02, -1.504e-01, 1.693e-01, 3.257e-03, 2.588e-01, 6.934e-02, -8.523e-02, 1.005e-01), r);\n\tr = MulAdd(s0_5, M4(4.412e-02, -9.001e-02, 1.167e-01, -3.110e-02, -3.913e-02, -1.538e-01, -1.114e-01, 7.471e-03, -6.041e-02, 6.154e-02, -1.910e-01, -3.868e-02, 1.568e-02, -1.627e-01, 5.494e-02, -4.914e-02), r);\n\tr = MulAdd(s0_6, M4(-1.899e-02, -5.654e-02, -3.378e-02, -1.689e-02, -3.330e-02, -6.734e-02, 5.689e-02, -2.113e-02, 9.719e-03, -2.733e-02, -4.758e-02, 2.752e-02, 1.083e-01, -3.866e-02, -2.688e-02, -1.729e-03), r);\n\tr = MulAdd(s0_7, M4(-5.968e-02, -2.996e-02, 2.356e-02, -1.238e-02, 2.084e-01, 7.735e-03, -1.316e-01, -5.468e-03, 1.017e-01, 4.390e-02, 4.193e-02, -6.397e-02, 5.279e-02, -9.751e-02, -1.821e-02, -1.616e-01), r);\n\tr = MulAdd(s0_8, M4(1.749e-02, 4.329e-03, -6.404e-02, -5.788e-02, 1.173e-02, -2.369e-02, 6.466e-03, 5.626e-03, 6.072e-02, -4.984e-02, 2.577e-03, 2.890e-03, 9.293e-02, -4.553e-02, -1.866e-02, -1.942e-02), r);\n\tr = MulAdd(s1_0, M4(-5.736e-02, -4.241e-03, 4.091e-02, -9.481e-04, -3.571e-02, -2.591e-02, -3.441e-02, 1.974e-02, 2.702e-02, -6.178e-02, 3.701e-02, 4.750e-02, 3.939e-02, 2.841e-02, 1.887e-02, -1.122e-02), r);\n\tr = MulAdd(s1_1, M4(5.769e-03, 7.284e-02, -9.693e-04, -1.688e-02, 5.025e-02, -3.396e-03, 3.851e-02, 3.025e-03, -1.075e-02, -1.265e-01, 1.086e-01, -1.664e-01, 6.975e-02, 2.271e-02, 2.500e-02, -4.588e-02), r);\n\tr = MulAdd(s1_2, M4(9.697e-03, -2.097e-02, 5.419e-02, -3.256e-02, -4.287e-02, 3.847e-02, 2.259e-02, 1.297e-02, 9.146e-03, 1.455e-02, -1.044e-02, -2.461e-02, 2.637e-02, -1.331e-02, -1.739e-02, -1.716e-03), r);\n\tr = MulAdd(s1_3, M4(7.006e-02, 9.059e-02, 1.133e-03, 1.094e-02, -7.047e-02, 5.636e-02, 4.308e-02, 3.544e-02, 1.890e-02, 1.031e-01, 1.460e-01, 9.134e-02, -1.043e-01, -6.854e-02, 2.331e-03, -5.222e-02), r);\n\tr = MulAdd(s1_4, M4(7.126e-02, 4.843e-03, -2.516e-02, -5.130e-02, -1.754e-01, 7.127e-02, -1.121e-01, 7.451e-02, -3.895e-02, -3.175e-01, -3.025e-02, 2.512e-01, -1.846e-01, 1.422e-01, -8.243e-02, 7.740e-02), r);\n\tr = MulAdd(s1_5, M4(1.101e-01, 5.575e-02, 1.701e-01, 1.255e-02, -3.568e-02, -2.743e-02, 8.043e-02, -1.039e-02, 9.320e-02, 1.439e-01, 1.610e-01, -1.980e-02, -4.803e-02, -4.626e-02, 3.953e-02, -2.514e-02), r);\n\tr = MulAdd(s1_6, M4(-1.656e-02, -2.670e-03, 9.453e-03, 7.954e-03, 3.160e-03, -2.335e-02, -8.001e-02, -1.985e-02, -7.616e-03, -1.240e-01, -3.496e-03, -2.135e-02, 1.189e-01, 2.478e-02, -6.627e-02, 1.809e-02), r);\n\tr = MulAdd(s1_7, M4(-3.664e-02, 6.085e-02, 6.035e-02, -2.396e-02, 1.023e-01, -3.293e-02, 8.034e-02, -1.698e-03, -1.236e-01, 5.066e-02, 6.293e-02, -3.673e-02, 1.275e-01, -1.213e-01, 1.118e-01, -7.451e-03), r);\n\tr = MulAdd(s1_8, M4(-9.346e-03, 5.860e-02, 1.267e-02, -1.551e-02, 8.045e-03, 2.738e-02, -7.751e-02, 1.061e-02, -2.387e-02, -5.766e-02, 3.055e-03, -3.948e-02, 2.559e-02, 5.561e-02, -5.830e-02, -3.382e-02), r);\n\tr = MulAdd(s2_0, M4(-6.069e-02, 2.108e-02, 9.496e-03, -1.872e-02, 1.233e-01, 5.139e-02, 9.632e-03, -2.231e-03, -1.803e-02, 1.978e-02, 5.600e-02, 3.702e-02, 2.384e-01, 3.441e-02, -8.479e-03, 1.096e-01), r);\n\tr = MulAdd(s2_1, M4(3.898e-03, 2.343e-02, 7.591e-03, -3.634e-02, 9.175e-02, 1.232e-02, 9.339e-02, -1.427e-02, 1.635e-02, 3.624e-02, 5.380e-03, 3.340e-02, 5.886e-02, -6.395e-02, 3.795e-02, -1.333e-01), r);\n\tr = MulAdd(s2_2, M4(-1.586e-02, 1.043e-02, -6.155e-03, -1.137e-02, 1.116e-02, -9.468e-03, 1.350e-02, -1.687e-02, 2.759e-02, 2.010e-02, 5.078e-02, 1.777e-02, -4.099e-02, -1.848e-02, -7.351e-03, -5.972e-02), r);\n\tr = MulAdd(s2_3, M4(4.117e-02, -3.596e-02, -3.002e-02, 5.303e-02, -1.739e-01, -2.256e-01, 2.088e-02, -4.490e-02, 6.632e-02, -1.533e-02, -5.606e-03, -8.215e-03, -1.793e-01, -2.532e-01, -1.841e-01, 1.767e-01), r);\n\tr = MulAdd(s2_4, M4(-9.474e-03, 1.164e-02, 1.225e-01, 8.000e-02, -2.243e-01, -1.921e-02, -1.794e-01, 1.990e-01, 2.374e-02, 2.428e-02, -6.996e-02, -3.162e-02, 3.179e-01, -3.472e-01, 1.488e-01, 1.717e-01), r);\n\tr = MulAdd(s2_5, M4(2.778e-02, -1.627e-04, 3.268e-02, -3.187e-03, -2.008e-02, -8.358e-02, 9.114e-02, -5.115e-02, 2.025e-03, 1.126e-02, -1.056e-02, -3.162e-02, 5.090e-03, -1.149e-02, 2.072e-02, 2.220e-02), r);\n\tr = MulAdd(s2_6, M4(-3.461e-02, 5.308e-02, 5.725e-02, -9.231e-03, -2.192e-02, 1.419e-01, -4.842e-02, 1.155e-01, -2.410e-02, -3.985e-02, 3.458e-02, -2.689e-02, 3.019e-02, 4.427e-02, 1.272e-01, 1.810e-01), r);\n\tr = MulAdd(s2_7, M4(-8.477e-03, -6.933e-04, -1.920e-02, -2.858e-03, -2.798e-03, -1.307e-01, -2.007e-02, -5.314e-02, -1.314e-01, 7.247e-03, -1.472e-01, -5.190e-02, 1.460e-02, -1.797e-01, -3.916e-01, 1.581e-01), r);\n\tr = MulAdd(s2_8, M4(-8.492e-03, -1.268e-02, -4.747e-02, -1.358e-02, -9.552e-03, 2.001e-02, 2.676e-02, -3.251e-03, -1.836e-02, 1.053e-02, -3.311e-02, -1.412e-02, -8.262e-04, -2.533e-01, 4.093e-02, 4.769e-02), r);\n\tr = MulAdd(s3_0, M4(-1.965e-01, 1.753e-01, -2.753e-02, 5.399e-02, 1.293e-01, 4.383e-02, 9.391e-02, -4.703e-03, 1.665e-02, -1.957e-02, 3.671e-02, 5.154e-02, 1.635e-02, -5.094e-02, -6.182e-04, 1.959e-02), r);\n\tr = MulAdd(s3_1, M4(-1.850e-03, 2.078e-01, 1.834e-02, 7.289e-02, 4.926e-02, 5.169e-03, 6.260e-03, -3.841e-02, -3.082e-02, 6.279e-02, -7.108e-02, 5.052e-02, -9.217e-03, 1.371e-02, 2.197e-03, 2.179e-02), r);\n\tr = MulAdd(s3_2, M4(-5.101e-02, 4.943e-02, -7.672e-03, -5.337e-02, 1.374e-02, -4.443e-02, 6.857e-03, -1.739e-02, -1.378e-02, 1.933e-02, -6.228e-02, -6.243e-02, -6.422e-03, 5.847e-02, 1.756e-02, 4.110e-03), r);\n\tr = MulAdd(s3_3, M4(8.184e-02, 2.246e-02, 3.377e-02, -3.316e-02, -9.441e-02, -1.048e-01, 6.579e-02, -2.111e-02, 3.701e-01, 6.567e-02, -2.069e-01, 1.831e-01, 7.971e-02, -6.782e-03, -1.376e-02, 5.703e-02), r);\n\tr = MulAdd(s3_4, M4(4.998e-02, 2.069e-01, -4.661e-03, 1.201e-01, -1.860e-01, 4.666e-02, -2.778e-01, 5.755e-02, 6.265e-02, 1.730e-02, 1.673e-02, -1.287e-01, 5.509e-02, -5.944e-02, 6.826e-02, -7.650e-02), r);\n\tr = MulAdd(s3_5, M4(3.328e-03, 4.624e-02, 7.487e-02, 1.406e-02, -3.831e-02, -8.897e-02, -6.237e-03, 1.329e-02, 7.446e-02, -6.956e-02, -4.222e-02, -1.347e-01, -2.057e-02, -6.899e-02, -4.685e-02, -5.832e-03), r);\n\tr = MulAdd(s3_6, M4(-2.618e-02, 4.749e-02, 5.444e-02, -4.484e-04, -6.652e-02, -4.663e-02, 2.784e-02, 4.574e-03, -5.196e-02, -3.805e-02, -3.152e-02, -8.233e-02, 1.077e-02, -4.890e-02, -1.679e-02, -3.505e-02), r);\n\tr = MulAdd(s3_7, M4(-4.617e-02, -7.254e-02, 3.598e-03, 2.800e-02, -1.499e-02, -9.795e-03, 2.029e-02, -7.912e-02, 2.532e-02, -1.790e-01, -3.266e-01, -4.014e-01, 8.254e-02, -1.687e-03, -4.668e-02, -1.094e-02), r);\n\tr = MulAdd(s3_8, M4(1.320e-03, 4.325e-02, -5.827e-02, -4.300e-02, 4.556e-04, 2.221e-02, -2.681e-02, 7.054e-02, -2.948e-02, 2.460e-01, -2.830e-01, -1.085e-01, 4.318e-02, 3.407e-03, -3.434e-02, -1.976e-02), r);\n\tr = MulAdd(s4_0, M4(1.460e-01, 4.754e-02, 1.399e-01, -1.620e-02, -3.993e-02, -3.515e-02, 2.831e-02, -1.404e-02, -3.676e-02, -2.850e-02, 1.493e-02, 2.536e-02, -5.705e-02, -7.211e-02, -2.649e-03, 5.163e-02), r);\n\tr = MulAdd(s4_1, M4(6.518e-02, -6.099e-02, 4.237e-02, -8.836e-02, -7.260e-02, 2.330e-02, -1.394e-02, -1.646e-03, 3.951e-02, -1.861e-02, 6.994e-03, -2.942e-02, -5.052e-02, -3.522e-02, -8.298e-02, 3.180e-02), r);\n\tr = MulAdd(s4_2, M4(2.823e-02, 3.593e-02, -3.280e-02, -5.109e-02, -2.827e-02, 1.401e-02, -6.206e-02, 4.539e-02, 1.991e-02, -1.716e-02, 2.243e-02, -2.297e-02, 2.695e-02, -1.056e-02, 3.035e-03, -2.991e-02), r);\n\tr = MulAdd(s4_3, M4(2.547e-02, -5.687e-03, -2.042e-02, -9.337e-02, 3.524e-02, -1.397e-02, -3.742e-02, 1.454e-02, 7.672e-02, 3.066e-02, -3.199e-02, 2.233e-02, -5.170e-02, 5.818e-02, -2.007e-02, 4.057e-02), r);\n\tr = MulAdd(s4_4, M4(-2.283e-01, 2.457e-01, -3.105e-01, -3.668e-02, 3.219e-02, -1.147e-01, -9.497e-02, -7.666e-02, 6.047e-02, -6.299e-03, 7.590e-02, -1.044e-01, -4.754e-04, -5.665e-02, -2.808e-02, -9.255e-02), r);\n\tr = MulAdd(s4_5, M4(5.215e-02, 1.923e-01, 1.238e-01, -7.348e-02, -6.519e-02, -3.306e-02, -9.314e-02, 1.386e-01, 7.793e-03, 4.899e-02, 1.845e-02, -5.812e-02, 2.268e-02, -9.544e-03, -2.321e-02, -2.858e-02), r);\n\tr = MulAdd(s4_6, M4(6.982e-03, -1.007e-01, 2.938e-02, -4.167e-02, 8.572e-02, 7.508e-03, -5.352e-02, -2.551e-02, 1.916e-02, -8.421e-02, -4.458e-03, -4.428e-02, 3.794e-02, -5.348e-02, -6.604e-02, -2.357e-02), r);\n\tr = MulAdd(s4_7, M4(-3.960e-02, 1.965e-01, -1.140e-01, 2.182e-02, 1.082e-01, 6.102e-02, 6.258e-02, 5.545e-02, 1.849e-02, 9.835e-03, -1.410e-02, -2.211e-02, 3.209e-02, 2.958e-02, 6.653e-03, 3.695e-02), r);\n\tr = MulAdd(s4_8, M4(-2.179e-02, -1.401e-03, 1.264e-02, 3.296e-02, 5.442e-03, -6.132e-02, 7.208e-02, 5.353e-02, -1.661e-02, 4.773e-02, -4.191e-02, 3.883e-03, -1.001e-02, -2.729e-02, -2.561e-02, -1.567e-03), r);\n\tr = MulAdd(s5_0, M4(1.510e-02, -4.602e-02, 6.757e-02, 1.657e-02, -1.036e-01, 9.565e-02, -3.068e-03, 2.594e-02, 1.073e-02, 7.805e-03, -3.369e-02, -9.184e-03, 2.529e-02, -3.586e-02, 8.693e-02, 7.147e-04), r);\n\tr = MulAdd(s5_1, M4(-6.905e-02, 2.315e-02, -3.566e-02, 1.506e-02, 2.833e-02, 6.089e-02, 1.761e-02, -1.660e-03, -8.523e-02, -5.831e-02, 3.955e-02, -1.125e-01, 3.922e-02, -1.963e-02, 3.167e-03, -9.310e-02), r);\n\tr = MulAdd(s5_2, M4(1.307e-02, -4.174e-02, -2.938e-02, -2.647e-02, -3.047e-02, -7.772e-02, -2.001e-02, -3.471e-02, -6.911e-02, 7.078e-02, -1.451e-01, 2.392e-02, 6.754e-02, 1.151e-02, 1.840e-02, -2.239e-02), r);\n\tr = MulAdd(s5_3, M4(-5.393e-03, -8.862e-02, 3.511e-02, -4.368e-02, 1.822e-01, -3.408e-02, -3.088e-02, 7.301e-02, 1.169e-02, -3.817e-02, 4.264e-03, -7.837e-02, -3.082e-02, 2.524e-02, 2.682e-02, -1.838e-02), r);\n\tr = MulAdd(s5_4, M4(-2.514e-02, -2.609e-02, -7.041e-02, -9.363e-02, -4.125e-02, -8.346e-03, -2.117e-01, -7.318e-02, -1.934e-01, 2.920e-01, 3.854e-02, -2.982e-01, -1.804e-01, 2.558e-02, 1.561e-03, -4.694e-02), r);\n\tr = MulAdd(s5_5, M4(-6.437e-02, 2.093e-01, -5.823e-02, 2.168e-02, 4.195e-02, 2.039e-01, 1.491e-01, -4.014e-02, 2.835e-03, -3.487e-02, -6.809e-02, -4.941e-02, -1.088e-02, -3.818e-02, 1.212e-03, 1.173e-02), r);\n\tr = MulAdd(s5_6, M4(5.244e-02, 5.221e-02, -3.623e-02, 1.452e-02, -3.438e-02, 2.158e-02, 6.116e-02, 1.669e-02, -3.513e-03, -2.530e-02, -2.136e-02, -2.934e-02, 9.833e-02, 8.911e-02, -7.366e-02, 2.772e-02), r);\n\tr = MulAdd(s5_7, M4(1.158e-02, -7.909e-02, 1.344e-02, 6.564e-03, 1.432e-01, 2.081e-01, -6.528e-02, -4.952e-03, -2.150e-02, 4.520e-02, -1.310e-01, -1.048e-01, 9.828e-02, -5.999e-03, 2.218e-02, 4.271e-02), r);\n\tr = MulAdd(s5_8, M4(9.263e-03, -3.699e-02, -2.887e-02, 4.434e-02, 2.098e-02, -3.306e-02, 2.391e-02, 4.590e-04, -3.066e-02, 4.501e-02, 4.998e-02, -1.248e-02, 2.164e-02, 1.734e-02, -7.385e-02, -6.176e-02), r);\n\tr = MulAdd(s6_0, M4(-1.200e-01, -6.541e-03, 1.621e-02, -2.429e-02, 1.346e-01, -4.731e-02, -6.673e-02, 8.000e-02, 3.600e-03, 2.747e-02, -4.569e-02, -1.495e-02, -3.311e-02, 2.682e-02, -1.057e-01, 1.090e-01), r);\n\tr = MulAdd(s6_1, M4(-7.507e-02, 7.104e-02, 9.247e-03, -4.609e-02, -4.729e-03, -1.940e-01, 1.531e-01, -1.360e-01, 7.056e-02, 8.330e-02, -1.045e-02, -2.090e-03, -4.943e-02, -2.803e-02, 6.241e-02, -3.123e-02), r);\n\tr = MulAdd(s6_2, M4(-4.705e-03, -4.333e-02, 6.813e-02, -3.971e-02, -3.500e-02, 5.215e-03, -1.209e-01, -4.852e-02, -2.663e-02, -5.876e-02, -3.687e-02, -2.737e-02, 9.777e-03, -6.370e-02, 7.566e-02, -9.757e-03), r);\n\tr = MulAdd(s6_3, M4(-3.344e-02, 2.399e-02, -5.442e-02, -2.422e-03, -1.279e-01, 9.236e-02, 8.630e-02, -1.518e-02, 6.253e-02, -6.975e-02, -2.661e-04, -1.602e-02, 1.586e-02, 2.887e-02, 6.045e-02, 3.503e-02), r);\n\tr = MulAdd(s6_4, M4(4.011e-02, 2.552e-02, -3.967e-02, -7.582e-02, -2.794e-01, 1.229e-02, -4.513e-01, 2.350e-02, 1.524e-02, -1.563e-01, 4.062e-02, -3.018e-01, 1.119e-01, 1.427e-01, 1.185e-01, 3.546e-01), r);\n\tr = MulAdd(s6_5, M4(-4.893e-02, 2.692e-02, -3.284e-02, 1.005e-01, -4.720e-02, 3.716e-02, -6.935e-03, 1.084e-01, -7.848e-03, 5.418e-02, -3.424e-02, 2.442e-02, 1.865e-02, 1.802e-01, 2.675e-02, -8.322e-03), r);\n\tr = MulAdd(s6_6, M4(-2.785e-02, -2.571e-02, -1.216e-02, -6.150e-03, -1.060e-01, 3.524e-02, -2.086e-02, 5.807e-02, -3.918e-02, 8.613e-03, 6.152e-04, -6.108e-02, -5.372e-02, 2.802e-02, 8.226e-02, 2.973e-02), r);\n\tr = MulAdd(s6_7, M4(-4.775e-02, 5.714e-02, 3.044e-03, 3.925e-02, -1.426e-02, 4.745e-02, -3.258e-02, 7.909e-02, -9.992e-02, 3.526e-02, -1.658e-01, -9.226e-04, -1.165e-01, 5.208e-02, -6.919e-03, 5.177e-02), r);\n\tr = MulAdd(s6_8, M4(-2.796e-02, -7.841e-03, -2.497e-02, -1.530e-02, 1.059e-02, -4.475e-02, -4.364e-02, -2.307e-02, -4.266e-03, -4.323e-02, -5.765e-02, 3.223e-02, -5.482e-02, 4.946e-02, 3.526e-02, 3.115e-03), r);\n\tr = MulAdd(s7_0, M4(-2.466e-02, -1.719e-03, 3.801e-02, 1.752e-02, -3.110e-03, -4.578e-02, -4.427e-02, 1.854e-03, 1.912e-02, -5.210e-02, -8.798e-03, 1.338e-02, -5.674e-02, 4.983e-02, -1.342e-02, -2.986e-02), r);\n\tr = MulAdd(s7_1, M4(-6.462e-02, -3.351e-02, -4.126e-02, -1.354e-02, 2.871e-02, -5.572e-02, 6.581e-02, -2.789e-02, -1.171e-02, 1.881e-01, -6.108e-02, 5.253e-02, 7.739e-02, 4.354e-04, 1.759e-02, 3.710e-02), r);\n\tr = MulAdd(s7_2, M4(-2.664e-02, 9.902e-03, -1.423e-02, -2.955e-03, -2.286e-02, 7.444e-03, -4.907e-02, -1.944e-02, 1.294e-02, -6.049e-02, 4.284e-02, 3.838e-02, -2.826e-02, 2.839e-02, -1.008e-01, 1.964e-02), r);\n\tr = MulAdd(s7_3, M4(-2.754e-02, 1.341e-02, -1.052e-02, 2.319e-03, -4.675e-02, 1.518e-02, 1.005e-01, -4.150e-02, 1.854e-02, -5.684e-02, -3.610e-02, -1.013e-02, -2.374e-02, 1.913e-02, 7.706e-02, 7.259e-04), r);\n\tr = MulAdd(s7_4, M4(-1.687e-02, 2.132e-02, -9.203e-02, -1.918e-02, -1.380e-01, 1.196e-01, 8.180e-03, -4.208e-02, 2.657e-02, -2.285e-02, -8.182e-02, -2.380e-01, -2.184e-02, 7.319e-02, -1.213e-01, 6.137e-02), r);\n\tr = MulAdd(s7_5, M4(4.043e-02, -1.381e-02, -6.284e-03, 3.607e-02, 5.081e-03, 2.861e-02, -6.638e-02, 5.004e-02, -3.729e-02, -6.326e-02, -2.281e-02, -1.070e-02, -1.072e-02, -2.321e-02, 1.644e-01, 7.287e-02), r);\n\tr = MulAdd(s7_6, M4(3.375e-03, -2.589e-02, -2.995e-02, 1.989e-03, -5.787e-02, -1.684e-02, -4.837e-02, 1.978e-02, 1.767e-02, 4.527e-02, 1.354e-02, 7.828e-03, 5.698e-03, -2.555e-02, 1.943e-02, -8.800e-03), r);\n\tr = MulAdd(s7_7, M4(-2.163e-02, -5.088e-05, -1.509e-03, 1.766e-02, -4.841e-02, 5.486e-02, -5.015e-02, 2.485e-02, -8.226e-02, -1.765e-01, 4.477e-04, -6.773e-02, -4.923e-02, 5.172e-02, 8.718e-03, 3.181e-02), r);\n\tr = MulAdd(s7_8, M4(-6.163e-02, 3.111e-02, -1.483e-02, -6.322e-02, -3.006e-02, -6.286e-02, -1.226e-03, -1.081e-03, -4.795e-03, 1.847e-02, -5.359e-02, -3.331e-02, -1.364e-02, -1.835e-02, -2.644e-02, -3.180e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.523e-03, -8.447e-03, 2.570e-03, 6.650e-04 };\n\tr = MulAdd(s0_0, M4(7.549e-03, 5.841e-03, 3.577e-02, -6.203e-02, 1.483e-02, -1.774e-02, -3.494e-04, 1.253e-01, 5.410e-02, 3.787e-02, -8.517e-03, -1.559e-02, -2.618e-02, 1.766e-02, 7.876e-02, -1.753e-01), r);\n\tr = MulAdd(s0_1, M4(-3.639e-03, -6.624e-02, -1.868e-02, -7.252e-02, 4.951e-03, -2.230e-02, 5.442e-02, 4.589e-02, 2.376e-01, -2.639e-02, -3.136e-02, 1.902e-01, 9.939e-02, 7.555e-02, -3.844e-02, -1.404e-01), r);\n\tr = MulAdd(s0_2, M4(1.508e-02, 3.310e-02, -2.113e-02, 3.406e-02, -2.882e-02, -5.043e-02, -2.153e-02, 2.604e-02, -2.178e-02, 8.144e-02, 1.316e-01, 1.140e-01, 3.774e-02, 2.014e-02, 5.501e-02, 4.149e-03), r);\n\tr = MulAdd(s0_3, M4(5.904e-02, -4.471e-02, -1.419e-03, 5.577e-02, 2.097e-02, 2.939e-02, 4.351e-02, 7.017e-03, -1.220e-01, -2.561e-02, -7.143e-02, -6.226e-02, -2.383e-02, -8.104e-03, 1.235e-01, -5.604e-02), r);\n\tr = MulAdd(s0_4, M4(9.289e-02, 1.875e-02, -5.693e-02, 8.472e-02, 2.723e-02, -8.247e-02, 2.351e-02, -1.478e-01, 3.210e-01, -4.399e-03, -2.030e-01, -6.583e-02, -2.577e-01, 6.970e-02, -1.362e-01, -3.662e-01), r);\n\tr = MulAdd(s0_5, M4(6.788e-02, 1.481e-01, 1.110e-01, 8.451e-02, 1.231e-01, -5.248e-02, 4.599e-02, -7.866e-02, 6.980e-02, 1.021e-01, -1.467e-02, -2.085e-01, -7.291e-02, -7.495e-02, -6.751e-02, -7.518e-02), r);\n\tr = MulAdd(s0_6, M4(2.776e-02, -4.853e-03, 1.438e-02, -1.960e-02, 2.142e-02, 6.762e-03, -1.021e-02, 1.000e-02, 1.683e-02, 1.249e-01, 1.405e-02, 3.261e-02, 3.420e-02, 9.142e-03, 9.864e-02, 1.273e-01), r);\n\tr = MulAdd(s0_7, M4(3.249e-03, 1.042e-02, -1.446e-01, 2.937e-02, 2.885e-02, -1.655e-01, -2.498e-01, 1.184e-01, -7.952e-02, -4.997e-02, -8.814e-02, 8.800e-02, -4.362e-02, -4.499e-02, 2.033e-01, -1.495e-02), r);\n\tr = MulAdd(s0_8, M4(-3.336e-02, -9.648e-03, -3.515e-02, -2.298e-02, 1.141e-02, 6.649e-02, 6.324e-02, 1.812e-02, -7.799e-02, 3.529e-02, 2.367e-01, 7.042e-03, 4.538e-02, 1.188e-01, 2.026e-01, 3.327e-02), r);\n\tr = MulAdd(s1_0, M4(6.094e-03, 3.831e-02, 2.601e-02, -5.651e-02, -1.984e-02, -8.521e-02, -3.315e-02, 2.927e-02, 9.320e-02, 3.414e-02, 1.526e-02, -6.515e-02, 1.464e-02, 5.190e-02, 1.250e-02, -2.450e-02), r);\n\tr = MulAdd(s1_1, M4(-6.664e-02, 2.427e-02, -4.062e-02, -1.023e-01, 1.142e-03, 1.598e-02, 6.027e-02, 7.189e-02, 1.110e-01, -1.270e-01, -1.238e-01, -7.045e-03, -5.579e-02, -4.261e-02, -5.511e-02, 1.607e-01), r);\n\tr = MulAdd(s1_2, M4(-4.784e-02, 4.332e-02, 4.622e-02, -1.832e-01, 2.271e-03, -2.586e-02, -4.214e-04, -2.251e-02, 1.093e-01, 2.737e-02, 5.186e-02, -2.277e-02, 4.190e-02, -3.350e-02, 7.191e-02, 5.261e-02), r);\n\tr = MulAdd(s1_3, M4(-7.808e-02, 6.345e-03, 2.821e-02, -6.509e-02, -4.562e-02, -7.348e-02, -2.062e-02, -1.096e-01, -6.326e-02, 1.541e-02, 1.495e-01, -1.246e-01, 4.181e-02, -3.568e-02, -5.511e-02, -9.366e-02), r);\n\tr = MulAdd(s1_4, M4(-4.934e-02, 9.367e-02, 3.998e-02, 1.580e-02, 7.092e-02, -2.118e-02, -5.418e-02, -2.437e-01, 3.455e-01, 3.027e-01, -1.929e-01, -7.602e-02, -2.531e-01, 1.413e-01, 3.251e-02, -3.941e-01), r);\n\tr = MulAdd(s1_5, M4(8.890e-03, 8.483e-02, 2.803e-01, 6.689e-02, -1.312e-02, 6.201e-03, 6.569e-02, -4.399e-02, -2.803e-02, -6.854e-02, 4.189e-03, -1.196e-01, -2.446e-02, -1.737e-02, -1.135e-02, -8.770e-02), r);\n\tr = MulAdd(s1_6, M4(-1.025e-02, 7.595e-02, -3.784e-02, -1.273e-03, 1.642e-03, -2.167e-02, 1.115e-01, 1.739e-02, 1.468e-02, 4.380e-02, -7.158e-03, 6.610e-02, -1.724e-02, 6.816e-02, -3.586e-02, 7.312e-02), r);\n\tr = MulAdd(s1_7, M4(1.537e-02, 5.858e-02, -1.293e-02, 5.912e-03, 1.436e-02, -1.255e-01, -1.164e-01, 5.451e-02, -1.606e-02, 7.959e-02, -1.098e-01, 2.954e-02, 3.584e-02, 1.064e-01, 4.900e-02, 1.483e-01), r);\n\tr = MulAdd(s1_8, M4(-4.516e-02, -1.848e-02, -4.929e-02, -5.298e-02, -1.838e-02, 5.770e-02, 2.665e-01, -1.645e-02, -1.324e-02, -3.306e-02, 2.753e-01, -6.406e-02, 1.989e-02, 6.731e-02, 4.207e-02, 5.124e-02), r);\n\tr = MulAdd(s2_0, M4(8.669e-03, -4.284e-02, -5.007e-02, 1.656e-02, -5.270e-02, 3.006e-02, 6.241e-02, -6.480e-02, 4.663e-02, -2.888e-02, -5.864e-03, 2.422e-02, -5.882e-02, 4.813e-02, 4.304e-02, -8.405e-02), r);\n\tr = MulAdd(s2_1, M4(2.559e-02, 1.371e-02, 7.386e-03, -1.152e-01, -4.218e-02, 2.676e-02, -1.053e-03, 2.170e-01, 5.879e-03, 2.691e-02, 2.323e-02, 2.206e-03, 4.784e-02, -1.199e-01, -4.400e-02, -2.469e-01), r);\n\tr = MulAdd(s2_2, M4(1.379e-02, 4.408e-02, -5.730e-03, -5.580e-02, 2.329e-02, -1.601e-02, -9.255e-02, 9.784e-02, 3.808e-02, -2.988e-02, 1.248e-02, -1.850e-02, 1.154e-01, 1.170e-01, 4.576e-02, -1.395e-01), r);\n\tr = MulAdd(s2_3, M4(8.206e-02, -3.295e-02, 2.331e-02, 7.162e-02, 1.918e-01, -1.477e-01, -1.075e-01, 7.347e-02, -1.932e-02, -5.538e-02, -2.213e-02, 1.610e-02, -4.277e-03, 8.670e-02, 1.180e-01, 1.101e-01), r);\n\tr = MulAdd(s2_4, M4(-1.037e-01, 3.606e-02, -3.500e-03, -4.871e-02, 3.480e-02, 3.394e-01, 2.708e-01, -8.373e-02, 1.522e-02, -3.404e-02, 3.080e-02, -1.670e-02, 2.218e-01, 1.636e-01, 1.746e-01, 1.966e-01), r);\n\tr = MulAdd(s2_5, M4(-5.810e-02, -1.016e-01, -1.705e-02, 4.430e-02, -1.122e-01, 4.012e-02, -7.739e-02, 1.988e-02, -7.404e-02, 1.663e-03, -4.575e-02, 6.022e-02, 2.325e-01, 2.560e-01, 1.496e-01, 1.737e-01), r);\n\tr = MulAdd(s2_6, M4(-3.489e-02, -7.750e-03, 3.257e-02, -6.685e-02, -2.556e-02, -6.975e-02, -7.688e-02, -6.276e-02, 3.238e-02, -6.852e-03, 8.972e-04, 4.346e-02, -4.617e-02, -7.906e-02, -1.260e-01, -2.206e-01), r);\n\tr = MulAdd(s2_7, M4(-7.169e-02, -1.108e-01, -7.025e-02, -4.756e-02, -1.275e-03, 5.717e-02, 1.381e-02, -4.280e-02, -7.935e-02, 8.469e-02, 2.669e-02, -4.783e-02, -6.415e-02, -7.410e-02, -5.996e-01, -7.421e-02), r);\n\tr = MulAdd(s2_8, M4(5.732e-02, -2.094e-02, 4.487e-02, 1.684e-03, 3.583e-02, 6.555e-02, -9.093e-02, 2.819e-02, 3.207e-02, 2.379e-02, -7.058e-02, 3.650e-02, 7.129e-02, 8.081e-02, -2.055e-01, 2.068e-02), r);\n\tr = MulAdd(s3_0, M4(-1.351e-01, 2.487e-02, 6.509e-02, -1.377e-01, -7.213e-02, 4.431e-02, 6.395e-02, -2.582e-02, 2.499e-02, 2.643e-02, -5.115e-02, -4.884e-02, 3.498e-02, -4.305e-02, -2.118e-02, 3.186e-02), r);\n\tr = MulAdd(s3_1, M4(3.457e-02, 9.418e-02, -9.542e-02, 1.424e-02, -4.137e-02, 3.093e-02, -1.165e-01, 2.549e-01, 8.566e-02, -4.637e-02, -1.015e-01, -7.352e-02, 9.651e-02, -9.373e-03, -3.242e-02, -1.090e-01), r);\n\tr = MulAdd(s3_2, M4(-3.211e-02, 6.423e-02, -3.871e-02, -1.077e-01, -2.926e-02, 4.379e-02, -1.110e-02, 3.742e-02, 4.095e-02, 2.133e-03, 5.670e-02, 6.495e-03, 2.460e-03, -1.015e-02, 1.909e-02, -2.733e-02), r);\n\tr = MulAdd(s3_3, M4(1.325e-01, -4.033e-02, -7.704e-02, 1.749e-02, 3.448e-02, 8.126e-03, -1.382e-01, 7.792e-02, -1.686e-01, 1.118e-01, 9.789e-02, 8.128e-02, 1.519e-02, -3.246e-02, 3.822e-02, 1.307e-02), r);\n\tr = MulAdd(s3_4, M4(-2.686e-01, -1.360e-01, -2.257e-01, -1.253e-01, 1.299e-01, 3.730e-01, 5.186e-03, 4.527e-02, 5.434e-02, -3.687e-01, -7.868e-02, -2.339e-01, -5.053e-02, -1.593e-02, -1.770e-02, 7.165e-03), r);\n\tr = MulAdd(s3_5, M4(-1.215e-01, -4.649e-02, -7.364e-02, 9.947e-03, -6.909e-02, 5.499e-02, -5.504e-02, 3.746e-02, -1.890e-01, 3.576e-02, 8.347e-02, 8.117e-02, 6.363e-02, 8.396e-03, 2.059e-02, -4.964e-02), r);\n\tr = MulAdd(s3_6, M4(-3.645e-02, -1.210e-02, 2.680e-02, -2.743e-02, 6.655e-02, -3.608e-02, -9.769e-02, -5.215e-02, -7.768e-02, 8.398e-02, 3.276e-01, 2.325e-02, 4.869e-02, 8.209e-03, -3.908e-02, 5.922e-02), r);\n\tr = MulAdd(s3_7, M4(-1.293e-03, 2.624e-02, -1.241e-01, 4.513e-02, -6.860e-02, -1.391e-02, -1.504e-01, -9.386e-02, 6.850e-02, -1.116e-02, -2.939e-01, 1.790e-01, 2.221e-02, -3.076e-02, -1.267e-01, 3.525e-03), r);\n\tr = MulAdd(s3_8, M4(5.885e-02, 4.716e-02, 1.394e-01, -9.032e-03, 9.534e-03, -2.841e-04, -2.279e-01, 5.041e-02, 9.390e-02, 1.978e-01, 2.290e-01, 6.311e-02, 1.709e-02, -2.264e-02, 6.404e-03, 5.286e-02), r);\n\tr = MulAdd(s4_0, M4(-3.989e-02, 1.043e-01, 2.167e-02, -4.671e-02, 1.772e-02, 2.149e-02, -4.354e-02, 2.864e-02, 3.404e-02, 8.198e-03, -3.285e-02, 4.617e-02, 5.805e-02, -9.201e-02, -9.894e-02, 6.796e-02), r);\n\tr = MulAdd(s4_1, M4(-1.147e-01, 2.413e-02, -4.551e-02, -4.119e-02, -5.651e-02, 3.723e-02, 8.087e-02, -8.765e-02, 6.067e-02, 3.875e-02, -3.697e-02, -2.072e-02, 8.575e-02, -5.648e-03, 2.253e-03, -1.111e-02), r);\n\tr = MulAdd(s4_2, M4(2.399e-02, 1.158e-02, 8.217e-03, -8.103e-03, 4.760e-04, 2.772e-02, -5.089e-02, 1.294e-02, 2.670e-02, -7.396e-03, 3.874e-02, -1.791e-03, -1.335e-02, 3.958e-03, 6.292e-02, 3.807e-02), r);\n\tr = MulAdd(s4_3, M4(-5.314e-02, 1.613e-01, -6.274e-02, 3.254e-02, -2.636e-02, 7.294e-02, 1.556e-01, -1.084e-01, -1.058e-01, 6.138e-02, -2.246e-02, -1.212e-01, 5.899e-02, -9.672e-02, -6.812e-03, -2.475e-02), r);\n\tr = MulAdd(s4_4, M4(7.112e-02, -5.885e-02, 3.622e-02, 1.856e-01, 2.469e-01, -1.692e-01, -3.037e-01, 2.660e-02, -1.142e-01, 8.413e-02, -5.529e-02, -6.762e-02, -5.900e-02, -7.882e-02, -3.681e-02, -5.285e-02), r);\n\tr = MulAdd(s4_5, M4(-1.528e-01, -6.756e-03, -1.334e-01, 1.072e-01, 1.372e-01, -7.455e-04, 8.798e-02, -1.432e-01, -4.227e-02, 4.008e-02, -3.368e-03, 1.463e-03, 7.924e-02, 5.418e-02, 1.207e-01, 4.361e-02), r);\n\tr = MulAdd(s4_6, M4(9.618e-02, -3.959e-02, -1.578e-01, 1.450e-02, 1.987e-02, -7.605e-03, -2.451e-02, 3.678e-02, 7.314e-02, 2.967e-02, 7.232e-02, 8.189e-02, 1.972e-02, -1.425e-02, -6.249e-02, 2.753e-02), r);\n\tr = MulAdd(s4_7, M4(-7.886e-02, -7.267e-03, -4.764e-02, -1.432e-01, -6.068e-02, -1.336e-02, -7.154e-02, 2.613e-02, 4.865e-02, 8.846e-02, -5.496e-02, 3.770e-02, 1.078e-02, -4.761e-02, 4.391e-02, -3.580e-03), r);\n\tr = MulAdd(s4_8, M4(-5.023e-02, 1.002e-01, -1.076e-01, -9.511e-02, -4.760e-02, -1.926e-03, -1.515e-02, -3.226e-02, 1.395e-02, 1.796e-02, 3.720e-02, 7.361e-03, -9.088e-03, -3.335e-02, 8.838e-03, -3.721e-02), r);\n\tr = MulAdd(s5_0, M4(3.031e-02, 3.363e-02, 3.030e-03, 9.107e-02, -1.014e-01, -7.719e-03, 5.239e-02, -1.150e-02, 7.454e-03, -4.267e-02, -1.852e-02, -7.081e-03, 6.605e-02, -5.212e-02, 3.289e-02, 3.480e-02), r);\n\tr = MulAdd(s5_1, M4(-2.654e-02, 4.664e-02, -7.637e-03, -3.020e-02, -2.783e-02, 1.532e-02, -4.592e-02, -1.898e-01, -9.555e-02, -8.444e-02, -7.414e-03, -3.203e-01, 3.379e-02, -2.939e-02, 6.682e-04, -9.268e-02), r);\n\tr = MulAdd(s5_2, M4(-1.157e-01, 1.323e-02, -4.952e-02, 3.422e-02, -9.972e-02, -1.913e-02, 3.900e-02, -1.708e-02, 1.075e-01, -8.384e-02, 7.815e-02, -5.829e-02, 5.690e-02, -8.337e-02, 7.177e-03, -2.996e-03), r);\n\tr = MulAdd(s5_3, M4(4.825e-02, 2.533e-05, -9.939e-02, 2.553e-02, 7.429e-02, 2.843e-02, -4.936e-02, 7.694e-02, -3.963e-02, -2.134e-01, -9.395e-02, -1.557e-01, 8.082e-02, -2.030e-01, 2.238e-02, -4.166e-02), r);\n\tr = MulAdd(s5_4, M4(1.793e-01, -1.955e-01, 4.245e-03, -3.467e-02, -1.411e-01, -8.908e-02, -2.465e-01, -1.062e-01, -1.475e-01, -1.815e-01, 2.231e-01, -2.141e-01, -8.714e-02, -1.863e-02, 8.106e-02, -1.652e-01), r);\n\tr = MulAdd(s5_5, M4(-4.051e-02, 8.651e-02, 1.911e-02, -4.472e-02, -2.548e-02, 4.238e-03, 8.314e-02, 8.535e-04, -4.288e-02, 1.326e-02, -4.075e-02, -6.859e-02, -1.268e-02, -2.006e-03, 1.020e-01, -7.679e-03), r);\n\tr = MulAdd(s5_6, M4(-2.600e-02, -5.874e-02, -6.383e-02, -4.344e-02, -7.475e-03, -8.672e-02, -2.676e-02, 1.682e-02, 1.675e-02, -8.346e-02, 2.572e-02, 4.356e-02, -8.300e-02, -7.561e-03, 1.339e-02, -1.199e-02), r);\n\tr = MulAdd(s5_7, M4(-2.708e-02, -1.052e-02, 2.861e-01, 2.421e-02, -7.350e-02, 6.591e-02, -1.028e-01, 1.598e-02, -2.900e-03, -1.052e-01, 2.706e-01, 3.259e-02, -1.327e-02, 1.789e-02, -3.740e-02, 9.238e-03), r);\n\tr = MulAdd(s5_8, M4(-4.033e-03, 5.990e-02, -4.944e-02, -1.359e-02, 3.455e-02, 4.470e-03, 8.746e-02, -2.432e-02, -4.091e-02, -7.442e-02, -4.041e-02, 4.723e-02, 3.592e-02, 3.698e-02, -1.842e-02, -6.572e-02), r);\n\tr = MulAdd(s6_0, M4(6.685e-03, 7.485e-02, -1.710e-02, 1.088e-02, 3.259e-02, -4.319e-03, -7.286e-02, 1.912e-01, -6.803e-02, 5.241e-02, 1.160e-01, -2.947e-02, -3.404e-02, -7.214e-02, -9.967e-02, 5.521e-03), r);\n\tr = MulAdd(s6_1, M4(-2.227e-02, 1.553e-01, 3.670e-02, -3.572e-02, 2.372e-01, -1.481e-01, -2.047e-01, 2.490e-01, -3.064e-03, -6.818e-03, -4.601e-03, -8.369e-03, 4.889e-02, 2.389e-02, 2.834e-02, 1.179e-01), r);\n\tr = MulAdd(s6_2, M4(1.370e-03, 2.922e-02, -8.196e-02, 3.682e-02, -1.510e-02, 1.928e-02, 8.079e-02, 4.465e-02, 1.874e-03, -2.775e-02, -3.510e-02, 1.074e-02, 1.147e-02, -3.479e-02, -8.156e-02, 7.632e-02), r);\n\tr = MulAdd(s6_3, M4(-2.052e-02, 5.468e-02, 8.972e-02, 1.748e-02, 1.062e-02, -5.604e-02, -2.104e-02, -1.168e-01, -2.826e-02, 8.708e-02, -3.005e-02, 4.044e-02, 2.717e-03, -8.515e-02, -2.545e-02, 1.748e-02), r);\n\tr = MulAdd(s6_4, M4(-3.675e-02, -7.230e-02, -1.514e-01, -6.986e-02, -2.293e-01, 1.193e-01, -1.353e-01, 3.926e-02, 4.473e-02, -8.426e-02, -5.745e-02, 2.172e-01, -1.196e-01, 3.766e-02, -1.090e-01, 2.146e-02), r);\n\tr = MulAdd(s6_5, M4(-1.926e-02, 3.526e-02, -8.507e-03, 8.632e-02, -1.409e-02, 4.581e-03, -4.015e-02, -5.444e-03, 2.476e-03, -3.332e-03, 1.063e-01, 1.064e-02, 1.944e-02, -1.168e-02, -3.969e-02, 7.619e-02), r);\n\tr = MulAdd(s6_6, M4(7.458e-02, -8.309e-04, 5.156e-02, 3.045e-02, -2.027e-02, 4.268e-02, -9.577e-02, -2.027e-02, 1.083e-02, -2.694e-02, -9.081e-02, -3.254e-02, 1.457e-02, 2.705e-02, -4.239e-02, -1.168e-02), r);\n\tr = MulAdd(s6_7, M4(-1.551e-02, 1.555e-02, 3.333e-02, 1.551e-02, -2.358e-02, -1.985e-02, 5.884e-02, -2.825e-02, 2.197e-02, 1.169e-01, -4.803e-02, 8.349e-03, 2.392e-03, -2.082e-02, -3.377e-02, -4.084e-02), r);\n\tr = MulAdd(s6_8, M4(6.048e-02, -3.139e-02, -3.140e-02, 4.238e-02, -7.827e-03, -5.632e-02, -3.971e-02, -2.092e-02, -1.757e-02, 2.497e-02, 9.934e-03, -1.906e-02, -6.897e-02, -6.564e-02, 3.216e-02, -5.010e-02), r);\n\tr = MulAdd(s7_0, M4(3.706e-02, -3.405e-02, -3.631e-02, 4.191e-02, 8.408e-02, -7.818e-02, -4.613e-02, 8.811e-02, -4.304e-02, 8.061e-03, 2.657e-03, -1.014e-01, 3.056e-02, -6.020e-02, -7.336e-02, -1.122e-02), r);\n\tr = MulAdd(s7_1, M4(1.492e-02, 3.068e-02, 4.643e-02, -4.821e-02, 5.475e-02, -3.932e-02, -1.925e-02, 1.088e-01, 7.003e-02, 1.456e-01, 6.545e-02, 1.387e-02, -4.953e-02, 6.606e-02, 8.140e-02, 1.567e-01), r);\n\tr = MulAdd(s7_2, M4(3.314e-02, 2.750e-02, 6.535e-02, 2.061e-02, 5.650e-03, 7.274e-02, 6.622e-02, -3.237e-02, -2.759e-02, -3.971e-02, -9.094e-02, 6.809e-02, 1.583e-01, -4.280e-02, -1.262e-02, 2.825e-02), r);\n\tr = MulAdd(s7_3, M4(1.734e-02, -8.997e-02, 5.895e-03, -3.471e-02, 5.080e-02, -2.903e-02, 6.595e-02, -2.016e-02, 5.886e-03, 1.329e-01, 2.321e-02, -3.734e-02, 2.672e-02, -4.128e-02, 3.937e-02, -5.398e-02), r);\n\tr = MulAdd(s7_4, M4(-5.764e-02, -8.530e-03, -5.284e-03, 1.995e-02, -1.535e-01, -7.842e-02, 2.841e-01, 5.771e-02, -4.518e-01, -9.468e-02, -1.945e-01, -1.713e-02, -9.584e-02, -1.448e-01, 9.651e-02, -2.114e-01), r);\n\tr = MulAdd(s7_5, M4(4.921e-02, -2.335e-02, 6.736e-03, 9.647e-02, 4.729e-02, -1.626e-01, 1.514e-02, 2.695e-02, 1.966e-02, 2.227e-03, 4.152e-02, -5.731e-02, -4.104e-02, -2.117e-01, -1.313e-01, 3.599e-02), r);\n\tr = MulAdd(s7_6, M4(-2.224e-03, -5.215e-02, 8.148e-03, -1.054e-02, -2.011e-02, -7.110e-03, -4.378e-02, -4.554e-02, 1.837e-02, 2.168e-02, 6.596e-02, -3.392e-03, 3.671e-02, -2.368e-02, 7.803e-02, 2.117e-02), r);\n\tr = MulAdd(s7_7, M4(5.059e-02, 5.411e-02, 1.153e-01, -2.684e-02, 2.687e-02, 2.498e-02, 1.224e-01, -5.599e-02, 1.326e-01, 5.794e-02, 1.564e-01, 6.672e-03, -2.287e-02, 7.290e-04, -5.060e-02, -1.173e-02), r);\n\tr = MulAdd(s7_8, M4(1.739e-02, 1.692e-02, 7.444e-02, -9.690e-02, 2.404e-02, -5.695e-02, -8.741e-03, -4.248e-02, -1.166e-02, 3.177e-02, 3.432e-02, -4.448e-03, -4.017e-02, -1.342e-02, 8.129e-02, -4.351e-03), r);\n\treturn r;\n}\n\nvoid Pass8(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt4[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt5[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt6[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt7[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 9\n//!DESC conv8\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t4, t5, t6, t7\n//!OUT t0, t1, t2, t3\n\n#define l0(x, y) V4(O(t4, float2(x, y)))\n#define l1(x, y) V4(O(t5, float2(x, y)))\n#define l2(x, y) V4(O(t6, float2(x, y)))\n#define l3(x, y) V4(O(t7, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.794e-03, -6.271e-04, 2.485e-03, 1.034e-03 };\n\tr = MulAdd(s0_0, M4(-1.163e-03, 3.758e-02, -1.293e-02, -1.812e-03, 1.047e-02, -1.221e-02, 1.272e-02, 3.990e-02, -3.764e-03, -8.226e-02, 3.142e-03, 2.449e-03, 5.394e-02, 4.200e-02, 3.250e-02, 2.179e-02), r);\n\tr = MulAdd(s0_1, M4(-4.977e-02, 1.285e-02, 6.215e-03, 1.122e-03, 1.038e-01, 2.604e-02, -1.625e-03, 8.618e-02, 6.954e-02, -5.197e-02, -1.722e-02, -5.276e-02, -2.537e-02, -5.418e-03, -3.673e-02, -1.730e-02), r);\n\tr = MulAdd(s0_2, M4(2.432e-02, -6.323e-02, 6.821e-03, -4.970e-04, 4.663e-02, 1.828e-02, 5.051e-03, -2.768e-02, 5.109e-02, 1.437e-02, -5.003e-02, 2.399e-02, 2.915e-02, 4.627e-03, -1.239e-02, 2.087e-02), r);\n\tr = MulAdd(s0_3, M4(1.510e-02, -4.971e-02, 5.598e-03, -3.265e-04, 2.438e-02, 5.457e-02, 1.265e-02, 1.988e-02, -1.251e-02, 1.782e-02, -1.172e-02, -4.812e-02, 4.248e-02, 2.189e-02, 4.387e-02, -4.777e-02), r);\n\tr = MulAdd(s0_4, M4(-2.666e-02, 5.312e-02, 3.600e-02, 3.440e-02, -5.164e-02, 1.049e-01, -8.496e-02, -8.078e-02, 1.077e-02, -2.606e-02, -3.434e-02, 1.633e-02, 1.834e-02, 3.657e-01, 1.811e-02, -1.689e-02), r);\n\tr = MulAdd(s0_5, M4(1.503e-01, 5.142e-02, 3.078e-02, -2.233e-03, -3.540e-02, -7.650e-02, -5.646e-02, 6.509e-02, -5.972e-02, 9.989e-02, -7.630e-02, -4.226e-02, -1.713e-01, 1.778e-02, 2.337e-02, 5.412e-03), r);\n\tr = MulAdd(s0_6, M4(1.487e-02, 1.589e-02, 1.909e-02, 2.397e-03, 8.638e-03, -5.430e-03, 1.950e-02, -4.088e-02, -3.951e-02, 8.155e-02, -4.656e-02, -4.532e-02, 5.799e-03, -3.091e-03, 7.556e-02, -9.244e-03), r);\n\tr = MulAdd(s0_7, M4(-3.682e-03, 2.624e-02, 1.519e-02, 1.910e-02, -4.077e-02, -3.815e-02, 2.944e-01, -1.562e-02, 5.634e-02, -1.586e-02, -8.042e-02, 5.548e-02, 2.209e-02, 5.010e-04, -1.945e-01, -7.837e-02), r);\n\tr = MulAdd(s0_8, M4(-4.235e-03, 7.396e-03, 3.855e-02, 2.943e-02, 3.392e-04, 2.840e-02, 4.555e-02, 3.071e-02, -2.447e-02, -2.686e-02, -1.474e-01, -1.236e-01, -4.732e-02, 2.316e-02, -1.916e-02, -2.356e-02), r);\n\tr = MulAdd(s1_0, M4(-5.662e-02, -1.745e-02, -5.033e-03, -1.262e-02, -1.416e-02, -2.888e-02, -5.133e-03, 2.311e-02, -2.334e-02, 2.234e-02, 3.550e-02, -3.701e-02, 9.749e-03, 1.249e-02, 8.601e-03, 2.353e-02), r);\n\tr = MulAdd(s1_1, M4(7.913e-02, 6.084e-02, -4.344e-02, 6.112e-02, 2.960e-02, 3.782e-02, -2.122e-02, 3.911e-02, 1.010e-01, -3.291e-02, -1.743e-02, 9.940e-02, -8.126e-02, -1.161e-02, -5.808e-02, -3.259e-02), r);\n\tr = MulAdd(s1_2, M4(-1.213e-02, 1.115e-03, -3.606e-02, 1.455e-02, 1.664e-02, 1.329e-02, -2.419e-03, 8.746e-03, 2.372e-02, 9.913e-02, 1.971e-02, -4.579e-02, 9.815e-03, 4.292e-02, -1.999e-02, -1.893e-02), r);\n\tr = MulAdd(s1_3, M4(-1.179e-02, -4.023e-02, -6.974e-03, 2.424e-02, 3.545e-02, 5.325e-02, -1.323e-02, 2.684e-02, -7.408e-03, 1.760e-02, 1.047e-01, -5.806e-03, 6.792e-03, -4.425e-02, -5.191e-02, -3.494e-02), r);\n\tr = MulAdd(s1_4, M4(1.662e-01, -1.880e-01, -1.949e-02, -1.400e-01, -2.261e-02, 6.909e-02, -8.400e-02, -3.382e-02, -4.781e-02, 7.937e-02, 1.563e-01, -1.889e-01, 1.464e-01, -5.023e-02, -9.010e-02, 1.950e-01), r);\n\tr = MulAdd(s1_5, M4(1.639e-01, -1.646e-01, -4.730e-03, 4.396e-02, -8.718e-02, -1.147e-01, -7.944e-02, 1.089e-02, 8.579e-02, 1.786e-01, -1.294e-01, 4.159e-02, -4.083e-01, -1.187e-01, 1.349e-03, 9.304e-02), r);\n\tr = MulAdd(s1_6, M4(3.600e-03, 3.908e-02, 1.479e-01, 2.928e-02, 2.900e-02, 1.703e-02, 2.995e-02, -1.953e-02, -1.578e-02, 3.095e-03, -4.326e-03, 2.029e-02, -7.464e-04, 1.157e-02, 4.377e-02, -1.657e-02), r);\n\tr = MulAdd(s1_7, M4(-1.218e-02, 1.004e-01, -1.666e-02, 2.707e-01, -7.272e-02, -6.441e-02, 1.782e-01, -3.960e-02, 1.067e-02, 1.358e-02, -8.120e-02, -9.335e-02, 7.539e-02, -4.229e-02, -1.822e-01, 8.759e-02), r);\n\tr = MulAdd(s1_8, M4(-1.353e-01, 6.616e-02, -1.582e-01, -1.910e-02, 5.130e-02, 5.146e-02, 2.419e-04, 5.632e-03, 4.300e-02, -9.703e-02, -1.843e-01, -8.131e-02, -2.054e-01, 5.484e-02, 4.258e-02, 8.032e-02), r);\n\tr = MulAdd(s2_0, M4(-1.443e-03, 1.266e-02, -4.377e-03, 1.456e-02, 9.075e-03, 3.822e-02, 1.862e-02, -8.763e-02, 3.358e-02, 3.704e-02, 5.637e-02, -1.078e-02, -5.603e-03, -8.833e-03, 6.170e-02, -3.101e-02), r);\n\tr = MulAdd(s2_1, M4(-8.875e-03, -4.255e-02, -8.639e-03, -3.144e-02, 5.338e-02, 1.993e-02, -2.897e-02, -2.618e-02, -2.192e-02, -1.938e-02, 6.725e-02, 1.013e-02, -8.374e-02, 1.854e-01, 1.681e-01, 1.666e-01), r);\n\tr = MulAdd(s2_2, M4(-3.852e-02, -1.331e-02, -8.824e-03, 1.680e-02, -9.953e-03, 4.866e-02, -2.119e-02, -2.544e-02, 1.733e-02, 8.523e-03, 5.700e-02, -2.003e-02, 1.287e-01, 8.605e-02, 3.843e-03, -3.362e-02), r);\n\tr = MulAdd(s2_3, M4(-1.649e-02, -5.156e-02, 2.322e-02, 2.621e-02, -4.374e-03, -4.031e-02, 1.849e-02, -2.824e-02, 1.557e-02, -2.727e-02, 6.803e-02, 1.272e-02, -3.532e-02, 2.136e-02, -1.791e-02, -3.532e-02), r);\n\tr = MulAdd(s2_4, M4(-1.233e-01, 1.773e-01, -1.449e-02, -1.111e-01, 1.522e-01, 5.892e-02, -7.358e-02, -2.490e-03, -7.480e-02, -9.953e-02, 4.489e-02, 5.109e-02, 9.398e-03, 1.778e-01, 5.933e-02, -1.200e-01), r);\n\tr = MulAdd(s2_5, M4(4.894e-02, 6.952e-02, 1.113e-03, -3.899e-02, 1.489e-01, 2.495e-02, -5.650e-02, -2.200e-02, 3.888e-02, -5.917e-02, 5.631e-02, -5.648e-03, 4.334e-02, -1.391e-01, -1.235e-01, 1.303e-01), r);\n\tr = MulAdd(s2_6, M4(-2.882e-02, -9.277e-04, 2.776e-02, 4.659e-03, -6.010e-03, 8.332e-03, 1.627e-02, 6.162e-03, 1.398e-02, 6.050e-04, 8.861e-02, 8.111e-03, -2.020e-02, -2.625e-02, -2.498e-02, 3.772e-02), r);\n\tr = MulAdd(s2_7, M4(-2.603e-02, -4.788e-02, 1.212e-01, 2.412e-02, 1.096e-01, 6.875e-02, -4.077e-02, -2.471e-02, 1.411e-02, 2.778e-02, 2.659e-02, -7.912e-03, 2.304e-02, 1.183e-02, -2.530e-01, -6.461e-02), r);\n\tr = MulAdd(s2_8, M4(-1.540e-02, 1.168e-03, 1.128e-02, -1.633e-02, 2.524e-02, 3.186e-02, 5.005e-03, -7.069e-03, 5.819e-04, 8.252e-03, 1.526e-01, 1.689e-02, 3.763e-02, -1.503e-02, -6.911e-02, -1.912e-02), r);\n\tr = MulAdd(s3_0, M4(-2.372e-03, 1.034e-02, 1.729e-03, 2.638e-02, 7.424e-03, 4.830e-02, 3.837e-02, -1.182e-01, -3.794e-02, 4.551e-02, 4.351e-02, -6.389e-02, -3.141e-02, -7.017e-02, -1.263e-02, -2.644e-02), r);\n\tr = MulAdd(s3_1, M4(-2.983e-02, 4.225e-02, -1.368e-02, -1.883e-03, -3.442e-02, -1.005e-01, -2.421e-02, 6.129e-02, 1.177e-01, 1.918e-01, 1.059e-01, -4.087e-02, 5.202e-02, -1.259e-01, -1.377e-02, -2.708e-02), r);\n\tr = MulAdd(s3_2, M4(2.647e-02, -7.393e-02, -2.562e-02, 2.553e-02, 1.038e-01, -2.515e-02, -1.384e-02, -5.238e-02, 3.187e-02, 4.110e-02, 4.839e-02, -3.347e-02, 4.652e-02, 2.220e-02, -2.716e-02, 2.800e-02), r);\n\tr = MulAdd(s3_3, M4(5.081e-03, 5.175e-02, 5.579e-02, 2.651e-02, -6.240e-02, -8.506e-02, 1.635e-02, 7.569e-02, 3.674e-02, 7.343e-02, 9.829e-02, -8.204e-03, -1.582e-02, 6.919e-02, -8.234e-02, -3.219e-03), r);\n\tr = MulAdd(s3_4, M4(-7.487e-02, 3.794e-01, 1.092e-01, 6.132e-02, -2.458e-01, 5.238e-02, -7.515e-02, 4.969e-02, 9.227e-02, 8.565e-02, 2.066e-01, -2.635e-01, 5.388e-02, 3.474e-02, -5.871e-02, 8.452e-02), r);\n\tr = MulAdd(s3_5, M4(1.793e-01, 3.243e-01, 6.174e-02, 3.000e-02, -1.568e-01, -2.187e-02, -6.003e-02, 7.308e-02, -1.456e-01, 1.412e-01, 1.136e-01, 1.225e-02, -2.162e-02, -2.000e-02, -1.172e-01, -7.278e-02), r);\n\tr = MulAdd(s3_6, M4(2.557e-05, -3.526e-03, 7.598e-02, 2.888e-02, -1.007e-02, -1.121e-02, 7.371e-02, -2.658e-03, -4.684e-03, 1.377e-01, 1.506e-01, -1.538e-01, -1.258e-02, -3.806e-03, -2.926e-02, -5.665e-03), r);\n\tr = MulAdd(s3_7, M4(-7.977e-02, 7.167e-02, 1.215e-01, 1.001e-01, 1.639e-01, 5.450e-02, -3.106e-02, 2.305e-02, 2.065e-01, 1.043e-03, 4.629e-01, 7.788e-02, 1.561e-02, -1.805e-03, -7.499e-03, -5.985e-03), r);\n\tr = MulAdd(s3_8, M4(-3.189e-01, 8.572e-02, 5.205e-02, -5.879e-03, 3.003e-02, -3.599e-02, -9.245e-03, 6.641e-02, 9.694e-02, 1.107e-01, 1.427e-01, -1.131e-01, -2.880e-02, -4.217e-04, -7.266e-02, -4.372e-02), r);\n\tr = MulAdd(s4_0, M4(7.380e-03, 2.803e-02, -9.678e-03, 1.445e-02, -1.174e-01, -1.182e-01, -5.408e-02, 1.256e-01, 1.203e-02, 5.464e-02, 5.106e-02, -1.193e-01, 2.103e-02, 2.005e-02, 6.424e-03, -7.796e-03), r);\n\tr = MulAdd(s4_1, M4(1.144e-01, 9.673e-02, 4.603e-02, -1.514e-02, 5.934e-02, 3.573e-01, -2.150e-02, 4.749e-02, -1.334e-01, -4.821e-02, 7.544e-02, -2.522e-02, -7.433e-02, -1.898e-02, -6.274e-02, 9.512e-03), r);\n\tr = MulAdd(s4_2, M4(1.210e-01, -7.077e-02, 4.060e-02, -4.624e-02, 1.264e-01, 1.023e-01, 1.113e-02, -2.238e-02, -2.822e-02, 1.062e-02, -7.220e-04, 7.964e-03, 9.206e-02, -1.255e-01, -5.626e-03, 6.488e-03), r);\n\tr = MulAdd(s4_3, M4(-2.819e-02, -5.091e-02, -2.555e-02, 5.825e-02, 2.027e-02, -1.595e-02, 7.369e-02, 1.607e-01, 7.973e-03, -9.789e-03, 6.486e-02, -5.431e-02, 1.557e-02, 2.131e-02, -6.740e-02, -3.800e-03), r);\n\tr = MulAdd(s4_4, M4(2.899e-02, -1.963e-01, -4.447e-03, -1.937e-01, 1.544e-02, 5.877e-01, 1.209e-01, 2.231e-01, 5.151e-02, -1.451e-01, -1.265e-01, 3.621e-01, -4.030e-02, 1.096e-02, 1.394e-01, 1.566e-01), r);\n\tr = MulAdd(s4_5, M4(-1.220e-01, -1.074e-01, -4.688e-02, 1.139e-01, -1.270e-01, -1.958e-01, -6.958e-02, 5.790e-02, -2.125e-01, 2.384e-02, -1.143e-01, -2.472e-02, -4.480e-02, 1.414e-01, 2.537e-02, -1.956e-02), r);\n\tr = MulAdd(s4_6, M4(-2.249e-03, 4.939e-02, 2.547e-02, 6.518e-03, 1.783e-02, -4.854e-02, 9.588e-02, 1.246e-01, -5.187e-02, 1.011e-02, 6.236e-02, 7.764e-02, 5.926e-02, 1.052e-03, -9.210e-02, 1.820e-02), r);\n\tr = MulAdd(s4_7, M4(1.112e-02, -1.005e-03, 5.627e-02, -4.650e-03, -1.019e-01, -2.774e-02, -4.797e-02, -9.489e-02, 1.611e-02, 2.311e-02, 4.969e-02, 2.918e-03, 9.366e-03, 2.128e-02, -2.667e-02, 8.454e-03), r);\n\tr = MulAdd(s4_8, M4(7.954e-02, -1.162e-02, -3.825e-02, 3.051e-02, 5.782e-02, 1.317e-02, -2.331e-02, 1.714e-01, -5.622e-02, -4.566e-03, -1.264e-01, -4.613e-02, -3.620e-03, 2.095e-02, 1.811e-01, 4.435e-02), r);\n\tr = MulAdd(s5_0, M4(1.911e-02, 4.114e-02, -2.698e-02, 7.956e-03, 4.051e-02, 1.081e-01, -2.460e-02, 3.704e-02, -2.240e-02, -7.579e-03, 2.443e-02, -3.274e-02, -5.654e-02, -1.421e-01, 9.256e-03, 2.626e-03), r);\n\tr = MulAdd(s5_1, M4(5.279e-02, 1.891e-01, 2.931e-03, 6.000e-02, -5.619e-02, 9.849e-03, 7.842e-03, 4.068e-02, 7.803e-02, -7.617e-03, 2.789e-02, -1.069e-01, 8.581e-02, 2.530e-02, -5.946e-02, 4.150e-02), r);\n\tr = MulAdd(s5_2, M4(-1.838e-02, -5.041e-03, -2.386e-02, -9.564e-03, 8.040e-03, -1.063e-01, -1.715e-02, 2.375e-02, -3.968e-02, 2.704e-02, 1.302e-02, -2.781e-02, -1.921e-02, 3.051e-02, 3.794e-03, 2.820e-03), r);\n\tr = MulAdd(s5_3, M4(-1.307e-02, -3.145e-02, -1.016e-03, 8.268e-03, 3.836e-02, -9.889e-02, 2.164e-02, 2.833e-02, 4.851e-03, -3.649e-02, -4.677e-02, -1.289e-02, -4.046e-02, 1.519e-01, -5.701e-02, 1.659e-02), r);\n\tr = MulAdd(s5_4, M4(1.599e-02, -1.972e-01, 5.258e-02, -9.934e-02, -6.811e-02, 5.773e-03, 2.508e-02, 3.029e-02, -4.904e-02, -2.255e-02, -4.280e-02, 1.142e-01, 1.684e-01, -2.098e-01, -3.852e-02, 1.056e-01), r);\n\tr = MulAdd(s5_5, M4(-1.391e-01, 1.769e-01, 1.968e-02, 3.184e-02, 2.109e-02, 3.398e-02, -3.454e-02, 2.694e-02, -2.308e-02, -5.924e-02, -4.630e-02, 2.703e-03, -2.114e-01, -4.276e-02, -2.947e-02, 8.727e-02), r);\n\tr = MulAdd(s5_6, M4(-2.128e-02, 1.915e-02, 1.806e-02, 8.424e-03, 4.411e-03, 3.856e-02, 4.922e-03, -1.195e-02, -1.828e-02, -2.112e-02, -1.254e-02, 7.101e-02, 1.845e-02, -1.504e-02, -2.836e-02, 9.746e-03), r);\n\tr = MulAdd(s5_7, M4(2.673e-02, -7.386e-03, 5.003e-02, -5.457e-02, 9.805e-02, -1.111e-02, 1.450e-02, 5.296e-02, -1.907e-02, -3.562e-02, -5.054e-02, -4.874e-02, 1.863e-02, 1.324e-01, 3.033e-02, 1.632e-02), r);\n\tr = MulAdd(s5_8, M4(6.026e-02, -5.803e-03, 3.790e-02, -1.785e-02, -6.598e-03, 6.772e-03, 2.008e-02, -7.773e-03, 3.404e-02, -5.681e-02, -4.015e-02, -1.481e-02, 3.457e-02, 8.365e-02, -1.311e-02, 2.835e-02), r);\n\tr = MulAdd(s6_0, M4(1.874e-02, 2.963e-02, 8.589e-03, 9.893e-03, 1.142e-02, 5.424e-03, 9.955e-03, 9.789e-03, -4.377e-02, -2.456e-01, 6.007e-02, -3.494e-02, 9.568e-03, -1.820e-02, -1.093e-02, 1.087e-03), r);\n\tr = MulAdd(s6_1, M4(-1.324e-01, 3.039e-02, -5.110e-03, -1.549e-03, 1.369e-02, 7.104e-02, -3.902e-03, -1.145e-02, 3.795e-01, -4.257e-01, 3.671e-02, 1.384e-02, 1.646e-02, -2.939e-02, 9.106e-03, 2.023e-02), r);\n\tr = MulAdd(s6_2, M4(4.218e-02, -3.713e-02, -3.178e-02, 3.314e-02, 5.291e-03, 1.776e-02, 3.924e-04, -1.052e-02, -9.073e-02, -3.172e-01, -3.482e-02, -5.055e-02, -1.385e-02, 7.729e-02, 2.638e-03, -1.892e-04), r);\n\tr = MulAdd(s6_3, M4(2.294e-02, -6.769e-02, 1.210e-02, 9.301e-03, -1.003e-02, 1.296e-02, -3.793e-02, 9.515e-03, 7.019e-03, 6.073e-02, 1.563e-01, -7.581e-03, 1.393e-02, 1.405e-02, -6.916e-02, 1.075e-02), r);\n\tr = MulAdd(s6_4, M4(-8.817e-02, 2.766e-03, -5.930e-02, 1.035e-01, -6.339e-02, 2.813e-02, 9.339e-02, -1.344e-01, 1.301e-01, 2.397e-01, -4.362e-02, 2.980e-02, 1.294e-01, 7.722e-02, 1.689e-02, 5.884e-02), r);\n\tr = MulAdd(s6_5, M4(1.634e-01, -1.067e-01, -3.926e-02, 1.696e-02, 2.136e-01, 1.045e-02, -8.671e-03, -6.394e-03, -2.086e-01, 6.436e-02, -8.610e-02, -3.077e-02, -1.447e-01, 1.470e-02, -2.206e-02, -8.833e-02), r);\n\tr = MulAdd(s6_6, M4(4.121e-02, 3.653e-03, 9.934e-03, -6.902e-03, 3.086e-03, -1.948e-03, -3.164e-03, -6.264e-03, 1.644e-02, -4.309e-02, 1.099e-01, 1.237e-02, 4.810e-03, 3.916e-02, -9.033e-02, -1.602e-02), r);\n\tr = MulAdd(s6_7, M4(4.115e-02, -7.165e-03, -2.393e-02, -1.639e-02, 2.697e-02, -2.052e-02, -5.419e-02, -4.974e-03, 6.181e-02, -9.166e-03, 3.334e-02, 2.322e-02, 1.120e-01, 8.432e-02, 6.979e-03, -1.082e-01), r);\n\tr = MulAdd(s6_8, M4(1.035e-01, -2.271e-02, -2.727e-03, 1.913e-02, -3.115e-02, -2.378e-03, -1.533e-02, -3.342e-02, -1.665e-01, -3.854e-02, -7.222e-02, 4.908e-02, -1.622e-01, 2.703e-02, 1.628e-03, 2.494e-02), r);\n\tr = MulAdd(s7_0, M4(2.206e-02, -7.713e-02, -1.060e-02, -7.856e-03, -8.739e-02, -8.483e-02, 1.705e-02, 2.507e-02, 1.730e-02, 1.474e-02, 1.893e-02, 1.194e-02, -2.405e-02, -5.729e-02, -1.529e-02, 2.111e-02), r);\n\tr = MulAdd(s7_1, M4(4.148e-02, 4.829e-02, -9.404e-03, 2.608e-02, 6.859e-02, -8.264e-02, 4.951e-02, -2.350e-02, -4.359e-02, 2.061e-05, 4.833e-03, 4.083e-03, 2.436e-03, 3.365e-04, 1.053e-02, -4.982e-03), r);\n\tr = MulAdd(s7_2, M4(2.788e-02, 5.720e-02, -1.417e-02, -1.855e-02, -1.366e-01, 1.563e-02, 1.777e-02, 2.607e-02, 9.303e-04, 1.798e-02, 6.918e-03, -1.112e-02, 1.452e-02, -3.567e-03, -1.566e-02, -2.902e-02), r);\n\tr = MulAdd(s7_3, M4(4.434e-02, 1.092e-01, 6.465e-02, -1.144e-01, -1.169e-01, -7.731e-02, 4.387e-02, 4.264e-02, 1.655e-04, -1.567e-02, -3.360e-03, 2.005e-03, 7.195e-02, 1.235e-01, -5.993e-02, 6.344e-02), r);\n\tr = MulAdd(s7_4, M4(-2.846e-01, 7.017e-01, 8.025e-02, 3.689e-01, 2.017e-01, 9.575e-02, 1.644e-01, 3.223e-02, 7.108e-02, 3.252e-02, 2.997e-02, 4.112e-02, 1.675e-01, 4.688e-01, 5.569e-02, 4.097e-01), r);\n\tr = MulAdd(s7_5, M4(-8.491e-02, 5.125e-02, -4.314e-02, 4.776e-02, 4.496e-02, -1.387e-01, -2.997e-02, 5.575e-02, -1.348e-01, 2.937e-02, 5.464e-03, -4.188e-04, -5.936e-02, 9.907e-02, -2.264e-02, 4.540e-02), r);\n\tr = MulAdd(s7_6, M4(4.639e-02, 2.088e-02, -5.529e-02, 5.430e-02, -2.772e-02, -9.927e-02, 7.334e-02, 5.674e-02, -5.370e-03, 1.712e-02, 1.511e-02, -9.812e-03, 7.644e-03, -4.335e-03, -9.858e-02, 1.102e-02), r);\n\tr = MulAdd(s7_7, M4(-3.219e-02, 3.117e-02, -6.292e-02, -2.947e-01, -5.795e-02, -4.024e-02, -8.836e-03, -7.493e-02, -3.911e-03, 1.426e-02, 8.336e-02, 5.121e-03, 9.672e-02, 2.570e-01, 3.033e-03, -7.363e-02), r);\n\tr = MulAdd(s7_8, M4(1.485e-01, -7.624e-02, 4.307e-02, 6.218e-02, 2.407e-02, 2.447e-02, 6.895e-03, 7.684e-02, 4.433e-02, -1.227e-02, 4.716e-02, 1.408e-02, -2.840e-01, 8.665e-02, 8.153e-02, 9.530e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -1.575e-03, 9.477e-05, 3.103e-03, 2.705e-03 };\n\tr = MulAdd(s0_0, M4(-1.688e-02, 1.620e-03, 2.600e-03, -1.661e-02, -1.969e-02, -4.045e-02, 2.004e-02, 1.275e-02, -2.568e-03, -1.516e-02, -1.471e-02, 3.537e-02, 1.000e-02, -4.602e-03, 3.973e-02, 4.770e-03), r);\n\tr = MulAdd(s0_1, M4(-6.627e-02, -1.956e-03, -2.893e-02, -1.149e-02, 7.862e-02, -2.627e-02, 2.400e-02, 3.658e-02, -2.325e-02, -4.384e-02, -8.477e-03, -2.188e-02, -4.177e-02, -5.982e-03, 6.463e-03, 5.629e-04), r);\n\tr = MulAdd(s0_2, M4(-5.602e-02, 2.109e-02, 1.306e-02, -2.271e-02, 2.987e-02, 2.223e-02, -1.418e-02, 7.313e-02, 3.753e-02, -4.956e-03, -2.664e-02, -3.003e-02, 3.356e-02, -3.528e-04, -6.530e-03, 9.253e-02), r);\n\tr = MulAdd(s0_3, M4(-3.501e-02, 2.454e-02, 4.258e-02, -2.786e-03, -8.423e-03, -3.658e-03, 3.081e-02, -5.229e-02, -3.026e-03, -3.401e-03, -4.111e-02, 2.753e-02, 4.135e-02, -4.806e-02, -4.145e-02, -8.509e-03), r);\n\tr = MulAdd(s0_4, M4(-6.815e-02, -1.008e-02, 9.775e-02, -1.491e-03, 3.135e-01, 1.355e-01, 4.295e-01, 1.489e-01, -8.228e-02, 1.565e-01, -4.864e-02, -1.931e-03, 1.782e-01, 1.140e-01, -5.738e-02, -1.471e-01), r);\n\tr = MulAdd(s0_5, M4(-6.358e-02, -3.115e-02, 1.176e-02, -1.185e-01, -5.756e-02, -1.359e-03, 2.088e-02, 1.216e-02, 2.319e-01, 8.109e-03, -1.532e-02, 1.001e-01, -4.522e-02, -3.685e-02, 8.178e-02, 1.908e-01), r);\n\tr = MulAdd(s0_6, M4(1.539e-03, -2.277e-02, -4.300e-02, -7.362e-03, 1.287e-02, -3.248e-02, 3.525e-02, 6.688e-04, 1.585e-02, -1.905e-02, 4.454e-02, 6.523e-04, 2.880e-02, 2.347e-02, 1.953e-02, -5.062e-03), r);\n\tr = MulAdd(s0_7, M4(-3.124e-02, -3.693e-02, 1.489e-02, 1.767e-03, 1.441e-02, -1.741e-01, -1.433e-02, 7.572e-02, -1.182e-02, 6.519e-02, 7.046e-02, 1.714e-02, -4.300e-02, -2.017e-01, -2.466e-03, 2.791e-02), r);\n\tr = MulAdd(s0_8, M4(-7.179e-03, 4.757e-02, 1.911e-02, 3.829e-02, -1.630e-02, -9.665e-03, 4.565e-02, -5.551e-02, -9.989e-03, -1.013e-01, -4.229e-02, -7.202e-02, 1.935e-02, -4.290e-03, -1.460e-02, -1.759e-04), r);\n\tr = MulAdd(s1_0, M4(8.306e-03, -4.549e-02, 3.787e-02, 3.353e-02, -4.052e-02, 1.061e-02, 3.073e-02, -4.544e-03, 3.342e-02, -1.539e-02, 4.609e-02, 4.170e-02, 3.968e-03, -5.158e-03, 3.410e-02, -2.230e-02), r);\n\tr = MulAdd(s1_1, M4(-8.669e-02, 8.401e-03, -8.128e-02, -1.108e-01, 2.188e-02, 5.959e-03, -6.349e-02, 3.816e-02, 4.950e-02, 1.902e-02, -4.972e-02, 6.662e-03, -5.517e-02, 1.307e-02, -1.023e-01, 1.569e-01), r);\n\tr = MulAdd(s1_2, M4(-4.339e-03, -9.116e-03, 3.269e-02, 6.631e-03, 3.124e-02, 1.329e-02, 3.488e-02, 5.174e-02, -1.194e-01, -5.892e-03, 1.328e-01, -7.424e-02, 3.150e-02, 9.712e-03, -1.382e-01, 1.354e-01), r);\n\tr = MulAdd(s1_3, M4(2.349e-02, -1.110e-01, 1.577e-01, 4.993e-02, -7.000e-02, 1.363e-02, -6.165e-02, -6.123e-02, 8.230e-03, -5.006e-03, 6.500e-02, -1.023e-03, -2.211e-04, -7.154e-03, -2.293e-02, 1.220e-03), r);\n\tr = MulAdd(s1_4, M4(7.914e-03, -1.903e-02, 1.502e-02, -2.245e-01, 3.243e-01, 1.363e-01, 2.421e-01, 1.736e-01, -1.952e-01, 1.249e-01, -1.436e-01, 8.891e-02, 5.208e-02, 5.334e-01, -4.287e-01, 3.536e-02), r);\n\tr = MulAdd(s1_5, M4(-6.245e-02, -2.399e-02, -5.681e-02, -1.695e-01, -7.771e-02, -4.787e-02, -2.778e-02, 7.013e-03, 3.291e-01, -5.536e-03, -1.948e-01, 1.189e-01, -1.030e-01, 7.201e-02, 6.521e-02, 3.350e-01), r);\n\tr = MulAdd(s1_6, M4(9.517e-03, 2.329e-01, -1.247e-01, -1.798e-02, -2.311e-02, -5.092e-02, 6.913e-02, 2.517e-03, 3.602e-02, 2.896e-02, 3.974e-02, -1.510e-03, 6.330e-02, 1.061e-01, -1.001e-02, 5.840e-03), r);\n\tr = MulAdd(s1_7, M4(-1.230e-01, -3.088e-02, 1.096e-01, -2.161e-02, 2.731e-02, -1.112e-01, -1.242e-01, 7.487e-02, 4.701e-03, 1.032e-01, 4.261e-02, -1.760e-03, -2.495e-02, -1.617e-01, 9.928e-03, 2.328e-02), r);\n\tr = MulAdd(s1_8, M4(-7.188e-02, 3.817e-02, 4.786e-02, -4.014e-02, -7.561e-03, 1.417e-02, -6.037e-03, 9.124e-03, -2.451e-02, -7.406e-02, -5.443e-03, -5.927e-03, 3.337e-02, 6.084e-02, -3.750e-02, 1.238e-02), r);\n\tr = MulAdd(s2_0, M4(1.813e-02, -1.772e-03, 5.043e-03, 2.941e-02, 2.342e-02, -6.805e-03, -5.400e-02, -1.601e-02, -1.271e-02, -2.814e-02, 6.646e-02, -3.602e-02, -2.938e-02, 3.830e-02, -5.756e-02, 3.625e-02), r);\n\tr = MulAdd(s2_1, M4(-2.340e-02, 2.797e-02, -9.775e-02, -4.790e-03, -5.640e-02, -3.446e-02, 5.422e-02, -1.253e-01, 6.237e-02, 8.356e-04, -3.274e-02, 4.805e-02, -9.531e-02, 4.626e-04, 2.233e-03, 1.519e-01), r);\n\tr = MulAdd(s2_2, M4(6.482e-03, 5.675e-03, 6.174e-02, -3.843e-02, 3.552e-02, -1.070e-02, 3.641e-02, 6.807e-02, -4.083e-02, -5.972e-03, 2.947e-02, -3.639e-02, -3.855e-02, 2.284e-02, -2.588e-02, -8.389e-02), r);\n\tr = MulAdd(s2_3, M4(6.596e-02, 5.844e-02, -8.882e-02, 2.183e-02, 3.510e-02, -1.529e-01, 2.239e-02, 6.559e-02, -7.805e-03, 4.094e-02, -1.105e-02, 5.632e-03, 1.079e-01, -6.351e-03, 8.070e-02, 2.619e-02), r);\n\tr = MulAdd(s2_4, M4(-1.392e-01, -3.877e-02, 1.309e-01, 6.513e-02, 3.357e-02, -3.087e-02, -4.398e-02, -1.856e-01, -3.010e-02, -7.998e-03, -1.716e-02, 4.991e-02, -2.211e-01, -2.140e-01, 3.126e-03, 4.484e-02), r);\n\tr = MulAdd(s2_5, M4(1.858e-02, -7.505e-02, 4.180e-02, -3.502e-02, 8.565e-03, 2.029e-03, -4.294e-02, 5.614e-02, 1.200e-02, 5.652e-02, -3.376e-02, -2.676e-02, 6.660e-02, -1.177e-02, -4.299e-02, 3.267e-02), r);\n\tr = MulAdd(s2_6, M4(2.860e-02, -3.219e-02, -5.538e-03, -2.631e-03, -5.422e-02, 5.290e-02, 1.585e-02, -1.692e-02, -1.521e-03, 5.627e-03, 3.952e-03, -9.985e-03, 9.533e-03, 2.745e-02, -1.362e-03, 1.560e-02), r);\n\tr = MulAdd(s2_7, M4(-2.660e-03, 3.732e-02, 8.189e-02, 2.610e-02, -2.065e-02, -7.852e-02, 5.515e-02, -6.198e-02, 1.183e-02, 2.200e-02, -8.053e-03, -1.738e-03, -3.579e-02, -2.565e-02, 3.979e-02, 9.076e-03), r);\n\tr = MulAdd(s2_8, M4(2.500e-02, 4.805e-03, -2.546e-02, 1.595e-02, -3.212e-02, 1.141e-03, 5.625e-02, -1.051e-02, -2.014e-02, -3.098e-02, 4.631e-02, -8.121e-03, 4.655e-02, 5.989e-02, -2.590e-02, -5.759e-02), r);\n\tr = MulAdd(s3_0, M4(2.755e-02, 1.721e-02, -1.964e-02, 1.815e-02, 2.594e-02, 5.194e-02, -9.954e-02, 7.764e-03, -3.718e-02, -8.173e-03, -2.634e-02, -3.145e-02, -1.658e-02, -2.413e-03, 1.497e-02, 2.813e-02), r);\n\tr = MulAdd(s3_1, M4(-4.818e-02, 9.187e-03, 1.082e-01, -9.618e-03, -1.078e-03, -5.924e-02, 5.767e-02, -1.573e-01, -6.210e-02, -1.068e-01, 1.610e-01, -1.717e-01, 2.399e-02, -2.177e-02, -1.816e-01, 7.457e-02), r);\n\tr = MulAdd(s3_2, M4(3.239e-02, -3.052e-03, -5.994e-02, 7.106e-02, -4.328e-03, 1.696e-02, -4.923e-02, 5.518e-02, 1.881e-02, -8.143e-02, 1.245e-02, 1.153e-02, 3.943e-02, -2.338e-02, 4.641e-02, -1.856e-02), r);\n\tr = MulAdd(s3_3, M4(5.081e-02, -7.570e-03, -1.399e-01, -5.766e-03, 1.056e-01, -3.001e-02, -4.437e-02, 1.799e-02, 3.704e-02, -2.498e-01, 9.868e-02, -1.144e-02, 1.197e-01, 5.018e-02, -3.259e-02, -2.079e-02), r);\n\tr = MulAdd(s3_4, M4(1.858e-01, -2.154e-02, 1.039e-01, 1.476e-01, 3.315e-01, 1.923e-01, -9.577e-02, -2.388e-01, -3.060e-01, 2.650e-02, -4.730e-01, -4.012e-01, -1.727e-01, -5.333e-02, 1.566e-01, -2.474e-02), r);\n\tr = MulAdd(s3_5, M4(1.022e-02, -8.711e-02, 7.465e-02, 2.158e-03, -1.724e-02, 4.548e-02, -9.675e-02, -2.598e-02, -1.019e-01, -5.639e-02, 2.441e-01, 1.528e-01, 1.307e-01, 3.058e-02, -6.324e-02, 8.229e-02), r);\n\tr = MulAdd(s3_6, M4(2.247e-02, -4.279e-02, -7.730e-03, 2.664e-03, -5.508e-02, 1.184e-01, -2.194e-02, -2.835e-02, -6.838e-02, -1.008e-01, 1.036e-01, -3.276e-02, 4.933e-02, -3.893e-03, -1.141e-02, 3.247e-03), r);\n\tr = MulAdd(s3_7, M4(6.500e-02, -2.505e-02, -1.286e-01, 6.264e-02, 2.435e-02, -1.039e-01, 2.001e-02, -5.567e-02, -3.446e-02, 2.310e-04, 1.615e-01, -5.778e-02, -1.667e-02, -2.477e-02, 5.057e-02, 3.336e-02), r);\n\tr = MulAdd(s3_8, M4(-3.972e-02, 9.174e-02, 3.314e-03, 7.951e-02, -2.571e-02, 1.782e-02, 5.530e-02, 2.399e-02, 1.464e-02, -1.346e-01, -1.693e-02, -6.348e-02, 2.907e-02, -1.423e-02, -2.121e-02, -3.235e-04), r);\n\tr = MulAdd(s4_0, M4(-1.179e-02, -4.655e-02, 9.348e-03, -9.519e-03, -2.300e-01, 1.102e-03, 7.401e-02, 2.538e-02, 5.815e-02, 1.980e-01, -2.843e-02, -2.603e-02, 4.451e-02, -9.192e-03, 5.257e-02, -2.093e-02), r);\n\tr = MulAdd(s4_1, M4(-3.952e-02, -6.088e-02, 1.147e-01, 1.162e-03, -1.728e-01, 1.465e-03, -8.939e-02, -2.393e-02, 3.740e-01, 5.118e-03, -2.724e-01, -1.146e-01, 3.515e-02, -1.743e-02, -1.492e-01, 1.724e-01), r);\n\tr = MulAdd(s4_2, M4(3.989e-02, 4.006e-02, -6.266e-02, -4.154e-02, -3.374e-02, 1.111e-02, 1.076e-01, -5.814e-02, -1.787e-01, 6.540e-02, -5.756e-02, -4.558e-02, -5.229e-02, -1.605e-02, -3.009e-02, -7.247e-02), r);\n\tr = MulAdd(s4_3, M4(-6.962e-02, -1.067e-01, 8.455e-02, 2.799e-02, 3.317e-02, 2.349e-01, -5.347e-02, 3.982e-02, 9.300e-02, -7.524e-02, -2.305e-01, 1.330e-01, 7.355e-02, -3.701e-03, -8.832e-02, -6.464e-02), r);\n\tr = MulAdd(s4_4, M4(-1.125e-02, 2.497e-01, -9.808e-02, -1.238e-01, 2.612e-01, -5.283e-02, 9.616e-02, -2.290e-01, 2.161e-01, 3.140e-01, 1.661e-01, 8.358e-02, -1.595e-02, 1.697e-01, -8.378e-02, 4.489e-02), r);\n\tr = MulAdd(s4_5, M4(-7.592e-02, -6.611e-02, 3.207e-02, 6.973e-02, -9.163e-02, 2.582e-02, -4.628e-02, -7.371e-02, 6.590e-02, 1.204e-01, -5.078e-02, -3.495e-02, -4.221e-02, -6.323e-02, 5.784e-02, -1.189e-02), r);\n\tr = MulAdd(s4_6, M4(1.349e-02, 5.168e-02, -9.459e-03, -9.435e-03, -1.527e-02, -7.353e-02, 5.567e-02, 1.555e-02, -5.917e-03, 1.431e-01, 7.490e-03, -1.136e-02, -1.985e-02, 3.699e-02, -6.590e-03, -5.483e-02), r);\n\tr = MulAdd(s4_7, M4(-4.645e-02, -4.170e-02, 1.860e-02, -2.707e-02, -1.969e-02, 5.237e-02, -5.482e-02, -1.671e-02, 2.997e-02, 4.133e-02, 5.390e-02, 9.477e-03, -1.651e-02, -4.991e-02, -2.497e-02, -8.465e-03), r);\n\tr = MulAdd(s4_8, M4(-1.339e-02, 6.872e-02, -1.390e-02, -1.499e-02, 3.492e-03, 6.004e-02, 5.847e-02, 2.786e-02, -1.177e-02, -6.444e-02, -4.751e-04, 5.780e-03, -4.505e-02, 2.415e-02, 2.309e-02, -1.891e-02), r);\n\tr = MulAdd(s5_0, M4(-1.439e-02, 8.856e-03, -4.062e-03, -2.768e-02, 2.892e-03, 1.205e-02, 3.124e-02, -3.116e-02, 1.968e-02, -6.956e-02, 2.068e-02, 1.044e-02, 1.051e-01, 5.463e-03, -5.207e-02, 7.550e-02), r);\n\tr = MulAdd(s5_1, M4(1.705e-02, -1.009e-02, 2.104e-01, 2.771e-02, -2.763e-02, -1.016e-02, 2.913e-02, 1.721e-03, 4.321e-02, 3.347e-02, -2.001e-01, 5.190e-02, 2.019e-02, 2.347e-02, 3.138e-03, -7.216e-03), r);\n\tr = MulAdd(s5_2, M4(6.213e-02, 2.215e-04, -6.324e-02, 3.181e-03, -2.937e-02, 2.684e-02, -3.033e-02, -9.759e-03, 7.617e-03, 5.678e-03, 4.383e-02, 2.802e-02, -3.703e-02, -7.386e-02, -1.076e-01, -6.615e-02), r);\n\tr = MulAdd(s5_3, M4(-1.044e-01, -5.583e-02, 4.299e-02, -4.094e-03, 4.665e-03, 9.436e-02, 3.332e-02, -2.490e-02, -5.877e-03, 1.073e-01, -1.052e-01, -7.205e-04, 1.204e-01, -1.462e-02, 4.291e-02, 4.412e-02), r);\n\tr = MulAdd(s5_4, M4(-9.580e-03, 4.627e-02, -1.851e-01, -7.692e-03, 4.703e-02, 8.875e-02, -6.477e-02, -5.981e-02, 1.665e-01, 1.911e-01, 4.702e-02, 9.924e-02, -1.685e-01, 8.893e-02, 2.032e-02, -9.426e-02), r);\n\tr = MulAdd(s5_5, M4(5.551e-02, -1.719e-02, 1.029e-01, 8.649e-02, 7.177e-03, 6.821e-02, -2.894e-02, 2.611e-03, 5.830e-02, -2.083e-02, -5.045e-02, 3.884e-02, -1.416e-02, 1.542e-01, 4.160e-02, 3.347e-02), r);\n\tr = MulAdd(s5_6, M4(-4.073e-03, 3.413e-02, 2.664e-02, -1.858e-02, -9.691e-03, 8.637e-02, -3.548e-02, 1.617e-03, 7.458e-03, -3.505e-03, 2.383e-02, 1.316e-03, 5.534e-03, 2.217e-02, -4.426e-02, 2.022e-02), r);\n\tr = MulAdd(s5_7, M4(-3.211e-02, -1.215e-01, 1.905e-02, -2.665e-02, -1.887e-02, 1.581e-02, 1.180e-02, -1.465e-02, -6.945e-03, -6.458e-02, 2.229e-02, 2.173e-03, 5.289e-03, 1.785e-01, -2.382e-02, -7.196e-02), r);\n\tr = MulAdd(s5_8, M4(8.361e-03, -4.776e-02, -4.062e-02, -4.979e-03, -1.914e-02, -4.516e-02, 2.518e-02, -4.994e-02, -2.544e-02, 7.889e-03, 3.192e-02, 1.479e-02, 4.122e-02, -1.223e-01, -3.672e-02, 6.956e-02), r);\n\tr = MulAdd(s6_0, M4(2.982e-02, -2.237e-03, 3.926e-02, -1.372e-02, -2.704e-02, 1.751e-03, 2.775e-02, 1.043e-02, 1.676e-01, -2.489e-01, 7.805e-02, 4.061e-02, -6.912e-03, 6.682e-03, -3.892e-02, -4.953e-03), r);\n\tr = MulAdd(s6_1, M4(-6.340e-02, -1.980e-02, -7.033e-02, 9.388e-03, -3.794e-02, -2.723e-02, 1.208e-01, -4.089e-02, 6.312e-01, 5.578e-02, -1.312e-01, -5.149e-02, 7.622e-02, 1.538e-02, -2.418e-02, 2.198e-02), r);\n\tr = MulAdd(s6_2, M4(-1.989e-03, 2.276e-02, -5.157e-03, 2.582e-03, 1.265e-01, -1.245e-04, -4.509e-02, 6.542e-02, 2.313e-02, 4.024e-02, -1.322e-01, -1.653e-01, -6.536e-03, -9.204e-03, 5.613e-02, -1.824e-02), r);\n\tr = MulAdd(s6_3, M4(1.234e-01, -4.512e-03, -4.484e-02, -4.470e-03, -8.846e-03, -8.538e-02, -8.290e-03, -4.593e-02, -3.324e-02, -7.474e-02, 3.080e-02, -6.522e-02, -4.026e-02, 1.896e-02, 1.481e-02, -1.753e-03), r);\n\tr = MulAdd(s6_4, M4(-4.701e-02, 1.293e-02, 3.089e-02, -1.295e-01, 1.708e-02, 2.212e-02, -7.435e-02, -8.472e-03, 2.279e-01, -3.650e-02, 2.674e-01, -2.877e-01, 2.375e-01, -4.478e-02, 1.948e-01, 5.877e-02), r);\n\tr = MulAdd(s6_5, M4(7.374e-03, 5.838e-02, 1.708e-02, -2.078e-02, 4.462e-02, -5.084e-02, 2.283e-02, 4.827e-02, -1.656e-01, 6.517e-02, -5.528e-02, -2.095e-02, 2.431e-02, 1.133e-02, -1.470e-01, 2.211e-02), r);\n\tr = MulAdd(s6_6, M4(3.417e-02, 2.976e-02, -1.042e-02, -2.068e-03, 2.498e-02, 7.744e-02, 1.088e-02, -7.598e-03, -5.186e-02, 2.792e-02, -1.575e-02, -6.310e-03, -4.620e-02, -2.011e-02, 3.923e-02, -9.526e-03), r);\n\tr = MulAdd(s6_7, M4(4.330e-03, -4.339e-02, 6.602e-03, -3.648e-02, -4.646e-03, -1.361e-01, 5.384e-02, -2.349e-02, 1.334e-01, -1.469e-01, 2.850e-02, -4.574e-02, 6.043e-02, -5.685e-02, -5.057e-02, -4.692e-03), r);\n\tr = MulAdd(s6_8, M4(2.838e-03, 3.079e-02, -1.281e-02, -6.331e-02, 4.269e-02, -2.337e-02, -4.065e-02, 5.503e-02, -1.305e-01, 1.135e-01, 1.826e-02, 1.203e-02, -2.164e-02, -3.076e-03, 2.937e-02, 4.005e-02), r);\n\tr = MulAdd(s7_0, M4(6.965e-02, 4.338e-03, 1.194e-01, 2.811e-02, -2.574e-02, 1.949e-02, 3.243e-02, 4.437e-02, 7.250e-02, -2.422e-04, -1.091e-03, -1.469e-02, 7.245e-03, -7.447e-03, 2.299e-02, 4.998e-03), r);\n\tr = MulAdd(s7_1, M4(-8.725e-05, -2.240e-02, -8.736e-02, -1.595e-02, 7.126e-02, 5.370e-02, -1.651e-01, 1.672e-02, 7.959e-02, 1.543e-02, -7.129e-02, 3.632e-02, 6.645e-03, -2.822e-02, -2.425e-03, 3.294e-02), r);\n\tr = MulAdd(s7_2, M4(-2.685e-02, 3.116e-02, -1.898e-02, -4.718e-02, 5.786e-03, 1.592e-02, 8.082e-04, -1.662e-02, -2.474e-02, 1.294e-02, -5.428e-03, 1.814e-02, -3.227e-02, 3.449e-03, -7.038e-02, -3.596e-02), r);\n\tr = MulAdd(s7_3, M4(3.813e-02, -2.099e-03, 3.946e-02, -4.075e-02, -4.265e-03, 5.593e-02, -8.187e-02, 4.551e-02, -7.894e-03, -2.068e-02, 2.511e-02, -6.803e-04, -1.260e-01, -8.680e-02, -1.011e-02, -4.539e-02), r);\n\tr = MulAdd(s7_4, M4(-2.995e-01, 1.242e-01, 4.846e-02, 2.231e-02, 4.581e-02, 1.627e-01, -1.363e-02, -4.450e-02, -1.975e-02, -1.774e-02, 5.768e-02, -1.498e-02, 7.242e-01, 1.627e-01, 2.366e-02, 7.746e-01), r);\n\tr = MulAdd(s7_5, M4(-2.051e-02, 9.773e-02, 1.240e-01, 8.467e-02, 3.193e-02, 3.783e-02, -7.459e-02, 3.517e-02, -1.552e-02, -2.133e-02, -2.022e-03, -1.416e-02, -1.032e-01, 2.212e-03, -8.253e-02, -2.403e-02), r);\n\tr = MulAdd(s7_6, M4(6.575e-02, -1.535e-01, 6.263e-02, 1.718e-02, 2.965e-02, 1.927e-02, 7.256e-03, 5.714e-03, -1.267e-03, -2.908e-02, 1.035e-04, 2.608e-03, -2.016e-02, 4.315e-02, 1.622e-02, -3.870e-02), r);\n\tr = MulAdd(s7_7, M4(-7.318e-03, -4.186e-02, -2.571e-02, -7.417e-03, 1.255e-02, -1.175e-01, -6.481e-02, 2.642e-02, -1.088e-02, 3.584e-02, 1.026e-02, 1.582e-02, 1.733e-01, -6.457e-02, -2.087e-01, 6.831e-03), r);\n\tr = MulAdd(s7_8, M4(9.267e-02, -4.128e-02, -4.563e-02, -1.067e-01, 4.111e-02, 7.397e-02, -9.920e-03, 2.718e-02, 2.727e-03, -1.785e-02, -1.196e-03, -1.561e-03, -4.283e-03, 9.742e-02, 2.194e-02, 9.397e-02), r);\n\treturn r;\n}\n\nV4 f2(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 2.176e-03, 6.722e-03, 4.071e-04, 1.471e-03 };\n\tr = MulAdd(s0_0, M4(-6.286e-02, -2.502e-04, -1.782e-02, -1.386e-02, -4.582e-03, 1.342e-02, -2.703e-02, -1.885e-02, -2.375e-02, -1.743e-02, -2.331e-02, -4.602e-02, 4.226e-02, 4.109e-03, 4.430e-03, -1.428e-02), r);\n\tr = MulAdd(s0_1, M4(-3.584e-02, -5.431e-02, 2.948e-02, -1.796e-02, 3.327e-02, -7.598e-03, -2.264e-02, -5.021e-02, 2.741e-02, 1.018e-02, 2.019e-02, 1.274e-02, -3.174e-02, 3.511e-02, 7.139e-03, 1.037e-01), r);\n\tr = MulAdd(s0_2, M4(-1.668e-02, 8.601e-03, -1.703e-02, 1.649e-02, -1.855e-02, -1.570e-02, -2.058e-03, -7.941e-03, 1.613e-02, 1.590e-02, 1.513e-02, 2.712e-02, 3.699e-02, -4.506e-02, -2.368e-03, -4.616e-02), r);\n\tr = MulAdd(s0_3, M4(1.365e-01, 2.775e-02, 4.286e-02, 1.690e-02, -8.827e-02, 5.031e-02, -3.154e-02, 1.501e-02, 1.430e-02, -3.424e-02, -2.379e-02, 1.967e-02, 1.414e-02, 2.102e-02, 7.210e-02, 3.716e-02), r);\n\tr = MulAdd(s0_4, M4(8.167e-02, 1.204e-01, -1.147e-01, 4.186e-02, 1.293e-02, 5.409e-02, 2.401e-02, 1.971e-01, 8.087e-02, -9.191e-02, -1.999e-02, 4.654e-02, -5.427e-02, 2.744e-01, 1.111e-01, -4.410e-02), r);\n\tr = MulAdd(s0_5, M4(-4.244e-02, 4.083e-02, -2.514e-03, -6.810e-03, 7.438e-02, -7.925e-02, -3.725e-02, 3.084e-03, -1.768e-01, 1.198e-02, 3.945e-02, 1.902e-02, 5.694e-02, -1.233e-02, -5.633e-02, 3.284e-02), r);\n\tr = MulAdd(s0_6, M4(-3.574e-02, -1.176e-02, -3.352e-02, -2.732e-02, 5.256e-02, -4.201e-02, 2.941e-02, 2.193e-02, -1.392e-01, 7.087e-03, 4.034e-02, 3.648e-02, 7.982e-02, -4.713e-02, -3.490e-02, 3.462e-02), r);\n\tr = MulAdd(s0_7, M4(-1.267e-01, 4.749e-02, 9.924e-02, -4.168e-02, 1.007e-01, 1.167e-01, 6.051e-02, -8.266e-03, -1.707e-01, 7.560e-02, -6.771e-02, -2.184e-03, 8.028e-02, 1.047e-01, 5.680e-02, 4.491e-02), r);\n\tr = MulAdd(s0_8, M4(4.774e-02, 3.688e-03, -1.564e-03, -8.394e-03, -8.898e-02, 6.652e-02, 1.923e-02, -2.762e-02, -4.141e-02, -3.580e-02, 2.316e-02, 6.226e-02, -1.643e-02, 5.038e-02, 4.202e-02, -8.634e-04), r);\n\tr = MulAdd(s1_0, M4(-2.159e-02, 4.608e-02, 2.270e-02, 6.714e-02, 3.474e-02, 1.003e-02, -7.786e-03, 5.896e-03, 1.480e-02, -5.471e-02, -1.593e-03, 2.905e-02, -8.552e-03, 5.134e-02, 1.262e-02, -5.044e-02), r);\n\tr = MulAdd(s1_1, M4(-8.847e-02, 1.202e-01, -3.535e-03, -9.698e-02, 2.149e-02, -2.206e-02, -2.659e-02, -4.115e-02, 3.202e-02, 3.496e-02, -5.574e-02, 4.296e-03, -4.881e-02, 5.946e-03, 2.066e-03, 5.490e-02), r);\n\tr = MulAdd(s1_2, M4(-7.083e-02, -3.596e-02, -2.115e-02, 5.332e-02, 4.928e-03, -2.566e-02, -1.139e-03, 4.865e-03, 3.236e-02, 1.707e-02, 2.865e-02, 6.467e-02, 6.417e-02, -2.363e-02, -1.192e-02, -3.437e-02), r);\n\tr = MulAdd(s1_3, M4(9.685e-02, -1.008e-01, -3.245e-02, -3.055e-02, -9.284e-02, 4.332e-02, -3.618e-02, 1.080e-02, 1.041e-02, -2.281e-02, -7.568e-02, -5.285e-02, -2.318e-02, 3.665e-02, 2.219e-02, -1.400e-02), r);\n\tr = MulAdd(s1_4, M4(1.862e-01, 4.608e-01, -6.891e-02, 1.809e-01, -3.542e-02, 1.006e-01, 4.801e-02, 9.250e-02, 4.619e-01, 2.440e-02, 2.894e-01, 3.075e-02, -1.535e-01, -1.170e-01, 5.626e-03, -2.781e-01), r);\n\tr = MulAdd(s1_5, M4(2.493e-02, 9.614e-02, 4.884e-02, -7.251e-02, 2.368e-02, -3.675e-02, -3.287e-02, 8.828e-03, 1.801e-01, -1.446e-01, -5.158e-02, 1.015e-01, 3.986e-02, -5.168e-02, -7.153e-02, 1.293e-02), r);\n\tr = MulAdd(s1_6, M4(-5.589e-02, -8.774e-02, 3.786e-02, 3.986e-02, 3.144e-02, 4.375e-02, 6.141e-02, 3.453e-02, -8.236e-03, -2.857e-02, 3.869e-03, 4.619e-03, 5.677e-02, -1.208e-01, -6.910e-02, 2.016e-02), r);\n\tr = MulAdd(s1_7, M4(-1.521e-01, 2.723e-01, 4.824e-02, -2.627e-01, 9.133e-02, 4.254e-02, 3.662e-02, -3.833e-02, 2.406e-01, -5.310e-02, -2.103e-01, 1.255e-01, 5.581e-01, 9.681e-02, -3.147e-02, -7.051e-02), r);\n\tr = MulAdd(s1_8, M4(-1.136e-02, -2.118e-02, -9.550e-03, 3.598e-02, -8.392e-02, 4.512e-02, 4.338e-02, 1.109e-02, 1.403e-01, 1.283e-01, 4.961e-02, 4.027e-02, -1.252e-01, 5.900e-02, 8.668e-02, -6.595e-02), r);\n\tr = MulAdd(s2_0, M4(-1.008e-02, -2.903e-02, -6.333e-03, -4.459e-02, 2.505e-03, 1.551e-02, 3.357e-02, 5.356e-02, -2.329e-02, 3.266e-02, -7.303e-03, 7.180e-03, 3.004e-02, -8.346e-03, -2.725e-02, 2.817e-02), r);\n\tr = MulAdd(s2_1, M4(3.495e-03, -9.106e-03, 2.350e-02, 3.874e-02, 4.396e-03, 1.342e-01, 5.563e-02, 3.178e-02, -1.553e-03, -9.208e-02, 1.462e-02, -3.384e-02, 8.389e-02, -2.999e-01, 6.650e-02, -1.166e-01), r);\n\tr = MulAdd(s2_2, M4(1.174e-02, -1.292e-02, -8.445e-03, 7.933e-04, 5.201e-02, -2.256e-02, -2.047e-02, 6.584e-03, -3.796e-02, 1.583e-02, 1.837e-02, 2.655e-02, 9.952e-02, 3.144e-02, -2.651e-02, 2.076e-01), r);\n\tr = MulAdd(s2_3, M4(4.431e-02, -7.747e-02, -4.542e-02, -6.469e-02, 5.572e-02, 3.031e-03, 4.995e-02, -2.386e-02, 8.360e-03, -6.044e-02, -4.929e-03, -6.369e-02, 9.520e-02, -1.262e-01, -7.337e-03, 9.376e-03), r);\n\tr = MulAdd(s2_4, M4(-7.080e-02, 1.169e-01, 1.829e-02, 7.257e-02, 2.309e-02, -2.177e-02, -3.192e-02, 3.540e-04, 4.603e-02, 3.443e-02, -4.078e-02, 5.128e-02, 3.726e-01, 5.696e-01, -8.425e-02, 7.807e-02), r);\n\tr = MulAdd(s2_5, M4(-1.185e-01, 6.520e-02, 5.123e-02, -1.715e-02, -1.738e-02, 1.367e-02, 2.443e-02, 1.685e-02, 8.273e-02, 5.137e-03, 4.677e-03, -5.286e-02, 3.105e-01, -1.479e-01, 5.733e-02, -1.704e-01), r);\n\tr = MulAdd(s2_6, M4(2.104e-02, -2.878e-02, -3.234e-02, -4.314e-02, -4.102e-02, 1.488e-02, -2.447e-02, 4.758e-02, 7.857e-03, 2.584e-02, 1.786e-03, 6.276e-03, 1.611e-02, -2.310e-02, -7.171e-03, -2.552e-02), r);\n\tr = MulAdd(s2_7, M4(4.631e-02, 1.781e-02, 6.916e-03, 5.503e-02, -1.158e-01, 8.648e-02, 5.399e-02, -4.525e-03, -3.435e-02, -2.144e-02, -1.508e-02, -1.361e-02, 9.343e-02, 7.544e-02, -2.271e-02, 6.940e-02), r);\n\tr = MulAdd(s2_8, M4(8.131e-02, 1.685e-02, 3.085e-02, -3.030e-02, -4.887e-02, 7.200e-03, 4.149e-02, 3.742e-02, -3.739e-02, -1.525e-02, -3.245e-02, -2.925e-03, -9.070e-02, -4.021e-02, -1.551e-02, -1.308e-02), r);\n\tr = MulAdd(s3_0, M4(-2.061e-02, -4.966e-02, -2.100e-02, -6.209e-02, -2.488e-02, -5.143e-02, 2.484e-03, 1.816e-02, -1.113e-02, -2.592e-02, 6.455e-02, 8.904e-02, 6.529e-02, 4.113e-03, 2.603e-02, 2.897e-02), r);\n\tr = MulAdd(s3_1, M4(-2.977e-02, 8.082e-02, -6.461e-03, 1.056e-01, -1.162e-02, 1.645e-02, 7.118e-02, 8.885e-04, -3.361e-02, 1.990e-01, 8.852e-03, 1.638e-01, 5.633e-02, -4.294e-02, -1.971e-02, -2.437e-02), r);\n\tr = MulAdd(s3_2, M4(3.122e-02, -2.438e-02, -5.720e-03, -7.262e-02, 5.823e-02, -2.232e-02, -1.086e-02, 3.184e-03, 3.344e-02, 9.806e-02, 1.689e-02, 1.518e-03, 8.669e-03, -2.063e-02, 6.094e-03, 8.015e-03), r);\n\tr = MulAdd(s3_3, M4(3.223e-02, -2.139e-02, -5.512e-02, -2.707e-02, 1.505e-01, 1.679e-02, 1.116e-01, -3.540e-02, -1.019e-01, 1.859e-01, 1.957e-02, 1.048e-02, -1.553e-01, -7.867e-02, -4.302e-02, 4.312e-03), r);\n\tr = MulAdd(s3_4, M4(-2.339e-02, -2.018e-01, -4.587e-02, -5.147e-03, -1.460e-02, -1.873e-02, -1.039e-02, -1.318e-01, 7.216e-03, -1.232e-01, 2.339e-01, -5.143e-02, 1.457e-01, 2.479e-01, 4.917e-02, 9.243e-02), r);\n\tr = MulAdd(s3_5, M4(-9.042e-02, -2.171e-03, 3.064e-02, -3.581e-02, -8.730e-02, -7.698e-03, -2.273e-02, -3.261e-02, -7.416e-02, 5.982e-02, 1.367e-02, 1.760e-01, 5.369e-02, -1.153e-01, -1.900e-02, -4.893e-03), r);\n\tr = MulAdd(s3_6, M4(5.882e-02, 7.972e-03, -4.724e-02, -3.461e-02, -3.556e-02, -4.754e-02, -1.491e-01, 6.491e-02, -1.312e-01, 5.117e-02, 1.480e-01, 1.391e-01, 3.492e-02, -2.692e-02, 4.632e-03, -1.603e-02), r);\n\tr = MulAdd(s3_7, M4(-1.485e-02, -1.118e-02, 1.468e-01, -1.223e-01, 1.117e-01, 1.987e-02, -1.356e-01, -1.361e-01, 1.004e-01, 1.534e-01, 4.730e-02, 1.054e-01, -1.001e-01, 7.442e-02, 8.265e-02, 1.123e-02), r);\n\tr = MulAdd(s3_8, M4(-6.086e-02, 5.548e-03, -7.503e-02, 5.356e-02, 6.002e-02, 2.448e-02, -1.519e-02, -2.142e-02, 2.339e-02, 1.101e-01, 1.470e-01, 3.847e-02, -9.741e-02, -4.376e-03, -1.496e-02, 1.391e-02), r);\n\tr = MulAdd(s4_0, M4(-3.301e-02, 2.267e-02, -4.043e-02, -2.886e-02, -5.309e-02, -6.401e-02, -4.860e-02, -1.382e-01, 4.547e-02, -1.195e-01, 2.847e-02, 1.183e-01, 1.525e-02, 6.961e-03, -8.481e-03, 2.313e-02), r);\n\tr = MulAdd(s4_1, M4(-5.179e-02, 7.837e-02, 2.924e-02, -6.807e-02, 9.977e-02, -1.343e-01, 6.610e-02, -1.625e-01, 1.068e-01, -2.686e-01, 4.198e-02, 1.333e-01, 8.296e-02, -1.314e-01, 4.368e-02, -7.842e-02), r);\n\tr = MulAdd(s4_2, M4(-1.260e-02, 3.823e-02, 6.907e-02, 3.324e-02, -3.521e-03, -7.009e-03, -9.421e-03, 1.509e-01, 1.365e-01, 1.235e-02, -1.439e-02, 4.430e-02, -6.141e-03, 9.008e-02, -3.424e-02, 2.807e-02), r);\n\tr = MulAdd(s4_3, M4(1.348e-02, 3.553e-02, 2.777e-02, -4.292e-03, -3.161e-01, -5.409e-02, -2.340e-01, 5.708e-02, -2.639e-03, -9.781e-02, 7.296e-02, -1.164e-01, -8.418e-02, 4.056e-02, 9.247e-03, -1.973e-02), r);\n\tr = MulAdd(s4_4, M4(1.374e-01, -1.948e-01, 3.840e-02, -3.181e-02, 3.337e-01, 5.918e-01, -4.292e-02, -4.522e-01, -1.993e-01, 1.913e-01, 5.210e-02, -2.841e-01, 1.024e-01, -1.802e-01, -2.334e-01, -6.746e-02), r);\n\tr = MulAdd(s4_5, M4(-2.478e-02, -3.843e-03, 2.707e-02, 6.649e-02, 7.579e-02, -9.347e-02, 8.742e-02, -4.274e-02, 6.592e-02, 1.459e-02, -5.017e-02, -2.843e-02, -1.101e-01, 5.774e-02, 8.689e-02, -6.216e-03), r);\n\tr = MulAdd(s4_6, M4(-7.471e-02, -3.950e-02, -2.088e-02, 2.672e-02, 8.373e-02, 6.904e-02, -4.597e-02, -1.743e-01, 2.439e-02, -9.662e-02, -3.455e-02, 1.243e-02, 7.625e-03, 3.214e-02, -1.285e-02, -9.281e-03), r);\n\tr = MulAdd(s4_7, M4(2.173e-01, 8.858e-02, -1.822e-01, -2.232e-02, 6.016e-02, -1.324e-01, -4.636e-01, -6.116e-02, -1.560e-01, -8.520e-02, -2.715e-01, -2.290e-02, 1.059e-01, 2.833e-02, 1.261e-01, 2.703e-04), r);\n\tr = MulAdd(s4_8, M4(6.084e-02, 1.447e-02, 1.216e-01, 3.908e-03, -1.112e-01, -1.095e-02, -3.872e-02, -1.106e-01, -8.092e-02, -2.069e-02, -2.778e-02, 2.449e-03, 3.380e-02, 1.123e-02, 5.228e-03, 1.590e-02), r);\n\tr = MulAdd(s5_0, M4(9.058e-03, 1.953e-02, -3.575e-02, 2.096e-02, -8.534e-02, 7.803e-04, -3.327e-02, -7.176e-02, -5.335e-02, 1.376e-02, -1.116e-02, -3.823e-02, 6.955e-03, -5.436e-02, 4.908e-02, 3.213e-02), r);\n\tr = MulAdd(s5_1, M4(-9.066e-02, 3.020e-02, -2.233e-02, -4.195e-02, 9.071e-02, -4.585e-03, 2.065e-02, 5.307e-02, 1.055e-02, 6.886e-03, 5.105e-02, -1.949e-04, 2.005e-02, 8.028e-02, 1.400e-02, -4.166e-02), r);\n\tr = MulAdd(s5_2, M4(-7.524e-02, -3.158e-02, 5.335e-02, 1.800e-02, 5.551e-02, -4.970e-03, -8.957e-03, -1.808e-03, 3.732e-02, -2.736e-02, -1.708e-03, -5.193e-03, -7.433e-02, 1.694e-03, -5.927e-03, -5.865e-02), r);\n\tr = MulAdd(s5_3, M4(1.841e-02, 4.228e-02, 1.305e-02, -1.773e-02, 1.443e-01, -3.841e-02, -6.603e-03, -1.000e-01, 5.555e-02, -9.809e-02, -4.187e-02, -3.300e-02, -1.449e-01, -7.725e-02, -1.307e-01, 3.371e-02), r);\n\tr = MulAdd(s5_4, M4(2.110e-01, -1.452e-01, 8.378e-02, -6.101e-02, -1.204e-02, 3.459e-02, -1.857e-02, -5.599e-02, 1.034e-01, -7.572e-02, -1.066e-01, -2.685e-02, 1.186e-01, 1.014e-01, -7.138e-03, -1.229e-01), r);\n\tr = MulAdd(s5_5, M4(5.220e-02, 1.147e-01, -8.863e-03, 1.597e-02, -1.671e-01, 6.502e-03, 5.946e-04, 6.353e-03, -5.116e-02, -5.064e-02, -2.231e-03, -2.255e-02, 8.614e-02, -1.615e-02, -3.855e-02, 8.267e-03), r);\n\tr = MulAdd(s5_6, M4(-6.879e-03, -5.188e-02, -1.344e-02, 4.907e-02, -1.293e-01, -1.520e-02, -6.090e-02, 8.918e-06, -1.082e-01, -4.470e-03, -9.794e-03, -7.308e-02, 7.560e-02, -1.006e-02, -3.079e-03, -2.419e-02), r);\n\tr = MulAdd(s5_7, M4(1.966e-01, 7.878e-02, -6.765e-03, 2.455e-02, -6.439e-03, -7.800e-03, -4.959e-04, -2.479e-02, -8.629e-03, -2.413e-02, -4.563e-02, -1.130e-02, -7.494e-02, 1.117e-02, -7.940e-02, 5.176e-02), r);\n\tr = MulAdd(s5_8, M4(2.362e-01, -3.172e-02, 1.990e-03, 2.828e-02, -6.788e-04, 9.385e-03, 1.395e-03, 4.595e-03, 3.466e-02, -2.217e-02, -1.113e-02, 2.319e-02, 4.322e-03, 7.255e-02, 8.528e-03, -8.646e-02), r);\n\tr = MulAdd(s6_0, M4(6.236e-04, -5.599e-03, 1.662e-03, -1.610e-02, -3.268e-02, 3.736e-02, 9.799e-03, 6.862e-02, 1.440e-01, -3.291e-02, -5.290e-02, 5.718e-02, -1.472e-02, 6.329e-03, 3.317e-04, 3.432e-03), r);\n\tr = MulAdd(s6_1, M4(7.624e-03, -1.078e-01, 2.509e-02, -5.998e-02, 2.957e-02, 1.002e-01, 2.523e-02, -2.646e-02, 1.129e-01, 1.652e-01, 3.334e-02, 2.243e-01, 2.305e-02, -3.856e-02, -2.499e-02, -3.774e-02), r);\n\tr = MulAdd(s6_2, M4(8.486e-03, -4.194e-02, -2.126e-03, -3.028e-03, -9.381e-03, -7.450e-05, -2.301e-03, -1.200e-02, 1.061e-01, 5.228e-02, -6.584e-02, -1.281e-01, -4.153e-03, 2.036e-02, -8.197e-03, 6.957e-04), r);\n\tr = MulAdd(s6_3, M4(8.359e-02, -1.529e-02, 7.150e-02, 4.381e-02, 3.876e-02, 9.446e-02, 8.667e-02, 4.710e-02, -1.704e-01, 8.304e-02, 1.315e-01, 9.065e-02, -1.248e-02, 3.451e-02, -1.663e-02, -3.212e-02), r);\n\tr = MulAdd(s6_4, M4(4.922e-02, 7.176e-02, -6.640e-02, -9.425e-02, -3.222e-02, -1.085e-01, -3.865e-02, 1.571e-01, -3.700e-01, 1.043e-01, -2.323e-02, -5.991e-02, -4.323e-02, 1.331e-02, -1.283e-02, 9.605e-02), r);\n\tr = MulAdd(s6_5, M4(1.564e-01, -9.708e-02, -2.115e-02, 1.420e-02, 1.994e-02, -4.618e-02, 2.682e-02, 2.128e-02, -4.299e-01, 3.603e-02, -1.667e-02, 4.865e-02, 3.222e-02, -3.111e-02, 2.877e-02, 1.951e-02), r);\n\tr = MulAdd(s6_6, M4(-5.226e-02, -3.439e-02, -1.115e-02, 1.559e-02, 1.080e-02, -4.797e-02, -5.588e-02, 3.681e-02, -1.168e-02, 8.262e-02, 3.484e-02, 3.941e-02, -3.204e-02, 5.511e-02, -2.526e-03, 2.378e-02), r);\n\tr = MulAdd(s6_7, M4(-3.656e-02, 8.768e-03, -1.877e-02, 2.896e-02, -3.234e-02, 1.029e-01, 7.208e-02, -1.354e-02, 4.724e-02, -2.792e-02, -6.029e-02, -1.563e-01, -1.274e-01, -4.066e-02, 1.253e-01, -1.948e-03), r);\n\tr = MulAdd(s6_8, M4(-8.171e-02, -1.723e-02, 1.593e-02, -2.655e-02, 2.431e-02, 3.102e-02, 2.482e-02, 6.723e-03, -2.363e-02, -4.291e-02, 6.611e-03, 6.381e-02, -1.239e-01, -2.593e-03, -9.796e-04, 2.874e-02), r);\n\tr = MulAdd(s7_0, M4(1.176e-02, 5.270e-03, -1.059e-03, 1.153e-02, 3.849e-02, -5.237e-02, -1.249e-03, -3.835e-02, 5.869e-02, -2.144e-02, -2.259e-03, -4.426e-04, -8.524e-03, -1.560e-02, 6.030e-03, -2.879e-02), r);\n\tr = MulAdd(s7_1, M4(3.799e-02, -5.750e-02, -4.045e-02, 2.964e-02, 2.058e-01, -7.604e-02, -6.212e-02, 3.370e-02, -1.373e-02, -1.059e-01, -9.752e-03, -3.277e-02, 3.861e-02, -4.689e-02, 2.058e-02, 3.350e-02), r);\n\tr = MulAdd(s7_2, M4(-8.731e-04, 9.982e-03, 1.355e-02, 5.808e-03, 9.372e-03, -5.953e-02, 1.993e-02, -3.465e-02, 1.375e-02, -3.096e-02, 1.506e-02, 3.740e-02, -3.321e-03, 2.036e-02, 2.091e-03, -1.008e-02), r);\n\tr = MulAdd(s7_3, M4(-8.942e-03, 2.918e-02, 1.244e-01, 3.212e-01, -2.777e-02, -3.158e-02, -3.150e-02, 8.206e-02, 2.294e-02, 7.014e-03, 1.237e-02, -1.788e-02, -6.398e-02, 1.291e-01, -1.265e-01, -1.873e-02), r);\n\tr = MulAdd(s7_4, M4(-1.340e-02, -7.785e-02, 9.694e-02, -4.805e-01, -2.603e-01, 2.979e-01, 1.150e-01, -1.201e-03, 8.901e-02, 6.518e-02, -4.128e-02, -8.574e-03, -4.618e-02, -3.740e-01, 8.044e-03, -1.624e-01), r);\n\tr = MulAdd(s7_5, M4(1.173e-01, -1.139e-01, -4.628e-02, 8.430e-02, 6.913e-02, -6.278e-02, -4.680e-02, -1.164e-01, -1.316e-02, 3.677e-02, 1.484e-02, -4.159e-03, -9.132e-02, 1.718e-02, 4.480e-02, 4.812e-03), r);\n\tr = MulAdd(s7_6, M4(4.462e-02, 9.087e-03, -9.374e-02, -3.102e-03, 1.323e-01, -7.278e-02, -1.291e-02, -3.531e-02, -1.859e-02, 1.378e-02, -8.155e-03, -7.871e-03, -6.520e-02, 4.532e-02, -6.542e-03, 2.745e-02), r);\n\tr = MulAdd(s7_7, M4(-1.086e-01, 3.684e-02, 1.988e-01, 2.470e-01, 2.397e-01, -2.523e-02, -1.419e-01, 4.321e-02, 1.231e-02, -1.233e-02, 2.661e-02, 7.225e-03, -8.916e-04, -2.241e-01, -9.885e-03, -6.903e-02), r);\n\tr = MulAdd(s7_8, M4(7.242e-02, -3.178e-02, 3.298e-02, -8.243e-02, -5.032e-02, -3.423e-02, 1.194e-02, -3.255e-02, 6.636e-02, 1.658e-02, -5.523e-03, -2.126e-02, -8.023e-02, 4.985e-02, -5.195e-02, 3.102e-02), r);\n\treturn r;\n}\n\nV4 f3(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { -4.684e-03, 6.890e-04, -5.830e-05, -5.559e-03 };\n\tr = MulAdd(s0_0, M4(9.681e-03, -3.008e-02, -4.885e-02, -1.980e-02, -2.557e-02, 8.902e-03, 2.876e-02, 3.702e-02, -3.984e-03, -5.590e-02, 3.719e-02, -5.321e-02, 4.944e-03, 2.265e-02, -5.642e-02, -3.355e-02), r);\n\tr = MulAdd(s0_1, M4(1.749e-02, 4.415e-02, -4.624e-02, -1.619e-02, -5.776e-02, -3.455e-03, 9.170e-03, -3.880e-02, -4.960e-02, -3.457e-02, 7.778e-02, 9.934e-02, 3.774e-02, 9.627e-02, -1.190e-01, -2.539e-02), r);\n\tr = MulAdd(s0_2, M4(-2.970e-02, -1.385e-02, -1.654e-02, 1.286e-02, 1.187e-02, -1.049e-02, -5.015e-03, 3.357e-02, 9.840e-02, 3.333e-02, 3.595e-02, -6.867e-02, -1.029e-01, -9.563e-03, -3.838e-02, 1.842e-02), r);\n\tr = MulAdd(s0_3, M4(2.468e-03, -3.105e-03, 3.139e-02, -3.924e-04, 4.153e-02, 4.857e-02, 2.048e-02, -3.807e-02, -9.976e-03, 3.462e-02, 3.193e-02, -9.280e-03, -8.785e-02, 3.561e-03, 5.118e-02, 1.315e-01), r);\n\tr = MulAdd(s0_4, M4(1.860e-03, -2.834e-02, -3.496e-02, -1.925e-01, -1.548e-01, -2.941e-02, -1.305e-01, -1.316e-01, -3.740e-02, 2.467e-01, 2.256e-01, 5.527e-02, 2.511e-01, -1.136e-01, 3.445e-02, -2.657e-01), r);\n\tr = MulAdd(s0_5, M4(-3.462e-02, 1.757e-02, -3.593e-03, -4.448e-03, -3.035e-02, 6.164e-02, 8.270e-03, 3.816e-02, -5.575e-02, -4.886e-02, 1.928e-02, 2.159e-02, -2.496e-01, 3.416e-02, -1.923e-02, -2.403e-02), r);\n\tr = MulAdd(s0_6, M4(-9.527e-03, 1.884e-03, 3.132e-02, 3.839e-02, 1.489e-02, 5.617e-03, 4.702e-03, 2.492e-02, -3.944e-02, 8.726e-03, -3.927e-03, 3.775e-04, 1.182e-02, 4.459e-02, 1.514e-02, -1.748e-03), r);\n\tr = MulAdd(s0_7, M4(-5.730e-02, -3.515e-03, 4.216e-02, 1.560e-02, -1.060e-01, 2.248e-02, 1.111e-02, 9.832e-03, 7.457e-02, 3.146e-03, -8.370e-02, -1.173e-01, -2.263e-03, -1.129e-02, 2.702e-02, -3.823e-02), r);\n\tr = MulAdd(s0_8, M4(-7.514e-03, 1.146e-02, 3.054e-02, -1.619e-02, -1.817e-02, -6.031e-03, -3.696e-02, -2.777e-02, -4.793e-02, 1.139e-02, -1.696e-03, 6.132e-02, -2.482e-02, 9.432e-03, 3.504e-02, -2.315e-03), r);\n\tr = MulAdd(s1_0, M4(1.862e-03, 3.773e-02, -8.036e-02, 1.519e-01, -3.710e-03, 2.376e-02, 3.439e-02, 2.167e-02, 2.711e-02, 5.150e-02, 3.869e-02, 2.169e-02, 1.250e-02, -1.996e-02, -1.736e-01, -8.277e-02), r);\n\tr = MulAdd(s1_1, M4(-2.311e-02, -1.085e-01, -3.403e-02, -2.320e-01, -2.981e-02, -1.928e-02, 2.786e-02, -4.477e-02, 1.169e-01, -1.826e-01, 1.570e-01, -9.813e-02, 9.840e-02, 8.023e-02, -2.586e-01, 1.433e-01), r);\n\tr = MulAdd(s1_2, M4(1.803e-03, 4.658e-02, -1.892e-02, 2.893e-02, -1.528e-02, 1.273e-02, 2.555e-03, 8.782e-03, -5.553e-03, 7.205e-02, 6.603e-02, 6.278e-02, -1.120e-01, -6.004e-02, -1.222e-01, 1.163e-02), r);\n\tr = MulAdd(s1_3, M4(-1.018e-01, -4.000e-02, 2.640e-02, 2.042e-02, 5.657e-02, 4.927e-02, 3.377e-02, -2.825e-02, 1.425e-02, -2.015e-02, -8.182e-02, -2.919e-02, -7.378e-02, 2.429e-02, 1.319e-01, 7.956e-02), r);\n\tr = MulAdd(s1_4, M4(1.068e-01, -9.681e-02, 1.092e-01, -5.858e-01, -1.574e-01, -1.582e-01, -2.159e-01, -1.526e-01, 9.058e-02, 9.935e-02, -2.312e-02, 5.522e-01, 3.799e-01, -2.598e-01, 1.344e-01, -1.568e-01), r);\n\tr = MulAdd(s1_5, M4(-1.111e-02, -9.091e-02, -1.685e-02, -4.801e-02, -2.188e-02, 2.544e-03, -7.639e-02, 3.189e-02, -5.523e-02, 1.968e-01, 1.340e-01, -8.667e-02, -3.461e-01, 9.813e-03, 3.383e-02, 5.120e-02), r);\n\tr = MulAdd(s1_6, M4(-3.401e-04, 4.871e-02, 1.394e-02, 8.957e-02, 2.540e-02, 3.912e-02, 3.234e-02, -1.502e-02, -1.504e-02, 5.820e-04, -1.122e-02, 7.805e-03, 4.213e-02, 1.403e-02, -7.371e-02, 5.537e-02), r);\n\tr = MulAdd(s1_7, M4(5.145e-02, 1.466e-02, -1.231e-02, -2.232e-01, -9.556e-02, -4.633e-03, 4.627e-02, 3.679e-02, 6.171e-02, 7.696e-02, -2.454e-02, -6.367e-03, 2.456e-02, -2.865e-02, -3.183e-02, -2.806e-02), r);\n\tr = MulAdd(s1_8, M4(-5.166e-02, 4.631e-02, 4.860e-02, 4.666e-02, 3.595e-04, -3.630e-03, 1.516e-02, -9.129e-03, -6.539e-02, -1.232e-02, -1.745e-02, -9.037e-02, -7.875e-02, -1.470e-02, -1.751e-02, -2.477e-02), r);\n\tr = MulAdd(s2_0, M4(-2.081e-02, -2.560e-02, 7.354e-03, 1.161e-02, 6.217e-03, -2.986e-02, 1.154e-02, 2.615e-02, -2.085e-02, 9.902e-03, 2.071e-03, -5.216e-04, 5.957e-02, -7.398e-03, 2.064e-02, 1.406e-01), r);\n\tr = MulAdd(s2_1, M4(3.722e-02, 5.744e-02, 1.443e-01, -2.925e-02, 1.370e-02, 1.174e-01, 1.074e-01, -3.303e-02, 8.991e-03, 3.061e-03, 3.371e-03, 1.175e-02, -5.190e-02, -6.181e-02, 1.753e-01, -1.287e-01), r);\n\tr = MulAdd(s2_2, M4(-4.176e-02, -6.274e-04, 3.549e-02, -3.713e-02, -9.366e-02, 1.537e-02, 2.337e-02, -3.934e-02, 2.923e-02, 1.346e-02, 7.163e-03, 1.328e-02, 4.833e-03, 4.618e-02, -5.331e-02, -3.940e-02), r);\n\tr = MulAdd(s2_3, M4(8.528e-03, -5.794e-02, 2.796e-02, 3.357e-02, -8.052e-02, -9.799e-02, -3.645e-02, 5.612e-02, -1.166e-02, -4.189e-02, -1.061e-02, 7.611e-03, 2.040e-02, 2.967e-02, -6.062e-02, 6.390e-02), r);\n\tr = MulAdd(s2_4, M4(-4.279e-02, -5.724e-02, 4.008e-03, -5.154e-02, -1.041e-02, -1.733e-01, -1.431e-01, -3.059e-03, 1.470e-02, 2.059e-02, -5.137e-02, -9.846e-03, 4.126e-02, 2.147e-01, 2.649e-02, -1.278e-01), r);\n\tr = MulAdd(s2_5, M4(-1.001e-01, -6.696e-02, 8.699e-03, -5.281e-02, -3.896e-02, -5.937e-02, -3.633e-02, -1.026e-02, 5.608e-02, -5.115e-02, 2.682e-03, -1.474e-02, -2.244e-01, -3.160e-02, 3.403e-02, 7.687e-02), r);\n\tr = MulAdd(s2_6, M4(4.213e-03, -2.668e-02, -2.583e-02, 1.132e-02, 1.083e-02, 5.358e-02, 1.379e-02, -5.371e-02, -2.338e-02, 9.030e-03, 1.420e-02, -1.605e-02, 9.140e-03, -8.769e-03, -3.644e-02, -1.330e-02), r);\n\tr = MulAdd(s2_7, M4(-4.586e-02, -4.933e-04, -9.498e-02, 1.749e-02, -1.759e-02, 4.007e-02, 6.127e-02, -5.414e-02, 9.016e-03, -2.079e-03, 3.343e-03, 1.004e-02, 7.801e-03, 1.966e-02, 4.390e-03, -2.055e-02), r);\n\tr = MulAdd(s2_8, M4(7.917e-03, -7.674e-02, -3.768e-02, -2.986e-02, -3.577e-03, 6.074e-02, 2.197e-02, 1.776e-02, -1.944e-02, 3.794e-02, 1.098e-02, 4.473e-03, -7.910e-02, -9.479e-03, -2.516e-02, -4.335e-03), r);\n\tr = MulAdd(s3_0, M4(-2.815e-02, -2.422e-03, 1.804e-02, -5.957e-03, 6.596e-02, -1.254e-01, 6.526e-02, 4.307e-02, -1.893e-02, 3.540e-02, 6.049e-02, -4.571e-02, -2.629e-03, 1.568e-02, -7.711e-03, 8.974e-03), r);\n\tr = MulAdd(s3_1, M4(2.423e-02, 4.847e-02, 1.679e-02, -5.669e-04, -4.052e-03, 1.177e-01, 1.660e-01, 1.093e-02, -5.386e-02, -9.583e-03, -1.242e-01, 4.574e-02, -2.228e-02, -3.213e-02, 1.371e-01, 5.518e-03), r);\n\tr = MulAdd(s3_2, M4(-8.338e-02, -1.656e-02, 2.950e-03, -3.721e-02, -3.461e-02, 3.840e-04, 4.377e-02, -1.068e-02, -4.114e-02, 4.027e-02, 4.902e-02, -7.158e-02, 2.055e-02, 6.079e-02, 3.644e-02, 4.520e-02), r);\n\tr = MulAdd(s3_3, M4(-5.441e-03, -4.069e-02, 7.030e-02, -2.745e-02, 3.331e-02, -1.003e-01, -4.375e-01, 1.753e-01, -8.514e-02, -9.203e-04, 1.121e-01, -9.410e-02, -2.350e-02, 2.985e-02, 3.703e-02, 8.273e-02), r);\n\tr = MulAdd(s3_4, M4(5.347e-02, -7.722e-01, 1.841e-01, -5.509e-02, 8.975e-02, -2.680e-01, -3.254e-01, -1.064e-01, 1.529e-01, -6.629e-02, 4.410e-01, 1.618e-01, 2.479e-02, 1.833e-01, 9.445e-02, -2.289e-01), r);\n\tr = MulAdd(s3_5, M4(5.126e-02, 5.849e-02, -5.219e-03, 9.645e-02, 9.359e-02, -3.570e-02, -8.843e-02, 1.006e-02, -2.361e-01, 7.791e-02, 7.898e-02, -3.856e-02, -1.233e-01, -6.706e-04, 2.387e-02, 4.867e-02), r);\n\tr = MulAdd(s3_6, M4(-1.548e-02, 3.366e-02, 7.603e-02, 5.374e-02, 9.097e-03, 5.063e-02, -8.491e-04, 7.755e-03, -6.799e-02, 5.193e-02, 3.761e-04, 1.009e-02, -1.239e-02, -1.220e-02, -4.171e-03, 1.343e-02), r);\n\tr = MulAdd(s3_7, M4(2.320e-03, -9.519e-02, -4.596e-02, 3.958e-02, -2.254e-02, -3.177e-02, 7.613e-03, -5.295e-02, -3.478e-02, 5.697e-02, -7.504e-02, -1.152e-01, 5.974e-03, -3.027e-03, 6.663e-03, -1.355e-02), r);\n\tr = MulAdd(s3_8, M4(2.738e-02, -6.541e-03, -1.734e-02, -3.262e-02, -4.650e-03, 1.989e-02, 2.403e-02, 7.109e-03, -7.896e-02, -3.010e-02, -3.856e-02, -4.335e-02, -4.571e-02, -2.111e-02, -3.043e-02, 1.725e-02), r);\n\tr = MulAdd(s4_0, M4(-1.964e-02, -3.675e-02, 2.942e-02, -1.417e-02, -8.570e-02, 2.328e-02, -1.705e-01, -3.193e-04, 6.156e-02, -2.407e-02, -2.030e-02, -6.600e-02, 3.456e-02, -1.314e-02, 1.694e-02, -3.869e-02), r);\n\tr = MulAdd(s4_1, M4(-2.846e-02, -1.182e-01, -1.167e-02, 9.350e-03, -2.006e-01, -7.553e-02, 5.109e-02, -2.008e-02, 9.335e-02, 2.042e-02, 2.823e-01, 2.446e-01, -1.102e-01, 9.506e-02, -1.160e-01, 2.432e-01), r);\n\tr = MulAdd(s4_2, M4(4.094e-02, -2.665e-02, 1.606e-01, -5.195e-02, 9.016e-03, 6.199e-02, 5.034e-02, 2.114e-02, 1.492e-01, -3.953e-02, 3.046e-02, 1.560e-03, 4.637e-02, -3.696e-03, 2.390e-03, -1.347e-01), r);\n\tr = MulAdd(s4_3, M4(-1.473e-02, -3.120e-02, 9.582e-02, -5.774e-02, -1.346e-02, -1.387e-01, -1.362e-01, -1.796e-01, -9.409e-02, -2.495e-01, 4.522e-02, 2.231e-01, -3.688e-02, 6.567e-02, 4.169e-02, 4.207e-02), r);\n\tr = MulAdd(s4_4, M4(-1.090e-02, 3.370e-03, 2.411e-01, 8.764e-03, -6.157e-02, 1.821e-01, 8.114e-02, -4.756e-01, 1.711e-01, 2.427e-01, 7.778e-02, 7.863e-02, 9.319e-02, -1.679e-01, -1.381e-01, 6.603e-02), r);\n\tr = MulAdd(s4_5, M4(-1.301e-01, 7.742e-02, 1.319e-01, 7.278e-02, -3.592e-02, 2.957e-02, 4.727e-02, 5.763e-02, 1.522e-01, -3.927e-02, -1.522e-02, -9.234e-02, -1.164e-01, -1.746e-02, -1.671e-02, 2.957e-02), r);\n\tr = MulAdd(s4_6, M4(1.661e-02, -7.393e-03, -4.879e-02, 3.085e-03, 4.210e-02, -4.314e-02, -3.971e-02, -7.896e-02, 2.791e-02, 6.567e-02, -2.164e-02, -4.939e-03, 2.815e-02, 3.187e-02, 1.803e-02, -4.191e-03), r);\n\tr = MulAdd(s4_7, M4(8.770e-03, -4.219e-02, -5.425e-02, -6.481e-02, -3.305e-02, 6.806e-02, 1.077e-01, 1.753e-01, -4.405e-02, 3.918e-02, -1.311e-02, -2.641e-03, 2.801e-02, 3.008e-02, 4.854e-02, -8.295e-03), r);\n\tr = MulAdd(s4_8, M4(-9.797e-03, 1.242e-03, -2.370e-02, -2.221e-02, -6.149e-03, -1.874e-02, -1.991e-02, -2.733e-02, -3.855e-02, -2.105e-02, 2.489e-03, 2.475e-02, -5.248e-03, 4.986e-02, -4.264e-04, -2.850e-02), r);\n\tr = MulAdd(s5_0, M4(7.117e-03, 2.173e-02, 3.156e-02, 5.267e-03, 8.027e-03, -4.454e-02, -7.556e-02, -3.434e-02, -3.034e-02, 4.286e-03, -1.329e-03, 9.390e-02, 2.082e-02, 4.265e-02, 2.317e-02, 9.256e-02), r);\n\tr = MulAdd(s5_1, M4(-1.828e-02, -6.204e-02, -4.113e-02, -6.140e-02, -7.433e-03, -2.275e-02, -1.067e-01, -4.810e-02, 3.146e-02, 1.470e-02, 9.895e-02, 7.080e-02, 2.503e-02, -1.323e-01, -5.634e-02, -1.158e-01), r);\n\tr = MulAdd(s5_2, M4(2.929e-02, 7.951e-02, 6.912e-02, 1.737e-02, 4.312e-02, 1.538e-03, -5.973e-03, 2.283e-02, -9.977e-03, -7.604e-03, 1.749e-02, -8.725e-03, 2.287e-02, 1.039e-02, -5.078e-02, 3.387e-02), r);\n\tr = MulAdd(s5_3, M4(2.977e-02, -8.352e-03, -1.156e-02, 1.297e-02, -3.331e-02, -1.692e-03, 3.981e-02, -1.112e-02, 4.806e-03, -5.421e-02, 2.894e-02, 7.254e-02, -6.607e-03, 7.883e-03, -7.508e-02, -3.811e-02), r);\n\tr = MulAdd(s5_4, M4(-3.712e-02, -2.705e-01, -8.473e-03, 4.084e-02, 2.750e-02, -2.059e-02, 5.705e-02, 5.270e-02, 1.364e-02, -4.693e-03, -8.906e-02, -3.422e-02, -9.573e-02, 1.385e-02, 1.578e-01, 2.145e-02), r);\n\tr = MulAdd(s5_5, M4(-5.351e-02, -1.961e-02, 4.591e-03, -3.584e-02, -1.286e-02, -3.033e-02, -3.979e-02, -1.666e-02, 4.667e-02, -3.338e-02, -4.259e-02, 5.857e-02, 1.343e-01, 4.236e-02, 1.804e-02, -1.117e-01), r);\n\tr = MulAdd(s5_6, M4(1.295e-02, 3.869e-02, 7.838e-04, 1.346e-02, 1.874e-02, -2.082e-02, -4.106e-02, -1.802e-02, 2.252e-02, -2.069e-02, -3.166e-02, -2.319e-02, 2.788e-02, -1.365e-02, -3.017e-03, 3.420e-02), r);\n\tr = MulAdd(s5_7, M4(-2.580e-03, -6.460e-03, 2.103e-02, -5.888e-02, 1.605e-02, 1.482e-02, 1.040e-02, -3.538e-02, -7.412e-03, -4.952e-03, -2.650e-04, 3.137e-02, -4.772e-02, 4.511e-02, -1.680e-02, 1.280e-02), r);\n\tr = MulAdd(s5_8, M4(3.699e-02, 4.401e-02, 2.479e-02, 2.072e-02, -3.227e-03, 1.561e-02, -1.124e-02, 4.791e-03, 1.048e-02, 6.933e-03, -5.328e-04, 3.336e-02, -1.840e-02, -4.067e-02, 6.226e-03, -5.353e-02), r);\n\tr = MulAdd(s6_0, M4(1.188e-02, -4.641e-02, -1.262e-02, -1.655e-02, 3.987e-03, 3.772e-02, 1.940e-02, -3.615e-02, -2.383e-02, -2.400e-02, 2.002e-01, -2.954e-02, 1.634e-02, 6.644e-03, -4.035e-03, 4.184e-03), r);\n\tr = MulAdd(s6_1, M4(2.277e-02, 4.263e-03, -4.491e-02, 4.744e-02, -7.567e-02, 2.924e-02, -1.726e-02, 5.299e-02, 1.664e-01, -1.233e-01, 2.356e-03, -2.703e-01, -5.187e-02, -3.551e-02, 3.325e-02, 6.128e-02), r);\n\tr = MulAdd(s6_2, M4(1.989e-02, 6.053e-03, 1.846e-02, 6.184e-02, -2.607e-02, -2.363e-02, 4.897e-02, -4.577e-02, 3.373e-01, -9.162e-02, 4.499e-02, 8.682e-02, 4.547e-02, 4.030e-03, 7.774e-04, 1.701e-03), r);\n\tr = MulAdd(s6_3, M4(-5.472e-02, -3.444e-03, 1.608e-02, 6.295e-02, 1.196e-02, 6.397e-02, 5.240e-04, -1.021e-02, -3.050e-02, 5.217e-02, -8.370e-02, -1.127e-01, 2.977e-02, 6.301e-02, -1.641e-02, -3.698e-02), r);\n\tr = MulAdd(s6_4, M4(7.836e-02, -1.085e-02, 6.898e-02, -1.623e-01, 5.813e-02, -1.794e-02, -7.797e-03, -6.090e-02, 7.416e-02, 1.549e-01, 9.543e-03, -1.116e-01, -1.078e-01, 1.926e-01, -5.152e-02, 1.227e-01), r);\n\tr = MulAdd(s6_5, M4(1.059e-02, 2.364e-02, 2.401e-02, 6.629e-02, -7.339e-02, -3.505e-02, -9.375e-02, 1.857e-02, 8.049e-02, -3.784e-02, -3.831e-03, -1.878e-02, 1.048e-01, -2.087e-02, -7.422e-03, -4.039e-03), r);\n\tr = MulAdd(s6_6, M4(-2.365e-03, -9.990e-03, -5.154e-02, 2.194e-02, 3.747e-02, 2.086e-02, -3.379e-02, 3.596e-03, -2.596e-02, 2.081e-03, 3.514e-02, -5.221e-02, 1.538e-02, 5.609e-02, 5.790e-02, -4.784e-02), r);\n\tr = MulAdd(s6_7, M4(-1.720e-02, -1.905e-02, -2.715e-02, -2.962e-02, -1.308e-02, -1.083e-02, 2.486e-02, -3.409e-03, 2.073e-02, -2.824e-02, 8.650e-03, 2.239e-02, -1.353e-02, 1.140e-01, 2.117e-01, 8.122e-02), r);\n\tr = MulAdd(s6_8, M4(5.500e-03, -2.479e-02, -3.083e-02, 3.443e-06, 8.760e-03, -2.614e-02, -1.346e-02, 1.243e-02, 1.106e-01, 5.146e-02, 1.032e-03, 2.408e-02, 1.198e-02, 6.767e-02, 3.023e-02, 7.031e-03), r);\n\tr = MulAdd(s7_0, M4(-7.089e-03, -4.844e-02, -1.208e-02, -3.648e-02, 1.701e-02, 4.478e-02, -1.072e-01, 6.097e-02, -1.165e-03, -3.233e-02, -6.162e-02, 1.612e-03, -6.546e-03, -1.170e-02, -9.039e-03, -6.963e-02), r);\n\tr = MulAdd(s7_1, M4(5.550e-02, -1.003e-02, -1.168e-01, 8.157e-02, 2.255e-02, -3.154e-02, -1.085e-01, -3.478e-02, 4.729e-02, -3.235e-02, -7.653e-02, 7.446e-02, -3.744e-02, 1.918e-02, -3.136e-02, 9.058e-02), r);\n\tr = MulAdd(s7_2, M4(2.581e-02, -1.672e-02, 2.845e-03, 2.215e-02, 3.825e-02, -1.008e-02, 6.349e-03, 7.030e-02, 6.275e-02, 1.736e-02, -2.221e-02, 2.294e-02, 5.530e-02, -1.884e-02, -8.266e-03, -6.339e-03), r);\n\tr = MulAdd(s7_3, M4(4.480e-02, 4.562e-02, -1.532e-01, 2.755e-02, -7.727e-03, -7.523e-02, -9.262e-02, 6.129e-02, -9.996e-03, 1.562e-02, 2.900e-02, -8.342e-03, -5.049e-02, 1.154e-01, 1.553e-01, -4.222e-02), r);\n\tr = MulAdd(s7_4, M4(-2.480e-01, -4.181e-02, 8.623e-02, 2.482e-02, 9.856e-02, -7.836e-02, -1.145e-01, -2.366e-01, -6.881e-03, 5.524e-02, 1.590e-02, -9.871e-03, -5.909e-02, -6.382e-02, 2.760e-01, 1.855e-01), r);\n\tr = MulAdd(s7_5, M4(-2.085e-01, 6.150e-02, 4.880e-02, -1.906e-02, -1.101e-01, -9.671e-02, -3.984e-02, 3.062e-02, 1.820e-02, 8.405e-03, 2.241e-02, -4.043e-02, 2.095e-01, 8.533e-02, 4.196e-02, 4.850e-02), r);\n\tr = MulAdd(s7_6, M4(-4.355e-02, -5.505e-02, -1.267e-01, -5.453e-02, 4.345e-02, 1.526e-02, -1.739e-02, 1.774e-02, -2.131e-02, 4.405e-03, 9.372e-03, 1.876e-02, -3.428e-02, 5.894e-02, 5.885e-02, -3.260e-02), r);\n\tr = MulAdd(s7_7, M4(8.225e-04, 4.162e-02, 1.538e-01, -4.316e-03, -2.047e-02, -8.498e-03, 7.413e-03, 9.833e-02, -1.454e-02, 1.027e-02, 1.865e-03, 1.100e-02, 4.003e-02, 2.181e-02, 1.353e-01, 1.522e-01), r);\n\tr = MulAdd(s7_8, M4(2.791e-02, 1.638e-02, -1.935e-02, 2.872e-03, -1.592e-02, 1.637e-02, 6.777e-03, 3.492e-03, -1.286e-02, -5.990e-03, 7.047e-03, -2.066e-02, 6.342e-03, 6.939e-02, 4.972e-02, -3.984e-02), r);\n\treturn r;\n}\n\nvoid Pass9(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt2[gxy] = f2(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\tt3[gxy] = f3(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n}\n\n//!PASS 10\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0, t1, t2, t3\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n#define l2(x, y) V4(O(t2, float2(x, y)))\n#define l3(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8, V4 s4_0, V4 s4_1, V4 s4_2, V4 s4_3, V4 s4_4, V4 s4_5, V4 s4_6, V4 s4_7, V4 s4_8, V4 s5_0, V4 s5_1, V4 s5_2, V4 s5_3, V4 s5_4, V4 s5_5, V4 s5_6, V4 s5_7, V4 s5_8, V4 s6_0, V4 s6_1, V4 s6_2, V4 s6_3, V4 s6_4, V4 s6_5, V4 s6_6, V4 s6_7, V4 s6_8, V4 s7_0, V4 s7_1, V4 s7_2, V4 s7_3, V4 s7_4, V4 s7_5, V4 s7_6, V4 s7_7, V4 s7_8) {\n\tV4 r = { 3.226e-04, 2.004e-04, 1.483e-04, 9.562e-05 };\n\tr = MulAdd(s0_0, M4(6.033e-02, 3.884e-03, 4.972e-03, 1.856e-02, -2.252e-02, -6.567e-03, 1.834e-03, 1.889e-03, -3.430e-02, -5.868e-03, -2.753e-02, -9.852e-03, 1.149e-01, 5.219e-03, -9.645e-02, -1.800e-02), r);\n\tr = MulAdd(s0_1, M4(-1.126e-02, 2.901e-02, 4.006e-03, -6.551e-03, 4.707e-03, -2.672e-02, -1.670e-03, 1.306e-02, 2.051e-02, -2.240e-02, 3.236e-02, 4.654e-03, 1.470e-01, -3.097e-01, 4.721e-02, 1.152e-01), r);\n\tr = MulAdd(s0_2, M4(4.366e-03, -2.694e-03, 5.250e-03, 5.320e-03, 4.481e-03, 1.638e-02, 9.726e-03, 4.904e-03, -1.148e-03, 2.204e-02, -8.883e-03, 6.839e-05, -2.482e-02, 6.181e-02, 2.736e-03, -8.909e-03), r);\n\tr = MulAdd(s0_3, M4(-7.610e-03, 7.788e-03, 1.847e-02, -2.180e-02, 2.830e-02, 6.135e-03, 8.182e-03, 1.302e-02, 2.205e-02, 2.265e-02, 1.210e-02, 1.428e-02, 4.035e-02, 3.488e-02, 2.405e-02, -6.122e-04), r);\n\tr = MulAdd(s0_4, M4(1.537e-02, 1.506e-02, -7.631e-03, 4.580e-02, -5.733e-03, 5.314e-02, -1.093e-01, -1.055e-01, -3.086e-02, -3.601e-02, -5.565e-02, -3.967e-02, 7.196e-02, -4.304e-02, -1.039e-01, 2.038e-01), r);\n\tr = MulAdd(s0_5, M4(9.955e-04, -1.193e-02, -6.331e-03, -1.254e-02, -1.031e-02, -3.337e-02, 4.839e-03, -1.563e-03, 8.448e-04, -4.703e-03, 1.218e-02, -3.763e-03, 1.555e-02, 6.467e-02, 4.887e-03, -1.659e-02), r);\n\tr = MulAdd(s0_6, M4(-9.537e-03, -8.011e-04, -1.289e-02, -2.877e-03, -1.477e-03, 8.749e-04, 8.176e-03, -4.993e-03, -1.018e-03, 1.302e-03, 1.075e-03, 4.430e-03, -8.630e-03, -1.426e-02, 1.284e-03, -6.897e-03), r);\n\tr = MulAdd(s0_7, M4(-9.303e-03, -1.874e-02, -7.506e-03, -3.287e-03, 1.361e-03, -8.719e-03, 1.358e-02, 3.613e-02, 1.732e-03, 3.429e-03, 5.717e-03, -5.605e-03, -2.391e-02, -5.230e-03, -4.358e-02, -1.130e-02), r);\n\tr = MulAdd(s0_8, M4(-4.785e-03, -2.385e-03, -1.026e-03, -1.010e-02, -6.487e-04, 6.573e-03, -1.054e-03, -7.562e-03, 1.978e-03, 1.197e-03, 2.030e-03, 9.124e-03, -3.354e-03, 3.436e-03, 2.368e-02, -4.266e-02), r);\n\tr = MulAdd(s1_0, M4(-1.529e-01, 2.039e-01, 8.447e-03, 3.038e-02, -1.505e-02, -1.508e-02, 7.441e-03, 6.314e-03, -3.746e-02, -3.202e-02, -2.150e-02, -3.430e-02, -1.702e-02, 5.759e-03, -3.104e-02, -2.623e-03), r);\n\tr = MulAdd(s1_1, M4(-1.082e-03, 4.792e-02, 6.862e-03, -2.338e-02, 8.142e-03, 2.402e-03, 8.938e-03, 1.018e-02, 1.801e-01, 1.204e-01, 1.753e-01, 1.470e-01, 4.248e-02, -2.265e-02, 4.831e-02, -7.421e-03), r);\n\tr = MulAdd(s1_2, M4(3.095e-03, -2.495e-03, 5.918e-03, 7.425e-03, 1.247e-03, 1.278e-02, 7.347e-03, 1.108e-02, -2.195e-02, 3.677e-02, -3.238e-02, 3.665e-03, -6.743e-03, 7.914e-03, 3.957e-03, -1.294e-03), r);\n\tr = MulAdd(s1_3, M4(-6.194e-02, 9.325e-02, -2.823e-01, 2.610e-01, 1.242e-01, 1.063e-02, -9.538e-02, 1.163e-02, 6.713e-03, 1.593e-02, -1.142e-02, -7.270e-06, 4.482e-02, 2.000e-02, 5.476e-02, 1.686e-02), r);\n\tr = MulAdd(s1_4, M4(3.596e-02, -2.554e-02, 9.773e-03, 7.261e-02, 1.376e-01, 2.608e-01, -2.402e-01, -3.362e-01, -6.171e-02, -6.656e-02, -5.303e-02, -5.042e-02, 8.435e-02, 4.511e-02, -6.856e-02, -1.688e-02), r);\n\tr = MulAdd(s1_5, M4(-4.948e-03, -1.384e-02, -9.850e-03, -1.294e-02, -8.958e-03, -2.200e-02, 4.866e-03, -1.164e-02, -1.419e-02, -2.802e-02, 3.073e-04, -2.253e-02, 3.047e-03, 5.896e-02, 1.658e-03, 3.601e-02), r);\n\tr = MulAdd(s1_6, M4(-1.752e-02, -1.393e-03, 1.343e-02, -6.912e-04, -1.211e-02, -1.511e-03, 1.580e-02, -5.149e-05, -6.598e-04, -1.994e-03, -3.715e-03, 1.939e-03, -8.240e-03, -1.204e-02, -1.863e-03, -5.386e-03), r);\n\tr = MulAdd(s1_7, M4(-9.921e-03, -1.642e-02, -1.441e-04, -2.140e-02, -9.104e-03, -2.207e-02, 1.952e-02, 3.773e-02, 9.063e-03, 8.820e-03, 9.917e-03, -1.275e-03, -3.198e-02, -1.296e-02, -3.471e-02, -3.518e-04), r);\n\tr = MulAdd(s1_8, M4(-1.870e-03, 1.285e-03, -2.583e-03, -6.924e-03, -1.586e-03, 1.603e-03, 4.076e-04, 3.254e-03, -5.009e-04, 1.443e-03, -5.724e-03, 8.396e-03, 4.439e-03, 1.328e-03, 2.810e-02, -4.291e-02), r);\n\tr = MulAdd(s2_0, M4(-2.825e-02, 7.778e-03, 6.879e-03, 6.775e-04, 1.669e-03, -1.838e-02, -3.742e-02, -1.220e-02, 8.573e-03, -2.186e-05, 5.825e-03, 6.538e-03, -8.814e-02, 1.068e-03, -1.412e-02, -2.859e-03), r);\n\tr = MulAdd(s2_1, M4(2.240e-02, -3.845e-02, -1.420e-02, 1.136e-02, -1.729e-01, 6.307e-03, 5.652e-02, 9.547e-02, -5.163e-02, -2.987e-02, -5.771e-03, 4.459e-03, 3.096e-03, 2.589e-02, 4.600e-03, -1.655e-02), r);\n\tr = MulAdd(s2_2, M4(-1.673e-02, 4.319e-03, -7.842e-03, -1.910e-02, 3.317e-02, 1.533e-01, 4.235e-03, -4.861e-02, -2.429e-03, -2.997e-02, -1.245e-03, 6.226e-03, -7.891e-03, -1.584e-02, -1.856e-03, 7.774e-03), r);\n\tr = MulAdd(s2_3, M4(-4.381e-02, 2.754e-02, -6.510e-02, 2.031e-02, -9.400e-02, -3.504e-02, -1.971e-02, 4.256e-03, -2.762e-02, -1.132e-02, 7.760e-03, -4.663e-03, -1.978e-01, 1.753e-02, -1.958e-01, 4.394e-02), r);\n\tr = MulAdd(s2_4, M4(2.428e-01, -2.087e-01, 2.311e-01, -2.088e-01, 1.598e-01, 1.140e-01, 1.588e-01, -3.334e-01, 1.880e-01, 1.135e-01, 5.103e-02, 8.828e-02, -3.033e-02, 3.760e-01, -4.199e-02, 2.935e-01), r);\n\tr = MulAdd(s2_5, M4(9.823e-03, 7.790e-02, 1.327e-02, 7.703e-02, -5.115e-02, -8.814e-02, -7.008e-02, 1.904e-01, 1.031e-02, 7.739e-02, 2.008e-02, 6.279e-03, 2.631e-02, -1.120e-02, 1.851e-02, -2.875e-02), r);\n\tr = MulAdd(s2_6, M4(-4.129e-03, 6.841e-04, -1.334e-02, 8.805e-03, -1.776e-02, 5.161e-03, -1.021e-02, 1.459e-03, -1.630e-02, -1.006e-03, -1.680e-02, -1.178e-02, -1.506e-02, 4.431e-03, -9.363e-02, -3.570e-03), r);\n\tr = MulAdd(s2_7, M4(-2.595e-02, -8.209e-03, 2.180e-02, -3.919e-02, 2.377e-03, -4.880e-03, 1.113e-02, 3.670e-02, 1.886e-02, 4.059e-03, 7.378e-02, 1.729e-02, -1.076e-02, -6.551e-02, -2.519e-02, 3.988e-02), r);\n\tr = MulAdd(s2_8, M4(-2.461e-03, -7.184e-03, -6.953e-03, 2.376e-02, 4.969e-03, 7.072e-03, -6.686e-03, 1.143e-02, -7.839e-03, -5.919e-03, -1.470e-02, 4.468e-02, -8.697e-03, -2.448e-03, -1.257e-02, -1.114e-02), r);\n\tr = MulAdd(s3_0, M4(-1.878e-02, -2.434e-03, 8.435e-03, -5.416e-04, -5.024e-02, -4.839e-03, -2.418e-02, -6.214e-03, 3.156e-02, -6.234e-03, 1.266e-02, -2.019e-03, -3.627e-02, -1.740e-02, -1.324e-02, -1.049e-02), r);\n\tr = MulAdd(s3_1, M4(9.307e-03, -9.192e-03, -2.072e-02, 1.029e-02, 8.159e-02, -7.533e-02, 1.932e-02, 3.406e-03, -1.063e-01, -4.969e-02, 1.397e-03, 3.384e-02, 5.695e-03, -2.487e-04, -7.244e-03, -7.036e-03), r);\n\tr = MulAdd(s3_2, M4(-9.433e-03, 1.165e-03, -9.516e-03, -1.801e-02, 8.395e-03, 9.396e-02, 1.441e-02, 1.786e-02, 1.334e-03, -3.240e-02, -1.211e-02, -9.708e-03, -2.537e-03, -5.786e-03, 1.472e-04, 1.409e-02), r);\n\tr = MulAdd(s3_3, M4(-3.034e-02, 4.203e-03, -5.334e-02, -3.159e-03, -3.479e-02, -2.786e-02, -3.998e-02, -1.344e-02, -8.960e-02, -2.011e-02, -5.261e-02, 2.207e-02, 4.456e-03, -2.643e-02, -3.284e-02, -2.436e-02), r);\n\tr = MulAdd(s3_4, M4(8.252e-02, -7.086e-02, 1.282e-01, -4.984e-02, 2.513e-02, 4.663e-02, 8.703e-02, -3.284e-02, 1.492e-01, 3.702e-01, 1.355e-01, -1.026e-01, 9.108e-02, 1.341e-01, 5.950e-02, 7.397e-02), r);\n\tr = MulAdd(s3_5, M4(1.464e-02, 1.050e-01, 2.294e-02, 8.619e-02, -1.945e-02, -5.211e-02, -3.405e-02, 7.557e-02, 1.460e-02, 3.943e-02, 1.422e-02, 3.550e-02, 1.362e-02, 7.609e-03, 6.740e-03, -1.501e-02), r);\n\tr = MulAdd(s3_6, M4(-9.561e-04, -4.434e-03, -3.246e-03, 1.240e-03, -9.618e-03, 5.566e-04, -1.053e-02, -9.058e-03, -2.425e-02, -2.365e-02, 2.156e-02, -2.252e-02, -2.594e-02, -4.650e-04, -3.137e-02, -1.236e-02), r);\n\tr = MulAdd(s3_7, M4(-1.013e-02, -3.561e-03, -1.650e-02, -2.594e-02, 7.368e-03, -1.746e-03, 2.423e-02, 1.971e-02, 2.600e-02, -1.256e-02, 2.182e-02, 5.653e-02, -1.538e-02, -4.211e-02, -3.166e-03, -1.983e-02), r);\n\tr = MulAdd(s3_8, M4(-1.749e-03, -1.131e-02, -1.036e-03, 2.914e-02, 1.159e-03, 4.383e-03, -5.259e-03, 8.035e-03, -2.202e-03, -8.608e-04, -7.083e-03, 4.011e-02, -1.159e-02, -3.661e-04, -1.470e-02, 3.702e-03), r);\n\tr = MulAdd(s4_0, M4(1.241e-01, -2.722e-03, -1.522e-01, -2.910e-02, -7.858e-02, -1.887e-02, -1.970e-02, -8.743e-03, 3.292e-02, 1.835e-03, -1.332e-02, 1.231e-02, 1.371e-02, 1.383e-02, -1.290e-03, 2.727e-04), r);\n\tr = MulAdd(s4_1, M4(2.705e-01, 3.412e-01, -2.322e-01, -3.342e-01, 1.073e-01, 2.674e-03, 2.774e-02, 3.236e-02, -2.611e-02, -2.326e-03, 4.171e-02, 1.519e-02, -2.056e-02, -1.122e-02, -1.940e-02, -5.084e-02), r);\n\tr = MulAdd(s4_2, M4(1.196e-02, 4.752e-02, -2.241e-02, -7.073e-02, -9.354e-03, 2.420e-02, 2.362e-02, 2.388e-03, -9.792e-04, -6.070e-02, -1.017e-02, -1.761e-05, -2.084e-02, -2.422e-02, -2.179e-02, -3.296e-02), r);\n\tr = MulAdd(s4_3, M4(-8.960e-03, -2.168e-02, 4.790e-03, 6.261e-03, -8.020e-02, -1.778e-02, -9.870e-02, -1.462e-02, 2.071e-02, -6.225e-03, 7.382e-03, 9.693e-03, -1.874e-02, 8.222e-03, 3.224e-02, -8.453e-03), r);\n\tr = MulAdd(s4_4, M4(-3.010e-02, -2.755e-04, 1.521e-02, -9.902e-03, 1.081e-02, -1.996e-02, 9.496e-02, -7.462e-02, -4.012e-02, 2.716e-03, -1.808e-03, -7.398e-02, 9.465e-02, -6.016e-02, -5.529e-02, 4.329e-02), r);\n\tr = MulAdd(s4_5, M4(7.685e-04, -1.718e-02, -2.018e-03, 2.241e-02, 1.576e-02, -2.413e-02, -2.552e-02, 1.115e-01, 2.040e-02, 2.674e-02, -2.387e-02, 2.060e-02, 1.030e-02, 1.147e-01, 1.819e-02, 6.421e-02), r);\n\tr = MulAdd(s4_6, M4(3.099e-04, -7.753e-04, -4.291e-03, -2.896e-03, -2.850e-03, 2.901e-03, -2.640e-02, 2.571e-03, -1.092e-03, -7.156e-04, 5.573e-03, -1.358e-03, -9.563e-03, -7.458e-03, -8.650e-03, -2.034e-03), r);\n\tr = MulAdd(s4_7, M4(8.655e-03, 5.108e-03, 8.159e-03, 1.230e-02, -6.498e-04, 5.563e-03, -8.667e-03, -2.757e-02, -1.389e-03, 7.668e-04, -7.603e-04, 9.307e-03, -2.008e-02, -4.393e-03, -9.184e-03, -3.818e-03), r);\n\tr = MulAdd(s4_8, M4(4.210e-04, 4.429e-03, -2.299e-03, 3.601e-04, 9.826e-03, 9.722e-03, 4.011e-03, -2.770e-02, 2.060e-03, 1.865e-04, 2.297e-03, 1.553e-02, 1.851e-03, 3.818e-03, 3.571e-02, -2.679e-02), r);\n\tr = MulAdd(s5_0, M4(-1.703e-02, -2.141e-02, 3.662e-03, -1.035e-02, -4.829e-02, -1.841e-02, -2.961e-02, -8.827e-03, 1.959e-02, 2.521e-02, -3.347e-02, 1.142e-02, 2.545e-02, 1.529e-02, 1.503e-02, -9.263e-03), r);\n\tr = MulAdd(s5_1, M4(8.298e-03, 1.209e-02, 5.804e-03, 2.954e-02, 1.871e-01, -5.285e-02, 6.019e-03, 5.980e-02, 2.602e-01, -2.048e-01, -1.827e-01, 1.879e-01, -1.194e-01, 1.137e-01, -3.773e-02, -9.990e-02), r);\n\tr = MulAdd(s5_2, M4(-3.284e-03, -1.084e-02, 1.225e-03, -1.040e-02, -9.596e-03, 3.377e-03, 1.911e-02, 1.322e-02, 5.204e-03, -1.390e-01, 1.931e-02, 2.311e-02, -1.113e-02, -4.676e-02, -1.083e-02, -1.427e-02), r);\n\tr = MulAdd(s5_3, M4(-7.960e-04, -1.255e-02, -1.112e-02, -4.686e-03, -8.179e-02, -2.207e-02, -7.642e-02, -1.261e-02, 2.133e-02, -1.009e-02, 3.408e-02, -6.496e-04, -2.391e-03, 2.106e-02, -3.746e-02, 8.466e-03), r);\n\tr = MulAdd(s5_4, M4(-8.877e-03, 1.617e-02, -2.680e-03, -3.528e-02, -4.871e-02, -3.554e-02, 3.489e-01, -2.440e-01, -4.708e-02, 3.845e-02, -3.043e-02, -7.832e-02, 7.207e-02, -2.007e-01, 1.665e-01, 6.463e-02), r);\n\tr = MulAdd(s5_5, M4(-6.225e-04, -1.320e-02, -4.382e-03, 2.419e-02, 2.625e-02, 2.141e-02, -1.971e-02, 2.993e-02, 8.798e-03, 1.972e-02, -2.796e-02, 6.802e-02, 1.662e-02, 1.999e-01, 2.263e-03, -2.605e-02), r);\n\tr = MulAdd(s5_6, M4(-1.662e-03, -9.862e-04, -1.924e-03, -1.690e-03, -5.530e-04, 9.113e-04, -2.399e-02, 1.501e-04, 4.862e-04, -4.257e-04, 8.270e-03, -4.402e-04, -7.361e-03, -8.730e-03, -9.817e-03, -3.118e-04), r);\n\tr = MulAdd(s5_7, M4(5.400e-03, 2.631e-03, 9.178e-03, 1.119e-02, 1.026e-03, 1.547e-02, -3.413e-02, -1.751e-02, 9.076e-04, 1.486e-03, -9.140e-04, 1.067e-03, -6.821e-03, 8.481e-03, -3.967e-02, 5.920e-04), r);\n\tr = MulAdd(s5_8, M4(1.815e-03, 4.437e-03, -2.263e-04, -7.537e-04, 1.101e-02, 8.392e-03, 3.906e-03, -1.950e-02, 3.161e-03, 1.800e-03, -1.970e-03, 1.948e-02, -6.366e-03, -4.956e-04, 2.726e-02, -1.865e-02), r);\n\tr = MulAdd(s6_0, M4(7.153e-02, 1.432e-02, 5.029e-03, 1.068e-02, -2.239e-03, 5.988e-04, 3.456e-03, -1.638e-03, -1.509e-02, 3.740e-04, -6.526e-03, -8.932e-05, 1.896e-02, 7.404e-03, 5.672e-03, 8.338e-03), r);\n\tr = MulAdd(s6_1, M4(2.280e-02, -1.824e-02, 2.243e-02, 4.961e-02, 1.042e-01, 4.623e-02, -1.059e-02, 4.627e-04, -1.596e-02, -2.779e-02, 2.384e-02, 1.553e-02, 2.837e-02, -5.811e-03, -1.298e-03, 3.311e-03), r);\n\tr = MulAdd(s6_2, M4(-6.403e-03, -1.052e-02, -9.886e-03, 5.213e-03, 1.813e-02, 7.935e-02, 2.713e-02, 2.399e-02, 5.155e-03, 3.446e-03, 2.308e-03, 1.125e-03, -7.171e-03, -1.546e-02, 6.358e-03, -1.187e-02), r);\n\tr = MulAdd(s6_3, M4(7.386e-02, 5.118e-02, 1.043e-01, 3.452e-02, 3.457e-02, -3.300e-03, -1.363e-02, -4.357e-03, -2.312e-02, 4.680e-03, -1.498e-02, -1.621e-03, -5.287e-03, -2.001e-02, 1.342e-02, -4.378e-03), r);\n\tr = MulAdd(s6_4, M4(1.004e-01, -3.057e-01, 7.350e-03, -2.862e-01, -1.540e-01, -3.552e-02, 1.702e-01, 5.136e-02, 4.456e-02, -2.083e-02, -8.627e-02, -4.431e-02, -3.276e-01, 3.085e-01, -1.260e-01, 2.106e-01), r);\n\tr = MulAdd(s6_5, M4(1.999e-03, 3.940e-02, 1.170e-02, -1.264e-02, 1.583e-02, -6.350e-02, -4.114e-02, 3.691e-02, -2.899e-02, 1.204e-03, 1.770e-02, -2.299e-02, 7.905e-03, -1.410e-02, 7.572e-03, 1.972e-02), r);\n\tr = MulAdd(s6_6, M4(2.522e-03, 2.384e-03, 2.441e-02, 4.844e-04, 1.894e-02, 1.933e-03, -1.505e-03, 8.773e-03, -1.008e-02, -6.878e-03, 5.712e-03, -6.634e-03, -8.502e-03, -6.767e-03, -1.307e-02, -1.115e-02), r);\n\tr = MulAdd(s6_7, M4(-1.665e-02, 2.475e-02, 2.821e-02, -7.399e-02, -3.618e-02, -1.538e-02, -1.023e-01, -8.032e-02, 2.562e-03, 1.034e-02, 7.017e-03, 2.552e-02, -1.381e-02, 4.178e-02, -6.669e-02, 3.070e-02), r);\n\tr = MulAdd(s6_8, M4(-1.780e-03, -5.765e-03, -1.343e-02, 3.723e-02, -2.313e-03, -1.388e-02, -1.401e-02, -2.972e-02, 1.695e-02, 2.476e-03, 2.459e-02, 1.473e-02, 3.527e-02, 2.297e-02, 2.847e-02, -1.627e-02), r);\n\tr = MulAdd(s7_0, M4(2.734e-02, 9.389e-03, 1.899e-02, 9.436e-03, 1.607e-02, -5.627e-03, -4.848e-03, -6.998e-03, -4.030e-03, -1.852e-03, -5.729e-03, -6.533e-08, 1.703e-02, 7.887e-03, 7.217e-03, 4.398e-03), r);\n\tr = MulAdd(s7_1, M4(5.733e-03, 1.714e-02, 2.708e-02, 4.638e-02, 9.693e-02, 7.149e-02, -3.035e-02, -1.722e-02, 9.700e-03, -7.294e-03, -1.946e-02, -1.432e-02, 6.034e-03, -1.510e-02, 2.483e-02, 3.817e-03), r);\n\tr = MulAdd(s7_2, M4(-2.516e-03, -1.529e-02, -7.591e-03, 7.588e-03, 3.502e-02, 8.863e-02, 1.774e-02, -8.667e-04, 9.195e-03, 2.465e-02, 1.436e-03, -1.286e-02, -1.302e-02, 8.339e-04, 1.971e-03, -1.640e-02), r);\n\tr = MulAdd(s7_3, M4(-3.061e-02, 6.541e-02, -4.342e-02, 3.258e-02, 6.861e-02, -4.957e-03, -2.240e-02, -1.054e-02, -5.297e-02, 2.006e-02, 2.643e-04, -5.721e-03, -3.480e-02, -6.939e-04, 1.051e-02, 3.157e-03), r);\n\tr = MulAdd(s7_4, M4(3.394e-03, -1.038e-01, -1.067e-01, -8.081e-02, -3.834e-01, -9.184e-02, 3.959e-01, 1.383e-01, -2.757e-01, -2.394e-01, 1.315e-01, 9.302e-02, 3.851e-02, 6.530e-02, -5.134e-02, 2.032e-02), r);\n\tr = MulAdd(s7_5, M4(1.928e-02, 2.826e-02, 3.062e-02, -2.727e-02, 5.898e-02, -1.647e-01, -6.162e-02, 1.155e-01, -1.409e-02, -1.304e-01, 8.152e-03, 5.409e-02, -7.279e-03, -7.746e-02, 1.113e-02, 6.624e-02), r);\n\tr = MulAdd(s7_6, M4(4.472e-03, -7.955e-04, 3.064e-03, 9.964e-03, 1.995e-02, -4.696e-04, -6.926e-03, 8.025e-03, 3.883e-03, 2.538e-03, 1.678e-02, -1.129e-02, -1.199e-02, -3.737e-03, -3.190e-02, -2.174e-03), r);\n\tr = MulAdd(s7_7, M4(-1.147e-02, 1.181e-02, 1.281e-02, -3.577e-02, -1.517e-02, -4.086e-03, -1.170e-01, -1.094e-01, -4.812e-02, -2.669e-02, 1.685e-01, 1.296e-01, 1.777e-03, 1.122e-02, 2.007e-02, -1.995e-02), r);\n\tr = MulAdd(s7_8, M4(-1.510e-04, -6.915e-03, -1.230e-02, 2.398e-02, -3.685e-03, -1.359e-03, -3.283e-02, -3.793e-02, 1.634e-02, -9.149e-03, 1.263e-02, 8.960e-02, 2.716e-02, 2.490e-02, 1.270e-02, -2.679e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass10(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 s4_0 = l2(-1.0, -1.0);\n\tV4 s4_1 = l2(0.0, -1.0);\n\tV4 s4_2 = l2(1.0, -1.0);\n\tV4 s4_3 = l2(-1.0, 0.0);\n\tV4 s4_4 = l2(0.0, 0.0);\n\tV4 s4_5 = l2(1.0, 0.0);\n\tV4 s4_6 = l2(-1.0, 1.0);\n\tV4 s4_7 = l2(0.0, 1.0);\n\tV4 s4_8 = l2(1.0, 1.0);\n\tV4 s5_0 = -max(-s4_0, 0.0);\n\tV4 s5_1 = -max(-s4_1, 0.0);\n\tV4 s5_2 = -max(-s4_2, 0.0);\n\tV4 s5_3 = -max(-s4_3, 0.0);\n\tV4 s5_4 = -max(-s4_4, 0.0);\n\tV4 s5_5 = -max(-s4_5, 0.0);\n\tV4 s5_6 = -max(-s4_6, 0.0);\n\tV4 s5_7 = -max(-s4_7, 0.0);\n\tV4 s5_8 = -max(-s4_8, 0.0);\n\ts4_0 = max(s4_0, 0.0);\n\ts4_1 = max(s4_1, 0.0);\n\ts4_2 = max(s4_2, 0.0);\n\ts4_3 = max(s4_3, 0.0);\n\ts4_4 = max(s4_4, 0.0);\n\ts4_5 = max(s4_5, 0.0);\n\ts4_6 = max(s4_6, 0.0);\n\ts4_7 = max(s4_7, 0.0);\n\ts4_8 = max(s4_8, 0.0);\n\n\tV4 s6_0 = l3(-1.0, -1.0);\n\tV4 s6_1 = l3(0.0, -1.0);\n\tV4 s6_2 = l3(1.0, -1.0);\n\tV4 s6_3 = l3(-1.0, 0.0);\n\tV4 s6_4 = l3(0.0, 0.0);\n\tV4 s6_5 = l3(1.0, 0.0);\n\tV4 s6_6 = l3(-1.0, 1.0);\n\tV4 s6_7 = l3(0.0, 1.0);\n\tV4 s6_8 = l3(1.0, 1.0);\n\tV4 s7_0 = -max(-s6_0, 0.0);\n\tV4 s7_1 = -max(-s6_1, 0.0);\n\tV4 s7_2 = -max(-s6_2, 0.0);\n\tV4 s7_3 = -max(-s6_3, 0.0);\n\tV4 s7_4 = -max(-s6_4, 0.0);\n\tV4 s7_5 = -max(-s6_5, 0.0);\n\tV4 s7_6 = -max(-s6_6, 0.0);\n\tV4 s7_7 = -max(-s6_7, 0.0);\n\tV4 s7_8 = -max(-s6_8, 0.0);\n\ts6_0 = max(s6_0, 0.0);\n\ts6_1 = max(s6_1, 0.0);\n\ts6_2 = max(s6_2, 0.0);\n\ts6_3 = max(s6_3, 0.0);\n\ts6_4 = max(s6_4, 0.0);\n\ts6_5 = max(s6_5, 0.0);\n\ts6_6 = max(s6_6, 0.0);\n\ts6_7 = max(s6_7, 0.0);\n\ts6_8 = max(s6_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8, s4_0, s4_1, s4_2, s4_3, s4_4, s4_5, s4_6, s4_7, s4_8, s5_0, s5_1, s5_2, s5_3, s5_4, s5_5, s5_6, s5_7, s5_8, s6_0, s6_1, s6_2, s6_3, s6_4, s6_5, s6_6, s6_7, s6_8, s7_0, s7_1, s7_2, s7_3, s7_4, s7_5, s7_6, s7_7, s7_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-8x4C-NVL-DN.hlsl",
    "content": "// CuNNy 8x4C BILINEAR RGB NVL DN - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-DN-D04N08\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0\n\n#define l0(x, y) (dot(MF3(-1.880e-01, -3.696e-01, -8.936e-02), O(INPUT, float2(x, y)).rgb) + MF(5.137e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 1.324e-02, -9.379e-05, 8.452e-03, 5.165e-02 };\n\tr = mad(s0_0, V4(6.049e-03, -3.524e-01, -1.308e-01, -6.691e-02), r);\n\tr = mad(s0_1, V4(1.720e-02, -7.092e-02, -3.030e-01, 1.654e-01), r);\n\tr = mad(s0_2, V4(-6.706e-03, 2.289e-01, 1.982e-03, -5.756e-02), r);\n\tr = mad(s0_3, V4(-2.761e-02, 5.050e-01, -2.036e-01, 1.265e-01), r);\n\tr = mad(s0_4, V4(-8.654e-01, -6.035e-01, -2.119e-01, 5.055e-01), r);\n\tr = mad(s0_5, V4(-7.114e-03, 2.325e-02, 5.721e-02, 4.585e-02), r);\n\tr = mad(s0_6, V4(2.796e-01, 1.680e-01, 1.353e-01, 1.286e-02), r);\n\tr = mad(s0_7, V4(5.684e-01, 3.022e-01, 6.426e-01, 8.931e-02), r);\n\tr = mad(s0_8, V4(3.723e-02, -2.036e-01, 2.732e-02, -4.101e-02), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 1.959e-02, -5.807e-03, 9.415e-02, 7.247e-03 };\n\tr = MulAdd(s0_0, M4(2.216e-02, 1.062e-01, -3.433e-03, -1.923e-01, 6.300e-02, -4.594e-01, 2.025e-01, 8.655e-03, -5.497e-02, 1.694e-01, -1.806e-01, 2.115e-01, -6.176e-02, 1.167e-02, -5.987e-02, 1.167e-01), r);\n\tr = MulAdd(s0_1, M4(-1.646e-01, -5.524e-01, -1.352e-01, 1.704e-01, 3.398e-02, -2.598e-01, 1.616e-01, -1.772e-01, -5.648e-02, 2.755e-01, 2.638e-02, -2.657e-02, 3.774e-02, -6.833e-02, -1.141e-01, -2.438e-01), r);\n\tr = MulAdd(s0_2, M4(-1.459e-01, 9.939e-02, -6.457e-04, 2.352e-02, 5.006e-02, -7.759e-01, -4.862e-02, -3.366e-02, 9.508e-02, 1.537e-01, -6.771e-02, -1.260e-01, 1.067e-01, -5.893e-02, -9.811e-02, -1.060e-02), r);\n\tr = MulAdd(s0_3, M4(-2.901e-01, 2.907e-01, 2.178e-01, -3.877e-01, 9.034e-03, 8.718e-03, -1.213e-01, 9.252e-02, 3.286e-01, -8.247e-02, -5.573e-02, -3.852e-01, -1.371e-01, 1.877e-01, 2.337e-01, 5.324e-01), r);\n\tr = MulAdd(s0_4, M4(-9.182e-01, 1.013e-01, 2.969e-01, 7.117e-01, -2.367e-01, -7.128e-02, 1.828e-01, 5.993e-01, -2.965e-01, 1.323e-01, 3.117e-02, -3.215e-01, -1.410e-01, 5.359e-02, -1.137e-01, -2.603e-01), r);\n\tr = MulAdd(s0_5, M4(-1.071e-01, -8.801e-02, 9.524e-03, -2.937e-02, 7.723e-02, 1.195e-01, -9.056e-02, 6.161e-02, 1.962e-01, -2.740e-01, -9.418e-02, 1.141e-01, 6.203e-02, -1.084e-01, 2.402e-01, -2.066e-01), r);\n\tr = MulAdd(s0_6, M4(2.226e-01, -2.259e-01, -2.499e-02, -9.184e-02, -1.499e-01, -3.737e-02, 1.576e-01, 1.084e-01, -2.221e-01, -1.080e-02, 2.643e-02, -1.023e-01, 1.068e-01, 1.193e-01, -2.781e-01, 3.396e-01), r);\n\tr = MulAdd(s0_7, M4(7.520e-01, -1.043e-01, -4.535e-02, 2.775e-01, 1.577e-01, -1.526e-01, 1.796e-01, 1.085e-01, -1.012e+00, 4.333e-02, 1.270e-02, -1.692e-01, 1.127e-01, -2.847e-01, -1.784e-01, -3.956e-01), r);\n\tr = MulAdd(s0_8, M4(2.206e-01, 1.370e-01, -7.453e-02, 1.050e-01, 8.412e-02, -1.396e-01, 1.707e-02, -1.654e-02, -2.116e-01, -7.944e-02, 1.244e-01, -6.709e-02, -5.577e-02, 1.619e-01, -2.818e-01, 1.460e-01), r);\n\tr = MulAdd(s1_0, M4(1.180e-01, -2.345e-01, 5.406e-02, -1.102e-01, 1.559e-02, -3.865e-01, -1.077e-01, 1.442e-02, -1.405e-01, 1.578e-01, -3.338e-02, 1.157e-01, -1.676e-01, 4.656e-02, -1.507e-01, 2.590e-02), r);\n\tr = MulAdd(s1_1, M4(-3.112e-02, -5.537e-01, -3.626e-01, -2.915e-01, 7.495e-02, 4.473e-01, -1.847e-01, -8.743e-02, -3.290e-02, 3.660e-02, 1.252e-01, 1.058e-02, 1.193e-01, 6.421e-02, -1.456e-01, -1.693e-01), r);\n\tr = MulAdd(s1_2, M4(-1.047e-01, -4.306e-01, 6.486e-03, 1.137e-01, 2.935e-02, -3.608e-01, 5.242e-02, -2.374e-02, 1.130e-01, -4.864e-02, -7.302e-02, -2.205e-02, 8.227e-02, -8.403e-02, -9.468e-02, 8.095e-02), r);\n\tr = MulAdd(s1_3, M4(-3.759e-02, 2.709e-01, 1.269e-01, -4.994e-01, -1.577e-02, 1.871e-01, -2.532e-01, 8.960e-02, 2.298e-01, -2.462e-01, -1.634e-02, -3.955e-01, 2.750e-02, -4.812e-02, -2.441e-01, 9.926e-01), r);\n\tr = MulAdd(s1_4, M4(-7.288e-01, 5.644e-01, 1.042e+00, 6.160e-01, -4.271e-01, 4.419e-01, 1.437e-01, 3.840e-01, -1.220e-01, -8.627e-01, 6.664e-02, -1.220e-02, 5.260e-02, 1.505e-01, -2.182e-01, -6.116e-01), r);\n\tr = MulAdd(s1_5, M4(1.659e-01, 2.566e-01, -5.954e-02, -9.187e-02, -8.251e-02, 1.091e-01, -1.506e-01, 1.370e-01, 3.056e-01, -3.512e-01, -4.956e-03, 7.008e-02, 1.320e-01, -3.995e-01, -8.603e-03, -3.542e-01), r);\n\tr = MulAdd(s1_6, M4(2.549e-01, -7.946e-02, -1.755e-01, -2.902e-02, -1.912e-01, 2.349e-01, 6.770e-02, 9.683e-02, -2.690e-01, -1.715e-01, 5.692e-02, -1.064e-01, 2.998e-01, 7.619e-02, 8.040e-03, 2.706e-01), r);\n\tr = MulAdd(s1_7, M4(7.320e-01, 1.397e-01, -5.600e-02, 9.609e-02, -1.267e-01, 6.841e-02, 2.429e-01, 3.167e-02, -6.816e-01, -3.313e-03, 5.622e-02, -4.727e-02, -3.420e-01, 4.283e-02, -3.250e-01, -4.118e-01), r);\n\tr = MulAdd(s1_8, M4(1.607e-01, 1.581e-01, -6.049e-02, 9.118e-02, -1.583e-02, 2.918e-01, 1.703e-02, -1.206e-01, -2.114e-01, -1.248e-01, 6.689e-02, -2.131e-02, -7.779e-02, 1.069e-01, -1.181e-01, 2.230e-01), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 3.240e-02, -1.989e-01, -2.700e-02, 6.578e-03 };\n\tr = MulAdd(s0_0, M4(9.727e-02, 1.849e-01, 2.125e-02, 1.933e-01, 9.183e-02, 8.307e-03, -9.035e-02, 3.241e-02, 1.141e-01, 8.739e-02, -9.547e-02, 1.616e-01, 2.912e-02, -1.780e-02, 5.433e-02, 2.720e-02), r);\n\tr = MulAdd(s0_1, M4(-1.524e-01, -9.138e-02, 8.798e-02, -1.691e-01, 8.519e-03, 3.597e-02, -1.784e-02, 3.049e-02, 3.078e-02, 1.823e-01, 1.051e-02, -5.317e-02, -1.977e-01, 1.013e-01, 1.215e-01, 4.261e-02), r);\n\tr = MulAdd(s0_2, M4(-1.992e-02, -1.191e-01, -1.365e-03, 3.976e-02, 3.452e-03, 7.503e-03, 4.850e-03, 8.970e-03, -7.652e-03, 1.166e-01, 9.888e-02, 3.423e-03, -3.354e-01, -3.335e-01, -2.226e-02, -1.509e-01), r);\n\tr = MulAdd(s0_3, M4(-7.994e-02, 1.374e-01, -1.701e-02, -2.530e-01, 2.153e-01, -6.957e-03, -1.405e-01, -6.175e-02, 7.274e-03, 1.734e-01, -9.107e-02, -1.303e-01, -1.265e-01, 1.669e-02, 3.494e-02, -8.377e-02), r);\n\tr = MulAdd(s0_4, M4(-1.124e+00, 1.355e-02, -1.979e-01, -4.092e-01, -1.276e-01, -1.096e-01, 5.949e-02, 1.073e-01, -4.780e-02, 1.378e-01, 1.905e-01, -9.525e-02, -5.999e-01, 1.274e-01, 8.416e-01, 2.483e-01), r);\n\tr = MulAdd(s0_5, M4(3.312e-01, 2.036e-01, -5.231e-02, 5.357e-02, 1.666e-03, -2.102e-03, -3.213e-03, 4.747e-02, 1.130e-01, 3.492e-01, -1.263e-01, 4.100e-01, -5.859e-01, 4.875e-02, 2.227e-01, 3.127e-01), r);\n\tr = MulAdd(s0_6, M4(-3.699e-02, 6.066e-02, 3.448e-03, -4.158e-03, -4.048e-03, -3.619e-02, -8.830e-02, -8.917e-03, 2.990e-02, 6.919e-03, 9.803e-02, 2.188e-02, 5.674e-02, -3.122e-02, -6.793e-02, 8.573e-02), r);\n\tr = MulAdd(s0_7, M4(-1.255e-01, 1.754e-01, -1.332e-01, -1.124e-01, -2.163e-01, 1.552e-02, -7.485e-04, 4.194e-02, -1.899e-01, 1.334e-01, -1.721e-01, -3.487e-01, 3.847e-01, -3.823e-02, 1.121e-02, -7.128e-02), r);\n\tr = MulAdd(s0_8, M4(7.152e-02, -1.631e-02, 4.810e-02, 1.435e-01, 3.881e-02, -3.596e-02, -7.544e-03, -1.071e-01, -8.509e-02, 1.110e-01, 8.542e-02, 1.980e-02, -1.134e-01, -7.967e-02, -1.586e-01, 2.511e-01), r);\n\tr = MulAdd(s1_0, M4(2.326e-01, 4.791e-02, -1.996e-01, 1.352e-02, -9.909e-03, 1.117e-01, 2.198e-02, -6.683e-02, 1.356e-01, 2.830e-01, -8.418e-02, 2.137e-01, -1.401e-02, -7.056e-02, 5.360e-02, 6.243e-02), r);\n\tr = MulAdd(s1_1, M4(7.739e-01, -3.172e-01, -2.031e-01, 2.054e-01, -1.263e-01, -7.571e-03, 8.090e-02, -1.372e-01, 1.053e-01, 2.982e-01, -6.235e-02, 1.452e-02, 1.973e-01, 9.233e-02, -1.067e-01, 1.088e-01), r);\n\tr = MulAdd(s1_2, M4(-1.136e-01, -1.332e-01, -7.369e-02, 2.046e-01, -9.302e-02, 2.722e-02, 9.461e-02, -1.895e-01, 1.216e-02, 2.595e-01, 1.028e-01, 8.413e-02, -1.339e-01, -2.259e-01, -1.047e-01, 5.994e-02), r);\n\tr = MulAdd(s1_3, M4(1.224e-01, -3.713e-02, -2.383e-01, -1.743e-01, -1.876e-01, 1.155e-01, 2.212e-01, -1.375e-01, 1.618e-01, 2.628e-01, -1.161e-01, -1.826e-01, 8.003e-02, -1.961e-02, -6.278e-02, -5.710e-02), r);\n\tr = MulAdd(s1_4, M4(-2.647e-01, -1.603e-01, -7.731e-01, 1.958e-01, -4.093e-01, -1.110e-01, 3.352e-01, -3.093e-02, -6.201e-01, 3.073e-01, 3.779e-01, -2.733e-01, 4.035e-01, 1.230e-01, -1.606e-01, 9.421e-02), r);\n\tr = MulAdd(s1_5, M4(1.981e-01, -8.801e-03, -9.874e-03, -4.003e-02, 2.686e-03, -1.346e-01, -1.813e-02, -1.003e-01, 1.561e-01, 3.252e-01, -1.189e-01, 2.014e-01, 1.343e-01, 4.088e-02, -9.918e-02, 1.025e+00), r);\n\tr = MulAdd(s1_6, M4(-2.323e-02, 3.284e-02, -5.099e-03, -3.025e-02, -1.458e-02, -1.640e-02, 1.268e-01, -3.787e-02, 5.078e-02, 4.529e-02, 1.050e-02, -8.079e-03, -1.530e-02, -6.509e-02, -1.620e-01, 6.662e-02), r);\n\tr = MulAdd(s1_7, M4(3.972e-02, 8.570e-02, -8.723e-02, -3.746e-02, -1.902e-01, 5.121e-02, 1.161e-01, -4.624e-02, -6.268e-02, 1.852e-01, -1.535e-01, -2.023e-01, 2.476e-01, -2.211e-02, -1.590e-01, -3.109e-02), r);\n\tr = MulAdd(s1_8, M4(-8.025e-03, -4.798e-02, 5.162e-02, 6.616e-02, -2.416e-02, -5.815e-02, -1.334e-02, -1.029e-01, 5.381e-02, 1.539e-01, 4.511e-02, 1.426e-01, -5.511e-02, -9.311e-02, -3.072e-02, 1.572e-01), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 4.014e-03, -2.020e-02, 1.560e-02, -2.352e-02 };\n\tr = MulAdd(s0_0, M4(9.384e-02, 1.183e-01, 5.136e-02, -4.583e-01, -1.060e-01, 6.124e-02, -1.479e-01, -2.457e-01, -5.881e-02, 4.756e-03, -2.540e-02, -5.047e-02, -1.897e-01, 4.062e-02, 1.226e-02, 1.465e-01), r);\n\tr = MulAdd(s0_1, M4(-1.890e-01, -9.535e-02, 2.627e-01, 3.224e-01, 1.050e-01, -3.922e-02, -3.551e-01, -2.632e-01, -2.349e-01, -5.605e-02, -2.856e-01, 4.331e-01, -2.614e-02, -6.027e-02, -3.236e-02, 2.873e-01), r);\n\tr = MulAdd(s0_2, M4(-1.702e-01, 7.462e-02, 2.168e-01, 4.212e-01, 8.150e-03, 6.671e-02, -2.781e-01, -1.322e-01, -3.933e-02, 2.698e-02, -3.420e-01, -1.116e-02, -1.788e-02, 8.701e-03, -1.044e-01, 1.264e-01), r);\n\tr = MulAdd(s0_3, M4(3.573e-01, -4.592e-02, 4.539e-01, 2.854e-01, -6.463e-01, -1.763e-01, 6.236e-01, 7.125e-02, 4.126e-01, -1.621e-02, 1.685e-02, 2.328e-01, -5.456e-01, -2.113e-01, 1.424e-01, 1.414e-01), r);\n\tr = MulAdd(s0_4, M4(3.838e-01, -1.008e+00, 4.023e-01, 1.302e+00, -1.503e-01, 4.245e-02, 1.496e+00, -3.479e-01, -3.763e-01, -7.877e-01, 4.081e-01, -2.192e-01, -2.853e-01, 2.123e-01, -3.407e-01, 2.423e-01), r);\n\tr = MulAdd(s0_5, M4(5.073e-03, -2.123e-01, 1.851e-01, 1.482e-01, -2.814e-01, 1.262e-01, 6.890e-01, -2.317e-01, 6.427e-02, -5.801e-02, -3.684e-02, 7.526e-02, 1.309e-02, -2.125e-02, -7.760e-02, 4.795e-02), r);\n\tr = MulAdd(s0_6, M4(1.409e-01, -1.062e-01, 1.665e-01, 5.277e-01, 6.676e-01, -1.872e-01, 1.251e+00, 1.165e-01, -2.287e-02, -5.235e-02, -2.028e-03, -3.305e-02, -1.968e-01, 1.898e-01, -9.538e-02, -1.418e-01), r);\n\tr = MulAdd(s0_7, M4(7.353e-02, -3.073e-01, 1.789e-01, 2.137e-01, -6.435e-01, -6.052e-01, 2.259e+00, 2.884e-02, 7.105e-04, 1.247e-01, -7.393e-02, 2.539e-02, 1.194e-01, 1.870e-01, -1.126e-01, 2.444e-02), r);\n\tr = MulAdd(s0_8, M4(3.853e-02, -2.242e-01, 1.470e-01, 1.701e-02, 4.586e-02, 2.027e-01, 7.448e-01, -4.414e-01, 9.096e-03, 1.277e-01, 4.010e-02, 1.064e-02, 2.401e-02, 1.901e-02, 1.956e-02, 8.744e-02), r);\n\tr = MulAdd(s1_0, M4(-4.741e-02, 1.819e-03, -8.321e-02, -1.496e-01, -1.801e-02, 4.682e-02, -6.041e-02, -7.243e-02, -1.478e-01, 4.970e-02, 6.424e-02, -5.378e-02, -9.117e-02, 5.496e-02, -2.648e-02, -4.042e-02), r);\n\tr = MulAdd(s1_1, M4(-8.815e-02, 5.938e-02, -2.433e-01, 1.737e-01, 1.095e-01, -5.108e-02, -5.729e-02, 8.334e-03, -2.763e-01, -6.431e-02, -2.454e-02, 4.055e-01, 2.113e-02, -1.298e-01, -3.908e-02, -1.780e-02), r);\n\tr = MulAdd(s1_2, M4(-1.905e-02, 3.894e-02, -1.293e-01, 8.303e-03, -7.800e-03, -5.508e-03, 8.606e-02, -7.501e-02, 1.542e-02, 3.046e-02, -2.920e-01, -4.240e-02, -3.932e-02, -1.813e-02, -8.213e-02, 1.017e-01), r);\n\tr = MulAdd(s1_3, M4(1.965e-01, 3.626e-02, 3.418e-02, 9.779e-02, -6.664e-02, -2.295e-02, -2.736e-02, 1.091e-01, 1.129e-01, -3.896e-02, 1.171e-02, -2.870e-02, -1.382e-01, -1.691e-01, 3.018e-01, -1.186e-01), r);\n\tr = MulAdd(s1_4, M4(1.075e-01, -6.894e-01, 1.714e-01, 5.097e-01, 9.868e-03, 1.087e-01, 2.107e-01, -6.591e-02, -3.233e-01, -9.792e-01, -1.189e-01, -5.480e-01, -1.157e-01, 5.941e-02, -5.770e-01, -1.030e-01), r);\n\tr = MulAdd(s1_5, M4(3.289e-02, 3.941e-02, 1.824e-01, 7.260e-04, -9.787e-03, 3.128e-02, -1.333e-01, 1.352e-01, 5.954e-03, -2.520e-01, -8.536e-02, -3.566e-01, 2.998e-02, -5.941e-02, -8.531e-02, -4.232e-02), r);\n\tr = MulAdd(s1_6, M4(2.592e-02, -7.528e-02, -1.956e-02, 1.002e-01, 2.992e-02, -1.673e-01, 4.413e-02, 1.683e-01, 1.440e-02, -1.047e-02, 1.425e-02, -1.292e-01, -1.777e-01, 1.220e-01, -6.381e-02, 4.174e-02), r);\n\tr = MulAdd(s1_7, M4(-3.107e-02, -8.612e-02, 1.248e-02, -8.544e-02, -1.161e-01, 7.718e-02, -1.150e-01, -1.699e-01, -1.392e-02, 7.590e-02, -5.195e-02, -3.599e-01, 4.872e-02, 1.381e-01, -1.143e-01, -1.473e-03), r);\n\tr = MulAdd(s1_8, M4(1.277e-02, 3.020e-02, 4.658e-02, 8.071e-02, 6.867e-02, -2.693e-02, 7.897e-02, -1.264e-02, -1.035e-03, 1.509e-01, 4.169e-02, -1.716e-01, -4.694e-03, 1.627e-02, 7.171e-03, -4.496e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -5.942e-03, -2.718e-02, -1.234e-02, 3.307e-02 };\n\tr = MulAdd(s0_0, M4(3.174e-02, -2.020e-01, -6.843e-03, 1.049e-01, 1.680e-01, -6.387e-01, -1.541e-01, -1.952e-01, -4.586e-02, -1.580e-01, -5.507e-02, 1.065e-01, -5.257e-03, -9.464e-02, -9.788e-02, 1.221e-01), r);\n\tr = MulAdd(s0_1, M4(1.365e-01, -4.220e-02, -4.186e-02, -1.569e-01, -5.527e-01, -1.180e-01, -2.274e-01, -2.007e-01, 2.207e-02, 1.190e-02, 3.746e-02, -1.565e-01, -2.808e-02, 1.657e-02, -5.376e-02, -1.093e-02), r);\n\tr = MulAdd(s0_2, M4(-7.935e-02, -3.809e-02, -3.727e-02, -4.730e-02, -8.556e-02, 3.451e-04, -8.191e-02, 8.086e-02, 2.051e-02, 7.072e-03, 2.537e-02, 2.793e-02, 9.384e-04, -3.624e-02, -2.171e-02, 7.103e-02), r);\n\tr = MulAdd(s0_3, M4(-1.261e-02, 2.716e-01, 2.739e-01, -7.349e-02, -2.130e-02, -4.131e-01, -1.851e-01, 1.065e-01, -7.827e-02, 2.868e-01, -1.500e-01, -1.442e-01, -1.842e-02, -2.983e-01, -4.232e-02, 1.395e-01), r);\n\tr = MulAdd(s0_4, M4(2.733e-01, 4.015e-01, 4.102e-01, -2.027e-01, 4.229e-01, 2.213e-01, 3.628e-01, -1.011e-01, -4.893e-01, 1.333e-01, -4.245e-02, -8.133e-02, -1.086e-02, -1.089e-01, -8.720e-02, 1.513e-01), r);\n\tr = MulAdd(s0_5, M4(8.521e-02, 1.460e-01, 1.589e-01, -2.075e-01, -5.391e-02, 7.449e-03, -6.763e-02, -2.352e-01, 4.055e-02, -1.812e-02, -1.413e-02, 9.240e-02, -3.070e-02, -4.975e-03, -8.972e-02, -2.225e-02), r);\n\tr = MulAdd(s0_6, M4(1.880e-01, -1.481e-01, 1.001e-01, 6.339e-02, -6.208e-02, -2.814e-02, -5.944e-03, 1.002e-01, -7.822e-02, 1.010e-01, -2.161e-02, 9.175e-02, 1.495e-02, 1.645e-02, 8.901e-03, -3.865e-02), r);\n\tr = MulAdd(s0_7, M4(4.449e-01, -1.089e-01, -1.249e-01, -8.911e-01, 3.096e-02, 1.724e-01, 5.605e-02, -7.605e-02, -9.644e-02, -1.191e-01, -1.332e-01, 2.544e-02, 5.659e-02, -2.706e-04, -9.886e-02, 9.218e-02), r);\n\tr = MulAdd(s0_8, M4(7.394e-02, -2.112e-01, 1.505e-02, -1.236e-01, -1.848e-02, -2.716e-02, -6.663e-02, 2.764e-02, -1.120e-02, 3.440e-03, -1.443e-02, 1.745e-02, -3.847e-02, -4.228e-03, -8.888e-02, 2.134e-02), r);\n\tr = MulAdd(s1_0, M4(6.588e-03, -6.764e-02, -2.660e-02, -3.967e-02, 6.459e-02, -6.345e-01, -5.784e-01, 9.294e-02, 2.426e-02, -9.858e-02, -9.036e-02, -9.545e-02, 2.094e-02, -1.001e-01, -1.145e-01, -6.470e-02), r);\n\tr = MulAdd(s1_1, M4(-2.633e-03, 5.849e-02, 3.154e-02, -7.386e-02, -6.412e-01, -4.405e-01, -5.885e-01, 1.657e-01, -1.757e-01, -1.882e-02, -1.023e-01, -1.713e-01, -1.047e-01, -1.558e-01, -1.509e-01, -2.815e-01), r);\n\tr = MulAdd(s1_2, M4(1.880e-01, -3.790e-02, 1.112e-01, 1.672e-02, -1.713e-01, 2.611e-02, -9.008e-02, 9.359e-02, -6.567e-02, 9.399e-02, 3.743e-02, 3.662e-02, 3.190e-02, -1.466e-01, -1.154e-01, 1.692e-02), r);\n\tr = MulAdd(s1_3, M4(-1.733e-02, 1.381e-01, 8.342e-02, -5.893e-02, -1.467e-02, -4.365e-01, -3.057e-01, 1.506e-01, 7.300e-02, 6.777e-01, -5.484e-03, -3.499e-01, 1.978e-01, -6.846e-01, -2.921e-01, -1.173e-01), r);\n\tr = MulAdd(s1_4, M4(-1.829e-01, -4.506e-01, -5.685e-02, 8.260e-01, 3.056e-01, 1.803e-01, 1.908e-01, -2.029e-01, -1.578e-01, 5.039e-01, 3.016e-01, -4.971e-01, -4.977e-01, 4.537e-01, -4.268e-01, 7.878e-01), r);\n\tr = MulAdd(s1_5, M4(-3.251e-01, -1.229e-01, -1.447e-01, 3.290e-01, -2.134e-01, -6.542e-03, -7.109e-02, -1.004e-01, 3.887e-02, -1.008e-01, -7.490e-02, 6.126e-02, 2.757e-01, -1.980e-01, -1.792e-01, 2.722e-01), r);\n\tr = MulAdd(s1_6, M4(4.765e-02, -5.401e-02, 4.164e-02, 1.847e-03, -3.178e-02, -4.201e-02, -2.504e-02, 1.350e-02, -1.436e-01, 1.654e-01, -1.099e-02, -3.733e-02, 1.118e-01, -2.529e-01, -1.353e-01, -9.309e-02), r);\n\tr = MulAdd(s1_7, M4(1.684e-01, -1.978e-01, 2.645e-02, -9.582e-02, 2.618e-02, 9.350e-02, -2.281e-02, -1.901e-01, 1.176e-02, -1.571e-01, 1.491e-02, -2.105e-01, -1.685e-01, -2.459e-01, -2.166e-01, 1.082e-01), r);\n\tr = MulAdd(s1_8, M4(2.225e-02, 7.813e-02, -4.112e-02, 6.166e-02, -4.143e-02, -2.160e-02, -7.478e-02, -2.251e-02, -1.306e-02, -6.002e-02, -7.496e-02, -2.538e-03, 7.824e-02, 9.597e-02, -3.546e-03, -1.794e-01), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 6\n//!DESC conv5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 1.102e-03, 4.481e-03, 3.096e-03, -9.818e-03 };\n\tr = MulAdd(s0_0, M4(-1.069e-01, 1.009e-01, -5.972e-02, -1.732e-02, -9.217e-02, 9.177e-03, -3.127e-02, -5.872e-02, -1.364e-02, -9.990e-04, 1.518e-01, 5.861e-02, -9.835e-02, -1.155e-01, 6.714e-02, -5.142e-02), r);\n\tr = MulAdd(s0_1, M4(1.404e-02, 1.372e-01, -2.759e-01, -4.361e-02, -1.407e-01, 1.570e-01, -1.216e-01, -7.289e-02, 3.088e-01, -1.285e-01, 1.107e-01, 1.651e-01, 1.596e-01, -1.569e-01, 1.437e-02, -1.455e-01), r);\n\tr = MulAdd(s0_2, M4(-4.001e-02, 1.772e-01, -2.761e-01, 4.916e-02, -1.489e-01, 1.680e-01, -5.244e-02, 1.334e-01, 1.245e-01, -2.321e-01, 5.371e-01, -2.549e-01, -9.624e-02, -1.072e-01, 2.322e-01, -2.261e-01), r);\n\tr = MulAdd(s0_3, M4(-2.291e-01, 7.774e-04, -1.015e-02, 6.036e-02, -1.133e-01, 7.554e-02, 1.081e-01, 1.704e-01, 2.123e-01, -2.065e-01, 4.928e-02, 2.352e-03, -2.488e-01, -1.765e-01, 2.044e-01, 1.302e-02), r);\n\tr = MulAdd(s0_4, M4(3.195e-01, -5.410e-01, -4.771e-01, -1.713e-01, 2.778e-01, -1.028e-01, 8.603e-02, 2.162e-01, 1.466e-02, 2.633e-02, -3.299e-01, -5.183e-02, -3.598e-01, -4.015e-01, 5.674e-02, -1.429e-01), r);\n\tr = MulAdd(s0_5, M4(-1.480e-01, 2.440e-01, -2.189e-01, 1.407e-01, -3.439e-01, 2.624e-01, 4.947e-01, 7.813e-01, 1.067e-01, -6.781e-02, -5.271e-02, -1.331e-02, -2.133e-01, -1.038e-01, 4.267e-01, -4.026e-01), r);\n\tr = MulAdd(s0_6, M4(-1.086e-01, 2.607e-01, -1.897e-01, -1.710e-01, 6.096e-02, -1.121e-01, 8.797e-02, -8.204e-02, 4.825e-02, -9.364e-02, 8.472e-02, -1.923e-02, -1.755e-01, 1.086e-01, -3.987e-02, 1.737e-02), r);\n\tr = MulAdd(s0_7, M4(5.606e-02, 4.516e-02, -7.352e-02, 7.654e-02, -6.706e-02, 2.674e-01, -2.388e-01, -1.997e-01, 9.871e-02, -9.055e-02, 1.274e-01, 1.854e-01, -1.765e-01, -1.779e-01, 1.114e-01, -1.882e-01), r);\n\tr = MulAdd(s0_8, M4(-4.811e-02, 2.057e-01, -2.913e-01, 1.265e-01, 1.304e-01, 1.462e-01, -4.432e-03, 4.191e-01, 6.606e-02, -1.382e-01, 1.052e-01, -3.990e-01, 9.737e-02, -9.675e-02, 6.216e-02, -2.130e-01), r);\n\tr = MulAdd(s1_0, M4(-1.183e-01, -5.696e-02, 9.372e-02, 3.074e-03, -2.694e-02, -2.272e-02, -3.489e-02, -2.667e-02, 1.635e-01, -5.761e-04, -1.677e-03, -1.076e-01, -5.411e-02, -1.100e-02, 1.742e-02, 6.403e-02), r);\n\tr = MulAdd(s1_1, M4(-4.462e-03, 3.912e-02, -1.208e-01, -9.360e-02, -1.260e-01, 1.602e-02, -1.047e-01, -1.252e-01, 2.940e-01, 1.068e-01, -2.602e-01, 1.692e-01, 1.120e-01, -2.613e-02, -1.083e-02, 1.754e-02), r);\n\tr = MulAdd(s1_2, M4(2.307e-02, 1.240e-01, -2.024e-01, 1.761e-01, -2.326e-01, 3.209e-02, 5.352e-02, 3.399e-02, 1.754e-01, -3.059e-01, 4.554e-01, -2.412e-01, 4.242e-03, 3.919e-02, 7.769e-02, -1.155e-01), r);\n\tr = MulAdd(s1_3, M4(-1.946e-01, -9.445e-02, 1.698e-01, 1.165e-01, -1.571e-01, 1.700e-02, 5.682e-02, 4.628e-02, 4.425e-01, -1.872e-01, 3.713e-02, 8.537e-02, 4.211e-02, -6.178e-02, 1.398e-02, 5.929e-02), r);\n\tr = MulAdd(s1_4, M4(5.957e-01, -6.855e-01, -3.668e-01, -2.565e-01, -4.383e-02, -8.094e-02, -2.101e-02, -2.446e-01, -7.781e-02, 5.879e-01, -5.272e-01, -1.786e-01, -2.396e-01, -4.148e-01, 5.226e-02, 9.011e-02), r);\n\tr = MulAdd(s1_5, M4(-4.655e-02, 1.107e-01, -1.109e-01, 3.601e-01, -2.103e-01, 3.712e-01, 1.666e-01, 3.972e-01, -2.227e-02, -2.115e-02, -7.054e-02, -1.216e-01, 4.739e-03, 1.201e-01, 1.335e-01, -1.775e-01), r);\n\tr = MulAdd(s1_6, M4(-7.542e-02, 9.157e-02, 1.143e-02, -7.961e-02, -3.812e-02, 1.722e-02, 1.396e-02, -3.920e-02, -6.220e-03, -6.723e-02, 9.364e-02, -4.804e-02, -8.885e-02, 1.313e-01, -7.872e-02, 2.733e-02), r);\n\tr = MulAdd(s1_7, M4(-3.879e-01, -2.705e-01, 3.305e-01, -1.542e-01, -1.179e-01, 9.695e-02, -1.353e-01, -2.320e-01, 1.433e-02, -2.689e-01, 2.066e-01, 3.704e-01, -5.587e-02, -6.296e-02, 6.326e-02, 1.881e-02), r);\n\tr = MulAdd(s1_8, M4(-4.722e-02, -5.909e-02, 4.089e-02, -8.851e-02, 2.017e-01, -2.652e-02, 9.432e-02, 3.252e-01, -2.219e-01, 2.142e-02, -4.496e-02, 5.456e-02, 2.364e-02, 1.081e-01, -9.898e-02, 9.928e-02), r);\n\treturn r;\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 7\n//!DESC conv6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -6.918e-03, -1.945e-03, -7.751e-03, 1.645e-02 };\n\tr = MulAdd(s0_0, M4(-3.488e-02, 3.507e-02, 3.848e-02, -5.906e-02, 9.669e-02, 3.121e-02, -2.182e-02, 1.691e-01, -1.132e-01, -7.602e-02, -5.000e-02, -6.017e-03, 3.962e-02, 1.086e-01, -3.343e-04, 9.002e-02), r);\n\tr = MulAdd(s0_1, M4(9.453e-02, -1.793e-01, -6.074e-02, 5.317e-03, 1.056e-01, 3.460e-01, 5.291e-02, 7.825e-02, 5.510e-02, 4.818e-02, -1.119e-02, 3.913e-02, -8.177e-02, -1.060e-01, -9.989e-03, -9.245e-02), r);\n\tr = MulAdd(s0_2, M4(-8.190e-02, 1.375e-01, -4.322e-02, -6.721e-02, 1.645e-02, -1.392e-01, 7.103e-02, -1.950e-02, 4.302e-03, -3.213e-02, -7.517e-03, -3.406e-03, -2.132e-02, 1.333e-01, -6.553e-02, 7.300e-02), r);\n\tr = MulAdd(s0_3, M4(-1.102e-01, 3.005e-01, -8.521e-02, 3.002e-01, 1.866e-01, 1.089e-01, -2.968e-02, 1.271e-01, -3.566e-01, 1.224e-01, -7.462e-02, -2.765e-01, 5.175e-02, 1.567e-01, 1.450e-01, -1.948e-01), r);\n\tr = MulAdd(s0_4, M4(1.558e-01, 3.780e-02, 9.697e-02, -2.485e-01, -3.560e-01, -3.667e-01, 1.396e-01, 1.020e+00, -2.319e-01, -2.878e-01, -2.849e-01, 5.648e-01, 2.094e-01, -5.684e-01, 1.482e-01, -6.172e-01), r);\n\tr = MulAdd(s0_5, M4(-1.276e-01, -1.685e-01, 4.271e-01, -1.489e-01, 2.154e-01, 2.661e-01, -1.093e-01, -7.859e-02, 6.618e-02, 9.795e-02, 2.778e-02, -1.286e-01, -1.527e-01, -3.586e-01, 2.523e-01, 9.196e-02), r);\n\tr = MulAdd(s0_6, M4(-1.354e-01, -6.680e-02, 5.541e-02, -5.314e-02, 1.639e-02, -1.639e-01, -1.856e-01, -1.863e-01, -1.519e-01, -5.459e-02, 1.027e-01, 6.492e-02, 3.482e-02, -9.074e-03, 1.861e-01, 1.393e-01), r);\n\tr = MulAdd(s0_7, M4(1.907e-02, 1.189e-02, -5.038e-01, -8.478e-02, 3.643e-01, 1.086e-02, 3.067e-01, 1.071e-01, -6.552e-01, 1.505e-01, -7.394e-01, 1.155e-01, -1.815e-01, -1.739e-02, -2.723e-01, -1.607e-01), r);\n\tr = MulAdd(s0_8, M4(-8.319e-02, -2.563e-02, -1.127e-01, -7.792e-02, 1.295e-01, 1.091e-01, 2.920e-02, -5.761e-02, -9.443e-02, 7.429e-03, -2.117e-01, -3.670e-02, -7.118e-02, -4.469e-02, -6.460e-02, -1.261e-02), r);\n\tr = MulAdd(s1_0, M4(2.400e-02, -2.740e-02, -3.394e-02, 5.817e-02, -6.716e-02, -5.672e-02, -7.339e-02, -3.921e-02, -9.506e-02, -3.805e-02, -3.235e-02, -8.145e-02, 1.265e-02, 7.308e-02, -5.707e-02, 1.141e-01), r);\n\tr = MulAdd(s1_1, M4(-1.565e-01, 1.052e-01, -8.934e-02, -6.945e-02, 3.804e-02, 2.091e-01, -1.102e-01, 2.394e-01, 6.041e-02, -9.942e-02, -6.054e-03, 4.857e-02, -7.265e-02, 1.596e-02, 9.135e-02, -8.397e-02), r);\n\tr = MulAdd(s1_2, M4(-9.449e-02, 1.121e-01, -1.101e-01, -2.980e-02, 5.100e-02, -6.337e-02, 1.692e-01, -5.062e-02, -3.931e-02, 1.083e-01, 3.952e-03, 9.801e-04, -6.425e-02, 8.015e-02, -1.628e-01, 8.317e-02), r);\n\tr = MulAdd(s1_3, M4(7.400e-02, 8.412e-02, 2.984e-02, 8.693e-02, -1.474e-01, -3.529e-02, -6.134e-02, -1.107e-01, -3.264e-01, 8.009e-02, -2.261e-01, -1.472e-01, -4.683e-02, -1.258e-01, 1.061e-01, -1.125e-01), r);\n\tr = MulAdd(s1_4, M4(4.970e-01, -1.211e-01, 2.379e-01, 2.124e-01, -1.003e-01, -5.656e-01, 5.001e-02, 4.959e-01, 1.538e-01, -7.985e-01, -2.085e-01, 2.220e-01, 7.247e-02, 6.581e-02, -9.437e-02, -3.066e-01), r);\n\tr = MulAdd(s1_5, M4(-8.611e-02, -9.199e-02, 2.518e-01, -7.482e-02, -1.208e-01, 1.015e-01, 3.428e-02, -1.354e-01, 1.038e-01, -4.497e-02, 2.744e-01, -4.281e-02, 4.090e-02, -2.726e-01, 1.839e-01, 1.138e-01), r);\n\tr = MulAdd(s1_6, M4(-8.703e-02, -4.776e-02, -1.477e-01, -1.870e-02, -1.072e-01, 3.204e-02, -8.396e-03, 1.175e-01, 1.685e-01, -1.427e-01, 2.152e-01, -2.155e-01, 1.898e-03, 5.924e-02, -1.089e-02, 5.197e-02), r);\n\tr = MulAdd(s1_7, M4(-9.679e-02, 1.961e-02, 1.636e-01, -6.049e-02, -7.071e-03, 1.519e-01, -6.303e-01, 4.739e-02, -3.331e-01, 8.291e-02, -5.944e-01, -7.677e-02, -1.164e-01, -4.580e-02, 1.419e-01, 6.839e-02), r);\n\tr = MulAdd(s1_8, M4(6.174e-02, -4.004e-02, 1.256e-02, -4.981e-02, 4.659e-03, 8.371e-02, -1.664e-01, -2.897e-02, -1.253e-01, 2.381e-02, -1.147e-01, -8.724e-02, -3.736e-02, 1.140e-02, -1.550e-01, 6.350e-03), r);\n\treturn r;\n}\n\nvoid Pass7(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 8\n//!DESC conv7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 1.569e-02, 1.505e-02, 2.765e-02, 1.258e-02 };\n\tr = MulAdd(s0_0, M4(-4.116e-02, -3.385e-02, -4.697e-02, 4.650e-02, -3.488e-02, 1.006e-01, -4.538e-03, 4.637e-02, 1.288e-01, 7.769e-03, 1.150e-01, -7.930e-03, 1.045e-02, 4.849e-02, 2.767e-02, 4.909e-02), r);\n\tr = MulAdd(s0_1, M4(-5.332e-01, -5.254e-01, -3.541e-01, -3.525e-01, 1.117e-02, 2.929e-02, 6.817e-02, 9.115e-02, 1.055e+00, 6.141e-02, 3.976e-01, 4.649e-02, 2.561e-01, -1.191e-01, 1.230e-03, -1.047e-01), r);\n\tr = MulAdd(s0_2, M4(-1.450e-01, -2.829e-01, -6.857e-01, -4.294e-01, 3.217e-02, 2.745e-02, 5.242e-02, 3.556e-02, 1.284e-01, 4.292e-01, 7.161e-01, 2.220e-01, -1.508e-02, 1.802e-01, 1.842e-01, 9.827e-02), r);\n\tr = MulAdd(s0_3, M4(1.381e-01, 5.690e-02, 5.107e-02, 6.625e-02, -1.173e-01, -7.448e-02, -1.152e-01, -1.808e-01, -1.470e-01, -1.833e-01, -1.653e-01, -1.217e-01, 9.096e-02, 5.579e-02, 1.128e-02, 9.791e-02), r);\n\tr = MulAdd(s0_4, M4(5.936e-01, -2.579e-01, 5.761e-01, -7.051e-01, -7.023e-01, 2.824e-01, 2.057e-01, 3.628e-01, 1.006e-02, 3.209e-01, 6.969e-02, -3.464e-01, 4.768e-01, -3.194e-01, -4.817e-02, 3.050e-02), r);\n\tr = MulAdd(s0_5, M4(2.145e-01, -1.899e-01, 1.446e-01, 2.497e-02, -8.750e-02, -3.154e-01, -5.060e-01, -7.413e-02, -8.542e-02, -4.198e-02, -1.528e-01, -1.812e-01, -2.597e-01, 8.374e-02, -5.592e-01, -2.557e-01), r);\n\tr = MulAdd(s0_6, M4(5.713e-02, -4.294e-03, 2.388e-02, -7.124e-02, -2.163e-02, -3.642e-03, 3.839e-02, -6.934e-02, -9.052e-02, -1.153e-02, 1.213e-02, 7.120e-02, -3.698e-02, 4.260e-02, -7.245e-02, 7.898e-02), r);\n\tr = MulAdd(s0_7, M4(2.780e-02, 1.944e-02, 1.415e-01, 1.216e-01, 9.163e-02, -3.069e-02, -1.829e-02, -2.182e-01, 5.815e-02, -1.923e-02, -5.934e-02, -3.487e-02, -1.082e-01, 1.362e-01, 8.120e-02, 2.621e-01), r);\n\tr = MulAdd(s0_8, M4(9.334e-03, -1.300e-02, 4.936e-02, 1.751e-01, -1.214e-01, 1.629e-02, -1.131e-01, 7.402e-02, 1.134e-02, 1.663e-03, -5.887e-03, -8.862e-02, 1.029e-01, -5.629e-02, 9.127e-02, -6.668e-02), r);\n\tr = MulAdd(s1_0, M4(1.165e-02, 4.389e-02, 6.299e-03, 7.939e-02, -2.769e-02, 9.353e-02, 6.239e-02, 1.341e-02, 4.713e-02, -2.731e-03, 5.256e-02, -3.515e-02, -8.911e-02, -1.425e-01, -7.889e-02, -1.627e-01), r);\n\tr = MulAdd(s1_1, M4(-2.869e-01, 2.838e-02, -2.541e-02, 5.216e-02, 2.660e-01, -2.095e-01, 1.375e-01, -2.562e-02, 2.715e-01, 1.694e-01, 9.471e-02, -7.292e-03, 3.257e-01, -2.247e-01, 7.698e-03, -2.076e-01), r);\n\tr = MulAdd(s1_2, M4(1.832e-02, -1.860e-01, -4.951e-02, -1.392e-03, 9.307e-02, 7.671e-02, 1.043e-01, -3.675e-02, 1.433e-03, 1.219e-01, 1.978e-01, 5.960e-02, 9.624e-02, 1.448e-01, 3.561e-01, 3.054e-02), r);\n\tr = MulAdd(s1_3, M4(-4.647e-02, 4.225e-03, 3.830e-02, -3.233e-02, -1.532e-01, -6.289e-01, -3.037e-01, -4.131e-01, -1.794e-01, -4.090e-02, -9.644e-02, -4.828e-02, 7.978e-02, 6.792e-03, 5.043e-02, 4.905e-02), r);\n\tr = MulAdd(s1_4, M4(2.967e-01, -5.750e-02, 1.168e-01, -2.681e-02, 1.232e-01, -2.481e-03, 8.164e-01, 2.468e-01, -3.721e-01, -5.041e-02, -4.796e-01, -2.778e-02, 3.623e-01, -8.387e-01, -5.229e-01, -4.492e-01), r);\n\tr = MulAdd(s1_5, M4(-1.507e-02, 1.343e-01, 8.567e-02, 8.923e-02, -2.766e-03, -1.548e-01, -2.588e-01, -1.295e-01, 1.777e-02, -9.243e-02, -4.495e-02, -5.528e-02, -1.071e-01, -1.284e-01, -4.142e-01, -1.800e-01), r);\n\tr = MulAdd(s1_6, M4(-4.695e-03, -9.431e-04, -1.256e-02, -4.959e-03, 1.607e-01, -8.763e-02, 2.039e-01, -1.243e-01, 3.725e-02, -5.612e-02, -3.615e-03, -2.475e-02, 4.955e-02, 4.065e-02, -1.879e-02, -1.195e-01), r);\n\tr = MulAdd(s1_7, M4(-1.039e-02, 5.631e-02, 2.655e-02, 7.419e-02, 1.286e-01, -6.430e-02, 4.800e-02, -4.480e-02, 5.067e-03, -4.197e-02, -3.342e-02, -7.461e-02, -3.225e-02, 6.062e-03, 5.391e-02, -7.135e-02), r);\n\tr = MulAdd(s1_8, M4(5.195e-02, 3.799e-02, 1.130e-01, -8.811e-03, -4.285e-02, 1.609e-02, -8.972e-03, 3.530e-02, -6.932e-02, -3.013e-03, -5.208e-02, 5.823e-02, -4.561e-02, -1.068e-01, -1.458e-01, -5.739e-02), r);\n\treturn r;\n}\n\nvoid Pass8(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 9\n//!DESC conv8\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 8.112e-05, 3.290e-03, -6.342e-04, 1.340e-02 };\n\tr = MulAdd(s0_0, M4(4.724e-03, 6.987e-03, -3.797e-03, 2.147e-02, -5.616e-03, 1.123e-02, -2.768e-02, 8.185e-03, -4.051e-03, 5.608e-05, -9.522e-02, 2.924e-02, -5.976e-03, 8.331e-03, 7.513e-02, -2.513e-02), r);\n\tr = MulAdd(s0_1, M4(-2.224e-02, 1.093e-04, 5.901e-02, 2.350e-02, 1.167e-01, -7.837e-02, 1.939e-01, 1.987e-01, 5.530e-02, -4.759e-05, 1.221e-01, 4.764e-02, -8.813e-02, 7.695e-02, -4.577e-01, 1.671e-02), r);\n\tr = MulAdd(s0_2, M4(-5.696e-02, 6.005e-03, -5.620e-02, -8.978e-02, 4.014e-02, -3.822e-02, 1.081e-01, -6.532e-03, 9.444e-03, 7.498e-03, -3.228e-02, 4.908e-02, -2.043e-02, 2.374e-02, 2.163e-02, -4.505e-02), r);\n\tr = MulAdd(s0_3, M4(-8.098e-02, 1.943e-02, -5.744e-02, 3.824e-02, -2.071e-01, 1.036e-01, -6.926e-02, -2.348e-01, 2.378e-01, -1.069e-01, -5.307e-02, 1.161e-01, 1.881e-01, -5.785e-02, -6.570e-02, 2.227e-01), r);\n\tr = MulAdd(s0_4, M4(7.577e-02, -4.125e-02, 1.714e-01, -6.934e-01, -2.448e-01, 1.146e-01, 2.354e-01, -4.935e-01, -2.321e-01, -8.273e-02, 5.890e-02, 5.704e-01, 4.833e-02, 2.875e-02, 1.163e-01, -1.802e-01), r);\n\tr = MulAdd(s0_5, M4(2.287e-01, -3.461e-02, -2.542e-02, 2.882e-02, 7.142e-02, -1.556e-01, 4.055e-02, 1.534e-02, -1.647e-01, 3.087e-03, -6.811e-02, -3.896e-02, 1.334e-01, 1.188e-01, -1.847e-01, 4.293e-02), r);\n\tr = MulAdd(s0_6, M4(-3.094e-02, 2.712e-03, 3.387e-03, 1.877e-02, 9.494e-02, -2.863e-02, -4.239e-02, -3.402e-02, 5.541e-03, -1.178e-02, 1.795e-02, -3.515e-02, -3.044e-02, -2.463e-02, -1.320e-02, 8.952e-02), r);\n\tr = MulAdd(s0_7, M4(1.035e-01, -3.181e-02, 1.902e-02, 3.973e-03, 2.267e-01, -2.620e-01, 1.821e-01, 1.631e-01, 1.494e-02, 6.125e-02, -6.176e-02, -2.497e-02, -1.364e-02, 7.542e-02, -8.480e-02, -4.648e-02), r);\n\tr = MulAdd(s0_8, M4(-1.466e-01, 3.028e-02, 2.798e-02, -7.887e-02, -4.370e-02, 1.408e-02, -6.161e-02, -3.034e-02, 6.567e-02, 2.071e-02, 3.126e-02, 6.993e-02, -5.556e-02, 1.507e-02, 2.991e-02, -4.924e-02), r);\n\tr = MulAdd(s1_0, M4(1.637e-02, -2.767e-02, 8.568e-02, -4.254e-02, 3.215e-02, 1.987e-04, -3.697e-02, 3.787e-02, 2.236e-02, -6.576e-02, 7.400e-02, 1.093e-01, 3.271e-03, 1.809e-03, 1.011e-02, 1.509e-01), r);\n\tr = MulAdd(s1_1, M4(5.538e-02, -5.865e-02, 4.351e-01, 2.494e-01, 1.101e-01, -1.484e-02, 5.176e-01, 3.999e-02, -4.782e-03, 1.155e-01, -2.099e-01, 5.012e-03, -1.919e-01, 2.292e-01, -5.378e-01, -1.223e-01), r);\n\tr = MulAdd(s1_2, M4(-5.691e-02, 7.653e-02, -2.572e-01, -1.332e-01, -5.652e-02, -5.008e-02, 7.840e-02, -3.729e-02, 6.942e-02, 6.483e-04, -2.243e-05, 8.430e-02, -6.848e-02, -2.096e-02, -3.908e-02, -9.062e-02), r);\n\tr = MulAdd(s1_3, M4(2.725e-01, -1.841e-01, -6.710e-03, 3.965e-01, -1.298e-01, -4.014e-03, 2.007e-01, -3.700e-01, 5.329e-01, -4.014e-01, 2.619e-02, 1.606e-01, 2.179e-01, -1.403e-01, 4.227e-02, 8.568e-02), r);\n\tr = MulAdd(s1_4, M4(4.188e-01, -7.320e-01, -5.609e-01, -6.087e-01, -7.521e-01, 7.363e-01, -6.253e-01, -2.011e-01, -1.017e+00, 3.331e-02, -2.135e-02, 2.084e-01, 6.074e-01, -9.824e-01, 5.154e-01, 1.748e-01), r);\n\tr = MulAdd(s1_5, M4(1.733e-01, 5.176e-01, -7.335e-02, 1.899e-02, 1.028e-01, -6.330e-02, -1.632e-01, 9.241e-05, -1.357e-01, -1.131e-01, 9.644e-02, -1.424e-02, -1.835e-02, 7.296e-01, -3.204e-01, -2.966e-02), r);\n\tr = MulAdd(s1_6, M4(4.798e-02, -1.047e-01, 3.646e-02, 6.703e-02, 5.371e-02, 4.759e-02, -2.975e-02, -6.945e-02, 7.985e-02, -1.101e-01, 3.034e-02, -1.472e-02, -3.827e-02, 9.839e-03, -4.922e-03, 4.307e-03), r);\n\tr = MulAdd(s1_7, M4(-8.950e-02, -1.253e-02, -1.730e-05, 3.862e-02, 2.692e-01, -4.645e-01, 2.399e-01, 2.744e-01, -4.503e-02, 1.724e-01, -7.935e-02, -5.200e-02, -2.132e-03, -1.926e-02, 2.926e-02, -2.288e-02), r);\n\tr = MulAdd(s1_8, M4(-1.072e-01, -1.145e-02, 6.605e-03, -1.090e-01, -7.524e-03, 8.598e-02, -7.698e-02, -6.976e-02, 5.869e-02, -5.499e-02, 3.529e-02, 7.813e-02, -1.794e-01, 4.212e-02, -4.479e-03, -7.253e-02), r);\n\treturn r;\n}\n\nvoid Pass9(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 10\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 3.107e-03, 3.655e-03, 5.416e-04, 5.397e-04 };\n\tr = MulAdd(s0_0, M4(-1.348e-01, -9.107e-02, -4.849e-02, 4.484e-04, -3.384e-02, -6.768e-02, -9.628e-03, -1.766e-02, -9.939e-03, -2.182e-02, -1.288e-02, 8.518e-03, 2.218e-02, -1.184e-03, 1.240e-03, 1.065e-02), r);\n\tr = MulAdd(s0_1, M4(7.301e-02, 1.014e-01, -1.363e-02, -4.850e-02, -2.842e-01, -3.060e-02, -4.154e-02, 4.057e-03, -3.458e-02, -6.335e-02, -2.660e-02, -1.335e-02, -7.944e-03, 8.560e-03, 4.588e-02, 7.580e-03), r);\n\tr = MulAdd(s0_2, M4(-9.349e-05, -2.142e-02, -1.258e-04, -9.330e-03, -5.058e-03, 3.912e-02, -2.976e-02, 2.410e-02, -8.512e-03, 4.954e-02, -2.093e-02, -2.582e-03, 1.648e-02, 7.942e-03, 1.520e-02, 3.414e-02), r);\n\tr = MulAdd(s0_3, M4(-1.021e-01, -1.140e-01, 2.412e-01, 1.289e-02, -1.192e-01, -1.140e-01, 2.395e-01, 6.930e-03, -2.027e-01, -4.824e-02, 1.243e-01, 3.820e-03, 9.280e-03, 2.866e-02, 2.106e-02, 3.644e-03), r);\n\tr = MulAdd(s0_4, M4(8.727e-02, 8.162e-02, 1.478e-01, 5.348e-01, -3.115e-01, -2.605e-02, 1.510e-01, 7.249e-01, -8.110e-02, -6.698e-01, 1.080e-01, -8.090e-02, -3.492e-01, -1.891e-01, -1.877e-01, -1.319e-01), r);\n\tr = MulAdd(s0_5, M4(-5.622e-03, 2.237e-02, -4.008e-03, -1.980e-02, -1.837e-02, -3.311e-02, 4.289e-02, 3.256e-02, -2.178e-02, 2.653e-02, -1.722e-03, 8.373e-02, -8.042e-02, -2.962e-01, -4.643e-03, -6.865e-02), r);\n\tr = MulAdd(s0_6, M4(6.248e-03, -2.320e-02, 1.883e-03, -1.430e-02, 1.224e-02, 5.634e-03, -1.964e-02, -1.627e-02, 2.010e-02, 1.174e-02, -3.919e-02, 9.559e-04, 3.016e-02, -2.836e-03, 7.667e-02, 3.552e-02), r);\n\tr = MulAdd(s0_7, M4(-6.141e-03, 1.380e-02, 1.024e-02, -1.210e-02, 4.548e-02, 3.626e-02, -9.142e-02, -7.666e-02, -3.241e-02, -2.296e-02, -3.244e-02, -2.870e-01, 4.427e-02, 8.899e-02, -1.327e-01, 4.920e-02), r);\n\tr = MulAdd(s0_8, M4(-2.801e-03, -9.930e-04, -2.770e-03, 1.623e-02, 2.158e-03, -1.258e-02, -3.089e-02, 3.211e-02, -9.620e-03, 1.776e-02, -4.337e-03, 4.676e-02, 1.130e-02, -7.436e-03, -3.572e-02, -1.742e-01), r);\n\tr = MulAdd(s1_0, M4(-4.306e-02, -6.039e-02, -1.642e-02, -1.966e-02, -5.996e-02, -1.743e-01, -3.128e-02, 1.714e-02, -4.357e-03, -7.720e-03, -4.532e-03, 4.571e-03, 3.988e-02, 2.067e-02, 1.548e-02, -2.964e-04), r);\n\tr = MulAdd(s1_1, M4(-6.070e-02, -9.324e-02, 7.472e-03, 2.173e-02, -7.996e-02, -5.139e-02, -5.545e-02, -1.891e-02, -1.767e-02, -1.527e-02, -2.906e-02, 1.310e-02, 2.594e-02, 7.495e-02, -7.681e-03, -4.678e-03), r);\n\tr = MulAdd(s1_2, M4(4.883e-02, -3.167e-02, 2.862e-02, 3.357e-02, -8.454e-03, 9.265e-03, -1.657e-02, -8.086e-03, -1.170e-02, -3.549e-02, 7.437e-03, 1.425e-02, 1.441e-02, -1.961e-02, 1.560e-02, -1.122e-02), r);\n\tr = MulAdd(s1_3, M4(-6.156e-02, -6.763e-02, 1.987e-01, 2.459e-02, -5.710e-02, -2.009e-01, 4.581e-01, -1.181e-02, -9.054e-02, -5.658e-02, 3.432e-02, 2.004e-02, 6.965e-03, -1.655e-02, 5.178e-03, -1.236e-02), r);\n\tr = MulAdd(s1_4, M4(-1.301e-01, -5.093e-02, 7.676e-01, 6.003e-01, -9.216e-02, -2.228e-03, 7.034e-02, 1.851e-01, -5.318e-01, -1.852e-01, -2.980e-02, 1.919e-02, -8.147e-01, -1.773e-01, -2.675e-01, 2.314e-02), r);\n\tr = MulAdd(s1_5, M4(-9.962e-03, -1.888e-01, -1.877e-02, 1.190e-01, -2.283e-02, -1.241e-02, 2.969e-04, 3.894e-02, -5.077e-02, 2.300e-01, -6.192e-02, 1.793e-01, 5.384e-03, -4.378e-01, 2.970e-02, -1.125e-01), r);\n\tr = MulAdd(s1_6, M4(1.376e-02, -2.891e-03, 9.292e-03, -1.288e-03, 2.615e-02, 2.656e-02, -8.111e-02, -1.779e-02, -7.512e-03, 9.174e-03, -4.553e-02, -1.139e-02, 2.259e-02, 4.351e-03, 4.963e-02, 2.002e-02), r);\n\tr = MulAdd(s1_7, M4(9.993e-03, 1.250e-02, -2.090e-02, 6.839e-03, 3.502e-03, 2.070e-03, -5.530e-02, -2.855e-03, 1.144e-02, -4.191e-02, -8.395e-02, -2.056e-01, 6.909e-02, 7.425e-02, -2.374e-01, 8.636e-02), r);\n\tr = MulAdd(s1_8, M4(-1.762e-02, -3.804e-04, 2.643e-02, 4.383e-02, 1.748e-03, -1.201e-02, -8.452e-03, -1.216e-02, -1.203e-02, -3.454e-02, -1.957e-02, 2.212e-01, -1.375e-02, -1.094e-02, -1.245e-02, -2.124e-01), r);\n\treturn tanh(r);\n}\n\nvoid Pass10(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-8x4C-NVL.hlsl",
    "content": "// CuNNy 8x4C BILINEAR RGB NVL - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-D04N08\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0\n\n#define l0(x, y) (dot(MF3(2.666e-01, 5.050e-01, 1.135e-01), O(INPUT, float2(x, y)).rgb) + MF(-8.258e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -8.495e-04, -1.121e-04, 1.842e-02, 5.844e-02 };\n\tr = mad(s0_0, V4(-2.544e-02, -4.130e-01, -2.634e-01, 2.417e-02), r);\n\tr = mad(s0_1, V4(1.256e-02, -8.013e-02, 9.539e-02, -7.111e-02), r);\n\tr = mad(s0_2, V4(1.768e-02, -2.469e-01, -1.627e-01, 8.569e-02), r);\n\tr = mad(s0_3, V4(-1.554e-01, 3.441e-02, -1.508e-01, 2.491e-02), r);\n\tr = mad(s0_4, V4(1.628e-01, 8.679e-01, -1.960e-02, -5.810e-01), r);\n\tr = mad(s0_5, V4(-1.237e-02, -1.704e-01, 2.915e-01, -5.922e-01), r);\n\tr = mad(s0_6, V4(7.925e-01, 5.570e-03, 7.074e-02, 4.442e-04), r);\n\tr = mad(s0_7, V4(-7.910e-01, -1.530e-02, -8.229e-02, 3.149e-03), r);\n\tr = mad(s0_8, V4(-3.973e-03, 2.262e-02, -1.213e-01, 3.843e-02), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 1.016e-03, 5.583e-03, -1.608e-02, -1.996e-04 };\n\tr = MulAdd(s0_0, M4(4.254e-02, 1.997e-01, 4.636e-02, -4.800e-02, 2.043e-01, -4.096e-02, -7.212e-02, 1.408e-02, -3.916e-01, 2.630e-03, 7.016e-02, 9.613e-02, 1.773e-01, -2.723e-01, -9.458e-02, -1.890e-01), r);\n\tr = MulAdd(s0_1, M4(2.350e-01, -8.474e-01, -4.044e-01, -9.188e-01, 9.560e-03, 5.061e-02, 1.092e-02, 1.781e-01, -2.144e-01, 3.203e-02, 6.349e-02, -8.272e-02, -3.105e-01, -3.917e-02, -1.320e-02, -1.541e-01), r);\n\tr = MulAdd(s0_2, M4(-8.130e-01, -1.003e-01, 8.195e-02, -7.597e-01, 5.207e-02, 3.470e-02, -8.823e-03, -1.131e-01, -4.029e-02, 7.571e-02, -2.010e-01, 2.487e-01, 1.677e-01, -5.118e-02, -1.070e-01, 7.606e-02), r);\n\tr = MulAdd(s0_3, M4(-1.158e-02, 4.898e-02, 1.202e-02, 5.012e-01, -5.343e-02, 4.756e-02, -2.438e-01, 6.399e-02, 2.822e-01, -2.863e-02, 1.996e-01, -7.099e-02, -1.323e-01, -3.797e-01, 5.385e-02, -1.014e-01), r);\n\tr = MulAdd(s0_4, M4(2.812e-01, 7.903e-01, -1.733e-01, 6.668e-01, 4.775e-01, 5.452e-01, 7.089e-01, -1.851e-01, -2.382e-01, -5.180e-02, -3.623e-01, -3.040e-01, -4.313e-01, -1.167e-02, 1.235e-01, 1.436e-01), r);\n\tr = MulAdd(s0_5, M4(-1.291e-01, -3.022e-02, -4.083e-01, -5.939e-02, -4.249e-01, -1.750e-01, 1.094e-01, -1.176e-01, 1.374e-02, 1.342e-01, 2.086e-01, 2.841e-01, 2.347e-01, 1.450e-01, 7.604e-02, 2.176e-01), r);\n\tr = MulAdd(s0_6, M4(8.130e-02, -7.215e-02, -5.249e-02, 9.518e-03, -1.979e-01, -4.441e-02, -1.857e-01, -4.227e-01, 2.149e-01, -1.610e-01, 1.655e-01, -8.841e-02, 1.409e-01, -1.059e-01, 2.037e-01, -2.744e-03), r);\n\tr = MulAdd(s0_7, M4(-7.266e-02, 1.638e-02, -1.639e-01, 1.957e-02, -2.857e-01, 1.936e-01, -1.243e-01, -1.490e-01, 1.525e-01, -8.934e-02, 7.415e-02, -1.779e-01, 1.648e-02, -6.456e-02, 7.053e-02, -9.530e-02), r);\n\tr = MulAdd(s0_8, M4(-6.960e-02, -8.960e-02, -1.757e-02, -1.370e-01, -5.137e-01, -1.179e-01, -4.053e-01, -1.987e-01, 7.100e-02, 2.928e-02, -9.682e-02, 2.403e-01, 1.814e-01, 2.131e-02, 5.579e-02, 5.457e-02), r);\n\tr = MulAdd(s1_0, M4(-2.737e-02, 5.272e-02, -1.801e-02, -2.491e-01, 2.871e-01, -3.704e-02, -6.568e-02, 2.905e-02, 1.011e-01, -3.782e-01, -8.696e-02, 4.682e-01, 3.233e-01, -3.060e-01, -3.251e-02, 1.165e+00), r);\n\tr = MulAdd(s1_1, M4(-4.994e-01, 3.049e-02, -8.802e-02, -6.179e-02, 7.133e-02, -1.957e-02, -4.465e-02, 1.130e-01, 7.255e-02, 6.956e-03, -1.204e-01, 3.699e-01, -8.844e-02, 4.624e-01, -9.881e-02, -2.512e-01), r);\n\tr = MulAdd(s1_2, M4(-3.645e-01, 1.274e-01, 2.387e-01, -1.963e-01, -5.995e-02, -5.943e-02, 9.694e-02, -2.518e-01, -2.797e-01, 1.598e-01, -1.371e-02, 4.000e-01, 2.213e-01, 9.692e-02, -3.302e-01, 1.132e+00), r);\n\tr = MulAdd(s1_3, M4(-8.539e-03, -6.535e-02, 5.575e-02, 1.928e-01, 1.156e-01, 5.227e-02, -3.039e-01, 4.794e-01, 1.441e-01, 1.929e-01, -4.689e-02, 2.023e-02, 1.330e-01, -1.358e+00, -5.393e-01, 7.907e-01), r);\n\tr = MulAdd(s1_4, M4(1.701e-01, -3.479e-02, 5.404e-01, -2.491e-01, 4.564e-01, 6.659e-01, 7.009e-01, -2.288e-02, -7.696e-01, -4.959e-01, 2.881e-01, -4.322e-01, -9.013e-01, -4.765e-01, 5.556e-02, -1.805e-01), r);\n\tr = MulAdd(s1_5, M4(-2.424e-01, 8.034e-03, -4.699e-02, -2.628e-01, -4.682e-01, 2.977e-02, 2.258e-01, -1.419e-01, 3.514e-01, 6.860e-03, 2.147e-01, 3.806e-01, 3.747e-01, 1.403e-01, 3.106e-01, 9.680e-01), r);\n\tr = MulAdd(s1_6, M4(1.776e-01, -4.873e-02, -1.403e-01, -1.817e-02, -3.551e-01, 4.838e-04, -2.786e-01, -6.048e-01, 3.082e-01, -4.703e-01, 2.419e-01, -3.002e-01, -4.310e-01, -6.490e-01, 1.343e+00, -1.019e+00), r);\n\tr = MulAdd(s1_7, M4(4.689e-02, -2.927e-02, -7.494e-02, -3.516e-02, -2.217e-01, -3.189e-01, 2.202e-01, -2.936e-01, 4.772e-02, -1.609e-01, 9.853e-02, -4.214e-01, 2.780e-01, -1.073e-01, 1.102e-01, -2.033e-01), r);\n\tr = MulAdd(s1_8, M4(-9.468e-02, 4.428e-02, 1.269e-01, -1.086e-01, -1.106e-01, -1.367e-01, -3.356e-01, 4.656e-03, 4.648e-02, -1.743e-02, -2.074e-01, -3.745e-02, 1.281e-01, -3.233e-01, 6.533e-01, 3.705e-01), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -1.437e-02, -2.276e-02, 2.275e-02, 6.547e-04 };\n\tr = MulAdd(s0_0, M4(-4.810e-02, 2.379e-02, -8.471e-02, 1.305e-01, -5.897e-02, 1.263e-01, -9.639e-02, 9.150e-02, 9.002e-03, -1.763e-01, 8.275e-02, -2.357e-01, 7.181e-02, -7.360e-02, 4.629e-02, -8.259e-02), r);\n\tr = MulAdd(s0_1, M4(6.774e-02, 9.108e-02, -3.750e-01, 8.014e-02, 2.890e-01, 9.986e-02, -1.262e-02, -1.285e-01, -2.789e-01, -1.145e-01, -4.982e-02, -1.101e-01, -2.051e-02, -2.271e-01, 1.343e-01, -8.643e-02), r);\n\tr = MulAdd(s0_2, M4(-5.433e-02, 6.899e-02, -3.350e-01, -7.837e-02, -1.076e-01, 1.912e-02, -9.061e-02, 1.919e-01, 9.387e-02, -4.206e-02, 1.861e-01, -4.416e-03, -1.560e-01, -4.364e-02, 4.364e-01, 8.765e-02), r);\n\tr = MulAdd(s0_3, M4(2.382e-01, 3.032e-01, -1.313e-01, -1.154e-01, 1.008e-01, 3.058e-01, -8.513e-02, 2.713e-01, -9.875e-02, 3.017e-01, 3.203e-02, 5.762e-01, -2.056e-03, -7.698e-02, 8.681e-02, 4.245e-02), r);\n\tr = MulAdd(s0_4, M4(2.643e-01, 1.750e-01, 4.850e-02, 3.131e-03, 2.785e-01, 1.598e-01, 5.772e-01, -4.118e-04, -4.270e-01, -2.447e-01, 4.486e-01, 9.155e-02, -3.428e-01, -2.583e-01, -3.721e-02, 6.278e-02), r);\n\tr = MulAdd(s0_5, M4(-1.080e-01, -5.514e-02, -3.648e-01, -2.319e-02, -2.100e-01, -4.065e-02, 1.126e-01, 3.970e-02, 9.824e-02, 1.377e-02, 1.295e-01, -2.512e-02, 1.115e-01, 7.094e-02, 3.413e-01, -5.245e-02), r);\n\tr = MulAdd(s0_6, M4(1.991e-01, 4.710e-02, -9.305e-02, -1.471e-01, -8.221e-02, 1.134e-01, -1.718e-01, -2.606e-01, -8.167e-02, -1.462e-02, -1.094e-01, -1.569e-01, 2.133e-02, 3.374e-02, 4.583e-02, 1.228e-01), r);\n\tr = MulAdd(s0_7, M4(-2.135e-01, 6.874e-02, -4.993e-02, 1.156e-02, -4.261e-01, 1.366e-01, 4.250e-02, -5.707e-02, -1.966e-01, -6.106e-02, 1.265e-01, -3.076e-03, 2.043e-03, -3.072e-02, 1.043e-01, 3.422e-01), r);\n\tr = MulAdd(s0_8, M4(7.235e-02, -3.542e-04, -1.435e-02, -3.815e-02, -8.855e-02, 8.327e-02, 1.954e-01, 1.462e-01, 1.615e-01, -4.957e-02, 1.596e-02, -8.625e-02, 6.574e-02, -9.799e-02, 5.401e-03, 7.595e-02), r);\n\tr = MulAdd(s1_0, M4(1.245e-01, -2.812e-03, 1.486e-02, 1.246e-01, -5.943e-02, 1.170e-01, -1.068e-01, 8.960e-02, 5.354e-03, -2.039e-01, 8.228e-02, -2.530e-01, -2.789e-03, -6.932e-02, -3.187e-02, -5.794e-02), r);\n\tr = MulAdd(s1_1, M4(-2.539e-02, 4.598e-02, -1.205e-01, 1.597e-01, 2.391e-01, 1.269e-01, -1.116e-02, 1.498e-02, -2.388e-01, -1.548e-01, -7.389e-02, -1.083e-02, -1.181e-01, -7.069e-02, 9.383e-03, -2.018e-01), r);\n\tr = MulAdd(s1_2, M4(-1.248e-02, 3.267e-02, -2.761e-01, -2.043e-02, -8.520e-02, 3.937e-02, -1.372e-01, 1.821e-02, 6.915e-02, -4.061e-02, 1.782e-01, -4.619e-02, 6.811e-02, -5.458e-04, 3.193e-01, 8.892e-03), r);\n\tr = MulAdd(s1_3, M4(-1.580e-01, 7.536e-02, -6.680e-02, 1.891e-01, 1.196e-01, 3.476e-01, -6.321e-02, 1.972e-01, -9.851e-02, 4.483e-01, 9.326e-03, 5.272e-01, -1.478e-01, -4.009e-02, -3.561e-02, -2.549e-01), r);\n\tr = MulAdd(s1_4, M4(-1.253e-01, 1.345e-01, 4.994e-01, 2.000e-01, 2.728e-01, 1.672e-01, 5.501e-01, -1.736e-02, -5.782e-01, -2.191e-01, 4.380e-01, 4.346e-02, -3.006e-01, -5.220e-02, -1.613e-01, 6.023e-02), r);\n\tr = MulAdd(s1_5, M4(1.276e-01, -8.319e-02, -2.115e-01, 1.471e-01, -1.669e-01, -2.484e-02, 9.906e-02, 1.836e-02, 1.010e-01, 1.847e-02, 1.027e-01, -1.680e-02, -1.880e-01, 1.377e-01, 3.823e-02, -8.256e-02), r);\n\tr = MulAdd(s1_6, M4(-3.200e-01, -7.023e-02, -1.243e-01, -2.003e-02, -7.863e-02, 6.650e-02, -1.264e-01, -1.862e-01, -9.119e-02, -4.374e-02, -1.195e-01, -6.902e-02, -1.360e-01, 3.356e-02, -3.667e-02, -1.815e-01), r);\n\tr = MulAdd(s1_7, M4(1.462e-02, 1.001e-01, 2.453e-01, -1.298e-02, -4.372e-01, 1.509e-01, 8.011e-02, -1.323e-01, -1.980e-01, -4.785e-02, 1.733e-01, 1.100e-02, -2.153e-01, 6.711e-02, 2.595e-03, 1.213e-01), r);\n\tr = MulAdd(s1_8, M4(-3.794e-03, 2.239e-02, -6.960e-02, 7.342e-02, -1.882e-01, 1.159e-01, 1.876e-01, 3.125e-02, 2.242e-01, -5.956e-02, 1.328e-02, -5.400e-02, 2.205e-02, -6.049e-02, -9.151e-02, -1.137e-01), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 1.575e-02, -2.007e-01, -3.519e-03, -9.082e-03 };\n\tr = MulAdd(s0_0, M4(3.886e-03, -1.503e-01, -6.378e-01, 4.214e-02, -1.255e-01, 1.146e-01, -1.917e-01, -6.556e-02, -3.368e-02, 6.874e-02, 2.796e-01, -2.936e-02, -3.239e-02, 3.923e-02, -6.439e-02, 1.313e-02), r);\n\tr = MulAdd(s0_1, M4(4.357e-01, -1.067e-01, 3.330e-01, -8.295e-02, -4.004e-01, 3.113e-01, -4.222e-02, 2.290e-01, -1.861e-01, 9.039e-02, -1.132e-01, 1.077e-01, -1.603e-02, 6.296e-02, 4.907e-01, 3.396e-02), r);\n\tr = MulAdd(s0_2, M4(-3.290e-01, -1.073e-01, 1.064e-02, -2.792e-03, -4.366e-01, 3.239e-01, -1.383e-01, 1.918e-01, 3.058e-02, 1.006e-01, -6.898e-02, -1.451e-02, -1.882e-01, 2.248e-01, 1.744e-02, -3.155e-02), r);\n\tr = MulAdd(s0_3, M4(2.403e-02, -1.353e-01, 1.895e-01, -2.285e-01, -1.211e-01, 1.771e-01, 2.135e-01, 1.900e-01, -4.204e-03, 3.719e-02, -4.772e-01, 2.006e-01, -2.532e-03, 5.872e-02, 2.901e-01, -9.450e-02), r);\n\tr = MulAdd(s0_4, M4(8.054e-02, 1.389e-02, -2.060e-02, -3.042e-01, -2.476e-01, 9.905e-02, -9.248e-01, 3.372e-01, -5.254e-01, 4.455e-01, 5.707e-02, 1.057e-01, -3.525e-01, 3.349e-01, -3.414e-01, 7.090e-02), r);\n\tr = MulAdd(s0_5, M4(-1.889e-01, -2.290e-01, -4.930e-02, -1.824e-01, -2.062e+00, 6.868e-02, 2.552e-01, 3.883e-01, 5.778e-02, 9.141e-02, 9.917e-02, -1.164e-01, 4.359e-02, 2.105e-01, -7.911e-02, -1.916e-01), r);\n\tr = MulAdd(s0_6, M4(-2.267e-02, -6.231e-03, -9.718e-03, 3.770e-04, -6.982e-02, 4.184e-02, -2.296e-01, -9.542e-02, 5.236e-02, -5.412e-02, -1.757e-01, -1.054e-01, 1.414e-02, -7.772e-02, -1.338e-02, 3.928e-02), r);\n\tr = MulAdd(s0_7, M4(5.776e-02, 4.703e-02, 3.914e-02, -1.617e-02, -3.606e-01, 3.037e-01, -3.096e-01, 3.562e-02, 3.108e-01, -3.684e-01, 3.725e-02, -2.050e-01, -1.494e-02, 8.741e-02, 5.992e-02, 2.655e-02), r);\n\tr = MulAdd(s0_8, M4(3.614e-02, -1.212e-01, 2.507e-02, -5.858e-02, -1.121e-01, -3.433e-01, 6.613e-02, -6.943e-01, 2.233e-02, -5.467e-02, -6.900e-03, -2.566e-01, -1.106e-01, 2.016e-02, -3.700e-02, -2.886e-01), r);\n\tr = MulAdd(s1_0, M4(-5.136e-02, -2.190e-01, -1.035e+00, -5.722e-02, 2.876e-02, 5.070e-02, 3.532e-01, -6.778e-03, 2.930e-04, -6.219e-02, 2.314e-01, -5.210e-02, 1.508e-02, -4.390e-02, -7.749e-02, -9.658e-03), r);\n\tr = MulAdd(s1_1, M4(3.663e-01, -9.746e-02, -6.582e-01, -3.676e-01, -1.694e-01, 7.883e-02, -1.613e-01, 2.328e-02, 2.595e-04, -3.763e-02, -9.946e-02, -6.137e-02, 1.429e-01, -1.964e-01, 2.439e-01, 4.898e-02), r);\n\tr = MulAdd(s1_2, M4(7.884e-02, 1.842e-01, -1.309e-01, 4.895e-02, 4.820e-02, 8.364e-02, 1.189e-02, -1.438e-02, -7.934e-02, 4.775e-02, -6.137e-02, -1.335e-02, -4.416e-02, 3.584e-02, 1.751e-04, -1.178e-02), r);\n\tr = MulAdd(s1_3, M4(-9.861e-03, -1.277e-01, 2.389e-03, -3.232e-01, -2.782e-03, 1.115e-01, -6.485e-02, 2.093e-01, 2.056e-01, 2.527e-02, -1.772e-01, 1.863e-02, 5.983e-02, -8.103e-02, 3.076e-01, -2.027e-01), r);\n\tr = MulAdd(s1_4, M4(1.001e-01, 3.476e-01, -1.305e-01, -1.653e-01, 8.890e-02, -4.170e-01, -1.530e-01, 7.048e-02, -5.605e-01, 1.093e-01, 2.038e-01, -2.320e-01, -1.287e-01, -2.173e-01, -1.630e-01, -9.691e-02), r);\n\tr = MulAdd(s1_5, M4(-2.778e-01, 1.393e-01, -2.802e-02, -5.375e-02, -4.550e-01, -1.661e-01, 2.293e-03, -5.984e-02, -5.070e-02, -8.852e-02, 7.806e-02, 2.187e-02, 1.901e-01, -3.219e-01, -1.937e-01, -2.336e-01), r);\n\tr = MulAdd(s1_6, M4(-8.489e-02, 1.968e-01, -7.760e-02, 1.388e-01, 4.713e-03, 1.527e-01, 8.535e-02, 1.643e-02, 1.429e-01, -1.558e-01, 2.339e-01, 2.762e-01, 1.694e-02, -4.245e-02, -2.793e-02, -3.332e-02), r);\n\tr = MulAdd(s1_7, M4(-4.377e-02, 3.486e-01, -1.766e-01, -1.065e-01, -1.645e-01, -8.722e-04, -1.147e-01, 1.663e-01, 6.801e-02, -3.539e-01, 1.560e-02, -1.819e-01, 1.440e-02, -1.221e-02, 3.693e-02, 5.886e-03), r);\n\tr = MulAdd(s1_8, M4(5.940e-02, 1.624e-01, 1.526e-02, 6.692e-02, 1.812e-01, -8.647e-02, 3.210e-02, -3.751e-04, 2.884e-02, -4.717e-02, 4.121e-03, 5.144e-02, -1.995e-02, -2.827e-01, 6.148e-03, 7.209e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 2.513e-04, -2.994e-02, -5.133e-02, -8.977e-03 };\n\tr = MulAdd(s0_0, M4(-6.479e-02, -9.976e-02, -1.507e-01, -9.934e-02, -1.046e-02, -1.471e-01, -4.218e-02, -8.348e-04, -5.963e-02, 1.519e-03, 5.897e-03, 5.284e-02, -4.467e-01, 4.779e-01, -1.953e-02, 1.951e-01), r);\n\tr = MulAdd(s0_1, M4(-5.276e-02, -1.201e-01, -1.160e-01, 6.076e-02, -4.798e-02, -3.491e-01, -3.055e-01, -1.607e-01, -8.989e-02, 1.221e-01, -1.561e-01, 6.227e-02, -1.598e-01, -6.666e-01, 6.029e-01, -5.466e-01), r);\n\tr = MulAdd(s0_2, M4(-1.331e-01, -4.988e-02, -2.217e-02, 3.405e-02, 2.261e-02, 1.352e-01, 1.124e-02, 8.259e-02, -3.548e-02, 2.454e-01, 4.417e-02, 2.297e-01, 1.780e-01, -2.203e-01, 5.913e-02, -2.201e-01), r);\n\tr = MulAdd(s0_3, M4(1.348e-01, 5.544e-01, -4.335e-01, -3.619e-01, 1.011e-01, 2.665e-01, -2.627e-01, -1.800e-01, -1.158e-01, -8.543e-02, -7.868e-03, 2.056e-01, 1.988e-01, 1.174e+00, -1.291e-01, 1.131e-01), r);\n\tr = MulAdd(s0_4, M4(4.504e-01, 1.025e-01, -1.449e-01, -3.442e-02, -4.525e-01, -1.513e-01, -8.135e-02, -9.669e-02, -3.287e-01, 5.251e-01, -6.540e-01, 7.386e-02, 2.603e-01, -8.246e-01, -1.378e-01, 2.363e+00), r);\n\tr = MulAdd(s0_5, M4(-7.102e-02, -5.554e-02, -3.489e-02, -6.688e-02, 2.877e-01, -6.258e-02, 8.515e-02, -2.109e-01, -2.723e-01, 1.543e-01, 1.285e-01, 9.366e-02, 3.135e-02, -3.700e-01, -4.111e-01, 1.822e+00), r);\n\tr = MulAdd(s0_6, M4(-4.018e-02, -3.412e-01, 5.388e-02, 4.947e-01, -3.234e-02, -6.778e-02, 3.825e-02, 1.313e-01, -6.083e-02, 3.439e-02, -1.081e-01, 6.456e-02, 2.287e-02, -2.470e-01, 2.026e-02, -1.886e-02), r);\n\tr = MulAdd(s0_7, M4(2.410e-01, 1.529e-01, -1.370e-01, -1.389e-01, 1.549e-01, 8.308e-03, 3.064e-02, 3.925e-02, -9.013e-02, 1.131e-01, -9.240e-02, 3.740e-01, -1.009e-01, -6.576e-02, -1.491e-01, -3.452e-02), r);\n\tr = MulAdd(s0_8, M4(-1.628e-01, -2.480e-02, -6.569e-02, 3.873e-02, 1.604e-02, 1.651e-02, -4.681e-02, -1.647e-02, -1.648e-02, 1.541e-01, 2.284e-02, 6.545e-01, 1.799e-03, 1.193e-03, -1.215e-01, 5.919e-02), r);\n\tr = MulAdd(s1_0, M4(-1.115e-02, -5.014e-02, -1.499e-01, -7.414e-04, -6.944e-02, -4.168e-02, -1.254e-01, -6.576e-02, 2.946e-04, -2.669e-02, 4.109e-02, 1.949e-02, 1.242e-01, 1.753e-01, 9.717e-02, 1.446e-01), r);\n\tr = MulAdd(s1_1, M4(-1.327e-02, -1.462e-01, -8.510e-02, -1.228e-02, 1.772e-01, 1.009e-01, -4.342e-02, -8.827e-02, -6.663e-02, -1.245e-01, -4.625e-02, -4.285e-02, 7.586e-02, -1.208e-01, 2.705e-01, -1.558e-01), r);\n\tr = MulAdd(s1_2, M4(-7.024e-02, -3.045e-02, -1.916e-02, 4.979e-02, -9.145e-02, 2.285e-01, 4.612e-02, 2.217e-01, 7.690e-02, -4.332e-02, 6.032e-03, -2.370e-02, 3.802e-01, -8.124e-02, 1.982e-02, -8.310e-02), r);\n\tr = MulAdd(s1_3, M4(1.238e-01, 5.787e-01, -5.332e-01, -2.806e-01, 1.208e-01, 6.549e-02, -2.040e-01, -2.578e-02, -5.878e-02, -1.496e-01, 1.213e-01, 1.489e-02, 9.569e-02, 1.964e-01, 6.477e-02, -2.939e-01), r);\n\tr = MulAdd(s1_4, M4(5.825e-01, 2.257e-01, -1.943e-01, 1.101e-01, -3.240e-01, -2.967e-01, -4.203e-02, -3.636e-01, -1.062e-01, -3.799e-02, -4.444e-01, -7.607e-02, -3.056e-01, -2.926e-01, -4.582e-02, 2.795e-01), r);\n\tr = MulAdd(s1_5, M4(-9.076e-02, -5.130e-02, -3.718e-02, -6.163e-02, 1.831e-01, -1.199e-01, 9.176e-02, -2.456e-01, 2.362e-01, -1.854e-01, -1.394e-01, 3.560e-03, 2.070e-02, -6.903e-02, -5.061e-02, 3.068e-02), r);\n\tr = MulAdd(s1_6, M4(-4.988e-02, -3.880e-01, 3.001e-02, 3.892e-01, -2.827e-02, -2.880e-02, 4.071e-02, 2.861e-01, -4.016e-02, -1.085e-01, 9.207e-03, -7.367e-02, 9.072e-03, 8.960e-02, 5.334e-03, -6.480e-02), r);\n\tr = MulAdd(s1_7, M4(2.900e-01, 1.450e-01, -1.401e-01, -2.809e-01, 1.218e-01, -3.153e-03, -2.544e-02, 1.898e-01, -7.197e-02, -3.721e-01, 4.042e-02, 9.918e-02, -1.132e-01, 3.578e-02, 4.000e-02, 6.991e-02), r);\n\tr = MulAdd(s1_8, M4(-1.493e-01, -2.310e-02, -6.133e-02, 5.322e-02, -4.879e-02, -5.139e-02, -8.058e-02, 4.140e-02, 2.511e-01, 3.669e-02, -1.003e-01, -1.457e-01, 1.528e-01, 1.177e-01, 6.665e-02, -3.084e-02), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 6\n//!DESC conv5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 4.102e-03, 1.192e-03, -2.598e-03, -2.812e-03 };\n\tr = MulAdd(s0_0, M4(4.575e-01, 2.412e-01, 1.926e-01, 5.873e-02, 2.954e-02, -1.424e-01, 7.881e-03, 2.358e-04, -5.872e-02, -1.007e-01, -3.632e-02, 5.718e-02, 1.389e-01, -4.163e-02, -1.379e-01, 2.160e-03), r);\n\tr = MulAdd(s0_1, M4(1.347e-01, -8.074e-01, -1.155e-01, 2.242e-01, -2.673e-01, 4.053e-01, 8.867e-02, -2.840e-02, 9.443e-02, 2.632e-01, 9.207e-02, -1.793e-02, 1.519e-01, 3.302e-03, 2.027e-01, 2.643e-02), r);\n\tr = MulAdd(s0_2, M4(1.462e-02, -7.543e-02, -6.080e-02, 7.431e-02, -3.673e-02, -1.665e-01, -2.745e-01, -4.416e-02, -3.270e-01, 7.677e-01, 7.241e-01, -1.157e-01, -8.204e-03, 2.172e-02, 3.183e-01, 3.931e-02), r);\n\tr = MulAdd(s0_3, M4(1.168e+00, -8.427e-01, -3.237e-03, 5.416e-02, 1.694e-02, -1.042e-01, -2.173e-01, -1.089e-01, -9.881e-02, -1.109e-01, -1.003e-01, -5.080e-02, -9.279e-02, -1.111e-01, -2.699e-02, -2.297e-02), r);\n\tr = MulAdd(s0_4, M4(-4.884e-01, -4.472e-01, -9.701e-02, 8.789e-01, 1.962e-02, 5.041e-01, 3.221e-01, -4.622e-02, 9.039e-02, -2.531e-01, 6.228e-01, 1.590e-02, 1.804e-02, 7.795e-02, -8.005e-02, -6.310e-03), r);\n\tr = MulAdd(s0_5, M4(-6.567e-02, -5.161e-02, 5.550e-02, 5.285e-02, -6.147e-02, -1.840e-01, 2.028e-01, 4.014e-01, 4.070e-01, -1.022e-01, 1.414e+00, -3.126e-01, 7.508e-03, 1.013e-01, -7.300e-02, -4.282e-01), r);\n\tr = MulAdd(s0_6, M4(1.721e+00, 1.776e-01, -8.690e-02, -1.102e-01, -8.467e-02, -2.165e-02, 6.238e-02, 2.052e-02, 2.763e-01, -3.472e-02, -1.179e-01, 2.993e-02, -6.860e-02, 1.887e-02, 3.140e-02, -6.853e-02), r);\n\tr = MulAdd(s0_7, M4(1.937e-01, 1.975e-01, -2.456e-01, -1.360e+00, 1.792e-01, -5.969e-02, -7.670e-02, 2.606e-01, 1.355e-01, -9.109e-03, 2.756e-01, 6.674e-02, 1.312e-02, -1.542e-02, 2.236e-02, 1.997e-01), r);\n\tr = MulAdd(s0_8, M4(4.255e-02, -1.452e-02, -8.732e-02, -1.084e-01, 1.495e-02, 1.302e-02, -9.151e-02, -2.814e-01, 5.197e-02, 2.866e-02, 5.490e-01, 4.310e-01, 3.666e-02, -3.380e-03, -2.830e-02, -8.223e-02), r);\n\tr = MulAdd(s1_0, M4(2.549e-02, 7.469e-02, -5.290e-02, -4.972e-02, -2.340e-01, -1.875e-01, 1.656e-01, 5.697e-02, -8.570e-02, -1.520e-01, -2.622e-02, 1.043e-02, -2.377e-01, -3.927e-02, 1.539e-01, 4.528e-02), r);\n\tr = MulAdd(s1_1, M4(-1.188e-02, -9.781e-02, 1.606e-01, 5.138e-02, -4.165e-01, 8.262e-01, 1.709e-01, -1.063e-01, 8.393e-03, 7.300e-02, -9.347e-02, -6.226e-02, -3.633e-01, -4.453e-01, 2.190e-01, 2.415e-01), r);\n\tr = MulAdd(s1_2, M4(-4.011e-02, 3.404e-02, 1.013e-01, 3.551e-02, 9.692e-02, -2.109e-01, 1.897e-01, -2.192e-01, -1.703e-01, 5.317e-01, 1.354e-01, -2.027e-01, -3.658e-01, -1.845e-01, -5.465e-01, 1.436e-01), r);\n\tr = MulAdd(s1_3, M4(7.674e-01, 1.677e-01, -7.875e-02, 7.537e-03, -4.911e-01, -1.083e-01, 7.183e-03, -1.107e-01, -2.514e-02, -1.257e-01, -5.070e-02, -3.886e-02, 1.368e-01, -1.991e-02, -1.698e-01, -7.850e-03), r);\n\tr = MulAdd(s1_4, M4(-5.096e-02, 7.912e-02, -2.105e-01, 1.149e-01, 9.798e-02, 2.243e-01, -3.434e-01, 3.492e-01, -1.265e-01, -1.839e-01, -1.337e-01, -6.909e-02, -8.552e-01, 1.334e-01, 8.652e-01, -3.408e-01), r);\n\tr = MulAdd(s1_5, M4(-2.933e-02, 1.424e-01, 6.542e-02, -1.710e-01, -1.459e-01, -3.069e-02, -1.275e-01, -9.443e-02, 2.657e-01, -4.784e-04, -6.729e-03, -1.910e-01, -4.628e-01, 3.808e-02, -1.470e-01, 1.480e-01), r);\n\tr = MulAdd(s1_6, M4(1.512e-01, -1.755e-02, -5.440e-02, 1.317e-02, -7.181e-02, -6.842e-03, -7.375e-02, -8.356e-02, 7.332e-02, -9.437e-02, -1.008e-01, -4.731e-02, -9.102e-02, -8.192e-03, 7.862e-04, 6.417e-02), r);\n\tr = MulAdd(s1_7, M4(2.457e-01, -1.058e-01, -2.777e-02, -1.532e-03, 7.609e-02, 3.452e-02, 1.774e-01, 3.296e-01, 6.779e-02, -6.683e-02, 1.485e-01, 7.321e-02, -3.082e-02, -4.348e-02, 3.558e-03, 9.111e-03), r);\n\tr = MulAdd(s1_8, M4(1.104e-01, 5.040e-03, 9.642e-03, -8.991e-02, -2.134e-01, 3.758e-02, -1.244e-01, -1.987e-01, -7.007e-02, 6.792e-03, 1.369e-01, 5.332e-01, -5.354e-02, -2.024e-02, -1.038e-01, -4.812e-02), r);\n\treturn r;\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 7\n//!DESC conv6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 1.448e-03, -2.432e-03, -8.004e-04, 5.896e-05 };\n\tr = MulAdd(s0_0, M4(6.200e-02, 5.385e-02, -5.478e-02, 3.955e-02, -1.722e-02, -1.194e-01, 8.331e-02, -9.296e-02, -2.161e-02, 8.716e-02, -5.918e-02, 1.032e-01, 4.954e-02, -3.822e-02, 8.472e-02, -2.191e-01), r);\n\tr = MulAdd(s0_1, M4(2.503e-01, 5.635e-02, 7.355e-03, -2.025e-01, 7.104e-02, -1.324e-01, -3.051e-02, 2.246e-02, -4.480e-02, 6.693e-03, 4.467e-02, 3.388e-02, 4.262e-01, 1.488e-01, -8.809e-01, 5.350e-01), r);\n\tr = MulAdd(s0_2, M4(-7.511e-03, 1.921e-01, -3.653e-01, 2.096e-02, 2.413e-02, 4.846e-02, -1.538e-01, 3.359e-02, 5.958e-03, -1.033e-02, 2.389e-02, 1.283e-02, -5.270e-02, 2.842e-01, 5.681e-02, -3.578e-02), r);\n\tr = MulAdd(s0_3, M4(-2.198e-02, -1.674e-02, 3.330e-02, 3.249e-02, -4.430e-02, 9.217e-02, -3.348e-02, -3.546e-01, 1.228e-01, 3.875e-02, 7.220e-03, 6.719e-02, -8.768e-01, -1.165e-02, -3.862e-02, -2.045e-02), r);\n\tr = MulAdd(s0_4, M4(-6.935e-01, -4.898e-01, 2.252e-01, -1.647e-01, -6.408e-02, 4.562e-01, -6.617e-01, 1.220e-01, 1.053e-02, -9.937e-02, -1.118e-02, 3.272e-01, -9.081e-02, 2.353e-02, 4.776e-01, -1.238e-01), r);\n\tr = MulAdd(s0_5, M4(2.481e-01, -3.296e-01, -3.372e-02, -2.008e-02, 5.924e-03, 1.762e-02, 3.642e-01, -1.182e-01, -2.219e-02, -4.332e-02, -9.762e-02, 3.537e-02, 2.114e-02, -5.440e-02, 3.124e-01, 5.069e-02), r);\n\tr = MulAdd(s0_6, M4(-5.465e-02, -5.352e-03, -3.419e-03, -6.733e-02, -8.079e-02, -6.569e-02, -1.494e-02, -3.462e-01, -8.125e-03, 2.572e-03, -3.894e-02, -3.246e-02, -1.566e-02, -3.004e-02, 1.145e-01, 6.794e-02), r);\n\tr = MulAdd(s0_7, M4(4.788e-02, 7.675e-03, -7.030e-02, -2.384e-02, -3.070e-01, -7.080e-01, -2.017e-01, 9.579e-02, 1.259e-01, -1.004e-02, -1.287e-01, 3.334e-02, -9.642e-02, -8.073e-02, 2.546e-02, 5.204e-02), r);\n\tr = MulAdd(s0_8, M4(-6.015e-02, 1.650e-01, -5.471e-02, -1.454e-01, -2.785e-02, -1.831e-01, 1.123e-01, 3.453e-02, -1.179e-02, 1.722e-02, -1.068e-02, -2.608e-02, 1.514e-04, -1.287e-02, -7.741e-03, -9.765e-03), r);\n\tr = MulAdd(s1_0, M4(-4.922e-02, -5.675e-03, -2.161e-02, 3.164e-02, -2.003e-02, -3.890e-02, 5.198e-02, -1.811e-03, -3.385e-02, -1.510e-02, -2.289e-02, 1.009e-01, 4.427e-02, -1.763e-01, 1.255e-01, -5.073e-02), r);\n\tr = MulAdd(s1_1, M4(1.057e-01, -8.124e-02, 1.131e-01, -1.361e-01, 4.740e-02, -6.425e-02, 8.930e-03, 5.318e-02, 5.266e-02, -6.003e-02, 1.320e-01, 4.163e-02, 1.277e-01, -2.404e-01, -1.696e-01, 2.204e-01), r);\n\tr = MulAdd(s1_2, M4(2.723e-02, 1.918e-01, -2.822e-01, -1.877e-02, -4.599e-03, 7.591e-02, -1.128e-01, -6.519e-03, 2.311e-02, -1.684e-01, 2.293e-01, -1.042e-01, -1.882e-02, 4.970e-02, -1.309e-01, -8.894e-03), r);\n\tr = MulAdd(s1_3, M4(4.883e-02, 2.819e-02, 4.318e-02, 3.186e-02, 7.782e-02, 1.741e-01, -8.927e-02, 4.005e-02, 5.888e-02, -1.057e-01, 9.692e-02, 8.032e-02, -1.086e-01, 6.323e-02, -8.520e-02, -1.273e-02), r);\n\tr = MulAdd(s1_4, M4(-1.746e-01, -2.834e-02, -3.694e-02, 3.226e-01, -2.541e-01, 6.860e-01, -1.436e-01, 1.705e-01, 2.614e-01, -6.751e-02, 5.646e-02, 3.666e-01, -2.621e-02, 4.951e-01, -1.090e-01, -3.168e-01), r);\n\tr = MulAdd(s1_5, M4(1.513e-01, 5.210e-02, 2.625e-01, -6.303e-02, -2.252e-02, -9.485e-02, 4.776e-01, -1.789e-01, -1.291e-01, -9.714e-02, -1.427e-01, -1.165e-01, 2.415e-02, 9.790e-02, 6.024e-02, -9.622e-02), r);\n\tr = MulAdd(s1_6, M4(3.751e-02, -2.907e-02, -1.762e-02, -9.545e-02, 2.866e-01, -7.329e-02, -9.787e-03, 4.513e-03, -9.486e-02, -2.446e-02, -2.357e-02, -5.002e-02, 4.973e-02, 6.256e-02, -2.532e-02, -1.817e-02), r);\n\tr = MulAdd(s1_7, M4(-6.855e-02, -6.762e-02, -6.269e-02, -6.947e-02, -1.389e-01, -1.915e-01, -4.806e-02, 1.870e-01, 1.298e-01, 6.268e-03, -5.985e-02, -5.396e-02, -3.048e-02, -5.396e-03, -9.720e-02, 3.289e-03), r);\n\tr = MulAdd(s1_8, M4(-2.052e-02, -8.106e-02, -1.721e-02, 9.911e-03, -8.521e-02, 4.832e-02, -1.708e-01, -6.445e-02, -9.788e-02, 8.836e-02, -1.204e-01, -1.123e-01, 1.514e-02, 1.628e-02, -5.003e-02, -6.128e-03), r);\n\treturn r;\n}\n\nvoid Pass7(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 8\n//!DESC conv7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0\n//!OUT t1\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { 2.671e-03, -5.536e-03, -4.013e-03, 4.378e-03 };\n\tr = MulAdd(s0_0, M4(5.901e-02, -1.033e-01, -1.441e-01, 4.291e-02, 2.355e-02, -1.199e-01, -1.741e-01, -5.263e-03, -6.030e-03, -4.043e-02, 1.910e-01, 8.326e-03, 2.913e-02, 1.969e-02, -1.380e-01, 9.492e-02), r);\n\tr = MulAdd(s0_1, M4(-1.616e-01, 1.649e-01, -1.133e-02, -1.037e-01, -1.060e-02, 2.299e-01, -5.302e-02, -2.329e-01, -8.540e-02, 2.232e-01, 2.647e-01, 3.922e-01, 5.387e-02, 5.841e-01, -1.264e-01, -1.440e-01), r);\n\tr = MulAdd(s0_2, M4(-1.944e-02, -7.262e-02, 9.583e-02, 3.448e-02, 4.402e-02, 5.319e-02, -2.384e-02, 4.652e-02, 6.280e-02, -4.195e-02, 1.573e-02, 7.059e-02, 1.029e-01, -1.784e-02, -3.735e-02, -4.952e-02), r);\n\tr = MulAdd(s0_3, M4(7.393e-02, -1.825e-01, -2.983e-01, -5.798e-02, -2.475e-01, -4.958e-02, 6.660e-01, -2.202e-01, -9.158e-02, 4.280e-04, 2.472e-01, -2.979e-01, -9.887e-02, 6.188e-02, 2.163e-01, -9.358e-03), r);\n\tr = MulAdd(s0_4, M4(-8.664e-01, 2.357e-01, 3.390e-01, -5.275e-01, -2.213e-01, -4.992e-01, 5.479e-01, 4.245e-01, -7.542e-02, 4.854e-01, -3.525e-01, 3.950e-01, 3.619e-01, -3.968e-01, -3.447e-01, 5.089e-01), r);\n\tr = MulAdd(s0_5, M4(-9.239e-02, -6.370e-01, -7.252e-02, -3.435e-01, -1.057e-01, 1.616e-01, -4.413e-02, 1.824e-01, 2.001e-02, -1.343e-01, -5.730e-02, 7.302e-02, -2.361e-02, -9.044e-02, -1.041e-01, 2.971e-01), r);\n\tr = MulAdd(s0_6, M4(-2.803e-02, -8.707e-02, -1.407e-01, -2.685e-02, 1.099e-01, 1.721e-01, 1.612e-01, 6.962e-02, -1.659e-02, 7.845e-02, 2.165e-01, -7.067e-02, 1.666e-02, 7.051e-02, 6.373e-02, 4.391e-02), r);\n\tr = MulAdd(s0_7, M4(-1.560e-01, -2.698e-02, -5.684e-01, -1.184e-01, 7.742e-01, -1.023e-03, -8.177e-02, 2.857e-01, 2.253e-02, -1.400e-02, -6.523e-02, 7.644e-02, 1.789e-01, -8.433e-03, 1.041e-01, 7.009e-02), r);\n\tr = MulAdd(s0_8, M4(-1.491e-01, -2.037e-01, -2.499e-01, -7.730e-02, 1.051e-01, -1.718e-02, -1.762e-01, 4.808e-02, -3.068e-03, 1.737e-02, -3.772e-04, 4.732e-02, 7.205e-02, 7.901e-02, -1.759e-02, 8.476e-02), r);\n\tr = MulAdd(s1_0, M4(4.810e-02, -1.822e-02, -1.150e-01, -1.679e-02, -5.481e-02, -7.544e-02, 2.213e-01, 2.615e-02, -2.628e-03, -1.482e-01, -5.570e-02, 5.137e-02, -1.381e-02, -1.878e-03, -3.132e-02, -3.309e-02), r);\n\tr = MulAdd(s1_1, M4(1.101e-01, 1.003e-01, -4.307e-01, -2.520e-02, 1.138e-02, -1.966e-01, 6.664e-02, 1.114e-01, -1.431e-01, 3.634e-01, 4.274e-02, -8.279e-02, -5.291e-02, 3.540e-01, 8.995e-02, -1.401e-01), r);\n\tr = MulAdd(s1_2, M4(7.230e-02, 4.684e-01, -6.542e-02, -2.792e-01, 2.936e-02, 3.476e-03, -1.024e-02, 1.880e-01, 1.898e-02, 2.529e-02, 8.537e-03, -6.073e-03, 1.025e-01, -2.320e-01, -1.804e-02, 5.471e-02), r);\n\tr = MulAdd(s1_3, M4(-9.258e-03, -7.731e-03, 4.285e-02, -4.725e-02, -3.878e-02, -1.749e-02, -1.681e-02, -1.020e-01, -3.975e-02, 1.609e-02, 8.299e-02, -1.824e-01, -2.500e-02, 3.516e-02, 8.591e-02, 1.714e-02), r);\n\tr = MulAdd(s1_4, M4(-2.210e-01, 1.534e-01, 3.410e-01, -2.552e-01, -5.090e-02, 1.582e-02, 1.802e-01, -1.333e-01, -5.371e-01, 3.751e-01, -1.323e-01, 3.018e-01, 1.756e-01, -9.756e-02, -4.873e-01, 4.985e-01), r);\n\tr = MulAdd(s1_5, M4(-1.073e-02, 2.919e-01, -2.025e-01, 3.240e-01, 4.318e-02, -1.972e-02, -1.612e-01, 3.528e-01, -6.472e-02, -6.212e-02, 3.146e-02, 6.391e-02, 4.950e-02, -6.270e-01, -1.985e-02, 4.680e-02), r);\n\tr = MulAdd(s1_6, M4(-2.215e-02, 1.836e-02, 5.021e-02, -3.016e-02, -7.854e-03, 1.135e-02, 3.407e-02, -2.923e-02, -5.384e-03, 6.570e-02, 2.437e-01, -8.712e-02, 2.275e-02, -2.291e-03, -7.378e-02, 5.231e-02), r);\n\tr = MulAdd(s1_7, M4(-4.186e-02, 6.944e-02, 8.353e-02, -1.927e-02, 3.937e-02, 2.105e-02, 7.152e-02, 5.635e-03, 1.114e-01, -3.772e-02, -1.853e-01, 6.636e-02, 4.654e-02, -1.008e-01, -1.625e-01, 7.888e-02), r);\n\tr = MulAdd(s1_8, M4(5.288e-02, -5.516e-02, -4.014e-02, 8.854e-02, 2.434e-02, 9.192e-02, -1.203e-02, 6.813e-02, 4.626e-02, -4.892e-02, 4.700e-03, 7.578e-02, -5.040e-02, 3.497e-02, 3.176e-02, -9.741e-02), r);\n\treturn r;\n}\n\nvoid Pass8(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt1[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 9\n//!DESC conv8\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t1\n//!OUT t0\n\n#define l0(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -5.006e-05, -2.252e-04, -1.752e-03, 4.586e-04 };\n\tr = MulAdd(s0_0, M4(8.283e-02, 5.262e-02, 1.580e-02, 4.991e-02, 6.836e-02, -3.234e-02, 5.630e-02, 1.275e-01, 5.398e-03, 9.866e-04, -1.054e-02, 1.601e-02, 1.546e-02, -7.786e-02, -2.630e-02, -3.023e-02), r);\n\tr = MulAdd(s0_1, M4(9.285e-02, 3.403e-01, -4.572e-02, 1.431e-01, 2.876e-01, -3.271e-01, -8.133e-04, 5.998e-01, 4.515e-02, 9.836e-02, 2.315e-02, 1.724e-01, -8.080e-02, -1.978e-01, -5.366e-02, -4.535e-02), r);\n\tr = MulAdd(s0_2, M4(1.708e-02, -8.374e-02, -1.831e-02, 1.744e-02, 4.902e-02, -1.037e-02, -3.508e-02, 3.501e-02, 1.160e-01, 2.529e-01, 4.235e-02, 4.233e-02, -5.953e-03, -1.398e-01, -8.815e-03, 1.053e-02), r);\n\tr = MulAdd(s0_3, M4(-2.836e-03, -2.496e-01, 2.703e-02, 9.490e-02, 3.985e-01, -9.458e-02, 1.355e-01, 5.917e-01, 5.597e-03, -8.963e-02, 5.238e-02, 4.360e-02, -1.070e-01, 7.593e-02, 6.376e-02, -1.498e-01), r);\n\tr = MulAdd(s0_4, M4(3.214e-01, -8.045e-01, 6.621e-01, -1.261e-01, -1.487e+00, 1.086e+00, 3.779e-01, -1.762e+00, 2.721e-01, -3.815e-02, -1.450e-01, 4.063e-01, 2.804e-01, 3.876e-01, 2.607e-01, 2.174e-01), r);\n\tr = MulAdd(s0_5, M4(-3.896e-01, 3.340e-01, -2.529e-01, -6.519e-02, -1.815e-01, 5.542e-02, -1.669e-01, 1.732e-02, 2.995e-01, 4.942e-02, 6.557e-02, -1.386e-01, -1.392e-01, 2.822e-01, 2.016e-02, -1.313e-01), r);\n\tr = MulAdd(s0_6, M4(-2.130e-02, 4.137e-02, 7.324e-02, 4.834e-03, 9.333e-02, -2.998e-01, 4.229e-01, 9.535e-02, -2.595e-02, 2.955e-02, 7.491e-02, -3.028e-02, -2.850e-02, 1.582e-02, -1.076e-01, -3.159e-02), r);\n\tr = MulAdd(s0_7, M4(-3.601e-02, 5.993e-02, -1.190e-02, -6.800e-02, 6.894e-03, -2.095e-01, -9.548e-02, -2.539e-02, -2.390e-02, 2.947e-02, 1.581e-01, -5.305e-03, 1.029e-01, -1.456e-01, -3.526e-02, 9.251e-02), r);\n\tr = MulAdd(s0_8, M4(-7.206e-02, 9.690e-02, -4.464e-02, -6.999e-03, 3.140e-02, -4.201e-02, -6.364e-03, 5.280e-03, -1.412e-01, 1.696e-01, -1.274e-01, -9.546e-02, 5.285e-02, -1.072e-01, 5.994e-02, 1.293e-02), r);\n\tr = MulAdd(s1_0, M4(-1.808e-02, 1.243e-01, -6.814e-02, -4.219e-03, 1.273e-02, 2.752e-02, 3.764e-02, 3.650e-02, 7.663e-04, 6.843e-03, 1.380e-02, -3.235e-02, 5.400e-02, -5.352e-02, 1.190e-02, -1.028e-01), r);\n\tr = MulAdd(s1_1, M4(2.568e-01, 2.764e-01, 7.740e-02, 1.273e-01, 7.059e-02, 6.668e-02, 4.211e-02, 6.293e-02, -4.164e-02, 2.210e-01, -1.293e-02, 8.369e-02, 2.046e-01, 1.238e-01, 9.491e-02, 4.614e-02), r);\n\tr = MulAdd(s1_2, M4(-2.387e-02, 3.174e-01, 8.165e-02, -6.680e-02, -1.516e-02, 1.482e-02, -1.342e-02, 1.692e-02, -2.288e-02, -6.891e-02, -5.559e-02, 4.771e-02, 3.290e-02, 1.234e-01, 4.334e-02, -5.106e-02), r);\n\tr = MulAdd(s1_3, M4(6.216e-02, -2.114e-01, -1.616e-01, 1.664e-01, 3.796e-02, 6.036e-02, -1.106e-01, 1.398e-01, -3.139e-02, -6.274e-02, 4.988e-02, -6.274e-02, 2.296e-02, -5.131e-02, 5.052e-02, -8.866e-02), r);\n\tr = MulAdd(s1_4, M4(2.647e-01, -7.858e-01, 1.597e-01, -8.262e-01, -3.213e-01, 2.427e-01, 1.686e-01, -4.251e-01, 1.505e-01, 3.244e-02, 1.023e-01, 1.962e-01, -1.116e-01, 3.525e-01, 8.848e-01, -1.945e-01), r);\n\tr = MulAdd(s1_5, M4(-2.549e-01, -1.429e-01, -3.696e-02, 3.042e-01, -1.256e-01, 2.760e-02, -3.650e-02, 7.985e-02, -1.958e-01, 3.076e-01, -9.253e-02, -8.512e-02, -1.708e-01, -3.422e-04, -8.181e-02, 2.319e-01), r);\n\tr = MulAdd(s1_6, M4(-3.382e-02, 6.627e-02, 1.158e-01, -3.044e-02, -7.983e-03, -7.855e-02, 1.729e-02, 3.219e-04, -1.764e-02, 4.065e-02, -1.400e-02, -2.387e-02, 2.673e-03, 5.460e-03, -4.992e-02, -1.573e-02), r);\n\tr = MulAdd(s1_7, M4(-2.505e-02, 1.763e-01, -4.433e-01, -1.024e-01, 1.391e-01, -2.435e-01, -5.358e-02, 5.203e-02, 3.157e-02, 2.012e-02, 7.424e-03, 3.723e-02, -2.388e-02, 7.204e-02, -4.522e-01, -1.187e-02), r);\n\tr = MulAdd(s1_8, M4(9.737e-02, 7.067e-02, 4.072e-02, 4.303e-02, 2.890e-02, -1.810e-02, 5.156e-03, -1.953e-02, -3.503e-02, 7.492e-02, 1.402e-02, -9.796e-03, 2.320e-01, -2.135e-01, 1.462e-01, 1.194e-01), r);\n\treturn r;\n}\n\nvoid Pass9(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n}\n\n//!PASS 10\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8) {\n\tV4 r = { -1.731e-03, -2.098e-03, -1.131e-03, -1.644e-03 };\n\tr = MulAdd(s0_0, M4(2.670e-02, -1.964e-03, 2.191e-02, 3.109e-02, 1.911e-02, -2.017e-02, -2.948e-02, -2.237e-02, -3.845e-02, -7.954e-03, -3.472e-02, -2.253e-02, -1.571e-02, -6.613e-03, -1.489e-02, -2.647e-02), r);\n\tr = MulAdd(s0_1, M4(-6.714e-02, -2.106e-02, 7.577e-03, 1.788e-02, 8.081e-02, 8.813e-02, -5.510e-02, -2.724e-02, 1.150e-01, 5.284e-02, -8.964e-02, -3.024e-02, 5.215e-02, 5.334e-02, -1.180e-02, 6.927e-03), r);\n\tr = MulAdd(s0_2, M4(1.036e-02, 1.826e-02, -8.095e-03, -9.967e-03, 1.368e-03, 3.479e-02, -1.887e-03, -2.161e-02, -3.464e-02, -1.124e-01, -4.623e-03, -5.295e-03, -7.199e-03, -4.285e-02, 8.862e-03, -1.610e-02), r);\n\tr = MulAdd(s0_3, M4(2.388e-01, -1.001e-03, 1.699e-01, -4.519e-02, -3.274e-01, 1.550e-01, 3.748e-02, 3.435e-02, -1.655e-01, 1.227e-02, -1.372e-01, 4.700e-02, -1.636e-01, 1.222e-02, -1.323e-01, 3.239e-02), r);\n\tr = MulAdd(s0_4, M4(1.698e-01, 4.561e-01, -1.355e-01, 1.831e-01, -3.815e-01, -7.832e-01, 1.738e-01, 4.516e-02, 2.803e-01, -4.239e-01, 8.945e-01, -1.339e-02, -3.701e-01, -3.731e-01, 1.765e-01, -1.343e-01), r);\n\tr = MulAdd(s0_5, M4(-4.653e-02, -8.470e-02, -1.076e-03, -7.153e-02, 1.022e-02, -2.560e-02, -1.154e-02, 2.252e-02, -1.053e-01, 4.014e-01, -1.479e-01, 3.667e-01, 9.425e-02, -8.079e-02, 5.594e-03, 4.870e-02), r);\n\tr = MulAdd(s0_6, M4(-6.274e-02, -3.430e-02, -5.955e-02, 1.220e-02, -6.075e-02, 1.284e-02, -8.384e-02, 2.143e-01, -2.050e-02, -8.887e-03, -1.445e-02, 1.797e-02, 1.436e-01, -8.067e-04, 1.013e-01, 3.847e-03), r);\n\tr = MulAdd(s0_7, M4(6.862e-02, -7.230e-02, -2.461e-01, -3.760e-01, 4.038e-02, -2.634e-02, -2.725e-01, -4.389e-01, 9.088e-03, -1.873e-02, -9.497e-02, -1.860e-01, -1.038e-01, 2.502e-01, -6.194e-01, 4.470e-02), r);\n\tr = MulAdd(s0_8, M4(-1.984e-02, 4.173e-02, 5.328e-02, 5.554e-02, 1.241e-03, -2.290e-03, 5.972e-02, 4.381e-02, -3.320e-03, -1.434e-04, -5.754e-02, -6.072e-02, -6.854e-03, 6.781e-02, 1.208e-01, -5.469e-02), r);\n\tr = MulAdd(s1_0, M4(7.050e-02, -3.676e-02, 7.009e-03, 1.431e-02, -1.258e-02, -6.854e-03, -9.803e-04, 5.955e-03, -3.077e-03, -2.372e-02, 8.060e-03, -5.992e-02, -7.957e-02, 2.905e-02, 3.914e-04, -1.408e-02), r);\n\tr = MulAdd(s1_1, M4(-1.068e-01, 4.589e-02, -1.399e-02, -8.157e-03, 1.811e-02, 7.241e-03, 9.447e-03, 3.242e-03, 5.152e-02, 8.667e-02, -2.512e-02, -2.978e-02, 1.382e-01, 5.481e-02, -2.199e-02, -2.739e-02), r);\n\tr = MulAdd(s1_2, M4(3.676e-02, 1.705e-02, -4.520e-03, -6.449e-03, 1.006e-02, 9.807e-03, -6.046e-03, -1.299e-03, -5.035e-02, -4.415e-02, 9.619e-03, -1.059e-02, -6.952e-03, -1.803e-02, -4.042e-03, -1.751e-02), r);\n\tr = MulAdd(s1_3, M4(5.123e-02, 4.500e-02, 2.099e-01, -7.254e-03, -7.977e-02, 2.822e-02, -1.546e-01, -3.748e-02, -2.378e-01, -1.836e-02, -3.508e-02, -2.147e-03, 3.371e-02, -4.720e-02, -5.574e-02, -1.592e-02), r);\n\tr = MulAdd(s1_4, M4(-5.764e-01, 5.998e-01, -2.288e-01, 7.223e-01, -1.855e-01, -3.467e-01, 5.173e-02, -8.967e-02, 3.308e-01, -8.987e-02, 2.397e-01, 3.701e-01, -7.970e-02, -9.046e-01, 2.397e-01, -1.626e-01), r);\n\tr = MulAdd(s1_5, M4(1.177e-02, -1.538e-01, 4.138e-02, -5.198e-02, 3.165e-03, 3.827e-02, -5.913e-03, 8.727e-03, 7.885e-02, 2.979e-01, -6.160e-02, 1.198e-01, 1.186e-02, 9.421e-02, -4.101e-02, 4.185e-03), r);\n\tr = MulAdd(s1_6, M4(-7.690e-02, -4.820e-03, -1.106e-01, 4.040e-02, -6.883e-02, -3.284e-02, 1.259e-02, 1.509e-01, 6.378e-03, -5.293e-04, -3.690e-02, 6.274e-02, 1.401e-01, -3.801e-03, 1.489e-01, -1.044e-02), r);\n\tr = MulAdd(s1_7, M4(1.140e-01, -1.333e-01, -1.739e-01, -1.739e-01, 4.736e-02, -1.306e-02, -3.673e-01, -6.127e-01, -3.477e-02, -6.090e-02, 2.430e-02, -2.666e-01, -6.599e-02, 2.794e-01, -1.724e-01, -2.744e-01), r);\n\tr = MulAdd(s1_8, M4(1.045e-02, 6.106e-02, 3.463e-02, 6.708e-02, -1.028e-02, -2.277e-02, 6.536e-02, 8.227e-02, -5.566e-02, -3.941e-02, -6.862e-03, -1.219e-02, -1.438e-02, -4.651e-02, 5.359e-02, 4.650e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass10(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-8x8C-NVL-DN.hlsl",
    "content": "// CuNNy 8x8C BILINEAR RGB NVL DN - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-DN-D08N08\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t3;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0, t1\n\n#define l0(x, y) (dot(MF3(1.925e-01, 3.819e-01, 8.369e-02), O(INPUT, float2(x, y)).rgb) + MF(-5.387e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 4.846e-02, 9.244e-03, -3.897e-02, 9.766e-03 };\n\tr = mad(s0_0, V4(2.639e-02, -1.701e-01, -3.774e-03, -1.132e-01), r);\n\tr = mad(s0_1, V4(7.110e-02, 1.313e-01, -1.082e-02, 2.661e-02), r);\n\tr = mad(s0_2, V4(-7.133e-02, 3.915e-02, 1.220e-02, -3.065e-02), r);\n\tr = mad(s0_3, V4(-1.310e-01, -4.277e-01, 5.738e-01, -1.361e-01), r);\n\tr = mad(s0_4, V4(8.785e-02, -3.337e-02, -2.604e-02, 5.665e-01), r);\n\tr = mad(s0_5, V4(-1.597e-01, 4.606e-01, -4.603e-03, -5.048e-02), r);\n\tr = mad(s0_6, V4(5.069e-02, 2.608e-02, -2.872e-02, -1.027e-01), r);\n\tr = mad(s0_7, V4(1.334e-01, -3.456e-02, -1.744e-03, 7.886e-02), r);\n\tr = mad(s0_8, V4(2.759e-02, 1.279e-02, -7.839e-03, -2.046e-01), r);\n\treturn r;\n}\n\nV4 f1(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 1.322e-02, 1.053e-02, 6.702e-02, 8.937e-03 };\n\tr = mad(s0_0, V4(-2.867e-01, 2.141e-01, 4.437e-02, -5.342e-02), r);\n\tr = mad(s0_1, V4(-4.092e-01, -1.685e-01, -3.220e-02, -2.083e-01), r);\n\tr = mad(s0_2, V4(-4.212e-02, -3.446e-02, 3.496e-02, -6.681e-02), r);\n\tr = mad(s0_3, V4(6.756e-02, 4.954e-01, -9.457e-02, 1.597e-01), r);\n\tr = mad(s0_4, V4(7.022e-01, -4.053e-02, 3.086e-02, -3.529e-01), r);\n\tr = mad(s0_5, V4(-1.718e-02, -4.736e-01, -1.362e-02, 2.655e-02), r);\n\tr = mad(s0_6, V4(6.323e-02, 1.250e-02, -2.611e-01, 2.058e-02), r);\n\tr = mad(s0_7, V4(-1.266e-01, -5.605e-03, -3.361e-01, 1.510e-01), r);\n\tr = mad(s0_8, V4(4.938e-02, -7.117e-04, 2.257e-02, -7.702e-03), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -4.129e-03, -4.378e-02, 1.747e-02, 3.267e-02 };\n\tr = MulAdd(s0_0, M4(-6.787e-02, 1.507e-01, 1.386e-01, 1.354e-01, -1.647e-02, 2.280e-01, -6.392e-02, -1.182e-01, -3.002e-01, 5.059e-02, -4.223e-02, 1.296e-01, 3.034e-01, 9.575e-02, 2.396e-01, 2.604e-01), r);\n\tr = MulAdd(s0_1, M4(1.771e-01, 1.258e-01, 9.676e-02, -5.836e-02, 2.180e-01, 9.400e-02, -1.364e-01, 1.365e-01, -1.889e-01, 6.458e-02, 2.028e-01, 1.279e-01, -2.230e-01, 4.919e-02, 3.303e-01, 2.852e-02), r);\n\tr = MulAdd(s0_2, M4(-2.253e-02, -3.429e-02, 1.720e-01, 3.019e-02, 1.779e-01, -1.289e-01, -1.485e-02, 2.294e-01, 6.777e-02, 2.094e-01, -8.003e-02, -2.814e-01, 5.090e-02, -1.822e-02, 4.285e-02, 9.212e-03), r);\n\tr = MulAdd(s0_3, M4(4.345e-01, -1.625e-02, 2.947e-02, 5.848e-02, -6.072e-01, -1.842e-01, -2.682e-01, -8.853e-02, -4.014e-01, 1.387e-01, -1.617e-01, 2.580e-02, 5.142e-01, 7.146e-02, -7.968e-02, -5.864e-02), r);\n\tr = MulAdd(s0_4, M4(-3.146e-01, -1.256e-02, -1.312e-01, 1.912e-02, -3.825e-01, -7.159e-02, -8.802e-02, -2.785e-01, 1.166e+00, 3.918e-01, 1.766e-01, -9.949e-01, -3.057e-01, 3.247e-01, -5.187e-02, -3.849e-01), r);\n\tr = MulAdd(s0_5, M4(-1.266e-01, -3.163e-02, 5.540e-02, -1.063e-04, -3.565e-01, 2.094e-02, -7.364e-02, 4.674e-02, -3.207e-01, -4.732e-02, -3.064e-02, -7.816e-01, -2.368e-01, -1.159e-01, 4.110e-02, 1.199e-01), r);\n\tr = MulAdd(s0_6, M4(-5.285e-02, 1.116e-01, -1.387e-01, 9.422e-02, -1.251e-02, -1.096e-02, 3.989e-01, 1.370e-02, 2.573e-03, -6.050e-02, 9.572e-02, -2.029e-01, 4.006e-02, 4.752e-02, -2.514e-01, -7.318e-02), r);\n\tr = MulAdd(s0_7, M4(1.563e-01, -6.792e-02, 7.001e-02, 1.968e-02, 3.360e-01, -1.072e-01, 1.499e-01, -4.911e-02, -4.225e-01, -7.392e-02, -9.010e-01, -1.592e-01, -7.005e-03, -3.628e-01, -2.941e-01, 6.075e-02), r);\n\tr = MulAdd(s0_8, M4(-6.457e-02, -1.010e-01, -1.549e-01, -8.569e-02, 2.008e-01, -3.078e-02, -1.027e-01, 1.431e-01, -1.821e-01, 4.419e-02, -1.641e-01, -1.295e-01, 2.477e-03, -1.839e-01, 7.758e-02, -4.918e-02), r);\n\tr = MulAdd(s1_0, M4(8.745e-02, 4.435e-02, -1.817e-01, -6.904e-01, -5.046e-01, -6.161e-02, -2.511e-01, 1.648e-01, 5.188e-02, 7.367e-02, 2.228e-01, -8.911e-02, 3.976e-01, 1.385e-01, 3.897e-01, 2.256e-01), r);\n\tr = MulAdd(s1_1, M4(-2.179e-02, 2.662e-01, -1.836e-01, 6.580e-01, -2.441e-02, 1.059e-01, 2.016e-01, -5.101e-02, 2.634e-02, 7.840e-02, 2.103e-02, 1.695e-01, -1.253e-01, -5.145e-02, 1.500e-01, 1.995e-01), r);\n\tr = MulAdd(s1_2, M4(3.784e-02, -6.314e-02, 7.330e-02, -3.828e-01, -3.898e-03, 1.618e-01, 8.129e-02, 1.630e-01, 2.141e-02, 1.426e-01, -1.058e-02, 6.683e-02, -1.627e-02, 2.531e-03, 7.962e-02, 1.641e-01), r);\n\tr = MulAdd(s1_3, M4(2.354e-01, -1.180e-02, 4.459e-02, -2.539e-01, -1.247e-02, 2.407e-01, 2.427e-01, -7.432e-02, -1.158e-01, 1.015e-02, -7.599e-02, -5.581e-02, 3.942e-01, -2.540e-02, -3.743e-01, 2.689e-01), r);\n\tr = MulAdd(s1_4, M4(1.472e-01, -5.494e-01, 2.751e-02, -6.865e-01, 4.673e-01, 2.978e-01, -3.744e-01, 4.839e-02, 3.663e-01, 6.252e-03, 4.537e-02, -3.700e-02, -4.528e-01, 4.329e-01, 2.170e-01, -5.655e-02), r);\n\tr = MulAdd(s1_5, M4(-3.136e-01, 3.527e-02, -9.977e-02, 1.680e-01, 1.746e-01, 2.170e-01, -1.577e-01, -3.133e-02, -2.571e-01, 4.381e-02, 5.043e-02, 4.327e-01, -2.274e-01, -2.338e-01, 1.237e-01, 9.396e-02), r);\n\tr = MulAdd(s1_6, M4(-2.045e-01, -3.270e-01, 3.275e-01, 1.302e-01, 1.187e-01, -2.118e-02, 3.357e-01, 3.389e-02, 1.123e-01, 5.050e-03, -6.020e-03, 1.285e-02, 1.499e-01, 2.891e-01, -6.994e-01, 6.691e-02), r);\n\tr = MulAdd(s1_7, M4(7.207e-02, 1.789e-01, 4.475e-01, 7.563e-02, 1.562e-01, 9.745e-02, 2.281e-01, 1.472e-01, -1.739e-01, 2.556e-02, -3.121e-01, 4.985e-02, -4.985e-02, -5.638e-01, -4.190e-01, 1.795e-01), r);\n\tr = MulAdd(s1_8, M4(-3.225e-02, -5.762e-02, -2.681e-02, -3.269e-01, -1.883e-01, -1.365e-01, 8.040e-02, -2.820e-02, -4.708e-02, -1.241e-01, 2.407e-02, 5.468e-02, 8.962e-03, -5.522e-02, -5.487e-02, 5.633e-02), r);\n\tr = MulAdd(s2_0, M4(-7.475e-02, 2.239e-02, 1.336e-02, -1.309e-02, -2.294e-01, 1.259e-02, -6.364e-02, 1.705e-01, -1.467e-01, 6.734e-02, -1.129e-01, 2.675e-01, -8.728e-02, -2.415e-01, -5.943e-02, 8.068e-02), r);\n\tr = MulAdd(s2_1, M4(1.161e-01, 1.003e-01, -9.628e-03, -5.014e-02, -1.559e-01, -6.243e-02, 3.428e-01, -1.662e-01, 8.781e-02, -5.090e-02, -1.466e-01, 6.924e-02, -7.831e-02, -7.191e-02, -3.093e-01, -1.182e-01), r);\n\tr = MulAdd(s2_2, M4(-1.187e-02, -1.124e-01, 1.241e-01, 3.818e-02, -3.489e-02, 1.072e-01, -3.086e-02, 8.455e-02, -3.857e-02, 1.693e-01, -1.791e-01, 1.621e-01, 5.023e-02, 6.312e-02, -1.419e-01, 3.264e-02), r);\n\tr = MulAdd(s2_3, M4(6.541e-01, 1.355e-02, 6.582e-01, 4.098e-02, 5.969e-01, 1.744e-01, 1.758e-01, 1.798e-01, -2.511e-02, 6.407e-02, -4.659e-02, 1.100e-01, -3.252e-01, -2.088e-02, -3.156e-02, 2.349e-01), r);\n\tr = MulAdd(s2_4, M4(-5.107e-01, 6.148e-01, -2.237e-01, -2.672e-01, 3.043e-01, 4.147e-01, -1.371e-02, -9.339e-02, -7.676e-02, -1.914e-02, 4.465e-02, -1.130e-01, 3.640e-01, -4.571e-01, 1.863e-02, 1.653e-01), r);\n\tr = MulAdd(s2_5, M4(-1.206e-02, -6.812e-02, 1.585e-01, 1.884e-01, 2.366e-01, 3.310e-01, -1.584e-01, 4.540e-02, 6.728e-04, 3.926e-02, -1.147e-01, 1.093e-01, 2.546e-01, 1.105e-01, 1.950e-02, 1.075e-01), r);\n\tr = MulAdd(s2_6, M4(1.302e-01, -1.658e-01, -4.834e-01, -2.295e-02, -1.106e-01, 2.600e-02, -2.262e-01, 8.762e-02, -5.511e-02, -1.613e-03, 1.347e-02, -2.278e-04, -9.678e-02, 7.248e-02, 1.184e-01, -1.321e-01), r);\n\tr = MulAdd(s2_7, M4(-6.153e-02, -5.202e-01, -9.300e-01, 1.067e-01, 1.116e-01, -2.270e-01, 2.099e-02, 4.166e-02, 2.248e-02, 7.370e-02, 4.101e-01, 9.718e-02, 2.057e-01, -1.217e-01, 9.265e-02, -1.137e-01), r);\n\tr = MulAdd(s2_8, M4(-1.353e-01, -2.862e-01, -6.823e-02, -2.380e-02, -6.254e-02, -8.065e-02, 1.598e-01, -1.998e-02, 5.988e-02, 1.871e-01, 8.992e-02, -7.480e-02, 2.728e-02, 1.082e-01, 3.140e-01, 1.540e-01), r);\n\tr = MulAdd(s3_0, M4(-1.587e-01, 7.444e-02, -1.777e-02, 2.381e-02, 1.406e-01, 3.196e-01, -1.374e-03, 9.152e-02, -5.543e-01, -8.394e-03, 1.747e-01, 4.359e-01, -7.423e-02, -3.368e-01, -9.362e-02, 7.286e-02), r);\n\tr = MulAdd(s3_1, M4(1.121e-01, 1.016e-01, 3.174e-02, -5.360e-02, -1.795e-02, 1.725e-02, -1.327e-02, 1.641e-01, -7.362e-01, -1.406e-01, -7.589e-01, 8.071e-01, -2.497e-01, -1.097e-01, -2.655e-01, -1.087e-01), r);\n\tr = MulAdd(s3_2, M4(7.331e-03, -2.768e-02, 1.184e-01, 1.065e-01, 1.451e-01, -4.143e-02, -1.411e-01, 1.550e-01, 6.200e-01, 1.024e+00, -7.276e-02, 8.515e-01, 1.175e-01, 1.839e-01, -2.676e-01, -1.548e-02), r);\n\tr = MulAdd(s3_3, M4(6.424e-01, 2.821e-02, 5.957e-01, 1.530e-01, 1.276e-01, -2.298e-01, -1.210e-01, 1.548e-01, 7.219e-01, 1.262e-01, 9.240e-01, 3.466e-01, -2.720e-01, -5.621e-02, -4.165e-02, 1.123e-01), r);\n\tr = MulAdd(s3_4, M4(-4.418e-01, 5.566e-01, 6.313e-03, -4.863e-01, -4.189e-01, -1.606e-01, 2.613e-01, -4.014e-01, -4.206e-01, -4.682e-01, -3.779e-01, 5.871e-01, 2.516e-01, -5.022e-01, 2.759e-01, 1.313e-01), r);\n\tr = MulAdd(s3_5, M4(-3.682e-02, -2.897e-01, 2.019e-01, 3.667e-03, -1.666e-01, 2.953e-02, -1.446e-01, -6.928e-02, -1.346e-01, -6.624e-02, -1.522e-02, 8.483e-01, 3.168e-01, 1.247e-01, -6.584e-02, -8.030e-02), r);\n\tr = MulAdd(s3_6, M4(1.670e-01, -4.091e-02, 1.881e-01, 1.276e-01, -1.441e-01, 1.636e-01, -1.322e-01, 8.716e-02, 9.290e-02, 3.344e-01, 2.737e-01, -4.509e-01, -1.560e-01, 8.292e-02, -5.494e-02, 2.625e-02), r);\n\tr = MulAdd(s3_7, M4(6.209e-02, -8.711e-01, -2.422e-02, -1.158e-02, 1.969e-01, -4.698e-01, -1.016e-01, -1.333e-01, 5.883e-01, -9.214e-02, 1.058e+00, 2.119e-01, 3.611e-01, 2.443e-01, 1.390e-01, 3.819e-01), r);\n\tr = MulAdd(s3_8, M4(-1.502e-01, -5.064e-01, 8.467e-02, -2.262e-02, 2.649e-01, 1.169e-01, -5.726e-02, 1.341e-01, 2.349e-01, 7.791e-01, 6.799e-02, 7.027e-02, -5.221e-02, 1.357e-01, 1.382e-01, -3.748e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -2.496e-02, -1.212e-01, -1.419e-02, 2.482e-02 };\n\tr = MulAdd(s0_0, M4(7.766e-02, 4.523e-03, -1.029e-01, 3.952e-02, 1.207e-01, -3.205e-02, -1.516e-01, -4.993e-02, -2.106e-01, 5.000e-01, 2.802e-01, -1.797e-01, 1.157e-02, 4.642e-01, -1.830e-01, 9.749e-03), r);\n\tr = MulAdd(s0_1, M4(5.684e-02, -1.916e-01, 1.998e-02, 8.908e-02, -1.295e-01, 1.184e-01, 3.992e-02, -3.736e-01, 5.210e-01, -1.915e-01, -1.448e-02, -3.299e-01, 1.325e-01, 5.057e-01, 1.203e-01, 1.044e-01), r);\n\tr = MulAdd(s0_2, M4(-7.759e-02, 1.978e-01, 2.185e-01, -1.370e-01, 5.627e-02, 3.739e-02, 1.866e-02, 4.120e-02, 1.212e-01, -2.967e-01, -4.022e-02, -1.058e-01, 9.193e-02, -6.720e-02, -8.270e-02, -3.294e-02), r);\n\tr = MulAdd(s0_3, M4(-1.156e-01, -3.838e-01, -1.304e-01, 1.556e-01, 2.972e-01, -3.797e-02, -8.053e-02, 1.932e-01, -8.240e-01, 8.246e-01, 6.350e-01, -4.248e-01, 1.592e-03, -2.154e-01, 3.861e-01, -8.019e-02), r);\n\tr = MulAdd(s0_4, M4(1.134e-01, 3.460e-01, -1.323e-01, 1.038e-01, 3.182e-01, 5.052e-02, -2.690e-01, 4.359e-01, -5.274e-01, -1.360e+00, 5.110e-01, -8.171e-01, -4.418e-02, 3.662e-01, -4.468e-01, -8.695e-02), r);\n\tr = MulAdd(s0_5, M4(-5.947e-02, 6.545e-02, 7.860e-02, 1.032e-01, 3.691e-01, -1.867e-02, -6.669e-02, -1.166e-01, 4.599e-01, -6.066e-01, -1.696e+00, -7.313e-01, -2.449e-01, -8.068e-02, 1.883e-03, -1.603e-01), r);\n\tr = MulAdd(s0_6, M4(1.844e-01, -8.927e-02, 2.002e-02, -4.609e-04, -2.650e-01, 7.654e-02, -1.074e-01, -6.939e-02, 3.150e-01, -2.191e-01, 4.955e-01, -1.906e-02, -1.020e-01, -4.901e-02, -1.017e-01, -2.561e-01), r);\n\tr = MulAdd(s0_7, M4(-8.724e-02, -1.306e-01, 4.306e-02, -1.211e-01, -6.401e-02, -5.717e-02, 1.212e-01, 2.038e-01, -7.175e-02, -3.181e-01, 3.271e-01, 6.668e-02, -6.730e-02, 1.929e-01, 2.173e-01, 1.680e-01), r);\n\tr = MulAdd(s0_8, M4(1.231e-02, 5.079e-02, 1.005e-01, 8.730e-02, 5.038e-02, 9.516e-02, 2.623e-01, 7.546e-02, -2.105e-02, 2.273e-02, -5.382e-02, 9.471e-02, 6.055e-02, 2.890e-02, 5.401e-02, 1.443e-02), r);\n\tr = MulAdd(s1_0, M4(4.897e-01, 4.202e-01, -8.175e-01, 2.352e-01, -1.649e-01, 1.083e-01, 1.852e-01, 2.373e-02, 1.422e-02, -5.769e-02, -3.236e-02, -4.748e-02, 1.910e-01, -1.096e-01, 3.096e-02, 1.352e-01), r);\n\tr = MulAdd(s1_1, M4(4.412e-01, -6.797e-01, -1.467e-01, -6.489e-01, -7.817e-03, 5.137e-03, 1.653e-01, 2.525e-01, 1.898e-01, -1.662e-02, -7.295e-03, 1.482e-01, 2.308e-01, -2.795e-01, -7.044e-02, -2.044e-01), r);\n\tr = MulAdd(s1_2, M4(2.954e-01, 7.991e-03, -3.515e-02, 5.353e-01, 3.823e-01, 1.324e-01, -1.496e-01, 2.410e-01, 1.570e-01, -2.524e-02, -9.177e-02, 6.568e-02, 1.920e-01, 1.506e-02, -4.787e-02, -1.636e-01), r);\n\tr = MulAdd(s1_3, M4(-2.704e-01, 3.949e-02, -1.541e-01, -3.039e-01, -5.590e-01, -4.014e-01, 3.342e-01, 6.506e-02, -1.872e-01, 1.954e-01, -1.813e-02, 5.556e-02, 8.577e-02, 1.206e-01, 9.298e-02, 4.025e-02), r);\n\tr = MulAdd(s1_4, M4(-5.198e-01, 7.954e-01, -1.264e-01, -7.453e-01, -1.635e-01, -1.080e-01, 6.140e-01, -3.089e-01, -9.613e-02, -3.290e-01, 1.678e-01, -7.862e-02, 4.744e-02, -8.617e-02, -3.783e-01, -5.302e-02), r);\n\tr = MulAdd(s1_5, M4(-3.316e-01, -9.648e-02, 3.075e-01, -8.622e-02, -2.702e-02, 2.573e-01, 4.803e-02, 2.886e-01, 1.101e-01, -5.590e-02, -2.187e-01, 4.012e-02, -6.776e-02, -2.531e-02, 1.187e-01, 1.914e-01), r);\n\tr = MulAdd(s1_6, M4(1.292e-01, 7.338e-01, -1.035e+00, -3.613e-01, -1.081e-01, 5.978e-02, 1.108e-01, 1.432e-01, -7.837e-02, 7.895e-02, 1.205e-02, -5.820e-02, 9.230e-02, -2.629e-01, 1.338e-01, 1.457e-02), r);\n\tr = MulAdd(s1_7, M4(1.799e-01, -2.778e-01, 2.910e-01, -3.160e-01, 1.320e-01, -2.639e-01, 1.126e-01, -4.365e-01, -1.801e-01, 4.184e-02, 1.418e-01, 1.234e-01, -1.337e-01, -8.716e-02, 6.319e-02, -4.482e-02), r);\n\tr = MulAdd(s1_8, M4(-1.452e-01, 9.640e-02, 2.817e-01, 1.741e-01, -1.779e-01, 2.690e-02, 3.388e-02, 1.115e-02, -1.610e-01, -4.691e-02, -1.704e-01, -2.261e-01, 7.297e-02, 5.985e-02, 1.668e-01, 1.194e-02), r);\n\tr = MulAdd(s2_0, M4(1.225e-01, -1.822e-01, -7.392e-02, 7.928e-02, -9.254e-02, 6.534e-03, 1.812e-01, 6.578e-02, 6.421e-02, -6.216e-02, -1.401e-01, -1.043e-01, -3.504e-01, -6.918e-02, 1.484e-01, 1.426e-01), r);\n\tr = MulAdd(s2_1, M4(4.606e-02, -1.660e-02, -1.607e-01, -4.997e-02, 1.538e-01, 1.111e-02, 2.039e-01, -1.516e-02, -5.033e-02, -5.356e-02, 9.295e-02, -2.669e-01, -1.850e-01, 7.764e-02, 5.003e-02, -4.675e-02), r);\n\tr = MulAdd(s2_2, M4(5.484e-02, 2.393e-02, 6.362e-03, 1.969e-01, 3.522e-01, -3.946e-02, -2.846e-01, 3.291e-01, 2.223e-01, 1.481e-01, -1.728e-03, 6.660e-02, -4.053e-02, -6.892e-02, 4.244e-02, 2.214e-01), r);\n\tr = MulAdd(s2_3, M4(-3.490e-01, -9.302e-02, 2.349e-01, -2.202e-01, -4.376e-01, -1.789e-01, 1.899e-01, 5.442e-02, -1.084e-01, 3.997e-02, -1.352e-01, 1.549e-01, 8.160e-02, 2.716e-01, 2.301e-02, 1.718e-01), r);\n\tr = MulAdd(s2_4, M4(3.561e-02, 5.771e-02, -6.185e-01, -7.735e-02, -4.608e-01, -4.666e-02, 6.230e-01, -1.867e-01, -4.888e-02, 1.459e-01, -2.126e-01, -1.254e-01, -3.141e-01, -7.960e-02, 2.873e-01, 2.510e-02), r);\n\tr = MulAdd(s2_5, M4(1.481e-01, 1.674e-02, -1.207e-01, 2.081e-01, -1.548e-01, 1.376e-01, 4.633e-02, 2.706e-01, 2.653e-02, 8.545e-02, 1.186e-01, 1.113e-01, -5.347e-02, -7.582e-03, 1.496e-01, -1.793e-02), r);\n\tr = MulAdd(s2_6, M4(-1.792e-01, 1.004e-01, 4.906e-02, -1.008e-01, 1.174e-01, -5.349e-02, 7.906e-02, 1.349e-01, -4.414e-02, -5.315e-02, -1.098e-03, 9.865e-02, 8.420e-02, -9.036e-02, -1.430e-01, -1.643e-01), r);\n\tr = MulAdd(s2_7, M4(-4.867e-01, 1.544e-01, 4.995e-01, 8.678e-02, -1.243e-01, -9.942e-02, 3.613e-01, -2.650e-01, 8.803e-02, 6.569e-02, -1.275e-01, -6.514e-02, -2.140e-02, 2.578e-04, -6.209e-02, -1.538e-01), r);\n\tr = MulAdd(s2_8, M4(-4.464e-01, 9.445e-02, -8.204e-02, -1.032e-01, 8.754e-04, 2.704e-02, 2.153e-02, 2.418e-02, 6.872e-02, -8.452e-02, -3.028e-02, 6.132e-02, 7.423e-02, -1.119e-01, -1.669e-02, 3.309e-02), r);\n\tr = MulAdd(s3_0, M4(8.549e-02, 4.522e-02, 1.895e-02, -1.330e-01, 2.075e-01, -1.273e-01, -2.992e-02, -3.167e-02, -4.418e-01, -4.636e-01, -3.327e-01, 1.122e+00, -2.823e-01, -4.644e-01, 8.801e-02, 1.657e-01), r);\n\tr = MulAdd(s3_1, M4(1.285e-01, -2.622e-02, -6.361e-02, -1.547e-01, 2.056e-01, 2.397e-01, -1.266e-03, -5.679e-01, 1.275e-01, -1.047e+00, 2.648e-01, 2.793e+00, -1.654e-01, 1.219e-01, 8.593e-02, -2.056e-01), r);\n\tr = MulAdd(s3_2, M4(3.391e-02, 5.880e-02, -1.770e-03, 1.562e-01, -1.247e-04, 3.836e-03, -3.243e-02, -1.212e-01, -3.804e-01, -6.416e-01, 1.051e+00, 3.382e-01, -1.993e-01, 1.436e-01, 7.728e-02, -1.012e-01), r);\n\tr = MulAdd(s3_3, M4(-1.693e-01, -2.344e-01, 1.774e-01, 8.301e-02, 1.180e-01, -2.529e-01, -1.157e-01, -1.074e-01, 4.684e-02, 1.431e-01, 3.555e-01, 9.063e-01, 3.541e-02, 1.555e-01, -2.294e-01, 3.541e-01), r);\n\tr = MulAdd(s3_4, M4(6.790e-01, 2.978e-03, -5.333e-01, -7.826e-02, 4.578e-02, -7.635e-02, -6.772e-01, -2.766e-02, -5.894e-02, 4.245e-02, -7.763e-01, -1.412e+00, -1.240e-01, -3.159e-01, 4.795e-01, 2.910e-01), r);\n\tr = MulAdd(s3_5, M4(1.609e-01, 4.055e-02, 1.846e-02, -3.977e-02, 2.659e-01, 1.511e-02, -2.099e-01, -4.121e-01, 4.071e-01, 4.634e-01, 2.884e-01, 9.777e-01, -1.012e-01, 5.495e-02, 1.572e-01, -3.293e-01), r);\n\tr = MulAdd(s3_6, M4(-8.705e-02, -1.337e-01, -1.727e-01, -9.255e-02, 1.578e-02, -2.723e-02, -1.492e-01, -1.372e-01, -2.315e-01, 5.413e-01, 4.250e-01, 4.866e-01, -1.362e-01, -1.312e-01, -1.257e-01, 1.292e-01), r);\n\tr = MulAdd(s3_7, M4(-1.415e-01, -5.995e-02, 1.151e-01, 1.606e-01, -3.936e-01, 2.124e-01, -9.745e-02, 3.440e-01, -5.216e-01, -3.266e-01, -5.189e-01, -7.262e-01, 1.290e-02, 9.216e-02, 1.121e-01, 1.337e-01), r);\n\tr = MulAdd(s3_8, M4(2.335e-02, -4.137e-02, -2.396e-02, -4.996e-02, 2.455e-01, 8.565e-02, 2.153e-01, 6.100e-02, 6.328e-01, -8.356e-01, 1.118e-01, -2.496e-01, -3.962e-02, -7.803e-02, -1.017e-01, -1.817e-01), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 2.298e-02, -1.923e-02, -2.658e-02, 1.368e-03 };\n\tr = MulAdd(s0_0, M4(3.773e-02, -4.916e-02, 1.204e-01, -2.493e-02, 6.937e-01, 2.135e-01, 1.818e-01, -3.537e-01, 1.529e-01, 6.021e-02, 1.170e-01, -1.189e-01, 1.189e-01, -9.206e-03, 1.108e-01, 3.896e-02), r);\n\tr = MulAdd(s0_1, M4(-1.620e-01, -1.064e-01, -2.412e-01, -2.743e-01, 2.700e-01, 2.419e-01, -6.450e-02, -2.533e-01, -3.513e-01, -1.194e-01, -3.858e-01, -6.738e-01, -1.275e-03, 1.531e-02, -6.212e-02, 6.180e-02), r);\n\tr = MulAdd(s0_2, M4(-1.407e-01, -2.679e-01, -1.344e-01, 6.411e-02, -1.541e-01, 1.592e-01, 7.251e-02, 2.381e-02, 2.503e-01, 1.899e-01, 1.577e-02, 1.255e-01, -6.473e-02, -1.242e-01, -2.175e-03, 4.059e-02), r);\n\tr = MulAdd(s0_3, M4(-1.168e-01, 7.074e-03, -6.052e-02, -8.601e-02, -1.645e-01, 5.184e-02, 1.711e-01, 2.114e-01, 5.484e-02, -3.865e-02, 6.780e-02, 1.577e-02, -2.114e-02, 8.978e-02, 3.936e-02, 1.152e-01), r);\n\tr = MulAdd(s0_4, M4(4.902e-01, 1.460e-01, 1.333e-01, 1.720e-01, -8.563e-02, -3.756e-01, -2.379e-01, 5.975e-02, 2.295e-01, -1.261e-01, 6.562e-02, -4.971e-01, 7.983e-02, 1.276e-01, -4.241e-02, -1.105e-01), r);\n\tr = MulAdd(s0_5, M4(3.213e-01, -5.127e-01, -9.751e-02, -8.480e-02, 9.720e-02, 6.087e-02, 5.854e-02, -1.636e-01, -4.187e-02, 1.622e-01, 1.296e-01, 1.646e-01, -2.426e-01, -7.077e-02, -7.194e-02, -1.413e-02), r);\n\tr = MulAdd(s0_6, M4(5.106e-02, 1.813e-02, -1.207e-01, 1.479e-01, 7.105e-02, -1.572e-02, 2.355e-01, 3.700e-02, -2.041e-01, 1.066e-01, -1.663e-02, 5.370e-02, -1.855e-01, 2.424e-03, -1.153e-02, 3.895e-02), r);\n\tr = MulAdd(s0_7, M4(3.740e-02, 2.510e-01, 4.747e-02, -1.610e-02, -1.276e-01, 1.675e-02, -1.122e-01, -7.178e-02, -3.253e-01, -1.639e-01, -1.312e-01, 6.179e-02, 1.135e-01, 2.657e-02, -1.152e-01, -9.269e-02), r);\n\tr = MulAdd(s0_8, M4(-3.307e-02, 1.119e-01, -1.452e-02, 1.724e-01, -5.484e-02, 2.508e-03, -3.591e-02, 6.865e-02, 1.889e-01, 1.723e-01, 1.635e-01, 1.258e-01, 1.857e-02, 1.273e-01, 1.566e-01, -1.652e-02), r);\n\tr = MulAdd(s1_0, M4(-2.277e-01, -1.423e-01, 1.949e-01, 4.971e-02, -3.095e-01, -7.076e-02, -1.716e-01, -3.408e-01, 1.357e-01, 1.048e-01, -3.445e-02, -6.842e-02, 2.769e-01, 1.989e-02, 8.616e-02, 2.153e-01), r);\n\tr = MulAdd(s1_1, M4(-2.882e-01, -3.427e-01, 9.095e-02, 7.691e-01, 1.701e-01, 3.928e-01, -3.796e-01, -4.772e-01, 2.376e-01, 1.403e-01, 1.900e-01, 4.017e-02, 1.762e-01, 7.482e-02, -3.929e-03, 2.218e-03), r);\n\tr = MulAdd(s1_2, M4(-2.240e-01, -3.791e-01, 4.275e-02, 1.327e-01, -1.085e-01, 2.639e-02, 1.546e-01, -2.289e-02, -6.099e-01, -1.290e-01, -1.267e-01, 5.642e-02, -1.649e-01, -2.882e-01, 1.917e-02, 1.338e-01), r);\n\tr = MulAdd(s1_3, M4(2.616e-01, 8.183e-03, -1.014e-02, -1.328e-01, 3.280e-01, 1.409e-01, -3.935e-01, -5.285e-02, -1.023e-02, -7.158e-02, 4.159e-03, -4.778e-02, -5.562e-01, 3.113e-02, 4.077e-02, -2.240e-01), r);\n\tr = MulAdd(s1_4, M4(4.202e-02, 9.718e-02, -9.851e-02, -7.479e-01, 3.624e-02, -4.618e-01, -2.312e-01, 1.559e-01, -6.908e-01, 1.833e-01, -2.083e-01, 6.335e-02, -2.836e-02, 2.194e-01, 1.387e-01, -2.445e-01), r);\n\tr = MulAdd(s1_5, M4(1.029e-01, -3.759e-01, 2.112e-02, -3.595e-02, 4.997e-03, -8.256e-02, 1.003e-01, -1.616e-01, 2.521e-01, 7.646e-02, -1.807e-01, 8.995e-02, -4.928e-01, -4.602e-02, -1.609e-01, 8.111e-02), r);\n\tr = MulAdd(s1_6, M4(2.841e-01, 7.997e-02, -1.299e-01, -3.545e-02, -3.290e-02, 4.075e-04, 1.653e-01, 3.074e-02, 6.276e-02, 5.983e-02, -3.728e-02, -6.306e-02, -1.742e-01, -1.482e-01, -3.579e-01, 6.636e-02), r);\n\tr = MulAdd(s1_7, M4(1.981e-01, 1.679e-01, -6.883e-02, -2.588e-01, -2.647e-01, 8.313e-02, -5.174e-02, 1.209e-01, -2.284e-01, -1.392e-01, -1.328e-01, 3.198e-02, 1.279e-01, -4.582e-02, -2.727e-01, 6.927e-02), r);\n\tr = MulAdd(s1_8, M4(1.525e-01, -2.406e-01, 8.315e-02, 7.265e-03, -2.063e-03, -9.131e-02, 1.110e-03, 3.074e-02, 1.791e-01, 5.909e-02, -8.521e-02, -6.441e-02, 2.074e-01, 7.446e-02, 1.452e-01, 7.400e-02), r);\n\tr = MulAdd(s2_0, M4(1.997e-02, 2.843e-01, 8.649e-02, 9.571e-02, -1.781e-01, -9.968e-03, -2.890e-02, -7.883e-02, 2.019e-02, -1.216e-02, 1.812e-01, 2.368e-01, 6.113e-02, 3.176e-02, 7.946e-02, 1.075e-01), r);\n\tr = MulAdd(s2_1, M4(1.032e-01, -5.896e-01, 1.941e-01, 3.837e-01, 1.188e-01, 8.780e-02, 3.861e-02, -1.744e-01, 4.878e-02, -7.646e-02, 2.619e-01, 1.448e-01, 5.215e-02, 4.933e-02, -6.758e-02, 8.912e-02), r);\n\tr = MulAdd(s2_2, M4(-2.291e-01, -1.530e-01, 1.102e-01, 5.480e-02, 4.077e-01, -8.378e-03, -7.649e-02, -6.372e-02, 2.670e-01, 1.017e-01, 2.667e-01, -8.936e-03, -1.644e-02, -4.544e-02, -6.324e-02, -5.411e-02), r);\n\tr = MulAdd(s2_3, M4(-1.113e-01, 7.794e-02, -2.500e-01, 2.054e-01, 7.857e-02, 3.525e-02, -6.270e-02, 1.187e-01, 1.222e-01, 3.236e-02, -2.597e-01, -1.654e-01, 2.588e-02, -2.900e-01, -8.871e-02, -1.734e-02), r);\n\tr = MulAdd(s2_4, M4(7.606e-01, -5.853e-01, 1.359e-01, -1.206e-01, -2.826e-01, 2.765e-01, 2.347e-01, 3.174e-01, -2.738e-01, -6.352e-02, 1.287e-01, -2.197e-01, -4.855e-01, -1.005e-02, -1.929e-01, -3.095e-02), r);\n\tr = MulAdd(s2_5, M4(2.727e-01, -2.414e-01, 1.192e-01, -2.436e-01, 1.855e-01, -9.626e-02, -1.515e-01, 1.784e-01, -1.328e-02, 3.473e-03, 1.846e-01, -1.311e-01, 2.775e-01, 1.262e-01, 8.677e-03, 5.321e-02), r);\n\tr = MulAdd(s2_6, M4(3.195e-01, 1.377e-02, -1.920e-01, -9.662e-02, 2.030e-01, 1.059e-02, -1.692e-01, -1.024e-02, -3.002e-02, -7.144e-03, -1.783e-01, -5.337e-02, 1.894e-01, 5.339e-02, 2.365e-02, -9.065e-02), r);\n\tr = MulAdd(s2_7, M4(-3.501e-01, 1.304e-01, -3.536e-01, -7.251e-02, 3.473e-02, 9.994e-02, -2.137e-01, -1.372e-01, -1.165e-02, -6.450e-02, -3.175e-01, -6.435e-02, 1.299e-01, -1.793e-01, 1.847e-01, -5.373e-02), r);\n\tr = MulAdd(s2_8, M4(2.007e-01, -2.978e-01, 2.092e-01, -1.322e-01, -6.292e-02, 3.227e-01, -3.444e-01, 7.335e-02, 4.040e-03, -5.816e-02, -1.870e-03, -2.017e-02, -1.157e-01, 1.134e-01, -3.315e-02, 4.837e-02), r);\n\tr = MulAdd(s3_0, M4(5.560e-02, 2.772e-02, 8.952e-02, 7.943e-02, -1.587e-01, 1.216e-02, 3.493e-03, 3.803e-02, 2.253e-01, 1.839e-01, 4.247e-02, 1.694e-01, -4.995e-02, 3.428e-01, -1.507e-01, 3.553e-01), r);\n\tr = MulAdd(s3_1, M4(1.367e-02, -1.897e-01, -9.217e-02, 8.214e-03, 1.802e-01, 7.154e-02, -6.387e-02, 1.552e-02, -3.173e-01, -1.991e-01, 2.504e-01, 5.033e-01, -3.434e-01, 2.710e-03, 7.297e-02, 5.751e-01), r);\n\tr = MulAdd(s3_2, M4(-1.310e-02, 2.518e-01, -8.101e-03, -5.719e-02, 1.436e-01, -1.783e-01, -6.461e-02, -4.487e-02, 4.401e-02, -1.240e-02, 1.103e-01, 2.310e-01, 4.486e-02, 5.592e-02, -6.506e-02, -1.333e-01), r);\n\tr = MulAdd(s3_3, M4(9.502e-02, 5.695e-02, -1.551e-01, 1.754e-02, 2.585e-02, 3.478e-02, -1.198e-01, 1.182e-01, -1.117e-01, 1.009e-01, -2.105e-01, 1.057e-01, 2.102e-01, 1.993e-01, -3.809e-02, -8.390e-02), r);\n\tr = MulAdd(s3_4, M4(-3.507e-01, -2.784e-01, -2.989e-02, -2.785e-01, 4.284e-02, -1.155e-01, 1.934e-01, -1.492e-01, 5.998e-01, -1.442e-01, -9.265e-02, -1.053e-01, -2.690e-01, -2.468e-01, -2.995e-01, -3.690e-02), r);\n\tr = MulAdd(s3_5, M4(5.049e-02, 1.616e-01, 1.367e-01, -2.065e-03, -9.968e-02, -1.378e-01, -1.028e-02, 1.187e-01, -6.145e-02, -3.774e-02, 8.126e-02, -3.003e-01, 4.898e-01, -1.995e-01, -1.431e-01, -2.276e-03), r);\n\tr = MulAdd(s3_6, M4(4.055e-01, 1.422e-01, -1.436e-01, 3.012e-02, -6.197e-02, 7.033e-02, 4.149e-02, 8.287e-02, -1.137e-01, -1.588e-01, -5.402e-02, 2.393e-02, 2.222e-01, 1.236e-01, 4.226e-02, 2.098e-01), r);\n\tr = MulAdd(s3_7, M4(2.309e-02, -9.689e-02, -8.908e-02, -2.339e-01, 1.829e-01, -8.781e-02, 1.132e-01, -3.135e-01, -2.134e-01, 9.304e-02, -2.253e-01, -9.650e-02, -2.415e-03, -1.840e-01, 1.981e-01, -1.488e-01), r);\n\tr = MulAdd(s3_8, M4(-1.466e-01, 1.364e-01, 1.174e-01, 5.666e-02, -1.027e-01, 1.929e-01, 8.108e-02, 5.678e-02, -1.460e-01, 8.134e-02, -1.315e-01, 6.725e-02, 1.327e-01, 1.911e-01, -2.188e-01, 7.731e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 2.654e-02, 3.773e-02, -2.198e-02, -1.098e-02 };\n\tr = MulAdd(s0_0, M4(-1.130e-01, 1.214e-01, -1.108e-02, 1.352e-01, 6.377e-02, -1.713e-01, 1.967e-02, -1.919e-01, 1.150e-02, -9.545e-04, 1.293e-01, 6.316e-02, 1.290e-02, -8.948e-02, 6.572e-02, 1.822e-02), r);\n\tr = MulAdd(s0_1, M4(2.092e-01, 2.239e-01, -8.298e-02, 2.838e-01, -2.186e-01, 2.432e-01, -1.698e-01, 1.926e-01, -4.677e-01, -1.034e-02, -1.518e-01, 1.623e-02, -1.795e-02, 5.413e-02, -5.460e-02, 2.335e-02), r);\n\tr = MulAdd(s0_2, M4(2.608e-01, 1.430e-01, -1.394e-02, 7.100e-02, 6.597e-02, 8.825e-02, 7.601e-02, -1.882e-02, -1.082e-01, 7.205e-02, 1.003e-01, -1.760e-01, 2.237e-01, -9.588e-02, -1.699e-02, 4.950e-02), r);\n\tr = MulAdd(s0_3, M4(-1.373e-01, -1.715e-01, -1.798e-01, 7.263e-02, 1.256e-02, -2.401e-01, -1.070e-01, -1.565e-01, 1.507e-01, 1.169e-01, 4.934e-02, 1.995e-02, -8.259e-02, 2.094e-01, -6.138e-02, -7.254e-02), r);\n\tr = MulAdd(s0_4, M4(-2.767e-01, -4.899e-01, -7.727e-01, -1.497e-01, -3.017e-03, -3.284e-02, 2.596e-01, -4.209e-01, -1.953e-01, 1.452e-01, 7.560e-03, -3.027e-01, -1.194e-01, 1.329e-01, -1.687e-01, 1.195e-01), r);\n\tr = MulAdd(s0_5, M4(-1.280e-01, -3.473e-01, -9.935e-02, -1.362e-01, 7.692e-02, 1.451e-01, 1.568e-02, 6.818e-02, 6.812e-02, -3.212e-01, -6.089e-03, -2.132e-01, -1.721e-01, -1.182e-01, -5.266e-02, -1.555e-01), r);\n\tr = MulAdd(s0_6, M4(-3.717e-02, -4.738e-02, -2.076e-01, 4.773e-02, -8.280e-02, -9.293e-02, -6.792e-02, -8.102e-02, 7.954e-02, 2.675e-02, 1.215e-02, 3.023e-02, -7.328e-03, -7.478e-02, 7.216e-02, 2.117e-01), r);\n\tr = MulAdd(s0_7, M4(-1.612e-01, -3.211e-01, -2.805e-01, -5.244e-01, -5.702e-02, -6.611e-03, -5.634e-02, 1.504e-01, 1.134e-01, -6.816e-02, -3.059e-02, 2.929e-02, 8.199e-02, -1.340e-01, -5.846e-02, -1.619e-01), r);\n\tr = MulAdd(s0_8, M4(-6.973e-02, -5.321e-01, 1.599e-02, -6.657e-02, 5.820e-02, 3.689e-02, 3.444e-02, -6.053e-02, 2.894e-02, -9.890e-02, 9.278e-02, -1.179e-01, -5.478e-02, -1.127e-01, -8.066e-03, 9.613e-03), r);\n\tr = MulAdd(s1_0, M4(-4.428e-02, 6.076e-02, -4.348e-02, 9.205e-02, -3.087e-02, -2.955e-02, -1.082e-01, -1.677e-01, 6.964e-02, -6.678e-02, 1.186e-02, 4.676e-02, 1.122e-01, 2.608e-02, -7.710e-02, 1.314e-02), r);\n\tr = MulAdd(s1_1, M4(3.823e-02, 9.601e-02, -3.015e-02, 1.601e-01, -3.331e-01, 4.881e-02, 1.877e-01, 4.381e-02, -4.786e-02, -6.752e-02, -1.870e-01, -1.172e-01, 3.151e-01, -1.060e-01, -2.141e-01, 1.811e-02), r);\n\tr = MulAdd(s1_2, M4(1.288e-01, 7.224e-02, 1.647e-01, 9.426e-02, -1.369e-01, -3.410e-02, 2.160e-02, -2.060e-02, 1.585e-01, 1.380e-01, -1.537e-01, 1.532e-01, 2.734e-01, 4.569e-03, -7.428e-02, 4.233e-02), r);\n\tr = MulAdd(s1_3, M4(1.178e-01, -2.371e-02, 1.479e-01, -2.215e-01, 1.109e-01, -1.197e-01, -1.628e-01, -4.200e-01, -1.274e-01, -3.016e-02, -2.777e-02, -7.318e-02, 1.257e-01, 3.237e-01, 2.290e-01, 1.030e-01), r);\n\tr = MulAdd(s1_4, M4(4.789e-01, 4.644e-02, -1.997e-01, -7.073e-01, 4.108e-02, -2.901e-01, 3.818e-01, -4.996e-01, -1.879e-01, 5.111e-02, -1.602e-01, 4.706e-02, -7.003e-01, -1.329e-01, -9.032e-01, 1.350e-01), r);\n\tr = MulAdd(s1_5, M4(4.773e-01, 1.039e-01, 8.412e-02, 1.490e-01, 3.035e-02, 1.400e-01, -6.338e-02, 8.991e-02, 4.904e-01, 3.650e-01, -3.968e-02, 3.972e-01, -2.319e-01, -4.904e-02, -5.767e-01, -2.348e-02), r);\n\tr = MulAdd(s1_6, M4(-7.230e-02, 6.087e-02, -2.064e-02, -6.899e-03, -1.217e-01, -1.687e-01, -1.857e-01, -1.239e-01, -6.371e-02, 6.974e-02, 1.337e-02, 8.767e-02, 2.289e-01, 4.729e-01, 9.679e-02, 1.118e-01), r);\n\tr = MulAdd(s1_7, M4(-5.391e-02, 4.743e-02, -4.716e-02, 1.767e-01, -4.998e-02, -2.546e-01, 8.780e-02, 4.767e-02, -7.362e-03, -6.664e-02, 1.749e-01, 7.709e-02, -2.150e-01, -8.501e-02, -3.625e-01, -1.570e-01), r);\n\tr = MulAdd(s1_8, M4(1.795e-01, -1.680e-01, 5.013e-02, 8.052e-02, 4.902e-02, 8.731e-03, 1.408e-02, 3.582e-02, -8.009e-02, 3.017e-02, -2.784e-02, 8.367e-02, 1.287e-01, 8.771e-02, -3.202e-02, 2.532e-02), r);\n\tr = MulAdd(s2_0, M4(-1.419e-02, -1.381e-01, 1.070e-02, 1.267e-01, 5.872e-02, 8.846e-02, 1.327e-01, 3.797e-02, -9.500e-02, -4.932e-02, -1.433e-02, -5.332e-02, -9.478e-02, -4.424e-02, 1.445e-02, 1.336e-01), r);\n\tr = MulAdd(s2_1, M4(-2.619e-01, 2.202e-01, 8.033e-02, 3.468e-01, 3.048e-01, -1.002e-02, -1.701e-01, -6.405e-02, 3.158e-02, -1.062e-01, 1.464e-01, 1.837e-01, 7.958e-02, 5.367e-03, -9.772e-02, 5.937e-02), r);\n\tr = MulAdd(s2_2, M4(4.148e-01, -9.892e-02, -1.164e-01, 9.342e-02, -2.268e-01, 3.121e-02, -1.576e-01, -4.941e-02, -3.639e-01, -6.088e-02, -2.668e-02, -3.922e-02, 2.593e-02, 9.331e-02, 8.824e-02, 6.521e-03), r);\n\tr = MulAdd(s2_3, M4(-2.006e-01, -6.678e-02, 3.283e-01, 4.849e-01, 1.016e-01, -1.125e-01, -1.296e-01, -1.680e-01, 2.772e-01, 1.909e-01, 3.458e-01, -1.367e-01, 5.993e-02, 2.428e-01, 1.871e-02, -1.480e-01), r);\n\tr = MulAdd(s2_4, M4(-1.486e-02, 3.916e-01, 1.216e-01, -4.918e-01, -5.480e-02, 1.275e-01, -1.182e-01, 5.374e-01, -6.052e-02, 3.231e-01, 3.526e-02, -1.833e-01, -6.420e-02, -1.273e-03, -1.800e-01, 7.652e-02), r);\n\tr = MulAdd(s2_5, M4(-2.349e-01, 7.653e-02, 8.108e-02, 1.898e-01, -1.317e-01, -2.513e-01, -2.790e-02, -3.601e-02, 2.290e-01, -1.461e-01, 8.279e-02, 1.899e-01, -4.883e-02, 8.442e-02, -5.347e-02, -4.900e-02), r);\n\tr = MulAdd(s2_6, M4(-3.134e-01, 8.996e-02, 3.181e-02, -1.457e-01, -9.578e-02, 1.116e-01, -6.355e-02, -1.488e-01, -2.890e-02, 2.076e-02, 6.027e-02, 1.788e-02, 1.403e-01, 8.653e-02, 1.352e-01, -6.965e-02), r);\n\tr = MulAdd(s2_7, M4(2.188e-01, 2.762e-01, 8.939e-02, 2.626e-01, 2.829e-01, 1.395e-02, -2.333e-02, -3.416e-02, 1.208e-02, 5.859e-02, 2.510e-01, 3.831e-01, -1.118e-01, -6.555e-03, -4.403e-02, -4.370e-02), r);\n\tr = MulAdd(s2_8, M4(1.361e-02, 1.759e-01, -6.858e-02, 1.548e-01, -9.035e-03, -1.969e-01, -1.406e-01, 4.979e-02, 1.587e-02, -1.111e-01, -1.971e-02, 3.073e-02, 5.107e-02, 1.063e-02, -1.163e-02, 4.328e-02), r);\n\tr = MulAdd(s3_0, M4(-3.105e-02, -3.297e-03, -1.346e-02, 3.279e-02, -6.446e-02, -8.300e-03, 1.195e-02, 1.704e-02, -2.825e-02, -7.198e-02, -1.241e-01, -5.453e-03, -1.010e-01, -2.661e-01, -1.093e-01, -4.753e-01), r);\n\tr = MulAdd(s3_1, M4(6.416e-02, 3.290e-03, -6.664e-02, 3.536e-02, 1.340e-01, 6.209e-02, 1.751e-02, 3.663e-02, 1.215e-01, 2.067e-01, 2.157e-02, 2.474e-01, 8.811e-02, 3.345e-01, -1.319e-01, 4.883e-01), r);\n\tr = MulAdd(s3_2, M4(-2.049e-01, 3.166e-02, 2.001e-02, 1.423e-04, 6.755e-02, 2.682e-02, -1.911e-02, 5.750e-02, 2.807e-02, -8.508e-02, 9.625e-03, -4.121e-02, 5.264e-01, -1.940e-01, 1.523e-02, 1.072e-01), r);\n\tr = MulAdd(s3_3, M4(-3.709e-02, -2.069e-02, 2.408e-01, 2.808e-02, 3.065e-02, -1.316e-01, -4.231e-02, -9.350e-02, 8.105e-02, -1.048e-01, 1.708e-01, -8.174e-02, 3.743e-01, -3.742e-02, 2.901e-01, 7.091e-01), r);\n\tr = MulAdd(s3_4, M4(-1.409e-01, -2.233e-02, 2.452e-02, -2.700e-01, -2.514e-01, 1.795e-01, 1.342e-01, 7.064e-01, -3.364e-01, 1.200e-01, -4.678e-01, -1.900e-01, -5.496e-01, 2.325e-01, -2.933e-02, 6.220e-01), r);\n\tr = MulAdd(s3_5, M4(-1.505e-01, 1.194e-01, -1.962e-02, 8.578e-02, -1.999e-01, -1.274e-01, -1.435e-01, -2.373e-01, 3.485e-01, -1.336e-01, 2.627e-01, 1.902e-02, -4.103e-01, -2.210e-01, 4.443e-01, -5.294e-01), r);\n\tr = MulAdd(s3_6, M4(1.998e-01, 6.277e-02, -3.951e-02, 5.659e-02, -1.930e-02, -4.212e-02, -5.306e-02, -1.381e-01, -1.701e-01, 1.967e-01, 1.383e-02, -2.463e-01, 2.810e-01, 2.186e-01, 2.522e-01, -5.045e-01), r);\n\tr = MulAdd(s3_7, M4(2.436e-01, 1.870e-01, 8.677e-03, -4.233e-02, 4.271e-01, 2.146e-01, 8.672e-02, -2.921e-01, 1.262e-03, -2.255e-01, 9.194e-03, 1.431e-01, 4.044e-02, 4.419e-01, -1.759e-01, 1.003e-01), r);\n\tr = MulAdd(s3_8, M4(-3.728e-02, -2.172e-01, -1.118e-01, 7.946e-02, -4.604e-02, 2.679e-02, 2.423e-02, -5.371e-03, 1.024e-01, -7.889e-02, -3.896e-02, -8.837e-03, 9.574e-02, -3.400e-01, 1.938e-01, -4.385e-01), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -5.503e-03, -1.971e-02, 4.307e-02, 2.403e-03 };\n\tr = MulAdd(s0_0, M4(-9.930e-02, -8.715e-02, -9.548e-02, -1.855e-02, 1.095e-01, 2.065e-01, 1.197e-01, -1.570e-02, 1.574e-01, 1.091e-01, -6.599e-02, 4.981e-03, -1.202e-02, -1.267e-02, -3.307e-02, -4.164e-02), r);\n\tr = MulAdd(s0_1, M4(-5.548e-02, -8.579e-02, -1.219e-01, -2.839e-03, 8.177e-02, 3.298e-02, 2.258e-02, -9.106e-02, 1.195e-01, -8.941e-03, 2.294e-02, 3.104e-02, 5.574e-02, 9.188e-02, 3.466e-02, -3.615e-02), r);\n\tr = MulAdd(s0_2, M4(-6.549e-02, -9.322e-02, 1.286e-02, -6.585e-03, -9.047e-02, -4.453e-02, -4.657e-02, 4.226e-02, 1.639e-01, 2.342e-01, -1.120e-02, -4.821e-02, -1.004e-01, -2.352e-03, -2.815e-02, 3.063e-02), r);\n\tr = MulAdd(s0_3, M4(2.220e-02, 5.185e-03, 1.132e-01, 1.700e-01, 1.671e-01, -1.331e-03, -4.262e-02, -5.368e-01, -2.847e-01, -6.449e-02, -1.573e-01, -1.291e-01, 1.065e-01, -3.527e-02, 2.175e-02, -9.759e-02), r);\n\tr = MulAdd(s0_4, M4(-6.274e-02, 5.046e-02, -7.344e-02, -1.713e-02, 3.599e-02, -1.940e-01, 4.244e-02, 5.161e-02, -2.285e-01, 2.347e-01, -1.516e-01, 4.668e-02, 5.899e-02, 4.766e-01, 2.878e-02, -1.491e-01), r);\n\tr = MulAdd(s0_5, M4(1.430e-02, -1.483e-01, 1.337e-01, 5.809e-02, -1.794e-02, 3.310e-02, -6.586e-02, -2.245e-02, 4.123e-01, -5.310e-02, 2.135e-01, 1.468e-02, -2.746e-01, 6.546e-02, -2.512e-01, 6.142e-02), r);\n\tr = MulAdd(s0_6, M4(4.337e-02, -2.250e-02, 1.685e-01, 5.046e-02, -4.996e-01, -8.999e-02, -3.918e-01, -1.998e-02, -5.723e-02, -1.890e-01, -7.521e-02, -1.420e-02, 2.147e-01, -7.020e-02, -1.031e-01, 7.691e-02), r);\n\tr = MulAdd(s0_7, M4(6.315e-04, -9.858e-02, -1.540e-01, 2.171e-02, 3.620e-01, -1.191e-01, 1.217e-01, 8.591e-02, 2.791e-02, 9.235e-02, -2.327e-02, -9.034e-03, 2.280e-01, 4.347e-01, -3.150e-01, 8.650e-02), r);\n\tr = MulAdd(s0_8, M4(-2.714e-02, -2.215e-01, 1.516e-01, -3.802e-02, -1.612e-02, -5.077e-02, -1.311e-01, 2.074e-02, 2.457e-02, 7.442e-02, 1.970e-03, 1.698e-02, -2.027e-01, 6.232e-02, -2.108e-01, -1.618e-02), r);\n\tr = MulAdd(s1_0, M4(1.029e-01, 5.622e-02, -1.224e-01, 6.814e-02, 1.126e-01, 1.469e-01, 3.430e-02, -2.006e-02, 9.965e-03, 1.500e-01, 3.369e-01, 4.728e-02, -1.169e-01, 7.054e-02, -3.382e-02, 3.463e-02), r);\n\tr = MulAdd(s1_1, M4(1.890e-04, 2.958e-01, -9.510e-02, 6.847e-02, 1.335e-01, 1.174e-01, -4.600e-02, -1.080e-01, 1.446e-01, 1.380e-01, -1.213e-03, 5.221e-02, -7.797e-03, -7.192e-02, -2.139e-02, -1.013e-01), r);\n\tr = MulAdd(s1_2, M4(-1.966e-02, -7.701e-02, -1.022e-01, -2.180e-02, -1.363e-02, -4.144e-02, -1.094e-01, 1.956e-02, 4.011e-02, -1.149e-01, 9.707e-02, -5.067e-02, -1.240e-01, -4.850e-02, 5.535e-04, -7.421e-02), r);\n\tr = MulAdd(s1_3, M4(-1.511e-01, 2.479e-01, -2.632e-02, 2.342e-01, 1.382e-01, 2.093e-01, -2.834e-01, -4.066e-01, -1.914e-01, 6.572e-02, 2.396e-03, -2.234e-01, 7.510e-02, 7.839e-02, -4.164e-02, 3.453e-02), r);\n\tr = MulAdd(s1_4, M4(-2.032e-01, 4.775e-01, -3.155e-01, 4.759e-02, -3.128e-03, 7.992e-02, -1.580e-01, 1.370e-01, 7.606e-02, -2.428e-01, -3.431e-01, 8.765e-02, 1.948e-01, 3.910e-02, 1.793e-01, -2.253e-01), r);\n\tr = MulAdd(s1_5, M4(-6.497e-02, 3.718e-01, -1.607e-01, 1.969e-01, 1.130e-01, 1.543e-01, -6.874e-02, 3.665e-02, -2.082e-02, -1.314e-01, 1.726e-01, -3.860e-02, -1.390e-01, -6.533e-02, 1.400e-02, -1.440e-02), r);\n\tr = MulAdd(s1_6, M4(2.533e-02, 4.261e-01, -4.830e-02, -3.112e-02, -4.698e-01, 1.500e-01, -3.778e-01, -4.040e-02, 1.883e-01, -4.829e-02, -1.404e-01, 1.089e-01, -7.179e-02, -2.045e-01, -9.545e-02, 1.307e-01), r);\n\tr = MulAdd(s1_7, M4(1.579e-01, 5.817e-01, -3.106e-01, 2.197e-01, 1.791e-01, -5.029e-02, -2.680e-01, 8.439e-02, -3.268e-02, 3.793e-01, 4.710e-02, -7.101e-02, -4.163e-01, -5.762e-01, 6.999e-02, -3.126e-02), r);\n\tr = MulAdd(s1_8, M4(-2.019e-01, 2.995e-01, -1.985e-01, 3.372e-02, -1.814e-03, -8.885e-02, -1.580e-01, 5.131e-02, -3.058e-01, 1.882e-01, -1.935e-01, -9.108e-04, -1.722e-01, -1.703e-01, 2.751e-02, -1.436e-01), r);\n\tr = MulAdd(s2_0, M4(-1.572e-01, 7.107e-02, 1.546e-01, 7.852e-02, 2.804e-01, 9.207e-02, 1.863e-01, -2.990e-02, 7.031e-02, 7.487e-03, -2.383e-01, 9.415e-02, -4.405e-02, -2.135e-01, 4.289e-02, -1.969e-02), r);\n\tr = MulAdd(s2_1, M4(1.009e-01, 6.349e-02, -1.495e-03, 1.668e-02, -3.615e-02, -1.591e-01, -2.520e-01, 6.259e-03, 6.579e-02, -1.644e-01, -5.543e-02, -5.906e-02, -9.854e-02, 8.397e-02, 8.320e-02, -8.373e-02), r);\n\tr = MulAdd(s2_2, M4(-3.516e-02, 1.545e-03, 3.351e-03, -3.178e-02, 1.191e-01, -9.185e-02, 2.679e-01, 3.951e-02, 1.385e-01, -8.283e-02, -4.421e-02, 6.449e-02, -1.340e-01, -8.220e-02, -1.149e-02, -3.884e-02), r);\n\tr = MulAdd(s2_3, M4(-9.423e-02, -5.891e-02, 2.833e-01, 1.868e-01, 5.074e-02, 1.226e-01, -1.307e-01, -2.509e-01, -1.022e-01, 2.094e-02, 1.032e-01, 9.668e-02, 1.411e-01, -6.280e-02, 1.329e-02, 8.977e-02), r);\n\tr = MulAdd(s2_4, M4(1.336e-01, -6.825e-02, 9.910e-02, 6.299e-03, -3.647e-01, -1.297e-01, -5.259e-02, -2.980e-01, 4.552e-01, 1.724e-01, 2.430e-01, -4.053e-01, 6.858e-02, 2.330e-01, -1.802e-01, -2.499e-01), r);\n\tr = MulAdd(s2_5, M4(2.282e-01, -5.794e-03, 6.329e-02, -1.208e-01, 2.021e-01, -2.298e-02, 1.093e-01, 6.128e-02, -5.259e-02, 1.390e-01, -1.171e-01, 1.162e-01, -1.808e-01, 2.376e-01, -3.242e-01, -4.872e-03), r);\n\tr = MulAdd(s2_6, M4(9.993e-03, 2.233e-01, 2.358e-01, 7.060e-02, -2.864e-02, -7.382e-02, -2.750e-01, 1.675e-01, -1.010e-01, 6.265e-02, 3.681e-02, -4.289e-02, -4.836e-03, 3.679e-02, -8.175e-02, -1.268e-02), r);\n\tr = MulAdd(s2_7, M4(-4.403e-01, 1.954e-01, 1.783e-01, -2.415e-03, 2.802e-02, -1.300e-01, -1.612e-01, -1.006e-01, 3.618e-02, -1.846e-01, 2.350e-02, 1.274e-01, -6.638e-02, 9.782e-02, -6.339e-02, 2.921e-02), r);\n\tr = MulAdd(s2_8, M4(-3.557e-02, 3.254e-02, -1.660e-02, -8.243e-02, 1.413e-01, 9.227e-02, -2.222e-02, 1.104e-01, 1.241e-01, 2.385e-01, -7.126e-02, 1.685e-01, -2.223e-02, 1.654e-01, -1.238e-01, 2.770e-02), r);\n\tr = MulAdd(s3_0, M4(3.766e-02, -1.169e-01, -1.768e-01, 1.940e-02, -1.264e-01, 6.004e-02, 7.806e-02, -5.408e-02, -5.266e-02, 1.241e-01, 5.232e-02, 5.166e-02, -1.548e-01, -2.214e-02, -1.899e-02, 3.862e-02), r);\n\tr = MulAdd(s3_1, M4(1.318e-01, -1.692e-02, -2.739e-02, 8.390e-02, -2.753e-01, 9.796e-02, -1.220e-01, 3.006e-02, 7.237e-02, -1.026e-01, -4.912e-02, -5.414e-02, 1.599e-02, 1.103e-02, 2.587e-01, -1.008e-01), r);\n\tr = MulAdd(s3_2, M4(-2.140e-02, -1.934e-02, 2.338e-02, 3.088e-02, 3.095e-02, -1.189e-01, 1.848e-01, -1.983e-02, 1.788e-02, -8.243e-02, -4.502e-03, -3.665e-02, 5.258e-02, -9.368e-02, 8.604e-02, -6.375e-02), r);\n\tr = MulAdd(s3_3, M4(3.559e-02, -4.663e-01, -1.866e-01, 9.592e-02, 1.656e-01, -2.107e-02, 1.781e-01, -1.324e-01, -1.047e-01, 4.386e-02, 3.693e-02, 6.419e-02, 3.781e-02, -1.108e-01, 3.440e-01, 1.116e-01), r);\n\tr = MulAdd(s3_4, M4(9.007e-02, -1.986e-01, -2.803e-02, 1.300e-01, -2.704e-02, 4.319e-02, 3.338e-02, -9.694e-02, 3.277e-01, -2.424e-02, 3.779e-01, -5.205e-01, 1.618e-01, 1.366e-01, 8.522e-02, -2.863e-01), r);\n\tr = MulAdd(s3_5, M4(1.929e-01, 3.554e-02, -8.457e-03, 6.138e-02, -1.672e-02, -1.217e-01, 1.997e-01, -8.514e-02, -6.749e-02, 5.450e-02, 7.215e-03, -7.587e-02, -3.529e-02, -1.021e-02, 5.863e-02, 2.202e-02), r);\n\tr = MulAdd(s3_6, M4(1.631e-01, -1.250e-01, 7.616e-03, 1.028e-01, -1.353e-01, -3.640e-01, -1.947e-01, -9.438e-02, -5.227e-02, -1.033e-01, -1.453e-02, -1.795e-02, 1.948e-01, -7.952e-02, 1.281e-01, -1.553e-02), r);\n\tr = MulAdd(s3_7, M4(-4.316e-01, 6.337e-02, -6.498e-02, 7.992e-04, 1.663e-01, -1.837e-01, 1.463e-01, -8.458e-02, -9.212e-02, -6.334e-02, -1.500e-01, 1.331e-01, -8.807e-02, 1.654e-01, 7.674e-03, -3.696e-03), r);\n\tr = MulAdd(s3_8, M4(8.960e-02, 1.206e-02, -1.317e-01, 1.738e-02, -1.972e-02, 7.104e-02, 9.549e-03, 3.120e-04, -5.724e-02, -1.955e-02, -9.568e-02, 1.298e-01, -1.468e-01, 9.693e-02, 1.818e-02, -3.696e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.384e-02, -2.911e-02, -8.125e-03, 2.809e-03 };\n\tr = MulAdd(s0_0, M4(-8.596e-02, -5.285e-02, 5.158e-02, 8.907e-02, 4.899e-02, -2.187e-02, -3.438e-02, -1.706e-01, -7.313e-02, -6.446e-03, -1.219e-01, 5.467e-02, 1.417e-02, 8.520e-02, 6.738e-02, -3.482e-02), r);\n\tr = MulAdd(s0_1, M4(3.106e-02, -2.627e-03, 1.389e-02, 3.474e-02, 3.618e-02, -1.077e-01, -4.858e-02, -8.000e-02, 1.019e-01, -9.408e-02, -1.601e-01, 1.003e-01, -7.328e-03, 1.167e-01, 1.367e-01, -1.538e-01), r);\n\tr = MulAdd(s0_2, M4(-1.290e-01, -7.244e-02, 4.047e-04, 5.332e-02, -5.096e-02, -6.015e-02, 4.490e-02, -4.033e-02, 1.587e-01, -6.248e-02, -2.208e-01, -5.304e-02, 5.434e-02, 1.597e-01, 3.131e-02, -3.238e-02), r);\n\tr = MulAdd(s0_3, M4(-3.771e-02, -8.350e-02, -8.219e-02, 2.164e-02, -5.266e-02, 1.337e-01, 5.790e-02, -3.579e-02, 1.371e-01, 7.213e-02, 2.308e-01, 1.958e-01, -9.141e-02, 1.143e-01, 7.658e-02, -4.488e-02), r);\n\tr = MulAdd(s0_4, M4(1.631e-02, -2.806e-02, 1.665e-01, -1.948e-02, -1.633e-01, -2.538e-03, -1.970e-01, 2.337e-02, 9.817e-02, 3.921e-01, -1.388e-01, 4.121e-02, 8.042e-03, -5.681e-02, 2.117e-01, -8.773e-02), r);\n\tr = MulAdd(s0_5, M4(-1.510e-01, -7.396e-02, 1.387e-01, 1.461e-01, -1.826e-01, -2.693e-02, 9.142e-02, 9.284e-02, -1.825e-01, -9.509e-02, 6.374e-02, -1.388e-01, -8.189e-02, 1.223e-01, -1.750e-02, 1.406e-01), r);\n\tr = MulAdd(s0_6, M4(1.135e-02, -9.048e-02, -1.223e-01, 2.888e-02, 1.880e-01, 1.797e-01, 4.345e-01, -8.939e-02, -1.525e-01, 5.877e-02, -9.220e-02, 6.612e-02, 2.258e-02, 1.177e-01, -8.183e-02, 8.373e-03), r);\n\tr = MulAdd(s0_7, M4(1.696e-01, 1.752e-01, -6.929e-02, 1.645e-01, 8.546e-02, 9.341e-02, 1.696e-01, -3.056e-02, -7.792e-02, 8.699e-02, 1.695e-01, -3.911e-03, -2.366e-01, 8.806e-02, -4.111e-01, -1.648e-02), r);\n\tr = MulAdd(s0_8, M4(5.684e-02, -8.478e-02, -1.300e-01, 9.553e-02, -1.272e-02, -9.817e-03, 5.397e-02, 8.448e-02, -1.665e-02, 1.940e-02, -1.479e-01, -1.231e-01, -1.558e-01, 4.587e-02, 9.477e-02, 1.733e-01), r);\n\tr = MulAdd(s1_0, M4(4.928e-02, 1.630e-01, 3.530e-02, -2.609e-01, 2.080e-02, 2.517e-02, -5.341e-02, 2.393e-02, 2.070e-01, -7.999e-02, -5.407e-02, 9.927e-02, 1.005e-01, -1.452e-01, -1.293e-01, 1.179e-03), r);\n\tr = MulAdd(s1_1, M4(4.045e-01, 1.635e-01, -7.885e-02, -2.496e-01, 8.646e-02, -9.838e-02, -6.499e-02, -5.604e-02, -1.479e-01, 8.245e-02, 2.084e-01, 3.130e-02, 3.350e-02, -1.592e-01, -3.301e-03, -1.571e-01), r);\n\tr = MulAdd(s1_2, M4(1.435e-01, -1.269e-01, 4.380e-02, -9.012e-02, 5.184e-02, 3.579e-02, -8.166e-02, -2.591e-02, 2.181e-01, -2.666e-01, -1.091e-01, 1.673e-01, 6.085e-02, -2.818e-02, 2.975e-02, -1.134e-01), r);\n\tr = MulAdd(s1_3, M4(4.309e-02, -3.624e-02, 3.632e-02, -1.492e-01, 1.492e-01, 1.318e-01, -3.694e-02, 2.850e-01, 2.685e-01, -6.430e-02, 1.423e-01, -1.073e-01, 7.645e-04, -1.715e-01, -2.463e-02, 6.346e-02), r);\n\tr = MulAdd(s1_4, M4(7.196e-01, -1.132e-01, -4.236e-02, -4.937e-01, 1.175e-01, 4.154e-02, -3.213e-01, 1.145e-02, -2.131e-01, 2.879e-02, -2.353e-01, 1.775e-01, 4.716e-02, 4.443e-02, -1.883e-03, 1.204e-01), r);\n\tr = MulAdd(s1_5, M4(4.435e-01, 3.854e-01, -1.692e-01, -1.702e-01, -6.404e-02, 1.060e-01, -2.896e-02, 2.275e-02, 9.162e-03, -2.673e-01, -1.698e-01, -1.770e-01, -1.354e-01, 9.096e-02, -1.099e-01, 3.785e-01), r);\n\tr = MulAdd(s1_6, M4(2.284e-01, 1.976e-02, -1.113e-01, -2.744e-01, 1.518e-01, 8.682e-02, 3.085e-01, 1.258e-01, -3.514e-02, 9.450e-02, -4.096e-02, -2.853e-02, -8.595e-03, -3.154e-01, -3.680e-02, 2.172e-01), r);\n\tr = MulAdd(s1_7, M4(1.785e-01, 1.978e-01, -1.906e-02, 2.771e-02, 1.501e-01, 2.575e-02, 2.389e-01, 3.010e-01, 1.457e-01, -4.462e-02, -2.300e-01, -1.614e-01, -2.747e-01, -7.497e-02, -4.463e-01, 2.659e-01), r);\n\tr = MulAdd(s1_8, M4(3.257e-01, 1.932e-01, -5.289e-03, 3.878e-03, -1.571e-01, 4.645e-03, 7.888e-03, 1.243e-01, 5.842e-02, -2.256e-02, -6.602e-03, -3.731e-02, -7.605e-02, -3.408e-01, -1.688e-01, -5.470e-03), r);\n\tr = MulAdd(s2_0, M4(-3.495e-02, -1.928e-02, 4.994e-02, 1.395e-01, -1.112e-01, 1.772e-01, -1.634e-01, -3.699e-02, 1.127e-01, 6.082e-03, -5.189e-02, -4.303e-02, -7.775e-02, -6.178e-02, -7.501e-02, 1.320e-01), r);\n\tr = MulAdd(s2_1, M4(-4.850e-02, -1.289e-01, -9.325e-02, -1.643e-02, 2.239e-01, -9.011e-02, -2.566e-02, 5.301e-02, 1.855e-01, -9.348e-02, -1.585e-02, -2.001e-01, -5.371e-02, -5.272e-02, 1.356e-01, 1.703e-01), r);\n\tr = MulAdd(s2_2, M4(1.056e-01, -6.602e-02, -3.005e-02, 9.795e-03, 5.049e-02, -9.108e-02, 3.054e-02, -1.752e-01, -1.561e-01, 3.075e-01, 8.300e-02, -8.430e-02, 1.265e-02, -2.776e-01, -5.878e-02, 1.144e-02), r);\n\tr = MulAdd(s2_3, M4(1.382e-01, -2.842e-01, -2.699e-02, -2.153e-01, 2.187e-01, 2.651e-01, 1.307e-01, 1.926e-01, 5.445e-02, -2.797e-01, -8.728e-02, 7.571e-02, 6.814e-02, -1.233e-01, -3.357e-02, 1.947e-01), r);\n\tr = MulAdd(s2_4, M4(-1.063e-02, 1.618e-01, -1.176e-01, 8.081e-02, -4.808e-02, 2.455e-02, -4.511e-02, -1.988e-01, 7.006e-02, -5.232e-01, 1.190e-01, 1.209e-01, 1.514e-03, -3.750e-02, -3.545e-01, -7.031e-02), r);\n\tr = MulAdd(s2_5, M4(2.690e-01, 6.288e-02, -8.282e-02, -5.746e-02, 2.216e-02, 1.134e-01, -2.658e-01, 1.436e-01, -2.117e-01, 4.009e-03, -8.882e-02, -1.534e-02, 7.304e-02, -1.343e-01, 1.021e-01, 1.895e-01), r);\n\tr = MulAdd(s2_6, M4(1.037e-03, -1.050e-01, -2.224e-01, -2.244e-01, 4.082e-02, 2.096e-01, 2.538e-01, 1.739e-01, -1.823e-02, 2.410e-02, 2.399e-01, -2.812e-01, 1.423e-01, -9.570e-02, -5.401e-02, -1.056e-02), r);\n\tr = MulAdd(s2_7, M4(1.985e-01, -1.232e-02, -2.831e-01, -9.744e-02, -2.427e-01, -1.069e-01, -9.460e-02, 1.293e-01, -9.502e-02, -2.604e-01, 1.861e-01, -1.988e-01, -5.062e-02, -2.880e-02, 2.069e-01, 4.192e-02), r);\n\tr = MulAdd(s2_8, M4(1.906e-01, -2.576e-02, -1.644e-01, -8.586e-02, -1.002e-01, 1.869e-02, 8.363e-02, -1.062e-01, -3.330e-01, 5.037e-02, 1.923e-01, -6.374e-02, -2.618e-02, -3.867e-02, 2.036e-01, 1.382e-01), r);\n\tr = MulAdd(s3_0, M4(-1.223e-01, 4.404e-02, 7.597e-02, 1.037e-01, 5.300e-02, -3.714e-01, 8.780e-02, 1.064e-01, 4.379e-02, 5.496e-02, -5.741e-02, -8.834e-02, 4.607e-02, 2.440e-01, -3.621e-02, -1.449e-01), r);\n\tr = MulAdd(s3_1, M4(1.114e-02, -3.579e-03, -1.118e-01, -7.019e-02, 1.253e-01, 1.410e-01, 1.507e-01, 1.204e-01, 4.912e-02, -2.110e-01, -1.393e-01, 1.398e-02, -3.292e-02, 2.104e-01, 1.470e-01, -4.723e-01), r);\n\tr = MulAdd(s3_2, M4(-7.613e-02, -3.437e-02, 3.357e-02, 2.053e-02, 2.749e-02, -1.624e-02, 1.085e-01, 4.885e-02, -8.099e-02, -1.709e-01, 1.212e-01, -1.369e-01, 8.667e-03, -2.034e-01, 1.859e-02, -2.609e-01), r);\n\tr = MulAdd(s3_3, M4(-2.751e-01, -6.155e-02, 3.194e-02, 2.257e-01, 2.247e-01, -1.563e-01, -2.388e-01, 4.747e-01, 8.550e-02, -2.046e-01, 5.261e-02, 1.302e-02, -2.718e-01, 8.046e-02, 6.971e-03, -4.401e-02), r);\n\tr = MulAdd(s3_4, M4(-2.097e-01, 4.087e-02, 1.145e-01, 3.885e-01, -2.739e-01, 4.656e-01, 1.839e-01, -4.552e-02, 1.422e-01, -8.299e-02, 1.631e-01, 8.810e-02, -2.652e-01, 3.779e-01, -1.959e-01, -7.052e-01), r);\n\tr = MulAdd(s3_5, M4(2.480e-03, 2.248e-01, 9.405e-02, 1.128e-01, 1.134e-01, -7.725e-02, -7.705e-02, 4.144e-02, 1.185e-02, -1.614e-01, -6.596e-02, 1.191e-01, 1.946e-01, 6.701e-02, 4.365e-02, -2.465e-01), r);\n\tr = MulAdd(s3_6, M4(-2.183e-01, 6.265e-03, -2.004e-02, 1.360e-01, 9.385e-02, -6.143e-03, -3.924e-02, 2.857e-01, -1.091e-01, 5.286e-02, -2.204e-03, -4.854e-02, -2.588e-01, -8.500e-02, -7.099e-02, -3.542e-02), r);\n\tr = MulAdd(s3_7, M4(-2.584e-01, -1.560e-01, 3.706e-02, 8.145e-03, -4.860e-02, -6.664e-02, -2.890e-01, 9.694e-02, 6.597e-02, -1.415e-01, -9.524e-02, 4.655e-03, -1.705e-01, 1.622e-01, 2.766e-01, -1.033e-01), r);\n\tr = MulAdd(s3_8, M4(1.214e-02, 6.487e-02, -1.258e-03, 1.522e-01, 8.112e-02, -1.089e-02, -2.167e-02, -1.711e-01, -1.753e-01, -7.256e-02, 8.314e-02, 6.349e-02, 1.489e-01, 4.952e-02, 1.646e-01, -7.355e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -3.137e-02, 6.441e-03, -1.512e-02, 2.709e-02 };\n\tr = MulAdd(s0_0, M4(-9.839e-02, 3.062e-02, -3.104e-02, 1.230e-01, -3.336e-02, -6.990e-02, -5.725e-02, -1.051e-01, 5.154e-02, -1.304e-01, -2.518e-02, 3.975e-03, -2.458e-02, -4.391e-02, -1.022e-01, 1.249e-01), r);\n\tr = MulAdd(s0_1, M4(1.530e-01, 1.379e-01, -4.847e-02, -8.142e-02, -1.899e-01, -9.819e-03, -2.943e-02, 8.787e-02, 8.270e-02, -7.839e-04, 4.236e-03, 2.756e-03, 1.612e-01, -1.871e-01, -1.973e-01, -8.765e-02), r);\n\tr = MulAdd(s0_2, M4(1.230e-01, 7.002e-02, 2.676e-02, -2.607e-01, 3.729e-02, -1.075e-01, -5.825e-02, 9.552e-02, -6.701e-02, 5.642e-02, 5.425e-02, -1.487e-01, 6.427e-02, -1.606e-01, -2.290e-01, 2.280e-01), r);\n\tr = MulAdd(s0_3, M4(-1.096e-01, 4.115e-02, -5.260e-02, 9.679e-02, 1.028e-01, -1.253e-01, -1.221e-01, -1.339e-02, 1.119e-01, -8.725e-02, 1.090e-01, -8.990e-02, 1.657e-01, -5.536e-02, 7.055e-02, -6.021e-03), r);\n\tr = MulAdd(s0_4, M4(3.182e-01, -1.503e-01, -9.298e-02, 9.546e-02, 2.257e-01, -1.978e-01, -1.203e-01, -5.362e-02, -2.116e-02, -3.685e-02, 6.188e-02, 7.871e-02, 6.547e-01, 3.793e-01, -9.293e-03, -5.081e-01), r);\n\tr = MulAdd(s0_5, M4(6.746e-02, -3.872e-02, -8.004e-02, 4.643e-02, -1.157e-01, -1.149e-01, -1.323e-01, -1.319e-02, -3.194e-02, -1.266e-02, -4.837e-02, -6.710e-02, 1.123e-01, -1.855e-01, -9.259e-03, -1.861e-01), r);\n\tr = MulAdd(s0_6, M4(-7.725e-02, -4.151e-02, -7.387e-02, 1.089e-01, -5.642e-02, 7.030e-03, 7.847e-02, 1.234e-01, 9.461e-03, -4.967e-02, 1.502e-02, 3.836e-02, 1.171e-02, 3.758e-02, 3.336e-02, 5.168e-02), r);\n\tr = MulAdd(s0_7, M4(2.541e-02, 1.428e-01, 2.426e-03, 2.451e-02, -1.436e-01, 5.267e-02, 2.402e-02, -4.748e-02, 2.185e-02, -5.397e-02, -4.221e-02, -4.758e-02, 1.504e-01, 1.818e-01, -3.334e-04, 1.985e-01), r);\n\tr = MulAdd(s0_8, M4(5.651e-02, 1.104e-01, 1.186e-01, -4.816e-02, -1.772e-03, -3.797e-02, -1.169e-01, 9.888e-02, -7.066e-02, -2.928e-02, 1.300e-01, -9.514e-02, 8.911e-02, 1.399e-01, 8.996e-02, 7.361e-02), r);\n\tr = MulAdd(s1_0, M4(-4.999e-02, 7.076e-02, 1.754e-01, 2.998e-01, -5.965e-02, 8.642e-02, 6.403e-02, 1.597e-02, -1.367e-02, -1.751e-01, -1.432e-01, -1.337e-01, -1.356e-01, -1.147e-02, 4.994e-02, 1.355e-01), r);\n\tr = MulAdd(s1_1, M4(-1.462e-01, 2.612e-01, 1.009e-01, 6.179e-02, 1.171e-01, -2.310e-01, -1.324e-01, -1.989e-01, -7.842e-02, 2.017e-01, -2.558e-02, 1.725e-01, -1.879e-01, 2.705e-01, 9.276e-02, 2.009e-01), r);\n\tr = MulAdd(s1_2, M4(-5.937e-02, 1.314e-02, 1.771e-01, -8.971e-02, 9.120e-02, -8.247e-03, 6.149e-02, -1.310e-02, 1.856e-01, -8.410e-02, 3.653e-02, 1.994e-02, 1.377e-02, -2.608e-02, 2.918e-02, 1.410e-01), r);\n\tr = MulAdd(s1_3, M4(-1.270e-01, 2.306e-01, 1.223e-01, 5.712e-02, 6.862e-02, -1.441e-02, -1.116e-02, -1.195e-01, 4.816e-02, -9.698e-03, -1.642e-01, 2.214e-01, -1.748e-01, -1.574e-01, 7.939e-02, 4.879e-02), r);\n\tr = MulAdd(s1_4, M4(-6.803e-02, -2.231e-01, -9.303e-02, 3.363e-01, 4.699e-01, -6.197e-01, -1.678e-01, 1.660e-02, -3.526e-01, -2.941e-01, 4.667e-01, -3.648e-01, -5.144e-01, 7.678e-01, 4.839e-01, -5.598e-01), r);\n\tr = MulAdd(s1_5, M4(-7.123e-02, -2.319e-01, -3.813e-02, 1.547e-01, 2.632e-01, -2.001e-02, 4.992e-02, -1.581e-01, -4.053e-02, -2.970e-04, 5.472e-02, -6.788e-02, -2.869e-01, -9.887e-02, 4.475e-02, -1.027e-01), r);\n\tr = MulAdd(s1_6, M4(7.336e-02, 1.784e-02, -1.559e-01, 7.106e-02, 9.975e-02, -6.405e-03, 7.519e-02, 7.405e-02, -9.000e-02, 8.590e-02, -2.557e-01, -1.597e-02, -4.081e-02, 7.353e-02, 3.324e-02, -5.861e-02), r);\n\tr = MulAdd(s1_7, M4(2.380e-02, -1.385e-01, -1.038e-01, 2.752e-02, -4.866e-02, 6.411e-02, 3.531e-01, -1.330e-01, 2.261e-01, -7.266e-02, -5.772e-02, -6.657e-02, -1.588e-01, 1.268e-01, 1.618e-02, 9.695e-02), r);\n\tr = MulAdd(s1_8, M4(1.300e-01, -1.683e-01, -1.481e-02, -1.442e-02, 2.942e-02, -4.528e-03, 3.715e-01, -2.056e-01, -1.070e-01, 7.589e-02, -1.326e-01, 9.583e-02, -1.052e-01, 4.535e-02, -5.072e-02, 1.023e-01), r);\n\tr = MulAdd(s2_0, M4(4.804e-02, 4.605e-02, 1.479e-01, 2.794e-02, 1.518e-02, 1.881e-02, 5.332e-02, 6.881e-02, -9.226e-02, -1.212e-02, 5.999e-03, 4.409e-02, -2.364e-01, -4.576e-02, 4.537e-02, 1.615e-01), r);\n\tr = MulAdd(s2_1, M4(-1.719e-02, 2.187e-01, 1.772e-01, 1.933e-02, -3.135e-02, 4.963e-02, 1.303e-02, -2.623e-02, -1.273e-01, 1.462e-02, 7.118e-02, -1.498e-01, 1.978e-01, 7.777e-02, -1.052e-01, 1.954e-01), r);\n\tr = MulAdd(s2_2, M4(-2.936e-02, -1.679e-02, 1.548e-01, 2.521e-02, 4.974e-02, 5.132e-02, 1.145e-02, 4.237e-02, -2.103e-01, 3.828e-03, -3.888e-02, 1.429e-01, -2.964e-02, -1.423e-02, -2.417e-01, 3.932e-01), r);\n\tr = MulAdd(s2_3, M4(-1.881e-01, -2.086e-02, 1.815e-04, 1.164e-01, -7.054e-02, 8.297e-02, 7.999e-02, 3.579e-02, -1.240e-02, 5.415e-02, -4.885e-02, -7.243e-02, -7.780e-02, -8.180e-02, 1.529e-01, 1.616e-01), r);\n\tr = MulAdd(s2_4, M4(-1.410e-01, 9.917e-02, 2.589e-01, -2.888e-01, -1.248e-01, 2.510e-01, 3.366e-02, 1.437e-01, 3.793e-01, 5.004e-02, 3.701e-01, 3.111e-01, -3.195e-01, -3.731e-02, 1.132e-01, 1.961e-01), r);\n\tr = MulAdd(s2_5, M4(-8.966e-02, -5.875e-02, -1.135e-01, 8.984e-02, 5.129e-02, 7.536e-02, 2.763e-01, 1.203e-02, -2.020e-01, 1.617e-01, -1.427e-02, 6.661e-02, -1.930e-01, -7.980e-03, 8.300e-02, 1.697e-01), r);\n\tr = MulAdd(s2_6, M4(5.726e-02, -1.777e-02, -4.372e-02, 3.170e-03, 2.430e-02, -1.211e-02, -4.311e-02, -1.215e-01, -1.066e-01, 1.810e-02, 1.013e-01, -2.315e-02, -3.001e-01, -8.701e-02, -1.455e-01, 4.155e-02), r);\n\tr = MulAdd(s2_7, M4(1.431e-01, 2.344e-03, 1.489e-02, 4.575e-02, 7.550e-02, 3.571e-02, -2.517e-01, -5.387e-03, 4.699e-02, 5.390e-02, 2.202e-01, -7.897e-02, 6.326e-02, -1.588e-01, -1.852e-01, -3.037e-02), r);\n\tr = MulAdd(s2_8, M4(-3.479e-02, -8.214e-02, 6.944e-02, 5.269e-02, -7.719e-03, -7.718e-02, -8.393e-02, -8.959e-02, -2.111e-01, 1.286e-01, 1.948e-01, -8.095e-02, -2.335e-02, 9.535e-02, -1.144e-01, 3.688e-02), r);\n\tr = MulAdd(s3_0, M4(8.765e-02, -6.740e-02, 1.200e-01, 6.992e-02, 1.884e-02, -1.592e-02, -9.304e-02, 1.706e-01, 6.023e-02, 1.494e-01, -1.165e-01, 3.848e-02, -2.808e-02, 4.820e-02, -4.830e-02, 9.253e-02), r);\n\tr = MulAdd(s3_1, M4(-1.087e-01, 2.039e-01, -8.116e-02, 1.500e-01, 1.942e-01, -2.291e-02, -1.321e-02, 1.630e-02, 2.216e-01, 3.536e-02, -2.321e-01, 1.143e-01, 2.093e-01, -6.126e-02, -3.792e-02, 6.886e-02), r);\n\tr = MulAdd(s3_2, M4(1.225e-01, -6.231e-02, -1.999e-01, 9.921e-02, -4.257e-02, -2.975e-02, -4.073e-02, 7.069e-02, -5.033e-02, 2.268e-03, -1.908e-01, 9.678e-02, -4.540e-02, 4.195e-02, -1.990e-02, -9.002e-02), r);\n\tr = MulAdd(s3_3, M4(8.620e-02, 1.856e-02, 1.201e-01, 1.343e-01, 6.518e-03, 1.274e-01, 1.006e-01, -4.803e-02, 2.593e-02, 1.861e-01, -2.316e-01, -1.882e-01, 2.021e-02, -5.658e-02, -1.339e-02, -6.240e-02), r);\n\tr = MulAdd(s3_4, M4(3.285e-01, -2.068e-02, 4.279e-01, -7.153e-02, 1.368e-02, 2.029e-01, 3.056e-01, -2.398e-02, -2.007e-02, -6.963e-02, 4.423e-01, 2.373e-01, -3.829e-03, -8.114e-02, 1.907e-01, 6.471e-02), r);\n\tr = MulAdd(s3_5, M4(6.460e-02, -2.118e-01, -1.407e-01, 8.041e-02, 5.512e-02, 1.740e-01, 2.092e-01, 1.569e-02, 2.071e-02, -5.675e-02, -9.011e-02, 5.301e-02, 9.519e-02, -2.758e-02, -3.116e-02, -2.141e-02), r);\n\tr = MulAdd(s3_6, M4(-2.575e-02, 1.869e-02, 7.810e-02, -7.650e-03, 2.013e-01, 2.214e-02, -8.345e-02, 2.879e-02, 1.492e-01, -4.496e-02, -1.297e-01, 2.238e-03, 7.626e-02, -7.449e-02, -5.789e-02, 5.411e-02), r);\n\tr = MulAdd(s3_7, M4(5.731e-02, 8.709e-02, 8.776e-02, 1.547e-01, 9.076e-02, -1.621e-01, -3.538e-01, -3.413e-02, 1.609e-01, -6.938e-03, -5.128e-02, 7.688e-02, -5.171e-03, 9.220e-02, 2.424e-02, 1.621e-02), r);\n\tr = MulAdd(s3_8, M4(6.538e-02, -3.415e-02, 5.399e-02, -8.863e-02, -7.563e-02, -1.511e-01, -2.978e-01, 7.569e-02, -1.429e-01, 3.110e-02, -2.972e-02, -8.001e-03, -8.429e-02, -1.092e-02, -4.655e-02, 3.067e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 1.952e-02, -1.174e-02, -1.100e-02, -1.307e-02 };\n\tr = MulAdd(s0_0, M4(-3.334e-02, -7.793e-02, 7.471e-02, 4.792e-02, -9.991e-03, 1.358e-02, 7.063e-02, -7.185e-02, 1.122e-01, 1.016e-01, 1.666e-01, -4.230e-02, -2.916e-03, 1.093e-01, 3.944e-02, -6.470e-02), r);\n\tr = MulAdd(s0_1, M4(-3.424e-02, -5.060e-03, -9.649e-03, 1.311e-01, 9.390e-02, -6.332e-03, 8.698e-02, -1.949e-03, 5.118e-02, 4.049e-02, 7.113e-02, 1.951e-01, 1.856e-01, 2.065e-01, -7.642e-02, -1.852e-02), r);\n\tr = MulAdd(s0_2, M4(-6.507e-03, -1.195e-02, -1.476e-01, -4.432e-02, 1.839e-02, 2.119e-02, -3.374e-03, -7.739e-03, -4.710e-03, -6.300e-02, -3.058e-02, -1.966e-03, -4.888e-03, 6.550e-02, 3.826e-02, 4.369e-02), r);\n\tr = MulAdd(s0_3, M4(-2.796e-03, 6.707e-02, 1.750e-01, 5.898e-02, -6.279e-02, 1.146e-01, 4.500e-02, -1.178e-01, 1.591e-02, 4.649e-03, 1.249e-01, 1.531e-02, 2.940e-02, -3.842e-02, 1.162e-02, 8.735e-02), r);\n\tr = MulAdd(s0_4, M4(1.997e-01, 1.499e-01, -2.234e-01, 2.460e-01, -6.721e-02, 2.135e-01, -1.372e-01, -1.864e-01, 1.432e-01, 1.012e-01, -3.441e-02, 7.842e-02, -2.026e-01, 1.294e-01, 3.063e-01, 2.969e-01), r);\n\tr = MulAdd(s0_5, M4(1.302e-02, -1.252e-01, -1.174e-01, 2.114e-01, -5.837e-02, -1.377e-01, 4.956e-03, -1.486e-01, -7.287e-03, -1.002e-01, 1.431e-01, -8.579e-02, -2.642e-02, -9.106e-02, -5.609e-02, 3.664e-02), r);\n\tr = MulAdd(s0_6, M4(-3.524e-02, 6.427e-02, 5.395e-02, -6.112e-02, -3.246e-02, -3.689e-02, 5.133e-02, 6.382e-02, -7.140e-02, 8.407e-02, -1.051e-02, 1.865e-02, -1.559e-02, 8.857e-02, -5.051e-02, 1.129e-03), r);\n\tr = MulAdd(s0_7, M4(-7.399e-02, -1.028e-01, -1.066e-01, 1.430e-01, -1.403e-01, 9.422e-02, -8.995e-02, -1.358e-02, -8.900e-02, 1.519e-01, -7.974e-02, -1.915e-01, 2.726e-02, 2.748e-01, -2.521e-02, 9.171e-02), r);\n\tr = MulAdd(s0_8, M4(4.422e-02, -1.013e-01, -9.089e-02, 3.341e-02, -3.750e-02, 1.762e-01, 8.286e-02, -4.945e-02, -1.285e-01, 1.504e-02, -4.042e-02, -7.892e-02, 3.263e-02, -2.562e-02, -1.577e-01, 2.407e-02), r);\n\tr = MulAdd(s1_0, M4(-9.014e-02, 9.935e-03, 4.158e-02, 6.269e-02, -3.854e-02, -6.123e-02, 5.101e-02, -1.229e-01, -5.554e-02, -4.848e-02, -5.602e-02, -2.115e-01, -5.692e-02, 9.588e-03, 8.485e-02, 7.810e-02), r);\n\tr = MulAdd(s1_1, M4(-5.449e-02, -5.076e-02, 7.205e-02, -5.263e-02, -1.293e-01, 1.127e-01, -1.122e-01, -6.078e-02, 8.158e-02, -2.493e-01, 4.842e-02, 1.959e-01, 5.976e-02, -1.003e-01, -6.969e-02, 1.654e-01), r);\n\tr = MulAdd(s1_2, M4(-2.894e-02, 1.048e-01, 3.925e-03, -1.321e-01, -4.509e-02, -1.643e-02, -1.334e-01, 9.845e-02, -1.127e-01, -1.049e-01, 1.350e-02, -1.013e-02, -1.599e-01, -6.552e-02, 3.246e-02, 3.401e-02), r);\n\tr = MulAdd(s1_3, M4(1.324e-01, -7.379e-02, 6.628e-02, -1.243e-01, -9.905e-02, 1.141e-01, 5.375e-02, -1.293e-01, -2.330e-02, -3.277e-01, 5.023e-02, -1.837e-01, 6.815e-02, -4.447e-02, 1.480e-01, -2.077e-03), r);\n\tr = MulAdd(s1_4, M4(3.168e-01, 3.120e-01, 4.723e-02, -1.814e-01, -4.271e-01, 3.554e-01, -2.607e-01, 3.691e-02, 1.565e-01, -4.785e-01, 1.167e-01, -4.891e-02, -1.643e-01, -2.565e-01, 6.425e-01, -9.561e-02), r);\n\tr = MulAdd(s1_5, M4(-4.394e-02, 1.831e-01, 2.602e-02, 8.348e-02, -4.285e-01, -2.126e-01, -2.658e-01, 1.340e-01, -6.773e-02, -1.315e-01, 9.904e-02, -1.672e-01, 1.995e-01, 1.307e-01, 1.985e-01, -8.368e-02), r);\n\tr = MulAdd(s1_6, M4(-8.468e-03, 2.030e-01, -8.770e-04, -1.421e-01, -5.327e-02, 1.042e-01, 7.595e-02, -7.467e-02, -2.326e-03, -1.496e-01, -3.598e-02, 1.430e-02, 6.833e-02, 1.257e-01, 5.333e-03, 1.382e-01), r);\n\tr = MulAdd(s1_7, M4(-7.236e-02, 2.202e-01, 7.527e-03, -1.157e-01, -4.825e-01, -1.938e-01, -2.971e-01, -7.394e-02, -3.056e-02, 6.438e-02, -8.167e-02, -1.749e-01, 7.804e-02, 3.541e-01, 1.631e-01, 1.105e-01), r);\n\tr = MulAdd(s1_8, M4(-3.117e-02, 1.456e-01, 1.217e-02, -9.099e-02, -2.173e-01, -5.803e-02, -1.068e-01, -6.206e-02, -1.187e-04, 9.938e-02, 4.721e-02, -3.500e-02, -7.154e-02, -4.535e-02, -1.900e-02, 6.525e-03), r);\n\tr = MulAdd(s2_0, M4(3.437e-02, 3.957e-03, -1.536e-02, 2.984e-02, 8.057e-03, 1.446e-02, -2.851e-02, -1.680e-02, 9.630e-04, -3.550e-02, 4.249e-02, -5.379e-02, -2.274e-02, 3.657e-02, 6.309e-02, -1.412e-01), r);\n\tr = MulAdd(s2_1, M4(-4.765e-02, -7.905e-02, -7.251e-02, -8.459e-02, -1.866e-02, 4.668e-02, -2.496e-02, -3.761e-02, 6.520e-02, 9.971e-02, -1.199e-02, -3.565e-02, -2.936e-02, -1.288e-02, -8.909e-03, 1.604e-01), r);\n\tr = MulAdd(s2_2, M4(-2.684e-02, 3.571e-02, 2.920e-02, -1.400e-01, -8.129e-03, 2.701e-02, -1.237e-02, 6.292e-02, 3.752e-02, -3.476e-02, 7.166e-02, 2.922e-02, 2.153e-02, -2.079e-02, 2.298e-01, 2.646e-01), r);\n\tr = MulAdd(s2_3, M4(5.891e-02, -3.401e-02, 1.310e-01, 1.284e-01, -3.706e-02, -6.929e-03, 5.705e-02, 2.617e-02, 1.908e-03, 1.155e-01, 4.786e-02, 1.471e-01, -8.026e-02, 6.384e-02, 3.177e-01, -6.423e-02), r);\n\tr = MulAdd(s2_4, M4(1.941e-01, -1.938e-04, -4.664e-02, 3.134e-01, -7.269e-02, -2.396e-01, -5.068e-02, -3.354e-01, 2.428e-01, 2.566e-01, -3.293e-01, 3.857e-01, -1.129e-02, 1.540e-01, -9.700e-02, -1.510e-01), r);\n\tr = MulAdd(s2_5, M4(4.818e-02, 1.620e-01, 1.519e-01, 2.711e-03, -1.559e-02, 1.144e-01, 7.668e-03, -1.534e-01, 3.862e-03, -4.583e-02, 5.226e-02, -6.465e-02, 6.788e-02, 5.557e-02, 6.880e-02, 9.542e-02), r);\n\tr = MulAdd(s2_6, M4(1.471e-01, 3.141e-02, 1.711e-02, 3.585e-02, 7.758e-02, 3.487e-03, -4.199e-02, 1.119e-02, -9.641e-02, 7.175e-02, -6.454e-03, -8.769e-02, 4.452e-02, 3.013e-02, 2.107e-01, 1.447e-02), r);\n\tr = MulAdd(s2_7, M4(1.941e-01, -1.489e-01, 1.093e-01, 1.092e-02, 1.309e-01, 1.173e-01, 3.414e-02, -1.350e-01, -2.374e-01, -1.292e-01, -1.259e-01, 1.377e-02, -5.705e-02, 1.641e-01, -3.345e-02, -1.443e-01), r);\n\tr = MulAdd(s2_8, M4(5.172e-02, 8.306e-03, 6.669e-02, -2.207e-02, -2.737e-02, 7.314e-02, -5.039e-02, -6.565e-02, -1.124e-01, -1.920e-01, -8.356e-02, 2.342e-02, 8.945e-03, 2.739e-02, 8.816e-03, 7.638e-02), r);\n\tr = MulAdd(s3_0, M4(-2.968e-02, 1.037e-01, -2.673e-02, 1.869e-02, 9.621e-02, -5.237e-02, 1.487e-03, -9.423e-02, 3.269e-02, -5.264e-02, -4.862e-02, 2.446e-02, 6.554e-02, -8.896e-02, 2.104e-02, -1.165e-01), r);\n\tr = MulAdd(s3_1, M4(-9.417e-03, 6.345e-02, -7.850e-03, 2.754e-01, -2.751e-02, -1.201e-01, -5.333e-02, -1.217e-01, 8.778e-02, 1.394e-01, -1.787e-01, 1.017e-01, -3.779e-02, 6.921e-02, 2.664e-02, 1.665e-01), r);\n\tr = MulAdd(s3_2, M4(3.141e-02, 7.360e-02, 9.011e-02, -1.109e-02, 1.985e-02, -4.239e-02, 1.468e-01, -2.676e-02, 1.225e-01, -5.115e-02, 3.496e-02, 8.530e-02, 1.594e-02, -2.731e-02, 3.492e-02, -4.212e-02), r);\n\tr = MulAdd(s3_3, M4(7.578e-02, 3.966e-03, -7.774e-03, 4.263e-02, 3.758e-02, -1.590e-01, 1.144e-01, -1.083e-01, 9.865e-02, 3.237e-03, -1.194e-01, 3.048e-02, -1.231e-01, 5.687e-02, 3.601e-02, -2.234e-01), r);\n\tr = MulAdd(s3_4, M4(3.291e-01, 2.283e-01, -2.254e-01, 1.114e-01, -3.019e-01, -1.677e-01, -1.735e-01, -5.636e-01, 4.295e-01, 1.206e-01, -1.169e-01, -9.182e-02, 2.546e-01, 2.820e-01, -9.122e-02, 1.703e-01), r);\n\tr = MulAdd(s3_5, M4(1.178e-01, 1.875e-01, 7.948e-02, -1.907e-02, -9.888e-02, 8.592e-02, 8.759e-02, -2.194e-01, -4.479e-02, 1.983e-02, 1.738e-02, -1.237e-01, -9.644e-02, -6.784e-02, -1.594e-02, 5.128e-02), r);\n\tr = MulAdd(s3_6, M4(7.520e-02, 6.732e-02, 1.898e-02, 3.384e-02, 1.156e-01, 7.703e-02, -9.079e-02, 2.659e-02, 2.860e-02, 2.034e-01, -4.492e-02, -5.377e-02, 4.771e-02, 1.099e-01, 2.032e-02, 4.955e-02), r);\n\tr = MulAdd(s3_7, M4(-1.573e-02, 1.987e-01, -9.155e-02, 1.445e-01, 2.224e-01, 7.036e-02, 1.126e-01, -2.900e-01, -3.571e-02, 6.868e-02, -5.302e-02, -2.629e-02, -2.798e-01, 1.832e-01, -1.850e-01, -8.079e-02), r);\n\tr = MulAdd(s3_8, M4(-1.843e-02, -2.045e-02, -2.602e-02, -6.202e-02, 1.303e-01, 1.797e-01, 1.169e-01, -2.712e-02, -5.147e-02, -5.439e-02, 2.103e-02, -6.035e-02, 4.517e-02, 3.473e-02, 6.015e-02, -9.014e-02), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 6\n//!DESC conv5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 1.103e-02, -1.627e-02, -1.286e-02, -1.415e-02 };\n\tr = MulAdd(s0_0, M4(-6.394e-02, -8.671e-02, 1.570e-02, -4.415e-02, 1.044e-01, 1.031e-01, 2.257e-02, -1.991e-02, -6.187e-02, 6.388e-02, 9.901e-02, 1.943e-02, 3.702e-02, 5.943e-03, 1.052e-02, 5.888e-02), r);\n\tr = MulAdd(s0_1, M4(8.377e-02, 1.451e-01, 1.580e-01, 3.663e-02, 1.333e-01, 3.462e-02, 2.649e-02, 7.588e-02, 2.175e-02, 1.744e-01, 1.048e-01, -1.644e-01, -5.844e-02, 1.648e-02, 1.306e-01, -5.721e-02), r);\n\tr = MulAdd(s0_2, M4(-7.420e-02, 5.839e-02, -2.164e-02, 2.832e-03, 1.776e-02, -1.732e-01, 1.505e-02, -1.082e-02, -1.647e-02, 3.072e-01, 1.187e-01, -1.273e-02, -9.205e-02, 1.119e-01, -2.918e-02, 9.009e-02), r);\n\tr = MulAdd(s0_3, M4(-4.099e-03, -5.330e-02, -6.372e-02, -4.979e-02, -5.943e-02, -3.211e-02, -1.558e-01, 1.997e-01, -5.598e-02, -1.344e-02, 8.655e-02, 1.490e-01, -3.303e-02, -3.863e-02, 1.987e-03, -3.842e-02), r);\n\tr = MulAdd(s0_4, M4(9.400e-02, 1.535e-01, 8.863e-02, 1.286e-01, 4.315e-01, -1.199e-01, 1.476e-01, 2.280e-01, -3.763e-02, 1.189e-01, 2.648e-01, 1.310e-01, -2.201e-01, -6.282e-02, 2.480e-01, 3.236e-02), r);\n\tr = MulAdd(s0_5, M4(3.101e-02, -7.681e-02, -6.753e-02, 3.084e-02, 8.940e-02, -1.872e-01, -2.982e-02, -8.335e-02, 7.990e-02, 1.128e-01, 2.703e-01, 2.021e-01, -9.396e-02, 4.201e-02, 6.420e-03, -4.602e-02), r);\n\tr = MulAdd(s0_6, M4(4.940e-02, -6.328e-03, -1.384e-02, -5.572e-02, 3.489e-02, -3.705e-02, 8.067e-02, -4.078e-02, -7.071e-03, 2.446e-02, 1.633e-02, -1.022e-02, -4.371e-02, 2.045e-02, 5.237e-02, -1.685e-02), r);\n\tr = MulAdd(s0_7, M4(2.613e-02, 3.379e-02, -5.088e-02, 6.559e-02, -7.908e-03, -7.828e-02, -1.304e-02, -3.928e-02, 3.253e-02, -8.783e-02, 7.669e-03, -1.617e-01, 2.507e-02, 1.387e-01, 1.676e-01, 6.068e-02), r);\n\tr = MulAdd(s0_8, M4(-1.872e-02, 6.736e-03, -2.342e-02, 3.332e-03, 1.419e-02, -3.932e-02, -8.530e-02, -5.934e-02, 8.273e-03, 8.759e-03, 6.867e-02, -3.344e-02, 8.183e-02, 1.472e-01, 3.134e-02, 5.993e-02), r);\n\tr = MulAdd(s1_0, M4(6.022e-02, -1.966e-02, -1.612e-02, -6.922e-02, 7.477e-02, 1.176e-01, 1.365e-03, 8.882e-02, -4.594e-02, 7.740e-02, 6.959e-02, 8.633e-02, 3.034e-02, -8.553e-02, -6.847e-02, 2.439e-02), r);\n\tr = MulAdd(s1_1, M4(1.861e-01, 1.628e-01, 9.891e-02, 8.686e-02, 1.521e-01, 2.777e-02, -4.557e-02, -5.964e-02, -7.298e-02, 9.138e-02, 9.796e-02, 1.437e-02, -6.912e-02, -1.500e-01, 1.108e-02, 8.537e-02), r);\n\tr = MulAdd(s1_2, M4(1.272e-01, 1.039e-01, -1.040e-02, 5.735e-02, -9.561e-03, -7.849e-02, 2.013e-02, 6.743e-02, -1.308e-01, 2.097e-01, -2.586e-02, -2.612e-02, -1.021e-01, -2.057e-01, -3.857e-02, 1.757e-02), r);\n\tr = MulAdd(s1_3, M4(8.053e-02, -6.616e-02, -1.770e-02, -1.982e-01, -2.444e-02, 7.095e-02, -3.175e-02, 1.033e-01, -5.762e-02, 3.046e-02, 1.113e-01, -7.795e-02, 7.733e-02, -2.446e-01, -9.412e-02, -1.653e-01), r);\n\tr = MulAdd(s1_4, M4(3.202e-01, 3.417e-01, 2.862e-01, 1.982e-01, 2.573e-01, 8.468e-02, 1.595e-01, 4.027e-01, -1.133e-01, 1.141e-01, 3.135e-01, 8.849e-02, -3.401e-01, -4.237e-01, -9.999e-03, 1.012e-01), r);\n\tr = MulAdd(s1_5, M4(2.600e-01, 5.980e-02, 8.030e-02, -2.103e-02, -1.986e-02, -5.828e-02, -1.421e-01, -1.034e-01, 4.901e-02, 4.389e-02, 5.034e-02, 1.400e-01, 6.483e-02, -2.524e-01, -5.724e-02, 6.231e-02), r);\n\tr = MulAdd(s1_6, M4(1.074e-01, 3.976e-02, 3.519e-02, -4.123e-02, 6.299e-02, 5.759e-02, 6.204e-02, 4.752e-02, 5.410e-02, -4.425e-05, 4.521e-02, -8.902e-02, -5.916e-02, -2.006e-01, -1.372e-01, -1.440e-01), r);\n\tr = MulAdd(s1_7, M4(9.065e-02, 2.786e-03, -7.057e-02, -7.517e-03, -4.347e-02, 6.086e-02, -2.635e-02, 4.724e-03, 1.253e-02, 4.647e-03, 2.887e-02, -1.678e-02, -8.265e-02, -6.195e-02, 1.822e-02, 7.331e-02), r);\n\tr = MulAdd(s1_8, M4(4.428e-02, 6.706e-02, -4.415e-02, -1.130e-02, -1.310e-02, 4.253e-02, -9.984e-02, -1.037e-02, 3.263e-02, 8.474e-02, 7.599e-02, -3.215e-02, 4.988e-02, -1.178e-01, -1.416e-02, -2.848e-02), r);\n\tr = MulAdd(s2_0, M4(8.826e-02, 8.038e-02, 7.920e-02, 9.084e-02, 6.145e-02, 8.284e-03, -5.767e-02, 9.238e-03, -4.508e-03, -8.890e-02, -1.910e-02, -1.507e-01, -7.447e-02, 4.104e-02, -2.612e-02, -8.667e-02), r);\n\tr = MulAdd(s2_1, M4(-5.439e-02, 3.984e-01, 5.645e-02, -1.242e-01, -8.338e-02, -1.595e-01, -6.036e-02, 5.165e-02, 2.823e-01, 1.645e-01, 5.408e-02, 1.663e-01, 2.206e-02, -1.240e-01, -7.492e-02, 5.293e-02), r);\n\tr = MulAdd(s2_2, M4(1.161e-02, 1.763e-01, 3.373e-02, 7.828e-03, 1.142e-01, 1.688e-01, 1.343e-01, 7.300e-02, 8.175e-02, 1.114e-01, -6.659e-02, 4.685e-02, 2.217e-02, -3.111e-02, 1.022e-01, -5.566e-02), r);\n\tr = MulAdd(s2_3, M4(1.668e-02, 1.160e-01, 1.852e-01, 2.139e-01, -5.002e-02, 4.529e-02, -2.762e-02, 1.528e-01, 1.020e-01, -4.068e-02, -5.659e-02, 6.207e-03, 2.146e-02, -7.677e-02, -1.098e-02, -1.738e-01), r);\n\tr = MulAdd(s2_4, M4(-3.080e-01, -1.794e-01, 3.752e-01, -1.512e-02, 6.082e-02, -1.906e-01, 4.469e-02, -1.824e-01, 5.373e-01, 2.499e-01, -3.037e-02, 4.862e-01, 2.590e-01, 3.245e-01, 1.882e-01, -5.488e-01), r);\n\tr = MulAdd(s2_5, M4(1.734e-01, 1.910e-01, 1.513e-02, 5.352e-02, -6.647e-02, 5.546e-02, 4.049e-02, 1.364e-01, -3.987e-02, -2.656e-01, -1.042e-01, 3.166e-01, -9.156e-02, -1.295e-01, 7.885e-02, 2.314e-02), r);\n\tr = MulAdd(s2_6, M4(9.283e-03, 4.879e-02, 7.797e-02, 3.678e-02, 1.426e-02, -4.030e-02, -1.420e-02, 1.217e-03, 3.934e-02, 8.811e-03, -3.593e-03, -9.359e-02, -2.613e-02, -6.882e-02, -1.049e-01, -6.001e-02), r);\n\tr = MulAdd(s2_7, M4(-1.466e-01, -2.775e-02, -5.452e-02, -3.920e-02, 3.784e-02, -2.177e-02, 1.765e-03, -5.121e-03, 7.044e-02, -2.550e-02, 4.265e-02, 1.714e-01, 1.928e-02, -1.084e-01, -1.362e-01, -6.649e-02), r);\n\tr = MulAdd(s2_8, M4(1.515e-02, 2.673e-02, -6.883e-02, 2.487e-02, -2.320e-02, -8.358e-02, -1.656e-02, -7.216e-03, -4.509e-03, 8.023e-02, 5.342e-02, -6.369e-02, -2.025e-02, 1.406e-02, -5.119e-02, 3.383e-02), r);\n\tr = MulAdd(s3_0, M4(-9.426e-02, 2.166e-02, -3.618e-02, 1.094e-01, 2.509e-01, -4.044e-02, 5.655e-02, -3.421e-01, 8.115e-03, -1.962e-01, -2.723e-02, -7.238e-02, -1.999e-02, 4.283e-03, 2.814e-02, -1.090e-02), r);\n\tr = MulAdd(s3_1, M4(-1.476e-01, -9.419e-04, -2.845e-01, -3.093e-02, 7.671e-02, 1.561e-01, 2.363e-01, -1.520e-01, -4.572e-02, -7.799e-02, 1.145e-01, 7.141e-02, -1.601e-02, -1.268e-01, -5.096e-02, -1.117e-01), r);\n\tr = MulAdd(s3_2, M4(1.561e-01, -1.141e-01, -4.663e-02, -4.326e-02, 9.767e-02, -8.240e-02, 1.372e-01, -3.313e-02, -2.856e-02, 2.021e-01, 4.114e-02, -1.512e-01, -4.197e-03, -1.235e-01, 5.185e-02, -9.070e-02), r);\n\tr = MulAdd(s3_3, M4(6.872e-02, 3.742e-02, -2.118e-02, -2.090e-02, -1.240e-02, -2.806e-02, -8.335e-03, 2.746e-02, -8.620e-02, -4.219e-02, 2.922e-02, 3.157e-02, 1.153e-01, -9.716e-02, -4.720e-02, -1.023e-01), r);\n\tr = MulAdd(s3_4, M4(-2.349e-01, -4.080e-01, -3.222e-01, -4.920e-01, 1.183e-01, -4.490e-02, 1.509e-01, -7.753e-02, -8.539e-02, 7.595e-02, -1.085e-01, 2.213e-01, 2.203e-01, 4.651e-02, 4.022e-02, -4.619e-01), r);\n\tr = MulAdd(s3_5, M4(1.305e-01, -6.924e-02, -2.362e-02, -1.763e-01, -7.495e-02, -5.263e-02, -2.810e-03, 3.534e-03, -4.620e-02, 1.199e-03, 1.183e-01, 7.935e-02, 7.310e-03, -1.576e-01, 5.596e-02, 1.310e-01), r);\n\tr = MulAdd(s3_6, M4(1.163e-02, 5.437e-02, 9.811e-02, 8.154e-02, 1.875e-02, -5.344e-02, 1.110e-03, -1.606e-02, 1.176e-02, 3.321e-02, 7.622e-02, -1.049e-01, -4.287e-02, -2.004e-01, -1.664e-01, -1.601e-01), r);\n\tr = MulAdd(s3_7, M4(-5.847e-02, 3.982e-02, -9.274e-02, -3.528e-02, 1.357e-02, -8.811e-02, 2.798e-02, 1.610e-02, -8.094e-02, 1.221e-01, 1.545e-01, 1.393e-01, 1.614e-02, -6.596e-03, -9.230e-02, 7.828e-02), r);\n\tr = MulAdd(s3_8, M4(1.433e-02, 2.302e-02, 1.756e-03, 4.419e-02, 2.216e-02, -1.352e-01, -2.377e-02, -7.755e-02, -1.540e-01, 6.615e-02, -9.143e-04, -1.092e-01, -5.908e-02, 8.977e-03, -1.693e-01, 1.599e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 3.107e-02, -3.014e-02, 6.615e-03, -1.582e-02 };\n\tr = MulAdd(s0_0, M4(-5.521e-03, -3.227e-02, -8.959e-02, -2.310e-02, -3.505e-02, -1.074e-01, 1.005e-01, -1.186e-02, -2.056e-03, -1.544e-02, 1.421e-01, -8.042e-02, 1.062e-02, -6.143e-02, -4.901e-03, -9.454e-02), r);\n\tr = MulAdd(s0_1, M4(3.801e-02, -5.568e-02, 3.259e-02, 6.786e-02, -6.511e-02, 5.286e-02, 1.561e-02, -4.836e-02, -9.207e-02, -1.990e-01, 4.230e-01, 2.050e-02, 4.370e-02, 1.434e-01, -5.622e-02, 6.287e-02), r);\n\tr = MulAdd(s0_2, M4(-7.980e-02, 5.040e-02, -2.226e-02, -2.332e-02, -1.077e-02, -1.836e-02, -2.621e-02, -1.471e-02, 2.554e-02, 4.099e-02, 1.355e-01, -1.841e-01, 8.085e-03, -3.333e-02, 8.552e-03, -2.047e-02), r);\n\tr = MulAdd(s0_3, M4(6.407e-02, 1.156e-01, -1.245e-01, -4.790e-02, -1.968e-01, -5.708e-02, 5.560e-02, 3.975e-01, -3.533e-02, -1.222e-01, -1.292e-02, -6.471e-02, -4.069e-03, -4.856e-02, 2.772e-02, -2.131e-01), r);\n\tr = MulAdd(s0_4, M4(5.784e-03, -4.214e-01, 9.652e-02, 2.624e-01, -4.463e-01, -3.606e-01, -3.593e-02, 2.150e-01, 1.693e-01, 1.568e-01, -4.593e-02, -3.257e-01, 7.479e-02, -8.113e-03, 3.176e-01, 2.823e-01), r);\n\tr = MulAdd(s0_5, M4(-4.752e-02, 1.916e-01, -1.042e-01, -1.253e-02, -2.057e-02, -3.405e-02, -5.519e-02, -3.911e-02, 2.241e-01, -1.885e-02, 1.204e-01, 4.924e-02, 2.986e-02, 5.848e-02, -3.441e-02, -7.179e-02), r);\n\tr = MulAdd(s0_6, M4(6.014e-02, 4.232e-02, -5.073e-02, -2.059e-02, -4.711e-02, -1.640e-01, 9.222e-02, 2.780e-01, -1.505e-03, -2.975e-02, 4.008e-02, -2.294e-02, 6.812e-02, 5.715e-03, -1.852e-01, -8.323e-02), r);\n\tr = MulAdd(s0_7, M4(6.323e-02, -4.207e-02, 2.370e-02, 1.695e-01, -6.565e-02, 1.543e-01, -6.446e-02, -5.231e-02, 8.916e-03, -8.248e-03, 3.969e-02, 9.619e-02, 1.804e-01, -1.653e-01, 1.140e-01, 2.200e-01), r);\n\tr = MulAdd(s0_8, M4(8.670e-03, -3.521e-02, -1.453e-01, -9.260e-02, 2.707e-02, 1.519e-01, -8.643e-02, -1.226e-01, 4.304e-02, 7.913e-03, 1.759e-02, 2.059e-01, 1.695e-02, -1.457e-02, 1.015e-01, -5.574e-02), r);\n\tr = MulAdd(s1_0, M4(-9.047e-04, -7.526e-02, 3.870e-02, -3.091e-03, -3.185e-02, -3.210e-02, -5.562e-02, 1.604e-01, -4.968e-02, 3.186e-02, 1.647e-01, 4.125e-02, -5.160e-02, -1.243e-02, -4.020e-02, -8.829e-02), r);\n\tr = MulAdd(s1_1, M4(2.446e-02, -1.086e-01, 1.076e-01, 1.603e-01, -1.886e-01, 6.601e-02, 2.700e-03, -1.031e-02, -1.411e-01, -1.737e-02, -1.220e-02, 1.722e-01, -9.362e-02, 8.900e-02, 3.836e-02, 2.557e-02), r);\n\tr = MulAdd(s1_2, M4(5.523e-02, 1.215e-01, 2.999e-02, -7.301e-02, -1.061e-01, -2.018e-02, 1.581e-03, 3.590e-02, -7.798e-02, -2.899e-02, 8.488e-02, 6.095e-02, -5.692e-03, 4.157e-02, -4.302e-02, 8.434e-02), r);\n\tr = MulAdd(s1_3, M4(4.727e-02, -1.131e-01, 1.154e-02, -3.369e-01, -2.170e-02, -8.931e-02, 1.535e-01, 8.759e-02, 4.050e-02, -1.016e-01, 8.183e-02, -1.638e-01, 3.286e-02, -2.050e-01, -9.847e-02, 8.546e-02), r);\n\tr = MulAdd(s1_4, M4(8.860e-02, -4.114e-01, 3.215e-01, 3.164e-01, -3.487e-01, -4.634e-01, 1.398e-01, 3.320e-01, 1.261e-01, -1.121e-01, 5.128e-02, 2.666e-01, -4.104e-04, -4.406e-01, -1.674e-01, 2.686e-01), r);\n\tr = MulAdd(s1_5, M4(1.196e-01, 7.047e-04, 1.721e-01, 1.966e-02, -3.580e-02, 1.681e-02, -8.139e-02, 1.200e-01, 2.414e-02, 8.583e-02, 5.284e-02, -8.748e-03, -1.313e-01, 8.085e-02, 2.055e-02, -4.308e-02), r);\n\tr = MulAdd(s1_6, M4(2.875e-02, -6.798e-02, 3.081e-02, 9.796e-02, -8.332e-03, -1.172e-01, 6.169e-02, 2.643e-02, 7.465e-03, -9.946e-02, 6.580e-02, -9.836e-02, 5.662e-02, 1.801e-02, -8.294e-02, -1.172e-01), r);\n\tr = MulAdd(s1_7, M4(5.495e-02, -9.538e-04, -3.587e-02, 1.118e-01, -4.600e-02, 2.166e-01, 6.635e-02, 2.927e-02, 5.700e-02, -5.216e-02, 4.287e-02, -3.235e-02, 2.396e-01, -2.299e-01, -1.761e-01, -9.716e-02), r);\n\tr = MulAdd(s1_8, M4(5.748e-02, 2.837e-02, -5.760e-02, 4.236e-02, 2.148e-02, 7.319e-02, -7.836e-02, -1.546e-01, -1.942e-02, 2.458e-02, 1.181e-01, 7.293e-02, -2.915e-02, -2.068e-02, -3.460e-02, -1.232e-01), r);\n\tr = MulAdd(s2_0, M4(3.632e-02, -1.866e-02, 2.030e-01, -4.521e-02, 8.081e-02, 8.579e-02, 3.637e-02, -7.211e-02, -7.259e-02, -9.637e-02, -3.099e-02, 8.137e-03, -5.767e-03, 1.281e-02, 2.569e-02, 1.671e-02), r);\n\tr = MulAdd(s2_1, M4(1.033e-01, 1.037e-02, 3.472e-01, 3.228e-02, -1.171e-01, 2.538e-02, -5.485e-02, 2.071e-02, 4.456e-02, -1.482e-01, 4.948e-02, 1.478e-01, 1.292e-02, -3.387e-02, 1.172e-02, -5.736e-02), r);\n\tr = MulAdd(s2_2, M4(-5.565e-03, 3.590e-02, 5.145e-02, -4.043e-02, -3.857e-02, -1.070e-01, 1.745e-01, 8.157e-02, -2.818e-02, 8.915e-02, 1.199e-01, 1.283e-03, 7.934e-02, -5.920e-02, -1.159e-02, -1.067e-01), r);\n\tr = MulAdd(s2_3, M4(4.071e-02, -6.976e-02, 4.140e-02, 1.077e-01, 2.992e-02, 4.067e-02, -3.996e-02, 1.372e-01, 1.240e-02, -1.392e-01, 8.767e-02, -5.693e-02, -5.435e-02, -1.238e-01, 1.790e-02, -1.646e-01), r);\n\tr = MulAdd(s2_4, M4(1.929e-01, 2.386e-01, -1.810e-01, 4.484e-01, -2.357e-02, -6.054e-02, -6.168e-02, -2.420e-01, -6.921e-02, -3.946e-01, -2.529e-01, 1.010e-01, 3.271e-01, -6.237e-02, -1.207e-02, -1.547e-01), r);\n\tr = MulAdd(s2_5, M4(-1.669e-02, -7.439e-02, 1.247e-01, 8.483e-02, 1.398e-01, -2.795e-02, -8.120e-02, 6.695e-02, 9.151e-02, 3.799e-03, -2.224e-01, 2.380e-01, 9.462e-02, -1.340e-01, -1.219e-01, 4.606e-02), r);\n\tr = MulAdd(s2_6, M4(-6.699e-03, 7.497e-02, 7.645e-02, 8.640e-02, -1.486e-02, -3.314e-02, 2.684e-02, -6.462e-02, 3.503e-03, -4.940e-02, 7.803e-02, -4.800e-02, -3.313e-03, -6.215e-02, -1.157e-02, 4.294e-02), r);\n\tr = MulAdd(s2_7, M4(5.624e-02, 2.786e-01, -6.348e-02, -8.999e-02, -1.007e-01, 3.742e-03, 1.282e-02, -3.012e-02, 7.205e-02, -4.481e-03, 5.465e-02, -8.988e-02, 5.866e-02, 1.780e-01, -3.760e-01, -2.454e-01), r);\n\tr = MulAdd(s2_8, M4(9.374e-03, -7.492e-03, -9.421e-02, -2.475e-02, -2.297e-03, 6.944e-02, 2.745e-02, 7.689e-02, 5.201e-03, 4.984e-02, 1.676e-01, 1.915e-02, 3.006e-03, -9.448e-02, 2.945e-02, 4.559e-02), r);\n\tr = MulAdd(s3_0, M4(4.476e-02, 2.980e-01, -1.164e-01, -1.511e-01, 1.188e-01, -3.359e-01, 2.101e-01, -3.195e-01, -2.468e-03, 5.351e-02, -1.329e-01, -1.496e-01, -8.304e-02, 4.541e-02, -8.868e-03, 3.964e-03), r);\n\tr = MulAdd(s3_1, M4(-1.505e-01, 2.723e-02, -9.004e-02, 2.151e-01, -3.771e-02, -1.941e-01, 3.681e-01, -2.844e-01, 1.730e-01, 2.429e-02, -2.395e-01, 1.791e-02, -9.777e-02, 5.106e-02, -6.921e-03, -9.913e-02), r);\n\tr = MulAdd(s3_2, M4(4.079e-02, 7.965e-02, -1.219e-01, -1.476e-01, -8.922e-02, -1.848e-01, 9.943e-02, -6.997e-02, -6.066e-02, 1.087e-01, 2.364e-02, -1.383e-01, 3.358e-02, -1.140e-01, -1.239e-02, -1.002e-01), r);\n\tr = MulAdd(s3_3, M4(-2.038e-02, -2.087e-01, -2.781e-02, 2.218e-01, -4.068e-03, -2.081e-01, -2.048e-01, -1.173e-01, 4.122e-02, 1.402e-01, -1.797e-03, 1.284e-01, -6.767e-02, -6.230e-02, -1.694e-01, 2.256e-02), r);\n\tr = MulAdd(s3_4, M4(1.255e-01, 2.984e-01, -5.116e-01, 3.584e-01, -1.813e-01, -3.424e-01, 1.837e-01, -5.376e-03, -2.635e-01, -1.358e-01, -5.520e-01, -4.240e-02, 1.161e-01, -6.542e-02, -1.056e-01, -4.898e-02), r);\n\tr = MulAdd(s3_5, M4(-1.399e-02, -5.929e-02, -3.799e-02, 5.016e-02, 6.597e-02, -7.250e-02, -9.893e-02, 1.723e-01, 2.748e-01, 2.064e-02, -1.016e-01, -1.385e-02, -2.072e-02, -2.790e-02, -6.064e-02, -2.727e-02), r);\n\tr = MulAdd(s3_6, M4(-1.990e-02, -8.099e-02, 2.959e-02, -9.899e-02, -6.404e-02, -7.691e-02, 1.050e-01, 4.486e-02, 6.109e-02, -5.415e-02, 2.468e-02, -3.233e-02, -3.263e-02, 5.391e-02, -2.056e-01, -7.300e-02), r);\n\tr = MulAdd(s3_7, M4(-6.814e-02, 1.238e-01, 3.873e-02, -2.108e-02, -1.586e-01, -2.624e-02, -1.219e-02, -1.521e-01, 1.786e-01, -8.109e-02, 2.714e-02, -8.674e-02, 2.940e-02, -4.832e-02, -1.425e-01, 4.084e-02), r);\n\tr = MulAdd(s3_8, M4(2.428e-02, -4.195e-02, -6.436e-02, -1.113e-01, -9.072e-03, 1.545e-02, 4.824e-02, -1.465e-01, -4.214e-02, -1.313e-01, -6.468e-02, 2.691e-02, 2.508e-02, 1.355e-01, -1.529e-01, -2.560e-02), r);\n\treturn r;\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 7\n//!DESC conv6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 1.289e-02, -6.634e-03, 3.674e-02, 1.609e-03 };\n\tr = MulAdd(s0_0, M4(2.404e-02, 2.997e-02, -3.284e-02, -5.164e-02, -8.224e-02, 1.916e-02, -5.887e-02, -1.108e-01, 5.058e-02, -9.101e-02, -2.799e-02, -1.015e-01, -2.853e-03, -5.750e-02, -3.651e-02, 7.911e-02), r);\n\tr = MulAdd(s0_1, M4(7.598e-02, -4.379e-03, -1.111e-01, 1.520e-01, 6.809e-02, 2.420e-02, -1.512e-02, -8.763e-02, -5.779e-02, 2.712e-03, 2.095e-01, -1.363e-02, 6.453e-03, -8.446e-02, -4.731e-02, 2.419e-02), r);\n\tr = MulAdd(s0_2, M4(7.891e-02, -1.816e-02, 7.892e-02, 8.296e-02, -1.422e-02, 5.360e-02, 8.078e-02, -2.628e-02, -6.979e-03, -2.700e-02, -8.674e-02, 8.292e-02, -1.558e-02, -4.723e-02, -1.121e-01, 6.815e-02), r);\n\tr = MulAdd(s0_3, M4(2.828e-02, -4.739e-02, -2.074e-01, -3.196e-01, -3.889e-02, 8.126e-02, 1.927e-01, 2.481e-01, 1.304e-01, -2.371e-02, -3.977e-02, -9.958e-02, -1.919e-03, 3.208e-02, 4.055e-02, -1.030e-01), r);\n\tr = MulAdd(s0_4, M4(-1.040e-01, 1.768e-01, -8.376e-02, 4.783e-01, -2.102e-01, -2.036e-01, 2.606e-01, -5.867e-02, 1.840e-01, -9.110e-02, 9.612e-02, 2.183e-01, -1.455e-01, 1.636e-01, 2.425e-01, -2.316e-01), r);\n\tr = MulAdd(s0_5, M4(1.393e-01, -7.825e-02, -6.535e-02, 6.115e-02, 7.806e-02, -7.575e-02, 2.447e-03, -1.255e-02, -8.062e-02, -1.768e-02, 1.831e-02, 1.318e-02, -1.194e-01, 1.821e-02, -6.475e-02, 9.178e-02), r);\n\tr = MulAdd(s0_6, M4(2.158e-02, 5.031e-02, 5.894e-02, -2.206e-02, 1.642e-02, -4.703e-02, 7.177e-03, 4.832e-02, -6.795e-03, 1.200e-01, 7.350e-02, 4.357e-02, -1.374e-02, -2.273e-02, 5.343e-02, -3.053e-02), r);\n\tr = MulAdd(s0_7, M4(-2.053e-03, 2.418e-01, -7.675e-02, 7.563e-02, 1.879e-01, -5.891e-02, 1.363e-02, -5.479e-02, -2.454e-01, 3.717e-02, -6.543e-02, -9.897e-02, 1.506e-01, -1.457e-02, 7.962e-02, 2.634e-02), r);\n\tr = MulAdd(s0_8, M4(-4.787e-02, 7.421e-02, 4.307e-02, -1.165e-01, -1.552e-01, -2.697e-02, -9.967e-02, 3.872e-02, -6.328e-02, 1.037e-01, -3.953e-02, 8.554e-02, 4.862e-02, -2.809e-02, -2.267e-02, -1.011e-02), r);\n\tr = MulAdd(s1_0, M4(6.553e-02, -3.868e-03, -3.811e-02, 6.105e-03, 8.599e-03, 4.356e-02, 7.104e-02, -1.001e-01, -8.656e-02, -2.863e-02, 4.224e-02, -4.758e-02, 8.669e-04, 2.007e-02, 4.083e-02, 7.794e-02), r);\n\tr = MulAdd(s1_1, M4(-2.462e-02, -1.574e-02, -4.985e-03, 1.459e-01, 1.573e-03, 8.120e-02, -1.362e-01, -1.597e-01, -2.973e-02, -2.999e-01, 1.528e-03, 4.741e-01, 9.943e-02, 7.836e-02, 1.532e-02, -4.459e-02), r);\n\tr = MulAdd(s1_2, M4(1.434e-02, -2.119e-02, -3.105e-02, -1.281e-02, -1.791e-01, -3.910e-02, 5.519e-02, 1.343e-01, -1.333e-01, -8.837e-02, -1.076e-01, 1.067e-01, -1.577e-02, 6.211e-02, 1.116e-02, -6.399e-02), r);\n\tr = MulAdd(s1_3, M4(-1.004e-01, 2.091e-02, -5.478e-02, -1.756e-01, -9.005e-02, 9.037e-02, 1.250e-01, 8.268e-02, 1.398e-01, -1.338e-01, -1.158e-01, -6.447e-02, 4.636e-02, 8.153e-02, 3.763e-02, -5.705e-02), r);\n\tr = MulAdd(s1_4, M4(3.115e-01, -3.808e-01, 1.332e-01, 8.542e-02, 1.126e-01, -1.795e-01, 2.202e-01, 1.600e-01, 1.475e-01, 1.186e-01, 1.995e-01, -1.733e-01, -4.463e-01, 5.858e-01, 7.088e-02, -4.531e-01), r);\n\tr = MulAdd(s1_5, M4(-5.391e-02, 5.806e-02, 7.177e-02, 2.734e-01, -1.093e-01, -7.192e-02, -2.031e-03, -9.404e-02, -2.599e-02, -2.688e-03, 2.064e-02, 1.819e-01, 8.417e-02, -3.743e-02, -5.253e-02, -2.005e-01), r);\n\tr = MulAdd(s1_6, M4(1.709e-02, 5.473e-02, 1.583e-02, -1.412e-01, 3.210e-02, -5.364e-02, -1.279e-02, -4.324e-02, -2.110e-01, 6.215e-02, -7.099e-02, 1.011e-01, -3.931e-03, -3.861e-03, 2.847e-02, 9.082e-02), r);\n\tr = MulAdd(s1_7, M4(-2.610e-01, 1.499e-01, -5.311e-02, 1.480e-02, 1.285e-02, -1.043e-01, -1.002e-01, -3.947e-02, -1.508e-01, 1.144e-01, 1.443e-01, -3.456e-02, 1.332e-01, 1.841e-01, 2.120e-01, -6.647e-03), r);\n\tr = MulAdd(s1_8, M4(-1.090e-02, -3.561e-02, 3.492e-02, -7.376e-02, -8.500e-02, -4.378e-02, -1.281e-02, 2.313e-02, -2.974e-01, -1.025e-01, -5.699e-02, 2.294e-02, -4.649e-02, 6.585e-02, 7.421e-02, -6.087e-02), r);\n\tr = MulAdd(s2_0, M4(9.719e-02, -1.495e-02, 1.597e-01, 6.545e-03, 1.616e-02, -1.136e-03, 4.194e-02, -2.144e-02, -4.504e-02, -2.040e-02, 3.672e-02, 7.161e-02, 5.032e-02, 7.780e-02, 7.739e-02, 6.251e-02), r);\n\tr = MulAdd(s2_1, M4(1.598e-01, 7.514e-02, -3.737e-02, -4.716e-02, -1.324e-01, 1.908e-02, -2.415e-02, -6.085e-02, 9.660e-02, 5.538e-02, -6.763e-02, -8.017e-03, 4.100e-02, -4.304e-03, 9.956e-02, 3.581e-02), r);\n\tr = MulAdd(s2_2, M4(4.912e-02, -3.518e-02, -3.550e-02, 5.028e-02, 8.666e-02, 1.122e-01, -1.027e-02, -1.043e-01, 8.323e-02, 4.898e-03, -1.090e-02, -1.912e-02, 2.538e-02, -5.575e-03, 4.678e-02, -5.409e-02), r);\n\tr = MulAdd(s2_3, M4(8.412e-03, 1.402e-01, 2.510e-01, -2.978e-02, 2.691e-02, -7.400e-02, -1.719e-01, -2.765e-02, 7.918e-02, -8.331e-03, -2.848e-02, 1.808e-01, -5.017e-02, -1.434e-02, -5.966e-02, 4.193e-04), r);\n\tr = MulAdd(s2_4, M4(-7.351e-02, -2.898e-01, -3.926e-01, -2.116e-01, 1.478e-01, -9.418e-02, -1.530e-01, -2.963e-01, -1.190e-01, 4.534e-01, -2.833e-01, -2.530e-01, 2.825e-01, -2.388e-02, 7.258e-02, 4.468e-02), r);\n\tr = MulAdd(s2_5, M4(-7.228e-02, 4.241e-02, -1.818e-02, -4.262e-02, -1.139e-01, -5.711e-02, -7.106e-02, -7.861e-02, -4.809e-02, 1.474e-01, -7.394e-03, -4.692e-02, 2.199e-02, 1.038e-01, -5.060e-02, 8.474e-02), r);\n\tr = MulAdd(s2_6, M4(1.236e-01, -7.740e-02, 4.034e-02, 2.473e-02, -1.046e-05, 4.154e-02, -5.698e-03, 2.456e-02, -5.245e-02, -1.311e-02, -1.292e-01, -5.838e-02, -4.741e-02, -1.506e-02, -5.012e-02, 2.703e-03), r);\n\tr = MulAdd(s2_7, M4(8.191e-02, 1.102e-01, 4.677e-02, -1.667e-02, -2.850e-01, 1.548e-01, -4.856e-03, 1.074e-03, 1.559e-02, 3.353e-02, 2.302e-02, -4.748e-02, -7.978e-02, -1.328e-02, -8.056e-02, 1.167e-02), r);\n\tr = MulAdd(s2_8, M4(6.904e-02, -2.015e-02, 7.204e-02, -3.156e-02, -1.374e-01, 5.652e-02, 5.052e-02, -4.269e-02, 3.874e-02, 1.011e-02, 6.918e-02, -5.973e-02, 1.694e-01, 6.863e-02, 8.218e-02, 4.696e-02), r);\n\tr = MulAdd(s3_0, M4(1.036e-02, -9.171e-02, 2.046e-01, 1.921e-02, 2.592e-03, -3.041e-02, -1.027e-01, -1.301e-01, -9.272e-03, 5.752e-02, 4.755e-02, -1.453e-02, -3.280e-03, -3.442e-02, -1.207e-02, -2.463e-02), r);\n\tr = MulAdd(s3_1, M4(2.136e-01, -2.675e-02, -1.771e-01, 2.694e-02, 3.292e-02, 3.093e-02, 2.271e-01, 2.195e-01, -5.501e-02, 5.664e-03, -2.300e-01, 3.389e-02, -6.249e-02, 3.345e-02, -5.372e-02, -5.311e-02), r);\n\tr = MulAdd(s3_2, M4(3.520e-02, -1.165e-01, -7.715e-02, 3.538e-02, 2.150e-01, 1.602e-01, 1.783e-01, -6.312e-02, 1.099e-01, 1.013e-01, -6.535e-02, -1.370e-01, 2.222e-02, 8.245e-02, 3.791e-02, -5.384e-02), r);\n\tr = MulAdd(s3_3, M4(4.063e-03, -2.201e-01, 6.289e-02, 1.063e-01, 7.458e-02, -9.281e-02, -1.792e-01, -1.193e-01, -2.276e-02, -2.212e-02, -1.820e-01, -3.791e-02, 6.566e-02, 3.899e-02, 3.693e-02, 2.944e-02), r);\n\tr = MulAdd(s3_4, M4(-5.110e-01, -3.091e-01, -7.583e-01, 2.226e-01, -4.668e-02, -4.517e-01, -8.393e-03, -3.556e-01, -6.915e-01, 1.907e-01, -5.686e-01, -5.042e-02, 5.118e-01, 1.140e-01, 3.401e-01, -2.682e-02), r);\n\tr = MulAdd(s3_5, M4(-7.635e-03, -9.166e-02, -2.271e-02, -5.200e-02, 1.570e-02, -5.974e-03, 1.862e-01, 7.035e-02, -2.859e-01, 4.639e-02, 4.377e-02, -4.687e-03, 1.782e-01, 1.578e-01, 3.609e-02, -2.364e-02), r);\n\tr = MulAdd(s3_6, M4(1.410e-02, -1.417e-01, -9.227e-02, 8.895e-03, 8.245e-02, 1.675e-03, 1.763e-02, -4.726e-02, -3.146e-02, -4.661e-02, -1.085e-01, 6.988e-02, 5.238e-02, 8.178e-02, 7.645e-02, -6.760e-02), r);\n\tr = MulAdd(s3_7, M4(2.610e-01, 1.194e-02, -1.065e-02, -9.494e-03, -1.750e-02, 1.167e-02, 2.371e-02, 3.010e-02, 7.709e-02, 2.302e-02, 9.363e-02, 2.560e-02, -1.188e-01, -6.296e-02, -2.176e-02, -1.106e-01), r);\n\tr = MulAdd(s3_8, M4(1.396e-01, -1.282e-01, 3.914e-02, -2.227e-02, -1.906e-02, 5.945e-02, -1.260e-02, -7.651e-02, 8.742e-02, 1.698e-02, 8.794e-02, -3.933e-02, 2.223e-02, -2.413e-03, -2.701e-02, -4.654e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -5.133e-03, 1.777e-02, 4.068e-03, 1.012e-02 };\n\tr = MulAdd(s0_0, M4(1.600e-02, -1.109e-01, 7.068e-02, -1.811e-01, 1.063e-02, -6.863e-02, -6.434e-02, 1.375e-02, 2.456e-01, -4.348e-02, 5.149e-02, 2.022e-02, -3.151e-02, 1.061e-02, 1.882e-02, 3.657e-02), r);\n\tr = MulAdd(s0_1, M4(6.848e-02, 6.202e-02, 6.749e-02, 2.417e-01, 8.964e-02, 1.551e-01, 3.107e-03, 5.573e-02, -1.239e-01, -6.104e-02, 2.686e-01, -1.557e-01, -2.527e-02, 3.832e-02, -4.138e-02, 1.948e-01), r);\n\tr = MulAdd(s0_2, M4(-2.463e-01, -3.228e-02, 5.194e-02, -1.168e-01, -8.813e-02, -2.266e-02, -8.269e-03, 8.535e-02, 2.962e-02, 4.934e-02, 1.222e-02, -2.672e-02, 8.425e-02, 7.315e-02, -1.661e-03, 6.929e-02), r);\n\tr = MulAdd(s0_3, M4(4.423e-02, -5.269e-02, -8.159e-02, -4.065e-02, -1.822e-01, 1.176e-01, 5.985e-02, 1.526e-01, 6.602e-02, -1.554e-01, -9.981e-02, -5.084e-02, -2.635e-02, -1.488e-01, -3.293e-02, -1.259e-01), r);\n\tr = MulAdd(s0_4, M4(5.130e-01, 1.827e-02, -8.425e-02, -1.359e-01, 6.076e-02, -3.010e-02, -3.517e-02, -1.604e-01, 6.842e-02, 4.031e-01, -4.483e-01, 1.444e-01, 7.936e-02, 2.010e-01, 1.000e-02, 8.051e-02), r);\n\tr = MulAdd(s0_5, M4(1.784e-02, -5.340e-02, 8.986e-03, -8.302e-02, 1.744e-01, -5.748e-02, 3.942e-02, 1.104e-02, -1.938e-01, -5.557e-02, -6.293e-03, -1.411e-01, 7.521e-03, 9.413e-02, 2.034e-02, 1.249e-01), r);\n\tr = MulAdd(s0_6, M4(2.540e-02, 2.131e-01, 4.611e-02, 9.382e-02, 5.992e-02, -6.154e-02, -3.255e-02, -4.284e-02, -1.709e-02, 3.054e-02, -7.711e-02, -3.413e-02, 2.668e-02, 7.784e-03, 1.578e-01, -3.615e-03), r);\n\tr = MulAdd(s0_7, M4(-6.617e-02, -1.114e-01, 3.306e-02, 2.025e-02, -2.133e-01, -2.866e-01, 1.364e-01, 2.138e-02, 2.444e-02, -1.753e-02, 3.907e-02, 6.912e-03, -3.994e-02, -2.617e-02, 1.246e-02, -3.568e-02), r);\n\tr = MulAdd(s0_8, M4(1.790e-02, -6.453e-02, 1.921e-02, -2.243e-02, 9.646e-02, 2.163e-01, -5.867e-02, 3.342e-02, 5.237e-02, 1.622e-01, -1.256e-01, 1.834e-02, 1.350e-01, 3.223e-02, -1.533e-02, 2.442e-02), r);\n\tr = MulAdd(s1_0, M4(-6.017e-02, -1.388e-01, 9.635e-02, -5.857e-02, 4.819e-02, -8.395e-02, -2.810e-02, -5.550e-02, 1.881e-01, 4.630e-02, 5.251e-02, 1.190e-02, -5.155e-02, -4.143e-02, 4.654e-02, 1.323e-01), r);\n\tr = MulAdd(s1_1, M4(-1.534e-01, 2.133e-01, 7.453e-03, 3.310e-01, 3.330e-01, -2.181e-01, 7.039e-03, -3.036e-01, 5.444e-02, 2.537e-02, 2.069e-01, -4.402e-01, -1.355e-01, 2.013e-01, -5.209e-02, 8.730e-02), r);\n\tr = MulAdd(s1_2, M4(-1.847e-01, -1.391e-01, 1.870e-02, 1.309e-01, 2.844e-01, 3.281e-02, 8.661e-02, -1.124e-01, -2.647e-01, -1.385e-01, 4.175e-02, -2.057e-01, -2.192e-02, -4.144e-02, -1.024e-02, 1.893e-01), r);\n\tr = MulAdd(s1_3, M4(6.497e-02, -1.624e-01, -1.987e-01, -9.848e-02, 2.015e-02, -1.708e-01, 1.357e-02, -7.956e-03, 6.654e-02, 1.122e-01, 5.543e-02, 1.017e-01, -9.423e-02, -6.570e-02, 2.641e-02, -1.932e-02), r);\n\tr = MulAdd(s1_4, M4(5.957e-01, -3.290e-03, -2.924e-02, -1.725e-01, 3.083e-01, -2.819e-01, -3.768e-02, -1.529e-01, -1.565e-01, 1.963e-01, -3.850e-01, -1.976e-02, 1.505e-01, -6.149e-02, 1.786e-01, -7.251e-02), r);\n\tr = MulAdd(s1_5, M4(4.111e-01, 2.475e-01, 3.496e-03, -1.918e-02, 3.022e-01, -3.534e-02, -1.221e-01, -1.536e-02, 2.677e-03, -5.321e-02, -4.602e-03, -3.425e-02, -9.627e-02, 1.600e-01, -1.031e-02, 1.667e-01), r);\n\tr = MulAdd(s1_6, M4(-1.234e-01, -8.749e-03, 2.104e-01, 4.344e-02, 7.180e-03, -2.356e-01, -2.194e-01, -7.217e-02, 5.686e-02, 1.327e-01, -1.764e-01, 3.995e-02, -4.611e-02, 5.706e-02, 1.884e-01, 5.417e-02), r);\n\tr = MulAdd(s1_7, M4(-2.653e-02, -8.258e-02, -1.446e-01, -1.117e-02, 7.767e-02, -2.549e-01, 3.667e-02, -1.282e-02, -6.408e-03, -1.133e-01, -3.932e-01, -2.699e-02, -8.717e-02, -6.648e-02, 6.511e-03, -5.576e-02), r);\n\tr = MulAdd(s1_8, M4(-1.220e-01, -7.955e-02, -6.599e-02, 1.149e-02, 9.638e-02, 1.366e-01, -2.627e-02, 8.338e-03, 1.672e-01, 1.442e-01, -1.766e-01, -1.002e-03, 7.156e-02, -8.644e-02, 6.749e-02, 4.908e-02), r);\n\tr = MulAdd(s2_0, M4(-7.895e-02, -4.986e-02, 9.949e-02, -6.798e-03, 6.860e-02, 9.700e-04, -2.217e-02, -3.504e-02, 3.005e-02, 3.853e-02, 9.426e-02, -1.053e-02, -9.779e-02, -5.977e-02, 1.559e-02, 1.355e-03), r);\n\tr = MulAdd(s2_1, M4(-4.166e-02, 2.806e-02, 3.031e-02, -1.847e-01, 5.010e-02, -2.266e-01, 6.752e-02, -8.594e-02, -1.181e-01, -3.677e-02, -4.894e-02, -3.854e-01, -9.499e-02, 8.388e-02, 2.762e-02, -6.678e-02), r);\n\tr = MulAdd(s2_2, M4(-5.632e-02, 1.572e-02, 1.683e-02, 7.935e-02, 9.419e-02, 1.391e-01, 7.486e-03, -9.942e-02, 4.651e-02, 6.332e-03, -9.859e-04, 3.178e-02, -1.804e-01, -1.141e-01, -1.244e-02, -2.914e-01), r);\n\tr = MulAdd(s2_3, M4(-9.909e-02, -9.091e-02, -1.990e-01, -6.067e-02, 6.513e-02, 3.841e-02, -1.060e-01, 9.766e-03, -5.435e-02, 1.849e-01, -1.739e-01, 3.043e-02, 2.413e-02, -1.910e-02, -1.332e-02, 2.362e-02), r);\n\tr = MulAdd(s2_4, M4(2.024e-02, -1.499e-01, -2.345e-01, 6.952e-02, 1.034e-01, 8.021e-03, 5.147e-02, 4.872e-02, -5.598e-02, -1.413e-01, 1.956e-01, -1.350e-02, -8.105e-02, -4.961e-03, -4.300e-03, 5.564e-02), r);\n\tr = MulAdd(s2_5, M4(2.284e-02, 3.897e-02, -3.260e-02, -6.460e-02, -1.718e-01, -6.209e-02, 1.432e-02, -8.207e-02, 5.573e-03, 1.411e-01, -7.778e-02, 6.243e-02, -5.605e-02, -1.684e-01, 1.622e-02, -1.153e-01), r);\n\tr = MulAdd(s2_6, M4(-1.053e-01, 4.113e-02, 1.887e-01, 5.750e-02, -5.854e-03, 8.616e-02, -1.401e-02, -3.050e-03, 2.563e-02, -1.300e-02, 4.781e-02, -8.556e-03, 2.668e-02, 1.663e-02, 1.541e-02, 1.076e-02), r);\n\tr = MulAdd(s2_7, M4(3.180e-02, 1.162e-01, 1.821e-01, -1.556e-02, 2.421e-02, 9.821e-03, -3.662e-02, -1.845e-02, 1.169e-01, 1.404e-01, -7.214e-02, -7.006e-03, 4.773e-02, -8.450e-02, -1.174e-01, -1.970e-02), r);\n\tr = MulAdd(s2_8, M4(-1.512e-02, -1.228e-01, 8.843e-02, -5.915e-03, 7.202e-02, 7.004e-02, -3.259e-02, -3.609e-02, 2.087e-02, -6.377e-02, 1.081e-01, -2.104e-02, -5.860e-02, -1.030e-01, -1.644e-02, 4.554e-03), r);\n\tr = MulAdd(s3_0, M4(-1.026e-01, -2.673e-01, 2.419e-01, 1.951e-02, 4.828e-02, -1.120e-01, 9.974e-02, -1.526e-01, 9.792e-03, -1.194e-02, 2.884e-02, -3.913e-02, -4.019e-02, 1.306e-03, -9.133e-03, 2.829e-02), r);\n\tr = MulAdd(s3_1, M4(5.099e-02, 1.166e-01, 9.745e-02, -6.132e-01, 9.886e-02, -1.197e-01, 1.625e-01, 4.334e-02, 1.472e-02, -2.947e-01, 7.289e-02, -4.089e-01, 5.513e-02, -2.122e-01, 1.863e-03, -1.450e-01), r);\n\tr = MulAdd(s3_2, M4(-8.166e-02, 7.367e-02, 6.029e-03, 6.953e-02, -2.331e-01, -1.240e-01, 5.302e-02, -2.107e-01, 1.353e-01, 7.785e-02, -4.803e-02, -4.513e-02, 1.067e-01, -3.485e-02, -8.357e-03, -2.302e-01), r);\n\tr = MulAdd(s3_3, M4(5.918e-02, 7.926e-02, -3.945e-01, 1.734e-01, 4.372e-02, 3.205e-02, -9.344e-02, -4.708e-02, -1.211e-01, 2.742e-02, 2.032e-02, 1.747e-02, -6.007e-02, 5.451e-02, -8.460e-02, -2.765e-02), r);\n\tr = MulAdd(s3_4, M4(6.409e-01, -1.212e-01, -1.105e-01, 5.278e-02, 5.982e-01, -3.474e-01, -1.078e-01, 2.872e-02, -1.287e-03, -2.148e-01, -1.752e-01, -8.497e-02, -3.730e-01, 8.165e-03, -5.113e-02, 1.547e-01), r);\n\tr = MulAdd(s3_5, M4(-8.520e-02, 1.228e-01, 6.252e-03, 1.262e-01, -2.339e-01, -1.996e-01, 1.169e-01, -1.452e-01, -1.209e-02, 1.329e-01, 1.228e-01, -1.087e-01, -1.669e-01, -2.158e-01, 9.188e-02, -4.751e-02), r);\n\tr = MulAdd(s3_6, M4(-2.664e-02, -4.621e-02, 1.539e-01, 1.262e-02, 2.615e-02, 1.102e-01, -3.000e-02, 2.546e-02, 2.668e-02, 4.050e-02, -1.118e-01, 2.701e-02, 1.231e-02, 2.743e-02, 3.393e-02, -1.372e-02), r);\n\tr = MulAdd(s3_7, M4(5.715e-02, -1.962e-02, 8.036e-02, -3.092e-02, 1.051e-01, -8.764e-02, -1.678e-02, 3.628e-02, -1.425e-01, -1.649e-03, -2.529e-01, 7.452e-02, 8.522e-02, -5.112e-02, 1.689e-01, -2.235e-02), r);\n\tr = MulAdd(s3_8, M4(-8.426e-02, -1.070e-01, 1.473e-01, -5.678e-02, -4.167e-02, -8.678e-02, -9.901e-02, 1.746e-02, -1.020e-01, -1.905e-01, 6.511e-02, -1.759e-02, -6.187e-02, 5.960e-03, -9.606e-03, 3.401e-02), r);\n\treturn r;\n}\n\nvoid Pass7(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 8\n//!DESC conv7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 4.493e-03, 9.879e-03, 4.742e-03, 7.609e-03 };\n\tr = MulAdd(s0_0, M4(1.631e-02, 3.701e-02, -2.434e-02, 8.471e-02, 4.263e-02, 5.692e-02, 5.410e-02, 4.454e-03, -5.624e-02, -7.308e-02, -8.138e-03, -1.520e-02, -5.507e-03, -4.765e-02, 3.131e-02, -6.383e-02), r);\n\tr = MulAdd(s0_1, M4(1.588e-02, 1.464e-02, 2.917e-02, -3.454e-02, -1.494e-03, -1.481e-02, -9.514e-02, -4.334e-02, 3.919e-02, 3.710e-02, 4.232e-02, 1.561e-01, 2.753e-02, -9.642e-02, -2.388e-01, -4.597e-02), r);\n\tr = MulAdd(s0_2, M4(5.193e-03, -9.561e-03, 5.468e-02, -6.118e-02, 3.707e-02, 5.846e-02, 7.340e-02, 2.255e-02, -3.022e-02, 5.151e-02, 2.252e-02, 7.787e-03, 2.760e-02, 3.242e-02, 9.113e-02, -4.307e-02), r);\n\tr = MulAdd(s0_3, M4(-8.921e-03, -7.181e-02, -1.512e-01, 4.666e-02, -4.676e-02, -1.771e-02, 6.837e-02, 8.735e-02, 3.111e-02, 7.935e-02, -4.188e-03, -1.714e-01, 2.293e-02, 9.058e-02, -1.764e-01, 8.294e-03), r);\n\tr = MulAdd(s0_4, M4(1.993e-01, 1.421e-01, 7.711e-02, 6.236e-02, -3.828e-02, -1.568e-01, -2.417e-01, -1.350e-01, -8.580e-02, -2.849e-01, -1.312e-01, -3.715e-01, -3.884e-02, -4.602e-01, -1.172e-01, 2.457e-01), r);\n\tr = MulAdd(s0_5, M4(1.442e-01, 6.769e-02, 1.666e-01, -5.753e-02, -8.668e-02, -7.359e-02, 3.895e-03, 1.682e-03, 1.593e-02, 9.310e-02, -4.170e-03, 1.061e-01, 4.005e-02, 7.271e-02, -1.133e-02, -6.095e-02), r);\n\tr = MulAdd(s0_6, M4(1.652e-02, -4.932e-02, -1.026e-01, -4.651e-03, 2.605e-02, 4.361e-02, -8.225e-02, -1.536e-02, -1.655e-02, 5.030e-03, 4.067e-02, 8.822e-02, -2.308e-02, 8.050e-02, -6.368e-02, 6.068e-03), r);\n\tr = MulAdd(s0_7, M4(5.290e-02, -1.020e-02, 1.377e-02, -2.169e-02, 3.890e-02, -7.155e-02, 6.368e-02, -3.030e-02, -3.352e-02, -7.496e-02, -3.534e-02, 4.126e-02, -1.180e-02, -1.737e-01, -3.262e-02, -1.906e-01), r);\n\tr = MulAdd(s0_8, M4(5.808e-02, 8.817e-02, 5.857e-02, -5.555e-04, 3.944e-02, -1.533e-03, -1.000e-02, -2.643e-02, 8.856e-03, -9.440e-02, -1.108e-01, -3.988e-03, -7.107e-02, -1.128e-01, -6.348e-02, -5.594e-02), r);\n\tr = MulAdd(s1_0, M4(6.233e-02, 2.632e-03, -2.944e-02, -7.241e-03, 6.527e-02, 5.843e-02, 7.877e-02, -3.049e-03, -4.898e-02, -9.257e-02, -7.349e-02, 2.061e-02, 1.027e-02, -9.056e-03, 1.359e-02, 6.851e-03), r);\n\tr = MulAdd(s1_1, M4(5.769e-02, -1.509e-01, -4.090e-01, -3.105e-02, 6.866e-02, 8.362e-03, -2.706e-01, -1.117e-01, -5.216e-03, 1.158e-01, 8.544e-02, 7.913e-03, -1.341e-02, -4.537e-02, -6.818e-02, -3.521e-02), r);\n\tr = MulAdd(s1_2, M4(7.527e-02, 4.825e-02, 1.968e-01, 4.230e-02, -9.816e-03, 1.132e-01, 1.272e-01, 6.139e-02, -5.991e-02, 8.797e-02, 2.490e-02, 8.849e-02, 6.118e-03, 8.134e-02, 1.287e-01, 1.401e-02), r);\n\tr = MulAdd(s1_3, M4(3.013e-02, -1.096e-01, -3.818e-01, -2.105e-01, -7.226e-02, 1.442e-01, 1.028e-01, 1.038e-01, 6.223e-02, 2.133e-03, 1.029e-01, 5.877e-02, 3.329e-02, -1.971e-02, -1.260e-01, -4.246e-02), r);\n\tr = MulAdd(s1_4, M4(4.756e-01, 6.473e-02, 1.863e-01, 2.217e-01, -3.590e-01, -6.434e-01, -1.796e-01, -1.997e-02, -2.041e-01, 8.227e-02, 1.277e-01, -2.091e-01, 1.817e-02, -2.976e-01, -3.877e-01, 8.980e-02), r);\n\tr = MulAdd(s1_5, M4(3.625e-01, -6.200e-02, -1.578e-02, -6.555e-02, -1.656e-01, 1.131e-02, 3.952e-02, -5.259e-02, 2.280e-01, 2.605e-01, -1.093e-01, 2.026e-01, -4.178e-02, 2.472e-02, 1.802e-01, 5.444e-02), r);\n\tr = MulAdd(s1_6, M4(2.555e-02, -6.827e-02, -1.084e-01, 3.976e-02, 1.274e-02, 6.716e-02, -4.575e-02, -2.343e-02, 2.861e-02, -7.587e-04, 5.146e-02, 1.335e-01, -1.543e-02, -4.756e-02, -5.113e-02, 1.725e-02), r);\n\tr = MulAdd(s1_7, M4(2.567e-03, -1.154e-01, 2.448e-02, 3.738e-03, 1.572e-01, -1.440e-01, 7.550e-02, -1.769e-02, 6.346e-02, 5.747e-02, 9.293e-03, -1.939e-01, 8.411e-03, -2.033e-01, -1.109e-01, -1.597e-01), r);\n\tr = MulAdd(s1_8, M4(1.227e-02, 1.120e-01, 9.656e-02, 1.212e-02, 4.532e-02, -1.865e-02, 2.360e-02, -2.847e-02, -1.250e-01, -1.511e-02, -4.564e-02, -2.920e-02, -3.807e-02, -2.316e-02, 2.247e-02, 4.428e-02), r);\n\tr = MulAdd(s2_0, M4(-1.919e-03, -4.392e-03, -1.503e-01, 2.610e-01, 3.634e-02, 1.206e-02, 3.478e-02, -7.205e-02, 4.359e-02, 5.512e-03, -2.062e-02, -7.692e-02, -5.576e-03, -1.764e-02, -8.326e-02, 1.027e-01), r);\n\tr = MulAdd(s2_1, M4(4.291e-02, -1.704e-02, 3.850e-01, -2.389e-03, 1.603e-02, 1.502e-02, -6.005e-04, -1.089e-01, 2.820e-02, -1.144e-03, -1.296e-02, 3.798e-02, 1.740e-02, -4.183e-02, 4.017e-02, 1.070e-01), r);\n\tr = MulAdd(s2_2, M4(-1.513e-02, -7.006e-02, -6.258e-02, -4.526e-02, 2.048e-02, 6.189e-02, -8.497e-03, 5.349e-02, 1.713e-02, -7.838e-02, -9.167e-02, 1.616e-01, 1.160e-02, -2.925e-03, 6.162e-03, 1.576e-02), r);\n\tr = MulAdd(s2_3, M4(1.732e-02, -7.628e-03, -3.389e-01, 9.102e-02, -1.819e-02, 3.728e-02, 4.961e-02, 7.595e-02, 9.210e-03, -2.414e-02, -1.018e-01, -2.461e-02, -2.735e-02, -1.492e-01, -9.396e-02, -1.685e-01), r);\n\tr = MulAdd(s2_4, M4(-3.447e-01, -1.770e-01, 3.567e-01, 3.690e-02, -4.678e-02, 1.335e-01, 9.902e-02, -4.134e-02, -1.305e-02, -2.474e-02, 5.640e-02, -4.424e-01, -2.472e-02, -5.142e-02, -1.626e-01, 7.690e-02), r);\n\tr = MulAdd(s2_5, M4(9.079e-02, -2.009e-01, -1.323e-01, -3.918e-02, 9.400e-03, 8.146e-02, 5.737e-02, -1.784e-02, -1.499e-01, -5.093e-02, -1.098e-01, 3.289e-02, 1.768e-02, 1.473e-02, 6.505e-02, 3.706e-02), r);\n\tr = MulAdd(s2_6, M4(3.560e-02, 5.268e-02, -1.088e-01, 2.118e-02, 2.692e-02, 1.300e-02, 3.629e-02, -1.314e-01, -3.040e-03, -2.379e-02, 4.084e-02, 2.610e-02, -5.023e-02, -4.076e-03, 8.663e-02, 5.673e-02), r);\n\tr = MulAdd(s2_7, M4(6.639e-02, -1.538e-01, 1.271e-03, 9.794e-02, 2.727e-02, -4.575e-03, 1.234e-02, 3.835e-03, -1.786e-02, -2.353e-02, -8.215e-06, 3.503e-02, 1.446e-02, -8.232e-02, -9.569e-02, -2.136e-02), r);\n\tr = MulAdd(s2_8, M4(-6.274e-02, 3.597e-02, -1.374e-02, 1.240e-01, -4.918e-03, 9.546e-02, 2.940e-02, 3.907e-02, -3.768e-02, -3.928e-04, -2.817e-02, -2.097e-03, -1.098e-01, -6.711e-02, -1.060e-02, -3.996e-02), r);\n\tr = MulAdd(s3_0, M4(-8.705e-04, 6.913e-03, -8.508e-02, 9.533e-02, -5.128e-02, 1.287e-01, -1.359e-01, -1.808e-01, 3.749e-02, -5.344e-02, -1.595e-01, -1.543e-01, 3.085e-02, 5.201e-02, 3.952e-02, -3.127e-02), r);\n\tr = MulAdd(s3_1, M4(4.285e-02, 1.749e-02, 4.436e-02, 1.969e-01, 7.142e-02, 4.295e-01, 2.308e-01, -2.510e-01, 6.257e-02, -1.732e-01, 8.754e-02, -1.097e-01, -4.325e-03, -7.495e-03, -3.973e-02, 5.667e-03), r);\n\tr = MulAdd(s3_2, M4(3.658e-02, 5.831e-03, 5.057e-02, -4.212e-02, -3.096e-01, 1.765e-01, 5.637e-02, 2.513e-01, 2.164e-01, -5.145e-02, -1.441e-02, 1.741e-02, 1.152e-02, -3.634e-03, -5.337e-02, 4.853e-03), r);\n\tr = MulAdd(s3_3, M4(-2.759e-02, -1.018e-01, -2.492e-01, -1.179e-02, 2.017e-02, 3.613e-01, 4.407e-01, 2.802e-01, 2.645e-02, -3.572e-02, -4.548e-02, 6.994e-02, -1.924e-02, -6.029e-02, -4.268e-02, -3.740e-01), r);\n\tr = MulAdd(s3_4, M4(-2.998e-02, -1.127e-01, 4.528e-02, -2.201e-03, -1.362e-01, -1.173e-02, 2.897e-01, 1.886e-01, 4.796e-02, -9.274e-03, -4.043e-02, -1.611e-01, 1.040e-01, 1.789e-01, 7.764e-02, 5.576e-02), r);\n\tr = MulAdd(s3_5, M4(2.363e-02, 9.824e-02, 6.683e-02, 4.886e-02, 1.781e-01, -2.578e-01, -2.830e-01, -2.291e-01, 2.046e-01, -7.397e-02, -9.421e-03, -1.329e-01, 4.403e-02, -5.740e-02, -8.843e-02, -1.077e-01), r);\n\tr = MulAdd(s3_6, M4(-9.686e-03, -6.426e-02, -8.451e-02, -1.543e-02, 4.212e-02, -8.461e-02, -6.925e-02, 1.326e-01, -2.320e-02, 1.063e-02, 5.104e-03, 2.349e-02, -1.832e-02, 1.542e-01, 2.940e-01, 9.564e-02), r);\n\tr = MulAdd(s3_7, M4(-4.924e-02, 2.808e-02, 6.840e-02, -2.073e-02, 1.797e-01, -1.848e-02, 1.170e-01, -3.062e-01, 2.053e-02, -2.797e-03, -1.919e-02, -8.586e-02, 6.958e-02, 2.482e-01, 1.206e-01, -2.592e-01), r);\n\tr = MulAdd(s3_8, M4(-1.581e-03, 1.504e-02, -6.646e-03, -2.199e-02, -2.461e-01, 2.447e-01, 2.928e-02, 6.105e-03, 3.845e-02, -8.580e-03, 2.356e-02, -3.423e-02, -5.714e-02, -1.385e-01, -1.413e-01, -1.655e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 1.407e-02, -1.303e-02, 6.423e-03, -6.361e-03 };\n\tr = MulAdd(s0_0, M4(-7.606e-03, -1.450e-01, 7.048e-02, -5.560e-02, -2.107e-02, -8.767e-02, 4.197e-02, -3.903e-02, 2.785e-02, 4.231e-02, -8.629e-02, 7.399e-02, -4.145e-02, 2.668e-02, 4.936e-03, 2.811e-02), r);\n\tr = MulAdd(s0_1, M4(-2.178e-02, -9.573e-02, 4.466e-02, -4.596e-02, 1.264e-01, -1.470e-02, -2.223e-02, -1.171e-01, 9.840e-02, 3.306e-02, -3.467e-02, 3.803e-02, -5.662e-02, 4.639e-03, -4.650e-02, -6.032e-02), r);\n\tr = MulAdd(s0_2, M4(-2.858e-02, -5.296e-02, 3.520e-02, 8.093e-03, -5.357e-02, -3.564e-02, 1.554e-02, 1.925e-02, -1.468e-02, 6.853e-02, 5.027e-02, 2.541e-02, 6.782e-02, 8.630e-02, -1.517e-02, 7.121e-02), r);\n\tr = MulAdd(s0_3, M4(3.350e-02, 7.664e-02, 1.083e-01, 4.846e-02, 1.295e-02, 2.439e-02, 6.116e-02, -6.071e-02, 6.696e-02, -6.066e-02, -1.552e-01, 1.984e-02, -1.023e-01, -1.433e-02, 2.393e-04, -3.211e-02), r);\n\tr = MulAdd(s0_4, M4(-8.745e-02, -1.353e-01, -9.550e-02, -5.556e-02, 2.083e-01, -6.727e-02, 8.289e-02, 4.910e-01, -7.763e-02, 2.153e-01, 4.773e-01, -1.019e-01, -2.608e-01, -2.339e-01, -1.347e-01, 3.045e-02), r);\n\tr = MulAdd(s0_5, M4(-4.816e-03, -5.705e-02, 5.751e-02, 6.914e-02, -2.323e-03, 1.954e-02, -6.234e-02, 2.904e-02, -1.618e-02, -5.947e-02, 8.672e-02, -9.847e-02, -1.798e-01, -3.539e-01, -1.188e-01, -1.909e-01), r);\n\tr = MulAdd(s0_6, M4(-7.460e-02, -4.881e-02, 9.756e-02, 1.474e-02, -6.241e-02, -1.905e-02, 4.644e-02, 2.807e-04, 4.447e-02, 5.130e-02, -1.164e-01, -1.247e-03, -6.590e-02, -2.624e-02, -5.928e-02, -3.539e-02), r);\n\tr = MulAdd(s0_7, M4(1.638e-01, 5.812e-02, -1.803e-01, -7.788e-02, -1.016e-01, -4.893e-02, -5.868e-02, -3.538e-03, -2.306e-01, -1.062e-01, 1.456e-01, 1.246e-01, -2.549e-01, 4.943e-02, 7.763e-02, 4.620e-02), r);\n\tr = MulAdd(s0_8, M4(-3.654e-02, -7.453e-02, 1.955e-02, 4.617e-02, 4.147e-02, -1.313e-02, -4.974e-03, -3.849e-02, -6.676e-02, -2.096e-02, 2.696e-02, 4.776e-02, 2.142e-01, 3.247e-02, -5.714e-03, -8.951e-02), r);\n\tr = MulAdd(s1_0, M4(-7.790e-02, -2.760e-01, 1.016e-01, -1.447e-01, -6.912e-02, -9.298e-02, 1.287e-02, -1.297e-02, -1.509e-02, 7.726e-02, -4.248e-02, 3.258e-02, 2.005e-02, -3.405e-03, -7.025e-03, 1.306e-02), r);\n\tr = MulAdd(s1_1, M4(-3.396e-02, 2.075e-01, -3.389e-01, -1.892e-01, 7.255e-02, 1.213e-01, -1.733e-01, -1.080e-01, 5.638e-02, 1.893e-01, -1.445e-02, 1.323e-01, 6.380e-02, -1.103e-02, 6.004e-03, 3.340e-02), r);\n\tr = MulAdd(s1_2, M4(9.550e-02, -7.969e-02, 1.467e-01, -1.510e-01, -6.064e-02, -1.011e-02, 9.627e-02, 5.701e-02, -1.502e-02, 5.514e-02, 1.194e-01, -8.703e-02, 1.962e-02, -2.335e-02, 1.273e-01, 3.821e-02), r);\n\tr = MulAdd(s1_3, M4(5.118e-02, -4.244e-02, 3.218e-02, 2.105e-01, 2.683e-03, 1.639e-01, -7.032e-02, -6.492e-03, -6.695e-02, -1.580e-01, -3.038e-02, -1.280e-01, 5.194e-02, -4.606e-02, 7.701e-02, 4.344e-02), r);\n\tr = MulAdd(s1_4, M4(-2.659e-01, -2.845e-01, -6.540e-02, 4.223e-02, -9.556e-02, 6.592e-01, -3.941e-01, 8.342e-01, 4.311e-01, -4.670e-01, 7.613e-01, 1.446e-02, -1.768e-01, 9.708e-02, -4.275e-02, -1.575e-01), r);\n\tr = MulAdd(s1_5, M4(8.871e-02, -1.971e-01, 5.135e-02, 8.891e-02, -3.116e-01, 4.480e-02, 3.692e-02, 8.906e-02, 2.387e-01, -1.665e-01, 1.100e-01, -2.411e-01, -3.362e-01, 3.610e-03, -3.060e-02, 5.738e-02), r);\n\tr = MulAdd(s1_6, M4(-8.271e-02, -1.283e-02, 5.737e-02, 2.650e-03, -3.927e-02, -7.014e-03, -8.666e-04, 6.659e-02, 3.380e-02, 7.843e-02, -5.220e-02, -4.679e-02, -5.453e-03, 1.609e-02, -4.788e-02, 2.133e-02), r);\n\tr = MulAdd(s1_7, M4(2.159e-01, -8.350e-02, -1.979e-01, -4.520e-02, -1.429e-01, 4.874e-02, -9.640e-02, -6.331e-02, 1.226e-01, 1.200e-01, 2.666e-01, 3.174e-01, -2.204e-01, 1.731e-02, 3.981e-02, 5.188e-02), r);\n\tr = MulAdd(s1_8, M4(-1.194e-01, -9.985e-02, 7.560e-02, 1.145e-01, -3.150e-04, 6.180e-02, -4.255e-02, -4.634e-02, -7.316e-02, 4.107e-02, 1.685e-02, -2.061e-03, 1.040e-01, 1.853e-02, -4.165e-02, -9.763e-02), r);\n\tr = MulAdd(s2_0, M4(-1.972e-02, -1.625e-01, -3.716e-02, -6.495e-02, 3.466e-02, -3.497e-02, 4.673e-02, -1.410e-02, 1.877e-02, -7.723e-02, 2.751e-02, 1.365e-02, -8.140e-03, -1.770e-02, 1.922e-02, -1.498e-02), r);\n\tr = MulAdd(s2_1, M4(-1.786e-02, -1.179e-01, 1.953e-01, 1.006e-01, 2.893e-02, 6.931e-03, -4.640e-03, -2.826e-02, 9.737e-02, -8.263e-02, 1.216e-01, -1.508e-01, -2.827e-03, -2.454e-02, -3.020e-02, -2.437e-02), r);\n\tr = MulAdd(s2_2, M4(1.134e-02, -1.006e-02, 1.179e-02, 3.855e-02, 7.075e-02, -2.106e-02, 9.123e-02, -8.254e-02, 2.474e-02, 1.142e-02, -9.821e-02, 6.447e-05, -1.998e-02, -2.427e-02, -1.350e-02, 2.790e-02), r);\n\tr = MulAdd(s2_3, M4(2.106e-01, 1.613e-01, -1.067e-01, -2.487e-02, -5.780e-02, -4.198e-03, -8.941e-02, -9.418e-03, 6.684e-02, 1.602e-02, -3.390e-02, 3.211e-02, -5.629e-02, 9.606e-02, 5.797e-02, -5.583e-03), r);\n\tr = MulAdd(s2_4, M4(-1.209e-01, 5.758e-01, 1.261e-03, 1.741e-01, -2.419e-01, -1.311e-01, 5.495e-02, 1.059e-01, 1.174e-01, 1.139e-01, 7.558e-02, 3.146e-02, 3.048e-01, 1.029e-01, -4.014e-02, 5.124e-02), r);\n\tr = MulAdd(s2_5, M4(2.601e-01, 1.167e-01, -1.328e-01, 6.108e-02, -2.140e-01, -1.833e-02, 7.347e-02, -1.673e-02, 8.485e-02, 7.450e-02, -4.355e-02, -2.229e-01, 2.606e-02, 5.274e-02, -3.851e-03, -4.787e-03), r);\n\tr = MulAdd(s2_6, M4(-3.845e-02, 1.459e-02, -9.795e-04, -3.515e-03, 9.791e-02, -4.729e-03, 4.591e-02, 2.429e-02, -4.431e-02, 5.498e-04, -4.050e-02, 1.392e-02, -2.258e-01, -6.294e-02, -4.323e-02, -1.549e-02), r);\n\tr = MulAdd(s2_7, M4(-1.184e-01, -2.039e-01, -1.069e-02, -2.209e-02, 1.933e-01, 4.867e-02, -1.127e-01, -1.196e-01, -9.386e-02, 2.226e-03, 1.569e-02, -4.063e-03, -5.044e-02, -1.930e-01, 7.287e-02, 1.237e-01), r);\n\tr = MulAdd(s2_8, M4(-8.680e-02, -9.201e-02, 2.773e-02, -4.725e-02, 4.422e-02, -1.834e-02, 4.184e-02, 1.488e-02, -3.397e-02, 1.727e-04, 2.558e-02, 5.452e-02, -2.750e-02, 4.529e-02, -3.442e-02, 7.563e-02), r);\n\tr = MulAdd(s3_0, M4(-7.896e-03, -1.086e-01, 5.701e-02, -3.965e-02, 8.469e-02, 1.352e-01, -6.528e-02, -1.477e-02, 2.109e-02, -8.591e-02, -4.694e-03, -3.514e-03, 5.960e-02, -4.514e-02, 1.488e-02, -3.246e-02), r);\n\tr = MulAdd(s3_1, M4(5.433e-02, -5.217e-02, -1.891e-02, -3.308e-02, -1.775e-01, -3.605e-02, 1.126e-01, -2.166e-01, 4.270e-02, -4.366e-01, 1.504e-01, -2.861e-01, -1.690e-03, 1.295e-02, -9.738e-04, -6.364e-02), r);\n\tr = MulAdd(s3_2, M4(2.461e-02, 3.878e-02, 2.036e-02, 5.172e-02, 1.882e-02, 1.194e-01, 2.614e-01, 4.576e-02, 1.069e-01, -1.662e-01, -9.787e-02, -4.312e-01, 6.190e-02, -4.314e-03, 8.764e-04, -1.972e-02), r);\n\tr = MulAdd(s3_3, M4(1.434e-02, 1.003e-03, 1.437e-01, -4.020e-02, 1.354e-01, -1.095e-02, -4.405e-01, -2.827e-02, 4.254e-02, -1.466e-02, -3.134e-02, -3.096e-03, -8.806e-02, 5.043e-02, 4.063e-03, 5.549e-02), r);\n\tr = MulAdd(s3_4, M4(-1.294e-01, 2.964e-02, 5.146e-02, 6.517e-02, -6.495e-01, -5.152e-02, 5.726e-01, 3.115e-01, 1.993e-01, -2.266e-01, -9.610e-02, 2.153e-01, 1.816e-02, -1.818e-01, 1.234e-01, -3.177e-01), r);\n\tr = MulAdd(s3_5, M4(7.489e-02, -3.528e-02, 6.062e-03, -3.331e-02, 2.551e-01, 2.377e-01, -1.997e-01, -4.533e-02, -3.031e-01, -8.469e-02, 1.362e-01, 2.675e-01, -1.314e-01, -6.837e-03, -1.181e-01, -1.001e-02), r);\n\tr = MulAdd(s3_6, M4(-6.568e-02, -2.240e-02, 4.283e-02, 1.558e-02, 6.800e-02, -5.739e-03, 6.958e-02, -2.239e-02, 2.790e-02, 5.060e-03, -7.806e-03, 2.765e-03, -1.731e-01, 1.712e-01, -3.499e-01, 6.484e-02), r);\n\tr = MulAdd(s3_7, M4(1.238e-01, -8.504e-02, -4.829e-02, -1.088e-02, 7.962e-02, -1.782e-02, -9.934e-02, -5.628e-02, -4.412e-02, 4.612e-02, 1.926e-03, 7.206e-02, -7.886e-02, 5.169e-02, 2.761e-01, 4.394e-01), r);\n\tr = MulAdd(s3_8, M4(-6.514e-02, -7.796e-02, -9.301e-03, 4.148e-02, 1.350e-01, -7.848e-02, 2.949e-02, -1.101e-01, 4.236e-02, 3.716e-02, 4.291e-02, 7.020e-02, 1.850e-01, -4.661e-03, -2.221e-01, -1.237e-01), r);\n\treturn r;\n}\n\nvoid Pass8(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 9\n//!DESC conv8\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 1.101e-03, 2.116e-04, -1.154e-03, -3.483e-03 };\n\tr = MulAdd(s0_0, M4(8.716e-02, -2.891e-02, -2.183e-01, -7.676e-03, -1.552e-02, 1.494e-02, 2.825e-02, -3.651e-02, 4.604e-03, 5.645e-03, 8.134e-03, -1.298e-02, 2.144e-02, 1.195e-03, 1.450e-02, 1.619e-02), r);\n\tr = MulAdd(s0_1, M4(-3.389e-02, -2.900e-01, -3.087e-01, -5.633e-02, 2.753e-02, 2.198e-02, -6.998e-02, -6.210e-02, 2.079e-02, 2.083e-02, 4.432e-02, -1.027e-02, 3.827e-02, 8.856e-04, 4.809e-03, -3.012e-02), r);\n\tr = MulAdd(s0_2, M4(8.829e-03, -1.200e-02, -2.731e-02, 2.589e-02, -4.841e-03, -1.333e-01, -3.516e-02, -2.656e-02, -1.726e-03, -4.446e-03, -8.521e-02, -2.038e-02, 5.978e-02, 9.301e-02, 1.080e-02, 5.518e-02), r);\n\tr = MulAdd(s0_3, M4(-8.477e-02, 6.865e-02, 1.804e-01, 1.239e-01, 2.939e-02, -5.360e-02, -1.714e-01, -4.654e-02, 5.288e-03, -1.770e-02, 1.804e-02, -1.039e-02, -1.376e-02, -4.660e-02, -1.135e-01, -8.134e-02), r);\n\tr = MulAdd(s0_4, M4(4.002e-02, 2.814e-01, 3.318e-01, -2.789e-01, -1.151e-02, -6.062e-02, 1.340e-01, -2.157e-01, -1.594e-02, 3.660e-02, -2.938e-02, 2.064e-01, 5.313e-02, 9.726e-02, -1.831e-01, 1.773e-01), r);\n\tr = MulAdd(s0_5, M4(1.286e-02, 5.915e-02, 9.298e-02, 7.291e-02, 2.413e-02, 1.863e-01, 4.568e-02, 1.337e-01, 1.420e-02, -1.661e-02, 8.140e-02, 2.640e-02, -4.800e-02, -3.460e-01, -3.232e-01, 8.426e-02), r);\n\tr = MulAdd(s0_6, M4(-1.923e-02, -7.129e-02, 1.256e-01, 1.482e-02, 2.752e-02, 6.057e-02, -2.595e-02, 1.176e-02, -5.789e-03, 1.235e-02, 2.846e-02, -3.297e-02, 2.591e-02, 9.832e-03, -1.272e-02, -2.601e-02), r);\n\tr = MulAdd(s0_7, M4(3.527e-02, 3.830e-01, 2.712e-01, 1.038e-01, 4.921e-02, -1.047e-01, -1.821e-01, 2.358e-02, -2.067e-02, 5.368e-02, 1.773e-01, -1.114e-02, -6.454e-02, -1.991e-02, -9.674e-02, -1.353e-01), r);\n\tr = MulAdd(s0_8, M4(2.063e-02, -5.830e-02, -7.769e-03, -2.469e-02, -2.694e-03, -5.945e-02, 7.213e-02, 3.814e-02, -1.769e-02, 9.680e-02, -5.531e-03, -8.608e-02, 5.463e-02, 1.511e-01, 2.052e-01, 5.571e-02), r);\n\tr = MulAdd(s1_0, M4(5.597e-02, -1.255e-01, -1.365e-01, -8.874e-02, -2.838e-02, 8.409e-03, 7.349e-02, 5.397e-03, 1.360e-02, -1.040e-02, -2.247e-02, 1.490e-02, -1.303e-02, 1.433e-02, 1.603e-02, 1.108e-02), r);\n\tr = MulAdd(s1_1, M4(-6.497e-02, -1.599e-02, 2.908e-02, -2.089e-01, 5.060e-02, -7.639e-02, -1.720e-01, -1.082e-01, 1.348e-02, 2.165e-02, -1.413e-02, 9.410e-02, 4.757e-03, -1.502e-02, -9.644e-02, 2.782e-02), r);\n\tr = MulAdd(s1_2, M4(1.597e-02, -7.105e-02, -3.690e-02, 3.880e-02, 2.393e-04, -3.600e-02, 7.562e-02, -9.162e-02, -4.744e-02, 5.457e-02, -5.874e-02, 2.780e-02, -9.128e-03, -4.318e-02, -6.162e-02, 9.923e-02), r);\n\tr = MulAdd(s1_3, M4(-9.415e-02, 8.443e-02, 1.850e-01, 2.272e-01, 6.203e-02, -6.275e-02, -1.687e-01, -1.142e-01, -4.309e-02, 4.878e-03, 2.693e-02, 3.195e-02, 1.393e-02, -8.775e-03, -3.935e-02, -2.571e-02), r);\n\tr = MulAdd(s1_4, M4(-8.029e-02, 9.122e-01, 1.307e-01, -3.950e-01, -2.208e-01, 1.042e-01, 1.690e-01, -9.825e-02, -5.692e-02, 7.496e-02, -1.333e-01, 4.595e-01, 8.206e-02, 5.508e-02, 1.307e-01, -1.802e-01), r);\n\tr = MulAdd(s1_5, M4(4.041e-02, 7.446e-02, 1.326e-02, 4.840e-02, -3.398e-03, 8.501e-02, -1.043e-02, 2.989e-02, 9.050e-02, -6.651e-02, 3.538e-03, -2.544e-01, -1.664e-02, -1.277e-02, 7.405e-03, 1.360e-01), r);\n\tr = MulAdd(s1_6, M4(4.049e-03, 2.225e-02, -1.467e-02, 4.199e-02, -1.629e-02, -2.449e-02, 9.364e-03, 3.742e-02, 1.461e-02, 1.914e-02, -1.475e-02, 2.694e-02, 1.939e-02, 1.508e-02, -2.493e-02, 2.145e-02), r);\n\tr = MulAdd(s1_7, M4(-1.139e-02, -2.558e-02, 2.030e-02, -1.332e-02, 9.789e-02, -1.343e-01, -1.585e-01, -2.415e-02, -3.155e-02, 5.701e-02, 9.033e-02, 1.058e-02, -6.113e-02, 3.790e-02, 5.825e-02, 1.036e-01), r);\n\tr = MulAdd(s1_8, M4(2.258e-03, 2.830e-04, 2.544e-03, 4.909e-02, -5.359e-02, -2.778e-02, 4.536e-02, 6.162e-03, -3.971e-03, 9.985e-02, -2.324e-02, -2.912e-02, 1.898e-02, 3.549e-02, 1.523e-02, -5.460e-02), r);\n\tr = MulAdd(s2_0, M4(-2.683e-03, -2.313e-02, -9.765e-02, 6.443e-02, -1.147e-02, -4.148e-02, -6.236e-02, 3.064e-02, 1.535e-03, -4.514e-03, -1.590e-02, -6.948e-03, 2.944e-02, -1.097e-02, 4.388e-02, -6.514e-02), r);\n\tr = MulAdd(s2_1, M4(-3.525e-02, 2.655e-02, 1.220e-01, 1.464e-02, 7.646e-02, -6.272e-02, -1.444e-01, -5.726e-02, -1.391e-02, -1.336e-02, -1.038e-01, 4.556e-02, 2.769e-02, 2.400e-02, 6.146e-02, -1.442e-01), r);\n\tr = MulAdd(s2_2, M4(9.590e-03, -1.095e-02, -2.527e-02, -2.780e-02, -6.799e-03, -9.882e-02, -4.968e-02, -1.557e-02, -6.521e-03, 2.517e-02, 6.286e-03, 4.018e-02, 1.262e-02, 9.613e-03, 4.015e-02, -4.083e-02), r);\n\tr = MulAdd(s2_3, M4(-3.107e-02, 2.050e-02, 2.190e-01, -5.231e-02, -1.644e-02, 1.728e-02, -9.647e-02, 2.000e-02, 6.885e-03, -3.772e-02, -1.800e-02, -1.167e-02, 3.840e-02, -8.962e-02, -1.389e-01, -9.490e-02), r);\n\tr = MulAdd(s2_4, M4(5.263e-02, -1.751e-02, -9.476e-02, -5.722e-02, 1.043e+00, 2.111e-01, 1.155e-01, 2.278e-01, 2.259e-02, -1.039e-02, 7.633e-02, -5.180e-02, 2.861e-01, 2.293e-01, 2.457e-01, -1.031e+00), r);\n\tr = MulAdd(s2_5, M4(-1.717e-02, 3.437e-02, 1.829e-02, 6.573e-02, 4.646e-02, 4.430e-01, 1.042e-01, -6.801e-02, 1.584e-02, 4.456e-02, 5.250e-02, -9.501e-02, -1.277e-02, -3.398e-02, 1.408e-02, 3.100e-02), r);\n\tr = MulAdd(s2_6, M4(1.276e-02, -2.000e-02, -1.067e-01, 1.639e-02, -6.351e-03, -6.506e-04, 1.168e-03, -8.173e-03, -7.451e-03, 1.989e-02, 1.142e-02, -8.287e-03, 4.566e-02, 2.864e-02, -2.859e-02, 4.019e-02), r);\n\tr = MulAdd(s2_7, M4(-3.441e-02, -1.582e-02, 3.287e-02, 7.107e-02, -4.680e-02, -8.453e-02, -8.472e-02, -1.265e-03, -9.706e-03, 4.809e-02, -3.750e-02, 9.239e-02, -3.768e-02, -1.209e-01, -1.171e-01, 2.288e-01), r);\n\tr = MulAdd(s2_8, M4(-1.296e-03, 1.673e-02, -1.629e-02, -4.858e-02, 1.224e-02, -1.321e-01, -4.292e-02, 1.164e-01, 2.477e-02, 7.985e-02, -7.381e-02, 4.411e-02, 2.398e-02, -1.543e-02, 3.089e-02, -2.552e-02), r);\n\tr = MulAdd(s3_0, M4(1.648e-02, 3.567e-03, -1.052e-01, 4.280e-02, -6.192e-04, -1.966e-02, -4.740e-02, -1.942e-03, -5.032e-03, 1.183e-02, -1.079e-02, 3.852e-03, 2.288e-02, 3.801e-03, 3.902e-02, -3.914e-02), r);\n\tr = MulAdd(s3_1, M4(-5.489e-02, -1.027e-01, -1.111e-01, 1.519e-01, -1.327e-02, 1.596e-03, -1.675e-01, 5.952e-02, -6.748e-02, 2.754e-02, -5.609e-02, 6.575e-02, 2.188e-02, 9.031e-03, 4.638e-02, -1.094e-01), r);\n\tr = MulAdd(s3_2, M4(3.213e-03, 4.675e-02, -2.631e-02, -1.086e-02, -1.903e-02, -1.028e-01, -1.084e-01, 2.649e-02, 9.822e-03, 7.725e-03, -1.691e-02, 3.222e-02, -9.035e-03, 2.980e-02, 5.749e-02, -3.044e-02), r);\n\tr = MulAdd(s3_3, M4(-7.619e-02, -1.622e-03, 3.324e-01, 4.752e-02, -3.685e-02, -4.685e-02, -8.527e-02, 2.294e-02, -2.439e-02, -6.236e-03, -3.104e-02, 3.233e-02, 1.789e-02, -4.432e-02, -1.392e-01, -9.780e-02), r);\n\tr = MulAdd(s3_4, M4(2.911e-01, 3.642e-01, 3.817e-01, -9.316e-02, 4.124e-02, -3.579e-02, 4.983e-02, 1.040e-01, 5.359e-02, -3.462e-01, 4.782e-02, -2.421e-01, 2.007e-02, -2.380e-01, -1.773e-01, -6.314e-01), r);\n\tr = MulAdd(s3_5, M4(-3.313e-03, -1.201e-02, -1.415e-02, 8.734e-03, 3.021e-02, 9.567e-02, 2.296e-02, -6.178e-02, 5.850e-02, 6.168e-02, -6.368e-02, -5.051e-02, -2.251e-02, -3.667e-02, 3.398e-02, 2.872e-02), r);\n\tr = MulAdd(s3_6, M4(4.334e-02, -4.642e-02, -2.431e-01, -3.343e-02, -2.479e-03, -5.827e-03, 3.528e-02, 3.433e-02, -4.470e-02, -2.127e-02, -7.138e-03, 3.796e-02, 1.379e-02, 4.208e-02, 4.114e-02, 2.813e-02), r);\n\tr = MulAdd(s3_7, M4(-1.170e-02, -4.718e-02, 2.204e-02, 5.829e-02, -5.554e-03, -1.019e-01, -2.598e-01, -1.456e-01, 1.797e-02, 1.255e-01, -5.581e-02, 1.283e-01, -3.416e-02, -8.180e-02, -5.774e-02, 9.365e-02), r);\n\tr = MulAdd(s3_8, M4(1.354e-02, 4.724e-02, 4.335e-02, 5.845e-02, -9.950e-03, -7.794e-02, -2.257e-02, 3.610e-03, 2.669e-02, -1.255e-01, -5.754e-02, 1.600e-01, -2.851e-03, 3.557e-02, 3.722e-02, 1.257e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 7.644e-03, -3.720e-03, -2.028e-03, -1.031e-03 };\n\tr = MulAdd(s0_0, M4(-8.139e-03, 4.801e-02, 1.603e-02, 3.358e-02, 4.412e-02, -3.926e-03, 1.599e-02, -2.674e-02, 1.052e-02, 3.787e-03, -7.897e-03, 6.304e-03, -5.446e-03, 4.456e-03, 3.906e-03, -3.014e-02), r);\n\tr = MulAdd(s0_1, M4(-4.183e-02, -4.484e-02, -1.794e-02, 8.394e-02, 9.001e-03, 8.132e-03, -1.436e-02, 6.112e-02, -3.553e-02, 1.347e-02, 1.129e-02, -1.392e-02, -5.328e-02, 4.777e-03, -2.372e-02, 1.061e-02), r);\n\tr = MulAdd(s0_2, M4(-9.735e-02, 5.944e-02, 2.399e-02, -2.746e-02, -3.898e-02, 3.360e-03, -6.036e-03, -3.314e-02, 4.432e-02, -1.326e-02, -1.406e-02, 3.821e-02, -3.058e-02, -5.659e-03, 4.182e-04, -4.163e-02), r);\n\tr = MulAdd(s0_3, M4(-1.753e-01, 8.851e-03, 9.107e-02, 6.816e-02, 5.333e-02, 1.918e-02, -3.936e-02, 1.615e-02, 5.222e-03, -9.198e-03, 2.073e-03, -2.037e-02, -3.624e-02, 5.469e-03, 3.329e-02, 7.935e-02), r);\n\tr = MulAdd(s0_4, M4(3.188e-01, -3.351e-02, 3.946e-02, -1.936e-01, -8.892e-02, -2.977e-02, 1.599e-02, -8.213e-02, -2.080e-02, -4.108e-02, 7.681e-02, 5.185e-02, 3.339e-01, -1.861e-01, 8.615e-02, -4.358e-02), r);\n\tr = MulAdd(s0_5, M4(-1.339e-01, 2.904e-02, -6.564e-02, 1.283e-01, -2.102e-01, -9.994e-02, 6.066e-02, 8.217e-02, 1.274e-01, 4.664e-02, 1.387e-02, -1.304e-01, -4.338e-01, 1.438e-01, -8.452e-02, 9.942e-02), r);\n\tr = MulAdd(s0_6, M4(-3.172e-03, 1.855e-02, -1.299e-01, -5.566e-02, 1.342e-02, -3.773e-02, 1.164e-01, -4.885e-02, 2.672e-02, 2.120e-03, 6.741e-03, -1.942e-02, 1.131e-02, 1.268e-02, -6.915e-03, -3.804e-02), r);\n\tr = MulAdd(s0_7, M4(-3.183e-02, 1.248e-01, 2.723e-01, 4.886e-02, -5.783e-02, -3.498e-02, -7.778e-02, 7.155e-02, -4.697e-02, -1.291e-02, 1.091e-02, -5.571e-02, 4.493e-02, 2.837e-03, 1.022e-01, -5.141e-02), r);\n\tr = MulAdd(s0_8, M4(-6.313e-03, -4.400e-02, 5.050e-04, 2.227e-02, -9.350e-02, -4.613e-03, -4.296e-02, 1.727e-03, 6.421e-02, 5.700e-02, 7.157e-03, 6.188e-02, -2.251e-01, -8.961e-03, -4.093e-02, 9.974e-02), r);\n\tr = MulAdd(s1_0, M4(-1.039e-01, 1.880e-02, 8.841e-03, 7.631e-02, -4.356e-03, 1.133e-03, 1.746e-02, -4.062e-02, -1.458e-02, -1.400e-02, -4.845e-03, 7.824e-03, 3.870e-02, -1.011e-03, -5.752e-03, -3.031e-02), r);\n\tr = MulAdd(s1_1, M4(6.233e-02, -2.081e-02, 2.657e-02, 9.817e-02, -5.733e-02, 5.913e-02, -4.861e-03, 5.648e-02, 1.835e-02, -1.568e-02, 6.182e-03, -1.379e-02, 6.751e-03, 4.911e-03, -1.231e-02, 3.740e-02), r);\n\tr = MulAdd(s1_2, M4(-4.699e-02, 8.618e-02, 1.229e-02, -6.548e-03, 2.591e-02, -9.380e-02, 4.808e-02, 1.493e-03, 5.835e-02, -2.621e-03, -2.251e-02, 2.527e-03, -8.374e-02, 4.826e-03, -2.984e-03, -1.785e-02), r);\n\tr = MulAdd(s1_3, M4(-9.938e-03, -4.651e-02, 1.316e-01, -1.821e-01, -4.344e-02, 1.548e-02, -5.539e-02, 1.124e-01, 6.993e-03, -5.261e-03, 2.396e-02, 7.078e-03, -3.761e-02, 1.679e-02, 6.152e-02, -6.838e-04), r);\n\tr = MulAdd(s1_4, M4(-1.082e-01, 1.483e-01, -1.165e-01, -6.575e-01, 3.764e-01, -5.165e-02, 2.034e-01, -3.174e-01, 2.801e-01, -2.852e-02, -1.561e-02, 4.623e-02, 8.767e-03, -6.216e-02, 7.259e-02, -4.773e-02), r);\n\tr = MulAdd(s1_5, M4(-4.327e-02, -5.334e-02, -1.740e-02, 8.949e-02, 2.073e-01, -9.327e-01, -5.263e-02, 8.325e-03, 2.765e-01, 7.962e-01, 6.864e-02, -1.538e-01, -1.516e-01, 2.461e-02, -7.246e-03, 5.921e-02), r);\n\tr = MulAdd(s1_6, M4(-8.185e-03, -3.844e-02, 7.961e-02, -9.410e-03, 4.108e-04, -2.167e-03, -1.127e-01, 2.967e-02, 1.753e-03, 4.788e-03, 4.251e-02, -1.486e-02, 2.875e-02, -1.012e-02, 3.946e-02, -3.900e-02), r);\n\tr = MulAdd(s1_7, M4(-8.943e-03, 2.983e-02, -5.527e-02, -2.334e-02, -6.379e-02, 3.683e-02, -3.037e-01, 1.132e-01, 1.233e-02, 2.120e-02, 2.496e-01, -1.707e-01, -4.890e-03, 4.398e-02, -4.966e-02, 3.483e-02), r);\n\tr = MulAdd(s1_8, M4(-4.941e-03, 7.157e-03, -1.099e-02, 4.138e-02, -7.410e-02, -5.163e-02, 3.074e-02, -3.082e-02, -2.063e-02, 2.558e-01, -1.401e-01, 1.954e-01, 1.225e-02, -6.256e-02, 2.581e-02, -3.332e-02), r);\n\tr = MulAdd(s2_0, M4(3.635e-02, 5.231e-03, -4.170e-02, 4.580e-02, -4.653e-03, 9.252e-03, -2.538e-02, 5.636e-03, 5.214e-02, 6.077e-03, -1.398e-02, -2.888e-02, -4.214e-02, 1.758e-02, 2.678e-02, -2.664e-02), r);\n\tr = MulAdd(s2_1, M4(-4.114e-02, 5.198e-02, 9.590e-03, -2.777e-02, -6.989e-02, 5.447e-03, -1.375e-02, 1.284e-01, -9.811e-04, 2.238e-02, 4.914e-03, 3.380e-02, 6.931e-02, -1.843e-02, 1.917e-02, 1.045e-02), r);\n\tr = MulAdd(s2_2, M4(8.599e-02, -1.864e-02, -7.699e-03, 1.346e-02, 6.046e-03, 3.235e-02, 1.948e-02, -2.311e-03, -2.597e-02, 3.028e-02, 3.122e-02, -1.293e-02, -1.139e-03, 9.886e-03, 1.895e-02, 1.435e-02), r);\n\tr = MulAdd(s2_3, M4(-9.374e-02, -4.919e-02, 9.379e-02, -7.869e-02, -1.614e-03, -1.447e-02, -1.151e-02, 1.634e-02, -4.178e-02, -4.215e-03, 1.515e-02, 3.309e-02, 1.458e-02, 4.229e-02, 1.160e-03, 3.808e-02), r);\n\tr = MulAdd(s2_4, M4(-2.479e-02, 2.123e-03, -1.670e-02, 1.710e-01, 1.476e-01, 1.105e-01, 8.431e-03, -6.465e-01, 1.034e-01, -2.353e-02, -4.223e-02, -4.599e-02, 2.390e-01, -8.565e-02, 1.056e-01, -1.849e-02), r);\n\tr = MulAdd(s2_5, M4(7.623e-02, 2.227e-02, 2.566e-03, -8.814e-02, -1.420e-01, -4.561e-02, -8.096e-03, 6.678e-02, 1.813e-01, -4.586e-02, -2.824e-03, 4.914e-03, -5.548e-02, 2.289e-02, -3.724e-02, -4.919e-02), r);\n\tr = MulAdd(s2_6, M4(1.146e-02, -9.689e-03, -4.242e-02, 5.383e-02, 3.955e-03, -2.442e-02, 7.879e-02, -3.362e-02, 2.215e-02, 2.008e-03, 5.887e-03, -1.880e-02, -2.466e-02, -2.656e-02, 1.069e-01, -5.091e-02), r);\n\tr = MulAdd(s2_7, M4(-1.438e-02, 1.372e-02, 4.616e-03, -6.651e-02, 1.724e-03, -2.181e-02, -1.028e-02, 1.685e-01, -1.914e-04, -5.789e-02, 1.803e-01, -4.568e-02, -2.648e-03, 9.449e-02, 1.811e-03, 1.118e-01), r);\n\tr = MulAdd(s2_8, M4(5.457e-02, 7.597e-03, 3.242e-02, -1.486e-02, 8.487e-02, -4.658e-03, -5.511e-02, -2.655e-02, 1.510e-01, -1.640e-02, 2.092e-01, -2.047e-01, -3.228e-02, -5.188e-02, -3.577e-02, 6.335e-02), r);\n\tr = MulAdd(s3_0, M4(2.751e-02, 1.164e-02, -7.354e-03, 1.738e-02, 5.841e-02, 2.209e-02, -2.322e-02, -1.156e-02, 6.615e-02, 1.279e-02, -4.472e-03, -9.096e-03, -1.528e-02, 1.383e-02, 1.389e-02, -3.084e-02), r);\n\tr = MulAdd(s3_1, M4(-2.044e-01, 3.340e-03, -3.237e-04, -3.528e-02, -4.652e-02, -1.142e-02, 2.224e-02, 8.739e-02, 8.402e-02, -1.391e-02, -6.910e-03, 5.285e-02, 1.661e-02, 1.119e-02, 8.985e-03, 1.291e-02), r);\n\tr = MulAdd(s3_2, M4(1.460e-01, -8.168e-02, 3.896e-02, -1.981e-02, -5.708e-02, 4.458e-02, 5.119e-03, -2.267e-02, -6.497e-02, 7.691e-02, -1.412e-02, -1.887e-03, 3.175e-02, 4.805e-02, 5.430e-03, 1.617e-02), r);\n\tr = MulAdd(s3_3, M4(-6.320e-02, -3.050e-02, -9.449e-02, -8.528e-02, -3.759e-02, -7.222e-03, -4.294e-03, 6.067e-02, -5.506e-03, 9.794e-03, 3.820e-02, 4.139e-02, -5.172e-02, 6.190e-02, 3.339e-02, 6.331e-02), r);\n\tr = MulAdd(s3_4, M4(-3.370e-01, 3.061e-01, 1.962e-01, 1.538e-01, 1.176e-01, -2.454e-02, 1.303e-02, -1.997e-01, 3.462e-01, 2.586e-02, -1.343e-01, -3.291e-01, -8.535e-02, -1.103e-01, -4.880e-02, 2.446e-01), r);\n\tr = MulAdd(s3_5, M4(1.265e-01, -1.734e-01, 2.422e-02, -1.558e-01, -2.041e-02, 4.496e-02, -1.906e-02, 8.517e-02, -3.115e-01, 2.843e-01, 2.961e-02, 7.657e-03, -2.348e-03, 6.712e-02, -4.156e-02, -5.768e-02), r);\n\tr = MulAdd(s3_6, M4(1.086e-02, -2.221e-03, 8.270e-02, 3.185e-02, -1.962e-02, -1.782e-03, -2.368e-02, -3.431e-02, -2.859e-02, -1.832e-02, -4.540e-02, 2.570e-02, -2.138e-03, -1.952e-02, 2.247e-04, -4.177e-02), r);\n\tr = MulAdd(s3_7, M4(-1.425e-01, 6.336e-02, -1.040e-01, 5.089e-02, -3.597e-02, 1.705e-02, -2.995e-02, 1.966e-01, 1.487e-01, -6.668e-02, 6.159e-01, -2.875e-01, -1.333e-02, 2.252e-02, -1.610e-01, 4.135e-02), r);\n\tr = MulAdd(s3_8, M4(-5.173e-02, -2.024e-02, 7.865e-02, 1.027e-02, 3.283e-02, 1.865e-02, 2.220e-02, -6.929e-02, 8.660e-03, 3.481e-02, -3.540e-03, 2.775e-02, -7.171e-02, -2.940e-02, 2.794e-02, 3.405e-02), r);\n\treturn r;\n}\n\nvoid Pass9(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 10\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0, t1\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 3.001e-04, 1.819e-03, -1.517e-04, 1.301e-03 };\n\tr = MulAdd(s0_0, M4(8.460e-03, 7.227e-04, -9.095e-03, -1.062e-03, 1.404e-03, -3.055e-03, 1.972e-02, -3.617e-03, -1.110e-02, -2.615e-03, -2.163e-02, 7.194e-03, 1.631e-02, 5.920e-03, -2.313e-02, 9.194e-03), r);\n\tr = MulAdd(s0_1, M4(1.074e-01, 4.925e-02, 3.811e-03, -3.480e-03, -1.927e-02, -9.323e-02, 3.442e-02, -3.375e-03, 8.942e-02, 5.369e-02, 3.605e-03, -2.149e-02, 1.238e-01, 1.032e-01, -7.511e-03, -2.420e-02), r);\n\tr = MulAdd(s0_2, M4(-4.397e-03, 6.268e-02, -1.117e-03, 5.248e-03, 6.173e-03, -4.652e-02, 2.153e-03, -1.332e-02, -2.124e-02, 6.323e-02, -6.680e-03, 2.414e-02, -2.336e-02, 3.126e-02, -1.137e-03, 8.318e-03), r);\n\tr = MulAdd(s0_3, M4(-2.841e-02, 1.182e-02, 5.716e-03, 1.522e-02, 1.087e-01, -2.623e-03, 2.560e-02, -1.135e-03, -2.773e-02, 4.115e-02, -9.738e-03, -5.203e-03, -4.173e-02, -2.201e-02, 3.295e-02, -1.266e-02), r);\n\tr = MulAdd(s0_4, M4(-4.117e-01, -2.906e-01, 1.740e-01, 7.056e-02, 2.449e-01, 2.290e-01, 2.660e-02, -1.887e-01, -1.606e-01, -2.341e-01, 2.386e-02, 9.567e-02, 2.140e-01, 5.510e-02, 3.705e-01, 3.566e-01), r);\n\tr = MulAdd(s0_5, M4(9.640e-03, -1.480e-01, -1.321e-02, 9.225e-02, -4.257e-03, -3.511e-02, -7.280e-03, -7.580e-02, -1.273e-02, 7.344e-02, -1.140e-02, 8.228e-02, -6.665e-02, 2.214e-02, -2.575e-02, 5.468e-02), r);\n\tr = MulAdd(s0_6, M4(2.629e-02, 3.221e-03, 1.147e-02, 1.322e-02, 1.657e-03, -8.292e-03, 2.597e-02, -3.207e-04, 4.843e-03, -2.782e-03, 6.102e-03, 1.200e-02, 7.469e-03, 1.380e-02, -1.182e-02, -1.349e-02), r);\n\tr = MulAdd(s0_7, M4(-2.984e-02, 2.692e-02, -3.633e-02, -2.845e-02, -5.878e-02, -4.681e-02, 9.777e-02, 7.897e-03, 2.619e-02, 4.158e-02, -6.065e-02, -5.580e-02, -1.509e-03, -3.725e-03, 3.659e-02, 2.728e-02), r);\n\tr = MulAdd(s0_8, M4(4.502e-03, 5.966e-03, -6.348e-03, -2.444e-02, -1.109e-02, -9.121e-03, 1.412e-02, -2.219e-02, 2.528e-02, 1.424e-02, -1.909e-02, 3.809e-02, 3.335e-03, -6.195e-03, -5.777e-03, -1.163e-02), r);\n\tr = MulAdd(s1_0, M4(7.927e-02, -3.654e-02, -7.104e-02, -5.741e-03, -4.468e-02, -1.148e-02, 3.049e-02, -7.024e-03, 4.900e-02, -1.474e-02, -2.352e-02, -7.655e-03, -6.889e-03, -1.154e-04, -1.898e-02, -1.786e-03), r);\n\tr = MulAdd(s1_1, M4(-1.474e-01, 4.527e-01, 9.350e-02, -1.063e-02, -1.159e-01, -1.820e-01, 2.065e-02, -2.246e-02, 8.028e-02, 1.627e-01, -5.292e-02, -5.642e-02, 9.400e-02, 6.621e-02, -1.423e-02, -2.229e-02), r);\n\tr = MulAdd(s1_2, M4(-4.682e-02, 7.007e-02, 4.030e-03, -5.523e-02, -4.159e-03, -3.023e-02, 3.451e-04, -1.617e-02, 1.268e-02, 2.771e-02, -5.629e-03, 1.612e-02, -2.279e-02, 1.539e-02, -6.265e-03, 3.223e-03), r);\n\tr = MulAdd(s1_3, M4(-2.588e-01, 5.084e-02, 2.529e-01, 3.827e-02, 2.549e-02, 6.341e-03, 9.548e-02, 2.094e-02, -2.024e-02, 2.899e-02, -3.879e-02, 7.127e-03, -3.527e-02, -2.582e-02, 3.312e-03, -1.217e-02), r);\n\tr = MulAdd(s1_4, M4(8.045e-02, -5.762e-01, -2.616e-01, -9.298e-02, 2.315e-01, -1.745e-01, 2.468e-02, 5.254e-01, -5.182e-01, -4.752e-01, 4.877e-01, 1.722e-01, 1.480e-01, 4.491e-02, 2.757e-01, 2.529e-01), r);\n\tr = MulAdd(s1_5, M4(1.792e-02, -1.146e-02, 2.996e-02, 1.509e-01, -2.630e-02, -1.523e-02, 2.457e-02, -5.773e-02, -2.553e-02, 3.057e-02, -3.759e-02, 1.110e-01, -6.776e-02, -6.445e-03, -3.691e-02, 4.384e-02), r);\n\tr = MulAdd(s1_6, M4(-9.344e-03, 5.605e-02, 3.183e-02, -6.304e-03, -1.731e-02, 2.691e-03, 2.398e-02, -1.864e-02, 1.464e-02, 8.938e-04, -1.099e-02, -1.108e-03, -4.259e-03, 6.059e-03, -2.336e-02, -1.933e-02), r);\n\tr = MulAdd(s1_7, M4(-4.542e-02, -1.644e-02, 5.247e-02, -2.091e-02, -7.788e-02, -3.454e-02, 8.288e-02, -1.948e-02, 7.775e-02, 7.495e-02, -1.214e-01, -8.277e-02, -2.031e-02, -2.472e-02, 2.223e-02, 2.040e-02), r);\n\tr = MulAdd(s1_8, M4(4.182e-03, 1.227e-02, -3.306e-02, -2.026e-02, -1.007e-02, -4.687e-03, 8.388e-03, -1.988e-02, 4.379e-02, 2.888e-02, -3.609e-02, -8.212e-03, 9.212e-03, -1.536e-02, -1.724e-02, -2.522e-02), r);\n\tr = MulAdd(s2_0, M4(1.291e-02, -7.279e-03, -1.884e-02, -1.385e-02, 5.309e-02, -1.217e-01, -5.973e-02, 3.029e-03, 4.425e-02, -1.353e-02, -1.157e-02, -2.189e-02, 2.732e-02, -1.622e-03, -2.147e-02, -6.696e-03), r);\n\tr = MulAdd(s2_1, M4(1.174e-03, 4.834e-02, 1.280e-03, -1.357e-02, 1.357e-04, -2.637e-02, -8.604e-03, -1.080e-02, -9.358e-02, 7.446e-02, -8.482e-02, 4.900e-03, 1.160e-01, 8.796e-02, 4.314e-02, -7.086e-02), r);\n\tr = MulAdd(s2_2, M4(-1.170e-02, -3.009e-02, -6.555e-03, 7.647e-03, -1.085e-04, -7.936e-03, 6.060e-04, -2.554e-03, 4.105e-02, -1.081e-02, 2.310e-02, -4.364e-02, -3.687e-02, -5.708e-03, 1.309e-02, 5.824e-03), r);\n\tr = MulAdd(s2_3, M4(-8.081e-02, 4.155e-02, 4.842e-03, 1.172e-03, 3.383e-01, -2.309e-01, 4.094e-01, -3.521e-01, -2.314e-02, 4.370e-03, 3.993e-02, -1.701e-02, 6.141e-02, 2.521e-02, 7.447e-02, -2.860e-02), r);\n\tr = MulAdd(s2_4, M4(9.761e-02, -2.114e-01, 6.705e-02, 8.186e-02, -7.398e-02, 1.014e-01, -1.438e-02, 7.350e-02, -6.589e-02, -1.153e-01, -6.204e-02, 1.552e-01, 6.467e-03, -3.129e-01, -4.580e-01, 3.175e-01), r);\n\tr = MulAdd(s2_5, M4(-3.723e-02, 4.215e-02, -3.603e-03, -8.876e-03, -3.673e-03, 6.429e-03, -2.291e-03, 1.391e-03, 3.951e-02, 3.606e-02, 4.704e-02, -1.833e-02, 1.196e-01, -1.401e-02, 5.382e-02, -9.219e-02), r);\n\tr = MulAdd(s2_6, M4(2.195e-02, -7.400e-03, -5.462e-03, -8.206e-05, -3.480e-02, 6.492e-03, 2.162e-02, -6.141e-02, -9.732e-03, 4.517e-04, 1.305e-02, -3.104e-03, 2.624e-03, -3.583e-03, 3.643e-02, -6.009e-04), r);\n\tr = MulAdd(s2_7, M4(-3.295e-02, -3.172e-03, 3.492e-02, -4.382e-02, 3.715e-02, -6.948e-03, -4.113e-02, 2.448e-02, 2.546e-02, 1.106e-02, -3.410e-02, -3.827e-03, -6.474e-02, 1.733e-02, 6.169e-02, -5.725e-02), r);\n\tr = MulAdd(s2_8, M4(5.160e-03, -9.184e-03, -8.453e-03, 1.735e-02, -9.055e-04, 2.434e-03, -2.602e-03, -6.082e-03, 2.434e-03, 1.192e-03, 4.964e-03, 1.187e-02, -1.960e-02, -1.187e-02, 4.503e-02, 4.133e-03), r);\n\tr = MulAdd(s3_0, M4(-3.137e-02, 2.267e-03, -2.172e-02, -6.702e-03, -5.108e-02, -1.915e-02, -5.771e-02, -1.442e-03, -5.126e-02, -3.757e-03, -2.437e-03, -2.560e-02, 8.972e-03, 5.875e-03, -2.397e-02, 6.039e-03), r);\n\tr = MulAdd(s3_1, M4(4.555e-02, 3.433e-02, 8.142e-03, -2.053e-02, 1.649e-03, 1.561e-02, -5.300e-03, -3.121e-02, 5.693e-01, -9.351e-02, -1.264e-01, -1.818e-01, 1.213e-01, -1.382e-02, 3.586e-02, -3.418e-02), r);\n\tr = MulAdd(s3_2, M4(-1.550e-02, 7.598e-03, -5.015e-03, 1.551e-02, -4.808e-03, -9.668e-03, -1.379e-03, -2.895e-05, -5.092e-02, -1.590e-01, -3.258e-02, 1.031e-01, -2.058e-02, -1.988e-02, 1.329e-02, 6.773e-03), r);\n\tr = MulAdd(s3_3, M4(-1.773e-02, 6.275e-02, -1.810e-02, 3.388e-02, 4.458e-02, -5.655e-02, 4.576e-02, -1.008e-01, 2.308e-02, 2.453e-03, -1.786e-02, -2.168e-02, 3.045e-02, 4.050e-02, 4.333e-02, -6.095e-03), r);\n\tr = MulAdd(s3_4, M4(3.527e-01, -5.137e-01, 2.419e-01, -9.781e-02, -1.164e-01, 2.269e-01, -7.007e-02, 2.617e-01, -1.806e-01, -9.152e-02, -5.043e-02, 2.164e-01, -5.430e-02, -2.751e-01, 6.120e-02, 8.343e-02), r);\n\tr = MulAdd(s3_5, M4(-4.383e-02, 5.480e-02, -6.708e-03, 1.620e-02, 6.208e-05, -5.279e-03, 4.534e-03, -2.042e-02, 7.568e-02, 5.119e-02, 2.790e-02, -2.173e-01, 5.097e-02, -1.295e-02, 5.325e-02, -1.220e-01), r);\n\tr = MulAdd(s3_6, M4(-1.231e-02, 1.110e-03, -2.134e-02, 2.965e-03, -1.631e-02, 1.171e-02, -8.523e-04, -2.774e-02, -2.671e-03, -5.021e-03, 1.219e-03, -1.524e-03, 3.867e-03, -2.020e-02, 4.456e-02, 6.040e-03), r);\n\tr = MulAdd(s3_7, M4(-3.383e-02, 1.125e-02, 9.401e-02, -1.240e-01, 4.461e-02, -2.716e-02, -9.338e-03, 1.624e-03, 1.596e-02, 1.825e-02, -1.462e-02, -2.676e-02, -1.739e-02, 8.447e-03, 2.961e-02, -1.786e-02), r);\n\tr = MulAdd(s3_8, M4(9.271e-03, -5.721e-03, -1.180e-02, 4.245e-02, -2.551e-04, 7.369e-03, -1.046e-02, 5.688e-03, -1.398e-02, 9.160e-06, 2.457e-02, 8.210e-03, -1.589e-03, -4.574e-03, 3.357e-02, 2.664e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass10(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy/CuNNy-8x8C-NVL.hlsl",
    "content": "// CuNNy 8x8C BILINEAR RGB NVL - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-D08N08\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, p) t.SampleLevel(SP, pos + p * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_SNORM\nTexture2D t3;\n\n//!PASS 1\n//!DESC in\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT t0, t1\n\n#define l0(x, y) (dot(MF3(-2.295e-01, -4.396e-01, -9.400e-02), O(INPUT, float2(x, y)).rgb) + MF(4.020e-01))\n\nV4 f0(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { -5.020e-03, -2.675e-02, -3.797e-02, 7.620e-03 };\n\tr = mad(s0_0, V4(-6.143e-02, 4.017e-02, -1.294e-02, -3.488e-02), r);\n\tr = mad(s0_1, V4(4.633e-02, 1.525e-01, -6.941e-02, -8.333e-03), r);\n\tr = mad(s0_2, V4(1.821e-02, -4.740e-02, 4.913e-03, 2.561e-02), r);\n\tr = mad(s0_3, V4(2.997e-02, 7.561e-02, -1.418e-01, 1.597e-01), r);\n\tr = mad(s0_4, V4(6.072e-01, -2.588e-01, 3.815e-01, -1.866e-02), r);\n\tr = mad(s0_5, V4(-3.722e-01, 8.227e-02, -5.957e-02, -2.609e-01), r);\n\tr = mad(s0_6, V4(3.887e-02, -2.027e-02, 2.253e-02, 1.248e-01), r);\n\tr = mad(s0_7, V4(-1.460e-01, 4.258e-02, -4.664e-02, 2.242e-01), r);\n\tr = mad(s0_8, V4(-1.609e-01, -3.864e-03, -3.072e-02, -2.202e-01), r);\n\treturn r;\n}\n\nV4 f1(MF s0_0, MF s0_1, MF s0_2, MF s0_3, MF s0_4, MF s0_5, MF s0_6, MF s0_7, MF s0_8) {\n\tV4 r = { 1.049e-01, -1.181e-02, -1.058e-02, -1.062e-02 };\n\tr = mad(s0_0, V4(-1.903e-03, 1.630e-02, -2.729e-02, -8.977e-03), r);\n\tr = mad(s0_1, V4(1.878e-02, -3.107e-01, -4.692e-01, 2.842e-01), r);\n\tr = mad(s0_2, V4(-9.660e-03, -8.709e-02, -1.921e-01, 1.169e-01), r);\n\tr = mad(s0_3, V4(-4.066e-03, 2.283e-02, 2.079e-02, -7.654e-02), r);\n\tr = mad(s0_4, V4(-1.286e-02, 5.680e-01, 2.607e-01, -3.642e-01), r);\n\tr = mad(s0_5, V4(1.919e-02, -2.319e-01, 3.279e-01, 8.074e-02), r);\n\tr = mad(s0_6, V4(5.403e-02, -2.921e-02, 1.082e-02, 6.616e-02), r);\n\tr = mad(s0_7, V4(-3.475e-01, 2.298e-02, 1.890e-01, -5.933e-02), r);\n\tr = mad(s0_8, V4(9.621e-03, 3.558e-02, -1.195e-01, -2.875e-02), r);\n\treturn r;\n}\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tMF s0_0 = l0(-1.0, -1.0);\n\tMF s0_1 = l0(0.0, -1.0);\n\tMF s0_2 = l0(1.0, -1.0);\n\tMF s0_3 = l0(-1.0, 0.0);\n\tMF s0_4 = l0(0.0, 0.0);\n\tMF s0_5 = l0(1.0, 0.0);\n\tMF s0_6 = l0(-1.0, 1.0);\n\tMF s0_7 = l0(0.0, 1.0);\n\tMF s0_8 = l0(1.0, 1.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8);\n}\n\n//!PASS 2\n//!DESC conv1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.907e-02, -5.779e-04, 2.647e-01, -6.629e-03 };\n\tr = MulAdd(s0_0, M4(-1.079e-01, -6.209e-03, -5.165e-02, 3.059e-01, -1.088e-01, 1.518e-02, -1.715e-01, -4.790e-01, 9.833e-03, 8.433e-03, -1.041e-01, -1.785e-01, 3.452e-02, -9.679e-03, 4.601e-02, -9.835e-02), r);\n\tr = MulAdd(s0_1, M4(-3.255e-02, 1.189e-01, 2.081e-01, 4.694e-01, 8.376e-01, 7.644e-02, 4.126e-03, -2.069e-01, 3.555e-01, 7.616e-02, 6.639e-03, 1.045e-01, 2.174e-02, 1.988e-01, 8.994e-02, -1.614e-01), r);\n\tr = MulAdd(s0_2, M4(-2.806e-01, -2.092e-01, 1.030e-01, -1.734e-01, 1.701e-01, 3.388e-02, -8.975e-02, -2.286e-01, 8.847e-01, 2.175e-01, -3.606e-01, -2.783e-01, 5.524e-02, 6.168e-02, -1.753e-01, 9.562e-03), r);\n\tr = MulAdd(s0_3, M4(-5.390e-02, 1.193e-01, -2.307e-01, 7.918e-01, 1.093e-01, 1.514e-01, -1.198e-01, 1.970e-01, -6.404e-02, -3.627e-02, -3.039e-01, 3.989e-01, -4.519e-02, 2.935e-02, -7.276e-02, 1.666e-01), r);\n\tr = MulAdd(s0_4, M4(-4.617e-01, 4.250e-01, -1.689e-01, 2.009e-01, 2.763e-01, -5.223e-01, 6.812e-02, 7.042e-01, 6.269e-01, 4.437e-01, -8.346e-01, 2.686e-01, -1.802e-02, -1.487e-01, -3.822e-02, 2.222e-01), r);\n\tr = MulAdd(s0_5, M4(3.233e-01, -1.180e-03, -4.640e-02, 1.197e-01, 4.480e-01, -6.224e-01, -1.695e-01, -3.179e-02, 1.063e+00, -2.599e-01, -8.862e-02, -1.894e-01, -2.136e-01, 1.618e-01, 1.563e-01, 1.551e-01), r);\n\tr = MulAdd(s0_6, M4(7.462e-02, -1.786e-01, 1.469e-01, 3.023e-01, 1.644e-01, -1.871e-01, 2.594e-01, -4.580e-01, 1.328e-01, -1.746e-01, -9.667e-02, -5.360e-02, 6.538e-02, 3.959e-02, 7.461e-02, -1.333e-01), r);\n\tr = MulAdd(s0_7, M4(-5.538e-02, -4.836e-01, -6.220e-02, -4.814e-01, 1.075e+00, -2.161e-01, 2.104e-01, 3.135e-01, -8.273e-02, 9.291e-02, 7.861e-02, 1.998e-01, -2.965e-02, -1.596e-01, -6.912e-02, 2.828e-02), r);\n\tr = MulAdd(s0_8, M4(3.116e-02, 2.568e-01, 1.662e-02, -1.116e-01, 9.998e-01, -5.913e-01, -1.385e-01, -6.196e-01, 1.286e-02, 2.039e-01, -1.960e-01, 4.033e-01, 1.547e-01, -9.270e-02, -2.751e-02, 1.296e-01), r);\n\tr = MulAdd(s1_0, M4(-4.361e-02, -2.010e-02, 2.791e-02, 1.056e-02, -1.917e-01, 1.587e-02, -7.196e-02, 1.375e-01, -2.334e-03, 4.510e-02, 3.333e-02, -1.447e-02, 3.589e-02, -4.001e-02, 7.667e-02, 6.927e-02), r);\n\tr = MulAdd(s1_1, M4(1.005e-01, 3.245e-01, 2.143e-01, -2.198e-02, 9.360e-02, -8.266e-02, 2.428e-02, 7.946e-02, -8.792e-02, -5.322e-02, 1.436e-02, 5.331e-03, 1.547e-01, 1.074e-01, 2.043e-02, 3.151e-01), r);\n\tr = MulAdd(s1_2, M4(-1.417e-01, -1.429e-01, 9.010e-02, -2.719e-01, -2.314e-01, -1.211e-01, -5.093e-02, 1.336e-03, -5.519e-02, -4.103e-02, -1.465e-01, 4.377e-02, 1.625e-01, 9.260e-02, -1.132e-01, 1.579e-01), r);\n\tr = MulAdd(s1_3, M4(-4.690e-02, 3.414e-02, -3.446e-01, 5.756e-01, 4.127e-02, 5.835e-02, -7.117e-02, -1.233e-01, -1.676e-01, -6.558e-02, -1.035e-01, 2.054e-01, 3.734e-02, 1.632e-02, -1.065e-01, 1.426e-01), r);\n\tr = MulAdd(s1_4, M4(2.777e-03, 5.095e-02, 7.937e-03, -5.967e-02, 1.193e-01, 3.256e-02, 9.556e-02, 8.563e-02, -1.386e-01, 2.129e-01, 1.093e-01, -4.675e-02, 1.955e-02, -5.246e-02, -2.056e-01, 2.337e-01), r);\n\tr = MulAdd(s1_5, M4(3.632e-01, -1.052e-01, -4.334e-02, 7.445e-02, -1.537e-01, -5.209e-02, -7.747e-02, 9.552e-02, -1.148e-01, -2.824e-01, 1.545e-03, -7.691e-02, -7.978e-02, 2.649e-01, 1.413e-01, 9.935e-02), r);\n\tr = MulAdd(s1_6, M4(-5.139e-02, 1.473e-01, 1.323e-01, 1.844e-01, -1.223e-01, -9.135e-02, 3.014e-01, -1.103e-01, 4.372e-02, 9.732e-02, 1.080e-01, 1.003e-01, 3.050e-02, -2.316e-02, 6.663e-02, -4.809e-02), r);\n\tr = MulAdd(s1_7, M4(1.893e-01, -4.030e-01, 4.219e-02, -2.791e-01, 2.341e-01, 2.789e-01, -4.978e-02, -1.129e-01, 7.288e-02, -1.657e-01, 5.783e-02, -2.239e-01, -4.618e-02, -1.246e-01, -4.753e-02, -2.995e-02), r);\n\tr = MulAdd(s1_8, M4(1.227e-01, -3.217e-02, 4.234e-02, -1.821e-01, -2.965e-01, -1.050e-01, -7.545e-03, -7.288e-02, -8.445e-02, 1.968e-01, -3.038e-02, -1.015e-02, 1.080e-01, -3.768e-02, -2.808e-02, 1.682e-01), r);\n\tr = MulAdd(s2_0, M4(4.262e-02, 5.784e-02, 1.454e-02, 3.577e-02, -1.138e-01, 1.886e-01, 1.264e-01, 1.255e-01, -9.393e-02, -8.500e-02, -9.118e-02, -9.240e-04, -4.070e-02, -6.934e-02, 9.588e-02, -2.368e-01), r);\n\tr = MulAdd(s2_1, M4(-3.233e-01, -1.860e-01, -1.585e-01, 9.243e-02, -6.862e-02, -2.190e-01, -1.071e-01, -3.454e-01, 4.177e-02, 4.386e-02, 2.941e-02, 5.866e-02, 2.344e-01, 2.047e-01, -2.278e-01, 4.611e-02), r);\n\tr = MulAdd(s2_2, M4(8.711e-02, 2.480e-02, -9.937e-02, -3.438e-02, 9.121e-03, 3.109e-01, 7.038e-03, 2.100e-01, 1.072e-01, -1.671e-01, -1.322e-01, -6.579e-02, 2.988e-01, -2.884e-01, -1.310e-01, -2.357e-02), r);\n\tr = MulAdd(s2_3, M4(-7.846e-02, 7.704e-02, -2.691e-01, -3.412e-01, 6.088e-02, -1.093e-01, -1.281e-01, 5.138e-01, 1.810e-02, 9.831e-02, 2.666e-01, -2.339e-01, 7.093e-02, -1.529e-01, 4.167e-02, -1.516e-01), r);\n\tr = MulAdd(s2_4, M4(5.444e-02, 2.909e-02, -2.713e-01, -5.557e-02, -1.632e-01, 2.026e-01, -1.414e-01, -1.113e-02, -1.238e-01, -1.247e-01, 2.065e-01, 2.474e-01, 4.052e-01, -2.307e-02, 7.400e-02, -2.563e-01), r);\n\tr = MulAdd(s2_5, M4(-8.010e-02, -2.663e-01, -1.548e-01, 5.065e-02, 1.857e-01, -4.630e-01, -9.547e-02, -1.356e-01, -1.459e-01, -1.654e-01, -1.372e-01, -1.509e-01, -2.538e-01, 8.992e-02, 6.959e-02, -4.835e-02), r);\n\tr = MulAdd(s2_6, M4(-6.965e-02, -1.484e-02, -1.520e-01, 8.388e-03, -6.074e-01, -3.065e-02, -1.481e-01, -5.162e-01, 2.566e-02, -6.327e-04, -2.711e-01, 1.572e-01, 7.159e-02, 2.031e-01, 5.821e-02, -1.886e-01), r);\n\tr = MulAdd(s2_7, M4(8.521e-02, 1.798e-01, -1.517e-01, 1.224e-01, -3.837e-01, -1.884e-01, -1.653e-01, -1.620e-01, -1.856e-01, 3.767e-01, -8.799e-03, 1.930e-01, 1.777e-01, -6.695e-01, 5.634e-02, -1.042e-01), r);\n\tr = MulAdd(s2_8, M4(2.738e-02, 7.023e-02, -6.588e-02, 4.945e-02, -2.180e-01, -4.060e-01, -1.982e-01, -2.085e-01, 9.355e-02, 6.833e-03, -8.415e-02, -3.284e-02, 1.634e-01, 6.600e-01, 2.179e-02, 3.345e-01), r);\n\tr = MulAdd(s3_0, M4(-3.002e-01, -2.938e-01, -1.650e-01, -7.428e-01, -9.888e-02, 2.103e-02, 8.913e-02, -1.157e-01, 2.042e-02, -9.108e-03, -5.994e-02, 5.539e-03, -1.426e-01, 1.501e-01, 1.070e-01, 5.497e-02), r);\n\tr = MulAdd(s3_1, M4(-1.402e+00, -8.043e-01, -6.448e-01, -4.208e-02, 4.390e-02, 3.385e-02, -4.404e-02, -3.245e-02, 1.901e-01, -9.100e-02, -3.288e-02, -5.554e-02, -1.932e-01, -2.189e-01, -2.138e-01, -1.562e-01), r);\n\tr = MulAdd(s3_2, M4(-2.942e+00, -1.968e-01, -2.618e-01, -9.005e-02, -3.651e-02, -3.300e-02, 4.116e-02, 1.509e-01, 9.940e-02, -3.205e-02, -1.049e-01, -4.534e-02, 4.099e-01, 1.030e-01, -1.503e-01, 8.364e-02), r);\n\tr = MulAdd(s3_3, M4(2.111e-01, 4.100e-01, -2.844e-01, -7.623e-01, 1.595e-02, -3.347e-01, -1.606e-01, 3.324e-01, 6.465e-02, 2.734e-01, 2.176e-01, 7.220e-03, -7.500e-03, -2.152e-01, 6.906e-02, 1.170e-02), r);\n\tr = MulAdd(s3_4, M4(1.670e-01, 4.952e-01, -5.006e-01, 9.297e-01, -7.439e-02, 6.976e-01, 3.422e-01, 1.587e-01, 2.158e-01, -5.071e-01, 7.355e-02, -3.825e-01, -3.580e-02, -3.637e-01, 5.284e-02, -6.810e-02), r);\n\tr = MulAdd(s3_5, M4(-5.111e-01, -2.216e-01, -1.097e-01, -6.024e-01, 7.385e-02, -1.143e-01, -3.750e-02, 2.547e-02, -4.781e-02, 3.365e-02, -1.393e-01, -7.232e-02, -3.006e-01, -8.865e-02, 9.295e-02, 1.912e-02), r);\n\tr = MulAdd(s3_6, M4(4.437e-01, 4.625e-01, 5.880e-02, 1.085e-01, -1.008e-01, 1.997e-01, 1.448e-02, 1.818e-01, -5.865e-02, -1.208e-01, -3.001e-01, 5.187e-02, -3.114e-01, 2.439e-01, 3.744e-02, -3.896e-01), r);\n\tr = MulAdd(s3_7, M4(2.651e-01, 3.014e-01, 3.736e-02, 8.684e-01, 1.542e-01, -5.957e-01, -1.418e-01, -4.727e-01, -3.251e-01, 1.105e-01, -8.376e-02, -2.022e-01, -3.469e-01, 5.911e-01, 4.129e-02, 2.129e-01), r);\n\tr = MulAdd(s3_8, M4(-1.414e-01, -1.073e-01, 1.316e-01, -1.006e-01, 1.568e-01, 3.334e-01, -1.739e-01, 2.173e-02, 2.287e-01, 2.815e-01, -7.362e-02, -1.505e-02, -2.690e-02, -1.337e-01, -9.948e-04, 1.909e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.419e-02, 1.370e-02, -1.518e-02, 1.616e-02 };\n\tr = MulAdd(s0_0, M4(-1.029e-02, -4.427e-02, -1.311e-02, -6.809e-02, -1.820e-01, 2.692e-02, -4.692e-01, 1.900e-01, -2.938e-01, -6.187e-02, 1.741e-01, -1.017e-01, 1.412e-01, 1.843e-02, 2.606e-02, 9.392e-02), r);\n\tr = MulAdd(s0_1, M4(-4.781e-01, -1.942e-01, 1.552e-01, -3.645e-01, 1.029e-01, 1.159e-01, -8.964e-02, 9.631e-02, -3.120e-01, 2.637e-02, -1.032e-02, -1.627e-02, 1.046e-01, -3.700e-02, -3.136e-01, -1.138e-01), r);\n\tr = MulAdd(s0_2, M4(-5.959e-01, 5.592e-02, -1.873e-01, -5.695e-02, 3.835e-01, 1.844e-01, 1.652e-02, 5.765e-01, -5.859e-01, 4.167e-02, -1.965e-01, -1.344e-01, 5.900e-01, 1.509e-02, 1.127e-01, -2.605e-02), r);\n\tr = MulAdd(s0_3, M4(1.675e-01, 9.790e-02, 2.316e-01, -1.930e-01, -1.233e-01, 1.554e-01, 7.309e-01, -9.317e-02, 3.019e-01, 3.548e-02, 1.979e-01, 2.452e-01, -1.320e-01, -2.426e-03, -6.473e-02, 2.362e-01), r);\n\tr = MulAdd(s0_4, M4(3.238e-01, -3.543e-01, 1.936e-02, -3.525e-01, 6.310e-02, 5.911e-01, 3.797e-01, -2.553e-01, 4.402e-01, -4.429e-02, 8.982e-01, 4.717e-01, -8.769e-02, 2.790e-01, -1.748e-01, 2.149e-01), r);\n\tr = MulAdd(s0_5, M4(-1.619e-01, -8.726e-02, 9.183e-02, -2.527e-01, 2.260e-01, 3.167e-01, 1.057e-01, -6.114e-01, -1.583e-01, 1.678e-01, 2.295e-01, -3.196e-02, 4.209e-01, -6.903e-02, -1.373e-01, 2.212e-01), r);\n\tr = MulAdd(s0_6, M4(6.322e-02, -5.028e-02, -5.582e-02, -8.759e-02, 1.828e-01, -7.608e-02, 3.712e-01, -2.018e-01, 7.812e-02, -1.612e-01, 3.925e-02, 2.454e-02, -3.222e-02, -5.491e-02, -4.835e-02, -8.672e-02), r);\n\tr = MulAdd(s0_7, M4(2.302e-01, 3.311e-01, -1.024e-01, 1.689e-01, 1.384e-01, -6.313e-01, 2.495e-01, 1.109e+00, -1.373e-01, 4.860e-04, 3.466e-02, -4.459e-01, -8.015e-02, -1.001e-01, 1.988e-01, -7.793e-02), r);\n\tr = MulAdd(s0_8, M4(-1.753e-01, 6.144e-02, 6.860e-03, -6.542e-02, 1.729e-01, 3.502e-02, -2.058e-01, 2.777e-01, 2.547e-01, -3.623e-01, -1.117e-01, -4.370e-01, 2.300e-01, -3.608e-02, 7.399e-02, -2.717e-02), r);\n\tr = MulAdd(s1_0, M4(6.933e-02, 7.252e-03, -4.641e-01, 3.847e-01, -1.899e-01, -4.916e-02, -8.596e-02, 6.860e-02, -1.260e-02, -1.411e-02, -1.429e-01, -7.949e-02, 7.628e-02, -3.338e-02, 1.520e-01, -1.907e-01), r);\n\tr = MulAdd(s1_1, M4(-1.096e-01, -1.356e-01, -5.957e-01, 1.985e-01, -1.362e-01, -3.702e-02, 5.611e-02, -1.867e-01, -1.512e-01, 7.857e-02, -5.154e-02, 5.215e-02, -8.526e-02, -7.589e-02, 4.015e-01, -3.616e-01), r);\n\tr = MulAdd(s1_2, M4(-5.254e-01, 5.750e-02, -2.225e-01, 3.322e-01, -5.401e-02, 5.723e-02, -1.843e-01, 1.116e-01, -6.092e-02, -1.324e-02, 1.852e-01, 2.526e-01, 5.620e-01, -4.316e-02, 1.137e-01, -2.298e-01), r);\n\tr = MulAdd(s1_3, M4(1.092e-01, 1.151e-01, -6.113e-01, 4.262e-01, -1.108e-02, 1.270e-01, 1.070e-01, 6.105e-02, -6.840e-02, 9.359e-03, 1.322e-02, 6.144e-02, -3.119e-02, -7.442e-02, -3.225e-02, 2.445e-01), r);\n\tr = MulAdd(s1_4, M4(4.469e-01, -3.722e-01, 1.759e-02, 1.817e-02, -1.038e-01, 1.900e-01, -1.480e-02, -1.003e-01, 2.094e-02, -3.295e-01, 3.884e-02, -3.455e-01, -6.084e-02, 2.868e-01, -2.548e-01, 1.942e-01), r);\n\tr = MulAdd(s1_5, M4(-2.857e-01, -4.954e-02, 1.537e-01, -3.915e-01, 1.973e-01, 1.338e-02, 1.035e-01, -5.796e-02, -3.144e-01, 9.483e-02, -1.388e-01, -1.597e-01, 2.885e-01, -5.359e-02, -1.151e-01, 2.880e-01), r);\n\tr = MulAdd(s1_6, M4(-8.887e-03, 3.547e-03, -7.855e-02, -3.055e-01, 2.156e-01, 2.369e-02, -1.089e-01, 1.467e-02, 3.331e-02, 4.691e-02, -3.707e-02, -4.816e-02, 1.843e-02, -2.316e-02, -5.976e-02, -1.949e-01), r);\n\tr = MulAdd(s1_7, M4(-1.638e-02, 2.342e-01, 1.319e-01, 1.744e-01, 1.130e-01, -3.627e-01, -1.653e-02, 5.432e-02, 1.635e-01, 3.669e-01, 2.821e-02, 7.278e-02, 4.355e-02, -3.466e-02, 1.538e-01, 1.175e-02), r);\n\tr = MulAdd(s1_8, M4(-1.298e-01, 1.342e-01, 9.409e-03, -8.570e-02, 1.419e-01, -1.479e-01, -5.092e-02, 1.062e-01, -2.235e-03, -2.221e-01, -8.666e-02, 2.477e-01, 2.057e-01, -9.286e-02, 9.491e-03, 8.760e-02), r);\n\tr = MulAdd(s2_0, M4(-3.941e-02, -5.823e-02, -8.454e-02, -6.757e-03, -4.737e-01, -2.306e-02, 6.786e-02, 1.628e-01, 3.545e-01, -1.548e-02, -4.186e-02, -1.596e-01, 3.441e-01, -5.585e-02, -1.227e-01, 4.865e-03), r);\n\tr = MulAdd(s2_1, M4(-2.910e-02, 4.163e-02, -9.177e-02, 3.575e-02, -1.154e-01, 1.228e-01, -1.005e-01, 4.365e-01, 8.323e-02, -7.856e-04, 9.573e-02, -2.650e-01, 1.488e-01, -1.503e-02, 3.164e-02, 1.331e-01), r);\n\tr = MulAdd(s2_2, M4(-7.101e-02, 3.065e-02, 4.069e-02, 8.709e-02, 1.813e-01, -7.222e-02, 4.975e-02, 2.198e-01, -1.686e-01, 7.047e-02, 9.845e-02, -2.971e-02, -1.017e-01, 3.237e-02, 8.955e-02, -4.723e-02), r);\n\tr = MulAdd(s2_3, M4(-1.017e-01, 5.565e-02, 3.915e-02, -4.115e-02, -1.513e-01, 1.492e-02, -1.683e-01, 5.292e-01, -3.045e-01, 1.206e-02, -2.988e-02, -1.685e-01, -1.559e-01, -1.358e-02, -1.107e-02, 8.501e-02), r);\n\tr = MulAdd(s2_4, M4(-1.248e-02, -3.360e-02, -1.182e-01, -9.052e-02, 4.120e-01, -2.568e-01, 1.347e-02, 2.203e-01, 5.053e-02, 7.868e-02, 1.555e-01, -5.636e-01, 1.146e-01, -5.034e-02, 3.738e-02, 1.086e-01), r);\n\tr = MulAdd(s2_5, M4(-1.433e-02, 1.914e-02, 5.146e-02, 5.477e-02, -1.658e-01, 7.262e-03, -1.016e-01, 2.164e-01, -1.221e-02, 2.271e-01, 8.276e-02, -1.134e-01, -7.808e-02, 7.249e-02, -1.490e-01, 1.520e-01), r);\n\tr = MulAdd(s2_6, M4(9.872e-02, 7.283e-02, 4.571e-03, 4.956e-03, 1.392e-01, 6.305e-02, 2.820e-01, 2.562e-01, 2.470e-01, 2.919e-01, -2.354e-01, 8.940e-02, -3.639e-01, 1.666e-02, -3.139e-01, 3.009e-01), r);\n\tr = MulAdd(s2_7, M4(7.391e-02, -9.179e-03, 2.303e-02, -9.008e-02, -1.926e-01, 1.451e-01, -3.073e-02, 3.175e-01, 1.068e-01, 4.190e-01, -3.119e-01, -3.721e-01, 1.989e-01, 6.877e-02, -6.490e-02, 3.883e-01), r);\n\tr = MulAdd(s2_8, M4(3.436e-02, -1.500e-01, 6.370e-02, 6.487e-02, -6.616e-02, 1.150e-01, -1.577e-02, -1.150e-02, 3.625e-02, 1.807e-01, 8.368e-02, -1.030e-01, 2.969e-01, -3.736e-01, -5.248e-01, -6.410e-02), r);\n\tr = MulAdd(s3_0, M4(-1.904e-01, 3.793e-01, -4.094e-01, -3.506e-01, -3.057e-01, -5.702e-02, -1.412e-01, 1.145e-01, 3.071e-01, -1.208e-02, -2.916e-02, -1.679e-01, 2.943e-01, -3.413e-02, 1.985e-01, -1.143e-01), r);\n\tr = MulAdd(s3_1, M4(-4.336e-01, 7.680e-01, -6.700e-01, -5.162e-01, 1.232e-01, 7.445e-02, -1.558e-01, 1.520e-01, 1.238e-01, -4.562e-02, 8.931e-02, 1.176e-01, -1.373e-01, 1.201e-01, 9.010e-02, 6.615e-02), r);\n\tr = MulAdd(s3_2, M4(7.564e-02, 1.828e-02, -3.335e-01, 7.187e-01, -2.198e-01, -3.277e-02, 1.775e-01, -9.321e-02, -5.860e-02, 4.389e-02, -1.336e-02, -2.077e-03, 1.672e-01, 2.256e-02, 2.100e-01, 5.344e-02), r);\n\tr = MulAdd(s3_3, M4(-6.569e-02, 1.159e-01, 7.211e-01, -2.791e-01, -1.254e-01, 9.532e-02, -1.811e-01, 3.237e-01, -4.603e-01, -7.759e-02, 9.809e-02, -5.216e-02, -3.020e-01, -5.589e-02, -8.145e-02, -1.713e-02), r);\n\tr = MulAdd(s3_4, M4(-2.708e-01, -1.237e+00, 2.507e-01, -1.349e+00, 3.077e-01, -4.526e-01, 3.560e-01, -2.586e-01, 2.017e-01, 2.772e-01, 9.947e-02, 1.834e-01, -2.344e-01, 8.792e-02, 1.398e-01, 4.550e-02), r);\n\tr = MulAdd(s3_5, M4(2.083e-01, 2.553e-01, 2.108e-01, 1.616e+00, 2.526e-01, 9.398e-03, -1.027e-01, -9.457e-03, 1.998e-02, 1.143e-01, 1.341e-01, 1.702e-03, -2.370e-01, 1.658e-01, -6.104e-02, 8.290e-02), r);\n\tr = MulAdd(s3_6, M4(-8.079e-02, 1.286e-02, -2.603e-01, -3.768e-01, -1.689e-01, 1.810e-02, 4.330e-02, -1.769e-01, -3.120e-02, 3.590e-01, 2.761e-02, 1.187e-01, 1.727e-01, 7.357e-02, -1.063e-01, -2.804e-02), r);\n\tr = MulAdd(s3_7, M4(1.037e-01, -5.252e-01, 3.481e-01, 3.128e-01, -8.170e-02, 7.354e-01, -5.280e-02, -1.332e-01, 2.176e-01, 6.305e-01, -1.500e-01, 3.806e-01, 3.882e-02, -3.656e-01, -3.983e-02, -2.263e-01), r);\n\tr = MulAdd(s3_8, M4(-1.199e-02, 1.848e-01, -4.894e-01, -3.677e-01, 1.045e-01, -3.526e-02, -5.185e-02, 2.838e-02, 9.936e-02, 1.189e-01, -6.276e-03, 2.501e-01, 1.499e-01, -4.103e-01, -1.141e-01, 1.415e-01), r);\n\treturn r;\n}\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 3\n//!DESC conv2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -6.188e-04, 6.040e-03, 8.696e-03, 2.214e-02 };\n\tr = MulAdd(s0_0, M4(2.433e-01, -3.881e-01, 1.184e-01, -6.328e-02, 2.093e-01, -1.453e-01, -1.044e-01, -1.624e-03, -1.289e-01, 7.280e-02, -2.728e-02, -3.045e-02, -2.419e-02, -1.908e-02, -1.990e-03, 6.380e-02), r);\n\tr = MulAdd(s0_1, M4(1.241e-01, 2.907e-01, -7.679e-02, 6.609e-02, 4.055e-01, 1.399e-01, 1.488e-01, -8.759e-02, 9.889e-02, -1.191e-02, -2.143e-02, -4.582e-02, 1.655e-02, -1.023e-01, -3.922e-02, 7.866e-02), r);\n\tr = MulAdd(s0_2, M4(1.018e-01, 5.323e-02, -1.317e-01, 1.143e-02, 3.795e-01, 1.037e-01, -5.552e-02, 9.257e-03, -1.724e-01, -1.334e-01, -1.614e-02, -1.734e-02, 3.272e-01, -1.067e-01, 1.857e-01, 1.775e-02), r);\n\tr = MulAdd(s0_3, M4(-9.351e-02, -8.100e-02, 1.528e-01, -6.036e-02, 5.321e-01, -2.519e-01, -1.133e-01, -1.084e-01, 9.980e-02, 6.664e-02, -4.920e-02, 5.423e-02, -3.489e-02, 6.527e-03, 4.906e-02, 3.445e-02), r);\n\tr = MulAdd(s0_4, M4(-7.289e-01, -1.403e-01, -2.049e-01, -8.240e-03, -2.363e-01, 2.203e-01, 2.280e-01, -2.894e-01, 6.564e-03, -1.410e-01, 4.797e-02, -4.672e-02, 2.459e-01, 7.236e-02, 2.042e-01, 1.049e-01), r);\n\tr = MulAdd(s0_5, M4(-1.679e-01, -1.223e-01, 5.324e-02, -2.159e-03, -1.943e-03, 1.791e-01, 1.407e-02, 6.576e-02, 1.712e-02, 2.206e-02, 1.580e-02, 5.191e-02, -2.160e-01, -4.008e-01, 1.662e-01, -1.676e-01), r);\n\tr = MulAdd(s0_6, M4(2.380e-02, -1.506e-01, -1.850e-01, -7.010e-02, -7.339e-02, -1.088e-01, -1.633e-02, 8.762e-02, 4.002e-02, -9.515e-03, 1.053e-01, -1.318e-03, 3.687e-02, 1.289e-03, -8.238e-02, 3.815e-02), r);\n\tr = MulAdd(s0_7, M4(1.500e-01, -2.010e-01, 7.452e-02, -9.216e-02, -9.507e-02, -9.233e-02, -1.655e-01, 9.834e-03, 9.053e-02, 1.116e-01, -6.831e-02, 1.544e-01, -1.290e-02, 2.871e-02, 4.676e-02, 6.820e-02), r);\n\tr = MulAdd(s0_8, M4(1.485e-01, 1.043e-02, -1.230e-01, 7.149e-02, -2.033e-01, 3.896e-02, -1.704e-01, 2.718e-02, -8.099e-02, -1.492e-02, 2.033e-02, -1.470e-01, 3.724e-01, -6.581e-02, -8.568e-02, 1.446e-02), r);\n\tr = MulAdd(s1_0, M4(2.111e-01, 7.064e-02, 1.062e-01, -3.356e-02, -1.960e-01, 7.451e-02, -4.637e-02, 4.996e-02, 3.633e-01, -2.194e-01, -1.977e-01, -4.877e-01, -4.173e-02, 7.349e-02, -8.448e-02, -2.853e-02), r);\n\tr = MulAdd(s1_1, M4(-7.255e-02, 2.476e-01, -4.985e-02, -9.240e-03, -2.809e-01, 1.161e-01, -3.182e-02, -2.748e-02, -6.600e-02, -4.941e-03, -3.764e-01, -6.918e-01, -8.408e-02, 1.003e-01, -8.359e-02, -5.399e-02), r);\n\tr = MulAdd(s1_2, M4(2.199e-01, -5.369e-03, -6.957e-02, -4.640e-02, 1.564e-01, -1.217e-01, -1.722e-02, -1.767e-02, -6.967e-01, -7.661e-01, -3.545e-01, 5.396e-01, 1.185e-01, -1.727e-01, -4.389e-02, -1.500e-01), r);\n\tr = MulAdd(s1_3, M4(-1.075e-01, 1.627e-01, 1.380e-01, -1.190e-02, 9.164e-02, -1.048e-01, -1.901e-01, 3.976e-02, 1.650e-01, 6.450e-01, -3.591e-01, -2.435e-01, 1.574e-02, -1.217e-02, 3.572e-02, -4.591e-02), r);\n\tr = MulAdd(s1_4, M4(-2.832e-02, -9.011e-02, -1.354e-01, -9.056e-02, -2.266e-01, 2.679e-01, 4.178e-01, 5.121e-02, -3.697e-01, 5.771e-01, -4.159e-01, -2.154e+00, 8.549e-02, -4.675e-02, 1.880e-01, 6.462e-04), r);\n\tr = MulAdd(s1_5, M4(-2.837e-01, -1.020e-01, 1.500e-01, -6.129e-02, 8.551e-02, 6.597e-03, 1.699e-01, 3.306e-03, -1.656e-01, -7.203e-01, -3.878e-01, 6.471e-01, 1.882e-02, -5.250e-02, -6.837e-02, -2.959e-01), r);\n\tr = MulAdd(s1_6, M4(8.637e-02, -1.856e-01, -1.333e-01, -8.966e-02, 7.885e-02, -4.568e-02, 5.150e-02, 7.534e-02, 2.183e-01, 5.912e-02, 3.611e-01, 1.868e-01, 7.463e-02, -6.546e-02, 8.653e-03, 2.389e-03), r);\n\tr = MulAdd(s1_7, M4(-2.107e-01, -6.405e-02, 1.977e-01, -7.070e-02, 1.735e-01, -3.623e-02, 1.193e-01, -1.876e-02, -3.815e-01, 6.116e-01, -7.696e-01, 1.309e-02, -9.006e-02, 2.588e-01, 2.957e-02, 7.022e-02), r);\n\tr = MulAdd(s1_8, M4(1.908e-01, 6.329e-02, -2.448e-01, 2.592e-02, -4.052e-02, -5.949e-02, 8.518e-02, 1.000e-02, -7.463e-01, -5.402e-02, 1.745e-01, 1.433e-01, 2.647e-01, -4.770e-02, 4.625e-02, 1.604e-02), r);\n\tr = MulAdd(s2_0, M4(7.971e-02, -1.099e-01, -2.069e-02, -9.078e-02, -5.069e-02, -5.648e-02, 4.399e-02, 1.920e-01, 2.338e-02, -7.457e-02, -2.665e-02, -4.715e-02, 9.422e-02, -7.926e-02, 1.338e-02, -6.313e-02), r);\n\tr = MulAdd(s2_1, M4(-1.406e-01, -1.581e-01, -1.626e-01, -2.596e-02, 5.828e-01, -2.151e-01, 1.535e-01, -6.966e-01, -5.149e-02, -8.108e-02, 1.054e-02, -4.783e-02, -1.567e-01, 2.909e-01, -6.311e-02, -2.142e-01), r);\n\tr = MulAdd(s2_2, M4(-2.106e-02, -5.202e-02, 7.175e-02, -3.027e-02, 1.773e-02, 3.321e-01, 7.717e-02, -1.694e-01, -9.209e-02, -2.248e-02, 1.867e-02, -8.038e-02, 1.468e-01, -1.793e-01, -1.160e-01, -9.110e-02), r);\n\tr = MulAdd(s2_3, M4(-4.802e-02, -2.944e-02, -9.839e-02, -1.450e-01, 8.564e-02, -7.952e-02, 4.528e-02, -2.834e-02, 6.636e-02, -2.842e-02, -8.696e-02, -1.222e-02, -3.515e-02, -7.263e-02, -1.196e-01, -6.308e-02), r);\n\tr = MulAdd(s2_4, M4(5.217e-02, -1.035e-01, -3.715e-01, -5.292e-01, -1.049e-01, -2.436e-01, 5.207e-01, 9.208e-02, 5.585e-02, 9.715e-02, 4.273e-02, 2.886e-01, -2.044e-01, 8.106e-01, -3.056e-01, 1.353e-01), r);\n\tr = MulAdd(s2_5, M4(-3.279e-01, 1.316e-01, -7.622e-02, -9.912e-02, -2.721e-01, -9.490e-02, 5.605e-01, -1.344e-01, -9.724e-02, -8.388e-02, -1.390e-01, 4.640e-01, -1.161e-01, -1.181e-01, -1.599e-01, -2.190e-01), r);\n\tr = MulAdd(s2_6, M4(1.149e-01, 8.812e-02, -1.579e-01, -1.800e-01, 4.197e-02, -1.301e-01, 4.577e-02, 5.256e-02, 7.827e-02, 5.972e-02, 1.893e-02, -6.895e-03, -2.070e-04, 1.411e-01, 9.564e-03, 7.850e-02), r);\n\tr = MulAdd(s2_7, M4(-1.247e-01, 1.674e-01, 1.048e-01, -6.845e-03, -1.308e-01, 9.539e-02, -1.721e-02, -1.677e-02, 4.760e-03, 1.023e-01, 1.821e-01, -3.942e-02, 2.139e-01, -1.663e-02, -9.827e-03, -6.087e-02), r);\n\tr = MulAdd(s2_8, M4(3.102e-02, 1.901e-02, -2.138e-01, 5.284e-02, 3.217e-02, -3.770e-02, -3.509e-02, 2.685e-05, 9.077e-02, -2.235e-01, 3.352e-01, 1.639e-01, -1.189e-01, -1.500e-01, -1.289e-01, 1.001e-03), r);\n\tr = MulAdd(s3_0, M4(-4.771e-02, -2.036e-01, 2.846e-02, 2.345e-03, -4.515e-02, 5.025e-02, -7.379e-02, -4.041e-02, -1.517e-02, 3.365e-02, -1.432e-01, -5.475e-03, 1.335e-02, -2.010e-01, -6.832e-03, -3.554e-02), r);\n\tr = MulAdd(s3_1, M4(-1.906e-01, -5.119e-02, 1.121e-02, 3.558e-02, -3.803e-01, 2.685e-01, -1.029e-01, 4.900e-02, 2.261e-01, -1.602e-01, 1.923e-02, 1.846e-01, -6.525e-02, -3.315e-02, -1.742e-02, -1.288e-01), r);\n\tr = MulAdd(s3_2, M4(-1.424e-01, -1.426e-01, 3.269e-03, 2.335e-04, 1.329e-02, -1.127e-01, -6.530e-02, -4.724e-02, 6.465e-02, 9.890e-02, 7.215e-02, -1.801e-01, -5.413e-02, -2.846e-01, -5.021e-02, -2.605e-02), r);\n\tr = MulAdd(s3_3, M4(2.748e-02, -3.440e-01, 1.746e-01, 1.563e-01, 8.409e-02, -2.266e-01, -1.234e-01, -1.325e-01, 3.038e-02, 1.448e-01, -8.858e-02, -4.470e-02, 2.247e-01, -2.876e-01, -2.567e-02, -1.657e-01), r);\n\tr = MulAdd(s3_4, M4(1.343e-01, -4.749e-01, 3.036e-02, 1.344e-01, -7.044e-01, 9.586e-01, 2.962e-02, 3.066e-01, 3.292e-01, -4.613e-02, 9.281e-02, -6.577e-02, 3.562e-02, 4.712e-01, -3.727e-02, -2.332e-02), r);\n\tr = MulAdd(s3_5, M4(-6.552e-02, 1.718e-01, 1.372e-02, 1.942e-01, -3.202e-02, -2.690e-01, 7.061e-02, -2.143e-01, -4.725e-01, 2.260e-01, -1.108e-01, -2.049e-02, -1.247e-01, -3.232e-01, 1.640e-02, -1.974e-01), r);\n\tr = MulAdd(s3_6, M4(5.384e-02, -4.926e-02, 8.471e-02, -5.508e-03, 3.127e-02, -1.024e-01, -6.807e-02, 1.355e-02, 8.709e-02, 3.431e-01, -2.891e-02, -1.667e-02, 5.495e-03, -8.979e-02, 1.211e-01, 8.106e-02), r);\n\tr = MulAdd(s3_7, M4(-1.086e-01, 3.082e-01, 3.515e-01, 1.455e-01, -1.311e-01, 1.556e-01, -9.044e-02, -6.178e-02, 1.637e-01, 9.177e-02, -1.618e-01, -7.785e-02, 4.761e-02, -1.013e-01, -9.998e-02, -1.424e-02), r);\n\tr = MulAdd(s3_8, M4(5.134e-01, 2.088e-01, 3.485e-01, 2.017e-01, 2.709e-01, 1.314e-01, -1.887e-01, 1.701e-02, -7.644e-02, -2.681e-01, 2.699e-01, 2.012e-02, -5.078e-02, -7.899e-02, 3.061e-02, -6.543e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -6.100e-03, -5.629e-03, -2.164e-03, -5.154e-03 };\n\tr = MulAdd(s0_0, M4(-1.903e-02, -1.951e-01, 3.731e-02, 2.407e-01, -4.087e-02, -1.242e-01, 1.591e-01, 1.461e-01, 1.144e-03, 6.971e-02, 6.376e-02, -4.822e-02, -4.229e-03, -2.948e-02, -2.453e-02, 3.279e-02), r);\n\tr = MulAdd(s0_1, M4(-1.397e-01, -2.025e-01, -1.174e-01, -2.333e-01, -6.637e-02, 1.611e-01, -2.374e-01, 1.920e-01, -8.692e-03, 1.128e-02, -7.000e-02, 1.043e-01, -1.646e-01, -7.105e-02, -5.099e-02, -7.850e-02), r);\n\tr = MulAdd(s0_2, M4(-3.493e-02, 1.631e-01, -1.295e-01, -3.915e-02, -8.689e-03, 2.153e-01, -1.786e-01, 8.576e-02, 3.957e-02, -1.725e-02, 6.660e-03, -9.336e-02, -1.944e-01, -2.239e-01, -1.146e-01, 6.279e-02), r);\n\tr = MulAdd(s0_3, M4(1.048e-01, -2.091e-01, 1.755e-01, 1.312e-01, -4.776e-02, 3.309e-02, -1.652e-01, 4.016e-02, -3.431e-02, -9.573e-02, 2.284e-03, 4.407e-02, -7.497e-03, 5.382e-02, 1.636e-02, -3.983e-02), r);\n\tr = MulAdd(s0_4, M4(2.202e-01, -1.826e-01, 1.413e-01, -8.920e-01, 2.626e-02, -6.326e-02, 1.165e-02, 2.816e-01, -1.011e-01, 1.952e-02, 1.909e-02, -1.977e-03, 1.714e-02, -1.762e-01, 1.561e-02, 1.896e-02), r);\n\tr = MulAdd(s0_5, M4(-8.408e-02, -8.961e-02, -7.309e-02, -9.936e-03, 1.714e-01, 3.017e-01, -3.199e-02, 3.944e-02, 5.782e-02, 4.041e-02, 1.135e-01, -1.899e-02, -6.783e-01, -7.227e-01, -5.489e-02, 3.710e-01), r);\n\tr = MulAdd(s0_6, M4(4.481e-02, -1.328e-01, 3.195e-01, 2.234e-01, 3.281e-02, -1.410e-01, -2.458e-01, -3.179e-02, -9.318e-03, -5.619e-02, -4.831e-02, 9.783e-03, 6.137e-05, -3.615e-02, -4.932e-02, 4.382e-02), r);\n\tr = MulAdd(s0_7, M4(8.583e-02, -3.896e-01, -2.696e-01, -1.379e-01, 8.896e-04, -4.113e-02, -1.003e-01, -2.234e-01, -2.070e-02, 6.911e-02, 5.273e-02, 5.350e-02, 1.194e-01, -2.388e-01, -7.249e-02, 1.641e-01), r);\n\tr = MulAdd(s0_8, M4(3.917e-03, 4.653e-02, 4.208e-02, -2.972e-02, 7.932e-02, 7.600e-02, 1.999e-01, 1.265e-01, 1.091e-01, -4.210e-02, -1.266e-01, -6.501e-02, -1.778e-01, -2.900e-01, -1.907e-01, -1.097e-01), r);\n\tr = MulAdd(s1_0, M4(-1.594e-02, -1.106e-01, -6.409e-02, -8.242e-02, -6.067e-02, -1.114e-02, 1.503e-01, -2.305e-02, 9.436e-02, 5.593e-02, -8.865e-02, -3.842e-01, -1.487e-02, 6.278e-02, -9.395e-02, 1.747e-02), r);\n\tr = MulAdd(s1_1, M4(-9.406e-02, 1.059e-01, -5.180e-02, 8.490e-02, 2.999e-02, 7.354e-02, 9.773e-02, 6.806e-02, -1.499e-01, 3.132e-01, -1.413e-01, 3.941e-01, -1.043e-01, 8.054e-02, 7.889e-02, 6.038e-02), r);\n\tr = MulAdd(s1_2, M4(-5.049e-02, 8.765e-02, -3.552e-02, 5.389e-02, 1.399e-02, 4.153e-02, -9.329e-02, 5.096e-02, -5.803e-03, -3.089e-02, -3.274e-01, 2.702e-01, -1.782e-01, -3.271e-02, 3.820e-02, 6.556e-02), r);\n\tr = MulAdd(s1_3, M4(1.295e-01, -1.074e-01, 1.311e-01, 1.953e-02, -7.175e-02, -2.176e-01, -4.113e-02, -6.624e-02, -1.264e-01, -1.084e+00, -8.971e-02, -4.195e-01, -3.640e-02, 1.017e-01, 1.374e-02, -3.757e-02), r);\n\tr = MulAdd(s1_4, M4(1.402e-01, 7.449e-02, 2.512e-01, -3.099e-01, -1.449e-01, -2.211e-01, 2.472e-01, -8.322e-02, -5.802e-01, -9.452e-01, -3.769e-01, -7.299e-01, 1.703e-02, 5.013e-02, 2.580e-02, 1.018e-01), r);\n\tr = MulAdd(s1_5, M4(-1.122e-01, -3.917e-02, 1.255e-01, 1.104e-01, 1.611e-01, 1.474e-01, -6.121e-02, -2.863e-02, 6.412e-01, -4.582e-01, -9.288e-01, -1.703e+00, -8.581e-01, -1.186e-01, -1.852e-02, 1.764e-01), r);\n\tr = MulAdd(s1_6, M4(-2.302e-02, -1.122e-01, -6.733e-04, 8.064e-02, 6.468e-02, -9.918e-02, 4.609e-02, -3.326e-02, -7.172e-02, -3.604e-01, 4.166e-01, 1.496e-02, 1.941e-02, -8.164e-03, -1.005e-01, 3.534e-03), r);\n\tr = MulAdd(s1_7, M4(-4.566e-02, 1.576e-01, -8.564e-02, -1.512e-02, 2.097e-02, -1.125e-01, 2.043e-02, -3.300e-01, -1.351e-01, -6.389e-01, -3.509e-01, -1.141e-01, 9.899e-02, -7.529e-02, 1.057e-01, 2.057e-02), r);\n\tr = MulAdd(s1_8, M4(5.309e-02, 7.249e-02, 3.752e-02, -4.934e-02, 5.045e-02, 9.157e-02, 3.824e-03, -2.342e-02, 3.056e-01, -2.377e-03, 4.013e-01, -8.652e-02, -1.557e-01, -6.980e-02, -3.395e-02, -1.831e-01), r);\n\tr = MulAdd(s2_0, M4(-2.140e-02, 3.373e-02, -6.324e-02, 1.341e-02, -6.006e-02, -1.390e-01, 1.304e-01, -7.396e-02, 1.053e-02, 4.035e-02, -7.677e-02, 2.362e-02, 1.909e-02, 2.325e-01, 1.447e-01, 7.323e-02), r);\n\tr = MulAdd(s2_1, M4(1.795e-02, -3.169e-04, 1.030e-01, 1.265e-01, -1.093e-01, -1.128e-01, -1.884e-02, 1.473e-01, 4.227e-02, 4.771e-02, -5.342e-03, 3.107e-02, 9.337e-02, 3.386e-01, 9.080e-02, -1.308e-01), r);\n\tr = MulAdd(s2_2, M4(-3.594e-02, -3.244e-02, 9.089e-02, 6.626e-02, 8.157e-03, 1.997e-01, 3.726e-01, -1.223e-01, 7.486e-02, 9.483e-02, -7.558e-02, 3.820e-02, 3.465e-02, 9.637e-02, 1.463e-01, 1.243e-01), r);\n\tr = MulAdd(s2_3, M4(-2.022e-02, 5.208e-02, 1.797e-01, 1.583e-02, -1.421e-01, -2.013e-01, 1.746e-01, -9.217e-02, -5.599e-02, 1.221e-01, -1.353e-01, 2.996e-03, -1.491e-02, 2.928e-02, 2.489e-02, 2.708e-02), r);\n\tr = MulAdd(s2_4, M4(-2.417e-01, 2.697e-01, 1.544e-02, 3.408e-01, 5.464e-01, -1.619e-01, -1.491e-01, -2.986e-02, -9.208e-02, -4.481e-01, -1.674e-01, -8.227e-02, -1.887e-01, -3.818e-02, 1.558e-01, -5.454e-02), r);\n\tr = MulAdd(s2_5, M4(2.332e-01, 1.534e-01, -1.023e-01, -1.223e-01, -4.520e-01, 2.117e-02, 4.059e-01, 1.739e-01, 9.972e-02, -3.460e-01, -2.232e-01, -9.188e-02, -3.011e-01, 9.661e-02, 2.294e-01, 4.967e-01), r);\n\tr = MulAdd(s2_6, M4(-2.340e-02, 4.372e-01, 5.542e-02, -9.070e-02, 6.642e-03, -7.093e-02, 3.614e-02, -1.240e-02, -1.341e-03, -6.169e-02, -1.849e-01, -2.486e-02, 2.831e-02, -1.802e-01, -2.525e-02, -5.149e-02), r);\n\tr = MulAdd(s2_7, M4(-7.215e-02, 6.276e-01, 2.174e-01, 2.019e-01, 1.082e-01, 5.354e-02, 1.379e-02, -1.519e-01, 3.392e-02, -2.885e-01, 6.024e-02, 1.196e-01, -1.217e-02, 4.156e-02, 7.591e-02, -7.825e-02), r);\n\tr = MulAdd(s2_8, M4(4.152e-02, 3.043e-02, -9.412e-03, 1.857e-01, -5.486e-02, -1.094e-02, 1.109e-01, 3.213e-02, 9.758e-02, -3.680e-01, -8.002e-02, 1.475e-01, -1.528e-01, 2.880e-01, 3.799e-01, 7.434e-02), r);\n\tr = MulAdd(s3_0, M4(-1.587e-02, -1.111e-01, -1.103e-01, -8.218e-03, -2.111e-02, -1.207e-03, -2.931e-02, -3.011e-02, -9.070e-03, 8.353e-02, -7.659e-02, 7.656e-03, 9.231e-03, 7.664e-02, -1.290e-02, 1.033e-01), r);\n\tr = MulAdd(s3_1, M4(-1.663e-02, -2.158e-01, -2.743e-02, -3.814e-02, -7.382e-02, -3.598e-02, -2.445e-01, -2.235e-02, -5.268e-02, 1.668e-02, 5.700e-02, 1.989e-01, 2.021e-02, 1.277e-01, -3.154e-02, -2.325e-02), r);\n\tr = MulAdd(s3_2, M4(2.185e-02, -7.522e-02, 9.069e-02, -6.605e-02, -7.998e-02, 3.981e-02, -5.009e-02, -1.897e-01, 1.052e-01, 2.140e-01, -1.733e-01, -5.374e-02, -1.005e-02, -3.066e-02, -2.403e-02, 1.075e-01), r);\n\tr = MulAdd(s3_3, M4(-7.010e-02, -2.416e-01, -9.685e-02, -1.127e-02, -1.742e-01, 6.831e-04, -1.254e-02, -1.752e-02, -7.957e-02, 5.913e-02, 1.330e-01, -3.948e-02, -3.154e-02, 3.913e-02, -1.559e-01, -2.551e-03), r);\n\tr = MulAdd(s3_4, M4(-3.353e-01, -1.453e-01, -4.606e-01, -9.453e-02, 5.683e-01, 5.758e-02, -6.855e-01, -2.280e-02, -1.119e-01, -3.075e-01, -1.257e-01, 1.525e-01, -1.558e-01, -3.928e-02, -1.199e-01, -2.134e-01), r);\n\tr = MulAdd(s3_5, M4(1.197e-01, -2.141e-01, -5.354e-02, -2.723e-01, -4.297e-01, -1.564e-01, -3.910e-03, 4.950e-01, 5.365e-01, 4.068e-01, 8.903e-02, -1.515e-01, -1.595e-01, -9.696e-02, 4.988e-02, 3.443e-01), r);\n\tr = MulAdd(s3_6, M4(-4.645e-02, -1.016e-01, -4.400e-02, -1.985e-02, -1.540e-02, -7.543e-02, -6.173e-02, -4.023e-03, -1.087e-02, 9.029e-02, -2.016e-02, -8.725e-02, 2.866e-02, -1.784e-01, -1.198e-01, -4.092e-02), r);\n\tr = MulAdd(s3_7, M4(1.047e-01, -3.071e-01, 4.047e-02, 2.940e-02, 9.727e-02, 1.644e-02, -4.037e-04, 9.290e-04, -2.380e-02, 2.100e-01, -4.936e-02, 1.706e-01, 1.528e-02, -1.440e-01, -1.978e-01, -1.937e-01), r);\n\tr = MulAdd(s3_8, M4(-3.675e-02, -2.837e-01, -2.650e-01, -1.265e-01, -8.426e-02, 8.075e-02, -1.650e-01, 1.255e-01, 4.193e-02, -1.812e-02, 2.658e-02, -1.294e-02, -1.497e-02, 5.846e-02, 5.440e-02, -5.090e-02), r);\n\treturn r;\n}\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 4\n//!DESC conv3\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 4.531e-03, -8.111e-04, -4.559e-03, 1.344e-02 };\n\tr = MulAdd(s0_0, M4(1.460e-01, -2.503e-03, -2.140e-02, 2.070e-01, 1.642e-01, 3.938e-02, -3.263e-02, 2.015e-01, -4.626e-02, 3.951e-02, 1.449e-02, 2.009e-01, 5.058e-02, -4.454e-02, -1.328e-02, 1.673e-01), r);\n\tr = MulAdd(s0_1, M4(6.362e-02, -5.345e-03, -1.315e-02, 2.544e-02, 1.481e-01, 1.702e-02, 4.910e-02, 7.624e-02, -1.192e-01, 7.445e-02, -6.032e-02, 5.518e-02, -1.580e-01, 1.302e-01, 9.593e-02, -3.273e-01), r);\n\tr = MulAdd(s0_2, M4(8.558e-02, -7.543e-02, -6.527e-02, 2.885e-02, 1.973e-01, -1.098e-01, -3.435e-02, 9.459e-02, 5.094e-02, 7.949e-03, 1.923e-02, -1.689e-01, 3.913e-02, -9.038e-02, 3.628e-02, -2.234e-01), r);\n\tr = MulAdd(s0_3, M4(1.441e-01, -9.906e-02, 2.901e-02, -8.990e-02, 9.260e-02, 1.779e-01, -5.753e-02, 1.198e-01, -4.089e-02, -2.679e-02, 2.567e-01, -2.316e-01, 2.826e-02, 3.657e-02, -5.245e-02, -1.481e-01), r);\n\tr = MulAdd(s0_4, M4(-6.895e-02, 1.641e-01, -2.386e-01, -2.188e-01, 1.864e-01, -2.987e-03, -9.756e-02, -2.084e-01, -6.674e-02, 5.989e-02, 2.618e-01, -1.881e-01, -2.528e-01, -7.958e-02, -1.960e-01, -8.874e-02), r);\n\tr = MulAdd(s0_5, M4(-2.057e-01, 2.163e-01, -1.032e-01, 2.606e-02, 2.536e-01, -1.757e-01, -3.088e-02, 9.971e-02, 3.508e-02, 6.749e-02, -7.082e-02, -5.879e-02, 4.556e-01, -2.563e-01, 3.354e-01, -1.140e-01), r);\n\tr = MulAdd(s0_6, M4(4.626e-02, -3.616e-02, 3.660e-02, -6.943e-02, -2.409e-02, -7.460e-02, 3.468e-02, -1.478e-01, 3.061e-04, 3.629e-02, 3.037e-02, -4.552e-02, -1.420e-01, -4.576e-02, -2.385e-02, 6.238e-03), r);\n\tr = MulAdd(s0_7, M4(2.317e-02, -4.572e-02, 1.373e-01, -4.412e-02, -2.654e-01, 1.417e-01, -2.566e-02, 7.823e-02, 5.192e-02, 1.253e-02, 2.714e-02, 4.986e-02, -6.517e-02, 1.725e-01, -3.147e-01, 1.810e-01), r);\n\tr = MulAdd(s0_8, M4(-7.655e-02, 1.568e-02, 4.386e-02, -2.880e-02, 1.294e-01, -4.386e-02, -1.892e-01, 1.013e-01, -4.186e-02, -1.205e-02, -1.252e-02, 2.672e-02, 9.946e-02, -1.116e-01, -8.791e-02, -5.216e-02), r);\n\tr = MulAdd(s1_0, M4(1.416e-01, -2.957e-02, 4.620e-02, 2.061e-01, -1.485e-03, 2.902e-02, 8.762e-02, -1.343e-02, -9.476e-02, -8.555e-02, -1.367e-01, -5.685e-01, 1.643e-02, 5.774e-02, -2.975e-02, -5.926e-02), r);\n\tr = MulAdd(s1_1, M4(-1.076e-01, 1.057e-01, 8.230e-02, 2.622e-01, -3.980e-02, 9.033e-02, 4.219e-02, 2.085e-01, -3.702e-01, 3.284e-01, -1.205e-01, 4.759e-01, -9.593e-03, 6.312e-02, -3.021e-02, -1.414e-01), r);\n\tr = MulAdd(s1_2, M4(-7.337e-02, 1.111e-02, 2.710e-03, 2.014e-02, 4.307e-03, 5.057e-02, -2.255e-02, 1.778e-01, 3.245e-02, 5.045e-02, -2.178e-02, -4.287e-01, -8.326e-02, -4.708e-02, 3.045e-02, 2.593e-02), r);\n\tr = MulAdd(s1_3, M4(3.675e-02, -1.743e-01, -1.996e-02, -2.225e-02, 3.629e-02, -4.751e-02, 4.292e-02, -4.781e-02, 1.730e-01, 1.333e-01, 1.877e-01, 7.252e-02, 5.021e-02, 4.278e-03, -8.554e-02, -1.798e-01), r);\n\tr = MulAdd(s1_4, M4(-2.651e-01, 7.933e-02, -1.525e-01, -4.634e-02, -4.800e-02, 4.021e-02, 9.500e-02, 3.373e-02, -4.455e-02, 1.410e-01, 7.064e-01, 1.166e-01, -2.249e-01, 1.612e-01, -1.835e-01, -1.426e-01), r);\n\tr = MulAdd(s1_5, M4(-2.822e-01, 1.256e-01, -6.588e-02, 5.687e-02, -1.322e-01, 6.351e-02, -1.372e-01, -4.876e-02, 6.367e-02, 1.225e-02, -3.775e-03, -3.821e-01, -8.246e-02, 2.336e-02, 5.701e-02, -9.513e-02), r);\n\tr = MulAdd(s1_6, M4(-4.435e-02, -2.383e-02, 2.873e-02, 1.033e-01, -3.893e-02, -4.387e-03, 1.064e-01, -1.552e-03, -3.830e-02, -8.205e-03, 6.505e-02, -1.395e-01, -2.812e-02, -1.357e-01, -4.313e-02, -1.492e-01), r);\n\tr = MulAdd(s1_7, M4(-4.363e-02, -2.478e-02, 8.346e-03, -4.201e-02, -5.849e-02, -1.863e-02, 6.421e-02, -7.445e-02, 1.853e-02, -3.674e-02, 6.083e-02, -4.624e-02, -2.120e-01, 3.527e-01, -3.120e-01, 9.880e-02), r);\n\tr = MulAdd(s1_8, M4(-9.998e-02, 1.131e-02, 3.393e-02, 8.990e-02, -5.088e-02, -1.396e-02, 6.092e-02, -2.058e-02, 1.320e-02, -3.463e-02, 4.451e-02, -6.250e-02, 2.477e-01, -9.122e-02, 4.647e-02, 5.444e-02), r);\n\tr = MulAdd(s2_0, M4(1.738e-02, 5.692e-05, -3.280e-02, 1.116e-01, -4.025e-02, -6.378e-03, 6.333e-02, -2.169e-02, 1.159e-03, 5.745e-02, -1.892e-02, -5.304e-02, -8.005e-03, 6.982e-03, 1.781e-02, -1.290e-01), r);\n\tr = MulAdd(s2_1, M4(2.053e-02, 1.001e-01, -5.542e-02, 1.997e-01, -1.069e-01, -1.316e-01, -9.407e-03, -2.496e-01, -1.271e-01, 5.652e-02, 9.357e-02, -5.321e-02, -1.236e-02, -3.268e-02, -1.057e-01, 3.677e-01), r);\n\tr = MulAdd(s2_2, M4(-1.572e-01, 1.607e-01, -1.469e-02, -2.933e-02, 1.361e-01, -1.904e-01, -1.410e-02, -1.019e-01, -2.218e-02, -1.175e-01, 1.221e-02, -9.969e-02, -1.374e-02, 1.115e-01, 5.505e-02, -4.364e-02), r);\n\tr = MulAdd(s2_3, M4(2.645e-02, -1.315e-01, 5.348e-02, -6.960e-02, -8.126e-02, 2.138e-02, 4.465e-02, -1.993e-03, -2.183e-02, -1.264e-01, -7.401e-02, -1.451e-01, 1.713e-01, -9.877e-02, 1.130e-01, -1.241e-01), r);\n\tr = MulAdd(s2_4, M4(-8.051e-01, -4.633e-02, -1.499e-01, 4.505e-02, -1.396e-01, 1.184e-01, -3.166e-02, 2.424e-01, -3.324e-02, -4.050e-02, -2.288e-01, 2.254e-02, 1.225e-01, 2.109e-01, 4.975e-01, 2.566e-02), r);\n\tr = MulAdd(s2_5, M4(-1.325e-01, 3.603e-01, -1.102e-01, 8.552e-02, 1.978e-01, -1.439e-01, 2.342e-02, -1.104e-01, -9.703e-02, 1.217e-03, 6.674e-02, -4.943e-03, 1.047e-01, 1.100e-01, -7.425e-02, -1.426e-01), r);\n\tr = MulAdd(s2_6, M4(6.620e-02, -5.105e-03, 5.341e-02, 6.188e-02, 1.215e-01, -4.942e-02, -2.350e-02, -2.389e-03, 7.577e-03, -1.194e-02, 7.483e-02, 2.797e-02, 8.517e-02, -1.188e-01, -9.627e-03, -3.775e-02), r);\n\tr = MulAdd(s2_7, M4(-7.349e-02, -8.638e-02, 1.668e-01, -1.634e-01, -2.610e-02, 5.929e-02, 1.200e-01, 1.551e-01, -6.725e-02, 2.538e-02, 3.603e-02, 6.823e-02, -9.709e-02, -5.752e-03, -5.046e-02, -1.508e-01), r);\n\tr = MulAdd(s2_8, M4(-1.805e-01, 7.995e-02, -1.702e-02, 6.758e-02, -5.362e-02, -2.128e-02, 5.766e-02, -1.263e-01, 1.730e-02, -2.622e-02, 8.422e-02, -8.742e-03, 1.736e-02, 5.187e-02, -1.939e-02, -6.008e-02), r);\n\tr = MulAdd(s3_0, M4(2.769e-02, -6.180e-02, -1.595e-02, -5.555e-02, 7.106e-02, 1.989e-02, -8.007e-03, 3.022e-02, 8.952e-02, -8.760e-02, 3.358e-03, 5.172e-01, -5.316e-02, -1.774e-02, -1.529e-02, 3.360e-02), r);\n\tr = MulAdd(s3_1, M4(2.083e-01, -1.959e-01, -3.492e-02, -1.062e-01, -1.991e-01, 1.627e-01, 4.752e-02, 1.935e-01, -4.772e-02, -4.620e-01, 6.199e-01, -5.559e-01, 5.407e-02, -1.701e-02, -9.253e-02, -2.324e-01), r);\n\tr = MulAdd(s3_2, M4(-2.318e-02, 4.885e-02, 4.424e-02, -1.622e-01, 3.683e-02, 8.032e-03, 4.170e-03, -2.176e-01, 1.676e-01, -5.978e-01, 1.706e-01, 5.688e-02, -3.584e-02, -3.374e-02, 9.832e-02, 8.184e-02), r);\n\tr = MulAdd(s3_3, M4(7.349e-02, -1.023e-01, 3.799e-02, -7.277e-02, -6.203e-02, -2.119e-02, 3.634e-02, -6.658e-02, -3.352e-01, 6.581e-01, 4.496e-01, -4.329e-02, 1.106e-01, -1.827e-01, 1.568e-01, 5.295e-02), r);\n\tr = MulAdd(s3_4, M4(1.424e-01, -9.230e-01, 4.605e-02, 1.233e-02, 3.738e-02, -2.959e-02, -9.470e-02, -1.115e-02, 3.737e-01, -2.685e-01, -1.735e-02, 1.542e-01, -3.248e-01, 3.305e-01, 1.752e-01, 2.610e-02), r);\n\tr = MulAdd(s3_5, M4(4.717e-01, -2.105e-01, 3.212e-02, 1.470e-02, 6.355e-02, 3.502e-02, -6.022e-04, 7.889e-02, -9.257e-03, -6.054e-01, 5.161e-01, 6.461e-02, 2.712e-01, -2.589e-01, 8.823e-02, 8.179e-02), r);\n\tr = MulAdd(s3_6, M4(6.777e-02, 4.699e-02, -9.605e-03, 7.196e-02, 3.270e-02, 2.843e-02, 6.386e-02, 2.463e-02, -6.469e-02, -1.302e-01, 3.400e-02, 6.313e-01, 1.639e-01, -1.763e-01, -8.542e-02, 1.369e-01), r);\n\tr = MulAdd(s3_7, M4(-1.241e-02, -2.214e-03, 2.025e-01, -6.725e-02, 7.727e-02, -1.428e-02, -5.117e-02, 1.164e-01, 3.355e-02, 1.263e-01, 2.701e-01, 3.418e-01, -1.227e-01, 7.170e-02, 3.163e-02, 8.146e-02), r);\n\tr = MulAdd(s3_8, M4(-5.885e-02, -2.514e-02, -1.081e-01, 3.977e-02, -9.304e-02, 1.579e-02, 5.317e-02, -7.459e-04, -1.390e-02, -3.147e-01, 6.463e-01, 3.237e-01, 3.543e-02, 2.026e-02, -4.326e-02, 8.351e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 7.221e-03, -6.181e-03, -9.146e-03, -1.076e-02 };\n\tr = MulAdd(s0_0, M4(5.109e-03, -1.013e-01, -4.476e-03, 2.371e-02, -1.188e-02, 2.613e-02, 4.354e-03, 5.263e-02, 2.261e-02, 1.565e-01, 1.185e-01, -7.047e-02, -5.470e-03, -6.023e-02, -5.102e-02, -4.978e-02), r);\n\tr = MulAdd(s0_1, M4(3.411e-02, -6.323e-02, 2.892e-01, 5.630e-02, -9.362e-02, 2.923e-02, 3.466e-01, 1.604e-01, -1.297e-01, 9.643e-02, -8.275e-02, -6.924e-02, -6.175e-03, 7.658e-03, -1.293e-01, 2.992e-02), r);\n\tr = MulAdd(s0_2, M4(-6.653e-02, 7.399e-02, -6.861e-02, 2.062e-02, -1.039e-01, -7.505e-02, 1.044e-03, 5.407e-02, -4.158e-02, 1.475e-02, 1.392e-02, 6.334e-02, 9.506e-02, 1.937e-02, -4.186e-02, -3.346e-02), r);\n\tr = MulAdd(s0_3, M4(-7.411e-02, -9.890e-02, 2.862e-02, -1.133e-02, -6.961e-02, 1.554e-01, -3.630e-02, 4.619e-02, -5.479e-02, -8.802e-02, -3.359e-02, 1.322e-02, 4.674e-02, 6.430e-02, -1.762e-01, -9.326e-02), r);\n\tr = MulAdd(s0_4, M4(3.798e-01, 3.569e-01, 3.303e-02, -3.879e-01, 1.660e-01, 3.253e-01, 5.718e-01, 4.811e-01, 2.049e-01, 2.783e-01, 1.532e-01, 2.310e-01, 1.625e-01, 2.305e-01, 1.518e-01, 1.102e-01), r);\n\tr = MulAdd(s0_5, M4(-2.511e-02, 7.963e-02, 1.293e-01, -1.074e-01, -3.559e-01, -3.133e-02, -3.580e-01, 1.722e-01, -2.363e-01, -6.018e-02, 2.465e-02, -2.001e-02, -3.252e-01, -1.818e-01, 3.119e-01, 2.003e-01), r);\n\tr = MulAdd(s0_6, M4(-6.486e-02, 7.469e-03, 1.003e-02, 1.480e-02, 6.965e-02, -1.185e-02, -4.961e-02, -3.236e-02, -8.740e-02, -5.041e-02, 1.229e-02, 5.909e-02, -6.895e-03, -9.904e-02, 8.634e-02, 4.633e-02), r);\n\tr = MulAdd(s0_7, M4(6.900e-03, -1.665e-02, -1.701e-02, -9.881e-02, -7.354e-02, -1.694e-01, 1.642e-01, 9.754e-02, 6.378e-02, 1.202e-02, 1.083e-01, -2.660e-02, -3.433e-01, -3.428e-01, 4.544e-02, 4.121e-02), r);\n\tr = MulAdd(s0_8, M4(1.150e-02, -9.370e-03, 3.042e-02, -6.306e-02, -1.127e-01, 1.582e-02, 1.082e-02, 1.499e-01, 3.286e-03, 9.324e-03, -7.105e-02, 2.163e-02, 2.231e-01, -2.537e-02, 2.663e-02, 1.020e-01), r);\n\tr = MulAdd(s1_0, M4(-2.882e-02, -1.364e-01, -6.985e-02, -8.632e-02, -1.159e-02, 5.210e-02, -1.038e-01, -3.735e-02, 1.732e-01, 1.714e-01, 4.997e-03, -9.303e-02, -7.473e-02, 5.196e-02, -7.526e-02, -1.339e-02), r);\n\tr = MulAdd(s1_1, M4(7.270e-02, -5.112e-02, 2.064e-01, -9.973e-02, 1.341e-01, -9.910e-02, 1.171e-01, -1.909e-02, 2.098e-01, 2.391e-01, 1.460e-01, -2.052e-01, -9.156e-02, 3.022e-03, -7.790e-02, -1.620e-02), r);\n\tr = MulAdd(s1_2, M4(8.411e-02, 2.544e-02, -8.592e-02, -1.476e-01, -8.090e-02, 2.901e-02, 3.733e-03, 7.357e-02, 1.347e-01, 1.987e-02, 1.459e-01, -1.547e-02, 1.014e-01, -2.559e-02, 8.887e-02, 2.969e-02), r);\n\tr = MulAdd(s1_3, M4(9.597e-02, -3.545e-01, -2.156e-02, -4.908e-02, -5.108e-02, -8.399e-02, 5.381e-02, 1.013e-01, 3.602e-02, 2.681e-01, 2.220e-02, 1.373e-01, 4.991e-02, 4.378e-02, -7.537e-02, -2.068e-01), r);\n\tr = MulAdd(s1_4, M4(5.888e-01, 2.576e-01, -3.241e-01, -4.970e-01, 1.664e-01, 2.416e-01, 3.465e-01, 7.672e-02, 1.097e-01, 5.451e-01, 1.206e-01, 4.713e-01, -2.924e-03, 2.240e-01, 1.714e-01, -3.315e-04), r);\n\tr = MulAdd(s1_5, M4(1.887e-01, 8.490e-02, -8.236e-02, -2.263e-01, -4.718e-02, 6.606e-02, -2.596e-01, -2.097e-01, -1.909e-01, -3.157e-01, 1.629e-01, 3.072e-02, 4.002e-01, 1.577e-01, 1.484e-01, 5.068e-02), r);\n\tr = MulAdd(s1_6, M4(-9.601e-03, -5.944e-02, -6.170e-03, -5.131e-02, -6.913e-02, -1.295e-02, -2.661e-02, 8.608e-03, -1.877e-01, -9.093e-02, 4.880e-02, 7.809e-02, 2.246e-01, 1.962e-01, -1.578e-02, -1.218e-01), r);\n\tr = MulAdd(s1_7, M4(1.245e-01, -6.743e-02, -7.707e-02, -2.127e-01, -2.682e-02, -5.999e-02, -2.738e-02, -2.108e-02, 7.802e-03, -2.028e-01, 1.086e-01, -8.522e-02, -3.510e-01, -1.243e-01, -7.196e-02, 5.012e-02), r);\n\tr = MulAdd(s1_8, M4(1.554e-01, 1.041e-01, -8.905e-02, -1.498e-02, -2.704e-02, -4.771e-03, -8.702e-02, 6.094e-02, -7.724e-02, -1.039e-01, -4.334e-02, -6.489e-02, 1.061e-02, -1.715e-01, 3.398e-01, 1.436e-01), r);\n\tr = MulAdd(s2_0, M4(1.898e-02, -6.796e-02, -9.681e-02, 5.317e-02, -6.710e-02, -2.401e-01, 8.957e-02, -1.326e-01, -1.285e-01, -4.354e-02, -4.742e-02, 5.456e-02, -3.094e-02, 9.700e-02, -1.397e-01, -1.736e-01), r);\n\tr = MulAdd(s2_1, M4(-1.130e-01, -8.727e-02, -6.717e-02, 1.105e-01, 3.471e-01, 4.923e-02, 3.048e-02, 1.696e-01, -5.733e-02, -4.620e-02, 2.674e-02, 2.742e-02, 1.125e-01, -3.257e-02, -1.607e-01, 2.017e-01), r);\n\tr = MulAdd(s2_2, M4(-1.016e-01, 8.385e-03, -1.411e-01, -2.757e-02, -7.714e-03, 6.335e-02, 8.580e-02, -8.000e-03, 9.101e-04, -8.858e-02, -4.917e-02, -2.892e-02, -6.813e-02, -1.086e-02, 6.338e-02, -1.416e-02), r);\n\tr = MulAdd(s2_3, M4(9.098e-02, 1.957e-01, -9.551e-02, 1.372e-02, 5.547e-02, -5.539e-02, -7.710e-02, 4.348e-02, 6.994e-02, -9.307e-03, 4.403e-02, 4.120e-02, -4.607e-02, 1.169e-02, -1.930e-01, 2.159e-02), r);\n\tr = MulAdd(s2_4, M4(4.111e-01, 8.301e-01, -3.466e-01, -9.503e-01, 6.933e-02, -1.913e-02, 2.897e-01, 6.002e-02, 1.656e-01, -2.074e-01, -2.278e-01, -2.744e-01, 1.898e-01, 3.807e-01, 1.588e-01, 1.337e-01), r);\n\tr = MulAdd(s2_5, M4(3.547e-02, 9.913e-02, 2.290e-01, -1.001e-01, 2.844e-01, -5.348e-02, 3.102e-01, 2.668e-01, -2.307e-02, 1.603e-02, -1.343e-01, -1.940e-01, -6.855e-02, 7.183e-03, 2.743e-01, 1.129e-01), r);\n\tr = MulAdd(s2_6, M4(-2.187e-02, -2.622e-02, -4.526e-02, -6.321e-03, -8.359e-02, -1.268e-01, 8.651e-02, -6.939e-03, 2.957e-02, 5.836e-03, -2.792e-02, -3.501e-02, 7.605e-02, 2.245e-02, 3.698e-02, -4.302e-02), r);\n\tr = MulAdd(s2_7, M4(1.205e-01, -8.147e-02, -2.218e-01, -2.645e-01, 7.159e-02, 2.437e-01, -2.439e-02, 1.300e-01, -3.909e-02, -1.879e-02, -1.024e-01, 1.197e-02, 4.967e-02, 1.628e-01, -2.973e-02, -5.674e-02), r);\n\tr = MulAdd(s2_8, M4(-4.114e-02, 2.495e-03, -6.669e-02, -1.126e-01, 1.185e-03, -2.611e-01, 4.307e-02, -4.078e-02, 1.727e-02, 3.137e-02, 4.402e-02, -9.532e-03, -1.445e-01, -2.802e-02, 8.805e-02, -3.620e-02), r);\n\tr = MulAdd(s3_0, M4(5.592e-02, -5.986e-02, 4.212e-02, -1.351e-02, -1.183e-01, -7.062e-02, -2.884e-02, -9.861e-02, 2.923e-01, -3.872e-01, -7.561e-02, -2.126e-01, -1.087e-02, 2.638e-01, -1.060e-01, -2.521e-02), r);\n\tr = MulAdd(s3_1, M4(-2.393e-03, 1.342e-02, -2.694e-01, -3.229e-02, 9.839e-02, 1.256e-01, 1.459e-01, 5.196e-02, 6.062e-01, -5.927e-01, 5.081e-01, -8.134e-01, -5.183e-01, -9.299e-02, -4.591e-01, 4.634e-01), r);\n\tr = MulAdd(s3_2, M4(-1.243e-01, -1.546e-03, -2.050e-01, -9.618e-02, 1.164e-01, 3.858e-03, 2.954e-01, 2.534e-02, 2.224e-01, 3.648e-01, -4.268e-01, -7.856e-01, -1.146e-01, -5.429e-03, -3.244e-01, 4.515e-02), r);\n\tr = MulAdd(s3_3, M4(1.545e-02, 1.267e-01, 1.834e-01, 1.085e-01, 8.707e-02, 3.956e-02, -6.194e-02, -8.369e-02, 1.215e-01, 1.556e-01, -5.293e-01, -1.505e-01, 1.939e-01, 1.340e-01, -4.531e-01, -2.169e-01), r);\n\tr = MulAdd(s3_4, M4(-4.717e-01, 4.645e-01, 4.459e-01, -9.550e-02, 3.874e-01, 3.174e-01, -2.450e-01, 9.813e-02, 4.528e-01, -9.403e-01, 9.279e-01, -4.499e-01, 5.985e-02, -6.119e-01, 4.211e-01, -1.085e-01), r);\n\tr = MulAdd(s3_5, M4(-2.976e-01, -2.410e-01, 1.306e-01, 1.568e-01, 2.322e-01, 1.803e-01, 3.317e-01, 1.716e-01, 6.972e-01, 1.567e-01, -3.980e-01, -6.066e-01, 1.686e-02, -8.061e-02, -1.006e-01, 1.342e-01), r);\n\tr = MulAdd(s3_6, M4(-8.888e-02, -1.646e-01, 7.995e-02, -2.675e-02, -4.782e-02, -7.957e-02, -5.547e-02, -2.723e-04, 2.751e-01, -3.776e-01, 1.641e-01, 3.858e-01, 1.835e-01, 7.779e-02, -5.251e-02, -1.195e-01), r);\n\tr = MulAdd(s3_7, M4(-9.921e-02, -8.667e-02, -1.878e-02, -1.259e-01, 8.537e-02, -4.571e-02, 2.510e-01, 3.064e-02, 1.216e-01, -1.229e-01, 1.490e-01, -2.311e-01, 1.152e-02, -6.642e-02, -7.519e-02, 1.796e-02), r);\n\tr = MulAdd(s3_8, M4(-4.726e-02, 2.303e-02, -6.555e-02, -3.746e-02, 4.466e-02, -5.962e-02, -4.969e-02, -8.936e-02, 2.212e-01, -2.673e-02, -1.224e-01, 2.754e-02, -6.249e-02, -4.974e-02, 2.964e-02, 1.651e-02), r);\n\treturn r;\n}\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 5\n//!DESC conv4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -2.990e-03, -3.480e-03, 7.394e-03, 1.290e-02 };\n\tr = MulAdd(s0_0, M4(2.358e-02, 7.106e-02, -1.223e-01, -1.570e-01, -4.561e-02, 2.621e-02, -6.238e-02, -2.642e-02, -1.613e-01, -1.018e-01, -1.182e-01, 9.290e-02, 1.166e-01, -4.284e-02, 3.173e-02, 6.253e-02), r);\n\tr = MulAdd(s0_1, M4(-1.356e-01, -2.774e-01, 4.431e-02, -2.950e-01, -3.286e-02, -2.192e-01, 5.332e-02, -8.862e-02, -7.113e-02, 1.994e-01, -1.422e-01, 3.142e-01, 7.644e-02, -5.537e-02, -1.903e-01, 1.820e-01), r);\n\tr = MulAdd(s0_2, M4(-8.536e-02, 1.536e-01, 2.164e-02, -8.691e-02, -7.817e-02, 1.158e-01, 3.551e-02, 9.690e-02, -2.058e-01, -2.366e-01, -2.024e-01, 3.949e-02, 9.990e-02, -1.155e-01, -4.381e-02, 5.952e-02), r);\n\tr = MulAdd(s0_3, M4(4.764e-02, -2.284e-01, 2.608e-01, -3.773e-01, 6.969e-03, -1.371e-01, 3.378e-02, -1.982e-01, -1.499e-01, 1.022e-01, 2.773e-01, -1.993e-01, 1.287e-01, -1.990e-01, -1.213e-01, 4.326e-02), r);\n\tr = MulAdd(s0_4, M4(4.182e-01, -4.292e-01, 2.890e-01, -7.257e-02, 5.904e-02, 5.257e-01, 8.142e-02, 4.462e-01, -3.900e-01, -4.610e-02, -3.785e-01, 1.900e-01, 1.028e-01, -7.148e-02, -1.026e-01, 1.641e-01), r);\n\tr = MulAdd(s0_5, M4(-1.978e-02, 1.734e-01, -1.815e-01, -1.499e-01, 2.661e-03, -5.529e-02, -6.137e-02, -1.076e-02, -9.873e-02, 7.319e-02, -1.055e-01, -1.914e-02, 3.545e-01, -2.098e-01, 2.723e-02, -1.403e-02), r);\n\tr = MulAdd(s0_6, M4(2.502e-02, 4.622e-02, 1.371e-02, -5.810e-02, 6.768e-02, 6.884e-02, 7.794e-02, 4.459e-02, 1.565e-02, -5.750e-02, -1.899e-01, -3.387e-02, -7.821e-02, -3.829e-01, -2.889e-02, -6.215e-02), r);\n\tr = MulAdd(s0_7, M4(2.837e-01, 2.153e-01, 6.464e-01, -2.259e-02, 1.787e-01, 5.850e-02, -1.661e-01, 8.230e-02, -2.558e-03, -9.202e-02, -1.143e-01, 5.795e-02, 2.725e-01, -2.512e-01, -3.417e-01, 1.418e-01), r);\n\tr = MulAdd(s0_8, M4(-7.240e-02, 7.377e-02, 1.601e-02, -5.421e-02, 5.224e-02, 2.011e-02, 3.942e-02, -2.078e-02, 6.665e-02, 5.385e-02, -7.067e-02, -3.002e-02, 6.076e-01, -1.559e-01, -1.351e-01, 3.973e-02), r);\n\tr = MulAdd(s1_0, M4(5.739e-02, -2.130e-02, 6.867e-02, 8.138e-02, -8.371e-02, 7.208e-02, 9.522e-02, -1.247e-02, 3.673e-02, -1.020e-01, -1.157e-01, -4.893e-02, 4.489e-02, 6.052e-03, -1.856e-02, 1.512e-02), r);\n\tr = MulAdd(s1_1, M4(-8.925e-02, -1.358e-02, -4.710e-02, -5.965e-02, -1.423e-01, -1.121e-01, 3.344e-01, -2.959e-01, 8.419e-02, -1.992e-01, -1.728e-01, 1.496e-01, 7.465e-02, -6.513e-02, -1.158e-01, 4.417e-02), r);\n\tr = MulAdd(s1_2, M4(-1.561e-02, 1.173e-01, 6.393e-02, 7.635e-02, -2.358e-01, 4.513e-01, 1.043e-01, 5.412e-02, -1.062e-01, -2.702e-01, -1.967e-01, 2.292e-02, 4.481e-02, -6.181e-02, -7.755e-02, 1.785e-02), r);\n\tr = MulAdd(s1_3, M4(-1.536e-02, 1.336e-01, -1.401e-01, 1.672e-01, -3.804e-02, 1.629e-01, 3.546e-02, -2.329e-01, -1.882e-01, -6.580e-02, 6.342e-02, -2.430e-01, -4.527e-02, 3.083e-02, -1.829e-02, 5.247e-02), r);\n\tr = MulAdd(s1_4, M4(-2.110e-01, 9.668e-02, -5.724e-02, 2.095e-01, -2.346e-01, 8.267e-01, -2.799e-01, 3.349e-01, -1.565e-01, 6.647e-02, 1.817e-02, 1.019e-01, 3.862e-02, -1.680e-01, 1.549e-01, 7.007e-02), r);\n\tr = MulAdd(s1_5, M4(-1.472e-01, 2.887e-02, -9.785e-02, 1.098e-01, 3.725e-02, 4.719e-01, 1.409e-01, -1.149e-01, -1.343e-01, 4.555e-03, -7.537e-02, -6.092e-02, 7.429e-02, 1.599e-01, -7.409e-02, 1.111e-01), r);\n\tr = MulAdd(s1_6, M4(5.192e-02, 5.279e-02, 5.139e-02, 5.538e-03, 3.032e-02, 1.416e-01, -1.027e-01, -1.048e-01, -1.343e-01, -2.519e-02, 9.241e-02, -3.552e-02, -3.274e-02, -1.035e-01, -2.752e-02, -3.711e-02), r);\n\tr = MulAdd(s1_7, M4(1.405e-01, 1.283e-01, -1.631e-01, 1.448e-01, -1.476e-01, 3.194e-01, 4.787e-02, 8.664e-02, -2.308e-02, -2.718e-02, 2.198e-01, 5.863e-02, 5.409e-02, -1.074e-01, -3.430e-01, 7.548e-02), r);\n\tr = MulAdd(s1_8, M4(6.984e-02, 8.299e-02, -1.025e-02, 1.410e-02, -3.269e-01, 1.130e-01, -4.935e-02, -7.883e-02, 2.730e-02, 2.576e-02, 9.849e-02, -8.321e-03, 1.082e-01, 7.446e-02, -4.441e-02, 9.677e-03), r);\n\tr = MulAdd(s2_0, M4(-3.258e-02, -1.473e-03, 1.278e-01, -6.312e-04, 9.059e-04, -1.729e-02, 8.754e-03, -7.737e-02, -5.027e-02, 8.639e-02, -1.170e-02, 7.257e-02, 8.412e-02, 2.112e-02, -2.565e-01, 7.677e-03), r);\n\tr = MulAdd(s2_1, M4(-7.643e-04, -2.024e-02, 1.767e-01, -7.645e-03, 6.422e-02, 2.239e-01, 1.450e-02, 1.947e-01, -1.279e-02, -1.349e-02, -1.409e-01, -1.273e-01, -9.158e-02, -1.500e-01, 7.653e-02, 2.805e-01), r);\n\tr = MulAdd(s2_2, M4(3.071e-02, 2.711e-02, 6.236e-02, 1.223e-02, 2.077e-02, 1.323e-01, 5.334e-03, -5.884e-02, 6.902e-03, 5.473e-03, -3.114e-02, -2.389e-02, 3.126e-03, -7.234e-02, 4.478e-02, -1.808e-02), r);\n\tr = MulAdd(s2_3, M4(-5.518e-02, 1.332e-01, -2.462e-02, -1.615e-01, -3.965e-02, -2.004e-02, 1.268e-01, -1.470e-02, -1.397e-01, -6.340e-02, 9.022e-02, -1.625e-01, -1.426e-01, -3.068e-01, -3.755e-02, -1.816e-01), r);\n\tr = MulAdd(s2_4, M4(-2.434e-01, -3.850e-02, -2.343e-01, -1.456e-01, -3.490e-01, 1.238e-01, 4.962e-03, -6.624e-02, 2.030e-01, -1.929e-01, 1.951e-01, -3.391e-01, -9.956e-02, 2.692e-01, -3.039e-01, 1.984e-01), r);\n\tr = MulAdd(s2_5, M4(-2.289e-02, -9.088e-03, 1.582e-02, 6.333e-02, -4.110e-01, -2.279e-01, -4.103e-02, -4.303e-02, 1.533e-02, 1.511e-01, -6.972e-02, 1.555e-01, -1.127e-01, -1.785e-01, -5.199e-02, -1.169e-01), r);\n\tr = MulAdd(s2_6, M4(-5.538e-02, -2.687e-03, 7.738e-02, -3.888e-02, -6.798e-03, 5.840e-03, 9.394e-02, -9.093e-02, -2.274e-02, 5.489e-02, -1.046e-01, -9.950e-02, -1.291e-01, -3.497e-02, -1.789e-02, -2.169e-02), r);\n\tr = MulAdd(s2_7, M4(1.547e-01, -3.511e-02, 6.851e-03, 4.498e-02, -4.047e-02, 1.323e-01, 2.036e-01, -3.356e-02, 2.381e-02, -2.907e-02, -3.230e-01, -5.017e-02, 7.335e-02, 8.047e-02, 2.422e-01, -7.968e-03), r);\n\tr = MulAdd(s2_8, M4(1.402e-01, -1.278e-01, 4.702e-02, -2.929e-03, -2.774e-03, 4.017e-02, 1.142e-01, -5.435e-02, 5.163e-02, -4.898e-02, -1.112e-01, -1.679e-02, -1.153e-01, -1.449e-01, 3.081e-02, -1.046e-01), r);\n\tr = MulAdd(s3_0, M4(8.011e-02, -1.008e-01, -3.350e-02, -5.067e-02, 3.134e-02, 1.965e-02, -6.230e-02, 6.086e-02, 1.045e-01, 3.276e-02, -1.810e-01, 6.820e-02, -1.228e-01, -8.570e-02, 2.025e-01, -1.825e-01), r);\n\tr = MulAdd(s3_1, M4(1.911e-03, 2.398e-02, -6.180e-02, 8.361e-02, 1.777e-01, 9.055e-02, -2.063e-01, 1.300e-01, 8.911e-02, -1.316e-02, -1.055e-01, -1.246e-01, -3.907e-02, 1.910e-01, 1.273e-01, 1.199e-01), r);\n\tr = MulAdd(s3_2, M4(1.061e-01, 3.932e-02, 1.409e-02, 1.843e-02, 1.023e-01, -1.627e-01, -7.256e-02, 1.090e-02, 5.967e-02, 5.053e-02, -5.669e-02, -3.334e-02, 5.388e-02, 9.133e-02, 8.598e-02, -9.190e-02), r);\n\tr = MulAdd(s3_3, M4(1.566e-02, -8.323e-03, -2.284e-01, -1.353e-01, -1.207e-01, 2.292e-02, 1.171e-01, 9.358e-02, -4.992e-02, -4.395e-02, 1.335e-01, -1.698e-01, 5.811e-02, -1.714e-01, -1.425e-02, -2.387e-01), r);\n\tr = MulAdd(s3_4, M4(-5.546e-01, 2.770e-01, -2.630e-01, -2.027e-01, -5.485e-02, -1.584e-01, 4.579e-01, -7.056e-02, -2.309e-01, 1.690e-01, -1.575e-01, -3.097e-01, 1.883e-01, -9.219e-03, -2.047e-01, -3.564e-01), r);\n\tr = MulAdd(s3_5, M4(5.198e-03, 1.196e-01, -8.158e-02, -4.777e-02, -2.359e-01, -3.586e-01, 2.130e-01, 2.051e-01, 1.191e-03, 7.352e-02, -2.873e-02, 8.438e-02, 9.639e-02, -2.764e-01, -3.439e-02, -1.704e-01), r);\n\tr = MulAdd(s3_6, M4(-9.012e-02, 9.280e-02, 8.295e-02, 8.577e-03, -3.140e-03, 1.152e-02, 5.301e-02, -5.006e-03, -5.893e-03, 3.360e-02, 3.761e-02, -3.912e-02, -8.357e-02, 8.906e-03, 2.089e-02, 1.899e-02), r);\n\tr = MulAdd(s3_7, M4(1.114e-03, 3.887e-02, -4.030e-02, -3.748e-02, 3.333e-02, -5.122e-02, -2.400e-01, -2.969e-03, 2.300e-02, -1.357e-01, -2.767e-01, -1.186e-02, -1.660e-01, 8.940e-02, 3.164e-01, -5.897e-02), r);\n\tr = MulAdd(s3_8, M4(3.387e-02, -8.658e-02, -3.218e-02, -4.372e-02, -1.515e-01, 5.072e-02, -1.683e-01, 4.557e-02, 1.132e-01, -6.613e-03, -1.422e-01, 1.617e-02, -1.129e-01, -1.111e-01, 3.890e-02, -6.358e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -6.316e-03, -5.988e-03, -9.405e-03, -2.136e-03 };\n\tr = MulAdd(s0_0, M4(3.519e-02, 4.799e-02, -2.984e-03, -1.240e-01, -6.249e-03, 2.523e-02, 1.077e-01, 4.787e-02, 2.420e-02, 7.819e-02, -1.956e-01, -7.709e-02, -5.882e-02, -3.366e-02, -1.714e-01, 1.200e-01), r);\n\tr = MulAdd(s0_1, M4(-2.273e-01, 8.166e-02, 8.317e-02, 8.376e-02, -5.856e-02, 4.123e-03, -2.466e-01, -3.422e-02, -5.165e-02, 6.070e-02, 7.922e-02, -9.691e-02, 2.510e-01, -1.318e-02, -1.696e-01, 1.123e-01), r);\n\tr = MulAdd(s0_2, M4(2.300e-01, -4.649e-02, -9.124e-02, -9.431e-02, 1.141e-01, -4.892e-03, 3.389e-02, -7.123e-02, -5.376e-02, 3.972e-02, 1.306e-01, 9.184e-02, 3.181e-02, -1.301e-02, 6.289e-02, -2.389e-02), r);\n\tr = MulAdd(s0_3, M4(-3.802e-01, -2.023e-01, -2.227e-01, -9.450e-02, 2.842e-02, -1.421e-01, -1.397e-01, -9.477e-02, 8.360e-02, 5.211e-02, -4.870e-02, -2.897e-01, 3.206e-03, -1.743e-01, -3.055e-01, -4.716e-02), r);\n\tr = MulAdd(s0_4, M4(3.208e-01, -4.644e-01, 8.642e-01, 7.726e-01, 2.570e-01, -3.573e-02, 5.571e-02, 4.619e-01, 1.200e-01, -1.772e-01, 1.733e-01, 3.480e-02, 1.119e-01, 7.200e-02, 5.641e-02, -1.770e-01), r);\n\tr = MulAdd(s0_5, M4(-5.690e-01, 1.045e-02, 5.379e-01, -2.482e-01, -2.435e-01, 1.075e-02, -3.207e-02, 1.476e-01, 2.284e-02, 8.934e-02, 3.712e-02, 5.994e-02, -1.533e-01, -5.881e-02, 5.651e-02, -1.526e-02), r);\n\tr = MulAdd(s0_6, M4(2.499e-02, 9.467e-03, 5.746e-02, -8.387e-02, -5.405e-02, -1.732e-02, 7.648e-02, 2.696e-02, -1.241e-01, 2.151e-02, -6.329e-02, -7.248e-02, -1.591e-01, -2.487e-02, -1.833e-01, 2.593e-03), r);\n\tr = MulAdd(s0_7, M4(-2.208e-01, -3.703e-01, 2.619e-01, 5.898e-02, -1.777e-01, -7.585e-02, 6.970e-02, 4.988e-02, -4.151e-02, -7.482e-03, -1.184e-03, -1.444e-03, -1.106e-01, -1.452e-01, 2.712e-01, -5.314e-02), r);\n\tr = MulAdd(s0_8, M4(3.481e-02, -3.760e-02, -1.266e-01, 2.756e-02, -1.371e-02, 5.496e-02, -1.166e-01, 4.062e-02, 6.351e-02, 2.666e-02, -1.949e-02, 4.756e-02, 3.367e-01, -3.686e-01, -2.675e-01, 1.228e-01), r);\n\tr = MulAdd(s1_0, M4(2.598e-03, -6.811e-02, 4.981e-02, -1.319e-02, 1.206e-01, 2.461e-02, -3.766e-02, 2.058e-02, 8.023e-02, -1.693e-02, 3.585e-02, -9.837e-02, 8.781e-03, -1.964e-02, -4.176e-03, -4.753e-03), r);\n\tr = MulAdd(s1_1, M4(1.442e-01, -8.370e-03, -7.432e-02, -3.089e-02, -1.981e-01, -4.136e-02, -1.909e-01, -1.179e-01, -1.917e-01, 9.283e-03, -6.196e-03, 7.644e-02, -3.266e-02, 2.654e-03, -3.667e-02, -3.045e-03), r);\n\tr = MulAdd(s1_2, M4(1.606e-01, -5.138e-02, -6.107e-02, -9.435e-02, 1.106e-01, 3.374e-02, 4.798e-02, -1.686e-01, -9.666e-02, 1.708e-01, 1.023e-01, 8.971e-02, -4.152e-03, 3.151e-02, -8.008e-02, -8.659e-04), r);\n\tr = MulAdd(s1_3, M4(2.334e-01, 1.165e-01, 1.431e-01, -6.154e-02, 2.323e-01, 5.190e-02, -3.558e-01, 5.900e-03, -1.352e-01, -6.950e-02, -1.556e-01, -8.683e-02, 2.186e-03, -3.382e-02, 9.595e-02, -1.367e-02), r);\n\tr = MulAdd(s1_4, M4(-2.079e-01, 2.013e-01, -1.003e-01, 5.965e-01, 7.281e-01, -2.555e-02, -1.042e-01, 5.471e-01, -8.816e-03, -6.272e-01, 2.632e-01, -7.918e-03, -9.514e-02, -1.219e-01, -1.023e-01, -9.444e-02), r);\n\tr = MulAdd(s1_5, M4(-2.075e-01, -2.995e-02, -3.489e-02, 1.102e-01, -2.727e-01, -5.656e-02, 1.026e-01, -2.174e-01, 5.193e-02, 9.603e-03, -8.547e-02, 2.008e-01, 3.839e-02, 2.151e-02, -2.244e-02, 7.860e-03), r);\n\tr = MulAdd(s1_6, M4(-2.778e-01, -3.516e-02, 1.650e-01, -7.376e-02, -8.045e-02, -9.546e-02, -3.107e-02, -6.217e-02, 1.269e-01, 1.594e-01, 4.540e-03, 3.225e-03, -4.082e-02, 6.364e-03, -6.184e-02, 3.507e-02), r);\n\tr = MulAdd(s1_7, M4(-1.143e-01, 1.010e-01, -5.168e-02, 1.587e-01, -1.409e-01, -7.917e-03, -8.995e-02, 1.142e-01, -1.148e-01, -5.357e-02, 7.352e-02, -1.038e-01, 1.130e-02, -5.021e-02, 7.683e-02, -4.051e-02), r);\n\tr = MulAdd(s1_8, M4(3.006e-02, 1.525e-01, -1.064e-01, 9.476e-02, -1.579e-01, 1.593e-01, -1.578e-01, -1.912e-02, 5.637e-02, -9.418e-03, -5.185e-03, 4.674e-02, 1.222e-01, -7.692e-02, -7.098e-02, 2.074e-02), r);\n\tr = MulAdd(s2_0, M4(-1.652e-02, 2.598e-02, -1.013e-01, 6.189e-02, 8.546e-03, 4.699e-02, -2.344e-03, 1.277e-02, 5.113e-02, -1.595e-02, 1.910e-01, -7.417e-02, 3.643e-02, 4.172e-02, -1.039e-01, -6.160e-02), r);\n\tr = MulAdd(s2_1, M4(-3.874e-02, -3.482e-03, 7.300e-03, -1.355e-02, 2.448e-01, 4.666e-02, -9.449e-02, 2.339e-02, -1.203e-01, 3.261e-02, -3.038e-02, 9.335e-02, 4.708e-02, 9.716e-02, -4.104e-01, 1.606e-02), r);\n\tr = MulAdd(s2_2, M4(2.614e-02, -7.252e-02, 9.566e-03, 3.402e-02, 6.985e-03, -2.278e-02, -1.924e-01, 5.004e-03, -2.337e-02, 3.580e-02, -4.597e-02, 2.932e-02, -1.673e-01, -8.288e-03, 2.899e-02, 3.634e-02), r);\n\tr = MulAdd(s2_3, M4(3.155e-01, 9.085e-02, 4.781e-02, -6.959e-02, 3.001e-02, -2.332e-02, -1.132e-01, 1.024e-01, 4.363e-02, -4.525e-02, 6.052e-02, -2.970e-01, -2.196e-01, 2.141e-02, -3.035e-01, 9.429e-02), r);\n\tr = MulAdd(s2_4, M4(-6.346e-02, 2.127e-01, -4.391e-02, 2.319e-01, -2.695e-01, -7.714e-03, -1.659e-01, -3.199e-01, 1.499e-01, -3.990e-01, 3.229e-02, -4.619e-01, 1.185e-01, 4.742e-02, 7.026e-01, -5.809e-02), r);\n\tr = MulAdd(s2_5, M4(-7.044e-02, 8.127e-02, 2.569e-01, -8.552e-02, -1.192e-01, 9.709e-02, -3.134e-01, 1.632e-01, 2.647e-01, -5.529e-02, 2.336e-01, -1.118e-01, 4.060e-02, 5.644e-02, -7.560e-02, 1.106e-01), r);\n\tr = MulAdd(s2_6, M4(-7.387e-02, -2.698e-03, -5.179e-02, 1.077e-03, -1.361e-01, -6.428e-02, -5.398e-02, -5.008e-03, -1.555e-01, 8.817e-02, 2.712e-02, -1.140e-01, 1.123e-01, 2.629e-01, 8.762e-04, 1.070e-01), r);\n\tr = MulAdd(s2_7, M4(4.489e-02, 1.490e-01, 1.403e-01, 5.900e-02, -1.535e-02, 9.715e-02, -1.662e-01, 1.544e-02, -2.607e-01, 1.782e-01, 5.149e-02, -1.530e-01, 4.158e-02, -1.167e-01, 2.508e-01, -3.826e-02), r);\n\tr = MulAdd(s2_8, M4(1.833e-02, -6.535e-02, -9.799e-04, 3.795e-02, -1.240e-01, 5.356e-02, -1.377e-01, 2.680e-02, -5.193e-02, 1.129e-01, -6.200e-02, 3.753e-02, -1.182e-01, -8.965e-02, -4.491e-02, 2.043e-02), r);\n\tr = MulAdd(s3_0, M4(-1.485e-01, -4.827e-02, -6.587e-02, 4.206e-03, 1.429e-03, -7.075e-02, 1.010e-01, -1.434e-02, 1.431e-01, 9.461e-03, 1.974e-02, 6.288e-03, -1.066e-01, 3.071e-02, -5.972e-02, 6.134e-02), r);\n\tr = MulAdd(s3_1, M4(1.832e-01, 9.780e-02, 6.492e-03, 7.153e-02, 4.468e-02, 4.766e-02, -2.764e-02, 1.125e-01, -6.547e-02, 4.916e-02, -2.809e-01, 2.147e-02, -4.627e-05, -1.787e-02, 1.779e-01, -7.133e-02), r);\n\tr = MulAdd(s3_2, M4(9.684e-02, -1.149e-01, -7.433e-02, -3.439e-02, -9.873e-02, 6.903e-02, -5.451e-02, 1.204e-01, 2.747e-03, 6.107e-02, -1.211e-02, 1.021e-02, -1.020e-01, -2.111e-02, -3.111e-02, 7.253e-02), r);\n\tr = MulAdd(s3_3, M4(8.451e-02, 1.777e-01, -6.733e-02, -3.111e-02, 5.124e-02, 6.421e-02, 2.028e-01, 3.174e-03, 5.908e-02, 3.863e-02, -1.465e-02, -3.614e-02, -2.398e-01, -1.425e-01, -1.372e-01, -5.310e-02), r);\n\tr = MulAdd(s3_4, M4(-4.740e-02, 3.190e-01, -3.018e-01, 2.133e-01, -6.713e-02, -1.594e-01, -2.779e-01, -2.978e-01, 2.122e-01, -1.166e-01, -4.420e-01, -3.385e-01, -1.828e-01, -2.161e-01, 2.861e-01, 4.141e-02), r);\n\tr = MulAdd(s3_5, M4(-1.008e-01, 1.219e-01, 1.655e-01, -7.892e-02, 1.575e-01, -1.729e-01, -3.729e-01, 2.347e-01, 1.649e-01, -8.625e-02, 1.831e-01, -1.423e-01, -2.275e-03, 1.461e-01, -6.245e-02, -9.654e-02), r);\n\tr = MulAdd(s3_6, M4(4.563e-02, 1.920e-01, 1.096e-01, 1.130e-02, -4.992e-02, -2.560e-02, 9.352e-02, 4.260e-02, -1.082e-01, -1.228e-02, 4.508e-02, -5.029e-02, 2.940e-01, 7.883e-02, -1.268e-01, 9.003e-02), r);\n\tr = MulAdd(s3_7, M4(-1.140e-01, 2.337e-01, 6.229e-02, 3.967e-02, -1.837e-02, 1.296e-01, -1.911e-01, -4.436e-02, -5.754e-02, 2.124e-01, -2.095e-02, -3.752e-02, 1.007e-01, -1.105e-01, 2.174e-01, 1.540e-02), r);\n\tr = MulAdd(s3_8, M4(-5.357e-02, -1.439e-02, 7.558e-02, -2.317e-02, -1.318e-01, 2.876e-01, -1.304e-01, 6.115e-02, 5.664e-03, -1.197e-03, 3.258e-02, 2.902e-02, -5.115e-02, -1.880e-01, -2.181e-02, -9.175e-02), r);\n\treturn r;\n}\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 6\n//!DESC conv5\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -5.867e-03, 8.204e-04, 8.838e-06, -4.451e-03 };\n\tr = MulAdd(s0_0, M4(-8.608e-02, 2.569e-01, 1.222e-02, -2.428e-01, 2.819e-02, -2.222e-01, 8.316e-02, 1.236e-01, 7.319e-02, -2.436e-02, -3.285e-02, -4.959e-02, -1.564e-02, -4.520e-03, -2.403e-02, 1.644e-02), r);\n\tr = MulAdd(s0_1, M4(8.699e-02, -1.096e-01, 1.068e-01, -3.740e-01, -1.080e-01, -1.857e-02, 4.223e-02, -3.891e-03, -8.229e-02, -1.946e-01, -1.551e-03, -1.387e-01, -5.238e-02, 2.071e-02, 2.358e-02, 5.090e-02), r);\n\tr = MulAdd(s0_2, M4(9.500e-02, 1.498e-02, 3.952e-02, -2.201e-01, -5.773e-03, -4.568e-02, -1.513e-02, 1.650e-02, -3.844e-02, -1.894e-02, -6.321e-03, -1.478e-01, 6.779e-04, -1.872e-02, 3.647e-02, -1.142e-01), r);\n\tr = MulAdd(s0_3, M4(1.158e-01, 1.180e-01, -7.400e-02, -1.253e-01, -3.329e-02, -9.601e-02, -1.655e-01, 1.764e-01, 4.556e-02, -1.037e-01, 1.404e-02, 4.284e-02, 1.355e-02, -4.159e-02, 1.028e-02, 5.967e-02), r);\n\tr = MulAdd(s0_4, M4(3.790e-01, -1.771e-01, 4.289e-01, 3.968e-01, -6.453e-01, -3.229e-02, 6.839e-02, 4.000e-01, 7.875e-02, 3.322e-01, -9.510e-02, 6.532e-02, -2.647e-01, -1.873e-01, 1.182e-01, 1.928e-01), r);\n\tr = MulAdd(s0_5, M4(1.861e-02, 4.475e-02, -4.634e-02, 4.190e-02, 7.957e-02, -1.773e-01, 7.434e-02, -3.605e-02, -1.383e-02, 3.314e-02, 7.457e-02, -3.542e-02, -1.410e-01, 1.218e-02, -1.978e-01, 1.382e-01), r);\n\tr = MulAdd(s0_6, M4(-1.159e-02, 7.661e-02, -1.156e-02, 4.680e-02, 5.359e-02, -1.324e-01, -1.436e-01, -9.472e-02, -7.470e-02, -1.685e-01, 4.434e-03, -2.265e-02, -1.045e-01, 1.346e-02, -4.403e-02, 2.895e-02), r);\n\tr = MulAdd(s0_7, M4(-8.194e-02, 2.863e-03, 2.583e-02, -6.814e-02, 4.180e-02, 1.948e-02, -5.094e-02, -8.335e-02, 1.078e-02, -9.731e-02, -7.838e-02, -7.272e-02, -3.306e-03, 8.672e-02, -1.243e-01, -1.003e-01), r);\n\tr = MulAdd(s0_8, M4(-7.363e-02, 1.894e-02, -4.111e-02, 9.806e-03, 4.223e-02, -5.568e-02, 7.757e-02, 5.330e-02, 2.111e-02, -3.335e-02, 7.667e-03, -2.582e-02, 1.289e-01, -5.085e-02, 1.158e-01, 3.725e-02), r);\n\tr = MulAdd(s1_0, M4(1.335e-02, 1.003e-01, 6.199e-02, 3.112e-03, -8.718e-02, 2.489e-02, -2.486e-02, 1.969e-01, 6.352e-02, -2.251e-01, 9.885e-03, -1.690e-01, 3.148e-02, -2.993e-02, -1.857e-03, -1.052e-01), r);\n\tr = MulAdd(s1_1, M4(-8.664e-03, -1.227e-01, -2.031e-02, -2.300e-01, 5.105e-02, 1.422e-02, 1.043e-01, -4.809e-02, -1.366e-01, 1.288e-01, -3.921e-01, -1.088e-01, -5.613e-03, 7.480e-02, 6.498e-02, 2.244e-02), r);\n\tr = MulAdd(s1_2, M4(1.231e-01, 4.020e-02, 4.395e-03, -1.853e-01, 4.126e-02, 3.574e-02, 3.323e-04, -9.040e-02, -2.706e-01, 5.809e-02, -2.337e-01, -3.410e-02, 6.976e-03, -6.686e-02, 1.172e-01, -5.432e-02), r);\n\tr = MulAdd(s1_3, M4(-2.134e-01, -1.519e-01, 2.647e-02, -8.512e-02, -1.382e-01, 1.372e-01, -2.530e-02, -4.801e-02, 7.539e-02, -8.842e-02, -5.976e-02, 1.708e-01, 2.436e-01, -1.239e-01, 9.767e-02, 2.307e-02), r);\n\tr = MulAdd(s1_4, M4(-2.123e-01, 2.003e-02, 2.607e-01, 5.098e-01, 2.415e-01, -4.337e-01, 2.104e-01, 4.542e-02, -5.372e-01, 4.096e-01, -1.995e-01, 1.650e-01, -4.643e-01, 4.214e-01, -2.897e-01, 3.722e-01), r);\n\tr = MulAdd(s1_5, M4(4.852e-02, -4.823e-02, -9.304e-03, 6.935e-02, 3.634e-02, 4.152e-02, -2.441e-04, 8.184e-02, -3.163e-01, -1.569e-01, -1.265e-01, 2.367e-01, -2.178e-01, 1.617e-02, -3.774e-01, 5.316e-02), r);\n\tr = MulAdd(s1_6, M4(-6.727e-03, 1.153e-01, 1.338e-02, 1.193e-01, 1.504e-01, 1.519e-01, 9.715e-03, 9.078e-03, -8.618e-02, -1.465e-01, -2.277e-02, -4.322e-03, -2.011e-01, -1.293e-01, 1.793e-02, 2.710e-03), r);\n\tr = MulAdd(s1_7, M4(-9.969e-03, 2.211e-01, -4.299e-03, -2.202e-02, -4.619e-02, -8.966e-04, 9.219e-02, 1.181e-01, -4.056e-01, -1.222e-01, -3.333e-01, -2.313e-01, -5.614e-02, -1.141e-01, -1.407e-01, -1.764e-01), r);\n\tr = MulAdd(s1_8, M4(-9.313e-04, 1.319e-02, 7.414e-02, 6.145e-02, -6.932e-02, 3.310e-02, -6.980e-02, -2.850e-02, -1.856e-01, -1.571e-01, -1.655e-01, -1.211e-01, 4.781e-02, -1.536e-01, 1.794e-01, 6.533e-03), r);\n\tr = MulAdd(s2_0, M4(2.814e-02, 6.999e-02, 1.721e-02, -6.695e-02, 7.155e-02, 1.598e-01, 4.115e-02, -2.464e-02, -6.175e-03, 5.353e-02, -4.210e-02, -6.383e-02, -5.254e-02, 3.658e-02, -6.324e-02, 4.018e-02), r);\n\tr = MulAdd(s2_1, M4(-7.643e-02, -8.591e-02, -1.327e-01, 1.490e-01, -4.778e-02, -1.665e-03, 3.515e-02, 4.224e-02, 2.654e-02, -3.990e-03, 1.914e-02, -3.699e-02, -1.815e-01, 6.398e-02, -9.678e-02, -1.639e-01), r);\n\tr = MulAdd(s2_2, M4(3.666e-02, 1.137e-02, -3.516e-03, -1.270e-01, -5.116e-02, -3.455e-02, -1.130e-02, -2.826e-02, -2.717e-02, 1.390e-02, 1.004e-02, 6.270e-02, 5.819e-03, 4.421e-02, 4.943e-02, -2.765e-01), r);\n\tr = MulAdd(s2_3, M4(-1.111e-01, 2.642e-03, 2.653e-02, -1.920e-02, 1.284e-01, 6.685e-02, -6.475e-02, -2.750e-02, -8.811e-02, -3.021e-01, 1.387e-01, -8.707e-02, -9.734e-02, 3.683e-01, -6.483e-02, 1.673e-02), r);\n\tr = MulAdd(s2_4, M4(-8.755e-02, -2.692e-01, -1.860e-01, 8.398e-02, -2.588e-01, 5.441e-01, -1.563e-02, 2.783e-02, 7.085e-02, 1.881e-01, 4.063e-02, -1.307e-01, 3.826e-01, 3.605e-02, 1.551e-01, -3.976e-02), r);\n\tr = MulAdd(s2_5, M4(1.761e-01, 9.465e-02, 1.023e-01, 1.684e-01, 5.145e-02, -9.373e-02, 1.927e-01, -2.001e-01, -8.632e-02, 7.821e-02, 3.875e-02, -3.849e-03, -9.294e-02, 1.570e-01, -9.343e-02, 1.712e-02), r);\n\tr = MulAdd(s2_6, M4(-6.383e-02, -5.647e-03, -2.071e-02, 3.716e-02, 7.636e-02, 2.504e-02, 4.806e-02, -1.517e-02, 8.862e-02, 8.993e-02, 2.257e-02, -1.228e-02, 1.534e-01, -1.728e-02, -3.967e-02, -3.449e-02), r);\n\tr = MulAdd(s2_7, M4(-2.106e-01, -1.526e-01, 6.760e-02, -1.012e-02, 2.699e-02, 3.012e-03, -3.014e-02, -1.204e-02, -7.079e-03, -1.713e-01, 3.694e-02, 6.143e-02, -5.451e-02, -1.359e-01, -9.926e-02, -1.442e-01), r);\n\tr = MulAdd(s2_8, M4(-9.338e-02, 1.171e-01, 9.731e-03, 7.911e-02, 2.203e-02, 5.235e-03, 3.585e-03, -2.420e-02, -3.234e-02, 1.790e-02, -6.909e-02, -2.004e-02, -1.564e-01, 1.182e-01, -1.297e-01, -5.639e-03), r);\n\tr = MulAdd(s3_0, M4(-3.005e-02, -6.725e-02, 1.321e-02, 4.847e-03, 1.036e-01, 2.312e-01, -1.014e-01, -1.152e-01, 9.548e-02, -1.285e-01, 2.631e-02, 1.150e-01, -7.107e-02, -1.159e-01, -8.623e-02, 3.015e-03), r);\n\tr = MulAdd(s3_1, M4(-1.199e-01, 1.896e-02, -1.750e-01, 5.793e-02, -1.067e-01, 3.761e-01, 4.887e-02, -3.395e-01, 6.265e-02, 3.455e-02, 5.806e-02, 1.456e-01, -6.617e-02, -1.070e-01, 2.967e-03, 8.557e-03), r);\n\tr = MulAdd(s3_2, M4(-1.013e-01, -1.106e-02, -3.594e-02, 2.021e-02, 4.372e-02, -1.061e-01, 2.014e-02, -1.715e-01, -4.093e-02, -2.106e-02, -6.451e-02, 1.431e-01, 5.745e-02, -8.813e-03, 1.078e-02, -1.050e-01), r);\n\tr = MulAdd(s3_3, M4(5.771e-03, 2.398e-01, 5.475e-03, -2.666e-02, 2.469e-01, 2.725e-01, -1.278e-01, 5.428e-02, -9.521e-02, -2.876e-01, 8.087e-02, -8.050e-02, -8.112e-02, -3.085e-02, -4.978e-02, 3.844e-02), r);\n\tr = MulAdd(s3_4, M4(-2.283e-01, 1.275e-01, -1.267e-01, -1.878e-02, 8.566e-02, 7.676e-01, 4.032e-02, 5.152e-01, -3.872e-02, 5.059e-01, 2.330e-01, 1.399e-02, 5.226e-01, 3.846e-02, 5.762e-01, -1.439e-01), r);\n\tr = MulAdd(s3_5, M4(-6.461e-04, 2.103e-01, 1.016e-01, 1.416e-01, 1.046e-01, 3.651e-03, 8.893e-02, -8.801e-02, 7.038e-02, -7.385e-02, 1.304e-01, -3.234e-02, -3.917e-02, -4.112e-02, 3.192e-02, -1.320e-01), r);\n\tr = MulAdd(s3_6, M4(-5.442e-02, 1.120e-01, 1.744e-02, -4.865e-02, -1.390e-01, -2.964e-01, -7.290e-02, -1.213e-01, 9.644e-02, -8.644e-02, 4.706e-02, -1.755e-02, 6.284e-03, -7.466e-02, 5.034e-02, -1.122e-01), r);\n\tr = MulAdd(s3_7, M4(-1.130e-01, -7.809e-02, 6.065e-03, 2.930e-03, -1.685e-01, -6.866e-02, -1.093e-01, -1.189e-01, 5.726e-02, -1.833e-01, 1.726e-02, -3.833e-02, -1.400e-01, -3.362e-01, 3.635e-02, -3.936e-02), r);\n\tr = MulAdd(s3_8, M4(-1.190e-01, 7.088e-02, -6.045e-02, -6.491e-02, -8.954e-02, -7.689e-02, -6.903e-02, -1.069e-01, 6.519e-02, -7.405e-02, -6.924e-03, -4.911e-02, -3.081e-02, 6.495e-03, -9.590e-02, 6.956e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.543e-03, -4.932e-03, 6.376e-03, 2.635e-03 };\n\tr = MulAdd(s0_0, M4(-1.613e-01, -4.226e-02, -1.004e-01, 2.744e-02, -5.920e-02, 2.726e-02, 5.529e-02, 1.777e-02, -2.057e-01, -4.471e-02, 4.853e-03, 1.897e-02, 6.077e-02, -8.693e-02, 2.211e-02, 2.221e-02), r);\n\tr = MulAdd(s0_1, M4(-1.790e-02, -5.945e-02, 2.220e-01, 2.415e-02, -1.960e-02, 4.714e-02, -1.908e-01, 4.480e-02, 2.509e-01, -1.789e-02, 1.996e-01, -5.241e-02, -6.129e-02, 2.228e-02, -9.568e-03, 5.522e-02), r);\n\tr = MulAdd(s0_2, M4(6.855e-02, -1.714e-01, 3.252e-03, -7.609e-02, -6.607e-03, -1.250e-01, -3.310e-02, 1.991e-02, -3.235e-02, -3.547e-02, -6.805e-03, 5.213e-02, 1.799e-03, -9.400e-02, -4.560e-02, -4.234e-02), r);\n\tr = MulAdd(s0_3, M4(-3.910e-01, -1.046e-01, 2.434e-01, 7.156e-02, 5.429e-02, -6.191e-02, -1.441e-01, 2.060e-01, -1.385e-01, 1.037e-01, -4.380e-02, -8.286e-02, 1.389e-01, -1.694e-02, -6.093e-02, -5.890e-02), r);\n\tr = MulAdd(s0_4, M4(-2.968e-02, -1.900e-01, -1.226e-01, -9.187e-02, -4.346e-01, 6.699e-01, 2.262e-01, 4.149e-01, -3.449e-01, -1.810e-01, 4.280e-02, 1.218e-01, 6.111e-02, -1.049e-01, 1.369e-01, 6.181e-02), r);\n\tr = MulAdd(s0_5, M4(-9.205e-03, 4.332e-02, -1.318e-01, 7.155e-02, 1.343e-01, -9.519e-02, 1.417e-01, 1.615e-01, -1.237e-02, 1.310e-01, 6.284e-02, 4.459e-02, -8.180e-02, -2.356e-01, -7.968e-02, -1.569e-01), r);\n\tr = MulAdd(s0_6, M4(1.620e-02, -5.617e-02, -5.471e-02, -1.506e-02, -1.750e-02, 2.921e-02, 2.788e-02, -3.191e-02, 6.364e-02, 3.667e-02, -4.515e-02, -2.747e-02, -4.842e-02, 2.758e-02, -9.440e-02, -2.075e-02), r);\n\tr = MulAdd(s0_7, M4(8.817e-02, -5.475e-02, -2.476e-02, 5.598e-03, -3.989e-02, -7.869e-02, 2.001e-01, 3.282e-02, -2.619e-02, -8.282e-03, 1.138e-01, 4.952e-02, -4.746e-02, 9.597e-02, 1.639e-01, 9.382e-02), r);\n\tr = MulAdd(s0_8, M4(-1.727e-02, -3.994e-02, 5.955e-03, 1.735e-02, 3.433e-02, 2.114e-01, 3.957e-02, -3.448e-03, 4.624e-02, 4.745e-02, 3.676e-02, 2.724e-02, 3.361e-02, -2.538e-03, 2.072e-02, -4.143e-02), r);\n\tr = MulAdd(s1_0, M4(6.291e-02, 3.066e-02, -1.528e-01, -1.213e-01, -1.881e-01, 1.398e-01, 1.107e-02, 2.913e-02, -4.372e-02, -1.707e-01, -1.233e-01, 1.214e-02, -5.108e-02, -8.090e-02, 2.695e-03, -4.899e-03), r);\n\tr = MulAdd(s1_1, M4(-1.290e-01, -3.723e-02, 5.548e-02, -5.796e-02, 7.544e-02, 2.218e-02, 7.075e-02, 8.778e-03, 1.830e-01, -1.635e-01, -1.380e-02, 1.337e-01, -1.343e-01, -7.167e-02, 8.180e-02, 3.701e-02), r);\n\tr = MulAdd(s1_2, M4(3.819e-02, -2.796e-01, 7.484e-02, -6.969e-02, 3.958e-03, -3.990e-02, -4.936e-03, -1.871e-02, -8.227e-02, -2.647e-01, -5.353e-02, 2.802e-01, 5.236e-02, -1.095e-01, 3.037e-02, 1.371e-02), r);\n\tr = MulAdd(s1_3, M4(-7.472e-02, 7.277e-02, -9.259e-02, -5.970e-02, 1.904e-01, -7.408e-02, 9.517e-03, 5.773e-02, -2.063e-01, 7.309e-02, -1.632e-01, 9.394e-02, 6.461e-02, -4.990e-02, -4.256e-02, -1.354e-01), r);\n\tr = MulAdd(s1_4, M4(-1.989e-02, -5.893e-02, -2.870e-01, 3.377e-02, -5.899e-02, -1.292e-01, 2.142e-01, 6.521e-02, -3.446e-01, 7.705e-02, -1.953e-01, 3.493e-01, 8.550e-01, -2.645e-01, -5.125e-02, 3.279e-01), r);\n\tr = MulAdd(s1_5, M4(-1.666e-02, 4.650e-03, -1.421e-01, 8.864e-02, 8.253e-03, -3.432e-02, -8.438e-02, -1.618e-02, -7.692e-02, 2.310e-01, 1.882e-01, 2.958e-01, -1.735e-01, -4.556e-01, -1.155e-01, -3.658e-01), r);\n\tr = MulAdd(s1_6, M4(-9.666e-02, 1.958e-02, -3.755e-02, 1.890e-02, -1.861e-01, -2.990e-02, 5.561e-02, -2.582e-02, 7.456e-02, 9.553e-02, -1.765e-01, -1.025e-01, -6.244e-02, 1.110e-01, -1.733e-01, -1.265e-01), r);\n\tr = MulAdd(s1_7, M4(-3.723e-03, -3.252e-02, -3.220e-02, 7.520e-02, 1.130e-01, 6.318e-02, -2.606e-01, -6.368e-02, 1.609e-01, 6.315e-02, -4.849e-02, 8.580e-02, -7.162e-02, -1.825e-01, 3.036e-01, 3.148e-02), r);\n\tr = MulAdd(s1_8, M4(-2.751e-02, -1.125e-02, -4.807e-02, -3.768e-02, -3.989e-02, -6.228e-02, -2.268e-02, -5.394e-03, 3.481e-02, -5.196e-03, 4.520e-02, 2.328e-01, -8.159e-03, -1.147e-01, 1.142e-01, 2.181e-02), r);\n\tr = MulAdd(s2_0, M4(-7.023e-03, -1.082e-01, -1.112e-01, 8.964e-03, 1.738e-02, 6.085e-03, 1.381e-01, -1.118e-01, -8.075e-03, -2.861e-02, 2.852e-02, 3.504e-02, 5.891e-02, 2.802e-02, -7.550e-02, 2.339e-02), r);\n\tr = MulAdd(s2_1, M4(-6.810e-04, 1.146e-01, -5.968e-03, -6.577e-02, 2.726e-01, 1.593e-01, 7.966e-02, 2.335e-02, -2.240e-02, -1.089e-01, -1.357e-02, -1.583e-02, 4.088e-02, -1.074e-01, -5.411e-02, 3.467e-01), r);\n\tr = MulAdd(s2_2, M4(5.432e-02, -8.088e-02, 4.341e-02, -1.622e-03, -1.120e-01, -1.209e-01, -9.585e-02, -2.620e-02, 9.254e-03, -1.146e-02, -1.566e-02, 3.510e-02, 8.974e-02, -1.070e-01, -3.833e-03, 8.178e-02), r);\n\tr = MulAdd(s2_3, M4(-4.635e-02, -1.177e-02, -1.033e-01, 1.648e-02, -1.173e-01, 6.739e-02, 1.362e-01, -6.356e-02, 2.983e-02, 2.365e-02, -5.309e-02, -3.019e-02, 8.626e-02, 3.954e-02, 1.349e-01, 1.739e-01), r);\n\tr = MulAdd(s2_4, M4(-6.323e-02, -1.185e-02, 7.697e-02, 1.531e-01, 1.064e-02, -2.665e-01, 4.370e-01, -2.230e-02, 1.482e-02, 4.515e-02, -5.242e-02, 2.613e-02, 4.812e-01, -2.269e-02, 1.252e-02, 3.916e-01), r);\n\tr = MulAdd(s2_5, M4(8.870e-02, 2.979e-01, -1.148e-01, 3.591e-02, 8.996e-02, -1.399e-02, 4.609e-02, -7.584e-02, 1.080e-02, 1.990e-02, -1.944e-02, 2.932e-02, -9.051e-02, -2.288e-01, -3.643e-01, -1.566e-01), r);\n\tr = MulAdd(s2_6, M4(-4.092e-02, -1.432e-02, 5.140e-02, 7.572e-02, 8.516e-02, 4.077e-03, 2.068e-03, -5.832e-02, -6.287e-03, 2.525e-02, 2.263e-02, -4.400e-03, -4.119e-02, -6.518e-02, 1.449e-01, 3.534e-02), r);\n\tr = MulAdd(s2_7, M4(-2.346e-03, -1.100e-02, -1.841e-01, -4.504e-02, 4.907e-02, -5.487e-03, -1.495e-02, -1.159e-02, 6.396e-02, 1.176e-01, -1.291e-01, -1.254e-01, 2.271e-01, 4.009e-02, 7.242e-02, -1.274e-01), r);\n\tr = MulAdd(s2_8, M4(-4.918e-02, -1.015e-02, -5.141e-02, 4.864e-02, -1.127e-01, -6.540e-02, 1.881e-02, -8.765e-03, -2.301e-02, -3.138e-02, -2.005e-02, -9.395e-05, 1.087e-02, -7.551e-02, 1.812e-02, -5.127e-02), r);\n\tr = MulAdd(s3_0, M4(2.168e-01, -5.872e-02, -6.033e-02, 2.508e-03, -1.379e-01, -5.535e-02, 5.969e-02, 5.551e-02, 8.818e-02, 5.425e-02, 7.221e-02, -6.894e-02, -1.672e-02, 1.812e-02, -3.621e-02, 1.131e-02), r);\n\tr = MulAdd(s3_1, M4(4.283e-02, -1.942e-04, -1.753e-01, -1.483e-02, 5.554e-02, 4.928e-02, 9.082e-02, 4.843e-02, -6.584e-02, -1.871e-01, -9.180e-02, -8.086e-02, 7.754e-02, -1.453e-02, 1.538e-01, 1.044e-01), r);\n\tr = MulAdd(s3_2, M4(3.916e-02, 2.089e-02, -9.051e-02, 3.198e-02, -1.236e-02, -6.463e-02, 1.668e-01, 9.283e-02, 1.492e-02, 1.011e-01, 4.945e-02, 1.140e-01, 7.369e-02, -5.768e-02, 5.828e-02, 4.817e-02), r);\n\tr = MulAdd(s3_3, M4(-1.767e-02, 1.883e-02, -1.172e-01, -4.119e-02, -2.420e-01, -7.944e-02, 2.076e-01, 1.885e-01, -2.633e-02, 9.848e-02, -7.233e-02, -1.787e-01, 5.510e-02, -6.444e-02, 1.024e-01, 8.318e-02), r);\n\tr = MulAdd(s3_4, M4(-1.234e-02, 8.177e-02, -3.822e-02, 9.576e-02, -1.588e-01, 1.682e-01, -1.860e-01, -3.175e-02, -2.992e-01, -2.866e-02, 5.652e-02, -4.088e-02, 3.770e-01, -6.704e-02, 3.433e-01, 1.025e-01), r);\n\tr = MulAdd(s3_5, M4(1.490e-01, 3.375e-01, -1.473e-01, 1.287e-01, -7.768e-03, 1.830e-01, -5.415e-02, 3.301e-02, 6.827e-02, 2.061e-01, 1.572e-01, 1.906e-01, -2.636e-02, -1.488e-01, 4.210e-02, -9.244e-02), r);\n\tr = MulAdd(s3_6, M4(1.140e-03, -3.620e-02, -9.971e-03, 5.804e-02, 1.823e-01, -1.234e-02, 4.516e-02, -2.637e-02, -3.658e-02, -1.711e-02, 3.558e-02, 2.008e-02, 2.854e-02, -5.525e-02, 5.287e-02, -5.876e-02), r);\n\tr = MulAdd(s3_7, M4(6.883e-02, 6.152e-03, -8.080e-02, 4.011e-02, 1.149e-01, -9.289e-02, 1.060e-01, 4.384e-02, -7.819e-02, 1.448e-02, 1.486e-01, -1.965e-02, 4.570e-02, -2.967e-02, -1.034e-01, -1.041e-01), r);\n\tr = MulAdd(s3_8, M4(-3.056e-03, 2.109e-02, 2.237e-02, 9.022e-02, -5.609e-02, -8.009e-03, 8.356e-02, 3.819e-02, -1.670e-02, 4.753e-02, 9.900e-02, 2.052e-02, -7.434e-02, 1.339e-02, -1.596e-02, 3.147e-03), r);\n\treturn r;\n}\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 7\n//!DESC conv6\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 2.856e-05, 8.552e-03, -8.514e-03, -8.667e-03 };\n\tr = MulAdd(s0_0, M4(-2.209e-01, -5.795e-02, -8.765e-02, -2.009e-02, 6.086e-03, -7.115e-02, 8.973e-03, -1.543e-01, -1.694e-01, -5.479e-02, 4.161e-02, 1.035e-02, 1.328e-02, 5.594e-02, 1.018e-05, 2.955e-02), r);\n\tr = MulAdd(s0_1, M4(-3.967e-02, 1.680e-01, -2.233e-02, -8.411e-02, -1.698e-02, -2.763e-02, -1.059e-01, -2.100e-01, 3.937e-02, 3.267e-02, -8.229e-02, 3.501e-02, -2.628e-03, -4.292e-02, 2.431e-02, -3.400e-02), r);\n\tr = MulAdd(s0_2, M4(1.509e-02, -3.018e-02, 5.379e-02, -6.856e-02, 2.673e-03, -4.967e-02, 2.877e-03, -1.595e-02, -1.026e-01, -5.521e-02, 1.200e-02, -4.588e-02, 2.993e-02, -1.958e-02, -2.616e-03, -2.579e-02), r);\n\tr = MulAdd(s0_3, M4(4.993e-02, 1.236e-01, -1.067e-02, -5.176e-01, 2.549e-01, 4.287e-02, 7.064e-02, 1.690e-01, 9.888e-02, 1.328e-02, 4.869e-02, -5.790e-02, -1.404e-01, -6.974e-03, -4.548e-02, 2.544e-01), r);\n\tr = MulAdd(s0_4, M4(1.472e-02, 3.096e-01, -3.115e-01, 2.413e-02, -7.457e-02, -1.535e-01, -3.765e-01, 6.845e-01, 1.154e-01, -1.489e-01, -2.606e-01, 6.946e-02, 7.796e-02, 3.208e-02, -1.062e-01, 2.085e-01), r);\n\tr = MulAdd(s0_5, M4(1.892e-02, 7.663e-02, 7.539e-02, -1.873e-02, -8.866e-02, 4.203e-02, -3.389e-01, 1.615e-01, -7.032e-02, -1.146e-01, 9.530e-02, 6.399e-02, -5.494e-02, -8.184e-02, 1.078e-01, 2.335e-02), r);\n\tr = MulAdd(s0_6, M4(-5.239e-03, 7.910e-02, 4.204e-03, 1.566e-02, -1.073e-01, -2.478e-02, -1.678e-02, -2.501e-02, 2.174e-02, -1.456e-02, 6.321e-02, 8.639e-02, -2.920e-02, -2.341e-01, 6.144e-02, -9.660e-02), r);\n\tr = MulAdd(s0_7, M4(-6.268e-02, 2.019e-03, -7.203e-02, 1.529e-02, 1.932e-01, 8.225e-02, 5.777e-02, -2.183e-01, -8.861e-02, -1.371e-01, 2.163e-01, 1.881e-01, -4.031e-02, -2.713e-01, 3.510e-01, 1.920e-01), r);\n\tr = MulAdd(s0_8, M4(-3.058e-02, 1.151e-01, -3.663e-02, -8.908e-03, 6.323e-02, 1.742e-01, -1.851e-01, -9.976e-02, -2.619e-02, -2.550e-02, 5.783e-02, 1.301e-02, 4.378e-02, -1.185e-01, -2.295e-02, -5.327e-02), r);\n\tr = MulAdd(s1_0, M4(-2.656e-02, -8.664e-02, -1.887e-02, 3.009e-02, 5.418e-02, -1.342e-02, -6.789e-03, -1.552e-02, 2.416e-02, -1.698e-03, -2.975e-02, 1.135e-01, -3.067e-02, 4.174e-02, 2.610e-02, 2.015e-02), r);\n\tr = MulAdd(s1_1, M4(7.872e-03, -4.486e-03, 9.428e-02, -1.019e-01, -8.668e-03, 3.952e-02, -1.387e-02, 4.557e-03, -6.755e-02, -1.692e-01, 3.735e-03, 1.189e-01, -3.229e-02, 3.917e-02, -9.192e-03, 2.140e-02), r);\n\tr = MulAdd(s1_2, M4(5.343e-02, -4.132e-02, 7.494e-02, -5.720e-02, -5.339e-03, 4.912e-02, -3.645e-03, 1.655e-02, -8.378e-03, 1.803e-02, -1.056e-02, -6.085e-03, -2.281e-02, 2.981e-02, -9.818e-04, -3.084e-02), r);\n\tr = MulAdd(s1_3, M4(7.573e-03, 4.110e-02, 3.253e-03, -1.924e-01, 3.217e-02, -9.499e-03, 2.526e-02, 6.588e-02, 6.349e-02, -3.005e-02, -3.070e-02, 1.590e-01, 6.700e-02, 4.547e-02, 2.119e-03, 9.841e-02), r);\n\tr = MulAdd(s1_4, M4(-1.378e-01, 8.172e-02, -7.034e-02, 2.066e-01, 5.232e-03, -7.941e-02, -1.010e-01, 1.572e-01, 1.921e-01, 9.517e-02, -9.389e-01, -4.918e-02, 1.478e-01, -3.970e-01, 2.126e-01, -1.827e-02), r);\n\tr = MulAdd(s1_5, M4(5.501e-02, -7.455e-02, 1.262e-01, 1.406e-02, -4.925e-02, -9.561e-02, 8.075e-02, 2.132e-02, -2.483e-02, 1.129e-01, -5.470e-02, 2.870e-02, -2.324e-02, -1.364e-01, 4.599e-02, 6.126e-03), r);\n\tr = MulAdd(s1_6, M4(3.095e-02, 1.469e-02, 3.846e-02, 4.155e-03, -8.392e-03, -3.402e-02, 4.176e-02, 6.511e-03, 6.366e-02, -6.091e-02, 8.332e-02, 1.722e-02, 1.256e-01, -9.227e-03, -4.640e-02, -2.004e-02), r);\n\tr = MulAdd(s1_7, M4(-1.292e-02, -9.372e-02, 6.924e-02, -7.925e-03, 6.668e-03, 7.838e-03, -5.530e-02, -2.253e-03, 1.959e-01, -1.509e-01, 1.427e-01, 1.159e-01, -7.810e-02, 7.828e-02, 1.069e-01, 1.240e-01), r);\n\tr = MulAdd(s1_8, M4(-6.521e-03, 5.130e-02, -2.057e-02, -3.995e-02, 5.384e-02, 4.676e-02, -6.988e-02, -5.235e-02, 3.864e-02, -7.028e-02, 3.601e-02, 9.088e-03, -1.106e-02, -3.942e-02, 1.250e-04, -4.433e-02), r);\n\tr = MulAdd(s2_0, M4(2.098e-02, -2.232e-02, -1.023e-01, -2.915e-03, 6.659e-03, -8.768e-02, 1.362e-03, 1.724e-02, -2.860e-02, -1.300e-02, 1.271e-03, -7.769e-02, -1.679e-02, -9.083e-04, -5.349e-02, 2.312e-02), r);\n\tr = MulAdd(s2_1, M4(-1.207e-01, 4.680e-03, -1.289e-02, 3.844e-02, -2.073e-02, -4.596e-02, -7.886e-02, 2.531e-02, 3.798e-02, -1.523e-02, 1.300e-01, -3.368e-02, 1.875e-02, -1.294e-02, -7.884e-02, -5.748e-02), r);\n\tr = MulAdd(s2_2, M4(-2.657e-02, 7.694e-02, -6.276e-02, -1.069e-03, 3.325e-02, -1.413e-02, 4.789e-02, 3.326e-02, 4.902e-02, -2.639e-02, 4.732e-03, 6.768e-02, 5.051e-02, -1.277e-01, 1.042e-01, -7.689e-02), r);\n\tr = MulAdd(s2_3, M4(1.491e-01, 2.843e-02, -6.555e-02, -1.054e-01, -1.957e-01, 2.262e-01, -5.168e-02, -2.061e-01, 3.173e-01, 6.741e-02, -2.873e-02, 2.378e-01, 2.837e-02, 5.813e-03, -2.585e-02, -5.869e-02), r);\n\tr = MulAdd(s2_4, M4(7.518e-01, -1.003e-01, 7.786e-02, -4.277e-01, -7.067e-02, 6.606e-01, -2.301e-01, -1.439e-02, 1.334e-01, -1.780e-01, 7.624e-03, 2.551e-01, -4.422e-01, -3.284e-02, -1.636e-01, 2.846e-01), r);\n\tr = MulAdd(s2_5, M4(6.291e-02, -3.015e-01, 1.031e-01, 1.837e-02, -5.147e-02, 1.049e-01, -1.665e-01, -3.407e-02, -1.383e-01, -1.599e-01, 9.878e-03, 5.695e-02, -3.202e-02, -8.912e-02, 3.058e-01, 9.144e-02), r);\n\tr = MulAdd(s2_6, M4(1.529e-01, 2.058e-02, 1.225e-02, 1.418e-02, 2.851e-02, -9.414e-02, 3.406e-02, -8.937e-02, 7.244e-02, -3.096e-02, 4.924e-03, 7.146e-02, -6.292e-02, -5.805e-02, 2.246e-02, -7.245e-02), r);\n\tr = MulAdd(s2_7, M4(-9.794e-02, -3.174e-02, -3.934e-02, 1.694e-01, 1.580e-02, -1.106e-01, 1.071e-01, 9.675e-02, -1.938e-01, -9.670e-02, 1.396e-01, 1.392e-01, 1.158e-01, 1.606e-01, -7.912e-02, -4.225e-01), r);\n\tr = MulAdd(s2_8, M4(4.833e-02, 8.418e-02, 4.940e-02, 7.383e-02, 3.532e-02, -4.740e-02, 4.360e-02, 3.728e-02, 1.727e-02, 1.183e-02, -3.121e-02, -1.380e-01, -5.586e-02, 1.812e-01, -7.809e-02, 2.813e-03), r);\n\tr = MulAdd(s3_0, M4(-3.128e-02, -8.348e-03, -3.419e-02, 1.555e-02, 2.473e-02, -1.091e-01, -2.974e-02, -7.533e-04, -3.134e-02, 4.890e-02, 4.992e-02, 5.672e-03, -2.057e-01, -6.419e-02, -5.290e-03, -9.112e-02), r);\n\tr = MulAdd(s3_1, M4(-1.988e-01, -6.346e-02, -2.376e-02, -1.026e-01, 3.478e-02, -1.038e-01, 8.392e-02, -4.286e-02, 8.850e-02, 5.137e-02, 3.114e-02, 3.773e-02, -5.500e-02, 5.521e-02, 3.891e-02, -7.728e-02), r);\n\tr = MulAdd(s3_2, M4(1.495e-03, 1.989e-03, 8.935e-02, -3.143e-02, -2.298e-02, 3.887e-02, -4.775e-02, 2.035e-02, 2.637e-02, 4.364e-02, -3.181e-02, 5.997e-02, 3.970e-02, -4.506e-02, 4.399e-02, -7.875e-02), r);\n\tr = MulAdd(s3_3, M4(1.929e-01, 6.065e-02, 1.131e-02, -6.712e-02, 2.405e-01, 8.786e-02, 2.701e-02, 3.849e-01, 6.113e-01, 1.128e-01, -5.000e-02, 4.534e-02, 1.853e-01, 1.202e-01, 7.714e-02, 2.600e-01), r);\n\tr = MulAdd(s3_4, M4(4.894e-01, 7.720e-02, -2.085e-01, 1.759e-01, -8.599e-02, 2.499e-01, 2.671e-02, 3.832e-02, -7.451e-02, -4.900e-01, 2.272e-01, 3.038e-01, -1.101e-02, 1.394e-01, -2.065e-01, -2.118e-02), r);\n\tr = MulAdd(s3_5, M4(1.279e-02, -1.004e-02, -1.078e-01, 5.152e-02, 4.421e-02, 9.399e-02, -1.011e-01, -2.129e-02, -4.416e-02, -9.283e-02, -7.153e-03, 8.909e-02, -9.666e-02, 3.185e-02, 1.265e-01, -9.346e-03), r);\n\tr = MulAdd(s3_6, M4(-3.006e-02, -3.389e-03, -1.226e-02, -4.016e-03, -5.528e-02, -6.337e-02, 3.931e-02, 3.432e-02, -1.850e-01, -4.101e-03, -7.500e-02, 2.523e-01, -4.059e-02, 9.910e-03, 6.657e-02, 1.195e-01), r);\n\tr = MulAdd(s3_7, M4(-3.706e-02, -4.632e-02, 1.353e-01, -1.655e-02, -1.189e-03, -1.299e-01, 1.459e-01, 7.592e-02, -8.454e-02, -4.301e-02, 1.108e-01, 2.686e-01, -1.628e-01, -9.140e-02, 7.202e-02, -4.312e-02), r);\n\tr = MulAdd(s3_8, M4(2.611e-02, 4.438e-02, -1.065e-03, 8.827e-02, 5.581e-03, -1.020e-01, 5.709e-02, -1.106e-02, 6.134e-02, 5.575e-02, 5.738e-02, -1.392e-01, 1.741e-02, 1.431e-01, 7.709e-02, 4.472e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 5.044e-03, 1.567e-04, -1.145e-02, 6.927e-04 };\n\tr = MulAdd(s0_0, M4(-2.060e-02, -3.573e-02, 4.912e-02, 5.192e-02, -1.701e-02, -5.571e-02, 3.012e-02, -7.803e-02, 5.806e-02, -1.605e-02, -2.480e-02, 2.160e-03, 3.288e-02, -1.962e-03, -4.509e-02, 5.333e-03), r);\n\tr = MulAdd(s0_1, M4(-7.057e-02, -1.169e-02, 8.115e-02, 3.020e-02, -2.626e-02, -1.616e-01, -1.885e-01, 1.023e-01, 8.520e-02, -9.444e-02, -1.475e-01, -9.016e-02, 6.451e-02, -2.741e-02, 5.301e-02, -8.370e-03), r);\n\tr = MulAdd(s0_2, M4(3.020e-02, -9.219e-02, 8.349e-02, 9.079e-03, -1.881e-02, 4.455e-02, 1.154e-01, -2.889e-02, -1.542e-02, -7.914e-03, -5.572e-02, 3.873e-02, 1.079e-03, -4.719e-02, 2.548e-02, 3.440e-02), r);\n\tr = MulAdd(s0_3, M4(1.301e-01, -8.388e-02, -5.687e-02, 2.733e-01, 3.401e-02, -1.413e-02, 4.602e-02, -2.813e-01, 4.540e-01, -5.388e-02, 7.387e-02, -6.504e-01, 1.325e-01, -2.873e-02, -2.975e-02, -2.031e-01), r);\n\tr = MulAdd(s0_4, M4(7.265e-03, 3.294e-01, -4.150e-01, -4.157e-01, -6.122e-01, -2.782e-01, -2.743e-02, 2.658e-01, -2.096e-01, -1.486e-01, 1.571e-01, 3.423e-01, -1.726e-04, -4.478e-01, -7.431e-02, 1.408e-01), r);\n\tr = MulAdd(s0_5, M4(-5.815e-03, -1.492e-01, 4.425e-02, -1.350e-02, 4.150e-02, 1.274e-01, -2.494e-01, -1.405e-02, 3.992e-02, -2.511e-03, -9.956e-03, 3.636e-02, 2.708e-02, 2.007e-01, 2.176e-01, -1.301e-02), r);\n\tr = MulAdd(s0_6, M4(-2.974e-02, 3.332e-03, -4.831e-02, 3.652e-02, -2.911e-02, -1.271e-02, 3.832e-02, -2.472e-02, 3.249e-02, -1.190e-03, -4.770e-02, -8.276e-02, 1.235e-01, 8.707e-02, 1.179e-01, 1.313e-01), r);\n\tr = MulAdd(s0_7, M4(1.030e-01, -1.146e-01, -6.309e-02, -1.055e-01, 3.441e-02, 3.396e-03, -1.176e-01, 1.386e-01, 1.495e-01, 2.413e-02, 1.509e-01, -5.060e-02, -1.727e-01, 7.154e-01, 1.993e-01, -3.198e-02), r);\n\tr = MulAdd(s0_8, M4(-3.894e-02, 2.181e-02, 4.581e-02, 4.944e-02, -1.211e-01, 1.148e-01, -1.811e-01, -2.012e-02, 4.331e-02, 5.017e-02, -1.258e-02, 1.772e-02, 9.302e-02, -1.110e-02, 1.585e-02, -3.492e-02), r);\n\tr = MulAdd(s1_0, M4(-1.173e-02, 9.897e-03, 7.565e-02, -8.842e-03, -1.854e-02, -7.564e-03, -2.706e-04, 1.776e-03, -9.569e-02, 2.963e-03, 4.260e-02, 2.437e-02, 1.912e-02, -1.021e-02, -5.637e-02, -2.496e-02), r);\n\tr = MulAdd(s1_1, M4(-5.787e-02, -1.200e-02, 7.517e-02, 7.302e-02, 2.392e-02, 1.970e-02, -7.769e-02, 9.084e-03, 3.051e-02, 2.814e-02, -2.882e-03, -2.011e-02, 7.490e-02, 1.503e-02, 1.809e-02, -8.811e-02), r);\n\tr = MulAdd(s1_2, M4(-1.795e-02, -1.067e-02, 1.235e-01, 5.245e-03, -6.887e-02, 4.047e-02, 3.475e-02, 6.296e-03, -3.501e-03, -3.751e-02, -9.597e-02, 2.536e-02, 1.646e-02, -2.891e-02, 1.570e-02, 1.715e-02), r);\n\tr = MulAdd(s1_3, M4(8.565e-02, -6.574e-05, -5.121e-02, 5.086e-02, -7.024e-02, -5.662e-04, 2.205e-03, 4.116e-02, -4.728e-02, 4.219e-02, 4.900e-02, -1.208e-01, -2.718e-02, 3.903e-02, 2.372e-02, -3.676e-02), r);\n\tr = MulAdd(s1_4, M4(-1.401e-01, 5.764e-01, -2.054e-01, -1.029e-01, -1.037e-01, -4.536e-02, 6.555e-02, 1.516e-02, -1.173e-01, 8.400e-02, 1.755e-01, 3.744e-01, -1.311e-01, -1.403e-01, 2.332e-01, 1.204e-01), r);\n\tr = MulAdd(s1_5, M4(4.695e-02, -5.544e-02, 8.989e-02, -6.275e-02, 1.351e-01, -2.991e-02, -8.762e-03, -1.449e-02, -9.402e-03, 2.208e-02, -5.917e-02, -1.552e-02, 2.040e-02, -5.696e-04, 9.425e-02, 2.299e-02), r);\n\tr = MulAdd(s1_6, M4(-4.948e-02, 7.441e-02, 2.896e-02, 2.147e-02, 2.291e-02, -2.075e-02, 3.712e-03, 2.035e-02, 2.247e-02, -3.774e-02, -4.785e-02, -1.356e-01, -5.951e-03, 5.747e-02, 8.200e-04, -2.847e-02), r);\n\tr = MulAdd(s1_7, M4(1.020e-01, -2.641e-02, 1.961e-02, -1.182e-01, -8.813e-02, -1.600e-04, -1.931e-02, 1.197e-02, -3.958e-03, 1.959e-02, 4.974e-02, -1.126e-01, -1.102e-01, 1.223e-01, -4.062e-03, 6.450e-04), r);\n\tr = MulAdd(s1_8, M4(-2.978e-02, 3.062e-02, 1.368e-02, 3.659e-03, -8.098e-02, -3.109e-02, 1.281e-02, 1.060e-03, -2.341e-02, -8.555e-03, -3.087e-02, -2.310e-02, 6.370e-02, -1.293e-02, 2.538e-02, -1.270e-03), r);\n\tr = MulAdd(s2_0, M4(-7.273e-02, 2.366e-02, 4.031e-02, 6.153e-02, -7.381e-02, 2.800e-02, -1.501e-02, 1.604e-01, -5.307e-03, -4.300e-03, -7.255e-02, 1.191e-01, 2.080e-02, -2.249e-02, 2.204e-02, 5.714e-02), r);\n\tr = MulAdd(s2_1, M4(-6.031e-02, -3.662e-02, -2.085e-01, 3.811e-02, -1.018e-01, -4.553e-03, -1.082e-01, -2.846e-03, 6.619e-02, 4.708e-02, -6.461e-02, -9.098e-02, -3.929e-03, 2.785e-02, -1.225e-03, -1.047e-01), r);\n\tr = MulAdd(s2_2, M4(-6.829e-02, 6.371e-02, -8.082e-02, -2.556e-02, 1.878e-02, -2.257e-02, -9.831e-03, -5.339e-02, 6.919e-03, -8.110e-02, 3.922e-02, 1.624e-03, 3.858e-02, -6.258e-02, 1.776e-02, 2.512e-03), r);\n\tr = MulAdd(s2_3, M4(-1.304e-01, -1.371e-02, -2.400e-02, 2.024e-01, 4.433e-01, -1.796e-01, -8.035e-02, -3.362e-01, 1.620e-01, 7.586e-03, -4.559e-02, 3.404e-02, 1.072e-01, -2.411e-02, 3.556e-02, -2.595e-01), r);\n\tr = MulAdd(s2_4, M4(-9.545e-02, -6.805e-02, -6.113e-01, -3.604e-01, 1.015e-01, 1.480e-01, -5.419e-01, 7.857e-02, -1.547e-01, 9.204e-02, 1.295e-01, 2.123e-01, -6.725e-02, 1.549e-01, -5.152e-01, -1.548e-01), r);\n\tr = MulAdd(s2_5, M4(-5.472e-03, 3.834e-02, 1.714e-01, -2.580e-03, -1.310e-02, 6.837e-02, -1.696e-01, 2.731e-02, 2.067e-02, 1.079e-01, 9.934e-02, -2.763e-02, -3.332e-02, -4.433e-02, 2.018e-01, -1.534e-02), r);\n\tr = MulAdd(s2_6, M4(5.036e-02, 2.648e-02, -6.527e-03, -3.690e-02, -7.802e-02, 2.207e-02, 6.141e-02, 1.958e-01, -8.824e-03, 2.394e-02, -2.215e-02, 1.731e-02, 4.865e-02, -4.820e-02, 4.198e-02, -2.534e-01), r);\n\tr = MulAdd(s2_7, M4(-5.007e-02, 4.344e-02, 4.250e-03, -4.466e-02, -4.042e-03, 1.976e-01, 1.295e-01, -7.906e-02, 1.381e-02, 4.920e-02, 1.303e-01, -1.579e-02, 3.775e-03, -1.275e-01, 7.502e-02, 2.351e-02), r);\n\tr = MulAdd(s2_8, M4(-1.144e-01, 1.398e-01, 2.054e-01, -6.233e-02, -6.101e-02, -2.771e-02, 2.633e-02, -2.155e-02, -3.079e-02, -4.460e-02, -4.350e-03, 4.232e-02, 4.897e-02, 8.307e-02, -1.322e-01, -1.186e-02), r);\n\tr = MulAdd(s3_0, M4(-2.531e-02, -1.739e-02, 2.189e-02, 6.500e-02, -8.803e-02, 3.329e-02, 1.011e-01, -7.934e-02, -1.538e-02, 8.243e-02, 8.416e-03, -5.044e-02, 3.723e-03, -5.774e-02, 1.004e-02, -1.064e-01), r);\n\tr = MulAdd(s3_1, M4(-3.050e-02, 6.282e-03, 1.975e-02, -4.380e-02, -2.323e-02, -6.742e-02, -2.779e-02, 1.099e-01, 6.210e-02, -4.539e-02, -9.253e-02, -9.297e-02, 4.207e-02, -7.108e-02, -3.079e-02, -9.736e-04), r);\n\tr = MulAdd(s3_2, M4(3.245e-02, -7.168e-02, -1.138e-01, -1.895e-02, 1.658e-02, 5.894e-02, -5.603e-02, -6.963e-03, -2.875e-02, 1.198e-02, 5.772e-02, -1.160e-02, 9.326e-03, -3.573e-02, 4.991e-03, 1.271e-02), r);\n\tr = MulAdd(s3_3, M4(9.787e-02, -2.036e-02, 1.718e-02, -1.622e-02, 1.043e-01, -3.425e-02, -6.481e-02, -3.099e-01, 7.831e-02, 8.317e-02, 1.363e-03, -5.345e-02, 1.314e-01, 6.020e-02, -3.589e-02, -7.305e-01), r);\n\tr = MulAdd(s3_4, M4(-1.829e-02, 4.974e-02, -2.094e-01, -2.861e-01, 1.128e-01, 1.619e-01, -2.358e-01, 2.109e-04, -4.152e-01, 2.425e-02, 2.893e-01, 1.625e-01, -2.212e-01, 9.801e-02, 8.805e-02, -1.555e-01), r);\n\tr = MulAdd(s3_5, M4(-1.477e-01, 1.423e-01, -8.523e-02, 4.213e-02, 2.496e-02, 1.500e-03, -6.522e-02, -2.658e-02, 7.489e-02, 3.555e-02, -5.523e-03, -3.305e-02, -1.358e-01, -1.811e-02, 2.465e-02, -5.622e-03), r);\n\tr = MulAdd(s3_6, M4(-5.342e-03, 3.661e-03, -1.275e-03, -7.544e-02, -2.144e-02, 1.679e-02, 3.667e-02, 9.079e-02, -1.567e-01, 2.069e-02, 4.591e-03, 8.125e-03, 8.032e-02, -3.126e-02, 3.645e-02, -2.959e-01), r);\n\tr = MulAdd(s3_7, M4(8.163e-02, 2.339e-02, -9.055e-04, 3.790e-02, -2.948e-02, 4.977e-02, 7.393e-02, -8.920e-03, 2.544e-02, 3.568e-02, 1.493e-01, -1.212e-01, 1.065e-01, -1.628e-01, 1.593e-01, -8.379e-02), r);\n\tr = MulAdd(s3_8, M4(1.707e-02, 8.862e-02, -3.193e-02, -8.568e-02, -1.546e-02, -4.577e-02, 8.805e-02, 1.346e-02, 1.543e-02, -5.755e-02, -3.642e-02, 2.221e-02, 1.673e-03, -2.868e-03, -6.763e-02, -6.137e-03), r);\n\treturn r;\n}\n\nvoid Pass7(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 8\n//!DESC conv7\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t0, t1\n//!OUT t2, t3\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.743e-03, -5.471e-03, -9.889e-04, 8.561e-05 };\n\tr = MulAdd(s0_0, M4(-8.064e-02, -3.833e-02, -3.181e-02, 1.054e-02, 9.509e-02, -6.553e-02, -5.670e-03, -3.696e-02, 2.583e-02, -1.569e-02, 1.094e-02, -2.399e-02, -3.234e-02, -1.243e-01, 5.270e-03, -6.099e-02), r);\n\tr = MulAdd(s0_1, M4(-4.438e-02, -1.485e-01, -1.386e-02, 4.858e-02, -5.601e-02, 1.331e-01, 3.263e-02, -9.788e-02, -2.371e-02, 9.461e-02, -2.250e-02, 1.755e-01, -5.625e-02, 3.249e-01, 1.192e-01, 7.269e-03), r);\n\tr = MulAdd(s0_2, M4(-6.456e-02, 1.150e-01, 3.409e-02, -1.190e-02, -2.178e-02, 1.632e-02, -2.622e-02, -3.145e-02, -5.530e-02, 6.932e-03, 2.125e-02, -1.092e-02, 7.237e-03, -1.095e-02, -9.447e-02, 1.069e-01), r);\n\tr = MulAdd(s0_3, M4(3.359e-02, -7.934e-02, -1.498e-02, -1.134e-02, -1.444e-02, 1.000e-01, -3.456e-02, 9.253e-02, 4.219e-01, -1.332e-01, -2.880e-03, 3.749e-01, 8.414e-02, 5.580e-02, 7.691e-02, 9.379e-02), r);\n\tr = MulAdd(s0_4, M4(1.168e+00, 3.189e-01, 1.974e-03, 6.336e-01, -2.977e-01, -1.237e-01, -7.846e-02, 1.225e-02, -5.781e-01, 1.313e-02, -8.957e-01, 9.973e-02, -3.968e-01, 4.271e-01, -1.687e-01, -4.163e-01), r);\n\tr = MulAdd(s0_5, M4(2.994e-02, -3.345e-01, 5.888e-02, 3.474e-01, 1.451e-02, 5.160e-02, 1.694e-02, -1.601e-02, -6.726e-02, -8.100e-02, 3.170e-01, 1.724e-01, 5.414e-02, 5.215e-02, 1.187e-01, 6.467e-02), r);\n\tr = MulAdd(s0_6, M4(-7.173e-02, -5.387e-02, 2.614e-03, -1.457e-02, -5.838e-02, 1.020e-02, -1.882e-02, 3.052e-02, -1.867e-01, -1.652e-02, -4.128e-02, -3.654e-02, 1.469e-02, 2.656e-02, 2.224e-02, -3.825e-02), r);\n\tr = MulAdd(s0_7, M4(-2.378e-01, 7.857e-03, -3.584e-02, 4.349e-03, -9.461e-02, 4.763e-02, -6.449e-02, 7.229e-02, 9.332e-02, 3.774e-02, -1.346e-01, -1.196e-01, -2.878e-01, 9.030e-02, 1.203e-01, 3.148e-03), r);\n\tr = MulAdd(s0_8, M4(9.453e-02, 1.255e-01, -1.324e-01, 6.370e-02, 2.242e-03, -1.721e-03, 6.953e-02, 3.019e-03, -5.313e-02, -1.384e-02, 4.697e-02, 4.914e-02, -9.657e-02, 1.233e-01, -1.883e-01, -8.477e-03), r);\n\tr = MulAdd(s1_0, M4(-1.283e-02, 3.713e-02, 6.623e-03, 6.693e-03, -5.631e-02, 2.185e-02, -3.356e-02, 2.070e-03, 5.509e-02, -2.332e-01, 4.553e-03, -3.012e-02, -1.517e-02, 1.337e-03, -6.578e-03, -2.650e-02), r);\n\tr = MulAdd(s1_1, M4(3.377e-02, 2.493e-03, -9.238e-03, -6.058e-02, -1.275e-01, 8.259e-02, 5.112e-02, 3.219e-02, -2.216e-02, 7.512e-02, 3.070e-02, 7.029e-02, -1.924e-02, 4.763e-02, -2.827e-02, 4.378e-03), r);\n\tr = MulAdd(s1_2, M4(-9.929e-03, 1.398e-02, 1.972e-02, 1.740e-02, -9.611e-03, 5.041e-02, -4.188e-02, 5.115e-02, -1.306e-02, -1.754e-03, -4.642e-02, 1.170e-02, -2.771e-02, -3.207e-02, -2.397e-02, -4.773e-02), r);\n\tr = MulAdd(s1_3, M4(-2.679e-02, -2.625e-03, 1.924e-02, 9.094e-03, -2.648e-01, -3.603e-02, 1.072e-02, -1.963e-01, 1.635e-01, -2.366e-02, 1.518e-02, 1.552e-01, 6.552e-02, -4.113e-03, 1.333e-02, -2.104e-02), r);\n\tr = MulAdd(s1_4, M4(2.173e-01, 2.712e-01, 1.597e-02, 2.260e-01, -6.777e-01, 1.775e-01, 3.145e-01, 3.556e-02, -2.059e-01, -2.622e-02, -2.541e-01, -5.547e-03, -1.087e-01, -4.131e-02, 2.261e-02, -9.224e-02), r);\n\tr = MulAdd(s1_5, M4(-3.171e-02, -5.821e-02, -6.229e-02, 1.392e-01, 2.494e-02, 9.668e-02, -5.215e-02, 1.746e-01, -5.280e-02, -3.489e-02, 7.232e-02, -3.858e-03, 2.566e-02, 4.005e-02, -5.404e-02, -8.660e-02), r);\n\tr = MulAdd(s1_6, M4(7.131e-03, 2.685e-02, -2.403e-03, 1.059e-02, 1.469e-01, 1.232e-01, 5.431e-02, 1.890e-01, -1.081e-01, 3.885e-02, -3.539e-02, 5.289e-02, -1.438e-02, -3.979e-03, -6.192e-03, -2.331e-02), r);\n\tr = MulAdd(s1_7, M4(-1.071e-01, 7.591e-04, -6.525e-02, 1.632e-02, -1.323e-01, 3.493e-02, -9.612e-02, 2.512e-02, -7.017e-02, 4.360e-02, -6.099e-02, 3.901e-04, -1.764e-02, -1.061e-02, -3.409e-02, -2.255e-02), r);\n\tr = MulAdd(s1_8, M4(-4.386e-02, -1.254e-02, 2.400e-02, 1.194e-01, 5.802e-02, 8.040e-02, -3.854e-02, 5.653e-02, -1.702e-02, -2.335e-02, 1.121e-01, 2.440e-02, -3.404e-04, 7.401e-02, -5.980e-02, -3.817e-02), r);\n\tr = MulAdd(s2_0, M4(-9.579e-02, 4.650e-02, 8.575e-03, -5.575e-02, -8.117e-02, -7.162e-02, 6.056e-03, -3.501e-02, 9.302e-02, -1.216e-01, -6.163e-02, 6.897e-02, -3.371e-02, 1.772e-02, 3.013e-03, -5.936e-03), r);\n\tr = MulAdd(s2_1, M4(4.708e-02, 1.280e-01, 3.359e-02, 1.003e-01, 9.448e-02, 3.132e-02, 8.137e-02, 9.316e-02, -5.728e-02, 5.457e-02, 9.155e-02, -3.774e-02, -2.305e-02, -1.017e-01, 2.738e-02, -2.373e-02), r);\n\tr = MulAdd(s2_2, M4(8.975e-03, 8.207e-02, -6.346e-02, 8.974e-02, -2.279e-02, -9.128e-03, -4.230e-02, -8.024e-03, 5.563e-02, 9.479e-02, -9.852e-02, 8.121e-02, -1.145e-02, 6.518e-02, -2.581e-02, 2.733e-02), r);\n\tr = MulAdd(s2_3, M4(1.479e-01, -2.068e-02, 3.906e-02, 8.235e-02, -3.507e-02, 1.935e-01, 1.466e-02, 2.432e-01, 5.253e-01, -3.897e-02, -4.775e-02, -9.807e-02, 5.332e-02, 9.679e-02, -1.589e-02, 7.846e-02), r);\n\tr = MulAdd(s2_4, M4(1.030e-01, 3.311e-01, 1.128e-01, -1.244e-01, -1.489e-01, 2.902e-01, 2.805e-01, -1.558e-01, -1.289e-01, 3.306e-01, -1.475e-01, -6.570e-02, 3.265e-02, -1.141e-01, 6.703e-02, -1.717e-01), r);\n\tr = MulAdd(s2_5, M4(2.855e-02, 1.184e-01, -2.904e-01, 2.258e-02, -7.943e-02, -5.343e-02, -8.054e-02, 1.255e-01, -1.108e-02, 9.190e-02, -1.725e-01, -6.260e-02, -8.194e-03, 5.840e-02, -1.704e-01, 7.028e-03), r);\n\tr = MulAdd(s2_6, M4(1.684e-02, 1.411e-02, 8.570e-03, -1.440e-02, 3.143e-02, 5.820e-03, 1.764e-02, 5.872e-02, 7.943e-02, -5.400e-02, 8.544e-02, -3.393e-02, -7.690e-02, -2.082e-02, 2.975e-03, -5.316e-02), r);\n\tr = MulAdd(s2_7, M4(-2.681e-02, 7.370e-04, -5.250e-02, -3.652e-02, -7.367e-02, -2.542e-02, 1.165e-01, -5.653e-02, 3.500e-02, 1.781e-02, -7.241e-02, -1.056e-03, -9.338e-02, 2.896e-03, -3.257e-02, 1.238e-01), r);\n\tr = MulAdd(s2_8, M4(-6.529e-03, 3.786e-04, -9.472e-02, 5.894e-02, -4.906e-02, 1.019e-02, -3.093e-03, 3.903e-02, 2.610e-02, 6.776e-02, -7.901e-02, -1.485e-03, -9.116e-02, 1.427e-01, -6.813e-02, -1.681e-02), r);\n\tr = MulAdd(s3_0, M4(-6.420e-03, 1.512e-02, 2.670e-02, -1.570e-01, -6.513e-03, 5.949e-02, 1.094e-02, -6.247e-02, -1.649e-02, -6.791e-02, 1.733e-03, 2.568e-02, -5.164e-02, 2.694e-02, 8.787e-03, -4.768e-02), r);\n\tr = MulAdd(s3_1, M4(1.001e-01, 2.465e-01, 9.252e-02, -2.858e-02, 1.702e-02, -3.235e-02, 1.258e-01, -3.779e-03, 1.607e-02, 1.508e-01, 3.810e-02, -1.863e-02, -1.536e-02, -2.347e-01, -1.849e-03, 5.462e-03), r);\n\tr = MulAdd(s3_2, M4(9.057e-03, 1.345e-01, 2.663e-03, -4.507e-02, 2.303e-02, 2.462e-02, -6.214e-02, 7.788e-02, 4.236e-02, 5.039e-02, 2.335e-02, 2.963e-02, -4.921e-02, 4.596e-02, -1.201e-02, 1.782e-02), r);\n\tr = MulAdd(s3_3, M4(5.325e-02, 2.420e-01, 4.483e-03, 2.510e-01, -7.061e-03, -1.147e-01, -9.773e-03, 1.426e-01, 3.031e-03, 4.003e-02, -1.434e-02, 6.091e-02, 9.825e-02, 8.520e-02, 2.736e-02, 1.416e-02), r);\n\tr = MulAdd(s3_4, M4(7.373e-02, 4.379e-01, -7.470e-02, 2.506e-01, -2.329e-01, 2.474e-01, 2.903e-01, -4.874e-01, -7.010e-02, 1.753e-01, 6.191e-02, 1.025e-01, 8.968e-02, -1.998e-01, 4.465e-05, -5.672e-01), r);\n\tr = MulAdd(s3_5, M4(1.284e-01, 1.790e-01, -1.679e-01, 2.744e-01, -3.069e-02, -4.589e-02, -2.251e-01, -1.779e-02, 3.338e-02, 5.997e-02, 1.126e-03, 3.696e-03, -1.154e-01, -5.846e-02, -1.024e-01, 3.392e-01), r);\n\tr = MulAdd(s3_6, M4(-2.364e-02, -9.130e-03, -3.655e-02, -1.954e-02, -9.995e-02, 2.973e-02, 4.064e-03, -4.305e-02, -2.863e-03, -8.699e-03, -1.583e-02, 4.408e-03, -6.298e-02, 2.150e-02, 1.992e-02, -2.189e-02), r);\n\tr = MulAdd(s3_7, M4(-4.068e-03, -5.225e-02, 3.381e-02, 8.963e-03, 2.640e-02, -2.133e-02, 1.803e-01, -9.592e-02, -1.579e-01, 1.786e-02, 6.515e-02, 2.114e-01, -2.167e-01, -1.371e-01, 2.144e-03, 2.155e-02), r);\n\tr = MulAdd(s3_8, M4(-3.349e-03, 1.488e-01, 8.888e-03, 1.001e-01, -4.780e-02, -1.406e-02, -2.940e-02, 4.185e-02, 2.758e-03, 2.820e-02, 5.186e-02, 2.930e-02, 1.372e-01, 1.122e-01, -1.140e-01, 1.343e-01), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 2.086e-03, 2.299e-03, -5.180e-03, 1.039e-03 };\n\tr = MulAdd(s0_0, M4(-5.525e-02, -5.493e-02, -8.973e-04, 4.167e-02, -5.567e-03, 5.194e-03, -5.363e-02, 1.513e-01, 9.020e-02, -4.135e-02, -3.216e-02, 5.381e-02, 7.401e-03, 7.252e-02, -1.617e-02, -1.196e-01), r);\n\tr = MulAdd(s0_1, M4(-5.790e-02, -1.934e-02, -1.790e-03, 5.390e-02, -6.975e-02, 4.877e-02, 1.578e-01, -6.377e-03, 1.284e-01, -4.775e-02, -6.735e-02, -9.064e-02, 1.184e-01, 9.055e-02, 9.935e-02, 2.014e-01), r);\n\tr = MulAdd(s0_2, M4(-4.004e-02, 4.488e-02, -4.212e-02, -6.286e-02, 1.711e-02, 2.731e-02, -2.406e-02, 1.097e-02, -3.399e-02, 8.065e-03, 3.894e-02, 1.282e-02, 2.036e-01, 4.754e-02, -4.522e-02, 6.568e-03), r);\n\tr = MulAdd(s0_3, M4(-2.372e-02, 6.962e-02, 3.557e-02, -8.888e-03, -6.028e-02, -3.183e-02, -1.608e-01, -3.044e-02, -1.429e-02, 3.901e-02, -6.904e-02, -5.157e-01, -1.547e-02, -1.362e-01, 4.108e-03, -1.772e-01), r);\n\tr = MulAdd(s0_4, M4(2.381e-01, -3.453e-01, -2.427e-01, 7.987e-02, 1.617e-01, 1.046e-01, 6.711e-02, 4.241e-01, -5.566e-01, 2.310e-01, 1.982e-01, 1.211e-02, 4.338e-02, -1.123e+00, -2.644e-01, -5.025e-01), r);\n\tr = MulAdd(s0_5, M4(-4.302e-01, -6.545e-02, -6.868e-03, 2.568e-01, 2.493e-02, 2.488e-02, -1.175e-01, -1.257e-02, 5.920e-02, -3.840e-03, -1.888e-01, 7.050e-02, 8.341e-02, -1.762e-01, -9.946e-02, -3.864e-02), r);\n\tr = MulAdd(s0_6, M4(-6.090e-03, 5.118e-02, 5.784e-02, 1.236e-02, -2.339e-02, 1.262e-03, -6.952e-02, -5.645e-02, 7.682e-02, 8.910e-02, -6.863e-02, -1.345e-01, 1.935e-02, -1.587e-02, 2.932e-03, 2.945e-02), r);\n\tr = MulAdd(s0_7, M4(1.043e-02, 3.625e-01, -1.154e-01, 7.974e-02, -1.517e-02, 1.574e-02, 8.566e-02, -8.753e-02, 8.905e-02, 1.145e-01, 7.292e-02, -9.528e-02, -6.925e-02, 4.815e-03, -4.870e-03, 1.570e-02), r);\n\tr = MulAdd(s0_8, M4(2.513e-01, -1.567e-01, 3.452e-02, -2.177e-01, 4.435e-03, 2.229e-02, -5.694e-02, 3.564e-02, -9.355e-03, -3.216e-03, 3.984e-03, -2.533e-02, 5.015e-03, -4.419e-03, 5.343e-03, -5.821e-02), r);\n\tr = MulAdd(s1_0, M4(1.183e-02, 2.180e-03, 3.312e-02, 1.897e-02, -9.420e-02, -1.052e-01, -7.984e-02, -8.329e-02, 1.925e-02, -1.752e-02, -6.860e-03, -1.326e-01, -3.338e-02, -2.484e-02, 5.283e-03, -2.789e-03), r);\n\tr = MulAdd(s1_1, M4(-5.266e-02, -3.840e-03, -5.604e-02, 6.279e-02, 2.299e-01, 1.305e-01, 1.038e-01, -9.023e-02, -6.376e-02, 3.853e-02, 1.382e-01, -3.984e-02, 6.131e-02, 1.529e-03, -2.258e-02, 6.728e-02), r);\n\tr = MulAdd(s1_2, M4(-2.498e-02, 1.543e-02, 6.288e-03, 1.517e-03, 3.486e-02, 3.774e-02, -2.774e-02, 7.099e-02, 2.514e-02, 9.266e-03, -7.521e-03, 6.476e-03, -6.458e-02, 9.736e-03, 1.127e-02, 7.742e-03), r);\n\tr = MulAdd(s1_3, M4(-1.946e-02, 9.133e-04, 3.637e-02, -4.983e-02, 9.720e-02, -4.280e-01, -1.311e-01, 2.993e-02, 5.112e-02, -4.233e-02, -6.549e-02, -1.818e-01, 6.990e-03, 1.344e-02, -5.027e-02, 1.111e-01), r);\n\tr = MulAdd(s1_4, M4(-3.156e-02, -8.842e-02, -2.152e-01, 5.452e-03, 1.343e-01, 4.848e-01, 2.658e-01, -8.968e-03, 4.181e-02, -3.102e-02, 4.729e-01, 2.922e-01, 1.338e-01, -1.812e-02, 1.293e-02, -2.395e-01), r);\n\tr = MulAdd(s1_5, M4(8.511e-02, -2.497e-02, -6.139e-03, 6.542e-02, 2.345e-01, 4.880e-02, -1.407e-01, 5.752e-02, 5.268e-02, 1.468e-02, 1.387e-02, 3.528e-02, -1.074e-01, 1.000e-02, 8.326e-02, 6.166e-02), r);\n\tr = MulAdd(s1_6, M4(-7.543e-03, -3.122e-02, 1.798e-02, 2.674e-02, -1.737e-02, -2.950e-01, -5.185e-02, 1.724e-01, -1.144e-02, -4.360e-02, -2.832e-02, -3.791e-02, 4.188e-03, -1.949e-02, 3.661e-03, 1.626e-02), r);\n\tr = MulAdd(s1_7, M4(-2.500e-02, 3.936e-02, -7.625e-02, -1.774e-04, -1.588e-01, 2.302e-02, 8.201e-02, -5.263e-02, -1.705e-02, 3.713e-02, 1.013e-01, -9.792e-02, 1.231e-03, 3.596e-02, -5.049e-02, 4.461e-02), r);\n\tr = MulAdd(s1_8, M4(-1.184e-02, -1.957e-02, -6.394e-02, -7.422e-03, 3.436e-02, -4.979e-02, -6.860e-02, 5.641e-02, -5.356e-02, -8.266e-03, 3.798e-02, 1.110e-03, 6.696e-02, 2.150e-02, 3.553e-03, -2.353e-02), r);\n\tr = MulAdd(s2_0, M4(-2.568e-02, 5.060e-02, 4.885e-02, -6.251e-02, -1.792e-01, -4.927e-02, -3.191e-03, -7.133e-04, 2.122e-02, 2.619e-01, -4.819e-02, -1.790e-02, 4.136e-02, 5.090e-02, 6.009e-02, 6.033e-02), r);\n\tr = MulAdd(s2_1, M4(6.606e-02, -3.492e-02, -6.592e-02, -7.088e-02, -4.980e-03, -1.418e-01, -1.253e-01, -1.462e-02, -1.838e-02, 1.042e-01, 9.550e-02, -1.567e-01, -3.643e-02, -4.484e-02, 3.174e-03, -1.487e-01), r);\n\tr = MulAdd(s2_2, M4(9.162e-02, 1.759e-02, -8.418e-02, -1.465e-02, -2.496e-02, -1.225e-02, -2.968e-02, -2.787e-02, 4.041e-03, -4.790e-03, -6.679e-02, 7.165e-03, -3.727e-02, 3.796e-02, 3.822e-02, 8.043e-03), r);\n\tr = MulAdd(s2_3, M4(1.837e-03, -1.714e-01, -6.961e-02, 1.382e-01, 5.682e-02, -4.873e-01, -3.312e-02, 5.158e-01, 1.352e-01, -1.975e-01, 1.597e-02, 6.544e-02, -3.329e-02, -3.234e-02, 5.270e-03, -1.502e-01), r);\n\tr = MulAdd(s2_4, M4(-5.789e-02, -7.730e-02, 6.364e-02, 5.596e-03, -2.386e-01, -5.458e-02, 8.180e-02, 2.441e-02, 6.474e-02, 5.300e-01, -4.721e-01, -3.701e-02, 2.024e-01, 1.321e-02, -9.498e-02, 4.516e-01), r);\n\tr = MulAdd(s2_5, M4(2.882e-02, -2.058e-02, -1.082e-01, -6.370e-02, 1.480e-01, 1.513e-02, -1.423e-01, 2.692e-02, 2.782e-02, 7.790e-02, -1.576e-02, -8.523e-02, 2.453e-01, 6.333e-04, 8.954e-02, 2.339e-01), r);\n\tr = MulAdd(s2_6, M4(4.058e-03, 2.871e-02, 1.125e-02, 5.663e-03, 2.601e-02, 6.732e-02, 1.797e-02, -3.068e-02, -2.809e-02, -5.919e-03, 4.540e-02, 2.821e-03, -7.565e-03, 4.519e-02, 2.327e-02, -3.882e-02), r);\n\tr = MulAdd(s2_7, M4(-2.998e-02, -6.281e-02, 2.913e-02, -2.864e-02, -6.257e-02, 7.332e-02, 5.505e-04, 1.016e-01, -1.131e-01, -6.519e-02, -1.234e-01, 8.235e-02, -2.776e-02, -4.644e-02, -6.901e-02, 1.809e-02), r);\n\tr = MulAdd(s2_8, M4(-2.236e-02, -9.187e-03, -1.409e-01, 4.984e-02, 2.245e-02, 1.562e-02, -1.853e-02, -5.231e-02, 3.672e-02, -2.155e-02, -5.280e-02, 3.258e-03, 2.879e-02, 7.168e-02, 4.822e-02, -5.377e-02), r);\n\tr = MulAdd(s3_0, M4(1.415e-02, 1.026e-01, 1.554e-01, 1.670e-02, 3.504e-02, 3.557e-02, 4.013e-02, 8.621e-02, -1.502e-02, 7.253e-03, -1.344e-02, -5.635e-02, 1.603e-02, 2.626e-02, 2.599e-02, 1.666e-03), r);\n\tr = MulAdd(s3_1, M4(-3.214e-02, -1.573e-01, 1.001e-01, -1.588e-01, 5.839e-02, -4.139e-02, 3.952e-02, -1.764e-02, 1.964e-02, -1.310e-02, 6.175e-03, -4.100e-02, -1.181e-02, -7.760e-02, -3.020e-02, 7.317e-04), r);\n\tr = MulAdd(s3_2, M4(-1.052e-01, -3.080e-02, 3.791e-04, -3.890e-02, 6.022e-02, -4.121e-03, -1.037e-01, -2.708e-02, 1.788e-02, -4.931e-03, -3.259e-02, -2.086e-02, -3.673e-02, 4.576e-02, 5.512e-02, 1.266e-02), r);\n\tr = MulAdd(s3_3, M4(-1.639e-01, -2.842e-01, -8.190e-02, 3.341e-02, 4.371e-02, -3.729e-02, -1.062e-01, 5.776e-02, -9.976e-02, 1.355e-01, 3.865e-02, -2.485e-01, 3.205e-02, -9.464e-02, -3.115e-02, 7.982e-02), r);\n\tr = MulAdd(s3_4, M4(2.411e-01, -1.693e-01, 7.569e-01, -3.759e-01, -5.648e-01, 1.042e-01, 4.819e-01, 3.628e-03, 5.672e-01, 2.590e-01, -2.252e-01, 1.947e-01, 1.242e-01, 1.440e-01, 8.207e-02, 3.523e-01), r);\n\tr = MulAdd(s3_5, M4(3.972e-01, -5.478e-02, -2.617e-01, 1.363e-01, 6.289e-02, 8.769e-03, -1.476e-01, 3.871e-02, 1.088e-01, 2.484e-02, -4.114e-02, -4.563e-02, 1.680e-01, 8.067e-02, 1.434e-01, 3.357e-02), r);\n\tr = MulAdd(s3_6, M4(-1.022e-02, -5.556e-02, -3.107e-02, 4.839e-02, 1.079e-02, 1.388e-01, 2.482e-02, -1.166e-01, -5.799e-02, -3.306e-02, 6.809e-02, -6.095e-02, -4.195e-03, 6.835e-03, -1.020e-03, 1.108e-01), r);\n\tr = MulAdd(s3_7, M4(-1.105e-01, 2.145e-02, -4.958e-02, 1.012e-01, -3.125e-02, -2.931e-02, 3.629e-02, 1.651e-01, -6.673e-02, 1.906e-02, -6.683e-02, 6.445e-02, -4.213e-02, -2.649e-02, -3.545e-02, 1.384e-01), r);\n\tr = MulAdd(s3_8, M4(-1.362e-02, -2.108e-02, -1.410e-01, 9.828e-02, -1.097e-02, 2.497e-02, -9.738e-02, 1.768e-02, 5.047e-02, 3.760e-02, -7.576e-02, 2.529e-03, 8.835e-02, -2.202e-01, -1.604e-02, 4.994e-03), r);\n\treturn r;\n}\n\nvoid Pass8(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt2[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt3[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 9\n//!DESC conv8\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN t2, t3\n//!OUT t0, t1\n\n#define l0(x, y) V4(O(t2, float2(x, y)))\n#define l1(x, y) V4(O(t3, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 7.492e-03, 1.996e-03, 3.514e-04, -9.678e-04 };\n\tr = MulAdd(s0_0, M4(4.333e-02, -2.234e-02, 4.223e-03, -2.379e-02, 4.428e-02, -4.734e-03, -1.071e-03, 9.366e-03, -2.942e-01, 1.902e-01, -1.446e-01, -5.203e-02, -8.944e-02, -3.073e-02, -2.361e-02, 3.757e-02), r);\n\tr = MulAdd(s0_1, M4(-9.616e-02, -6.887e-02, 1.052e-01, -4.074e-02, -1.591e-02, 5.493e-02, -2.139e-03, -3.894e-02, -1.097e-01, 4.568e-02, -7.025e-02, -2.882e-02, -6.000e-02, 2.235e-02, -5.432e-02, 5.809e-03), r);\n\tr = MulAdd(s0_2, M4(-1.222e-02, 5.753e-02, 1.194e-01, -2.727e-02, -2.105e-02, 2.036e-02, -8.233e-02, -1.205e-02, -5.085e-02, -6.829e-03, -9.941e-03, -1.337e-02, 7.795e-02, -5.759e-02, 5.618e-02, -9.238e-03), r);\n\tr = MulAdd(s0_3, M4(1.324e-01, -1.185e-01, 3.684e-03, 2.976e-02, 1.356e-01, -1.205e-01, -1.850e-02, -2.291e-02, -1.569e-01, 4.140e-01, 2.106e-01, -7.525e-01, 1.914e-02, 2.863e-02, -1.284e-02, -1.043e-01), r);\n\tr = MulAdd(s0_4, M4(-1.022e-01, 2.592e-02, -1.560e-01, -6.939e-01, -1.890e-01, -3.180e-02, 8.099e-02, 8.758e-02, 5.179e-02, 1.440e-01, 1.557e-01, 6.581e-02, 6.784e-02, 2.236e-01, 7.923e-02, 1.808e-01), r);\n\tr = MulAdd(s0_5, M4(-9.244e-02, -3.930e-02, 1.281e-01, 3.306e-02, -8.861e-02, 1.411e-01, 1.488e-01, 4.144e-02, 8.077e-03, 5.162e-02, 5.214e-02, 6.791e-03, 5.626e-02, -7.312e-02, -8.413e-02, 2.335e-02), r);\n\tr = MulAdd(s0_6, M4(-3.044e-02, 1.477e-02, 1.234e-02, 1.927e-02, 4.953e-02, -7.250e-02, 4.041e-02, -3.293e-02, 1.257e-01, -6.445e-02, 5.049e-02, -1.587e-01, 6.960e-02, -1.008e-01, -1.715e-02, 1.055e-01), r);\n\tr = MulAdd(s0_7, M4(1.099e-01, 4.099e-02, -4.497e-02, 1.613e-02, 1.081e-01, -5.289e-02, 7.797e-03, -8.610e-02, 1.004e-01, 2.457e-02, -9.614e-02, 2.222e-04, -1.304e-01, -6.372e-02, 1.048e-01, 7.533e-02), r);\n\tr = MulAdd(s0_8, M4(-6.962e-02, -9.348e-03, 1.754e-03, -1.924e-03, -6.750e-02, 8.346e-02, -3.537e-02, 2.726e-02, -1.512e-02, 1.457e-03, 5.397e-04, 3.160e-03, 3.225e-03, -2.205e-02, 3.784e-03, -6.457e-02), r);\n\tr = MulAdd(s1_0, M4(3.216e-03, -2.588e-02, -3.591e-03, 2.124e-02, 5.857e-02, -4.599e-02, 2.350e-02, -5.599e-03, -7.461e-02, 1.149e-02, -5.752e-03, -1.405e-02, -8.179e-02, -1.131e-02, -6.390e-04, -2.175e-02), r);\n\tr = MulAdd(s1_1, M4(-4.224e-02, 1.465e-01, 2.090e-01, -7.787e-02, 3.813e-02, 6.197e-03, -2.953e-03, -5.295e-03, -1.369e-01, 1.265e-01, -8.472e-02, -1.717e-02, -8.354e-02, 6.081e-02, -1.704e-02, -2.941e-02), r);\n\tr = MulAdd(s1_2, M4(5.532e-02, 4.211e-02, 1.382e-01, -1.554e-02, -3.309e-02, -1.236e-02, -5.637e-02, -9.740e-03, 3.499e-02, -1.187e-03, 2.183e-02, -4.328e-03, 3.071e-02, 6.290e-03, -3.430e-02, 1.809e-02), r);\n\tr = MulAdd(s1_3, M4(3.097e-01, -9.147e-02, 5.491e-02, -2.231e-01, 3.357e-02, -1.675e-01, -3.862e-02, -3.948e-02, -9.614e-02, 2.037e-01, -8.482e-02, 1.575e-01, -2.503e-01, 4.100e-02, 4.688e-02, -5.487e-02), r);\n\tr = MulAdd(s1_4, M4(-9.200e-01, 2.786e-01, -1.781e-01, -1.025e-01, -3.880e-01, 2.259e-01, -5.413e-02, 1.069e-01, -1.934e-01, 6.803e-02, 1.450e-01, 1.164e-02, -1.011e-01, 4.287e-01, 1.492e-02, 1.877e-01), r);\n\tr = MulAdd(s1_5, M4(2.170e-03, -5.988e-02, 1.469e-01, 8.258e-02, 7.155e-02, 5.736e-02, 2.247e-02, 2.306e-02, -2.195e-02, 6.195e-02, -3.267e-02, 6.251e-02, 1.084e-01, -5.883e-02, 1.627e-02, -2.231e-04), r);\n\tr = MulAdd(s1_6, M4(-2.249e-02, -2.655e-02, 5.447e-03, 1.252e-01, 2.021e-02, -3.117e-02, 1.387e-03, -3.282e-02, -3.373e-02, 1.007e-02, 8.572e-03, -4.438e-03, 3.576e-02, -2.237e-02, -8.820e-02, 7.987e-02), r);\n\tr = MulAdd(s1_7, M4(5.065e-02, 2.282e-02, -9.641e-02, 6.878e-03, 6.660e-01, 2.497e-02, -1.353e-01, -1.281e-01, 1.927e-02, -6.053e-03, 4.760e-03, -1.569e-02, -8.824e-02, -1.988e-02, -5.204e-03, 9.302e-02), r);\n\tr = MulAdd(s1_8, M4(-1.142e-01, -2.133e-02, -5.409e-02, -1.691e-02, -1.052e-01, 6.282e-02, -1.763e-01, 7.171e-03, -5.642e-04, 5.445e-03, -2.252e-02, -8.101e-03, -7.578e-02, -1.884e-02, 4.234e-02, -4.051e-02), r);\n\tr = MulAdd(s2_0, M4(-3.340e-02, -9.286e-02, -2.409e-02, 5.065e-02, 1.146e-01, -3.051e-02, -5.897e-02, 1.339e-01, -1.820e-01, -8.258e-02, 7.841e-02, -4.576e-03, -2.235e-02, -2.630e-03, -2.450e-02, 1.445e-03), r);\n\tr = MulAdd(s2_1, M4(3.666e-02, -1.334e-01, 1.470e-01, -2.621e-04, 1.844e-02, 2.054e-02, -1.071e-01, 1.125e-01, -9.043e-02, -3.179e-02, -1.576e-01, 4.819e-03, -1.119e-01, 3.672e-02, -1.960e-02, -2.050e-02), r);\n\tr = MulAdd(s2_2, M4(-4.321e-02, 1.305e-03, -8.030e-03, 1.275e-02, -2.368e-02, -8.649e-02, 2.123e-01, -2.892e-02, -2.245e-02, -2.036e-02, 5.714e-02, -2.304e-02, 7.935e-02, 2.948e-02, 4.653e-02, 2.831e-02), r);\n\tr = MulAdd(s2_3, M4(3.771e-02, 2.739e-02, -5.543e-02, -7.737e-02, 1.401e-01, -8.111e-02, -5.889e-02, -9.849e-02, 6.609e-02, -1.088e+00, -3.718e-01, 8.566e-01, -3.921e-02, -1.169e-02, 3.725e-02, 1.351e-02), r);\n\tr = MulAdd(s2_4, M4(4.463e-02, -4.023e-01, 9.789e-02, -1.354e-02, -3.505e-01, 6.620e-02, 2.244e-01, -1.811e-01, 1.546e-01, 1.551e-01, 5.571e-01, -8.024e-02, 2.007e-01, -2.899e-02, 8.322e-02, 2.466e-02), r);\n\tr = MulAdd(s2_5, M4(-8.966e-02, 9.537e-03, 1.072e-02, -2.888e-02, -9.071e-02, -2.265e-02, 1.060e-01, 2.784e-02, 2.326e-02, 2.158e-02, -1.252e-02, 4.109e-02, -9.991e-02, 2.266e-02, 1.081e-01, -3.239e-02), r);\n\tr = MulAdd(s2_6, M4(7.485e-02, -5.121e-02, -7.197e-03, 2.364e-02, 2.601e-02, -3.873e-02, -3.163e-02, 6.095e-03, 1.731e-01, 1.597e-01, -2.013e-01, -1.612e-01, -3.529e-02, 4.730e-02, 3.587e-03, -4.909e-02), r);\n\tr = MulAdd(s2_7, M4(-2.002e-01, -1.274e-01, 3.759e-02, -7.192e-02, 4.936e-02, 6.713e-03, -9.731e-02, -1.581e-02, 2.900e-01, 2.825e-03, -1.856e-03, 1.151e-01, 4.926e-02, -8.486e-02, 6.889e-02, -7.680e-02), r);\n\tr = MulAdd(s2_8, M4(2.897e-02, 1.246e-02, 5.703e-02, 3.133e-02, -5.819e-02, 3.870e-02, 2.343e-02, 2.062e-02, -3.449e-02, -1.748e-03, -3.243e-03, 7.889e-03, -3.119e-02, 2.583e-02, 2.955e-02, 2.239e-02), r);\n\tr = MulAdd(s3_0, M4(-6.212e-02, -2.815e-02, 3.233e-02, 1.243e-02, -7.495e-02, 5.928e-02, -1.435e-02, -3.235e-02, -4.753e-02, -8.307e-02, -6.735e-03, 2.073e-02, 3.210e-02, -1.466e-02, -3.795e-03, -7.752e-03), r);\n\tr = MulAdd(s3_1, M4(8.327e-02, -6.238e-02, 8.281e-02, 1.640e-02, -2.766e-02, 1.126e-01, -1.703e-01, 5.964e-02, -6.483e-02, -1.239e-01, 9.791e-02, -5.774e-02, -4.405e-02, -1.194e-01, 1.150e-01, 8.248e-03), r);\n\tr = MulAdd(s3_2, M4(-2.417e-02, -2.032e-03, -2.130e-02, 3.247e-03, 2.558e-02, 9.621e-03, 2.894e-03, 1.745e-02, -3.345e-03, 2.472e-02, 4.561e-02, 1.091e-04, -9.694e-02, 7.448e-02, 1.977e-02, -2.252e-02), r);\n\tr = MulAdd(s3_3, M4(4.710e-02, 1.175e-01, -5.456e-02, 2.405e-02, -5.599e-02, 5.930e-02, 1.394e-02, -1.948e-01, 9.356e-02, 4.988e-03, -3.550e-02, 2.115e-02, 3.579e-02, 2.519e-03, 3.458e-02, 1.284e-02), r);\n\tr = MulAdd(s3_4, M4(-1.539e-01, -2.812e-01, -1.729e-01, 3.786e-02, -7.088e-02, 9.694e-02, -3.798e-02, -2.858e-01, 2.162e-01, 2.841e-01, 6.325e-02, 8.461e-02, -1.131e-02, -4.421e-01, -7.511e-02, -1.567e-01), r);\n\tr = MulAdd(s3_5, M4(-5.525e-02, 9.872e-03, 1.520e-02, -1.043e-02, -1.261e-01, 5.960e-02, -1.696e-01, 1.084e-02, 4.916e-04, -4.675e-02, 4.176e-02, -1.421e-02, -4.200e-03, 5.236e-02, 4.528e-01, -1.819e-02), r);\n\tr = MulAdd(s3_6, M4(5.756e-02, -5.624e-02, -1.801e-02, 1.356e-01, -2.943e-02, -3.031e-03, 2.097e-02, -2.393e-02, -1.188e-02, 3.476e-02, -8.038e-02, -2.493e-02, -7.363e-02, 9.841e-02, 2.800e-02, -4.719e-02), r);\n\tr = MulAdd(s3_7, M4(-1.646e-01, -1.462e-01, 4.622e-02, -1.341e-01, 7.500e-02, 9.408e-03, -3.332e-02, -9.753e-02, -1.242e-01, -5.388e-02, 8.329e-06, -8.211e-02, 2.022e-02, -1.792e-01, 2.668e-01, -1.639e-01), r);\n\tr = MulAdd(s3_8, M4(-5.759e-02, 2.412e-02, -7.751e-03, 5.953e-02, -3.042e-03, 7.494e-02, -7.015e-02, 8.802e-03, 6.651e-02, 2.193e-02, 5.734e-03, 9.387e-04, 8.776e-03, -3.649e-02, -5.357e-02, 2.643e-02), r);\n\treturn r;\n}\n\nV4 f1(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { 1.021e-04, 2.892e-03, 4.075e-03, -4.598e-04 };\n\tr = MulAdd(s0_0, M4(-4.857e-03, 1.681e-02, 1.594e-02, 1.186e-02, 9.703e-03, 1.481e-02, 2.224e-02, -1.211e-02, -3.463e-02, 2.229e-01, -4.089e-02, -2.937e-02, -3.930e-02, -4.065e-02, -5.603e-02, 4.334e-03), r);\n\tr = MulAdd(s0_1, M4(1.133e-01, -8.282e-02, -1.479e-01, 2.685e-02, -5.441e-02, 5.083e-02, 1.999e-02, -9.091e-03, 1.051e-01, -2.878e-03, 3.581e-02, -1.914e-01, 6.339e-02, 4.883e-02, 8.196e-02, -1.849e-02), r);\n\tr = MulAdd(s0_2, M4(-1.835e-02, 4.866e-03, -1.972e-02, -5.721e-02, 3.678e-02, 7.178e-03, 4.936e-02, 1.327e-02, 7.159e-03, 1.530e-02, 9.492e-03, -2.915e-02, -3.703e-02, 3.455e-02, 4.313e-02, -7.483e-03), r);\n\tr = MulAdd(s0_3, M4(4.954e-02, -3.734e-02, 1.704e-01, -9.261e-02, 4.356e-02, 4.334e-02, 1.375e-01, -6.750e-02, 1.645e-01, 3.545e-01, -1.076e-01, -2.754e-01, -8.735e-03, 8.428e-02, -2.600e-02, 5.157e-02), r);\n\tr = MulAdd(s0_4, M4(-1.529e-01, 6.132e-02, 5.269e-01, 2.303e-01, 3.777e-02, -3.362e-02, -1.288e-01, 3.253e-02, -2.453e-03, -1.311e-01, -1.811e-01, 5.146e-01, 1.360e-01, -1.568e-01, 3.541e-01, -4.269e-01), r);\n\tr = MulAdd(s0_5, M4(1.203e-01, 2.272e-02, 4.602e-02, -4.652e-02, 4.838e-02, -1.423e-01, -4.015e-02, 2.329e-01, 2.563e-02, 4.549e-03, -6.325e-03, 1.033e-01, -1.185e-01, -1.229e-03, -1.781e-03, 4.882e-02), r);\n\tr = MulAdd(s0_6, M4(-1.493e-03, -5.072e-04, -7.398e-02, -4.071e-03, 1.147e-02, 7.946e-02, 3.359e-02, -6.394e-02, 3.505e-02, 2.111e-01, 1.077e-01, -9.330e-02, 2.340e-02, 1.186e-02, 1.139e-01, -2.444e-03), r);\n\tr = MulAdd(s0_7, M4(-5.860e-03, -1.587e-02, -7.634e-02, 6.287e-03, 7.103e-02, 1.223e-01, 1.770e-01, -6.041e-02, -3.422e-02, -8.480e-03, 6.146e-02, 5.680e-02, 6.599e-03, -6.543e-02, -6.087e-02, -1.182e-01), r);\n\tr = MulAdd(s0_8, M4(-3.065e-03, -2.381e-02, 1.076e-03, 4.174e-02, -1.275e-02, -8.464e-02, -1.656e-02, 1.118e-01, -5.084e-03, -1.276e-02, 1.028e-02, -2.447e-02, 2.944e-02, 3.333e-02, 1.571e-02, -4.768e-02), r);\n\tr = MulAdd(s1_0, M4(1.033e-02, -1.755e-02, -6.591e-02, -2.916e-03, 5.268e-02, -1.639e-02, 3.173e-02, -3.870e-02, -1.196e-02, -5.798e-02, -6.512e-02, 6.685e-02, 1.077e-01, -1.033e-01, -6.763e-02, 6.647e-03), r);\n\tr = MulAdd(s1_1, M4(4.385e-01, -5.927e-02, -3.308e-01, 1.535e-01, -5.186e-02, 9.066e-02, 5.980e-02, -5.399e-02, -1.484e-03, 1.159e-01, 1.228e-01, -4.994e-02, 4.690e-02, -5.008e-02, -4.004e-02, -1.684e-02), r);\n\tr = MulAdd(s1_2, M4(-4.728e-02, 1.658e-02, -5.943e-02, 2.234e-03, -3.209e-02, 4.928e-03, 3.253e-03, 4.860e-04, 1.285e-02, -1.914e-02, 2.240e-02, 1.305e-02, -5.554e-02, -5.859e-04, -3.260e-03, 8.161e-03), r);\n\tr = MulAdd(s1_3, M4(1.111e-02, -1.017e-02, 3.942e-01, -2.339e-01, -5.259e-02, -1.509e-01, 9.273e-02, 4.821e-03, 4.431e-02, -2.321e-02, 8.765e-03, 1.174e-01, -1.620e-01, -1.094e-01, -1.112e-01, 1.092e-01), r);\n\tr = MulAdd(s1_4, M4(-1.112e-01, -3.016e-01, 5.767e-01, 2.991e-01, -2.363e-01, 1.773e-01, 4.842e-02, 1.479e-02, 4.656e-02, -6.919e-02, -1.145e-01, 3.517e-01, 1.694e-01, -1.172e-01, 1.981e-01, -3.146e-01), r);\n\tr = MulAdd(s1_5, M4(7.860e-02, 1.250e-02, 8.584e-02, 2.115e-02, 4.508e-02, -1.057e-01, 3.477e-02, 1.894e-01, 1.702e-04, -3.281e-02, -4.114e-02, 1.520e-01, -3.739e-02, -2.410e-02, 4.224e-02, 4.905e-02), r);\n\tr = MulAdd(s1_6, M4(-1.856e-02, -3.141e-02, -1.581e-01, -4.136e-02, -5.412e-02, 2.173e-01, -8.472e-02, 2.157e-02, -1.841e-02, 4.442e-03, -6.516e-02, -2.259e-03, -8.614e-03, -2.194e-02, 4.293e-02, 6.910e-02), r);\n\tr = MulAdd(s1_7, M4(-6.917e-02, -1.204e-01, -1.636e-01, 1.444e-02, -1.302e-01, 1.454e-01, -1.236e-01, -1.381e-01, -2.625e-02, -1.014e-02, 3.965e-02, 5.456e-02, 1.004e-02, -7.594e-02, -2.646e-02, -8.390e-03), r);\n\tr = MulAdd(s1_8, M4(-1.214e-02, -1.182e-02, -1.654e-02, 5.613e-02, -4.494e-02, -6.883e-02, -6.759e-02, 1.401e-01, 5.809e-03, -7.901e-03, 2.477e-03, 2.240e-02, 2.892e-02, 2.365e-04, 1.916e-02, -4.855e-02), r);\n\tr = MulAdd(s2_0, M4(1.165e-02, -3.547e-02, -3.269e-02, 3.278e-02, 1.517e-01, 3.076e-01, 1.321e-01, -7.305e-02, -9.144e-02, -1.188e-01, -8.574e-02, 3.771e-02, 5.090e-02, -3.828e-03, -2.782e-03, 9.980e-03), r);\n\tr = MulAdd(s2_1, M4(4.990e-02, -1.158e-02, -8.473e-03, -7.378e-02, 2.320e-01, 4.317e-03, -1.275e-01, -7.346e-02, 1.375e-01, -5.503e-02, 2.691e-02, 7.374e-02, -9.075e-02, -9.443e-03, -3.406e-02, -8.131e-03), r);\n\tr = MulAdd(s2_2, M4(-2.091e-02, 2.630e-02, -1.171e-02, -8.149e-03, -6.488e-02, 3.674e-02, -1.582e-02, 2.703e-02, 1.933e-02, 9.368e-04, -2.847e-03, -6.541e-02, -8.207e-03, -2.102e-03, 5.476e-03, 2.813e-02), r);\n\tr = MulAdd(s2_3, M4(-7.157e-02, 3.019e-01, 4.938e-02, 1.148e-02, -1.928e-02, 5.004e-02, 1.490e-01, -4.090e-02, -6.051e-01, 1.305e-01, 5.432e-02, 3.124e-01, -4.909e-03, 4.734e-03, -4.112e-02, 2.852e-02), r);\n\tr = MulAdd(s2_4, M4(-6.570e-02, -1.792e-01, -3.370e-01, -1.151e-01, -1.800e-01, -4.234e-01, 2.290e-01, -1.410e-01, -1.107e-01, -3.994e-01, -6.890e-02, 1.616e-01, 2.725e-01, -1.534e-01, 1.134e-02, -1.122e-01), r);\n\tr = MulAdd(s2_5, M4(2.107e-02, 7.061e-02, -3.419e-02, -7.876e-02, 1.059e-01, 2.269e-02, 3.643e-02, -9.355e-02, 2.354e-02, -2.920e-02, -1.486e-02, 6.596e-02, 1.459e-01, -7.315e-02, 1.001e-02, -1.196e-01), r);\n\tr = MulAdd(s2_6, M4(7.558e-03, -5.529e-02, 2.896e-02, -5.776e-02, 4.176e-03, 2.669e-02, 8.191e-03, -1.173e-02, -8.356e-04, 2.705e-01, 2.322e-02, 1.236e-01, -1.824e-03, -9.138e-03, 5.993e-03, 2.423e-02), r);\n\tr = MulAdd(s2_7, M4(2.899e-03, 4.622e-02, 1.248e-01, 5.803e-02, 2.360e-03, 1.574e-02, 9.107e-03, 2.627e-02, 2.870e-03, 1.155e-01, 2.568e-01, 1.185e-01, -1.852e-02, 7.471e-02, 1.442e-01, 4.149e-03), r);\n\tr = MulAdd(s2_8, M4(2.587e-02, 2.002e-02, 1.244e-02, -7.156e-02, -2.962e-03, -4.371e-02, 9.750e-05, 2.554e-02, 1.524e-02, -3.555e-02, 3.165e-02, -1.252e-01, 7.889e-03, -2.808e-02, -2.502e-02, -9.080e-02), r);\n\tr = MulAdd(s3_0, M4(-5.464e-02, -9.380e-02, -9.031e-02, 6.067e-02, 1.637e-02, -4.678e-02, -6.354e-02, 2.757e-02, -3.534e-02, -7.544e-02, -4.711e-02, -1.170e-02, -2.121e-02, 6.766e-02, 1.143e-02, -1.352e-02), r);\n\tr = MulAdd(s3_1, M4(6.666e-02, -3.601e-02, -1.621e-02, 1.027e-02, -7.539e-02, 6.818e-02, 9.687e-02, 8.166e-03, 1.209e-01, -7.593e-02, -6.114e-02, -1.871e-02, -4.486e-03, -4.191e-02, -3.624e-02, -6.917e-02), r);\n\tr = MulAdd(s3_2, M4(1.685e-03, 1.879e-02, -1.085e-02, -1.463e-02, -2.649e-02, -2.843e-02, -5.443e-02, 1.182e-01, -4.538e-02, 1.604e-02, -1.214e-02, -3.780e-02, 7.448e-02, 4.743e-02, 1.960e-02, -2.091e-02), r);\n\tr = MulAdd(s3_3, M4(1.581e-03, 4.307e-01, 2.725e-02, -6.223e-03, -1.649e-02, -9.806e-02, -4.996e-02, 5.188e-02, -1.004e-01, 3.665e-01, 6.566e-02, -1.778e-02, 6.244e-02, -8.677e-02, 6.811e-02, -7.358e-02), r);\n\tr = MulAdd(s3_4, M4(-1.159e-01, -2.202e-01, -4.450e-01, -1.843e-01, -2.163e-01, -5.406e-01, -1.782e-02, 3.599e-02, 4.676e-02, -2.842e-01, 2.868e-02, -3.187e-02, 5.708e-01, -4.671e-01, 2.904e-01, 7.765e-02), r);\n\tr = MulAdd(s3_5, M4(1.722e-02, 6.820e-02, -2.501e-02, 2.062e-02, 7.785e-02, 3.089e-02, -1.011e-01, 7.250e-02, 1.777e-02, 2.478e-02, 2.426e-02, -1.451e-03, -3.446e-02, -2.670e-02, 2.924e-02, -3.201e-02), r);\n\tr = MulAdd(s3_6, M4(1.407e-02, -6.091e-02, 9.407e-03, -4.578e-02, -1.060e-02, 4.716e-03, 1.340e-02, 9.612e-03, -4.227e-02, -1.122e-01, -5.321e-02, 5.625e-02, 2.228e-02, 6.253e-03, -6.240e-02, -3.802e-03), r);\n\tr = MulAdd(s3_7, M4(-1.704e-02, -4.713e-03, 7.542e-02, -7.843e-03, -3.427e-02, 6.325e-03, 1.225e-02, 1.093e-02, 1.470e-02, 8.228e-02, 7.090e-02, 4.060e-02, -1.906e-02, 5.804e-02, 1.348e-01, -7.307e-02), r);\n\tr = MulAdd(s3_8, M4(1.539e-02, 2.190e-03, -2.100e-02, -2.839e-02, 4.166e-03, -1.752e-02, -2.224e-02, 4.517e-02, -2.712e-02, -1.329e-02, -2.822e-02, -1.040e-02, 2.914e-02, -1.207e-02, -4.796e-02, -6.910e-02), r);\n\treturn r;\n}\n\nvoid Pass9(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 size = GetInputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = (gxy + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tt0[gxy] = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\tt1[gxy] = f1(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n}\n\n//!PASS 10\n//!DESC out-shuffle\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, t0, t1\n//!OUT OUTPUT\n\n#define l0(x, y) V4(O(t0, float2(x, y)))\n#define l1(x, y) V4(O(t1, float2(x, y)))\n\nV4 f0(V4 s0_0, V4 s0_1, V4 s0_2, V4 s0_3, V4 s0_4, V4 s0_5, V4 s0_6, V4 s0_7, V4 s0_8, V4 s1_0, V4 s1_1, V4 s1_2, V4 s1_3, V4 s1_4, V4 s1_5, V4 s1_6, V4 s1_7, V4 s1_8, V4 s2_0, V4 s2_1, V4 s2_2, V4 s2_3, V4 s2_4, V4 s2_5, V4 s2_6, V4 s2_7, V4 s2_8, V4 s3_0, V4 s3_1, V4 s3_2, V4 s3_3, V4 s3_4, V4 s3_5, V4 s3_6, V4 s3_7, V4 s3_8) {\n\tV4 r = { -1.409e-03, -1.878e-03, -5.303e-04, -8.141e-04 };\n\tr = MulAdd(s0_0, M4(2.098e-02, -9.305e-03, -8.033e-03, 3.455e-02, 1.747e-02, -3.697e-02, -1.424e-02, 1.170e-02, -2.027e-02, -5.643e-02, -2.869e-02, -3.308e-02, -1.154e-01, -2.864e-02, -3.009e-02, -1.849e-02), r);\n\tr = MulAdd(s0_1, M4(-2.191e-02, 7.817e-02, -1.705e-02, -2.475e-03, -2.317e-01, -3.827e-02, -4.318e-04, -7.348e-02, -3.294e-02, -1.082e-01, 2.578e-02, -3.462e-02, -7.983e-02, -2.407e-01, -8.092e-03, -3.626e-02), r);\n\tr = MulAdd(s0_2, M4(-1.301e-02, -3.897e-02, -6.300e-03, -1.383e-02, 2.743e-02, -4.224e-02, 5.535e-03, -1.838e-02, 9.344e-03, 1.156e-02, -5.436e-03, 1.041e-02, -7.606e-02, -2.449e-02, -2.023e-02, 2.329e-02), r);\n\tr = MulAdd(s0_3, M4(2.784e-01, 9.384e-02, 1.126e-01, -1.144e-01, 1.104e-01, -3.075e-03, 2.114e-01, -4.576e-02, 2.271e-01, 5.360e-02, -2.026e-02, 2.571e-01, 1.023e-01, -2.406e-02, 3.613e-02, 2.313e-02), r);\n\tr = MulAdd(s0_4, M4(1.481e-01, 1.487e-01, 3.646e-02, 1.608e-01, -5.368e-01, 7.939e-01, -8.009e-01, 7.326e-01, -8.184e-02, 7.780e-02, 2.823e-02, 1.723e-02, 3.261e-02, 7.264e-02, 4.906e-01, -7.881e-02), r);\n\tr = MulAdd(s0_5, M4(1.893e-02, 2.051e-02, -1.583e-02, -1.434e-02, -3.022e-02, -5.953e-02, 4.948e-02, -6.243e-02, 1.064e-02, 9.555e-03, 9.215e-03, 2.395e-03, -1.879e-02, -5.293e-02, -6.218e-02, 1.880e-01), r);\n\tr = MulAdd(s0_6, M4(-1.623e-02, -9.043e-03, 8.706e-02, -2.571e-02, 4.310e-03, 1.182e-02, 2.041e-02, 5.692e-02, -2.960e-02, -2.983e-03, 4.222e-02, -6.760e-02, -7.396e-03, 5.672e-03, -7.944e-03, 4.287e-02), r);\n\tr = MulAdd(s0_7, M4(-2.240e-02, -1.813e-02, 5.106e-02, 3.940e-02, -2.053e-03, 4.609e-03, -7.422e-02, 1.510e-01, -1.863e-02, -1.240e-02, -4.103e-02, 4.553e-02, -1.829e-02, -7.566e-03, 1.359e-03, -3.670e-02), r);\n\tr = MulAdd(s0_8, M4(-5.476e-03, -1.114e-02, -4.037e-03, -2.126e-03, 2.712e-02, 1.440e-02, 2.411e-02, 2.362e-02, -5.747e-03, -5.246e-03, 1.138e-02, -1.869e-02, 1.133e-03, -4.128e-03, -5.698e-03, 7.431e-04), r);\n\tr = MulAdd(s1_0, M4(-2.053e-02, -5.708e-02, 1.294e-01, -1.091e-02, -5.203e-03, -1.339e-02, -2.457e-02, 9.190e-03, -1.666e-01, -1.923e-02, 2.214e-02, -2.020e-02, -8.115e-02, -3.013e-02, -4.038e-02, -3.056e-02), r);\n\tr = MulAdd(s1_1, M4(-2.557e-01, 5.294e-01, -1.299e-01, -1.493e-01, -1.234e-01, -1.255e-01, 2.948e-03, -4.235e-02, 3.493e-02, -1.870e-01, -2.104e-03, -4.000e-02, -3.905e-02, -2.193e-01, -2.203e-02, -9.760e-03), r);\n\tr = MulAdd(s1_2, M4(1.733e-02, -7.787e-02, -6.604e-03, 6.678e-03, 7.696e-03, -2.369e-02, -6.539e-04, -1.102e-02, -1.193e-03, 1.231e-02, -1.389e-03, -9.574e-03, -5.801e-02, -2.889e-02, -2.686e-03, 1.507e-02), r);\n\tr = MulAdd(s1_3, M4(2.792e-01, 9.448e-02, 3.361e-02, -5.689e-02, 1.630e-01, 1.120e-02, 1.771e-01, -2.116e-02, 4.607e-01, -2.987e-02, -1.319e-01, 1.699e-01, 1.127e-01, -3.390e-03, 5.671e-02, 8.547e-03), r);\n\tr = MulAdd(s1_4, M4(1.412e-01, 6.567e-02, 2.311e-01, 1.009e-01, -7.339e-02, 3.683e-01, -2.510e-01, 2.821e-01, -1.446e-01, -1.170e-01, -6.035e-02, 5.471e-01, 1.075e-01, 9.204e-02, 3.083e-01, -4.666e-02), r);\n\tr = MulAdd(s1_5, M4(4.185e-02, 9.992e-03, -9.781e-03, -1.284e-01, -6.054e-02, -1.004e-01, 3.920e-03, -7.670e-02, 6.425e-03, 1.315e-02, 1.833e-02, -2.078e-02, -4.423e-03, 1.608e-02, -4.473e-02, 1.431e-01), r);\n\tr = MulAdd(s1_6, M4(-2.035e-02, -1.490e-02, 7.858e-02, -1.677e-02, -1.529e-02, 1.617e-02, 1.892e-02, 6.421e-02, -5.163e-02, -3.004e-04, 4.796e-02, -6.612e-02, -7.339e-03, 3.612e-03, -3.793e-03, 3.967e-02), r);\n\tr = MulAdd(s1_7, M4(-1.587e-02, 2.826e-03, 4.107e-02, 3.865e-02, 1.741e-03, -8.144e-03, 3.549e-02, 4.874e-02, -1.309e-02, 9.007e-03, -4.065e-02, 1.889e-02, -1.401e-02, -6.740e-03, -8.651e-03, -3.680e-02), r);\n\tr = MulAdd(s1_8, M4(-3.425e-02, -1.581e-02, 2.079e-03, 9.678e-03, 1.536e-02, 1.254e-02, -6.491e-03, 1.337e-02, -6.457e-03, -4.502e-03, 7.601e-03, -2.523e-02, -8.848e-04, -4.491e-03, -1.150e-02, -1.041e-02), r);\n\tr = MulAdd(s2_0, M4(-1.231e-02, 1.957e-02, -4.860e-03, -3.485e-02, 2.150e-02, 2.795e-02, -8.654e-03, -1.193e-02, -3.417e-03, 1.825e-02, 1.567e-02, -3.503e-02, 1.815e-01, 3.099e-02, -2.550e-02, -7.071e-02), r);\n\tr = MulAdd(s2_1, M4(4.765e-03, 1.726e-02, -1.563e-02, -3.967e-02, 1.431e-01, 1.655e-01, 8.577e-03, -2.072e-02, -1.189e-01, -1.901e-01, 1.268e-02, -1.182e-02, 1.360e-01, -9.727e-02, 3.545e-02, -3.795e-02), r);\n\tr = MulAdd(s2_2, M4(-1.629e-02, -2.886e-02, 6.265e-04, -4.466e-03, -9.620e-03, -6.831e-03, -1.007e-03, -1.137e-02, 1.575e-02, -1.520e-02, 3.770e-03, -1.629e-03, 9.599e-03, 1.072e-02, -8.331e-03, -2.625e-03), r);\n\tr = MulAdd(s2_3, M4(-4.895e-02, -1.444e-02, -1.074e-02, 4.024e-02, -7.837e-02, 7.142e-03, -3.005e-02, 5.887e-02, 4.426e-02, -4.724e-02, 1.118e-01, 1.978e-01, 3.873e-01, -6.170e-02, 5.417e-01, 2.115e-01), r);\n\tr = MulAdd(s2_4, M4(-4.664e-02, 5.652e-02, 1.062e-01, 7.868e-02, -4.444e-01, -2.378e-01, 2.168e-01, 2.783e-01, 2.544e-01, 2.526e-01, -2.176e-01, -3.524e-01, -1.380e-01, -4.658e-01, 7.754e-02, -5.062e-01), r);\n\tr = MulAdd(s2_5, M4(3.824e-02, -7.471e-03, -3.021e-02, 2.526e-02, -9.479e-03, -8.237e-02, -1.161e-02, 7.648e-02, -1.067e-01, -1.000e-01, 2.901e-03, -3.454e-02, -2.220e-03, -3.343e-02, 4.048e-03, -1.751e-03), r);\n\tr = MulAdd(s2_6, M4(1.680e-02, 1.039e-03, 5.104e-02, -1.713e-01, 2.749e-03, 4.469e-03, -4.546e-02, 1.381e-02, -6.014e-03, 1.247e-04, -6.902e-03, 6.958e-02, -5.066e-02, -6.274e-03, 2.876e-02, -1.837e-01), r);\n\tr = MulAdd(s2_7, M4(1.057e-02, -2.665e-02, 8.209e-02, 2.316e-01, 3.331e-02, 3.507e-03, -1.734e-01, -1.194e-01, -9.633e-03, 4.334e-03, 4.570e-02, -3.032e-02, 1.151e-02, -4.714e-03, -8.234e-03, -2.184e-02), r);\n\tr = MulAdd(s2_8, M4(2.067e-02, -3.817e-03, -2.124e-02, -3.790e-02, -1.628e-03, 1.466e-02, -1.040e-02, -4.732e-02, 8.216e-03, -3.982e-03, -2.452e-02, 3.031e-03, -3.218e-03, 5.065e-03, -2.036e-02, -4.540e-03), r);\n\tr = MulAdd(s3_0, M4(-1.121e-02, 6.935e-03, 8.246e-03, -1.607e-02, 4.960e-03, 1.605e-02, 3.055e-03, -1.948e-02, -1.705e-02, 3.543e-02, 3.453e-02, -2.897e-03, 8.019e-02, 1.047e-01, 3.947e-03, -5.653e-02), r);\n\tr = MulAdd(s3_1, M4(-1.800e-02, -1.445e-02, -1.291e-02, 4.545e-03, 1.890e-01, 1.792e-01, -1.108e-02, -3.760e-02, -5.770e-01, -4.943e-01, 5.098e-01, 2.238e-01, 7.838e-02, 3.965e-02, 2.951e-02, 7.738e-03), r);\n\tr = MulAdd(s3_2, M4(-3.283e-03, -4.729e-02, -8.269e-03, 1.385e-03, -2.860e-02, -7.765e-02, 4.138e-02, 9.117e-04, -1.147e-02, -2.068e-01, -6.331e-03, 2.325e-01, 1.822e-02, 2.032e-02, -2.723e-03, -8.994e-04), r);\n\tr = MulAdd(s3_3, M4(-6.536e-03, -3.618e-02, -7.814e-02, 6.080e-02, -6.788e-02, -5.059e-04, -2.543e-02, 5.836e-02, 7.723e-02, -2.090e-02, 1.357e-01, 1.821e-01, 2.609e-01, 1.207e-02, 2.234e-01, 2.822e-01), r);\n\tr = MulAdd(s3_4, M4(-2.409e-01, 6.348e-01, 3.062e-01, -1.282e-01, -3.467e-01, -1.607e-01, -4.471e-03, 2.832e-01, 2.496e-01, 2.512e-01, -1.490e-01, -2.456e-01, -2.036e-01, -2.331e-01, -5.261e-02, -1.896e-01), r);\n\tr = MulAdd(s3_5, M4(4.482e-02, -5.530e-02, -2.249e-02, 8.728e-03, 2.920e-01, -4.287e-01, -1.998e-01, 3.981e-01, -8.622e-02, -9.097e-02, -2.153e-02, -2.622e-02, 2.039e-03, -3.998e-02, 1.589e-02, -4.862e-03), r);\n\tr = MulAdd(s3_6, M4(1.152e-02, -4.285e-02, 1.577e-01, -1.897e-01, -7.030e-03, 3.144e-03, -4.456e-02, 1.236e-02, -6.315e-03, 9.912e-04, -1.745e-02, 6.373e-02, -3.957e-02, -1.127e-02, 2.343e-02, -1.559e-01), r);\n\tr = MulAdd(s3_7, M4(2.342e-02, -1.236e-02, -6.990e-02, 1.352e-01, 1.165e-02, 3.656e-03, -1.004e-01, -1.514e-01, -1.951e-02, -2.067e-04, 3.870e-02, -4.895e-02, 1.210e-02, -2.797e-03, -5.429e-02, 3.699e-02), r);\n\tr = MulAdd(s3_8, M4(2.117e-02, 1.253e-02, -2.078e-02, -3.665e-03, -3.600e-02, 1.398e-02, -2.210e-02, -9.164e-02, 8.846e-04, 2.017e-04, -1.795e-02, 1.074e-02, -1.653e-03, 6.362e-03, -7.357e-03, -2.392e-02), r);\n\treturn tanh(r);\n}\n\nvoid Pass10(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 size = GetOutputSize();\n\tif (gxy.x >= size.x || gxy.y >= size.y) {\n\t\treturn;\n\t}\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\n\tV4 s0_0 = l0(-1.0, -1.0);\n\tV4 s0_1 = l0(0.0, -1.0);\n\tV4 s0_2 = l0(1.0, -1.0);\n\tV4 s0_3 = l0(-1.0, 0.0);\n\tV4 s0_4 = l0(0.0, 0.0);\n\tV4 s0_5 = l0(1.0, 0.0);\n\tV4 s0_6 = l0(-1.0, 1.0);\n\tV4 s0_7 = l0(0.0, 1.0);\n\tV4 s0_8 = l0(1.0, 1.0);\n\tV4 s1_0 = -max(-s0_0, 0.0);\n\tV4 s1_1 = -max(-s0_1, 0.0);\n\tV4 s1_2 = -max(-s0_2, 0.0);\n\tV4 s1_3 = -max(-s0_3, 0.0);\n\tV4 s1_4 = -max(-s0_4, 0.0);\n\tV4 s1_5 = -max(-s0_5, 0.0);\n\tV4 s1_6 = -max(-s0_6, 0.0);\n\tV4 s1_7 = -max(-s0_7, 0.0);\n\tV4 s1_8 = -max(-s0_8, 0.0);\n\ts0_0 = max(s0_0, 0.0);\n\ts0_1 = max(s0_1, 0.0);\n\ts0_2 = max(s0_2, 0.0);\n\ts0_3 = max(s0_3, 0.0);\n\ts0_4 = max(s0_4, 0.0);\n\ts0_5 = max(s0_5, 0.0);\n\ts0_6 = max(s0_6, 0.0);\n\ts0_7 = max(s0_7, 0.0);\n\ts0_8 = max(s0_8, 0.0);\n\n\tV4 s2_0 = l1(-1.0, -1.0);\n\tV4 s2_1 = l1(0.0, -1.0);\n\tV4 s2_2 = l1(1.0, -1.0);\n\tV4 s2_3 = l1(-1.0, 0.0);\n\tV4 s2_4 = l1(0.0, 0.0);\n\tV4 s2_5 = l1(1.0, 0.0);\n\tV4 s2_6 = l1(-1.0, 1.0);\n\tV4 s2_7 = l1(0.0, 1.0);\n\tV4 s2_8 = l1(1.0, 1.0);\n\tV4 s3_0 = -max(-s2_0, 0.0);\n\tV4 s3_1 = -max(-s2_1, 0.0);\n\tV4 s3_2 = -max(-s2_2, 0.0);\n\tV4 s3_3 = -max(-s2_3, 0.0);\n\tV4 s3_4 = -max(-s2_4, 0.0);\n\tV4 s3_5 = -max(-s2_5, 0.0);\n\tV4 s3_6 = -max(-s2_6, 0.0);\n\tV4 s3_7 = -max(-s2_7, 0.0);\n\tV4 s3_8 = -max(-s2_8, 0.0);\n\ts2_0 = max(s2_0, 0.0);\n\ts2_1 = max(s2_1, 0.0);\n\ts2_2 = max(s2_2, 0.0);\n\ts2_3 = max(s2_3, 0.0);\n\ts2_4 = max(s2_4, 0.0);\n\ts2_5 = max(s2_5, 0.0);\n\ts2_6 = max(s2_6, 0.0);\n\ts2_7 = max(s2_7, 0.0);\n\ts2_8 = max(s2_8, 0.0);\n\n\tV4 r = f0(s0_0, s0_1, s0_2, s0_3, s0_4, s0_5, s0_6, s0_7, s0_8, s1_0, s1_1, s1_2, s1_3, s1_4, s1_5, s1_6, s1_7, s1_8, s2_0, s2_1, s2_2, s2_3, s2_4, s2_5, s2_6, s2_7, s2_8, s3_0, s3_1, s3_2, s3_3, s3_4, s3_5, s3_6, s3_7, s3_8);\n\n\tstatic const MF3x3 rgb2yuv = { 0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081 };\n\tstatic const MF3x3 yuv2rgb = { 1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099 };\n\tfloat2 opt = float2(GetOutputPt());\n\n\tpos -= 0.5f * opt;\n\tMF3 yuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.x), yuv.yz)), 1);\n\n\t++gxy.x;\n\tpos.x += opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.y), yuv.yz)), 1);\n\n\t++gxy.y;\n\tpos.y += opt.y;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.w), yuv.yz)), 1);\n\n\t--gxy.x;\n\tpos.x -= opt.x;\n\tyuv = mul(rgb2yuv, INPUT.SampleLevel(SL, pos, 0).rgb);\n\tOUTPUT[gxy] = MF4(mul(yuv2rgb, MF3(saturate(yuv.r + r.z), yuv.yz)), 1);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy2/CuNNy-3x12-NVL.hlsl",
    "content": "// CuNNy 3x12 - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-03x12\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, x, y) t.SampleLevel(SP, pos + float2(x, y) * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T5;\n\n//!PASS 1\n//!DESC in (3x12)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT T0, T1, T2\n\n#define L0(x, y) V3(O(INPUT, x, y).rgb)\n#define V3 MF3\n#define M3x4 MF3x4\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV3 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\tr0 = V4(-3.838e-04, -1.473e-02, 2.105e-04, -1.662e-02);\n\tr1 = V4(-5.161e-04, -7.702e-03, 5.444e-04, 5.153e-01);\n\tr2 = V4(-1.625e-04, -4.639e-04, -6.901e-05, 1.916e-01);\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M3x4(-8.004e-02, 3.306e-02, 2.809e-03, 1.799e-02, 4.088e-02, -1.101e-01, 1.779e-01, -6.916e-03, 6.212e-02, -1.051e-01, 8.316e-03, -1.999e-02), r0);\n\tr1 = MulAdd(s0_0_0, M3x4(-1.018e-03, 5.281e-02, -3.671e-03, -9.022e-04, 8.121e-03, 3.896e-01, 6.807e-03, -2.565e-03, -2.056e-03, 2.885e-02, -5.021e-03, 6.286e-03), r1);\n\tr2 = MulAdd(s0_0_0, M3x4(-6.619e-03, -6.941e-03, -9.951e-04, 2.560e-03, 1.368e-02, -8.019e-03, 8.860e-03, 3.502e-02, -1.219e-02, -1.648e-02, -1.284e-04, 1.618e-02), r2);\n\tr0 = MulAdd(s0_0_1, M3x4(-5.145e-02, -8.557e-02, 7.632e-02, 1.667e-02, 2.628e-02, 4.722e-01, 1.992e-01, -1.234e-01, 1.607e-02, 1.615e-01, -6.932e-03, -1.517e+00), r0);\n\tr1 = MulAdd(s0_0_1, M3x4(9.342e-03, 1.045e-01, 1.247e-02, 2.767e-02, -2.459e-02, 9.835e-02, -2.164e-02, 6.366e-02, 1.557e-03, 7.984e-02, 1.361e-02, 1.242e-02), r1);\n\tr2 = MulAdd(s0_0_1, M3x4(1.802e-01, 2.350e-02, -2.171e-03, 3.287e-02, 7.780e-01, 1.447e-02, -1.550e-03, 1.412e-01, 6.470e-02, 5.975e-03, -4.353e-03, 4.922e-03), r2);\n\tr0 = MulAdd(s0_0_2, M3x4(3.057e-01, 1.163e-01, -5.224e-02, -4.806e-02, -1.667e-01, 5.029e-02, 1.030e-01, 2.855e-02, -1.322e-01, -5.030e-02, 3.477e-02, 4.541e-01), r0);\n\tr1 = MulAdd(s0_0_2, M3x4(4.095e-03, -1.366e-01, 1.371e-02, 7.380e-03, 7.256e-03, -3.971e-01, -7.612e-03, -1.147e-02, -6.970e-03, -1.003e-01, -6.160e-03, -3.729e-03), r1);\n\tr2 = MulAdd(s0_0_2, M3x4(-1.672e-02, -5.558e-04, 1.079e-03, -1.867e-03, 2.246e-02, 3.502e-02, 4.412e-03, 1.433e-02, -1.110e-02, -5.331e-03, -2.294e-03, -2.783e-03), r2);\n\tr0 = MulAdd(s0_1_0, M3x4(-5.050e-01, -1.129e-01, 1.362e-01, -1.381e-01, 2.457e-01, 4.098e-01, 3.087e-01, -1.106e-01, 2.201e-01, 2.176e-02, 6.282e-02, 2.000e-01), r0);\n\tr1 = MulAdd(s0_1_0, M3x4(1.641e-02, -2.346e-02, 2.563e-02, -4.359e-04, -2.779e-02, 6.961e-02, -2.510e-02, 2.655e-02, 1.316e-02, 8.984e-03, -6.255e-04, 2.326e-03), r1);\n\tr2 = MulAdd(s0_1_0, M3x4(1.201e-02, -2.015e-02, -1.423e-02, -3.623e-02, -1.895e-02, 3.178e-02, 2.327e-02, 6.212e-02, 1.200e-02, 4.885e-03, 3.593e-03, 8.842e-03), r2);\n\tr0 = MulAdd(s0_1_1, M3x4(-8.829e-01, 1.794e-01, -3.974e-01, 6.902e-02, 4.236e-01, -2.352e+00, -8.976e-01, 3.539e-01, 4.229e-01, 1.710e-01, -8.174e-02, 1.806e-01), r0);\n\tr1 = MulAdd(s0_1_1, M3x4(-2.061e-01, -1.003e-01, -2.644e-01, -1.278e-01, -7.559e-01, -9.074e-01, -8.613e-01, -4.990e-01, -7.363e-02, -1.090e-01, -7.582e-02, -2.663e-02), r1);\n\tr2 = MulAdd(s0_1_1, M3x4(-1.855e-01, -3.328e-01, 2.014e-02, -1.061e-01, -7.715e-01, -1.080e+00, -3.037e-02, -6.953e-01, -6.446e-02, -8.815e-02, 1.773e-03, -3.069e-02), r2);\n\tr0 = MulAdd(s0_1_2, M3x4(4.815e-01, -9.921e-02, 9.823e-02, -2.057e-03, -2.357e-01, 3.492e-01, -2.543e-01, 2.569e-02, -2.200e-01, -9.123e-02, -3.606e-02, 1.597e-02), r0);\n\tr1 = MulAdd(s0_1_2, M3x4(1.336e-02, 1.433e-02, 2.036e-01, 1.491e-02, -2.435e-02, 4.806e-01, 9.176e-01, 3.480e-02, 2.033e-02, 5.692e-02, 7.300e-02, 1.008e-02), r1);\n\tr2 = MulAdd(s0_1_2, M3x4(3.352e-03, 3.727e-02, 2.577e-03, 3.610e-02, -1.435e-02, -2.008e-02, 1.104e-03, -6.423e-03, 1.849e-02, 1.964e-02, 1.142e-03, -1.254e-04), r2);\n\tr0 = MulAdd(s0_2_0, M3x4(9.755e-02, 7.786e-02, 4.177e-02, 3.039e-02, -5.141e-02, 1.119e-01, 1.274e-01, 4.471e-03, -2.445e-02, -1.436e-02, 2.118e-02, -6.314e-02), r0);\n\tr1 = MulAdd(s0_2_0, M3x4(-6.104e-03, -6.230e-02, -6.457e-03, -2.358e-03, 5.778e-03, -2.301e-01, 6.849e-03, -1.679e-02, -4.539e-03, -1.902e-02, -6.001e-04, -1.960e-03), r1);\n\tr2 = MulAdd(s0_2_0, M3x4(2.637e-03, 3.330e-01, 2.302e-01, 3.634e-02, -9.790e-04, 1.051e+00, 7.835e-01, 7.599e-02, -1.271e-03, 7.008e-02, 7.817e-02, 5.323e-03), r2);\n\tr0 = MulAdd(s0_2_1, M3x4(-1.597e-01, -4.237e-02, -2.068e-02, 1.278e-02, 7.768e-02, -2.273e-02, 1.392e-01, 1.641e-02, 8.793e-02, -3.311e-02, 4.318e-03, -2.049e-02), r0);\n\tr1 = MulAdd(s0_2_1, M3x4(1.882e-01, 4.531e-02, 1.395e-02, 5.440e-02, 7.944e-01, -3.128e-02, -2.484e-02, 7.494e-02, 6.330e-02, 6.745e-04, 3.291e-03, 1.395e-02), r1);\n\tr2 = MulAdd(s0_2_1, M3x4(4.550e-03, -5.659e-02, -2.260e-01, -7.046e-03, -6.486e-03, -1.208e-02, -7.871e-01, 1.704e-01, 2.202e-03, 4.179e-02, -8.120e-02, 1.672e-02), r2);\n\tr0 = MulAdd(s0_2_2, M3x4(2.425e-01, 2.374e-02, -2.404e-02, 1.450e-02, -1.131e-01, 1.969e-02, 8.958e-02, -1.023e-01, -1.361e-01, -2.301e-02, -4.773e-02, 4.883e-02), r0);\n\tr1 = MulAdd(s0_2_2, M3x4(-1.753e-02, 9.386e-02, 4.877e-03, 2.227e-03, 1.747e-02, 5.314e-01, 6.404e-03, -3.009e-02, -1.093e-02, 5.469e-02, -1.424e-03, -7.789e-03), r1);\n\tr2 = MulAdd(s0_2_2, M3x4(5.474e-03, 1.939e-02, -1.011e-02, 9.980e-03, 9.453e-04, -1.498e-02, -2.597e-03, 6.000e-02, -8.301e-03, -3.578e-02, 3.540e-03, -9.692e-03), r2);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n}\n\n//!PASS 2\n//!DESC conv1 (12x12)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2\n//!OUT T3, T4, T5\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(9.525e-02, 1.266e-02, 3.445e-03, 7.378e-03, 1.958e-02, 2.888e-02, -3.022e-04, -4.919e-02, 1.474e-02, 5.379e-02, 2.465e-02, -2.110e-02, 1.007e-01, 4.968e-02, 7.625e-03, -2.355e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-5.259e-02, -3.138e-02, 1.081e-01, -1.583e-01, -8.368e-02, 1.400e-01, -5.287e-02, 5.207e-02, -8.263e-02, 5.925e-02, -6.862e-02, 2.268e-01, 8.502e-02, -1.662e-02, 4.158e-02, 1.310e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(6.493e-03, 1.380e-02, 3.747e-03, -2.227e-02, 1.202e-02, -1.451e-04, 2.250e-02, 3.513e-02, 2.935e-02, 3.707e-02, 2.023e-02, 5.505e-02, -5.075e-02, 3.709e-03, -9.123e-02, 3.416e-02), r2);\n\tr0 = MulAdd(s0_0_1, M4(-1.232e-02, 4.537e-02, 8.322e-03, -2.819e-02, -7.270e-02, -1.638e-01, 7.426e-03, 4.253e-02, -2.711e-01, -6.879e-02, 4.308e-02, 3.822e-03, -4.461e-02, -4.596e-02, -1.255e-02, 2.594e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.456e-01, 8.759e-02, -1.232e-01, 1.440e-01, -9.656e-02, -8.897e-02, 9.890e-02, -8.393e-01, 8.269e-02, -8.710e-02, 2.890e-01, 4.217e-01, 4.398e-02, 2.851e-02, -5.137e-03, 1.096e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(5.458e-02, -2.263e-02, -5.579e-02, 3.635e-02, 1.768e-01, 3.603e-02, 1.203e-02, 2.682e-02, 7.902e-02, 8.412e-03, 3.872e-01, 8.573e-02, 7.203e-02, -8.531e-03, -2.039e-01, 7.960e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(-9.491e-02, -1.431e-02, 1.541e-02, 7.125e-03, -2.342e-01, -5.845e-02, -3.911e-02, 1.345e-02, -6.537e-02, -2.341e-03, -1.913e-02, -7.491e-02, -2.823e-02, -7.889e-04, 2.246e-03, -2.572e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(3.182e-02, -1.205e-01, -8.174e-02, 9.559e-02, -4.225e-03, 8.761e-03, 9.877e-02, -4.413e-03, 9.772e-02, -5.354e-02, -1.508e-01, 1.507e-02, -1.111e-01, -5.514e-03, -1.764e-02, -4.508e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-8.983e-02, 9.532e-03, 6.249e-02, 1.644e-02, -1.396e-01, -3.630e-02, -3.226e-01, -8.937e-02, 3.096e-02, -2.228e-02, 6.260e-02, 2.801e-02, -2.691e-02, -1.946e-02, 3.042e-01, 6.429e-02), r2);\n\tr0 = MulAdd(s0_1_0, M4(4.774e-02, -2.753e-03, 3.733e-02, 5.234e-02, 2.063e-01, 6.343e-02, -2.685e-02, -2.345e-02, -1.343e-01, -1.969e-01, 1.783e-02, 4.953e-02, 1.283e-01, -1.768e-02, 6.969e-03, -3.803e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-6.848e-02, 1.805e-01, -3.072e-01, 8.786e-02, -4.533e+00, -2.733e-01, 9.678e-02, -7.903e-02, 6.315e-01, -2.436e-01, 6.929e-02, 2.639e-03, 4.882e-02, 8.620e-03, -1.157e-02, 2.297e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(6.044e-02, 3.137e-02, 2.344e-01, 4.057e-03, -3.721e-02, 4.214e-02, 6.506e-02, 6.430e-03, 4.382e-02, 2.849e-02, -3.235e-01, -1.559e-01, 2.660e-02, 8.349e-02, 1.540e-02, 5.069e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(-2.867e-01, -1.510e-01, -3.847e-02, -6.369e-03, -3.088e-01, -3.446e-01, -4.467e-02, 3.751e-03, -1.635e-01, -3.527e-02, -4.410e-02, 3.503e-02, 3.858e-02, 1.053e-01, -2.426e-02, 1.345e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(4.979e-01, -2.382e-01, 2.582e-01, -7.223e-02, -5.607e-01, 5.871e-02, 8.606e-01, -1.709e-01, -6.113e-01, 1.313e-01, 8.415e-01, -1.489e-01, -1.753e-01, -5.653e-02, 3.266e-02, -3.678e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-2.102e-01, -1.642e-02, -3.817e-01, -1.005e-04, 9.513e-02, 1.033e-02, -6.548e-01, 5.214e-02, 4.227e-02, 8.670e-02, -2.668e-01, -2.339e-01, -1.422e-01, 4.787e-03, 4.968e-02, 1.020e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(2.441e-01, 1.154e-02, -4.067e-02, 2.503e-02, 2.840e-01, -3.493e-02, 2.509e-02, 1.958e-02, 3.630e-01, 1.712e-01, 1.766e-02, 3.671e-02, -5.253e-02, -3.856e-02, 2.564e-02, 2.975e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.461e-01, 1.606e-01, 2.931e-01, -2.132e-01, 4.188e-02, 6.921e-02, 6.395e-03, 1.733e-02, 1.809e-01, -1.000e-01, -3.229e-01, -5.873e-02, -3.083e-02, 4.404e-02, 3.474e-02, 1.116e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(2.153e-01, -2.386e-02, 7.123e-02, 9.820e-03, -3.459e-04, 2.167e-02, -8.050e+00, 2.230e-02, -1.258e-01, 1.100e-02, -9.690e-01, 7.935e-02, -1.630e-02, 2.041e-02, -1.367e-01, 8.399e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(-5.044e-02, -6.445e-03, 1.264e-03, -2.473e-02, 8.443e-02, -7.054e-02, -6.142e-03, -6.069e-02, -2.642e-02, 6.221e-02, -5.325e-02, 9.792e-04, -2.286e-02, -6.836e-02, 6.665e-02, 1.343e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(-3.037e-02, -7.044e-03, 6.013e-02, -3.630e-02, -2.393e-01, -7.752e-02, 1.786e-01, 1.179e-02, -1.429e-01, -7.992e-02, 9.990e-02, -2.557e-02, -5.351e-01, 2.478e-01, -1.597e-01, 1.214e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(-9.399e-02, -5.158e-04, -1.260e-01, 5.753e-02, 2.553e-01, -2.938e-03, -5.913e-04, 3.223e-02, 5.890e-02, 8.018e-03, 1.550e-01, -1.762e-01, -8.908e-02, -4.383e-02, 1.972e-01, -3.748e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(2.007e-01, 4.391e-02, 1.759e-02, 1.245e-02, 1.649e-01, -3.839e-02, -1.313e-01, -1.255e-02, -1.855e-02, 4.078e-02, 2.373e-02, -3.109e-02, 1.513e-01, -2.762e-01, -1.865e-01, -8.377e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.297e-01, -9.058e-02, -5.008e-02, -2.317e-02, -1.818e-01, -1.354e-01, -1.195e-01, -1.166e-01, -2.419e-02, 8.370e-02, -2.687e-01, -9.035e-02, -3.246e-01, -1.675e-01, 2.107e-01, -4.834e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.626e-01, 1.181e-02, 2.537e-01, -3.441e-02, -8.744e-02, -4.786e-02, -5.942e-02, -1.541e-01, -3.018e-01, -3.299e-02, -2.477e-01, -2.223e-01, 1.174e-01, -4.864e-02, -4.832e-01, -4.261e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(-1.123e-01, 1.728e-02, -7.725e-03, -1.937e-02, 2.393e-02, 9.625e-03, -3.186e-02, -5.783e-02, -8.287e-02, -4.418e-02, 3.169e-02, -4.808e-03, 2.759e-01, 5.622e-02, 9.001e-02, 4.963e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-5.944e-02, 9.065e-03, -1.003e-01, 1.170e-01, -2.443e-03, 9.089e-02, -1.127e-01, 4.456e-02, -7.984e-04, -8.293e-02, -3.158e-01, 4.708e-02, -1.143e-01, 2.366e-01, -1.010e-01, -1.101e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.531e-01, 1.518e-02, -1.342e-01, -4.859e-02, -1.913e-01, -9.979e-03, 3.440e-02, -5.432e-02, -9.941e-02, 1.854e-02, 5.622e-02, 6.923e-02, 1.733e-01, 1.805e-02, 1.890e-01, -6.919e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(3.391e-01, 2.425e-01, -8.351e-02, 2.316e-01, 1.787e-01, 4.504e-02, -1.824e-03, 2.724e-02, 3.840e-01, 6.608e-02, 3.379e-02, 4.463e-01, -4.328e-01, -2.923e-01, 5.945e-02, -2.570e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(-2.262e-01, -4.842e-03, 3.272e-01, -5.540e-01, 2.632e-02, 8.292e-02, 4.413e-02, -1.459e-01, -3.279e-01, -2.804e-02, -2.740e-01, -7.485e-01, 9.982e-02, -4.858e-01, -5.180e-02, 2.607e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(3.058e-02, -1.037e-01, 1.230e-01, -2.595e-01, -6.311e-02, -7.707e-03, -1.219e-02, -8.179e-02, -1.037e-01, 1.548e-01, -1.459e-01, -5.167e-02, -1.150e-01, -1.380e-01, 2.104e-01, 3.368e-01), r2);\n\tr0 = MulAdd(s1_0_1, M4(-4.619e-02, -5.872e-02, -6.361e-03, 8.629e-03, 2.252e-01, 4.519e-02, -2.644e-02, 1.465e-02, 2.064e-01, -8.797e-02, 6.324e-02, 2.020e-02, 2.898e-01, 1.881e-01, 3.965e-02, 1.021e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.489e-01, 6.459e-02, -2.539e+00, -1.099e+01, 1.161e-01, 9.301e-02, 2.458e-01, 9.420e-02, 2.607e-01, 1.895e-01, 3.102e-01, -5.133e-01, -6.039e-03, 6.094e-02, -2.048e-01, -4.620e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-8.125e-02, 1.500e-01, -7.482e-02, -3.429e-01, -6.732e-02, 2.407e-02, -2.744e-01, -3.914e-02, -8.471e-02, 7.836e-03, -4.434e-01, -3.630e-02, -3.270e-02, 7.112e-02, -2.415e-01, 4.222e-01), r2);\n\tr0 = MulAdd(s1_0_2, M4(9.232e-01, -1.510e-01, 1.315e-01, 4.544e-02, -5.102e-02, 1.300e-02, 5.796e-03, -3.541e-02, -4.598e-02, -7.197e-03, 1.332e-02, -8.201e-03, 2.325e-01, -2.044e-02, -1.190e-01, -1.319e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(1.536e-01, -1.440e-01, -7.880e-02, -3.087e-01, 3.748e-02, 1.257e-02, 5.745e-02, -6.155e-02, 6.704e-02, -3.070e-02, 7.411e-02, 1.362e-02, -3.260e-02, 4.048e-01, 2.097e-01, 1.072e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(-4.834e-01, 2.804e-02, -1.024e-01, -1.312e-01, -8.083e-02, -5.414e-03, 1.539e-02, 3.552e-02, 6.698e-02, 1.451e-02, -4.072e-01, -5.120e-02, 1.823e-01, -9.009e-02, -9.889e-02, 3.002e-01), r2);\n\tr0 = MulAdd(s1_1_0, M4(3.700e-01, 1.198e-02, -5.900e-02, -1.685e-01, 1.926e-01, 7.565e-02, -4.254e-03, 2.076e-02, 1.345e-01, 1.137e+00, 1.037e-01, 3.461e-01, 3.581e-01, 2.222e-01, -4.287e-01, 6.309e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(-3.201e+00, -2.368e-01, 3.491e-01, 3.497e-03, -1.627e-01, 9.939e-02, 1.942e-01, -1.381e-02, -5.971e+00, 2.788e-01, -2.161e+00, 4.417e-01, -3.290e-01, -7.201e-01, 2.632e-01, -2.907e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(-3.897e-01, 1.248e-01, 4.911e-02, -1.202e-01, -1.392e-01, 2.658e-02, 2.311e-04, -6.858e-02, 4.365e-01, 2.058e-01, 1.479e-01, 2.179e-01, 2.061e-01, -7.059e-01, 8.722e-02, -2.070e-02), r2);\n\tr0 = MulAdd(s1_1_1, M4(-3.332e+00, 2.122e-01, 9.245e-01, 1.774e-01, 2.544e-01, 1.545e-01, 3.007e-02, 7.024e-03, -3.430e+00, 8.651e-02, 1.736e-01, 8.504e-04, 4.638e-02, -1.583e-01, 4.245e-01, -3.628e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(2.218e-01, -2.080e-02, -7.942e-02, 1.266e-01, 4.827e-02, -1.145e-01, 1.820e-01, 1.021e-01, -6.865e-02, -1.046e-01, -4.027e-01, 2.035e-01, -4.482e-01, 1.105e+00, 2.684e-01, 4.417e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(5.336e-01, -1.328e-01, 2.026e-01, -2.223e-01, -3.037e-01, 2.106e-02, -3.656e-01, 1.059e-02, 4.970e-01, 1.213e-01, 5.399e-01, -1.509e-01, 4.336e-03, 8.515e-01, 1.899e-01, -5.825e-01), r2);\n\tr0 = MulAdd(s1_1_2, M4(-2.647e-01, 2.581e-02, -1.091e-01, -2.832e-02, 8.882e-02, 6.996e-02, -5.836e-03, -1.641e-02, 6.180e-02, 1.182e-02, 4.131e-02, 3.867e-02, -1.626e-01, 2.079e-02, 3.531e-02, -4.426e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-9.842e-02, -4.417e-02, -1.064e-01, 1.662e-01, 6.878e-04, 8.423e-02, 1.025e-01, -5.273e-02, 1.255e-01, -8.911e-02, 6.974e-02, 5.234e-02, 3.513e-01, -3.335e-01, -3.144e-01, -3.230e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(3.126e-01, 7.491e-03, -9.629e-01, -1.333e-01, -2.116e-01, -8.586e-03, -1.971e-01, 5.712e-02, -1.370e-02, -5.309e-03, -2.946e-01, 2.660e-02, -1.323e-01, 1.245e-01, -3.645e-01, -3.674e-02), r2);\n\tr0 = MulAdd(s1_2_0, M4(7.670e-02, 8.595e-03, 3.244e-02, -1.346e-02, 2.134e-02, 1.548e-01, 4.336e-03, 5.201e-03, 1.897e-02, -4.983e-01, 1.004e-01, -1.033e-01, -7.343e-02, 2.295e-02, 9.595e-02, -7.352e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-4.434e-02, 4.009e-02, 8.151e-02, 3.921e-02, 1.460e-01, 7.789e-02, -3.046e-02, 1.184e-02, -5.098e-01, 1.579e-01, 3.040e-01, 1.067e-03, 2.557e-01, -3.645e-01, -1.889e-01, -7.528e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-4.813e-01, -3.520e-02, -8.284e-02, 1.183e-01, -2.144e-02, -1.212e-02, 3.596e-02, -6.149e-02, -1.208e-01, 1.994e-02, 2.183e-01, 3.601e-01, -7.420e-01, -2.703e-03, -2.526e-01, -1.911e-01), r2);\n\tr0 = MulAdd(s1_2_1, M4(1.636e-01, -4.141e-02, -1.152e-01, -3.378e-02, 3.631e-02, 1.095e-01, 1.823e-02, -1.236e-02, -7.966e-02, -4.403e-01, 1.980e-01, 4.628e-02, 7.260e-02, 2.845e-02, -1.146e-01, 3.730e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-2.549e-02, -1.408e-01, 1.984e-01, 3.723e-02, 1.239e-01, 1.850e-03, 2.271e-02, -8.864e-03, 2.747e-02, 4.286e-02, 3.197e-01, -3.832e-02, -4.773e-02, 2.914e-01, 1.265e-01, -1.169e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.469e-01, 2.410e-02, -6.237e-02, 3.077e-01, -6.164e-01, -4.866e-04, -1.044e-01, -8.553e-02, -2.641e-01, 1.375e-02, 6.543e-01, 1.125e-01, 5.215e-01, 7.470e-04, 6.003e-02, 4.529e-02), r2);\n\tr0 = MulAdd(s1_2_2, M4(9.014e-02, -6.008e-02, -5.005e-02, 1.726e-02, 4.845e-02, 1.904e-02, -2.193e-02, 8.074e-03, -1.087e-01, -7.837e-02, 3.213e-02, 2.108e-02, -1.358e-01, -6.511e-02, 3.273e-02, 6.567e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.559e-01, -2.527e-02, 1.604e-01, 1.789e-02, 9.444e-02, 1.125e-04, 1.713e-01, 1.110e-03, -6.420e-03, -4.359e-02, -1.523e-01, 1.942e-02, -1.115e-01, -3.417e-03, 7.279e-02, -6.073e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(2.469e-01, 2.840e-02, 7.367e-02, 1.362e-01, -2.410e-01, -8.207e-04, -3.442e-02, 1.836e-02, 1.243e-01, 1.074e-02, 1.199e-02, -3.521e-02, -1.363e-02, -3.894e-02, 1.867e-01, -1.963e-01), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(9.631e-02, -2.804e-02, -9.453e-03, 1.323e-01, -3.873e-02, -1.756e-02, -5.242e-03, 7.056e-02, 2.419e-01, 9.249e-02, 5.779e-03, -9.669e-03, -2.893e-01, -4.675e-02, 8.553e-03, -1.525e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-2.398e-02, -1.289e-01, 4.694e-03, -2.516e-01, 1.582e-01, -1.565e-01, 6.696e-02, -6.893e-02, -5.530e+00, 2.511e-01, -5.747e-02, -7.958e-02, 1.228e-01, -8.098e-04, 7.861e-03, 4.258e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(2.988e-02, 9.818e-03, 7.718e-02, -1.235e-01, 1.831e-03, -1.122e-02, 7.387e-03, -3.717e-02, -2.235e-03, 1.173e-02, 1.812e-01, 1.277e-01, 3.759e-02, 5.075e-02, -9.082e-02, 2.051e-01), r2);\n\tr0 = MulAdd(s0_0_1, M4(2.417e-01, 5.696e-03, -2.523e-02, 3.335e-02, 2.994e-01, -4.373e-02, -1.829e-02, 2.144e-01, -2.051e+00, -2.904e+00, -1.204e-03, -2.725e-01, -5.958e-01, 1.640e-01, 2.718e-02, -2.490e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(1.050e-01, -7.589e-02, -7.257e-02, -2.665e-01, -4.346e-02, -2.837e-02, 3.254e-02, -2.350e-01, 8.236e-01, -3.002e-02, -4.036e-01, 1.187e-01, -3.916e-01, -6.106e-03, -2.168e-01, 2.283e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(-4.683e-02, -4.553e-02, -8.636e-02, -1.352e-01, 9.251e-02, 1.189e-01, 3.465e-02, 6.706e-03, -3.065e-02, 1.250e-01, 1.267e-01, -1.171e-01, -1.415e-01, -1.284e-01, 2.027e-01, 2.410e-01), r2);\n\tr0 = MulAdd(s0_0_2, M4(1.786e-01, 3.389e-02, 1.466e-02, -4.641e-03, -8.848e-01, 3.649e-02, 6.161e-02, 4.990e-02, 3.555e-01, -2.781e-01, 1.542e-01, 3.356e-02, 2.407e-01, 6.276e-02, -3.615e-02, -4.808e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.938e-02, 3.655e-02, 3.674e-02, 1.314e-02, -1.608e-02, -1.874e-01, -1.124e+00, 1.665e-01, 5.260e-02, -1.156e-02, -1.678e+00, -1.620e-01, -1.349e-01, 7.761e-02, 1.586e-01, -7.672e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.392e-02, 2.595e-02, -1.714e-01, -6.997e-02, 3.154e-01, 8.306e-02, -1.322e-01, -6.563e-02, -4.973e-01, -5.676e-02, -2.141e+00, 2.090e-01, 1.009e-02, -2.920e-03, 2.474e-01, -6.145e-02), r2);\n\tr0 = MulAdd(s0_1_0, M4(-1.929e-01, -2.588e-01, 3.779e-02, -8.635e-03, -3.529e-02, 5.598e-02, 1.119e-02, -6.296e-03, 1.195e-01, -3.284e-02, -1.909e-03, 9.286e-02, -4.257e-01, 2.673e-02, 5.518e-02, 7.681e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-3.640e+00, 1.669e-02, -4.130e-01, -1.931e-01, -9.340e-01, -8.276e-02, 4.574e-02, -1.106e-03, -9.860e-02, 1.926e-01, -4.612e-02, -5.462e-02, 1.960e+00, -9.520e-02, -1.051e-02, 1.545e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-2.489e-02, 1.783e-01, 1.417e-01, 2.396e-01, 4.945e-02, 2.029e-02, 6.159e-02, 2.332e-02, -1.509e-01, 6.395e-03, -9.998e-02, 1.362e-01, -1.161e-01, -1.626e-01, -1.393e-01, -2.494e-01), r2);\n\tr0 = MulAdd(s0_1_1, M4(-3.274e+00, 2.682e-01, 1.102e-01, 7.051e-01, -1.348e+00, -1.402e-01, 1.560e-01, -5.292e-02, 2.280e-02, 2.007e-01, -8.571e-02, 1.169e-01, 8.401e-01, -1.686e-01, -3.213e-01, -2.289e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(3.720e-01, 2.042e-01, -3.725e-01, 8.848e-01, 1.794e-01, 1.152e-01, -4.944e-01, 1.010e-01, 2.857e-01, -2.353e-01, 3.256e-01, 5.700e-02, -2.873e-01, 6.139e-02, 2.183e-01, -6.211e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.133e-02, 3.535e-01, 2.165e-01, -1.524e-01, 3.282e-02, 2.929e-04, 5.665e-02, 1.211e-01, -7.735e-02, 1.962e-01, 1.042e-01, 1.354e-01, 4.102e-01, 1.517e-01, -1.018e-01, 1.930e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(-1.035e+00, 1.804e-03, -1.218e-01, -1.179e-01, 2.256e-01, -9.327e-02, 5.833e-02, -2.050e-02, 2.045e-01, 2.872e-01, -4.038e-02, 5.665e-02, -1.688e-01, 1.628e-01, 1.684e-01, 4.537e-03), r0);\n\tr1 = MulAdd(s0_1_2, M4(-2.073e-01, 3.481e-02, 2.529e-01, 2.268e-01, -6.458e-02, -6.413e-02, 2.447e-01, 4.451e-02, 2.847e-01, -1.979e-01, -1.034e-01, -2.314e-02, -1.298e-01, -4.288e-02, -1.059e-01, -5.178e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.814e-01, -5.550e-02, -1.207e-01, 4.091e-02, -8.628e-02, -1.895e-02, -1.010e-01, -2.984e-02, 4.241e-01, 3.750e-02, -4.385e-01, -6.667e-02, -2.939e-01, -2.314e-02, 4.947e-01, -7.935e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(-1.120e-01, 3.196e-01, 5.164e-02, 1.143e-01, -3.380e-02, 2.722e-02, 3.650e-02, -2.876e-02, 6.177e-02, -1.992e-02, -1.522e-02, 3.466e-03, -3.762e-02, -1.678e-01, -1.084e-01, 2.907e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(8.000e-02, 1.485e-02, -2.207e-01, -4.029e-02, 2.246e-02, -1.914e-02, 8.531e-02, 1.385e-03, -7.882e-02, 8.078e-02, -4.635e-02, 2.131e-02, 1.998e-01, 8.228e-03, -2.912e-01, 9.723e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.966e-01, 2.201e-02, -1.946e-01, 4.151e-01, 1.084e-01, 1.185e-02, 7.331e-02, 2.434e-02, -1.656e-01, -6.117e-04, -7.607e-02, 5.965e-03, 5.628e-02, 1.161e-02, -1.454e-02, -1.642e-01), r2);\n\tr0 = MulAdd(s0_2_1, M4(3.607e-01, -2.947e-01, -1.931e-01, -4.023e-01, -2.717e-02, -1.100e-02, 1.147e-02, 1.111e-02, 5.457e-02, -4.799e-02, 4.258e-02, 1.010e-02, -8.689e-02, 1.692e-01, 1.298e-01, -4.596e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.801e-01, -3.279e-01, -2.748e+00, 1.461e-01, 9.752e-02, 2.452e-02, -1.179e-02, -2.788e-02, -3.933e-02, -2.861e-02, 1.512e-01, 7.932e-02, -4.109e-01, 1.843e-02, -1.122e-02, -3.969e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.877e-02, 1.564e-01, 4.200e-01, 6.425e-01, 3.375e-01, 1.257e-02, 2.326e-02, 6.901e-03, -4.014e-01, 1.172e-02, 2.373e-02, 5.253e-02, 7.132e-02, -9.038e-02, -5.055e-03, -2.764e-01), r2);\n\tr0 = MulAdd(s0_2_2, M4(1.104e-02, -1.233e-01, 4.924e-02, 2.317e-02, -8.739e-02, 1.306e-02, -1.099e-02, -6.071e-04, 3.868e-02, -4.412e-02, 3.103e-02, -1.446e-03, 5.179e-02, -5.954e-02, 1.015e-02, -1.811e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(2.233e-01, -1.226e-01, 4.990e-01, -4.403e-03, -5.349e-02, 2.541e-02, -3.337e-02, -2.889e-02, 1.171e-01, -3.813e-02, 1.284e-01, 1.807e-03, -3.329e-01, 9.298e-02, -1.529e-01, 5.895e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.705e-01, 3.745e-02, 8.321e-02, 3.103e-01, 5.026e-03, 3.200e-03, 3.430e-02, -5.324e-02, -9.025e-02, -3.901e-03, 7.197e-02, -2.309e-02, 2.425e-01, 1.996e-02, -4.584e-02, 1.744e-03), r2);\n\tr0 = max(r0, 0.0);\n\tT3[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT4[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT5[gxy] = r2;\n}\n\n//!PASS 3\n//!DESC conv2 (12x12)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T3, T4, T5\n//!OUT T0, T1, T2\n\n#define L0(x, y) V4(O(T3, x, y))\n#define L1(x, y) V4(O(T4, x, y))\n#define L2(x, y) V4(O(T5, x, y))\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-6.759e-03, -1.505e-02, 2.356e-03, -2.135e-02, -9.848e-03, -9.010e-02, 5.188e-03, 1.574e-02, 1.274e-01, 3.135e-01, -2.161e-03, -1.236e-01, 7.479e-03, 9.270e-02, 3.689e-03, -5.273e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.580e-02, -1.418e-02, 5.399e-02, -8.306e-02, 2.179e-02, 5.891e-02, 1.409e-01, -8.571e-02, 2.366e-01, 1.275e-01, -1.676e-01, -1.280e-01, 1.564e-02, 2.385e-02, -4.874e-02, 1.494e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(-7.715e-03, -1.194e-02, -2.538e-03, 4.241e-02, -6.301e-03, 2.680e-02, -2.478e-02, 8.129e-02, -1.247e-01, 1.184e-02, -4.004e-02, -1.638e-01, -2.347e-04, 4.530e-02, -3.080e-02, -3.733e-02), r2);\n\tr0 = MulAdd(s0_0_1, M4(9.757e-03, -3.255e-02, 1.727e-02, 2.885e-02, -7.986e-02, 2.617e-01, 2.018e-02, 5.360e-02, -2.950e-01, -7.824e-03, 1.238e-01, -1.384e-01, -6.957e-02, -2.548e-02, -1.444e-03, 3.309e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.924e-02, 8.881e-02, 9.455e-02, 2.853e-02, -2.841e-02, -7.529e-02, 2.778e-01, 1.516e-01, 3.797e-02, 2.660e-01, -3.899e-01, 6.196e-02, -1.187e-02, 1.479e-01, -5.362e-02, 2.011e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(9.283e-03, 1.542e-02, 2.879e-02, -8.667e-02, 4.427e-02, 7.304e-02, -1.860e-02, -2.831e-02, 3.491e-01, 1.712e-01, 2.666e-01, 2.057e-01, 6.653e-02, 7.203e-02, -5.034e-02, -5.006e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(-5.881e-03, 3.936e-02, -3.432e-03, 8.615e-02, 1.244e-02, 9.838e-02, 7.745e-03, 2.848e-02, -5.667e-02, 7.611e-03, 3.827e-03, 1.540e-01, -9.220e-03, 6.165e-02, -2.547e-02, 1.077e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(5.461e-04, -2.705e-02, 2.154e-01, 5.772e-02, -4.514e-02, -2.848e-02, 2.481e-01, 1.294e-01, -5.020e-02, -1.949e-02, 7.258e-02, 2.232e-01, 3.700e-02, -2.129e-02, 2.838e-02, 2.368e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.580e-02, -7.514e-03, -8.639e-03, 3.299e-02, 5.892e-02, 1.130e-01, -8.888e-02, 6.520e-02, 9.644e-02, -1.923e-02, -1.241e-01, 1.050e-01, 6.810e-02, 4.524e-02, -8.995e-02, -2.264e-02), r2);\n\tr0 = MulAdd(s0_1_0, M4(-3.921e-03, -1.237e-01, -1.254e-02, -2.860e-02, -7.210e-03, 1.811e-01, 1.227e-02, -1.525e-02, 9.198e-02, 2.154e-01, -1.949e-01, -3.529e-02, 5.385e-02, 3.447e-01, -2.644e-02, -3.419e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-6.401e-02, -1.463e-01, -2.095e-01, 4.736e-02, -6.283e-02, 5.619e-02, 6.241e-02, -1.372e-01, -1.676e-01, -8.025e-02, 1.257e-02, -2.190e-01, 4.044e-03, 2.763e-02, 1.439e-02, 1.586e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(3.096e-03, 1.511e-02, 1.140e-01, -5.856e-02, 1.590e-02, 6.986e-02, -1.801e-02, 1.401e-01, -8.360e-02, -2.062e-01, -1.107e-01, -8.202e-02, 1.340e-02, -5.605e-02, -1.187e-01, -1.065e-01), r2);\n\tr0 = MulAdd(s0_1_1, M4(-1.194e-01, -1.284e-01, 4.426e-02, -9.848e-02, -9.053e-02, 1.209e-01, 1.412e-01, -4.932e-02, 4.005e-01, 3.335e-01, -2.358e-01, 2.143e-01, -2.045e-01, -5.232e-01, 6.471e-02, 4.358e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(6.280e-02, 2.705e-01, -9.820e-01, -1.780e+00, 1.233e-01, 2.027e-01, 6.027e-01, -3.098e-02, 4.446e-01, 2.518e-02, 1.602e-01, 4.224e-01, -2.054e-01, 1.402e-01, -3.910e-01, -3.486e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.433e-02, -1.651e-01, 4.444e-01, -2.871e-01, 2.485e-01, 2.781e-01, -1.700e-01, 2.833e-01, -3.115e-01, -7.890e-02, -1.859e-01, 3.705e-01, 1.939e-01, -2.440e-01, -4.381e-03, 2.825e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(-3.257e-02, 6.124e-02, -1.168e-03, 6.272e-02, -1.960e-01, 2.225e-01, 1.492e-02, 2.386e-01, 4.710e-02, 2.351e-02, 4.334e-02, -3.379e-02, 2.085e-01, -9.796e-02, 5.211e-02, 3.489e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-2.535e-02, -6.549e-02, 2.373e-01, 8.015e-02, -2.104e-01, -4.005e-01, -1.050e-01, 3.508e-02, -6.374e-02, -2.266e-01, 4.773e-02, 1.759e-01, -4.369e-02, 1.094e-01, -7.176e-02, -1.012e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(2.073e-02, -1.313e-01, 9.050e-02, 2.890e-02, 7.562e-02, 7.598e-02, 1.232e-01, 2.819e-01, -1.389e-04, 2.778e-02, 8.439e-02, 3.335e-02, -2.143e-01, -3.591e-01, 5.573e-02, -9.345e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(1.283e-02, -1.762e-02, -2.889e-03, 1.775e-02, -3.492e-02, 7.217e-02, -3.527e-02, 8.411e-03, 2.036e-02, -9.090e-02, -5.922e-03, -1.808e-02, 2.552e-02, -1.725e-01, 1.701e-02, -2.806e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(2.996e-02, 1.882e-01, 1.805e-02, 2.959e-01, -1.414e-02, 4.523e-02, -8.140e-02, -7.306e-02, -1.225e-03, 8.143e-02, -1.101e-01, 9.234e-02, 1.270e-01, 1.632e-01, 1.665e-01, 1.126e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(-3.544e-02, -4.571e-02, 5.553e-02, 8.032e-02, 1.984e-02, 9.358e-02, -3.331e-02, 1.835e-02, -9.506e-03, -2.274e-02, -5.319e-02, -4.837e-02, -1.702e-02, -2.493e-02, 4.273e-02, -3.310e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(-4.770e-02, 1.123e-01, -2.839e-02, 8.945e-04, -6.619e-02, 9.348e-02, -3.933e-03, 9.205e-02, -4.442e-03, -8.051e-02, 2.174e-02, 1.275e-02, -1.422e-01, -1.556e-01, 2.646e-01, -6.622e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(3.653e-02, 9.451e-02, -2.475e-01, 2.187e-01, -3.029e-02, -2.087e-01, 2.920e-01, -4.719e-01, -5.179e-02, 3.824e-02, 7.301e-02, -1.555e-01, -2.059e-01, -3.804e-01, -5.335e-01, -3.232e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-3.173e-02, -1.196e-01, 2.885e-01, 4.242e-02, 8.618e-02, 1.354e-01, -5.229e-02, 5.659e-03, 5.497e-02, 1.137e-01, -1.064e-01, -1.654e-02, 2.501e-01, 1.548e-01, -2.891e-01, -4.272e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(1.063e-02, 3.782e-02, -2.144e-02, 1.326e-01, -5.911e-02, 6.685e-03, 1.411e-02, 1.441e-01, 1.583e-03, 5.785e-02, -1.711e-02, -1.195e-02, -1.130e-01, -1.257e-01, -1.891e-02, -7.505e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-5.770e-03, -1.543e-01, 7.640e-02, 5.218e-02, -2.431e-02, -8.428e-02, 6.076e-02, -3.515e-01, 5.914e-03, -8.318e-02, 6.820e-02, -3.257e-02, -6.732e-02, 3.447e-01, -2.948e-01, -6.083e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.643e-02, 9.018e-02, 9.565e-02, -9.905e-03, -2.777e-03, -4.201e-02, 1.910e-01, 2.960e-03, -1.180e-02, -4.284e-02, 4.498e-02, 8.336e-02, 9.301e-02, 2.375e-02, -9.536e-02, -1.039e-01), r2);\n\tr0 = MulAdd(s1_0_0, M4(-3.232e-02, -1.392e-01, -2.154e-02, 8.684e-03, 1.473e-02, 1.880e-01, -1.315e-02, 3.371e-02, -2.070e-02, 3.211e-02, -2.351e-02, 2.569e-02, -5.806e-02, 1.929e-01, 1.368e-03, -2.081e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.381e-02, 2.206e-02, 2.714e-01, -9.864e-02, -6.151e-02, -7.034e-02, 8.710e-02, 1.022e-02, 1.203e-02, -1.267e-02, -8.538e-02, -1.284e-01, 3.371e-02, 4.512e-02, -2.956e-01, 7.293e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(3.255e-03, -2.771e-03, -5.561e-02, 1.824e-02, 2.894e-02, 8.127e-03, -6.393e-02, 3.503e-02, 1.490e-03, 1.931e-02, -1.421e-02, 2.400e-02, 3.499e-02, 7.051e-02, 4.356e-02, 1.291e-02), r2);\n\tr0 = MulAdd(s1_0_1, M4(-8.468e-02, 1.223e-01, 3.317e-03, 2.475e-02, -1.007e-01, 3.256e-01, -4.773e-02, -3.219e-02, 2.716e-02, -1.034e-01, -3.047e-02, -1.714e-02, -4.797e-02, 1.171e-01, -6.142e-04, 9.536e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.179e-01, 8.259e-02, 1.625e-01, 1.930e-01, 7.982e-02, 1.957e-01, 4.223e-01, 1.018e-01, 6.428e-02, 8.548e-03, -1.717e-01, -2.778e-01, 6.160e-04, 5.557e-02, -8.745e-01, -8.361e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.154e-02, -2.620e-02, 1.522e-02, 3.887e-02, 1.342e-02, 8.653e-02, 2.729e-02, -8.847e-03, -1.207e-01, -9.943e-02, 8.319e-03, 6.700e-02, -2.150e-02, 8.855e-02, -3.030e-02, 5.261e-02), r2);\n\tr0 = MulAdd(s1_0_2, M4(-1.749e-02, 9.230e-02, 1.213e-02, -1.196e-01, -3.212e-02, 4.104e-02, 4.388e-02, 9.445e-02, 1.447e-02, -6.141e-02, -1.582e-02, -1.723e-02, -4.415e-02, 1.271e-04, 6.426e-03, -3.212e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(2.438e-02, -3.891e-03, 2.686e-01, -7.350e-02, 5.187e-02, -3.246e-02, 9.097e-02, -4.757e-02, 3.653e-02, -1.538e-02, 4.051e-02, -1.390e-01, 8.494e-02, 2.973e-02, -7.575e-01, -1.007e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(5.311e-03, 1.382e-01, 2.313e-02, 2.166e-02, 3.273e-02, 1.842e-01, 3.200e-02, 6.792e-02, -5.007e-02, -2.395e-02, 1.106e-03, -1.757e-02, 2.165e-02, 1.202e-02, 3.874e-02, 6.710e-02), r2);\n\tr0 = MulAdd(s1_1_0, M4(-5.297e-02, -7.059e-02, 3.115e-03, -2.544e-02, 5.847e-02, 4.033e-01, 5.774e-02, 2.709e-02, 3.724e-03, -2.364e-01, -5.125e-02, -8.305e-03, -1.323e-01, -7.102e-02, -9.253e-03, -8.608e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(-5.709e-02, -8.277e-02, 1.067e-01, -2.049e-01, 7.058e-02, 3.285e-02, -1.666e-01, 6.238e-02, -8.775e-02, -1.156e-01, -1.992e-01, -1.556e-01, -1.014e-01, 1.802e-01, 2.314e-01, 4.443e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(2.843e-02, -2.882e-02, -6.463e-02, 5.271e-02, -4.349e-02, 3.837e-02, 3.964e-02, -1.500e-01, -1.342e-02, -8.717e-02, 6.817e-02, 3.045e-02, 3.529e-02, -2.678e-02, -8.400e-02, 1.324e-01), r2);\n\tr0 = MulAdd(s1_1_1, M4(-9.799e-02, 2.398e-01, 7.693e-02, -2.964e-02, -1.767e-01, 3.493e-01, -1.063e-01, -7.992e-02, 2.932e-02, -3.393e-01, -4.814e-02, -1.720e-01, -1.586e-01, 5.379e-01, -7.118e-02, 4.628e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.841e-01, 4.493e-01, -1.644e-01, 3.375e-01, -2.744e-01, 1.349e-01, -3.830e-01, -4.070e-01, -3.018e-01, 1.444e-01, -2.143e-01, -7.086e-03, -2.674e-02, -7.800e-02, 2.016e-01, 1.616e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-3.966e-02, 1.086e-01, 5.865e-02, -1.738e-01, -4.519e-02, -2.647e-01, 1.684e-01, 1.420e-01, -1.421e-01, -2.744e-01, 8.009e-03, -3.473e-01, 5.831e-02, 2.071e-01, -2.494e-01, 2.414e-02), r2);\n\tr0 = MulAdd(s1_1_2, M4(-6.101e-02, -2.213e-01, 9.060e-02, -7.942e+00, -1.255e-01, -9.981e-02, -4.617e-02, -3.347e-01, 5.673e-02, -3.055e-02, -2.132e-02, -5.782e-01, -5.440e-02, 1.824e-01, 2.427e-02, -2.083e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(3.273e-02, 1.237e-01, -6.635e-01, -5.795e-01, -1.405e-01, -5.086e-02, -3.688e-01, -1.909e-01, 2.969e-02, 2.998e-02, -5.395e-02, -1.955e-01, 1.254e-01, 1.295e-01, 9.138e-02, 2.108e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(-4.120e-02, -3.115e-01, 3.345e-01, -1.030e-01, 9.356e-02, 2.701e-01, 1.988e-01, -1.423e-01, -5.601e-02, -9.980e-03, -2.940e-02, -1.493e-01, -1.731e-02, -1.484e-02, -5.268e-03, 2.069e-01), r2);\n\tr0 = MulAdd(s1_2_0, M4(-9.784e-02, 1.578e-01, 4.306e-02, 2.858e-03, -1.519e-02, -5.994e-02, -3.936e-03, -4.726e-02, -4.825e-02, -1.958e-01, -1.119e-02, 2.527e-02, -1.377e-01, 3.506e-01, -3.783e-03, 3.177e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.658e-02, 1.978e-01, 5.051e-02, 1.294e-01, -1.068e-01, 1.227e-01, -1.411e-01, -6.666e-02, -7.549e-02, -3.135e-02, -1.060e-01, -4.586e-02, -5.916e-02, -1.474e-01, 3.264e-02, -2.533e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.645e-02, -2.914e-03, -4.603e-02, 6.803e-02, 2.154e-02, 2.931e-02, -1.135e-01, -9.852e-03, 1.574e-02, -3.317e-02, 1.650e-02, 3.483e-02, -7.826e-03, 4.164e-02, 8.609e-02, 7.429e-02), r2);\n\tr0 = MulAdd(s1_2_1, M4(-3.542e-02, -1.539e-01, -8.780e-02, 6.522e-02, -1.921e-01, -2.548e-01, -4.639e-03, 2.511e-02, -5.201e-02, -3.517e-02, -2.826e-02, -2.817e-02, 7.887e-02, 1.685e-01, 2.006e-01, -5.049e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(8.619e-03, 2.244e-01, 1.567e-01, 1.408e-01, -5.459e-02, 1.096e-01, 2.114e-01, -4.726e-01, -8.311e-02, 2.259e-01, -4.627e-02, -2.793e-02, 1.261e-01, 7.417e-02, -7.290e-02, 2.032e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(3.764e-03, 9.671e-02, 1.274e-01, 3.466e-02, 9.256e-02, 5.622e-02, -5.897e-02, 2.367e-02, -1.060e-02, -1.475e-02, -2.870e-02, -6.589e-02, -1.787e-01, -1.109e-01, 2.158e-01, 2.742e-03), r2);\n\tr0 = MulAdd(s1_2_2, M4(-2.640e-02, 1.261e-01, 4.421e-02, -1.221e-01, -9.794e-02, 3.996e-01, -1.184e-01, -2.059e-02, -1.182e-03, -4.215e-03, 4.078e-03, 9.946e-03, 8.333e-03, -1.370e-02, 1.337e-02, 1.006e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(6.639e-02, -2.302e-02, -2.505e-01, 2.445e-01, 1.800e-02, -4.631e-03, -1.594e-01, -5.270e-02, -1.248e-03, 1.477e-02, 1.812e-02, -5.717e-02, -5.804e-02, -1.394e-01, 8.077e-02, 2.228e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-4.187e-02, -8.189e-02, 9.144e-02, 1.709e-01, 5.584e-03, 7.161e-02, 2.024e-01, -4.796e-02, -1.520e-02, 4.362e-02, -3.365e-03, 4.276e-03, -9.154e-02, 9.219e-03, -4.412e-02, 1.948e-03), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.768e-02, -3.607e-01, -3.826e-03, 3.327e-02, -1.740e-02, -2.238e-01, 3.163e-02, -1.567e-02, 4.057e-02, -2.185e-01, 1.973e-02, 2.995e-02, -8.520e-03, -2.660e-01, 1.151e-02, 6.180e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(8.276e-02, 7.184e-02, 1.983e-01, -6.656e-02, -3.404e-02, 3.801e-02, 8.843e-02, -1.287e-01, 8.911e-02, 1.120e-01, 1.430e-01, 1.015e-01, -7.758e-03, 1.002e-02, 5.329e-02, -1.200e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(6.094e-02, -1.348e-01, 9.211e-02, 2.328e-01, -3.509e-03, -3.889e-02, 3.535e-02, 9.397e-03, 6.235e-02, -9.936e-02, 7.862e-02, -3.623e-02, -7.822e-02, 8.180e-03, 3.507e-02, -2.923e-02), r2);\n\tr0 = MulAdd(s0_0_1, M4(-6.557e-02, -3.243e-01, 4.582e-02, -7.827e-02, 2.307e-01, -1.248e-01, 1.853e-02, -1.030e-02, -5.730e-02, -2.801e-01, -3.359e-02, 1.173e-01, 9.277e-02, 1.577e-01, -8.326e-02, 1.685e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(1.646e-01, 2.901e-01, -3.359e-01, -6.320e-02, -4.730e-02, -3.252e-01, -2.061e-01, -1.401e-01, 4.871e-02, 2.347e-02, 1.797e-01, 7.995e-02, -1.470e-01, -4.847e-02, 4.809e-01, 5.727e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-6.238e-02, -1.443e-01, 1.845e-01, -5.890e-02, -7.351e-02, -1.213e-01, -1.165e-01, 4.939e-02, -3.111e-03, -1.233e-01, 1.715e-01, 5.261e-02, 1.076e-01, 5.183e-02, 6.130e-03, -5.612e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(4.993e-02, -6.425e-02, -9.127e-04, 1.079e-01, 4.481e-03, -1.210e-01, 1.247e-02, -2.445e-01, 1.774e-02, -2.764e-01, 5.006e-03, -1.142e-01, -2.644e-02, 2.134e-01, 1.738e-02, -8.312e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(9.025e-02, -2.346e-02, 9.599e-02, 2.617e-01, -9.498e-02, 4.933e-02, 4.825e-02, -1.160e-01, -2.593e-03, -4.598e-02, -1.515e-03, -4.995e-02, 5.967e-02, -1.864e-02, 1.350e-01, -6.435e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(6.188e-02, -8.339e-02, 7.458e-02, -1.726e-01, -6.567e-02, -3.636e-02, 1.179e-01, -4.469e-02, -1.245e-02, 4.836e-03, 1.244e-02, -5.965e-02, -7.728e-04, -8.893e-02, -1.136e-01, -7.585e-02), r2);\n\tr0 = MulAdd(s0_1_0, M4(-1.431e-01, -8.856e-01, -1.800e-02, -3.134e-02, -7.293e-02, -2.156e-01, 1.660e-03, 2.090e-02, 2.647e-01, 7.340e-03, 1.372e-01, 1.324e-01, 4.186e-02, 8.781e-02, 2.679e-02, 6.710e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-2.023e-02, -5.685e-01, -2.805e-01, 1.028e-01, 3.799e-02, 3.429e-02, 3.215e-02, -3.480e-02, 4.155e-01, 4.517e-01, 3.052e-01, 4.466e-01, -8.590e-02, -5.328e-02, 1.420e-01, -1.434e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(5.193e-02, 2.826e-02, 1.665e-01, -2.806e-02, 5.149e-02, 9.260e-02, -1.110e-01, 1.163e-01, -8.487e-02, -7.128e-02, 2.979e-01, -1.580e-01, 4.798e-02, 2.079e-02, -7.733e-02, 3.354e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(1.047e-01, -5.962e-01, 5.820e-02, -7.738e-02, 5.410e-01, 3.181e-02, -1.573e-02, 7.027e-02, 5.748e-02, -1.923e-01, 7.301e-02, 1.479e-01, 1.306e-01, -4.845e-02, 2.518e-01, -3.623e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(6.321e-02, 3.761e-02, 2.010e-01, -1.364e-01, 3.390e-01, -1.184e-01, -3.796e-01, 8.079e-01, -6.100e-02, -3.467e-01, 2.407e-01, 6.632e-01, 1.479e-01, -1.663e-01, -3.796e-01, 6.408e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.922e-01, -1.099e-01, -1.372e-01, -2.865e-01, -2.607e-01, 2.608e-01, -3.294e-01, -4.561e-01, 2.533e-01, -1.393e-01, -1.968e-02, -2.260e-01, -9.535e-02, -2.904e-01, 4.539e-02, 1.962e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(4.202e-02, -3.441e-01, -5.041e-03, 6.145e-02, -3.193e-01, -8.410e-02, 1.436e-02, -8.656e-01, -7.106e-02, -2.674e-01, 5.246e-03, -1.115e-01, 2.656e-02, 7.308e-02, -3.231e-02, 3.213e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(8.666e-02, -1.030e-02, 1.127e-01, -1.118e-01, 5.768e-03, -9.184e-02, -3.923e-01, -1.075e-01, 5.027e-02, -3.824e-02, -9.206e-02, -2.105e-03, 1.086e-02, -1.059e-01, 1.138e-01, -3.379e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.336e-02, -9.546e-02, 5.256e-02, -2.549e-01, 3.018e-01, 4.872e-01, 2.351e-01, -1.239e-01, 5.555e-02, 1.087e-01, 3.377e-02, -1.048e-01, 1.470e-02, 1.461e-01, 3.523e-02, 7.192e-04), r2);\n\tr0 = MulAdd(s0_2_0, M4(-5.178e-03, -1.025e-01, -2.115e-02, 6.963e-03, 5.296e-02, 2.358e-01, 8.896e-03, 2.767e-02, 2.588e-04, -3.482e-01, 5.441e-03, 6.959e-02, 3.456e-02, -6.226e-02, 2.074e-02, -2.594e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(7.487e-02, 1.926e-01, 1.372e-01, 1.103e-01, 8.974e-02, 1.338e-03, 3.621e-01, 1.107e-01, 1.989e-01, 4.757e-01, 1.753e-01, 2.757e-01, 2.485e-02, 3.196e-02, -1.901e-02, -1.550e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-2.344e-02, -7.446e-02, 1.229e-01, 9.867e-03, -4.147e-02, 5.022e-03, 3.727e-02, -1.014e-02, -4.265e-02, -2.538e-02, 1.716e-01, -4.235e-02, -4.406e-02, -2.428e-03, 2.516e-02, 3.334e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(6.321e-02, -9.709e-02, -3.168e-02, 3.881e-02, 7.005e-02, -1.165e-01, 3.065e-01, 1.001e-01, -3.002e-02, -4.404e-01, 4.678e-02, 1.850e-01, -2.144e-02, 6.650e-02, -6.158e-02, -7.892e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.411e-01, 3.582e-02, 5.495e-02, 2.354e-01, -2.686e-01, -7.208e-01, 2.408e-01, -4.971e-01, 9.059e-02, -3.666e-02, 2.021e-01, 3.297e-01, -8.278e-02, -1.104e-01, 8.389e-03, -1.223e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-4.799e-02, -1.045e-01, 5.626e-02, 7.385e-03, 1.380e-01, 1.744e-01, -1.752e-01, 1.615e-01, -1.701e-02, -2.029e-02, 1.421e-01, -9.601e-02, 6.468e-02, 2.879e-02, -4.902e-02, -8.367e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(-2.225e-02, -1.595e-01, -4.593e-02, 4.723e-02, 8.864e-02, -1.375e-01, 5.149e-02, -8.715e-03, -3.479e-02, -6.187e-02, 8.630e-03, 9.938e-02, 1.695e-02, -6.475e-02, 1.606e-03, 4.977e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(2.498e-02, 6.952e-02, 2.386e-02, 1.137e-01, -1.556e-02, -2.305e-03, 1.508e-01, -1.112e-01, 1.222e-01, 5.966e-02, 7.608e-03, 6.850e-03, 2.194e-02, 7.293e-02, 4.140e-02, -1.049e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(-4.498e-02, 4.627e-02, 2.575e-02, -8.819e-02, 2.506e-02, -2.998e-01, 2.183e-01, 3.620e-02, 3.638e-03, 4.575e-02, 1.408e-01, -5.385e-02, -6.157e-03, -1.606e-02, -5.590e-02, 4.172e-03), r2);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n}\n\n//!PASS 4\n//!DESC conv3 (12x12)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2\n//!OUT T3, T4, T5\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.107e-02, -7.586e-03, 1.055e-01, -1.436e-02, -1.937e-02, 1.235e-02, -1.291e-02, -4.964e-03, -4.749e-02, 8.916e-02, -5.278e-02, -4.107e-02, -1.112e-01, 5.605e-02, -1.426e-01, 5.483e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.175e-02, -6.420e-02, -1.851e-02, 2.728e-02, -3.537e-02, 1.209e-02, -3.933e-03, -5.783e-02, -6.833e-02, 6.540e-02, 4.688e-02, -2.901e-02, 1.201e-02, -1.721e-02, 6.334e-02, 8.846e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-9.284e-02, -3.249e-02, -2.467e-02, 2.212e-02, -1.087e-02, -3.703e-02, 1.593e-03, -3.284e-03, 1.538e-01, -1.921e-02, 1.327e-02, -9.015e-02, -1.552e-03, 6.812e-02, 9.520e-02, -1.498e-02), r2);\n\tr0 = MulAdd(s0_0_1, M4(1.339e-01, 3.130e-02, 2.163e-01, -5.306e-03, -1.323e-02, -1.457e-01, 1.654e-02, -1.088e-01, -5.421e-02, -1.098e-02, -1.141e-02, 2.206e-02, 8.031e-02, -1.577e-01, 1.933e-02, 3.560e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(4.372e-02, -9.601e-02, -1.303e-02, 3.410e-02, 5.823e-02, -3.635e-03, -2.811e-02, -1.210e-02, 3.595e-02, 5.528e-01, 2.332e-01, -7.283e-02, 1.353e-01, 1.489e-01, -7.819e-02, 3.119e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-1.645e-01, -1.023e-01, -7.464e-02, 7.838e-02, 1.174e-02, -1.126e-01, -7.492e-02, -1.587e-01, 6.317e-01, -8.793e-03, -1.082e-02, 1.250e-01, 6.958e-02, 7.400e-02, 2.525e-02, 1.143e-01), r2);\n\tr0 = MulAdd(s0_0_2, M4(8.408e-03, 2.266e-02, -6.888e-03, 8.242e-03, -7.029e-02, -2.028e-01, 2.035e-01, -4.202e-03, 3.821e-03, 1.425e-01, -2.011e-02, -7.842e-02, -2.531e-02, -7.025e-02, 7.411e-02, -1.875e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(8.579e-03, 6.018e-02, -3.286e-02, -1.822e-02, -8.032e-02, -1.984e-02, 2.641e-02, 2.281e-02, -6.372e-02, -2.290e-02, -8.482e-03, 2.069e-02, 3.086e-02, 2.962e-02, -4.787e-03, 3.542e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(-8.781e-03, 1.992e-02, -2.689e-02, 1.677e-03, 7.394e-02, -6.466e-02, 3.778e-02, 1.010e-01, 2.537e-02, -9.397e-02, 7.088e-02, -1.665e-01, 4.651e-03, 1.024e-02, 2.075e-02, -1.922e-02), r2);\n\tr0 = MulAdd(s0_1_0, M4(-2.070e-02, -1.197e-01, -1.990e-01, 1.231e-02, -6.372e-02, -6.034e-02, 2.702e-02, -1.255e-02, 6.392e-03, -9.508e-02, -6.023e-02, -4.258e-02, 1.364e-01, -5.254e-01, -4.302e-03, -2.192e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-3.606e-03, -5.297e-02, 6.144e-02, -1.684e-01, -8.938e-03, 5.772e-03, -1.082e-01, -6.488e-02, -1.899e-02, 5.163e-02, -1.401e-01, 1.037e-02, 1.125e-01, 1.096e-01, -1.148e-01, 9.304e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-7.149e-02, -9.924e-03, 1.299e-01, 8.492e-03, 2.227e-02, -1.012e-01, -1.973e-02, -5.824e-03, -9.158e-02, -1.057e-01, -1.659e-01, -5.627e-02, -2.326e-02, -9.287e-02, -1.670e-01, 1.088e-01), r2);\n\tr0 = MulAdd(s0_1_1, M4(-1.518e-01, -2.740e-01, -6.935e-01, -1.679e-01, -1.432e-01, 2.338e-01, -8.023e-02, -1.140e-01, -1.375e-01, 2.449e-02, -1.096e-01, -2.695e-03, -2.931e-02, -1.313e-01, -2.825e-01, 7.026e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.160e-01, -1.034e-02, -1.199e-01, 2.998e-01, 1.962e-02, -7.827e-02, 1.704e-02, 5.374e-02, -2.662e-01, -5.043e-02, 1.392e-01, -2.031e-01, 6.656e-01, 3.125e-01, -5.106e-02, 5.728e-03), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.480e-01, -1.646e-01, 3.587e-01, -2.959e-01, -1.096e-01, 2.173e-01, 1.086e-01, 2.301e-02, -2.055e-01, -1.023e-01, -3.057e-01, -3.379e-02, -3.048e-02, 9.778e-01, 4.615e-03, 6.197e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(2.588e-01, -3.288e-01, 9.400e-02, 7.456e-02, 2.543e-02, 4.895e-02, -2.193e-01, 6.066e-02, -1.181e-01, 2.286e-01, 6.175e-02, -7.397e-02, -7.838e-03, 1.137e-03, -1.181e-01, -6.617e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(1.842e-02, 8.958e-02, 1.316e-02, -5.750e-02, -1.043e-01, -3.054e-03, -9.471e-03, -6.891e-02, 2.555e-02, -3.034e-02, -1.053e-02, 1.855e-02, -2.007e-02, -5.271e-02, 6.118e-03, 1.266e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.210e-02, -1.167e-01, 1.382e-02, 1.627e-01, -1.266e-01, -2.627e-01, 2.117e-02, -1.223e-01, -9.070e-02, 1.132e-01, -6.055e-02, -1.080e-01, -2.421e-02, 7.482e-04, 1.048e-02, -5.972e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(3.911e-03, 1.750e-02, 3.922e-02, -3.796e-03, -5.522e-02, 1.230e-02, -8.789e-02, 5.378e-03, 3.127e-02, 3.381e-02, 7.570e-03, 1.247e-02, -5.024e-02, 3.352e-02, -2.474e-02, 7.495e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(8.937e-03, 4.326e-03, 1.981e-02, 1.906e-02, -9.892e-03, 8.998e-03, -3.625e-02, -2.925e-03, 4.852e-03, 2.366e-02, 2.068e-02, -4.590e-03, 7.019e-04, 1.655e-02, -9.594e-03, -2.051e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.946e-02, -1.403e-02, -1.421e-01, -2.727e-03, 1.774e-02, -1.743e-02, 6.418e-04, -2.003e-02, -3.121e-03, -3.113e-02, -8.674e-02, -3.256e-03, -9.932e-03, 8.046e-02, -1.812e-01, -1.974e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(3.081e-02, 5.413e-03, 1.586e-02, -1.679e-02, -9.400e-02, -6.284e-02, 6.014e-03, -9.848e-03, 3.195e-03, -1.555e-01, 2.866e-02, 2.664e-03, 5.300e-02, 4.296e-02, -2.273e-02, 4.507e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(2.702e-02, 3.059e-02, 3.240e-03, 5.093e-03, -6.727e-03, -2.836e-02, -3.437e-02, -7.645e-03, 4.881e-03, 3.384e-03, -3.083e-04, -4.348e-02, 5.041e-02, 5.575e-03, -2.038e-02, 3.181e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(3.636e-02, 2.582e-02, -4.149e-01, 2.337e-02, 3.897e-02, -1.143e-01, 1.140e-02, -1.659e-03, 3.214e-04, -2.628e-03, 1.069e-01, 1.670e-02, 7.095e-03, 1.710e-01, -2.429e-01, 5.219e-03), r2);\n\tr0 = MulAdd(s0_2_2, M4(2.787e-02, -1.218e-01, -2.105e-01, 3.781e-02, -3.321e-02, -1.218e-01, -8.400e-02, -4.572e-02, -2.062e-02, -7.611e-03, 2.473e-02, -4.654e-02, 3.235e-02, 2.067e-03, 1.666e-02, 4.527e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-4.722e-02, -2.555e-03, 1.898e-02, -7.150e-03, -6.128e-03, 1.068e-02, -1.393e-02, 1.358e-02, 1.644e-02, 1.067e-02, -2.074e-02, -4.161e-03, 1.391e-02, 2.161e-03, -3.010e-03, -6.476e-05), r1);\n\tr2 = MulAdd(s0_2_2, M4(-4.064e-02, -3.059e-02, -1.303e-01, -3.093e-02, -5.691e-03, -4.066e-03, -7.393e-02, 7.505e-03, -1.580e-02, 1.775e-03, -6.956e-02, -1.591e-02, 1.212e-02, 6.518e-02, -5.630e-02, 2.264e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(3.086e-02, 6.044e-02, -6.380e-02, 3.153e-02, -1.003e-02, -8.727e-03, 4.148e-03, 4.175e-03, 2.275e-02, -2.464e-02, 1.069e-01, -7.403e-03, 3.923e-04, -9.897e-02, -3.999e-02, -1.076e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(5.753e-02, -9.432e-03, 5.047e-02, 9.986e-02, -7.449e-03, -8.126e-03, -2.703e-02, -7.128e-02, -3.009e-02, -1.906e-02, -3.597e-03, -2.820e-02, 6.181e-02, -3.942e-02, 2.125e-02, 7.000e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(7.374e-02, 4.773e-02, -2.306e-02, 1.252e-02, -5.479e-02, -1.884e-02, 1.691e-02, 1.709e-02, 8.239e-02, 2.584e-02, -1.340e-02, -4.977e-02, -3.922e-02, 9.837e-03, -1.908e-02, -1.885e-02), r2);\n\tr0 = MulAdd(s1_0_1, M4(5.381e-02, 1.995e-01, -4.267e-01, 9.627e-02, -5.954e-02, -1.321e-01, 2.922e-02, -1.440e-01, 4.046e-02, -1.489e-01, 3.512e-02, -4.719e-03, -9.003e-04, -4.500e-02, -8.684e-02, -3.749e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.070e-01, 4.641e-02, 4.013e-03, -8.420e-02, -8.225e-02, -8.093e-02, -8.456e-02, -2.291e-01, 4.060e-02, -5.871e-02, -3.366e-02, 1.083e-02, -1.111e-01, 2.277e-02, -3.886e-04, -6.764e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(7.558e-02, 1.077e-01, 4.945e-02, 1.812e-01, -1.577e-01, -1.743e-01, 2.314e-02, -2.517e-01, -9.714e-02, -1.282e-02, -2.545e-02, 3.826e-02, -1.095e-01, -1.265e-01, 2.556e-02, 5.869e-02), r2);\n\tr0 = MulAdd(s1_0_2, M4(9.103e-02, 8.952e-02, 3.866e-02, 7.600e-02, -1.081e-01, -1.946e-01, -4.214e-03, -1.597e-01, -8.372e-02, 6.776e-03, 1.246e-01, 1.044e-02, 5.902e-03, 6.204e-02, -6.617e-02, -1.837e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(4.165e-02, -1.604e-02, -4.236e-02, 6.721e-02, -1.311e-01, -4.814e-02, 4.841e-06, -1.708e-02, -2.865e-02, 1.424e-02, 1.347e-02, -7.547e-03, -1.101e-02, -2.264e-02, -2.020e-02, 1.034e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(6.566e-02, 5.067e-02, 3.788e-02, -1.026e-01, -9.318e-02, -1.250e-01, 1.854e-02, -3.100e-01, 4.224e-02, -3.578e-02, 3.523e-03, -1.348e-02, -3.052e-02, 1.595e-03, 1.156e-02, -1.072e-01), r2);\n\tr0 = MulAdd(s1_1_0, M4(-4.826e-03, 1.563e-02, 1.743e-01, -3.129e-02, -8.834e-03, -6.834e-02, -1.232e-01, 9.740e-04, -2.307e-02, 1.343e-01, -1.614e-02, -3.587e-02, 2.912e-02, 7.655e-02, 1.023e-01, -2.615e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-5.634e-02, 1.706e-02, 8.134e-02, 1.256e-01, 5.752e-03, -6.141e-03, 2.510e-03, -4.749e-02, -3.770e-02, -4.273e-03, -2.957e-02, -1.401e-01, -2.186e-02, -3.266e-02, 1.800e-02, 4.675e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(5.656e-02, 2.103e-02, -1.542e-02, -1.761e-02, 4.098e-02, 4.337e-02, -2.259e-02, -3.915e-03, -9.476e-02, -5.481e-02, 4.218e-02, 3.457e-02, 9.828e-03, 7.507e-02, 2.726e-04, -5.194e-02), r2);\n\tr0 = MulAdd(s1_1_1, M4(4.795e-01, 6.816e-02, 4.811e-01, 4.776e-01, -1.241e-01, -4.053e-01, -4.209e-01, -2.466e-01, -2.505e-01, 4.076e-01, -7.223e-02, -1.150e-01, 1.489e-01, -4.823e-02, 3.995e-01, 8.227e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(3.047e-01, 1.218e-01, 2.891e-02, -5.873e-03, -1.634e-01, -7.559e-03, -7.886e-02, -1.715e-01, -5.829e-02, -3.403e-02, 9.464e-02, 2.227e-02, 2.013e-03, -2.198e-02, -6.740e-02, -1.181e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(3.447e-01, 1.530e-01, -2.682e-01, 2.229e-01, -7.700e-02, -2.464e-01, -8.120e-02, -7.553e-02, -1.184e-01, 1.224e-01, 1.276e-01, -2.222e-01, 3.412e-02, -1.485e-01, -2.091e-02, 3.864e-02), r2);\n\tr0 = MulAdd(s1_1_2, M4(-1.460e-02, -7.522e-02, 2.366e-01, -2.705e-01, -1.382e-01, -3.372e-01, -2.803e-01, -4.135e-01, 4.720e-02, 1.969e-01, -1.996e-02, 9.691e-04, -5.822e-03, -1.110e-01, 1.056e-01, -1.411e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.918e-02, -1.675e-01, -2.338e-02, 1.073e-02, -1.116e-01, -1.075e-01, -4.731e-05, -3.597e-02, -3.186e-02, 1.848e-02, 2.892e-02, -1.834e-02, -6.714e-02, -9.574e-03, -2.808e-02, -1.129e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(6.185e-02, 1.610e-01, -4.552e-02, -6.520e-02, 3.802e-03, -3.092e-01, -1.752e-01, -2.075e-01, 8.186e-03, -9.269e-02, 7.484e-03, 4.464e-02, 1.965e-02, -1.146e-01, -4.780e-02, -3.162e-02), r2);\n\tr0 = MulAdd(s1_2_0, M4(-1.464e-03, 2.867e-02, 2.153e-02, 2.619e-02, 8.161e-03, 5.917e-02, 7.142e-02, -4.458e-03, -1.235e-02, -1.235e-01, -3.510e-02, -4.025e-03, 1.425e-02, -2.119e-02, -4.404e-02, -3.654e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-3.063e-03, 3.779e-03, -3.588e-02, -9.254e-03, 4.911e-03, 4.424e-04, 1.341e-02, -2.043e-02, -2.959e-03, -1.245e-02, 3.236e-02, -2.628e-02, -2.706e-02, 2.034e-03, -1.953e-03, -3.398e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.393e-02, 1.281e-02, 1.345e-01, 1.494e-02, -7.099e-03, -3.379e-03, 1.050e-04, -5.785e-03, -5.815e-04, -3.439e-02, -1.386e-02, 1.174e-03, -2.508e-02, -6.662e-02, 2.586e-02, -1.334e-02), r2);\n\tr0 = MulAdd(s1_2_1, M4(-2.422e-03, 1.762e-03, 1.537e-01, 4.732e-03, -4.987e-05, -7.367e-04, 1.012e-01, -2.300e-02, -1.262e-02, -5.584e-02, -3.598e-02, -1.109e-01, 1.838e-02, 4.078e-02, -4.883e-02, 2.328e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(2.368e-02, -4.773e-02, 5.405e-02, 1.563e-02, 9.718e-03, 1.256e-02, -2.327e-02, -2.678e-02, 1.803e-02, -4.577e-02, -1.029e-02, -2.792e-02, -4.075e-02, 4.649e-02, 7.044e-03, 1.674e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-3.104e-03, 7.276e-02, 1.396e-01, 5.411e-02, 1.272e-02, 4.861e-02, 4.675e-02, -2.675e-02, -3.754e-02, -2.884e-02, -1.201e-01, -6.665e-02, -5.889e-02, 7.083e-02, 8.424e-02, -5.200e-02), r2);\n\tr0 = MulAdd(s1_2_2, M4(-2.949e-02, 1.582e-01, -6.209e-02, -2.691e-03, 3.133e-02, 2.802e-02, 9.327e-02, -1.352e-02, -1.829e-02, -1.135e-01, -5.252e-02, 1.193e-02, 1.413e-02, 1.626e-01, -1.606e-01, -9.994e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(5.357e-02, -3.828e-02, 2.018e-02, 6.172e-03, -4.574e-03, 3.028e-03, 6.879e-03, -1.936e-02, -3.342e-02, 3.382e-02, -1.554e-02, -8.174e-04, -4.675e-02, 2.051e-02, 8.388e-03, -1.765e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-5.915e-03, 1.033e-01, 7.604e-02, 8.160e-03, 2.664e-02, -2.366e-02, 1.364e-02, -1.858e-02, -1.601e-02, -5.542e-02, -7.658e-02, 7.924e-03, 6.480e-03, -1.109e-01, 4.260e-02, -2.556e-02), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(4.575e-02, -1.303e-02, 1.647e-02, 4.558e-02, 7.628e-03, -5.689e-02, 8.225e-04, 3.511e-02, -1.249e-02, -1.358e-01, -9.305e-02, 2.464e-02, -5.438e-03, 7.792e-02, -1.668e-02, 3.338e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-8.441e-03, -5.848e-02, 3.524e-02, 3.909e-02, -1.872e-02, -4.137e-02, -8.175e-02, -2.178e-02, -1.308e-02, 6.602e-02, -9.989e-02, -9.377e-03, -1.340e-02, 1.172e-03, -2.914e-03, -9.421e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-2.569e-02, 6.342e-02, -2.181e-02, 8.972e-03, -9.789e-02, 3.871e-02, -1.178e-03, 2.976e-02, -1.198e-01, 8.030e-04, 4.747e-02, 6.748e-02, 7.651e-02, -1.169e-02, 3.881e-02, 8.129e-02), r2);\n\tr0 = MulAdd(s0_0_1, M4(1.646e-01, -5.599e-02, 1.693e-02, -2.750e-02, 4.108e-02, -1.110e-01, 5.907e-02, 4.678e-03, -1.023e-01, -1.698e-01, -3.326e-01, -1.734e-02, -6.010e-02, 1.997e-01, -1.813e-01, -1.152e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(3.248e-02, -1.509e-01, -6.375e-02, 3.075e-02, 8.716e-02, 4.064e-02, -2.780e-02, 1.797e-02, -1.597e-01, -1.439e-01, -3.406e-02, -7.890e-02, -1.409e-02, 1.361e-01, -3.307e-02, -9.093e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-2.140e-01, 6.902e-02, -6.323e-02, 2.530e-02, 2.653e-02, -3.867e-02, -1.353e-02, 7.301e-02, -1.531e-01, -7.432e-02, -6.258e-03, -2.466e-01, 1.024e-01, -8.151e-03, -2.193e-02, -1.013e-01), r2);\n\tr0 = MulAdd(s0_0_2, M4(5.234e-02, -6.414e-02, -2.460e-02, 6.617e-02, -3.850e-02, -3.153e-02, 6.890e-02, -5.428e-03, -3.260e-02, -6.421e-02, -2.691e-02, 1.642e-02, -2.241e-02, 8.234e-02, -9.737e-02, -9.072e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(4.433e-02, -9.558e-04, 7.463e-03, -1.860e-02, -4.637e-04, 4.377e-03, -5.919e-02, 1.210e-02, -3.575e-02, 4.992e-03, -9.182e-04, 1.632e-04, 1.850e-02, 1.971e-02, -1.203e-02, 3.781e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(4.936e-03, 7.935e-02, -5.899e-02, 1.034e-01, -3.919e-02, 7.293e-03, 4.211e-02, -6.380e-02, 3.799e-03, -4.941e-03, -2.778e-02, -3.050e-02, -5.322e-03, -8.648e-03, -3.967e-02, -1.065e-02), r2);\n\tr0 = MulAdd(s0_1_0, M4(-3.355e-02, -9.236e-02, -2.431e-02, -6.998e-03, 2.729e-02, 2.017e-01, -6.535e-02, -6.018e-02, 1.071e-01, -5.317e-03, -5.115e-02, 9.426e-02, 1.571e-01, -5.227e-02, 1.899e-01, 1.483e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(2.010e-02, 2.715e-02, 5.580e-02, 5.982e-02, 1.101e-01, 2.366e-02, 1.834e-01, 4.523e-01, 4.161e-02, 2.628e-02, -1.582e-01, 1.283e-01, -3.506e-02, 6.232e-02, -1.724e-01, -5.436e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.206e-01, 3.211e-03, -3.895e-02, 1.111e-01, 1.068e-01, 1.286e-01, 1.677e-02, -5.113e-02, -8.345e-03, -3.459e-02, -1.639e-01, 5.873e-02, 2.421e-01, -2.482e-01, -1.268e-01, 5.117e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(-1.899e-01, 2.738e-01, -2.686e-01, -3.918e-02, 1.457e-01, 6.777e-01, -1.027e-01, 6.352e-01, -4.135e-01, -4.998e-01, -4.013e-01, -6.113e-01, -6.604e-02, -2.191e-01, 6.314e-01, -3.508e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.350e-01, -1.856e-01, 4.200e-01, 1.581e-01, 6.316e-03, 3.760e-01, 4.197e-03, 1.185e-02, -3.487e-01, -2.013e-01, -9.255e-02, -5.802e-02, 3.708e-01, -7.836e-02, -2.751e-02, 1.673e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.733e-01, 3.196e-01, 5.139e-02, -4.092e-01, -2.125e-01, 4.265e-01, 7.144e-02, 5.443e-01, -2.156e-01, -7.291e-01, -4.405e-01, -2.054e-01, 8.668e-02, 1.603e-01, 4.263e-02, 1.288e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(1.198e-01, -2.055e-02, -9.637e-02, 1.353e-01, -3.969e-02, 9.572e-02, -1.411e-01, -4.163e-02, 2.984e-03, -2.090e-01, -1.206e-01, -1.126e-01, 3.327e-02, 7.082e-02, 1.840e-01, 6.029e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.336e-02, 4.718e-03, -4.423e-03, -7.106e-02, 8.021e-02, 3.360e-03, -5.629e-02, 3.820e-02, -7.984e-02, 1.774e-02, 2.236e-02, -2.164e-02, 1.110e-02, 8.130e-02, 2.679e-02, -1.682e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-2.772e-02, -3.586e-02, -5.038e-02, 2.683e-01, 1.165e-02, 6.472e-02, -2.486e-02, -1.365e-02, -8.500e-03, -1.515e-01, 2.658e-02, -1.116e-01, 1.635e-02, -3.678e-02, 1.738e-02, 8.708e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(-3.010e-02, -3.432e-02, 6.656e-03, 2.443e-02, -1.277e-02, -2.407e-01, 9.988e-02, -1.392e-02, -4.173e-03, -2.949e-02, -1.002e-01, -4.650e-03, -3.556e-03, 2.154e-01, -5.911e-02, 7.693e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(2.181e-02, -4.800e-02, 3.820e-02, 7.920e-03, -8.800e-03, -6.165e-03, -1.032e-01, 1.155e-01, -2.153e-02, -2.463e-02, 1.150e-02, 6.907e-02, -1.439e-02, -4.144e-03, -2.407e-02, -5.085e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(3.500e-02, -3.716e-02, 1.244e-01, -1.066e-02, -7.304e-02, 2.348e-02, -2.122e-02, -1.773e-02, -5.508e-03, -3.846e-02, -1.573e-02, -1.726e-02, -4.657e-02, -3.351e-02, 6.313e-02, 4.749e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(8.042e-02, -3.736e-02, 2.085e-01, -7.492e-02, 1.772e-01, -4.333e-01, 2.667e-01, 1.451e-01, 3.622e-02, 4.003e-02, -2.270e-03, 4.168e-02, -5.973e-02, 1.137e-01, -1.507e-01, 7.772e-03), r0);\n\tr1 = MulAdd(s0_2_1, M4(-5.197e-04, -9.347e-02, 3.764e-02, -2.294e-02, 1.107e-01, 1.018e-01, -7.931e-02, -4.964e-02, -2.368e-03, 3.294e-03, -1.165e-02, -1.509e-02, -4.021e-03, -1.438e-02, -6.825e-03, -7.611e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(6.421e-02, 1.641e-02, 3.321e-01, 9.427e-02, 1.332e-02, 2.332e-02, 5.218e-02, 1.769e-02, 1.407e-02, -4.560e-02, 6.187e-02, 3.204e-02, -8.659e-02, 5.799e-02, 4.971e-02, -3.703e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(1.112e-02, -1.842e-01, -4.613e-04, 6.763e-02, 1.931e-02, 2.643e-02, -3.419e-02, 1.110e-02, -3.941e-02, -2.481e-02, 9.748e-03, -1.104e-02, -7.950e-02, -1.714e-02, 1.864e-02, -7.010e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(5.141e-04, 3.225e-03, -2.421e-02, -5.770e-03, -3.196e-04, 3.591e-02, -7.955e-03, 1.768e-02, 2.527e-02, 5.602e-03, -3.657e-05, -3.184e-03, -1.418e-02, -1.411e-02, 3.785e-03, -2.365e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-5.580e-03, 2.147e-02, -4.131e-04, -1.341e-02, -2.178e-02, 5.021e-02, -7.742e-02, 5.077e-03, 7.879e-03, -5.747e-03, -5.748e-03, 2.104e-02, -2.098e-02, -1.082e-01, 5.710e-02, -2.693e-02), r2);\n\tr0 = max(r0, 0.0);\n\tT3[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT4[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT5[gxy] = r2;\n}\n\n//!PASS 5\n//!DESC out-shuffle (12x12)\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, T3, T4, T5\n//!OUT OUTPUT\n\n#define L0(x, y) V4(O(T3, x, y))\n#define L1(x, y) V4(O(T4, x, y))\n#define L2(x, y) V4(O(T5, x, y))\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 sz = GetOutputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(3.649e-02, 1.267e-02, 4.848e-03, 2.940e-03, -3.259e-02, 2.198e-04, -9.186e-05, 1.090e-03, 1.955e-02, 8.323e-03, 1.324e-03, 5.348e-04, 1.177e-02, -1.382e-02, 6.349e-03, 6.892e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(3.293e-02, 8.361e-03, 7.100e-03, 5.136e-03, -2.580e-02, 4.916e-04, 5.475e-03, 3.720e-03, 1.879e-02, 1.013e-02, -9.190e-04, 1.354e-03, 3.925e-03, -1.645e-02, 1.127e-03, 4.303e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(3.140e-02, 8.063e-03, 5.289e-03, 3.504e-03, -3.088e-02, -3.240e-03, 8.619e-04, 2.911e-03, 2.015e-02, 9.006e-03, 6.708e-04, 8.780e-04, 1.363e-02, -1.226e-02, 5.350e-03, 7.128e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(7.054e-02, 8.278e-02, -3.179e-03, 9.012e-03, -2.488e-02, -6.064e-02, -3.145e-03, -4.453e-03, 3.699e-02, 3.210e-02, -8.079e-03, -2.374e-03, 4.016e-02, -2.186e-02, 2.661e-03, 4.975e-04), r0);\n\tr1 = MulAdd(s0_0_1, M4(8.683e-02, 9.448e-02, -7.279e-04, 1.391e-02, -1.980e-02, -5.039e-02, -1.817e-03, -8.500e-04, 4.384e-02, 3.551e-02, -1.115e-02, -7.844e-03, 4.207e-02, -1.575e-02, 4.690e-03, 3.812e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(7.143e-02, 7.688e-02, -3.166e-03, 8.715e-03, -1.864e-02, -4.970e-02, 8.271e-04, -2.569e-03, 4.066e-02, 3.623e-02, -7.627e-03, -3.900e-03, 3.829e-02, -2.454e-02, 4.838e-04, 3.928e-03), r2);\n\tr0 = MulAdd(s0_0_2, M4(3.056e-03, 6.618e-03, 1.521e-03, 1.808e-03, -2.887e-03, 7.904e-03, 5.072e-03, 8.868e-03, 8.465e-03, 2.557e-02, 2.123e-03, -1.355e-03, -3.400e-03, -6.258e-03, -5.813e-03, 4.951e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(9.674e-04, 7.169e-03, -9.318e-05, 2.588e-04, -4.327e-03, 9.406e-03, 6.707e-03, 1.029e-02, 7.812e-03, 2.741e-02, 1.521e-03, -2.425e-03, -3.683e-03, -2.941e-03, -6.710e-03, 5.674e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(7.345e-04, 5.514e-03, 3.927e-04, 5.108e-04, -4.032e-03, 7.091e-03, 4.503e-03, 8.828e-03, 7.367e-03, 2.588e-02, 1.165e-03, -8.657e-04, -1.848e-03, -7.516e-04, -5.574e-03, 4.390e-03), r2);\n\tr0 = MulAdd(s0_1_0, M4(-1.274e-01, 1.575e-02, -9.426e-02, -8.019e-03, 1.084e-01, -4.380e-03, -1.091e-01, 1.305e-02, -8.959e-02, -7.260e-03, 9.644e-02, -1.216e-02, 7.315e-03, -4.327e-02, 6.519e-02, 2.265e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.373e-01, 1.083e-02, -1.173e-01, -2.136e-02, 1.150e-01, -5.500e-03, -1.170e-01, 1.750e-02, -1.004e-01, -5.310e-03, 9.936e-02, -1.228e-02, -1.210e-03, -5.261e-02, 7.444e-02, 2.939e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.111e-01, 1.698e-02, -9.345e-02, -1.209e-02, 1.052e-01, -4.066e-03, -1.105e-01, 1.081e-02, -9.102e-02, -5.239e-03, 9.448e-02, -7.886e-03, 6.231e-03, -4.456e-02, 6.664e-02, 2.457e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(4.576e-02, -2.902e-01, 2.036e-01, 3.925e-02, 2.376e-01, 3.427e-01, -2.111e-01, -3.359e-01, -2.842e-01, -2.855e-01, 2.663e-01, 3.365e-01, 6.861e-02, 7.349e-02, 4.268e-01, -5.964e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(4.870e-02, -3.149e-01, 2.388e-01, 4.847e-02, 2.666e-01, 3.804e-01, -2.485e-01, -3.839e-01, -3.213e-01, -3.339e-01, 3.018e-01, 3.721e-01, 8.028e-02, 9.813e-02, 5.032e-01, -6.973e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(3.371e-02, -2.725e-01, 1.978e-01, 3.460e-02, 2.346e-01, 3.311e-01, -2.176e-01, -3.389e-01, -2.862e-01, -2.959e-01, 2.607e-01, 3.235e-01, 6.955e-02, 7.280e-02, 4.209e-01, -5.959e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(8.611e-03, 1.086e-01, -2.495e-03, 3.319e-02, 7.649e-04, 4.040e-02, 7.752e-03, 4.978e-03, 1.688e-03, -9.363e-02, 2.655e-04, 4.584e-02, -1.888e-03, -1.677e-02, -1.173e-02, 8.529e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(8.481e-03, 1.184e-01, -6.932e-03, 3.609e-02, -1.231e-03, 3.974e-02, 1.086e-02, 4.193e-03, 6.263e-03, -9.410e-02, -2.489e-04, 4.999e-02, -4.640e-03, -1.863e-02, -1.589e-02, 1.014e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(8.684e-03, 1.038e-01, -4.633e-03, 3.199e-02, -7.231e-04, 4.093e-02, 9.584e-03, 3.364e-03, 3.721e-03, -9.101e-02, 1.936e-03, 4.898e-02, -3.727e-03, -2.277e-02, -1.341e-02, 9.319e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(2.063e-03, -9.065e-04, -1.640e-02, -7.556e-04, -8.636e-03, -3.449e-03, 1.913e-02, 6.389e-03, 9.046e-03, 5.324e-03, -2.351e-02, -4.512e-03, -3.410e-03, 6.242e-04, -1.773e-02, -5.725e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(5.010e-03, 5.606e-04, -1.183e-02, 1.325e-03, -1.160e-02, -2.834e-03, 1.911e-02, 8.964e-03, 1.037e-02, 4.293e-03, -2.633e-02, -1.096e-02, -4.118e-03, 1.210e-03, -2.187e-02, -5.899e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(4.148e-03, -5.367e-04, -6.102e-03, 2.921e-03, -8.680e-03, -2.034e-03, 2.045e-02, 6.844e-03, 1.089e-02, 5.904e-03, -2.298e-02, -8.141e-03, -3.345e-03, 1.952e-03, -1.883e-02, -5.724e-03), r2);\n\tr0 = MulAdd(s0_2_1, M4(2.445e-03, 2.057e-02, -6.909e-02, -8.473e-02, -1.316e-02, -1.387e-02, 5.458e-03, 2.278e-02, -2.678e-05, -3.519e-03, -4.066e-02, -4.357e-02, -7.242e-03, -2.300e-02, -2.374e-02, 1.128e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(4.510e-03, 2.781e-02, -8.278e-02, -8.541e-02, -1.788e-02, -2.045e-02, 8.962e-03, 2.080e-02, 3.691e-03, 2.532e-03, -2.556e-02, -2.955e-02, -1.097e-02, -2.642e-02, -2.549e-02, 1.467e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(3.449e-03, 2.252e-02, -6.958e-02, -7.446e-02, -1.375e-02, -1.536e-02, 1.138e-02, 2.817e-02, 7.026e-05, 8.622e-05, -3.138e-02, -3.542e-02, -9.417e-03, -2.393e-02, -2.625e-02, 1.501e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(3.338e-03, 2.398e-03, 7.083e-04, -2.175e-03, -8.321e-04, -4.662e-03, 2.974e-03, 4.460e-03, 4.534e-03, 9.738e-03, -3.293e-03, -3.232e-02, -2.063e-04, 1.183e-03, -9.304e-03, -1.422e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.187e-03, -5.434e-03, -1.816e-03, -1.413e-02, -1.572e-03, -6.448e-03, 5.545e-04, 3.751e-03, 4.348e-03, 1.156e-02, -7.057e-03, -3.314e-02, -2.309e-03, -2.305e-03, -1.443e-02, -2.179e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(3.065e-03, -1.384e-03, 1.043e-03, -7.200e-03, -9.168e-04, -4.974e-03, 1.989e-04, 2.794e-03, 4.744e-03, 8.946e-03, -6.008e-03, -3.112e-02, -4.300e-04, -1.165e-03, -1.206e-02, -2.045e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(2.549e-02, 4.367e-03, 5.608e-04, 1.200e-03, -1.287e-02, 5.047e-03, 8.383e-03, -1.765e-04, -2.210e-03, -3.465e-03, -2.028e-03, 1.603e-03, 4.751e-03, -1.158e-03, -3.208e-05, -3.731e-04), r0);\n\tr1 = MulAdd(s1_0_0, M4(2.997e-02, 3.636e-03, -8.542e-04, -2.135e-03, -1.396e-02, 4.782e-03, 8.170e-03, -3.986e-03, -6.762e-03, -5.967e-03, -7.059e-03, -3.220e-04, 4.776e-03, -6.414e-04, -5.108e-05, 9.779e-04), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.561e-02, 2.665e-03, -1.456e-04, -2.758e-04, -9.875e-03, 6.161e-03, 7.842e-03, -2.090e-03, -3.183e-03, -3.612e-03, -4.817e-03, 1.875e-03, 4.482e-03, -1.095e-03, -4.289e-04, 4.106e-04), r2);\n\tr0 = MulAdd(s1_0_1, M4(9.253e-02, 6.472e-02, 4.166e-03, 3.794e-03, -4.317e-02, -7.446e-02, 2.984e-03, 1.125e-02, -6.948e-02, -6.451e-03, 6.715e-03, -1.378e-03, -3.106e-02, 3.054e-02, -9.063e-03, -1.100e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.008e-01, 7.691e-02, 5.583e-03, 5.517e-03, -6.016e-02, -8.481e-02, 4.323e-03, 1.236e-02, -8.373e-02, -1.979e-02, 3.132e-03, -7.485e-03, -3.163e-02, 3.163e-02, -1.084e-02, -1.428e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(8.535e-02, 6.570e-02, 8.216e-04, 4.746e-03, -4.730e-02, -6.811e-02, 5.103e-03, 1.164e-02, -7.006e-02, -1.053e-02, 6.438e-03, -3.761e-03, -2.424e-02, 2.728e-02, -5.191e-03, -1.311e-02), r2);\n\tr0 = MulAdd(s1_0_2, M4(4.272e-03, 1.171e-02, 1.504e-04, -1.811e-03, 7.502e-04, -7.764e-03, 1.157e-03, 2.931e-03, -3.159e-02, -8.366e-02, -1.040e-02, -1.059e-02, -8.510e-03, 1.777e-02, -1.250e-03, -6.204e-04), r0);\n\tr1 = MulAdd(s1_0_2, M4(9.189e-03, 9.195e-03, 3.639e-03, -7.032e-04, -3.508e-04, -1.341e-02, 9.476e-04, 6.953e-03, -3.107e-02, -9.106e-02, -1.359e-02, -1.398e-02, -1.008e-02, 2.833e-02, -2.043e-03, 1.502e-06), r1);\n\tr2 = MulAdd(s1_0_2, M4(4.203e-03, 3.387e-03, 1.814e-03, -3.379e-03, -1.950e-03, -1.608e-02, -9.263e-04, 2.992e-03, -2.396e-02, -7.727e-02, -9.387e-03, -9.091e-03, -6.305e-03, 2.612e-02, -2.590e-03, 8.396e-04), r2);\n\tr0 = MulAdd(s1_1_0, M4(1.082e-01, 1.166e-02, 3.702e-02, 8.232e-03, -1.140e-01, 3.193e-03, -4.505e-02, 1.128e-02, 5.604e-03, 9.793e-03, 4.491e-03, 1.542e-03, 6.539e-04, -1.588e-03, 9.093e-03, -1.020e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.288e-01, 1.298e-02, 5.169e-02, 1.013e-02, -1.121e-01, 5.318e-03, -3.926e-02, 1.733e-02, 1.052e-02, 1.333e-02, 9.750e-03, 4.767e-03, -1.950e-03, -2.209e-03, 8.983e-03, -1.338e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.131e-01, 9.400e-03, 4.090e-02, 6.593e-03, -1.048e-01, 3.937e-03, -3.699e-02, 1.440e-02, 5.949e-03, 1.028e-02, 7.062e-03, 2.203e-03, 2.514e-04, -2.120e-03, 9.723e-03, -1.522e-03), r2);\n\tr0 = MulAdd(s1_1_1, M4(-5.605e-01, 2.549e-01, 1.421e-01, 1.509e-01, 1.440e-01, -1.397e-01, -1.323e-01, -2.007e-01, 2.144e-01, 6.567e-02, 2.001e-02, 3.966e-02, -2.667e-01, -9.279e-03, -2.485e-01, 3.506e-03), r0);\n\tr1 = MulAdd(s1_1_1, M4(-6.581e-01, 3.040e-01, 1.626e-01, 1.810e-01, 1.394e-01, -1.806e-01, -1.812e-01, -2.401e-01, 2.417e-01, 8.400e-02, 3.161e-02, 4.871e-02, -2.973e-01, -1.338e-02, -2.783e-01, 8.701e-04), r1);\n\tr2 = MulAdd(s1_1_1, M4(-5.566e-01, 2.549e-01, 1.313e-01, 1.606e-01, 1.362e-01, -1.480e-01, -1.399e-01, -1.909e-01, 2.013e-01, 6.761e-02, 1.198e-02, 4.056e-02, -2.686e-01, -6.610e-03, -2.493e-01, 5.070e-03), r2);\n\tr0 = MulAdd(s1_1_2, M4(7.800e-03, -1.617e-02, -3.746e-02, -1.099e-01, -4.032e-05, 1.210e-01, 1.592e-03, 4.728e-02, -1.294e-01, -1.396e-02, -1.062e-01, -1.983e-01, 4.018e-03, 2.510e-01, 1.898e-02, 2.978e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(1.311e-02, -7.745e-03, -4.456e-02, -1.386e-01, 8.158e-03, 1.429e-01, 5.130e-03, 4.686e-02, -1.401e-01, 3.352e-03, -1.033e-01, -2.017e-01, 1.604e-02, 2.842e-01, 3.357e-02, 3.506e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.285e-02, -9.625e-03, -3.863e-02, -1.201e-01, 6.254e-03, 1.320e-01, 3.551e-03, 3.693e-02, -1.221e-01, -1.206e-02, -9.002e-02, -1.860e-01, 7.006e-03, 2.388e-01, 2.756e-02, 3.005e-01), r2);\n\tr0 = MulAdd(s1_2_0, M4(-8.718e-03, -1.037e-03, -1.329e-02, 1.026e-02, 1.678e-02, 4.715e-03, -4.187e-02, 5.378e-03, 3.580e-04, 6.569e-04, -4.271e-04, 4.563e-03, -2.292e-03, -2.857e-03, -5.834e-03, -2.351e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-1.338e-02, -3.866e-03, -1.535e-02, 8.542e-03, 2.863e-02, 1.309e-02, -3.109e-02, 8.750e-03, -2.170e-03, -8.912e-04, -2.507e-03, 3.084e-03, -2.319e-03, -2.982e-03, -7.898e-03, -2.932e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.270e-02, -2.163e-03, -1.487e-02, 9.038e-03, 1.595e-02, 7.522e-03, -3.844e-02, 6.488e-03, -2.174e-03, 1.938e-04, -2.853e-03, 3.200e-03, -1.832e-03, -2.598e-03, -6.107e-03, -2.845e-03), r2);\n\tr0 = MulAdd(s1_2_1, M4(1.824e-02, -1.558e-02, -1.185e-01, -5.481e-02, 2.240e-02, 4.109e-02, 1.802e-01, 6.715e-02, 1.371e-02, -2.255e-03, 1.213e-01, 2.423e-02, 6.824e-03, -9.594e-03, -6.067e-02, 1.666e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(2.769e-02, -2.107e-02, -1.284e-01, -6.497e-02, 2.953e-02, 5.188e-02, 2.017e-01, 9.009e-02, 8.118e-03, -1.213e-02, 1.233e-01, 2.002e-02, 8.622e-03, -7.615e-03, -5.872e-02, 2.021e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(2.472e-02, -1.890e-02, -1.135e-01, -5.086e-02, 2.424e-02, 3.811e-02, 1.755e-01, 5.875e-02, 1.317e-02, -9.620e-03, 1.145e-01, 1.699e-02, 3.954e-03, -9.550e-03, -5.993e-02, 1.558e-02), r2);\n\tr0 = MulAdd(s1_2_2, M4(-5.981e-04, 4.059e-03, -8.714e-03, -3.075e-03, 5.228e-04, 1.862e-03, 1.226e-02, 7.729e-02, -4.944e-04, 6.299e-03, -1.920e-03, 8.002e-02, 5.093e-03, 1.857e-02, -1.437e-02, 1.116e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-3.603e-03, 4.258e-03, -9.373e-03, -7.076e-03, 2.955e-03, 6.970e-03, 2.041e-02, 9.448e-02, 5.166e-03, 1.082e-02, 1.821e-03, 9.009e-02, -1.906e-03, 1.419e-02, -2.485e-02, -2.403e-04), r1);\n\tr2 = MulAdd(s1_2_2, M4(-2.575e-03, 4.925e-03, -6.162e-03, 2.199e-03, 4.524e-04, 3.943e-03, 1.752e-02, 8.613e-02, 7.730e-04, 1.097e-02, -4.925e-03, 7.983e-02, 2.718e-03, 1.685e-02, -1.953e-02, 1.140e-03), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(9.599e-03, -5.016e-03, -3.751e-03, 1.423e-03, 5.928e-03, -9.551e-03, 6.516e-03, -3.685e-03, 6.215e-02, 1.666e-02, 7.244e-04, 1.196e-03, -1.016e-02, -6.131e-04, -8.095e-03, 1.289e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.171e-02, -5.513e-03, -6.610e-04, 5.199e-03, 2.755e-03, -9.847e-03, 3.484e-03, -1.294e-03, 6.665e-02, 1.713e-02, -7.451e-04, 1.562e-03, -4.163e-03, 4.523e-05, -3.950e-03, 2.652e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(7.309e-03, -7.294e-03, -1.819e-03, 2.978e-03, 3.303e-03, -7.906e-03, 4.938e-03, -2.163e-03, 6.717e-02, 1.636e-02, 1.155e-05, 6.079e-04, -9.176e-03, -1.222e-03, -6.094e-03, 1.064e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(7.154e-02, 6.619e-02, -7.220e-03, -9.588e-03, -7.292e-02, 2.706e-02, -1.423e-03, 1.664e-02, 2.802e-01, 1.987e-01, -4.608e-03, 3.766e-03, 1.110e-02, 1.368e-02, 8.975e-03, -1.317e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(9.001e-02, 8.132e-02, -8.479e-03, -7.574e-03, -7.056e-02, 1.567e-02, -2.455e-03, 9.497e-03, 3.154e-01, 2.305e-01, 1.472e-03, 9.256e-03, 7.881e-03, 2.082e-02, 7.745e-03, -1.118e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(7.677e-02, 6.519e-02, -1.016e-02, -9.067e-03, -6.601e-02, 2.142e-02, -1.993e-04, 1.292e-02, 2.686e-01, 1.968e-01, 7.674e-04, 5.211e-03, 7.613e-03, 1.816e-02, 1.001e-02, -1.292e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(-5.667e-03, 2.517e-02, 4.016e-03, 1.166e-03, -1.490e-03, -4.222e-02, 5.273e-03, -1.030e-02, 9.170e-03, 1.294e-01, 9.419e-03, 2.431e-03, -1.625e-03, 2.290e-02, -9.978e-04, 3.066e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(-8.005e-03, 2.844e-02, 5.040e-03, -2.384e-03, -4.880e-03, -4.365e-02, 4.673e-03, -1.168e-02, 9.111e-03, 1.362e-01, 6.178e-03, -1.300e-03, -7.544e-04, 2.356e-02, -4.943e-04, 1.941e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(-6.818e-03, 2.973e-02, 5.349e-03, -7.071e-04, -2.906e-03, -3.576e-02, 4.842e-03, -8.156e-03, 1.037e-02, 1.267e-01, 6.106e-03, 2.860e-03, -1.352e-04, 2.208e-02, -2.990e-05, 3.815e-03), r2);\n\tr0 = MulAdd(s0_1_0, M4(2.936e-02, -1.010e-02, 2.243e-02, -5.835e-03, 2.910e-02, -8.258e-03, 7.983e-02, -1.305e-02, -2.666e-02, -8.679e-03, -2.713e-02, -5.938e-03, 9.108e-02, 2.618e-02, 3.208e-02, -1.978e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(3.179e-02, -9.036e-03, 1.334e-02, -1.131e-02, 3.446e-02, -8.594e-03, 8.814e-02, -1.492e-02, -3.660e-02, -1.740e-02, -2.798e-02, -9.896e-03, 1.040e-01, 4.165e-02, 3.445e-02, -1.639e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(2.957e-02, -6.531e-03, 1.104e-02, -9.064e-03, 3.035e-02, -6.823e-03, 8.017e-02, -1.229e-02, -2.784e-02, -1.198e-02, -2.232e-02, -6.417e-03, 7.983e-02, 3.034e-02, 2.850e-02, -1.837e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(-4.597e-01, -1.145e-01, 1.234e-01, 1.240e-01, 3.720e-02, 1.274e-01, -3.776e-01, 2.271e-01, 2.878e-02, -2.172e-02, -3.037e-01, -1.997e-01, 3.805e-01, -6.354e-01, -6.330e-03, 3.320e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-5.157e-01, -1.255e-01, 1.587e-01, 1.362e-01, 4.696e-02, 1.458e-01, -4.268e-01, 2.560e-01, 4.709e-02, -1.647e-02, -3.330e-01, -2.114e-01, 4.463e-01, -7.480e-01, -2.327e-02, 4.350e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-4.601e-01, -1.139e-01, 1.392e-01, 1.135e-01, 3.080e-02, 1.240e-01, -3.649e-01, 2.110e-01, 3.524e-02, -1.575e-02, -3.076e-01, -1.919e-01, 3.857e-01, -6.334e-01, -7.127e-03, 2.968e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(3.182e-02, -2.339e-01, -1.425e-03, 2.675e-02, 5.640e-03, -5.581e-02, 2.570e-02, -2.437e-02, -1.636e-02, 1.739e-02, -1.369e-02, -1.392e-01, -1.210e-02, 4.389e-02, 1.189e-02, 2.288e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(3.552e-02, -2.646e-01, -8.056e-03, 3.943e-02, 1.996e-03, -7.202e-02, 2.801e-02, -1.786e-02, -2.729e-02, 1.886e-02, -1.811e-02, -1.569e-01, -1.432e-02, 4.872e-02, 1.727e-02, 2.648e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(3.159e-02, -2.407e-01, -8.963e-03, 3.632e-02, 3.187e-03, -6.018e-02, 2.437e-02, -1.726e-02, -2.058e-02, 1.570e-02, -1.307e-02, -1.450e-01, -1.516e-02, 4.676e-02, 1.411e-02, 2.288e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(-2.774e-03, -2.248e-03, -1.658e-03, -1.922e-02, -1.090e-03, -2.803e-03, 1.483e-02, -9.581e-03, -3.050e-04, 9.037e-05, -1.217e-02, -2.601e-03, -4.771e-03, 6.907e-03, 1.896e-02, -2.166e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-3.349e-03, -9.704e-04, 1.633e-03, -1.654e-02, -1.312e-03, -2.742e-03, 1.736e-02, -1.029e-02, 5.028e-04, 1.465e-03, -1.308e-02, -2.366e-03, -8.290e-03, 5.539e-03, 1.058e-02, -2.458e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-3.343e-03, -2.181e-03, 5.008e-03, -1.508e-02, 9.087e-04, -2.463e-03, 1.643e-02, -8.457e-03, 1.550e-04, 1.314e-03, -1.193e-02, -2.358e-03, -3.617e-03, 5.829e-03, 1.364e-02, -2.144e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(-2.578e-02, -1.567e-02, 1.753e-01, 1.255e-01, -1.480e-02, 1.183e-03, 2.809e-02, 3.593e-02, -9.426e-04, 6.873e-04, 2.414e-02, 3.285e-03, -3.756e-03, -3.727e-03, 2.692e-02, -4.921e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-3.430e-02, -2.293e-02, 1.841e-01, 1.295e-01, -1.652e-02, 1.931e-03, 3.519e-02, 4.187e-02, -2.484e-03, -6.450e-04, 2.645e-02, 3.062e-03, -8.907e-03, -2.771e-03, 2.206e-02, -5.225e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-2.411e-02, -1.503e-02, 1.623e-01, 1.246e-01, -1.543e-02, 3.884e-03, 2.570e-02, 3.866e-02, -2.513e-03, -6.077e-04, 2.472e-02, 3.677e-03, -6.050e-03, 2.919e-04, 3.325e-02, -4.911e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(-8.225e-04, -1.346e-02, 2.102e-02, 9.694e-02, 3.421e-03, -5.557e-03, 9.124e-03, -9.606e-03, 2.420e-04, -1.778e-03, -1.186e-02, -1.637e-04, -4.730e-03, 2.229e-04, 3.822e-04, -9.578e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(-1.892e-03, -1.820e-02, 2.101e-02, 9.924e-02, 5.988e-03, -5.526e-03, 9.033e-03, -9.727e-03, 5.104e-04, -2.141e-03, -1.390e-02, -6.450e-04, -4.234e-03, 3.700e-04, 1.872e-03, -6.992e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(-3.970e-04, -1.282e-02, 2.228e-02, 8.927e-02, 5.372e-03, -5.608e-03, 8.705e-03, -1.259e-02, 5.027e-04, -2.396e-03, -1.222e-02, -3.329e-04, -5.052e-03, 5.618e-04, -1.378e-03, -8.540e-03), r2);\n\tfloat2 opt = float2(GetOutputPt()), fpos = (float2(gxy) + 0.5) * opt;\n\tOUTPUT[gxy + int2(0, 0)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(0.0, 0.0) * opt, 0).rgb + MF3(r0.x, r1.x, r2.x)), 1.0);\n\tOUTPUT[gxy + int2(1, 0)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(1.0, 0.0) * opt, 0).rgb + MF3(r0.y, r1.y, r2.y)), 1.0);\n\tOUTPUT[gxy + int2(0, 1)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(0.0, 1.0) * opt, 0).rgb + MF3(r0.z, r1.z, r2.z)), 1.0);\n\tOUTPUT[gxy + int2(1, 1)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(1.0, 1.0) * opt, 0).rgb + MF3(r0.w, r1.w, r2.w)), 1.0);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy2/CuNNy-4x12-NVL.hlsl",
    "content": "// CuNNy 4x12 - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-04x12\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, x, y) t.SampleLevel(SP, pos + float2(x, y) * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T5;\n\n//!PASS 1\n//!DESC in (3x12)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT T0, T1, T2\n\n#define L0(x, y) V3(O(INPUT, x, y).rgb)\n#define V3 MF3\n#define M3x4 MF3x4\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV3 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\tr0 = V4(2.371e-02, 1.429e-03, -1.518e-03, -1.126e-03);\n\tr1 = V4(-8.419e-01, -3.915e-04, 7.733e-04, 1.825e-07);\n\tr2 = V4(-3.869e-02, 5.169e-03, -1.235e-04, -4.538e-04);\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M3x4(-7.386e-03, -5.469e-02, 1.746e-02, -7.538e-02, -4.545e-02, -4.873e-01, -4.916e-02, -1.283e-01, -2.024e-03, -3.993e-02, 5.444e-03, 2.504e-01), r0);\n\tr1 = MulAdd(s0_0_0, M3x4(-7.243e-02, 5.732e-04, 1.089e-01, 2.781e-02, -6.259e-02, 1.818e-03, 5.067e-01, -1.359e-03, 3.032e-02, -5.970e-03, -7.168e-03, -4.071e-03), r1);\n\tr2 = MulAdd(s0_0_0, M3x4(-3.235e-03, -8.249e-03, 5.048e-03, 2.856e-03, 1.328e-02, 5.994e-02, 2.688e-02, -9.917e-03, -7.008e-03, 1.200e-02, -5.993e-05, 1.259e-02), r2);\n\tr0 = MulAdd(s0_0_1, M3x4(-4.481e-02, -4.577e-02, -2.425e-01, 8.612e-02, -1.968e-01, 2.938e-02, -9.121e-01, -7.690e-02, -1.899e-02, 3.110e-03, -1.540e-01, -1.780e+00), r0);\n\tr1 = MulAdd(s0_0_1, M3x4(-1.152e-01, 1.819e-02, 1.569e-02, 2.558e-01, -6.440e-02, -3.147e-02, 5.094e-02, 8.379e-01, -8.025e-02, 9.843e-03, 1.203e-02, 7.306e-02), r1);\n\tr2 = MulAdd(s0_0_1, M3x4(-1.968e-03, -2.847e-03, -4.148e-03, -2.091e-01, -6.473e-03, 9.986e-03, 4.125e-02, -8.573e-01, 6.614e-03, -3.453e-02, 2.267e-03, -6.174e-02), r2);\n\tr0 = MulAdd(s0_0_2, M3x4(-4.561e-03, 6.066e-02, 2.461e-01, -6.254e-02, -3.035e-02, 1.289e-01, 8.730e-01, -9.420e-03, -7.786e-04, 1.935e-02, 1.362e-01, 3.951e-01), r0);\n\tr1 = MulAdd(s0_0_2, M3x4(1.164e+00, -5.721e-04, -2.677e-02, -2.235e-02, 5.593e-01, 1.732e-02, 3.845e-02, 2.547e-02, 1.626e-01, -1.258e-02, -1.786e-02, -6.332e-03), r1);\n\tr2 = MulAdd(s0_0_2, M3x4(-5.411e-03, -1.579e-02, 6.164e-05, 3.549e-03, -1.140e-03, -7.766e-02, -1.922e-02, -2.055e-02, -3.550e-03, 1.331e-02, 1.014e-03, -1.736e-03), r2);\n\tr0 = MulAdd(s0_1_0, M3x4(-5.236e-02, -1.606e-01, -1.882e-02, 6.696e-03, -1.711e-01, -3.822e-01, 4.992e-02, 9.131e-02, -2.025e-02, -2.197e-02, -9.928e-03, 4.434e-02), r0);\n\tr1 = MulAdd(s0_1_0, M3x4(7.801e-04, 1.954e-03, -1.577e-01, -2.695e-01, -9.303e-03, -8.061e-03, -6.738e-01, -8.372e-01, 2.277e-03, 4.330e-03, 2.384e-02, -9.592e-02), r1);\n\tr2 = MulAdd(s0_1_0, M3x4(4.204e-02, 4.112e-02, -6.321e-03, -9.850e-03, 8.119e-02, -4.919e-02, 5.286e-03, 2.945e-03, 1.587e-02, -4.608e-03, 6.811e-03, -9.825e-03), r2);\n\tr0 = MulAdd(s0_1_1, M3x4(1.547e-01, 1.787e-01, 2.570e-01, -1.229e-02, 7.285e-01, 6.604e-01, 8.773e-01, 1.478e-01, 5.629e-02, 6.842e-02, 1.870e-01, 2.441e-01), r0);\n\tr1 = MulAdd(s0_1_1, M3x4(-5.694e-02, -1.830e-01, 2.021e-02, -1.896e-02, -5.155e-02, -8.613e-01, 5.923e-02, -2.199e-02, -4.334e-02, -5.851e-02, -2.120e-02, 4.841e-02), r1);\n\tr2 = MulAdd(s0_1_1, M3x4(5.260e-02, 3.307e-02, 1.349e-01, 2.220e-01, 3.151e-01, 3.018e-01, 5.776e-01, 8.574e-01, 2.537e-02, 6.137e-02, 4.454e-02, 4.895e-02), r2);\n\tr0 = MulAdd(s0_1_2, M3x4(-1.901e-02, -3.397e-04, -2.533e-01, 6.013e-02, -2.369e-02, 9.543e-02, -8.429e-01, 1.395e-02, 2.221e-03, -9.763e-03, -1.653e-01, -8.905e-02), r0);\n\tr1 = MulAdd(s0_1_2, M3x4(-2.009e-01, 1.782e-01, 1.372e-02, -3.673e-03, -2.411e-01, 8.752e-01, -2.155e-02, 1.346e-02, -2.332e-02, 4.865e-02, -5.773e-03, 1.563e-03), r1);\n\tr2 = MulAdd(s0_1_2, M3x4(2.545e-03, -2.133e-01, -2.288e-02, -7.434e-03, 7.792e-02, -8.770e-01, -7.027e-02, 2.110e-02, 3.652e-03, 5.824e-02, -2.055e-02, 8.632e-03), r2);\n\tr0 = MulAdd(s0_2_0, M3x4(-4.618e-03, 7.533e-02, 3.191e-04, 2.329e-02, -5.662e-03, 2.104e-01, -1.219e-02, -5.316e-02, 4.399e-03, 8.012e-03, 9.658e-03, -4.013e-03), r0);\n\tr1 = MulAdd(s0_2_0, M3x4(1.214e-02, -4.554e-03, 1.340e-02, 2.632e-02, 1.650e-02, -7.431e-05, -8.060e-03, -1.084e-03, -2.011e-02, -4.600e-04, -2.877e-02, -1.232e-02), r1);\n\tr2 = MulAdd(s0_2_0, M3x4(6.979e-02, -2.692e-02, 7.482e-03, 6.417e-03, 3.348e-01, 3.505e-02, 3.129e-02, 5.542e-03, -1.225e-02, -1.401e-02, -1.266e-03, 8.324e-04), r2);\n\tr0 = MulAdd(s0_2_1, M3x4(-1.724e-03, 5.198e-03, 1.529e-03, -2.257e-02, 3.968e-03, 5.456e-02, 6.396e-02, 1.018e-01, 1.426e-03, -8.712e-03, 7.497e-03, 2.531e-02), r0);\n\tr1 = MulAdd(s0_2_1, M3x4(-1.016e-03, -1.151e-03, -2.179e-02, 2.617e-04, 2.426e-03, -2.212e-02, 1.129e-02, -7.126e-03, -3.228e-02, 2.641e-02, -1.260e-03, -6.232e-03), r1);\n\tr2 = MulAdd(s0_2_1, M3x4(-2.182e-01, 3.730e-02, -2.093e-02, -1.364e-02, -1.346e+00, 1.938e-01, -4.649e-02, 5.817e-03, -3.633e-02, -2.405e-02, -1.693e-02, 5.099e-04), r2);\n\tr0 = MulAdd(s0_2_2, M3x4(1.103e-04, -6.213e-02, -1.111e-02, 3.962e-03, 7.550e-03, -3.073e-01, -4.484e-02, -4.740e-02, -9.361e-03, -1.714e-02, -1.528e-02, 3.008e-02), r0);\n\tr1 = MulAdd(s0_2_2, M3x4(-3.040e-02, -9.259e-03, -3.092e-03, 2.860e-03, -6.506e-03, 2.856e-02, -3.184e-03, -6.592e-03, 9.029e-03, -1.179e-02, 2.493e-02, 2.025e-03), r1);\n\tr2 = MulAdd(s0_2_2, M3x4(2.447e-02, 1.106e-01, 5.033e-03, 4.270e-03, 5.833e-02, 3.534e-01, 5.783e-03, -7.361e-03, -2.033e-02, -4.764e-02, 1.376e-02, 2.350e-03), r2);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n}\n\n//!PASS 2\n//!DESC conv1 (12x12)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2\n//!OUT T3, T4, T5\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.163e-01, 1.156e-01, 1.457e-01, -6.471e-02, -1.618e-02, 9.700e-02, -1.586e-01, 1.539e-02, 1.924e-02, 1.621e-02, -1.343e-01, -4.331e-02, 5.127e-03, 8.125e-02, -1.768e-02, 1.399e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(4.747e-02, -1.428e-01, -3.318e-01, 4.421e-02, -9.593e-03, 9.177e-02, 5.804e-02, -2.659e-03, -8.757e-03, 2.132e-01, 1.320e-01, -5.020e-02, -1.620e-03, -7.543e-02, -1.298e-01, -1.489e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(2.494e-01, 3.677e-01, 8.672e-02, 1.938e-02, -6.616e-02, -2.685e-02, -1.523e-01, -4.285e-02, 5.086e-02, -6.759e-02, 8.454e-02, 2.415e-03, -2.521e-02, 8.552e-02, -1.935e-02, -3.447e-02), r2);\n\tr0 = MulAdd(s0_0_1, M4(2.002e-02, 2.456e-01, 4.244e-01, -1.283e-01, 6.184e-03, 2.605e-01, 2.199e-01, -2.072e-02, 2.171e-03, -1.605e-01, 4.502e-02, -2.313e-02, -4.377e-02, 1.323e-01, -8.970e-02, 2.607e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(7.455e-02, -3.308e-01, -6.099e-01, 9.643e-02, 2.136e-02, -1.195e-01, -3.679e-02, -8.183e-02, -1.535e-02, 8.867e-02, 1.545e-01, -2.720e-02, -1.320e-02, -1.139e-01, -4.386e-02, 2.701e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-6.660e-01, -3.999e-01, -5.881e-02, -3.469e-01, -7.218e-02, -4.373e-02, -3.779e-01, -1.317e-01, 4.652e-02, 2.815e-03, 1.035e-03, 2.925e-02, -9.762e-02, -8.644e-03, -8.729e-02, -3.912e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(-1.642e-01, -1.925e-01, 1.791e-01, 4.927e-02, 2.007e-02, 1.683e-01, -2.002e-01, 6.172e-04, -3.581e-04, -6.771e-02, 1.810e-01, -4.235e-03, 1.902e-02, 7.933e-02, 1.135e-01, -1.783e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-6.026e-02, -2.214e-01, 2.219e-01, -2.853e-02, 5.208e-02, -4.546e-02, 9.622e-03, -1.328e-02, -7.084e-03, 4.145e-03, 5.873e-02, -1.877e-02, 1.708e-02, 1.208e-01, -1.322e-02, 5.464e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.215e-01, -8.505e-02, 2.639e-01, -3.397e-01, -6.812e-02, -1.726e-02, -2.596e-01, -1.450e-01, 1.194e-02, 3.039e-02, -8.624e-02, 5.425e-02, 3.149e-02, 1.806e-02, 1.849e-01, 8.528e-03), r2);\n\tr0 = MulAdd(s0_1_0, M4(-5.927e-02, -2.056e-01, -7.717e-02, 1.800e-01, -2.715e-02, -8.305e-02, 1.303e-01, -1.972e-02, 7.263e-02, 1.587e-01, -2.244e+00, -4.746e-02, -3.545e-02, -1.343e-01, 4.560e-02, 1.635e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(6.715e-02, -2.241e-01, -3.088e-01, -8.333e-02, -3.748e-02, 5.220e-02, 9.541e-02, -4.337e-02, 4.700e-02, 1.081e-01, -1.407e-01, 1.372e-03, -1.445e-02, -1.451e-01, 8.263e-02, -5.546e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.820e-01, -6.715e-02, 3.887e-01, 1.081e-01, -1.096e-01, 6.740e-02, -1.767e-01, -2.906e-02, 4.365e-01, 4.421e-02, 1.038e-01, -1.864e-02, 4.105e-02, 1.160e-01, -1.388e-01, 3.874e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(5.063e-01, 9.199e-01, 4.362e-01, 5.728e-01, -1.160e-02, -6.584e-02, -3.739e-01, 5.988e-02, 9.301e-02, 5.149e-02, -1.641e-02, -4.545e-02, -6.133e-02, -1.672e-01, -2.886e-01, 5.674e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-3.628e-01, 6.313e-02, 7.062e-01, 3.819e-01, -3.538e-02, 2.900e-01, -9.975e-03, -2.518e-02, -2.022e-02, -2.613e-01, 9.266e-02, 5.188e-02, -3.095e-02, 1.751e-01, -2.423e-01, 2.622e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.380e-01, 1.193e-01, -7.730e-02, 5.914e-01, -3.413e-02, -1.030e-01, -6.568e-01, -3.359e-01, 2.100e-01, -1.267e-02, 4.550e-04, 4.862e-02, -1.263e-03, -9.311e-02, -3.138e-02, 7.157e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(-4.124e-02, -6.117e-02, -3.430e-01, 2.183e-01, 4.256e-02, -6.017e-02, 2.253e-01, 2.906e-02, 1.328e-03, -1.938e-01, 2.511e-01, -1.271e-02, 5.325e-03, -1.294e-01, -1.397e-01, 2.712e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.510e-01, 5.593e-01, 2.391e-01, 2.250e-01, 9.170e-02, -1.985e-01, 2.144e-02, 8.525e-03, -3.699e-02, 1.579e-01, 4.856e-02, -5.507e-02, 8.173e-02, 7.230e-02, -7.690e-02, 6.204e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.216e-01, -7.150e-02, -4.137e-01, -3.132e-01, 7.101e-02, 4.673e-02, -1.607e-01, -5.207e-03, -5.130e-02, 2.507e-02, 9.695e-02, 8.657e-02, 5.831e-02, 3.104e-03, 7.544e-02, 5.899e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(-8.765e-02, -3.692e-01, -7.526e-02, -1.535e-02, 6.240e-03, 2.573e-02, 3.032e-02, -9.455e-03, 4.085e-02, 1.783e-01, 5.481e-02, -5.315e-02, -5.469e-02, 2.560e-02, 3.218e-02, 7.544e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-7.377e-02, 2.922e-02, -7.358e-02, -1.411e-01, 7.064e-03, -2.110e-03, 6.317e-03, -1.400e-02, -5.536e-02, -4.443e-01, -4.341e-02, -3.408e-03, -5.640e-04, 7.144e-02, -1.986e-01, -2.526e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-2.548e-01, 1.914e-02, 1.738e-01, -4.575e-01, -4.725e-02, 5.841e-03, -2.669e-01, -2.830e-02, 1.403e-01, -3.690e-02, 7.145e-02, -7.619e-02, -7.499e-02, -5.715e-02, -4.560e-02, -6.995e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(-1.990e-01, -3.749e-01, -2.455e-01, 1.485e-01, -5.685e-02, -2.182e-01, 2.371e-01, 3.915e-02, -4.616e-03, 2.107e-01, -2.549e-02, -7.563e-02, -8.913e-02, -2.548e-01, -1.722e-01, 2.370e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.354e-02, 5.682e-01, 1.932e-01, -1.618e-01, 4.247e-02, 2.062e-01, 1.100e-01, 2.448e-02, -1.304e-01, -3.076e-01, -1.084e-01, 1.746e-02, 6.326e-02, 4.109e-01, 3.020e-01, 4.791e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(4.093e-01, 4.491e-02, 1.438e-01, 1.566e-01, -1.051e-01, 3.127e-02, -1.009e-01, -1.145e-01, 5.644e-02, -5.117e-03, 6.510e-02, 1.145e-01, -2.455e-01, 1.439e-02, -2.855e-01, 1.577e-01), r2);\n\tr0 = MulAdd(s0_2_2, M4(2.122e-02, -9.808e-02, -2.008e-01, -1.844e-01, -9.780e-03, 6.983e-02, -4.225e-02, 2.338e-02, -3.277e-03, 8.374e-03, 1.274e-01, -1.788e-02, 4.089e-02, 1.455e-01, 2.359e-03, 2.758e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.599e-01, -1.459e-01, -3.136e-01, -2.532e-01, 2.324e-02, 4.829e-02, 3.945e-02, 2.026e-02, -1.981e-02, 5.712e-02, 9.496e-02, -5.237e-02, 1.394e-01, 3.940e-02, 7.466e-02, 5.042e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-7.073e-02, 5.994e-02, -4.630e-01, 9.550e-02, 4.291e-04, 1.232e-02, -2.183e-01, -7.130e-02, -1.984e-02, -2.565e-02, 1.065e-01, 1.063e-02, -1.149e-01, 9.814e-03, -1.312e-01, -4.967e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(1.266e-03, -7.660e-02, 6.654e-02, 1.252e-02, 4.065e-02, -2.436e-01, 6.218e-02, 1.169e-01, 2.334e-02, -3.310e-03, 6.085e-03, -3.955e-03, -1.004e-02, -5.177e-03, 3.345e-02, 6.903e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(2.281e-03, 3.444e-02, -5.487e-02, -3.204e-03, 3.302e-02, 2.775e-01, 2.703e-01, -2.022e-02, -1.340e-02, 1.124e-03, 9.245e-02, -6.460e-02, -4.856e-03, 5.154e-02, 3.824e-02, 2.094e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.947e-01, 9.310e-03, 6.216e-02, 2.033e-01, -7.847e-02, -1.272e+00, 4.814e-01, 1.184e-01, 2.148e-02, 2.296e-05, 1.556e-02, 1.717e-02, 8.473e-02, 5.144e-03, 5.642e-02, -2.126e-02), r2);\n\tr0 = MulAdd(s1_0_1, M4(-2.737e-03, -9.549e-02, -1.046e-01, 1.101e-02, -1.504e-01, -6.309e-01, -5.429e-02, 4.482e-02, 5.919e-02, 9.025e-02, 1.966e-01, -7.788e-02, -5.524e-02, -1.962e-02, -1.031e-01, 2.235e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(2.305e-02, 2.494e-02, -2.218e-02, 2.404e-02, -3.583e-02, 8.299e-01, -4.025e-02, -5.656e-03, 5.931e-02, 7.411e-03, -1.416e-01, -5.976e-02, -9.988e-03, 4.047e-03, 3.924e-02, -1.321e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-7.245e-02, 2.901e-02, -9.027e-02, -7.411e-02, 1.909e-01, 1.330e-01, 1.605e-02, 3.563e-01, 3.619e-02, -4.567e-02, -1.969e-01, 9.875e-02, 3.314e-02, 1.746e-03, 1.292e-01, -1.363e-02), r2);\n\tr0 = MulAdd(s1_0_2, M4(-1.684e-02, 5.930e-04, 2.034e-03, 1.071e-02, -1.898e-02, 2.121e-02, -8.269e-03, 6.358e-03, 3.724e-02, 6.288e-02, -2.293e-01, 3.236e-02, -2.009e-02, 6.860e-02, 9.543e-02, 3.856e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.282e-02, 2.649e-02, 3.006e-02, -2.435e-02, 2.254e-02, -7.417e-02, -1.256e-02, 2.873e-02, -4.595e-03, -1.692e-01, 4.261e-02, 6.391e-02, -8.283e-03, 1.478e-02, -8.458e-02, -5.418e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(-2.035e-03, 5.029e-03, 6.235e-02, 5.650e-03, -4.556e-02, -1.245e-02, 2.438e-02, -1.255e-02, -1.909e-01, 5.505e-02, -3.271e-01, -2.122e-01, 6.564e-02, -7.782e-03, 1.932e-01, 3.454e-02), r2);\n\tr0 = MulAdd(s1_1_0, M4(-7.247e-02, -1.497e-01, -6.152e-01, -6.253e-02, 3.747e-01, 3.875e-01, -8.220e-01, -3.239e-01, 1.289e-02, -6.893e-02, 7.039e-02, -3.210e-02, 7.061e-03, 9.071e-02, -6.554e-02, -1.396e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-3.249e-02, -2.546e-01, -6.462e-02, -3.743e-02, -3.435e-02, -1.377e+00, -4.541e-01, 5.770e-02, -1.383e-02, 2.979e-02, 1.470e-01, -7.601e-02, 2.573e-02, -6.866e-02, -4.758e-02, 4.720e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-1.649e-01, -1.881e-02, -1.043e-01, 1.331e-02, 5.438e-02, -6.616e-02, -1.458e-01, -5.527e-01, 3.316e-02, 3.800e-02, -6.719e-02, 9.455e-03, 8.345e-03, -7.177e-02, 7.818e-02, 4.042e-02), r2);\n\tr0 = MulAdd(s1_1_1, M4(-7.803e-02, -3.605e-02, -2.398e-01, 1.917e-02, 2.511e-01, -2.267e-01, 1.876e-01, -1.729e-01, 1.538e-02, -2.279e-01, 6.390e-01, -6.171e-02, 1.046e-02, 9.179e-03, -9.785e-01, -3.663e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.102e-02, -1.066e-02, 1.134e-02, 1.200e-02, 5.475e-01, -7.988e-01, -3.063e+00, -2.201e-01, -1.164e-01, -2.261e-01, -3.449e-01, -3.471e-01, 1.974e-02, 4.171e-01, -5.344e-02, -6.616e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-4.493e-02, -2.040e-02, 7.080e-02, -1.526e-01, 3.963e-02, -4.453e-02, 4.740e-01, -5.100e-01, 8.585e-02, -3.345e-02, 3.993e-01, 1.578e-02, -2.661e-05, 1.410e-01, 1.996e-01, 7.827e-02), r2);\n\tr0 = MulAdd(s1_1_2, M4(-3.559e-03, 3.688e-02, 1.636e-02, -1.349e-03, -1.749e-02, -1.430e-01, 9.743e-03, 9.175e-03, -4.444e-02, 9.095e-01, -3.248e-01, 2.190e-01, 1.318e-01, -3.054e+00, 1.550e-01, -9.009e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(2.479e-02, 1.401e-02, -9.932e-03, -2.885e-04, 1.736e-03, 1.283e-01, 3.805e-02, 1.402e-01, -1.477e-01, -3.233e-02, -5.950e+00, 6.556e-01, 1.139e-01, -1.568e-01, -2.419e+00, -1.098e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(4.808e-03, 2.744e-03, -3.498e-02, -1.648e-02, -1.148e-02, -4.233e-03, 4.747e-02, 3.494e-02, -2.221e-02, -6.565e-02, 1.078e-02, -2.654e-01, -1.278e-02, 2.576e-02, 2.376e-01, 1.695e-01), r2);\n\tr0 = MulAdd(s1_2_0, M4(-1.146e-01, -6.326e-02, 2.282e-01, 1.471e-01, 3.068e-03, 1.821e-01, 1.503e-01, 5.306e-02, 2.274e-02, 2.170e-02, 2.325e-01, -2.282e-02, 4.257e-02, 1.086e-01, -3.423e-02, -7.035e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(3.910e-02, 1.917e-01, 6.100e-01, 1.230e-01, -2.567e-02, 3.714e-01, 6.577e-02, 1.445e-02, 3.223e-02, -8.390e-02, -3.208e-02, -4.103e-02, -6.768e-03, 4.992e-02, 4.130e-02, 5.421e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.788e-01, 8.515e-02, 5.660e-02, 4.852e-01, -2.444e-01, 4.538e-02, -3.718e-01, 1.655e-01, 8.216e-02, 5.839e-03, -1.204e-01, 1.093e-01, -1.041e-02, 2.283e-02, 1.597e-01, 3.630e-02), r2);\n\tr0 = MulAdd(s1_2_1, M4(1.185e-04, -1.779e-01, -2.445e-01, -2.418e-02, 1.743e-02, -1.275e-01, 9.508e-02, 2.757e-02, 1.389e-02, -1.383e-01, 1.173e-01, -2.857e-03, 8.423e-02, 1.210e-01, 5.521e-02, -8.439e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(5.963e-02, 3.690e-02, -2.565e-01, -2.116e-02, -1.534e-02, 2.914e-01, 1.096e-01, 3.019e-01, -8.793e-03, -2.056e-01, 7.105e-02, -6.085e-02, 5.072e-03, -5.783e-01, -6.557e-01, 4.832e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(4.574e-02, 1.974e-02, -2.873e-02, -7.527e-02, -1.452e-01, 3.639e-03, 3.845e-02, -3.287e-01, -2.881e-01, 1.305e-02, 3.056e-01, -2.282e-01, -2.982e-02, -8.287e-02, -2.300e-02, -3.526e-01), r2);\n\tr0 = MulAdd(s1_2_2, M4(-1.999e-03, 8.946e-02, 2.312e-02, 1.523e-02, 6.478e-03, 2.315e-02, 1.187e-01, 3.161e-03, 1.209e-01, 4.878e-02, 2.207e-02, 3.119e-02, 4.699e-02, -4.015e-02, 1.090e-01, -2.879e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(-5.550e-02, 5.757e-02, -4.030e-02, 2.643e-02, -1.467e-02, -1.424e-02, 7.836e-02, -3.287e-03, 4.053e-02, -2.723e-01, 5.134e-01, -3.544e-02, -3.992e-02, -1.719e-01, 1.076e-01, -1.023e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.935e-02, 1.187e-02, -3.824e-02, -1.930e-02, 1.031e-02, 8.747e-03, -4.062e-02, -3.402e-02, 1.437e-01, 7.662e-02, -2.975e-01, 3.014e-01, -1.324e-01, -1.409e-02, -6.537e-02, 9.833e-03), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.049e-02, -1.335e-01, -1.297e-01, -4.511e-02, 7.642e-02, 1.458e-01, 4.228e-01, 3.283e-02, 4.311e-02, 1.344e-01, -6.650e-01, 1.524e-01, 1.049e-02, -2.780e-01, 1.578e-01, 3.780e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-4.945e-02, 6.953e-02, 4.480e-01, 1.076e-01, -4.088e-02, -1.364e-01, -6.981e-02, -1.321e-02, 9.510e-02, 6.362e-01, 9.995e-02, 1.434e-01, 6.378e-03, 5.274e-02, 1.538e-01, 5.294e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.658e-01, -8.462e-02, -9.172e-02, 3.362e-02, -3.624e-02, 1.140e-01, -3.336e-02, 2.142e-01, -1.770e-02, 9.359e-01, -4.619e-01, -4.094e-01, 3.761e-02, -5.367e-02, 6.568e-02, 2.547e-02), r2);\n\tr0 = MulAdd(s0_0_1, M4(-3.524e-01, -7.459e-01, 4.531e-01, -1.294e-01, 6.494e-02, -7.296e-02, 1.826e-01, -8.026e-02, 1.385e-01, -9.923e-01, -3.027e-02, -7.091e-04, 4.135e-02, -1.150e-01, -3.314e-01, -3.982e-03), r0);\n\tr1 = MulAdd(s0_0_1, M4(9.941e-02, 7.051e-02, 7.081e-01, 3.595e-01, 8.379e-03, -4.014e-01, -8.898e-03, 1.091e-01, 1.924e-01, 1.126e-01, -4.621e-01, 1.577e-02, -1.730e-02, 1.571e-01, 1.148e-01, -7.555e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(2.943e-01, -6.791e-02, -3.460e-01, 1.828e-01, 1.267e-01, -7.782e-02, 2.735e-01, 5.548e-02, 1.449e-01, -6.915e-01, -6.504e-01, 1.029e-01, 1.675e-01, 2.399e-02, 6.291e-02, 2.583e-01), r2);\n\tr0 = MulAdd(s0_0_2, M4(1.067e-02, 8.607e-02, 1.720e-01, -3.334e-02, 3.202e-02, 2.845e-02, 1.829e-01, -2.759e-02, 1.440e-01, -6.175e-01, 2.417e-01, 7.253e-02, 4.019e-02, -4.140e-02, -4.056e-02, 1.281e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-8.814e-02, -5.732e-01, -5.093e-01, 3.987e-02, -1.891e-03, 5.225e-02, -1.382e-02, -7.501e-02, 6.950e-02, 3.299e-01, 2.946e-01, 7.459e-02, -5.370e-03, 1.332e-01, 1.013e-01, -5.744e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.155e-01, 4.309e-02, -9.632e-02, 1.689e-01, 5.555e-03, 6.416e-02, 5.285e-02, 1.392e-01, -9.668e-02, -1.499e-01, -1.492e-01, 5.672e-02, 6.880e-02, 4.594e-02, -5.698e-02, 1.188e-01), r2);\n\tr0 = MulAdd(s0_1_0, M4(-4.763e-02, 1.066e-01, -5.677e-02, 3.206e-02, -3.233e-03, -1.175e-01, 1.398e-01, 1.013e-01, 6.491e-02, 2.819e-01, -4.151e-01, -1.479e-01, 6.811e-02, -1.406e-02, 8.030e-01, 2.339e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(5.653e-02, -1.158e-01, 3.994e-02, -2.781e-02, -4.152e-02, 6.296e-01, -1.744e+00, 3.799e-01, -2.964e-01, -7.482e-02, -5.059e-01, -7.172e-02, 5.907e-02, 4.077e-01, 3.215e-01, 2.188e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.577e-01, -5.115e-02, 8.960e-02, 1.598e-01, -3.831e-01, 3.237e-02, -1.098e-01, 1.558e-01, -8.850e-02, 3.037e-01, 5.178e-01, -3.877e-01, -8.910e-02, -1.753e-01, -3.563e-01, -2.639e-01), r2);\n\tr0 = MulAdd(s0_1_1, M4(3.252e-02, 2.205e-01, 1.770e-01, -4.160e-02, -9.119e-03, 1.145e-01, -2.775e-01, -7.459e-02, 1.816e-01, 1.913e-01, 4.988e-01, 5.357e-01, 3.685e-01, -4.095e-01, -2.006e+00, -3.086e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(2.626e-02, -4.013e-01, -4.012e-01, 4.832e-02, 4.896e-02, 3.947e-01, 7.472e-01, -6.949e-02, 2.622e-02, -1.703e-01, 4.125e-01, -6.872e-02, 2.196e-01, -1.812e+00, -9.043e-01, -2.901e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(4.824e-02, -9.106e-02, 8.551e-02, 4.870e-02, 4.366e-02, -2.477e-02, -3.135e-01, -4.450e-02, 7.160e-02, -1.774e-01, 1.321e-01, 4.167e-01, 4.435e-01, 7.851e-02, 2.368e-01, 1.116e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(-1.846e-02, 1.656e-01, 1.595e-01, 7.564e-02, 3.918e-02, 6.479e-03, 4.409e-02, -2.073e-02, -1.248e-01, 3.271e-01, -3.435e-02, -9.585e-02, -3.856e-02, -3.480e-01, -5.498e-03, 4.041e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.070e-01, -2.319e-01, 2.577e-01, 9.888e-02, 1.467e-02, -4.102e-02, -5.286e-02, -3.510e-04, -6.217e-03, -4.660e-02, 3.231e-01, -1.836e-02, -7.904e-02, 5.138e-01, 3.097e-01, -9.498e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(2.055e-02, -1.885e-02, 1.421e-01, 7.128e-02, -5.062e-02, -5.073e-04, 8.391e-02, -3.746e-04, 6.806e-02, -7.608e-03, 1.445e-01, 8.995e-02, -1.348e-01, 6.406e-02, -3.115e-01, 3.193e-01), r2);\n\tr0 = MulAdd(s0_2_0, M4(-8.266e-03, -1.002e-02, 9.359e-02, -8.208e-03, 5.158e-02, 7.479e-02, 1.058e-01, 3.816e-03, 7.466e-04, 2.459e-01, 1.734e-01, -4.535e-02, 3.925e-02, 4.310e-02, 9.980e-02, 2.069e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.841e-03, -7.327e-03, 6.179e-02, 2.707e-02, 1.806e-02, 6.385e-03, 1.243e-02, 1.325e-01, 2.972e-02, -2.149e-01, -4.066e-01, -7.819e-02, 7.887e-02, 5.567e-01, -8.194e-02, 1.024e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(2.281e-03, 6.580e-03, 3.127e-02, -2.496e-02, 1.714e-01, -6.991e-03, 1.204e-01, 1.104e-01, -2.670e-01, -4.913e-03, -4.114e-03, -7.852e-02, 9.898e-02, 4.270e-02, -1.438e-02, 4.004e-01), r2);\n\tr0 = MulAdd(s0_2_1, M4(3.980e-03, -1.561e-02, -5.038e-02, -4.837e-03, 1.541e-02, 1.008e-01, 4.123e-02, -1.364e-02, -3.167e-01, -9.263e-02, 2.300e-01, -6.978e-03, 3.604e-01, 2.132e-01, -1.353e-01, -1.899e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.031e-02, 2.997e-02, 6.316e-03, 1.106e-02, -1.891e-02, -2.242e-02, 1.562e-02, 8.090e-03, 4.145e-02, -2.339e-01, 3.604e-01, -1.351e-01, 2.939e-01, -9.567e-01, -4.006e+00, 6.434e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(5.955e-03, 5.431e-04, 2.424e-02, 3.296e-02, -6.513e-02, 9.009e-03, -1.053e-01, 1.362e-02, -5.901e-02, -9.398e-02, 3.151e-01, 2.313e-01, 3.028e-01, -5.867e-02, 1.316e-01, -1.064e+00), r2);\n\tr0 = MulAdd(s0_2_2, M4(1.664e-03, 4.885e-02, 6.467e-03, 2.416e-03, 2.205e-02, -3.710e-02, -2.781e-02, 1.144e-02, -8.296e-02, 5.449e-01, -5.948e-02, 6.001e-03, 1.095e-01, -5.896e-02, 2.739e-01, 4.982e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(2.118e-02, -2.073e-02, -2.716e-02, -4.218e-02, -2.640e-03, -1.735e-02, -1.608e-02, 1.907e-02, -1.903e-01, -3.902e-01, 4.919e-02, 7.691e-02, 1.723e-01, -1.613e-01, -1.460e-01, 3.893e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-8.745e-03, 1.296e-02, -4.421e-02, -1.450e-03, -1.843e-02, -5.913e-06, 1.192e-02, -5.708e-02, 3.204e-01, -1.079e-01, 1.221e-01, 2.175e-01, -9.344e-02, 3.161e-02, 2.237e-01, -1.026e-01), r2);\n\tr0 = max(r0, 0.0);\n\tT3[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT4[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT5[gxy] = r2;\n}\n\n//!PASS 3\n//!DESC conv2 (12x12)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T3, T4, T5\n//!OUT T0, T1, T2\n\n#define L0(x, y) V4(O(T3, x, y))\n#define L1(x, y) V4(O(T4, x, y))\n#define L2(x, y) V4(O(T5, x, y))\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(3.424e-01, -1.582e-01, -6.546e-02, -6.168e-04, -1.939e-01, 2.581e-01, 2.072e-02, 7.369e-02, 2.066e-01, -1.782e-01, 8.261e-02, 8.520e-03, -4.701e-02, -5.072e-02, 1.868e-01, 7.241e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-6.540e-02, -1.407e-01, -5.914e-02, 1.370e-01, -7.487e-03, 1.734e-01, 3.866e-02, -7.816e-02, 1.286e-02, 2.867e-01, -2.130e-03, -3.328e-01, -2.020e-03, 8.844e-02, -7.585e-02, 1.378e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(7.944e-02, 8.578e-03, 1.318e-02, -6.486e-02, -5.134e-02, -1.568e-01, 3.603e-02, -1.226e-03, 1.029e-01, -3.026e-02, 1.478e-02, -1.552e-02, 3.369e-01, 1.223e-01, 1.333e-02, -3.220e-02), r2);\n\tr0 = MulAdd(s0_0_1, M4(-5.594e-02, 1.958e-01, 4.475e-01, 2.528e-01, -1.088e-01, 9.121e-02, -2.478e-01, -3.702e-03, -6.302e-02, -3.915e-01, -1.942e-01, 5.244e-02, 9.604e-01, -4.170e-01, 6.322e-01, -3.612e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-6.959e-02, -4.734e-01, 7.459e-02, -2.052e-02, 3.991e-02, 2.206e-01, -6.098e-02, 2.447e-01, 4.352e-02, 2.168e-01, -3.148e-02, 1.754e-02, 1.714e-01, 6.895e-01, -1.596e-02, 5.220e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(-2.646e-01, -4.061e-02, -1.407e-02, 3.267e-02, 1.610e-02, 9.203e-02, -1.259e-01, 1.086e-02, -4.389e-02, 1.241e-01, -4.555e-02, 4.090e-02, -2.485e-01, 2.881e-02, -2.093e-01, 1.290e-01), r2);\n\tr0 = MulAdd(s0_0_2, M4(-1.221e-01, 1.343e-01, 1.756e-02, 4.272e-02, -1.000e-02, -6.718e-02, -2.495e-01, -1.367e-02, 1.086e-01, -3.007e-01, -9.456e-03, 2.766e-02, 1.830e-01, -8.254e-02, -6.654e-01, -2.775e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.765e-02, 5.702e-02, -1.251e-02, -1.180e-03, 8.983e-03, -3.260e-02, -1.310e-02, -8.851e-02, 5.279e-03, 5.018e-02, 7.017e-03, 1.063e-02, 1.985e-02, -2.096e-04, -1.460e-01, -1.961e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(4.184e-02, -3.108e-02, -7.327e-02, 2.286e-02, -1.713e-01, -1.317e-01, -2.048e-02, -3.717e-02, -2.856e-02, -3.651e-02, 4.275e-02, -7.003e-03, -5.321e-02, -1.217e-01, -1.480e-01, -1.183e-01), r2);\n\tr0 = MulAdd(s0_1_0, M4(2.179e-02, 1.315e-01, 1.091e-01, 3.489e-02, 1.135e-01, 1.456e-01, -8.571e-02, 2.148e-01, -6.439e-01, -1.469e-01, -3.470e-03, 1.237e-01, 1.899e-01, -1.441e-02, -2.881e-01, -2.385e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(3.991e-02, 5.187e-01, 1.634e-01, -7.621e-01, 4.860e-03, -5.186e-01, -4.390e-02, 3.916e-01, -2.656e-02, 2.354e-01, 1.743e-02, -4.420e-02, 3.155e-02, -1.099e-01, 1.887e-01, 2.126e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.800e-01, -1.850e-01, -9.838e-02, 1.124e-01, -9.580e-02, 1.004e-01, 5.531e-02, -8.521e-02, -8.652e-02, -1.008e-01, 2.892e-02, 6.391e-04, -2.675e-01, 8.596e-02, 9.709e-02, 5.314e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(2.777e-01, 1.440e-01, -6.385e-01, -1.450e+00, -1.948e-01, 2.267e-01, 2.585e-01, 1.445e-02, -1.438e-01, 1.994e-01, 5.586e-02, 2.287e-01, -4.307e-01, 3.486e-01, -2.227e-01, 6.488e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(4.186e-01, -2.523e-01, -8.654e-02, 2.292e-02, -1.880e-01, 1.430e-01, 9.041e-02, -7.149e-02, -7.582e-02, -1.469e-01, -6.140e-03, -3.484e-01, -4.464e-01, -2.844e-01, -1.972e-01, -5.546e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.144e-02, 3.218e-01, 7.520e-01, 3.471e-01, -9.673e-02, -5.279e-02, 4.198e-03, 4.155e-02, 9.928e-02, 3.935e-03, 7.468e-02, 5.112e-02, 8.057e-01, 2.750e-01, 4.573e-01, 4.273e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(3.181e-02, 1.709e-02, 1.704e-01, 1.362e-01, 2.060e-01, -5.583e-02, -1.044e-01, -2.850e-02, -3.306e-01, -7.003e-02, 5.325e-02, 1.275e-01, -2.124e-01, 3.360e-01, 4.939e-01, -2.286e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-5.481e-02, -1.274e-02, 1.571e-01, -2.584e-03, 3.455e-02, -7.897e-02, -9.256e-02, 1.617e-01, -4.284e-02, 5.980e-03, 3.708e-02, -1.362e-01, 2.144e-01, 1.961e-03, -3.237e-02, 2.662e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-6.732e-03, -2.786e-01, -1.920e-02, 1.169e-01, -1.079e-01, 6.667e-02, -7.789e-02, -1.140e-01, 6.323e-02, 5.802e-02, 2.899e-02, 3.782e-02, -1.523e-01, -5.014e-01, -3.662e-01, -2.144e-01), r2);\n\tr0 = MulAdd(s0_2_0, M4(-1.399e-01, -7.387e-02, 3.718e-02, 3.655e-02, 2.862e-01, 2.917e-02, -4.900e-02, 1.343e-01, -3.545e-01, -1.507e-01, -1.065e-02, 1.204e-01, -3.091e-01, 4.089e-02, 8.930e-02, 1.109e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.714e-02, -9.474e-03, 1.035e-02, -3.036e-02, -4.332e-02, 7.243e-02, -7.869e-02, -4.499e-02, 2.607e-02, 2.152e-01, 2.390e-03, 8.116e-02, -3.033e-02, -6.017e-02, -8.380e-02, -2.836e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.020e-02, 2.711e-02, -1.884e-02, 1.911e-02, -1.132e-01, -1.352e-01, 2.838e-02, -2.843e-03, -3.526e-02, 9.918e-03, 3.846e-02, -4.973e-02, -1.550e-02, -2.626e-02, -2.655e-02, -3.604e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(1.451e-02, -3.809e-02, 3.990e-02, -1.831e-01, 4.474e-02, 4.242e-05, -3.386e-02, 3.569e-01, 5.130e-02, -1.371e-01, -1.584e-02, 2.103e-01, -4.593e-01, -1.627e-02, -3.550e-01, 3.969e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.261e-02, -1.549e-02, 7.325e-02, -5.494e-03, -8.480e-02, 1.868e-02, 2.876e-02, 5.045e-02, 8.408e-02, 3.500e-02, -5.359e-02, -4.843e-01, 2.199e-02, -1.043e-01, 2.972e-01, 5.220e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.231e-01, -6.732e-02, 3.430e-02, -9.107e-02, -1.767e-01, -8.722e-02, 2.471e-02, -5.755e-02, 3.489e-02, 9.203e-02, 2.265e-02, 2.308e-02, -4.872e-01, 1.475e-01, 1.755e-01, -1.433e-01), r2);\n\tr0 = MulAdd(s0_2_2, M4(2.863e-02, 8.084e-02, -3.705e-02, 7.152e-03, 1.688e-01, -2.701e-02, 1.544e-02, 1.577e-01, -9.706e-02, 1.224e-02, -1.930e-02, 1.080e-01, 2.449e-02, -2.085e-01, 9.539e-02, 6.446e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.278e-02, 2.423e-02, -6.449e-02, 1.108e-02, 1.826e-02, 5.656e-02, -6.023e-05, 5.363e-02, 2.012e-02, 1.050e-02, 6.042e-03, -1.679e-01, -8.546e-03, -2.296e-01, 3.288e-02, 6.906e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(8.388e-02, -2.117e-02, -8.629e-03, 5.410e-02, -1.548e-01, -1.168e-03, -2.935e-02, -7.434e-02, 1.562e-02, -5.832e-03, 5.447e-02, 5.615e-02, 1.025e-01, -2.264e-02, -7.165e-03, -9.662e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(4.393e-02, -3.295e-02, -4.448e-02, -2.675e-01, -1.621e-01, 1.144e-02, 2.604e-02, 3.273e-02, 1.915e-01, -1.818e-01, 1.968e-02, -1.508e-02, -1.921e-01, -1.484e-01, -3.336e-02, -4.131e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(2.569e-01, -2.582e+00, 1.893e-02, 3.325e-01, -8.104e-04, 8.359e-02, -1.199e-02, -1.625e-01, 3.504e-02, 2.130e-01, 2.373e-02, -1.410e-01, -1.670e-02, -5.005e-01, -8.379e-02, -4.381e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.399e-01, -5.492e-02, 7.391e-02, 4.285e-02, -5.533e-02, -1.231e-01, -1.896e-02, -3.396e-03, 4.602e-02, -3.153e-02, 9.462e-02, -3.125e-02, -2.166e-04, 1.351e-01, -1.085e-02, -5.224e-02), r2);\n\tr0 = MulAdd(s1_0_1, M4(3.487e-01, -7.019e-02, -1.621e-01, -3.816e-01, -8.034e-02, -1.074e-01, -1.206e-02, -1.835e-02, -1.821e-01, -3.839e-01, -3.959e-01, 8.855e-02, -2.417e-01, -2.423e-02, -4.326e-01, 1.238e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(4.290e-03, 1.489e-01, 9.698e-02, -5.690e-01, 4.466e-03, -3.371e-02, 1.130e-02, -1.867e-01, 6.432e-02, 1.257e-01, -8.754e-02, -2.624e-02, -6.373e-02, -4.008e-01, 1.415e-02, 9.504e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.057e-02, 1.400e-01, 4.181e-01, 2.088e-02, -5.234e-02, -1.978e-02, -1.528e-02, -1.689e-03, 1.184e-01, 1.135e-01, -3.136e-02, 5.561e-02, -2.182e-01, -3.383e-01, -8.270e-02, 2.507e-03), r2);\n\tr0 = MulAdd(s1_0_2, M4(2.802e-01, 7.662e-02, 5.710e-02, -2.369e-01, -5.326e-02, 8.114e-02, -8.379e-03, 1.163e-01, 2.007e-01, -9.951e-02, -2.607e-01, 6.310e-02, -1.718e-03, 7.582e-02, 1.765e-01, 2.865e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-5.031e-03, 1.033e-01, -5.366e-03, 9.244e-02, 2.857e-03, -4.543e-02, -5.357e-03, -6.026e-02, 7.987e-02, -6.349e-04, 1.721e-03, -1.385e-01, 2.753e-02, 1.200e-01, -1.163e-02, 1.723e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.464e-01, 1.029e-01, 1.336e-02, 3.836e-02, 1.447e-02, -4.724e-02, 1.229e-02, 5.121e-03, -1.277e-02, -5.675e-02, 4.433e-02, -3.360e-03, -1.468e-01, 7.835e-02, -1.192e-02, -1.411e-02), r2);\n\tr0 = MulAdd(s1_1_0, M4(-1.155e+00, -4.480e-02, 9.309e-02, -4.840e-01, -2.822e-01, 2.839e-02, -2.803e-02, 1.155e-01, -5.551e-01, -2.681e-01, -9.137e-03, 5.448e-02, -1.200e+00, -3.168e-01, -4.549e-02, 4.248e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(6.270e-01, -1.010e-01, 2.300e-01, -3.078e-01, -8.238e-02, 2.719e-01, -5.990e-02, -7.224e-02, 6.262e-02, 3.181e-01, -6.099e-02, -5.150e-02, -2.629e-02, -2.842e-01, 5.434e-03, 4.125e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(3.415e-01, 1.793e-01, -1.568e-02, 3.302e-01, -8.442e-02, -3.291e-02, 2.154e-03, 1.605e-02, 6.640e-02, 2.173e-01, -2.463e-02, 6.188e-02, -2.254e-01, -7.148e-02, -3.065e-02, -1.073e-01), r2);\n\tr0 = MulAdd(s1_1_1, M4(5.716e-02, -4.461e-01, 2.311e-01, 7.908e-01, -2.363e-01, -5.926e-02, 1.901e-03, 2.347e-01, -5.171e-01, -1.383e-01, -2.228e-01, -6.570e-01, -7.284e-01, -5.200e-01, 2.967e-02, 1.179e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.708e-01, 1.357e-01, -5.094e-02, 1.196e-01, -1.033e-01, -1.548e-01, 1.367e-02, -5.055e-02, 7.184e-02, 1.133e-01, -1.069e-01, -6.623e-01, -1.166e-01, -1.765e-01, 1.748e-01, 2.983e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.811e-02, -1.396e-01, -5.402e-02, -1.027e-01, 4.418e-02, -3.840e-02, -2.957e-03, -9.759e-02, 5.618e-01, 2.555e-01, 5.290e-03, 1.648e-01, -3.711e-01, 1.813e-01, -5.165e-02, -8.706e-03), r2);\n\tr0 = MulAdd(s1_1_2, M4(2.942e-02, 1.904e-01, 2.664e-02, -5.421e-04, -5.558e-02, 1.484e-01, 6.836e-02, 2.482e-01, 1.626e-01, -1.076e-01, 1.891e-02, 2.238e-02, 1.782e-01, -1.802e-01, -1.743e-01, -5.355e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(4.479e-02, 2.373e-02, -1.670e-02, -2.848e-01, 2.063e-02, -1.170e-01, -3.136e-03, -2.457e-01, 6.175e-02, -1.254e-02, 1.866e-02, -1.387e-01, -7.886e-02, 3.014e-02, 1.921e-02, 7.901e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(5.406e-02, -9.129e-02, 1.495e-02, -2.949e-02, 1.095e-01, -4.392e-02, -2.196e-02, 2.408e-02, -3.649e-02, 1.296e-01, 9.234e-02, -1.345e-01, -5.041e-02, 6.324e-02, -1.775e-02, -2.158e-03), r2);\n\tr0 = MulAdd(s1_2_0, M4(8.679e-02, 5.701e-02, -6.133e-02, -9.642e-02, -3.772e-01, 6.917e-02, -8.084e-02, 1.610e-01, -1.811e-01, -1.501e-01, 1.724e-01, 1.036e-02, 5.775e-02, -2.087e-02, 4.915e-02, -1.170e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(-1.613e-03, -4.104e-03, -7.692e-02, -7.496e-02, -3.253e-02, -1.734e-02, -7.336e-02, -1.748e-01, 6.113e-02, 9.483e-02, 4.794e-02, 5.502e-01, 7.052e-02, 3.529e-02, 4.266e-02, 1.345e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(-7.282e-03, 9.590e-02, -7.558e-03, 1.223e-01, -7.738e-02, -6.485e-02, 3.983e-03, -6.360e-02, -2.617e-02, -8.540e-03, 6.395e-02, -3.045e-02, 4.676e-03, 3.692e-02, 4.479e-02, 5.626e-02), r2);\n\tr0 = MulAdd(s1_2_1, M4(-1.043e-02, 7.251e-02, 2.617e-02, 1.771e-01, -3.045e-01, 2.153e-01, 9.522e-03, 1.842e-01, 1.631e-01, -8.144e-02, 2.290e-01, 1.197e-02, 1.878e-01, -8.502e-02, -4.346e-02, -6.858e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-9.532e-02, 1.544e-01, 1.752e-02, -2.860e-02, -1.514e-02, -8.833e-02, -2.373e-02, -2.523e-01, 4.630e-02, -2.007e-02, 5.019e-02, 1.888e-01, -1.252e-02, 5.758e-02, 1.080e-02, 5.630e-04), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.568e-01, -6.033e-02, -7.233e-03, -6.183e-04, 3.094e-02, 3.673e-02, -8.772e-04, -3.506e-02, 1.865e-03, -8.704e-02, 5.076e-02, 9.331e-03, -1.258e-02, -7.546e-02, -2.753e-02, 1.451e-01), r2);\n\tr0 = MulAdd(s1_2_2, M4(-3.943e-02, -7.739e-02, 1.141e-02, 3.386e-02, 2.409e-03, -1.048e-03, -1.029e-02, 2.017e-01, 9.139e-02, 1.907e-02, 7.202e-02, -5.458e-02, 1.323e-01, 4.419e-02, -3.845e-02, 2.763e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(4.840e-02, -2.158e-02, -2.862e-02, -2.257e-02, 2.203e-02, -9.015e-02, -3.538e-02, -1.152e-01, 4.691e-02, 6.075e-02, 6.068e-02, -9.781e-02, -1.055e-02, 8.470e-02, -4.911e-02, 1.405e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.508e-02, 1.151e-02, -2.563e-03, -6.476e-02, 9.839e-03, -7.904e-02, 1.169e-02, 9.615e-03, 1.173e-01, 3.705e-02, -1.100e-02, -1.275e-02, 1.690e-02, 5.741e-02, -3.376e-02, 3.410e-02), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.073e-01, -2.885e-03, 7.948e-03, 1.310e-01, 1.655e-01, -3.284e-02, -1.090e-02, 1.014e-02, -1.347e-01, -2.421e-02, -1.323e-01, -3.403e-02, -1.109e-01, -2.861e-02, 9.110e-02, -9.107e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.079e-02, -1.731e-01, 7.495e-02, 2.995e-02, 4.917e-03, 1.123e-02, 1.015e-02, -9.103e-02, -3.501e-02, -8.630e-02, -2.111e-02, 2.900e-01, 2.264e-02, 4.362e-01, -6.079e-02, 5.780e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(5.937e-02, 1.048e-01, -3.052e-02, 5.846e-03, -3.546e-02, -1.096e-02, 6.774e-03, 8.801e-03, -1.333e-01, 1.456e-01, 2.041e-02, 3.865e-02, -5.588e-02, -2.757e-02, -1.255e-02, 4.885e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(-2.114e-02, 1.890e-01, -6.080e-02, 1.601e-01, 9.935e-02, -4.446e-02, -1.694e-01, 1.226e-02, -3.223e-02, -1.327e-01, -2.163e-01, -5.216e-02, 3.068e-02, -2.806e-01, -2.214e-01, -5.581e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(1.159e-02, 6.686e-02, -1.203e-02, 2.586e-02, -2.453e-02, 1.501e-01, 1.428e-02, -1.431e-01, -1.293e-02, 1.005e-01, -5.598e-03, 4.522e-01, 2.570e-02, -1.836e-01, -9.186e-03, 1.243e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(6.832e-02, 1.109e-01, 2.888e-02, -7.086e-03, 6.509e-02, -1.226e-02, 4.822e-02, -2.200e-02, -3.422e-01, 8.815e-02, -4.828e-02, 1.967e-02, 4.237e-02, -1.083e-01, 4.111e-02, 1.588e-03), r2);\n\tr0 = MulAdd(s0_0_2, M4(-6.349e-02, 5.097e-02, 4.853e-02, -6.523e-02, 1.366e-01, 3.237e-02, 1.391e-01, 4.145e-02, -1.073e-01, -1.427e-01, -3.020e-01, 1.075e-02, 9.771e-02, 3.156e-03, -7.502e-02, -6.412e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.023e-02, -1.925e-02, 2.873e-02, -1.734e-01, -3.196e-02, 1.403e-01, 2.582e-02, -3.704e-02, -2.347e-02, -1.496e-02, -4.016e-02, 2.252e-01, -5.528e-02, -2.551e-02, -6.763e-03, 2.616e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.654e-03, -7.653e-02, 1.654e-02, 6.765e-03, -4.989e-02, 9.351e-02, 3.588e-02, 3.366e-02, -2.376e-01, -3.120e-02, -5.345e-02, -3.772e-02, -8.353e-02, -9.581e-03, -1.173e-02, -2.972e-02), r2);\n\tr0 = MulAdd(s0_1_0, M4(5.712e-01, 4.305e-02, 3.184e-02, -5.558e-02, -3.975e-02, 3.606e-02, 1.344e-01, -3.962e-02, 2.982e-01, -6.053e-04, -1.589e-01, 9.418e-02, -4.619e-01, -1.875e-01, 3.955e-02, 5.997e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-6.087e-02, -2.704e-01, 4.492e-02, 3.213e-01, 8.188e-02, -8.424e-01, 3.334e-02, -1.295e-01, 1.910e-02, -1.045e-01, 1.563e-02, 2.160e-01, -6.658e-02, 3.979e-01, -1.040e-01, 2.705e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-3.647e-02, 2.265e-02, 7.663e-03, -1.333e-02, 1.210e-01, -3.067e-02, -3.087e-03, 2.872e-02, -1.376e-02, 1.022e-01, 5.203e-02, 1.622e-02, -7.550e-02, -4.181e-02, -7.325e-02, -6.054e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(8.488e-01, 1.048e-01, 4.430e-01, 1.287e-01, 5.247e-01, -2.116e-01, 2.249e-01, -6.028e-02, -1.546e-02, -2.114e-01, -1.140e-01, -4.995e-02, -6.261e-01, -8.701e-02, 1.658e-02, 4.500e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(2.563e-02, 1.447e-01, 1.530e-02, 1.216e-01, -8.168e-03, -2.397e-01, 1.693e-01, -5.370e-01, -3.994e-02, 6.204e-02, -2.108e-02, 1.067e-01, -8.619e-02, 2.862e-01, -2.427e-01, 1.871e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.221e-01, -2.916e-01, -1.003e-01, -4.690e-02, -1.488e-02, 3.652e-03, -1.911e-01, 2.983e-02, -2.231e-01, 9.535e-02, -2.069e-02, 1.122e-01, 2.362e-01, 3.100e-01, 3.006e-02, -1.024e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(1.916e-02, 1.040e-01, 5.935e-02, 8.190e-02, 2.416e-01, 3.663e-03, 2.324e-02, -4.383e-01, -4.091e-02, -9.447e-02, -1.357e-01, 9.980e-02, 1.471e-01, -3.115e-02, -1.516e-01, -4.576e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(5.641e-02, -1.140e-01, -1.471e-02, -3.351e-01, 2.183e-02, 1.148e-01, -3.533e-02, -2.080e-01, -3.132e-02, 6.610e-02, -3.884e-03, 4.195e-01, 2.519e-02, 9.057e-02, -1.061e-02, 9.321e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(8.883e-02, -6.591e-02, -1.204e-02, -7.192e-02, 1.578e-01, 1.506e-01, -3.464e-02, 1.097e-01, -5.575e-01, -2.792e-02, -8.415e-03, -3.757e-02, -2.318e-01, 4.881e-02, 2.612e-02, -7.005e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(-1.831e-01, 3.585e-02, 2.233e-02, 6.002e-02, 2.055e-01, -7.205e-02, 3.852e-03, -5.522e-02, -8.859e-02, -7.539e-02, -8.218e-02, 2.046e-02, 3.419e-01, -6.625e-02, -2.028e-02, -1.508e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(4.121e-02, 2.850e-01, 2.148e-03, -1.046e-01, 5.802e-02, -2.377e-01, 1.353e-02, 3.650e-02, -2.001e-02, 1.320e-01, -7.943e-03, -3.328e-03, -1.779e-02, 3.090e-02, 5.641e-02, 5.749e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.268e-01, -9.738e-02, 4.717e-02, -3.273e-02, 1.548e-01, 1.124e-01, 3.914e-02, 4.995e-02, -2.959e-01, -5.985e-03, -1.985e-02, 4.931e-02, -2.142e-01, -3.858e-02, -5.355e-02, -5.923e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(1.941e-02, 1.313e-01, -3.649e-02, 3.128e-02, -8.230e-01, 1.338e-02, 1.548e-01, 5.652e-02, -3.031e-01, 3.842e-02, -1.023e-01, 1.008e-01, 2.879e-01, -9.801e-02, -1.586e-02, -1.170e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.419e-02, -5.248e-02, 3.668e-02, -5.624e-02, 9.053e-02, -2.086e-02, 5.137e-01, 3.149e-01, -1.649e-02, 5.181e-02, 3.778e-02, 2.124e-01, -3.838e-02, 1.525e-01, -1.075e-03, 2.692e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.691e-01, 1.897e-02, 3.591e-02, 1.446e-02, 2.190e-01, -3.740e-01, 2.753e-02, 1.964e-01, -3.154e-01, 6.559e-02, 3.800e-02, 3.765e-02, 1.991e-02, -5.351e-03, -1.587e-01, -4.168e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(-1.926e-01, 7.593e-02, 1.169e-02, 1.982e-02, -2.546e-01, 9.980e-02, 1.278e-01, -1.172e+00, -1.775e-01, 6.683e-02, -1.432e-01, -5.396e-02, 1.596e-01, 2.865e-02, -1.246e-01, -5.689e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.611e-02, -8.472e-02, 8.093e-04, 1.619e-02, 4.636e-03, -1.238e-01, 3.457e-02, -5.895e-01, -2.843e-02, -1.275e-01, 1.789e-02, 1.288e-01, 5.508e-02, 1.199e-01, -1.875e-02, 1.774e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.548e-01, -4.316e-02, -8.196e-03, -4.015e-03, 2.926e-01, 1.181e-01, 1.038e-01, 9.861e-02, -2.074e-01, 3.924e-02, 2.767e-02, -1.060e-02, -4.989e-02, 1.194e-01, 2.919e-02, -7.371e-02), r2);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n}\n\n//!PASS 4\n//!DESC conv3 (12x12)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2\n//!OUT T3, T4, T5\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.147e-03, -3.143e-02, 1.999e-01, -2.199e-02, -5.716e-02, -2.313e-02, -4.360e-02, 4.923e-04, -6.488e-03, 3.834e-02, 2.813e-02, 1.077e-02, -3.076e-02, 4.032e-02, 1.017e-01, 3.632e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-9.244e-02, -6.314e-02, 4.337e-02, 4.995e-02, -1.294e-01, -1.617e-02, 5.786e-02, -3.886e-03, 1.227e-03, 2.723e-02, 5.879e-02, 3.083e-02, 1.589e-02, -9.004e-02, 3.810e-02, 1.606e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(5.131e-03, -5.730e-03, 1.233e-02, -2.174e-02, -1.112e-01, -2.886e-02, -9.422e-03, -1.850e-02, 1.429e-02, -1.700e-02, -2.908e-02, -1.046e-02, -1.151e-01, 5.771e-02, 1.671e-01, 7.104e-02), r2);\n\tr0 = MulAdd(s0_0_1, M4(1.237e-01, -8.863e-02, 1.301e-01, -1.038e-02, 6.233e-02, -6.462e-02, 5.774e-04, 2.709e-02, 2.100e-02, 4.533e-02, 1.935e-02, -2.740e-02, -6.144e-03, -5.068e-02, 6.931e-02, 4.801e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-3.669e-02, 8.264e-02, 1.100e-01, 7.740e-02, -2.588e-02, 4.328e-02, -1.581e-01, -2.277e-01, -1.660e-02, -4.844e-02, 9.342e-03, 1.578e-01, -1.481e-01, -2.769e-01, -3.135e-01, -7.017e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.168e-01, 4.617e-02, 2.075e-01, 7.056e-02, 3.399e-02, -2.130e-02, 1.207e-01, -9.114e-04, 8.850e-02, 1.922e-02, -6.396e-03, -1.863e-02, -6.756e-02, 6.373e-02, 2.490e-01, 1.899e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(-1.238e-01, -4.603e-02, 8.335e-02, 1.714e-02, 3.356e-02, -2.488e-02, -6.843e-03, -3.544e-02, 9.339e-03, 3.138e-02, 4.410e-02, -1.285e-02, 3.697e-04, -1.566e-02, -1.649e-02, -2.697e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.567e-01, -1.790e-02, 1.265e-03, 1.499e-01, 8.410e-02, -3.771e-02, -4.766e-02, -1.852e-02, 8.719e-02, -3.163e-02, 4.318e-02, 2.248e-01, -1.116e-01, 3.596e-02, 7.247e-02, -4.053e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-3.996e-02, 2.926e-02, -1.334e-01, -9.393e-03, -2.310e-02, 1.175e-02, 6.418e-02, -9.978e-03, 1.348e-02, -5.206e-03, 1.179e-01, 5.048e-03, 2.366e-03, 3.495e-02, 2.292e-03, -2.825e-02), r2);\n\tr0 = MulAdd(s0_1_0, M4(-1.566e-02, 9.339e-03, 2.398e-01, 4.516e-02, 5.502e-03, 1.579e-01, -8.590e-02, 2.838e-02, -3.432e-02, -1.333e-01, 7.881e-02, 1.685e-01, -2.494e-01, 1.004e-01, 1.295e-01, -1.777e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-5.529e-02, -1.743e-01, -1.600e-02, 3.006e-02, -1.649e-02, 1.687e-01, 1.343e-01, 1.091e-02, 1.558e-01, -1.972e-01, 3.818e-02, 2.611e-01, 2.312e-01, 3.221e-02, 4.857e-02, -6.451e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.293e-02, 2.188e-02, 1.861e-02, 1.304e-02, -1.124e-01, -8.472e-02, 2.078e-02, -5.474e-02, -9.059e-02, 1.047e-02, 4.283e-01, 8.854e-02, -3.296e-01, 1.392e-01, 2.329e-01, 6.949e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(2.407e-01, 1.095e-02, -3.481e-01, 6.020e-02, 9.225e-02, 1.055e-01, -1.694e-01, -2.212e-01, -9.128e-03, -2.613e-01, 2.895e-02, -9.241e-03, 3.991e-03, 1.495e-01, -1.157e-01, -1.323e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(2.431e-01, 2.028e-01, 1.762e-01, 3.523e-02, -3.615e-01, 2.292e-01, 1.598e-01, 1.991e-01, 1.827e-01, 2.670e-02, -4.757e-01, -1.609e-01, -1.305e-01, -7.384e-01, -6.952e-01, -3.849e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.607e-01, 2.432e-01, 2.273e-02, 1.787e-01, 2.939e-01, 8.720e-02, 1.118e-01, 6.963e-02, 6.469e-02, -1.566e-03, -3.076e-01, -9.642e-02, -3.702e-01, -2.907e-02, 2.848e-01, -7.739e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(-1.233e-01, -4.466e-03, -4.747e-03, 1.248e-01, -3.747e-02, 6.510e-02, 4.517e-02, 5.404e-02, -2.516e-02, -3.611e-02, -9.053e-02, 3.989e-02, 7.578e-04, -9.800e-03, 1.380e-02, -5.194e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.442e-02, 1.388e-04, 8.914e-02, 1.211e-02, 1.809e-01, -1.149e-01, 1.986e-01, 1.294e-01, 7.698e-02, -8.799e-03, -2.692e-02, -7.576e-02, -2.426e-01, 9.821e-04, -3.852e-01, -1.144e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(5.533e-02, 6.612e-03, -1.211e-01, 2.766e-02, -1.013e-02, 7.833e-02, -3.847e-02, -1.354e-02, -4.257e-02, 4.314e-03, 1.118e-01, -1.486e-02, -1.562e-02, 4.944e-02, 6.707e-03, 1.726e-03), r2);\n\tr0 = MulAdd(s0_2_0, M4(-1.828e-02, 3.186e-02, 7.008e-02, 1.467e-02, -5.390e-02, 6.998e-02, -2.090e-01, 1.121e-01, 1.135e-01, 1.392e-01, 2.343e-01, -1.275e-01, -1.597e-02, -2.249e-01, 1.748e-02, 7.336e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(8.772e-03, -7.248e-02, 2.408e-02, 2.096e-02, 5.329e-02, 4.772e-02, -1.299e-01, -2.172e-02, 1.979e-01, 9.474e-05, 2.407e-01, 3.252e-01, -5.506e-03, 6.287e-02, -1.730e-03, 3.169e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-9.102e-03, 5.103e-03, -1.744e-02, 1.001e-02, -1.274e-01, -2.264e-02, -1.151e-02, 3.246e-02, 2.776e-01, 7.105e-02, -1.446e-01, 2.476e-02, 4.479e-02, 6.260e-02, -1.338e-03, 2.897e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(1.228e-01, 8.960e-02, 8.093e-02, -2.799e-05, 1.190e-01, 1.063e-01, -3.685e-01, 3.667e-01, -2.387e-01, 1.362e-01, 1.210e-01, 8.433e-02, 2.846e-02, -5.068e-01, 5.973e-02, -1.317e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(7.571e-02, 2.136e-02, 7.805e-02, 3.014e-02, -7.544e-02, 9.455e-02, 4.176e-02, -1.479e-01, 2.568e-01, 9.643e-02, 9.639e-02, 2.046e-01, -1.374e-01, -7.046e-02, 1.292e-01, 5.363e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(5.958e-02, 6.190e-02, 9.003e-04, 3.730e-02, 1.470e-01, 1.538e-01, 1.838e-02, 1.094e-01, 1.116e-01, 6.421e-02, -1.323e-01, 1.187e-01, 8.592e-02, 7.174e-02, -2.447e-03, 6.736e-03), r2);\n\tr0 = MulAdd(s0_2_2, M4(-6.127e-03, 9.709e-02, 2.057e-02, -4.134e-02, -6.237e-02, 4.134e-02, -1.039e-01, 1.871e-01, 5.981e-02, 5.446e-02, 1.977e-02, -4.733e-03, 2.173e-02, -4.688e-02, -2.097e-03, 7.559e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(8.685e-02, 3.885e-02, 1.744e-01, -2.946e-02, -8.860e-02, -7.615e-03, -1.294e-01, 1.775e-02, 4.080e-02, -5.161e-02, 1.075e-01, -3.325e-02, 1.357e-01, -8.583e-03, -5.626e-02, 2.045e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(7.202e-02, -6.692e-03, -5.426e-02, -1.738e-02, -1.452e-02, 4.147e-02, -2.179e-03, 3.438e-02, -3.539e-02, 2.192e-02, -5.047e-02, -8.028e-03, 4.465e-02, 3.430e-02, -4.107e-02, 1.032e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(-9.155e-02, -6.270e-02, 2.491e-01, -9.078e-03, -1.985e-02, -2.527e-02, 1.294e-02, 1.184e-02, 6.516e-02, -7.880e-02, 2.050e-01, 5.405e-02, -3.738e-03, 2.451e-02, -5.778e-03, 3.930e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.140e-01, 3.787e-02, 7.493e-02, 6.210e-02, -4.014e-02, 2.540e-02, 5.631e-02, -1.270e-02, 8.988e-03, -9.654e-02, 4.168e-02, 3.745e-02, -6.064e-02, 5.811e-02, 2.493e-02, -1.385e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(-1.342e-01, 6.066e-03, 4.127e-02, 3.284e-02, -7.692e-02, -4.837e-03, 7.426e-02, -1.543e-02, -7.040e-03, -2.499e-02, -6.237e-02, -7.423e-02, -4.926e-02, -3.503e-02, 1.891e-02, -4.812e-02), r2);\n\tr0 = MulAdd(s1_0_1, M4(-5.188e-02, 5.996e-02, 2.666e-01, 1.267e-01, 4.252e-02, -6.213e-02, 1.026e-02, -1.829e-02, -4.100e-03, -2.456e-01, 6.870e-02, -7.469e-03, -6.306e-02, -2.325e-02, -1.835e-03, -4.983e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.289e-02, 9.127e-02, 8.528e-02, 1.469e-01, 7.349e-02, -1.160e-02, 5.081e-03, -2.180e-01, -1.665e-01, 6.872e-02, -1.085e-02, 9.080e-02, -4.386e-02, 2.612e-02, -6.812e-03, -1.090e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-2.605e-01, 2.218e-02, 3.228e-01, 1.623e-01, 4.207e-02, -1.131e-02, 5.821e-02, 5.515e-03, 6.305e-02, -4.059e-02, 1.051e-01, 4.794e-02, 3.982e-02, -8.629e-03, -1.727e-02, 3.937e-03), r2);\n\tr0 = MulAdd(s1_0_2, M4(-6.767e-02, 1.228e-01, 2.071e-02, 1.429e-02, -7.827e-02, -6.816e-02, 2.627e-02, -2.231e-02, -7.160e-02, -6.749e-03, 1.528e-02, 3.940e-02, 1.077e-02, 1.025e-02, -5.558e-03, -1.468e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(1.841e-01, -4.603e-02, -3.773e-02, 9.032e-02, 1.051e-01, -5.057e-02, -8.862e-02, -1.925e-01, 1.857e-01, -2.249e-02, -3.799e-01, 2.612e-02, -2.045e-01, 1.740e-02, -9.103e-03, -2.066e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(-2.846e-03, 6.666e-02, -1.284e-01, 5.556e-02, -7.713e-03, 6.924e-04, 3.504e-02, -6.498e-03, -1.640e-01, 3.185e-02, -1.319e-01, -6.169e-03, -3.910e-02, -2.686e-02, -2.949e-02, -1.605e-02), r2);\n\tr0 = MulAdd(s1_1_0, M4(7.939e-02, 3.356e-02, 5.530e-01, 4.903e-02, 8.573e-02, 5.080e-02, 1.974e-01, 8.937e-03, -2.743e-01, 1.401e-01, -7.677e-02, -1.633e-01, -5.816e-02, 7.878e-02, 1.803e-01, 1.909e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(5.803e-02, -3.197e-01, 8.781e-02, 8.940e-02, 9.154e-02, 2.225e-02, 1.476e-01, -2.870e-04, -9.272e-02, -2.495e-02, -1.920e-01, -3.183e-02, -6.969e-02, -1.345e-02, 3.260e-02, -7.009e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(4.459e-02, 5.366e-02, 4.856e-03, 5.695e-02, 1.046e-01, 1.130e-02, 2.837e-02, -9.776e-03, -2.744e-01, 4.807e-02, 7.303e-02, 8.264e-02, -5.158e-02, -1.575e-02, -3.077e-02, -1.079e-02), r2);\n\tr0 = MulAdd(s1_1_1, M4(-2.119e-01, -2.433e-01, -8.002e-01, -9.634e-02, -4.159e-01, 2.276e-01, 3.242e-01, 6.349e-02, 5.385e-01, 5.294e-01, -5.681e-01, -1.958e-01, 5.081e-02, 1.950e-03, -3.350e-01, -7.096e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(3.944e-01, 5.473e-01, 5.571e-01, 4.248e-01, -2.681e-01, -2.163e-01, 7.107e-02, -1.456e-01, 1.304e-01, -5.414e-02, -1.021e-01, -3.661e-01, -3.188e-02, -4.089e-02, 1.668e-01, -2.340e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.087e-01, 2.611e-01, -2.388e-01, 5.301e-01, 1.501e-01, 4.633e-02, -2.534e-01, 8.006e-02, 1.818e-01, 5.141e-01, 2.705e-01, 4.945e-02, -1.634e-01, 1.641e-01, 1.622e-01, 1.451e-01), r2);\n\tr0 = MulAdd(s1_1_2, M4(-6.611e-02, -2.156e-01, -7.073e-03, -1.890e-01, 7.509e-02, 3.447e-01, 1.394e-01, 7.120e-02, -1.499e-01, 3.424e-02, 2.644e-02, -1.152e-01, 7.010e-04, -2.442e-02, -2.530e-02, 4.683e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-1.967e-01, -1.901e-01, 9.396e-02, -1.203e-01, -7.922e-03, 6.985e-02, 1.736e-01, -3.898e-01, 1.512e-03, -4.870e-02, 6.774e-02, 7.830e-02, -2.522e-01, 4.870e-02, -9.542e-02, -2.567e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(3.454e-03, 7.145e-02, 5.008e-02, -1.265e-01, 5.799e-02, -2.274e-02, -1.206e-01, 6.433e-02, 2.328e-01, 1.078e-01, -1.514e-01, 8.676e-02, 3.888e-02, 1.065e-02, 2.948e-02, 2.620e-02), r2);\n\tr0 = MulAdd(s1_2_0, M4(-9.943e-02, 1.274e-01, 2.744e-02, -6.320e-02, 2.240e-02, 3.819e-02, -5.030e-02, 7.096e-03, 3.115e-02, -9.540e-02, 2.267e-02, -2.325e-02, -2.451e-02, -8.073e-02, -1.197e-02, 2.537e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-5.043e-02, -1.310e-01, -1.248e-01, 5.699e-02, 5.065e-02, 5.507e-02, 2.126e-03, 7.604e-02, -1.109e-02, 4.748e-03, 4.480e-02, -7.888e-03, 1.950e-02, -8.252e-02, 1.175e-03, 9.189e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.009e-01, 3.767e-02, -6.039e-02, 1.837e-02, -6.330e-02, 2.647e-02, 4.195e-03, -9.567e-03, 6.778e-02, 6.756e-03, -4.456e-02, -5.696e-03, -6.599e-02, 2.700e-02, 3.778e-02, 1.596e-02), r2);\n\tr0 = MulAdd(s1_2_1, M4(7.110e-02, 1.958e-01, -9.620e-03, -1.475e-01, -2.569e-01, -2.023e-01, 5.212e-02, -6.246e-02, 7.396e-02, -2.228e-01, -1.093e-01, 5.474e-03, -6.186e-02, 3.593e-02, 1.263e-02, 9.349e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(3.542e-03, 9.631e-02, -2.951e-02, -1.706e-01, -1.705e-01, -5.293e-01, -2.059e-01, 2.797e-02, 1.571e-01, -3.753e-02, 2.195e-01, 9.552e-02, -2.251e-01, 5.198e-02, -2.562e-01, 6.117e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.765e-01, 8.966e-02, 9.960e-02, 1.291e-01, 1.322e-01, -1.170e-01, 3.148e-02, -5.781e-02, 1.486e-01, 1.540e-02, -8.425e-02, -3.068e-02, -1.620e-01, -1.487e-02, -2.292e-02, -1.627e-02), r2);\n\tr0 = MulAdd(s1_2_2, M4(4.150e-02, 6.568e-02, -5.718e-02, 2.960e-02, -1.978e-01, -3.677e-01, 2.086e-03, -3.175e-02, -8.061e-02, -1.340e-01, -6.160e-02, -2.485e-03, 4.553e-02, 2.958e-02, 1.223e-01, 3.920e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-3.258e-02, -5.477e-03, -3.057e-02, -4.284e-02, -1.197e-02, 9.217e-03, -3.683e-01, 5.082e-02, 2.611e-02, 1.189e-01, 1.939e-01, 2.538e-02, -4.202e-02, 4.599e-02, 1.417e-01, 6.977e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(2.921e-02, -3.269e-02, -4.897e-02, 1.156e-01, -1.598e-01, -9.644e-02, -2.202e-02, -3.648e-02, 3.609e-02, 5.847e-02, -4.901e-02, -3.992e-02, 4.314e-02, -4.972e-03, -2.500e-02, 1.170e-02), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(8.959e-02, -2.673e-03, -1.913e-01, -1.969e-02, -1.924e-02, 7.887e-02, 1.479e-01, 3.983e-02, 5.962e-02, 4.671e-03, -5.614e-02, 1.257e-02, -3.285e-02, 1.932e-02, -4.854e-01, -5.070e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.833e-01, -1.397e-02, -4.846e-02, 6.759e-02, 7.446e-02, 2.880e-02, -6.631e-02, 9.678e-02, 3.559e-02, 5.600e-02, -1.083e-01, -2.261e-01, -1.901e-04, 8.845e-02, -4.150e-02, -6.574e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-2.865e-02, -1.417e-03, 1.587e-01, 2.135e-02, 6.211e-02, 2.407e-03, 5.445e-03, 1.129e-03, 1.947e-01, 1.685e-02, -1.107e-01, -1.760e-02, 1.283e-01, 3.570e-02, 2.804e-02, 9.617e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(-7.865e-02, 1.634e-01, 1.912e-01, -7.252e-02, 6.024e-03, -4.853e-02, 1.958e-02, 7.229e-02, -1.205e-01, 2.693e-02, 1.399e-02, -1.265e-01, 1.274e-01, -1.318e-02, -4.794e-01, -3.490e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.910e-01, 1.039e-01, -1.583e-01, -5.036e-01, 1.124e-02, -1.249e-02, 1.995e-01, -1.294e-01, -9.577e-02, -3.329e-02, 2.657e-01, 1.559e-01, -4.041e-01, 6.030e-03, 3.768e-01, -5.834e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.017e-01, -8.637e-03, -2.858e-01, -7.349e-02, 6.686e-02, 6.969e-03, 1.692e-01, -2.241e-02, -3.378e-02, 3.035e-02, 1.345e-02, -2.253e-02, 2.920e-01, -8.633e-02, 1.511e-01, -7.850e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(8.925e-02, 2.178e-01, -4.665e-03, 2.277e-02, 3.629e-03, 8.271e-02, -5.387e-03, 2.279e-02, -1.161e-02, -4.201e-02, 5.092e-02, 2.161e-02, 3.574e-02, -1.967e-01, -1.515e-02, -1.112e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(9.262e-02, -4.582e-02, 1.278e-01, 1.155e-01, 4.126e-02, 4.902e-02, 8.342e-02, -2.260e-01, 8.453e-03, -7.318e-02, -8.308e-02, 2.059e-01, -1.412e-01, -2.276e-02, -2.710e-01, -1.484e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.228e-02, -3.395e-02, 2.571e-02, 1.297e-02, 3.723e-02, -2.071e-03, -7.338e-02, 1.827e-02, -8.719e-02, 6.320e-04, -1.144e-02, 3.006e-02, 8.714e-03, -1.242e-02, 1.132e-01, -1.156e-01), r2);\n\tr0 = MulAdd(s0_1_0, M4(-7.610e-02, 6.763e-02, -2.236e-02, -5.609e-02, 1.824e-01, -1.926e-01, 2.148e-01, -1.868e-02, 4.454e-02, -4.601e-01, -1.264e-01, -1.999e-02, 1.431e-01, -3.745e-02, 8.965e-02, 2.173e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.988e-01, -1.109e-01, -1.877e-01, -6.963e-02, 7.082e-02, 1.944e-01, 1.514e-02, 3.279e-01, -3.203e-01, -4.973e-01, -4.664e-01, 7.868e-02, 1.285e-02, -4.477e-02, 1.873e-01, -1.166e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(3.886e-02, 4.242e-02, -1.443e-01, -9.022e-03, 4.682e-01, -6.875e-03, 1.126e-01, -2.767e-02, 1.832e-01, 4.116e-02, -3.932e-02, -1.045e-01, -8.465e-03, 4.567e-02, 1.761e-01, -2.580e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(1.238e-01, -2.686e-01, -5.612e-02, -2.666e-03, 2.339e-01, 4.346e-01, 1.314e-01, 1.924e-02, -1.509e-01, -4.989e-01, 1.501e-01, 1.200e-01, -2.115e-01, 9.423e-02, 9.274e-02, 7.989e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-7.492e-02, -9.321e-02, -6.738e-01, -5.130e-02, -2.501e-02, -5.977e-02, 2.909e-01, 3.857e-01, 5.058e-01, 1.431e-01, 3.066e-02, -5.759e-02, -2.118e-01, 1.663e-01, -5.723e-01, -1.153e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-3.235e-01, -2.121e-01, 2.569e-01, -1.528e-01, -2.677e-01, -6.370e-02, -8.657e-02, -8.176e-02, -2.186e-01, -1.078e-01, -6.007e-02, 2.065e-01, 2.106e-01, -8.228e-02, -5.626e-02, 3.467e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(8.197e-03, -1.294e-01, 1.733e-02, 1.931e-02, -4.728e-02, -9.164e-03, -2.376e-02, 1.941e-02, -2.734e-04, -8.556e-02, 4.309e-02, -1.098e-01, 7.436e-02, 2.992e-01, -1.200e-01, 1.360e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.536e-02, -3.847e-02, -7.493e-02, -1.711e-01, -2.138e-02, 1.281e-02, -1.903e-02, 2.574e-01, -1.406e-01, 3.598e-02, 4.663e-02, -2.151e-01, 2.252e-01, -4.811e-02, 3.256e-01, 1.356e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-2.039e-02, -1.513e-02, 5.000e-02, -3.159e-02, 6.020e-02, 5.200e-03, -6.370e-02, 6.347e-03, -1.698e-01, -1.361e-02, 7.443e-02, -3.406e-02, 1.949e-01, -1.162e-03, 2.776e-02, 1.013e-01), r2);\n\tr0 = MulAdd(s0_2_0, M4(1.312e-02, -1.763e-01, 8.862e-02, 2.623e-02, 1.306e-01, 2.339e-01, 1.047e-01, -8.203e-02, 6.696e-02, 2.921e-01, 2.853e-02, -1.762e-01, 7.174e-03, -1.132e-01, -4.945e-03, 3.782e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.510e-01, -1.849e-01, -2.498e-01, 3.149e-02, 6.091e-02, 1.929e-01, 2.643e-01, -1.762e-02, -1.128e-01, -1.899e-02, 3.586e-02, -5.449e-02, 2.180e-02, 1.740e-02, 1.439e-01, -7.136e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.213e-02, -2.969e-02, 1.346e-02, -5.552e-02, 1.542e-02, 1.388e-01, -3.673e-02, -3.479e-02, -4.436e-02, -1.464e-02, 6.454e-02, -9.510e-02, 4.267e-02, 4.176e-02, 8.392e-03, -1.376e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(6.466e-02, 2.391e-02, -3.201e-02, -4.538e-02, 2.452e-02, -4.810e-01, -2.658e-02, -1.891e-01, -1.512e-01, 5.722e-01, 1.338e-01, -1.950e-01, -4.342e-04, -2.209e-01, -9.457e-02, -1.311e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(5.958e-02, 1.147e-02, -1.364e-01, 1.638e-02, 1.714e-01, 5.620e-02, -3.150e-02, 2.378e-02, -1.199e-01, -2.284e-01, -2.998e-01, 8.139e-02, 8.701e-02, 4.114e-02, -2.757e-01, 1.158e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(7.009e-03, -7.951e-02, 2.208e-02, -3.064e-02, -9.151e-03, -7.640e-02, -4.321e-03, -1.093e-01, -1.043e-01, 3.132e-01, -5.674e-02, -9.430e-02, 1.231e-02, -5.795e-02, -5.944e-03, -2.968e-04), r2);\n\tr0 = MulAdd(s0_2_2, M4(-2.373e-02, -8.691e-03, 1.635e-02, -3.386e-03, -3.621e-02, -1.071e-01, 3.716e-02, -8.890e-02, 3.590e-02, 1.002e-01, 4.824e-02, -5.250e-05, 8.642e-03, -1.223e-01, -1.065e-02, 5.611e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-3.300e-02, 2.259e-02, -7.543e-02, 5.432e-02, -2.628e-02, -5.818e-02, -1.636e-01, -5.271e-02, 1.063e-01, 1.479e-02, -8.713e-02, 2.314e-02, -8.093e-02, 2.952e-02, 2.613e-01, -9.142e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(4.313e-02, 8.823e-03, -3.201e-02, -1.316e-02, -2.353e-02, 7.162e-03, -3.505e-02, -1.920e-02, -8.286e-02, 3.308e-02, 7.691e-02, -5.758e-02, 9.153e-03, -8.647e-03, 1.455e-03, 4.797e-02), r2);\n\tr0 = max(r0, 0.0);\n\tT3[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT4[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT5[gxy] = r2;\n}\n\n//!PASS 5\n//!DESC conv4 (12x12)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T3, T4, T5\n//!OUT T0, T1, T2\n\n#define L0(x, y) V4(O(T3, x, y))\n#define L1(x, y) V4(O(T4, x, y))\n#define L2(x, y) V4(O(T5, x, y))\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.727e-02, 1.309e-04, -2.908e-02, -1.519e-01, 1.611e-02, 2.656e-02, 3.036e-02, 3.973e-02, -2.100e-02, 7.087e-02, 9.405e-03, -2.025e-01, 4.330e-02, 3.116e-02, 5.007e-02, -1.908e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.694e-02, -2.915e-02, 1.031e-01, -3.175e-02, 6.607e-03, 3.992e-02, -3.433e-02, 5.501e-02, -1.906e-02, -1.098e-02, 9.639e-02, -5.927e-02, 2.369e-02, 5.583e-02, -2.333e-02, 9.832e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-7.803e-02, -3.739e-02, -1.933e-02, 1.024e-01, -1.521e-01, 3.436e-02, 4.797e-02, 3.213e-01, -3.358e-03, -1.906e-02, -2.163e-02, -9.750e-03, -1.862e-01, 6.813e-02, -4.663e-02, 4.062e-01), r2);\n\tr0 = MulAdd(s0_0_1, M4(-1.375e-02, -2.107e-02, -3.257e-02, 1.547e-05, 2.437e-01, 2.932e-02, 5.787e-02, 3.862e-02, -4.313e-02, 2.122e-02, -6.594e-02, -5.287e-01, 2.565e-01, -3.315e-01, 5.585e-01, 6.223e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-4.478e-02, -2.009e-02, -1.818e-01, 4.229e-01, 1.890e-01, 3.088e-01, -2.115e-01, 2.632e-01, 6.740e-03, -1.149e-01, -2.338e-01, -8.131e-02, 1.179e-01, 5.189e-01, -6.871e-02, 6.572e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(9.544e-02, -2.310e-02, 1.319e-02, -2.155e-03, 1.657e-01, 1.275e-01, 9.626e-02, 1.320e-01, -5.581e-02, -1.464e-02, -1.773e-02, -8.000e-02, -3.091e-01, 2.104e-01, 2.885e-01, 2.329e-01), r2);\n\tr0 = MulAdd(s0_0_2, M4(-5.065e-02, -5.446e-02, -4.944e-04, -4.034e-02, 2.173e-01, -1.188e+00, 3.492e-02, 8.569e-02, -2.253e-01, -1.364e-01, -2.281e-02, 4.662e-02, 7.683e-02, 3.363e-01, 2.751e-02, 5.878e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-3.541e-02, 4.402e-02, 1.278e-01, -5.958e-05, 2.019e-01, -2.443e-02, 7.934e-02, -2.750e-02, -1.170e-01, 4.724e-02, -3.210e-01, -2.888e-02, 9.608e-02, -3.064e-03, -1.704e-01, 5.073e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-5.317e-02, 1.861e-02, -3.147e-02, 1.764e-02, 6.342e-02, -1.906e-02, 1.107e-01, 6.477e-03, 3.684e-02, -1.680e-02, -3.109e-02, 6.510e-03, 2.112e-02, 1.938e-02, -4.183e-02, -2.323e-03), r2);\n\tr0 = MulAdd(s0_1_0, M4(1.369e-02, -1.626e-01, -2.324e-03, -4.431e-02, -3.652e-02, -2.324e-01, 9.196e-03, -4.186e-02, -3.299e-03, 7.190e-03, 2.213e-02, -9.451e-02, -3.175e-02, 3.957e-01, 7.511e-02, 1.300e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(4.700e-02, 4.942e-04, 1.577e-01, -7.593e-02, 1.132e-02, 1.635e-02, 5.359e-02, -1.383e-02, 1.741e-02, -4.700e-02, 2.583e-02, -2.823e-02, -2.998e-02, -5.311e-02, 9.678e-02, -6.823e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(6.940e-02, 3.588e-02, -5.945e-02, -2.764e-01, -1.241e-01, -1.561e-02, -3.800e-02, -1.604e-01, 6.185e-03, -4.971e-02, -4.575e-02, -1.440e-01, -4.246e-01, -1.055e-01, -5.973e-02, 1.199e-01), r2);\n\tr0 = MulAdd(s0_1_1, M4(2.337e-03, -1.924e-01, -3.161e-01, -9.626e-02, -1.748e-01, -2.902e-01, 5.678e-02, -2.327e-02, 1.482e-02, -1.355e+00, -1.255e-01, -1.991e-01, -2.053e-01, -2.881e-01, -2.781e-01, 1.659e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-3.018e-01, 5.700e-01, -4.147e-02, 2.329e-01, -1.323e-01, -3.702e-01, -5.547e-02, -1.158e-01, -1.180e-01, -3.622e-01, -1.965e-01, -2.838e-01, 7.697e-02, 2.177e-01, 2.398e-02, 7.737e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.881e-01, 2.156e-01, -6.043e-03, 2.901e-01, -2.456e-01, 2.506e-02, 2.579e-02, -1.253e-01, -6.158e-01, -7.861e-02, 1.898e-02, -6.450e-01, 2.607e-01, -1.314e-01, -1.252e-01, 1.173e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(1.588e-01, 1.607e+00, -2.734e-02, -4.375e-02, -2.085e-01, 1.261e+00, 4.343e-02, -3.755e-02, -3.069e-01, -2.184e+00, -2.134e-01, -5.473e-02, -9.711e-02, -2.158e-01, 2.559e-02, -4.767e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.075e-01, -1.688e-01, 1.132e-01, -4.721e-02, -1.274e-01, 4.799e-02, 3.502e-02, 1.615e-03, -3.057e-01, -2.144e-01, -2.676e-01, -8.032e-02, -5.124e-02, 3.688e-02, -2.506e-02, -2.667e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-9.215e-02, 1.764e-02, 1.775e-01, -4.549e-03, 5.221e-02, 1.022e-02, -5.686e-02, 2.772e-03, 5.294e-02, -1.681e-02, -3.037e-01, 2.625e-02, 3.732e-02, 6.646e-03, -9.539e-02, 1.593e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(9.284e-03, 4.993e-02, -1.048e-02, 2.463e-03, -5.395e-03, 1.577e-01, -3.834e-02, 3.186e-02, -5.844e-03, 6.341e-02, 6.016e-03, 1.367e-02, -1.788e-02, 8.847e-02, 2.978e-02, 1.645e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.667e-02, -3.454e-02, -2.804e-02, 5.984e-03, 7.738e-03, -2.588e-03, -2.645e-03, 7.407e-03, -9.127e-04, 2.816e-04, 8.593e-03, 1.721e-03, 7.138e-03, 3.430e-02, 2.528e-02, 5.629e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(-3.774e-02, -2.831e-02, -2.061e-02, 2.291e-02, 1.816e-02, -1.343e-02, 3.851e-03, 5.958e-03, -1.035e-01, -9.970e-03, -4.731e-03, 3.237e-02, -3.690e-02, 2.673e-03, -1.758e-02, -3.816e-03), r2);\n\tr0 = MulAdd(s0_2_1, M4(4.505e-02, 2.611e-01, 3.137e-02, 4.067e-02, -4.618e-02, -4.364e-01, -3.042e-02, 4.705e-03, -3.033e-02, -3.956e+00, -5.441e-02, -4.442e-02, 6.195e-02, -1.666e-01, 3.143e-02, 1.678e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.911e-02, -1.353e-01, -2.558e-02, -3.356e-02, 1.788e-02, 4.101e-02, 6.096e-03, 2.772e-02, 1.872e-02, -4.771e-02, -2.336e-02, -3.046e-03, -2.498e-02, -3.830e-02, -4.695e-02, -2.900e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(9.354e-02, -7.933e-02, 1.372e-02, -7.399e-02, 3.586e-02, -3.328e-02, -5.581e-02, 6.134e-02, -2.763e-01, -7.891e-02, 3.334e-03, 1.541e-02, -4.461e-02, 2.501e-02, 2.335e-02, -3.880e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(-6.245e-02, -1.883e+00, 3.229e-02, -3.081e-03, -2.046e-02, -5.972e-01, -4.816e-03, 2.912e-02, 8.596e-02, -6.499e+00, -1.353e-01, -2.070e-03, -1.564e-02, -1.813e+00, -1.290e-02, 2.735e-04), r0);\n\tr1 = MulAdd(s0_2_2, M4(-1.923e-02, -2.428e-02, 1.042e-02, -3.710e-03, 3.888e-02, 2.809e-02, 3.450e-02, 9.885e-03, 6.890e-03, 2.714e-02, 3.798e-02, 1.434e-02, -2.555e-02, -3.430e-02, 6.958e-03, -4.325e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(-3.717e-02, 2.387e-02, 6.532e-02, -3.033e-02, 1.984e-02, -1.703e-02, 1.334e-02, 1.720e-02, 5.117e-02, 2.950e-02, 6.385e-02, -1.740e-02, 7.149e-02, 3.934e-03, -1.840e-02, 2.502e-04), r2);\n\tr0 = MulAdd(s1_0_0, M4(2.592e-02, 5.290e-02, -4.970e-03, -2.054e-01, -3.755e-02, 6.851e-02, 2.846e-02, -6.425e-02, 2.337e-02, -1.741e-03, 4.046e-03, 3.506e-01, 2.250e-02, 1.069e-02, -2.982e-03, 2.453e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(2.055e-02, 7.572e-03, 9.458e-02, -7.228e-03, -1.751e-02, 2.368e-02, -1.224e-02, 7.985e-02, 4.653e-02, 2.804e-02, 1.246e-01, 6.385e-03, -4.385e-03, 1.936e-02, 2.964e-02, 2.826e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.951e-02, -1.862e-02, 4.773e-02, 5.444e-02, 2.359e-01, 1.292e-02, 1.690e-02, 1.086e-01, 1.928e-01, 3.997e-02, -7.160e-03, 6.125e-02, 5.878e-02, -1.612e-02, 1.681e-02, -6.123e-03), r2);\n\tr0 = MulAdd(s1_0_1, M4(-1.151e-01, 5.422e-02, 1.861e-02, -5.928e-02, 7.049e-03, 4.892e-02, 2.489e-02, 2.806e-02, 8.529e-02, -3.048e-02, -5.713e-02, 2.156e-01, 6.728e-02, -7.261e-03, -1.885e-02, 2.790e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.532e-01, -5.308e-02, -9.154e-02, -3.509e-02, -3.038e-02, 1.440e-01, 3.129e-01, 3.508e-01, 1.261e-01, -1.812e-02, -1.900e-02, 1.479e-01, 8.767e-02, 7.027e-03, -5.286e-02, 2.816e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(7.426e-03, 5.510e-02, -3.696e-02, -6.785e-02, 9.618e-03, 8.992e-02, 5.240e-02, -1.802e-01, -7.977e-02, -3.152e-02, 7.447e-02, -2.082e-02, -2.690e-02, 2.268e-02, 3.233e-02, 1.737e-02), r2);\n\tr0 = MulAdd(s1_0_2, M4(4.555e-02, 1.479e-02, 2.967e-02, -1.442e-02, 7.180e-03, -3.565e-01, -2.763e-02, -1.111e-02, -9.671e-03, -1.544e-01, -9.955e-04, 1.196e-01, 2.007e-02, 1.856e-01, 6.616e-03, 9.224e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(6.568e-02, -1.824e-02, 1.297e-01, -6.522e-02, 1.606e-01, -6.909e-02, 3.798e-02, -1.491e-01, -2.276e-02, 8.422e-03, 9.013e-02, -2.776e-03, 6.228e-02, 1.263e-02, 9.653e-02, 3.601e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(7.072e-02, -1.715e-02, 4.973e-02, -1.584e-02, 5.872e-02, 2.523e-03, 1.673e-02, 1.146e-02, 3.654e-02, 5.951e-03, -1.643e-02, 1.579e-02, 1.871e-02, -1.168e-02, 1.643e-02, 1.609e-02), r2);\n\tr0 = MulAdd(s1_1_0, M4(5.519e-03, 1.645e-01, 1.150e-02, 2.544e-01, -7.617e-03, 2.704e-01, -9.432e-03, -5.943e-02, -4.611e-02, -5.992e-02, 2.906e-02, -1.153e-01, 2.460e-02, 2.195e-01, -2.071e-02, 1.810e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.409e-02, -1.733e-01, 7.971e-02, -7.440e-02, -1.636e-02, 8.569e-02, -3.073e-02, 6.265e-02, 4.601e-02, -1.929e-01, 5.106e-02, -3.232e-02, 5.240e-02, -3.524e-02, 1.381e-01, -1.161e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(4.033e-01, 3.937e-02, -5.188e-02, 1.268e-02, 5.325e-02, -4.316e-02, 4.137e-02, -5.142e-02, 3.916e-01, -2.902e-02, -9.443e-02, -2.192e-01, 2.729e-02, -1.087e-01, -5.653e-02, -2.381e-01), r2);\n\tr0 = MulAdd(s1_1_1, M4(1.480e-01, -8.862e-02, -9.211e-02, 6.054e-02, -5.846e-02, -4.487e-02, 2.418e-02, -5.894e-02, 5.740e-02, 1.811e-01, 2.893e-01, 4.721e-02, -1.842e-01, 6.966e-02, 2.224e-01, 1.560e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-7.771e-02, 2.714e-01, 7.491e-02, 1.421e-01, 7.651e-02, -7.151e-02, 1.958e-01, -1.226e-01, -2.065e-01, 9.061e-02, -1.484e-01, 5.903e-05, -1.793e-01, -5.562e-02, -8.801e-02, 1.777e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.798e-01, 4.018e-02, 1.512e-01, 7.837e-02, -4.840e-01, 4.873e-01, -1.994e-01, 7.817e-02, -2.065e-01, 1.152e-01, 4.626e-01, 1.076e-01, -2.290e-03, 9.856e-02, -1.259e-01, 4.734e-02), r2);\n\tr0 = MulAdd(s1_1_2, M4(-1.851e-01, 3.546e-01, -2.360e-02, -3.157e-02, 4.399e-02, -4.510e-02, -7.097e-02, 8.825e-02, 3.637e-02, 9.907e-01, 5.249e-03, 2.344e-02, 1.238e-01, -1.703e-01, 5.481e-02, 4.978e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(5.577e-03, -4.816e-02, 2.052e-02, -4.578e-02, 1.899e-01, 5.360e-02, 3.776e-02, 8.226e-02, 1.791e-02, -1.368e-02, 1.725e-01, -1.167e-02, 1.399e-01, 8.155e-03, 7.052e-02, -2.339e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(3.190e-02, -5.023e-03, -1.304e-01, 2.027e-03, 3.478e-01, -1.047e-01, -1.873e-01, -2.954e-02, 6.768e-02, 3.294e-02, -5.822e-02, 1.713e-03, 1.237e-01, 1.797e-02, 5.842e-02, 5.174e-03), r2);\n\tr0 = MulAdd(s1_2_0, M4(-2.003e-03, -1.878e-01, -3.350e-02, -7.598e-03, 1.776e-03, -8.857e-02, -4.625e-03, 3.503e-02, -1.505e-02, -2.292e-01, 5.102e-03, 4.941e-02, 8.894e-02, 1.588e-01, 4.509e-02, 8.071e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-7.560e-03, 6.199e-02, -1.393e-02, 2.012e-02, -4.952e-03, 6.089e-03, 2.127e-02, -8.758e-04, 1.181e-02, 2.480e-02, 3.556e-02, -6.715e-03, 7.153e-02, 1.448e-01, 3.162e-03, 1.081e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(4.267e-01, 8.376e-02, -4.354e-02, -4.583e-02, 1.665e-01, 1.750e-02, 3.358e-02, 2.881e-02, 1.068e-01, 4.153e-03, -2.303e-02, 7.735e-02, -8.411e-02, 1.859e-02, -2.775e-02, 3.721e-01), r2);\n\tr0 = MulAdd(s1_2_1, M4(-2.631e-02, 4.419e-02, 8.785e-02, 4.309e-02, 1.655e-02, -2.870e-01, -1.023e-01, 4.507e-02, -1.242e-02, 3.545e-01, -3.836e-02, 2.087e-02, 1.676e-01, 2.823e-02, 3.934e-02, 5.054e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-3.722e-02, -2.585e-01, 2.661e-02, -1.013e-01, 1.498e-02, 8.765e-02, -5.460e-02, 1.846e-02, 8.534e-03, 3.968e-02, -5.335e-02, 3.123e-02, 2.433e-01, 2.532e-01, -7.664e-02, 4.476e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-3.999e-02, -8.131e-02, -3.012e-02, -4.403e-02, 1.557e-01, 1.130e-02, -8.872e-02, 4.311e-03, -1.587e-01, -1.466e-02, -2.075e-02, -4.688e-03, -2.590e-01, -3.206e-02, 4.179e-01, 7.117e-03), r2);\n\tr0 = MulAdd(s1_2_2, M4(-5.890e-03, -2.237e+00, -4.558e-02, 4.035e-02, -4.194e-02, -3.079e+00, 4.219e-03, 4.099e-02, -2.550e-02, -9.273e-01, 1.721e-02, 2.350e-02, -2.708e-01, -8.572e-01, 4.485e-02, 2.306e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-8.757e-02, -3.185e-02, 4.265e-02, -1.376e-02, 4.782e-02, -1.998e-03, 1.938e-03, 2.367e-03, 2.203e-02, 5.851e-03, 5.382e-02, -1.014e-04, -1.137e-02, 2.299e-02, -2.705e-02, 6.238e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(2.018e-02, -4.529e-02, -8.522e-02, -2.110e-03, 3.978e-02, 4.122e-02, 8.515e-02, 2.388e-02, 5.390e-02, -2.722e-02, -1.532e-02, 1.224e-02, 1.019e-01, 1.801e-02, -8.281e-02, 2.148e-02), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.263e-03, 2.741e-02, 2.329e-02, 1.351e-01, 3.967e-02, -1.866e-01, -1.657e-02, 1.982e-01, -4.327e-03, -8.622e-03, -1.404e-03, -2.427e-01, -2.887e-02, 3.779e-02, 4.954e-02, 2.466e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-9.733e-03, 6.460e-03, -3.133e-02, 6.615e-03, 2.061e-02, 6.564e-04, -1.516e-01, 1.003e-01, -1.632e-02, -6.257e-04, 2.345e-02, -2.137e-02, -4.705e-02, -9.021e-03, 4.338e-02, -6.600e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(2.295e-02, -3.476e-03, 3.499e-03, -1.631e-02, 1.319e-01, 4.040e-02, 6.247e-02, -1.218e-01, 1.957e-02, -4.411e-03, -8.572e-03, -1.163e-02, -4.662e-02, 2.717e-02, -4.264e-02, 1.004e-01), r2);\n\tr0 = MulAdd(s0_0_1, M4(2.860e-02, -4.100e-02, -8.437e-03, 2.041e-01, 3.837e-01, 3.348e-02, -1.304e-01, -1.701e-01, -3.436e-03, -1.470e-02, -6.076e-03, -2.764e-01, -2.390e-01, 9.583e-02, 1.471e-01, -2.697e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-8.358e-03, 2.240e-02, 2.912e-01, -3.149e-02, 4.036e-01, -7.200e-02, 6.230e-01, 2.561e-01, -2.414e-02, 1.463e-02, -1.826e-01, -4.012e-02, -2.280e-01, 3.591e-02, 1.616e-01, -2.280e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(4.495e-02, -4.993e-03, 2.791e-02, 4.629e-02, -1.499e-01, -5.319e-02, 1.879e-01, -1.526e-01, -5.977e-02, 1.249e-02, -1.724e-02, 4.554e-02, 1.989e-01, 1.654e-02, -1.333e-01, 9.448e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(7.066e-02, -2.294e-01, 2.536e-02, 7.966e-02, -5.189e-02, -4.871e-01, -1.172e-02, -7.611e-02, 7.430e-03, 1.232e-01, 1.797e-02, 6.102e-02, -8.555e-02, -2.012e-01, 2.093e-02, -1.189e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(6.616e-02, 1.436e-02, -5.392e-02, 2.411e-02, -6.518e-02, -3.071e-02, -3.115e-01, -2.899e-02, -7.897e-03, 1.232e-02, 2.239e-02, -3.292e-03, -1.233e-01, 1.923e-02, -2.488e-01, 2.111e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-3.384e-02, -7.344e-03, 3.716e-02, 1.085e-02, 3.150e-03, -8.980e-03, -3.600e-02, -2.657e-02, 4.675e-02, 1.428e-02, 1.490e-02, 2.248e-02, -5.460e-02, -9.132e-03, -1.018e-02, 1.022e-02), r2);\n\tr0 = MulAdd(s0_1_0, M4(4.099e-03, 8.081e-02, 4.480e-02, -1.091e-01, -8.658e-02, 3.918e-02, -1.480e-01, -2.024e-02, -2.075e-03, 1.265e-01, 2.178e-02, -9.243e-02, 2.124e-02, -1.919e-01, 3.432e-02, -2.415e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-2.508e-02, 1.005e-02, 1.661e-02, 1.767e-02, -2.300e-02, 6.469e-02, -9.147e-02, 8.080e-02, -1.122e-02, 5.159e-03, 4.370e-02, -3.925e-02, -4.100e-02, 3.982e-05, 4.827e-02, -3.869e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(7.392e-02, 1.863e-02, 7.630e-03, 1.177e-01, 4.016e-01, 7.014e-02, -1.869e-03, 2.218e-01, -1.065e-01, 2.574e-03, -1.601e-02, -3.698e-02, -1.588e-02, -4.063e-02, -9.446e-02, -1.276e-01), r2);\n\tr0 = MulAdd(s0_1_1, M4(-6.616e-02, 2.173e-01, 3.427e-01, -2.007e-01, -3.127e-01, 2.807e-01, 9.354e-02, 3.853e-02, -2.302e-01, -1.659e-01, -8.423e-02, 2.401e-01, 2.407e-01, 2.665e-02, 1.685e-01, -5.188e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.411e-01, -4.164e-02, 8.621e-02, 3.191e-02, 3.041e-01, 3.877e-01, 1.353e-01, 1.323e-01, -1.537e-01, -8.718e-02, -8.590e-01, 6.315e-04, -1.470e-01, -1.930e-01, -3.335e-01, -8.103e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(8.862e-02, 1.172e-01, -5.668e-02, -2.861e-01, -1.569e-01, -1.772e-01, 3.521e-02, 1.749e-01, -4.234e-01, -7.495e-02, -1.284e-01, 9.243e-04, 6.868e-02, 4.415e-01, 3.861e-01, -1.030e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(-1.107e-01, 1.425e-01, -4.724e-02, -1.201e-01, 1.477e-02, 9.205e-01, -5.871e-02, 2.813e-02, -2.136e-02, -1.873e-01, 2.642e-03, -6.517e-04, 1.126e-01, 1.253e-01, -4.987e-02, 1.736e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.465e-01, -7.470e-02, -1.292e-01, -7.691e-02, 1.479e-01, 2.410e-02, -3.100e-02, 1.533e-02, -5.778e-02, 2.365e-03, 1.016e-01, -5.000e-02, 2.144e-01, -4.730e-02, 2.723e-02, 2.220e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(4.807e-03, -4.431e-02, -4.825e-02, -1.865e-02, -6.382e-02, 1.001e-02, -1.170e-02, 1.815e-02, 1.019e-01, 1.340e-02, -6.091e-02, -3.948e-03, -1.961e-01, 2.424e-02, 3.617e-01, -4.162e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(4.317e-03, 1.920e-01, 2.208e-02, 1.454e-02, -2.021e-02, -4.211e-01, 2.895e-02, 1.412e-02, 3.150e-02, 4.403e-02, 4.675e-02, 3.833e-03, 3.211e-02, -2.832e-01, 3.071e-02, 1.675e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.176e-02, -2.079e-03, -3.389e-03, 4.453e-04, -1.403e-02, 1.311e-02, 5.519e-03, -8.438e-03, 9.430e-04, -5.334e-02, 5.989e-02, -3.272e-02, -8.549e-03, -4.421e-02, 9.165e-05, -2.155e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(2.348e-02, -2.966e-02, 3.112e-03, 6.342e-03, 1.295e-02, 9.636e-03, -1.194e-02, -2.517e-02, -2.147e-01, -1.435e-02, 7.119e-03, 1.162e-02, -1.213e-01, -1.593e-02, -1.763e-02, -3.528e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(-9.186e-03, -5.112e-01, 5.398e-02, -1.363e-02, 2.124e-02, 4.742e-01, 2.735e-03, 1.757e-02, 1.548e-01, -7.919e-01, -1.661e-02, -1.009e-01, -8.376e-02, 4.669e-01, -1.596e-01, -4.622e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-5.122e-03, 2.249e-02, 6.852e-02, -1.145e-02, -1.312e-02, -6.100e-02, -9.264e-03, -2.166e-02, -8.375e-02, -9.536e-03, -5.806e-02, -5.881e-02, -5.741e-03, -3.332e-02, -4.204e-03, 3.697e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.627e-01, -7.544e-02, -5.823e-02, 6.148e-02, -1.517e-01, 1.079e-02, 3.550e-02, -4.430e-02, -3.532e-01, 3.638e-02, -2.840e-02, -9.497e-02, 1.811e-01, 2.040e-02, -8.878e-03, -9.786e-03), r2);\n\tr0 = MulAdd(s0_2_2, M4(2.905e-02, -3.342e+00, -3.869e-02, 1.365e-02, 1.235e-02, -7.575e+00, -2.342e-03, -1.785e-02, -6.815e-04, -8.658e+00, 5.212e-02, -1.059e-02, -5.092e-02, -7.297e+00, 2.950e-02, -3.657e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(2.125e-02, 4.311e-02, -1.509e-02, 2.868e-02, -6.202e-02, -2.071e-02, -2.942e-02, -1.605e-02, -1.129e-01, -4.383e-02, -2.985e-02, -1.104e-03, -2.188e-02, 2.435e-02, 3.337e-03, -1.429e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.892e-02, 7.568e-03, -1.083e-02, 6.437e-04, 2.932e-02, 1.051e-03, -3.748e-02, -1.151e-02, 7.268e-02, -6.012e-03, -1.184e-01, -1.024e-02, -6.112e-02, -3.224e-02, -1.099e-02, -4.542e-03), r2);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n}\n\n//!PASS 6\n//!DESC out-shuffle (12x12)\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, T0, T1, T2\n//!OUT OUTPUT\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 sz = GetOutputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.277e-02, 4.422e-03, 4.234e-04, -6.235e-06, 1.498e-02, 6.211e-02, 3.837e-02, 1.085e-01, -4.602e-02, -6.198e-03, -9.613e-03, 3.447e-03, 3.057e-04, 6.855e-04, 1.840e-05, 1.363e-04), r0);\n\tr1 = MulAdd(s0_0_0, M4(-2.569e-02, 2.376e-03, -9.484e-04, -1.607e-03, -7.072e-02, -4.634e-02, 3.653e-02, 4.040e-02, -5.606e-02, -1.035e-02, -1.187e-02, 1.762e-03, 4.648e-04, 6.095e-04, -8.435e-05, 1.601e-05), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.886e-02, 4.555e-03, -3.514e-04, 7.618e-04, -3.683e-02, -7.033e-02, 1.180e-02, -7.946e-03, -4.448e-02, -6.237e-03, -8.300e-03, 4.204e-03, 7.366e-04, 1.019e-03, -3.474e-06, 4.283e-04), r2);\n\tr0 = MulAdd(s0_0_1, M4(-3.992e-02, -6.421e-02, 4.307e-03, 1.187e-02, -7.608e-01, 6.976e-01, -6.667e-01, 8.908e-01, -3.944e-02, -8.276e-02, 1.536e-02, -1.292e-02, -5.983e-03, -1.775e-03, -1.282e-03, 7.502e-04), r0);\n\tr1 = MulAdd(s0_0_1, M4(-4.830e-02, -6.946e-02, 7.123e-03, 1.606e-02, -8.618e-01, 8.309e-01, -7.574e-01, 1.036e+00, -3.941e-02, -8.958e-02, 1.935e-02, -1.053e-02, -7.558e-03, -1.932e-03, -1.609e-03, 4.844e-04), r1);\n\tr2 = MulAdd(s0_0_1, M4(-4.456e-02, -6.237e-02, 5.041e-03, 1.126e-02, -7.481e-01, 6.377e-01, -6.635e-01, 8.172e-01, -4.129e-02, -8.276e-02, 1.358e-02, -1.372e-02, -6.299e-03, -2.010e-03, -1.687e-03, 2.659e-04), r2);\n\tr0 = MulAdd(s0_0_2, M4(3.703e-03, 1.179e-03, 3.107e-03, 4.348e-03, 2.804e-02, -5.522e-02, 2.359e-02, -5.566e-02, 3.707e-04, 2.911e-02, 8.372e-03, 1.910e-02, -4.598e-03, -9.775e-03, 6.452e-04, -1.145e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(4.414e-03, 1.612e-05, 3.171e-03, 3.536e-03, 2.914e-02, -5.064e-02, 2.239e-02, -5.424e-02, 3.163e-03, 3.273e-02, 1.077e-02, 2.167e-02, -5.247e-03, -1.211e-02, 6.086e-04, -1.601e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(3.500e-03, -2.817e-04, 3.494e-03, 3.908e-03, 2.956e-02, -2.233e-02, 2.606e-02, -1.932e-02, 1.336e-03, 2.499e-02, 8.369e-03, 1.667e-02, -4.012e-03, -9.841e-03, 2.841e-04, -1.843e-03), r2);\n\tr0 = MulAdd(s0_1_0, M4(1.008e-01, 4.577e-03, -7.055e-02, 2.019e-02, 5.614e-02, 2.519e-03, -2.627e-01, -2.882e-02, -8.862e-02, -4.675e-03, -3.626e-02, 8.864e-03, 4.395e-03, -6.619e-04, 1.986e-03, 1.650e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(9.444e-02, 6.098e-03, -7.592e-02, 1.679e-02, 6.104e-02, -2.131e-03, -3.096e-01, -2.977e-02, -9.937e-02, -1.554e-02, -4.496e-02, 8.086e-03, 5.083e-03, -7.676e-04, 7.065e-04, 8.884e-04), r1);\n\tr2 = MulAdd(s0_1_0, M4(9.022e-02, 6.493e-03, -6.323e-02, 1.332e-02, 6.139e-02, 4.356e-03, -2.551e-01, -2.324e-02, -7.836e-02, -4.196e-03, -3.674e-02, 9.689e-03, 4.955e-03, -6.679e-04, 2.364e-03, 1.732e-03), r2);\n\tr0 = MulAdd(s0_1_1, M4(1.538e-01, 4.307e-01, -1.421e-01, -2.085e-01, 5.068e-02, 4.837e-02, 6.968e-02, -1.483e-01, 2.323e-01, 2.680e-02, -2.589e-01, -2.510e-01, 1.335e-03, 1.150e-02, -2.658e-03, -2.414e-03), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.743e-01, 4.692e-01, -1.675e-01, -2.310e-01, 6.077e-02, 4.596e-02, 8.325e-02, -1.821e-01, 2.576e-01, 3.570e-02, -2.959e-01, -2.920e-01, 1.184e-02, 1.346e-02, 1.658e-03, -9.485e-04), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.577e-01, 4.092e-01, -1.421e-01, -1.864e-01, 4.994e-02, 4.639e-02, 6.809e-02, -1.450e-01, 2.202e-01, 2.917e-02, -2.512e-01, -2.476e-01, 5.449e-03, 1.135e-02, -2.520e-03, -2.284e-03), r2);\n\tr0 = MulAdd(s0_1_2, M4(-1.804e-03, 1.390e-02, 7.465e-03, -7.331e-03, -2.123e-04, 1.212e-02, -4.197e-03, 3.283e-02, -8.692e-03, 1.030e-01, 1.826e-02, 6.665e-02, -2.137e-02, -1.468e-02, -4.009e-03, -7.470e-04), r0);\n\tr1 = MulAdd(s0_1_2, M4(-3.520e-03, 1.617e-02, 8.337e-03, -1.309e-02, -2.454e-03, 1.347e-02, -5.347e-03, 3.899e-02, -6.166e-03, 1.274e-01, 2.432e-02, 8.911e-02, -1.367e-02, 1.270e-02, 3.665e-03, 8.815e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(-3.743e-04, 1.752e-02, 6.065e-03, -1.361e-02, -7.596e-04, 1.127e-02, -4.269e-03, 3.324e-02, -7.052e-03, 1.086e-01, 1.748e-02, 6.663e-02, -2.288e-02, -2.577e-03, -1.680e-03, 1.697e-03), r2);\n\tr0 = MulAdd(s0_2_0, M4(-2.350e-02, 7.393e-03, 9.124e-03, -4.576e-03, -1.075e-04, -4.959e-03, 8.548e-03, -5.415e-03, 1.297e-02, -2.476e-03, 1.705e-03, 7.202e-03, 1.666e-02, 4.862e-03, -9.146e-03, 4.264e-04), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.656e-02, 9.183e-03, 1.354e-02, 9.088e-04, -8.351e-04, -6.025e-03, 8.483e-03, -6.466e-03, 1.691e-02, -5.906e-03, -1.337e-03, 4.817e-03, 1.723e-02, 4.982e-03, -5.920e-03, 2.870e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(-2.313e-02, 6.913e-03, 2.799e-03, 4.028e-04, -1.641e-04, -4.999e-03, 9.373e-03, -5.403e-03, 1.419e-02, -2.830e-03, 2.302e-03, 7.463e-03, 1.680e-02, 4.594e-03, -4.857e-03, 4.035e-04), r2);\n\tr0 = MulAdd(s0_2_1, M4(-8.501e-03, -2.823e-02, -1.340e-02, -1.150e-01, -2.828e-03, 1.956e-03, 4.802e-03, 1.530e-02, -2.096e-03, 1.788e-02, 1.509e-01, 1.013e-01, 1.048e-01, 1.654e-02, -1.382e-01, 2.290e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-5.767e-03, -2.253e-02, -8.881e-03, -1.440e-01, -3.423e-03, 1.925e-03, 6.432e-03, 1.563e-02, -3.652e-03, 2.054e-02, 1.763e-01, 1.185e-01, 9.847e-02, 1.466e-02, -1.592e-01, 2.633e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-7.231e-03, -2.554e-02, -2.060e-02, -1.383e-01, -2.764e-03, 1.788e-03, 4.449e-03, 1.513e-02, -4.174e-03, 1.694e-02, 1.558e-01, 1.043e-01, 9.992e-02, 1.788e-02, -1.416e-01, 2.887e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(-1.946e-03, -8.651e-03, -2.809e-03, -1.004e-02, 3.727e-04, 8.477e-04, 4.502e-04, 1.447e-03, 4.602e-04, 7.398e-04, 1.170e-03, 4.309e-02, 1.392e-01, 3.019e-01, -8.033e-02, -3.545e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(-4.735e-03, -1.034e-02, -2.635e-03, -1.905e-03, 7.731e-04, 1.359e-03, 4.981e-04, 2.005e-03, 2.759e-04, -2.357e-04, 4.703e-04, 4.751e-02, 1.499e-01, 3.115e-01, -8.862e-02, -4.145e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(-4.023e-03, -1.004e-02, -8.990e-04, -3.862e-03, 5.208e-04, 9.580e-04, 5.693e-04, 1.110e-03, 5.275e-04, -5.177e-04, 9.777e-04, 4.282e-02, 1.431e-01, 2.893e-01, -8.835e-02, -3.643e-01), r2);\n\tr0 = MulAdd(s1_0_0, M4(3.699e-02, 1.019e-02, 4.451e-03, 1.568e-04, 2.361e-02, 6.691e-03, 5.265e-03, 3.240e-03, 3.023e-03, 1.199e-03, 6.036e-05, 9.041e-04, -1.472e-03, -3.191e-03, 1.514e-03, 1.591e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(4.493e-02, 1.851e-02, 1.114e-02, 5.517e-03, 2.612e-02, 9.021e-03, 9.008e-03, 3.916e-03, 1.868e-03, 1.220e-04, -4.857e-04, -4.515e-04, -2.981e-03, -3.939e-03, 1.548e-03, 1.343e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(3.164e-02, 1.005e-02, 6.323e-03, -7.371e-04, 2.064e-02, 5.972e-03, 5.835e-03, 2.178e-03, 2.860e-03, 1.358e-03, 4.842e-04, 8.370e-04, -3.012e-03, -3.569e-03, 1.518e-03, 1.450e-03), r2);\n\tr0 = MulAdd(s1_0_1, M4(5.362e-02, 7.154e-02, 6.589e-03, -2.561e-03, 2.987e-02, 3.260e-02, -5.699e-03, 1.944e-02, 2.236e-03, -2.575e-03, -8.794e-04, -3.640e-03, -2.393e-03, -1.028e-02, -7.914e-04, 6.286e-04), r0);\n\tr1 = MulAdd(s1_0_1, M4(6.860e-02, 8.872e-02, 7.793e-03, 1.309e-03, 3.626e-02, 3.966e-02, -7.285e-03, 2.181e-02, 1.045e-03, -1.423e-03, -3.512e-03, -2.537e-03, 2.663e-04, -1.057e-02, -5.687e-04, 1.702e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(5.140e-02, 6.667e-02, 3.783e-03, -4.005e-03, 3.333e-02, 2.866e-02, -7.582e-03, 1.785e-02, 4.147e-03, -1.200e-04, -7.421e-04, -1.279e-03, -1.134e-03, -1.110e-02, -7.468e-04, 3.063e-04), r2);\n\tr0 = MulAdd(s1_0_2, M4(-2.010e-04, 2.109e-02, -2.675e-03, -6.665e-04, -6.875e-03, -1.382e-02, -7.842e-03, -4.983e-03, -2.642e-03, -1.313e-03, 1.126e-03, 2.494e-03, 6.408e-04, 1.212e-02, 1.682e-03, 5.269e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.227e-05, 2.351e-02, -2.367e-03, -1.070e-04, -7.971e-03, -1.886e-02, -7.721e-03, -6.554e-03, -3.483e-03, -2.866e-03, 9.008e-04, 1.274e-03, 2.869e-04, 1.465e-02, 1.450e-03, 6.718e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.025e-03, 1.837e-02, -3.061e-03, -2.219e-03, -8.161e-03, -1.570e-02, -7.552e-03, -4.564e-03, -2.413e-03, -1.546e-03, 8.286e-04, 2.015e-03, 8.081e-05, 1.257e-02, 1.601e-03, 6.290e-03), r2);\n\tr0 = MulAdd(s1_1_0, M4(-1.214e-02, 9.746e-03, 2.259e-02, -1.348e-02, -4.306e-02, -1.228e-03, -1.278e-02, 9.610e-03, -1.461e-02, -1.866e-03, 1.858e-03, 3.871e-03, -1.410e-02, -1.062e-03, -7.953e-03, -9.791e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.629e-02, 1.088e-02, 1.204e-02, -1.724e-02, -5.467e-02, -3.430e-03, -2.119e-02, 8.757e-03, -9.366e-03, -1.007e-03, -9.616e-04, 6.188e-03, -9.946e-03, 5.755e-07, -1.035e-02, -8.145e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(-8.207e-03, 1.126e-02, 1.683e-02, -1.341e-02, -3.943e-02, -1.923e-03, -1.478e-02, 9.920e-03, -9.692e-03, -2.449e-03, -2.599e-03, 5.097e-03, -9.923e-03, -6.698e-04, -1.099e-02, -8.542e-03), r2);\n\tr0 = MulAdd(s1_1_1, M4(1.443e-01, -3.565e-01, 1.755e-01, 1.440e-01, -6.231e-01, -1.215e-02, 2.690e-01, 4.881e-02, 1.047e-01, -1.422e-01, -2.100e-04, -5.325e-03, 4.654e-02, 1.040e-02, 3.621e-02, -5.114e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.563e-01, -4.246e-01, 1.912e-01, 1.534e-01, -7.352e-01, -1.410e-02, 3.076e-01, 4.236e-02, 1.092e-01, -1.491e-01, 6.915e-03, -1.249e-03, 5.713e-02, 2.214e-02, 5.720e-02, -5.684e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.493e-01, -3.476e-01, 1.705e-01, 1.374e-01, -6.195e-01, -1.157e-02, 2.627e-01, 5.116e-02, 9.502e-02, -1.403e-01, 5.878e-03, -4.175e-03, 3.577e-02, 1.536e-02, 4.456e-02, -5.409e-02), r2);\n\tr0 = MulAdd(s1_1_2, M4(-2.273e-03, 3.137e-02, 1.358e-03, 3.972e-02, -3.122e-02, 8.656e-02, -2.380e-02, 2.296e-02, 2.186e-03, 3.481e-02, -4.925e-03, 6.679e-03, 5.046e-03, 1.160e-01, 9.720e-03, 5.356e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-1.003e-03, 4.067e-02, 8.904e-04, 4.643e-02, -2.972e-02, 1.121e-01, -2.252e-02, 1.428e-02, 1.522e-03, 3.796e-02, -5.840e-03, 5.198e-03, 6.184e-03, 1.284e-01, 1.085e-02, 6.170e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-2.015e-03, 3.430e-02, 5.492e-04, 3.800e-02, -2.597e-02, 8.666e-02, -2.203e-02, 1.854e-02, 1.681e-03, 3.504e-02, -3.794e-03, 7.081e-03, 5.565e-03, 1.126e-01, 7.864e-03, 5.137e-02), r2);\n\tr0 = MulAdd(s1_2_0, M4(-3.492e-02, -5.729e-04, 2.431e-03, -8.578e-03, -1.024e-02, -1.131e-03, -1.925e-02, 1.122e-02, -1.240e-03, 8.150e-03, -3.183e-02, 6.010e-03, 2.643e-02, 1.639e-03, 1.094e-02, -7.437e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-4.866e-02, -1.909e-03, 1.522e-03, -1.473e-02, -9.927e-03, -1.824e-03, -2.362e-02, 1.504e-02, 4.972e-03, 1.537e-02, -1.317e-02, 1.043e-02, 2.846e-02, 2.758e-03, 1.793e-02, -1.032e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-3.369e-02, -2.609e-03, 7.507e-03, -7.675e-03, -9.010e-03, -1.906e-03, -2.110e-02, 1.210e-02, -2.689e-03, 9.044e-03, -1.861e-02, 5.095e-03, 2.316e-02, 2.623e-03, 1.714e-02, -9.116e-03), r2);\n\tr0 = MulAdd(s1_2_1, M4(2.394e-03, -2.946e-03, 4.553e-02, -3.623e-01, -1.972e-02, 5.105e-03, 2.006e-01, 2.101e-02, 1.392e-01, -1.755e-01, 4.111e-01, -3.736e-01, 8.230e-02, -1.248e-02, -6.309e-01, -8.654e-04), r0);\n\tr1 = MulAdd(s1_2_1, M4(3.570e-03, 5.169e-03, 6.323e-02, -4.038e-01, -2.067e-02, 1.017e-02, 2.428e-01, 1.708e-02, 1.567e-01, -1.984e-01, 4.465e-01, -4.209e-01, 1.060e-01, -3.045e-02, -7.402e-01, 1.050e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(9.376e-04, 9.891e-04, 5.922e-02, -3.447e-01, -1.788e-02, 3.540e-03, 2.046e-01, 1.996e-02, 1.444e-01, -1.753e-01, 3.847e-01, -3.721e-01, 8.862e-02, -1.138e-02, -6.349e-01, 4.477e-03), r2);\n\tr0 = MulAdd(s1_2_2, M4(1.602e-03, 8.971e-04, 1.997e-03, 1.483e-02, 4.806e-03, -1.509e-02, -1.229e-02, 6.041e-02, 3.147e-04, 1.954e-02, -1.563e-02, 4.765e-02, 1.922e-02, 9.155e-02, 1.873e-02, 1.422e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.766e-03, -3.791e-04, 3.632e-03, 1.887e-02, 2.200e-03, -1.849e-02, -1.580e-02, 6.181e-02, -3.152e-03, 1.569e-02, -2.058e-02, 4.651e-02, 2.230e-02, 9.302e-02, 2.147e-02, 1.667e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(9.602e-04, -1.021e-03, 2.009e-03, 1.653e-02, 2.762e-03, -1.558e-02, -1.187e-02, 6.243e-02, -1.064e-03, 1.970e-02, -1.622e-02, 4.965e-02, 1.923e-02, 8.763e-02, 2.017e-02, 1.382e-01), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-9.605e-04, 3.187e-04, -2.777e-03, 9.179e-04, -3.742e-03, 1.297e-03, -1.851e-03, -1.778e-04, 1.613e-02, -3.156e-03, 7.123e-04, 8.806e-04, 3.741e-03, 2.432e-03, -7.548e-04, -2.137e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.082e-03, 7.413e-04, -2.314e-03, 1.067e-03, -5.137e-03, 1.841e-04, -2.835e-03, 1.435e-04, 1.867e-02, -2.501e-03, -1.164e-03, 1.374e-04, 4.826e-03, 2.183e-03, -1.799e-03, -2.041e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.094e-03, 2.717e-04, -1.934e-03, 1.155e-03, -3.450e-03, 1.320e-03, -2.519e-03, -7.322e-06, 1.525e-02, -2.914e-03, -6.143e-04, 6.135e-04, 4.591e-03, 2.138e-03, -8.323e-04, -1.741e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(2.377e-02, 5.519e-03, 3.712e-03, 1.882e-03, -5.877e-02, -1.886e-02, -2.205e-02, -4.582e-03, -7.355e-03, 5.151e-02, -9.632e-03, -1.430e-03, 3.870e-02, 9.101e-03, 6.861e-03, -8.329e-03), r0);\n\tr1 = MulAdd(s0_0_1, M4(2.169e-02, 4.412e-03, 2.792e-03, 4.134e-03, -7.544e-02, -3.552e-02, -3.406e-02, -1.502e-02, -1.491e-02, 4.260e-02, -1.681e-02, -1.247e-02, 4.630e-02, 1.240e-02, 8.661e-03, -7.002e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(2.471e-02, 5.937e-03, 2.249e-03, 2.579e-03, -5.213e-02, -1.984e-02, -2.068e-02, -3.657e-03, 2.216e-03, 5.304e-02, -8.160e-03, 5.389e-04, 3.772e-02, 1.047e-02, 5.538e-03, -8.164e-03), r2);\n\tr0 = MulAdd(s0_0_2, M4(-9.107e-02, 8.277e-02, 1.235e-03, -2.504e-02, -1.967e-02, -1.179e-01, -1.070e-02, -3.553e-02, -9.516e-04, -3.406e-02, 9.499e-04, -8.692e-03, 2.954e-02, 7.153e-02, 2.805e-04, 1.376e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(-9.399e-02, 8.765e-02, 5.600e-03, -2.776e-02, -2.545e-02, -1.304e-01, -1.360e-02, -3.821e-02, -3.120e-03, -4.041e-02, 2.827e-04, -1.205e-02, 2.704e-02, 7.905e-02, -1.669e-03, -5.553e-04), r1);\n\tr2 = MulAdd(s0_0_2, M4(-9.427e-02, 7.838e-02, 2.175e-03, -2.236e-02, -2.165e-02, -1.116e-01, -1.132e-02, -3.160e-02, 3.352e-04, -2.936e-02, 1.574e-03, -8.084e-03, 2.967e-02, 7.897e-02, 2.459e-03, 2.792e-03), r2);\n\tr0 = MulAdd(s0_1_0, M4(1.801e-03, 3.843e-03, 2.226e-03, -2.899e-05, 3.317e-03, -8.219e-04, -1.042e-03, 3.710e-03, 8.677e-02, 5.729e-03, 6.815e-02, -3.281e-03, 8.378e-04, -9.263e-04, 1.082e-02, 2.607e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.631e-03, 4.237e-03, 1.357e-03, -2.321e-04, 4.080e-03, -2.684e-03, -2.024e-04, 3.159e-03, 1.150e-01, 1.598e-02, 8.966e-02, 3.635e-03, 2.314e-03, 3.678e-05, 1.138e-02, 1.779e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.445e-03, 3.394e-03, 1.036e-03, -2.586e-04, 3.231e-03, -8.687e-04, -1.729e-04, 3.700e-03, 8.402e-02, 2.972e-03, 6.694e-02, -3.634e-03, 1.626e-03, -9.405e-05, 1.128e-02, 1.713e-03), r2);\n\tr0 = MulAdd(s0_1_1, M4(2.352e-03, -1.067e-02, 2.386e-02, -3.439e-03, 2.920e-01, 9.905e-03, 1.598e-01, 3.137e-02, -1.968e-01, 2.144e-01, -4.343e-02, 2.862e-01, -4.507e-02, -2.640e-02, 1.026e-02, 1.537e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-8.069e-03, -1.849e-02, 1.562e-02, -1.206e-02, 3.408e-01, 2.048e-02, 1.942e-01, 4.726e-02, -2.193e-01, 2.568e-01, -4.797e-02, 3.332e-01, -4.485e-02, -2.667e-02, 9.611e-03, 1.233e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(6.187e-03, -1.053e-02, 3.022e-02, -4.186e-03, 2.819e-01, 1.290e-02, 1.567e-01, 3.211e-02, -1.978e-01, 2.095e-01, -3.976e-02, 2.805e-01, -4.826e-02, -2.224e-02, 1.528e-02, 1.420e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(-2.209e-01, 1.938e-01, -2.417e-01, 2.800e-01, -5.486e-02, -1.284e-02, -7.747e-02, -2.378e-01, 3.403e-03, -1.121e-01, -2.645e-03, -9.153e-02, 1.500e-02, -5.332e-01, 2.185e-02, 1.489e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-2.512e-01, 2.105e-01, -2.705e-01, 3.057e-01, -5.848e-02, -6.765e-03, -8.130e-02, -2.646e-01, 1.793e-03, -1.287e-01, -4.513e-03, -1.038e-01, 3.720e-02, -6.191e-01, 1.878e-02, 1.846e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-2.192e-01, 1.880e-01, -2.437e-01, 2.666e-01, -5.537e-02, -2.403e-02, -7.352e-02, -2.388e-01, 1.836e-03, -1.086e-01, -9.311e-04, -8.276e-02, 1.192e-02, -5.449e-01, 1.973e-02, 1.500e-01), r2);\n\tr0 = MulAdd(s0_2_0, M4(-4.242e-03, -6.539e-04, -3.970e-03, 9.940e-04, 4.864e-04, 1.229e-03, 3.242e-03, -4.086e-04, -1.896e-02, -8.691e-04, 4.481e-03, -7.520e-03, -1.831e-03, 1.143e-03, 1.172e-03, 6.587e-04), r0);\n\tr1 = MulAdd(s0_2_0, M4(-4.043e-03, -4.469e-04, -3.858e-03, 1.086e-03, -7.299e-04, 9.388e-04, 1.606e-03, -1.979e-03, -2.128e-02, 2.998e-03, 1.474e-02, -4.500e-03, -3.346e-03, 3.670e-04, 2.095e-03, 4.531e-04), r1);\n\tr2 = MulAdd(s0_2_0, M4(-4.037e-03, -3.464e-04, -3.521e-03, 8.718e-04, 3.148e-04, 1.409e-03, 2.912e-03, -5.722e-04, -2.105e-02, -6.306e-04, 3.146e-03, -9.371e-03, -1.826e-03, 6.686e-04, 4.236e-03, 1.297e-03), r2);\n\tr0 = MulAdd(s0_2_1, M4(1.298e-02, -1.529e-03, 1.383e-02, -5.082e-03, 1.429e-03, 2.406e-03, 8.127e-02, -1.016e-02, -1.207e-02, -2.703e-02, -9.055e-02, -2.931e-02, 2.207e-02, 2.737e-03, 7.985e-02, -1.727e-03), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.079e-02, -3.039e-03, 6.023e-03, -7.776e-03, -1.661e-03, 3.237e-03, 8.561e-02, -1.351e-02, -1.552e-02, -3.458e-02, -1.018e-01, -3.458e-02, 2.705e-02, 4.032e-03, 8.152e-02, 7.414e-04), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.257e-02, -1.513e-03, 1.332e-02, -3.766e-03, 7.344e-04, 2.334e-03, 7.690e-02, -1.066e-02, -1.161e-02, -2.786e-02, -9.106e-02, -2.959e-02, 2.115e-02, 4.214e-03, 7.223e-02, 1.279e-03), r2);\n\tr0 = MulAdd(s0_2_2, M4(-4.658e-03, 6.083e-03, -3.345e-02, 5.579e-02, 2.342e-04, -1.510e-02, -1.010e-02, 8.912e-02, -3.565e-03, -4.545e-03, -1.685e-03, -4.431e-02, -7.475e-03, -1.070e-03, -3.960e-03, 1.408e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(-4.120e-04, 5.999e-03, -3.439e-02, 5.728e-02, 1.961e-03, -1.437e-02, -1.581e-02, 1.037e-01, -3.598e-03, -3.322e-03, -2.977e-03, -5.209e-02, -6.548e-03, 2.613e-03, -1.239e-02, 1.596e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.046e-03, 7.980e-03, -3.126e-02, 5.707e-02, 2.107e-03, -1.326e-02, -1.569e-02, 8.278e-02, -2.450e-03, -2.378e-03, -2.741e-03, -4.382e-02, -4.875e-03, 3.715e-03, -9.835e-03, 1.275e-01), r2);\n\tfloat2 opt = float2(GetOutputPt()), fpos = (float2(gxy) + 0.5) * opt;\n\tOUTPUT[gxy + int2(0, 0)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(0.0, 0.0) * opt, 0).rgb + MF3(r0.x, r1.x, r2.x)), 1.0);\n\tOUTPUT[gxy + int2(1, 0)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(1.0, 0.0) * opt, 0).rgb + MF3(r0.y, r1.y, r2.y)), 1.0);\n\tOUTPUT[gxy + int2(0, 1)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(0.0, 1.0) * opt, 0).rgb + MF3(r0.z, r1.z, r2.z)), 1.0);\n\tOUTPUT[gxy + int2(1, 1)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(1.0, 1.0) * opt, 0).rgb + MF3(r0.w, r1.w, r2.w)), 1.0);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy2/CuNNy-4x16-NVL.hlsl",
    "content": "// CuNNy 4x16 - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-04x16\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, x, y) t.SampleLevel(SP, pos + float2(x, y) * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T7;\n\n//!PASS 1\n//!DESC in (3x16)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT T0, T1, T2, T3\n\n#define L0(x, y) V3(O(INPUT, x, y).rgb)\n#define V3 MF3\n#define M3x4 MF3x4\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV3 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0;\n\tr0 = V4(1.406e-02, -1.134e-03, -1.611e-02, -2.320e-04);\n\tr1 = V4(3.087e-02, 1.628e-03, 3.260e-02, 5.064e-03);\n\tr2 = V4(8.945e-03, 1.333e-01, 1.492e-02, -4.488e-03);\n\tr3 = V4(2.635e-03, -9.137e-03, -8.033e-01, -1.303e-02);\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M3x4(7.157e-03, 1.490e-02, 8.311e-03, -1.157e-03, 6.252e-02, -8.575e-03, 4.185e-02, 1.996e-02, -3.998e-03, -4.913e-03, -2.806e-02, -9.369e-03), r0);\n\tr1 = MulAdd(s0_0_0, M3x4(-9.445e-05, 5.493e-03, 3.455e-02, -1.350e-02, -4.914e-02, 1.802e-02, -7.098e-02, -2.797e-02, 6.551e-04, -1.144e-02, -7.462e-04, 5.474e-03), r1);\n\tr2 = MulAdd(s0_0_0, M3x4(1.800e-02, 3.464e-02, -1.416e-02, -8.819e-02, -3.611e-02, 3.967e-02, 5.867e-03, 9.414e-02, -4.628e-02, -1.848e-02, 3.075e-04, -1.116e-02), r2);\n\tr3 = MulAdd(s0_0_0, M3x4(-7.233e-03, -2.764e-02, -2.142e-02, 2.087e-02, 1.905e-02, -5.868e-02, -4.900e-02, 3.184e-02, 1.831e-03, 4.915e-03, 2.649e-02, -1.217e-02), r3);\n\tr0 = MulAdd(s0_0_1, M3x4(5.857e-03, 9.514e-03, 1.102e-02, -1.616e-03, -7.543e-02, -1.011e-02, -1.817e-02, -1.148e-02, 1.734e-03, 1.404e-03, -3.328e-03, 9.912e-03), r0);\n\tr1 = MulAdd(s0_0_1, M3x4(-1.850e-02, 2.933e-01, -6.853e-02, 2.949e-02, -3.841e-02, 6.708e-01, 5.893e-02, 3.614e-01, 9.383e-03, 1.069e-01, 3.493e-03, 1.655e-03), r1);\n\tr2 = MulAdd(s0_0_1, M3x4(9.473e-02, 4.626e-03, 1.054e-02, -1.005e-01, 2.881e-01, 8.076e-03, 2.435e-02, 1.111e-01, -6.196e-02, -7.233e-03, 7.476e-03, -6.289e-03), r2);\n\tr3 = MulAdd(s0_0_1, M3x4(6.262e-03, 3.516e-03, 2.109e-02, 8.779e-03, -2.143e-02, 4.856e-02, -4.855e-02, -4.048e-02, 2.852e-03, -1.029e-02, -4.945e-02, -1.199e-02), r3);\n\tr0 = MulAdd(s0_0_2, M3x4(-1.176e-03, -2.588e-03, -3.174e-02, -6.474e-03, -4.673e-03, -2.921e-05, -2.364e-02, 2.064e-03, 3.611e-03, 3.187e-03, 9.060e-02, 6.318e-04), r0);\n\tr1 = MulAdd(s0_0_2, M3x4(1.771e-02, 5.698e-03, 1.709e-02, -3.503e-02, 5.520e-03, 3.892e-02, -1.585e-02, -9.999e-03, -7.066e-03, -1.358e-02, -6.007e-04, 2.835e-03), r1);\n\tr2 = MulAdd(s0_0_2, M3x4(1.550e-02, 3.339e-02, -1.560e-03, -1.513e-02, 7.854e-02, 2.149e-02, -2.321e-03, 7.129e-03, -1.244e-02, 6.597e-04, -5.545e-03, 5.801e-03), r2);\n\tr3 = MulAdd(s0_0_2, M3x4(-5.756e-03, -9.332e-04, 7.462e-03, -2.783e-02, 1.247e-04, 1.930e-02, -5.367e-02, 6.196e-03, -2.841e-03, -2.488e-03, 3.808e-02, -6.416e-04), r3);\n\tr0 = MulAdd(s0_1_0, M3x4(3.175e-01, -3.259e-02, 5.764e-03, 3.572e-01, 6.230e-01, 3.457e-02, -2.519e-02, 6.973e-01, 1.037e-01, -2.233e-03, 2.533e-02, 1.058e-01), r0);\n\tr1 = MulAdd(s0_1_0, M3x4(5.013e-02, 2.124e-03, -3.317e-02, 1.362e-02, 8.784e-02, -3.546e-02, 1.501e-01, -3.481e-02, 1.142e-02, 1.639e-02, 1.085e-02, -5.622e-03), r1);\n\tr2 = MulAdd(s0_1_0, M3x4(1.018e-01, 1.750e-02, 9.937e-02, 9.039e-01, 1.865e-01, 2.924e-02, -1.143e-02, -8.926e-01, -5.468e-02, -3.759e-02, -1.213e-02, 2.427e-02), r2);\n\tr3 = MulAdd(s0_1_0, M3x4(-1.728e-02, -2.822e-01, -7.844e-02, -5.404e-02, -5.536e-02, -5.129e-01, 1.272e-02, -4.425e-02, -5.391e-03, -6.419e-02, -2.723e-02, 1.895e-02), r3);\n\tr0 = MulAdd(s0_1_1, M3x4(-3.135e-01, 1.039e-01, -2.092e-02, -3.584e-01, -6.341e-01, -8.082e-02, -2.023e-02, -6.899e-01, -9.937e-02, -1.752e-02, 1.861e-02, -1.137e-01), r0);\n\tr1 = MulAdd(s0_1_1, M3x4(-1.899e-01, -2.959e-01, 4.434e-01, 4.040e-02, 4.209e-01, -6.660e-01, -3.923e-01, -1.362e-01, -1.875e-02, -9.937e-02, 7.274e-03, -1.664e-02), r1);\n\tr2 = MulAdd(s0_1_1, M3x4(-1.285e-02, -3.076e-01, -2.356e-02, 1.420e-02, -1.861e-01, -2.874e-01, -9.692e-02, 7.617e-03, 1.460e-01, 1.130e-01, -1.789e-02, -3.112e-02), r2);\n\tr3 = MulAdd(s0_1_1, M3x4(-3.037e-01, 2.982e-01, 4.015e-01, -2.343e-01, -5.697e-01, 5.332e-01, 9.464e-01, -5.139e-01, -7.152e-02, 7.354e-02, 4.921e-02, -3.209e-02), r3);\n\tr0 = MulAdd(s0_1_2, M3x4(2.575e-02, 4.951e-01, 7.005e-02, 7.335e-03, -2.310e-02, -4.872e-01, 2.339e-01, -9.570e-03, 1.262e-03, -1.385e-02, 1.686e-01, 5.026e-03), r0);\n\tr1 = MulAdd(s0_1_2, M3x4(7.112e-02, -1.259e-02, -4.966e-02, -3.044e-02, -6.528e-02, -3.708e-02, 2.255e-01, 1.337e-02, 1.147e-02, 1.541e-02, 2.419e-04, -5.793e-04), r1);\n\tr2 = MulAdd(s0_1_2, M3x4(-1.679e-01, 4.385e-02, 4.834e-02, -3.524e-02, -2.842e-01, -1.049e-02, 1.458e-03, 3.501e-02, 4.593e-02, -1.034e-02, 9.453e-03, -2.663e-03), r2);\n\tr3 = MulAdd(s0_1_2, M3x4(7.414e-03, -8.961e-03, -9.222e-03, -1.505e-03, 7.776e-03, 3.633e-03, -1.130e-01, -3.001e-02, 1.463e-02, -7.014e-03, -6.145e-02, -1.919e-02), r3);\n\tr0 = MulAdd(s0_2_0, M3x4(5.313e-03, -9.997e-03, -3.144e-02, 1.395e-02, 1.068e-01, 3.945e-05, -4.951e-02, 1.874e-03, -6.101e-03, 1.351e-02, 1.806e-02, -9.222e-03), r0);\n\tr1 = MulAdd(s0_2_0, M3x4(-2.050e-02, -1.242e-02, 5.457e-03, 1.360e-02, -2.155e-02, 5.849e-03, -4.120e-02, -2.882e-03, -5.776e-03, -5.614e-03, -4.758e-03, 2.753e-03), r1);\n\tr2 = MulAdd(s0_2_0, M3x4(2.717e-02, 2.725e-02, -9.739e-02, -8.745e-02, 3.573e-02, 2.733e-02, 2.979e-02, 1.004e-01, 9.685e-03, 4.758e-03, -1.871e-03, -1.864e-02), r2);\n\tr3 = MulAdd(s0_2_0, M3x4(2.245e-02, -1.159e-02, 4.099e-02, -2.380e-02, 2.692e-02, -1.038e-01, -2.480e-02, -3.101e-03, -4.996e-03, 2.104e-03, 1.954e-02, -3.133e-02), r3);\n\tr0 = MulAdd(s0_2_1, M3x4(-3.370e-02, -7.489e-01, 9.913e-03, -3.727e-03, -2.200e-02, 7.189e-01, 8.426e-02, -1.251e-02, 3.844e-03, 7.860e-03, 1.343e-01, 1.060e-02), r0);\n\tr1 = MulAdd(s0_2_1, M3x4(2.718e-02, 1.739e-02, -1.048e-01, -6.029e-03, 5.644e-03, 5.693e-03, 1.256e-01, 4.214e-02, 3.031e-03, -6.308e-03, -1.031e-02, 7.556e-03), r1);\n\tr2 = MulAdd(s0_2_1, M3x4(-8.227e-02, -2.763e-02, 2.261e-01, -7.162e-02, 1.635e-03, 4.283e-02, 9.947e-02, 7.666e-02, 2.887e-02, 7.367e-03, 1.854e-02, -4.228e-03), r2);\n\tr3 = MulAdd(s0_2_1, M3x4(3.075e-01, 2.363e-02, -6.788e-02, 2.479e-01, 5.996e-01, 4.575e-02, -4.749e-02, 4.628e-01, 6.661e-02, -5.581e-03, -3.518e-02, 6.356e-02), r3);\n\tr0 = MulAdd(s0_2_2, M3x4(4.938e-03, 1.720e-01, -1.095e-04, -6.701e-03, -1.233e-02, -1.695e-01, -1.677e-01, 3.480e-03, 1.336e-03, 1.412e-02, -7.429e-01, 3.504e-04), r0);\n\tr1 = MulAdd(s0_2_2, M3x4(3.460e-02, 2.450e-03, -8.434e-02, -1.975e-02, 2.967e-03, -1.477e-04, 9.797e-02, 1.727e-02, 7.965e-03, -1.813e-03, 1.288e-03, -6.565e-04), r1);\n\tr2 = MulAdd(s0_2_2, M3x4(-1.458e-02, 3.034e-02, 4.005e-03, -4.391e-02, -8.667e-02, 3.182e-04, -7.493e-02, 2.559e-02, -4.620e-02, -4.471e-03, 7.274e-03, 1.621e-02), r2);\n\tr3 = MulAdd(s0_2_2, M3x4(-6.385e-03, -1.216e-02, 7.528e-03, 1.992e-02, -1.993e-03, 6.777e-03, -2.777e-02, 9.337e-02, -2.772e-03, 1.418e-03, 2.503e-02, 7.394e-03), r3);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n}\n\n//!PASS 2\n//!DESC conv1 (16x16)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2, T3\n//!OUT T4, T5, T6, T7\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.788e-02, 2.205e-01, 2.886e-03, 4.223e-01, 2.034e-01, -3.195e-01, -3.347e-01, -1.427e-01, 1.224e-01, -1.505e-01, -9.164e-02, -4.850e-01, -1.100e-02, -2.660e-01, 6.822e-02, -3.488e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-7.201e-02, -1.380e-01, 3.308e-02, -2.421e-02, 2.715e-02, 2.007e-01, 3.527e-02, -2.437e-02, -1.058e-01, -3.545e-01, -9.836e-02, 1.884e-01, 1.247e-01, 2.260e-01, -3.649e-02, 9.177e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(6.776e-02, -3.331e-02, -2.107e-02, 1.116e-01, 1.162e-01, 3.677e-02, -1.374e-01, 1.475e-01, 1.012e-01, -1.307e-02, -1.029e-01, -4.349e-01, -4.044e-02, 2.801e-02, 3.096e-02, -1.280e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(-5.518e-02, -3.696e-02, -9.311e-02, 4.086e-02, -1.857e-01, 6.179e-02, 1.553e-01, 3.918e-01, 9.151e-01, 3.935e-02, -1.277e-02, 1.679e-01, 7.160e-02, 6.361e-02, 2.239e-02, 3.312e-02), r3);\n\tr0 = MulAdd(s0_0_1, M4(1.120e-01, 5.365e-01, -2.755e-02, -1.419e-02, 8.365e-02, 2.276e-01, 1.655e-01, -2.647e-01, 1.794e-02, -1.330e-01, 4.972e-02, -4.486e-02, -3.020e-02, -1.177e+00, 6.891e-02, -3.763e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(7.856e-02, 1.100e-01, 1.564e-01, -3.104e-02, 2.918e-01, 1.883e-01, -1.200e-01, 3.592e-01, -4.532e-02, -3.269e-02, -1.160e-01, -2.479e-01, 9.053e-03, 2.405e-01, -8.387e-02, 4.650e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(-2.316e-02, 1.846e-02, -6.399e-02, -2.430e-01, -6.203e-02, -6.119e-02, 1.948e-01, -7.786e-02, 4.720e-02, 1.049e-01, -4.580e-02, 2.116e-01, -1.169e-01, -3.922e-02, 2.189e-02, 2.083e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(-1.975e-02, 1.009e-01, -2.456e-01, -1.100e-01, -9.144e-02, 8.602e-02, 1.597e-01, 4.604e-02, 1.547e-01, -2.554e-02, 1.091e-01, -1.389e-01, -1.007e-01, -8.373e-02, 1.741e-01, 7.786e-02), r3);\n\tr0 = MulAdd(s0_0_2, M4(4.151e-02, 6.592e-01, -1.322e-01, 4.623e-01, 8.289e-02, -1.017e-01, 7.299e-03, -4.471e-02, 2.270e-02, 8.943e-02, 7.102e-02, 2.800e-02, -4.870e-02, -8.418e-01, 2.080e-01, -2.627e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.392e-02, -9.127e-02, 1.173e-01, -1.188e-02, -3.384e-02, -3.122e-02, -4.432e-02, -1.217e-01, 4.255e-03, 9.169e-02, 9.675e-03, -7.991e-03, -1.100e-02, 1.265e-01, -1.179e-01, -2.188e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.205e-01, 5.658e-02, 9.979e-02, 5.176e-01, 7.118e-02, 5.188e-02, -6.473e-02, 1.148e-02, -4.085e-02, 1.268e-02, 6.781e-03, 1.673e-02, 1.130e-01, 1.516e-02, -6.337e-02, -5.721e-01), r2);\n\tr3 = MulAdd(s0_0_2, M4(-2.387e-02, -1.343e-01, -5.973e-02, -1.776e-01, 6.187e-02, 1.114e-02, 6.211e-02, -5.296e-03, 6.409e-02, 4.284e-02, 1.615e-02, -1.827e-02, -4.253e-02, 1.404e-01, 5.407e-03, 1.092e-01), r3);\n\tr0 = MulAdd(s0_1_0, M4(-3.757e-02, -5.566e-01, 6.740e-01, -3.182e-01, -1.468e-02, 2.081e-01, -2.767e-01, -1.647e-01, 6.650e-02, -1.717e-01, -1.351e-02, -7.040e-02, 4.003e-02, 5.564e-01, -9.491e-01, 2.685e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-6.944e-02, -1.189e-01, 3.454e-02, 1.972e-02, -7.713e-02, -5.943e-01, 1.156e-01, 3.877e-03, -5.640e-02, -5.369e-01, -3.708e-02, -4.546e-02, 9.500e-02, 7.988e-02, -3.280e-02, 3.479e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-2.628e-01, -5.848e-02, -3.017e-02, 2.900e-01, 1.628e-01, 1.317e-02, -4.003e-04, -1.658e-01, 1.968e-01, -2.017e-01, 3.531e-03, -2.102e-01, 3.050e-01, 1.209e-01, 6.500e-02, -2.959e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(2.752e-02, 8.765e-02, 1.409e-01, -1.460e-01, 1.673e-01, 8.431e-02, -3.811e-02, 3.285e-02, -1.143e-02, -1.407e-01, 6.435e-02, -1.256e-01, 3.138e-02, -3.065e-02, -1.577e-01, -2.050e-02), r3);\n\tr0 = MulAdd(s0_1_1, M4(-4.785e-01, -1.996e+00, -9.564e-02, -8.925e-01, 5.598e-02, -1.605e-01, -9.596e-02, 2.212e-01, -7.452e-02, -4.162e-02, -8.838e-02, 6.455e-02, 6.798e-01, -4.194e+00, -3.265e+00, 2.397e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(6.663e-02, -5.464e-01, -2.490e-01, 3.779e-01, 5.311e-02, -2.478e-01, -3.091e-02, 1.511e-01, -1.553e-02, 1.489e-02, -1.911e-02, -2.666e-02, -2.072e-02, 4.403e-01, 1.685e-01, -4.537e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(3.311e-01, -3.987e-02, 2.136e-01, -5.371e-01, -1.577e-01, 8.782e-02, 1.558e-03, 5.332e-01, -2.526e-01, 6.945e-02, 6.891e-02, -2.276e-03, -4.329e-02, 2.419e-01, -4.696e-03, 6.425e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(3.292e-01, 2.587e-01, -6.072e-02, 4.263e-02, -2.036e-02, -1.189e-01, 3.713e-02, -2.456e-01, -8.160e-02, 5.654e-02, -1.618e-02, 1.590e-02, -5.872e-01, -1.659e-01, 2.064e-01, -6.796e-02), r3);\n\tr0 = MulAdd(s0_1_2, M4(-2.078e-01, 6.931e-01, 6.455e-02, 4.852e-01, 1.422e-02, -7.701e-02, 7.537e-02, 5.240e-02, -3.649e-02, -3.341e-02, -4.295e-02, -1.693e-02, 5.827e-01, -8.372e-01, -2.607e-01, -5.159e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-3.787e-02, -7.057e-02, 3.232e-01, 4.029e-01, 2.048e-02, 6.181e-02, 4.566e-04, 2.973e-02, -2.354e-02, -6.249e-02, 3.777e-03, 5.358e-02, 1.012e+00, 2.174e-01, -2.920e-01, 2.505e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.770e-01, -7.771e-02, -6.974e-03, -1.096e+00, -2.672e-02, 1.937e-02, 3.560e-02, -2.055e-02, -2.541e-02, 1.974e-02, 1.742e-02, -1.021e-01, -1.167e+00, 2.741e-01, 3.571e-02, 1.265e+00), r2);\n\tr3 = MulAdd(s0_1_2, M4(3.816e-01, -3.057e-01, -3.261e-02, 6.758e-02, 2.721e-02, 6.231e-02, 4.165e-02, 1.412e-01, 1.198e-01, 6.042e-02, -9.042e-03, 1.507e-02, -4.577e-01, 1.156e-01, 1.095e-01, -6.893e-04), r3);\n\tr0 = MulAdd(s0_2_0, M4(-1.170e-02, -1.069e-02, -2.041e-01, -1.212e-01, 2.867e-02, 4.236e-02, 4.693e-02, 6.569e-02, -1.030e-03, 4.134e-03, 1.563e-01, -8.735e-02, 2.977e-02, 3.956e-02, 1.021e-01, -4.915e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(-7.992e-02, -9.630e-02, -5.731e-04, -6.216e-02, 4.059e-02, 1.215e-01, -8.239e-03, 4.672e-02, -1.249e-02, 6.660e-02, -1.029e-02, 3.390e-02, 1.101e-01, 2.082e-01, -3.107e-02, 1.053e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(3.630e-03, 2.107e-02, 1.947e-02, 3.527e-01, 6.275e-02, -8.310e-03, -2.907e-02, -1.798e-01, -2.168e-01, 6.908e-02, 3.534e-02, 3.211e-02, 2.041e-02, -5.920e-02, -1.734e-02, -3.959e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(-2.097e-01, -2.028e-01, 1.014e-01, 5.208e-02, 1.323e-01, 3.837e-02, 3.261e-02, 8.462e-02, -3.384e-02, -7.584e-03, -1.607e-02, -9.186e-03, 2.007e-01, 2.164e-01, -1.616e-01, 1.733e-02), r3);\n\tr0 = MulAdd(s0_2_1, M4(-8.265e-03, -4.593e-02, -2.472e-01, 2.918e-01, 8.995e-03, -6.153e-02, 1.484e-01, 1.439e-03, -2.052e-02, -7.205e-02, -8.907e-02, -4.459e-02, -3.343e-03, 1.616e-01, -1.050e-01, 4.806e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.255e-01, 6.081e-01, -1.847e-02, -2.654e-01, -3.821e-02, -1.792e-01, -2.302e-02, 1.364e-01, 1.004e-01, -3.006e-04, -2.543e-02, -2.154e-02, -5.140e-02, -1.564e+00, 7.026e-02, 2.832e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.539e-01, 1.131e-01, -1.250e-01, 2.580e-01, -1.521e-01, -1.441e-02, 1.562e-02, 6.420e-02, -1.597e-02, 8.342e-02, 2.532e-02, 1.575e-04, -6.713e-02, -2.416e-01, 1.309e-01, -2.142e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(-4.146e-01, -5.211e-02, -1.785e-01, -3.507e-02, 1.238e-01, 3.765e-02, 8.861e-02, -1.806e-01, -2.905e-02, -1.528e-02, -4.457e-02, 4.804e-02, 7.107e-01, 4.643e-01, 4.496e-02, -2.635e-02), r3);\n\tr0 = MulAdd(s0_2_2, M4(4.288e-03, 3.332e-01, 3.487e-02, -7.929e-02, -2.236e-02, 2.853e-02, 2.600e-02, -9.128e-02, 1.197e-02, -1.344e-02, -2.150e-02, -2.676e-02, 5.888e-02, -2.537e-01, 5.843e-02, -5.843e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(4.900e-03, 6.538e-01, 6.492e-03, -7.793e-01, 5.391e-02, 1.312e-01, -6.935e-03, 5.686e-03, -1.187e-02, -3.767e-02, -5.301e-03, 7.893e-03, -5.299e-02, -1.202e+00, -7.189e-02, 6.143e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.418e-01, 4.670e-02, -1.077e-01, 2.569e-01, -1.776e-02, -3.107e-04, 2.152e-02, 4.620e-02, 1.079e-02, -2.474e-03, -2.722e-02, 5.906e-03, 2.232e-01, -3.032e-01, 1.995e-02, -4.413e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(-1.761e-01, -2.278e-01, -5.653e-02, 9.840e-02, -2.643e-02, 9.197e-03, -7.835e-03, -2.857e-03, -2.946e-02, -1.064e-02, 4.362e-03, -5.246e-02, 3.545e-01, 3.456e-01, 1.295e-01, -7.074e-02), r3);\n\tr0 = MulAdd(s1_0_0, M4(-4.993e-02, 2.047e-01, 5.817e-03, 6.864e-03, 6.335e-02, 7.181e-03, 5.155e-02, -2.781e-01, 3.932e-01, 2.601e-01, 1.913e-01, 2.370e-01, -8.294e-02, -1.792e-01, -5.576e-02, -4.238e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.033e-01, -1.395e-01, 1.037e-01, 3.453e-02, -1.706e-02, 3.962e-02, 1.144e-02, 1.684e-02, -1.648e-01, -1.411e-01, -1.047e-01, 1.290e-02, 5.274e-03, -2.678e-02, -1.093e-01, -1.328e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(-7.331e-02, 6.674e-03, -1.356e-01, 1.838e-01, -1.793e-02, 3.824e-02, 3.625e-03, 2.822e-02, 1.449e-01, -2.238e-02, 4.559e-02, -4.704e-02, -4.312e-02, -6.242e-03, -6.706e-02, -6.263e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(6.303e-02, -7.718e-02, -1.129e-02, 5.382e-01, 3.047e-02, 2.363e-02, -5.092e-02, -3.522e-02, -1.111e-02, 1.211e-02, 1.154e-01, -8.485e-01, 1.069e-03, 1.073e-02, -2.504e-02, 1.798e-01), r3);\n\tr0 = MulAdd(s1_0_1, M4(-3.989e-01, -1.374e-01, -2.176e-01, -1.258e-01, 1.233e-01, 7.124e-02, 3.437e-02, -4.593e-02, 2.689e-01, -1.160e-01, 1.173e-01, -1.228e-01, -1.664e-01, 9.002e-02, -9.318e-02, -2.302e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.111e-01, -8.454e-02, 1.202e-01, -2.781e-01, 4.718e-02, 6.377e-02, 1.100e-02, 8.081e-03, -3.971e-02, -1.627e-02, 9.318e-03, -1.891e-01, -6.413e-03, -8.276e-02, 6.843e-02, -1.711e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-2.548e-01, -1.352e-01, 2.068e-01, -4.666e-04, 4.776e-02, -3.383e-02, -2.851e-02, 1.011e-01, -3.917e-02, -8.640e-02, 1.391e-01, -3.802e-01, -2.098e-02, -1.179e-02, 8.600e-02, -1.634e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(-2.408e-01, 1.134e-01, -1.465e-01, 7.476e-01, -1.172e-02, -1.506e-02, 2.364e-02, 1.004e-02, 1.266e-01, 8.075e-02, 1.692e-02, -8.509e-01, -8.544e-02, 5.709e-02, -1.098e-01, 1.967e-01), r3);\n\tr0 = MulAdd(s1_0_2, M4(-2.356e-01, 1.104e-01, -6.447e-02, -1.363e-01, -2.479e-02, -1.096e-01, -4.085e-02, -1.365e-01, 5.432e-02, -2.282e-02, 5.583e-03, -4.026e-05, 1.497e-03, 1.318e-01, -5.163e-02, 3.236e-01), r0);\n\tr1 = MulAdd(s1_0_2, M4(1.142e-01, -1.009e-02, 1.715e-02, 1.964e-01, -4.364e-03, 1.121e-01, -1.091e-02, 5.330e-02, -5.478e-03, 3.512e-02, -7.683e-03, 6.890e-02, -1.503e-02, -4.837e-02, -5.401e-03, -1.576e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-9.630e-02, 4.349e-02, 4.008e-02, -1.087e-01, 5.170e-02, 3.770e-02, -2.122e-02, -1.665e-02, 1.236e-01, 1.153e-01, -4.062e-02, -9.029e-02, -2.276e-01, 3.961e-02, -2.680e-02, 7.604e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(9.642e-02, -2.775e-02, -7.485e-02, 2.815e-01, 3.261e-02, 5.116e-03, -4.167e-02, 4.455e-02, 1.696e-01, 2.301e-02, 3.673e-02, -5.035e-02, 9.058e-02, -2.614e-02, 1.633e-02, -8.473e-02), r3);\n\tr0 = MulAdd(s1_1_0, M4(-2.910e-01, -1.390e-01, 4.077e-01, -1.005e-01, 4.870e-02, 5.401e-01, -5.858e-02, -9.876e-01, 5.905e-01, 3.892e-01, -9.640e-02, 1.215e-01, -4.347e-02, -3.046e-01, -4.608e-03, -3.377e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.409e-01, 1.907e-01, 9.375e-02, -4.069e-02, 4.627e-02, -1.421e-01, -6.118e-02, -8.389e-03, -1.271e-01, -4.202e-02, 3.236e-01, 1.808e-01, -8.544e-02, 1.672e-01, -1.792e-01, 4.133e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-1.603e-01, -7.611e-02, -2.435e-02, -4.799e-02, 1.084e-02, 8.606e-02, 2.100e-02, 7.720e-03, -1.179e-01, -5.244e-02, 1.981e-01, 2.171e-01, -7.768e-02, -4.968e-02, -8.753e-02, 4.112e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(9.018e-03, -2.268e-03, 4.058e-01, 4.308e-01, 9.977e-02, 1.399e-01, 1.336e-01, 3.760e-02, 7.738e-02, -1.151e-02, -1.266e-01, -7.504e-02, 5.391e-02, -6.939e-02, 1.199e-01, -1.788e-01), r3);\n\tr0 = MulAdd(s1_1_1, M4(2.244e-01, -2.995e-01, 2.437e-01, 2.565e-01, 2.329e-01, -6.590e-02, 3.115e-01, 9.718e-01, -7.821e-01, -3.917e-01, -8.647e-02, -1.347e-01, 3.259e-02, 2.215e-02, -1.429e-01, 4.307e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.248e-02, 1.795e-01, 1.875e-02, -5.574e-02, 1.725e-01, 3.188e-01, 1.961e-01, -1.282e-01, 1.792e-01, 3.603e-01, -3.308e-01, -2.750e-02, -7.465e-02, 2.029e-01, -2.332e-01, 7.252e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(4.268e-01, -4.104e-01, -1.738e-01, -2.896e-01, 8.621e-02, -1.492e-01, 1.640e-01, 4.399e-01, -7.638e-01, -5.459e-02, -2.984e-01, 2.875e-01, 2.264e-01, -1.462e-03, -2.459e-01, 4.258e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-7.983e-02, 1.825e-01, -6.268e-02, -9.442e-01, -7.087e-01, -7.251e-02, 2.900e-01, -1.705e-01, 3.997e-02, -2.154e-01, 4.903e-02, 1.114e+00, 1.061e-01, 4.603e-02, 4.391e-01, 4.522e-01), r3);\n\tr0 = MulAdd(s1_1_2, M4(3.896e-01, 4.771e-01, 2.362e-01, 1.370e-01, -2.130e-02, -1.543e-01, 5.252e-02, 4.703e-01, 2.130e-01, 2.542e-01, 1.870e-01, -7.936e-02, 4.324e-02, -1.922e-01, -1.204e-01, -3.205e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.321e-02, -1.767e-01, 1.266e-01, 3.195e-01, -8.089e-02, 3.223e-02, 8.967e-02, 1.602e-01, 7.202e-02, -1.005e-01, 1.071e-01, -2.772e-01, -1.831e-01, 1.080e-01, -3.222e-02, 2.815e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.244e-01, -3.283e-01, 2.939e-01, 3.782e-01, 5.058e-02, -3.428e-02, 7.557e-03, -2.153e-01, -1.849e-01, -1.252e-01, 9.457e-02, 9.326e-02, -1.958e-01, -1.131e-02, 6.031e-03, 1.186e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.450e-01, -1.806e-02, -8.782e-02, -3.611e-01, -1.112e-01, 7.050e-03, -1.125e-01, -6.116e-02, 7.769e-02, 5.958e-02, 1.165e-01, -5.735e-02, -1.691e-01, 2.795e-02, 6.288e-02, 2.508e-01), r3);\n\tr0 = MulAdd(s1_2_0, M4(1.054e-03, -1.183e-01, -1.109e-01, 1.868e-01, 1.276e-01, -1.411e-01, -4.754e-01, -7.710e-02, 2.912e-02, 4.893e-02, -3.100e-01, -1.850e-01, -3.076e-03, -3.016e-01, 2.920e-01, -1.127e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(5.798e-02, 1.538e-01, 6.949e-02, -1.785e-01, -1.481e-01, -1.505e-01, 1.481e-01, 3.261e-02, -1.548e-01, -3.394e-01, 4.677e-02, -1.193e-01, 2.266e-01, 1.043e-02, -3.698e-01, -1.466e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.683e-01, 2.200e-01, -1.425e-02, 9.899e-02, 1.899e-01, 5.855e-02, -2.828e-02, -1.297e-01, -1.318e-01, 9.850e-02, 1.719e-01, -4.536e-02, -2.443e-01, 1.685e-02, -1.681e-01, -3.148e-01), r2);\n\tr3 = MulAdd(s1_2_0, M4(6.502e-02, -2.764e-01, 3.466e-01, 1.108e-01, 3.518e-01, 3.188e-02, 8.485e-02, 2.970e-02, -5.964e-02, 2.218e-02, -8.955e-02, 1.563e-02, -2.317e-02, -8.612e-02, -1.207e-02, -2.591e-01), r3);\n\tr0 = MulAdd(s1_2_1, M4(2.953e-02, -2.084e-02, -2.636e-01, -2.164e-01, -1.254e-01, 1.221e-01, 1.412e-01, -1.345e-01, -2.774e-02, -1.293e-01, 1.134e-02, -1.304e-01, 1.950e-01, 4.513e-01, 1.295e-01, 3.086e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.355e-01, 1.618e-01, -1.362e-01, -4.446e-01, 1.281e-01, -8.160e-01, 3.934e-01, -1.507e-01, -1.194e-02, 1.300e-01, 4.904e-03, 3.791e-01, 2.725e-01, -2.901e-01, 5.608e-01, -9.418e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.487e-01, 4.373e-01, 2.440e-02, -2.752e-01, -1.603e+00, -3.207e+00, 1.759e-02, 1.743e-01, -2.441e-01, -2.632e-02, 6.329e-02, -6.698e-02, 2.263e+00, -3.160e-01, 9.780e-02, -2.079e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(4.553e-01, -1.023e-01, -4.910e-01, -3.909e-01, -2.016e+00, 5.797e-01, 1.948e-01, 2.037e-01, -3.967e-03, 2.289e-01, -1.337e-01, 2.111e-02, 4.741e-02, -8.659e-02, -2.989e-01, -2.803e-01), r3);\n\tr0 = MulAdd(s1_2_2, M4(8.533e-02, -2.044e-02, -4.864e-03, 6.769e-02, 1.847e-02, -1.191e-01, 1.170e-02, 8.726e-02, -1.165e-01, -9.607e-02, -2.285e-02, 9.167e-02, 4.736e-02, 2.335e-02, -4.710e-02, -9.036e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(-9.365e-02, -1.973e-01, -4.525e-02, 4.015e-01, 3.677e-02, -6.580e-02, 2.892e-02, 1.522e-01, 3.631e-02, 1.585e-01, -7.115e-04, -1.668e-01, -1.926e-02, -1.137e-01, 2.623e-03, 2.473e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.161e-01, 3.676e-01, 5.508e-02, -6.985e-02, 2.335e-01, 8.693e-02, -1.362e-01, 2.583e-01, 6.999e-02, 1.302e-01, -6.527e-02, -3.703e-03, -6.803e-01, 1.826e-01, 9.836e-02, -2.231e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-7.958e-02, 1.647e-01, 1.773e-01, -2.316e-01, -3.093e-02, -1.469e-01, 8.630e-02, -2.154e-02, -1.678e-01, -8.236e-03, 7.567e-02, 2.113e-01, -2.833e-01, 1.736e-01, -9.790e-02, -2.214e-01), r3);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-7.915e-03, 2.313e-01, 1.663e-01, 2.901e-01, 2.950e-02, -2.420e-01, -9.986e-02, -1.850e-01, -1.628e-01, -4.619e-02, 1.841e-02, -1.286e-01, 2.895e-02, 5.852e-02, 4.322e-02, -3.607e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-2.329e-02, -1.679e-01, 9.648e-02, -3.971e-02, -3.805e-02, 2.330e-02, -4.859e-03, -3.002e-02, -1.773e-03, 1.279e-01, -1.262e-01, 2.134e-01, -1.408e-02, -6.924e-02, -1.234e-02, -2.436e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.410e-02, -6.680e-02, 5.066e-02, -1.010e-01, -5.222e-03, 3.370e-02, -2.072e-02, -1.557e-03, 3.181e-02, 4.461e-02, 9.015e-02, 1.097e-01, -3.886e-02, 1.588e-03, -3.767e-03, 1.778e-03), r2);\n\tr3 = MulAdd(s0_0_0, M4(-1.159e-01, -7.286e-02, 1.441e-01, 9.811e-02, -3.207e-02, -1.879e-02, -1.785e-02, -9.868e-03, 6.218e-02, -1.400e-01, 1.591e-01, -3.710e-01, -3.213e-03, 6.202e-03, -3.540e-03, -5.158e-03), r3);\n\tr0 = MulAdd(s0_0_1, M4(-2.540e-02, -1.536e-01, 1.102e-01, 1.243e-01, 3.744e-02, 2.204e-01, -1.632e-01, 2.714e-01, -9.234e-02, 2.456e-01, -1.153e-01, 2.645e-01, -5.233e-02, -1.716e-01, -1.452e-01, -1.102e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-6.021e-02, -4.161e-02, 7.673e-02, 3.739e-02, 2.503e-02, -7.751e-03, 3.178e-02, -1.489e-01, 4.046e-01, -1.050e-01, 3.098e-01, 2.552e-01, 3.713e-02, 8.680e-02, -1.751e-02, -5.720e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-7.295e-02, 5.431e-02, 6.422e-02, -3.336e-01, -1.141e-01, -7.352e-03, 4.670e-02, 1.574e-01, 3.906e-02, -3.211e-01, -1.459e-01, -9.091e-02, -2.846e-02, 6.013e-02, -1.599e-02, 1.274e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(9.034e-02, 8.377e-02, -2.708e-02, -6.154e-02, -1.199e-01, 8.904e-03, 1.127e-01, -1.103e-01, -7.303e-02, -1.373e-01, -4.763e-01, -4.225e-01, 5.070e-02, -8.253e-03, 1.210e-03, 1.323e-01), r3);\n\tr0 = MulAdd(s0_0_2, M4(5.157e-02, 6.418e-02, 1.205e-01, -7.100e-02, -4.041e-02, -1.402e-01, 8.977e-02, -8.210e-02, 1.448e-01, -4.122e-01, -3.547e-02, 1.097e-03, 3.094e-02, 2.710e-03, -6.821e-02, 1.405e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(4.528e-02, -2.049e-01, 3.548e-02, -3.209e-03, 4.600e-02, 2.014e-01, -1.952e-02, 5.476e-02, -1.712e-01, -1.112e-01, -7.643e-02, -3.147e-01, 2.594e-03, 9.728e-02, 5.439e-04, -1.572e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.322e-01, -4.896e-02, 3.055e-02, 6.800e-02, -1.187e-02, -9.182e-03, 2.089e-02, 1.001e-01, -1.363e-02, 1.372e-03, -7.296e-02, -2.705e-01, -1.140e-01, -2.800e-02, 2.638e-02, 2.419e-01), r2);\n\tr3 = MulAdd(s0_0_2, M4(-4.968e-02, -5.578e-02, 4.635e-02, -1.004e-02, -1.230e-02, -1.782e-03, 1.124e-02, -1.062e-01, -1.861e-01, 4.861e-02, -1.169e-02, -1.337e-02, -1.665e-01, 2.148e-02, 3.667e-02, -2.326e-02), r3);\n\tr0 = MulAdd(s0_1_0, M4(7.644e-02, -3.188e-01, -1.401e-01, -3.613e-01, 1.067e-01, 2.599e-01, 3.078e-01, 1.362e-01, -1.382e-01, 1.384e-01, -2.454e-02, -3.560e-02, 4.077e-02, 3.274e-02, 4.487e-02, 5.733e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-6.129e-02, 1.563e-01, -8.202e-02, 6.703e-02, -1.114e-02, 1.995e-02, 1.526e-02, -4.406e-02, -1.241e-01, 1.256e-01, 4.497e-02, 1.564e-01, -1.277e-02, 5.890e-03, 8.156e-03, 4.301e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(7.849e-02, 6.458e-03, 6.630e-03, -1.635e-01, -3.300e-01, 2.363e-02, 4.198e-02, 9.953e-03, -1.509e-01, -1.157e-01, -2.212e-01, 6.328e-02, 4.215e-02, -2.320e-02, 2.359e-02, -2.224e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(1.825e-01, -5.206e-02, 1.159e-01, 9.301e-02, -7.233e-02, -6.685e-03, 2.327e-01, 4.116e-02, 3.053e-01, -1.067e-01, 8.498e-02, 3.195e-01, -5.515e-02, 1.050e-02, -5.171e-03, -7.396e-02), r3);\n\tr0 = MulAdd(s0_1_1, M4(2.822e-01, 1.341e-01, 1.264e-01, -2.711e-01, -1.322e-01, -2.408e-01, 1.965e-01, -2.900e-01, 1.824e-02, 1.211e-01, 5.013e-02, 4.606e-01, 1.189e-02, -1.960e-01, 2.042e-01, -2.253e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-7.823e-02, 9.734e-02, -5.189e-02, -3.964e-02, -2.510e-01, -3.134e-01, 1.601e-01, 4.233e-01, -5.823e-02, 1.410e-01, -2.728e-01, -5.005e-03, 1.834e-01, 1.057e-01, -4.848e-02, -1.887e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(3.289e-02, 5.907e-03, -1.234e-01, -3.292e-01, 1.058e+00, -1.529e-01, 1.042e-01, -4.950e-01, -7.259e-01, 3.606e-01, 3.703e-01, 3.394e-01, -8.607e-02, -1.108e-01, -1.085e-02, -1.360e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-7.514e-02, 9.963e-02, -3.845e-02, 1.092e-01, 3.325e-01, 5.651e-02, -2.316e-01, 2.443e-01, -5.166e-02, 2.589e-02, 1.411e-01, 4.058e-01, -2.861e-01, -4.667e-02, 1.675e-01, -8.307e-02), r3);\n\tr0 = MulAdd(s0_1_2, M4(4.328e-02, 4.270e-02, -3.197e-02, 4.408e-02, 4.936e-02, -7.399e-02, -1.464e-01, 3.995e-02, -2.276e-02, 1.752e-01, 3.931e-02, -2.522e-02, -3.368e-02, 2.026e-01, 3.148e-01, -5.858e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(8.391e-02, -9.627e-02, -4.981e-02, -4.425e-02, 6.787e-02, -1.238e-02, -4.283e-02, -9.281e-02, -1.180e-01, -1.690e-01, 1.373e-01, -4.308e-01, -1.990e-01, -1.212e-02, 8.418e-02, 4.569e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-8.348e-02, -4.996e-05, 2.012e-02, 8.968e-02, -6.598e-02, 1.919e-02, -4.698e-02, 1.563e-01, 1.776e-01, -2.686e-01, -3.378e-01, -2.572e-01, 1.284e+00, -1.245e-01, 4.371e-02, -5.282e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(7.637e-02, -1.159e-02, 2.048e-02, 7.349e-02, 9.171e-03, 4.610e-03, 3.335e-02, -2.658e-02, 9.131e-02, 5.050e-02, 1.521e-01, 3.604e-01, -3.753e-02, -6.903e-03, -1.092e-01, -5.029e-02), r3);\n\tr0 = MulAdd(s0_2_0, M4(-3.441e-03, -1.740e-02, 1.082e-01, 7.345e-02, -8.345e-02, 1.199e-01, 2.092e-01, 1.875e-02, -5.602e-02, -9.517e-02, -1.687e-02, -6.940e-02, -2.861e-02, -2.070e-02, -9.377e-02, -1.605e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-5.354e-02, -1.618e-01, 5.823e-02, -6.546e-02, -5.124e-03, -7.898e-02, 7.217e-02, 1.291e-03, -2.367e-02, -2.240e-01, -6.943e-02, 1.452e-01, 4.003e-03, 1.072e-01, 2.960e-02, 2.991e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-4.223e-02, -6.257e-02, -2.620e-02, 1.205e-02, -9.487e-02, 4.820e-02, 4.449e-02, 1.966e-01, -1.046e-01, 7.834e-02, 1.797e-02, -1.268e-01, -2.750e-02, 2.929e-02, 4.819e-02, 3.435e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(4.515e-02, 5.433e-02, -7.239e-02, -1.145e-01, -5.142e-02, 4.777e-02, -1.766e-02, -7.526e-02, -1.771e-01, -4.487e-02, -6.856e-02, 1.872e-02, 4.895e-02, 3.239e-02, -3.676e-02, -2.286e-02), r3);\n\tr0 = MulAdd(s0_2_1, M4(2.738e-02, -4.071e-02, 1.199e-01, -8.919e-03, 2.352e-02, 8.427e-02, -3.019e-01, -4.260e-02, -1.008e-01, -7.361e-02, 3.589e-02, -1.622e-01, -9.829e-03, -3.717e-03, -1.973e-02, 7.542e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(2.026e-02, -1.538e-01, 1.137e-01, 6.923e-02, 1.989e-01, -6.021e-02, -6.470e-02, -1.738e-01, 3.096e-02, 1.238e-01, 1.263e-02, 2.323e-01, -2.715e-03, -1.042e-01, 3.707e-02, -1.106e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.520e-01, 1.000e-01, 1.170e-01, -7.272e-02, -4.451e-02, 4.370e-02, -4.981e-02, 1.298e-01, -3.912e-01, 9.328e-02, 1.127e-01, 1.423e-01, 1.909e-01, 1.071e-01, 3.507e-03, 1.416e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(-7.993e-02, 1.371e-01, 1.440e-01, 1.744e-02, -2.579e-02, -1.294e-01, 1.339e-02, 7.226e-02, 6.843e-03, 1.007e-01, 3.133e-02, -4.163e-02, 1.564e-01, 6.499e-03, 3.009e-04, 1.653e-01), r3);\n\tr0 = MulAdd(s0_2_2, M4(-1.552e-02, 3.158e-02, 3.649e-02, 5.150e-02, -2.377e-02, -4.307e-02, 1.686e-02, 1.262e-01, -7.875e-03, -1.444e-01, 7.235e-02, -2.069e-01, 3.733e-02, 7.291e-02, -1.597e-01, -1.178e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-3.115e-03, 3.027e-01, 4.782e-02, 2.884e-02, 2.370e-04, 3.058e-01, 2.475e-03, 3.804e-02, 1.758e-01, 5.791e-02, 1.450e-02, -1.590e-01, 1.848e-02, -2.152e-01, -7.662e-03, 5.295e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.668e-01, 6.535e-02, 1.100e-02, 2.658e-03, 9.049e-02, 6.109e-04, -1.145e-02, -1.598e-01, 5.134e-02, 2.099e-01, -1.005e-02, 7.956e-03, 3.372e-03, 8.336e-02, -3.307e-02, 1.162e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(5.632e-02, 6.188e-02, 2.411e-03, -5.066e-02, -2.540e-02, 6.312e-02, -3.425e-02, -6.262e-03, -7.995e-02, 9.525e-02, -2.053e-02, 1.388e-01, 3.157e-01, 3.314e-03, 5.117e-02, -4.636e-02), r3);\n\tr0 = MulAdd(s1_0_0, M4(8.590e-02, 6.446e-01, -1.562e-01, 2.913e-01, 5.344e-02, -1.400e-02, -7.898e-02, -4.315e-02, -6.779e-02, -4.896e-02, 1.785e-01, 3.291e-01, 4.195e-02, -2.473e-01, 5.653e-01, -2.298e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(3.283e-03, 3.397e-01, 1.421e-01, 8.505e-02, -3.484e-02, -8.960e-02, 1.213e-03, 4.603e-02, -2.324e-02, 1.609e-01, -1.153e-02, -2.822e-02, -4.412e-02, -1.046e-01, -9.889e-02, -8.732e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.913e-01, -1.222e-01, 3.583e-02, 2.901e-01, 9.858e-03, 1.897e-02, 1.378e-02, 1.777e-02, 9.261e-02, 3.423e-02, -1.856e-02, 1.296e-01, -2.358e-01, 4.279e-02, -4.946e-02, -1.802e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(-1.303e-01, 5.682e-02, -8.349e-02, -1.316e-01, 4.387e-03, -1.813e-02, 5.861e-03, -4.724e-02, -7.610e-02, -3.493e-02, 1.158e-01, 8.360e-02, -2.305e-02, -6.356e-02, 4.536e-02, 2.333e-04), r3);\n\tr0 = MulAdd(s1_0_1, M4(1.886e-01, -2.109e+00, 1.531e-01, 6.373e-01, -1.433e-02, -3.447e-01, -2.173e-01, -6.519e-01, -2.606e-02, 1.638e-02, -9.177e-02, -1.945e-02, 2.009e-01, 1.401e+00, -3.765e-01, -4.028e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.465e-01, 2.076e-02, 5.545e-02, -6.316e-03, -4.264e-02, -2.307e-01, -1.870e-01, -3.086e-02, -5.718e-03, -2.829e-02, -3.083e-02, -2.822e-02, 4.843e-02, -2.177e-01, -3.814e-02, 4.116e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-2.086e+00, 1.872e-01, -5.732e-03, -3.458e-01, 1.238e-01, 1.294e-01, 3.202e-02, 5.365e-03, -1.686e-01, -1.087e-01, -1.662e-02, 1.399e-03, -3.471e-01, -3.993e-02, 2.143e-02, 2.669e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(-2.883e-01, 3.230e-02, 2.048e-01, 4.064e-01, 1.489e-01, 3.925e-02, 5.505e-04, 4.449e-02, -1.532e-01, 3.364e-02, 5.054e-02, -9.420e-02, 5.333e-01, 6.590e-02, -1.114e-01, 1.348e-01), r3);\n\tr0 = MulAdd(s1_0_2, M4(1.298e-01, 3.448e-01, 4.583e-02, -3.943e-01, 1.185e-01, 1.880e-01, 4.143e-02, -2.658e-01, 7.347e-02, -6.135e-02, 1.325e-01, 2.322e-02, -1.175e-01, -3.123e-01, -1.407e-01, 5.234e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.979e-02, 2.021e-01, -4.016e-02, 2.298e-01, 7.370e-02, 1.988e-01, -8.363e-02, -9.523e-02, 2.068e-02, 1.270e-01, 1.553e-02, 4.099e-02, 6.799e-03, -7.873e-03, 5.223e-03, -1.243e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.096e-01, -7.746e-02, 4.447e-03, 1.628e-01, 2.117e-02, 3.944e-02, -2.861e-02, 2.252e-01, 8.573e-02, 3.821e-02, 1.955e-02, 8.737e-02, 6.246e-02, 6.978e-02, -7.156e-02, -8.768e-03), r2);\n\tr3 = MulAdd(s1_0_2, M4(-3.799e-02, 1.227e-01, 1.251e-01, 1.062e-01, 1.091e-01, 6.674e-03, 3.364e-02, 6.860e-02, -1.653e-01, 1.453e-02, 2.911e-02, -4.285e-03, 7.726e-02, -7.650e-02, -1.557e-01, -4.493e-02), r3);\n\tr0 = MulAdd(s1_1_0, M4(-3.083e-02, 4.518e-01, 3.588e-01, -6.674e-03, -1.361e-02, 1.228e-01, 1.703e-01, 7.338e-02, 3.786e-02, -8.608e-02, 2.132e-01, 1.182e-01, 1.162e-02, -4.454e-01, -2.803e-01, 2.054e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(5.440e-02, 2.882e-01, 9.738e-03, -8.764e-02, 3.207e-02, -5.865e-02, 7.816e-02, -9.482e-03, -7.152e-02, 3.287e-02, 3.915e-03, -7.841e-02, 8.568e-02, -2.441e-01, -4.014e-02, 1.348e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(-5.256e-03, -1.542e-01, -1.667e-02, 3.608e-01, -7.057e-02, -7.674e-02, 2.369e-02, -7.990e-02, 4.029e-02, -3.501e-02, -4.831e-02, -1.920e-01, -1.186e-01, 8.967e-02, 1.649e-01, -4.230e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(-1.430e-01, 1.830e-01, -1.105e-01, -4.369e-02, 1.369e-02, 4.272e-02, -8.044e-03, 1.470e-01, -9.788e-02, -1.499e-01, 2.202e-01, 4.566e-02, -2.410e-01, -9.067e-02, 3.203e-02, -2.609e-02), r3);\n\tr0 = MulAdd(s1_1_1, M4(1.067e-01, -3.503e-01, -2.760e-02, -1.379e-02, 1.051e-01, 3.311e-01, -7.684e-02, 8.766e-01, -3.458e-02, 2.510e-01, 1.979e-01, -3.646e-02, -1.858e-01, 5.394e-01, 3.106e-01, 2.397e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(3.197e-01, -1.500e-01, 2.521e-02, 1.636e-01, -1.033e-01, 2.398e-01, 3.494e-01, 3.679e-02, -1.109e-01, -1.474e-01, 9.027e-02, 4.312e-01, -2.339e-01, 2.027e-01, 1.052e-01, -3.154e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(6.006e-01, 1.354e+00, 4.021e-01, -7.664e-01, -1.559e+00, -2.173e-01, -5.332e-02, -4.475e-03, -2.471e-01, 3.819e-02, 1.863e-02, -1.063e+00, 1.016e-01, -5.791e-01, 9.918e-02, 2.343e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(6.406e-01, -3.668e-01, 1.679e-02, -1.108e-01, 7.032e-02, -1.184e-01, 1.200e-01, -7.445e-02, 6.042e-02, 4.724e-02, -9.900e-02, 4.694e-02, -2.629e-01, 1.798e-01, -5.048e-03, -1.015e-01), r3);\n\tr0 = MulAdd(s1_1_2, M4(8.428e-02, 6.548e-02, 3.540e-02, 2.329e-02, 5.127e-02, -1.418e-02, -2.721e-03, 1.628e-01, 5.499e-03, -1.984e-02, 2.535e-02, 6.768e-02, 4.668e-02, -4.796e-02, 7.106e-03, -1.008e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(3.981e-03, 1.112e-02, 1.574e-01, 5.762e-01, -1.239e-02, 6.809e-02, -6.896e-02, -3.177e-01, 5.026e-03, -5.891e-02, 1.612e-02, 1.674e-01, -9.108e-02, -9.134e-02, -1.350e-01, -5.646e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(-6.782e-02, -2.965e-01, 1.909e-01, -5.972e-01, 6.113e-01, -2.444e-01, 3.964e-01, 3.611e-01, 4.087e-02, -2.058e-02, 6.873e-03, -2.157e-01, 1.006e-01, -3.880e-02, -1.812e-01, 7.580e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(2.522e-01, 3.481e-01, -1.088e-01, -3.026e-03, -4.697e-01, 3.947e-01, 3.983e-01, -4.409e-02, 3.814e-02, 5.166e-02, -1.426e-02, 1.209e-02, -1.859e-01, -1.697e-01, -4.793e-03, 6.215e-02), r3);\n\tr0 = MulAdd(s1_2_0, M4(1.952e-02, 4.982e-02, 1.804e-01, -6.010e-03, -6.692e-03, 1.580e-02, -5.834e-02, 1.424e-02, 2.367e-02, -7.740e-02, -1.878e-01, -4.992e-02, 1.608e-02, -8.000e-02, -2.182e-01, -3.585e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-5.286e-02, 2.543e-02, 4.943e-02, 9.389e-02, 1.554e-02, 1.438e-01, 8.916e-03, -1.562e-02, -1.895e-02, -1.616e-01, -4.114e-02, -2.120e-02, 2.577e-02, 1.606e-01, -3.357e-02, -7.358e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-8.867e-03, -2.777e-02, 4.543e-02, -7.082e-02, 1.417e-02, 8.475e-02, 9.305e-03, 1.021e-01, 1.038e-01, 5.998e-02, -6.058e-02, 2.488e-01, 6.615e-02, 9.113e-03, -1.665e-02, 7.179e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-2.409e-02, 2.611e-02, 5.133e-02, 1.302e-02, 1.205e-02, 3.518e-04, 1.755e-02, -7.916e-02, 2.915e-02, -3.326e-02, -2.580e-02, 2.156e-02, 9.929e-02, -1.622e-03, 1.013e-02, -2.371e-02), r3);\n\tr0 = MulAdd(s1_2_1, M4(4.767e-02, 7.510e-02, 2.011e-01, 1.847e-01, -4.509e-02, -7.002e-02, 9.189e-02, -1.448e-01, 3.111e-02, 7.032e-02, -2.681e-01, -5.318e-02, -7.030e-02, -8.563e-02, -1.796e-01, -1.251e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.271e-01, -9.853e-01, 1.319e-01, 3.567e-02, 3.101e-02, 7.076e-02, -1.236e-01, 3.070e-02, 4.357e-02, -2.898e-02, -1.116e-01, -8.939e-03, 8.357e-02, -2.395e-01, -8.345e-02, -1.808e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-2.497e-01, -1.394e-01, -4.539e-02, 2.409e-01, -7.993e-02, 2.056e-01, 5.284e-02, 9.221e-02, -2.481e-01, -3.402e-02, -1.470e-01, -3.935e-01, 4.913e-01, 1.634e-01, 2.764e-02, -3.063e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(3.388e-01, 1.049e-01, 1.624e-01, -3.237e-02, -2.088e-02, -1.193e-01, 1.806e-02, 1.843e-02, 3.467e-01, 1.174e-02, -1.018e-02, 4.780e-02, -3.447e-01, -3.825e-02, -1.192e-01, 8.464e-02), r3);\n\tr0 = MulAdd(s1_2_2, M4(-1.790e-02, 3.436e-02, -3.892e-02, 2.130e-02, -7.407e-02, -1.502e-01, -5.785e-02, 1.875e-01, 2.017e-02, 3.597e-02, 5.933e-02, 5.028e-03, 4.882e-02, 1.480e-02, 1.415e-01, 1.154e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(9.266e-03, 1.369e-02, 1.440e-01, 6.384e-02, 9.747e-02, -1.519e+00, 3.479e-02, 4.290e-01, -3.234e-02, -4.162e-02, -4.677e-02, 5.042e-02, -5.550e-02, -5.337e-02, -1.375e-01, -1.024e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.485e-01, -1.891e-01, -3.192e-02, 6.855e-02, 7.573e-02, 2.458e-01, 1.548e-01, -1.058e-01, -9.684e-02, 2.327e-02, -1.933e-02, -2.536e-01, 8.048e-02, 9.276e-02, -2.970e-04, -9.124e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(1.393e-01, 6.669e-02, -1.039e-02, -2.546e-02, 4.449e-01, 2.055e-01, 1.818e-01, -1.091e-01, 6.765e-02, -1.250e-02, 1.981e-02, 6.152e-03, -1.239e-02, -5.312e-02, 6.984e-02, 3.254e-02), r3);\n\tr0 = max(r0, 0.0);\n\tT4[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT5[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT6[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT7[gxy] = r3;\n}\n\n//!PASS 3\n//!DESC conv2 (16x16)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T4, T5, T6, T7\n//!OUT T0, T1, T2, T3\n\n#define L0(x, y) V4(O(T4, x, y))\n#define L1(x, y) V4(O(T5, x, y))\n#define L2(x, y) V4(O(T6, x, y))\n#define L3(x, y) V4(O(T7, x, y))\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(2.280e-01, 3.142e-02, -2.462e-03, 4.608e-02, 7.106e-02, -2.100e-02, 1.649e-02, 1.485e-01, -8.086e-02, 3.780e-02, 5.362e-03, -1.636e-01, 5.972e-02, -9.601e-02, 9.286e-05, 5.711e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(2.583e-02, 8.885e-02, -2.661e-02, -4.298e-02, 2.144e-03, 2.062e-02, -1.093e-01, -1.727e-02, -2.909e-05, -1.012e-03, -1.872e-02, 1.061e-02, -4.150e-03, -8.715e-02, -9.618e-02, -5.593e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(3.558e-02, -1.547e-02, 1.493e-02, 7.790e-03, 1.413e-03, -3.225e-02, 3.432e-03, -4.200e-02, 2.047e-01, 6.179e-02, -2.937e-03, 1.832e-02, -6.078e-02, -9.019e-02, -9.351e-03, 7.399e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(5.116e-02, -1.153e-02, 1.443e-01, 3.713e-02, 1.998e-02, 1.328e-02, 3.923e-02, 1.057e-02, -1.027e-03, -4.707e-03, -6.323e-02, 3.565e-03, 2.131e-03, -1.062e-02, 3.518e-02, -3.173e-02), r3);\n\tr0 = MulAdd(s0_0_1, M4(-1.484e-01, -1.541e-01, 2.814e-03, 3.819e-01, 1.554e-01, -2.059e-01, 6.602e-02, 1.415e-01, -6.692e-02, 6.492e-03, -2.031e-02, -6.808e-02, -1.270e-02, -2.721e-01, -3.039e-02, 1.216e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-2.199e-02, 7.055e-02, 8.615e-02, -1.548e-02, 1.180e-02, -4.015e-02, -5.721e-03, 4.297e-02, -6.240e-02, -4.094e-02, 6.776e-02, 3.686e-02, -2.720e-02, -6.631e-02, -8.285e-02, 1.592e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.647e-02, 2.141e-04, 4.215e-02, 9.833e-02, 4.901e-02, -1.240e-01, -5.741e-03, -3.172e-02, -1.130e-01, 3.738e-02, -1.807e-03, -6.770e-02, 4.715e-02, 3.980e-02, 4.328e-03, 1.543e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-3.302e-02, 5.789e-02, 3.719e-02, 1.009e-01, 2.199e-02, 4.850e-03, -1.706e-02, -4.652e-02, 1.016e-01, -1.855e-03, 8.655e-03, -3.699e-02, 6.966e-02, -3.585e-02, 2.135e-02, 4.408e-02), r3);\n\tr0 = MulAdd(s0_0_2, M4(2.159e-01, 3.301e-02, 3.838e-02, -1.470e-01, 7.407e-02, -4.257e-01, 2.269e-02, -7.758e-02, 8.055e-03, 2.167e-01, 9.599e-02, 1.603e-01, -1.155e-02, -3.701e-01, 2.037e-01, -8.981e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.100e-01, 1.579e-02, -2.023e-02, 1.206e-01, -9.749e-03, -2.485e-03, 5.689e-02, 2.210e-02, 2.862e-02, 2.583e-03, -8.139e-02, -2.858e-02, 1.985e-04, -2.318e-02, 3.317e-02, 6.718e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.694e-01, 1.570e-01, 5.747e-02, -3.600e-02, 7.474e-02, -2.176e-01, -3.144e-03, -5.313e-02, -5.694e-02, 1.064e-02, -2.709e-02, 2.479e-02, -1.070e-02, 8.410e-02, 4.480e-02, 8.410e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-5.769e-02, 1.033e-01, -1.346e-01, 2.584e-02, 7.641e-02, -1.704e-02, -7.507e-02, 1.710e-02, 4.137e-02, -3.601e-02, 7.685e-02, -1.108e-02, -7.248e-02, 5.382e-02, -8.207e-02, 1.480e-02), r3);\n\tr0 = MulAdd(s0_1_0, M4(-1.472e-01, 2.604e-02, -6.287e-02, -7.379e-02, 1.263e-01, 2.861e-01, 1.141e-01, 9.021e-02, -3.720e-02, -1.220e-02, -5.243e-02, -7.408e-02, -3.370e-02, 1.213e-01, 7.462e-03, 1.406e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(6.308e-02, -1.492e-01, -5.474e-02, -1.111e-01, 2.407e-02, -3.634e-02, -1.403e-02, 4.546e-02, -2.537e-02, 5.561e-02, 3.324e-02, 4.848e-04, -1.029e-02, -6.006e-02, -9.211e-02, 3.369e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.665e-01, 1.751e-01, 1.170e-01, 1.277e-01, -1.208e-01, -1.472e-01, -5.526e-03, -8.476e-02, 3.082e-01, 8.377e-02, 1.124e-02, 1.696e-01, -2.764e-01, 1.004e-01, 3.121e-02, -1.447e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(6.341e-02, -4.223e-02, 1.610e-01, 3.409e-01, 1.603e-02, 8.523e-04, -8.531e-02, -4.474e-02, -6.208e-02, -1.200e-03, 1.842e-02, 1.909e-02, -2.392e-02, -2.712e-03, 4.794e-02, 3.430e-02), r3);\n\tr0 = MulAdd(s0_1_1, M4(-4.092e-01, -2.945e-01, -1.511e-01, 1.619e-01, 5.263e-02, -9.498e-02, 1.792e-01, 2.514e-01, -1.289e-01, 1.890e-01, -9.641e-02, 4.114e-02, 7.318e-02, 4.604e-01, -8.922e-03, 9.630e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(2.550e-01, -5.581e-02, 4.011e-01, 3.956e-01, 1.081e-01, -9.588e-02, 1.143e-01, 2.119e-02, 7.353e-02, 3.260e-01, -1.393e-01, -5.796e-02, -1.065e-02, -1.762e-01, -1.121e-01, 1.384e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-3.334e-01, -3.779e-01, 1.381e-02, -3.031e-01, -2.496e+00, -8.652e-02, -1.658e-02, -1.262e-01, 2.896e-02, -2.930e-01, -4.364e-02, 1.345e-01, 3.020e-01, 1.870e-01, 1.555e-02, -4.397e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(-6.661e-02, 3.389e-01, -2.642e-01, -1.635e-02, -5.841e-01, -3.159e-02, -4.287e-01, -1.073e-01, -2.357e-01, 5.493e-03, -1.478e-02, -1.329e-01, 1.995e-01, 1.748e-02, -2.418e-01, 9.113e-02), r3);\n\tr0 = MulAdd(s0_1_2, M4(1.724e-01, 1.077e-02, 1.860e-01, -2.385e-01, 3.181e-02, 2.167e-01, 2.916e-01, -7.652e-01, 6.070e-02, 3.187e-04, -2.547e-01, 2.288e-01, -2.615e-02, 1.088e-01, 3.297e-02, -9.105e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-4.227e-02, -2.839e-03, 1.309e-01, 9.999e-03, -1.452e-01, -5.010e-01, 8.793e-02, 8.763e-02, -2.312e-02, 4.683e-02, -2.672e-01, 2.717e-02, 1.168e-01, -1.420e-01, 2.304e-01, 1.675e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.441e-01, 1.994e-01, 1.199e-01, -3.137e-01, 1.098e-01, -1.841e-01, -2.059e-02, -8.479e-02, 5.564e-03, -2.068e-01, -5.036e-02, 3.017e-01, 1.137e-01, 3.453e-01, 6.863e-02, 1.715e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.548e-01, 8.510e-02, -2.176e-01, 1.976e-02, 1.213e-01, -2.961e-02, -6.145e-02, 3.709e-03, -9.389e-02, -9.352e-02, 3.155e-02, 7.282e-03, -9.098e-02, 8.690e-02, -1.964e-02, -1.956e-02), r3);\n\tr0 = MulAdd(s0_2_0, M4(-1.114e-01, -3.050e-01, 1.070e-01, 1.127e-01, -7.824e-02, 5.131e-01, 1.794e-01, 8.204e-02, 1.264e-02, -5.176e-02, 1.023e-02, -5.262e-02, -1.675e-01, -1.325e-01, 1.293e-01, -1.025e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.220e-01, -6.612e-02, -3.490e-01, 5.973e-02, 1.554e-02, -2.354e-02, -2.801e-02, 1.825e-02, 6.566e-03, -4.009e-02, 4.042e-02, 3.337e-03, -2.712e-02, 5.823e-02, -1.053e-01, 4.315e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-2.881e-02, 1.900e-01, 1.371e-02, -3.080e-02, -1.759e-01, -4.715e-02, 2.872e-02, -1.194e-01, 2.559e-01, 6.663e-02, -5.340e-03, -5.654e-02, -9.719e-02, 1.074e-01, 3.449e-02, -1.134e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(2.166e-01, -5.309e-02, 2.362e-01, 2.075e-01, -6.164e-02, 3.953e-03, 3.462e-02, -3.465e-03, 1.313e-01, -1.572e-03, 1.058e-02, 2.683e-03, -2.892e-02, -6.471e-03, 8.554e-02, 5.181e-02), r3);\n\tr0 = MulAdd(s0_2_1, M4(-2.218e-01, -4.179e-02, 3.306e-01, -2.950e-01, -1.835e-01, 5.368e-01, 2.504e-02, 1.793e-03, 3.879e-02, -2.274e-01, -9.249e-02, 8.690e-03, 1.626e-01, -3.080e-01, 3.783e-01, 1.771e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.632e-02, -8.989e-02, 6.762e-02, 5.175e-02, -2.761e-02, 5.435e-02, 7.028e-02, -2.191e-02, -1.388e-02, 5.868e-02, 3.038e-01, 2.124e-03, -1.138e-02, 2.939e-01, -3.453e-01, 9.989e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-2.919e-01, 1.957e-01, -1.654e-01, 2.324e-01, 1.255e-01, -2.671e-02, 1.088e-02, -4.908e-01, -1.488e-01, 7.268e-03, 4.454e-02, 4.731e-03, -5.627e-01, 3.291e-01, 8.423e-02, 1.165e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(4.184e-02, -2.359e-01, 1.367e-01, 1.006e-01, -7.176e-02, 1.118e-02, 3.253e-02, 3.455e-02, 1.272e-01, 9.400e-04, -1.013e-01, 8.311e-03, 1.553e-02, 4.660e-02, 3.408e-01, 6.423e-02), r3);\n\tr0 = MulAdd(s0_2_2, M4(3.840e-02, 7.465e-02, -3.264e+00, 9.526e-03, 2.597e-01, -9.349e-02, -1.131e+00, 1.425e-01, -2.407e-01, -1.280e-01, -3.727e+00, -5.581e-02, 1.300e-02, 3.318e-02, -2.885e+00, -3.496e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(-5.633e-02, 2.165e-01, -1.426e-01, 2.001e-02, -7.851e-02, 1.510e-01, 7.779e-02, -6.340e-02, 1.203e-02, -1.283e-01, 1.335e-01, 2.722e-02, -8.855e-02, 3.383e-01, -1.326e-01, 7.045e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.857e-01, 1.231e-02, 7.501e-02, -1.018e-01, 1.272e-01, -8.672e-02, 2.095e-02, 4.763e-03, -7.701e-02, 2.041e-01, -3.214e-02, 4.398e-02, -2.731e-02, -2.775e-02, 1.121e-01, 1.903e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(1.491e-03, 5.077e-02, 4.728e-02, 2.788e-02, -1.237e-01, 2.231e-02, -1.617e-01, 2.279e-02, -7.483e-02, -2.528e-02, 3.651e-02, 1.712e-02, -2.524e-02, 8.091e-02, 4.383e-02, 2.816e-03), r3);\n\tr0 = MulAdd(s1_0_0, M4(-7.686e-02, -3.481e-01, -3.152e-02, -7.432e-02, -1.913e-01, -3.378e-01, -9.900e-02, -2.158e-01, -8.341e-02, 3.135e-01, -4.626e-02, -3.091e-02, 2.195e-01, 4.276e-01, -6.120e-02, -3.233e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-9.103e-02, 1.228e-02, -1.897e-02, 1.287e-03, 3.121e-02, 1.963e-01, 5.236e-02, 1.440e-02, -2.495e-02, -6.195e-02, 2.691e-01, -4.234e-02, 7.690e-02, -2.551e-01, -5.135e-03, 6.949e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.224e-02, -8.845e-03, -4.026e-02, 9.728e-02, 2.620e-01, -1.631e-02, 1.545e-02, 1.364e-01, 9.611e-02, 1.356e-01, -2.701e-02, 4.155e-02, -1.510e-01, -3.191e-01, 6.144e-03, -2.199e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(2.042e-02, -6.616e-02, 2.003e-02, -1.801e-02, 2.265e-02, 4.154e-03, -9.273e-02, 4.277e-02, -2.713e-02, 6.311e-03, -8.037e-02, 7.244e-02, 6.289e-02, 7.369e-02, -6.564e-02, 3.283e-02), r3);\n\tr0 = MulAdd(s1_0_1, M4(-3.018e-03, -2.610e-03, -1.352e-01, 9.021e-02, -1.387e-01, -1.022e-01, -1.938e-01, 2.289e-01, 3.971e-01, 2.406e-01, 4.941e-02, -6.440e-01, -1.406e-01, 4.368e-01, 2.578e-01, 2.331e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.792e-01, -5.655e-02, -7.647e-02, -5.618e-02, -1.442e-02, 2.277e-01, -1.796e-01, -1.135e-02, 1.180e-01, -9.956e-02, -1.983e-02, -3.133e-01, -2.347e-01, -3.083e-01, 1.441e-01, -2.361e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-3.246e-02, -9.400e-02, -8.904e-04, 5.603e-04, -1.505e-01, -1.319e-01, -1.163e-02, 2.687e-01, -1.643e-02, 2.676e-01, 6.052e-02, 8.999e-02, 2.098e-02, -4.754e-02, 1.574e-02, 1.301e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-1.611e-02, -7.260e-02, -1.527e-02, -2.017e-02, -2.146e-01, -1.098e-02, 2.213e-01, -5.715e-02, -3.777e-01, 7.625e-02, 3.949e-02, 1.812e-01, -2.320e-02, -1.631e-03, -1.831e-01, 2.314e-02), r3);\n\tr0 = MulAdd(s1_0_2, M4(-1.039e-01, 2.959e-01, -7.225e-02, -8.983e-02, 5.290e-02, -5.308e-02, -3.580e-01, 2.129e-01, -4.223e-01, -2.956e-01, -2.818e-01, 2.397e-01, -2.937e-02, -3.087e-01, 2.571e-01, 5.018e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.218e-01, 3.328e-02, 8.055e-02, -9.955e-02, -6.173e-03, 1.174e-01, 7.209e-02, -4.482e-02, -8.711e-03, 1.244e-01, -2.585e-01, -3.206e-03, 7.591e-03, -1.188e-01, -2.142e-02, 2.222e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-9.079e-02, -7.165e-02, -7.235e-04, -7.452e-04, 2.899e-02, -2.724e-01, -2.074e-02, -4.439e-02, -2.418e-01, -1.821e-01, 4.355e-02, 4.229e-02, 1.103e-01, 1.977e-02, 7.160e-03, 3.112e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-1.035e-02, 1.803e-03, 2.270e-02, -1.620e-02, -1.765e-01, -1.486e-02, 1.521e-01, 1.109e-03, 2.206e-01, 5.981e-02, 3.007e-01, 2.741e-02, -3.542e-02, 2.117e-02, -1.048e-01, 6.677e-03), r3);\n\tr0 = MulAdd(s1_1_0, M4(2.833e-01, 1.526e-01, 9.615e-03, 7.240e-02, -1.450e-01, 1.487e-01, -1.011e-01, 1.132e-01, -6.660e-01, -3.701e-01, -8.967e-02, -3.542e-02, 1.090e-01, -3.307e-01, 2.728e-01, 1.396e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(7.254e-02, -7.910e-01, -2.198e-01, 2.058e-01, 2.515e-02, 3.350e-01, 4.767e-02, -2.090e-02, 6.193e-02, 1.929e-01, 3.192e-02, -3.747e-02, -6.695e-02, -2.898e-01, 6.692e-03, 5.101e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(6.272e-02, -1.390e-01, 1.708e-01, -1.772e-01, 9.386e-02, -8.987e-02, -4.291e-02, 1.260e-01, 4.099e-01, 3.057e-01, -2.180e-02, 5.282e-01, 3.962e-01, 3.479e-01, -1.487e-01, -2.941e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(5.034e-01, -1.883e-02, 1.670e-01, 4.383e-01, -1.055e-01, -6.815e-04, 2.050e-02, -6.489e-02, 2.724e-01, 1.467e-02, 1.566e-01, 1.785e-01, -1.632e-01, 1.116e-01, 9.379e-02, 1.456e-02), r3);\n\tr0 = MulAdd(s1_1_1, M4(2.432e-01, 1.732e-01, 4.013e-01, -5.450e-01, -3.449e-01, -9.121e-01, -2.199e-01, 4.059e-01, 4.539e-01, 2.468e-01, 7.213e-01, 3.945e-01, -1.325e-01, -4.943e-01, -4.045e-01, 4.020e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.135e-01, 1.381e-01, -1.044e-01, -2.422e-02, 6.422e-02, -4.261e-01, 1.574e-01, -3.901e-02, 2.052e-01, 1.606e-02, 7.140e-02, 3.701e-02, 3.912e-01, 3.001e-01, 2.131e-01, -1.211e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(2.718e-01, 3.732e-01, 7.050e-02, -1.744e-01, 1.624e-01, -5.018e-01, -6.169e-02, 1.360e-01, -3.299e-01, 1.384e-01, 3.725e-01, -1.072e+00, 6.911e-02, -9.316e-02, 2.572e-03, 2.722e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-6.149e-03, -8.484e-02, -6.109e-01, -1.479e-01, 7.114e-02, -4.344e-02, -9.807e-02, -1.761e-02, -4.008e-01, -2.751e-01, -4.714e-01, -2.130e-01, -7.189e-02, -6.540e-02, -1.351e-01, -8.754e-04), r3);\n\tr0 = MulAdd(s1_1_2, M4(-4.611e-02, -2.300e-01, -1.014e-01, 2.198e-01, -1.457e-02, -1.833e-01, 5.132e-01, 1.266e-01, -3.557e-01, 1.384e-01, 4.480e-02, -1.603e-01, 1.259e-01, -1.723e-01, -1.515e-01, -9.154e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(4.210e-02, 4.542e-02, -3.155e-01, 5.999e-02, 5.092e-02, 2.433e-01, 2.105e-01, -1.502e-02, -5.115e-02, -3.291e-01, 7.847e-02, -1.062e-01, 8.764e-02, 1.184e-01, 2.572e-01, 1.251e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-6.085e-03, -1.928e-01, 2.929e-03, 2.495e-01, 1.075e-01, 1.064e-01, -2.929e-02, -7.821e-02, -1.967e-01, -3.325e-01, 3.106e-02, -2.939e-01, 1.293e-02, -1.671e-03, -6.286e-03, 4.962e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-8.089e-02, -3.840e-02, 6.262e-02, -2.036e-02, -3.038e-03, -2.870e-02, 8.506e-02, -6.798e-04, 5.988e-02, 7.539e-02, -8.495e-02, 6.169e-02, 3.516e-02, 3.593e-02, -1.288e-01, 1.037e-02), r3);\n\tr0 = MulAdd(s1_2_0, M4(-2.527e-01, 1.067e-01, 8.143e-02, 6.208e-02, 1.168e-01, -1.435e-01, -3.859e-02, 7.682e-02, 1.753e-01, -1.962e-01, -2.379e-01, -4.696e-02, 1.170e-04, -2.142e-01, -2.481e-01, 4.811e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(4.280e-03, 1.342e-01, 8.647e-03, 2.546e-02, 9.705e-03, 9.546e-02, 1.248e-01, -3.375e-04, -3.788e-03, 4.393e-02, 1.146e-01, 2.643e-02, 1.851e-02, 2.695e-01, -2.742e-01, -2.796e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-2.709e-01, -6.158e-02, -1.315e-01, -9.942e-03, 1.914e-01, 2.370e-02, -1.693e-03, 7.007e-02, 2.788e-01, 8.583e-02, -6.406e-02, 6.252e-02, -2.069e-01, 3.121e-02, -5.951e-02, -5.498e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-9.325e-02, -4.407e-02, 1.028e-01, 2.097e-03, -5.347e-02, -1.501e-03, -4.308e-02, -2.126e-02, 1.107e-01, 3.863e-02, 1.420e-01, 8.562e-03, 3.217e-02, 6.485e-02, -3.295e-03, -5.764e-02), r3);\n\tr0 = MulAdd(s1_2_1, M4(1.958e-01, -2.029e-02, -2.952e-01, 1.676e-01, -3.473e-02, 2.217e-01, -1.873e-01, 1.421e-01, -2.083e-01, -3.320e-01, -5.554e-02, 1.708e-02, 4.722e-02, 4.307e-01, 2.451e-02, -2.193e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-8.282e-04, -1.149e-02, 2.087e-01, -4.887e-02, 5.305e-02, -6.943e-02, -4.340e-02, 8.038e-03, -1.927e-01, 1.286e-01, 1.562e-02, -6.958e-02, -1.355e-01, 3.525e-01, -8.106e-02, -2.704e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(8.664e-02, -5.596e-02, -1.393e-02, -2.100e-01, 2.564e-02, 1.111e-01, -5.084e-02, 4.839e-02, -4.504e-02, -4.470e-01, -1.919e-01, -1.663e-02, 1.455e-01, -1.169e-01, -3.447e-02, -7.604e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(9.394e-02, 1.569e-02, -1.425e-01, -3.849e-03, -4.399e-02, -3.112e-02, -4.581e-02, -2.139e-02, 1.345e-01, -5.115e-02, -1.803e-01, 7.197e-02, 1.103e-01, 8.618e-02, 1.198e-01, -1.900e-02), r3);\n\tr0 = MulAdd(s1_2_2, M4(-1.102e-01, -1.470e-01, -9.110e-01, -5.500e-02, 6.512e-02, 3.303e-01, -1.528e+00, 1.891e-01, 1.322e-01, -2.464e-01, -2.174e+00, -1.276e-01, -9.031e-02, 4.774e-01, -5.042e-01, 9.391e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(5.834e-04, -1.702e-01, 1.800e-01, 1.247e-02, 2.435e-02, 1.631e-01, -6.398e-02, 1.233e-02, 5.628e-02, -1.423e-01, -8.325e-02, 3.943e-02, -2.369e-02, -3.951e-02, -1.136e-01, -3.916e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-5.348e-02, 6.158e-03, -3.444e-02, -6.165e-03, 4.215e-02, -3.143e-02, -1.861e-02, -6.952e-02, -2.704e-02, 2.006e-01, 7.739e-02, -1.638e-02, 6.479e-02, -1.061e-01, -1.383e-02, 3.070e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(9.448e-02, -5.592e-03, -7.127e-02, 8.279e-03, -8.614e-03, -2.051e-02, 7.988e-02, -5.014e-03, -7.301e-02, 9.177e-02, 9.890e-02, -2.659e-02, 1.611e-02, 1.990e-03, 4.416e-02, -6.083e-03), r3);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-5.439e-02, 1.777e-02, 1.507e-01, -9.701e-03, 4.476e-01, 4.050e-01, 3.056e-03, 1.982e-01, -3.204e-01, -2.280e-01, 2.115e-02, 2.026e-02, 1.257e-02, 4.292e-03, 4.098e-02, 4.258e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(4.180e-02, -6.500e-02, 1.202e-01, 4.473e-02, 6.633e-02, -2.159e-01, -4.578e-02, -2.989e-02, -1.423e-01, 2.242e-01, -1.744e-02, 1.969e-01, 1.310e-03, -2.664e-01, -7.148e-02, 2.286e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(6.099e-02, -1.015e-01, 3.146e-02, -1.622e-02, -5.136e-01, -3.076e-01, -1.223e-02, -4.179e-01, 4.606e-01, 3.022e-01, -2.563e-02, -2.246e-03, -1.249e-01, -1.349e-01, 3.506e-02, 5.304e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(1.412e-02, -2.578e-02, -2.243e-02, 2.627e-02, 1.921e-01, 9.270e-04, -9.447e-03, 2.444e-02, 1.066e-01, -4.838e-02, -2.565e-01, -1.401e-01, 3.926e-01, 4.290e-03, 1.440e-01, 3.210e-02), r3);\n\tr0 = MulAdd(s0_0_1, M4(-9.123e-02, 9.279e-02, 4.238e-02, -1.106e-01, -2.538e-01, -5.281e-02, 1.982e-01, -4.194e-01, 2.077e-01, 1.020e-01, 2.835e-02, 3.081e-01, 1.624e-01, -4.162e-02, 1.112e-01, -5.419e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-2.521e-01, -1.732e-01, 1.373e-01, -7.158e-02, 2.939e-01, -8.535e-01, 1.226e-01, 2.142e-01, 8.237e-02, 8.452e-01, -2.438e-02, 2.950e-01, 1.583e-01, -7.521e-01, 1.620e-01, 2.660e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(4.236e-03, -4.516e-02, 2.029e-02, 1.080e-01, 4.698e-01, 1.600e-01, 4.992e-02, -4.070e-01, -9.925e-02, 8.539e-03, -1.851e-02, -3.237e-01, 2.426e-01, -1.050e-01, 8.035e-02, -1.334e-03), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.413e-01, 1.221e-02, 8.735e-02, 7.948e-03, 2.261e-01, 1.704e-02, -3.309e-01, 1.179e-02, -2.031e-01, -1.430e-01, -1.080e-01, -6.014e-02, 3.850e-02, 2.434e-02, -1.840e-01, 7.251e-02), r3);\n\tr0 = MulAdd(s0_0_2, M4(-1.904e-02, 1.221e-01, 3.246e-04, -3.392e-02, 2.072e-02, -1.473e-01, 4.697e-01, -2.385e-01, -2.445e-02, -6.141e-02, -6.388e-01, 3.059e-02, 5.384e-02, 1.105e-01, 7.336e-02, -2.359e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(5.987e-02, 8.642e-02, 1.599e-01, -4.973e-02, 2.998e-01, -7.851e-02, -1.220e-01, 5.626e-02, 1.004e-01, 1.722e-01, 3.425e-03, 2.195e-01, 8.065e-03, -1.656e-01, -5.446e-02, -1.062e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-3.194e-02, 1.255e-01, 3.760e-03, -3.072e-02, 9.990e-02, 3.656e-01, -1.192e-02, 8.179e-02, -7.676e-02, -3.561e-01, -6.800e-03, -9.370e-02, 1.120e-02, -8.911e-02, 5.129e-02, 1.675e-01), r2);\n\tr3 = MulAdd(s0_0_2, M4(-2.947e-02, 3.313e-03, -4.105e-03, -8.660e-03, 7.246e-03, -1.056e-02, -1.233e-01, 3.059e-03, -2.472e-02, -6.738e-02, 1.407e-01, -5.008e-02, -1.096e-01, 7.940e-02, -4.410e-03, 5.010e-02), r3);\n\tr0 = MulAdd(s0_1_0, M4(1.057e-01, -1.115e-01, -7.645e-02, -1.907e-01, -2.835e-01, 1.890e-01, -8.151e-02, 1.068e-01, 6.663e-01, 4.267e-01, -2.180e-02, 1.489e-01, -1.111e-01, -1.120e-01, 1.651e-01, -5.913e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.223e-01, -1.604e-02, 1.099e-04, 7.447e-02, -8.548e-03, -1.139e-01, 3.898e-02, 2.378e-02, 4.109e-02, -1.645e-01, -1.509e-03, 7.657e-02, -6.758e-03, -2.019e-01, -4.742e-01, 1.018e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(7.027e-02, -2.108e-01, 4.559e-02, -3.186e-02, -1.241e+00, -1.045e-01, 5.774e-02, -3.618e-02, -3.879e-01, -2.907e-01, 2.905e-02, -2.195e-01, -7.918e-01, -1.512e-02, 8.727e-02, -1.415e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(-3.744e-01, -1.761e-02, 4.552e-03, 9.303e-02, -1.353e-01, 3.311e-02, 1.343e-01, 8.245e-02, 2.672e-02, -4.823e-02, -2.003e-01, -8.099e-02, 3.729e-01, 4.647e-02, 1.988e-01, 2.294e-01), r3);\n\tr0 = MulAdd(s0_1_1, M4(-1.704e-01, -8.971e-01, -1.757e-01, -7.318e-01, -2.032e-01, 2.859e-02, 5.294e-01, -6.965e-01, -8.226e-03, -5.215e-01, 9.419e-02, -6.879e-01, 8.469e-02, 2.090e-01, 4.150e-01, -1.552e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-3.393e-01, -3.321e-01, -1.784e-01, -1.217e-01, -1.492e-01, -1.088e+00, 6.668e-01, 1.185e-01, -3.113e-01, -1.056e+00, -4.715e-01, -1.448e-01, 1.453e-01, -9.657e-02, -2.306e-02, 3.036e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-9.972e-02, -4.916e-01, 5.557e-02, 7.190e-01, 1.709e-01, -4.430e-01, 1.095e-01, -4.056e-01, -4.459e-01, 2.815e-01, -1.750e-01, 6.245e-01, 1.284e-01, 2.062e-02, 3.897e-02, 4.331e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.355e-01, 5.454e-02, 5.107e-01, 1.101e-01, 1.915e-01, 9.008e-02, -3.960e-02, -2.615e-03, 7.772e-04, 5.605e-01, 4.314e-01, 8.636e-02, 1.681e-01, 1.737e-01, 1.390e-01, 5.993e-03), r3);\n\tr0 = MulAdd(s0_1_2, M4(3.778e-02, -1.501e-01, -3.730e-01, 1.485e-02, -1.861e-02, 4.432e-01, -1.216e+00, -1.850e-01, -1.915e-02, -3.362e-01, 5.130e-01, -9.577e-02, 1.072e-02, 1.217e-01, 2.352e-01, -1.332e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-5.774e-02, 6.150e-03, -1.632e-02, -2.154e-03, -4.025e-02, -9.589e-02, 2.783e-01, -1.164e-02, -1.245e-01, -7.107e-02, -2.036e-01, 5.330e-02, 2.169e-02, -1.505e-01, 5.756e-02, -2.358e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(4.858e-03, -1.539e-03, 6.356e-02, -2.342e-02, 1.040e-01, 1.174e-01, -1.251e-02, -1.152e-01, -2.178e-01, 2.546e-01, -6.018e-02, -5.869e-02, -2.313e-02, -1.942e-02, 4.016e-02, 8.489e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.781e-02, 8.478e-02, 1.034e-01, -2.537e-02, -3.185e-02, -3.551e-03, -1.810e-01, 3.551e-02, 1.512e-01, 5.640e-02, 1.384e-01, 6.174e-02, 6.876e-02, 3.329e-02, -4.492e-02, -1.362e-02), r3);\n\tr0 = MulAdd(s0_2_0, M4(8.440e-02, 2.117e-02, 5.481e-03, 1.646e-01, 6.376e-02, -1.001e-01, -1.456e-01, 8.472e-03, 3.542e-02, 2.861e-01, -4.144e-02, 3.575e-02, 5.383e-02, -2.379e-01, -1.898e-01, -1.239e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(9.635e-03, -1.240e-03, 1.887e-01, 4.164e-04, -7.824e-02, 6.568e-02, -1.651e-01, 1.885e-02, 5.339e-02, 4.711e-02, 1.609e-01, 1.399e-02, -3.453e-02, -6.858e-03, -1.305e-01, -1.631e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(4.928e-02, 4.800e-03, -6.619e-02, 8.470e-02, -1.313e-01, 1.424e-01, 9.797e-03, -1.051e-01, 1.768e-01, -2.863e-01, 8.473e-02, -9.855e-03, -4.394e-03, -9.101e-02, -2.594e-02, 1.134e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(4.716e-02, -2.046e-02, -8.116e-02, -2.400e-02, 4.332e-02, 8.406e-03, 1.609e-02, 1.016e-02, -2.409e-01, 1.077e-02, -9.400e-02, 1.801e-02, 1.090e-01, 1.858e-02, 1.578e-01, 1.383e-02), r3);\n\tr0 = MulAdd(s0_2_1, M4(-3.159e-01, 2.215e-01, 3.204e-01, 9.484e-02, 1.041e-01, 3.992e-01, 4.580e-01, -1.071e-01, -3.936e-01, -2.133e-01, -3.770e-01, 3.416e-02, -1.173e-01, -1.823e-01, 3.004e-01, 2.693e-03), r0);\n\tr1 = MulAdd(s0_2_1, M4(4.671e-02, -2.322e-01, -7.296e-02, 2.130e-02, 4.039e-02, 1.037e-01, -1.708e-01, 4.013e-02, 1.413e-03, -1.174e-01, -9.558e-02, -2.381e-02, -9.829e-02, 6.762e-02, 5.491e-02, -2.784e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.766e-01, 1.324e-01, -3.613e-02, -2.855e-02, -1.597e-01, 2.114e-01, 6.710e-02, 9.314e-02, 1.037e-01, -2.884e-01, -1.682e-01, 5.015e-02, -4.735e-02, -2.612e-01, 9.903e-02, 8.675e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-8.521e-02, -7.727e-03, -4.053e-02, -1.032e-02, -7.047e-02, 3.691e-02, 1.636e-01, -1.175e-02, 9.428e-02, -5.441e-02, -1.551e-01, -7.342e-03, 9.830e-02, 9.447e-02, 1.617e-01, -5.382e-03), r3);\n\tr0 = MulAdd(s0_2_2, M4(-1.134e-01, 4.552e-02, 7.210e-01, 1.861e-03, -4.232e-02, 1.901e-01, 2.647e-01, 7.819e-02, -1.985e-02, -1.522e-01, -1.250e+00, -8.809e-02, -9.507e-02, 1.432e-01, 1.696e-01, -2.043e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(4.376e-02, 1.446e-01, -5.585e-02, 2.112e-04, -5.650e-03, 1.281e-01, -8.677e-02, 1.648e-02, -2.189e-02, -1.993e-01, 3.170e-02, -1.080e-02, 8.175e-03, 6.475e-02, -9.258e-02, -5.811e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(7.938e-03, 7.247e-02, 3.735e-02, -9.595e-02, 3.137e-02, -7.219e-02, -4.011e-03, -3.336e-02, -5.973e-02, 1.572e-01, 7.254e-02, 5.506e-02, 1.473e-02, -6.197e-02, 1.544e-02, 3.858e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(3.630e-03, 3.132e-02, 7.179e-02, -8.316e-04, 8.667e-02, 6.933e-03, 1.685e-02, -1.909e-04, -2.101e-02, 4.366e-02, 2.322e-02, 2.210e-02, 1.447e-01, -4.880e-03, -2.599e-02, 9.287e-03), r3);\n\tr0 = MulAdd(s1_0_0, M4(-7.077e-02, -6.385e-01, -3.985e-02, -2.231e-01, 2.557e-03, 3.125e-01, 2.869e-02, 2.634e-01, -4.825e-03, -4.694e-02, -2.825e-02, -1.905e-02, 1.442e-02, -1.271e-01, -9.093e-03, 7.233e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(3.254e-03, 2.971e-01, 6.604e-02, -2.606e-02, -2.296e-02, -3.857e-03, -3.175e-01, -2.964e-02, -9.027e-03, -5.720e-02, -2.999e-02, 1.006e-01, 9.228e-04, 2.062e-02, -5.502e-02, 2.086e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(3.024e-01, 6.615e-02, -2.686e-02, 2.071e-01, -9.952e-01, -1.080e-01, -1.089e-02, 8.595e-02, -8.138e-03, 5.162e-02, 1.178e-03, -4.959e-02, 7.486e-02, 2.474e-02, -1.898e-02, 3.268e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-6.032e-02, -1.483e-02, 1.194e-01, -6.519e-02, -4.163e-01, 1.115e-02, -1.216e-01, -1.390e-01, -7.381e-02, -1.787e-02, -1.044e-01, -2.991e-02, -3.084e-02, -1.853e-02, 3.004e-02, -2.781e-02), r3);\n\tr0 = MulAdd(s1_0_1, M4(-3.077e-01, -8.904e-01, -1.314e-01, 1.106e-01, 2.027e-01, 7.669e-01, 3.160e-02, -7.250e-01, -1.984e-01, -2.983e-01, 4.795e-02, -2.820e-01, 1.991e-02, 7.784e-03, 1.384e-02, 2.293e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.778e-01, 4.074e-01, -1.374e-01, -2.032e-02, -2.464e-01, -1.036e+00, -8.059e-02, -2.568e-01, -4.053e-02, -5.805e-02, 6.278e-02, -8.528e-02, -3.503e-02, 2.462e-01, -4.028e-04, -3.574e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-2.457e-01, -5.645e-01, -1.817e-02, 1.575e-01, -3.640e-02, 6.797e-02, -2.167e-02, 1.157e-01, -3.864e-03, 2.287e-02, -7.494e-03, 3.037e-01, -5.356e-02, 2.166e-02, -9.456e-03, 1.226e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(8.642e-02, -5.655e-02, 1.733e-01, 2.063e-02, -2.191e-02, -4.658e-02, 7.251e-02, -6.673e-03, 5.390e-02, -1.600e-02, 1.475e-01, 1.990e-02, -4.182e-02, -2.085e-02, 1.674e-02, 3.022e-02), r3);\n\tr0 = MulAdd(s1_0_2, M4(1.974e-01, 2.295e-01, -6.024e-02, 1.174e-01, -1.469e-01, -4.839e-02, 5.256e-01, -6.768e-02, 1.092e-02, 1.545e-02, -1.109e-03, 1.448e-01, 8.971e-02, -1.223e-01, -4.860e-02, -1.250e-01), r0);\n\tr1 = MulAdd(s1_0_2, M4(-7.219e-02, -5.047e-02, -1.057e-01, -4.171e-02, -1.517e-01, -1.276e-01, 6.659e-02, -1.197e-01, 5.686e-03, -2.727e-03, -1.735e-01, -6.490e-02, 4.896e-02, -5.248e-02, 4.935e-02, 6.932e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-4.065e-02, -2.037e-01, -3.483e-03, 5.722e-03, -3.006e-02, 1.977e-01, 2.233e-02, -3.754e-02, 2.345e-04, -5.623e-02, -4.366e-02, -8.665e-03, 9.092e-02, 8.524e-02, 1.987e-02, -5.881e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-9.314e-03, -5.720e-03, 2.233e-01, -1.374e-02, 1.307e-01, 2.728e-02, -8.176e-02, 6.542e-03, 2.017e-01, -3.993e-02, 1.888e-01, -2.936e-02, -1.396e-02, 3.284e-02, -8.762e-03, 4.123e-03), r3);\n\tr0 = MulAdd(s1_1_0, M4(2.478e-01, -1.748e-01, -2.559e-02, -3.932e-02, -1.050e-01, -9.455e-03, -5.573e-02, -2.533e-02, 9.888e-02, -1.518e-01, 2.504e-02, 7.417e-02, 6.114e-02, 3.343e-01, -1.079e-01, 6.703e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.402e-02, -1.180e-01, 2.476e-01, -8.373e-02, 1.183e-01, 3.962e-01, -1.367e-01, -4.600e-02, -8.130e-02, 2.371e-02, -2.163e-01, 5.701e-02, 3.190e-02, 1.110e-01, -3.013e-03, -9.681e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(3.743e-01, -1.037e-01, 1.345e-02, 2.503e-01, -3.057e-01, 2.153e-01, 4.550e-02, -2.091e-01, -5.390e-01, -1.309e-02, 2.388e-02, -1.124e-01, 1.648e-01, 5.041e-02, 1.447e-02, -3.068e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(1.121e-01, -9.779e-03, -5.918e-03, -1.302e-03, -1.807e-01, 2.714e-02, 8.355e-02, -1.543e-01, 3.582e-01, -5.950e-03, 1.247e-01, 3.160e-02, 1.050e-01, 3.090e-02, 2.707e-02, 3.938e-02), r3);\n\tr0 = MulAdd(s1_1_1, M4(-3.593e-01, 1.335e-01, -3.248e-01, 2.104e-01, 1.245e-01, -4.215e-01, 2.192e-01, -3.057e-01, -3.427e-01, -4.787e-01, 2.124e-01, -3.440e-01, -2.514e-01, -6.916e-01, -2.733e-01, 7.793e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(7.776e-02, -1.364e-01, -2.019e-01, -6.066e-02, 1.558e-02, 4.536e-01, 2.117e-01, 8.681e-02, -2.595e-01, -5.405e-01, 3.306e-01, -6.162e-02, 1.242e-01, -1.148e-01, 6.470e-02, 2.050e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.463e-02, -1.196e-01, -4.939e-02, 1.063e-01, 3.271e-01, -2.644e-01, 3.185e-01, -2.596e-02, 3.624e-02, 7.035e-02, 2.588e-01, -6.272e-02, -2.074e-01, -3.447e-01, 5.017e-02, -7.279e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-3.404e-02, -4.083e-02, -5.562e-03, -1.151e-02, 5.896e-02, 4.101e-01, -4.424e-01, -1.078e-01, 4.974e-02, 6.054e-02, -2.443e-01, 8.228e-02, -1.626e-01, -1.381e-02, -1.229e-01, 1.684e-01), r3);\n\tr0 = MulAdd(s1_1_2, M4(1.880e-01, -3.698e-01, -1.253e-01, 5.844e-02, -1.422e-01, -5.347e-02, -6.134e-01, -4.550e-02, 3.001e-01, 2.434e-01, -1.661e-01, 6.991e-02, -9.822e-02, -5.598e-02, 7.314e-02, -1.877e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(-5.185e-02, -9.114e-02, -1.097e-02, 1.900e-02, 1.597e-01, -1.645e-01, 1.050e-02, 3.604e-02, -5.123e-02, 2.594e-01, 1.639e-01, -7.794e-02, -5.052e-02, 6.653e-03, 1.405e-01, -1.764e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-1.436e-01, -4.707e-03, -9.243e-03, -2.242e-02, 1.511e-01, 2.225e-01, 8.230e-02, 2.302e-01, 1.115e-01, -2.940e-01, -1.304e-01, -1.323e-01, 1.362e-01, 2.739e-01, 6.803e-02, -8.147e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.757e-03, -3.304e-02, 9.897e-02, -6.217e-03, -2.192e-02, 4.032e-02, 4.941e-03, -4.797e-02, -3.045e-01, -9.348e-02, -4.290e-02, 5.602e-02, -1.994e-02, 8.960e-02, -1.896e-01, -5.690e-03), r3);\n\tr0 = MulAdd(s1_2_0, M4(1.010e-01, 1.307e-01, 5.961e-02, 7.209e-02, 3.567e-02, -9.356e-02, 1.254e-01, 1.578e-02, 2.574e-01, 2.288e-01, 1.769e-01, -6.044e-02, 2.588e-02, 3.322e-02, 7.392e-02, 8.627e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.281e-03, -8.725e-02, 6.209e-02, -1.187e-02, -3.771e-03, -2.424e-02, 2.348e-03, 1.543e-02, 1.161e-02, -7.101e-02, -1.634e-03, 4.059e-02, -9.637e-02, -1.731e-01, -8.395e-02, 1.486e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(2.407e-01, -6.567e-02, -2.124e-02, 1.167e-01, -6.896e-02, 4.644e-02, 1.455e-01, -1.380e-02, -3.118e-02, -8.320e-02, -1.840e-02, 6.041e-02, 8.490e-02, 2.467e-02, -1.129e-03, -9.917e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(1.079e-01, -8.434e-03, 1.301e-02, -7.004e-03, 2.272e-03, 1.654e-02, -3.817e-02, 4.507e-02, -1.841e-01, -5.721e-03, -3.049e-01, -1.052e-01, -7.263e-02, 2.643e-02, 6.273e-02, 3.321e-02), r3);\n\tr0 = MulAdd(s1_2_1, M4(-1.998e-01, -3.448e-02, -1.527e-01, 5.412e-02, 1.891e-01, -2.789e-01, 5.058e-02, -1.082e-01, 3.454e-01, 5.934e-01, 1.992e-02, 4.566e-01, -9.738e-02, 1.763e-01, 8.720e-03, -1.689e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-5.311e-02, -5.084e-02, -1.663e-02, 5.516e-03, 1.626e-01, -4.857e-02, 7.536e-02, 2.496e-02, 9.016e-02, 4.343e-02, -2.691e-01, -2.344e-02, -2.906e-02, -1.571e-02, 1.078e-01, 7.546e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(7.994e-03, -1.275e-01, -3.902e-03, 3.948e-02, -5.808e-02, 3.213e-01, 6.704e-02, 1.925e-01, -1.575e-02, -6.553e-02, 1.369e-01, -1.885e-01, -3.608e-01, 2.455e-01, 1.813e-01, -1.138e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(-6.442e-03, -8.020e-03, 2.288e-03, -8.178e-03, -8.624e-02, 5.405e-03, 1.398e-01, 1.330e-02, -2.120e-01, -1.425e-02, -6.173e-02, -3.859e-02, -1.362e-01, 1.778e-01, 2.300e-01, 2.638e-02), r3);\n\tr0 = MulAdd(s1_2_2, M4(9.836e-02, -1.304e-01, -2.335e+00, -8.079e-02, -4.593e-02, -4.969e-02, -9.310e-01, 6.851e-02, 1.901e-01, 3.905e-01, -6.189e-01, 1.031e-01, -1.733e-01, -1.356e-01, -4.830e-01, -6.952e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(3.955e-02, -2.908e-02, 6.637e-02, -9.636e-03, -3.698e-02, 2.378e-01, 4.832e-02, 3.689e-02, 3.405e-02, 1.526e-01, 2.056e-02, 1.151e-02, -6.499e-03, 2.894e-01, -8.692e-02, -3.020e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-4.855e-02, 1.619e-01, 4.643e-03, 1.615e-02, 7.112e-02, -8.029e-02, -5.214e-02, -6.577e-03, 5.200e-03, -7.063e-02, 1.059e-03, 2.692e-02, 8.653e-02, 2.038e-02, 7.971e-02, 1.209e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(-2.873e-02, -6.840e-03, 9.711e-03, 1.502e-02, 1.001e-01, -3.307e-02, -9.656e-02, -3.028e-03, -1.581e-01, -4.032e-02, 8.018e-02, -1.112e-02, 6.585e-02, 9.010e-02, 3.000e-02, -1.077e-02), r3);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n}\n\n//!PASS 4\n//!DESC conv3 (16x16)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2, T3\n//!OUT T4, T5, T6, T7\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(9.097e-02, -3.744e-02, -3.505e-02, 1.705e-02, -4.699e-03, 8.763e-02, -1.568e-02, -1.256e-01, -1.244e+00, -6.430e-01, 4.922e-01, -3.867e-02, -4.259e-02, -3.264e-03, -3.341e-03, 3.051e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.428e-01, 1.900e-01, -3.829e-02, -7.960e-02, -7.087e-03, 1.133e-01, 2.287e-02, 8.325e-02, 4.024e-01, -7.079e-01, 1.755e-02, 1.590e-01, 1.697e-02, 1.633e-03, 3.076e-02, 1.583e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(5.853e-02, -1.431e-01, -2.565e-02, -1.084e-02, -1.600e-01, 6.860e-02, -1.014e-02, -1.435e-03, 6.688e-01, 4.062e-01, 3.923e-01, 1.406e+00, -3.893e-02, 2.888e-02, -1.614e-02, -7.747e-03), r2);\n\tr3 = MulAdd(s0_0_0, M4(-2.873e-02, -1.380e-02, -3.636e-03, -2.556e-02, -5.715e-02, 2.650e-01, -3.103e-02, -1.687e-02, -6.480e-01, 4.100e-01, 2.043e-01, 4.002e-01, -3.241e-02, -4.483e-02, 2.551e-03, -1.114e-02), r3);\n\tr0 = MulAdd(s0_0_1, M4(1.400e-01, 2.154e-01, -5.555e-02, -7.147e-02, -4.351e-02, -1.731e-01, -1.074e-02, -9.374e-02, 2.016e-01, 4.375e-02, 1.294e-01, -8.710e-02, -1.478e-02, 9.871e-02, 1.432e-02, 4.114e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-2.030e-01, 1.382e-01, -7.272e-03, 1.460e-01, 1.023e-01, 1.511e-01, -2.482e-02, 2.861e-01, 3.182e-01, 1.179e-01, 4.555e-01, -6.854e-02, -1.228e-01, -2.906e-01, 6.060e-02, 8.605e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(5.086e-02, 1.556e-02, -6.340e-02, -1.835e-02, -1.646e-01, 1.917e-01, -1.775e-02, -1.139e-02, -3.772e-01, 8.654e-02, 1.186e-01, -3.941e-02, -1.518e-02, -8.866e-02, 6.665e-02, -3.084e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(6.520e-02, 7.109e-02, -1.065e-01, -4.550e-02, 1.047e-01, 2.712e-01, -1.372e-01, -4.612e-02, 5.178e-02, -1.081e-01, 6.427e-02, 1.724e-01, 2.752e-02, 1.063e-01, 5.769e-02, 8.116e-03), r3);\n\tr0 = MulAdd(s0_0_2, M4(5.548e-02, 1.676e-01, 2.058e-02, -8.797e-02, 1.235e-01, 1.109e-01, -3.789e-02, -7.879e-02, 1.290e-02, -2.472e-02, -1.475e-02, -3.147e-02, -8.194e-02, -6.342e-02, -2.567e-03, -6.204e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.198e-02, 6.623e-02, 1.255e-01, 4.527e-02, 6.115e-02, -3.936e-02, -1.029e-01, 7.060e-02, -1.184e-02, -2.708e-02, 8.283e-02, -3.544e-02, -2.605e-02, 1.238e-01, -3.357e-02, 1.231e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.300e-02, 4.278e-02, -1.586e-02, 5.755e-02, 2.978e-02, 6.250e-03, -5.091e-02, -8.079e-02, -4.524e-02, -1.853e-02, -2.937e-02, 5.020e-02, -4.454e-02, 5.909e-02, -4.708e-02, -1.836e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(4.938e-02, -7.789e-03, -9.914e-02, -5.073e-03, 5.070e-02, 4.383e-02, -1.341e-02, -3.081e-02, -1.635e-03, 5.049e-02, -1.023e-02, -6.776e-03, 2.256e-02, 2.540e-02, -6.145e-03, -2.741e-02), r3);\n\tr0 = MulAdd(s0_1_0, M4(1.195e-01, 1.295e-01, -5.353e-02, -5.092e-02, -5.432e-02, -1.278e-01, 2.012e-02, 2.427e-01, -3.500e-01, -5.460e-02, 2.856e-01, 4.720e-01, -5.958e-02, 1.803e-02, -2.553e-03, -7.692e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-2.311e-02, 9.693e-02, 6.170e-02, -2.763e-02, -4.291e-02, 1.670e-01, 1.117e-01, 2.218e-02, -3.563e-01, -3.765e-02, -2.467e-01, -1.304e-01, -3.683e-02, -6.218e-03, 4.766e-02, 6.329e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(5.811e-02, -2.950e-02, -6.968e-02, 4.826e-02, 2.085e-01, -1.857e-02, 4.517e-02, -3.553e-02, 6.591e-01, 2.745e-01, 4.171e-01, 7.252e-02, -1.055e-01, 4.915e-02, 1.318e-02, -3.486e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.109e-01, -1.224e-01, 5.816e-02, -7.154e-02, 2.948e-02, 1.194e-01, -8.965e-02, 6.870e-03, 1.125e-01, 2.397e-01, 1.400e-02, 5.371e-02, -1.183e-01, -1.746e-01, -9.889e-02, 1.992e-02), r3);\n\tr0 = MulAdd(s0_1_1, M4(-2.620e-01, 2.613e-01, -1.450e-01, -5.047e-02, -6.693e-02, 8.536e-02, 1.433e-01, 2.879e-01, 1.032e-01, 1.424e-01, 1.283e-01, 1.735e-02, 5.120e-02, -4.893e-01, 2.681e-02, -2.310e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(3.911e-02, 1.473e-01, -8.891e-03, 2.951e-02, -4.159e-02, -1.164e-01, 9.016e-02, 2.010e-02, -4.567e-03, 8.390e-02, 2.937e-01, -2.063e-01, -1.332e-01, -1.314e-01, -5.456e-02, 7.479e-03), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.415e-01, -1.249e-01, -4.868e-02, -2.941e-01, 1.440e-01, -3.868e-02, 1.935e-01, -7.886e-02, -1.544e-01, 7.781e-02, 2.898e-01, 1.090e-01, -6.045e-03, -2.646e-01, 3.101e-02, 6.191e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.079e-01, -1.902e-01, -9.974e-02, -1.474e-01, -1.210e-01, 1.029e-01, 4.750e-02, 1.148e-01, -8.764e-02, 5.579e-02, -4.072e-01, 2.447e-01, 2.752e-02, 4.092e-01, 7.835e-02, 1.368e-01), r3);\n\tr0 = MulAdd(s0_1_2, M4(2.358e-01, 1.970e-02, 1.040e-01, -6.369e-02, 1.392e-01, 5.113e-02, 8.953e-02, 1.664e-02, -2.687e-02, -4.625e-02, 2.974e-03, -2.333e-02, 2.736e-01, 2.307e-01, -7.117e-03, 1.122e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(7.064e-02, 3.661e-01, 1.586e-01, 2.681e-02, 8.529e-02, 1.093e-01, -2.650e-02, 7.250e-02, -1.756e-03, 8.081e-02, -9.232e-02, 1.523e-02, -9.549e-02, -2.148e-01, -1.354e-01, 9.412e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-4.057e-02, -9.272e-02, 3.213e-02, 1.145e-01, -1.868e-02, -2.920e-03, 6.856e-02, -5.715e-03, -3.192e-02, 3.549e-02, 6.533e-03, 3.360e-02, -5.462e-03, 1.632e-01, 2.958e-02, -4.908e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(7.843e-02, -7.788e-02, -6.734e-02, 7.397e-02, -2.117e-02, -3.820e-02, -2.562e-02, 5.411e-02, -2.021e-02, -2.325e-02, -4.072e-02, 1.913e-02, 1.360e-01, 2.447e-02, 1.919e-02, -3.717e-02), r3);\n\tr0 = MulAdd(s0_2_0, M4(7.028e-03, 1.238e-01, 7.583e-04, -9.915e-04, 1.285e-02, 1.032e-01, -2.850e-02, -4.570e-02, -1.145e-01, -4.164e-02, 6.259e-03, 1.093e-01, 3.508e-02, -1.544e-02, -2.219e-02, -6.001e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.528e-02, 6.267e-02, -1.666e-02, 4.701e-02, -4.517e-03, 1.071e-01, 3.263e-02, -1.811e-02, -9.593e-02, 1.484e-01, 5.956e-02, 3.071e-02, -4.925e-02, 6.963e-02, 1.256e-02, 7.498e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.366e-01, 1.424e-03, -9.027e-03, 3.738e-02, 5.130e-02, -1.249e-02, -1.276e-02, -7.970e-03, 3.248e-02, 7.498e-02, 7.221e-02, 7.081e-02, -1.047e-01, 5.279e-02, -2.655e-02, 7.406e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(1.011e-01, 1.680e-01, 2.701e-02, -1.533e-02, -6.714e-02, 1.672e-02, -9.642e-02, -1.036e-02, 4.010e-02, -1.604e-01, 1.320e-02, 4.202e-02, -4.743e-02, -1.440e-02, -2.535e-02, -2.057e-02), r3);\n\tr0 = MulAdd(s0_2_1, M4(-4.816e-02, 9.858e-02, -5.760e-02, -2.006e-02, 1.499e-01, -9.001e-02, -1.307e-02, -1.963e-02, -4.578e-02, 3.608e-02, 2.911e-03, -4.393e-02, -7.792e-02, -1.030e-01, 5.471e-03, -1.341e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.332e-02, 3.082e-02, -1.556e-02, -5.760e-03, -2.085e-02, 1.343e-02, -4.624e-02, -8.281e-02, -3.966e-02, 3.333e-02, 3.973e-02, -1.109e-01, -1.793e-02, -6.935e-03, 6.232e-02, 9.178e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(4.480e-02, -1.995e-02, -6.214e-02, -5.335e-02, 8.254e-02, -1.589e-02, -2.030e-02, -6.148e-02, 4.351e-02, -2.300e-02, -5.022e-03, 7.985e-02, 3.454e-02, 2.324e-02, -5.892e-02, 1.728e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(4.489e-02, -1.516e-01, -1.492e-01, -1.847e-02, 1.132e-01, 1.361e-01, -9.412e-02, 5.703e-02, -5.236e-02, -1.224e-01, -1.446e-01, 5.384e-02, 6.911e-02, 3.001e-01, 6.671e-02, 5.669e-02), r3);\n\tr0 = MulAdd(s0_2_2, M4(3.234e-02, 4.297e-03, 3.062e-02, -7.007e-02, -1.101e-01, 4.517e-02, -7.910e-03, -1.245e-01, 2.359e-02, 2.415e-02, 4.934e-03, -2.480e-03, 5.353e-04, 6.186e-02, -1.524e-02, 3.328e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.803e-02, 1.844e-01, 1.098e-01, -1.109e-01, -6.216e-02, 1.194e-01, -1.140e-02, -1.121e-01, 1.828e-02, 3.466e-02, 9.011e-02, -5.013e-02, -7.881e-02, -1.343e-01, -1.179e-01, 1.149e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(-7.520e-02, -3.307e-02, 6.520e-03, 4.070e-03, -1.491e-02, 7.610e-03, -5.475e-02, 2.019e-02, 2.728e-02, 7.747e-04, 1.654e-02, -6.390e-03, 3.227e-02, -2.753e-02, -1.826e-02, -1.643e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(-2.383e-02, 2.480e-02, -9.014e-02, 2.936e-02, -1.274e-02, 8.228e-02, 1.345e-02, -6.670e-04, -2.362e-02, 1.216e-02, -2.532e-02, 2.454e-03, -1.948e-01, -2.599e-01, -7.339e-02, 7.715e-04), r3);\n\tr0 = MulAdd(s1_0_0, M4(-1.147e-02, -2.002e-02, -1.815e-02, -6.712e-02, -7.015e-02, -1.918e-02, 2.340e-02, 4.633e-02, 6.683e-02, -4.341e-02, -2.791e-02, -3.267e-02, 5.151e-03, -4.892e-02, 3.221e-02, 3.616e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.348e-02, 1.144e-01, 4.187e-02, 9.740e-02, -7.492e-02, -1.032e-01, -1.084e-01, 1.126e-01, -5.621e-02, -4.199e-02, 6.069e-02, -2.907e-02, -2.201e-02, -1.041e-01, -6.289e-02, -5.844e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-5.090e-02, 1.988e-02, -1.406e-02, 3.424e-02, -8.452e-02, 1.194e-01, 3.692e-02, 2.627e-02, -7.265e-02, -2.913e-02, -3.942e-02, 7.050e-03, -8.938e-03, -1.356e-02, 1.287e-02, -1.270e-05), r2);\n\tr3 = MulAdd(s1_0_0, M4(-5.410e-02, -3.332e-02, 3.753e-02, 7.664e-04, 3.430e-02, 6.753e-02, 9.790e-02, 1.849e-02, 3.963e-02, -2.951e-02, -3.288e-02, -1.347e-02, -1.468e-02, 7.521e-02, 4.090e-02, 3.622e-03), r3);\n\tr0 = MulAdd(s1_0_1, M4(3.777e-02, -7.901e-02, -4.441e-02, -8.065e-02, 1.837e-02, 6.534e-02, 2.501e-03, -3.498e-02, -1.386e-01, -1.453e-01, 3.630e-02, -5.776e-02, -1.165e-01, 7.841e-02, -1.329e-02, 4.426e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.994e-01, 7.885e-02, 2.421e-02, 1.196e-01, -1.883e-01, -1.169e-01, 1.919e-02, -9.775e-02, -3.179e-02, -2.647e-01, 9.743e-02, -7.888e-02, -1.821e-01, 5.652e-03, 2.013e-02, 7.931e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-1.812e-01, 1.516e-01, 1.635e-03, -3.786e-02, 1.664e-01, -2.178e-01, 4.250e-02, -9.656e-02, 9.737e-04, -7.837e-02, 2.448e-02, 2.795e-01, 2.115e-01, -8.026e-02, -4.612e-02, 2.430e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(1.259e-01, 7.730e-02, 1.317e-02, -2.671e-02, -8.220e-02, -1.367e-01, -2.110e-02, -1.996e-02, -1.250e-01, 1.001e-01, -9.387e-02, 7.484e-02, 1.422e-02, 2.574e-02, -7.156e-02, -2.582e-02), r3);\n\tr0 = MulAdd(s1_0_2, M4(1.121e-01, 1.441e-01, 1.258e-02, -2.685e-02, 2.944e-02, 2.376e-02, 2.048e-02, -4.639e-02, -1.389e-01, -9.107e-02, -2.903e-02, -1.023e-02, -5.834e-02, -5.515e-02, 1.032e-02, 1.057e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(9.165e-02, 6.026e-02, -7.411e-02, 2.471e-02, -1.888e-01, 1.043e-01, 7.206e-02, -6.777e-03, 4.843e-02, 8.425e-02, -4.560e-03, 1.891e-02, -1.255e-01, -8.175e-02, 6.727e-02, -2.795e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.597e-02, 4.612e-02, -4.454e-02, -1.639e-03, 2.414e-03, -8.587e-02, 2.386e-02, -1.169e-02, 6.642e-03, 8.896e-03, 7.199e-03, -3.941e-02, 6.533e-02, -3.099e-02, 6.647e-02, -1.812e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(2.514e-02, 1.241e-01, 3.635e-02, -1.995e-02, -2.658e-02, 3.721e-02, -3.490e-02, 1.132e-02, 5.989e-02, 1.333e-01, -5.855e-03, -7.150e-03, -1.521e-02, -9.446e-02, -1.244e-02, 2.515e-02), r3);\n\tr0 = MulAdd(s1_1_0, M4(4.191e-02, -5.113e-02, -5.434e-02, -1.747e-02, -1.095e-02, -7.902e-02, -9.213e-02, -4.968e-02, 6.955e-02, 2.157e-02, -7.202e-02, -1.509e-01, -6.839e-02, 3.097e-03, 1.642e-02, -1.127e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(9.448e-02, 2.550e-01, 5.427e-03, 6.264e-02, -9.321e-02, 2.263e-02, 2.451e-02, -7.101e-02, 5.512e-03, -1.641e-02, 6.400e-02, 1.558e-01, 9.242e-02, -1.981e-01, 8.167e-03, -1.470e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(4.788e-02, 2.070e-02, -8.120e-02, -1.484e-01, -2.541e-02, -1.637e-01, -4.762e-02, -1.173e-01, -5.531e-02, 5.835e-03, -2.826e-02, -2.274e-02, -2.104e-01, 4.814e-02, -3.946e-02, 6.850e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-8.065e-02, 4.837e-02, -1.448e-01, -8.208e-02, -2.607e-01, -3.130e-01, 6.579e-02, -4.067e-02, -3.235e-02, 4.789e-02, -1.516e-01, -8.872e-02, -1.165e-01, -4.205e-02, 1.421e-01, 2.675e-02), r3);\n\tr0 = MulAdd(s1_1_1, M4(1.338e-01, 1.077e-01, -6.389e-02, -8.813e-02, -6.846e-02, -6.702e-01, 2.038e-02, -4.843e-01, -1.207e-01, -2.063e-01, -1.997e-02, 6.425e-03, -1.577e-01, -1.313e-01, -5.196e-02, -1.891e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(3.997e-01, -2.213e-01, 1.796e-01, -6.560e-02, 1.134e-02, -1.215e-01, 3.450e-01, 1.150e-01, 1.529e-02, 6.890e-02, 6.063e-02, 1.070e-01, 3.590e-01, 2.005e-01, -2.926e-01, 4.124e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(3.579e-01, -1.259e-01, -1.013e-01, -2.476e-01, -4.294e-01, -5.259e-02, -1.181e-01, 8.537e-01, 1.702e-01, -4.359e-02, -1.018e-02, -2.408e-02, -5.985e-01, 5.510e-01, -3.003e-02, 5.283e-04), r2);\n\tr3 = MulAdd(s1_1_1, M4(-2.939e-01, -2.335e-01, 3.946e-02, -6.281e-02, -2.238e-01, 3.358e-01, -8.112e-02, 1.264e-01, -1.245e-01, 8.031e-02, -6.718e-02, -1.349e-02, 4.269e-01, 4.120e-01, 1.481e-01, 7.473e-02), r3);\n\tr0 = MulAdd(s1_1_2, M4(1.704e-01, 2.341e-01, -5.514e-02, 1.630e-02, -3.880e-01, -4.036e-02, -3.677e-02, -1.358e-01, -7.230e-02, -1.949e-01, 5.907e-03, -6.975e-03, -1.077e-01, -2.125e-01, 8.487e-02, -6.423e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(6.125e-02, -1.144e-01, -7.565e-02, -1.138e-01, -4.487e-02, -3.101e-01, 1.472e-01, 1.265e-01, -6.638e-03, 8.450e-02, -5.835e-02, 7.740e-02, 4.801e-02, -5.294e-03, -6.963e-03, 2.346e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.681e-01, 9.763e-02, -5.565e-02, -7.573e-02, 5.698e-02, -8.562e-02, -3.742e-02, 1.283e-01, 5.876e-02, -1.546e-02, 5.428e-03, 9.513e-03, -3.979e-01, 7.643e-02, 6.860e-02, 9.287e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(1.502e-01, 1.005e-01, 1.219e-01, -3.919e-02, 8.083e-02, 6.054e-02, 1.165e-01, -3.724e-02, -3.930e-03, 1.618e-01, -1.141e-01, 1.045e-02, -1.719e-02, -6.709e-02, -1.248e-01, 5.627e-02), r3);\n\tr0 = MulAdd(s1_2_0, M4(-1.028e-01, 6.475e-02, 1.593e-02, 3.042e-02, -3.316e-02, -2.036e-02, -3.848e-02, -1.050e-01, 1.534e-02, 4.809e-02, -1.319e-02, 2.919e-02, -3.795e-02, -1.341e-01, -2.022e-02, 1.448e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(5.460e-02, -2.777e-02, 4.623e-02, 7.754e-03, 2.048e-02, 6.007e-02, 1.248e-02, 3.533e-02, 3.827e-02, 4.928e-02, 5.587e-02, 4.360e-02, -6.844e-02, 2.707e-02, 3.531e-02, 9.174e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.761e-01, 5.291e-02, 1.098e-02, -6.690e-02, -3.974e-03, -3.873e-02, -3.640e-02, 2.186e-02, 3.011e-03, -2.661e-02, -1.618e-02, -6.887e-02, 5.056e-02, 5.966e-02, -1.095e-02, -9.302e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.616e-01, 3.947e-01, -1.140e-01, -4.033e-03, -1.951e-01, 1.082e-01, 1.927e-03, -6.406e-02, -8.847e-02, -4.162e-01, -3.996e-02, -2.189e-02, -3.340e-02, 1.929e-01, -6.431e-02, 5.352e-02), r3);\n\tr0 = MulAdd(s1_2_1, M4(4.105e-01, 2.018e-01, 1.620e-01, 2.446e-01, 2.217e-02, -5.187e-02, -9.298e-03, -8.181e-02, 4.987e-02, -2.500e-02, -3.292e-02, -5.920e-02, -4.067e-01, -7.347e-02, 2.285e-01, 2.883e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(2.213e-01, -1.500e-01, -2.041e-01, -2.418e-01, -2.444e-02, 4.540e-02, 1.327e-01, 9.598e-02, 2.984e-02, 2.240e-02, 6.744e-02, 1.997e-01, -1.500e-01, -1.068e-01, -1.128e-01, 3.124e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.554e-01, -4.265e-02, 2.800e-01, -1.975e-01, 7.587e-02, -7.151e-02, -5.526e-02, 6.614e-02, -7.321e-02, -3.594e-02, -1.046e-02, 7.965e-02, 2.804e-01, 4.385e-01, 2.420e-01, 1.672e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(9.362e-02, 2.031e-01, -1.847e-01, 1.504e-01, -2.602e-02, 2.242e-02, 2.180e-02, -8.180e-02, -1.664e-01, -3.621e-01, -3.297e-02, -3.497e-03, 1.840e-01, -1.969e-01, -3.356e-02, 3.387e-01), r3);\n\tr0 = MulAdd(s1_2_2, M4(5.393e-02, 5.230e-02, -2.754e-02, 1.632e-02, -1.321e-01, 7.366e-03, -4.148e-03, 5.137e-03, -3.071e-02, 1.110e-02, 4.765e-03, 3.780e-02, -6.115e-02, 1.937e-03, 5.770e-02, -7.134e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(7.547e-02, 7.557e-02, -1.245e-01, 9.287e-02, 9.243e-03, -6.865e-02, 4.483e-02, 4.553e-02, 1.561e-02, 4.061e-02, 1.665e-02, 8.132e-03, -4.316e-02, -2.103e-02, 9.584e-02, -9.900e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(5.648e-02, -2.244e-03, -1.603e-02, -1.678e-01, -9.880e-03, 1.695e-02, 8.171e-03, 2.166e-02, 7.524e-02, -2.715e-02, 3.089e-02, -1.577e-02, -1.627e-01, 1.345e-01, 2.920e-02, 1.773e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(2.641e-02, 9.526e-02, -8.639e-03, -3.137e-02, 2.820e-02, 4.498e-02, 2.246e-02, -1.356e-02, 3.280e-02, -1.588e-01, -1.514e-02, 2.687e-02, -7.580e-02, 1.165e-01, -5.261e-02, 7.296e-02), r3);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-4.013e-02, 1.058e-01, 1.051e-02, 2.406e-02, -1.761e-01, -3.486e-02, -3.776e-02, -4.016e-02, -2.955e-02, 6.106e-02, 1.499e-03, -2.722e-02, 3.684e-03, 1.705e-02, -2.050e-02, -5.383e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-2.936e-03, 1.105e-02, -1.017e-02, -4.760e-03, -2.075e-03, -2.441e-01, 2.186e-02, 9.494e-02, 6.219e-02, -5.979e-02, 8.295e-03, 1.325e-02, -2.368e-02, -1.636e-01, 5.246e-02, 6.860e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(9.202e-02, 5.058e-02, -8.348e-05, -3.231e-02, -4.432e-02, 3.803e-02, -1.180e-02, -6.341e-02, 3.739e-02, 6.333e-02, 1.150e-01, -1.946e-02, -2.817e-02, 3.119e-02, -5.857e-02, -3.882e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(3.918e-02, 2.826e-02, 4.301e-03, 1.717e-02, -7.255e-02, 1.972e-02, -5.765e-02, -4.555e-02, 6.577e-02, 3.567e-02, -3.978e-03, 5.309e-02, 2.936e-03, -1.052e-01, -3.410e-02, -2.394e-02), r3);\n\tr0 = MulAdd(s0_0_1, M4(9.045e-02, -6.946e-02, -2.059e-02, -1.189e-01, -4.478e-01, -3.349e-01, -2.951e-02, -1.343e-01, 2.710e-01, 1.640e-01, 5.714e-02, 5.449e-02, -4.460e-02, -1.227e-01, 1.996e-02, 8.341e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.913e-02, 1.795e-01, 5.844e-02, -9.292e-02, 5.107e-02, 2.438e-01, -8.521e-02, 4.268e-01, 2.313e-02, -1.478e-01, -2.378e-01, -2.735e-01, -5.247e-02, -1.927e-01, -4.162e-02, -1.799e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(8.298e-02, -1.053e-01, 2.364e-03, 5.385e-02, -2.222e-01, 2.782e-01, -5.746e-02, -3.637e-02, -4.224e-01, 3.922e-02, 1.970e-01, 6.369e-02, -9.476e-02, 6.966e-02, 3.315e-03, 1.100e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(-2.069e-02, -1.349e-01, -2.295e-01, 3.759e-03, 1.791e-01, 2.797e-01, -3.337e-02, -4.989e-02, 1.780e-02, -1.511e-01, 2.023e-01, 7.772e-03, 2.724e-02, 5.870e-02, 8.767e-02, 1.843e-02), r3);\n\tr0 = MulAdd(s0_0_2, M4(-1.039e-01, -7.115e-02, 4.966e-02, -3.634e-02, -8.047e-02, -1.226e-02, -3.031e-02, -6.140e-02, -1.428e-01, -1.294e-01, -7.369e-02, -1.070e-01, -5.131e-02, -4.312e-02, -5.035e-03, 3.518e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.148e-01, -2.462e-01, 1.688e-01, -4.188e-03, -2.352e-02, -1.567e-01, 1.376e-01, 1.115e-01, -2.650e-02, -4.380e-02, 6.518e-02, -4.279e-02, -4.091e-02, 9.780e-03, -4.695e-02, -8.761e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(4.133e-02, -5.647e-02, 7.139e-02, -3.447e-04, -1.329e-01, 1.250e-01, -4.134e-02, -1.528e-02, -1.743e-01, -1.173e-01, -2.098e-01, -9.969e-02, -2.806e-02, 3.671e-02, -5.097e-03, -9.654e-03), r2);\n\tr3 = MulAdd(s0_0_2, M4(-2.482e-02, -4.333e-02, -2.240e-02, 2.980e-02, -2.386e-02, 1.608e-01, 2.454e-02, -3.235e-02, -1.668e-02, 4.398e-02, 8.562e-03, -7.038e-02, 5.966e-03, -4.399e-05, 6.111e-02, -4.307e-03), r3);\n\tr0 = MulAdd(s0_1_0, M4(-5.273e-02, 7.986e-02, 5.412e-02, 1.214e-01, -2.270e-01, 3.109e-02, 4.496e-02, 9.482e-02, -1.122e-01, -2.116e-01, 2.992e-02, 4.544e-04, 3.789e-02, 1.607e-01, 4.407e-02, 1.067e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-3.525e-02, -1.125e-02, 1.978e-04, 1.739e-01, 3.578e-02, -2.433e-01, 1.653e-01, 2.097e-01, -5.270e-02, 4.173e-02, 2.737e-02, -2.482e-02, -3.135e-02, -1.791e-01, 8.565e-02, 1.200e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.382e-01, 1.313e-01, 5.635e-02, 6.115e-02, 7.347e-02, 1.519e-01, 3.921e-02, -1.171e-02, 1.986e-03, -2.798e-02, 1.900e-02, -6.314e-02, 5.943e-02, 2.056e-01, -1.286e-02, 1.957e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(9.209e-02, 1.146e-01, 5.076e-02, 5.316e-02, 1.969e-01, 1.330e-01, 4.239e-02, 3.058e-02, -1.000e-01, -5.856e-03, -2.337e-02, -1.137e-02, 2.144e-01, -1.791e-01, 2.899e-02, 2.580e-02), r3);\n\tr0 = MulAdd(s0_1_1, M4(5.957e-02, -1.695e-01, -3.677e-02, -2.375e-01, -2.357e-01, -2.202e-01, 1.884e-01, 2.803e-01, -2.024e-01, 1.015e-01, 3.080e-01, 4.166e-01, -8.719e-02, -5.227e-01, -1.541e-01, -1.077e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(5.632e-02, 2.654e-01, -2.921e-02, 1.025e-01, 7.251e-02, 7.934e-02, -3.167e-02, 5.402e-01, 8.575e-03, 1.421e-01, 2.922e-02, 1.583e-01, -2.003e-01, -5.332e-01, -5.163e-01, -6.739e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-3.114e-01, -1.508e-01, 1.707e-02, 1.394e-01, 1.987e-01, 2.059e-01, 3.047e-01, 8.533e-03, 5.384e-01, 6.513e-02, 5.441e-01, 3.429e-01, 2.874e-01, -4.018e-01, -2.154e-01, 1.012e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-5.143e-01, 1.464e-02, -2.275e-01, -1.033e-02, 2.081e-01, -2.823e-01, 1.207e-02, 1.451e-01, 1.386e-01, -5.907e-02, -1.042e-01, -4.717e-01, -3.176e-01, -2.441e-02, 1.119e-01, -1.130e-01), r3);\n\tr0 = MulAdd(s0_1_2, M4(-1.930e-01, -3.209e-01, 9.407e-02, -2.135e-01, 1.249e-01, 1.878e-01, 5.921e-02, 4.135e-02, 9.994e-02, 1.121e-01, 7.551e-02, 4.532e-02, 1.105e-01, 2.966e-02, -3.111e-02, 5.267e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.988e-02, 9.664e-03, 2.188e-01, -1.538e-02, -8.860e-02, -4.675e-01, -1.370e-01, 1.209e-03, 1.050e-02, 5.433e-02, -2.917e-02, -1.107e-01, -6.422e-02, -1.107e-01, -1.596e-01, -7.003e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.064e-02, -2.125e-01, 2.143e-02, 6.764e-01, 7.434e-03, 1.851e-01, 1.710e-02, 3.420e-02, -2.872e-01, 1.470e-01, 5.371e-02, -7.160e-02, 1.694e-01, -9.060e-02, -2.549e-02, -6.063e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(7.606e-02, -1.681e-01, 1.495e-01, 1.381e-01, 1.592e-02, 3.476e-02, 5.534e-02, 8.082e-03, -1.215e-03, 8.819e-03, -1.419e-01, 1.622e-01, -3.134e-02, 4.110e-03, 1.588e-01, -1.739e-03), r3);\n\tr0 = MulAdd(s0_2_0, M4(-3.466e-02, -3.468e-02, 1.626e-02, 7.281e-02, -4.159e-02, 1.696e-02, 3.383e-03, 1.098e-02, 3.116e-02, -2.892e-03, 9.303e-03, -1.613e-02, 7.866e-02, 5.400e-03, -6.045e-03, 1.897e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.813e-02, -5.484e-02, -3.133e-02, -7.801e-02, -3.140e-02, -1.368e-01, 5.358e-02, 1.130e-01, -2.457e-02, 7.918e-03, -2.564e-02, -8.570e-02, 4.714e-02, 1.470e-01, 2.292e-02, -6.956e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(2.696e-02, 5.388e-02, 1.896e-02, 7.579e-03, -3.646e-02, 1.038e-01, -2.051e-02, 4.543e-02, -5.014e-02, -3.358e-02, 1.189e-02, -1.949e-03, 2.929e-02, 5.266e-03, -3.401e-02, -5.044e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(6.513e-02, 9.245e-02, 4.385e-02, 1.752e-02, 1.786e-01, 4.045e-02, 4.855e-03, 1.477e-02, -9.103e-02, -1.830e-01, 4.465e-02, 1.053e-02, 1.350e-02, -2.957e-01, 3.116e-02, -5.604e-02), r3);\n\tr0 = MulAdd(s0_2_1, M4(1.914e-03, 2.209e-01, 2.146e-02, -1.770e-02, -2.436e-01, -2.130e-01, -7.934e-02, -1.812e-01, -6.749e-03, -5.202e-02, 3.861e-02, 3.743e-02, 1.408e-02, 4.850e-02, -1.399e-02, -9.042e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-8.893e-02, -9.465e-02, -4.568e-02, -2.607e-01, -9.659e-02, -3.788e-02, 3.673e-02, -1.928e-02, -3.216e-02, 7.105e-02, 2.790e-02, 3.447e-02, 1.151e-01, -1.382e-01, -6.473e-03, 4.253e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.893e-01, -1.441e-01, 6.883e-02, -1.693e-02, -1.819e-01, 1.132e-01, -1.410e-01, -2.071e-02, 1.166e-01, 1.604e-02, -1.550e-02, 4.326e-02, -1.312e-01, -7.248e-02, -5.033e-02, 8.915e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-7.318e-03, 3.203e-01, 2.095e-02, 7.610e-02, 1.606e-01, 2.393e-02, 5.408e-02, -3.326e-04, 1.670e-01, 7.168e-02, -1.004e-02, -9.454e-02, -3.760e-01, -2.059e-01, 5.467e-02, -5.593e-02), r3);\n\tr0 = MulAdd(s0_2_2, M4(8.663e-02, -7.698e-02, -3.734e-02, -1.061e-01, -2.067e-01, -3.466e-02, 2.165e-02, 1.297e-02, -2.122e-02, 3.042e-02, 1.718e-02, 1.455e-02, 9.448e-02, 1.187e-02, 8.725e-04, 2.171e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-7.429e-02, 1.189e-01, -1.334e-03, 1.092e-02, -9.512e-03, -1.141e-01, -3.604e-02, 6.118e-02, -8.374e-02, -4.526e-02, -3.055e-02, -7.537e-02, 2.297e-02, -5.279e-02, 3.676e-02, 4.029e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(7.991e-02, -4.816e-02, -8.618e-02, -5.153e-02, -5.281e-02, 1.699e-02, -1.248e-02, 4.090e-02, -4.386e-03, 1.646e-02, -1.046e-02, 4.288e-02, -6.417e-02, -4.338e-02, 2.259e-02, -2.196e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(6.582e-03, 1.394e-01, -5.311e-02, -6.643e-02, -1.033e-01, 2.601e-02, 6.445e-03, 1.518e-02, -1.019e-01, -1.577e-01, -8.809e-03, 1.144e-01, -9.752e-03, -7.572e-02, 9.303e-03, -1.885e-02), r3);\n\tr0 = MulAdd(s1_0_0, M4(-3.485e-04, 6.140e-02, -7.149e-03, -1.958e-02, -1.411e-01, -4.083e-02, -1.199e-02, 2.418e-02, 6.772e-03, -9.788e-02, 2.240e-02, 4.503e-02, -2.978e-02, -5.869e-02, 2.472e-02, -5.867e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(7.515e-02, 4.678e-02, 6.643e-03, 1.376e-02, -8.377e-02, 2.381e-02, 4.513e-02, -1.261e-01, -5.769e-02, -8.726e-02, 5.551e-02, 9.493e-03, -4.177e-02, 1.473e-02, -5.493e-02, 1.867e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(7.330e-02, 5.062e-02, 9.859e-03, -1.069e-02, 8.612e-02, -1.265e-01, -3.497e-03, 2.185e-02, -3.693e-02, 4.259e-02, 7.584e-03, -6.426e-02, 5.883e-03, -7.007e-02, -7.773e-03, 2.192e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(6.627e-02, -5.439e-02, -7.116e-02, 1.239e-02, -6.870e-02, -1.579e-01, -6.022e-02, 5.651e-02, -1.303e-01, 2.707e-02, -6.322e-02, 1.376e-03, -3.485e-03, 1.112e-01, 7.397e-02, -1.011e-02), r3);\n\tr0 = MulAdd(s1_0_1, M4(1.096e-01, 6.069e-02, 2.209e-02, 5.464e-02, -7.191e-03, -1.557e-03, 1.620e-02, 4.179e-02, -1.321e-01, -4.181e-03, -6.619e-02, -1.460e-01, -1.692e-02, -5.449e-02, 5.371e-02, -3.542e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.024e-01, 1.057e-01, -2.779e-02, -2.104e-01, 8.741e-02, 1.274e-01, -1.791e-02, -8.855e-02, 2.838e-03, 1.442e-01, -1.892e-01, 2.900e-01, 1.432e-02, 1.495e-01, 2.211e-02, 1.251e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-8.280e-02, -1.353e-01, 5.405e-02, -7.313e-02, 2.408e-01, 4.622e-02, 9.892e-02, -7.437e-03, 1.850e-01, 1.411e-01, -8.526e-02, 1.941e-02, 5.828e-02, 4.358e-02, -9.623e-02, -1.723e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(5.864e-04, -1.972e-01, 7.993e-02, 2.974e-02, -9.047e-03, -6.402e-02, -1.371e-01, 7.608e-02, -6.470e-02, 1.140e-01, -1.448e-01, -5.042e-02, -3.997e-02, 2.767e-02, 1.032e-02, -4.382e-02), r3);\n\tr0 = MulAdd(s1_0_2, M4(2.368e-01, 1.598e-01, 6.325e-02, 1.013e-01, 1.408e-01, 1.028e-01, -3.016e-02, 1.049e-04, -2.566e-02, 6.378e-02, -2.912e-02, -7.464e-02, -2.214e-02, 3.921e-02, -2.946e-02, -4.935e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-7.508e-04, 3.257e-02, 9.399e-02, -1.723e-01, 3.953e-02, -3.994e-02, -1.319e-02, 8.179e-02, 1.083e-01, -5.295e-02, 5.330e-02, 8.503e-02, -1.742e-02, -1.964e-01, 5.347e-02, 5.647e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-7.667e-03, -4.877e-02, 4.748e-02, -4.061e-02, 6.914e-02, 2.637e-02, 4.514e-02, 4.992e-02, 6.762e-02, -2.589e-02, -1.791e-02, -4.611e-02, 6.344e-02, -3.600e-02, -7.706e-02, -1.570e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-7.360e-02, 7.692e-04, 9.638e-02, 4.415e-02, 4.438e-03, -6.185e-03, -8.714e-03, -1.885e-02, 6.390e-02, 4.761e-02, -1.068e-01, -1.282e-02, -4.384e-04, 5.496e-02, 2.183e-04, -2.488e-02), r3);\n\tr0 = MulAdd(s1_1_0, M4(3.453e-02, 6.687e-03, 2.871e-02, 1.184e-01, 2.683e-02, 6.017e-02, -4.960e-02, -3.875e-02, 6.468e-02, 1.610e-02, 7.354e-02, 9.228e-02, 5.591e-02, 1.205e-01, -6.274e-02, -7.200e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-4.445e-02, 1.967e-01, 2.496e-02, 2.456e-03, 4.640e-02, 9.855e-03, 4.438e-02, 2.169e-01, -2.103e-02, -1.688e-01, -6.812e-02, -6.911e-02, 2.533e-02, -1.004e-01, 5.201e-02, 1.768e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.271e-01, -2.230e-02, 6.139e-02, -6.215e-02, -1.226e-01, -4.823e-02, -6.779e-02, 1.057e-01, -3.473e-02, -4.230e-02, 3.506e-02, 3.044e-02, -1.427e-01, 7.472e-02, -5.641e-02, 5.384e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-7.152e-03, -1.296e-02, 3.111e-02, 1.279e-02, 2.309e-01, 6.838e-02, -1.641e-01, 6.654e-03, 6.804e-02, -1.499e-01, 2.076e-01, 4.412e-02, 4.791e-02, 3.974e-02, -1.441e-01, 3.268e-02), r3);\n\tr0 = MulAdd(s1_1_1, M4(1.546e-01, 2.433e-01, 1.579e-01, -5.754e-02, 4.677e-01, 2.083e-01, 7.517e-01, 5.395e-02, -1.123e-01, -2.910e-01, -3.223e-01, 5.989e-02, 2.370e-01, -1.798e-01, 3.270e-03, 6.322e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-7.771e-02, 1.345e-01, -7.636e-02, -8.714e-02, -3.150e-02, -2.600e-01, -4.108e-01, -3.889e-01, -1.275e-01, -4.707e-01, -3.130e-01, 3.292e-01, -5.648e-02, -1.738e-01, -3.354e-01, -6.156e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-7.611e-02, 2.250e-04, 2.747e-01, 7.264e-02, -3.393e-01, -1.327e-01, -4.826e-01, -4.147e-01, 1.477e-01, -2.109e-01, -4.660e-01, -2.244e-01, -2.764e-01, -4.505e-01, 1.850e-01, 3.172e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(2.750e-01, 1.242e-01, 1.092e-01, 1.550e-01, -2.466e-01, -3.107e-01, 1.460e-01, 1.826e-01, 1.628e-02, -6.361e-01, 3.408e-01, -3.057e-01, -5.371e-01, -1.563e-01, 6.214e-01, 3.568e-01), r3);\n\tr0 = MulAdd(s1_1_2, M4(4.179e-01, 3.328e-01, 1.174e-01, -3.259e-02, -1.720e-01, -1.034e-01, -7.183e-03, -6.683e-02, -1.751e-01, -2.145e-01, -8.325e-02, -1.282e-01, -2.981e-01, -2.145e-01, -3.291e-01, 1.933e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(8.325e-02, 1.535e-02, -4.083e-02, -4.073e-01, 5.907e-03, 3.140e-02, 1.078e-01, 1.134e-02, -7.904e-02, 9.811e-02, -6.787e-03, 5.720e-02, 1.305e-01, 3.490e-01, 5.391e-01, 1.802e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(-9.797e-02, 1.801e-02, -2.199e-02, -6.896e-02, 1.343e-01, -1.583e-02, -5.557e-02, 1.916e-01, 3.970e-02, -1.250e-01, -4.410e-02, 4.138e-02, -1.366e-01, 4.272e-02, 3.554e-01, 2.594e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.511e-02, -2.160e-02, -9.431e-03, 3.377e-02, 2.230e-02, 6.255e-02, 5.218e-02, -7.554e-02, -2.489e-02, 2.598e-02, -9.041e-02, 1.953e-02, 1.077e-01, -9.835e-02, -2.246e-01, 1.587e-01), r3);\n\tr0 = MulAdd(s1_2_0, M4(9.912e-02, -2.447e-02, -3.211e-02, -8.954e-02, -2.588e-03, -6.348e-02, -1.727e-02, 3.060e-02, 2.270e-02, 3.553e-02, -1.289e-02, -7.368e-02, -5.112e-02, 2.145e-02, 7.455e-03, 6.042e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.347e-02, 8.677e-02, -1.180e-02, -1.135e-01, 2.834e-02, -3.890e-02, 1.258e-02, -8.638e-03, -1.908e-02, -3.231e-02, -1.794e-02, -9.269e-03, 6.004e-04, 4.280e-02, -1.218e-02, 5.696e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.731e-02, -1.264e-01, -9.238e-03, -3.629e-03, 2.025e-01, 4.016e-03, 3.091e-02, 6.161e-04, -1.134e-01, -3.282e-02, -5.902e-02, -1.708e-02, 1.243e-01, 5.749e-02, 4.552e-02, 4.176e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(-9.854e-02, 3.286e-02, 3.632e-02, 3.448e-03, 1.873e-01, 6.392e-02, -1.088e-01, -4.053e-02, -1.022e-01, -3.167e-01, 6.171e-02, -1.796e-02, 9.452e-02, 7.897e-02, -1.430e-02, -1.788e-02), r3);\n\tr0 = MulAdd(s1_2_1, M4(-1.328e-02, 4.370e-02, 4.092e-02, 1.897e-01, 2.161e-02, 1.131e-01, -1.138e-01, -5.479e-02, 9.825e-02, -5.633e-02, -4.726e-03, 1.564e-02, -1.518e-01, 4.981e-02, 9.790e-02, 9.092e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(5.334e-02, 2.192e-01, -3.800e-02, -1.622e-01, -3.402e-02, -1.635e-02, -4.650e-02, -8.959e-02, -5.496e-02, -6.726e-04, -8.143e-02, -4.552e-02, -1.812e-02, -1.726e-01, 5.704e-02, 1.134e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.313e-01, -7.491e-02, -1.125e-03, -1.313e-01, -1.655e-01, 4.539e-02, 1.077e-01, -3.386e-03, -6.713e-02, 2.498e-02, -1.169e-01, -5.948e-03, 1.880e-01, -9.624e-02, 1.763e-01, 6.605e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(3.541e-01, 7.937e-02, 6.979e-02, 6.121e-02, -3.095e-01, -2.202e-01, -4.228e-02, 4.835e-01, -2.900e-01, -5.476e-01, 1.626e-01, -9.302e-02, -3.489e-01, -3.507e-01, -7.741e-02, 3.139e-02), r3);\n\tr0 = MulAdd(s1_2_2, M4(1.111e-01, 1.675e-01, 4.655e-02, -9.346e-03, -8.984e-03, -1.072e-02, 2.647e-02, 1.205e-02, -1.274e-01, -7.748e-02, -3.029e-02, -5.672e-02, 3.896e-03, -1.408e-01, -4.966e-03, 3.000e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.211e-02, 1.057e-01, 6.044e-02, -2.086e-01, 4.963e-02, 7.121e-02, -2.644e-02, -3.163e-02, -3.154e-02, 1.079e-01, 1.090e-01, 7.692e-03, -3.011e-02, -7.279e-02, -7.520e-02, 1.226e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(-9.275e-02, -1.003e-01, -1.739e-02, -3.117e-02, 9.882e-02, -6.673e-03, 3.016e-02, -5.315e-02, 1.671e-02, 1.691e-02, -3.770e-02, 7.033e-02, 1.319e-01, 4.568e-02, 1.215e-01, 4.392e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-8.521e-02, -7.011e-02, -1.523e-02, 2.019e-02, 7.121e-02, 6.714e-02, -3.814e-02, -9.032e-02, 8.782e-02, 1.792e-01, 2.576e-02, -4.981e-02, 5.135e-02, 2.176e-02, -6.500e-02, 7.913e-02), r3);\n\tr0 = max(r0, 0.0);\n\tT4[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT5[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT6[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT7[gxy] = r3;\n}\n\n//!PASS 5\n//!DESC conv4 (16x16)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T4, T5, T6, T7\n//!OUT T0, T1, T2, T3\n\n#define L0(x, y) V4(O(T4, x, y))\n#define L1(x, y) V4(O(T5, x, y))\n#define L2(x, y) V4(O(T6, x, y))\n#define L3(x, y) V4(O(T7, x, y))\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.641e-02, -7.225e-03, -5.562e-02, 1.047e-02, 2.197e-02, 4.516e-02, 2.183e-02, -1.839e-02, -2.430e-02, -1.719e-02, -1.150e-02, -6.774e-03, -4.675e-02, 1.327e-01, -1.379e-02, 2.767e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(2.753e-02, -1.145e-03, -6.568e-02, -2.514e-02, -1.367e-02, 2.778e-03, -3.841e-03, 5.816e-03, 1.581e-02, 1.012e-02, -1.294e-01, 6.812e-02, 6.160e-03, -2.325e-02, 1.599e-02, -9.096e-04), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.764e-02, -2.692e-02, 1.291e-02, -5.254e-02, -3.379e-02, 1.300e-04, 3.514e-03, 2.514e-02, 4.182e-02, 5.897e-02, -8.131e-02, 3.408e-01, -1.228e-02, -5.781e-03, 2.842e-02, -3.430e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-9.454e-02, -1.395e-01, 5.914e-02, 4.668e-02, 6.324e-02, 9.106e-02, -1.284e-01, 3.675e-02, -9.727e-02, -6.790e-02, -2.045e-01, -7.105e-02, -3.725e-02, -3.781e-02, 9.008e-02, 3.686e-02), r3);\n\tr0 = MulAdd(s0_0_1, M4(3.926e-02, -5.036e-02, 6.650e-03, -7.256e-03, -4.027e-02, 2.235e-02, -7.975e-03, 7.449e-02, -9.200e-02, -5.426e-03, -9.193e-02, -1.473e-01, 2.150e-02, 6.186e-02, -4.224e-03, 1.645e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-7.983e-02, -1.085e-02, -5.233e-03, -1.655e-02, 6.430e-02, 2.012e-02, 6.666e-02, 6.275e-02, 1.851e-01, -1.880e-01, -3.412e-01, -1.489e-01, -2.311e-02, -2.216e-02, 4.818e-02, 2.818e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-7.606e-02, 8.869e-04, -1.238e-01, -7.025e-02, 1.669e-01, 4.239e-02, 1.130e-01, 4.373e-03, -1.107e-02, 1.751e-01, 1.551e-01, -6.986e-02, 3.029e-02, -5.354e-03, -7.821e-02, 8.463e-03), r2);\n\tr3 = MulAdd(s0_0_1, M4(-2.347e-02, -5.229e-02, -3.103e-01, -9.401e-02, -1.625e-01, 4.291e-02, 2.474e-01, 2.914e-02, -2.124e-01, -1.288e-01, 6.827e-02, 4.309e-02, 1.104e-01, 4.353e-02, -2.669e-01, -1.155e-01), r3);\n\tr0 = MulAdd(s0_0_2, M4(-1.961e-02, 1.615e-02, 8.694e-03, -1.413e-03, 1.803e-02, 2.252e-02, -1.727e-02, 3.038e-02, 5.874e-04, -4.090e-02, 3.333e-02, -2.959e-02, 1.928e-02, 1.828e-02, 1.291e-02, 4.655e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-4.742e-03, -4.790e-02, 1.652e-02, 1.221e-02, -2.435e-02, 4.537e-02, 4.302e-02, 1.779e-02, 9.306e-03, -4.235e-02, -5.840e-03, 1.088e-03, 1.811e-02, 5.451e-02, 6.905e-03, 3.477e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-4.362e-02, 9.430e-03, -3.001e-02, 2.613e-02, -2.612e-02, 5.612e-03, -1.115e-02, -1.261e-03, -3.063e-02, -3.794e-02, 1.471e-02, -2.645e-02, 1.457e-02, 4.907e-02, 2.985e-02, 6.135e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(6.093e-02, -1.674e-02, 5.753e-02, -3.178e-02, 2.448e-02, 1.503e-02, -1.078e-01, -1.160e-02, -2.026e-02, 7.544e-02, 5.836e-02, 6.330e-02, -9.540e-02, -8.086e-02, -2.798e-03, -5.278e-02), r3);\n\tr0 = MulAdd(s0_1_0, M4(-3.715e-01, -2.222e-01, 9.342e-02, -1.712e-02, 7.499e-02, -3.296e-02, -3.675e-02, 3.219e-02, -8.603e-02, -1.866e-01, 4.090e-02, 1.219e-02, 3.981e-02, 1.618e-02, -1.754e-02, -2.514e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.287e-01, 1.167e-02, 5.473e-02, 5.183e-02, 3.815e-02, 3.828e-03, 3.997e-02, -4.309e-02, -4.346e-02, -7.409e-03, -1.441e-01, 2.145e-01, 2.047e-02, 1.404e-02, 4.107e-02, -1.160e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(4.912e-02, 2.803e-02, 2.285e-02, -1.352e-02, -2.937e-05, -1.597e-02, 6.634e-02, -8.340e-03, -4.309e-02, 6.531e-02, -1.555e-01, 9.476e-03, 5.679e-02, -1.747e-02, 6.666e-02, -6.303e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-6.851e-03, -1.963e-01, -7.412e-02, -3.584e-01, 3.040e-02, 1.960e-01, -1.728e-01, -3.022e-02, -1.972e-02, -1.323e-01, -1.071e-01, -5.279e-02, 1.264e-02, 8.689e-02, 2.006e-02, 8.947e-02), r3);\n\tr0 = MulAdd(s0_1_1, M4(1.831e-01, 2.745e-01, -3.977e-01, -2.045e-01, -8.519e-03, -1.450e-01, 5.882e-01, -2.310e-01, -9.611e-02, -2.510e-01, 1.596e-01, -1.049e-02, -4.759e-01, 1.068e-01, 1.655e-01, -1.346e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(3.669e-01, 2.862e-01, 1.147e-02, -4.736e-01, 1.646e-01, -1.130e-02, 4.552e-01, 7.488e-01, 4.620e-01, -1.802e-01, -2.007e-01, 2.978e-01, -1.169e-01, 3.597e-02, -5.125e-02, 4.968e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-4.283e-02, -3.232e-01, 2.549e-01, -1.710e-01, 1.909e-02, 6.390e-01, -3.460e-01, 2.218e-01, -1.614e-01, 1.733e-02, 3.604e-01, 3.949e-01, 1.470e-01, 3.381e-02, -1.145e-01, -1.007e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-1.579e-01, 1.083e-02, -4.052e-01, -3.537e-02, 2.184e-01, -3.069e-02, 6.158e-01, -1.793e-01, 1.895e-01, 1.032e-01, 2.241e-01, 2.901e-01, 2.006e-01, -4.086e-01, -4.215e-01, -6.605e-01), r3);\n\tr0 = MulAdd(s0_1_2, M4(-7.767e-02, -3.150e-02, -3.082e-03, 6.582e-03, -2.356e-02, 2.873e-02, -4.796e-03, -4.366e-02, 1.294e-01, 4.773e-02, 7.235e-02, 8.569e-02, -1.068e-02, -6.037e-02, -4.853e-04, -1.368e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-2.632e-02, -1.248e-01, -6.583e-02, 3.665e-02, 9.447e-03, 1.999e-01, 7.656e-02, -2.674e-02, 1.952e-02, 1.131e-01, 3.278e-02, -1.145e-02, 2.530e-02, -7.414e-02, 7.104e-02, -3.779e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(9.459e-03, 1.322e-02, -8.015e-02, -4.486e-02, 1.506e-02, -1.167e-02, 1.406e-01, 1.732e-02, -1.162e-02, -5.846e-02, 4.920e-02, 5.239e-02, 6.346e-02, -1.178e-02, -1.666e-01, 7.013e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-4.888e-02, -6.115e-02, 1.082e-01, 1.004e-02, -5.060e-02, 1.158e-01, -1.260e-01, 8.660e-03, 2.402e-01, 1.388e-01, 1.243e-02, 4.025e-02, -2.288e-01, -2.242e-01, -6.619e-02, -8.787e-02), r3);\n\tr0 = MulAdd(s0_2_0, M4(-8.092e-02, 1.327e-01, -7.244e-02, -6.567e-02, 2.170e-01, -1.294e-01, -2.161e-02, -4.918e-02, -2.326e-01, 2.073e-01, 5.071e-02, 3.749e-02, 1.831e-01, -8.563e-02, -4.232e-02, -7.925e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(2.384e-02, 9.045e-03, 1.230e-03, -5.233e-02, 1.971e-02, 1.066e-02, 1.777e-02, 2.732e-02, -1.744e-02, -3.065e-03, -2.023e-02, 1.099e-02, 1.796e-02, 2.826e-02, -2.389e-04, -2.258e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(2.277e-02, -3.645e-02, -4.246e-02, 1.050e-02, 1.886e-02, 1.458e-02, 6.773e-03, 2.168e-02, 1.911e-04, 8.969e-04, 2.093e-02, -2.346e-02, 2.700e-03, -1.543e-02, 1.335e-02, -4.722e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-2.561e-01, 8.738e-02, -1.669e-01, 1.646e-01, 3.576e-02, -1.316e-03, -7.332e-02, 2.324e-05, -3.861e-03, -1.294e-01, 5.123e-02, -7.739e-02, -7.377e-02, 8.454e-02, -6.110e-02, 1.166e-01), r3);\n\tr0 = MulAdd(s0_2_1, M4(-1.980e-01, -5.409e-01, 7.057e-02, 6.333e-02, 4.478e-02, 1.821e-01, 1.200e-02, 1.926e-02, 1.166e-01, 3.079e-01, 9.412e-02, 2.705e-01, -1.726e-01, -2.108e-01, -6.043e-02, -2.439e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-8.376e-02, -5.225e-02, -1.740e-02, 8.996e-02, 2.069e-03, -1.085e-03, 7.980e-02, 1.676e-02, -5.452e-02, 2.200e-02, -7.883e-02, -6.123e-02, 3.291e-02, -5.952e-03, 3.571e-02, 2.787e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(2.727e-02, 5.628e-02, 4.582e-03, -3.173e-02, -3.137e-02, 3.283e-02, 4.651e-02, 3.086e-02, 4.526e-02, -3.810e-02, -7.300e-02, -1.528e-01, -3.678e-02, 2.590e-02, 7.252e-02, 2.051e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-1.624e-01, -2.430e-01, -2.671e-03, 6.620e-02, -9.827e-02, -8.309e-02, 2.709e-01, 1.216e-01, 5.089e-02, 3.827e-02, -1.522e-01, -1.440e-01, -1.315e-01, -8.839e-02, 1.135e-01, 1.925e-01), r3);\n\tr0 = MulAdd(s0_2_2, M4(2.166e-02, -1.255e-01, 1.853e-02, 1.209e-02, 1.224e-01, -3.346e-03, 3.650e-02, 3.324e-02, 6.075e-02, 9.412e-02, -1.096e-02, 3.932e-02, -1.486e-01, -5.604e-02, 4.959e-03, -6.929e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(5.629e-04, 1.507e-02, 8.900e-03, 1.315e-02, 6.697e-02, 1.735e-02, 4.389e-02, 1.157e-02, -3.356e-03, -1.789e-03, -1.015e-03, -1.860e-02, 6.668e-03, 2.156e-02, -1.064e-02, 4.123e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.026e-02, 1.126e-02, 8.635e-03, -4.892e-04, -1.966e-03, 2.240e-02, 6.519e-02, 5.041e-02, 5.712e-03, -2.251e-02, -4.728e-02, -1.082e-01, -3.084e-02, 1.389e-02, 7.739e-02, -3.004e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(7.906e-02, 5.764e-03, -1.380e-01, -6.186e-02, 5.137e-02, 6.316e-02, 2.416e-03, 6.811e-02, -5.155e-02, -3.526e-02, 3.461e-02, -6.274e-02, 2.916e-02, 9.118e-02, -2.736e-02, 1.033e-01), r3);\n\tr0 = MulAdd(s1_0_0, M4(3.699e-02, -2.318e-02, 1.355e-02, -2.273e-02, -2.232e-02, -7.245e-02, 1.468e-03, -4.865e-03, 8.017e-02, -4.624e-02, 3.653e-02, 8.123e-03, -5.542e-02, 1.164e-01, -1.826e-04, -5.815e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.925e-02, -1.177e-03, -2.916e-02, -9.340e-03, -1.015e-02, -3.814e-02, 6.618e-03, -1.569e-03, 4.109e-02, 1.033e-02, 4.078e-02, 2.901e-03, 1.343e-03, 1.891e-02, -1.005e-02, 1.255e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-3.383e-02, -6.258e-03, -3.762e-02, 1.210e-02, 2.411e-02, -7.512e-03, 4.169e-03, 4.113e-02, -2.018e-02, 8.957e-03, 3.673e-02, 8.834e-02, 1.810e-02, 1.071e-02, 6.400e-03, -1.769e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(8.226e-02, 3.794e-02, -1.062e-01, -2.082e-02, 1.135e-01, -5.417e-02, 8.357e-02, 1.489e-02, 1.120e-01, 2.564e-02, 1.440e-01, -1.528e-02, -8.230e-02, -6.598e-03, -1.266e-01, 2.133e-02), r3);\n\tr0 = MulAdd(s1_0_1, M4(-6.704e-02, 9.466e-03, -2.634e-02, -5.833e-02, 3.680e-02, -4.672e-02, 1.745e-02, 2.360e-02, -3.089e-02, 1.108e-02, 1.108e-02, -1.545e-02, 2.987e-02, 6.109e-02, -2.007e-02, 6.869e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-3.826e-02, -5.380e-02, -4.576e-02, -6.081e-02, 6.399e-03, 2.237e-02, -3.039e-02, 5.604e-03, 2.399e-02, 5.969e-02, -5.213e-02, -1.302e-02, -4.340e-02, -4.760e-02, -1.063e-02, 4.377e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.200e-03, -4.212e-02, 4.583e-02, 1.056e-02, -6.711e-02, 1.321e-02, -1.478e-02, 1.084e-03, -3.018e-02, -2.338e-02, 3.008e-02, 2.629e-02, -7.355e-03, 2.024e-02, 2.594e-02, 3.815e-03), r2);\n\tr3 = MulAdd(s1_0_1, M4(-3.773e-02, -8.481e-02, -6.409e-02, 7.269e-02, 1.050e-01, 6.773e-02, -2.782e-02, -7.338e-02, 9.181e-02, 2.040e-03, 5.197e-02, 6.361e-02, -1.170e-01, -5.680e-02, -7.065e-02, 2.038e-02), r3);\n\tr0 = MulAdd(s1_0_2, M4(-3.635e-03, 3.864e-03, -6.315e-03, -1.254e-02, 1.813e-02, 2.166e-02, -3.987e-03, 3.137e-02, 3.581e-03, -2.117e-02, 3.161e-03, 1.321e-02, -3.368e-02, -2.567e-02, 1.126e-02, -1.432e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-2.720e-02, -2.034e-02, -5.086e-03, -1.130e-02, -3.337e-02, -5.380e-02, 5.037e-03, -1.047e-02, 1.278e-03, 2.002e-02, 3.821e-02, -2.668e-03, -5.066e-02, -9.047e-03, -2.993e-02, 8.522e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.508e-02, -1.898e-02, -4.025e-02, -1.262e-02, -8.587e-03, -1.119e-02, 3.329e-02, 2.588e-02, -1.220e-02, -4.800e-03, 6.977e-03, -2.392e-02, -1.970e-02, 2.263e-02, -7.000e-02, -1.540e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-2.074e-02, -3.303e-02, 3.741e-03, -2.552e-02, -5.864e-03, 4.395e-02, -2.919e-02, 2.830e-02, 3.684e-02, 1.560e-02, 2.046e-02, 1.846e-02, 8.792e-02, -2.957e-02, 1.778e-02, -3.722e-02), r3);\n\tr0 = MulAdd(s1_1_0, M4(3.922e-02, -3.247e-01, 3.930e-02, -6.459e-02, -1.380e-01, 1.106e-01, 1.022e-02, 2.568e-02, -3.430e-02, 3.893e-01, 1.786e-01, 9.834e-02, -3.703e-02, -3.270e-01, 1.925e-02, -4.135e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-5.362e-02, -6.260e-02, 7.647e-02, -1.853e-02, 2.539e-03, -2.945e-02, -1.193e-01, 1.142e-02, 7.189e-02, 1.321e-02, 2.241e-01, 1.482e-01, -5.725e-02, 3.699e-02, -8.698e-02, 7.088e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.274e-01, -2.086e-02, -7.501e-02, 8.813e-02, -9.508e-02, -7.558e-03, -7.694e-02, -1.149e-02, 1.046e-01, 1.528e-01, 1.249e-02, 1.499e-01, -5.993e-02, 2.655e-02, 1.715e-02, -9.145e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(1.441e-02, -6.323e-02, -2.251e-01, 1.594e-01, -1.396e-01, -5.078e-02, 1.929e-01, 1.448e-01, 2.575e-01, 3.017e-01, 2.275e-01, 1.700e-01, 1.849e-01, -7.135e-02, 6.656e-02, -3.130e-01), r3);\n\tr0 = MulAdd(s1_1_1, M4(-2.489e-01, -3.354e-01, 1.273e-01, -1.126e-01, 4.839e-02, 2.097e-01, -4.529e-02, 3.131e-03, 1.353e-01, 1.406e-01, -7.418e-03, 5.605e-02, 6.958e-02, -4.293e-04, -1.080e-01, -6.809e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-9.713e-02, 1.718e-01, -2.380e-01, -1.714e-01, 4.526e-02, 1.743e-01, 5.644e-02, -7.809e-02, 1.685e-01, 3.061e-01, -2.261e-01, 1.200e-01, 1.959e-01, -1.153e-01, 1.738e-02, -1.465e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(4.477e-01, -1.375e-01, 1.092e-01, -1.209e-01, 3.000e-02, -7.007e-02, 4.736e-01, 1.406e-02, -9.749e-02, 3.505e-02, -2.277e-01, -5.181e-03, 5.933e-02, -9.644e-02, -3.467e-01, -9.038e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(6.120e-01, -2.728e-01, -2.721e-01, -1.587e-01, -3.564e-01, 1.369e-01, -4.055e-01, -1.362e-01, -5.530e-02, -7.667e-02, 1.107e-01, -1.749e-01, -5.254e-01, -9.203e-02, -6.270e-01, -1.609e-01), r3);\n\tr0 = MulAdd(s1_1_2, M4(3.159e-02, -2.459e-02, 1.481e-02, -4.284e-02, -9.918e-02, 4.626e-02, 1.158e-03, -4.064e-02, 3.869e-02, 9.447e-02, -9.356e-03, 3.034e-02, -7.447e-02, 5.891e-02, -5.085e-03, -2.565e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(6.429e-02, -1.410e-01, -2.320e-03, -1.913e-02, -7.950e-02, -1.518e-01, -4.136e-02, -2.709e-02, -3.229e-02, 7.016e-02, 3.303e-02, -3.186e-02, -4.840e-02, 7.738e-02, 1.759e-02, -9.987e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(-2.807e-03, -1.925e-02, -3.755e-02, -6.271e-03, 2.151e-02, -2.276e-02, -2.803e-01, -1.315e-02, 9.395e-04, -1.586e-03, -1.822e-03, -1.425e-03, -2.873e-02, 1.430e-02, 7.301e-02, 1.946e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(6.646e-02, -8.187e-02, 6.505e-02, -5.308e-02, -1.654e-01, -2.071e-01, 7.106e-02, -3.630e-02, 8.426e-02, 1.086e-01, 6.131e-05, 1.784e-02, -2.842e-01, 1.062e-03, 1.208e-02, 3.408e-02), r3);\n\tr0 = MulAdd(s1_2_0, M4(-1.680e-01, 4.814e-01, 8.117e-03, 1.654e-01, -1.297e-01, -2.369e-02, -3.231e-02, -1.579e-02, 4.050e-01, 1.545e-01, 6.378e-03, -1.026e-01, -1.631e-02, -2.053e-01, -2.748e-02, -9.243e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(4.773e-02, -1.593e-02, -2.213e-02, -7.445e-02, -3.433e-02, 1.712e-03, -5.160e-02, -4.737e-02, -1.786e-02, 4.139e-03, 5.407e-02, 6.009e-02, -3.406e-02, 3.044e-02, -9.659e-03, -1.358e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-3.863e-02, -2.915e-02, 3.077e-02, 5.992e-02, 2.254e-02, -6.082e-02, -4.255e-03, 1.589e-02, 4.549e-03, 4.456e-02, 2.868e-02, 1.114e-02, -8.551e-03, -1.352e-02, 3.185e-02, -1.155e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.557e-01, -1.509e-01, 1.111e-01, 9.194e-02, 1.197e-01, -1.342e-01, 8.144e-02, -3.063e-02, -7.451e-02, 1.451e-01, 5.204e-02, -6.775e-02, -2.802e-01, 3.831e-02, -3.142e-02, 1.204e-01), r3);\n\tr0 = MulAdd(s1_2_1, M4(4.757e-02, 2.934e-01, 1.297e-01, 3.274e-01, 1.200e-01, -2.309e-01, 1.303e-01, 1.172e-02, -1.568e-01, -2.576e-02, -9.479e-02, -1.228e-01, -1.665e-01, -7.247e-02, 4.543e-02, 2.206e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-7.530e-02, 4.429e-02, 3.436e-02, 3.490e-02, 3.433e-02, -8.473e-02, 6.050e-02, 5.545e-02, -6.659e-02, 1.509e-02, -1.194e-01, -7.315e-02, -1.306e-02, -1.352e-02, -4.493e-03, -2.411e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.646e-02, 3.822e-02, 2.885e-02, -8.326e-02, -1.431e-03, 4.505e-02, -7.201e-02, 6.856e-02, 4.991e-02, -7.058e-02, 3.428e-03, 4.208e-02, -3.666e-02, 5.941e-04, -5.253e-02, -3.316e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-2.134e-01, 1.537e-01, -1.280e-01, 2.330e-01, 3.506e-01, 2.849e-01, -9.974e-02, -6.943e-02, -1.894e-01, -1.274e-01, 4.122e-02, -7.305e-02, 1.488e-01, -1.213e-01, -2.557e-02, -2.339e-01), r3);\n\tr0 = MulAdd(s1_2_2, M4(-1.470e-01, 4.409e-02, 3.940e-02, 2.340e-02, -1.067e-01, -1.115e-01, -3.405e-02, -7.400e-02, 1.261e-01, 1.835e-02, -1.254e-02, -3.966e-02, 2.601e-02, -8.109e-02, -2.058e-02, 3.551e-04), r0);\n\tr1 = MulAdd(s1_2_2, M4(4.086e-02, -1.525e-02, -6.762e-02, 1.355e-02, -1.172e-02, 3.255e-02, -4.968e-02, -2.410e-02, 5.172e-03, -1.958e-02, 3.527e-02, -3.205e-02, -8.687e-03, 2.185e-03, 6.981e-03, -9.902e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(-8.408e-03, -7.317e-03, 7.105e-02, 5.152e-03, -7.603e-03, -3.845e-02, 9.381e-03, -1.031e-02, 1.907e-02, -5.659e-03, -2.179e-02, 1.926e-02, 3.755e-04, -2.819e-03, -5.655e-02, 7.592e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(-1.272e-01, -8.614e-02, -1.310e-01, 1.001e-01, 6.827e-02, -1.092e-01, 1.420e-01, 8.276e-02, -2.791e-02, -3.831e-03, 5.739e-02, 2.390e-03, 1.576e-01, -5.044e-03, -4.320e-02, -5.275e-02), r3);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(7.475e-03, 1.400e-01, -1.357e-02, -1.804e-02, 1.384e-02, -1.141e-01, -1.750e-02, -3.923e-02, -1.072e-02, -1.058e-01, 7.622e-04, -4.998e-02, -4.092e-02, -9.033e-02, -1.374e-03, -2.851e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.581e-02, -5.137e-05, -5.576e-02, -1.059e-02, -2.172e-03, -3.061e-02, 1.284e-02, -2.129e-02, -2.332e-02, 7.636e-03, 1.718e-02, -6.378e-03, -7.422e-03, -1.383e-02, -1.690e-02, -3.228e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-6.097e-02, 3.474e-03, -1.545e-02, -3.099e-02, -1.706e-02, -1.198e-02, 2.629e-02, -5.266e-02, 2.086e-02, -2.924e-02, 9.624e-03, -5.179e-02, -4.772e-02, -1.962e-02, -1.427e-02, -1.944e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(8.034e-03, -1.998e-03, -7.709e-02, 1.939e-04, 2.303e-02, -1.150e-02, 1.157e-01, -5.576e-02, 6.234e-02, 1.001e-02, 2.299e-02, -1.555e-02, -2.626e-02, -3.946e-02, -6.042e-02, -4.712e-02), r3);\n\tr0 = MulAdd(s0_0_1, M4(-1.442e-03, 1.415e-01, -1.823e-02, -2.459e-02, -3.742e-02, -1.101e-01, 4.408e-02, -4.676e-02, 1.104e-02, -8.884e-02, 2.008e-02, -1.446e-01, -5.178e-02, -9.323e-02, 3.833e-03, -1.009e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(5.875e-02, -8.109e-02, 9.447e-02, 8.567e-02, 4.283e-02, 5.852e-02, 2.898e-02, 1.632e-02, -7.892e-02, 2.925e-02, 4.989e-02, -5.590e-02, -3.786e-02, -4.894e-02, -5.967e-02, -6.204e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-6.120e-02, 7.830e-02, -5.818e-04, 1.609e-02, -1.160e-01, 9.929e-03, -9.957e-02, -9.796e-02, -6.824e-02, -3.723e-02, -1.911e-02, -2.563e-01, -6.014e-02, -1.482e-02, -1.028e-01, -1.743e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(-2.055e-01, -5.735e-02, -3.454e-02, 7.252e-02, 1.126e-01, 3.845e-02, 6.612e-02, -1.055e-01, -2.326e-02, -4.113e-02, 4.643e-02, -4.328e-02, 1.050e-01, -8.308e-02, -1.412e-01, -2.270e-01), r3);\n\tr0 = MulAdd(s0_0_2, M4(-1.404e-02, 1.689e-03, -2.606e-02, 4.693e-02, 3.907e-02, -3.237e-02, -1.974e-02, 7.364e-03, -6.820e-03, -6.518e-02, 3.357e-02, -8.941e-02, 8.955e-03, 6.622e-03, 1.390e-02, -2.353e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.084e-01, 6.246e-03, 5.017e-02, 9.422e-03, -4.348e-03, -2.155e-03, 4.956e-03, -4.333e-03, -7.495e-02, -2.427e-02, 4.997e-02, -2.830e-02, -4.382e-02, -8.325e-02, -8.388e-03, -1.004e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.134e-02, -3.576e-02, -5.409e-02, 7.308e-02, 4.872e-02, -2.164e-02, -3.111e-02, -2.189e-02, 2.202e-03, -1.444e-01, -1.304e-01, 1.323e-02, -4.694e-03, -2.622e-02, -6.037e-02, 6.563e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(4.800e-02, -3.431e-02, -5.712e-02, -2.879e-02, 6.046e-02, -1.308e-02, -8.073e-02, -6.610e-02, 1.944e-01, -2.931e-03, 6.115e-02, 1.887e-02, 3.598e-03, -3.693e-02, -7.314e-03, -4.277e-02), r3);\n\tr0 = MulAdd(s0_1_0, M4(-1.039e-01, -6.258e-02, 1.552e-02, 1.181e-02, 3.115e-02, 1.698e-01, -3.482e-03, 4.415e-02, -7.026e-03, 9.302e-02, -3.904e-02, 1.709e-02, -5.763e-02, -2.288e-02, -6.591e-02, 8.306e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(-3.901e-02, 9.753e-03, -3.821e-02, -4.886e-02, 1.071e-02, -3.912e-03, 4.510e-02, -5.216e-02, 1.227e-02, -3.726e-02, 5.589e-02, -3.371e-02, -4.805e-02, -5.750e-03, -5.934e-02, -8.081e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.877e-02, -1.587e-02, -4.095e-02, -9.000e-02, 4.409e-02, -2.281e-02, 6.124e-02, -5.461e-02, -1.209e-02, 5.300e-03, 1.113e-02, 1.123e-01, 6.404e-03, -7.154e-02, 6.369e-03, -8.237e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-8.102e-02, -4.644e-02, -1.478e-01, -1.885e-01, 3.478e-02, 1.585e-01, -1.098e-01, 6.898e-02, 2.009e-01, -7.789e-02, 7.984e-02, -2.656e-02, -2.013e-01, -3.971e-02, -2.349e-01, -1.851e-01), r3);\n\tr0 = MulAdd(s0_1_1, M4(-7.037e-02, -2.421e-01, -1.623e-01, 8.517e-02, -8.568e-03, 1.140e-01, 6.958e-02, 8.519e-02, 3.210e-01, -6.861e-02, 3.995e-01, 4.585e-01, -1.588e-01, 5.645e-02, 6.570e-03, 8.531e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.516e-01, -1.506e-01, -1.042e-01, -1.245e-01, 3.819e-02, -2.074e-02, 2.231e-01, 4.031e-01, 8.857e-02, 2.570e-01, 5.762e-01, 2.655e-02, -2.924e-01, -1.781e-01, -9.205e-02, -8.172e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-7.345e-02, -1.140e-01, -1.845e-01, 8.775e-02, 2.285e-01, 3.330e-01, 1.103e-01, -4.307e-02, -2.321e-02, 3.006e-01, 7.321e-02, 1.270e-01, -2.386e-03, -8.400e-02, -3.540e-01, -3.098e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-6.033e-01, -2.115e-01, -8.909e-01, -3.308e-01, 6.430e-02, -1.555e-02, 6.958e-01, 4.123e-01, 3.456e-01, 6.621e-01, 2.805e-01, 4.594e-01, -3.504e-01, -5.267e-01, -1.876e-01, -4.971e-01), r3);\n\tr0 = MulAdd(s0_1_2, M4(-4.758e-02, -2.270e-02, 5.660e-02, 5.772e-02, -5.143e-02, 1.145e-01, -1.959e-02, -2.208e-02, 5.082e-02, -3.787e-02, 8.861e-02, 2.086e-01, -7.444e-02, -5.229e-02, 2.298e-02, -4.009e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.312e-01, -1.763e-01, -5.171e-02, -6.412e-03, 1.980e-02, 1.514e-02, 9.909e-03, -6.469e-02, 9.720e-02, 9.049e-02, -1.021e-01, 3.283e-02, 1.985e-02, -1.450e-01, -9.741e-02, -1.035e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(-2.625e-02, -3.082e-02, -2.677e-01, -5.731e-02, -1.440e-02, -3.428e-02, 4.538e-02, -7.913e-02, -1.072e-01, -3.023e-02, 1.602e-01, -2.271e-01, 5.358e-03, -3.234e-02, -7.604e-02, -1.164e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.959e-02, 4.250e-04, 9.731e-02, 8.684e-03, -1.592e-01, 3.224e-02, -1.228e-01, 9.010e-02, 1.489e-01, -7.851e-02, -6.104e-02, -7.180e-02, -2.103e-01, -1.597e-01, -7.157e-02, -4.161e-02), r3);\n\tr0 = MulAdd(s0_2_0, M4(-4.234e-02, -8.682e-02, -2.462e-02, -3.573e-02, 1.322e-01, 3.913e-04, -4.238e-02, 8.848e-03, -6.387e-03, 2.359e-01, -1.920e-02, 8.034e-02, -1.035e-02, -3.933e-01, -3.235e-02, -8.021e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(3.840e-03, 1.352e-03, -2.105e-03, -2.656e-03, -3.403e-02, 1.043e-02, -5.896e-02, -6.173e-02, -2.521e-02, -1.389e-02, -3.423e-02, -2.294e-02, 2.594e-02, 1.686e-02, 4.969e-03, -7.436e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.190e-02, -4.011e-03, 1.043e-03, 3.381e-02, -3.051e-02, -3.563e-02, -2.707e-02, -1.005e-01, 1.615e-02, -2.143e-02, -2.654e-02, -5.034e-02, -6.976e-03, -5.134e-03, 2.069e-02, -8.033e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(4.873e-02, -2.356e-02, -9.155e-03, -2.016e-02, 5.957e-02, 3.253e-02, -1.213e-01, 5.038e-03, -1.146e-02, 5.071e-02, 7.180e-02, -7.368e-03, -1.125e-01, -1.867e-02, -1.499e-01, 4.140e-02), r3);\n\tr0 = MulAdd(s0_2_1, M4(-5.958e-01, -1.284e-01, -4.444e-02, 4.382e-02, 2.261e-01, -6.539e-02, 7.983e-02, 3.334e-02, 3.871e-01, 2.210e-01, -3.405e-02, -1.105e-01, -3.880e-01, -2.556e-01, -1.494e-02, -1.900e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(9.857e-03, 9.163e-03, -3.208e-02, -2.957e-02, -1.972e-02, -3.050e-02, -5.973e-02, 1.687e-03, 4.410e-02, -1.918e-03, 5.413e-03, -4.037e-03, 1.413e-02, -1.224e-02, 3.299e-02, -9.190e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(6.892e-03, -1.559e-02, -4.221e-03, -8.227e-02, -5.969e-02, 5.974e-03, -6.235e-02, -8.813e-02, 3.624e-02, -9.025e-04, 3.553e-02, 1.772e-01, -7.758e-03, 4.385e-03, 9.107e-03, -2.026e-03), r2);\n\tr3 = MulAdd(s0_2_1, M4(4.183e-02, -1.648e-01, -3.031e-01, -1.574e-03, 1.248e-01, 5.331e-02, 1.937e-01, -1.183e-01, -1.693e-01, 7.304e-02, 1.877e-02, -5.772e-02, -1.382e-01, -1.881e-01, -1.799e-02, 1.549e-01), r3);\n\tr0 = MulAdd(s0_2_2, M4(8.952e-02, 8.968e-02, -3.454e-02, -8.179e-02, 1.187e-01, -7.390e-02, 6.947e-03, 3.572e-02, -1.612e-01, 7.040e-02, 4.689e-03, 7.359e-02, -3.930e-02, -4.020e-02, 3.364e-04, -1.779e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-3.382e-02, -7.350e-02, -2.930e-02, -2.222e-02, 4.211e-02, 2.228e-02, -2.921e-02, -2.764e-02, -2.671e-02, 3.444e-03, -3.850e-02, -5.555e-03, 1.237e-02, 1.652e-02, -2.837e-02, 1.899e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-9.040e-03, -2.308e-02, -5.253e-02, -6.286e-02, -2.330e-02, -4.083e-02, 3.841e-02, -4.643e-02, 3.017e-02, -2.291e-02, -3.206e-02, 4.059e-04, -2.664e-02, 7.649e-03, 6.274e-02, -5.166e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(3.430e-02, -6.176e-02, 1.581e-01, -8.617e-04, 1.458e-01, 8.083e-02, 1.232e-02, -1.438e-02, -1.359e-01, -5.053e-02, -4.574e-02, -1.437e-02, -3.122e-02, 6.758e-02, -2.997e-02, 2.930e-02), r3);\n\tr0 = MulAdd(s1_0_0, M4(4.516e-03, 3.322e-02, -1.336e-02, 4.358e-02, -3.832e-04, 2.846e-02, -1.181e-03, 2.171e-02, 3.883e-02, 1.886e-02, -2.846e-02, -7.001e-03, 2.267e-03, 2.404e-01, 4.789e-03, 2.263e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.580e-02, -3.781e-03, -2.367e-02, -1.584e-03, -1.725e-02, -9.538e-03, -1.763e-02, 2.233e-03, -1.556e-02, -1.729e-02, -1.569e-02, -1.941e-02, 4.547e-02, 3.215e-02, 1.953e-02, -9.425e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(5.259e-03, -2.713e-03, -3.383e-02, 1.217e-02, -6.164e-03, 4.226e-03, -2.397e-02, 1.510e-02, 1.501e-03, -2.753e-02, -7.540e-03, -2.480e-02, -3.240e-02, -2.712e-02, 1.116e-01, -3.090e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(5.725e-02, -5.608e-02, 7.251e-02, 5.217e-02, 7.449e-02, 3.776e-02, 5.677e-02, -6.019e-02, 8.240e-03, -1.515e-02, -2.170e-02, -1.987e-02, -6.569e-03, 9.770e-02, 1.048e-01, 7.300e-02), r3);\n\tr0 = MulAdd(s1_0_1, M4(-5.060e-02, 9.242e-03, 3.315e-02, -8.397e-03, 3.052e-02, 1.224e-01, -2.343e-02, 7.306e-02, -7.206e-02, -3.569e-02, -6.526e-02, -2.049e-02, 1.034e-01, 3.279e-01, -6.020e-04, 3.096e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(-6.475e-02, 2.039e-02, 3.633e-02, -1.054e-01, 3.571e-02, 1.935e-02, 9.520e-03, -2.703e-02, -3.006e-02, -9.050e-03, -7.445e-02, -2.291e-02, -1.906e-01, 5.573e-02, 3.013e-01, 2.066e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-1.090e-02, -6.279e-02, 4.808e-02, -6.830e-02, -2.615e-01, -1.600e-02, -4.426e-02, -2.678e-02, -7.046e-04, -3.974e-02, -2.909e-02, -7.538e-02, 2.218e-01, -1.685e-01, -2.037e-01, 4.014e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(3.289e-01, 1.680e-01, 6.413e-02, -1.587e-01, -8.980e-02, 1.460e-02, -5.035e-01, -1.685e-01, -1.530e-01, 7.243e-03, -1.802e-01, 4.528e-04, -2.382e-01, 6.318e-02, -2.854e-02, 1.564e-02), r3);\n\tr0 = MulAdd(s1_0_2, M4(4.006e-02, 4.402e-02, 3.002e-02, 3.506e-02, -4.006e-02, 3.866e-02, -2.816e-03, -1.824e-02, 2.245e-02, -3.818e-02, -5.564e-03, 7.113e-03, -2.919e-02, 3.529e-02, -1.141e-01, 7.925e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(3.335e-01, 1.117e-01, 1.323e-01, 5.353e-02, -8.816e-02, -1.320e-01, -2.348e-02, -3.316e-02, -1.297e-02, 9.254e-03, 1.648e-02, -1.175e-02, 2.193e-02, 5.292e-02, -9.767e-02, -1.045e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(7.776e-02, 4.610e-02, 3.847e-01, -6.181e-02, -8.366e-02, -4.886e-02, -3.792e-01, -3.025e-02, -1.120e-03, -4.697e-03, 2.895e-02, 1.087e-02, 7.007e-02, 1.509e-01, 7.305e-02, -3.858e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-2.162e-01, 7.968e-02, 2.636e-01, -1.642e-03, -9.944e-02, -2.925e-01, 1.709e-02, -4.747e-02, -6.499e-03, 1.859e-02, 5.428e-03, -7.895e-02, -2.801e-01, -7.387e-02, -1.392e-01, -5.969e-02), r3);\n\tr0 = MulAdd(s1_1_0, M4(-8.697e-02, 2.215e-01, 3.259e-02, -2.046e-02, 1.215e-01, -1.380e-02, 8.681e-03, -5.089e-02, -2.768e-02, -3.663e-01, -4.461e-02, -4.016e-02, 1.930e-01, -4.326e-01, 1.540e-02, -8.960e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-3.479e-04, -1.467e-02, 1.034e-03, -1.611e-02, 1.642e-02, 8.182e-03, 4.235e-02, -2.173e-02, -1.002e-02, -2.233e-02, -4.429e-02, -4.871e-02, 4.226e-04, -2.229e-04, 2.008e-03, 5.120e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(2.803e-02, -5.570e-03, -2.447e-02, 2.696e-02, 3.896e-02, -1.415e-02, 1.886e-02, 4.637e-02, -2.661e-02, -3.598e-02, 1.755e-03, -4.041e-02, 1.133e-02, 2.152e-02, -3.553e-02, -3.750e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-1.447e-01, -1.660e-02, 1.224e-01, 1.009e-02, -1.281e-01, 5.924e-02, -1.410e-01, 2.213e-01, -1.432e-01, 4.408e-02, -5.599e-02, -3.048e-02, -1.322e-01, 5.811e-02, -6.074e-02, 8.393e-02), r3);\n\tr0 = MulAdd(s1_1_1, M4(3.161e-01, 2.153e-01, -8.862e-02, 3.823e-02, -2.124e-01, -2.474e-01, -8.670e-02, -1.314e-01, -2.035e-01, -3.719e-01, -1.880e-01, -3.393e-01, -1.964e-01, -3.449e-01, -3.565e-01, -6.387e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.227e-01, -2.003e-03, 1.284e-01, -6.249e-02, 7.253e-02, 3.052e-02, -5.104e-03, -9.382e-03, -1.812e-01, -9.690e-02, -3.605e-01, -8.621e-02, 6.470e-02, 1.532e-02, 3.350e-01, 9.048e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.720e-03, -5.103e-02, 5.590e-02, 2.805e-02, 7.776e-03, -7.253e-03, 1.764e-01, 7.818e-02, -1.440e-01, -7.791e-02, -1.523e-01, -1.851e-01, -1.048e-01, 9.492e-02, 1.528e-01, -1.620e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-4.838e-01, 1.277e-01, 3.431e-01, 3.467e-01, -2.097e-01, -2.514e-01, -1.538e-01, 2.161e-01, -7.397e-01, -6.305e-01, -1.453e-01, -2.998e-01, -1.220e-01, -1.795e-01, -9.733e-02, -4.968e-02), r3);\n\tr0 = MulAdd(s1_1_2, M4(2.439e-01, -2.270e-01, -7.154e-03, 1.268e-02, -2.635e-01, -5.136e-03, 5.017e-02, 5.398e-02, -5.108e-02, -1.406e-02, 4.618e-02, -4.488e-02, -7.836e-02, -9.523e-02, -1.754e-01, -2.359e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(4.254e-01, 1.431e-01, 5.578e-02, -1.207e-01, 5.986e-02, 1.163e-01, 7.261e-02, 2.124e-01, 1.870e-01, 4.064e-01, 3.357e-02, 8.320e-03, -1.421e-01, 6.112e-02, 9.156e-02, -2.906e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-1.531e-02, -7.146e-02, 3.771e-01, -4.788e-02, 3.568e-03, 1.743e-01, 2.186e-01, 3.018e-02, -1.384e-02, 6.109e-03, 3.936e-01, -1.591e-02, 2.912e-02, 9.407e-02, -5.372e-02, 2.000e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(1.432e-01, 3.308e-01, -1.127e-02, -2.656e-01, 2.823e-01, -1.254e-03, 2.208e-01, 1.618e-01, -5.069e-02, 2.452e-01, -1.759e-01, 3.603e-02, -9.863e-02, 4.581e-03, 2.639e-02, 2.358e-02), r3);\n\tr0 = MulAdd(s1_2_0, M4(4.781e-02, -1.807e-01, 1.762e-02, -4.183e-02, -3.793e-02, -9.227e-03, 1.260e-02, 3.070e-02, -2.956e-02, -3.331e-01, 5.445e-03, 2.965e-02, -8.886e-02, 6.161e-02, 8.200e-03, 8.931e-04), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.678e-02, -9.738e-03, 2.020e-02, 2.440e-02, 1.297e-02, -9.420e-03, 5.019e-03, -6.058e-03, -7.102e-04, -2.432e-03, -1.929e-02, -6.868e-03, 4.158e-04, -6.037e-03, 4.851e-03, 2.878e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(2.110e-02, 1.090e-02, 1.113e-02, 5.266e-02, 7.585e-03, 3.660e-03, -6.806e-03, 1.460e-02, -8.141e-03, -1.005e-02, 2.558e-05, 4.299e-02, -5.701e-03, 2.990e-03, 8.225e-03, 2.495e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(4.606e-02, 1.149e-02, 8.274e-02, -1.712e-02, 1.926e-01, -4.106e-03, 7.886e-02, -5.877e-03, 1.848e-01, -4.991e-02, -7.041e-02, -8.274e-02, 3.030e-02, -1.455e-02, 7.464e-02, -4.055e-02), r3);\n\tr0 = MulAdd(s1_2_1, M4(2.011e-01, -5.976e-02, -4.563e-02, -4.085e-02, -2.612e-01, 2.459e-02, 2.242e-02, 8.096e-02, -1.519e-01, -3.071e-01, 4.012e-02, 2.001e-01, 3.024e-02, -3.061e-02, 1.834e-02, 1.168e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-3.901e-02, 9.854e-03, -7.139e-02, -7.513e-02, 4.384e-03, 6.974e-03, -1.039e-02, 1.761e-04, -2.128e-04, -1.492e-02, -2.600e-02, -5.456e-02, -1.318e-02, 1.862e-02, -2.850e-02, -1.924e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-4.489e-04, -5.876e-02, -1.319e-04, -2.154e-02, 5.552e-03, -9.017e-03, 1.626e-02, 9.435e-03, 1.221e-03, -3.392e-02, -6.781e-02, -3.630e-02, 2.097e-02, -1.766e-02, -1.167e-02, -2.995e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-3.820e-02, 1.658e-01, 5.920e-02, -3.328e-02, 9.836e-02, 5.394e-02, 1.121e-01, -9.794e-02, 2.036e-01, 4.968e-02, -2.697e-02, -1.124e-01, 1.933e-02, 1.970e-02, -1.389e-01, 8.811e-03), r3);\n\tr0 = MulAdd(s1_2_2, M4(8.946e-04, 1.096e-02, -1.506e-02, -5.630e-02, 2.007e-01, 1.969e-02, 2.129e-02, 4.976e-02, 9.351e-02, -4.676e-02, 1.756e-03, 6.513e-02, -5.135e-02, 1.257e-02, -1.107e-02, -3.471e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(9.224e-03, 1.790e-02, -1.630e-02, 1.897e-02, -1.144e-02, -3.312e-02, -1.129e-02, -2.413e-03, -3.357e-02, 1.156e-02, 8.024e-03, 3.346e-03, -1.635e-03, -4.530e-02, -1.235e-02, -1.053e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-5.652e-03, 1.568e-02, 6.137e-02, -5.792e-03, 3.454e-02, -1.628e-02, -5.529e-02, 2.012e-02, 4.542e-03, 7.027e-03, -4.358e-02, 1.038e-02, 6.619e-03, -1.169e-02, -2.898e-02, 1.101e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(-6.397e-02, -1.553e-02, 6.284e-02, 2.467e-03, 6.271e-02, 4.614e-02, -4.798e-02, -2.377e-02, 1.466e-01, 2.885e-02, -6.588e-03, 4.253e-02, 2.708e-02, -2.060e-02, 2.838e-02, 2.790e-03), r3);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n}\n\n//!PASS 6\n//!DESC out-shuffle (16x12)\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, T0, T1, T2, T3\n//!OUT OUTPUT\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 sz = GetOutputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.004e-02, 1.268e-02, 1.422e-02, 1.665e-02, 1.003e-03, 6.192e-03, 1.611e-03, -1.161e-03, 1.652e-01, -5.010e-03, 1.273e-02, -2.875e-02, 4.161e-02, 4.119e-03, 7.435e-03, -8.209e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-4.053e-02, 1.973e-02, 2.964e-02, 1.326e-02, 1.362e-02, 3.369e-03, -6.045e-03, -8.874e-03, -7.397e-02, 5.089e-03, -1.742e-02, 6.369e-03, -2.461e-02, -1.298e-04, 1.218e-02, -5.301e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-2.208e-02, 1.959e-02, 2.728e-02, 1.328e-02, 8.664e-03, 4.966e-03, -2.127e-03, -3.581e-03, 4.939e-02, 2.762e-03, -8.759e-05, -7.461e-03, 6.366e-03, -3.463e-04, 6.176e-03, -9.190e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(2.979e-01, -2.982e-01, -1.577e-02, -1.002e-01, 2.496e-01, 3.685e-02, -1.823e-01, -1.762e-02, -3.070e-01, 1.597e-01, -6.143e-02, 2.009e-02, -2.114e-01, -4.245e-02, -3.096e-02, 1.554e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(3.640e-01, -3.545e-01, -6.211e-02, -5.215e-02, 2.956e-01, 3.594e-02, -2.141e-01, -3.576e-02, -1.733e-01, -2.261e-01, -2.186e-02, -2.291e-02, -1.684e-01, -1.636e-01, -3.637e-03, 1.103e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(2.998e-01, -3.084e-01, -3.890e-02, -6.867e-02, 2.603e-01, 4.400e-02, -1.925e-01, -2.540e-02, -2.171e-01, -1.869e-02, -2.764e-02, 3.732e-03, -1.939e-01, -1.014e-01, -1.336e-02, 1.426e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(-4.039e-03, 4.915e-02, -7.412e-03, 7.153e-02, -1.867e-02, 1.909e-01, -5.238e-02, -1.732e-01, -3.643e-02, -2.979e-01, 1.401e-02, -3.762e-02, -1.296e-02, -1.548e-01, 2.350e-02, -3.596e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.871e-02, 4.893e-02, -1.365e-03, 4.432e-02, -1.267e-02, 2.163e-01, -3.744e-02, -1.988e-01, 8.269e-03, 1.788e-02, -2.171e-03, -3.139e-02, 3.703e-03, -2.870e-02, -2.604e-03, 2.821e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(-8.744e-03, 5.322e-02, -2.030e-03, 5.066e-02, -1.380e-02, 1.890e-01, -4.211e-02, -1.832e-01, -5.762e-03, -1.223e-01, 7.694e-03, -2.437e-02, -2.320e-03, -9.447e-02, 6.421e-03, -2.418e-03), r2);\n\tr0 = MulAdd(s0_1_0, M4(-7.853e-03, 5.859e-03, -1.972e-02, -1.514e-02, -6.588e-03, 6.406e-04, -8.644e-03, -9.353e-04, 1.215e-01, -2.025e-02, 1.719e-01, -2.262e-02, -6.103e-02, 4.662e-03, 2.335e-02, 1.275e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(-9.859e-04, 1.120e-02, -5.238e-02, -4.448e-03, -7.253e-03, 2.076e-03, 1.600e-03, 3.820e-03, -4.480e-04, 1.353e-02, -5.193e-02, -2.576e-03, -5.464e-04, 1.758e-03, 1.294e-02, -9.923e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(-7.281e-04, 1.188e-02, -3.573e-02, -6.660e-03, -4.438e-03, 2.159e-03, -1.708e-03, 3.255e-03, 5.566e-02, -4.250e-03, 5.721e-02, -1.273e-02, -2.723e-02, 5.208e-03, 1.986e-02, -2.325e-03), r2);\n\tr0 = MulAdd(s0_1_1, M4(-3.559e-03, -2.249e-02, 8.227e-02, 1.071e-01, -5.913e-03, -1.518e-02, 9.063e-03, 2.123e-03, 9.493e-02, 2.124e-01, -3.580e-01, 2.205e-01, -9.253e-02, -1.162e-01, 3.604e-01, 2.686e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-4.645e-03, -3.023e-02, 1.233e-01, 6.271e-02, -1.219e-02, -1.716e-02, 8.412e-03, 4.951e-03, 2.881e-01, 6.324e-02, -1.317e-01, -1.326e-01, -1.274e-01, -4.386e-02, 3.799e-01, 2.666e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-4.944e-03, -2.414e-02, 9.790e-02, 7.098e-02, -1.133e-02, -1.509e-02, 1.257e-02, -1.326e-03, 1.655e-01, 1.211e-01, -2.271e-01, 3.550e-02, -9.406e-02, -7.349e-02, 3.314e-01, 2.499e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(-5.433e-03, -1.814e-03, -5.437e-03, -3.936e-02, -6.876e-03, -1.689e-02, 1.337e-02, 2.806e-02, 3.829e-02, -8.765e-02, 5.229e-03, -2.568e-01, 3.401e-02, 6.517e-02, -1.455e-02, 3.408e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-2.054e-03, -4.814e-03, -1.070e-02, -1.353e-02, -6.565e-03, -1.737e-02, 2.317e-02, 4.102e-02, -7.593e-03, 8.439e-02, 5.512e-03, 1.008e-01, 6.961e-04, -3.070e-02, -2.415e-03, 5.842e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-5.188e-03, -3.672e-03, -8.543e-03, -2.601e-02, -4.848e-03, -1.591e-02, 1.740e-02, 3.796e-02, 9.355e-03, -1.150e-02, 4.803e-03, -7.311e-02, 1.548e-02, 2.101e-02, -2.166e-03, 4.166e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(-2.937e-03, -2.699e-03, 5.213e-03, 3.087e-03, 8.634e-04, 3.692e-04, -8.696e-04, -1.230e-03, 2.045e-02, 3.540e-03, 6.616e-02, -1.037e-02, -9.965e-03, -1.553e-03, -2.841e-02, 6.177e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(-3.560e-03, -1.530e-03, -4.897e-04, 2.963e-03, -3.156e-04, -7.019e-04, -4.349e-03, -1.829e-03, 3.168e-03, 2.477e-03, 6.357e-03, 4.932e-03, -9.437e-04, 6.672e-05, -6.886e-04, -8.661e-04), r1);\n\tr2 = MulAdd(s0_2_0, M4(-2.654e-03, -1.131e-03, 3.061e-03, 3.880e-03, -5.153e-04, -1.163e-03, -2.923e-03, -1.784e-03, 9.331e-03, 2.525e-03, 3.285e-02, -4.008e-03, -4.681e-03, -8.504e-04, -1.364e-02, 1.436e-03), r2);\n\tr0 = MulAdd(s0_2_1, M4(-1.176e-03, 2.401e-03, -7.210e-03, -4.414e-03, 3.920e-04, 4.074e-03, -4.163e-03, 1.820e-04, -2.228e-02, 1.665e-02, 9.595e-02, 1.693e-01, 6.012e-03, -9.319e-03, -5.848e-02, -7.561e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.133e-03, -2.866e-03, -1.883e-03, -3.280e-03, 9.823e-04, 2.633e-03, -2.234e-03, -3.719e-03, -4.587e-04, 8.403e-03, 1.399e-01, 7.983e-02, -1.846e-03, -6.363e-03, -7.548e-02, -3.821e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.263e-03, -1.323e-03, -3.777e-03, -4.151e-03, 2.384e-03, 4.154e-03, -1.898e-03, -5.803e-04, -1.079e-02, 9.122e-03, 9.692e-02, 1.086e-01, 3.145e-03, -5.543e-03, -5.565e-02, -4.896e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(-2.368e-03, 1.092e-04, -2.087e-03, 1.201e-03, 3.696e-03, 4.056e-04, -2.559e-04, -6.398e-03, 1.044e-02, -1.100e-03, -4.713e-03, -4.260e-02, -2.140e-03, 9.309e-05, 6.975e-03, 1.464e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-9.231e-04, -5.455e-04, -2.037e-03, -3.532e-03, -6.467e-04, -3.532e-04, 2.616e-04, -1.863e-03, 3.581e-03, 1.384e-02, 1.700e-03, 4.360e-02, -9.289e-04, -7.030e-03, 2.930e-03, -2.242e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.323e-03, -6.601e-04, -2.806e-03, -1.442e-03, 9.938e-04, 3.799e-04, 6.880e-05, -3.430e-03, 5.654e-03, 4.994e-03, -3.728e-03, -7.251e-03, -6.759e-04, -1.833e-03, 5.183e-03, 3.562e-04), r2);\n\tr0 = MulAdd(s1_0_0, M4(1.067e-01, 1.064e-02, -9.063e-03, -1.991e-02, -1.464e-01, 1.634e-03, -2.669e-03, 2.365e-02, -8.442e-02, 6.207e-05, -7.602e-03, 8.206e-03, 1.282e-01, 7.887e-03, 4.575e-03, -3.235e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-2.027e-02, 4.521e-04, -8.274e-03, 3.680e-03, -5.634e-03, 3.615e-03, 6.391e-03, 1.615e-03, -1.456e-02, -1.202e-03, 2.240e-03, 3.401e-03, 7.371e-04, 6.666e-03, -3.679e-03, 9.365e-04), r1);\n\tr2 = MulAdd(s1_0_0, M4(4.384e-02, 6.352e-03, -7.506e-03, -6.714e-03, -7.447e-02, 9.225e-04, 2.377e-03, 1.087e-02, -4.089e-02, -9.063e-05, 1.087e-03, 3.518e-03, 5.837e-02, 4.967e-03, -1.704e-03, -1.382e-02), r2);\n\tr0 = MulAdd(s1_0_1, M4(3.105e-02, 1.189e-01, -2.006e-02, 2.241e-02, -1.910e-02, -1.421e-01, 1.133e-02, -1.767e-02, -4.928e-02, -1.756e-01, 9.529e-03, -1.207e-03, 1.392e-01, 1.608e-01, 2.716e-02, 3.624e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-2.021e-02, -9.009e-02, -4.349e-03, 1.652e-02, -1.872e-02, 6.519e-02, -4.739e-03, -9.918e-03, 1.153e-01, 2.586e-02, -5.111e-03, -8.558e-03, 2.471e-02, 3.022e-02, 2.619e-02, 2.620e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(5.245e-03, 1.505e-02, -1.126e-02, 1.858e-02, -1.181e-02, -3.251e-02, 3.450e-03, -9.436e-03, 3.327e-02, -6.629e-02, 3.095e-03, 1.543e-03, 6.764e-02, 8.362e-02, 1.680e-02, 1.048e-02), r2);\n\tr0 = MulAdd(s1_0_2, M4(2.852e-03, 1.756e-03, -7.732e-04, 2.153e-03, -3.785e-03, 2.129e-03, 2.040e-04, -2.192e-03, 3.452e-03, -8.097e-03, 4.310e-03, 7.817e-03, 2.191e-02, 1.899e-01, -1.703e-02, 1.587e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(6.241e-03, -1.120e-02, 2.323e-04, 3.808e-03, 6.822e-04, -1.257e-03, 1.309e-04, -3.293e-03, -1.793e-03, 3.333e-02, 3.697e-04, 1.337e-02, -1.422e-02, -5.500e-02, 4.176e-03, 1.072e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(3.154e-03, -5.110e-03, -5.701e-04, 1.997e-03, -1.159e-03, -1.273e-04, 3.928e-04, -3.263e-03, -4.427e-03, 4.453e-03, -1.738e-03, 5.407e-03, 1.228e-03, 6.721e-02, -6.214e-03, 8.765e-03), r2);\n\tr0 = MulAdd(s1_1_0, M4(7.107e-02, -1.213e-02, 1.665e-01, 3.448e-02, -9.596e-02, -5.542e-03, -2.705e-01, -4.676e-02, 3.342e-03, -8.814e-03, -1.077e-01, -2.060e-02, 7.056e-02, -1.879e-02, 1.353e-01, -1.620e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.597e-01, -8.387e-03, 7.740e-02, -9.432e-04, -2.730e-01, -2.836e-02, -1.665e-01, -1.498e-02, -1.052e-01, -6.273e-03, -9.595e-02, -6.820e-03, 1.544e-02, 1.267e-02, 4.452e-02, 7.309e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.101e-01, -1.016e-02, 1.121e-01, 1.487e-02, -1.734e-01, -1.352e-02, -2.089e-01, -2.606e-02, -2.997e-02, -2.109e-03, -8.046e-02, -5.588e-03, 3.330e-02, -4.331e-03, 8.079e-02, -5.704e-03), r2);\n\tr0 = MulAdd(s1_1_1, M4(-2.666e-01, 1.023e-01, 2.864e-02, -2.095e-01, 5.168e-02, 3.975e-01, -2.451e-02, 5.073e-02, 1.997e-01, 1.015e-03, 6.006e-02, -2.914e-01, -3.306e-01, -9.131e-02, -4.190e-01, -1.896e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.655e-01, 3.391e-01, -1.467e-02, -3.662e-01, 2.655e-02, 2.261e-01, -6.696e-03, 2.666e-01, 6.039e-02, -1.872e-01, 2.823e-01, -1.392e-01, -1.023e-01, 5.420e-02, 6.333e-03, 3.252e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-1.893e-01, 1.968e-01, 6.027e-03, -2.588e-01, 2.941e-02, 2.822e-01, -1.162e-02, 1.401e-01, 1.135e-01, -7.820e-02, 1.499e-01, -1.963e-01, -1.874e-01, -8.263e-03, -1.890e-01, 1.479e-01), r2);\n\tr0 = MulAdd(s1_1_2, M4(-9.908e-03, -5.994e-02, -6.173e-03, 1.122e-02, 1.802e-03, -3.177e-03, -2.270e-03, 1.581e-02, 1.657e-02, 1.694e-01, -1.089e-02, 1.601e-02, 6.317e-03, 7.739e-03, 1.035e-02, 4.150e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-9.912e-04, -3.095e-02, -3.423e-03, -1.444e-02, -2.638e-03, -4.483e-03, -1.770e-04, 1.209e-03, 8.403e-03, 5.119e-02, -3.925e-03, 6.751e-02, -1.106e-02, -1.558e-01, -1.131e-02, -1.561e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(-2.988e-03, -4.309e-02, -4.810e-03, -1.960e-03, 9.499e-04, -1.540e-03, 2.154e-04, 8.122e-03, 6.489e-03, 9.228e-02, -1.184e-02, 2.628e-02, 2.067e-03, -5.991e-02, -1.384e-04, -4.662e-02), r2);\n\tr0 = MulAdd(s1_2_0, M4(5.723e-03, 1.760e-03, -1.095e-02, -3.131e-03, -5.622e-03, -3.335e-03, 2.607e-02, 1.063e-02, 4.083e-03, -1.441e-03, 3.182e-02, 3.697e-03, -4.013e-03, 2.450e-03, 2.379e-02, -5.051e-04), r0);\n\tr1 = MulAdd(s1_2_0, M4(2.916e-03, -2.862e-03, 4.800e-02, 1.229e-02, 5.789e-03, 1.072e-02, -1.086e-01, -3.053e-03, 2.314e-03, 3.017e-04, -3.285e-02, -1.999e-03, 2.850e-03, 2.674e-03, -1.371e-03, -1.186e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(4.714e-03, -1.273e-03, 1.571e-02, 3.857e-03, 3.799e-04, 4.525e-03, -3.832e-02, 2.784e-03, 1.533e-03, -8.595e-04, 2.166e-03, 4.686e-04, -4.530e-03, 1.610e-03, 7.018e-03, -1.611e-03), r2);\n\tr0 = MulAdd(s1_2_1, M4(3.992e-02, 1.054e-02, -3.083e-02, -5.205e-02, -2.951e-02, 1.461e-03, 1.288e-02, 2.241e-01, -2.692e-02, -1.000e-02, 1.062e-01, 6.421e-02, -4.201e-02, -3.221e-02, 3.333e-02, 3.674e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.176e-02, -3.493e-03, 2.257e-02, 5.164e-02, -3.127e-03, -5.444e-03, 1.444e-02, 3.036e-02, 8.882e-03, 9.690e-03, -3.492e-02, -7.251e-02, 1.800e-03, 1.598e-02, -1.072e-01, -6.677e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.996e-02, 2.188e-03, -8.121e-03, -3.276e-03, -1.307e-02, -1.221e-03, 1.041e-02, 1.199e-01, -8.511e-03, -4.760e-04, 3.479e-02, 2.108e-03, -1.702e-02, -6.927e-03, -2.517e-02, -1.071e-02), r2);\n\tr0 = MulAdd(s1_2_2, M4(5.616e-03, 8.098e-03, -1.452e-02, -2.944e-02, 1.328e-03, -3.718e-03, -8.650e-06, -1.776e-02, -1.076e-02, 1.052e-04, 1.837e-02, 1.228e-01, -2.496e-02, -7.436e-04, 8.760e-03, 8.761e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(3.215e-04, -5.610e-03, -7.334e-03, 2.798e-03, 3.775e-04, 1.112e-03, -1.469e-03, -1.632e-03, 1.675e-03, -8.123e-04, 8.789e-03, -1.283e-03, 1.028e-02, -9.428e-03, 6.587e-04, -5.762e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(1.239e-03, -2.865e-04, -9.675e-03, -1.420e-02, 1.509e-03, -1.457e-03, 1.356e-04, -7.448e-03, -5.003e-03, -3.382e-03, 9.772e-03, 5.164e-02, -4.776e-03, -2.419e-03, 6.755e-03, 2.141e-02), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-6.438e-03, -3.129e-03, 3.253e-03, 3.653e-03, -2.017e-01, -5.363e-04, 2.255e-03, 4.920e-02, 1.602e-02, -5.146e-03, 1.079e-02, -1.125e-03, -6.762e-02, 2.322e-02, -2.198e-02, 2.321e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(2.567e-04, 2.390e-03, 2.647e-03, 2.217e-03, 7.122e-02, -7.139e-03, 1.861e-02, -8.215e-03, 8.965e-03, 2.026e-03, 4.022e-03, -3.170e-04, 3.078e-02, 4.808e-03, 2.251e-02, -2.470e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-3.469e-03, 1.316e-04, 2.780e-03, 3.323e-03, -6.790e-02, -6.113e-03, 5.470e-03, 1.591e-02, 9.232e-03, -2.416e-03, 6.094e-03, -1.086e-03, -2.378e-02, 1.293e-02, -4.639e-03, 1.025e-02), r2);\n\tr0 = MulAdd(s0_0_1, M4(4.665e-03, 1.185e-03, -2.128e-03, -4.327e-03, 4.019e-02, -2.307e-01, 2.951e-02, -4.841e-02, 1.475e-02, 5.783e-02, 2.280e-03, -1.834e-03, 2.427e-01, 6.166e-02, -1.520e-02, -1.941e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.962e-03, 2.317e-04, -2.264e-03, -2.183e-03, 2.752e-02, 1.039e-01, 1.454e-02, 1.056e-02, 2.932e-02, 4.871e-02, 4.118e-03, -3.983e-03, -8.914e-02, 2.783e-02, -3.420e-03, 1.517e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.275e-03, -1.492e-03, -2.466e-03, -3.727e-03, 3.229e-02, -6.187e-02, 1.995e-02, -1.808e-02, 1.547e-02, 4.924e-02, 2.269e-03, -5.053e-03, 7.887e-02, 3.527e-02, -6.271e-03, -2.472e-03), r2);\n\tr0 = MulAdd(s0_0_2, M4(3.796e-03, 4.292e-03, -1.964e-04, 2.483e-03, 6.634e-03, 2.477e-02, 9.533e-03, 1.168e-02, 2.601e-05, 2.418e-04, 3.323e-04, -2.470e-03, -2.570e-02, 7.300e-02, -5.954e-03, -2.393e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(8.873e-06, -3.227e-03, 2.023e-03, 1.632e-03, -1.073e-03, 2.706e-02, -3.603e-03, 1.045e-02, -7.377e-03, 1.082e-02, -1.619e-03, -5.906e-03, 1.631e-02, -3.529e-02, 1.687e-04, -1.408e-04), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.549e-03, 1.521e-03, 1.642e-03, 2.491e-03, 1.661e-03, 1.834e-02, 2.850e-03, 9.765e-03, -2.417e-03, 6.816e-03, -2.642e-04, -3.060e-03, -3.650e-03, 1.860e-02, -1.705e-03, -8.120e-03), r2);\n\tr0 = MulAdd(s0_1_0, M4(-3.532e-02, -8.850e-03, -2.402e-02, 1.283e-02, -1.807e-01, 4.574e-02, -1.902e-01, 4.358e-02, 1.814e-02, 1.631e-02, 6.161e-02, -4.501e-03, -7.760e-02, 2.654e-02, -1.223e-01, 2.046e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(7.105e-02, -6.195e-03, -1.009e-02, 6.083e-04, 6.307e-02, -1.583e-02, 7.203e-02, -1.340e-02, 9.301e-02, 2.213e-02, 5.842e-02, -1.400e-02, -1.662e-03, -1.457e-02, 2.949e-02, -7.236e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.914e-02, -3.988e-03, -1.154e-02, 8.803e-03, -5.738e-02, 1.516e-02, -5.701e-02, 1.345e-02, 4.508e-02, 1.623e-02, 5.525e-02, -9.682e-03, -3.580e-02, 5.084e-03, -5.105e-02, 3.810e-03), r2);\n\tr0 = MulAdd(s0_1_1, M4(2.783e-01, 7.422e-02, 3.727e-02, -3.920e-02, 1.869e-01, 5.431e-02, 5.243e-01, 3.093e-01, 1.884e-01, -5.760e-01, 3.151e-03, 1.622e-01, -8.949e-02, -2.881e-01, 3.975e-01, -1.068e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(2.056e-01, 2.725e-01, 1.213e-02, -4.036e-03, -1.935e-01, 6.665e-02, -2.618e-01, 9.070e-02, 1.675e-01, -5.959e-01, 1.328e-02, 1.406e-01, 3.823e-02, 2.397e-02, -7.594e-02, 4.867e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.241e-01, 1.558e-01, 1.923e-02, -1.903e-02, -1.027e-02, 4.672e-02, 1.234e-01, 1.778e-01, 1.646e-01, -5.387e-01, 1.131e-02, 1.353e-01, -2.764e-02, -1.176e-01, 1.567e-01, -3.678e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(1.334e-02, 1.929e-01, -1.202e-02, 2.924e-02, -6.421e-02, -1.978e-01, 9.867e-03, 5.629e-02, 6.940e-03, 6.274e-02, 8.640e-03, -1.737e-02, -3.281e-02, 3.268e-02, -2.201e-02, 2.437e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-3.033e-03, 1.440e-02, 9.754e-04, 9.234e-03, 1.830e-02, -6.172e-03, 1.207e-02, -1.179e-02, 2.750e-03, 4.090e-02, 4.852e-03, 1.537e-02, 3.847e-04, 1.971e-03, 5.628e-03, -5.065e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(3.400e-03, 9.692e-02, -5.493e-03, 1.449e-02, -1.667e-02, -8.912e-02, 1.122e-02, 2.570e-02, 2.193e-03, 4.944e-02, 6.592e-03, 1.498e-03, -1.271e-02, 1.869e-02, -7.319e-03, 9.400e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(-5.618e-04, -1.863e-03, -1.023e-01, -6.906e-03, -2.175e-02, -7.190e-03, -1.029e-01, 1.037e-02, 6.245e-03, -7.128e-04, 1.608e-02, -1.019e-03, 1.047e-02, -3.112e-03, -9.771e-03, 4.571e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.500e-03, -4.053e-03, -1.006e-02, 2.632e-02, -5.412e-03, -7.762e-03, 2.534e-02, -3.852e-03, -2.475e-03, -4.035e-03, 7.104e-02, -1.047e-03, -2.196e-03, -2.269e-03, -3.515e-03, 3.828e-04), r1);\n\tr2 = MulAdd(s0_2_0, M4(-2.798e-03, -4.837e-03, -5.409e-02, 1.026e-02, -8.384e-03, -6.636e-03, -3.577e-02, 3.961e-03, 1.546e-03, -7.711e-04, 4.453e-02, -4.497e-04, 3.808e-03, -3.207e-03, -5.384e-03, 9.354e-04), r2);\n\tr0 = MulAdd(s0_2_1, M4(1.463e-02, -4.398e-03, -1.654e-01, -3.337e-01, 7.349e-02, 2.045e-02, -1.479e-01, -2.227e-01, 6.761e-04, 6.156e-03, 1.774e-03, -1.353e-01, 1.211e-02, 3.186e-02, -1.228e-01, -4.846e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-2.042e-03, -5.351e-03, -2.785e-01, -2.646e-01, -5.965e-03, -3.058e-02, 7.056e-02, 5.533e-02, -8.575e-03, 9.911e-03, -3.260e-02, -5.622e-02, -1.021e-02, 1.122e-03, 2.228e-02, 2.659e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(7.096e-03, -1.071e-03, -2.102e-01, -2.861e-01, 3.022e-02, -3.165e-03, -3.795e-02, -7.544e-02, -4.214e-03, 7.974e-03, -1.012e-02, -8.911e-02, 2.044e-03, 1.317e-02, -4.482e-02, -8.578e-03), r2);\n\tr0 = MulAdd(s0_2_2, M4(-2.228e-02, -1.859e-04, 2.460e-02, 8.291e-02, 4.829e-02, 1.483e-02, -3.027e-02, -1.816e-01, -5.299e-03, -5.910e-03, 1.538e-02, 3.918e-02, 1.437e-02, 1.461e-02, -1.933e-02, -6.909e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-2.631e-03, 4.116e-03, 1.764e-02, -4.652e-02, -1.205e-02, 1.407e-02, -1.574e-02, 4.112e-02, -1.371e-03, 3.328e-03, 9.063e-03, 5.020e-04, -5.089e-03, -1.130e-02, 5.609e-03, 1.011e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.017e-02, 1.185e-03, 1.872e-02, 1.647e-02, 1.541e-02, 1.327e-02, -1.798e-02, -6.567e-02, -1.809e-03, -9.195e-05, 1.030e-02, 1.898e-02, 4.266e-03, 2.225e-03, -5.055e-03, -2.904e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(-2.550e-02, 5.091e-04, 3.334e-03, 3.930e-03, 2.203e-02, 4.908e-04, -1.761e-02, -6.791e-03, -1.041e-02, -7.519e-03, -1.214e-03, 5.281e-03, 8.700e-03, -7.677e-03, -2.182e-03, 3.167e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(7.880e-03, -5.141e-03, 9.778e-03, -2.878e-03, 1.800e-02, -5.652e-03, -1.828e-02, -6.327e-03, -2.156e-03, -2.737e-03, -4.828e-03, -9.137e-04, 3.492e-03, -5.653e-03, -6.866e-03, 2.424e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(-8.737e-03, -9.925e-04, 5.803e-03, 1.138e-04, 1.668e-02, -4.179e-03, -2.112e-02, -5.565e-03, -7.279e-03, -4.431e-03, -2.735e-03, 1.998e-03, 6.930e-03, -4.098e-03, -1.704e-03, 4.258e-03), r2);\n\tr0 = MulAdd(s1_0_1, M4(-1.561e-02, -5.126e-02, 2.111e-02, 1.099e-02, 6.784e-03, 4.434e-03, 2.181e-02, -3.423e-03, 1.928e-03, 5.449e-02, 3.754e-03, -9.827e-03, 3.243e-02, 4.915e-02, -1.540e-02, -1.947e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-4.144e-02, 2.721e-03, 1.017e-02, 2.033e-02, -2.459e-02, -1.086e-02, 2.900e-02, -3.421e-03, -1.903e-02, 4.871e-02, 5.432e-03, -1.252e-03, 3.822e-02, 4.675e-02, -2.033e-02, -1.595e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-3.379e-02, -2.796e-02, 9.139e-03, 1.089e-02, -1.014e-02, -1.249e-02, 2.313e-02, -6.400e-03, -1.313e-02, 5.300e-02, 5.733e-03, -3.410e-03, 3.973e-02, 4.653e-02, -1.565e-02, -1.525e-02), r2);\n\tr0 = MulAdd(s1_0_2, M4(-1.709e-03, -3.888e-04, 3.749e-03, 1.889e-02, -2.049e-03, 2.887e-04, -2.150e-03, -1.285e-02, -4.251e-04, -1.007e-02, 3.971e-03, 8.721e-04, 1.196e-02, 4.608e-03, -2.113e-03, 3.348e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(-6.689e-03, -4.213e-02, 6.249e-03, 1.278e-02, -5.518e-04, -6.555e-04, -1.236e-03, -7.863e-03, 8.934e-04, -8.033e-03, 3.571e-03, -2.951e-03, 1.346e-02, 4.828e-03, 3.003e-04, -3.308e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(-2.265e-03, -2.263e-02, 4.575e-03, 1.121e-02, 2.247e-03, 4.232e-03, 1.164e-03, -5.619e-03, -2.167e-04, -1.095e-02, 3.656e-03, -4.380e-04, 1.222e-02, 6.273e-03, 6.363e-04, 1.412e-03), r2);\n\tr0 = MulAdd(s1_1_0, M4(1.577e-02, 1.781e-03, -4.267e-02, 7.289e-03, -1.753e-02, -4.919e-03, 1.186e-02, 2.276e-02, 2.478e-02, -3.955e-03, 5.448e-03, -1.369e-02, -3.318e-04, -3.777e-03, -1.274e-02, -1.587e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.385e-03, -2.143e-03, -1.015e-02, 1.353e-02, -1.704e-02, -4.402e-03, 6.804e-03, 2.789e-02, 3.034e-02, -5.129e-03, 1.351e-02, -2.255e-03, -2.218e-02, -1.975e-03, -2.021e-02, 8.941e-05), r1);\n\tr2 = MulAdd(s1_1_0, M4(4.004e-03, -1.815e-03, -2.952e-02, 8.337e-03, -3.008e-02, -1.187e-02, -2.518e-03, 1.883e-02, 3.186e-02, -3.581e-03, 1.310e-02, -7.500e-03, -1.118e-02, -3.464e-03, -1.436e-02, -7.637e-03), r2);\n\tr0 = MulAdd(s1_1_1, M4(2.075e-01, 1.823e-01, -2.104e-01, -3.031e-01, 6.919e-02, 4.745e-03, 2.577e-01, -4.189e-01, -3.263e-01, 1.558e-01, -2.251e-01, 3.207e-01, -3.529e-01, -6.909e-02, 2.763e-01, 2.103e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(2.280e-01, 1.707e-01, -2.588e-01, -2.744e-01, 1.018e-01, 5.474e-03, 3.099e-01, -4.999e-01, -3.327e-01, 1.891e-01, -2.764e-01, 3.176e-01, -3.816e-01, -9.350e-02, 3.389e-01, 2.038e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(2.031e-01, 1.625e-01, -2.183e-01, -2.667e-01, 9.125e-02, 1.031e-03, 2.608e-01, -4.297e-01, -3.018e-01, 1.565e-01, -2.388e-01, 2.900e-01, -3.447e-01, -7.788e-02, 2.822e-01, 1.928e-01), r2);\n\tr0 = MulAdd(s1_1_2, M4(-1.662e-03, 2.843e-02, -1.402e-03, 1.376e-02, 7.504e-03, 5.855e-03, -6.514e-03, 2.192e-02, 2.474e-02, 4.379e-02, 1.056e-02, -3.479e-02, -3.202e-03, -2.391e-02, 2.906e-03, 1.883e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(1.115e-02, 3.235e-02, -1.644e-03, -3.302e-02, -9.341e-04, 1.320e-02, -9.652e-03, 3.873e-02, 1.016e-02, 4.263e-02, 9.917e-03, -2.149e-02, -1.317e-02, -1.885e-02, -3.641e-03, 5.383e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(5.598e-03, 3.699e-02, 2.239e-03, -8.101e-03, 5.083e-03, 1.790e-02, -3.740e-03, 4.335e-02, 1.393e-02, 4.068e-02, 1.006e-02, -2.963e-02, -7.864e-03, -2.619e-02, -6.784e-04, 3.503e-02), r2);\n\tr0 = MulAdd(s1_2_0, M4(-3.263e-03, 3.533e-03, 2.200e-02, 1.389e-03, -3.910e-03, 4.546e-03, -2.472e-02, -3.422e-03, 4.248e-03, -6.435e-04, 1.216e-02, 3.916e-03, 1.246e-03, 9.879e-05, -1.347e-02, -6.114e-04), r0);\n\tr1 = MulAdd(s1_2_0, M4(2.452e-03, 4.664e-03, 1.372e-02, -5.297e-03, -1.344e-03, 6.733e-03, -1.245e-02, 2.167e-03, -9.286e-04, 7.782e-04, 1.655e-02, 2.166e-03, 2.782e-03, 5.818e-04, -1.947e-02, 3.934e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.216e-03, 4.256e-03, 1.870e-02, -1.494e-03, -1.727e-03, 3.618e-03, -1.980e-02, -2.073e-03, 4.142e-03, 1.705e-03, 1.805e-02, 5.532e-03, 2.529e-03, 1.313e-03, -1.462e-02, 2.056e-03), r2);\n\tr0 = MulAdd(s1_2_1, M4(-7.758e-03, -6.337e-03, 2.215e-02, 5.267e-02, -4.955e-03, -1.524e-02, -2.122e-03, 3.507e-04, 1.512e-02, 2.573e-02, -7.046e-02, -3.521e-03, 8.601e-03, 5.231e-03, -5.413e-02, -1.970e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-6.544e-03, -6.510e-03, 3.414e-02, 4.065e-02, -5.162e-03, -9.810e-03, 3.372e-03, 1.295e-02, 4.820e-03, 1.755e-02, -6.812e-02, 1.641e-02, 4.348e-03, 5.625e-03, -6.570e-02, -2.815e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-4.860e-03, -4.474e-03, 3.325e-02, 5.093e-02, -1.495e-03, -1.111e-02, 3.652e-03, 4.700e-03, 9.101e-03, 2.150e-02, -6.213e-02, 7.515e-03, 6.880e-03, 4.125e-03, -6.013e-02, -2.434e-02), r2);\n\tr0 = MulAdd(s1_2_2, M4(1.142e-04, -7.212e-04, -5.092e-04, -2.046e-03, -3.479e-03, -2.587e-03, 3.393e-03, 8.602e-03, -1.251e-02, -9.360e-03, 1.481e-02, 2.017e-02, -6.208e-03, 4.036e-03, -1.107e-03, 1.123e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(8.721e-04, 1.955e-03, -9.949e-04, 7.010e-03, -5.746e-04, -3.210e-04, 2.500e-03, 1.078e-02, -2.390e-03, -2.847e-03, 9.798e-03, 2.431e-03, 3.818e-03, 4.448e-03, -2.957e-03, -1.994e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(8.963e-04, 1.964e-03, 2.530e-04, 5.079e-03, -1.868e-04, 1.616e-03, 4.867e-03, 1.541e-02, -6.899e-03, -6.913e-03, 8.981e-03, 1.055e-02, -2.767e-04, 4.561e-03, -1.626e-03, -7.686e-03), r2);\n\tfloat2 opt = float2(GetOutputPt()), fpos = (float2(gxy) + 0.5) * opt;\n\tOUTPUT[gxy + int2(0, 0)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(0.0, 0.0) * opt, 0).rgb + MF3(r0.x, r1.x, r2.x)), 1.0);\n\tOUTPUT[gxy + int2(1, 0)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(1.0, 0.0) * opt, 0).rgb + MF3(r0.y, r1.y, r2.y)), 1.0);\n\tOUTPUT[gxy + int2(0, 1)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(0.0, 1.0) * opt, 0).rgb + MF3(r0.z, r1.z, r2.z)), 1.0);\n\tOUTPUT[gxy + int2(1, 1)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(1.0, 1.0) * opt, 0).rgb + MF3(r0.w, r1.w, r2.w)), 1.0);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy2/CuNNy-4x24-NVL.hlsl",
    "content": "// CuNNy 4x24 - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-04x24\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, x, y) t.SampleLevel(SP, pos + float2(x, y) * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T7;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T8;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T9;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T10;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T11;\n\n//!PASS 1\n//!DESC in (3x24)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT T0, T1, T2, T3, T4, T5\n\n#define L0(x, y) V3(O(INPUT, x, y).rgb)\n#define V3 MF3\n#define M3x4 MF3x4\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV3 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0;\n\tr0 = V4(4.601e-03, 1.374e-05, 2.911e-02, 5.045e-03);\n\tr1 = V4(1.906e-01, 1.406e-02, -2.473e-02, -1.711e-04);\n\tr2 = V4(3.670e-04, 1.667e-03, -1.476e-03, -2.538e-02);\n\tr3 = V4(-9.699e-05, 1.416e-02, 1.732e-02, 4.374e-04);\n\tr4 = V4(6.069e-03, -1.922e-04, -4.069e-03, 6.485e-03);\n\tr5 = V4(7.883e-03, -2.966e-04, 2.954e-01, -2.987e-04);\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M3x4(-1.177e-02, -2.027e-02, -7.724e-04, 4.341e-03, 2.758e-02, 3.641e-02, 2.423e-02, 5.619e-03, -9.000e-03, -1.484e-02, 4.196e-03, -1.283e-03), r0);\n\tr1 = MulAdd(s0_0_0, M3x4(2.832e-04, 8.771e-03, 8.715e-03, -5.340e-03, 8.802e-03, 8.784e-03, 3.943e-02, 2.668e-03, 9.141e-03, 9.607e-03, 1.091e-02, -1.859e-03), r1);\n\tr2 = MulAdd(s0_0_0, M3x4(4.416e-02, 1.634e-03, 1.549e-02, -1.024e-01, 8.914e-02, 1.839e-03, -8.387e-02, -3.723e-02, -1.280e-01, -2.493e-03, 3.784e-03, 2.165e-01), r2);\n\tr3 = MulAdd(s0_0_0, M3x4(5.239e-03, -1.028e-01, 1.015e-02, 1.148e-01, -1.128e-02, -8.431e-02, -5.552e-03, -9.263e-02, 4.829e-03, 1.938e-01, 1.321e-02, -1.935e-02), r3);\n\tr4 = MulAdd(s0_0_0, M3x4(-2.217e-03, -1.229e-02, 1.847e-02, 1.491e-02, 9.509e-03, -1.073e-01, -1.593e-02, 6.071e-02, -7.069e-03, 1.236e-01, -2.817e-03, -3.018e-03), r4);\n\tr5 = MulAdd(s0_0_0, M3x4(-1.495e-02, -4.113e-01, -1.114e-02, 3.250e-02, 1.786e-02, 2.960e-01, -9.424e-03, -1.204e-02, 8.730e-03, 1.121e-01, -2.877e-03, -1.519e-02), r5);\n\tr0 = MulAdd(s0_0_1, M3x4(3.295e-01, 1.004e-01, -1.436e-02, 6.133e-02, 5.723e-01, 2.190e-01, -3.394e-02, -8.154e-02, 1.466e-01, -3.227e-01, -1.694e-02, 1.430e-02), r0);\n\tr1 = MulAdd(s0_0_1, M3x4(1.420e-02, -5.086e-03, -2.246e-02, 1.483e-02, 1.650e-02, -2.243e-02, -1.061e-02, -2.326e-02, -2.748e-02, -4.875e-03, 1.059e-02, 1.227e-02), r1);\n\tr2 = MulAdd(s0_0_1, M3x4(-2.630e-02, -2.718e-01, -1.333e-01, -1.329e-01, -6.482e-02, -6.270e-01, -1.254e-01, -1.934e-01, 8.711e-02, -9.990e-02, -5.920e-02, -8.588e-01), r2);\n\tr3 = MulAdd(s0_0_1, M3x4(-3.866e-03, -1.503e-01, -4.956e-03, -5.172e-01, -9.067e-03, 6.277e-02, -2.178e-02, 3.525e-01, 1.046e-03, 1.747e-01, -1.574e-02, 1.557e-01), r3);\n\tr4 = MulAdd(s0_0_1, M3x4(-1.650e-02, 2.626e-02, -6.623e-02, -3.181e-02, -2.635e-02, 3.613e-01, 8.333e-02, 1.934e-02, 1.262e-02, -3.889e-01, -1.274e-02, 2.628e-02), r4);\n\tr5 = MulAdd(s0_0_1, M3x4(6.305e-03, -1.255e-01, -2.622e-02, -3.542e-02, -1.680e-02, 9.984e-02, 2.105e-02, -9.452e-04, -9.734e-04, 3.107e-02, -1.564e-02, 3.137e-02), r5);\n\tr0 = MulAdd(s0_0_2, M3x4(-6.620e-03, 1.986e-01, -9.060e-04, 1.168e-02, 1.741e-02, 3.055e-01, -2.694e-04, -1.175e-02, -1.653e-03, -5.033e-01, 1.080e-02, 5.976e-03), r0);\n\tr1 = MulAdd(s0_0_2, M3x4(-1.788e-02, 6.218e-03, 1.456e-02, -9.505e-03, 5.741e-03, 1.849e-02, -5.043e-02, 1.557e-02, 7.161e-03, -2.038e-02, -1.012e-02, -4.639e-03), r1);\n\tr2 = MulAdd(s0_0_2, M3x4(6.994e-02, -8.778e-03, 7.138e-03, -2.621e-02, 5.404e-02, 1.286e-02, -4.434e-02, -4.194e-02, -1.189e-01, -7.077e-03, -8.910e-03, 1.469e-01), r2);\n\tr3 = MulAdd(s0_0_2, M3x4(7.636e-03, -1.255e-02, 8.219e-03, -2.502e-02, -2.747e-02, -9.468e-02, 6.159e-03, 7.438e-03, 9.301e-03, 9.128e-02, -4.840e-03, 2.408e-02), r3);\n\tr4 = MulAdd(s0_0_2, M3x4(1.233e-02, 6.620e-02, -9.021e-03, -1.042e-02, -1.540e-02, -4.381e-02, 9.692e-03, -6.786e-02, 3.922e-03, -2.904e-02, -3.444e-03, -1.846e-02), r4);\n\tr5 = MulAdd(s0_0_2, M3x4(1.780e-03, 6.299e-02, -8.119e-03, 2.395e-02, 2.260e-03, -2.838e-02, 1.914e-02, -1.978e-02, -5.345e-03, -3.610e-02, -1.487e-02, -4.498e-03), r5);\n\tr0 = MulAdd(s0_1_0, M3x4(1.242e-02, -2.684e-02, -2.113e-02, 5.212e-02, -4.072e-02, -8.399e-02, -3.313e-02, -6.720e-02, 9.130e-03, 1.070e-01, -4.958e-04, 1.127e-02), r0);\n\tr1 = MulAdd(s0_1_0, M3x4(-6.697e-03, -1.677e-02, 6.273e-03, 5.646e-03, -8.668e-03, -1.613e-02, -1.123e-02, -6.752e-03, 5.993e-03, -1.462e-02, -3.937e-03, 7.189e-04), r1);\n\tr2 = MulAdd(s0_1_0, M3x4(1.264e-01, 2.841e-03, -5.412e-02, 1.653e-01, -2.759e-02, -8.226e-03, -5.831e-02, 9.813e-02, -1.086e-01, 1.533e-03, -2.845e-02, -2.471e-02), r2);\n\tr3 = MulAdd(s0_1_0, M3x4(-1.250e-02, 1.270e-01, 2.481e-02, 4.558e-01, 1.680e-02, 1.382e-01, 7.105e-02, -3.089e-01, 1.319e-02, -3.010e-01, -1.968e-02, -1.479e-01), r3);\n\tr4 = MulAdd(s0_1_0, M3x4(-2.408e-02, 9.966e-03, -4.888e-02, -5.505e-02, -1.767e-02, 2.081e-01, 4.968e-02, -2.932e-02, 8.441e-03, -2.173e-01, -3.608e-03, -6.261e-04), r4);\n\tr5 = MulAdd(s0_1_0, M3x4(2.679e-01, -3.584e-01, -2.166e-02, -8.097e-02, 6.270e-01, 2.657e-01, 5.053e-02, 1.003e-01, 1.352e-01, 9.824e-02, 3.053e-03, -3.191e-02), r5);\n\tr0 = MulAdd(s0_1_1, M3x4(-3.350e-01, -3.740e-01, 3.071e-02, -9.043e-01, -5.596e-01, -5.887e-01, 5.684e-01, 9.499e-01, -1.309e-01, 9.707e-01, 1.016e-03, -5.593e-02), r0);\n\tr1 = MulAdd(s0_1_1, M3x4(-9.204e-02, -2.742e-01, -2.929e-01, -3.917e-01, -2.296e-01, -4.689e-01, -4.756e-01, -4.541e-01, -1.072e-01, -7.419e-02, -9.531e-02, -1.860e-01), r1);\n\tr2 = MulAdd(s0_1_1, M3x4(-7.984e-01, 2.730e-01, 2.583e-01, 4.873e-02, -2.906e-01, 6.396e-01, 3.526e-01, 7.115e-03, 1.082e+00, 9.706e-02, 8.927e-02, 1.794e-01), r2);\n\tr3 = MulAdd(s0_1_1, M3x4(-2.609e-01, 4.581e-01, -1.635e-01, 7.688e-02, -5.665e-01, 1.519e-01, -3.016e-01, -8.862e-02, -1.431e-01, -9.463e-01, -7.060e-02, 1.797e-02), r3);\n\tr4 = MulAdd(s0_1_1, M3x4(2.473e-01, 1.155e-01, 7.691e-01, 2.394e-01, 2.764e-01, 4.092e-01, -8.027e-01, 3.171e-01, 5.091e-02, -5.455e-01, 4.353e-02, 8.863e-02), r4);\n\tr5 = MulAdd(s0_1_1, M3x4(-2.549e-01, 7.561e-01, -1.891e-01, 5.371e-01, -6.251e-01, -5.723e-01, -1.724e-01, -5.735e-01, -1.257e-01, -1.870e-01, 6.467e-02, 6.172e-02), r5);\n\tr0 = MulAdd(s0_1_2, M3x4(1.667e-02, 1.431e-01, -3.221e-03, 7.749e-02, -2.463e-02, 1.744e-01, -6.372e-02, -8.819e-02, -7.462e-03, -3.203e-01, -9.681e-03, 3.184e-03), r0);\n\tr1 = MulAdd(s0_1_2, M3x4(2.026e-03, 7.198e-02, 1.328e-01, 3.888e-01, 3.098e-02, 1.100e-01, 2.360e-01, 4.615e-01, 1.709e-02, 4.834e-02, 3.986e-02, 1.836e-01), r1);\n\tr2 = MulAdd(s0_1_2, M3x4(7.190e-02, 1.314e-02, 2.495e-03, 3.483e-02, -5.103e-03, -1.723e-02, -3.615e-03, 8.386e-02, -6.164e-02, 8.268e-03, 7.329e-03, -2.552e-02), r2);\n\tr3 = MulAdd(s0_1_2, M3x4(-4.127e-03, -1.250e-01, -4.635e-03, -6.269e-01, -1.097e-03, 2.718e-02, 1.417e-02, 4.214e-01, -8.080e-03, 2.270e-01, -1.408e-02, 1.976e-01), r3);\n\tr4 = MulAdd(s0_1_2, M3x4(-7.007e-02, -1.112e-01, -8.220e-02, -1.450e-01, -1.102e-02, -4.413e-01, 8.548e-02, -1.339e-01, -3.443e-02, 5.762e-01, -1.352e-03, -8.961e-02), r4);\n\tr5 = MulAdd(s0_1_2, M3x4(1.490e-04, 4.291e-02, -7.273e-03, -6.840e-03, -3.433e-03, -3.627e-02, 4.597e-02, 3.729e-03, -9.389e-03, -9.533e-03, -1.480e-02, -1.400e-03), r5);\n\tr0 = MulAdd(s0_2_0, M3x4(-8.235e-03, 1.945e-02, 7.938e-03, 4.298e-02, 9.497e-03, 2.548e-02, 4.324e-03, -3.675e-02, -4.481e-03, -4.572e-02, 3.067e-03, -8.904e-03), r0);\n\tr1 = MulAdd(s0_2_0, M3x4(-1.554e-03, -1.357e-02, -3.245e-02, -1.069e-03, -2.171e-02, -7.033e-03, -3.354e-02, -1.320e-03, 1.416e-02, 8.193e-03, -3.218e-03, 3.822e-03), r1);\n\tr2 = MulAdd(s0_2_0, M3x4(1.250e-02, -5.030e-03, -2.006e-02, 2.725e-04, 3.296e-02, -6.669e-04, -3.703e-02, 2.748e-02, -3.503e-02, 9.027e-04, -2.540e-02, -7.489e-02), r2);\n\tr3 = MulAdd(s0_2_0, M3x4(2.589e-01, -8.786e-02, 1.346e-01, -1.691e-02, 5.957e-01, -1.708e-02, 2.940e-01, 1.944e-02, 1.315e-01, 9.491e-02, 6.791e-02, -4.254e-05), r3);\n\tr4 = MulAdd(s0_2_0, M3x4(1.469e-02, 6.812e-03, -3.528e-02, 5.807e-03, 7.904e-03, 2.902e-02, 3.427e-02, -4.575e-02, -2.779e-03, -4.076e-02, 3.621e-03, 1.498e-02), r4);\n\tr5 = MulAdd(s0_2_0, M3x4(9.936e-03, 1.104e-02, 1.396e-02, -2.594e-01, -2.081e-02, -1.215e-03, -3.582e-02, 3.254e-01, 3.259e-03, -8.764e-03, -6.937e-03, -6.613e-02), r5);\n\tr0 = MulAdd(s0_2_1, M3x4(1.461e-02, -4.951e-02, 1.235e-02, 8.366e-02, -1.048e-04, 8.710e-03, -7.593e-02, -9.932e-02, -3.959e-03, 3.821e-02, -1.257e-02, 1.849e-02), r0);\n\tr1 = MulAdd(s0_2_1, M3x4(-1.651e-02, 6.523e-02, 7.878e-02, 1.745e-04, 6.860e-02, 7.092e-02, 1.140e-01, -6.541e-03, 1.706e-02, 7.783e-03, 3.503e-02, -1.022e-03), r1);\n\tr2 = MulAdd(s0_2_1, M3x4(2.206e-01, -7.031e-04, -8.384e-03, -8.055e-02, -4.598e-02, -6.625e-04, 3.609e-05, -1.517e-02, -1.926e-01, 3.314e-03, 3.588e-02, 4.993e-02), r2);\n\tr3 = MulAdd(s0_2_1, M3x4(5.024e-03, 1.113e-01, -6.773e-03, 4.674e-01, 6.594e-03, 6.523e-03, -5.233e-03, -2.860e-01, -4.040e-03, -1.554e-01, 4.152e-02, -1.846e-01), r3);\n\tr4 = MulAdd(s0_2_1, M3x4(-1.018e-01, -7.894e-02, -8.081e-02, -1.425e-01, -6.243e-02, -3.233e-01, 9.485e-02, -3.662e-01, -1.474e-02, 4.261e-01, -1.486e-02, -1.469e-01), r4);\n\tr5 = MulAdd(s0_2_1, M3x4(-1.182e-02, 1.126e-01, 1.740e-02, -2.018e-01, 2.978e-02, -8.372e-02, 2.553e-02, 1.788e-01, -1.306e-02, -3.338e-02, 5.824e-03, 9.962e-03), r5);\n\tr0 = MulAdd(s0_2_2, M3x4(-1.023e-02, 1.709e-03, -1.148e-02, 8.545e-03, -9.436e-04, -1.005e-01, 2.045e-02, -1.188e-02, 2.601e-03, 1.018e-01, 1.548e-02, 6.398e-03), r0);\n\tr1 = MulAdd(s0_2_2, M3x4(4.131e-04, 1.567e-01, 8.772e-02, -4.603e-04, -2.784e-02, 3.080e-01, 1.666e-01, 1.247e-02, -9.368e-03, 4.113e-02, 1.053e-02, -6.552e-03), r1);\n\tr2 = MulAdd(s0_2_2, M3x4(9.972e-02, -3.257e-03, 4.352e-03, 1.871e-02, 9.180e-02, 4.687e-04, -7.627e-04, 4.785e-03, -1.848e-01, -2.062e-03, -7.350e-03, -4.168e-02), r2);\n\tr3 = MulAdd(s0_2_2, M3x4(6.599e-03, -9.527e-02, 2.067e-02, 5.786e-02, -6.712e-03, -3.371e-03, -3.337e-02, -1.854e-02, -5.940e-03, 1.115e-01, 5.519e-03, -3.865e-02), r3);\n\tr4 = MulAdd(s0_2_2, M3x4(-2.011e-02, -2.588e-02, -1.553e-02, 1.293e-01, -1.428e-01, -9.253e-02, 1.703e-02, 2.477e-01, -2.103e-02, 1.019e-01, -3.487e-03, 1.272e-01), r4);\n\tr5 = MulAdd(s0_2_2, M3x4(-8.335e-04, -8.765e-02, 3.406e-02, -9.178e-03, -9.444e-03, 6.080e-02, -3.284e-02, -1.818e-03, 1.007e-02, 2.961e-02, -1.296e-02, 1.727e-02), r5);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT4[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT5[gxy] = r5;\n}\n\n//!PASS 2\n//!DESC conv1 (24x24)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2, T3, T4, T5\n//!OUT T6, T7, T8, T9, T10, T11\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n#define L4(x, y) V4(O(T4, x, y))\n#define L5(x, y) V4(O(T5, x, y))\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(4.661e-02, 8.256e-02, 8.482e-03, 9.529e-02, -3.468e-02, 3.724e-02, -1.963e-02, -7.257e-02, -1.866e-01, 1.650e-01, -4.744e-01, -8.761e-02, -1.304e-01, 2.564e-01, 1.432e-01, -1.550e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.217e-02, 1.794e-02, 3.377e-02, -1.355e-02, -2.185e-02, -1.326e-03, -6.428e-02, -3.627e-02, 2.129e-01, 1.412e-01, 1.571e-01, -1.422e-01, -6.909e-02, 1.866e-03, 3.777e-02, -3.786e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.022e-02, -4.283e-02, 5.268e-02, 2.991e-02, 5.539e-02, 5.261e-02, 2.563e-02, -7.076e-03, 1.480e-01, 1.464e-02, 6.552e-02, -3.981e-01, -3.519e-02, -7.090e-01, -5.338e-01, 5.191e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-2.876e-02, 7.476e-02, -3.043e-02, 9.995e-03, -1.804e-02, 7.550e-02, -6.548e-03, 1.746e-02, -3.644e-01, -1.682e-01, 1.793e-01, -2.115e-02, 1.574e-01, 4.148e-01, -1.242e-01, -8.358e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-1.815e-02, -9.531e-02, 8.576e-02, 8.335e-02, 9.912e-03, -6.467e-02, 4.246e-02, -6.161e-02, -3.106e-01, -1.133e-01, -1.162e-01, 2.677e-02, 5.046e-02, -2.118e-01, -2.058e-02, -1.916e-01), r4);\n\tr5 = MulAdd(s0_0_0, M4(-1.357e-02, 4.248e-05, -1.397e-02, 4.595e-03, 1.479e-02, 7.240e-03, -2.177e-02, 1.314e-02, -8.744e-02, 1.274e-02, -1.808e-01, 2.965e-01, 3.961e-02, 3.233e-03, 9.499e-02, -7.154e-02), r5);\n\tr0 = MulAdd(s0_0_1, M4(1.254e-02, -5.233e-02, -2.938e-02, -2.471e-01, -7.391e-02, -1.290e-01, 7.587e-03, 2.033e-02, -5.298e-02, -9.265e-02, 2.700e-01, 1.377e-01, -1.339e-02, -6.420e-02, -4.987e-02, 5.220e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(9.526e-02, 2.565e-02, -2.890e-01, -6.893e-01, -1.954e-02, -7.354e-02, 4.043e-03, 7.409e-02, 6.266e-01, 1.966e-01, 4.861e-01, 3.708e-01, -2.210e-02, 8.809e-01, 9.373e-02, 1.082e+00), r1);\n\tr2 = MulAdd(s0_0_1, M4(-4.938e-02, 7.015e-02, -1.946e-02, 5.314e-02, 3.407e-03, -2.091e-01, -3.207e-03, 8.245e-03, -2.500e-01, -1.012e-01, -2.333e-01, 2.261e-01, 1.768e-01, -1.406e-01, -9.192e-02, -9.648e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(9.831e-02, 4.705e-02, -2.666e-02, 4.578e-02, 1.027e-01, -1.343e-01, 6.343e-02, 1.059e-02, 3.887e-01, 1.551e-01, -1.488e-01, -5.837e-01, -2.219e-02, -3.227e-02, 2.894e-02, 2.149e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.705e-02, 7.457e-02, -4.309e-02, -8.166e-02, -3.971e-02, -8.917e-02, -1.167e-02, 1.098e-01, -5.109e-01, -9.409e-02, 4.701e-02, -3.742e-02, -1.421e-02, 6.982e-02, 4.216e-02, 9.258e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(1.360e-02, -1.998e-03, -7.202e-02, 2.535e-03, -4.776e-02, -5.029e-02, -1.343e-02, -3.910e-03, -4.810e-02, -2.231e-01, 3.560e-02, -1.093e-01, -3.447e-01, -2.240e-02, -3.420e-02, 5.872e-02), r5);\n\tr0 = MulAdd(s0_0_2, M4(4.666e-03, 3.286e-02, 1.017e-02, 1.009e-01, 3.022e-02, 9.150e-02, -6.389e-03, 1.226e-01, -3.449e-02, 1.244e-02, 2.045e-01, 3.028e-02, 3.141e-02, 4.336e-02, -4.627e-02, -1.787e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(6.262e-02, 2.851e-02, 2.010e-02, -7.449e-02, 3.116e-02, -1.467e-02, 1.979e-02, 2.655e-03, 1.118e-01, 2.213e-01, 3.444e-01, 1.606e-01, 2.601e-03, 4.034e-02, -5.099e-02, 2.123e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(3.811e-02, 8.602e-02, -5.355e-03, -3.015e-02, -1.917e-02, -3.488e-02, -1.140e-02, -3.406e-02, -9.781e-02, 2.445e-02, -4.777e-03, -1.510e-01, 1.107e-02, 1.652e-01, 3.495e-02, 5.592e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(4.312e-02, -8.622e-02, 1.188e-01, 3.658e-03, 3.462e-02, 6.852e-02, -2.157e-03, -2.549e-02, -3.950e-01, -7.748e-02, -7.888e-02, -2.402e-01, 9.529e-02, -1.004e-01, 6.816e-02, -8.129e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-1.763e-02, -1.801e-02, 3.327e-02, 2.180e-02, 9.106e-03, -6.325e-02, 9.543e-04, -4.039e-02, -2.686e-01, -2.076e-01, -7.320e-02, -9.982e-02, 4.165e-02, 4.512e-02, -3.567e-02, 1.426e-01), r4);\n\tr5 = MulAdd(s0_0_2, M4(-2.117e-02, -3.278e-02, 3.351e-03, -1.525e-03, -1.269e-02, 4.885e-03, 7.550e-03, -4.101e-03, 2.719e-02, 3.421e-02, -6.616e-02, -1.077e-01, -1.720e-02, -2.942e-02, -2.768e-02, 1.486e-02), r5);\n\tr0 = MulAdd(s0_1_0, M4(-2.506e-02, 2.809e-01, 1.567e-01, 1.415e-01, -2.722e-02, -1.645e-01, -4.005e-02, 1.219e-01, -4.678e-01, 2.077e-01, -4.946e-01, -4.908e-02, -1.134e-01, 3.770e-02, -1.446e-01, 1.131e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.840e-01, 3.742e-02, -1.099e-01, 6.664e-02, 4.204e-02, -7.579e-03, 2.643e-02, 7.554e-02, -1.510e-01, -9.657e-02, -4.618e-02, -2.041e-01, 4.063e-02, 8.618e-02, 5.258e-02, 1.881e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.304e-01, 2.093e-01, -6.435e-02, 3.296e-01, 1.840e-01, 2.225e-01, 2.455e-01, 4.921e-03, 1.236e-01, -6.091e-02, 8.544e-03, 3.116e-02, 5.232e-02, -4.182e-01, -7.871e-01, -1.506e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(2.104e-01, -6.537e-01, -2.031e-01, 8.791e-02, 5.953e-02, 1.416e-01, -9.754e-02, -7.539e-02, -1.884e-01, 3.237e-02, 5.543e-02, -4.496e-01, -4.617e-02, -2.310e-02, 2.896e-02, 2.871e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(2.510e-01, -3.429e-01, 3.318e-01, -7.135e-02, -1.715e-02, 2.146e-02, 1.635e-02, 7.439e-05, 4.293e-02, -1.445e-01, -4.119e-02, -2.928e-01, 3.573e-02, -3.219e-01, 1.554e-01, 1.519e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(-9.091e-03, 8.465e-04, 6.336e-02, 2.191e-02, -6.118e-02, 2.495e-02, -5.117e-02, -2.995e-03, 8.938e-02, 3.348e-01, 2.449e-01, 4.666e-01, -4.289e-02, -1.944e-02, -3.228e-02, 1.119e-01), r5);\n\tr0 = MulAdd(s0_1_1, M4(3.746e-01, -7.531e-02, -7.125e-02, 2.621e-01, -1.860e-01, 3.811e-01, 3.152e-02, -5.623e-01, 6.687e-01, -1.401e-01, 4.062e-01, -1.022e-01, 4.518e-01, -6.824e-02, 1.284e-01, 4.296e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(5.918e-01, 2.143e-02, 6.263e-01, 5.466e-01, 4.916e-02, 1.029e-01, -7.586e-02, 4.037e-02, -3.684e-01, -2.525e-01, -2.373e-01, -5.426e-02, -4.454e-02, -6.342e-01, -1.937e-01, -3.659e-03), r1);\n\tr2 = MulAdd(s0_1_1, M4(-4.012e-02, -9.593e-02, 1.034e-01, -6.933e-01, -2.316e-01, 4.617e-01, -1.140e-01, 4.022e-02, -3.072e-01, 4.502e-02, -4.321e-02, 3.018e-01, 2.015e-01, -1.077e-01, 9.980e-01, -2.326e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-1.873e-02, 2.782e-01, -9.702e-01, 2.460e-01, 3.053e-02, 6.826e-02, 8.267e-02, 1.333e-01, 7.461e-01, 3.081e-01, 1.062e-01, 6.720e-01, -1.319e-01, -1.702e-01, 1.621e-01, 7.012e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-1.574e+00, 3.702e-01, -3.072e-01, -2.397e+00, -1.850e-02, -1.845e-03, 3.897e-02, -2.241e-01, 3.098e-01, 1.472e-01, 4.484e-02, 1.489e-01, 4.466e-02, 9.588e-02, -1.535e-01, 1.782e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(2.175e-01, 7.953e-02, 2.166e-01, 5.578e-02, 2.241e-01, 5.081e-02, 1.131e-01, 1.015e-02, 1.434e-01, 4.369e-01, -4.546e-01, -4.216e-01, 4.588e-01, -1.188e-02, 1.313e-01, -1.204e-01), r5);\n\tr0 = MulAdd(s0_1_2, M4(-1.033e-01, -1.347e-01, 2.839e-02, -1.264e+00, 5.805e-02, -1.018e-01, -1.291e-03, -1.598e-01, 1.017e-01, -3.086e-01, 1.236e-01, 1.232e-01, -2.790e-02, 4.187e-02, 2.333e-03, -9.451e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-5.994e-02, 9.604e-02, -1.565e-01, 1.110e-01, -1.207e-02, 7.196e-02, -1.191e-02, 4.202e-02, -1.950e-01, -2.047e-01, -1.694e-01, -8.678e-02, 8.859e-02, -6.732e-02, -2.421e-04, 5.831e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(7.819e-02, 1.674e-01, 2.326e-02, -2.126e-01, 3.209e-02, 1.201e-01, 2.131e-02, -6.140e-04, -1.513e-01, -2.291e-03, 8.055e-02, 1.334e-01, -6.885e-02, 5.128e-02, 4.868e-02, 8.027e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(3.173e-01, -2.258e-01, 4.674e-02, -3.165e-02, 1.596e-02, 7.301e-02, 4.291e-02, 1.333e-02, -3.618e-01, 1.577e-01, 1.502e-02, -5.487e-01, -7.921e-02, -4.203e-02, -7.480e-02, 3.561e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(3.045e-01, 1.943e-01, 4.209e-02, 2.275e-02, 9.999e-03, -7.201e-02, 3.798e-02, 9.379e-03, 6.583e-02, 1.384e-01, 1.598e-01, -3.461e-02, 2.850e-03, 2.764e-01, 8.726e-02, -2.384e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(3.867e-03, -9.055e-02, -1.739e-02, 7.441e-03, 4.245e-03, 1.205e-02, 4.410e-02, -1.334e-02, -1.554e-02, -2.495e-01, 2.294e-01, -2.087e-01, -1.151e-01, 5.367e-02, 2.184e-02, 2.733e-02), r5);\n\tr0 = MulAdd(s0_2_0, M4(7.257e-02, -7.127e-01, 1.333e-01, 1.353e-01, -1.607e-01, -9.920e-01, 2.245e-02, -3.740e-02, -2.339e-01, 2.316e-01, -1.707e-01, 7.288e-02, -2.917e-02, -2.535e-01, 2.377e-02, -5.432e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(2.102e-02, -2.266e-02, -3.261e-03, 1.599e-01, 4.015e-02, -1.852e-02, 3.957e-03, -5.530e-02, -2.875e-02, -2.743e-02, -1.499e-01, -9.857e-02, -4.131e-02, -7.151e-02, 7.641e-03, -1.763e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-2.971e-01, 1.578e-01, 7.283e-02, 1.978e-01, 2.073e-01, 1.955e-01, -1.605e-02, -6.762e-02, 1.434e-01, -7.367e-02, 3.141e-01, 2.645e-02, 8.103e-02, 2.987e-01, -3.341e-02, -5.073e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(9.578e-02, -2.898e-02, 1.812e-01, -2.339e-01, -5.191e-02, 2.659e-02, 9.637e-02, 7.679e-02, -3.760e-01, -1.897e-01, -3.382e-02, -1.183e-01, 1.373e-01, -3.382e-02, 1.133e-02, -1.005e-01), r3);\n\tr4 = MulAdd(s0_2_0, M4(2.074e-02, -5.017e-01, 1.026e-01, 1.238e-01, 8.759e-03, -2.888e-01, 7.367e-02, -1.427e-02, 2.465e-01, 8.381e-02, -2.754e-02, 7.735e-02, -7.543e-02, -3.536e-02, 9.559e-02, -6.455e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-1.742e-02, -4.479e-02, -1.651e-02, -1.929e-01, 2.269e-02, 3.352e-03, -1.639e-02, -5.718e-03, -5.188e-02, -3.222e-02, 6.901e-03, 1.792e-01, 7.080e-02, -4.008e-03, -3.722e-02, -1.501e-02), r5);\n\tr0 = MulAdd(s0_2_1, M4(-1.608e-01, 1.259e-01, -5.189e-02, -5.485e-02, -3.661e-02, -3.369e-01, 3.748e-02, 1.253e-01, 5.528e-02, -8.855e-02, 1.265e-01, -4.403e-02, -1.327e-01, -4.238e-01, -4.192e-02, -1.054e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.322e-02, 4.917e-03, -2.437e-02, 7.251e-03, -1.797e-02, -1.160e-02, 1.363e-02, -2.420e-02, -1.617e-01, 1.198e-02, -2.142e-01, -2.629e-02, 8.081e-02, -1.191e-01, 3.459e-02, -2.356e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(-5.317e-01, -3.878e-02, -4.133e-02, -3.852e+00, 4.810e-02, -4.296e-01, 7.754e-03, -3.998e-01, 1.608e-01, -1.967e-01, -5.557e-02, -1.143e-01, -1.587e-01, -5.683e-02, 2.315e-01, 2.301e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(3.686e-01, 2.578e-01, -3.212e-01, -1.979e+00, 5.291e-02, 7.654e-02, -2.105e-01, -7.116e-02, -3.920e-01, 4.613e-02, -3.652e-02, -4.048e-01, 1.945e-02, 3.455e-02, -1.238e-01, 5.401e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-4.557e-02, 3.588e-01, -5.292e-01, -2.307e-01, 2.690e-02, -1.204e-01, 1.216e-02, -8.234e-02, 3.024e-01, 6.075e-02, 1.417e-01, 2.743e-01, -5.238e-02, -3.088e-01, -3.436e-02, -1.459e-01), r4);\n\tr5 = MulAdd(s0_2_1, M4(-3.242e-03, 3.643e-01, 2.111e-01, 1.909e-01, 6.991e-03, -1.209e-02, 1.874e-02, -8.791e-03, 3.410e-02, -3.458e-02, 1.141e-01, -1.026e-01, -1.275e-01, -2.099e-03, -5.106e-02, -1.017e-02), r5);\n\tr0 = MulAdd(s0_2_2, M4(7.930e-02, 9.016e-02, -2.883e-02, -3.145e-02, 7.815e-02, 5.961e-02, 2.245e-03, -3.263e-02, 5.998e-02, 8.676e-02, 6.384e-02, 8.721e-02, -8.653e-03, 3.780e-01, -3.723e-02, -1.291e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(5.975e-02, -4.772e-03, 6.896e-03, 1.152e-01, -7.811e-03, -2.418e-02, 1.562e-02, -3.146e-03, -8.413e-02, 9.902e-03, -1.265e-01, -9.853e-02, -2.846e-03, -1.093e-01, 9.263e-03, 1.401e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(2.110e-02, -3.375e-02, -3.126e-02, -3.508e-01, -2.799e-02, -2.253e-01, 2.186e-02, 8.887e-02, 8.213e-02, -8.905e-02, -1.323e-01, -5.973e-02, -2.279e-01, 2.082e-01, 1.401e-01, 1.105e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(-3.225e-02, -1.999e-01, 1.461e-02, 7.540e-02, 9.605e-02, -4.662e-02, 4.464e-02, -1.037e-02, -4.819e-01, -1.204e-01, -6.329e-02, -4.762e-01, -1.402e+00, -1.939e-01, 4.206e-04, 1.908e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(-1.459e-02, 2.779e-02, -2.012e-01, 9.900e-02, -2.954e-03, 4.518e-02, -7.792e-02, 2.970e-02, 1.297e-01, 1.657e-01, 3.995e-02, 9.352e-02, -2.459e-02, 3.893e-01, -2.070e-01, -1.826e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-4.591e-02, 3.778e-02, -9.106e-02, -1.253e-03, -3.138e-02, 1.197e-02, 9.716e-03, 6.668e-03, -8.419e-02, -5.005e-02, -2.532e-02, 7.728e-03, 5.786e-02, -1.457e-04, 6.092e-02, 9.974e-03), r5);\n\tr0 = MulAdd(s1_0_0, M4(2.194e-01, 1.728e-01, 5.145e-02, -1.545e-01, 2.337e-01, 3.544e-01, 1.645e-01, 4.038e-01, 3.028e-01, -3.039e-01, 2.685e-01, -3.874e-01, -1.483e-01, 7.102e-02, -2.466e-01, -1.960e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(5.783e-02, 5.364e-02, -5.878e-02, -1.603e-01, 1.268e-01, -3.057e-02, 3.843e-01, 1.301e-01, -7.438e-02, -5.585e-02, 8.703e-03, 8.822e-02, -1.626e-01, 6.111e-02, -6.456e-01, 2.891e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.929e-02, -7.147e-01, -1.023e-02, 1.401e-01, -2.583e-01, 1.046e-01, -4.564e-03, -7.556e-02, -6.514e-01, 6.545e-02, -8.435e-02, 2.603e-01, 1.630e-01, 1.859e-01, 2.007e-02, 1.537e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(5.576e-01, 1.287e-02, -2.917e-01, -9.684e-02, -1.880e-01, 8.748e-01, -7.838e-02, 2.444e-02, 1.021e-01, -8.924e-01, 2.161e-01, -2.537e-01, 2.154e-01, 3.834e-01, 1.484e-02, 2.380e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(-2.488e-02, 5.300e-02, 1.027e-01, -1.595e-02, 1.125e-01, 7.557e-01, -2.894e-01, 1.172e-01, 1.201e-01, -2.991e-01, 9.928e-02, 8.090e-02, 8.004e-02, -3.807e-01, 3.795e-01, -1.072e-01), r4);\n\tr5 = MulAdd(s1_0_0, M4(5.779e-02, -1.815e-02, 3.338e-02, -4.566e-02, 2.449e-02, 5.112e-02, -2.649e-02, -1.075e-01, -7.917e-02, -1.783e-01, -8.715e-02, -1.129e-02, 2.877e-02, 5.142e-02, -8.513e-03, 1.566e-01), r5);\n\tr0 = MulAdd(s1_0_1, M4(-2.646e-01, 2.727e-01, -3.520e-02, 6.505e-01, 9.749e-02, -1.974e-01, 1.032e-01, -1.026e+00, 3.199e-01, 5.901e-03, -1.530e-01, -1.910e+00, -1.895e-01, 1.904e-01, -2.686e-02, -4.048e+00), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.724e-01, 7.412e-03, 3.100e-01, 2.181e+00, -1.444e-01, 7.728e-02, -1.968e-01, -8.030e-01, -8.324e-02, 1.288e-01, 6.154e-01, -3.935e-01, 2.407e-01, -1.401e-01, -2.157e-01, -4.110e+00), r1);\n\tr2 = MulAdd(s1_0_1, M4(-1.512e-01, -4.026e-01, 2.362e-02, -2.094e-01, -1.787e-02, 6.635e-02, -5.293e-02, -2.014e-01, -6.723e-02, 2.075e-01, -4.603e-02, -2.686e-01, -6.188e-02, 6.231e-03, -1.019e-02, 1.904e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(-4.873e-02, 2.688e-01, -4.229e-01, -6.448e-02, 1.606e-01, -1.047e-02, 7.901e-02, 1.031e-02, -2.680e-01, 5.510e-01, 4.147e-01, -3.657e-02, -2.309e-02, -8.424e-02, -2.141e-01, 1.142e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(3.033e-02, 2.762e-01, -7.365e-02, 2.479e-01, 1.377e-01, 1.244e-01, -1.386e-01, -6.966e-02, -4.441e-02, -2.952e-01, -4.639e-01, -4.566e-02, -1.901e-01, -1.215e-01, 2.056e-01, 1.052e-01), r4);\n\tr5 = MulAdd(s1_0_1, M4(-8.501e-02, 5.141e-02, 2.280e-02, 3.574e-02, 5.659e-02, 6.592e-02, -8.030e-03, 1.591e-02, -1.034e-01, -8.033e-02, -1.566e-01, 6.589e-02, 7.663e-02, 4.243e-02, 2.694e-01, 9.411e-03), r5);\n\tr0 = MulAdd(s1_0_2, M4(-1.539e-01, -1.512e-02, -4.342e-02, -3.449e-01, -7.526e-02, 1.517e-02, 3.805e-03, 1.228e+00, 5.239e-02, -9.893e-02, -8.994e-02, 3.596e-01, 1.495e-02, 4.621e-02, 3.037e-02, -3.362e-01), r0);\n\tr1 = MulAdd(s1_0_2, M4(9.150e-02, -3.918e-03, -2.562e-02, -3.017e-01, 6.704e-03, 6.279e-02, 9.526e-03, -2.921e-02, 4.254e-02, -8.534e-02, -5.386e-02, 6.947e-02, 9.213e-03, 4.286e-02, -1.767e-02, 9.611e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.804e-01, 1.067e-01, -1.070e-02, 9.369e-02, 1.017e-01, 1.227e-01, -1.463e-02, -3.603e-02, -1.346e-02, 1.856e-02, 5.635e-02, 1.936e-02, -1.812e-02, -4.489e-02, -1.325e-02, 1.230e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(3.060e-01, -1.368e-02, -6.900e-02, -2.085e-01, 3.080e-01, -4.911e-01, -4.914e-03, 7.896e-02, -1.551e-01, 4.532e-01, -3.236e-01, -9.678e-02, -2.627e-01, -5.146e-02, 1.307e-01, 2.499e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-3.798e-03, -4.531e-02, 1.344e-01, -1.791e-02, 5.502e-02, 1.679e-02, 6.757e-02, 5.878e-02, 4.135e-02, 3.671e-01, 6.498e-02, -1.519e-01, -3.442e-02, -1.377e-01, 1.290e-02, 9.512e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(1.763e-02, 3.294e-02, 8.781e-02, -2.097e-02, 3.252e-02, 1.673e-02, -2.013e-02, -5.575e-03, -3.235e-02, 9.984e-02, 5.194e-02, -1.402e-03, -8.848e-03, -4.000e-02, -2.862e-02, -4.368e-03), r5);\n\tr0 = MulAdd(s1_1_0, M4(-2.329e-01, -1.932e-01, 5.728e-02, 2.051e-01, -1.357e-02, -2.435e-01, 9.870e-02, -1.029e-01, 1.197e-01, 1.929e-01, -2.489e-01, -1.614e-01, -7.813e-02, -8.948e-01, 6.667e-01, 3.056e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.109e-02, -6.367e-03, -8.800e-02, -3.323e-01, 3.707e-02, -9.359e-02, -8.167e-03, 4.904e-02, 8.011e-02, 2.148e-02, -1.004e-01, 3.578e-01, 1.641e-01, -7.463e-02, 3.171e-01, -6.252e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-1.857e-01, -1.991e-01, 1.615e-02, 2.168e-01, 5.088e-02, -1.025e-01, 1.411e-01, 1.132e-01, -8.209e-02, 2.629e-01, -9.313e-02, -4.796e-01, -3.599e-01, 1.781e-01, 3.787e-01, 3.916e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(3.119e-01, 3.287e-01, 3.702e-02, -3.020e-02, -2.832e-03, -3.394e-01, 1.458e-01, 1.113e-01, -2.093e-01, 3.165e-01, 1.903e-01, -4.864e-02, 2.630e-01, -4.960e-01, -4.325e-01, -2.505e+00), r3);\n\tr4 = MulAdd(s1_1_0, M4(-1.953e-02, -2.514e-01, 1.249e-01, -1.862e-01, 2.058e-02, -7.691e-02, -8.763e-02, 2.966e-01, -1.994e-01, -5.230e-01, -2.692e-01, -1.343e-01, -1.437e-01, 4.814e-01, 5.149e-01, -1.344e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(-4.557e-02, 8.683e-02, 6.714e-02, 1.317e-01, -4.959e-02, -4.219e-02, -2.983e-02, -1.439e-01, 2.784e-02, 3.204e-02, 1.827e-02, 5.047e-02, -2.330e-02, -2.804e-03, -4.791e-02, -9.235e-02), r5);\n\tr0 = MulAdd(s1_1_1, M4(7.871e-01, 1.550e-01, 5.826e-02, 2.466e-01, 3.681e-01, 1.877e-01, -1.784e-01, -2.300e-01, -1.864e-01, 2.268e-02, 1.596e-01, -5.153e-01, -2.964e-01, -7.902e-03, -6.036e-03, -3.185e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-6.127e-02, 5.216e-02, -1.045e-02, -2.719e-01, 2.435e-02, -4.732e-02, -3.369e-02, 7.372e-02, 1.810e-01, -3.511e-02, 1.798e-01, -1.143e-03, -9.812e-02, -5.626e-02, 3.162e-02, 5.435e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(5.985e-01, -5.617e-01, -6.665e-02, -5.622e-01, 2.477e-02, -2.024e-01, 1.932e-02, 6.250e-01, -4.930e-02, 2.364e-01, 9.612e-02, -6.780e-03, -5.600e-02, -3.636e-02, 3.888e-02, 3.415e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-5.010e-01, -6.527e-01, 9.165e-01, 7.943e-01, -1.291e+00, 1.292e-01, -1.031e+00, 3.676e-01, -1.188e+00, -4.404e-01, 1.697e+00, 3.446e-02, 7.585e-01, 1.282e-01, -2.535e+00, 1.088e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.471e-01, -3.889e-01, -2.700e-01, 1.869e-01, -7.781e-02, -5.776e-01, 7.839e-01, 1.402e-01, -1.651e-02, 3.810e-02, -1.075e-01, 2.244e-01, 1.500e-01, 6.152e-02, -3.894e-02, -2.294e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(1.057e-01, -1.251e-01, -1.932e-01, -2.406e-02, 2.932e-02, 1.121e-01, -2.175e-03, 6.917e-02, 1.059e-02, -1.714e-01, 8.740e-03, -4.951e-02, 1.431e-01, 1.302e-01, 4.878e-01, 2.378e-02), r5);\n\tr0 = MulAdd(s1_1_2, M4(-8.608e-02, 2.813e-01, -1.609e-02, -5.243e-01, 9.759e-02, 8.871e-02, 1.066e-02, 7.720e-03, -2.501e-02, -1.716e-02, -5.495e-02, 1.009e-02, -3.620e-02, -2.164e-02, 4.173e-02, -1.066e+00), r0);\n\tr1 = MulAdd(s1_1_2, M4(4.974e-02, -6.388e-02, -3.744e-02, -4.380e-01, 6.848e-02, -3.965e-02, -3.547e-02, 2.569e-01, -5.783e-02, 1.700e-02, 4.309e-02, -1.816e-01, 1.192e-01, -3.112e-02, 2.043e-02, -4.408e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-1.390e-01, 1.880e-01, -2.254e-02, 1.499e-01, -1.459e-01, 1.184e-01, 8.960e-03, 5.492e-01, 3.602e-01, -2.336e-01, 9.981e-02, 4.124e-01, -1.168e-01, 7.398e-02, -1.661e-02, -3.991e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(-5.254e-01, 2.715e-02, 1.382e-01, -1.010e-01, 1.209e+00, 2.180e-01, -1.226e-01, -2.086e-01, -1.329e+00, -3.313e-01, -2.397e-01, 1.798e-01, 4.012e-01, 2.153e-01, 3.016e-01, 4.523e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-6.782e-03, 1.930e-01, 1.617e-01, -3.562e-02, -6.457e-03, 3.044e-01, -2.214e-01, 6.141e-02, -2.130e-02, -1.077e-01, 2.766e-01, 8.076e-02, -1.918e-02, -9.334e-02, -1.014e-01, -5.341e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(1.555e-02, -3.347e-02, 7.213e-02, -9.607e-03, 2.034e-02, 4.789e-02, 3.611e-02, 4.204e-04, -1.181e-01, 1.377e-02, -3.484e-02, -1.583e-02, 2.118e-03, -6.162e-02, -5.807e-02, 1.620e-02), r5);\n\tr0 = MulAdd(s1_2_0, M4(-1.352e-01, -6.816e-01, -7.326e-02, 8.170e-02, 4.899e-02, 1.830e-01, -2.620e-02, -1.272e-01, -6.196e-02, 2.817e-01, 6.861e-02, 3.900e-02, -5.872e-02, -1.102e-01, -1.014e-01, 1.403e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(-4.168e-02, -2.467e-02, -3.383e-02, -2.705e-02, 1.837e-02, -1.703e-02, 5.673e-02, 1.773e-01, -2.955e-02, 8.925e-02, -3.643e-02, -1.913e-01, 7.915e-02, 6.639e-02, 1.008e-02, -2.193e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(9.451e-02, -1.283e-01, -3.905e-04, 1.154e-01, 9.809e-02, 1.091e-01, 2.284e-03, -1.862e-01, -2.353e-01, -8.339e-02, 8.700e-02, 2.371e-01, -3.323e-02, 4.284e-03, -6.459e-02, -2.692e-01), r2);\n\tr3 = MulAdd(s1_2_0, M4(9.376e-02, -2.768e-02, -7.551e-02, -3.124e-01, 2.567e-01, -2.397e-01, 2.345e-02, -9.790e-02, -2.802e-01, 5.130e-01, -5.655e-02, 3.287e-01, -2.524e-02, -2.063e-01, -6.425e-02, -1.763e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(-3.538e-02, -7.670e-02, 1.127e-01, -1.940e-03, -6.136e-03, -1.139e-01, -1.970e-01, 1.355e-01, 2.831e-03, 6.307e-01, 3.515e-01, -1.043e-01, -1.781e-02, -1.801e-01, -3.818e-01, -6.719e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-2.282e-02, -2.144e-02, -3.697e-03, -7.670e-02, -7.990e-03, 3.780e-02, 6.902e-03, -2.860e-03, 1.254e-02, -9.081e-03, 7.633e-02, 2.503e-03, 7.496e-02, 3.666e-02, -1.917e-02, 9.123e-02), r5);\n\tr0 = MulAdd(s1_2_1, M4(-7.664e-02, -1.654e-01, 3.800e-02, 6.451e-02, 8.735e-02, 2.258e-01, 5.458e-02, -1.323e-01, -1.315e-01, -1.840e-01, -4.709e-02, 3.320e-01, 1.145e-01, 2.096e-01, -8.124e-02, 1.151e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(4.985e-02, 2.428e-02, 8.790e-02, -3.709e-02, -4.735e-03, -2.087e-02, 6.619e-02, -4.882e-03, 1.761e-02, -6.723e-03, -1.532e-01, 8.788e-02, -1.840e-02, 6.078e-03, -4.527e-02, -1.011e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.245e-01, 1.749e-01, 8.998e-02, 1.466e-01, -3.655e-02, -8.332e-02, 1.794e-02, 6.927e-02, 1.012e-01, -1.096e-01, -2.139e-02, -1.334e-02, 2.437e-01, 3.493e-01, -6.037e-02, -6.136e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(-1.226e-01, -7.267e-02, 2.718e-02, -1.142e-01, 8.485e-01, -4.735e-02, -9.206e-02, -1.066e-01, -1.271e+00, -1.816e-01, 2.804e-01, 4.969e-02, -1.379e+00, 8.672e-02, -8.317e-02, 1.827e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(-8.220e-02, 5.396e-02, 6.105e-02, -1.345e-01, 1.976e-02, -2.414e-01, -1.268e-01, 5.564e-04, 2.146e-02, 9.569e-01, 2.575e-01, 6.339e-02, 4.993e-02, -6.145e-01, -2.764e-01, -4.449e-03), r4);\n\tr5 = MulAdd(s1_2_1, M4(-3.445e-02, 1.685e-01, 8.288e-02, 8.660e-03, 3.426e-03, 1.001e-01, 4.694e-02, 2.406e-02, 1.002e-02, -8.201e-02, 5.196e-02, -2.059e-02, 1.096e-01, -1.782e-01, -1.223e-01, -5.628e-02), r5);\n\tr0 = MulAdd(s1_2_2, M4(-8.529e-02, 1.649e-01, -5.115e-02, -1.669e-01, 6.277e-02, -5.097e-02, -3.009e-02, 3.325e-04, -3.068e-02, 1.038e-02, 5.363e-02, -1.619e-01, -2.338e-02, 2.321e-03, 1.367e-02, 1.655e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(2.897e-02, -2.900e-02, -9.886e-02, -1.916e-02, 2.202e-02, 1.169e-02, -2.787e-02, 8.001e-02, -3.371e-02, -2.796e-03, 5.429e-02, -8.762e-02, -1.726e-02, -3.758e-03, -1.193e-02, -7.213e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.118e-02, 6.670e-01, -2.069e-02, -9.349e-02, 3.748e-02, -1.729e-01, 1.531e-02, -4.405e-02, -6.150e-02, 4.680e-01, -9.242e-02, 1.294e-01, 2.544e-02, -1.587e-01, -1.149e-02, -2.397e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(-5.174e+00, 1.822e-01, -1.029e-01, -1.989e-01, -1.313e+01, -2.388e-01, -1.073e-01, -1.381e-01, -3.013e+00, 3.916e-01, -6.355e-04, 1.919e-01, -2.360e+00, -1.812e-01, 1.582e-01, -5.179e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-1.154e-03, 2.319e-01, -2.687e-01, -2.963e-02, -8.603e-03, 1.416e-01, -1.751e-02, 1.647e-02, -7.414e-03, -2.194e-01, 3.112e-02, -1.500e-02, 1.917e-02, -1.382e-01, -1.323e-02, -6.129e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-1.958e-02, -4.578e-02, -4.403e-02, 1.973e-03, -9.658e-03, -5.696e-03, 4.641e-02, -5.612e-03, -7.677e-03, -5.268e-03, 1.664e-02, 1.690e-02, 3.240e-02, -2.507e-02, 3.543e-02, -1.401e-02), r5);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.452e-01, 1.577e-01, -2.002e-02, -1.168e-01, 3.333e-02, 1.203e-01, 3.651e-02, 1.308e-02, 6.705e-02, 1.661e-03, 8.247e-03, -4.307e-02, 7.175e-02, -1.136e-01, -3.107e-02, -3.471e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(2.389e-02, -1.173e-02, -9.206e-03, 8.511e-02, 8.889e-02, -1.696e-02, -2.270e-02, 1.620e-01, 4.183e-03, 2.297e-02, 3.525e-02, 7.784e-02, -5.257e-03, 8.940e-03, -3.512e-02, -3.171e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-8.865e-03, -1.273e-01, -3.378e-02, 6.309e-02, -1.817e-02, -6.766e-02, 3.320e-02, -7.764e-02, -5.145e-02, -1.408e-02, -4.333e-02, 1.977e-01, -1.029e-01, 4.335e-02, -2.056e-02, 1.470e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(-4.906e-02, 4.624e-02, -1.126e-01, 1.745e-02, -7.423e-02, 4.307e-01, -3.920e-02, -4.770e-02, 3.072e-01, -3.583e-01, -1.061e-01, 1.066e-01, 1.373e-01, 8.690e-02, 1.161e-01, 5.549e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(-2.491e-02, 1.192e-01, 6.097e-02, 4.428e-02, -1.692e-02, 7.055e-02, -1.071e-02, -1.343e-01, 4.392e-02, -2.213e-01, 9.412e-02, 1.974e-01, -7.164e-03, -3.810e-02, 9.765e-02, 4.305e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(1.261e-02, 3.658e-02, 1.800e-02, 5.904e-04, 8.211e-03, 6.552e-02, 2.747e-02, -1.155e-02, -3.140e-03, -7.104e-02, -6.701e-02, 2.322e-02, 2.389e-04, -7.519e-02, -4.806e-02, -3.325e-02), r5);\n\tr0 = MulAdd(s0_0_1, M4(-1.641e-01, 1.285e-02, 1.410e-02, -5.354e-02, -1.545e-02, 4.542e-02, 1.585e-02, 3.775e-02, 4.106e-02, 1.062e-01, -1.008e-02, 3.042e-01, -7.436e-02, -2.012e-01, 9.523e-03, 5.287e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-6.663e-02, 8.915e-02, 1.958e-01, -8.838e-02, -1.732e-01, 9.623e-03, -1.587e-01, 7.636e-02, 9.406e-02, -1.032e-01, 4.846e-01, -1.576e-01, -5.136e-03, -5.901e-02, 2.247e-02, -1.991e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(-1.189e-01, -3.399e-01, 4.394e-02, 6.962e-02, -8.884e-02, -3.407e-02, 2.303e-02, 1.293e-01, 2.476e-01, 6.721e-02, -5.898e-02, -3.638e-01, 5.674e-02, -1.898e-03, -4.675e-02, -1.383e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(4.599e-02, 2.500e-01, -1.527e-01, -2.032e-02, 2.802e-02, -3.550e-01, 8.267e-02, 2.452e-04, -3.340e-01, -1.485e-01, -9.369e-02, 2.972e-01, 7.613e-02, 3.777e-01, 4.634e-02, -1.472e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(-3.839e-02, 1.220e-01, 2.264e-03, -8.716e-02, 4.610e-02, 5.810e-02, 2.821e-01, -9.013e-02, -3.327e-02, -2.795e-01, -3.989e-01, 4.424e-01, -3.569e-02, 3.853e-03, -2.686e-01, -6.046e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(2.551e-02, 3.322e-02, 2.708e-02, 2.012e-02, 1.052e-02, 1.600e-02, 4.333e-02, -1.442e-02, -2.818e-02, -7.210e-02, -2.301e-02, 3.168e-02, 1.385e-02, 2.012e-02, 3.870e-02, 1.602e-02), r5);\n\tr0 = MulAdd(s0_0_2, M4(-1.372e-01, -6.899e-02, -9.628e-04, -1.354e-02, 7.576e-03, 6.053e-02, -2.416e-02, -1.792e-01, -2.902e-02, -7.820e-02, 3.559e-02, 3.339e-01, -1.107e-01, -1.984e-01, -3.682e-02, 1.193e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.143e-02, -3.290e-02, -1.971e-02, 9.339e-02, 5.383e-02, -4.080e-02, -5.559e-02, 2.074e-02, -1.032e-01, 6.107e-02, -6.233e-02, 9.451e-02, 2.360e-02, -5.390e-03, 2.025e-02, -5.476e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-6.841e-02, 2.483e-01, -5.275e-02, 7.929e-02, -6.352e-02, 1.426e-01, 1.927e-02, 1.165e-01, 5.158e-02, -2.461e-01, 2.519e-02, -1.420e-01, 1.323e-01, 1.081e-01, -3.339e-02, -1.118e-01), r2);\n\tr3 = MulAdd(s0_0_2, M4(-4.229e-02, -1.802e-01, 4.076e-02, -7.890e-02, 1.237e-01, -1.342e-02, -1.754e-01, -5.515e-03, 1.092e-01, -1.832e-01, 1.700e-01, 9.085e-02, -1.156e-01, 1.508e-01, 1.712e-01, -1.550e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(5.319e-03, -1.254e-01, 2.378e-02, 6.258e-02, 4.626e-02, -5.418e-03, 9.302e-02, 1.237e-01, -5.255e-02, 1.820e-01, -1.919e-01, -2.387e-01, -1.292e-03, 1.672e-01, -1.032e-01, -8.163e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(4.229e-02, 2.927e-02, 4.809e-02, -1.063e-02, -1.277e-03, 6.074e-02, 1.905e-02, -1.647e-03, -4.986e-02, -1.419e-01, -8.666e-02, -2.249e-03, -7.422e-03, 6.905e-03, 1.197e-02, 1.801e-02), r5);\n\tr0 = MulAdd(s0_1_0, M4(-1.366e-01, -3.726e-01, -1.628e-03, 4.847e-02, 1.003e-01, 9.576e-03, -3.065e-01, 5.488e-01, 6.280e-02, -1.077e-01, 4.204e-02, 2.504e-01, 4.298e-02, -3.564e-01, -1.179e-01, -4.725e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(4.189e-02, 2.017e-02, 1.886e-02, -1.862e-02, 2.407e-01, -4.790e-02, 2.744e-01, -2.434e-01, -2.856e-02, -4.888e-02, -8.336e-02, 8.936e-02, 4.352e-02, -1.079e-01, 2.488e-02, -6.129e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.577e-01, -7.581e-01, -2.987e-02, 1.458e-01, 3.840e-01, -3.783e-01, 6.852e-02, -1.184e-01, -8.001e-03, 3.068e-01, 4.971e-02, -3.473e-01, -1.386e-01, -8.553e-02, 1.274e-01, -2.945e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(1.130e-01, 7.761e-02, -6.183e-02, 1.943e-02, -3.876e-02, 8.438e-01, -4.401e-02, -2.288e-01, -1.260e-01, 1.575e-01, 3.220e-02, 9.962e-02, -1.818e-01, 2.168e-02, -6.997e-02, -3.477e-03), r3);\n\tr4 = MulAdd(s0_1_0, M4(7.687e-03, -1.681e-01, 9.044e-02, -9.884e-02, -3.716e-01, -1.440e-01, -1.103e-01, 3.829e-02, -6.940e-02, 2.352e-01, 1.659e-02, -1.197e-01, -1.156e-03, 1.147e-01, -4.351e-02, -1.808e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(8.565e-03, 2.908e-02, 3.795e-02, 4.913e-03, 2.115e-02, 1.224e-01, -4.554e-02, 8.713e-02, -2.288e-04, -3.108e-02, 1.066e-01, -1.193e-02, 1.655e-02, -8.488e-02, 1.547e-02, -1.142e-02), r5);\n\tr0 = MulAdd(s0_1_1, M4(4.873e-01, 7.914e-02, 1.494e-02, 2.291e-02, -1.529e-01, 4.148e-01, 3.017e-01, -1.122e+00, 3.792e-01, -2.182e-01, -9.275e-02, -4.865e-03, -8.138e-02, -2.744e-01, -2.674e-03, -2.094e+00), r0);\n\tr1 = MulAdd(s0_1_1, M4(-8.059e-02, -5.407e-02, -1.096e-01, -1.026e-01, 4.174e-02, 1.736e-01, -5.499e+00, -6.311e-01, -1.153e-02, 6.355e-04, -2.776e-01, -8.430e-02, -1.248e-01, 6.485e-03, -3.667e-01, 2.685e+00), r1);\n\tr2 = MulAdd(s0_1_1, M4(3.463e-01, -7.531e-01, 5.967e-02, -4.012e-01, -5.371e-01, 1.010e-01, -1.699e-01, 5.857e-01, 5.396e-01, 5.293e-01, -4.548e-02, -6.993e-02, 1.018e-01, 1.730e-01, 1.551e-01, 7.617e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(-1.160e-01, -2.153e-01, 2.662e-01, 2.169e-01, 4.219e-01, -9.589e-01, -1.659e-01, -2.072e+00, -7.241e-01, -1.276e-02, 1.587e-01, -2.973e-01, 4.024e-02, -5.016e-01, -5.821e-03, -3.512e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(8.593e-02, -1.067e-01, -1.275e-01, 2.874e-01, 8.898e-01, -6.722e-02, 4.664e-01, 6.328e-02, 7.014e-02, 2.105e-01, -5.535e-02, -5.849e-01, -1.239e-01, -3.800e-02, -1.752e-01, -1.070e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(-8.044e-02, -3.087e-02, -4.945e-02, -3.364e-02, 4.173e-02, 3.829e-01, 1.102e-02, -5.138e-02, -2.456e-02, 8.928e-02, 1.795e-01, 1.926e-02, 1.313e-01, -2.661e-02, 8.066e-02, -4.718e-02), r5);\n\tr0 = MulAdd(s0_1_2, M4(-5.537e-02, 1.139e-01, 2.452e-02, -2.280e-02, 8.425e-02, 1.841e-01, 6.213e-02, -7.416e-01, -7.334e-02, -1.470e-01, 2.279e-02, 2.630e-01, 1.429e-01, -1.053e-01, 1.127e-02, 1.073e+00), r0);\n\tr1 = MulAdd(s0_1_2, M4(7.711e-03, -1.402e-02, 1.238e-02, -3.695e-02, 1.543e-01, -9.943e-02, 1.049e-01, -4.145e-01, 8.979e-02, 2.163e-02, 2.648e-02, 5.176e-01, -2.320e-01, 4.628e-02, 2.002e-02, 1.875e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.239e-02, -9.886e-02, -2.183e-02, -3.009e-02, -2.477e-01, 6.689e-02, 2.210e-03, -3.613e-01, -2.705e-02, -2.028e-01, 1.632e-03, 7.246e-02, 8.600e-02, 1.430e-02, -1.601e-01, 1.731e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-3.844e-02, 1.158e-01, 3.345e-02, 4.163e-02, 3.238e-01, 2.384e-01, 4.134e-01, 2.728e-01, -5.201e-01, -3.736e-01, -4.722e-01, -7.253e-03, -3.114e-01, 3.322e-01, 9.353e-02, 1.285e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(-3.939e-02, 1.480e-01, 7.994e-02, -1.124e-01, -2.349e-01, 7.169e-03, -5.064e-01, 1.288e-01, 6.919e-02, -2.543e-01, 3.134e-01, 1.785e-01, -1.653e-01, -2.335e-01, 6.399e-02, -1.507e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(4.814e-02, -1.966e-02, -1.641e-02, 3.046e-02, -3.031e-02, -1.082e-01, 9.299e-03, 3.313e-02, -1.955e-02, -7.371e-03, -8.632e-03, -4.908e-02, 1.543e-01, -1.035e-02, 7.643e-02, 2.469e-02), r5);\n\tr0 = MulAdd(s0_2_0, M4(-7.445e-02, 4.365e-02, -6.295e-04, 4.137e-04, 1.060e-02, -3.209e-02, -9.645e-02, 4.048e-01, -1.302e-01, 2.913e-01, -1.226e-02, -2.688e-01, 1.203e-01, 7.962e-01, 3.534e-03, -2.049e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.085e-04, 1.699e-02, -2.367e-02, 5.685e-02, 2.610e-02, 8.759e-02, 1.083e-01, -3.430e-01, 8.127e-04, 2.734e-02, 2.055e-03, 1.349e-01, -5.293e-02, 2.264e-02, 3.359e-02, 7.962e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-3.186e-02, -9.354e-03, -6.895e-03, 1.529e-02, 2.562e-01, -2.026e-01, -2.104e-01, 1.085e-01, -8.074e-02, -2.486e-01, -1.949e-02, 1.719e-01, -1.634e-01, -7.806e-02, 1.307e-01, -1.339e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(-7.175e-02, -1.309e-01, -1.260e-01, -7.246e-02, -2.804e-01, -9.881e-02, -7.997e-02, 1.674e-01, 4.199e-01, 1.685e-01, 3.934e-02, 1.332e-01, -3.933e-01, -2.694e-01, -3.906e-02, -7.617e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(5.613e-03, -6.906e-02, 3.328e-02, -3.215e-03, -7.830e-02, 6.277e-01, 1.593e-02, -1.666e-01, -5.040e-04, 8.610e-02, -1.769e-01, -9.604e-02, -5.374e-02, -2.764e-01, -1.368e-02, -1.790e-01), r4);\n\tr5 = MulAdd(s0_2_0, M4(-1.966e-02, 1.383e-02, 1.622e-02, -2.069e-02, 7.005e-02, 1.416e-01, 1.184e-01, 1.150e-01, 4.536e-03, 3.008e-03, -2.165e-02, -1.072e-02, 8.198e-04, -1.294e-01, 5.887e-02, 3.610e-02), r5);\n\tr0 = MulAdd(s0_2_1, M4(-1.197e-02, -3.311e-02, -2.230e-02, 1.430e-01, -3.212e-02, 4.586e-02, 4.843e-02, 1.945e-01, 9.622e-02, 2.182e-01, -3.145e-02, -4.264e-01, 2.886e-01, -2.340e-02, 1.164e-01, -3.138e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(2.891e-02, -2.069e-02, 4.894e-03, 1.375e-01, -2.076e-02, 1.441e-02, 1.391e-01, 6.971e-02, -4.311e-02, 3.066e-02, -9.171e-02, 1.150e-01, -1.208e-01, 4.362e-02, -7.624e-02, -4.482e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-6.565e-02, -1.794e-01, 3.937e-02, 1.440e-01, 6.348e-01, -4.573e-02, -3.102e-02, 4.602e-01, -2.198e-01, -1.819e-01, -8.845e-02, -1.454e-01, 2.959e-01, -1.805e-01, -2.217e-02, -2.988e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(-8.642e-02, -3.775e-02, 1.343e-01, -3.593e-02, 1.761e+00, 1.478e-01, -1.259e+00, 2.060e-01, -2.724e-01, -2.029e-01, 2.449e-01, 1.187e-01, -2.025e-01, -1.141e-01, -1.305e+00, 3.601e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(-1.815e-02, 3.283e-02, 9.018e-03, -7.336e-03, -1.031e-01, 4.685e-02, 2.056e-01, -3.344e-01, 5.036e-02, -2.149e-01, 9.368e-02, 6.092e-02, 1.230e-01, -5.735e-01, 8.968e-02, 1.952e-01), r4);\n\tr5 = MulAdd(s0_2_1, M4(-2.022e-02, 7.242e-02, -8.242e-03, 1.391e-02, -2.769e-02, 8.786e-02, 2.823e-01, -1.084e-01, 1.402e-02, 7.165e-02, 1.208e-01, -1.669e-02, 6.595e-02, -1.087e-01, 6.219e-02, -3.637e-02), r5);\n\tr0 = MulAdd(s0_2_2, M4(-6.750e-02, 1.284e-01, 3.066e-03, 5.706e-02, 5.714e-02, 1.437e-01, 1.480e-01, 5.059e-01, -2.210e-01, -3.449e-01, -1.447e-02, -2.232e-01, -5.050e-02, -5.306e-01, -6.507e-02, -7.700e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.101e-02, -4.502e-03, -4.014e-02, -2.067e-02, -5.530e-02, 7.245e-02, 1.213e-01, -1.733e-01, 6.207e-02, 2.271e-02, -1.965e-02, 6.066e-02, -2.359e-02, 6.432e-03, 8.314e-02, 3.539e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(4.070e-02, 5.800e-01, -1.160e-02, -1.120e-01, -1.298e-01, 4.717e-01, 7.297e-02, -6.455e-01, -2.514e-01, -6.002e-03, -8.810e-03, 3.741e-01, -1.266e-01, -1.968e-01, 3.334e-02, -1.295e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(-1.990e+00, 4.078e-02, 1.820e-02, -1.190e-01, -2.319e+00, 1.166e-01, 3.996e-01, 2.932e-02, 1.195e+00, 2.812e-01, -9.466e-02, -6.168e-02, 5.223e-01, -3.137e-01, -1.803e-01, -6.429e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(1.452e-02, 9.779e-02, -1.303e-01, -5.987e-03, 7.955e-03, -2.048e-01, -3.799e-01, -1.511e-01, -5.618e-02, 8.333e-03, -9.718e-02, -1.419e-01, -1.702e-02, -2.611e-02, -1.788e-01, -1.408e-01), r4);\n\tr5 = MulAdd(s0_2_2, M4(1.038e-02, -4.101e-02, -3.047e-02, -1.029e-02, 2.976e-02, -2.373e-02, 1.825e-01, -1.009e-02, -2.496e-02, 2.244e-02, 6.109e-02, 1.926e-02, 2.968e-02, 1.505e-02, -4.537e-02, 3.199e-02), r5);\n\tr0 = MulAdd(s1_0_0, M4(1.187e-02, 8.701e-02, -9.938e-03, -6.793e-02, 3.503e-02, -2.365e-02, 1.972e-02, -2.203e-01, -1.139e-01, -2.816e-01, 2.289e-02, -1.942e-01, 2.651e-02, 3.848e-01, -4.507e-02, 1.221e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(-2.952e-03, 2.270e-02, 3.409e-02, -7.300e-02, -1.059e-02, -1.824e-02, -1.024e-02, 9.016e-02, -7.615e-02, -3.071e-02, -6.390e-02, 1.167e-01, -1.594e-02, 3.592e-02, -3.706e-03, -7.104e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-1.772e-01, -6.631e-02, -9.366e-02, -1.265e-01, -5.037e-02, -2.313e-01, -3.725e-03, 7.749e-03, 3.115e-01, 3.817e-02, 5.886e-02, 1.885e-01, 1.191e-02, 4.466e-02, 6.959e-02, -5.596e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(4.543e-02, 2.446e-01, -1.294e-01, -6.292e-03, 1.024e-01, 5.102e-02, 2.818e-02, -2.310e-02, 2.838e-02, 2.861e-01, 1.905e-01, -2.138e-02, 4.171e-02, 1.717e-01, -5.221e-02, 1.607e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(-2.001e-02, 2.784e-02, 1.946e-01, -7.446e-02, -2.407e-03, 6.694e-02, -2.792e-02, 3.148e-03, -2.617e-03, 1.179e-01, -4.879e-01, -1.655e-01, -1.571e-02, -3.935e-02, 5.540e-02, -2.631e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(3.708e-02, 9.400e-02, 4.953e-04, 1.663e-03, 2.121e-02, -2.695e-02, -3.632e-02, -9.839e-03, -5.964e-02, -1.501e-01, 7.653e-03, -3.271e-02, 2.098e-02, 3.961e-02, 2.688e-02, 1.520e-02), r5);\n\tr0 = MulAdd(s1_0_1, M4(1.595e-01, -4.799e-02, -4.329e-02, -1.882e+00, 4.368e-03, 1.291e-01, 1.526e-02, 2.426e-01, -3.425e-01, -9.703e-02, -4.364e-01, -3.212e-01, -7.588e-02, -1.052e-01, 2.848e-02, -5.119e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(9.839e-02, 5.516e-02, -3.901e-01, -2.024e+00, -6.685e-02, 2.243e-03, 9.630e-02, -1.876e-01, 2.900e-01, -1.379e-02, -3.810e-02, -2.548e-01, -4.935e-02, 1.503e-02, -8.287e-02, -1.353e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(5.831e-02, -1.822e-02, -2.368e-02, 1.105e-01, 6.577e-02, -8.846e-01, 2.480e-02, -2.380e-02, -4.872e-02, -2.135e-01, 7.493e-02, 3.473e-01, -2.235e-03, 4.926e-02, -5.291e-02, -1.088e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(1.243e-01, -9.863e-01, 3.434e-01, 1.493e-02, -4.370e-02, -3.024e-02, -2.785e-02, -1.910e-02, 1.837e-02, 1.528e-01, -3.847e-01, 2.245e-01, -6.785e-02, 1.112e-01, 4.632e-02, -1.802e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-4.690e-02, -3.857e-01, 3.605e-01, 9.689e-02, 3.209e-02, -1.675e-01, 3.520e-02, 1.975e-01, 1.401e-01, 6.486e-03, 1.441e-01, 1.862e-01, -2.157e-02, -3.645e-02, -1.748e-03, -1.269e-01), r4);\n\tr5 = MulAdd(s1_0_1, M4(-9.847e-03, 2.534e-02, -6.394e-02, 2.495e-02, -4.174e-02, 1.885e-03, -5.653e-03, 2.002e-02, 5.350e-02, -4.181e-02, -1.187e-01, 4.690e-02, 3.316e-02, -3.259e-03, 2.545e-02, -1.801e-02), r5);\n\tr0 = MulAdd(s1_0_2, M4(-2.632e-01, -5.143e-02, -9.405e-02, -1.549e+00, -1.553e-02, 1.028e-01, -1.448e-02, 3.527e-03, -3.493e-02, -6.992e-02, 1.278e-01, 1.535e-01, -2.195e-02, -9.864e-03, -1.372e-02, 1.235e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.451e-02, 6.577e-02, 2.428e-01, 1.919e-01, 3.680e-03, 1.358e-02, 5.328e-02, -2.530e-02, 1.109e-01, -6.462e-03, -2.935e-01, -1.199e-02, 3.317e-02, 1.035e-02, -1.770e-03, 1.693e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.128e-01, 3.193e-01, -3.263e-02, 1.330e-01, -9.406e-03, -1.345e-01, -6.077e-03, 4.802e-03, 4.161e-01, 5.415e-02, 5.894e-03, -3.971e-01, 7.948e-02, 3.491e-02, 4.283e-02, -8.680e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-5.220e-02, 5.181e-01, -2.517e-01, -3.672e+00, 1.319e-01, -3.315e-02, -5.804e-03, 1.002e-02, -4.023e-01, -8.900e-01, 3.338e-01, 8.689e-01, -4.084e-02, 5.236e-02, 1.511e-02, 3.741e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-2.234e-02, -3.360e-01, 2.476e-01, -1.852e-01, -3.445e-03, 1.488e-01, -4.553e-02, 1.217e-02, -7.143e-02, 1.561e-01, 7.871e-02, 1.779e-01, -5.168e-03, -9.838e-02, 3.174e-03, 1.496e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(4.478e-02, -4.778e-02, -1.322e-01, 4.410e-02, -4.212e-03, -2.193e-03, 3.471e-02, 1.234e-03, 8.355e-02, 1.824e-01, 2.046e-01, -8.376e-02, -3.489e-02, -3.844e-03, -3.929e-02, -5.086e-04), r5);\n\tr0 = MulAdd(s1_1_0, M4(-2.412e-03, -6.887e-01, -9.984e-02, -7.340e-02, -9.223e-02, -6.536e-02, -6.282e-02, 9.191e-02, -1.284e-01, 8.842e-01, 1.162e-01, -3.595e-01, -1.029e-01, -6.610e-01, 2.610e-02, -5.631e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-3.972e-03, 1.794e-02, 1.425e-02, -1.986e-01, 3.016e-02, -7.934e-02, -4.296e-02, 1.135e-01, 7.205e-02, 1.425e-02, -9.946e-02, 3.623e-01, -2.146e-02, -2.802e-02, 6.191e-03, 1.950e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(4.222e-02, 3.879e-02, 3.311e-02, -1.819e-01, -2.054e-02, -3.849e-02, 1.110e-02, 8.157e-02, -3.955e-02, -2.616e-01, -2.498e-02, 8.519e-02, 5.238e-02, 3.234e-01, 2.018e-01, 5.223e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(1.034e-01, -7.643e-02, -1.218e-01, 3.675e-02, 7.251e-02, 1.399e-01, 2.938e-03, 1.539e-01, -1.153e-02, 2.806e-01, 1.514e-01, -7.057e-02, -6.571e-02, -1.479e-01, 1.818e-02, -2.331e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(3.931e-03, -2.607e-01, 6.008e-03, 9.548e-02, 2.974e-03, -8.406e-02, 6.892e-02, -8.740e-03, 2.874e-02, 3.619e-01, 8.783e-02, -2.112e-01, 5.896e-03, -7.320e-02, -4.820e-02, 5.048e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.436e-02, 1.020e-01, 4.920e-02, 1.763e-02, 7.530e-03, 1.604e-02, -6.166e-02, 1.472e-02, 6.479e-02, -1.705e-01, -1.043e-01, 2.216e-02, -1.144e-01, -3.310e-02, -6.358e-02, 2.424e-02), r5);\n\tr0 = MulAdd(s1_1_1, M4(-4.423e-01, -1.947e+00, 3.385e-02, 6.563e-02, 2.505e-01, 1.495e-01, 3.737e-03, 7.291e-02, 5.906e-01, 5.811e-02, 1.575e-02, -8.289e-02, -2.660e-01, 3.185e-02, -6.810e-02, 1.384e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.207e-01, -5.453e-02, -6.891e-02, -5.147e-02, 7.298e-02, 8.017e-02, -9.293e-02, 1.262e-02, -1.402e-01, -7.038e-02, 9.381e-02, 2.643e-01, 9.412e-02, -9.774e-03, 1.977e-02, 1.279e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.491e-01, 4.572e-01, 1.168e-01, 2.836e-01, 8.993e-02, -4.143e-01, -1.040e-01, -1.674e-01, -3.634e-02, -1.301e-02, -4.417e-02, -7.652e-01, 8.313e-02, -1.278e-01, 1.412e-01, -1.577e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-3.023e-03, -1.065e-01, -5.701e-01, -4.364e-01, 2.403e-02, -1.730e-01, 5.150e-02, 6.286e-02, -4.585e-01, 2.625e-01, 5.155e-01, 3.493e-01, -7.324e-02, 2.218e-02, -1.249e-01, -2.316e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.006e-02, 2.177e-01, 2.604e-01, 9.891e-02, -4.951e-02, 8.876e-02, -2.245e-02, -1.912e-02, -3.916e-02, -1.593e-01, -1.167e-01, 1.237e-01, 1.067e-02, -4.635e-01, 2.879e-03, -8.851e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-4.380e-02, 4.607e-04, -5.859e-02, -2.587e-02, 9.517e-02, 1.196e-01, 8.231e-02, -1.206e-02, 1.530e-02, -1.837e-01, 6.068e-02, 2.848e-03, -2.007e-02, -3.678e-02, -9.121e-02, 1.993e-02), r5);\n\tr0 = MulAdd(s1_1_2, M4(4.618e-02, 4.165e-02, -7.341e-03, -1.707e-01, 2.873e-02, -4.602e-02, 2.217e-02, -7.824e-03, -1.090e-01, -6.581e-01, -5.753e-02, 4.819e-01, 5.979e-03, 2.562e-02, 2.213e-02, -4.112e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(3.404e-02, -8.410e-02, 1.598e-02, 3.628e-02, -4.647e-03, 6.518e-03, -6.490e-02, -8.827e-03, -3.361e-02, 8.502e-02, -1.825e-01, 1.461e-02, -7.924e-03, 2.575e-02, -1.328e-02, -1.036e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.928e-01, 3.144e-01, -1.913e-02, -7.012e-01, 6.132e-02, 2.303e-01, 1.445e-02, 9.230e-02, -1.555e-01, -7.351e-02, -6.369e-02, 1.842e-01, -1.478e-01, 4.279e-02, 2.885e-02, 1.353e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(-2.181e-01, 1.142e-01, 3.367e-01, 2.184e-01, -1.984e-01, -1.511e-02, -3.887e-02, 9.412e-02, 1.132e+00, -2.542e-01, -5.739e-01, -1.602e-01, 1.880e-01, -1.041e-01, 5.412e-02, 1.106e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(-3.656e-02, 3.009e-01, 5.397e-03, 7.447e-02, 3.234e-02, -7.137e-02, 7.320e-02, 9.161e-03, 3.077e-02, -4.129e-01, -8.248e-02, -3.225e-02, 3.839e-03, 5.936e-02, -5.791e-03, 5.657e-03), r4);\n\tr5 = MulAdd(s1_1_2, M4(-3.205e-02, -9.163e-02, -1.902e-01, -1.336e-02, -6.379e-03, -6.319e-03, 1.841e-02, -3.703e-03, 6.810e-02, -7.585e-02, -1.373e-02, -2.564e-03, 3.639e-02, -8.754e-04, 3.635e-02, 5.273e-03), r5);\n\tr0 = MulAdd(s1_2_0, M4(3.185e-02, -5.584e-01, 7.914e-04, 1.831e-01, -9.746e-02, -7.546e-02, -2.651e-03, -1.508e-01, -5.301e-02, 4.737e-01, 2.611e-02, -3.228e-01, 4.904e-02, 2.407e-01, 2.920e-02, 1.247e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.661e-02, 1.763e-02, -2.005e-02, -6.671e-03, -3.350e-03, 3.450e-03, 2.422e-02, -1.241e-02, -2.392e-02, -4.046e-02, 4.853e-02, -1.026e-02, 4.060e-02, -1.381e-02, -1.310e-02, -4.621e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.431e-01, 1.207e-01, -2.626e-03, -8.007e-02, 2.235e-02, 1.720e-01, -7.606e-03, 5.101e-02, -1.681e-01, -1.115e-01, 7.627e-03, 1.005e-01, 2.672e-02, 8.270e-02, 5.277e-03, -1.488e-01), r2);\n\tr3 = MulAdd(s1_2_0, M4(3.385e-02, 1.897e-01, -1.337e-01, 2.788e-02, 4.957e-02, -9.340e-02, 4.440e-02, 1.078e-01, -6.039e-02, -3.368e-01, 2.864e-01, 4.994e-03, 2.456e-02, 9.198e-02, 7.582e-02, 8.453e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(9.124e-03, 1.065e-01, 6.251e-02, 4.291e-02, -3.109e-03, -3.807e-02, 6.604e-02, -2.708e-02, -1.948e-02, -1.763e-01, -7.604e-02, -8.152e-02, -7.439e-03, 1.505e-01, 5.330e-02, 5.444e-03), r4);\n\tr5 = MulAdd(s1_2_0, M4(1.737e-02, 6.141e-03, 4.232e-03, 2.339e-02, 6.390e-03, -3.503e-02, -2.116e-02, -2.079e-02, -3.289e-02, 5.023e-03, 1.815e-02, -3.528e-02, 3.537e-04, 4.765e-02, 2.004e-02, 5.219e-03), r5);\n\tr0 = MulAdd(s1_2_1, M4(2.482e-02, -7.105e-02, -2.602e-02, 3.668e-02, -8.363e-02, -1.998e-01, 5.308e-02, 1.415e-02, -1.432e-01, -1.395e-01, 8.693e-02, -2.002e-03, -6.179e-02, -5.057e-01, 3.221e-03, -2.066e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(3.918e-02, 2.459e-02, -1.018e-02, 8.869e-03, 1.557e-03, -5.491e-02, 1.782e-02, 3.733e-02, -6.801e-02, -1.835e-02, 1.950e-02, 1.301e-02, -2.994e-03, 8.884e-02, 1.845e-02, -2.866e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(7.429e-02, -1.394e-01, -1.750e-02, -3.685e-01, -6.098e-02, -9.242e-02, 2.444e-02, -3.875e-02, 1.730e-02, 2.527e-01, 1.567e-02, -3.481e-02, 2.213e-01, 1.249e-01, -9.574e-02, -1.224e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(6.613e-02, 3.584e-02, 1.127e-02, 9.494e-02, 4.364e-02, 4.783e-02, -1.056e-01, -5.670e-02, -1.929e-01, 5.240e-03, -1.846e-02, -9.621e-02, -6.775e-02, 1.228e-01, -4.222e-02, -1.602e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(2.662e-02, -2.005e-01, -2.145e-02, 8.358e-02, -9.796e-03, -5.299e-02, -3.214e-02, -7.935e-02, -1.018e-02, 1.246e-01, 9.490e-02, -1.753e-01, 7.212e-03, -2.625e-01, 1.149e-01, 1.220e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(4.038e-02, -5.042e-02, -7.008e-02, 2.152e-02, -3.488e-02, 3.063e-02, 3.743e-02, 1.558e-03, -6.678e-02, 4.283e-02, 5.017e-02, -3.162e-02, 1.392e-02, -3.474e-02, -1.671e-02, -1.333e-03), r5);\n\tr0 = MulAdd(s1_2_2, M4(5.508e-02, -1.382e-01, -5.714e-03, -5.045e-02, -6.733e-02, 2.571e-02, -2.083e-02, -2.313e-02, -3.533e-02, 5.969e-02, -1.005e-02, 2.587e-01, 6.310e-02, 5.321e-02, -8.110e-03, 1.502e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.659e-02, -1.777e-02, -7.739e-02, -1.036e-01, -9.478e-03, 2.833e-02, 1.184e-02, 9.928e-02, 6.067e-02, 2.685e-02, 1.337e-01, 1.078e-01, 1.166e-02, -5.275e-02, -6.537e-03, 2.212e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.032e-01, -2.835e-02, -1.953e-02, -1.445e-01, -6.169e-02, 3.066e-01, 3.305e-02, -3.574e-02, 1.686e-01, 6.597e-02, 1.482e-02, 1.643e-01, -4.949e-02, -2.287e-01, -2.958e-02, -2.113e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(6.439e-01, 3.796e-02, 5.662e-02, 8.209e-02, -1.175e+00, -3.492e-02, -3.409e-02, 1.282e-01, -6.897e-01, -4.955e-02, -3.352e-02, -1.978e-01, 6.096e-01, -1.053e-02, -3.877e-02, 1.861e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(1.544e-02, -1.887e-01, -2.053e-01, -6.446e-04, -1.061e-03, 1.014e-01, -9.313e-02, -3.197e-02, -2.029e-02, -4.448e-02, 2.680e-01, 6.931e-02, 5.463e-03, 9.046e-04, 1.733e-02, 1.861e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.509e-02, 9.510e-03, -3.081e-02, -1.645e-02, -1.282e-02, 9.605e-03, -5.224e-03, 1.353e-02, -2.009e-02, 6.638e-02, -2.573e-03, 3.337e-02, -1.177e-02, 2.413e-02, 2.590e-02, 2.263e-03), r5);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(4.015e-01, -2.102e-02, -2.429e-01, -5.299e-01, 1.119e-01, 2.416e-01, 2.617e-02, 1.400e-02, 2.770e-01, -2.456e-01, -1.166e-01, 3.024e-02, -3.827e-02, -2.709e-01, -3.283e-02, 1.494e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(4.266e-02, -3.304e-02, 5.364e-02, -2.265e-01, 1.331e-02, -2.357e-02, -4.258e-02, -8.737e-02, 8.693e-02, -1.847e-02, -3.194e-02, 1.898e-02, 1.389e-02, 1.060e-01, -2.497e-01, 1.982e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.058e-01, 2.726e-01, 8.275e-02, -2.532e-02, 5.663e-02, 2.571e-01, -1.563e-01, 3.099e-02, -7.051e-02, 1.503e-01, 6.374e-01, 1.489e-02, 1.291e-01, -3.781e-01, -4.515e-02, 3.896e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(-2.634e-01, 3.557e-01, -7.735e-03, -2.752e-02, -2.137e-01, -2.281e-01, 3.638e-02, 1.224e-01, 9.965e-02, -9.478e-02, -3.452e-02, 4.621e-03, 1.103e-01, 4.077e-01, 2.696e-01, 4.046e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(-2.665e-01, -4.546e-02, -1.360e-01, -3.149e-01, 5.241e-03, 1.139e-01, 2.091e-02, 7.281e-02, -4.613e-02, 3.664e-01, 1.942e-02, 1.437e-01, 1.686e-01, -7.401e-02, 8.411e-02, 1.383e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(1.245e-01, 1.742e-01, 1.333e-01, 2.650e-02, 4.065e-02, 1.290e-02, 7.628e-03, -1.730e-03, -2.177e-02, 9.036e-03, -7.003e-02, 5.492e-02, -2.249e-03, -7.309e-02, -8.035e-02, -5.326e-02), r5);\n\tr0 = MulAdd(s0_0_1, M4(-2.251e-01, -1.387e-01, 8.320e-02, 8.302e-02, 1.189e-01, -8.084e-02, -8.627e-03, -5.195e-01, -5.590e-02, 1.860e-01, 6.908e-02, -3.877e-01, -4.809e-02, -4.047e-02, -3.046e-02, -3.115e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(3.433e-02, -1.057e-01, 2.285e-01, 3.091e-01, 8.685e-03, 1.278e-01, -1.176e-02, -9.783e-03, -5.748e-02, -9.749e-01, 2.629e-01, 8.856e-01, 1.515e-01, 7.510e-02, 3.186e-02, 6.912e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(3.856e-01, -4.239e-01, 8.139e-02, 3.284e-01, -7.020e-02, -6.148e-02, 8.176e-02, 6.431e-02, -1.145e-01, -7.123e-01, 1.831e-01, 5.890e-02, -2.443e-01, 9.911e-02, -1.188e-03, 7.729e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.427e-01, -5.597e-02, -1.981e-01, 1.262e-01, 6.962e-02, 6.334e-02, -8.136e-02, -1.438e-02, 5.822e-02, 1.319e-01, -1.795e-01, -1.745e-01, -3.621e-03, 1.972e-01, -1.512e-01, 5.584e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-3.657e-01, -7.104e-03, 1.938e-01, -9.776e-02, -3.503e-02, 6.665e-02, 4.824e-02, -1.118e-01, -4.074e-02, 3.474e-02, -6.319e-02, 1.570e-01, -1.374e-01, 4.885e-02, -1.373e-01, -3.448e-01), r4);\n\tr5 = MulAdd(s0_0_1, M4(9.131e-02, -9.379e-02, -5.736e-02, -1.014e-01, 3.277e-02, 1.486e-02, 6.436e-03, -4.217e-03, 3.742e-01, 4.725e-02, -1.178e-03, -1.184e-02, -2.008e-02, 1.133e-01, 8.837e-02, 2.124e-02), r5);\n\tr0 = MulAdd(s0_0_2, M4(-1.111e-01, -7.208e-02, 3.028e-02, -1.451e-01, 4.546e-02, -4.210e-02, -1.125e-02, -4.989e-02, -1.674e-01, -9.091e-02, 2.980e-02, 1.082e-01, 2.741e-02, 5.383e-02, -1.920e-02, 5.496e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.812e-02, 4.293e-02, 8.666e-02, 1.886e-01, 9.783e-03, 4.309e-02, -2.421e-03, -5.633e-03, -1.601e-02, -7.347e-02, 6.617e-02, -7.518e-02, -1.034e-02, 9.076e-03, -3.079e-02, 1.757e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.397e-01, 7.818e-02, -3.909e-02, 1.300e-01, -3.502e-02, 2.597e-01, 1.491e-02, -5.376e-02, -1.215e-01, 7.666e-02, -9.589e-02, 3.628e-02, -5.700e-02, 6.541e-03, -4.462e-02, 1.270e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(2.301e-02, 1.177e-01, 1.586e-01, 2.202e-01, 3.281e-02, 9.729e-02, 2.146e-02, -6.890e-02, -1.443e-01, -1.362e-01, -7.563e-02, -1.150e-01, -2.355e-01, -3.193e-01, 1.131e-01, 2.884e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-8.247e-02, -2.047e-01, -1.685e-01, -5.495e-02, 1.466e-02, 1.101e-03, -2.731e-02, 1.705e-02, -5.744e-02, -1.553e-01, 5.972e-02, -1.206e-01, -1.202e-03, 2.587e-01, 1.604e-01, 3.110e-01), r4);\n\tr5 = MulAdd(s0_0_2, M4(7.859e-03, -1.736e-02, 2.068e-02, 1.345e-03, 4.903e-02, 4.762e-02, 3.717e-02, -9.825e-04, 3.556e-02, 3.860e-02, 7.160e-02, -2.420e-02, 4.759e-03, 9.252e-02, 8.049e-02, -1.838e-02), r5);\n\tr0 = MulAdd(s0_1_0, M4(-1.721e-01, 1.070e-02, -2.542e-01, -1.956e-01, 2.193e-01, -3.861e-01, -8.869e-02, 4.519e-02, 7.476e-02, -3.858e-01, 5.217e-02, -9.913e-02, -1.531e-01, 1.546e-02, 6.907e-02, -1.428e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.056e-02, 3.758e-02, -9.558e-02, 1.949e-02, 4.001e-02, 5.727e-02, 3.129e-02, 5.664e-02, 3.619e-03, -1.543e-01, -4.697e-02, -1.442e-01, 2.638e-04, -7.837e-02, 5.861e-02, 2.034e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(2.382e-01, -3.365e-01, 1.480e-01, 1.541e-01, -9.798e-02, 9.195e-02, 2.193e-01, 1.166e-01, -2.225e-01, -3.989e-01, 9.824e-01, 3.702e-01, 2.571e-01, 7.914e-02, 7.111e-02, 3.114e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.163e-01, 9.920e-02, -7.175e-02, 1.989e-01, 6.212e-02, 5.864e-02, -1.852e-01, 6.303e-02, 2.283e-01, 5.014e-02, -2.810e-01, 4.946e-02, 1.264e-01, 1.430e-01, -3.032e-01, 1.758e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(2.318e-01, 3.032e-03, 1.536e-01, 1.798e-01, 1.587e-04, 1.635e-01, -2.848e-02, 9.298e-02, -4.649e-02, 1.259e-01, 7.738e-02, -1.452e-01, 3.917e-02, -3.976e-01, 2.649e-01, -7.836e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(1.971e-03, -2.013e-01, -1.855e-01, 3.055e-01, -6.437e-02, -3.424e-03, -4.885e-02, 1.113e-02, 1.015e-01, 6.585e-02, 4.454e-02, -8.925e-02, -5.437e-02, 4.746e-02, -5.160e-02, 3.472e-02), r5);\n\tr0 = MulAdd(s0_1_1, M4(1.972e-01, -1.054e-01, 3.883e-01, 2.077e-01, -2.507e-01, -7.339e-02, 6.754e-02, -3.749e-01, 1.782e-01, 6.689e-01, -2.230e-02, 5.633e-02, -1.178e-01, -1.666e-01, 5.103e-03, -3.683e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-2.377e-01, 9.717e-02, -2.566e-01, -8.952e-02, -6.909e-02, -1.113e-01, 2.291e-02, -9.850e-02, 4.303e-02, 8.759e-01, -8.716e-02, -1.424e-01, 1.646e-02, 6.093e-02, -3.069e-02, 1.188e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-4.068e-01, 6.988e-02, -7.965e-02, -5.098e-01, -2.605e-01, -4.852e-01, -9.998e-02, 2.139e-01, 9.459e-02, -1.070e+00, -1.254e+00, -1.218e-01, 1.168e-02, -2.784e-01, -3.540e-02, -1.064e+00), r2);\n\tr3 = MulAdd(s0_1_1, M4(4.401e-01, -3.751e-01, 1.869e-01, -1.559e+00, -1.104e-01, -2.529e-01, 9.742e-02, 1.921e-02, -1.830e-02, 1.564e-02, 2.960e-01, 7.546e-01, -5.717e-02, -1.305e-01, 1.603e-01, 4.341e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(3.547e-01, 1.190e-01, -1.235e-01, 3.522e-01, 3.079e-02, 3.942e-02, -7.605e-02, 2.930e-02, 2.450e-02, -2.014e-01, 4.760e-02, 8.316e-02, 5.023e-02, 9.554e-02, -6.132e-01, 1.585e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(-8.973e-02, -6.480e-02, 1.770e-01, -2.830e-01, 1.162e-03, -5.532e-02, -4.111e-02, 2.396e-03, -5.508e-01, 4.609e-03, -1.073e-01, 1.105e-01, -5.065e-03, 8.722e-02, 1.226e-01, -4.763e-03), r5);\n\tr0 = MulAdd(s0_1_2, M4(8.329e-02, 8.446e-02, -4.678e-02, 1.907e-01, 6.777e-03, -1.929e-02, 3.196e-03, -5.051e-02, -8.426e-02, 7.158e-02, 3.634e-03, 2.287e-01, -3.845e-03, 1.740e-01, -6.201e-02, 8.188e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-3.857e-03, -7.300e-02, -9.486e-02, -1.480e-01, -4.967e-03, -1.141e-02, -5.300e-03, -3.746e-02, -1.172e-01, -2.490e-02, 1.927e-02, -5.349e-02, 1.698e-02, -8.438e-03, -5.138e-02, 5.115e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(9.431e-02, 5.297e-03, -6.190e-02, -6.277e-02, 5.885e-02, -2.210e-01, -5.217e-03, 1.199e-01, 6.334e-02, -8.733e-02, -4.837e-02, 2.846e-02, 3.287e-02, -4.955e-03, 4.998e-02, -1.114e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(2.905e-01, -1.063e-01, -9.438e-02, 2.505e-01, 5.559e-02, -1.021e-01, 3.978e-02, 4.235e-02, -1.724e-01, 6.145e-02, 1.019e-01, -3.857e-01, 9.630e-02, 5.396e-02, 8.732e-02, 2.279e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(9.165e-02, 2.275e-01, 1.506e-01, 5.006e-02, -1.564e-02, -2.289e-02, 1.847e-02, -2.917e-02, 2.738e-03, -1.285e-01, 1.054e-01, -4.964e-02, 5.590e-02, 9.590e-02, 1.087e-01, 1.293e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(1.791e-02, 1.169e-02, 1.222e-01, 5.637e-02, -2.350e-02, 2.492e-03, 8.223e-03, 7.885e-03, 9.583e-02, -7.889e-02, -5.975e-02, -1.682e-02, -1.971e-02, -4.474e-02, -5.001e-02, 3.809e-02), r5);\n\tr0 = MulAdd(s0_2_0, M4(-2.770e-02, -8.557e-02, -1.520e-02, -7.393e-02, -1.405e-02, -1.795e-01, -3.169e-02, 1.451e-01, -1.497e-01, -1.592e-01, -5.896e-02, 2.808e-02, -1.127e-01, -8.184e-02, 1.815e-02, 9.503e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(3.087e-02, -8.812e-02, -1.090e-02, -2.072e-01, 4.107e-02, 3.458e-02, -2.761e-02, 6.800e-02, 7.881e-02, 7.718e-02, -4.150e-02, 1.326e-02, 1.199e-02, 1.383e-02, 4.190e-02, 8.378e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.763e-01, -4.274e-02, -1.688e-01, 5.404e-02, 9.071e-02, 2.891e-01, 1.628e-02, 9.292e-02, -9.589e-02, -1.936e-01, 5.089e-02, 1.352e-01, 1.091e-01, 6.775e-02, 1.700e-02, 3.214e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(1.049e-01, -3.451e-01, -5.850e-03, -2.655e-01, 2.737e-02, 1.146e-01, -1.659e-01, 2.202e-02, 7.828e-02, -1.887e-01, 7.443e-02, 7.973e-02, 1.619e-03, -2.412e-02, 5.549e-02, 1.023e-01), r3);\n\tr4 = MulAdd(s0_2_0, M4(-1.691e-02, -7.196e-02, -1.169e-01, -1.129e-01, -1.593e-02, -8.302e-02, 1.704e-02, 1.968e-02, 8.916e-02, -4.105e-02, -1.155e-01, 2.069e-02, 6.122e-04, -2.451e-03, 1.969e-01, 4.709e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(3.035e-04, -2.088e-02, -5.705e-02, -2.181e-02, -1.234e-02, -2.169e-03, -1.714e-02, -3.090e-03, -7.826e-02, -1.701e-02, 4.268e-02, -4.064e-02, 3.744e-03, 4.274e-02, -4.225e-02, -1.995e-02), r5);\n\tr0 = MulAdd(s0_2_1, M4(6.795e-02, -2.256e-01, 3.743e-02, -1.567e-01, 1.040e-01, 2.506e-01, -2.916e-02, 5.885e-02, -2.357e-02, 4.036e-01, 7.393e-02, 1.381e-01, 1.567e-02, 1.390e-01, -1.939e-02, 2.044e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.480e-02, 6.767e-02, 4.804e-02, 1.915e-02, 1.547e-02, -3.255e-04, -1.448e-03, -6.695e-03, -8.528e-02, 1.026e-01, -2.989e-02, 1.603e-02, 3.126e-02, 8.622e-03, 5.345e-02, 4.526e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-3.283e-01, 1.911e-01, -9.028e-03, 1.130e-01, -6.672e-02, -2.032e-01, -3.283e-02, -1.758e-01, 1.089e-01, -1.437e-01, -2.904e-01, -2.036e-01, 6.772e-02, 4.437e-03, 9.226e-02, -2.842e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(4.020e-02, 1.196e-01, -2.198e-01, -2.858e-02, -2.695e-02, -8.850e-03, -1.685e-02, 1.164e-01, -2.104e-01, -5.595e-02, 8.423e-02, 5.067e-02, -1.541e-02, 2.594e-01, 9.699e-02, 2.182e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(-3.917e-02, -8.885e-02, 3.226e-02, -8.033e-02, 1.176e-02, 2.758e-01, 8.377e-03, 3.049e-02, 4.942e-02, 2.980e-01, 8.384e-02, 3.285e-02, -4.237e-02, 5.826e-02, 2.013e-02, 7.742e-03), r4);\n\tr5 = MulAdd(s0_2_1, M4(-3.162e-02, -4.353e-04, 1.328e-01, 2.824e-02, 3.033e-02, 5.994e-02, 2.212e-02, 2.173e-02, 1.305e-01, 1.479e-01, 1.558e-01, 4.154e-02, -3.784e-02, 2.209e-02, -2.825e-02, 6.329e-03), r5);\n\tr0 = MulAdd(s0_2_2, M4(5.879e-02, 2.428e-01, -8.977e-04, 1.203e-01, -1.124e-02, 6.571e-02, 1.380e-02, 2.847e-02, -1.200e-01, -3.748e-01, 5.333e-03, -3.771e-03, -4.969e-03, 1.829e-01, -1.332e-03, 1.250e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(4.175e-03, 1.002e-02, 1.754e-02, 1.298e-01, 2.663e-03, -2.899e-02, 4.987e-03, -2.543e-02, 3.650e-02, 1.899e-01, -9.070e-02, -1.735e-02, -1.903e-02, -1.658e-02, 3.188e-02, 5.218e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(8.529e-02, 7.258e-02, 9.976e-02, 3.521e-03, -1.467e-03, -5.242e-02, -3.457e-02, 1.352e-02, 2.554e-01, 1.074e+00, -1.589e-01, -2.805e-01, 3.418e-02, 8.967e-02, 4.909e-02, -1.000e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(3.737e-01, -5.808e-02, 1.255e-01, 9.315e-02, -5.766e-02, 7.730e-02, 8.789e-02, -3.273e-02, -1.837e+00, 3.265e-01, 3.671e-02, -2.333e-01, -1.622e-01, 1.104e-01, 1.165e-01, 1.845e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(5.928e-03, 3.618e-02, -4.963e-04, 1.421e-01, -1.349e-03, -4.581e-02, -1.061e-02, 2.315e-02, 3.028e-02, -2.684e-01, -1.072e-01, -1.370e-02, -7.834e-03, -8.614e-02, -1.968e-02, 3.285e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(4.549e-02, 2.822e-02, -2.520e-02, -1.383e-02, 2.603e-03, -7.556e-03, -2.203e-02, -1.029e-02, -7.282e-02, -9.058e-02, -1.333e-01, -2.276e-02, 6.353e-03, -3.997e-03, 3.413e-03, -5.163e-03), r5);\n\tr0 = MulAdd(s1_0_0, M4(8.914e-02, 6.086e-02, -2.372e-02, 1.686e-01, -5.372e-02, -5.286e-04, 4.848e-02, 4.023e-02, 7.293e-02, -5.696e-02, -4.479e-02, -1.017e-04, -3.992e-02, 3.781e-01, -2.316e-02, -3.078e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(7.298e-02, -2.854e-03, 1.095e-02, 1.596e-02, 7.961e-03, 4.333e-02, 2.064e-02, 1.820e-02, 8.259e-02, 5.605e-01, 8.040e-03, -2.212e-01, -8.707e-02, -5.446e-02, -1.973e-02, -4.845e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.767e-02, -5.355e-02, 2.941e-02, -6.740e-02, 1.268e-02, -1.834e-01, -1.401e-01, 5.954e-02, -7.196e-02, -2.028e-01, 1.342e-01, -7.449e-02, 1.654e-01, 7.655e-02, 2.504e-02, -6.400e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-4.563e-02, 1.308e-02, -6.613e-02, 5.080e-02, 5.706e-02, 2.216e-01, -1.205e-01, -5.547e-02, -2.750e-01, 6.719e-04, 2.072e-01, 1.757e-01, 5.622e-02, 2.066e-01, 8.210e-02, 3.266e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(5.524e-03, 4.096e-02, 9.842e-02, 4.995e-02, 1.098e-03, -1.094e-01, -1.292e-02, 5.837e-03, -5.520e-03, 3.449e-02, -1.277e-02, 5.851e-02, -8.174e-03, -1.096e-01, -8.724e-02, -9.321e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(2.133e-02, -3.196e-02, -1.748e-02, 1.339e-02, -4.790e-02, 1.186e-02, 3.040e-02, -9.746e-03, 3.201e-02, 4.658e-02, 7.614e-02, -2.997e-02, 7.639e-02, -3.479e-02, -3.897e-02, 2.797e-02), r5);\n\tr0 = MulAdd(s1_0_1, M4(1.577e-01, 6.654e-03, 2.199e-01, -8.648e-01, 1.125e-01, -1.257e-01, -1.240e-02, 4.619e-02, -2.777e-02, -3.095e-01, 1.584e-03, -9.322e-02, -2.173e-01, 9.259e-02, -7.328e-02, -3.106e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.318e-01, -5.092e-03, 2.024e-01, -1.261e+00, 1.680e-02, -7.109e-02, -1.972e-02, 1.689e-01, -9.008e-02, 3.606e-01, -2.998e-01, -1.485e+00, 1.143e-01, 2.176e-01, -1.147e-01, -1.134e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-5.002e-02, -2.267e-01, 6.806e-02, -1.514e-01, 7.063e-02, 1.101e-01, -2.684e-02, 3.105e-02, 9.391e-02, 4.148e-01, 1.841e-01, 1.678e-01, -1.766e-01, 3.381e-01, 1.000e+00, 1.577e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(2.556e-02, -2.041e-01, -2.168e-01, -2.848e-01, 5.357e-02, -3.546e-01, 7.531e-02, -6.170e-02, 2.281e-01, -1.394e-01, -9.594e-02, -1.040e-01, 2.365e-01, 1.338e-01, 8.099e-02, 2.456e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-1.660e-01, 5.418e-01, -1.252e-01, 9.545e-02, 6.715e-02, 8.207e-02, 3.014e-02, 1.460e-01, 3.127e-01, 1.096e-01, 1.284e-01, 1.979e-01, -8.451e-02, 2.182e-01, 2.560e-01, -4.375e-01), r4);\n\tr5 = MulAdd(s1_0_1, M4(1.244e-02, -5.261e-02, 1.580e-01, -1.528e-01, -9.622e-03, 8.638e-03, -4.010e-02, 1.007e-02, -1.185e-01, 6.286e-02, -2.084e-01, 1.723e-02, 2.916e-01, -5.220e-02, -1.122e-01, -2.027e-02), r5);\n\tr0 = MulAdd(s1_0_2, M4(6.547e-02, 5.873e-02, 5.042e-02, -7.298e-01, 1.991e-02, 5.249e-02, -1.020e-02, 8.425e-02, 1.189e-01, 4.307e-02, 3.943e-02, 4.894e-01, -6.658e-02, 8.930e-02, 6.556e-02, -1.037e+00), r0);\n\tr1 = MulAdd(s1_0_2, M4(5.440e-02, 3.461e-02, -1.031e-01, 3.898e-01, -3.546e-02, -3.050e-02, -7.368e-02, 1.521e-01, -1.583e-02, 4.914e-01, 3.544e-02, -2.076e-01, 9.875e-02, 2.716e-01, 1.334e-02, -1.292e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(-9.044e-02, -1.316e-01, 8.527e-02, 3.973e-01, -7.279e-02, -8.441e-02, 1.011e-02, 6.788e-02, 1.790e-02, -1.170e-01, -1.307e-01, -3.677e-02, 2.122e-01, 3.633e-01, 3.201e-02, -4.572e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(5.636e-04, -1.709e-01, 1.782e-01, 1.802e-02, 6.875e-02, -2.029e-01, -7.468e-02, -2.924e-02, 1.352e-01, 1.620e-01, 3.138e-01, 1.338e-01, -6.322e-02, 2.042e-01, 2.462e-01, 3.628e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(3.263e-01, 1.489e-01, 1.616e-01, 2.406e-01, -8.978e-03, -8.315e-03, 7.150e-02, 1.921e-03, -1.042e-01, -7.919e-02, -2.200e-01, -7.378e-02, -1.140e-03, -2.569e-01, 1.951e-02, 1.855e-01), r4);\n\tr5 = MulAdd(s1_0_2, M4(-5.216e-02, 1.176e-02, -9.124e-02, -3.236e-02, 6.237e-02, -4.826e-02, -6.274e-02, 1.659e-02, 1.702e-02, -1.393e-01, 6.755e-02, 3.082e-02, 6.543e-01, 7.013e-03, -9.220e-03, -1.415e-02), r5);\n\tr0 = MulAdd(s1_1_0, M4(4.616e-02, 7.221e-02, 1.102e-02, 2.451e-01, 1.316e-01, 3.378e-01, 1.086e-02, -8.918e-02, 1.459e-01, 3.760e-01, 2.750e-01, -3.772e-03, -1.919e-01, -4.813e-01, -1.556e-02, 5.232e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(4.645e-02, 1.136e-02, 2.789e-02, -1.817e-02, 2.469e-02, 5.968e-03, -3.343e-02, 2.759e-02, -6.500e-02, -3.474e-01, 9.132e-02, -9.520e-02, 2.562e-02, -2.679e-02, 2.722e-02, -1.153e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(4.429e-02, 1.184e-01, 1.941e-02, 1.272e-01, -3.574e-02, 3.250e-01, 5.631e-02, -7.298e-02, -1.154e-01, 1.403e-01, 1.694e-01, -6.374e-02, -3.759e-02, -3.334e-01, -1.607e-01, 1.775e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(7.542e-02, -2.520e-01, 1.262e-01, 4.899e-02, -9.660e-02, -3.393e-01, 2.087e-02, 2.813e-02, -1.649e-01, -5.490e-02, 1.561e-01, -8.310e-02, -5.437e-02, 8.948e-02, 2.557e-01, -1.648e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(1.980e-02, -1.690e-01, -5.265e-02, 2.291e-01, -3.521e-03, 2.157e-01, 1.127e-01, 1.184e-02, -3.737e-03, 4.224e-02, -1.456e-01, 2.360e-02, 1.826e-02, -3.069e-02, -7.330e-03, -1.062e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.759e-02, 8.813e-02, -3.847e-02, 3.619e-02, 3.894e-02, 3.028e-02, 2.083e-02, 7.281e-03, -2.221e-02, -6.812e-02, -9.787e-02, -2.959e-01, 2.288e-02, -6.909e-03, -1.111e-02, -8.827e-03), r5);\n\tr0 = MulAdd(s1_1_1, M4(4.514e-01, -5.385e-02, -1.183e+00, -1.273e-02, 5.142e-01, -3.634e-01, -4.651e-02, -2.430e-01, -3.994e-01, -3.373e-01, -2.723e-01, -2.542e-01, -2.064e-01, -1.513e+00, -2.418e-02, -2.954e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-3.535e-01, 3.662e-02, 1.372e-01, -1.614e-01, 7.834e-02, 1.733e-01, -1.329e-01, -2.998e-02, 5.627e-02, -5.953e-01, 8.892e-03, -1.142e+00, 6.665e-02, -2.160e-02, 8.966e-03, 2.912e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.113e-01, 1.641e-01, -2.583e-02, -6.781e-02, 1.395e-02, 8.006e-01, 5.918e-01, 1.735e-02, 3.431e-02, 6.641e-02, -3.974e-01, -2.121e-01, 2.325e-01, -2.002e-01, 1.131e-01, -2.959e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(3.617e-01, 4.978e-02, -6.253e-01, 5.594e-01, 1.953e-01, 1.034e-01, -9.940e-02, 2.174e-02, 1.046e-01, 2.562e-02, -6.426e-01, 7.547e-03, 5.670e-02, 1.007e-01, -1.577e-01, 4.162e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.423e-01, -1.734e+00, -4.435e-01, -1.891e-01, -3.027e-02, 5.069e-01, -6.573e-02, 4.286e-02, -3.213e-01, -5.776e-02, -1.507e-02, -2.183e-01, 6.288e-02, -3.100e-01, -1.553e-01, 2.612e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-4.985e-02, -7.572e-02, 1.510e-02, 6.827e-01, -6.324e-02, -8.869e-02, -9.758e-02, -7.819e-02, 1.163e-01, -5.038e-02, 2.745e-01, 2.277e-01, -2.017e-01, 2.846e-02, 1.164e-01, -7.765e-02), r5);\n\tr0 = MulAdd(s1_1_2, M4(1.585e-01, 3.677e-01, 5.122e-02, 1.797e-01, -2.022e-01, 5.011e-02, 6.718e-02, -9.180e-01, -7.137e-03, -2.908e-01, -2.376e-02, -7.556e-02, 1.798e-01, -5.930e-03, 2.433e-02, -3.537e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(3.803e-01, -1.152e-01, -1.793e-02, -5.702e-02, 5.058e-02, 3.274e-02, -1.706e-02, -1.921e-01, 5.828e-03, -4.991e-01, 7.948e-02, -2.585e-01, 4.852e-03, -2.678e-02, 4.007e-02, 7.495e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(-3.709e-01, -3.368e-01, -2.040e-02, -2.355e-01, -1.822e-01, -2.931e-01, 5.740e-02, 2.134e-01, 8.179e-02, -1.948e-01, 6.829e-02, -5.312e-02, 8.149e-03, -2.033e-01, -2.429e-01, -4.595e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(3.990e-01, 2.628e-01, 4.958e-01, -1.671e+00, 1.812e-01, 7.065e-02, 6.206e-02, 1.469e-01, -1.033e-01, -7.008e-02, -4.624e-01, -2.439e-01, -2.464e-02, 6.226e-02, -1.402e-01, -8.963e-03), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.343e-01, 2.623e-01, -6.227e-01, -1.262e-01, -4.082e-03, 1.896e-01, -4.328e-02, -9.211e-02, 9.871e-02, 3.969e-02, 2.549e-01, 1.297e-02, -3.695e-02, 1.309e-02, -8.209e-02, 1.060e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(1.170e-01, 1.033e-01, 4.656e-02, -2.706e-03, 3.661e-01, 1.624e-02, -3.483e-02, 4.135e-03, -5.558e-02, 1.880e-01, -1.042e-01, 1.400e-02, 3.139e-01, 4.372e-02, 3.006e-02, 3.304e-02), r5);\n\tr0 = MulAdd(s1_2_0, M4(4.505e-02, -2.045e-01, -1.396e-02, 2.837e-01, 3.440e-03, -4.819e-01, -3.666e-03, 1.023e-01, -4.285e-02, 5.546e-01, -2.138e-02, -8.477e-03, 2.706e-02, 5.326e-01, 2.035e-02, -8.116e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.505e-02, -2.515e-02, 4.842e-03, 3.074e-02, 1.423e-02, -3.425e-02, 4.781e-02, -6.482e-02, -4.785e-02, -2.153e-01, -1.416e-02, -1.825e-01, -3.930e-02, 3.416e-02, -3.025e-02, -5.917e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-9.077e-03, 1.212e-01, -4.006e-03, 1.464e-01, 1.852e-02, -2.028e-01, -5.282e-02, 4.233e-03, 1.265e-01, 1.096e-01, 7.318e-02, -1.145e-01, 3.780e-02, 2.213e-01, -1.091e-01, -1.184e-01), r2);\n\tr3 = MulAdd(s1_2_0, M4(3.568e-03, -1.402e-01, -2.147e-02, -1.998e-02, 8.632e-02, 5.380e-02, -7.316e-02, -2.005e-02, -4.016e-02, -1.527e-01, 2.310e-01, 7.552e-02, 1.737e-02, 1.198e-01, -2.372e-03, -7.077e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-5.266e-03, 1.279e-02, 8.623e-02, 3.265e-02, -2.159e-02, -9.585e-02, -3.389e-02, 1.997e-02, 3.697e-02, 1.848e-01, 8.271e-02, -1.954e-02, -9.308e-03, 1.577e-01, 1.046e-01, 3.103e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-1.035e-02, -2.616e-02, -1.744e-02, -3.872e-02, -9.979e-03, 2.823e-02, 1.020e-02, 4.416e-03, 9.615e-03, -2.356e-02, -3.870e-02, 7.200e-02, -3.031e-02, 2.825e-03, -1.179e-02, 3.155e-02), r5);\n\tr0 = MulAdd(s1_2_1, M4(1.140e-01, -1.699e-01, 3.958e-02, 3.886e-03, -1.152e-01, -2.581e-01, -3.095e-02, 1.369e-01, 6.437e-02, 5.223e-02, 5.770e-02, -2.097e-01, -6.860e-02, -5.902e-01, -2.936e-02, 9.948e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-5.384e-02, -6.412e-02, -1.029e-02, 1.635e-01, 4.660e-03, 5.558e-02, 5.108e-02, 5.344e-03, 1.551e-01, 1.752e-01, 6.901e-02, -2.619e-01, 3.691e-02, -1.118e-01, 1.593e-02, 3.557e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(2.284e-01, 3.883e-01, 2.654e-02, -1.657e-01, -3.153e-01, -1.821e-01, -7.164e-02, 4.009e-01, -2.502e-01, 1.448e-01, -1.961e-01, 3.157e-01, 1.085e-01, 1.983e-01, 8.387e-02, 1.234e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(4.968e-01, -6.407e-02, 1.549e-01, 1.421e-01, 2.893e-02, 5.351e-02, -1.890e-01, 7.233e-02, 2.986e-02, 1.858e-01, -6.886e-02, -8.424e-02, 1.052e-01, -3.504e-02, 4.928e-02, -8.506e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-1.123e-02, -2.720e-01, 1.447e-01, 3.635e-02, -5.405e-03, -2.434e-02, -1.885e-01, 4.421e-02, -3.238e-02, -1.191e-01, -2.183e-02, 3.736e-02, 9.432e-03, -2.572e-01, 9.171e-02, 2.610e-03), r4);\n\tr5 = MulAdd(s1_2_1, M4(2.612e-03, 1.461e-02, 1.537e-01, -1.479e-01, -2.168e-02, -5.106e-02, -1.515e-02, 8.238e-03, -1.077e-02, 1.181e-01, 5.784e-02, -3.609e-02, -1.940e-02, -3.791e-02, -2.396e-02, -2.691e-02), r5);\n\tr0 = MulAdd(s1_2_2, M4(-1.358e-02, 2.307e-01, -7.764e-03, 5.708e-02, 1.664e-01, 4.667e-01, -3.922e-03, 1.617e-01, 4.087e-02, -1.379e-02, 1.378e-02, 1.841e-01, 1.309e-01, 1.589e-01, 1.373e-02, 1.765e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(2.678e-02, 4.694e-03, 9.009e-02, -1.789e-02, -1.641e-02, 3.849e-02, 4.053e-02, 2.310e-01, -1.097e-01, 6.804e-02, -4.231e-03, -8.897e-02, 8.672e-03, -1.378e-01, 6.678e-02, 3.341e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.635e-02, 8.401e-02, 2.754e-02, 4.510e-01, -1.965e-01, -3.162e-01, -1.400e-01, 3.587e-02, 1.102e-01, -5.223e-01, 8.018e-02, 4.116e-02, -5.664e-02, -3.624e-01, 1.114e-01, -6.018e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(-1.233e+00, -7.704e-02, 1.616e-01, -1.448e-01, -1.275e+00, -3.369e-01, 3.960e-03, 5.915e-02, 8.689e-01, -2.592e-02, 2.213e-01, 4.430e-01, 9.719e-01, -2.752e-02, -2.927e-02, 1.078e-01), r3);\n\tr4 = MulAdd(s1_2_2, M4(-2.195e-02, 2.106e-01, -5.947e-02, -6.821e-02, -2.624e-03, 4.607e-01, 7.432e-03, 1.121e-01, 1.042e-02, -1.903e-01, -6.145e-02, 3.211e-02, -2.953e-03, 1.240e-01, -3.347e-02, 5.151e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-3.081e-02, 1.052e-01, 2.866e-01, 1.327e-02, 1.726e-01, 6.470e-02, 9.263e-02, -5.419e-03, 4.332e-02, -9.253e-02, -4.486e-02, 1.112e-03, 8.085e-02, 4.129e-02, -1.084e-02, 2.810e-02), r5);\n\tr0 = max(r0, 0.0);\n\tT6[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT7[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT8[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT9[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT10[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT11[gxy] = r5;\n}\n\n//!PASS 3\n//!DESC conv2 (24x24)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T6, T7, T8, T9, T10, T11\n//!OUT T0, T1, T2, T3, T4, T5\n\n#define L0(x, y) V4(O(T6, x, y))\n#define L1(x, y) V4(O(T7, x, y))\n#define L2(x, y) V4(O(T8, x, y))\n#define L3(x, y) V4(O(T9, x, y))\n#define L4(x, y) V4(O(T10, x, y))\n#define L5(x, y) V4(O(T11, x, y))\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(3.606e-03, -2.822e-03, 2.421e-02, 1.363e-01, -2.545e-02, -3.528e-02, 1.087e-03, -6.426e-02, 1.293e-02, 8.996e-03, -2.088e-02, -1.007e-01, -6.060e-03, 2.838e-03, 4.442e-02, 2.384e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-9.950e-02, 5.331e-02, 8.149e-04, 1.371e-02, -1.767e-01, 1.897e-02, -1.013e-02, 1.400e-02, 1.916e-01, -8.166e-02, 2.923e-02, -7.894e-03, -4.568e-02, 2.230e-02, 1.265e-02, -1.687e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-4.700e-02, 1.203e-01, -3.970e-02, 7.662e-02, 1.230e-02, 7.532e-02, -6.702e-02, 8.858e-02, -2.449e-02, -5.008e-02, -9.114e-02, 1.534e-01, -5.459e-02, 1.525e-01, 2.345e-01, -1.136e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(8.354e-03, -4.070e-02, -6.919e-02, -1.682e-03, -3.241e-02, -4.027e-02, 4.864e-02, 5.372e-02, 7.102e-04, -2.235e-02, -7.204e-02, -1.048e-01, 1.374e-02, -4.886e-02, 3.884e-02, -2.474e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(-2.013e-02, -1.430e-02, -8.278e-02, 1.337e-02, 1.658e-02, 1.488e-02, -7.897e-03, 1.151e-02, -1.103e-02, -1.046e-03, -9.083e-02, -8.139e-02, -7.376e-02, 1.140e-02, 1.170e-01, -8.880e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(1.556e-02, -2.375e-02, -1.107e-02, 1.513e-03, 4.348e-02, 1.136e-01, 7.769e-04, 3.387e-02, -1.038e-02, -1.101e-02, 1.339e-01, -4.959e-03, -1.728e-02, 6.320e-02, 4.152e-02, -3.766e-02), r5);\n\tr0 = MulAdd(s0_0_1, M4(5.829e-02, -1.250e-02, -4.307e-02, 1.917e-01, 2.148e-02, -2.301e-02, 5.902e-02, 9.835e-03, -4.359e-02, 1.887e-02, 7.650e-02, -1.520e-01, -1.326e-02, -5.837e-03, 5.052e-02, -3.946e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(6.162e-02, 3.211e-01, -7.931e-02, 2.190e-02, -1.882e-02, 8.683e-02, -1.839e-02, -2.889e-03, -1.107e-02, -2.838e-01, 7.300e-02, -3.235e-02, 6.504e-02, 2.595e-02, -3.285e-02, 4.014e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(-3.201e-02, 4.268e-01, 5.614e-02, 7.077e-02, 5.273e-02, 8.499e-02, 4.941e-02, -4.772e-02, 4.817e-01, -2.497e-01, 1.242e-01, 8.932e-02, -1.400e-01, 1.227e-01, -1.079e-02, -5.282e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-3.436e-02, 2.344e-01, 9.935e-02, -3.154e-01, -6.814e-02, 2.363e-01, 1.591e-01, -4.999e-01, 7.787e-02, -1.940e-01, -4.750e-01, 1.603e-02, -3.741e-02, -3.612e-02, 1.216e-01, -1.421e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(-1.626e-02, 3.134e-02, 6.029e-02, 1.023e-01, -3.764e-02, 1.273e-02, -1.219e-01, 1.503e-02, -3.083e-02, -1.800e-02, -2.526e-02, -6.633e-02, -7.691e-02, 2.906e-02, 1.161e-01, -5.477e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(1.021e-02, 2.291e-01, -5.674e-02, 7.195e-02, 2.854e-02, 1.286e-01, -2.885e-01, -1.774e-01, -4.453e-02, -2.414e-02, 2.405e-01, -5.155e-02, 2.089e-02, 4.080e-02, 1.133e-01, 1.968e-02), r5);\n\tr0 = MulAdd(s0_0_2, M4(3.582e-02, -4.452e-03, 4.768e-02, 1.022e-02, 1.233e-02, 1.673e-02, 4.910e-02, 1.113e-01, -5.018e-02, 4.944e-02, 8.824e-03, -4.089e-02, -7.357e-03, -4.479e-02, -1.699e-02, -1.037e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(6.553e-02, 1.860e-01, 5.377e-02, 2.891e-05, 7.821e-03, 4.575e-02, -5.570e-02, -4.291e-03, 6.387e-02, -2.285e-01, 1.019e-02, -6.242e-02, -2.833e-02, -7.112e-03, 3.813e-02, -3.072e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(4.831e-02, 2.704e-01, 6.870e-02, 1.420e-01, -1.898e-01, -2.076e-01, -2.403e-01, -2.653e-01, -2.696e-01, -2.804e-01, -3.106e-02, -1.347e-01, -3.157e-02, 5.208e-02, 1.779e-01, 3.346e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-1.461e-02, 7.273e-02, -9.894e-02, -2.108e-01, 2.626e-02, 2.853e-02, 4.582e-02, 1.432e-01, 9.059e-02, -8.657e-02, 2.727e-03, -3.552e-02, -1.309e-02, -6.258e-03, -1.283e-01, -2.250e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(2.621e-02, 1.560e-02, 3.942e-02, 1.929e-02, -6.299e-02, -9.944e-03, 7.885e-02, 3.085e-02, 3.038e-02, -6.227e-03, -1.217e-01, -2.037e-02, 4.817e-02, 2.071e-03, -1.160e-01, 5.319e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-2.314e-02, 2.635e-01, 5.804e-02, -5.698e-02, 9.535e-03, -7.410e-02, -1.150e-01, 2.939e-01, -2.824e-02, -2.531e-01, 6.147e-02, -2.261e-01, 1.067e-02, -9.228e-02, -2.206e-02, -1.208e-01), r5);\n\tr0 = MulAdd(s0_1_0, M4(4.334e-04, -1.592e-02, 3.145e-04, -2.458e-01, -3.087e-02, -3.963e-02, 2.692e-02, -9.632e-02, -2.048e-02, 4.064e-02, 2.352e-02, 1.068e-01, 5.265e-03, 1.221e-02, 3.215e-02, 1.688e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-2.811e-01, -2.096e-01, 7.297e-03, 8.062e-03, -1.093e-01, -1.084e-01, 1.245e-02, 3.025e-02, 1.939e-01, 1.938e-01, -2.509e-01, -9.067e-03, 2.679e-02, 1.590e-01, 5.858e-02, 4.764e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(3.290e-01, 5.170e-02, -5.031e-02, 1.015e-01, 1.045e-01, 7.023e-02, -5.880e-02, -2.237e-01, -1.392e-01, -1.216e-01, 3.808e-02, -2.724e-01, 2.197e-01, 2.214e-01, -1.440e-01, -1.401e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(-5.995e-02, 5.565e-03, 4.150e-01, 1.421e-02, -5.018e-02, 2.385e-02, 2.461e-01, -7.284e-02, 7.297e-02, 4.387e-02, -2.255e-01, 6.442e-04, 1.562e-02, -6.662e-02, 9.352e-03, -1.642e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(-3.652e-02, 3.781e-02, 4.943e-02, -3.430e-02, -9.985e-03, 2.424e-02, 2.601e-02, -2.752e-02, 8.229e-02, -1.079e-02, 5.959e-02, 1.297e-02, -5.737e-02, 3.676e-02, 3.728e-02, 1.125e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(7.319e-02, 1.916e-02, -4.078e-02, 1.845e-02, 1.013e-01, 1.383e-01, 1.961e-01, -4.361e-02, -3.843e-02, -3.802e-03, 8.966e-02, -1.020e-01, 1.143e-02, -6.760e-03, -4.220e-01, -2.191e-02), r5);\n\tr0 = MulAdd(s0_1_1, M4(-1.052e-01, 8.804e-02, 7.467e-02, -1.958e-01, 1.728e-02, -2.847e-03, 8.722e-02, -7.381e-04, 7.847e-03, -3.771e-02, -7.257e-02, 2.549e-01, 5.019e-02, 1.016e-02, 3.961e-03, -1.814e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.248e-01, -2.826e-02, -1.071e-01, -3.028e-02, -2.726e-01, 6.550e-02, -1.544e-01, 7.499e-02, 4.709e-01, 9.114e-02, 1.928e-01, -1.886e-02, 8.506e-02, 2.016e-01, 8.369e-02, 8.426e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.446e-01, -3.618e-01, -4.759e-02, 2.732e-01, 2.495e-01, -9.790e-02, 2.224e-01, -3.555e-01, -9.867e-01, 1.189e-01, -4.579e-01, -7.044e-01, 2.469e-01, -1.038e+00, -6.050e-01, -1.158e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.121e-01, 5.207e-02, -1.415e-01, -1.720e-01, -1.022e-01, -5.556e-04, 2.347e-01, -4.824e-01, -5.046e-03, -1.450e-01, -1.206e+00, 2.199e-01, -9.314e-02, 1.004e-01, 3.214e-01, 1.851e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-3.271e-01, 4.179e-03, 4.126e-01, 1.801e-01, -1.965e-01, 8.891e-02, 8.003e-02, -5.017e-02, 2.322e-01, -2.306e-02, -3.035e-01, -7.935e-02, -7.778e-02, 6.420e-02, 2.017e-01, 1.751e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(-6.659e-02, 3.029e-02, -4.361e-01, 1.013e-01, 8.880e-03, -2.666e-01, -1.158e-01, 8.530e-02, -8.079e-01, -4.211e-01, -5.815e-01, -8.707e-01, -2.910e-02, -2.456e-01, -1.750e-01, -3.221e-02), r5);\n\tr0 = MulAdd(s0_1_2, M4(1.523e-01, -4.656e-03, -4.505e-02, 1.333e-01, 3.048e-02, 9.340e-03, 4.962e-02, -2.383e-01, 5.809e-01, 1.252e-01, -1.203e-01, 1.269e-01, 5.192e-02, -2.317e-02, -1.293e-04, -2.654e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-2.534e-02, -4.008e-02, 1.939e-02, -4.037e-02, -2.302e-02, -3.739e-02, -2.557e-02, 3.142e-02, -3.599e-02, -8.588e-02, 1.623e-01, -2.398e-03, -1.037e-01, -1.180e-01, -7.089e-02, 2.569e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.487e-02, 1.724e-01, 2.535e-01, 3.277e-03, 9.609e-02, 2.967e-02, 4.243e-01, -1.005e-01, 3.592e-01, 3.284e-01, -2.328e-02, -1.928e-01, 1.827e-01, 2.091e-01, 2.137e-01, 9.803e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-4.792e-02, -6.168e-02, -1.657e-02, -1.041e-02, -2.186e-02, -5.062e-03, -5.112e-02, -3.724e-01, 8.621e-02, 1.427e-02, -8.654e-02, 1.981e-01, 7.710e-02, 6.988e-02, 2.433e-02, 7.103e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(-9.951e-03, 7.698e-02, -3.397e-01, 5.795e-03, -1.333e-01, 2.303e-02, 1.231e-01, -4.091e-02, -6.518e-02, -4.103e-02, -7.779e-01, -2.310e-01, -9.663e-02, 2.961e-02, 2.372e-01, -9.898e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(4.158e-02, 2.098e-01, -3.197e-02, 1.948e-02, -1.688e-02, -1.278e-01, -2.088e-01, 5.631e-02, -6.905e-02, -3.244e-01, -1.913e-01, -3.864e-01, 8.205e-03, -1.151e-01, 6.862e-02, 5.828e-02), r5);\n\tr0 = MulAdd(s0_2_0, M4(2.185e-03, -1.280e-02, -4.275e-02, 4.817e-02, -2.371e-02, -4.331e-02, 9.602e-03, -1.526e-02, -3.215e-03, 1.330e-02, 1.846e-02, 7.641e-02, -2.899e-02, -1.507e-02, 3.778e-02, -1.398e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.068e-01, -5.702e-02, 8.131e-02, 1.164e-03, 2.678e-02, 4.101e-02, 4.409e-02, -7.118e-03, -1.107e-01, 1.194e-01, -3.108e-02, -3.632e-03, 2.359e-03, -2.110e-01, 6.128e-02, 3.909e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.303e-01, 1.313e-02, -1.026e-01, -4.169e-02, -7.089e-02, -2.483e-02, 1.380e-01, -3.036e-01, -1.978e-02, -4.218e-03, 8.193e-03, 5.418e-02, 1.591e-02, -1.028e-01, -3.200e-02, -2.742e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(-5.328e-02, 7.660e-02, -4.959e-02, 1.575e-01, -5.483e-02, -5.418e-02, -6.151e-02, 1.507e-01, 1.023e-02, -3.364e-02, 2.335e-02, 1.578e-02, -2.681e-02, -1.408e-02, -1.285e-02, -2.610e-01), r3);\n\tr4 = MulAdd(s0_2_0, M4(7.517e-02, -2.600e-02, -9.974e-02, -9.974e-03, -6.801e-03, 7.419e-03, -1.927e-02, -4.979e-02, -4.311e-02, 5.741e-03, 8.230e-02, -1.083e-02, 2.654e-02, 1.220e-02, 9.867e-02, -3.505e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-1.270e-02, -1.212e-02, 7.953e-03, 3.007e-02, 2.047e-02, 3.422e-02, 1.034e-01, -2.446e-02, 1.762e-02, 8.764e-02, -1.097e-01, 6.664e-02, 2.077e-02, -1.043e-01, -6.062e-02, 1.563e-01), r5);\n\tr0 = MulAdd(s0_2_1, M4(5.932e-02, 5.950e-02, -7.156e-03, -1.999e-02, -1.137e-02, -9.446e-03, -2.105e-02, 1.799e-02, -1.776e-02, -6.774e-02, -3.269e-02, 9.787e-02, -4.155e-02, -4.359e-03, -9.282e-03, -3.505e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.201e-01, 1.999e-02, -5.610e-02, 3.401e-02, -9.713e-03, -1.723e-01, -6.204e-03, 1.989e-02, -1.215e-01, 5.629e-02, -3.371e-02, 1.243e-02, 1.864e-01, 1.778e-02, -2.704e-02, 4.946e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-3.289e-01, 9.416e-02, -2.799e-01, 1.253e-01, -7.034e-02, -2.688e-02, 1.908e-01, 6.558e-03, 1.298e-01, -2.830e-03, 1.903e-01, 8.067e-02, 3.000e-01, 1.221e-01, 2.780e-01, -1.166e+00), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.637e-02, 5.950e-02, 1.645e-01, 1.040e-01, -8.647e-02, 3.276e-02, -1.538e-02, 7.572e-02, -3.639e-02, -7.464e-03, -7.085e-02, 2.117e-01, 1.255e-02, 4.354e-02, -1.463e-01, -2.266e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(1.346e-01, 2.304e-02, -1.357e-01, -1.498e-01, -3.332e-02, 5.839e-03, 7.853e-02, -1.185e-01, -6.683e-02, -1.167e-02, 8.624e-02, -6.814e-02, -2.841e-01, 4.085e-02, -8.975e-03, 8.058e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(3.542e-02, 2.207e-01, -2.642e-01, -4.105e-02, 1.431e-02, -4.964e-02, 1.722e-01, -1.882e-02, 4.113e-02, -2.700e-02, 4.630e-02, -2.018e-02, -1.014e-01, -1.351e-02, -9.839e-02, -1.521e-02), r5);\n\tr0 = MulAdd(s0_2_2, M4(-4.543e-02, 3.853e-02, 2.461e-02, 6.060e-02, 1.849e-02, 2.868e-02, -1.403e-02, -2.313e-02, 8.621e-02, 6.552e-02, 1.208e-02, 1.503e-01, 8.969e-02, -2.351e-02, 1.587e-02, 1.743e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(-1.231e-01, 1.475e-01, -4.732e-02, -1.196e-02, -1.574e-02, -1.316e-01, 1.594e-02, 6.804e-03, 1.450e-02, 1.806e-01, 1.216e-01, -2.292e-02, -6.193e-02, 1.411e-01, 5.581e-02, 2.501e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.585e-01, 6.087e-03, 3.724e-01, -1.196e-01, -2.032e-02, 3.486e-02, -1.517e-01, 1.472e-01, -2.635e-01, -1.906e-02, -8.784e-02, 2.554e-01, -8.465e-02, 1.217e-02, 6.720e-02, 3.407e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(1.952e-02, -1.857e-02, -7.786e-02, -1.878e-01, -1.255e-02, 5.161e-02, 2.549e-02, 8.512e-02, 6.663e-02, -3.720e-02, 8.093e-03, -1.367e-01, 4.627e-02, 9.076e-03, 1.188e-03, 1.464e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(-6.762e-02, -4.586e-02, 5.064e-02, -8.250e-03, 2.385e-02, 1.161e-02, -1.579e-02, -4.540e-02, 6.714e-02, 2.821e-03, -2.365e-01, 1.255e-03, -2.353e-01, 7.335e-03, 2.770e-02, -1.832e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-8.599e-03, 2.630e-02, -1.585e-02, 4.481e-02, 7.126e-03, 1.365e-01, 6.476e-02, 4.348e-02, 4.339e-02, 4.870e-02, -1.231e-01, 2.514e-02, 5.163e-02, 6.752e-02, -1.102e-01, 3.335e-02), r5);\n\tr0 = MulAdd(s1_0_0, M4(-2.124e-02, -1.651e-02, 1.090e-02, -1.359e-01, -2.258e-03, -9.327e-03, -3.047e-02, -8.925e-02, -9.491e-03, 2.203e-02, 4.394e-03, -1.625e-01, 3.995e-03, 2.666e-03, -1.473e-02, -1.260e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(2.509e-01, -1.608e-02, 8.565e-02, -1.464e-02, -2.686e-02, -8.832e-02, -3.478e-02, -3.390e-02, -1.663e-01, -2.596e-01, 1.014e-02, 2.844e-02, -6.856e-02, -2.251e-02, 1.800e-02, -3.053e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(6.496e-02, -1.624e-01, 5.699e-02, 6.200e-02, 5.326e-02, -3.495e-02, 1.319e-02, -3.381e-02, 2.612e-01, -1.223e-01, -7.935e-03, -5.457e-02, -3.596e-02, -5.291e-02, -1.446e-01, -3.269e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-4.790e-02, 4.720e-02, 1.928e-01, -1.332e-01, 6.087e-03, -6.147e-03, -2.910e-02, 1.084e-01, 3.349e-02, -3.095e-02, -1.764e-01, 8.068e-02, 6.002e-03, -6.735e-03, -1.464e-02, 1.100e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(-1.562e-02, -1.670e-02, -1.354e-02, -8.248e-02, 2.358e-02, 5.363e-02, -2.223e-02, 1.550e-02, -1.751e-03, -1.952e-02, 1.551e-01, -1.391e-02, 1.876e-02, 2.194e-03, 2.341e-03, 1.491e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-1.884e-02, 6.237e-02, -1.611e-01, -4.190e-03, 9.641e-03, -2.367e-02, 3.713e-03, -3.271e-02, 3.772e-03, -6.152e-02, 1.641e-01, -4.774e-03, -7.955e-03, -1.149e-01, 4.075e-02, -6.948e-03), r5);\n\tr0 = MulAdd(s1_0_1, M4(-5.684e-03, 3.410e-02, 9.393e-02, -2.058e-01, -1.235e-03, 1.603e-02, 1.982e-02, -2.510e-03, 1.113e-02, -3.571e-02, -6.729e-02, -3.881e-01, -1.860e-02, 7.351e-04, -6.050e-03, -1.400e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(6.813e-02, 1.256e-01, 6.345e-02, 8.409e-03, 7.914e-03, 4.872e-02, -2.119e-02, -4.671e-02, -4.785e-02, -7.168e-01, -1.039e-01, 3.279e-03, 6.271e-03, -3.507e-02, 2.375e-02, -6.936e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.471e-04, -2.657e-01, 2.416e-01, 6.714e-02, 3.615e-02, -1.851e-01, -6.595e-02, -7.040e-02, -1.903e-01, -1.033e-01, -2.950e-01, -2.879e-02, -3.322e-02, 1.192e-02, -7.291e-02, 3.158e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(8.641e-03, -5.255e-03, 2.532e-02, -1.145e-01, 6.080e-03, -2.399e-03, 5.468e-02, -2.034e-01, -2.690e-02, 1.256e-01, 4.433e-02, 4.739e-01, -9.269e-03, 7.791e-02, 1.155e-01, 2.391e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(-1.762e-03, 1.680e-02, 3.965e-02, -2.365e-01, -3.198e-02, -1.491e-04, 4.255e-02, 2.747e-02, 6.608e-02, -1.630e-02, -1.464e-01, 2.646e-01, 3.225e-04, -1.208e-02, -2.130e-02, 2.392e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(3.111e-02, 2.164e-02, 3.288e-02, -8.920e-02, 1.888e-03, -1.814e-02, -3.856e-03, 1.269e-02, -2.257e-03, -2.107e-01, 8.456e-02, 6.421e-02, -1.912e-02, -2.198e-02, 1.529e-02, 7.032e-02), r5);\n\tr0 = MulAdd(s1_0_2, M4(5.268e-03, 2.388e-02, 1.570e-02, -1.100e-01, 8.589e-03, -4.832e-03, 2.992e-03, -3.307e-02, 2.579e-02, -8.468e-03, -9.095e-03, -2.290e-01, -1.497e-02, -1.175e-02, -2.443e-02, -1.313e-01), r0);\n\tr1 = MulAdd(s1_0_2, M4(-5.307e-02, -8.948e-02, -2.433e-02, 2.384e-02, 1.837e-02, -7.915e-02, 1.202e-02, 1.892e-04, 8.472e-02, -1.907e-01, -3.248e-02, 6.813e-03, 1.705e-02, -8.321e-02, 2.034e-03, -1.342e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(7.102e-03, 1.303e-02, -4.203e-01, -3.280e-02, -4.762e-02, 4.651e-02, 2.495e-02, 8.914e-02, 5.233e-02, 3.181e-02, 4.398e-01, -2.173e-02, 1.763e-02, 7.756e-02, 8.500e-02, 3.163e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(8.753e-03, -7.550e-02, 6.365e-02, 4.205e-02, 8.743e-03, 4.617e-03, -2.192e-02, 2.951e-03, 1.182e-02, 6.377e-02, -1.257e-02, -1.910e-02, -1.638e-02, 7.189e-02, 3.733e-02, -3.929e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-3.968e-02, -1.648e-02, -3.480e-04, -4.020e-02, 2.122e-02, 1.876e-02, 2.285e-02, -4.385e-02, 5.134e-03, -8.337e-03, 2.810e-02, 5.973e-02, 3.821e-02, -5.725e-03, -1.406e-02, 5.002e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-7.253e-03, -8.336e-02, -2.545e-02, 3.225e-02, -9.118e-03, 2.408e-02, 1.467e-02, 2.658e-02, 3.628e-03, 6.530e-02, -3.147e-02, 4.382e-02, 4.963e-03, -4.548e-02, 5.836e-02, -4.862e-02), r5);\n\tr0 = MulAdd(s1_1_0, M4(3.142e-02, -2.238e-02, 1.036e-01, 2.550e-01, 3.211e-02, 3.076e-02, -7.192e-02, -4.069e-02, -3.330e-02, 2.217e-02, 2.142e-02, -2.412e-01, -2.086e-02, -1.835e-02, 1.084e-02, 5.842e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.318e-01, 1.244e-01, -2.310e-01, 2.421e-02, 7.409e-02, -7.550e-02, 6.566e-02, 6.279e-02, 2.348e-01, -1.722e-01, 1.048e-01, 1.496e-02, 9.490e-02, 1.055e-01, 6.474e-02, -1.845e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-8.241e-03, 6.016e-02, 6.249e-02, -2.814e-01, -7.376e-01, -2.370e-01, -5.138e-02, -1.792e-01, -5.293e-01, -6.843e-02, -1.619e-02, 1.280e-01, 5.977e-02, -1.066e-01, -2.330e-04, -1.610e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(8.384e-03, -8.399e-02, 3.193e-01, -8.838e-02, 4.822e-02, 1.180e-01, -4.890e-01, 7.210e-02, 1.281e-02, 9.042e-02, -3.504e-01, 7.885e-02, -4.986e-02, 7.921e-03, -7.673e-02, 1.411e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(3.670e-02, -8.537e-02, 4.458e-02, 2.265e-01, 9.021e-02, 1.231e-01, -2.714e-02, -7.553e-02, 6.705e-02, -2.255e-02, 2.046e-03, 7.914e-02, -4.655e-03, -7.693e-04, -4.882e-02, -5.129e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(4.517e-02, 3.007e-01, 3.617e-02, 1.348e-01, 1.695e-02, -1.684e-01, 1.904e-01, 1.283e-01, -7.161e-02, -1.937e-01, -3.674e-01, 2.030e-01, -2.327e-02, 3.500e-02, 1.735e-02, -1.415e-02), r5);\n\tr0 = MulAdd(s1_1_1, M4(2.206e-02, 7.563e-03, 5.200e-01, 2.447e-01, -5.025e-02, 5.507e-03, 6.923e-02, -8.495e-01, -7.263e-02, 1.508e-02, 8.562e-02, -9.824e-01, 1.049e-02, 2.259e-02, -1.199e-02, -1.817e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.072e-01, 4.105e-01, -1.007e-01, -1.716e-01, -1.629e-01, -5.610e-01, -2.051e-01, -4.735e-01, -3.439e-02, -2.765e-01, 1.160e-01, 2.415e-02, -5.660e-02, 9.573e-02, -3.348e-02, -2.408e-04), r1);\n\tr2 = MulAdd(s1_1_1, M4(-1.928e-01, -3.625e-01, -2.605e-01, -2.033e-01, 5.108e-02, -6.849e-02, 1.645e-01, -8.785e-02, -8.214e-02, -1.588e+00, 8.775e-02, 3.167e-01, -1.973e-01, -3.978e-01, 8.665e-02, 1.199e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-4.742e-02, -1.578e-01, -5.873e-01, -5.667e-01, 4.333e-02, -2.416e-01, -3.884e-01, 6.392e-01, 7.010e-02, -3.796e-01, 3.687e-01, -5.026e-02, -2.027e-02, -5.672e-01, -1.524e-01, -8.593e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(4.482e-02, 1.371e-01, -2.503e-01, 7.117e-02, 7.273e-02, 4.968e-01, -2.910e-01, 1.086e-01, 1.500e-01, -1.724e-03, -2.469e+00, -3.676e-01, -6.727e-02, -1.669e-02, 2.087e-01, -8.431e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-3.102e-02, -3.096e-01, 5.971e-02, -2.009e-01, -7.163e-02, 2.134e-02, -5.243e-02, 3.046e-03, -8.803e-03, 3.412e-01, 1.250e-01, 1.235e-01, -1.055e-02, 3.967e-02, -2.445e-02, -3.728e-02), r5);\n\tr0 = MulAdd(s1_1_2, M4(5.860e-02, 2.855e-02, 4.284e-02, 2.692e-01, -2.559e-02, -8.406e-03, -6.867e-02, 1.513e-01, -1.450e-01, 1.161e-02, 5.370e-02, -2.707e-01, 1.739e-03, -3.668e-02, -3.217e-02, -5.157e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-1.182e-01, 1.165e-01, 1.153e-01, -1.686e-02, 4.489e-02, 1.776e-02, 1.199e-01, -1.569e-02, 1.353e-02, 7.262e-03, -6.993e-02, 6.542e-03, 2.491e-02, 1.578e-02, 1.924e-02, -1.221e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(4.326e-01, 1.421e-02, 5.362e-02, -5.981e-02, 2.740e-01, -8.210e-03, -1.050e-01, 1.802e-01, 5.970e-02, 9.786e-02, -3.569e+00, 5.137e-02, 1.270e-02, -8.211e-03, -1.614e-02, 4.010e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-2.074e-02, 4.470e-02, 1.136e-01, 8.475e-02, 1.272e-02, 6.739e-02, 7.282e-02, -1.929e-01, 2.541e-02, -5.336e-02, -4.202e-02, 3.667e-02, -3.816e-02, 2.405e-02, -8.688e-02, -5.163e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-6.608e-02, 7.297e-03, 2.056e-01, -3.060e-02, -2.197e-02, 9.453e-02, 3.053e-02, -3.513e-02, 3.119e-02, -1.500e-02, -8.853e-03, 2.670e-01, 2.847e-02, -4.730e-05, -4.912e-02, 8.922e-04), r4);\n\tr5 = MulAdd(s1_1_2, M4(5.219e-02, -5.278e-02, -7.263e-02, 7.800e-02, 3.797e-02, 1.009e-01, -7.765e-02, -2.173e-04, 1.094e-02, -1.305e-01, 1.577e-01, 1.927e-01, 8.796e-03, 3.034e-02, 7.984e-02, -1.483e-01), r5);\n\tr0 = MulAdd(s1_2_0, M4(3.858e-03, -1.421e-01, -4.726e-02, -8.655e-02, 7.104e-03, 7.167e-02, 4.023e-03, 5.584e-02, 1.872e-02, 2.632e-02, 1.029e-02, -3.357e-03, 9.410e-03, 3.549e-03, 1.800e-02, -6.573e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(6.404e-02, -1.267e-02, -2.080e-01, 3.172e-03, -1.218e-01, 1.096e-01, -1.624e-02, 3.894e-02, -1.070e-01, 5.027e-02, 4.489e-02, -8.697e-03, -2.420e-01, -9.958e-02, -1.455e-01, -2.809e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.175e-01, 6.122e-02, 1.102e-01, -2.410e-01, 2.071e-01, 1.250e-01, -8.276e-03, 9.971e-02, 4.959e-02, 8.062e-02, -1.132e-01, -8.420e-02, -9.663e-02, -1.709e-01, 7.037e-02, -4.416e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.290e-01, 2.950e-02, -1.901e-02, -7.202e-02, 1.141e-01, -5.532e-03, 1.054e-01, 7.995e-03, 1.528e-02, 3.736e-02, 6.738e-02, 3.571e-02, -5.392e-02, 1.529e-02, 7.677e-02, 4.282e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-3.356e-02, 9.585e-03, 2.177e-01, -1.224e-01, 2.974e-02, 4.103e-02, -6.169e-02, 4.651e-02, 7.933e-02, 1.231e-02, 1.641e-02, 1.706e-01, -1.279e-01, -1.154e-04, 1.203e-01, 3.590e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-1.999e-02, -9.164e-02, 1.818e-01, 6.631e-02, 3.009e-02, 1.073e-01, -2.444e-01, 4.873e-03, -3.041e-02, -1.137e-01, -2.144e-01, 6.327e-02, 1.259e-02, 8.937e-02, 1.565e-01, 1.654e-02), r5);\n\tr0 = MulAdd(s1_2_1, M4(-1.396e-02, -8.194e-02, -2.134e-01, 7.832e-02, -2.336e-03, 1.284e-01, 5.118e-02, 2.423e-01, -2.629e-02, 9.692e-02, 2.065e-01, 8.570e-02, -7.865e-02, 4.725e-02, 6.044e-02, -2.027e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.780e-01, -1.596e-01, 4.063e-01, 8.930e-02, 1.126e-01, 2.768e-02, -1.922e-01, 2.144e-01, -3.569e-02, 2.903e-01, -1.446e-01, 1.129e-02, 4.066e-03, -1.065e-01, -5.870e-02, -1.362e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.684e-01, 8.389e-02, 5.523e-02, 3.765e-01, -3.310e-01, 3.633e-02, -9.502e-03, -1.071e-01, 2.105e-01, -4.760e-02, 1.619e-01, 1.022e-03, -1.675e-01, -2.699e-01, -2.355e-01, -1.828e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(2.356e-01, -7.915e-02, 3.197e-02, 3.107e-02, 1.215e-01, 7.259e-04, 2.870e-01, -6.656e-03, 3.369e-01, -1.402e-01, -3.080e-02, 1.459e-02, 4.134e-02, 3.330e-01, -1.812e-01, -3.838e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(1.659e-01, -6.233e-02, -1.077e-01, 2.861e-01, -1.379e-02, -2.842e-01, -2.206e-01, 9.971e-02, -1.833e-01, 3.059e-02, -2.092e-01, 3.396e-01, -6.963e-01, 6.395e-03, 5.345e-01, 2.098e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(6.238e-02, 3.648e-01, -3.559e-01, 8.511e-03, -2.400e-02, -6.057e-02, 1.319e-01, -8.337e-02, -6.056e-02, -1.362e-01, 3.649e-01, 3.893e-02, -1.120e-01, -2.386e-01, -3.320e-01, 6.232e-02), r5);\n\tr0 = MulAdd(s1_2_2, M4(2.932e-02, 1.934e-02, -3.361e-03, 7.738e-02, -2.025e-02, 1.713e-02, -1.963e-02, 1.803e-02, -2.385e-02, -5.312e-02, 1.702e-02, 3.814e-02, 5.918e-02, 8.330e-03, -4.574e-02, 5.635e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-7.669e-02, 2.090e-01, 3.028e-02, 2.972e-02, 3.538e-02, 1.110e-01, 4.860e-02, 5.554e-02, -1.401e-02, 1.506e-01, -1.119e-01, 8.363e-03, -1.452e-01, -4.275e-02, -8.059e-03, -1.471e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-2.362e-01, 7.289e-02, -1.491e-01, 2.177e-01, -1.195e-02, 6.726e-02, 1.845e-02, 1.272e-01, 2.094e-01, 2.140e-03, -6.311e-02, 5.565e-02, 4.198e-02, 3.590e-02, 5.401e-01, 1.026e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(8.600e-02, -3.109e-02, 1.970e-01, 9.876e-03, 2.553e-02, 5.191e-02, 1.222e-02, -3.350e-02, -2.276e-02, 1.889e-02, -2.562e-01, -1.352e-01, -7.915e-03, 4.516e-03, -2.396e-01, -1.870e-01), r3);\n\tr4 = MulAdd(s1_2_2, M4(-1.716e-01, 4.312e-03, -6.258e-02, -1.383e-03, 2.838e-02, -5.095e-03, 1.635e-01, -6.861e-02, -3.176e-02, 2.003e-02, 7.752e-02, 1.091e-01, -2.251e-01, -6.563e-05, 1.407e-01, 8.045e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.443e-02, 3.007e-02, 5.608e-02, -2.429e-02, 8.031e-03, -3.015e-02, 9.506e-02, -2.862e-02, 6.910e-02, 3.518e-02, 6.239e-02, 6.137e-02, 5.341e-02, -1.668e-01, -3.922e-02, -5.535e-02), r5);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(2.000e-02, -1.290e-02, -3.432e-02, -1.821e-01, -1.925e-02, 1.271e-02, 5.053e-02, 2.055e-02, 6.706e-03, -3.321e-03, 3.649e-02, 1.341e-02, 1.278e-02, -1.465e-02, -1.420e-01, -1.136e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(5.749e-02, -2.531e-01, 1.592e-02, -1.203e-02, 1.573e-02, 5.120e-02, -5.543e-03, 2.606e-02, 7.635e-02, 6.585e-03, 2.261e-02, 7.196e-02, -6.300e-02, -1.582e-01, -1.383e-01, -1.229e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-8.612e-02, -2.274e-02, 5.087e-02, -2.487e-01, 8.231e-02, 3.240e-02, -4.763e-02, 7.440e-02, -1.947e-01, -9.381e-03, -3.590e-02, 6.536e-03, 6.181e-03, -1.749e-02, 3.328e-02, -1.180e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-2.678e-04, 1.411e-01, 4.944e-02, -2.094e-01, 4.174e-02, -1.538e-02, -5.208e-02, 8.196e-02, -1.153e-02, 3.511e-02, 8.161e-02, -9.893e-03, -3.609e-02, -1.662e-01, 3.735e-02, -1.403e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.483e-02, -2.362e-02, -1.242e-01, 5.454e-02, -5.407e-02, 2.037e-02, 1.642e-01, 6.373e-02, -9.364e-03, -8.087e-02, -1.755e-02, 6.967e-03, -1.010e-01, 1.364e-03, -1.644e-02, -7.478e-04), r4);\n\tr5 = MulAdd(s0_0_0, M4(3.893e-02, -1.654e-01, 1.809e-01, -1.438e-01, 8.814e-03, 9.905e-02, -1.633e-02, -1.299e-02, 1.587e-02, 2.167e-02, -4.508e-02, -3.134e-02, -7.947e-04, -1.811e-02, -2.399e-01, 6.860e-02), r5);\n\tr0 = MulAdd(s0_0_1, M4(7.050e-02, -2.155e-02, -6.807e-02, -1.547e-01, 5.236e-02, 1.572e-02, -4.175e-03, -6.400e-02, 1.233e-02, 4.789e-02, 2.526e-02, -3.746e-02, 2.372e-02, 5.010e-02, -4.574e-02, 1.205e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(2.235e-01, 3.018e-01, -7.545e-02, 1.145e-02, -2.496e-02, -1.002e-01, 3.001e-02, 1.781e-02, -8.174e-02, -7.291e-02, -1.005e-02, 1.120e-01, -3.193e-01, 4.061e-01, -2.536e-01, -1.081e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(6.705e-01, -1.059e-01, -8.327e-02, 1.764e-02, -2.172e-01, 1.842e-01, -1.009e-01, 3.880e-02, 3.472e-01, -1.238e-01, 5.297e-03, -1.760e-01, -1.116e-01, 2.046e-01, 2.079e-01, -1.147e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(-5.384e-03, 2.301e-01, -3.050e-01, -5.723e-01, 4.227e-02, 1.267e-01, -1.458e-01, -3.421e-01, 5.326e-02, -5.566e-02, -5.240e-03, -1.038e-01, 1.116e-01, -1.961e-01, -1.051e-01, -2.923e-03), r3);\n\tr4 = MulAdd(s0_0_1, M4(2.267e-01, -1.314e-02, -2.109e-01, 2.430e-01, 1.352e-02, -9.678e-03, 1.745e-01, -6.814e-02, 5.092e-02, -7.783e-02, 5.750e-02, -2.898e-02, -1.175e-01, 2.807e-02, 3.198e-01, 6.373e-03), r4);\n\tr5 = MulAdd(s0_0_1, M4(-6.345e-02, -2.268e-01, 1.640e-01, -1.280e-01, -2.121e-02, 1.871e-03, -5.089e-02, -1.401e-02, -2.748e-02, -2.185e-01, -1.116e-02, 7.238e-02, 6.360e-03, -1.052e-01, -1.123e-01, 2.395e-01), r5);\n\tr0 = MulAdd(s0_0_2, M4(3.010e-02, 2.801e-02, 1.363e-02, -1.995e-01, 2.525e-02, -5.955e-03, 1.284e-02, 2.339e-02, 2.801e-03, 5.003e-03, 4.940e-02, -1.987e-01, 2.918e-02, 7.286e-03, -1.067e-02, 2.044e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(5.144e-03, -1.854e-02, -4.069e-02, 1.130e-02, -3.868e-02, 1.389e-01, -2.460e-02, -8.945e-03, -6.030e-02, -1.395e-01, -6.856e-02, -5.545e-02, -2.179e-02, 4.160e-03, -8.715e-02, 3.383e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(8.100e-02, 1.507e-01, 4.393e-01, 1.839e-02, -7.326e-03, 2.049e-02, 1.948e-01, -4.392e-02, -1.477e-02, -1.733e-01, 9.357e-03, -4.022e-03, 4.884e-02, 1.070e-02, -1.788e-01, 4.278e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(2.989e-03, 5.456e-02, -7.990e-02, -1.302e-01, 4.092e-04, -4.941e-02, -8.786e-02, -2.576e-02, -1.348e-02, -6.828e-02, 1.550e-01, 1.889e-01, 2.730e-02, -5.671e-02, -8.658e-02, 1.699e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(-4.567e-02, -9.281e-03, 1.127e-01, -6.931e-02, -2.378e-02, 1.740e-03, 9.896e-02, 3.623e-03, -1.951e-02, 1.140e-01, -4.370e-02, 5.727e-02, 2.858e-03, 1.209e-02, 1.076e-01, 4.024e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(2.484e-03, -2.054e-01, 1.705e-03, -2.398e-01, 2.599e-02, -7.036e-02, -3.574e-03, 3.383e-02, 4.204e-03, 6.522e-02, 4.366e-02, 8.485e-02, -2.402e-02, 3.928e-01, 8.638e-03, 2.275e-02), r5);\n\tr0 = MulAdd(s0_1_0, M4(8.099e-03, -5.497e-03, -1.621e-02, 1.981e-02, 3.372e-02, -3.946e-02, -2.091e-02, -9.795e-02, -7.912e-03, -1.135e-02, -2.166e-02, 3.943e-02, 7.528e-02, 1.909e-02, -3.123e-03, 7.466e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.586e-01, 1.163e-01, -6.704e-02, 4.168e-03, 3.899e-03, -1.634e-01, -7.974e-02, -8.093e-03, 3.003e-02, 2.979e-02, -9.012e-02, -6.960e-03, 3.543e-03, -4.452e-02, -2.551e-01, -2.215e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(3.040e-01, -1.239e-02, 5.056e-02, -8.650e-04, -3.843e-01, -1.959e-02, 1.452e-01, -1.463e-01, -3.477e-02, -7.664e-02, 6.544e-02, -4.775e-02, -2.685e-01, -1.324e-01, 2.763e-01, 1.169e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-5.496e-02, 1.451e-01, 4.132e-01, -2.424e-01, -3.903e-02, -2.316e-02, 2.293e-03, 4.877e-02, 6.296e-03, -3.798e-03, -1.920e-01, 3.861e-02, 5.582e-02, -1.171e-01, 1.326e-01, -1.169e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(-4.307e-02, 3.853e-02, 1.041e-01, 2.615e-02, 4.172e-03, 1.189e-02, 1.034e-01, 1.519e-01, 4.972e-02, 6.663e-04, 1.726e-01, 2.888e-03, -1.375e-01, 4.516e-04, 1.577e-01, -6.398e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(9.648e-02, 1.544e-01, 1.226e-01, 2.374e-02, -6.659e-03, -1.116e-01, 2.080e-01, 1.358e-02, -1.822e-02, 5.546e-02, -1.591e-02, 1.125e-01, 1.068e-01, 1.200e-01, 2.725e-01, 8.333e-02), r5);\n\tr0 = MulAdd(s0_1_1, M4(-7.241e-02, 1.502e-01, 5.446e-02, -2.558e-01, -3.451e-02, -1.215e-02, 2.456e-03, -2.256e-01, 6.219e-03, 6.763e-02, -8.302e-02, -1.109e-01, 3.848e-02, -7.543e-02, 6.058e-02, 6.514e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-2.769e-02, 2.408e-02, 2.778e-02, 2.532e-02, 1.936e-01, -2.213e-01, 1.087e-01, -2.999e-02, 8.521e-02, 3.907e-02, 8.688e-02, 5.840e-01, -2.510e-01, 4.281e-01, -1.599e-02, -3.174e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.793e-01, -1.918e-01, 2.062e-01, -8.817e-04, -8.103e-01, -1.919e-01, 2.319e-02, 3.317e-02, -1.015e+00, 1.008e-01, -4.211e-02, 1.777e-01, -2.211e-01, 2.451e-03, 1.189e-01, 1.325e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.859e-01, 7.288e-02, -4.793e-02, -2.919e-01, 3.035e-02, 5.672e-02, 1.314e-01, 2.631e-01, 7.940e-02, -3.216e-02, -9.440e-01, 4.847e-02, 2.187e-02, 6.945e-02, -4.774e-01, 4.560e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-5.502e-01, -2.974e-02, -1.131e+00, -3.450e-01, 1.651e-01, 8.515e-03, 8.819e-02, 3.384e-02, 6.769e-02, -5.004e-01, -2.007e-01, -4.640e-02, -1.348e-01, -3.733e-02, -2.299e-01, 6.614e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(4.731e-02, -4.121e-01, -6.340e-02, 1.061e-01, 5.726e-03, -3.149e-02, 2.798e-03, -1.241e-01, 5.722e-02, 2.061e-01, 2.690e-03, -1.654e-01, 5.771e-02, -3.356e-02, 2.196e-01, -1.043e-01), r5);\n\tr0 = MulAdd(s0_1_2, M4(3.061e-02, 2.460e-02, 1.560e-02, -1.247e-01, 1.288e-02, -5.420e-02, -4.848e-02, -6.535e-02, 3.968e-02, 1.180e-02, -5.611e-02, 8.261e-02, -6.547e-02, 1.730e-02, 7.511e-03, 3.312e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(8.668e-02, -2.559e-01, -3.697e-02, 2.879e-02, -5.006e-02, -2.228e-01, 9.703e-03, -1.869e-03, 3.019e-02, -1.795e-02, -7.959e-03, -1.869e-01, 5.971e-02, -6.258e-02, -1.030e-01, 1.332e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.186e-01, 1.507e-01, 1.822e-01, -2.001e-01, -2.230e-02, -2.487e-02, 8.018e-02, -3.400e-02, 2.525e-01, -5.528e-02, 2.309e-03, -8.601e-02, -2.419e-01, 5.333e-02, -5.729e-02, -3.187e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.050e-01, 1.681e-01, -1.678e-01, -4.109e-02, -3.261e-02, -7.076e-02, -5.612e-03, 3.481e-01, -8.069e-03, -5.373e-02, 1.130e-01, 1.041e-01, -1.643e-03, 1.567e-02, 1.420e-02, -1.863e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(1.642e-01, 2.100e-02, -2.666e-01, -4.099e-03, 3.269e-02, 2.004e-02, -3.844e-02, -9.011e-02, 7.995e-02, 2.392e-01, -1.377e-01, -1.018e-01, 1.872e-01, -3.367e-03, 1.856e-02, 8.150e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-8.963e-02, -1.758e-02, -4.038e-02, 8.187e-03, 7.401e-03, -2.991e-02, 1.441e-01, 2.694e-02, -4.477e-02, 1.018e-01, -3.513e-02, -6.402e-02, -4.121e-02, 1.299e-01, 1.554e-01, 4.459e-02), r5);\n\tr0 = MulAdd(s0_2_0, M4(4.295e-03, 3.410e-03, 2.570e-02, -6.149e-02, -7.594e-03, -1.026e-02, 2.882e-02, 5.579e-02, 1.030e-02, 5.781e-03, 1.719e-04, -5.853e-02, 3.924e-02, -2.093e-02, -2.075e-02, -2.931e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.625e-01, -2.105e-03, -8.315e-02, -5.552e-03, 1.445e-01, 5.564e-02, -8.683e-02, -2.606e-03, -1.022e-01, -1.139e-02, -2.240e-02, 3.393e-02, 1.068e-01, -1.651e-01, -1.323e-01, 1.241e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.705e-01, 2.406e-02, -4.656e-02, -2.647e-01, 8.804e-02, 2.374e-02, -1.229e-02, -1.450e-02, 6.091e-02, 5.069e-02, 1.037e-02, -2.431e-03, -8.053e-01, -9.926e-02, 2.016e-02, 4.892e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-6.047e-02, 6.115e-03, 1.101e-01, 3.945e-02, -1.297e-02, 3.138e-02, -1.207e-01, -3.228e-03, 1.465e-02, -2.471e-02, 6.317e-02, -2.511e-02, 1.652e-02, -9.578e-02, -7.005e-02, -1.656e-01), r3);\n\tr4 = MulAdd(s0_2_0, M4(9.626e-03, 4.540e-03, -1.285e-01, -9.998e-02, -7.479e-03, -3.855e-04, 7.315e-02, 5.756e-02, -1.944e-02, 3.194e-02, -7.580e-02, 1.609e-02, 1.999e-02, 2.144e-03, 8.450e-02, -6.946e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(3.181e-02, -5.264e-02, 3.033e-02, -1.343e-01, 5.184e-03, 3.016e-02, 1.518e-01, -5.482e-03, -7.054e-03, -4.209e-02, -4.799e-02, -1.697e-02, -4.237e-02, 1.174e-01, -3.894e-01, 3.685e-03), r5);\n\tr0 = MulAdd(s0_2_1, M4(1.217e-02, 2.613e-02, 5.645e-03, -1.831e-02, 1.305e-02, 4.665e-02, -1.128e-02, 1.097e-01, 1.925e-02, 2.218e-02, 2.801e-02, 1.093e-01, 1.698e-02, -5.513e-03, -4.089e-02, 2.300e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-3.642e-02, -3.548e-02, 2.384e-02, 6.136e-04, 5.773e-02, -9.645e-03, 6.714e-02, -1.082e-02, 4.647e-02, -7.489e-02, -6.176e-02, 5.485e-02, 2.277e-02, -8.360e-02, 1.531e-01, -9.489e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.263e-01, -6.283e-02, 1.547e-02, 1.021e-01, 6.881e-02, -7.612e-03, -2.471e-01, 2.144e-01, -1.097e-03, 1.340e-01, 6.115e-02, 4.622e-02, -5.964e-01, 9.757e-03, -8.877e-02, -2.585e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(8.145e-03, 9.734e-02, 5.614e-03, -8.017e-02, 9.029e-03, 2.541e-02, 4.523e-02, -8.964e-02, 1.548e-01, 1.131e-02, 1.885e-01, -8.618e-02, 3.870e-02, -4.475e-02, 5.376e-02, 8.292e-03), r3);\n\tr4 = MulAdd(s0_2_1, M4(8.741e-02, 6.482e-03, 7.975e-02, -6.916e-02, 7.542e-02, -2.693e-02, -9.772e-02, 6.959e-02, -1.416e-02, 1.001e-02, -4.455e-02, 8.225e-02, 1.025e-01, -1.533e-02, -1.663e-01, 5.490e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(1.125e-02, -6.310e-02, 9.889e-02, -6.446e-02, -1.007e-02, 1.050e-01, -6.647e-02, 4.651e-02, 1.226e-02, -6.270e-02, -1.497e-01, -1.277e-02, -5.548e-03, 1.763e-01, -3.854e-01, -3.096e-02), r5);\n\tr0 = MulAdd(s0_2_2, M4(-9.600e-03, 2.482e-02, -7.110e-03, -9.468e-02, -2.554e-03, -3.920e-02, 8.336e-03, -6.976e-04, -3.118e-02, 9.715e-03, 1.737e-02, 2.213e-02, 2.924e-02, -2.874e-02, 1.487e-03, -7.988e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-1.036e-02, -2.752e-02, -3.990e-02, 4.176e-03, -5.987e-02, 6.760e-02, -2.086e-02, 6.850e-03, 1.349e-02, 6.716e-02, 2.696e-02, -3.779e-02, -1.382e-01, -6.367e-02, -4.535e-02, -2.511e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(4.543e-02, -9.230e-03, -9.175e-02, 9.823e-02, 1.827e-01, 7.252e-02, -1.114e-01, 5.114e-02, -6.099e-02, 2.184e-02, -1.183e-01, 2.773e-02, 1.788e-01, 1.714e-01, 2.901e-01, -9.330e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(-1.856e-02, 3.534e-02, 1.330e-03, 2.672e-02, -2.853e-02, -1.273e-02, -4.423e-02, 4.364e-02, -2.970e-02, 7.740e-02, 7.533e-02, -2.041e-02, 1.676e-02, 4.354e-02, -1.169e-01, 3.156e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(7.338e-02, 1.022e-02, 3.373e-03, 1.210e-02, -4.721e-03, 3.263e-03, 1.504e-02, 6.821e-02, -2.825e-02, 4.431e-02, 7.764e-02, 1.096e-02, -1.404e-02, -1.560e-02, 1.343e-01, 2.250e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-1.042e-02, -1.460e-01, 2.036e-02, 8.860e-02, -1.988e-02, 6.851e-02, -4.191e-02, -7.250e-03, 1.781e-02, -1.096e-01, 9.299e-02, -7.147e-02, 1.336e-03, -6.099e-02, 3.723e-02, -6.574e-02), r5);\n\tr0 = MulAdd(s1_0_0, M4(-1.515e-01, 6.550e-02, -1.977e-01, -5.733e-01, -1.077e-02, -3.693e-04, -7.470e-03, 5.026e-02, 3.876e-02, 6.277e-03, 1.733e-03, -1.232e-01, -1.634e-02, -1.070e-02, 4.860e-02, -1.150e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(2.320e-01, 4.459e-01, -7.062e-02, -9.283e-03, 5.018e-02, 4.388e-02, 5.523e-02, -3.433e-03, -3.993e-02, -1.294e-01, 1.815e-02, 8.985e-03, -1.321e-01, 7.285e-02, -6.430e-02, 1.287e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-2.735e+00, -1.145e-01, -5.027e-01, 7.203e-02, -3.402e-02, -1.450e-01, 1.911e-02, 1.624e-02, -2.915e-01, -2.288e-01, -6.372e-02, 1.828e-01, -2.288e-01, 1.274e-01, 5.047e-02, -2.020e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(6.002e-02, 1.193e-01, 4.666e-01, 3.852e-01, -1.179e-02, 1.459e-02, 2.786e-02, 4.791e-02, -2.160e-02, 9.232e-02, -1.459e-03, 2.164e-01, 9.505e-03, 1.116e-01, -1.509e-01, 2.690e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(9.549e-02, -7.054e-02, -2.132e+00, -5.000e-01, 6.154e-03, 1.962e-03, 8.521e-02, -2.293e-02, -8.372e-02, 2.999e-03, 1.529e-01, 1.630e-01, 1.585e-02, 7.395e-03, 2.853e-02, 2.069e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-2.319e-01, 3.248e-01, -1.133e-01, -1.628e-01, -6.449e-03, -2.002e-02, 4.275e-02, 2.253e-02, 5.643e-02, 9.045e-03, 5.819e-02, -1.305e-01, -1.381e-02, -7.301e-02, -3.621e-03, -4.642e-02), r5);\n\tr0 = MulAdd(s1_0_1, M4(2.052e-02, -2.143e-02, 1.174e-01, -2.426e-01, -2.702e-02, -1.053e-02, -9.026e-03, -2.570e-01, 1.849e-02, 1.070e-03, 1.777e-02, 3.432e-01, 4.555e-02, -1.650e-02, -1.004e-01, 1.031e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-4.939e-02, 1.667e-01, 1.046e-01, -1.150e-02, -6.483e-02, 3.281e-03, 3.159e-02, -6.648e-03, 3.796e-02, 3.006e-01, 5.284e-02, 1.391e-02, -6.492e-02, -1.054e-01, -1.156e-01, -2.117e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(5.008e-01, -3.215e-01, 3.777e-01, 5.129e-02, 1.302e-01, -5.095e-03, 6.601e-02, 8.042e-02, -2.549e-01, -6.945e-01, 3.599e-01, -3.751e-02, 1.657e-03, 2.595e-01, -1.124e-01, -1.441e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(9.163e-03, -2.020e-01, 2.200e-01, 3.163e-01, -1.104e-02, -2.120e-02, -2.946e-02, 9.883e-02, -3.482e-02, 1.562e-01, 4.473e-02, -3.045e-02, -7.175e-02, 4.006e-01, 7.165e-02, -7.938e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(-6.642e-03, 9.491e-04, 1.302e-01, -1.993e-01, 3.966e-03, -5.990e-03, 8.788e-02, -3.633e-02, -1.023e-01, 2.633e-02, -2.443e-02, -5.066e-02, -5.761e-02, -1.938e-02, -1.848e-01, 3.563e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(2.112e-02, 1.893e-01, 1.343e-01, -1.422e-01, 6.449e-03, -8.018e-02, 9.838e-02, 2.572e-02, 2.228e-02, -1.315e-02, -1.328e-01, 7.159e-02, 2.757e-02, -2.187e-01, 6.803e-02, -6.188e-02), r5);\n\tr0 = MulAdd(s1_0_2, M4(-6.088e-03, -2.083e-02, 5.235e-04, 3.752e-02, 6.823e-03, -1.051e-02, -1.398e-02, -8.859e-02, -1.373e-02, -2.822e-02, 2.914e-02, 8.903e-02, 7.021e-02, -5.136e-03, -9.497e-03, -1.919e-01), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.770e-02, 1.475e-02, 1.111e-01, 2.099e-02, -4.524e-02, -6.423e-02, 2.057e-02, -4.466e-03, 8.078e-02, 1.102e-01, 1.953e-03, -5.497e-03, -2.496e-02, -1.679e-01, 3.968e-02, 7.539e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(3.332e-02, -7.357e-02, 6.240e-02, 5.224e-02, 1.821e-01, -1.373e-01, 3.136e-02, 8.548e-03, -3.645e-02, 8.959e-02, 3.335e-01, 6.389e-02, 9.636e-02, 1.490e-01, 1.690e-01, 3.551e-04), r2);\n\tr3 = MulAdd(s1_0_2, M4(-4.008e-02, -2.920e-02, 2.108e-02, -7.042e-02, 9.650e-03, -9.016e-02, 1.748e-02, -6.621e-02, -2.916e-02, -6.090e-02, -2.644e-02, -1.293e-01, -1.813e-02, 1.327e-01, -7.731e-02, -6.589e-01), r3);\n\tr4 = MulAdd(s1_0_2, M4(-2.085e-02, 7.500e-03, 2.783e-02, -3.183e-02, 5.339e-03, -3.449e-03, 1.357e-02, -9.674e-03, 3.017e-02, 6.900e-03, -1.661e-02, 4.460e-02, 4.138e-02, -4.120e-04, -4.704e-02, 4.351e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(3.309e-02, -2.914e-03, -2.985e-02, -6.837e-03, -9.638e-03, 4.548e-02, 8.369e-02, -1.339e-02, 2.525e-02, 1.224e-01, 4.809e-02, -7.391e-02, 5.267e-03, 6.761e-02, -3.317e-03, -5.673e-02), r5);\n\tr0 = MulAdd(s1_1_0, M4(2.807e-02, 1.392e-01, -9.206e-02, 3.971e-01, 9.520e-03, 1.254e-02, 2.459e-02, 1.401e-01, -2.734e-02, 6.763e-02, 6.167e-02, -1.197e-01, -6.601e-02, -3.516e-02, 5.229e-03, -3.259e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(7.572e-02, 4.035e-01, -7.602e-02, 3.089e-02, 1.218e-01, 1.548e-01, -3.425e-02, 2.222e-03, -5.623e-01, 2.574e-01, -3.171e-01, 4.585e-03, -2.862e-01, -1.149e-01, 2.208e-01, -2.486e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.062e-02, 2.251e-01, -3.355e-01, 5.664e-01, -1.227e-01, -1.104e-01, 5.609e-02, -9.836e-02, -2.787e-01, -1.257e-01, 5.595e-01, -1.273e-01, 4.034e-02, 1.968e-01, -8.655e-02, -4.946e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(2.529e-01, -8.562e-03, -1.549e-01, 4.726e-02, 1.363e-02, 3.947e-02, -1.170e-01, 5.080e-02, 4.119e-02, 5.163e-02, 9.838e-02, 3.824e-01, -2.388e-02, 2.138e-02, -8.691e-02, 1.234e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(3.017e-01, 3.400e-02, 1.067e-01, 3.647e-01, 1.611e-03, 3.873e-04, 1.274e-01, 1.115e-01, -1.400e-01, 4.818e-02, 6.163e-01, -1.312e-01, -1.586e-02, -1.510e-02, -1.304e-01, -6.676e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(6.579e-02, 2.340e-01, -2.126e-02, 2.076e-01, -2.063e-02, 7.349e-02, 1.405e-01, 1.623e-02, 5.708e-02, 3.378e-01, 2.618e-01, -9.220e-02, -4.204e-02, -3.416e-01, 6.708e-03, -1.593e-01), r5);\n\tr0 = MulAdd(s1_1_1, M4(-1.908e-02, 1.130e-01, -6.175e-02, 4.092e-01, -1.745e-02, -4.234e-02, -2.806e-02, 4.816e-02, -3.490e-01, -5.378e-02, 7.437e-02, -2.144e-01, -1.168e-01, 1.743e-01, 1.308e-01, -1.123e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-9.949e-02, 4.328e-01, 1.960e-01, -1.095e-03, -8.608e-02, 1.368e-01, 6.159e-02, 1.041e-02, -6.282e-02, -1.786e-01, -1.754e-01, 5.661e-02, -2.695e-01, -1.121e-01, -3.903e-01, -5.108e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(7.119e-02, 1.283e-01, 3.994e-01, 1.072e-02, 1.581e-02, 2.046e-01, -1.265e-01, 5.869e-02, 4.426e-01, -2.296e-01, -3.656e-02, -8.894e-02, 4.330e-02, -2.712e-01, 2.357e-01, -1.612e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(6.914e-02, -1.309e-01, 4.340e-01, 1.481e-01, -5.869e-02, 3.705e-02, 4.371e-02, 1.089e-01, -7.098e-02, -1.938e-01, 4.934e-02, -3.684e-01, 1.179e-01, 1.646e-01, -2.997e-02, -7.130e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(2.787e-01, 5.540e-04, 1.126e-01, 1.499e-01, 3.625e-02, 1.703e-02, 7.644e-02, 8.768e-02, -3.994e-01, 3.388e-02, 3.697e-02, -2.245e-02, -4.817e-01, -8.676e-02, -2.808e-01, -4.833e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(2.567e-02, 7.640e-02, 1.868e-01, -1.118e-01, -3.086e-02, -1.766e-01, 2.827e-01, -7.521e-02, 1.577e-01, 3.409e-02, -1.336e-01, 6.145e-01, -8.158e-02, -2.916e-01, -2.783e-01, 1.298e-01), r5);\n\tr0 = MulAdd(s1_1_2, M4(-8.142e-03, 5.256e-02, 9.239e-03, 4.721e-02, -4.919e-02, -3.236e-02, -8.630e-02, -2.692e-02, -4.922e-02, -9.734e-03, -1.762e-02, -1.647e-01, 3.779e-02, -3.279e-02, -2.438e-02, -6.730e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(9.092e-03, 1.080e-01, -4.167e-02, -8.105e-03, 6.075e-02, -3.876e-01, 7.368e-02, 1.330e-02, 1.130e-01, -1.209e-01, -2.262e-02, 1.406e-02, 6.708e-02, -3.902e-02, -2.634e-02, 8.236e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(-2.740e-02, 7.871e-02, -2.364e-01, 7.931e-02, 2.517e-01, -4.970e-02, -3.722e-02, 7.577e-02, -3.531e-03, -1.305e-01, -1.232e-01, 4.507e-03, 6.281e-03, -6.716e-02, -2.060e-02, 6.907e-05), r2);\n\tr3 = MulAdd(s1_1_2, M4(7.579e-02, -6.794e-02, 1.185e-01, 9.072e-02, 1.307e-02, 1.877e-02, -5.407e-02, 4.165e-02, -3.176e-02, -1.203e-01, 2.876e-02, 3.952e-02, -7.546e-02, 4.120e-02, -7.360e-02, -6.802e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(4.216e-02, 4.401e-03, -3.396e-02, 5.714e-03, 3.978e-02, -1.088e-02, 7.314e-02, 4.699e-02, 9.890e-02, 2.142e-02, 2.292e-02, -6.165e-02, 4.251e-02, -3.054e-02, -5.076e-02, -6.752e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(1.649e-03, 3.654e-02, 4.743e-02, -6.326e-02, 1.455e-04, 9.726e-02, 1.069e-01, -1.076e-01, -2.475e-02, 5.312e-02, -1.761e-02, 3.084e-02, 7.494e-03, 1.028e-01, -1.415e-02, -5.285e-02), r5);\n\tr0 = MulAdd(s1_2_0, M4(-2.332e-03, -2.297e-02, -2.437e-02, 6.988e-02, 5.094e-03, 1.972e-04, -1.104e-02, 1.009e-01, -1.520e-02, 3.280e-02, 2.146e-02, 8.325e-02, -4.097e-02, 4.120e-02, -2.801e-03, 1.439e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.375e-01, 5.068e-02, -2.979e-02, 9.333e-04, -2.674e-02, 9.707e-02, -4.565e-02, 1.222e-03, 5.919e-02, 7.707e-02, 1.447e-01, 5.382e-03, 1.542e-01, -1.309e-01, 9.506e-02, -5.160e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.250e-01, 8.266e-02, -2.601e-01, 1.139e-02, 6.233e-02, -2.266e-02, 1.150e-01, 1.047e-01, -3.954e-01, -4.981e-02, -5.847e-02, -9.062e-02, -1.644e-01, -2.726e-02, 4.526e-02, -4.817e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(3.183e-02, -2.038e-02, -1.889e-02, -3.319e-02, -6.275e-03, 3.323e-02, -4.868e-02, 2.673e-02, -3.429e-02, -7.936e-02, -9.981e-03, 1.453e-01, 3.156e-02, -2.671e-02, -5.026e-02, 6.185e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-3.607e-02, -8.975e-03, 1.016e-02, 9.908e-02, -1.745e-02, 1.007e-02, 1.150e-01, 4.085e-02, -3.747e-02, 1.392e-02, 1.570e-01, 1.149e-01, -1.515e-02, -1.207e-02, -6.308e-03, 4.560e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-2.692e-02, -7.405e-03, 3.848e-02, 6.011e-02, -1.144e-02, 1.006e-01, 3.583e-02, 2.714e-02, -2.648e-02, -6.770e-02, -1.540e-01, 6.393e-03, 1.530e-02, 6.072e-02, -6.727e-02, 5.204e-02), r5);\n\tr0 = MulAdd(s1_2_1, M4(-1.212e-02, -8.627e-03, -8.344e-03, 7.572e-02, -8.025e-03, -3.601e-02, -3.943e-02, 2.234e-02, 2.987e-02, -7.078e-02, 1.607e-02, -2.667e-02, -6.000e-03, -2.164e-03, -4.216e-03, -4.687e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.998e-02, 6.749e-02, 1.278e-02, -2.458e-03, 1.657e-01, -2.875e-02, 7.314e-02, -1.264e-02, -7.008e-02, 5.099e-02, -9.207e-02, 9.652e-03, 1.112e-02, -7.365e-02, -4.437e-02, 7.912e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(7.931e-02, 6.550e-03, 1.253e-01, 2.366e-02, -1.909e-01, -1.101e-02, 3.806e-02, 1.988e-01, -1.474e-01, 3.156e-02, 4.232e-01, -1.482e-01, -8.662e-02, -8.699e-02, -4.643e-02, -1.269e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(1.207e-02, -8.156e-02, 3.708e-02, -4.125e-03, -4.213e-02, -1.818e-02, -4.347e-02, 1.800e-02, -1.253e-01, 3.255e-03, -1.849e-02, 1.678e-01, -4.894e-02, -1.927e-03, -3.252e-02, -1.697e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(-8.619e-02, 2.449e-02, -4.820e-02, 3.431e-02, 9.420e-03, 1.124e-03, 2.057e-01, 1.070e-01, -1.004e-01, 1.724e-02, 5.035e-02, 8.499e-02, -7.526e-02, 6.229e-03, -1.659e-01, -2.349e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(2.218e-02, 8.383e-03, -6.295e-02, -4.257e-02, -9.339e-02, 1.463e-02, 2.385e-01, 6.157e-02, 5.638e-02, -6.584e-02, 6.516e-02, 1.221e-02, 2.065e-03, 1.728e-01, -2.650e-01, -2.318e-02), r5);\n\tr0 = MulAdd(s1_2_2, M4(-8.312e-03, -8.185e-03, 1.753e-02, -2.943e-02, 2.073e-02, -3.922e-02, -4.813e-02, 2.717e-02, -1.417e-02, 1.096e-02, -6.533e-03, 6.360e-02, 2.120e-02, -1.057e-02, -1.139e-02, 2.199e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.232e-02, -2.801e-02, -7.901e-03, -1.054e-02, 2.307e-01, 4.309e-02, 4.212e-02, -4.449e-03, -5.636e-02, -5.577e-02, -3.265e-02, 1.063e-02, 1.480e-02, -7.470e-02, 2.521e-02, 1.175e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-5.766e-02, 6.321e-02, -7.718e-02, -1.502e-02, 1.973e-01, 1.044e-02, 2.570e-01, -5.086e-02, -2.020e-02, -2.309e-02, 1.372e-01, -1.224e-01, -1.119e-01, 5.646e-02, 2.650e-01, 2.163e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-2.586e-02, 1.725e-02, 1.449e-02, 7.419e-03, 2.348e-02, -6.349e-02, 1.929e-01, 2.615e-03, -3.185e-02, 2.897e-02, -5.883e-02, 1.268e-01, -1.742e-02, 4.351e-02, 6.929e-04, -4.929e-03), r3);\n\tr4 = MulAdd(s1_2_2, M4(-2.006e-03, 7.900e-03, 6.344e-03, 1.910e-02, -1.924e-02, 7.437e-03, -2.026e-01, 4.411e-02, 2.240e-02, -1.361e-03, 5.544e-02, -1.548e-02, 7.487e-02, -2.278e-03, 1.774e-02, 3.655e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-1.323e-02, 7.182e-03, 6.679e-02, 3.340e-02, -8.713e-03, 5.559e-02, 7.661e-02, -2.889e-01, -6.435e-03, -5.042e-02, 7.812e-02, -7.684e-02, 1.013e-02, -2.441e-03, -1.631e-02, -9.045e-02), r5);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.056e-02, 7.892e-03, -2.802e-02, 1.135e-01, -2.257e-02, -8.448e-03, -5.673e-03, -8.486e-02, -8.487e-03, 2.734e-02, -1.919e-02, -6.875e-03, 1.171e-02, -1.352e-02, 8.661e-03, -7.250e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.343e-01, 2.173e-02, 1.980e-02, 1.690e-03, -1.611e-01, -1.140e-01, 5.458e-02, -2.679e-03, -1.826e-01, -2.794e-02, 1.347e-02, -2.204e-03, 1.240e-01, 1.933e-01, -1.375e-02, -3.865e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.577e-02, -3.838e-01, 1.117e-01, -7.947e-02, -1.576e-01, 2.254e-01, -1.210e-02, -1.279e-03, 4.225e-02, 1.323e-01, -9.846e-02, 3.349e-02, -4.288e-02, -1.233e-01, -6.106e-02, 1.046e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(1.075e-02, -9.107e-02, 1.885e-01, 1.938e-02, -6.283e-03, 8.862e-02, -1.146e-01, 1.232e-01, 3.541e-02, -2.410e-02, -2.184e-01, 1.750e-01, -3.316e-02, -5.777e-03, -5.721e-02, -1.278e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(3.770e-02, -1.849e-02, 6.218e-02, 9.986e-02, 5.238e-02, -3.830e-03, 7.781e-02, 5.237e-02, 2.166e-02, -1.109e-02, 2.228e-01, -4.390e-02, -3.786e-02, 1.626e-02, -1.137e-02, -5.575e-03), r4);\n\tr5 = MulAdd(s0_0_0, M4(3.822e-02, 4.191e-02, -7.787e-02, 1.986e-01, -3.692e-02, -3.362e-02, -2.110e-01, 9.975e-02, -6.736e-03, -1.708e-01, 1.182e-01, 1.267e-01, -1.965e-02, 1.294e-01, -8.100e-02, -2.861e-02), r5);\n\tr0 = MulAdd(s0_0_1, M4(-8.879e-03, -3.310e-02, -5.201e-02, -6.286e-01, -2.037e-02, -2.361e-03, 1.058e-02, -2.382e-02, -1.049e-02, -3.197e-02, -4.292e-02, -2.096e-01, 4.555e-02, 3.282e-02, 4.658e-02, 8.821e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.518e-01, -4.814e-01, -7.210e-03, -1.119e-02, 2.119e-01, -1.556e-01, 9.934e-02, 4.487e-03, 2.732e-04, -5.470e-01, 5.011e-02, 2.256e-02, 7.152e-02, -2.512e-02, -2.851e-02, -9.421e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(2.694e-02, -1.843e-01, -1.534e-01, 6.741e-02, -2.532e-01, 2.646e-03, 2.374e-01, 9.264e-02, -6.554e-02, -7.400e-02, -8.099e-02, 2.153e-01, -2.332e-01, 1.606e-01, 8.774e-03, 3.985e-03), r2);\n\tr3 = MulAdd(s0_0_1, M4(6.067e-03, -1.430e-01, -1.301e-01, 6.310e-01, 1.147e-02, 1.274e-01, 1.188e-01, -3.110e-02, 1.416e-02, -1.515e-01, 4.971e-02, 1.089e-01, 4.878e-02, 1.539e-01, 1.786e-01, -3.234e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.028e-01, 3.775e-02, 2.212e-02, -5.960e-02, 9.836e-02, 7.685e-03, 5.750e-02, -5.053e-02, 4.962e-02, -9.241e-03, 2.981e-02, 5.340e-02, -8.521e-02, -2.545e-03, -7.515e-02, -8.483e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(1.301e-02, -3.252e-01, 2.555e-01, -8.936e-02, -3.717e-02, 2.027e-01, -3.135e-01, -7.798e-02, 6.584e-03, 7.595e-02, 1.998e-01, 5.649e-03, 2.646e-02, -1.224e-01, -1.707e-01, -4.925e-02), r5);\n\tr0 = MulAdd(s0_0_2, M4(-3.217e-02, -2.480e-03, -4.075e-02, -2.908e-02, -2.697e-02, 1.174e-03, 6.680e-04, 1.680e-02, -1.230e-02, -2.135e-02, 2.043e-02, 1.839e-02, -8.734e-04, -3.338e-03, 3.140e-02, -3.512e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.955e-02, -2.026e-01, 8.069e-02, -1.162e-02, -1.356e-01, 2.314e-01, 1.589e-02, 1.322e-02, -5.141e-02, 1.630e-01, 4.515e-02, -2.767e-03, 1.482e-02, 2.175e-01, -5.685e-02, -4.264e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(2.709e-01, -5.077e-02, -9.419e-02, -3.137e-02, 2.763e-02, 1.324e-01, -4.548e-02, 1.570e-01, 1.038e-01, -1.508e-01, 1.994e-01, -6.617e-02, -3.252e-02, -7.494e-02, 1.124e-01, 1.134e-01), r2);\n\tr3 = MulAdd(s0_0_2, M4(-9.307e-03, -6.351e-02, 6.688e-03, 2.307e-01, -3.540e-03, -5.094e-03, 4.477e-02, -5.798e-02, -5.596e-02, -4.821e-02, 4.820e-02, -2.604e-01, 4.388e-04, 5.987e-02, -4.780e-03, 1.460e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(-2.328e-02, 2.270e-02, 9.548e-02, 1.219e-01, 7.043e-03, -8.840e-03, -2.647e-02, -4.605e-02, -6.908e-03, -3.056e-03, 9.512e-02, 2.015e-03, 2.069e-03, -3.306e-03, 5.220e-03, -2.106e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(9.220e-03, 6.497e-02, -1.954e-03, 1.179e-01, -1.845e-02, 3.416e-02, -9.317e-02, -6.158e-02, 2.852e-02, -5.317e-02, -3.138e-02, 4.488e-02, 9.999e-03, -7.553e-03, 6.423e-02, -1.179e-01), r5);\n\tr0 = MulAdd(s0_1_0, M4(3.753e-02, -2.435e-02, 2.170e-02, 1.730e-01, 1.689e-02, -2.083e-02, -2.623e-02, -2.995e-02, -2.590e-02, 3.259e-02, -8.844e-03, -3.760e-02, -1.002e-02, 4.411e-02, -3.156e-04, 7.085e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.328e-01, 4.209e-01, -1.363e-01, -6.293e-03, -1.374e-01, -4.918e-02, -1.168e-01, -1.167e-02, 1.443e-01, 6.528e-02, 1.823e-01, -4.005e-03, -8.666e-02, 3.025e-01, 4.172e-02, -1.719e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.255e+00, -2.122e-01, -1.357e-01, -2.366e-01, 1.240e-01, 9.929e-02, 1.021e-02, 8.862e-02, -4.602e-02, 8.375e-02, 3.588e-02, -9.538e-03, 2.372e-01, 7.677e-03, 9.308e-02, -3.007e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(-8.514e-02, 6.332e-02, -1.544e-02, -5.139e-02, -9.047e-03, -1.926e-02, 1.857e-01, 1.469e-01, 2.160e-02, -3.996e-02, 3.360e-03, 1.634e-01, 6.093e-02, -6.768e-02, 1.150e-02, -1.022e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(2.857e-02, -2.181e-02, -8.173e-02, -2.184e-02, 6.213e-02, 1.234e-02, -5.043e-02, -1.782e-02, -2.606e-02, -1.031e-03, -7.001e-02, 2.717e-02, -2.412e-02, 1.414e-02, 2.205e-01, 1.080e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(-4.407e-02, 1.444e-01, 3.449e-02, 3.498e-01, -7.797e-03, 3.489e-02, -2.664e-01, 1.511e-02, -8.720e-02, -1.714e-01, -5.304e-01, 9.786e-02, 1.000e-02, 1.480e-01, 8.526e-02, 1.652e-01), r5);\n\tr0 = MulAdd(s0_1_1, M4(-1.775e-02, 7.233e-03, -4.858e-01, -6.934e-01, 6.364e-02, -2.096e-02, -7.748e-03, 1.114e-01, 9.104e-02, 1.034e-02, 1.805e-04, 8.558e-02, 5.382e-02, 3.130e-02, -3.008e-01, 7.662e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(2.229e-01, -3.640e+00, 8.611e-02, -2.517e-02, -1.383e-01, 9.300e-02, -3.368e-02, 2.425e-02, -1.401e-01, 6.587e-02, 7.706e-02, -4.153e-03, -2.392e-02, -4.360e-01, -6.008e-02, 5.237e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.390e+00, 2.432e-01, 3.021e-01, 1.842e-01, -6.909e-02, 1.743e-01, -1.176e-01, 1.747e-01, 1.203e-01, 1.333e-01, -3.112e-02, 8.902e-02, -1.633e-01, 1.963e-01, -1.674e-01, -2.863e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-6.888e-02, -2.470e-01, 3.701e-02, -5.992e-01, 5.661e-02, 1.497e-01, -9.583e-02, 1.245e-01, 2.254e-02, -4.956e-02, 1.194e-01, -2.688e-02, -6.859e-03, 5.847e-02, -1.833e-01, 2.126e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-5.236e-02, 5.760e-04, 1.272e-02, -1.277e-01, 1.073e-01, 2.760e-02, 7.011e-02, 1.795e-02, -1.442e-01, 2.403e-02, 1.124e-01, 2.269e-03, 1.738e-01, -5.714e-03, -1.748e-01, -2.638e-03), r4);\n\tr5 = MulAdd(s0_1_1, M4(5.480e-02, -2.871e-01, 2.298e-01, -4.488e-01, -3.849e-02, 2.319e-01, -4.239e-01, 1.892e-01, 2.388e-02, -3.269e-01, 6.847e-02, 3.119e-01, 3.663e-02, -6.266e-01, 1.109e-01, 9.272e-02), r5);\n\tr0 = MulAdd(s0_1_2, M4(5.503e-03, -6.199e-03, -1.303e-01, -2.319e-01, -1.587e-02, -8.702e-03, 6.371e-02, 1.027e-01, 8.745e-02, 2.087e-04, -1.141e-03, -1.082e-03, -6.182e-02, -2.807e-02, 5.784e-03, 7.795e-03), r0);\n\tr1 = MulAdd(s0_1_2, M4(8.219e-02, -4.947e-01, -1.532e-02, -2.774e-02, -1.649e-01, 2.844e-02, 2.794e-02, -8.269e-03, 1.283e-02, 2.142e-01, 1.259e-02, 2.173e-03, -1.642e-03, 1.236e-01, 2.911e-02, 2.131e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(-3.443e-02, -2.847e-01, -2.041e-01, 1.255e-02, -2.776e-02, -1.290e-02, -1.378e-01, 1.367e-01, 1.628e-01, -6.690e-03, 2.682e-01, -4.100e-02, 2.113e-01, 6.477e-02, 7.834e-02, -1.513e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(1.858e-03, -1.058e-01, 1.661e-01, 2.035e-01, 1.925e-02, -1.155e-03, 1.938e-01, -2.157e-01, -1.595e-02, -6.658e-02, 9.770e-02, -3.241e-01, -3.839e-02, 2.114e-02, -1.797e-02, -4.569e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(4.097e-03, -1.750e-03, 6.469e-02, 1.178e-01, 8.451e-02, -3.357e-03, -1.071e-01, 1.318e-01, -1.057e-01, 1.597e-02, 3.006e-02, -8.742e-02, 2.095e-02, 6.220e-03, 7.152e-02, 1.375e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(-4.505e-02, -1.507e-02, 1.146e-01, -1.304e-01, 2.751e-02, 2.082e-01, 1.013e-03, -1.026e-01, 1.042e-02, 1.538e-01, -1.409e-01, -1.309e-01, 1.131e-04, 1.478e-01, -7.738e-02, 3.598e-02), r5);\n\tr0 = MulAdd(s0_2_0, M4(3.786e-02, 4.838e-02, 2.200e-03, 5.555e-02, -6.861e-04, -1.875e-02, -1.066e-02, -1.122e-02, -5.470e-03, -1.271e-03, 3.182e-03, 1.518e-01, -3.919e-02, 1.915e-02, 6.327e-02, 2.762e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-9.768e-02, -6.914e-02, -2.026e-01, 1.933e-02, -9.638e-02, -7.447e-02, -1.006e-01, 1.750e-02, -6.152e-02, 1.554e-01, 2.386e-02, 1.668e-02, -1.861e-01, 2.258e-01, 1.301e-01, 1.253e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-2.025e-01, -1.248e-01, -2.521e-01, 2.655e-02, 1.737e-02, 3.160e-02, 1.242e-01, 2.314e-01, 2.988e-01, 1.385e-02, 3.474e-02, 3.312e-01, -1.761e-01, -3.336e-03, 9.750e-02, -1.702e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(-3.890e-02, -1.050e-01, -1.500e-01, -1.048e-01, -7.098e-03, 4.568e-02, 5.213e-02, 2.669e-02, -1.031e-02, -2.619e-02, -4.923e-02, 1.590e-02, -4.018e-03, 8.112e-02, 4.650e-02, -1.780e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(1.646e-02, -4.771e-02, -1.738e-01, -1.321e-01, 3.074e-03, 2.399e-02, 5.138e-02, -3.836e-02, -3.731e-02, 7.609e-05, 1.105e-01, 1.180e-01, -7.415e-02, 4.073e-03, -8.033e-02, -9.504e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-2.688e-02, -1.762e-01, -1.348e-01, -3.551e-02, -8.984e-03, 4.241e-02, -1.353e-02, 5.937e-02, 4.709e-02, 4.390e-02, 1.920e-01, 2.388e-01, 7.399e-02, 6.653e-03, 1.255e-01, -2.783e-01), r5);\n\tr0 = MulAdd(s0_2_1, M4(-6.179e-03, 1.987e-01, -1.179e-01, -3.601e-02, -1.095e-02, -2.217e-02, -8.804e-03, -1.540e-02, -2.949e-02, 1.278e-02, -7.810e-03, 9.250e-03, -3.404e-02, -5.124e-02, 7.979e-02, -2.082e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-7.423e-02, -2.037e-01, 7.525e-02, -1.654e-03, 2.739e-02, -3.688e-02, 1.446e-01, -1.700e-02, 8.128e-02, 3.644e-02, 6.467e-02, 1.659e-02, 3.941e-02, -3.085e-01, -1.860e-01, -4.797e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.535e+00, 2.605e-01, 6.609e-02, -1.599e-04, 6.409e-02, 3.021e-02, -1.557e-01, -3.509e-02, 2.310e-01, -2.555e-02, 1.070e-01, 3.070e-01, 4.185e-01, -4.583e-04, 2.834e-01, 9.187e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-1.182e-01, -1.917e-01, -1.511e-02, 6.812e-02, 6.386e-03, 9.252e-02, 4.329e-02, -6.462e-02, -2.615e-02, 2.608e-02, -6.318e-02, -6.787e-02, 1.703e-02, 2.196e-03, 4.182e-04, 1.309e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(7.971e-01, -4.557e-02, -2.678e+00, 2.476e-01, 1.582e-02, 1.578e-02, -1.190e-01, -2.530e-02, -7.206e-02, 2.523e-02, 1.794e-01, -2.677e-02, -1.454e-01, 9.141e-03, 4.343e-01, -2.216e-01), r4);\n\tr5 = MulAdd(s0_2_1, M4(1.174e-02, 1.958e-01, 1.029e-01, -3.771e-01, -5.193e-02, 1.687e-02, -2.864e-01, 2.725e-01, -1.700e-03, 4.667e-02, 3.852e-03, 1.724e-01, -3.973e-02, -3.715e-01, 1.442e-01, -1.412e-01), r5);\n\tr0 = MulAdd(s0_2_2, M4(-9.741e-02, 6.275e-02, -4.909e-02, 1.771e-01, 2.479e-02, -2.475e-02, -8.889e-04, -1.570e-02, -6.966e-03, 1.095e-02, -1.072e-02, 2.591e-02, 6.548e-02, 1.684e-02, 5.164e-02, 2.427e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(-5.341e-02, -1.399e-01, -2.106e-02, -2.767e-02, -4.574e-02, 1.029e-02, 7.763e-05, -2.299e-02, -2.723e-03, 1.306e-01, -1.623e-02, 1.017e-02, -1.524e-02, 1.701e-01, 3.788e-02, 4.276e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(-9.300e-02, 1.544e-01, -1.780e+00, 8.351e-02, 8.798e-02, 9.449e-02, 7.964e-02, 6.309e-02, -5.271e-02, -1.057e-02, -8.311e-02, 1.087e-01, -2.927e-01, -8.615e-02, 3.532e-01, 8.864e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(1.542e-02, 2.119e-02, 1.350e-01, 3.798e-01, 5.597e-02, 3.974e-02, 3.588e-02, -5.061e-02, -1.710e-02, -5.584e-02, 3.944e-02, -3.100e-02, 2.408e-02, -1.141e-02, 3.337e-02, -1.080e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(-2.490e-02, -2.264e-02, 1.539e-03, -3.261e-02, 3.988e-02, 2.392e-03, 2.326e-02, 9.486e-02, -3.145e-03, 4.851e-03, -1.295e-01, -3.436e-03, 6.617e-02, 1.556e-02, -4.746e-02, 8.494e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(7.322e-03, -2.015e-01, 1.587e-01, -3.463e-02, -1.018e-02, 3.777e-02, -1.398e-01, -2.954e-02, -5.635e-03, 1.622e-01, -7.013e-02, 1.031e-01, -1.313e-02, 2.004e-01, 3.103e-02, -8.039e-02), r5);\n\tr0 = MulAdd(s1_0_0, M4(-1.453e-02, -5.772e-03, -6.274e-02, -1.116e-01, 7.442e-02, -5.115e-03, -3.473e-02, -3.479e-02, 5.897e-02, -2.045e-02, -2.074e-02, 1.169e-01, -3.040e-04, -1.849e-02, -7.839e-02, 9.168e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-5.891e-02, 1.191e-02, -1.009e-01, -1.611e-01, 3.549e-02, -3.414e-01, -1.023e-02, 9.803e-03, -2.051e-02, 2.763e-02, 8.516e-02, 1.382e-02, 7.846e-02, 7.140e-02, -7.444e-02, -3.797e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.044e-01, 9.695e-02, 5.464e-02, 6.325e-03, -2.338e-01, 2.089e-01, -1.224e-01, -2.838e-03, -1.480e-01, 2.317e-01, 4.600e-02, -8.423e-02, 1.629e-02, 6.098e-03, -4.597e-02, 1.510e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(3.165e-02, -6.799e-02, -1.148e-01, -8.661e-02, -4.539e-02, 2.937e-01, 1.245e-01, 2.626e-01, 4.480e-02, 4.277e-02, 1.900e-01, 1.566e-02, 2.412e-02, 2.317e-02, -6.464e-02, 1.929e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(8.862e-03, 1.796e-01, 2.387e-02, 2.594e-02, -1.115e-02, -6.678e-03, -1.150e-01, -2.837e-01, 6.274e-02, -2.702e-02, -1.801e-01, -4.290e-02, 1.366e-01, 4.708e-02, 3.332e-02, -7.715e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-1.478e-03, -5.738e-02, -9.505e-02, -1.784e-02, -1.069e-02, -4.196e-02, 1.373e-01, -3.319e-01, 2.748e-02, 1.267e-02, -1.726e-01, -1.145e-01, -2.371e-02, 6.783e-02, -7.522e-03, 1.312e-01), r5);\n\tr0 = MulAdd(s1_0_1, M4(-1.528e-02, -1.654e-02, -1.706e-02, 1.846e-01, -5.218e-02, 4.402e-02, 3.143e-01, 1.692e-01, -1.240e-02, 2.605e-02, -1.403e-01, 7.119e-02, -9.596e-02, 1.093e-02, -1.627e-02, 9.873e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.627e-01, 1.613e-01, 1.363e-01, 1.693e-02, 9.734e-02, 5.723e-01, -3.641e-02, -2.259e-03, -1.104e-01, -9.716e-02, -9.588e-02, -3.717e-03, -3.096e-01, -1.150e-01, 1.539e-01, -3.206e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-8.101e-02, -2.651e-02, -1.199e-02, 1.411e-01, -6.111e-03, -4.365e-01, 2.079e-01, -2.205e-01, -6.915e-02, 4.082e-01, -3.139e-01, 3.741e-02, -4.135e-01, 1.420e-01, -1.708e-01, -1.725e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-2.721e-02, 7.482e-02, 5.448e-02, -1.597e-01, -2.163e-02, -1.761e-01, -1.092e-02, -8.993e-01, 4.508e-02, 2.927e-01, -2.015e-01, -4.130e-01, 2.360e-02, 9.956e-02, 5.315e-02, -1.055e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(-3.942e-02, -6.013e-02, 1.097e-01, -1.169e-01, -2.118e-01, -5.455e-02, -4.769e-02, -3.587e-03, 3.209e-02, 1.937e-02, -4.589e-02, 7.164e-02, 4.294e-02, -2.795e-02, -8.900e-02, -2.036e-01), r4);\n\tr5 = MulAdd(s1_0_1, M4(3.336e-02, 1.035e-01, 3.591e-02, -1.345e-01, -3.462e-02, 2.340e-01, -3.943e-01, 7.285e-02, -7.056e-02, -2.245e-01, -3.752e-02, 2.218e-01, 7.042e-02, -5.964e-02, -1.588e-01, 2.604e-01), r5);\n\tr0 = MulAdd(s1_0_2, M4(1.690e-02, -1.512e-02, -8.008e-03, 2.285e-02, -1.788e-02, 3.878e-02, 5.471e-02, -3.201e-03, -6.394e-02, 6.588e-03, -3.340e-02, 1.173e-01, -6.459e-02, -2.344e-02, -7.649e-02, -1.950e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-4.045e-03, 7.326e-02, 2.935e-03, 5.576e-02, -3.480e-02, 1.349e-01, -1.322e-01, 2.408e-02, -6.872e-02, 1.335e-01, -1.503e-03, 2.343e-02, -7.437e-02, -1.755e-01, 1.860e-02, 3.304e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-9.290e-02, 7.851e-02, -1.028e-01, -7.250e-02, -6.967e-02, -1.132e-01, -6.590e-02, 2.191e-02, 5.605e-02, 2.019e-01, 3.018e-01, 1.516e-01, 2.654e-01, -1.502e+00, -3.265e-01, 6.569e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-1.325e-02, -1.353e-02, -5.551e-02, 3.473e-02, 3.306e-02, -2.751e-02, -5.403e-02, -1.433e-01, 3.083e-02, 4.329e-02, 5.629e-02, -1.181e-02, 5.213e-02, -2.035e-01, 7.284e-02, -1.333e-01), r3);\n\tr4 = MulAdd(s1_0_2, M4(3.263e-02, -1.057e-02, -3.049e-02, -6.329e-03, -9.958e-03, -5.700e-02, -1.292e-01, -7.498e-02, -2.768e-03, -4.130e-02, 1.119e-01, 2.176e-03, 1.655e-01, -8.277e-02, -1.163e-01, 1.641e-01), r4);\n\tr5 = MulAdd(s1_0_2, M4(-2.060e-02, -4.934e-02, -3.389e-02, -4.308e-02, -2.725e-02, -5.959e-02, 1.365e-01, -8.609e-02, 2.195e-02, -3.153e-02, 1.135e-01, -5.958e-02, -3.347e-02, -4.069e-02, 2.488e-01, 1.040e-01), r5);\n\tr0 = MulAdd(s1_1_0, M4(3.834e-02, 2.305e-02, -2.411e-02, -8.639e-02, -2.711e-02, 7.722e-02, -9.803e-03, -1.932e-01, -9.566e-02, -8.927e-02, -9.158e-02, -2.016e-01, 2.460e-02, 2.903e-02, 4.658e-02, 1.238e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.450e-01, -7.297e-02, 7.356e-02, -2.917e-01, 1.089e-01, -6.666e-02, -2.035e-01, -2.036e-02, -7.434e-02, -1.186e-01, 4.805e-01, -4.367e-02, -1.965e-01, 3.920e-02, 2.658e-02, 6.386e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(-9.327e-01, -8.768e-02, -8.469e-02, -7.572e-02, -1.788e-01, -2.498e-01, -2.474e-01, 8.455e-02, 1.166e-01, -1.501e-01, 3.524e-01, -4.033e-01, -9.497e-03, 1.967e-02, -5.328e-03, 1.568e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(1.142e-01, 7.530e-02, -6.218e-01, -1.344e-01, -5.291e-03, 3.445e-02, 1.536e-01, 2.143e-01, 5.233e-02, 5.326e-03, -3.447e-01, 1.340e-01, -1.609e-02, -1.016e-01, -1.614e-01, 7.248e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(2.509e-02, 4.262e-01, -2.112e-01, -3.038e-02, 1.783e-01, -2.619e-02, -1.832e-01, -7.676e-02, -9.801e-02, -1.683e-02, -9.296e-03, 7.044e-02, -2.088e-02, -2.486e-02, -1.209e-01, -8.172e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(4.526e-03, -2.795e-01, 1.515e-01, -8.030e-02, 2.504e-01, 1.927e-01, 4.537e-03, -1.152e-01, -1.004e-01, 3.085e-02, -2.674e-02, -2.364e-01, -6.376e-02, -1.719e-02, -2.675e-01, 9.064e-02), r5);\n\tr0 = MulAdd(s1_1_1, M4(-7.501e-02, 4.630e-02, 9.085e-02, -4.593e-01, -1.013e-01, -1.556e-01, -3.040e-01, -1.782e-01, 3.556e-01, 2.607e-01, 2.214e-01, -3.667e-01, 2.805e-02, 6.445e-02, 4.359e-02, 2.986e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-2.263e-01, -3.690e-01, -1.349e-01, 8.144e-01, 2.953e-02, -8.012e-01, 1.265e-01, -4.976e-02, 6.277e-02, -1.152e-01, -2.716e-01, -4.564e-02, -3.634e-01, -1.820e-01, -1.664e-02, 4.098e-03), r1);\n\tr2 = MulAdd(s1_1_1, M4(6.583e-01, -2.061e-01, 1.310e-01, -1.357e-01, -1.414e-02, 2.311e-01, 2.470e-02, -1.855e-01, -1.331e-01, -7.727e-01, 4.921e-02, 2.724e-01, -1.611e+00, 1.500e-01, -8.231e-02, 4.077e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-1.032e-01, -1.606e-01, 1.029e-01, 2.477e-01, 2.423e-01, 1.437e-03, -1.634e-01, 9.453e-02, -1.391e-01, 2.067e-01, -1.035e-01, 5.538e-02, -1.963e-01, 2.440e-02, -4.457e-01, 1.100e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(9.341e-02, -6.795e-01, -2.163e-01, -2.635e-02, 9.448e-02, -2.132e-02, 2.289e-01, 1.884e-01, 8.859e-02, 1.194e-01, -1.471e-01, -4.396e-01, -8.604e-03, 3.119e-02, -3.976e+00, -3.986e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-6.943e-02, -1.443e-01, 2.032e-02, 1.800e-01, -1.510e-01, -4.363e-01, -2.139e-01, 3.029e-01, 1.323e-01, 5.118e-02, 3.876e-02, 1.970e-01, 7.115e-01, 2.511e-02, 2.457e-01, -3.401e-01), r5);\n\tr0 = MulAdd(s1_1_2, M4(-2.869e-02, -2.289e-02, -9.290e-03, -1.209e-01, -3.757e-02, -1.054e-02, -1.129e-01, 3.108e-02, -1.173e-01, 3.358e-02, -1.479e-02, -1.420e-01, -7.600e+00, 4.182e-02, -2.138e-01, 9.374e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-8.878e-02, -1.704e-01, 2.374e-02, -6.739e-02, -4.257e-02, -2.985e-01, 9.039e-02, 7.626e-03, 1.206e-01, -2.270e-01, 1.842e-02, 4.696e-02, 2.006e-02, 1.138e-02, 9.714e-02, -1.553e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.083e-01, -6.178e-02, -1.805e-01, 1.254e-01, 1.644e-01, 8.419e-02, 1.245e-01, -9.020e-02, 2.456e-01, -1.837e-01, -5.184e-01, -6.416e-02, -4.336e-02, -1.163e-01, -7.601e-01, 1.902e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(-2.187e-02, 5.598e-02, 1.017e-01, 3.484e-02, 1.308e-01, -6.061e-02, -9.467e-02, 1.818e-01, -3.110e-02, -8.507e-02, 7.244e-02, 3.550e-01, 2.358e-01, -1.267e-01, 2.431e-01, 4.803e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(-1.275e-01, 5.425e-02, 7.969e-02, 1.315e-01, -1.299e-01, -9.132e-03, 7.692e-02, -6.521e-02, 1.680e-01, -6.532e-03, 1.224e-02, -6.945e-02, 1.015e-01, 9.986e-02, 3.046e-01, -9.207e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(6.684e-02, 6.705e-04, 2.423e-04, 1.101e-01, -6.018e-02, 2.028e-02, -1.669e-01, 6.549e-02, -7.168e-02, 1.470e-01, 8.858e-02, -5.605e-02, -1.055e-03, 4.206e-01, 2.211e-01, -4.271e-01), r5);\n\tr0 = MulAdd(s1_2_0, M4(4.824e-02, 7.300e-02, 1.722e-02, 1.281e-01, -1.846e-02, 2.945e-02, 1.756e-02, 1.204e-01, 2.169e-02, -3.337e-03, 5.993e-02, 6.857e-02, 1.214e-02, -1.502e-03, 9.713e-03, 2.686e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(4.220e-02, 2.105e-02, -8.566e-02, -1.111e-01, -3.618e-01, 1.570e-01, -1.199e-01, 2.156e-02, 5.250e-02, 1.734e-01, 4.974e-03, 3.137e-03, 1.371e-01, -9.086e-04, -7.786e-02, 8.746e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(6.573e-02, 1.267e-01, 1.019e-02, 1.528e-01, 1.371e-01, 1.223e-01, -1.048e-01, -1.482e-01, 1.991e-01, 9.247e-02, -1.187e-01, 1.844e-01, 1.863e-02, 1.803e-02, -4.941e-02, 1.878e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(1.707e-01, 1.909e-02, 4.525e-02, -3.439e-02, -1.961e-02, -5.437e-02, 8.294e-02, 2.234e-01, 2.187e-02, -6.856e-02, 3.881e-02, -1.179e-02, 5.358e-02, -7.196e-04, -6.519e-02, 2.797e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(3.013e-02, 1.641e-01, 1.430e-02, 5.734e-03, 2.381e-02, -2.365e-02, -9.702e-02, 6.373e-02, -1.059e-01, -4.153e-03, 1.082e-01, 1.043e-01, 4.288e-02, -1.095e-02, 5.872e-02, -4.490e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(2.350e-02, 1.499e-01, -2.865e-01, 8.460e-02, 3.325e-02, 8.528e-02, 1.451e-01, -1.528e-01, 4.118e-05, -2.260e-02, -7.000e-02, -2.323e-02, -5.695e-04, 8.402e-02, -6.852e-02, 6.913e-02), r5);\n\tr0 = MulAdd(s1_2_1, M4(-1.501e-02, 4.002e-02, -1.293e-02, 2.065e-01, 2.203e-02, 1.694e-01, 2.972e-02, 1.210e-01, -6.475e-02, -1.419e-01, -3.404e-02, 5.882e-02, -3.275e-02, -9.817e-02, -4.382e-02, 1.120e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(6.588e-02, 1.039e-01, 8.316e-02, -2.180e-01, -1.049e-02, 2.151e-01, -1.975e-01, -9.531e-03, 4.374e-02, -4.369e-02, -6.858e-02, 3.576e-02, 2.043e-01, 2.404e-02, 1.178e-01, -2.837e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-2.223e-01, -6.371e-02, -1.837e-01, -8.524e-02, 1.653e-01, 1.433e-01, -1.877e-01, 2.353e-01, -1.725e-01, 1.107e-01, 5.150e-02, -1.419e-01, -3.391e-01, 1.125e-01, -4.497e-02, -5.465e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(4.950e-02, 3.286e-04, 1.814e-01, 9.455e-02, -8.894e-02, 1.499e-01, 2.190e-02, 7.903e-02, -6.645e-03, -1.015e-01, 1.342e-01, 3.353e-02, -6.314e-02, -1.331e-01, 1.165e-01, -5.041e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-3.804e-03, 2.241e-01, -1.465e-01, 1.301e-02, -7.506e-02, 1.605e-02, 3.706e-02, 7.624e-02, -2.567e-02, -3.530e-02, 1.336e-01, 2.208e-01, 2.014e-01, -3.930e-02, -1.948e-01, 7.634e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(2.178e-02, 3.475e-02, 1.020e-01, -1.265e-01, -2.349e-02, -1.806e-01, 1.669e-01, 1.702e-01, 5.706e-03, 1.107e-01, 7.729e-02, 9.030e-03, 4.183e-02, -7.209e-02, -3.356e-01, 1.914e-01), r5);\n\tr0 = MulAdd(s1_2_2, M4(-3.487e-03, 6.259e-02, -4.393e-03, 5.630e-02, 2.935e-02, 5.482e-02, -2.512e-03, 6.897e-02, 8.530e-03, 2.799e-02, 2.094e-02, 1.597e-01, -1.054e-01, -8.217e-03, -1.586e-03, 1.176e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(2.893e-02, 1.100e-01, -4.276e-02, -5.627e-02, 1.130e-01, 1.781e-01, 1.391e-01, -5.135e-02, 5.398e-03, 1.703e-01, 5.019e-02, -4.345e-02, 8.353e-02, -1.601e-02, 1.583e-02, 2.608e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-3.224e-02, 5.281e-02, 1.359e-01, 7.371e-04, 1.334e-01, -2.973e-03, -2.223e-01, -7.460e-02, 6.497e-02, 6.192e-02, -2.109e-01, -5.483e-02, -7.946e-02, 1.587e-01, 7.006e-02, -3.935e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(2.512e-02, -7.390e-02, 1.022e-01, 3.514e-02, 3.457e-02, -8.543e-02, -2.906e-02, -1.968e-01, 4.991e-02, -3.149e-02, 2.726e-02, 3.124e-02, 7.317e-02, -1.517e-01, 5.110e-02, 6.362e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(8.326e-02, 3.877e-02, -2.421e-02, -9.650e-02, 5.385e-02, 3.106e-02, 3.500e-02, 5.504e-02, -8.376e-02, -7.282e-03, 5.480e-02, 5.511e-02, 1.447e-01, -7.740e-02, -2.935e-02, -3.957e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-4.126e-02, 5.311e-03, 9.699e-02, -2.610e-02, 1.678e-02, 8.715e-02, -9.162e-02, 1.184e-01, -1.167e-02, -4.203e-02, -3.271e-02, -3.478e-02, -8.981e-02, -7.074e-02, 1.110e-01, -3.561e-01), r5);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT4[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT5[gxy] = r5;\n}\n\n//!PASS 4\n//!DESC conv3 (24x24)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2, T3, T4, T5\n//!OUT T6, T7, T8, T9, T10, T11\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n#define L4(x, y) V4(O(T4, x, y))\n#define L5(x, y) V4(O(T5, x, y))\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(6.849e-02, -5.121e-01, 1.499e-01, 1.443e-01, 8.834e-02, -2.045e-02, -1.635e-01, -3.176e-01, 4.253e-02, -2.764e-02, -4.494e-03, 5.293e-02, -6.403e-02, -5.556e-02, 3.843e-02, 8.673e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-3.941e-02, -9.047e-02, -6.898e-02, 2.572e-01, -1.730e-02, -2.783e-01, 4.799e-02, -1.643e-01, -2.478e-02, 8.067e-02, -1.152e-02, 1.234e-01, -7.355e-02, 6.795e-04, -2.780e-02, 3.840e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.026e-02, 5.879e-02, -5.269e-02, -7.493e-02, 1.305e-03, -9.081e-02, 3.356e-02, -7.940e-02, -6.167e-03, 5.317e-02, -4.499e-02, -5.545e-02, -1.234e-02, 3.002e-02, 2.087e-02, -2.299e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(2.720e-02, 3.445e-02, -1.067e-01, 2.986e-02, 1.292e-01, -5.594e-02, -1.154e-01, -4.867e-02, 2.942e-02, 2.876e-02, 9.922e-03, 3.364e-02, -4.636e-02, 6.331e-03, 5.051e-02, 7.573e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(3.670e-03, -9.628e-03, 5.824e-02, 4.424e-02, -2.926e-02, 1.065e-02, -4.601e-02, -3.620e-02, -1.422e-02, 1.887e-02, 4.587e-04, 1.658e-02, -1.895e-02, -2.318e-02, 2.577e-02, -4.325e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(1.597e-01, -6.734e-02, 3.335e-02, 3.453e-02, -6.478e-02, -7.346e-02, -1.358e-01, 1.363e-03, 4.563e-02, -2.030e-02, 7.317e-02, 3.357e-03, 2.070e-03, 2.815e-02, -1.095e-01, 4.475e-02), r5);\n\tr0 = MulAdd(s0_0_1, M4(-3.156e-02, -4.505e-02, -1.091e-01, -2.615e-02, 5.545e-01, 2.608e-01, -2.673e-01, 4.117e-01, -1.500e-02, -1.034e-01, -7.969e-02, -4.862e-02, -1.722e-03, -3.700e-02, -1.646e-01, -2.757e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(7.853e-02, 1.929e-01, -6.308e-02, -3.190e-01, 1.173e-01, 8.166e-02, 3.108e-02, 4.622e-01, 2.449e-02, -4.646e-02, -3.225e-02, 9.907e-02, -1.542e-02, -4.339e-01, -3.416e-02, -9.932e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-4.197e-02, -1.238e-01, 7.346e-02, 1.943e-02, 2.436e-01, 1.970e-01, -2.992e-01, -5.569e-02, -3.761e-02, -2.571e-02, -3.333e-03, 2.853e-02, -4.255e-03, -4.586e-02, -3.261e-02, -3.642e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(8.848e-02, -2.489e-02, 1.207e-01, -1.199e-02, 6.965e-01, 1.018e-02, -7.885e-03, -7.845e-03, -9.253e-02, 8.025e-03, -5.539e-04, 7.312e-03, -7.770e-02, -1.706e-02, -8.436e-02, -1.541e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.154e-01, 1.397e-01, -2.753e-02, 1.303e-01, -1.182e-01, 5.802e-01, 2.569e-01, -1.821e-01, 2.410e-02, -7.407e-02, 4.914e-02, 4.850e-02, -1.513e-02, -1.094e-01, -5.561e-02, -2.413e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(6.970e-03, -2.390e-01, -1.102e-01, -4.627e-02, 6.859e-02, -1.467e-01, 8.278e-02, -6.316e-02, -1.174e-01, 3.423e-02, -6.780e-02, 5.235e-02, -1.041e-01, 1.119e-01, -6.519e-02, 1.283e-01), r5);\n\tr0 = MulAdd(s0_0_2, M4(9.548e-03, -2.592e-02, 2.987e-02, 1.431e-02, -1.243e-01, 5.006e-02, -6.317e-02, -5.114e-02, 4.082e-03, 4.735e-02, 1.184e-01, -4.589e-02, 4.822e-02, 2.726e-02, -2.459e-02, -1.760e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-9.080e-03, 2.859e-02, 7.229e-03, -6.541e-03, 1.739e-01, -5.419e-02, -1.550e-02, 1.302e-01, -4.029e-02, 6.939e-02, 3.307e-02, -7.208e-02, -7.801e-03, -2.167e-02, 1.147e-02, -7.315e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.801e-02, 4.509e-02, -1.911e-02, -1.323e-02, -1.076e-01, -1.083e-01, 4.029e-03, 1.412e-01, -2.213e-02, -4.651e-02, 1.384e-02, -4.808e-02, 2.469e-02, 9.825e-03, -1.289e-02, -5.206e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-1.160e-02, -6.972e-03, 1.305e-02, -1.582e-02, 8.364e-02, 4.154e-02, -4.519e-02, 6.651e-02, -7.739e-02, -1.285e-02, 2.320e-02, -1.395e-02, -2.934e-03, -5.433e-02, 1.571e-02, -5.405e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(2.130e-02, -5.420e-03, 1.837e-02, -2.891e-03, -2.068e-02, 4.965e-02, 1.724e-01, -1.847e-02, -1.004e-02, -6.223e-02, -4.298e-02, -1.434e-02, -3.611e-03, -6.518e-02, 4.492e-02, -6.266e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(-9.686e-03, 1.022e-02, 3.467e-02, -1.789e-02, -9.839e-02, -1.676e-01, 2.691e-02, 3.456e-03, 4.848e-02, 1.056e-01, 3.886e-02, -8.160e-03, 6.680e-02, 1.455e-01, 3.108e-02, 5.429e-02), r5);\n\tr0 = MulAdd(s0_1_0, M4(3.805e-01, -2.075e-01, 6.192e-02, 3.974e-01, -2.246e-01, 4.006e-01, 4.235e-02, 3.456e-02, 6.922e-02, 6.249e-02, -8.667e-04, 2.867e-03, -2.851e-02, 2.195e-02, -1.761e-02, 1.149e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(3.455e-02, -1.355e-01, -9.510e-02, -1.695e-01, 8.648e-03, -1.070e-01, 4.571e-02, 2.109e-01, -1.086e-02, -8.152e-02, -6.043e-03, 8.958e-01, -5.598e-03, 1.356e-01, -1.694e-02, -9.328e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(8.815e-02, 1.177e-01, -1.104e-01, -3.376e-02, 3.124e-03, 2.216e-01, 4.823e-03, 1.970e-01, -1.564e-02, -9.394e-02, -3.336e-03, -3.636e-02, 1.162e-02, 6.684e-02, 1.195e-02, 2.714e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(9.543e-02, 5.923e-02, -1.007e-01, 3.775e-02, -3.536e-02, 3.641e-02, -5.097e-01, 2.743e-02, 5.945e-02, 3.422e-03, -1.182e-01, 1.598e-02, -7.545e-02, 2.090e-02, -2.669e-04, 2.330e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-4.792e-03, 2.462e-01, 4.450e-02, -2.812e-02, -8.524e-02, 1.238e-01, 2.761e-01, -1.572e-02, 1.674e-02, 4.911e-02, 9.891e-02, 4.984e-02, -1.243e-02, 6.889e-03, -2.204e-02, 1.367e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(4.325e-01, 2.468e-01, 1.070e-01, -2.892e-02, 2.589e-02, -7.916e-02, -2.209e-01, 6.781e-02, -9.499e-03, 1.038e-01, 7.352e-02, 5.804e-02, 2.617e-02, -1.255e-01, 2.284e-02, -5.574e-02), r5);\n\tr0 = MulAdd(s0_1_1, M4(-2.951e-01, -2.912e-01, 6.726e-02, -3.581e-02, -3.252e-01, -2.647e-01, 9.516e-02, -2.776e-01, 2.650e-01, -6.191e-02, 4.359e-01, -4.206e-01, 3.109e-01, 8.741e-02, -2.221e-01, 1.147e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-3.488e-01, -1.292e-01, -1.380e-01, -2.192e-01, -1.867e-02, -7.359e-01, -1.847e-02, 4.150e-02, 2.607e-02, -2.506e-01, -4.436e-02, -2.570e-01, 1.406e-01, -2.045e-01, -3.428e-02, -2.195e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.272e-01, -1.682e-01, -4.630e-02, -1.087e+00, -9.061e-02, -3.902e-01, 4.990e-01, -5.752e-01, 4.898e-02, -9.618e-03, 8.242e-02, -7.042e-03, -4.101e-02, -3.567e-02, 1.675e-01, 3.114e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-5.551e-02, -8.010e-02, 3.301e-02, -6.012e-02, -3.477e-01, 2.703e-02, 2.780e-01, 6.490e-02, 1.262e-01, -1.558e-01, 1.393e-01, -1.265e-01, -1.782e-01, -1.446e-01, -8.423e-02, -1.381e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(3.756e-01, 7.693e-02, 2.048e-01, 5.428e-03, 4.773e-01, -1.928e-01, -1.357e-01, -1.142e-01, 1.685e-01, 9.111e-02, -2.451e-01, 4.817e-01, -2.412e-02, -1.274e-01, -3.070e-01, -3.022e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-2.368e-01, -3.958e-01, 2.191e-01, 3.823e-01, -3.952e-01, 2.173e-01, -3.894e-02, -4.536e-01, -1.490e-01, -6.326e-01, -3.211e-01, 8.885e-02, -1.447e-03, -2.368e-01, -2.437e-01, -3.803e-01), r5);\n\tr0 = MulAdd(s0_1_2, M4(1.246e-02, -6.025e-02, 4.162e-02, 6.257e-03, -3.697e-02, 7.608e-02, -7.746e-02, 8.607e-02, 2.981e-02, 2.386e-02, 4.494e-02, -1.363e-01, -6.935e-02, 1.271e-01, 1.384e-02, 1.646e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(5.109e-04, -4.628e-02, -8.573e-03, 4.862e-02, -1.556e-01, 8.844e-02, 2.159e-02, -2.607e-01, 7.451e-02, -1.478e-01, 3.467e-03, 6.437e-03, 1.544e-01, 9.126e-03, -2.525e-02, 1.627e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.175e-02, 2.919e-02, 3.828e-02, -4.646e-02, -3.816e-03, -5.658e-02, -5.263e-03, 6.903e-02, -1.564e-02, -2.877e-03, 1.174e-02, 6.577e-02, -3.889e-03, -5.885e-02, -4.959e-03, 4.403e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-2.047e-03, -1.557e-02, -1.722e-02, -1.777e-02, -6.378e-02, 9.032e-03, -4.228e-02, 4.362e-03, 4.839e-02, -3.174e-02, -5.362e-02, -4.165e-02, -3.589e-02, -2.834e-02, -2.013e-03, -3.108e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(1.472e-02, -1.506e-02, -3.675e-02, -6.261e-03, -1.549e-01, -1.236e-02, -2.273e-01, -6.013e-03, -6.050e-02, 1.320e-01, 6.251e-03, 1.312e-01, -3.636e-02, 9.341e-03, -2.035e-01, -1.414e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-1.481e-02, -1.199e-01, -2.515e-02, -4.489e-02, 6.752e-02, 7.373e-02, 7.540e-03, 3.958e-02, -3.011e-02, -2.694e-01, -1.172e-01, -1.904e-02, -3.912e-02, 1.222e-01, 7.361e-02, 5.265e-02), r5);\n\tr0 = MulAdd(s0_2_0, M4(-1.255e-01, -2.120e-02, 7.935e-03, 6.043e-02, -3.435e-02, 5.650e-02, -1.732e-02, -2.199e-02, -1.235e-01, -2.511e-01, -7.059e-02, -8.891e-03, 5.012e-02, 9.573e-02, -5.214e-02, 6.114e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-7.009e-02, -1.571e-01, -5.563e-02, 1.875e-01, -7.105e-02, 7.305e-02, 2.681e-02, 1.047e-02, 6.224e-02, -1.384e-01, -3.905e-03, 5.219e-01, -1.507e-02, -7.406e-02, -1.363e-02, 3.249e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.482e-02, 6.681e-02, 2.074e-02, -1.413e-01, -3.663e-03, 6.665e-02, 7.555e-03, 8.123e-02, -5.552e-02, -2.657e-02, -4.001e-02, -5.655e-02, 8.321e-03, -6.354e-03, -2.201e-04, 2.163e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-1.690e-03, 2.411e-02, 7.173e-02, 2.249e-02, -2.377e-02, -1.898e-02, -9.558e-02, -3.379e-02, 2.949e-03, 2.631e-02, -2.690e-02, 3.659e-02, -5.686e-02, 4.324e-02, -5.221e-02, 4.125e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-9.477e-03, -1.450e-02, 6.060e-02, -1.353e-02, -4.036e-04, -1.538e-02, -2.695e-02, 5.705e-03, 4.383e-02, -6.785e-02, -8.387e-02, 2.364e-02, 1.462e-02, 3.372e-02, -2.682e-02, -1.131e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(3.919e-02, 8.032e-02, -8.383e-02, -1.135e-01, -1.635e-02, 9.374e-03, 1.388e-02, 1.027e-01, 2.084e-02, 1.146e-01, -1.563e-01, -1.175e-01, -1.770e-02, -7.837e-02, -2.863e-02, 1.054e-03), r5);\n\tr0 = MulAdd(s0_2_1, M4(8.825e-02, -1.568e-01, 4.339e-02, 1.033e-01, 9.473e-02, -3.065e-02, -2.296e-03, -3.654e-02, -1.074e+00, -9.718e-02, -3.450e-01, -5.092e-02, 2.073e-02, -4.065e-02, 4.067e-02, 5.666e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.653e-01, -1.998e-01, -3.035e-02, 2.756e-01, 1.561e-01, -1.243e-01, 8.389e-03, -2.003e-01, -5.262e-01, 8.396e-02, -1.501e-02, 6.476e-01, 2.192e-01, 7.851e-02, -4.212e-02, 1.343e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(5.003e-03, 8.566e-02, 6.003e-02, -3.873e-02, -4.456e-02, -8.179e-02, -1.749e-02, -4.331e-02, 1.270e-02, -4.196e-02, 1.910e-02, -1.913e-01, 1.018e-03, 2.798e-04, -7.603e-03, 9.647e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(2.920e-02, -1.546e-03, 3.209e-03, -4.388e-03, -6.668e-03, 1.631e-02, 4.319e-02, 2.231e-02, 1.314e-01, 7.154e-02, -8.447e-02, 7.893e-02, -3.094e-02, 1.795e-02, -1.506e-02, 2.231e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(1.338e-01, -9.798e-03, -1.522e-01, -2.972e-02, -3.825e-02, 1.686e-02, 8.217e-03, -3.636e-03, 1.710e-01, -5.058e-02, -5.754e-02, 5.579e-02, 4.143e-03, 1.098e-02, -3.225e-02, 1.157e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(9.409e-02, -1.386e-02, 5.985e-02, -5.249e-02, -3.821e-02, -2.462e-02, -4.439e-02, 3.259e-02, 4.667e-02, 3.638e-01, 4.093e-01, 4.203e-01, 2.140e-02, -4.177e-02, 4.732e-02, -2.248e-01), r5);\n\tr0 = MulAdd(s0_2_2, M4(-2.272e-05, -4.215e-02, 1.148e-02, 2.987e-03, 1.788e-02, 2.786e-02, 2.523e-02, -2.015e-02, 2.293e-01, -3.683e-02, 4.224e-02, -9.328e-03, 5.023e-02, 3.828e-02, 2.304e-02, 7.413e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-2.299e-02, 8.968e-03, 5.403e-04, 1.831e-01, -3.079e-03, 1.008e-01, 2.856e-03, -2.405e-01, 2.000e-01, -1.578e-01, -1.223e-02, 4.124e-01, 2.084e-01, 2.744e-02, -1.863e-02, -2.053e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.630e-02, 7.283e-02, -5.298e-04, 5.760e-02, 4.697e-03, -5.789e-02, -3.238e-02, 2.325e-06, -2.792e-03, 1.109e-01, 4.229e-02, -1.581e-01, -7.972e-03, 3.601e-02, -2.153e-02, -7.854e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(2.051e-02, -1.200e-02, -3.719e-04, -8.811e-03, -2.810e-02, -1.407e-02, 2.595e-03, -1.826e-03, 1.357e-02, -5.359e-02, -3.845e-02, -5.427e-02, 8.610e-03, -1.279e-02, 4.365e-02, -7.945e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(2.191e-02, -2.416e-02, 3.431e-02, 1.618e-02, 1.267e-03, 1.632e-02, -1.464e-02, -2.652e-02, 3.998e-02, -1.479e-02, 7.728e-02, 5.598e-02, -1.433e-02, -2.749e-02, 4.862e-02, -3.076e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(1.258e-02, -1.475e-02, -4.315e-02, 3.554e-02, 6.979e-03, 7.469e-02, -5.467e-02, -4.117e-02, -3.723e-02, -1.254e-01, -1.413e-01, 1.978e-01, -2.384e-02, 1.015e-02, -1.978e-02, -7.372e-02), r5);\n\tr0 = MulAdd(s1_0_0, M4(3.243e-02, 3.716e-02, -9.145e-03, -1.569e-01, 2.816e-02, 1.256e-01, -9.997e-03, 3.580e-02, 8.044e-03, -1.334e-02, -9.857e-03, 3.672e-02, 2.324e-02, -1.377e-02, 8.553e-03, 3.028e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(4.245e-02, -6.761e-02, 3.573e-02, -5.727e-01, 4.042e-02, 2.672e-01, 5.271e-02, -8.365e-01, -2.273e-02, 1.575e-01, -1.530e-02, -5.521e-02, 3.424e-02, 6.701e-02, 5.303e-02, 1.626e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(7.568e-03, 7.479e-03, -1.027e-02, -1.106e-02, 1.249e-02, -1.405e-02, 8.052e-03, 4.436e-02, -1.499e-02, 6.181e-03, 5.997e-03, -3.612e-02, -7.515e-03, 1.843e-02, -1.475e-02, -1.894e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(7.546e-03, -1.492e-02, 1.339e-02, -1.493e-02, -2.111e-02, 3.967e-02, -2.067e-02, 4.479e-02, -4.628e-02, 3.572e-03, 1.886e-02, -3.323e-04, 1.005e-03, 2.020e-04, 1.788e-02, 5.359e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(1.130e-03, -1.900e-02, -4.898e-03, 1.536e-02, -1.296e-02, 6.139e-02, 1.560e-02, 1.566e-02, -4.998e-03, -3.743e-02, -8.004e-03, -2.161e-02, -5.216e-03, 1.316e-02, 1.813e-02, -1.451e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-8.228e-02, 8.306e-03, 3.947e-02, 2.376e-02, 1.201e-03, -5.538e-02, 4.840e-02, -2.295e-02, -8.699e-02, 5.063e-02, -5.491e-02, 8.950e-02, 8.380e-03, -1.090e-02, 1.714e-02, 3.332e-02), r5);\n\tr0 = MulAdd(s1_0_1, M4(5.690e-02, 1.197e-01, -1.232e-01, -1.634e-01, 5.393e-02, 7.233e-02, 1.753e-01, 2.601e-02, 1.316e-01, 3.301e-01, -1.444e-01, -3.545e-01, -1.237e-02, -2.662e-02, -1.730e-02, 1.273e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(8.240e-02, -1.807e-02, 8.527e-02, -2.364e-01, 3.314e-02, 2.457e-01, 7.152e-02, -9.782e-02, 8.055e-02, 2.553e-01, 5.000e-02, -3.503e-02, 1.677e-02, -5.275e-02, 1.431e-01, -1.351e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.809e-02, -2.597e-02, -5.873e-02, -7.304e-03, 2.983e-02, 3.817e-02, -2.030e-02, 4.497e-02, 1.953e-02, 4.971e-03, -2.241e-02, -3.711e-02, -2.106e-02, -1.066e-02, -1.199e-02, 2.418e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(2.497e-02, -1.790e-02, -3.157e-02, -1.162e-02, -1.048e-02, 2.014e-02, 3.528e-02, 2.389e-02, 4.872e-02, -1.616e-02, 6.880e-02, -2.192e-02, -7.983e-02, 1.746e-02, -2.627e-02, 1.248e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-1.340e-02, -2.272e-02, 2.116e-02, 9.511e-03, 3.024e-02, 2.150e-02, 1.342e-01, 5.947e-02, 1.831e-02, 5.610e-02, 3.950e-02, 1.182e-01, 1.527e-03, -1.058e-01, 4.359e-02, 2.657e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-2.065e-02, 3.474e-02, 9.944e-02, 1.241e-02, 3.585e-02, -1.538e-01, 8.497e-02, -1.528e-01, 1.976e-01, 9.365e-02, 1.699e-01, 1.835e-02, -1.918e-02, 4.631e-03, -6.853e-03, 2.023e-02), r5);\n\tr0 = MulAdd(s1_0_2, M4(-6.190e-02, 2.797e-01, -1.411e-01, -8.060e-02, -5.450e-02, 1.141e-02, -5.519e-02, 1.343e-01, -8.958e-02, -6.965e-03, 6.931e-02, 1.906e-02, 3.722e-02, -6.392e-03, -7.593e-03, 1.747e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(5.033e-04, 9.408e-02, 1.199e-01, 5.619e-02, -1.644e-02, 2.176e-02, 5.777e-02, 1.077e-01, -7.186e-02, 1.448e-03, 4.785e-02, 2.299e-01, 4.787e-03, -2.604e-02, 6.452e-02, 1.726e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.826e-02, 3.484e-02, -4.040e-02, 2.039e-02, -1.210e-02, 5.667e-02, 3.435e-02, 2.843e-02, 2.313e-02, 9.506e-02, 5.639e-02, 2.730e-02, 2.708e-03, 5.870e-03, -8.888e-03, -1.949e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(3.953e-03, -3.502e-02, -2.589e-02, -5.072e-02, 3.547e-02, 4.242e-02, -2.341e-02, 3.932e-02, -9.433e-02, 2.680e-03, -3.908e-02, -4.309e-03, -6.992e-03, 1.049e-02, -8.941e-03, 2.650e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-1.472e-02, 4.519e-03, 4.163e-02, 2.028e-02, 1.184e-02, 6.772e-03, 9.068e-02, -1.395e-03, -1.921e-02, -2.408e-01, 1.843e-02, -1.293e-01, 9.868e-03, -6.763e-02, -2.347e-02, 2.587e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(-9.282e-03, 8.643e-02, 1.002e-01, -5.304e-02, -8.761e-03, -1.546e-01, 2.751e-02, -8.571e-02, -1.441e-02, -1.439e-01, 1.665e-01, 1.026e-01, -1.082e-02, 4.945e-02, 1.510e-02, 2.775e-02), r5);\n\tr0 = MulAdd(s1_1_0, M4(-1.726e-02, 1.713e-01, -1.900e-02, -6.150e-02, 1.320e-01, 4.628e-02, -7.173e-02, -1.874e-03, 2.526e-02, -1.795e-01, -2.646e-02, 2.153e-02, -7.661e-03, -7.932e-02, 2.602e-02, -4.318e-04), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.476e-02, -1.704e-01, 5.146e-02, -3.972e-01, 1.143e-01, 1.439e-01, 6.066e-02, 2.165e-01, 4.638e-02, 1.189e-01, -2.127e-02, 3.710e-01, 1.120e-01, 7.502e-02, 1.255e-01, 1.853e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(-5.894e-03, 1.122e-02, -6.259e-02, -3.868e-02, -1.045e-02, -1.019e-01, -1.015e-03, -3.051e-02, 1.796e-02, -1.205e-01, 4.710e-02, 5.486e-02, -1.574e-02, -5.090e-02, -2.423e-03, 2.180e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(1.247e-02, -1.705e-02, -1.262e-01, -2.194e-02, -4.554e-02, 6.909e-02, 1.343e-01, 6.670e-02, -4.534e-03, 3.499e-02, 1.693e-01, 3.411e-02, -4.570e-03, 1.706e-02, 5.112e-02, 4.431e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-9.189e-03, -1.052e-03, 2.160e-02, 6.783e-03, 1.183e-02, 8.825e-02, -2.781e-02, 6.153e-03, 4.061e-03, -5.169e-02, -3.587e-02, -5.530e-03, -2.007e-03, 1.234e-02, -4.999e-02, -4.305e-03), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.509e-02, 1.092e-01, 9.503e-02, 1.171e-01, -4.342e-03, 8.364e-02, -4.850e-02, 8.818e-02, -3.813e-02, -8.426e-02, -1.150e-01, -1.300e-01, -1.233e-02, 3.415e-02, 7.836e-02, -2.631e-02), r5);\n\tr0 = MulAdd(s1_1_1, M4(4.415e-02, 1.266e-01, -2.408e-01, -4.961e-01, -1.522e-01, -2.798e-02, -1.490e-01, -1.525e-01, -2.725e-01, 2.038e-01, -4.618e-02, -1.369e-01, 1.153e-01, 1.411e-01, -3.298e-03, 1.873e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.812e-01, 3.447e-01, 1.526e-01, -3.168e-01, 6.910e-02, -4.028e-03, 1.101e-01, -1.076e-01, 2.169e-02, -2.736e-01, 8.911e-02, -9.436e-02, 1.704e-01, -5.232e-02, -5.176e-01, -7.841e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(4.583e-02, -4.242e-02, -3.076e-02, -3.191e-02, -8.911e-03, 4.661e-02, -2.753e-02, -9.079e-02, 3.562e-02, 6.903e-02, -1.060e-01, -8.965e-02, 2.243e-02, 8.794e-02, 1.232e-01, 1.229e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(6.891e-02, 8.999e-02, 7.157e-02, 8.766e-02, -1.666e-01, 1.155e-01, -1.053e-02, 1.151e-01, -6.213e-02, 5.702e-03, 2.223e-01, -6.763e-03, 1.342e-01, -3.833e-01, 1.060e-02, 1.977e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(5.827e-03, -2.046e-01, -6.815e-02, -9.400e-02, -2.158e-02, -8.140e-02, -2.186e-01, -1.156e-02, 5.476e-02, 7.753e-02, -1.841e-01, 8.318e-03, -6.239e-02, 8.343e-03, -1.382e-01, -6.861e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-6.696e-02, 8.259e-03, -4.982e-02, -2.285e-02, 4.952e-02, 2.277e-01, 3.772e-01, 2.665e-01, 3.462e-02, 2.466e-01, 3.082e-01, 2.362e-01, 1.499e-02, -5.365e-02, -3.899e-02, -9.464e-02), r5);\n\tr0 = MulAdd(s1_1_2, M4(-2.290e-01, 1.059e-01, 1.497e-02, -1.031e-01, -1.579e-02, 2.470e-02, -3.568e-02, -2.905e-02, 4.131e-01, 4.055e-02, -4.636e-02, 2.824e-02, -1.693e-02, -1.817e-02, -2.168e-02, 3.567e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.356e-01, -1.782e-01, 1.407e-01, -8.075e-02, 1.705e-02, 2.826e-01, 7.886e-02, -1.325e-01, 2.871e-01, 4.393e-01, 7.198e-02, 1.544e-01, -5.359e-02, 1.217e-01, 1.577e-01, -9.586e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(-7.488e-03, -1.342e-01, -1.551e-01, -8.580e-02, 2.860e-03, 1.281e-01, -1.001e-02, 1.835e-02, 1.127e-01, 2.677e-01, 2.440e-01, 4.018e-02, 1.133e-03, -2.408e-04, 1.824e-02, 6.383e-03), r2);\n\tr3 = MulAdd(s1_1_2, M4(5.754e-02, 2.567e-03, 5.104e-02, 3.524e-04, -1.645e-02, 3.569e-02, 4.361e-02, 3.627e-02, -7.332e-02, 9.595e-02, -1.343e-01, 9.602e-02, -5.919e-02, 7.098e-02, -1.583e-02, 7.151e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(9.014e-02, -1.223e-01, -2.446e-01, 8.336e-02, 5.727e-02, -7.594e-02, -9.993e-02, 5.014e-03, 7.803e-02, -3.587e-02, -2.365e-01, 4.433e-02, -2.127e-03, -1.434e-02, -2.696e-02, 5.627e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(-6.504e-03, 1.715e-01, 5.993e-02, 1.539e-01, 7.131e-02, -1.495e-01, -1.188e-01, -6.568e-02, 1.792e-01, -1.548e-01, -3.246e-01, -2.086e-01, 7.529e-03, -1.199e-02, -7.162e-03, -5.585e-02), r5);\n\tr0 = MulAdd(s1_2_0, M4(-4.484e-02, 1.310e-01, -1.186e-02, -4.876e-02, 3.144e-02, 3.293e-02, -2.952e-02, 1.049e-01, 4.406e-02, 5.781e-02, 1.798e-02, -7.056e-02, 7.167e-02, -9.079e-03, 5.283e-03, -1.667e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.901e-02, -5.081e-02, 3.381e-02, 7.825e-02, -2.588e-02, -1.595e-01, 4.999e-02, 1.240e-02, 3.720e-02, -1.005e-01, -2.713e-03, 4.077e-02, 6.096e-02, 2.917e-02, 6.887e-02, 2.349e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-3.693e-04, 5.331e-02, -2.215e-02, 4.644e-02, 1.700e-03, -2.415e-02, -3.992e-02, -6.482e-03, 1.376e-03, -5.774e-02, 4.120e-02, -4.873e-02, -7.239e-03, -4.122e-02, 4.236e-03, -3.205e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.064e-02, -2.207e-03, -4.298e-02, -9.112e-03, 5.335e-02, -1.785e-02, 3.878e-02, -1.472e-02, 2.473e-02, 4.315e-02, -1.630e-02, 4.520e-02, 1.314e-03, 1.019e-01, -2.878e-03, 6.371e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-2.235e-02, 1.353e-02, 2.174e-02, 5.645e-03, -2.059e-02, -4.427e-03, -7.737e-02, -1.470e-03, -1.345e-02, 2.978e-02, 4.607e-03, -4.018e-03, -2.322e-04, -2.276e-02, 4.620e-02, -1.521e-03), r4);\n\tr5 = MulAdd(s1_2_0, M4(2.301e-02, 2.607e-02, 2.412e-02, 1.369e-02, 4.588e-02, 1.004e-01, 1.577e-01, 3.503e-02, 5.359e-02, 4.755e-02, 5.843e-02, 3.135e-02, 2.788e-02, 9.241e-03, -1.886e-02, 1.764e-02), r5);\n\tr0 = MulAdd(s1_2_1, M4(9.961e-02, 2.227e-01, 5.165e-02, -3.559e-01, 5.931e-02, -2.665e-02, -7.483e-02, -1.052e-01, 1.550e-02, 7.715e-02, 4.143e-02, -2.536e-02, 6.315e-02, 3.081e-02, 5.450e-02, 1.178e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.031e-01, 2.770e-02, 9.601e-02, -9.617e-01, -2.014e-01, 1.693e-01, 8.213e-02, 1.264e-01, -6.467e-02, 9.290e-02, 1.931e-02, 2.602e-01, -1.072e-01, -1.825e-02, 1.333e-01, -3.672e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.419e-02, -1.560e-01, 8.168e-02, 1.925e-03, 6.700e-03, 2.341e-02, -4.173e-02, -4.294e-02, 6.274e-02, -3.283e-02, -1.014e-02, 5.621e-02, 1.303e-02, -1.815e-02, 3.212e-03, -1.223e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(-6.572e-02, -2.825e-02, -2.129e-02, -3.943e-02, 1.280e-02, -2.622e-02, 4.391e-02, -3.651e-02, 1.488e-02, -2.708e-02, -9.693e-02, -3.123e-02, -4.313e-02, 1.048e-02, 2.498e-05, 2.387e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(2.628e-02, 4.960e-02, -5.082e-02, 7.946e-03, -3.057e-02, -8.056e-02, -2.559e-01, 1.455e-03, 5.503e-02, -2.091e-02, 3.799e-02, 1.382e-02, 6.616e-02, -5.580e-02, 7.062e-02, -7.625e-03), r4);\n\tr5 = MulAdd(s1_2_1, M4(1.601e-02, -1.199e-01, -1.242e-01, 1.349e-01, 4.684e-04, 1.559e-02, 8.265e-02, -3.719e-02, -3.051e-02, -5.108e-03, 1.192e-01, -8.482e-02, 8.486e-03, 1.409e-02, 2.547e-02, 6.331e-02), r5);\n\tr0 = MulAdd(s1_2_2, M4(-4.131e-01, 1.284e-01, 8.891e-02, -2.992e-01, -1.246e-01, 1.740e-01, -2.238e-02, -4.444e-02, 1.715e-01, 1.237e-01, -9.388e-03, -2.132e-02, -2.712e-02, 4.162e-02, -5.737e-03, 2.197e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(3.095e-04, 1.677e-02, 5.893e-02, -3.430e-01, -3.195e-01, 2.006e-01, 6.714e-02, -2.790e-01, 2.750e-02, 2.110e-01, 4.602e-02, -1.043e-01, -2.008e-01, 5.884e-02, 3.071e-02, 2.785e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.276e-02, -4.990e-02, 3.745e-02, -1.143e-02, 1.969e-02, 6.143e-02, 1.959e-02, 8.630e-02, 3.779e-02, 5.536e-02, 6.097e-02, 1.861e-02, -2.141e-02, 2.740e-02, -8.784e-03, -1.646e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-6.308e-02, 1.861e-02, 7.256e-02, 2.954e-02, -1.308e-02, -2.596e-02, 1.243e-03, -2.501e-02, -1.893e-02, -4.870e-03, -8.638e-03, -4.669e-03, 8.416e-03, -1.679e-02, -1.566e-02, 3.625e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(9.478e-02, 1.763e-02, 1.304e-01, -1.344e-02, 7.433e-03, -4.890e-02, -8.211e-02, -7.558e-03, 3.285e-02, -4.920e-02, 1.179e-01, -7.595e-03, 3.781e-03, -5.723e-02, 4.059e-02, -1.136e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-6.422e-02, 2.216e-02, 1.289e-01, -2.588e-01, 1.894e-02, -3.747e-02, -1.100e-03, 6.029e-03, -6.190e-02, 2.559e-02, 4.906e-02, 7.114e-02, 9.655e-03, 9.580e-04, 3.820e-02, 3.919e-02), r5);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.682e-02, 5.477e-02, -1.184e-01, 1.141e-01, 3.609e-02, -1.572e-02, 9.469e-02, 6.959e-02, 6.630e-02, 2.946e-02, -6.256e-02, -5.358e-02, 6.432e-02, 6.375e-02, 8.844e-02, 4.297e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(2.258e-02, 8.616e-02, 5.641e-03, -5.245e-01, 5.529e-02, -1.776e-02, -4.090e-02, 7.086e-02, 1.199e-01, 3.386e-03, 1.781e-02, -6.496e-01, 5.045e-03, 6.764e-02, -2.288e-02, 2.039e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-9.580e-03, 2.777e-02, 2.740e-02, 1.805e-02, -4.387e-03, 1.526e-02, -2.555e-02, 3.254e-02, -2.625e-02, -1.262e-01, 1.178e-01, 4.183e-02, -3.406e-02, -5.717e-02, -2.227e-02, 1.560e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(4.724e-03, 1.424e-02, -8.188e-02, 1.632e-02, 1.171e-02, 4.212e-02, 2.363e-02, 5.114e-02, 5.700e-02, 3.590e-02, -3.480e-02, 3.651e-02, 2.854e-02, 2.741e-02, 2.476e-02, 2.888e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-5.538e-03, 1.664e-02, -9.438e-02, 1.813e-02, -2.211e-02, -1.218e-02, 9.935e-03, 1.102e-03, -4.359e-02, -5.211e-02, -1.616e-01, -2.527e-02, -6.243e-03, -2.497e-02, 4.590e-02, 2.365e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-8.609e-02, -4.744e-02, -2.958e-02, 4.065e-02, -5.977e-02, 2.312e-02, 1.196e-02, 6.183e-02, -1.223e-01, 1.270e-02, 1.720e-02, -1.293e-01, -9.282e-02, 1.766e-02, 4.558e-02, 3.432e-02), r5);\n\tr0 = MulAdd(s0_0_1, M4(2.726e-02, -1.321e-03, -1.559e-01, -2.624e-02, 1.350e-01, -3.367e-02, 1.051e-01, 4.658e-02, -7.506e-02, 1.942e-01, -1.791e-02, 3.241e-02, 1.223e-01, -3.200e-02, 1.655e-01, -4.305e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(8.964e-02, -2.498e-01, 2.013e-02, -2.394e-01, 7.891e-02, -6.211e-02, -5.337e-02, -2.210e-02, -3.191e-02, -3.878e-02, 1.064e-02, -2.910e-02, 8.653e-02, -4.332e-02, -2.463e-02, -1.072e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(-1.394e-02, -2.460e-02, 5.318e-02, -1.282e-02, -2.667e-02, -2.393e-02, -4.273e-02, -3.085e-02, 1.813e-02, 5.237e-02, 7.097e-02, 9.509e-02, -3.274e-02, -1.222e-01, -1.220e-01, -5.376e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-3.779e-02, -2.107e-02, -2.363e-02, -2.092e-02, 2.110e-02, 4.023e-02, 5.374e-02, 3.449e-02, -3.739e-03, 1.824e-02, -9.407e-02, 2.706e-02, 6.583e-02, 7.109e-02, 1.188e-01, 6.716e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.078e-02, -5.062e-02, -8.552e-02, -1.436e-02, -5.765e-03, -5.884e-03, -1.203e-01, 2.985e-02, -2.590e-03, 2.991e-02, -5.193e-02, 3.432e-02, -1.970e-02, 4.428e-02, 3.837e-02, 3.214e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-1.120e-01, 5.135e-02, -4.118e-02, 6.570e-02, 1.023e-01, 1.036e-01, 4.079e-02, 1.577e-01, -1.216e-01, -1.743e-01, -7.857e-03, -6.464e-02, 1.517e-01, 1.958e-01, 1.116e-01, 3.786e-02), r5);\n\tr0 = MulAdd(s0_0_2, M4(-4.290e-02, -7.640e-02, -3.835e-02, -1.761e-01, 1.220e-02, -2.226e-01, -3.761e-02, 5.851e-02, 1.464e-02, 2.750e-02, -3.179e-03, 1.240e-02, 1.318e-01, 1.085e-02, 1.484e-01, 1.431e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(3.353e-02, 1.408e-02, 2.374e-02, -2.096e-01, 1.852e-02, 1.420e-01, -5.580e-02, -7.594e-02, 2.862e-02, 6.461e-03, 7.798e-04, -1.403e-01, -5.059e-02, 2.107e-01, -3.208e-02, 8.914e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(2.966e-02, 4.299e-02, 1.640e-02, -1.643e-02, -3.034e-02, -6.909e-02, -1.207e-02, -2.044e-02, -1.183e-02, -8.048e-03, 2.464e-02, -2.995e-03, 2.830e-03, 7.842e-02, 2.688e-02, -4.000e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(1.052e-02, 4.952e-03, 1.283e-02, -1.661e-03, 1.095e-02, 2.491e-02, 7.281e-03, 3.307e-02, -2.025e-02, 1.739e-02, -1.997e-02, 1.739e-02, 1.913e-02, 4.112e-02, 3.366e-02, 4.676e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(3.044e-02, -4.522e-02, -7.064e-02, 1.212e-02, 1.935e-02, -5.786e-02, -3.073e-02, -2.039e-02, -1.027e-02, 3.712e-03, -1.490e-02, -9.770e-03, 1.410e-02, -3.552e-02, 2.038e-01, 1.761e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(7.123e-03, -2.381e-02, -4.026e-03, 1.304e-02, 3.356e-02, 1.207e-01, -1.905e-02, 1.277e-01, -2.712e-02, 7.662e-03, -5.364e-02, -6.586e-02, -3.085e-02, -9.903e-02, -1.116e-01, -1.291e-01), r5);\n\tr0 = MulAdd(s0_1_0, M4(-3.612e-02, 2.933e-02, 4.166e-02, -7.279e-02, 2.720e-02, -1.977e-01, -9.876e-02, -5.141e-03, -9.093e-02, 3.429e-02, -2.136e-01, 1.700e-01, 4.512e-02, -1.802e-01, -5.173e-04, 2.731e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(4.520e-02, 1.133e-01, 3.601e-02, -5.452e-01, 7.447e-02, 1.813e-01, -2.320e-02, -6.919e-01, 2.534e-01, -1.446e-02, -1.608e-03, -7.017e-01, 3.080e-02, 5.266e-02, -1.449e-02, 2.288e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-2.521e-02, 4.696e-02, 2.388e-02, 1.202e-02, 2.781e-02, -7.500e-02, -3.001e-02, 4.018e-02, -1.242e-01, -1.199e-01, 2.672e-01, 3.484e-01, -2.247e-02, -1.037e-01, 1.438e-02, -8.825e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(-7.528e-03, 5.180e-02, -8.035e-02, 4.599e-02, 4.232e-02, 6.390e-02, 2.682e-02, 5.850e-02, 3.841e-02, 1.397e-01, -1.760e-01, 1.509e-01, 1.504e-02, 2.978e-02, -1.729e-02, 2.848e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-2.094e-02, -5.232e-02, -9.237e-03, 2.220e-02, 3.507e-03, -3.221e-02, -1.375e-02, -2.135e-02, 5.325e-02, 9.350e-02, -2.084e-01, 6.802e-02, 2.187e-02, -3.665e-02, 8.333e-03, -6.852e-03), r4);\n\tr5 = MulAdd(s0_1_0, M4(2.051e-02, 1.771e-02, 1.857e-02, 4.431e-02, 6.592e-02, 1.479e-03, -1.691e-01, -7.640e-02, 7.648e-03, -3.816e-02, -2.231e-01, -1.665e-01, -6.619e-02, 6.306e-02, 2.139e-03, -1.516e-02), r5);\n\tr0 = MulAdd(s0_1_1, M4(1.509e-01, 1.269e-02, -8.570e-02, -1.443e-02, 7.150e-02, -1.005e-01, -2.817e-01, 6.101e-02, -5.147e-02, 1.038e-01, -6.689e-03, 1.645e-01, -9.142e-02, 2.933e-02, 2.210e-03, 9.812e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.355e-01, -1.665e-01, 7.465e-02, -1.616e+00, -3.109e-02, 2.375e-02, -6.694e-02, -3.616e-02, -3.121e-02, 7.919e-02, -1.302e-02, -1.800e-01, 9.141e-02, -1.017e-01, -4.543e-02, 1.078e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.142e-02, 2.070e-02, 1.195e-01, 1.437e-01, 8.810e-02, -2.814e-02, -1.052e-01, -1.813e-01, -2.088e-03, 1.303e-01, 1.314e-01, 9.565e-02, -1.596e-02, -7.028e-02, -1.626e-01, -2.318e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(-1.233e-01, -2.190e-02, -1.167e-01, -1.397e-02, 4.496e-02, -6.506e-02, 2.946e-02, -5.748e-02, -1.119e-02, 8.121e-02, -9.572e-02, 8.034e-02, 3.986e-02, 1.518e-02, 1.653e-01, 1.367e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(2.133e-02, -8.227e-02, -2.256e-01, 7.340e-03, 2.987e-03, -8.324e-02, 1.072e-01, 3.637e-02, -1.472e-02, -7.572e-02, -9.371e-02, -1.780e-02, 1.272e-02, -1.861e-02, 9.346e-02, 1.783e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.451e-01, 5.311e-02, -1.876e-01, -1.110e-01, -1.573e-01, 4.785e-02, 1.262e-01, -1.694e-01, -1.647e-01, -1.275e-01, -1.431e-01, -8.962e-02, 7.812e-02, 3.116e-01, 1.909e-01, 7.060e-02), r5);\n\tr0 = MulAdd(s0_1_2, M4(-2.368e-02, -1.335e-02, -8.578e-03, -5.015e-02, 6.435e-02, 3.233e-03, -8.685e-02, 1.750e-01, -5.488e-02, 2.075e-02, 7.227e-03, 7.050e-03, 5.228e-02, -4.553e-01, -1.322e-01, 1.811e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(1.133e-01, -1.372e-01, 6.616e-02, -7.562e-02, -2.184e-01, 2.630e-01, -3.631e-02, 7.076e-02, 4.594e-02, -6.803e-02, 5.120e-03, -3.065e-01, -7.374e-02, 2.202e-01, -6.072e-02, 2.823e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-3.958e-02, -2.679e-02, 3.447e-02, 1.159e-01, 7.129e-02, 2.215e-02, 5.151e-02, -7.416e-02, -3.104e-02, -1.190e-03, -6.168e-02, 7.945e-02, -2.222e-02, 4.612e-03, 1.491e-02, -4.925e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-7.316e-02, -3.601e-02, -2.286e-02, -4.972e-02, -5.023e-02, 3.650e-02, 3.429e-02, 3.165e-02, -3.448e-02, -2.059e-02, -1.918e-02, -1.721e-02, 1.164e-01, 4.285e-02, -8.820e-02, 4.341e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(-1.481e-02, -1.205e-01, -2.475e-01, -3.557e-02, 3.489e-02, -9.455e-02, 3.971e-03, 3.855e-02, 1.694e-03, -5.103e-02, -5.791e-02, -2.540e-02, 3.413e-02, -3.708e-02, 8.512e-02, -1.983e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(1.934e-02, 1.245e-01, -8.616e-02, 5.689e-02, 2.015e-01, 1.055e-01, -9.322e-02, -1.436e-01, -4.952e-02, 4.953e-02, 2.110e-02, 1.823e-02, 7.053e-02, 9.788e-02, -1.181e-01, 1.023e-01), r5);\n\tr0 = MulAdd(s0_2_0, M4(-6.398e-03, -1.147e-01, 4.065e-03, -1.488e-01, 3.804e-02, -1.141e-01, 1.652e-02, 1.090e-01, -2.183e-01, 5.293e-02, -3.933e-02, 9.349e-02, 7.655e-02, -2.110e-02, 2.708e-02, 6.570e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(8.327e-03, 1.318e-01, 3.514e-02, 2.888e-01, 2.797e-02, 1.241e-01, -4.031e-02, 3.104e-02, 1.100e-01, -2.701e-01, 6.686e-03, -6.377e-01, 1.326e-02, -4.744e-02, -1.889e-02, 1.768e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.472e-03, 1.188e-02, -4.678e-03, 3.750e-03, 1.494e-02, -2.095e-02, 6.169e-03, -1.326e-02, -5.407e-02, -7.447e-02, 1.883e-01, 8.562e-02, -6.413e-03, -5.631e-02, 2.625e-02, 4.576e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(1.761e-03, 2.039e-02, -3.850e-02, 1.058e-02, -9.232e-03, -1.045e-03, 6.764e-02, 5.733e-03, -5.693e-04, 8.228e-02, -8.074e-02, 8.894e-02, 9.228e-03, 5.915e-03, 2.272e-02, 3.361e-03), r3);\n\tr4 = MulAdd(s0_2_0, M4(1.184e-02, -8.629e-02, 4.529e-02, -7.833e-03, 1.417e-02, -9.213e-03, 3.081e-02, -4.670e-03, -2.764e-02, -1.474e-02, -4.080e-02, -5.648e-02, 7.608e-03, 2.533e-02, 5.798e-02, -2.884e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(-2.470e-02, 1.238e-02, -3.825e-02, -2.778e-02, 8.817e-02, -2.306e-02, -6.867e-02, 1.040e-02, -2.564e-02, -9.702e-02, -9.636e-02, -1.114e-01, 1.173e-02, -1.806e-02, -1.491e-03, -5.721e-02), r5);\n\tr0 = MulAdd(s0_2_1, M4(-8.893e-02, 3.657e-02, -1.060e-02, 1.820e-02, -6.024e-02, -2.385e-01, 5.720e-03, 3.100e-02, -1.123e-01, -1.824e-02, -7.157e-02, -3.995e-02, -1.189e-02, -3.166e-02, -1.054e-02, 1.577e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(7.936e-03, -9.462e-02, 5.305e-02, 9.738e-03, 1.237e-01, -1.590e-02, -7.594e-02, -7.135e-02, -1.146e-01, 6.946e-02, -6.212e-03, -3.305e-01, 6.793e-02, 1.840e-01, -4.527e-02, 1.403e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.404e-02, 1.368e-01, 3.660e-02, -5.742e-02, -1.107e-01, -2.393e-02, 1.537e-01, -3.444e-01, -1.843e-02, 1.106e-01, 7.589e-02, 1.544e-01, -2.837e-03, -9.859e-02, -5.585e-04, 7.530e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(3.495e-03, 4.722e-02, -2.617e-02, 4.102e-02, -4.422e-02, 1.899e-02, -6.611e-02, 1.852e-02, -6.870e-02, 1.970e-02, -2.457e-02, 2.563e-02, -3.230e-02, 9.004e-03, 7.147e-03, 8.233e-03), r3);\n\tr4 = MulAdd(s0_2_1, M4(2.479e-02, -2.036e-02, -4.370e-02, 1.290e-02, 2.104e-02, -3.116e-02, -1.362e-01, -3.260e-02, 1.692e-02, -3.256e-02, 4.641e-03, -9.825e-03, 1.403e-02, 1.636e-02, 4.310e-03, 1.294e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-4.286e-02, -3.065e-02, 3.883e-02, 8.276e-02, 6.306e-03, -6.964e-03, -1.550e-01, -1.151e-01, -1.378e-01, -6.459e-02, -4.084e-02, -9.497e-04, 2.204e-02, 4.459e-02, 1.664e-02, 1.964e-02), r5);\n\tr0 = MulAdd(s0_2_2, M4(4.218e-02, 9.765e-03, 1.696e-02, -1.070e-01, 2.613e-02, 7.470e-02, 2.389e-02, -6.040e-03, -2.200e-02, -6.213e-02, -1.050e-02, 3.500e-02, -3.580e-02, 6.102e-02, 8.707e-04, 9.115e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(2.312e-01, -4.096e-01, 5.922e-02, -4.281e-01, 2.231e-01, 3.961e-02, -4.725e-02, -8.041e-02, -9.337e-03, 1.179e-01, -9.649e-03, -6.848e-01, -6.511e-02, 3.387e-02, -3.175e-02, -6.083e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-3.009e-02, -2.381e-02, -6.001e-03, 7.504e-02, -5.552e-03, -2.845e-02, -1.349e-02, 5.103e-02, -5.999e-03, -2.707e-03, 5.587e-02, -1.145e-02, 8.081e-03, 8.276e-02, -6.011e-03, 8.704e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(1.468e-02, -6.616e-02, 1.192e-02, -5.946e-02, 2.535e-02, -2.516e-03, 4.353e-02, 3.282e-03, -2.377e-02, 1.574e-02, -1.455e-02, 1.885e-02, -1.352e-02, -1.667e-02, 1.862e-02, -1.627e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(-2.556e-02, -7.466e-02, -1.792e-01, 6.706e-03, -2.056e-02, -5.483e-02, -4.355e-02, -2.990e-02, -3.998e-04, 3.813e-02, -6.496e-02, -1.844e-03, 5.145e-03, -2.853e-03, 1.338e-01, 1.451e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(2.815e-02, -2.761e-02, -1.631e-01, -4.261e-02, 1.758e-02, -5.438e-02, -1.150e-01, -1.945e-01, -7.907e-03, -8.111e-03, -8.068e-03, -2.230e-02, -5.456e-02, 8.246e-03, 7.000e-02, 8.648e-02), r5);\n\tr0 = MulAdd(s1_0_0, M4(1.032e-01, 1.804e-02, 3.922e-02, -2.717e-03, 2.736e-02, -3.779e-02, -1.789e-02, -4.258e-02, -6.813e-02, 2.506e-02, 8.437e-04, -9.016e-03, 3.259e-02, 3.528e-02, 1.029e-02, 1.693e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.778e-02, -1.008e-01, 2.218e-03, -9.415e-01, -2.825e-02, 1.014e-01, -1.750e-02, -2.029e-02, -3.625e-02, -4.652e-02, -2.040e-02, -6.451e-01, 2.293e-02, 6.513e-02, 2.989e-02, 2.489e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-3.457e-03, 2.181e-02, -6.246e-02, -2.332e-02, 6.065e-03, 1.241e-02, 4.667e-03, 1.106e-02, 4.808e-03, 2.686e-02, -2.747e-02, -2.688e-02, 5.757e-03, 1.155e-03, -2.026e-02, 3.106e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-7.055e-02, 3.275e-02, -1.185e-01, 2.564e-02, 4.724e-03, -3.655e-03, -1.547e-02, -5.596e-03, 2.994e-02, 3.114e-02, -6.926e-02, 3.106e-02, 3.896e-02, 3.258e-02, 2.610e-02, 3.463e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-1.566e-03, 1.140e-01, -3.718e-02, 2.862e-02, -1.299e-02, 1.081e-02, 7.504e-03, -3.362e-03, -9.609e-03, 1.195e-02, -2.632e-02, 1.565e-02, -7.031e-03, 3.843e-02, -3.021e-03, 1.325e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-3.524e-02, -7.392e-02, 3.963e-03, -7.675e-02, -3.596e-02, -2.117e-02, -2.861e-02, -2.472e-02, -1.653e-02, 1.998e-02, 6.955e-02, -3.314e-02, 2.413e-02, -1.689e-02, 6.274e-02, 1.511e-02), r5);\n\tr0 = MulAdd(s1_0_1, M4(-4.432e-02, -2.316e-01, 1.293e-01, -5.035e-02, 4.889e-02, 4.556e-02, 3.017e-03, -5.550e-02, 4.214e-03, -1.626e-01, 9.881e-02, 5.314e-02, 9.587e-02, -5.253e-02, 2.983e-02, 2.620e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.091e-01, 2.361e-01, -2.195e-02, 1.132e-01, 6.013e-02, -3.917e-02, -9.810e-03, -2.979e-02, 3.331e-02, -1.024e-02, -4.919e-02, 3.724e-01, 4.038e-02, 8.409e-03, 9.068e-03, 5.071e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-8.171e-02, -1.302e-01, -7.097e-02, -6.915e-02, -5.668e-03, -4.351e-02, 2.551e-03, 6.923e-02, 3.670e-02, 1.403e-02, 1.108e-03, -1.030e-02, 3.760e-03, 1.914e-02, -4.210e-04, -4.183e-03), r2);\n\tr3 = MulAdd(s1_0_1, M4(-2.900e-01, 1.392e-01, 1.608e-01, 1.402e-01, -5.825e-03, 3.578e-02, -2.635e-02, 4.114e-02, -8.903e-02, 3.454e-02, -1.237e-02, 3.529e-02, -4.732e-03, 2.899e-02, -4.703e-03, 2.760e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(4.996e-02, -9.479e-02, 6.372e-02, 2.727e-01, -1.642e-02, -2.296e-02, 5.874e-02, 3.110e-02, 5.925e-03, -4.873e-02, 5.733e-02, 4.548e-02, 3.244e-04, 9.036e-03, 3.662e-02, 1.269e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(1.072e-02, 3.384e-02, 4.100e-02, -4.793e-03, -2.123e-02, -9.463e-02, -7.713e-04, -1.209e-02, -1.684e-01, -1.266e-01, -6.641e-02, -5.554e-02, 3.790e-02, -1.542e-02, -8.593e-03, 3.697e-02), r5);\n\tr0 = MulAdd(s1_0_2, M4(5.714e-02, -6.704e-02, 4.893e-02, 1.117e-01, -6.543e-03, 2.220e-03, 3.103e-02, -6.059e-02, 4.260e-02, 1.404e-02, 2.396e-02, 4.319e-03, 2.658e-02, -5.723e-02, 4.388e-02, 2.398e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.064e-01, 5.906e-02, 9.778e-03, 1.767e-01, 3.137e-02, -4.965e-02, 1.890e-02, -8.426e-02, 1.960e-02, 1.003e-01, 1.034e-03, -2.421e-02, 1.138e-02, 1.140e-02, 8.873e-03, 4.429e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(2.920e-03, 9.847e-02, -2.829e-02, -5.917e-03, 2.434e-03, -1.520e-02, 1.029e-02, 4.655e-02, 1.710e-02, 1.580e-02, -1.807e-02, -2.253e-02, -9.740e-03, 8.327e-03, -9.938e-03, -9.109e-03), r2);\n\tr3 = MulAdd(s1_0_2, M4(-6.075e-02, 1.243e-01, -6.817e-02, 1.145e-01, -1.567e-02, -9.333e-04, 1.935e-04, 2.871e-03, 1.661e-02, 4.059e-02, 4.255e-02, 4.261e-02, 3.160e-02, 2.594e-02, 1.271e-02, 2.414e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-3.860e-02, -6.734e-02, -5.135e-03, 1.209e-01, -8.017e-03, -3.494e-02, 3.057e-02, -1.108e-03, -7.149e-03, -8.423e-02, 6.032e-02, -1.484e-03, 1.328e-02, 4.346e-02, 2.078e-02, 2.343e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(3.061e-02, -1.847e-02, -2.846e-02, -3.146e-02, 1.524e-02, 3.243e-02, -1.278e-03, -1.945e-03, -1.097e-02, -1.871e-02, -6.522e-03, -6.996e-03, 1.038e-02, -2.918e-03, -4.135e-02, -2.133e-02), r5);\n\tr0 = MulAdd(s1_1_0, M4(5.337e-03, -1.560e-01, -6.271e-02, 9.698e-02, -1.217e-01, -6.119e-02, -3.205e-02, 1.874e-01, -1.176e-02, 1.877e-03, -6.243e-02, 1.261e-01, 1.753e-01, 5.114e-02, 1.035e-01, -6.456e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.731e-02, 1.794e-02, -5.510e-02, -2.428e-01, 1.068e-01, 6.687e-02, -2.726e-02, -1.597e-01, -4.922e-03, -3.860e-01, -2.407e-02, -2.914e-01, 1.060e-01, 1.004e-01, 3.982e-02, -6.516e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(2.039e-02, 9.989e-02, 1.118e-02, 1.195e-02, -4.081e-03, 9.649e-03, 8.995e-02, 1.118e-01, -1.423e-02, -1.368e-02, -2.396e-02, -1.663e-02, -1.279e-02, -4.285e-02, -6.942e-02, -4.763e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(2.533e-02, -3.503e-02, 2.281e-01, -3.120e-02, -5.234e-02, 1.044e-01, -2.440e-01, 1.098e-01, 5.401e-02, 1.640e-02, -3.067e-02, 1.764e-02, 7.543e-02, 4.676e-02, -7.936e-02, 4.212e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(2.092e-02, -4.964e-02, 5.025e-03, -3.472e-02, 1.139e-03, -2.161e-02, -1.681e-02, -1.540e-02, 1.823e-02, -2.981e-02, 8.759e-02, 3.892e-02, -4.350e-03, 6.693e-02, 8.636e-02, 7.472e-03), r4);\n\tr5 = MulAdd(s1_1_0, M4(-2.580e-01, -1.748e-02, 1.338e-01, -6.932e-02, -5.925e-02, 3.219e-02, -7.188e-02, 2.333e-02, -1.499e-01, 2.818e-03, 7.841e-02, -9.086e-03, 4.189e-02, 6.568e-02, 1.121e-01, 1.371e-01), r5);\n\tr0 = MulAdd(s1_1_1, M4(-2.801e-01, -4.052e-02, -2.154e-01, 1.144e-01, -1.658e-01, -1.063e-01, -3.132e-01, -1.835e-01, 9.481e-03, -6.044e-02, -5.540e-02, 8.924e-02, 2.436e-01, 1.041e-02, 2.087e-01, 4.398e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(2.348e-01, -2.560e-01, -1.331e-03, -2.874e-01, 6.082e-02, -4.090e-01, -2.842e-02, -5.383e-01, 7.724e-02, 2.953e-01, -1.719e-02, -1.447e-01, 7.606e-02, 1.126e-01, 1.460e-02, 1.019e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-1.752e-02, -7.337e-02, 1.781e-02, 3.002e-01, -4.863e-02, -2.666e-01, 2.213e-01, -5.006e-02, 6.279e-03, 3.169e-02, 2.177e-01, -1.425e-02, 3.182e-02, 7.060e-02, -9.206e-02, -6.480e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(1.470e-01, 2.288e-01, -1.339e-01, 1.993e-01, -2.992e-02, -1.868e-03, 3.172e-02, -1.409e-03, 3.223e-02, -7.786e-02, -1.140e-01, -7.584e-02, 1.567e-01, 8.825e-02, 7.317e-02, 8.287e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(-2.619e-01, 1.482e-01, -4.162e-01, -9.129e-02, 3.007e-03, -1.167e-02, -1.518e-01, 6.180e-02, 4.004e-02, 1.395e-02, -1.767e-01, -5.408e-02, -2.137e-02, 1.411e-01, 1.082e-01, 8.277e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(3.474e-01, 1.463e-01, -1.488e-01, 5.239e-02, 5.167e-02, -1.575e-01, -1.378e-01, -2.652e-01, -2.965e-01, -6.448e-02, -2.018e-01, -1.389e-01, -3.243e-02, -2.209e-01, -3.393e-02, -4.042e-03), r5);\n\tr0 = MulAdd(s1_1_2, M4(-2.344e-01, 1.781e-01, -2.764e-02, -2.187e-01, -2.960e-02, -3.839e-02, -5.174e-02, -1.063e-01, -7.603e-03, -5.506e-02, -2.163e-02, -4.757e-03, 1.255e-01, -8.103e-02, -3.562e-03, 8.573e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-3.513e-01, -4.161e-02, 6.871e-03, -1.689e-01, 6.261e-02, 3.017e-02, -1.035e-02, 3.506e-02, 1.227e-01, -1.460e-01, 3.111e-02, -1.930e-01, 1.022e-01, -3.319e-03, -1.526e-02, 6.476e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-1.958e-02, 4.494e-02, 6.600e-02, 3.917e-02, 6.413e-02, 1.421e-01, 9.717e-02, 9.558e-02, -6.475e-02, 3.817e-02, 3.454e-02, 2.104e-01, -5.627e-03, 3.756e-03, -2.983e-02, 7.734e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-8.092e-02, 1.367e-02, -4.667e-03, 2.683e-02, 1.605e-02, -3.041e-03, -9.133e-03, -1.328e-03, 1.145e-02, -4.846e-02, 5.472e-03, -5.415e-02, 5.917e-02, 7.007e-02, -3.501e-02, 7.343e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(1.873e-01, 9.437e-03, -6.580e-02, -1.181e-02, 2.847e-02, -1.902e-02, -7.412e-02, 1.228e-01, 3.455e-02, 3.776e-02, -4.992e-02, -4.138e-02, 1.975e-02, 1.923e-02, 1.323e-01, 4.361e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(-1.433e-01, -1.514e-01, -1.770e-01, -5.606e-02, 6.672e-02, -1.240e-01, -5.437e-02, 6.163e-02, -1.790e-02, -1.806e-01, -3.716e-02, -5.451e-02, -1.154e-02, -1.638e-01, 1.258e-02, -5.391e-02), r5);\n\tr0 = MulAdd(s1_2_0, M4(2.993e-02, 6.986e-03, -4.131e-02, -1.226e-01, -1.469e-02, -5.373e-02, 1.034e-01, -5.437e-02, -4.980e-02, 2.248e-02, 1.255e-02, 2.046e-02, -9.562e-02, -1.302e-01, 1.956e-03, 7.351e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-6.787e-02, -5.998e-02, -3.337e-02, -7.393e-02, -2.506e-02, -1.648e-01, -1.536e-02, -2.637e-01, 4.319e-02, -1.382e-01, 1.741e-03, -3.136e-01, 2.197e-02, 7.183e-02, 3.903e-03, 1.395e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(6.278e-03, -1.088e-01, -2.424e-02, -2.269e-02, -6.865e-03, -6.046e-05, 7.094e-02, 8.887e-03, 9.169e-03, 8.591e-02, -1.603e-02, 5.061e-02, 8.566e-03, -4.571e-02, -4.934e-02, -6.878e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(2.968e-02, -4.589e-02, -5.460e-02, -4.651e-02, 3.069e-02, 1.554e-03, -3.076e-01, 4.936e-03, -2.808e-02, 4.666e-02, -2.527e-02, 4.744e-02, -3.671e-02, 5.939e-02, 9.525e-02, 5.554e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(1.492e-02, 7.382e-04, -7.303e-02, 1.716e-02, 5.335e-02, -5.337e-03, -9.926e-02, -3.552e-02, 9.434e-03, 1.877e-02, -1.032e-02, -4.140e-03, -1.330e-02, -9.041e-03, 1.236e-01, -3.480e-03), r4);\n\tr5 = MulAdd(s1_2_0, M4(-9.566e-05, -3.204e-02, -1.903e-02, -2.550e-02, 1.398e-02, -2.313e-02, 1.257e-01, -1.682e-03, -1.693e-02, -8.939e-02, 5.285e-02, -5.610e-02, 1.147e-01, 1.375e-01, -1.515e-02, 2.595e-02), r5);\n\tr0 = MulAdd(s1_2_1, M4(-1.058e-02, -5.674e-03, 1.197e-01, -1.665e-01, -3.921e-01, 8.335e-02, 1.812e-01, -5.590e-02, 3.792e-03, -4.523e-02, 1.213e-02, -1.140e-02, -1.572e-01, -1.723e-01, -1.849e-01, 8.231e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(-7.374e-02, 3.134e-02, -5.716e-03, 1.941e-02, 9.714e-02, -3.771e-01, -6.743e-02, -1.342e-01, 2.455e-01, 5.531e-02, 1.022e-02, -6.210e-02, -1.519e-01, 1.902e-01, -1.813e-02, 1.421e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(7.641e-02, 1.264e-01, -1.434e-01, 8.380e-02, -4.806e-02, -3.104e-01, 4.698e-01, 1.537e-01, 1.557e-02, -8.586e-02, -2.926e-02, 1.696e-01, 4.138e-02, 3.817e-02, 6.794e-02, -2.214e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(-6.450e-02, -6.452e-02, 5.360e-02, -7.105e-02, -6.420e-02, -1.222e-01, 9.998e-02, -1.080e-01, 3.360e-02, -5.215e-02, -6.629e-02, -4.672e-02, 2.120e-02, 9.694e-02, -5.428e-02, 9.653e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(3.726e-02, 1.403e-01, 1.988e-01, 5.410e-02, -1.283e-01, -2.401e-01, -1.396e-01, 4.536e-02, -6.958e-02, -1.848e-02, 8.107e-02, -2.220e-03, 1.179e-01, 1.959e-02, 4.517e-02, -2.263e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-7.122e-02, -9.321e-02, -1.305e-01, -1.111e-01, -7.452e-02, -6.039e-01, -4.131e-01, -2.648e-01, -7.112e-02, -9.789e-02, -1.438e-01, -7.700e-02, -1.730e-02, 2.508e-01, 2.569e-01, 1.626e-01), r5);\n\tr0 = MulAdd(s1_2_2, M4(3.186e-02, -1.193e-01, -7.769e-02, 3.245e-02, 9.702e-02, -1.246e-01, -1.719e-02, 1.170e-01, -1.459e-02, -2.646e-02, -1.352e-02, 4.027e-02, -7.144e-02, -4.024e-02, -5.907e-02, -2.017e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.479e-01, -1.220e-02, 7.835e-03, 1.615e-01, 7.645e-02, 2.788e-02, -7.601e-02, 9.697e-02, 1.347e-01, -5.510e-02, 1.145e-02, -1.144e-01, -1.216e-01, 6.075e-02, -2.243e-02, 1.329e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-2.029e-02, 2.125e-02, 4.889e-02, -5.230e-02, 7.470e-02, 1.148e-02, 2.088e-01, -1.120e-01, 1.379e-02, 8.557e-03, -5.211e-02, 9.220e-02, 2.376e-02, 7.394e-02, 2.641e-02, 9.252e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(2.684e-02, 4.325e-02, -3.731e-02, 3.737e-02, 1.841e-03, 6.043e-02, 8.789e-03, 6.644e-02, 4.838e-03, -1.561e-02, -1.171e-02, -9.997e-03, -8.372e-03, 1.511e-02, -1.827e-02, 1.540e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(3.297e-02, 3.838e-03, -7.365e-02, 8.446e-03, 5.597e-02, -6.355e-02, 1.625e-02, -2.655e-02, -4.700e-02, -2.330e-02, -1.158e-02, 1.167e-02, 3.335e-02, -8.506e-03, -1.902e-03, 1.589e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(3.645e-02, -1.066e-01, -4.590e-02, -1.425e-03, -2.330e-03, -8.828e-02, -2.346e-01, -5.656e-02, -1.532e-02, -4.091e-02, -1.569e-02, -4.140e-02, -3.818e-02, 6.364e-02, -6.476e-02, 1.255e-01), r5);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.357e-02, -7.517e-02, -7.597e-03, -2.890e-02, 3.699e-02, -2.640e-02, -5.229e-03, -1.270e-02, -9.177e-03, -7.968e-02, 3.759e-03, 5.331e-02, 6.278e-02, -9.250e-03, 1.393e-01, 1.909e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(5.653e-02, 5.731e-02, -9.352e-03, -1.334e-01, 4.945e-02, 5.934e-02, -9.754e-02, 1.331e-01, -1.544e-03, 1.806e-01, -1.315e-02, -1.124e-01, -6.618e-02, 7.987e-02, -3.456e-02, -6.061e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-7.371e-03, 1.767e-03, 9.024e-03, -3.021e-03, -1.273e-02, -2.022e-02, -5.760e-03, 8.156e-03, -9.812e-03, -2.639e-03, 9.645e-03, 4.193e-03, -2.250e-02, -2.883e-02, -6.516e-02, -2.247e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(1.836e-02, 2.337e-02, 2.184e-02, 3.617e-02, 1.066e-03, 7.251e-02, 6.834e-03, 3.333e-02, 1.860e-02, 5.255e-03, 9.107e-02, 1.315e-02, 7.729e-02, 2.697e-02, 6.194e-02, 3.443e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-2.008e-02, -2.525e-02, -9.935e-02, -1.776e-02, -1.997e-02, 9.247e-03, 2.099e-02, -4.725e-03, -6.768e-03, 2.751e-02, 2.718e-02, 1.956e-02, 6.060e-03, -3.070e-02, 1.077e-01, -1.571e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-1.220e-01, 4.707e-04, -4.296e-02, 4.501e-02, 3.746e-03, -1.037e-02, 1.210e-02, 1.183e-02, -2.396e-02, -1.835e-02, 2.478e-03, 1.008e-02, -1.794e-01, 1.146e-01, 4.346e-02, 1.084e-01), r5);\n\tr0 = MulAdd(s0_0_1, M4(5.386e-02, -2.870e-01, 1.248e-01, 1.200e-01, 8.441e-02, 5.584e-02, -1.571e-02, 2.338e-02, 2.711e-02, -1.549e-01, 3.569e-03, -8.138e-02, 3.475e-02, 2.784e-02, 1.118e-01, 2.199e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-3.137e-03, -2.226e-02, -1.907e-02, 2.164e-01, 4.153e-02, -2.757e-02, -1.136e-01, -7.273e-02, -4.381e-03, -1.606e-01, 2.630e-02, -2.014e-01, -1.574e-01, 8.784e-02, -9.429e-03, 2.395e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(2.286e-02, -2.379e-02, 8.370e-03, 2.177e-02, 2.667e-02, 2.972e-02, -2.593e-02, 4.640e-02, -1.735e-03, 5.551e-02, 6.981e-02, 7.477e-02, -2.159e-02, 6.813e-02, -1.012e-01, -6.576e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.281e-01, 7.352e-02, 1.082e-02, 6.763e-02, 3.771e-02, 5.798e-02, 3.824e-03, 7.693e-02, -2.917e-01, 3.259e-02, -3.387e-03, 3.232e-02, -1.412e-01, 8.704e-03, -1.386e-02, 5.837e-03), r3);\n\tr4 = MulAdd(s0_0_1, M4(2.582e-02, 8.137e-02, -1.320e-02, 4.637e-02, -3.619e-03, -2.315e-02, 7.869e-02, -2.815e-02, -9.259e-04, -7.652e-02, -1.776e-02, 3.020e-02, 4.663e-02, 1.710e-02, 1.829e-01, 6.151e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(1.639e-01, -2.482e-01, -1.225e-02, -4.654e-02, 1.452e-02, -5.869e-02, -1.351e-03, 5.083e-03, 7.838e-03, 6.051e-02, -5.554e-02, 8.706e-02, 1.342e-01, 4.006e-02, -4.093e-02, 7.295e-02), r5);\n\tr0 = MulAdd(s0_0_2, M4(3.606e-02, 6.799e-02, -1.317e-02, 4.751e-02, 9.156e-03, -1.041e-02, 4.358e-03, 8.560e-03, -3.699e-02, 2.257e-03, -1.452e-02, -2.254e-02, 8.224e-02, 1.058e-02, 5.360e-02, -1.531e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-2.768e-02, -9.162e-02, -3.035e-02, -1.671e-01, -1.698e-02, 2.206e-03, -1.435e-02, -1.431e-02, -2.347e-02, -6.923e-02, 1.519e-02, -1.255e-02, 3.927e-02, -3.383e-03, 1.448e-02, -1.843e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.641e-02, -4.588e-03, 4.753e-02, 2.330e-02, 9.162e-04, 2.916e-02, -1.920e-02, 1.884e-02, 2.493e-02, -6.838e-02, -2.034e-02, 3.591e-02, -1.726e-02, -8.012e-03, 9.845e-02, -1.659e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(6.971e-02, 2.764e-02, -1.483e-02, 3.550e-02, 4.816e-03, 3.224e-02, -1.400e-02, 1.658e-02, 6.248e-02, -7.505e-03, 2.254e-02, -8.509e-03, -1.239e-02, -9.197e-03, -3.949e-02, -7.914e-03), r3);\n\tr4 = MulAdd(s0_0_2, M4(1.813e-02, 8.912e-02, 8.386e-03, 7.299e-02, -1.141e-03, -2.222e-02, 1.758e-02, -2.421e-04, 8.397e-03, 4.096e-02, 8.024e-02, 8.336e-03, 1.237e-02, 8.575e-03, -3.089e-02, -6.877e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(-5.359e-02, -1.171e-01, -9.946e-02, -9.820e-02, -3.553e-02, -8.209e-03, -1.245e-02, -3.631e-03, 6.753e-03, 1.716e-02, 8.759e-03, 4.050e-03, 3.436e-02, -3.572e-02, 4.773e-02, -1.271e-01), r5);\n\tr0 = MulAdd(s0_1_0, M4(-2.148e-02, 7.202e-02, -1.485e-02, -1.970e-01, -4.714e-02, 7.046e-02, 4.767e-02, 5.184e-02, 1.362e-01, -3.608e-01, -6.373e-02, -9.018e-02, -2.745e-03, -5.871e-02, -6.235e-02, -1.910e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(4.599e-02, -2.035e-01, -3.240e-03, -2.760e-01, 8.223e-02, 1.085e-01, -1.053e-01, 2.765e-01, 2.699e-02, 2.445e-01, -3.085e-02, 5.186e-02, 1.921e-02, 3.662e-01, 1.621e-02, -7.387e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(7.375e-03, -9.122e-02, 4.504e-02, -1.175e-01, -1.846e-02, 1.639e-02, 1.068e-02, 4.895e-02, 1.221e-02, -4.623e-02, 8.079e-02, -3.209e-03, 3.661e-03, 1.850e-03, -2.654e-02, 3.213e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-2.978e-02, 2.310e-02, -1.109e-01, 2.082e-02, -4.475e-02, 1.199e-01, -1.441e-02, 1.076e-01, 7.008e-02, 9.219e-02, 1.373e-01, 9.402e-02, -4.531e-02, 4.774e-02, -6.854e-02, 5.063e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-5.180e-03, 3.232e-02, -7.369e-04, 2.292e-02, -4.611e-03, -7.658e-03, -2.450e-02, 1.108e-02, 2.139e-02, -1.010e-01, -2.967e-03, 4.063e-03, 1.233e-02, 1.668e-03, -2.935e-02, -2.438e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-2.167e-02, 5.110e-02, 2.453e-02, -1.471e-02, 2.242e-02, 4.273e-02, 7.368e-02, 1.089e-02, -5.306e-01, 1.435e-03, -1.202e-01, -2.851e-02, -4.452e-02, -4.049e-02, -4.376e-02, -6.071e-02), r5);\n\tr0 = MulAdd(s0_1_1, M4(-2.382e-01, -1.603e-01, -8.832e-02, 1.869e-02, 5.074e-02, 7.339e-02, 2.433e-02, -5.246e-02, 1.012e-01, 1.359e-01, -4.118e-01, 7.071e-02, 3.383e-01, 2.829e-01, 3.453e-01, 2.025e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-9.362e-02, 3.467e-01, -1.166e-02, 1.440e-01, 2.027e-01, -1.793e-01, 5.274e-01, -3.392e-02, 4.654e-02, -3.915e-01, 3.597e-03, 3.327e-01, -1.090e-01, -3.867e-01, 2.255e-02, -7.852e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.568e-01, 1.204e-01, -1.425e-01, -7.141e-02, 4.387e-03, 4.579e-02, 1.875e-01, -4.563e-02, 2.666e-02, 7.852e-02, 2.920e-01, 3.860e-01, 4.970e-02, 1.815e-02, 7.935e-02, 8.285e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.884e-01, 9.157e-02, 6.384e-03, 8.240e-02, 5.094e-02, 1.879e-01, 5.149e-02, -4.307e-01, 2.126e-02, -3.373e-02, -6.171e-01, -3.708e-02, -1.185e-01, -2.025e-01, -4.495e-02, -2.029e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(2.350e-01, 2.808e-02, 1.763e-01, 7.999e-02, 9.831e-02, -8.840e-02, -1.391e-01, -3.237e-02, -3.684e-02, -2.692e-01, -4.074e-01, -1.296e-02, -2.384e-02, -7.218e-02, 1.747e-01, 3.930e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(2.015e-01, -2.426e-01, 3.025e-02, 1.862e-01, -5.222e-04, 4.275e-02, -2.419e-02, -9.055e-02, 1.304e-01, 3.584e-01, -3.330e-01, -2.173e-01, -1.314e-01, 4.680e-02, -3.556e-01, -3.244e-01), r5);\n\tr0 = MulAdd(s0_1_2, M4(-1.675e-01, -3.702e-03, -7.347e-03, -8.434e-02, -6.429e-03, -6.108e-02, -1.024e-02, 5.727e-02, -1.219e-01, -5.486e-02, 4.700e-02, -1.191e-01, 1.051e-01, 2.931e-03, 7.664e-02, 4.206e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(9.326e-02, -1.586e-01, -3.079e-02, -1.812e-01, -1.387e-02, 9.443e-02, -1.450e-01, 2.655e-02, -1.164e-01, -2.343e-01, -2.425e-02, -2.599e-03, -4.220e-01, -5.528e-02, 2.033e-03, -3.798e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.833e-02, -1.582e-02, 4.911e-02, -3.677e-02, 1.251e-02, -1.193e-02, 3.827e-02, 1.097e-02, -1.109e-01, -3.317e-01, -1.341e-02, 2.298e-01, -8.049e-03, -9.398e-02, -4.817e-02, 1.989e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-7.381e-03, 1.149e-02, -2.019e-02, 1.648e-02, -3.647e-02, 9.253e-02, -2.478e-02, 1.018e-01, 7.331e-02, -5.181e-02, 2.146e-02, -3.817e-02, -1.850e-02, -6.421e-02, 9.741e-02, -6.257e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(5.868e-02, 1.003e-01, 1.967e-01, 4.733e-02, -2.793e-02, -2.979e-03, -6.832e-02, 2.742e-02, 1.064e-02, 1.054e-01, 1.354e-01, -1.986e-02, 5.294e-03, 6.893e-02, 2.376e-01, -1.825e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-2.257e-01, -2.940e-01, 6.103e-02, 9.899e-02, 2.359e-02, 1.336e-02, -1.541e-02, -2.703e-02, -3.611e-02, 2.105e-01, 2.202e-01, 9.725e-03, 1.578e-02, 1.725e-01, 1.487e-01, 1.177e-01), r5);\n\tr0 = MulAdd(s0_2_0, M4(1.751e-02, 9.948e-03, -2.556e-02, 4.629e-03, -1.458e-03, -5.089e-02, -2.172e-02, 8.571e-03, 7.573e-02, 7.982e-02, 8.763e-02, -1.014e-01, -5.172e-02, -3.604e-02, 1.105e-02, -9.103e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(3.986e-02, -1.917e-01, -1.275e-02, 2.185e-01, 6.961e-02, 1.185e-02, -3.338e-02, 1.109e-01, -3.804e-02, -5.866e-02, -2.835e-02, -9.121e-01, 8.279e-02, 2.457e-01, 2.799e-02, -1.129e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.802e-02, -9.239e-02, 3.063e-02, -2.915e-02, -9.741e-03, -1.735e-02, 5.609e-03, -6.966e-03, 9.985e-03, 1.302e-02, 4.906e-02, -4.152e-02, -4.488e-03, 3.021e-02, 4.391e-02, 2.919e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(5.556e-02, -1.807e-02, -5.214e-02, -1.667e-02, 4.738e-03, 6.224e-02, 3.368e-02, 8.081e-02, -2.275e-02, 2.362e-02, -2.791e-02, 2.512e-02, -3.748e-02, 1.291e-02, 4.310e-02, 1.606e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(5.966e-03, -7.841e-04, -2.087e-02, 5.887e-03, 1.163e-03, -4.567e-03, 2.639e-02, -3.439e-04, 1.404e-02, 7.960e-02, 1.367e-02, -6.262e-04, 4.388e-03, -3.552e-02, -1.321e-02, -1.478e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-1.582e-02, 3.470e-04, -4.971e-02, -3.205e-02, 7.939e-03, 2.616e-02, 4.814e-03, 2.328e-02, 4.261e-02, 8.225e-02, 1.135e-01, 8.089e-02, -3.974e-02, -9.905e-03, -4.280e-02, 1.980e-02), r5);\n\tr0 = MulAdd(s0_2_1, M4(-2.670e-01, -8.326e-03, 2.385e-02, -9.645e-02, 4.534e-02, 8.238e-03, 3.983e-02, 1.398e-02, 7.478e-02, -4.192e-02, 1.213e-01, -2.342e-01, -1.039e-01, -5.719e-03, -1.254e-01, 2.384e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-6.409e-02, 1.084e-01, 6.735e-03, -1.741e-01, -9.161e-02, -5.910e-02, -1.431e-01, 2.103e-02, -1.799e-01, 3.775e-02, -4.101e-02, -3.991e-01, 1.749e-01, -2.137e-01, 6.176e-03, 4.145e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(2.581e-02, 1.743e-02, 3.001e-02, -1.781e-01, 5.707e-03, -1.441e-03, -4.199e-02, -3.409e-02, 8.337e-02, 1.068e-02, -3.495e-02, 1.009e-01, -4.994e-02, 2.508e-02, 7.642e-02, -9.936e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-3.129e-02, 2.568e-02, 1.177e-02, 2.431e-02, -3.704e-02, 4.443e-02, 1.166e-03, 3.024e-02, -4.797e-02, -4.874e-02, 6.033e-02, -5.634e-02, 1.031e-01, 1.125e-01, -4.654e-02, 1.146e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(3.345e-02, 4.485e-02, 2.202e-02, 1.636e-02, -3.705e-02, -2.521e-02, 5.708e-02, -1.391e-03, 1.482e-01, 1.968e-01, 2.273e-01, 2.083e-02, -1.073e-02, -1.037e-01, -1.147e-01, -3.926e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(4.515e-02, -2.236e-02, 5.748e-02, 3.449e-02, 2.971e-02, 1.047e-02, 2.256e-02, 7.003e-02, -4.598e-02, -1.200e-02, -8.407e-02, -1.987e-01, 6.514e-02, 1.062e-01, 1.159e-01, 1.388e-01), r5);\n\tr0 = MulAdd(s0_2_2, M4(2.380e-02, -5.360e-02, -4.477e-02, 7.699e-03, -1.080e-02, 1.536e-02, 1.409e-02, 4.707e-02, -9.449e-02, -1.928e-01, 1.468e-02, -9.116e-02, -3.587e-02, -5.459e-03, 3.107e-02, 3.530e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-3.575e-02, -1.600e-01, -1.409e-02, 1.429e-02, -2.426e-01, 6.205e-02, -1.314e-01, 6.663e-02, -2.832e-01, 2.526e-02, -3.771e-02, 4.424e-02, 1.762e-01, -3.491e-02, -1.636e-02, -1.255e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(-8.383e-03, 2.744e-02, 3.240e-02, -3.504e-02, -7.031e-03, 1.063e-02, -2.582e-02, -5.275e-02, 1.800e-02, -4.144e-02, -3.113e-02, 6.112e-02, 1.352e-02, -6.924e-02, 2.221e-02, 5.675e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(2.307e-02, 1.115e-02, -2.891e-02, 9.671e-03, -9.027e-03, 3.454e-02, 7.931e-03, 2.347e-03, 1.641e-02, -1.375e-02, 9.992e-03, -1.236e-02, -1.543e-02, -2.867e-03, 8.949e-03, 6.702e-04), r3);\n\tr4 = MulAdd(s0_2_2, M4(1.553e-02, 2.467e-02, 5.806e-03, 5.303e-03, 1.005e-02, -5.812e-02, 4.784e-02, 3.612e-04, 6.515e-02, 2.525e-02, -3.310e-02, 4.496e-03, -1.629e-02, 1.321e-02, -3.248e-02, 6.227e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(1.465e-04, -9.882e-02, 7.137e-02, -4.842e-02, 8.841e-03, -4.406e-03, 3.417e-02, 1.112e-03, -1.494e-02, 9.109e-02, 1.505e-01, -1.758e-02, -3.109e-02, 7.886e-02, 1.041e-01, 1.189e-01), r5);\n\tr0 = MulAdd(s1_0_0, M4(7.931e-02, 5.946e-02, 3.679e-02, 1.092e-02, -6.955e-02, -5.494e-01, -1.559e-01, -3.832e-02, -3.808e-02, 2.096e-01, -9.139e-02, -8.913e-02, -2.765e-03, 9.972e-02, 8.423e-02, 4.675e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-3.501e-02, 6.698e-03, 8.708e-03, -4.311e-01, -3.727e-02, -1.537e-01, -1.225e-01, 6.390e-02, 6.334e-02, -2.253e-01, 5.482e-02, 1.458e-01, 1.632e-03, -1.528e-01, 3.189e-03, -3.240e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.324e-02, 4.998e-02, -5.627e-02, -7.502e-02, 1.506e-02, 5.260e-02, 2.345e-02, 1.991e-02, 3.569e-02, 1.233e-01, 1.981e-02, 1.164e-01, -1.607e-03, 7.518e-03, -1.387e-02, -4.062e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(-2.887e-02, -5.139e-02, -3.329e-02, -4.903e-02, -2.942e-02, 9.247e-03, -3.578e-02, 1.398e-02, 4.406e-02, 1.838e-03, 1.193e-02, 6.635e-03, 2.365e-02, 3.094e-02, -2.667e-02, 3.070e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(1.456e-02, 4.653e-02, 4.523e-02, 1.747e-02, -8.928e-03, -9.703e-02, -8.875e-02, -1.769e-02, 1.502e-02, -4.352e-02, -1.263e-01, 5.017e-02, -5.159e-03, 3.670e-02, 1.923e-02, 4.919e-03), r4);\n\tr5 = MulAdd(s1_0_0, M4(6.130e-02, -8.383e-03, 6.274e-02, -5.462e-03, 3.552e-02, -2.903e-02, -1.254e-01, -4.997e-02, 5.838e-02, 8.423e-02, 1.562e-01, 1.180e-01, 3.200e-02, 2.184e-02, 1.356e-02, 3.331e-02), r5);\n\tr0 = MulAdd(s1_0_1, M4(-7.233e-02, 2.803e-01, 4.783e-02, 2.339e-01, -9.089e-02, -3.923e-01, -1.521e-01, 9.139e-02, -2.166e-02, -6.840e-02, -3.837e-02, -6.486e-01, -2.171e-02, 9.937e-02, -9.156e-02, 7.492e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-6.726e-02, 4.422e-01, 3.945e-02, 5.104e-02, 8.165e-02, -5.707e-02, -1.257e-01, 3.728e-02, 9.854e-02, 2.867e-02, 8.494e-02, -7.799e-03, 5.265e-03, -1.127e-01, -6.118e-03, -1.008e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-6.622e-03, 9.395e-02, 2.703e-02, 2.644e-02, 2.439e-02, -2.948e-02, 1.434e-02, 1.370e-03, -3.779e-02, 6.222e-02, 1.232e-02, 4.530e-02, 5.523e-03, -1.809e-02, -2.594e-02, -1.497e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-1.556e-01, -6.679e-03, 1.623e-01, -4.635e-03, -5.649e-03, 1.311e-02, 8.778e-02, 1.287e-02, -9.684e-02, -2.939e-02, -8.570e-02, -2.498e-02, -8.883e-03, 5.340e-03, -4.746e-02, -2.860e-04), r3);\n\tr4 = MulAdd(s1_0_1, M4(1.478e-02, 7.991e-02, 7.840e-03, -1.023e-01, -1.063e-02, 7.361e-02, -9.126e-02, -5.058e-02, -2.057e-02, -3.311e-01, -1.698e-01, -1.268e-02, 9.810e-04, 2.007e-02, 1.580e-02, -1.206e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(1.190e-01, -1.264e-01, -2.558e-03, -3.914e-02, 4.818e-02, -1.422e-01, -3.236e-02, -1.075e-01, -2.320e-01, 1.382e-01, -6.504e-02, 2.059e-01, -1.328e-01, 2.731e-02, -1.032e-01, 7.699e-03), r5);\n\tr0 = MulAdd(s1_0_2, M4(7.319e-03, -5.790e-02, 2.765e-02, 1.313e-01, 7.675e-03, -2.153e-01, -4.091e-02, 2.971e-02, 4.091e-02, 1.005e-01, -2.998e-02, -2.147e-01, 3.801e-02, 9.801e-02, -1.606e-01, 6.520e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-8.596e-02, -1.230e-01, -1.221e-02, 3.928e-02, -5.868e-02, -1.729e-01, -1.016e-01, 6.549e-02, 1.849e-01, 1.891e-01, 9.390e-02, 1.509e-02, 6.274e-02, -5.445e-02, 6.314e-03, -3.786e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(-5.511e-02, 8.566e-02, -7.967e-02, 3.822e-02, 1.818e-03, 2.246e-02, -9.783e-03, 2.527e-02, 3.367e-02, -2.707e-02, 2.630e-03, 1.357e-03, 5.909e-03, -2.075e-01, 3.396e-02, 1.130e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-1.241e-01, -3.141e-03, -8.276e-02, -1.955e-02, -3.780e-03, 4.384e-02, -7.495e-03, 3.925e-02, -3.567e-02, -3.862e-02, 2.802e-02, -5.361e-02, -1.892e-02, 1.520e-02, -8.122e-02, 2.158e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-7.531e-02, 1.326e-01, -5.501e-02, 7.747e-02, 1.170e-02, 3.146e-02, 4.509e-02, 5.081e-02, 2.936e-02, -2.420e-01, -9.100e-02, -7.252e-02, -2.255e-02, -4.198e-02, -7.306e-02, -7.806e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(2.659e-02, 1.297e-01, 8.263e-02, 7.366e-02, -3.289e-02, 1.195e-02, 4.405e-02, -2.597e-02, 4.287e-02, 5.660e-02, -4.951e-04, -3.095e-03, -1.281e-01, 1.065e-01, 5.371e-02, -1.656e-02), r5);\n\tr0 = MulAdd(s1_1_0, M4(1.149e-01, -2.643e-02, -4.707e-02, -1.744e-01, 5.460e-02, -1.428e-01, 6.031e-02, 6.199e-02, -7.227e-02, 3.404e-01, -2.905e-03, 4.726e-02, 1.680e-02, -1.945e-01, -8.758e-02, -3.748e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(3.285e-02, 1.482e-01, 1.646e-02, -3.885e-01, -7.360e-02, -3.168e-01, -9.063e-02, 1.382e-01, -1.027e-01, -4.173e-01, 8.738e-02, -1.066e+00, -4.851e-03, -9.737e-02, 7.778e-04, -1.063e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(-8.785e-03, -7.053e-02, -3.763e-02, -7.592e-02, 1.474e-02, 2.388e-01, 2.106e-02, 5.504e-02, 1.049e-02, 1.182e-01, -1.604e-02, 1.811e-02, -2.255e-02, -3.546e-02, -8.225e-03, 3.169e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(4.977e-03, 1.773e-02, -1.221e-01, 3.609e-03, 1.152e-02, -1.318e-04, 3.944e-02, -2.536e-03, -8.205e-02, 3.133e-02, -1.157e-02, 2.429e-02, 2.556e-02, 2.126e-02, -4.296e-02, 2.260e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-4.358e-03, 7.826e-03, -5.861e-02, 6.634e-03, -3.492e-02, 6.164e-02, 2.561e-02, -1.188e-02, -2.849e-02, 2.899e-02, 6.186e-02, -1.686e-02, -5.209e-03, -2.409e-02, -7.818e-03, 8.154e-03), r4);\n\tr5 = MulAdd(s1_1_0, M4(-6.346e-03, 6.560e-03, 4.053e-02, -4.267e-02, 1.091e-01, -5.638e-02, 1.121e-02, 1.296e-01, 2.956e-02, 9.020e-02, 1.248e-01, 1.013e-01, 5.959e-03, -3.187e-02, 1.630e-02, 6.176e-03), r5);\n\tr0 = MulAdd(s1_1_1, M4(-3.678e-01, -2.331e-01, -4.244e-02, -4.231e-01, -3.618e-01, -6.788e-01, -1.660e-01, 2.208e-01, 5.215e-01, 2.038e-01, 1.392e-01, -4.502e-01, -3.268e-01, -2.197e-01, -4.160e-02, 1.454e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(3.513e-02, 3.538e-01, 5.188e-02, 4.921e-01, 4.206e-02, -1.389e-01, -2.187e-01, -1.638e-01, -1.998e-01, 1.097e-01, 1.386e-01, 2.583e-01, 6.263e-02, -3.306e-01, -4.465e-02, 4.182e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.247e-01, -4.051e-01, -2.105e-01, -4.774e-01, -3.872e-02, -1.613e-01, 2.071e-02, -5.568e-01, 1.983e-01, 1.422e-01, -9.339e-03, -8.460e-02, -3.287e-02, -7.862e-02, 3.903e-02, 3.523e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(1.121e-01, 1.596e-01, 3.452e-01, 1.395e-01, -5.549e-02, 2.170e-01, -2.627e-02, 2.164e-01, -1.179e-01, 1.565e-02, -3.411e-02, 7.097e-04, 1.994e-02, -2.680e-02, -1.898e-01, -2.001e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(6.372e-02, -3.674e-02, -6.969e-02, 2.465e-02, -2.227e-02, -6.278e-02, -9.056e-02, 2.522e-02, 1.101e-01, -1.283e-01, 2.124e-01, 7.683e-02, -3.121e-02, -9.759e-02, -8.967e-02, -7.478e-04), r4);\n\tr5 = MulAdd(s1_1_1, M4(-1.420e-01, -5.191e-02, -7.524e-02, -5.997e-03, 8.302e-02, -3.589e-02, -3.160e-01, -1.114e-01, -1.267e-01, -3.856e-01, -1.607e-01, -1.050e-01, -1.093e-01, -1.183e-01, -2.033e-01, 3.142e-02), r5);\n\tr0 = MulAdd(s1_1_2, M4(2.871e-01, 1.842e-01, -7.396e-03, -2.923e-02, -1.494e-01, -1.070e-01, -6.480e-02, 2.687e-02, 8.400e-02, 1.804e-01, 1.420e-01, -1.590e-01, 3.740e-02, 5.544e-02, 1.362e-01, 1.345e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(-7.552e-01, 1.367e-01, 6.300e-02, 2.417e-01, -2.684e-01, -3.394e-01, -1.732e-01, -7.839e-02, -1.662e-01, -2.488e-01, 1.284e-01, 4.626e-02, 3.667e-01, -2.860e-01, -5.643e-02, 5.487e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(5.892e-01, 5.410e-01, 1.587e-01, -6.891e-02, -5.189e-02, -1.382e-01, -2.201e-02, 1.016e-01, 2.673e-02, 2.115e-01, -8.765e-02, 9.747e-02, -8.953e-02, -2.510e-01, 1.865e-02, 2.004e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(7.178e-02, 6.719e-02, -6.353e-02, 5.090e-02, -5.555e-02, -4.250e-02, 1.418e-01, -3.284e-02, 7.495e-02, -8.205e-03, 3.953e-02, -2.154e-02, -3.881e-02, 4.689e-02, 3.959e-02, 5.629e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(2.826e-03, -1.938e-01, 3.420e-02, 2.456e-01, 2.310e-02, 1.662e-02, -8.892e-02, -3.509e-02, 2.562e-02, -1.328e-01, -1.001e-01, 3.728e-03, -4.988e-02, -5.762e-02, -3.541e-01, -3.260e-03), r4);\n\tr5 = MulAdd(s1_1_2, M4(-5.661e-02, -1.919e-01, -2.623e-02, -2.309e-01, -1.964e-02, 2.310e-01, 1.470e-01, 8.283e-02, 1.042e-01, 1.390e-01, -9.232e-02, 9.087e-02, 7.560e-02, -2.923e-01, -4.752e-01, -3.683e-01), r5);\n\tr0 = MulAdd(s1_2_0, M4(4.114e-02, 6.900e-02, 1.454e-02, 6.660e-02, -1.577e-01, -1.256e-01, -7.804e-03, 1.003e-01, 1.585e-02, -3.878e-02, -2.259e-02, -6.216e-02, 6.058e-02, 1.275e-01, 2.471e-02, 7.489e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-3.439e-03, -8.671e-02, 2.154e-02, -4.914e-02, -4.176e-02, -3.778e-01, -9.790e-02, 2.046e-01, -2.641e-02, 1.552e-01, 3.123e-02, -1.420e-01, -1.672e-02, -1.141e-02, 1.630e-02, -2.057e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(7.431e-03, -1.184e-02, -1.955e-02, 2.624e-03, -1.256e-02, 1.889e-01, -6.007e-02, 6.116e-02, 2.373e-02, 7.488e-02, -4.447e-03, 2.268e-02, -1.106e-02, -1.228e-02, -2.314e-02, 3.987e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-4.135e-02, -1.502e-02, 6.166e-02, -1.098e-02, 1.040e-02, 4.215e-02, 3.036e-02, 3.920e-02, 1.519e-02, -1.813e-02, 2.999e-03, -2.792e-02, -2.709e-02, 1.813e-02, -2.096e-02, 1.254e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-1.420e-02, 1.781e-02, 7.400e-02, -3.513e-02, -1.836e-02, 4.107e-02, -2.913e-02, -2.301e-02, 1.791e-02, -7.497e-02, -4.860e-02, 1.201e-02, -1.811e-03, 5.163e-02, 7.685e-02, -1.085e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-2.045e-02, 8.714e-02, 5.723e-03, 1.254e-02, 1.483e-02, 6.132e-02, 5.596e-02, 3.845e-02, -8.364e-03, -7.071e-02, -3.789e-02, -4.393e-02, 4.615e-03, -1.314e-02, -4.812e-02, -3.822e-02), r5);\n\tr0 = MulAdd(s1_2_1, M4(-2.022e-02, -1.042e-01, -3.615e-02, 3.071e-02, 9.260e-02, -3.284e-01, 1.943e-01, 1.111e-01, -2.385e-01, -3.072e-02, -8.716e-02, -7.114e-03, 4.823e-02, -6.693e-02, 4.092e-02, 3.149e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(4.709e-02, -1.259e-01, 3.404e-02, -2.335e-01, -2.589e-01, 2.678e-02, -2.239e-01, 4.744e-02, 5.946e-02, -5.091e-02, 7.464e-02, 1.626e-01, 1.479e-03, -3.628e-02, -3.673e-02, -3.156e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(-3.477e-03, -1.305e-01, -1.062e-01, -7.052e-04, 6.382e-02, -3.908e-02, 1.251e-01, 8.489e-02, -2.577e-03, 5.434e-02, -5.592e-02, 7.904e-02, -2.689e-02, -5.975e-02, -3.660e-02, -8.609e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-4.862e-02, 2.521e-02, 1.282e-01, 3.356e-02, 4.357e-02, 3.454e-02, -9.493e-02, 3.583e-02, 3.789e-02, 1.162e-02, 6.183e-03, 2.828e-04, -7.137e-03, 1.796e-02, -5.586e-02, 1.258e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(2.846e-02, -6.622e-03, -1.233e-01, -3.210e-02, 3.255e-02, -3.218e-02, 5.290e-02, 4.431e-02, -4.596e-03, -1.411e-01, -2.627e-01, 9.433e-03, -2.509e-02, -3.055e-02, 2.595e-02, 5.079e-03), r4);\n\tr5 = MulAdd(s1_2_1, M4(3.873e-02, 2.701e-01, 1.538e-01, 6.665e-03, -5.353e-02, -2.615e-01, -2.119e-01, -2.653e-01, -4.655e-02, 7.984e-02, 8.431e-02, 8.579e-02, -2.744e-02, -9.740e-02, -9.198e-02, -9.875e-02), r5);\n\tr0 = MulAdd(s1_2_2, M4(-2.048e-01, 4.483e-02, -1.358e-01, 1.687e-02, 1.586e-02, -4.235e-01, 5.765e-02, 6.198e-02, -1.003e-01, 8.329e-02, -3.330e-02, -3.136e-02, 1.869e-01, -6.975e-03, 5.120e-02, 5.390e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.474e-01, 2.112e-01, -7.542e-03, -6.272e-02, 1.232e-01, -5.254e-02, -1.150e-01, 1.032e-01, -1.164e-02, 1.595e-01, 6.682e-02, -7.171e-02, 2.757e-02, -3.270e-02, -4.247e-02, -2.661e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(1.665e-02, -1.246e-01, -2.357e-02, 1.183e-01, -2.327e-02, -8.603e-02, 7.178e-03, -2.155e-02, 3.892e-02, 5.405e-02, -3.497e-02, 1.246e-01, -7.090e-03, -9.957e-02, 9.585e-03, -1.082e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(2.793e-02, -3.417e-02, -4.827e-02, -4.156e-02, 6.398e-03, 5.677e-02, 5.278e-02, 6.357e-02, 5.845e-02, -2.889e-02, 2.026e-02, -3.106e-02, -2.378e-02, 1.545e-02, 5.144e-03, 9.084e-03), r3);\n\tr4 = MulAdd(s1_2_2, M4(-2.126e-02, 2.972e-02, -1.675e-01, 2.263e-02, 5.115e-02, -6.078e-02, -2.637e-02, -2.652e-02, 3.968e-02, -1.097e-01, -2.901e-01, 1.119e-02, 4.902e-03, -1.473e-02, 1.558e-01, 6.747e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(4.358e-02, 1.740e-01, -9.191e-02, 1.010e-03, -7.950e-03, -2.737e-02, 5.181e-02, -1.497e-01, 5.677e-02, 1.427e-01, -9.623e-02, 2.356e-01, 2.563e-02, -9.095e-02, -5.099e-02, -1.292e-01), r5);\n\tr0 = max(r0, 0.0);\n\tT6[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT7[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT8[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT9[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT10[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT11[gxy] = r5;\n}\n\n//!PASS 5\n//!DESC conv4 (24x24)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T6, T7, T8, T9, T10, T11\n//!OUT T0, T1, T2, T3, T4, T5\n\n#define L0(x, y) V4(O(T6, x, y))\n#define L1(x, y) V4(O(T7, x, y))\n#define L2(x, y) V4(O(T8, x, y))\n#define L3(x, y) V4(O(T9, x, y))\n#define L4(x, y) V4(O(T10, x, y))\n#define L5(x, y) V4(O(T11, x, y))\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.175e-03, 2.983e-03, 3.214e-02, 3.416e-02, 1.678e-03, 1.380e-02, 1.730e-02, -5.461e-02, -6.553e-03, -2.704e-03, -1.044e-02, 6.861e-03, -2.519e-03, 4.359e-03, -1.351e-02, 3.945e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-4.909e-03, 1.569e-02, -6.322e-04, -2.201e-02, -2.542e-02, 7.062e-03, 4.103e-03, -1.338e-02, 2.108e-02, -7.596e-03, -3.784e-03, 2.782e-03, 2.244e-02, -2.917e-02, -2.356e-03, 1.496e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(9.014e-03, -1.296e-02, 2.390e-03, -1.813e-02, -5.560e-03, -3.822e-02, 8.856e-03, -1.337e-02, -2.674e-02, -5.278e-03, -1.025e-03, 1.234e-02, 3.915e-02, 2.358e-02, 4.647e-03, 1.850e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(3.354e-03, -7.587e-03, 1.166e-03, 3.353e-02, -5.776e-03, -3.700e-02, -6.276e-03, 2.074e-02, 2.450e-02, 1.292e-02, 2.711e-03, -1.028e-02, 3.286e-02, 3.857e-02, 4.607e-03, 3.104e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.270e-02, 7.775e-02, 5.505e-02, 1.671e-02, 1.740e-01, 3.417e-02, -1.934e-01, 1.225e-02, 9.055e-02, -1.317e-01, -7.755e-02, -2.437e-02, -6.791e-02, 1.576e-01, -4.975e-02, -2.680e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-6.290e-02, 3.729e-02, -9.709e-03, 1.283e-03, -2.642e-02, 1.613e-01, -2.147e-02, 1.760e-03, -1.070e-04, -5.110e-02, -2.215e-03, -4.199e-03, 2.170e-02, 1.272e-01, -3.282e-02, -7.729e-04), r5);\n\tr0 = MulAdd(s0_0_1, M4(-4.160e-03, -6.088e-04, -8.566e-03, -1.796e-01, 1.004e-02, -9.184e-03, 3.939e-02, 1.035e-01, 9.120e-03, 3.351e-03, 8.345e-03, 6.678e-02, -2.965e-03, -3.696e-03, 8.983e-03, -3.976e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-4.799e-02, -1.431e-01, -6.218e-03, -3.825e-02, -1.195e-02, 3.773e-02, 1.377e-02, 4.578e-02, 2.947e-02, -1.638e-02, 8.624e-03, 1.822e-02, 7.490e-03, -2.784e-02, -5.047e-03, 2.676e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-4.650e-02, -2.131e-02, -1.052e-01, -8.813e-02, 6.910e-02, -1.840e-02, 3.605e-03, 2.812e-02, -3.102e-02, -2.162e-02, -6.758e-02, -6.125e-04, -7.300e-02, 2.341e-02, 5.361e-02, 1.829e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-7.860e-03, -2.608e-02, -6.508e-03, -8.478e-02, 2.249e-02, -4.115e-02, -3.814e-03, 6.005e-02, 6.209e-03, 3.626e-02, 5.700e-03, -1.601e-02, -7.814e-03, -1.556e-02, -1.157e-02, 2.464e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-4.119e-01, -2.582e-02, -1.224e-01, -1.421e-01, -1.674e-01, 1.776e-01, -4.262e-01, 2.516e-02, 1.985e-02, -1.558e-01, 1.250e-01, -1.764e-02, -1.968e-01, -6.250e-02, 1.263e-01, -2.175e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-1.276e-01, -1.856e-01, -1.033e-01, -1.947e-03, 2.463e-01, -8.304e-02, -9.283e-02, 1.097e-02, 5.404e-02, -1.883e-01, 9.300e-02, 4.117e-03, -1.023e-01, 7.311e-02, 7.310e-02, 7.412e-05), r5);\n\tr0 = MulAdd(s0_0_2, M4(-3.323e-04, -1.161e-03, 9.531e-03, -1.738e-02, 9.954e-03, 7.035e-03, -1.855e-02, 2.047e-02, 1.130e-02, -3.249e-03, 1.486e-02, -6.286e-02, -2.826e-02, 4.015e-03, -1.818e-02, 6.047e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.187e-02, 4.554e-02, -1.794e-03, -9.302e-02, 1.089e-02, -1.968e-02, 2.689e-03, 3.650e-02, 3.355e-02, -3.833e-02, 1.141e-02, -1.554e-02, 3.884e-03, -4.850e-03, -3.436e-02, -1.156e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.254e-02, -1.571e-02, -1.967e-02, -9.498e-02, -3.266e-02, 6.971e-03, -2.155e-02, 6.122e-02, 1.795e-02, 2.539e-02, -3.480e-03, 5.261e-03, 6.134e-02, -2.534e-02, 3.849e-03, -1.018e-01), r2);\n\tr3 = MulAdd(s0_0_2, M4(-3.435e-02, -1.288e-02, -1.370e-03, 1.172e-02, 3.008e-02, 9.617e-03, 5.174e-03, 2.690e-02, -5.503e-03, 5.581e-02, 1.892e-02, 2.701e-05, 1.052e-01, -1.127e-02, -3.483e-02, -6.505e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(1.253e-01, 6.507e-02, 4.101e-02, 4.950e-02, -1.725e-03, 1.947e-01, -3.579e-02, -2.399e-02, 4.062e-02, -5.223e-02, 8.076e-02, -3.333e-02, -1.843e-02, -1.816e-01, 2.117e-01, 3.598e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(-9.496e-02, 2.173e-01, 4.480e-02, -2.657e-03, 8.230e-02, -3.067e-02, -2.692e-02, 8.550e-03, -2.721e-02, 9.154e-02, -3.102e-02, 5.525e-03, -2.906e-01, 9.895e-02, 1.962e-02, -1.462e-02), r5);\n\tr0 = MulAdd(s0_1_0, M4(-1.284e-02, 1.266e-02, 2.128e-02, 7.897e-02, -1.119e-02, 2.770e-02, -7.697e-03, 1.115e-01, -6.512e-03, -1.522e-02, 3.975e-02, 9.107e-03, 1.271e-02, -2.272e-02, -1.693e-02, -4.558e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-2.849e-02, -1.243e-02, -1.413e-02, -1.697e-02, -3.340e-03, 2.106e-02, -1.176e-02, -1.735e-02, -1.689e-02, 6.354e-03, -6.505e-03, -8.376e-03, 3.603e-02, -3.435e-02, 1.267e-02, -2.154e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(2.351e-02, 1.919e-02, 9.275e-02, -1.317e-02, 4.057e-02, -4.667e-02, 2.555e-02, -1.555e-02, -4.328e-02, -4.730e-03, -2.976e-02, 7.077e-04, -7.807e-02, -3.521e-03, 6.812e-02, 9.290e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.423e-02, 5.969e-03, -1.977e-02, 5.957e-02, 2.120e-02, -4.754e-02, -1.559e-02, -6.783e-02, -9.953e-03, 1.745e-04, -8.099e-03, 4.032e-02, 3.919e-02, 3.307e-03, 1.679e-02, -7.208e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-2.424e-01, -1.894e-01, -2.264e-01, -1.541e-02, 2.533e-01, -3.020e-02, 2.241e-01, 3.162e-02, -2.627e-01, -3.748e-02, 1.132e-02, 1.220e-02, -2.081e-01, -1.098e-01, -2.341e-01, -4.260e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(3.287e-03, 9.957e-03, 2.482e-02, -1.760e-02, 3.258e-02, -2.651e-02, -7.416e-02, -1.239e-02, 1.421e-01, -1.451e-02, 1.512e-02, -1.487e-04, -1.548e-01, 5.845e-02, 9.991e-02, 1.366e-02), r5);\n\tr0 = MulAdd(s0_1_1, M4(-5.554e-02, -1.401e-01, -1.638e-01, -2.027e-01, 3.917e-02, 1.122e-02, 1.554e-02, -2.908e-01, -2.753e-02, -4.135e-03, 4.703e-02, 2.264e-01, 3.002e-02, -3.414e-02, 6.589e-02, -3.280e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.382e-01, -9.509e-02, -6.470e-02, -1.672e-02, -2.325e-02, 8.771e-02, 4.968e-02, 3.097e-02, -3.033e-01, -2.689e-02, -3.860e-02, 1.517e-01, -1.007e-01, -1.766e-02, 3.408e-02, -5.782e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-2.530e-01, -8.627e-02, -9.232e-02, 9.969e-03, -1.586e-01, 4.578e-02, -3.458e-02, 3.896e-02, 2.017e-01, -7.164e-02, 1.722e-02, 2.478e-02, 2.115e-01, -1.163e-01, 7.712e-02, -9.070e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(-3.096e-01, -2.328e-01, -9.154e-02, -2.040e-01, 6.860e-02, 3.413e-02, 2.102e-02, 7.550e-02, -1.606e-01, -3.525e-01, -4.568e-02, -6.158e-02, -9.818e-02, -9.670e-03, 4.621e-02, -1.120e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-2.181e-01, -3.116e-01, -5.653e-01, -1.174e-01, -3.256e-01, -6.980e-02, 5.443e-01, 9.778e-02, 3.738e-01, 4.259e-01, -4.678e-01, -4.781e-02, 1.738e-02, 4.576e-02, -4.424e-01, -3.458e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-5.639e-01, 9.466e-02, 1.994e-03, -5.211e-02, -1.606e-01, -6.062e-02, 7.870e-02, 3.674e-02, 1.644e-01, -1.663e-01, -3.287e-01, -7.490e-03, -4.648e-03, -3.722e-01, -1.479e-01, 2.362e-02), r5);\n\tr0 = MulAdd(s0_1_2, M4(-9.677e-02, 4.106e-02, -2.007e-01, -7.904e-03, 1.630e-02, -9.307e-03, 8.947e-02, 5.926e-02, 7.744e-03, -3.270e-02, -2.018e-02, -1.381e-01, -4.821e-02, 5.018e-03, -8.177e-02, -2.381e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-2.528e-02, 6.938e-03, -1.121e-01, -8.058e-02, 1.427e-02, 1.022e-01, 9.853e-03, -1.165e-01, 1.572e-02, -1.315e-02, 6.492e-03, 2.183e-01, 1.874e-02, 6.639e-03, -4.914e-02, 1.239e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(8.180e-02, -6.666e-02, 2.348e-02, -1.334e-01, 1.270e-01, 3.616e-04, -1.213e-02, -1.382e-01, -3.407e-02, 3.506e-02, 3.185e-02, 2.979e-01, -6.020e-02, 1.145e-01, -7.739e-02, 1.577e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.870e-01, -1.533e-01, -1.238e-01, -2.584e-01, 6.067e-03, 8.227e-02, 6.273e-02, -9.368e-02, -1.029e-01, -5.705e-02, -4.568e-02, 7.395e-02, -1.078e-02, -1.270e-04, -4.694e-02, 1.397e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(8.302e-02, -3.017e-01, -2.613e-01, -8.433e-03, 3.483e-01, -1.767e-01, 2.411e-01, 1.209e-01, -2.711e-01, 5.878e-02, -3.054e-02, -1.138e-02, -7.015e-02, 4.895e-01, -2.704e-01, 8.514e-03), r4);\n\tr5 = MulAdd(s0_1_2, M4(-1.401e-01, 4.380e-01, -6.951e-02, -7.241e-02, -1.586e-01, 4.387e-01, -7.444e-02, 1.476e-02, 2.705e-01, -1.753e-01, 1.173e-01, 6.293e-04, 2.719e-01, 7.280e-02, 7.055e-02, -5.293e-02), r5);\n\tr0 = MulAdd(s0_2_0, M4(-4.631e-03, -3.276e-03, -3.188e-02, 7.100e-02, -1.691e-02, 3.528e-02, -4.111e-02, 1.802e-01, -9.133e-03, 6.784e-03, -3.778e-02, -8.082e-03, -1.242e-02, -3.144e-02, 8.444e-02, -2.705e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.150e-02, 2.406e-03, -4.983e-03, -3.710e-03, -1.925e-02, 1.457e-03, -2.266e-02, 1.336e-03, -2.735e-03, 5.349e-04, -8.628e-03, -1.175e-02, -1.283e-02, 2.285e-03, -1.411e-02, -2.679e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.200e-02, -1.748e-02, 1.556e-03, -3.987e-03, -5.677e-03, -1.164e-02, -2.276e-02, 3.231e-04, 1.238e-01, 1.789e-02, -2.945e-02, -1.108e-02, 8.224e-03, 5.346e-02, -2.655e-02, 8.794e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(2.483e-02, -4.084e-02, -3.333e-03, -2.855e-02, -2.415e-02, -9.235e-03, -1.547e-02, -3.476e-02, 8.471e-02, -2.188e-02, -5.727e-03, -6.477e-02, -1.924e-02, 6.930e-03, 1.781e-02, 1.573e-01), r3);\n\tr4 = MulAdd(s0_2_0, M4(-1.092e-01, 9.316e-02, 1.186e-01, -3.689e-03, 2.489e-01, 1.502e-01, -9.116e-03, 1.357e-02, 1.162e-01, 6.904e-02, 4.410e-01, 1.056e-02, -2.089e-01, -1.107e-02, -2.371e-01, 8.922e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(8.442e-02, -1.854e-02, 1.133e-02, -4.174e-03, -1.069e-02, 9.705e-02, -4.627e-02, -1.923e-02, 8.067e-02, -4.878e-03, -1.958e-02, -2.485e-03, 8.924e-02, 1.603e-02, 4.326e-04, -1.308e-02), r5);\n\tr0 = MulAdd(s0_2_1, M4(3.454e-02, -8.325e-02, 3.292e-02, -7.042e-02, 1.694e-02, 1.179e-01, 2.291e-01, -2.939e-01, -4.379e-03, -4.818e-02, -1.967e-01, -6.376e-02, -6.679e-02, -2.879e-02, -2.587e-01, 3.409e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.104e-02, -4.094e-04, 3.898e-02, 1.322e-02, -2.968e-02, 6.635e-03, 1.566e-02, -1.612e-03, 2.185e-02, -2.097e-02, -8.206e-03, -7.998e-02, 7.836e-02, -4.655e-03, -7.702e-02, -7.170e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(2.084e-02, -1.199e-02, 4.953e-03, 2.044e-03, 3.207e-02, 1.428e-02, 4.116e-03, 8.410e-04, -1.665e-01, -1.973e-01, 7.856e-02, 1.016e-02, -6.090e-02, -2.721e-02, -4.993e-02, -1.544e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.575e-02, -1.989e-02, 1.968e-02, 8.715e-02, 1.132e-03, 2.966e-02, 6.220e-02, 2.257e-01, 5.048e-01, 1.788e-01, -2.128e-02, 2.144e-01, -6.713e-02, -1.812e-02, -1.294e-01, -2.666e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(-1.358e-01, -4.654e-01, 6.715e-02, -3.643e-03, -3.729e-01, 1.600e-01, -3.866e-01, -3.283e-02, 8.038e-02, -6.092e-02, -6.958e-03, 5.112e-03, 7.815e-02, -2.256e-01, 2.791e-01, 9.946e-04), r4);\n\tr5 = MulAdd(s0_2_1, M4(-2.925e-02, -1.766e-01, 7.960e-03, 1.799e-02, 1.808e-01, 2.753e-01, 4.526e-03, 1.567e-02, 2.796e-02, 1.215e-01, -8.910e-02, 3.982e-02, -2.182e-01, 1.433e-01, 4.016e-02, -3.943e-02), r5);\n\tr0 = MulAdd(s0_2_2, M4(-5.255e-02, 2.022e-03, -9.705e-02, 4.110e-02, -9.643e-02, 8.769e-02, -2.242e-01, 2.247e-01, 7.886e-02, -3.943e-03, 1.665e-01, 1.638e-01, 9.692e-02, 9.910e-03, 2.270e-01, -1.150e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(-1.554e-02, 2.489e-03, -5.571e-02, 1.399e-02, -3.861e-02, 4.638e-02, -9.948e-02, -1.908e-02, -6.212e-02, -2.319e-02, 8.378e-02, -6.378e-02, -9.116e-03, -2.871e-03, 1.053e-01, -1.402e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(2.708e-02, 8.619e-03, 5.740e-04, 5.408e-03, -4.163e-02, -2.901e-02, 4.500e-02, -4.958e-03, 2.392e-02, -1.010e-01, 1.836e-02, -1.548e-01, 1.974e-02, -2.103e-02, 1.520e-02, -3.470e-04), r2);\n\tr3 = MulAdd(s0_2_2, M4(4.725e-02, 1.212e-02, -2.391e-02, -4.199e-02, 3.166e-02, -1.155e-01, -1.373e-01, -2.113e-01, 2.570e-02, -1.153e-01, 1.162e-01, -2.073e-01, 7.162e-03, 2.704e-02, 1.081e-01, 1.422e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(5.945e-02, -2.180e-01, 7.978e-02, 3.494e-03, 2.929e-01, 5.975e-02, -1.652e-01, 7.792e-03, 2.648e-01, -1.212e-01, 1.652e-01, -9.197e-03, 2.970e-02, -2.025e-01, 1.554e-01, 2.086e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(6.182e-02, -2.830e-03, -2.055e-02, -4.363e-02, 1.118e-01, 3.723e-02, -3.358e-02, -8.897e-02, 1.334e-02, -8.998e-02, -4.723e-02, 9.276e-02, -7.311e-02, -2.058e-01, -1.957e-02, 8.395e-02), r5);\n\tr0 = MulAdd(s1_0_0, M4(7.733e-03, -4.721e-03, -4.250e-03, -4.408e-03, 5.108e-03, 2.092e-03, -1.116e-02, 1.363e-01, 1.381e-03, -3.894e-02, 4.763e-03, -3.144e-02, -1.319e-03, -6.581e-03, 5.185e-02, -1.798e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-2.227e-02, -6.746e-02, 6.695e-03, 6.017e-04, 1.577e-02, -5.935e-03, 7.167e-03, -2.705e-02, 4.107e-02, 1.183e-01, -4.966e-03, -4.257e-03, -2.162e-02, -2.582e-02, -1.227e-03, -1.179e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(-5.174e-02, -8.457e-03, 9.397e-02, 4.477e-03, 5.648e-02, -1.265e-02, -3.160e-02, -2.792e-02, -1.339e-02, 1.945e-02, -5.328e-02, -8.542e-03, -5.115e-02, -7.536e-02, 7.157e-02, -1.392e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(-1.495e-02, -2.796e-02, 6.498e-03, 9.885e-03, -3.559e-02, 4.437e-03, -2.198e-03, -2.705e-02, -1.382e-02, 3.438e-02, -1.087e-03, -3.051e-02, -1.298e-02, -9.774e-02, -3.579e-02, 1.133e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(-3.571e-01, -7.298e-02, -2.803e-01, -6.764e-02, 2.847e-01, 8.493e-02, -5.099e-02, -1.153e-03, 2.817e-03, -1.218e-01, 1.167e-01, -5.312e-02, -1.405e-01, -4.119e-02, 9.518e-02, -2.422e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-1.405e-02, -6.270e-02, -7.629e-02, 6.347e-03, 2.802e-02, -1.048e-02, -1.503e-01, 4.023e-03, -5.217e-02, -1.081e-01, -2.442e-02, -1.384e-02, -8.701e-02, 2.869e-01, 3.677e-02, -1.776e-03), r5);\n\tr0 = MulAdd(s1_0_1, M4(-3.470e-03, -3.124e-04, -2.008e-02, -2.173e-01, -3.212e-03, -2.420e-03, 6.838e-02, 2.432e-02, -1.174e-02, 1.248e-02, 8.202e-03, -9.490e-02, -4.726e-02, -7.908e-03, -9.217e-02, 1.497e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(-3.406e-02, -1.067e-01, -2.864e-03, -2.495e-01, 2.841e-02, 4.168e-02, -2.094e-03, 3.688e-02, 2.627e-02, -9.073e-02, 1.774e-02, 5.246e-03, -1.900e-01, -3.701e-02, -5.310e-02, -1.445e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-7.578e-02, -4.919e-02, 8.959e-02, -2.568e-01, 3.060e-02, 4.186e-02, -2.108e-02, 1.165e-01, -5.732e-02, 1.128e-02, -1.977e-02, 1.700e-02, -1.829e-03, -1.573e-01, 1.489e-01, -9.480e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(6.323e-02, -3.129e-02, 5.355e-04, -1.145e-01, 3.783e-02, 3.877e-02, 5.321e-03, 1.643e-01, -3.642e-02, 2.707e-02, -7.913e-03, -4.245e-02, -8.343e-02, -1.782e-01, -3.951e-02, -1.457e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-2.672e-01, -3.898e-02, -1.758e-01, -1.392e-01, -1.572e-01, 1.422e-01, 2.518e-01, 3.271e-02, -1.313e-02, -1.032e-01, -1.142e-02, -1.048e-01, 3.613e-01, -5.559e-02, -7.196e-02, -3.923e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-4.031e-02, -2.952e-02, -2.423e-02, -2.307e-03, -4.380e-02, 1.975e-02, 5.496e-02, -6.187e-04, -1.084e-01, -4.507e-02, 1.164e-02, -1.703e-02, -1.402e-01, 5.449e-01, -2.633e-02, -4.009e-02), r5);\n\tr0 = MulAdd(s1_0_2, M4(-9.004e-03, -2.976e-03, 5.923e-03, -8.914e-03, -1.116e-02, 1.207e-02, 4.339e-04, 9.121e-02, -1.936e-03, -4.463e-02, -1.085e-02, -1.982e-02, -6.127e-03, -1.330e-02, 2.256e-02, 4.797e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-2.595e-02, -8.177e-03, -9.630e-03, -3.045e-02, 2.454e-03, 2.875e-02, -1.320e-02, 2.565e-03, -3.711e-03, -5.722e-02, -5.297e-03, 6.527e-02, -2.162e-02, -1.891e-02, -4.648e-03, -1.480e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.319e-03, -3.339e-03, 8.309e-03, -2.403e-02, -8.593e-03, 2.009e-02, -1.077e-02, -4.590e-02, -3.824e-02, -3.161e-03, 1.606e-02, 4.504e-02, 2.068e-02, 8.831e-03, 6.615e-02, -1.218e-01), r2);\n\tr3 = MulAdd(s1_0_2, M4(2.578e-02, -2.189e-02, 8.439e-03, 3.497e-02, 3.683e-02, 4.381e-03, 9.312e-03, -2.291e-02, -2.815e-02, 1.060e-03, -9.170e-03, -2.169e-03, -1.122e-01, -4.096e-02, -7.853e-03, -4.006e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-5.619e-03, 1.439e-01, -4.118e-02, -2.522e-02, 1.675e-01, 2.920e-02, 9.845e-02, 2.543e-02, -2.960e-02, -1.079e-01, 3.792e-02, 1.424e-01, -1.235e-01, -2.026e-01, -3.822e-02, -2.964e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(3.652e-02, -4.380e-03, -4.338e-03, -3.835e-03, 4.467e-02, -2.183e-01, -6.712e-02, -7.526e-03, -8.249e-03, -9.454e-02, -1.578e-02, -8.829e-03, 2.252e-01, 3.789e-01, -4.911e-02, -1.755e-02), r5);\n\tr0 = MulAdd(s1_1_0, M4(-5.939e-03, -6.518e-02, -2.818e-02, -2.283e-01, -2.160e-02, -4.719e-04, 3.216e-03, 2.670e-02, -1.070e-02, -1.253e-01, -4.580e-03, -9.501e-02, -5.460e-02, -2.322e-02, 3.204e-02, -1.130e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.875e-02, -1.344e-01, -7.526e-03, 1.842e-02, -9.377e-03, 6.421e-03, -2.594e-02, -3.876e-02, 1.273e-02, -1.317e-01, -6.581e-04, 5.447e-04, -2.584e-02, -2.219e-02, -6.278e-02, -8.083e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(6.808e-02, -4.306e-02, 8.267e-02, 1.019e-02, -4.441e-03, -1.566e-01, 4.141e-03, -1.490e-02, -1.303e-02, 1.062e-02, -2.377e-02, 5.802e-05, 9.744e-02, -8.960e-02, -1.155e-01, -1.322e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(-5.415e-04, -1.279e-02, -1.710e-03, -7.255e-02, 1.864e-02, -1.401e-01, -3.672e-02, -1.053e-01, -2.583e-02, 5.662e-03, -8.176e-03, -1.812e-02, 2.438e-03, -1.699e-01, -1.656e-01, 6.905e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-1.287e-01, -2.754e-01, -1.453e-01, -1.528e-01, 8.138e-02, -9.100e-02, -2.213e-01, 1.547e-02, -9.005e-02, -4.494e-02, -2.359e-01, 8.568e-02, 5.636e-01, -1.657e-01, -3.466e-01, -2.029e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.551e-01, -2.205e-01, -5.755e-02, -9.254e-03, -1.825e-02, 5.307e-02, -1.335e-01, -1.481e-02, 1.136e-02, -5.139e-02, -1.250e-02, -1.327e-03, 7.811e-02, 4.608e-01, 1.195e-01, -5.043e-02), r5);\n\tr0 = MulAdd(s1_1_1, M4(-2.611e-01, -1.161e-01, -2.253e-01, -4.277e-01, 8.401e-02, 4.142e-02, 1.617e-01, -1.604e-01, 8.941e-02, 2.228e-01, -8.634e-02, -2.795e-01, -5.294e-02, -4.539e-02, -1.256e-01, 9.286e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-9.103e-02, -5.957e-01, -2.862e-01, -1.677e-02, -1.046e-01, 8.863e-02, 1.003e-01, 9.236e-02, 3.809e-02, -3.086e-01, -2.084e-02, 1.411e-01, -1.766e-01, -5.786e-02, -7.056e-02, -8.513e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-1.704e-01, -1.372e-01, 8.901e-02, -4.797e-02, -1.074e-01, 1.227e-01, -1.626e-01, -1.812e-03, -4.730e-02, -1.842e-02, -2.725e-02, 9.594e-02, -1.430e-01, -1.365e-02, -3.213e-01, -6.430e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-1.071e-01, -1.479e-01, -2.978e-01, -2.876e-01, -1.377e-01, 1.037e-01, 1.678e-01, 1.279e-01, -8.174e-02, 4.868e-02, 2.564e-02, -1.033e-01, 4.775e-02, -3.096e-01, -8.033e-02, 4.115e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(-2.054e-01, -5.098e-01, -5.683e-01, -5.527e-01, 1.275e-01, 2.036e-01, -2.073e-01, 1.015e-01, -2.052e-02, -9.471e-02, -2.387e-01, -1.527e-01, -3.532e-01, -2.746e-01, 2.722e-01, -5.636e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-3.409e-01, -7.661e-02, -1.396e-01, -2.313e-01, -2.513e-01, 2.851e-01, 9.937e-02, 5.920e-02, -1.764e-01, -1.429e-01, -1.084e-01, 9.158e-02, -5.879e-02, 4.484e-01, 1.021e-01, -5.730e-02), r5);\n\tr0 = MulAdd(s1_1_2, M4(-1.224e-02, -4.810e-03, 5.376e-02, -1.443e-02, 1.252e-02, 2.189e-02, 8.228e-02, 3.992e-02, 4.393e-03, -1.283e-01, -2.742e-02, -1.440e-01, -1.422e-01, -3.555e-02, 4.334e-02, -1.030e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(1.644e-02, 2.401e-02, -2.070e-02, -1.806e-02, 2.617e-02, -2.652e-02, 1.232e-02, -6.519e-02, 1.303e-02, 8.758e-02, 1.018e-01, -7.649e-03, -2.862e-01, -1.578e-01, -1.568e-01, -3.527e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(2.360e-02, 1.044e-02, -1.570e-02, 5.625e-03, 1.023e-01, -1.971e-02, 2.266e-02, -1.385e-01, -4.463e-02, -6.154e-03, 1.008e-02, 3.962e-02, -1.403e-01, -1.002e-01, 2.228e-01, -2.329e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.443e-02, 2.260e-02, -3.593e-03, 2.889e-02, -2.126e-02, 2.509e-02, -1.417e-01, -9.553e-02, -1.053e-01, -1.552e-02, 4.360e-02, -4.050e-03, 3.680e-02, -9.951e-02, 1.219e-02, -1.488e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(-3.036e-02, -2.005e-01, 5.013e-02, 3.551e-02, 3.619e-02, -8.802e-02, 3.991e-02, -3.449e-02, -1.212e-01, -1.418e-01, -1.035e-01, -3.271e-01, 5.402e-03, -2.090e+00, 1.687e-01, -1.577e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(2.120e-03, 1.101e-01, 5.815e-02, -1.253e-02, -1.180e-01, -3.161e-01, -7.065e-02, 6.353e-03, -6.332e-02, -1.701e-01, -1.440e-02, 4.236e-04, -4.972e-01, 2.525e-01, -9.380e-02, -1.218e-01), r5);\n\tr0 = MulAdd(s1_2_0, M4(1.596e-02, -1.450e-01, -8.101e-02, -1.715e-02, -1.632e-02, 1.368e-02, -1.401e-01, 9.143e-02, -1.559e-03, -6.896e-04, -4.515e-02, -1.001e-02, -7.218e-02, -6.405e-03, -4.365e-02, 1.997e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.142e-02, 2.036e-02, 1.890e-02, -3.875e-04, -2.995e-02, -5.671e-03, -1.657e-02, -3.967e-03, 3.632e-04, -1.863e-02, 1.823e-03, -4.443e-03, 6.689e-03, 7.686e-03, -8.571e-02, -1.866e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-2.021e-02, 6.703e-03, -7.606e-03, -4.683e-05, 8.628e-03, -2.039e-02, 2.965e-02, 2.187e-03, -1.749e-02, -1.676e-02, 1.052e-03, -1.579e-03, -3.952e-02, -1.255e-01, -1.148e-01, -5.338e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.841e-02, 2.719e-04, 1.751e-02, -7.130e-02, -4.387e-02, -3.914e-02, -8.022e-03, -1.214e-01, -1.841e-02, -5.972e-03, 4.280e-03, -8.660e-02, 1.412e-01, -1.674e-01, -1.765e-01, 6.031e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-4.051e-01, 6.089e-02, -3.142e-02, 1.776e-02, 5.197e-01, -5.941e-02, 8.198e-02, -1.064e-02, -1.033e-01, -1.036e-01, 8.618e-02, -2.222e-01, 5.444e-01, 2.181e-01, -4.264e-02, -1.404e-03), r4);\n\tr5 = MulAdd(s1_2_0, M4(1.318e-02, -1.272e-02, 2.321e-03, 1.125e-02, -7.085e-02, 1.522e-02, -4.956e-02, -1.904e-02, -4.085e-02, 1.953e-02, 2.472e-02, 4.773e-02, 3.823e-02, 5.666e-01, -9.053e-02, -5.313e-02), r5);\n\tr0 = MulAdd(s1_2_1, M4(-3.119e-02, -5.137e-01, -2.327e-01, -1.479e-01, 1.496e-02, 9.498e-02, 1.406e-01, -3.417e-02, 5.699e-02, -3.174e-01, -5.337e-02, -2.160e-01, -4.724e-02, -4.973e-02, -5.529e-02, -4.387e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.322e-02, 8.227e-03, -3.747e-02, -3.959e-03, 6.882e-02, 1.209e-02, 1.075e-02, 5.783e-03, 2.536e-03, 1.760e-01, 1.313e-01, -8.764e-03, -1.294e-01, -2.219e-03, -5.482e-02, 8.620e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.770e-02, 2.224e-02, 3.314e-03, 5.782e-03, 6.551e-02, -6.480e-03, 2.437e-02, 4.874e-03, 1.087e-03, 5.680e-03, -5.858e-03, -8.750e-03, 6.888e-02, -3.008e-01, 2.748e-02, 6.091e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-1.162e-01, 1.976e-02, -5.793e-02, -1.294e-01, -7.496e-02, 4.431e-02, -2.078e-02, 1.367e-01, -5.640e-02, -3.337e-03, 7.938e-02, -8.319e-02, 1.016e-01, -2.177e-01, -8.400e-02, 1.184e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(7.183e-03, -1.479e-01, 3.424e-03, 1.513e-02, -9.343e-02, -5.517e-01, 3.955e-02, 1.010e-02, -2.979e-01, -1.895e-01, -1.142e-01, 1.978e-01, 4.731e-01, 4.269e-01, -3.412e-01, 3.747e-03), r4);\n\tr5 = MulAdd(s1_2_1, M4(4.125e-02, 1.404e-01, 2.378e-02, -1.850e-02, -4.293e-02, -3.890e-02, 3.384e-02, 3.034e-02, -1.537e-01, -1.292e-01, -2.788e-02, -3.332e-02, 1.746e-01, 7.112e-01, -1.982e-01, -5.876e-02), r5);\n\tr0 = MulAdd(s1_2_2, M4(-4.639e-03, 4.453e-02, 3.196e-03, -2.696e-02, -4.524e-02, -1.813e-02, -2.889e-01, 1.625e-01, 4.825e-02, -6.396e-02, -4.701e-02, -1.150e-01, -2.153e-01, -1.876e-01, -8.132e-02, 6.912e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(7.234e-03, 1.046e-02, -3.045e-03, 1.556e-03, 6.603e-05, 4.387e-03, -5.409e-02, 1.214e-03, 1.310e-02, -2.719e-01, -1.670e-02, 8.271e-03, -1.343e-01, 6.302e-03, -2.398e-01, -5.470e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-2.227e-02, 6.546e-03, 4.577e-04, -3.458e-03, -8.129e-03, -3.236e-02, 1.390e-02, 9.021e-03, -8.511e-03, -1.225e-03, 4.048e-03, -2.588e-03, -5.446e-02, -1.909e-01, 7.730e-03, -1.554e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-1.715e-02, -4.574e-03, -8.641e-03, -1.895e-04, -2.477e-02, -8.087e-02, -5.115e-02, -1.221e-01, -6.433e-02, 6.499e-03, 3.499e-02, -5.610e-02, -2.036e-01, -1.677e-01, -2.725e-01, -5.604e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-7.733e-02, 8.165e-02, -6.269e-02, 9.518e-03, 9.106e-02, -1.041e-01, -1.406e-01, 1.125e-02, -2.551e-01, -2.199e-01, -7.418e-02, -3.958e-02, 3.405e-02, 1.405e-01, -3.920e-01, -6.018e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.391e-02, -9.040e-02, 1.849e-02, -1.330e-02, 1.286e-01, 3.794e-02, -1.126e-02, -3.992e-02, -9.155e-02, -1.708e-01, -2.801e-02, 9.106e-02, -5.645e-02, 4.226e-01, -5.896e-02, -1.915e-01), r5);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(3.027e-03, 4.344e-03, -7.766e-02, -1.224e-01, -1.368e-03, -1.086e-02, 6.471e-02, -6.097e-02, 3.772e-03, -1.624e-03, -9.517e-03, 1.865e-02, 1.073e-03, 5.002e-03, 1.086e-03, 1.074e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.148e-02, 4.139e-02, 6.473e-03, 4.631e-03, 4.577e-03, -1.698e-03, 4.255e-04, -6.323e-03, -6.679e-03, 2.311e-02, 3.080e-03, 7.228e-03, 2.609e-02, 1.475e-02, -5.880e-04, -3.507e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(3.478e-02, 9.193e-02, 8.198e-02, -3.672e-03, -6.132e-02, -2.089e-03, -5.260e-04, 1.018e-02, 6.661e-02, -5.475e-02, 3.915e-02, 2.455e-03, -9.405e-02, 7.161e-02, -9.643e-02, -3.944e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-6.457e-02, 8.181e-02, 3.518e-03, -1.187e-01, -3.961e-03, 5.453e-03, 8.886e-03, 5.404e-02, -6.916e-03, -5.209e-02, -9.044e-03, -2.466e-02, 2.293e-02, 5.858e-02, -1.561e-03, -7.408e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(-8.402e-01, -1.803e-01, -7.863e-02, 6.121e-02, -1.259e-01, 5.565e-02, 1.620e-01, 7.271e-03, -3.763e-01, -1.102e-01, 4.613e-02, 2.252e-02, -1.998e-01, 2.976e-02, -2.470e-02, 1.216e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-1.987e-01, 4.899e-02, -9.618e-02, 6.469e-03, 2.324e-02, -1.562e-01, 1.126e-01, -2.584e-03, 9.041e-02, -1.680e-01, -7.718e-02, 4.318e-03, -4.348e-02, -4.263e-02, 1.175e-01, 1.881e-03), r5);\n\tr0 = MulAdd(s0_0_1, M4(5.014e-03, -3.226e-03, -1.255e-03, -7.495e-02, 5.480e-03, 1.503e-02, -4.081e-02, 9.136e-02, 3.911e-03, -1.910e-03, -7.982e-03, -3.476e-02, -1.401e-02, -1.120e-03, -1.517e-02, -4.168e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(4.357e-02, -1.636e-01, -7.716e-03, 5.493e-02, 1.207e-03, 2.796e-02, -5.076e-04, -9.131e-02, -7.000e-03, 1.125e-01, 8.969e-03, 1.195e-01, 8.711e-02, 1.698e-02, -1.278e-02, -1.661e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(-6.911e-02, -3.367e-02, -1.532e-01, 1.701e-01, 8.058e-02, 5.465e-02, 1.106e-01, -8.360e-02, -6.083e-02, -8.508e-04, -7.438e-02, 1.180e-01, -3.895e-02, 3.549e-02, -1.735e-02, -1.059e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(4.420e-02, 7.656e-02, 3.607e-02, 6.653e-02, 8.310e-02, 3.387e-02, -4.063e-03, -7.987e-02, -9.497e-02, -2.231e-02, -8.054e-03, 4.492e-02, 2.037e-02, 1.218e-01, 1.524e-02, 1.421e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-2.430e-01, -4.760e-01, 1.408e-01, -1.607e-01, 2.918e-01, -2.574e-02, 1.226e-01, 3.895e-02, -1.997e-01, 9.785e-02, -5.351e-02, 1.127e-01, -4.357e-01, -5.544e-01, 1.798e-01, 1.498e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-2.414e-01, 6.897e-02, 2.212e-01, -4.706e-03, 3.649e-02, -1.730e-01, -3.725e-02, 6.327e-03, 1.520e-02, -1.560e-01, -9.150e-02, 2.127e-03, -1.849e-01, -3.845e-02, 2.675e-02, -8.622e-03), r5);\n\tr0 = MulAdd(s0_0_2, M4(-1.035e-02, 6.187e-04, 3.842e-02, 2.903e-03, -7.680e-03, -5.846e-04, -1.344e-02, -6.597e-02, -7.258e-03, -2.337e-04, -3.964e-03, 7.934e-02, -3.558e-04, 9.381e-03, 3.117e-02, 4.551e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-5.121e-03, 5.526e-02, -1.145e-02, -1.038e-01, 5.543e-03, -7.038e-03, -5.556e-03, 2.416e-02, -3.951e-02, 2.933e-03, -6.847e-03, -1.237e-02, 2.326e-02, 1.961e-02, -1.426e-03, -1.313e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(9.256e-02, -3.355e-02, 3.957e-02, -1.270e-01, -5.736e-02, 2.472e-02, -1.945e-02, 3.306e-02, 1.568e-03, -5.006e-02, -1.103e-02, -2.623e-02, 1.563e-02, -3.876e-03, -1.073e-02, -3.162e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(1.614e-02, 1.239e-03, 3.237e-02, -5.420e-02, -1.863e-02, -1.842e-04, -2.305e-02, 5.229e-03, -3.514e-02, -4.312e-02, -2.614e-02, -1.248e-02, -3.386e-03, 1.157e-02, -1.292e-02, -3.046e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(1.764e-01, -1.357e-01, -1.004e-01, 4.773e-02, -3.133e-01, 1.793e-01, 3.258e-02, -1.403e-02, 1.263e-01, -7.516e-02, -4.136e-03, -8.287e-03, 8.505e-02, -9.124e-03, 1.838e-02, 2.068e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-6.174e-02, 7.763e-02, 7.751e-03, -6.764e-03, 3.871e-02, -5.328e-02, 5.893e-03, -2.510e-03, -3.073e-02, -2.588e-01, -6.485e-02, -5.056e-03, -2.013e-02, -8.371e-02, 1.873e-02, 2.842e-04), r5);\n\tr0 = MulAdd(s0_1_0, M4(-2.144e-02, 4.605e-02, -1.091e-02, -1.184e-01, 3.521e-04, 2.479e-03, 6.441e-02, -5.155e-02, 4.843e-03, 1.611e-02, -9.729e-02, 1.099e-01, -4.384e-02, 1.232e-02, 2.563e-02, -2.372e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.315e-02, -8.415e-02, -2.960e-02, -2.147e-02, 9.850e-03, 3.992e-02, 3.961e-03, 2.813e-02, 6.228e-02, 1.794e-02, 4.539e-03, -2.484e-02, -7.237e-02, -5.464e-02, -5.172e-02, -1.986e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-7.680e-03, 1.199e-01, 2.680e-01, -3.017e-02, 6.276e-02, 1.141e-01, -9.085e-02, 2.668e-02, 1.620e-03, 1.859e-02, -1.731e-02, -1.034e-02, -1.343e-01, 2.773e-02, -5.409e-02, -7.366e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(3.062e-02, 8.726e-02, -2.342e-02, -9.196e-02, 5.425e-03, 1.084e-01, 1.992e-02, 1.649e-01, 1.677e-02, 2.887e-02, 5.339e-03, -2.548e-02, 1.205e-02, 3.562e-02, -3.190e-02, 4.640e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-5.144e-01, 8.976e-02, -5.828e-01, -1.035e-01, 1.333e-01, 1.106e-01, 2.642e-02, 4.221e-02, -1.020e+00, 1.387e-01, -3.510e-01, 2.289e-02, -4.855e+00, -1.357e-01, -3.311e-01, -5.311e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-3.562e-02, 7.717e-03, 2.022e-01, -2.751e-02, 4.623e-02, -9.400e-02, -3.216e-02, -1.842e-03, -2.244e-01, -7.480e-02, 4.096e-02, 4.088e-03, -4.918e-03, -6.338e-03, 3.713e-02, -4.050e-02), r5);\n\tr0 = MulAdd(s0_1_1, M4(3.284e-03, -1.499e-01, 1.417e-01, 2.680e-02, -1.014e-01, 1.440e-02, -2.751e-01, 4.772e-01, 1.577e-01, 9.724e-02, 7.705e-02, -9.480e-01, -1.248e-01, 1.871e-02, -1.666e-01, -6.442e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-2.495e-01, 2.330e-02, -7.129e-03, -3.980e-02, 1.142e-01, 2.344e-02, -1.155e-01, 7.924e-02, -3.880e-01, -4.996e-01, 1.782e-01, 5.090e-02, -1.923e-01, -3.369e-01, -1.444e-01, -1.331e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-3.850e-02, 6.074e-01, 1.284e-01, 1.438e-01, 1.665e-01, -2.923e-01, -2.734e-02, 1.690e-01, -3.646e-01, -3.891e-01, -1.997e-01, 2.997e-02, -4.572e-01, -1.815e-01, -4.262e-02, -1.072e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-1.657e-02, 3.018e-01, 3.881e-01, 3.974e-01, -2.675e-01, -2.833e-01, -9.015e-02, -5.183e-01, -2.757e-04, -4.077e-01, 1.411e-01, -4.412e-01, -3.454e-01, -2.330e-01, -1.946e-01, -4.286e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(1.346e-01, 4.720e-01, -4.270e-01, 3.301e-02, 3.665e-02, 2.470e-01, -1.256e-01, 2.582e-02, -4.892e-01, -4.196e-01, -6.764e-01, -4.522e-01, 1.714e-01, -8.369e-01, -1.027e+00, -3.444e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(6.313e-01, 1.202e-01, 2.587e-01, 3.280e-03, -2.695e-01, 4.117e-02, -1.978e-01, -8.113e-02, -6.679e-01, 1.152e-01, -2.205e-01, 1.260e-01, -2.340e-01, -5.176e-01, -6.127e-02, -1.082e-01), r5);\n\tr0 = MulAdd(s0_1_2, M4(-7.539e-02, 3.800e-02, -9.741e-02, 1.200e-01, 2.304e-02, -1.234e-02, 4.353e-02, -1.588e-01, 1.629e-02, 8.306e-04, -5.182e-04, -1.414e-01, -3.553e-02, 1.432e-02, -3.449e-02, 6.956e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-2.033e-02, 4.999e-02, -7.495e-02, 4.905e-02, -5.611e-02, -8.448e-02, 2.408e-02, 6.042e-03, 3.528e-02, -2.015e-02, 9.963e-03, -7.670e-03, -6.678e-03, -4.222e-02, -4.444e-02, -7.719e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(-9.631e-02, -2.220e-02, 6.469e-02, 2.557e-02, 6.794e-03, -3.674e-03, -3.884e-02, -3.183e-02, 4.655e-02, 3.951e-02, 2.912e-02, -9.378e-05, -1.087e-03, -3.722e-02, 7.388e-03, -3.815e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.850e-01, -1.704e-01, -2.007e-01, -1.989e-01, 7.541e-02, 4.371e-02, 5.485e-02, 2.661e-01, 2.627e-02, 2.865e-02, 4.407e-02, 5.877e-02, -4.553e-02, -5.509e-02, -4.457e-02, -1.092e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(1.527e-01, 1.253e-01, -2.726e-01, 6.602e-02, -1.697e-01, -2.390e-01, 1.133e-01, -5.676e-02, 1.251e-02, -5.178e-02, 2.380e-03, -5.130e-03, 3.804e-02, -1.854e-01, -1.172e-02, -3.765e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-1.636e-01, 5.361e-02, -5.216e-02, -6.832e-02, 1.277e-01, -2.609e-01, 5.404e-02, 2.263e-02, -1.819e-02, -3.113e-01, -2.822e-02, 1.330e-02, -6.222e-02, -1.498e-01, -3.033e-02, -2.298e-02), r5);\n\tr0 = MulAdd(s0_2_0, M4(-2.777e-02, -7.119e-02, -2.534e-02, -6.747e-02, 4.797e-02, 5.878e-02, 2.200e-02, -6.894e-02, -8.766e-03, 3.697e-02, 1.246e-01, -1.262e-02, -2.321e-02, -5.581e-02, 4.113e-02, -9.001e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(6.398e-03, 9.669e-03, -3.195e-02, 8.729e-03, 5.111e-02, -1.709e-02, 5.520e-02, 1.325e-02, -1.931e-02, -7.734e-03, -1.176e-02, 2.417e-03, -3.032e-02, 8.987e-03, -2.293e-02, 1.766e-04), r1);\n\tr2 = MulAdd(s0_2_0, M4(-3.989e-03, -2.777e-02, -2.408e-02, 1.526e-03, 2.166e-03, 7.375e-02, -2.505e-02, 4.823e-03, -1.892e-02, -1.902e-02, -4.495e-04, 8.515e-04, 6.787e-03, 3.291e-02, -1.586e-02, -1.209e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(1.887e-02, 1.731e-02, -3.024e-02, 6.630e-02, 1.866e-02, 5.658e-02, 4.551e-02, -4.631e-02, -1.793e-02, -1.849e-02, -6.077e-03, -1.202e-02, 4.608e-03, 3.480e-02, -2.183e-02, 2.912e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-5.298e-01, -1.492e-01, 1.405e-01, -2.413e-03, -1.630e-01, -1.863e-01, -4.472e-02, -2.305e-02, -3.055e-01, -1.355e-01, 8.231e-03, -2.064e-03, -8.677e-01, -9.706e-01, 6.245e-02, 2.074e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(8.338e-02, -9.539e-02, 5.016e-03, -1.022e-02, -6.171e-02, -7.627e-02, 3.827e-02, 3.429e-02, 5.338e-03, -2.147e-01, -7.917e-03, -1.102e-02, -1.066e-02, -6.753e-02, 7.606e-03, -1.728e-02), r5);\n\tr0 = MulAdd(s0_2_1, M4(1.325e-01, 9.910e-03, 1.894e-01, -8.922e-02, 9.650e-02, 3.441e-02, 7.108e-02, 2.351e-01, 4.652e-02, -4.658e-01, -5.706e-01, -1.963e-01, -1.055e-01, -3.565e-01, -2.959e-01, -7.649e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.004e-01, 2.083e-02, 1.480e-01, -1.264e-03, 1.451e-02, 1.727e-02, 1.118e-01, -3.677e-03, -4.791e-02, -2.070e-02, 4.997e-02, 2.947e-03, -9.266e-02, 4.564e-03, -1.248e-01, 6.221e-05), r1);\n\tr2 = MulAdd(s0_2_1, M4(-4.770e-02, 2.488e-02, -3.188e-02, 5.601e-03, 4.046e-02, -1.686e-03, 1.234e-02, -1.027e-02, 3.473e-02, -1.904e-02, -4.294e-02, 3.231e-03, -1.322e-02, -1.076e-02, -1.411e-02, 1.289e-03), r2);\n\tr3 = MulAdd(s0_2_1, M4(-1.903e-02, -2.915e-02, 1.130e-01, -1.480e-02, -6.550e-02, 9.155e-02, 1.135e-01, -8.495e-03, 4.553e-02, -4.286e-02, 2.755e-02, -1.735e-01, 6.212e-02, -6.914e-02, -7.075e-02, -7.782e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(1.264e-01, -2.040e-02, 1.965e-01, -9.712e-04, 1.020e-01, -3.556e-02, 2.597e-02, 3.438e-03, -3.074e-02, -3.834e-01, 4.956e-02, -5.342e-03, 1.401e-01, -8.262e-01, 1.056e-01, -7.219e-04), r4);\n\tr5 = MulAdd(s0_2_1, M4(-1.475e-01, 6.326e-02, 1.229e-02, 6.960e-02, -5.143e-02, -1.636e-01, 1.801e-02, 7.950e-02, -4.170e-02, -1.119e-01, 1.203e-02, 3.775e-02, 5.115e-02, 3.097e-02, -4.042e-02, -8.617e-02), r5);\n\tr0 = MulAdd(s0_2_2, M4(8.229e-02, 3.013e-02, -7.702e-02, -7.777e-02, -2.603e-02, -7.778e-02, 1.068e-01, -2.885e-02, -1.273e-02, 6.068e-03, 6.460e-02, 1.746e-02, 9.956e-03, -4.585e-02, -1.074e-01, -7.473e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.260e-03, 9.348e-03, 1.039e-01, -1.572e-02, -7.303e-03, 2.007e-02, -1.695e-02, -7.286e-03, 6.567e-03, -7.073e-03, -1.914e-02, 9.203e-04, -6.649e-03, -3.921e-03, 1.462e-02, -6.122e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.589e-02, 3.834e-02, -1.147e-02, -2.539e-03, -4.562e-02, -1.201e-02, -7.261e-03, 2.500e-02, -1.347e-02, -2.045e-02, -3.829e-03, -9.735e-03, -1.212e-02, 4.716e-03, 2.248e-02, 3.690e-03), r2);\n\tr3 = MulAdd(s0_2_2, M4(4.480e-02, -3.318e-03, 1.688e-01, -2.427e-02, 1.077e-02, -1.331e-02, -1.491e-02, 6.715e-03, -3.471e-02, 4.369e-03, -1.458e-02, 9.555e-03, -2.643e-02, -1.457e-02, 1.328e-02, -1.894e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(-6.508e-02, -4.186e-02, 1.295e-02, 1.299e-03, 1.498e-03, 6.084e-03, -1.392e-02, 1.424e-02, -8.034e-02, 9.945e-02, -2.286e-02, -3.167e-03, -9.093e-02, -4.223e-01, 6.507e-03, -2.351e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(-1.651e-01, 3.227e-02, 6.227e-03, 5.605e-02, 1.916e-01, -1.951e-01, -4.709e-03, -1.865e-02, -2.139e-02, -1.222e-01, 1.106e-03, -1.072e-02, -3.564e-02, -1.726e-01, -7.440e-03, 5.678e-03), r5);\n\tr0 = MulAdd(s1_0_0, M4(-1.358e-03, 2.741e-03, 2.411e-02, 5.994e-02, 1.306e-02, 1.205e-02, -1.259e-03, -5.275e-03, -1.379e-03, 2.177e-03, 9.750e-03, 1.779e-02, -2.228e-02, -1.930e-02, 4.778e-03, 1.817e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-6.985e-03, 1.863e-02, -2.579e-03, -1.458e-02, -1.983e-02, 3.720e-02, -1.186e-02, 1.520e-03, 2.831e-03, 5.290e-03, -2.762e-04, 1.344e-03, -5.498e-03, 7.314e-03, 4.492e-03, -1.470e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.483e-02, -2.603e-02, 1.583e-02, -6.765e-03, 4.192e-02, -4.715e-02, 2.058e-02, -8.127e-03, 9.164e-03, 3.091e-02, -9.364e-03, 5.030e-03, 2.662e-02, -3.880e-02, -1.266e-02, -1.583e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(4.463e-02, -2.629e-02, 4.768e-04, 4.744e-02, -5.180e-03, -3.848e-02, -3.995e-03, -1.699e-02, 1.582e-02, 2.460e-02, 6.382e-03, 3.187e-03, -1.770e-02, -4.726e-02, -5.371e-03, 1.055e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(3.612e-01, 2.803e-02, -6.326e-02, 2.425e-02, 9.011e-03, -8.535e-02, 2.092e-02, 3.724e-02, 2.297e-01, 5.753e-02, 1.462e-01, 6.101e-03, 1.039e-01, -4.456e-02, 5.187e-02, -1.256e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(2.668e-02, -3.963e-02, -1.551e-03, -3.943e-03, 1.355e-02, -2.367e-02, -4.724e-02, 6.089e-03, 5.303e-02, -2.908e-02, 1.838e-02, -1.705e-03, 2.900e-02, -4.556e-02, -3.896e-02, -1.025e-02), r5);\n\tr0 = MulAdd(s1_0_1, M4(6.804e-03, 5.854e-04, 1.476e-03, -5.189e-02, -2.812e-02, 2.188e-02, 1.479e-03, 2.482e-02, 5.109e-03, 5.096e-03, 1.638e-02, 1.102e-01, 1.519e-02, -1.762e-02, 1.891e-02, 3.122e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-4.488e-02, 1.222e-02, 9.445e-03, -4.192e-02, -1.989e-02, 1.997e-01, 9.322e-03, 3.036e-02, -3.188e-02, 3.161e-02, 2.060e-03, -4.054e-02, -3.113e-02, -1.061e-01, -1.403e-02, 3.260e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(3.500e-03, 5.779e-03, 7.417e-02, -6.412e-02, 1.784e-02, -2.141e-02, 3.701e-02, 3.502e-04, 2.913e-02, -5.487e-02, 1.481e-02, -1.418e-02, -1.218e-02, 1.624e-02, 1.970e-02, 1.935e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-3.724e-02, -6.167e-02, -8.960e-03, -7.747e-03, -2.920e-02, -2.598e-02, -1.199e-02, -3.260e-02, 5.446e-03, -4.392e-02, 5.142e-03, 4.410e-02, -2.010e-02, -2.678e-02, -2.639e-02, -2.080e-03), r3);\n\tr4 = MulAdd(s1_0_1, M4(-7.375e-02, 2.364e-01, 2.053e-02, 2.274e-02, 6.013e-02, -5.326e-02, -1.087e-01, -1.864e-01, 6.658e-01, 4.877e-02, -1.225e-01, 1.100e-02, 1.634e-01, -8.378e-03, -8.358e-02, 2.842e-01), r4);\n\tr5 = MulAdd(s1_0_1, M4(3.075e-01, -6.104e-02, -8.043e-02, 4.961e-03, 9.204e-02, -1.043e-01, -6.568e-02, 4.002e-03, 9.156e-02, -6.653e-02, -8.353e-02, 4.751e-03, 1.243e-02, -8.115e-02, -8.728e-03, -1.511e-03), r5);\n\tr0 = MulAdd(s1_0_2, M4(-6.755e-03, -4.435e-04, -7.659e-03, 1.197e-01, 4.163e-02, 8.797e-02, -1.864e-02, -2.037e-02, -6.138e-03, -3.022e-03, 5.799e-02, 8.842e-02, -1.091e-02, -9.644e-02, -9.461e-03, 8.222e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-3.900e-02, -4.799e-03, -7.898e-03, 4.236e-02, 2.292e-02, -1.882e-01, 1.352e-02, -5.916e-02, -3.450e-02, -4.597e-02, -1.869e-03, 1.096e-01, -1.246e-02, -4.751e-02, 2.281e-03, 1.090e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(2.187e-02, -2.672e-02, 4.178e-02, 3.802e-02, -3.310e-02, 3.041e-03, -4.429e-02, 1.923e-02, 5.251e-02, -7.537e-03, -9.640e-03, 1.319e-01, -2.195e-03, -5.413e-03, -1.439e-02, 7.590e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(6.457e-03, -4.168e-02, -2.260e-02, 6.663e-02, -7.916e-03, 2.012e-02, 1.617e-02, 2.789e-02, -4.898e-02, -8.933e-02, -1.031e-02, 1.978e-01, -1.322e-02, -8.893e-03, 7.466e-04, 7.763e-03), r3);\n\tr4 = MulAdd(s1_0_2, M4(1.831e-01, 6.230e-02, -3.402e-02, -2.232e-02, 5.518e-03, -4.592e-03, -7.580e-02, -4.149e-01, -2.049e-01, 1.110e-01, 1.897e-02, -5.418e-02, 1.386e-02, 4.675e-02, -3.451e-02, 2.014e-01), r4);\n\tr5 = MulAdd(s1_0_2, M4(-1.084e-02, -7.162e-02, -7.951e-03, -2.101e-03, -6.065e-02, -3.497e-03, 1.674e-02, 3.807e-02, 1.345e-01, -2.251e-02, 7.588e-02, -3.896e-03, 2.222e-02, 6.422e-03, -2.432e-02, -2.063e-02), r5);\n\tr0 = MulAdd(s1_1_0, M4(-4.233e-04, 4.334e-02, -3.405e-02, 2.091e-01, -1.132e-02, -3.554e-02, -2.733e-02, 2.702e-02, 6.711e-03, 4.736e-04, 7.300e-03, 8.250e-03, 2.192e-02, 4.099e-02, 2.118e-02, 8.467e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.485e-02, 4.930e-02, 1.271e-03, -4.573e-02, -3.286e-03, 6.274e-02, 2.191e-02, 4.700e-02, -1.729e-02, -5.221e-03, 7.275e-03, 2.023e-02, 1.560e-02, -1.692e-01, -7.173e-03, -3.425e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.769e-02, 9.958e-04, -2.541e-02, -4.262e-02, -5.334e-02, -1.248e-02, -6.175e-02, 2.872e-02, -4.735e-02, 3.885e-02, -2.659e-02, 1.806e-02, -3.670e-02, -1.784e-02, -6.421e-02, -1.053e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-4.959e-02, -1.844e-02, 5.552e-03, -1.078e-01, 1.908e-02, -2.526e-02, -4.460e-03, -6.038e-02, 1.250e-02, 4.840e-02, 1.105e-02, 1.116e-01, 4.951e-03, -2.648e-02, -6.258e-03, -3.767e-03), r3);\n\tr4 = MulAdd(s1_1_0, M4(4.032e-01, -5.787e-02, 4.595e-01, 5.473e-02, -1.130e-01, 5.769e-02, 1.714e-01, -1.648e-03, 5.462e-02, 2.659e-02, -2.602e-01, -8.036e-03, -5.748e-02, 3.506e-02, 1.224e-01, -8.423e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(5.821e-02, -1.947e-02, -1.402e-01, 3.165e-03, 4.465e-02, 3.961e-02, -2.180e-02, 1.149e-02, 1.354e-02, -2.483e-02, 8.702e-02, 6.434e-03, 8.427e-02, 4.518e-02, 1.059e-02, -2.167e-02), r5);\n\tr0 = MulAdd(s1_1_1, M4(-5.152e-03, 1.313e-05, 7.583e-02, -3.787e-01, -1.696e-01, -5.634e-02, 8.863e-02, 1.057e-01, -1.398e-02, 2.152e-02, -4.734e-02, 2.521e-01, 2.634e-01, 1.822e-01, 2.522e-02, 3.076e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-4.606e-03, -2.347e-01, -3.873e-03, 1.214e-02, -1.285e-02, 4.053e-01, 1.401e-01, 3.357e-02, 6.519e-02, -5.408e-02, -1.600e-02, -2.487e-02, 5.847e-02, 2.609e-01, -4.697e-02, -1.886e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.002e-01, 1.930e-02, -3.440e-01, 7.061e-02, -6.529e-02, 1.232e-01, -1.216e-01, 6.080e-02, 2.867e-01, -1.070e-01, -4.684e-02, -4.141e-02, -4.230e-03, 1.168e-01, -1.632e-01, 4.511e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(1.796e-01, -4.256e-02, -2.909e-02, 1.442e-01, 9.741e-02, 7.872e-02, 3.964e-02, 2.347e-01, 2.428e-02, -1.856e-01, -1.563e-03, -7.300e-02, 5.577e-02, 1.520e-01, 5.285e-02, 1.593e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(-6.685e-02, -4.593e-02, 1.221e+00, -2.646e-01, 1.751e-01, 3.329e-01, 2.370e-01, 4.328e-01, -5.570e-01, -4.225e-01, 2.913e-01, -6.487e-02, 2.376e-01, 1.137e-01, 1.525e-01, 2.104e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(1.128e-01, 1.604e-01, 2.292e-01, -1.591e-02, 9.267e-02, 3.178e-02, 2.322e-01, 6.372e-02, 2.015e-01, -4.095e-01, -1.117e-01, -1.634e-02, 2.897e-03, -6.003e-02, 1.029e-01, 6.161e-04), r5);\n\tr0 = MulAdd(s1_1_2, M4(7.202e-02, 7.460e-04, 7.500e-03, 1.613e-01, 1.548e-01, 4.116e-03, 4.047e-02, -3.959e-02, 1.030e-01, -3.519e-02, 1.802e-01, 2.255e-02, -1.519e-01, -2.351e-01, -1.315e-02, -7.742e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(5.810e-02, 7.691e-02, 7.849e-02, 5.813e-02, -7.372e-03, -2.447e-01, -1.577e-01, -8.648e-02, -1.841e-01, -4.313e-02, 1.220e-01, -2.075e-01, -7.117e-03, 1.968e-01, 1.812e-01, -5.678e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(2.473e-02, 1.424e-01, 6.186e-02, 1.583e-02, 4.322e-02, -3.850e-02, 6.201e-02, -1.028e-01, -5.616e-02, -1.615e-01, 4.803e-03, 1.827e-01, -2.085e-03, -1.805e-02, 1.746e-02, -1.119e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(1.175e-01, 6.326e-02, 6.955e-02, 4.239e-03, -2.571e-02, -1.660e-02, 2.802e-02, -1.010e-01, 2.278e-01, 2.052e-02, 2.902e-01, 1.095e-01, -5.953e-02, -3.419e-02, 4.757e-02, -8.815e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-5.084e-02, 2.395e-01, 8.144e-03, 8.155e-02, -8.453e-02, 1.014e-02, 3.486e-03, 1.013e-01, 3.798e-01, -4.050e-02, -3.271e-02, -5.899e-02, -8.635e-02, -3.123e-02, -2.453e-02, -1.753e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(5.486e-02, -7.875e-02, -5.564e-02, 5.851e-02, -4.092e-02, 6.864e-02, -4.553e-02, 1.519e-01, -3.168e-01, 2.016e-01, -3.826e-01, 8.938e-02, 4.298e-03, 9.717e-02, -2.527e-02, -1.431e-01), r5);\n\tr0 = MulAdd(s1_2_0, M4(-1.008e-02, 3.772e-02, -3.795e-02, 1.367e-01, 4.176e-02, -3.395e-01, -2.219e-02, -6.386e-02, 3.639e-03, -1.034e-02, 3.887e-02, -6.689e-02, -3.747e-02, 2.666e-01, 1.442e-02, 6.730e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-6.666e-02, 1.318e-02, -1.235e-02, -8.070e-03, 1.125e-02, -5.375e-02, 3.430e-02, 1.182e-02, -2.640e-03, 1.273e-02, 1.965e-03, 7.972e-03, -6.310e-03, 2.292e-02, -2.858e-02, 5.766e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-2.797e-03, 7.117e-02, 5.584e-02, 2.771e-04, 1.219e-02, -2.837e-02, -1.399e-02, 6.252e-03, -2.020e-03, -8.150e-03, 4.436e-03, 7.747e-03, 1.004e-02, -3.164e-03, -6.101e-03, 5.107e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(6.013e-02, 5.187e-03, -5.586e-03, 5.851e-02, -5.328e-02, 9.366e-03, 2.400e-02, -1.631e-02, -1.507e-03, 1.064e-02, 7.565e-03, -3.324e-02, -1.610e-02, 3.171e-02, -1.031e-02, 2.009e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(3.030e-01, 1.040e-01, -2.179e-01, 4.332e-03, 8.303e-02, -1.715e-02, 2.559e-02, 2.803e-01, 2.651e-01, -7.421e-02, 1.614e-01, 9.672e-03, 1.016e-01, 2.364e-02, 1.241e-01, -3.057e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(6.493e-02, 1.415e-02, 3.796e-02, -2.935e-02, -5.094e-02, -9.110e-02, -4.132e-02, -5.165e-02, -6.612e-02, 6.556e-03, 2.738e-02, 6.370e-03, 4.155e-02, -8.394e-03, 1.102e-02, 6.645e-02), r5);\n\tr0 = MulAdd(s1_2_1, M4(1.169e-01, -2.235e-01, 1.701e-01, -1.089e-01, 1.106e-01, 5.488e-01, 1.065e-01, 3.979e-02, -3.453e-02, -9.205e-02, 8.329e-03, 3.351e-01, -7.983e-02, 4.981e-02, 1.082e-01, -5.505e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.868e-01, 1.291e-02, 1.431e-01, -3.585e-02, -3.102e-02, -4.625e-01, -9.512e-03, 2.977e-02, 4.500e-02, 6.042e-03, -3.321e-02, 6.329e-03, -6.325e-02, 4.254e-01, 3.950e-02, -2.252e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-2.763e-02, 4.326e-01, 2.469e-01, 1.481e-02, 3.238e-02, 3.234e-03, 5.760e-02, 9.259e-04, -4.011e-02, -6.233e-02, -4.684e-03, 1.164e-02, 1.915e-02, 2.882e-02, 3.587e-02, -1.851e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(4.120e-01, 2.153e-01, 2.260e-01, -4.743e-02, 3.537e-02, -1.054e-02, 2.698e-02, 1.212e-01, -1.774e-02, -9.286e-03, -4.129e-02, 7.006e-02, 2.330e-02, -7.260e-03, 3.923e-02, 5.840e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-2.544e-01, -7.567e-01, 2.119e-01, 6.630e-03, 2.271e-01, -7.089e-02, -1.318e-01, 1.529e-02, -7.330e-01, 2.602e-02, 1.948e-01, 3.455e-03, 3.451e-02, 1.291e-02, -2.005e-01, -3.709e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(3.290e-01, -2.637e-02, -1.664e-01, 6.719e-02, -4.726e-02, -2.998e-02, -6.327e-02, -1.909e-01, -1.554e-01, 4.755e-02, 2.130e-02, -1.849e-02, -1.126e-02, -5.530e-02, -2.000e-02, 1.935e-01), r5);\n\tr0 = MulAdd(s1_2_2, M4(1.243e-01, 7.886e-02, 2.120e-02, -1.136e-01, 2.880e-02, 2.764e-01, -1.953e-01, -7.701e-02, -8.784e-02, -4.325e-02, -1.496e-01, 1.292e-01, -1.304e-01, -3.580e-01, -2.398e-01, -7.870e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-3.955e-02, 1.998e-02, 1.539e-01, 6.581e-03, -2.060e-02, -1.008e-01, -1.353e-01, -1.362e-02, -7.680e-02, 1.205e-02, -1.013e-01, 1.128e-02, -3.381e-02, 6.172e-02, 1.825e-02, -9.624e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(-7.498e-02, 1.136e-01, 6.588e-03, 9.797e-03, -5.250e-02, -2.782e-02, 1.808e-02, 3.509e-03, 3.291e-02, 6.517e-02, 2.191e-03, -3.612e-02, -3.978e-02, 2.368e-04, 3.386e-02, 4.401e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(1.956e-01, -7.840e-03, 1.860e-01, 1.687e-02, -1.786e-02, -5.716e-02, -9.839e-02, -1.434e-01, 1.537e-01, -1.425e-01, 4.815e-02, 7.893e-03, -3.004e-02, -6.182e-02, -1.744e-02, -1.681e-01), r3);\n\tr4 = MulAdd(s1_2_2, M4(-2.136e-01, 7.458e-02, 3.107e-02, 1.048e-02, -1.150e-01, -2.043e-02, -1.041e-01, -3.184e-02, 2.038e-01, -2.582e-01, -2.832e-01, 8.051e-03, -1.863e-01, -1.099e-01, -9.934e-02, 9.483e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.698e-01, 6.341e-02, 9.736e-03, 8.132e-02, -4.668e-02, -8.094e-03, -5.123e-03, -6.764e-02, 2.900e-01, -1.447e-01, 6.356e-03, -9.986e-02, 9.152e-03, -9.422e-02, -8.740e-03, -2.083e-02), r5);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.267e-02, -1.047e-02, 2.653e-02, -8.543e-02, 5.392e-03, -2.465e-03, -2.589e-02, -5.483e-02, -1.545e-02, 6.342e-04, 5.115e-02, 7.742e-02, 7.801e-04, 4.252e-03, -7.284e-04, 2.849e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-3.125e-02, 3.014e-02, 1.843e-02, 2.714e-03, 1.083e-02, -6.927e-03, 2.150e-03, 1.194e-02, 7.053e-04, 4.989e-02, -1.975e-02, -2.911e-02, -7.832e-03, -4.230e-02, -7.191e-04, -2.774e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(4.656e-03, -6.570e-02, 2.904e-02, -9.731e-03, -2.264e-02, 7.474e-03, -8.837e-05, 2.219e-03, 2.928e-03, -1.050e-02, 8.104e-02, -1.453e-03, 3.841e-02, 3.357e-02, 2.231e-02, -3.424e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-1.745e-02, -9.639e-02, -1.095e-03, 7.205e-02, -3.005e-02, 5.697e-03, -5.572e-03, -5.004e-02, -8.432e-03, -1.808e-02, -3.937e-03, 1.067e-01, -2.384e-02, 1.068e-02, 7.062e-04, 4.959e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(6.035e-02, 2.762e-01, -2.949e-01, 2.346e-02, -2.289e-01, -3.904e-02, -8.573e-02, -1.085e-02, -2.406e-01, -2.529e-01, -1.102e-01, 5.320e-02, -1.938e-01, -2.789e-02, -8.840e-04, -2.184e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-2.983e-02, -8.132e-03, -1.841e-01, 8.859e-03, -1.075e-01, -7.974e-02, -7.551e-03, 5.348e-03, 6.981e-02, -2.790e-02, 1.171e-01, -1.439e-02, 2.203e-02, 7.611e-02, 8.723e-03, -3.298e-04), r5);\n\tr0 = MulAdd(s0_0_1, M4(-1.069e-02, 7.028e-03, -1.145e-02, 1.156e-01, 2.938e-03, -2.888e-03, -4.286e-02, -3.018e-02, 1.999e-02, 8.665e-03, -2.177e-02, -6.911e-02, 8.087e-03, 2.300e-03, 1.089e-02, -4.575e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-5.114e-02, 2.300e-01, -1.661e-02, 1.161e-01, 6.325e-02, -7.983e-02, 8.006e-03, 2.061e-04, 6.617e-02, 4.912e-02, 2.754e-02, -5.396e-02, -1.767e-02, -4.051e-02, 6.277e-03, -2.026e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(8.262e-02, 2.739e-02, 2.720e-01, 1.797e-02, -3.041e-02, 1.336e-02, -3.841e-02, -3.708e-05, -1.851e-01, 2.802e-02, -6.108e-03, -5.092e-02, -1.728e-02, 2.927e-02, -5.443e-03, 3.309e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-1.064e-01, -1.234e-01, -6.525e-02, -1.275e-01, 1.038e-02, 9.305e-02, 7.752e-03, -1.043e-01, 1.244e-01, 1.058e-01, 9.328e-03, -4.501e-02, 3.804e-02, 2.238e-04, 1.411e-02, 5.260e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(4.052e-01, 3.173e-01, -3.801e-01, 2.300e-01, 2.190e-01, -1.577e-01, 2.384e-05, -8.271e-02, -1.777e-01, -3.311e-01, 1.976e-01, 5.676e-02, -8.082e-02, 4.106e-02, 8.238e-02, -4.331e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-1.183e-01, -8.280e-02, -9.209e-02, 3.713e-03, -2.419e-01, -2.179e-03, -5.951e-03, 1.357e-03, -3.683e-02, -9.245e-02, -6.162e-02, 1.108e-02, 5.728e-03, 1.348e-01, -1.675e-03, 5.730e-03), r5);\n\tr0 = MulAdd(s0_0_2, M4(3.097e-03, 2.485e-03, 8.798e-03, -6.689e-02, -1.630e-03, -4.129e-03, -1.878e-02, -1.593e-01, -1.315e-02, -2.009e-03, 3.211e-02, 6.471e-02, -1.072e-02, 4.161e-03, -1.754e-02, 2.583e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-2.987e-03, 3.058e-02, 7.951e-03, -1.320e-02, 1.663e-02, 1.391e-02, 1.672e-04, 7.037e-03, -1.769e-02, -1.723e-03, -9.705e-03, -4.529e-02, -1.243e-02, 1.675e-02, -1.003e-02, -2.962e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-6.133e-03, 7.588e-03, 4.240e-03, -1.220e-02, -2.717e-02, 2.123e-02, -1.100e-02, 1.566e-02, 9.902e-02, -3.464e-02, -2.339e-03, -7.551e-02, -9.161e-04, -7.212e-03, 2.862e-02, -4.651e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(2.828e-03, -1.457e-03, 7.677e-04, -3.236e-03, -8.447e-02, 2.330e-02, 2.788e-02, -5.058e-02, 3.256e-02, -1.942e-02, 1.792e-03, 4.670e-02, 2.020e-02, -2.422e-02, -9.679e-03, 6.443e-05), r3);\n\tr4 = MulAdd(s0_0_2, M4(-7.243e-02, 1.641e-01, -3.040e-02, 1.334e-02, -5.224e-01, 2.925e-03, -1.305e-01, 1.972e-02, 2.565e-01, -1.496e-01, 3.213e-01, -2.080e-02, 8.285e-02, -3.750e-02, -4.521e-02, 1.707e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(3.602e-02, 1.212e-01, 4.398e-02, 5.004e-04, -8.533e-02, -4.404e-02, 2.557e-02, -3.069e-03, -1.109e-01, -2.796e-04, 1.779e-02, -8.712e-03, 2.007e-02, -1.058e-01, 1.119e-02, -6.430e-03), r5);\n\tr0 = MulAdd(s0_1_0, M4(1.948e-02, 4.242e-02, -5.610e-03, 5.140e-02, 7.857e-03, -1.340e-02, -4.283e-02, -6.134e-02, 6.669e-04, 4.466e-02, 4.516e-02, -1.988e-01, -1.598e-02, -3.723e-02, -5.406e-02, -1.597e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.743e-01, -4.578e-02, 2.313e-02, -6.251e-02, 9.062e-03, -2.421e-02, 6.720e-03, 2.789e-02, -8.590e-02, 2.931e-02, 5.364e-03, 1.452e-02, 6.060e-02, -1.439e-01, -1.114e-02, 6.520e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(2.398e-01, -1.831e-01, 1.006e-01, -6.529e-02, -1.182e-01, 5.410e-02, -6.378e-02, 2.389e-02, 8.101e-03, 1.027e-02, -3.482e-02, 1.848e-02, -2.510e-01, 7.167e-02, -3.097e-02, 6.270e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-6.467e-02, -1.480e-01, -8.023e-03, -1.964e-01, -8.862e-02, 6.215e-02, 3.762e-03, 1.732e-04, -9.716e-02, 3.820e-02, 1.386e-02, 1.038e-01, 1.070e-01, 1.167e-01, 5.476e-03, 4.561e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-1.388e-02, -2.316e-01, 1.707e-01, -4.106e-02, -3.663e-01, -9.132e-02, -3.358e-01, -2.104e-02, -5.891e-01, 1.190e-01, 2.640e-01, 4.089e-02, -4.833e-02, 2.863e-02, 9.986e-02, -1.361e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(8.897e-02, 1.463e-01, -3.291e-01, 2.063e-02, -8.234e-02, -1.848e-02, 8.793e-02, 1.414e-02, 2.039e-01, -8.432e-02, -3.441e-02, -6.867e-03, -1.998e-01, -3.375e-02, 4.344e-02, -2.313e-02), r5);\n\tr0 = MulAdd(s0_1_1, M4(2.871e-01, 1.890e-01, 3.295e-03, 3.403e-01, -6.860e-02, -6.642e-02, -5.662e-02, 6.373e-02, -1.509e-01, 4.461e-02, -1.482e-01, -7.503e-02, -2.119e-02, -3.317e-02, -4.738e-02, -3.252e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(4.665e-01, -6.377e-02, 3.422e-01, 1.147e-01, -1.367e-02, -1.284e-01, -7.888e-02, -9.644e-02, 3.528e-02, 1.203e-01, -1.812e-01, 5.970e-02, 1.930e-01, 1.792e-01, -2.881e-02, 5.332e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.208e-01, 3.785e-01, 1.801e-01, -5.700e-02, 2.397e-01, -9.161e-02, 1.526e-01, -5.432e-02, 7.627e-02, 2.603e-01, 2.588e-01, 4.399e-02, 5.353e-02, -2.882e-02, 1.339e-01, 4.487e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(2.617e-01, 3.905e-01, -1.162e-02, 3.369e-01, -2.028e-01, -8.341e-02, -3.379e-02, -1.921e-01, -4.018e-02, -2.114e-01, -1.323e-01, -3.018e-01, -6.147e-02, 2.783e-01, 7.956e-02, -3.233e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(2.017e-01, -3.585e-01, 1.283e-01, -6.570e-02, 1.510e-01, 2.166e-01, -5.824e-01, -1.309e-01, -5.561e-02, 2.509e-01, 1.366e-01, 1.410e-01, -6.625e-01, -3.916e-01, 2.387e-01, 2.046e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(-2.892e-02, 1.094e-02, -2.058e-02, 2.100e-01, -4.915e-02, 3.080e-01, -7.595e-02, -4.138e-02, 2.117e-01, -4.746e-02, 8.793e-02, -8.569e-02, -1.918e-01, 6.072e-02, 3.037e-01, -2.051e-02), r5);\n\tr0 = MulAdd(s0_1_2, M4(-2.312e-02, 2.443e-02, -5.603e-02, 1.499e-01, 2.414e-02, 1.155e-02, -2.147e-02, -1.334e-01, -1.709e-02, -6.407e-03, 7.280e-02, -3.962e-03, -1.200e-02, 1.228e-02, 6.600e-02, 5.669e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-8.952e-03, -2.128e-02, -3.819e-02, -1.348e-02, -5.769e-02, -7.492e-02, 2.435e-02, 1.236e-01, 2.608e-04, 7.349e-02, -1.568e-02, 2.927e-03, 3.528e-02, -1.513e-01, -7.334e-03, -3.943e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-2.479e-02, 2.130e-02, -1.041e-02, 2.309e-02, -1.538e-01, 5.927e-03, 1.523e-02, 1.066e-01, -1.724e-01, 8.839e-03, -8.231e-03, 9.995e-02, -1.227e-02, 4.094e-02, -8.038e-02, 4.636e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(1.150e-03, -1.417e-02, -1.887e-02, -2.939e-02, -1.142e-01, -7.748e-02, -4.553e-02, 7.228e-02, 4.880e-02, 5.421e-02, -4.594e-02, 1.205e-01, 1.915e-01, 1.407e-01, 3.566e-02, 1.029e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(1.124e-01, -1.076e-01, -6.912e-02, -6.298e-03, -2.271e-01, -1.322e-01, -1.659e-01, -6.518e-02, 2.136e-02, 4.430e-01, 1.794e-02, 7.605e-02, -1.038e-02, -1.703e-01, 3.726e-01, -1.638e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(-2.503e-02, 1.802e-01, 6.569e-02, -1.493e-02, -1.314e-01, -1.188e-01, 3.918e-02, 2.085e-02, 2.800e-01, -9.365e-03, 3.178e-02, -1.506e-02, 9.593e-02, -3.253e-02, 3.033e-02, -2.537e-02), r5);\n\tr0 = MulAdd(s0_2_0, M4(-3.017e-02, -4.048e-02, -9.244e-02, 1.548e-01, 6.648e-03, -3.722e-02, 5.516e-02, -2.388e-01, 2.317e-02, 2.460e-02, -1.148e-01, 1.411e-01, -2.017e-02, -1.255e-01, 6.535e-02, -1.635e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(6.324e-02, 2.930e-02, -2.935e-02, -1.800e-02, 1.429e-03, 5.559e-03, 7.175e-03, 1.065e-03, 3.137e-02, 2.581e-03, 2.789e-02, -7.976e-04, -8.822e-02, -1.573e-02, -2.655e-02, 1.714e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(2.693e-03, 7.453e-02, -5.429e-03, -4.287e-03, -1.153e-02, 2.953e-02, 5.505e-02, -3.179e-03, 4.215e-02, 1.796e-02, 1.488e-02, -3.216e-03, -1.393e-01, -9.714e-02, 8.779e-03, 1.764e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(7.307e-02, 8.235e-03, -5.221e-02, -5.432e-02, -2.028e-02, 2.454e-02, 1.381e-02, 5.018e-02, -2.680e-03, 2.255e-02, 2.805e-02, -9.858e-02, -1.763e-01, 3.121e-02, 4.171e-03, -3.109e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(3.982e-02, 3.507e-02, -9.478e-03, 1.909e-02, -2.430e-01, -2.342e-01, 8.259e-02, -4.433e-03, 4.398e-02, 1.745e-01, 8.316e-02, -2.279e-03, 9.150e-02, 2.566e-01, -2.191e-01, -1.702e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(5.190e-02, 3.468e-02, 1.853e-02, -3.479e-02, -1.114e-01, -1.148e-01, 1.024e-02, 8.695e-03, -1.105e-01, 8.812e-02, 7.933e-02, 1.560e-02, -1.999e-01, 6.822e-02, 2.046e-01, 1.013e-02), r5);\n\tr0 = MulAdd(s0_2_1, M4(-5.276e-02, -4.093e-02, 2.245e-01, 6.903e-02, -2.264e-03, -1.109e-01, -2.842e-01, 1.573e-01, 8.960e-02, 1.222e-01, 1.745e-01, -1.592e-01, 1.147e-01, 1.782e-01, -8.648e-02, 5.510e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(6.877e-02, 1.776e-02, -5.401e-02, 4.862e-03, 6.708e-02, -3.035e-03, -5.240e-04, 2.777e-02, -4.576e-02, 2.524e-03, 1.013e-01, -1.295e-02, 2.417e-01, -9.354e-03, 1.185e-01, -4.468e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-4.310e-03, -4.060e-02, 1.673e-02, 5.093e-03, -1.182e-01, 5.353e-02, 9.531e-02, 1.878e-02, 6.863e-03, -1.323e-01, -5.162e-02, -9.315e-03, 3.505e-02, -1.791e-01, 2.267e-02, 2.283e-03), r2);\n\tr3 = MulAdd(s0_2_1, M4(-1.678e-01, 3.430e-02, -4.938e-02, 7.535e-03, -1.453e-02, 1.412e-02, -2.986e-02, -2.014e-01, -1.034e-01, 1.531e-02, 9.022e-02, 1.355e-01, -1.850e-01, 1.494e-01, 2.356e-01, 7.019e-04), r3);\n\tr4 = MulAdd(s0_2_1, M4(5.345e-02, 1.569e-01, 2.651e-02, 2.063e-03, 1.466e-01, -4.488e-01, -2.245e-02, -9.850e-03, 1.449e-02, 1.306e-01, 1.561e-02, 8.257e-03, -5.555e-01, 1.065e-02, -1.711e-01, -1.602e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(1.863e-01, 1.823e-01, 2.206e-02, -1.902e-03, -1.878e-01, -2.563e-01, 2.041e-02, -1.989e-02, -1.248e-01, 2.291e-01, 2.231e-02, 5.628e-02, -2.480e-01, 6.070e-02, -3.381e-02, 2.104e-01), r5);\n\tr0 = MulAdd(s0_2_2, M4(-2.465e-03, -6.659e-03, 6.443e-02, -2.580e-02, 1.124e-01, -7.300e-02, 2.218e-02, -1.330e-01, 1.590e-03, 8.666e-02, -8.184e-03, 6.518e-02, -9.402e-02, -1.510e-01, 2.893e-02, -3.734e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(3.549e-03, 1.564e-02, 2.050e-03, 1.071e-02, -2.518e-02, -1.103e-02, 1.228e-01, -8.269e-03, 1.333e-02, -4.871e-03, -2.527e-03, -5.844e-03, -3.967e-02, 2.869e-02, -9.879e-02, 2.803e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(3.380e-03, 1.769e-02, -1.507e-02, 1.199e-02, 5.163e-02, -4.833e-02, -3.375e-02, 1.054e-02, -8.743e-03, -1.255e-02, 2.292e-03, -2.376e-02, 3.119e-02, -5.295e-02, -4.407e-02, -1.380e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(3.689e-02, 4.708e-02, 6.287e-03, 5.656e-02, -7.486e-02, 1.581e-02, 1.479e-01, -1.131e-02, -3.435e-02, -1.592e-03, -1.077e-02, -1.981e-02, -1.135e-01, 2.630e-02, -1.558e-01, 6.534e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(6.234e-03, 2.083e-03, 2.680e-02, 1.399e-02, -6.741e-02, -1.687e-01, -7.688e-02, -5.126e-03, 6.293e-02, 2.361e-01, 1.290e-01, -5.136e-04, 4.661e-02, 2.786e-01, 2.349e-02, 7.522e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(2.410e-02, 1.906e-02, 8.912e-05, -1.119e-02, -9.379e-02, -3.707e-02, 3.314e-02, 9.791e-02, -1.002e-01, 1.773e-02, -1.954e-02, -4.643e-03, 8.964e-02, 1.822e-01, 3.395e-02, -6.066e-02), r5);\n\tr0 = MulAdd(s1_0_0, M4(1.600e-03, 3.179e-03, -2.086e-05, -1.461e-02, 2.483e-04, 7.463e-03, 1.164e-02, 2.139e-02, -4.982e-03, 1.920e-03, 3.318e-02, -1.362e-01, 9.382e-03, 1.620e-02, 2.882e-02, 1.327e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(4.570e-03, 1.346e-02, 2.125e-03, 1.347e-03, -3.123e-03, 5.998e-02, 1.724e-03, -1.037e-02, 6.990e-03, -3.969e-02, -6.787e-03, 3.479e-02, -1.313e-02, 4.212e-02, 1.152e-02, 1.495e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(-3.758e-02, -1.362e-02, 2.067e-02, 2.497e-03, -3.937e-03, -9.452e-03, -3.558e-03, 4.676e-03, -4.345e-02, 2.872e-02, -3.664e-02, 1.745e-02, 5.470e-02, -6.577e-03, 2.782e-02, -4.284e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(-1.538e-02, -3.460e-04, -4.056e-03, -3.965e-03, 6.089e-02, -5.203e-03, 4.640e-03, -5.131e-02, 6.666e-02, 2.606e-02, -1.043e-02, 7.490e-02, -1.400e-02, -8.286e-03, -5.660e-03, 4.542e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(7.836e-02, 1.231e-02, -8.907e-02, 8.521e-03, -4.506e-02, 5.323e-02, -1.521e-02, 6.280e-02, -2.633e-01, -1.160e-01, 2.839e-01, -4.121e-02, 1.507e-01, 2.706e-01, -2.582e-01, 4.310e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(9.026e-02, 5.757e-02, 7.669e-03, 4.202e-03, 3.553e-02, -8.723e-02, -3.496e-03, 1.441e-03, -1.404e-01, -1.196e-02, 9.062e-02, 5.507e-03, 2.549e-01, 6.706e-02, -1.357e-02, 2.858e-03), r5);\n\tr0 = MulAdd(s1_0_1, M4(-1.356e-02, 2.228e-03, 3.062e-02, 6.038e-02, 1.138e-02, -8.627e-03, -2.350e-02, -2.999e-02, 1.225e-02, 6.708e-03, -7.704e-03, 2.434e-01, -2.663e-02, -3.530e-03, 7.131e-03, 6.399e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(2.063e-02, -5.937e-02, -1.620e-02, -5.924e-03, -3.352e-02, 1.269e-02, 1.265e-02, -2.801e-02, 3.482e-04, 4.603e-02, 1.166e-02, -1.039e-01, -1.153e-01, 3.770e-02, -2.680e-02, 1.509e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-3.115e-03, 1.020e-03, 3.279e-02, -6.411e-03, 6.368e-02, 7.114e-03, 8.419e-02, -6.958e-02, 1.636e-01, -4.135e-03, 1.134e-01, -1.630e-01, -1.115e-01, 3.009e-02, -7.618e-02, 1.228e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(3.886e-02, 1.572e-02, -1.632e-02, -2.790e-02, 4.535e-02, -2.007e-02, -1.763e-03, -3.820e-02, 3.397e-02, 6.678e-02, 1.846e-02, 1.364e-01, -5.284e-02, -1.213e-01, -1.814e-02, 4.500e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(2.013e-01, 1.525e-01, 1.244e-01, -5.482e-02, 2.636e-01, 1.632e-01, -2.474e-02, -2.035e-03, 7.328e-02, -5.600e-02, -2.920e-01, 4.145e-02, 9.962e-02, 3.502e-01, 3.848e-02, 3.921e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(1.243e-01, 1.146e-01, 3.628e-02, -1.296e-02, 6.028e-02, -9.003e-02, 6.488e-03, 7.958e-03, 4.070e-03, -1.011e-01, 1.174e-02, 5.053e-03, 3.447e-02, 1.317e-01, -1.817e-01, -1.485e-02), r5);\n\tr0 = MulAdd(s1_0_2, M4(-5.013e-03, 1.400e-03, 2.754e-03, 2.045e-01, -6.317e-03, -2.026e-03, 1.959e-02, -6.467e-02, 4.393e-03, 1.054e-02, 2.567e-02, -7.982e-02, -1.135e-03, 5.032e-03, -2.926e-02, 1.160e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-2.719e-02, 6.085e-03, -4.731e-03, 4.071e-03, -1.460e-02, -7.562e-03, -1.302e-02, 3.772e-02, -3.803e-03, -1.347e-02, 2.906e-03, -1.305e-03, -1.249e-03, -1.896e-03, -4.442e-03, -6.616e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(3.948e-02, -2.529e-02, -5.017e-02, -2.143e-02, -6.508e-03, -1.260e-02, 2.387e-02, 5.969e-02, -9.610e-03, -5.380e-02, 3.033e-03, -9.058e-03, 3.599e-03, -2.815e-02, -1.555e-02, -7.834e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(7.814e-02, -1.711e-02, -7.444e-04, 6.619e-02, -2.923e-03, -3.096e-02, -1.445e-02, 3.236e-02, 1.695e-02, 1.727e-02, -5.236e-03, -7.669e-02, -4.635e-02, -3.117e-02, -1.673e-02, -4.917e-03), r3);\n\tr4 = MulAdd(s1_0_2, M4(3.990e-02, -3.792e-02, 7.161e-02, -3.905e-03, -8.565e-02, 5.969e-02, 3.135e-02, -1.260e-02, -7.523e-02, 3.922e-02, 8.637e-02, -1.540e-02, -8.700e-02, -1.063e-01, -1.516e-02, 5.199e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(4.160e-02, 4.224e-02, 5.773e-02, -2.235e-03, 5.040e-02, -6.519e-02, 7.284e-03, -1.651e-03, -8.741e-03, 1.331e-01, 2.682e-02, 5.534e-05, -1.213e-02, -2.324e-02, -3.161e-02, 1.028e-03), r5);\n\tr0 = MulAdd(s1_1_0, M4(-9.810e-03, 1.198e-02, -1.676e-02, 5.047e-02, -9.258e-03, 6.298e-02, 1.674e-03, -1.685e-01, 1.399e-02, -3.745e-02, 1.630e-01, -2.134e-01, -3.307e-02, 5.054e-02, -2.691e-02, -1.435e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(8.195e-03, 1.781e-03, -1.144e-02, -3.259e-02, 3.213e-02, -1.427e-02, -1.158e-02, 1.004e-02, -7.949e-03, 2.524e-03, 1.189e-02, 6.153e-02, -3.722e-02, 2.251e-02, -3.594e-02, -7.026e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.377e-01, -3.187e-02, -3.293e-03, -3.748e-02, -6.864e-02, -2.338e-02, 2.585e-02, 3.342e-02, 4.624e-02, 1.057e-01, 4.504e-02, 3.626e-02, -9.035e-02, -3.270e-02, 6.655e-02, -5.651e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(5.237e-02, -7.299e-02, -4.734e-03, -1.908e-02, -8.336e-02, 5.021e-02, 1.356e-03, 3.203e-02, -1.359e-03, 1.733e-01, 4.307e-03, 1.526e-01, 9.155e-02, -6.959e-02, -3.114e-02, 5.209e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(7.676e-01, 1.366e-02, 3.164e-01, -5.928e-04, -2.997e-01, 7.201e-02, -4.580e-01, -1.768e-02, 2.995e-02, -2.581e-02, -2.028e-01, 4.936e-03, -3.177e-01, 1.320e-01, 4.901e-01, 2.810e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-2.608e-02, -4.441e-02, -7.887e-02, -4.417e-03, -2.054e-01, -6.859e-02, -8.056e-02, -2.948e-03, 9.898e-02, -2.901e-01, 1.596e-02, 1.111e-02, 1.951e-02, 1.444e-01, 1.190e-01, -1.384e-02), r5);\n\tr0 = MulAdd(s1_1_1, M4(2.264e-02, -6.048e-02, 1.291e-02, -9.541e-02, -6.233e-02, -1.509e-04, 5.126e-02, -2.334e-01, -1.821e-01, 5.538e-02, 8.080e-02, 1.833e-01, 4.492e-02, 2.631e-02, -3.020e-02, 1.577e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-3.264e-02, -3.818e-02, 2.479e-02, 5.405e-03, -3.294e-01, -1.787e-01, -7.752e-02, 8.365e-02, 2.969e-01, 8.538e-02, -2.033e-01, -1.516e-01, 3.843e-01, 1.567e-01, 5.614e-02, -2.304e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.338e-01, 1.109e-01, -2.561e-01, 1.168e-02, -4.937e-01, -4.735e-01, -2.354e-01, -4.605e-02, 2.454e-01, -8.639e-02, 2.022e-01, 1.561e-02, 1.292e-01, 1.062e-01, -6.490e-03, -9.788e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(1.039e-01, 8.384e-02, -2.351e-02, 2.756e-01, -5.453e-01, -5.374e-01, -7.410e-02, -1.656e-01, -2.329e-01, -2.621e-01, -1.194e-01, 7.143e-02, 5.228e-01, 4.619e-01, -1.361e-02, -1.044e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.344e-01, -2.147e-01, 2.597e-01, -1.721e-02, -1.318e-01, -4.541e-01, -3.747e-01, -1.905e-01, -3.716e-02, 2.848e-01, 2.998e-01, 1.037e-01, 3.903e-01, 2.507e-01, 3.555e-01, 1.587e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-3.959e-01, -1.048e-01, 3.642e-01, 1.192e-02, -2.449e-01, 2.575e-01, 3.218e-03, -1.985e-02, 1.119e-01, 1.375e-01, 8.276e-02, -1.324e-01, 6.569e-03, -3.364e-02, -4.001e-02, 6.941e-02), r5);\n\tr0 = MulAdd(s1_1_2, M4(4.773e-02, 1.138e-02, -4.413e-02, 2.453e-01, 6.140e-02, -9.594e-03, 3.015e-02, -4.853e-02, -6.561e-03, -2.111e-02, -1.356e-01, -2.155e-01, -7.934e-02, -6.184e-03, 1.152e-02, -2.110e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(7.471e-03, 4.955e-02, 5.986e-02, 4.053e-01, -1.141e-02, -4.823e-02, 7.152e-02, -9.107e-02, -1.013e-01, -2.558e-03, -1.343e-02, 1.377e-01, -1.131e-03, 7.988e-02, -8.091e-02, 6.762e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-5.228e-02, 4.016e-02, -1.456e-01, 1.014e-01, 6.372e-02, -4.693e-02, -5.369e-02, -2.529e-01, -1.106e-01, 2.545e-02, -2.811e-02, 1.197e-01, -1.533e-02, 6.323e-02, 1.567e-02, 9.123e-03), r2);\n\tr3 = MulAdd(s1_1_2, M4(-7.635e-02, -1.608e-02, -5.143e-02, 6.480e-02, 4.680e-02, 5.646e-02, 1.463e-02, 1.143e-01, 5.797e-02, -1.198e-02, 1.812e-01, -1.594e-02, 1.958e-02, 1.790e-02, 5.664e-02, 5.314e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.381e-01, 3.253e-01, -3.466e-01, 3.352e-02, -6.797e-02, 1.880e-01, 1.692e-02, -4.719e-02, -2.871e-01, -3.746e-01, 6.306e-02, 1.341e-03, -2.268e-01, -1.070e-01, 2.574e-01, 7.643e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(1.176e-01, -1.694e-01, 7.441e-02, 2.514e-02, -5.598e-02, -1.522e-01, 2.218e-02, 4.187e-02, 1.327e-01, -1.681e-02, 8.199e-02, -4.484e-03, 2.200e-01, 7.299e-04, 2.591e-02, -6.940e-02), r5);\n\tr0 = MulAdd(s1_2_0, M4(-2.584e-03, 9.888e-03, -3.553e-02, 2.237e-01, -2.905e-03, -1.483e-02, 4.746e-02, -1.107e-01, 2.116e-02, 2.134e-02, -1.385e-02, 6.036e-02, -5.384e-02, 2.550e-02, 1.189e-01, -7.145e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.539e-02, 2.345e-04, -2.720e-03, -1.450e-02, -2.668e-02, 1.142e-02, -1.489e-03, 2.268e-03, 8.630e-03, -2.652e-03, 2.117e-02, -3.958e-03, 3.260e-02, 2.114e-02, -6.665e-02, -5.975e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(3.306e-02, -3.366e-02, 1.561e-02, -1.443e-02, -8.600e-04, -1.053e-02, 3.521e-03, 2.029e-03, -1.351e-02, -3.113e-02, 2.263e-02, -1.124e-02, 3.843e-02, 1.338e-03, 2.937e-02, -5.944e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(4.583e-02, -4.957e-02, -3.260e-02, -3.230e-02, 3.598e-03, 1.047e-02, 1.837e-02, 2.351e-03, -7.117e-03, -5.957e-04, 1.307e-02, -2.532e-02, 6.915e-02, -1.200e-02, -5.678e-02, 1.549e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(4.595e-01, 3.159e-02, -2.190e-01, -7.135e-03, 2.598e-02, 1.939e-01, -1.762e-01, 9.947e-03, -1.656e-01, -2.665e-01, 1.804e-01, 1.679e-02, -1.701e-01, 3.633e-02, 3.091e-02, 1.894e-03), r4);\n\tr5 = MulAdd(s1_2_0, M4(1.401e-01, -2.624e-02, -2.212e-02, -7.274e-03, -4.188e-02, -1.109e-01, 2.128e-02, -1.618e-03, 1.137e-01, -9.664e-02, 6.265e-02, 1.995e-02, 3.412e-02, -2.317e-01, -4.087e-02, -5.139e-02), r5);\n\tr0 = MulAdd(s1_2_1, M4(-4.784e-02, -4.377e-02, 3.018e-01, -3.606e-02, 1.511e-02, -2.142e-01, -4.307e-01, -4.335e-01, -2.118e-02, 1.028e-01, 2.093e-02, 2.998e-01, -5.517e-04, 1.472e-01, -2.647e-01, 1.204e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-2.384e-02, 2.369e-02, -6.170e-02, -1.094e-03, -8.076e-02, -2.674e-02, 2.687e-02, -2.569e-02, 2.463e-02, 2.074e-02, -3.092e-02, -2.688e-02, -7.055e-02, 1.905e-02, -2.164e-03, 2.566e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(9.448e-02, -1.233e-01, 7.154e-02, -2.798e-02, -1.440e-03, -1.364e-01, -3.359e-02, 1.340e-02, 7.913e-03, 8.725e-02, -3.724e-03, -1.704e-02, -6.473e-03, 1.703e-01, 3.570e-02, 4.114e-03), r2);\n\tr3 = MulAdd(s1_2_1, M4(-1.296e-01, -1.392e-01, 1.025e-02, 4.756e-01, -9.241e-02, -1.092e-01, -4.835e-03, -2.743e-01, 9.806e-02, 6.527e-02, -4.611e-02, 4.130e-02, 3.467e-01, -3.934e-02, -1.480e-03, -9.963e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(3.226e-01, 1.284e-01, -2.704e-01, 2.190e-02, -1.550e-01, -2.933e-01, -1.494e-01, -1.228e-02, 3.642e-02, -1.685e-01, 2.247e-01, 1.619e-02, 5.583e-02, 9.666e-02, -3.534e-01, 2.956e-03), r4);\n\tr5 = MulAdd(s1_2_1, M4(2.527e-01, 1.204e-01, 7.470e-02, -1.925e-02, -8.107e-02, -1.225e-01, -4.506e-02, 1.323e-02, 9.302e-02, 3.186e-02, 7.380e-02, -6.518e-02, 1.992e-01, -8.775e-02, -5.906e-02, -5.209e-02), r5);\n\tr0 = MulAdd(s1_2_2, M4(3.408e-01, 4.084e-02, 2.269e-01, 9.580e-02, -1.165e-01, -4.481e-02, 4.732e-02, 4.597e-02, 9.596e-02, -7.768e-04, 1.024e-01, -1.341e-01, 3.058e-02, 6.472e-02, 1.038e-01, 1.057e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(-2.614e-02, 1.934e-02, 3.818e-01, 6.056e-03, -1.735e-02, -3.118e-03, -1.270e-01, 1.192e-02, 2.207e-03, 1.386e-02, 1.073e-01, 5.111e-03, 1.692e-02, -2.271e-04, 3.382e-02, -1.201e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(5.723e-02, -6.643e-03, -3.973e-03, 2.601e-03, 3.084e-03, -6.144e-02, -1.913e-02, -3.926e-02, 1.275e-02, 3.196e-02, 6.603e-03, -3.643e-04, 1.183e-02, -4.175e-02, 4.263e-02, -1.765e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(7.738e-02, 1.280e-01, 1.499e-01, 6.449e-02, -4.707e-02, -6.524e-02, -2.006e-01, -4.018e-02, -1.292e-02, 7.179e-02, 5.561e-02, 6.350e-02, -2.457e-02, 9.118e-04, -4.983e-02, 8.352e-03), r3);\n\tr4 = MulAdd(s1_2_2, M4(9.660e-06, -1.851e-01, 2.045e-01, 1.356e-02, 1.817e-01, -9.602e-02, 2.827e-03, -6.970e-03, -7.496e-01, 5.188e-02, 1.886e-02, 2.715e-03, 1.437e-01, 2.561e-01, 3.836e-02, -9.407e-04), r4);\n\tr5 = MulAdd(s1_2_2, M4(-1.911e-01, 6.327e-02, 6.298e-02, 2.979e-01, -1.872e-02, -1.932e-01, 2.389e-02, -8.040e-02, -1.307e-02, 2.632e-02, 8.439e-03, 9.302e-02, 1.591e-01, 7.345e-02, -3.506e-02, 3.626e-02), r5);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT4[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT5[gxy] = r5;\n}\n\n//!PASS 6\n//!DESC out-shuffle (24x12)\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, T0, T1, T2, T3, T4, T5\n//!OUT OUTPUT\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n#define L4(x, y) V4(O(T4, x, y))\n#define L5(x, y) V4(O(T5, x, y))\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 sz = GetOutputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(2.666e-01, -4.937e-03, 9.449e-03, -2.266e-02, 1.091e-01, -2.484e-02, 9.546e-02, -1.158e-02, -1.630e-04, 1.245e-02, -2.422e-02, -2.112e-03, 8.751e-03, -8.758e-04, 1.989e-03, -1.937e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-3.311e-02, 3.509e-03, 2.745e-04, 2.869e-03, -3.479e-02, 6.108e-04, -2.863e-02, -1.554e-04, -1.209e-03, 1.326e-02, -3.353e-02, -2.082e-03, 8.941e-03, -1.563e-04, 1.746e-03, -7.825e-04), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.134e-01, -9.088e-05, 1.600e-03, -1.175e-02, 2.953e-02, -1.127e-02, 2.691e-02, -5.098e-03, -7.861e-03, 1.146e-02, -3.287e-02, -5.746e-04, 8.359e-03, -7.162e-04, 6.508e-04, -2.699e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(4.249e-01, 2.764e-01, 2.151e-02, 2.355e-02, -4.448e-01, 4.093e-01, -3.115e-01, 2.907e-01, 2.370e-01, -3.151e-01, -7.835e-03, 2.880e-02, -4.431e-02, 4.873e-02, -3.451e-05, 2.670e-03), r0);\n\tr1 = MulAdd(s0_0_1, M4(-4.808e-02, -1.765e-02, 1.310e-03, 8.328e-04, 9.380e-02, -1.101e-01, 8.978e-02, -9.868e-02, 2.390e-01, -3.447e-01, -1.130e-02, 3.368e-02, -5.613e-02, 5.378e-02, 1.984e-03, 8.252e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.753e-01, 1.216e-01, 3.106e-03, 7.758e-03, -1.655e-01, 1.335e-01, -1.107e-01, 7.640e-02, 2.124e-01, -3.192e-01, -1.331e-03, 1.773e-02, -4.900e-02, 5.745e-02, 1.893e-03, 7.067e-03), r2);\n\tr0 = MulAdd(s0_0_2, M4(7.062e-03, 8.804e-02, 2.447e-02, -7.984e-02, 2.750e-02, -1.558e-01, 1.181e-02, -1.194e-01, -5.882e-03, 9.545e-03, 7.141e-03, -1.087e-02, 3.144e-03, -9.901e-03, 9.897e-04, -8.606e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(-4.410e-03, -1.878e-02, -5.525e-03, 1.865e-02, -5.283e-03, 3.847e-02, -3.798e-03, 3.008e-02, -8.847e-03, 6.809e-03, 5.560e-03, -1.024e-02, 5.785e-03, -1.225e-02, 1.674e-03, -9.740e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(-9.009e-05, 2.808e-02, 8.164e-03, -2.575e-02, 1.081e-02, -5.164e-02, 2.701e-03, -4.206e-02, -2.333e-03, 2.093e-02, 1.083e-02, -1.035e-03, 4.497e-03, -1.259e-02, 1.125e-03, -9.427e-03), r2);\n\tr0 = MulAdd(s0_1_0, M4(1.473e-01, 1.126e-01, 4.697e-01, 4.690e-03, 4.300e-03, 8.489e-03, 8.895e-03, -1.224e-02, 1.188e-04, -8.014e-04, 2.215e-03, -8.925e-03, 3.307e-02, -4.962e-03, 3.177e-02, -2.569e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.944e-02, -2.482e-02, -3.515e-02, 1.143e-02, 2.907e-04, -4.158e-03, -5.444e-04, 1.756e-03, -3.473e-03, -3.388e-03, -1.887e-03, -8.225e-03, 3.822e-02, -5.067e-03, 3.578e-02, -2.938e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(5.793e-02, 3.497e-02, 2.163e-01, 8.266e-03, 3.006e-03, 2.977e-03, 5.057e-03, -3.402e-03, -4.168e-03, -2.584e-03, -1.209e-03, -1.126e-02, 3.743e-02, -5.225e-03, 3.723e-02, -1.493e-03), r2);\n\tr0 = MulAdd(s0_1_1, M4(-1.129e-01, -4.367e-01, -4.691e-01, -6.387e-01, 3.697e-02, 4.077e-03, -3.214e-02, 9.842e-02, -3.782e-03, 1.267e-02, -2.794e-02, 2.893e-03, -1.421e-01, 9.747e-02, -2.566e-01, 1.905e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.752e-02, 6.116e-02, 7.284e-02, -9.139e-03, -3.099e-03, 3.577e-04, 8.684e-03, -1.862e-02, -4.197e-03, 1.452e-02, -3.635e-02, 1.711e-04, -1.388e-01, 1.042e-01, -2.842e-01, 1.898e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-3.355e-02, -1.633e-01, -1.761e-01, -3.057e-01, 1.497e-02, 3.244e-03, -8.814e-03, 4.619e-02, -4.717e-03, 9.188e-03, -3.381e-02, -8.625e-03, -1.255e-01, 8.975e-02, -2.496e-01, 1.763e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(2.742e-03, 5.385e-02, -4.243e-02, -1.855e-02, 3.893e-03, -2.192e-02, 1.225e-02, -4.454e-02, 1.150e-03, 7.832e-03, 7.289e-03, 8.746e-03, -3.791e-04, 5.863e-03, 1.121e-02, -1.025e-03), r0);\n\tr1 = MulAdd(s0_1_2, M4(-5.908e-03, -1.450e-02, 5.195e-03, 3.078e-03, 3.453e-03, 6.394e-03, 1.703e-03, 1.656e-02, 3.969e-03, 4.982e-03, 5.883e-03, 6.178e-03, -4.776e-03, 9.081e-03, 8.702e-03, 1.648e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(-7.082e-04, 1.600e-02, -1.894e-02, -1.267e-02, 2.314e-03, -4.989e-03, 6.177e-03, -8.134e-03, 3.015e-03, 8.224e-03, 7.311e-03, 8.598e-03, -2.801e-03, 8.667e-03, 9.730e-03, 1.486e-03), r2);\n\tr0 = MulAdd(s0_2_0, M4(3.398e-02, -2.387e-02, -7.886e-02, 3.993e-02, -7.335e-04, -1.568e-03, 7.897e-03, 2.577e-03, 2.980e-04, 1.936e-03, 5.793e-04, -1.336e-03, 3.785e-03, -6.024e-04, 1.267e-02, -3.642e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(-4.415e-03, 8.476e-03, 2.063e-02, -1.654e-02, 1.618e-04, 1.659e-03, -1.006e-03, 2.681e-04, -2.179e-03, -1.167e-03, 1.252e-03, -4.953e-04, 2.191e-03, -2.717e-03, 1.790e-02, -4.390e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.402e-02, -7.067e-03, -3.033e-02, 1.093e-02, -4.078e-04, 2.529e-04, 4.105e-03, 1.883e-03, -1.927e-04, 1.452e-03, 2.327e-03, 1.216e-03, 2.305e-03, -1.459e-03, 1.401e-02, -3.860e-03), r2);\n\tr0 = MulAdd(s0_2_1, M4(-2.705e-02, -9.669e-03, 8.325e-02, -1.014e-01, -1.936e-04, -2.141e-04, -9.864e-03, 7.148e-03, 1.922e-04, -3.384e-03, 1.157e-02, -2.834e-03, -8.506e-04, 4.754e-03, -1.268e-02, 1.099e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.119e-02, 4.531e-03, -1.813e-02, 2.861e-02, -1.381e-03, -2.148e-04, 7.966e-04, 3.757e-04, -2.201e-03, -3.510e-03, 7.356e-03, -1.972e-03, 2.424e-03, 5.856e-03, -1.168e-02, 1.631e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-4.524e-03, 2.827e-03, 3.579e-02, -2.751e-02, -3.237e-04, 2.659e-04, -3.686e-03, 5.249e-03, 8.220e-05, -3.210e-03, 1.165e-02, -2.733e-03, -7.200e-04, 7.005e-03, -1.092e-02, 1.437e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(-3.181e-03, 1.722e-03, -4.368e-03, 1.788e-02, 6.908e-04, 1.085e-03, 5.756e-03, -2.338e-03, 2.036e-03, 1.698e-03, -5.874e-03, 4.366e-03, -2.682e-03, -3.788e-03, -8.185e-04, 8.953e-04), r0);\n\tr1 = MulAdd(s0_2_2, M4(6.711e-04, 1.780e-03, -3.507e-03, -1.086e-02, -2.843e-04, -5.319e-04, 2.591e-03, 5.518e-03, 2.473e-03, 2.524e-03, -3.486e-03, -7.158e-04, -2.075e-03, -3.139e-03, -9.921e-04, -4.391e-04), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.473e-03, 7.623e-04, -2.657e-03, 2.371e-03, 1.076e-03, 1.189e-03, 5.013e-03, 3.062e-03, 2.850e-03, 2.484e-03, -3.508e-03, 2.726e-03, -2.349e-03, -3.023e-03, -8.866e-04, 1.186e-03), r2);\n\tr0 = MulAdd(s1_0_0, M4(1.617e-02, 1.368e-03, 1.282e-03, -7.570e-04, -2.122e-02, 4.279e-03, 3.629e-03, -1.049e-05, -2.797e-01, 3.230e-02, 5.109e-02, -1.981e-02, -7.806e-04, -9.850e-03, 2.019e-03, 1.044e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.673e-02, 1.555e-03, 4.422e-03, 2.800e-05, 2.755e-03, -3.241e-03, -3.060e-03, -1.218e-03, 1.184e-01, 7.401e-03, -2.288e-03, 1.125e-02, -7.962e-03, -1.169e-02, 4.686e-03, 5.634e-04), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.356e-02, 4.424e-04, 4.252e-04, -8.598e-04, -1.065e-02, -2.033e-04, 1.511e-04, -9.227e-04, -7.530e-02, 1.856e-02, 3.261e-02, -1.910e-04, -7.558e-03, -9.525e-03, 1.382e-03, 3.340e-04), r2);\n\tr0 = MulAdd(s1_0_1, M4(-2.418e-02, 4.036e-02, 1.022e-02, 4.612e-03, -8.716e-02, -1.274e-01, 1.341e-02, -1.122e-03, -6.116e-03, 1.082e-01, -4.825e-02, 1.418e-01, 1.159e-03, -3.122e-03, 1.561e-03, -1.744e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(-3.215e-02, 3.869e-02, 1.457e-02, 4.806e-03, 1.886e-02, 4.031e-02, -1.298e-02, -5.372e-03, 7.438e-02, 1.270e-01, 3.217e-02, -5.818e-03, 7.352e-03, -2.614e-03, -1.102e-03, -5.843e-04), r1);\n\tr2 = MulAdd(s1_0_1, M4(-3.021e-02, 3.822e-02, 8.236e-03, 1.798e-03, -3.314e-02, -4.700e-02, 3.839e-05, -2.583e-03, 2.522e-02, 1.093e-01, -1.169e-02, 6.371e-02, 7.959e-03, -9.175e-04, 2.713e-03, -1.839e-03), r2);\n\tr0 = MulAdd(s1_0_2, M4(-9.588e-03, -2.434e-02, -1.172e-03, -6.585e-03, 1.939e-03, -2.126e-02, 2.092e-04, 6.425e-03, -5.868e-03, -2.057e-02, -1.302e-02, 2.587e-02, 7.273e-04, -2.648e-03, -3.690e-04, -1.632e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.170e-02, -2.656e-02, -7.455e-05, -4.592e-03, 1.646e-03, -7.441e-05, -1.855e-04, -1.913e-03, 2.771e-03, 7.756e-03, 5.570e-03, -1.160e-02, 4.912e-04, -4.118e-04, -1.457e-03, -1.501e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(-7.782e-03, -2.339e-02, -1.366e-03, -5.595e-03, 7.226e-04, -8.168e-03, -9.056e-04, 1.328e-03, 2.188e-03, -7.152e-03, -3.225e-03, 4.278e-03, 3.600e-04, -4.734e-04, -1.103e-03, -1.805e-03), r2);\n\tr0 = MulAdd(s1_1_0, M4(4.016e-02, 1.449e-03, 5.090e-02, -2.340e-03, 3.625e-02, -2.127e-03, -1.325e-01, 2.041e-02, -6.796e-02, -8.171e-02, -3.839e-01, 4.416e-02, 1.108e-01, -1.045e-03, 3.292e-02, -3.945e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(4.789e-02, 2.365e-03, 6.506e-02, -1.541e-03, -1.303e-02, -5.702e-03, 3.871e-02, -8.905e-03, 3.967e-02, 3.517e-02, 2.828e-01, 6.871e-03, 2.368e-01, -1.466e-02, -1.701e-03, -7.767e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(4.072e-02, 2.390e-03, 5.530e-02, -2.220e-03, 8.291e-03, -1.399e-03, -5.394e-02, 1.713e-03, -2.425e-02, -2.423e-02, -6.639e-02, 1.930e-02, 1.716e-01, 3.278e-03, 1.616e-02, -1.492e-02), r2);\n\tr0 = MulAdd(s1_1_1, M4(4.626e-02, 1.353e-01, -3.682e-01, 1.636e-01, 4.425e-01, 1.831e-01, -6.920e-02, -5.332e-01, -1.691e-02, 2.646e-01, 1.420e-01, -3.365e-02, 7.177e-02, -2.311e-01, -2.849e-02, -3.357e-05), r0);\n\tr1 = MulAdd(s1_1_1, M4(5.749e-02, 1.606e-01, -4.074e-01, 1.995e-01, -1.446e-01, -4.460e-02, 8.444e-03, 1.753e-01, -2.556e-02, -1.528e-01, -1.703e-01, -3.701e-01, -1.109e-01, -4.294e-01, 6.232e-03, -1.127e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(4.255e-02, 1.380e-01, -3.506e-01, 1.697e-01, 1.479e-01, 5.880e-02, -2.589e-02, -1.836e-01, -1.493e-02, 6.023e-02, -3.991e-03, -1.719e-01, -1.574e-02, -3.174e-01, -1.099e-02, -6.192e-02), r2);\n\tr0 = MulAdd(s1_1_2, M4(-1.403e-02, -2.827e-02, -2.510e-04, -5.920e-02, -1.334e-02, 6.530e-02, -2.082e-02, 5.410e-02, 1.134e-03, -1.104e-02, 2.590e-02, -2.388e-03, 1.813e-03, 1.941e-02, 5.429e-03, -1.690e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-1.428e-02, -3.164e-02, -3.332e-03, -5.774e-02, 4.656e-03, -3.308e-02, 1.026e-02, -1.997e-02, -5.187e-03, 1.008e-03, -7.737e-03, -1.421e-03, 5.043e-04, -3.769e-03, -4.326e-03, 1.365e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-4.187e-03, -1.445e-02, 6.093e-03, -4.319e-02, -7.396e-04, 2.753e-02, -3.874e-03, 2.133e-02, -8.486e-04, -3.569e-03, 1.053e-02, 2.938e-03, -9.533e-04, 1.144e-02, -1.218e-03, -1.378e-03), r2);\n\tr0 = MulAdd(s1_2_0, M4(5.693e-04, 2.495e-03, 1.858e-02, 3.193e-04, -1.960e-02, -9.866e-03, 2.074e-02, 3.489e-03, -2.184e-02, 1.935e-02, 8.623e-02, -3.504e-02, 8.023e-03, -2.465e-04, -7.424e-02, -3.068e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(2.171e-03, 3.035e-03, 1.668e-02, 7.540e-04, 6.391e-03, 1.366e-03, -1.191e-02, -5.651e-03, 1.315e-02, -8.273e-03, 6.740e-03, 1.616e-02, -2.749e-03, -6.284e-03, 5.893e-02, -2.167e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(5.373e-04, 2.422e-03, 1.517e-02, -1.968e-04, -7.088e-03, -4.063e-03, 3.579e-03, -7.122e-05, -4.963e-03, 1.595e-03, 4.069e-02, -1.297e-02, 5.807e-03, 2.090e-03, -3.079e-04, -3.451e-03), r2);\n\tr0 = MulAdd(s1_2_1, M4(3.447e-03, 2.954e-03, 5.597e-02, 5.463e-02, -1.553e-02, -1.028e-02, 1.008e-01, 1.017e-01, 1.887e-02, 1.297e-02, -5.271e-02, 8.472e-02, -1.642e-02, 1.314e-03, 4.431e-02, 4.229e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(4.351e-03, 4.925e-03, 6.958e-02, 5.729e-02, 7.421e-03, 5.597e-03, -3.715e-02, -2.667e-02, -1.315e-02, 3.543e-04, 1.573e-02, -2.093e-02, 3.382e-02, 5.554e-03, 1.392e-01, 1.928e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.890e-03, 6.322e-04, 5.131e-02, 4.798e-02, -1.892e-03, -1.642e-03, 3.930e-02, 3.718e-02, 3.898e-03, 7.189e-03, -1.505e-02, 3.552e-02, -4.470e-03, -4.534e-03, 6.249e-02, 8.716e-02), r2);\n\tr0 = MulAdd(s1_2_2, M4(2.417e-03, 4.439e-03, -2.110e-04, 5.276e-03, -9.443e-04, 6.252e-03, 9.919e-03, 2.190e-02, 3.569e-03, -3.829e-03, -4.808e-03, -6.245e-03, 6.577e-03, 2.386e-02, -2.978e-03, -4.453e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(2.164e-03, 7.003e-03, 2.695e-03, 9.609e-03, 2.058e-03, 2.885e-03, -2.472e-03, -8.467e-03, -7.350e-04, -3.317e-03, 2.901e-03, 2.509e-03, 4.115e-04, 1.353e-03, 1.828e-03, 5.922e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(5.083e-03, 9.730e-03, 5.947e-03, 1.185e-02, 3.152e-04, 5.266e-03, 5.606e-03, 1.129e-02, -2.032e-04, -4.024e-03, -9.635e-04, -9.475e-04, 1.399e-03, 7.455e-03, -1.828e-03, -4.958e-03), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.297e-02, 3.403e-04, 2.284e-03, 1.404e-03, 1.509e-02, 5.169e-03, -2.517e-03, -3.511e-04, 6.510e-03, -1.720e-03, -8.420e-04, 1.159e-03, -2.342e-03, 8.941e-03, -3.242e-03, -1.085e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.141e-02, 8.683e-04, 1.613e-03, 9.444e-04, 1.923e-02, 4.951e-03, -3.433e-03, -9.007e-04, 7.993e-03, -2.382e-04, -1.070e-03, -2.624e-05, 5.843e-03, 1.203e-02, -6.406e-03, -1.056e-04), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.120e-02, 1.143e-03, 2.263e-03, 1.747e-03, 1.319e-02, 2.335e-03, -4.374e-03, -9.625e-04, 9.735e-03, 1.797e-04, 3.033e-04, 7.613e-04, 5.577e-03, 8.461e-03, -2.743e-03, -1.472e-04), r2);\n\tr0 = MulAdd(s0_0_1, M4(5.873e-03, 8.753e-03, -8.361e-03, -1.985e-04, 5.172e-02, 5.692e-02, -5.222e-03, -4.143e-03, 3.430e-02, 2.167e-02, 1.290e-02, 6.440e-03, -5.265e-03, 2.135e-03, -3.515e-03, 9.899e-05), r0);\n\tr1 = MulAdd(s0_0_1, M4(1.327e-02, 3.042e-03, -1.036e-02, -1.676e-03, 6.043e-02, 6.214e-02, -6.608e-03, -4.326e-03, 3.622e-02, 2.460e-02, 1.669e-02, 8.192e-03, -1.255e-02, -1.449e-03, -9.288e-04, -3.188e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.251e-02, 7.559e-03, -9.357e-03, 3.568e-04, 5.014e-02, 5.261e-02, -7.905e-03, -6.691e-03, 2.805e-02, 2.093e-02, 1.358e-02, 6.390e-03, -1.117e-02, 5.956e-05, -5.095e-03, -5.471e-04), r2);\n\tr0 = MulAdd(s0_0_2, M4(4.711e-03, 2.014e-03, 2.055e-04, 3.117e-03, 1.888e-03, 1.358e-02, 3.016e-03, -2.617e-03, -2.140e-03, 1.287e-02, 3.460e-03, 8.086e-03, 5.372e-04, 1.988e-03, 3.314e-04, 1.168e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(4.721e-03, 6.007e-03, 3.220e-04, 1.501e-03, 2.015e-03, 1.892e-02, 3.352e-03, -2.037e-03, -1.374e-03, 1.267e-02, 3.189e-03, 9.188e-03, 8.195e-04, 4.720e-04, 1.293e-03, 1.383e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(4.045e-03, 5.672e-03, 1.561e-03, 1.869e-03, 8.481e-04, 1.386e-02, 2.981e-03, -2.798e-03, -5.101e-04, 1.176e-02, 3.879e-03, 9.656e-03, 7.370e-04, 4.618e-04, 1.081e-03, 1.174e-03), r2);\n\tr0 = MulAdd(s0_1_0, M4(2.875e-02, -5.676e-03, 1.431e-02, 1.008e-03, -4.029e-02, 1.618e-02, 3.323e-02, 7.452e-03, 1.490e-02, 7.911e-03, 2.022e-02, -1.302e-04, -3.721e-01, 4.345e-02, -1.378e-03, 3.860e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(4.578e-02, -7.311e-03, 1.287e-02, 4.853e-04, -5.385e-02, 2.152e-02, 4.634e-02, 3.349e-03, 1.872e-02, 9.084e-03, 1.997e-02, 9.487e-04, -4.689e-01, 4.490e-02, 1.971e-03, 3.262e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(4.333e-02, -2.865e-03, 1.604e-02, 3.793e-03, -4.493e-02, 1.293e-02, 4.118e-02, 1.371e-03, 1.202e-02, 5.722e-03, 1.938e-02, -2.590e-04, -4.209e-01, 2.621e-02, -7.407e-03, 2.411e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(-3.154e-01, 1.753e-01, 1.057e-01, 5.212e-02, -7.251e-02, -2.358e-01, 1.459e-01, 1.510e-01, -1.275e-01, -3.238e-02, -3.126e-02, 8.143e-03, -2.149e-02, 1.130e-01, -1.483e-02, 5.968e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-3.756e-01, 2.106e-01, 1.275e-01, 5.536e-02, -5.324e-02, -2.686e-01, 1.801e-01, 1.851e-01, -1.588e-01, -4.455e-02, -5.015e-02, 3.769e-03, -8.873e-03, 1.284e-01, -1.682e-02, 7.300e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-3.205e-01, 1.754e-01, 1.086e-01, 5.654e-02, -4.798e-02, -2.114e-01, 1.538e-01, 1.655e-01, -1.195e-01, -3.133e-02, -3.576e-02, 9.358e-03, 3.068e-03, 1.223e-01, -4.160e-03, 7.153e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(1.480e-02, -1.352e-02, -9.426e-03, -5.077e-03, 6.821e-03, 3.609e-02, -1.782e-03, 3.308e-02, 9.016e-03, -6.567e-02, 4.016e-03, -2.015e-02, -1.680e-03, -1.535e-03, 3.493e-03, -1.378e-03), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.347e-02, -1.522e-02, -1.138e-02, -4.766e-03, 6.745e-03, 4.646e-02, -8.097e-05, 3.992e-02, 3.173e-03, -7.593e-02, 7.738e-03, -2.340e-02, 1.569e-03, -1.941e-03, 2.846e-03, -2.976e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.220e-02, -2.314e-02, -1.514e-02, -1.120e-02, 1.194e-03, 2.895e-02, -4.182e-03, 2.912e-02, -1.499e-03, -6.862e-02, 3.577e-03, -2.091e-02, 1.395e-03, 9.690e-04, 4.198e-03, 7.082e-04), r2);\n\tr0 = MulAdd(s0_2_0, M4(-5.205e-03, 9.176e-04, 8.639e-03, 4.060e-03, -2.318e-03, -2.417e-04, -1.175e-02, 7.902e-03, 3.191e-03, -6.906e-04, 4.389e-03, 4.275e-03, -2.835e-02, -6.059e-03, 9.009e-02, 4.846e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-9.870e-03, 1.158e-03, 5.152e-03, 2.828e-03, 6.597e-04, 1.574e-03, -1.688e-02, 9.491e-03, 2.671e-03, -7.261e-04, 5.671e-03, 4.591e-03, -2.022e-02, 2.170e-03, 1.323e-01, 6.569e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-5.250e-03, 1.082e-03, 8.874e-03, 4.171e-03, 1.568e-03, 8.084e-06, -1.203e-02, 7.340e-03, 9.510e-04, -1.302e-03, 1.640e-03, 2.558e-03, -1.739e-02, -4.222e-03, 1.058e-01, 4.722e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(9.011e-03, -1.474e-02, 5.930e-03, 2.131e-02, -1.314e-03, 2.921e-04, -2.078e-02, -5.335e-02, -3.744e-04, 6.778e-03, -6.806e-02, -1.794e-02, 4.826e-03, 9.791e-03, 9.883e-03, 7.983e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.152e-02, -1.424e-02, 2.447e-03, 3.219e-02, -5.572e-03, 1.461e-03, -2.939e-02, -6.958e-02, -1.605e-03, 6.878e-03, -7.790e-02, -1.918e-02, -2.971e-03, 1.939e-03, 2.450e-03, 9.248e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(9.169e-03, -1.137e-02, -3.563e-03, 2.282e-02, 2.569e-03, 8.888e-03, -1.086e-02, -4.285e-02, -3.592e-03, 4.748e-03, -6.714e-02, -1.754e-02, 6.820e-03, 1.582e-02, 1.811e-02, 1.042e-01), r2);\n\tr0 = MulAdd(s0_2_2, M4(2.750e-03, -7.668e-03, -1.038e-02, -1.408e-02, -1.849e-04, -4.000e-03, -1.393e-03, 6.817e-03, -1.195e-03, -1.053e-03, 3.385e-03, -4.876e-02, -5.534e-04, -2.032e-03, 1.182e-03, 9.085e-04), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.484e-03, -1.023e-02, -1.098e-02, -2.271e-02, -3.095e-03, -4.057e-03, -1.145e-03, 1.376e-02, 3.746e-03, -1.608e-03, -2.197e-03, -6.117e-02, 1.482e-05, -3.259e-03, 6.782e-04, -1.194e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(2.793e-03, -9.054e-03, -1.190e-02, -2.022e-02, -2.482e-03, -4.974e-03, -3.369e-03, 8.504e-03, -3.237e-03, -6.782e-03, -5.959e-03, -5.969e-02, 3.547e-04, -1.218e-03, 2.947e-03, 3.374e-03), r2);\n\tr0 = MulAdd(s1_0_0, M4(2.082e-02, 1.650e-04, -9.168e-03, -6.860e-04, -2.396e-02, -1.023e-02, -5.296e-03, 6.179e-03, 6.817e-02, -2.971e-02, -3.920e-03, -1.747e-02, 1.826e-02, -3.857e-03, 9.980e-03, -3.430e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(2.309e-02, 2.664e-03, -1.387e-02, -2.239e-03, -4.680e-02, -7.800e-03, -2.054e-03, 2.955e-03, 9.941e-02, -3.034e-02, -4.016e-04, -1.683e-02, 2.185e-02, -2.140e-03, 1.085e-02, -2.688e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.542e-02, 3.182e-03, -7.843e-03, 5.699e-04, -3.047e-02, -8.638e-03, -3.578e-03, 3.452e-03, 7.986e-02, -2.481e-02, -1.098e-04, -1.340e-02, 2.441e-02, -2.965e-03, 8.010e-03, -4.779e-03), r2);\n\tr0 = MulAdd(s1_0_1, M4(5.240e-02, 9.207e-02, -1.541e-02, -9.027e-03, -2.135e-02, -7.996e-02, 7.540e-03, -1.435e-02, -2.585e-03, 8.081e-02, 6.444e-03, 1.994e-02, -2.354e-02, -3.348e-03, 9.822e-03, 5.941e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(5.039e-02, 1.013e-01, -1.800e-02, -1.231e-02, -5.630e-03, -8.667e-02, 3.376e-04, -3.065e-03, 6.414e-03, 9.910e-02, 1.174e-03, 2.264e-02, -2.520e-02, -7.152e-03, 1.538e-02, 1.025e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(4.968e-02, 9.267e-02, -1.298e-02, -9.076e-03, -5.891e-03, -7.303e-02, 5.177e-03, -6.110e-03, 3.012e-03, 8.783e-02, 5.383e-03, 1.797e-02, -1.964e-02, 5.763e-04, 1.489e-02, 1.222e-02), r2);\n\tr0 = MulAdd(s1_0_2, M4(1.750e-03, -2.510e-03, 1.944e-04, -1.533e-02, 3.115e-03, 3.104e-03, -3.905e-03, 9.313e-03, -6.715e-04, -2.605e-03, -1.477e-03, 1.180e-03, 1.493e-03, 9.985e-03, -1.399e-03, 2.005e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(8.008e-04, -5.356e-03, -9.297e-04, -1.407e-02, 4.331e-03, 1.289e-02, -5.142e-03, 8.913e-03, -1.879e-03, -8.053e-04, -9.269e-04, 5.859e-04, 1.026e-03, 1.242e-02, -3.218e-03, 4.863e-05), r1);\n\tr2 = MulAdd(s1_0_2, M4(2.206e-03, -1.746e-03, 2.152e-04, -1.169e-02, 2.765e-03, 7.138e-03, -3.561e-03, 8.392e-03, -9.828e-04, -1.156e-03, -1.251e-03, -1.873e-04, 1.179e-03, 9.767e-03, -4.001e-03, -1.965e-03), r2);\n\tr0 = MulAdd(s1_1_0, M4(2.582e-02, -1.531e-02, -5.798e-02, 8.712e-03, 2.706e-02, -5.403e-03, -3.301e-02, -8.492e-03, -1.212e-02, -1.354e-02, -3.465e-01, -5.382e-02, -2.398e-03, 1.496e-04, 2.957e-02, 1.125e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(2.831e-02, -1.983e-02, -6.372e-02, 1.485e-02, 4.285e-02, -1.067e-02, -6.020e-02, -4.802e-04, -1.945e-03, -2.045e-02, -4.150e-01, -6.224e-02, -5.121e-03, 4.203e-04, 4.798e-02, 1.137e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(2.386e-02, -1.571e-02, -5.911e-02, 1.464e-02, 3.845e-02, -6.626e-03, -4.552e-02, -3.919e-03, 6.413e-04, -5.990e-03, -3.662e-01, -4.895e-02, -7.662e-03, -2.372e-03, 4.258e-02, 1.030e-02), r2);\n\tr0 = MulAdd(s1_1_1, M4(6.342e-02, 1.583e-01, -1.323e-01, -2.183e-01, 6.628e-02, 1.047e-01, 1.130e-01, -3.234e-01, 2.576e-02, 1.134e-01, 1.715e-02, 1.633e-01, 5.359e-02, -5.486e-02, 2.114e-01, -3.163e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(7.056e-02, 1.843e-01, -1.614e-01, -2.466e-01, 5.064e-02, 1.323e-01, 1.315e-01, -3.987e-01, 1.837e-02, 1.195e-01, 2.418e-02, 1.655e-01, 7.379e-02, -6.324e-02, 2.484e-01, -3.507e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(5.884e-02, 1.470e-01, -1.470e-01, -2.329e-01, 5.900e-02, 1.057e-01, 1.219e-01, -3.275e-01, 5.786e-03, 8.938e-02, 8.081e-03, 1.316e-01, 6.374e-02, -5.318e-02, 2.065e-01, -3.026e-01), r2);\n\tr0 = MulAdd(s1_1_2, M4(-6.885e-03, -2.141e-02, 1.335e-03, -4.118e-03, 5.106e-03, 1.935e-02, 2.819e-03, 2.399e-02, 2.420e-03, 3.747e-04, -1.042e-03, -2.979e-03, 4.659e-03, 8.815e-03, -6.737e-03, 2.728e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-1.247e-02, -2.583e-02, 5.803e-03, -7.559e-03, 6.064e-03, 2.016e-02, 1.970e-03, 2.863e-02, 1.723e-03, 1.790e-03, -1.333e-03, 5.426e-05, 4.130e-04, 1.245e-02, -1.004e-02, 4.065e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-6.152e-03, -1.576e-02, 7.381e-03, -1.260e-04, 2.963e-03, 1.789e-02, -1.192e-03, 2.261e-02, 1.253e-03, -1.110e-03, -2.266e-03, -3.686e-03, 1.139e-03, 1.003e-02, -6.888e-03, 3.971e-02), r2);\n\tr0 = MulAdd(s1_2_0, M4(4.242e-03, 1.781e-03, 1.555e-02, 2.215e-04, -1.635e-03, -2.985e-03, 3.156e-03, -3.005e-03, -1.029e-02, 3.503e-04, -2.351e-02, -5.189e-03, 5.312e-03, -9.529e-04, 3.171e-03, 3.506e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(5.597e-04, -1.904e-04, 1.933e-02, -2.140e-03, -3.012e-03, -3.450e-03, 3.333e-03, -3.848e-03, -9.341e-03, -8.949e-04, -2.303e-02, -8.169e-03, 6.115e-03, 7.242e-04, -1.091e-03, 3.303e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-4.464e-04, 3.732e-04, 1.163e-02, -3.319e-03, -3.481e-03, -2.388e-03, 3.790e-03, -2.950e-03, -8.403e-03, 3.058e-03, -1.413e-02, -8.683e-04, 4.809e-03, -1.082e-03, -3.828e-03, 1.616e-03), r2);\n\tr0 = MulAdd(s1_2_1, M4(-2.026e-03, -5.779e-03, 2.666e-02, 3.501e-02, 3.885e-03, 3.408e-03, 1.040e-02, 2.350e-02, -1.573e-03, -3.044e-03, -8.319e-03, 6.907e-03, -1.502e-03, -5.540e-03, -8.865e-03, -4.857e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(-2.467e-03, -6.972e-03, 3.552e-02, 4.651e-02, 6.440e-03, 6.382e-04, 1.635e-02, 3.282e-02, 2.233e-03, -3.904e-03, -3.679e-03, 9.958e-03, -5.872e-05, -4.106e-03, -8.350e-03, -1.041e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-2.937e-03, -8.312e-03, 2.756e-02, 3.533e-02, 7.999e-04, -2.864e-03, 8.320e-03, 2.124e-02, -3.564e-03, -8.759e-03, -1.347e-02, -2.461e-03, 8.247e-04, -5.305e-03, -5.502e-03, -8.201e-03), r2);\n\tr0 = MulAdd(s1_2_2, M4(1.425e-03, 2.989e-03, 1.425e-03, 4.710e-03, 4.376e-03, 1.611e-03, 4.858e-03, 1.094e-02, 5.377e-04, 8.885e-04, -1.202e-03, 2.755e-04, -1.551e-03, -6.357e-04, 4.023e-04, -1.826e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(3.576e-03, 4.256e-03, -2.380e-03, 6.234e-03, 5.010e-03, -1.737e-03, 3.735e-03, 1.146e-02, 4.841e-04, 8.499e-04, 3.145e-04, -1.383e-04, -2.832e-03, 5.152e-04, 1.506e-03, -2.418e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(4.230e-03, 4.923e-03, 1.688e-03, 5.974e-03, 2.204e-03, -2.780e-03, 8.698e-04, 7.437e-03, 5.867e-04, 2.496e-04, -5.537e-04, -1.226e-03, -1.401e-03, 1.725e-03, 9.528e-04, -1.080e-03), r2);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(2.950e-03, 2.107e-03, 1.546e-03, 2.303e-03, 3.891e-03, 3.047e-03, -6.913e-03, -3.387e-03, -7.714e-04, -2.049e-03, 3.545e-03, -4.877e-04, -1.447e-03, 4.077e-03, -2.351e-03, -4.208e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(2.786e-03, 2.105e-03, 1.828e-03, 2.355e-03, 2.333e-03, 3.117e-03, -8.882e-03, -2.877e-03, -1.093e-03, 1.163e-04, 3.346e-03, 5.906e-04, -6.096e-03, -1.838e-03, 1.678e-03, 5.966e-04), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.185e-03, 1.141e-03, 5.070e-04, 1.844e-03, 3.700e-04, 2.192e-03, -4.702e-03, -2.630e-03, -2.374e-03, -1.429e-03, 3.564e-03, -7.271e-05, -6.681e-03, 2.200e-04, 2.326e-03, -5.658e-04), r2);\n\tr0 = MulAdd(s0_0_1, M4(-4.026e-03, 7.874e-03, 1.189e-03, 9.629e-04, 8.322e-03, 5.028e-03, -2.613e-03, -1.168e-02, -2.311e-03, -3.347e-03, 2.477e-03, 5.223e-03, 9.545e-02, 9.839e-02, -2.600e-02, 2.748e-03), r0);\n\tr1 = MulAdd(s0_0_1, M4(-3.359e-03, 4.276e-03, 2.716e-03, 9.492e-04, 1.402e-02, -6.541e-04, -5.176e-03, -1.514e-02, -3.287e-03, -7.154e-03, 4.261e-03, 4.225e-03, -3.575e-02, -3.046e-02, 2.303e-03, -1.981e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(-7.139e-03, 2.676e-03, -1.860e-03, -9.392e-04, 2.446e-03, -6.027e-03, 1.308e-03, -7.375e-03, -3.255e-03, -5.066e-03, 2.110e-03, 4.761e-03, 2.472e-02, 2.898e-02, -9.919e-03, 1.089e-03), r2);\n\tr0 = MulAdd(s0_0_2, M4(4.736e-02, -6.960e-02, 1.699e-02, -2.847e-02, 5.135e-04, 1.882e-03, -3.429e-04, -3.766e-04, -1.263e-02, -1.078e-02, 5.014e-03, 4.844e-03, 3.529e-04, 3.792e-02, -2.156e-03, -1.835e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(4.148e-02, -7.708e-02, 1.293e-02, -1.843e-02, -3.798e-04, 7.783e-03, -2.308e-04, 2.734e-04, -1.134e-02, -7.750e-03, 5.381e-03, 7.111e-03, 4.047e-03, -1.152e-02, -1.425e-04, 1.145e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(4.345e-02, -6.475e-02, 1.760e-02, -1.704e-02, 1.110e-04, 3.045e-03, 1.764e-04, 2.046e-03, -1.399e-02, -1.102e-02, 4.460e-03, 4.683e-03, 2.235e-03, 1.169e-02, -1.092e-03, 9.145e-04), r2);\n\tr0 = MulAdd(s0_1_0, M4(2.214e-03, -8.231e-04, 1.710e-03, 1.726e-03, -2.448e-02, 7.220e-03, 4.360e-02, 1.721e-03, 1.184e-02, 2.395e-03, -9.124e-03, -8.161e-04, -1.401e-01, 2.167e-02, 3.659e-02, -6.331e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.485e-03, -1.339e-03, 1.437e-03, 1.082e-03, -2.341e-02, 9.877e-03, 5.359e-02, 4.526e-04, 8.473e-03, 3.486e-03, -1.023e-02, 2.395e-03, 3.991e-02, -9.591e-03, -7.464e-03, 3.002e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.809e-03, -1.414e-03, 1.148e-03, 4.682e-04, -2.692e-02, 5.082e-03, 4.254e-02, -2.742e-04, 1.335e-02, 4.952e-03, -1.084e-02, -3.812e-04, -5.254e-02, 4.204e-03, 9.480e-03, -1.147e-03), r2);\n\tr0 = MulAdd(s0_1_1, M4(9.150e-03, 9.353e-03, 6.429e-03, 4.174e-03, -8.486e-02, -1.358e-01, 9.694e-02, 1.294e-01, 1.372e-01, 5.581e-02, -1.601e-01, -7.551e-02, -4.327e-02, -5.326e-01, 3.958e-01, 2.176e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.170e-02, 1.874e-02, 9.556e-03, 4.099e-03, -9.741e-02, -1.509e-01, 1.166e-01, 1.562e-01, 1.498e-01, 5.821e-02, -1.704e-01, -8.374e-02, 2.077e-02, 1.929e-01, -1.372e-01, -6.277e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.236e-02, 2.005e-02, 1.245e-02, 4.593e-03, -8.803e-02, -1.353e-01, 8.430e-02, 1.194e-01, 1.323e-01, 5.602e-02, -1.558e-01, -7.495e-02, -1.083e-02, -1.685e-01, 1.116e-01, 5.827e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(1.057e-01, -1.276e-01, 1.243e-01, -1.264e-01, 1.070e-03, 3.474e-03, 2.669e-04, 1.824e-02, 5.362e-03, 8.132e-02, -7.705e-03, -9.569e-02, -1.129e-02, 7.886e-02, 9.129e-03, 7.646e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(1.309e-01, -1.590e-01, 1.346e-01, -1.599e-01, 3.470e-03, 2.635e-03, 6.722e-04, 2.308e-02, 1.152e-02, 9.352e-02, -7.359e-03, -1.038e-01, 3.669e-03, -2.535e-02, 3.815e-03, -2.770e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.194e-01, -1.448e-01, 1.174e-01, -1.422e-01, 8.745e-05, -1.380e-03, -1.411e-03, 1.357e-02, 8.878e-03, 8.079e-02, -1.046e-02, -9.597e-02, -3.423e-03, 2.900e-02, 7.103e-03, 2.733e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(6.268e-03, -9.532e-04, 7.446e-03, -3.304e-03, -2.745e-03, -7.572e-05, -4.430e-03, -3.850e-04, -3.185e-03, -1.865e-03, 1.107e-02, 3.784e-03, 1.667e-02, 2.943e-03, -5.995e-02, 4.423e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(8.442e-03, -9.426e-04, 8.456e-03, -3.592e-03, -2.019e-03, -5.636e-04, -3.596e-03, 6.508e-04, -2.292e-03, -7.316e-04, 5.359e-03, 2.790e-03, -2.079e-03, 1.133e-03, 1.223e-02, -2.174e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(6.103e-03, -2.425e-03, 6.769e-03, -4.353e-03, -1.469e-03, 8.808e-05, -2.154e-03, -7.687e-04, -2.161e-03, -8.276e-04, 9.003e-03, 4.127e-03, 5.801e-03, 9.809e-04, -2.257e-02, 8.324e-04), r2);\n\tr0 = MulAdd(s0_2_1, M4(-3.978e-02, 1.609e-02, -3.629e-02, 2.795e-02, 1.049e-02, 5.956e-03, -1.117e-02, -1.471e-02, -2.206e-03, -3.661e-03, 1.899e-02, 1.323e-02, -8.988e-03, 9.655e-03, -6.116e-02, -1.890e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-5.622e-02, 1.821e-02, -5.847e-02, 3.650e-02, 9.441e-03, 6.585e-03, -1.168e-02, -1.303e-02, -5.507e-03, -4.078e-03, 1.813e-02, 8.329e-03, -7.450e-04, -6.438e-03, 1.681e-02, 6.191e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-5.439e-02, 1.557e-02, -5.506e-02, 3.591e-02, 8.627e-03, 6.303e-03, -3.641e-03, -5.742e-03, -2.163e-03, -3.370e-03, 2.421e-02, 1.285e-02, -1.412e-03, 3.042e-03, -1.548e-02, -5.800e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(-3.968e-03, -7.697e-03, 2.555e-02, -3.341e-02, -1.279e-04, 3.614e-03, 1.499e-03, 6.074e-04, -1.468e-03, -3.165e-03, 4.161e-03, 1.018e-02, 4.572e-04, 2.465e-02, -2.520e-02, 2.355e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-2.102e-03, 3.195e-03, 3.724e-02, -4.001e-02, 7.486e-04, 2.450e-03, 2.464e-03, -7.771e-04, -1.777e-03, -2.804e-03, 3.296e-03, 1.043e-02, -1.324e-03, -2.590e-03, 4.147e-03, -7.391e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(2.158e-03, 1.626e-03, 4.434e-02, -3.572e-02, -1.197e-04, 1.733e-03, 4.704e-04, 1.231e-04, -1.585e-03, -1.878e-03, 2.401e-03, 1.314e-02, -1.535e-04, 8.629e-03, -7.243e-03, 9.278e-03), r2);\n\tr0 = MulAdd(s1_0_0, M4(2.093e-02, 1.025e-04, 3.023e-03, 2.255e-03, -5.505e-03, -5.294e-03, -5.355e-03, -1.436e-03, -1.019e-02, 8.021e-04, -1.815e-03, 3.835e-04, 2.407e-01, -2.826e-02, -8.667e-02, 7.087e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.404e-02, 8.783e-04, 3.981e-03, 2.078e-03, -9.488e-03, -8.602e-03, -8.211e-03, -1.380e-03, -9.557e-03, 1.407e-03, -3.954e-03, 7.109e-04, -8.323e-03, 5.850e-03, 2.994e-02, -2.532e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.909e-02, 2.303e-03, 3.274e-03, 2.181e-03, -7.483e-03, -4.869e-03, -5.722e-03, 2.959e-04, -2.816e-03, 4.215e-03, -9.947e-04, 1.457e-03, 1.032e-01, -1.209e-02, -3.776e-02, 1.671e-02), r2);\n\tr0 = MulAdd(s1_0_1, M4(1.499e-02, 2.362e-02, -6.057e-03, -6.831e-03, -9.674e-03, -2.548e-03, -1.569e-02, -1.363e-02, -9.979e-03, -2.065e-02, 3.467e-03, 4.259e-03, -5.420e-01, -4.484e-01, 8.523e-02, -2.588e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(2.641e-02, 3.186e-02, -9.197e-03, -5.399e-03, -1.287e-02, -3.529e-03, -2.404e-02, -2.118e-02, -9.817e-03, -2.584e-02, 8.547e-03, 2.463e-03, 8.373e-02, 6.331e-02, -2.070e-02, 7.106e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(2.651e-02, 3.215e-02, -5.875e-03, -4.605e-03, -9.994e-03, -6.110e-03, -1.732e-02, -1.679e-02, -5.337e-03, -1.784e-02, 9.552e-03, 2.035e-03, -2.271e-01, -2.025e-01, 3.413e-02, -8.228e-02), r2);\n\tr0 = MulAdd(s1_0_2, M4(1.635e-03, 3.926e-03, 1.508e-03, -1.313e-03, -6.796e-04, -7.466e-03, -1.596e-03, -6.125e-03, -8.499e-03, 2.383e-03, 1.527e-03, 1.116e-03, -5.994e-04, -8.796e-02, -1.870e-02, 7.853e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(1.606e-03, 7.169e-03, 9.476e-04, -1.243e-03, -1.932e-03, -1.040e-02, -1.599e-03, -8.415e-03, -9.601e-03, 2.050e-03, 7.132e-04, 3.025e-03, 1.523e-03, 1.788e-02, 4.795e-03, -1.909e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(3.055e-03, 8.951e-03, 1.739e-03, -6.213e-04, 1.344e-03, -4.772e-03, -2.338e-05, -4.228e-03, -8.343e-03, 4.048e-03, 1.026e-03, 4.917e-03, -1.267e-03, -3.267e-02, -5.689e-03, 2.571e-02), r2);\n\tr0 = MulAdd(s1_1_0, M4(-1.901e-02, 7.503e-03, 1.733e-02, 3.645e-03, -4.109e-03, -1.907e-02, -2.629e-03, -1.986e-02, -4.962e-02, -2.092e-03, -3.723e-02, 5.624e-03, -3.477e-02, -1.311e-02, 3.645e-01, -3.142e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-2.604e-02, 7.965e-03, 1.401e-02, 4.057e-03, -4.988e-03, -2.680e-02, -7.277e-03, -2.660e-02, -5.726e-02, 4.324e-03, -3.436e-02, 2.537e-03, 5.286e-03, 5.611e-03, -4.109e-02, 1.813e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-2.068e-02, 6.359e-03, 2.165e-02, 8.649e-03, -7.612e-03, -2.095e-02, -8.374e-03, -2.104e-02, -4.065e-02, 3.812e-03, -1.776e-02, 7.418e-03, -1.482e-02, -6.000e-03, 1.534e-01, -8.465e-03), r2);\n\tr0 = MulAdd(s1_1_1, M4(-2.249e-01, -1.909e-01, 2.075e-01, 1.486e-01, 6.618e-02, 7.693e-02, 7.160e-02, 7.383e-02, 2.391e-01, -7.519e-02, -2.846e-02, -9.887e-02, 1.368e-01, 2.782e-02, 2.764e-01, 3.975e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-2.417e-01, -2.144e-01, 2.369e-01, 1.583e-01, 8.374e-02, 9.432e-02, 8.961e-02, 8.667e-02, 2.819e-01, -7.401e-02, -4.480e-02, -1.122e-01, -3.407e-02, -1.564e-02, -6.277e-02, -8.363e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.202e-01, -1.880e-01, 2.036e-01, 1.431e-01, 6.908e-02, 7.720e-02, 7.649e-02, 7.251e-02, 2.114e-01, -7.543e-02, -5.122e-02, -8.957e-02, 5.041e-02, -9.175e-04, 1.016e-01, 1.363e-01), r2);\n\tr0 = MulAdd(s1_1_2, M4(2.506e-03, -5.617e-02, -5.455e-03, 4.749e-02, -5.661e-03, -5.170e-03, -8.156e-03, 2.921e-03, -1.376e-02, 5.331e-02, -5.455e-03, 3.357e-02, -1.396e-02, -7.837e-02, 1.741e-02, 3.479e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(8.136e-03, -4.863e-02, -6.066e-03, 5.584e-02, -1.055e-02, -6.490e-03, -1.296e-02, 2.162e-03, -9.999e-03, 6.910e-02, -4.294e-03, 3.720e-02, 1.212e-02, 1.461e-02, 1.870e-03, -9.545e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(2.132e-03, -5.871e-02, -2.106e-03, 5.184e-02, -1.107e-02, -1.052e-02, -9.735e-03, 1.655e-03, -8.392e-03, 4.892e-02, -2.648e-03, 2.398e-02, 2.911e-04, -2.305e-02, 1.120e-02, 2.045e-02), r2);\n\tr0 = MulAdd(s1_2_0, M4(4.562e-03, -2.318e-03, -9.581e-04, -8.072e-03, -2.083e-03, -2.461e-03, -1.013e-02, -7.317e-03, -3.981e-04, 2.080e-03, 2.830e-03, 3.135e-03, 3.696e-03, 1.441e-04, 4.051e-03, -5.789e-04), r0);\n\tr1 = MulAdd(s1_2_0, M4(5.163e-03, -1.476e-03, -3.305e-03, -7.506e-03, -4.947e-03, -3.696e-03, -1.050e-02, -1.001e-02, -2.036e-04, 3.424e-03, -1.328e-02, 5.181e-03, 3.464e-03, 1.371e-03, -1.231e-03, 2.437e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(3.759e-03, -2.176e-03, -3.415e-03, -9.901e-03, -2.235e-03, -1.187e-03, -9.665e-03, -5.869e-03, 4.562e-03, 5.703e-03, -1.852e-03, 6.131e-03, 5.051e-03, 6.769e-04, 3.251e-03, -6.693e-04), r2);\n\tr0 = MulAdd(s1_2_1, M4(9.988e-04, 5.914e-03, 4.352e-04, 5.491e-03, -8.341e-03, -1.138e-02, -1.084e-03, 1.880e-03, -1.363e-02, -8.904e-03, 6.407e-02, 2.878e-02, 7.263e-03, 1.316e-03, -2.049e-02, 6.108e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.772e-03, 4.139e-03, -2.454e-03, 3.412e-03, -1.211e-02, -1.651e-02, -6.253e-03, 6.065e-04, -1.114e-02, -3.343e-03, 7.326e-02, 3.279e-02, -1.382e-03, 2.777e-03, 2.583e-03, -8.239e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.829e-04, 2.804e-03, -2.645e-03, 3.136e-03, -1.027e-02, -1.372e-02, -9.277e-03, -5.504e-03, -1.042e-02, -4.900e-03, 5.836e-02, 2.243e-02, 4.417e-03, 3.838e-03, -7.343e-03, 7.409e-04), r2);\n\tr0 = MulAdd(s1_2_2, M4(9.661e-04, -1.210e-03, -8.258e-03, -1.659e-03, -2.052e-03, 4.361e-04, -2.394e-03, -7.048e-03, -8.513e-03, -5.795e-03, -7.528e-04, 1.612e-02, -2.388e-03, 1.383e-03, 1.387e-02, -1.370e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.385e-04, 2.232e-03, -1.195e-02, -6.706e-03, -2.018e-03, -1.181e-03, -5.360e-03, -1.250e-02, -1.050e-02, -1.765e-03, -5.768e-03, 1.593e-02, -7.956e-04, 1.323e-03, 9.197e-04, 9.247e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(1.938e-03, 1.420e-03, -1.212e-02, -6.885e-03, -7.830e-04, 7.840e-04, -3.940e-03, -1.090e-02, -6.056e-03, -2.242e-03, -2.006e-03, 1.225e-02, 6.418e-04, 4.673e-03, 5.944e-03, -5.240e-04), r2);\n\tfloat2 opt = float2(GetOutputPt()), fpos = (float2(gxy) + 0.5) * opt;\n\tOUTPUT[gxy + int2(0, 0)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(0.0, 0.0) * opt, 0).rgb + MF3(r0.x, r1.x, r2.x)), 1.0);\n\tOUTPUT[gxy + int2(1, 0)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(1.0, 0.0) * opt, 0).rgb + MF3(r0.y, r1.y, r2.y)), 1.0);\n\tOUTPUT[gxy + int2(0, 1)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(0.0, 1.0) * opt, 0).rgb + MF3(r0.z, r1.z, r2.z)), 1.0);\n\tOUTPUT[gxy + int2(1, 1)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(1.0, 1.0) * opt, 0).rgb + MF3(r0.w, r1.w, r2.w)), 1.0);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy2/CuNNy-4x32-NVL.hlsl",
    "content": "// CuNNy 4x32 - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-04x32\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, x, y) t.SampleLevel(SP, pos + float2(x, y) * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T7;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T8;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T9;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T10;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T11;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T12;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T13;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T14;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T15;\n\n//!PASS 1\n//!DESC in (3x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT T0, T1, T2, T3, T4, T5, T6, T7\n\n#define L0(x, y) V3(O(INPUT, x, y).rgb)\n#define V3 MF3\n#define M3x4 MF3x4\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV3 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\tr0 = V4(-3.044e-02, 2.204e-01, 3.578e-03, -1.818e-05);\n\tr1 = V4(-1.833e-04, -9.983e-03, 5.587e-04, 2.900e-03);\n\tr2 = V4(2.285e-03, -5.204e-03, -5.944e-05, 1.765e-02);\n\tr3 = V4(1.785e-03, 2.391e-02, 1.660e-03, -1.521e-03);\n\tr4 = V4(3.657e-03, 1.430e-04, -9.372e-05, -3.161e-02);\n\tr5 = V4(1.693e-03, 1.077e-02, 1.514e-02, -6.223e-01);\n\tr6 = V4(-4.067e-03, -1.788e-02, 1.321e-02, -2.569e-02);\n\tr7 = V4(-5.985e-04, 9.972e-02, 1.096e-02, 6.194e-03);\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M3x4(-2.974e-02, 5.816e-03, 1.618e-02, 3.382e-02, 9.644e-02, -9.010e-03, -2.379e-02, 3.527e-02, 3.407e-02, -1.045e-03, 1.148e-02, -7.593e-02), r0);\n\tr1 = MulAdd(s0_0_0, M3x4(4.640e-02, -1.481e-02, 1.616e-01, 2.042e-02, 4.950e-03, 1.882e-02, -9.444e-02, -5.408e-02, -5.337e-02, -3.505e-02, -7.092e-02, 6.107e-02), r1);\n\tr2 = MulAdd(s0_0_0, M3x4(5.308e-03, 5.217e-03, 3.756e-01, 2.588e-01, 9.713e-03, -1.880e-02, 6.035e-01, 3.975e-01, 1.831e-03, 6.644e-03, 2.204e-01, 1.685e-01), r2);\n\tr3 = MulAdd(s0_0_0, M3x4(-1.182e-02, -2.707e-03, -3.426e-03, -7.050e-03, -2.419e-03, 7.397e-02, 2.912e-02, 1.071e-02, -8.691e-03, -3.814e-02, -6.166e-03, -9.052e-04), r3);\n\tr4 = MulAdd(s0_0_0, M3x4(1.651e-03, -5.984e-02, -1.453e-02, -1.946e-02, -2.091e-04, 1.042e-01, -6.092e-02, 1.352e-02, -2.027e-03, -7.498e-02, 7.012e-02, 2.039e-02), r4);\n\tr5 = MulAdd(s0_0_0, M3x4(1.025e-02, 9.142e-03, 2.869e-02, -2.501e-02, 2.327e-02, 1.543e-02, 8.012e-02, -4.183e-02, -7.327e-03, 1.158e-02, -9.207e-03, 1.114e-02), r5);\n\tr6 = MulAdd(s0_0_0, M3x4(-2.692e-02, 1.631e-03, 9.116e-03, -1.701e-02, 1.388e-02, -4.140e-02, -5.622e-02, -9.081e-02, 2.071e-02, -9.839e-04, -4.965e-03, 2.063e-02), r6);\n\tr7 = MulAdd(s0_0_0, M3x4(3.159e-03, -6.668e-03, 1.287e-02, -1.012e-02, -3.699e-03, -1.325e-02, -1.212e-02, 6.670e-02, 1.071e-02, 6.166e-03, 1.703e-03, 3.842e-02), r7);\n\tr0 = MulAdd(s0_0_1, M3x4(4.013e-02, 6.392e-02, 9.907e-02, -7.971e-02, -6.831e-02, -3.685e-02, -1.071e-01, -1.179e-01, -5.681e-03, -1.668e-03, 3.574e-03, 1.931e-01), r0);\n\tr1 = MulAdd(s0_0_1, M3x4(-8.809e-01, 1.279e-02, 3.296e-01, -9.046e-02, 6.035e-01, 3.962e-02, -1.959e-01, -1.122e-01, 2.829e-01, 2.692e-02, -1.270e-01, 2.337e-01), r1);\n\tr2 = MulAdd(s0_0_1, M3x4(-2.513e-01, 1.201e-02, -3.701e-01, -2.761e-01, -6.543e-01, -3.144e-02, -5.781e-01, -3.980e-01, -1.677e-01, -2.192e-02, -2.417e-01, -1.276e-01), r2);\n\tr3 = MulAdd(s0_0_1, M3x4(6.821e-03, -5.042e-02, 7.085e-02, -5.099e-02, -3.885e-03, 7.607e-02, 2.892e-01, 7.935e-02, 1.280e-02, 1.068e-01, 2.558e-02, -3.382e-02), r3);\n\tr4 = MulAdd(s0_0_1, M3x4(-6.924e-03, 3.048e-01, 5.834e-02, 2.509e-02, 2.815e-02, -5.683e-01, 7.086e-02, -6.539e-02, -1.133e-02, 3.802e-01, -1.294e-01, -1.139e-02), r4);\n\tr5 = MulAdd(s0_0_1, M3x4(-1.772e-02, -3.772e-02, -3.101e-02, -1.136e-02, -1.112e-02, -6.066e-02, -1.422e-01, -8.169e-02, 2.210e-02, -1.679e-02, -1.131e-02, 1.782e-02), r5);\n\tr6 = MulAdd(s0_0_1, M3x4(2.775e-02, -2.686e-01, -1.470e-01, -3.872e-02, 4.933e-03, -5.840e-01, -2.862e-01, 5.019e-02, -4.279e-02, -1.213e-01, -5.109e-02, 2.553e-02), r6);\n\tr7 = MulAdd(s0_0_1, M3x4(-5.018e-03, -2.909e-02, -8.553e-03, 6.865e-02, 1.038e-03, 7.512e-02, -1.556e-02, 5.507e-02, -3.588e-03, -1.001e-02, -4.390e-03, 9.003e-03), r7);\n\tr0 = MulAdd(s0_0_2, M3x4(-2.786e-01, 2.376e-02, 8.464e-03, 1.256e-03, -1.942e-01, -3.481e-02, -1.483e-03, -2.191e-02, -1.837e-01, -8.821e-03, -1.043e-02, 3.314e-02), r0);\n\tr1 = MulAdd(s0_0_2, M3x4(2.874e-02, 2.668e-02, -8.518e-02, -5.774e-02, -1.816e-02, 1.094e-02, 5.336e-02, -8.093e-02, -8.299e-03, -7.100e-04, 3.105e-02, 1.373e-01), r1);\n\tr2 = MulAdd(s0_0_2, M3x4(-7.133e-04, 2.438e-03, 7.956e-03, 3.987e-03, 1.405e-02, -1.561e-02, -1.694e-02, -1.035e-02, 8.688e-03, 6.049e-03, 1.090e-02, -4.012e-03), r2);\n\tr3 = MulAdd(s0_0_2, M3x4(5.491e-04, 2.735e-02, -2.576e-03, -4.157e-02, 1.689e-02, 6.888e-02, 3.825e-02, 4.337e-02, -2.787e-03, -6.740e-02, -9.787e-03, 8.524e-04), r3);\n\tr4 = MulAdd(s0_0_2, M3x4(6.789e-03, 9.914e-02, -1.473e-02, 7.000e-03, -2.617e-02, -2.503e-01, -4.754e-02, -7.263e-02, 1.881e-02, 2.085e-01, 6.859e-02, -4.031e-03), r4);\n\tr5 = MulAdd(s0_0_2, M3x4(-4.548e-03, 9.697e-03, -2.360e-02, 1.308e-02, -1.849e-02, 1.376e-02, -2.747e-02, -2.223e-03, 5.747e-03, 4.717e-03, 9.484e-03, -1.193e-02), r5);\n\tr6 = MulAdd(s0_0_2, M3x4(-5.756e-03, -2.702e-03, -7.104e-03, -7.561e-03, 3.482e-02, -1.967e-02, -3.430e-02, -4.216e-02, -2.392e-02, -9.384e-03, -1.385e-02, 1.861e-02), r6);\n\tr7 = MulAdd(s0_0_2, M3x4(-2.037e-03, -5.674e-02, -5.006e-04, 2.433e-02, -6.703e-03, 1.797e-02, -3.056e-03, 9.920e-02, -4.592e-03, 1.854e-04, 1.079e-02, 4.204e-02), r7);\n\tr0 = MulAdd(s0_1_0, M3x4(1.154e-01, 6.955e-02, 3.039e-02, -1.118e-02, -5.234e-02, -1.929e-02, -5.624e-02, -4.201e-02, -2.577e-04, 1.130e-02, 2.423e-02, 5.754e-02), r0);\n\tr1 = MulAdd(s0_1_0, M3x4(8.108e-01, 1.653e-01, 5.332e-01, -2.392e-02, -5.455e-01, 3.291e-01, -3.594e-01, -5.884e-02, -2.666e-01, 1.101e-01, -1.620e-01, 9.006e-02), r1);\n\tr2 = MulAdd(s0_1_0, M3x4(3.361e-03, -9.792e-03, -1.170e-02, -3.784e-03, -2.378e-02, -2.363e-02, 1.244e-02, -3.606e-02, -1.837e-02, -3.535e-03, 8.215e-03, -3.662e-03), r2);\n\tr3 = MulAdd(s0_1_0, M3x4(1.820e-02, 3.547e-02, 1.893e-02, -1.008e-01, -2.792e-02, 5.436e-02, -2.211e-02, 1.477e-01, -3.675e-05, 3.427e-02, -1.072e-02, -5.274e-02), r3);\n\tr4 = MulAdd(s0_1_0, M3x4(-1.562e-02, -5.786e-02, -8.226e-02, 2.199e-02, 9.642e-03, 1.017e-01, -8.032e-02, -1.630e-02, 8.885e-03, -6.238e-02, 1.724e-01, 1.337e-02), r4);\n\tr5 = MulAdd(s0_1_0, M3x4(1.517e-01, -2.804e-02, 1.184e-01, 4.834e-01, 3.966e-01, -5.289e-02, 3.738e-01, 5.642e-01, 7.935e-02, 2.730e-03, -9.612e-03, 9.057e-02), r5);\n\tr6 = MulAdd(s0_1_0, M3x4(9.201e-02, -9.386e-04, 7.166e-04, 9.941e-02, 4.050e-02, 9.533e-03, 8.119e-02, 2.989e-01, -1.230e-01, -5.387e-03, 2.641e-02, 9.315e-02), r6);\n\tr7 = MulAdd(s0_1_0, M3x4(-3.968e-03, -2.343e-02, -7.453e-03, 9.765e-03, 1.447e-02, 7.544e-02, 2.285e-02, 3.655e-02, -1.947e-02, 3.453e-03, 1.794e-02, 9.733e-03), r7);\n\tr0 = MulAdd(s0_1_1, M3x4(-1.162e-01, -3.873e-01, -8.535e-01, -2.406e-01, -3.556e-01, 7.559e-02, 9.277e-01, -6.895e-01, -1.003e-01, 2.540e-02, -7.041e-02, 9.536e-01), r0);\n\tr1 = MulAdd(s0_1_1, M3x4(-1.047e-02, -8.227e-02, -3.139e-01, 4.423e-01, -5.888e-02, -1.734e-01, 2.272e-01, 6.309e-01, 6.554e-02, -5.874e-02, 7.944e-02, -1.402e+00), r1);\n\tr2 = MulAdd(s0_1_1, M3x4(2.528e-01, 2.806e-02, 3.535e-03, 1.976e-02, 6.964e-01, 5.801e-01, -3.071e-02, 3.228e-02, 1.599e-01, 1.442e-02, 1.059e-02, -1.691e-02), r2);\n\tr3 = MulAdd(s0_1_1, M3x4(-2.937e-01, -1.422e-01, 1.057e-01, 6.701e-01, -5.137e-01, -2.321e+00, 2.510e-01, -7.832e-01, -1.728e-01, -5.838e-02, 7.674e-02, 1.223e-01), r3);\n\tr4 = MulAdd(s0_1_1, M3x4(2.773e-01, -3.752e-01, 1.291e-02, 7.874e-02, 6.004e-01, 7.194e-01, -2.561e-02, 3.290e-01, 9.685e-02, -5.096e-01, 9.131e-03, 8.575e-02), r4);\n\tr5 = MulAdd(s0_1_1, M3x4(-3.229e-02, 2.411e-01, -1.305e-01, 8.027e-03, -2.552e-02, 5.605e-01, -3.394e-01, -2.812e-02, -6.392e-02, 1.480e-01, 1.593e-02, -1.913e-02), r5);\n\tr6 = MulAdd(s0_1_1, M3x4(1.659e-01, 2.609e-01, 1.539e-01, 3.099e-02, -6.286e-02, 6.061e-01, 2.731e-01, -1.089e-03, -1.111e-01, 1.253e-01, 4.804e-02, -3.789e-02), r6);\n\tr7 = MulAdd(s0_1_1, M3x4(-2.857e-01, 2.027e-01, -9.917e-02, -3.807e-01, -5.424e-01, -2.783e-01, -2.607e-01, -5.719e-01, -2.607e-01, 1.752e-02, -2.326e-02, -2.088e-01), r7);\n\tr0 = MulAdd(s0_1_2, M3x4(2.992e-01, 6.188e-02, 1.467e-01, 1.929e-01, 2.755e-01, -2.912e-02, -1.778e-01, 4.248e-01, 1.694e-01, 2.515e-02, 3.748e-02, -6.465e-01), r0);\n\tr1 = MulAdd(s0_1_2, M3x4(-4.846e-02, -4.078e-02, -1.754e-01, -4.465e-02, 4.235e-02, -4.111e-02, 1.093e-01, -5.948e-02, 5.157e-03, -5.675e-03, 6.421e-02, 1.654e-01), r1);\n\tr2 = MulAdd(s0_1_2, M3x4(9.371e-04, -6.637e-03, -7.473e-03, 8.429e-03, -3.601e-02, -5.250e-02, 1.062e-02, 2.825e-02, 7.978e-03, 9.060e-04, -6.242e-03, -1.946e-02), r2);\n\tr3 = MulAdd(s0_1_2, M3x4(2.806e-01, 1.342e-02, -5.917e-03, 3.797e-02, 5.444e-01, 1.434e-01, -5.160e-02, -1.156e-02, 1.677e-01, 4.440e-02, 2.877e-02, -2.518e-02), r3);\n\tr4 = MulAdd(s0_1_2, M3x4(-1.823e-01, 1.403e-01, 5.511e-01, -1.519e-01, -3.842e-01, -2.733e-01, 4.991e-01, -3.688e-01, -8.660e-02, 1.857e-01, -1.059e+00, -2.105e-01), r4);\n\tr5 = MulAdd(s0_1_2, M3x4(-1.165e-01, -4.846e-03, 2.947e-02, -1.785e-02, -3.580e-01, -2.166e-02, 6.857e-02, -7.823e-03, -2.510e-02, -8.992e-03, -1.184e-03, 6.437e-03), r5);\n\tr6 = MulAdd(s0_1_2, M3x4(7.675e-02, 2.448e-03, 6.094e-03, 2.385e-02, -2.050e-02, 1.446e-02, 3.038e-02, 2.126e-02, -4.954e-02, -3.151e-03, -1.058e-02, -1.091e-03), r6);\n\tr7 = MulAdd(s0_1_2, M3x4(5.213e-03, -8.132e-02, -1.636e-01, 5.064e-02, -7.122e-03, 9.369e-02, -3.479e-01, 6.530e-02, 3.542e-02, -2.044e-03, -1.121e-01, 2.410e-02), r7);\n\tr0 = MulAdd(s0_2_0, M3x4(-9.983e-02, -4.675e-02, -2.534e-02, -2.102e-02, 6.453e-02, 8.322e-03, 3.975e-02, -3.234e-02, 6.633e-03, -2.519e-03, -1.367e-02, 5.286e-02), r0);\n\tr1 = MulAdd(s0_2_0, M3x4(-2.895e-03, 3.213e-02, -1.489e-01, -3.007e-02, -9.333e-04, 3.581e-02, 8.668e-02, 4.170e-02, 3.057e-03, -3.347e-02, 5.589e-02, -2.327e-02), r1);\n\tr2 = MulAdd(s0_2_0, M3x4(-1.181e-03, 2.548e-03, 3.606e-04, 1.148e-02, 2.003e-02, 5.356e-03, -3.127e-03, 6.422e-04, 5.320e-03, -3.323e-03, -1.061e-03, 9.240e-03), r2);\n\tr3 = MulAdd(s0_2_0, M3x4(-9.287e-03, -3.224e-03, -1.642e-02, -1.464e-04, 2.088e-02, 1.163e-02, 7.460e-03, -1.846e-02, -3.267e-03, 2.985e-03, 5.602e-03, 1.749e-02), r3);\n\tr4 = MulAdd(s0_2_0, M3x4(6.650e-03, 3.717e-02, -2.544e-02, -1.652e-02, -1.030e-02, -4.597e-02, -2.459e-03, 1.664e-03, -3.642e-04, 2.319e-02, 1.815e-02, 5.092e-03), r4);\n\tr5 = MulAdd(s0_2_0, M3x4(1.200e-02, -3.481e-03, 5.111e-02, -1.482e-02, 2.986e-03, -2.758e-02, 1.125e-01, -4.129e-02, -1.900e-02, -4.779e-03, -8.956e-03, -3.545e-02), r5);\n\tr6 = MulAdd(s0_2_0, M3x4(1.603e-01, 8.987e-03, -4.033e-03, -1.199e-01, -7.282e-02, 2.104e-02, -5.612e-02, -3.962e-01, -9.936e-02, 6.237e-03, -5.678e-03, -1.392e-01), r6);\n\tr7 = MulAdd(s0_2_0, M3x4(7.790e-03, 9.057e-03, -3.414e-03, 8.960e-04, -6.221e-03, -5.236e-02, -2.045e-02, 3.299e-02, -5.824e-03, -1.954e-03, -1.520e-02, 1.910e-02), r7);\n\tr0 = MulAdd(s0_2_1, M3x4(-8.192e-04, 5.935e-02, 7.635e-02, 6.151e-02, 8.053e-02, 1.571e-02, -9.752e-02, 2.660e-01, -2.877e-02, -2.130e-02, 2.057e-02, -3.419e-01), r0);\n\tr1 = MulAdd(s0_2_1, M3x4(4.228e-02, -1.599e-01, -2.783e-01, -4.471e-02, -2.214e-02, -2.604e-01, 1.624e-01, 1.155e-02, -1.658e-02, -2.132e-02, 1.165e-01, 4.685e-02), r1);\n\tr2 = MulAdd(s0_2_1, M3x4(-4.829e-03, -8.034e-03, 5.772e-03, -9.828e-03, -3.307e-02, -3.447e-02, 3.344e-03, -1.911e-02, 1.051e-02, -1.013e-02, -3.069e-03, 6.913e-04), r2);\n\tr3 = MulAdd(s0_2_1, M3x4(1.633e-02, 2.627e-02, -1.804e-01, -6.278e-02, -6.140e-02, 8.853e-02, -5.493e-01, 9.182e-02, 3.182e-02, 3.426e-02, -9.057e-02, -2.620e-02), r3);\n\tr4 = MulAdd(s0_2_1, M3x4(-4.620e-02, -2.618e-02, -2.281e-01, 2.857e-02, -9.801e-02, 3.951e-02, -2.213e-01, -5.846e-02, -1.325e-02, -2.225e-02, 4.564e-01, -8.528e-03), r4);\n\tr5 = MulAdd(s0_2_1, M3x4(-5.448e-03, -1.901e-01, -4.684e-02, -5.376e-03, -1.655e-03, -4.365e-01, -8.901e-02, -8.764e-02, 1.972e-02, -1.202e-01, 1.030e-02, 2.001e-02), r5);\n\tr6 = MulAdd(s0_2_1, M3x4(-8.379e-01, -1.514e-02, 7.678e-03, -1.234e-01, -8.298e-02, -9.021e-03, 7.444e-02, 7.155e-02, 9.313e-01, 2.107e-04, 5.015e-04, -9.238e-02), r6);\n\tr7 = MulAdd(s0_2_1, M3x4(1.642e-03, -4.732e-02, 9.484e-02, 9.748e-02, -7.009e-03, 9.681e-02, 2.707e-01, 7.775e-02, 8.419e-03, -1.346e-02, 5.090e-02, 3.100e-02), r7);\n\tr0 = MulAdd(s0_2_2, M3x4(2.282e-03, -3.105e-02, 7.746e-03, 6.181e-02, 4.306e-02, 1.289e-03, -1.287e-02, 1.692e-01, 9.517e-04, -4.027e-04, 1.332e-03, -2.216e-01), r0);\n\tr1 = MulAdd(s0_2_2, M3x4(1.107e-02, 2.260e-02, -1.314e-02, -5.768e-02, -1.989e-03, 1.494e-02, 9.908e-03, -9.546e-02, -1.155e-02, 1.023e-03, 4.755e-03, 1.565e-01), r1);\n\tr2 = MulAdd(s0_2_2, M3x4(-6.987e-04, 8.820e-04, -2.900e-03, -6.661e-03, 1.082e-02, -1.426e-02, -2.039e-03, 8.653e-03, -8.675e-03, 6.521e-03, 1.336e-03, 4.041e-04), r2);\n\tr3 = MulAdd(s0_2_2, M3x4(-7.801e-03, 6.607e-03, 1.564e-02, -1.087e-02, 3.054e-02, 7.879e-02, 7.496e-03, 1.701e-02, -2.353e-02, -3.627e-02, -1.873e-02, -6.498e-03), r3);\n\tr4 = MulAdd(s0_2_2, M3x4(-3.625e-02, -6.322e-02, -2.519e-01, -2.036e-02, -1.223e-01, 1.734e-01, -1.283e-01, 1.493e-01, -7.572e-03, -1.323e-01, 3.818e-01, 3.682e-02), r4);\n\tr5 = MulAdd(s0_2_2, M3x4(4.019e-03, 5.256e-03, -6.879e-03, -1.024e-02, -1.006e-02, 1.280e-02, -2.565e-02, -8.366e-03, -1.167e-02, -1.303e-02, 5.854e-03, -5.277e-04), r5);\n\tr6 = MulAdd(s0_2_2, M3x4(6.775e-02, 1.294e-02, -3.371e-03, 3.430e-02, -4.094e-02, -1.050e-03, -1.162e-02, -8.909e-02, -3.599e-02, -2.983e-03, 2.349e-02, 1.662e-04), r6);\n\tr7 = MulAdd(s0_2_2, M3x4(2.783e-01, -3.269e-02, 1.755e-01, 4.552e-02, 5.603e-01, 1.678e-02, 3.672e-01, 1.147e-01, 2.385e-01, 4.311e-04, 7.414e-02, 1.702e-02), r7);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT4[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT5[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT6[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT7[gxy] = r7;\n}\n\n//!PASS 2\n//!DESC conv1 (32x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2, T3, T4, T5, T6, T7\n//!OUT T8, T9, T10, T11, T12, T13, T14, T15\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n#define L4(x, y) V4(O(T4, x, y))\n#define L5(x, y) V4(O(T5, x, y))\n#define L6(x, y) V4(O(T6, x, y))\n#define L7(x, y) V4(O(T7, x, y))\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.141e-02, 2.476e-02, 3.770e-01, -1.679e-01, 1.694e-01, -4.229e-02, 3.307e-01, -1.541e-01, -4.606e-03, -5.384e-02, 6.337e-03, 2.222e-01, -1.408e-03, -9.722e-03, -5.535e-01, -4.218e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.068e-02, -2.957e-02, -3.077e-01, -6.680e-02, 1.185e-01, -3.350e-02, -4.233e-02, -7.875e-02, -8.043e-02, 1.124e-01, 1.067e-01, 3.194e-01, -5.309e-02, -1.447e-01, -3.998e-02, 2.337e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(-5.502e-03, 3.870e-02, -1.579e-03, -7.946e-02, -6.297e-03, 1.219e-01, -8.072e-02, 1.111e-01, -1.206e-04, -3.042e-02, -2.769e-02, 2.205e-01, -2.720e-03, 5.500e-02, -1.121e-02, 1.333e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(-7.276e-02, -4.848e-02, 7.245e-02, -1.658e-01, 1.135e-01, -3.716e-02, 3.692e-03, 3.053e-01, 1.985e-02, 5.954e-02, -5.432e-02, -1.638e-01, -6.255e-02, 6.329e-02, 1.450e-01, -6.724e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-2.256e-01, 3.795e-02, 7.451e-03, -1.585e-02, -1.533e-01, -2.161e-01, 5.315e-02, 1.954e-02, 8.549e-02, 4.753e-02, -5.012e-02, 4.575e-02, 1.378e-01, 1.032e-01, -2.688e-01, 3.161e-03), r4);\n\tr5 = MulAdd(s0_0_0, M4(-1.119e-01, -3.976e-01, -4.124e-02, -1.046e-01, 8.863e-02, -3.543e-02, 1.950e-01, -1.881e-03, 3.581e-02, 1.381e-01, 6.615e-04, -5.525e-02, 9.346e-02, 7.196e-02, 1.702e-01, -1.376e-01), r5);\n\tr6 = MulAdd(s0_0_0, M4(-1.689e-02, -2.950e-02, -7.406e-02, 1.122e-01, 1.641e-01, -1.000e-02, 1.415e-01, 2.086e-02, 8.376e-02, 8.199e-02, -5.886e-02, -1.570e-01, -6.096e-02, 4.792e-02, -5.851e-02, -7.729e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(-5.304e-02, 3.799e-02, -3.213e-02, -1.592e-01, -4.330e-02, -9.575e-02, 9.445e-02, 8.481e-02, 2.851e-02, -5.745e-02, 6.971e-02, 2.723e-01, 5.800e-02, -2.499e-02, 6.432e-02, 2.183e-01), r7);\n\tr0 = MulAdd(s0_0_1, M4(1.473e-02, 1.407e-02, 2.322e-01, -5.343e-02, 1.510e-01, -3.141e-01, 3.452e-02, -1.763e-01, -9.243e-02, 4.132e-02, 4.496e-01, -4.924e-02, -6.699e-02, -3.531e-02, -1.859e-02, 4.253e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-2.628e-02, -1.138e-01, -3.619e-02, 2.376e-02, -1.912e-01, 1.578e-01, -1.388e-02, -5.115e-01, 4.396e-02, -4.691e-02, -6.418e-02, -1.748e-01, 5.162e-02, -2.567e-01, -1.260e-01, 9.649e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-3.154e-03, 1.512e-01, -7.767e-03, -8.438e-02, 8.879e-03, 8.353e-02, 1.644e-01, 5.985e-03, -2.345e-02, -4.673e-01, 3.607e-02, -6.039e-02, -1.123e-02, -4.306e-01, 1.188e-02, 8.287e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-2.213e-03, 1.970e-01, -2.032e-01, -1.992e-02, -1.360e-01, -2.005e-02, -4.048e-02, -2.183e-01, -6.089e-02, -1.604e-01, -7.546e-02, 6.019e-02, 3.802e-02, 1.022e-01, 2.933e-02, 1.266e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-4.676e-03, 2.134e-02, 1.373e-02, 1.210e-02, 3.120e-02, -4.811e-01, 4.924e-01, 4.559e-01, 9.920e-02, -1.057e-01, -5.764e-03, -9.607e-02, 1.550e-01, 2.262e-02, -9.992e-02, 8.564e-03), r4);\n\tr5 = MulAdd(s0_0_1, M4(-7.454e-02, -3.011e-02, -5.281e-02, -1.449e-01, -1.788e-01, 4.733e-02, -3.446e-01, 2.290e-01, 1.378e-02, 1.283e-01, -7.207e-02, 1.985e-01, 2.354e-01, 1.865e-01, -6.829e-02, 1.864e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(-2.283e-02, 1.928e-02, 1.604e-02, 9.975e-02, -1.193e-01, -1.409e-01, -8.684e-02, -9.947e-02, 1.275e-01, 7.514e-02, -9.121e-02, -1.858e-01, -6.523e-02, -7.740e-02, -1.896e-02, -7.254e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(-2.305e-01, 1.707e-01, 3.160e-02, -1.210e-01, -2.099e-02, 2.460e-02, 9.554e-03, 2.623e-01, -2.079e-01, 1.812e-03, -6.629e-02, -6.922e-02, -2.190e-01, -1.022e-01, 6.207e-03, -7.794e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-8.052e-03, 1.434e-02, -4.280e-02, -4.892e-02, -1.883e-02, 2.034e-02, -1.452e-02, -5.928e-03, 8.538e-03, -5.062e-02, 1.477e-01, -7.058e-02, -5.646e-03, 1.972e-02, 3.866e-02, -3.290e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(4.360e-04, -3.989e-03, 5.076e-02, -5.822e-02, 3.569e-02, -4.071e-01, 2.144e-01, 4.971e-01, -3.109e-02, -2.229e-01, -2.322e-01, -4.113e-02, 3.400e-03, -7.762e-02, -1.256e-01, -2.049e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-2.446e-02, -2.100e-01, -8.362e-03, 9.295e-02, -9.894e-03, -1.844e-01, -2.949e-02, 4.393e-02, -7.010e-02, 4.870e-02, 9.793e-03, 7.041e-02, 1.041e-02, 1.815e-02, -2.999e-03, 3.941e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(2.157e-02, 7.109e-03, 2.755e-02, 4.647e-02, -3.272e-02, 7.903e-02, 9.594e-03, -6.133e-02, 1.379e-01, -1.976e-01, 1.282e-01, -3.888e-02, 7.356e-02, -1.017e-02, -5.599e-04, 3.043e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(2.536e-01, -3.776e-02, 1.757e-02, -7.440e-03, -2.837e-02, 3.202e-01, 1.724e-01, 9.351e-02, 1.396e-01, -6.120e-02, 4.660e-02, 5.947e-02, -1.832e-01, 1.678e-02, 5.348e-02, -1.515e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-2.562e-02, 1.592e-01, -2.171e-02, -5.612e-02, -3.101e-02, -1.467e-02, 1.068e-02, 5.521e-03, -1.135e-01, -6.307e-02, -9.310e-02, -1.283e-02, -1.390e-02, 4.847e-02, -3.908e-02, 4.831e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(1.434e-02, -2.895e-02, 1.908e-02, 1.491e-02, -6.655e-02, 6.859e-02, 2.135e-02, 2.215e-02, 6.765e-02, 1.752e-01, -1.468e-01, 1.956e-02, 1.492e-02, 1.695e-02, -2.984e-02, -8.537e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-2.580e-02, -1.131e-01, 4.789e-03, 9.170e-02, -4.797e-02, 3.609e-02, -9.488e-02, 5.750e-02, 1.588e-01, -1.682e-02, -8.118e-03, 8.537e-02, -9.412e-02, -7.845e-02, -8.266e-03, -6.350e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-2.710e-02, 2.603e-02, 7.799e-01, 1.518e-01, 2.157e-01, 3.897e-02, -1.694e-01, 1.778e-01, -6.297e-02, 4.360e-02, -2.049e-01, 6.347e-01, 2.715e-02, 2.336e-02, 2.807e-01, 6.964e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(6.175e-02, -1.863e-01, 2.340e-01, -6.575e-02, -1.046e-01, -9.050e-02, 5.165e-02, -1.937e-02, -1.874e-03, 2.766e-01, -3.314e-02, 2.403e-02, 3.973e-02, -1.085e-02, -1.616e-01, 1.048e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(3.934e-04, 4.483e-01, 4.430e-02, -1.539e-01, 2.266e-01, 2.888e-02, 1.761e-01, -2.378e-01, -5.094e-02, -7.874e-02, -3.711e-02, -8.407e-02, -5.230e-02, -9.216e-02, 9.660e-02, 1.353e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(2.160e-02, 4.346e-01, -2.568e-01, -1.429e-01, -7.826e-02, -9.692e-02, -1.126e-01, 2.741e-01, -3.383e-02, -1.515e-01, -2.158e-01, 4.294e-02, 1.278e-01, -2.246e-01, -9.068e-02, -1.940e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(2.838e-01, -7.665e-02, -5.304e-02, -1.385e-01, -1.068e-01, -6.273e-01, 1.204e-01, -6.815e-02, 1.574e-01, 1.131e-01, -5.354e-02, -5.303e-02, 2.646e-01, -3.807e-02, 1.174e-03, -2.951e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(2.256e-01, 1.042e-01, -1.826e-01, -1.724e-02, -2.139e-02, -1.080e-01, 7.095e-01, -2.748e-01, -2.018e-01, 1.519e-01, -2.831e-01, 3.846e-01, -6.759e-01, 2.082e-01, -4.905e-01, 4.695e-01), r5);\n\tr6 = MulAdd(s0_1_0, M4(2.809e-02, -6.125e-02, 1.362e-01, 2.373e-02, 9.551e-01, -1.923e-01, 1.197e-01, -1.730e-01, 5.061e-01, -1.284e-02, 6.746e-02, -2.864e-01, 1.816e-01, 3.770e-02, 3.358e-02, -2.854e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(6.157e-01, -3.366e-01, -8.219e-02, 1.635e-01, 1.330e-01, 1.741e-02, -3.202e-02, 9.393e-02, -1.629e-01, -6.166e-02, 1.388e-02, -1.888e-01, -3.735e-01, -3.085e-01, -7.603e-02, -1.044e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(2.328e-02, -4.062e-02, 1.111e-01, 2.065e-01, -6.224e-01, 3.512e-01, -6.651e-02, 5.828e-02, 4.166e-02, -7.396e-02, -1.324e-01, 6.718e-02, 1.763e-01, 7.544e-04, 1.542e-02, -7.022e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(4.579e-02, 8.328e-02, 3.195e-01, 2.045e-01, 3.771e-01, -4.641e-02, -4.318e-01, -2.584e-01, -1.916e-02, -1.261e+00, 1.005e-01, -3.012e-01, -3.001e-02, 4.954e-02, 4.308e-01, -8.229e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-3.681e-02, -4.781e-01, 4.704e-02, 3.545e-01, -1.927e-01, 1.830e-01, -1.636e-01, 2.269e-02, 1.440e-01, 1.133e-01, -4.622e-02, 3.814e-01, 2.793e-02, -9.765e-02, 1.919e-02, 5.856e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.300e-01, -8.128e-01, -7.199e-02, -4.079e-02, -3.021e-01, 9.347e-02, 1.308e-01, 3.041e-02, -3.448e-02, -4.155e-01, 1.304e-01, 2.584e-02, -1.145e-01, -4.874e-01, 1.045e-02, 6.333e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(-1.180e-01, 9.056e-02, -1.082e-01, -1.699e-03, -2.642e-01, -1.235e+00, -4.932e-01, -4.678e-01, -5.098e-01, 9.952e-02, 8.070e-02, 1.348e-01, -2.668e-01, 7.789e-02, -1.052e-02, -4.109e-03), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.339e-01, -2.405e-01, -9.599e-03, 1.666e-01, 1.753e-01, -8.017e-02, -2.841e-01, -1.512e-01, -2.929e-01, -1.846e-01, 3.313e-01, -6.745e-01, -7.560e-01, -3.443e-03, 1.158e-01, -3.531e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-1.812e-03, 5.872e-02, 4.418e-03, 9.492e-02, -3.491e-01, 7.124e-01, -5.062e-02, 2.300e-01, 6.555e-02, 1.623e-01, 1.568e-01, 5.840e-01, -4.195e-02, 1.460e-01, 1.517e-01, 2.261e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(2.286e-01, 8.426e-02, 6.938e-02, 8.716e-02, 4.697e-01, -1.833e-01, 7.241e-02, -1.987e-01, -2.142e-01, -1.757e-01, -5.267e-03, 1.934e-01, -2.198e-01, -2.097e-01, -1.880e-02, 1.746e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(1.015e-02, -2.003e-02, 1.468e-01, -7.100e-02, 1.778e-01, -2.617e-03, -2.118e-01, -8.523e-02, -5.201e-02, -2.593e-03, 1.725e-02, 6.870e-02, 1.770e-02, 5.037e-03, 1.059e-01, -1.616e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-4.992e-02, -6.384e-02, -3.196e-01, -1.400e-01, -7.938e-02, -1.694e-02, 1.042e-01, 4.513e-01, 3.819e-02, -8.344e-02, -3.857e-02, 4.498e-02, -2.829e-02, -2.784e-01, -1.910e-01, 3.680e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(2.575e-02, 2.385e-02, -5.408e-02, 9.170e-02, -4.172e-02, 3.558e-02, 6.842e-02, -4.524e-02, -4.076e-02, 7.272e-02, 2.263e-02, 5.021e-03, -1.655e-02, -5.918e-02, 1.016e-03, 1.541e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-2.025e-01, -2.962e-03, 2.300e-01, -4.406e-02, 5.422e-01, 8.021e-02, 1.426e-01, -2.136e-02, 7.768e-02, 2.775e-01, 1.865e-04, 1.229e-01, 2.809e-02, 3.015e-03, -3.792e-02, -4.034e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(1.504e-01, 5.187e-02, -9.620e-02, 3.424e-03, 1.284e-01, 3.006e-01, -2.383e-01, -5.126e-02, 1.998e-01, 9.602e-02, -3.090e-02, 6.403e-02, 2.277e-02, 4.505e-02, -3.002e-03, 1.933e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-1.511e-01, -2.524e-02, 6.541e-02, -2.929e-02, -2.608e-01, -2.997e-02, -7.312e-02, -2.438e-01, 5.842e-01, 2.965e-02, 5.559e-02, 4.647e-02, -6.611e-02, -3.018e-01, 7.264e-02, 1.079e-01), r5);\n\tr6 = MulAdd(s0_1_2, M4(1.798e-02, 5.793e-03, 4.225e-02, 1.694e-01, -3.732e-02, -8.985e-02, 1.303e-01, -5.405e-02, -1.262e-01, 1.754e-01, 3.308e-02, -4.742e-02, -2.205e-02, 2.644e-02, -6.196e-02, -2.351e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-9.564e-02, 5.271e-02, 2.202e-02, -3.845e-03, 2.009e-01, 1.326e-01, 1.565e-02, -5.743e-02, 1.357e-01, 6.246e-02, -2.492e-02, -5.959e-02, 4.306e-02, 4.553e-02, 4.896e-02, -4.654e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-2.554e-02, -7.389e-03, -5.396e-02, 1.938e-01, 8.031e-02, -1.103e-02, 2.671e-03, -1.365e-01, 4.572e-02, 1.176e-02, -3.172e-02, 5.683e-02, -3.270e-02, -8.085e-03, 5.820e-02, 1.752e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-9.117e-03, -7.495e-02, 9.361e-02, -3.205e-01, -1.150e-01, -3.693e-01, 7.476e-02, -2.967e-02, 5.884e-02, 3.307e-01, -5.038e-02, -3.406e-02, 4.509e-04, 1.273e-02, 4.886e-02, 4.495e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-8.254e-03, -1.294e-01, -8.709e-02, 6.442e-01, -1.318e-02, -6.722e-02, -6.588e-02, 1.471e-01, 6.967e-02, 2.639e-02, 6.776e-03, -3.184e-01, -2.944e-02, 7.337e-02, 8.988e-03, -1.408e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(-1.438e-01, -8.766e-01, -2.422e-02, -5.472e-01, -4.860e-02, 1.062e-01, -7.065e-02, -1.569e-01, 5.635e-02, -7.043e-02, -1.703e-01, 4.896e-03, 6.222e-02, -1.134e-01, 5.040e-02, 1.209e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(5.868e-02, 2.124e-01, -2.811e-02, 1.678e-02, 1.418e-01, -2.603e-01, 3.870e-02, 4.974e-02, 6.436e-02, 3.213e-01, 4.497e-02, -1.418e-02, 1.044e-01, 2.957e-01, 2.748e-02, 7.790e-04), r4);\n\tr5 = MulAdd(s0_2_0, M4(-2.421e-01, -1.523e-01, -1.191e-01, -3.570e-02, 3.853e-02, 3.090e-01, 2.113e-01, 2.761e-01, 6.241e-02, -2.685e-01, -8.431e-02, 1.092e-02, 1.044e-01, -2.985e-01, -5.716e-02, 4.210e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(1.852e-01, -8.856e-02, 1.266e-01, 3.153e-01, 2.744e-01, -1.336e-01, -1.305e-01, 4.085e-02, 3.880e-02, 9.850e-03, 1.352e-01, 2.424e-02, 1.298e-01, -2.219e-02, -2.660e-02, -5.203e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(1.253e-01, -2.193e-01, 9.969e-03, 6.274e-01, -2.093e-01, 1.582e-01, -7.290e-02, 1.962e-03, 7.761e-02, 7.034e-02, 9.304e-02, -5.294e-02, -1.001e-02, -3.903e-02, 8.372e-02, -1.028e-01), r7);\n\tr0 = MulAdd(s0_2_1, M4(3.595e-02, 6.544e-02, -2.259e-02, 1.551e-01, 2.980e-01, -7.029e-03, 1.578e-02, 6.976e-03, -7.680e-02, 6.054e-02, -9.841e-02, 7.705e-02, -4.700e-02, 8.697e-03, 2.718e-02, -5.829e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(6.853e-02, -2.376e-01, 8.882e-03, -8.301e-03, -2.799e-02, 3.844e-01, 2.902e-01, -2.578e-01, -4.547e-02, 3.063e-02, 1.732e-01, 1.296e-01, 6.262e-03, 2.839e-01, -9.124e-02, -6.457e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.026e-01, -2.422e-02, 6.612e-02, -4.248e-01, 5.337e-02, 9.552e-02, 4.231e-02, -1.171e-01, 9.275e-03, 1.227e-01, -3.851e-02, 2.889e-02, 1.107e-02, -7.248e-02, -4.428e-03, 1.605e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.675e-01, 1.549e-01, -2.398e-02, -3.897e-02, -5.074e-02, -2.057e-01, -1.272e-01, -6.135e-02, -1.751e-01, 5.290e-01, 1.006e-01, -5.983e-03, -8.433e-02, 1.328e-01, 8.112e-02, -2.706e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-1.827e+00, 5.947e-02, 4.362e-02, -3.920e-02, -1.234e-01, -1.222e+00, -2.173e-01, -1.808e-02, -3.137e-01, 9.386e-01, -6.624e-02, -7.105e-02, -2.059e-01, -4.003e-02, 2.758e-02, -5.783e-03), r4);\n\tr5 = MulAdd(s0_2_1, M4(-8.372e-01, -2.814e-01, -8.771e-02, 9.586e-02, 2.666e-01, -6.221e-01, -3.271e-01, -2.503e-02, -9.764e-02, 1.302e-01, 1.135e-01, 2.072e-02, 1.477e-02, -2.026e-01, 7.388e-02, -1.789e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-7.782e-02, 2.905e-02, -1.894e-02, -7.437e-02, -9.355e-01, -2.209e-01, 2.222e-01, 4.525e-02, -4.756e-01, -1.607e-01, 1.154e-01, 7.987e-02, -9.372e-02, -9.148e-02, 5.584e-02, 1.486e-01), r6);\n\tr7 = MulAdd(s0_2_1, M4(-6.195e-02, 2.424e-02, 1.213e-01, 1.763e-01, 8.736e-03, -1.149e-03, -1.844e-01, 9.491e-02, 2.217e-01, 1.201e-01, 4.845e-03, -1.212e-01, 1.862e-01, -1.628e-01, 6.600e-02, 5.588e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(2.719e-03, 8.689e-03, -3.327e-02, -7.075e-03, -1.089e-01, -4.845e-03, 1.764e-01, 1.765e-02, -6.718e-04, 2.635e-02, -1.334e-01, -1.842e-02, 2.414e-03, -1.633e-03, -7.493e-02, 6.302e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(-6.380e-04, -1.608e-01, -3.671e-02, 9.542e-03, 3.482e-02, -7.750e-02, -2.138e-01, 2.578e-01, -2.043e-02, 2.197e-01, 6.360e-02, 1.365e-02, 2.788e-03, 2.009e-01, 9.040e-02, 5.438e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.926e-02, -6.660e-04, 1.426e-02, 1.471e-02, -1.216e-02, -2.089e-01, 8.562e-03, 9.030e-02, -1.739e-02, 1.254e-01, -2.185e-02, -2.349e-01, 9.130e-03, 4.335e-02, -1.408e-02, -1.180e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(1.921e-01, 3.996e-02, -8.557e-02, 1.338e-01, -7.800e-03, -3.982e-02, 8.178e-02, 1.953e-02, 2.652e-02, 1.320e-01, 1.275e-01, -2.487e-03, -4.768e-02, -1.789e-02, -3.188e-02, -1.272e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(4.758e-01, 3.076e-02, 3.214e-03, 1.961e-02, 2.065e-01, 3.092e-01, 7.825e-03, -1.428e-02, 1.172e-01, 1.274e-01, 5.089e-02, -6.704e-02, 1.726e-01, -1.625e-02, -6.570e-03, 1.493e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(3.122e-02, -1.961e-01, 3.955e-02, -4.209e-02, -1.224e-01, 3.371e-01, -9.851e-03, 1.492e-01, 1.534e-02, -1.043e-02, 2.486e-02, 1.440e-01, 1.643e-01, 2.820e-01, -1.208e-02, -7.047e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(5.532e-02, -7.016e-03, 5.167e-02, 7.468e-02, 1.588e-01, -3.911e-02, -2.179e-01, 8.458e-03, -2.728e-01, -7.578e-02, 1.122e-01, -5.385e-02, -2.115e-02, -2.887e-02, 2.764e-02, 2.140e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(9.979e-02, 1.241e-01, -7.451e-03, 1.840e-01, -3.538e-01, -1.304e-01, 1.569e-01, -1.852e-01, -6.766e-02, 7.099e-02, -6.518e-02, -1.263e-01, -3.143e-02, -3.582e-02, -1.284e-02, 2.927e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(1.652e-02, 1.562e-02, -8.373e-02, -3.589e-02, -1.057e-01, 1.523e-02, 3.699e-01, -3.096e-01, -2.722e-02, 2.339e-03, 1.704e-01, -1.179e-02, 2.295e-02, -4.528e-03, 3.704e-01, 1.320e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(2.796e-03, -7.124e-02, -7.038e-03, 1.702e-02, -5.528e-02, 2.226e-02, -3.056e-01, -7.050e-02, 3.868e-03, 5.795e-02, -6.566e-02, -7.393e-02, -8.298e-03, -6.822e-02, 2.436e-02, 8.748e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-1.819e-02, -8.801e-03, -4.297e-03, 1.485e-02, 3.706e-02, -5.030e-02, -1.247e-01, 1.592e-01, 3.289e-02, 9.247e-03, 2.577e-02, -8.472e-04, 5.259e-03, 2.190e-02, -1.333e-02, 1.813e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(3.485e-02, 1.580e-02, -8.579e-04, -4.530e-03, -1.647e-01, 2.623e-02, 3.707e-01, 2.683e-02, -2.796e-02, 1.849e-03, -9.443e-03, 3.162e-03, -1.375e-02, -1.080e-01, -1.007e-01, 8.064e-03), r3);\n\tr4 = MulAdd(s1_0_0, M4(-2.327e-02, -3.889e-02, 3.885e-03, 3.507e-03, -7.163e-01, 1.724e-02, 2.261e-02, 3.738e-02, 2.152e-02, -6.525e-02, 1.032e-02, -2.759e-04, 5.073e-02, -5.179e-03, 7.129e-02, 1.189e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-1.906e-02, 4.378e-02, 8.358e-03, 6.752e-03, -7.876e-02, -2.495e-01, 1.454e-01, -2.036e-02, -8.303e-02, 6.463e-02, 2.771e-02, -1.866e-02, 6.428e-02, -5.058e-03, 1.457e-02, 1.128e-01), r5);\n\tr6 = MulAdd(s1_0_0, M4(2.162e-03, 3.282e-03, -5.066e-03, -1.484e-02, -1.792e-02, -1.020e-01, -1.471e-01, 6.467e-02, -4.921e-02, 6.247e-02, 2.513e-02, 1.286e-01, 2.674e-03, 4.921e-03, 2.349e-02, -1.804e-01), r6);\n\tr7 = MulAdd(s1_0_0, M4(-9.985e-02, -1.515e-02, -1.691e-02, 8.157e-03, -6.403e-02, -1.234e-01, 2.020e-01, 6.216e-02, 9.679e-02, -2.193e-02, -6.023e-02, -7.859e-02, 2.803e-03, 1.022e-02, 2.744e-03, 1.013e-01), r7);\n\tr0 = MulAdd(s1_0_1, M4(4.372e-02, -1.527e-03, -1.617e-01, 2.526e-02, -3.077e-02, 1.916e-02, 4.812e-01, -1.145e-01, -9.383e-03, 4.332e-02, -4.069e-01, 1.241e-01, 1.214e-02, 3.946e-02, 2.205e-01, 2.242e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(2.816e-02, 4.069e-02, 1.533e-02, -5.527e-02, -4.376e-02, -8.681e-02, 3.703e-02, -1.948e-01, -5.908e-02, 1.316e-01, 3.686e-02, 3.752e-01, -1.036e-03, 3.496e-02, 6.085e-02, -1.363e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(7.655e-03, 1.138e-02, -1.005e-03, -1.782e-02, -2.002e-01, 1.341e-01, 5.233e-02, 1.640e-01, -9.332e-03, 7.548e-02, -3.093e-02, 8.936e-02, 2.777e-02, -2.230e-01, 1.570e-02, -1.628e-03), r2);\n\tr3 = MulAdd(s1_0_1, M4(-4.042e-04, 4.936e-02, 1.222e-04, 3.706e-02, 7.051e-01, 8.298e-01, -1.947e-02, 4.853e-02, 9.305e-02, 2.884e-02, 5.616e-02, -7.216e-02, 1.256e-01, -9.007e-02, 4.375e-03, -1.249e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(1.435e-02, 7.466e-02, -2.218e-02, -1.223e-03, 4.641e-01, -1.878e-01, 1.536e-01, 2.536e-02, -1.155e-02, 1.457e-01, -2.290e-01, -2.683e-02, -9.690e-02, -4.081e-03, 1.268e-01, -7.556e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(2.109e-02, -1.357e-03, 6.472e-03, -7.393e-03, -2.055e-01, -3.472e-01, 1.182e-01, -1.013e-01, 4.588e-02, -3.110e-02, 1.966e-01, -3.312e-02, 3.070e-02, 1.499e-02, -2.328e-02, 1.027e-01), r5);\n\tr6 = MulAdd(s1_0_1, M4(1.803e-02, 4.403e-02, 2.776e-02, -7.836e-02, -5.096e-02, 4.802e-02, -1.790e-01, 5.826e-01, -2.814e-02, 4.893e-02, 9.289e-03, -9.544e-02, 5.770e-02, 3.398e-02, -6.027e-03, -1.365e-01), r6);\n\tr7 = MulAdd(s1_0_1, M4(1.468e-01, -2.835e-02, -3.938e-03, 1.303e-01, 2.742e-01, -1.286e-01, -4.616e-02, -1.308e-01, -1.742e-02, -1.943e-02, 6.087e-02, 1.933e-01, -1.651e-02, 1.847e-01, -6.879e-02, 4.357e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(5.550e-02, 9.924e-03, 7.585e-02, 2.563e-02, 1.937e-02, 4.750e-02, -1.046e-01, 1.066e-01, 9.277e-03, -2.561e-02, -2.806e-01, -3.989e-02, 3.176e-02, -1.096e-02, -3.499e-02, -1.360e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.084e-03, 1.387e-01, 6.029e-02, 9.258e-02, 3.893e-02, 3.139e-02, -4.604e-02, 1.340e-01, 2.168e-02, 1.298e-01, -2.011e-02, 1.643e-02, -1.895e-02, -2.626e-01, -1.183e-01, -1.476e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.202e-02, -1.264e-01, 1.429e-02, -4.205e-02, 3.701e-03, -3.707e-01, -1.069e-02, -1.038e-02, 6.222e-04, -2.204e-01, 5.767e-03, -2.009e-01, -3.290e-02, 2.761e-03, -5.275e-03, -4.027e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(1.828e-02, 2.721e-02, -3.025e-02, -1.337e-02, -2.766e-01, 5.658e-03, -1.129e-01, 9.299e-03, 4.772e-02, 5.145e-02, 3.533e-02, 6.725e-02, 5.588e-02, -1.231e-01, 4.041e-02, 2.544e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(4.065e-02, -4.687e-02, 2.457e-02, 1.820e-02, -1.132e+00, -1.746e-01, 4.370e-02, -6.723e-02, 1.430e-01, 7.455e-02, -1.081e-01, 1.772e-02, -1.361e-02, 2.814e-02, 6.676e-02, 3.214e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(2.352e-02, 5.987e-02, 1.309e-02, 3.677e-02, -9.492e-02, 6.104e-01, -1.268e-01, 4.779e-01, 2.513e-01, -1.299e-02, -2.410e-03, 7.286e-02, 9.143e-02, -4.056e-02, -8.143e-02, 3.958e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-2.424e-02, 3.350e-02, -2.813e-02, 3.959e-02, 5.635e-02, -5.481e-02, 3.432e-01, 1.725e-01, -3.098e-02, 2.868e-02, 2.514e-02, -4.171e-02, -1.969e-02, 3.108e-02, -4.630e-03, -1.335e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(1.075e-01, 9.961e-03, -5.825e-03, 6.251e-02, 3.495e-01, 1.182e-01, -7.147e-02, -4.523e-02, -7.391e-02, 6.776e-02, -2.313e-02, 5.085e-02, -6.738e-02, 2.174e-02, -3.818e-03, 3.073e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-1.984e-05, 6.523e-03, 1.546e-01, 2.170e-02, 1.870e-02, -1.368e-02, -3.716e-01, 2.445e-01, -2.057e-02, 5.091e-03, -1.649e-01, 3.503e-02, -1.535e-02, -1.174e-04, -2.686e-01, 6.959e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(7.650e-03, 1.558e-02, 2.356e-02, 9.755e-02, -3.905e-02, 7.151e-02, 2.610e-01, -8.626e-02, -1.395e-02, 3.532e-01, 1.116e-01, -1.246e-02, 6.433e-02, 1.064e-01, 1.025e-01, 1.695e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-2.391e-03, 1.977e-02, -1.715e-02, -6.812e-02, 1.628e-02, 1.018e-01, -3.168e-03, 2.160e-01, -4.151e-02, -1.438e-02, 1.674e-03, 9.554e-02, 1.046e-02, 8.418e-02, 9.833e-03, -3.581e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-2.248e-03, -6.026e-02, -3.504e-02, -2.322e-02, -1.586e-01, 2.890e-02, 3.909e-02, -1.227e-01, 3.105e-03, 3.475e-01, 3.323e-01, 1.064e-02, -7.348e-02, -1.257e-02, -1.178e-01, 8.640e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-4.331e-03, -2.738e-02, 4.004e-02, -2.406e-02, -8.509e-02, -2.386e-01, -1.873e-01, -3.274e-03, 2.468e-02, 1.908e-01, -8.056e-03, 1.879e-02, 6.106e-02, 2.159e-02, -1.889e-02, -7.688e-03), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.470e-01, -1.663e-02, -1.853e-02, 6.477e-02, 1.711e-02, -7.575e-02, 1.207e-01, -3.130e-01, 3.382e-01, -3.176e-02, -7.194e-02, -1.293e-02, -1.821e-01, -1.207e-02, 1.033e-01, 2.188e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(-4.916e-02, 1.077e-02, 6.676e-02, 2.266e-02, 4.455e-02, 2.256e-02, -6.812e-02, -2.048e-01, -6.937e-02, 3.942e-02, -8.827e-02, -8.785e-02, 1.840e-02, -5.823e-02, 7.406e-02, -1.316e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.237e-02, -1.471e-02, -6.059e-02, -5.169e-02, 1.505e-01, -3.466e-01, 3.212e-01, -2.836e-02, 7.323e-02, -1.409e-01, 8.273e-02, 9.473e-02, 9.303e-02, -7.576e-02, 7.590e-02, 3.649e-03), r7);\n\tr0 = MulAdd(s1_1_1, M4(5.780e-02, -1.158e-02, -9.146e-01, -3.463e-02, 5.284e-02, -9.145e-02, -1.378e-01, 5.044e-01, -8.528e-02, -3.093e-02, 1.012e+00, -3.281e-03, 8.959e-02, -5.512e-03, -2.342e-01, -4.073e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-5.766e-04, 2.634e-02, 6.978e-02, 3.498e-01, 5.016e-02, 1.362e-01, 2.594e-03, -1.550e-01, 1.158e-01, -1.970e-01, -5.147e-01, -9.331e-02, -1.079e-02, -9.087e-01, -2.948e-02, 5.879e-03), r1);\n\tr2 = MulAdd(s1_1_1, M4(-1.349e-02, 3.466e-02, -4.382e-02, -1.068e-01, 1.578e-01, 1.209e-01, -1.879e-02, -2.762e-01, -5.636e-02, -1.042e-01, -1.381e-02, 2.878e-01, 2.681e-02, 6.719e-02, -6.201e-03, 5.389e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(1.189e-01, -7.399e-02, -6.358e-02, 4.439e-02, -8.749e-02, -3.473e+00, -4.861e-01, -2.438e-01, -1.456e-01, -5.097e-01, -3.563e-01, -2.735e-01, -7.921e-02, -6.440e-02, 1.161e-01, -1.025e-03), r3);\n\tr4 = MulAdd(s1_1_1, M4(-4.304e-02, -6.408e-02, -7.817e-03, -1.297e-02, 1.925e-01, 2.584e-01, -3.311e-01, 1.625e-01, 5.949e-01, -1.890e-01, 1.770e-01, -7.478e-02, -1.663e-01, -5.578e-02, -1.616e-01, 9.385e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(3.151e-01, 1.533e-01, -1.861e-02, 7.796e-02, -8.866e-01, 1.484e-01, -1.995e-01, 3.007e-01, -6.245e-01, 4.494e-01, -4.267e-01, 5.295e-01, -6.805e-02, -2.264e-01, 2.645e-02, -6.255e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(-1.207e-02, 8.724e-02, 1.297e-01, -3.296e-01, -1.868e-01, 7.422e-02, 1.138e-01, -3.700e-01, -6.976e-02, -1.431e-01, 7.550e-02, -2.623e-01, 2.465e-02, 1.179e-01, -4.211e-02, 3.875e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-8.197e-02, 8.136e-02, 1.504e-02, -2.938e-01, -1.286e-01, 1.312e-01, -2.137e-01, 7.548e-02, -8.928e-01, -5.114e-01, -2.400e-02, -3.957e-01, -3.135e-03, -1.034e-01, -1.234e-01, 2.625e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-2.590e-02, -1.605e-02, -1.064e-01, 3.910e-02, 1.421e-01, 1.313e-02, -7.230e-02, -1.194e-01, 1.504e-01, 2.074e-02, 1.175e-01, -2.799e-02, 6.428e-03, -5.421e-03, 3.921e-02, -7.224e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.885e-02, 3.800e-01, 1.354e-01, -1.936e+00, 6.548e-02, -2.933e-02, -4.284e-01, 1.335e-01, -4.919e-03, -2.804e-01, 7.878e-02, -4.691e-01, 1.928e-02, 4.774e-02, -1.346e-02, 8.771e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(2.415e-02, 2.685e-01, -7.100e-02, -3.559e-01, -5.523e-02, 3.144e-02, 6.138e-02, -1.231e-01, -1.770e-03, -3.115e-01, 4.658e-02, 3.273e-01, -3.714e-02, 1.417e-02, 1.545e-02, 4.016e-03), r2);\n\tr3 = MulAdd(s1_1_2, M4(-2.219e-01, 1.350e-01, 4.762e-02, 5.154e-02, 6.302e-02, 9.198e-02, 3.402e-01, 7.716e-02, 2.924e-02, -3.038e-01, 1.963e-02, 1.353e-01, 1.141e-02, 8.480e-02, 1.879e-03, -8.555e-03), r3);\n\tr4 = MulAdd(s1_1_2, M4(-4.073e-01, -2.151e-02, -2.695e-03, -2.753e-02, 5.607e-01, -2.355e-01, -2.840e-01, 4.858e-02, -3.962e-01, -4.223e-02, -1.341e-02, -5.121e-03, 6.917e-02, -2.787e-02, -3.706e-02, -8.412e-03), r4);\n\tr5 = MulAdd(s1_1_2, M4(2.575e-01, -3.316e-02, 2.610e-03, 2.756e-02, 2.274e-01, -9.605e-02, 6.486e-03, -1.618e-01, -6.177e-01, -4.295e-02, -8.884e-03, -3.683e-02, 6.738e-03, -6.385e-02, 2.984e-02, 1.372e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(4.587e-02, -1.223e-01, 9.196e-02, -5.624e-02, 4.698e-02, 1.568e-01, 2.658e-01, 4.334e-01, 4.246e-03, 1.935e-01, -1.435e-01, 2.793e-01, 3.233e-03, -7.197e-03, 7.253e-02, 5.839e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(-1.174e-01, 3.855e-02, 5.051e-02, 7.769e-03, 6.458e-02, -3.233e-01, -5.886e-02, -8.963e-02, -4.048e-02, -1.591e-01, 1.671e-02, -6.470e-02, 9.685e-02, -3.141e-05, 4.000e-03, -2.801e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(1.149e-02, 6.384e-04, -4.436e-02, 3.130e-02, 5.028e-04, -7.705e-03, 1.749e-02, 2.030e-01, 6.763e-02, -4.167e-03, -1.295e-01, 3.067e-02, 7.904e-03, 1.647e-03, 4.383e-02, 2.712e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(3.605e-02, -1.110e-01, -3.565e-02, 5.843e-02, 1.849e-03, -6.797e-02, 7.258e-02, 2.603e-02, -1.136e-02, 6.694e-02, 4.930e-02, -6.717e-02, -1.059e-02, 6.665e-02, -5.434e-02, 1.337e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(4.224e-02, 1.785e-02, 1.433e-02, -3.327e-03, -3.882e-02, -2.849e-03, 1.126e-02, 2.496e-01, -4.402e-02, -2.494e-02, 1.110e-02, -3.396e-02, 2.936e-02, -8.729e-04, -1.081e-02, -7.001e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(4.064e-02, 8.193e-02, 2.309e-02, 1.613e-01, -4.605e-02, -1.142e-01, 7.829e-02, 2.733e-02, -1.324e-02, -1.101e-01, 3.077e-02, -6.023e-02, -4.666e-02, 5.854e-02, -1.916e-02, -2.034e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(1.361e-01, -1.868e-02, -6.442e-03, 9.466e-03, -5.659e-02, -2.251e-01, -2.723e-02, -1.143e-02, -1.987e-01, -5.491e-02, -5.241e-02, 7.108e-03, 5.172e-02, 1.771e-01, 3.689e-02, -4.325e-03), r4);\n\tr5 = MulAdd(s1_2_0, M4(2.052e-01, 1.409e-02, 1.239e-01, -1.971e-01, -7.598e-02, 4.438e-01, 9.557e-02, 2.045e-03, -1.880e-01, 8.779e-02, -1.208e-01, 1.258e-01, 7.720e-02, -1.471e-01, 8.866e-03, 5.015e-03), r5);\n\tr6 = MulAdd(s1_2_0, M4(4.594e-02, 4.324e-02, -5.990e-04, 7.526e-02, 1.731e-02, 2.775e-02, -1.414e-02, 1.243e-01, -7.778e-03, 6.082e-02, -2.622e-02, 4.351e-02, -4.490e-02, 1.243e-02, 6.779e-03, -2.636e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(1.084e-01, 9.784e-03, -1.402e-02, 3.446e-03, -1.050e-01, 1.838e-01, 1.331e-01, -1.605e-01, -8.178e-02, 7.724e-02, -5.708e-02, 8.288e-02, -5.740e-02, -7.486e-02, 1.519e-01, -3.734e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(1.813e-01, 6.319e-03, 1.650e-01, -1.036e-01, -7.818e-02, 4.502e-02, -4.503e-02, -2.427e-01, -2.180e-02, -4.798e-04, -8.665e-02, 2.714e-02, 5.954e-03, -2.371e-03, -9.851e-03, -4.613e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(2.697e-02, -6.973e-04, 1.871e-01, -6.105e-02, -2.218e-02, 1.182e-01, 2.062e-01, 6.721e-02, -3.678e-02, 3.021e-02, 9.098e-02, -1.740e-01, -2.650e-03, 2.632e-01, 5.307e-02, 2.955e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-9.439e-02, -2.437e-02, 8.991e-02, -5.193e-01, -4.340e-03, -9.622e-03, -1.675e-03, -1.818e-01, 6.169e-02, -2.452e-02, -2.112e-02, -6.244e-02, -2.855e-03, -1.646e-02, 1.124e-02, -4.672e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(1.791e-01, 3.822e-01, 2.992e-02, -3.972e-02, -4.148e-02, 2.768e-01, 2.222e-01, 2.599e-01, 4.143e-03, -5.303e-01, 2.927e-02, 1.812e-01, -3.356e-02, 1.767e-01, -1.408e-02, -2.531e-05), r3);\n\tr4 = MulAdd(s1_2_1, M4(-9.481e-03, -7.038e-02, 3.012e-02, 3.419e-02, 1.588e-01, 4.205e-01, 6.665e-02, -2.699e-02, -5.735e-02, 1.073e-01, -2.946e-02, 1.498e-02, -1.297e-01, -1.778e-01, -7.003e-02, -2.985e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-2.313e-01, -5.018e-01, -2.767e-01, 1.477e-01, 1.898e-01, 5.962e-01, 2.427e-01, -1.778e-01, -1.584e-01, -2.866e-01, 2.181e-01, -2.376e-01, 6.031e-02, 1.349e-01, -6.617e-02, 4.146e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(2.339e-01, 3.271e-01, -1.477e-01, 1.315e-01, 7.021e-02, -7.589e-02, -2.237e-02, -2.389e-01, -1.366e-01, -5.283e-02, 2.500e-02, -1.427e-01, -2.139e-02, 1.509e-02, 1.958e-02, 1.291e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(7.831e-02, 7.324e-01, -2.704e-01, 8.282e-02, 2.141e-01, -7.938e-02, -4.113e-02, 1.334e-02, -1.350e-03, -4.538e-01, 1.675e-01, 9.423e-02, 6.685e-02, 1.061e-02, -4.401e-02, -5.748e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(7.239e-02, -1.837e-03, 9.187e-02, -1.227e-02, 4.812e-02, 1.827e-02, 8.076e-02, 9.115e-03, 7.890e-02, 1.592e-02, 1.402e-01, -2.110e-02, -2.242e-02, -5.598e-03, -6.951e-02, 4.640e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.564e-02, -1.378e-01, -1.972e-01, 1.303e-01, -4.841e-03, 1.863e-01, 5.530e-01, -1.002e-01, 2.642e-02, 1.909e-01, 3.278e-02, 3.372e-01, -2.252e-03, -3.099e-02, 4.234e-03, -2.499e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(3.097e-02, -6.345e-03, 2.032e-02, 8.903e-04, -8.180e-02, -1.532e-01, 4.117e-02, -1.840e-01, 7.153e-03, -1.138e-02, 3.428e-02, 2.061e-01, -9.840e-03, 3.528e-02, 8.844e-03, -4.673e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(-2.782e-01, -4.921e-01, -7.275e-02, -1.197e-02, 3.738e-01, 1.493e-01, 1.431e-01, -1.919e-01, -5.969e-03, 2.784e-01, 1.007e-01, -1.260e-01, 5.457e-02, 7.384e-02, 6.715e-02, -8.899e-04), r3);\n\tr4 = MulAdd(s1_2_2, M4(-7.327e-02, -6.470e-02, 1.078e-01, 1.365e-02, 2.183e-02, -7.931e-02, 3.498e-02, -5.753e-02, -1.115e-01, 9.400e-03, 1.158e-02, 1.740e-02, 6.705e-02, -1.037e-01, -2.605e-02, -8.411e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(-8.745e-01, 4.027e-02, 1.873e-01, -2.152e-01, -1.114e-01, 7.732e-02, -1.537e-01, 1.498e-02, 2.152e-01, -7.338e-02, 2.100e-02, -2.618e-02, -1.796e-02, 1.819e-01, 6.605e-03, 9.242e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-3.900e-02, 5.264e-02, 3.442e-02, -9.975e-02, -5.539e-02, 4.658e-02, 4.773e-02, 1.723e-01, -2.195e-02, -1.682e-02, -2.121e-02, 9.405e-02, -3.221e-02, -8.053e-03, -9.598e-03, 3.281e-03), r6);\n\tr7 = MulAdd(s1_2_2, M4(-6.159e-02, -5.683e-02, 3.884e-02, -5.373e-04, -2.371e-03, 3.663e-02, -1.831e-02, 1.150e-02, 2.398e-01, 3.517e-02, -1.403e-02, -8.083e-02, -5.708e-02, -3.845e-02, 1.557e-02, -4.085e-02), r7);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-3.342e-02, -1.740e-02, -3.486e-01, 5.764e-01, -7.390e-02, 2.372e-01, 2.656e-01, -1.134e-01, 1.812e-02, 4.553e-03, 2.446e-01, -1.334e-01, -2.629e-02, 1.464e-02, -3.014e-01, 1.774e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-3.806e-03, -1.821e-01, 1.365e-01, 4.612e-01, 2.915e-02, -1.373e-01, 1.013e-01, -1.672e-01, 5.453e-02, -4.351e-02, 1.315e-01, 1.547e-01, -8.622e-02, -6.728e-03, -1.736e-01, -1.422e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(3.638e-02, 1.815e-02, -1.919e-02, -6.679e-02, -1.903e-01, -5.110e-03, -1.087e-01, -1.036e-01, -4.409e-02, -6.859e-02, 1.857e-02, -1.646e-01, 6.664e-02, 1.058e-01, -4.003e-02, 2.031e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(4.521e-02, 5.288e-02, -4.245e-02, 3.389e-01, 5.880e-02, -3.478e-02, 3.618e-01, 7.982e-02, -3.582e-02, 9.570e-02, 1.084e-01, 3.044e-02, 4.682e-02, 9.760e-02, -1.364e-01, 5.934e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-3.982e-02, 9.196e-04, -1.548e-01, -8.973e-02, -3.854e-02, 1.416e-01, -2.595e-01, -2.418e-01, 1.558e-01, 2.867e-02, -3.015e-02, -1.654e-02, -2.358e-01, -2.920e-02, 3.362e-02, 2.121e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(3.506e-01, 3.174e-01, 2.214e-01, -6.910e-02, -2.585e-02, 3.283e-02, 3.965e-02, 3.859e-02, 1.068e-01, 2.788e-02, -8.389e-02, 1.436e-02, -2.025e-01, 6.445e-03, 1.665e-01, -3.224e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(5.170e-02, -3.879e-02, 1.821e-03, -4.928e-01, 4.424e-01, -1.253e-01, 1.887e-01, 1.424e-01, -7.779e-03, -3.132e-03, 4.029e-02, 9.732e-03, 4.735e-02, 1.005e-03, -4.455e-02, 1.910e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(1.304e-01, 1.772e-01, -1.867e-01, 7.644e-02, -3.877e-01, -5.218e-02, -7.722e-02, -3.172e-01, 6.855e-02, 4.840e-02, 3.403e-02, 1.848e-01, -1.295e-01, 1.918e-02, -2.873e-02, -2.196e-01), r7);\n\tr0 = MulAdd(s0_0_1, M4(1.548e-01, 9.054e-03, -4.772e-01, -1.310e-01, -1.612e-01, 4.623e-01, 3.194e-01, -2.586e-02, 3.703e-02, 4.235e-02, -4.426e-02, -1.939e-01, -3.712e-02, -2.818e-02, 9.205e-02, 2.672e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.169e-01, -2.966e-01, 9.815e-02, 1.061e-01, 4.807e-01, -1.248e-01, 1.536e-01, -7.858e-02, 9.107e-02, -9.380e-02, -1.348e-02, 8.373e-02, -1.598e-01, 1.888e-01, 1.356e-01, 6.767e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(3.354e-02, -3.576e-01, -1.318e-01, -1.804e-01, 3.357e-02, 1.438e-01, -2.064e-01, -7.976e-02, -2.617e-02, -9.847e-02, 4.214e-02, -5.616e-02, 7.831e-02, 1.901e-01, -8.359e-02, 2.167e-03), r2);\n\tr3 = MulAdd(s0_0_1, M4(-3.981e-01, -2.945e-01, 4.686e-02, -7.347e-03, 2.414e-01, 1.274e-01, 7.922e-02, 1.017e-01, 6.918e-03, -6.221e-01, -1.034e-01, 2.192e-01, -1.445e-02, 5.628e-01, 1.628e-01, -1.689e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.105e+00, -1.976e-01, -3.699e-01, 1.590e-02, -1.030e-01, 4.353e-02, -1.069e-01, -6.063e-01, -4.335e-02, 1.687e-02, 1.630e-01, -2.667e-02, 1.931e-01, -1.140e-02, -2.514e-01, 4.570e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(4.669e-01, 1.927e-01, 6.472e-02, 2.185e-02, -4.244e-02, 6.678e-02, -7.790e-02, 4.910e-02, 2.397e-02, -1.093e-01, 1.428e-03, 1.643e-01, 6.089e-02, 2.254e-01, 1.084e-02, -2.817e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(-5.266e-02, 1.580e-01, 7.773e-02, -5.987e-01, -1.379e-01, -1.382e-01, -2.408e-01, 7.759e-02, 4.992e-03, 1.357e-02, 8.669e-02, 5.894e-02, 1.303e-02, -3.439e-02, -7.112e-02, -1.644e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(5.122e-02, 7.627e-02, 1.705e-01, 8.672e-01, -2.354e-01, -1.768e-01, -1.173e-01, -4.362e-01, -7.243e-02, 2.983e-02, 1.125e-01, 1.619e-01, 7.753e-02, -6.402e-02, -1.326e-01, -1.549e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(5.989e-03, -4.548e-02, -6.158e-02, -1.610e-01, -1.577e-01, 4.155e-01, 1.663e-01, 5.859e-02, 1.120e-01, -1.171e-02, -9.921e-02, 2.273e-02, -1.250e-01, 3.022e-02, 8.910e-02, -3.171e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(8.271e-02, -2.647e-01, -5.554e-02, -1.638e-01, 6.766e-02, 4.953e-02, -7.398e-02, 3.259e-02, -2.438e-02, 7.752e-02, -2.146e-01, -1.242e-01, 1.421e-02, -8.007e-02, 2.942e-01, 4.195e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-4.720e-02, -2.476e-01, 4.300e-02, 2.717e-01, 3.333e-01, 1.006e-01, -5.187e-02, -2.879e-02, -1.476e-02, -5.056e-01, -5.296e-02, -6.767e-02, 1.165e-02, 4.715e-01, 6.775e-02, -1.601e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(1.463e-01, 4.246e-01, 9.203e-02, 1.271e-01, -7.683e-03, -2.321e-01, -3.499e-01, -4.081e-02, 3.910e-02, -1.117e-01, -1.546e-02, -4.597e-02, -6.279e-02, 8.442e-02, -6.149e-02, 1.184e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(1.085e-01, -1.086e-01, -1.548e-01, -2.149e-02, -2.072e-01, -4.012e-02, -1.208e-01, -4.963e-01, -8.870e-02, -1.641e-02, 7.401e-02, 1.124e-01, 2.324e-01, 5.799e-02, -7.153e-02, -1.570e-01), r4);\n\tr5 = MulAdd(s0_0_2, M4(2.785e-01, 2.397e-01, 1.319e-01, 1.219e-01, 6.469e-02, -2.575e-01, 2.155e-01, 1.301e-01, -1.885e-01, -1.917e-01, 2.921e-02, 5.461e-02, 4.261e-01, 4.526e-01, -5.837e-02, -3.591e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(1.865e-02, 4.282e-02, -7.592e-02, -2.464e-02, -1.299e-01, -1.077e-01, -1.573e-01, 1.766e-01, 3.020e-02, 1.222e-01, 2.253e-02, -3.544e-02, -9.323e-03, -1.470e-01, -3.995e-02, -1.553e-03), r6);\n\tr7 = MulAdd(s0_0_2, M4(5.320e-02, -3.792e-01, -1.802e-01, -1.524e-01, 1.143e-02, 3.091e-03, -2.920e-01, -3.385e-01, -4.597e-02, -4.039e-02, 1.149e-01, 8.669e-02, 5.827e-02, 3.269e-03, -1.422e-01, -1.295e-01), r7);\n\tr0 = MulAdd(s0_1_0, M4(5.315e-02, 7.789e-02, -1.182e+00, 2.357e-01, -7.535e-02, -9.069e-02, 3.625e-02, -7.769e-01, 4.411e-02, -1.084e-02, -3.737e-01, 1.511e-01, -4.531e-02, 1.129e-02, 5.215e-01, -8.613e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(2.831e-03, 2.585e-02, 1.603e-01, 3.721e-01, 1.734e-01, -9.044e-02, -6.831e-02, -1.095e-01, -9.081e-03, 6.026e-02, -3.138e-02, 2.627e-01, -1.263e-03, -1.547e-01, 1.391e-01, -1.696e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.726e-03, 4.909e-02, -1.392e-01, 6.820e-02, -2.411e-01, 1.455e-01, 9.633e-03, 1.712e-01, -9.214e-02, 2.765e-01, -3.773e-02, -1.265e-01, 9.961e-02, -3.027e-01, 1.041e-01, 1.137e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(2.000e-02, -2.158e-01, 1.378e-01, 3.617e-01, -1.227e-01, -6.608e-03, 6.239e-01, -3.155e-01, 1.992e-01, 4.739e-01, 1.648e-01, 8.231e-02, -1.087e-01, -4.542e-01, -3.506e-01, -1.535e-05), r3);\n\tr4 = MulAdd(s0_1_0, M4(-1.673e-01, -9.431e-02, -1.322e-01, -2.130e-01, -7.604e-02, -8.815e-02, -9.521e-02, 3.311e-02, 1.321e-01, 4.590e-02, -1.392e-01, 5.410e-02, 1.391e-02, 4.481e-03, 9.377e-02, -6.366e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(2.226e-01, -1.362e-01, -4.028e-01, -5.107e-01, -8.730e-02, 9.296e-03, -3.960e-02, 1.282e-01, 1.940e-02, 2.049e-01, 6.654e-02, -1.780e-02, 2.127e-02, -2.188e-01, -1.325e-01, 1.653e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(5.195e-03, 2.788e-02, -1.505e-02, 1.273e-01, 4.608e-01, -1.164e-01, 4.122e-02, -1.527e-01, -2.892e-02, 1.418e-02, 1.364e-01, -2.463e-02, 2.440e-02, -2.803e-03, -1.677e-01, -2.438e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(4.970e-01, 3.350e-01, -2.290e-01, -5.449e-01, -9.223e-02, -1.447e-01, 1.577e-01, 3.763e-02, 1.776e-01, 8.577e-02, -1.450e-01, 1.097e-01, -1.857e-01, 9.431e-04, 1.663e-02, -1.957e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(1.199e-04, -1.512e+00, -2.013e+00, 3.715e-01, 2.465e-01, -4.462e-01, -8.986e-02, -2.209e-01, 1.498e-01, 1.023e-01, -4.296e-01, -3.080e-01, -6.740e-02, -5.568e-02, -9.729e-02, 2.994e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.961e-01, -5.078e-02, -2.461e-01, 5.920e-02, -4.710e-01, 1.226e-01, 5.346e-02, -1.784e-02, 1.099e-01, -9.111e-02, 4.511e-02, 3.161e-01, -1.925e-02, 2.660e-01, -6.640e-02, -1.246e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-4.979e-02, -1.490e+00, 2.111e-02, 1.534e-02, 8.094e-02, -3.036e-01, 8.568e-01, 1.388e-01, -3.441e-01, 9.421e-02, -1.367e-01, -2.767e-01, 2.524e-01, -4.124e-01, 2.988e-02, 2.646e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-2.356e-01, -3.297e-01, -3.252e-01, -2.128e-01, 1.841e-01, -3.468e-02, -1.382e-01, 9.275e-02, -4.396e-02, -1.027e+00, -1.407e-02, 1.475e-01, 1.740e-01, 1.667e-01, -1.845e-01, 1.172e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(5.488e-01, -1.662e-02, -2.058e-01, 8.208e-01, 2.189e-01, 5.843e-02, 6.070e-01, 3.531e-01, -2.163e-01, -4.385e-01, -3.960e-01, -2.082e-02, 2.361e-01, 2.168e-01, 4.414e-01, -7.974e-03), r4);\n\tr5 = MulAdd(s0_1_1, M4(4.111e-02, -1.392e-01, -5.613e-03, -1.606e-02, 4.304e-02, 1.284e-01, 6.018e-02, 2.010e-01, 4.991e-02, -9.138e-02, -1.810e-01, 2.328e-02, -2.562e-02, 1.422e-01, 6.529e-02, 4.709e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-1.725e-01, 9.823e-02, -2.262e-01, -2.684e-01, -1.082e-01, 6.616e-01, 7.636e-01, -3.663e-01, -7.157e-02, 8.218e-02, 1.837e-01, -5.134e-02, 1.510e-01, -5.629e-02, 5.630e-02, 2.099e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(-2.141e+00, -4.975e-01, 2.315e-02, -2.625e-02, 8.937e-02, 8.996e-02, 4.763e-02, 3.135e-01, 1.322e-01, 1.035e-01, -1.541e-01, 4.866e-02, -1.282e-01, -1.485e-01, -1.871e-02, 1.722e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(1.373e-01, 1.836e-01, 5.629e-02, -2.119e-01, 3.737e-03, 6.070e-02, -1.801e-01, 2.486e-01, -3.715e-04, -7.159e-02, -6.383e-02, -2.909e-01, 7.994e-02, -4.922e-02, 2.981e-01, 3.078e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.520e-01, -3.437e-01, -2.618e-01, -8.262e-01, -1.638e-01, 1.989e-01, -3.656e-02, 1.588e-01, -9.589e-02, 3.545e-02, 1.419e-02, -2.614e-02, 1.026e-01, -1.585e-02, -3.441e-01, -6.503e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.842e-01, -3.978e-01, -1.658e-01, -2.156e-01, 3.029e-01, 3.349e-02, -1.308e-01, 2.891e-02, -1.710e-01, -9.685e-02, -3.122e-02, 4.524e-01, 1.953e-01, -2.498e-01, 1.678e-02, -3.617e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(2.655e-01, 4.402e-02, -5.920e-02, 2.669e-02, -2.666e-01, 6.414e-02, -1.390e-01, -1.259e-01, -1.292e-01, -5.159e-01, -3.119e-01, -5.190e-02, 3.000e-01, -2.713e-01, 8.839e-02, 4.902e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(-7.129e-01, 6.150e-02, -1.209e-03, -1.522e-01, -6.913e-02, -5.188e-02, -2.903e-02, 3.138e-04, 8.000e-01, 8.560e-02, 7.212e-02, 2.429e-02, -9.180e-01, -1.233e-01, 8.887e-03, 2.990e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-1.227e-01, -1.802e-01, 3.201e-01, 1.729e-01, 1.845e-01, -1.522e-02, 1.401e-01, -1.443e-01, 7.028e-02, 1.840e-01, -1.217e-02, -1.061e-01, 1.990e-01, 1.374e-01, 2.114e-01, 2.610e-01), r5);\n\tr6 = MulAdd(s0_1_2, M4(1.285e-01, 1.739e-01, 1.548e-01, -1.077e-01, -9.249e-02, -5.264e-02, -4.146e-01, 1.133e-01, -3.210e-02, 3.249e-02, -1.026e-01, 9.780e-02, -4.521e-04, 2.490e-02, 7.735e-02, -6.801e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(5.293e-01, -1.077e-01, -7.242e-02, 8.732e-02, 2.224e-02, -8.276e-02, -2.745e-01, 1.204e-02, -2.626e-01, -1.373e-01, 4.433e-02, 2.252e-01, 4.495e-02, 1.217e-01, -5.055e-02, -8.474e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-1.254e-01, 4.963e-03, -1.756e-01, -1.907e-02, 1.516e-01, -1.101e-01, -7.795e-02, -5.534e-01, 1.275e-01, 2.796e-02, -2.686e-01, 2.130e-01, -1.401e-01, -3.518e-02, 4.679e-02, 2.221e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.912e-02, -8.471e-02, 3.603e-01, 1.158e-01, -8.450e-02, -3.080e-01, 1.230e-06, 3.071e-02, -3.218e-02, 1.969e-01, -1.009e-01, 2.103e-01, 8.871e-02, -3.577e-01, 3.221e-02, -3.843e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.694e-02, -1.073e-02, -8.421e-02, 6.116e-01, -3.386e-01, -9.878e-02, -4.589e-02, -1.792e-01, -9.149e-02, -2.744e-01, -5.156e-02, 1.045e-01, 6.012e-02, 3.058e-01, 1.768e-01, -3.454e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(-1.910e-02, -2.051e-01, -1.711e-01, 4.676e-01, 2.261e-01, 1.095e-01, 3.333e-01, 2.146e-01, 4.545e-01, 1.356e-01, -2.720e-01, 4.354e-01, -4.138e-01, -3.335e-01, 2.986e-01, -5.879e-01), r3);\n\tr4 = MulAdd(s0_2_0, M4(-1.991e-01, -9.786e-02, -3.662e-02, -1.407e-01, 5.699e-02, -5.722e-02, 3.569e-03, 1.722e-01, 2.832e-02, -2.516e-01, -1.851e-01, -1.658e-02, 8.938e-02, 3.902e-01, 1.550e-01, 1.092e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(-3.982e-01, 1.470e-01, -3.013e-01, 2.335e-01, -1.705e-01, -2.045e-01, -2.666e-02, -3.370e-02, 1.016e-01, 3.680e-01, -7.320e-01, -3.682e-01, -1.402e-01, -5.019e-01, 5.387e-01, 5.613e-01), r5);\n\tr6 = MulAdd(s0_2_0, M4(8.089e-02, -1.890e-01, 1.874e-01, 3.431e-01, 6.417e-02, -9.741e-02, -1.565e-01, -4.441e-03, -9.945e-02, 1.018e-01, 8.690e-02, 3.297e-01, 1.115e-01, -9.091e-02, -1.234e-01, -3.462e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(1.231e-01, 8.137e-01, 2.359e-01, -8.491e-01, 1.201e-01, 2.724e-01, 1.848e-01, 1.887e-01, 2.338e-01, -3.458e-03, -2.144e-01, 6.900e-02, 1.127e-01, 9.228e-02, 1.256e-01, -4.953e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(1.786e-01, 5.882e-02, 2.799e-01, -1.533e-01, 1.712e-01, -2.607e-01, -3.829e-02, -1.843e-01, 2.910e-02, -9.511e-02, 2.347e-01, 7.904e-02, 2.183e-03, 1.372e-02, -2.471e-01, -8.511e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.426e-01, 3.613e-01, 5.091e-02, -1.680e-01, 5.093e-02, -3.159e-01, -3.135e-01, 4.883e-02, 4.207e-02, -6.240e-02, 1.474e-01, 7.536e-02, 1.595e-01, 2.165e-01, -5.603e-02, -2.604e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-8.313e-03, 2.571e-01, 4.418e-02, 5.362e-02, -2.751e-01, -7.406e-02, -6.045e-02, -2.375e-02, -5.347e+00, 1.621e-01, -1.773e-01, -6.655e-02, -8.430e-01, -2.398e-01, 1.101e-01, -3.033e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(-3.036e-01, 1.330e-02, -2.597e-01, -6.286e-01, -1.854e-01, 5.270e-02, -1.264e-01, -6.594e-02, 1.771e-01, 2.570e-01, -4.943e-01, -4.208e-01, -6.096e-01, 9.289e-02, 7.077e-01, -3.697e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(2.716e-01, 1.768e-01, 1.944e-01, -8.207e-02, 1.341e-01, 1.201e-01, -1.594e-02, 4.040e-01, -3.285e-02, -1.449e-01, -8.652e-01, -1.613e-02, -1.140e-01, 1.943e-01, 5.035e-02, 8.257e-03), r4);\n\tr5 = MulAdd(s0_2_1, M4(-5.740e-01, 1.774e-01, -1.896e-01, 8.185e-02, -1.731e-01, 3.030e-01, -2.830e-01, -1.284e-01, -1.281e+00, 1.568e-01, -4.274e+00, 2.210e-01, 1.884e-01, 7.393e-02, -8.512e-01, -5.246e-01), r5);\n\tr6 = MulAdd(s0_2_1, M4(-2.225e-01, 1.647e-01, 1.220e-01, -4.858e-01, -2.938e-01, -9.040e-02, 3.880e-01, -1.284e-01, 9.119e-02, 1.852e-02, 1.362e-01, 1.093e-01, -1.694e-01, 5.333e-02, 1.433e-02, -1.917e-01), r6);\n\tr7 = MulAdd(s0_2_1, M4(-5.077e-01, -1.645e-01, 2.187e-01, -7.248e-01, 2.284e-01, -5.729e-02, 4.088e-01, 1.352e-01, -4.924e-01, 1.556e-01, -7.252e-02, -5.383e-02, 3.174e-01, 9.641e-02, 3.471e-01, -5.084e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(7.222e-02, 6.729e-02, 2.919e-01, -2.118e-02, 6.424e-02, -2.474e-01, -3.905e-01, -7.623e-02, 8.925e-02, -2.651e-02, -2.569e-03, -4.972e-01, -1.208e-01, 7.609e-02, -1.261e-01, 7.133e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(-2.801e-03, -1.237e-01, -1.725e-01, -1.067e-01, -3.873e-02, -1.704e-01, 1.233e-01, 1.289e-01, 6.323e-02, 2.078e-01, -1.053e+00, -1.050e+00, -1.209e-01, 3.128e-01, 5.231e-01, 8.581e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.358e-02, -1.654e-01, -6.001e-02, -9.969e-03, 2.913e-01, 1.205e-01, -1.167e-01, 7.387e-02, -1.743e-01, 3.108e-01, 3.803e-02, -2.184e-01, 1.985e-01, -3.644e-01, -7.957e-02, 4.017e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(4.970e-01, 3.662e-01, -8.976e-02, -4.254e-02, -1.123e-01, -2.621e-02, -5.920e-01, 9.548e-02, -4.957e-01, 1.046e-02, -1.608e-01, -2.283e-01, 5.287e-01, 6.701e-01, -3.040e-02, 2.713e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(-1.169e+00, 7.711e-02, 4.823e-01, -9.423e-02, 7.046e-02, 9.432e-03, -2.005e-02, 3.732e-01, 1.542e+00, 2.998e-02, 1.389e-01, -1.199e-01, -1.495e+00, 8.204e-02, -2.821e-01, 8.659e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(4.725e-01, -4.731e-01, -4.797e-02, -4.711e-02, 1.562e-01, -1.569e-02, 8.886e-02, -3.173e-01, -9.175e-01, 2.145e-01, -1.134e-01, 1.023e-01, -3.100e-02, -5.164e-01, -1.013e-01, -2.690e-01), r5);\n\tr6 = MulAdd(s0_2_2, M4(1.838e-01, 1.318e-01, 1.790e-01, 2.183e-01, -1.984e-01, 1.980e-02, -3.528e-01, 1.568e-01, -6.813e-02, 9.357e-02, 4.321e-02, -2.227e-01, -3.349e-02, -1.843e-01, -7.271e-02, 1.272e-01), r6);\n\tr7 = MulAdd(s0_2_2, M4(5.419e-02, -3.036e-01, 8.886e-03, -2.773e-01, 3.375e-01, 8.741e-02, -6.147e-02, 5.173e-01, -2.441e+00, 2.385e-01, -4.423e-02, -1.234e-01, -9.041e-02, -2.695e-01, 6.445e-02, 2.056e-01), r7);\n\tr0 = MulAdd(s1_0_0, M4(1.579e-02, -1.083e-01, -1.435e+00, -2.249e-02, 4.458e-02, -5.875e-02, -1.505e-02, 1.410e-01, 1.692e-02, -2.444e-02, -2.602e-01, 1.035e-01, 7.226e-02, 8.668e-02, 5.760e-01, -1.869e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(-2.020e-01, -9.937e-02, 1.773e-01, -8.553e-02, -3.189e-02, 1.545e-01, 1.084e-01, 2.853e-01, -3.560e-02, 6.368e-03, -1.731e-01, -1.503e-01, 4.123e-02, -2.174e-01, 4.387e-02, -2.576e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(8.435e-02, 1.379e-02, 5.444e-02, -7.825e-02, 5.003e-02, 1.070e-02, -6.017e-02, 1.388e-02, -1.173e-02, -5.952e-02, 8.074e-03, -7.669e-02, 3.271e-02, 6.589e-02, -1.171e-02, -4.846e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-1.343e-01, 2.662e-01, -1.043e-01, -8.454e-02, 1.435e-01, -4.970e-01, -2.129e-02, -1.881e-02, 2.150e-02, 3.560e-01, -1.854e-03, -9.859e-02, 4.501e-04, 7.017e-02, -1.213e-01, 1.226e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(5.136e-01, 1.382e-01, 1.081e-01, 1.082e-01, 5.111e-02, -1.423e-01, -3.956e-02, 2.640e-03, 1.463e-01, -2.585e-02, -5.943e-02, -1.511e-02, -1.314e-01, -3.638e-02, 1.685e-01, -4.390e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(1.932e-01, 1.471e-01, 1.572e-01, 3.028e-03, -8.144e-02, 4.466e-02, -3.116e-02, -2.039e-02, -4.119e-02, 1.646e-01, 2.355e-02, 1.007e-02, 9.788e-03, -2.958e-02, -1.392e-02, 1.210e-01), r5);\n\tr6 = MulAdd(s1_0_0, M4(-2.751e-03, 5.996e-02, -1.614e-02, -2.944e-03, -1.333e-01, 2.218e-02, -2.588e-03, -3.281e-02, 3.413e-02, 5.134e-03, 2.063e-03, 1.498e-02, -4.024e-02, -1.033e-01, 1.257e-01, -1.133e-01), r6);\n\tr7 = MulAdd(s1_0_0, M4(3.972e-01, 1.537e-01, 1.294e-01, 2.271e-01, 5.832e-02, -1.381e-02, -4.702e-02, 1.347e-01, 4.261e-02, 5.561e-02, -2.955e-02, 1.937e-04, 3.945e-02, 1.941e-01, -1.160e-01, -4.531e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(1.826e-02, -2.763e-02, -3.018e-01, -1.160e-01, 7.337e-02, -1.008e-01, -1.410e-01, -2.985e-02, 5.074e-03, 1.243e-01, -2.333e-01, -8.560e-02, 1.222e-01, -4.531e-02, -2.873e-01, -6.793e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.740e-02, -4.144e-02, 2.283e-01, -2.587e-01, -1.361e-01, 7.719e-03, -2.521e-01, -1.556e-01, 3.118e-02, 3.606e-02, 9.779e-02, 1.989e-01, -3.108e-02, 3.455e-01, 2.692e-01, 1.562e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-9.837e-02, 3.353e-01, -2.789e-02, 1.734e-01, -2.282e-02, -3.620e-01, 7.251e-02, 2.043e-01, 4.578e-02, 1.971e-01, -3.951e-03, -1.955e-01, 1.149e-02, 2.703e-01, -5.042e-02, -2.054e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-4.423e-01, -3.213e-01, 1.226e-01, 1.963e-01, -1.237e-01, -3.795e+00, -4.341e-02, -2.991e-02, -1.517e-02, -2.266e-01, 1.797e-01, 1.484e-01, 1.419e-01, -9.086e-02, 1.426e-01, -6.726e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(3.016e-01, -1.818e-01, -1.581e-01, 1.962e-01, -1.090e-01, 5.935e-02, 7.021e-02, 1.211e-01, 5.810e-02, -1.225e-01, -6.216e-01, -1.193e-01, 1.090e-01, -1.722e-01, 1.249e-01, -7.298e-03), r4);\n\tr5 = MulAdd(s1_0_1, M4(1.946e-01, 3.350e-01, -4.255e-02, 1.627e-01, -1.836e-02, 2.590e-02, -2.287e-02, -1.721e-01, 1.861e-01, 1.825e-01, 1.903e-01, 2.142e-01, 1.741e-01, 1.196e-02, 1.669e-03, 4.483e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(1.429e-01, 2.489e-02, 1.099e-01, 2.045e-02, 1.761e-02, 8.304e-02, -2.813e-02, -1.265e-01, 4.668e-02, 1.700e-02, -4.212e-02, -1.136e-01, -2.708e-01, -2.831e-02, 1.135e-01, -2.251e-01), r6);\n\tr7 = MulAdd(s1_0_1, M4(1.655e-01, -1.110e-01, 1.002e-01, 3.854e-01, 8.956e-02, -1.102e-01, -1.640e-02, -2.322e-01, -1.219e-01, -1.422e-01, 2.342e-02, 3.139e-01, 1.516e-01, 8.188e-02, -1.245e-02, 1.722e-01), r7);\n\tr0 = MulAdd(s1_0_2, M4(-5.548e-03, 8.293e-03, 1.301e-01, 9.932e-03, 1.137e-01, -1.198e-01, -5.150e-02, -2.378e-01, 1.994e-02, -1.742e-02, -7.982e-02, -6.737e-02, 5.805e-03, 5.078e-02, -7.908e-02, 9.669e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(9.321e-03, 3.553e-02, 1.186e-02, -4.291e-01, 1.766e-02, 1.222e-03, -7.329e-02, -4.445e-01, -3.216e-03, -1.810e-02, -4.495e-02, -2.990e-03, 3.442e-03, -6.991e-02, 8.882e-02, -5.527e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(3.281e-02, -8.740e-02, -1.971e-02, 1.138e-02, -9.093e-02, -1.721e-01, 4.678e-02, -1.669e-01, -4.207e-03, 3.006e-02, 8.459e-03, -4.329e-02, 2.660e-02, -9.233e-02, -2.448e-02, -2.685e-01), r2);\n\tr3 = MulAdd(s1_0_2, M4(-1.591e-01, 1.714e-01, -3.665e-02, 2.231e-02, 1.179e-01, -2.390e-01, 1.264e-01, 8.412e-02, 5.706e-02, 2.720e-03, -1.439e-02, 4.639e-03, -9.595e-02, -1.559e-01, -7.156e-02, -2.330e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-5.308e-01, 4.186e-03, 1.478e-02, -1.135e-03, 2.576e-01, -1.439e-02, 4.536e-02, 7.771e-02, -1.951e-01, 1.656e-02, 5.440e-02, -1.920e-02, -1.932e-02, 3.857e-02, 9.185e-02, 9.146e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(1.597e-01, 2.808e-03, 9.554e-02, 1.117e-01, 2.236e-01, 2.113e-02, 3.502e-03, 1.114e-02, 2.600e-02, 1.049e-01, 1.142e-01, 1.791e-02, 9.222e-02, 1.009e-02, -5.572e-02, 1.631e-01), r5);\n\tr6 = MulAdd(s1_0_2, M4(2.413e-02, -9.213e-03, 2.319e-02, 4.610e-02, -1.765e-02, 8.991e-02, 1.997e-01, -1.401e-01, -4.330e-02, 2.681e-02, -2.551e-02, -6.902e-02, -5.387e-02, -1.509e-01, 7.633e-02, 4.040e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(7.643e-02, 4.427e-02, 1.925e-02, 3.061e-02, -1.077e-01, -1.371e-01, 5.629e-02, 9.188e-02, 5.283e-02, -6.424e-05, -6.226e-03, -6.026e-02, -5.631e-02, 9.235e-03, -2.152e-03, -9.433e-03), r7);\n\tr0 = MulAdd(s1_1_0, M4(-1.226e-02, 1.027e-01, 3.662e-01, 4.610e-01, 1.401e-01, 9.713e-03, -4.878e-01, 8.399e-01, -1.675e-02, -5.892e-02, -3.426e-01, -1.688e-01, 2.284e-02, -2.961e-02, 5.377e-02, 2.754e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(2.627e-01, -1.533e-01, 4.762e-03, 3.341e-01, -4.792e-02, -3.159e-01, -7.691e-02, 3.030e-01, 7.204e-02, -2.347e-01, -1.048e-01, 5.153e-02, 3.540e-02, -7.566e-02, 4.331e-01, 3.242e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(6.660e-01, 6.274e-02, 6.530e-01, 3.653e-01, 6.049e-02, -2.562e-03, -6.103e-02, -7.870e-02, 3.577e-02, -6.027e-02, 7.688e-02, -7.634e-02, 1.488e-01, 3.144e-01, 4.040e-03, -1.310e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(4.945e-01, 9.660e-02, -2.692e+00, 5.874e-01, -3.029e-02, -4.143e-02, -4.784e-01, 2.786e-01, -1.509e-02, 3.767e-01, 7.916e-03, 1.848e-02, -1.195e-01, 8.137e-02, 1.620e-01, 1.939e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(-1.879e-02, -7.548e-02, 3.302e-01, -1.105e-01, 1.167e-01, 1.119e-01, 1.155e-01, 8.882e-04, 1.724e-01, -9.690e-02, -1.581e-02, 6.670e-02, -1.418e-01, -1.422e-01, -9.624e-02, -1.486e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-3.591e-01, 6.222e-02, -2.940e-01, -1.878e-01, -1.034e-01, -1.186e-01, 3.150e-02, -8.102e-02, 2.485e-01, -2.330e-02, -2.052e-02, -1.579e-01, 2.297e-01, -1.624e-01, 7.925e-01, -6.879e-01), r5);\n\tr6 = MulAdd(s1_1_0, M4(5.807e-02, 6.707e-02, -1.000e-01, 2.514e-01, -5.528e-03, 6.171e-02, 2.516e-01, -2.541e-01, -7.172e-02, -1.622e-02, -6.240e-03, -7.076e-02, -7.986e-01, -1.534e-01, 5.645e-02, 7.012e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(-2.522e+00, 1.362e-01, -9.263e-02, 3.330e-01, 4.227e-02, 1.654e-01, -1.323e-01, 4.628e-02, 1.013e-01, 5.371e-02, -2.235e-01, 2.180e-01, 5.074e-02, -2.487e-02, 2.530e-01, 2.506e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(7.132e-02, -7.323e-02, 1.564e-01, 2.437e-03, 2.251e-01, 2.026e-01, -1.050e-01, 1.076e-01, 9.997e-02, 1.513e-01, 4.962e-01, -3.428e-01, 3.369e-01, 1.037e-01, -2.551e-01, 1.243e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(9.218e-02, 1.622e-01, -5.765e-01, -5.321e-01, -1.024e-01, -5.477e-01, -2.185e-01, -1.111e-01, -6.262e-02, -2.448e-01, 7.555e-01, -1.407e-01, -2.240e-02, -2.051e+00, -4.731e-01, 1.180e+00), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.730e-01, 2.885e-01, 2.039e-01, -9.299e-02, 1.510e-01, 9.052e-02, -3.344e-01, 1.319e-01, -1.101e-01, 3.947e-01, 2.099e-02, -5.973e-02, -1.578e-01, -1.838e-01, 1.077e-01, -3.177e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-1.632e+00, 5.618e-01, -1.538e-01, 2.195e-01, -2.935e-01, -7.932e-01, 3.020e-01, 7.600e-02, -3.696e-01, -2.265e+00, 1.898e-02, -2.369e-01, 9.104e-02, 5.054e-03, 4.962e-02, -1.609e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(4.157e-01, -7.223e-02, 2.628e-01, -1.291e-01, -1.058e+00, -5.367e-01, -5.378e-01, -2.581e-02, 3.113e-02, -4.239e-01, 4.305e-02, -1.714e-01, 1.513e-01, -3.345e-01, -1.063e-01, 3.704e-04), r4);\n\tr5 = MulAdd(s1_1_1, M4(-4.771e-01, 2.055e-01, -2.987e-01, 4.894e-02, 1.867e-01, -2.540e-01, 1.951e-01, -3.518e-01, -4.019e-01, -8.083e-01, -1.095e-01, 2.086e-01, 1.636e-01, 2.877e-01, -2.237e-01, -3.922e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(1.290e-01, 1.520e-01, 2.783e-01, -1.412e-01, 2.498e-02, 2.493e-01, -1.238e-01, 5.585e-01, -1.097e-02, 1.058e-01, 7.072e-02, -1.209e-01, 2.114e-01, 2.621e-01, -2.175e-01, 3.182e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(1.851e-02, -7.570e-02, 1.266e-01, 2.639e-01, 6.978e-02, 1.464e-01, -9.580e-02, -7.686e-01, -1.212e-01, -4.383e-02, 5.390e-02, -1.768e+00, -2.436e-03, 4.428e-01, -3.696e-01, -2.640e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-9.770e-03, 6.306e-03, 1.804e-01, 1.370e-02, 7.737e-02, -2.676e-02, -6.097e-02, -1.111e-01, -1.065e-02, -5.215e-02, -1.316e-02, -1.260e-01, 2.806e-02, -1.718e-02, -6.579e-02, -7.193e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(2.085e-02, 3.598e-02, 2.140e-01, -5.791e-01, 9.369e-02, -5.854e-02, 1.317e-01, -2.134e-01, 1.601e-02, -2.773e-01, -3.338e-01, -1.165e-01, -1.856e-02, 3.423e-01, -7.095e-02, -5.437e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(3.316e-02, -2.628e-02, 2.259e-02, -1.169e-01, -1.467e-01, 1.285e-02, 1.495e-01, -7.578e-02, 4.074e-03, -3.720e-01, 2.225e-02, -1.661e-01, 3.835e-02, -1.152e-01, -4.071e-02, 6.704e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.903e-02, 1.533e-01, -2.691e-01, 5.774e-02, 1.117e-01, 7.101e-03, 1.782e-01, -7.788e-03, 1.791e-02, 2.480e-01, -7.691e-02, 2.738e-01, 7.957e-02, -1.453e-01, 7.636e-03, 4.225e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.124e+00, -7.915e-02, 2.163e-01, 1.581e-02, -1.762e+00, -7.500e-04, -9.075e-02, 2.782e-02, -3.449e-01, 7.352e-02, 1.631e-01, 5.118e-02, -3.892e-02, -7.428e-03, -6.212e-02, -8.279e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(1.412e-01, 1.029e-01, 1.352e-01, 1.576e-01, -1.411e-01, -1.059e-02, -7.023e-02, 2.630e-02, -3.741e-02, -5.470e-02, -1.038e-01, -3.968e-02, -3.037e-01, -1.558e-01, -4.832e-02, 1.752e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(-1.361e-02, -1.481e-02, 3.347e-02, 1.005e-01, 2.765e-02, 9.987e-02, 2.007e-01, -1.024e-01, -1.104e-01, -1.052e-02, -5.395e-02, 2.931e-02, 1.413e-01, -2.293e-01, 1.697e-01, -7.611e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(1.471e-01, 1.291e-02, 1.069e-02, 1.275e-01, 2.067e-01, -1.924e-01, 3.218e-03, 3.504e-02, -5.339e-03, 1.003e-03, 1.076e-02, 9.675e-02, -2.149e-01, -1.909e-01, 1.879e-02, 7.355e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-7.326e-02, 1.048e-02, 1.274e-01, -3.045e-02, 1.371e-03, -1.855e-03, 1.126e-02, 3.060e-01, -5.655e-02, 1.428e-02, -9.141e-02, -3.496e-01, 6.166e-02, -3.642e-02, 1.479e-02, 1.755e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(5.915e-02, 2.522e-01, 3.330e-01, 5.604e-02, 1.273e-02, 2.328e-01, 5.207e-02, 2.654e-01, -6.309e-04, 8.362e-03, -2.007e-01, -3.962e-02, -7.399e-02, 2.614e-01, -1.501e-01, -4.623e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(9.377e-03, -5.971e-02, 3.077e-02, -2.275e-01, 3.482e-02, 7.639e-02, 1.369e-02, -1.982e-01, -1.044e-02, -8.156e-02, -1.378e-02, -1.062e-01, -6.763e-02, -8.970e-02, -3.908e-03, 1.739e-01), r2);\n\tr3 = MulAdd(s1_2_0, M4(-3.001e-02, -1.107e-01, 2.671e-02, -2.626e-01, 1.259e-01, 5.844e-01, -2.209e-01, -7.665e-02, 5.528e-02, 1.292e-01, -1.170e-02, 1.917e-02, -6.496e-02, -3.569e-02, -2.784e-02, 5.061e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(2.822e-02, 4.508e-01, 1.033e-01, 2.287e-02, 4.449e-02, -1.681e-01, 8.690e-02, -6.618e-02, 5.259e-03, -1.299e-01, 8.366e-02, 2.248e-02, 1.066e-01, 1.303e-01, 3.312e-02, 2.615e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-2.402e-01, -1.795e-01, 1.103e-01, -1.727e-02, 1.479e-01, -1.883e+00, 3.585e-03, 1.426e-01, -8.179e-02, -1.401e-01, -4.805e-02, -6.837e-02, -1.202e-01, 1.978e-01, -8.150e-02, 3.469e-01), r5);\n\tr6 = MulAdd(s1_2_0, M4(-7.792e-02, -1.485e-01, 6.467e-02, -1.975e-02, -6.483e-02, 5.691e-02, 1.102e-01, 3.270e-02, 1.238e-02, -6.222e-02, -1.746e-02, -2.470e-02, 1.601e-01, 1.374e-01, -1.836e-01, -5.759e-03), r6);\n\tr7 = MulAdd(s1_2_0, M4(2.499e-01, -4.480e-01, -3.290e-01, -2.216e-01, -9.255e-02, -3.007e-01, -7.128e-01, -7.033e-01, 9.731e-02, 5.746e-02, 3.317e-02, 1.161e-01, 7.759e-02, -1.381e-01, 2.052e-01, -1.557e-01), r7);\n\tr0 = MulAdd(s1_2_1, M4(1.666e-02, 1.212e-02, 1.495e-01, -5.041e-02, 1.392e-01, 8.722e-03, 4.953e-02, 7.704e-02, 4.435e-02, -4.208e-02, 1.848e-01, 4.386e-02, 9.694e-02, -7.898e-02, 1.193e-02, -4.107e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(5.320e-02, 1.374e-01, -2.766e-02, 1.964e-01, 5.556e-02, -2.275e-02, 1.976e-01, -1.194e-01, 5.674e-03, 3.689e-03, 2.878e-01, -1.327e-01, 8.873e-02, -5.303e-02, 2.203e-02, -5.378e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-4.093e-02, 1.473e-01, -5.222e-03, -9.215e-02, -7.099e-03, 4.233e-02, 1.479e-01, 2.852e-01, 7.164e-02, 8.142e-02, -3.429e-02, 1.899e-02, -7.737e-02, -9.458e-02, 8.848e-02, -1.697e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(-3.422e-01, -1.146e+00, -3.532e-02, -1.411e-01, -2.652e-01, -4.357e+00, -1.177e-01, 6.360e-02, 6.255e-02, -7.995e-02, 5.697e-02, -7.187e-02, 1.001e-01, 3.325e-02, 1.285e-02, -3.802e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-2.598e-01, 6.488e-01, 6.652e-02, -2.715e-02, -2.154e-01, -2.980e+00, -2.069e-02, -1.431e-01, -1.392e-01, -7.985e-03, 6.924e-02, 1.847e-02, 1.451e-01, 8.123e-01, -8.267e-02, 5.443e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-3.564e-01, -2.191e+00, -6.018e-02, -1.938e-01, 4.269e-02, -2.127e+00, -7.545e-02, 9.154e-02, 6.278e-02, -3.070e-01, 3.891e-02, 1.869e-01, -2.919e-01, 2.844e-02, -3.150e-01, 1.001e-01), r5);\n\tr6 = MulAdd(s1_2_1, M4(-3.816e-03, -6.902e-02, 2.162e-01, 2.539e-01, 1.759e-01, 2.502e-01, -1.031e-02, 2.629e-01, -1.144e-02, 6.310e-02, -2.995e-02, 2.000e-01, 5.448e-01, 1.762e-01, -7.441e-02, -7.102e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(3.289e-01, 5.875e-02, -7.283e-02, -1.354e-01, -1.470e-01, 1.248e-01, -5.064e-02, -2.585e-01, -6.121e-01, -2.082e-01, 1.884e-02, -2.201e-01, -2.121e-01, -2.917e-01, -3.463e-02, 1.061e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-3.157e-03, -5.837e-03, -3.209e-02, 2.325e-02, 7.588e-02, 3.066e-02, 1.159e-01, -1.256e-01, -1.217e-02, -1.961e-03, 1.120e-02, -8.932e-02, 8.348e-03, -1.634e-02, 7.150e-02, -7.869e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.925e-02, -9.323e-02, 1.093e-01, 1.440e-01, 4.896e-02, 6.838e-02, -3.054e-01, -2.351e-01, 2.370e-02, 8.959e-02, -2.650e-01, 1.147e-01, 3.597e-02, 2.343e-01, -1.616e-01, -1.684e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(-2.111e-02, -4.678e-02, -2.064e-02, -1.434e-01, -7.085e-02, 6.437e-02, 1.146e-01, 1.303e-01, -9.057e-03, 1.974e-03, 1.654e-02, 9.672e-02, 5.066e-02, -4.068e-02, 2.742e-02, 3.741e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(-3.845e-01, 7.272e-02, -1.340e-01, -3.167e-02, -4.070e-02, 1.360e-01, 1.458e-01, -1.321e-01, -2.271e-01, -1.818e-01, -8.549e-02, 1.098e-01, -9.441e-02, 2.719e-01, -1.179e-01, -3.088e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-3.251e-01, -1.423e-02, 1.128e-02, 3.164e-02, 1.587e-01, -3.067e-01, 2.153e-02, -8.235e-02, 1.393e-01, -8.501e-02, 3.853e-02, -5.606e-03, -1.627e-01, 9.091e-02, -5.899e-02, 5.939e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.496e-01, -2.657e-01, 4.002e-02, -1.759e-02, -3.419e-01, -3.796e-01, 9.023e-02, 4.696e-02, 7.967e-02, -1.331e-01, 1.199e-01, 1.008e-01, 5.004e-02, -1.405e-01, 3.448e-02, 6.639e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(6.387e-02, -9.906e-04, -3.007e-02, 3.197e-03, 1.540e-02, 8.230e-02, 2.349e-01, 5.369e-02, -2.218e-02, -1.593e-02, 6.438e-02, 2.528e-02, 1.100e-01, 6.019e-02, -4.751e-02, 8.902e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(9.929e-02, 4.733e-02, 2.715e-02, 1.218e-01, -1.383e-01, 7.304e-02, 7.645e-02, -4.314e-01, 9.264e-02, 2.782e-02, 1.333e-01, 1.834e-01, 2.272e-01, -1.113e-01, 5.372e-02, 4.100e-02), r7);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.781e-02, -5.939e-02, 1.163e-01, 5.648e-01, 3.528e-02, -8.603e-03, -3.409e-01, -1.362e-01, -1.727e-02, 1.774e-02, -8.359e-01, 4.601e-02, -1.854e-02, -1.243e-02, 4.190e-01, -8.809e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.097e-01, 9.194e-02, 2.193e-01, 1.820e-01, 1.036e-02, -2.565e-02, -9.141e-02, -3.425e-02, 6.413e-03, 1.781e-01, 1.659e-01, -1.278e-02, -5.602e-02, -1.650e-03, 1.715e-01, -2.581e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.458e-01, 1.243e-01, 8.180e-02, 4.466e-01, -8.278e-03, -4.764e-02, 1.171e-02, -1.094e-01, -1.551e-02, 2.961e-02, -8.234e-03, -6.218e-03, 5.699e-02, -3.647e-01, -7.016e-02, 3.192e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-5.068e-02, -1.256e-01, 2.304e-01, 1.301e-01, 7.141e-02, -1.142e-01, 2.320e-02, 3.740e-02, -9.932e-02, 1.588e-01, 4.560e-02, 9.458e-02, -1.054e-01, 1.360e+00, 1.574e-01, -4.502e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(-2.153e-01, 1.230e-01, -3.530e-01, -2.725e-02, -2.159e-02, 1.504e-02, -5.201e-02, -8.607e-03, -2.215e-01, -4.820e-02, -2.215e-03, -5.728e-02, -4.048e-01, 6.152e-02, 2.879e-01, -7.700e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-5.560e-02, 2.725e-01, 7.888e-02, 5.367e-02, -4.154e-02, 6.771e-02, -2.185e-02, -3.884e-02, 2.208e-01, 1.555e-01, -5.652e-02, 1.147e-01, 1.373e-01, 1.395e-01, 1.762e-01, 1.049e-01), r5);\n\tr6 = MulAdd(s0_0_0, M4(4.836e-02, -5.171e-02, 5.595e-03, -2.235e-01, 1.481e-02, 6.242e-02, 3.556e-02, -3.125e-02, -5.275e-02, -3.493e-02, 1.266e-01, -7.447e-02, 1.549e-02, -1.508e-02, -3.315e-02, 1.239e-01), r6);\n\tr7 = MulAdd(s0_0_0, M4(3.463e-02, -3.665e-02, 1.137e-01, 1.278e-01, -9.632e-02, -1.477e-02, -1.671e-02, 5.770e-02, -2.485e-01, -1.586e-01, 4.270e-02, -2.079e-01, 2.022e-02, 1.321e-01, -5.222e-02, -2.123e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(3.530e-02, 2.379e-01, 4.001e-03, 2.128e-01, 4.067e-02, -7.246e-04, 1.027e-01, 8.766e-02, 4.659e-03, -2.265e-03, 3.773e-02, 1.040e-02, -8.287e-02, 2.315e-03, 2.588e-01, -1.100e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(1.608e-02, 1.511e-01, -2.797e-01, 4.545e-02, 8.135e-03, 2.789e-02, 1.254e-01, -1.018e-01, 7.574e-03, 4.312e-01, 1.005e-03, -8.998e-01, 3.502e-02, 4.996e-01, 3.826e-01, -6.364e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.558e-02, -2.906e-01, 5.881e-02, -3.506e-01, -2.096e-02, -1.278e-03, -2.434e-03, -2.113e-01, 4.954e-03, 1.956e-01, -1.602e-02, -1.912e-01, 3.444e-03, 9.863e-01, -4.445e-02, -1.503e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(2.218e-01, 2.047e-01, 1.391e-01, -6.428e-02, -6.085e-02, 1.101e-01, -3.386e-02, -1.412e-02, 3.110e-02, -1.032e-02, -8.391e-02, -6.183e-02, -1.118e-01, 1.253e-01, -2.903e-01, -9.456e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-3.438e+00, 1.363e-01, -1.238e-01, -4.326e-01, -3.126e-02, -1.139e-01, -4.311e-02, 1.720e-02, -2.477e-01, 4.957e-02, 9.419e-02, -2.270e-02, -7.644e-01, -1.401e-01, 3.096e-02, 6.904e-03), r4);\n\tr5 = MulAdd(s0_0_1, M4(-1.895e-01, -9.987e-02, -1.319e-01, 1.971e-02, -5.501e-02, -1.896e-01, 1.400e-02, -1.882e-02, 4.431e-02, -5.045e-02, 1.450e-02, 8.908e-02, 1.297e-01, -4.007e-01, 1.089e-01, -1.003e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(-1.165e-01, 4.909e-02, -1.008e-01, 1.938e-02, 1.312e-03, 2.620e-02, 5.312e-02, 1.401e-01, 4.000e-02, -2.540e-02, 5.797e-02, -2.167e-01, 1.592e-02, -1.217e-01, -6.981e-02, 1.874e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(3.365e-01, 1.707e-01, -1.011e-01, -2.850e-01, 2.732e-01, -4.041e-02, 3.598e-02, 2.231e-02, 4.925e-02, 6.518e-02, 3.307e-02, 4.403e-02, 9.121e-03, 4.962e-02, -1.623e-02, 9.346e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(2.785e-02, -2.666e-02, -1.841e-02, -2.182e-02, 1.344e-02, 9.919e-03, -7.123e-02, -1.126e-02, 1.770e-03, 7.046e-03, -5.657e-02, 5.793e-04, -5.774e-02, 1.864e-02, -1.095e-01, -6.193e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-2.539e-02, 7.043e-03, -2.927e-01, -2.495e-01, -1.022e-02, 9.859e-02, -9.090e-03, 1.696e-01, -5.167e-03, 1.031e-01, 2.761e-02, 2.616e-03, 3.645e-02, -8.228e-02, 5.059e-01, 3.679e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-5.604e-02, -8.875e-02, -9.117e-04, 1.390e-01, 2.673e-02, 1.236e-01, 2.027e-03, 5.485e-02, 1.220e-04, -6.697e-02, 1.317e-04, 1.737e-02, -2.881e-02, 9.628e-02, 9.109e-03, -6.837e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(7.571e-02, 8.532e-02, -2.496e-02, -2.473e-02, -6.623e-02, 1.872e-02, -9.705e-04, 4.374e-02, -7.103e-02, 6.613e-02, 2.287e-02, 2.331e-03, 5.562e-02, 1.088e-01, -4.346e-02, 1.175e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-1.628e-01, 4.153e-02, 1.051e-01, 2.955e-02, 2.984e-02, -5.430e-03, 1.398e-02, -1.811e-02, -8.156e-02, -1.027e-02, -6.059e-03, -1.069e-02, 2.720e-01, -4.235e-02, 8.730e-02, -1.014e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(-3.630e-02, 2.520e-01, 2.405e-02, 1.523e-01, 1.076e-01, 8.781e-02, 7.576e-02, -7.698e-02, -2.851e-02, 4.791e-02, 2.980e-02, -4.206e-03, -2.925e-02, -2.197e-01, -1.882e-01, -1.769e-01), r5);\n\tr6 = MulAdd(s0_0_2, M4(4.646e-02, 4.343e-02, -5.830e-03, 9.206e-02, -1.492e-02, 8.533e-03, 6.068e-02, -4.519e-02, -2.300e-02, 3.015e-02, -1.838e-02, 3.463e-02, -6.165e-02, -9.799e-02, 3.545e-02, -6.617e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(9.350e-02, 4.419e-03, 2.767e-02, 1.538e-01, -1.529e-02, 2.404e-02, -1.507e-02, 3.436e-02, 1.702e-01, 1.020e-02, 1.121e-02, 3.342e-02, -1.862e-02, -2.280e-02, -3.450e-05, 9.041e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(9.967e-03, 2.146e-02, 3.053e-01, -9.618e-03, 6.240e-02, -6.987e-03, -1.128e-03, -1.195e-02, 1.561e-01, -8.004e-03, -1.090e-02, 8.557e-02, 2.108e-01, 2.658e-02, -5.013e-01, 4.327e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(2.180e-01, 3.471e-01, 1.841e-01, 8.686e-02, 1.448e-02, 1.142e-01, 2.338e-01, 2.681e-01, -1.784e-02, -1.739e-01, 5.014e-03, 1.685e-01, -2.512e-02, -1.596e-01, -2.259e-01, -4.387e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.281e+00, 4.921e-02, 5.564e-02, -6.909e-01, -1.434e-01, -1.007e-01, 8.700e-03, -8.193e-02, 5.387e-02, -1.418e-01, 7.102e-02, -1.962e-01, -2.951e-01, -7.729e-02, 1.202e-01, 8.184e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(5.537e-02, -3.026e-01, 2.575e-01, -2.746e-01, 1.402e-01, 2.170e-01, 4.830e-02, -6.982e-02, 1.252e-01, -5.173e-02, 8.812e-02, 2.651e-02, 4.285e-01, 7.284e-01, -4.640e-01, 1.911e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(-7.618e-02, 5.293e-01, -1.650e-01, -5.577e-02, 3.687e-02, -4.504e-02, 6.886e-02, 1.650e-02, -6.974e-02, -9.169e-02, 1.415e-02, 2.968e-02, 4.573e-01, -1.733e-01, 4.196e-01, 8.544e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-3.614e-01, -2.983e-01, -8.107e-01, -9.519e-02, -2.242e-01, -5.118e-02, -1.586e-01, 8.151e-02, -3.480e-01, -2.780e-01, -4.963e-02, -2.365e-01, -1.470e+00, -3.071e-01, 1.143e+00, 3.775e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-9.555e-02, -2.478e-02, 2.236e-02, 4.285e-02, 8.599e-02, 1.647e-01, 7.191e-02, -9.633e-02, -8.960e-02, 2.802e-01, -8.908e-02, 2.765e-01, -1.879e-01, 4.335e-01, -2.043e-01, 7.826e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(2.055e-02, -2.202e-01, 4.832e-01, -1.839e-01, 5.092e-02, 2.519e-02, -7.409e-02, -2.034e-01, 9.120e-02, 4.052e-01, -3.460e-01, 7.916e-02, -1.718e-01, 2.044e-01, -1.593e-01, 2.251e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(-1.445e-02, -4.565e-02, -1.721e-01, 2.026e-01, -9.035e-02, 1.937e-02, -3.778e-01, 6.022e-02, -5.473e-02, -9.363e-03, 8.817e-02, -1.401e-02, 2.403e-02, -6.538e-02, -1.073e-01, -2.214e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-4.746e-02, -2.769e-02, 5.489e-01, 1.884e-01, -4.508e-02, 1.103e-01, 1.131e-01, -4.733e-01, 2.756e-03, -2.142e-01, -3.776e-01, 1.787e-01, -1.567e-01, 9.833e-02, 7.948e-02, -3.514e+00), r1);\n\tr2 = MulAdd(s0_1_1, M4(4.395e-01, -3.525e-01, -1.954e-01, 1.776e-01, 1.264e-01, 3.481e-01, -9.153e-02, -7.581e-02, -3.504e-02, 2.188e-01, 1.861e-02, -2.393e-02, 8.900e-02, 6.005e-02, -5.975e-02, -8.359e-03), r2);\n\tr3 = MulAdd(s0_1_1, M4(4.340e-01, -3.172e-01, -2.960e-02, 1.735e-01, -3.280e-01, -1.817e-01, -1.012e-01, 6.611e-02, 8.918e-02, -9.444e-02, -1.176e-01, 4.584e-02, -7.116e-01, -5.806e-01, -8.859e-02, 1.451e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-6.712e-01, 1.904e-01, 1.167e-01, 2.522e-01, -4.406e-01, 1.728e-02, -5.536e-03, -6.519e-02, 2.024e-01, -9.658e-02, 8.125e-02, -9.844e-03, -8.130e-01, -2.071e-01, -3.174e-01, 4.126e-03), r4);\n\tr5 = MulAdd(s0_1_1, M4(6.644e-01, -1.506e-01, 5.106e-01, -1.239e-02, 4.307e-01, 2.438e-01, 1.797e-01, 7.655e-02, -3.377e-01, -6.943e-02, 5.004e-02, -4.901e-02, -1.966e-01, 2.300e-01, -8.708e-02, 3.517e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-8.579e-02, -2.938e-02, -1.438e-01, 4.019e-01, -4.293e-02, -1.488e-01, 1.295e-01, -1.796e-01, 4.670e-02, -3.869e-02, 4.809e-02, -3.222e-01, -1.068e-01, -3.013e-02, 3.208e-01, 2.241e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(-4.927e-01, -7.879e-02, -3.116e-01, 1.798e-01, -5.096e-01, 4.421e-02, -4.088e-02, -3.461e-01, -1.460e-01, 1.282e-01, 7.148e-02, -1.187e-01, -3.098e-01, 3.776e-02, -1.646e-01, 1.916e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(4.974e-02, -2.637e-03, -8.682e-02, -3.080e-02, 2.087e-02, 9.392e-05, 8.206e-02, -6.658e-02, 4.205e-02, -7.931e-03, -3.427e-02, -1.050e-02, -1.197e-02, -1.203e-02, 5.652e-03, 9.048e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(1.323e-02, 7.097e-02, 2.334e-02, 2.500e-01, 2.688e-02, 1.785e-01, -2.504e-01, -5.567e-01, 6.462e-04, 1.199e-01, 1.623e-01, -2.558e-01, 4.392e-02, 9.224e-02, -3.747e-01, 3.458e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-2.276e-02, 2.907e-02, -2.255e-02, 7.787e-02, 4.508e-04, -2.110e-01, 1.772e-02, -5.353e-02, 8.269e-03, -6.945e-02, 6.406e-03, -4.026e-02, -2.109e-02, 1.637e-01, 6.902e-02, -5.974e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-7.195e-02, -9.843e-02, 6.665e-02, 6.567e-02, 6.306e-02, -6.620e-03, 2.686e-02, -5.461e-02, -6.032e-02, -1.389e-02, 1.576e-02, -2.344e-02, -2.189e-02, -3.265e-01, -7.592e-02, -6.654e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(-2.326e-01, 8.957e-02, -4.542e-02, 3.284e-02, -1.980e-01, 3.927e-02, -1.393e-02, -2.680e-02, -1.596e-01, 5.213e-02, -1.308e-02, 1.970e-02, 1.797e-01, -1.647e-02, -1.162e-01, -1.693e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(2.695e-01, -1.509e-01, 1.131e-02, -1.237e-01, 7.103e-02, -1.343e-02, -9.663e-03, 1.055e-01, 1.160e-01, 2.764e-02, -5.007e-03, -2.683e-02, -3.043e-01, 5.588e-03, 3.196e-02, -7.441e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(8.186e-02, 3.659e-02, 5.859e-02, -3.447e-02, 4.449e-03, 7.349e-02, -7.848e-03, -7.482e-02, 1.070e-02, 5.278e-02, 1.922e-02, 9.323e-02, 2.213e-02, -6.782e-02, 8.951e-02, 1.251e-01), r6);\n\tr7 = MulAdd(s0_1_2, M4(1.539e-01, 9.875e-02, 5.526e-02, 3.553e-02, 1.712e-01, 9.505e-03, 5.244e-02, 3.775e-02, 6.011e-02, -1.237e-02, -2.087e-02, 8.979e-02, -3.227e-02, 8.181e-02, -6.446e-02, -7.090e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(2.598e-02, -2.844e-02, 4.678e-02, 1.494e-01, 2.380e-02, 1.801e-02, 2.346e-02, 1.957e-01, -8.192e-03, -5.048e-03, 9.411e-02, -7.100e-02, -1.365e-01, 4.456e-02, -8.831e-02, 1.073e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(5.139e-02, -1.653e-01, -2.329e-01, -2.498e-01, -3.248e-03, 2.036e-01, 2.105e-02, -3.346e-02, 2.360e-03, -1.664e-01, 8.449e-02, -1.024e-02, -1.622e-02, -1.890e-01, -1.501e-01, -3.511e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-6.471e-04, -7.640e-02, 3.420e-02, 2.883e-01, 1.963e-02, -4.179e-02, 3.009e-02, -1.649e-01, -1.848e-02, -1.998e-02, -8.781e-03, -7.073e-02, 1.623e-01, 1.821e-01, -1.018e-01, 1.232e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(-1.362e-01, -7.617e-01, -2.599e-01, -3.788e-01, 1.093e-02, 1.944e-01, 1.232e-01, 8.691e-02, 2.166e-02, 2.799e-01, 8.658e-02, 1.160e-02, -1.475e-01, 3.683e-03, 2.812e-01, -1.583e-03), r3);\n\tr4 = MulAdd(s0_2_0, M4(9.846e-02, -2.809e-01, -6.856e-02, -1.216e-03, 1.906e-02, -4.648e-02, 5.743e-02, -1.753e-02, 1.076e-02, -4.717e-02, 3.934e-02, 8.246e-03, 4.512e-02, 2.355e+00, -5.317e-02, -9.784e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(-3.575e-01, -8.813e-01, -3.011e-01, 8.934e-02, 3.076e-01, -1.917e-01, -6.542e-02, -7.229e-02, 1.620e-01, 1.282e-01, -1.902e-02, -5.281e-02, 1.248e-01, -8.988e-01, 5.124e-01, 5.463e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(-6.174e-02, 4.938e-02, -9.352e-02, 6.763e-02, 2.166e-02, 7.593e-02, -1.155e-01, 2.261e-01, -6.874e-03, -4.328e-03, 7.553e-03, 1.138e-01, 9.775e-02, -1.303e-01, -4.029e-02, 2.268e-01), r6);\n\tr7 = MulAdd(s0_2_0, M4(-1.305e-01, 3.288e-01, 8.172e-04, 2.860e-02, 2.682e-01, 4.655e-01, -3.720e-01, -2.874e-02, 1.421e-01, 1.431e-01, -6.291e-02, 2.219e-02, -1.263e-01, -1.042e-01, -2.433e-01, -2.690e-01), r7);\n\tr0 = MulAdd(s0_2_1, M4(3.799e-02, -6.301e-03, -2.013e-01, 1.315e-01, 5.804e-02, -1.394e-02, 5.007e-02, -1.403e-02, -4.407e-02, 1.779e-04, 1.702e-02, 3.745e-03, -1.092e-01, -3.033e-02, 4.759e-03, -1.241e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.542e-02, -5.340e-02, -1.937e-01, 2.019e-01, 4.455e-02, -1.808e-01, -2.731e-01, 1.987e-01, 5.413e-03, -9.052e-02, -1.879e-01, 1.217e-01, -2.032e-02, 8.565e-02, 1.178e-01, -2.917e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.103e-01, 1.145e-01, -9.508e-03, 2.672e-01, -2.446e-02, 1.075e-01, 6.036e-02, -1.903e-01, -1.128e-03, 1.545e-01, -1.889e-02, -5.707e-02, 2.028e-02, -3.700e-02, -6.181e-02, 1.520e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(-4.036e-01, 3.097e-01, -1.543e-01, 1.878e-01, 1.479e-01, -3.303e-01, -1.409e-01, 7.987e-03, -3.064e-02, -2.188e-01, -1.343e-01, 3.095e-02, -5.924e-02, -2.788e-01, -1.519e-01, -4.069e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(3.488e-01, 3.153e-01, -1.403e-01, 1.001e-01, 1.957e-01, 1.962e-01, 1.061e-01, -1.193e-02, 1.252e-01, 8.750e-02, 8.592e-03, 8.357e-03, -7.652e-01, 1.812e-01, -3.367e-02, 6.718e-03), r4);\n\tr5 = MulAdd(s0_2_1, M4(-4.349e-01, 2.522e-01, -1.120e-01, 6.739e-02, -8.494e-01, -2.259e-01, 3.937e-02, -3.374e-02, -1.403e-01, -2.554e-01, -3.484e-02, 1.008e-01, 4.014e-01, -2.503e-01, 2.084e-02, 3.932e-01), r5);\n\tr6 = MulAdd(s0_2_1, M4(6.336e-02, 6.934e-02, -9.106e-02, -2.166e-01, 1.984e-02, 8.876e-02, 6.918e-03, -2.308e-01, 8.185e-02, -4.920e-02, -6.521e-03, -9.465e-02, 4.935e-02, -7.654e-02, -1.125e-01, 1.419e-01), r6);\n\tr7 = MulAdd(s0_2_1, M4(-9.973e-04, -1.870e-01, 7.013e-02, 1.675e-01, -1.821e-01, 2.085e-02, 2.834e-02, 1.943e-02, -1.444e-01, -8.296e-03, 2.487e-02, -3.083e-02, 3.203e-01, -1.391e-01, -3.224e-02, -7.737e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(3.542e-02, 1.687e-02, 1.292e-01, 6.413e-02, 1.298e-01, 1.017e-03, 1.339e-01, 5.963e-02, 3.142e-02, -2.577e-03, 2.301e-02, -4.375e-02, -4.282e-02, 2.280e-03, -7.844e-02, -4.484e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.992e-02, 2.648e-01, 3.993e-01, -7.300e-02, 3.206e-02, 3.316e-02, 1.225e-01, -1.415e-01, 9.511e-03, -9.605e-03, 1.351e-01, -6.824e-02, -2.317e-02, -2.776e-01, -3.705e-01, -4.018e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(4.950e-03, -1.346e-01, 3.190e-02, -4.298e-02, -1.261e-02, -5.938e-02, 5.879e-02, 3.885e-02, -7.984e-03, -8.212e-02, 1.666e-02, -7.298e-02, -2.410e-02, 1.694e-01, 2.149e-02, -9.332e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(-6.854e-02, 3.052e-01, 8.379e-02, -6.103e-02, -5.345e-02, 1.663e-01, -7.141e-03, 5.712e-02, -7.567e-02, 1.018e-01, 3.652e-02, 3.706e-02, 2.705e-01, 1.276e-02, 3.209e-01, 4.141e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(1.012e-01, 1.093e-01, -2.487e-02, -4.069e-02, -1.766e-01, 7.928e-02, 1.069e-03, 2.767e-02, -1.627e-01, -4.401e-02, -2.264e-03, -1.672e-02, 2.263e-01, 1.331e-01, -1.122e-01, -1.564e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(1.209e-02, 1.235e-01, 5.082e-02, 9.983e-02, 6.771e-02, 1.997e-01, 3.455e-02, -4.429e-02, -1.160e-01, 6.951e-02, 4.528e-02, 1.722e-02, -2.532e-01, 1.616e-01, -1.213e-01, -1.497e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(4.021e-02, 6.323e-02, 1.116e-01, 6.331e-03, -2.045e-02, 1.442e-01, 2.931e-02, 6.668e-03, 5.982e-03, 3.450e-02, 3.349e-04, 2.248e-02, -1.059e-02, -3.702e-02, -8.138e-02, -8.237e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(5.793e-02, -1.074e-01, 7.888e-03, -1.568e-01, 7.627e-02, 6.145e-02, -1.177e-02, 1.401e-01, 3.666e-02, 4.338e-02, -1.253e-02, 1.626e-02, -9.050e-02, -6.652e-02, -1.740e-02, -1.050e-01), r7);\n\tr0 = MulAdd(s1_0_0, M4(4.089e-02, 1.766e-02, -2.448e-01, 2.671e-02, 4.553e-02, -1.227e-01, 5.044e-02, 6.026e-02, -1.812e-02, -2.321e-02, 1.625e-01, 1.714e-01, 1.974e-02, -1.468e-02, -1.279e-01, -6.275e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-6.916e-03, -7.393e-02, -6.116e-02, 1.494e-02, -1.672e-01, 3.293e-01, 1.799e-01, 3.570e-02, 4.309e-02, 1.591e-01, 5.022e-02, -2.168e-01, -2.618e-02, -2.409e-02, 9.601e-02, 1.002e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(4.222e-02, 1.736e-02, 1.935e-03, -1.367e-02, 8.324e-02, 9.978e-02, -1.269e-02, -3.362e-01, -5.831e-02, -7.691e-02, 5.667e-03, 1.268e-01, -2.061e-02, -4.352e-02, -4.877e-03, -3.453e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-1.128e-01, -2.198e-01, 1.002e-01, -2.134e-01, -4.721e-02, -4.117e-02, -3.153e-01, -2.398e-02, -3.171e-02, -4.441e-01, -5.577e-02, -8.746e-02, 3.160e-02, -8.800e-02, 1.825e-02, 5.353e-03), r3);\n\tr4 = MulAdd(s1_0_0, M4(7.768e-02, -4.628e-02, -1.254e-01, -3.055e-02, -2.970e-02, 2.895e-01, -2.159e-01, 6.584e-02, 2.684e-01, -1.381e-01, 1.547e-01, -2.300e-03, 9.831e-02, 5.892e-03, -5.417e-03, 1.451e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-3.655e-04, 3.833e-03, 2.155e-01, -6.271e-02, 1.360e-01, 1.546e-01, -1.002e-01, 3.925e-02, 1.216e-01, 1.748e-01, -2.178e-01, 3.604e-02, -9.638e-03, 2.417e-02, -5.764e-03, -7.499e-03), r5);\n\tr6 = MulAdd(s1_0_0, M4(-9.498e-03, 6.238e-02, 9.088e-03, 1.938e-02, -8.519e-02, 3.927e-02, -1.375e-02, -5.577e-02, 7.034e-03, -4.214e-02, 1.591e-02, 1.115e-01, 1.078e-02, 6.980e-03, 4.675e-02, -1.535e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(7.009e-02, -1.335e-01, 1.042e-01, -1.987e-01, 2.136e-01, 1.851e-01, 6.399e-02, 2.268e-01, -1.372e-01, -1.674e-01, 2.204e-02, -1.126e-01, -8.161e-02, -8.209e-02, 2.007e-02, 5.970e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-5.283e-02, 1.596e-03, -1.241e-01, -1.184e-01, 7.314e-02, 6.202e-01, -6.869e-02, 1.018e-01, -5.270e-02, 2.729e-02, 1.667e-01, -7.585e-02, 4.239e-02, 1.742e-02, 2.350e-01, -4.423e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.055e-03, -1.795e-01, 1.101e-02, -2.888e-02, 2.159e-01, 4.600e-01, 2.416e-01, -7.405e-02, 1.274e-01, 7.770e-02, -1.156e-01, -2.349e-01, 7.076e-04, 2.327e-01, -1.180e-02, -9.970e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.207e-01, -6.196e-01, 4.383e-02, -9.598e-02, -1.978e-01, 1.509e-01, 9.999e-02, 1.143e-01, -4.232e-02, -1.156e-01, 2.221e-02, -2.439e-02, -8.799e-03, 4.342e-02, 3.986e-02, -1.073e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(-2.845e-01, -1.687e-01, -1.653e-01, -1.447e-01, 5.307e-02, 1.465e-01, -9.992e-02, -1.431e-02, -4.061e-02, -3.660e-01, -2.670e-01, -1.388e-01, -2.170e-02, 2.215e-02, -1.034e-01, -6.132e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(1.740e-01, -4.963e-02, -1.687e-02, 1.566e-02, -5.455e-01, -1.320e-01, -5.212e-01, -7.391e-01, 4.102e-02, 2.285e-01, 2.144e-01, -7.875e-02, 1.321e-01, -1.487e-01, -4.283e-02, -1.934e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(3.749e-01, 5.568e-02, 6.151e-02, -2.919e-01, 2.289e-01, -3.154e-01, -2.768e-01, -2.506e-02, -3.439e-01, -1.891e-01, -3.963e-01, -2.456e-01, 6.006e-02, 9.009e-02, 4.333e-02, 1.552e-01), r5);\n\tr6 = MulAdd(s1_0_1, M4(-6.076e-02, -4.160e-02, -1.466e-01, -2.335e-01, 1.342e-01, -1.653e-03, 2.941e-01, -1.054e-02, -4.617e-02, -5.687e-02, -6.253e-02, 1.817e-02, 3.638e-02, 4.405e-02, 5.585e-02, 5.259e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(7.660e-03, -7.423e-02, -4.806e-02, -6.682e-02, -2.690e-01, 4.548e-02, -4.687e-02, -3.213e-01, 1.546e-01, -8.271e-02, -1.111e-01, 4.660e-02, 6.683e-02, 3.536e-02, -6.233e-02, 7.250e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(1.464e-02, -5.837e-02, -1.037e-03, 2.722e-02, 9.123e-02, -8.263e-02, 1.290e-01, 2.470e-01, -3.724e-02, -4.198e-02, 3.127e-02, 9.943e-02, 1.336e-02, -7.368e-04, 3.842e-02, -8.664e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(2.584e-02, -3.748e-02, 1.180e-01, 1.198e-01, -1.184e-02, 1.788e-03, -1.081e-01, -4.501e-01, 6.597e-02, -1.619e-01, -1.081e-01, -2.777e-01, -2.674e-02, 9.062e-02, 4.052e-02, -9.630e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(2.960e-02, 8.770e-02, 5.530e-02, -4.477e-02, -8.764e-02, -1.746e-01, -2.811e-02, 1.084e-01, 3.209e-02, 3.257e-02, 7.440e-02, -2.361e-01, -1.442e-03, -8.530e-02, -5.133e-02, 1.772e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-1.322e-01, -1.808e-01, -9.688e-02, 2.736e-02, -2.008e-01, -2.020e-01, 1.536e-01, -1.220e-01, 3.614e-02, -9.562e-03, -2.382e-01, -8.572e-02, 6.703e-02, 3.465e-02, 3.464e-02, 2.143e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-1.918e-02, -4.801e-02, -1.161e-01, 5.111e-02, -1.504e-02, 1.179e-01, 8.439e-03, -3.940e-02, -6.741e-01, 2.229e-02, 4.755e-02, 3.455e-02, 1.441e-01, -2.915e-01, 7.065e-03, 1.193e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(-1.585e-02, 2.791e-02, 8.784e-02, -1.717e-01, 7.349e-02, -3.771e-02, -2.708e-02, 1.707e-01, -5.179e-01, 9.288e-02, 1.792e-02, -1.910e-01, 1.870e-01, -2.399e-02, -6.662e-02, 9.000e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-4.946e-02, 5.049e-02, -7.055e-02, -7.244e-03, -8.839e-02, 7.547e-02, -1.983e-02, -9.936e-02, -2.627e-02, -2.935e-04, 9.009e-02, 1.182e-01, 1.090e-02, -1.554e-02, 4.521e-02, -9.723e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(8.930e-02, -6.390e-02, -2.429e-02, -1.521e-01, -2.247e-02, -2.009e-02, 1.411e-01, -1.216e-02, -1.538e-01, 1.272e-01, 1.731e-02, 2.037e-01, -9.347e-02, 1.493e-01, -2.613e-02, -1.558e-01), r7);\n\tr0 = MulAdd(s1_1_0, M4(-1.825e-02, -4.945e-02, 1.973e-01, -3.197e-02, 6.593e-02, 4.893e-02, 2.103e-01, -2.865e-02, 6.697e-02, 4.313e-02, -8.171e-02, -1.979e-01, 3.196e-04, 6.727e-03, 9.021e-02, -1.419e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.130e-01, -1.187e-01, 6.304e-02, -1.303e-01, -9.009e-02, 6.928e-02, -2.764e-01, 2.102e-02, -1.495e-02, 8.346e-02, -1.272e-02, -1.690e-01, 6.109e-03, 6.809e-02, -5.253e-02, 4.482e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(2.806e-02, -4.006e-02, -1.711e-02, -2.745e-01, 1.297e-01, 1.119e-01, -4.433e-02, 7.999e-02, 7.739e-03, 9.650e-02, 1.387e-02, -2.486e-02, -5.823e-02, 3.499e-02, 4.384e-02, 6.491e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(5.746e-02, 2.407e-01, 7.047e-02, 2.372e-01, -3.436e-02, -5.104e-01, 4.841e-02, -9.202e-02, -4.481e-02, -2.917e-02, -2.196e-01, -1.784e-01, 2.922e-02, -1.055e-01, -5.656e-03, -9.339e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(7.783e-02, -5.281e-02, 1.042e-01, 6.080e-02, 2.042e-01, 4.067e-02, 1.797e-02, -3.329e-02, 4.694e-02, 2.431e-01, 1.084e-01, -4.269e-02, 3.785e-02, -8.660e-02, -6.774e-02, 1.077e-03), r4);\n\tr5 = MulAdd(s1_1_0, M4(6.274e-02, 5.864e-02, -1.100e+00, 3.392e-01, 2.443e-01, -3.998e-01, 2.203e-01, 2.976e-02, -3.091e-01, 2.369e-02, 2.142e-01, 2.728e-01, 9.139e-02, 1.592e-01, -1.621e-01, 1.280e-01), r5);\n\tr6 = MulAdd(s1_1_0, M4(2.040e-02, -3.420e-02, 8.269e-02, -2.102e-01, 9.944e-02, 4.237e-02, -4.127e-02, 1.792e-01, 5.560e-02, 1.589e-02, 5.281e-02, -7.004e-02, 2.915e-02, 3.333e-02, -3.925e-03, 1.024e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(-4.944e-01, 1.983e-02, -6.868e-03, 1.553e-01, -1.578e-01, -4.330e-01, -2.158e-01, -3.196e-02, 2.514e-03, 4.335e-01, 3.617e-02, -5.004e-02, 1.401e-01, 9.100e-02, -3.429e-02, -4.111e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-7.002e-02, -3.618e-03, 3.054e-01, -2.476e-01, 5.499e-02, -2.800e-01, -3.927e-01, 1.596e-01, 5.725e-02, -1.237e-02, -1.967e-01, -4.122e-01, -4.650e-02, -3.337e-02, -1.902e-01, 1.815e+00), r0);\n\tr1 = MulAdd(s1_1_1, M4(7.456e-02, -7.506e-02, -4.677e-01, 1.884e-01, 7.392e-02, -1.455e-01, 3.856e-01, 3.390e-01, 2.706e-01, 1.511e-01, 2.303e-01, 3.609e-01, 2.022e-02, -1.525e-01, 1.815e-01, 9.191e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.668e-01, 2.719e-01, 2.010e-02, -2.097e-01, 8.289e-02, -4.863e-01, -1.626e-02, 3.388e-01, -5.011e-01, -2.632e-01, 3.528e-02, -7.957e-02, 1.750e-02, -2.039e-02, -3.611e-02, 8.893e-03), r2);\n\tr3 = MulAdd(s1_1_1, M4(3.585e-01, 2.213e-01, 7.346e-02, -1.374e-01, 1.531e-01, 1.059e-02, -2.133e-01, -1.653e-01, 6.294e-03, 4.431e-02, 3.782e-02, 3.323e-01, -1.687e-01, 4.101e-02, 1.626e-01, 1.934e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(-3.421e-01, -3.818e-01, 4.537e-01, -4.518e-02, 1.802e-01, -1.743e-01, 4.398e-01, 4.053e-01, -1.125e-01, 2.292e-01, 1.692e-01, 1.343e-01, -9.096e-02, -2.226e-01, 5.381e-02, -4.238e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-6.363e-01, 2.536e-01, -1.375e-01, -1.437e-01, -1.465e-01, -4.987e+00, 6.284e-02, 2.638e-02, 1.858e-01, -8.258e-02, -2.457e-01, 7.860e-02, 7.172e-03, -1.317e-01, 1.211e-01, -3.252e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(2.669e-02, -8.610e-02, -6.817e-02, -7.302e-02, -1.242e-01, 6.561e-03, -2.950e-02, 1.947e-01, -2.661e-01, 1.269e-01, -1.563e-02, -1.475e-01, -9.472e-02, -8.091e-02, 3.261e-02, -1.632e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(3.183e-01, 7.555e-02, 7.114e-02, -6.466e-02, -1.073e+00, 1.634e-01, -3.044e-01, -2.745e-01, 3.633e-01, 2.713e-01, 1.315e-01, 3.584e-01, -2.988e-01, -1.795e-01, 9.167e-02, 9.154e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-2.090e-02, 3.007e-02, 2.010e-01, 2.369e-02, 7.782e-03, -9.395e-02, 2.325e-02, 1.174e-01, -1.610e-01, 6.677e-02, -4.142e-02, 4.225e-02, 5.303e-02, 5.551e-02, -1.416e-02, 1.104e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.508e-02, -3.889e-03, 2.453e-01, -7.271e-01, -9.740e-02, 4.600e-01, -5.571e-01, -8.072e-03, -3.531e-02, 2.378e-01, 1.178e+00, -4.165e-01, 2.534e-03, -1.562e+00, -2.880e-01, -1.881e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.341e-02, -1.788e-01, -5.146e-02, -1.061e-01, 4.183e-02, 4.195e-01, -1.278e-01, 1.266e-01, 6.497e-02, -8.230e-02, -4.437e-02, 3.121e-01, 8.602e-02, 7.624e-03, 1.067e-02, 1.401e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(1.119e-01, 1.678e-01, 1.058e-01, -3.219e-02, -6.951e-02, -1.135e-02, 1.042e-01, -2.766e-01, -4.878e-02, 3.010e-01, 4.887e-02, 2.813e-01, 1.222e-01, -1.177e-01, 2.086e-02, 8.537e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(1.484e-03, -2.640e-02, 2.582e-01, -4.978e-02, 1.437e-01, 2.021e-01, -1.675e-01, 1.717e-02, -1.224e+00, 2.167e-01, 1.150e-01, -3.253e-02, -8.657e-02, 1.330e-01, 4.871e-02, 5.882e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(-5.369e-02, -4.364e-02, -1.845e-01, 2.437e-01, -2.433e-01, -2.557e-02, 1.356e-01, -7.319e-02, 3.240e-01, -6.621e-01, 2.111e-01, -2.435e-01, -2.756e-01, -1.956e-01, 2.892e-01, -8.120e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(-1.155e-01, -6.063e-02, 5.831e-02, -1.533e-01, -8.543e-02, -5.643e-02, -1.362e-02, -2.246e-02, 1.266e-01, -1.311e-01, 1.811e-03, -1.890e-01, 6.142e-02, 8.651e-02, -1.081e-02, 1.461e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(-5.260e-01, -3.969e-02, 1.210e-01, 1.067e-01, -2.614e-01, 1.664e-01, -1.401e-01, -1.345e-01, -3.495e-01, -1.899e-01, 2.214e-01, 1.654e-01, 5.991e-01, 1.051e-02, -2.004e-01, 8.830e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-1.602e-02, 2.522e-03, -1.535e-02, -7.597e-02, 8.648e-02, -8.966e-03, 2.063e-01, 2.493e-01, -6.449e-02, 6.762e-04, 1.274e-01, -8.588e-02, -1.291e-02, 1.898e-03, 5.858e-03, -4.185e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-3.348e-02, -8.599e-02, -4.242e-02, -2.343e-02, 2.561e-02, 2.595e-01, 2.364e-01, 1.647e-01, 2.455e-02, 4.354e-02, -3.670e-02, 1.462e-01, -7.393e-03, 8.931e-02, -3.563e-02, 3.192e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.550e-03, -1.562e-02, 1.455e-02, 9.826e-02, 1.702e-02, 1.023e-01, 6.556e-02, 1.503e-01, 3.415e-02, -1.325e-02, 1.337e-02, -3.513e-01, -1.920e-02, -1.211e-02, -5.932e-03, -5.173e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-2.309e-03, -2.276e-01, -5.588e-02, -9.057e-02, -4.209e-02, 2.183e-01, 6.078e-02, 9.324e-02, 3.856e-02, 3.639e-01, 1.749e-01, 1.123e-01, 6.665e-02, 3.291e-02, 5.926e-02, -2.105e-03), r3);\n\tr4 = MulAdd(s1_2_0, M4(3.175e-02, -2.209e-01, 3.764e-03, -1.051e-02, 9.086e-02, 1.890e-01, -2.152e-02, -1.469e-02, 3.437e-02, 3.346e-01, -2.641e-03, 3.612e-02, -1.240e-01, 1.736e-02, 1.916e-02, 6.189e-04), r4);\n\tr5 = MulAdd(s1_2_0, M4(1.298e-01, -6.788e-01, 3.653e-02, -8.441e-02, 1.552e-01, 2.641e-01, 1.758e-01, -4.332e-02, 1.229e-01, 3.142e-02, -4.936e-02, -1.675e-01, 2.382e-02, -1.763e-01, -6.964e-02, -1.001e-01), r5);\n\tr6 = MulAdd(s1_2_0, M4(1.531e-02, -5.609e-03, -3.602e-02, 7.827e-02, 1.731e-02, 8.175e-02, 5.046e-02, 2.124e-01, -2.558e-02, -6.814e-02, -5.332e-03, -5.569e-02, -3.317e-02, -1.813e-02, -7.912e-03, 5.932e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(7.888e-02, -1.136e-01, 3.871e-02, 6.085e-02, 3.476e-02, -2.436e-01, 9.524e-02, -6.165e-02, -3.560e-02, -2.766e-02, -3.369e-01, 9.425e-02, -3.138e-02, 2.767e-02, 3.874e-02, -3.642e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-1.306e-02, 3.299e-02, -6.329e-03, -1.547e-01, 9.285e-04, 7.441e-02, -9.649e-03, -6.550e-03, 2.768e-02, 6.712e-03, -1.722e-02, 3.047e-01, 4.473e-02, 8.822e-03, -4.419e-02, 5.263e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(3.084e-02, -1.082e-03, 7.680e-03, -2.437e-02, -1.888e-02, 1.523e-02, -1.859e-01, 5.450e-02, -3.357e-02, 1.224e-01, -2.407e-01, 2.550e-01, -4.597e-03, 2.562e-01, 3.140e-02, -3.468e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(2.114e-04, 6.304e-03, 2.348e-02, 3.700e-02, -5.256e-02, -5.413e-02, -2.369e-03, -7.581e-02, 2.643e-02, 3.256e-01, -3.763e-02, 2.936e-05, 1.760e-02, 8.698e-03, 4.517e-02, -5.478e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-2.130e-02, 1.237e-01, -2.371e-01, -1.965e-01, 1.783e-01, -1.220e-03, 4.965e-02, -3.211e-02, -5.540e-02, -9.738e-02, 3.040e-01, -4.951e-02, -8.748e-02, -7.572e-02, -2.935e-01, -5.564e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(1.846e-01, -7.268e-02, 2.247e-02, -1.609e-03, -1.413e-01, -1.259e-01, 4.629e-02, -7.643e-02, -2.063e-01, -8.534e-01, -6.614e-02, -1.332e-02, 7.715e-02, 3.066e-01, 2.732e-02, -2.192e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(4.158e-01, -1.480e-01, 1.806e-01, -2.629e-01, 1.346e-01, 1.293e-01, 5.283e-02, -1.588e-01, 3.609e-02, 9.696e-02, -3.248e-01, -3.195e-02, 4.359e-02, -5.759e-02, -6.229e-02, 1.966e-01), r5);\n\tr6 = MulAdd(s1_2_1, M4(3.143e-03, -6.162e-04, -1.881e-02, 4.043e-02, 1.276e-02, 1.369e-02, 4.412e-02, -1.026e-01, -4.204e-02, 3.999e-02, 5.121e-02, 3.740e-01, -3.209e-02, 8.785e-02, -2.580e-02, -7.299e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-9.218e-02, 3.464e-02, 4.608e-02, 1.134e-01, 5.557e-01, 7.110e-02, -2.013e-01, -1.593e-01, -5.133e-02, -4.370e-02, 4.271e-01, -1.448e-01, 1.458e-02, 5.465e-02, 1.506e-01, -1.634e-01), r7);\n\tr0 = MulAdd(s1_2_2, M4(-6.568e-02, 1.824e-02, 1.423e-02, 1.271e-02, -3.776e-02, 1.197e-02, -5.818e-04, 5.886e-02, -6.156e-02, -8.825e-03, 2.687e-01, -4.920e-02, -2.092e-02, -1.952e-02, -1.495e-02, -1.321e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(8.383e-03, 3.274e-03, -3.941e-01, 1.926e-01, -3.671e-02, -6.786e-02, -5.180e-02, -4.607e-02, 2.556e-02, -4.170e-02, -8.831e-01, -2.071e-02, 2.735e-02, -6.841e-02, 3.322e-02, 1.125e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(1.758e-02, 1.572e-02, -1.175e-04, 3.506e-02, -6.060e-03, 4.518e-03, -4.946e-02, -1.989e-01, 5.485e-02, -4.169e-02, 1.049e-02, 1.073e-02, -7.347e-03, 6.599e-04, 1.293e-02, 5.277e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-1.587e-01, -1.830e-01, -2.275e-01, 7.331e-02, 2.991e-01, 9.876e-02, 1.532e-01, -4.558e-02, -9.280e-02, -1.887e-01, -6.669e-02, -1.470e-01, 6.742e-03, 2.690e-01, 1.393e-01, -3.025e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-1.508e-01, -3.302e-01, -8.111e-05, 7.645e-03, -1.900e-01, 4.214e-02, 4.704e-02, -3.988e-03, 5.004e-02, -2.818e-01, 1.320e-01, 9.911e-03, -5.315e-02, 7.351e-01, -2.937e-02, -3.956e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(6.463e-02, -1.837e-01, 1.697e-01, -6.953e-02, 6.660e-02, -2.677e-02, -1.004e-01, -9.799e-02, 5.846e-02, -1.551e-01, 3.199e-03, 5.505e-02, -1.068e-01, 2.010e-01, -1.175e-02, -9.917e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(3.898e-02, -6.041e-02, -9.416e-02, 5.507e-02, 4.422e-02, -2.864e-02, -8.756e-02, -4.777e-02, 9.511e-02, -4.052e-02, -1.063e-01, -2.294e-02, -8.727e-04, -2.341e-02, -2.092e-02, -2.815e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(3.049e-02, 1.429e-01, -4.734e-02, 7.404e-02, -4.354e-02, -2.793e-02, -1.231e-01, -1.617e-01, 1.509e-02, -9.311e-02, -1.748e-01, -2.170e-01, -2.271e-01, -1.734e-01, 2.849e-02, 8.850e-02), r7);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-4.405e-02, 1.185e-03, 1.382e-01, 2.396e-02, 1.728e-02, 4.927e-03, 2.668e-01, -5.918e-01, 2.842e-02, 3.021e-02, 9.728e-02, 5.201e-03, 2.514e-02, -3.882e-02, -2.287e-01, 3.398e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-2.485e-02, -2.596e-01, 2.860e-01, 2.297e-01, -1.041e-02, 2.739e-01, -2.120e-02, -3.096e-01, -6.818e-03, 3.608e-02, -1.791e-01, -1.050e-01, 1.330e-01, 3.793e-01, 1.422e-01, 1.477e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.088e-01, 9.815e-02, -7.306e-02, -4.168e-02, -3.126e-02, 8.852e-02, -1.821e-04, 4.130e-02, 6.941e-02, -2.194e-01, 5.395e-02, -4.532e-02, 5.700e-02, -1.036e-01, 8.756e-02, -1.029e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(-2.899e-02, -9.774e-02, -3.076e-02, 3.698e-02, -5.313e-02, 1.798e-01, 2.397e-01, -3.927e-01, -2.166e-02, -4.297e-01, -2.137e-01, 1.258e-01, 2.520e-01, 5.897e-01, -2.383e-01, 1.131e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(-1.159e-01, -1.248e-02, 1.587e-02, 7.262e-03, 5.462e-02, -1.988e-02, 2.274e-02, 8.114e-02, 1.913e-01, 4.830e-02, 3.220e-02, -1.463e-03, 1.409e-01, 1.453e-01, 4.859e-02, -1.122e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-3.763e-02, -4.309e-02, 2.031e-01, -2.653e-01, -2.749e-01, -3.385e-02, -1.569e-02, 1.020e-02, -9.772e-02, -2.736e-01, -2.804e-01, 1.189e-02, -6.689e-02, 2.570e-01, -9.786e-03, 9.599e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(9.526e-03, -8.757e-02, 1.944e-02, -1.041e-01, -2.704e-02, 2.138e-02, 2.952e-02, 4.521e-01, 2.261e-02, 1.578e-02, -5.285e-02, 4.384e-02, 1.623e-01, 3.614e-02, 7.618e-02, 2.055e-01), r6);\n\tr7 = MulAdd(s0_0_0, M4(-8.046e-02, 3.780e-02, 1.505e-01, 9.059e-03, -1.026e-03, -1.676e-01, 2.124e-01, 8.728e-02, -1.997e-01, -8.127e-02, -3.989e-03, -2.783e-01, -8.859e-02, 2.828e-01, -8.535e-03, 1.118e-01), r7);\n\tr0 = MulAdd(s0_0_1, M4(8.091e-02, -9.337e-03, -1.199e-01, 1.306e-01, -1.939e-01, -1.450e-01, 1.530e-01, 5.675e-02, 1.107e-01, 9.783e-02, 3.049e-01, 1.906e-01, -7.782e-02, -4.625e-02, 2.255e-01, -1.018e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.052e-02, -2.247e+00, -2.696e-01, 5.059e-01, 1.209e-01, 4.078e-01, 1.525e-01, -2.979e-02, -3.917e-02, -2.755e-01, -3.266e-01, -3.500e-02, 1.531e-01, -8.080e-01, 9.854e-02, -1.029e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(-8.761e-02, 1.866e-02, 6.146e-02, 4.707e-02, -2.765e-02, 3.623e-01, 1.030e-01, 1.538e-01, -2.172e-02, -1.474e-01, 3.355e-02, -1.119e-02, 1.851e-02, -1.407e-01, -9.196e-02, 1.012e+00), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.276e-02, -2.147e-01, 1.302e-01, -3.317e-02, 3.463e-01, 2.492e-01, -3.182e-04, 5.870e-02, 1.503e-01, 2.760e-01, -1.624e-01, 4.408e-03, -1.351e-01, -4.941e-01, 4.944e-01, 6.393e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(4.674e-02, 8.502e-02, -4.686e-02, -1.888e-02, -1.242e+00, 3.760e-01, 3.815e-01, 1.077e-01, 1.393e-01, -3.195e-01, 2.780e-01, -2.189e-02, -1.989e-01, -1.779e-01, 7.770e-02, 1.864e-01), r4);\n\tr5 = MulAdd(s0_0_1, M4(2.234e-01, 2.949e-01, 3.202e-02, -4.541e-01, -1.814e-01, 3.402e-01, 5.704e-02, 1.465e-01, -4.409e-01, -9.382e-01, -9.911e-02, -1.187e-01, 1.896e-01, -3.190e-01, 4.219e-01, -1.414e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(-2.335e-02, 1.433e-01, -8.770e-02, 5.407e-01, 1.683e-02, -1.938e-01, -1.012e-01, 3.889e-01, -1.520e-02, 1.115e-01, 7.030e-02, 2.829e-01, -1.870e-01, -1.542e-01, 2.730e-02, -5.027e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(-4.890e-02, 1.398e-01, -1.671e-01, -7.233e-02, -4.222e-02, -2.028e-01, -9.027e-02, -8.067e-01, -3.122e-02, 2.219e-01, -1.338e-01, 4.106e-03, -2.597e-01, -1.917e-01, 5.007e-01, -5.047e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(-1.790e-02, 6.461e-03, 6.870e-02, -2.666e-02, -5.747e-02, 2.424e-02, -2.175e-01, 2.180e-01, 1.149e-01, 5.182e-03, 3.064e-01, -7.043e-02, -1.887e-02, -2.217e-01, -1.847e-01, 2.926e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(3.925e-02, -2.745e-02, -6.729e-02, -5.511e-01, -4.593e-02, 4.485e-01, 2.628e-02, 7.195e-02, -7.394e-02, -8.004e-02, 2.641e-02, 2.174e-01, -1.294e-01, -3.213e-01, 7.563e-02, 7.000e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.498e-02, -9.927e-02, -1.948e-03, 1.472e-02, 7.132e-02, -6.155e-02, -1.500e-02, -8.535e-02, -7.626e-02, 7.960e-01, -1.008e-02, -1.082e-01, -2.449e-02, 4.357e-02, -1.148e-01, -1.056e+00), r2);\n\tr3 = MulAdd(s0_0_2, M4(8.061e-02, 1.933e-01, -6.247e-02, 2.886e-02, -2.232e-01, -5.144e-01, -4.866e-03, -8.339e-02, 1.233e-01, 1.909e-01, 6.694e-02, -8.544e-02, 8.215e-02, 7.665e-01, -3.401e-02, -7.177e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(1.628e-01, -6.142e-02, -1.647e-02, -2.889e-02, 1.064e-01, 2.491e-02, 3.862e-02, 1.456e-02, -4.602e-01, 1.688e-01, 7.075e-02, 2.693e-02, -1.735e+00, -5.136e-01, -2.043e+00, -1.321e+00), r4);\n\tr5 = MulAdd(s0_0_2, M4(1.560e-01, -1.437e-01, -1.257e-01, 1.749e-01, -2.241e-01, 1.117e-01, -1.303e-01, 1.564e-02, 1.462e-02, -6.070e-01, 6.078e-02, -1.443e-01, -2.249e-01, -2.454e-02, -5.684e-01, 1.167e+00), r5);\n\tr6 = MulAdd(s0_0_2, M4(-6.958e-02, -4.323e-02, 7.822e-02, -2.135e-01, 1.081e-02, -7.041e-02, 3.767e-02, 8.303e-02, -1.802e-02, 7.048e-02, 6.767e-02, -1.504e-01, 1.406e-01, 3.425e-02, -2.903e-01, 1.133e+00), r6);\n\tr7 = MulAdd(s0_0_2, M4(-7.439e-02, -9.058e-02, -8.183e-02, 1.159e-01, 8.627e-02, 2.716e-01, 1.391e-01, 3.301e-01, 6.012e-02, 1.824e-01, 1.191e-01, -1.850e-01, -1.361e-04, -1.518e-01, 2.842e-01, -2.418e+00), r7);\n\tr0 = MulAdd(s0_1_0, M4(5.285e-02, -9.465e-03, -5.483e-03, 1.180e-02, -5.413e-02, 8.178e-02, -1.266e+00, 2.383e-01, -1.961e-02, 3.814e-02, 9.184e-02, -3.595e-01, -7.459e-02, -1.109e-03, 1.062e-01, 2.892e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-6.391e-03, 1.510e-01, -1.329e-02, -1.177e-01, 9.614e-02, -5.787e-02, -1.022e-01, -2.500e-02, 3.768e-02, 7.355e-02, 3.617e-01, -2.469e-01, 9.775e-02, -1.624e-03, -1.206e-01, 1.457e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-2.235e-02, -8.631e-02, 2.850e-02, -2.036e-01, -1.126e-01, -8.795e-02, 1.519e-01, -6.831e-02, 4.105e-02, -1.148e-01, -4.905e-02, 1.473e-01, -1.814e-02, -8.813e-02, -1.517e-02, -2.003e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(3.759e-02, 1.588e-02, -1.346e-01, 1.111e-01, 7.669e-02, 4.930e-01, -2.678e-01, -2.833e-01, 1.456e-02, -1.357e-01, 4.719e-01, 1.772e-01, 1.611e-01, 5.650e-01, -1.512e-01, 1.214e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(1.910e-02, -1.475e-02, 5.133e-02, 2.015e-02, 1.966e-01, -3.203e-02, 1.437e-01, 9.894e-02, -1.333e-01, 9.498e-03, 8.031e-02, -1.023e-01, 1.086e-01, 4.638e-01, 2.913e-03, -7.048e-04), r4);\n\tr5 = MulAdd(s0_1_0, M4(-2.099e-01, -6.486e-02, -6.036e-02, 1.660e-01, -1.902e-03, 4.022e-01, 4.278e-01, 3.641e-01, -9.498e-05, -3.614e-01, 3.021e-04, -7.032e-02, 8.775e-02, 4.265e-02, -1.620e-01, 9.323e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(5.673e-02, 6.084e-02, -3.517e-02, -1.203e-01, 7.948e-02, -4.582e-02, 1.710e-01, -2.941e-01, 1.186e-01, -3.478e-02, -3.433e-02, 2.970e-02, 1.784e-01, -9.057e-02, 7.112e-02, 1.088e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(1.398e-01, 2.691e-02, 3.553e-02, -6.467e-02, -1.400e-01, -3.917e-01, 2.259e-02, 2.290e-01, 2.800e-01, 8.866e-02, -7.788e-02, -6.585e-02, -7.256e-02, -3.340e-01, -5.630e-02, -2.184e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(3.950e-02, 9.721e-03, -2.275e-03, -9.708e-02, 1.116e-01, 1.821e+00, -4.509e-01, -5.188e-01, -1.623e-01, -5.057e-01, 3.677e-03, 5.274e-02, -8.569e-02, -3.088e-02, 8.274e-02, -7.197e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.783e-02, -2.487e-01, 1.347e-01, -2.741e-02, -1.061e-01, 3.135e-01, 1.378e-01, 2.873e-01, 1.511e-01, -3.661e-02, 9.293e-02, 6.637e-02, 7.976e-02, -1.519e-01, 4.067e-01, -2.521e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-2.114e-02, -5.494e-02, 4.318e-03, 2.238e-02, 1.921e-01, 1.515e+00, 2.627e-01, -4.305e-01, -1.028e-01, -2.063e-01, -1.534e-01, 2.519e-01, -5.672e-02, -2.555e-01, -6.918e-03, 3.119e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-3.960e-02, 6.605e-02, 1.224e-01, -2.278e-02, 6.397e-01, -5.030e-01, 2.736e-01, -1.583e-01, -4.306e-01, 4.079e-01, 2.608e-01, 2.943e-02, -8.648e-02, -7.681e-01, 2.049e-01, 8.733e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-1.507e-01, -1.570e-04, 4.731e-02, 2.352e-02, -3.059e-01, 3.096e-01, 1.773e-01, -1.096e+00, 4.394e-02, -1.377e-01, -1.945e-02, 4.405e-01, -3.291e-01, 1.826e-02, -1.392e-01, 4.582e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-3.429e-01, 4.755e-01, -8.860e-02, 9.161e-02, 7.275e-02, 6.173e-02, -8.975e-03, -9.123e-02, -1.100e-01, 3.974e-01, 8.391e-02, 3.802e-01, -1.897e-01, 5.016e-01, 2.367e-01, -1.331e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-4.124e-03, 3.877e-02, 6.101e-02, -2.340e-01, 3.718e-02, 6.248e-02, 4.088e-01, -4.123e-01, -1.218e-02, -1.822e-01, -1.952e-01, 4.971e-01, 1.442e-01, -1.295e-01, -9.093e-02, -1.286e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(-1.340e-01, -1.149e-02, 1.179e-01, 3.666e-02, 7.254e-01, 5.293e-01, 4.469e-03, -5.674e-01, 1.541e-01, -4.255e-02, 2.572e-01, 2.467e-01, -4.162e-02, 6.130e-01, 3.263e-01, -5.324e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(-5.230e-03, -1.082e-02, -9.933e-02, 1.409e-02, -1.509e-01, -3.138e-02, -1.997e-01, 3.883e-02, -6.608e-02, 1.027e-01, 1.763e-01, -1.101e-01, -1.788e-02, 6.910e-02, -3.094e-01, -1.239e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.817e-03, 1.513e-01, 1.054e-02, 1.594e-02, 5.112e-02, 6.334e-02, -3.562e-02, 1.587e-01, -3.524e-03, 2.217e-01, 2.606e-02, -5.378e-02, -1.641e-01, 4.590e-01, -4.130e-01, -1.807e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(2.152e-02, 1.064e-01, -1.260e-03, 2.289e-01, -1.092e-01, 7.060e-01, 1.207e-01, 1.002e-01, 5.496e-02, 1.773e-02, -1.413e-01, 1.245e-01, -5.730e-02, 3.458e-01, 4.941e-02, -3.800e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-3.787e-02, 1.514e-01, -4.300e-02, -3.106e-02, -4.530e-01, 4.393e-01, 9.578e-02, 4.772e-02, 1.771e-01, -1.966e-01, -4.113e-01, 2.247e-01, 2.306e-01, 7.401e-01, -3.695e-01, 2.292e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(-9.998e-02, 1.504e-01, -9.838e-02, 2.176e-02, 4.673e-01, -1.495e-01, -5.955e-02, 3.773e-02, -2.765e-02, -5.722e-02, -2.525e-01, -3.350e-01, 2.276e-01, -8.245e-01, -6.848e-02, -9.012e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(9.518e-02, -2.717e-01, 5.415e-02, 1.980e-01, 1.325e-01, 5.007e-02, -4.387e-01, -7.890e-02, -2.765e-01, 3.024e-01, 3.088e-01, 1.170e-01, -2.147e-01, 1.565e+00, -4.053e-01, 8.388e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(2.278e-02, -3.234e-02, 1.278e-02, 9.112e-02, -2.624e-02, -1.180e-01, -1.325e-01, 7.354e-02, -7.291e-02, -1.370e-01, -2.967e-02, -4.039e-02, 2.081e-02, -5.257e-02, -9.999e-02, -2.438e-01), r6);\n\tr7 = MulAdd(s0_1_2, M4(1.518e-01, -9.488e-02, 1.375e-02, -3.333e-02, -2.741e-02, 2.417e-01, -5.634e-02, 1.583e-01, -2.040e-01, -3.906e-01, -3.297e-02, -1.120e-01, 3.622e+00, 2.262e-02, 8.600e-02, 5.220e-01), r7);\n\tr0 = MulAdd(s0_2_0, M4(2.333e-03, 8.393e-03, 3.134e-02, -1.272e-02, 8.784e-02, -5.818e-02, 3.365e-01, 2.514e-01, 5.549e-02, 3.586e-02, -1.452e-01, 3.394e-01, 2.054e-02, -4.222e-03, -9.566e-02, 5.209e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(2.522e-02, 2.210e-01, -6.484e-02, 4.291e-02, 3.245e-02, 1.716e-01, -9.786e-02, -1.154e-01, 1.189e-02, 1.262e-01, 1.859e-01, 1.719e-01, -1.032e-02, 1.384e-02, -7.680e-02, -3.837e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-3.690e-03, 5.619e-02, 2.541e-02, -8.919e-03, -2.183e-02, -2.956e-01, 4.163e-02, -8.514e-01, 1.057e-01, 2.848e-01, 1.197e-03, 2.239e-01, 4.540e-02, 1.599e-01, 6.650e-03, -2.661e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(-8.709e-03, -6.140e-02, -3.813e-02, 1.786e-02, 3.590e-01, 1.861e-01, 4.971e-02, -4.972e-01, -1.864e-01, 2.669e-01, 8.473e-02, -2.516e-02, 6.285e-03, -3.523e-02, -5.703e-03, -8.015e-03), r3);\n\tr4 = MulAdd(s0_2_0, M4(3.912e-02, 5.218e-02, 8.874e-03, -1.668e-02, -2.734e-02, 1.882e-01, -9.937e-02, 1.188e-01, -2.386e-02, -2.438e-01, 2.503e-01, 2.031e-02, 1.410e-01, 5.575e-02, -1.091e-01, 5.825e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(8.810e-02, -5.675e-02, 2.303e-02, -1.652e-02, 1.183e-01, 1.245e-01, 1.590e-03, 5.107e-02, 2.404e-01, 7.084e-02, 1.725e-01, -6.779e-02, 9.027e-04, -2.466e-01, -9.373e-02, 7.642e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(7.498e-02, -5.961e-03, 3.211e-02, -1.399e-02, -2.204e-02, 1.726e-01, -4.229e-02, -1.781e-01, -3.236e-02, -5.885e-02, 6.306e-02, -6.759e-03, 3.130e-03, 1.121e-02, 2.896e-02, -1.050e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-2.802e-02, 3.396e-02, 2.771e-02, -3.342e-02, -4.593e-02, -7.590e-01, -1.948e-01, 2.660e-01, 2.294e-01, 5.078e-01, 1.198e-01, -4.159e-02, 6.840e-02, 1.866e-01, -7.922e-02, 8.894e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(1.160e-02, -3.910e-03, -1.703e-02, 5.967e-03, 4.924e-02, -5.148e-02, 1.937e-01, 9.195e-02, 1.641e-01, 5.802e-02, -1.208e-01, 2.481e-02, -1.087e-01, 1.882e-02, -1.850e-01, 4.120e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.172e-02, 1.546e-01, 1.074e-02, -6.796e-02, 2.249e-01, 9.535e-02, 7.183e-01, -1.463e-01, 6.254e-02, 2.232e-01, -2.201e-01, 1.276e-01, 1.781e-03, -3.836e-01, -8.134e-02, -5.392e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-5.998e-03, -7.143e-02, 1.084e-02, 4.225e-03, 2.047e-01, 1.617e-01, -1.423e-01, -2.261e-01, -7.338e-02, -3.204e-01, 6.130e-02, -3.979e-01, 3.764e-03, 2.807e-05, -3.985e-02, 3.410e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(2.064e-02, 6.373e-02, -9.815e-03, -4.089e-02, 2.858e-01, -1.645e-01, 2.586e-01, -1.398e-01, -9.985e-02, 4.656e-02, -2.855e-01, -9.137e-02, -5.765e-02, -2.517e-01, -1.372e-01, 3.559e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(8.582e-04, 8.527e-03, -2.476e-02, 4.230e-03, -8.361e-01, 3.100e-01, -4.852e-02, -1.005e-01, 3.136e-01, 1.512e-01, 4.761e-02, 4.874e-02, -4.589e-01, -1.172e-01, 1.928e-02, -2.694e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(7.310e-02, -1.957e-01, 3.061e-02, 6.252e-03, 1.255e-01, -4.686e-01, 4.390e-01, 4.776e-01, 5.905e-01, 2.216e-01, -2.845e-01, -1.812e-01, -4.334e-02, 1.177e-01, -2.027e-02, 4.123e-03), r5);\n\tr6 = MulAdd(s0_2_1, M4(-2.850e-02, 2.718e-02, -3.611e-03, 2.663e-02, 1.582e-01, 1.877e-01, 1.436e-02, 4.040e-01, -7.483e-02, 2.778e-01, -1.179e-01, -3.973e-01, 1.330e-02, -1.780e-01, 1.120e-02, -2.175e-01), r6);\n\tr7 = MulAdd(s0_2_1, M4(1.907e-01, -3.985e-02, -7.656e-02, 4.326e-02, -3.146e-01, -2.123e-01, -2.690e-01, 2.280e-01, 4.271e-02, 2.611e-01, 7.441e-03, 2.589e-01, -1.037e-01, -1.414e-01, -2.176e-02, 1.587e-01), r7);\n\tr0 = MulAdd(s0_2_2, M4(-2.252e-02, 6.813e-03, -2.080e-02, -1.840e-02, -6.072e-03, -2.155e-02, -1.624e-01, -1.107e-01, -6.041e-03, 3.214e-02, -3.433e-01, -8.754e-02, -3.824e-02, -3.060e-02, -1.966e-01, -3.895e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-1.663e-03, 5.796e-02, -4.283e-02, -3.815e-02, 4.995e-02, 1.159e-01, -2.662e-01, -4.307e-03, -4.852e-02, 9.866e-02, 6.659e-02, 2.399e-02, -1.721e-02, 6.481e-02, -2.099e-02, -3.552e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.920e-03, 1.471e-02, 1.414e-02, -1.025e-01, 4.605e-02, 2.910e-01, -1.599e-02, 4.853e-01, 4.588e-02, -1.880e-01, -7.542e-02, -3.959e-01, -9.619e-03, -1.081e-01, 5.129e-02, 1.094e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(-3.365e-02, -7.019e-02, 5.560e-02, -6.032e-03, -3.437e-01, -1.148e-02, -4.897e-01, 1.491e-01, 3.738e-01, -1.233e-01, -3.063e-02, 3.821e-02, -2.912e-01, -1.690e-01, -1.918e-01, -4.315e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(9.611e-02, 4.899e-02, 5.822e-02, -1.019e-02, 1.517e-01, -4.478e-02, 1.036e-01, 1.768e-01, 8.562e-02, -1.036e-01, -3.183e-01, 6.411e-02, 2.625e-01, -2.852e-01, -2.036e-01, 4.405e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-2.514e-02, 6.374e-02, -2.099e-02, -4.854e-02, 4.803e-01, -1.418e-02, 2.308e-01, 4.861e-01, 1.192e-01, 2.148e-01, -9.033e-02, 2.489e-02, 1.585e-02, 1.746e-01, -6.636e-02, 8.443e-03), r5);\n\tr6 = MulAdd(s0_2_2, M4(-3.887e-02, -2.760e-02, 3.158e-04, 2.315e-02, 5.132e-02, 1.888e-02, -4.125e-02, 3.265e-02, 1.205e-03, -2.878e-04, -3.798e-02, -9.143e-02, -7.022e-02, -2.417e-02, -4.413e-02, -1.565e-01), r6);\n\tr7 = MulAdd(s0_2_2, M4(-5.480e-02, -1.432e-02, -2.614e-02, 1.344e-02, 6.747e-02, 2.540e-01, 1.960e-01, 2.298e-01, 2.316e-02, -5.238e-01, -7.344e-02, -3.873e-02, -2.724e-01, 4.484e-01, -8.526e-02, 2.801e-01), r7);\n\tr0 = MulAdd(s1_0_0, M4(-1.076e-01, -4.151e-03, -8.433e-01, 7.643e-02, -2.141e-01, -6.548e-02, 3.351e-01, 2.476e-01, -6.302e-02, -1.149e-01, -1.735e+00, -1.862e-01, 2.902e-02, 1.496e-02, 1.580e-01, -7.034e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-3.392e-02, 9.787e-02, -4.740e-01, 2.388e-01, -1.837e-02, 1.511e-01, 5.164e-02, 1.453e-01, -5.905e-02, -1.056e-01, 7.440e-01, -1.069e-01, 5.413e-02, 2.034e-01, 2.567e-01, -1.422e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(-2.943e-02, -9.178e-04, -2.897e-02, -3.767e-02, -1.171e-02, 3.304e-03, -2.220e-01, 1.126e-01, 8.576e-02, 8.363e-02, 7.427e-03, 1.203e-01, -5.790e-02, -8.418e-02, 4.437e-02, 8.443e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-5.189e-02, 1.645e-01, 2.571e-01, -2.959e-01, 2.105e-01, -2.265e-01, 7.386e-02, -6.617e-02, -2.350e-01, -1.366e+00, -5.018e-01, 3.838e-01, -4.699e-02, -1.957e-01, -6.377e-03, -1.369e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(-2.082e-01, 4.927e-02, -5.450e-01, -1.703e-02, -2.591e-01, -2.044e-01, -2.748e-01, -4.057e-02, -3.015e-01, 1.385e-01, 4.024e-01, 2.458e-01, 5.341e-02, 6.069e-02, 1.537e-01, 1.688e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-5.849e-01, 5.366e-02, -8.531e-02, 2.090e-01, 1.574e-01, -1.071e-01, 3.210e-01, -3.332e-01, 4.194e-01, 2.008e-01, 3.428e-01, -2.443e-01, 1.215e-01, -9.337e-02, -6.205e-02, -7.561e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(1.268e-01, -1.450e-01, -1.378e-02, -4.685e-01, 3.423e-01, 1.083e-01, -3.367e-03, 3.655e-01, -4.607e-02, -3.477e-02, -1.390e-01, -3.061e-01, -7.356e-03, 6.164e-02, -3.558e-03, 3.248e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-3.616e+00, -1.011e-01, 6.382e-02, 9.753e-02, -3.243e-01, -2.573e-01, 8.812e-02, -1.708e-01, -3.460e-02, -1.501e-01, -2.008e-01, 2.907e-01, 1.045e-01, -1.715e-01, 2.020e-02, -5.878e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(5.621e-03, 8.371e-03, 1.287e-01, -4.680e-02, -4.026e-01, -8.294e-02, -1.043e-01, -5.407e-02, -4.146e-02, -2.403e-01, -1.426e-01, 1.530e-01, -5.808e-02, 1.243e-02, 6.431e-02, 2.412e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(-4.163e-02, 2.152e-02, -5.120e-01, 9.692e-02, 1.203e-02, 1.428e-01, -2.619e-02, -1.338e-01, 1.383e-01, -2.035e-01, 3.654e-01, -5.025e-01, -7.387e-03, 2.239e-03, 1.997e-01, -4.249e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-2.907e-02, -5.664e-01, -5.110e-02, 9.381e-03, -2.733e-02, -4.907e-01, 6.246e-02, -1.883e-02, -8.565e-02, -6.352e-01, 1.745e-01, 2.824e-01, 5.626e-02, -1.273e-01, -2.503e-02, 9.668e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(2.587e-03, -2.404e+00, 3.758e-02, -6.327e-02, -4.416e-02, 3.911e-02, -5.077e-02, 1.007e-01, 1.427e-01, 3.839e-01, 8.800e-02, -1.840e-01, 4.314e-02, 3.282e-01, -5.369e-02, -2.221e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(3.213e-01, 1.630e-01, -4.652e-03, 7.743e-02, 1.642e-01, -1.917e-01, 3.331e-01, 2.348e-01, -8.988e-02, -6.332e-02, 4.655e-02, 5.250e-01, -6.594e-02, 1.496e-01, 8.369e-02, -7.926e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-3.188e-02, -1.456e-01, 6.998e-02, 5.986e-02, -1.578e-01, 1.100e-01, -2.868e-01, 1.266e-01, 2.530e-01, 2.501e-01, -1.668e-01, 1.157e-01, -4.546e-02, -1.587e-01, -1.244e-01, 1.557e-01), r5);\n\tr6 = MulAdd(s1_0_1, M4(-6.042e-02, 1.878e-02, -2.409e-02, 4.216e-02, -2.755e-01, 5.691e-02, -7.003e-02, -1.786e-01, 3.194e-02, -2.121e-02, -1.067e-02, 2.335e-01, -4.435e-02, -4.363e-02, 5.254e-03, -8.764e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(5.273e-02, -1.741e-02, 7.130e-02, -1.952e-01, -1.683e-02, 1.125e-01, 1.405e-01, -1.072e-03, -6.734e-01, -2.468e-02, 1.756e-02, -6.649e-01, 7.824e-03, 1.018e-01, -2.787e-02, -3.685e-03), r7);\n\tr0 = MulAdd(s1_0_2, M4(-1.800e-02, -2.786e-03, -1.871e-01, -2.521e-02, 5.065e-03, 4.553e-02, 1.834e-02, 1.449e-01, 4.982e-02, 3.138e-02, 2.874e-02, 1.118e-01, 2.662e-03, 3.497e-02, 1.940e-04, 1.217e-01), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.005e-03, -3.402e-02, -2.742e-01, 5.919e-01, -2.582e-02, -1.099e-01, -1.441e-01, 1.640e-01, 1.942e-02, 2.919e-01, -5.359e-02, -3.194e-01, -2.443e-02, 2.030e-01, -1.243e-01, 9.224e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.333e-02, -3.960e-01, 2.803e-02, 1.286e-02, 8.556e-03, 3.198e-01, -4.613e-02, 1.776e-03, 1.732e-02, 1.000e-01, 2.202e-03, -1.204e-01, 7.789e-03, 9.656e-02, -2.644e-02, -2.644e-01), r2);\n\tr3 = MulAdd(s1_0_2, M4(-1.900e-04, -1.451e-01, 1.072e-01, -1.817e-02, -1.158e-01, -7.754e-03, 1.589e-01, -1.989e-01, 2.468e-01, 2.623e-01, 7.945e-02, -2.307e-02, 9.453e-02, 2.897e-02, 2.203e-02, -1.786e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-2.160e-02, -7.339e-02, -1.313e-01, -2.590e-02, -1.944e-01, 1.865e-01, -8.802e-02, -1.118e-01, 1.936e-01, 7.390e-02, 1.191e-01, 2.788e-02, 1.061e-01, 8.825e-02, 4.406e-02, -8.233e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(-1.595e-01, 5.412e-02, -2.067e-02, -6.181e-02, 3.392e-01, -1.454e-01, 6.878e-02, -9.506e-02, 1.800e-01, 1.684e-02, 5.572e-02, 8.318e-02, 2.080e-02, -2.364e-02, -6.375e-02, -9.637e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(1.628e-02, -1.788e-02, -3.950e-02, -9.678e-03, -2.160e-02, 3.725e-02, -1.567e-01, -5.457e-02, 3.143e-03, 3.612e-02, 1.401e-01, -9.162e-02, -3.632e-02, 2.632e-02, -3.127e-02, 2.153e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(1.836e-02, -1.767e-02, -2.900e-02, -5.930e-02, 1.648e-01, 9.447e-02, -1.354e-01, 9.033e-02, 8.123e-02, 1.435e-02, 3.592e-03, 6.259e-02, -8.994e-02, 7.565e-02, 6.571e-03, 4.382e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-3.795e-02, 1.587e-02, -1.074e-01, 3.046e-02, -4.115e-01, 8.019e-02, -1.697e-01, 1.725e-01, -6.046e-02, 7.926e-02, -5.516e-02, 1.628e-01, -6.175e-03, 2.992e-02, -6.595e-02, -2.596e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(-6.683e-02, 1.024e-01, -3.573e-01, -7.847e-02, -1.416e-01, 2.684e-01, 7.726e-02, 1.425e-01, -4.196e-02, -1.899e-01, -1.749e-02, -1.468e-01, -1.973e-02, 1.295e-02, 7.332e-02, -1.070e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(-3.542e-02, 8.620e-02, 2.103e-03, 2.649e-01, 3.585e-01, -2.011e-01, 2.980e-01, -1.616e-01, 2.822e-02, -4.333e-02, 6.153e-02, 5.144e-01, 9.180e-04, 7.924e-02, -2.867e-02, 1.017e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(7.631e-03, -2.578e-01, 2.708e-01, 7.492e-02, -3.422e-02, 4.259e-02, 2.518e-01, 4.664e-01, -3.327e-01, 7.355e-02, -2.316e-01, 7.428e-01, -6.102e-02, -2.649e-01, -3.909e-01, 7.239e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(7.071e-02, 4.909e-02, -2.148e-01, -4.601e-02, 1.584e-01, -5.059e-02, 5.314e-02, 6.273e-02, -2.066e-01, 1.195e-01, 1.265e-01, -9.787e-02, 5.552e-02, -5.084e-02, 1.159e-01, 1.831e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-5.124e-01, -3.173e-01, -1.299e-01, -4.430e-02, -3.358e-01, 7.994e-02, 2.173e-01, 1.156e-01, 4.346e-01, 2.826e-01, 3.034e-01, -5.256e-01, -2.889e-01, -2.076e-02, 1.318e-01, 7.601e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(5.307e-02, -1.348e-02, -1.221e-01, 4.318e-01, -6.722e-01, 4.732e-01, -2.798e-01, -1.828e-01, 5.578e-02, -8.683e-02, 8.128e-02, -3.591e-01, -1.264e-01, -2.968e-02, 1.291e-02, -3.443e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.771e-01, -1.082e-01, -3.933e-01, -8.100e-02, 1.373e-01, -2.147e-01, -1.458e-01, -1.508e-01, 5.336e-02, 1.416e-01, 5.077e-01, 2.572e-01, -2.024e-01, -1.044e-01, -5.992e-02, -1.114e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(-8.603e-02, -5.257e-03, 1.754e-01, -1.114e-02, 1.375e+00, 1.659e-02, -4.992e-02, -2.041e-01, -1.069e-01, -2.845e-03, -1.538e-01, 1.852e-01, 1.062e-01, 1.531e-02, -1.791e-01, -7.844e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-5.328e-02, 3.476e-02, 8.708e-01, -5.538e-02, 2.090e-01, -2.459e-01, -1.691e-01, 2.026e-03, 7.131e-03, -1.297e-01, -5.542e-01, 5.468e-01, 6.891e-02, -5.623e-01, -2.094e-01, -2.938e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-8.862e-02, -1.099e-02, -1.260e-02, -1.087e-01, -3.380e-01, 2.468e-01, 2.636e-01, 2.051e-01, -5.096e-02, -2.300e-01, 1.931e-01, -5.485e-01, 1.476e-01, -2.543e-02, 1.609e-01, -6.062e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-6.431e-01, -2.506e-01, 1.783e-01, -2.426e-02, -4.185e-01, 1.677e-01, 2.410e-01, -3.492e-01, 2.237e-01, 7.511e-02, 6.484e-01, 9.327e-02, -2.756e-01, -4.398e-02, 2.779e-01, -2.879e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.169e-01, -8.925e-02, -1.041e-01, -9.234e-02, -1.274e-01, -4.245e-01, -1.155e-01, -2.065e-01, 7.644e-01, -5.902e-02, -3.570e-01, -1.538e-01, -5.523e-01, 1.458e-01, -5.744e-03, 1.506e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-1.788e+00, 3.857e-01, 1.794e-01, 2.337e-01, 1.036e-01, 1.579e-01, -1.181e-01, 9.364e-03, 5.399e-01, -5.650e-02, -2.549e-01, 1.528e-01, 1.317e-02, -5.585e-01, -4.616e-02, -7.343e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(-8.696e-03, -9.791e-02, -8.945e-02, -4.111e-01, -2.838e-01, -6.674e-01, -1.082e-01, 5.183e-01, -1.117e-01, -6.443e-02, -1.540e-01, -9.530e-02, 1.044e-01, 2.242e-01, -1.806e-01, 4.765e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-8.912e-01, 8.322e-02, 1.525e-01, 5.837e-02, 2.152e-01, -1.675e-01, 2.210e-01, 1.890e-01, 5.431e-01, 2.260e-01, -2.692e-01, -3.962e-01, 6.307e-01, 9.738e-02, -1.475e-01, -5.447e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(1.410e-03, -6.193e-03, 2.008e-03, -1.929e-02, -1.185e-01, 2.248e-02, 2.667e-02, -1.876e-01, -4.595e-03, 1.090e-02, 1.987e-01, 5.832e-02, 1.911e-02, 1.615e-02, -8.007e-02, 1.770e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-1.758e-02, 7.623e-02, 1.225e-01, -2.490e-01, -4.436e-02, 1.580e-01, -2.271e-01, -1.509e-01, 1.293e-02, 1.273e-01, -4.361e-01, 7.424e-02, -2.244e-02, 1.293e-02, -1.720e-01, 5.883e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(2.984e-02, -1.578e-01, 1.043e-02, 1.081e-01, 3.259e-02, -1.682e-01, 4.817e-02, -2.372e-01, -2.977e-03, 9.742e-02, 9.356e-03, 8.040e-03, -7.435e-02, 9.454e-02, -4.792e-02, -7.237e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(7.501e-02, -1.385e-01, 3.557e-02, 2.412e-02, 2.541e-01, -1.586e-01, -1.558e-01, -7.070e-02, 1.299e-01, 3.706e-01, 2.915e-01, -1.337e-01, 3.756e-01, -5.778e-02, -6.471e-02, -1.573e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(2.361e-02, -5.590e-02, 2.682e-02, -2.470e-02, 1.380e-01, 2.473e-01, -8.988e-02, 9.898e-02, -5.907e-02, -6.982e-03, 8.130e-02, -9.586e-03, 1.633e-02, 2.853e-01, -2.321e-01, -2.187e-03), r4);\n\tr5 = MulAdd(s1_1_2, M4(-6.396e-02, 1.421e-01, -9.313e-03, 4.815e-02, -1.356e-01, -3.790e-02, -1.928e-01, -4.605e-02, 1.304e-02, -1.880e-02, 6.493e-02, -9.453e-02, -1.905e-01, -2.468e-01, -1.284e-01, -3.587e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(-3.055e-02, 5.753e-03, -2.598e-02, -1.186e-02, 2.460e-01, 2.540e-01, 1.289e-01, -2.902e-01, 6.931e-02, 7.675e-03, 6.072e-02, 4.128e-02, -5.623e-02, 2.050e-02, 7.010e-02, -4.384e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(-5.530e-02, -7.985e-02, -1.940e-02, -1.050e-01, 5.619e-02, -5.096e-02, -3.312e-02, 6.843e-02, 4.621e-02, -7.306e-03, 9.961e-03, -3.061e-02, -6.666e-03, 1.221e-02, -7.829e-02, -1.730e-01), r7);\n\tr0 = MulAdd(s1_2_0, M4(8.014e-03, -1.760e-02, -6.425e-02, -3.935e-02, -3.758e-01, 8.535e-03, -3.212e-02, 1.387e-02, 1.642e-02, 1.279e-02, 1.649e-01, -1.204e-01, 6.032e-02, 1.281e-03, 4.485e-02, 9.125e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(3.118e-03, -5.183e-02, 1.051e-01, 5.053e-02, 4.715e-02, -7.053e-02, -3.272e-01, 1.561e-02, 1.704e-02, -2.862e-02, -4.811e-03, 2.614e-02, -6.003e-02, 8.712e-02, -5.126e-02, -8.342e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-3.845e-02, -4.772e-02, -1.801e-02, -1.439e-01, -7.087e-02, -1.064e-01, -1.260e-01, 7.492e-02, 2.396e-02, 1.238e-03, 5.289e-02, -4.510e-02, -1.248e-02, 6.860e-02, -3.767e-02, -1.646e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-5.631e-02, -1.264e-01, 5.309e-02, -7.206e-02, 1.307e-01, 1.236e-01, -1.875e-01, -1.947e-01, 5.335e-02, -1.763e-01, 3.997e-02, 1.189e-01, 3.124e-03, 2.291e-01, -1.140e-01, 7.655e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-1.018e-01, 3.568e-02, -5.608e-02, 5.894e-03, 3.100e-01, -2.825e-02, 7.162e-02, -4.320e-04, 1.750e-01, -3.684e-01, 1.067e-01, 1.298e-02, -1.581e-01, 3.474e-02, 5.867e-02, 9.786e-03), r4);\n\tr5 = MulAdd(s1_2_0, M4(-2.927e-02, 5.603e-02, -9.909e-02, 4.498e-02, 9.199e-02, 2.424e-01, -7.331e-02, 1.251e-01, -3.384e-02, -6.835e-01, 1.851e-01, -1.017e-02, 7.406e-02, 1.956e-01, -9.955e-02, 1.431e-01), r5);\n\tr6 = MulAdd(s1_2_0, M4(-1.833e-02, -4.166e-02, 6.991e-02, 3.531e-02, 1.260e-01, 8.582e-02, 6.827e-02, -8.711e-02, -1.761e-02, 3.332e-02, 9.862e-03, 1.107e-01, 9.272e-02, 7.746e-02, -3.185e-02, -4.179e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(-1.587e-02, -2.303e-01, 1.814e-01, -1.273e-01, 1.947e-01, 2.585e-01, -2.934e-01, -1.232e-01, 1.379e-01, 4.174e-01, -1.869e-01, 4.467e-02, -2.020e-01, -1.709e-01, 9.967e-02, -1.058e-01), r7);\n\tr0 = MulAdd(s1_2_1, M4(5.261e-03, -9.354e-03, 5.010e-02, 7.792e-03, -4.273e-01, 1.640e-02, -3.979e-02, -1.464e-01, 5.297e-02, 1.337e-02, -6.111e-02, 1.489e-02, -3.827e-02, -4.752e-02, -1.617e-01, 1.953e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-2.522e-02, -4.376e-02, -1.594e-01, -4.321e-02, -1.548e-02, -4.082e-02, 6.061e-01, -1.027e-01, 1.923e-02, -1.918e-02, 1.039e-01, 6.747e-02, 7.089e-03, 1.908e-01, 2.066e-01, -1.749e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(9.235e-03, -7.236e-02, -5.408e-02, 1.519e-01, 1.235e-02, 2.569e-01, -1.090e-01, -6.146e-02, 5.387e-03, 2.488e-02, 6.917e-02, -2.246e-01, -3.625e-02, -5.256e-02, -1.125e-02, -2.093e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-2.725e-02, -7.793e-01, 4.797e-02, -4.305e-02, 2.001e-01, -5.420e-02, -1.688e-01, 1.187e-01, 6.700e-02, 7.335e-02, -1.350e-02, -1.665e-02, -1.062e-01, 8.656e-01, -7.533e-02, 2.177e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(-1.246e-01, -2.112e-01, -1.773e-02, 3.456e-02, -2.240e-01, -1.374e-01, -4.363e-02, -2.570e-02, 2.108e-01, -1.005e-01, 2.842e-02, 2.650e-03, -4.481e-02, -4.802e-01, -9.082e-02, -4.382e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(1.256e-01, -2.246e-01, 4.919e-02, -1.982e-02, -2.965e-01, -3.484e-01, -1.377e-01, 3.128e-02, -1.305e-02, -2.279e-01, -2.214e-03, 8.389e-02, 3.264e-01, -2.910e-01, -6.265e-02, 1.957e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-1.636e-02, -2.236e-03, 1.175e-02, 2.856e-02, 8.607e-01, 1.240e-01, 6.091e-01, -3.265e-01, -1.010e-02, 8.915e-02, -6.327e-02, 3.707e-02, 1.857e-02, -5.787e-02, -4.585e-02, -1.135e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(1.819e-02, -2.208e-02, 6.398e-02, -1.993e-02, -2.949e-01, 2.738e-01, 1.407e-01, 1.137e-01, 2.008e-01, 3.395e-02, -1.179e-01, 5.426e-02, -1.440e-01, -4.042e-02, -2.080e-02, 2.677e-01), r7);\n\tr0 = MulAdd(s1_2_2, M4(1.408e-02, -6.824e-03, -3.109e-02, -6.683e-02, 7.096e-02, -7.270e-02, -1.703e-01, 6.400e-02, -2.637e-02, 9.176e-03, 1.434e-01, 7.496e-02, 1.747e-02, -1.111e-02, 1.779e-02, 1.118e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(-9.970e-03, -1.552e-02, -2.329e-02, 1.570e-02, -1.985e-02, -1.757e-01, 1.340e-01, 1.004e-02, 2.753e-02, 8.479e-02, 4.639e-02, 9.153e-03, -2.324e-02, 2.303e-01, -1.917e-01, 8.321e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(2.005e-02, -4.499e-02, -2.349e-02, 2.847e-02, 3.865e-02, 2.906e-02, -1.053e-01, 1.366e-02, 2.505e-03, 4.045e-02, 2.135e-02, 4.798e-02, -2.294e-02, 1.117e-01, -8.048e-03, 1.156e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(4.621e-02, -1.636e-01, 1.545e-02, 3.771e-02, -1.357e-01, 2.297e-01, -9.123e-02, 1.607e-01, -9.894e-02, 3.654e-01, -4.923e-02, -6.129e-02, 2.695e-02, 8.846e-02, 6.134e-02, -4.655e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-1.017e-01, -6.682e-02, -3.508e-03, 1.812e-02, 1.795e-01, 2.020e-02, 1.008e-01, -2.101e-02, 9.232e-02, 5.388e-02, 6.920e-02, -2.170e-02, 1.592e-01, 2.885e-02, 2.678e-02, -2.400e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(7.863e-02, 1.362e-01, 2.413e-02, 1.310e-03, 3.381e-01, 1.385e-01, 1.589e-01, 1.814e-01, -1.455e-01, -1.131e-01, 3.530e-02, -9.136e-02, -1.591e-01, 9.941e-02, -9.455e-02, 1.350e-01), r5);\n\tr6 = MulAdd(s1_2_2, M4(-3.247e-02, 1.091e-02, -2.002e-02, -2.563e-02, -4.020e-01, -6.700e-02, -1.578e-01, 1.754e-01, 7.059e-02, -2.032e-02, 3.639e-02, 4.430e-02, -2.660e-02, 1.749e-02, 3.696e-02, 2.917e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-1.746e-02, -7.692e-02, -2.938e-03, 1.051e-01, -1.699e-01, -6.210e-02, 3.461e-03, 3.712e-03, -3.405e-02, 7.100e-02, 8.655e-03, -1.468e-01, -1.425e-01, -2.601e-03, 5.201e-02, -1.268e-01), r7);\n\tr0 = max(r0, 0.0);\n\tT8[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT9[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT10[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT11[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT12[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT13[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT14[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT15[gxy] = r7;\n}\n\n//!PASS 3\n//!DESC conv2 (32x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T8, T9, T10, T11, T12, T13, T14, T15\n//!OUT T0, T1, T2, T3, T4, T5, T6, T7\n\n#define L0(x, y) V4(O(T8, x, y))\n#define L1(x, y) V4(O(T9, x, y))\n#define L2(x, y) V4(O(T10, x, y))\n#define L3(x, y) V4(O(T11, x, y))\n#define L4(x, y) V4(O(T12, x, y))\n#define L5(x, y) V4(O(T13, x, y))\n#define L6(x, y) V4(O(T14, x, y))\n#define L7(x, y) V4(O(T15, x, y))\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(4.015e-02, 1.755e-01, -1.539e-02, -2.017e-02, -8.916e-02, 2.950e-02, -5.245e-03, -7.114e-02, 7.817e-02, 1.257e-03, 6.766e-02, 2.501e-01, 1.943e-02, -1.814e-03, -1.492e-02, 3.842e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.268e-01, -1.726e-02, -7.124e-03, 1.083e-01, -4.336e-02, 1.152e-02, -6.832e-03, 3.231e-02, -3.739e-02, 1.963e-02, 1.227e-02, 5.905e-02, -1.452e-02, -5.060e-03, 1.450e-02, 1.603e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.055e-01, 2.711e-01, -1.839e-01, 1.034e-02, 1.355e-02, -4.714e-02, -3.457e-02, 1.846e-03, -2.846e-03, -8.191e-02, -6.443e-02, 4.405e-03, 2.118e-02, -7.013e-03, -5.120e-03, -3.997e-03), r2);\n\tr3 = MulAdd(s0_0_0, M4(-4.898e-02, 9.922e-03, 4.829e-02, -1.126e-02, -7.498e-02, 7.030e-02, 4.767e-02, -6.388e-04, 5.862e-02, 7.889e-02, -1.013e-01, -1.298e-02, -2.004e-02, -2.681e-02, -7.428e-03, -1.014e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-3.296e-02, -1.094e-01, 8.611e-02, 2.034e-02, -4.689e-03, 6.597e-02, -3.368e-02, -8.750e-03, 6.346e-03, -1.054e-01, 3.943e-02, -1.537e-03, 1.040e-02, 7.661e-02, -4.456e-03, 8.363e-03), r4);\n\tr5 = MulAdd(s0_0_0, M4(6.170e-02, 2.018e-02, 1.724e-03, 3.508e-02, 5.958e-02, -1.706e-02, -3.530e-03, -1.512e-02, -7.634e-03, 9.367e-03, 1.799e-02, -2.005e-02, -8.258e-03, -3.555e-03, 1.423e-02, -2.507e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-8.044e-02, 1.417e-02, -2.679e-01, -1.868e-01, -2.783e-01, 1.818e-02, -1.043e-01, -7.345e-02, -1.543e-01, 4.295e-02, -8.285e-02, 3.447e-02, -1.113e-01, -4.959e-03, 3.685e-02, 1.988e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(-5.530e-02, 3.402e-02, 3.317e-02, -8.485e-02, 1.684e-02, 1.059e-01, 3.272e-02, 5.303e-02, -7.201e-02, -1.323e-01, 1.338e-01, -7.249e-02, -3.225e-02, -6.578e-02, -8.126e-02, 4.803e-03), r7);\n\tr0 = MulAdd(s0_0_1, M4(4.970e-02, 8.535e-01, -1.227e-01, 1.044e-02, 4.852e-03, -4.284e-02, 1.998e-01, 9.833e-02, 4.478e-02, -2.266e-03, -2.943e-01, 1.418e-01, -1.374e-01, 1.030e-02, -2.562e-02, 5.934e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(9.953e-02, 1.251e-02, 2.519e-02, -4.413e-04, -8.115e-03, -2.066e-02, 4.952e-03, -5.352e-03, 1.345e-01, -8.106e-03, -7.720e-03, -6.275e-02, -9.989e-02, 4.393e-02, 1.475e-02, -6.539e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(3.623e-01, -2.550e-01, 2.254e-02, 7.691e-02, -3.132e-03, -5.175e-02, 1.764e-01, 1.235e-02, -4.390e-03, -2.951e-02, -1.381e-02, -9.915e-03, -1.086e-03, 3.840e-02, 2.429e-02, 1.246e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-9.501e-03, -3.119e-02, 1.806e-02, 1.207e-02, -3.259e-02, 1.191e-01, -1.678e-02, -4.965e-02, -8.176e-02, -5.134e-02, -5.276e-02, -3.209e-02, 3.894e-02, -6.906e-02, -2.503e-02, 9.826e-03), r3);\n\tr4 = MulAdd(s0_0_1, M4(-2.395e-03, -1.811e-01, -5.669e-02, -3.791e-01, 2.412e-02, 1.051e-02, 1.058e-01, 1.118e-02, -1.777e-02, -5.964e-01, 1.849e-02, 1.652e-02, 1.237e-02, 2.680e-01, -6.433e-02, -6.128e-03), r4);\n\tr5 = MulAdd(s0_0_1, M4(9.071e-04, 7.181e-03, -9.063e-03, 1.077e-03, 6.531e-02, -5.283e-02, 8.125e-04, 2.407e-02, 3.268e-02, 2.776e-02, -6.211e-03, 4.971e-02, 8.176e-02, -1.146e-02, 4.063e-03, 8.533e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-1.186e-01, -2.342e-02, 1.145e-01, -1.875e-01, -2.297e-01, -6.865e-02, 1.426e-01, -3.953e-02, -2.573e-01, 2.812e-02, 2.411e-01, -2.552e-02, 4.384e-02, -2.105e-02, -3.278e-02, -2.839e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(2.034e-01, -1.022e-01, 3.567e-02, -5.200e-02, 2.879e-02, -5.357e-02, 1.134e-01, 5.328e-02, 2.338e-01, -1.490e-01, 3.717e-02, -7.132e-02, 7.797e-02, 9.492e-02, -9.331e-02, 7.207e-03), r7);\n\tr0 = MulAdd(s0_0_2, M4(-1.475e-01, 1.045e-01, -3.280e-02, 1.192e-01, 1.319e-02, 2.424e-03, -9.554e-02, 1.708e-01, -5.892e-04, -1.318e-02, -1.929e-01, -1.870e-01, 5.305e-02, 7.758e-03, -1.432e-02, -9.736e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(3.780e-02, -9.296e-02, 2.735e-02, -1.688e-01, 5.693e-02, 2.942e-02, -9.749e-03, 3.498e-02, 1.801e-01, 3.190e-02, 1.820e-02, -1.650e-01, 1.203e-01, 1.646e-02, 2.220e-02, 3.554e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(3.050e-01, -8.616e-02, 7.571e-02, 1.591e-02, 2.970e-02, -2.572e-02, 5.520e-02, 2.367e-02, -3.788e-02, -2.661e-02, -1.481e-02, 3.744e-02, 1.032e-03, 1.077e-02, -1.353e-01, 1.525e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-6.700e-03, 8.254e-02, -1.246e-02, -5.114e-02, 6.599e-03, -4.327e-02, 5.850e-02, 1.661e-02, 1.541e-02, -3.284e-02, 2.052e-03, 1.794e-02, -2.924e-02, -5.749e-02, 5.357e-02, 7.901e-03), r3);\n\tr4 = MulAdd(s0_0_2, M4(1.707e-02, 7.600e-02, 2.329e-03, -1.389e-01, 3.889e-02, 1.012e-01, -3.314e-02, -1.851e-02, -5.792e-02, -2.615e-01, -5.123e-02, -1.145e-02, 4.016e-02, -3.401e-01, 8.623e-03, -3.576e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(6.542e-02, 1.836e-03, 3.100e-02, 7.858e-02, -3.414e-02, -3.137e-02, -6.248e-03, 1.701e-01, 9.857e-03, 1.960e-02, 3.403e-02, 1.420e-01, -1.397e-01, -7.039e-03, 2.252e-02, 1.454e-01), r5);\n\tr6 = MulAdd(s0_0_2, M4(-3.487e-02, -3.591e-02, 8.255e-02, 7.378e-02, -2.095e-01, -1.704e-02, -2.099e-01, 6.813e-02, -2.517e-01, 4.266e-02, -1.712e-01, 1.888e-01, 1.499e-01, 4.316e-02, -1.032e-01, 6.148e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-4.411e-02, 1.512e-01, 4.388e-02, 6.307e-02, 7.767e-02, -2.934e-02, -2.786e-02, 1.170e-01, 2.155e-01, -8.982e-03, 1.987e-02, -2.073e-02, 2.312e-02, -1.372e-01, 1.129e-02, -7.156e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-5.470e-02, 2.749e-02, -7.006e-02, -3.796e-02, -1.670e-01, -9.304e-03, -2.287e-01, -8.375e-01, -1.391e-01, 2.032e-02, -7.518e-02, -3.977e-02, 8.195e-03, -1.036e-02, 4.212e-02, 8.052e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.016e-01, -5.309e-02, -5.731e-03, 8.575e-02, 5.818e-02, 3.150e-02, 2.998e-02, -2.178e-01, 1.577e-02, -1.173e-01, -2.395e-02, 1.391e-01, 2.325e-02, -6.522e-02, -2.541e-02, 4.539e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(9.445e-03, 6.777e-01, -5.272e-02, -1.101e-01, 1.678e-02, -6.046e-02, 5.105e-02, -2.241e-02, -2.156e-02, 3.717e-03, 5.720e-04, -3.595e-02, 1.317e-02, -5.520e-03, 3.501e-02, -7.702e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.553e-01, -1.625e-01, 1.635e-01, -8.917e-02, -4.190e-01, -1.665e-01, -1.139e-02, 2.249e-02, -3.175e-02, -1.805e-01, 5.577e-02, -8.902e-02, 4.140e-03, -1.509e-02, 3.353e-03, -5.506e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(1.085e-02, -3.779e-03, -1.361e-03, -6.444e-03, -8.123e-03, 4.134e-02, -1.140e-01, -3.733e-02, 7.445e-02, -2.255e-01, 8.342e-02, 2.560e-02, 1.259e-02, 1.093e-02, 2.708e-02, 1.788e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-1.259e-01, 5.309e-03, -3.819e-03, 5.114e-03, 1.978e-01, -7.832e-02, 2.768e-02, 2.247e-01, -2.786e-02, -3.060e-03, -1.339e-03, 1.480e-02, -2.273e-02, -1.146e-02, -1.289e-03, -2.227e-03), r5);\n\tr6 = MulAdd(s0_1_0, M4(1.953e-02, -5.166e-02, 2.185e-01, -7.500e-02, -2.623e-01, 3.408e-03, -2.148e-01, 3.389e-02, -7.479e-02, 3.385e-02, 8.051e-02, -9.233e-03, 8.368e-02, 1.377e-02, -7.508e-02, -2.360e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(2.741e-01, -2.035e-01, -2.244e-01, 2.952e-02, 3.808e-01, -7.082e-02, -2.724e-01, -2.367e-01, -3.073e-02, 3.783e-02, 8.741e-03, -9.468e-02, -1.245e-01, -8.425e-02, 5.163e-02, 2.060e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-3.523e-01, -5.689e-01, 1.743e-01, -2.197e-01, -1.266e-01, 4.381e-02, 1.677e-01, -3.960e-01, -1.441e-01, 3.382e-02, 1.280e-01, 2.196e-01, -1.155e-01, 1.925e-03, -1.944e-01, -2.990e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.446e-02, 1.860e-01, 6.500e-02, -2.221e-01, 1.440e-01, 1.684e-01, 7.323e-02, 3.479e-01, 7.510e-02, -1.154e-01, -2.192e-02, -2.277e-01, -2.533e-02, 1.381e-01, -5.170e-02, -2.594e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.133e+00, -5.404e-01, 3.563e-02, -5.605e-01, 2.476e-02, -6.688e-02, 8.141e-02, 3.221e-03, -2.427e-02, 3.529e-02, 2.360e-02, -2.444e-02, 4.344e-02, -2.506e-04, 6.032e-02, -3.164e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.723e-01, -8.600e-02, -7.355e-02, 1.495e-02, -3.019e+00, -3.311e-01, 1.721e-01, -2.057e-01, 3.014e-01, 2.216e-02, -1.099e-02, 2.879e-02, -1.635e-01, -1.300e-01, -1.838e-02, -7.444e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(-1.585e-01, 1.358e-01, -1.693e-02, 5.053e-01, 1.501e-01, 7.832e-02, -7.718e-02, 4.002e-02, 6.859e-02, 1.397e-01, 9.836e-03, 6.993e-03, -1.525e-02, -3.369e-01, -3.538e-03, -2.472e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(7.929e-02, -6.496e-02, -1.212e-02, -1.098e-01, -6.581e-01, -1.472e-01, 5.746e-02, -1.181e-01, -9.610e-02, -9.261e-02, -3.198e-03, -1.231e-02, -6.702e-02, -1.332e-02, -4.555e-02, -5.777e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(-2.412e-02, 9.732e-02, -1.014e-01, 3.175e-01, -2.025e-01, -1.327e-01, -8.091e-01, -1.431e-01, -7.284e-02, -5.792e-03, -9.698e-02, 3.781e-01, -1.972e-01, 5.287e-02, -3.342e-02, 1.950e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(-2.567e-01, -1.796e-01, 1.305e-01, -9.424e-02, -7.780e-01, 1.981e-01, -1.192e-01, 8.274e-02, -5.895e-01, -1.193e-01, 1.389e-02, 7.388e-02, 1.836e-01, 2.461e-01, 1.433e-01, -1.119e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(1.753e-01, -1.996e-01, -7.232e-02, -4.685e-02, 1.631e-01, 5.126e-04, 3.058e-01, 1.634e-01, -2.234e-01, -3.066e-02, 2.272e-02, 5.332e-02, -3.231e-01, -1.398e-02, -2.922e-01, 3.497e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.399e-01, 1.321e-02, -6.227e-03, 7.194e-02, -1.624e-01, -5.471e-02, -1.076e-02, -2.323e-01, -1.365e-01, -2.039e-01, -3.648e-02, 1.835e-02, -4.490e-02, 4.264e-01, -1.055e-01, -7.736e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.675e-01, 1.960e-02, -6.577e-02, 6.151e-01, -7.436e-03, 1.452e-02, -2.327e-02, -7.890e-02, -1.677e-02, 5.013e-02, -8.093e-03, -1.389e-02, -3.279e-02, 3.543e-02, 1.692e-01, 3.235e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-3.517e-02, -3.838e-02, -1.474e-02, -2.068e-02, -1.817e-01, 1.699e-01, 7.926e-02, -7.054e-03, 2.695e-01, 5.230e-02, -1.968e-01, -2.007e-02, 4.549e-01, 3.689e-02, -2.283e-01, -1.314e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(5.833e-02, 7.952e-02, -7.359e-02, -1.195e-01, -1.116e-01, 1.879e-01, 4.181e-02, -3.902e-02, 1.476e-01, 7.583e-02, 2.737e-02, -2.808e-03, 5.399e-02, -9.803e-01, -7.134e-02, -6.683e-03), r4);\n\tr5 = MulAdd(s0_1_2, M4(-5.147e-02, 9.766e-03, -1.071e-02, 3.754e-02, 4.795e-02, -8.914e-03, -3.942e-02, -3.284e-02, -2.264e-01, -6.556e-02, -7.790e-03, -3.185e-02, -3.455e-02, 1.222e-01, -8.313e-03, -8.561e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(8.281e-02, -1.604e-02, -1.255e-01, 5.149e-02, -4.430e-01, 4.202e-03, 2.282e-01, 5.031e-02, 2.100e-01, 8.620e-02, -9.103e-02, -3.289e-01, -8.100e-02, 1.490e-01, -3.152e-01, 5.550e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(1.074e-01, 1.661e-01, 3.193e-02, 9.838e-02, 1.820e-01, -5.912e-02, -3.888e-02, -1.420e-01, -7.439e-01, -1.056e-01, 8.300e-02, 3.722e-02, -2.660e-01, -1.124e-01, -2.585e-01, -1.557e-01), r7);\n\tr0 = MulAdd(s0_2_0, M4(-7.868e-02, -6.276e-02, -2.737e-02, -4.918e-02, 1.281e-01, -5.506e-02, 9.780e-02, -1.622e-01, 1.217e-02, -1.056e-02, 6.793e-02, -7.401e-02, 1.435e-02, 1.061e-02, -3.900e-02, -3.253e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(2.244e-02, -5.986e-02, -4.388e-03, -1.236e-01, 7.091e-03, -6.860e-02, -4.224e-02, -9.482e-02, 5.676e-02, -1.348e-02, 8.697e-03, -1.353e-02, -2.490e-02, -2.063e-03, 1.846e-02, -2.310e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.136e-01, 8.325e-02, 1.025e-01, -6.960e-02, 7.277e-03, -5.563e-02, -2.555e+00, -3.622e-02, -1.380e-02, -1.305e-02, 2.201e-01, -1.619e-03, -1.826e-02, -4.063e-02, -8.418e-02, 1.302e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-8.670e-02, 2.031e-02, -3.725e-02, 7.594e-02, -9.032e-02, 2.543e-01, -1.835e-02, 5.230e-01, -9.773e-03, 3.194e-02, -1.131e-01, -1.102e-02, 1.551e-02, 8.393e-02, 5.165e-02, 2.149e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-2.140e-02, 8.787e-03, 3.489e-02, 2.891e-02, 4.962e-02, 3.811e-02, -1.665e-01, 2.533e-03, 4.185e-05, -1.059e-01, -4.421e-02, 3.241e-03, -4.154e-03, 5.909e-02, -2.062e-02, 7.059e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(2.682e-02, 2.640e-03, 1.152e-02, -1.141e-01, 5.429e-02, -6.640e-03, 6.613e-02, 6.840e-02, -6.060e-03, 6.469e-03, 1.935e-02, -4.384e-02, 1.567e-02, 1.085e-02, 2.783e-02, -3.522e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(6.359e-02, -2.380e-02, 1.838e-01, -3.895e-02, 2.746e-01, -3.228e-02, -3.765e-02, 1.061e-01, -2.884e-02, -2.954e-03, 1.479e-01, 3.003e-02, -4.745e-02, 4.076e-03, -7.714e-02, -2.184e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-4.216e-02, 4.861e-02, 7.809e-02, 1.441e-02, -1.187e-02, -1.856e-02, -3.030e-01, -9.251e-02, 4.392e-02, 8.662e-02, 2.212e-02, 2.836e-02, -2.013e-01, -1.534e-02, 8.255e-02, -7.570e-03), r7);\n\tr0 = MulAdd(s0_2_1, M4(3.252e-01, -2.716e-01, 1.389e-02, 1.609e-01, -2.972e-01, 4.183e-02, 1.362e-01, -6.660e-01, 2.787e-02, 1.549e-03, -3.923e-02, -2.814e-02, -3.901e-02, 4.846e-03, -1.745e-01, 1.080e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(2.355e-02, -6.437e-03, -4.723e-02, 1.990e-01, -1.267e-01, -1.769e+00, 5.229e-02, 8.905e-02, 1.982e-03, -2.071e-01, 3.084e-02, -2.818e-01, -6.501e-02, -1.337e-02, -3.131e-03, 1.822e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(6.699e-03, -1.417e-01, -6.633e-02, -1.435e-01, -9.961e-02, -1.703e-01, -1.566e+00, 2.832e-02, 3.661e-02, 2.459e-02, 3.096e-01, -2.596e-02, -5.059e-03, -3.306e-02, 1.708e-01, -1.776e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.832e-02, 1.128e-01, -1.325e-02, 3.690e-03, 5.966e-02, -5.185e-01, 2.000e-01, 1.417e-01, 5.908e-02, 1.155e-01, -1.310e-01, 7.509e-02, -4.765e-03, -1.021e-01, -4.059e-02, 8.261e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(9.638e-02, -9.343e-02, 5.686e-04, 7.238e-02, 2.467e-01, -4.423e-01, -8.564e-02, 4.961e-04, -2.725e-02, 1.201e-01, 3.391e-02, 1.201e-02, 6.986e-04, -5.746e-02, 1.629e-02, -1.521e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-3.764e-02, 4.091e-02, -2.202e-02, 1.391e-02, 1.447e-01, -2.995e-02, 5.636e-01, 7.919e-02, -2.009e-02, -9.844e-03, 2.136e-02, 1.025e-01, -1.436e-02, -4.013e-03, -1.582e-02, 1.811e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(6.970e-02, -1.640e-02, -3.713e-02, 5.321e-02, -7.688e-01, -2.768e+00, -4.979e-01, -5.450e-01, -1.145e-02, 2.516e-02, -1.938e-01, 8.066e-02, 4.867e-02, -4.605e-02, -2.698e-02, -9.340e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(2.718e-02, 7.201e-02, 1.195e-01, -1.099e-02, 2.325e-01, 3.316e-01, 7.467e-01, 7.687e-02, -1.752e-01, -4.239e-01, 8.692e-02, -1.044e-02, 7.341e-02, -1.156e-01, -2.025e-01, -9.812e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(9.301e-02, -4.288e-02, 1.169e-01, 1.705e-01, -1.137e-02, -1.197e-03, 2.242e-02, 6.301e-02, -2.043e-01, -2.635e-04, -5.213e-02, 7.317e-02, 2.400e-02, 4.303e-03, 1.068e-01, -5.357e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-4.525e-03, 4.836e-02, -1.617e-02, 1.313e-01, -7.848e-02, 4.536e-02, 1.596e-02, -1.662e-01, -9.464e-02, 3.301e-01, 2.746e-02, -1.580e-01, 3.958e-03, -2.351e-02, -6.413e-03, -1.021e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(5.703e-02, -2.809e-02, 1.576e-01, 1.642e-01, -4.576e-04, -2.715e-02, -2.638e-01, -6.278e-02, 3.542e-03, 7.173e-03, 1.170e-01, 2.296e-04, 4.712e-02, -2.996e-02, 2.704e-01, 9.674e-03), r2);\n\tr3 = MulAdd(s0_2_2, M4(5.864e-02, 6.022e-02, -7.815e-03, 4.624e-02, 5.337e-02, 2.063e-01, -9.744e-02, -8.906e-02, 8.126e-02, -8.616e-02, 4.728e-03, 6.795e-03, -7.595e-02, 6.920e-02, -8.455e-02, 8.522e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(4.668e-02, 5.426e-02, 2.449e-02, 1.675e-02, -1.758e-01, 1.448e-01, -2.189e-01, -1.754e-02, -1.324e-02, -4.070e-01, -4.630e-02, -1.179e-02, 3.695e-02, -6.326e-01, -3.427e-02, 1.172e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(4.983e-04, -1.907e-02, 8.260e-03, 7.489e-02, -7.830e-02, 1.923e-02, 5.853e-02, -3.818e-02, 2.371e-03, 1.887e-02, -2.686e-03, -3.027e-03, 1.347e-02, -3.749e-02, 3.840e-03, -6.102e-03), r5);\n\tr6 = MulAdd(s0_2_2, M4(-3.257e-02, 3.669e-02, -8.623e-02, -1.832e-02, -1.173e-01, 7.026e-02, 2.651e-01, 8.767e-02, -6.530e-01, -5.391e-02, -1.606e-01, -3.821e-02, 4.454e-02, -8.730e-02, -8.724e-02, -3.998e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-1.087e-01, 5.244e-02, -1.778e-01, 1.415e-05, -1.093e-01, -8.396e-02, -1.334e-01, -1.783e-01, 1.228e-01, 8.687e-02, 3.654e-02, 1.323e-02, -5.801e-02, 1.890e-01, -4.689e-02, 7.009e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(8.661e-02, 5.612e-03, -1.605e-02, 2.844e-02, -7.734e-02, 2.701e-02, 2.362e-02, 7.238e-02, 3.832e-02, 2.855e-02, -7.558e-02, 9.439e-02, -1.105e-03, 5.144e-02, 1.411e-01, -4.590e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.079e-01, -4.523e-02, -3.950e-03, -1.080e-01, -2.342e-02, 1.561e-02, 2.005e-03, 5.539e-02, 1.888e-03, 7.614e-02, -7.830e-03, 6.733e-02, 2.439e-02, 6.079e-02, 1.057e-02, -2.164e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-2.385e-03, 7.379e-02, -3.288e-02, -7.323e-03, -4.042e-02, -4.530e-03, 8.237e-02, 5.687e-03, 2.848e-03, -4.001e-02, 1.682e-01, -1.890e-03, -1.998e-03, 6.242e-03, -2.113e-02, 1.381e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-6.856e-02, 8.616e-02, -7.523e-02, -4.356e-02, -1.662e-02, 1.762e-02, -1.477e-02, -1.220e-02, 7.719e-02, 1.082e-02, -5.084e-03, -3.520e-02, -5.377e-03, -3.902e-02, -6.034e-02, 8.068e-03), r3);\n\tr4 = MulAdd(s1_0_0, M4(-7.502e-05, 4.395e-02, 2.306e-02, 6.249e-03, 3.221e-02, 1.107e-01, -1.036e-02, -4.145e-03, 9.089e-03, 9.884e-02, 4.577e-04, 1.788e-02, 1.305e-03, 1.567e-01, 7.386e-03, 2.497e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-1.373e-02, 6.941e-03, -8.433e-03, -4.669e-02, 1.826e-03, 4.657e-03, 6.315e-03, 1.032e-01, 4.302e-02, -1.390e-02, -1.595e-02, 6.512e-02, 5.906e-03, -6.835e-03, 1.762e-03, 4.656e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(9.972e-02, -3.990e-02, 1.171e-01, -4.479e-02, -7.582e-02, -3.550e-02, 8.961e-02, -1.678e-02, -1.416e-02, -4.271e-02, 2.428e-02, -8.409e-02, 4.540e-02, 4.412e-03, 1.557e-01, 1.274e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-1.399e-02, -5.160e-02, 2.460e-02, 4.138e-02, -1.186e-02, 4.700e-04, -9.930e-03, 3.996e-02, 1.037e-01, 2.502e-02, 8.943e-02, 4.565e-02, -1.382e-02, -3.192e-02, 1.183e-02, 1.542e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-9.121e-02, 6.561e-02, 7.228e-03, -1.705e-01, 9.409e-03, 1.260e-02, 6.866e-02, 1.029e-01, 3.960e-02, 5.893e-03, 3.170e-02, 1.549e-01, 4.852e-02, 1.380e-02, 1.054e-01, 9.530e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(-2.211e-02, 1.839e-02, -1.007e-02, 9.207e-02, -2.100e-02, 6.038e-02, -4.980e-03, 1.645e-01, 2.070e-02, 5.798e-02, -6.630e-03, -5.967e-02, 4.610e-02, 8.712e-03, -1.119e-02, 1.156e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-8.237e-02, 1.729e-02, -1.305e-01, -2.530e-02, -2.487e-02, -3.236e-02, 3.414e-02, -3.964e-02, 1.932e-02, 2.723e-02, 1.203e-01, -1.970e-02, -1.781e-02, 1.836e-02, -9.257e-02, 3.086e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(1.777e-01, -1.651e-01, 2.097e-02, -2.287e-02, 2.716e-02, -1.841e-02, 5.423e-02, -2.273e-02, 1.675e-01, 1.655e-01, -3.829e-02, -3.227e-02, 7.905e-02, 2.081e-02, 6.374e-02, 1.746e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(2.514e-02, 4.408e-02, -9.506e-02, 1.757e-02, -4.945e-03, 2.361e-01, 4.539e-02, -1.609e-02, 5.294e-02, 6.219e-03, 1.130e-01, 2.732e-02, 4.793e-02, 1.234e-01, -5.355e-02, 6.576e-03), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.056e-01, 1.063e-01, 1.780e-02, -1.665e-01, 6.243e-02, -3.837e-02, -5.323e-03, 4.567e-02, 1.159e-01, -8.217e-03, -4.523e-03, 7.439e-02, -1.457e-01, -1.171e-02, 2.373e-03, 4.780e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(7.834e-02, -4.944e-02, -1.525e-01, 5.448e-02, 3.560e-02, 5.668e-02, 2.764e-02, -1.292e-01, 2.428e-02, -4.108e-03, 1.314e-01, 1.808e-02, -3.335e-02, 2.059e-02, -1.407e-01, 1.820e-01), r6);\n\tr7 = MulAdd(s1_0_1, M4(1.662e-03, 9.967e-02, -1.166e-01, -1.668e-01, -1.552e-01, -1.870e-02, 1.806e-01, 9.351e-02, 5.993e-02, 8.684e-02, -2.612e-01, -3.693e-03, -1.647e-04, -7.748e-02, 1.131e-01, -1.260e-01), r7);\n\tr0 = MulAdd(s1_0_2, M4(3.465e-02, 6.479e-02, -2.385e-02, -1.892e-01, 1.499e-02, 2.893e-02, 1.132e-01, -1.015e-02, 2.460e-02, 1.868e-02, -1.070e-02, 4.459e-02, 7.538e-02, 2.518e-02, 2.010e-02, -9.509e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-2.153e-01, -1.703e-01, -3.932e-02, -8.786e-02, -1.481e-02, 1.203e-02, -9.507e-03, -3.997e-02, 6.695e-02, 7.251e-02, -1.632e-02, -1.110e-01, -9.090e-02, -3.922e-03, -9.033e-04, 1.529e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-3.049e-02, 4.010e-02, -1.324e-01, -6.296e-02, -1.639e-02, 1.057e-02, 6.481e-02, 2.322e-04, 2.095e-02, 5.423e-03, 5.467e-02, 1.380e-02, -2.087e-02, 1.463e-02, 9.183e-02, 5.993e-03), r2);\n\tr3 = MulAdd(s1_0_2, M4(-9.162e-02, 4.064e-02, -6.457e-02, 6.676e-03, 3.807e-02, 1.746e-02, -3.218e-02, -5.472e-03, 5.767e-02, 6.330e-03, -2.058e-02, 4.517e-03, 9.829e-02, -6.275e-02, -1.720e-02, -2.983e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-1.991e-01, 3.399e-02, 2.265e-02, -1.612e-02, 1.115e-02, -2.723e-02, 2.456e-02, 1.659e-02, -3.453e-04, 5.936e-02, 6.181e-03, 1.721e-02, 1.705e-02, -1.327e-01, -3.135e-02, -6.086e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(-2.177e-02, 1.170e-01, 2.084e-02, -1.498e-01, 3.478e-02, -9.893e-03, -2.014e-03, -3.786e-02, -2.138e-02, -3.662e-02, -3.259e-03, 5.879e-02, 2.178e-02, -4.814e-03, -7.545e-03, 7.006e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(3.699e-01, 3.968e-02, 3.318e-01, -3.246e-01, 3.387e-02, -7.085e-03, -3.355e-02, 5.078e-02, -1.057e-01, 2.813e-02, -7.980e-02, -4.147e-03, 4.711e-02, 5.233e-03, 2.167e-01, -4.390e-03), r6);\n\tr7 = MulAdd(s1_0_2, M4(-1.631e-01, -2.291e-02, 7.239e-02, -8.326e-02, 7.154e-02, -8.432e-03, -3.329e-02, -1.890e-02, 8.680e-02, -4.566e-03, 7.185e-02, 4.301e-02, -3.120e-02, -5.110e-02, 1.012e-01, 4.384e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(6.500e-02, 5.170e-03, 2.419e-01, -3.537e-01, 3.213e-02, 4.207e-03, -6.861e-02, -1.170e-01, 5.583e-02, 3.056e-02, 1.405e-01, -2.854e-01, -2.253e-01, -3.778e-02, -9.933e-02, 9.062e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(4.143e-03, 5.384e-03, 4.559e-03, -8.580e-02, -4.668e-02, 2.988e-02, 1.655e-02, -8.609e-03, -2.741e-02, 6.684e-02, 4.078e-02, 2.186e-01, 1.030e-02, 2.504e-01, -1.313e-03, -4.370e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(5.838e-02, 8.872e-02, 1.583e-01, 1.588e-02, 9.550e-03, -5.590e-02, 1.497e-01, 4.016e-02, -6.422e-03, 3.115e-02, -1.467e-01, -1.494e-02, 8.441e-03, 2.291e-02, 2.846e-02, -1.579e-03), r2);\n\tr3 = MulAdd(s1_1_0, M4(2.198e-01, 1.660e-01, 2.433e-02, 2.603e-02, 9.808e-02, 4.310e-02, -7.144e-02, -4.354e-03, 1.356e-01, 6.217e-02, -1.718e-02, -9.869e-03, 1.170e-01, -1.919e-01, 2.051e-02, 8.803e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(5.545e-03, -1.372e-01, 1.642e-02, -3.519e-04, -9.006e-03, 2.294e-01, -1.116e-02, -2.663e-03, -2.158e-02, 2.039e-01, 2.935e-02, 1.180e-02, -7.601e-03, -2.442e-01, 2.889e-02, 1.800e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(6.658e-02, -1.494e-02, -1.807e-02, 9.532e-02, 5.764e-02, 1.194e-02, 1.212e-02, -3.426e-02, 2.174e-02, 2.222e-02, 7.302e-03, 1.125e-03, 6.521e-03, 3.611e-02, 1.966e-03, 9.478e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(-6.381e-02, 3.495e-02, 8.035e-04, -5.722e-02, -1.466e-01, 3.128e-03, 3.850e-02, -5.499e-02, 5.910e-02, -3.428e-02, 5.883e-02, -4.416e-03, -3.013e-02, 3.956e-02, -1.088e-01, 5.047e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(-2.380e-01, -1.138e-02, -9.310e-02, 2.062e-01, 2.250e-01, 1.565e-02, 1.290e-01, -1.168e-01, 1.367e-01, 4.526e-02, 2.402e-01, 7.441e-02, 1.427e-01, 8.103e-02, -4.713e-02, -1.867e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(-7.338e-02, -5.126e-02, -2.828e-01, -1.032e-01, 2.048e-01, -5.016e-02, 1.054e-01, -1.009e-01, 1.646e-01, -4.986e-03, 1.358e-01, 1.642e-01, -4.467e-01, -6.574e-02, -1.168e-01, 4.339e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.035e-01, 4.132e-02, 2.166e-01, -1.714e-01, 1.955e-02, -2.849e-01, 6.837e-03, 9.148e-02, 1.706e-01, 2.567e-02, 2.511e-02, 5.523e-02, -1.408e-01, 3.060e-01, -1.578e-02, -2.258e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.015e-02, 1.295e-02, -1.230e-01, -6.501e-03, -4.451e-02, 2.219e-02, -1.260e-02, 1.351e-02, 2.194e-02, 1.750e-02, -9.944e-03, -1.726e-02, 1.430e-03, 9.095e-02, 9.115e-02, -7.109e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-7.405e-01, 2.804e-01, -3.408e-01, -2.406e-01, -1.026e+00, -1.238e-01, 9.784e-02, -1.086e-03, 1.727e-02, -8.312e-02, 2.319e-02, 1.438e-02, 1.056e-01, 2.695e-01, -5.690e-02, -6.012e-03), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.026e-01, -9.975e-02, -1.102e-01, 1.936e-02, 5.166e-02, 6.082e-02, 7.728e-02, -4.096e-02, 1.965e-02, 2.208e-01, 1.636e-01, 1.068e-02, -5.346e-02, -3.060e-01, -1.412e-01, -2.501e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-1.142e-01, -1.513e-01, -1.695e-01, -3.108e-01, -2.424e-03, 1.554e-03, 2.087e-03, 2.172e-02, -7.436e-02, 1.548e-02, 3.893e-03, 1.239e-01, 1.035e-01, 1.155e-02, 9.449e-03, 1.728e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(-1.126e-01, 1.476e-01, -3.682e-03, -6.285e-05, -1.401e-01, -6.747e-03, 4.763e-02, -1.740e-01, 6.612e-02, -2.737e-02, -4.719e-01, 1.464e-01, 2.764e-02, 1.125e-01, 3.601e-02, -1.355e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-2.997e-01, -2.647e-02, 6.464e-01, 3.382e-01, 1.440e-02, 1.528e-01, 8.261e-02, 1.228e-01, 1.662e-01, 1.418e-01, 8.370e-02, 8.795e-02, -7.463e-01, -3.244e-02, 1.259e-01, -1.799e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-2.727e-02, -8.081e-02, 2.713e-02, -5.698e-02, 1.183e-02, 1.458e-03, 5.699e-02, -5.456e-02, 2.503e-02, 1.409e-02, -7.946e-02, -5.209e-02, 9.590e-03, 1.744e-02, -7.926e-02, 2.315e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.462e-01, -4.442e-01, -1.461e-01, 2.049e-02, 4.271e-02, -3.670e-02, -9.019e-03, -1.920e-02, -8.330e-02, 3.818e-02, 9.232e-03, -8.250e-03, -4.862e-02, 4.008e-02, -2.319e-02, 1.605e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(-7.164e-02, -3.879e-04, -2.666e-01, 7.469e-02, -2.670e-02, -6.011e-03, -6.827e-02, -6.001e-04, 6.961e-03, -7.033e-03, -1.285e-03, -1.370e-02, -9.777e-03, -4.500e-04, -2.211e-02, 7.469e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.110e-01, -1.320e-01, 4.943e-02, -1.810e-02, 8.862e-02, 3.301e-02, -1.316e-02, 4.828e-03, 1.090e-02, 2.686e-02, -1.084e-03, 1.769e-02, -5.532e-02, 8.107e-02, 4.290e-02, 1.354e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.741e-01, -3.580e-01, 4.626e-01, 2.936e-02, 3.515e-02, 2.298e-02, -1.062e-02, 1.611e-02, -2.434e-02, 3.439e-02, 1.335e-02, 5.346e-03, 6.558e-02, 1.762e-02, 4.599e-03, -1.285e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(-3.698e-02, 4.482e-01, 2.128e-01, 2.631e-01, 1.384e-02, 2.536e-03, -1.242e-02, -1.095e-02, 1.506e-03, -1.500e-02, 1.202e-03, 4.455e-02, 7.669e-03, 2.851e-03, -1.627e-02, 6.873e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-5.531e-01, -1.005e-01, 1.422e-01, -1.589e-01, -7.729e-02, 1.111e-02, 5.682e-02, 1.283e-01, 9.914e-02, -5.179e-03, -7.005e-03, 9.727e-02, 2.652e-02, 7.108e-02, -2.970e-02, -1.010e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(4.630e-01, 8.585e-02, -4.338e-04, 1.091e-01, 2.052e-01, 1.607e-02, -1.941e-02, -2.097e-02, -1.328e-02, 7.487e-02, -5.807e-02, -1.926e-02, -6.590e-02, 6.066e-02, 1.702e-01, 1.991e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-7.853e-02, 1.832e-02, 2.090e-01, 2.553e-01, 6.519e-02, 2.626e-02, 1.460e-02, -6.239e-01, -1.878e-02, 1.189e-02, -5.573e-03, -5.612e-02, 1.716e-02, 4.415e-02, -7.010e-02, 1.729e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.696e-02, -3.516e-02, 2.148e-02, 6.741e-02, -3.456e-02, -3.564e-02, 6.456e-03, 1.331e-01, -1.041e-02, 5.337e-02, -1.798e-02, 1.353e-01, -3.341e-02, 1.421e-01, -3.552e-04, 2.523e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-2.031e-02, 1.575e-02, 1.699e-01, -1.119e-03, -3.962e-03, -6.432e-03, 7.921e-02, -1.014e-02, 8.745e-03, 2.301e-03, -1.228e-01, -3.481e-03, 2.751e-02, 3.663e-03, 3.662e-01, -3.158e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-5.484e-02, -6.743e-03, 1.506e-01, 2.640e-01, 4.090e-02, -3.275e-02, -3.115e-02, -4.724e-02, 1.480e-01, 7.236e-03, -8.773e-02, 3.139e-02, -1.975e-02, 5.917e-02, 6.669e-02, 1.072e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(-6.138e-02, 1.823e-01, 8.660e-02, 1.278e-02, 2.925e-02, 4.593e-02, -4.110e-02, 1.416e-04, -8.597e-03, 3.861e-02, 4.149e-02, 4.857e-03, -1.669e-02, -1.176e-01, 3.142e-02, 2.310e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(6.367e-02, 8.175e-04, -4.167e-03, 2.151e-01, 2.488e-02, 1.677e-02, -7.860e-03, -3.169e-02, -2.216e-02, 6.844e-03, -1.485e-02, -9.600e-03, 5.805e-02, -1.939e-02, -3.311e-03, 1.679e-01), r5);\n\tr6 = MulAdd(s1_2_0, M4(3.880e-02, -3.570e-02, 2.027e-01, 1.123e-02, 4.784e-02, -1.686e-02, -5.781e-02, 2.401e-02, 3.437e-02, 1.383e-02, 1.570e-01, 1.643e-02, -1.126e-01, -5.759e-02, -6.000e-02, -5.299e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(7.665e-02, 4.642e-02, -4.090e-01, 2.526e-01, 1.406e-02, -1.563e-02, 1.897e-01, -4.005e-02, 1.831e-01, 9.386e-03, -9.660e-03, -2.343e-03, -3.365e-01, -1.231e-01, 3.007e-02, -1.061e-01), r7);\n\tr0 = MulAdd(s1_2_1, M4(8.226e-03, -5.408e-02, -2.086e-01, 1.764e-01, 8.035e-02, 1.409e-02, -6.997e-02, -1.445e-01, 4.862e-02, -3.839e-03, -1.082e-01, -2.563e-02, -1.326e-01, 5.336e-03, 3.724e-02, 1.751e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-7.642e-04, 5.416e-02, 1.439e-02, 1.102e-01, 7.756e-03, 8.384e-02, 5.989e-03, 1.107e-01, 1.881e-02, 3.594e-02, 9.902e-03, -1.437e-02, -4.315e-02, 2.787e-02, -4.581e-02, -5.917e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(5.002e-02, 1.594e-02, -2.475e-01, -3.214e-02, 1.162e-02, -4.046e-02, 6.587e-02, -1.896e-02, 1.289e-02, 1.522e-02, 1.770e-03, 2.699e-03, -1.404e-03, -4.067e-04, 1.939e-01, 1.812e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(1.781e-02, 7.526e-02, -3.302e-01, 2.298e-02, 1.236e-01, -5.527e-02, 5.174e-02, -8.049e-03, 7.097e-02, -5.372e-02, 3.738e-02, 4.675e-02, -1.506e-01, 1.495e-01, 3.293e-02, -1.046e-04), r3);\n\tr4 = MulAdd(s1_2_1, M4(-1.282e-01, 2.160e-01, -1.495e-02, 1.378e-02, -1.841e-02, 1.268e-02, 3.451e-02, 4.052e-02, 4.272e-03, 2.453e-01, 1.025e-01, 4.856e-03, 1.342e-02, -4.402e-01, -1.273e-01, -2.058e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(1.824e-02, 2.980e-02, 1.810e-01, -2.664e-02, 5.937e-02, 2.693e-03, 1.584e-02, 3.566e-02, -3.755e-02, 1.692e-02, 5.017e-03, 1.051e-03, 5.785e-02, -5.269e-02, -2.924e-02, 5.573e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-2.034e-01, -2.871e-02, 1.160e-01, 1.269e-01, 1.177e-01, 5.626e-02, 9.582e-02, -1.685e-01, -3.300e-02, 3.035e-02, -1.207e-01, 9.072e-02, 2.118e-01, -4.673e-02, 7.492e-02, 3.427e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-2.850e-02, -4.880e-02, -7.047e-01, 4.647e-02, 9.823e-02, 2.684e-03, 5.552e-02, -4.363e-03, 1.560e-01, -3.923e-02, 5.644e-03, -2.510e-03, -5.567e-01, -3.345e-02, -6.587e-01, 4.968e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.017e-03, -3.010e-02, -3.916e-02, 1.333e-01, -4.226e-02, 6.974e-03, 1.378e-01, -4.228e-02, 3.716e-03, 5.723e-03, 3.161e-02, 1.258e-02, 1.235e-02, 3.563e-03, 7.594e-02, 8.765e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-6.457e-02, -2.460e-01, -6.428e-02, 1.942e-01, 1.925e-02, 5.424e-02, 1.050e-02, -2.079e-02, 2.708e-03, 1.551e-02, -6.078e-03, 1.743e-02, 2.241e-02, 6.382e-02, -1.760e-03, 8.452e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(4.909e-02, -2.203e-03, 3.233e-01, 6.786e-03, -2.976e-02, -7.395e-03, -6.457e-02, 1.137e-03, 9.632e-03, 1.189e-02, 3.125e-02, 9.035e-03, 6.958e-03, 4.504e-03, 1.408e-01, 5.365e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-3.252e-02, -3.500e-02, 1.435e-01, 2.171e-02, 3.544e-02, -3.567e-03, -3.349e-02, 2.846e-03, 6.428e-02, 1.293e-02, -3.171e-02, -4.048e-03, 2.436e-02, 3.625e-02, -5.042e-03, 2.981e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-8.619e-02, 9.531e-02, 9.445e-02, -6.476e-03, 1.552e-02, 1.606e-01, 4.950e-03, 6.516e-03, -3.196e-04, 5.273e-02, 3.515e-03, 1.264e-02, -1.432e-02, -2.041e-01, 9.112e-03, -1.239e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.007e-01, -3.668e-03, 5.357e-02, -7.526e-02, 3.539e-02, 5.038e-04, 2.163e-02, 2.792e-02, 9.590e-04, -1.326e-05, -7.778e-03, -1.244e-02, 2.235e-02, -3.571e-03, -9.343e-03, 7.538e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(1.400e-01, -1.024e-01, -9.982e-02, -2.021e-02, -3.693e-02, 1.552e-02, -8.269e-02, -2.313e-02, 9.973e-02, 3.677e-03, -8.599e-02, 4.142e-02, 1.082e-01, 1.026e-02, -3.541e-02, -3.228e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-7.690e-02, 1.997e-01, -1.425e-01, 1.453e-01, 5.493e-02, 1.738e-02, -2.033e-02, 5.284e-02, 5.980e-02, 1.304e-02, -1.002e-01, 2.561e-02, 1.538e-02, 6.180e-02, 1.228e-01, 3.281e-02), r7);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(6.264e-02, -6.774e-04, 8.937e-02, 4.231e-02, 1.342e-01, -2.762e-02, -2.624e-01, 2.383e-01, -9.782e-02, 2.103e-02, -1.530e-01, -6.834e-02, -7.360e-02, 3.490e-03, -3.051e-03, -8.448e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-6.260e-02, 1.587e-02, 2.779e-02, 6.882e-02, -5.349e-05, -4.066e-02, -3.265e-02, 8.461e-02, 8.520e-02, -4.340e-02, -1.759e-02, -1.402e-01, 2.213e-02, 4.395e-02, -2.009e-02, 1.237e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.855e-02, -3.178e-02, 2.685e-02, 9.646e-03, -5.312e-03, 1.708e-02, -6.800e-02, -8.070e-03, -5.003e-02, 2.693e-02, 1.118e-01, -1.006e-02, 2.068e-03, 3.650e-02, -1.137e-01, -1.225e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(1.470e-02, 2.288e-02, 1.074e-02, -9.223e-03, -5.155e-02, -1.703e-01, 3.219e-02, 4.372e-02, -3.226e-02, -8.728e-02, -2.976e-02, 2.007e-02, 7.067e-02, -5.503e-02, 7.152e-02, -3.291e-04), r3);\n\tr4 = MulAdd(s0_0_0, M4(-7.945e-04, -1.198e-01, 3.482e-02, 1.000e-02, 2.872e-02, -2.637e-01, -4.139e-02, -1.164e-02, 6.961e-02, 1.138e-01, -9.106e-02, -8.576e-03, -3.989e-02, -2.151e-01, 3.202e-02, 3.201e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-7.990e-02, 1.798e-02, 1.638e-02, -1.193e-01, 3.495e-02, 2.865e-02, -8.254e-03, -1.953e-01, 3.039e-02, -3.945e-02, -1.394e-02, 2.066e-01, 5.140e-02, 1.340e-02, -1.964e-02, 5.217e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-1.027e-01, 6.963e-02, -1.215e-01, -8.127e-02, 5.668e-02, 3.895e-02, -4.283e-02, 1.732e-02, 2.117e-01, -6.080e-02, 3.681e-01, 1.742e-01, -2.657e-01, 2.940e-02, 1.294e-01, -3.813e-04), r6);\n\tr7 = MulAdd(s0_0_0, M4(-7.806e-02, 1.660e-02, 4.487e-02, 1.069e-01, 4.280e-02, -1.968e-02, -6.219e-02, -1.657e-01, 6.320e-02, -1.101e-01, 1.210e-01, -5.455e-02, 2.671e-02, 4.939e-02, -3.361e-01, -8.708e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(2.013e-01, -4.715e-02, -1.529e-01, 2.610e-01, -3.948e-02, -1.914e-02, -4.003e-01, 3.441e-02, -3.235e-01, 1.618e-01, -9.902e-02, -2.090e-01, -4.255e-02, 1.261e-03, -2.530e-01, 9.999e-03), r0);\n\tr1 = MulAdd(s0_0_1, M4(-9.399e-02, -1.028e-01, 8.060e-02, 4.550e-02, 9.160e-03, -1.842e-03, 1.234e-02, 1.046e-01, -9.731e-02, 2.949e-02, -2.906e-02, 1.501e-01, 2.043e-01, 1.280e-01, -2.352e-02, -3.587e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.330e-02, 1.009e-01, 4.870e-02, 3.833e-04, 1.244e-02, 4.340e-03, 5.068e-03, 4.446e-03, 3.092e-02, -1.864e-02, -1.539e-01, 4.393e-02, -1.283e-02, -2.014e-02, -6.722e-02, 1.599e-03), r2);\n\tr3 = MulAdd(s0_0_1, M4(9.286e-02, 1.401e-01, -1.823e-02, -1.656e-03, 1.052e-01, -2.017e-02, -1.884e-02, 3.985e-02, -7.689e-02, 2.393e-03, -4.415e-04, -2.441e-02, -6.708e-02, 1.372e-02, -2.926e-03, 1.004e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.551e-02, 3.513e-02, 2.007e-02, -3.103e-02, 1.012e-02, 1.946e-01, -1.489e-01, 7.173e-03, 2.919e-02, 1.607e-01, 5.621e-02, -2.448e-02, -3.855e-02, 7.598e-02, -7.045e-02, -2.205e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(4.638e-02, -7.934e-02, 5.818e-02, -9.865e-02, -2.128e-02, 1.115e-03, 1.637e-02, -3.194e-01, -2.778e-01, -1.346e-01, 3.663e-03, -1.023e-01, 1.990e-02, -7.675e-03, -5.302e-03, 6.935e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(3.951e-01, -2.261e-02, -5.719e-03, -8.120e-02, 1.801e-01, 3.150e-02, -3.652e-01, 3.163e-02, -1.714e-01, 8.640e-02, -3.298e-01, -1.830e-01, -1.903e-01, -2.445e-02, -4.474e-02, 1.619e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(-2.774e-01, -1.343e-01, 2.453e-01, -7.100e-02, -1.466e-01, 3.292e-02, 7.575e-02, -8.637e-02, -1.403e-01, 5.063e-02, -2.894e-01, 3.025e-02, -2.073e-02, 2.291e-03, 1.721e-01, 7.213e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-1.274e-01, -6.092e-02, -1.399e-01, 9.236e-02, -6.855e-02, 1.008e-02, 3.076e-02, -2.398e-02, 2.096e-01, 1.035e-01, 2.005e-01, -2.645e-01, -2.479e-01, 4.562e-03, 4.194e-03, -7.644e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-2.971e-02, 2.307e-02, 5.688e-02, -1.060e-01, 4.310e-02, -5.538e-02, 4.210e-03, 2.197e-01, -7.916e-02, 4.577e-02, 7.142e-02, 5.499e-03, 5.703e-02, 4.480e-02, -7.675e-02, 1.938e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-2.181e-02, 5.873e-02, 1.210e-02, 2.334e-02, -9.290e-03, 1.655e-02, -3.032e-02, 1.612e-02, -4.765e-03, -4.626e-02, -3.971e-02, -4.330e-02, 2.116e-02, -3.360e-02, -3.256e-02, -6.981e-04), r2);\n\tr3 = MulAdd(s0_0_2, M4(4.126e-02, -1.097e-01, -4.810e-02, 2.851e-02, 7.227e-02, -1.241e-02, -2.499e-02, -4.736e-02, -1.862e-01, 6.517e-02, -3.500e-02, -4.437e-02, 9.415e-02, -8.351e-03, 2.376e-02, -4.729e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(3.829e-02, -2.650e-01, 1.121e-02, -5.213e-02, 6.653e-02, 8.177e-02, -1.065e-02, -4.288e-03, -4.292e-03, 9.307e-02, -5.430e-02, 2.296e-02, 5.709e-02, 4.675e-02, -5.106e-02, -2.340e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(1.470e-01, -4.502e-02, 6.611e-02, -8.729e-02, 2.361e-03, -1.401e-03, -9.374e-04, -7.756e-02, -4.271e-02, -6.906e-02, -3.325e-02, -1.606e-01, -4.606e-02, -3.638e-02, -4.593e-02, 3.510e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(-9.138e-02, -2.792e-02, 6.979e-02, 1.037e-02, 1.582e-01, 1.532e-02, -3.181e-02, -1.871e-02, 2.102e-01, -1.259e-03, -5.140e-02, -1.030e-01, -1.235e-01, -2.876e-03, -4.352e-02, 7.580e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-2.569e-01, 6.650e-02, -1.017e-01, 5.874e-02, -2.422e-01, 3.686e-03, 2.056e-03, -4.058e-02, 1.267e-01, -4.375e-02, -8.098e-02, -1.046e-01, 1.017e-01, -3.064e-02, 6.639e-02, -2.799e-04), r7);\n\tr0 = MulAdd(s0_1_0, M4(-8.155e-02, 4.656e-02, -2.928e-01, 1.281e-01, -8.940e-02, 2.304e-02, -1.812e-01, -1.273e-01, 3.542e-01, -6.017e-02, 4.857e-01, 7.420e-02, -1.735e-01, -2.898e-02, 1.050e-01, -6.010e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-3.578e-02, -6.533e-02, 4.627e-02, 7.019e-02, -2.364e-01, -9.510e-02, 7.335e-03, 1.238e-01, 6.297e-03, -2.532e-02, -2.793e-02, -1.106e-01, 5.992e-02, 7.175e-02, -1.837e-02, -2.526e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(3.718e-02, 2.724e-02, 2.270e-01, 1.966e-02, -3.678e-02, -8.453e-03, -1.212e-01, 2.900e-02, -4.240e-02, 7.300e-02, -3.878e-01, -1.977e-02, -2.186e-02, -1.654e-02, 3.136e-03, -1.726e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(1.082e-01, 3.816e-02, 2.011e-01, -5.610e-02, 2.877e-01, 5.124e-01, 3.096e-02, -1.030e-01, 7.392e-03, 2.010e-01, -1.388e-01, 8.651e-02, -3.408e-02, 3.631e-02, -1.262e-01, -4.521e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(7.493e-02, -2.808e-02, -3.914e-02, -4.717e-03, 2.414e-02, -1.954e-01, -2.029e-02, 1.263e-04, -1.177e-01, -5.179e-02, 6.809e-02, 1.453e-02, 3.533e-03, 8.916e-02, -7.579e-02, -3.683e-03), r4);\n\tr5 = MulAdd(s0_1_0, M4(9.010e-02, 4.804e-02, 4.409e-02, 9.293e-02, -8.171e-02, -3.720e-02, 4.574e-03, -7.252e-01, 3.162e-02, -1.255e-02, -5.866e-02, -2.918e-01, 5.476e-02, -3.438e-03, -1.176e-02, 8.876e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-1.606e-01, -1.599e-01, 1.744e-01, -1.431e-01, -5.073e-02, -2.537e-02, -1.655e-01, -5.539e-02, 1.373e-01, 5.816e-02, -1.482e-01, 1.475e-01, 1.751e-01, 3.039e-02, 1.443e-01, 4.222e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(1.831e-01, -7.319e-02, 8.402e-02, -9.787e-02, -3.806e-01, 1.218e-01, -1.067e-01, -2.093e-02, -2.532e-01, -4.429e-02, 1.866e-01, 2.645e-01, 3.873e-02, -2.905e-01, -3.774e-01, 2.552e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(1.753e-01, 2.955e-02, 1.308e-01, 1.108e-01, -1.307e-02, 8.558e-03, -6.035e-01, -1.034e-01, -1.384e-01, -1.302e-01, -1.043e-01, -3.909e-01, -2.221e-01, 1.131e-02, 1.388e-01, 1.589e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(7.216e-02, -2.536e+00, 6.575e-02, 2.147e-01, -4.641e-02, 2.591e-02, 5.214e-02, -2.333e-01, -3.487e-01, -5.615e-01, -2.632e-01, -6.859e-02, 2.711e-02, 2.402e-02, -3.895e-02, -1.198e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-8.444e-03, 1.563e-01, -1.953e-02, -3.030e-04, 4.769e-02, -1.076e-01, 1.202e-01, 5.643e-02, -1.655e-01, -9.388e-02, -2.429e-01, -8.715e-02, -4.058e-03, 6.296e-02, 1.113e-01, -2.967e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(-4.252e-01, -1.256e+00, -2.437e-02, -8.213e-02, -6.397e-02, -1.717e-03, -3.039e-02, 7.571e-02, 2.451e-01, -1.402e-01, 3.677e-01, -4.051e-02, 2.073e-01, 2.972e-01, 1.989e-02, 1.120e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(1.150e-01, 2.763e-01, -4.019e-02, 6.584e-03, 6.199e-02, 4.870e-03, -4.784e-02, 4.337e-03, -2.320e-01, 5.726e-02, 2.222e-01, 4.352e-02, -2.867e-02, -5.665e-01, 1.137e-01, 1.899e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.028e-01, 4.488e-02, 1.941e-02, -2.670e-01, 2.426e-01, 5.446e-03, 4.674e-02, -3.626e-01, 3.624e-01, 2.156e-01, 2.995e-01, 3.805e-01, -5.571e-02, -7.193e-02, -2.563e-02, 1.489e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(1.022e-02, -1.254e-01, 1.016e-01, -4.583e-01, 2.473e-01, -1.521e-02, 1.999e-01, -4.527e-02, -7.662e-02, -4.592e-01, -7.586e-02, -5.284e-01, -4.577e-01, -1.962e-03, -1.837e-02, 9.023e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(2.438e-01, -1.567e-01, 7.792e-01, 3.246e-01, 7.788e-02, -1.008e-01, 1.461e-01, -9.808e-02, 3.969e-01, 2.116e-01, -3.951e-01, -3.550e-01, -1.722e-01, -7.745e-02, 2.459e-01, 1.524e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(1.079e-01, -4.683e-02, 1.501e-02, 3.605e-01, 1.829e-02, -1.873e-02, -2.844e-01, 3.923e-02, -1.781e-01, 7.944e-03, -4.161e-01, -2.124e-01, 2.149e-02, -1.414e-02, 1.558e-02, -5.479e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.308e-01, -1.978e-01, 2.948e-01, 3.152e-01, 7.124e-02, 3.108e-02, -2.716e-02, -1.141e-01, 5.762e-01, 3.520e-02, 2.368e-01, 7.050e-02, 7.891e-02, 1.132e-01, -3.547e-02, -2.005e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(7.919e-03, 2.925e-02, 1.303e-01, 1.106e-01, -8.628e-03, -1.915e-03, 7.354e-02, -6.514e-03, -4.114e-02, -9.414e-03, -3.027e-02, 7.837e-02, -4.514e-02, 2.827e-02, -1.011e-01, 8.333e-03), r2);\n\tr3 = MulAdd(s0_1_2, M4(-2.714e+00, -5.918e-01, 1.814e-01, 1.673e-02, 8.619e-02, 2.107e-02, 4.621e-02, 2.438e-02, 2.912e-02, 3.723e-02, -1.565e-01, -2.244e-02, -2.672e-01, 1.108e-01, -7.917e-03, 1.277e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(3.351e-01, 1.636e-02, -1.275e-01, 1.596e-03, 7.541e-03, 1.753e-02, 4.281e-02, 5.251e-03, 5.370e-01, 1.146e-02, -3.452e-01, 7.478e-03, -4.032e-02, -2.252e-01, -2.112e-03, -8.410e-03), r4);\n\tr5 = MulAdd(s0_1_2, M4(-1.060e-01, 2.261e-01, 1.978e-01, -4.440e-01, -4.198e-02, 3.490e-02, -1.068e-02, -1.149e-01, -1.163e-01, -9.682e-02, -1.417e-01, -1.721e-02, -6.134e-02, 1.247e-02, -1.679e-02, 4.327e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(2.140e-02, -3.907e-02, 1.150e-01, 1.634e-01, 1.482e-02, -2.261e-02, -5.316e-01, -2.395e-01, -6.066e-02, 2.780e-02, -5.248e-02, 1.098e-01, -2.588e-01, 3.909e-02, -1.598e-01, -2.405e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(4.020e-01, 2.109e-01, 2.054e-03, 2.051e-01, -5.503e-02, 1.018e-01, 9.652e-02, 6.120e-02, -1.568e-01, 1.178e-01, 9.954e-02, -1.539e-01, 1.489e-03, -2.263e-02, 1.474e-01, 8.325e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-2.646e-02, 1.763e-02, 1.662e-01, -4.493e-01, -2.107e-02, -3.767e-02, -6.009e-01, -6.763e-01, -4.408e-03, -6.854e-02, -3.429e-01, 2.116e-01, 1.080e-01, -3.244e-03, -9.087e-02, 1.678e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(2.956e-02, 2.655e-02, -1.565e-02, -7.706e-02, -6.491e-02, 6.657e-02, -4.137e-02, 4.106e-02, -3.650e-02, -4.389e-02, 1.530e-02, 1.033e-01, 1.050e-01, 5.892e-02, 9.222e-03, -2.640e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(-4.255e-02, -2.004e-02, -3.011e-01, 1.657e-03, 3.798e-05, 4.239e-02, -1.634e-01, 1.668e-02, 8.080e-02, 3.364e-02, 2.879e-01, -1.523e-02, 2.932e-03, 2.521e-02, -3.649e-02, 3.297e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(1.419e-03, -1.286e-01, 1.433e-01, -2.205e-02, 5.601e-02, 3.603e-01, -7.820e-02, -1.130e-01, -4.950e-02, 1.205e-01, -1.762e-01, -1.002e-01, 5.352e-03, 2.965e-01, -5.401e-02, 1.293e-01), r3);\n\tr4 = MulAdd(s0_2_0, M4(-2.672e-04, -2.039e-02, 6.252e-03, 2.453e-03, 4.699e-02, 1.211e-01, 9.916e-03, -6.548e-03, -2.083e-03, 6.594e-02, -5.341e-02, -2.700e-02, -4.265e-02, -1.805e-01, -4.293e-02, -9.545e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(4.721e-02, 3.030e-03, 6.806e-03, -7.980e-02, -2.520e-02, 1.561e-04, -4.371e-02, -3.641e-01, -1.472e-01, -6.766e-03, -6.302e-02, -1.408e-01, -2.807e-02, -1.001e-02, 1.242e-04, 1.921e-01), r5);\n\tr6 = MulAdd(s0_2_0, M4(1.069e-01, 3.083e-03, 1.452e-01, 3.952e-03, 1.505e-02, -9.542e-02, -8.730e-01, 6.314e-02, -1.388e-01, 3.046e-02, -4.023e-01, -1.239e-02, 2.047e-01, 6.326e-02, 8.453e-02, 7.496e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(1.100e-01, -1.973e-01, 8.954e-02, 7.111e-02, -4.110e-01, -1.570e-01, 1.623e-01, -2.405e-01, 5.098e-02, 2.013e-01, -6.853e-02, -9.566e-02, -4.043e-02, -1.206e-01, -4.462e-01, 6.597e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-5.826e-02, 5.772e-03, 6.254e-02, -1.981e-01, -2.990e-01, -1.530e-02, -2.194e-01, 7.469e-02, 7.052e-02, -6.149e-02, 5.368e-02, 1.373e-01, -3.234e-01, 2.643e-03, 7.261e-02, -4.358e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-2.553e-02, -1.870e-01, -5.319e-02, -3.387e-02, -1.049e-01, -1.216e-01, -1.161e-01, -3.993e-02, 2.095e-01, 1.314e-01, 1.415e-01, -1.986e-01, 6.222e-02, 1.559e-01, 1.596e-02, 1.429e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(3.054e-03, -2.915e-02, -6.752e-01, -1.212e-02, -1.742e-02, 5.553e-03, 4.872e-01, 5.507e-03, 4.909e-02, -1.071e-02, 1.871e-01, 8.903e-03, 1.112e-02, -2.648e-02, -3.478e-01, 1.677e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(9.744e-02, -6.799e-01, -5.061e-02, -1.890e-02, 9.599e-02, -5.478e-02, -3.931e-01, -1.225e-01, 4.054e-02, -3.459e-01, 4.639e-01, 2.830e-02, 1.506e-01, -1.934e-01, -4.718e-02, 7.170e-03), r3);\n\tr4 = MulAdd(s0_2_1, M4(-4.825e-02, 1.189e-01, 2.780e-02, 2.434e-02, 5.103e-02, -1.325e-01, -9.671e-02, -2.982e-03, 3.777e-02, -4.653e-01, -3.169e-02, -2.833e-02, -2.670e-02, 7.513e-02, 1.061e-01, -1.310e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-3.285e-02, -2.211e-02, -4.173e-02, -2.055e-01, 5.413e-02, -9.280e-02, -2.599e-02, -1.835e-01, 4.339e-03, -1.545e-03, -5.894e-02, 1.694e-01, -1.479e-02, 2.451e-03, 2.460e-02, 8.094e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-1.877e-01, 1.062e-03, -2.856e-03, 3.717e-03, -1.589e-01, 1.749e-01, 5.403e-02, -2.642e-01, 1.420e-01, 2.568e-01, 4.098e-01, -4.049e-04, -5.024e-01, -7.219e-03, -8.593e-03, 9.595e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(2.921e-01, -2.501e-01, -9.082e-01, 1.172e-02, -1.201e-01, 5.868e-02, -5.766e-01, -4.228e-02, -4.255e-02, -3.385e-01, 6.198e-02, -5.366e-02, -4.827e-02, 6.740e-02, 6.727e-02, 9.887e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(4.403e-02, -1.433e-02, -2.140e-01, -8.049e-02, 1.244e-01, -6.525e-03, -1.020e-01, -3.545e-02, -1.937e-01, -1.912e-02, 1.090e-01, 8.224e-02, -5.988e-02, 4.533e-03, -1.277e-02, -1.264e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(7.441e-02, -8.222e-02, 2.954e-02, 1.798e-01, -1.793e-01, -8.289e-03, -9.180e-02, -1.985e-02, -1.766e-01, 1.518e-01, 5.187e-02, -6.552e-02, -4.157e-02, 5.495e-02, 7.841e-03, -2.716e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.758e-02, 2.946e-02, 4.706e-03, -1.943e-02, 6.051e-04, 1.697e-02, 7.457e-02, -6.669e-02, 1.950e-02, 2.404e-02, -6.006e-02, 1.125e-03, 9.887e-03, 4.741e-02, 9.142e-03, 2.156e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(2.225e-02, -5.250e-01, 2.727e-01, 1.664e-02, -3.577e-02, 5.394e-03, 6.756e-02, -4.234e-03, 1.419e-02, 5.379e-02, -2.306e-01, -6.725e-02, 7.129e-02, 2.796e-02, -3.373e-02, -1.196e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(-4.878e-02, 1.078e-01, -3.336e-02, 3.951e-05, 6.651e-04, 1.528e-01, 2.046e-01, -8.338e-03, -1.822e-01, -1.855e-01, -4.387e-03, -4.836e-02, 5.193e-02, 1.417e-01, -7.580e-02, 4.599e-04), r4);\n\tr5 = MulAdd(s0_2_2, M4(-6.775e-02, 7.056e-02, -9.428e-03, -3.275e-02, 1.459e-02, -4.716e-02, -4.011e-02, -7.176e-02, -1.690e-02, -1.069e-01, -2.033e-02, -4.862e-02, 3.764e-03, 2.948e-02, 2.091e-02, 2.643e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(1.948e-01, 5.021e-03, -6.328e-02, 7.674e-02, 5.482e-02, -5.565e-02, -4.517e-01, -1.597e-01, -2.391e-01, -4.557e-02, -1.093e-01, -6.106e-02, 1.135e-01, 4.106e-02, 1.570e-02, 8.981e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(4.634e-02, 1.676e-01, -6.036e-02, -2.253e-02, 2.656e-02, -7.515e-02, 4.848e-02, 1.126e-02, -1.514e-01, -3.267e-01, -2.302e-01, -3.407e-02, 1.900e-02, 6.314e-02, 7.131e-02, -3.654e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(7.115e-02, -1.203e-02, 1.698e-01, 6.541e-02, 8.165e-02, 8.733e-03, -7.096e-03, -4.947e-02, 4.667e-02, 1.139e-02, -8.774e-03, 2.857e-01, 1.254e-02, -6.337e-03, 1.767e-02, 8.887e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.007e-02, -3.636e-02, -2.002e-02, 9.660e-02, -2.603e-02, -3.190e-02, -3.215e-02, -1.170e-01, -3.103e-02, 7.716e-02, -1.860e-02, -2.463e-02, 9.333e-03, 8.847e-02, 5.510e-03, -1.159e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(-3.271e-02, 3.743e-03, -1.324e-01, 3.870e-02, 2.189e-02, -2.063e-02, -1.729e-02, -2.511e-02, 2.360e-02, 5.867e-03, -2.576e-03, 7.351e-03, 1.017e-02, -1.033e-02, 3.875e-02, -5.367e-04), r2);\n\tr3 = MulAdd(s1_0_0, M4(8.979e-02, 1.362e-01, 2.917e-04, -4.700e-02, 4.479e-02, -4.565e-03, -2.009e-01, 7.338e-02, 6.352e-02, 8.075e-02, 7.420e-03, 9.141e-03, 2.677e-02, 6.421e-02, -1.004e-01, 3.714e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-4.747e-02, 4.688e-02, 1.600e-02, -1.589e-02, 3.483e-02, 2.527e-01, -1.061e-02, 4.461e-04, 6.071e-02, 1.294e-01, -7.994e-02, 5.105e-03, -9.052e-03, -1.866e-01, 1.994e-02, -7.957e-03), r4);\n\tr5 = MulAdd(s1_0_0, M4(6.094e-02, -3.302e-03, -1.252e-02, -3.115e-02, 1.403e-02, -1.507e-03, -2.707e-02, -4.283e-02, 2.885e-02, -3.986e-02, -1.641e-02, 1.335e-01, -2.498e-02, 1.110e-02, 1.025e-02, -1.112e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(2.870e-01, -5.667e-03, 1.259e-03, -1.267e-01, 3.075e-02, -1.944e-02, 1.053e-01, 4.634e-02, -1.608e-03, 1.242e-02, -2.372e-03, 7.720e-03, 3.906e-03, -1.103e-02, -6.571e-02, -1.306e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(1.971e-01, -3.192e-02, 1.141e-01, -7.841e-02, -9.590e-02, -5.443e-02, -1.872e-01, -3.180e-02, -8.566e-03, -6.587e-02, 5.663e-02, -2.347e-03, 2.202e-02, 1.013e-01, 1.101e-01, 1.342e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(9.357e-02, -8.390e-03, -2.062e-02, 2.640e-01, -2.748e-02, 6.788e-03, 4.485e-02, 8.492e-03, 3.004e-02, -4.483e-03, -1.290e-01, -2.837e-02, 4.595e-02, -6.606e-03, -1.835e-01, -4.309e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.772e-01, -8.610e-02, 1.707e-02, 1.772e-01, 3.862e-02, -2.297e-01, 6.545e-03, -1.099e-01, -4.343e-02, 3.444e-02, -1.691e-02, 5.481e-02, -3.686e-02, 1.346e-01, -2.034e-02, 2.331e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-5.610e-03, 1.123e-02, 2.385e-02, 2.298e-02, 6.204e-03, 2.570e-02, 1.574e-02, -1.746e-02, 1.419e-02, -5.394e-02, 2.286e-01, -3.648e-03, 1.343e-02, -6.396e-02, -5.099e-02, 2.001e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(2.121e-02, -1.095e-01, 1.370e-01, -2.989e-03, 1.120e-02, 1.300e-01, -5.516e-02, 2.261e-02, -8.026e-02, -7.295e-02, 1.508e-01, 6.660e-03, 6.020e-02, -3.246e-02, -2.893e-02, -3.849e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-3.699e-02, 9.469e-02, 7.714e-02, -1.423e-02, -1.847e-02, 4.352e-02, -5.526e-02, 2.864e-03, 4.651e-02, -4.210e-02, 9.638e-03, -1.764e-02, -2.034e-02, -5.537e-01, -3.436e-02, -1.424e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.162e-02, -4.341e-03, 9.643e-03, 4.683e-02, 4.379e-04, 3.796e-02, -2.288e-02, 2.214e-01, 6.973e-02, -9.165e-04, -2.319e-02, 9.806e-04, 2.996e-02, -9.302e-03, -1.422e-02, -5.686e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(1.749e-01, -4.289e-02, -6.535e-02, -1.791e-01, -4.304e-04, -9.533e-03, -5.701e-01, -2.855e-01, -2.213e-01, -3.832e-02, 6.083e-02, -1.462e-01, -3.555e-01, -4.970e-03, 7.351e-02, -1.439e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(2.276e-01, 2.458e-02, 3.166e-01, 1.377e-01, -1.130e-01, -3.144e-02, -6.754e-02, -6.848e-02, -8.457e-02, 1.537e-01, -2.123e-02, -8.137e-02, 2.464e-01, -1.865e-02, -1.203e-01, -4.335e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(-1.571e-02, 7.025e-04, -1.740e-02, -7.553e-02, 3.419e-02, 1.024e-02, -4.115e-02, 4.720e-03, -7.436e-02, 2.269e-02, -1.735e-01, 1.585e-01, 1.457e-01, 3.121e-03, -1.620e-01, -6.686e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(5.442e-02, 2.604e-02, -8.098e-03, -9.047e-02, -6.834e-02, -6.022e-02, -1.632e-02, 1.177e-02, 7.704e-02, 9.470e-03, -1.633e-03, -3.105e-02, 1.627e-01, -2.916e-02, -4.259e-02, -2.728e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.138e-02, -5.202e-03, 7.536e-03, -1.939e-02, 5.584e-03, 6.125e-03, -1.559e-02, -2.908e-03, 2.135e-02, 4.332e-03, 7.680e-02, -9.905e-04, -6.735e-03, -9.652e-03, -1.061e-01, -1.274e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(7.244e-02, 2.656e-02, -1.958e-02, -2.892e-02, 7.496e-02, -5.414e-03, -6.005e-02, 5.160e-03, 1.602e-01, 4.561e-02, 3.741e-02, 3.431e-02, -8.395e-02, 8.270e-02, 6.106e-02, 1.152e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-8.262e-03, -3.290e-01, -1.410e-04, -3.795e-03, 9.965e-03, -9.919e-02, 5.087e-02, 6.356e-03, 6.469e-02, -5.284e-03, -5.558e-02, 1.862e-02, -3.507e-02, -2.518e-01, 1.893e-04, 2.143e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(7.297e-02, -1.032e-02, 4.208e-03, -1.439e-01, 4.298e-03, 1.309e-03, -1.218e-02, -6.339e-02, 5.287e-02, 2.177e-02, -1.284e-03, 4.831e-02, -1.166e-01, -1.863e-02, -3.108e-02, 1.894e-01), r5);\n\tr6 = MulAdd(s1_0_2, M4(-1.149e-01, 1.141e-02, 7.855e-02, 8.825e-02, 1.119e-01, -9.455e-04, 1.579e-01, -4.167e-02, -4.948e-02, -3.996e-02, -2.625e-01, -2.350e-02, 9.506e-02, -2.092e-02, 1.328e-01, 6.457e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(1.242e-01, -8.833e-03, -7.956e-02, -2.982e-02, -1.605e-01, 9.590e-02, 6.261e-02, -1.079e-02, 1.256e-01, 6.109e-02, -2.679e-02, 1.373e-01, 1.662e-01, -1.847e-01, 2.210e-01, -8.045e-03), r7);\n\tr0 = MulAdd(s1_1_0, M4(-7.514e-02, -3.439e-03, -1.994e-01, 8.585e-02, -8.819e-03, -4.977e-04, -6.567e-02, 4.147e-03, 1.755e-01, -6.371e-03, 1.478e-01, 3.057e-01, 3.208e-02, -2.040e-02, 8.753e-02, -1.723e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(6.462e-02, 1.827e-01, 4.015e-02, -5.362e-02, -3.650e-02, -4.094e-02, 6.882e-03, -1.494e-03, -6.447e-04, 1.037e-01, 5.810e-02, 4.874e-02, -1.416e-02, -4.531e-02, -2.306e-02, -5.723e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-2.207e-02, 3.279e-02, -2.806e-01, 9.514e-03, 3.938e-02, -1.015e-02, 1.477e-01, -1.327e-02, 2.029e-02, 9.269e-03, -1.096e-01, -7.425e-03, 3.259e-03, 4.637e-02, -1.976e-02, 8.150e-03), r2);\n\tr3 = MulAdd(s1_1_0, M4(-6.978e-03, 6.323e-02, -4.118e-02, 1.029e-02, -4.057e-02, -3.792e-02, -3.762e-01, -2.459e-02, 1.690e-01, -2.467e-02, -1.415e-01, -4.838e-02, -4.329e-02, -1.140e-01, -3.862e-02, 4.836e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-4.064e-02, -7.933e-02, 1.540e-02, 1.549e-02, 5.270e-03, 1.145e-01, -4.344e-02, -1.476e-03, -2.683e-02, 6.159e-03, -6.922e-02, -2.887e-03, 2.700e-02, 1.073e-01, -4.450e-02, 1.290e-03), r4);\n\tr5 = MulAdd(s1_1_0, M4(-5.059e-02, 3.690e-03, 4.444e-02, -1.386e-01, -5.145e-02, -4.379e-03, 1.571e-02, 1.208e-03, -3.514e-02, 5.312e-02, 3.894e-02, 2.910e-02, -2.729e-02, -1.223e-02, -1.237e-02, -1.463e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(-9.028e-03, 4.458e-02, -5.741e-02, -8.851e-02, -7.494e-02, -6.127e-02, -5.960e-01, -1.432e-01, 5.635e-02, 1.542e-02, -9.919e-03, 9.409e-02, 8.735e-02, -1.741e-02, 6.979e-02, -2.025e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.812e-01, -1.045e+00, 1.276e-01, 1.210e-02, -8.946e-02, -3.046e-01, -9.898e-01, 2.149e-03, 8.403e-02, -1.110e-01, 2.169e-01, 1.649e-03, -3.145e-02, 5.384e-02, -1.359e-01, 5.368e-03), r7);\n\tr0 = MulAdd(s1_1_1, M4(1.346e-01, -1.246e-02, 9.922e-02, 7.975e-02, 8.476e-02, -2.962e-02, -2.044e-01, 5.408e-02, -1.244e-01, 1.539e-02, 2.687e-01, -6.471e-02, -1.034e-01, -1.189e-03, -2.169e-01, -2.293e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-4.553e-02, -2.964e-01, -1.338e-02, 1.149e-02, -5.167e-02, 3.973e-02, -6.937e-03, -1.287e-01, -1.384e-01, 5.646e-03, 8.828e-02, -2.625e-02, -2.052e-02, -1.210e-01, -1.169e-02, 1.494e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(4.121e-03, 8.960e-02, -2.173e-01, -4.513e-02, 3.753e-02, 3.032e-02, 8.714e-02, 9.077e-03, -1.165e-02, 9.335e-03, 6.004e-02, -2.557e-03, 1.611e-02, 1.625e-02, 3.245e-02, 1.646e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(2.153e-01, -8.387e-02, 4.838e-02, -7.006e-02, 1.586e-01, -2.217e-02, 8.859e-02, -8.274e-02, -1.408e-01, 1.407e-01, -4.647e-01, -1.460e-01, 2.407e-01, 1.303e-01, 1.000e-01, -8.508e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.925e-02, 2.093e-01, 3.846e-02, -1.732e-02, 4.110e-02, 6.910e-02, -2.169e-02, 6.630e-03, -1.217e-01, 3.558e-02, 1.596e-01, 1.306e-02, 6.358e-02, 1.734e-01, -1.608e-02, 1.002e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-3.969e-02, 3.255e-02, -7.518e-03, -2.459e-01, -8.281e-02, 6.072e-02, -1.490e-02, 5.089e-03, 5.844e-03, 7.402e-02, 8.127e-02, 4.221e-02, 4.107e-02, -4.180e-02, 3.835e-02, -8.328e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(-3.468e-01, 1.356e-01, -1.402e-01, -7.366e-02, 8.753e-02, -2.459e-02, -1.088e-01, -1.143e-01, 6.006e-02, -6.657e-02, 1.563e-01, -2.308e-01, 1.190e-01, 2.921e-02, -1.634e-01, 5.922e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(1.603e-02, 2.486e-02, 2.107e-01, 1.977e-01, -2.574e-01, 5.071e-02, -5.681e-01, -3.367e-02, -5.302e-02, -1.009e-01, -9.316e-02, 9.348e-02, 1.592e-01, -4.492e-02, -3.385e-01, -7.222e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-3.605e-02, -7.409e-04, 1.751e-01, -1.200e-02, 9.153e-02, 9.428e-04, -9.696e-03, 6.674e-02, 1.989e-01, 1.795e-02, 4.392e-01, 1.278e-02, -1.828e-01, -3.919e-02, -3.178e-01, 6.001e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-1.812e-01, -7.434e-03, 2.700e-02, 2.287e-01, 2.843e-02, -7.739e-02, -5.201e-03, 1.102e-01, -3.745e-01, -1.435e-01, -3.944e-02, -3.715e-01, 1.173e-03, 9.243e-03, 5.007e-03, -8.380e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.191e-02, 4.242e-02, 2.182e-02, 6.144e-02, 1.508e-02, -2.664e-02, 1.111e-01, 2.142e-02, -1.945e-02, -7.527e-03, 1.633e-03, -2.838e-02, 1.220e-02, -9.682e-03, -2.048e-01, 9.808e-03), r2);\n\tr3 = MulAdd(s1_1_2, M4(-7.441e-03, -6.783e-03, -4.291e-02, -1.733e-02, 2.101e-02, 5.878e-02, 3.631e-02, 5.201e-02, -1.109e-01, -1.043e-03, 4.808e-02, -1.171e-02, 2.026e-01, 2.037e-01, -4.626e-02, 8.034e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-5.320e-02, 1.206e-01, 2.509e-02, 6.288e-03, -5.051e-03, 2.831e-02, -7.727e-02, -9.286e-03, -8.402e-02, -7.026e-01, 2.203e-01, -1.992e-02, -2.169e-02, -1.424e-01, -4.328e-02, -2.649e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(2.568e-02, 3.867e-02, 1.863e-02, -1.846e-01, 3.719e-02, 1.825e-02, 8.613e-03, 1.054e-03, 3.692e-02, 3.564e-02, -2.601e-02, 1.751e-01, -2.502e-02, -8.277e-02, 1.026e-02, -8.981e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(7.030e-02, 1.425e-02, -9.720e-03, -9.021e-04, 2.298e-01, -4.802e-02, 1.172e-01, -6.073e-02, -3.346e-02, 8.033e-02, -3.195e-01, -1.647e-01, 3.623e-01, -5.702e-02, 4.494e-02, -1.179e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(1.694e-02, 4.935e-02, -1.282e-01, -6.114e-02, -6.977e-02, 2.678e-02, -8.255e-02, -6.107e-02, 2.151e-01, -2.787e-01, 5.641e-02, 1.135e-02, -3.934e-01, -4.594e-01, 7.494e-03, -1.062e-01), r7);\n\tr0 = MulAdd(s1_2_0, M4(6.502e-03, -1.202e-02, -2.084e-02, 1.455e-01, 6.165e-02, 2.200e-04, 7.589e-02, -3.667e-02, -7.541e-02, -1.307e-03, -1.379e-01, -3.513e-01, -1.195e-01, 1.055e-02, 2.509e-01, 4.567e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(2.473e-02, 4.971e-02, 6.768e-02, -4.546e-02, 1.231e-02, -6.150e-02, 1.019e-02, -1.386e-02, -5.042e-02, 3.185e-02, -3.450e-02, -9.653e-02, 1.632e-02, 2.489e-02, -2.911e-03, 1.119e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.821e-02, 4.203e-02, 4.074e-02, 3.582e-03, 6.189e-03, 1.694e-02, -8.297e-02, 9.678e-04, 1.231e-02, -1.571e-02, -8.635e-03, -9.639e-05, -2.391e-02, -4.528e-02, 5.520e-03, 3.257e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(4.210e-02, -1.156e-01, 1.088e-02, -9.435e-02, 7.994e-02, -7.167e-02, -6.674e-02, -8.692e-02, 3.661e-02, 3.201e-02, -1.061e-01, -5.904e-02, 2.167e-02, -9.743e-02, -2.337e-02, 4.602e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-3.713e-02, -1.257e-01, 1.178e-02, 1.599e-02, 4.741e-03, 1.116e-01, -3.402e-03, 6.216e-03, 5.859e-02, -2.665e-02, -5.080e-02, 4.355e-03, 6.937e-03, 1.164e-01, 4.903e-02, 1.363e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(3.661e-03, 3.087e-02, 4.653e-02, -2.836e-02, -2.558e-02, 1.711e-02, 6.351e-03, -5.416e-03, -4.616e-03, -2.240e-02, -2.778e-02, -8.395e-02, 1.412e-02, -1.291e-02, -4.989e-03, 1.242e-01), r5);\n\tr6 = MulAdd(s1_2_0, M4(-7.865e-03, 5.649e-02, 5.367e-02, -7.645e-02, 5.339e-02, 1.520e-03, -5.694e-01, -8.613e-02, -1.314e-02, -5.665e-02, 2.182e-01, -2.356e-02, -5.917e-02, -7.966e-03, -4.855e-02, 1.502e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(-5.293e-02, -3.527e-02, 2.065e-01, 1.612e-02, -9.992e-02, -6.361e-02, -7.952e-02, -1.970e-02, -1.862e-01, -3.570e-02, -1.176e-01, -2.925e-02, 8.548e-03, -5.732e-02, 1.182e-01, -4.092e-03), r7);\n\tr0 = MulAdd(s1_2_1, M4(6.306e-02, -3.722e-02, -1.296e-01, -1.197e-01, 1.430e-02, 4.780e-03, -2.927e-02, 1.927e-02, -4.665e-02, -7.673e-03, -2.381e-01, -3.575e-01, 6.675e-03, 1.336e-02, 4.213e-01, -5.010e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.154e-01, 1.049e-01, 2.757e-02, -5.686e-02, -1.666e-01, -1.123e-01, 1.195e-03, -2.810e-01, 4.578e-02, -2.731e-02, -2.001e-02, 8.329e-02, 6.548e-02, -6.233e-02, 1.772e-02, -7.621e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(2.287e-02, 1.633e-03, -2.804e-02, -1.973e-02, 1.856e-02, -2.116e-02, -1.382e-01, 3.023e-03, -3.045e-02, 7.486e-03, -2.370e-01, -6.014e-03, -2.373e-02, -2.898e-02, 7.749e-03, -1.315e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(1.502e-01, 2.125e-02, 8.226e-02, 3.915e-02, 1.428e-01, 3.537e-02, 7.398e-02, -2.117e-02, -1.751e-02, -1.053e-01, -1.024e-01, 7.201e-02, 7.610e-02, 1.799e-01, -1.113e-01, 1.098e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-9.063e-02, 7.276e-03, -5.453e-02, -2.475e-02, 1.546e-02, 5.276e-02, 2.126e-02, -1.268e-02, 8.052e-02, 2.529e-01, -4.218e-02, -9.814e-03, 1.155e-02, -7.265e-02, 8.245e-03, 1.207e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-3.397e-02, -6.000e-03, 3.037e-02, -4.773e-02, 5.174e-03, -1.465e-02, 1.879e-02, 1.235e-02, -7.390e-02, 2.448e-02, -1.734e-02, -1.203e-01, -3.709e-02, -6.448e-03, 3.285e-02, 1.904e-01), r5);\n\tr6 = MulAdd(s1_2_1, M4(1.551e-02, 2.684e-02, 1.799e-02, -1.755e-02, 2.235e-01, -6.835e-02, 5.601e-02, 9.414e-02, 2.205e-01, 6.369e-02, -1.791e-01, -9.878e-02, 8.115e-02, -2.370e-02, 1.232e-01, 6.423e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-1.484e-01, -1.906e-01, 4.426e-02, 1.540e-02, -3.994e-02, -1.052e-01, -2.186e-01, -3.289e-02, 2.364e-02, -1.522e-01, -3.535e-01, -3.055e-02, -6.764e-03, -9.224e-02, 9.803e-02, 8.576e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(1.698e-02, 3.485e-03, -1.299e-01, -2.083e-02, -5.517e-03, 1.613e-02, 1.384e-01, 8.548e-03, -5.800e-02, 1.544e-02, -1.192e-01, -1.496e-01, -1.722e-01, 5.110e-03, 1.831e-01, -7.517e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(4.499e-03, 5.640e-02, 2.369e-02, 4.242e-02, -3.587e-02, -9.147e-02, 9.052e-03, 1.058e-01, 7.529e-02, -1.230e-01, -4.040e-02, -2.578e-01, -2.122e-01, -2.240e-02, -1.533e-02, -8.865e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(1.382e-02, 2.283e-02, 8.278e-02, 1.642e-02, -2.710e-02, 1.818e-02, -1.039e-01, -1.033e-02, -2.869e-02, -5.845e-03, -1.603e-01, 6.712e-03, 3.027e-03, -6.750e-03, -3.369e-02, -5.371e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(3.053e-02, 3.360e-02, -5.772e-02, -1.476e-02, 5.071e-02, -8.128e-02, -3.125e-03, -1.056e-02, -7.150e-02, 4.733e-03, -1.946e-02, 2.359e-02, 8.188e-02, -7.336e-02, -2.349e-01, 2.244e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-1.581e-02, -6.881e-02, -2.221e-02, 2.241e-03, -2.495e-02, 2.992e-01, -5.777e-02, -4.311e-03, 5.330e-02, 4.265e-01, -8.287e-03, -5.192e-03, -1.028e-01, 2.323e-01, 4.096e-02, 4.386e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(-3.272e-02, -2.786e-03, 2.716e-02, -2.997e-02, 1.155e-02, -1.047e-02, 2.624e-02, -6.303e-04, 1.776e-04, 1.786e-03, -2.079e-02, -7.914e-03, 4.162e-02, -4.169e-03, 5.472e-03, 4.317e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(8.494e-02, 1.091e-02, -5.743e-02, 1.018e-01, -3.018e-01, 3.319e-02, -5.061e-02, 5.857e-02, 4.065e-02, -3.091e-02, 2.692e-01, 7.955e-02, -2.648e-01, -6.652e-03, 2.290e-01, 8.768e-03), r6);\n\tr7 = MulAdd(s1_2_2, M4(-2.540e-02, 2.757e-02, -1.157e-01, -5.103e-03, -4.462e-04, 2.419e-02, -1.066e-01, 7.397e-03, -2.654e-02, -5.437e-02, 5.019e-01, -1.496e-02, -1.152e-01, 1.842e-02, -2.989e-01, 8.404e-02), r7);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.128e-01, 5.004e-02, 4.168e-02, 1.372e-01, 2.359e-03, 1.107e-02, 4.668e-02, 1.402e-01, -7.173e-02, -7.023e-03, -1.826e-02, 2.433e-01, 1.218e-01, -1.031e-02, 2.365e-02, 5.643e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(7.557e-02, 9.988e-02, -4.423e-03, -3.230e-03, 5.991e-02, -6.288e-02, 2.228e-02, -3.758e-02, 9.741e-02, 5.036e-02, -1.582e-02, -1.099e-01, -5.961e-02, -1.556e-02, 1.709e-02, 7.292e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(2.587e-03, 2.589e-02, -2.749e-03, -2.596e-03, 2.550e-02, 3.740e-02, -1.708e-01, -1.254e-02, 2.876e-03, 2.063e-02, 2.443e-02, 1.229e-02, 5.274e-03, -4.920e-03, 5.030e-02, 8.583e-03), r2);\n\tr3 = MulAdd(s0_0_0, M4(1.029e-01, 1.220e-02, 6.294e-02, -5.194e-03, -4.393e-02, -5.146e-02, -1.282e-02, 4.437e-02, -7.808e-04, 1.114e-01, -1.556e-01, 4.186e-02, -1.285e-03, 4.720e-02, 2.315e-02, 2.590e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.087e-02, 3.718e-01, -6.359e-03, 1.541e-03, 1.163e-02, 4.845e-02, 5.020e-02, 1.624e-02, 1.168e-02, 2.235e-01, -1.216e-02, -5.297e-03, -1.794e-02, -8.189e-03, 7.332e-03, 1.524e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-1.772e-02, 1.752e-02, -2.488e-02, 6.637e-02, 1.272e-02, 3.250e-02, 1.831e-02, -8.873e-02, -1.233e-01, -5.643e-02, -1.196e-02, 1.915e-01, -3.330e-03, 4.746e-03, 1.752e-02, -1.187e-01), r5);\n\tr6 = MulAdd(s0_0_0, M4(-6.398e-02, -1.446e-02, -6.919e-03, -1.065e-01, 2.530e-01, 6.751e-02, -8.337e-02, 7.555e-02, 1.854e-01, -4.935e-03, 2.271e-01, -7.761e-03, -7.562e-02, 2.285e-02, -2.239e-01, -3.847e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(-6.715e-02, -1.788e-02, -7.139e-02, 1.151e-02, -2.635e-01, -2.037e-01, 7.300e-02, 4.091e-02, -2.177e-01, -9.210e-02, -1.115e-01, 1.677e-01, 4.285e-02, 5.637e-02, 4.425e-02, 2.710e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(5.772e-02, -4.451e-03, -1.735e-01, 1.473e-01, -2.478e-01, -6.076e-03, -7.926e-02, -2.639e-01, -1.095e-01, 4.531e-02, 2.173e-01, -3.264e-02, 6.681e-02, 1.779e-02, 3.969e-02, 8.199e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(1.792e-02, -1.268e-01, 2.186e-03, -9.302e-02, -1.543e-01, 1.480e-01, -3.492e-02, -1.840e-01, -2.057e-01, 5.441e-02, -2.903e-02, 1.303e-01, 1.603e-02, -3.935e-02, 2.258e-02, 4.463e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-2.474e-02, 2.429e-02, 1.246e-01, 2.785e-02, -6.417e-02, 7.547e-02, -8.155e-02, -1.084e-02, 3.877e-02, 1.729e-02, 3.252e-02, 2.830e-02, -2.184e-02, 3.914e-02, 6.496e-02, -2.522e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(3.556e-02, 1.173e-01, 2.122e-02, 6.441e-02, 4.080e-01, -1.564e-02, 2.947e-03, 9.644e-02, 1.545e-01, 8.746e-02, -1.515e-01, 1.273e-02, -1.380e-02, -3.001e-02, -5.346e-03, -3.869e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(6.274e-02, 2.786e-01, -4.192e-02, 2.182e-02, -2.857e-02, -2.475e-01, -1.220e-01, -1.961e-02, 1.113e-01, 2.368e-01, -6.757e-02, 6.832e-02, -1.571e-02, -1.024e-01, 3.520e-02, -2.197e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-7.893e-03, 1.820e-02, 2.700e-02, 1.150e-01, -4.519e-03, 2.207e-03, -1.080e-02, 1.767e-01, -7.731e-02, -3.286e-02, -8.501e-03, -5.747e-02, 1.716e-01, 6.719e-02, -3.253e-03, 2.997e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-7.007e-03, -1.256e-03, 1.849e-01, -2.648e-01, -1.796e-01, -1.374e-01, -1.657e-01, 2.133e-01, 1.191e-02, 8.127e-02, -2.106e-01, -2.050e-03, 4.469e-02, -6.533e-02, 1.940e-01, -1.295e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(-1.479e-01, -1.070e-01, 8.865e-02, 1.460e-01, -9.922e-01, -2.927e-01, -7.290e-02, -1.740e-01, -3.528e-01, -1.074e-02, -3.868e-02, 1.390e-02, -1.131e-01, 7.383e-02, -1.015e-02, -7.503e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-8.911e-02, -1.556e-02, -2.235e-01, -3.023e-02, 6.412e-02, 1.598e-02, -2.543e-01, 8.910e-02, -2.359e-02, 1.871e-02, 1.331e-01, -1.613e-02, 3.463e-02, -8.450e-03, -1.212e-01, 6.194e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(6.855e-02, -9.696e-02, -8.733e-03, -1.685e-01, -5.664e-02, -1.661e-01, -1.173e-02, 9.630e-02, -1.305e-01, 8.374e-02, 2.322e-04, 2.258e-02, 5.198e-02, -3.446e-03, 1.145e-02, -2.087e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(3.527e-02, 3.400e-02, -4.298e-03, -2.950e-02, 4.656e-02, -1.832e-02, 1.869e-02, 2.498e-02, -1.077e-02, 2.498e-02, -4.527e-03, 2.704e-03, 2.425e-02, -1.026e-03, 4.438e-02, 2.165e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(1.845e-01, -5.908e-02, 5.869e-02, 6.653e-02, 3.971e-02, -5.437e-02, 6.804e-02, 2.063e-03, -6.222e-02, -3.784e-02, 5.847e-02, -1.432e-02, 2.476e-02, 6.141e-02, -2.808e-02, 1.032e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(4.012e-02, 5.048e-01, 9.657e-02, 3.019e-03, 1.290e-02, -7.103e-02, -1.775e-01, 1.066e-02, 3.506e-02, 1.113e-01, 1.100e-01, 1.716e-02, 2.100e-02, -5.100e-02, -2.207e-02, 4.375e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(4.611e-02, -1.154e-02, -1.043e-02, -5.287e-02, 4.354e-02, -3.766e-02, -2.414e-02, -8.335e-02, -7.951e-02, 4.186e-02, -1.395e-02, -7.005e-02, -1.561e-02, 2.094e-02, 2.470e-02, 1.472e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(5.728e-02, -1.806e-03, -6.858e-04, 1.933e-03, -2.338e-03, -4.773e-04, 1.937e-02, -2.183e-01, 1.331e-01, -3.097e-03, -3.133e-01, -9.996e-03, -1.516e-01, 3.125e-02, 1.431e-01, 8.657e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-1.259e-01, 7.425e-02, -8.826e-03, 3.552e-02, -6.186e-02, 7.528e-02, 1.588e-01, 7.814e-02, -1.166e-01, 2.719e-02, 6.941e-02, 6.609e-02, 3.659e-02, 2.139e-02, 2.073e-02, -3.993e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-3.232e-01, -2.013e-02, 8.590e-02, -1.463e-02, 5.551e-02, -1.047e-02, -4.003e-03, -2.885e-01, 2.363e-01, -3.020e-03, 2.038e-01, -2.916e-01, -5.574e-02, 1.716e-02, 3.116e-01, 1.265e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.168e-01, 7.994e-04, 3.099e-02, -2.772e-01, 3.014e-03, 1.756e-03, -1.534e-02, 1.492e-01, -1.056e-02, -3.471e-02, 2.990e-03, 9.804e-03, -3.956e-02, -4.204e-02, 1.027e-02, 6.275e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(3.859e-02, 3.996e-02, 1.897e-01, -3.676e-03, -1.272e-02, -5.873e-03, 1.357e-01, 1.559e-02, -1.408e-02, 1.076e-02, 1.084e-01, -6.236e-03, 2.281e-02, -6.495e-02, 5.300e-02, -1.966e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(4.645e-02, 1.167e-01, -1.735e-02, -1.275e-01, -2.509e-03, -9.021e-02, -1.592e-01, 1.113e-02, -4.219e-03, -1.279e-01, -3.427e-01, 2.624e-01, 3.981e-03, -3.616e-02, -5.333e-02, -7.544e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(1.736e-02, 9.631e-02, -1.087e-01, -2.990e-02, 3.328e-02, 1.749e-01, 1.736e-02, -1.216e-02, -6.914e-02, 1.775e-01, -2.798e-02, -2.237e-02, 5.944e-02, -3.460e-02, -2.479e-02, 4.981e-03), r4);\n\tr5 = MulAdd(s0_1_0, M4(1.460e-02, 9.755e-02, -1.916e-02, 1.675e-01, 2.091e-02, -1.810e-02, -2.602e-02, -1.069e-01, -7.238e-02, -4.035e-02, -1.407e-02, -6.356e-02, 2.367e-02, 9.626e-02, 2.812e-02, 9.679e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-1.999e-02, -1.871e-03, 1.584e-01, -9.505e-02, -1.268e-01, 2.502e-02, -5.464e-02, 1.011e-01, 2.101e-01, 5.085e-02, 4.019e-02, -2.585e-02, -2.598e-01, -1.009e-02, -1.508e-01, -4.742e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(7.839e-02, -3.292e-01, -2.914e-03, 7.789e-02, 1.715e-03, -8.798e-02, -7.113e-01, -3.972e-02, -1.950e-01, -3.131e-01, 5.055e-01, 5.815e-02, 7.007e-02, -3.862e-02, -6.600e-02, 9.525e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-2.423e-01, 7.221e-02, -1.489e-01, 2.087e-01, 9.568e-02, -3.105e-02, -2.049e-01, 1.644e-02, -1.681e-01, -1.784e-02, -3.510e-01, -1.922e-01, 1.893e-01, 6.440e-02, 1.813e-01, 4.089e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-2.059e-01, -6.250e-01, 7.426e-02, 1.615e-01, 1.391e-02, -1.520e-01, -3.038e-03, 3.949e-05, 4.567e-03, 2.058e-01, 7.334e-02, -1.224e-01, 1.279e-01, -1.693e+00, 8.276e-02, 1.529e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-4.847e-02, -3.597e-02, -4.693e-02, -1.410e-02, -3.791e-02, -1.277e-02, -2.858e-01, 5.365e-02, -3.032e-02, -6.031e-02, 5.257e-02, 7.393e-02, -3.336e-03, -4.846e-02, 2.026e-01, -5.359e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(-1.860e-03, -6.866e-02, 1.713e-02, 1.735e-02, 1.814e-01, -5.254e-02, -8.870e-02, 3.558e-03, 1.989e-01, 4.618e-01, 2.901e-02, 4.076e-02, -2.934e-01, -9.791e-02, 6.963e-02, -8.174e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(2.279e-02, -6.066e-01, 1.227e-01, -9.152e-05, -2.282e-02, -2.391e-01, 3.620e-02, 3.480e-02, -1.889e-01, -5.271e-01, -1.044e-01, -4.652e-03, -6.905e-02, 4.189e-01, -8.613e-03, 7.056e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-3.598e-02, -3.398e-03, 9.010e-02, 2.081e-01, 4.745e-02, 3.970e-02, -5.282e-02, -1.588e-01, -4.115e-02, 1.672e-01, 6.627e-03, 9.693e-02, 5.228e-01, 2.806e-01, 6.988e-02, 1.325e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(2.011e-02, 1.562e-03, -2.296e-01, 7.211e-02, 2.376e-01, -3.331e-02, 1.449e-01, 1.974e-01, -4.585e-02, 1.292e-02, 1.893e-01, 3.264e-02, 8.288e-02, 5.993e-02, 5.067e-01, -5.386e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(-3.955e-02, -1.967e-01, 2.681e-01, -1.875e-01, -5.840e-01, -2.900e-01, -6.523e-01, -2.060e-02, -3.635e-01, 4.679e-02, -1.557e-01, -2.673e-01, 2.269e-01, 1.313e-01, 4.346e-02, 7.832e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(2.605e-01, 2.218e-03, -1.146e-02, 3.272e-02, 5.376e-02, 1.727e-02, 1.616e-01, 7.462e-02, 5.307e-02, -3.314e-02, -1.176e-01, -1.928e-02, -4.578e-02, 1.243e-02, -2.370e-01, -1.720e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-3.888e-02, 2.154e-02, -2.661e-02, -3.657e-01, 5.149e-02, -2.237e-02, -1.654e-02, 1.045e-01, 1.211e-01, 2.869e-01, -1.187e-02, -9.020e-02, -1.100e-01, -1.825e-02, -2.354e-03, -1.399e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(9.662e-03, 3.420e-04, -5.576e-02, -7.708e-03, 5.585e-03, -4.137e-02, 6.928e-02, -1.269e-02, -2.144e-02, -1.550e-02, -2.201e-02, -5.645e-04, 2.413e-02, -5.415e-02, -7.974e-02, -1.856e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-3.095e-01, -6.324e-02, 7.523e-02, 3.023e-02, -2.488e-02, 2.596e-01, 5.647e-02, -2.177e-03, 8.366e-03, -1.071e-01, 9.140e-02, 2.936e-02, 3.962e-02, -1.267e-01, -5.147e-03, -2.112e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(-1.091e-01, 2.278e-01, 1.605e-01, -2.296e-02, 1.472e-02, 9.087e-02, 3.759e-02, -1.325e-02, 1.007e-01, -1.618e-02, 2.950e-02, 1.403e-03, 7.134e-03, -8.857e-02, 1.605e-02, -1.041e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(8.674e-02, 1.018e-02, -2.063e-02, -2.796e-02, -2.179e-02, 8.793e-03, -6.460e-03, 2.613e-02, 9.019e-02, -1.621e-02, -1.215e-02, 8.673e-02, -5.487e-02, -4.986e-02, 5.280e-02, 1.695e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-2.218e-01, -1.708e-02, -3.682e-01, 8.391e-02, -1.504e-01, 2.489e-02, 4.830e-02, 7.649e-02, 2.783e-03, -4.478e-02, 1.753e-01, 1.611e-01, -5.488e-01, -3.720e-02, -6.083e-01, 2.549e-01), r6);\n\tr7 = MulAdd(s0_1_2, M4(1.187e-01, -8.607e-02, 1.412e-01, 9.243e-02, -3.815e-03, 9.864e-02, 8.700e-02, 4.395e-02, 2.849e-01, 7.221e-02, -1.813e-02, -1.972e-02, 1.655e-02, -1.540e-01, -5.813e-02, -5.583e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(2.935e-01, -1.792e-02, -2.997e-01, 6.461e-02, -6.680e-02, 8.392e-03, 7.154e-02, 2.596e-01, -1.167e-01, 3.161e-02, 1.519e-01, 2.980e-01, -4.128e-01, -1.931e-03, -5.604e-03, -1.846e+00), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.646e-02, -2.259e-01, -3.193e-02, -1.322e-01, 1.378e-02, -1.872e-02, -4.217e-03, -2.084e-02, -2.374e-02, 9.078e-02, 5.155e-03, 8.814e-02, -4.781e-02, -6.926e-02, 9.304e-02, -3.884e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.353e-02, 1.167e-01, -7.485e-02, -1.637e-02, -1.467e-02, -1.330e-02, -4.322e-02, -4.910e-03, 4.068e-03, 1.170e-03, -3.370e-01, 4.334e-02, -8.788e-05, -5.821e-02, -1.510e-02, -1.677e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(6.918e-03, 5.304e-01, 1.525e-01, 1.214e-01, -5.189e-02, -9.514e-02, -6.801e-02, -3.345e-02, 1.544e-02, 4.393e-02, 3.857e-03, -1.599e-01, 3.489e-02, -5.565e-01, -3.080e-01, -1.654e+01), r3);\n\tr4 = MulAdd(s0_2_0, M4(6.671e-02, -5.351e-01, -6.530e-02, -3.896e-02, -1.132e-02, 9.116e-02, 2.297e-02, 1.585e-02, 8.497e-04, 3.086e-02, 3.775e-02, -9.004e-04, 3.630e-02, -1.167e-03, -8.499e-02, 3.643e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(6.281e-02, 3.607e-04, -9.345e-02, 2.246e-02, -8.520e-03, -3.473e-03, 2.158e-02, 4.676e-03, 9.576e-03, -9.878e-04, -2.219e-03, 8.181e-02, 6.315e-02, 4.629e-02, -2.938e-02, 1.130e-01), r5);\n\tr6 = MulAdd(s0_2_0, M4(2.182e-03, 1.981e-02, 3.624e-01, -4.569e-02, 4.635e-02, 2.515e-02, 7.041e-02, -3.046e-02, -1.044e-01, 5.793e-03, 7.281e-02, -1.028e-02, -2.802e-01, 7.558e-03, -2.376e-01, 4.820e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-3.515e-01, -9.651e-01, -3.292e-01, 1.283e-01, 9.822e-02, 7.673e-02, -7.603e-02, -4.289e-03, 7.353e-02, 2.553e-01, -1.625e-01, -2.770e-02, 7.934e-02, -3.036e-01, -1.673e-01, -1.284e-01), r7);\n\tr0 = MulAdd(s0_2_1, M4(-1.727e-01, -3.625e-02, -2.640e-01, -7.410e-02, -2.178e-02, 3.172e-02, 9.945e-02, 1.265e-02, -1.149e-02, 1.533e-03, -3.234e-02, 2.000e-01, 5.936e-01, 2.684e-02, 1.391e-01, 1.444e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(2.388e-02, -6.971e-02, 1.082e-01, 1.088e-01, -3.879e-02, -6.729e-03, 1.380e-02, -2.625e-02, -1.727e-01, 2.584e-02, -1.716e-02, -1.049e-01, 2.855e-01, -1.186e-01, 3.154e-01, 4.472e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.554e-02, -2.100e-03, 5.514e-02, 1.219e-01, 2.287e-03, -2.092e-02, -1.149e-01, -3.346e-02, -8.936e-03, -2.425e-02, -3.212e-02, 1.560e-02, -1.976e-02, 4.926e-02, -1.341e-01, -3.995e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-5.713e-01, -5.939e-01, 2.828e-03, 4.727e-02, 1.468e-02, 3.272e-02, 9.397e-02, 1.395e-02, -2.253e-02, 1.534e-01, 1.113e-02, -1.073e-01, -3.117e+00, -1.496e+00, 4.717e-01, -1.195e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(1.773e-02, 2.279e-01, -4.744e-02, -3.842e-02, -2.235e-02, 1.940e-01, -2.917e-02, 3.723e-03, 7.983e-02, -6.581e-02, -6.080e-02, -9.313e-03, -5.462e-02, 4.633e-02, 8.608e-03, -6.817e-04), r4);\n\tr5 = MulAdd(s0_2_1, M4(3.212e-02, 4.792e-03, 8.225e-02, 7.189e-02, -1.907e-02, -2.345e-04, 3.882e-02, -1.852e-02, 1.101e-01, -3.118e-02, 3.078e-02, 1.416e-01, -3.614e-01, 7.161e-02, -6.310e-02, 4.257e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-2.163e-01, -3.284e-02, 8.551e-03, -5.817e-02, 8.157e-02, -1.144e-02, -3.207e-02, 5.129e-02, -7.211e-02, 3.453e-02, -7.822e-02, -5.734e-02, 5.236e-01, 4.460e-01, 3.984e-01, 2.710e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(-2.156e-01, 1.942e-01, -1.218e-01, 1.804e-01, -8.827e-02, -1.480e-02, 3.908e-02, 1.838e-02, 9.346e-02, -4.446e-02, 2.385e-01, 2.038e-03, -8.923e-01, 1.147e-01, -1.096e+00, 1.141e-01), r7);\n\tr0 = MulAdd(s0_2_2, M4(2.981e-02, 6.982e-03, -2.152e-01, 1.814e-02, -2.038e-02, -7.310e-03, 2.490e-03, 1.994e-03, 1.497e-01, 1.051e-02, -7.277e-02, 2.607e-02, -1.819e-01, -1.118e-02, 1.067e-01, -1.418e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-1.209e-01, -8.179e-02, -8.706e-02, -1.203e-01, 7.778e-04, 1.095e-02, -1.827e-02, 1.629e-02, 5.691e-02, 3.333e-02, -3.230e-03, 9.453e-02, 4.816e-02, -3.358e-02, 4.043e-02, -3.815e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.972e-02, 5.087e-02, -1.530e-01, 1.369e-03, 8.273e-04, 1.152e-02, 4.393e-02, 6.818e-03, -8.051e-03, -2.497e-02, -3.937e-02, -1.447e-02, -1.644e-02, -6.418e-02, 1.546e-01, -2.972e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(1.471e-01, 2.580e-01, 7.594e-02, 5.366e-03, -5.951e-02, -7.058e-03, 2.142e-02, -2.816e-02, -1.274e-01, 6.605e-02, 3.903e-02, 5.722e-03, -6.482e-02, -1.336e-01, 3.364e-03, 7.329e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(6.614e-02, 6.234e-02, -1.444e-02, -1.989e-02, -8.267e-03, -6.621e-02, -1.714e-02, -6.981e-03, 2.716e-02, -1.402e-02, -2.604e-02, 1.414e-02, 8.452e-02, -5.949e-02, 1.209e-01, 4.843e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(2.852e-02, -3.080e-02, -5.450e-02, -1.193e-02, 5.441e-03, 3.003e-03, 3.044e-03, 4.073e-02, 4.458e-02, 4.251e-03, -2.702e-02, -6.800e-02, 1.214e-01, 3.549e-02, 6.645e-02, 1.598e-01), r5);\n\tr6 = MulAdd(s0_2_2, M4(-2.592e-01, 4.497e-02, 5.806e-01, -4.179e-02, -5.569e-02, 2.123e-02, -8.170e-03, -2.617e-02, 7.107e-02, 6.274e-02, 2.769e-01, -8.942e-03, -2.408e-01, -1.482e-01, -3.723e-01, 1.300e-01), r6);\n\tr7 = MulAdd(s0_2_2, M4(-1.889e-01, -1.374e-01, 9.441e-02, 8.728e-03, 6.441e-02, -5.632e-02, 3.773e-02, -1.888e-02, 1.642e-01, -8.571e-02, -3.577e-03, -7.983e-02, 1.146e-01, 9.068e-02, -6.636e-02, 1.388e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-1.894e-01, -2.471e-02, 1.334e-01, -1.034e-01, 4.213e-02, -4.011e-02, -2.480e-02, 1.723e-01, -3.966e-02, 2.383e-02, -1.364e-01, 5.483e-02, 1.179e-02, 2.334e-02, -5.085e-02, 5.396e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-6.339e-02, 2.918e-03, -2.482e-02, -5.884e-01, 2.658e-02, 1.990e-02, -3.003e-02, 3.415e-02, 7.043e-02, -1.715e-02, 1.122e-02, -2.132e-01, 4.591e-02, 4.165e-02, 2.777e-02, -1.449e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.533e-02, 1.521e-03, -3.644e-02, 1.920e-02, 3.451e-02, -2.874e-02, 2.439e-01, -1.341e-02, -1.209e-02, 2.880e-02, -1.134e-01, 5.844e-03, -6.053e-03, 3.724e-02, -8.793e-03, -5.812e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(1.682e-01, 1.532e-01, -4.308e-02, -3.129e-03, 9.658e-02, -1.544e-01, -5.852e-02, 2.496e-02, -2.783e-02, 3.069e-02, -4.466e-02, 2.869e-03, 4.094e-02, -4.339e-02, -4.392e-02, 5.880e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(2.569e-02, -3.560e-02, 4.963e-02, 6.445e-03, 2.649e-02, 6.931e-02, -3.095e-03, -6.588e-03, 5.247e-03, 1.721e-01, 1.489e-02, 5.496e-03, -1.420e-02, -2.064e-01, 3.206e-02, -3.739e-03), r4);\n\tr5 = MulAdd(s1_0_0, M4(-3.990e-02, -1.152e-02, -1.107e-02, -6.750e-02, 8.981e-02, -2.081e-02, -1.291e-02, 1.146e-01, -1.310e-02, -1.054e-02, 1.171e-02, 4.472e-02, 7.091e-03, 1.742e-02, 4.852e-03, 3.251e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-1.670e-02, 2.945e-02, -2.703e-01, 3.152e-01, -1.031e-01, -2.872e-02, 7.259e-02, -1.209e-01, 1.772e-01, 6.397e-03, 1.204e-01, 5.373e-02, 1.536e-01, 3.043e-02, 6.745e-02, 1.482e-01), r6);\n\tr7 = MulAdd(s1_0_0, M4(-4.842e-01, -6.420e-02, -7.713e-02, 3.458e-02, -8.180e-02, -4.250e-02, -1.218e-01, -2.088e-02, -9.091e-03, -4.352e-02, 5.541e-02, 9.082e-02, -5.000e-02, -7.530e-02, -1.130e-02, 1.253e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-3.493e-02, 1.503e-02, 9.501e-02, -2.144e-01, 1.935e-02, -7.264e-02, -8.319e-02, 1.843e-01, -4.696e-02, 4.013e-02, 1.367e-01, -2.471e-02, 5.496e-02, 4.841e-03, 2.489e-02, -7.653e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(4.859e-02, -9.048e-02, 2.345e-02, -4.491e-02, -4.009e-02, 2.839e-01, 4.958e-02, -2.653e-01, -1.258e-01, -4.364e-02, 3.852e-02, -5.094e-02, -8.068e-02, 2.027e-02, -2.383e-03, 1.304e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.368e-02, 1.387e-02, -1.567e-01, -4.746e-02, 2.023e-02, 1.459e-02, 1.114e-01, -2.673e-02, -2.182e-02, -9.389e-03, 3.689e-02, 3.207e-02, -9.372e-03, 8.297e-03, 2.252e-02, 1.055e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-5.543e-02, -5.948e-02, -8.121e-02, 3.779e-02, 4.703e-02, -1.939e-02, -5.813e-02, -1.103e-02, 3.309e-03, 8.112e-03, -1.620e-01, -2.492e-02, -3.896e-02, 1.130e-01, -5.739e-02, -1.988e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(1.900e-02, 8.236e-02, -6.140e-02, 6.543e-03, -5.622e-03, 1.229e-01, -6.613e-02, -1.442e-03, -2.739e-02, 9.222e-02, 4.797e-02, 3.260e-02, 1.616e-02, -1.365e-01, 2.599e-02, -6.119e-03), r4);\n\tr5 = MulAdd(s1_0_1, M4(-9.047e-02, -4.218e-03, 1.562e-02, 7.642e-02, 8.303e-02, 9.552e-02, 9.979e-03, 2.224e-03, 2.241e-02, -4.902e-03, 3.572e-02, -8.671e-03, 5.221e-02, 1.278e-02, 1.550e-03, -7.084e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(3.033e-01, 2.463e-02, -3.257e-01, -2.030e-01, -1.049e-01, -4.485e-02, -3.164e-01, -1.089e-01, -4.130e-01, -5.219e-03, -1.035e-01, -3.718e-02, -9.029e-02, 5.668e-03, -2.777e-03, 4.545e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(1.316e-01, 1.508e-02, -4.361e-02, 5.354e-02, -1.295e-01, 9.551e-02, -1.928e-02, -6.074e-02, 1.195e-01, 6.665e-02, 1.001e-02, -5.266e-03, -2.046e-02, 7.499e-02, 8.263e-02, -7.218e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(4.163e-02, 1.759e-02, 5.368e-02, 3.098e-02, -8.737e-02, 1.278e-02, 1.302e-01, 1.195e-01, 7.776e-02, 1.290e-02, 2.463e-01, 5.093e-02, -6.426e-02, 1.353e-02, 1.857e-02, 2.835e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-7.132e-02, 3.176e-02, 9.528e-03, 6.284e-02, 7.643e-02, -2.967e-02, 1.148e-02, 1.488e-01, 3.286e-02, -5.541e-02, 3.778e-02, 2.133e-01, -3.276e-02, -1.267e-02, 2.316e-03, -4.785e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-9.951e-03, -2.937e-04, 1.776e-02, 1.423e-02, 4.741e-02, -1.874e-02, 3.653e-02, -1.642e-02, -5.528e-03, -2.301e-02, -1.126e-02, -2.446e-02, 1.360e-02, 7.497e-03, 3.200e-02, 9.896e-03), r2);\n\tr3 = MulAdd(s1_0_2, M4(1.002e-01, 1.187e-02, 8.077e-03, 1.206e-02, 5.626e-02, 1.378e-02, 7.809e-02, -2.764e-02, 5.857e-02, -6.188e-02, -1.101e-02, -9.922e-03, -8.971e-03, 1.101e-02, -3.406e-02, -4.899e-03), r3);\n\tr4 = MulAdd(s1_0_2, M4(5.261e-02, 1.221e-01, 2.290e-02, -4.596e-03, 1.635e-02, -5.985e-02, -1.281e-01, -6.761e-03, -5.853e-02, 3.288e-02, 4.381e-02, -7.200e-03, -1.639e-02, -7.356e-02, -7.025e-03, 9.066e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(-1.208e-01, -8.412e-03, -1.676e-03, -2.291e-02, -6.525e-02, -1.623e-03, 7.864e-03, 1.103e-02, -1.594e-02, 4.007e-02, 7.556e-03, -1.879e-01, 5.856e-02, -2.109e-03, 1.168e-02, 1.137e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-2.006e-02, -1.554e-02, -8.339e-02, -3.792e-02, -3.213e-01, 3.643e-03, -7.276e-02, -2.186e-01, 2.339e-02, 2.390e-02, -1.677e-01, 1.439e-01, 1.084e-01, 2.473e-02, 1.828e-01, 4.032e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-1.143e-01, -2.471e-03, -8.163e-03, -7.546e-02, -1.929e-01, -1.985e-03, 1.595e-02, 1.046e-01, 2.603e-03, -2.294e-02, -7.060e-02, -7.630e-02, -1.414e-03, 2.423e-02, 2.409e-02, -1.484e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(1.031e-01, 1.056e-02, -6.223e-02, 1.748e-01, -5.726e-02, 2.033e-02, -7.551e-02, 7.256e-02, 2.287e-01, -2.535e-02, -1.153e-02, 2.072e-01, 1.180e-01, 1.267e-02, 9.054e-02, 2.300e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(7.443e-03, -1.538e-02, -1.657e-02, -5.814e-02, -4.216e-02, -1.964e-01, -4.450e-02, 2.164e-02, 2.375e-02, 9.840e-02, -2.470e-02, -2.577e-01, 5.940e-02, 6.590e-02, 6.937e-03, -2.800e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(4.482e-02, -2.365e-02, 2.594e-01, -1.735e-05, 1.196e-02, -5.851e-03, 9.644e-02, -8.391e-03, 1.269e-02, 4.625e-03, -4.691e-02, -2.434e-03, 2.621e-02, -3.499e-02, -7.291e-02, 2.298e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(8.746e-02, 3.089e-01, -5.293e-01, 6.177e-02, 3.248e-02, -5.545e-02, -1.705e-01, -6.215e-01, -1.151e-01, -8.520e-02, 2.181e-02, 3.308e-02, 6.277e-02, 2.111e-01, -3.245e-02, 1.150e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(4.329e-02, -4.196e-01, 5.533e-02, 3.262e-02, 3.988e-02, 2.999e-01, -8.540e-02, -1.355e-03, -3.676e-02, 6.359e-02, 2.195e-02, -6.885e-03, -7.108e-05, -1.406e-01, -3.209e-02, -1.258e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-3.248e-02, -1.678e-02, -1.122e-02, 9.423e-02, 7.891e-02, 2.826e-02, -1.864e-02, 9.368e-02, -8.885e-02, -2.500e-02, -1.355e-02, -4.893e-02, 3.961e-02, -1.335e-02, -2.050e-02, 6.374e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(1.073e-01, -4.105e-02, -4.344e-01, 2.715e-01, -2.430e-01, 1.466e-02, -2.271e-01, -4.794e-02, 1.098e-01, 1.003e-01, -2.529e-01, 1.011e-01, 6.508e-02, 3.485e-02, -1.554e-01, 2.434e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(-5.573e-01, 4.917e-02, -4.919e-01, -6.256e-02, -1.945e-01, 8.357e-02, -1.090e-01, 9.208e-02, -2.352e-01, -2.111e-01, -4.779e-02, 1.067e-01, -7.734e-03, -8.010e-02, 4.818e-02, 6.766e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-4.598e-02, -1.640e-02, 2.106e-01, 8.864e-02, 2.182e-02, -2.294e-02, -1.228e-01, -4.052e-02, -3.874e-01, -4.863e-02, -3.880e-01, -2.682e-01, -1.371e-01, 6.966e-03, -1.372e-01, -2.673e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.061e-01, -1.067e-02, -1.339e-02, -3.351e-01, 5.580e-02, -1.578e-01, -9.777e-02, -1.882e-02, 6.842e-03, 4.919e-01, 1.134e-03, -1.441e-01, 1.424e-02, 5.614e-02, 8.400e-02, 1.624e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(3.750e-02, -3.379e-02, -4.131e-02, -1.534e-02, 3.110e-02, -8.846e-02, -1.228e-01, 9.812e-03, 5.530e-02, -5.988e-02, 1.273e-01, 1.530e-02, 1.433e-03, 1.721e-03, -2.241e-02, 6.477e-03), r2);\n\tr3 = MulAdd(s1_1_1, M4(-3.104e-02, -3.397e-02, -5.931e-02, 2.107e-02, 1.575e-01, 5.981e-02, -3.403e-02, 4.691e-02, 1.446e-01, 2.878e-02, 7.297e-02, -3.675e-04, 1.535e-03, -7.479e-02, 1.589e-01, -2.656e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(-5.790e-02, 2.702e-01, -1.041e-02, 4.406e-02, 8.246e-02, -1.414e-01, -4.466e-02, -2.364e-02, 5.662e-02, -3.363e-01, 4.794e-02, 2.682e-02, 8.874e-03, -1.117e-01, -1.181e-02, 1.482e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-1.490e-02, 3.681e-02, -2.886e-02, -5.135e-02, -6.068e-02, -6.452e-05, -5.433e-02, 7.125e-02, 7.306e-02, 4.095e-02, -2.020e-02, 8.818e-02, -2.486e-03, 3.630e-02, 4.345e-02, -5.075e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(-5.660e-01, -1.974e-02, -1.551e-01, -4.255e-02, -2.948e-01, -1.025e-01, -6.087e-03, 1.619e-02, -1.370e-01, 9.001e-02, -2.615e-02, 7.629e-02, -1.202e-02, -5.967e-02, 2.493e-01, -1.572e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-3.256e-02, -2.746e-04, -8.414e-01, -7.360e-02, -2.640e-01, 6.394e-02, -1.348e-01, -1.067e-01, -5.955e-03, 5.118e-01, -2.085e-01, -3.616e-01, 2.734e-01, 1.216e-01, -1.025e-01, 7.886e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-9.377e-02, -4.261e-03, -1.076e-01, -4.882e-02, 1.239e-01, -6.804e-03, 3.893e-01, 2.115e-02, -1.633e-01, 1.972e-02, -2.022e-01, -8.484e-02, 8.239e-02, 2.277e-03, 1.714e-01, 4.242e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-1.130e-01, 2.529e-01, -2.946e-02, -6.520e-02, -5.891e-02, -6.081e-02, 2.239e-02, -1.297e-01, 8.294e-02, -4.275e-02, -4.975e-02, 5.688e-02, 6.463e-02, -5.740e-02, 2.317e-02, -8.605e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(4.842e-02, 4.688e-03, 9.004e-02, -4.446e-02, -5.448e-03, -4.127e-02, -5.512e-02, 1.386e-02, 2.571e-03, 1.918e-02, -1.013e-01, -9.133e-02, 1.815e-02, -5.778e-03, 2.584e-02, 3.038e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(1.014e-01, 2.560e-02, -4.560e-02, -7.746e-03, 2.057e-02, 4.453e-02, 4.635e-02, 1.740e-02, 5.335e-01, -7.075e-02, -3.021e-02, 3.324e-03, -1.103e-01, 4.649e-03, -4.307e-03, -4.227e-03), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.813e-02, -2.159e-01, -8.851e-03, -1.443e-02, -1.181e-01, 2.860e-01, 6.352e-02, 2.862e-02, -2.683e-02, 2.045e-01, -1.076e-01, 1.778e-04, 4.020e-02, 7.856e-02, 1.947e-02, -3.527e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(6.052e-02, -3.857e-02, -3.311e-02, -2.665e-05, 4.496e-03, 4.990e-02, -4.158e-03, 1.053e-01, 1.285e-01, -1.233e-01, -3.660e-02, 6.070e-02, 5.241e-02, 1.068e-02, 6.139e-03, 6.961e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-1.144e-03, 2.425e-02, 1.506e-02, -2.145e-01, -4.578e-01, 4.602e-02, -5.033e-01, -1.312e-01, -2.405e-02, 2.107e-02, 1.596e-01, 1.244e-01, -1.504e-01, -4.488e-02, -2.608e-01, 1.683e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(-3.157e-01, -1.441e-01, -2.594e-01, -2.174e-01, -1.517e-01, -6.519e-02, 1.428e-02, 8.379e-02, 7.564e-02, -2.131e-02, 1.822e-01, -1.056e-02, 1.646e-01, 1.653e-01, 1.268e-04, -2.733e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-3.723e-02, -1.404e-02, -8.540e-02, 3.500e-01, -1.354e-01, 2.155e-03, 1.105e-01, -1.230e-01, 5.303e-02, -6.954e-03, -1.461e-01, -1.424e-01, 2.650e-02, 1.821e-02, -9.581e-02, -4.553e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(-2.814e-02, 3.554e-02, -2.042e-02, -2.134e-02, 3.849e-02, -4.522e-02, -4.289e-02, 9.887e-02, -3.925e-02, -2.760e-02, 1.718e-02, 1.029e-01, 2.593e-02, 8.956e-03, 1.108e-02, -1.686e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-3.282e-03, -1.804e-02, 2.559e-01, -5.370e-03, 5.106e-03, -1.909e-02, -1.859e-01, 6.312e-03, 1.749e-02, 3.421e-04, 1.552e-01, 1.733e-02, 3.169e-03, 1.117e-02, 2.354e-02, 6.186e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(4.078e-02, 1.085e-01, -1.854e-01, 4.640e-02, -2.665e-02, -1.163e-01, 1.642e-01, 1.062e-01, 1.442e-02, 3.323e-02, -4.476e-02, -3.548e-02, 2.074e-02, -5.359e-02, -6.785e-02, 3.845e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(2.580e-03, 1.182e-01, 1.392e-02, 8.563e-03, 1.837e-02, 1.567e-01, 4.072e-03, -4.725e-03, 6.660e-03, 9.871e-02, 7.975e-03, -2.353e-03, 1.056e-02, -4.813e-02, 6.796e-04, 4.116e-03), r4);\n\tr5 = MulAdd(s1_2_0, M4(1.297e-03, -9.015e-03, -2.260e-02, 2.826e-02, 8.144e-02, -5.805e-02, -8.344e-03, 2.402e-01, -3.967e-02, 1.623e-02, 1.630e-02, -8.844e-02, -1.010e-02, -6.216e-03, 7.898e-04, 1.447e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(4.596e-02, -2.267e-02, -4.605e-01, 1.091e-01, 1.473e-02, -3.308e-02, 1.267e-02, 2.520e-02, -1.046e-01, -1.814e-02, -1.531e-01, -2.721e-02, 1.171e-02, 4.079e-02, -9.707e-02, 4.630e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(1.359e-01, 2.331e-01, -1.352e-01, 2.155e-02, 1.253e-01, 1.282e-01, -2.225e-01, 1.246e-01, -1.858e-01, -5.183e-02, 3.522e-01, -6.376e-02, -1.252e-01, -1.933e-01, 1.519e-01, -9.180e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(1.452e-01, 4.214e-05, 3.251e-02, 7.446e-02, -8.323e-02, -2.919e-03, 2.522e-02, -8.113e-02, 1.416e-01, -1.033e-02, 1.348e-01, -5.085e-03, -4.135e-02, -7.516e-03, 5.388e-03, 1.371e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-7.432e-02, -2.536e-02, 2.990e-02, 1.043e-01, -6.755e-02, -4.477e-02, 6.247e-03, 3.011e-01, 1.046e-01, -1.448e-02, 5.550e-02, -7.582e-02, 7.513e-02, -3.553e-02, 1.823e-02, -1.457e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(-2.859e-03, -3.256e-02, 2.097e-01, 1.029e-02, -1.262e-02, 3.197e-02, -6.490e-02, 2.529e-03, 5.624e-03, 1.139e-02, 1.573e-01, -1.939e-02, 2.002e-02, 9.800e-03, -1.910e-02, 4.456e-03), r2);\n\tr3 = MulAdd(s1_2_1, M4(-2.292e-01, -3.724e-02, -1.316e-01, 6.481e-03, 3.129e-02, -1.448e-01, 3.078e-02, -4.567e-02, -3.073e-02, 1.401e-01, 9.534e-04, 2.023e-02, 4.215e-02, 8.354e-02, 7.459e-02, 3.976e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(1.639e-02, -6.715e-02, -1.793e-02, 1.019e-02, -1.801e-02, 2.684e-01, 1.296e-02, 1.195e-02, -7.656e-03, -3.302e-01, -2.826e-02, 1.242e-02, 2.162e-02, -1.486e-01, 8.516e-03, -1.120e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-9.810e-03, -4.117e-03, 3.137e-02, -7.638e-02, 2.282e-01, -3.985e-02, 3.945e-02, 7.032e-02, -1.743e-02, 2.805e-02, 6.323e-02, 2.583e-02, -6.236e-02, 2.476e-02, 2.077e-02, -7.057e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-1.598e-01, 1.477e-02, -1.557e-01, 8.356e-02, -1.819e-01, -6.595e-02, -2.530e-01, -1.147e-01, 2.958e-01, -4.717e-02, -8.560e-02, 9.198e-03, 1.227e-01, 7.667e-02, 4.619e-02, 3.845e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-2.464e-02, 1.909e-01, -2.713e-01, -6.714e-02, 1.303e-01, 2.520e-01, -4.096e-01, 8.797e-02, -3.668e-02, 1.672e-01, 1.996e-01, -4.008e-02, -5.191e-02, -4.425e-01, 1.254e-01, -2.716e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(4.286e-02, 1.462e-03, 5.581e-02, 1.331e-01, -2.328e-02, 6.444e-03, -8.471e-02, 4.794e-02, 4.152e-02, -1.034e-02, 1.984e-01, -6.754e-02, 9.027e-02, 4.153e-04, -4.237e-02, 8.558e-05), r0);\n\tr1 = MulAdd(s1_2_2, M4(4.837e-02, 1.030e-01, -1.873e-02, -2.005e-01, 3.531e-02, -2.935e-02, 6.394e-03, 3.303e-02, -2.327e-02, -3.491e-02, 3.523e-02, -8.523e-02, 2.423e-02, 2.536e-02, -1.162e-02, 7.186e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(3.038e-02, -5.943e-02, 5.015e-02, 3.860e-02, -5.142e-03, -3.340e-03, -9.597e-02, -5.135e-02, -2.076e-02, -6.513e-03, 4.831e-03, 1.072e-02, 1.338e-02, 2.678e-02, 6.213e-02, -9.131e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(9.711e-03, 1.610e-01, -1.635e-02, 5.285e-02, 1.077e-01, -4.057e-04, 5.386e-02, 1.875e-02, -2.305e-02, -4.612e-02, -1.705e-02, -2.992e-02, -3.241e-02, -7.447e-03, 2.983e-02, 7.673e-04), r3);\n\tr4 = MulAdd(s1_2_2, M4(3.540e-02, -4.902e-01, 7.995e-03, 5.751e-03, 6.091e-02, 8.573e-02, -3.552e-02, -1.899e-03, -1.817e-02, -3.364e-01, 1.046e-01, 1.966e-04, -3.957e-02, -2.739e-02, 3.497e-02, -3.740e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.198e-02, 2.091e-03, -3.215e-02, 6.783e-02, 5.743e-02, -1.943e-02, 1.930e-02, 4.791e-02, -4.699e-02, -4.880e-03, 5.499e-03, 4.014e-02, -3.730e-02, -3.480e-03, -1.536e-02, 2.521e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-7.993e-03, 9.793e-03, 3.016e-01, 6.660e-02, 1.655e-04, 1.448e-02, 1.726e-01, -1.129e-01, 2.111e-02, 4.014e-03, -1.662e-02, 3.310e-02, 9.549e-02, 4.528e-02, 1.588e-01, -8.547e-03), r6);\n\tr7 = MulAdd(s1_2_2, M4(-1.431e-01, -2.992e-02, -8.425e-02, 1.413e-02, -9.464e-02, 5.773e-02, 1.186e-01, -1.499e-02, -3.986e-02, -1.597e-01, -4.887e-01, 1.053e-01, 3.325e-02, -1.428e-02, -5.527e-02, -3.808e-02), r7);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-3.920e-02, -8.788e-03, 6.246e-02, 3.174e-02, 2.092e-02, -1.435e-01, -4.840e-02, 5.375e-02, 1.382e-01, -1.023e-01, 5.839e-02, -7.681e-02, -1.123e-01, 2.540e-02, -2.048e-02, -2.416e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.949e-02, 3.251e-02, 2.982e-02, -9.468e-02, -1.164e-01, -8.867e-02, 1.246e-02, 1.095e-02, -1.073e-01, -7.147e-02, -2.395e-02, 9.625e-02, 6.166e-03, -2.990e-02, -5.174e-03, -5.994e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-4.093e-02, -8.715e-02, 7.823e-02, -1.248e-02, -1.266e-01, -1.380e-01, 5.093e-02, -3.766e-02, 3.430e-02, -7.483e-02, 8.146e-03, -1.003e-02, -8.553e-03, 3.495e-02, 1.752e-02, 9.358e-04), r2);\n\tr3 = MulAdd(s0_0_0, M4(5.350e-04, 8.480e-02, 2.281e-02, 5.110e-03, 2.749e-02, -1.285e-01, -4.113e-02, -5.934e-02, -4.861e-02, 8.222e-02, -2.884e-02, 3.394e-02, 9.412e-02, -5.816e-02, 2.628e-02, -4.651e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.018e-02, -1.763e-02, -2.529e-02, 2.296e-02, -2.104e-02, 1.104e-01, -2.275e-02, 5.377e-02, -1.710e-02, -1.906e-01, -5.750e-02, -5.725e-02, 1.975e-02, 7.735e-02, 1.296e-02, 2.945e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(6.133e-03, 1.849e-03, 1.664e-02, 9.202e-02, 4.125e-02, 3.171e-02, 1.279e-02, -8.950e-02, 9.245e-03, -8.685e-03, -1.981e-02, -1.025e-02, -5.508e-02, -9.604e-03, -1.023e-02, 1.602e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-1.539e-02, -4.330e-02, 3.128e-02, 1.859e-02, -3.029e-02, -3.082e-02, -3.547e-02, -4.509e-02, 1.267e-02, 9.418e-02, 2.453e-02, 6.979e-02, 1.200e-02, 1.033e-02, 1.838e-04, 1.422e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(-5.737e-02, 4.683e-02, 3.414e-02, 3.796e-02, -1.551e-02, 8.442e-02, -4.418e-02, -7.257e-02, -6.564e-02, 5.368e-02, 1.176e-03, -4.688e-02, -2.705e-01, -5.368e-02, -2.702e-01, 3.827e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(-2.953e-02, -1.084e-02, -4.071e-02, 9.235e-02, 1.860e-01, -6.031e-01, -1.585e-01, 9.440e-02, 1.244e-02, -2.056e-01, -1.289e-01, 8.572e-02, -4.360e-02, 8.577e-02, 1.859e-01, 2.322e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(4.450e-02, 4.319e-02, -1.667e-02, 1.122e-01, 1.878e-02, 2.170e-02, -6.829e-02, 3.234e-02, 5.668e-02, 1.029e-01, 1.459e-02, 2.283e-02, -2.944e-02, -5.546e-02, 3.371e-02, 2.663e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-1.123e-01, -1.403e-02, -1.152e-01, 2.440e-02, -3.358e-01, 1.221e-01, 9.243e-02, -9.966e-02, -1.810e-02, 5.257e-02, -2.668e-02, -6.914e-03, -1.810e-02, 5.749e-02, -2.475e-02, -1.387e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-1.024e-01, 8.020e-02, 9.735e-02, 6.530e-03, 2.164e-02, 1.291e-01, -3.423e-02, 2.000e-02, 1.133e-01, -5.553e-02, 4.686e-02, 2.441e-02, 2.149e-01, 1.644e-02, -5.166e-02, 2.900e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.454e-02, -1.707e-01, 9.936e-02, 1.642e-01, 9.676e-02, -4.241e-01, -1.099e-01, 4.325e-01, -1.201e-01, -7.916e-02, 7.347e-02, 4.568e-03, -4.171e-03, 6.127e-01, 4.206e-02, 1.872e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(6.453e-02, 4.990e-03, -7.980e-03, 5.692e-02, 7.183e-02, 4.469e-02, -8.153e-03, -1.199e-01, 1.270e-02, 9.408e-02, 3.311e-02, 2.128e-02, -2.387e-01, -5.530e-02, 1.739e-02, -5.119e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-2.592e-02, 3.949e-02, -1.117e-01, -3.100e-01, -7.284e-02, -3.923e-02, 7.369e-02, -2.004e-01, 1.399e-02, -1.161e-01, -1.321e-02, -2.591e-02, 2.330e-01, 5.767e-02, -1.352e-01, 1.669e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(-2.003e-02, -4.389e-02, 1.074e-02, 3.110e-02, 2.971e-02, -1.139e-01, -1.628e-02, 9.793e-03, 8.074e-02, -6.042e-02, 3.044e-02, 5.511e-02, -3.866e-01, 6.414e-02, 1.643e-02, 2.229e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-1.208e-01, -4.044e-02, 1.174e-01, -8.946e-02, -1.283e-01, -3.439e-02, -7.710e-02, 2.161e-01, 4.658e-02, -6.131e-02, 1.759e-01, 1.322e-01, 1.138e-01, -1.398e-02, 1.770e-01, -2.283e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(7.166e-02, -1.992e-02, 4.258e-03, -8.449e-02, 3.943e-02, 3.035e-02, -2.953e-02, -1.442e-02, 1.597e-01, -3.098e-02, -1.302e-02, -4.643e-02, -1.584e-01, -7.658e-03, 1.614e-02, -1.665e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(2.075e-01, -8.949e-02, -2.422e-02, 2.156e-01, -1.889e-01, 1.423e-01, 1.433e-01, 5.653e-02, -5.701e-02, 4.057e-02, 1.415e-02, -1.792e-03, -1.426e-02, 2.359e-02, 1.224e-02, -1.847e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-5.156e-02, 2.374e-03, 3.082e-02, 3.565e-02, 7.339e-02, -2.156e-02, -3.792e-02, -3.555e-02, -9.825e-03, 1.589e-02, 5.690e-02, 1.405e-02, -1.505e-01, 3.182e-02, -2.254e-02, -2.973e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-7.537e-02, 1.594e-01, 4.686e-02, 2.278e-01, -2.695e-02, 7.149e-02, 7.352e-02, 1.601e-01, 5.764e-02, 1.712e-01, 1.780e-02, -2.506e-03, -1.268e-02, -2.831e-02, -8.769e-03, 8.888e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(-4.649e-02, -5.707e-02, -3.523e-03, 7.218e-02, 7.301e-02, -1.576e-02, 1.218e-02, -8.741e-03, -2.056e-02, -2.155e-03, -9.550e-03, 3.978e-02, -3.763e-02, 8.407e-03, 4.814e-03, -1.366e-01), r5);\n\tr6 = MulAdd(s0_0_2, M4(-1.303e-01, 2.760e-02, -2.513e-02, 4.561e-02, -1.090e-01, 4.522e-04, 4.563e-02, 3.471e-02, 1.610e-02, -9.900e-03, 1.489e-01, 1.014e-01, -5.674e-02, -2.352e-03, 2.032e-01, -2.374e-03), r6);\n\tr7 = MulAdd(s0_0_2, M4(1.086e-01, -1.043e-01, 8.185e-02, -2.390e-02, -2.405e-01, 1.217e-01, 1.067e-01, 3.853e-02, 5.300e-02, 2.530e-02, 1.247e-01, 9.233e-02, 2.829e-02, -5.136e-02, -2.581e-02, -3.203e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(3.087e-02, -3.356e-02, 8.750e-02, -4.899e-02, 1.313e-01, -5.224e-02, -1.847e-02, 1.041e-03, 6.495e-04, 2.793e-02, -1.672e-01, 2.622e-01, -8.047e-02, 5.116e-03, 1.643e-01, -2.456e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-8.209e-03, 5.353e-02, 3.151e-03, 7.043e-02, 6.483e-02, 6.392e-02, 2.415e-02, 4.382e-02, 3.406e-02, 4.319e-02, 5.566e-02, 2.413e-02, 8.198e-04, 8.338e-03, -9.210e-05, 7.567e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-2.331e-02, -3.077e-02, -2.028e-02, 2.384e-02, 5.422e-02, -3.838e-01, -9.898e-02, 9.543e-02, -4.976e-03, -1.264e-01, 1.052e-01, 2.352e-02, 6.339e-03, -4.611e-02, -3.112e-02, 2.108e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(4.888e-02, 4.796e-02, -4.050e-02, -3.141e-02, -1.363e-02, 7.100e-02, 7.230e-02, -7.444e-02, -2.776e-01, 6.570e-02, -6.722e-02, 1.061e-02, 3.167e-02, -1.431e-01, 3.972e-02, -4.680e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(2.749e-02, 4.373e-02, -4.194e-03, 2.267e-02, 5.523e-02, -9.906e-02, -1.404e-02, -2.519e-02, 1.454e-02, -2.510e-01, -1.024e-01, -8.466e-02, -3.751e-02, 5.203e-02, 1.696e-02, 5.451e-04), r4);\n\tr5 = MulAdd(s0_1_0, M4(4.212e-03, 1.028e-02, -5.475e-03, 1.851e-02, -7.863e-02, -2.935e-03, -2.732e-03, 4.671e-02, -5.505e-02, 4.292e-02, -2.700e-02, -8.191e-02, -1.721e-02, 3.434e-02, 1.799e-02, -3.460e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-4.329e-02, -2.090e-02, 1.570e-04, 2.068e-02, 6.487e-02, 7.443e-02, 1.584e-02, -3.161e-02, -7.145e-02, -2.736e-02, 4.228e-01, 7.790e-03, -1.668e-03, 3.609e-02, 2.698e-01, -9.516e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(-1.416e-02, -2.523e-02, 2.316e-04, -6.999e-03, -1.770e-02, -8.606e-02, -7.092e-02, -4.778e-03, 4.836e-01, 5.033e-02, -7.152e-02, -3.908e-02, -5.019e-02, 3.096e-02, 4.901e-02, 2.569e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-3.056e-01, 1.457e-02, 4.368e-02, -7.388e-02, -2.714e-01, 3.545e-01, -1.543e-03, -3.109e-01, -6.533e-02, 2.010e-01, 3.243e-01, 2.095e-01, -3.052e-01, -6.551e-02, -2.635e-01, -2.737e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(3.079e-02, -7.953e-02, -7.746e-03, -1.509e-01, -6.005e-02, 2.603e-01, 1.519e-01, 1.239e-02, -1.406e-01, -7.769e-02, 4.192e-02, -2.205e-02, 7.300e-02, 1.422e-01, -5.235e-02, -2.063e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-3.564e-01, 2.404e-02, -6.065e-02, 3.326e-02, 7.594e-01, 4.282e-01, -1.695e-01, 2.446e-01, 3.937e-01, 4.090e-02, 1.800e-01, 2.455e-01, 2.839e-02, 4.357e-02, 1.174e-01, 2.570e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(-1.243e-01, -1.772e-01, 5.549e-02, -3.370e-02, 2.607e-01, -1.028e-01, 1.062e-02, 1.980e-02, -5.100e-02, 5.583e-02, -1.672e-01, 6.330e-02, -1.723e-01, 1.077e-01, 9.968e-02, -3.105e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(-2.103e-02, 1.335e-01, -6.674e-03, 1.091e-01, -1.082e-01, -1.139e-01, -1.002e-02, -3.642e-01, -1.606e-01, 7.922e-02, 3.151e-01, -2.001e-01, -9.333e-03, -2.372e-01, -1.376e-02, -1.758e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-3.826e-02, 6.276e-03, 9.940e-03, -1.441e-02, 2.237e-02, -4.502e-02, 7.602e-03, -7.372e-03, 8.520e-02, 7.590e-02, 9.892e-02, -6.137e-02, -2.017e-01, 3.991e-02, -5.776e-02, -2.971e-03), r5);\n\tr6 = MulAdd(s0_1_1, M4(-1.026e-01, -8.241e-02, 6.176e-02, -6.663e-02, -1.111e-01, 2.144e-01, -7.809e-03, 1.946e-01, -1.434e-01, -1.660e-01, -2.084e-01, -2.367e-01, -1.699e-01, -1.480e-02, -1.561e-01, 2.173e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(1.293e-01, -1.450e-01, -2.058e-01, 1.124e-01, -7.438e-02, -2.263e-01, -1.974e-01, -2.065e-01, -3.916e-01, -1.232e-01, 2.757e-01, 1.841e-01, -6.228e-01, -2.432e-01, 1.655e-01, -7.457e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-1.363e-01, -2.005e-02, -3.869e-02, -1.024e-02, 1.435e-01, 1.197e-01, 1.066e-02, -2.241e-02, 2.207e-02, 1.934e-02, -2.199e-01, -3.351e-02, 1.277e-01, 2.173e-03, -2.404e-02, -1.229e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(5.736e-02, -3.678e-02, -4.469e-02, -1.542e-01, -1.146e-01, -6.996e-02, 1.787e-02, -1.908e-02, 7.132e-02, 1.721e-01, -5.263e-02, 5.367e-02, -1.211e-01, -7.490e-02, 8.502e-02, 4.022e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(7.546e-02, 4.029e-02, 9.943e-02, 2.040e-01, -1.473e-01, -2.425e-02, 5.872e-03, -4.484e-01, 5.751e-02, 3.191e-02, 5.815e-02, -1.047e-01, -1.608e-03, -4.080e-02, -2.938e-02, 2.241e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.568e-01, 3.926e-02, 1.842e-02, -2.993e-02, -1.797e-01, -5.014e-02, 1.046e-02, 5.038e-02, 4.490e-02, -3.208e-02, 4.796e-02, -5.036e-02, 1.355e-02, 4.325e-02, -6.053e-02, -5.574e-03), r3);\n\tr4 = MulAdd(s0_1_2, M4(-4.437e-02, 8.760e-02, -2.340e-02, -1.888e-02, 2.863e-02, 3.348e-01, 4.549e-02, 9.618e-02, 9.731e-02, -6.548e-02, -2.332e-01, -4.604e-02, -5.601e-02, -1.910e-01, -4.575e-02, -5.389e-03), r4);\n\tr5 = MulAdd(s0_1_2, M4(6.981e-02, 4.692e-03, -3.470e-02, 8.373e-02, -1.321e-01, -3.679e-02, 3.887e-02, 5.475e-02, -5.064e-03, -7.795e-02, -4.838e-02, -3.493e-02, -2.710e-02, 3.256e-03, 5.578e-02, 5.843e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(1.197e-01, -9.827e-02, -2.464e-02, 9.514e-02, 1.160e-01, -4.348e-02, -2.446e-01, 2.605e-02, -2.449e-01, 9.186e-02, 8.072e-02, -1.281e-01, 7.565e-02, 1.502e-02, 3.486e-02, -1.239e-01), r6);\n\tr7 = MulAdd(s0_1_2, M4(1.927e-01, 1.228e-01, 1.086e-01, -2.461e-02, 2.007e-01, 7.536e-02, 3.616e-02, 7.544e-02, -2.491e-01, 5.060e-02, 1.022e-01, -6.176e-03, -3.981e-01, -1.686e-02, 3.995e-02, 4.260e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(1.292e-02, -1.382e-02, -1.431e-02, -1.170e-01, -2.675e-02, 6.137e-02, 1.541e-02, 7.697e-03, -2.218e-01, 5.822e-02, 6.896e-02, -5.522e-01, 8.919e-02, 1.078e-02, 1.183e-01, 1.864e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(2.747e-03, -8.568e-03, 3.947e-03, 8.423e-03, -1.711e-03, -1.958e-02, -2.361e-02, -4.499e-02, -6.339e-02, 4.939e-03, -5.840e-02, -6.337e-02, 4.404e-03, 4.147e-03, 8.277e-03, -8.147e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(3.768e-02, -6.350e-02, -1.078e-01, -5.524e-03, -7.442e-02, -2.167e-02, 8.621e-02, 4.588e-02, -1.498e-01, -1.137e-01, -2.645e-01, 4.569e-02, -2.864e-03, 2.872e-02, -1.222e-02, -1.100e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(5.678e-02, 5.603e-02, 7.245e-03, 4.149e-03, -9.801e-02, -7.459e-03, -1.128e-01, 4.049e-03, 3.777e-02, 7.166e-02, 3.034e-02, -1.011e-01, 7.633e-02, -4.089e-02, 8.163e-02, 9.704e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(1.104e-02, 9.877e-02, -3.834e-03, -1.466e-03, -2.964e-03, 9.535e-02, -2.196e-02, -2.058e-02, 2.732e-02, -5.601e-02, -5.124e-02, -8.326e-03, 3.052e-02, 1.409e-01, -1.434e-02, 4.410e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(1.109e-02, 2.992e-03, -1.200e-02, 1.643e-02, 8.935e-03, -1.192e-02, 8.987e-03, -1.957e-02, 8.229e-02, -1.564e-02, -1.132e-02, -3.132e-02, 2.737e-02, -6.812e-03, 1.591e-02, 6.078e-03), r5);\n\tr6 = MulAdd(s0_2_0, M4(1.189e-02, 3.932e-02, -3.111e-02, -3.347e-02, -1.345e-02, 1.190e-02, -1.400e-01, -4.421e-02, 5.205e-02, -1.124e-01, -1.354e-01, -3.350e-02, 1.667e-01, -1.876e-02, 9.493e-02, -1.423e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(1.492e-02, -7.488e-02, -8.454e-02, -1.803e-02, -1.458e-01, 1.441e-01, 6.728e-02, -3.793e-02, -2.721e-02, -6.127e-02, -2.529e-01, 3.657e-02, 2.439e-02, 6.316e-02, -1.205e-01, 4.388e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(7.526e-02, -7.473e-02, -6.424e-02, -4.061e-02, -5.300e-02, 2.337e-01, 7.833e-02, -2.215e-01, 1.416e-01, 1.307e-01, -2.215e-01, 3.462e-02, -1.936e-01, -5.205e-03, 1.203e-01, -1.948e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-8.071e-02, 7.495e-02, 1.719e-02, 5.550e-02, 4.744e-02, -3.134e-02, -4.326e-02, 2.554e-02, 1.660e-01, -3.932e-02, 1.433e-01, 3.071e-02, -2.660e-02, 1.009e-01, 1.918e-02, 1.195e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-7.786e-02, -3.954e-02, -5.219e-02, 1.230e-02, -4.016e-02, 1.083e-01, -2.323e-01, 1.104e-02, -9.786e-02, -1.443e-02, -2.162e-01, 4.063e-02, 9.272e-03, 1.989e-02, -1.771e-01, 1.939e-03), r2);\n\tr3 = MulAdd(s0_2_1, M4(8.992e-02, -1.346e-03, -9.588e-03, 3.103e-02, -7.043e-02, -1.903e-02, 1.252e-01, 1.265e-02, 3.027e-02, -1.871e-01, 7.002e-02, -5.141e-02, 5.040e-02, -7.164e-02, -2.648e-02, -1.991e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-8.637e-03, -2.315e-02, 4.258e-02, 5.794e-02, 6.884e-02, -2.913e-01, -8.355e-02, -2.861e-02, 4.729e-03, 1.924e-01, 5.879e-02, 1.831e-02, 9.624e-03, 1.595e-01, 4.783e-02, 1.857e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-2.012e-02, 7.068e-03, -7.059e-03, -4.395e-02, -1.769e-02, 8.187e-03, -1.095e-03, 7.505e-02, -1.235e-01, 7.376e-02, -3.239e-02, 1.496e-01, 1.177e-02, -5.590e-05, 3.359e-02, 2.767e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-8.145e-02, 2.918e-02, 8.910e-02, -2.577e-02, 4.753e-02, -1.111e-01, 1.245e-02, 3.655e-02, 5.793e-02, 2.152e-01, 3.265e-02, 5.863e-02, -5.731e-02, -1.788e-01, 1.951e-01, -1.176e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(-1.096e-01, -4.140e-02, 1.706e-01, 7.633e-03, 2.550e-01, -4.108e-02, 1.134e-01, 5.987e-02, 1.666e-01, -7.066e-03, -1.165e-01, -1.095e-01, -1.874e-02, 2.143e-01, -1.066e-01, 2.941e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(7.801e-02, 1.643e-02, 4.442e-02, 4.641e-02, -8.882e-02, 7.801e-03, 5.021e-02, 6.726e-02, 1.863e-02, 3.759e-02, 7.746e-02, 1.417e-01, -3.350e-02, -1.335e-02, 2.101e-02, -1.889e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.043e-02, 4.627e-02, 6.385e-03, 6.375e-02, 7.498e-02, -8.378e-02, -2.558e-02, -1.161e-01, -1.913e-01, -1.314e-01, 3.799e-03, 1.087e-02, -1.146e-01, 2.531e-02, 3.612e-02, 1.372e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(6.644e-02, 1.857e-02, 7.268e-03, 6.761e-02, -3.279e-02, 1.099e-02, 1.319e-01, -8.847e-02, 2.205e-03, -1.662e-02, 1.528e-01, 1.030e-02, -1.772e-02, 6.518e-02, -6.722e-02, -3.213e-03), r2);\n\tr3 = MulAdd(s0_2_2, M4(5.916e-02, 1.256e-02, 8.873e-03, -9.907e-03, -1.291e-02, 1.546e-02, -3.979e-02, 1.667e-02, 3.304e-04, 1.379e-01, 6.283e-02, 3.102e-02, 1.763e-01, -5.327e-02, -7.885e-02, -5.270e-04), r3);\n\tr4 = MulAdd(s0_2_2, M4(4.088e-02, 6.254e-02, 9.533e-03, -1.374e-02, -2.109e-02, 1.507e-01, 1.175e-01, 1.204e-02, -2.422e-02, 1.738e-01, 7.970e-02, -1.141e-02, -1.398e-02, 1.753e-01, -2.800e-02, -1.823e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-2.664e-03, 2.645e-03, 1.047e-02, 6.923e-03, 1.191e-02, 1.802e-02, -1.536e-02, 1.228e-02, 2.590e-02, -4.160e-02, -3.720e-03, 2.970e-02, 2.471e-02, 2.823e-02, 3.610e-02, 8.859e-04), r5);\n\tr6 = MulAdd(s0_2_2, M4(6.662e-02, 1.884e-02, -5.208e-02, 1.819e-02, 5.286e-02, -3.951e-02, -4.800e-02, 6.700e-02, 2.190e-01, -4.832e-02, -2.122e-01, 5.293e-02, 2.089e-02, -2.725e-02, 1.133e-02, -5.145e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-4.275e-02, 2.272e-02, -6.926e-02, -6.750e-03, 9.315e-02, 1.254e-01, -2.582e-02, -2.505e-02, -2.598e-02, 7.394e-02, -1.135e-01, 2.844e-02, 5.367e-03, 3.761e-02, 8.285e-02, 7.346e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-6.922e-03, 1.161e-02, -8.211e-02, 4.413e-04, 8.318e-02, 1.063e-02, -2.530e-01, -1.342e-01, -9.942e-02, -3.059e-02, -3.187e-02, -3.696e-02, 1.491e-01, -8.275e-03, -1.182e-02, 1.605e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.412e-03, 1.548e-01, 9.337e-04, -4.966e-02, 1.875e-02, -8.419e-02, -4.989e-03, -5.211e-02, -1.908e-02, 8.250e-02, -7.648e-03, 5.798e-02, 2.063e-03, -2.315e-04, -9.747e-03, 2.242e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(-4.344e-03, -1.927e-03, -9.095e-03, 1.128e-02, 4.285e-03, -5.052e-02, -7.620e-03, 1.427e-02, -2.458e-02, -1.799e-02, -1.601e-01, 1.354e-03, -3.834e-03, -9.739e-03, -6.909e-02, -4.832e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(-5.815e-02, -1.889e-01, 7.057e-03, 6.535e-02, -1.671e-01, 9.101e-02, -6.357e-02, -4.407e-02, 7.264e-04, -1.115e-01, 6.702e-02, -2.643e-02, -5.353e-02, 1.290e-01, 6.793e-02, 3.333e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-2.726e-02, -2.970e-01, -4.471e-04, -3.761e-03, 1.207e-02, 3.679e-01, -4.570e-02, 2.683e-03, -1.509e-02, -3.379e-01, -8.521e-03, -6.744e-04, -2.042e-02, -7.062e-02, -3.176e-02, -2.800e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-8.134e-03, 1.753e-02, 6.215e-03, -1.278e-02, -1.141e-02, -1.167e-02, 1.411e-02, -1.710e-01, -3.078e-03, 1.683e-02, 4.479e-03, -4.312e-02, -1.195e-02, -4.221e-03, -1.414e-02, 7.534e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(3.541e-02, 4.120e-02, -2.298e-01, 8.400e-02, 7.213e-03, 2.503e-02, -1.049e-01, 1.051e-01, 3.189e-02, 4.172e-02, -2.147e-01, 1.308e-02, -9.014e-02, 2.625e-02, -1.189e-01, -6.772e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(1.639e-01, 1.865e-01, 8.356e-02, -1.597e-01, -1.347e-02, -1.173e-01, 1.729e-01, 1.409e-02, 1.372e-02, 6.188e-02, 6.763e-02, -1.474e-01, -1.050e-01, 1.527e-02, 1.638e-01, -7.429e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(2.832e-02, 1.356e-02, 2.336e-03, 1.408e-02, 7.705e-02, -5.614e-02, -4.763e-01, -1.077e-01, -7.543e-02, 1.005e-02, -5.057e-01, -1.058e-01, 3.923e-02, -1.297e-02, -3.782e-02, -1.128e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(9.491e-02, 2.078e-01, -1.656e-02, -2.526e-01, -1.338e-02, -1.758e-02, -1.150e-02, 1.306e-01, 2.510e-02, 1.014e-01, 1.725e-02, -1.191e-01, -4.510e-02, -3.044e-02, -1.892e-02, 7.542e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(-6.041e-03, 2.264e-02, -5.731e-02, 6.368e-03, 9.080e-03, 3.791e-02, -3.185e-02, -2.495e-04, 2.641e-03, -2.828e-02, 2.436e-01, 2.487e-02, -1.900e-03, 3.031e-02, 4.018e-02, -1.468e-03), r2);\n\tr3 = MulAdd(s1_0_1, M4(-1.034e-01, -1.262e-01, 1.220e-01, 5.512e-03, 3.243e-03, -1.073e-01, 1.997e-02, -1.080e-02, -2.043e-02, 7.464e-02, -1.778e-01, 4.335e-02, -7.141e-02, -2.060e-02, -8.773e-03, -1.346e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-3.504e-03, -3.680e-01, 2.888e-04, 8.816e-03, 3.097e-02, -1.551e-01, -5.691e-02, 3.335e-02, -1.232e-01, 1.250e-02, -2.294e-03, -3.747e-02, 2.091e-02, 7.537e-02, 1.877e-02, -1.239e-04), r4);\n\tr5 = MulAdd(s1_0_1, M4(-7.971e-02, 1.264e-02, -4.121e-03, -9.444e-03, -6.323e-02, -1.334e-02, 3.153e-02, -3.249e-01, 2.509e-01, 2.144e-02, -3.112e-03, -2.935e-01, -1.029e-01, -1.257e-02, -2.116e-02, 5.858e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-9.011e-02, 2.973e-02, -5.936e-03, 2.175e-01, 4.001e-02, -6.646e-02, -3.760e-01, -4.780e-02, -6.327e-02, -6.762e-02, -1.089e-01, 7.282e-02, 3.034e-01, -1.623e-02, 2.228e-01, -2.519e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(1.692e-01, -9.449e-03, 5.750e-02, -1.815e-01, 5.350e-02, -6.073e-02, 2.532e-01, -3.760e-01, 1.944e-01, 6.992e-02, 3.012e-01, 1.393e-01, -2.070e-02, -5.977e-02, 2.365e-02, 3.239e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(3.086e-02, 1.007e-02, -1.842e-01, -2.537e-02, -5.996e-02, -4.409e-02, -5.760e-02, -1.370e-02, 1.781e-01, -1.321e-02, 3.038e-02, 2.493e-02, -1.868e-02, -1.103e-02, 3.355e-02, 7.252e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(1.447e-02, 1.104e-01, -9.132e-03, 4.757e-02, -4.516e-02, -1.714e-01, -3.487e-02, -9.519e-02, 6.535e-02, -1.013e-02, 6.323e-02, 1.087e-01, -1.825e-02, -3.063e-02, 2.537e-02, -1.294e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-7.239e-03, 1.106e-02, 5.584e-03, 9.352e-03, 1.178e-02, 1.300e-02, -4.770e-02, 3.658e-02, 3.556e-02, -1.025e-02, 7.025e-02, 2.964e-04, -5.817e-03, -2.217e-03, 1.203e-01, 3.961e-04), r2);\n\tr3 = MulAdd(s1_0_2, M4(-3.234e-02, 3.433e-02, 3.365e-02, 9.801e-03, 1.809e-01, -1.240e-01, -3.027e-02, -2.499e-02, -2.107e-01, 1.461e-01, -1.581e-02, 1.017e-02, -1.065e-02, -2.776e-02, 7.163e-02, 1.219e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(2.781e-03, 2.395e-03, -4.010e-02, 2.781e-03, 2.664e-02, -1.486e-01, -1.300e-01, 8.814e-03, -5.423e-02, 9.491e-02, 1.097e-01, 4.623e-03, -7.765e-03, 1.863e-01, 4.428e-02, -2.582e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-6.870e-03, 2.514e-02, -8.696e-03, 7.782e-03, 6.413e-03, 1.481e-02, -4.379e-03, -5.286e-01, -3.143e-02, 7.998e-02, 1.302e-02, -3.135e-01, 6.239e-03, -3.447e-03, 2.329e-02, 1.948e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-8.735e-02, 1.242e-02, -7.506e-02, 1.637e-01, -1.606e-01, 5.052e-02, -1.858e-01, 8.845e-04, 2.127e-01, -1.883e-03, -7.409e-02, -2.742e-01, -3.147e-02, 1.787e-02, -5.126e-02, 3.952e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(8.039e-02, 3.334e-03, 5.288e-02, 1.747e-02, -1.262e-02, -6.188e-02, -2.362e-01, -7.077e-02, 2.444e-01, 1.199e-01, -1.794e-01, -7.007e-02, -1.557e-02, 7.345e-02, 1.402e-01, 4.624e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-1.686e-01, -8.732e-04, -2.336e-01, -2.878e-01, 1.489e-01, -1.174e-02, 1.276e-03, 2.576e-01, 9.599e-03, -5.080e-03, -3.337e-01, -1.025e+00, -2.887e-02, 1.783e-03, -1.027e-01, 1.596e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(7.287e-02, 1.665e-01, -2.277e-02, 9.546e-03, 9.719e-03, -2.054e-02, 1.559e-02, -3.317e-02, -3.165e-02, -1.753e-02, -2.648e-02, 5.967e-02, -1.121e-02, -9.399e-02, 1.305e-02, 2.635e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(-2.247e-03, 4.682e-02, 5.949e-02, 6.958e-03, 6.097e-03, 5.032e-03, -1.333e-01, -2.496e-03, 1.005e-03, -3.595e-02, 2.821e-02, -1.362e-02, -1.039e-02, 1.212e-02, -2.400e-01, 2.450e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-1.102e-01, -1.439e-01, 1.086e-02, -2.950e-02, 2.182e-02, 1.045e-01, -4.768e-02, -1.071e-01, -3.461e-02, -1.585e-01, 3.780e-02, -1.986e-01, -4.165e-03, -1.544e-01, 1.325e-01, -5.111e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(1.893e-02, -2.541e-01, 6.371e-02, 1.423e-02, 4.468e-02, 5.817e-02, -8.771e-02, -1.271e-03, 2.936e-02, -1.978e-01, 4.071e-02, -5.947e-03, -1.179e-03, -3.078e-02, 4.005e-02, 2.373e-03), r4);\n\tr5 = MulAdd(s1_1_0, M4(-2.666e-02, -9.687e-03, -8.181e-03, -6.573e-03, -2.066e-02, -6.134e-03, 1.523e-02, -1.398e-01, -7.574e-02, -1.615e-02, -7.093e-03, -1.243e-01, 1.875e-02, -8.983e-03, 1.170e-02, 7.159e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(7.938e-02, 5.149e-02, 1.054e-01, -2.636e-02, -4.951e-02, 3.367e-02, -5.008e-01, 4.951e-02, 1.315e-02, 6.475e-03, -1.916e-01, 5.560e-02, -1.859e-01, 2.439e-02, -1.032e-01, -4.663e-04), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.533e-01, 2.229e-01, -2.148e-01, -1.455e-01, -1.199e-02, -4.158e-02, 3.304e-01, -5.904e-02, 1.801e-01, 5.431e-02, -1.344e-01, -2.979e-01, -4.649e-02, -3.337e-02, 1.424e-01, -1.337e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-1.257e-01, -1.634e-02, -8.063e-02, 3.462e-02, 6.331e-02, -1.422e-02, 1.941e-02, 3.761e-01, 2.267e-01, 2.880e-02, -2.954e-01, 2.974e-01, 5.214e-02, -3.115e-02, -2.414e-01, 9.556e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-2.748e-02, 1.997e-01, -5.298e-02, -3.200e-02, 1.377e-03, 1.083e-01, 3.464e-02, -1.392e-01, 6.400e-02, -9.734e-02, -5.729e-02, -9.488e-02, 1.001e-01, -1.585e-02, 3.064e-02, -2.209e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.495e-03, 3.147e-02, 4.090e-02, 1.322e-02, -7.449e-02, -3.274e-02, 7.879e-02, -9.899e-03, 8.312e-04, 3.532e-02, 1.689e-01, -3.890e-02, -8.455e-03, -2.508e-02, 5.195e-02, 1.937e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-4.675e-02, 1.519e-01, -1.956e-01, 3.000e-02, -1.227e-02, 3.002e-02, 1.132e-01, -1.715e-02, -6.341e-01, -4.012e-01, 5.245e-02, 3.445e-01, -2.451e-01, -3.309e-02, 4.131e-02, 8.856e-03), r3);\n\tr4 = MulAdd(s1_1_1, M4(2.833e-02, -1.742e-01, 2.872e-02, 4.936e-03, -1.948e-03, -1.262e-01, 6.193e-02, 1.009e-02, 7.443e-02, -1.238e-01, -4.723e-02, -1.615e-02, 2.960e-02, 7.004e-02, -6.897e-02, -2.217e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-2.471e-01, -6.453e-02, -3.681e-02, -1.298e-01, 9.698e-02, 2.141e-02, 2.865e-02, -1.473e-01, -1.521e-01, -5.151e-02, -4.905e-02, -7.593e-01, -6.378e-02, 1.564e-02, 2.590e-02, 1.649e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(2.541e-02, 1.794e-02, -8.782e-02, 1.088e-01, 1.067e-01, -4.369e-02, 3.016e-01, -2.154e-01, 4.073e-01, 4.104e-02, 8.395e-02, -3.366e-02, 1.025e-01, -1.168e-01, 2.629e-01, 2.297e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-1.090e+00, -3.274e-01, -3.019e-02, -6.711e-02, -5.665e-02, 3.538e-01, -2.602e-01, -2.000e-02, 1.738e-01, -3.895e-01, -5.096e-01, 1.369e-01, 1.942e-01, -3.406e-02, 1.635e-01, -4.915e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(9.260e-02, 1.909e-02, -1.349e-01, -5.687e-02, 1.249e-01, 3.586e-02, -1.018e-02, 6.307e-02, -3.181e-02, 1.818e-02, -4.032e-01, 9.384e-02, -6.203e-02, 1.751e-02, -1.158e-01, 3.620e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.401e-01, 1.521e-01, -3.192e-02, -1.871e-01, -3.463e-01, 1.095e-02, 4.855e-03, 1.690e-02, -2.589e-01, 1.063e-01, 7.775e-02, -4.672e-02, -8.403e-02, -2.818e-02, 5.786e-02, -3.239e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(2.031e-02, 1.172e-02, -9.682e-02, 9.127e-03, 2.913e-02, -3.746e-02, 6.038e-02, -4.815e-02, -3.120e-02, 4.352e-02, 6.584e-02, -7.121e-03, -4.228e-03, 1.765e-02, -4.739e-02, 2.799e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.304e-01, -1.513e-02, 3.871e-02, 1.948e-02, -7.521e-02, 1.269e-01, -2.289e-02, -2.183e-02, 1.008e-01, 3.573e-01, 3.636e-02, 1.731e-02, 3.628e-02, -8.397e-02, -6.148e-02, -2.183e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.233e-02, -1.729e-01, -7.030e-02, -7.717e-03, 5.629e-02, -6.134e-02, 5.499e-02, 1.241e-02, -5.101e-02, -2.790e-01, 1.124e-01, -1.603e-02, -6.998e-03, 1.171e-01, 3.416e-02, 4.316e-03), r4);\n\tr5 = MulAdd(s1_1_2, M4(-9.394e-02, 1.076e-02, -1.845e-02, -2.662e-02, 4.562e-02, 1.399e-03, 3.499e-02, -4.129e-01, -2.630e-02, 1.084e-01, 7.120e-03, 9.613e-05, 1.814e-02, 2.505e-02, 4.391e-02, 3.148e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(4.730e-02, 2.668e-02, -5.499e-02, -1.480e-01, -2.174e-01, 7.071e-03, -4.686e-01, 8.300e-02, 2.354e-01, 7.544e-03, -7.876e-02, 9.618e-02, -7.821e-03, -7.136e-03, -9.934e-02, 2.382e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(1.411e-01, -7.171e-02, 1.391e-01, 8.528e-02, 6.280e-02, 1.254e-01, -5.319e-02, -2.223e-02, -3.749e-01, 1.603e-01, 8.511e-02, -2.007e-01, -2.284e-02, 7.426e-02, 1.361e-01, 5.761e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(5.627e-02, -1.219e-02, -1.667e-01, 4.796e-01, -3.435e-02, 1.323e-03, -6.703e-02, -2.035e-01, 6.002e-02, -1.380e-02, -5.329e-02, -4.066e-02, 4.918e-02, -1.472e-03, -5.525e-01, 1.259e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(2.142e-02, 7.394e-02, 8.332e-03, -4.179e-02, -1.605e-02, 1.934e-02, -1.965e-03, 6.388e-02, -3.693e-02, 5.219e-03, 1.299e-02, 7.203e-04, -3.436e-02, 7.666e-04, -5.728e-03, 1.028e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(6.153e-03, -7.225e-03, 1.539e-01, 1.070e-02, 8.658e-03, 6.291e-03, 1.043e-01, 5.343e-04, 2.435e-02, 1.702e-02, -7.021e-02, -4.294e-03, 1.519e-02, 1.676e-02, 2.285e-01, 1.835e-04), r2);\n\tr3 = MulAdd(s1_2_0, M4(-5.864e-02, -5.850e-02, -8.000e-02, 5.236e-02, -1.178e-02, -2.823e-02, 5.037e-03, -1.004e-02, 1.003e-02, 1.328e-01, 6.468e-03, 6.110e-02, -4.648e-02, 6.356e-03, -1.218e-01, -1.743e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(-2.826e-02, -2.626e-01, -4.361e-03, 4.201e-03, -8.116e-04, 6.041e-02, 1.457e-02, -5.542e-03, 2.110e-02, -1.280e-01, -2.039e-02, -1.584e-02, -1.336e-02, 1.733e-02, 1.255e-01, -2.546e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-1.756e-02, 4.517e-03, 1.198e-02, -8.084e-04, -1.998e-02, 2.369e-02, -1.568e-02, -5.767e-02, 7.767e-03, -3.011e-03, 1.541e-02, -2.945e-03, 5.833e-03, -9.827e-03, -7.317e-03, -2.678e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-1.482e-01, 5.095e-02, -5.664e-02, 4.870e-02, -4.055e-02, 4.964e-03, -1.373e-01, 5.895e-03, 1.658e-02, 2.297e-02, 2.446e-01, -6.263e-02, -5.595e-01, 3.698e-03, -5.780e-02, 7.793e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(2.246e-01, 1.105e-01, -3.980e-01, -1.580e-02, 1.577e-02, -7.398e-02, 2.127e-01, -4.104e-02, -6.016e-02, -1.254e-03, 2.713e-01, -1.829e-02, -3.036e-01, 1.150e-01, -4.709e-01, -5.737e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-8.512e-02, 1.089e-02, -1.736e-02, 3.058e-01, 7.326e-02, 2.255e-03, -8.544e-02, -2.575e-01, -1.411e-01, 6.994e-03, 9.632e-02, -7.892e-02, 3.356e-03, -2.068e-02, -6.383e-01, 1.455e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-8.720e-02, 1.655e-01, -2.436e-02, -3.987e-02, 3.445e-02, 1.613e-02, -1.237e-02, -1.530e-02, -6.259e-02, -9.363e-03, 9.388e-03, 5.539e-02, -1.222e-01, 1.769e-01, -8.126e-03, -4.938e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(3.095e-02, -3.905e-03, 1.125e-01, 1.409e-02, 1.311e-02, 3.133e-03, -4.043e-02, -5.811e-03, -9.980e-05, 3.066e-02, 6.443e-02, 1.721e-02, 2.860e-02, 4.775e-02, 1.559e-01, -1.647e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-1.614e-01, 1.745e-01, -2.168e-01, 5.545e-03, 8.487e-02, 9.610e-03, 8.561e-02, -3.816e-02, -1.013e-01, -2.258e-01, 1.401e-01, -7.919e-02, 4.325e-01, 1.866e-01, -7.018e-03, 1.753e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(-8.564e-03, -2.608e-01, 1.943e-02, 2.326e-02, 2.480e-03, -1.399e-01, 1.296e-02, -1.771e-03, 1.360e-02, 1.792e-01, 4.204e-02, -9.011e-03, -9.991e-02, -4.737e-01, -5.674e-02, 1.178e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-1.686e-02, -6.325e-03, -2.509e-02, -1.636e-02, -4.077e-02, -4.000e-04, -3.748e-02, -1.002e-01, 8.859e-02, 5.797e-04, 4.555e-02, -3.237e-02, 3.362e-02, 5.546e-02, -4.878e-02, -9.006e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-1.252e-01, -6.952e-02, -1.293e-01, 1.150e-01, 2.011e-01, 5.041e-02, -1.964e-01, 3.852e-02, -9.661e-02, -4.918e-02, -1.714e-01, -6.785e-02, 3.582e-01, -1.244e-01, -2.764e-02, 2.008e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(1.325e-01, 1.831e-01, -3.759e-02, 6.144e-02, -1.033e-01, -3.547e-02, -1.277e-01, -7.732e-02, 2.208e-01, -9.055e-02, -1.267e-01, 4.637e-02, -8.929e-01, -1.414e-02, -6.865e-02, -1.967e-01), r7);\n\tr0 = MulAdd(s1_2_2, M4(-3.666e-02, 8.344e-03, 3.630e-02, 9.784e-03, 1.204e-01, 8.827e-04, -2.346e-01, -1.468e-01, -9.551e-02, -1.399e-02, 9.989e-02, -7.111e-02, -1.349e-01, 9.012e-03, -4.890e-02, 9.300e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.843e-03, 1.331e-01, -1.078e-02, -1.953e-01, 9.057e-02, -9.779e-02, 6.084e-03, 8.125e-02, 5.398e-02, 6.640e-02, -6.514e-03, -6.524e-02, 1.858e-01, -4.080e-02, -3.438e-02, 2.310e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(1.666e-02, 2.001e-03, -7.342e-02, 1.265e-02, -1.391e-03, 1.109e-02, 2.591e-02, 1.896e-02, 1.346e-02, 3.453e-02, -6.024e-02, 3.993e-02, 8.018e-03, -4.056e-03, 5.775e-02, -4.312e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(-9.441e-02, -9.132e-02, 1.266e-01, 1.274e-03, 2.928e-02, -7.636e-03, 1.838e-01, -4.779e-02, -2.481e-02, -1.204e-01, -1.566e-01, 5.511e-02, 2.117e-02, 1.261e-01, -1.828e-02, 5.110e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(4.194e-02, -1.783e-01, 2.009e-02, -6.757e-03, 3.067e-02, 5.772e-02, -1.514e-02, 2.028e-03, 2.948e-02, 2.324e-01, -3.694e-02, -4.993e-03, 6.956e-02, -3.470e-01, 1.874e-02, -5.562e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(3.629e-02, 4.795e-03, -6.408e-03, 4.724e-02, -5.332e-02, 7.953e-03, -1.243e-02, -2.268e-02, -1.066e-02, 2.726e-03, 3.086e-02, 7.757e-02, 5.036e-02, -5.352e-02, -5.805e-02, -1.315e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(3.897e-02, 3.833e-02, -8.357e-02, 1.066e-02, 1.210e-01, -7.426e-03, 7.385e-03, -1.922e-03, -2.020e-01, 5.933e-02, 1.569e-01, -1.576e-01, 8.256e-02, 1.479e-02, -2.718e-02, -1.333e-01), r6);\n\tr7 = MulAdd(s1_2_2, M4(1.820e-01, 5.736e-02, 1.478e-01, -4.338e-03, 1.286e-02, -4.890e-02, -1.489e-01, -2.087e-02, 9.092e-02, 2.988e-02, -6.586e-04, -5.796e-02, -1.616e-01, -1.970e-01, 1.089e-01, -1.993e-03), r7);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT4[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT5[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT6[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT7[gxy] = r7;\n}\n\n//!PASS 4\n//!DESC conv3 (32x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2, T3, T4, T5, T6, T7\n//!OUT T8, T9, T10, T11, T12, T13, T14, T15\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n#define L4(x, y) V4(O(T4, x, y))\n#define L5(x, y) V4(O(T5, x, y))\n#define L6(x, y) V4(O(T6, x, y))\n#define L7(x, y) V4(O(T7, x, y))\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-3.864e-02, -3.522e-02, 2.288e-02, 1.432e-02, 3.869e-02, -3.478e-02, 2.118e-02, 2.261e-02, 2.056e-02, -1.919e-01, 7.535e-03, -1.492e-02, 6.611e-02, -1.914e-02, 8.171e-03, 9.481e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(7.002e-02, 2.332e-02, -1.069e-01, 5.925e-03, -1.357e-01, -9.828e-03, -1.849e-03, -1.572e-02, 4.007e-01, 6.640e-03, 2.206e-03, -7.544e-02, -5.342e-03, -4.981e-03, 3.519e-02, -9.952e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.255e-01, -2.974e-02, 1.087e-02, 2.306e-02, 9.073e-03, -4.580e-03, -1.107e-02, 4.134e-03, -6.167e-03, 6.921e-03, -6.065e-02, -1.602e-02, -2.938e-02, -8.526e-03, 5.679e-03, -9.831e-03), r2);\n\tr3 = MulAdd(s0_0_0, M4(6.543e-02, -5.610e-03, -2.544e-02, 4.983e-02, -5.280e-02, 6.003e-02, -2.296e-02, 2.890e-03, 7.250e-02, 1.130e-01, 3.959e-02, -1.828e-02, 4.718e-02, 3.761e-03, 2.431e-02, -2.803e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(2.816e-02, -7.514e-04, -6.470e-02, 1.022e-01, 3.572e-02, 8.023e-03, 3.972e-03, -4.619e-02, 4.727e-02, -1.684e-03, 2.449e-02, -1.024e-01, -1.651e-02, -6.860e-03, 5.427e-03, 3.581e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(4.840e-02, -5.201e-02, -9.870e-02, 4.322e-02, 1.187e-02, 1.432e-02, -3.052e-02, 2.158e-02, 4.244e-02, -1.228e-02, 1.752e-02, 3.060e-02, 3.334e-02, 8.548e-02, 7.201e-02, 9.292e-03), r5);\n\tr6 = MulAdd(s0_0_0, M4(9.740e-02, 7.167e-02, 5.990e-02, -6.168e-02, -3.323e-03, -2.247e-02, -2.596e-02, -1.036e-02, -2.202e-02, 2.483e-02, -2.733e-03, 2.094e-02, 8.848e-03, -1.182e-03, 1.883e-02, 5.985e-03), r6);\n\tr7 = MulAdd(s0_0_0, M4(3.028e-02, 4.361e-02, -2.646e-03, -9.019e-03, -2.545e-02, 5.381e-02, -7.222e-03, 1.689e-02, 5.698e-03, -3.911e-02, -3.300e-03, 1.065e-02, 7.051e-03, 7.405e-02, -3.486e-03, 3.760e-03), r7);\n\tr0 = MulAdd(s0_0_1, M4(-8.462e-02, -1.100e-01, 5.464e-02, -1.079e-02, -8.425e-03, -2.310e-02, 2.100e-02, -7.408e-02, 8.056e-02, 1.228e-01, -3.869e-02, -3.079e-02, 1.604e-01, -3.746e-02, -1.071e-02, -2.306e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-3.185e-01, 1.456e-01, 9.451e-02, 7.275e-02, -1.280e-01, -2.682e-02, -1.625e-02, -3.756e-02, -5.159e-02, -6.535e-03, -5.666e-02, -8.686e-02, 1.985e-01, -3.286e-02, 1.219e-01, -1.502e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(3.276e-01, -1.315e-02, 8.642e-02, -8.549e-03, -1.816e-02, -1.471e-02, -4.654e-03, -1.633e-02, -2.793e-01, -1.112e-04, -2.450e-02, -9.066e-04, 4.174e-05, -1.231e-02, -6.717e-03, -1.209e-03), r2);\n\tr3 = MulAdd(s0_0_1, M4(3.743e-02, 4.102e-02, 1.282e-02, -1.941e-03, 7.411e-02, 6.290e-02, -4.454e-02, -4.421e-02, 3.986e-03, -1.509e-01, 9.012e-02, -9.121e-02, 2.708e-03, 2.630e-02, 1.745e-02, 4.134e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(7.867e-02, 2.844e-03, -1.132e-01, 8.287e-02, 4.085e-02, -2.128e-02, 2.940e-04, 4.572e-02, -7.067e-02, 2.103e-01, 4.041e-02, -8.092e-02, -3.805e-02, 1.275e-02, 1.090e-02, -9.724e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(1.204e-01, -6.260e-02, -2.012e-01, -2.110e-02, 7.712e-03, 1.567e-02, 3.194e-02, -1.975e-02, 1.704e-01, 7.474e-02, 1.868e-01, 1.101e-01, 1.176e-01, 5.606e-02, 2.355e-02, 1.361e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-7.638e-02, 1.113e-01, 2.180e-02, -4.724e-02, -4.004e-02, -1.750e-02, -1.358e-02, 1.335e-02, 1.049e-01, -1.423e-01, 5.141e-02, -1.245e-01, 1.901e-02, -4.658e-03, 3.232e-02, -4.969e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(1.076e-02, -2.195e-02, 2.614e-02, -1.635e-01, 6.984e-02, 4.007e-03, -5.444e-03, 1.341e-02, 4.113e-02, -1.440e-01, -5.180e-02, 3.283e-01, -2.793e-02, 1.247e-01, -1.141e-03, -7.921e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(8.899e-02, 3.285e-02, 4.952e-02, 1.714e-02, -3.042e-02, 4.404e-03, 1.302e-03, -3.723e-02, -1.808e-01, -1.030e-01, 1.167e-01, -4.140e-02, 7.477e-02, -3.311e-02, 3.136e-02, -9.863e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(-5.955e-01, 6.466e-02, 2.310e-02, 1.091e-02, -1.381e-01, -1.203e-02, -3.301e-02, -1.685e-02, 5.050e-02, -2.103e-02, 2.501e-02, -7.701e-02, 3.420e-01, -9.789e-02, -5.982e-02, 2.542e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(3.984e-02, -3.451e-02, 7.388e-03, -1.087e-02, -2.140e-02, -1.040e-02, 1.974e-02, 1.892e-02, -2.229e-02, -2.958e-02, -1.118e-01, 3.636e-03, -1.150e-02, 8.967e-03, -4.751e-02, 4.695e-04), r2);\n\tr3 = MulAdd(s0_0_2, M4(1.258e-03, -5.366e-02, 1.808e-02, 5.168e-02, 1.245e-02, 8.321e-03, -3.593e-02, -1.222e-02, 8.711e-03, 1.339e-01, -1.422e-02, -1.381e-02, -1.082e-01, -2.724e-02, 1.023e-01, -4.725e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-5.781e-02, 5.902e-03, -1.018e-01, 8.577e-03, -2.820e-02, 2.168e-03, -2.191e-02, -6.321e-03, 6.190e-02, 8.977e-02, 3.702e-02, -3.801e-02, -2.368e-02, 7.611e-03, 6.695e-03, 4.570e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(-7.496e-02, -2.735e-03, -4.692e-02, -5.784e-03, 3.063e-02, -7.019e-03, 1.437e-02, -9.623e-03, 1.149e-01, -2.192e-02, 1.313e-01, -3.380e-02, 4.054e-02, 3.650e-02, -5.656e-02, 2.250e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(2.056e-01, -2.759e-02, 1.066e-01, -1.079e-02, 4.288e-02, -2.881e-02, 1.398e-02, -1.730e-02, -1.431e-01, 1.004e-02, 4.111e-02, -9.883e-02, -1.135e-01, -1.732e-02, -1.409e-02, 5.527e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-4.270e-04, 3.572e-02, 9.893e-03, 4.786e-02, 7.969e-03, 4.893e-03, 3.031e-02, 2.666e-02, 1.380e-02, -6.593e-02, -2.804e-02, 7.007e-02, -5.184e-03, -4.866e-02, 2.401e-03, -8.758e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(4.751e-02, -1.279e-01, -7.096e-02, 2.648e-02, -4.101e-02, -2.745e-02, -4.630e-02, 1.200e-01, 6.686e-02, 5.753e-03, 3.932e-02, 1.808e-02, 2.234e-02, 4.078e-02, -3.635e-04, 4.795e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.606e-01, 6.124e-02, -5.597e-01, -1.255e-02, 2.839e-02, -1.079e-03, -1.150e-01, 5.798e-02, 5.690e-02, 9.381e-03, -4.051e-01, -1.037e-01, 8.061e-02, -3.122e-02, -9.807e-02, -1.577e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(-4.039e-04, -3.825e-02, 1.993e-05, 3.460e-02, -5.219e-02, 4.424e-02, 1.531e-02, 3.362e-02, 1.984e-02, -5.673e-02, -3.617e-02, -1.222e-02, -2.348e-02, -1.272e-02, -1.546e-02, -7.071e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.461e-01, -2.186e-01, -1.004e-01, -2.710e-01, -8.403e-02, 2.539e-02, -1.165e-02, -1.074e-01, -2.398e-01, -2.849e-02, -1.648e-01, -2.027e-01, 3.819e-02, -2.874e-02, -2.192e-03, -2.188e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-2.998e-03, 3.705e-02, -8.036e-02, 9.463e-02, 1.134e-01, 2.998e-02, 2.240e-02, -3.171e-02, 2.163e-01, 3.704e-02, 3.868e-02, 1.545e-02, -3.697e-02, -2.946e-02, 1.634e-02, 6.666e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-2.355e-02, 1.446e-02, 8.065e-02, -4.032e-02, -4.906e-02, 2.180e-02, -1.755e-01, 1.964e-02, -8.902e-02, -4.601e-02, 2.045e-01, 5.211e-02, 1.345e-02, 6.759e-02, 4.736e-02, -3.056e-03), r5);\n\tr6 = MulAdd(s0_1_0, M4(1.707e-01, 4.850e-02, -3.621e-02, -2.476e-01, 3.774e-02, -2.240e-02, -3.474e-02, 6.362e-02, -2.193e-01, -3.034e-02, -1.074e-01, -5.634e-02, -3.259e-02, 3.528e-02, -1.174e-02, 6.712e-03), r6);\n\tr7 = MulAdd(s0_1_0, M4(5.450e-03, 1.158e-01, -1.375e-02, 1.092e-01, -8.738e-03, -3.395e-02, -6.188e-02, 4.553e-04, -7.838e-03, 2.108e-02, 4.241e-03, 9.238e-02, 2.386e-02, 9.809e-02, -4.613e-03, 5.497e-03), r7);\n\tr0 = MulAdd(s0_1_1, M4(-3.053e-01, -2.031e-01, -7.590e-02, -3.821e-02, 1.138e-01, -6.080e-02, -1.801e-03, 8.477e-02, -1.053e-01, -2.939e-01, 7.986e-02, 5.528e-02, 9.129e-02, 2.652e-03, 3.444e-02, -9.029e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-4.442e-01, -2.881e-01, 3.489e-01, 8.483e-02, 1.714e-01, 6.920e-04, -1.488e-01, -1.826e-01, 2.209e-01, 4.016e-02, 3.457e-02, -3.298e-02, 6.600e-01, -1.291e-02, 2.328e-01, -6.063e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(3.545e-01, 2.354e-02, 9.255e-02, 9.029e-02, -7.637e-02, -5.041e-02, -6.960e-02, 2.576e-01, 5.674e-03, 4.835e-02, -8.617e-02, -1.542e-02, 3.786e-02, -9.207e-02, 4.084e-03, -1.026e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(7.031e-02, -1.289e-01, 3.143e-02, 2.324e-01, -2.574e-02, 3.960e-02, -1.302e-01, 2.440e-02, 9.514e-02, 1.865e-01, -9.166e-02, -1.223e-01, -4.409e-02, 1.075e-01, 1.892e-02, 2.510e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(-5.213e-02, 1.987e-01, -1.479e-01, -2.083e-01, 1.169e-01, -4.546e-03, 3.350e-01, -2.300e-01, 1.252e-01, -3.184e-02, 7.616e-02, 1.615e-01, 1.624e-02, -1.249e-01, 1.227e-02, 7.099e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(3.525e-01, 5.753e-03, -9.417e-02, 1.304e-01, 7.685e-02, -4.211e-02, 3.174e-01, 6.858e-02, -8.866e-02, 1.459e-02, -1.415e-01, -1.272e-02, 1.888e-01, 3.197e-01, -4.959e-03, -2.614e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(3.817e-01, 5.331e-02, 1.921e-01, -1.579e-01, 1.010e-01, -9.991e-03, 2.498e-02, -3.465e-02, 6.461e-03, 1.275e-01, -7.966e-02, -1.009e-01, 4.030e-02, 1.739e-02, 6.446e-02, -1.232e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(1.270e-02, -1.626e-01, 3.041e-02, -5.128e-02, -3.532e-02, -9.671e-02, -2.803e-01, 1.127e-01, -9.222e-02, -1.677e-01, 2.523e-03, 3.363e-01, -1.410e-02, 3.693e-01, -1.273e-02, -7.743e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-1.982e-02, 6.100e-02, -1.902e-01, -2.143e-02, 6.661e-03, 3.182e-02, -2.326e-02, 1.575e-02, -2.944e-02, 9.558e-02, -2.616e-01, 2.318e-03, 3.443e-02, -6.308e-02, 2.735e-02, -2.628e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-4.140e-01, -6.581e-02, -1.374e-01, 1.508e-01, -8.977e-02, -2.385e-02, 6.698e-02, -3.934e-03, 1.617e-01, 1.513e-01, -1.276e-01, -1.089e-01, -5.835e-01, -1.301e-01, -6.354e-02, -5.628e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(3.115e-01, -5.169e-02, 1.133e-01, -1.385e-03, 2.432e-02, -8.718e-03, -3.701e-02, 3.787e-02, -1.131e-01, -4.170e-03, -4.602e-02, 1.243e-02, -1.567e-02, -1.996e-02, -1.545e-01, -2.813e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(1.948e-01, -2.682e-01, -3.593e-02, -7.402e-02, 8.709e-02, 1.850e-04, -3.937e-02, -2.634e-02, 6.578e-02, 1.686e-01, 1.254e-01, -8.613e-02, -1.156e-02, -1.302e-01, 5.335e-02, -5.410e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(8.074e-03, -1.145e-01, -1.175e-01, -1.032e-02, 3.569e-02, 4.704e-03, 2.096e-02, -1.140e-01, 2.105e-02, 9.411e-02, 4.875e-02, -1.009e-02, -9.464e-02, -1.070e-01, 2.080e-02, -3.822e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-4.739e-03, -4.135e-02, 5.707e-02, 1.925e-02, -8.625e-02, -5.812e-02, 1.274e-01, -2.071e-02, 3.740e-02, 4.367e-03, 1.030e-01, -2.212e-02, 5.360e-02, -1.480e-01, -6.513e-02, -8.328e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-6.573e-03, 1.853e-01, 2.956e-02, -3.164e-02, -5.612e-02, 3.310e-02, -1.763e-02, -4.339e-02, -9.921e-02, -1.865e-02, -4.522e-02, -6.009e-03, -9.180e-02, 1.037e-01, -1.058e-01, -8.067e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-2.342e-03, 2.280e-01, 3.928e-02, -8.174e-02, 1.096e-02, -3.613e-02, 2.197e-01, 6.812e-02, -1.661e-02, 6.057e-02, 2.409e-03, 7.008e-02, 4.014e-03, -1.191e-01, 8.319e-05, -6.852e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(4.393e-02, -3.981e-02, 5.470e-03, -1.105e-02, 4.469e-02, 5.014e-03, 1.287e-01, 1.638e-01, 5.387e-02, -4.644e-02, -3.166e-02, 1.352e-02, 4.112e-02, 2.081e-02, -1.027e-02, 4.616e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(6.057e-02, -8.235e-03, 2.409e-02, 5.581e-02, 6.058e-02, -3.803e-02, -6.476e-02, -1.156e-02, 1.357e-02, 1.763e-02, 6.493e-02, -2.054e-02, 2.773e-01, 6.549e-02, -3.014e-02, -4.264e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(3.480e-02, -4.665e-03, -1.336e-04, -5.468e-03, -3.003e-02, -3.785e-03, 3.362e-02, 4.058e-02, 1.906e-01, 4.548e-02, -8.857e-03, -8.757e-03, 2.373e-02, -1.544e-02, 9.205e-03, 1.411e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(4.924e-02, 1.320e-04, 2.927e-02, 3.469e-02, -1.165e-01, 8.810e-02, 4.791e-02, -2.947e-02, 1.333e-01, 8.472e-02, 1.608e-01, 4.917e-02, 3.868e-03, -1.723e-02, 4.152e-02, -1.877e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-1.181e-02, -8.636e-03, -3.016e-02, -2.716e-02, -1.575e-02, -3.316e-03, 1.499e-01, -2.087e-02, -1.368e-01, 5.031e-02, 3.316e-03, 1.752e-02, -2.345e-02, -2.310e-03, 3.647e-03, 4.039e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(5.623e-02, 3.941e-02, -7.908e-02, 2.453e-04, -2.103e-02, 7.161e-02, 2.172e-02, 6.192e-03, 1.355e-02, -3.149e-02, 1.409e-01, -3.946e-02, 6.665e-02, 4.216e-02, 8.989e-02, -2.510e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(7.997e-02, -3.082e-02, 5.001e-02, -4.499e-02, -1.147e-01, -4.279e-02, -1.247e-01, -6.788e-03, 1.618e-01, 9.059e-03, 9.701e-02, 3.842e-02, -1.283e-03, 1.146e-02, 4.237e-02, -9.825e-03), r6);\n\tr7 = MulAdd(s0_2_0, M4(6.453e-03, 2.972e-03, 5.228e-03, -5.146e-02, -3.821e-02, 4.356e-02, 2.642e-02, 3.181e-03, -1.023e-02, -8.198e-03, 2.057e-02, -2.559e-02, -2.981e-03, 8.057e-02, -3.450e-03, -2.272e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(5.049e-02, 5.567e-02, 2.080e-01, 4.182e-02, -1.199e-01, -1.138e-01, -8.187e-02, -2.243e-01, -1.732e-02, 1.296e-02, -1.202e-01, 2.075e-02, 4.400e-02, -5.261e-02, 7.992e-03, -1.749e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.550e-02, -1.116e-01, 6.030e-02, 3.354e-02, 6.364e-02, 3.848e-02, 1.645e-02, 2.424e-02, -1.248e-01, 1.149e-01, -9.695e-02, -1.257e-02, 5.903e-02, 1.157e-02, 6.063e-02, -3.488e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(-8.907e-03, 2.514e-02, 6.780e-04, 1.998e-02, -4.580e-02, 7.465e-02, -6.277e-03, 1.686e-01, 2.013e-02, -5.173e-02, -2.841e-02, -6.213e-02, 6.286e-02, -6.290e-04, -1.398e-02, 1.637e-03), r2);\n\tr3 = MulAdd(s0_2_1, M4(9.937e-02, 9.046e-02, 4.693e-02, 7.530e-02, -4.848e-02, 8.991e-02, 1.147e-01, -3.377e-02, -5.800e-02, -1.524e-01, -7.435e-03, 3.890e-02, 4.938e-02, -2.074e-02, 9.467e-03, 3.127e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(3.465e-02, 8.050e-02, -1.017e-01, 7.691e-02, -6.030e-02, 1.383e-01, -1.107e-01, 9.851e-03, -4.150e-02, -5.817e-02, 1.613e-02, -7.081e-02, -2.845e-02, -1.251e-01, 4.879e-04, 3.870e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-1.252e-02, -3.524e-02, -3.464e-01, 3.601e-02, 1.459e-02, -1.373e-01, -6.913e-02, -5.773e-02, 1.382e-02, -2.655e-02, 4.207e-02, -4.813e-02, 5.385e-02, 3.252e-01, 1.044e-01, -7.560e-03), r5);\n\tr6 = MulAdd(s0_2_1, M4(6.852e-02, 7.474e-02, -2.207e-02, -1.488e-01, -2.008e-02, -9.609e-03, -7.344e-02, 3.808e-02, 1.133e-01, -1.132e-01, 2.525e-02, 1.795e-04, -1.112e-01, 3.449e-02, 3.725e-02, -4.623e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(2.040e-02, -1.704e-01, -1.295e-02, 7.994e-02, -5.536e-02, -1.836e-01, 2.464e-01, -2.197e-02, 2.130e-04, -4.256e-02, 5.173e-03, -1.607e-01, -1.011e-02, 1.462e-01, -2.804e-03, -2.230e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-8.043e-02, 2.659e-03, -2.825e-02, 1.430e-03, 1.616e-01, 5.345e-02, 7.465e-02, 4.944e-02, 3.668e-02, -2.677e-02, 4.153e-02, -8.904e-04, 1.188e-01, 5.496e-02, -7.097e-02, -2.033e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-2.054e-01, -6.152e-02, 2.489e-02, 3.348e-02, -1.100e-02, -2.778e-02, 2.671e-02, 1.700e-02, 7.868e-02, 3.060e-02, 9.011e-02, -3.757e-02, 1.065e+00, -9.290e-02, 9.483e-02, 1.010e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.411e-01, -3.185e-02, -9.816e-03, 1.362e-02, -2.340e-02, 6.849e-03, -5.497e-02, 8.228e-02, -2.689e-02, -1.728e-03, 3.845e-02, -4.269e-03, 5.279e-02, -2.661e-02, -1.941e-02, 1.124e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(2.926e-02, -2.868e-02, 4.846e-02, 6.984e-03, 5.056e-02, -4.476e-02, 5.966e-02, 2.359e-02, -7.248e-04, 7.637e-02, 1.487e-01, 4.503e-04, -2.652e-02, -1.558e-01, 1.467e-01, -4.098e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(2.708e-02, 3.009e-02, -7.714e-02, 7.660e-02, -1.545e-02, -1.550e-03, 5.632e-02, -9.350e-03, 1.374e-04, 2.353e-02, 1.607e-02, 4.539e-03, -1.114e-03, 4.303e-04, 4.124e-03, 9.850e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(2.100e-02, -5.676e-02, -1.220e-01, 2.681e-02, -8.938e-02, -4.726e-03, 2.301e-02, -8.234e-04, -5.323e-02, 4.113e-03, -3.327e-02, 5.962e-03, 1.100e-01, 3.070e-01, 2.900e-02, -4.282e-04), r5);\n\tr6 = MulAdd(s0_2_2, M4(-5.778e-03, 9.137e-02, -4.260e-02, -6.069e-02, 7.864e-03, -3.444e-02, -3.308e-02, -3.957e-02, -2.493e-02, 1.111e-02, -1.219e-02, -2.370e-02, -6.394e-02, -8.659e-02, 1.365e-01, 3.701e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-1.499e-03, 1.090e-01, 2.895e-02, -4.451e-02, -2.188e-02, 2.579e-02, 3.076e-01, -4.650e-02, -3.251e-03, -1.422e-03, -1.789e-02, 6.372e-02, -5.228e-03, 1.928e-01, -3.975e-02, -1.306e-01), r7);\n\tr0 = MulAdd(s1_0_0, M4(-7.928e-02, 3.149e-02, -7.019e-03, 1.568e-02, 1.252e-02, 1.448e-02, 2.696e-02, -5.670e-03, 1.063e-02, -2.114e-01, 9.626e-03, -4.510e-02, 1.064e-01, 1.500e-01, 3.870e-02, 3.795e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-4.273e-01, 3.416e-02, 1.279e-01, 7.022e-03, 1.670e-01, -3.278e-03, 1.017e-01, -8.710e-03, -1.400e-02, -8.131e-02, -1.271e-01, 1.679e-02, 8.465e-02, 4.022e-02, -4.452e-02, 4.978e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-1.162e-01, 5.111e-03, 2.953e-02, 7.600e-03, -3.170e-02, -3.220e-03, 5.791e-03, -1.670e-02, 4.538e-02, 5.188e-02, 4.859e-03, 6.349e-04, 2.540e-02, 1.497e-03, 1.967e-02, -1.548e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(-1.120e-02, 2.346e-03, -1.028e-02, 8.465e-02, -2.802e-02, 5.360e-02, 2.420e-02, 4.267e-02, 1.224e-01, 7.921e-03, 7.835e-02, -1.590e-01, 1.712e-01, 4.962e-02, 4.498e-02, 3.257e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(7.846e-02, -4.174e-02, 4.898e-02, -6.009e-03, -1.954e-02, -2.818e-02, 7.185e-03, -2.723e-02, -8.865e-02, -2.165e-02, -9.233e-04, 4.069e-02, 9.972e-03, 6.379e-03, -8.085e-03, 3.060e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(1.197e-02, 4.304e-02, 8.682e-03, -5.698e-02, 4.399e-02, 2.352e-02, -3.414e-03, 1.734e-02, -4.468e-02, 2.727e-03, -9.658e-02, -9.318e-03, -6.647e-02, 4.206e-02, -3.918e-02, -5.540e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-2.510e-01, -6.528e-03, -7.738e-02, 6.217e-02, 7.650e-03, 1.109e-02, -7.379e-03, 3.333e-02, -1.259e-01, -2.649e-02, 1.897e-02, 1.545e-02, -1.460e-01, 1.955e-02, 6.993e-02, 2.086e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(2.802e-02, -5.254e-03, -1.803e-02, -1.292e-02, -2.734e-02, 8.509e-02, 5.387e-03, -1.763e-04, -4.261e-02, -2.105e-02, 7.178e-03, -4.558e-02, 8.693e-03, -2.185e-01, 2.336e-03, -7.193e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-1.747e-01, -1.466e-02, 6.624e-02, -3.960e-03, 7.730e-02, -2.268e-03, 2.143e-02, 1.583e-02, 1.045e-01, 2.339e-02, -1.792e-01, 2.025e-02, 3.436e-02, 7.683e-02, -1.173e-01, 4.357e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(-2.763e-01, 4.656e-02, 1.395e-01, 6.090e-03, -1.597e-01, 4.407e-04, -1.665e-01, -1.325e-02, -2.101e-01, -1.219e-01, 3.150e-02, -1.373e-01, -8.199e-02, -9.337e-03, 8.547e-02, -4.288e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-1.109e-02, 3.530e-02, 2.699e-02, -3.191e-02, 3.839e-02, -3.516e-03, -2.372e-04, -1.381e-02, -1.450e-01, 9.556e-03, 2.666e-02, -1.000e-02, -1.961e-02, 4.567e-03, 3.166e-02, 7.348e-03), r2);\n\tr3 = MulAdd(s1_0_1, M4(-5.289e-02, 1.290e-01, 3.081e-02, 5.732e-02, 6.041e-02, -6.378e-02, 6.748e-02, -6.277e-02, -1.552e-01, -1.212e-01, -2.484e-02, -1.081e-01, -2.462e-02, -1.431e-01, -1.670e-02, 1.460e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(2.990e-02, -1.176e-02, 8.472e-02, -2.024e-03, -1.180e-01, 2.037e-02, -3.020e-03, -4.432e-02, -9.422e-02, 1.595e-02, -3.235e-02, 5.354e-02, -2.613e-02, 1.128e-01, -1.088e-02, -9.758e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(3.692e-02, -2.862e-02, -4.468e-02, 3.242e-02, -6.199e-02, 5.220e-02, 4.880e-02, -4.732e-02, 1.676e-01, -2.300e-03, 6.446e-02, 3.701e-01, 1.238e-01, 2.028e-02, 1.215e-01, 3.024e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-7.399e-02, 3.600e-02, 1.214e-03, 9.195e-02, 5.189e-02, -1.042e-01, 4.253e-02, -3.616e-02, 3.300e-02, -4.061e-02, 9.372e-02, 5.931e-02, 1.525e-02, -1.153e-02, 2.258e-02, -3.257e-03), r6);\n\tr7 = MulAdd(s1_0_1, M4(2.532e-03, -6.450e-02, 1.060e-02, 7.489e-02, -2.409e-02, -2.456e-02, -5.838e-03, 5.004e-02, -5.899e-02, 1.026e-01, -3.549e-02, -1.214e-02, 2.522e-02, 1.066e-01, 1.362e-02, 1.509e-01), r7);\n\tr0 = MulAdd(s1_0_2, M4(-9.393e-03, -1.268e-02, -1.405e-02, 8.533e-03, -3.038e-02, -9.817e-03, 1.471e-02, 8.971e-03, 5.566e-02, -4.275e-02, 4.739e-02, 2.299e-02, 5.787e-02, 8.419e-04, -2.005e-02, -3.614e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(2.325e-01, 3.071e-02, 2.844e-02, -2.526e-02, 2.057e-01, -1.911e-02, 4.234e-02, 9.271e-03, 1.570e-01, -6.844e-02, 3.630e-02, -1.726e-02, 3.240e-02, 2.752e-02, 4.119e-02, 3.259e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.642e-02, 9.124e-03, 3.185e-02, -1.738e-02, 3.802e-02, -1.997e-02, -4.790e-03, 4.574e-03, 3.209e-02, 2.794e-02, 2.677e-02, 6.719e-03, 1.249e-01, -6.572e-03, 4.926e-02, -6.293e-03), r2);\n\tr3 = MulAdd(s1_0_2, M4(-2.399e-02, 6.577e-02, 2.281e-02, 4.291e-02, 2.653e-02, 2.017e-02, -1.540e-02, 9.501e-03, 2.089e-02, -1.092e-01, -1.396e-02, 1.694e-02, 5.518e-02, -1.654e-02, -5.705e-02, 4.960e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-3.108e-02, -3.526e-03, 4.040e-02, 5.716e-02, 1.369e-02, 3.268e-02, -1.040e-02, -8.993e-03, -7.957e-03, -2.294e-02, -1.245e-02, 9.710e-02, 2.586e-02, -3.244e-03, -1.044e-02, 8.860e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(3.283e-02, -4.755e-04, 8.239e-02, 3.032e-02, 6.261e-02, 3.505e-02, 1.611e-02, 2.550e-03, 3.588e-02, 4.230e-02, 1.743e-02, 6.723e-02, 4.092e-02, -3.867e-02, 1.067e-01, -2.253e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-9.758e-02, 6.078e-03, -1.564e-02, 2.915e-02, 2.308e-02, -3.383e-02, 3.571e-02, -4.221e-03, 7.278e-03, -3.540e-02, -3.015e-02, 1.150e-01, -1.304e-01, 9.104e-02, -2.230e-02, -5.698e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(1.935e-02, -4.328e-02, 1.154e-02, 3.474e-02, 1.042e-02, -3.385e-03, -1.620e-02, 3.542e-02, -1.314e-02, 1.213e-01, -3.237e-02, -7.457e-03, -6.912e-03, 9.946e-02, 7.449e-03, -5.017e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(1.022e-01, 2.941e-01, 6.183e-02, 3.952e-02, 5.496e-02, 5.634e-02, 1.008e-02, -2.593e-02, 1.935e-02, -1.426e-01, 1.536e-01, -6.391e-02, 3.240e-02, 1.743e-02, 1.821e-01, 1.937e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(7.043e-02, -1.057e-01, -3.707e-02, -8.962e-02, -2.973e-01, -1.504e-02, 6.541e-02, -5.260e-02, -4.367e-01, 3.060e-02, -1.541e-01, 6.427e-03, -2.471e-02, -8.963e-02, 3.333e-01, 8.077e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-2.469e-03, 7.755e-03, 6.947e-03, 1.730e-02, 2.171e-02, -1.954e-02, 4.597e-02, -1.632e-02, -1.376e-01, 1.345e-02, 6.761e-02, -1.107e-02, 1.590e-01, -7.448e-03, 6.263e-03, -3.541e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-1.925e-02, 2.461e-01, 2.006e-01, 1.293e-01, -1.852e-01, -3.224e-02, 6.297e-04, -1.757e-01, -3.045e-01, -1.756e-01, -1.171e-01, -3.229e-01, 2.510e-01, 1.732e-01, 2.128e-01, 9.700e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-5.768e-02, 1.185e-01, 9.302e-02, -1.368e-01, -1.531e-01, 3.753e-03, 9.473e-03, -8.908e-03, -1.192e-01, -1.198e-01, -1.644e-02, 8.569e-02, -9.474e-02, 3.382e-02, -9.984e-03, -1.887e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(-6.226e-02, 1.268e-01, 1.154e-01, 1.385e-01, -2.806e-03, -4.072e-02, 6.318e-02, 3.626e-04, 6.671e-02, -1.613e-03, 3.208e-02, -8.086e-03, 8.222e-02, -1.499e-01, -1.551e-01, -9.239e-03), r5);\n\tr6 = MulAdd(s1_1_0, M4(-1.168e-02, -5.196e-02, -2.361e-02, 8.220e-02, -2.016e-01, 5.171e-02, -1.054e-01, -2.738e-02, -1.454e-01, -1.810e-02, -1.127e-01, -1.512e-01, -1.451e-02, -8.813e-02, 1.694e-01, 9.300e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.194e-02, -3.647e-02, -2.029e-02, 1.850e-01, 2.621e-03, 6.654e-02, -8.622e-03, 1.498e-02, -2.332e-02, -1.666e-03, 1.825e-02, -8.223e-02, 2.469e-02, -1.264e-01, 5.202e-03, -1.052e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(-9.327e-02, -8.875e-02, -1.811e-01, -4.927e-02, 2.641e-01, 8.944e-02, 2.043e-01, -6.943e-03, 1.874e-02, 1.082e-01, -9.304e-02, 8.827e-04, 3.530e-01, 2.462e-01, -2.568e-01, 4.680e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-4.712e-01, -4.109e-02, 7.835e-02, -9.236e-02, 1.316e-01, 3.874e-02, -3.340e-01, 3.246e-01, -4.236e-01, 2.504e-01, -2.459e-01, 2.230e-01, 4.479e-02, 5.555e-02, -1.546e-01, -3.895e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-1.968e-01, 5.102e-02, 5.825e-02, 1.369e-02, 8.327e-02, 4.129e-02, 3.148e-03, -4.544e-02, 1.919e-01, -3.860e-01, 4.060e-01, -5.242e-02, 8.193e-02, -7.273e-02, 1.025e-01, 4.847e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-1.427e-01, 1.686e-01, 1.112e-01, 8.478e-02, -2.486e-02, -3.259e-01, -4.371e-02, -2.744e-01, 1.889e-01, -3.944e-01, -1.249e-01, -1.318e-01, 2.068e-01, -6.562e-02, -3.924e-01, 9.250e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(2.071e-02, 2.006e-01, 1.201e-01, -7.172e-01, -3.604e-01, -2.066e-01, -2.424e-02, -9.316e-03, -1.774e-01, -3.656e-01, -8.170e-02, -1.713e-01, -1.605e-02, -8.481e-02, 8.596e-03, 3.058e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(6.375e-02, 3.749e-02, 9.698e-02, -4.320e-02, -3.953e-01, 1.020e-02, -2.054e-01, -7.827e-02, -3.867e-01, -2.197e-01, 1.339e-01, -2.150e-01, -1.431e-01, 1.266e-02, -3.337e-02, 4.713e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(2.189e-01, -2.668e-01, 1.082e-02, 1.418e-01, -3.343e-01, -4.816e-01, -1.210e-01, 9.223e-02, -7.474e-02, -3.931e-02, 1.032e-01, 3.946e-01, -2.007e-01, 1.694e-01, 6.241e-02, -8.741e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(4.138e-03, -6.715e-02, 3.757e-02, 2.578e-01, 3.169e-03, -3.455e-01, -2.503e-02, 2.153e-01, 2.159e-02, -1.582e-01, -1.248e-03, -7.012e-01, 3.132e-02, 3.681e-01, -2.924e-02, -6.041e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-1.588e-01, -6.828e-04, -3.987e-02, -3.751e-03, -1.978e-01, -4.040e-02, 2.046e-01, 4.302e-03, -2.031e-01, -1.909e-01, 6.662e-02, -1.777e-03, -1.989e-01, -1.812e-02, -4.454e-02, -7.152e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(4.607e-02, 1.914e-02, 2.879e-02, -1.180e-02, -1.423e-01, -3.363e-03, 6.685e-02, 4.216e-02, -3.095e-01, 1.013e-01, -1.863e-02, -2.911e-03, -3.773e-01, -3.170e-02, 9.304e-02, 1.840e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(-2.753e-03, 3.406e-02, 4.357e-02, -1.717e-03, 1.323e-02, -4.260e-02, -1.499e-01, -9.161e-04, -1.851e-01, 3.633e-03, -2.220e-01, 9.049e-03, -7.096e-02, 1.124e-02, -9.369e-02, -1.252e-03), r2);\n\tr3 = MulAdd(s1_1_2, M4(5.906e-03, 3.432e-02, 6.546e-02, -2.084e-02, -2.346e-02, 9.887e-02, -2.055e-02, 6.907e-02, -1.173e-01, 1.773e-01, -1.661e-01, 3.278e-02, -1.440e-01, 1.421e-01, 6.882e-02, 2.172e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-1.933e-02, 6.690e-02, 7.641e-02, -4.283e-02, 5.610e-02, -1.062e-01, -6.416e-03, -1.409e-03, 4.237e-02, -1.264e-01, -1.917e-02, -1.100e-01, 4.147e-02, 1.889e-02, 5.651e-03, -1.119e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(2.319e-02, -3.614e-02, 2.357e-01, -2.492e-02, 6.224e-02, -1.210e-02, -1.154e-01, -3.443e-02, 5.723e-02, -5.844e-02, -2.593e-01, -1.118e-02, 1.128e-01, 1.321e-01, -1.204e-02, 2.242e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-3.217e-02, 3.872e-02, 2.075e-02, 3.026e-02, -6.665e-02, -4.157e-02, 1.313e-01, -5.699e-02, 6.685e-02, -9.504e-02, 1.268e-01, -3.575e-02, 4.951e-02, -9.137e-02, -7.708e-03, -1.401e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(-1.582e-02, 4.541e-02, 2.204e-02, 9.722e-03, 1.503e-02, -2.449e-01, -4.304e-02, 9.231e-02, 3.001e-02, -7.090e-02, -5.137e-02, -9.867e-02, -3.447e-02, 4.009e-02, 2.012e-02, 1.598e-01), r7);\n\tr0 = MulAdd(s1_2_0, M4(-4.985e-04, 9.730e-02, -7.325e-02, 3.853e-03, 3.300e-02, 5.092e-03, 2.022e-02, -6.580e-03, 2.416e-02, -6.076e-02, -1.048e-02, -1.748e-02, 6.716e-02, -4.597e-02, 9.727e-02, -9.479e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-1.269e-01, -8.284e-02, -1.997e-01, -4.126e-02, -2.598e-02, -8.307e-04, -1.624e-02, -2.562e-03, 1.274e-01, 3.282e-02, 8.042e-02, 4.619e-02, -6.172e-02, -6.573e-03, 3.822e-02, -2.867e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-8.271e-02, 4.757e-02, 4.073e-02, 2.594e-02, 7.943e-03, -3.082e-02, 5.033e-03, 9.987e-03, -4.637e-03, 5.776e-02, 1.149e-02, 6.025e-03, 8.758e-02, -6.709e-02, 1.610e-02, 5.873e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.393e-01, 5.737e-02, -2.777e-02, 2.032e-02, -4.549e-03, 4.198e-02, -2.345e-02, -3.479e-02, -1.169e-02, -1.383e-01, 2.886e-02, -8.545e-03, 6.466e-02, 5.703e-02, -1.854e-02, -3.785e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(1.812e-01, 6.532e-02, 6.149e-02, 1.419e-01, 7.174e-02, 3.293e-02, 6.649e-03, 6.906e-02, 3.089e-02, 5.421e-02, -3.163e-02, 7.248e-02, 1.891e-02, -1.317e-02, -3.872e-02, 7.202e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-1.265e-01, -6.218e-02, -8.694e-02, 1.999e-02, 4.726e-02, 2.442e-02, -1.189e-02, -1.264e-02, 4.453e-02, 7.919e-02, -6.138e-02, -3.088e-04, 7.662e-02, -2.065e-02, 4.986e-02, -6.891e-03), r5);\n\tr6 = MulAdd(s1_2_0, M4(-1.626e-01, 5.262e-02, -1.296e-01, 1.049e-02, 2.523e-02, 1.015e-02, 1.874e-02, -3.552e-02, 5.637e-02, -1.435e-02, 5.084e-02, -3.195e-03, 1.718e-02, 1.006e-01, -6.134e-02, -6.993e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(3.709e-03, 1.811e-01, 1.198e-02, 1.293e-01, 1.407e-03, 4.525e-02, 4.453e-03, -6.321e-03, -5.817e-03, -5.667e-02, 2.285e-02, -6.521e-03, -2.558e-03, 5.340e-03, -9.580e-03, 2.499e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-1.805e-01, -7.283e-02, -5.692e-02, 5.526e-03, -3.817e-02, -2.950e-02, 1.164e-01, -6.763e-03, 8.638e-02, 1.158e-01, -1.031e-01, -4.753e-02, -3.363e-02, 2.731e-02, 7.592e-02, 1.263e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(2.126e-01, -1.548e-01, 1.248e-01, 1.494e-02, 6.071e-02, -3.488e-01, -1.743e-01, -1.601e-02, -1.536e-01, -9.790e-02, -1.898e-03, -6.763e-02, 3.382e-01, -3.904e-02, 2.496e-02, -5.736e-04), r1);\n\tr2 = MulAdd(s1_2_1, M4(-5.102e-02, 7.541e-02, 3.747e-02, 4.662e-03, 4.889e-02, -3.481e-02, -2.426e-02, 3.190e-04, -2.763e-02, 6.444e-02, 8.276e-02, 3.508e-03, 1.459e-01, -3.519e-02, 6.460e-03, 4.298e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-8.450e-02, 3.920e-02, 6.572e-02, 4.983e-02, 1.034e-02, 9.651e-02, -7.928e-02, 1.842e-02, 4.835e-03, 1.587e-01, 1.065e-01, -1.131e-02, 2.608e-01, -3.436e-03, -1.462e-02, 1.411e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(3.063e-02, 7.395e-02, 7.857e-02, 6.185e-02, 7.622e-02, -2.948e-02, 9.664e-03, 1.013e-01, 8.846e-02, 6.907e-02, -2.735e-02, 2.816e-02, -9.381e-02, -9.730e-02, -5.714e-02, 1.399e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(8.237e-02, 2.005e-01, 3.710e-02, 3.380e-02, -3.976e-02, -1.813e-01, -6.956e-02, -1.150e-03, -1.042e-01, -1.529e-01, -4.427e-02, -2.933e-02, 1.619e-02, 1.221e-01, 5.376e-02, -2.360e-03), r5);\n\tr6 = MulAdd(s1_2_1, M4(-2.687e-01, 6.182e-02, 3.117e-02, 1.866e-02, -1.109e-01, 9.844e-02, -1.998e-01, -5.582e-02, 1.719e-01, 4.485e-02, -2.059e-01, 2.779e-02, -5.720e-02, -2.410e-02, -1.540e-02, -1.224e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(-7.913e-03, 3.343e-02, 3.468e-02, 3.040e-01, 2.903e-03, 7.365e-02, -1.310e-03, 1.284e-01, 1.710e-02, -1.325e-02, -1.666e-02, -2.823e-02, 1.201e-02, 3.364e-02, -2.850e-02, -1.195e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-3.219e-03, 2.995e-02, -7.448e-02, 7.649e-04, 4.396e-02, -1.377e-02, 3.958e-02, -3.547e-04, -3.903e-02, -6.740e-02, 4.301e-02, 1.890e-02, -1.963e-01, 3.790e-02, -1.655e-01, -2.385e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(4.025e-02, 7.995e-03, -3.613e-02, 1.582e-02, 6.963e-02, -3.435e-02, -3.272e-02, -2.079e-02, 1.331e-02, -2.628e-02, 2.837e-02, 1.399e-02, -8.373e-03, -1.787e-02, 5.023e-02, 8.816e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-5.854e-02, 2.469e-02, 3.763e-02, -8.565e-03, 6.101e-03, -3.480e-02, -1.694e-02, 9.216e-04, -7.341e-02, 6.790e-02, -5.137e-02, 1.067e-02, 7.931e-02, 3.395e-02, 3.000e-02, 2.422e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-2.854e-02, -5.521e-05, 6.690e-02, -1.520e-02, -1.010e-02, 1.538e-02, 1.028e-01, -2.643e-02, -8.179e-02, -1.146e-01, -7.060e-02, -3.336e-02, -6.270e-02, 5.688e-02, 8.764e-03, 6.533e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-4.160e-02, -1.919e-02, 4.673e-02, -3.846e-02, -1.252e-02, 7.659e-02, 1.350e-02, 3.913e-02, -3.903e-02, 2.304e-02, 2.733e-04, 2.353e-02, 1.784e-02, 2.936e-02, -6.158e-02, 1.100e-01), r4);\n\tr5 = MulAdd(s1_2_2, M4(-2.636e-02, -5.333e-02, 9.439e-02, 2.549e-02, 6.964e-03, 6.950e-02, 6.840e-02, -5.365e-03, 1.017e-01, 7.041e-02, -5.419e-02, 1.325e-04, 9.495e-02, 9.585e-02, -1.792e-01, 2.216e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-8.525e-02, 2.599e-03, -1.297e-02, 3.014e-02, -6.465e-02, 1.774e-03, 6.662e-02, -1.171e-02, -7.900e-02, -5.445e-02, 4.189e-02, -1.436e-02, -2.095e-01, 9.045e-02, 9.711e-02, -3.581e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-1.886e-02, 8.102e-02, 2.674e-02, -4.526e-02, 2.442e-03, 4.302e-02, -3.089e-02, -1.053e-02, 2.232e-03, -7.531e-02, -2.751e-02, -8.366e-03, -2.609e-02, -1.478e-01, 4.731e-02, 1.137e-01), r7);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.190e-02, 3.247e-02, 2.676e-02, -2.644e-02, -5.732e-03, -2.439e-02, 1.811e-02, 2.866e-02, -5.053e-02, -1.007e-01, 4.552e-02, -2.374e-03, -1.515e-03, 6.039e-02, 6.785e-02, 2.918e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.142e-01, 1.998e-02, 9.220e-02, 1.752e-02, 5.631e-02, -2.012e-02, -1.967e-02, -2.005e-02, -7.285e-02, -2.289e-02, -9.645e-02, -2.172e-02, -7.770e-02, 4.411e-02, -6.834e-02, 2.289e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-9.142e-03, 1.728e-03, 4.084e-03, 7.414e-02, -1.065e-02, 1.082e-02, 1.137e-02, 4.732e-03, 2.548e-02, 2.001e-03, -1.063e-02, 1.297e-02, 2.117e-02, 6.058e-03, 4.451e-02, 1.450e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(-2.832e-03, -7.988e-02, 2.260e-02, 1.505e-02, 1.807e-02, 8.734e-04, 1.978e-02, -5.402e-02, -3.184e-03, 5.093e-02, 3.816e-03, 2.241e-02, -6.353e-02, -2.424e-02, 4.936e-02, 1.620e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-5.525e-03, -1.562e-02, -5.966e-02, 5.802e-02, 1.107e-02, 1.599e-02, -9.274e-03, 1.595e-02, 2.463e-02, 7.865e-03, -1.759e-02, 5.154e-02, -5.269e-02, 5.373e-02, 7.118e-04, -3.115e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(2.624e-02, -5.172e-03, 5.375e-02, -3.728e-02, 3.700e-02, 4.217e-02, 5.911e-02, -4.132e-02, -5.703e-02, -7.694e-02, -5.258e-02, 1.965e-02, -4.446e-02, -3.310e-02, -1.075e-01, -8.150e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(6.841e-02, 3.141e-02, 6.985e-02, -2.226e-02, 2.608e-02, -4.777e-03, 1.679e-04, 2.014e-02, -1.001e-01, -3.479e-02, 7.849e-03, -7.895e-03, -2.046e-01, -2.388e-02, -1.043e-01, -1.927e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(1.036e-02, -5.527e-02, 1.658e-02, 1.114e-01, 1.847e-03, 4.789e-02, -2.195e-02, -1.572e-02, 1.047e-02, -5.730e-02, 2.691e-03, 3.933e-02, 2.216e-01, 2.379e-02, -8.913e-03, -1.296e-01), r7);\n\tr0 = MulAdd(s0_0_1, M4(-1.251e-01, -4.672e-02, 4.672e-03, 7.976e-02, 2.301e-02, -2.000e-02, 3.947e-02, 8.917e-03, -1.031e-01, -4.506e-02, -2.570e-02, 1.489e-02, 4.454e-02, 4.191e-04, -4.448e-02, -1.450e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(3.531e-01, 3.320e-02, -4.625e-02, 2.980e-02, 1.937e-01, -1.326e-02, 1.113e-01, -5.255e-02, -1.228e+00, 4.743e-03, 3.089e-02, 4.154e-02, -1.176e-01, 7.022e-02, 1.226e-01, -2.169e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(5.517e-02, 6.590e-03, -8.627e-03, -6.442e-02, -3.633e-02, -2.176e-02, 4.675e-02, -1.296e-02, -5.002e-02, 9.324e-03, 1.261e-02, -2.610e-02, -3.633e-02, 1.570e-03, 1.669e-02, 2.906e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-8.781e-03, -6.220e-02, 2.215e-02, -2.545e-04, 2.742e-02, -3.731e-02, -1.699e-02, -4.284e-02, -1.062e-01, -5.592e-02, 3.656e-03, 7.255e-02, 2.265e-02, 6.428e-02, 4.650e-02, 2.686e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(3.032e-02, 1.505e-04, 1.467e-02, -5.256e-03, -5.523e-02, 1.491e-02, -2.213e-02, 1.553e-02, -1.111e-01, 2.123e-02, 1.166e-02, -1.083e-01, -3.202e-02, 1.886e-02, 6.855e-02, -1.544e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-3.630e-02, -1.425e-02, 1.738e-02, -4.497e-03, 1.071e-01, 2.451e-02, 1.870e-01, -1.144e-01, -5.530e-02, -2.292e-01, -6.575e-02, -2.504e-02, -8.820e-04, -3.773e-02, 3.045e-02, -6.695e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(3.148e-02, 7.896e-02, 2.636e-02, -9.119e-03, 4.152e-02, 2.685e-02, 6.605e-02, -3.943e-02, 9.162e-02, -2.444e-02, -3.111e-02, 1.023e-01, 1.841e-02, -7.833e-02, -2.951e-02, -1.611e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(1.865e-02, 1.653e-02, -3.402e-02, -9.449e-04, 1.051e-01, 3.378e-02, -5.062e-02, -1.450e-02, -3.434e-03, -9.386e-02, 1.533e-02, 2.164e-02, 4.000e-02, -6.616e-02, 1.861e-02, 4.730e-03), r7);\n\tr0 = MulAdd(s0_0_2, M4(1.148e-01, -2.581e-02, 5.536e-03, -1.120e-02, -2.133e-02, -2.856e-03, 3.599e-03, -6.071e-02, -5.434e-02, -1.702e-02, 5.724e-02, 1.799e-02, -1.208e-01, 2.875e-02, -2.337e-02, 2.241e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.039e-01, 6.720e-03, 9.574e-03, 2.148e-02, -6.893e-02, 1.795e-02, 8.937e-02, 5.315e-03, -2.605e+00, 3.898e-02, 6.055e-02, 9.023e-03, -6.319e-02, 2.658e-02, -8.701e-03, 4.906e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(6.251e-02, -2.078e-02, 9.198e-03, -4.413e-02, -2.894e-02, -4.869e-03, 2.701e-03, -5.999e-02, 6.548e-02, 6.500e-03, 3.977e-03, -2.182e-03, -4.333e-02, 1.379e-02, 1.012e-02, 2.095e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(1.711e-02, -9.997e-03, 4.805e-03, -8.014e-03, 2.086e-02, -2.010e-02, -2.307e-02, -1.675e-02, 6.704e-02, 6.207e-02, -4.076e-02, 3.738e-02, -1.120e-02, 1.664e-02, 2.007e-02, -1.342e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-1.280e-03, -1.120e-02, 5.679e-03, 1.775e-02, -4.190e-02, 1.025e-02, 1.704e-02, -6.449e-02, -7.304e-02, -3.709e-03, 1.946e-02, 5.885e-02, 2.658e-02, 1.180e-02, -3.600e-02, 6.621e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(-5.267e-02, -4.061e-02, -1.593e-02, -1.160e-03, 2.918e-02, -3.093e-02, 5.187e-02, -2.195e-02, 1.030e-02, -9.192e-02, 3.961e-02, -7.718e-03, 3.004e-02, 3.280e-03, 5.575e-02, -1.601e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(-2.731e-02, 3.873e-03, -5.554e-03, 7.429e-04, 1.169e-01, -1.900e-02, 3.796e-02, -1.035e-02, -1.325e-02, -2.911e-02, 3.089e-02, 1.608e-02, 2.909e-02, 4.005e-03, 4.103e-03, -3.522e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-1.046e-02, -4.796e-03, -1.368e-02, -2.671e-03, -8.525e-03, -1.871e-02, 6.429e-02, -1.620e-02, 8.129e-03, -1.813e-02, -2.484e-03, -6.893e-02, -2.743e-02, 1.755e-02, 2.703e-02, 1.798e-03), r7);\n\tr0 = MulAdd(s0_1_0, M4(-7.256e-02, 4.709e-02, 4.176e-02, -1.345e-01, 8.611e-02, 1.970e-02, 1.666e-02, 5.124e-02, -3.857e-02, -2.934e-02, -5.945e-02, -2.300e-03, 9.946e-02, 5.055e-02, 1.084e-01, -1.032e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(3.100e-02, 1.458e-02, 3.002e-01, 5.162e-03, -4.625e-02, 5.137e-02, -5.188e-02, -5.614e-03, -4.757e-01, -2.149e-02, -1.390e-01, -3.248e-02, 1.794e-01, -9.359e-02, -2.928e-01, -9.051e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(3.249e-02, 3.903e-03, 3.405e-02, 2.154e-01, 1.325e-02, -2.963e-02, -7.089e-04, 9.353e-03, -4.213e-02, 3.870e-02, -5.510e-03, 3.984e-03, -2.947e-02, -1.924e-02, 2.991e-02, 2.686e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.568e-02, -6.562e-02, 9.179e-02, 8.779e-02, 2.480e-02, 2.841e-02, 1.933e-02, 6.901e-02, -1.003e-01, -3.320e-02, -6.897e-02, 4.993e-02, 1.323e-01, -1.069e-01, -1.206e-01, 5.711e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-1.091e-01, -3.523e-02, -1.938e-01, 9.402e-02, -4.495e-02, 2.590e-02, -6.521e-03, -4.589e-02, -3.058e-02, -4.656e-02, -2.522e-02, -2.169e-02, -5.248e-02, -5.650e-02, -9.884e-02, 3.337e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(4.344e-02, -9.895e-02, -2.222e-02, -4.675e-02, -6.643e-02, -6.669e-02, -4.842e-02, 9.596e-03, -7.058e-02, -1.637e-02, 2.603e-02, 2.587e-02, -3.154e-03, 1.759e-01, -1.272e-02, -5.257e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(5.553e-02, 7.058e-02, 6.017e-02, -4.450e-02, -6.565e-02, -3.435e-02, -5.816e-02, -8.786e-03, 5.542e-02, -4.198e-02, -1.125e-02, 3.260e-02, -1.488e-01, -4.909e-02, -3.211e-02, -9.009e-03), r6);\n\tr7 = MulAdd(s0_1_0, M4(1.351e-01, 7.270e-02, 9.101e-02, 6.419e-02, -1.030e-03, -2.601e-02, 1.305e-02, -4.815e-02, 8.111e-03, -1.379e-01, -1.504e-02, 9.517e-02, 2.529e-01, 6.672e-02, -5.201e-02, 3.977e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-1.212e-01, -1.108e-04, 2.373e-01, 1.496e-01, 5.105e-02, 3.453e-02, -5.950e-02, 2.989e-01, 1.096e-01, -7.200e-02, 1.846e-02, -5.775e-02, -1.649e-01, -7.799e-02, -4.398e-01, -1.639e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-9.402e-02, -3.103e-02, -2.061e-01, 6.733e-02, -2.396e-01, 6.750e-02, -1.150e-01, 3.235e-02, 1.828e-02, -4.927e-02, 5.344e-02, 3.052e-02, 9.817e-02, -1.723e-01, 1.739e-01, 3.022e-03), r1);\n\tr2 = MulAdd(s0_1_1, M4(3.170e-02, 4.456e-02, -5.154e-02, -4.521e-01, 3.795e-02, -2.431e-02, 5.111e-03, -3.380e-02, 4.156e-03, 5.580e-02, 2.640e-02, -1.766e-02, 5.011e-02, -4.819e-03, 1.315e-01, 2.095e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(7.988e-02, -2.189e-01, 2.735e-02, -5.610e-02, -1.183e-02, 8.609e-04, 4.297e-02, 1.210e-01, -7.422e-02, 1.274e-01, 1.001e-01, -4.848e-02, -1.529e-01, 1.919e-01, 3.583e-03, 5.498e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(-8.564e-02, 6.562e-02, -9.612e-02, 5.337e-02, -1.207e-01, -2.709e-02, 1.725e-01, 1.187e-01, -1.913e-01, -2.001e-01, 5.144e-03, -1.521e-01, -7.370e-02, -8.371e-02, 3.189e-01, -1.771e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(6.225e-02, 1.530e-01, -2.054e-01, 4.575e-02, -7.271e-02, -4.273e-02, -2.304e-01, -7.523e-02, 1.148e-03, -1.222e-01, 6.283e-03, 1.414e-02, 5.330e-02, -6.629e-02, -1.438e-01, -1.952e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(4.769e-03, -8.476e-03, -3.423e-02, -3.520e-02, -4.383e-01, -4.072e-02, -5.351e-02, 2.790e-02, -1.431e-01, -1.011e-01, 1.076e-01, 1.414e-01, -1.529e-01, 9.552e-03, -3.299e-02, 1.351e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(-1.815e-01, 3.771e-02, -1.265e-01, -6.235e-02, -1.087e-01, 4.228e-02, -2.088e-01, -7.184e-03, -1.907e-02, -7.370e-02, 1.266e-02, 2.168e-02, -3.190e-01, 2.691e-02, -1.283e-01, 7.194e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(1.106e-01, -1.272e-02, -1.002e-02, -1.004e-01, -1.224e-01, -3.022e-02, -1.456e-01, -2.062e-01, 8.410e-02, 1.379e-01, -1.360e-01, 4.848e-04, -2.822e-02, 1.694e-02, -2.050e-04, -6.597e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-9.730e-02, -2.255e-02, -2.129e-02, -3.503e-02, 1.322e-01, 5.371e-02, 4.865e-02, -1.131e-02, 2.376e-01, -3.768e-02, -5.507e-02, -2.201e-02, 5.602e-02, -2.534e-02, 5.129e-02, 4.753e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(3.464e-02, -3.733e-02, 2.415e-02, -7.468e-02, 3.343e-02, 3.567e-03, 4.144e-02, 2.413e-02, -2.769e-02, -6.290e-03, 2.240e-02, -4.743e-03, -2.728e-02, 1.592e-02, -1.006e-02, -2.452e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-6.062e-02, 8.394e-02, -3.243e-03, 2.717e-02, -7.814e-02, 1.162e-01, 1.025e-01, 2.891e-02, 5.095e-02, -4.110e-02, -5.221e-02, -8.032e-02, 1.451e-02, -6.364e-02, 4.320e-02, 2.200e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(-4.427e-02, -9.438e-03, 5.725e-02, -1.625e-02, -2.634e-02, -5.115e-02, -6.960e-02, 7.331e-02, -1.008e-01, -2.438e-01, 2.781e-02, 6.643e-02, -1.991e-02, -6.636e-03, -2.546e-02, -1.329e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(2.626e-02, 1.218e-02, -4.009e-02, 6.571e-03, -5.333e-02, 4.121e-03, -1.412e-01, -4.965e-02, 1.934e-03, -1.147e-01, 1.248e-01, 7.810e-02, -4.692e-02, -1.358e-02, 1.284e-02, 7.251e-04), r5);\n\tr6 = MulAdd(s0_1_2, M4(-2.198e-02, 3.264e-03, 2.197e-02, -6.651e-04, -1.968e-01, -2.069e-02, -4.969e-03, -2.915e-03, 1.580e-01, -1.697e-01, 7.402e-02, 7.297e-02, -5.342e-02, 7.157e-03, -3.414e-02, -4.971e-03), r6);\n\tr7 = MulAdd(s0_1_2, M4(5.238e-02, -4.292e-02, 2.952e-02, -9.920e-03, 7.067e-02, -2.492e-03, 2.817e-01, 5.701e-02, 5.888e-03, -4.600e-02, -3.478e-02, 1.181e-01, -9.001e-03, 6.140e-02, 2.712e-02, -2.401e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-7.674e-02, 1.714e-03, -5.954e-03, -9.892e-03, 2.056e-02, -4.895e-02, 1.008e-02, 1.708e-02, -8.980e-02, -1.546e-02, 4.760e-02, -1.221e-02, 7.046e-02, -6.553e-02, 1.284e-02, 1.180e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.093e-02, 5.481e-02, 6.810e-02, 1.693e-02, 6.164e-02, -6.961e-02, -4.851e-02, 2.485e-02, -5.020e-01, -1.970e-02, -1.932e-02, -1.045e-02, -5.764e-03, -1.145e-01, 1.503e-02, 1.715e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(4.701e-02, 2.361e-03, -1.188e-02, 1.155e-01, 2.702e-02, -1.025e-02, 1.059e-02, -4.724e-02, 5.385e-03, -8.060e-03, -1.882e-02, -5.744e-03, 1.834e-02, -2.294e-02, -5.356e-05, 1.091e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(3.320e-02, -3.144e-02, -3.016e-02, -4.247e-03, 2.908e-02, -4.813e-02, -2.483e-02, -3.475e-02, -2.472e-02, 5.377e-02, 6.073e-03, 7.018e-03, 2.122e-02, 7.474e-02, -4.109e-04, -3.620e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(1.740e-02, 6.940e-03, -1.404e-01, 8.189e-02, 9.720e-03, -8.616e-02, 1.235e-02, -2.616e-02, 2.200e-02, 1.732e-02, -1.493e-02, -6.740e-02, -3.615e-03, -9.108e-02, 1.021e-01, 4.690e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(3.424e-02, -7.663e-04, 1.178e-02, 1.011e-03, -6.877e-03, 6.571e-02, -2.492e-02, 7.355e-03, -5.604e-02, -1.210e-01, -5.234e-02, 2.592e-02, 3.692e-02, -5.178e-02, 4.141e-02, -2.694e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(4.018e-02, 2.146e-02, 8.006e-02, -5.515e-04, -2.611e-02, -3.967e-03, -2.909e-03, -7.995e-03, 2.963e-02, -6.004e-03, -4.959e-02, -4.817e-02, 3.357e-02, -3.616e-02, -3.190e-02, 1.212e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(2.359e-02, 8.562e-02, -3.453e-04, -7.198e-03, -5.549e-03, -2.496e-02, -4.505e-02, -5.050e-02, 2.200e-03, -1.140e-01, -9.307e-03, 6.112e-02, 1.593e-03, -7.227e-03, -1.898e-02, -4.478e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-9.241e-02, -5.836e-02, -9.198e-03, 5.940e-02, 5.500e-02, 3.291e-02, 5.641e-02, 1.616e-01, -6.539e-02, -3.662e-02, -2.516e-02, -4.514e-03, 1.062e-01, 3.944e-02, 1.399e-02, 4.119e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-3.851e-04, 6.344e-02, -2.387e-01, 1.372e-02, 8.042e-02, -2.456e-01, 1.146e-01, 5.484e-02, -1.320e-02, -6.470e-02, 1.522e-02, -9.107e-03, -1.524e-01, -5.373e-02, 5.517e-02, 9.902e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.782e-02, -1.030e-02, -4.873e-02, 2.588e-01, 5.356e-02, -4.374e-03, 6.172e-02, 1.844e-02, 1.775e-02, -4.357e-02, -1.444e-02, -1.777e-02, 3.335e-02, -4.306e-02, -2.085e-02, 4.554e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(8.172e-02, -8.397e-02, -1.123e-01, -4.279e-02, -3.335e-02, 3.820e-02, -3.372e-02, 1.341e-02, -3.494e-02, 9.108e-02, 2.899e-02, -2.135e-03, -6.068e-02, -3.941e-02, -3.601e-02, 5.957e-03), r3);\n\tr4 = MulAdd(s0_2_1, M4(1.234e-01, -2.114e-02, -2.227e-01, 1.548e-01, -1.064e-01, -1.621e-01, 1.009e-01, -1.137e-01, 5.359e-02, -4.527e-03, -3.990e-03, -2.608e-02, -1.837e-02, -1.183e-02, -5.863e-02, -8.367e-03), r4);\n\tr5 = MulAdd(s0_2_1, M4(2.428e-02, 8.869e-02, -3.306e-02, 2.031e-02, 3.141e-02, -5.903e-03, -3.824e-02, -8.716e-03, -1.111e-01, -3.715e-01, -6.735e-02, 2.866e-02, -8.627e-02, -1.503e-02, 4.780e-02, -1.125e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(1.026e-01, 6.184e-02, 1.083e-01, -4.225e-02, -1.192e-01, -6.199e-02, -1.009e-01, 1.474e-02, 5.780e-02, -9.918e-03, -1.375e-01, 2.515e-02, -1.536e-01, -2.201e-02, -1.242e-02, -2.302e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(8.258e-02, 3.703e-02, 1.203e-01, 4.491e-03, -1.857e-02, -1.306e-02, -5.439e-02, -1.598e-02, -8.883e-03, -9.299e-02, 5.911e-03, 1.177e-01, -5.261e-02, -6.950e-02, 6.191e-02, -4.161e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(2.865e-02, 1.461e-02, -4.417e-02, 2.963e-02, -1.914e-02, 1.876e-02, -8.711e-02, -8.424e-02, -3.113e-01, -8.567e-02, 7.782e-02, 1.293e-02, 4.197e-03, -7.346e-03, 2.757e-02, 3.359e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-2.343e-02, 3.799e-02, -2.042e-02, -4.390e-02, 3.091e-02, -1.973e-01, 2.366e-02, 3.996e-02, -8.406e-01, -6.728e-02, -6.423e-02, 8.591e-03, 1.477e-02, -6.142e-03, 2.992e-02, 4.874e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(-8.382e-03, -7.952e-03, -3.928e-02, 1.296e-01, 3.931e-02, -1.896e-02, 4.966e-02, -5.269e-02, -4.721e-02, -3.455e-02, 3.141e-02, -1.102e-02, 1.846e-02, 6.820e-03, -1.227e-02, -8.201e-03), r2);\n\tr3 = MulAdd(s0_2_2, M4(-5.491e-03, 5.313e-03, -3.320e-02, -2.785e-02, -5.733e-02, -1.188e-01, -2.651e-04, 2.545e-02, 3.839e-02, 7.500e-02, 3.561e-02, 5.888e-03, -2.380e-03, 1.850e-02, 2.774e-02, 5.944e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(2.433e-02, 3.980e-02, -6.244e-02, 5.565e-02, -2.310e-02, -9.961e-02, -4.996e-02, -8.588e-02, 2.270e-02, -8.813e-02, 5.024e-03, 2.395e-02, 7.842e-03, -1.345e-02, -2.642e-02, 2.978e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(4.260e-02, 2.081e-02, -5.113e-02, 2.021e-02, 3.502e-04, 4.303e-02, -6.473e-02, 3.417e-03, -1.469e-01, -3.544e-01, -2.228e-01, 1.081e-02, 2.685e-03, 9.521e-03, 1.609e-02, -1.601e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(2.115e-02, 3.797e-02, 4.681e-02, -1.501e-02, -1.239e-01, 5.903e-03, -4.022e-02, -1.426e-04, 8.793e-03, 4.131e-02, -1.027e-01, -2.899e-02, 2.577e-03, -1.282e-02, -8.840e-03, -7.500e-03), r6);\n\tr7 = MulAdd(s0_2_2, M4(2.427e-02, 1.450e-02, 5.778e-02, 2.816e-02, 2.348e-02, -1.985e-02, 1.851e-01, -1.431e-01, 1.271e-04, -3.249e-01, 8.624e-03, 1.195e-01, -1.400e-02, 1.048e-02, -2.586e-02, 2.383e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-7.274e-03, 3.484e-02, 6.540e-02, -8.796e-03, -4.193e-02, -1.489e-02, 5.975e-02, 4.370e-04, 1.235e-01, -3.241e-02, -2.411e-02, -1.276e-02, 1.102e-01, 6.013e-02, 2.387e-02, -1.392e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-3.536e-01, 3.913e-02, -5.475e-03, -8.590e-03, -5.520e-01, 9.552e-03, -1.835e-02, 1.654e-02, 3.345e-01, 2.270e-02, 2.449e-03, -6.489e-03, 1.168e-02, 9.858e-03, 1.203e-01, -5.453e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.122e-02, -1.378e-02, 2.551e-02, 4.589e-04, 8.973e-03, 1.011e-02, -5.119e-03, 1.120e-02, -1.663e-02, 9.475e-03, 2.905e-02, -1.296e-03, -7.837e-02, -1.104e-02, 1.612e-02, 1.594e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(3.523e-02, -2.437e-02, -9.405e-02, 3.122e-02, -1.000e-02, -2.753e-03, -6.405e-02, 1.222e-02, 3.831e-02, -3.373e-02, -3.092e-02, -2.633e-02, 7.155e-03, -2.401e-02, -4.713e-02, 5.309e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(4.112e-02, -2.221e-02, -1.509e-02, 1.958e-02, 2.149e-02, -2.178e-02, -6.285e-03, -1.820e-03, 1.577e-02, 2.097e-03, 2.954e-03, 6.167e-02, 5.887e-03, -1.947e-02, -6.740e-03, 2.868e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-6.382e-02, -7.389e-02, 4.639e-02, -1.888e-03, -3.480e-02, -2.265e-01, -7.425e-02, 1.113e-02, -1.479e-02, -4.809e-02, 4.073e-02, 1.415e-02, 2.535e-02, 8.772e-02, 1.961e-02, -6.249e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-1.162e-01, -1.543e-02, -4.288e-03, -7.178e-02, -2.808e-02, -1.365e-02, 1.493e-02, -1.551e-02, -5.699e-02, 5.332e-02, -3.745e-02, -2.442e-02, -8.410e-02, -3.160e-02, 2.701e-02, -2.628e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-1.826e-02, 6.311e-03, 8.571e-03, 1.176e-01, 1.630e-02, -1.989e-01, 6.147e-03, 9.931e-02, 1.241e-02, 8.813e-02, 1.510e-03, 2.235e-02, -2.851e-03, 7.237e-02, 3.676e-03, -6.917e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(1.093e-04, -1.329e-01, 7.317e-02, 5.757e-04, -8.283e-02, -6.013e-02, -4.230e-02, 1.157e-02, 5.107e-02, 2.705e-01, 7.880e-02, 1.455e-02, -4.336e-02, -3.829e-02, 5.202e-02, -1.740e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-3.462e-01, 4.971e-02, 5.905e-02, 4.391e-02, -6.269e-01, 3.711e-02, -5.341e-02, 3.998e-02, 3.721e-01, 9.541e-03, -1.418e-01, 6.171e-02, 2.811e-01, -7.497e-02, -2.211e-01, -1.444e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(4.867e-03, 2.907e-02, -1.088e-02, -3.014e-03, 9.474e-02, 1.916e-02, -2.935e-03, 3.386e-03, 8.068e-02, 4.746e-02, 9.097e-03, -1.101e-02, 5.532e-02, 3.278e-02, -7.483e-05, -1.475e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(1.265e-01, 1.733e-01, -1.053e-01, -2.000e-03, 7.891e-02, 6.268e-02, 2.495e-03, -1.505e-02, 1.861e-01, 2.183e-01, -7.236e-02, 2.137e-01, 1.246e-01, 1.333e-02, -8.873e-02, -4.895e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(9.562e-02, -9.303e-02, -1.839e-02, 6.859e-02, 5.309e-02, -4.331e-02, 1.210e-03, 4.496e-02, 9.526e-02, -5.156e-02, 9.937e-03, -1.839e-01, 1.814e-02, 3.619e-02, 4.964e-03, -1.178e-01), r4);\n\tr5 = MulAdd(s1_0_1, M4(4.303e-02, -1.958e-02, -2.199e-01, -3.147e-01, 8.988e-02, -1.025e-01, -1.631e-01, -1.211e-02, -1.603e-01, 6.299e-02, -6.172e-02, 1.040e-01, -4.499e-02, -4.220e-02, 7.679e-03, -4.024e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-1.134e-01, 8.409e-02, -7.225e-02, 8.867e-03, -9.497e-02, -3.108e-02, 4.732e-02, 7.622e-03, -1.383e-01, -8.675e-03, 6.701e-02, 9.930e-02, 1.868e-01, 5.833e-02, 3.240e-02, 5.229e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-2.770e-02, -5.207e-02, -1.848e-03, 1.770e-02, -1.834e-02, -6.218e-02, 7.530e-03, -4.123e-03, 4.749e-02, -2.717e-02, -2.537e-02, -1.512e-01, 4.501e-03, 1.845e-01, -2.732e-03, -1.599e-01), r7);\n\tr0 = MulAdd(s1_0_2, M4(2.469e-03, 1.087e-01, -1.297e-02, 1.060e-02, -4.395e-02, 3.821e-02, -4.197e-03, 6.070e-03, -1.072e-01, 4.138e-02, 1.197e-02, -1.062e-02, 1.933e-02, 3.522e-02, 2.262e-01, -1.381e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-5.605e-01, 4.165e-02, 1.116e-02, -4.909e-03, -4.205e-01, 1.908e-02, -2.248e-02, 4.482e-02, -4.318e-02, -3.527e-03, 3.746e-02, 2.830e-02, 5.396e-01, -3.665e-02, -2.425e-02, -6.330e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(4.729e-02, -7.689e-03, 3.516e-02, 8.037e-03, -5.783e-02, 1.858e-02, -2.143e-02, 7.920e-03, 9.126e-02, 2.334e-02, 7.745e-02, -9.750e-03, 1.558e-01, 3.447e-02, 1.324e-01, 1.687e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-1.310e-02, 9.731e-02, -6.692e-02, -4.017e-03, -1.895e-02, -3.074e-02, 1.182e-02, -2.840e-02, -5.380e-02, 9.747e-02, -8.642e-02, 5.938e-02, 7.433e-02, -4.596e-02, -4.752e-01, 4.810e-03), r3);\n\tr4 = MulAdd(s1_0_2, M4(-5.055e-02, -5.041e-02, -1.987e-02, 1.222e-02, -1.155e-02, -1.686e-02, 5.356e-03, -3.996e-02, -8.795e-03, 5.240e-02, 4.901e-03, -2.494e-01, 8.219e-02, -4.236e-02, -2.419e-02, -2.165e-01), r4);\n\tr5 = MulAdd(s1_0_2, M4(3.897e-02, -5.280e-02, 7.504e-02, 1.927e-02, -4.659e-02, 3.291e-02, -1.044e-01, 3.195e-03, 9.446e-02, 1.522e-01, -5.906e-02, -1.655e-02, 1.908e-01, 2.331e-02, 6.342e-02, 4.048e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(1.333e-01, 1.505e-02, -2.347e-02, -2.152e-02, -6.640e-02, -8.533e-02, -2.989e-02, 1.334e-03, 2.517e-02, -4.446e-02, 6.265e-02, 7.639e-02, 2.674e-01, 5.249e-02, 1.278e-01, 4.800e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-3.001e-03, 5.977e-02, -1.616e-02, 1.158e-01, 1.256e-02, 2.889e-02, -1.063e-02, 1.264e-01, 2.725e-02, 7.425e-02, -2.671e-03, -6.490e-02, -1.489e-02, 2.540e-01, -5.275e-02, -2.843e-01), r7);\n\tr0 = MulAdd(s1_1_0, M4(-5.122e-02, -1.445e-02, 9.073e-02, -1.581e-02, 3.978e-02, 3.823e-02, 3.733e-02, 8.759e-03, 4.086e-02, -3.521e-02, -2.237e-02, -3.597e-03, 6.974e-02, 5.608e-02, 5.019e-02, -9.402e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.867e-02, -8.389e-03, 5.836e-02, -1.083e-03, -1.985e-01, -4.589e-03, -9.718e-02, 3.290e-02, 1.130e-01, -1.812e-02, -2.480e-02, -1.154e-02, 1.773e-01, 4.332e-04, 1.902e-01, -7.964e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(6.513e-02, 8.147e-03, -1.693e-02, -7.081e-03, 6.221e-02, 2.612e-02, -1.189e-02, 4.903e-03, -7.712e-02, 8.863e-03, -1.350e-02, -6.053e-03, 1.629e-02, -5.221e-03, -4.987e-03, -8.218e-03), r2);\n\tr3 = MulAdd(s1_1_0, M4(-7.079e-02, 1.193e-01, 7.759e-02, 3.502e-03, 1.234e-02, 2.559e-03, -5.431e-02, 7.012e-02, 3.166e-02, -3.894e-04, -2.438e-02, -1.818e-02, 3.178e-02, 2.708e-02, 9.795e-02, 3.825e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-7.234e-03, -2.844e-02, -2.266e-02, 7.055e-02, 4.288e-03, -2.612e-03, -3.472e-03, -5.801e-02, 2.899e-02, 1.508e-02, 8.610e-03, 6.891e-02, -1.794e-02, 2.638e-02, -2.808e-02, 4.706e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(7.318e-02, -3.162e-01, -1.191e-01, 1.792e-02, -9.434e-02, -3.830e-01, -9.376e-02, 2.808e-02, 7.890e-02, 1.091e-01, 1.603e-02, -1.943e-02, 1.314e-02, 1.465e-01, -5.252e-02, -2.357e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(5.299e-02, -5.236e-02, 2.978e-02, -2.779e-02, 7.772e-02, -2.204e-02, -1.036e-02, 1.496e-02, -3.041e-03, 3.257e-02, 5.782e-02, -2.827e-02, 1.169e-02, -2.424e-02, 2.118e-02, -3.845e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(-1.395e-02, -4.939e-01, 1.134e-02, 6.316e-02, -1.403e-02, -5.840e-01, 7.818e-03, 3.424e-02, 1.009e-02, 5.865e-02, -9.668e-04, -6.105e-02, -4.057e-03, -4.069e-02, -3.122e-03, -1.327e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(5.014e-02, -1.628e-01, -1.003e-01, 2.613e-02, 1.249e-01, 2.299e-02, 7.903e-02, 6.503e-03, -3.310e-02, 1.200e-01, 2.504e-01, 3.666e-02, 1.341e-01, -1.317e-01, -7.889e-02, -4.284e-03), r0);\n\tr1 = MulAdd(s1_1_1, M4(-3.555e-01, -7.642e-01, 9.652e-02, -7.539e-02, 6.262e-03, -7.692e-02, -2.220e-01, 3.346e-02, -1.905e-01, 6.272e-02, -1.140e-01, -4.658e-02, 1.881e-01, -2.516e-03, -2.876e-01, -1.042e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.817e-01, 1.261e-02, -2.513e-01, -9.254e-02, 4.123e-02, 4.078e-03, -3.907e-02, 3.392e-04, -4.582e-02, 7.154e-02, 6.070e-02, 1.279e-02, -1.899e-01, 6.800e-02, -1.663e-02, -1.481e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-3.039e-01, -2.271e-01, 1.687e-01, -3.622e-01, 2.619e-02, 1.416e-02, 2.803e-02, -6.560e-02, 2.523e-01, -2.395e-02, -1.198e-01, 1.372e-01, -4.989e-02, -1.274e-01, -7.840e-02, -1.190e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(-1.595e-01, 9.942e-02, -4.463e-02, 2.717e-01, 5.829e-03, 1.628e-02, 2.306e-03, -4.527e-02, 2.086e-03, 5.194e-02, 2.254e-02, -8.246e-02, 1.639e-01, 7.597e-02, 5.428e-03, 6.657e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(3.037e-01, 1.407e-02, -4.269e-01, -2.020e-02, -5.937e-03, -8.193e-02, -1.397e-01, -2.066e-02, -3.661e-01, 2.131e-01, 5.559e-02, -2.716e-02, 2.246e-02, 2.564e-01, 3.674e-02, -6.013e-04), r5);\n\tr6 = MulAdd(s1_1_1, M4(3.109e-02, -2.214e-01, -3.324e-01, -9.887e-02, -9.183e-02, -1.920e-02, -2.569e-02, -2.241e-02, 3.779e-02, -1.359e-01, 1.159e-01, 1.041e-01, -1.135e-01, -3.451e-03, -4.079e-02, -1.333e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(3.128e-02, -8.027e-01, 4.633e-02, -6.596e-02, 2.183e-02, -2.939e-01, -1.064e-02, 1.142e-01, -2.783e-03, 1.550e-04, -1.418e-02, -1.683e-01, 1.660e-02, 2.078e-01, -1.001e-02, -1.110e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(1.847e-02, 9.695e-02, -1.869e-01, 8.863e-03, -2.594e-01, -8.506e-02, 5.568e-02, 1.215e-02, 3.356e-02, 7.151e-02, -1.362e-01, -3.190e-03, -8.714e-02, -6.103e-02, -2.888e-01, -2.158e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.945e-01, -7.690e-02, -5.272e-03, -2.802e-02, -5.981e-01, -8.582e-02, 5.701e-02, 2.938e-02, 6.191e-01, 5.517e-02, 7.469e-02, 2.993e-02, -1.337e-01, 2.204e-01, 1.385e-01, -1.447e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(5.949e-02, -2.914e-02, 1.317e-02, -1.126e-03, -2.041e-02, 2.717e-02, -7.737e-02, 1.185e-02, 3.903e-02, 4.288e-03, 6.213e-02, 1.009e-02, -5.440e-01, 1.693e-01, -7.828e-02, -9.975e-03), r2);\n\tr3 = MulAdd(s1_1_2, M4(5.690e-02, -1.675e-01, 6.749e-02, -1.990e-02, -4.752e-02, 1.392e-01, -8.887e-02, 5.022e-02, -5.337e-02, 7.738e-02, -3.271e-02, 1.137e-01, 8.032e-02, 1.687e-01, -8.585e-03, 1.322e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.734e-02, 6.711e-02, -2.853e-02, 8.661e-02, 7.094e-02, -6.498e-02, 2.230e-02, 4.428e-02, -1.377e-02, 6.124e-02, 2.344e-02, -6.180e-02, 9.620e-02, 1.200e-01, 6.327e-03, 1.156e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(6.983e-02, -6.876e-02, 1.184e-01, 3.053e-02, -1.303e-02, -1.951e-03, -2.033e-01, 1.237e-03, 8.374e-02, 1.083e-01, 4.211e-02, 9.776e-03, 6.000e-02, 2.107e-02, 3.724e-02, 4.577e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-1.310e-01, 4.422e-02, -7.208e-02, 8.259e-04, -7.985e-02, 3.769e-02, -4.587e-02, -9.506e-03, -1.996e-01, 1.906e-02, 2.160e-02, 2.136e-02, -1.821e-01, -1.392e-01, 5.550e-02, -1.653e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(-2.520e-03, 1.372e-01, -2.785e-02, 9.623e-02, 1.546e-02, -2.149e-01, -1.035e-02, 4.748e-02, -1.655e-02, 1.332e-01, 6.852e-03, 1.834e-02, -8.191e-03, 7.715e-02, -3.453e-02, 5.075e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(2.165e-02, 8.851e-03, 4.361e-02, -6.613e-03, -6.391e-03, -1.690e-02, -2.414e-02, -8.830e-03, 4.818e-02, -2.707e-02, -1.020e-02, -2.870e-03, 1.945e-02, 3.065e-02, -1.235e-02, -9.992e-04), r0);\n\tr1 = MulAdd(s1_2_0, M4(-2.455e-01, 1.417e-02, 8.142e-02, -2.588e-02, -2.431e-01, -6.125e-03, 5.359e-02, -9.469e-03, 6.819e-02, 5.752e-04, -5.933e-02, 4.106e-03, 2.839e-02, -3.581e-03, 7.808e-02, 6.524e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(7.485e-03, -1.293e-02, -1.288e-03, 9.154e-03, -4.492e-02, 1.380e-02, 1.131e-02, -1.464e-03, -2.692e-03, 6.699e-03, 4.619e-03, 4.409e-03, 1.019e-02, -1.226e-02, 1.152e-02, 7.980e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(-2.614e-02, 3.377e-02, 7.422e-02, -4.370e-02, 2.195e-03, 4.333e-02, 6.605e-03, -1.064e-02, 2.623e-02, 2.138e-02, -5.780e-02, -2.322e-02, -2.534e-02, 2.669e-02, 6.859e-02, -1.526e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-5.276e-02, -2.902e-02, -2.199e-02, -2.104e-02, 1.353e-02, -1.519e-02, -5.031e-03, 2.682e-02, 2.701e-02, 2.698e-02, -1.033e-03, 1.496e-02, -1.560e-02, -2.976e-02, -1.264e-02, 2.566e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-2.457e-03, -8.998e-02, 1.036e-01, 1.879e-02, -5.726e-02, -3.646e-01, 6.184e-02, 2.600e-03, 6.021e-03, 9.217e-03, -1.059e-02, 5.924e-03, -1.416e-02, 5.655e-02, -2.597e-03, -1.873e-03), r5);\n\tr6 = MulAdd(s1_2_0, M4(2.935e-02, 4.676e-03, -6.237e-02, -4.614e-02, 8.921e-04, 6.344e-03, -4.885e-02, -2.903e-03, 6.476e-03, 9.904e-03, 1.488e-03, -6.195e-03, -3.323e-02, 7.644e-03, -3.208e-02, -1.878e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(-1.802e-03, -9.701e-02, -2.735e-03, 1.167e-01, -3.431e-04, -4.835e-02, -2.000e-03, 7.267e-02, 1.782e-03, 2.291e-02, 4.826e-03, -2.849e-02, 1.365e-03, -3.593e-03, -6.564e-03, -2.104e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(5.826e-02, 1.526e-02, -4.692e-03, -1.594e-02, -6.774e-02, -1.480e-02, 8.855e-03, 5.621e-03, 3.005e-02, 4.526e-03, 7.509e-02, 1.206e-02, 5.900e-02, -2.428e-03, -2.465e-03, 4.147e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(4.359e-02, -4.088e-02, -7.938e-02, 3.990e-02, -8.253e-02, 3.101e-02, 1.921e-02, 3.568e-02, 3.005e-03, 4.058e-02, -9.545e-02, 2.043e-02, 1.241e-01, 4.225e-02, -1.927e-01, 5.898e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.386e-02, 2.878e-03, -3.983e-03, 1.324e-02, 3.209e-02, 2.864e-02, -1.981e-02, 1.053e-02, 1.282e-03, 2.183e-03, 2.922e-02, -2.461e-03, -3.088e-02, -1.112e-02, 1.554e-02, 1.500e-03), r2);\n\tr3 = MulAdd(s1_2_1, M4(-1.222e-02, -2.996e-01, 1.663e-01, -6.004e-02, 7.180e-02, -3.418e-02, 3.168e-02, 3.564e-03, 5.410e-02, -1.063e-02, 2.409e-02, -2.967e-02, 1.786e-02, -6.441e-02, -4.803e-02, 6.852e-03), r3);\n\tr4 = MulAdd(s1_2_1, M4(-9.190e-02, -5.043e-01, -1.935e-02, 7.928e-02, -5.659e-02, 2.621e-02, 2.068e-02, -3.360e-03, -7.662e-03, -9.185e-03, 6.148e-03, 7.641e-02, 2.329e-01, 7.981e-02, 3.477e-02, 1.074e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(6.139e-02, -4.402e-02, 4.560e-02, 5.115e-03, -9.950e-03, -2.920e-01, 1.354e-01, -6.816e-03, -1.548e-01, 2.258e-03, 2.162e-02, 1.703e-03, 7.391e-02, 2.068e-01, 3.154e-03, -2.542e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(1.713e-01, -1.473e-01, 3.450e-02, -1.168e-02, 3.737e-02, -3.509e-02, 2.600e-02, -8.486e-03, 7.288e-03, 1.468e-02, 8.234e-03, -1.913e-02, 1.059e-01, 4.111e-02, 6.232e-02, -1.261e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(-2.808e-03, -1.379e-03, -1.475e-02, 1.223e-01, -3.961e-03, -2.842e-01, -7.845e-03, 4.272e-02, 4.150e-03, 3.896e-02, -7.336e-04, -8.273e-02, 8.945e-03, 1.130e-01, 4.366e-03, -2.893e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.694e-02, 5.850e-03, -1.312e-01, -7.393e-03, -2.070e-02, -2.979e-03, 1.181e-02, 1.792e-02, 1.183e-01, 2.047e-02, -5.302e-02, 2.107e-04, -4.007e-02, -2.979e-03, -1.490e-01, -1.397e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.824e-01, -8.331e-03, 1.066e-01, -2.373e-03, -1.976e-01, 3.222e-02, -2.624e-02, 5.580e-02, 1.455e-01, 1.722e-02, 5.155e-02, 1.796e-02, 1.566e-01, 4.020e-03, 8.069e-02, -1.003e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(6.424e-02, -9.017e-04, 1.138e-02, -4.777e-03, -5.247e-02, 3.861e-02, 2.848e-02, 8.324e-03, 1.518e-02, -1.205e-02, 4.422e-02, -8.634e-03, -1.171e-01, -1.518e-02, -5.705e-03, -2.229e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(2.616e-02, 8.418e-03, 6.689e-02, -7.596e-03, -4.250e-02, -9.321e-02, 2.777e-02, -1.389e-02, 2.716e-02, -1.111e-02, 4.532e-02, 9.224e-03, -1.956e-02, 2.783e-01, 6.560e-02, 2.336e-03), r3);\n\tr4 = MulAdd(s1_2_2, M4(3.891e-02, -2.423e-02, -1.789e-02, 2.222e-02, -4.580e-02, 7.642e-03, 2.680e-02, 7.846e-04, -4.330e-04, 7.343e-03, 7.432e-03, 6.776e-03, 1.831e-01, 3.622e-02, 2.888e-02, 1.370e-01), r4);\n\tr5 = MulAdd(s1_2_2, M4(3.082e-03, -8.250e-02, -2.416e-02, 7.328e-03, 2.342e-02, -2.003e-02, 8.843e-02, -1.422e-02, 5.598e-03, -2.053e-02, 7.929e-03, -2.709e-03, 7.814e-02, 1.175e-02, 1.419e-02, 3.141e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(1.313e-01, 3.770e-02, -6.576e-02, -1.486e-02, 8.372e-02, -4.435e-02, 3.660e-02, 1.389e-03, -4.390e-02, 1.162e-02, 2.113e-02, -9.854e-03, 2.015e-01, 1.456e-01, -8.014e-02, -4.898e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(8.791e-03, 5.084e-02, -1.896e-02, 1.255e-01, -8.285e-03, -4.898e-02, 2.348e-03, -8.690e-03, -1.089e-03, 1.733e-01, -1.963e-03, -8.930e-02, -2.041e-02, 2.027e-01, 2.556e-02, 9.870e-03), r7);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.237e-02, -1.630e-01, -8.407e-02, -4.272e-02, 1.865e-02, 1.147e-02, 1.160e-02, -1.235e-02, 4.474e-02, 1.102e-01, 3.289e-02, 1.015e-02, 5.702e-02, -2.405e-02, 3.059e-02, -1.427e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-2.318e-01, 1.045e-02, -9.072e-02, -1.144e-01, 2.176e-02, -4.288e-02, -9.862e-02, -8.654e-02, -8.235e-01, 5.154e-02, -1.045e-01, 1.266e-03, -5.326e-02, -1.101e-02, 6.824e-02, -6.550e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.109e-02, -3.236e-02, -2.513e-02, -4.515e-03, -3.441e-02, -8.451e-03, -1.431e-02, 2.021e-02, -7.554e-03, -2.314e-02, 6.324e-02, 1.362e-02, -2.399e-02, -6.447e-03, -5.038e-03, 1.276e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-2.319e-01, -6.597e-02, 1.458e-01, -8.727e-02, 2.750e-02, -4.714e-02, -7.425e-02, -2.418e-02, 6.309e-02, -8.282e-02, -9.588e-02, 3.933e-02, -1.746e-02, 5.293e-02, -7.298e-03, -7.176e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(-1.655e-01, 1.043e-01, -3.020e-02, -7.079e-02, -1.181e-02, 5.176e-02, -7.470e-03, 6.910e-02, -1.250e-01, -4.046e-02, -3.838e-03, 1.158e-01, -1.057e-02, -7.553e-03, 4.629e-03, 6.936e-03), r4);\n\tr5 = MulAdd(s0_0_0, M4(2.192e-01, -3.382e-03, 1.169e-01, 7.254e-02, 1.057e-01, 1.349e-02, 1.589e-02, 4.099e-02, -1.404e-01, -6.109e-02, 2.004e-01, -6.686e-02, 2.467e-02, 2.425e-03, 2.141e-02, -3.102e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(5.166e-01, 2.484e-02, 3.310e-02, -3.176e-02, 1.190e-01, 6.578e-02, 2.210e-02, 5.620e-03, -9.273e-02, -2.017e-02, -2.270e-02, -5.051e-02, -5.341e-03, 1.422e-03, 2.744e-02, -4.109e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(-2.593e-02, 6.398e-02, 2.935e-02, 2.180e-01, 2.599e-02, 6.478e-02, -2.471e-02, 8.238e-04, 3.308e-02, 7.048e-02, 1.677e-03, 1.382e-01, 4.548e-02, 5.257e-02, -2.270e-02, 5.127e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(1.755e-02, 5.184e-02, 1.740e-01, 1.071e-02, 1.912e-03, 6.436e-03, 3.000e-02, -4.261e-02, -2.313e-01, -1.932e-02, 3.282e-02, -4.146e-02, -5.549e-02, -7.018e-02, -1.361e-02, -2.985e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(2.783e-02, 2.672e-02, -1.062e-01, 1.604e-02, 2.301e-02, -1.430e-01, 7.154e-02, -8.255e-02, -5.124e-01, -9.272e-05, 1.378e-01, 5.214e-02, -4.402e-02, -3.948e-02, -4.090e-02, -3.047e-04), r1);\n\tr2 = MulAdd(s0_0_1, M4(6.127e-03, -1.371e-02, 3.808e-02, 2.181e-02, -9.835e-03, 1.233e-02, 1.612e-02, 4.120e-03, 1.645e-01, 6.924e-03, 5.661e-02, 7.702e-03, 2.921e-02, 8.707e-03, -2.496e-02, -1.344e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(5.147e-02, -1.858e-02, -7.922e-03, 3.905e-04, -1.304e-01, -1.263e-02, -5.237e-02, 3.235e-02, -8.777e-02, 2.615e-02, -4.430e-02, 7.865e-02, 3.800e-02, -1.400e-02, -3.193e-02, -6.613e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-8.092e-04, 4.239e-02, -4.818e-02, 2.465e-02, -2.505e-02, 5.661e-02, -8.237e-03, -1.240e-01, -8.556e-03, -5.858e-02, -3.651e-02, 1.519e-02, 3.704e-02, -2.701e-02, 2.363e-02, 1.254e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-2.387e-02, -1.889e-02, 5.122e-03, 5.720e-02, 1.369e-01, 9.236e-02, 7.876e-02, 5.896e-02, 5.210e-02, -1.469e-01, 8.734e-02, -4.375e-02, 1.554e-03, -2.348e-02, -2.030e-02, 4.616e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-3.574e-02, -8.909e-02, 3.233e-02, -2.619e-02, 6.634e-02, -7.155e-02, 2.278e-02, -8.330e-02, 9.798e-03, 3.760e-03, -3.812e-02, -6.605e-02, 4.677e-02, 1.229e-03, 4.299e-03, 1.596e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(-9.306e-03, 2.873e-02, -1.245e-02, 8.083e-02, 2.867e-03, 3.295e-02, -1.337e-02, 8.598e-02, -2.976e-02, 1.458e-01, 4.429e-02, -6.767e-02, -5.564e-02, -6.764e-02, 2.282e-02, 6.725e-03), r7);\n\tr0 = MulAdd(s0_0_2, M4(1.171e-01, 6.497e-02, -1.379e-03, -1.191e-02, -3.104e-02, -4.831e-03, -3.554e-02, -1.266e-02, -6.696e-02, -7.550e-03, -7.232e-02, 3.967e-03, 1.069e-02, -1.541e-04, -1.603e-03, 2.804e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-2.773e-01, 3.755e-02, -5.294e-02, -1.586e-02, 2.215e-01, 4.899e-03, 3.523e-02, -2.537e-03, -1.741e-01, 1.595e-02, -2.099e-02, 2.113e-02, 8.042e-02, 2.942e-03, -4.972e-02, -2.375e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(-4.069e-03, -1.854e-02, 1.121e-02, 1.053e-03, 1.104e-02, -4.302e-04, -9.250e-03, -6.965e-03, 6.844e-02, 1.691e-03, 1.681e-02, 1.006e-02, 3.128e-02, -3.822e-03, 1.816e-02, 1.670e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(1.140e-02, -1.160e-03, -1.692e-02, -2.947e-02, -3.371e-02, 9.792e-02, -1.484e-02, -3.289e-02, 2.569e-02, 7.998e-02, -4.237e-02, -1.653e-02, -2.206e-02, 6.246e-03, 8.181e-03, 2.667e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(1.073e-02, 3.823e-02, -1.364e-02, -4.232e-02, 1.654e-02, -9.544e-03, 2.360e-03, 1.228e-02, 1.617e-02, -6.339e-02, -1.886e-02, 4.844e-02, -2.670e-03, -1.226e-02, 3.123e-02, 4.555e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-3.488e-02, 1.057e-02, -4.591e-03, -1.568e-02, 7.025e-02, 1.793e-02, 1.643e-02, 3.069e-02, -3.166e-02, -1.112e-01, 4.771e-02, 1.513e-02, -7.691e-03, 1.188e-02, -9.853e-03, 2.755e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(5.120e-03, 3.293e-02, 4.351e-03, -3.173e-02, 1.421e-02, 2.594e-02, -1.713e-02, 2.552e-03, -3.522e-02, -4.869e-03, -1.588e-02, 2.753e-03, -5.310e-02, 8.024e-03, 1.512e-02, 2.301e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-8.492e-03, -7.118e-02, -6.927e-03, 7.897e-02, -1.387e-04, 6.417e-02, -5.599e-03, 3.251e-02, -8.202e-03, 1.353e-01, 6.470e-03, 3.239e-02, 1.862e-02, 5.625e-02, -6.519e-02, -1.700e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(1.741e-01, -8.119e-02, -1.086e-01, 2.027e-02, 8.711e-02, 6.450e-02, -4.905e-03, 2.610e-02, -3.360e-02, 2.576e-01, 8.651e-02, 3.652e-02, -8.543e-03, -5.623e-02, 3.122e-03, 7.502e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(3.195e-01, 1.178e-01, -7.244e-01, -5.477e-02, 1.803e-01, 7.425e-02, -2.551e-01, -1.818e-02, -2.232e-02, -6.620e-02, -1.204e-01, 1.658e-01, 1.546e-01, 5.691e-04, 3.110e-02, -1.108e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.373e-01, 3.406e-02, 1.368e-01, 3.725e-02, -9.024e-02, 1.328e-03, -1.049e-02, 1.200e-02, 7.813e-02, 1.764e-02, -1.263e-02, 4.022e-02, -7.455e-02, -2.223e-02, -1.993e-03, -5.619e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-2.340e-01, -2.953e-01, -3.435e-01, -2.301e-01, 4.400e-03, -7.877e-02, -3.622e-02, -3.979e-02, 2.970e-01, -1.376e-01, -2.735e-01, 2.882e-01, -4.968e-02, 5.878e-03, -2.221e-02, -9.004e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(2.355e-01, -3.569e-02, -5.774e-02, 3.949e-01, 1.470e-01, 8.584e-02, -1.048e-02, 1.656e-01, 4.310e-03, -2.721e-02, 8.838e-03, 1.709e-01, 3.345e-02, -3.771e-02, 6.904e-03, 5.855e-03), r4);\n\tr5 = MulAdd(s0_1_0, M4(1.042e-01, 3.213e-01, 2.041e-01, 8.213e-03, -3.806e-02, 8.988e-02, 1.090e-01, -1.757e-02, -9.465e-02, 1.367e-01, -1.821e-01, -7.820e-03, 5.550e-02, -5.914e-03, -1.552e-02, -2.568e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(3.808e-02, 9.517e-02, -8.957e-04, -1.509e-01, 2.382e-02, 2.070e-02, -3.251e-02, -1.044e-01, -2.810e-03, -8.069e-02, 9.363e-03, 8.852e-02, 7.147e-02, 5.046e-02, 1.096e-01, -5.307e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(-8.224e-03, 7.594e-02, 1.079e-02, 1.725e-01, -7.546e-03, 8.994e-02, 3.960e-03, 2.651e-02, -3.260e-03, 4.232e-02, -2.033e-02, 1.144e-01, 1.966e-01, 2.716e-02, -8.766e-02, 1.549e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-2.915e-01, -4.429e-02, 9.213e-02, 4.989e-02, -1.077e-01, -1.480e-01, -1.170e-01, 3.289e-02, -2.079e-01, 4.472e-02, -3.985e-01, -6.567e-02, 2.193e-02, -1.046e-03, 5.909e-02, -5.957e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(4.267e-01, -2.653e-02, 6.729e-02, 2.470e-01, 1.042e-01, 1.294e-01, 1.107e-01, -4.190e-02, 5.062e-01, -2.515e-02, 2.280e-01, 1.107e-01, -3.657e-01, -3.751e-02, -1.773e-01, -4.506e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.910e-01, 6.217e-02, 3.818e-01, 1.120e-02, -1.330e-01, 5.769e-02, 2.799e-02, -3.072e-03, 1.343e-01, -2.502e-02, 6.153e-02, -3.229e-02, 1.124e-01, -4.410e-02, -5.773e-02, 1.147e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.939e-01, -1.838e-02, -3.102e-01, 5.898e-02, -2.182e-02, 1.685e-01, 9.647e-04, 5.688e-02, 1.491e-02, 1.566e-01, 2.360e-01, 1.314e-01, -1.496e-02, -1.853e-01, -1.011e-01, -5.836e-03), r3);\n\tr4 = MulAdd(s0_1_1, M4(6.676e-03, -1.150e-01, -7.760e-02, -1.079e-01, 1.175e-01, 2.673e-02, -1.935e-02, 1.967e-01, -4.377e-02, 8.422e-02, -4.041e-02, -4.428e-02, -3.393e-02, -3.243e-02, -3.128e-01, -1.161e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.400e-01, -3.664e-01, 7.760e-02, 1.596e-01, 1.036e-01, -9.306e-02, -6.824e-02, 5.964e-03, 1.084e-01, -5.396e-02, 1.850e-01, -5.386e-02, -2.177e-02, -5.456e-02, -3.656e-02, 1.124e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(1.198e-02, 4.032e-01, -1.708e-02, 1.676e-02, 1.285e-01, 1.048e-01, 3.216e-02, -7.252e-02, 3.390e-01, 1.274e-01, 4.133e-02, -6.364e-02, 1.579e-02, -4.119e-02, -5.033e-02, 2.059e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(9.181e-03, 9.648e-02, -2.134e-03, -3.304e-02, -5.990e-02, 3.140e-02, 3.429e-02, 1.091e-01, -2.970e-02, 2.476e-01, 5.379e-02, 1.631e-01, 4.991e-01, -1.027e-01, 3.517e-01, -8.993e-03), r7);\n\tr0 = MulAdd(s0_1_2, M4(2.155e-01, 8.755e-02, -4.807e-02, 2.204e-02, -6.393e-02, -7.495e-02, -1.132e-01, 9.798e-03, -2.242e-01, -6.248e-02, -4.275e-02, -3.127e-04, 2.293e-02, 2.766e-02, 6.728e-02, -1.279e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(1.089e-01, -4.283e-02, -1.324e-02, 3.746e-02, 1.302e-01, 4.833e-02, -6.556e-04, -5.972e-02, -4.595e-01, 6.519e-02, 1.295e-01, 9.713e-02, 7.196e-02, 5.286e-02, 1.699e-02, -3.640e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(4.277e-02, 3.154e-03, 4.515e-02, 7.239e-03, -1.196e-02, 2.691e-02, -4.806e-02, 2.253e-02, -1.840e-02, -2.512e-02, -1.421e-02, -9.359e-03, -5.482e-02, -6.601e-03, -1.378e-02, -6.576e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(5.920e-02, -5.547e-02, -2.061e-02, 3.372e-03, 2.523e-03, 1.391e-02, 1.895e-02, -1.848e-02, -4.249e-02, 2.648e-02, -1.776e-03, 6.180e-02, -3.500e-03, 1.972e-03, 4.865e-02, 2.133e-03), r3);\n\tr4 = MulAdd(s0_1_2, M4(1.652e-02, 2.053e-02, -2.158e-02, -3.558e-02, 3.448e-02, 8.811e-02, -1.161e-02, 6.003e-02, -3.080e-02, 2.210e-03, -2.633e-02, 6.665e-02, 1.966e-02, 2.283e-02, 1.062e-01, -3.277e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-6.249e-02, 4.837e-02, 1.875e-02, 2.406e-02, 4.888e-02, 6.833e-03, -4.540e-02, -1.112e-02, -4.493e-03, -8.762e-02, 2.887e-02, -3.442e-02, -3.813e-02, 1.210e-02, 7.228e-02, -9.332e-03), r5);\n\tr6 = MulAdd(s0_1_2, M4(6.016e-02, 3.881e-04, -6.708e-02, -2.797e-02, 1.341e-01, 8.775e-02, 5.144e-03, 7.399e-02, 2.940e-01, -6.115e-03, 3.331e-02, -6.630e-02, -7.773e-02, -1.274e-03, -1.466e-02, -4.590e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-9.248e-03, 1.065e-01, 5.864e-03, 1.641e-02, -8.602e-03, -1.008e-01, 6.088e-03, -6.322e-03, 3.623e-03, -1.111e-01, -1.678e-03, 7.034e-02, 6.115e-02, -4.622e-02, -3.947e-02, 5.791e-03), r7);\n\tr0 = MulAdd(s0_2_0, M4(-3.481e-02, -6.693e-02, -8.535e-02, 7.336e-03, 4.133e-02, 5.134e-02, -2.042e-02, 2.157e-02, 1.504e-02, 1.485e-02, 4.331e-02, 2.593e-02, -1.188e-02, -1.125e-01, 8.164e-04, 2.568e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.532e-01, 1.114e-01, -1.120e-01, 1.451e-02, 4.954e-02, 2.249e-02, 4.259e-02, -1.893e-02, -5.066e-01, 4.362e-02, 9.284e-02, 7.720e-03, 4.872e-02, -1.603e-02, 2.496e-02, 2.988e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-7.053e-02, -1.818e-02, 5.256e-02, -3.196e-02, 9.674e-03, 2.021e-02, 2.493e-02, -3.545e-03, 1.413e-02, -4.133e-02, 1.959e-02, 1.129e-02, -2.695e-03, -1.340e-02, -2.157e-02, 1.850e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-3.178e-02, 1.962e-02, 1.810e-01, -5.069e-02, 3.968e-02, 5.916e-02, 7.577e-02, 5.464e-02, 1.817e-02, -1.136e-02, 1.219e-01, 4.316e-03, -5.432e-02, 1.381e-01, 7.708e-03, -8.422e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-3.627e-02, -6.946e-02, -4.233e-02, 7.200e-02, 1.527e-02, -7.031e-03, 2.784e-03, 8.978e-02, 3.646e-02, -7.244e-02, 2.216e-02, 7.873e-02, 1.563e-02, 2.034e-03, 5.754e-02, 4.527e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(6.537e-02, 1.226e-01, 2.393e-02, -1.682e-02, 5.141e-02, 3.001e-02, 2.375e-02, -1.492e-02, -1.528e-01, 6.309e-02, 1.684e-03, 9.863e-03, 3.520e-02, -4.008e-03, 1.019e-01, 7.160e-03), r5);\n\tr6 = MulAdd(s0_2_0, M4(-2.282e-03, 6.447e-03, 5.187e-02, -5.652e-02, 5.773e-02, 3.870e-02, -1.190e-02, -8.328e-03, -1.536e-01, 6.033e-02, -8.800e-02, -3.358e-02, -4.263e-03, -3.309e-02, 2.372e-02, -3.276e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-4.829e-03, 5.467e-02, -1.925e-02, -3.664e-02, 4.104e-03, 1.374e-01, -1.704e-03, -2.677e-02, 8.654e-03, 5.700e-02, 5.472e-05, 2.575e-01, -3.627e-02, 4.508e-02, -6.054e-02, -6.959e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-3.149e-02, -2.339e-02, 1.410e-01, 3.061e-02, -1.407e-01, -1.095e-01, -1.749e-01, -6.518e-03, -3.605e-02, 1.375e-02, -3.112e-01, -3.130e-02, -1.287e-01, -4.670e-02, 3.081e-02, 4.626e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.475e-01, -2.838e-03, -6.863e-02, 1.235e-01, 9.723e-03, 6.402e-02, 7.079e-02, 5.238e-02, -2.690e-01, 9.568e-02, 1.095e-01, 9.392e-03, -2.557e-02, 5.235e-02, -1.472e-01, -3.288e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(7.458e-03, 4.323e-02, 7.045e-02, 5.286e-03, -2.908e-02, 1.100e-02, 1.611e-02, -1.941e-02, 5.013e-02, -1.452e-02, -4.568e-04, -1.060e-03, -1.293e-01, 4.178e-02, -1.998e-02, -8.680e-03), r2);\n\tr3 = MulAdd(s0_2_1, M4(7.788e-02, 2.672e-02, 1.125e-01, -3.412e-02, -1.765e-01, -9.741e-03, 9.600e-02, -3.798e-02, -3.309e-03, 1.983e-02, 1.562e-01, -5.090e-03, -5.491e-02, -4.781e-02, -2.143e-02, -7.922e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-3.380e-02, 6.584e-02, -2.368e-02, -6.908e-02, -1.093e-01, -1.090e-01, 3.168e-03, -1.807e-02, -1.689e-03, -7.542e-02, 3.146e-03, -3.551e-02, 6.607e-02, 1.221e-01, 2.009e-01, 9.568e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-5.133e-02, -1.074e-01, -6.531e-02, -3.141e-02, 4.258e-02, 7.266e-02, 1.220e-01, -3.011e-02, -4.313e-02, -6.641e-02, -1.092e-02, -1.256e-02, -7.633e-02, -1.027e-01, -7.066e-03, 4.498e-03), r5);\n\tr6 = MulAdd(s0_2_1, M4(2.663e-01, -2.417e-02, 1.895e-02, 2.670e-02, -4.426e-02, -7.906e-02, 5.044e-02, 1.728e-02, -1.677e-02, 4.325e-02, -9.186e-02, 2.629e-02, 4.995e-02, 3.713e-02, -4.480e-02, -2.383e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(1.047e-03, 2.109e-02, -4.108e-03, -9.006e-02, -5.179e-03, 4.805e-02, 1.640e-02, -1.284e-01, -1.177e-02, 1.998e-01, 2.379e-02, 2.861e-02, -2.881e-01, -1.741e-01, -5.615e-02, 7.417e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-3.068e-02, 1.449e-02, 1.400e-02, -6.520e-03, 1.995e-02, -3.475e-02, 6.236e-02, 1.450e-02, -1.416e-01, 1.563e-02, 2.150e-02, -4.831e-03, -3.317e-04, 1.409e-02, -5.149e-02, 7.554e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-1.588e-01, 2.525e-02, 1.365e-02, -4.863e-03, 6.295e-02, 1.128e-03, 7.551e-02, 4.061e-02, -4.019e-01, 4.201e-02, 7.644e-02, 3.171e-02, 1.102e-01, -3.625e-02, 7.494e-03, -1.265e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(8.760e-02, -5.139e-02, -9.554e-03, 7.883e-03, -1.159e-01, -1.077e-02, 2.342e-03, -4.099e-03, 2.667e-02, 1.034e-02, 8.374e-03, -4.324e-03, -2.068e-02, 1.691e-02, -3.935e-02, -4.395e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(5.602e-02, 2.704e-03, -5.889e-03, 1.688e-02, 4.473e-02, -1.200e-01, 1.051e-01, 1.128e-02, -4.489e-02, 1.106e-02, 1.116e-01, -1.258e-02, 6.279e-02, -2.459e-02, 8.089e-02, -2.769e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(2.894e-02, -1.218e-04, -1.727e-02, 2.767e-02, -9.451e-04, 3.282e-02, 8.853e-03, 3.835e-02, -8.254e-03, 1.108e-02, 1.464e-03, -2.900e-02, -1.401e-02, 2.727e-02, -2.194e-02, -3.787e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-2.405e-02, 3.820e-02, -1.198e-02, -1.656e-02, 1.545e-02, -1.666e-02, 4.303e-02, -2.441e-02, -1.773e-02, -7.403e-02, 4.603e-02, -2.296e-02, 4.516e-02, 4.517e-02, -9.474e-02, 6.229e-05), r5);\n\tr6 = MulAdd(s0_2_2, M4(8.281e-02, 6.847e-02, -1.598e-03, -3.699e-02, 1.069e-01, -1.880e-02, 3.216e-02, -1.569e-02, -1.601e-01, 2.106e-02, 4.420e-02, 1.277e-02, -1.360e-02, 1.162e-02, 1.235e-03, 1.413e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(1.210e-02, -4.358e-02, 3.503e-03, 3.361e-02, 4.345e-03, 2.238e-02, -7.008e-03, -6.342e-02, 6.070e-03, -9.090e-02, 1.085e-02, 1.306e-02, -8.558e-02, 4.339e-02, 1.197e-01, -9.028e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(9.096e-02, -3.366e-02, 6.123e-02, -5.344e-04, -2.530e-02, 7.973e-02, -2.509e-02, -1.086e-02, -1.668e-01, -1.387e-02, 2.575e-02, -1.023e-02, 1.645e-03, -2.769e-02, -6.283e-02, -1.687e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.919e-01, -4.039e-02, 1.022e-02, -5.204e-02, 6.195e-01, 5.809e-02, 1.129e-01, 1.032e-01, -3.862e-01, 1.229e-03, -1.866e-01, 1.362e-02, -1.237e-01, -1.081e-02, -5.351e-02, -6.635e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(-2.637e-02, -1.389e-02, -3.219e-03, 2.554e-03, 1.766e-02, 4.844e-02, -2.765e-02, -1.443e-02, 1.722e-02, -2.181e-02, -2.203e-02, -9.038e-03, -1.375e-02, 9.555e-03, 1.769e-03, -1.781e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(1.645e-02, 5.173e-02, 1.544e-02, -4.358e-02, 5.871e-02, -8.335e-02, 8.292e-02, 1.023e-01, -1.310e-01, -9.515e-03, -1.482e-01, 9.857e-02, 1.557e-02, -8.542e-02, -1.905e-02, -1.351e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-5.752e-02, 1.228e-02, 2.031e-02, 5.687e-02, 1.392e-01, 6.119e-04, -1.773e-02, -1.309e-01, 1.213e-01, -3.930e-02, -7.759e-03, -6.595e-02, -5.839e-02, 3.083e-02, 4.106e-02, -4.035e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(7.056e-02, 4.456e-02, 1.944e-02, -1.710e-02, -1.339e-01, 1.801e-02, -7.573e-03, 7.902e-03, -4.634e-02, -9.030e-02, -8.159e-02, 1.447e-02, -5.222e-03, 2.055e-02, 3.748e-02, 7.232e-03), r5);\n\tr6 = MulAdd(s1_0_0, M4(1.110e-01, -1.155e-02, 4.722e-02, -2.876e-02, -1.430e-01, -1.946e-02, -7.724e-02, 9.702e-02, -1.084e-01, 4.230e-02, -4.642e-02, 6.304e-02, -8.556e-03, 2.314e-02, -4.096e-02, -1.225e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(1.494e-02, 7.596e-02, -4.790e-03, -1.685e-03, -2.523e-02, -4.282e-02, 9.588e-03, -4.989e-03, -8.506e-03, -1.492e-01, 1.340e-02, 3.472e-02, -2.132e-02, 2.830e-02, -9.054e-03, 4.933e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(2.674e-02, 3.198e-02, 6.290e-02, -9.562e-03, -2.044e-01, -2.293e-01, -1.629e-01, 8.761e-03, -1.530e-01, -1.610e-02, 3.018e-01, 3.976e-02, -4.629e-02, -7.532e-02, -3.096e-02, -8.852e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(-3.338e-01, -4.928e-03, -2.820e-02, -5.965e-02, 6.994e-01, 3.063e-02, -2.314e-02, 4.956e-02, -2.120e-01, 3.995e-02, -8.512e-02, -7.247e-03, 3.116e-01, 6.685e-03, 2.470e-02, 2.459e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-4.938e-02, 8.265e-03, 4.797e-02, -1.405e-02, -5.544e-02, 1.991e-02, -1.825e-02, 2.455e-02, 2.588e-01, -2.503e-02, -1.155e-01, -1.026e-02, 6.709e-02, 2.236e-03, 8.240e-03, -2.423e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-3.025e-03, 3.480e-02, -2.449e-02, -6.377e-02, -1.946e-02, -9.313e-03, 3.449e-02, -2.350e-02, 6.373e-02, 9.611e-02, -1.754e-01, 1.148e-01, -2.473e-02, 1.874e-02, -2.433e-02, 8.117e-03), r3);\n\tr4 = MulAdd(s1_0_1, M4(-2.124e-02, 1.357e-02, -5.760e-03, -1.976e-02, 4.920e-02, 4.379e-02, 2.686e-03, 1.722e-01, 9.946e-02, -1.480e-01, 1.666e-02, -4.623e-01, 2.746e-02, 2.293e-02, 3.459e-02, 2.855e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(6.103e-02, 3.337e-02, 1.895e-01, 4.690e-02, -3.186e-02, -3.011e-02, -1.266e-01, -4.573e-02, -1.149e-01, 1.616e-01, -2.912e-01, -2.873e-01, -1.594e-02, -2.410e-01, 1.033e-01, 1.606e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(1.023e-01, -1.435e-02, 8.745e-02, -7.374e-02, -3.090e-02, 2.637e-02, -8.620e-02, 3.821e-02, -4.014e-01, 7.094e-02, -2.014e-02, 1.458e-01, -5.828e-02, 1.778e-02, -1.208e-01, 2.560e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(5.681e-03, -9.248e-03, 6.392e-03, 1.160e-01, -1.249e-02, 5.795e-02, 3.559e-03, -3.251e-02, 3.113e-02, -4.017e-01, -6.372e-02, -2.908e-01, -3.536e-02, 6.270e-02, 9.336e-03, -9.000e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(-5.037e-03, 1.979e-02, 1.612e-02, -2.044e-03, 1.374e-01, 3.795e-02, 5.921e-02, 4.330e-03, -1.988e-01, -5.167e-02, -5.793e-02, -1.169e-02, 1.269e-01, -7.694e-02, -8.935e-03, 3.664e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.511e-01, 2.870e-02, 3.336e-02, -3.165e-02, 3.753e-01, -2.393e-02, -4.103e-02, -2.421e-02, -3.417e-01, 2.353e-02, 4.055e-02, 3.489e-02, 4.131e-01, 5.630e-02, -1.814e-01, -5.823e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(6.622e-02, -1.663e-02, 3.242e-02, 1.979e-03, -4.823e-02, -1.861e-02, -3.487e-02, 3.756e-03, -1.681e-02, 2.739e-02, 5.939e-02, -1.763e-02, 6.748e-02, 1.266e-02, 7.428e-03, -4.350e-03), r2);\n\tr3 = MulAdd(s1_0_2, M4(6.045e-02, 1.119e-02, -5.999e-02, 3.103e-02, -3.123e-03, -6.033e-02, 2.139e-02, 8.924e-03, -2.144e-02, -7.497e-03, 5.185e-02, -2.238e-03, 8.256e-02, -5.879e-02, 4.479e-02, -6.164e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(8.689e-03, -5.563e-03, -1.517e-02, -2.240e-02, -5.583e-03, 4.125e-02, 1.759e-02, -7.979e-03, 2.601e-02, -7.916e-03, -3.470e-03, -1.265e-01, 5.645e-02, 1.331e-02, 1.813e-02, 1.204e-01), r4);\n\tr5 = MulAdd(s1_0_2, M4(3.098e-02, 1.378e-02, 7.644e-02, -8.641e-03, -2.194e-02, 4.653e-02, -5.781e-02, -1.743e-03, -1.473e-02, -1.843e-02, 5.945e-02, -4.680e-02, -6.195e-02, 4.318e-02, -6.598e-02, -4.503e-03), r5);\n\tr6 = MulAdd(s1_0_2, M4(9.305e-03, 1.590e-02, 6.355e-03, -4.929e-03, 1.834e-02, 2.023e-02, 3.205e-02, 1.847e-03, 8.839e-02, -4.811e-02, -3.509e-02, -2.631e-03, -1.322e-01, 7.107e-02, -9.245e-02, 3.772e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(2.801e-03, 1.318e-01, 8.339e-04, 2.264e-02, -1.288e-02, -1.566e-01, -2.499e-02, -7.666e-02, 1.707e-02, -1.044e-02, 3.529e-02, -2.336e-02, -5.975e-03, -1.220e-02, -3.152e-03, -6.747e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(7.588e-02, 1.518e-01, 6.767e-02, 1.206e-02, 2.607e-01, 1.938e-01, 5.146e-02, 1.601e-02, -2.815e-02, 2.209e-01, 1.552e-03, -2.314e-02, -4.701e-02, -3.876e-02, -2.054e-02, -8.217e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.878e-01, -5.502e-02, -4.222e-02, -5.551e-02, 5.127e-01, -4.331e-02, 6.227e-02, 9.391e-02, -4.083e-01, -1.399e-02, -3.233e-02, 3.396e-02, 2.746e-01, 3.466e-02, 5.014e-02, 3.157e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(9.214e-02, -3.206e-02, 3.260e-02, 6.795e-03, -4.090e-02, 2.186e-03, -5.463e-02, -1.217e-02, -5.816e-02, 1.404e-01, -1.137e-01, -1.191e-02, -4.039e-02, 9.480e-03, -7.444e-03, 1.186e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-4.184e-02, 9.531e-03, -3.260e-02, 3.227e-02, 2.403e-01, 3.133e-01, -3.237e-01, 3.799e-01, 1.675e-01, 6.012e-02, 2.085e-02, 2.563e-01, -2.984e-02, 8.217e-02, 4.311e-02, 8.317e-03), r3);\n\tr4 = MulAdd(s1_1_0, M4(2.867e-02, -7.026e-02, 4.873e-02, -1.984e-02, 1.725e-01, 1.224e-01, -8.105e-03, -1.455e-01, 4.314e-02, 8.787e-02, 1.196e-02, -1.633e-01, 2.035e-03, -5.971e-02, 2.853e-02, -1.804e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-5.860e-03, -3.715e-02, 1.024e-01, 3.588e-03, -1.619e-01, 2.210e-01, -1.620e-01, 1.411e-01, -2.320e-01, -4.775e-01, -1.570e-01, -1.609e-02, -4.976e-02, 1.261e-01, -1.465e-01, -7.796e-03), r5);\n\tr6 = MulAdd(s1_1_0, M4(-7.864e-03, -3.737e-02, -8.800e-02, -2.401e-02, 7.073e-02, 6.002e-02, 2.858e-01, 2.176e-01, 2.396e-01, -1.513e-01, 1.515e-01, 1.903e-01, -1.943e-01, -4.504e-02, 1.047e-02, 2.299e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(2.993e-02, 1.472e-01, -1.177e-02, 6.547e-02, 4.276e-03, 3.560e-02, -3.920e-03, -4.145e-01, -2.748e-02, -3.394e-01, -1.543e-02, -3.797e-02, -2.814e-02, -9.987e-02, 2.765e-02, -2.077e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(3.213e-01, -2.268e-01, 2.604e-01, -2.355e-02, -6.650e-01, -2.686e-01, 1.525e-02, -3.354e-02, 1.005e-01, -4.584e-02, -5.309e-01, 6.773e-02, -5.641e-02, 5.893e-02, 4.062e-02, 1.176e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(2.530e-01, 9.197e-02, -1.858e-01, 6.351e-02, -1.014e+00, -1.392e-01, -2.178e-01, -2.202e-01, 5.345e-01, -2.106e-01, 9.160e-02, -1.796e-01, -6.694e-01, 3.707e-02, 7.724e-03, 8.491e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-7.953e-02, 5.746e-02, -1.292e-01, 5.055e-03, -2.510e-01, 2.914e-02, -2.361e-01, -2.697e-02, -3.092e-01, 6.610e-01, 5.832e-02, 5.243e-02, -5.431e-03, -1.639e-02, -3.350e-02, -3.650e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(2.168e-02, 4.182e-02, -1.135e-01, -2.065e-01, -3.283e-01, -1.928e-01, 2.101e-01, -5.397e-02, -2.533e-01, 2.822e-01, -1.068e-01, -8.963e-03, -2.219e-02, -2.229e-01, 8.673e-02, -1.083e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.004e-02, -1.042e-01, 5.296e-02, -5.797e-02, -2.527e-01, 3.187e-02, 7.573e-03, -4.512e-01, 3.594e-01, 5.124e-01, -6.943e-03, 5.353e-01, -7.653e-02, -5.243e-02, 3.894e-02, 3.944e-03), r4);\n\tr5 = MulAdd(s1_1_1, M4(9.528e-02, -8.231e-02, -1.410e-01, -8.998e-02, 3.125e-01, 5.221e-02, -6.772e-02, 2.301e-01, 1.009e-01, 2.355e-01, -1.844e-01, 1.227e-01, -4.389e-02, -1.598e-01, -5.136e-02, 1.753e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(-1.439e-01, 1.852e-01, -1.062e-01, 4.909e-02, -1.077e-01, -1.775e-01, 8.048e-02, -2.387e-02, 2.536e-01, 2.406e-01, -1.432e-01, -1.873e-01, -1.852e-01, -6.181e-02, -1.529e-01, -1.950e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(3.506e-02, -1.529e-01, -2.427e-02, -3.526e-02, 1.522e-02, -2.429e-01, 1.645e-02, 1.182e-01, -5.061e-03, 2.128e-01, -1.172e-02, 3.076e-01, 7.392e-03, -1.916e-01, 6.099e-03, 7.436e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(6.931e-02, 1.069e-02, 2.129e-02, -5.013e-02, 3.093e-01, 1.922e-02, 6.810e-02, 1.845e-02, -2.161e-01, -6.814e-02, -4.593e-02, -4.580e-02, 1.004e-01, -1.414e-02, 3.697e-02, 1.026e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-8.691e-02, -1.399e-01, 3.136e-02, -1.692e-03, 3.679e-01, -6.261e-02, -8.546e-02, -1.106e-01, -6.946e-02, -1.223e-01, -3.695e-02, 3.377e-02, -3.317e-02, -2.851e-02, -2.334e-01, -3.871e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.362e-03, 9.724e-03, 9.801e-03, -5.136e-03, -8.268e-03, -1.303e-02, 1.822e-02, 5.765e-03, 1.033e-01, 3.798e-02, 8.589e-02, 1.596e-02, -3.681e-02, -1.175e-02, 2.771e-03, -1.319e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(9.049e-02, 1.060e-01, 1.758e-02, -3.718e-02, 1.899e-02, -3.901e-02, -8.584e-02, -7.198e-02, 6.043e-03, -1.825e-02, 1.851e-01, 3.794e-03, 3.949e-02, -2.436e-01, 7.628e-02, -3.250e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-1.582e-02, 2.340e-02, 2.733e-03, -3.437e-02, 2.220e-02, -4.862e-02, 4.634e-02, -6.109e-02, -3.423e-02, 1.842e-01, 6.484e-03, -2.102e-02, -4.659e-02, 3.795e-02, 3.620e-02, -7.942e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(1.199e-01, -6.489e-02, 2.448e-01, 6.683e-02, 2.217e-02, 1.526e-01, -3.829e-02, 6.383e-02, 3.258e-02, 4.011e-02, 5.689e-03, -5.723e-02, -1.807e-01, -1.109e-02, 5.488e-02, 6.381e-03), r5);\n\tr6 = MulAdd(s1_1_2, M4(2.210e-02, 2.091e-02, -2.914e-02, -1.768e-02, -2.604e-01, -3.024e-02, 1.182e-02, 3.528e-02, -1.291e-01, 7.521e-02, -2.518e-02, 2.752e-02, 2.230e-03, -9.376e-02, -1.846e-01, 5.059e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(3.810e-03, 1.547e-02, -9.187e-03, 7.187e-02, -1.165e-02, 6.713e-02, -6.744e-02, 6.247e-02, 5.333e-03, -1.211e-01, 5.250e-02, -2.732e-02, 2.210e-02, -3.187e-02, -2.804e-02, -7.262e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(1.268e-01, 1.014e-02, 5.197e-02, 1.350e-02, 3.814e-02, 2.068e-02, -1.203e-02, -7.660e-03, -7.403e-02, -3.947e-02, 1.421e-02, -5.065e-02, -1.721e-02, -2.993e-02, 2.827e-02, -3.547e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-1.558e-01, 1.308e-01, 1.033e-01, -8.532e-03, 2.435e-01, -3.061e-02, -4.009e-02, 7.773e-03, -1.475e-01, -4.087e-02, 1.453e-01, 1.895e-02, 2.017e-01, -6.219e-02, 2.212e-01, 2.752e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.403e-01, 3.481e-02, -1.755e-02, 1.323e-02, -2.100e-02, 3.573e-02, -6.475e-02, -1.854e-02, 1.627e-02, 2.121e-02, 2.043e-02, -8.645e-03, 8.773e-02, 2.491e-02, -4.010e-02, -5.375e-04), r2);\n\tr3 = MulAdd(s1_2_0, M4(1.316e-01, -1.146e-01, -4.620e-02, 1.241e-01, 2.498e-01, -1.211e-02, -1.568e-01, 1.650e-01, 1.465e-02, 5.967e-02, 3.154e-03, 1.988e-02, -5.374e-02, 2.681e-02, 8.042e-02, 9.507e-03), r3);\n\tr4 = MulAdd(s1_2_0, M4(1.174e-01, -2.844e-02, 4.200e-02, 9.941e-02, -3.204e-02, 6.985e-02, -2.905e-02, -2.246e-02, -2.417e-01, -1.694e-01, -3.645e-02, -1.665e-01, -9.314e-02, -5.857e-03, 6.107e-03, 2.814e-03), r4);\n\tr5 = MulAdd(s1_2_0, M4(-9.189e-02, -4.136e-02, 7.031e-02, -3.612e-02, -7.386e-02, -8.417e-03, 9.545e-02, -5.585e-02, -1.071e-01, -3.701e-01, -2.808e-02, 8.562e-03, 1.169e-01, 6.916e-02, 9.892e-02, 1.886e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(1.450e-02, -5.141e-02, 5.194e-02, 4.476e-02, 4.176e-03, -5.097e-02, -8.843e-03, 1.024e-01, -1.363e-01, -3.919e-02, -2.036e-02, 1.238e-01, 5.867e-02, -2.095e-02, 4.128e-02, 8.369e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(2.301e-02, 1.499e-01, 8.144e-03, 6.486e-02, -4.747e-03, -1.076e-01, -1.596e-02, -3.101e-01, -1.606e-02, -6.638e-02, 1.928e-02, 8.965e-03, 8.391e-03, 1.022e-01, 5.733e-03, -2.587e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-1.078e-01, 1.548e-01, -3.081e-01, 7.987e-03, -1.078e-01, -4.590e-02, -1.539e-01, -1.638e-02, 2.652e-02, 9.831e-03, 8.313e-02, 2.763e-02, 6.837e-02, -1.772e-02, -1.152e-02, -4.047e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.579e-01, 2.109e-01, 4.841e-02, -2.982e-01, 1.770e-01, 3.530e-02, 5.484e-02, 1.031e-01, -3.030e-01, -4.657e-03, -9.451e-02, 3.181e-02, 2.200e-01, -4.907e-02, -1.799e-01, -4.207e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.794e-02, 3.545e-02, 1.125e-01, 3.598e-02, -2.012e-01, -1.057e-01, -9.728e-02, 2.277e-03, 5.380e-02, 5.578e-02, -3.348e-02, -1.912e-02, 3.104e-02, -2.517e-02, -8.124e-03, -2.279e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(1.017e-01, 2.020e-01, -3.201e-01, 1.372e-01, -1.011e-01, -5.384e-02, -1.183e-01, 9.668e-02, 1.044e-02, -2.560e-01, -2.689e-02, -9.128e-02, -5.481e-02, 4.301e-02, -2.551e-01, -5.336e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(1.030e-02, -1.492e-01, 5.008e-02, -2.852e-02, 4.361e-02, -6.937e-02, -4.655e-03, 7.387e-02, -2.084e-01, -2.547e-01, -6.247e-03, -6.019e-02, 4.642e-02, -8.394e-02, 2.717e-02, -1.127e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(-1.259e-01, 2.366e-01, 4.531e-01, 1.539e-01, 2.807e-02, 8.849e-02, 1.381e-01, 6.266e-02, -6.092e-02, 4.459e-02, 2.692e-02, -3.552e-02, 1.110e-01, -9.495e-03, -7.885e-02, 1.180e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(3.027e-01, 1.166e-01, 1.364e-01, 7.872e-02, -6.456e-02, -2.862e-02, 2.398e-01, -2.540e-02, -2.486e-01, -1.781e-01, 9.600e-02, 4.334e-02, 5.238e-03, -6.705e-02, -4.199e-02, 2.691e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(4.880e-03, 3.097e-01, 1.695e-02, 7.912e-02, 5.203e-04, 1.824e-02, -1.969e-02, -1.398e-01, 1.843e-02, -2.598e-01, -3.977e-02, 2.908e-02, 1.807e-02, -5.996e-02, -1.561e-02, -9.993e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.477e-01, 1.445e-02, 3.744e-03, -5.015e-03, 7.367e-02, -2.437e-02, -4.990e-03, 3.617e-03, -1.888e-02, -3.283e-02, -3.289e-02, 1.904e-03, 1.723e-02, 2.883e-02, 6.184e-02, -5.859e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(-6.382e-01, 1.519e-01, 2.241e-01, -1.714e-02, 2.736e-01, 2.522e-03, -7.433e-02, -4.084e-02, 1.249e-01, -2.442e-02, -1.248e-02, 4.182e-02, -2.277e-01, -2.121e-02, -7.860e-02, -3.382e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(-6.396e-02, -8.342e-03, 1.670e-02, 2.347e-03, -1.066e-01, 2.617e-03, -5.343e-02, -2.644e-03, -5.601e-03, -3.657e-02, 3.430e-02, 3.188e-03, -3.647e-02, -9.485e-04, -2.319e-02, -3.274e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(-1.295e-02, 1.511e-01, -1.990e-02, -6.456e-02, 3.971e-02, 3.206e-02, -1.999e-01, -4.194e-02, -1.010e-02, -1.369e-02, 8.742e-02, 5.576e-02, 1.626e-02, 1.389e-02, -1.322e-01, 1.468e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-3.771e-02, 4.837e-02, 2.719e-02, 9.229e-02, 1.759e-02, 1.992e-02, 1.920e-02, 1.878e-02, 1.384e-02, -6.112e-02, -8.817e-03, -2.724e-02, -7.281e-03, -5.587e-02, 2.770e-02, 3.892e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(8.554e-02, -9.631e-02, -1.046e-01, 7.258e-02, 4.512e-03, 1.916e-02, -5.126e-02, 3.527e-02, -7.750e-03, 8.148e-03, 5.099e-03, -1.341e-02, -4.655e-02, 6.123e-02, -2.330e-02, 7.496e-03), r5);\n\tr6 = MulAdd(s1_2_2, M4(5.737e-02, 1.022e-02, 1.156e-01, -2.004e-02, 1.151e-01, -5.007e-02, -3.059e-02, 3.743e-02, -1.065e-02, 6.023e-03, -8.333e-03, -2.288e-03, -6.321e-02, 1.023e-02, -5.717e-02, -8.552e-03), r6);\n\tr7 = MulAdd(s1_2_2, M4(1.444e-03, -1.839e-01, 8.212e-03, 1.322e-01, -1.577e-02, 4.473e-02, -1.798e-02, -7.092e-02, -8.256e-03, 3.638e-02, 1.600e-02, -1.569e-02, 3.408e-03, -2.266e-02, -3.603e-02, 2.155e-02), r7);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(7.509e-02, -8.475e-02, 1.809e-02, 2.413e-02, -1.429e-01, -1.675e-02, 4.630e-02, 1.813e-02, 8.764e-02, 5.886e-02, -8.487e-03, 2.156e-02, -3.781e-03, -3.211e-02, 7.907e-02, -2.818e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-3.627e-01, -3.895e-02, -2.612e-01, -5.827e-02, -2.493e-01, 4.322e-02, -4.881e-02, -1.077e-02, -1.922e-01, 6.811e-03, 3.396e-04, -3.924e-03, 1.443e-01, -2.851e-02, -2.835e-02, -9.459e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-9.533e-02, -2.320e-02, -8.539e-03, -1.878e-02, -1.655e-01, 3.603e-02, 1.866e-02, -1.801e-03, -3.882e-02, -1.838e-02, 4.773e-02, -5.074e-03, 3.538e-02, 2.117e-02, 9.487e-04, 1.452e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(3.384e-02, -1.905e-01, 7.519e-03, -1.044e-01, 1.826e-02, -9.069e-02, 2.859e-02, -6.137e-02, -4.019e-02, -4.550e-02, 2.784e-02, -2.321e-02, -7.202e-02, 9.404e-02, 3.373e-02, -3.733e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-1.127e-01, 5.046e-02, -3.747e-02, 3.796e-02, 3.405e-02, 9.333e-02, -3.961e-02, 2.127e-01, -2.668e-02, 3.149e-02, 2.661e-02, 1.911e-02, 2.417e-02, -5.159e-02, 2.193e-02, 1.124e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-5.126e-02, 4.266e-02, 1.796e-01, -5.857e-02, -5.214e-02, -1.367e-01, 1.323e-02, 6.765e-02, -2.497e-02, -3.097e-02, 1.033e-01, 2.100e-02, 4.915e-02, -4.614e-02, -5.740e-02, 2.553e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-5.544e-03, -7.484e-03, -3.733e-03, -6.478e-02, 1.332e-02, 1.831e-03, 9.087e-02, -1.739e-01, 2.603e-02, -3.651e-02, -4.969e-02, -6.676e-02, -5.776e-02, 6.817e-02, -5.471e-02, 2.737e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(1.554e-02, 9.685e-02, -7.470e-03, 2.744e-01, -1.703e-02, -7.678e-02, 1.131e-02, 1.682e-01, -1.288e-02, 3.126e-02, -1.953e-03, 1.755e-01, 6.885e-03, -2.519e-02, -1.111e-03, 1.171e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(1.438e-02, 4.406e-02, -9.635e-03, -7.477e-03, -3.611e-02, 2.236e-01, -1.129e-01, 2.693e-02, 1.162e-01, 2.491e-02, 1.052e-01, -1.979e-02, -9.349e-02, -5.987e-02, 2.966e-02, -3.268e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-3.373e-01, -1.550e-01, 1.558e-01, -4.388e-02, -6.837e-02, -2.587e-01, 2.834e-01, -2.245e-01, -3.098e-02, 4.410e-02, -8.911e-03, -3.619e-02, 1.557e-01, -4.524e-03, 1.985e-02, 5.931e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-1.238e-01, -4.284e-02, -3.651e-03, 5.584e-03, -2.563e-01, -3.622e-02, 6.616e-02, -5.627e-03, -8.466e-02, -3.233e-02, -5.194e-03, 1.349e-02, -1.327e-03, -2.697e-02, 3.699e-02, 2.188e-04), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.306e-02, 8.359e-02, 5.397e-02, 5.039e-02, -1.783e-01, 9.861e-02, 7.567e-02, 2.495e-01, 6.297e-02, 7.374e-02, 2.994e-02, 1.655e-01, 2.525e-02, -8.890e-02, -3.828e-02, -8.370e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-2.604e-02, 4.967e-02, -2.338e-02, -1.294e-01, -5.266e-03, 1.337e-01, -1.739e-02, -2.022e-01, -1.652e-02, 3.949e-02, 6.615e-02, -1.827e-02, -1.367e-02, -6.497e-02, -1.486e-03, -6.806e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(1.430e-01, 2.010e-02, 6.214e-02, -5.030e-02, 3.737e-01, 1.207e-01, 1.812e-01, 4.884e-01, -4.524e-02, 7.986e-02, -9.795e-02, -5.213e-02, 3.190e-02, 2.858e-02, -5.151e-02, -5.806e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(4.917e-02, -9.944e-02, 1.675e-01, -1.550e-01, 2.469e-01, -2.516e-02, 5.558e-02, -2.498e-01, -9.638e-02, -1.233e-03, -1.368e-01, -2.274e-02, 1.429e-02, -8.580e-05, -1.240e-02, -1.057e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(-2.101e-02, -8.479e-02, -2.375e-02, 1.649e-01, 1.896e-02, 1.666e-01, 2.175e-02, 2.395e-01, -5.819e-03, 8.941e-02, -2.262e-03, 9.745e-02, -1.836e-02, -5.972e-02, -3.744e-03, 2.782e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-3.839e-02, 5.158e-03, -6.913e-02, 1.000e-04, -3.000e-01, 4.461e-02, -6.995e-02, 1.417e-02, -2.409e-01, 7.332e-02, 1.902e-02, -3.397e-02, -1.406e-02, 2.327e-03, 1.265e-02, 1.207e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.322e-01, -1.412e-02, -2.287e-03, 1.908e-02, -2.824e-01, -5.496e-02, -3.269e-02, -9.016e-02, -1.214e-01, -5.991e-02, 7.651e-02, 5.076e-03, -7.704e-02, -2.988e-02, 2.581e-02, 2.023e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(9.448e-02, -2.572e-02, -1.368e-02, 1.268e-02, -1.132e-01, -4.139e-03, 1.182e-02, 3.138e-03, -2.569e-02, -2.411e-02, 2.542e-02, 5.190e-04, 2.300e-02, -8.881e-03, -1.370e-02, -2.206e-03), r2);\n\tr3 = MulAdd(s0_0_2, M4(1.107e-02, -1.050e-02, -2.104e-02, -2.013e-02, 1.313e-03, 8.455e-02, 4.853e-02, -5.780e-03, -9.735e-02, 1.284e-01, 3.030e-02, 4.952e-02, 1.851e-02, -2.370e-02, -1.684e-02, -2.425e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-1.256e-02, 5.471e-02, -3.766e-02, 2.673e-02, -3.312e-03, 5.832e-02, -2.151e-02, 1.360e-01, -8.184e-02, 4.955e-02, 4.072e-02, 7.722e-02, 2.605e-02, 4.022e-04, -1.087e-03, 1.789e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-2.271e-03, -4.344e-02, 1.854e-02, -1.089e-03, -7.336e-03, -3.877e-02, 5.440e-02, 7.052e-02, -5.300e-02, -9.195e-02, -1.769e-02, -2.064e-02, -3.109e-02, 5.408e-04, -4.212e-02, 9.283e-04), r5);\n\tr6 = MulAdd(s0_0_2, M4(-1.276e-01, 2.299e-02, 1.888e-03, -6.311e-02, 2.351e-01, 2.653e-02, -2.730e-02, -1.783e-01, -2.708e-03, -9.501e-02, -1.338e-01, -7.641e-02, -3.717e-02, 1.524e-02, -1.612e-02, -4.189e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-9.877e-04, -3.175e-02, 4.136e-03, 9.384e-02, -1.140e-02, 3.441e-02, -1.025e-02, 1.518e-01, -1.732e-02, -1.835e-01, 2.983e-02, 1.780e-01, -4.050e-03, 3.379e-04, -1.120e-02, -5.945e-03), r7);\n\tr0 = MulAdd(s0_1_0, M4(-8.013e-02, 5.422e-02, 9.767e-02, -2.648e-03, -1.293e-01, -2.853e-02, -2.720e-02, 1.272e-02, -1.253e-02, 8.782e-02, 2.312e-02, 8.206e-03, 1.307e-01, 2.164e-02, 2.337e-02, -1.128e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-4.036e-01, -5.065e-03, -3.146e-01, 7.407e-02, 3.028e-01, 6.571e-02, -2.884e-01, 8.027e-02, 1.055e-02, -7.222e-03, 4.523e-02, 5.562e-02, -4.832e-01, 6.966e-03, -8.686e-01, -8.804e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(3.506e-02, -5.422e-03, 3.117e-02, -1.078e-02, 1.213e-01, 4.684e-02, 2.040e-02, -1.341e-02, 1.631e-02, -1.249e-02, -2.789e-03, -3.083e-02, -8.337e-02, -6.786e-02, 4.212e-02, -4.401e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(2.216e-02, -7.397e-02, 7.992e-02, 1.090e-02, -3.807e-01, 7.277e-02, -2.123e-02, -6.941e-02, 7.010e-02, 1.275e-01, 3.861e-02, 9.933e-02, -4.610e-02, -1.552e-01, -5.828e-02, -1.729e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(-5.348e-02, -8.947e-02, -5.236e-02, 5.820e-03, 1.308e-01, 3.493e-02, -2.235e-02, -1.101e-02, 3.421e-02, -4.018e-02, 3.525e-02, -8.790e-02, 1.314e-02, 7.268e-02, 1.811e-02, 5.243e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-1.736e-02, -5.847e-02, -6.071e-02, -2.273e-02, -2.250e-01, 1.722e-01, -1.101e-01, 3.854e-02, -8.438e-03, -1.218e-01, -1.700e-01, -5.365e-02, -1.372e-01, -7.648e-02, 5.059e-02, 3.026e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-1.062e-01, -5.923e-02, -6.961e-03, 2.326e-02, 1.247e-01, 4.480e-02, -1.302e-01, -1.116e-02, 2.004e-01, -4.528e-02, 6.184e-02, 4.174e-02, 8.894e-02, 1.693e-01, -1.750e-01, -1.248e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(-2.044e-03, -3.633e-02, 1.462e-02, 1.063e-01, -3.427e-02, -9.081e-02, -2.226e-02, 1.684e-01, 7.813e-03, -1.269e-01, -2.902e-03, -2.486e-02, -3.945e-02, 2.455e-02, 8.843e-03, 4.446e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(1.461e-01, -1.531e-02, 1.376e-01, 9.959e-03, 9.985e-02, -1.440e-01, 3.018e-01, 7.742e-02, 2.100e-01, 7.929e-02, -1.655e-01, -9.894e-03, -6.133e-02, -1.555e-02, 4.146e-02, 1.128e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(4.506e-01, 4.580e-02, 5.903e-02, 4.298e-02, 6.364e-01, 3.051e-01, 8.158e-02, 2.006e-01, 2.117e-01, -1.243e-01, -1.938e-01, -7.383e-02, 3.786e-01, 6.209e-02, 1.787e-01, 1.348e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(3.391e-02, -3.085e-02, 3.260e-02, -8.090e-03, 1.478e-01, 1.786e-01, -7.839e-02, -1.067e-02, 6.465e-02, -4.212e-02, 6.133e-02, -1.132e-03, -3.811e-02, 5.010e-02, -8.525e-02, -2.291e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.781e-02, -3.872e-02, -8.457e-02, -1.808e-02, 1.319e-01, 2.205e-01, -2.282e-01, -1.470e-01, -1.727e-02, -1.030e-01, 1.319e-02, 1.743e-02, -1.060e-02, -1.739e-01, -2.930e-02, -3.961e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(-2.011e-02, -1.513e-01, -3.521e-02, 1.414e-01, 6.758e-02, -9.219e-03, 1.419e-02, 1.861e-01, -1.924e-01, 4.710e-02, 1.028e-01, -2.916e-02, 4.926e-02, -5.401e-02, -8.760e-03, -3.751e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(8.229e-02, -1.076e-01, 5.819e-03, -3.390e-02, -3.035e-01, -3.042e-01, -5.232e-01, -6.425e-02, -8.654e-02, 5.742e-03, 9.199e-02, 1.899e-02, 7.103e-02, -3.286e-02, -3.143e-01, -9.436e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(-1.612e-01, 1.031e-01, 5.563e-02, -8.093e-02, -2.871e-01, 7.753e-02, -6.839e-02, -1.103e-02, -5.301e-03, -1.479e-01, -1.153e-01, -9.318e-02, -2.571e-01, -1.193e-01, -1.098e-01, 1.132e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(3.436e-03, 2.461e-01, -3.323e-03, 1.061e-01, -2.917e-02, -7.396e-01, 4.882e-02, -5.848e-01, 8.810e-03, 1.874e-01, -6.321e-02, 2.785e-01, -7.156e-02, -2.946e-01, 1.011e-02, 1.171e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(1.314e-01, 6.610e-03, -9.448e-02, 7.446e-03, 6.552e-02, 6.418e-02, -3.261e-02, -1.015e-02, -2.559e-01, -4.130e-02, 4.076e-02, -4.037e-02, 1.577e-01, 5.401e-02, 3.896e-02, 5.604e-03), r0);\n\tr1 = MulAdd(s0_1_2, M4(-6.202e-02, 2.908e-02, -5.076e-03, -1.007e-02, 7.948e-02, 4.718e-02, -1.339e-01, 3.696e-02, -2.292e-01, -1.736e-02, 8.620e-02, 8.615e-02, -1.698e-02, -2.683e-02, -4.685e-02, 2.846e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.544e-01, -3.458e-02, -3.402e-02, -3.851e-03, 3.851e-02, -9.780e-03, -2.564e-03, 9.564e-03, -5.628e-02, -4.599e-02, -7.753e-02, 4.625e-04, 3.651e-02, 2.275e-03, 8.356e-02, -1.030e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(3.963e-02, 4.773e-02, -1.320e-03, -7.860e-03, -5.067e-03, -6.909e-02, 1.400e-01, 4.781e-02, -1.350e-01, 1.306e-01, 9.137e-02, 2.275e-02, 5.223e-02, -6.899e-02, 3.463e-02, 7.563e-03), r3);\n\tr4 = MulAdd(s0_1_2, M4(-2.911e-02, -4.139e-02, -3.574e-02, -5.845e-03, -2.008e-02, 2.065e-02, -2.374e-02, -1.430e-02, -3.339e-02, -5.001e-02, 5.993e-02, -1.561e-02, -6.892e-03, -2.433e-02, 2.552e-03, 8.960e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-3.440e-02, 2.993e-02, -1.638e-01, -3.423e-02, -7.505e-02, -1.149e-02, 7.086e-02, 1.280e-02, 4.377e-02, 1.717e-02, -2.179e-01, -2.865e-02, -8.807e-02, -1.475e-02, 4.334e-02, -6.827e-03), r5);\n\tr6 = MulAdd(s0_1_2, M4(-1.275e-02, 5.432e-02, -7.764e-02, -1.312e-02, 8.276e-02, -1.707e-03, -1.325e-01, -5.527e-02, 1.476e-02, 3.306e-02, -9.246e-02, -1.935e-01, -6.862e-02, 1.205e-02, -4.067e-02, 6.140e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-9.600e-03, -1.368e-01, -1.273e-02, 1.132e-01, 1.112e-02, -2.147e-01, -1.181e-02, 1.144e-01, -2.836e-02, -3.057e-01, 1.282e-02, 2.065e-01, -7.471e-03, -6.964e-02, -1.594e-02, -1.489e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-2.453e-02, 2.076e-02, 1.303e-02, -8.785e-03, -2.268e-02, 5.199e-02, 5.101e-02, 6.568e-04, 2.497e-02, 5.280e-02, 9.550e-02, 1.283e-02, -5.572e-02, -6.415e-02, -1.028e-02, -3.840e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.051e-01, -4.189e-02, 2.092e-02, 1.748e-02, -2.209e-01, -5.093e-02, 4.065e-02, -3.868e-02, -1.565e-01, 1.417e-02, 7.886e-02, 1.475e-02, 1.317e-01, -7.496e-02, 1.084e-01, 9.381e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-5.143e-03, -2.002e-02, -2.244e-02, -1.606e-02, 9.108e-03, -2.145e-02, 1.321e-02, -1.521e-02, -6.905e-03, -2.789e-02, -6.825e-03, -2.490e-02, 5.111e-02, -2.293e-02, 1.192e-02, -5.305e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(4.752e-02, -1.640e-02, -3.100e-02, -1.781e-02, -9.733e-03, 1.282e-01, 1.400e-01, -1.568e-02, -3.343e-02, 1.585e-01, 4.309e-02, -4.442e-02, -1.917e-01, -9.230e-02, -2.030e-01, -3.773e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-7.032e-02, -4.811e-02, -4.261e-02, -1.191e-02, -5.931e-02, -5.431e-02, -1.489e-03, -2.223e-02, -4.481e-02, -5.005e-02, 2.087e-02, -2.693e-02, -5.680e-02, -5.727e-02, 6.766e-03, -5.520e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(2.116e-02, -1.151e-01, 4.068e-03, -1.095e-02, -9.477e-02, -4.233e-02, 5.687e-02, 4.598e-03, -1.431e-03, 6.395e-02, 1.581e-02, 1.773e-02, -8.969e-02, -8.811e-02, 5.076e-02, 1.471e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(4.875e-03, -3.522e-02, 1.315e-02, 2.530e-02, -3.576e-02, 2.283e-02, -1.864e-02, -9.033e-03, 2.101e-02, 9.567e-04, -1.172e-02, 2.873e-02, -5.748e-02, 1.975e-02, -9.886e-02, -2.710e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-2.246e-03, -1.369e-01, 2.555e-03, 8.258e-02, -1.379e-03, 4.607e-02, -7.166e-03, 3.540e-02, 2.456e-02, -8.373e-02, -3.723e-03, 4.582e-02, -8.558e-03, 1.022e-01, 2.558e-03, -2.222e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(3.497e-02, 4.304e-03, 3.949e-02, -7.962e-03, 2.392e-02, -5.511e-02, 1.121e-02, 2.409e-02, 6.525e-02, 4.031e-02, -4.174e-02, 1.330e-02, 5.851e-02, -6.769e-04, 1.145e-01, -2.589e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.776e-02, -3.335e-02, 2.521e-02, -3.959e-03, 9.180e-02, -2.860e-02, -6.751e-02, 3.396e-02, -6.767e-04, -1.154e-01, -3.115e-02, -9.636e-03, -2.939e-01, -6.415e-02, 5.287e-02, -2.085e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(3.710e-02, -6.811e-02, 3.289e-03, 4.638e-03, -7.903e-03, -2.851e-02, -4.790e-02, -1.296e-02, -7.688e-04, -2.771e-02, 4.372e-03, -7.897e-03, 1.018e-01, -3.405e-02, -5.190e-02, -2.368e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(3.041e-03, -1.127e-01, -6.194e-03, 5.061e-03, 1.868e-02, -1.068e-01, 6.212e-02, -5.833e-02, -7.831e-02, 1.487e-01, -3.430e-02, 6.764e-02, 1.300e-02, -9.119e-02, -2.509e-02, -6.237e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-6.647e-02, -9.544e-02, -3.249e-02, -6.525e-03, -9.510e-02, -7.397e-02, 2.398e-02, -9.318e-02, 3.386e-02, -3.718e-02, 8.025e-02, 5.352e-02, 4.598e-03, -4.118e-02, -8.816e-03, 5.351e-03), r4);\n\tr5 = MulAdd(s0_2_1, M4(-5.865e-02, 5.303e-02, 6.891e-02, -1.779e-02, -2.332e-02, -6.782e-02, 1.713e-01, -1.569e-02, -1.429e-01, -5.076e-02, -7.511e-02, -1.772e-03, 6.096e-02, 2.436e-02, -1.231e-01, -2.570e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-4.097e-02, -6.127e-02, 5.647e-02, -7.636e-02, -8.662e-02, -9.526e-02, 1.498e-01, 6.836e-02, -3.302e-02, 1.764e-02, -1.463e-01, 1.133e-02, -1.039e-01, -4.886e-03, 1.474e-02, -4.085e-03), r6);\n\tr7 = MulAdd(s0_2_1, M4(3.512e-03, 8.072e-02, -1.409e-02, -1.408e-02, -9.449e-03, -5.934e-02, -2.931e-03, -1.456e-01, 6.301e-03, 1.745e-01, -1.461e-02, 3.506e-02, 1.324e-02, -1.758e-01, -1.196e-02, -5.211e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-2.731e-02, -6.331e-02, 4.925e-02, -3.634e-03, -8.025e-02, 2.703e-02, -5.562e-04, 1.563e-02, -7.732e-03, 1.163e-02, -2.286e-02, 9.624e-03, 3.627e-02, 1.180e-02, 1.899e-02, -3.983e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(5.793e-02, -9.733e-02, 4.268e-03, -1.354e-02, -7.393e-03, 1.244e-02, 2.393e-02, -6.452e-04, -4.839e-02, -4.722e-02, -1.480e-02, 1.332e-02, -7.126e-02, 2.261e-03, 3.457e-02, -5.769e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(6.195e-02, -5.156e-02, -7.637e-03, -1.025e-02, -4.758e-02, -1.916e-02, 2.962e-02, -2.686e-03, -6.108e-02, 9.279e-04, 2.168e-02, -1.615e-02, 3.124e-02, -1.287e-02, 2.240e-02, -7.210e-03), r2);\n\tr3 = MulAdd(s0_2_2, M4(8.003e-03, 1.796e-02, 2.087e-02, 5.296e-02, 3.479e-02, 1.221e-01, 1.246e-01, 5.390e-02, -2.795e-02, 1.510e-03, 6.993e-02, -2.206e-02, 3.540e-02, 7.098e-02, 5.304e-03, 9.241e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(-4.174e-02, 3.307e-02, -4.191e-02, -2.647e-02, 6.056e-03, -7.122e-03, 9.503e-03, 7.188e-03, -7.613e-02, -7.223e-02, 5.033e-02, -5.509e-02, 1.224e-02, -1.307e-02, -3.257e-03, -1.281e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-3.036e-02, -1.308e-01, -6.859e-02, -6.572e-03, -6.071e-02, 3.112e-02, 9.376e-03, -7.083e-03, -9.980e-02, 3.110e-02, 4.785e-02, 2.432e-03, -5.832e-02, -5.810e-02, -3.529e-02, -1.053e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-8.228e-02, -2.709e-02, -2.610e-02, -7.055e-02, 1.269e-01, -3.708e-03, 3.770e-02, -2.774e-02, 4.174e-02, -6.156e-02, -2.727e-02, 3.197e-02, -1.708e-02, 5.627e-03, -5.239e-02, 1.788e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(2.526e-03, -3.723e-02, -1.398e-03, 1.225e-01, -2.178e-03, -1.586e-01, 5.069e-03, 1.226e-01, -1.593e-02, 6.137e-02, -1.727e-02, 9.437e-02, -1.883e-03, 4.438e-02, 1.227e-03, 3.211e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(3.550e-02, 1.327e-02, 5.361e-02, 3.804e-03, 1.631e-01, 2.660e-02, 1.143e-02, -2.468e-02, 9.299e-02, -3.877e-02, 5.390e-02, 7.419e-03, -1.943e-03, 1.070e-02, 9.123e-03, 8.285e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-2.401e-01, -1.210e-02, -1.974e-01, -1.209e-02, 2.281e-01, -2.507e-02, 1.298e-01, 4.811e-03, 1.288e-01, 8.983e-03, -2.897e-01, -3.264e-02, 1.328e-01, 9.091e-03, 4.001e-02, 6.450e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.547e-02, -2.783e-03, -6.052e-03, 6.486e-03, 1.200e-02, -1.234e-02, 1.590e-02, 2.181e-02, 6.030e-03, 1.580e-03, 1.419e-02, -1.086e-02, -2.215e-03, 8.116e-03, -1.329e-02, -2.900e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(2.740e-02, -7.717e-03, -1.824e-01, 7.852e-03, -1.272e-01, -2.711e-02, 2.765e-03, 2.436e-02, -2.010e-02, 3.869e-02, -3.544e-02, -6.370e-02, 7.445e-02, 8.071e-03, -6.417e-03, -5.953e-03), r3);\n\tr4 = MulAdd(s1_0_0, M4(3.838e-02, -3.569e-02, 3.256e-03, -6.069e-02, -1.960e-02, -8.201e-03, -2.313e-02, -1.498e-02, -3.343e-02, -1.990e-02, 1.110e-02, 2.845e-02, 5.924e-02, 9.848e-03, 2.660e-02, 2.412e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-6.376e-02, -7.349e-02, -5.004e-02, 3.096e-02, 9.790e-02, 1.161e-01, -4.210e-02, -6.275e-03, -3.305e-02, 1.245e-01, 1.029e-02, -2.513e-02, 1.787e-02, -2.839e-02, -8.817e-02, 1.156e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(5.288e-03, 7.612e-03, 3.952e-02, 1.036e-02, 2.298e-02, 2.830e-03, 2.100e-03, -2.416e-02, -3.814e-02, -5.814e-03, -7.686e-02, -2.466e-02, 2.738e-02, 3.882e-02, 3.527e-02, 1.311e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(1.785e-02, -7.786e-02, -7.963e-03, -5.174e-02, -1.969e-03, 6.779e-02, 7.290e-03, -6.098e-02, 1.134e-02, 1.333e-01, -1.398e-03, -1.144e-02, 1.943e-03, -9.002e-04, 1.663e-03, -4.939e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-3.441e-02, 4.792e-02, 1.149e-01, -2.054e-02, -1.118e-01, -2.125e-01, -1.772e-02, -1.668e-02, 6.265e-02, 1.820e-01, 1.391e-01, 1.813e-02, 1.360e-01, 1.092e-01, -6.030e-02, 1.378e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-3.756e-01, -4.012e-02, -6.680e-02, 1.428e-02, 4.266e-02, -3.478e-03, 1.877e-02, 4.015e-02, -2.553e-01, -1.980e-03, -2.675e-01, -3.401e-02, 1.402e-01, -5.271e-02, -4.071e-02, -3.568e-04), r1);\n\tr2 = MulAdd(s1_0_1, M4(5.872e-02, 6.991e-03, -1.191e-02, 7.524e-03, 4.849e-02, -2.741e-02, -5.995e-02, -3.454e-02, -5.117e-02, -1.529e-02, -2.018e-02, -3.070e-03, -9.601e-02, 3.103e-03, 3.246e-03, 1.180e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-9.250e-02, 1.163e-03, -2.571e-01, 3.369e-02, 7.279e-03, -1.478e-01, 9.690e-02, -1.119e-01, 8.070e-02, 1.272e-01, -3.154e-01, 2.989e-02, -3.390e-02, 7.607e-03, 9.116e-02, 4.056e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-1.045e-02, -9.983e-02, 1.180e-02, -1.411e-01, 9.350e-03, 2.475e-02, -5.701e-02, -2.683e-02, 1.346e-01, -2.431e-02, 8.018e-03, 6.316e-03, -1.187e-01, 9.292e-02, 6.061e-02, -5.960e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(2.551e-02, -2.856e-03, 2.295e-02, 7.283e-02, 3.972e-02, 8.119e-02, -3.584e-02, -3.410e-03, -9.342e-02, 4.523e-02, 4.685e-02, 4.376e-02, 7.698e-02, 1.326e-01, -4.247e-03, 3.468e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(1.195e-01, 3.050e-03, 8.159e-04, 3.305e-02, -3.520e-02, -7.886e-02, -1.738e-02, -1.460e-02, -1.246e-01, -4.252e-02, 2.643e-02, 5.782e-03, 2.554e-01, -4.191e-02, 7.793e-02, 1.132e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(2.802e-02, -2.163e-02, 1.393e-03, -4.459e-02, -8.290e-03, -2.131e-01, 2.544e-02, -1.172e-01, -1.072e-02, -8.697e-02, -1.856e-02, -2.167e-02, -3.700e-03, 1.000e-01, 1.488e-03, 7.641e-03), r7);\n\tr0 = MulAdd(s1_0_2, M4(-1.688e-01, -9.625e-03, 2.356e-02, -1.324e-02, -1.436e-02, 6.527e-03, -2.663e-02, 1.482e-02, -1.120e-01, 1.950e-02, -1.606e-02, 2.922e-03, 1.411e-01, -2.964e-02, -9.583e-02, 5.477e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(-3.407e-01, -3.633e-03, 6.597e-03, 1.560e-02, 3.766e-01, 3.635e-04, -1.857e-02, -2.922e-02, -1.413e-01, 2.747e-02, -2.662e-02, 2.225e-03, 1.730e-01, -2.469e-02, 9.195e-02, 3.857e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(3.184e-02, 1.729e-02, 1.574e-02, -4.020e-03, 4.802e-02, -1.051e-02, -8.823e-02, 4.008e-03, 1.911e-01, 1.698e-03, 5.871e-02, 1.813e-02, -6.892e-02, 1.731e-02, 5.873e-02, -1.793e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-1.580e-02, 7.163e-02, -1.081e-01, -2.934e-02, -7.379e-03, -4.715e-02, 7.340e-02, -1.602e-02, 1.218e-01, -1.364e-02, -3.018e-01, -1.164e-03, -7.269e-03, 5.456e-02, 2.927e-02, 2.389e-03), r3);\n\tr4 = MulAdd(s1_0_2, M4(-2.921e-03, -8.654e-02, 2.251e-02, -7.234e-02, 3.442e-03, 2.392e-02, -2.833e-02, 7.865e-02, -3.741e-02, -5.025e-02, -1.135e-02, -3.904e-02, -3.397e-02, -9.055e-03, 3.859e-02, 2.457e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-1.274e-02, -1.056e-01, 4.973e-02, 3.169e-02, -1.952e-03, 1.089e-03, -5.035e-02, -8.653e-03, -2.841e-02, -2.961e-01, 1.062e-01, 6.810e-02, -2.163e-02, 1.172e-01, 4.872e-02, -8.562e-03), r5);\n\tr6 = MulAdd(s1_0_2, M4(-2.562e-02, -3.608e-02, 5.801e-03, 3.897e-02, -5.838e-02, 5.564e-02, -9.238e-03, 2.415e-02, -3.879e-02, 1.792e-01, 2.368e-02, 1.174e-01, 9.220e-02, 3.166e-02, -4.859e-02, 3.485e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-2.848e-03, -9.517e-02, 9.749e-04, 2.972e-02, 6.921e-04, 1.533e-02, -1.662e-02, -1.671e-01, -2.847e-02, 1.618e-01, -1.355e-02, -7.523e-02, -4.949e-03, 6.969e-02, 1.679e-02, 1.046e-01), r7);\n\tr0 = MulAdd(s1_1_0, M4(8.727e-02, 2.441e-03, 8.356e-02, 2.007e-02, 4.606e-02, -1.326e-03, 6.583e-02, -1.240e-02, 4.865e-02, -3.132e-02, -5.447e-03, 2.411e-02, 1.263e-01, -1.629e-01, -3.792e-02, -7.417e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(-2.945e-01, 6.316e-02, -1.879e-01, 1.946e-02, 3.883e-01, -9.932e-02, 1.939e-01, 4.712e-02, 1.472e-01, 1.205e-02, -4.107e-03, -7.055e-03, 3.593e-02, -3.334e-02, 1.136e-01, -6.768e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-1.274e-01, 2.129e-02, -4.827e-02, 4.655e-03, 8.308e-02, -1.210e-02, 8.295e-04, 2.245e-02, -4.713e-02, -1.847e-02, -9.301e-03, -1.112e-02, -1.313e-02, 1.192e-02, 1.529e-02, 1.290e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(5.214e-02, -9.832e-03, -1.905e-01, -2.099e-02, 7.192e-03, 7.381e-02, 6.932e-02, 6.966e-02, -1.635e-02, 5.677e-03, 7.642e-02, -5.851e-02, -1.243e-02, 1.142e-01, 1.550e-02, -1.451e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(3.961e-02, -8.209e-03, 1.933e-02, 8.261e-03, 5.970e-02, 2.166e-02, -3.882e-02, -4.479e-02, 1.933e-02, 1.955e-02, 6.431e-03, 9.361e-02, -1.012e-01, -5.132e-02, 7.079e-02, -2.749e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.854e-01, -8.343e-02, 5.544e-02, -4.660e-03, 9.298e-02, 1.756e-01, -1.763e-01, 5.960e-03, -7.678e-02, 1.411e-02, 6.711e-02, -2.691e-02, 4.811e-02, 2.363e-01, 2.214e-02, 4.815e-03), r5);\n\tr6 = MulAdd(s1_1_0, M4(-8.732e-03, -4.407e-02, 3.136e-02, 2.792e-02, 6.664e-02, -8.964e-03, 6.775e-02, -8.615e-03, -1.291e-02, 1.612e-02, -3.248e-02, -3.240e-02, -4.176e-02, 4.413e-02, -7.568e-02, -2.987e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.067e-02, -8.823e-02, 5.558e-03, -1.488e-01, -8.825e-03, 1.194e-02, 9.324e-04, -1.496e-01, -9.904e-04, 6.003e-02, 9.887e-03, -2.952e-02, 1.359e-02, 1.003e-01, -1.391e-02, 4.376e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-5.921e-02, 8.006e-02, -1.288e-01, 3.597e-02, -1.297e-01, -1.157e-01, -6.907e-02, -4.908e-02, 4.073e-02, 4.709e-02, 7.756e-02, 6.530e-02, -2.853e-01, 6.017e-02, 2.019e-01, -4.871e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.929e-01, 8.521e-02, -1.274e-01, 1.811e-02, -1.504e-01, 1.350e-02, -3.874e-01, -6.260e-02, -5.189e-02, 8.348e-02, 1.743e-01, 3.947e-02, -5.800e-01, 1.002e-01, 2.135e-01, -1.698e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(6.290e-03, 8.618e-02, 9.197e-02, 2.639e-02, 1.221e-01, -8.724e-02, -4.301e-03, 1.086e-02, -7.149e-02, 6.809e-02, 2.054e-02, -1.322e-02, -2.495e-01, 1.014e-02, 2.187e-02, 3.912e-03), r2);\n\tr3 = MulAdd(s1_1_1, M4(2.225e-02, 1.486e-02, -1.094e-01, 1.101e-01, -1.489e-01, 2.259e-02, -5.283e-02, -8.235e-02, 1.792e-01, 8.597e-02, 1.858e-01, 1.938e-01, -2.870e-01, 1.123e-01, -1.938e-01, 3.115e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.003e-01, 3.072e-02, 1.222e-02, -2.083e-01, -2.170e-03, -5.772e-02, -8.860e-02, -1.417e-02, -5.603e-02, 7.916e-02, 8.727e-03, -6.459e-02, 8.470e-02, -2.269e-01, 9.253e-02, -2.441e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-1.860e-01, 7.330e-03, 1.169e-01, 9.024e-02, -3.766e-02, -2.171e-01, -2.075e-01, 1.286e-02, -1.194e-01, 8.296e-02, 6.472e-02, -5.396e-03, 2.924e-02, -3.113e-02, 2.974e-02, 8.383e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(5.021e-02, -1.535e-02, 6.068e-02, 7.568e-02, -4.562e-02, 1.380e-01, -6.554e-02, -8.233e-02, 8.153e-02, -4.990e-02, 7.863e-02, 5.137e-02, -3.081e-01, 7.055e-02, -2.006e-01, 4.164e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(5.983e-03, 3.407e-03, 1.100e-02, -1.599e-01, -5.173e-03, -1.384e-01, -9.033e-04, -1.666e-01, -4.257e-03, -8.815e-02, -1.943e-03, -1.627e-03, 5.391e-03, 8.194e-02, 2.768e-02, 1.101e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-2.056e-01, -2.810e-02, 2.224e-02, -4.096e-03, -4.112e-02, 4.513e-02, -5.192e-04, -7.968e-03, 6.526e-02, 3.771e-02, -2.443e-01, 5.672e-04, 4.827e-01, 1.352e-01, -8.117e-02, 1.205e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(-4.793e-01, 5.627e-02, 6.046e-02, 3.676e-02, 2.280e-01, -2.397e-02, 6.962e-02, -7.157e-02, -3.785e-02, 9.266e-02, 8.570e-02, 6.662e-02, 2.901e-01, -1.091e-01, 2.122e-02, 6.243e-04), r1);\n\tr2 = MulAdd(s1_1_2, M4(2.183e-02, 1.952e-02, 6.616e-03, -7.083e-05, 9.673e-02, 7.003e-03, -4.926e-02, 5.133e-03, 3.329e-02, -3.037e-02, 5.723e-02, 6.630e-03, 1.144e-01, 5.747e-02, 6.261e-02, -2.019e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-6.027e-02, 2.483e-02, -6.196e-02, -8.347e-02, -2.902e-02, -1.471e-02, -7.814e-02, -7.643e-03, 3.046e-02, -7.773e-02, 1.384e-01, 7.122e-03, 8.629e-02, 1.603e-02, 1.194e-01, -8.437e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.597e-02, 1.157e-03, 7.820e-03, -1.641e-01, 5.319e-03, -6.846e-02, -4.766e-02, 4.050e-02, -7.057e-02, 5.639e-02, -2.313e-02, 8.881e-03, -1.009e-03, 2.587e-02, 7.086e-02, 7.741e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(-1.089e-01, -1.702e-01, 5.321e-03, 1.565e-02, 8.379e-02, 8.227e-02, -1.138e-01, 9.566e-04, -1.548e-02, -5.155e-02, 5.755e-02, -1.292e-02, -9.107e-02, -5.141e-03, 8.659e-02, 8.961e-03), r5);\n\tr6 = MulAdd(s1_1_2, M4(2.368e-02, 1.542e-03, -4.942e-03, 4.093e-02, -8.623e-03, 2.890e-02, 3.280e-03, 6.278e-02, 1.321e-01, -5.378e-02, 8.964e-02, 2.722e-02, -4.022e-01, 5.683e-02, -9.170e-02, 2.219e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(-1.159e-04, -1.988e-01, 3.529e-02, -6.425e-02, 3.714e-03, -5.212e-02, -2.242e-02, 4.319e-02, -1.926e-02, 1.472e-01, 2.965e-02, -1.626e-01, 4.191e-03, 2.514e-01, 1.541e-02, -5.023e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-4.035e-02, 3.840e-02, 4.827e-03, 8.017e-03, 4.381e-02, 4.525e-03, 2.358e-02, 2.137e-03, 1.093e-02, -1.934e-03, 1.344e-02, 1.114e-02, -1.919e-02, -9.762e-03, 6.003e-02, 8.634e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-6.667e-02, 5.837e-03, -2.265e-01, 1.798e-02, 6.945e-02, 3.841e-02, 1.104e-01, -1.047e-02, 3.403e-02, 3.260e-02, -2.868e-02, -4.253e-03, 8.212e-02, -7.066e-02, -4.150e-01, -1.810e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.223e-02, 2.660e-02, 2.777e-02, -2.021e-03, 9.445e-02, -3.669e-03, 8.661e-03, 8.197e-03, 1.003e-02, -4.373e-03, 3.548e-03, -6.539e-03, -8.062e-02, -2.381e-02, 1.105e-02, -8.763e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.708e-02, 5.668e-02, -1.421e-01, -2.867e-02, -5.709e-03, 4.259e-03, 3.665e-02, -1.704e-02, 4.309e-02, 1.107e-02, 3.187e-02, 1.492e-02, -1.875e-01, 5.236e-02, -1.768e-02, -1.237e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(-2.565e-02, 1.288e-02, 2.332e-02, 5.836e-03, -9.335e-02, -4.745e-02, -3.067e-02, 9.979e-02, 2.066e-02, 9.433e-03, 2.004e-04, -6.426e-03, 5.140e-02, 7.652e-02, 4.028e-02, 7.436e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-6.947e-02, -5.499e-02, -1.786e-02, 1.525e-02, 7.200e-02, 1.539e-01, 5.752e-02, -1.608e-02, 2.129e-03, 2.272e-02, -3.425e-03, -3.917e-03, -8.206e-02, 1.128e-01, 4.264e-02, -2.094e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(6.784e-03, -3.718e-02, -7.983e-03, 1.022e-02, 1.231e-02, 2.310e-02, 3.804e-03, -1.536e-02, 5.083e-02, 9.550e-03, 3.271e-02, -6.511e-03, -1.525e-01, 4.180e-02, -6.557e-02, -9.003e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(-7.158e-03, -8.758e-02, -5.975e-03, 1.798e-02, -6.869e-03, 6.915e-02, -1.540e-04, -7.794e-02, 4.087e-03, 4.983e-02, 1.295e-03, -3.741e-02, 2.031e-02, 3.375e-02, -7.286e-03, 6.108e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(8.894e-03, -1.674e-02, 1.378e-04, 1.768e-02, -5.443e-02, -4.826e-02, -5.954e-02, -1.289e-02, 1.389e-02, 2.542e-02, 1.762e-02, 2.631e-03, 4.857e-02, -1.458e-02, 9.840e-02, -2.023e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.453e-01, -2.180e-02, -1.911e-02, 4.362e-02, 1.325e-01, 1.194e-01, -3.574e-02, 1.690e-02, 1.694e-02, -5.821e-02, -1.360e-02, -8.686e-03, 5.556e-01, 3.095e-02, 1.700e-01, 2.596e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(-8.164e-02, 5.000e-02, 2.426e-02, 1.809e-02, -3.535e-02, 1.128e-02, -1.692e-02, -3.870e-03, -2.541e-02, 1.704e-02, 3.191e-03, 2.792e-03, 2.316e-02, 8.957e-02, 2.925e-02, 4.513e-03), r2);\n\tr3 = MulAdd(s1_2_1, M4(5.062e-02, 1.839e-02, -4.584e-02, -1.885e-02, -3.916e-02, -2.071e-01, 1.069e-01, -2.814e-02, -7.861e-03, 3.208e-02, 9.052e-02, 1.381e-03, -8.583e-02, 9.498e-02, 3.623e-01, 7.104e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-2.372e-02, 4.063e-02, 2.668e-03, 1.391e-01, -8.226e-02, 5.267e-02, -4.343e-02, 1.395e-02, -1.457e-02, -3.002e-02, -4.019e-03, 2.788e-02, -2.744e-01, 8.752e-02, 8.081e-02, -3.705e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-9.943e-02, -9.422e-02, -8.689e-02, -4.343e-02, 3.739e-02, 4.208e-02, 1.060e-01, -1.581e-02, -4.362e-02, 2.848e-02, -6.275e-02, 3.403e-03, 4.548e-02, 2.531e-01, 1.316e-01, -9.231e-03), r5);\n\tr6 = MulAdd(s1_2_1, M4(-6.262e-02, 3.995e-02, -4.253e-02, 9.645e-03, 2.300e-02, -3.964e-02, 1.096e-01, -2.161e-02, 1.722e-02, -2.266e-03, -1.890e-02, 7.133e-03, 9.970e-02, -2.711e-02, 1.372e-01, -5.475e-03), r6);\n\tr7 = MulAdd(s1_2_1, M4(5.296e-03, -3.782e-03, -1.199e-03, -4.296e-02, -4.101e-03, 5.534e-02, 1.579e-02, -1.244e-01, 3.427e-03, -2.479e-02, -1.282e-02, 7.666e-03, 3.438e-04, 1.184e-02, 1.168e-04, -3.573e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.208e-01, -1.165e-02, 3.949e-03, 6.162e-03, 4.155e-02, 9.318e-03, 6.022e-02, 7.056e-03, 2.922e-03, -8.244e-03, -4.452e-02, -9.639e-03, 9.253e-02, 8.598e-02, 4.692e-02, 1.172e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(4.028e-02, -2.394e-02, 9.820e-03, 3.818e-02, 1.592e-01, 6.048e-02, -6.077e-03, 2.202e-02, 7.312e-02, -4.581e-02, 6.858e-02, -3.041e-02, -4.651e-02, 9.228e-03, -3.806e-02, -5.649e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(7.432e-03, 4.086e-02, 1.691e-02, 1.132e-02, -2.908e-03, -6.645e-03, -1.301e-02, -9.043e-03, 2.211e-03, -1.261e-03, -2.557e-02, -1.352e-04, 6.880e-03, -3.347e-02, 2.033e-02, 3.557e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(-4.126e-03, -9.989e-02, 3.070e-02, 1.222e-02, 8.830e-03, -3.727e-02, 8.668e-02, 2.900e-03, 7.405e-03, 1.942e-03, -2.231e-02, 1.246e-02, 1.018e-01, 8.133e-02, -1.721e-01, 3.300e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(3.594e-03, 1.445e-02, -7.683e-03, 2.011e-02, -2.081e-02, 6.567e-02, -3.313e-02, 1.442e-03, 1.380e-02, -7.911e-03, -1.491e-02, -6.638e-03, 6.362e-02, -1.173e-01, 5.177e-02, -3.828e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-8.088e-02, -7.403e-02, -7.060e-02, 2.022e-02, 1.102e-02, 1.361e-02, 1.462e-01, -3.896e-03, 2.379e-02, 1.376e-02, 5.162e-02, 2.883e-03, -5.982e-03, -1.422e-01, -1.437e-02, -3.103e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(1.404e-02, -5.259e-03, -2.103e-02, 9.063e-03, 1.113e-01, -1.138e-02, 3.017e-02, -1.161e-02, -7.947e-02, -9.246e-03, 1.545e-02, 1.397e-02, 3.174e-01, -8.602e-03, -1.300e-01, 6.464e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-8.824e-03, -5.200e-02, 1.282e-02, -9.569e-03, 8.251e-03, 1.071e-01, -2.160e-03, -1.666e-01, 5.132e-03, 7.148e-02, -6.574e-03, 5.406e-02, -1.161e-02, 8.711e-02, 3.424e-03, -2.812e-02), r7);\n\tr0 = max(r0, 0.0);\n\tT8[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT9[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT10[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT11[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT12[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT13[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT14[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT15[gxy] = r7;\n}\n\n//!PASS 5\n//!DESC conv4 (32x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T8, T9, T10, T11, T12, T13, T14, T15\n//!OUT T0, T1, T2, T3, T4, T5, T6, T7\n\n#define L0(x, y) V4(O(T8, x, y))\n#define L1(x, y) V4(O(T9, x, y))\n#define L2(x, y) V4(O(T10, x, y))\n#define L3(x, y) V4(O(T11, x, y))\n#define L4(x, y) V4(O(T12, x, y))\n#define L5(x, y) V4(O(T13, x, y))\n#define L6(x, y) V4(O(T14, x, y))\n#define L7(x, y) V4(O(T15, x, y))\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-7.050e-02, -4.255e-03, -8.130e-02, -1.038e-02, -2.116e-02, 8.884e-03, 4.279e-01, 2.263e-02, -3.027e-02, 2.528e-03, -4.154e-02, -1.109e-02, -7.014e-02, 2.377e-02, 8.252e-02, -1.149e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.047e-01, 1.949e-02, -5.140e-04, -2.717e-02, -2.953e-02, -2.934e-03, 2.075e-02, 3.542e-02, 2.638e-02, 4.613e-05, 2.294e-02, 8.215e-02, 2.908e-02, 9.557e-03, -2.739e-03, 3.451e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-9.044e-02, 9.832e-03, -2.224e-02, -1.928e-01, -4.615e-02, 1.038e-01, -6.326e-03, -1.004e-01, -1.589e-01, 3.061e-02, -8.039e-03, -9.788e-02, -2.238e-03, -3.879e-03, 2.216e-03, -7.525e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(1.708e-04, -4.233e-03, -3.778e-03, -2.132e-02, -1.630e-02, 2.714e-02, 2.552e-02, -8.927e-03, -6.683e-03, -6.164e-03, -5.407e-03, -1.882e-02, 2.739e-02, -2.808e-02, 2.064e-02, 1.229e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-1.315e-01, -1.154e-01, -1.158e-02, -1.201e-02, -1.667e-02, 2.010e-02, -9.190e-02, 2.037e-02, 9.506e-02, -2.079e-01, -1.256e-01, -9.978e-03, -3.655e-03, -6.517e-02, -3.745e-02, 1.956e-03), r4);\n\tr5 = MulAdd(s0_0_0, M4(-1.258e-03, 2.167e-02, 3.730e-03, 1.362e-02, -4.946e-03, 1.103e-01, 1.121e-02, -8.295e-03, 1.662e-02, -2.080e-01, -2.150e-02, 4.307e-03, -1.161e-02, 3.189e-02, -1.202e-02, 7.579e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-5.891e-03, 1.341e-03, 9.638e-03, 2.735e-03, 2.289e-02, 4.967e-03, 1.734e-02, -1.083e-03, -8.212e-03, -8.322e-03, -8.949e-03, 4.263e-03, 2.242e-02, -2.849e-02, 2.144e-02, 1.488e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(4.231e-03, -5.251e-03, 1.403e-02, -9.061e-03, -1.026e-03, -3.904e-03, 2.679e-02, 6.525e-03, 3.592e-03, 4.797e-04, -5.203e-03, -5.808e-03, 5.849e-03, 1.801e-02, 1.323e-02, 5.720e-05), r7);\n\tr0 = MulAdd(s0_0_1, M4(-1.488e-01, 9.633e-04, -1.698e-01, -1.269e-02, 1.599e-01, 1.120e-02, -2.108e-02, -4.158e-02, -1.396e-01, 4.605e-04, 8.530e-02, -2.666e-01, 2.681e-02, 1.851e-01, 1.855e-01, -1.421e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(2.150e-02, 4.383e-03, -2.933e-02, -2.987e-02, -2.647e-02, -9.093e-03, 3.447e-02, -1.229e-03, -1.862e-02, -1.990e-02, -1.668e-02, -1.203e-02, -8.586e-04, 6.274e-02, -3.937e-02, 2.500e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-2.012e-02, 1.185e-02, -6.162e-02, -9.599e-01, -6.326e-02, 1.595e-01, 1.628e-02, 3.569e-01, -1.702e-01, -4.115e-03, 1.695e-02, -5.761e-02, -7.789e-02, 4.488e-02, -3.402e-02, -1.356e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(-1.058e-02, -3.254e-02, -3.259e-02, -1.398e-03, -1.999e-02, 2.306e-02, 2.792e-02, 9.326e-05, -5.971e-02, -4.256e-02, -4.363e-02, 2.887e-03, 3.274e-02, 7.159e-02, -7.301e-02, -5.143e-03), r3);\n\tr4 = MulAdd(s0_0_1, M4(-4.909e-01, -7.140e-01, 7.358e-02, -2.956e-02, -5.607e-01, 2.626e-01, 3.609e-02, -3.977e-02, 1.735e-01, -6.359e-01, -2.561e-02, 6.312e-02, 8.087e-02, -2.053e-01, -6.888e-02, 4.272e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(3.166e-03, 3.870e-02, -6.165e-03, 2.181e-05, 1.698e-03, -3.675e-02, -5.090e-03, -6.209e-03, -3.967e-02, 7.750e-02, -1.798e-02, -1.010e-02, 3.362e-02, -2.251e-01, -6.050e-03, 2.740e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(-3.209e-02, -1.064e-02, -5.360e-02, 1.920e-02, 2.129e-02, 4.728e-03, -6.058e-02, 2.646e-02, -4.187e-02, -1.800e-02, -3.438e-02, -1.258e-03, 7.204e-02, -7.177e-02, 3.282e-02, 2.410e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(-4.017e-02, 1.237e-02, 1.469e-03, 1.410e-02, 4.579e-03, -1.252e-02, 2.095e-02, 5.793e-04, -5.604e-03, 2.530e-02, 7.940e-03, -9.730e-03, -2.359e-02, 7.260e-03, 1.788e-02, -1.172e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(9.657e-02, -2.105e-02, 1.064e-01, -6.908e-03, -5.399e-02, -1.010e-03, 1.556e-01, 7.870e-03, -7.048e-02, -3.004e-02, 9.743e-02, 1.039e-02, -6.755e-02, 2.767e-01, 2.564e-02, 2.724e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(3.622e-02, 7.716e-03, -9.941e-03, -6.225e-02, 4.585e-02, 1.575e-04, -1.423e-02, 3.400e-02, -2.820e-02, 1.429e-02, 1.667e-02, -7.975e-03, -1.175e-01, 2.252e-02, -2.412e-02, 2.684e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.382e-02, -1.280e-01, -1.379e-02, -1.563e+00, 6.914e-02, 1.419e-01, 7.460e-02, 1.100e-01, -1.427e-02, 8.813e-02, -2.124e-01, -5.336e+00, -6.578e-02, 2.691e-02, -1.245e-01, -1.242e+00), r2);\n\tr3 = MulAdd(s0_0_2, M4(3.087e-03, 9.623e-03, 8.889e-03, 3.837e-03, 1.199e-02, 4.016e-02, 4.407e-02, 2.012e-03, 1.633e-02, -1.073e-03, -5.869e-05, -1.645e-03, 1.700e-02, -2.221e-04, -1.052e-02, 4.649e-03), r3);\n\tr4 = MulAdd(s0_0_2, M4(-4.329e-01, -3.922e+00, 7.214e-02, 1.226e-02, 7.749e-01, -4.657e-01, 1.904e-02, -3.674e-02, -8.264e-01, -3.895e+00, 1.113e-02, -1.492e-02, 4.528e-02, -2.742e+00, -3.872e-02, -5.472e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(1.643e-02, 5.929e-02, 1.169e-02, -6.091e-03, 3.877e-03, -1.106e-01, 1.239e-02, -1.277e-02, 7.738e-04, -3.136e-02, -1.040e-02, 4.126e-03, 4.968e-02, -1.330e-01, 5.147e-03, 1.480e-01), r5);\n\tr6 = MulAdd(s0_0_2, M4(8.932e-03, -7.584e-03, -3.450e-02, 3.595e-03, 4.046e-02, -1.316e-02, 5.981e-03, 6.702e-02, -3.100e-03, -3.227e-03, 5.993e-03, -1.310e-02, 3.722e-02, 5.248e-02, 3.475e-02, -1.370e-03), r6);\n\tr7 = MulAdd(s0_0_2, M4(1.939e-03, -6.649e-03, -7.920e-03, 4.256e-03, 2.816e-02, 9.426e-03, 1.529e-02, -3.326e-03, -4.525e-02, -3.762e-03, 2.282e-02, 4.176e-03, -3.332e-02, 8.973e-04, 3.288e-02, 7.179e-04), r7);\n\tr0 = MulAdd(s0_1_0, M4(-3.248e-01, -2.571e-04, -5.451e-01, -1.277e-02, -7.003e-02, -1.336e-04, -1.293e-03, 4.050e-03, -1.438e-01, -1.845e-03, -6.929e-02, -1.943e-02, -6.749e-03, -2.848e-02, 5.614e-03, 5.300e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-6.152e-01, -1.548e-02, -9.616e-02, -8.934e-02, 2.131e-01, 1.361e-02, 3.656e-03, 6.075e-02, -5.875e-01, -3.137e-02, 1.901e-03, -2.642e-01, -1.089e-01, -4.476e-02, -1.135e-02, -8.854e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(-6.568e-03, -9.891e-02, -1.033e-02, -4.862e-02, 1.634e-02, 7.739e-02, 2.618e-02, -5.367e-02, 5.527e-02, -1.018e-01, 1.304e-02, -6.310e-03, 1.333e-02, 4.655e-03, -4.884e-02, -4.929e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-4.433e-02, -4.187e-02, -3.804e-02, -7.025e-02, 9.038e-03, -4.700e-03, -2.543e-03, 1.638e-02, -3.908e-02, -3.176e-02, -3.107e-02, -6.274e-02, -1.975e-02, -1.687e-02, -4.406e-02, -2.200e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-4.484e-01, -1.483e-02, -5.878e-02, -5.042e-02, 3.790e-01, -4.770e-02, -6.415e-02, -1.628e-01, -2.776e-01, -4.506e-02, -1.246e-01, -9.192e-02, 9.404e-02, -2.822e-02, 2.021e-03, 8.727e-03), r4);\n\tr5 = MulAdd(s0_1_0, M4(-2.830e-03, -3.076e-04, -7.528e-03, -1.164e-02, -2.679e-02, 2.296e-01, -8.065e-02, 6.271e-03, -4.799e-03, -8.343e-02, 3.063e-02, -4.191e-02, -1.865e-02, 6.938e-02, 2.222e-02, -7.546e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-3.676e-02, -7.893e-02, -4.222e-03, 6.564e-03, -9.100e-05, 7.361e-02, 2.943e-02, -3.507e-02, -3.011e-02, -6.213e-02, -2.593e-02, -2.289e-02, -4.343e-02, 1.289e-02, 1.962e-03, -3.628e-03), r6);\n\tr7 = MulAdd(s0_1_0, M4(-2.172e-02, -3.600e-02, 1.153e-02, 3.845e-03, 5.039e-02, 2.079e-02, 4.741e-02, -2.542e-03, 1.695e-02, 6.530e-03, -3.614e-02, 1.670e-02, -4.142e-03, -1.115e-02, -1.279e-02, -4.857e-03), r7);\n\tr0 = MulAdd(s0_1_1, M4(-8.206e-01, -8.762e-02, -2.041e-01, 7.882e-03, 2.675e-01, 7.599e-02, -3.356e-01, -3.531e-02, -6.426e-01, -5.331e-02, -4.172e-01, 1.916e-02, -1.175e-01, -1.424e-01, 2.170e-02, -1.499e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(9.042e-02, -1.697e-02, -1.842e-01, -4.295e-01, 1.231e-01, -7.203e-02, 2.857e-02, 2.779e-01, -3.808e-02, -3.604e-01, -1.465e-01, -3.242e-01, -1.714e-02, 3.142e-02, -6.421e-02, -1.240e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-8.356e-02, -9.345e-01, -2.334e-01, -1.521e-02, -1.901e-01, -3.747e-01, 1.043e-01, -2.741e-01, -2.180e-01, -7.522e-01, -4.453e-02, 1.382e-01, -8.024e-02, -5.494e-02, 6.961e-02, -5.631e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(-3.819e-02, 2.607e-04, 3.169e-05, -8.828e-02, 1.448e-01, 5.900e-02, 5.258e-02, 3.115e-01, -1.256e-02, -5.516e-03, -7.300e-03, -1.176e-03, -4.265e-02, 2.342e-02, -1.126e-02, 1.124e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(-2.977e+00, -4.463e-02, 2.782e-01, -5.773e-02, 2.001e-02, -1.256e-01, 3.564e-02, 6.040e-02, 1.055e-01, 1.253e-01, -2.517e-01, 2.917e-02, -3.904e-02, -7.156e-02, 4.854e-02, -1.113e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(1.665e-02, -5.853e-01, 4.035e-02, -1.224e-02, 3.545e-02, 2.438e-01, 6.345e-02, -6.660e-02, -8.078e-02, 3.180e-01, -4.661e-02, -3.018e-01, -1.108e-02, 8.887e-02, 8.848e-02, -5.525e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-4.703e-03, 1.333e-02, -8.761e-02, -1.619e-03, 5.378e-02, -1.392e-01, -2.336e-01, 1.670e-01, -1.105e-02, -1.257e-01, -9.888e-02, -1.188e-01, -7.397e-02, -2.033e-01, -3.300e-02, -6.630e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(-4.886e-02, -1.685e-01, -3.853e-02, -1.236e-01, -9.007e-02, -2.479e-01, -1.437e-01, -1.283e-02, -2.425e-02, -2.459e-01, -1.649e-01, -4.766e-02, -3.403e-02, -2.470e-02, -5.743e-02, 1.596e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-5.586e-02, 1.497e-02, -1.115e-01, 2.894e-02, -2.319e-01, -1.608e-01, 2.839e-01, -3.971e-02, -1.606e-01, -1.294e-01, -1.786e-01, 6.925e-03, -1.104e-01, -2.881e-01, -1.228e-01, 1.606e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-4.221e-02, 4.355e-03, 3.325e-02, -1.110e-01, -2.995e-03, 3.332e-02, -1.559e-01, -4.919e-02, -7.304e-02, 2.053e-02, 3.313e-02, -1.040e-01, -7.855e-02, -3.107e-02, -1.987e-02, -3.412e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.283e-01, -1.863e-01, -2.662e-01, 2.529e-01, 3.857e-01, 7.032e-02, -7.413e-02, -4.840e-01, 1.445e-02, -9.454e-02, -3.639e-01, -6.585e-02, 3.132e-02, -1.145e-01, -1.675e-01, 1.382e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(5.997e-03, -2.324e-03, 7.492e-04, 5.538e-03, 5.943e-02, 1.859e-02, 1.999e-02, -3.592e-02, 1.347e-02, 8.092e-04, 2.217e-03, -1.230e-02, 1.637e-04, 6.709e-03, -1.654e-03, 3.817e-03), r3);\n\tr4 = MulAdd(s0_1_2, M4(-2.168e-01, 1.226e-01, -1.313e-01, -1.816e-02, -2.462e-01, -4.199e-01, 2.512e-01, -9.854e-02, -3.385e-01, -2.417e-02, 1.181e-01, -2.151e-03, -2.153e-01, 1.854e-01, -1.112e-01, -2.349e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-7.997e-03, 2.839e-01, -3.076e-02, 9.031e-03, 6.241e-02, -5.979e-02, -4.450e-02, 2.315e-02, 2.585e-02, 2.631e-02, 4.687e-03, 1.813e-02, 3.309e-02, -1.016e-01, 5.804e-02, 2.683e-01), r5);\n\tr6 = MulAdd(s0_1_2, M4(-1.024e-03, -9.675e-04, 7.349e-02, -8.507e-04, 1.463e-02, -2.345e-03, -6.669e-02, -5.647e-03, -5.937e-04, 3.019e-03, 8.306e-03, 1.673e-05, 8.198e-03, 2.725e-01, 2.283e-02, 4.307e-03), r6);\n\tr7 = MulAdd(s0_1_2, M4(7.256e-02, 3.532e-02, 4.952e-02, -2.745e-02, -8.770e-02, 1.305e-02, 2.879e-03, 5.267e-02, -8.693e-02, 2.754e-02, -4.865e-03, 1.035e-02, -7.170e-03, 3.274e-03, 6.527e-03, -7.266e-03), r7);\n\tr0 = MulAdd(s0_2_0, M4(-2.176e-01, -2.634e-03, 1.898e-01, 1.603e-03, -1.985e-02, 5.671e-03, 1.863e-01, -1.417e-02, -4.150e-02, -5.613e-03, -8.783e-02, 2.448e-03, -2.181e-02, 1.642e-02, -1.708e-02, 1.063e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.060e+00, -9.431e-03, -9.363e-02, 1.135e-01, -1.153e+00, 1.107e-02, -1.898e-02, 4.199e-02, -6.228e+00, -2.201e-02, -8.861e-03, -6.980e-02, -2.700e+00, 1.750e-02, -1.166e-02, -3.018e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-5.173e-02, -1.694e-01, -2.408e-02, -2.222e-03, 1.334e-01, 1.294e-01, 1.275e-02, -1.034e-01, -2.230e-02, 3.902e-02, 4.315e-03, -1.961e-02, -3.235e-02, 2.339e-02, -2.138e-02, -6.810e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-8.581e-03, -5.389e-03, -8.085e-03, -4.041e-02, 1.947e-02, 1.151e-02, 1.503e-02, -4.492e-02, 5.837e-03, 3.058e-04, 6.274e-05, -1.254e-02, -1.257e-02, -5.020e-03, 1.723e-03, 1.782e-04), r3);\n\tr4 = MulAdd(s0_2_0, M4(6.443e-02, 1.205e-02, -4.422e-03, -1.977e-01, 1.110e-01, -6.572e-02, 7.379e-02, -3.653e-01, 1.996e-01, -2.246e-03, 2.030e-02, -1.343e-01, 5.651e-02, -6.042e-02, -5.099e-02, -2.158e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-5.743e-02, 1.863e-02, 6.001e-03, -8.444e-03, -1.838e-02, 1.128e-01, -2.889e-02, 7.076e-03, -9.174e-03, 7.371e-02, -1.798e-02, -1.681e-02, 1.885e-02, -4.922e-02, 4.428e-03, 1.357e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(-1.095e-02, -3.741e-02, 5.469e-03, -6.967e-03, 1.305e-02, -2.612e-02, -6.913e-03, -1.008e-01, -1.097e-03, 1.166e-03, -4.903e-03, -5.866e-03, -1.126e-04, -2.388e-03, -8.738e-03, -1.772e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-1.083e-02, -3.059e-02, -2.416e-03, -3.503e-02, 8.452e-03, 2.983e-02, -8.912e-02, 2.959e-02, -1.156e-02, -8.413e-03, -6.940e-04, -2.999e-02, 9.473e-05, -8.861e-03, -6.169e-04, -2.228e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-3.326e-01, -6.615e-02, 5.284e-03, -5.238e-03, 1.057e-01, -2.713e-02, 4.263e-01, -3.485e-03, 5.533e-02, 2.116e-03, -1.156e-01, 4.512e-03, 5.224e-02, 7.349e-03, 1.378e-02, -2.951e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-5.762e-01, 2.381e-02, -3.336e-02, 1.536e-01, -3.909e-02, -3.503e-02, -1.249e-01, -2.222e-01, 1.285e-01, 1.443e-02, 2.663e-02, -6.264e-02, -3.750e-01, -2.826e-02, 4.037e-02, 5.519e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.862e-02, -1.766e-01, -1.210e-01, 1.494e-02, 1.885e-01, 1.537e-01, -7.753e-02, -1.096e-01, -4.586e-02, 5.392e-02, -1.330e-02, 1.537e-03, 8.370e-03, 4.129e-02, 1.622e-02, -1.126e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.814e-02, -7.427e-03, -8.539e-03, 5.027e-03, -2.275e-02, 1.309e-03, 3.381e-03, 1.813e-03, -1.178e-03, 5.213e-03, 2.461e-03, 1.085e-02, 2.614e-03, -7.795e-03, -1.175e-02, -3.302e-03), r3);\n\tr4 = MulAdd(s0_2_1, M4(-5.274e-02, 2.112e-02, 4.391e-02, -2.585e-01, -4.098e-01, -1.549e-01, 3.096e-02, 1.520e-01, -2.296e-01, 1.910e-02, -5.540e-03, 2.587e-01, 3.020e-02, -3.651e-02, -5.328e-03, 1.044e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-1.765e-03, -1.996e-01, 4.239e-02, 7.042e-03, 3.192e-02, 3.458e-01, -2.242e-03, -2.891e-02, 4.041e-02, 8.129e-02, -5.290e-02, 2.059e-02, -2.386e-02, 3.635e-02, -2.165e-02, -5.166e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-8.718e-03, 7.542e-02, 1.595e-02, 1.361e-01, 1.863e-03, 6.578e-02, 2.887e-03, 1.469e-02, 2.931e-03, 1.665e-02, 3.150e-05, 4.884e-03, -1.788e-02, -5.310e-02, -3.214e-03, 1.200e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(-3.944e-02, -9.893e-02, 5.232e-02, -5.957e-02, -1.943e-02, -2.704e-02, -7.741e-02, -1.033e-01, 2.758e-03, 5.215e-02, 1.818e-02, 4.321e-02, -5.994e-03, -5.169e-03, -2.311e-03, -1.937e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(1.178e-01, 7.348e-02, -8.560e-02, 3.789e-03, -1.212e-01, 8.903e-02, -5.592e-01, -1.434e-04, -2.495e-02, 5.510e-03, -4.597e-02, 6.561e-03, -2.770e-02, -3.371e-02, 2.044e-02, 4.332e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(9.453e-02, 3.940e-02, -9.409e-02, 1.294e-02, -4.252e-02, -6.676e-02, 2.082e-01, 9.289e-02, -3.007e-03, 1.651e-02, 3.681e-02, -2.557e-02, 2.150e-02, -1.837e-02, -4.024e-02, -7.458e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.106e-01, 8.549e-02, 3.274e-02, 7.598e-02, -2.657e-02, -3.600e-02, -1.760e-01, -5.960e-02, 6.535e-02, 2.653e-02, 2.594e-02, -7.095e-02, 1.720e-02, -8.527e-02, -7.083e-03, -6.374e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(3.266e-02, 8.656e-03, 1.021e-02, 1.588e-03, 1.314e-02, -3.053e-03, -3.007e-03, 5.598e-03, -2.072e-02, -3.440e-04, -1.058e-03, -9.693e-03, -4.118e-03, 2.736e-03, 2.165e-03, 1.661e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(3.704e-01, 4.694e-02, -4.314e-02, 1.537e-01, 1.200e-02, 1.008e-01, 9.894e-02, -2.187e-01, 8.797e-02, -7.759e-02, 4.638e-02, -1.000e-02, -3.994e-03, -5.478e-02, -2.874e-02, -6.374e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(1.729e-02, 1.097e-01, -6.301e-02, 4.188e-02, -1.709e-02, -1.883e-03, 3.032e-02, -4.849e-02, -9.103e-03, 5.099e-02, 5.102e-02, 1.096e-02, 8.909e-03, -3.506e-02, 3.909e-02, 9.204e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(8.815e-03, 1.022e-02, 9.278e-03, -1.732e-02, -3.550e-03, 2.764e-03, -2.491e-02, 1.665e-01, -1.091e-03, 1.900e-03, -8.092e-03, -5.386e-03, 5.464e-03, 8.618e-02, -5.398e-04, -3.745e-03), r6);\n\tr7 = MulAdd(s0_2_2, M4(5.820e-03, 2.899e-03, 7.592e-02, 5.509e-02, -6.828e-02, -8.423e-02, -6.042e-02, -5.165e-02, -1.985e-02, 1.695e-02, 6.240e-03, -4.672e-03, -1.976e-02, 1.777e-02, 2.897e-03, 5.849e-03), r7);\n\tr0 = MulAdd(s1_0_0, M4(-3.284e-01, 1.905e-02, 4.404e-01, -5.001e-02, 1.177e-01, -9.127e-03, -2.180e-01, 7.763e-03, -1.337e-02, -4.923e-03, -5.221e-02, 2.531e-02, -6.917e-02, -5.519e-03, -6.541e-01, -2.060e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.184e-01, -1.113e-02, -8.148e-02, 7.919e-02, -1.029e+00, -6.950e-03, 3.507e-02, 1.135e-01, 5.768e-02, 3.788e-03, -5.524e-03, 5.122e-02, -1.677e-01, 9.874e-03, -2.036e-02, 7.882e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-2.880e-01, 8.168e-02, -1.602e-01, -1.105e-01, -5.506e-02, 4.737e-02, 6.559e-02, 5.492e-02, 1.815e-01, 1.716e-01, -1.136e-02, -4.113e-03, 1.556e-01, -2.353e-02, -6.567e-02, -1.909e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(-4.161e-02, -2.586e-02, -2.850e-02, -4.291e-02, -3.639e-02, -1.300e-02, -5.507e-03, -6.592e-02, -1.163e-02, -1.197e-03, -7.728e-04, -5.349e-03, 1.906e-02, 1.507e-02, 1.461e-02, 3.846e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-6.458e-02, -1.989e-01, 2.230e-01, 4.555e-02, 9.598e-01, 1.054e-01, -7.274e-04, 1.446e-01, 2.893e-01, 2.023e-01, -1.834e-03, 3.910e-02, -6.543e-01, -1.408e-01, -2.270e-02, -6.491e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-1.496e-02, 2.494e-01, -3.154e-02, -1.508e-02, -1.412e-01, -2.278e-02, -4.331e-02, -2.485e-02, -4.765e-03, -5.605e-02, -1.704e-02, 6.069e-03, -6.239e-02, -1.396e-01, 9.577e-03, 1.275e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-2.767e-02, -7.012e-02, -7.835e-02, -1.691e-02, -5.836e-03, 5.190e-02, -2.092e-02, 2.460e-02, 1.202e-03, 5.062e-02, 8.480e-03, 5.832e-03, 1.847e-02, 1.289e-02, -1.962e-02, -1.149e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-9.161e-02, -3.126e-02, -1.300e-01, -3.455e-02, 1.563e-03, -1.242e-02, 3.639e-02, -2.300e-02, 4.475e-03, 3.415e-02, 2.131e-02, 1.938e-02, -1.070e-02, 1.966e-02, -3.774e-02, 1.780e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(6.130e-02, -8.960e-02, -2.323e-01, -9.548e-02, 1.868e-01, 5.493e-02, 2.967e-01, -1.798e-01, 8.896e-02, 5.482e-02, 2.204e-02, -1.054e-02, -6.720e-02, 8.199e-03, -2.258e-01, -1.627e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(2.655e-02, -1.012e-03, 1.101e-01, 2.284e-01, -4.790e-04, -2.018e-02, -2.180e-01, 3.530e-01, 6.715e-02, 2.027e-02, 9.061e-02, 7.673e-02, 2.450e-02, -5.136e-03, 3.059e-02, 4.594e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(5.070e-01, -1.254e-01, 8.959e-02, 2.863e-01, 1.720e-01, -2.525e-02, -1.397e-01, -1.228e-01, -4.990e-01, 9.363e-02, 4.143e-02, 1.818e-01, -5.028e-01, -6.443e-01, 6.265e-02, -5.841e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(6.713e-02, -4.802e-02, -4.790e-02, 2.813e-02, -6.082e-02, 4.951e-01, 4.962e-01, -1.779e-02, -1.679e-01, -1.028e-01, -1.043e-01, -2.576e-02, -4.854e-02, 7.403e-03, 1.456e-02, 3.746e-03), r3);\n\tr4 = MulAdd(s1_0_1, M4(7.612e-02, 4.270e-01, 1.466e-01, -1.219e-01, 4.496e-01, -4.344e-01, 3.004e-01, -8.932e-02, -1.267e+00, 1.914e-01, 1.577e-01, -6.415e-02, -1.248e+00, -8.274e-01, -6.675e-02, -4.619e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-5.093e-02, 2.984e-02, 2.459e-02, 1.075e-03, 3.594e-02, 3.890e-02, -1.864e-02, -2.518e-02, -6.294e-03, -5.857e-03, 2.681e-02, 1.391e-02, -1.144e-02, 2.663e-01, 4.554e-02, -5.109e-03), r5);\n\tr6 = MulAdd(s1_0_1, M4(-4.178e-02, -7.604e-03, -2.843e-02, -1.120e-01, 4.738e-01, -9.344e-02, -9.501e-02, -2.296e-02, -9.416e-02, 3.854e-02, 2.818e-02, -9.061e-02, 7.236e-03, -1.913e-02, 6.076e-02, -4.188e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(1.870e-02, 7.665e-02, -1.645e-02, -1.052e-02, -4.810e-03, -9.203e-02, 6.228e-02, 5.905e-03, 6.372e-02, -9.212e-03, 2.638e-02, -4.498e-03, 3.156e-02, -4.331e-02, -1.129e-01, -6.175e-03), r7);\n\tr0 = MulAdd(s1_0_2, M4(1.135e-01, -1.100e-03, -5.450e-01, 2.221e-02, -1.734e-01, -1.265e-01, 3.523e-01, 3.750e-02, -1.284e-01, 4.902e-02, 4.074e-02, 1.088e-03, 1.249e-02, -3.492e-02, 1.786e-01, 3.627e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-6.091e-02, -3.558e-02, -1.812e-01, 4.756e-02, -3.360e-02, 1.398e-02, 7.572e-02, 1.503e-01, -4.254e-03, 1.896e-03, -1.112e-01, -4.418e-01, -1.161e-02, 5.802e-03, -1.875e-02, -2.980e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(-5.227e-01, 2.861e-01, -3.448e-02, 8.927e-02, 2.932e-01, 5.438e-02, -1.028e-01, -1.698e+00, -7.223e-02, 2.397e-01, -4.194e-02, -1.352e+00, 1.043e-01, -1.817e-02, -4.651e-01, -6.334e+00), r2);\n\tr3 = MulAdd(s1_0_2, M4(-1.062e-01, -5.731e-02, -6.214e-02, -4.114e-02, 9.243e-03, -2.561e-03, 1.757e-03, 1.182e-02, -1.155e-02, 1.331e-03, 1.723e-03, 1.773e-02, 1.690e-02, 1.594e-02, 1.552e-02, -4.442e-03), r3);\n\tr4 = MulAdd(s1_0_2, M4(-2.232e-01, -1.635e+00, 2.557e-01, -1.265e-01, 8.728e-01, -8.712e-01, 7.826e-02, 1.547e-02, -3.336e-01, -6.337e-01, 9.013e-03, 1.151e-03, -2.978e-01, -6.409e+00, 2.175e-02, -2.787e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-5.707e-02, 2.585e-01, 2.096e-02, -3.957e-02, 2.024e-02, 1.853e-02, -2.350e-03, 1.017e-02, -1.657e-03, 6.281e-02, 3.466e-03, 5.686e-03, 1.500e-02, 1.061e-01, 1.200e-02, -1.005e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-5.874e-02, -5.868e-03, -4.820e-02, -1.292e-01, -3.274e-03, 6.904e-03, 2.199e-03, -2.649e-02, 2.613e-03, 3.435e-03, -3.068e-02, 2.144e-03, 1.470e-02, -7.681e-03, 2.434e-03, -1.192e-03), r6);\n\tr7 = MulAdd(s1_0_2, M4(-7.601e-03, -7.551e-02, -1.058e-01, -7.312e-02, 4.147e-02, -7.139e-02, -1.289e-02, 1.732e-02, -5.730e-02, -7.494e-02, -5.805e-03, -3.575e-03, -4.773e-02, -1.063e-02, -1.257e-02, -7.631e-03), r7);\n\tr0 = MulAdd(s1_1_0, M4(-9.944e-03, -1.416e-02, -6.328e-01, -4.096e-02, -2.759e-01, -1.115e-03, 3.505e-01, 2.035e-03, -1.294e-01, 1.047e-02, 2.021e-01, 1.091e-02, 5.432e-02, 6.636e-03, -1.704e-01, 2.327e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-3.622e-01, -8.279e-02, 1.320e-01, -3.308e-01, -4.425e-01, 1.140e-02, 4.580e-02, -2.924e-02, 1.789e-01, 3.562e-02, -1.138e-02, 8.920e-02, 2.518e-01, -2.301e-02, 1.399e-02, -1.173e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(-2.149e-01, 1.200e-01, -2.229e-01, -1.122e-01, -1.493e-01, 3.968e-01, -5.742e-02, -1.144e-02, -7.396e-02, 1.265e-01, 2.352e-02, 9.947e-02, 8.375e-02, -2.541e-02, -1.707e-02, 7.359e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-5.320e-02, -5.553e-02, -5.264e-02, 3.359e-02, 2.179e-03, -1.114e-02, -7.617e-03, -4.186e-02, 2.479e-02, 7.490e-03, 1.048e-02, 1.096e-02, 1.724e-02, 1.972e-03, 2.910e-03, -5.602e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-1.899e-03, -1.702e-01, 2.477e-01, -2.774e-01, 2.473e-01, 6.979e-02, 1.489e-02, 1.185e-02, 7.544e-01, 6.567e-02, -7.791e-02, -1.023e-01, -3.215e-01, 5.875e-02, 5.476e-02, 1.294e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(-7.854e-02, 2.092e-01, -5.066e-02, -7.117e-02, 5.441e-03, 1.220e-02, -2.691e-02, 4.107e-03, 4.216e-02, 1.925e-01, -4.681e-02, 2.454e-02, 2.863e-02, -2.045e-02, -1.657e-02, -1.494e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(-4.816e-02, -1.398e-02, -1.103e-03, -7.092e-03, -8.389e-03, 2.541e-02, -1.306e-02, 3.191e-02, 8.297e-03, -1.958e-02, -2.999e-02, 5.668e-02, 6.678e-03, 4.664e-02, -2.489e-02, -3.457e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(4.931e-02, 9.675e-03, -1.749e-02, -2.400e-02, -3.783e-02, -2.827e-02, 1.652e-02, -3.035e-02, -1.013e-02, -9.107e-02, 1.916e-02, -5.895e-02, -2.796e-02, -2.797e-02, -4.055e-02, -1.468e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-1.239e-01, -6.629e-03, -1.576e-02, -8.253e-02, 8.796e-02, 3.391e-02, -3.049e-01, 1.897e-02, -4.552e-01, -3.216e-02, -1.469e+00, 3.944e-02, -4.089e-01, 7.792e-02, -1.630e-01, -3.341e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-9.816e-02, -1.412e-01, -2.446e-01, -2.315e-01, 7.140e-02, -2.485e-01, -3.584e-01, -1.161e-01, -2.314e-01, 1.055e-02, -3.242e-01, 9.108e-02, -1.624e-01, -2.038e-01, -4.888e-01, -5.471e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-1.281e-01, -1.415e-01, 1.218e-01, -1.467e-01, 3.974e-01, 2.949e-01, 1.421e-01, -5.816e-02, -1.428e-01, -1.482e-01, -3.670e-02, 2.499e-01, -2.823e-01, -4.051e-01, 1.225e-01, -1.809e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-2.526e-01, -3.359e-02, -4.430e-02, -1.434e-01, -1.179e-01, 3.720e-03, 4.751e-03, -2.460e-02, -1.506e-01, -6.140e-02, -5.555e-02, -1.508e-01, -2.901e-02, -1.099e-02, -1.123e-02, 7.202e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(-5.069e-01, -1.174e-01, 1.508e-01, 9.530e-02, 5.702e-01, 8.518e-03, -3.554e-01, 3.806e-02, -3.154e-01, 1.946e-01, 3.920e-01, -3.529e-01, -9.737e-01, -1.406e-01, 2.206e-02, -2.019e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-5.363e-04, 3.002e-01, 1.439e-01, -1.304e-01, -1.220e-02, -3.352e-01, 7.471e-02, -2.056e-01, -2.965e-01, -2.408e-01, -7.347e-02, 1.001e-02, -1.401e-01, -4.958e-01, -2.766e-01, -1.804e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(-4.962e-02, -1.880e-01, -9.547e-02, 2.262e-02, 4.672e-03, -8.349e-03, -1.821e-01, -2.585e-01, -5.294e-02, -2.866e-02, 1.055e-01, -1.274e-01, -4.936e-03, -1.692e-01, -2.062e-01, -4.908e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-1.600e-01, -1.210e-01, -1.254e-01, 1.023e-01, 7.057e-02, -7.814e-02, 4.696e-02, 4.952e-02, -1.569e-02, 1.421e-01, -1.218e-02, 1.962e-02, 1.318e-01, -5.481e-03, -2.319e-01, -3.018e-03), r7);\n\tr0 = MulAdd(s1_1_2, M4(2.866e-01, -2.017e-01, 5.809e-01, -6.078e-02, 1.489e-01, 4.011e-02, 8.491e-02, -1.033e-02, -3.542e-02, -5.323e-02, -3.153e-01, -2.537e-03, 6.780e-02, -1.665e-01, -7.517e-01, -1.136e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-3.339e-02, 2.874e-02, 1.957e-02, 5.598e-02, 1.036e-02, 5.755e-02, -7.880e-02, -7.316e-02, -8.112e-02, 5.575e-03, -2.214e-01, -1.099e-01, 1.213e-01, 5.408e-02, -1.864e-02, -3.330e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-2.836e-01, -1.024e-01, -1.230e-01, 1.666e-01, -5.293e-01, 1.974e-01, -5.507e-02, -4.413e-02, -3.904e-01, -4.582e-01, -3.764e-01, 1.595e-02, -9.010e-02, -7.355e-02, -2.454e-01, 9.119e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.230e-02, -7.886e-02, -8.325e-02, 3.136e-02, 2.540e-02, -1.920e-02, -1.986e-02, 7.440e-03, -3.269e-03, -1.512e-02, -1.472e-02, -4.594e-03, 1.062e-02, 4.402e-03, 5.457e-03, 1.428e-03), r3);\n\tr4 = MulAdd(s1_1_2, M4(-7.757e-02, 3.068e-01, 2.666e-01, -1.480e-01, -3.659e-03, 1.059e-01, -1.036e-01, -6.101e-02, -2.149e-01, 2.633e-01, -3.211e-02, 3.947e-02, 2.148e-01, 3.300e-02, -1.688e-01, 2.228e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(-7.981e-02, 1.952e-01, -2.360e-02, 2.106e-02, -4.714e-02, 8.436e-02, 4.615e-02, 3.606e-02, -7.094e-02, 9.518e-02, 2.356e-02, -2.091e-03, 1.458e-02, 7.978e-02, -3.698e-02, 3.527e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-7.493e-02, -6.789e-03, -4.046e-02, -2.478e-02, -1.874e-02, -8.652e-03, -2.534e-02, 2.126e-02, -1.320e-02, -1.388e-02, -3.675e-02, -8.123e-02, 7.064e-05, -1.237e-02, 3.505e-02, -7.296e-03), r6);\n\tr7 = MulAdd(s1_1_2, M4(1.432e-01, -5.467e-02, -1.072e-01, -4.283e-02, -3.333e-02, 2.917e-03, 1.715e-01, -4.589e-02, -1.941e-01, -2.972e-02, 3.550e-02, -3.973e-02, -5.554e-02, 2.965e-02, -1.041e-02, -1.036e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(2.231e-01, -1.568e-02, 2.871e-02, -5.550e-03, 6.859e-02, -3.727e-03, 4.232e-02, -5.375e-03, 1.968e-02, -3.194e-03, -1.866e-01, 2.429e-03, 9.742e-02, 7.125e-03, 9.709e-02, 1.353e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-2.128e+00, -7.058e-02, -7.785e-02, 8.652e-02, -2.040e+00, 1.182e-02, -6.977e-02, 4.799e-02, -1.350e+00, 2.753e-02, 4.725e-02, 4.789e-02, -7.210e+00, 2.774e-02, 4.811e-02, 1.185e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(2.351e-02, -1.628e-01, 1.442e-02, -1.392e-01, 1.236e-01, -3.162e-02, 4.329e-02, -1.157e-02, 3.079e-02, 1.142e-01, -2.745e-02, -1.055e-04, -9.482e-03, 1.269e-02, -9.244e-03, -3.611e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.883e-02, -4.262e-02, -4.439e-02, -5.310e-02, -1.166e-03, -3.836e-03, -9.181e-04, 1.117e-03, -1.175e-03, -7.737e-05, -7.976e-04, -3.064e-03, 4.015e-03, 2.723e-04, -1.612e-03, 4.722e-03), r3);\n\tr4 = MulAdd(s1_2_0, M4(4.446e-01, -1.124e-01, 1.119e-01, 5.639e-03, -4.334e-02, 1.874e-02, 2.877e-02, -1.488e-01, -2.867e-01, 6.695e-03, -1.919e-02, -8.540e-02, -4.485e-02, -3.440e-02, 1.141e-02, -3.643e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(1.195e-03, 8.662e-02, -5.245e-02, -5.681e-02, -1.158e-03, 3.899e-02, 8.528e-03, 1.301e-02, -8.661e-03, 5.481e-02, 3.841e-03, 1.666e-02, -2.508e-03, -4.377e-02, -1.276e-02, 2.228e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-3.820e-02, -9.158e-02, -8.035e-02, 3.358e-04, -1.074e-03, -3.661e-03, -8.434e-04, -8.013e-03, -1.164e-03, 3.994e-02, 9.290e-03, 2.039e-03, 8.971e-05, -1.095e-02, 2.475e-03, -1.913e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(2.089e-02, -2.534e-02, -7.663e-02, -1.554e-02, 3.747e-03, 1.227e-02, -3.215e-02, 1.731e-02, 1.463e-02, 1.088e-02, 1.219e-02, 3.414e-02, -1.945e-02, -1.522e-02, 1.850e-02, 1.086e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-2.978e-01, -9.280e-02, -2.764e-01, -1.545e-02, -2.245e-02, 4.551e-03, 1.495e-01, -4.973e-03, 1.485e-01, 4.579e-02, 3.212e-01, -3.503e-03, -3.968e-02, -1.950e-02, 8.438e-02, 7.184e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.983e-01, -9.601e-02, 1.592e-03, -3.479e-02, -8.462e-02, -2.571e-03, 5.629e-02, 8.994e-02, -3.621e-01, 4.358e-02, -1.611e-01, -1.783e-02, -5.224e-01, -4.814e-02, -6.081e-02, -7.495e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-3.960e-01, 1.446e-01, -3.330e-01, -6.797e-05, -1.057e-02, 4.371e-02, -5.603e-02, -3.689e-03, 1.620e-01, 1.256e-01, 1.557e-01, 8.586e-02, -5.010e-02, -1.002e-02, 8.307e-02, 3.050e-03), r2);\n\tr3 = MulAdd(s1_2_1, M4(-5.638e-02, -9.569e-02, -9.594e-02, -5.024e-02, 3.374e-03, -4.109e-03, -3.681e-03, 4.228e-03, 2.939e-02, 6.771e-03, 7.810e-03, 7.333e-03, 1.280e-02, -3.007e-03, -2.643e-03, 1.571e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-8.966e-02, -2.302e-02, 7.599e-02, 1.478e-02, -3.734e-02, -8.057e-02, -1.031e-02, 1.106e-01, -2.791e-01, 8.831e-02, 3.345e-02, -1.906e-01, -5.675e-01, -4.969e-03, -7.861e-02, -3.536e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-1.243e-01, 1.607e-01, 5.329e-02, -7.612e-02, -2.294e-04, -9.202e-03, -1.833e-02, -1.062e-02, -9.032e-03, -2.025e-03, 1.576e-02, 3.787e-02, -3.189e-02, -1.684e-01, 8.775e-03, -3.376e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-8.227e-02, -6.326e-02, -4.968e-02, -4.121e-02, -4.827e-03, -3.706e-03, 2.349e-02, 1.319e-03, 1.016e-02, 1.334e-02, 1.362e-02, -6.109e-02, -2.741e-03, -1.132e-02, 9.873e-03, -6.011e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-5.499e-02, -6.085e-02, -8.424e-02, -1.458e-01, 1.460e-02, -1.061e-02, -4.808e-02, -1.202e-02, 2.862e-02, 3.363e-02, 5.314e-02, 3.501e-02, 1.958e-02, 4.916e-03, 1.052e-02, -5.212e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.755e-01, -6.431e-02, -3.273e-01, -1.353e-02, 4.171e-02, -5.783e-03, -1.835e-01, -4.019e-03, -1.385e-01, 2.627e-02, -4.775e-01, 3.118e-03, -1.438e-02, 2.892e-03, 1.178e-01, -6.161e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.658e-01, -6.660e-02, -2.815e-01, -1.481e-01, -4.957e-02, -1.126e-03, 6.697e-02, 2.313e-02, -2.423e-01, -2.834e-03, 9.302e-02, 1.646e-01, -3.747e-02, -1.582e-02, -2.332e-02, -4.766e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(2.628e-01, 1.144e-01, -1.029e-01, -1.878e-01, 2.813e-02, -6.239e-03, 3.951e-02, -1.168e-02, -2.015e-01, 8.862e-02, -1.143e-01, 8.132e-03, -2.052e-01, 3.465e-02, 2.246e-02, 8.100e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(-7.641e-02, -3.587e-02, -3.869e-02, 1.730e-02, 2.475e-03, -2.603e-03, -2.418e-03, -6.470e-03, -7.374e-03, 7.064e-03, 7.875e-03, -9.736e-04, -8.580e-03, -7.802e-03, -7.748e-03, -4.574e-03), r3);\n\tr4 = MulAdd(s1_2_2, M4(-4.725e-02, -2.172e-01, 1.227e-01, 2.152e-02, 2.345e-01, 5.540e-03, -1.150e-02, -4.790e-03, 5.155e-01, -3.824e-02, 3.858e-02, -2.347e-02, -7.415e-01, 1.518e-03, 3.130e-02, -8.893e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-3.635e-02, 1.351e-01, 1.198e-01, -6.714e-02, -1.862e-02, 2.042e-02, 2.410e-02, -9.828e-03, -2.679e-02, -4.198e-02, -3.732e-02, 6.333e-03, -1.047e-02, -7.927e-02, -5.028e-02, -1.459e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-3.770e-02, -3.137e-02, -5.411e-02, -1.247e-01, -7.910e-04, -8.695e-03, 6.665e-03, 2.381e-02, 6.920e-03, 5.067e-03, -1.084e-02, 7.635e-02, -7.856e-03, 1.013e-03, -9.515e-03, -1.272e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-4.179e-02, -3.301e-02, -4.387e-02, -7.397e-02, 1.495e-04, -2.145e-02, -1.541e-02, -3.020e-02, -1.766e-02, -4.505e-02, 1.384e-02, -2.310e-02, -2.201e-03, -8.252e-04, 1.788e-03, 3.131e-02), r7);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(4.231e-02, 1.118e-02, 5.577e-02, -2.370e-02, 1.574e-01, 9.092e-04, 2.742e-01, -2.379e-03, 5.856e-02, -1.493e-02, -2.998e-01, -1.626e-02, 2.159e-02, -6.674e-03, 8.846e-03, -2.012e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(7.025e-02, 4.894e-03, 1.621e-02, 2.054e-02, 3.343e-01, -1.097e-02, 2.151e-02, 5.090e-02, 4.557e-02, -2.811e-03, -4.378e-02, 1.342e-01, -9.021e-03, -2.795e-02, -7.384e-03, -1.206e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.057e-01, 6.641e-02, 4.457e-02, -7.903e-03, -4.634e-01, -1.080e-01, 7.708e-03, 8.056e-02, 7.198e-02, -1.096e-01, 1.951e-03, 3.904e-02, -1.451e-02, -5.631e-02, 2.413e-02, -6.851e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(3.925e-03, 7.471e-03, 4.614e-03, 1.034e-02, 1.467e-02, -9.739e-03, -1.084e-02, 2.990e-02, -3.386e-02, 1.566e-02, 4.589e-03, -7.669e-02, -2.836e-02, -5.481e-02, 2.383e-02, 6.969e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(-1.798e-01, -2.310e-02, -8.277e-03, -1.274e-01, -1.329e-01, -3.056e-02, -1.892e-02, 6.853e-02, 2.299e-01, 2.933e-02, -7.207e-02, 1.028e-02, 5.129e-02, -8.247e-02, 3.689e-02, 4.935e-03), r4);\n\tr5 = MulAdd(s0_0_0, M4(1.927e-03, 6.425e-02, 1.245e-02, -5.465e-03, 1.784e-02, -2.681e-02, -1.985e-02, -1.061e-02, 2.367e-02, -8.628e-02, 2.882e-03, -2.491e-03, 4.158e-03, 1.538e-02, 9.768e-03, -2.982e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(8.770e-03, -1.837e-02, -1.222e-02, -5.292e-03, -6.611e-03, -1.477e-02, 4.669e-03, 1.354e-02, 4.761e-03, 2.060e-02, -1.540e-03, -1.938e-02, -4.550e-02, -9.009e-02, -1.456e-03, -3.675e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(3.663e-03, -1.272e-02, 1.262e-02, 6.776e-03, -1.367e-02, -1.704e-02, 4.537e-02, -1.026e-02, -2.846e-02, -1.510e-03, -3.599e-02, -1.397e-03, -2.579e-03, 1.153e-02, -5.655e-03, 2.775e-03), r7);\n\tr0 = MulAdd(s0_0_1, M4(1.395e-01, -2.492e-02, -2.401e-03, 5.382e-02, -2.280e-01, -2.004e-02, 5.342e-02, -1.455e-02, 9.811e-02, 5.155e-03, -6.186e-02, 9.877e-02, -8.217e-03, -9.875e-02, 1.767e-02, 2.744e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-5.237e-02, -1.102e-02, -1.603e-03, -5.095e-02, -1.109e-02, 9.694e-03, -2.724e-02, -1.692e-01, 5.089e-02, -5.631e-03, -4.812e-02, -6.311e-02, -6.657e-03, 4.245e-02, -2.314e-02, -3.540e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-4.735e-02, 8.534e-02, 4.965e-02, 1.519e-01, 4.650e-01, 2.957e-01, -6.653e-02, 1.799e-01, -5.083e-02, 2.688e-02, -4.474e-02, 9.138e-03, -9.038e-02, 2.538e-02, -5.411e-02, 7.195e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-3.355e-02, -4.553e-02, -4.836e-02, -1.254e-02, 3.695e-01, -7.802e-03, 3.643e-03, 3.850e-02, 3.846e-02, 1.585e-02, 1.629e-02, -8.870e-03, 4.867e-02, 9.741e-02, 1.978e-01, -1.293e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-2.453e-01, 6.673e-03, 5.026e-02, -5.028e-02, 7.806e-02, 3.564e-01, 1.579e-01, -7.676e-02, -1.275e-01, 7.051e-01, -1.946e-01, 2.692e-02, 1.256e-02, -1.022e-03, 2.502e-02, -1.170e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-5.948e-03, -1.548e-01, -3.054e-02, -9.127e-03, 9.791e-02, -2.493e-01, -7.505e-02, 2.709e-02, -1.312e-02, 4.477e-02, 2.733e-02, -7.099e-03, 2.032e-02, -9.943e-02, -7.891e-03, -6.090e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-4.322e-02, 1.061e-02, -2.150e-02, -4.974e-02, -1.443e-03, 1.840e-02, -4.753e-04, -5.123e-02, 2.316e-02, 1.548e-02, -6.945e-02, 4.622e-02, 5.593e-02, -2.486e-01, 1.636e-02, -4.895e-03), r6);\n\tr7 = MulAdd(s0_0_1, M4(-1.179e-02, -1.407e-02, 1.546e-02, -1.097e-02, -8.962e-02, 6.164e-02, 2.635e-01, -1.958e-02, 7.396e-02, -7.129e-02, -1.651e-02, -1.868e-02, 4.621e-04, -1.208e-02, 2.708e-02, 2.521e-03), r7);\n\tr0 = MulAdd(s0_0_2, M4(-2.919e-02, 5.942e-03, -1.097e-02, -4.040e-02, -1.890e-01, 2.907e-02, -2.686e-01, 3.686e-03, -2.837e-02, 1.772e-02, 9.038e-02, -3.606e-03, -3.896e-03, -8.970e-03, -2.759e-02, 8.087e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.136e-02, -9.313e-03, -2.945e-02, -3.080e-02, 2.289e-02, -1.193e-03, -1.989e-02, -2.724e-02, -4.799e-02, 4.694e-03, 2.326e-02, -1.712e-02, 8.716e-03, 7.259e-03, -1.349e-02, -2.623e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-6.762e-02, 5.065e-02, -1.295e-01, -3.373e+00, -1.813e-01, -4.531e-03, -1.974e-01, -4.388e+00, 8.429e-02, 3.523e-02, 1.866e-01, -3.665e+00, -8.574e-02, -4.057e-02, -5.699e-04, -2.258e+00), r2);\n\tr3 = MulAdd(s0_0_2, M4(1.112e-02, 1.181e-02, 1.358e-02, -1.126e-03, 1.241e-02, -4.449e-03, -6.343e-03, 7.243e-03, -1.755e-02, -9.685e-03, -1.007e-02, -7.880e-04, -1.887e-02, -7.405e-03, -2.591e-02, 3.497e-03), r3);\n\tr4 = MulAdd(s0_0_2, M4(1.995e-01, -8.699e-01, -3.059e-02, -1.435e-02, 3.393e-01, -5.529e+00, -6.559e-02, -1.006e-02, -1.687e-01, -3.794e+00, -3.159e-02, -3.109e-03, -1.225e-01, -2.065e+00, 2.454e-02, 1.539e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(-5.424e-03, -1.331e-01, 8.989e-04, -2.236e-03, -1.434e-02, 2.365e-02, -5.903e-02, -4.134e-03, -1.021e-02, -8.185e-02, 4.533e-03, -1.914e-03, 6.848e-03, 6.458e-03, 2.668e-03, 3.813e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(1.279e-02, -2.006e-03, -1.061e-02, 9.259e-03, -3.771e-03, 3.379e-03, 4.472e-02, -2.375e-02, -6.879e-03, 9.737e-04, 9.626e-05, 6.099e-03, 7.948e-03, 1.923e-02, -8.272e-03, 1.050e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(7.892e-04, -8.337e-03, 1.454e-02, 1.742e-03, 8.421e-04, 3.845e-02, 1.233e-01, 9.737e-03, 1.618e-02, 6.192e-03, 1.429e-02, 4.588e-03, -3.005e-02, -1.286e-02, -1.220e-02, -7.012e-04), r7);\n\tr0 = MulAdd(s0_1_0, M4(-7.246e-02, -3.713e-03, 1.338e-02, -1.813e-02, -1.301e-01, 8.590e-03, -2.352e-01, 8.385e-03, 1.256e-01, 1.312e-03, 4.522e-02, 3.681e-02, -8.329e-02, -5.808e-02, 1.115e-01, 7.532e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(2.744e-04, -2.948e-02, -2.908e-02, 4.340e-03, -5.908e-01, 2.541e-03, 6.244e-02, -1.059e-01, 3.021e-01, -3.260e-02, -3.487e-02, -2.558e-01, -2.098e-03, -1.072e-01, 3.474e-02, 4.787e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.063e-01, 1.197e-01, 1.063e-02, 1.707e-01, -9.268e-02, 1.466e-01, 2.158e-02, 9.696e-02, 1.894e-01, 1.904e-01, 6.780e-03, 4.976e-02, 2.350e-02, 1.463e-02, -5.912e-02, -3.483e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(1.196e-02, 1.239e-02, 4.467e-03, -6.057e-02, -5.538e-03, 2.188e-02, 1.840e-02, 1.328e-01, 2.119e-02, 2.893e-02, 2.362e-02, -1.805e-02, -1.672e-02, -2.237e-02, -6.238e-02, 2.406e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-2.553e-01, 1.695e-01, -7.283e-02, -3.601e-01, -5.591e-01, 2.503e-02, -4.116e-02, -4.121e-02, 8.153e-02, 1.308e-02, -1.723e-01, 3.630e-01, 2.964e-02, -5.478e-02, 4.589e-03, -7.744e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(1.266e-02, 8.003e-02, 3.240e-02, -1.628e-02, -1.339e-01, 1.962e-01, 2.410e-02, 9.799e-04, 1.065e-02, 1.724e-01, -1.354e-02, -1.114e-02, -4.265e-02, 1.329e-01, 3.721e-03, -5.756e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(4.330e-03, 4.120e-02, 2.655e-03, -1.904e-02, 2.197e-02, 4.506e-02, 1.730e-02, -9.788e-02, 1.895e-02, -2.008e-02, -2.943e-03, 6.026e-02, -4.914e-02, 6.697e-02, 4.015e-02, 6.846e-03), r6);\n\tr7 = MulAdd(s0_1_0, M4(-2.931e-02, -2.828e-02, 2.997e-02, -7.798e-04, 3.228e-02, 3.163e-03, 1.161e-01, 3.079e-02, -5.849e-02, -2.938e-02, 8.061e-03, -5.699e-02, 1.944e-02, 1.935e-02, 5.438e-02, -4.095e-04), r7);\n\tr0 = MulAdd(s0_1_1, M4(-1.410e-01, 5.645e-02, -2.720e-01, -1.768e-03, -1.709e-01, 6.801e-02, 4.776e-02, -2.635e-02, 4.419e-01, 6.134e-03, 4.583e-01, -1.556e-03, -2.064e-01, -2.095e-01, 1.959e-01, -1.854e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.647e-01, 4.505e-02, -2.360e-01, -3.967e-02, -3.272e-01, -5.533e-02, -1.914e-01, -3.702e-02, -9.040e-02, 1.143e-01, 3.662e-01, 2.264e-01, 9.210e-02, 8.698e-01, -2.013e-02, -3.352e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-2.889e-01, -4.804e-01, -1.649e-01, 2.804e-01, -5.765e-02, -1.430e-01, -9.615e-02, -1.372e-01, 4.520e-01, 1.246e-02, 1.701e-01, 4.075e-02, -9.642e-02, 9.046e-02, -6.167e-02, -9.440e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.223e-01, 5.596e-02, 5.731e-02, -1.771e-02, -1.548e-01, -2.859e-02, -3.016e-02, -1.098e-01, 7.835e-02, -7.015e-03, -2.597e-03, -5.676e-02, 5.409e-02, 1.268e-03, 7.349e-02, 2.929e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(1.662e-01, 3.293e-01, -6.101e-02, 6.589e-02, -3.613e-01, 3.966e-02, 7.300e-02, -1.006e-02, 1.207e-01, 9.252e-02, 1.050e-01, 2.060e-03, -3.554e-01, -2.974e-02, -1.829e-01, -5.797e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.722e-01, -2.437e-01, 8.751e-02, 4.118e-02, 8.472e-02, -1.460e-01, 4.402e-01, -1.277e-02, 2.610e-01, -3.158e-01, -3.634e-02, 1.238e-01, 1.558e-01, -2.918e-01, 2.517e-03, 6.602e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(5.709e-02, -4.484e-02, 3.975e-02, -4.193e-02, -1.864e-02, -1.111e-01, -6.963e-02, -2.363e-01, -3.693e-03, 6.911e-02, 1.220e-01, 4.934e-01, 8.521e-02, 4.600e-01, 3.775e-02, 4.752e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(7.347e-02, 4.397e-02, -7.866e-02, -2.126e-02, -2.316e-01, 1.155e-01, 7.961e-02, 4.343e-01, 3.431e-01, 5.276e-02, 1.839e-01, -1.689e-02, -9.417e-02, 2.066e-02, 5.945e-02, 6.092e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-2.648e-01, -6.257e-02, 1.116e-01, -1.062e-02, 5.372e-02, -1.177e-01, 3.675e-01, 1.426e-02, 1.665e-02, 5.218e-02, -9.866e-02, 3.804e-03, 4.154e-02, 3.350e-01, -8.544e-02, -7.714e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-3.326e-02, -5.040e-02, 1.045e-01, -9.377e-02, 1.803e-01, 4.236e-02, 2.017e-02, -2.368e-01, -9.057e-03, 3.928e-03, 6.043e-02, -8.341e-03, -5.564e-02, -7.447e-02, 6.364e-03, 8.150e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.732e-01, -3.703e-01, -1.361e-01, -6.426e-01, -3.677e-01, -2.529e-02, -2.428e-01, 7.491e-02, 8.023e-02, 1.275e-02, 3.087e-01, 1.284e-01, 3.567e-02, -2.644e-02, 6.713e-03, 5.703e-03), r2);\n\tr3 = MulAdd(s0_1_2, M4(8.675e-03, -1.236e-02, -1.628e-02, -4.782e-04, 6.213e-02, 2.642e-02, 2.966e-02, 1.037e-02, 1.714e-02, -1.782e-03, -2.571e-03, 5.753e-03, 3.838e-03, -8.416e-03, 3.962e-03, 4.034e-03), r3);\n\tr4 = MulAdd(s0_1_2, M4(3.778e-01, -7.174e-01, -2.160e-02, -1.281e-01, -3.673e-01, 3.973e-01, 2.248e-02, -3.992e-02, -1.112e-02, 1.647e-01, 6.289e-02, -4.434e-03, 1.845e-01, -6.792e-03, 3.875e-02, 3.764e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(5.270e-02, -6.045e-02, 3.973e-02, -3.234e-02, 7.547e-02, -5.041e-02, 8.166e-02, 2.875e-02, -2.666e-02, -1.254e-01, -3.533e-02, 8.798e-03, -4.167e-02, 4.592e-02, -3.938e-02, -2.642e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-1.132e-02, -2.342e-03, -7.685e-02, 5.270e-02, 2.326e-02, -1.747e-02, -4.432e-02, 3.060e-02, -8.428e-04, -2.009e-02, 1.717e-03, -4.572e-02, -4.187e-02, 1.661e-01, 2.608e-02, 3.305e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-8.692e-02, -3.469e-02, -3.596e-02, 1.090e-02, 6.213e-02, -5.193e-02, 8.740e-02, 5.781e-02, 4.169e-02, -2.142e-02, 1.430e-02, -1.414e-02, 1.860e-02, -2.182e-03, -9.060e-04, -3.454e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-7.290e-03, 9.141e-03, 7.943e-03, -3.811e-03, -5.606e-02, 2.300e-04, -2.161e-02, -7.733e-03, 2.314e-02, -1.908e-03, -2.106e-02, 4.013e-03, -1.835e-03, -3.292e-03, 7.328e-02, -6.995e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(-5.931e+00, -2.099e-02, -3.858e-02, 5.775e-02, -7.267e+00, 2.285e-02, -3.136e-02, 4.341e-02, -4.825e+00, 3.683e-02, 1.233e-01, 1.573e-02, -3.214e+00, 7.541e-02, -1.626e-02, -1.957e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(4.035e-02, -5.657e-02, -2.126e-02, 2.106e-02, -6.909e-03, -1.175e-02, 2.562e-02, 5.975e-02, -8.105e-02, -8.508e-02, -6.918e-02, -2.291e-02, -4.173e-02, 4.150e-02, 4.457e-03, -3.873e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-6.797e-04, 3.476e-03, 3.857e-03, 1.116e-04, 7.131e-03, -6.548e-03, -5.833e-03, 1.505e-02, 1.431e-03, 9.097e-04, 1.433e-03, -6.142e-02, -1.088e-02, -5.958e-03, 2.654e-03, 7.428e-03), r3);\n\tr4 = MulAdd(s0_2_0, M4(-7.291e-02, 3.718e-02, 1.112e-01, -4.277e-01, -3.083e-01, 5.140e-02, 2.806e-02, -1.900e-01, 1.445e-01, 4.826e-03, -7.594e-02, 2.422e-01, -1.203e-01, -5.039e-02, 6.029e-02, 7.644e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-2.461e-02, -2.941e-02, -1.622e-02, -1.506e-02, -2.839e-03, -1.444e-03, -9.329e-03, 1.510e-02, -5.198e-03, -1.252e-01, -3.457e-02, 3.355e-02, 2.131e-02, 3.064e-02, 4.062e-02, -3.530e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(4.074e-03, -3.992e-02, -4.098e-03, -4.779e-02, -5.997e-03, 9.251e-03, 1.912e-02, -4.718e-02, 2.021e-03, 2.314e-02, -3.171e-02, 8.909e-02, -5.634e-04, 1.943e-02, -2.093e-04, -1.951e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-7.551e-03, 2.439e-02, 1.541e-02, 3.625e-02, 2.266e-02, 2.584e-02, -1.577e-02, 4.116e-02, -4.138e-02, -2.462e-02, -1.794e-02, -9.405e-03, -5.280e-03, 6.266e-03, -1.777e-02, -2.826e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-1.189e-01, -5.227e-02, -1.247e-01, 4.967e-03, 1.108e-02, 6.553e-03, 1.752e-01, 2.857e-03, 4.130e-02, -1.858e-03, -2.621e-01, 8.555e-04, 4.895e-02, 3.815e-02, -8.582e-03, -6.610e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(9.446e-02, -1.028e-02, 9.926e-03, -3.458e-03, -2.191e-01, -1.727e-02, 4.015e-02, 4.813e-02, 5.642e-01, 2.773e-02, -1.206e-01, -1.194e-01, 1.918e-01, -4.756e-02, 7.757e-03, 2.278e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(2.604e-01, 8.818e-02, -6.371e-02, -3.714e-02, -2.020e-01, -3.695e-03, -4.912e-02, 2.924e-02, 2.521e-01, 5.959e-03, 9.388e-02, -3.352e-02, 1.711e-02, -2.018e-02, 1.152e-02, 4.706e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-6.457e-02, 3.243e-03, 2.896e-05, 3.630e-04, -9.646e-03, -3.490e-03, -1.528e-03, -2.380e-02, -4.209e-03, 1.356e-02, 1.326e-02, -3.197e-02, 1.861e-02, -2.714e-02, -2.396e-04, -4.331e-03), r3);\n\tr4 = MulAdd(s0_2_1, M4(1.259e-02, -1.228e-02, -9.177e-02, -6.207e-01, 2.128e-01, 9.620e-03, -1.431e-02, 1.688e-01, 2.241e-01, -6.164e-03, -5.109e-02, 3.680e-03, 3.671e-01, 6.344e-02, -4.772e-02, -4.656e-04), r4);\n\tr5 = MulAdd(s0_2_1, M4(9.448e-02, -4.932e-02, 8.658e-02, 9.400e-04, -5.089e-02, 1.299e-01, 9.841e-02, -1.960e-02, 7.401e-02, 1.321e-01, 2.816e-01, 1.200e-02, -2.665e-02, 7.786e-02, 3.205e-02, -8.604e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-1.327e-03, 1.619e-02, -3.893e-02, 2.432e-02, -1.682e-03, 3.650e-03, 3.078e-02, 9.644e-02, 1.187e-02, -8.229e-03, -4.358e-02, 1.758e-02, -9.743e-03, -1.294e-01, 5.577e-03, 3.420e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(2.591e-02, -8.587e-02, -8.941e-03, 5.949e-02, -2.471e-02, -2.512e-02, -6.790e-02, -1.174e-01, 7.805e-02, 7.155e-03, -5.771e-02, 2.396e-02, -3.840e-02, 1.363e-02, -2.321e-02, 1.177e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(2.552e-01, 5.951e-03, 1.024e-01, 3.902e-03, -1.033e-01, 8.718e-03, -2.205e-01, -5.120e-03, -2.528e-03, -4.779e-03, -1.310e-01, 4.521e-03, -1.788e-02, 1.159e-01, -1.085e-01, 1.946e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(3.702e-03, -1.134e-02, -1.382e-01, -1.259e-01, -7.153e-02, 5.508e-03, -7.579e-03, 6.856e-03, 5.652e-02, -1.510e-03, -2.384e-02, -2.474e-02, -3.490e-02, -6.840e-02, -6.710e-02, 1.013e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.121e-01, 1.260e-01, 2.103e-01, 5.340e-02, 1.754e-02, -1.168e-01, 4.944e-02, -4.234e-02, 1.172e-01, -3.378e-03, 6.542e-02, -9.779e-02, 5.525e-02, -7.058e-02, 1.076e-02, -7.734e-04), r2);\n\tr3 = MulAdd(s0_2_2, M4(1.259e-03, -1.066e-02, -1.241e-02, -4.419e-03, 1.537e-02, 4.526e-03, 4.602e-03, -1.706e-03, 8.473e-04, 5.795e-03, 4.128e-03, 2.684e-03, -4.033e-03, -3.651e-03, 8.978e-03, -3.721e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(-7.661e-01, 7.719e-02, -9.534e-02, 5.318e-02, -9.451e-02, -5.285e-02, -5.315e-02, -4.324e-02, 3.196e-01, -7.202e-02, 2.917e-02, -7.881e-02, 2.599e-02, 1.038e-03, -2.114e-03, -1.974e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-4.762e-02, -7.842e-03, -7.445e-02, -4.430e-03, 2.993e-02, 8.952e-02, 1.132e-01, 9.644e-03, 4.930e-02, -2.775e-02, 6.840e-02, 7.372e-03, 5.207e-04, 4.973e-02, 3.136e-02, 5.424e-03), r5);\n\tr6 = MulAdd(s0_2_2, M4(-9.886e-03, -8.724e-03, 6.343e-04, -9.059e-02, 6.063e-03, 2.422e-03, -1.470e-03, 1.453e-03, 6.082e-03, 1.034e-02, -3.061e-02, 4.042e-02, -1.383e-02, -2.555e-02, 1.528e-03, -2.942e-03), r6);\n\tr7 = MulAdd(s0_2_2, M4(1.021e-02, 7.366e-03, 7.879e-02, -6.863e-03, -4.802e-03, -2.005e-02, 2.047e-02, 2.017e-02, 4.607e-02, -1.378e-02, -4.855e-03, 4.091e-03, 1.333e-02, 1.280e-02, -3.429e-04, 5.466e-03), r7);\n\tr0 = MulAdd(s1_0_0, M4(3.317e-02, -6.743e-03, 7.255e-02, 1.411e-02, -1.064e-01, 1.188e-02, -3.605e-01, -2.692e-03, -1.781e-02, -4.833e-03, -1.040e-01, 1.812e-02, -2.431e-02, -4.580e-03, -1.509e-01, -2.569e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(7.426e-02, -1.425e-02, -1.172e-03, 5.974e-02, -1.565e-01, -1.582e-03, 1.380e-02, -9.511e-03, 1.204e-01, 4.826e-03, -2.097e-02, 7.148e-02, -3.746e-02, 9.797e-03, 2.302e-02, 1.512e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.523e-02, -3.968e-02, 4.756e-02, 1.218e-01, 2.860e-01, 8.454e-02, -3.115e-02, -5.813e-02, 1.261e-03, -1.443e-03, -3.737e-02, 6.266e-02, -2.670e-02, -4.922e-02, 1.319e-02, 9.588e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-3.517e-03, -2.015e-03, -4.683e-03, -2.872e-02, -5.211e-02, -1.059e-02, -1.328e-02, -5.481e-02, 4.612e-02, -2.923e-02, -2.631e-02, 1.990e-02, 4.358e-02, -5.480e-03, -6.932e-03, 4.405e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(2.562e-01, 1.036e-01, -3.095e-02, 3.565e-02, -1.080e-01, 8.827e-02, 2.168e-02, -2.860e-02, 2.156e-01, -2.593e-02, -4.204e-02, 6.622e-03, 1.723e-02, 7.191e-02, 4.545e-02, 9.603e-03), r4);\n\tr5 = MulAdd(s1_0_0, M4(2.068e-02, -6.873e-02, -2.311e-03, -2.206e-02, -4.066e-02, -3.601e-02, 1.229e-02, -1.493e-03, 8.196e-04, 1.499e-02, -3.918e-03, 2.350e-04, -7.337e-03, -9.353e-02, 2.691e-03, 1.342e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-6.130e-03, -7.470e-03, -5.935e-04, -6.606e-03, -1.453e-02, 3.340e-02, -9.933e-03, -3.649e-03, -2.249e-02, 3.086e-02, 6.051e-03, 1.136e-02, -4.205e-03, 2.701e-04, 1.984e-02, -3.112e-03), r6);\n\tr7 = MulAdd(s1_0_0, M4(-7.287e-03, 1.569e-02, -5.087e-03, 5.403e-03, 5.203e-03, -1.159e-02, 9.258e-04, -2.662e-03, -1.306e-02, -3.828e-03, -2.606e-03, -1.515e-02, -9.604e-03, 7.622e-03, 8.543e-03, -4.821e-03), r7);\n\tr0 = MulAdd(s1_0_1, M4(4.757e-02, -1.962e-02, -2.619e-02, 4.600e-02, 3.512e-01, 2.456e-02, -3.030e-01, 1.243e-01, -2.125e-01, 3.008e-02, -3.757e-01, -1.948e-01, 3.536e-02, -1.877e-03, 4.632e-02, 8.947e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(4.120e-02, 1.049e-02, -1.751e-02, 4.505e-02, 8.938e-02, 3.426e-03, 1.516e-02, 5.170e-02, 8.752e-02, 2.227e-02, 4.228e-02, -3.813e-02, -9.313e-02, 5.959e-03, -3.085e-02, -3.093e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.629e-01, 1.415e-02, -8.326e-02, 3.559e-01, -4.613e-01, -1.943e-01, 1.682e-02, -1.799e-01, 1.087e-01, -1.627e-01, -3.170e-03, -4.312e-01, 1.821e-01, -1.001e-02, 9.972e-03, -4.844e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(7.488e-04, 3.304e-02, 4.138e-02, 4.529e-02, 1.255e-01, 5.299e-02, 5.261e-02, 4.521e-02, -3.893e-01, -4.212e-02, -4.769e-02, -5.530e-02, 3.581e-02, -2.032e-02, -1.989e-02, 4.578e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(7.899e-01, 2.333e-01, -1.503e-01, -5.242e-02, 3.371e-01, -2.658e-01, -1.940e-01, 4.897e-02, -2.548e-01, -3.492e-01, 1.394e-01, 5.962e-03, -3.659e-01, -2.941e-01, 1.047e-02, -2.526e-03), r4);\n\tr5 = MulAdd(s1_0_1, M4(-2.897e-02, -1.181e-01, -7.194e-03, -2.666e-03, 2.517e-02, -2.789e-02, 3.851e-02, 1.779e-02, 1.437e-02, -9.333e-02, -6.103e-02, 1.874e-02, 1.726e-02, -9.379e-02, -1.613e-02, 1.258e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(2.473e-02, -3.557e-03, 4.068e-02, -3.271e-02, 4.553e-02, -1.293e-02, 2.489e-02, 2.725e-02, -3.749e-02, 4.285e-02, -5.383e-02, -1.199e-01, -1.102e-02, -4.662e-03, 7.581e-02, 9.966e-03), r6);\n\tr7 = MulAdd(s1_0_1, M4(-9.646e-04, 3.686e-03, -4.965e-03, -2.680e-03, 2.910e-02, -2.553e-02, -5.995e-02, 1.780e-03, -5.712e-02, 8.356e-02, -1.664e-02, -4.655e-03, -1.512e-02, 6.424e-02, 6.697e-03, 1.091e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(2.224e-01, -1.812e-02, -5.233e-02, 1.147e-02, -1.213e-01, -2.153e-02, 6.132e-02, -2.025e-02, -6.764e-02, 4.739e-02, -2.549e-01, -1.512e-02, 1.192e-01, -7.723e-03, -4.257e-02, -1.496e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(2.064e-02, -6.628e-03, -2.157e-02, 5.091e-02, 1.673e-02, -2.910e-03, 4.916e-02, 2.906e-01, 3.210e-02, 4.361e-03, -6.958e-02, -3.384e-01, -2.357e-02, -1.356e-03, -3.389e-03, 5.012e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.171e-01, -9.191e-03, 6.640e-02, -1.928e+00, 3.405e-01, -1.414e-01, -1.518e-01, -2.310e-01, -1.646e-01, -5.995e-02, -3.184e-01, -1.620e-01, -4.167e-02, 1.419e-02, 2.192e-01, 8.086e-01), r2);\n\tr3 = MulAdd(s1_0_2, M4(2.040e-03, -1.236e-02, -1.481e-02, 1.133e-02, 1.985e-02, 1.332e-02, 1.224e-02, 3.803e-04, -4.302e-02, -2.460e-02, -2.654e-02, 1.913e-03, -4.252e-02, -1.254e-02, -1.545e-02, -7.709e-03), r3);\n\tr4 = MulAdd(s1_0_2, M4(-3.544e-01, -6.361e-01, -1.132e-01, 1.994e-02, 3.018e-01, -2.524e+00, -1.116e-01, -3.961e-02, -1.036e-01, -4.720e+00, 1.598e-01, 1.817e-02, 5.721e-02, -8.754e-01, 2.126e-03, 5.143e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(3.201e-03, -4.010e-02, -2.240e-02, -5.328e-03, 7.886e-03, -2.928e-02, -2.104e-02, -1.615e-02, 2.324e-02, 1.482e-01, -4.385e-02, -9.107e-03, -7.287e-03, 2.420e-02, 1.064e-02, -6.373e-04), r5);\n\tr6 = MulAdd(s1_0_2, M4(-1.593e-02, 4.213e-03, -1.005e-02, -4.237e-02, 1.183e-02, -1.259e-02, -1.827e-02, 5.496e-03, -2.623e-02, 9.194e-05, -5.795e-02, -1.616e-02, -7.694e-03, -6.706e-03, 5.579e-02, 2.675e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(1.459e-02, 1.569e-02, 1.714e-02, 2.149e-03, 2.301e-02, 5.037e-02, 1.200e-02, -1.622e-03, -3.734e-02, -2.545e-02, 2.401e-04, 7.980e-04, -4.887e-03, 1.454e-02, 1.862e-02, 3.543e-03), r7);\n\tr0 = MulAdd(s1_1_0, M4(1.188e-01, -1.130e-03, -8.145e-02, -3.570e-03, -3.642e-01, -1.382e-02, 2.154e-01, -1.096e-02, -4.014e-02, -1.912e-03, -4.712e-01, -4.259e-03, 3.564e-01, 2.898e-03, 1.409e-02, 2.479e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-5.616e-04, 1.916e-02, 7.603e-02, -4.391e-02, 3.784e-01, -1.510e-02, 2.744e-02, 3.972e-02, -2.611e-01, 2.267e-02, 4.884e-02, -1.146e-01, 1.111e-01, -2.769e-02, -4.251e-02, -7.213e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.104e-02, 2.160e-01, 7.532e-02, 5.148e-02, 3.692e-01, 1.045e-01, -9.605e-02, 2.802e-02, 5.501e-02, 7.883e-02, -1.846e-02, -2.182e-02, -1.440e-02, -8.429e-02, 5.309e-02, 8.747e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(8.913e-03, 1.546e-02, 1.959e-02, 1.418e-02, 7.251e-02, 4.456e-02, 4.206e-02, 6.756e-02, -1.581e-02, -4.699e-03, -4.219e-03, 4.892e-02, -3.876e-02, -1.115e-02, -1.205e-02, 3.822e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(2.789e-01, 1.855e-02, 8.504e-03, 1.252e-01, -3.192e-01, 2.711e-02, -4.502e-02, 2.239e-01, -3.762e-01, -3.918e-02, 3.377e-02, -1.081e-01, -6.272e-02, 7.916e-02, 1.091e-01, 1.118e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(-4.318e-02, 3.025e-02, -5.883e-03, 1.624e-02, 5.369e-02, 5.930e-02, -2.221e-02, -1.621e-02, -4.483e-02, -2.075e-02, 2.911e-02, 2.192e-02, 2.795e-02, -3.076e-01, 4.689e-02, -1.911e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(1.693e-02, 2.744e-02, 3.333e-02, -3.606e-02, 4.471e-02, 8.719e-05, -2.949e-02, 6.725e-02, -3.038e-03, 7.495e-02, 5.464e-02, -4.920e-02, -1.389e-02, -5.042e-02, -3.424e-03, 1.249e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(2.107e-02, 2.446e-02, 1.692e-02, 4.244e-03, 6.772e-03, -3.984e-02, -3.252e-02, -3.878e-02, -2.126e-02, 7.996e-02, 1.406e-02, 8.761e-03, -3.927e-02, 1.607e-02, -1.013e-02, 1.764e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-2.493e-01, 2.657e-02, 1.396e-01, -1.160e-02, 6.354e-01, -4.475e-03, 2.163e-01, 4.920e-02, -3.016e-01, 9.009e-02, -5.954e-01, -2.526e-02, 3.808e-01, -3.334e-02, -1.855e-01, 3.202e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(3.497e-02, 2.579e-02, 2.725e-01, 4.649e-02, -1.968e-01, 1.227e-01, 1.580e-01, -1.424e-01, -1.645e-01, -2.007e-01, -3.398e-01, -2.050e-01, 2.034e-01, 1.241e-01, 5.991e-02, 3.470e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.868e-02, 5.695e-01, 9.543e-03, -3.526e-01, -7.598e-01, 1.371e-01, 2.083e-01, 1.727e-01, -5.432e-01, -7.052e-01, -1.842e-01, -3.095e-01, 3.519e-01, -9.910e-02, -1.161e-01, 3.974e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-1.592e-02, -3.650e-02, -4.315e-02, 1.948e-01, -1.430e-01, 1.482e-02, 1.923e-02, -1.364e-02, -7.624e-02, -7.874e-03, -7.710e-03, -6.442e-04, 7.987e-03, 5.652e-02, 5.823e-02, 1.645e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(2.567e-01, -1.751e-01, -1.837e-01, 1.512e-02, -8.065e-01, 1.091e-01, 1.146e-01, 1.951e-01, -2.217e+00, -2.109e-01, -3.364e-01, -1.060e-01, 4.874e-01, 2.868e-01, -1.354e-01, 1.160e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(1.812e-01, -1.117e-01, 4.969e-02, 5.459e-02, -2.850e-02, -8.536e-02, -2.115e-01, 1.005e-01, -1.419e-01, 6.794e-02, 1.564e-01, -2.054e-01, 3.634e-02, -3.005e-03, 6.338e-02, 1.282e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(-3.943e-02, -1.172e-01, -1.451e-01, 4.496e-02, 1.788e-02, 1.169e-01, 4.556e-02, 9.248e-02, -8.441e-03, -9.227e-02, -1.839e-01, -2.927e-02, 5.457e-02, 1.274e-01, 2.963e-01, 3.629e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(-4.825e-02, -1.711e-02, -6.405e-02, 3.056e-02, 6.962e-02, 2.002e-01, 1.465e-01, 1.155e-01, -1.646e-01, -2.564e-01, -1.597e-01, -1.445e-01, -1.589e-02, 2.762e-01, 2.547e-01, 6.765e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(2.169e-01, -1.265e-01, 2.630e-02, 1.781e-02, -7.173e-02, 8.911e-02, -9.150e-02, 9.734e-03, -2.778e-01, -6.821e-02, 7.544e-03, 1.354e-02, -2.207e-03, 1.476e-01, 3.975e-01, -2.269e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(-6.421e-02, 3.120e-02, -5.156e-02, 1.676e-01, -6.146e-02, -1.972e-02, -2.956e-02, -1.072e-01, -7.503e-02, -1.893e-02, -1.087e-01, -8.183e-02, 5.511e-02, 1.630e-03, 1.664e-01, -8.886e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-1.342e-03, 1.705e-01, 1.052e-02, 6.110e-01, 7.052e-01, 2.420e-01, -6.778e-02, 3.208e-01, -4.803e-02, -9.721e-01, -1.764e-01, -1.929e-01, 1.675e-01, -1.513e-01, 3.376e-01, 6.755e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.508e-01, -4.253e-02, -4.223e-02, -3.532e-02, 1.367e-02, 1.641e-02, 1.425e-02, 7.194e-04, -1.733e-02, 9.504e-05, -3.450e-05, -1.783e-02, 5.335e-03, 9.922e-03, 1.156e-02, 6.496e-03), r3);\n\tr4 = MulAdd(s1_1_2, M4(4.145e-01, 9.135e-02, -2.151e-02, -2.627e-02, 8.441e-02, 5.020e-01, -1.751e-01, -6.997e-02, -7.607e-02, -3.617e-01, -1.560e-01, 4.759e-02, -1.018e-01, 1.800e-01, -4.452e-02, 3.438e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(-3.381e-02, -6.244e-02, -1.233e-02, 1.422e-02, 8.228e-02, 1.003e-02, -4.386e-02, -2.017e-02, -3.983e-03, 7.113e-02, 2.421e-02, -1.197e-02, 1.269e-02, -5.808e-03, -3.023e-02, -2.634e-03), r5);\n\tr6 = MulAdd(s1_1_2, M4(-4.187e-02, -1.879e-03, 1.539e-01, -9.463e-02, 1.410e-02, -7.766e-03, -2.336e-03, 2.889e-02, -5.667e-04, -1.539e-02, -3.205e-02, -3.873e-02, 1.420e-02, -3.244e-03, -3.744e-02, 2.879e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(1.766e-01, 4.224e-02, 8.713e-02, -1.275e-02, 6.232e-02, -6.341e-04, -7.905e-02, 3.231e-02, -9.744e-02, -1.388e-02, -4.783e-02, -6.008e-02, 1.413e-01, 2.678e-02, -6.864e-02, 1.003e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(3.905e-02, 1.597e-03, 9.099e-02, 1.833e-03, -1.920e-01, -1.764e-03, 3.402e-02, 4.058e-03, 5.567e-02, 1.514e-02, -3.409e-02, -2.692e-04, 4.215e-02, -6.107e-03, 5.599e-02, 6.647e-04), r0);\n\tr1 = MulAdd(s1_2_0, M4(-4.367e-01, -5.516e-05, -2.710e-02, 1.057e-01, -3.615e+00, -7.300e-03, 5.208e-02, 7.884e-02, -2.229e+00, -4.302e-03, -8.589e-02, -1.913e-02, -1.662e+00, 1.549e-02, -2.413e-02, -2.454e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(4.446e-02, -2.944e-02, 4.497e-02, 3.820e-02, 5.507e-02, -5.988e-03, -6.682e-02, -2.364e-02, 6.971e-02, -8.149e-03, 6.003e-02, 3.817e-03, -2.562e-02, 2.914e-02, 4.444e-03, 2.940e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(1.144e-02, 3.352e-03, 2.933e-03, 1.963e-02, -2.657e-02, -3.405e-03, -3.315e-03, 2.339e-02, -5.165e-03, -1.724e-03, -4.052e-04, 6.705e-03, -1.677e-02, -4.859e-03, -7.255e-03, 2.125e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-1.818e-01, 1.566e-02, -8.019e-02, 1.833e-01, 2.527e-01, -1.297e-02, -4.493e-02, -7.987e-03, 8.133e-02, 8.947e-03, -1.175e-02, -1.888e-01, -2.385e-02, 1.310e-02, 1.793e-02, 3.389e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(6.800e-03, 3.221e-02, -3.249e-02, 1.535e-03, -3.261e-02, -1.029e-02, 3.548e-03, -1.198e-03, 1.402e-02, -1.399e-02, 4.715e-03, -1.329e-03, 2.933e-04, 5.935e-03, 3.034e-02, 1.911e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(2.877e-03, 1.541e-02, 2.020e-02, 7.408e-03, -3.545e-03, 4.140e-02, 1.877e-03, 4.224e-02, 1.081e-04, -1.552e-02, -5.691e-03, 1.046e-02, -7.940e-03, 1.022e-02, -4.741e-03, 3.455e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(2.889e-02, 2.858e-02, 1.580e-02, 2.045e-02, -1.702e-02, 3.333e-02, 2.253e-02, 2.615e-02, -1.017e-02, 2.375e-02, -1.379e-02, 1.484e-02, -1.316e-02, -1.338e-02, 3.450e-02, 1.721e-03), r7);\n\tr0 = MulAdd(s1_2_1, M4(-2.584e-01, 1.865e-02, -2.099e-01, -3.907e-03, 2.721e-01, 5.097e-02, -2.051e-01, 6.273e-03, -5.582e-02, -2.979e-03, -9.216e-02, -1.337e-03, -8.577e-03, -9.563e-04, -1.571e-02, 1.939e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(-9.202e-02, -1.871e-02, 5.126e-02, 1.658e-01, -9.265e-02, 5.554e-02, 1.052e-01, 1.086e-01, -1.975e-01, -2.787e-02, 2.376e-02, 8.226e-02, 6.273e-01, 4.919e-02, 1.064e-01, -5.144e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.267e-01, 3.067e-02, -1.682e-02, -2.140e-02, -8.921e-02, -1.494e-02, 2.046e-01, -7.234e-02, -2.086e-01, -7.975e-02, -1.384e-01, -4.426e-02, 1.862e-01, 3.648e-02, -1.128e-01, 1.274e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(2.466e-03, 6.115e-03, 5.196e-03, -9.675e-03, 3.942e-02, -3.374e-03, -2.166e-03, -2.560e-03, -1.820e-03, 8.061e-04, 6.423e-04, -1.956e-03, -1.663e-02, -1.111e-02, -1.535e-02, 7.935e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(7.936e-02, 3.044e-03, 5.066e-02, 6.156e-02, 6.308e-02, -4.358e-02, -8.133e-02, 7.656e-02, 1.874e-01, -6.780e-02, 1.549e-02, -4.759e-02, -3.804e-01, 8.988e-02, -8.717e-02, 1.779e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(-6.827e-02, -9.155e-04, 3.515e-02, -2.222e-02, -2.961e-02, -1.883e-02, -3.242e-04, 7.105e-02, -7.837e-02, -3.578e-02, -6.172e-02, -2.371e-02, 5.834e-02, 2.087e-02, 2.457e-02, 1.741e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(1.004e-02, 2.765e-02, 1.586e-02, 2.312e-02, -4.505e-03, 4.944e-02, 3.728e-02, 1.995e-02, 3.678e-04, -3.364e-02, 1.413e-02, 4.446e-02, -1.751e-02, -1.155e-02, 3.068e-02, 1.727e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-1.062e-02, -2.562e-02, 2.171e-02, -1.067e-01, 4.433e-02, 1.576e-02, 6.186e-03, 6.373e-02, -2.473e-02, -2.812e-02, 2.443e-02, -4.211e-02, -5.487e-03, 8.034e-02, 9.495e-03, 1.821e-01), r7);\n\tr0 = MulAdd(s1_2_2, M4(3.775e-01, 2.974e-02, 1.252e-01, -7.998e-04, 2.107e-01, 5.013e-02, -1.144e-01, 1.076e-02, -9.496e-02, -3.272e-02, -3.038e-01, 4.520e-03, 1.008e-01, -1.668e-02, -2.204e-01, 1.603e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(-2.666e-01, 2.606e-02, -4.824e-02, -3.475e-02, 2.052e-01, 2.484e-02, -7.456e-02, 4.112e-03, 4.553e-02, 1.174e-02, 3.304e-02, -6.837e-02, 4.551e-02, -7.294e-03, 1.632e-02, 6.852e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-6.347e-02, 7.684e-02, 3.869e-02, -1.775e-02, 2.174e-01, 1.361e-01, 6.222e-02, -4.461e-02, 7.447e-02, 3.791e-03, -7.050e-02, -1.675e-02, 1.062e-01, -2.177e-02, 1.460e-01, 4.073e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(3.530e-02, 1.401e-02, 1.394e-02, 1.070e-02, -2.169e-02, -1.137e-03, -2.867e-03, 5.737e-03, 8.551e-04, -1.878e-03, -1.023e-03, 2.169e-05, 2.655e-03, -8.439e-03, -7.907e-03, -1.294e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-5.067e-02, -5.075e-02, -1.054e-01, 1.226e-01, -1.554e-01, -4.581e-02, 2.878e-02, -4.584e-02, 7.116e-03, -1.018e-02, 4.278e-02, 4.774e-02, 2.516e-01, 1.529e-02, -5.328e-02, -5.119e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-3.648e-03, -1.612e-01, -4.230e-02, 8.681e-03, 1.489e-02, -5.523e-02, -4.429e-02, 3.326e-02, 2.152e-02, -7.593e-02, -3.193e-02, 1.424e-02, 1.210e-02, 4.153e-02, 4.595e-03, -4.116e-03), r5);\n\tr6 = MulAdd(s1_2_2, M4(1.472e-02, -8.425e-03, 8.565e-03, -9.444e-02, -1.757e-03, 7.337e-03, -6.767e-03, -4.818e-02, -3.004e-03, 1.277e-02, 8.132e-03, 9.043e-03, -7.760e-03, 5.547e-03, 4.282e-02, 3.357e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-1.163e-02, 2.106e-02, 9.651e-02, 7.397e-02, -3.025e-02, 3.009e-02, -4.051e-03, 2.181e-02, 4.637e-03, -2.091e-03, -3.236e-03, -2.397e-02, -6.361e-03, 2.959e-02, -4.002e-02, -3.062e-02), r7);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(2.024e-01, 6.749e-04, -6.758e-02, 6.753e-02, -7.677e-02, -7.340e-03, 8.916e-02, 3.890e-02, 1.047e-01, -5.817e-03, -1.141e-01, 1.033e-01, -5.262e-02, 8.816e-03, 4.711e-02, -8.066e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-2.585e-01, 1.070e-03, -1.485e-02, 2.665e-02, 4.090e-01, -3.451e-03, -5.786e-02, 1.482e-01, -1.071e-01, -7.489e-02, 1.366e-02, 1.120e-02, 9.379e-02, 6.489e-04, -1.846e-02, 1.811e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.327e-01, -2.676e-02, 4.251e-02, 3.196e-02, 3.466e-01, 2.869e-01, -2.476e-02, -1.499e-02, -1.724e-01, 8.307e-02, 3.168e-02, 9.047e-02, 1.946e-02, 6.715e-02, 2.193e-02, -1.675e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(3.332e-02, 9.674e-03, 8.509e-03, -1.217e-02, 4.789e-02, 4.495e-03, 1.107e-02, 1.288e-03, -1.393e-02, -5.886e-03, -2.284e-02, 7.196e-03, 1.725e-02, -1.536e-02, -1.824e-02, -2.145e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(3.606e-01, 5.598e-02, -3.529e-02, 1.156e-02, 2.888e-01, -7.944e-02, 1.849e-01, 4.023e-03, 1.763e-01, 5.180e-02, 8.602e-02, -3.162e-02, -1.824e-01, -1.790e-01, -4.410e-01, -1.770e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(2.993e-02, -2.582e-02, 2.527e-03, 5.620e-04, 2.292e-02, -1.922e-01, 1.918e-03, -6.879e-03, -4.795e-03, 2.448e-02, -5.955e-03, -2.400e-02, 2.078e-02, -1.441e-01, 8.535e-03, -5.718e-03), r5);\n\tr6 = MulAdd(s0_0_0, M4(9.346e-03, -4.354e-03, 2.544e-02, -7.834e-03, 4.219e-03, 8.982e-03, -7.614e-03, -1.390e-02, -2.458e-02, 1.037e-01, -3.375e-04, -3.487e-02, -1.534e-02, -8.861e-03, 1.265e-02, -1.334e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(1.062e-02, 1.493e-02, -9.016e-03, 1.258e-02, 4.793e-03, 2.791e-02, -7.010e-02, 1.699e-02, -3.586e-03, 7.336e-03, -3.824e-04, -2.735e-05, -4.635e-03, 1.211e-02, 2.719e-02, -9.983e-04), r7);\n\tr0 = MulAdd(s0_0_1, M4(-4.223e-01, -1.198e-02, -3.260e-02, 3.226e-02, 3.302e-01, 1.855e-02, 2.129e-01, -6.623e-02, -2.053e-01, -2.114e-01, -1.062e-01, -3.464e-01, -4.874e-02, -1.338e-02, -3.216e-02, -1.483e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-3.212e-01, 5.244e-03, -1.881e-02, -2.106e-02, 4.330e-02, 3.045e-02, 2.165e-01, 3.254e-01, 3.868e-02, 1.009e-01, -5.016e-04, -8.582e-02, -3.578e-04, -3.223e-03, 4.653e-02, 1.506e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-2.204e-01, -2.029e-01, 3.192e-02, 1.937e-01, -3.685e-01, 3.336e-01, -4.067e-02, 5.254e-01, -1.233e-01, -4.208e-02, -9.546e-02, 7.129e-02, -5.850e-02, -4.537e-03, -1.479e-01, 2.324e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-1.661e-02, 1.072e-02, 1.556e-02, -8.635e-03, 4.838e-01, 1.685e-01, 1.785e-01, -1.035e-02, 1.267e-03, -1.358e-02, -1.251e-02, -4.936e-03, 6.582e-02, 3.046e-02, 4.333e-02, 1.538e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-8.323e-02, 1.593e-01, 2.040e-01, -4.864e-02, -3.788e-01, 9.074e-01, -3.217e-01, -3.540e-03, -3.005e-01, 1.477e-01, 8.665e-02, 3.287e-02, 3.356e-02, 4.531e-03, -3.330e-01, 4.305e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-1.384e-01, -2.077e-01, 3.012e-02, -1.118e-02, -9.276e-02, 3.523e-01, 1.074e-01, 5.652e-03, -4.460e-02, 1.878e-01, 1.570e-02, -2.192e-01, 9.704e-03, -3.134e-01, -8.559e-03, -1.546e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(1.213e-02, 3.860e-03, -3.193e-02, 8.173e-02, 1.629e-01, 2.823e-02, -3.980e-03, -1.516e-02, 1.013e-02, -1.551e-01, -1.639e-02, -3.083e-02, 2.789e-02, -1.037e-02, 4.582e-02, -4.048e-03), r6);\n\tr7 = MulAdd(s0_0_1, M4(2.660e-02, -3.844e-02, -3.093e-02, -2.712e-04, 7.428e-02, -2.488e-02, -3.481e-02, -1.088e-02, 3.083e-03, -1.939e-03, -7.959e-03, -8.533e-04, 3.767e-02, 9.219e-03, -2.598e-02, 5.282e-03), r7);\n\tr0 = MulAdd(s0_0_2, M4(2.359e-01, -6.960e-03, 4.264e-01, 5.451e-02, 3.501e-01, 2.725e-02, -1.419e-02, -8.424e-02, -1.300e-01, 1.538e-01, -2.102e-01, 2.568e-01, 6.823e-03, -2.091e-02, 4.102e-02, -1.567e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-5.382e-02, 4.720e-03, -1.908e-02, -1.190e-01, 5.511e-03, 1.160e-02, -3.565e-02, 2.041e-01, 7.541e-02, -7.036e-02, 3.928e-02, -4.266e-02, 2.952e-02, 2.966e-03, 4.400e-02, 4.654e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-2.922e-01, -1.607e-01, 3.773e-01, 4.756e-01, 1.084e-01, 4.280e-01, 3.930e-01, -9.541e-01, -8.204e-02, 5.585e-02, -3.771e-02, -1.105e+00, 1.075e-01, -3.583e-02, -5.896e-02, -2.903e+00), r2);\n\tr3 = MulAdd(s0_0_2, M4(2.407e-02, 4.236e-02, 4.514e-02, 2.318e-02, -2.071e-02, -2.789e-02, -2.422e-02, -5.828e-03, -2.339e-02, -8.558e-04, -8.859e-03, 1.498e-04, -1.572e-03, -1.216e-03, 1.984e-04, 4.601e-04), r3);\n\tr4 = MulAdd(s0_0_2, M4(-2.305e-01, -4.338e-01, 9.640e-02, 3.023e-02, 6.610e-02, -1.430e-01, -3.740e-02, 2.438e-02, -6.446e-01, -2.282e+00, 1.392e-01, 6.665e-02, 3.314e-01, -2.862e+00, -1.378e-01, -1.973e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(2.102e-02, -2.008e-01, 2.107e-02, 5.404e-03, -7.295e-03, -1.006e-01, 5.836e-02, 1.711e-02, -4.053e-02, -3.197e-02, 1.064e-02, 1.984e-01, 8.981e-03, -3.350e-01, -8.960e-04, 3.914e-03), r5);\n\tr6 = MulAdd(s0_0_2, M4(3.822e-02, 1.020e-02, 1.892e-02, 9.689e-02, -2.682e-02, 2.814e-03, -3.255e-03, 1.276e-02, 4.899e-03, 1.231e-02, -5.625e-03, 4.997e-03, -2.624e-03, -9.691e-03, 4.553e-03, -3.808e-03), r6);\n\tr7 = MulAdd(s0_0_2, M4(-1.182e-02, 8.011e-03, -4.437e-02, 4.261e-03, 9.480e-05, 2.439e-02, -4.410e-02, 1.042e-02, -1.401e-02, -8.798e-03, 9.621e-03, 2.185e-03, 9.615e-03, 1.717e-02, 7.756e-03, 1.605e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(1.218e-01, 2.177e-03, 1.637e-01, -5.554e-03, 3.474e-01, -1.081e-02, 2.114e-01, -1.183e-02, 4.861e-02, 3.478e-02, -2.252e-01, -5.775e-02, 8.232e-02, -4.645e-03, 2.394e-02, -1.570e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(5.107e-01, 8.440e-02, -6.595e-02, -8.964e-04, 4.218e-01, 6.261e-02, 4.012e-02, 5.224e-02, 1.845e-01, -1.169e-01, 9.049e-03, 3.784e-02, -4.114e-01, -9.937e-02, -1.141e-01, 2.607e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.548e-01, 2.615e-01, 5.575e-02, 1.111e-01, 1.697e-01, 2.247e-02, 4.891e-03, -1.040e-01, -2.441e-01, -6.804e-02, 7.536e-02, 1.135e-01, -2.610e-03, -2.096e-01, 5.958e-02, -1.294e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(5.898e-03, -1.200e-03, -3.803e-03, 3.309e-02, -5.530e-02, -1.191e-02, -1.358e-02, 3.122e-02, 1.955e-02, -1.524e-02, 3.430e-02, 3.392e-02, -2.566e-02, -1.126e-02, -3.093e-03, -7.688e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-1.327e-01, 1.486e-01, -6.271e-03, -6.264e-02, 9.886e-01, -1.476e-01, 8.689e-02, 3.154e-01, 6.103e-02, 7.400e-02, 1.035e-01, -3.495e-02, -4.498e-01, -8.701e-02, -2.197e-01, -1.644e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(7.274e-02, -7.319e-02, -7.565e-03, 7.029e-02, -4.781e-02, 8.702e-02, -7.291e-03, 2.833e-02, -3.635e-02, 8.109e-02, -1.581e-02, 1.851e-02, -3.895e-02, -1.849e-01, 1.100e-02, -9.713e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-4.457e-03, 1.843e-02, 3.343e-02, 5.584e-02, -1.184e-02, 1.211e-02, -3.088e-02, -4.279e-02, 3.103e-02, -2.222e-01, -4.613e-04, -1.772e-02, -4.797e-03, -1.519e-01, -3.184e-02, -3.571e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(-4.816e-03, 1.823e-02, 3.880e-02, 2.127e-02, 5.102e-02, 6.033e-03, 2.174e-02, -1.023e-02, 8.544e-03, 2.289e-02, 1.551e-02, 2.020e-03, -2.813e-02, -1.124e-02, -7.842e-02, -2.182e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(1.506e-02, 2.701e-03, 9.136e-03, 4.414e-02, -6.128e-02, 1.447e-02, 1.672e-01, 7.608e-03, -2.892e-01, 1.803e-01, -2.911e-01, 2.488e-01, -4.698e-01, -1.294e-01, -1.980e-01, -7.805e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(2.742e-01, 3.451e-02, -4.558e-02, 2.319e-01, 2.115e-01, -8.716e-02, 3.311e-01, 4.573e-01, -7.672e-03, 1.584e-01, 4.216e-03, -1.919e-01, 9.002e-02, -2.410e-01, -6.046e-02, -3.333e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.457e-01, 1.486e-01, 3.719e-02, 3.355e-01, -2.551e-01, 5.999e-02, -5.231e-02, -4.190e-01, -2.497e-01, -2.442e-01, -6.832e-02, -6.629e-02, -2.546e-01, -4.963e-01, -3.126e-01, -1.623e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-2.209e-01, 7.779e-04, -5.741e-03, 3.889e-02, 7.586e-02, -1.110e-02, 1.685e-03, -4.287e-02, 3.297e-02, 4.938e-02, 4.088e-02, 8.708e-04, -1.872e-01, -4.993e-02, -5.579e-02, -8.425e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(5.016e-01, 2.444e-01, 9.827e-02, -3.217e-01, 4.657e-01, -3.594e-01, 1.824e-01, -2.795e-02, -2.967e-01, 1.800e-02, -1.013e-01, -1.478e-02, -7.771e-01, -2.094e-01, -2.564e-02, -5.332e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(1.278e-01, -2.407e-01, -1.469e-01, 2.678e-02, -2.973e-02, 1.475e-01, -5.900e-02, -6.257e-02, -6.690e-02, 1.650e-01, -6.367e-02, 3.116e-01, -6.667e-02, -4.830e-01, 1.867e-03, -1.653e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-6.556e-03, 3.432e-01, 4.628e-02, 8.800e-02, -6.770e-03, -1.165e-01, 8.611e-02, 2.753e-01, -1.039e-02, 2.549e-01, -1.353e-02, -4.389e-02, -6.055e-02, -1.886e-01, -1.882e-01, -1.811e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(2.189e-02, 2.052e-02, 3.313e-01, -1.053e-02, -4.247e-02, 5.581e-02, -3.643e-01, 5.176e-01, 1.475e-02, 2.672e-02, 3.883e-02, 5.607e-03, 3.209e-02, -3.413e-01, -2.656e-01, 2.470e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-4.354e-01, 3.408e-01, -2.078e-01, 5.934e-03, -1.120e-01, -9.774e-02, -4.681e-02, -1.037e-02, -5.158e-02, -1.182e-02, -1.951e-01, -1.704e-01, -4.350e-02, -1.753e-01, -4.076e-02, -2.270e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(4.922e-02, 4.767e-02, 1.695e-03, 2.504e-01, -7.000e-02, -1.004e-01, -7.476e-02, 1.826e-01, 2.893e-02, 4.822e-02, 6.952e-02, -5.221e-02, -1.992e-03, -8.797e-03, 1.977e-02, -1.062e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-3.343e-01, -1.149e-01, -5.947e-01, -1.976e-01, 3.843e-01, 9.745e-03, 4.627e-01, -5.391e-01, -1.340e-01, 3.932e-02, -1.280e-01, -8.342e-02, 1.220e-01, 3.845e-02, -4.621e-01, -3.585e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(2.264e-02, 1.042e-02, 2.471e-03, 1.336e-02, -2.141e-02, 4.107e-03, 2.788e-03, -8.544e-03, -1.341e-02, -1.540e-02, -1.250e-02, 1.059e-04, 1.128e-02, -2.396e-03, -1.243e-03, 6.840e-03), r3);\n\tr4 = MulAdd(s0_1_2, M4(6.578e-02, 9.105e-01, 8.956e-02, -9.891e-02, 6.041e-01, -5.433e-01, 9.412e-02, -3.988e-02, -1.769e-01, -1.803e-01, 5.752e-02, -3.828e-04, -5.619e-01, -3.565e-01, -1.021e-01, -2.421e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-5.140e-02, -9.014e-02, -1.333e-01, 4.547e-02, -8.600e-03, 1.448e-01, -3.479e-02, -7.844e-02, -2.892e-02, 1.102e-01, -1.641e-02, -1.647e-01, -1.717e-02, -2.774e-01, -6.515e-02, -2.850e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(1.005e-02, 1.236e-02, -8.145e-02, -3.224e-02, 5.358e-03, 3.400e-03, -6.480e-02, -1.367e-02, -4.027e-03, 1.207e-01, 9.860e-03, 1.787e-02, -3.394e-03, -5.910e-03, 6.873e-04, 2.112e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-1.276e-02, 2.044e-05, 2.281e-01, 4.682e-02, 8.985e-02, -2.401e-02, -6.915e-02, 3.493e-02, 1.590e-02, 5.008e-04, -1.338e-02, -2.021e-03, 8.127e-02, 9.669e-03, 1.355e-02, -3.147e-03), r7);\n\tr0 = MulAdd(s0_2_0, M4(1.207e-01, -3.276e-03, -4.601e-02, 1.271e-03, 4.028e-02, 6.246e-03, -1.675e-01, -8.160e-05, 1.802e-01, -4.127e-02, -8.737e-02, -3.531e-02, 1.055e-02, 7.381e-04, -3.349e-02, -1.483e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.847e+00, -1.019e-02, -4.533e-02, 1.385e-01, -4.592e-01, -2.009e-02, 1.143e-01, -5.948e-02, -1.487e+00, 1.179e-01, 4.841e-03, 7.191e-02, -8.113e-01, -2.889e-02, -2.697e-02, -1.098e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.509e-01, -5.396e-02, 2.711e-02, -3.753e-02, -2.980e-02, 1.074e-01, -5.741e-03, -2.244e-02, -1.473e-01, 2.259e-02, 9.746e-02, 3.807e-02, -5.963e-02, -4.986e-02, 1.740e-02, 4.641e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(1.166e-02, 2.244e-03, 1.410e-03, -3.904e-03, -1.528e-02, -3.835e-03, -4.156e-03, 2.780e-03, 2.150e-03, 4.904e-03, -7.562e-03, -1.027e-02, 7.671e-03, 1.581e-02, 1.494e-02, -1.564e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(6.729e-02, -4.618e-02, -3.184e-02, -1.242e-01, -6.361e-02, -2.530e-02, 3.463e-02, -3.333e-02, 2.828e-01, -3.968e-03, 1.673e-01, 3.283e-02, 5.796e-02, 4.580e-02, -9.072e-02, 4.805e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(2.938e-02, -6.171e-02, -1.721e-02, -7.655e-03, 9.054e-03, 1.720e-01, 3.500e-02, -2.213e-02, -2.737e-02, 3.326e-02, -1.757e-02, -1.130e-01, -1.425e-02, -2.063e-01, -1.474e-02, -1.164e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(1.798e-03, 6.858e-03, 2.550e-03, 5.281e-02, -3.461e-03, -3.304e-02, -2.172e-02, 3.389e-04, -6.902e-03, 4.696e-02, -5.883e-03, -1.182e-02, 1.455e-02, -1.284e-02, 6.731e-03, 2.253e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-5.049e-04, 1.433e-02, 9.733e-03, -4.093e-03, -1.177e-02, -4.045e-02, 2.667e-02, -1.708e-02, 1.193e-02, 1.605e-02, -7.425e-03, 3.185e-02, -1.802e-02, -1.233e-02, 3.599e-02, -1.442e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(9.345e-02, -8.176e-04, 1.259e-01, 4.092e-03, -1.577e-03, -2.275e-02, 1.128e-01, 3.428e-04, -1.730e-02, -2.155e-02, -3.559e-02, 1.086e-02, -1.659e-01, -1.483e-02, -2.719e-02, 2.937e-04), r0);\n\tr1 = MulAdd(s0_2_1, M4(-3.542e-01, 5.237e-02, 7.204e-02, 3.780e-02, 2.372e-01, 1.096e-02, -1.186e-01, -6.798e-02, 1.934e-01, -2.212e-01, -2.145e-02, -4.971e-02, -6.314e-01, -8.813e-02, -2.075e-01, 5.113e-04), r1);\n\tr2 = MulAdd(s0_2_1, M4(-2.908e-01, -1.193e-01, 2.509e-02, -1.972e-02, 2.736e-01, 1.514e-01, 5.173e-02, -3.746e-02, -9.001e-02, -1.310e-01, 2.701e-02, 2.133e-02, 1.087e-01, -2.733e-01, -6.352e-02, -4.699e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(6.896e-02, -4.178e-03, -3.021e-03, -2.152e-02, -2.403e-02, -7.339e-04, -4.053e-03, 2.287e-02, -2.279e-03, -1.125e-02, -8.132e-03, -1.224e-02, 5.184e-04, 1.206e-02, 1.316e-02, -2.557e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-3.671e-02, -1.725e-01, -4.574e-02, 2.802e-01, 6.808e-02, 3.731e-02, 2.421e-04, -3.640e-02, 7.743e-02, 4.863e-02, 9.308e-02, 7.613e-02, -9.143e-02, -4.606e-02, -1.818e-01, -2.098e-01), r4);\n\tr5 = MulAdd(s0_2_1, M4(-8.015e-02, 5.742e-02, 5.264e-02, 4.146e-02, 6.956e-02, -2.243e-02, -8.098e-02, 2.430e-03, -5.128e-02, 2.436e-02, -4.123e-02, -8.814e-02, -2.512e-02, -1.215e-01, -1.637e-01, -7.995e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-4.013e-03, 6.250e-03, 2.416e-02, 7.925e-02, -2.667e-03, 6.412e-03, -2.316e-02, -8.726e-02, -1.459e-04, 1.626e-03, -1.309e-02, 1.185e-02, 1.160e-02, -9.130e-02, -3.854e-02, -7.961e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(3.308e-02, -2.806e-02, -5.089e-02, 8.893e-03, -1.036e-02, 6.576e-02, 9.889e-02, 6.056e-02, 1.583e-02, -1.279e-02, -3.490e-02, 1.186e-02, 2.980e-02, -4.651e-02, -7.846e-02, -2.562e-03), r7);\n\tr0 = MulAdd(s0_2_2, M4(-3.158e-01, -2.087e-02, -1.069e-01, -3.998e-03, 1.299e-01, 1.799e-02, 3.917e-01, 1.199e-03, 5.921e-02, -2.041e-02, -1.683e-01, -4.386e-02, 4.302e-02, -1.107e-01, 1.100e-01, 1.787e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(7.324e-02, -7.740e-03, 2.053e-02, -3.945e-03, -1.095e-01, 1.561e-03, 5.627e-02, -1.522e-02, 6.501e-02, 6.181e-03, 2.857e-02, 7.899e-02, 2.797e-02, -2.441e-02, 1.284e-02, 3.209e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(6.139e-02, 1.173e-01, -8.722e-02, 1.220e-01, -1.009e-01, 4.188e-02, 5.054e-02, 6.649e-02, -8.985e-02, 1.050e-01, -2.873e-02, 7.825e-02, 3.161e-02, -2.673e-02, -8.603e-02, -6.110e-03), r2);\n\tr3 = MulAdd(s0_2_2, M4(-1.849e-02, -1.742e-02, -1.555e-02, 1.399e-02, -1.092e-02, -6.335e-03, -6.299e-03, -8.260e-03, -4.678e-03, -2.896e-03, -1.485e-04, 9.589e-04, 2.222e-03, 1.282e-02, 1.191e-02, 2.078e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(1.120e-02, -1.626e-01, -5.586e-02, -2.777e-02, -1.291e-01, 6.191e-03, -1.979e-03, -3.219e-02, 3.411e-02, 6.390e-02, 4.807e-02, -3.499e-03, 1.110e-01, 1.992e-02, -1.644e-01, 4.451e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-7.354e-03, -2.187e-02, 1.056e-01, -1.606e-02, -5.776e-02, 1.651e-02, -9.702e-02, -4.436e-03, -6.801e-03, 7.814e-03, -2.162e-02, -3.434e-02, 3.771e-02, -1.528e-01, 7.700e-02, -1.956e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-1.517e-02, 1.572e-02, 1.935e-02, 4.263e-02, -5.163e-03, -2.101e-03, -9.552e-03, 5.175e-03, 9.179e-04, -1.558e-01, -5.513e-03, -1.751e-02, 9.685e-03, 9.333e-04, -1.493e-02, 1.479e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-7.172e-03, -4.183e-02, -5.749e-02, -8.125e-02, 6.936e-03, 2.821e-02, -1.754e-02, 4.676e-03, 3.420e-03, -1.508e-02, -2.005e-02, -6.126e-03, 1.856e-02, -2.505e-02, -5.798e-02, 4.691e-03), r7);\n\tr0 = MulAdd(s1_0_0, M4(1.114e-01, 5.249e-03, -9.811e-02, 3.359e-02, -7.783e-03, 6.924e-03, -1.421e-01, 6.455e-03, 1.762e-01, 1.653e-02, 1.619e-01, 2.782e-02, -3.598e-02, 6.394e-03, 1.602e-02, -2.316e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(5.316e-02, 4.261e-03, 3.364e-02, -1.584e-03, -6.008e-02, -9.611e-03, -1.700e-02, 1.370e-02, 3.585e-01, 9.556e-03, -2.202e-02, 5.090e-02, -3.695e-02, 7.435e-03, 1.160e-03, -2.764e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-2.577e-01, -8.831e-03, 1.836e-02, -1.495e-01, 1.711e-01, 4.720e-02, -3.311e-02, 7.018e-02, -3.631e-01, 4.768e-02, 1.443e-02, 4.770e-03, -4.558e-02, -2.503e-02, 2.344e-02, -9.516e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-2.725e-02, -1.713e-02, -1.713e-02, 2.175e-02, 2.998e-03, -4.598e-03, -7.109e-03, 4.016e-03, -2.743e-02, -5.286e-02, -5.244e-02, 9.409e-04, -1.854e-02, 1.116e-02, 9.271e-03, -6.236e-03), r3);\n\tr4 = MulAdd(s1_0_0, M4(-3.931e-01, -1.572e-01, 9.255e-02, -5.000e-02, 4.529e-02, -2.231e-02, 1.528e-01, 1.506e-02, -1.416e-02, 3.117e-02, -4.714e-02, 4.035e-02, 7.916e-02, -8.819e-02, -5.443e-02, -2.060e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-8.385e-04, -1.882e-02, 1.948e-02, 3.130e-03, -2.314e-02, 6.822e-02, -2.375e-02, -1.368e-02, 1.753e-03, 1.973e-02, 4.338e-03, 1.008e-02, -3.511e-03, 1.292e-03, 7.084e-03, 1.425e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-1.704e-02, 3.186e-02, 6.552e-03, -1.602e-02, -5.576e-03, 1.280e-02, -2.090e-03, 2.662e-02, -4.898e-02, -2.546e-03, -2.837e-02, 5.502e-03, 1.078e-02, -7.362e-04, 1.193e-02, 1.744e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(4.331e-02, 2.031e-03, -1.442e-02, 5.565e-03, -1.527e-02, -1.818e-02, -1.552e-02, -8.489e-03, 2.037e-02, -2.721e-02, -3.381e-02, -6.519e-03, 3.080e-03, 5.027e-03, -2.079e-02, 4.081e-03), r7);\n\tr0 = MulAdd(s1_0_1, M4(-3.175e-01, 3.036e-02, 3.695e-02, -1.457e-01, -2.595e-02, 3.385e-02, 5.139e-01, -5.160e-02, -2.832e-01, -1.921e-02, 5.120e-01, 1.501e-01, -4.885e-02, 4.419e-03, -1.488e-01, 9.618e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(-2.653e-02, -1.822e-02, -2.211e-02, -1.784e-01, -1.139e-01, -5.121e-02, 3.620e-02, -2.148e-01, -7.117e-02, -2.108e-02, 5.149e-02, -6.302e-02, -2.116e-02, 2.476e-03, 5.748e-03, 1.492e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.239e-02, -1.636e-02, 1.351e-01, -5.072e-02, -4.457e-02, 2.394e-01, 6.795e-02, -2.729e-01, 2.608e-01, -1.719e-03, -6.710e-03, 3.419e-01, -5.018e-02, 1.372e-02, -1.299e-02, 8.352e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-5.825e-02, -8.358e-03, -1.504e-02, 8.290e-03, -1.376e-01, -6.391e-02, -7.454e-02, -8.097e-02, -3.328e-02, -7.230e-02, -6.978e-02, -2.677e-02, -1.910e-02, 4.174e-03, 6.030e-03, -1.703e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-5.674e-02, -1.825e-01, 6.665e-02, -1.018e-02, -3.215e-01, -2.704e-01, 1.173e-01, 7.449e-02, 6.197e-02, 5.605e-01, -4.358e-02, -3.382e-02, 2.023e-02, 2.549e-01, -9.828e-02, 3.696e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.810e-02, 2.855e-02, 1.255e-02, -1.728e-02, -2.708e-02, 2.341e-01, -6.125e-02, -3.853e-02, 1.991e-02, 8.362e-02, -4.556e-02, -2.315e-02, -4.279e-03, 4.515e-02, 1.516e-03, -1.685e-03), r5);\n\tr6 = MulAdd(s1_0_1, M4(-9.109e-03, -3.126e-02, -3.870e-02, 1.374e-02, -7.030e-02, -3.780e-02, -4.978e-02, 7.379e-03, -7.397e-02, 1.949e-02, -2.727e-02, -1.907e-03, 7.677e-04, -9.374e-03, 6.659e-03, -8.475e-03), r6);\n\tr7 = MulAdd(s1_0_1, M4(-4.414e-02, -2.498e-03, -3.245e-02, -1.079e-03, 3.102e-02, -3.838e-02, -2.596e-02, -1.423e-02, -3.884e-02, 5.502e-02, 4.871e-02, -1.250e-02, 2.148e-02, -1.218e-02, -1.360e-02, -4.336e-03), r7);\n\tr0 = MulAdd(s1_0_2, M4(1.122e-02, -2.822e-02, -5.113e-02, -2.956e-02, 1.652e-02, -2.607e-02, -7.354e-02, -3.280e-02, 1.037e-01, 2.010e-02, 6.600e-02, 6.191e-03, 5.939e-02, -2.944e-02, 5.821e-03, 2.972e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(-7.379e-03, -8.689e-03, -9.831e-03, -3.815e-02, -6.413e-03, 3.905e-03, 3.406e-02, -5.558e-02, -1.583e-02, 1.108e-02, 7.300e-02, -2.151e-01, 1.290e-02, -2.975e-04, 5.963e-03, -8.593e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(-3.022e-02, -3.349e-02, 6.172e-02, -5.564e-01, 6.207e-02, -3.238e-04, -1.781e-01, -1.102e+00, 6.504e-02, 2.283e-01, -6.824e-03, -2.532e+00, -4.168e-03, -1.106e-01, -5.324e-03, -4.147e+00), r2);\n\tr3 = MulAdd(s1_0_2, M4(-6.859e-03, 3.081e-04, -1.032e-03, -4.269e-03, -3.120e-02, -3.601e-02, -3.772e-02, -4.223e-03, -4.026e-04, -2.315e-03, -2.529e-03, 4.535e-04, -2.772e-03, 3.668e-03, 5.232e-03, -2.592e-03), r3);\n\tr4 = MulAdd(s1_0_2, M4(-1.617e-01, -3.405e+00, -6.711e-02, -1.667e-02, -1.337e-01, -2.250e+00, 1.229e-01, 1.423e-02, -6.057e-01, -5.432e-01, -1.476e-01, 1.473e-02, 5.612e-03, -2.838e+00, -9.940e-03, 1.179e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-1.082e-02, -1.292e-01, -1.658e-02, 1.372e-04, -3.142e-02, 2.439e-01, 1.736e-02, 1.962e-04, -8.580e-03, 2.465e-02, -2.565e-02, 1.268e-02, 2.634e-03, 4.626e-02, 2.650e-02, -1.181e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(1.535e-03, -7.346e-03, 1.773e-02, 1.862e-02, -3.645e-02, -1.740e-03, -1.939e-02, -4.563e-02, -4.379e-03, 3.934e-03, -3.423e-05, -3.060e-02, 1.295e-03, 2.134e-03, -2.949e-02, -1.571e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-9.317e-03, 2.194e-03, -3.051e-03, -1.024e-03, 3.025e-02, -1.611e-02, 9.422e-03, -2.573e-03, 1.218e-02, -8.850e-03, 1.905e-02, -3.375e-03, -4.065e-03, -1.410e-02, -2.110e-02, 1.481e-03), r7);\n\tr0 = MulAdd(s1_1_0, M4(1.938e-01, -3.911e-03, -2.800e-01, 1.519e-02, 1.167e-02, 6.236e-03, -3.042e-02, -6.749e-03, 3.164e-01, -4.066e-03, -1.485e-01, 3.508e-02, 8.440e-02, 8.853e-03, -1.837e-02, 7.024e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(-5.019e-01, 6.470e-02, 3.862e-02, -4.975e-03, 1.531e-01, 1.479e-02, 5.021e-02, -5.091e-02, -2.421e-01, 4.108e-02, -4.457e-02, 2.398e-01, -7.128e-04, -1.961e-02, 9.073e-02, -4.048e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-5.401e-02, -1.037e-01, 2.664e-02, 1.396e-02, 1.549e-01, -8.102e-02, -4.252e-02, -3.234e-02, -1.373e-01, -5.753e-02, 1.098e-01, 1.369e-01, -1.558e-01, -8.339e-02, 3.609e-02, -1.015e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(2.752e-02, 1.717e-02, 1.161e-02, 5.014e-02, -1.019e-02, 2.584e-03, 5.135e-03, 1.721e-02, -4.628e-02, 2.363e-02, 2.851e-02, -7.677e-03, 3.251e-02, 8.845e-03, 1.586e-02, 1.138e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(-2.078e-01, 1.052e-02, 2.189e-02, -7.809e-01, 1.555e-01, -1.988e-02, 1.842e-01, -1.793e-01, 4.109e-01, 1.339e-01, 1.004e-01, -2.175e-01, 2.244e-01, -8.445e-02, -6.636e-02, -2.517e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-4.510e-02, -1.156e-02, -1.953e-02, 5.549e-02, 3.639e-03, 1.090e-01, -5.902e-03, 3.984e-03, -1.864e-01, 6.763e-02, -1.161e-02, 3.603e-02, 1.151e-02, -7.078e-03, -1.229e-02, -1.635e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(1.326e-02, 2.952e-03, 3.772e-02, -1.913e-02, 3.448e-03, -9.683e-03, -1.419e-02, 9.137e-03, 2.712e-02, 6.896e-03, -8.929e-03, -2.020e-02, 1.805e-02, -3.691e-02, 6.754e-02, 9.803e-03), r6);\n\tr7 = MulAdd(s1_1_0, M4(5.100e-02, 5.165e-02, 7.953e-02, 3.929e-03, -6.700e-03, 1.278e-02, -1.242e-02, 3.455e-03, 1.397e-02, 3.472e-02, 2.661e-02, -3.699e-02, 2.980e-02, 1.084e-03, -4.680e-02, -2.653e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-6.702e-01, -3.511e-03, -6.934e-01, 5.676e-02, 2.410e-01, -1.534e-02, -1.498e+00, 3.357e-02, -6.383e-01, -1.726e-02, -2.991e-01, -5.115e-02, -1.196e-02, -3.734e-02, 3.725e-01, 6.962e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(2.229e-02, -2.327e-01, -7.122e-01, -3.190e-01, -3.957e-02, -8.451e-02, -8.813e-02, 1.056e-01, -2.345e-02, 2.129e-01, 5.715e-02, 3.291e-01, -2.404e-01, 1.294e-02, -6.274e-02, -6.629e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-5.220e-01, -5.804e-01, 1.748e-02, -8.479e-03, -4.249e-01, -5.051e-01, 9.959e-02, -2.930e-02, 5.563e-01, -1.291e-01, -1.316e-01, 1.479e-01, 1.410e-01, 5.970e-01, 1.528e-01, 1.141e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-3.888e-01, -3.099e-02, -3.500e-02, -2.321e-02, 4.849e-02, 5.713e-02, 5.727e-02, -8.592e-02, 3.679e-01, 1.475e-01, 1.489e-01, -1.455e-02, 3.721e-01, 5.517e-01, 5.452e-01, -7.634e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(-2.148e+00, -5.647e-02, -9.998e-02, -3.556e-02, 5.825e-01, -9.296e-02, 4.847e-01, 1.564e-01, 1.880e-01, 5.090e-02, 2.438e-01, 1.101e-01, -7.293e-01, 2.203e-01, 9.443e-02, 1.860e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-2.860e-01, 1.439e-01, -2.278e-02, -2.075e-01, -1.833e-01, 3.354e-01, -4.816e-02, -6.000e-02, -3.077e-02, 1.353e-01, 3.260e-02, 1.828e-01, 1.418e-01, -3.150e-01, -4.417e-02, 2.818e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(-3.186e-02, -1.125e-01, -2.667e-01, -8.297e-02, 5.237e-02, -6.621e-02, 6.523e-03, -5.498e-02, 1.470e-01, 2.706e-01, 1.616e-01, 1.314e-01, 5.254e-01, 9.398e-02, 2.315e-01, 1.458e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-5.013e-02, -4.346e-01, -6.996e-02, -1.223e-01, 1.595e-02, -1.868e-02, -3.935e-02, -1.995e-02, -6.962e-02, -1.990e-01, 2.389e-02, 1.778e-02, -8.494e-02, 8.687e-02, 4.171e-02, -7.477e-04), r7);\n\tr0 = MulAdd(s1_1_2, M4(-1.160e-01, -1.072e-01, -9.727e-03, -6.266e-03, -5.658e-02, -7.350e-02, -3.244e-01, -7.031e-03, 1.447e-01, 2.959e-01, -3.460e-01, -1.108e-02, 9.670e-02, 8.958e-02, -2.750e-01, 1.074e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(-7.026e-02, -2.937e-02, 1.151e-02, -2.768e-01, -6.336e-03, -6.421e-02, 2.181e-01, 9.023e-02, 1.625e-02, -8.839e-03, -8.477e-02, 1.989e-01, 3.974e-02, 3.448e-04, -6.636e-04, -4.332e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-1.583e-02, -2.044e-01, -3.046e-01, -1.484e-01, -1.513e-01, 4.575e-02, -2.645e-01, 1.830e-01, -5.205e-01, 1.069e-01, -6.802e-02, 2.993e-01, -4.170e-01, 5.399e-02, 5.953e-02, 3.740e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(1.252e-02, -3.512e-03, -4.379e-03, -9.003e-03, -3.553e-02, -1.563e-02, -1.551e-02, -6.193e-03, -5.547e-02, -1.347e-02, -1.215e-02, 1.401e-02, -4.736e-02, 1.089e-02, 7.933e-03, 1.154e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-5.295e-01, -1.665e-01, -2.997e-02, -4.755e-02, -7.303e-02, 1.561e-01, -8.668e-03, 4.989e-02, 3.023e-01, -1.941e-01, -6.503e-02, -1.380e-02, -3.837e-01, 4.482e-01, -1.347e-01, 6.812e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(-1.328e-02, -1.133e-01, -3.545e-02, -2.508e-02, -1.116e-01, 3.021e-01, -1.222e-03, -6.244e-02, -3.584e-02, -4.251e-01, 5.252e-02, 9.519e-03, -6.053e-02, -6.387e-03, -3.071e-02, -1.420e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-3.494e-03, -4.534e-03, -6.510e-03, 1.475e-02, -1.660e-02, -2.374e-03, -3.092e-02, -3.443e-02, -1.365e-02, 1.364e-02, 2.720e-02, 5.847e-02, 9.831e-03, -6.601e-03, 1.765e-02, 6.018e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(-3.894e-02, 2.979e-02, -2.124e-02, 1.364e-02, 2.017e-01, 2.649e-02, 2.857e-02, -7.875e-03, -8.667e-02, 7.349e-02, 5.284e-02, -4.138e-02, 7.680e-02, -2.456e-02, -3.348e-02, -3.599e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(7.113e-02, -4.379e-03, 1.494e-02, 2.818e-03, 1.097e-02, -6.630e-03, -1.878e-01, 2.699e-03, 2.511e-02, 2.887e-03, -3.887e-01, 3.959e-03, 1.684e-01, -9.820e-04, 4.556e-02, -4.022e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-4.058e+00, 1.003e-02, -1.389e-04, 7.133e-02, -3.044e+00, -1.527e-02, 2.673e-02, 5.608e-02, -3.579e+00, 3.822e-02, 1.351e-01, -7.407e-02, -6.908e+00, 5.092e-02, -4.483e-02, 9.436e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-5.622e-02, 2.933e-02, 5.420e-02, -1.253e-02, -9.554e-02, 6.372e-02, -6.374e-03, 1.878e-02, 3.649e-02, 3.054e-01, 1.723e-02, -1.347e-02, 5.386e-02, -2.138e-01, 3.210e-02, 5.287e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.192e-02, 2.646e-03, 5.629e-04, 1.571e-02, -1.132e-02, -3.833e-03, -6.662e-03, -6.824e-03, -2.461e-02, -1.702e-02, -1.807e-02, -2.629e-02, 5.033e-02, 2.582e-02, 2.619e-02, 2.704e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-3.032e-01, -3.069e-02, -2.219e-02, -2.386e-01, -1.328e-02, 7.020e-03, 1.470e-01, 1.509e-01, -5.722e-01, 1.072e-03, -6.640e-02, 8.504e-02, 9.860e-02, 3.437e-02, -7.382e-02, -4.472e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(1.967e-02, -4.638e-03, -3.774e-02, 1.062e-03, -1.805e-03, 2.106e-01, 6.575e-03, -1.098e-02, -2.378e-02, -2.052e-02, 2.483e-02, 3.430e-02, 2.011e-02, -1.981e-01, -5.890e-02, 3.505e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(1.951e-03, -2.032e-02, 2.795e-03, -7.223e-03, -7.799e-03, -1.239e-02, -1.773e-02, -2.087e-03, -1.468e-02, 7.985e-03, -2.056e-02, 3.214e-02, 2.568e-02, 1.846e-02, 4.529e-02, 8.674e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(1.059e-02, -1.646e-03, -4.999e-03, 2.942e-03, -9.065e-03, -6.208e-03, -2.017e-02, 8.257e-03, 1.417e-02, -3.797e-02, 7.113e-02, 2.625e-03, 1.690e-02, 4.569e-02, -2.401e-02, -1.206e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-1.109e-01, -3.480e-02, -5.190e-02, 3.949e-03, 5.316e-02, -2.404e-02, 2.492e-01, 4.242e-03, -1.086e-01, -5.691e-03, 1.100e-01, -6.168e-03, -1.975e-01, 1.357e-02, -4.945e-02, -5.160e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(-3.628e-01, 8.376e-02, 1.715e-01, 3.908e-02, -2.473e-01, 4.133e-02, 1.323e-01, -1.811e-02, 6.910e-02, -5.241e-02, -1.919e-01, -1.270e-01, 6.002e-02, 5.348e-02, 1.597e-01, 1.922e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.047e-01, -1.545e-01, 2.235e-02, -2.739e-02, 1.590e-02, 1.709e-01, 8.048e-02, 9.472e-02, 3.272e-01, 1.987e-02, 5.503e-02, -1.366e-01, -1.812e-01, -1.664e-01, -1.677e-02, 4.456e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(2.644e-02, -4.067e-05, -7.862e-04, 5.412e-03, -1.392e-02, -1.334e-02, -1.555e-02, 1.906e-03, -2.440e-02, 5.163e-03, 5.997e-03, -6.424e-03, 6.274e-02, 1.537e-02, 1.319e-02, 4.045e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-3.650e-01, -3.867e-02, -1.819e-01, 3.518e-02, -3.568e-01, 6.118e-02, 2.639e-01, 6.631e-02, -2.302e-01, -4.603e-03, 1.159e-01, -1.175e-01, 2.380e-01, -5.097e-02, -1.657e-03, 1.294e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(3.434e-03, -2.728e-02, -1.341e-01, 8.423e-02, -1.297e-02, 7.668e-02, -5.017e-02, 3.120e-02, 4.927e-02, -3.332e-02, 4.495e-02, -3.774e-02, -2.193e-02, 1.213e-01, 1.143e-01, 7.836e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-1.737e-03, 5.129e-02, 4.564e-02, 9.494e-02, -1.607e-02, -2.062e-02, -1.480e-02, -5.701e-02, 7.218e-03, -3.625e-02, -8.277e-02, -1.815e-01, 1.596e-02, -1.584e-02, 1.695e-01, 2.060e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(2.636e-02, 8.225e-02, -3.769e-03, -2.752e-02, -2.606e-03, 4.354e-03, -1.806e-02, -2.531e-02, 3.803e-02, 2.997e-02, 1.777e-02, 5.209e-02, -1.363e-02, 7.837e-02, -5.877e-03, 1.551e-01), r7);\n\tr0 = MulAdd(s1_2_2, M4(1.172e-01, 5.026e-02, -1.249e-01, 3.989e-03, 9.456e-03, -3.134e-02, 3.538e-01, -9.041e-03, 5.490e-02, -2.964e-02, 1.530e-01, 1.407e-03, -1.401e-01, -5.241e-02, 1.977e-01, 1.725e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(-4.528e-02, 2.579e-03, 1.496e-02, 4.015e-02, 3.997e-02, -3.278e-03, -5.362e-03, 1.296e-01, 1.028e-01, -4.472e-03, 8.449e-02, -1.439e-02, -4.379e-02, 4.121e-03, 1.116e-01, 1.959e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(2.699e-03, 6.416e-02, 1.257e-01, -3.456e-02, -3.396e-02, -1.276e-02, 3.470e-02, -9.395e-03, -2.724e-01, -1.474e-02, 4.562e-02, -1.005e-02, 2.057e-02, -8.084e-02, -2.587e-01, 8.067e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-2.251e-02, -7.626e-03, -8.823e-03, -2.040e-03, -2.961e-02, -6.941e-03, -7.891e-03, -4.072e-03, -8.953e-03, -1.549e-03, -2.038e-03, 3.368e-03, 1.157e-02, -2.009e-03, -3.068e-04, 2.189e-03), r3);\n\tr4 = MulAdd(s1_2_2, M4(9.836e-02, -5.993e-02, -2.410e-02, -1.186e-02, 1.172e-01, 1.076e-03, 1.992e-01, 8.520e-02, -2.303e-01, 1.902e-01, 1.571e-02, 1.359e-02, -4.775e-02, -2.686e-01, 6.557e-02, 1.584e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-2.337e-02, -4.860e-02, -3.041e-02, 6.442e-04, -2.557e-02, 2.114e-01, -2.127e-02, -9.211e-03, -1.405e-02, -5.797e-03, 1.684e-02, -5.238e-03, 2.008e-02, -2.802e-01, -8.273e-02, 3.925e-03), r5);\n\tr6 = MulAdd(s1_2_2, M4(-7.363e-03, 4.125e-03, 5.097e-03, 2.413e-02, -6.584e-03, 2.860e-04, -1.951e-02, 6.323e-03, -2.142e-03, -6.087e-03, -1.107e-02, -1.848e-02, -6.343e-04, -3.034e-03, 7.788e-02, 6.657e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-1.187e-02, -2.829e-04, -4.593e-02, -2.049e-02, 7.627e-02, -8.455e-03, -2.387e-02, 5.158e-03, -3.251e-02, -1.113e-02, -2.486e-02, 2.581e-02, -8.054e-02, -2.960e-02, -3.623e-02, -2.792e-02), r7);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.843e-01, -4.060e-03, 1.492e-01, 1.025e-01, 1.528e-01, 6.371e-03, 1.491e-01, 3.211e-02, -2.482e-01, -1.461e-03, -3.018e-03, -2.947e-02, 4.368e-02, 6.450e-03, -9.305e-02, 2.324e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(2.354e-01, -1.833e-04, 6.289e-02, -2.251e-01, 2.537e-04, -1.764e-03, 3.157e-02, 6.498e-02, -6.747e-02, 2.285e-03, -4.783e-02, 4.916e-02, 6.869e-02, 1.261e-02, -5.611e-02, -1.498e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(-3.354e-01, 1.663e-01, 6.128e-02, 5.951e-02, 9.892e-02, 1.933e-01, 2.604e-02, -1.573e-01, 3.051e-01, -4.542e-02, -1.223e-01, -2.554e-01, -4.040e-02, 5.506e-02, -7.212e-03, 7.704e-04), r2);\n\tr3 = MulAdd(s0_0_0, M4(-7.929e-02, -1.605e-02, -1.665e-02, -2.669e-02, 2.982e-02, 2.551e-03, -6.363e-03, 4.415e-03, -2.403e-02, 8.136e-04, -2.157e-03, 2.803e-02, -3.704e-02, 2.746e-06, -1.211e-03, -2.841e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-7.281e-01, 1.623e-01, -8.146e-02, 4.665e-02, -3.936e-01, -2.208e-01, 8.543e-02, 6.669e-02, -2.093e-01, -1.598e-01, 7.181e-02, -3.955e-02, -2.556e-01, -5.050e-02, 5.608e-02, 4.116e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(5.259e-02, -1.690e-01, -3.820e-02, -3.723e-03, 5.733e-02, 1.178e-01, -1.706e-02, 1.535e-02, -4.086e-02, 1.363e-01, 2.748e-03, -3.262e-03, 4.157e-03, -1.491e-04, 2.000e-02, 7.278e-03), r5);\n\tr6 = MulAdd(s0_0_0, M4(-1.471e-02, 1.694e-02, -1.762e-02, -1.665e-02, 2.066e-03, 2.712e-04, 7.115e-03, -5.697e-02, -2.115e-03, -1.490e-02, 5.835e-03, -1.812e-02, -2.865e-03, 1.532e-02, -3.253e-03, 8.463e-03), r6);\n\tr7 = MulAdd(s0_0_0, M4(-7.585e-03, 3.295e-03, 1.845e-02, 7.863e-03, 6.457e-03, -7.122e-03, -2.483e-02, -4.250e-03, 3.454e-03, -7.732e-03, -1.439e-02, -4.637e-03, -3.610e-03, -2.248e-03, 1.970e-04, 8.870e-03), r7);\n\tr0 = MulAdd(s0_0_1, M4(-1.902e-01, 2.013e-02, -8.494e-03, 1.084e-02, -3.454e-02, 1.541e-02, 1.724e-01, 1.777e-01, 2.942e-01, -2.192e-02, 1.355e-01, 1.107e-01, -2.904e-01, 2.056e-02, -3.407e-01, -8.374e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(5.708e-02, 1.868e-03, -1.786e-02, -1.657e-01, 3.123e-02, -1.247e-02, 5.310e-02, 1.419e-01, 5.443e-02, -2.938e-03, -5.497e-02, -3.020e-01, 3.354e-02, -2.113e-03, 1.408e-02, 2.691e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.996e-01, 2.171e-02, -4.342e-03, -5.520e-02, -9.077e-02, -1.093e-01, -2.128e-01, 2.619e-01, 5.964e-02, -7.811e-02, 1.043e-01, -6.247e-02, -1.399e-01, 8.703e-03, -2.768e-02, -3.175e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(-5.416e-02, -1.464e-01, -1.489e-01, 1.628e-02, -3.061e-03, 2.107e-02, 1.665e-02, -1.120e-02, -2.527e-02, -1.554e-02, -1.850e-02, -3.258e-02, -5.583e-02, 2.257e-02, 2.330e-02, 1.262e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-2.273e-01, -7.512e-02, -1.050e-02, -2.330e-02, -3.183e-01, 3.074e-01, 1.488e-01, 6.860e-02, 7.082e-02, -1.987e-01, 3.710e-03, 3.231e-02, 3.372e-01, -3.704e-01, -5.223e-02, 6.789e-04), r4);\n\tr5 = MulAdd(s0_0_1, M4(-7.126e-02, -7.170e-02, -1.377e-02, 4.695e-03, 3.017e-02, 2.053e-01, 1.306e-02, -1.561e-03, 4.338e-02, 1.106e-01, -2.557e-02, -5.924e-03, -4.332e-02, 1.439e-02, 2.293e-02, -7.562e-03), r5);\n\tr6 = MulAdd(s0_0_1, M4(-1.422e-01, -6.470e-02, -8.372e-02, 1.579e-03, 1.923e-02, 4.453e-03, 5.334e-02, -4.676e-02, -1.528e-02, 5.402e-02, 4.917e-03, -4.719e-02, 1.868e-02, -4.359e-02, 7.838e-03, 4.587e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(-7.637e-02, 2.109e-02, 6.215e-02, 1.105e-02, 3.533e-02, -1.136e-02, -5.212e-02, 7.223e-03, -3.672e-02, -5.128e-03, 3.406e-02, -1.849e-02, 1.754e-02, -1.555e-02, -7.609e-03, 1.413e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-6.988e-02, -6.214e-02, -1.590e-02, 1.910e-02, 5.503e-02, -2.305e-02, 2.500e-02, 3.158e-03, -1.918e-01, 5.871e-02, -4.594e-03, -4.004e-03, 7.131e-02, -3.864e-02, -4.243e-02, -2.505e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.461e-02, 1.055e-02, 2.965e-02, 8.675e-02, 1.706e-02, 2.539e-03, 1.526e-02, 5.747e-02, 2.076e-03, -8.512e-03, -3.190e-02, -4.162e-02, 1.566e-02, -1.133e-03, 9.160e-03, 8.475e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-3.050e-02, 1.534e-02, -1.289e-01, -1.799e+00, 9.283e-02, 1.171e-01, -1.071e-01, -1.200e+00, 1.052e-01, 8.423e-02, -2.392e-01, -4.616e+00, -6.139e-02, -3.333e-01, 2.838e-02, -2.757e+00), r2);\n\tr3 = MulAdd(s0_0_2, M4(-1.525e-02, -6.833e-03, -4.460e-03, -1.301e-03, -3.508e-03, -6.650e-03, -6.063e-03, 4.874e-03, 2.448e-02, -1.098e-02, -1.150e-02, 9.917e-04, -2.352e-03, 2.276e-03, 3.599e-03, 1.417e-04), r3);\n\tr4 = MulAdd(s0_0_2, M4(3.015e-01, -2.691e+00, 1.430e-02, 5.066e-02, 1.541e-01, -7.706e-01, 1.389e-01, 1.836e-02, 1.481e-01, -2.375e+00, -7.193e-02, -8.112e-02, 2.165e-01, -5.298e+00, -6.346e-02, 2.411e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(6.581e-03, 3.286e-02, 2.886e-02, 1.200e-02, 1.697e-02, 4.928e-02, -9.291e-04, 2.453e-03, -3.201e-03, 1.358e-02, -5.566e-02, 8.127e-03, 4.103e-02, 2.088e-02, 1.584e-02, -3.970e-03), r5);\n\tr6 = MulAdd(s0_0_2, M4(-6.279e-03, 1.455e-02, 1.683e-02, -3.717e-04, -8.066e-03, -1.024e-02, 6.096e-03, -2.157e-02, -1.138e-02, -1.166e-02, -3.627e-02, -2.265e-02, 1.433e-04, 1.108e-03, 1.641e-02, 8.427e-03), r6);\n\tr7 = MulAdd(s0_0_2, M4(-3.132e-02, -2.993e-03, -1.143e-02, 1.081e-02, -4.837e-02, 1.498e-02, -1.131e-02, -7.645e-03, 4.793e-02, -4.148e-03, 3.540e-02, -6.589e-03, 3.483e-03, 9.184e-04, -3.431e-02, 5.484e-06), r7);\n\tr0 = MulAdd(s0_1_0, M4(-2.446e-01, 4.532e-03, 1.369e-01, 2.652e-02, 1.059e-01, 2.052e-02, -8.231e-02, 6.501e-03, -3.406e-01, 6.865e-03, 3.294e-01, 1.282e-02, -3.399e-01, -6.240e-03, 4.916e-02, -4.310e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.741e-02, 1.258e-01, -2.319e-02, 1.608e-01, 2.017e-01, 4.666e-02, 4.729e-03, -2.786e-02, 2.164e-01, -4.918e-02, 4.232e-03, -6.031e-02, -2.342e-01, 2.851e-02, -6.504e-03, 1.863e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.181e-01, -1.953e-01, -6.620e-02, 1.635e-01, 4.245e-02, -7.192e-02, 9.639e-02, 5.508e-02, -3.417e-02, 3.956e-03, -7.974e-02, -6.610e-02, -9.748e-02, -3.680e-01, -1.707e-01, -1.145e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(2.112e-02, -6.015e-03, -5.907e-03, 3.058e-02, -2.127e-02, -1.257e-02, -7.845e-03, 8.430e-03, 1.310e-02, -1.687e-03, -9.762e-04, -5.751e-03, 2.632e-02, 5.658e-03, 6.819e-03, -9.497e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(3.019e-01, 1.587e-01, 5.316e-03, -4.469e-01, -1.135e-01, 1.349e-02, 1.116e-01, 2.542e-01, -7.535e-02, -3.334e-02, 8.669e-02, -1.203e-01, -2.879e-01, -1.039e-01, -1.299e-01, 6.517e-03), r4);\n\tr5 = MulAdd(s0_1_0, M4(1.016e-01, -1.393e-01, -8.047e-02, 1.038e-01, -5.138e-02, 2.489e-01, 6.246e-02, 3.479e-02, -1.053e-03, 1.354e-01, 1.772e-02, -3.037e-02, 4.729e-02, 1.362e-01, 1.963e-03, 2.148e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-6.676e-03, -1.548e-02, -9.295e-03, 1.903e-02, -6.782e-03, 5.813e-03, 1.128e-02, -9.504e-02, -4.455e-03, -4.862e-03, -8.042e-03, 5.213e-02, 1.038e-02, -3.235e-02, -5.311e-02, 1.112e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(-2.827e-02, 7.837e-02, -4.528e-02, 4.031e-02, 4.937e-02, 4.296e-02, -1.662e-03, 1.935e-02, -7.334e-03, -6.303e-02, -1.191e-02, -6.864e-02, -1.994e-02, -4.255e-02, -4.284e-02, -2.535e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-4.729e-02, -2.076e-02, 1.152e-01, 3.563e-03, -1.383e-01, 1.395e-02, 1.793e-01, 1.346e-02, 2.720e-01, -1.335e-02, 3.197e-01, -2.581e-02, -2.346e-01, -7.031e-02, -3.370e-01, -1.611e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.771e-03, 3.400e-02, -2.984e-01, -1.554e-02, 3.392e-02, 2.233e-01, -1.123e-02, -1.311e-01, -2.066e-01, 1.546e-01, -3.600e-01, 2.368e-02, 2.094e-01, -1.296e-01, 3.592e-02, -1.158e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-6.621e-01, -3.669e-01, 1.553e-01, 4.672e-01, -1.215e-02, 2.365e-03, -2.391e-02, -2.157e-01, 1.334e-01, -1.861e-01, 4.655e-02, 1.265e-01, -2.670e-01, -2.476e-01, 1.794e-01, 1.260e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.577e-01, 7.251e-02, 7.261e-02, 3.131e-02, 3.252e-01, 2.970e-02, 3.046e-02, 1.225e-01, 1.294e-01, 1.884e-02, 1.679e-02, 5.687e-02, -3.769e-02, -4.069e-02, -4.379e-02, 9.843e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(3.376e-01, 1.379e-01, 1.272e-01, 4.488e-02, 1.595e-01, -6.637e-02, -3.261e-02, -1.796e-02, -1.699e-01, 8.461e-02, 2.579e-01, 2.939e-01, -2.626e-01, -9.717e-03, 1.373e-01, -3.358e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(-2.085e-01, -1.205e-01, 8.061e-02, 5.695e-02, 5.679e-01, 7.366e-01, -7.222e-02, 2.176e-01, 3.209e-02, 1.121e-01, -9.234e-02, 1.743e-01, -1.234e-01, -4.018e-01, -1.319e-01, -1.295e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(7.139e-02, 3.203e-02, 2.549e-01, 2.130e-02, 3.358e-02, 4.667e-02, 1.905e-02, -7.297e-02, 1.426e-02, 5.040e-02, 2.318e-01, 9.400e-02, -4.187e-02, -1.045e-02, -4.421e-03, 4.137e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(1.946e-02, -1.320e-01, -1.920e-01, -1.960e-01, -1.340e-01, 4.046e-01, 2.625e-01, 6.035e-02, -2.495e-02, 2.329e-01, -1.368e-02, 5.349e-02, 1.127e-01, -1.055e-01, -1.441e-01, -1.416e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(-9.402e-02, 3.932e-02, -3.933e-02, 3.333e-02, 3.590e-02, 4.634e-02, 2.403e-01, 1.891e-02, -3.042e-01, 5.383e-02, -2.007e-01, -4.836e-03, 7.877e-02, 7.105e-03, -1.946e-01, -1.466e-03), r0);\n\tr1 = MulAdd(s0_1_2, M4(7.853e-02, 1.529e-02, 5.747e-02, 1.248e-01, -2.381e-03, 2.139e-02, -1.585e-01, 1.136e-01, 2.095e-01, -1.248e-02, 1.401e-01, 2.820e-01, -6.667e-02, -2.993e-02, -1.860e-01, -1.195e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.276e-02, -2.726e-01, -1.352e-01, -5.147e-02, 2.327e-01, 2.959e-01, 3.476e-01, 5.938e-01, 1.824e-01, -4.313e-02, -1.810e-01, -1.068e-02, -2.626e-01, 1.431e-01, -2.841e-01, -1.603e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-5.595e-02, -3.960e-03, -1.813e-03, -2.218e-03, -4.185e-02, -1.334e-02, -1.460e-02, -5.590e-03, -3.502e-02, 4.507e-03, 2.763e-03, -5.817e-03, -2.656e-02, -1.099e-02, -1.009e-02, -1.806e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(4.207e-01, -2.318e-01, -1.504e-01, 7.983e-02, -1.978e-01, 7.098e-01, 1.621e-01, 1.513e-01, 5.985e-01, -4.549e-02, 1.782e-01, -1.500e-01, -4.677e-01, -1.626e-01, 9.760e-02, 1.728e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(2.324e-03, -6.032e-03, -5.158e-02, 1.004e-03, 2.475e-02, 2.360e-01, 2.190e-02, 9.416e-03, 3.877e-02, 8.626e-02, 1.263e-01, -1.061e-03, -6.048e-02, -5.402e-02, -6.232e-02, -3.520e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-3.465e-03, -8.200e-03, -4.718e-02, -5.774e-02, -1.101e-02, -8.626e-03, 6.930e-02, -5.419e-02, 3.643e-03, 6.901e-03, 1.304e-02, 3.528e-02, -1.202e-02, -3.140e-03, 1.605e-02, 2.076e-03), r6);\n\tr7 = MulAdd(s0_1_2, M4(-3.676e-02, -5.529e-02, 5.928e-02, 4.481e-03, -9.447e-02, 6.407e-02, -5.095e-03, -1.632e-02, -6.714e-02, -8.426e-02, -5.564e-02, -5.532e-03, -1.284e-01, 5.115e-02, 1.692e-02, 4.664e-03), r7);\n\tr0 = MulAdd(s0_2_0, M4(-7.384e-02, 3.341e-03, 3.547e-02, -5.041e-04, -1.079e-01, 4.606e-03, 1.009e-01, 2.477e-04, -9.595e-02, -5.454e-03, -2.998e-02, 4.457e-04, -2.588e-01, -4.322e-03, -4.508e-01, 1.077e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.444e+00, 3.202e-02, 1.358e-01, -1.738e-02, -2.269e+00, 7.656e-03, -9.019e-02, 5.304e-03, -6.436e+00, 2.785e-03, 4.011e-02, -4.919e-02, -7.456e+00, -4.079e-02, 2.823e-02, -1.952e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.441e-02, 6.833e-02, 1.455e-02, 1.843e-02, 4.704e-02, 2.576e-02, 7.124e-02, 6.170e-02, -2.659e-02, -1.246e-03, -3.812e-02, -8.580e-03, -2.607e-01, 1.001e-01, -9.107e-02, 5.354e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(2.459e-02, -4.205e-03, -6.348e-03, -1.842e-03, 7.694e-03, -4.006e-03, -2.820e-03, -3.453e-03, -1.317e-02, -2.447e-03, -3.978e-04, -3.259e-02, -9.789e-03, -1.010e-04, -2.270e-03, -1.120e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(5.791e-02, 2.463e-02, -2.280e-02, -1.947e-01, -2.546e-01, 5.070e-02, 2.290e-02, -1.073e-01, 2.033e-01, 1.642e-03, 1.352e-01, -2.862e-01, 3.857e-02, 6.521e-02, -1.007e-01, -3.234e-01), r4);\n\tr5 = MulAdd(s0_2_0, M4(-1.691e-02, 4.466e-02, -2.122e-02, 4.223e-02, 6.237e-02, 1.852e-01, -5.551e-02, 4.377e-03, -7.352e-03, 4.010e-02, 5.560e-02, -1.349e-03, 1.242e-02, -1.573e-01, 1.127e-02, -4.383e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(-6.911e-03, 2.471e-02, 2.306e-02, -2.352e-02, -1.879e-03, 1.124e-02, 1.804e-02, -2.115e-02, -1.838e-03, -1.437e-03, -1.335e-02, -1.593e-02, -3.009e-03, 1.065e-02, 7.138e-03, 5.321e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(5.686e-03, 2.335e-02, -1.246e-02, -2.346e-02, 2.892e-02, 1.954e-02, -1.682e-03, 1.922e-02, -2.252e-02, -2.801e-02, -6.938e-03, -8.749e-03, -1.740e-02, -2.327e-02, 1.073e-02, -5.502e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(1.141e-01, 1.602e-02, -8.027e-02, 1.101e-02, 6.222e-04, 1.904e-02, 9.982e-02, 9.572e-03, 1.275e-01, -8.872e-03, -1.507e-01, 9.205e-03, 1.779e-01, 2.485e-02, 3.462e-02, 5.233e-03), r0);\n\tr1 = MulAdd(s0_2_1, M4(-2.074e-01, 8.545e-03, -1.562e-01, -1.359e-01, 2.795e-01, 1.407e-02, 2.291e-01, 1.941e-01, -1.975e-01, -5.034e-02, -1.313e-01, -1.232e-01, -2.752e-01, -5.170e-03, -2.329e-01, -1.289e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(6.282e-02, 2.250e-01, 4.601e-02, -1.563e-01, -1.795e-01, -3.277e-01, -2.735e-02, 9.928e-02, 3.343e-02, 6.910e-02, -4.008e-03, -4.014e-02, -6.329e-02, 6.895e-02, 1.442e-01, -6.645e-03), r2);\n\tr3 = MulAdd(s0_2_1, M4(-7.043e-02, -3.762e-03, -3.061e-03, 3.347e-03, 3.706e-02, 7.542e-03, 7.490e-03, -8.055e-03, -4.480e-02, -1.091e-02, -1.022e-02, -3.785e-03, 6.852e-03, 7.911e-03, 6.866e-03, 1.993e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(8.157e-02, -1.576e-01, 5.271e-02, 3.946e-03, -3.856e-01, 5.094e-02, -1.043e-01, -4.508e-02, 4.107e-01, -4.639e-03, 1.557e-01, 3.910e-02, -1.737e-01, 3.192e-02, -1.105e-01, -5.144e-03), r4);\n\tr5 = MulAdd(s0_2_1, M4(5.554e-02, -2.150e-02, 1.070e-01, -1.544e-03, -7.769e-05, 4.200e-02, 6.519e-02, 2.472e-02, -1.529e-02, 6.219e-02, 9.594e-02, -3.440e-02, -2.459e-02, 7.763e-02, -1.284e-01, 6.609e-04), r5);\n\tr6 = MulAdd(s0_2_1, M4(-2.921e-03, 3.648e-02, -5.994e-02, -7.830e-02, 8.949e-03, 2.237e-02, 7.934e-02, 5.690e-02, -7.617e-03, -2.172e-02, -5.388e-02, -6.143e-02, 5.432e-03, -2.569e-03, -2.750e-02, -7.878e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(5.822e-03, -5.337e-02, 8.319e-02, 1.316e-01, -8.410e-02, -1.360e-02, -6.471e-02, -2.540e-01, -1.944e-02, -4.065e-02, 6.116e-02, 2.919e-02, -6.222e-04, 4.732e-02, 1.416e-01, 9.351e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(3.115e-01, 3.913e-02, 2.448e-01, 1.028e-03, -9.544e-02, 2.180e-02, 8.109e-02, -6.253e-03, -2.281e-01, -1.441e-02, 3.798e-01, -9.929e-03, -1.552e-01, -6.466e-03, 6.000e-02, -6.862e-04), r0);\n\tr1 = MulAdd(s0_2_2, M4(4.414e-02, 3.940e-02, 2.962e-02, -1.581e-01, -1.231e-02, 3.203e-02, 7.731e-03, 9.604e-02, 1.186e-01, -1.247e-02, -1.055e-01, -1.616e-01, -7.689e-02, 1.216e-02, 5.338e-02, 1.610e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.407e-01, 1.854e-01, 1.416e-01, -4.911e-02, 9.250e-02, -1.974e-01, 9.279e-03, -8.569e-02, 1.984e-01, 1.896e-02, -6.280e-02, 4.135e-02, -1.665e-01, -5.314e-02, -1.269e-01, 1.018e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(1.462e-02, -6.028e-03, -7.080e-03, 5.965e-03, 1.906e-02, 8.826e-03, 6.171e-03, -9.337e-03, 5.428e-03, -2.712e-03, -4.971e-03, 3.816e-03, -1.632e-03, 5.676e-03, 7.570e-03, -4.133e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(-2.479e-01, 3.135e-01, -8.083e-02, 8.361e-02, 3.110e-01, 7.518e-02, 1.392e-01, 1.953e-01, -5.468e-01, 1.969e-01, 9.438e-03, 8.954e-03, 2.458e-02, 6.361e-02, -4.547e-02, 1.320e-01), r4);\n\tr5 = MulAdd(s0_2_2, M4(-6.215e-02, -5.266e-02, -8.987e-02, 3.580e-02, 2.382e-02, 1.614e-01, -6.027e-02, 2.104e-02, -6.477e-03, 3.036e-02, 2.508e-02, -6.135e-03, -2.760e-02, -1.462e-02, -3.545e-02, 9.457e-03), r5);\n\tr6 = MulAdd(s0_2_2, M4(-6.559e-03, 5.803e-03, -1.992e-02, -4.651e-02, 7.217e-03, -4.734e-04, 7.900e-04, -4.800e-02, -3.144e-03, -8.321e-03, -9.930e-03, -8.370e-02, 5.980e-03, 8.761e-03, 2.427e-02, 1.858e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-4.143e-02, 2.282e-02, 6.170e-02, -1.232e-02, 5.283e-02, 5.420e-03, 2.220e-02, 3.786e-02, -5.408e-02, 2.897e-02, -3.213e-02, -7.650e-03, -5.262e-02, 1.348e-02, -3.376e-02, -1.176e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(1.627e-03, 1.338e-02, -1.764e-02, 2.612e-02, 8.454e-02, -3.496e-04, 1.003e-01, 2.614e-02, 1.832e-02, -3.247e-02, -8.595e-02, 3.361e-01, 3.329e-03, -7.071e-03, -9.182e-02, -2.020e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-2.421e-02, -7.050e-03, -7.986e-03, 5.640e-02, -1.126e-01, 1.021e-02, -1.549e-02, 1.821e-02, -3.209e-02, -1.883e-02, 1.887e-02, -2.470e-02, -2.804e-01, -1.547e-02, 5.753e-03, -7.505e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(4.997e-02, 1.583e-02, 2.071e-02, 7.811e-02, -2.636e-01, 1.313e-01, 4.899e-03, 3.387e-02, 2.911e-02, 3.391e-02, -1.366e-02, -5.418e-02, 8.068e-02, -2.497e-02, 3.377e-02, 3.434e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-1.316e-02, 8.060e-03, -2.460e-02, -1.171e-02, -2.280e-02, -3.099e-02, -3.100e-02, 3.136e-02, 4.216e-02, 1.685e-01, 7.127e-02, 8.644e-03, -3.111e-02, -3.945e-03, -2.423e-03, -2.843e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(1.719e-01, 3.358e-02, -1.027e-02, -4.150e-03, -4.756e-01, -3.727e-01, -3.506e-02, 1.625e-01, -7.733e-02, -7.972e-02, -1.136e-02, -2.680e-02, 1.005e-01, -1.052e-02, -2.826e-01, 6.952e-03), r4);\n\tr5 = MulAdd(s1_0_0, M4(-2.092e-02, 7.634e-03, -1.151e-02, 3.396e-03, -4.621e-02, 2.842e-02, -1.006e-02, 6.853e-03, 4.439e-03, -9.457e-02, -1.451e-02, 6.997e-02, -1.923e-02, -4.122e-01, -1.844e-02, -1.837e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(4.084e-03, 6.809e-02, -6.941e-03, 1.291e-02, -3.105e-02, 4.627e-02, 1.512e-03, 3.848e-02, 6.014e-03, 1.604e-01, 1.001e-02, 2.130e-02, -3.670e-03, -1.377e-02, 1.505e-03, -2.329e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(1.877e-03, -7.603e-03, -1.354e-04, 6.663e-04, 5.147e-03, -1.966e-02, 1.982e-02, -8.541e-04, -1.683e-02, -2.138e-03, 5.046e-03, -6.171e-03, -1.325e-02, 1.605e-02, 2.252e-02, 6.010e-03), r7);\n\tr0 = MulAdd(s1_0_1, M4(9.339e-02, -1.281e-02, -3.397e-02, -2.319e-01, -5.652e-03, 3.986e-02, -5.250e-01, -4.555e-02, -3.829e-02, -8.569e-02, 4.957e-03, -4.192e-01, -9.554e-03, 8.965e-04, -8.900e-02, -1.333e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.331e-02, -1.783e-02, 2.958e-02, 3.125e-03, 4.006e-02, 5.189e-02, 4.883e-02, -5.760e-02, -1.185e-02, 5.595e-03, -4.190e-02, 2.161e-02, -1.505e-01, -1.915e-02, -1.149e-01, -4.136e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(8.440e-02, 3.263e-02, 2.040e-02, -1.180e-01, 5.491e-02, 7.228e-02, 2.037e-01, -4.857e-02, -1.313e-01, -1.437e-01, 4.321e-02, -7.442e-02, -2.312e-01, -1.161e-01, -5.902e-02, -3.127e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(3.343e-03, -6.106e-02, -2.613e-02, 9.269e-03, 8.792e-03, 7.447e-02, 7.850e-02, -9.236e-04, 6.851e-04, 2.544e-02, 1.158e-01, -4.981e-03, -1.030e-02, 1.874e-02, 1.351e-02, -2.709e-03), r3);\n\tr4 = MulAdd(s1_0_1, M4(-3.013e-01, -6.342e-02, 4.339e-02, 2.014e-02, 3.491e-02, 6.497e-01, -7.219e-03, -1.535e-02, 2.424e-01, -2.616e-02, -4.504e-02, 2.829e-02, 2.940e-01, -5.583e-01, -4.409e-01, -5.651e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(6.123e-05, 6.198e-03, 2.172e-02, -1.884e-02, 1.433e-02, 1.895e-02, 5.209e-02, 3.477e-02, -3.179e-02, 1.103e-01, -3.655e-02, -1.667e-01, 1.134e-02, -3.769e-01, 2.551e-02, -7.096e-03), r5);\n\tr6 = MulAdd(s1_0_1, M4(-2.094e-02, -6.140e-02, 1.871e-02, -2.671e-02, 7.873e-02, 3.332e-02, -1.869e-02, -2.232e-03, -6.116e-02, 1.900e-01, -3.783e-02, 4.882e-02, 1.456e-02, -1.011e-02, 4.181e-02, 3.598e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-5.020e-03, -1.977e-03, 2.521e-03, -9.852e-04, -1.903e-02, 6.973e-02, -2.127e-02, 3.138e-02, 1.942e-02, -1.163e-02, -5.434e-02, -1.258e-02, -2.726e-02, -4.046e-02, -3.377e-02, 8.683e-03), r7);\n\tr0 = MulAdd(s1_0_2, M4(-4.970e-02, -3.007e-02, 1.775e-02, 1.523e-01, 1.188e-01, 4.236e-02, -1.634e-01, 2.354e-03, -8.433e-03, 5.198e-03, -1.382e-02, -2.397e-02, -9.239e-02, -4.900e-03, -1.767e-02, -3.264e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-4.847e-02, 2.020e-02, -9.466e-03, 1.440e-02, 5.511e-03, -3.927e-03, 1.349e-02, 1.763e-01, 8.905e-03, -1.109e-02, 6.885e-03, -2.970e-02, 3.650e-02, -1.542e-02, 1.736e-02, -1.967e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(-2.331e-02, 2.546e-02, -7.410e-02, -2.578e+00, -3.074e-02, -1.969e-01, 2.232e-01, -3.389e+00, -1.675e-02, -4.753e-02, 5.176e-02, -2.068e+00, 2.081e-02, 1.326e-02, -1.348e-01, -1.867e+00), r2);\n\tr3 = MulAdd(s1_0_2, M4(-2.771e-02, 5.126e-04, -1.640e-02, 1.143e-03, -1.827e-03, 5.325e-03, 7.131e-03, 2.325e-03, 2.035e-02, 5.289e-03, 1.263e-02, 3.920e-04, -1.344e-02, -9.511e-03, -9.493e-03, -8.603e-03), r3);\n\tr4 = MulAdd(s1_0_2, M4(8.042e-02, -3.084e+00, 3.745e-03, -4.178e-03, 1.082e-01, -2.118e+00, -5.060e-02, 4.519e-02, -1.244e-01, -2.495e+00, -3.790e-02, 5.252e-03, -1.091e-01, -7.958e-01, -2.047e-01, -6.607e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(1.398e-02, -4.576e-02, -3.231e-04, 3.585e-02, -1.110e-02, -3.502e-02, -1.578e-02, 1.484e-03, -9.555e-03, -2.510e-02, -1.666e-02, 2.368e-03, 2.009e-03, -4.712e-01, -2.446e-02, -2.384e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-1.069e-02, -1.033e-01, -3.946e-03, -3.008e-03, 5.767e-03, 2.082e-03, 3.709e-02, -2.912e-02, 1.706e-03, 9.408e-02, 1.011e-02, 8.242e-03, -9.368e-03, 4.000e-03, -4.235e-02, -1.284e-03), r6);\n\tr7 = MulAdd(s1_0_2, M4(-1.177e-02, -1.112e-02, 1.368e-02, 5.908e-03, 1.097e-02, -1.315e-02, 7.196e-03, 1.023e-02, -4.759e-04, 2.956e-03, -1.099e-02, -6.391e-03, -1.304e-02, -1.881e-02, -1.754e-02, -7.951e-03), r7);\n\tr0 = MulAdd(s1_1_0, M4(1.439e-03, -9.210e-03, -8.688e-02, -3.895e-02, -1.339e-01, -1.569e-02, -8.296e-01, 1.788e-02, -9.769e-03, -5.410e-03, -7.660e-03, 9.744e-02, -1.139e-01, -9.915e-03, -4.056e-01, 1.893e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(2.366e-02, 9.562e-02, 2.646e-03, -1.991e-02, -4.147e-01, 5.165e-02, 1.757e-01, -2.209e-01, -1.474e-01, -1.487e-01, 2.766e-02, 3.089e-02, 1.964e-01, -2.720e-02, -1.291e-02, -9.118e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(5.670e-02, 2.177e-03, -4.576e-02, 4.251e-02, -1.103e-01, -2.735e-01, -1.238e-01, 1.605e-01, 7.253e-03, 4.990e-02, 2.606e-02, 5.948e-02, -2.299e-01, 2.226e-02, -6.085e-02, -1.142e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-7.227e-03, 5.406e-02, -2.398e-02, -3.226e-02, -5.723e-02, 1.429e-03, 6.054e-03, 1.233e-01, 2.407e-02, 9.488e-02, 4.644e-02, 5.683e-03, -2.951e-02, -2.790e-02, -2.704e-02, -4.169e-03), r3);\n\tr4 = MulAdd(s1_1_0, M4(-3.922e-02, 5.146e-02, -8.192e-03, 7.769e-02, -9.628e-02, 1.544e-01, -2.126e-01, -6.774e-02, -1.319e-02, 5.501e-02, -6.735e-02, -4.920e-02, -5.629e-01, -3.396e-03, -5.658e-01, -1.391e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(2.369e-02, -1.950e-02, 1.613e-03, 6.001e-02, -1.382e-01, -8.515e-02, -1.074e-02, 3.119e-02, 5.262e-02, -9.578e-02, 1.273e-03, 3.155e-01, 4.402e-02, -3.449e-01, 3.418e-02, -3.188e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(-2.355e-03, 9.541e-03, -1.385e-02, 3.905e-02, 5.083e-03, 1.004e-01, 4.987e-02, -1.089e-02, 2.470e-02, 1.612e-01, -8.845e-03, 2.924e-02, -2.739e-02, 4.362e-03, -1.046e-02, 3.060e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(-2.079e-02, -3.115e-02, -1.121e-02, -2.681e-02, 1.096e-01, 5.076e-02, 4.630e-02, 1.296e-02, -1.307e-02, 4.571e-03, -6.817e-03, 4.810e-02, -1.273e-02, -4.345e-02, -2.373e-02, -1.099e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(2.043e-03, 1.291e-01, -1.851e-01, 1.831e-01, 1.901e-01, 1.156e-01, 2.343e-01, 6.657e-02, 3.633e-03, -4.454e-02, 1.724e-02, 8.740e-02, -5.063e-01, 2.556e-03, -1.938e-01, -4.087e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.169e-01, -4.545e-01, -2.386e-02, -8.573e-02, 2.263e-01, -4.494e-02, -2.318e-01, -4.698e-01, 8.583e-03, -1.705e-01, -4.605e-02, -8.216e-02, -3.126e-01, -2.985e-02, -1.498e-01, -4.638e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(3.260e-02, -2.431e-01, 1.341e-01, 1.536e-03, -3.331e-01, -3.118e-01, 2.734e-01, -3.142e-01, -2.629e-02, -6.578e-02, 1.102e-01, 6.027e-02, -2.904e-01, -3.678e-01, 6.708e-02, -1.823e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(7.104e-02, 2.192e-03, 4.787e-02, 1.708e-02, 1.248e-01, 5.272e-03, 1.218e-02, 1.396e-02, -5.052e-02, -5.390e-02, -1.086e-01, -1.028e-02, 2.957e-02, -4.260e-02, -4.146e-02, 7.086e-03), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.014e-01, -4.206e-02, 9.667e-02, -5.669e-02, -1.957e-01, 4.219e-02, 1.586e-01, -5.591e-02, -1.121e-01, 1.845e-02, 7.551e-02, -3.335e-02, -7.762e-01, 3.655e-02, -3.540e-01, -1.025e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-7.853e-02, 1.240e-02, -4.521e-02, -1.412e-01, 1.985e-01, 7.707e-02, 8.088e-02, -3.982e-02, -1.035e-01, 9.441e-02, -5.645e-02, -2.703e-01, -1.695e-01, -3.797e-01, -9.098e-02, -4.370e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(1.985e-01, 1.460e-01, -4.477e-02, -4.802e-02, 8.758e-03, 4.355e-03, -2.203e-01, -2.746e-02, -2.715e-02, -5.137e-01, -3.750e-02, -2.556e-02, -3.877e-02, -1.233e-01, -1.665e-01, -1.382e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(6.755e-02, 2.412e-02, -2.756e-02, 6.228e-03, -1.522e-01, -2.290e-01, -1.894e-01, -1.779e-03, 5.863e-02, -5.512e-02, -6.387e-02, -2.497e-02, 8.008e-03, -5.113e-02, -9.532e-02, -3.593e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-1.741e-02, -4.267e-01, -1.323e-01, -2.300e-01, 1.607e-02, 1.241e-02, -6.399e-02, -1.547e-03, 6.817e-02, -3.928e-02, -6.389e-02, -5.192e-03, 1.015e-02, -1.422e-01, -8.798e-02, -3.486e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(7.334e-02, 1.854e-01, 8.770e-03, -1.113e-01, 9.871e-03, 4.893e-03, -1.203e-01, -5.876e-02, -9.004e-02, -6.382e-02, -3.100e-03, 8.117e-04, -8.683e-03, -4.138e-02, -5.308e-03, 3.267e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-1.106e-01, -5.031e-02, -9.453e-02, 2.586e-02, 8.514e-02, 1.432e-01, 2.358e-01, 2.384e-01, -1.243e-02, -3.279e-02, -2.309e-02, 7.948e-02, -1.193e-01, -9.291e-02, -1.735e-01, -1.197e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(-4.357e-02, -5.675e-03, -5.027e-02, 1.376e-03, -4.065e-02, -1.740e-02, -1.856e-02, -1.644e-02, -1.515e-02, -1.379e-02, -4.691e-03, -7.104e-03, -3.278e-02, -2.047e-02, -1.788e-02, -9.650e-03), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.052e-01, 6.518e-02, 9.035e-03, -3.867e-02, 2.352e-01, 1.393e-01, 1.056e-01, 9.921e-02, 7.884e-02, 4.812e-02, -2.004e-02, -7.168e-04, 2.262e-02, -5.339e-01, -3.489e-01, 8.350e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(5.532e-03, 5.456e-02, -1.307e-02, -2.249e-01, -3.068e-02, 4.613e-02, -6.376e-02, -3.754e-03, -7.019e-03, -9.726e-05, 2.593e-02, -2.192e-02, -3.793e-02, -2.796e-01, 6.981e-02, -3.674e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(4.162e-03, -2.446e-01, -3.310e-02, -2.575e-03, -1.394e-02, -5.230e-03, 6.342e-03, -6.546e-02, -7.711e-03, 2.145e-02, 1.125e-02, 3.888e-03, -1.995e-02, -9.326e-03, 3.445e-02, -8.159e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(-5.929e-03, -4.358e-02, 1.058e-02, -9.242e-03, -1.365e-01, 3.225e-02, -4.246e-02, -7.013e-03, -2.249e-02, 2.668e-02, -1.099e-02, 9.030e-03, 1.003e-02, 2.350e-02, -4.380e-02, -3.755e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-3.466e-02, 4.477e-02, -5.921e-02, -4.178e-02, 1.972e-01, -3.561e-03, 3.983e-01, -3.178e-04, -3.449e-02, -2.130e-02, 3.246e-02, 6.268e-02, 1.169e-01, 2.255e-03, -8.402e-02, -1.508e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-5.402e+00, 8.928e-03, -1.157e-02, 1.984e-02, -2.635e+00, 3.755e-02, -1.654e-01, 1.334e-01, -1.759e+00, -3.566e-02, 3.697e-02, -4.921e-03, -4.373e+00, 2.989e-02, 1.161e-03, -5.472e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(2.745e-02, 4.952e-03, -2.871e-03, 3.780e-02, 1.416e-01, -3.187e-02, 5.156e-02, 1.807e-02, 6.810e-02, 1.278e-02, -1.870e-02, -5.352e-02, 5.140e-02, -8.810e-02, -3.478e-03, -2.463e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(1.606e-02, -3.381e-02, 1.055e-02, -2.651e-04, 3.757e-03, -3.765e-03, -4.042e-03, 6.619e-02, 3.941e-03, 1.224e-02, -9.532e-03, -3.956e-04, -6.594e-03, 1.189e-03, 1.351e-04, -2.172e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(1.441e-01, 4.713e-02, -8.773e-02, -4.637e-02, 2.382e-01, -3.685e-02, 2.420e-02, -2.074e-01, 1.138e-01, -5.123e-02, -3.036e-02, -9.301e-02, 1.416e-01, -5.329e-02, -2.569e-01, -7.110e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-5.087e-03, -5.808e-02, -2.257e-02, 8.790e-02, 5.598e-02, 2.618e-03, 4.682e-02, 3.779e-02, -1.175e-02, 1.014e-02, -6.343e-03, 1.106e-01, -5.989e-02, -4.644e-01, 4.870e-02, 2.857e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(2.675e-02, -4.963e-02, 2.071e-03, 3.743e-02, -3.563e-03, 5.999e-04, 1.091e-02, -7.108e-02, -3.445e-03, 1.412e-01, 5.595e-04, -1.539e-03, 3.722e-04, -4.102e-03, 1.594e-02, -2.721e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(-2.114e-03, -8.976e-03, -8.005e-03, -4.904e-03, -6.920e-03, 2.197e-02, -2.056e-02, 7.701e-03, 4.107e-03, 2.986e-03, 1.491e-02, 2.129e-02, -1.373e-02, 1.985e-02, -4.491e-02, -1.725e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(7.257e-02, 2.017e-01, 4.311e-02, -1.743e-02, -8.618e-02, -2.382e-03, -3.676e-02, 1.074e-02, -4.500e-02, -6.479e-02, 2.950e-04, -1.416e-02, -2.474e-01, -1.241e-02, -2.112e-01, -1.162e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.615e-01, -9.078e-02, -1.508e-03, 1.173e-02, 6.689e-01, 1.029e-01, 1.528e-01, 1.590e-01, -3.562e-02, 6.172e-02, -7.598e-04, -1.855e-02, -3.835e-01, -4.784e-02, 2.827e-03, -1.637e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.169e-02, 5.554e-02, 6.188e-02, 1.888e-02, -4.396e-02, 6.600e-02, -2.997e-02, 1.285e-01, -6.134e-02, 9.025e-02, -1.096e-02, -9.242e-02, -1.500e-01, -5.865e-02, -1.758e-01, 2.673e-04), r2);\n\tr3 = MulAdd(s1_2_1, M4(4.063e-02, -1.353e-02, 2.508e-02, -1.415e-02, 2.533e-02, -7.839e-03, -7.793e-03, -4.003e-04, -3.405e-02, 3.431e-03, -9.861e-03, 3.095e-03, -1.459e-02, 8.472e-03, 7.327e-03, -2.867e-04), r3);\n\tr4 = MulAdd(s1_2_1, M4(-8.226e-02, 1.579e-02, -1.022e-01, -8.156e-02, -7.561e-02, 1.448e-01, 1.387e-02, -1.312e-01, -2.640e-01, -1.085e-01, 6.431e-02, 4.354e-02, -1.584e-01, -3.433e-02, -5.794e-01, -2.153e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(-1.950e-02, -5.875e-02, -4.144e-02, 2.822e-01, 4.089e-02, -2.380e-02, 2.127e-02, 8.526e-02, 2.547e-02, -6.697e-02, -1.309e-02, 6.735e-02, 7.007e-02, -2.251e-01, -1.168e-01, -5.781e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(2.836e-02, -1.221e-01, 5.518e-03, 2.155e-02, -9.440e-03, 1.304e-01, 6.647e-02, 4.833e-02, 3.589e-03, 7.204e-02, -2.062e-02, 4.501e-03, 9.415e-03, -3.357e-02, -4.138e-02, -8.522e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(2.743e-02, 1.924e-03, 3.937e-02, 7.398e-02, 3.566e-02, 2.304e-02, 3.796e-02, -9.430e-02, 9.355e-03, -2.276e-02, 2.424e-02, -1.234e-02, -2.574e-02, -1.145e-02, 5.442e-02, -3.366e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(2.801e-02, 3.098e-01, -8.312e-03, -5.494e-02, 8.370e-02, 1.345e-01, 1.672e-01, -1.465e-03, 5.374e-03, -4.766e-02, 7.861e-02, 2.584e-05, -4.909e-02, -2.318e-02, -2.118e-01, 9.978e-04), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.362e-01, 3.251e-02, 7.472e-03, 1.788e-02, -9.724e-02, -6.402e-04, -6.018e-02, 1.149e-01, 6.489e-02, 1.365e-02, 6.969e-03, 3.266e-03, -1.505e-01, -5.172e-02, 2.779e-02, -9.743e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-6.528e-02, 9.666e-02, 2.900e-03, -1.437e-02, -9.910e-02, 1.623e-01, 2.418e-01, -3.470e-02, -2.447e-02, 1.582e-02, 1.852e-02, -6.142e-02, -1.647e-01, -8.068e-02, 5.086e-02, 4.601e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-2.424e-02, -9.679e-03, -6.830e-03, 2.160e-03, -1.336e-02, -7.495e-03, -7.612e-03, -1.497e-02, -9.976e-04, 5.137e-03, -2.122e-03, 6.899e-04, 2.693e-02, 1.002e-02, 1.099e-02, -1.968e-04), r3);\n\tr4 = MulAdd(s1_2_2, M4(-5.319e-02, -4.747e-02, -2.509e-02, 1.045e-02, 1.989e-01, -2.253e-02, -8.481e-03, 1.444e-01, -7.309e-02, -6.161e-02, 1.536e-02, 1.751e-02, 2.472e-02, 1.769e-01, -3.401e-01, 5.471e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-1.522e-02, -1.148e-01, -7.787e-02, 7.971e-02, -6.022e-02, 2.235e-01, -1.098e-01, -3.438e-03, -1.366e-02, -1.953e-03, -1.452e-02, -2.078e-02, -3.527e-02, -3.869e-01, -2.509e-02, -4.416e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(1.951e-05, -1.246e-01, -1.842e-02, -5.294e-03, -6.837e-03, 5.718e-03, 6.909e-03, -1.473e-02, 4.557e-03, -3.918e-02, -5.269e-03, -2.292e-02, 9.796e-03, -2.067e-02, 1.086e-02, 2.416e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(1.297e-02, -2.443e-02, 1.156e-02, 2.490e-03, -1.164e-02, -7.583e-06, 1.317e-02, 1.028e-02, -2.485e-02, -2.078e-03, -1.669e-02, -6.617e-03, 1.713e-02, -6.254e-03, -2.505e-02, 2.067e-02), r7);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT4[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT5[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT6[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT7[gxy] = r7;\n}\n\n//!PASS 6\n//!DESC out-shuffle (32x12)\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, T0, T1, T2, T3, T4, T5, T6, T7\n//!OUT OUTPUT\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n#define L4(x, y) V4(O(T4, x, y))\n#define L5(x, y) V4(O(T5, x, y))\n#define L6(x, y) V4(O(T6, x, y))\n#define L7(x, y) V4(O(T7, x, y))\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 sz = GetOutputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.697e-03, 5.914e-04, -1.726e-03, 6.503e-05, 6.188e-02, 3.027e-02, -1.505e-04, -2.246e-03, -2.594e-02, -3.435e-03, 1.419e-02, 3.736e-03, -3.114e-03, 3.438e-03, -2.493e-04, 1.287e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.511e-03, 1.879e-04, -3.181e-03, -1.060e-03, -3.312e-02, -2.412e-02, -9.543e-04, 1.253e-03, -3.395e-02, -6.941e-03, 1.812e-02, 6.772e-03, 5.039e-04, -9.216e-04, -3.610e-04, 6.580e-04), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.500e-03, 8.682e-04, -1.849e-03, -4.361e-04, 2.977e-03, 1.332e-03, -3.825e-03, -2.910e-04, -2.851e-02, -3.948e-03, 1.499e-02, 4.420e-03, -1.638e-03, 1.600e-03, -6.738e-04, 1.054e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(3.409e-02, -3.648e-02, 2.142e-03, -1.557e-03, 5.560e-03, 1.082e-02, -3.611e-03, -1.401e-02, 1.925e-02, -1.292e-02, 4.328e-03, 1.886e-02, 2.040e-03, -2.514e-03, 3.282e-04, -8.875e-04), r0);\n\tr1 = MulAdd(s0_0_1, M4(3.699e-02, -3.854e-02, 1.583e-03, -1.595e-03, -3.834e-03, 9.927e-03, 1.768e-03, -1.932e-03, 3.031e-02, -1.290e-02, 2.700e-03, 2.132e-02, 7.746e-04, 2.406e-03, -6.911e-04, -1.567e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(3.069e-02, -3.803e-02, 1.302e-03, -2.624e-03, -2.071e-03, 3.086e-03, -2.306e-04, -1.111e-02, 2.763e-02, -1.109e-02, 3.346e-03, 2.061e-02, 7.293e-04, -1.554e-03, -3.310e-04, -2.085e-03), r2);\n\tr0 = MulAdd(s0_0_2, M4(-2.148e-03, 6.207e-03, -9.408e-04, 5.115e-03, -1.678e-03, -6.837e-04, -1.357e-03, 5.103e-04, 2.163e-03, 1.638e-02, -4.538e-03, -3.827e-03, 6.753e-04, 1.748e-03, 1.008e-03, 5.104e-04), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.898e-03, 6.303e-03, -5.267e-04, 2.763e-03, 3.474e-04, -2.449e-03, 9.185e-04, -4.603e-04, 1.114e-03, 2.252e-02, -6.237e-03, -6.099e-03, 1.211e-03, -1.044e-04, 9.568e-04, -4.476e-06), r1);\n\tr2 = MulAdd(s0_0_2, M4(-2.161e-03, 6.756e-03, -1.093e-04, 3.390e-03, -3.610e-04, -8.842e-04, -1.237e-04, 7.745e-04, -2.966e-03, 1.677e-02, -7.533e-03, -8.067e-03, 1.300e-03, 1.082e-03, 1.014e-03, 1.743e-04), r2);\n\tr0 = MulAdd(s0_1_0, M4(4.747e-03, 3.030e-03, 6.469e-03, 2.181e-03, -2.918e-01, 3.104e-03, 1.265e-01, 2.576e-01, 1.014e-02, -6.547e-03, 4.634e-03, 7.388e-04, -3.920e-02, -8.703e-03, -2.165e-02, 1.298e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(8.801e-03, 3.478e-03, 8.644e-03, 1.897e-03, 2.658e-01, -2.112e-02, -1.431e-01, -6.618e-02, 1.766e-02, -7.873e-03, 9.894e-03, 4.372e-03, 1.532e-02, 9.687e-04, 3.465e-03, -1.265e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(4.693e-03, 2.511e-03, 7.758e-03, 2.367e-03, -2.597e-02, -9.368e-03, -2.507e-02, 9.213e-02, 1.488e-02, -5.274e-03, 4.255e-03, 3.218e-03, -1.370e-02, -7.066e-03, -1.291e-02, 4.098e-03), r2);\n\tr0 = MulAdd(s0_1_1, M4(1.459e-01, -1.558e-01, 1.452e-01, -1.356e-01, 1.337e-02, -8.667e-02, -1.223e-02, 5.230e-02, 8.667e-02, 8.755e-02, -1.307e-01, -9.452e-02, 8.569e-02, -5.590e-02, -2.215e-02, 4.088e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.644e-01, -1.789e-01, 1.582e-01, -1.502e-01, -8.939e-03, 2.274e-02, 3.999e-03, 2.758e-02, 9.221e-02, 1.013e-01, -1.558e-01, -1.137e-01, -1.373e-02, 1.610e-02, 1.576e-03, -5.820e-03), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.440e-01, -1.601e-01, 1.380e-01, -1.344e-01, 3.752e-03, -3.343e-02, -4.864e-03, 2.622e-02, 7.985e-02, 8.849e-02, -1.374e-01, -1.028e-01, 4.142e-02, -1.715e-02, -1.064e-02, 1.156e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(-3.064e-03, -2.171e-03, -2.874e-03, -6.333e-03, -2.283e-03, -2.055e-03, -1.389e-03, -2.037e-03, -1.245e-02, -1.605e-02, 1.249e-02, -9.943e-03, 7.707e-03, -1.685e-02, 2.353e-03, -6.487e-04), r0);\n\tr1 = MulAdd(s0_1_2, M4(-4.812e-03, -3.440e-03, -3.728e-03, -3.665e-03, -2.365e-03, -4.963e-04, -1.713e-03, -4.497e-03, -1.664e-02, -2.541e-02, 1.626e-02, -7.343e-03, -2.732e-03, 6.199e-04, 3.551e-03, 3.577e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(-3.199e-03, 6.350e-03, -3.723e-03, 2.312e-03, -1.918e-03, -7.562e-04, -1.545e-03, -3.354e-03, -1.567e-02, -2.301e-02, 1.448e-02, -8.965e-03, 1.543e-03, -7.054e-03, 5.041e-03, 9.800e-04), r2);\n\tr0 = MulAdd(s0_2_0, M4(-5.981e-03, 1.824e-03, -2.684e-03, 1.536e-03, 1.582e-03, -3.403e-04, -8.318e-02, -5.868e-02, -2.262e-05, 1.683e-03, -8.329e-03, -1.881e-03, 4.400e-02, -1.256e-02, -9.988e-02, 3.651e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-3.136e-03, 1.353e-03, -3.078e-03, 2.628e-03, -1.148e-02, 2.754e-03, 2.633e-02, 1.778e-02, -1.865e-04, 1.194e-03, -1.134e-02, -2.680e-03, -6.969e-03, 4.727e-04, 2.993e-02, -1.279e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(-5.819e-03, 1.313e-03, -6.183e-03, 1.625e-03, -4.031e-03, 3.592e-03, -2.134e-02, -1.443e-02, -4.145e-04, 1.888e-04, -9.505e-03, -2.555e-03, 1.021e-02, -9.785e-03, -4.348e-02, 1.103e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(4.259e-03, -6.886e-03, 3.164e-02, -4.506e-02, -4.296e-04, -8.314e-04, 8.589e-04, -1.268e-02, -1.069e-02, -9.073e-04, 2.423e-02, -6.921e-03, -7.822e-02, 1.357e-01, 3.970e-01, -4.718e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(5.631e-03, -2.337e-03, 4.116e-02, -5.238e-02, 9.316e-04, 1.406e-03, 2.084e-03, 2.046e-04, -1.424e-02, -4.001e-03, 3.071e-02, -9.009e-03, -3.761e-02, -3.956e-02, -7.009e-02, 1.276e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(6.253e-03, -5.669e-03, 3.598e-02, -5.068e-02, 8.860e-04, 1.602e-03, 6.247e-03, 1.168e-03, -1.241e-02, -2.315e-03, 3.218e-02, -6.581e-03, -4.914e-02, 4.282e-02, 1.655e-01, -1.577e-01), r2);\n\tr0 = MulAdd(s0_2_2, M4(-3.765e-04, 3.743e-03, -2.099e-04, 9.862e-03, -9.148e-04, 6.176e-05, -3.699e-04, -1.983e-04, 5.113e-03, -1.014e-02, 8.477e-03, 2.989e-02, 8.591e-03, -1.145e-02, -1.752e-02, 6.860e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-8.577e-04, 5.427e-03, -1.783e-03, 6.942e-03, -9.948e-04, -1.185e-03, -6.024e-05, 1.229e-03, 5.456e-03, -1.147e-02, 7.869e-03, 3.577e-02, -1.497e-03, 9.489e-04, 8.887e-03, -1.971e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(3.814e-04, 4.254e-03, 1.062e-05, 1.032e-02, -3.113e-04, -6.459e-04, 3.594e-04, 7.755e-04, 6.392e-03, -8.662e-03, 6.469e-03, 3.435e-02, 3.811e-03, -4.507e-03, -2.812e-03, 3.161e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(-3.779e-03, -1.662e-03, -4.057e-03, -1.288e-03, 3.625e-02, -2.007e-03, 1.867e-02, -4.660e-03, -1.666e-02, -4.811e-04, -1.612e-03, -6.463e-04, 1.203e-02, 5.498e-03, 4.312e-04, -1.821e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-4.107e-03, -4.569e-04, -5.478e-03, -2.812e-03, -1.844e-02, 1.495e-03, -6.118e-03, 3.037e-03, -1.884e-02, -1.865e-03, -2.662e-03, -9.574e-04, 1.410e-02, 6.580e-03, -2.697e-03, -2.902e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(5.963e-04, 1.652e-04, -3.010e-03, -1.320e-03, 1.592e-02, 2.876e-03, 8.238e-03, 1.114e-03, -1.767e-02, -1.192e-03, -2.666e-03, -1.082e-03, 1.465e-02, 5.837e-03, -8.400e-04, -1.993e-03), r2);\n\tr0 = MulAdd(s1_0_1, M4(-3.304e-01, 2.056e-01, -1.158e-01, 1.653e-01, -7.042e-02, 5.674e-03, 1.218e-02, -1.823e-02, 3.021e-02, 2.177e-02, 6.605e-03, -9.809e-03, 1.777e-02, 1.727e-02, -1.420e-03, -1.443e-04), r0);\n\tr1 = MulAdd(s1_0_1, M4(-2.907e-01, 2.250e-01, -1.703e-01, 1.597e-01, 3.580e-02, 6.618e-04, -5.541e-03, 6.267e-03, 3.240e-02, 2.386e-02, 5.678e-03, -1.090e-02, 2.221e-02, 2.074e-02, -2.180e-03, -1.803e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(-2.802e-01, 2.010e-01, -1.164e-01, 1.597e-01, -6.227e-03, 1.287e-02, 4.947e-03, -3.418e-03, 2.904e-02, 3.018e-02, 9.273e-03, -7.018e-03, 2.221e-02, 2.201e-02, -4.460e-04, 3.589e-04), r2);\n\tr0 = MulAdd(s1_0_2, M4(-1.295e-02, 5.664e-02, 2.164e-02, 5.846e-02, -7.371e-03, -1.584e-02, -3.209e-03, -9.995e-04, -5.937e-04, -2.736e-02, 9.353e-03, 9.832e-04, 4.221e-03, 1.019e-02, 1.876e-03, 1.507e-04), r0);\n\tr1 = MulAdd(s1_0_2, M4(3.927e-03, 8.199e-02, 3.740e-02, 2.990e-02, 1.895e-03, -3.829e-03, 8.806e-04, 6.921e-04, 4.584e-04, -3.409e-02, 1.039e-02, 3.143e-03, 3.793e-03, 1.315e-02, 5.349e-04, 2.382e-04), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.449e-02, 1.187e-02, 4.807e-03, -2.950e-03, 5.771e-04, -1.341e-03, 6.495e-05, 3.848e-03, 1.896e-03, -2.840e-02, 1.126e-02, 6.526e-03, 2.358e-03, 9.751e-03, 1.666e-03, 1.142e-04), r2);\n\tr0 = MulAdd(s1_1_0, M4(2.666e-03, -1.197e-03, 2.989e-03, -3.271e-03, 9.058e-02, -1.186e-02, 1.003e-01, -8.145e-03, 2.496e-02, -2.269e-03, 7.959e-04, -9.503e-03, -8.158e-02, -3.281e-03, 5.066e-02, -5.122e-04), r0);\n\tr1 = MulAdd(s1_1_0, M4(9.857e-04, -2.035e-03, 1.198e-03, -4.924e-03, -1.936e-02, 1.383e-03, -2.084e-02, 8.878e-03, 2.338e-02, -4.325e-03, -2.552e-04, -1.147e-02, -9.737e-02, -4.977e-03, 5.750e-02, 3.563e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(6.241e-04, -2.586e-03, 5.209e-03, -2.553e-03, 3.472e-02, -6.043e-03, 4.259e-02, 2.052e-03, 3.064e-02, 1.286e-03, 1.101e-02, -5.988e-03, -8.928e-02, -4.577e-03, 5.427e-02, 5.541e-03), r2);\n\tr0 = MulAdd(s1_1_1, M4(2.118e-02, 3.109e-04, -1.135e-01, 2.512e-02, -1.417e-01, 3.428e-01, -4.134e-01, 2.036e-01, 3.462e-03, -5.355e-02, -2.312e-01, 2.607e-01, -1.449e-01, -1.851e-01, 9.453e-02, 1.538e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.664e-02, 6.292e-03, -1.176e-01, 1.479e-02, -6.470e-02, -1.078e-01, 2.488e-01, -8.032e-02, 1.538e-02, -6.630e-02, -2.522e-01, 2.694e-01, -1.510e-01, -2.091e-01, 1.065e-01, 1.626e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(2.192e-02, 4.157e-03, -9.987e-02, 2.154e-02, -9.988e-02, 1.052e-01, -7.007e-02, 6.018e-02, 7.186e-03, -6.072e-02, -2.300e-01, 2.388e-01, -1.316e-01, -1.850e-01, 9.010e-02, 1.431e-01), r2);\n\tr0 = MulAdd(s1_1_2, M4(4.942e-03, 7.691e-02, 4.468e-02, -2.461e-01, 5.772e-03, -3.089e-02, 1.420e-02, -9.798e-02, -3.876e-04, 1.836e-02, 7.367e-03, -3.942e-02, 4.225e-03, -1.417e-02, 1.443e-03, 9.993e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(2.653e-02, 6.902e-02, -2.980e-02, -1.716e-01, -1.822e-03, 8.089e-03, -9.302e-03, 1.186e-02, -1.328e-03, 2.470e-02, 4.557e-03, -4.140e-02, 5.023e-03, -1.455e-02, 9.257e-04, 1.322e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.572e-02, 6.861e-02, 9.865e-03, -1.831e-01, -1.183e-03, -1.312e-02, 3.772e-03, -3.408e-02, -3.062e-03, 2.459e-02, 5.624e-03, -3.942e-02, 2.456e-03, -1.606e-02, 1.240e-03, 9.964e-03), r2);\n\tr0 = MulAdd(s1_2_0, M4(-6.836e-04, -1.259e-04, -2.549e-04, -1.280e-04, 1.237e-02, -1.431e-03, 1.274e-02, 6.055e-04, -3.336e-03, 2.116e-03, -7.542e-03, -4.509e-03, 1.832e-03, 1.078e-03, -6.532e-03, -5.254e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-1.307e-03, -5.017e-04, 1.720e-04, -4.355e-04, -2.034e-03, -1.131e-03, -6.300e-03, 8.476e-04, -6.310e-03, 4.949e-03, -1.317e-02, -3.966e-03, 2.793e-03, 1.369e-03, -5.088e-03, -4.593e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.314e-03, 1.655e-05, -1.495e-03, -1.014e-03, 2.601e-03, -1.455e-03, -2.184e-03, -1.296e-03, -5.620e-03, 2.226e-03, -8.593e-03, -4.087e-03, 6.142e-04, 6.261e-04, -1.266e-02, -9.960e-03), r2);\n\tr0 = MulAdd(s1_2_1, M4(-4.121e-04, 3.787e-05, 3.410e-03, 2.902e-04, -3.492e-03, -7.707e-03, 3.315e-02, 2.410e-02, 5.214e-03, 1.203e-03, 2.359e-02, -1.336e-02, 3.675e-03, 6.741e-03, 2.360e-02, 1.348e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.881e-03, -2.280e-03, 2.066e-03, 7.365e-04, 2.555e-03, 5.978e-03, -6.517e-03, -6.212e-03, 7.953e-03, 1.421e-03, 3.307e-02, -1.487e-02, 4.702e-03, 6.501e-03, 2.622e-02, 1.699e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-3.576e-04, -1.356e-03, 2.537e-03, -6.015e-04, -1.463e-03, -3.106e-03, 2.515e-03, 2.260e-03, 6.884e-03, 3.492e-04, 2.875e-02, -1.701e-02, 2.741e-03, 3.779e-03, 2.675e-02, 1.325e-02), r2);\n\tr0 = MulAdd(s1_2_2, M4(-6.003e-04, -3.075e-03, -4.518e-04, 1.898e-03, 2.161e-03, -1.025e-02, 3.748e-04, -1.221e-02, -1.135e-03, 2.693e-03, -6.637e-04, 9.281e-03, -3.393e-04, -2.095e-03, -1.138e-03, 5.814e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(-8.051e-04, -1.436e-03, 2.050e-03, 8.383e-03, -6.332e-04, 3.351e-03, -6.266e-04, 4.520e-03, -2.392e-03, 1.214e-03, -1.212e-03, 9.146e-03, -2.030e-03, -1.773e-03, -2.697e-03, 5.254e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(-6.813e-04, -2.144e-03, -2.209e-04, 4.209e-03, -9.262e-04, -4.040e-03, -5.709e-03, -9.511e-03, -2.323e-03, 6.665e-04, -2.551e-03, 5.993e-03, -8.886e-04, -1.510e-03, -2.782e-03, 5.012e-03), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(3.601e-02, -9.627e-03, 1.258e-02, -5.232e-03, 1.183e-02, -3.138e-03, -5.479e-04, -2.618e-03, -9.579e-03, -1.769e-03, -2.486e-03, 4.215e-04, 6.614e-03, 5.947e-04, -1.697e-03, -1.574e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(4.211e-02, -9.719e-03, 8.604e-03, -6.432e-03, 1.442e-02, 6.086e-04, -2.728e-03, -3.140e-03, -8.576e-03, 2.614e-03, -1.313e-03, 2.054e-03, 9.002e-03, -3.237e-04, -1.017e-03, -1.989e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(4.415e-02, -7.267e-03, 1.278e-02, -3.724e-03, 1.159e-02, -2.020e-03, -2.255e-03, -3.076e-03, -7.631e-03, 8.603e-03, -1.620e-03, 4.833e-03, 6.074e-03, -1.289e-03, -2.075e-03, -1.715e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(-2.096e-02, 8.303e-03, 6.252e-03, -1.556e-03, -9.674e-03, 1.437e-02, 6.725e-03, 4.055e-03, 1.677e-03, -1.045e-02, 1.375e-03, -1.606e-03, 4.139e-03, 1.833e-02, 9.568e-05, -1.403e-03), r0);\n\tr1 = MulAdd(s0_0_1, M4(-2.082e-02, 6.727e-03, 1.028e-02, -2.901e-03, -8.339e-03, 1.480e-02, 9.265e-03, 2.860e-03, 1.501e-03, -9.600e-03, 9.284e-04, -3.864e-03, 5.625e-03, 2.034e-02, -6.050e-04, -1.444e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(-1.905e-02, 7.635e-03, 7.988e-03, 1.647e-03, -1.260e-02, 1.138e-02, 6.311e-03, 1.234e-03, 2.829e-03, -1.216e-02, 1.131e-03, -4.005e-03, 4.323e-03, 1.835e-02, 6.243e-05, -1.340e-03), r2);\n\tr0 = MulAdd(s0_0_2, M4(-2.155e-03, 1.861e-02, -2.840e-03, -2.138e-03, -3.259e-03, -1.223e-02, 2.886e-04, -4.481e-04, 5.824e-04, -3.093e-04, 3.013e-04, -5.172e-04, -3.528e-04, 4.129e-04, 8.044e-04, -3.605e-04), r0);\n\tr1 = MulAdd(s0_0_2, M4(-3.171e-03, 1.800e-02, -3.204e-03, -4.462e-03, -5.069e-03, -1.096e-02, -1.906e-04, 2.195e-03, 2.523e-04, -3.974e-04, -2.907e-05, -6.791e-04, -3.095e-04, 1.804e-03, 2.295e-04, -8.129e-04), r1);\n\tr2 = MulAdd(s0_0_2, M4(-3.021e-03, 1.921e-02, -3.162e-03, -4.548e-03, -5.557e-03, -1.419e-02, 1.177e-03, 2.871e-03, 4.293e-04, 1.330e-04, 6.788e-05, -4.770e-04, -1.134e-03, -2.962e-05, 2.806e-04, -9.440e-04), r2);\n\tr0 = MulAdd(s0_1_0, M4(-1.272e-02, -2.137e-03, 2.302e-02, -9.172e-03, 4.561e-02, 1.340e-02, -7.167e-02, -1.023e-02, -2.164e-01, 1.392e-01, -5.301e-02, 6.085e-02, -1.929e-01, -1.971e-02, 5.892e-02, 2.678e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.269e-02, -5.915e-03, 3.356e-02, -1.282e-02, 4.308e-02, 5.335e-03, -7.451e-02, -8.210e-03, -2.377e-01, 1.581e-01, -7.834e-02, 7.645e-02, -2.280e-01, -2.403e-02, 7.652e-02, 3.822e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-9.149e-03, -3.871e-03, 3.410e-02, -1.077e-02, 4.662e-02, 1.363e-02, -6.838e-02, -6.445e-03, -2.029e-01, 1.355e-01, -5.616e-02, 6.520e-02, -1.880e-01, -1.729e-02, 6.819e-02, 3.407e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(-8.881e-02, 1.072e-01, -1.475e-01, 1.255e-01, 1.241e-01, 1.646e-01, -1.333e-01, -1.804e-01, 1.836e-03, 3.224e-02, -3.111e-03, -2.631e-03, 2.343e-02, -2.251e-01, 1.042e-02, 4.427e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.129e-01, 1.248e-01, -1.711e-01, 1.394e-01, 1.441e-01, 1.959e-01, -1.598e-01, -2.003e-01, 5.295e-03, 3.436e-02, -2.602e-03, -9.104e-04, 3.553e-02, -2.568e-01, 6.875e-03, 5.310e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.007e-01, 1.133e-01, -1.482e-01, 1.219e-01, 1.246e-01, 1.668e-01, -1.429e-01, -1.775e-01, 1.203e-03, 3.408e-02, -7.719e-04, 2.107e-04, 3.504e-02, -2.115e-01, 1.149e-02, 4.883e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(1.852e-02, -4.186e-02, 5.872e-03, 1.569e-02, -4.249e-04, 2.541e-02, -4.772e-03, -2.642e-02, 4.960e-04, 1.157e-03, 2.225e-04, 1.583e-03, -1.009e-02, 9.275e-03, 2.691e-03, 1.385e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.205e-02, -4.407e-02, 5.401e-03, 1.649e-02, 9.760e-04, 3.074e-02, -2.070e-03, -2.888e-02, -2.433e-05, 7.946e-04, 1.771e-04, 1.622e-03, -8.630e-03, 9.732e-03, 2.723e-03, 1.485e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.839e-02, -4.562e-02, 4.380e-03, 1.530e-02, 1.938e-03, 2.629e-02, -4.530e-03, -3.362e-02, 6.656e-05, 8.831e-04, 5.212e-05, 2.030e-03, -9.828e-03, 1.170e-02, 6.730e-04, 1.198e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(-3.114e-03, 1.669e-03, -1.059e-02, -7.783e-04, -2.482e-03, -1.004e-03, 9.552e-03, 6.613e-03, -1.133e-03, 1.576e-02, -1.044e-01, 4.930e-02, 1.875e-01, 2.118e-01, -3.530e-01, -1.682e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(-3.655e-03, 9.689e-04, -1.291e-02, -1.099e-04, -1.840e-03, 2.075e-04, 9.313e-03, 4.161e-03, -2.149e-03, 1.752e-02, -1.097e-01, 4.211e-02, 1.717e-01, 3.145e-01, -2.923e-01, -1.680e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(-3.221e-03, 8.103e-04, -1.103e-02, -2.776e-04, -1.136e-03, 3.386e-04, 1.538e-02, 8.041e-03, -3.036e-03, 1.726e-02, -9.981e-02, 4.676e-02, 1.542e-01, 1.356e-01, -1.350e-01, -8.485e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(-3.444e-04, -6.412e-03, 2.114e-02, 4.022e-03, -3.980e-04, -1.048e-03, 2.143e-03, 1.300e-03, 3.321e-03, -4.734e-03, 2.318e-03, 4.007e-03, 7.029e-02, -5.678e-02, 1.353e-01, -2.064e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(5.486e-03, -9.344e-03, 3.135e-02, 5.040e-03, -4.151e-03, -3.295e-03, -2.438e-03, 2.146e-03, 3.905e-03, -4.627e-03, -1.163e-03, 5.659e-03, 8.347e-02, -6.969e-02, 1.684e-01, -2.409e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-2.841e-03, -7.616e-03, 1.667e-02, 6.461e-03, -1.250e-03, -1.449e-03, 4.128e-03, 8.657e-03, 2.699e-04, -9.904e-03, -3.969e-03, -9.241e-04, 6.980e-02, -4.358e-02, 1.421e-01, -1.968e-01), r2);\n\tr0 = MulAdd(s0_2_2, M4(7.404e-04, 7.619e-04, 7.275e-03, -3.507e-02, -7.292e-04, -2.801e-03, 2.480e-03, 4.173e-04, 5.611e-04, 8.151e-04, 3.677e-04, -5.331e-04, -1.289e-03, -1.138e-02, -8.813e-03, -1.044e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-2.497e-03, -1.424e-03, 9.049e-03, -4.129e-02, 5.626e-04, -2.660e-03, 2.505e-03, -1.250e-03, 5.376e-04, 6.109e-04, 3.067e-04, -5.089e-04, -2.080e-03, -1.211e-02, -7.689e-03, -7.789e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.018e-03, -4.948e-03, 6.913e-03, -4.476e-02, 3.225e-04, -2.095e-03, 3.134e-03, -1.288e-04, 7.877e-05, 5.963e-04, 1.550e-04, -6.841e-04, -9.472e-04, -1.577e-02, -8.263e-03, -1.249e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(-1.804e-03, 9.126e-05, -3.021e-04, -4.367e-04, -1.691e-02, 1.244e-04, 1.585e-03, -2.756e-03, 3.333e-02, -1.337e-02, 1.176e-02, -9.214e-04, 8.559e-04, -1.462e-04, -3.386e-04, 6.523e-04), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.344e-03, -2.522e-04, 1.065e-04, -2.318e-04, 4.388e-03, -7.852e-04, -1.048e-03, 6.687e-04, -9.984e-03, 7.232e-03, -2.570e-03, -7.432e-04, 5.144e-04, 2.053e-04, -2.293e-04, 1.378e-04), r1);\n\tr2 = MulAdd(s1_0_0, M4(-7.125e-04, -3.209e-04, 5.468e-06, -4.105e-04, -6.688e-03, -1.648e-03, -1.011e-03, -8.626e-04, 1.170e-02, -3.480e-03, 4.802e-03, -2.278e-04, 1.405e-03, 8.596e-04, -4.451e-05, 8.575e-04), r2);\n\tr0 = MulAdd(s1_0_1, M4(4.410e-03, -7.146e-04, -3.735e-04, 1.074e-03, -9.418e-02, 3.038e-02, -5.138e-02, 3.785e-03, 2.655e-02, 6.148e-03, 1.205e-02, -6.498e-03, -2.145e-02, 5.318e-03, 1.176e-02, -1.187e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(5.844e-03, -6.417e-04, -4.069e-04, 2.572e-04, 2.191e-02, -2.240e-02, 5.022e-03, 6.725e-03, -9.853e-03, 7.795e-04, 8.081e-04, 1.607e-03, -2.115e-02, 5.073e-03, 9.307e-03, -4.041e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(5.058e-03, 1.047e-03, -5.160e-04, 8.771e-04, -4.082e-02, 3.713e-03, -2.814e-02, 3.645e-04, 1.059e-02, 5.507e-03, 7.366e-03, -7.508e-04, -1.243e-02, 1.098e-02, 1.096e-02, 6.200e-04), r2);\n\tr0 = MulAdd(s1_0_2, M4(-2.929e-03, 4.149e-04, 9.552e-05, -1.652e-04, -1.655e-02, -6.371e-02, -1.628e-02, 3.756e-03, 6.908e-03, 2.350e-02, 4.400e-03, 1.839e-04, -4.386e-03, 1.762e-02, 1.615e-03, -4.541e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(-3.379e-03, 1.530e-03, 1.241e-05, 2.521e-05, 1.136e-03, 1.997e-02, 4.963e-03, -7.803e-03, 2.268e-03, -8.483e-03, -6.006e-05, 3.021e-03, -6.206e-03, 2.131e-02, 1.100e-03, -6.229e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(-3.886e-03, -5.569e-04, -1.694e-04, -7.200e-04, -1.886e-03, -2.582e-02, 9.924e-04, -2.821e-03, 4.011e-03, 1.083e-02, 9.006e-04, 2.605e-03, -5.920e-03, 2.032e-02, -2.002e-03, -6.733e-03), r2);\n\tr0 = MulAdd(s1_1_0, M4(7.692e-03, 3.172e-03, 2.120e-03, 4.350e-03, 2.504e-02, -6.361e-03, -2.375e-02, 3.457e-03, -2.659e-03, -3.105e-03, 1.215e-01, -5.112e-03, -5.020e-04, 4.242e-04, 1.858e-03, -5.150e-04), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.284e-02, 1.242e-03, 7.604e-03, 3.575e-03, 1.054e-03, 1.151e-03, 3.777e-03, -1.743e-03, 1.023e-02, 6.363e-03, -3.047e-02, -2.459e-03, -3.487e-04, -3.280e-04, 1.459e-03, 4.668e-05), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.775e-02, 3.349e-03, 1.028e-02, 4.017e-03, 2.105e-02, 2.137e-04, -5.125e-03, 8.084e-04, 2.298e-03, 1.237e-03, 4.241e-02, 7.741e-04, -2.670e-04, -9.550e-04, 2.680e-03, -3.606e-04), r2);\n\tr0 = MulAdd(s1_1_1, M4(-3.766e-01, 6.786e-02, 1.294e-01, -3.493e-03, -3.522e-01, -3.104e-02, -3.428e-01, -2.838e-03, -2.418e-01, -3.513e-01, 1.977e-02, -6.413e-02, -1.919e-01, -1.163e-02, -1.753e-01, -8.528e-03), r0);\n\tr1 = MulAdd(s1_1_1, M4(-4.292e-01, 6.811e-02, 1.506e-01, -3.565e-03, 1.739e-01, 9.283e-02, 1.204e-01, 5.286e-03, 1.639e-01, 1.640e-01, -1.727e-02, 2.802e-02, -2.358e-01, -1.427e-02, -2.007e-01, -4.054e-03), r1);\n\tr2 = MulAdd(s1_1_1, M4(-3.796e-01, 6.798e-02, 1.209e-01, 8.746e-03, -8.813e-02, 3.254e-02, -1.075e-01, 9.659e-03, -4.673e-02, -9.100e-02, 3.671e-03, -1.452e-02, -2.085e-01, -1.757e-02, -1.733e-01, -3.405e-03), r2);\n\tr0 = MulAdd(s1_1_2, M4(5.564e-03, -4.359e-02, -8.945e-04, -1.398e-02, 3.059e-02, 6.789e-01, 7.825e-02, 1.024e-01, 4.300e-04, -3.955e-01, -1.387e-02, -2.037e-02, 8.043e-04, 1.860e-01, -5.957e-03, 1.890e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(7.399e-03, -5.414e-02, -1.275e-03, -2.032e-02, -1.415e-02, -1.926e-01, -2.373e-02, -3.545e-02, 1.766e-03, 1.440e-01, 6.318e-03, 4.123e-03, 4.588e-03, 2.211e-01, -2.414e-03, 2.225e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(2.276e-03, -5.798e-02, -7.904e-03, -2.753e-02, -6.085e-03, 2.355e-01, 5.536e-03, 1.382e-02, 6.558e-03, -1.284e-01, 8.963e-03, -3.025e-03, 9.065e-03, 1.871e-01, 2.268e-03, 1.958e-01), r2);\n\tr0 = MulAdd(s1_2_0, M4(6.412e-04, -9.864e-04, 8.438e-03, 3.958e-03, 3.043e-04, -8.510e-04, 2.188e-02, -9.985e-03, -8.082e-02, 9.852e-03, 7.055e-02, 2.398e-02, -3.679e-04, 6.176e-05, -5.382e-04, 4.725e-04), r0);\n\tr1 = MulAdd(s1_2_0, M4(2.679e-04, -3.647e-04, 5.774e-03, 6.065e-03, 6.919e-04, 1.289e-03, -1.248e-02, 4.703e-03, 1.811e-02, -7.829e-03, -2.214e-02, -8.511e-03, -7.349e-04, 8.714e-05, -8.729e-05, -7.000e-05), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.540e-03, -1.126e-04, 1.089e-02, 6.538e-03, -3.322e-04, 6.890e-04, 4.740e-03, -1.196e-03, -2.911e-02, -1.036e-03, 2.427e-02, 8.152e-03, -5.703e-04, -6.502e-06, -8.162e-04, -4.645e-04), r2);\n\tr0 = MulAdd(s1_2_1, M4(3.386e-03, -4.614e-04, 7.324e-02, 4.822e-02, -2.134e-01, -2.361e-03, -3.141e-01, -1.082e-01, 2.554e-01, 4.457e-02, 4.678e-01, 4.732e-01, 3.906e-03, -3.506e-05, -3.454e-02, 1.245e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(9.690e-03, -1.203e-03, 9.600e-02, 5.247e-02, 4.969e-02, -2.463e-03, 3.507e-02, -4.965e-02, -6.903e-02, -2.081e-02, -2.529e-01, -2.138e-01, 3.241e-03, 3.270e-04, -4.650e-02, 1.081e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(4.262e-03, -1.477e-03, 7.939e-02, 5.286e-02, -7.246e-02, 3.186e-03, -1.308e-01, -6.617e-02, 8.324e-02, 1.009e-02, 1.008e-01, 1.270e-01, 2.860e-03, 1.211e-03, -4.326e-02, 6.946e-03), r2);\n\tr0 = MulAdd(s1_2_2, M4(2.097e-03, 1.761e-04, -7.241e-03, 1.837e-02, 4.464e-02, 4.749e-02, -1.207e-02, 5.546e-01, -5.405e-02, -5.569e-02, 1.824e-02, -3.689e-01, 3.897e-03, -3.677e-03, 4.846e-03, 2.063e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(4.678e-04, -1.188e-03, -8.507e-03, 1.413e-02, -6.132e-03, -3.451e-02, 6.709e-03, -1.909e-01, 7.947e-03, 3.385e-02, 3.481e-03, 9.862e-02, 4.723e-03, -3.920e-03, 4.684e-03, 2.957e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(5.196e-03, 2.389e-03, -2.666e-03, 2.142e-02, 1.447e-02, 7.401e-03, 1.322e-03, 1.925e-01, -2.298e-02, -1.481e-02, 2.777e-04, -1.531e-01, -9.474e-04, -7.040e-03, 2.058e-03, 1.809e-02), r2);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.390e-03, 3.136e-03, -2.520e-03, -1.317e-03, -8.642e-03, -5.066e-03, 1.986e-03, -1.365e-03, -1.834e-03, -1.604e-04, -4.089e-03, -2.805e-03, -6.304e-03, -2.488e-03, -6.600e-04, -4.111e-05), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.085e-03, 3.806e-03, -2.922e-03, -1.771e-03, -8.589e-03, -4.837e-03, 2.717e-03, -9.276e-04, -2.450e-03, -1.410e-03, -4.520e-03, -3.013e-03, -6.909e-03, -2.120e-03, -1.592e-03, -6.519e-04), r1);\n\tr2 = MulAdd(s0_0_0, M4(4.802e-03, 5.114e-03, -2.762e-03, -1.628e-03, -4.847e-03, -2.244e-03, 4.041e-03, -2.900e-04, -2.413e-04, -1.572e-03, -3.058e-03, -3.194e-03, -4.253e-03, -1.201e-03, 1.739e-04, -1.581e-04), r2);\n\tr0 = MulAdd(s0_0_1, M4(-9.679e-03, -7.257e-03, -9.767e-04, 3.285e-04, -2.205e-03, -1.769e-03, -2.704e-04, 4.002e-03, 8.264e-03, 3.359e-03, -2.500e-03, -2.645e-03, 4.434e-02, -2.081e-02, -3.532e-03, -1.212e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-9.228e-03, -7.545e-03, -1.141e-03, 2.517e-04, -3.982e-03, -3.273e-03, -2.760e-04, 3.687e-03, 1.026e-02, 4.753e-03, -3.539e-03, -3.953e-03, 6.374e-02, -2.210e-02, -3.958e-03, -1.529e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-5.163e-04, 6.059e-04, -4.400e-04, 8.033e-04, -1.734e-03, -1.631e-03, -6.499e-04, 3.308e-03, 1.003e-02, 6.496e-03, -1.465e-03, -8.760e-04, 3.294e-02, -2.383e-02, -1.435e-02, -1.035e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(4.222e-03, 4.652e-06, -3.177e-03, -2.754e-03, 4.421e-04, -4.381e-04, -6.585e-04, 2.814e-04, -4.526e-03, 2.092e-03, -4.169e-03, -3.931e-03, -9.479e-02, 1.087e-01, -1.876e-02, 4.358e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(4.086e-03, 3.723e-04, -3.754e-03, -3.807e-03, 5.295e-05, -2.242e-03, -5.421e-05, 1.620e-04, -5.601e-03, 1.059e-03, -3.413e-03, -4.105e-03, -1.138e-01, 1.284e-01, -2.401e-02, 5.273e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(4.816e-03, 3.571e-03, -3.917e-03, -3.912e-03, 1.056e-03, 7.196e-05, 2.678e-05, 7.090e-04, -4.281e-03, 2.446e-03, -2.473e-03, -2.790e-03, -8.620e-02, 9.223e-02, -2.020e-02, 3.140e-02), r2);\n\tr0 = MulAdd(s0_1_0, M4(-5.367e-02, -3.413e-02, 5.238e-02, 2.364e-02, 1.939e-01, 6.913e-02, -9.008e-02, -6.274e-02, 9.975e-03, -2.160e-03, 9.773e-03, -2.107e-03, -9.698e-03, -4.917e-04, -1.037e-02, -1.047e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(-6.598e-02, -3.501e-02, 5.855e-02, 2.649e-02, 2.391e-01, 8.715e-02, -1.179e-01, -7.447e-02, 1.192e-02, -2.690e-03, 1.008e-02, -1.543e-03, -1.224e-02, -1.738e-03, -1.304e-02, -4.371e-04), r1);\n\tr2 = MulAdd(s0_1_0, M4(-6.109e-02, -3.852e-02, 6.111e-02, 3.335e-02, 1.861e-01, 5.881e-02, -9.987e-02, -6.725e-02, 1.328e-02, -2.831e-03, 1.131e-02, -3.169e-03, -9.606e-03, -4.638e-04, -9.657e-03, 2.352e-04), r2);\n\tr0 = MulAdd(s0_1_1, M4(-9.328e-02, -5.925e-02, 1.076e-01, 9.106e-02, -2.364e-02, 1.009e-01, -6.823e-03, -2.350e-02, 6.373e-02, 6.483e-02, 6.067e-02, 4.993e-02, -3.521e-03, -3.431e-03, 5.409e-02, -1.749e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.037e-01, -7.602e-02, 1.287e-01, 1.106e-01, -2.387e-02, 1.176e-01, -4.617e-03, -2.808e-02, 7.869e-02, 7.693e-02, 7.544e-02, 5.432e-02, -3.404e-03, -4.215e-03, 6.763e-02, -2.158e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-9.397e-02, -6.383e-02, 1.120e-01, 9.407e-02, -2.486e-02, 9.551e-02, -4.901e-03, -2.364e-02, 6.886e-02, 7.398e-02, 6.420e-02, 5.396e-02, -1.156e-02, -4.890e-03, 3.967e-02, -2.145e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(-3.710e-02, -8.611e-02, 3.899e-02, 7.071e-02, 5.282e-03, -3.782e-03, -1.245e-03, -2.375e-03, -1.683e-03, 1.322e-02, -3.234e-03, 1.756e-02, -3.640e-03, -1.935e-02, -2.729e-02, 2.471e-04), r0);\n\tr1 = MulAdd(s0_1_2, M4(-4.778e-02, -9.814e-02, 4.326e-02, 8.734e-02, 4.562e-03, -5.339e-03, -2.567e-03, -5.119e-03, -1.203e-03, 1.763e-02, -5.537e-03, 2.004e-02, -2.713e-03, -2.349e-02, -3.473e-02, 1.043e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-4.561e-02, -9.068e-02, 4.538e-02, 8.171e-02, 4.575e-03, -4.758e-03, -9.302e-04, -2.220e-03, -2.663e-03, 1.280e-02, -5.619e-03, 1.532e-02, 1.831e-03, -1.471e-02, -1.702e-02, 8.659e-04), r2);\n\tr0 = MulAdd(s0_2_0, M4(-3.754e-04, 4.543e-03, 7.716e-04, -2.837e-03, -8.597e-03, -2.980e-02, -3.267e-02, -1.528e-02, 3.347e-04, -3.972e-03, 1.091e-03, -2.547e-03, -7.845e-04, -8.586e-04, -1.457e-03, -4.431e-04), r0);\n\tr1 = MulAdd(s0_2_0, M4(-4.970e-04, 4.799e-03, -3.913e-03, -4.624e-03, 1.716e-02, -1.602e-02, 2.135e-02, -1.753e-02, -2.068e-04, -3.786e-03, 1.531e-03, -3.145e-03, -3.524e-04, 1.544e-04, 1.067e-04, -3.726e-04), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.417e-03, 5.179e-03, -5.723e-03, -8.751e-03, -2.769e-03, -4.624e-02, 1.917e-02, 2.677e-03, 1.851e-03, -1.281e-03, 5.246e-03, 2.914e-05, -1.056e-03, -4.097e-04, -1.628e-03, -5.844e-04), r2);\n\tr0 = MulAdd(s0_2_1, M4(2.398e-03, -1.554e-03, -1.971e-03, 1.849e-03, -6.141e-02, 7.642e-02, -9.891e-02, 2.222e-01, -8.014e-03, -4.299e-03, 1.983e-04, 9.558e-03, 5.441e-03, 6.505e-04, 1.212e-03, 1.183e-03), r0);\n\tr1 = MulAdd(s0_2_1, M4(2.394e-03, 4.950e-04, -3.150e-03, -1.964e-03, -7.056e-02, 8.582e-02, -1.190e-01, 2.607e-01, -1.040e-02, -5.872e-03, 1.172e-03, 9.960e-03, 4.957e-03, 1.141e-05, -9.718e-04, 2.582e-04), r1);\n\tr2 = MulAdd(s0_2_1, M4(5.470e-03, 2.836e-03, -5.074e-03, -1.172e-03, -5.702e-02, 6.311e-02, -1.028e-01, 2.129e-01, -7.745e-03, -4.512e-03, 3.334e-03, 1.278e-02, 3.108e-03, -7.365e-04, 1.002e-03, 5.176e-04), r2);\n\tr0 = MulAdd(s0_2_2, M4(8.517e-03, 5.230e-03, -6.600e-03, -1.209e-02, 2.785e-03, 9.324e-03, 8.348e-03, 8.615e-03, -2.258e-03, -2.937e-03, -1.310e-03, -1.334e-03, 2.759e-03, 1.894e-04, -2.178e-03, 9.261e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(7.214e-03, 4.357e-03, -8.667e-03, -1.397e-02, 2.209e-03, 9.639e-03, 7.702e-03, 9.884e-03, -2.569e-03, -3.400e-03, -1.559e-03, 3.332e-04, 3.324e-03, 2.509e-03, -2.222e-03, 8.499e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(8.197e-03, 6.490e-03, -1.065e-02, -1.669e-02, 1.822e-03, 1.336e-02, 7.608e-03, 1.201e-02, -2.068e-03, -1.882e-03, -9.863e-04, 1.576e-03, 2.908e-03, 1.814e-03, -1.426e-03, 1.302e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(6.105e-03, 2.476e-03, -5.562e-03, 1.451e-03, -4.738e-03, -1.256e-04, 1.979e-03, -9.579e-04, 6.624e-02, -1.332e-03, 2.480e-02, -7.926e-04, -1.357e-02, 1.126e-02, -1.425e-02, 1.161e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(5.077e-03, 1.834e-03, -3.366e-03, 1.705e-03, -8.079e-03, -4.095e-04, 2.214e-03, -6.323e-04, 7.939e-02, 1.852e-03, 3.108e-02, 7.873e-05, 4.443e-04, -2.964e-03, 4.973e-03, 2.531e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(-3.397e-04, -1.059e-03, -3.492e-03, 3.324e-04, -6.678e-03, 7.966e-05, 2.958e-03, -1.053e-06, 5.656e-02, -8.513e-04, 1.724e-02, 1.123e-03, -9.212e-03, 3.054e-03, -6.309e-03, 2.099e-04), r2);\n\tr0 = MulAdd(s1_0_1, M4(-6.139e-02, -3.577e-02, 5.303e-03, -4.356e-03, -2.118e-02, -2.071e-02, -9.028e-04, 2.830e-03, 1.968e-02, 1.460e-01, -6.639e-02, -3.745e-02, 5.781e-02, 6.151e-02, -2.354e-03, -8.633e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(-7.595e-02, -4.111e-02, 7.182e-03, -4.649e-03, -2.735e-02, -2.597e-02, -5.146e-04, 3.802e-03, 3.455e-02, 1.638e-01, -7.793e-02, -2.979e-02, -5.308e-03, -1.507e-02, 2.301e-03, 3.081e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(-7.908e-02, -5.006e-02, 2.871e-03, -5.877e-03, -2.531e-02, -2.354e-02, 4.716e-05, 4.209e-03, 3.662e-02, 1.352e-01, -5.506e-02, -3.119e-02, 3.504e-02, 2.273e-02, 3.698e-03, -2.417e-03), r2);\n\tr0 = MulAdd(s1_0_2, M4(1.244e-03, -1.872e-02, 6.895e-04, -7.566e-04, 3.464e-03, -4.875e-03, 2.598e-03, 4.036e-04, -1.452e-03, -2.373e-03, -7.590e-04, -1.582e-02, 1.789e-03, 2.144e-02, 3.252e-03, 5.863e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(1.990e-03, -2.664e-02, 8.102e-05, 2.771e-03, 3.313e-03, -8.076e-03, 3.288e-03, 1.362e-03, -2.116e-03, -2.585e-03, 1.390e-03, -1.628e-02, -4.410e-04, -1.727e-02, -1.560e-03, 9.769e-04), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.916e-03, -2.374e-02, 9.122e-04, 1.794e-03, 3.561e-03, -7.204e-03, 3.237e-03, 1.483e-03, -1.694e-03, 6.659e-03, -3.666e-04, -1.022e-02, 2.872e-03, 9.149e-03, 1.746e-03, 6.988e-03), r2);\n\tr0 = MulAdd(s1_1_0, M4(2.261e-02, 4.380e-04, 3.441e-02, 1.633e-03, -1.431e-02, -9.453e-04, -1.713e-02, 3.486e-03, -7.620e-03, -3.614e-03, 2.625e-02, -4.563e-03, -1.048e-01, 1.862e-02, -3.549e-03, -7.439e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(2.606e-02, -3.924e-05, 4.383e-02, -1.069e-03, -2.161e-02, -9.058e-04, -2.312e-02, 4.419e-03, -6.438e-03, -3.476e-03, 2.570e-02, -9.194e-03, 3.587e-02, -1.938e-03, 5.158e-03, 7.497e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(2.882e-02, 2.762e-03, 3.552e-02, -1.450e-03, -2.034e-02, -1.370e-03, -2.177e-02, 3.116e-03, -7.112e-03, -3.805e-03, 2.014e-02, -8.873e-03, -3.306e-02, 7.946e-03, 8.205e-04, 1.069e-03), r2);\n\tr0 = MulAdd(s1_1_1, M4(1.470e-01, 5.376e-02, -3.268e-01, 1.597e-01, -4.911e-02, -4.477e-02, -4.857e-02, -4.701e-02, 2.007e-03, -5.264e-03, 5.361e-02, 6.958e-02, -1.017e-02, -5.058e-01, 3.369e-01, 1.430e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.663e-01, 6.842e-02, -3.815e-01, 2.026e-01, -6.909e-02, -6.472e-02, -6.611e-02, -6.567e-02, 2.583e-03, -5.929e-03, 6.616e-02, 8.787e-02, -8.922e-02, 1.651e-01, -2.383e-02, -6.717e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.392e-01, 6.695e-02, -3.440e-01, 1.528e-01, -5.931e-02, -5.701e-02, -5.919e-02, -5.872e-02, -2.488e-04, -1.086e-02, 4.968e-02, 6.093e-02, -4.875e-02, -1.665e-01, 1.528e-01, 2.691e-02), r2);\n\tr0 = MulAdd(s1_1_2, M4(-1.254e-02, -6.615e-02, 4.446e-03, -6.175e-02, 4.714e-03, -1.518e-02, 6.787e-03, -1.260e-02, -4.496e-03, -2.294e-03, -3.630e-03, 7.527e-03, -1.154e-02, 5.041e-02, -9.615e-03, 4.613e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-1.825e-02, -8.081e-02, 4.592e-03, -7.903e-02, 4.932e-03, -2.069e-02, 6.550e-03, -1.860e-02, -6.077e-03, -5.119e-04, -4.159e-03, 4.966e-03, 3.700e-03, -1.370e-02, -3.075e-03, -3.073e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-1.139e-02, -6.682e-02, 3.800e-03, -7.390e-02, 4.016e-03, -1.922e-02, 5.298e-03, -1.803e-02, -2.488e-03, 2.555e-03, -3.003e-03, 9.511e-03, -4.331e-03, 2.179e-02, -3.563e-03, 1.632e-02), r2);\n\tr0 = MulAdd(s1_2_0, M4(1.710e-03, -4.328e-05, 1.017e-02, -1.070e-03, 1.205e-04, 3.686e-03, -4.340e-03, 9.631e-04, -4.428e-04, 6.222e-05, -3.565e-03, -4.880e-04, -8.055e-03, 1.213e-03, -1.576e-02, 4.917e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.078e-03, 1.037e-03, 1.301e-02, 1.351e-03, 9.130e-04, 4.578e-03, -7.460e-03, 3.720e-04, -1.126e-03, -1.787e-04, -3.914e-03, -6.461e-04, 5.423e-03, -1.750e-03, 7.411e-03, 8.708e-06), r1);\n\tr2 = MulAdd(s1_2_0, M4(2.272e-03, 2.132e-03, 1.339e-02, 2.304e-03, 1.187e-03, 4.585e-03, -6.751e-03, 1.163e-03, -8.847e-04, 1.390e-04, -3.521e-03, 8.440e-05, -3.397e-03, -1.774e-03, -8.019e-03, 1.167e-03), r2);\n\tr0 = MulAdd(s1_2_1, M4(-1.325e-04, 4.889e-03, 4.187e-02, 1.049e-02, -1.225e-04, -1.286e-04, -2.235e-02, -2.119e-02, -2.022e-03, -7.702e-04, 9.114e-04, -3.188e-03, 8.402e-03, 1.062e-02, -3.308e-02, -2.131e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.669e-03, 5.569e-03, 4.941e-02, 1.715e-02, 7.102e-04, -9.641e-04, -2.899e-02, -2.801e-02, -1.294e-03, -1.044e-03, 7.290e-04, -2.919e-03, 1.776e-03, -3.788e-03, 1.225e-02, 1.492e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.372e-04, 6.633e-03, 5.090e-02, 2.117e-02, 1.706e-03, -1.050e-03, -2.461e-02, -2.714e-02, -2.467e-03, -1.627e-03, 5.811e-05, -3.455e-03, 5.639e-03, 6.174e-04, -1.054e-02, -7.803e-03), r2);\n\tr0 = MulAdd(s1_2_2, M4(-1.731e-03, 4.272e-03, -2.502e-03, 6.061e-03, 3.376e-03, 3.008e-03, 2.450e-03, -5.299e-03, -1.705e-03, -8.800e-04, -1.940e-03, -2.311e-04, -3.341e-03, 1.018e-02, -7.003e-03, -2.034e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.540e-04, 5.964e-03, -6.836e-04, 5.445e-03, 3.202e-03, 3.790e-03, 2.464e-03, -8.364e-03, -1.535e-03, -6.853e-04, -1.416e-03, -7.715e-04, -4.604e-04, -5.696e-03, -7.113e-05, -2.094e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(3.573e-03, 8.398e-03, 3.549e-03, 1.344e-02, 3.763e-03, 4.830e-03, 3.308e-03, -5.382e-03, -1.117e-03, -6.339e-04, -7.868e-04, 1.504e-04, -2.256e-03, 2.985e-03, -4.078e-03, -1.150e-03), r2);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.872e-02, 1.475e-02, -1.395e-02, 3.757e-03, -3.483e-03, -1.052e-03, 2.366e-03, -6.839e-05, 5.968e-03, 2.527e-04, -7.144e-05, -1.754e-03, 2.596e-02, -1.011e-03, 2.735e-03, -9.002e-04), r0);\n\tr1 = MulAdd(s0_0_0, M4(3.966e-03, -6.446e-03, 3.474e-03, 4.089e-05, 9.986e-03, 1.915e-03, 2.981e-03, -1.722e-03, 1.030e-02, 1.040e-03, -1.201e-03, -1.527e-03, 2.630e-02, -7.318e-04, 5.229e-04, -7.001e-04), r1);\n\tr2 = MulAdd(s0_0_0, M4(-6.760e-03, 5.814e-03, -4.425e-03, 9.687e-04, 5.349e-03, 2.588e-03, 5.157e-03, 1.434e-05, 1.043e-02, 2.563e-03, 5.598e-04, -5.414e-04, 1.939e-02, -2.277e-03, 4.188e-04, -5.548e-04), r2);\n\tr0 = MulAdd(s0_0_1, M4(6.880e-02, -3.952e-02, 4.138e-02, 3.983e-03, -8.178e-02, -4.797e-02, 2.538e-03, 4.970e-03, 4.041e-02, 4.095e-02, -6.943e-04, -1.310e-03, 4.156e-02, 5.324e-02, 5.970e-04, 2.634e-03), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.421e-02, 2.033e-02, -4.175e-03, -7.047e-03, 1.742e-02, 1.168e-02, -7.778e-04, -3.025e-04, 4.771e-02, 5.847e-02, 2.171e-04, -3.608e-03, 4.896e-02, 6.042e-02, 2.479e-03, 5.257e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(2.985e-02, -1.157e-02, 2.306e-02, 1.523e-03, -4.211e-02, -2.235e-02, -3.605e-03, -1.276e-03, 4.113e-02, 4.674e-02, -4.477e-04, -2.094e-03, 3.261e-02, 4.425e-02, -1.140e-03, -1.441e-04), r2);\n\tr0 = MulAdd(s0_0_2, M4(1.152e-02, 4.013e-02, 1.302e-02, -3.558e-03, -8.578e-03, 6.543e-03, 6.471e-03, 6.877e-03, 7.641e-04, 1.270e-02, -1.216e-03, -9.039e-04, 1.187e-03, 1.913e-03, -1.628e-03, 1.807e-05), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.926e-03, -1.291e-02, -4.657e-03, 5.271e-03, -2.104e-03, 3.763e-03, -2.178e-03, -8.099e-03, 7.081e-04, 1.636e-02, -9.479e-05, 3.086e-04, -3.461e-04, 4.764e-03, -1.542e-03, 4.733e-04), r1);\n\tr2 = MulAdd(s0_0_2, M4(-5.248e-04, 1.520e-02, -8.892e-04, 1.363e-03, -6.088e-03, -1.706e-03, 5.240e-04, -2.178e-03, 6.476e-04, 1.221e-02, -1.248e-03, -7.624e-04, 2.275e-05, 1.881e-03, -1.797e-03, -1.598e-05), r2);\n\tr0 = MulAdd(s0_1_0, M4(5.292e-03, 9.868e-03, -1.025e-01, -1.219e-03, -3.186e-02, 2.255e-03, -2.381e-02, -3.381e-03, -2.206e-02, 2.038e-03, -2.910e-02, -9.124e-03, 3.186e-02, 5.158e-04, 6.168e-02, 3.238e-04), r0);\n\tr1 = MulAdd(s0_1_0, M4(2.740e-02, -4.339e-03, 2.839e-02, 1.404e-03, 7.063e-03, -2.740e-03, 1.861e-02, -5.044e-03, -3.202e-02, 8.060e-04, -3.045e-02, -1.255e-02, 3.600e-02, 2.732e-03, 6.591e-02, 2.238e-04), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.764e-02, 6.638e-03, -3.696e-02, -5.961e-04, -6.344e-03, 3.511e-03, 5.177e-03, -1.201e-03, -2.340e-02, 1.976e-03, -2.376e-02, -8.091e-03, 3.054e-02, 8.868e-04, 5.261e-02, -3.250e-03), r2);\n\tr0 = MulAdd(s0_1_1, M4(7.871e-01, 5.537e-01, 3.373e-01, 7.593e-02, 5.417e-01, -1.429e-02, -2.569e-01, -2.764e-01, 5.694e-02, -3.447e-01, 1.636e-01, 1.258e-01, -1.455e-01, 9.104e-03, -4.645e-03, 1.480e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.551e-01, -9.156e-02, -1.016e-01, -2.714e-02, -5.493e-02, -2.486e-02, -1.966e-03, 1.170e-01, 7.268e-02, -4.373e-01, 1.934e-01, 1.814e-01, -1.587e-01, 2.238e-02, -1.415e-02, 1.554e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.960e-01, 2.075e-01, 1.063e-01, 5.871e-03, 2.274e-01, -1.610e-02, -1.392e-01, -7.833e-02, 4.923e-02, -3.585e-01, 1.650e-01, 1.421e-01, -1.284e-01, 2.267e-02, -4.972e-03, 1.382e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(-2.988e-02, -2.463e-01, -6.669e-02, -8.569e-02, -2.068e-02, 8.959e-02, 5.517e-03, -4.389e-03, 4.483e-03, 3.751e-02, 4.501e-03, 1.973e-02, 1.045e-03, -5.373e-02, 9.477e-04, -3.212e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(1.690e-02, 1.060e-01, 1.678e-02, 3.221e-02, 4.307e-03, -3.309e-02, -3.953e-05, 1.486e-02, 4.606e-03, 5.115e-02, 3.239e-03, 2.740e-02, 2.620e-04, -5.922e-02, 7.524e-04, -3.611e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(3.862e-03, -6.303e-02, -1.267e-02, -8.986e-03, -6.185e-03, 2.716e-02, -2.710e-03, -1.125e-02, 4.712e-03, 3.553e-02, 4.307e-03, 2.142e-02, 1.903e-03, -4.746e-02, 3.052e-03, -2.619e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(8.105e-02, -6.332e-03, -1.090e-01, -1.512e-02, -1.329e-04, 1.480e-03, 1.323e-02, -3.684e-03, -5.309e-03, -8.125e-04, -1.917e-02, -7.930e-03, 6.820e-03, 1.612e-03, 2.659e-04, -1.983e-04), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.194e-02, 6.915e-03, 2.090e-02, 4.735e-03, 8.140e-04, 6.597e-04, -6.361e-04, -3.959e-03, -5.424e-03, 1.499e-03, -2.109e-02, -6.201e-03, 6.259e-03, 5.470e-04, 7.964e-03, 3.198e-04), r1);\n\tr2 = MulAdd(s0_2_0, M4(2.597e-02, -8.688e-04, -3.862e-02, -6.532e-03, 3.690e-03, 2.067e-03, 1.418e-02, 9.826e-05, -4.585e-03, -5.256e-04, -1.431e-02, -4.500e-03, 6.958e-03, 1.868e-03, 7.985e-03, 1.918e-03), r2);\n\tr0 = MulAdd(s0_2_1, M4(-4.806e-02, -5.201e-02, -3.539e-01, -5.348e-01, -9.329e-03, -1.344e-03, 8.130e-02, 6.666e-02, 2.792e-04, 8.598e-04, -8.130e-02, -8.716e-02, -7.026e-03, 2.235e-03, -5.407e-02, -2.772e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.452e-02, 1.935e-02, 4.187e-03, 8.434e-02, 2.214e-03, 1.867e-03, -2.761e-02, -2.069e-02, -4.971e-04, 1.245e-03, -9.745e-02, -9.839e-02, -9.019e-03, 1.296e-03, -6.002e-02, -1.993e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-7.683e-03, -1.134e-02, -1.693e-01, -2.198e-01, -1.503e-03, 1.795e-03, 3.454e-02, 2.720e-02, 2.776e-03, 5.333e-03, -8.364e-02, -8.228e-02, -7.694e-03, 1.251e-03, -5.140e-02, -1.879e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(1.035e-02, 8.737e-03, 2.540e-03, -2.299e-01, 6.382e-04, -5.149e-05, -8.883e-04, 1.670e-02, 5.579e-04, 6.916e-04, 2.775e-03, -6.180e-03, 1.104e-03, -7.615e-04, 3.465e-03, -2.131e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-4.940e-04, -1.610e-03, -1.174e-03, 5.162e-02, -1.039e-03, -5.810e-05, -1.298e-03, -9.314e-03, 1.478e-03, 1.091e-03, 3.849e-03, -1.454e-02, 1.932e-03, -6.448e-04, 2.944e-03, -2.187e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(4.966e-03, 2.574e-03, 1.296e-03, -8.960e-02, 1.233e-03, 1.830e-03, 2.289e-03, 7.586e-03, -1.766e-04, -2.968e-03, 4.348e-03, -1.580e-02, 8.189e-04, 8.692e-04, 3.200e-03, -1.573e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(4.874e-02, 2.167e-03, 8.788e-04, 2.843e-03, 1.705e-04, -1.668e-03, 3.047e-03, -4.693e-04, -1.100e-02, 1.379e-03, -1.644e-03, -1.386e-03, -3.745e-02, -5.324e-03, -1.414e-02, -1.000e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(3.459e-02, -6.114e-04, -7.444e-03, 3.365e-03, -5.925e-05, -8.657e-04, -2.507e-03, 1.243e-03, -1.845e-02, -9.945e-04, -1.049e-04, 9.959e-05, -5.390e-02, -2.637e-03, -1.502e-02, 3.919e-04), r1);\n\tr2 = MulAdd(s1_0_0, M4(3.826e-02, -2.216e-03, -3.180e-04, 6.255e-04, 7.892e-03, 5.051e-03, 4.678e-03, 4.246e-03, -1.819e-02, -5.165e-03, -4.562e-03, -2.901e-03, -5.829e-02, -1.380e-02, -1.975e-02, -5.785e-03), r2);\n\tr0 = MulAdd(s1_0_1, M4(-1.699e-03, -3.553e-02, 4.193e-04, 1.194e-03, 4.732e-02, 4.434e-02, -2.548e-03, -3.917e-03, -6.567e-02, -5.653e-02, 4.392e-03, 2.441e-03, 1.210e-01, -2.607e-01, -1.065e-01, 9.481e-04), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.156e-03, -3.257e-02, 3.240e-04, 3.111e-03, 5.662e-02, 6.278e-02, -8.147e-03, -5.042e-04, -6.665e-02, -7.000e-02, 7.922e-03, 1.742e-03, 1.392e-01, -3.018e-01, -1.270e-01, 1.074e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(-9.449e-04, -3.406e-02, 3.498e-03, 5.699e-03, 2.864e-02, 3.504e-02, -1.072e-02, -2.912e-03, -3.531e-02, -3.848e-02, 1.479e-02, 7.470e-03, 1.333e-01, -2.588e-01, -9.351e-02, 1.668e-03), r2);\n\tr0 = MulAdd(s1_0_2, M4(-1.217e-05, 2.461e-03, -3.250e-04, -1.538e-03, 1.815e-04, 8.125e-03, -2.023e-03, 3.182e-03, 4.175e-03, -9.021e-03, 1.291e-04, -5.042e-04, -6.082e-03, 1.310e-02, 2.882e-04, 1.106e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(3.901e-04, 3.119e-03, -3.314e-04, -1.466e-03, 1.472e-03, 1.311e-02, -1.697e-03, 3.010e-03, 4.813e-03, -6.956e-03, 1.016e-03, -1.687e-03, -8.845e-03, 9.427e-03, 1.090e-03, 1.128e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(2.563e-04, 2.362e-03, 6.401e-05, -1.402e-03, -1.446e-03, 2.549e-03, -1.893e-03, -1.229e-03, 4.646e-03, -2.016e-03, -1.733e-03, -9.980e-04, -7.890e-03, 1.909e-02, 1.238e-03, 1.461e-02), r2);\n\tr0 = MulAdd(s1_1_0, M4(1.587e-01, -5.136e-03, 1.802e-01, 8.159e-03, -3.587e-02, 5.932e-04, -4.230e-02, 2.093e-03, -6.394e-03, 2.622e-03, 3.530e-03, 5.511e-03, 4.487e-03, -2.836e-03, 8.171e-03, 2.046e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.870e-01, -4.317e-03, 1.969e-01, 8.687e-03, -3.235e-02, -1.311e-03, -4.039e-02, 6.015e-04, -1.540e-02, 3.913e-03, -1.351e-02, 8.762e-03, 2.979e-03, -1.499e-03, 9.669e-03, 7.211e-04), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.694e-01, 1.810e-03, 1.727e-01, 7.951e-03, -2.896e-02, 1.497e-04, -3.370e-02, 4.361e-03, -1.090e-02, 1.647e-04, -7.995e-03, 3.745e-04, 4.911e-03, 1.879e-03, -2.793e-04, -2.087e-03), r2);\n\tr0 = MulAdd(s1_1_1, M4(5.824e-03, -2.042e-01, 1.359e-03, -2.017e-01, 7.154e-02, 9.793e-02, 1.909e-01, -3.643e-01, 8.086e-02, 6.821e-02, -1.292e-01, -1.739e-01, -6.178e-03, 6.743e-03, 1.519e-01, 1.394e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.123e-03, -2.251e-01, 4.098e-03, -2.251e-01, 6.556e-02, 1.255e-01, 2.262e-01, -4.318e-01, 1.094e-01, 8.228e-02, -1.357e-01, -2.261e-01, -4.264e-03, 7.934e-03, 1.792e-01, 1.664e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-1.121e-03, -1.987e-01, -4.227e-03, -2.078e-01, 7.446e-02, 1.121e-01, 1.723e-01, -3.741e-01, 8.507e-02, 6.373e-02, -1.013e-01, -1.725e-01, -1.198e-02, -1.985e-03, 1.543e-01, 1.297e-01), r2);\n\tr0 = MulAdd(s1_1_2, M4(-2.974e-04, -1.464e-03, -7.645e-04, 4.475e-03, -1.734e-03, 2.942e-02, -2.608e-03, 3.185e-02, 5.977e-03, -1.706e-03, 8.609e-03, 3.825e-03, -2.589e-03, 2.349e-04, -3.111e-03, 2.973e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-6.005e-04, -2.353e-03, -2.874e-04, 5.040e-03, -4.077e-03, 3.552e-02, -6.078e-03, 4.663e-02, 7.483e-03, 1.120e-03, 5.326e-03, 8.420e-03, -2.263e-03, -6.009e-04, -1.863e-03, 3.650e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-9.596e-04, -1.778e-03, -1.147e-03, 3.598e-03, -7.879e-04, 2.899e-02, -5.166e-03, 3.078e-02, 4.492e-03, 2.220e-03, 6.584e-03, 1.413e-02, 3.072e-04, 2.546e-03, -3.268e-03, 3.430e-02), r2);\n\tr0 = MulAdd(s1_2_0, M4(2.878e-03, 1.898e-03, 4.065e-02, -1.847e-03, 1.693e-03, -4.498e-04, -1.131e-03, 1.230e-03, 1.595e-03, 1.425e-03, -1.005e-02, 5.106e-03, 6.305e-04, -3.131e-05, 1.869e-03, 5.726e-04), r0);\n\tr1 = MulAdd(s1_2_0, M4(-1.184e-03, 1.201e-03, 4.603e-02, 5.768e-04, 3.054e-03, -7.539e-04, 8.083e-05, 1.392e-03, 2.176e-03, 1.226e-03, -5.594e-03, 4.762e-03, 4.672e-04, 1.953e-04, 1.052e-03, -9.111e-05), r1);\n\tr2 = MulAdd(s1_2_0, M4(-3.329e-03, -1.161e-03, 4.418e-02, 1.826e-03, 4.615e-03, 1.366e-03, 2.970e-03, 2.395e-03, 9.813e-04, 4.046e-04, -1.118e-02, 1.185e-03, 1.191e-03, 5.208e-04, 2.330e-03, 9.582e-04), r2);\n\tr0 = MulAdd(s1_2_1, M4(-5.091e-03, 2.182e-04, -4.343e-03, -2.862e-02, -2.090e-03, -2.290e-03, 1.018e-02, 2.099e-02, 5.113e-03, 1.976e-03, 2.887e-02, 1.825e-02, 8.999e-04, 4.155e-04, -2.432e-03, -1.608e-04), r0);\n\tr1 = MulAdd(s1_2_1, M4(-4.479e-03, 1.197e-03, -6.049e-03, -2.524e-02, -2.226e-03, -2.809e-03, 9.177e-03, 2.136e-02, 6.027e-03, -1.566e-03, 3.362e-02, 2.020e-02, 4.644e-04, 1.977e-04, -2.374e-03, 2.080e-04), r1);\n\tr2 = MulAdd(s1_2_1, M4(8.125e-06, 2.038e-03, -1.450e-03, -1.881e-02, -8.854e-04, -1.772e-03, 1.696e-02, 2.726e-02, 1.123e-03, -7.479e-04, 2.213e-02, 1.613e-02, 1.159e-03, 5.461e-04, -2.702e-03, -7.407e-04), r2);\n\tr0 = MulAdd(s1_2_2, M4(5.669e-04, 1.058e-03, 8.735e-04, 3.667e-05, 1.776e-03, -2.475e-03, -5.694e-04, 1.056e-02, 6.834e-04, 5.507e-03, 5.222e-03, 4.878e-03, 1.872e-04, -6.718e-05, -2.278e-04, -1.299e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(6.415e-04, 1.641e-03, 5.681e-04, -1.818e-04, 1.338e-03, -4.920e-03, -2.282e-03, 7.011e-03, 5.367e-04, 5.364e-03, 4.100e-03, 9.585e-03, 5.595e-04, 4.261e-04, -2.484e-04, -1.249e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(7.561e-04, 1.103e-03, 7.259e-04, 2.146e-04, 1.867e-03, -2.790e-03, 3.011e-04, 1.138e-02, -1.241e-03, 1.061e-03, 5.605e-04, -3.404e-04, 1.731e-04, 3.876e-04, -1.080e-04, -8.924e-04), r2);\n\tfloat2 opt = float2(GetOutputPt()), fpos = (float2(gxy) + 0.5) * opt;\n\tOUTPUT[gxy + int2(0, 0)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(0.0, 0.0) * opt, 0).rgb + MF3(r0.x, r1.x, r2.x)), 1.0);\n\tOUTPUT[gxy + int2(1, 0)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(1.0, 0.0) * opt, 0).rgb + MF3(r0.y, r1.y, r2.y)), 1.0);\n\tOUTPUT[gxy + int2(0, 1)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(0.0, 1.0) * opt, 0).rgb + MF3(r0.z, r1.z, r2.z)), 1.0);\n\tOUTPUT[gxy + int2(1, 1)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(1.0, 1.0) * opt, 0).rgb + MF3(r0.w, r1.w, r2.w)), 1.0);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy2/CuNNy-8x32-NVL.hlsl",
    "content": "// CuNNy 8x32 - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-08x32\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, x, y) t.SampleLevel(SP, pos + float2(x, y) * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T5;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T6;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T7;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T8;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T9;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T10;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T11;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T12;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T13;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T14;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T15;\n\n//!PASS 1\n//!DESC in (3x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT T0, T1, T2, T3, T4, T5, T6, T7\n\n#define L0(x, y) V3(O(INPUT, x, y).rgb)\n#define V3 MF3\n#define M3x4 MF3x4\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV3 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\tr0 = V4(4.228e-02, 2.436e-02, 8.144e-02, 1.364e-02);\n\tr1 = V4(-3.312e-05, -2.283e-03, 1.218e-01, 2.067e-03);\n\tr2 = V4(-6.644e-04, -5.433e-05, -3.844e-03, -3.719e-02);\n\tr3 = V4(4.500e-03, -2.612e-02, -3.799e-04, -2.988e-03);\n\tr4 = V4(-1.028e-02, 2.184e-01, 5.041e-03, -8.110e-04);\n\tr5 = V4(-4.077e-04, 6.264e-04, 1.705e-02, 3.807e-02);\n\tr6 = V4(4.150e-01, 1.974e-04, -4.348e-02, 1.205e-03);\n\tr7 = V4(1.059e-02, 9.996e-02, 1.035e-01, 7.646e-03);\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M3x4(-2.364e-02, 1.222e-01, 4.279e-02, -1.069e-02, 1.546e-02, -4.380e-02, -3.709e-02, -1.972e-02, 1.391e-02, -8.275e-02, 3.189e-03, 4.060e-03), r0);\n\tr1 = MulAdd(s0_0_0, M3x4(1.278e-01, -3.766e-03, -4.223e-03, 4.670e-02, 5.836e-02, 1.249e-02, -1.982e-02, -4.012e-02, 4.032e-02, -1.015e-02, 1.298e-02, -1.739e-02), r1);\n\tr2 = MulAdd(s0_0_0, M3x4(4.413e-03, 5.850e-02, -1.086e-01, 1.508e-02, -6.049e-03, -3.644e-02, -2.243e-01, -4.801e-02, -1.337e-03, -1.898e-02, -6.274e-02, -1.895e-02), r2);\n\tr3 = MulAdd(s0_0_0, M3x4(-5.605e-01, -8.646e-02, -9.342e-03, 7.561e-02, 5.144e-01, -1.714e-01, -1.471e-02, 4.809e-02, 4.139e-02, -3.944e-02, 2.320e-02, -1.372e-01), r3);\n\tr4 = MulAdd(s0_0_0, M3x4(-8.898e-03, -1.212e-02, 2.936e-04, 1.155e-01, 1.023e-01, 2.428e-02, -5.976e-03, -2.983e-02, 3.309e-02, 1.370e-02, 6.184e-03, -8.522e-02), r4);\n\tr5 = MulAdd(s0_0_0, M3x4(-1.545e-01, -2.518e-02, -1.740e-01, -1.431e-02, -1.743e-01, -7.876e-03, -3.262e-01, 3.375e-02, -3.997e-02, 4.983e-02, -7.002e-02, -1.464e-02), r5);\n\tr6 = MulAdd(s0_0_0, M3x4(-3.534e-02, -2.116e-02, -1.703e-02, -8.982e-03, -2.336e-02, 1.281e-02, -2.204e-02, -6.085e-03, 2.324e-02, 1.264e-02, 1.853e-02, 3.650e-02), r6);\n\tr7 = MulAdd(s0_0_0, M3x4(-2.829e-03, -5.924e-02, 6.368e-02, -1.637e-02, 9.027e-03, 2.305e-02, -4.958e-02, 1.210e-02, -1.971e-02, 1.147e-02, -4.603e-03, 1.558e-02), r7);\n\tr0 = MulAdd(s0_0_1, M3x4(2.629e-02, -5.346e-02, 5.287e-02, -2.482e-01, -2.297e-02, 1.975e-03, -1.079e-01, -5.254e-01, -4.186e-02, 6.408e-02, 3.101e-02, -1.860e-01), r0);\n\tr1 = MulAdd(s0_0_1, M3x4(9.649e-02, -7.592e-02, -9.982e-02, -7.973e-02, -2.205e-02, 8.423e-02, 5.998e-02, 6.313e-02, 7.415e-02, -3.957e-03, 2.768e-03, 1.296e-02), r1);\n\tr2 = MulAdd(s0_0_1, M3x4(-1.880e-01, -1.342e-01, -1.714e-01, -1.742e-02, -3.254e-01, 1.334e-02, -3.654e-01, 3.639e-02, -2.492e-01, 1.217e-01, -1.231e-01, -1.891e-02), r2);\n\tr3 = MulAdd(s0_0_1, M3x4(1.348e-01, 8.771e-02, 1.456e-02, 2.111e-02, -1.742e-01, 1.221e-01, -1.272e-02, 1.033e-01, 3.867e-02, 1.964e-03, -2.915e-03, -1.215e-01), r3);\n\tr4 = MulAdd(s0_0_1, M3x4(4.583e-02, -3.864e-03, 1.869e-03, -1.154e-01, -6.235e-02, -2.129e-02, -2.822e-04, 9.224e-04, -4.286e-02, 1.206e-02, -5.123e-03, 1.111e-01), r4);\n\tr5 = MulAdd(s0_0_1, M3x4(-3.065e-02, -1.636e-01, 1.528e-01, 1.458e-03, -2.718e-02, 2.223e-01, 3.826e-01, 6.918e-02, -1.568e-02, -8.038e-02, 5.381e-02, -1.997e-02), r5);\n\tr6 = MulAdd(s0_0_1, M3x4(8.911e-03, -2.870e-01, 1.048e-01, 7.024e-02, 4.531e-02, 3.575e-01, 1.410e-01, 9.270e-02, -4.259e-02, -6.941e-02, 6.165e-02, 1.313e-02), r6);\n\tr7 = MulAdd(s0_0_1, M3x4(-3.108e-02, -1.448e-02, 2.518e-02, 3.737e-02, -1.404e-01, -2.424e-02, -7.967e-02, -1.652e-02, -9.742e-02, 5.375e-03, 3.706e-02, -2.628e-02), r7);\n\tr0 = MulAdd(s0_0_2, M3x4(-1.643e-02, 5.105e-03, 6.213e-02, -6.970e-03, 3.472e-03, 2.933e-02, -8.227e-04, -7.316e-03, 2.559e-02, -4.973e-02, 6.703e-03, -3.864e-04), r0);\n\tr1 = MulAdd(s0_0_2, M3x4(6.707e-03, 4.095e-02, -2.588e-02, 2.303e-02, -1.095e-02, -3.880e-02, 7.350e-03, -2.587e-02, -4.793e-02, -3.075e-04, 1.697e-02, -9.625e-04), r1);\n\tr2 = MulAdd(s0_0_2, M3x4(-1.951e-03, -2.935e-03, 2.857e-02, -1.457e-01, 3.321e-02, -6.728e-03, 1.021e-03, -3.668e-01, -3.505e-02, 7.695e-03, -8.497e-03, -9.572e-02), r2);\n\tr3 = MulAdd(s0_0_2, M3x4(5.845e-02, -2.446e-02, -2.224e-02, -1.519e-02, -6.694e-02, 7.233e-02, 1.766e-02, 1.705e-02, 3.797e-03, 3.366e-02, 3.911e-03, 5.902e-03), r3);\n\tr4 = MulAdd(s0_0_2, M3x4(8.064e-03, -7.275e-03, 7.586e-04, 1.479e-02, 5.622e-03, 1.271e-02, -2.923e-03, -1.493e-02, 2.120e-02, 3.381e-03, 1.778e-03, 1.906e-03), r4);\n\tr5 = MulAdd(s0_0_2, M3x4(2.031e-02, -1.790e-01, 8.164e-04, -3.451e-02, 3.238e-02, 1.617e-01, -2.804e-02, -5.072e-02, -3.480e-03, 1.199e-02, 5.413e-03, 6.429e-02), r5);\n\tr6 = MulAdd(s0_0_2, M3x4(-3.137e-02, -1.479e-01, -6.866e-02, -7.618e-03, 9.658e-03, 2.202e-01, -8.777e-02, 7.931e-03, 2.244e-02, -7.768e-02, -2.153e-02, 2.186e-03), r6);\n\tr7 = MulAdd(s0_0_2, M3x4(4.172e-02, -3.355e-02, -2.132e-02, -5.495e-03, -1.990e-02, 3.287e-02, 1.299e-02, -2.111e-03, -1.059e-02, 1.540e-03, 2.148e-02, 1.470e-02), r7);\n\tr0 = MulAdd(s0_1_0, M3x4(-3.524e-02, -1.067e-01, 3.897e-03, 3.111e-03, 9.674e-02, 6.719e-05, -2.430e-04, 3.576e-02, -2.180e-02, 1.139e-01, -3.664e-02, -9.573e-03), r0);\n\tr1 = MulAdd(s0_1_0, M3x4(-8.332e-02, -4.848e-02, -9.434e-02, 2.389e-02, -4.145e-02, 6.080e-02, 4.651e-02, 1.460e-01, -9.148e-02, -1.030e-02, -1.016e-02, 2.288e-02), r1);\n\tr2 = MulAdd(s0_1_0, M3x4(-6.419e-03, 4.658e-01, 1.255e-01, -1.089e-02, 1.113e-02, 5.823e-02, 2.582e-01, 3.651e-02, -1.034e-02, -5.423e-01, 4.918e-02, 2.959e-02), r2);\n\tr3 = MulAdd(s0_1_0, M3x4(-3.604e-01, -1.255e-01, -1.573e-01, -1.624e-01, 4.183e-01, -2.498e-01, -1.720e-01, -4.733e-01, -5.792e-02, -3.433e-02, 3.271e-01, 6.660e-01), r3);\n\tr4 = MulAdd(s0_1_0, M3x4(-2.861e-01, -1.099e-01, -3.308e-03, 1.265e-01, -2.380e-01, -1.818e-01, -1.005e-02, -6.810e-02, -3.590e-01, -1.870e-01, 1.111e-02, -5.906e-02), r4);\n\tr5 = MulAdd(s0_1_0, M3x4(2.640e-01, 1.421e-01, -4.846e-04, 7.837e-02, 2.419e-01, -1.793e-01, -2.837e-02, -8.082e-02, 9.634e-02, 3.409e-02, 3.270e-03, -2.802e-02), r5);\n\tr6 = MulAdd(s0_1_0, M3x4(-2.557e-02, 1.594e-02, -2.441e-02, 9.119e-02, 9.839e-02, -7.472e-03, 1.083e-02, 1.292e-01, -2.301e-02, -1.306e-02, -1.885e-03, 2.867e-02), r6);\n\tr7 = MulAdd(s0_1_0, M3x4(2.375e-02, -5.909e-02, 1.441e-02, -1.287e-02, -4.889e-02, -8.610e-02, -1.117e-01, -1.520e-02, 8.863e-03, 4.416e-03, 3.651e-02, -2.084e-02), r7);\n\tr0 = MulAdd(s0_1_1, M3x4(1.655e-01, -4.419e-01, -1.067e-01, 2.624e-01, 4.985e-01, 4.854e-01, 1.618e-01, 5.031e-01, 1.175e-03, -4.696e-02, 9.514e-02, 1.977e-01), r0);\n\tr1 = MulAdd(s0_1_1, M3x4(3.807e-02, 6.816e-01, 4.658e-01, 7.212e-02, -1.223e-01, -7.371e-01, -2.638e-01, -1.678e-01, 4.036e-03, 5.361e-02, 1.523e-03, -4.280e-02), r1);\n\tr2 = MulAdd(s0_1_1, M3x4(1.317e-02, -1.637e-01, 1.678e-01, -9.284e-03, -2.980e-02, 2.089e-03, 3.271e-01, -3.741e-02, 2.811e-02, 1.625e-01, 1.288e-01, 4.850e-03), r2);\n\tr3 = MulAdd(s0_1_1, M3x4(4.148e-02, 9.753e-02, -1.675e-01, 2.489e-02, -8.891e-02, 1.686e-01, -1.213e-02, -5.134e-02, 4.756e-02, 5.695e-02, 1.804e-01, 1.955e-02), r3);\n\tr4 = MulAdd(s0_1_1, M3x4(1.238e-02, 3.956e-02, -5.807e-03, -7.489e-01, 2.251e-01, 1.913e-02, 2.391e-02, 1.205e-02, 1.137e-01, -3.213e-02, -1.413e-02, 7.444e-01), r4);\n\tr5 = MulAdd(s0_1_1, M3x4(-9.462e-02, 1.796e-01, 2.167e-02, -2.090e-01, -3.401e-02, -2.311e-01, -8.513e-03, 1.520e-02, -2.467e-02, 9.105e-02, 1.600e-02, 7.642e-03), r5);\n\tr6 = MulAdd(s0_1_1, M3x4(-8.473e-02, -2.231e-01, 1.381e-01, 8.718e-02, -2.942e-01, 1.850e-01, 1.102e-01, 4.895e-02, -3.799e-02, 3.264e-02, 5.681e-02, -2.478e-02), r6);\n\tr7 = MulAdd(s0_1_1, M3x4(8.494e-02, 5.359e-02, -3.227e-02, 2.511e-02, 2.193e-01, 3.020e-01, 2.962e-01, 2.370e-01, 2.007e-01, 4.832e-02, -1.055e-01, 1.668e-02), r7);\n\tr0 = MulAdd(s0_1_2, M3x4(1.101e-02, -3.352e-02, -1.042e-01, 7.477e-03, -5.193e-02, 1.629e-02, -7.832e-02, 1.525e-02, -2.325e-03, 1.347e-02, 9.068e-03, -5.782e-03), r0);\n\tr1 = MulAdd(s0_1_2, M3x4(-1.557e-02, -3.078e-02, -1.044e-01, -3.377e-02, 1.047e-01, 4.424e-02, 4.787e-02, 9.401e-02, -2.982e-03, -1.547e-02, -1.559e-02, 1.921e-02), r1);\n\tr2 = MulAdd(s0_1_2, M3x4(1.782e-01, -7.192e-02, -3.454e-02, 1.528e-01, 3.191e-01, 1.493e-02, 1.740e-03, 3.679e-01, 2.677e-01, 6.365e-02, 7.039e-03, 8.670e-02), r2);\n\tr3 = MulAdd(s0_1_2, M3x4(4.515e-02, 4.318e-02, -4.089e-02, 3.220e-02, -3.333e-02, 5.892e-02, -2.373e-02, 2.887e-02, -1.509e-02, -1.487e-02, 6.690e-02, -6.960e-02), r3);\n\tr4 = MulAdd(s0_1_2, M3x4(-8.393e-03, -1.396e-02, 3.346e-03, -6.998e-03, -6.310e-02, -1.279e-02, -3.118e-03, -3.351e-03, -7.484e-02, 3.469e-02, 1.264e-03, 7.037e-03), r4);\n\tr5 = MulAdd(s0_1_2, M3x4(-1.620e-02, -2.402e-01, 1.728e-02, 1.467e-01, -1.073e-02, 3.282e-01, 6.685e-03, -1.317e-01, 5.098e-03, -1.274e-01, -3.751e-03, 1.743e-02), r5);\n\tr6 = MulAdd(s0_1_2, M3x4(3.747e-02, 6.309e-01, -1.180e-01, -1.353e-01, 4.984e-03, -7.284e-01, -1.499e-01, -1.150e-01, -4.343e-02, 1.061e-01, -2.025e-01, -1.948e-02), r6);\n\tr7 = MulAdd(s0_1_2, M3x4(5.869e-03, -3.263e-03, -4.628e-02, 5.987e-02, -1.715e-02, -2.976e-03, 1.834e-02, 1.093e-01, 6.783e-03, -1.066e-02, 3.241e-03, 3.055e-02), r7);\n\tr0 = MulAdd(s0_2_0, M3x4(1.789e-02, 1.673e-01, 2.388e-02, -1.458e-04, -5.472e-02, -9.205e-02, -4.789e-02, -1.172e-02, 2.919e-02, -8.169e-02, -8.492e-03, 9.980e-03), r0);\n\tr1 = MulAdd(s0_2_0, M3x4(-7.889e-03, -5.325e-02, -1.215e-02, 1.070e-01, -2.680e-02, 6.284e-02, 2.984e-02, -5.434e-02, 1.239e-03, -1.100e-02, 1.299e-02, 5.070e-03), r1);\n\tr2 = MulAdd(s0_2_0, M3x4(9.636e-03, 1.852e-02, -8.388e-03, 3.759e-03, -1.180e-02, -3.356e-02, -4.742e-03, -7.863e-03, 1.212e-03, 1.938e-02, 3.751e-03, -9.989e-03), r2);\n\tr3 = MulAdd(s0_2_0, M3x4(1.101e-01, 3.640e-02, -8.078e-02, 3.905e-02, -1.587e-01, 3.288e-02, -2.090e-01, -1.489e-01, 4.796e-02, -1.087e-02, 2.959e-01, 1.059e-01), r3);\n\tr4 = MulAdd(s0_2_0, M3x4(-4.082e-02, 1.817e-03, -2.815e-01, 4.137e-02, 4.754e-02, -1.162e-02, -4.816e-01, 4.458e-02, 5.652e-02, 2.415e-02, -2.464e-01, -8.661e-02), r4);\n\tr5 = MulAdd(s0_2_0, M3x4(1.971e-02, 1.464e-03, -2.402e-03, -5.190e-02, -6.303e-02, 2.757e-02, 6.037e-03, 3.338e-02, 6.760e-03, -3.277e-02, 4.002e-03, 3.297e-02), r5);\n\tr6 = MulAdd(s0_2_0, M3x4(1.478e-02, -8.172e-03, -2.337e-02, 3.819e-02, -7.339e-02, 4.703e-03, -7.164e-03, 5.819e-02, 2.708e-02, 3.852e-03, 2.454e-03, -2.224e-02), r6);\n\tr7 = MulAdd(s0_2_0, M3x4(-2.689e-02, 1.335e-02, 3.417e-02, 1.592e-02, 6.616e-02, -1.053e-03, -2.713e-02, 4.667e-02, 3.708e-02, -5.124e-03, -1.872e-02, -1.208e-02), r7);\n\tr0 = MulAdd(s0_2_1, M3x4(-4.978e-02, -6.394e-02, -3.093e-02, 4.249e-03, 3.058e-02, 3.841e-02, 6.265e-02, 2.228e-02, 2.020e-03, 3.445e-02, 3.391e-02, -1.550e-02), r0);\n\tr1 = MulAdd(s0_2_1, M3x4(-7.100e-02, -5.773e-02, -1.207e-01, -8.715e-02, 1.410e-02, 7.152e-02, 4.241e-02, 4.360e-02, -9.994e-03, -1.367e-02, -1.230e-02, 1.790e-02), r1);\n\tr2 = MulAdd(s0_2_1, M3x4(1.128e-03, -1.495e-01, -3.146e-03, -2.842e-02, 3.152e-03, 5.751e-04, 1.241e-02, 1.227e-02, 1.776e-03, 1.549e-01, 7.524e-03, 1.295e-02), r2);\n\tr3 = MulAdd(s0_2_1, M3x4(4.071e-02, -4.312e-02, 4.060e-01, 7.525e-03, -1.048e-02, -4.768e-02, 4.100e-01, 8.448e-02, -2.704e-02, 9.019e-03, -8.223e-01, -9.112e-02), r3);\n\tr4 = MulAdd(s0_2_1, M3x4(1.053e-01, -1.090e-02, 2.939e-01, 1.707e-01, 1.179e-02, 8.076e-03, 4.756e-01, -2.426e-02, 8.374e-03, 3.395e-03, 2.513e-01, -1.480e-01), r4);\n\tr5 = MulAdd(s0_2_1, M3x4(2.802e-02, 2.584e-01, -7.424e-03, 7.258e-02, 5.627e-02, -2.643e-01, 2.430e-03, 1.185e-01, -1.611e-02, 2.703e-02, -4.678e-03, -8.958e-02), r5);\n\tr6 = MulAdd(s0_2_1, M3x4(-3.184e-02, -2.986e-02, -4.817e-02, -1.141e-01, 3.713e-02, 2.765e-02, -2.759e-03, -1.317e-01, 1.635e-02, 5.409e-03, 3.638e-02, -2.062e-02), r6);\n\tr7 = MulAdd(s0_2_1, M3x4(-6.933e-02, 2.940e-02, 1.566e-02, -1.028e-01, -6.314e-02, -1.063e-01, -4.648e-02, -2.510e-01, -9.510e-02, 1.789e-02, -4.654e-02, -4.283e-02), r7);\n\tr0 = MulAdd(s0_2_2, M3x4(4.715e-03, -3.314e-03, 1.404e-02, -6.259e-03, -8.409e-03, 3.762e-02, 3.994e-03, -1.159e-02, -6.630e-04, -4.066e-02, 1.195e-02, 8.253e-03), r0);\n\tr1 = MulAdd(s0_2_2, M3x4(-3.081e-02, -3.996e-04, -3.183e-02, 1.505e-02, 5.505e-02, 1.839e-03, 6.654e-02, -2.435e-02, 1.657e-02, 3.032e-04, 7.538e-03, -1.885e-03), r1);\n\tr2 = MulAdd(s0_2_2, M3x4(-8.031e-03, -1.829e-02, 3.700e-03, 2.626e-02, 1.029e-02, -1.341e-02, -6.696e-05, -6.993e-04, -4.765e-03, 3.012e-02, -1.574e-03, -6.877e-03), r2);\n\tr3 = MulAdd(s0_2_2, M3x4(1.022e-03, 1.417e-02, 5.541e-02, -7.079e-03, 1.717e-02, -4.107e-03, 1.773e-02, 2.852e-02, -1.317e-02, -3.393e-03, -7.153e-02, -1.923e-02), r3);\n\tr4 = MulAdd(s0_2_2, M3x4(-1.094e-02, -8.219e-03, -6.168e-03, 4.123e-02, -3.824e-02, 1.415e-02, 8.627e-03, 8.862e-03, 6.035e-02, 6.804e-05, -3.765e-03, -4.776e-02), r4);\n\tr5 = MulAdd(s0_2_2, M3x4(1.071e-03, 2.069e-02, -6.498e-03, 2.872e-02, 6.967e-04, -4.711e-02, 8.413e-03, -5.838e-04, -4.181e-03, 2.272e-02, -2.634e-04, -1.279e-02), r5);\n\tr6 = MulAdd(s0_2_2, M3x4(3.596e-02, 7.021e-02, 2.150e-02, -2.881e-02, -2.569e-02, -7.326e-02, 1.658e-03, -8.414e-02, 2.387e-03, -5.153e-04, 4.066e-02, 6.740e-03), r6);\n\tr7 = MulAdd(s0_2_2, M3x4(-1.468e-02, 7.710e-02, 1.904e-02, -1.101e-03, 2.584e-02, -5.481e-02, -4.378e-03, -1.001e-01, -1.631e-02, -3.619e-03, -2.151e-02, 2.356e-02), r7);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT4[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT5[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT6[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT7[gxy] = r7;\n}\n\n//!PASS 2\n//!DESC conv1 (32x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2, T3, T4, T5, T6, T7\n//!OUT T8, T9, T10, T11, T12, T13, T14, T15\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n#define L4(x, y) V4(O(T4, x, y))\n#define L5(x, y) V4(O(T5, x, y))\n#define L6(x, y) V4(O(T6, x, y))\n#define L7(x, y) V4(O(T7, x, y))\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.489e-01, 6.692e-02, -5.333e-03, 8.727e-02, -5.878e-02, 1.850e-01, -1.782e-02, 1.315e-01, -3.266e-02, 1.853e-01, -9.351e-03, 7.630e-02, -2.194e-02, -9.554e-02, 3.406e-02, 2.159e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-4.902e-02, -4.700e-02, -2.178e-02, 5.863e-03, 9.592e-02, -1.395e-01, -1.102e-01, -9.498e-02, -2.249e-01, 1.814e-01, -7.423e-02, -2.010e-01, -7.342e-02, 1.461e-02, -5.724e-02, -3.878e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-8.586e-02, -1.321e-01, -1.593e-01, 2.145e-02, 1.507e-02, -1.078e-01, 1.307e-01, -4.956e-02, -2.398e-02, -2.140e-02, -8.197e-02, -9.159e-02, 3.691e-02, 1.704e-01, -1.212e-01, 2.874e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(-1.532e-02, -7.671e-02, -8.936e-02, 7.488e-02, -2.182e-01, -1.668e-01, -6.797e-02, 5.214e-03, 5.159e-02, 9.963e-02, 8.880e-02, 2.149e-01, 1.617e-02, -2.264e-01, 1.253e-01, 2.069e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-2.399e-04, -1.064e-01, 4.847e-02, -1.651e-03, 2.471e-01, -1.403e-02, 1.934e-02, -3.310e-02, -4.829e-02, -1.741e-01, -1.255e-01, -5.930e-02, 5.768e-03, 1.124e-03, -1.184e-01, 3.228e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-1.462e-01, -5.426e-02, 2.380e-03, 1.632e-01, 1.221e-02, -1.040e-01, 9.613e-02, -8.663e-02, -1.351e-01, -3.394e-02, -2.619e-01, 6.435e-02, -6.301e-02, 7.107e-02, 9.152e-02, 7.712e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-8.950e-03, 2.201e-02, -4.799e-02, 1.249e-01, -2.501e-02, -1.100e-01, 1.147e-01, 1.067e-02, 5.510e-02, 4.572e-02, 1.487e-01, 5.185e-02, -5.855e-03, -7.850e-02, 8.320e-02, -2.217e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(9.149e-03, -1.685e-01, 4.531e-02, -4.825e-02, -1.665e-01, 9.719e-02, 5.435e-02, 8.578e-02, 5.556e-02, -7.271e-02, -1.526e-02, 8.679e-03, 2.354e-01, -6.320e-02, -7.196e-02, -8.133e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(1.052e-01, -1.217e-01, 6.531e-02, 6.816e-02, 1.436e-01, 4.893e-02, -6.086e-03, -3.473e-02, 1.553e-01, 1.982e-02, 7.986e-02, 1.096e-01, 2.716e-02, 1.586e-01, 1.406e-02, -4.086e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(6.857e-02, -7.925e-02, -7.915e-02, -1.065e-01, 4.715e-02, -6.392e-01, -1.379e-02, -7.028e-02, 1.175e-01, 4.626e-02, 1.617e-01, 1.649e-01, -3.780e-02, 2.703e-02, 1.038e-02, -2.328e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(2.485e-01, 1.262e-01, 1.244e-01, 3.142e-01, -1.147e-01, 1.923e-01, 1.328e-02, 6.994e-02, 2.716e-01, -1.343e-01, 1.330e-01, 6.591e-02, -8.375e-03, 1.548e-01, -3.473e-01, 1.987e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.176e-01, -1.460e-01, -6.845e-02, 1.165e-02, -1.711e-01, -2.862e-01, 3.868e-02, 4.741e-02, -4.050e-02, 7.240e-02, 1.405e-02, -2.753e-02, 8.126e-02, -1.805e+00, 8.100e-02, -5.797e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-7.779e-03, -1.356e-01, -1.704e-02, -5.399e-03, -8.899e-03, 2.193e-01, -1.796e-01, 2.028e-02, 5.236e-02, -2.327e-01, -1.381e-01, 4.280e-02, 2.272e-03, 1.954e-01, -4.686e-02, -1.116e-01), r4);\n\tr5 = MulAdd(s0_0_1, M4(-1.827e-01, -2.063e-01, -1.599e-01, -1.078e-01, 3.037e-01, -2.235e-01, 1.559e-01, -4.151e-02, 6.277e-03, -9.066e-02, -2.875e-02, 8.131e-03, 3.845e-02, 9.456e-02, 1.437e-01, -2.003e-03), r5);\n\tr6 = MulAdd(s0_0_1, M4(-2.329e-02, 7.342e-02, 1.677e-01, -6.305e-03, 1.501e-01, 7.288e-02, 1.001e-01, 1.068e-01, 1.969e-01, 9.516e-02, -3.606e-02, -2.092e-01, 1.735e-01, -3.807e-02, 1.164e-02, -8.417e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(4.858e-02, 6.623e-02, 1.014e-01, -2.721e-02, 4.368e-02, 1.559e-01, -1.731e-01, -2.656e-02, 1.075e-01, 1.894e-01, 3.421e-02, 6.533e-02, -1.997e-01, 1.187e-01, -6.949e-02, 1.005e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(-6.902e-02, -2.219e-01, 7.188e-03, 1.041e-02, -3.540e-02, -1.415e-01, -3.068e-02, -1.898e-01, -1.308e-03, -8.131e-02, -3.301e-02, 2.472e-02, 8.353e-02, -2.024e-01, -1.572e-02, -6.167e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.190e-01, -5.252e-02, -2.870e-02, 6.253e-02, -8.967e-02, -6.735e-01, 1.187e-01, -2.448e-01, -9.807e-02, -3.008e-02, 4.126e-02, -1.093e-01, -1.276e-02, -3.055e-02, 2.593e-01, 1.231e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.624e-01, 1.348e-01, 1.339e-01, 1.750e-01, 4.827e-03, -3.204e-02, -1.640e-02, -3.363e-03, 2.364e-02, -6.630e-02, 8.080e-02, 6.573e-03, 9.239e-02, 1.108e-01, -6.972e-02, 2.597e-01), r2);\n\tr3 = MulAdd(s0_0_2, M4(8.038e-02, -2.353e-02, 4.006e-02, -9.861e-03, 1.035e-02, 1.288e-01, -1.346e-02, -1.852e-02, 2.081e-01, 1.677e-01, 1.679e-01, -6.350e-02, -1.890e-02, -3.230e-01, -2.419e-02, -8.450e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(5.741e-02, -1.073e-01, -7.592e-02, 1.777e-02, 3.408e-02, -5.271e-02, 7.300e-02, -2.075e-01, 2.191e-01, -5.656e-02, 7.398e-02, -3.027e-03, 1.149e-01, -1.588e-02, 1.519e-01, 5.535e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-1.701e-01, -1.497e-01, 5.460e-03, 4.589e-02, -1.938e-01, 1.176e-01, 6.814e-02, -9.209e-02, 1.264e-01, -1.323e-01, 8.566e-02, -3.306e-02, 2.376e-02, -8.401e-03, -7.518e-02, -4.637e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(-6.489e-03, 3.991e-02, 9.462e-02, 7.632e-03, -4.601e-02, -1.909e-02, 1.052e-01, -2.708e-01, 1.680e-01, -1.009e-01, 4.186e-02, 1.330e-01, -1.011e-01, 1.002e-01, -2.451e-02, 7.293e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(4.647e-02, 3.338e-02, 4.553e-02, -2.453e-02, -3.369e-02, -1.275e-01, -3.098e-03, -4.707e-02, 3.726e-02, 2.303e-01, -1.379e-01, 1.077e-01, -1.850e-02, -3.959e-02, 4.114e-02, 1.449e-01), r7);\n\tr0 = MulAdd(s0_1_0, M4(3.344e-02, 6.300e-02, 7.117e-02, 4.746e-03, -5.318e-02, 1.122e-01, -3.235e-02, 2.422e-01, -6.971e-02, -1.309e-01, -2.090e-01, -2.868e-01, 8.066e-02, -3.479e-02, 2.650e-02, 1.074e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.511e-02, -5.507e-02, 4.540e-02, 6.040e-02, -2.366e-02, 2.299e-01, -1.235e-01, 1.000e-01, -1.210e-01, 1.518e-01, 9.781e-02, -2.192e-02, -1.175e-01, -1.933e-02, 4.814e-02, 1.712e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-3.013e-02, 1.248e-02, 4.035e-02, 2.505e-02, 4.907e-02, 3.897e-02, -1.597e-01, 5.462e-02, -4.065e-02, -3.594e-02, 1.106e-01, 1.336e-01, 7.151e-02, -3.076e-01, 2.530e-01, 8.384e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-6.456e-02, 8.097e-02, 8.461e-02, 2.257e-01, 2.389e-02, 3.810e-01, -4.877e-02, 1.421e-01, 8.368e-02, 5.182e-02, 1.078e-01, -3.040e-02, 3.094e-02, 6.274e-02, 1.408e-01, 1.593e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(-1.089e-01, 5.882e-02, 1.189e-01, -9.048e-02, 2.000e-01, 8.847e-03, 5.922e-02, 3.951e-02, 1.080e-01, -4.035e-02, -2.026e-01, -9.342e-02, 3.436e-03, -4.091e-02, -3.062e-04, 1.404e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(-1.687e-02, 3.222e-01, 2.672e-01, 2.436e-01, 3.499e-01, 1.082e-01, -4.415e-02, -1.042e-01, 3.413e-01, 1.681e-01, 8.444e-02, 8.654e-02, -9.557e-02, 6.391e-02, 5.565e-02, 3.599e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-1.194e-01, -2.700e-02, -8.036e-02, 1.168e-01, 9.323e-02, 7.899e-02, -2.915e-02, 6.849e-02, 3.408e-03, -2.135e-01, -3.792e-02, 2.262e-01, -2.926e-02, -4.331e-03, 5.560e-03, 4.374e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(3.754e-02, -4.216e-02, 3.308e-02, -1.249e-01, 8.151e-02, 5.336e-02, 1.087e-01, -8.393e-02, -8.228e-02, -2.830e-01, -1.969e-01, -2.318e-01, 2.642e-01, -5.677e-02, -1.679e-02, -5.719e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(1.557e-01, 5.457e-02, 5.911e-01, 2.245e-01, -2.118e-02, -5.127e-02, 2.327e-02, 5.806e-01, 1.639e-01, -7.013e-02, 1.343e-01, -1.322e-01, 2.475e-01, 2.226e-01, 5.336e-02, 1.951e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(7.929e-03, 2.289e-01, 2.288e-01, 1.613e-01, 2.455e-01, 8.754e-01, -3.204e-02, -2.856e-02, -3.698e-02, 2.097e-01, 1.711e-01, 6.111e-02, 2.141e-01, -2.386e-02, 6.859e-02, 1.502e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.924e-01, 2.221e-02, -1.339e-01, -1.442e-01, 1.291e-01, -1.086e-01, 1.060e-01, -1.003e-01, 1.154e-01, 2.199e-02, 6.362e-02, 2.120e-02, -5.336e-02, -4.726e-01, -2.054e+00, -3.254e+00), r2);\n\tr3 = MulAdd(s0_1_1, M4(-1.144e-01, -7.076e-02, -4.586e-02, 2.394e-02, 1.890e-01, -3.055e-02, 1.750e-01, 2.660e-01, -1.421e-01, -6.152e-02, -3.504e-03, -1.912e-01, 9.101e-02, 1.300e-01, 2.056e-01, 1.773e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-4.418e-02, -6.635e-02, -4.536e-02, -6.807e-02, -4.712e-02, 1.730e-01, -1.034e-01, 1.581e-01, -2.440e-02, -2.844e-02, 8.785e-02, -9.108e-02, -4.219e-02, 4.208e-01, 1.169e-01, -4.063e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.595e+00, -1.039e-01, -3.264e-01, -3.511e-01, 8.758e-01, 1.677e-02, 1.627e-02, 5.842e-02, -3.125e-01, -2.191e-01, -2.922e-01, -2.552e-01, -6.947e-02, 1.033e-02, -5.610e-01, 1.323e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(1.630e-01, -8.607e-02, 2.051e-01, 3.474e-02, -6.545e-01, 1.510e-01, 6.059e-02, -8.483e-02, 9.351e-02, -2.387e-01, -1.344e-01, -2.329e-01, 2.541e-02, 1.123e-01, 1.406e-01, -3.466e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(6.521e-02, 2.822e-01, 3.168e-01, 2.425e-01, -1.265e-01, -1.803e-01, -4.680e-02, -2.340e-01, -8.679e-03, -2.010e-02, 2.236e-01, 5.319e-02, -1.442e+00, -1.106e-01, 6.408e-03, 3.158e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-1.564e-01, 1.880e-03, 2.114e-01, 8.638e-02, 5.704e-02, -4.798e-02, 1.148e-02, 1.324e-01, -1.292e-01, 1.294e-01, -2.311e-02, -8.033e-02, -8.459e-02, 3.819e-01, 2.386e-02, 5.284e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-7.191e-02, -7.191e-03, -5.150e-02, -6.736e-02, -2.885e-02, 1.173e-01, -1.398e-02, -2.215e-03, 7.894e-02, -1.362e-01, -2.856e-02, -6.164e-02, 2.991e-02, 1.222e-01, -6.732e-02, -3.549e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-4.053e-03, 4.007e-02, 4.840e-02, -6.074e-02, 7.461e-02, -2.785e-02, -1.261e-01, -6.201e-02, 1.170e-01, 5.600e-02, 1.476e-01, -1.985e-02, -4.065e-02, -7.225e-01, -1.875e-02, 3.922e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(7.820e-03, 6.410e-02, 1.330e-01, 7.023e-02, -1.197e-01, 2.781e-01, -1.338e-02, -2.749e-02, -4.382e-01, -2.301e-01, -1.304e-01, -3.214e-01, -1.557e-01, 9.988e-03, -7.075e-03, -1.524e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(3.620e-02, -9.787e-04, -4.987e-02, 1.078e-01, 9.058e-02, 6.255e-05, 1.538e-01, -8.135e-03, 1.376e-01, 5.667e-02, 1.045e-01, -1.068e-01, 1.191e-01, -3.037e-01, 1.290e-01, -5.432e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-5.795e-01, -1.210e-01, -1.182e-01, -6.707e-02, 9.795e-02, 5.663e-02, -6.093e-02, 1.251e-02, 7.983e-02, -2.692e-02, 6.769e-02, -7.437e-02, 6.275e-02, -7.020e-02, -8.696e-02, 2.777e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(2.396e-02, -1.690e-01, -7.939e-02, -2.001e-01, 3.165e-01, 3.227e-01, -1.872e-01, -7.568e-02, -2.748e-01, -1.715e-01, 1.015e-01, 7.354e-02, 8.671e-02, -5.774e-02, -8.183e-02, 2.983e-01), r6);\n\tr7 = MulAdd(s0_1_2, M4(-1.245e-01, 5.420e-02, 7.741e-02, 6.140e-02, 7.762e-02, -6.845e-03, 7.380e-02, 8.609e-02, -2.238e-01, 1.205e-01, -4.921e-02, -1.268e-02, 6.419e-02, 1.105e-01, 5.605e-02, -8.547e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(3.772e-02, 1.661e-01, -6.770e-03, -6.438e-02, -4.369e-02, -6.571e-02, -2.562e-03, -1.120e-01, 9.415e-02, 4.258e-02, 9.698e-02, 2.406e-01, -2.307e-02, -4.179e-01, -2.791e-02, -1.336e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(-7.757e-02, 6.118e-02, 1.392e-01, 9.138e-02, 2.942e-02, 1.784e-01, 3.697e-02, 1.766e-01, -1.786e-01, -9.805e-02, -4.134e-01, 6.910e-02, 7.491e-03, 5.266e-02, 2.100e-02, 2.096e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(2.434e-02, -4.594e-02, 6.969e-02, 8.704e-03, 5.313e-02, -8.252e-02, 6.586e-02, -2.159e-02, -2.961e-02, -4.641e-02, -2.388e-01, -4.171e-02, 7.658e-02, 5.011e-02, 3.053e-01, 2.073e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(-3.554e-02, 8.558e-02, 1.255e-01, 1.007e-01, 5.238e-02, -3.258e-01, 5.929e-02, 1.214e-01, 2.341e-01, 6.333e-02, -1.349e-01, -8.261e-02, 5.805e-02, 1.069e-02, 1.625e-01, 4.083e-01), r3);\n\tr4 = MulAdd(s0_2_0, M4(-2.037e-01, 3.516e-02, -1.185e-01, -1.104e-01, 2.037e-01, 7.862e-02, 1.742e-02, 7.348e-02, -2.242e-02, 6.730e-03, 1.061e-01, 8.470e-02, -2.069e-02, 1.515e-01, 5.080e-02, -7.618e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(-2.431e-01, 5.488e-02, 9.733e-02, 3.943e-02, 8.610e-02, 6.891e-02, 1.062e-01, 7.423e-03, -2.426e-01, 5.648e-02, -1.242e-01, 1.772e-02, 9.524e-02, 1.355e-01, 2.400e-01, 5.944e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(6.096e-02, 1.584e-01, -8.015e-02, 1.117e-01, -1.289e-01, -1.852e-01, 1.506e-02, -1.367e-01, -1.792e-01, -3.414e-02, -5.733e-02, 1.047e-02, 1.004e-01, 2.269e-01, 1.851e-01, -2.525e-01), r6);\n\tr7 = MulAdd(s0_2_0, M4(-6.263e-03, -1.334e-01, -1.048e-01, -2.330e-01, 6.480e-02, 7.277e-02, 7.000e-02, 8.336e-02, 3.651e-02, -8.036e-02, -5.075e-02, -2.812e-01, 5.557e-02, 1.868e-01, 8.688e-02, -1.239e-01), r7);\n\tr0 = MulAdd(s0_2_1, M4(-9.344e-03, -8.908e-03, 5.662e-02, -6.157e-02, -4.379e-03, 8.782e-02, 5.652e-02, 4.793e-02, -6.970e-02, -1.125e-01, -1.713e-02, 3.386e-02, -3.351e-02, 1.524e-01, 3.392e-02, -5.748e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.212e-01, 4.407e-02, 1.236e-03, -4.343e-02, -9.946e-02, 2.207e-01, -7.104e-02, 1.474e-01, 1.698e-02, 1.493e-02, -3.382e-01, 1.609e-01, -5.883e-02, -1.016e-01, -6.762e-02, 1.343e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-2.156e-01, -5.634e-02, -5.790e-02, -1.369e-01, 6.600e-03, 1.364e-02, -7.508e-03, -8.869e-03, -7.641e-02, -6.391e-02, -3.142e-01, -3.005e-02, 8.130e-02, 6.286e-02, 1.201e-01, -8.926e-04), r2);\n\tr3 = MulAdd(s0_2_1, M4(-2.035e-01, -4.022e-02, 3.411e-02, -7.116e-02, -4.614e-02, -2.836e-01, -9.291e-02, 5.110e-02, 8.868e-02, -3.254e-02, -1.869e-01, -5.065e-02, 1.165e-01, -2.839e-01, -1.528e+00, 1.405e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(2.009e-01, 2.356e-01, 7.651e-02, 1.016e-01, -3.185e-01, -3.056e-01, -7.045e-02, 1.444e-01, -4.482e-01, 9.199e-02, 2.934e-01, -3.209e-02, -2.391e-01, 5.683e-01, 4.468e-02, -7.523e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-1.462e-01, 1.511e-01, -3.920e-02, 4.879e-02, -1.517e-01, -2.238e-01, 1.897e-02, 9.146e-02, -5.996e-03, 1.669e-01, -1.733e-01, 1.864e-01, 2.067e-01, 1.826e-01, -1.925e-01, 2.434e-01), r5);\n\tr6 = MulAdd(s0_2_1, M4(7.886e-02, 1.096e-01, -3.010e-03, 1.552e-02, 6.353e-03, -1.559e-01, -1.963e-01, 1.920e-01, 8.361e-02, 2.170e-01, -1.595e-01, -8.168e-02, -2.392e-01, -2.268e-01, 1.343e-01, -7.284e-01), r6);\n\tr7 = MulAdd(s0_2_1, M4(-1.046e-02, -1.212e-02, -1.636e-01, 8.820e-02, -1.150e-01, -1.483e-01, -2.841e-02, 4.762e-02, 1.130e-01, -7.370e-02, -1.450e-01, 3.389e-01, -3.521e-01, 2.031e-01, 1.955e-01, 1.549e-01), r7);\n\tr0 = MulAdd(s0_2_2, M4(-1.098e-01, 3.634e-02, -5.600e-02, 1.284e-02, -8.058e-03, -2.314e-01, 1.131e-02, -1.442e-01, -3.508e-02, 1.957e-02, -3.371e-02, 9.851e-02, 2.141e-01, 4.636e-01, -7.987e-03, 4.687e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-1.191e-01, -2.524e-02, -1.065e-01, -4.653e-02, -1.441e-02, -8.016e-02, 7.829e-02, 1.156e-01, 2.131e-01, -9.112e-02, -2.123e-01, 5.121e-02, 3.726e-02, -3.289e-03, -1.101e-02, 7.794e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.525e-02, -5.030e-02, -8.444e-03, -1.091e-01, 2.272e-02, 7.352e-02, -1.593e-01, 7.124e-02, 5.810e-02, 3.165e-01, -5.998e-02, -4.039e-02, 8.544e-03, 6.391e-01, -5.097e-03, 1.603e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(-1.173e-01, 2.196e-02, -1.199e-03, -1.235e-01, 1.665e-01, -8.330e-02, -9.181e-02, -1.481e-01, 4.888e-01, 2.417e-01, 7.303e-02, 4.078e-02, -3.931e-02, 1.172e-03, -5.374e-01, 2.122e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(5.744e-02, 6.641e-03, 4.876e-02, -7.975e-03, -7.313e-01, -1.143e-01, 8.694e-02, 3.263e-02, -7.440e-02, 2.491e-01, 2.501e-01, 1.992e-01, 1.063e-01, -1.850e-01, -3.665e-02, 1.149e-01), r4);\n\tr5 = MulAdd(s0_2_2, M4(-3.378e-01, -9.147e-03, -1.219e-01, -9.147e-02, -4.715e-02, 2.118e-01, 6.384e-02, 5.657e-02, 1.649e-01, 1.758e-02, 1.201e-01, 1.712e-02, 6.210e-02, -1.323e-01, 3.882e-02, -6.014e-03), r5);\n\tr6 = MulAdd(s0_2_2, M4(-9.043e-02, -2.026e-02, -1.748e-01, -1.130e-01, 1.354e-01, -1.957e-01, -3.209e-02, 4.549e-02, 6.323e-02, 6.665e-02, -1.325e-01, 7.146e-03, 2.423e-01, 1.033e-01, -9.789e-02, 1.234e-01), r6);\n\tr7 = MulAdd(s0_2_2, M4(1.997e-02, 4.371e-02, 9.724e-03, 1.352e-01, 4.267e-02, -3.649e-02, 1.368e-01, 2.142e-02, -4.367e-02, -3.517e-02, 1.180e-02, 5.572e-02, -1.494e-01, 1.831e-01, 1.565e-03, 2.717e-01), r7);\n\tr0 = MulAdd(s1_0_0, M4(7.988e-02, -1.057e-01, 6.074e-02, 2.219e-02, 5.947e-02, -1.674e-01, -2.893e-03, 4.418e-02, 2.976e-03, 9.436e-02, -5.523e-03, 1.775e-01, 1.121e-01, -1.423e-01, 6.309e-02, 9.979e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(3.865e-02, 2.468e-02, -5.582e-02, -2.548e-02, -7.664e-02, 1.263e-01, -9.055e-02, -6.043e-02, 5.525e-02, -1.227e-01, 7.858e-02, -2.332e-02, -2.644e-01, -1.116e-01, 8.108e-02, 1.333e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.844e-02, -5.090e-02, 6.494e-02, 7.625e-02, -9.449e-02, 3.324e-03, -1.875e-01, -4.382e-02, -9.028e-03, 1.517e-02, 1.362e-02, 9.343e-02, 1.705e-01, -1.789e-01, 8.586e-03, 8.790e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(2.399e-01, 1.245e-02, 9.393e-02, 1.078e-01, -4.210e-01, 2.957e-02, -1.658e-01, -3.415e-02, 8.324e-02, -2.935e-01, 1.092e-01, 2.033e-01, 1.419e-01, 5.376e-01, 6.193e-02, -3.241e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(1.786e-01, -1.386e-02, 7.805e-02, -2.094e-01, -1.577e-02, -9.639e-02, 2.678e-02, -7.424e-02, 1.017e-01, -1.240e-01, -4.164e-02, -7.177e-03, 9.467e-02, -8.861e-02, 5.186e-02, 1.710e-03), r4);\n\tr5 = MulAdd(s1_0_0, M4(1.039e-01, -1.527e-01, 9.440e-02, 1.607e-01, -1.790e-01, -3.689e-02, 7.295e-02, -8.047e-03, 1.988e-02, -1.210e-01, -9.390e-02, -1.249e-01, -2.602e-01, -4.322e-03, 3.258e-01, 2.211e-01), r5);\n\tr6 = MulAdd(s1_0_0, M4(2.121e-01, 7.269e-02, -2.557e-02, -4.628e-03, -1.267e-04, 9.422e-02, -1.463e-02, -7.394e-02, 2.774e-03, -2.215e-01, -2.437e-01, -4.071e-02, 1.138e-01, 4.651e-02, 5.315e-02, 8.833e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(7.373e-02, 2.103e-01, 1.634e-01, 7.513e-03, 4.412e-02, -5.692e-01, 3.994e-04, -2.373e-03, 3.747e-02, -1.440e-01, 2.131e-01, 1.007e-01, 5.812e-02, -6.047e-02, 6.434e-02, -2.132e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(2.921e-02, 1.162e-01, -3.161e-02, -1.211e-01, -6.228e-02, -1.921e-02, 8.611e-02, 1.092e-01, -8.896e-02, -1.396e-01, -8.810e-02, -2.802e-02, -2.217e-01, -9.431e-02, -1.681e-02, -1.437e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(-2.739e-02, 1.131e-01, 1.057e-02, 1.219e-01, 6.946e-03, 8.965e-01, 1.717e-02, 4.760e-01, -4.182e-02, 6.296e-01, 1.229e-01, 3.799e-01, 1.205e-01, 4.236e-01, 1.628e-02, 4.780e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-2.226e-02, -3.504e-02, -2.924e-02, -2.074e-03, 2.260e-01, 1.164e-01, -2.098e-01, 1.821e-01, -4.053e-02, 9.504e-02, 2.274e-01, 2.039e-01, 7.102e-03, -3.679e-02, -1.846e-01, -9.937e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-1.550e-01, -3.920e-01, 1.829e-01, -3.295e-01, 7.627e-01, 3.762e-01, 1.625e-01, 5.572e-02, 1.043e-01, -8.596e-02, 9.593e-03, 3.514e-02, -4.758e-02, -4.672e-01, 6.611e-02, -1.549e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(-5.305e-02, 1.319e-01, -1.347e-02, 3.616e-02, 2.246e-04, -1.106e-01, 2.181e-01, 1.752e-01, 1.582e-01, -1.668e-02, -2.424e-01, 7.458e-02, -3.220e-02, 3.407e-02, 1.311e-01, 3.991e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-5.813e-02, 7.179e-02, -3.738e-02, -4.000e-02, -5.755e-02, -4.619e-02, -1.407e-01, 1.909e-01, 1.863e-01, 1.595e-01, 1.853e-01, 1.226e-02, 4.143e-02, 4.754e-02, 8.163e-02, -6.302e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-8.587e-02, -9.740e-02, 6.202e-02, 9.518e-02, -1.273e-01, -9.549e-02, 2.171e-01, -2.339e-02, -9.635e-02, 6.241e-02, -3.887e-01, 1.540e-01, -4.643e-02, -2.274e-01, -6.844e-02, -3.614e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-2.264e-01, 8.136e-02, -4.860e-02, -3.373e-02, 2.882e-01, -1.661e-01, 3.264e-01, 2.300e-01, -1.556e-01, -1.617e-01, 4.295e-01, -3.311e-02, 1.224e-01, -1.068e-01, 1.050e-01, 2.530e-01), r7);\n\tr0 = MulAdd(s1_0_2, M4(-6.057e-02, -3.133e-02, -1.051e-02, -1.510e-02, -3.694e-02, 2.427e-01, 2.214e-02, 5.055e-02, -1.467e-04, -6.798e-02, 3.201e-02, 2.326e-02, 1.638e-03, 8.801e-02, 1.807e-02, 6.652e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(1.650e-02, 1.487e-02, 6.253e-02, -2.329e-02, 9.843e-02, 4.053e-01, -1.274e-01, 1.331e-01, -4.424e-02, 2.928e-02, 7.085e-02, -2.473e-02, 7.111e-02, 4.812e-02, 2.470e-04, 8.100e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(4.965e-02, 1.802e-01, 2.522e-01, 1.531e-01, -4.835e-02, -1.127e-01, 3.958e-02, -2.342e-02, -1.015e-01, 1.292e-01, -5.678e-02, -5.448e-02, 1.086e-01, 2.524e-01, -1.028e-01, 1.666e-01), r2);\n\tr3 = MulAdd(s1_0_2, M4(-2.843e-02, -2.165e-01, 1.214e-02, -7.251e-02, 1.149e-01, 2.061e-01, -9.337e-02, -3.553e-02, 9.556e-02, 2.419e-01, -7.256e-02, 2.433e-01, 4.173e-02, 3.344e-02, -8.919e-02, 3.907e-01), r3);\n\tr4 = MulAdd(s1_0_2, M4(3.779e-02, 4.186e-02, 4.771e-02, 1.909e-02, -1.836e-01, -1.669e-02, -9.250e-02, 1.325e-01, 3.808e-02, 5.094e-02, -1.937e-01, -1.114e-01, -3.082e-02, -8.963e-02, 3.101e-01, 4.674e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(4.755e-02, 4.197e-02, 3.717e-02, 4.001e-03, 1.036e-01, -7.702e-02, -8.589e-02, 7.608e-02, -8.182e-03, -1.883e-02, -6.128e-02, -3.434e-02, -1.432e-01, -6.281e-02, -9.610e-02, 4.208e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-3.210e-02, 2.650e-01, 8.486e-02, 2.999e-02, -8.755e-02, 8.752e-02, -4.978e-02, 1.699e-01, 2.033e-01, -1.335e-01, -7.990e-04, -1.505e-02, -8.739e-02, 3.923e-02, 8.058e-02, 1.235e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(1.838e-01, -2.578e-03, 3.486e-02, -7.250e-02, 5.091e-02, 1.270e-01, -1.045e-02, -1.878e-02, 6.757e-02, -3.939e-03, 2.175e-02, -9.077e-02, 1.406e-01, -7.435e-02, -9.849e-02, -1.512e-01), r7);\n\tr0 = MulAdd(s1_1_0, M4(2.883e-02, 2.969e-02, 7.546e-02, -5.760e-02, 2.975e-02, -8.134e-02, -3.989e-03, -2.642e-02, 6.282e-02, -5.944e-02, -2.593e-02, 4.221e-02, 1.030e-01, 9.602e-02, 8.242e-02, 6.577e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-5.166e-02, 4.317e-02, 2.632e-02, -1.589e-01, 1.274e-01, -1.996e-01, 1.683e-01, 8.234e-02, -2.447e-01, -3.585e-01, -1.288e-01, -3.773e-02, -1.126e-01, 8.333e-02, 7.092e-02, -6.210e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.320e-01, -1.821e-01, -1.011e-01, -4.869e-02, -1.988e-01, 1.188e-01, 1.173e-01, 6.406e-02, 5.022e-01, 5.999e-02, 3.222e-02, 4.496e-02, 6.618e-02, -1.010e-01, -1.629e-02, -5.003e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-2.024e-01, -1.247e-01, -8.002e-02, 2.118e-01, -3.648e-02, 2.992e-01, 1.144e-01, -2.513e-01, -1.320e-01, -7.432e-02, 8.033e-03, -2.276e-01, -1.319e-01, -3.856e-02, 8.731e-02, -2.013e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(-1.187e-02, 4.312e-02, -4.019e-02, 2.037e-02, -4.887e-02, -1.994e-01, 2.197e-01, -9.058e-02, -1.346e-01, 5.819e-02, 2.203e-02, -2.673e-01, -1.666e-01, -6.496e-02, -6.403e-02, -1.773e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(-5.207e-02, 1.235e-01, 1.240e-02, 1.064e-01, 1.108e-01, -9.842e-02, -4.617e-02, 7.523e-03, 1.742e-02, 4.573e-02, 4.282e-02, -9.196e-02, -2.525e-01, -9.714e-02, 2.603e-01, 4.364e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(-4.592e-03, 3.351e-02, 1.365e-01, 6.084e-02, 1.398e-01, -4.112e-02, 3.339e-02, 5.478e-02, -3.869e-01, 1.631e-01, 7.120e-02, -1.414e-01, -7.297e-02, 3.500e-02, 5.538e-02, 1.314e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.677e-01, 8.750e-02, 1.072e-01, 3.335e-01, -9.844e-02, 2.683e-01, 8.055e-02, -8.082e-03, -5.430e-02, 1.427e-01, 5.361e-01, -4.795e-02, -9.663e-03, 1.350e-01, 1.772e-01, 3.522e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(3.492e-02, -1.815e-02, -3.613e-02, -1.979e-01, 5.775e-02, -1.761e-01, -3.156e-02, 1.315e+00, 1.431e-04, 5.800e-02, 1.684e-01, -7.538e-02, -2.887e-01, -1.239e-01, -1.300e-01, -1.622e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(7.926e-02, -7.239e-02, -5.566e-02, 1.643e-01, -1.238e-01, -7.564e-01, 3.639e-01, -2.659e-01, -5.310e-02, -1.109e+00, -3.739e-01, -2.521e-01, 9.745e-02, -3.799e-01, -1.118e-01, 7.320e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-1.106e-01, 5.755e-02, 1.242e-01, 5.579e-02, 1.554e-01, -1.890e-01, 1.266e-01, -1.226e-01, -2.008e-01, 6.015e-02, -7.689e-02, -8.681e-02, 1.163e-02, 2.156e-01, 8.890e-02, 3.017e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-1.649e-01, -3.967e-01, 2.012e-01, -2.809e-01, -1.306e-01, 1.473e-01, -2.165e-01, 2.097e-01, 2.532e-02, -1.696e-01, -2.060e-01, -2.697e-01, -4.178e-02, -1.162e-01, -2.901e-02, -5.796e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(-1.167e-01, -1.235e-01, -1.512e-01, 8.050e-02, 6.619e-02, 3.594e-02, 2.690e-01, 2.775e-01, -3.214e-01, -9.831e-03, 8.744e-01, 6.315e-02, -1.566e-01, -3.347e-02, -2.509e-02, -4.697e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(3.295e-01, 2.352e-02, 3.166e-02, -1.951e-03, 1.084e+00, 6.870e-01, 2.595e-01, -1.187e-01, -4.069e-01, -1.686e-01, 5.475e-02, 4.548e-02, 3.350e-01, 2.109e-01, 3.948e-01, 1.685e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(-1.613e-01, 1.123e-01, -1.515e-01, 1.274e-01, 1.281e-01, -1.001e+00, 9.142e-02, -1.495e-01, 3.245e-01, -1.642e-01, 3.048e-01, -2.285e-02, -8.277e-02, -5.474e-02, 2.722e-02, 6.017e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(8.499e-02, -1.150e-01, -2.125e-01, 3.015e-01, -2.484e-01, 1.267e-01, 2.709e-01, 1.011e-01, -1.249e-02, 1.527e-01, -1.045e+00, -2.467e-01, -6.726e-02, -1.331e-01, -2.634e-01, -2.374e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-2.165e-01, -1.302e-01, 5.669e-03, -2.936e-01, 4.253e-02, 1.286e-01, -3.279e-02, -7.339e-02, -7.002e-02, -1.252e-01, -2.653e-02, -1.627e-02, 2.346e-01, -3.060e-04, 1.334e-01, 2.205e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(3.519e-03, 6.609e-02, -9.697e-02, -4.458e-02, -1.777e-02, 1.207e-01, -6.709e-02, 1.037e-01, 1.545e-01, 3.223e-01, 2.564e-02, 3.139e-01, -3.181e-02, 1.676e-01, -2.710e-02, -1.085e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(-7.857e-02, -1.747e-02, -9.269e-02, -1.801e-01, -1.278e-03, 7.685e-02, 1.986e-01, 6.130e-02, -2.993e-01, -2.702e-01, -7.912e-02, -7.338e-02, -5.604e-02, 1.202e-02, -8.749e-02, -1.323e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.830e-01, -4.044e-02, -2.709e-01, -2.438e-01, -4.755e-01, -1.694e-01, 9.120e-02, -1.800e-01, 7.038e-02, -1.034e-01, -2.067e-01, -1.250e-01, 7.745e-02, 1.368e-01, -1.184e-01, 3.301e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(1.036e-01, -2.300e-03, 5.159e-02, 3.068e-02, -2.165e-01, 5.167e-02, -1.974e-01, -5.958e-03, -3.388e-01, 6.653e-03, -2.848e-01, 1.238e-01, 1.079e-01, 3.632e-03, 3.146e-02, 2.232e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(-3.938e-02, 6.212e-03, -3.056e-02, 5.090e-02, 1.469e-02, -2.305e-01, 3.005e-02, -6.383e-02, -3.617e-03, -8.660e-02, -1.572e-02, 8.177e-02, 3.429e-01, -2.900e-01, -3.836e-01, -2.454e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(-1.670e-01, 5.387e-02, -1.315e-01, 7.308e-02, -9.888e-02, 7.438e-02, -2.019e-02, 1.675e-01, 4.625e-02, 1.977e-01, -4.076e-02, -1.449e-01, 7.860e-02, -9.629e-02, -1.611e-01, -1.836e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(-1.303e-01, -8.679e-02, 4.454e-02, -3.233e-01, -1.745e-02, 6.739e-02, -1.157e-01, -7.354e-02, -3.875e-02, -1.327e-01, 2.196e-01, 4.794e-03, -1.060e-02, -3.518e-02, 1.158e-02, -8.044e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-1.394e-02, 1.304e-01, 5.802e-03, 2.260e-02, 3.157e-02, 1.055e-02, -1.530e-02, 1.800e-01, 2.318e-02, 1.169e-01, -2.520e-02, 2.903e-02, 7.718e-02, 1.012e-01, 8.822e-03, 1.479e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-9.438e-02, -4.397e-02, 2.279e-02, -1.797e-01, 2.190e-02, -2.814e-01, 3.166e-02, -1.143e-01, -4.211e-03, 3.053e-01, 1.270e-01, 3.444e-02, 9.270e-03, -7.047e-02, 8.511e-02, -2.909e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.334e-01, -1.802e-01, -1.883e-01, -1.443e-02, -5.401e-02, -2.330e-02, -1.126e-01, -2.162e-02, 5.487e-02, 1.330e-02, -3.161e-02, -6.329e-02, -4.660e-02, -2.047e-01, 1.217e-01, -4.101e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(2.492e-02, 2.390e-03, -8.917e-02, 1.555e-01, 8.708e-02, -1.331e-01, -6.723e-03, -7.478e-02, -1.842e-01, 2.268e-01, -9.440e-02, -1.075e-02, 6.482e-02, 6.406e-02, 1.793e-01, -5.868e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-8.291e-02, 3.536e-02, -7.311e-02, 3.394e-02, -1.314e-01, 6.370e-02, -6.663e-03, -1.672e-02, -1.798e-01, -2.544e-01, -1.217e-01, -3.392e-02, 4.382e-02, 1.069e-01, -3.016e-02, -1.084e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(-4.724e-02, -1.459e-01, 3.479e-02, 4.611e-02, -8.205e-03, -5.787e-02, 3.256e-02, -1.060e-01, -3.530e-02, 1.295e-01, -1.782e-02, 6.508e-02, 3.983e-02, 1.249e-01, -1.902e-01, 1.125e-01), r5);\n\tr6 = MulAdd(s1_2_0, M4(-1.038e-01, 8.792e-02, 5.634e-02, 1.962e-02, 1.728e-02, 2.087e-01, 2.704e-02, 1.163e-01, 1.216e-01, -9.042e-03, 3.600e-02, -6.434e-03, 2.934e-03, 1.668e-01, -8.510e-02, 1.839e-01), r6);\n\tr7 = MulAdd(s1_2_0, M4(-3.603e-02, -1.013e-01, -1.807e-02, -8.304e-02, -1.063e-01, 4.270e-02, -9.533e-02, -1.075e-02, 9.818e-02, -8.230e-02, 1.418e-01, 8.818e-02, -5.138e-02, 1.986e-01, 5.428e-02, 1.058e-01), r7);\n\tr0 = MulAdd(s1_2_1, M4(9.106e-02, 2.772e-01, -5.892e-03, 1.511e-01, -3.098e-02, -1.223e-01, -2.235e-02, -2.953e-02, 4.468e-02, 5.820e-02, -7.674e-02, -3.886e-02, -2.731e-02, 1.116e-01, -2.685e-02, -1.707e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(7.816e-02, 2.151e-02, 5.306e-02, 1.103e-01, 1.991e-01, -3.484e-01, -1.472e-01, -7.180e-02, 9.028e-02, 1.991e-01, 9.163e-02, -1.258e-01, 9.957e-02, 1.141e-01, 1.076e-01, -7.703e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.186e-02, 8.257e-02, -2.393e-01, -9.101e-03, -5.340e-02, 5.397e-02, -6.891e-02, -1.039e-02, 1.821e-02, -1.553e-02, -4.133e-02, -6.198e-03, -2.240e-02, 5.646e-04, 1.965e-01, -6.336e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(4.255e-01, 3.476e-01, -1.643e-01, 3.048e-01, -5.021e-01, -1.264e-01, 3.105e-01, -2.823e-01, -5.384e-02, 1.424e-01, 1.181e-01, -1.149e-01, -8.353e-02, 9.642e-02, 1.235e-01, -1.213e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(-7.105e-02, -1.826e-01, 6.839e-02, 4.059e-02, 4.616e-01, 2.905e-02, 1.523e-02, -8.852e-02, 2.899e-01, 3.146e-01, -3.055e-01, 5.755e-02, 1.897e-01, 1.717e-01, -1.654e-01, -7.489e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-1.120e-01, 1.273e-01, 8.860e-02, -8.665e-02, 2.809e-02, -1.869e-02, -4.538e-02, 2.705e-02, 1.758e-02, 8.844e-02, -3.518e-02, -9.485e-02, 6.508e-02, 5.327e-02, 9.629e-02, -1.290e-01), r5);\n\tr6 = MulAdd(s1_2_1, M4(1.935e-02, -1.270e-01, -1.394e-01, 9.993e-02, 2.083e-01, 6.660e-01, 2.404e-03, -2.568e-01, -1.441e-01, -3.548e-02, 2.833e-01, 2.004e-01, 8.907e-03, -5.669e-02, 6.329e-02, -9.346e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(2.156e-02, -1.319e-01, -1.551e-01, -8.575e-02, 1.099e-01, 1.642e-01, -4.577e-03, -1.135e-01, -5.944e-02, 2.172e-01, -1.773e-02, -2.504e-02, 1.429e-02, -6.888e-02, -1.404e-01, 4.426e-03), r7);\n\tr0 = MulAdd(s1_2_2, M4(8.770e-03, -3.909e-01, 1.599e-02, 6.529e-02, 6.092e-03, 1.901e-01, -2.423e-02, 1.589e-01, 6.389e-02, 1.262e-02, 1.677e-02, -2.925e-01, -3.844e-02, -3.581e-02, -3.150e-02, 1.632e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.780e-01, -3.869e-03, -7.231e-03, -3.763e-02, -1.725e-01, 1.999e-02, -3.016e-02, -5.338e-02, 8.846e-02, 2.511e-02, -3.407e-02, -7.792e-02, 3.750e-02, -3.783e-01, -4.210e-02, -3.975e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(5.009e-02, 1.595e-01, 8.780e-02, -3.555e-02, -3.582e-02, 2.543e-02, 1.128e-01, -4.307e-02, -8.002e-02, -6.729e-02, 1.590e-02, -9.575e-03, 1.192e-02, -1.638e-01, -1.405e-01, -3.459e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(2.125e-01, 1.528e-01, 7.572e-02, 1.493e-01, -2.007e-01, -7.539e-02, -5.425e-02, 2.026e-03, -1.381e-01, 1.023e-01, 3.120e-01, -6.342e-02, -7.704e-02, -9.528e-02, -2.735e-01, 2.254e-01), r3);\n\tr4 = MulAdd(s1_2_2, M4(-3.957e-02, -3.690e-02, 1.841e-01, 8.068e-02, -5.261e-02, 9.815e-02, -3.225e-02, -1.131e-01, 2.107e-01, -2.351e-02, -1.137e-01, 5.249e-02, 1.452e-01, -5.549e-02, 1.050e-01, -1.181e-01), r4);\n\tr5 = MulAdd(s1_2_2, M4(4.591e-02, -4.291e-02, 3.082e-02, 7.201e-03, 4.507e-02, -1.557e-01, -4.469e-02, -4.040e-02, 1.261e-02, -4.753e-02, -9.141e-02, 5.170e-02, -8.842e-02, 1.449e-02, -2.623e-01, -4.162e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-1.742e-02, -1.066e-01, 1.029e-03, -7.587e-02, -1.152e-01, 4.997e-02, -7.557e-02, -9.654e-02, 6.755e-02, 3.505e-02, 5.890e-03, 7.376e-02, 1.283e-01, 9.068e-02, -1.155e-01, 8.510e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-9.998e-03, 7.971e-02, 7.193e-02, 3.943e-02, 1.121e-02, 2.039e-03, -1.135e-01, -1.526e-01, 7.872e-02, 1.394e-01, -3.530e-02, 2.874e-01, -1.283e-01, -9.508e-02, -1.965e-01, -3.889e-02), r7);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.075e-02, -2.248e-02, 6.532e-03, 7.580e-02, 1.307e-02, -1.057e-01, -3.494e-02, -3.357e-02, -2.947e-03, -2.194e-02, -3.457e-02, -5.234e-02, -3.148e-02, -3.021e-01, -5.814e-02, 5.151e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.778e-01, -9.240e-03, -5.167e-02, -2.183e-01, 3.872e-02, -6.758e-02, -3.609e-02, 5.633e-02, 6.118e-02, -2.441e-02, 4.011e-03, 5.195e-02, 6.330e-02, -4.671e-02, -2.034e-02, 2.021e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(-3.436e-02, -9.257e-02, 2.762e-01, -3.161e-02, 2.253e-02, -2.445e-02, 4.378e-02, 2.919e-02, 3.229e-03, 1.256e-01, 3.670e-02, -1.519e-01, -8.633e-02, 7.952e-04, 4.222e-01, 8.695e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-3.933e-02, -3.435e-02, -3.761e-02, -5.360e-02, 1.789e-01, 1.703e-01, -9.310e-02, -8.084e-02, 3.142e-02, -5.744e-01, -8.743e-02, 7.298e-02, 5.957e-02, -1.482e+00, -2.327e-01, 1.561e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(-2.124e-02, -5.235e-02, -5.004e-02, -2.758e-03, -6.469e-02, 6.008e-02, -4.078e-02, 8.848e-02, -2.562e-02, -6.186e-02, 6.616e-02, -2.216e-02, -1.121e-01, -2.657e-01, 7.631e-02, 1.687e-01), r4);\n\tr5 = MulAdd(s0_0_0, M4(1.100e-02, -2.800e-01, 5.767e-02, -1.665e-02, -1.495e-02, 4.346e-02, -3.432e-02, -1.069e-01, 7.624e-02, -1.028e-01, -1.218e-01, -6.892e-02, -3.404e-02, 2.533e-01, -3.123e-01, -1.124e-01), r5);\n\tr6 = MulAdd(s0_0_0, M4(5.818e-03, 3.574e-02, -1.791e-01, -2.002e-02, -3.289e-03, -6.803e-02, -4.651e-02, -2.906e-02, 3.433e-02, -3.170e-02, 3.436e-02, -6.842e-02, -1.456e-01, -1.302e-01, 1.245e-01, 7.376e-01), r6);\n\tr7 = MulAdd(s0_0_0, M4(-9.972e-02, -1.027e-01, -2.784e-02, 1.170e-01, -2.702e-02, 2.080e-03, -9.532e-02, 2.568e-02, -5.069e-02, 1.558e-01, 4.717e-02, 6.817e-02, 2.781e-01, -1.311e-01, 3.561e-02, 3.431e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(-7.414e-02, -2.115e-01, -1.995e-02, 3.070e-02, 3.389e-02, 3.603e-02, 3.942e-03, -2.645e-02, 8.853e-02, 1.423e-03, 3.027e-02, -1.969e-02, -3.466e-02, 2.124e-01, 2.060e-02, 4.200e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-9.213e-02, -3.798e-02, 7.690e-02, 4.956e-02, -1.517e-01, -8.473e-02, 2.135e-02, 8.165e-02, 2.372e-01, -3.645e-02, -2.030e-02, 8.362e-02, 7.886e-02, -4.479e-02, -2.740e-01, -1.066e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.269e-02, -4.510e-02, -9.724e-02, -3.268e-02, 2.046e-01, 1.796e-01, -4.822e-02, -3.657e-02, 2.846e-02, -2.540e-01, -7.145e-02, -4.777e-01, -1.716e-01, -5.702e-02, -1.976e-01, 5.966e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-5.531e-02, -2.860e-01, -6.197e-02, -1.864e-01, -4.191e-01, -8.057e-01, 1.494e-01, 1.253e-01, 2.141e-02, -3.664e-01, 3.577e-02, 9.116e-02, -4.419e-02, 7.736e-01, 4.377e-02, 1.390e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(-6.222e-02, -4.891e-03, -6.673e-02, -7.667e-02, 2.340e-01, -4.069e-02, -6.363e-02, -1.072e-01, 4.431e-02, -1.062e-01, 5.207e-02, -6.068e-02, -6.922e-02, 1.674e-01, -9.308e-02, -1.072e-01), r4);\n\tr5 = MulAdd(s0_0_1, M4(-4.648e-02, 1.411e-01, -1.207e-01, -7.202e-02, 7.393e-02, -2.446e-01, -2.863e-01, 6.202e-02, 1.012e-01, -1.719e-01, -2.232e-02, 7.187e-02, 1.512e-01, 3.110e-01, -6.739e-02, 5.853e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-5.433e-02, -7.891e-02, -8.691e-02, 2.145e-01, 1.367e-01, 1.396e-01, 1.303e-03, 1.708e-02, 1.735e-02, 1.026e-01, 1.665e-02, 2.595e-01, 3.817e-02, -8.155e-02, 1.659e-02, -5.938e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(-8.675e-04, 8.629e-03, -5.370e-02, 2.161e-01, 4.313e-02, -3.384e-01, 5.508e-02, -1.180e-01, -1.323e-01, 4.958e-02, 8.268e-02, -7.071e-02, 1.857e-01, -1.714e-01, -4.593e-02, -1.178e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(-3.701e-02, 2.680e-02, -5.816e-04, -2.239e-02, -7.368e-02, 1.491e-01, 1.377e-02, 7.148e-02, -1.228e-02, 2.688e-01, 5.041e-02, 5.703e-02, 1.369e-02, 1.147e-01, -1.115e-02, 5.194e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(3.425e-03, 4.918e-02, 6.935e-03, -4.331e-02, 9.676e-02, 8.941e-03, -1.849e-01, -7.944e-02, -7.296e-02, 6.079e-02, -5.639e-02, -8.032e-02, 5.048e-04, 1.386e-02, -3.993e-02, -6.071e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.203e-02, -5.234e-02, 1.369e-02, -4.013e-02, -1.762e-01, -2.884e-01, -4.834e-01, 4.804e-02, 6.870e-02, -2.025e-01, 1.917e-01, -4.822e-01, -5.968e-03, -4.370e-02, 8.253e-02, 3.089e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-2.672e-02, 1.126e-03, 9.392e-02, 2.115e-02, 3.693e-01, 1.254e-01, -9.021e-02, 9.012e-02, -3.846e-02, 1.642e-01, 1.306e-01, 6.183e-02, 1.254e-01, -3.661e-01, 8.066e-03, -5.336e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(6.309e-02, 3.398e-02, 6.434e-03, 7.179e-03, -1.258e-02, 6.812e-02, 2.241e-02, 1.428e-01, -7.986e-02, -2.008e-01, -4.250e-02, 3.358e-02, 3.255e-03, -1.727e-02, -1.359e-02, -1.443e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(3.629e-02, -2.799e-02, -1.893e-03, 1.413e-02, 1.492e-01, 3.922e-03, -2.870e-01, 8.391e-02, -8.848e-02, -3.752e-01, 1.994e-01, 1.372e-01, -7.949e-04, 1.756e-02, 2.200e-02, -3.307e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(-2.329e-02, 1.931e-02, 2.620e-02, 2.428e-02, -2.551e-01, 9.011e-02, -1.831e-01, -1.962e-01, 1.218e-01, 4.792e-02, 3.361e-02, -1.292e-02, -1.192e-02, 3.858e-03, -7.924e-02, 8.368e-03), r6);\n\tr7 = MulAdd(s0_0_2, M4(5.385e-02, 2.794e-02, 4.309e-02, 1.574e-02, 2.134e-01, -2.059e-01, 1.145e-01, 3.302e-01, -5.591e-02, 1.294e-01, 6.049e-02, -1.300e-01, 8.657e-02, 4.365e-02, -3.939e-02, 4.740e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(6.219e-03, 1.259e-01, 3.358e-02, 8.357e-02, -5.580e-02, 9.959e-03, -6.946e-03, 6.751e-02, 3.045e-02, -1.244e-01, 1.754e-02, -2.354e-02, 4.978e-02, -3.218e-01, -6.460e-02, 8.014e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.509e-01, 3.283e-02, -5.114e-02, 1.610e-01, -2.268e-02, 1.927e-02, -3.677e-02, -1.178e-01, 7.009e-02, 4.736e-02, -6.499e-02, -1.601e-01, -1.856e-01, -4.709e-01, -2.209e-01, 1.692e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.035e-02, 1.257e-01, -1.534e-01, -8.529e-02, 3.125e-02, 1.191e-01, -6.455e-02, 1.064e-02, -4.205e-02, -8.985e-02, -2.288e-01, -5.142e-02, 3.260e-01, -2.739e-02, 3.124e+00, 7.697e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(9.193e-02, -9.887e-02, -2.661e-02, 8.534e-02, 2.765e-01, 1.326e-01, -4.406e-02, -4.315e-02, -3.191e-01, -2.933e-02, -1.695e-01, -6.967e-02, -7.139e-02, -1.610e-01, -1.436e-01, -1.120e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(5.714e-02, 2.751e-02, 1.133e-01, 2.787e-02, -6.905e-02, 4.431e-02, -3.456e-02, -9.701e-02, 4.700e-02, 1.170e-02, 4.447e-02, -9.113e-02, -2.221e-01, -4.174e-01, -1.978e-01, 8.813e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-1.214e+00, -3.389e-01, -3.176e-01, 5.592e-02, 4.092e-02, 4.549e-02, -1.484e-01, -3.846e-02, 3.353e-02, 3.394e-02, 1.499e-01, 4.308e-02, 1.785e+00, 3.112e-01, 1.128e+00, -8.864e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(2.656e-03, 3.902e-02, -1.367e-01, -4.794e-02, 1.452e-01, 4.228e-02, 1.753e-02, -5.764e-04, 8.104e-02, -9.050e-02, 5.277e-02, -7.893e-02, -3.989e-01, -4.754e-02, -6.353e-02, 2.470e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(-7.147e-02, -3.723e-01, 7.958e-02, 1.708e-01, 1.572e-02, -1.344e-01, 2.642e-02, -1.133e-01, -1.114e-01, 1.124e-01, 5.529e-02, 1.064e-01, 2.171e+00, -1.446e-01, -6.692e-02, -2.755e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(-1.995e-01, -4.840e-01, -7.405e-02, -1.605e-01, -4.186e-02, 1.440e-01, 1.229e-01, 1.759e-01, 3.087e-02, 7.157e-03, -1.556e-02, 1.827e-03, -1.255e-01, -2.141e-01, 8.062e-02, 1.487e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-3.206e-02, 8.944e-02, 1.543e-01, -2.485e-01, -4.845e-02, 1.003e-01, 1.867e-01, 2.118e-01, 1.085e-01, -1.543e-01, -9.936e-02, -1.754e-01, -6.585e-02, -1.289e-02, 2.445e-02, -2.201e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.022e-01, 2.944e-01, -5.297e-01, -3.628e-01, 3.335e-02, -1.291e-01, 3.046e-01, -1.918e-02, 4.080e-02, 6.498e-01, -5.754e-01, -4.193e-01, 9.352e-02, 6.351e-01, 3.225e-02, 1.921e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(-6.188e-02, 2.433e-02, -8.973e-03, -1.699e-01, -5.060e-01, 1.088e-01, 1.667e-02, 2.518e-01, 3.214e-01, 1.100e-01, -2.454e-01, -1.559e-02, -2.333e-01, 7.417e-02, -7.829e-02, 9.955e-03), r3);\n\tr4 = MulAdd(s0_1_1, M4(6.926e-02, 8.512e-02, -9.031e-02, -6.245e-02, -7.790e-01, 2.303e-01, -7.408e-02, 2.210e-01, 1.579e-01, 1.014e-01, 5.152e-02, -9.765e-02, -1.795e-01, 4.965e-02, -1.638e-01, -1.938e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-6.068e-02, 1.162e-01, 1.248e-01, -1.628e-01, -2.620e-02, 5.061e-02, 2.538e-01, 3.642e-01, 2.266e-02, -3.411e-02, -4.853e-01, -1.493e-02, 1.365e-01, -2.488e-01, -1.005e-01, 1.801e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(3.513e-02, -7.288e-02, -1.555e-02, 2.922e-02, -5.339e-01, 1.324e-01, -4.578e-01, 1.022e-01, 6.322e-02, -4.879e-02, 2.998e-01, 1.663e-01, -2.267e-01, 1.730e-01, -1.524e-01, -2.899e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(-9.277e-01, 2.555e-03, -1.535e-01, -5.373e-02, 5.711e-02, -4.501e-01, -9.742e-02, 2.100e-01, -5.889e-01, 1.929e-01, 9.919e-02, -2.383e-01, 4.516e-03, -1.786e-01, -2.804e-03, 2.213e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-4.971e-02, -8.307e-02, 5.050e-03, -3.011e-02, -1.580e-02, 7.154e-03, -5.757e-03, 9.286e-02, -1.448e-02, -1.745e-01, 1.353e-02, -9.662e-02, 2.599e-02, 3.556e-03, 2.193e-02, -4.626e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-2.234e-03, -4.753e-02, -6.398e-02, 1.050e-02, 2.999e-01, 1.325e-01, 2.291e-01, -2.150e-01, 1.244e-01, -1.525e-01, 5.650e-02, 2.060e-01, 1.676e-03, 1.482e-02, 1.472e-02, -8.174e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(3.882e-02, -1.073e-01, -1.263e-01, 1.210e-02, 1.196e-02, 5.247e-02, 2.101e-01, -6.858e-02, 2.562e-02, 4.264e-01, -4.720e-01, -2.216e-01, 4.979e-04, -2.558e-02, -1.313e-01, -2.814e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-9.293e-02, -1.350e-02, -1.859e-01, 1.150e-02, -8.003e-02, 3.547e-01, -3.243e-01, 8.676e-02, 4.668e-01, -6.064e-02, 1.201e-01, -1.344e-01, -2.687e-02, -4.838e-02, 1.764e-01, -2.086e-03), r3);\n\tr4 = MulAdd(s0_1_2, M4(2.984e-02, 2.240e-02, -4.766e-02, 6.875e-03, -4.308e-01, -4.707e-02, 2.698e-01, -2.307e-01, -4.283e-02, -5.545e-02, 2.013e-02, 9.804e-02, 9.624e-02, -6.719e-02, 6.378e-02, 3.056e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(2.354e-02, -7.160e-02, 4.318e-02, 3.203e-02, -2.535e-01, -3.358e-02, 3.094e-01, -5.421e-02, 1.878e-02, -9.323e-02, 5.075e-02, 5.663e-03, 6.595e-03, 5.570e-02, 8.660e-02, 6.017e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(1.521e-02, 3.024e-02, 2.461e-02, 3.664e-02, -1.471e-01, -5.460e-01, 1.733e-01, 4.404e-01, 1.251e-01, -1.073e-02, 7.460e-02, -2.780e-02, -1.135e-01, 7.663e-02, -5.849e-02, 3.500e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-1.792e-03, 2.032e-02, -2.418e-02, 6.541e-02, -1.879e-01, 5.225e-01, 6.464e-03, -3.025e-01, -2.945e-01, 4.572e-02, 9.269e-02, -2.212e-02, 6.656e-02, 9.025e-02, 3.777e-02, 1.569e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-3.289e-02, -1.897e-02, 8.895e-02, 9.496e-02, 1.630e-02, -4.983e-02, 1.031e-02, -1.166e-01, 1.042e-01, 2.162e-01, 5.162e-02, 2.777e-02, -7.925e-02, -2.558e-01, -3.604e-02, 4.040e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.759e-01, -6.991e-02, 1.020e-01, 5.464e-02, -4.408e-02, -2.634e-02, -8.188e-02, 5.710e-02, 8.726e-02, -1.018e-02, -1.278e-01, -1.923e-02, 2.004e-01, 7.783e-02, 7.024e-02, 9.325e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-9.882e-03, -7.704e-03, 2.705e-03, -2.609e-02, 3.664e-02, -2.585e-02, 4.321e-02, -9.444e-03, 4.809e-03, 3.716e-02, -4.593e-01, -9.839e-02, -5.969e-02, -2.134e-01, 2.004e-01, 2.653e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(3.498e-02, 1.134e-01, -2.491e-01, 2.943e-01, -1.440e-01, -1.850e-01, 1.700e-02, 8.802e-03, -2.955e-01, -1.567e-01, -8.555e-02, -1.846e-01, -5.435e-01, 1.382e-01, -3.248e+00, 1.188e+00), r3);\n\tr4 = MulAdd(s0_2_0, M4(-9.258e-02, -1.775e-02, -1.268e-01, 1.449e-01, 1.115e-01, -2.617e-02, -2.999e-02, 4.748e-02, -4.145e-02, 7.728e-02, 3.570e-02, 4.237e-02, 4.689e-01, -9.230e-01, -5.992e-02, -6.640e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(-2.419e-01, 1.601e-01, -3.317e-02, 1.655e-01, -2.862e-02, 5.529e-02, 4.033e-02, 5.080e-02, -3.464e-02, 2.658e-02, 8.578e-02, 1.301e-01, 6.593e-02, -2.286e-01, 1.875e-01, -1.295e-01), r5);\n\tr6 = MulAdd(s0_2_0, M4(-6.220e-02, -1.718e-01, -3.771e-01, 1.499e-01, 2.486e-02, -1.743e-01, 1.708e-02, -5.456e-02, 4.154e-02, -9.113e-02, -1.834e-01, 1.476e-01, 3.935e-01, 4.194e-01, 2.621e-01, 1.152e-01), r6);\n\tr7 = MulAdd(s0_2_0, M4(-3.083e-02, -7.442e-01, -7.925e-02, -8.476e-02, -3.766e-02, 1.491e-01, -2.522e-03, -6.110e-02, -1.373e-01, 4.366e-02, 4.261e-02, 2.503e-01, 5.297e-01, 5.200e-02, -1.612e-01, -2.907e-01), r7);\n\tr0 = MulAdd(s0_2_1, M4(-1.045e-01, -3.486e-01, 3.141e-03, -1.482e-01, -9.474e-03, -1.288e-01, -4.068e-03, -4.842e-02, -5.528e-02, -1.860e-01, 6.563e-02, -1.709e-02, 4.337e-02, -4.617e-01, 1.689e-02, -3.641e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(6.330e-02, -1.593e-02, 9.956e-02, -1.587e-01, -5.558e-02, -7.388e-02, 9.639e-02, -4.849e-03, 1.890e-01, 7.238e-02, -2.115e-02, -2.597e-01, 1.184e-01, 9.686e-03, -4.528e-02, 1.095e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-5.039e-02, -5.845e-01, -1.179e-01, 1.443e-02, -4.461e-03, -4.702e-02, 7.978e-05, 7.264e-03, -4.268e-02, 2.153e-02, -2.498e-01, -5.801e-02, -1.765e-03, -2.475e-01, 6.521e-03, 1.022e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(-1.794e-02, 5.767e-02, -9.917e-01, -2.524e-01, 1.707e-01, -3.516e-01, -2.477e-02, 7.632e-02, -2.605e-01, -1.338e-01, -1.539e-01, -7.647e-01, -2.597e-01, 1.161e-01, 1.215e+00, 4.748e-03), r3);\n\tr4 = MulAdd(s0_2_1, M4(-3.284e-01, 4.327e-01, 1.233e-01, 1.161e-01, -6.994e-01, -1.267e-02, -3.242e-02, 1.421e-01, -4.596e-02, -4.229e-01, 9.046e-02, -1.626e-01, 1.703e-01, 2.143e-01, 1.072e-01, -8.092e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-3.637e-02, 1.144e-01, -1.882e-01, 4.108e-02, 1.892e-01, -1.333e-01, -5.633e-02, 1.644e-03, 2.178e-01, -2.347e-02, -1.447e-01, 1.362e-01, -2.254e-02, -1.283e-03, 5.247e-02, 1.957e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-7.502e-02, -2.081e-02, 8.415e-02, 1.056e-01, -1.026e-01, 1.328e-01, 4.690e-02, -1.028e-01, -5.707e-02, -3.796e-02, -1.928e-01, 2.769e-01, -2.872e-01, -2.129e-02, -4.349e-02, -4.033e-01), r6);\n\tr7 = MulAdd(s0_2_1, M4(9.989e-03, -1.153e-01, -4.462e-02, 3.585e-02, -3.925e-02, -1.496e-01, -5.596e-02, 5.606e-02, -1.214e-01, 1.760e-01, 7.105e-02, -5.421e-01, 2.912e-01, -4.077e-03, -3.371e-02, -4.542e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(2.719e-02, -5.778e-02, -7.632e-03, 4.906e-02, -1.081e-01, -2.940e-02, -1.169e-02, 1.143e-01, 3.448e-02, 2.522e-01, 1.898e-02, -1.953e-02, 1.160e-01, 1.054e-01, 5.951e-03, -5.426e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.114e-01, 2.283e-02, -5.383e-02, -1.871e-02, -1.714e-01, -1.999e-02, -1.018e-01, 1.505e-01, 6.680e-02, 4.847e-02, 2.478e-02, 7.986e-02, -6.070e-02, -2.031e-02, 5.041e-04, 3.479e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(-4.264e-03, 1.688e-01, -6.939e-02, 7.540e-03, 3.044e-02, -1.632e-01, 2.363e-01, 6.337e-02, 2.374e-01, 2.539e-02, -2.125e-01, -2.165e-01, 2.320e-02, -8.294e-03, 7.085e-02, -2.904e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(5.291e-02, 6.041e-02, -3.424e-01, -3.283e-02, -3.863e-01, -1.074e-01, -1.618e-01, 8.063e-02, -6.417e-01, -3.860e-01, -2.902e+00, -2.101e-01, -1.449e-01, -1.412e-01, 4.350e-01, 1.677e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(5.998e-02, 1.033e-01, 5.815e-02, 1.618e-02, 2.992e-01, -4.488e-02, 2.034e-02, 1.290e-01, -1.954e-01, -4.336e-01, -8.179e-02, -8.560e-02, 6.443e-03, -1.231e-01, 7.846e-03, 1.550e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(-5.897e-03, 5.831e-03, 4.303e-02, -7.110e-03, -2.241e-02, -1.363e-01, -2.370e-02, -4.038e-02, 1.304e-01, 4.658e-02, 5.532e-02, 6.406e-02, 5.851e-02, -8.050e-02, -2.711e-02, 1.200e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-2.083e-03, 3.020e-02, 3.866e-02, -8.705e-02, -1.595e-01, 2.241e-01, 1.149e-01, 4.138e-02, 1.053e-01, 4.821e-02, 1.583e-01, 6.908e-02, 1.880e-03, 1.007e-01, -9.027e-02, -1.838e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-9.802e-03, 5.368e-02, -2.062e-03, 1.643e-01, 1.165e-01, -1.592e-01, -1.688e-02, 1.252e-01, -1.093e-01, 1.308e-02, -4.625e-02, -3.767e-01, 1.897e-01, 1.822e-02, 1.635e-02, -6.343e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-4.854e-02, -6.549e-02, 6.156e-03, -4.834e-02, -1.074e-01, -1.203e-01, -1.425e-02, 1.535e-02, 5.146e-02, -4.911e-02, -3.100e-02, 9.791e-02, -1.281e-02, -4.876e-02, -1.250e-02, -9.702e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-5.075e-03, -8.789e-04, 2.658e-02, -5.401e-02, 3.930e-02, 2.180e-02, 8.033e-02, -3.519e-02, -1.215e-02, 5.117e-02, -2.784e-02, -2.408e-02, -7.278e-02, -1.164e-02, -3.533e-02, 4.193e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.507e-02, -5.339e-02, 1.823e-02, 4.544e-03, -4.009e-03, -2.241e-01, 1.400e-01, 2.523e-02, -3.598e-02, -1.732e-02, -6.365e-02, -2.345e-02, -1.308e-02, -8.119e-02, 9.643e-03, 1.630e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(1.789e-01, 1.246e-01, -2.207e-02, 7.346e-02, -1.579e-01, 3.388e-01, -3.479e-02, -2.270e-03, -2.768e-01, 7.430e-02, -1.300e-01, 1.047e-02, 3.454e-01, -3.126e-01, 1.440e-04, 5.741e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-2.641e-02, -2.739e-02, 3.676e-03, -8.020e-02, 9.415e-02, -1.270e-02, -3.552e-02, 1.170e-01, 5.467e-02, -1.896e-02, 3.154e-02, -4.087e-03, -4.018e-02, -4.652e-02, -2.006e-02, -8.854e-03), r4);\n\tr5 = MulAdd(s1_0_0, M4(1.029e-01, -4.752e-02, 5.702e-02, 7.017e-05, -5.254e-02, 6.084e-03, -1.136e-01, -2.013e-02, -6.579e-02, -1.389e-01, 1.341e-01, -6.557e-02, -8.243e-02, -9.171e-02, -5.580e-02, -1.293e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(9.482e-02, 5.039e-03, -3.744e-02, -2.562e-02, 6.630e-02, 3.733e-02, -2.183e-02, 5.765e-02, 4.116e-02, 2.407e-01, 9.598e-02, 2.971e-02, 1.205e-01, -1.355e-01, -1.242e-01, 3.506e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-1.569e-02, 9.642e-02, 3.380e-02, 1.441e-02, -6.132e-02, -9.287e-02, -4.306e-02, 1.487e-01, -1.441e-01, 2.252e-01, 1.191e-03, 1.867e-01, 4.422e-02, -8.077e-02, -1.117e-02, -9.912e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(4.111e-02, -2.844e-03, -1.330e-02, -7.231e-02, -8.835e-02, 2.290e-01, 2.620e-02, 4.748e-02, 1.032e-01, 6.224e-02, 9.839e-02, 2.241e-01, 2.377e-03, -5.948e-03, 5.499e-03, 7.151e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(3.871e-02, -5.997e-02, -7.115e-03, -3.422e-02, 7.041e-02, -1.347e-02, 2.352e-01, 2.485e-01, -1.285e-01, 4.749e-02, 3.447e-01, 2.310e-01, 4.259e-02, -1.279e-01, -5.541e-02, 2.502e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(9.100e-03, -1.511e-02, -1.082e-01, -2.520e-02, -1.430e-02, -2.701e-01, -5.059e-01, -2.360e-02, 5.410e-01, 1.326e-01, 1.716e-01, -3.129e-02, 5.384e-02, 1.218e-01, 5.317e-02, -2.878e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(2.851e-01, 9.440e-02, 5.143e-02, 1.392e-01, -1.597e-01, 5.751e-01, -7.746e-03, -3.101e-02, -6.898e-01, 2.336e-01, 4.200e-01, -2.330e-01, -1.495e-01, -2.561e-01, -1.641e-02, -1.401e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(1.046e-02, 1.217e-01, -1.414e-02, -1.431e-02, -3.795e-02, 1.229e-01, 1.484e-01, 4.975e-02, 6.873e-01, 2.899e-01, -2.301e-02, 2.172e-01, 6.507e-02, 1.375e-02, -8.178e-02, -7.637e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(3.055e-01, 9.699e-02, -7.170e-02, 2.508e-03, -1.112e-01, 1.533e-01, -4.428e-02, 8.992e-02, -1.261e-01, 6.092e-02, 4.830e-01, 2.120e-01, 1.487e-01, -9.370e-02, -2.665e-01, 1.019e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-9.492e-03, -5.195e-02, 1.359e-01, 1.382e-02, -6.133e-02, -3.358e-03, 1.734e-01, 1.580e-01, -2.215e-01, -1.606e-01, -9.140e-02, -2.032e-01, 6.937e-02, 1.898e-01, -1.193e-02, -1.314e-01), r6);\n\tr7 = MulAdd(s1_0_1, M4(3.623e-02, 1.047e-01, -5.761e-03, -8.452e-02, 1.630e-02, 8.420e-02, 1.871e-02, 2.766e-01, -1.852e-02, -9.291e-01, 7.293e-02, 3.179e-01, -2.446e-02, -6.480e-02, 1.842e-03, -3.088e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(4.602e-02, -7.659e-02, -1.678e-03, -8.685e-02, -9.787e-02, -1.450e-01, -1.408e-02, 5.303e-02, -2.540e-01, -8.927e-02, -5.181e-02, 1.944e-02, 9.648e-03, 3.911e-03, 2.520e-02, -6.886e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.181e-03, -2.658e-01, -2.476e-02, -1.296e-01, 8.182e-02, 5.538e-02, -1.170e-01, -1.812e-01, 5.165e-02, 9.262e-03, -7.630e-02, -1.905e-01, 1.980e-01, -3.193e-02, -3.398e-02, 7.519e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.450e-02, -9.329e-03, -1.731e-01, 1.268e-02, 8.086e-02, -3.321e-01, -2.177e-01, 8.322e-02, -6.115e-02, 1.198e-01, -9.134e-02, -1.299e-01, -2.280e-01, 2.339e-02, -2.221e-01, 1.111e-01), r2);\n\tr3 = MulAdd(s1_0_2, M4(6.993e-01, 2.529e-01, 2.764e-02, 9.731e-02, 1.445e-01, -4.631e-01, 4.064e-01, -1.271e-01, -1.016e+00, 1.683e-01, -3.410e-01, 2.100e-02, 2.490e-01, -1.373e-01, 1.541e-02, 7.949e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(7.792e-02, -1.651e-01, 1.593e-02, -7.485e-02, 2.356e-02, 2.124e-02, 9.002e-02, -6.757e-03, -1.878e-01, 5.940e-02, -4.386e-03, -1.262e-01, 8.835e-02, -1.361e-01, 1.799e-01, 2.035e-01), r4);\n\tr5 = MulAdd(s1_0_2, M4(-4.316e-03, 1.135e-01, 6.952e-02, 2.741e-02, 3.647e-02, 1.857e-02, -4.977e-02, 3.150e-03, 2.518e-02, -3.940e-02, -2.124e-02, -9.910e-02, 6.999e-03, -4.252e-02, 5.618e-02, 1.028e-01), r5);\n\tr6 = MulAdd(s1_0_2, M4(6.349e-03, 4.463e-02, 1.436e-03, -1.109e-01, -2.527e-02, 1.196e-01, -9.155e-02, 1.164e-02, -5.232e-02, 6.764e-02, -9.735e-02, 3.307e-01, -7.395e-02, -1.683e-01, -1.996e-02, -2.717e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-3.533e-02, 4.899e-02, -1.951e-02, -1.318e-02, 2.013e-01, -1.896e-02, 1.949e-02, 1.608e-01, -4.356e-01, 1.683e-01, -1.078e-02, -6.452e-03, 4.620e-01, 7.044e-03, 2.026e-01, 4.188e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-5.160e-03, 2.401e-02, -3.665e-03, 2.985e-02, 2.882e-02, 2.437e-01, 8.545e-03, -2.218e-02, 7.496e-03, 1.439e-01, 9.359e-03, -3.400e-02, -4.195e-02, -1.188e-01, 4.209e-02, 3.157e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-5.286e-02, 1.483e-02, -2.485e-02, 2.007e-03, 4.112e-02, 2.395e-02, 7.254e-02, 2.209e-01, 1.021e-01, -3.321e-02, 2.440e-02, -4.867e-02, -5.121e-02, -4.327e-02, -1.156e-02, 1.271e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-4.008e-02, -6.419e-02, 1.824e-02, -4.433e-03, -2.388e-02, -1.487e-01, -5.389e-02, 6.057e-03, -8.506e-02, -7.618e-02, -1.396e-01, -1.266e-02, 4.098e-02, 1.144e-02, -3.604e-02, -4.110e-03), r2);\n\tr3 = MulAdd(s1_1_0, M4(2.537e-03, -8.368e-02, -4.176e-02, 3.737e-02, 2.096e-01, -5.605e-01, 9.817e-02, 7.813e-02, 1.768e-01, 7.532e-02, 1.183e-01, 6.566e-02, -9.564e-02, 4.206e-02, 4.944e-02, -2.510e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(-7.959e-02, 2.921e-02, -9.029e-03, 1.189e-01, -1.992e-01, -1.333e-01, -2.873e-02, 8.284e-02, -9.367e-02, 1.584e-01, 1.132e-02, 7.597e-02, -7.623e-02, -1.208e-02, -4.940e-02, -1.567e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(-3.859e-02, 5.487e-02, -1.450e-01, -8.096e-03, 3.403e-02, 2.153e-01, -1.405e-01, 6.068e-02, -1.157e-01, 7.733e-02, 1.192e-01, 1.850e-02, 1.021e-01, -2.388e-02, 9.042e-03, 9.524e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(-7.229e-02, -8.610e-02, 1.076e-02, 5.359e-02, 2.845e-01, 9.327e-03, -2.542e-01, 5.605e-02, -1.188e-01, -1.378e-01, -7.687e-02, 9.202e-03, -4.829e-03, -4.681e-02, 1.821e-02, 1.429e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(4.464e-02, -1.334e-01, -3.188e-02, 9.489e-02, -1.978e-01, 8.832e-02, -6.229e-02, -4.386e-01, 9.420e-02, -5.801e-02, -8.125e-02, 6.927e-02, 1.417e-02, -6.858e-02, -1.982e-02, -6.123e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-2.873e-02, -3.467e-02, 6.093e-02, -1.031e-01, 1.047e-01, 6.660e-02, -7.685e-03, 1.837e-02, -5.801e-02, -1.272e-01, 2.108e-02, 2.821e-02, -7.002e-02, 1.039e-01, 1.913e-02, 2.328e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-4.603e-02, -2.470e-02, 1.603e-01, 1.513e-01, -4.082e-01, -4.922e-02, 2.474e-01, 1.638e-01, 2.805e-01, -6.443e-02, -6.334e-02, 3.008e-01, -1.346e-01, 2.626e-01, 1.707e-01, -1.332e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(5.650e-02, 9.557e-02, 3.122e-01, -2.336e-02, 1.951e-01, -2.184e-01, -4.972e-01, -1.291e-02, -7.540e-02, 1.746e-02, -2.189e-01, 6.273e-02, -1.344e-01, -9.540e-02, 2.076e-01, -4.193e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-6.189e-01, -4.947e-01, 7.999e-02, -1.589e-01, 2.822e-01, -2.855e-01, -1.087e-01, 6.940e-02, 4.062e-01, -3.182e-01, -4.482e-01, 4.804e-02, -8.189e-01, 1.920e-01, -3.549e-02, 6.025e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(-1.296e-01, -2.478e-02, -8.112e-02, 3.018e-02, -3.261e-03, -1.592e-01, -9.543e-02, -7.755e-02, -7.215e-01, -1.195e-01, 1.506e-01, -8.517e-02, -6.386e-01, -3.653e-02, 1.488e-01, 9.939e-03), r4);\n\tr5 = MulAdd(s1_1_1, M4(-9.932e-02, -1.655e-01, -8.073e-02, 1.626e-01, -1.004e-01, 1.583e-01, 3.485e-01, 9.283e-02, -3.643e-02, 1.588e-02, 2.409e-01, 1.174e-01, -6.103e-02, -1.224e-02, -3.000e-02, 8.092e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(-1.255e-01, 1.319e-01, -2.066e-01, 1.046e-01, -9.672e-02, 1.525e-01, -3.022e-01, 1.058e-01, -3.995e-01, -2.456e-01, -3.048e-01, 9.766e-02, -1.429e-01, 4.523e-01, -8.609e-02, 2.551e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(1.081e-02, 9.355e-02, -3.891e-02, -3.734e-02, -7.547e-02, -8.312e-01, -7.834e-02, -3.747e-01, -5.387e-02, -4.708e-01, 1.103e-02, -7.481e-02, 7.987e-02, 1.139e-01, 1.432e-01, 1.118e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-8.197e-02, 4.269e-02, -4.992e-02, 2.921e-02, 2.960e-01, 1.721e-01, 1.011e-01, -2.513e-02, -1.066e-02, -4.460e-02, 4.495e-02, 1.652e-01, 8.143e-02, 1.243e-01, -3.208e-02, -5.232e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(1.446e-01, 3.591e-02, 5.424e-02, 1.461e-01, -2.926e-01, 4.916e-03, -1.284e-01, 1.465e-01, 1.273e-01, 1.196e-02, -5.271e-02, 4.079e-02, -2.826e-02, 1.247e-01, 3.744e-01, -7.770e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-2.897e-01, -3.118e-02, -1.076e-01, -2.136e-02, -1.528e-01, 1.008e-01, -1.332e-01, 1.865e-02, 4.599e-02, 4.764e-02, 1.495e-02, 6.178e-02, 2.666e-01, 4.139e-02, 1.989e-01, -8.879e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(8.301e-02, -4.469e-02, -1.968e-01, -1.098e-01, -7.149e-01, -4.180e-02, -1.134e-01, 2.982e-01, 2.519e-02, 3.431e-01, -4.258e-01, 1.602e-01, -2.723e-01, 1.433e-01, 2.856e-03, 5.787e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-1.575e-01, -8.004e-02, 1.968e-01, 4.447e-02, 4.298e-02, -4.053e-01, -5.728e-02, -1.280e-01, -1.259e+00, 3.296e-01, 6.028e-02, 1.057e-01, 8.388e-01, 1.480e-01, 1.704e-02, 8.513e-03), r4);\n\tr5 = MulAdd(s1_1_2, M4(1.440e-01, 8.388e-02, -3.789e-01, -2.121e-02, 1.691e-01, -4.021e-01, -4.015e-02, 2.135e-01, 1.283e-01, -1.456e-01, -1.506e-01, 1.358e-01, -6.400e-02, 4.364e-01, 6.478e-01, -1.422e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(9.352e-02, -1.387e-01, -1.344e-01, -2.084e-02, -9.588e-02, 2.611e-02, -1.766e-02, 1.345e-01, 2.090e-01, 4.074e-02, 1.826e-01, 1.145e-01, -1.296e-01, -3.747e-01, 4.962e-02, 5.947e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(2.455e-01, 6.399e-02, 1.423e-01, 1.732e-01, 1.805e-01, 3.305e-01, 3.765e-02, -3.313e-01, 7.070e-02, -1.211e-01, -1.280e-02, -6.510e-02, -5.365e-01, 1.835e-01, -1.489e-02, 6.118e-04), r7);\n\tr0 = MulAdd(s1_2_0, M4(9.907e-04, 1.298e-02, 6.215e-03, 1.147e-02, -5.014e-02, -1.332e-01, 5.624e-03, 1.708e-01, -1.352e-02, -5.766e-02, 1.650e-02, 2.306e-02, 3.969e-02, 6.553e-02, -1.217e-02, -5.060e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-4.283e-02, 4.663e-02, -6.198e-02, 5.104e-03, 1.899e-02, -6.719e-03, -8.303e-02, -2.520e-01, -2.310e-02, -3.431e-02, -4.055e-02, -3.279e-02, -2.809e-02, 6.047e-02, -3.396e-02, -1.909e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(5.664e-02, 2.328e-02, -2.874e-02, 1.503e-02, -6.421e-02, 4.472e-01, 4.578e-01, -3.858e-02, 1.818e-03, 4.775e-02, -1.214e-02, 9.411e-04, 4.525e-02, -7.808e-02, -3.314e-03, -1.562e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(1.276e-01, -2.543e-02, 9.400e-02, -1.540e-01, -7.429e-02, 1.313e-01, 6.042e-02, -9.329e-02, 5.761e-02, 3.402e-02, -4.611e-02, -8.556e-02, -3.275e-01, -1.300e-01, 1.076e-02, 2.826e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(4.373e-02, -6.472e-02, 3.084e-02, -1.136e-01, 3.100e-04, 9.701e-03, -1.127e-02, -6.931e-03, -3.521e-02, 4.993e-04, -1.498e-02, -3.762e-02, 4.187e-02, -1.131e-01, 2.936e-02, 2.147e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-5.010e-02, -3.483e-02, 1.295e-01, 3.780e-03, 1.428e-01, -1.536e-01, -4.963e-01, -2.104e-02, 1.582e-02, 7.060e-02, -7.485e-02, 4.974e-02, 1.086e-01, 5.043e-02, -2.262e-02, -3.141e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(1.675e-01, -3.814e-02, -1.011e-02, -7.576e-03, 1.862e-01, 7.682e-02, 1.773e-01, 9.132e-02, 8.067e-02, -3.851e-03, -7.581e-02, 9.228e-02, -3.444e-02, -1.455e-02, 3.664e-02, -1.720e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(-2.892e-02, 7.811e-02, 9.179e-02, -1.190e-01, 1.824e-01, -8.691e-03, 2.856e-02, -1.823e-01, 6.355e-03, -5.856e-02, 3.470e-02, -7.183e-03, -3.859e-02, 1.585e-01, 5.873e-02, 6.439e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-2.392e-02, -1.466e-02, 1.934e-03, 1.716e-02, -8.186e-02, -9.656e-02, -1.880e-02, -1.446e-01, 9.946e-03, -1.639e-02, -1.853e-03, 1.186e-02, 1.371e-02, -3.279e-02, 4.691e-04, 4.041e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.527e-01, 4.425e-03, 6.681e-02, -3.197e-01, 2.466e-01, -3.205e-02, 2.201e-01, 5.069e-02, 9.029e-02, -1.203e-04, -3.198e-02, 5.903e-03, 1.254e-01, -9.542e-02, 9.098e-02, 5.582e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(-2.599e-02, -3.139e-02, 5.616e-02, 3.057e-02, 1.204e-01, 7.871e-01, 2.684e-01, 9.615e-02, 3.790e-02, 6.959e-02, -2.760e-03, -1.544e-02, -7.337e-02, 1.772e-02, -5.982e-02, 2.774e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-3.713e-01, -2.000e-01, -1.021e-01, 1.704e-01, -4.997e-01, 4.780e-01, 2.627e-01, 2.665e-02, 8.768e-02, -1.011e-01, 1.372e-01, 4.935e-02, 2.259e-01, -1.999e-01, -9.361e-02, -1.137e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(-7.011e-01, 2.753e-02, -9.939e-02, 4.010e-02, -1.559e-01, -2.642e-01, 8.424e-03, 6.411e-03, 6.800e-02, 3.135e-02, -3.340e-02, -1.456e-03, -2.193e-01, 1.716e-01, -5.649e-02, 9.664e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-1.223e-02, -1.077e-01, 1.612e-01, 4.437e-02, 1.514e-01, -1.094e-03, 2.366e-01, 1.812e-02, -1.863e-02, -1.428e-02, -1.393e-01, -2.682e-02, 1.499e-01, -1.146e-01, 6.151e-02, -2.551e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-1.653e-01, 4.705e-01, 6.913e-02, -1.308e-01, 9.277e-03, -1.783e-01, 6.174e-02, -1.409e-01, -1.196e-01, 6.632e-02, 6.602e-02, 3.780e-02, 4.973e-02, 9.653e-02, 7.287e-02, -1.764e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(2.557e-02, -1.745e-01, 6.810e-02, 6.003e-02, 9.844e-03, -3.624e-01, -3.203e-02, -3.613e-01, 6.421e-02, 1.450e-01, 6.850e-03, 7.529e-02, 5.511e-03, -3.840e-02, -1.075e-01, 3.480e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(8.900e-02, 1.916e-01, -1.209e-03, 2.429e-01, 1.102e-01, 3.652e-01, 2.709e-02, 5.350e-02, 8.577e-04, 1.050e-02, -3.927e-03, -1.124e-03, -4.396e-02, -8.625e-02, -3.397e-02, 2.259e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(7.067e-03, 1.721e-01, 1.860e-01, 7.263e-02, 4.367e-02, -7.926e-02, 4.667e-02, 1.049e-01, 1.121e-01, 4.732e-03, 4.840e-02, -1.674e-02, 3.879e-03, -1.362e-01, -1.489e-01, 5.888e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(4.910e-02, 2.432e-02, 1.314e-01, 3.930e-02, -1.445e-03, 4.480e-01, 1.266e-01, 9.105e-02, 3.708e-02, -8.590e-02, -5.482e-02, -8.673e-03, -6.453e-02, 3.277e-02, -2.367e-02, 3.513e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-5.996e-01, 5.022e-01, 1.081e-01, 2.547e-01, 1.275e-01, 2.665e-03, 5.719e-01, 1.477e-01, 4.909e-02, -2.292e-01, 2.384e-02, -8.018e-02, 6.119e-01, -4.118e-02, 8.399e-02, -6.749e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(1.234e+00, 1.285e-01, 3.487e-02, 9.918e-03, 1.159e-01, -2.711e-01, -6.693e-03, -2.992e-02, 1.442e-01, -3.502e-02, 5.628e-02, -7.051e-03, -8.071e-02, 4.650e-04, 7.061e-02, 1.447e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.807e-01, -3.278e-02, 4.179e-01, -9.176e-02, -6.640e-02, -4.365e-01, -3.108e-01, -5.139e-03, 9.538e-03, 4.060e-02, -6.856e-03, -2.730e-03, 1.028e-01, -1.473e-01, -4.598e-02, -6.768e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-1.770e-01, 2.943e-03, 1.022e-01, 2.839e-01, 7.384e-02, 9.289e-02, 1.690e-01, 2.704e-01, -4.755e-02, -7.476e-03, 4.262e-03, -8.079e-02, -5.162e-03, 1.907e-01, -5.624e-02, 4.754e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-1.416e-01, -1.086e-01, 4.626e-02, -7.980e-02, 1.077e-01, 2.093e-01, -8.721e-02, 4.572e-01, 4.590e-02, 3.119e-02, 5.188e-02, 3.102e-02, 6.853e-02, -1.575e-01, -2.777e-02, -1.223e-01), r7);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.333e-02, 5.113e-02, -6.687e-02, -8.046e-02, -3.466e-02, 2.909e-02, 1.416e-02, 1.247e-02, -1.511e-02, -7.252e-02, 1.876e-02, 1.208e-02, -3.975e-04, -1.508e-01, 7.443e-03, -8.620e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.974e-01, 6.852e-02, -6.622e-02, 4.003e-02, -9.436e-02, -1.710e-02, 4.535e-02, 1.325e-02, -1.134e-01, 8.518e-03, 9.641e-03, -8.414e-03, 3.159e-02, 3.656e-02, -3.853e-02, -2.014e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(-2.724e-02, 1.613e-01, 5.991e-02, -8.525e-02, 9.655e-03, -9.137e-02, -4.709e-02, -1.825e-02, 1.637e-02, -3.365e-01, -1.213e-01, -1.821e-02, -8.671e-02, -2.358e-01, -2.469e-01, -9.573e-03), r2);\n\tr3 = MulAdd(s0_0_0, M4(-5.011e-02, -1.731e-01, -5.714e-02, -1.911e-01, 2.691e-01, -3.779e-01, -9.439e-03, 1.752e-01, -2.264e-02, 2.241e-01, 1.027e-01, -2.916e-02, -8.745e-02, 3.741e-02, -5.646e-02, 3.148e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(7.667e-02, 3.647e-02, -8.511e-04, 6.114e-02, -4.759e-02, 1.926e-03, -1.550e-02, -9.873e-02, 1.439e-02, -2.190e-02, 2.663e-02, 4.691e-02, -1.516e-01, -4.968e-02, -8.853e-03, -1.294e-01), r4);\n\tr5 = MulAdd(s0_0_0, M4(-1.261e-05, 8.418e-02, -2.558e-01, -1.437e-01, -1.123e-01, -7.588e-02, 7.604e-02, 2.594e-02, 3.967e-02, -4.985e-02, 1.144e-02, 5.121e-02, 2.399e-02, -5.078e-02, -2.555e-02, 2.473e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-6.007e-02, -1.949e-01, 2.250e-01, -9.344e-02, 1.271e-01, 4.864e-02, -9.887e-02, 1.988e-03, -2.985e-02, 2.551e-01, -9.589e-02, -8.303e-02, 8.520e-02, -9.693e-02, -3.117e-02, 5.688e-05), r6);\n\tr7 = MulAdd(s0_0_0, M4(9.199e-03, 1.660e-02, -3.637e-02, 4.263e-01, 3.793e-02, -4.234e-02, -3.595e-02, -1.023e-01, 1.076e-01, -2.490e-01, 3.315e-02, 1.010e-01, 1.122e-01, -3.338e-01, 4.487e-03, -3.825e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(1.258e-01, -1.004e-01, 9.798e-03, 6.174e-02, -1.068e-02, -1.157e-02, 5.650e-03, 3.482e-03, -6.767e-02, 2.555e-01, 7.603e-02, 6.846e-02, 3.991e-02, 4.700e-02, 5.359e-02, 1.627e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.061e-01, -9.875e-02, -6.514e-03, -9.010e-03, -1.507e-03, -1.296e-02, -3.089e-02, -2.847e-01, -5.006e-02, -2.574e-02, -2.425e-01, -2.254e-01, 4.827e-02, -1.207e-01, -7.930e-02, 1.087e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(2.861e-01, 2.092e-02, 1.834e-02, 5.187e-02, 1.137e-01, -6.675e-02, -1.920e-01, -6.050e-02, 3.222e-02, -3.776e-01, 2.569e-01, 1.086e-02, 1.263e-01, 1.049e-01, -1.312e-01, 1.512e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(5.013e-02, 7.999e-02, 3.594e-02, 9.801e-02, 3.058e-02, 1.056e-01, -9.626e-02, 2.731e-01, -1.494e-02, -1.589e-01, 6.324e-02, 4.926e-01, 6.434e-01, 1.343e-01, 8.108e-02, 4.182e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-5.041e-02, -8.540e-02, -1.361e-01, -3.598e-01, 2.250e-02, 4.374e-02, 3.190e-02, -8.814e-02, -1.208e-01, -3.105e-02, 2.879e-02, 1.391e-01, 9.356e-02, -2.265e-01, 5.743e-02, 4.171e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(2.725e-01, -3.917e-01, -1.937e-01, 6.614e-02, 4.731e-02, -1.317e-01, -1.812e-01, -1.600e-02, -7.559e-01, 1.605e-02, 4.464e-01, 2.032e-01, 2.148e-01, -5.519e-02, -7.712e-02, 1.081e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(1.128e-01, -7.030e-02, 1.190e-01, 5.008e-02, -2.121e-03, 1.384e-01, -1.408e-01, 1.122e-02, -1.991e-01, -2.335e-01, -8.688e-02, 2.362e-01, -3.278e-01, 6.484e-02, 2.366e-01, 6.639e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(-2.759e-02, -2.549e-01, 9.038e-02, -4.693e-01, -4.781e-02, -1.955e-01, 1.413e-01, 1.973e-01, 8.380e-02, -2.304e+00, 9.186e-02, -3.527e-01, 6.265e-02, -1.728e-02, 1.512e-01, 7.655e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(7.435e-02, -4.505e-02, -3.681e-03, 1.244e-01, 6.107e-03, -2.422e-02, 9.412e-03, -6.078e-02, -3.930e+00, -4.098e+00, 6.519e-02, 5.239e-02, 6.696e-03, 1.230e-01, 5.039e-03, -1.185e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.769e-01, 4.500e-02, -6.372e-02, 4.827e-02, 2.970e-01, 1.381e-01, -6.009e-02, 8.954e-02, 3.134e-01, -1.865e-02, -1.139e-01, -2.016e-01, 8.149e-02, -2.300e-02, -5.177e-03, 3.661e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-7.216e-02, -6.759e-01, -3.706e-01, -1.754e-01, -2.064e-01, 2.075e-01, -6.910e-02, 2.392e-01, -4.304e-02, -7.166e-01, 5.042e-01, 2.377e-01, 1.292e-01, -4.982e-02, 3.257e-02, 9.583e-03), r2);\n\tr3 = MulAdd(s0_0_2, M4(-3.400e-03, -7.322e-02, -3.080e-01, 1.971e-02, 2.660e-01, 1.129e-01, -6.276e-02, 1.916e-01, -2.884e-01, -1.706e-01, -1.438e+00, -8.659e-02, 3.287e-01, 8.443e-03, 3.962e-02, 5.461e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(1.012e-01, 1.833e-02, 8.284e-02, 2.253e-01, 1.778e-01, 5.466e-02, 1.890e-01, 1.461e-01, -7.823e-02, 2.640e-01, 1.692e-01, -4.930e-02, 5.009e-02, -6.535e-02, -7.785e-02, 4.648e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(7.088e-02, -7.657e-02, -1.639e-01, 6.725e-02, 5.237e-02, -6.023e-02, 1.407e-01, 8.119e-02, -4.641e-02, -2.855e-02, -3.762e-02, 1.456e-01, -1.253e-01, 5.610e-02, 6.420e-02, 3.471e-03), r5);\n\tr6 = MulAdd(s0_0_2, M4(-3.883e-01, -1.568e-01, 1.162e-01, -2.220e-03, 8.223e-03, -1.679e-01, 3.401e-02, 1.113e-01, 1.796e-02, 2.008e-02, -1.076e-01, -1.629e-01, 1.883e-02, 7.622e-02, 2.386e-02, -1.008e-01), r6);\n\tr7 = MulAdd(s0_0_2, M4(1.826e-01, -1.517e-01, 3.189e-01, 2.360e-01, 3.642e-01, -2.266e-01, 2.754e-01, 1.650e-01, 3.682e-01, -4.258e-02, 2.046e-01, -2.680e-01, 1.090e-01, 8.929e-02, 9.791e-04, -2.740e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-2.537e-02, 1.602e-03, 2.911e-02, 6.277e-02, -1.958e-03, -1.233e-01, -8.414e-03, -9.049e-02, 3.215e-02, -5.079e-02, 5.473e-02, -8.859e-02, 1.237e-01, 1.084e-01, -1.258e-02, 1.493e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(5.849e-02, 2.022e-02, -1.232e-02, -6.594e-02, -1.323e-01, -3.775e-03, -5.378e-03, 1.270e-02, -8.336e-03, 5.148e-03, -7.074e-03, 1.134e-01, -7.995e-03, -1.133e-01, 1.311e-01, 1.221e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(8.741e-02, 8.940e-02, -1.431e-01, 2.226e-02, 1.751e-02, -1.460e-01, -6.902e-02, 9.474e-03, 7.352e-02, -2.048e-01, -1.145e-01, 2.709e-02, -3.694e-02, 1.119e-01, 2.294e-01, 1.712e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.850e-01, -1.043e-01, -2.656e-01, -1.193e-01, -1.864e-01, 1.236e-01, 4.387e-02, 2.233e-02, 2.016e-01, 5.500e-02, 2.663e-02, 7.559e-02, -1.773e-01, 3.721e-01, 6.633e-02, -5.058e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(-1.601e-01, 5.402e-02, -6.657e-02, -9.684e-02, -8.612e-02, -2.095e-02, -3.108e-02, -6.154e-02, 6.202e-02, -2.322e-02, 5.085e-02, -8.802e-02, -5.879e-02, -6.329e-02, 1.304e-01, 8.338e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-3.980e-02, 1.294e-01, -2.096e-02, 4.913e-03, -5.690e-02, -5.219e-02, -1.270e-01, -3.236e-02, -4.399e-02, 6.537e-02, 3.175e-01, 1.000e-01, 6.806e-02, -1.825e-01, 3.461e-02, -2.032e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-3.007e-02, -6.034e-02, 6.529e-02, -6.665e-02, -8.458e-03, -5.290e-02, -3.040e-02, 4.403e-02, -3.115e-02, 1.022e-01, -9.665e-02, 3.309e-02, -3.266e-01, 2.002e-02, -1.617e-01, 6.652e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(5.622e-02, -2.299e-01, -1.434e-01, 2.394e-01, -3.576e-02, 6.740e-02, -1.225e-02, -8.856e-03, -7.165e-02, 1.464e-01, 9.691e-02, 8.675e-02, -1.456e-01, 5.723e-01, 1.156e-01, 9.276e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(3.858e-02, 1.173e-01, 5.125e-03, 9.054e-02, -6.503e-02, 1.546e-01, -5.306e-02, 1.719e-02, -4.822e-02, -2.297e-01, -9.118e-03, 7.041e-03, -1.601e-02, -2.015e-01, -2.835e-02, -5.484e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.637e-01, -6.048e-02, 4.401e-01, 5.036e-01, -1.036e-01, 3.466e-02, 1.761e-01, -6.264e-03, -2.690e-01, 6.950e-02, -1.313e-01, 1.780e-01, 1.444e-01, 9.884e-02, 3.792e-01, -6.030e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.352e-01, 4.205e-01, 1.993e-02, -9.101e-02, -2.744e-01, 8.065e-02, 2.682e-01, -3.036e-02, 3.472e-02, -3.347e-01, -9.846e-02, 2.182e-02, -9.253e-02, -2.482e-01, 1.552e-01, -7.220e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(2.753e-02, 3.458e-01, -1.045e-01, -7.432e-02, -9.197e-01, 5.174e-01, 4.329e-02, -8.350e-01, 4.717e-01, 3.235e-02, -4.585e-02, 1.108e-01, 2.483e-01, -1.288e-01, 3.582e-02, -3.379e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(3.572e-01, -4.172e-02, 1.163e-01, -4.170e-01, -5.193e-02, -2.366e-01, 6.286e-02, 1.560e-02, -1.291e-01, 1.362e-01, -1.963e-02, -9.443e-02, 2.960e-01, 1.890e-01, 1.830e-01, 1.969e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.770e-01, -3.662e-01, 2.610e-01, 3.318e-02, 1.990e-01, -1.224e-01, -1.050e-01, 6.218e-03, -4.867e-02, 2.523e-01, 1.998e-01, 8.627e-02, -3.721e-01, 5.990e-01, -1.550e-01, -3.928e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(8.208e-02, 1.134e-01, -6.398e-02, 1.778e-02, -9.032e-02, 2.137e-01, 2.305e-01, -1.006e-01, 1.369e-02, 2.398e-01, -4.431e-02, 3.209e-01, 7.772e-01, -1.094e+00, 2.286e-02, -6.776e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(1.271e-01, -6.125e-02, 2.838e-02, -3.514e-01, -2.869e-02, 9.841e-02, 1.838e-02, -2.375e-01, -7.822e-02, 1.523e-02, 8.357e-02, -1.879e-01, 1.568e-01, -1.858e-01, 1.698e-01, 7.795e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-7.512e-02, -3.536e-01, 1.179e-01, 1.560e-01, 1.851e-01, -3.542e-02, 1.919e-02, 2.685e-01, -7.597e-02, -3.664e-01, 7.392e-02, -3.808e-02, -7.476e-02, -5.472e-02, -6.447e-03, 8.685e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(5.714e-02, 8.198e-02, 1.619e-02, 3.670e-02, -4.986e-02, -2.194e-01, 3.277e-01, -8.160e-02, -2.134e-01, -1.208e-02, -3.301e-02, 2.104e-01, -8.939e-02, -5.966e-02, -1.220e-01, 1.419e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(3.779e-02, -1.309e-01, -3.620e-02, 2.347e-01, 2.175e-01, 3.018e-02, 7.725e-02, -6.250e-02, 1.497e-03, -2.415e-01, -2.248e-02, -4.152e-04, -1.863e-02, 3.729e-01, -1.013e-01, -3.229e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(1.065e-02, 5.110e-01, -1.065e+00, -3.663e-01, -1.327e-01, 3.564e-01, 2.270e-01, -4.279e-01, 6.430e-01, 3.182e-02, -6.850e-01, -1.835e-02, -8.279e-01, -1.322e-01, 6.011e-02, -1.425e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(3.047e-01, -6.813e-02, 3.429e-02, -1.582e-01, 8.077e-03, -2.045e-01, 2.208e-02, 2.434e-01, -7.528e-02, -1.551e-01, -1.243e-01, -1.114e-01, -1.552e-01, 5.012e-02, -1.604e-02, 6.087e-03), r4);\n\tr5 = MulAdd(s0_1_2, M4(2.014e-01, -2.049e-02, 1.122e-01, 2.852e-01, 6.774e-01, 4.444e-01, 4.245e-01, -8.792e-02, 9.399e-02, 1.546e-01, 1.549e-01, 2.006e-01, 2.552e-01, -2.431e-01, 6.942e-02, -2.790e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-2.094e-01, 1.054e-02, 2.303e-01, 4.031e-01, -1.264e-01, -9.381e-01, 1.247e-01, -1.749e-01, 1.548e-01, 1.260e-01, -1.365e-01, -6.699e-02, -2.895e-01, 1.812e-01, 9.347e-03, 8.297e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(3.244e-01, 3.195e-01, 2.160e-02, 3.515e-01, 1.720e-02, 1.712e-01, 3.195e-02, -6.074e-02, 1.255e-01, -7.368e-02, 9.224e-02, -3.494e-01, -1.293e-01, -1.427e-02, -7.823e-02, 1.219e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-2.453e-02, 2.413e-01, -5.942e-02, 2.554e-02, -2.175e-03, -6.494e-02, -7.107e-03, -1.611e-02, 9.069e-03, -1.206e-02, -1.934e-03, 1.606e-04, -2.669e-02, 1.040e-01, -8.689e-03, 9.273e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-9.223e-03, -5.675e-02, 1.295e-01, -4.690e-02, 2.306e-02, 3.367e-02, -1.782e-03, -9.544e-03, -2.446e-02, -5.308e-04, 9.524e-03, -1.429e-02, -1.216e-02, 9.123e-02, 1.871e-01, -3.444e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.163e-02, 3.028e-02, 2.179e-01, 1.320e-02, -5.199e-03, 7.200e-04, 1.981e-02, 5.084e-03, 6.939e-03, 3.039e-02, 7.633e-03, -2.004e-03, -4.575e-02, -2.265e-01, 2.259e-03, -3.684e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-1.776e-01, 1.424e-01, -9.068e-02, -1.254e-01, -9.695e-02, -3.008e-01, 1.479e-02, 2.419e-01, 5.312e-02, -4.332e-02, 5.100e-02, -4.822e-02, -9.719e-02, -3.931e-03, 1.091e-01, 1.642e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-1.213e-01, 1.577e-02, 1.531e-02, 1.117e-01, -6.338e-02, -2.976e-03, 5.119e-02, -5.900e-02, 4.260e-02, 1.131e-02, -1.902e-02, 9.575e-03, -2.262e-01, -4.676e-02, 1.016e-01, 3.849e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-1.449e-02, 2.661e-02, -1.608e-01, -9.154e-02, 7.341e-02, 3.475e-02, -9.850e-02, 3.390e-03, 1.585e-02, 4.537e-03, -1.704e-02, 1.564e-02, -9.428e-02, -1.665e-02, 1.522e-01, -5.383e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(-1.734e-01, -1.707e-01, 6.329e-02, -1.669e-01, -4.795e-03, -2.413e-02, -2.307e-02, 5.213e-02, 6.921e-03, 1.731e-02, 4.064e-02, 5.742e-02, -2.180e-01, 3.159e-01, 4.763e-02, -3.306e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-2.271e-02, -8.363e-02, -7.949e-02, 5.893e-02, 4.407e-02, 5.924e-02, 5.877e-02, 1.229e-01, 2.265e-02, 6.634e-02, 1.860e-02, 2.184e-02, -1.465e-02, -8.863e-02, 9.429e-02, -3.134e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(9.888e-02, 7.770e-02, 3.059e-02, 6.504e-02, -4.684e-02, 8.550e-03, 7.549e-02, -4.359e-02, 2.206e-02, -1.683e-03, -3.017e-03, -2.434e-02, 7.100e-02, 9.836e-02, -3.966e-02, -3.396e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(9.039e-02, -2.979e-02, 2.273e-01, 2.154e-01, 9.757e-03, -4.325e-02, 5.264e-02, 3.837e-02, 1.155e-01, 1.458e-03, 1.442e-02, 2.417e-02, 1.607e-01, 6.101e-02, 4.152e-03, 4.200e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(2.953e-02, -1.647e-01, 3.522e-02, -7.146e-02, -3.107e-02, -4.070e-02, 3.991e-02, -2.152e-03, 2.473e-02, -2.967e-03, 1.089e-02, 1.289e-02, -2.687e-02, 1.937e-01, 5.213e-02, -4.855e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-1.300e-01, -2.111e-01, -1.528e-01, -8.579e-02, -1.160e-01, -1.935e-01, -9.172e-03, -1.317e-01, 1.838e-02, 4.709e-02, 7.254e-02, -5.955e-02, -9.714e-01, -1.136e-01, 4.108e-02, -1.061e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(-1.118e-01, -1.428e-01, 6.877e-02, -6.916e-02, -7.026e-02, 1.345e-01, 3.734e-02, 3.493e-02, 9.638e-02, 4.353e-02, -9.068e-03, -1.536e-02, 7.718e-01, -3.516e-02, 5.115e-02, 3.097e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(1.411e-02, -1.931e-01, 1.217e-01, 5.892e-02, -2.325e-02, -1.453e-01, 1.352e-01, 7.753e-02, 1.991e-02, 7.136e-03, 1.264e-03, -1.983e-02, 3.113e-02, -1.085e-03, 2.017e-01, -1.150e-01), r5);\n\tr6 = MulAdd(s0_2_1, M4(-9.358e-02, -1.027e-01, -2.589e-01, -1.762e-01, -1.106e-01, 3.788e-01, -4.296e-02, 5.210e-02, -4.878e-03, -2.091e-02, 2.431e-02, 4.280e-02, 3.770e-02, 5.224e-01, 5.157e-02, -8.189e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(-4.252e-02, -2.369e-01, -4.674e-03, 7.081e-03, -5.746e-02, 1.549e-02, -2.554e-02, -8.336e-03, -5.403e-02, 2.691e-02, -2.401e-03, 7.780e-02, -1.416e-01, 6.656e-02, -9.907e-03, -9.019e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(1.566e-01, 2.610e-01, -6.758e-02, 8.178e-02, 8.653e-03, 6.451e-02, -6.966e-02, 1.993e-01, -1.846e-02, -1.413e-01, 5.386e-03, 6.638e-03, -3.490e-02, -1.017e-01, 1.406e-02, 4.069e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.741e-01, 5.561e-02, 6.791e-02, -7.708e-03, 9.583e-02, 8.621e-02, -2.173e-01, 1.396e-01, 5.894e-02, 8.939e-04, -1.952e-02, -2.620e-02, -1.303e-01, 1.774e-02, -1.694e-02, 1.336e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(4.369e-02, -2.237e-01, -9.450e-03, -3.734e-02, 1.536e-01, -5.935e-02, 5.483e-02, -7.420e-02, 1.081e-02, -1.229e-01, 1.186e-01, 9.972e-03, 4.226e-02, -5.862e-02, -4.678e-03, 2.593e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(-6.013e-02, -4.558e-01, 5.776e-01, 1.793e-01, 3.210e-01, -3.334e-01, -7.409e-02, -2.962e-01, -4.601e-02, -5.022e-02, 9.912e-02, 4.923e-04, -4.666e-01, 6.564e-02, -2.499e-01, 5.657e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(3.751e-02, -1.273e-01, 8.866e-02, 1.302e-01, -1.112e-01, 6.204e-02, -6.685e-02, 9.510e-03, 7.137e-02, -7.609e-02, 1.261e-02, 1.297e-02, -7.242e-01, 1.832e-01, -5.028e-02, 1.128e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(1.386e-01, 1.166e-01, 1.630e-01, -1.292e-01, 3.153e-02, 7.590e-02, 1.151e-01, -9.668e-02, 2.466e-02, -1.185e-01, -9.375e-02, 1.727e-02, 5.461e-02, -7.936e-02, -2.842e-02, 7.716e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-3.167e-01, 1.032e-01, 5.785e-02, 6.879e-02, 1.788e-01, 4.380e-01, -2.406e-01, -1.138e-01, -1.388e-02, 2.546e-03, 3.152e-03, -5.654e-02, 1.372e-01, -6.422e-02, -3.180e-02, 2.732e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-1.711e-01, -1.319e-02, 1.262e-03, -1.128e-01, -3.153e-01, 1.430e-02, -1.875e-01, -1.045e-01, 5.153e-02, 2.632e-02, 2.312e-02, 5.114e-02, 6.041e-02, -3.485e-02, -3.773e-02, -1.350e-01), r7);\n\tr0 = MulAdd(s1_0_0, M4(-3.554e-02, 8.839e-02, 1.896e-02, 5.743e-02, -7.303e-02, 1.973e-01, 5.075e-03, 1.103e-01, 6.116e-02, 2.957e-02, 3.693e-02, 1.095e-02, 2.655e-02, 5.948e-02, 2.400e-02, 2.636e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(-5.426e-02, -1.015e-02, -9.162e-03, -1.169e-01, -1.032e-01, -3.024e-01, 3.296e-02, 5.015e-02, -6.397e-02, 3.040e-02, 2.044e-03, -2.052e-02, 2.834e-02, 2.340e-01, 3.178e-02, -6.034e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-2.007e-02, -1.812e-02, 1.044e-01, 8.775e-02, 1.802e-01, -8.040e-02, 1.977e-01, -1.260e-01, 4.735e-02, 8.141e-02, -1.912e-02, 2.207e-02, -2.018e-01, -7.293e-02, 1.310e-01, 5.185e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-4.223e-02, -2.628e-01, 5.067e-02, 2.719e-02, -7.272e-02, -1.075e-01, 7.681e-02, -2.390e-01, 1.771e-01, -3.103e-01, 9.428e-02, -5.542e-02, -1.576e-01, -8.513e-02, -3.677e-02, 3.446e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-3.047e-03, -1.053e-02, -2.117e-02, 4.764e-02, 2.668e-02, 1.425e-02, 9.214e-03, 7.926e-02, 1.717e-02, 1.028e-02, 5.389e-03, -1.630e-01, -4.513e-02, -9.412e-02, 7.203e-02, -1.233e-01), r4);\n\tr5 = MulAdd(s1_0_0, M4(-1.762e-02, 6.891e-02, 1.085e-01, 3.036e-02, -9.460e-02, -3.011e-02, -1.590e-01, -1.008e-02, 6.403e-02, 3.965e-02, 1.153e-01, 6.821e-02, -7.976e-02, -1.846e-02, 1.343e-01, 3.872e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-3.964e-02, 2.328e-02, -5.946e-02, 8.369e-02, 2.576e-02, 3.130e-02, 2.685e-03, 1.002e-01, 3.192e-02, 5.122e-03, -3.522e-02, -4.764e-02, -2.456e-01, -1.266e-01, 1.072e-01, 8.306e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-2.750e-02, -1.079e-01, 2.189e-03, -1.763e-01, -8.178e-02, 4.740e-02, 1.336e-02, 1.842e-01, 4.753e-02, 1.188e-01, 6.432e-02, 7.805e-02, -2.743e-03, -1.028e-01, -1.092e-01, 1.516e-01), r7);\n\tr0 = MulAdd(s1_0_1, M4(-6.003e-02, 2.088e-01, -7.637e-04, 1.848e-02, 1.135e-01, 1.272e-01, 1.072e-02, 2.625e-02, 8.934e-02, 4.640e-03, -1.636e-02, -5.375e-02, -1.594e-02, 7.184e-02, 7.667e-02, -3.832e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.623e-02, -1.002e-01, 1.255e-01, 1.430e-01, 1.773e-01, 4.175e-02, 9.021e-03, -2.451e-04, 7.410e-02, 5.783e-02, -9.641e-02, -1.278e-01, 1.280e-01, -3.298e-01, 2.004e-02, -4.776e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(7.985e-03, -3.746e-01, -6.045e-02, -8.519e-02, 1.869e-02, -1.073e-01, 2.492e-01, -4.386e-02, 3.236e-03, 7.181e-02, 1.168e-01, 3.253e-02, 5.752e-02, 1.293e-01, -1.062e-01, -1.636e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(-1.321e-01, -1.346e+00, -1.815e-01, -1.778e-01, 2.858e-02, 3.227e-02, 6.191e-02, -8.929e-02, 1.159e-01, -3.278e-01, 1.699e-01, -5.913e-02, -2.732e-01, -1.140e-01, -4.029e-02, 1.023e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(1.356e-01, 2.802e-01, 3.694e-03, -3.301e-02, -9.281e-02, -3.947e-02, 3.441e-02, -6.132e-02, 9.117e-02, -1.192e-02, 1.671e-02, -1.359e-01, 3.128e-02, -1.123e-02, 1.601e-01, 6.523e-05), r4);\n\tr5 = MulAdd(s1_0_1, M4(4.239e-02, -3.969e-02, -9.720e-02, 1.296e-04, 1.852e-01, -1.608e-01, -1.471e-01, 1.221e-02, 1.084e-01, 4.544e-02, 6.709e-02, 3.256e-02, -1.398e-01, -2.368e-01, -5.230e-02, -8.180e-03), r5);\n\tr6 = MulAdd(s1_0_1, M4(-3.558e-02, 1.012e-01, 1.212e-01, -1.376e-01, -2.221e-02, -8.405e-03, 1.718e-01, 5.982e-02, 1.766e-01, -2.655e-02, -1.063e-02, -2.743e-02, -2.528e-01, 5.997e-02, 2.174e-02, -2.028e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-2.178e-01, 1.946e-03, -8.034e-02, 1.178e-01, -1.092e-03, 1.384e-01, -1.480e-01, -1.958e-01, 6.721e-02, 2.096e-01, 1.306e-01, -1.111e-02, -4.665e-02, 1.711e-01, 1.303e-01, 8.651e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(8.323e-02, -5.420e-02, -3.104e-02, -8.389e-02, 7.495e-03, -1.373e-01, -1.119e-02, 1.508e-01, 2.520e-02, 1.077e-01, 1.471e-02, -4.796e-02, 8.292e-02, 7.398e-02, -5.567e-03, 5.414e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(4.029e-03, -8.483e-02, -4.575e-03, 6.590e-02, 5.436e-02, 2.640e-02, 1.383e-02, -1.257e-01, 6.705e-02, 5.565e-02, 4.515e-02, 5.653e-02, 7.955e-02, -1.699e-02, 1.438e-01, 1.547e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(-2.401e-02, 3.973e-01, -6.371e-02, 4.738e-01, 8.958e-02, 5.140e-02, 1.189e-01, 1.721e-02, -4.397e-02, -6.691e-02, 2.417e-02, -1.868e-03, 1.005e-01, -1.100e-02, 1.198e-01, 5.239e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-5.688e-02, -9.418e-01, -2.817e-02, -1.697e-02, 1.502e-01, -1.212e-01, -5.046e-02, -6.457e-02, -3.824e-02, 7.844e-04, 1.509e-02, 1.192e-01, -5.646e-02, 5.608e-02, 5.115e-02, 3.193e-01), r3);\n\tr4 = MulAdd(s1_0_2, M4(1.565e-01, 2.062e-01, 7.820e-02, 5.149e-02, 1.110e-01, -8.719e-02, 7.787e-02, -8.826e-02, 1.408e-01, 4.452e-02, 5.949e-02, 5.680e-02, 8.013e-02, -3.953e-02, -1.599e-02, -5.427e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-1.970e-02, 1.891e-01, 9.403e-02, -3.115e-02, 6.693e-02, -9.797e-02, 4.972e-02, -5.394e-02, 7.241e-02, -4.924e-02, 5.976e-02, 5.998e-02, 5.641e-02, 4.693e-03, 7.712e-02, 1.111e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-2.878e-02, -2.981e-02, 5.148e-02, 1.795e-01, 7.152e-02, -3.937e-02, -1.602e-02, 1.344e-02, 2.287e-02, 5.722e-02, 8.352e-02, -6.906e-02, -3.848e-02, -3.188e-02, 4.739e-02, -1.140e-01), r6);\n\tr7 = MulAdd(s1_0_2, M4(2.300e-01, 2.023e-02, -1.021e-01, -2.136e-01, 4.509e-02, 8.254e-02, -5.928e-02, -7.251e-02, 8.287e-02, 9.062e-02, 1.072e-01, -3.328e-02, 2.107e-01, 4.711e-02, 9.103e-02, -1.598e-01), r7);\n\tr0 = MulAdd(s1_1_0, M4(1.327e-02, -6.685e-03, -1.207e-02, -1.004e-02, 5.746e-02, -5.673e-02, 1.038e-02, 1.871e-03, -2.058e-04, -4.924e-02, 1.584e-03, -6.742e-03, -6.200e-02, 3.446e-02, -7.731e-02, -2.938e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(-3.074e-02, -4.927e-02, -2.199e-03, 1.704e-01, 2.675e-02, -8.371e-02, 1.120e-01, 1.103e-01, -7.542e-02, -5.015e-02, -5.229e-02, -3.475e-03, -2.377e-02, 1.532e-02, -3.503e-02, 1.435e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.561e-01, -5.913e-02, 1.063e-01, 1.652e-02, 7.395e-02, 1.015e-01, -5.554e-02, 9.022e-02, -8.441e-02, 2.529e-01, -1.102e-01, -5.735e-02, -2.503e-01, -7.291e-03, -5.963e-03, -6.953e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-7.162e-02, 4.150e-02, 2.434e-01, 7.409e-02, -3.850e-01, -8.428e-02, -1.307e-02, 3.316e-02, 7.891e-02, 5.130e-01, 7.680e-04, 5.999e-02, -3.383e-02, -2.267e-01, 3.933e-02, -1.601e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(3.701e-02, -1.308e-01, 4.405e-02, 1.061e-01, -3.917e-01, 2.576e-01, 2.345e-02, -1.321e-01, 1.066e-01, 1.352e-01, -7.130e-03, 1.098e-02, -2.012e-01, -8.262e-02, 1.104e-01, 1.392e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.786e-02, 3.259e-02, -6.959e-02, 1.059e-02, -7.933e-02, 4.362e-01, 2.738e-01, 4.269e-02, 1.254e-01, -1.675e-01, 1.126e-01, 5.503e-02, -5.512e-02, -6.921e-02, 3.868e-02, -4.377e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(9.278e-02, -3.103e-03, -1.071e-01, 1.396e-01, -3.243e-01, -1.793e-01, -1.192e-01, 2.254e-02, -1.626e-01, 4.318e-02, 1.519e-01, 3.599e-02, 8.994e-02, 2.340e-02, 2.473e-01, -3.730e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.251e-01, -8.395e-02, 8.439e-02, -2.401e-01, 2.790e-01, -6.533e-01, -1.132e-02, -2.139e-01, 1.105e-01, 7.069e-02, -9.455e-03, -2.039e-01, -1.757e-02, 5.344e-02, -5.334e-02, -8.695e-04), r7);\n\tr0 = MulAdd(s1_1_1, M4(-1.622e-01, -2.372e-02, 3.109e-03, -1.743e-01, -6.617e-02, 6.284e-01, 3.506e-02, 4.349e-02, 9.124e-02, -1.378e-01, 3.185e-02, -2.924e-02, -2.609e-02, -8.145e-02, -9.198e-02, -1.314e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-6.697e-02, 2.332e-01, 1.542e-01, 1.103e-01, -9.745e-02, -5.159e-01, -2.373e-01, 3.136e-01, 1.324e-01, -8.426e-02, -4.464e-02, -2.666e-01, -1.576e-01, 2.585e-01, 7.313e-03, 7.209e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(7.107e-05, 1.132e-01, -1.262e-01, 7.956e-02, 8.592e-02, -2.406e-01, 3.158e-02, -4.477e-02, -9.490e-02, 3.960e-01, 2.756e-01, 1.731e-01, 1.870e-01, 4.355e-02, 3.406e-01, 1.852e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(4.831e-02, 2.480e-01, 2.886e-01, 1.369e-01, 3.627e-02, 1.715e-01, -4.465e-01, 2.078e-01, 5.042e-02, 4.939e-01, 6.707e-02, 7.878e-02, -1.699e-01, 1.489e-01, 2.540e-01, 7.178e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(-1.746e-01, -7.613e-02, 4.899e-03, -4.928e-02, 2.721e-01, 2.632e-02, 1.530e-01, 4.081e-02, -1.635e-02, 1.151e-01, 7.549e-03, 4.237e-02, 8.284e-02, -1.142e-01, -2.197e-03, 1.397e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(1.379e-02, -2.299e-02, 2.560e-02, 5.105e-02, -2.731e-01, -2.404e-01, -1.481e-01, 8.940e-02, 5.553e-02, -3.009e-01, -2.875e-01, 7.633e-02, 3.243e-01, 1.123e-01, 2.313e-01, -6.464e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(-6.504e-02, 1.319e-01, -2.322e-02, -5.879e-02, -2.046e-01, 1.175e-01, 1.736e-01, 6.123e-01, -9.938e-02, -1.179e-01, 9.119e-02, -2.422e-01, 5.805e-02, -1.589e-01, 2.782e-03, 7.887e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(9.311e-02, -2.176e-01, 6.559e-02, 1.194e-01, -2.690e-01, 1.374e-01, 2.098e-01, -1.722e-01, 4.223e-01, 1.056e-01, -2.447e-02, -5.362e-01, -6.953e-03, -1.431e-01, 2.015e-01, -1.908e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(2.086e-01, 3.830e-02, 8.257e-02, 1.685e-01, -1.832e-02, 8.403e-02, 2.130e-03, -5.972e-02, -6.416e-02, 1.173e-01, -5.430e-03, -2.277e-02, -6.863e-02, -3.049e-03, -1.584e-02, -2.485e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.582e-01, -3.199e-01, 1.176e-01, -8.994e-02, -1.244e-01, -1.401e-01, -3.729e-02, 5.489e-03, -8.084e-02, -8.204e-02, -2.030e-02, 1.579e-01, -2.019e-01, -2.479e-01, 1.765e-01, -1.962e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.554e-01, -4.815e-01, -2.516e-01, -6.388e-01, -2.143e-02, 1.339e-01, 4.991e-02, 3.208e-02, -2.341e-02, 1.494e-02, 3.625e-01, -1.012e-01, -5.908e-02, -5.401e-02, 6.337e-03, -1.005e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(4.635e-02, 5.442e-03, -2.824e-01, 9.267e-02, -2.853e-01, -1.269e-01, 1.240e-01, 4.361e-02, -1.975e-01, 1.279e-01, 5.178e-02, 1.038e-01, -3.829e-01, -7.829e-03, -8.137e-02, 8.373e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(7.342e-02, -1.424e-01, -2.493e-02, 4.373e-03, -4.724e-02, -1.173e-01, -5.685e-02, 5.662e-02, -2.062e-02, -4.933e-02, -7.479e-02, 1.085e-01, -3.592e-02, -1.165e-02, 6.301e-02, 8.172e-03), r4);\n\tr5 = MulAdd(s1_1_2, M4(-1.619e-01, -8.002e-02, 2.429e-01, -5.053e-02, 4.100e-02, 1.256e-01, -7.364e-02, 4.730e-02, 8.369e-02, -1.170e-01, -7.299e-02, 3.767e-02, -9.478e-02, -1.540e-02, -2.892e-02, -1.672e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-1.081e-01, -1.512e-02, -9.760e-02, -7.727e-02, -1.118e-01, 7.198e-02, -5.051e-02, 4.965e-02, 9.855e-02, 8.574e-02, -1.372e-01, 5.663e-02, -1.658e-01, -1.452e-01, 1.005e-01, 1.417e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(-4.525e-01, 1.075e-01, -4.382e-02, 3.360e-02, 4.472e-02, 2.270e-01, 9.484e-02, -2.732e-03, 2.248e-02, -1.140e-01, -1.200e-01, 1.628e-01, 1.199e-01, -3.865e-02, 1.246e-01, -1.535e-01), r7);\n\tr0 = MulAdd(s1_2_0, M4(-6.373e-02, -2.784e-01, -9.527e-03, -8.254e-02, 8.599e-02, 6.256e-02, 1.368e-02, -4.150e-02, 4.424e-02, 8.295e-02, -9.352e-03, -8.079e-02, 1.287e-01, -1.225e-01, 1.938e-02, -2.558e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-7.705e-02, 2.825e-02, 5.468e-02, 5.268e-02, -1.235e-02, -2.163e-01, 1.029e-02, -5.309e-02, 1.027e-01, -3.069e-02, 3.313e-02, 5.438e-02, 3.439e-01, -5.132e-02, 4.036e-02, -6.209e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(5.592e-02, -9.343e-02, 2.997e-01, 1.930e-02, 1.823e-01, -4.043e-02, -4.000e-02, 1.674e-02, 5.627e-03, 1.896e-01, -7.894e-02, 4.723e-02, -1.190e-01, -1.115e-01, 5.469e-02, -2.188e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(1.224e-01, -5.391e-02, 9.160e-03, 1.713e-01, 3.948e-01, -2.617e-02, -4.436e-02, 8.310e-02, -1.845e-01, 5.541e-02, -1.162e-01, 1.043e-01, 2.236e-01, 2.760e-02, 1.365e-01, -1.855e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(4.186e-02, -1.038e-01, 1.799e-02, 6.338e-02, 3.661e-01, -1.576e-01, 3.916e-02, 9.642e-03, 1.136e-01, -2.528e-02, 1.444e-02, 3.500e-02, 1.681e-01, 2.123e-01, -4.836e-02, 9.703e-03), r4);\n\tr5 = MulAdd(s1_2_0, M4(5.819e-02, 2.329e-02, 3.040e-02, 1.304e-02, -6.918e-02, 4.242e-02, 6.652e-02, 6.824e-02, -1.738e-02, -5.041e-02, 2.162e-01, -1.140e-02, 1.671e-01, -9.673e-02, 2.058e-02, 6.984e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-4.004e-02, 1.744e-02, 1.645e-01, -1.074e-02, 2.754e-01, -3.859e-02, 3.187e-01, 2.538e-02, -2.378e-02, -4.178e-01, 6.871e-02, -4.263e-03, 2.082e-01, 1.170e-01, 2.357e-01, -7.006e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(1.063e-01, 9.422e-02, 7.112e-02, -1.812e-02, -2.203e-02, 3.370e-01, 2.534e-01, -1.044e-01, -1.672e-01, 1.162e-01, 1.682e-02, -2.027e-01, 9.494e-02, 3.304e-01, -6.872e-02, 3.993e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-5.038e-02, 5.726e-04, -3.510e-03, 1.535e-01, -6.417e-02, -1.554e-01, 3.624e-02, -4.399e-02, 2.927e-01, 1.869e-01, 3.195e-02, 2.523e-01, 1.583e-02, 6.520e-02, 3.286e-02, 8.874e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.124e-02, -5.025e-02, 1.297e-02, -1.892e-01, 3.294e-02, 1.712e-01, 8.357e-02, -6.160e-02, 1.186e-02, 1.179e-01, 6.252e-02, -1.041e-01, -1.546e-01, -5.468e-02, -1.561e-01, 6.781e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.012e-01, -1.956e-01, -1.623e-01, -9.239e-02, 2.397e-02, 5.555e-02, 1.017e-01, 5.336e-02, -1.118e-01, -2.427e-01, -3.669e-02, -1.121e-01, 1.314e-02, 5.774e-02, -1.496e-01, -1.507e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(2.270e-01, -4.030e-03, 1.798e-02, 2.121e-01, 3.435e-01, -1.252e-01, 9.210e-02, 6.253e-03, 5.555e-02, -8.625e-01, -1.105e-01, 2.293e-02, 4.274e-01, 7.114e-02, -1.642e-01, -2.523e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(1.598e-01, 8.474e-02, -5.142e-02, 2.264e-02, -3.946e-01, 3.815e-01, -1.694e-01, 1.890e-01, -3.578e-02, -1.229e-02, -3.822e-02, 1.855e-01, 1.205e-01, -2.284e-01, -5.648e-03, 4.098e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(1.521e-01, -1.708e-01, 1.862e-01, -5.994e-03, 7.766e-03, -1.856e-01, 1.040e-01, 1.102e-01, 2.058e-01, 1.671e-01, -6.271e-01, -4.877e-02, -1.966e-01, 1.735e-02, 7.803e-02, 7.244e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-1.896e-01, 1.189e-01, 3.292e-01, -1.237e-01, -5.197e-02, -1.881e-02, 6.175e-03, -1.535e-02, 5.340e-02, 3.760e-02, 2.802e-01, -1.844e-01, 1.024e-01, 1.317e-01, -1.269e-01, -8.474e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(3.640e-02, -1.189e-02, 1.872e-02, 7.594e-02, 1.197e-01, 2.923e-02, 8.228e-02, 1.823e-01, -6.313e-02, -1.220e-02, -4.658e-02, 6.055e-01, -6.366e-02, -5.317e-02, -4.494e-02, -1.517e-01), r7);\n\tr0 = MulAdd(s1_2_2, M4(8.825e-02, 3.004e-01, -5.037e-02, -5.082e-02, 8.352e-02, 1.129e-01, 3.598e-02, 1.350e-02, -1.368e+00, -6.878e-01, -1.297e-01, -4.177e-02, -3.210e-03, -1.508e-01, 2.630e-02, -4.797e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(4.919e-02, 8.882e-02, -7.899e-02, -5.733e-02, 5.352e-02, -2.151e-02, -4.011e-02, 9.467e-02, -1.434e-01, -5.046e-03, 1.228e-01, 1.607e-01, -4.772e-02, 4.472e-02, 5.851e-03, -1.219e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(2.139e-02, 2.348e-01, 9.255e-02, -1.156e-02, 5.599e-02, -4.771e-02, -1.039e-01, -1.690e-02, 9.113e-03, -7.199e-01, -1.710e-01, 3.976e-02, -2.384e-02, 3.043e-02, -1.189e-01, 7.016e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(7.294e-02, 1.938e-01, -2.508e-01, 1.799e-01, 2.169e-01, 4.805e-02, -4.418e-02, 6.102e-02, -3.048e-02, -3.548e-02, -3.447e-01, -2.864e-02, 2.341e-01, -6.786e-02, -2.305e-01, 8.081e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-2.341e-02, -7.250e-02, 3.231e-02, 7.522e-02, -4.359e-02, -1.307e-02, 7.207e-02, 4.307e-02, 1.956e-02, 2.433e-02, 5.356e-02, -4.083e-02, 7.173e-03, 8.416e-02, -8.189e-02, -4.439e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-2.477e-01, 1.884e-02, 4.981e-02, 8.109e-03, 4.968e-02, -2.610e-02, 9.417e-03, 7.567e-02, 3.138e-02, 2.959e-01, 2.728e-01, -8.519e-02, 6.779e-02, 1.864e-01, 1.541e-02, 6.908e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-3.675e-02, 2.257e-01, 1.345e-01, -1.015e-01, 6.431e-02, -1.280e-01, 6.385e-02, -2.537e-02, 4.242e-03, 1.538e-02, 8.335e-02, -1.197e-01, 2.322e-01, 2.374e-01, 1.964e-02, 1.415e-01), r6);\n\tr7 = MulAdd(s1_2_2, M4(-6.902e-03, 9.112e-03, 7.533e-03, 6.988e-02, -8.394e-02, -6.428e-02, 2.259e-02, 1.372e-01, -5.105e-02, -2.120e-01, -5.992e-02, -4.269e-03, -1.903e-01, -4.679e-02, -4.446e-02, 1.817e-01), r7);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.146e-02, -5.553e-02, -1.909e-02, 2.262e-02, -1.469e-02, 4.247e-02, 4.089e-02, 9.245e-02, -1.213e-01, 6.193e-02, 1.059e-02, -5.932e-02, 3.119e-02, -3.139e-01, 3.125e-03, -6.303e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(3.401e-02, -2.757e-02, -1.013e-01, -2.674e-02, 5.266e-02, 3.485e-01, 1.037e-01, -4.776e-02, -7.245e-02, 2.953e-02, 7.416e-02, -7.336e-02, 1.218e-01, -3.272e-02, -3.623e-02, 1.112e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.548e-01, 7.194e-02, 5.245e-02, -7.740e-02, 3.690e-02, 3.549e-02, -1.321e-01, -2.571e-02, 1.264e-01, 2.060e-01, -2.083e-01, 1.868e-04, -6.898e-03, -2.013e-02, -1.318e-01, 7.634e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-6.385e-02, 8.975e-02, 5.926e-03, -1.300e-01, -3.474e-01, -1.088e-01, -7.717e-02, 7.673e-03, 5.479e-01, 5.284e-01, 1.055e-01, 1.914e-01, 3.604e-01, -1.339e+00, 1.522e-01, -3.528e-05), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.542e-01, 5.306e-02, -3.006e-02, 4.101e-02, 2.517e-02, 6.513e-02, -6.511e-02, -8.131e-03, 6.708e-02, -1.607e-02, 1.382e-02, 5.826e-02, 9.280e-02, 1.685e-02, 7.711e-03, 9.303e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-1.557e-02, 3.500e-02, -4.326e-02, -4.224e-02, -1.105e-01, -1.067e-01, -1.063e-01, 1.382e-01, -7.184e-02, -1.477e-01, -1.679e-01, 2.362e-02, 1.908e-01, -7.640e-02, 5.779e-04, 2.116e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-1.004e-01, 6.607e-02, 2.241e-01, 2.511e-02, 1.307e-01, -3.723e-02, -2.458e-01, -1.059e-01, -2.744e-01, 1.054e-01, 7.690e-02, -7.636e-02, 2.070e-01, -5.448e-03, -6.898e-02, 2.569e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(-4.599e-02, 1.146e-01, -1.150e-01, 6.352e-02, 2.487e-01, 9.398e-03, -5.185e-02, -2.872e-02, 1.515e-01, -2.587e-01, 9.052e-02, -7.704e-02, 1.551e-01, 1.735e-01, -6.859e-02, -1.872e-01), r7);\n\tr0 = MulAdd(s0_0_1, M4(8.427e-03, 1.558e-01, 6.326e-02, -2.902e-01, -1.296e-02, -4.917e-03, 2.437e-02, -6.013e-02, -1.862e-02, 2.447e-01, 3.539e-02, 4.518e-02, -5.305e-02, -3.830e-01, 6.759e-03, -2.934e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-3.435e-02, 1.144e-01, -2.066e-02, 1.824e-01, -9.338e-02, -1.526e-01, 1.530e-02, 3.319e-02, 8.066e-02, -3.554e-02, -2.287e-02, -2.709e-02, 2.028e-01, -6.089e-02, -1.231e-01, 1.069e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(-3.099e-03, -3.203e-02, -7.877e-02, -1.496e-01, 2.044e-02, -1.749e-01, -1.277e-02, 5.857e-02, -5.861e-02, 1.029e-01, 7.689e-02, 8.474e-02, 1.061e-01, -6.315e-02, 5.499e-02, -1.587e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.133e-03, -1.792e-01, -4.840e-02, -1.575e-01, -2.666e-01, -2.220e-01, 1.718e-01, 7.825e-02, 2.653e-01, 1.475e-01, -3.055e-01, 7.310e-02, -8.806e-02, -6.342e-01, 1.680e-01, -2.027e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-8.395e-02, 3.937e-02, -4.283e-02, 7.313e-02, -4.068e-02, -5.632e-03, 6.942e-02, 1.085e-01, 1.338e-02, 4.694e-02, 2.931e-02, -1.752e-02, 2.021e-01, 1.173e-01, 9.534e-02, 1.275e-01), r4);\n\tr5 = MulAdd(s0_0_1, M4(-4.101e-02, 1.362e-01, -5.997e-03, 5.609e-02, 1.789e-02, -6.118e-02, 9.204e-02, 4.375e-02, -1.195e-01, -6.217e-02, 2.800e-02, 1.042e-01, 2.908e-01, -7.135e-02, 1.811e-01, 5.077e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(6.603e-02, 1.086e-02, -1.032e-01, -2.686e-02, -6.464e-02, 1.407e-01, 8.228e-02, -4.507e-02, -8.475e-02, 3.967e-02, 1.305e-01, -1.408e-01, 1.946e-01, -4.838e-02, -7.047e-02, 1.566e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(-5.804e-02, 1.039e-01, -3.642e-02, 2.368e-01, -8.279e-02, 5.893e-02, 1.504e-02, 1.816e-02, 3.456e-02, 2.377e-02, 1.111e-01, -1.970e-02, -2.549e-01, -1.462e-01, 3.232e-02, 1.415e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(-1.524e-02, 1.289e-01, -6.768e-02, -1.157e-01, -3.416e-02, -1.859e-01, 2.691e-02, 1.864e-02, 2.052e-02, 1.088e-01, -1.472e-02, 3.774e-02, 1.890e-02, 9.099e-03, 2.821e-02, 1.369e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.880e-01, -7.917e-02, 1.362e-02, -1.353e-01, 3.388e-02, -3.550e-02, -9.798e-02, -2.472e-02, 1.218e-03, 6.498e-03, -1.288e-01, 5.904e-02, 9.114e-02, -6.363e-02, 3.673e-02, 6.020e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(5.451e-03, -7.890e-02, -5.632e-02, -1.319e-02, 1.296e-02, 1.172e-01, 5.173e-02, -3.532e-02, -5.639e-02, 2.152e-01, 4.045e-02, 1.881e-02, 9.131e-02, 7.428e-03, -1.218e-01, -1.310e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(3.562e-02, -2.974e-01, 3.581e-02, 1.376e-02, -9.839e-02, -8.155e-03, -6.811e-02, -3.876e-02, -1.284e-02, -1.270e-01, -1.625e-02, -1.230e-01, -1.679e-01, -3.621e-01, -1.995e-01, 1.160e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(9.713e-05, 3.571e-03, -4.872e-02, -4.560e-02, -1.586e-02, -8.543e-02, -1.018e-02, 1.197e-02, -4.261e-02, 4.134e-02, -3.293e-02, -3.520e-03, -5.046e-02, 4.470e-02, 3.674e-02, 2.348e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-1.960e-01, -4.953e-02, -1.943e-01, -1.113e-01, -1.567e-02, -4.737e-02, 9.502e-02, 3.268e-02, 8.337e-02, -1.316e-01, 1.260e-01, -9.631e-03, -2.029e-01, -1.579e-02, -1.140e-01, 2.927e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(2.483e-02, 1.362e-01, 4.315e-02, 2.050e-02, 6.036e-02, 1.508e-02, -5.173e-02, 3.422e-02, 9.004e-03, 1.577e-02, 7.762e-02, -1.366e-01, -9.742e-02, 5.992e-02, -1.468e-01, 1.952e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(8.870e-02, -8.157e-02, -1.434e-01, 1.772e-01, -1.667e-02, 3.415e-02, 4.536e-02, -1.409e-02, 1.085e-02, -1.073e-02, -4.030e-02, -3.054e-02, -1.228e-01, -6.999e-02, 1.258e-02, 1.206e-01), r7);\n\tr0 = MulAdd(s0_1_0, M4(-8.948e-02, -6.795e-02, 4.323e-02, -3.421e-01, 6.088e-02, -2.055e-01, 3.570e-02, 1.059e-01, -6.790e-02, -4.499e-01, 1.460e-01, -9.661e-02, 5.883e-03, 2.190e-01, -1.914e-02, -2.238e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(9.454e-02, -3.137e-02, 8.372e-02, 1.052e-01, -2.035e-01, -6.406e-01, 3.318e-01, 5.473e-01, 8.325e-02, 9.580e-03, 3.054e-02, -7.943e-02, -1.675e-01, 7.714e-02, 1.293e-01, 8.223e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(6.047e-02, 5.396e-02, 5.725e-02, 1.886e-02, 4.895e-01, 1.326e-01, -5.885e-02, -2.814e-02, 2.560e-01, 3.350e-01, 1.640e-01, -6.264e-02, -7.247e-02, -1.057e-01, -3.101e-02, -6.067e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-2.418e-01, 3.176e-03, -1.362e-01, -1.261e+00, -1.762e-01, -4.126e-02, 4.819e-01, 3.534e-02, -6.824e-01, -3.130e-01, -1.720e-01, 3.233e-01, -1.587e-01, -7.908e-03, 9.864e-02, -2.095e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(8.208e-02, 1.889e-02, 4.056e-02, 1.680e-01, 7.341e-01, -5.918e-02, 1.000e-01, 1.268e-01, 1.587e-01, 4.902e-02, -2.225e-01, 8.694e-02, 9.713e-02, 1.725e-01, -1.851e-02, -1.835e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(3.477e-02, -1.392e-01, -1.046e-01, -1.668e-02, -3.382e-02, -8.169e-02, -3.412e-02, 1.756e-01, 1.395e-01, 1.071e-01, 3.602e-01, 3.174e-01, 2.407e-01, 1.620e-01, -1.482e-01, 8.941e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(1.821e-01, 1.085e-01, 2.049e-01, 5.719e-02, 1.524e-01, 3.979e-02, -2.343e-01, -3.218e-01, 2.151e-01, 1.035e-01, 7.238e-02, -2.392e-01, 2.140e-01, 1.459e-02, -1.470e-01, 7.962e-03), r6);\n\tr7 = MulAdd(s0_1_0, M4(-5.392e-02, 1.870e-01, -3.159e-02, -6.314e-02, 4.085e-02, -1.093e+00, 7.323e-02, 4.195e-01, 9.704e-02, -4.045e-02, -1.241e-01, -2.084e-01, 2.570e-03, -3.546e-01, -7.111e-02, 1.190e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(-2.554e-01, -2.004e-01, -2.901e-01, -1.263e+00, -2.471e-01, -1.390e-01, 2.926e-03, 1.585e-01, -4.999e-01, -2.492e-01, 2.863e-02, 3.310e-02, -1.684e-01, -2.522e-01, 1.516e-02, -4.631e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(2.016e-01, -1.178e-01, -5.434e-02, -2.040e-02, 3.407e-01, -3.970e-01, -1.111e-01, 9.693e-03, -9.109e-02, -4.898e-02, -2.948e-02, 7.124e-02, -5.621e-02, 1.477e-02, -7.022e-02, -4.130e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(5.009e-02, -1.010e-01, 4.123e-02, 1.363e-01, 4.808e-02, 6.170e-02, -2.861e-01, -1.324e-01, -8.714e-03, -5.087e-02, -7.198e-02, -4.805e-02, -5.353e-02, -3.866e-03, 1.433e-01, 3.662e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(-2.234e-01, 1.472e-02, -2.882e-03, -9.083e-01, -5.836e-01, 3.066e-01, -1.936e-01, 3.493e-02, 3.981e-02, 1.433e-01, 1.505e-01, 1.351e-02, -5.063e-02, -2.073e-01, 1.090e-01, -3.856e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(-1.574e-02, 7.163e-02, -9.787e-02, 6.753e-02, -1.031e-01, 2.051e-01, 1.236e-01, 6.217e-02, -1.163e-01, 1.382e-01, -1.164e-01, 1.353e-01, -2.033e-02, -4.269e-01, 1.685e-01, 2.998e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(4.453e-01, 1.674e-01, 8.656e-02, 2.196e-01, -9.785e-02, -7.692e-04, -7.151e-02, -2.389e-03, -3.119e-01, 6.439e-02, 1.540e-01, 6.993e-02, -2.247e-02, 2.346e-02, -2.203e-01, 3.531e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(7.926e-02, -2.488e-01, -2.202e-01, -8.878e-02, -5.981e-02, -1.009e-01, -1.424e-02, 2.027e-01, -8.694e-02, 1.519e-01, -4.146e-02, -1.970e-01, 2.402e-02, 5.940e-02, 9.668e-02, -3.951e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(9.042e-03, -1.985e-01, 1.144e-01, 5.265e-02, -3.059e-01, 1.281e-01, 2.124e-01, 2.040e-01, 2.522e-01, 1.408e-02, -1.632e-01, -1.326e-01, -4.145e-02, 3.457e-02, 1.339e-01, -1.542e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(3.506e-01, 1.749e-01, 1.120e-01, -2.073e-01, 5.557e-02, -6.116e-02, 1.622e-02, 3.859e-03, -1.256e-01, 1.264e-02, 2.893e-02, 7.004e-03, 1.772e-01, -3.757e-02, -2.566e-02, 4.992e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-6.846e-02, 1.581e-01, 2.394e-02, -3.314e-03, -2.528e-02, 1.991e-02, 3.744e-02, 4.138e-02, -6.757e-03, 4.317e-02, 3.387e-02, -1.060e-01, -4.059e-02, 3.518e-02, 3.011e-02, 8.945e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(5.240e-02, 1.899e-02, -5.675e-02, -9.556e-03, 2.881e-02, -3.946e-03, -1.076e-01, -2.124e-03, -3.397e-02, 7.940e-02, -4.354e-02, 1.292e-02, 1.062e-01, -5.924e-02, 1.809e-01, -3.388e-03), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.040e-01, 1.137e-01, -7.200e-02, -1.948e-01, 3.386e-02, -4.926e-03, 8.595e-02, -2.392e-02, 1.676e-01, 2.479e-01, -6.098e-02, 5.688e-02, -1.456e-02, -2.163e-01, 3.996e-02, -4.017e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(-8.383e-02, 9.485e-02, -5.488e-02, -1.003e-01, -1.557e-01, -1.118e-01, -6.930e-02, 1.048e-01, 1.552e-01, -6.574e-02, 2.848e-02, 9.303e-02, -7.631e-02, 3.826e-02, 9.387e-03, -1.317e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(-3.137e-01, -6.262e-02, -1.006e-01, 1.308e-03, 8.775e-02, -2.913e-02, -9.136e-02, 5.449e-02, -1.516e-01, 1.383e-01, -2.183e-02, 1.495e-02, 6.906e-02, 1.308e-01, -1.443e-01, -6.233e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-2.393e-01, -8.585e-02, -1.624e-01, 1.085e-01, -9.246e-03, 5.617e-02, -1.744e-02, -1.272e-01, -6.986e-02, 4.334e-02, 1.262e-02, 6.131e-02, 1.042e-01, 4.815e-02, -1.516e-01, 1.839e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-8.183e-02, -4.344e-02, 7.794e-03, -2.000e-01, 1.127e-02, 1.676e-01, 1.812e-02, 8.442e-02, 1.570e-02, -2.637e-02, -2.748e-02, -1.422e-01, 9.581e-02, -1.939e-02, -5.322e-03, -6.741e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-3.827e-02, -2.770e-02, 1.511e-02, 6.833e-02, -4.056e-02, -5.765e-02, 7.338e-02, 9.821e-03, 5.671e-03, 2.639e-01, -3.373e-02, -2.389e-01, -2.104e-02, -1.751e-01, 1.030e-02, -4.772e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.208e-02, 1.257e-01, -3.765e-02, -1.371e-01, 3.015e-01, 3.199e-01, 1.447e-01, 2.492e-01, -7.497e-02, -8.153e-02, 1.037e-01, -1.615e-01, 6.818e-02, -3.368e-02, -9.725e-02, -2.058e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-7.650e-02, -9.664e-02, 2.721e-02, -3.624e-02, 2.964e-02, 1.791e-02, -1.315e-01, 1.620e-02, -1.760e-01, -1.256e-02, 5.691e-02, -2.009e-02, -1.137e-02, 3.879e-02, -1.865e-01, 6.363e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(-8.194e-02, -8.463e-02, 2.876e-02, -2.697e-01, 2.724e-01, -7.564e-02, -5.072e-01, 1.815e-01, -1.946e-01, -3.559e-02, -5.811e-02, 3.528e-01, -2.179e-03, 3.918e-02, -4.555e-01, 1.409e-01), r3);\n\tr4 = MulAdd(s0_2_0, M4(2.350e-02, -2.116e-02, 7.913e-02, 1.260e-01, -1.313e+00, 2.349e-01, 5.236e-02, -1.838e-01, 3.564e-01, -4.607e-02, 1.841e-01, 6.623e-02, -1.125e-01, 1.157e-01, 5.667e-03, -9.150e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(3.628e-02, 8.503e-03, 1.571e-01, 3.751e-02, -1.564e-01, 2.121e-01, 3.752e-01, 2.062e-01, 2.559e-01, -2.283e-01, -1.459e-01, -9.339e-03, 3.663e-03, 2.258e-01, 9.827e-02, 1.162e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(-2.176e-02, 6.149e-02, 2.829e-01, -1.139e-01, -2.348e-01, -2.502e-01, -4.242e-01, 3.298e-01, -2.907e-02, 2.862e-01, 1.375e-01, -3.845e-01, 5.181e-02, -1.613e-02, 2.263e-02, -5.634e-03), r6);\n\tr7 = MulAdd(s0_2_0, M4(-1.219e-02, 2.977e-02, 8.239e-04, 9.387e-02, -1.441e-01, -3.758e-01, -2.625e-02, 3.527e-02, 6.672e-03, 1.176e-02, 1.264e-01, 4.054e-01, -8.408e-02, -2.097e-01, -1.920e-02, -3.124e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-1.475e-01, -8.263e-02, -1.554e-03, -2.552e-01, -1.401e-01, -3.461e-01, -3.567e-02, 8.552e-02, -3.754e-01, 1.861e-02, -6.054e-02, -4.504e-02, -1.106e-01, -7.599e-02, -1.689e-03, 2.661e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(7.885e-02, -1.751e-02, 1.097e-01, 1.015e-01, 2.686e-01, 9.640e-02, 6.019e-02, 4.335e-02, 2.022e-01, -3.196e-02, -1.291e-01, -1.924e-03, 2.691e-02, 3.462e-02, -9.989e-02, -6.912e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.428e-01, 6.915e-02, 1.532e-02, 1.241e-01, 2.165e-02, 3.219e-02, -7.657e-02, 6.324e-02, -6.071e-03, -1.597e-01, 3.921e-03, -1.009e-02, 2.529e-02, -6.072e-02, 8.322e-02, -1.824e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.856e-01, -7.830e-02, 1.795e-01, -2.014e-01, 3.472e-01, 1.059e-01, -5.802e-01, 1.916e-01, -2.412e-01, 1.650e-01, 8.172e-04, 1.624e-02, 2.007e-02, 4.243e-02, 2.257e-02, 2.111e-03), r3);\n\tr4 = MulAdd(s0_2_1, M4(1.770e-02, -5.730e-02, 7.253e-02, -2.320e-02, -1.570e+00, 4.898e-01, 2.035e-01, 2.424e-01, 4.082e-01, -7.737e-02, 6.252e-02, 2.402e-02, 8.552e-02, -2.326e-01, -2.780e-02, 7.008e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(3.977e-02, -3.102e-02, 1.400e-01, -1.653e-01, 6.915e-03, 2.856e-02, 1.042e-01, 1.446e-02, 1.793e-01, -3.907e-01, -1.571e-01, -1.968e-01, 1.606e-01, -1.900e-01, -6.815e-01, 3.911e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-1.052e-01, -1.102e-01, -1.489e-01, 2.686e-01, 2.407e-01, -1.501e-01, 2.702e-01, 5.985e-02, -8.141e-02, -1.632e-01, -7.552e-02, -2.339e-01, -4.179e-02, -2.649e-02, -8.807e-02, 2.907e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(-7.632e-02, -9.553e-02, 1.257e-01, -1.929e-01, 1.444e-01, -1.744e-01, -5.123e-02, -8.795e-02, -7.071e-02, 1.995e-01, 4.189e-03, 4.570e-01, -8.389e-02, 3.502e-03, -1.059e-02, -5.440e-03), r7);\n\tr0 = MulAdd(s0_2_2, M4(2.367e-01, 3.787e-02, 3.198e-02, 4.454e-02, 1.153e-01, 1.301e-01, 2.375e-02, 4.096e-02, 6.914e-03, -6.751e-02, -2.801e-03, -4.512e-02, 2.949e-02, -4.513e-02, 9.104e-03, -9.635e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(-3.955e-02, -1.005e-01, 7.099e-02, -6.040e-02, 1.358e-01, -4.525e-02, -6.189e-02, 9.098e-02, 2.121e-02, -2.213e-03, 5.938e-02, -6.501e-02, -1.234e-01, -1.534e-02, 2.449e-02, 2.033e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-3.501e-02, 1.113e-01, -2.348e-02, 4.797e-02, -3.278e-02, 6.808e-03, 3.405e-02, -2.708e-02, -6.713e-03, -2.384e-01, 4.504e-03, -1.488e-02, -2.294e-02, 4.643e-03, -1.325e-01, 8.289e-03), r2);\n\tr3 = MulAdd(s0_2_2, M4(1.260e-01, 2.329e-02, 7.842e-02, 4.290e-02, 9.383e-02, -4.583e-02, 2.123e-01, 2.549e-02, -3.609e-02, -6.519e-02, -9.913e-02, 1.763e-01, 1.646e-01, -9.377e-02, 2.259e-01, 2.014e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(1.014e-01, -1.510e-01, -8.009e-02, -1.244e-01, 6.116e-02, -4.788e-02, 5.936e-02, 1.005e-01, 3.143e-02, 1.233e-02, -2.169e-02, 4.184e-02, 6.604e-02, -6.962e-02, 1.561e-02, -2.169e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-4.935e-02, -8.197e-02, -8.524e-02, 5.455e-02, 4.507e-02, -5.926e-02, -1.031e-03, 2.622e-02, 5.605e-02, -1.567e-01, -3.286e-02, -8.936e-03, -3.652e-02, -3.743e-02, -1.392e-01, 2.072e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(5.606e-02, 1.303e-01, -3.638e-02, -5.660e-02, -4.954e-02, -4.088e-02, 6.659e-02, 1.729e-02, 4.299e-02, 2.708e-02, 5.782e-02, 3.504e-02, 4.330e-03, 1.743e-02, -9.611e-03, -4.977e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(2.549e-01, 1.173e-02, 4.844e-02, -1.072e-01, 3.713e-02, 6.299e-02, 3.067e-02, 2.837e-02, 4.930e-02, 3.628e-03, -2.655e-04, -1.289e-01, 2.311e-02, 6.526e-02, 2.161e-02, 1.459e-01), r7);\n\tr0 = MulAdd(s1_0_0, M4(6.690e-02, 2.871e-02, -2.889e-02, -7.587e-02, 2.014e-01, 9.625e-02, 7.069e-02, 1.546e-01, 1.913e-02, -7.929e-02, -9.371e-03, 9.533e-02, -8.207e-02, -3.095e-01, -2.223e-02, 3.326e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.121e-01, 3.213e-01, 1.779e-01, 2.317e-01, 6.780e-02, -1.695e-01, -1.362e-01, -8.858e-02, 5.746e-02, -7.871e-02, 3.360e-02, -5.454e-02, 9.253e-02, 2.356e-02, 1.961e-01, -9.391e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-4.650e-02, -1.530e-01, -3.353e-01, 2.785e-02, -6.983e-02, 4.153e-02, -5.727e-02, 2.232e-01, 7.978e-02, 1.506e-01, -6.190e-02, 4.002e-02, 1.011e-01, -2.140e-01, -4.940e-02, 1.651e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(1.751e-01, 3.549e-01, 1.613e-01, 1.653e-01, 1.454e-01, -2.779e-01, -6.927e-02, -5.499e-02, -7.256e-02, -8.569e-02, 1.617e-02, -2.274e-01, 1.803e-01, -1.746e+00, -1.555e-01, 2.399e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(2.516e-02, 1.409e-01, 8.154e-02, 4.139e-02, -1.935e-01, 2.342e-04, 1.505e-01, -3.783e-02, 2.622e-02, 8.312e-02, 1.740e-01, -3.983e-02, -2.323e-02, 5.022e-02, -9.414e-02, 1.351e-01), r4);\n\tr5 = MulAdd(s1_0_0, M4(-6.638e-02, 4.271e-02, -2.591e-02, 8.727e-03, -2.884e-02, 1.358e-02, 4.112e-02, 6.931e-02, 9.568e-04, -4.568e-03, -9.532e-02, -8.980e-02, -1.269e-01, -1.023e-01, 1.163e-01, 7.130e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-4.991e-02, 1.637e-03, -1.151e-01, -1.489e-02, -1.144e-01, -6.766e-02, 4.180e-02, 1.223e-01, 4.051e-03, -7.141e-02, 1.176e-02, -1.681e-01, 8.958e-02, 4.601e-02, 1.933e-01, 2.469e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-7.611e-02, 2.337e-03, 6.901e-02, -1.105e-01, 1.792e-01, -1.966e-02, -1.312e-01, -5.769e-04, -1.074e-01, -7.046e-02, 2.164e-01, -2.485e-02, 2.590e-01, -1.857e-01, -1.280e-01, 3.310e-01), r7);\n\tr0 = MulAdd(s1_0_1, M4(-2.446e-02, -1.735e-02, -1.340e-03, -5.990e-02, 3.477e-02, -2.183e-01, -7.407e-02, -1.300e-01, -2.741e-02, 2.866e-02, -3.215e-02, -2.997e-02, -2.219e-02, -3.292e-01, -6.251e-02, 2.787e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(7.145e-02, 8.044e-02, -1.402e-01, 2.640e-01, 2.110e-02, -5.833e-02, -4.531e-02, -3.986e-03, 4.954e-02, 2.316e-01, 9.623e-02, 4.038e-02, -3.261e-01, 3.225e-02, -2.573e-03, -1.517e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(4.803e-04, 1.092e-01, 1.349e-01, 3.034e-01, 2.968e-01, 1.366e-01, 1.018e-01, 2.853e-01, 1.586e-01, 2.146e-02, -5.967e-03, 1.197e-01, 1.895e-01, 1.786e-01, 1.082e-01, 6.293e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-1.599e-02, -5.328e-01, 1.723e-02, -1.146e-01, 2.125e-01, -4.269e-01, -1.004e-02, -1.196e-01, 1.142e-01, 4.299e-03, -5.208e-03, 1.974e-01, 3.251e-01, -2.865e-01, 3.029e-01, 3.993e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(-1.573e-02, -2.107e-02, 1.987e-02, 7.604e-02, -8.567e-02, 5.408e-02, 5.241e-02, -4.891e-02, -1.460e-01, 9.648e-02, -5.818e-02, 2.146e-02, 2.558e-01, 5.755e-02, -7.642e-02, 4.804e-03), r4);\n\tr5 = MulAdd(s1_0_1, M4(5.084e-02, 5.140e-01, 2.019e-01, 6.884e-02, -5.549e-03, 3.823e-02, 1.975e-02, 8.383e-02, -1.093e-02, 2.360e-01, 1.719e-02, 1.014e-01, 4.095e-01, 2.434e-01, 1.261e-01, 1.200e-01), r5);\n\tr6 = MulAdd(s1_0_1, M4(-2.292e-01, 5.723e-02, 1.451e-01, -2.021e-01, -6.860e-02, -7.897e-02, 1.127e-01, 5.917e-03, -1.385e-03, -2.177e-01, -2.001e-01, -4.608e-07, -2.988e-02, 2.038e-02, 4.147e-02, 1.614e-01), r6);\n\tr7 = MulAdd(s1_0_1, M4(2.028e-02, -1.726e-01, 1.670e-01, -4.294e-01, 1.785e-01, 4.936e-02, -1.911e-01, -2.438e-01, 2.433e-01, 1.117e-01, -1.186e-02, -3.514e-04, -1.600e-01, 2.240e-01, -2.530e-02, -4.954e-01), r7);\n\tr0 = MulAdd(s1_0_2, M4(-3.523e-02, -2.748e-01, -1.559e-02, 9.409e-03, -1.380e-01, -3.668e-02, 4.328e-02, -1.230e-01, 7.599e-02, 1.196e-01, 4.146e-02, 8.320e-02, 6.965e-02, 3.049e-01, -9.853e-03, 3.054e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(1.990e-01, 6.715e-02, -9.749e-02, 1.888e-01, 3.243e-02, -1.073e-01, -1.414e-01, -9.511e-03, 1.095e-01, 1.545e-01, -4.230e-02, 8.555e-02, -7.849e-02, -6.316e-02, 5.001e-03, -8.605e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(4.133e-02, 2.703e-01, 1.398e-01, 1.055e-01, -9.115e-02, 3.825e-02, -2.871e-02, 3.052e-02, 1.331e-02, 1.949e-02, -1.076e-01, -1.004e-01, -2.820e-02, 3.450e-01, 9.673e-02, -7.107e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(1.912e-02, -1.775e-01, -1.513e-01, -1.874e-02, 7.431e-02, -1.805e-01, -1.072e-01, -5.760e-02, 1.763e-01, 2.702e-01, 3.782e-02, 6.203e-02, -6.158e-02, 4.271e-01, -1.227e-01, 1.317e-01), r3);\n\tr4 = MulAdd(s1_0_2, M4(-3.919e-02, 1.425e-01, -4.084e-02, 7.205e-02, 2.176e-02, 9.971e-03, 2.496e-02, 2.098e-04, -1.515e-01, 4.365e-02, 3.447e-01, -7.570e-03, 6.261e-03, -6.578e-02, -9.970e-02, 7.479e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(-8.143e-02, 6.354e-02, -1.290e-01, -4.820e-02, 1.611e-01, 1.085e-01, 2.086e-01, 1.039e-01, 1.849e-01, -1.766e-02, -1.451e-01, 6.838e-02, -3.293e-02, -1.257e-01, 6.505e-02, -4.105e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(1.020e-01, -8.949e-02, -2.368e-02, -1.870e-01, 1.577e-01, 1.673e-01, 1.484e-01, 3.319e-02, -2.909e-01, -1.766e-02, 7.931e-02, 1.892e-01, 9.170e-02, 2.509e-02, -8.003e-02, -1.513e-01), r6);\n\tr7 = MulAdd(s1_0_2, M4(-1.275e-01, 1.833e-01, 1.364e-03, 3.035e-02, 4.920e-02, 8.464e-02, -1.030e-01, -1.062e-01, 1.332e-01, 3.196e-02, -2.835e-02, 1.221e-01, 8.414e-02, 3.083e-02, -2.751e-02, -7.002e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(3.067e-02, 1.360e-01, 7.868e-02, 2.527e-02, 8.731e-02, 9.504e-02, 2.047e-02, 1.181e-01, -1.194e-02, -7.312e-02, -9.398e-03, -1.299e-01, 1.822e-01, 6.043e-01, 4.208e-02, 8.294e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.291e-01, -1.280e-01, -7.692e-02, -1.501e-01, 3.524e-02, 1.853e-01, 4.177e-02, -8.221e-02, 9.993e-02, 5.093e-03, 1.490e-01, -1.500e-01, 1.500e-01, -8.571e-02, 1.763e-01, -1.740e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(-6.126e-02, 1.270e-02, -2.561e-02, 3.180e-02, 5.355e-02, 1.194e-01, 1.515e-01, 5.303e-02, -1.193e-02, 1.314e-01, 4.623e-02, 1.861e-02, -4.454e-02, -2.789e-01, -2.253e-01, -1.472e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(2.787e-01, 1.803e-01, 3.014e-02, 1.822e-01, -2.987e-02, 1.575e-01, 5.364e-02, 2.423e-01, -4.469e-02, 2.519e-01, 2.550e-02, 1.105e-01, -1.266e-01, -3.493e-02, 8.235e-02, 4.619e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(5.898e-02, -1.026e-01, -8.136e-02, 6.190e-02, -8.750e-02, 2.433e-03, -1.112e-01, -1.414e-02, 3.655e-02, 3.693e-02, -4.092e-02, 8.214e-02, 2.246e-01, 2.188e-01, -7.841e-02, -8.409e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(2.243e-01, -6.101e-02, -1.705e-01, 1.446e-01, -1.278e-01, 5.630e-02, -5.934e-02, 5.782e-02, -9.256e-03, -9.751e-03, -3.957e-02, 9.128e-03, -9.233e-02, -8.798e-03, 4.891e-02, -1.294e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(-2.153e-02, 1.376e-01, 9.868e-02, -1.487e-01, -9.731e-02, -7.731e-02, 6.568e-02, 4.938e-02, 7.258e-02, 3.433e-02, -3.963e-02, -1.433e-01, -5.937e-02, -9.781e-02, 6.714e-02, -3.437e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(5.203e-02, 8.277e-02, -4.318e-02, -2.301e-01, -7.393e-02, -2.846e-02, -8.571e-02, -1.354e-01, 6.881e-02, 1.304e-01, 1.260e-01, 2.464e-01, 1.182e-01, -1.086e-01, -1.644e-01, 2.262e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(1.774e-01, 1.501e-01, 1.017e-01, 3.435e-02, 2.189e-01, -3.513e-02, 4.702e-01, 1.306e-01, 1.656e-01, 3.595e-02, 2.897e-01, 1.426e-01, -7.837e-02, 4.577e-02, -3.236e-04, 3.445e-03), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.885e-02, 1.237e-02, 1.162e-01, -2.662e-01, -1.216e-01, 1.537e-01, 2.223e-01, 6.150e-02, 2.947e-02, 1.078e-01, 3.406e-02, 2.042e-01, 2.028e-01, 1.842e-02, -1.194e-01, -2.481e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.905e-01, -7.497e-02, -3.556e-01, -4.670e-01, -1.138e-01, 8.155e-02, -1.427e-01, -1.773e-01, 4.284e-02, -5.012e-02, -1.700e-01, -2.099e-01, -3.195e-01, -2.927e-01, -1.335e-02, -1.192e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(4.417e-02, 2.964e-02, -1.245e-01, -5.721e-03, 8.764e-02, 4.113e-02, 1.111e-01, -4.782e-02, -1.400e-01, -1.735e-01, -7.814e-02, -2.508e-01, -1.656e-01, 2.447e-01, 1.143e-02, 9.816e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(-2.278e-01, -4.970e-01, -1.270e-01, 1.198e-02, 1.077e-01, 1.752e-02, -1.179e-01, 1.061e-01, 1.651e-01, 1.429e-01, -1.273e-01, 1.629e-01, -2.201e-01, -2.368e-01, 9.350e-02, 8.141e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-9.805e-03, -4.579e-01, 1.819e-01, 1.178e-02, -8.024e-02, -3.378e-02, 1.030e-02, -2.069e-01, -4.642e-01, 2.586e-02, 5.184e-01, -7.962e-02, -2.187e-01, -1.528e-01, -2.080e-01, -7.873e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(4.164e-01, 9.720e-02, -1.293e-01, 1.215e-01, 3.283e-01, -1.694e-01, 1.148e-01, 2.632e-02, -8.216e-02, -7.893e-02, -1.418e-01, 4.100e-02, -3.346e-01, -1.113e-01, -6.740e-02, 2.705e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-4.472e-03, 1.911e-01, -6.203e-02, 4.760e-02, -4.802e-02, 1.318e-01, 8.060e-02, 1.036e-01, -2.822e-01, 7.350e-02, 1.799e-01, -3.605e-01, -8.035e-02, -3.268e-02, -7.467e-02, 1.706e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-1.020e-01, 5.955e-02, -2.860e-02, -3.986e-02, -4.109e-01, -7.232e-02, -2.073e-01, -2.076e-01, -9.931e-02, -1.462e-01, -1.183e-01, -1.989e-01, -2.208e-01, -3.299e-01, -5.008e-03, -1.027e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(7.754e-02, -9.720e-02, -1.729e-02, 9.650e-02, -8.608e-02, 1.606e-01, -5.090e-02, -1.089e-02, -1.667e-01, -1.643e-01, -9.142e-02, -1.425e-01, 8.038e-02, -5.488e-02, 6.689e-02, 1.290e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(2.826e-02, -4.182e-02, -3.505e-02, -8.466e-02, 1.649e-02, -1.509e-01, -1.020e-02, -1.021e-01, 2.250e-01, -1.386e-01, 1.933e-01, -1.738e-02, 3.091e-03, 2.024e-01, 3.204e-02, -3.684e-03), r2);\n\tr3 = MulAdd(s1_1_2, M4(1.170e-01, -3.415e-02, 1.472e-01, 3.609e-02, -1.056e-01, -8.034e-02, -5.724e-02, -1.707e-01, -7.253e-02, -2.244e-03, 4.475e-02, -7.904e-02, 8.984e-03, -7.859e-02, -3.521e-01, -1.288e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(1.120e-01, 4.120e-02, -2.065e-02, -5.428e-02, -2.127e-02, -4.909e-02, -9.777e-02, 8.602e-02, 2.354e-01, 2.442e-02, 3.029e-01, -5.404e-02, -1.130e-01, -1.205e-01, 7.071e-03, 5.258e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(6.327e-02, 2.060e-01, 4.872e-02, 4.947e-04, 8.183e-02, -4.688e-03, -3.027e-02, 3.038e-02, 2.492e-01, 1.387e-01, 1.421e-01, 5.951e-02, -9.995e-02, 1.549e-01, 1.182e-01, 2.980e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-6.989e-02, 7.813e-02, 8.748e-02, 1.607e-01, 1.379e-02, 1.022e-02, -2.689e-02, -1.502e-01, 2.363e-01, 2.677e-01, 1.167e-01, -1.833e-01, 4.526e-03, -4.926e-02, -7.154e-02, -2.455e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(-6.142e-02, 8.689e-02, -3.990e-02, 3.357e-01, -2.283e-03, 3.924e-02, -8.134e-02, 1.265e-01, 5.375e-02, 1.466e-01, -3.060e-01, -6.172e-02, -1.466e-01, -2.134e-01, -6.656e-02, -1.281e-01), r7);\n\tr0 = MulAdd(s1_2_0, M4(2.318e-02, 4.016e-02, 1.384e-02, 4.273e-02, 1.098e-01, 1.633e-01, -3.987e-02, 1.123e-01, 2.779e-02, 1.856e-01, -1.993e-03, 9.270e-02, 2.718e-02, 2.761e-02, 3.855e-02, -5.801e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-3.405e-01, -9.794e-03, 7.542e-02, 1.882e-02, 4.159e-02, -1.668e-01, 1.737e-01, -4.370e-02, 7.704e-02, -1.160e-01, 1.556e-01, -6.885e-02, -5.014e-02, 1.174e-02, -5.813e-02, 4.116e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-5.865e-02, -1.690e-01, 1.370e-01, -1.797e-02, -7.687e-02, -6.606e-02, 4.197e-02, -1.290e-01, -1.730e-03, 1.012e-01, -1.336e-01, -1.069e-02, 8.942e-02, -6.472e-02, 1.902e-02, 1.818e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(4.090e-02, 2.938e-01, -6.418e-03, -1.743e-01, -8.457e-02, 3.642e-02, -5.735e-02, 4.873e-02, 9.667e-02, -1.243e-01, -1.842e-01, -3.019e-02, -1.419e-01, -2.362e-01, 1.683e-01, -1.502e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(1.044e-01, 4.684e-02, 7.131e-02, 1.717e-02, 6.643e-02, 1.332e-01, -8.299e-02, 5.406e-02, -4.612e-01, -8.770e-03, 2.696e-03, -5.138e-03, 9.207e-02, -6.975e-03, 2.014e-03, 8.873e-04), r4);\n\tr5 = MulAdd(s1_2_0, M4(-3.994e-02, -1.107e-01, 1.737e-01, -6.840e-03, 6.953e-02, 1.212e-03, -9.069e-03, -1.302e-02, -1.688e-01, -2.864e-01, -1.123e-01, -1.214e-01, 1.260e-01, 2.754e-02, -1.340e-01, 1.108e-01), r5);\n\tr6 = MulAdd(s1_2_0, M4(-1.132e-01, -6.153e-02, -7.698e-02, 3.962e-02, 5.638e-02, -9.003e-03, -9.420e-02, 5.234e-02, 4.855e-02, -1.728e-02, -2.952e-02, -5.701e-02, -2.789e-02, -3.752e-02, 9.467e-02, -3.025e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(1.085e-01, -4.510e-02, -4.238e-03, -2.007e-01, -1.167e-02, -1.921e-01, -1.253e-01, -1.074e-01, -7.072e-02, -2.530e-01, -7.656e-02, 1.929e-01, 2.805e-02, 3.350e-01, 6.067e-02, 1.249e-01), r7);\n\tr0 = MulAdd(s1_2_1, M4(-6.551e-02, -1.468e-01, -5.401e-02, 1.526e-02, 1.775e-01, 8.457e-02, -9.251e-02, -5.437e-02, -1.737e-01, -8.882e-02, -5.551e-02, -2.745e-01, 6.316e-02, 1.163e-01, 2.729e-02, 1.271e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.611e-01, -6.044e-02, 1.187e-01, 1.216e-02, -6.255e-02, -2.571e-01, -8.439e-02, -1.599e-01, -2.293e-01, -1.766e-01, -1.821e-01, 1.053e-01, 1.368e-01, 2.910e-02, -4.605e-02, 1.643e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(4.652e-02, -9.557e-02, 3.319e-01, -1.461e-03, -1.463e-02, -1.638e-02, -7.744e-02, -1.354e-01, -5.994e-02, -4.162e-02, 1.195e-01, 8.689e-02, 6.429e-02, 2.802e-01, -1.166e-01, -5.859e-03), r2);\n\tr3 = MulAdd(s1_2_1, M4(-1.123e-01, 1.122e-01, -1.348e-01, -1.577e-01, -2.557e-01, -7.730e-02, 5.923e-02, -2.494e-01, -1.280e-01, -1.391e-01, 5.164e-02, 9.768e-03, 1.063e-01, 5.142e-02, 2.010e-01, 8.180e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-2.532e-01, 2.182e-01, 1.970e-01, 8.882e-02, 1.664e-01, -5.724e-03, -1.275e-01, -1.864e-01, 1.139e-01, -1.579e-01, 9.257e-02, 6.670e-02, 1.272e-02, -2.113e-02, -7.038e-02, -9.059e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(1.260e-01, 8.191e-02, 1.251e-01, -6.171e-02, -3.778e-02, -2.797e-02, -3.658e-01, -6.116e-02, -8.818e-02, 9.197e-02, 6.420e-02, 3.294e-02, -4.038e-02, -8.266e-04, 1.159e-02, 3.074e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-1.957e-01, -1.434e-01, 1.033e-01, -1.888e-01, -9.729e-02, 3.082e-02, -1.142e-01, -1.657e-01, 4.337e-02, 8.580e-02, 4.998e-03, 1.358e-01, 6.343e-02, 1.539e-01, -1.031e-01, 9.427e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-1.162e-02, -1.626e-01, 8.536e-02, 2.748e-01, 1.035e-01, 1.274e-01, -1.403e-01, 2.963e-01, -3.283e-02, -1.646e-01, -2.501e-01, -2.573e-02, 2.732e-02, 3.169e-02, -5.367e-02, -1.409e-01), r7);\n\tr0 = MulAdd(s1_2_2, M4(3.044e-02, 1.366e-01, -3.367e-02, 1.006e-01, -2.703e-01, -1.715e-01, -5.522e-02, -1.429e-01, -2.360e-02, -7.510e-02, 8.571e-03, 1.348e-01, 3.961e-02, -6.713e-02, -3.024e-02, -7.090e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(5.724e-02, -1.489e-02, -4.329e-02, 7.909e-02, 1.258e-01, 6.041e-02, 1.402e-01, -1.861e-02, -2.992e-01, 1.765e-02, -2.038e-01, -6.861e-02, 2.320e-01, 2.688e-02, -3.625e-02, -7.696e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-3.296e-02, 1.241e-01, 1.577e-01, -2.508e-02, -8.424e-02, -1.047e-01, 9.791e-02, -4.946e-02, -1.591e-01, -1.312e-01, 1.071e-01, 6.627e-02, 3.186e-02, -1.579e-01, -6.821e-02, 5.195e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(-2.693e-01, -5.200e-02, -4.890e-02, 3.286e-02, -1.910e-01, 1.507e-02, 1.015e-01, 6.490e-02, 1.909e-01, -1.060e-01, 1.401e-01, 1.454e-01, -1.703e-01, -3.797e-02, -1.220e-01, -4.271e-03), r3);\n\tr4 = MulAdd(s1_2_2, M4(-1.263e-02, -6.808e-02, 1.924e-02, 6.188e-03, 1.272e-01, 2.640e-02, -1.462e-01, -8.028e-02, 7.923e-02, -1.862e-01, 1.362e-01, -1.246e-01, -3.123e-02, 1.430e-01, 7.548e-02, 1.237e-01), r4);\n\tr5 = MulAdd(s1_2_2, M4(-1.054e-02, -1.065e-01, 9.686e-02, -7.470e-02, 5.432e-02, 7.488e-03, -1.156e-01, -5.953e-02, -1.996e-02, -9.303e-02, -3.908e-02, 2.514e-02, 1.291e-01, 8.205e-02, -4.075e-02, -5.729e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-1.674e-02, -4.448e-02, 3.530e-03, 2.418e-02, -3.991e-02, -6.844e-02, -6.274e-02, -6.121e-02, -1.499e-01, 1.257e-01, 5.106e-02, -2.721e-02, 7.147e-02, 8.432e-02, 2.518e-02, -5.879e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(1.541e-02, -1.399e-01, 1.264e-02, 2.104e-01, -1.445e-01, -1.011e-01, 1.077e-02, 1.151e-01, 1.159e-01, -1.902e-02, 3.217e-02, -1.149e-01, 1.120e-04, 3.340e-02, 4.923e-03, -1.089e-01), r7);\n\tr0 = max(r0, 0.0);\n\tT8[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT9[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT10[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT11[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT12[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT13[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT14[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT15[gxy] = r7;\n}\n\n//!PASS 3\n//!DESC conv2 (32x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T8, T9, T10, T11, T12, T13, T14, T15\n//!OUT T0, T1, T2, T3, T4, T5, T6, T7\n\n#define L0(x, y) V4(O(T8, x, y))\n#define L1(x, y) V4(O(T9, x, y))\n#define L2(x, y) V4(O(T10, x, y))\n#define L3(x, y) V4(O(T11, x, y))\n#define L4(x, y) V4(O(T12, x, y))\n#define L5(x, y) V4(O(T13, x, y))\n#define L6(x, y) V4(O(T14, x, y))\n#define L7(x, y) V4(O(T15, x, y))\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-8.919e-02, -6.488e-03, 8.227e-02, -1.919e-01, -8.126e-02, 7.152e-02, -8.053e-02, 8.621e-02, 9.076e-02, 9.191e-03, -2.516e-02, 3.285e-02, 1.554e-02, -1.144e-01, 1.138e-02, -7.305e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.313e-01, 2.958e-02, 3.071e-02, -4.751e-02, -9.955e-02, -2.343e-01, -2.071e-02, -1.291e-01, -4.446e-02, 8.216e-02, -5.434e-02, 1.067e-01, 1.243e-01, 3.311e-02, -3.698e-02, 6.732e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.365e-02, 9.549e-02, -7.125e-02, -6.613e-02, -2.890e-01, -1.927e-01, 2.065e-02, -4.684e-01, -5.115e-02, -5.342e-02, -9.887e-02, 3.134e-02, -6.609e-02, -3.107e-02, -7.777e-02, -1.249e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(8.455e-03, 1.998e-02, 3.870e-02, -6.165e-02, -1.989e-01, -3.196e-01, 1.758e-02, 4.941e-02, -1.707e-01, -5.989e-02, 5.726e-03, 2.176e-02, 3.426e-02, 4.131e-02, 3.949e-03, -2.084e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.731e-03, -1.427e-01, 1.735e-01, 2.228e-03, 3.973e-02, -3.023e-01, -2.216e-01, 9.930e-03, 4.921e-02, -1.295e-01, 1.135e-01, -1.680e-02, -1.114e-02, -3.031e-01, 7.031e-02, 3.752e-03), r4);\n\tr5 = MulAdd(s0_0_0, M4(8.449e-03, 2.951e-01, 1.984e-01, -7.349e-02, 1.747e-02, -2.385e-02, -2.529e-01, 7.210e-02, 9.735e-02, -1.763e-01, -1.184e-01, -3.574e-02, 4.231e-02, -7.067e-02, 3.150e-01, -8.728e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-2.056e-01, -1.265e-01, -1.092e-02, 1.624e-01, 2.697e-01, 1.438e-01, 1.151e-01, -2.238e-01, -5.636e-02, 9.937e-02, 3.519e-02, -5.161e-02, -8.790e-02, 1.028e-01, 4.053e-03, -2.434e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(1.221e-02, 5.230e-02, 1.063e-01, 1.990e-01, -1.936e-01, -2.152e-01, -1.071e-02, -3.559e-01, -2.967e-02, 8.295e-02, -1.067e-01, -9.282e-02, 1.510e-01, -9.694e-02, 3.999e-02, 5.668e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(9.011e-02, 2.046e-01, 6.121e-02, -1.856e-01, -4.574e-01, -1.410e-01, -1.161e-01, -4.527e-02, 1.141e-01, 8.719e-02, -1.504e-01, 1.028e-01, 2.830e-01, -1.684e-01, -1.003e-01, 5.288e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-4.261e-02, 1.634e-02, -3.820e-02, 5.044e-02, 1.241e-01, 2.008e-01, 1.012e-01, -1.019e-01, -7.293e-02, 2.155e-01, 1.799e-02, -6.867e-02, 1.325e-01, 7.973e-02, -6.211e-03, 6.133e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-1.075e-01, -1.997e-01, 3.408e-02, -3.029e-02, 3.695e-02, 2.412e-01, -4.802e-02, 6.017e-03, -2.105e-02, -1.397e-01, -1.083e-01, -2.759e-01, 5.644e-02, -4.138e-03, -2.118e-01, -2.356e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-4.883e-02, -1.933e-01, -3.108e-02, -2.095e-03, -1.671e-02, -4.189e-01, 7.843e-02, -2.971e-02, 8.921e-02, 4.422e-02, 8.709e-03, 6.543e-02, -8.452e-02, 4.559e-02, 5.019e-02, 5.883e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-6.379e-03, 1.025e-01, 2.524e-01, 3.164e-02, 4.827e-03, 1.134e-01, -3.738e-01, 1.496e-02, 1.629e-02, 9.172e-02, -7.283e-02, 2.112e-02, -1.032e-02, 7.669e-02, 8.542e-02, -1.627e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(1.338e-02, -6.913e-02, -6.424e-02, 7.073e-02, 7.031e-02, 5.948e-02, -1.005e-01, -9.392e-02, 7.949e-02, -2.673e-02, 6.895e-02, -6.470e-02, 9.478e-03, 4.150e-03, -2.652e-01, 8.238e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(1.405e-02, 1.596e-01, 5.176e-02, 1.330e-01, 6.112e-02, -1.964e-01, -3.144e-02, -2.129e-01, -1.679e-01, -2.768e-02, -3.887e-02, -3.950e-02, -1.631e-02, 1.235e-02, 7.264e-02, 1.103e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(1.342e-01, 1.017e-01, -3.398e-02, -3.635e-02, -1.792e-01, -5.982e-02, 4.896e-02, 3.965e-03, 9.240e-02, 1.796e-03, 1.373e-02, 1.728e-02, -4.339e-02, 8.130e-02, -6.780e-02, -1.061e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(8.464e-02, 8.533e-02, -1.100e-02, 2.563e-02, -2.782e-01, -3.751e-02, 3.385e-02, -6.854e-02, -4.319e-02, -8.424e-02, -1.267e-01, -1.192e-01, -2.730e-02, -8.641e-02, -2.116e-02, -3.730e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(5.874e-02, -3.460e-02, 1.515e-02, 4.811e-02, -4.190e-02, 5.195e-02, 1.555e-02, -6.841e-02, -9.575e-02, 4.494e-03, -1.050e-01, -2.891e-02, 1.228e-01, 2.021e-01, -2.509e-02, 9.128e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-4.384e-02, -1.932e-02, 8.725e-02, -1.223e-01, 4.850e-02, 1.380e-01, -1.866e-02, 1.770e-01, 1.616e-01, 1.617e-02, 3.399e-02, -1.594e-01, -1.430e-02, -1.115e-03, -9.152e-02, 9.833e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(1.392e-01, -1.218e-01, 3.042e-02, -1.246e-02, -5.928e-02, 9.465e-02, -6.711e-02, 4.759e-02, -1.530e-01, 4.857e-02, 3.259e-02, 5.053e-03, 1.173e-01, 1.429e-01, -2.531e-02, -1.424e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-4.704e-03, -1.280e-01, 1.238e-01, 6.541e-03, -1.996e-02, -1.027e-01, -9.598e-02, -1.503e-02, 3.884e-02, 1.152e-02, -3.591e-02, 6.701e-03, -5.372e-03, -9.783e-02, 7.775e-03, 1.541e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-8.630e-02, -1.196e-01, -3.321e-02, -1.012e-02, 1.197e-01, 1.023e-01, 2.693e-02, -5.222e-02, 1.142e-01, 6.779e-02, -3.168e-02, -2.664e-02, 3.539e-02, -2.170e-02, 5.413e-02, 1.000e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(5.261e-02, -2.115e-02, -4.564e-03, 1.518e-02, -4.427e-02, 4.421e-03, -9.709e-02, 3.905e-02, -2.470e-03, 4.432e-02, 5.403e-02, 4.458e-02, -5.643e-03, -4.195e-02, -4.281e-02, 2.529e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-2.537e-03, 7.152e-02, -7.546e-03, 2.000e-02, 2.360e-02, -1.119e-02, 4.316e-02, 8.911e-03, 2.555e-02, -3.197e-02, 6.326e-02, -1.513e-02, -3.824e-02, 4.530e-02, -7.959e-02, -8.197e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(4.103e-02, -9.662e-02, 1.850e-01, 2.170e-02, -3.800e-01, 3.960e-02, 3.690e-02, -2.093e-01, -1.011e-01, 3.019e-02, -1.646e-01, -1.728e-02, -1.192e-01, 7.709e-02, 1.504e-02, 1.788e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(5.200e-01, 4.267e-01, -5.614e-02, 1.663e-02, -1.273e-02, -8.416e-02, -4.649e-02, -1.330e-02, -6.183e-02, 4.455e-02, 6.103e-02, 1.118e-01, 1.860e-01, 5.935e-02, 1.569e-02, -2.397e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.981e+00, -2.551e-01, -5.203e-01, -4.055e-01, -2.158e+00, -2.465e-02, 1.494e-02, 2.297e-01, -9.762e-02, 3.407e-02, 1.512e-02, -7.589e-02, 5.011e-03, 1.823e-02, -1.788e-01, -6.641e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-2.779e-01, 2.125e-01, 1.921e-02, -1.347e-03, -5.902e-01, -1.004e+00, -9.888e-02, -2.805e-02, 8.380e-03, 6.096e-02, -5.920e-02, -1.997e-02, -1.735e-01, 1.367e-01, 2.207e-02, -9.418e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(1.226e-01, -4.222e-02, -8.188e-01, -1.093e-02, -8.789e-02, -6.493e-01, -2.471e-01, 1.488e-02, -1.333e-01, -3.244e-01, 2.570e-02, -1.004e-02, -1.573e-02, 1.828e-01, -2.004e-02, 2.526e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-1.319e-01, -1.410e-01, 1.353e-01, -9.107e-02, 3.490e-02, -8.684e-02, -6.914e-02, 1.328e-01, -7.968e-03, 8.591e-02, 1.070e-01, 2.882e-02, 1.064e-02, -1.088e-01, 2.410e-01, 1.838e-01), r5);\n\tr6 = MulAdd(s0_1_0, M4(-9.003e-01, 1.315e-01, 1.390e-01, -3.812e-01, 3.496e-01, 3.133e-02, -3.818e-02, 1.368e-01, -2.613e-02, -2.151e-02, -5.597e-02, 2.004e-03, -2.719e-01, -9.533e-03, 9.574e-02, 5.164e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(-9.437e-02, -3.936e+00, -2.443e+00, -1.192e+00, 1.611e-02, -4.832e+00, -1.764e+00, 3.056e-01, -4.343e-01, -8.891e-02, -2.954e-01, -2.063e-01, 1.444e-03, -8.935e-02, 5.195e-02, -4.034e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(-1.824e-01, 1.483e-01, 1.655e-01, 1.181e-01, -1.572e-01, -2.004e-01, 2.853e-02, -6.330e-02, -6.470e-02, -9.135e-02, 4.012e-01, 4.583e-02, -1.232e-01, -1.444e-01, -5.791e-02, 7.100e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-5.172e-02, -5.884e-01, 1.582e-02, 7.073e-02, 4.136e-02, 2.494e-01, 8.730e-03, 1.458e-01, 1.230e-01, -5.364e-02, 3.438e-01, -2.821e-02, -3.054e-01, -3.569e-01, 8.166e-02, 2.323e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(3.006e-02, 5.737e-02, -5.865e-03, 2.456e-01, 6.286e-02, 2.476e-02, -3.850e-02, 9.214e-02, 2.633e-01, 2.342e-01, 2.047e-01, 3.968e-01, 1.533e-01, 3.300e-01, 6.996e-01, -1.143e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.075e-01, -1.858e-01, 2.413e-02, -1.583e-02, 5.620e-02, -1.040e+00, 1.364e-02, -2.663e-02, 3.546e-01, 1.383e-01, -9.493e-02, -4.184e-02, -1.327e-02, -1.253e-01, 3.879e-03, 2.823e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(1.266e-02, 7.219e-02, -1.376e-01, 2.249e-02, 6.495e-02, -1.292e-01, -3.595e-01, -2.526e-02, 3.234e-01, 2.166e-01, 2.447e-01, 8.106e-01, -2.144e-01, 4.492e-01, 1.121e-02, 3.500e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(9.243e-02, -1.972e-01, 4.131e-02, -2.607e-02, 5.867e-02, 7.674e-02, -6.268e-02, -1.418e-01, 1.396e-01, 2.806e-02, 2.321e-02, -5.602e-03, 1.272e-01, 3.428e-01, -3.128e-01, 1.826e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-3.406e-01, 1.240e-01, 9.909e-02, 1.450e-01, 3.911e-01, 1.182e-01, 1.662e-02, -4.263e-02, 1.703e-01, -1.096e-01, -1.280e-02, -7.644e-02, 2.667e-01, -3.974e-02, -1.603e-01, 2.649e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(4.502e-02, 1.930e-01, -1.638e-01, 3.053e-02, 6.562e-02, 1.107e-01, 2.707e-02, -2.144e-01, 1.688e-01, 8.836e-02, 3.093e-01, 2.122e-01, 1.070e-01, 1.363e-02, 6.054e-02, 2.164e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(1.048e-01, 9.137e-02, 9.293e-02, -3.916e-03, -1.964e-01, -2.524e-02, -7.201e-02, 9.043e-02, 1.886e-01, 1.677e-01, -1.626e-02, 6.195e-02, 1.918e-02, 8.323e-02, 1.146e-01, -8.603e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(8.360e-02, -1.615e-01, 4.010e-02, -6.296e-02, 7.986e-03, 1.495e-01, -7.646e-03, 4.598e-02, -1.714e-02, -1.452e-02, -1.086e-01, -3.120e-02, -1.210e-01, -1.909e-01, -1.782e-02, 6.466e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-8.227e-02, -3.988e-02, -8.277e-02, -8.269e-02, 5.099e-02, 1.254e-02, -8.261e-02, 2.051e-01, -4.516e-02, -2.198e-03, -1.039e-01, 2.664e-02, -6.046e-02, -3.140e-02, -1.572e-02, -6.280e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.814e-02, 1.448e-01, 4.791e-03, 1.994e-02, -2.078e-01, -3.437e-01, -1.841e-02, -5.597e-03, 6.635e-02, -1.246e-01, 1.293e-02, 1.407e-02, -3.855e-02, -2.052e-01, 2.494e-02, -1.224e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(-2.307e-02, -1.577e-01, -4.002e-02, -2.044e-02, 9.772e-02, 5.735e-03, -2.092e-01, 2.130e-02, 1.722e-02, 4.647e-02, -8.754e-02, 7.397e-02, 2.962e-02, 4.581e-02, -1.451e-01, -1.327e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-1.772e-03, 8.964e-02, 2.676e-02, -3.144e-02, 6.471e-02, -1.191e-01, -2.656e-02, 9.462e-02, -6.646e-03, 2.136e-02, -2.577e-02, 1.062e-02, -4.757e-02, 8.680e-02, -1.092e-02, -4.480e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-1.387e-01, 7.503e-02, -1.738e-02, -1.291e-01, 1.513e-01, -4.218e-02, 5.520e-03, 1.429e-02, 3.795e-02, 4.166e-02, -2.010e-02, 8.842e-02, 7.277e-02, 3.626e-02, 9.187e-02, 8.602e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-6.298e-02, 5.954e-02, 6.912e-02, -7.831e-03, 8.651e-02, 5.348e-03, -7.329e-02, -7.819e-02, 1.006e-01, 3.437e-02, 5.435e-02, 4.010e-02, 1.782e-02, -2.848e-03, 2.555e-02, 3.209e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(1.491e-01, -1.208e-02, 6.721e-02, -1.219e-01, -1.796e-01, -8.278e-02, 2.740e-02, 3.334e-01, -4.639e-02, -2.327e-02, -1.123e-02, 1.257e-02, -2.496e-02, 1.773e-01, 5.257e-02, -7.234e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-6.939e-02, 9.083e-02, -1.393e-02, -1.010e-01, -2.306e-02, 1.792e-01, -4.395e-02, 2.365e-02, 1.738e-03, -7.508e-02, -6.019e-02, -5.695e-02, 4.696e-02, 7.042e-02, -3.131e-02, -1.385e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(3.169e-04, -9.287e-05, 5.804e-02, 1.061e-02, 9.647e-02, 1.087e-01, -6.359e-02, 3.417e-01, -2.857e-03, -4.844e-03, 4.915e-02, -1.158e-01, 6.074e-02, -6.114e-02, 3.761e-02, 1.693e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(2.359e-02, -6.943e-02, -7.261e-02, 2.932e-03, 2.569e-03, -4.281e-01, -4.019e-03, -2.217e-02, 8.601e-03, -5.017e-02, -2.268e-02, 3.229e-04, -1.391e-03, 1.056e-03, -4.447e-03, 1.850e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-5.427e-03, -1.685e-01, -1.304e-01, -2.093e-02, 9.203e-02, 7.044e-02, -5.151e-02, 1.342e-02, 1.923e-02, -4.640e-02, -1.231e-02, 2.529e-02, 1.105e-01, 9.298e-03, -6.887e-02, -3.783e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(9.330e-02, 4.206e-02, 4.883e-02, 9.272e-02, 1.610e-01, -3.254e-03, 6.487e-02, -4.272e-03, 1.105e-02, 9.430e-02, -8.338e-02, -1.361e-02, 7.466e-02, -7.134e-02, 5.368e-02, -1.575e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(-1.035e-01, -1.706e-02, -1.197e-01, -2.899e-01, 1.978e-01, -5.552e-02, 8.179e-02, 1.352e-01, 6.812e-02, -6.613e-02, 1.529e-02, 1.379e-01, 3.944e-02, 3.603e-02, 3.603e-02, -3.727e-01), r6);\n\tr7 = MulAdd(s0_2_0, M4(1.232e-02, 1.133e-01, 1.916e-01, -1.829e-02, -1.595e-01, -1.597e-01, -1.818e-01, -4.556e-01, 1.157e-01, 2.409e-03, -9.951e-02, 6.367e-02, 1.362e-01, -3.540e-02, 1.632e-01, 2.330e-01), r7);\n\tr0 = MulAdd(s0_2_1, M4(7.297e-02, -1.168e-01, 1.041e-02, 1.089e-02, 5.185e-02, 3.861e-02, 1.085e-02, 4.640e-03, -8.250e-02, 8.577e-02, 4.968e-02, -1.190e-01, -5.581e-02, 6.132e-02, 4.002e-02, 9.108e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-6.954e-02, -6.147e-02, 5.510e-03, -9.034e-03, 5.622e-02, 2.017e-01, -7.840e-02, -6.628e-02, 1.244e-01, -1.028e-01, -7.536e-02, -3.382e-02, -7.351e-02, 6.772e-02, -6.071e-02, -1.421e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.363e-01, 6.634e-03, -1.620e-02, 7.552e-02, 9.988e-02, 9.055e-02, 7.901e-02, 6.791e-02, -1.411e-01, -5.386e-02, -8.440e-02, 2.563e-02, 5.145e-02, -7.604e-02, 6.590e-03, -1.841e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.190e-01, 8.958e-02, 9.407e-03, -1.636e-02, -1.427e-01, -6.461e-01, -1.074e-01, 4.624e-02, 5.352e-02, 1.549e-02, 1.450e-01, -9.919e-03, 1.518e-01, 1.922e-02, -4.586e-02, 1.403e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(6.421e-02, -6.466e-02, -4.517e-02, 1.763e-03, 4.061e-02, -1.487e-01, -2.556e-01, 5.940e-03, -2.898e-01, 1.426e-02, -1.558e-01, 8.296e-02, 9.557e-02, 3.661e-02, 3.096e-02, 2.776e-03), r4);\n\tr5 = MulAdd(s0_2_1, M4(-1.586e-01, 1.625e-02, 1.394e-02, -5.455e-03, 2.649e-01, 9.114e-03, 1.029e-01, -2.654e-02, -2.803e-01, 3.194e-02, 2.203e-02, 1.213e-01, -1.733e-01, -2.429e-02, -3.439e-02, -9.747e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(4.894e-02, 1.076e-01, -4.896e-03, -1.714e-02, 2.028e-01, -2.705e-01, -3.176e-03, 5.370e-02, 5.703e-02, 1.709e-02, -2.805e-02, -7.776e-02, 5.419e-02, 3.642e-02, 4.257e-02, -2.685e-01), r6);\n\tr7 = MulAdd(s0_2_1, M4(-3.601e-01, 5.323e-02, -3.499e-02, -7.078e-02, 2.683e-01, 4.860e-03, 3.854e-02, 5.123e-02, -1.318e-02, 2.593e-03, 9.378e-02, 2.824e-02, -2.243e-01, 2.225e-01, -8.322e-02, 6.950e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(4.166e-02, 1.569e-02, -4.396e-03, 6.546e-02, -2.243e-02, -4.892e-02, -5.016e-02, -4.663e-02, 1.013e-02, -1.131e-02, -9.717e-03, 4.324e-02, 1.473e-01, 7.615e-02, -1.626e-02, 7.057e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(2.177e-02, 2.721e-03, -2.093e-02, 6.328e-03, 1.157e-02, 6.081e-02, -5.606e-03, 4.262e-03, 1.906e-02, -7.505e-02, -6.633e-03, 2.691e-02, -1.864e-02, -1.175e-02, 8.382e-02, 8.077e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.081e-02, -5.989e-03, -2.281e-02, 2.299e-02, 3.944e-03, 8.947e-03, 4.913e-02, -2.222e-01, -1.947e-02, 1.092e-02, 2.693e-03, 1.313e-01, -7.603e-02, -1.629e-03, -9.002e-02, 5.353e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(2.244e-01, 4.357e-02, -3.454e-02, -5.273e-02, -8.311e-02, -5.196e-01, 2.887e-02, 2.418e-02, -3.214e-01, 1.681e-02, -1.008e-01, -1.979e-02, -1.512e+00, 2.667e-02, 8.620e-02, 8.606e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(3.311e-03, -1.807e-02, 2.871e-02, 1.288e-02, 2.772e-02, 3.513e-02, -2.300e-01, 1.254e-02, -1.071e-02, 6.147e-03, 5.221e-02, -4.599e-03, -8.907e-03, -1.661e-01, 7.876e-02, 5.171e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(1.200e-01, 7.216e-03, 1.033e-02, 5.833e-02, -6.989e-02, 4.808e-02, 5.959e-02, -8.654e-02, -7.544e-02, -9.613e-02, -2.779e-02, 6.195e-02, -4.412e-02, -7.837e-02, -1.197e-01, -3.094e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(7.885e-02, -3.252e-02, -1.197e-02, 3.745e-02, 3.480e-02, -7.624e-02, 7.787e-02, 1.308e-02, -5.704e-02, 2.076e-02, -9.613e-03, -1.267e-03, 5.741e-02, -4.304e-02, -6.726e-03, 2.171e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-2.818e-02, 1.517e-01, -1.986e-02, -3.701e-02, 2.242e-01, -1.186e-01, 2.960e-02, 8.287e-02, -1.312e-01, -9.302e-02, 3.748e-02, -2.154e-02, -1.194e-01, 1.134e-01, -3.301e-02, -2.161e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-9.677e-02, 1.714e-02, -1.259e-02, -7.577e-02, 6.989e-03, 1.418e-02, 3.882e-02, 1.667e-01, 2.686e-02, -8.460e-03, -2.899e-02, -6.340e-02, -7.903e-02, 1.246e-01, -6.448e-03, -9.580e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.424e-02, -1.094e-01, 5.289e-02, -4.248e-02, -4.575e-03, -1.051e-01, 2.881e-02, 1.795e-02, -3.204e-02, 3.867e-02, -2.574e-02, -4.684e-02, -1.885e-02, 2.806e-02, 3.245e-04, 1.824e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-1.449e-01, -2.677e-01, 5.078e-02, 3.485e-02, 5.465e-03, -1.379e-03, -3.968e-02, -9.030e-02, 1.687e-02, 1.020e-01, -1.273e-01, -8.196e-02, 9.959e-02, -1.965e-02, 2.250e-01, 8.180e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-2.028e-01, -1.170e-01, 3.373e-02, -1.208e-01, -2.520e-02, -3.582e-02, -1.470e-02, -1.632e-02, 2.116e-01, 1.518e-01, -4.017e-02, -1.333e-01, 1.820e-02, -6.461e-02, 5.733e-03, 1.666e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-3.968e-02, 6.702e-03, 2.323e-02, 1.771e-02, -1.579e-02, -1.022e-02, -1.367e-02, -6.664e-03, -1.197e-03, 1.106e-01, -4.514e-03, 4.710e-03, -1.114e-02, -1.003e-01, -5.681e-02, 1.059e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(7.796e-02, -8.763e-02, -1.553e-02, 2.013e-02, -2.304e-02, -9.339e-02, -1.082e-02, 2.259e-02, 2.580e-02, -1.113e-01, 2.701e-02, 3.521e-02, 4.069e-02, 1.337e-01, 7.661e-02, -6.475e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(1.019e-01, 4.740e-02, 2.129e-02, -1.467e-01, -5.915e-02, 1.582e-01, -6.025e-02, -4.712e-03, -5.250e-02, 6.702e-02, -9.401e-03, 7.545e-02, -7.152e-02, -1.582e-01, 4.204e-02, -1.126e-01), r6);\n\tr7 = MulAdd(s1_0_0, M4(-8.549e-02, -4.329e-02, 1.368e-01, 5.426e-03, -2.116e-01, -3.455e-02, -6.405e-02, 9.790e-03, 1.805e-01, 3.087e-02, 6.185e-02, 6.792e-02, 2.757e-02, -6.569e-02, 8.164e-02, -5.442e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(2.627e-02, -8.544e-02, 7.501e-02, -1.612e-03, 2.620e-02, 5.236e-02, -1.136e-01, -6.961e-02, 8.353e-02, -1.422e-01, 1.727e-01, 1.397e-01, -1.961e-02, 9.598e-02, -8.965e-03, -2.202e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(-2.218e-01, 1.329e-01, 1.736e-01, 7.452e-03, 1.020e-02, 7.278e-02, -4.661e-02, -6.196e-02, 1.621e-01, -2.533e-02, 6.818e-02, 9.220e-02, 4.252e-03, -7.154e-02, -8.893e-03, -6.775e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-7.842e-03, -2.261e-01, 9.403e-02, -1.001e-01, 1.115e-01, -8.731e-03, 4.921e-02, -1.077e-01, 2.718e-02, 7.924e-02, -1.683e-02, 3.640e-02, -1.334e-01, 1.346e-01, -7.416e-02, 3.719e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(-2.819e-02, -3.005e-02, 9.475e-02, -1.891e-01, 6.011e-02, 8.095e-02, 6.915e-02, -2.836e-02, -8.949e-02, -7.300e-02, 2.017e-03, -1.362e-01, -1.975e-01, -1.169e-01, 2.267e-02, 1.012e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-3.492e-02, 2.895e-02, -2.316e-02, -3.453e-02, 3.664e-02, 1.300e-01, 3.450e-02, 1.654e-02, -5.488e-02, -1.087e-01, -7.080e-02, -3.614e-02, 4.801e-02, -1.119e-01, -1.002e-01, 2.776e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.317e-02, 1.744e-01, 9.024e-02, -1.401e-01, -5.648e-03, 1.977e-01, -5.766e-02, 4.853e-02, 6.012e-02, -1.278e-01, 4.750e-02, -1.463e-01, 6.908e-02, 6.675e-02, -2.410e-01, -2.499e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(7.538e-02, -9.754e-02, 9.937e-02, -4.916e-02, 9.104e-02, -2.542e-02, 1.229e-01, -7.603e-02, -1.544e-01, -1.170e-01, 4.834e-02, 8.178e-02, -1.421e-01, 8.711e-02, -6.071e-03, 3.794e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-1.853e-01, -3.680e-01, -1.061e-01, 4.731e-02, -7.604e-02, 6.990e-02, 8.817e-02, 4.770e-02, -1.792e-01, -1.332e-01, -8.160e-02, -2.610e-02, 1.233e-01, 8.988e-03, -6.201e-02, 1.470e-01), r7);\n\tr0 = MulAdd(s1_0_2, M4(-1.579e-01, 1.905e-01, -8.406e-02, 6.816e-03, -1.097e-01, -4.249e-02, 1.468e-02, 9.676e-03, -1.530e-02, -6.644e-02, -4.181e-02, -1.402e-01, 1.054e-01, 1.077e-01, 8.955e-02, 2.836e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(7.934e-02, 9.445e-02, 3.857e-02, 2.220e-02, 5.644e-02, 3.638e-03, -1.110e-03, 3.629e-02, 4.228e-02, 2.475e-02, 1.714e-02, 1.356e-02, -1.243e-01, -3.249e-02, 1.163e-02, 2.184e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.415e-01, 2.099e-03, 1.231e-01, -2.587e-01, 1.074e-02, 6.039e-02, -5.694e-02, -6.027e-02, -8.181e-02, -3.852e-02, 9.853e-02, -9.854e-02, -7.841e-02, -3.619e-02, 6.620e-02, 9.883e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(2.215e-02, -1.821e-01, -3.589e-02, -2.323e-02, -6.651e-02, -1.979e-02, 4.181e-02, 7.784e-02, -7.025e-02, -9.429e-02, -3.584e-02, -1.050e-01, 9.172e-02, -6.441e-02, -6.872e-04, -1.128e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-1.806e-02, -7.626e-02, -1.572e-03, 7.863e-03, -4.353e-03, -9.632e-02, -3.815e-02, -4.617e-03, -1.281e-02, 2.742e-01, 9.697e-02, 2.135e-02, 1.409e-02, 2.695e-01, 3.867e-02, -3.454e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(5.066e-02, -1.749e-03, -2.601e-02, -1.994e-02, -5.227e-03, -3.937e-02, 1.313e-02, 6.241e-03, 5.441e-02, 6.754e-02, -1.510e-01, -4.795e-02, -1.878e-02, -3.545e-02, -7.256e-02, 2.241e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(1.627e-02, 5.324e-02, 4.552e-02, -4.204e-02, -5.135e-03, 2.467e-02, 3.120e-02, 3.763e-03, 1.243e-01, 6.087e-03, 1.080e-01, 8.624e-02, -4.556e-02, 9.734e-02, -6.938e-02, 1.223e-01), r6);\n\tr7 = MulAdd(s1_0_2, M4(6.549e-02, 1.931e-01, 7.700e-02, -8.325e-02, -1.005e-02, 3.821e-02, 8.293e-03, -5.554e-03, -1.556e-01, -1.104e-02, -1.130e-01, -1.166e-01, 8.793e-02, -9.087e-02, 5.668e-03, -5.547e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-5.156e-02, -2.784e-01, 1.880e-02, -1.118e-01, 1.102e-01, 4.054e-02, 2.377e-02, -3.640e-03, -3.921e-02, 1.767e-01, -2.964e-02, 1.901e-01, 2.590e-02, 3.046e-02, 2.132e-02, -4.699e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.304e-01, -3.864e-02, -6.562e-02, -3.552e-02, 6.820e-02, 2.313e-01, -7.054e-03, -3.089e-02, 1.382e-01, 1.455e-01, -5.629e-03, -1.183e-01, 4.481e-02, 4.211e-02, 2.854e-02, 7.689e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(3.151e-02, -1.479e-01, 9.871e-02, 8.036e-02, -3.620e-02, -1.091e-01, -1.196e-02, 1.129e-02, -1.001e-01, -3.289e-02, -2.143e-01, -1.554e-01, -3.121e-02, 6.650e-03, 1.054e-01, -3.042e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(-1.001e-01, 1.085e-01, -8.029e-02, -2.112e-01, 1.882e-01, -1.377e-02, 2.029e-03, -1.617e-02, -6.526e-02, 2.261e-01, 8.519e-03, -3.868e-02, 9.108e-02, -5.497e-02, -1.597e-02, -1.075e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-7.702e-02, 2.291e-01, 8.342e-02, -1.703e-02, 8.310e-02, 1.916e-01, -1.072e-01, 1.743e-02, -3.917e-02, -1.598e-01, -7.542e-02, -9.646e-04, -2.144e-02, -2.154e-01, -1.026e-01, 2.948e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-2.946e-01, -1.391e-01, -2.087e-01, -2.700e-02, 8.273e-02, 7.726e-02, 8.633e-02, 7.826e-02, -6.580e-02, 1.249e-01, 3.709e-01, 7.431e-02, 1.081e-01, -9.163e-02, 2.878e-02, 1.647e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(1.646e-01, 2.769e-01, 6.373e-02, 1.181e-02, -1.155e-01, -2.391e-01, 6.620e-02, 4.061e-02, 4.212e-02, 8.553e-02, 3.700e-02, -1.531e-01, -6.744e-03, -1.878e-01, 7.168e-02, 5.830e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(3.561e-02, 4.771e-02, 2.409e-01, 1.864e-01, 4.054e-01, -1.685e-01, 6.606e-02, -1.016e-01, 2.391e-01, -1.530e-01, 2.576e-01, -5.510e-02, -2.806e-01, -1.791e-01, -1.418e-01, -5.126e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-1.365e-01, 3.072e-02, -1.164e-01, 1.290e-01, -2.472e-01, -1.053e-01, 2.286e-01, 5.425e-02, 2.040e-01, 2.755e-02, 1.347e-01, 2.133e-01, 2.105e-01, -9.181e-02, 1.181e-02, 4.846e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(4.558e-02, -4.159e-01, -2.972e-02, 9.588e-02, -8.009e-02, -9.696e-01, 1.167e-01, -7.530e-02, -2.961e-01, 9.423e-02, -5.108e-02, 7.883e-02, 8.716e-02, 4.449e-01, -2.121e-02, -1.691e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(6.091e-02, 3.115e-01, -1.736e-01, 1.384e-01, -1.752e-01, -3.885e-01, -9.351e-02, -4.285e-04, 8.965e-02, 5.499e-02, 1.171e-01, -3.875e-02, -6.221e-02, 3.551e-02, 8.425e-02, 2.196e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(2.318e-02, -1.210e-01, 5.174e-02, 3.722e-01, -1.041e-01, -6.324e-02, 1.224e-01, -4.038e-02, 2.043e-01, 3.678e-02, 1.243e-01, 2.325e-01, -9.284e-02, 5.764e-02, 7.152e-02, 8.665e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(-1.008e-02, -8.954e-02, -1.534e-01, 3.979e-03, -1.613e-01, -2.052e-01, 1.348e-01, -1.228e-02, -2.352e-02, -2.233e-02, -4.597e-02, 4.612e-02, 7.044e-02, 1.260e-01, 3.343e-03, 2.575e-03), r4);\n\tr5 = MulAdd(s1_1_1, M4(1.663e-02, 1.210e-01, -3.720e-02, 1.138e-01, 6.357e-03, -6.710e-02, -2.203e-02, 6.709e-02, 1.632e-02, -1.792e-01, -1.408e-01, 1.534e-01, -5.238e-02, -1.536e-01, 1.113e-01, -2.174e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(-2.558e-02, -2.930e-02, -1.577e-01, 6.065e-02, 3.760e-01, -1.306e-01, 6.377e-03, -1.333e-01, -8.755e-02, -5.363e-02, 7.494e-02, 1.391e-01, -7.222e-02, 1.540e-01, -4.765e-02, 1.214e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(-3.755e-01, 3.774e-01, 4.624e-02, -3.575e-02, -2.045e-01, 7.062e-02, 2.709e-02, -2.334e-02, -1.111e-01, 5.906e-02, -2.258e-01, -8.946e-02, -2.397e-01, -9.560e-02, -1.468e-01, -1.195e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(1.393e-01, -7.123e-03, -2.214e-02, 8.191e-02, -1.420e-02, 8.489e-02, 3.870e-02, 8.015e-03, -1.376e-01, -1.860e-01, -2.217e-02, -1.113e-01, 3.759e-02, -2.174e-01, 3.284e-02, 1.325e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(6.522e-02, 5.949e-02, -6.568e-02, -1.422e-02, -8.569e-02, 2.398e-01, 2.417e-02, 3.061e-02, 3.015e-02, -5.556e-02, -1.707e-02, 3.284e-02, 5.544e-02, -3.303e-01, 4.736e-02, 5.609e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-3.527e-02, 1.480e-02, -1.115e-02, 1.043e-01, 1.160e-01, 1.734e-02, -1.262e-02, 1.141e-02, 3.747e-02, -1.179e-01, 3.901e-02, -5.901e-02, 5.981e-02, -6.201e-02, 1.424e-02, -1.477e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(-3.097e-02, -1.881e-02, 4.071e-03, 1.970e-01, 4.191e-02, -1.671e-01, 7.529e-02, 1.507e-02, -4.989e-01, -1.311e-01, 1.821e-01, 1.675e-01, -1.717e-01, 3.401e-01, 8.784e-02, 1.159e-04), r3);\n\tr4 = MulAdd(s1_1_2, M4(3.916e-02, -4.144e-02, 4.300e-02, 9.385e-03, -3.894e-02, 1.452e-01, -6.170e-02, 2.632e-02, 5.919e-02, -5.304e-02, 1.255e-01, 2.392e-02, 2.620e-03, -3.581e-02, 2.632e-01, 6.588e-03), r4);\n\tr5 = MulAdd(s1_1_2, M4(-1.048e-02, -3.103e-03, -2.786e-02, 1.004e-01, -6.419e-03, -1.802e-01, -1.459e-01, -3.157e-02, -1.643e-01, -5.352e-02, -1.020e-01, 7.525e-02, 1.307e-01, 9.877e-02, 1.852e-01, 8.259e-03), r5);\n\tr6 = MulAdd(s1_1_2, M4(1.657e-01, 6.753e-02, -1.160e-01, 2.302e-02, 5.776e-02, 7.282e-03, 9.302e-02, 3.085e-02, 1.101e-01, -1.462e-01, -1.820e-02, 5.519e-02, -8.745e-02, -1.636e-02, 3.125e-02, 4.863e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(6.573e-02, 9.037e-02, -3.329e-03, 1.003e-01, -1.322e-01, -6.976e-04, -4.052e-03, 2.941e-02, 2.650e-03, 1.595e-01, -6.399e-02, 3.192e-02, 3.576e-01, 1.282e-01, 7.040e-02, -9.708e-03), r7);\n\tr0 = MulAdd(s1_2_0, M4(-7.049e-03, -2.148e-02, -5.393e-02, 1.062e-01, 7.233e-02, 6.322e-02, 2.109e-02, -2.913e-02, -1.492e-02, -6.348e-02, -5.253e-02, -1.766e-01, 8.618e-02, -1.076e-02, 4.836e-02, 1.246e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(3.712e-02, 2.157e-02, 4.485e-02, 2.058e-02, 3.083e-02, 1.237e-01, 9.331e-03, 9.324e-02, -2.193e-02, -9.462e-02, -8.865e-03, -4.340e-03, 6.473e-02, 1.141e-01, 1.061e-02, 5.753e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-2.917e-02, 2.106e-02, 4.212e-02, 8.408e-02, -1.076e-02, 1.027e-02, 3.982e-02, 7.689e-02, 3.982e-03, 6.219e-02, -1.060e-01, -2.403e-02, 3.560e-02, 3.358e-02, -1.532e-01, -2.852e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(9.800e-02, 1.148e-01, 1.517e-02, 1.935e-02, 6.642e-02, 1.518e-01, -7.098e-02, -3.728e-02, 1.282e-01, 7.614e-03, 8.381e-02, 1.039e-01, -9.978e-02, -5.612e-02, -3.641e-02, -6.876e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-2.244e-02, 8.257e-02, 1.909e-01, 1.436e-04, -5.933e-02, -4.902e-01, -1.141e-01, 1.352e-02, -4.257e-03, -1.125e-01, -2.493e-01, 1.590e-03, 6.643e-02, 1.612e-01, 1.765e-02, 1.425e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-4.276e-02, -3.505e-02, -5.743e-02, -1.106e-02, -6.554e-02, -1.280e-01, -3.649e-02, 6.699e-02, 7.789e-02, -1.100e-01, 2.509e-02, -8.811e-02, 4.608e-03, -1.175e-01, 1.268e-01, 2.513e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(2.955e-02, 1.119e-01, -6.165e-02, 1.284e-02, -4.998e-03, -2.669e-02, -1.319e-02, 2.429e-01, 1.174e-02, -2.711e-02, 9.983e-02, -3.311e-01, 9.682e-02, -6.051e-03, 1.987e-03, -9.950e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(2.896e-01, 1.909e-01, 1.219e-01, -7.798e-02, 2.017e-01, -2.303e-01, 7.445e-02, -3.798e-02, -4.157e-04, -1.062e-01, -9.954e-02, -7.814e-02, 7.403e-02, 1.867e-01, 4.555e-03, 1.875e-01), r7);\n\tr0 = MulAdd(s1_2_1, M4(-3.015e-02, 7.341e-02, 4.014e-02, 7.395e-02, -1.908e-01, 2.007e-02, -9.455e-02, 1.816e-02, -1.309e-01, 1.089e-02, 1.131e-01, 1.335e-01, 3.796e-02, 8.439e-02, 2.217e-02, 5.900e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-7.094e-02, 1.153e-01, -9.634e-03, -5.253e-02, 1.294e-01, -1.902e-01, 1.599e-01, 2.442e-02, 6.442e-04, -1.819e-01, -1.356e-01, 4.791e-02, -1.947e-01, -9.363e-02, 6.118e-02, 1.285e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.766e-01, 3.874e-02, -2.723e-02, 1.011e-02, -1.791e-01, -1.261e-01, 8.469e-02, 3.290e-02, -1.391e-01, -2.725e-01, 1.388e-01, -1.869e-01, -1.264e-01, -4.412e-02, 5.121e-05, -2.681e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(2.370e-01, -1.296e-01, -3.263e-02, 3.178e-02, 2.098e-01, -3.302e-01, 1.140e-01, -7.703e-01, -3.196e-01, 1.668e-02, -1.096e-01, -1.105e-01, 1.590e-01, 2.719e-02, -3.055e-03, -3.344e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(3.381e-02, -4.709e-02, 2.178e-02, -2.228e-02, 1.463e-01, -9.496e-02, -1.272e-01, 5.246e-03, 2.494e-02, 2.929e-02, -4.053e-02, 1.408e-03, -7.020e-02, 8.179e-02, -1.209e-01, -3.663e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(2.119e-01, 6.037e-03, 1.138e-01, 8.807e-02, -3.572e-01, 1.648e-03, -1.423e-01, 1.235e-01, -3.988e-02, 3.561e-02, 1.312e-02, -1.059e-01, 3.778e-02, 2.142e-02, -1.816e-02, -1.881e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(1.304e-01, -1.444e-01, 1.929e-02, 1.459e-01, 6.548e-02, -5.750e-02, -2.762e-02, -1.537e-01, -1.510e-01, -2.726e-02, -3.921e-02, -3.681e-01, -7.905e-02, 3.669e-02, 7.116e-02, -2.037e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-1.832e-01, 2.848e-02, -3.523e-02, 1.600e-01, -2.488e-01, -1.701e-02, 1.348e-02, -3.220e-03, -5.084e-02, -1.005e-01, -1.679e-02, -1.519e-01, -4.199e-02, -2.403e-01, -2.004e-01, -1.439e-01), r7);\n\tr0 = MulAdd(s1_2_2, M4(2.647e-02, 6.237e-02, -1.892e-02, 8.161e-03, -1.130e-01, -2.990e-01, 9.913e-03, 1.708e-01, -4.893e-02, 1.259e-02, 6.774e-03, -8.525e-03, 1.076e-03, 1.043e-01, 7.403e-02, -7.743e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(6.519e-02, 5.146e-02, -2.341e-02, 1.163e-02, 4.286e-03, -9.612e-02, -1.628e-03, 5.648e-02, 5.998e-03, -3.079e-02, 7.773e-02, -4.871e-02, 8.915e-02, -9.274e-03, -2.692e-02, 7.862e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.598e-02, 1.946e-02, 9.109e-02, -1.016e-01, 2.984e-03, -4.840e-02, -7.939e-02, 1.640e-02, -5.389e-02, 6.089e-03, -1.609e-01, 3.195e-01, 1.129e-01, -5.835e-02, -4.025e-02, 1.065e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(9.189e-02, -1.692e-02, -8.074e-03, -5.038e-02, -2.850e-01, 1.982e-02, -3.684e-02, 6.239e-02, -2.785e-01, -3.576e-02, 8.350e-02, 1.136e-02, -5.213e-02, 5.689e-02, -4.559e-02, 1.663e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(1.908e-02, -5.202e-02, -6.938e-02, 7.458e-03, 3.088e-02, 1.036e-01, 1.276e-01, -1.799e-03, 1.663e-02, 7.490e-02, 2.086e-01, -1.813e-02, 3.225e-03, 3.095e-02, 6.390e-02, 2.569e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(-1.405e-01, 1.160e-01, 5.798e-02, -7.201e-02, -3.519e-02, -3.933e-02, 4.972e-02, -3.629e-02, -1.050e-01, -8.243e-02, -1.450e-02, -6.292e-02, -3.523e-02, -7.118e-02, -3.142e-03, 4.842e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-5.747e-02, 9.939e-02, 2.544e-02, -5.565e-03, 4.821e-02, -8.786e-02, 3.699e-02, -1.738e-01, -2.048e-02, -9.565e-02, -1.378e-01, -8.532e-02, -3.687e-02, -3.112e-02, -5.346e-02, 6.572e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(1.299e-01, -6.713e-02, 5.719e-02, -7.230e-02, 1.108e-02, -7.970e-03, -1.534e-02, 6.730e-03, -6.969e-02, 1.966e-02, 4.647e-02, 2.696e-01, -1.679e-02, 1.455e-01, 6.879e-02, 1.733e-01), r7);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-5.395e-02, 7.948e-02, -2.905e-03, 4.248e-02, -2.159e-02, -2.770e-02, -2.896e-02, 2.055e-01, -9.631e-02, 1.409e-01, 4.731e-02, -8.396e-02, -4.866e-03, -8.084e-02, -5.373e-02, -7.447e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-5.471e-02, -1.842e-01, 6.105e-03, -5.381e-02, 8.963e-02, 1.878e-01, 7.604e-03, -1.134e-01, 6.658e-03, 4.419e-02, -8.552e-03, -9.152e-03, 2.963e-02, -4.468e-02, -2.947e-02, 7.610e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(5.365e-02, 2.542e-02, 1.188e-01, 1.507e-01, -8.080e-02, 3.990e-02, 4.603e-02, -7.832e-02, 5.375e-02, 3.951e-02, -1.054e-02, 5.037e-02, -1.034e-02, -6.656e-02, -1.543e-01, -4.577e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(2.906e-02, -4.326e-03, 3.656e-02, 6.550e-02, -7.925e-02, -7.563e-02, 4.351e-03, 2.254e-02, -1.813e-01, -1.448e-01, -3.254e-02, -2.558e-03, 2.397e-01, 2.850e-02, 7.594e-03, 4.029e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.778e-02, -2.932e-01, -5.721e-02, -1.314e-02, 1.577e-05, 2.972e-01, -2.350e-01, 3.800e-03, -5.319e-03, 1.698e-01, 3.454e-03, -1.758e-03, -3.915e-03, 1.117e-01, -7.863e-02, -4.337e-03), r4);\n\tr5 = MulAdd(s0_0_0, M4(-7.777e-02, 1.882e-02, -2.395e-01, -8.877e-02, -4.908e-02, 1.123e-01, -1.719e-02, -9.325e-02, 5.347e-02, 5.422e-02, 1.034e-03, 6.636e-02, 1.148e-02, -3.028e-02, 8.852e-02, -3.598e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(6.654e-02, 1.156e-01, -8.018e-02, -1.308e-01, 1.424e-01, 1.361e-01, 1.467e-02, -1.944e-01, -2.224e-02, -1.699e-01, -9.209e-02, 1.230e-01, 9.840e-02, -2.604e-01, 5.301e-02, 1.164e-01), r6);\n\tr7 = MulAdd(s0_0_0, M4(-6.384e-02, 2.032e-01, 5.392e-02, 5.735e-02, -2.431e-01, -2.608e-01, -1.252e-01, -2.084e-01, -1.679e-03, -3.129e-01, -6.300e-02, -6.796e-02, -6.796e-02, 2.529e-02, 7.988e-02, 1.057e-01), r7);\n\tr0 = MulAdd(s0_0_1, M4(-5.684e-02, 3.413e-02, 8.227e-02, -6.654e-02, -3.042e-01, -1.965e-01, -1.047e-01, 2.321e-02, 5.443e-02, 4.979e-02, 8.541e-02, 1.572e-01, -2.791e-01, -2.457e-01, -7.215e-02, -1.186e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-4.331e-02, 4.554e-02, 4.509e-03, 7.300e-02, 7.125e-02, -5.051e-02, 7.787e-02, -9.362e-02, -1.501e-02, -1.721e-02, 6.317e-03, 5.298e-02, 1.974e-03, -3.954e-02, 2.734e-02, -4.297e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(4.567e-04, 2.958e-01, -8.027e-02, 9.413e-02, -1.086e-01, -2.083e-01, 9.135e-02, -2.483e-01, -8.346e-03, 4.608e-02, 3.627e-02, -1.516e-01, 2.614e-02, -2.741e-01, -3.343e-02, 3.812e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(-1.093e-01, 1.171e-01, 5.948e-02, -6.528e-02, 6.308e-02, 5.110e-02, 1.778e-02, -1.898e-02, -9.532e-02, -1.131e-01, -1.766e-02, 4.519e-02, 1.904e-01, 8.491e-02, 9.347e-02, 7.247e-03), r3);\n\tr4 = MulAdd(s0_0_1, M4(2.537e-02, 2.026e-01, -8.636e-02, -6.763e-03, -1.095e-02, 1.308e-01, -1.582e-01, 1.797e-02, -1.983e-02, 3.940e-01, 4.997e-02, -1.501e-02, 3.161e-02, -4.618e-01, 1.928e-01, 3.430e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(6.801e-02, 1.254e-01, -1.878e-01, 5.660e-02, -5.700e-02, -9.187e-02, 9.214e-02, -6.438e-02, -1.422e-02, 6.690e-02, -9.074e-02, -1.470e-01, 7.239e-02, -7.580e-02, 2.781e-01, 4.473e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-4.144e-02, -1.456e-01, -5.833e-03, -1.087e-01, -3.075e-03, -2.462e-01, -6.854e-02, 9.819e-02, 3.239e-02, 5.876e-02, -6.900e-02, 8.216e-02, 8.314e-02, -2.644e-02, 1.162e-01, 9.911e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(-1.929e-01, -1.357e-01, -1.222e-01, -9.796e-02, 1.051e-01, -5.485e-02, -2.063e-01, 1.561e-02, 1.355e-01, -2.253e-02, -1.944e-03, 2.744e-03, -1.296e-01, 3.105e-02, 1.728e-01, 1.101e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(-1.072e-01, -1.913e-02, 3.608e-02, 4.415e-02, -1.520e-01, 3.442e-03, -2.752e-02, -1.564e-02, -1.211e-01, 1.326e-02, 6.933e-02, 1.198e-01, -1.229e-02, 1.865e-02, -6.253e-02, -2.600e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(4.771e-02, 8.001e-02, -7.614e-02, 5.926e-02, -5.807e-02, -1.259e-02, 2.367e-02, -2.845e-02, -2.977e-02, -6.437e-02, 5.710e-03, -4.616e-03, 2.083e-02, 1.792e-01, 8.724e-03, 6.327e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(5.034e-02, 9.899e-03, 1.132e-02, 7.055e-02, 5.965e-02, -6.863e-02, 4.968e-02, -8.590e-02, -2.898e-02, 5.714e-02, 4.273e-04, -1.328e-01, -3.217e-02, -9.264e-03, 5.462e-02, -1.673e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-6.260e-02, -1.291e-01, -6.913e-02, 2.867e-02, 2.193e-01, 5.771e-02, -1.412e-02, 1.386e-02, -2.219e-02, -5.700e-02, 1.780e-02, -8.311e-03, -4.549e-02, 4.970e-02, 3.617e-02, 5.566e-03), r3);\n\tr4 = MulAdd(s0_0_2, M4(-3.245e-03, -9.153e-03, -2.728e-02, 6.019e-03, -1.709e-02, 1.405e-02, 1.345e-01, -5.971e-03, 1.013e-02, -1.485e-02, -1.205e-01, -2.093e-02, -1.260e-02, 2.308e-03, 6.623e-02, 2.512e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-4.944e-02, 1.744e-03, 1.774e-01, 4.511e-02, 3.499e-02, 5.268e-02, -7.851e-02, -4.077e-02, 1.902e-02, -5.670e-03, -4.742e-02, 7.396e-02, 4.188e-02, -4.656e-02, -8.141e-02, -1.628e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(-9.313e-02, 1.373e-03, -2.530e-02, 3.108e-02, -1.420e-01, 7.557e-02, -7.442e-02, -2.936e-02, 4.992e-02, 4.939e-02, -1.831e-02, 2.466e-03, 6.815e-03, -1.290e-02, 7.556e-02, -4.016e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(1.071e-01, 1.611e-02, 7.627e-02, 7.805e-02, 1.303e-01, -9.134e-02, 2.741e-02, -2.087e-02, 1.111e-01, -4.074e-02, -2.606e-02, -2.787e-02, -1.203e-01, 1.370e-01, 5.283e-02, 2.078e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(1.205e-02, -1.179e-01, -3.529e-02, -7.647e-02, 1.321e-01, 1.635e-01, 6.812e-02, -7.164e-02, -5.790e-02, 4.303e-02, -6.421e-02, 3.129e-02, 1.424e-01, 5.446e-02, 1.873e-01, 2.048e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.326e-01, -5.047e-02, -4.287e-02, -1.118e-01, -2.271e-01, 4.967e-02, 5.097e-04, 6.222e-03, -9.428e-03, -2.706e-02, 3.114e-02, -1.129e-01, 2.506e-02, 2.627e-01, -3.194e-02, -2.495e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-7.870e-02, -1.151e-01, 2.540e-02, 1.271e-01, -3.057e-01, -8.708e-02, 2.350e-01, 2.255e-01, 1.877e-02, 1.266e-02, 1.617e-01, 1.099e-02, 4.108e-01, -1.539e-01, -1.835e-01, -7.526e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.252e-02, 2.303e-02, 1.093e-01, 2.384e-01, 1.073e-01, -1.032e-02, -2.115e-02, -1.954e-02, 6.549e-02, -5.089e-02, -1.171e-02, 3.187e-02, 1.290e-01, 1.856e-01, -9.983e-02, 7.380e-03), r3);\n\tr4 = MulAdd(s0_1_0, M4(5.009e-02, -1.216e-01, -5.696e-03, -1.619e-02, -5.628e-03, -1.485e+00, 1.599e-01, 2.841e-02, 3.723e-02, -2.388e-01, -2.668e-01, -1.011e-02, -1.205e-01, -1.190e-01, 9.975e-02, -9.448e-03), r4);\n\tr5 = MulAdd(s0_1_0, M4(-3.233e-02, 1.714e-01, 6.751e-06, 5.667e-02, -1.017e-01, 1.135e-01, 2.456e-02, -7.945e-02, 5.231e-02, -4.745e-02, -4.372e-02, -2.265e-01, -1.179e-01, 3.366e-01, 7.010e-02, 3.656e-01), r5);\n\tr6 = MulAdd(s0_1_0, M4(3.096e-01, -6.315e-03, -4.961e-02, 1.808e-01, -1.567e-01, -2.333e-02, 4.950e-02, 1.247e-01, 8.357e-02, -3.835e-01, -9.649e-02, 1.077e-02, -2.648e-01, -6.126e-01, -3.870e-02, 9.481e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(-1.793e-01, 2.467e-01, 1.729e-01, 5.561e-02, -4.215e-01, -2.158e-01, -4.491e-01, -3.513e-01, 2.813e-01, 2.008e-02, 2.263e-02, -9.934e-02, 4.000e-02, -6.061e-01, 9.643e-02, -1.973e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(-6.655e-02, -1.189e-01, 1.920e-02, -1.891e-02, -1.795e-01, -1.496e-01, 1.418e-01, 2.036e-01, -2.921e-01, -9.605e-02, 1.179e-01, 4.690e-02, 1.042e-01, -1.585e-01, 8.767e-02, 4.915e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.223e-01, 4.186e-02, 9.008e-02, 1.158e-02, -5.131e-02, -3.734e-01, 1.264e-01, 1.234e-01, 3.121e-02, -2.123e-01, -4.892e-03, -5.375e-02, 3.980e-01, -8.811e-01, 8.517e-02, 5.899e-03), r1);\n\tr2 = MulAdd(s0_1_1, M4(-7.292e-02, -4.034e-01, -1.207e-01, -5.231e-01, -5.895e-02, -2.699e-02, 3.654e-01, -1.798e-01, 1.520e-01, -4.415e-01, 1.895e-01, -2.541e-01, -6.424e-01, -1.026e+00, -1.031e+00, 4.497e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.830e-01, -1.753e-02, -4.635e-02, -1.912e-01, -2.577e-02, 4.217e-01, 2.996e-02, -3.424e-02, 2.490e-02, -1.413e-01, 1.344e-02, 1.598e-02, -3.866e-01, -8.427e-03, 1.471e-02, -4.249e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(3.023e-02, -2.533e-02, -4.011e-02, 6.180e-02, 4.796e-02, 2.506e-01, -1.469e-01, -3.332e-02, 4.162e-02, -3.414e-02, 8.421e-02, 2.825e-02, 3.842e-02, -7.908e-01, -5.774e-03, -1.422e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(2.725e-02, -1.942e-01, 1.054e-01, -1.814e-01, -2.368e-01, -1.722e-01, -9.167e-02, 8.416e-02, -2.313e-02, 1.002e-02, 9.184e-02, -2.252e-01, -2.117e-01, -3.248e-02, -2.497e-01, 2.156e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(5.681e-02, -6.504e-02, 2.529e-01, -1.504e-01, -3.717e-03, 1.198e-01, -1.225e-01, 2.427e-01, 1.489e-02, 4.992e-02, 5.323e-02, 3.968e-02, 5.653e-02, 2.271e-01, -9.705e-02, -5.469e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(3.138e-03, -1.558e-01, -2.313e-01, -2.192e-01, 5.486e-01, 1.941e-01, 4.495e-02, 7.241e-02, -2.199e-02, 1.706e-01, 1.082e-01, -1.763e-01, 3.315e-02, 1.630e-01, -7.178e-02, -1.383e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-5.606e-02, 1.481e-02, 4.569e-02, 1.459e-01, -1.441e-01, 3.487e-02, -1.943e-02, 8.246e-02, -1.017e-01, 1.135e-02, 1.660e-01, 1.419e-01, 9.418e-02, 2.310e-02, 4.623e-04, -8.389e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.388e-01, -4.315e-02, 1.710e-01, -6.915e-02, -1.299e-02, -1.483e-01, 3.016e-02, 8.009e-02, -1.872e-02, -8.467e-02, 6.004e-02, -3.576e-02, 4.776e-03, 4.319e-02, -2.912e-02, 8.905e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.733e-01, -5.388e-02, 2.985e-02, 2.042e-01, -5.028e-02, -2.984e-02, -4.170e-02, -1.115e-01, -9.482e-03, -3.527e-02, 1.882e-01, 2.414e-02, -4.704e-02, -2.084e-01, -1.903e-01, -1.629e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-2.544e-02, 4.366e-02, 5.828e-03, -2.670e-01, -6.850e-01, 2.541e-01, -4.575e-02, -7.316e-02, 1.006e-01, -3.901e-01, 8.677e-03, -1.123e-02, -7.070e-02, -6.692e-02, -6.580e-02, 7.625e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(-3.157e-02, -2.429e-01, 5.438e-02, -1.740e-02, -2.216e-02, 3.218e-02, 7.365e-02, -9.382e-03, -5.340e-02, 2.833e-01, 1.956e-01, -2.118e-02, -3.380e-02, -8.179e-02, 1.216e-01, -1.759e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(6.528e-04, -2.049e-02, 8.743e-02, -1.990e-02, -4.206e-02, 4.974e-02, -1.063e-01, -7.037e-02, 7.849e-02, 6.165e-02, 7.702e-02, 2.072e-02, -1.290e-01, -2.378e-01, -1.757e-01, -2.544e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(1.243e-01, 8.746e-02, 1.344e-01, 1.618e-01, 4.749e-02, 6.662e-02, -9.373e-02, 1.295e-02, 4.635e-02, 5.804e-03, -4.923e-02, 8.305e-02, 7.875e-02, -8.901e-02, 8.614e-03, -9.132e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-7.490e-02, 9.774e-02, 3.252e-02, 3.478e-02, 1.073e-01, -1.099e-01, -2.303e-02, -9.876e-02, -5.479e-02, -4.211e-02, 7.220e-03, -2.537e-01, 5.445e-03, 1.753e-01, 3.647e-02, 7.840e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(5.907e-02, -9.476e-03, -5.243e-02, 4.569e-02, -5.900e-04, -1.957e-01, 2.520e-03, -1.950e-02, 7.295e-02, 5.389e-02, 1.760e-02, 2.066e-01, -1.152e-01, 8.715e-02, 1.363e-01, -8.142e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(9.122e-04, 2.952e-02, -1.164e-02, -4.210e-03, 6.871e-03, -2.476e-02, 3.607e-02, 1.284e-01, 1.413e-01, 1.621e-01, -1.001e-02, 1.581e-01, -5.986e-02, 1.508e-01, -1.727e-02, -2.182e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(8.960e-02, -1.409e-02, -7.382e-02, -9.254e-02, 3.615e-02, -3.536e-02, 1.121e-01, -1.050e-02, 1.328e-01, -4.584e-02, 1.425e-01, -7.488e-03, 1.129e-02, -1.597e-01, 2.951e-01, -1.170e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(1.043e-01, -3.297e-02, 1.648e-02, 5.985e-02, -1.740e-01, 1.472e-01, 6.183e-02, 6.388e-02, -2.450e-02, -2.097e-01, -1.294e-02, -1.690e-02, 4.305e-02, 1.932e-01, -3.512e-02, 4.060e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(9.054e-02, 8.900e-02, 5.237e-02, -1.200e-02, 2.379e-02, -3.232e-01, 1.814e-01, -7.762e-03, 5.791e-02, -4.937e-02, -2.123e-01, 6.554e-03, -1.968e-02, -2.846e-01, -2.974e-02, 4.724e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(3.313e-02, -7.694e-02, -7.815e-02, 5.862e-03, -2.110e-01, -1.182e-01, 7.265e-02, -1.672e-01, 2.316e-01, -1.411e-02, -5.688e-02, -2.402e-02, -4.092e-01, 1.249e-01, 9.597e-02, 1.272e-01), r5);\n\tr6 = MulAdd(s0_2_0, M4(-3.139e-02, 4.115e-02, -2.248e-02, 1.091e-01, 4.919e-02, 1.322e-02, 1.536e-03, 1.035e-02, 3.881e-02, -1.212e-01, 4.943e-03, -5.828e-02, -6.605e-06, -3.701e-01, 7.048e-02, 7.010e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-1.039e-01, -9.969e-02, -6.031e-02, -9.200e-02, -7.365e-02, -3.153e-01, -1.198e-01, -1.771e-01, -8.985e-02, -1.392e-01, -1.601e-01, -1.834e-01, 3.151e-01, -5.137e-01, 8.332e-02, 1.659e-01), r7);\n\tr0 = MulAdd(s0_2_1, M4(-5.552e-02, 6.244e-02, -3.884e-02, -1.001e-01, 5.490e-02, 2.469e-03, 1.208e-02, 7.150e-02, -1.215e-01, -9.563e-03, 3.339e-02, 2.252e-01, 3.205e-01, -1.008e-01, -7.481e-03, 6.190e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.468e-01, 7.410e-02, 5.120e-02, 1.753e-01, -2.938e-03, -7.593e-01, 9.612e-02, 6.018e-02, 6.163e-02, 2.861e-01, 6.748e-02, -8.291e-02, 7.499e-02, -1.071e+00, 2.269e-01, -2.056e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.455e-02, 1.050e-01, 1.184e-01, 1.422e-01, 1.220e-01, -1.288e-01, 1.226e-01, -4.288e-02, -6.906e-02, -3.199e-02, 1.350e-01, 2.952e-01, -3.916e-01, -4.134e-01, -1.747e-01, -2.800e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(-2.282e-01, 7.700e-02, -1.635e-02, 2.082e-01, 1.450e-01, 1.340e-01, 7.879e-02, -5.233e-02, 3.008e-01, -4.140e-01, 1.233e-01, 8.523e-02, 1.262e-01, -2.485e-01, 2.228e-01, -2.523e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(3.858e-01, -7.506e-03, 1.315e-01, 2.721e-02, 1.194e-01, 6.829e-02, 2.496e-02, 1.669e-02, 1.530e-01, -8.939e-02, -2.256e-01, -2.508e-03, 1.474e-01, 1.225e-01, -1.343e-01, 6.391e-03), r4);\n\tr5 = MulAdd(s0_2_1, M4(2.076e-01, -9.337e-02, 9.690e-02, 1.238e-01, 6.651e-02, -2.558e-01, -3.818e-03, -2.731e-03, 3.789e-01, 3.267e-02, 3.152e-02, -9.732e-02, -5.449e-01, -2.783e-01, 1.055e-01, 7.779e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-6.900e-02, -2.843e-01, -1.450e-01, 5.571e-02, 7.182e-02, 5.334e-02, -9.299e-03, -1.030e-01, 6.944e-02, -7.278e-02, 1.014e-01, -2.314e-01, -3.744e-02, 2.812e-01, 1.376e-02, -2.389e-01), r6);\n\tr7 = MulAdd(s0_2_1, M4(1.974e-01, -1.541e-01, -1.726e-01, -1.300e-01, -3.467e-02, 1.787e-02, 9.448e-03, 1.782e-01, -3.509e-01, -2.373e-01, -1.992e-01, -4.480e-01, -2.183e-01, 6.191e-01, 3.754e-02, 1.390e-01), r7);\n\tr0 = MulAdd(s0_2_2, M4(-9.790e-03, 7.315e-02, -1.120e-02, -7.578e-02, -8.618e-02, -6.174e-02, 2.658e-02, 6.965e-02, -2.339e-01, 2.528e-02, 5.923e-02, 4.559e-02, 2.660e-02, -5.439e-02, -2.268e-03, -6.005e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(9.756e-03, -7.177e-02, 5.127e-02, -4.349e-02, -1.465e-02, -8.169e-02, 1.352e-01, 1.083e-01, -2.355e-02, -1.118e-01, 4.006e-02, 9.903e-03, 6.833e-02, -1.511e-01, 9.232e-02, -5.363e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.861e-02, 9.270e-02, -1.214e-01, -1.053e-01, -4.478e-03, -5.719e-02, -5.126e-02, 1.002e-01, 6.840e-02, -5.284e-02, 9.396e-02, 6.155e-01, -1.968e-02, -9.290e-02, -1.409e-02, 1.887e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(-1.675e-01, 1.146e-01, 8.296e-02, -1.947e-02, -1.961e-01, 4.850e-03, 7.217e-02, 1.466e-02, 3.381e-01, -3.530e-01, -5.426e-02, -6.778e-03, -6.331e-01, -3.001e-02, 5.173e-02, 3.739e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(-7.903e-02, -7.369e-03, 2.703e-03, 1.155e-03, -5.754e-03, 9.723e-02, 1.338e-02, -2.901e-02, 1.824e-02, -1.858e-01, 5.126e-02, -1.225e-02, -4.269e-02, 1.376e-01, 2.110e-01, 8.000e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(-2.863e-02, 1.137e-01, 1.526e-01, 8.486e-02, -2.854e-02, -1.737e-01, -1.935e-02, 3.012e-03, 1.801e-01, -2.258e-01, -5.220e-03, 1.352e-01, -2.029e-01, -7.906e-02, -9.003e-02, -8.618e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-1.818e-02, 1.678e-02, -3.548e-02, -1.084e-01, 4.264e-03, 4.885e-02, -7.461e-02, 1.343e-01, 2.050e-02, -4.281e-02, -1.337e-01, 2.203e-02, 1.287e-02, 1.294e-01, 5.759e-02, 5.411e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-3.381e-03, -7.307e-02, -3.667e-03, 2.844e-02, 4.714e-02, -7.386e-03, -4.058e-02, -3.575e-02, -2.585e-01, 1.433e-02, 7.631e-02, -2.697e-02, -8.905e-02, 1.011e-01, 1.306e-01, -3.679e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-1.149e-01, 8.634e-02, 3.467e-02, 6.515e-02, -9.990e-02, -1.195e-01, 3.094e-02, -1.679e-02, 3.013e-02, 3.007e-02, -9.963e-02, -5.033e-02, 5.574e-02, -7.103e-02, -6.595e-02, 1.271e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(-7.855e-02, -9.795e-02, 1.558e-02, -6.997e-02, -1.850e-02, -1.202e-01, -8.609e-03, 9.412e-04, 1.536e-01, -1.168e-02, 4.416e-02, 5.670e-03, 7.103e-02, 1.647e-01, -1.366e-02, 8.874e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-9.744e-02, 6.963e-02, 1.074e-01, 2.547e-01, 5.729e-02, -1.175e-03, 2.016e-02, 3.620e-03, -2.786e-01, -4.158e-02, 1.548e-01, -1.517e-02, 2.741e-02, 3.714e-02, -3.352e-01, -1.222e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(1.409e-01, 1.819e-02, -8.930e-03, -1.743e-02, -2.235e-01, 1.256e-01, -7.523e-02, -2.042e-02, 2.787e-02, 6.307e-02, 8.927e-02, 1.875e-02, 2.334e-01, 4.446e-02, -1.761e-02, 2.804e-03), r3);\n\tr4 = MulAdd(s1_0_0, M4(3.721e-03, 4.237e-01, 5.090e-02, 1.078e-03, -2.228e-02, -8.917e-02, -3.312e-02, 9.851e-03, 3.665e-03, -8.590e-01, 6.460e-02, -8.456e-03, -9.598e-03, 7.031e-01, 8.316e-02, 6.295e-03), r4);\n\tr5 = MulAdd(s1_0_0, M4(1.683e-01, -7.823e-02, 6.021e-02, 3.545e-02, 6.520e-02, -2.294e-02, 7.522e-02, 4.688e-02, -4.718e-02, 1.710e-02, 2.890e-01, -1.248e-01, 5.093e-02, -3.838e-02, 1.389e-01, 4.117e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-7.613e-03, 1.135e-01, -8.374e-02, 1.282e-01, -2.134e-02, 6.522e-02, -6.122e-02, 6.259e-03, 5.283e-02, 1.057e-01, 3.597e-02, -2.569e-01, -2.767e-02, -3.231e-01, -2.176e-02, 1.576e-01), r6);\n\tr7 = MulAdd(s1_0_0, M4(9.071e-02, 8.406e-02, 6.271e-02, 9.382e-02, 1.598e-01, -1.440e-01, 8.570e-02, 1.132e-01, 5.709e-02, -3.424e-01, -1.769e-02, -1.731e-01, 2.029e-01, -1.400e-01, 1.326e-02, 5.845e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-4.151e-01, 2.436e-01, -1.518e-02, -1.135e-01, 1.637e-01, 6.697e-02, -1.929e-02, 8.470e-02, -9.589e-02, -1.763e-01, -1.842e-01, -1.202e-01, 1.475e-01, -1.733e-01, -3.508e-02, 1.742e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-2.115e-02, -8.123e-01, 2.243e-02, -4.026e-02, 5.349e-03, 1.374e-01, 4.488e-02, -1.056e-01, -5.692e-04, 2.348e-01, 2.346e-02, 7.763e-03, 1.235e-01, 4.496e-03, -4.438e-02, 1.729e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.002e-01, -4.331e-02, -1.981e-01, -4.989e-01, 2.061e-02, -6.921e-02, 2.236e-02, -8.157e-02, 6.672e-02, -3.326e-02, 1.939e-01, -1.271e+00, -1.160e-02, -6.488e-02, 1.650e-01, -2.363e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(-5.903e-01, -2.491e-01, 3.289e-02, 6.564e-02, -2.165e-01, 3.830e-03, 3.920e-02, 5.846e-03, 3.085e-01, 5.737e-02, 6.274e-02, -2.425e-02, 1.484e-01, 8.892e-02, 3.181e-02, 6.649e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-1.981e-02, -2.682e-01, -4.475e-02, -1.432e-02, 3.916e-02, -6.438e-01, -4.881e-02, -1.531e-02, 1.215e-02, 9.677e-02, 1.142e-01, 4.311e-02, -1.835e-02, -7.346e-02, 1.362e-01, 1.054e-03), r4);\n\tr5 = MulAdd(s1_0_1, M4(1.538e-01, -3.291e-01, 2.540e-01, 4.266e-02, -1.005e-01, 7.559e-02, 6.285e-03, 4.505e-02, -1.023e-01, 2.086e-01, 1.162e-01, -8.617e-02, -3.090e-02, -2.513e-02, 1.630e-01, 8.025e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-1.106e-02, -1.635e-01, 2.193e-02, -1.652e-01, 2.875e-02, -1.784e-02, 7.838e-02, 5.312e-02, -5.512e-02, -4.462e-02, 8.071e-02, -1.616e-01, 4.668e-02, -5.311e-02, 5.378e-02, 1.012e-01), r6);\n\tr7 = MulAdd(s1_0_1, M4(-8.777e-02, -2.113e-01, -5.546e-02, 1.201e-01, -3.021e-01, 2.593e-02, 4.499e-02, -1.822e-01, -3.603e-02, -4.413e-02, 1.521e-01, 3.499e-02, -1.578e-01, -2.162e-02, -4.497e-02, 1.013e-01), r7);\n\tr0 = MulAdd(s1_0_2, M4(-3.939e-02, 1.627e-01, -5.951e-02, -9.593e-02, -5.712e-02, -5.917e-02, -1.763e-02, -6.766e-02, -6.219e-02, 2.894e-02, -1.614e-01, -3.259e-02, -1.094e-02, -8.661e-02, -1.006e-01, 1.727e-01), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.928e-02, 2.818e-01, -9.174e-03, -2.004e-02, -2.915e-02, -1.358e-01, -4.698e-02, -1.235e-01, 2.883e-02, 3.366e-02, 6.183e-02, 2.033e-02, 2.195e-01, -2.214e-01, 8.747e-02, 2.705e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.136e-01, 6.932e-02, 3.214e-02, 1.403e-01, -1.449e-03, -7.625e-02, -9.935e-02, 6.347e-02, 5.133e-02, 1.247e-01, -2.896e-02, 2.276e-01, -1.421e-01, -3.533e-02, 1.878e-01, 2.372e-01), r2);\n\tr3 = MulAdd(s1_0_2, M4(4.069e-01, -2.089e-01, -1.396e-02, -2.602e-02, 3.608e-01, -9.272e-02, -3.157e-02, 4.464e-02, 9.660e-02, 1.053e-01, 1.240e-02, 1.774e-02, 1.102e-01, -1.111e-01, 5.806e-02, 2.524e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-2.229e-02, -7.518e-03, -1.291e-01, 1.019e-02, 1.811e-02, 3.688e-01, 5.549e-02, 8.802e-03, -6.081e-03, -2.130e-01, -1.157e-02, 1.569e-02, -4.771e-02, 4.361e-02, -2.355e-02, 3.943e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(8.409e-02, 1.797e-02, 1.203e-01, -2.259e-02, -6.007e-02, -1.160e-01, -2.495e-02, -6.897e-02, -7.771e-02, -4.594e-02, -1.139e-01, -6.803e-03, -4.592e-02, -1.382e-01, -1.075e-01, 1.400e-01), r5);\n\tr6 = MulAdd(s1_0_2, M4(-2.289e-02, -9.203e-03, -2.183e-02, 1.619e-01, 1.447e-01, -4.072e-02, 1.050e-02, -9.125e-02, -8.813e-02, -5.026e-02, -6.924e-02, 1.994e-02, 6.718e-03, 2.483e-01, 2.295e-02, -6.200e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(1.961e-01, 3.451e-02, -6.590e-02, 2.579e-01, 8.156e-02, 1.430e-01, -5.294e-02, 3.503e-02, 1.051e-01, -3.226e-02, -6.466e-02, 7.344e-02, 1.508e-01, 7.881e-02, -1.113e-02, -5.432e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-6.192e-02, -1.629e-02, -1.384e-01, -4.955e-02, 9.476e-02, 4.912e-02, 2.381e-02, 2.687e-01, -1.616e-02, 1.110e-02, 1.117e-01, 1.241e-01, 2.049e-02, -3.500e-02, 1.758e-02, 5.640e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(2.050e-01, -1.308e-01, 1.052e-01, 4.804e-02, -1.230e-01, -2.026e-01, 4.579e-02, -3.735e-02, 4.967e-02, 1.463e-01, -2.303e-02, -4.553e-03, -1.401e-02, -3.045e-02, -3.020e-02, -1.247e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(2.598e-02, -3.855e-02, 1.373e-01, 2.580e-01, -1.912e-01, 6.789e-02, 2.424e-01, -4.757e-01, -3.893e-01, 2.231e-01, 2.606e-02, -1.349e-01, -7.901e-02, 2.011e-02, -2.720e-01, -3.330e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(1.184e-01, -2.352e-01, 6.543e-02, -3.202e-02, -1.377e-01, 8.738e-02, 9.144e-02, -5.517e-02, 3.223e-01, -2.683e-02, -3.644e-02, 3.118e-02, -2.747e-01, 2.382e-02, -2.788e-03, -1.706e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(2.761e-02, -1.857e-01, -1.018e-01, 2.217e-02, 2.975e-02, 4.288e-02, -1.833e-01, -2.386e-02, -4.734e-02, -4.026e-01, 3.226e-01, -7.439e-03, 2.670e-02, 5.518e-02, -4.568e-01, 2.541e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(2.397e-01, -1.295e-01, 1.180e-01, 3.209e-02, 7.470e-02, -5.013e-02, -1.051e+00, -1.128e-01, 1.042e-01, -3.962e-02, 3.482e-02, 1.623e-02, 3.208e-02, -9.797e-02, 9.725e-03, 1.697e-01), r5);\n\tr6 = MulAdd(s1_1_0, M4(5.886e-02, -3.919e-03, -7.368e-02, -5.227e-02, -2.030e-01, -6.761e-02, 6.260e-02, -4.322e-02, -9.938e-02, 8.982e-02, 5.563e-02, -5.685e-02, -1.841e-01, -9.381e-02, 4.940e-02, 4.637e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(6.856e-01, 2.931e-01, 6.603e-02, 6.235e-02, 5.146e-01, -9.837e-02, -7.680e-03, -3.225e-01, -4.566e-01, -2.768e-01, -2.720e-01, -4.249e-01, 3.817e-01, -1.572e-01, -1.947e-01, -3.974e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(-3.601e-01, 1.381e-01, 7.498e-02, -2.042e-01, 8.927e-02, -2.195e-01, -1.065e-01, -4.771e-02, -1.107e-02, -1.173e-01, 4.585e-03, 2.164e-01, 3.091e-01, -2.819e-02, 4.555e-02, -1.478e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(3.461e-02, 3.903e-02, 6.314e-02, 8.189e-02, -1.079e-01, -2.889e-02, -5.758e-02, 2.904e-01, -4.154e-02, 9.163e-02, -7.976e-02, -3.669e-02, 7.116e-02, -4.038e-01, 1.378e-01, 6.377e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-5.555e-02, 1.742e-02, 6.809e-04, -5.193e-02, 5.736e-02, -2.297e-01, -4.155e-01, -3.225e-01, 1.838e-01, 2.039e-01, 8.376e-02, 3.019e-02, 5.158e-01, 1.363e-01, 6.584e-01, -5.051e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(7.979e-02, -1.456e-02, 2.258e-02, -1.329e-01, -1.176e-01, -1.858e-01, 2.799e-02, 1.868e-01, 2.382e-01, 2.176e-01, -6.663e-02, 6.497e-02, 9.995e-02, 3.407e-02, 4.729e-02, 3.187e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(-2.779e-02, 2.528e-02, 1.944e-01, -5.187e-03, -7.351e-02, 2.057e-03, 1.488e-02, 2.240e-02, 9.344e-02, 2.234e-02, 3.186e-01, 1.175e-02, -1.293e-01, 4.631e-02, 1.583e-01, 1.889e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-6.939e-02, -1.704e-01, -1.202e-01, 1.195e-01, 1.853e-01, -5.502e-02, -2.131e-01, 3.602e-02, 2.013e-02, -7.270e-02, 1.491e-01, -1.023e-01, -2.042e-01, 1.278e-01, -1.711e-01, 1.890e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(1.768e-02, 4.750e-02, 2.377e-02, 1.344e-01, -2.198e-01, 2.529e-01, -7.675e-02, -7.004e-02, 8.269e-02, -3.505e-02, 3.696e-02, 4.514e-01, 1.920e-01, 1.623e-01, -3.298e-02, -2.368e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-2.543e-01, -6.563e-01, 4.008e-02, 1.472e-01, -9.824e-01, 2.631e-02, -1.245e-01, -1.302e-01, -2.063e-01, 2.766e-01, 1.496e-01, 1.375e-01, -3.638e-01, 1.861e-01, 3.622e-01, -5.169e-03), r7);\n\tr0 = MulAdd(s1_1_2, M4(-2.735e-01, 5.583e-02, 2.478e-03, 4.426e-02, -1.792e-01, -1.661e-01, -1.163e-01, -4.759e-01, -4.793e-02, 6.381e-02, 1.334e-03, -1.257e-02, 1.464e-01, -6.279e-02, 1.607e-01, 6.042e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(3.399e-02, -1.066e-01, -8.439e-02, 7.564e-02, -3.330e-02, 8.652e-01, -4.617e-02, -1.973e-01, 3.976e-02, 1.120e-01, -6.140e-03, 4.430e-02, -2.708e-01, 3.697e-02, 8.259e-02, 3.180e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(-3.125e-02, 1.017e-02, 3.612e-02, -1.103e-01, 3.446e-01, -5.483e-03, 5.740e-02, 2.265e-02, 3.639e-02, -2.389e-02, 9.604e-02, 4.445e-02, -1.948e-02, 2.229e-01, 5.403e-01, -5.556e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.776e-01, 1.049e-01, -1.032e-01, 5.271e-02, -8.538e-03, 1.486e-01, -4.470e-02, -3.023e-02, -1.841e-01, -4.275e-02, 3.601e-02, -3.458e-02, 7.062e-02, -1.022e-01, -8.232e-03, 4.301e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-6.043e-03, -1.103e-02, -2.072e-01, -1.354e-02, 4.897e-02, -2.513e-02, 1.227e-01, -4.593e-02, 5.021e-02, 4.413e-02, -5.814e-02, 9.492e-03, 2.092e-02, 1.418e-01, -8.498e-03, -8.054e-03), r4);\n\tr5 = MulAdd(s1_1_2, M4(2.675e-03, -4.819e-03, -8.763e-02, -5.144e-03, 4.445e-01, 7.072e-02, -2.252e-01, -2.024e-01, -5.317e-02, 4.770e-02, -8.325e-02, 7.916e-02, 7.802e-02, 9.325e-02, -1.215e-01, 1.094e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(-1.484e-01, -2.337e-01, -7.135e-02, -7.276e-02, 3.756e-02, -3.351e-01, -1.601e-02, 2.919e-01, -1.443e-02, 2.227e-02, 7.547e-02, -1.304e-01, 1.971e-02, -2.038e-01, -7.255e-02, 1.921e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(4.569e-01, 1.225e-01, -1.337e-01, -1.057e-02, 7.233e-01, 1.709e-01, 1.784e-01, 2.149e-01, 9.191e-02, -1.322e-01, 5.268e-02, 5.777e-02, -3.707e-01, 6.608e-03, -1.115e-01, 1.897e-01), r7);\n\tr0 = MulAdd(s1_2_0, M4(-7.226e-02, 1.742e-02, 8.299e-03, -1.687e-02, -2.091e-01, 8.613e-02, 2.345e-02, -6.263e-02, 1.722e-01, -3.078e-03, 2.685e-02, 3.036e-03, -5.776e-02, 1.862e-02, 4.300e-02, 2.898e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(5.629e-02, 1.431e-01, 6.249e-02, 4.455e-04, -1.332e-01, 7.063e-01, -1.475e-01, -1.442e-02, -2.341e-02, -7.500e-03, -6.082e-03, -1.727e-02, -4.880e-02, 2.080e-02, -4.948e-02, 3.055e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-3.834e-02, -6.725e-03, 3.179e-02, 1.968e-01, 4.604e-01, -5.118e-02, -1.449e-02, 1.037e+00, -5.282e-02, 3.876e-02, -1.632e-02, 8.938e-02, -6.960e-02, -4.667e-02, 4.709e-02, -3.445e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(1.913e-01, -7.303e-02, 6.042e-02, 1.960e-02, -1.118e-01, -1.719e-01, -1.114e-01, -3.938e-01, -3.634e-02, 1.789e-01, 4.773e-02, -5.164e-02, -1.206e-01, -8.788e-02, -6.507e-02, 2.802e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(3.807e-02, 5.272e-02, -1.812e-01, -3.319e-03, -3.249e-02, 1.704e-02, -8.671e-02, -3.006e-02, 1.131e-01, 9.036e-02, -3.176e-03, 2.279e-02, 3.616e-02, -1.997e-01, -1.128e-01, 1.484e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-1.374e-02, -4.756e-02, 4.975e-02, -4.840e-03, 7.226e-01, 3.073e-01, 5.894e-01, 7.828e-02, -5.690e-02, 8.570e-02, -8.350e-02, -1.348e-02, -9.003e-02, -2.171e-02, 2.677e-02, 5.865e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(1.566e-02, 5.233e-04, -6.834e-03, 1.879e-01, -3.375e-01, 2.495e-01, -4.894e-02, 1.872e-01, 3.199e-02, 5.249e-02, 1.165e-01, -2.804e-02, -6.172e-02, -2.658e-02, 4.715e-02, -1.156e-01), r6);\n\tr7 = MulAdd(s1_2_0, M4(-6.009e-02, -1.928e-02, -1.615e-02, -2.246e-02, 9.827e-01, -6.459e-02, 2.509e-01, 7.037e-02, 3.268e-01, 6.868e-02, 1.609e-01, 3.603e-01, 2.193e-02, 7.153e-02, 2.445e-03, -8.290e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-7.604e-02, 4.166e-02, 2.001e-02, 6.824e-02, -2.783e-01, -1.877e-01, -1.123e-01, 2.032e-01, -4.257e-02, -5.551e-03, -7.078e-03, -9.340e-02, 7.663e-02, -1.094e-01, -5.778e-02, 1.012e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.504e-02, -2.226e-01, 5.484e-02, 1.383e-01, 3.872e-01, 5.269e-02, -2.246e-01, -2.756e-01, -6.086e-02, -1.707e-02, 2.874e-02, 5.359e-02, -1.070e-01, 1.211e-01, 1.924e-02, -8.138e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-3.647e-04, 1.052e-02, 1.831e-01, -1.740e-01, -2.343e+00, -1.768e-01, -1.296e-01, 6.710e-01, -4.767e-03, 1.950e-02, -3.940e-02, -1.626e-01, -7.361e-02, -6.974e-02, 2.649e-02, 1.396e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(4.042e-01, -1.200e-01, 9.307e-03, 1.298e-02, 6.757e-01, 2.678e-01, -1.242e-01, -3.320e-01, -2.567e-01, -4.017e-02, 6.320e-03, -4.792e-03, -2.115e-02, -1.729e-01, 1.193e-02, 4.842e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(8.623e-03, -1.870e-02, -1.026e-02, -2.275e-02, 1.389e-01, 1.267e+00, -1.050e-01, 1.566e-02, 5.501e-02, -6.390e-03, 7.132e-03, -9.559e-03, 5.971e-02, -2.358e-01, -1.732e-01, 7.888e-03), r4);\n\tr5 = MulAdd(s1_2_1, M4(5.392e-02, 4.758e-02, 1.182e-01, 3.671e-02, -1.871e-01, -2.067e-02, -3.810e-02, 2.640e-01, 8.517e-02, 5.143e-02, 1.912e-02, -3.805e-02, -1.380e-01, -1.670e-02, 3.729e-02, 4.230e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(3.723e-02, -7.908e-02, -9.177e-02, -1.324e-01, 3.325e-01, 2.782e-01, -5.942e-02, 7.481e-01, 7.591e-02, -4.386e-04, -1.868e-02, 7.089e-02, -1.262e-01, 3.708e-02, -1.989e-02, -1.652e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(-1.094e-01, 7.731e-03, -2.022e-02, 1.302e-01, 3.926e-01, 4.449e-01, -2.650e-01, -2.637e-01, 3.187e-02, 5.321e-02, -4.081e-02, 1.808e-01, -2.057e-01, 8.591e-02, -1.392e-01, 1.227e-01), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.908e-01, -5.743e-02, 2.614e-02, -7.952e-02, 1.637e-01, 2.632e-01, -2.402e-01, 5.338e-01, -1.918e-02, -8.825e-03, -4.624e-03, -4.088e-03, -8.671e-02, 3.104e-02, -8.044e-02, -2.403e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(2.384e-02, 7.738e-02, 1.284e-02, 8.062e-02, 1.753e-01, -1.114e-01, -2.185e-01, 3.376e-01, -1.791e-02, 4.497e-02, 2.631e-02, 1.364e-02, -1.068e-02, 5.501e-02, -4.748e-02, -1.460e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(-5.920e-02, 1.379e-02, 1.717e-01, -6.898e-03, -1.660e-01, -2.572e-02, -3.222e-01, 1.246e-01, -6.580e-03, 3.337e-02, -1.071e-03, -3.411e-02, -1.953e-02, 5.173e-02, -1.611e-01, 1.093e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(-4.404e-01, -6.437e-02, 2.280e-02, -5.159e-02, -8.409e-03, -6.447e-01, -2.261e-01, -6.413e-01, -4.388e-01, -4.467e-04, 4.472e-02, 4.704e-02, -4.338e-01, -2.195e-01, -6.524e-02, 9.529e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-2.118e-02, 1.717e-01, 1.499e-02, -8.749e-04, 3.923e-02, 4.534e-01, 4.271e-01, 3.116e-03, -1.181e-02, 3.454e-02, 6.187e-02, 1.458e-02, 1.479e-01, 9.063e-02, -7.496e-02, 2.374e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(3.026e-04, -5.117e-02, 1.316e-01, -4.504e-02, 7.977e-01, -3.331e-01, 4.091e-01, 2.501e-02, -9.545e-02, 2.648e-02, -4.153e-02, -7.597e-02, -7.657e-02, 1.403e-01, 3.851e-02, 1.493e-01), r5);\n\tr6 = MulAdd(s1_2_2, M4(-7.490e-02, 1.762e-02, 1.445e-02, -1.087e-02, -7.768e-02, -2.117e-01, -1.149e-01, 8.064e-01, -8.156e-02, 1.603e-02, 5.865e-02, 6.675e-02, -6.342e-02, 1.938e-01, 6.224e-03, -1.827e-01), r6);\n\tr7 = MulAdd(s1_2_2, M4(3.191e-01, 6.316e-02, -2.829e-02, 5.441e-02, -3.615e-02, 5.002e-01, -4.716e-01, 4.381e-01, 6.712e-02, 7.364e-02, -4.692e-02, -4.151e-02, -1.446e-01, -5.214e-02, 4.173e-02, -6.712e-02), r7);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(6.692e-02, -8.176e-02, -5.014e-02, -9.176e-02, -6.440e-02, -4.207e-02, 1.379e-02, 1.786e-01, -3.045e-02, -1.080e-01, 1.057e-02, 9.798e-02, -9.140e-03, -9.162e-04, -4.299e-02, 1.158e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(9.068e-02, -2.301e-02, -1.091e-02, 1.180e-02, -2.630e-02, 8.768e-02, 1.303e-02, 5.415e-02, -1.145e-03, -1.128e-01, -1.018e-02, 9.608e-03, -1.045e-02, 8.055e-02, 3.178e-02, 4.355e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(8.335e-02, 1.080e-01, 1.632e-01, 3.182e-02, 1.203e-02, 6.387e-02, -7.098e-02, 4.854e-02, -8.532e-02, -5.464e-02, -1.543e-01, -6.535e-04, 7.094e-02, 1.947e-01, -4.266e-02, 1.347e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(1.677e-01, 9.513e-02, -4.614e-02, -2.422e-03, -5.475e-02, -1.152e-01, 4.530e-02, -6.380e-02, -3.694e-02, 8.824e-03, 9.579e-02, 1.512e-01, 7.776e-03, -4.483e-02, 9.246e-02, -3.825e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-7.849e-03, -2.183e-01, 3.147e-02, -6.551e-03, 1.056e-02, 4.477e-02, 8.404e-02, 2.551e-02, 4.026e-03, 1.017e-01, 1.085e-01, 3.603e-03, 2.458e-02, -2.320e-01, 4.813e-02, -7.548e-03), r4);\n\tr5 = MulAdd(s0_0_0, M4(-7.315e-02, 2.860e-02, 7.196e-02, 1.042e-01, 1.173e-02, -6.538e-02, -1.563e-01, 3.245e-02, -5.409e-02, -9.546e-03, 3.253e-02, 2.171e-02, 8.476e-03, -1.149e-01, -1.296e-01, -1.414e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(9.428e-02, 2.663e-01, -1.104e-01, 6.990e-02, -1.275e-01, -1.078e-01, 1.118e-01, 2.506e-02, 1.844e-01, -1.593e-02, -4.344e-02, 1.292e-01, -5.644e-02, -8.825e-02, 8.551e-02, 5.811e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(2.493e-01, 2.146e-01, 1.302e-01, -5.862e-03, 1.209e-01, -9.543e-02, -6.731e-02, 1.159e-01, -1.530e-02, -7.845e-02, 9.611e-02, 2.038e-01, -6.005e-02, 8.525e-02, -1.008e-01, 8.341e-03), r7);\n\tr0 = MulAdd(s0_0_1, M4(-7.384e-02, -5.341e-02, -6.276e-02, -1.437e-01, -4.724e-02, 1.138e-01, 3.063e-03, 5.856e-02, -1.326e-02, -5.210e-02, -1.144e-02, 3.211e-02, 2.260e-01, 9.064e-03, -9.875e-02, -6.301e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(2.990e-02, 2.997e-01, -2.774e-02, -1.193e-01, 7.381e-02, -1.885e-01, -7.000e-02, -4.768e-02, -1.980e-01, -2.252e-02, -6.323e-02, 1.743e-02, 4.514e-02, 4.060e-02, -4.991e-02, 5.465e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(2.384e-02, 3.717e-01, -2.705e-02, 3.453e-02, -6.847e-02, 5.603e-02, 1.004e-01, 1.390e-01, 3.649e-02, -2.447e-02, 6.466e-02, -1.603e-01, -3.891e-02, -9.534e-02, -3.295e-02, -9.399e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-8.687e-03, 5.349e-02, 1.978e-02, 8.873e-02, 1.639e-02, 1.552e-01, -7.484e-02, -9.038e-02, 1.642e-02, 1.839e-01, 1.420e-02, 2.169e-01, -9.729e-02, -7.457e-02, -5.372e-02, 7.496e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.587e-02, -6.701e-02, -6.911e-02, -2.216e-02, 8.757e-03, -4.349e-02, 1.853e-03, 3.630e-02, 3.084e-02, -3.532e-01, -6.241e-02, 6.235e-02, 1.849e-02, -9.770e-02, 1.171e-02, 4.148e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-6.541e-02, 1.409e-02, -3.340e-01, 1.432e-01, -2.733e-02, 7.064e-02, 1.209e-01, 1.509e-02, 9.385e-02, 4.194e-02, 1.601e-01, -1.631e-01, 4.975e-02, -1.079e-01, -1.178e-01, 1.299e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(6.297e-02, -7.729e-02, -6.825e-03, 1.735e-01, -4.005e-02, -8.621e-02, 8.299e-02, -5.190e-02, -4.364e-02, 9.772e-03, -8.310e-04, 1.078e-01, -1.183e-01, 1.914e-01, 9.742e-02, 7.586e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(3.486e-02, 1.207e-01, -2.208e-02, -6.925e-02, -1.968e-01, 6.223e-02, -3.866e-02, -2.342e-03, -2.570e-01, -6.054e-03, -2.960e-02, -6.731e-02, 1.982e-02, -2.028e-01, 1.319e-01, 2.038e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-1.105e-02, 6.377e-02, 4.003e-02, 1.020e-02, 1.541e-01, -9.705e-04, 1.597e-01, -2.245e-02, -1.618e-03, 2.646e-04, -6.153e-03, 8.860e-02, -7.017e-02, 2.706e-02, 1.827e-02, 7.828e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-2.027e-06, 1.906e-01, 9.760e-03, 5.032e-02, -1.150e-01, -3.742e-02, 6.190e-03, 3.450e-03, 9.168e-02, 1.501e-01, -1.370e-02, 5.053e-02, -9.011e-02, 1.355e-01, -5.667e-02, -1.994e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-7.811e-02, 1.646e-01, -1.237e-01, -5.961e-02, -8.339e-02, -4.078e-02, -4.225e-02, 1.017e-02, -5.671e-02, 8.165e-03, 1.278e-02, -5.720e-02, -1.538e-01, 1.152e-01, 9.680e-02, -5.642e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-2.631e-01, -1.927e-02, -3.014e-03, -5.861e-03, 1.281e-01, 1.153e-01, 2.086e-02, 2.866e-02, 4.116e-02, 1.012e-01, -3.030e-02, 2.166e-01, 1.929e-01, 1.184e-01, -4.792e-02, 1.617e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(-5.017e-03, -1.385e-01, -1.258e-01, 3.184e-03, 8.019e-03, -8.756e-02, -8.001e-02, -3.142e-02, -1.036e-03, 7.118e-02, 5.637e-02, -1.369e-02, 4.753e-03, -2.715e-01, -3.164e-02, -1.741e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(3.310e-02, 1.021e-02, -2.873e-02, -3.573e-02, -3.128e-03, 5.176e-02, 3.121e-02, 1.964e-02, 3.348e-02, 9.969e-03, -7.736e-02, -5.499e-02, 2.989e-02, 4.996e-02, 3.031e-02, 3.127e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(2.286e-02, -5.150e-02, -6.221e-02, -4.343e-02, -5.274e-03, 1.294e-01, 3.245e-02, 2.349e-02, -5.337e-02, 7.011e-02, -1.863e-01, 8.074e-02, 3.837e-02, -1.246e-02, 2.467e-03, -1.026e-01), r6);\n\tr7 = MulAdd(s0_0_2, M4(1.302e-01, -6.345e-02, -6.697e-02, 5.772e-02, 1.294e-01, -4.568e-02, -1.356e-02, -3.378e-02, 1.266e-01, 1.300e-01, -6.106e-02, -1.046e-01, -1.009e-01, 6.907e-02, -6.326e-02, -7.283e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-1.549e-01, 6.381e-02, 1.193e-02, 2.482e-02, 4.077e-02, 3.112e-02, -1.266e-02, -2.588e-01, -1.713e-02, 5.855e-02, 4.586e-02, -8.283e-02, -1.231e-02, 1.169e-01, -4.318e-02, -2.271e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(2.235e-02, 2.729e-02, -1.431e-02, -1.574e-01, 3.998e-02, 1.992e-01, 4.200e-02, 2.774e-02, 4.686e-02, 2.233e-01, -9.494e-02, -1.577e-01, 8.065e-02, -8.610e-03, 2.737e-02, -2.816e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(4.764e-02, 3.300e-02, -1.642e-01, 1.210e-01, 6.731e-02, -5.354e-03, 9.182e-02, -1.155e-01, 2.503e-01, 9.353e-02, -1.560e-03, 3.442e-02, 4.862e-02, 1.947e-02, -5.450e-02, 3.731e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(4.605e-02, 1.135e-01, 3.246e-02, 3.284e-02, -3.008e-01, -6.820e-02, -3.410e-03, -7.376e-03, -9.156e-02, 1.542e-01, 2.549e-02, 3.598e-01, -2.813e-01, -4.878e-03, -5.480e-02, -1.284e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-6.088e-02, 1.511e-01, 1.139e-01, 1.703e-02, 5.943e-02, -3.201e-01, 8.003e-02, 1.391e-02, 9.000e-02, 5.561e-02, 7.129e-02, 1.980e-02, 3.382e-02, -1.370e-01, 1.558e-01, 9.735e-03), r4);\n\tr5 = MulAdd(s0_1_0, M4(1.314e-01, 3.549e-01, 1.676e-01, 4.599e-02, -5.196e-02, -1.168e-02, -6.369e-02, 2.941e-02, -3.518e-04, 5.078e-02, 1.080e-01, -8.672e-02, 1.068e-01, 5.753e-02, 9.642e-02, 1.889e-01), r5);\n\tr6 = MulAdd(s0_1_0, M4(-4.069e-02, -1.392e-01, 3.153e-02, -2.993e-01, -6.588e-02, 6.822e-02, -1.915e-02, 1.163e-01, -1.187e-01, 3.364e-02, -1.057e-01, -1.613e-01, 6.391e-02, 3.762e-02, -4.661e-02, -1.003e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(7.715e-02, -3.861e-02, 2.174e-01, -1.679e-01, 3.163e-02, -1.396e-01, 3.617e-02, 1.092e-01, 2.361e-01, -2.096e-01, 2.549e-01, 6.855e-02, -9.689e-02, 7.147e-02, 9.907e-02, 1.125e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(2.190e-02, -9.305e-02, 1.750e-01, 3.092e-02, -1.015e-02, -8.843e-02, 8.235e-02, 1.425e-02, 3.304e-02, -1.291e-02, -1.652e-01, 3.389e-02, -8.178e-02, -4.587e-02, 5.428e-02, -1.679e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-2.340e-01, 1.180e-02, 7.975e-03, 2.787e-02, 4.964e-02, -3.972e-01, 1.304e-01, 1.097e-01, 4.568e-02, -4.516e-01, 4.434e-01, -6.372e-02, 4.610e-02, 2.536e-02, -8.639e-02, 6.042e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.829e-01, 9.039e-02, -1.309e-01, -2.778e-01, -2.897e-01, 4.825e-02, -8.998e-02, 1.270e-01, -8.267e-02, 1.136e-01, -3.004e-01, -1.573e-03, 3.961e-01, 9.374e-02, 1.504e-02, 1.874e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.738e-01, -1.258e-01, 1.082e-01, -1.536e-01, -3.029e-01, 2.529e-02, 1.110e-01, 9.361e-02, -3.315e-02, -1.044e-01, -3.590e-01, -1.122e+00, 2.138e-01, 5.434e-02, -5.740e-02, -1.129e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-1.434e-01, 6.998e-02, 9.173e-02, 3.675e-02, 6.895e-02, -4.329e-02, -2.160e-01, -2.761e-02, 1.073e-02, -9.445e-02, -4.510e-02, -6.454e-02, 4.014e-02, 1.494e-01, 6.232e-02, 2.792e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(1.686e-01, 4.721e-02, -1.475e-01, -4.482e-02, -6.874e-02, 2.614e-02, 7.372e-02, -5.195e-02, -1.221e-01, 2.151e-01, -2.196e-01, 1.932e-01, -1.290e-01, 4.577e-02, -1.815e-01, 3.127e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(8.230e-03, 9.685e-02, 2.360e-01, -5.376e-02, -1.167e-01, 2.808e-02, -7.568e-02, 1.677e-02, 1.270e-01, 1.172e-02, 3.568e-01, -1.516e-02, -7.485e-02, -4.858e-02, 8.394e-02, 4.061e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(-3.038e-01, 8.258e-02, -1.042e-01, 1.918e-01, -9.574e-02, -5.482e-02, -1.393e-01, -1.615e-01, -2.897e-01, 1.536e-01, -5.966e-02, -5.327e-02, 3.262e-01, -8.133e-02, 2.240e-01, 1.718e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(-3.203e-03, 3.347e-02, -9.937e-02, 4.195e-02, 6.620e-02, 6.274e-02, -4.790e-03, -1.255e-02, -6.939e-02, 4.062e-02, 3.004e-02, -9.904e-02, 2.245e-01, 2.898e-02, 1.013e-01, 8.535e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(5.819e-02, -9.045e-02, 5.153e-02, 1.578e-01, 1.962e-02, -1.678e-01, -1.293e-02, -5.200e-02, -1.022e-01, 8.928e-03, -1.876e-02, 2.382e-01, 1.444e-02, -3.387e-01, 5.466e-03, 8.535e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(-4.893e-02, -4.508e-03, 2.998e-02, -3.404e-02, -5.779e-02, 5.758e-03, -6.447e-02, -1.022e-01, 2.300e-02, 1.049e-01, 1.308e-01, -4.255e-02, -1.777e-01, -2.951e-01, -1.465e-01, 1.058e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-2.624e-01, -1.102e-01, 3.441e-02, -8.317e-02, -3.245e-01, 3.977e-02, -2.085e-02, 1.352e-02, 1.508e-01, -8.550e-02, -1.628e-01, -7.266e-02, -7.618e-02, -1.173e-01, 1.049e-01, -5.636e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(7.436e-02, -7.563e-02, 9.440e-02, 3.181e-02, -3.982e-02, -3.643e-02, 5.935e-02, 2.752e-02, -6.910e-02, 1.040e-01, 2.161e-02, 1.650e-02, -2.941e-02, 1.161e-01, -3.256e-01, -2.180e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-3.241e-02, -4.853e-03, 1.581e-02, -2.279e-02, -3.603e-02, -8.830e-02, 3.009e-02, 7.744e-02, 9.905e-02, -1.333e-01, -3.888e-03, 8.612e-02, -7.776e-03, 3.451e-02, 5.235e-02, 2.732e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(2.058e-02, -7.175e-02, -1.904e-02, 1.033e-01, -1.563e-02, -1.306e-02, 4.007e-02, -1.608e-01, 9.740e-02, 8.637e-04, 8.960e-02, 1.886e-02, 3.894e-02, 4.382e-02, 8.610e-02, -1.928e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(3.910e-02, 1.268e-01, -1.744e-02, -2.655e-02, 5.700e-02, -9.376e-04, 1.331e-02, 2.258e-02, 6.635e-03, 6.681e-02, -5.908e-02, 4.020e-02, 5.696e-02, 1.262e-01, -2.018e-02, -6.836e-03), r7);\n\tr0 = MulAdd(s0_2_0, M4(-5.536e-02, 2.580e-02, 2.361e-02, 5.092e-02, 7.084e-02, -5.302e-02, 1.829e-02, 8.615e-03, 2.882e-02, -6.724e-04, 1.287e-02, -5.530e-02, 7.165e-03, -5.038e-02, 1.357e-02, 2.160e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.124e-02, -1.279e-02, 1.078e-02, 1.417e-01, -2.047e-02, -4.751e-02, -1.591e-03, 2.396e-02, 6.827e-02, -3.508e-02, 4.947e-02, -5.501e-02, -6.418e-02, 4.320e-03, 2.345e-02, 2.724e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(2.174e-02, 2.368e-02, 6.046e-02, -3.308e-02, 6.112e-02, 5.143e-02, -1.081e-01, -7.635e-02, -7.687e-02, -2.213e-03, 3.716e-02, 1.120e-01, 1.240e-01, -8.694e-02, -1.169e-02, -3.730e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(6.303e-02, -5.764e-02, 8.271e-03, 2.430e-02, -1.177e-01, -6.439e-02, -1.001e-02, 8.025e-02, 3.807e-02, -5.455e-02, 2.216e-02, 1.596e-01, -1.415e-01, 4.142e-02, 8.695e-02, 9.417e-03), r3);\n\tr4 = MulAdd(s0_2_0, M4(-1.763e-02, -2.247e-02, -3.750e-02, 6.049e-03, 3.974e-02, -1.048e-01, 3.693e-02, 2.469e-03, -3.866e-02, -6.925e-02, -2.535e-02, 8.097e-03, 1.039e-01, -1.595e-01, 1.266e-02, -4.151e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(6.708e-02, -5.402e-02, 1.415e-02, -1.055e-01, -6.709e-02, 4.800e-02, -5.871e-02, -2.392e-02, -5.620e-02, -1.020e-01, 9.731e-02, -6.777e-03, 1.272e-01, -3.150e-02, 1.027e-01, -1.296e-01), r5);\n\tr6 = MulAdd(s0_2_0, M4(9.306e-02, -6.272e-02, 3.228e-03, -1.975e-02, -1.776e-02, 7.387e-03, 1.827e-02, 1.495e-01, 1.241e-02, -1.156e-02, 2.706e-03, -9.012e-02, 8.724e-02, -3.634e-02, 7.312e-02, 5.331e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-1.267e-02, -6.256e-02, 1.721e-02, 1.333e-01, -1.189e-01, 1.362e-01, -7.969e-03, 8.828e-02, 4.943e-02, 3.617e-02, 9.535e-03, -5.024e-02, -1.307e-01, 2.112e-01, 6.319e-02, -2.870e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(8.732e-03, 7.576e-02, -6.293e-03, 4.446e-02, 3.673e-02, 1.151e-01, 1.294e-02, -1.193e-01, -7.165e-02, 1.889e-01, -2.730e-02, -1.730e-02, 1.801e-01, 8.964e-02, 3.473e-02, -3.466e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(7.048e-02, -1.559e-01, 4.586e-02, 9.202e-02, 6.377e-02, 1.932e-01, 1.027e-02, -1.238e-01, -1.454e-02, 2.438e-01, -4.010e-02, -5.725e-02, -1.368e-01, 1.822e-01, 7.196e-02, 2.559e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-7.351e-02, -6.202e-02, 1.596e-01, -7.081e-03, 2.276e-02, 4.624e-02, 9.370e-02, 6.341e-02, 1.280e-01, -8.598e-02, 1.215e-01, -1.898e-01, -2.213e-02, -1.454e-02, 9.307e-03, -3.492e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-3.749e-01, 1.646e-02, 4.364e-02, -3.686e-03, 3.799e-01, 1.067e-01, -1.334e-02, 2.436e-02, 1.332e-01, -3.312e-02, 4.553e-02, -2.382e-02, 4.092e-02, -5.894e-02, 9.958e-02, -2.091e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(8.343e-02, 1.030e-01, 7.288e-02, 1.433e-02, -2.108e-02, 2.777e-01, 1.865e-02, 9.337e-03, -1.212e-01, -1.132e-01, 2.835e-02, 1.830e-02, 5.538e-03, 2.025e-01, 1.411e-01, -2.839e-04), r4);\n\tr5 = MulAdd(s0_2_1, M4(-1.153e-01, -6.977e-02, 7.290e-02, 7.671e-02, -4.136e-02, -1.064e-02, -1.501e-02, 5.548e-02, -9.396e-02, 8.615e-03, -4.914e-02, 1.504e-01, 2.650e-02, 2.951e-02, -1.082e-01, 4.222e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(9.630e-02, -9.044e-02, 6.006e-03, -2.960e-02, 4.459e-02, 7.363e-02, 5.530e-02, -5.983e-02, 3.284e-02, 4.107e-02, 3.528e-02, -1.109e-01, 2.459e-02, 8.811e-02, 1.027e-01, 2.252e-01), r6);\n\tr7 = MulAdd(s0_2_1, M4(-4.651e-02, -1.306e-01, 3.903e-02, 2.859e-02, 2.757e-01, 4.529e-02, 6.860e-02, 8.752e-02, -3.055e-01, -2.322e-02, 1.277e-02, -2.097e-02, -2.200e-01, -6.391e-02, -8.025e-02, -8.576e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-1.950e-02, -1.996e-02, 1.869e-02, -2.073e-02, -5.681e-02, -4.294e-02, -5.889e-02, -5.321e-02, 6.495e-02, 4.544e-02, 8.688e-03, 3.239e-02, -5.963e-02, 8.257e-02, -8.974e-02, -8.032e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-7.700e-02, -4.169e-02, 7.740e-03, 3.700e-02, -6.414e-02, 2.676e-02, -3.420e-02, -3.104e-02, 5.473e-02, -4.754e-03, -5.194e-02, -1.084e-03, -7.647e-02, -5.162e-02, -2.891e-03, 1.029e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.528e-02, -4.895e-02, 3.153e-03, 1.065e-02, 4.492e-02, -2.802e-02, -1.340e-01, 1.795e-02, -2.208e-02, -9.973e-03, 7.925e-02, 1.788e-01, -9.880e-02, 1.298e-01, -1.566e-01, -1.398e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(-3.146e-01, 6.632e-02, 1.704e-02, -5.722e-02, 5.977e-02, 5.017e-02, -9.434e-03, -3.117e-02, -4.282e-01, -7.045e-02, 1.515e-02, 1.410e-01, -1.061e-01, 7.221e-02, -1.454e-02, 1.362e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(2.448e-02, 1.161e-01, -1.390e-04, -1.960e-02, 1.060e-02, 2.768e-02, 4.090e-02, 2.042e-02, 5.974e-02, 1.620e-01, -1.079e-02, 1.387e-02, -1.106e-02, -1.563e-04, -4.660e-02, 2.643e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(4.642e-02, -4.508e-02, 5.122e-02, -9.850e-02, 4.934e-02, 6.522e-02, -4.546e-02, 5.728e-02, -4.534e-03, 4.915e-03, -1.256e-01, -9.454e-02, 8.518e-02, 7.256e-02, 4.452e-02, -5.006e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-5.355e-02, 3.532e-02, 2.308e-02, 7.675e-02, 1.509e-02, 2.383e-02, 5.276e-02, 1.742e-02, 4.381e-03, -4.387e-02, 5.659e-02, -4.909e-02, -5.800e-02, -6.190e-02, 1.079e-02, -1.038e-01), r6);\n\tr7 = MulAdd(s0_2_2, M4(-5.581e-02, 4.671e-02, -3.993e-02, 2.833e-02, -2.932e-03, -5.843e-02, 1.060e-02, 2.516e-02, 2.434e-01, 7.742e-04, 4.602e-02, 5.139e-02, 1.583e-01, 3.856e-02, -6.416e-02, -1.124e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(1.958e-04, -1.420e-01, 5.128e-02, -3.462e-02, 5.172e-02, -1.607e-01, 3.024e-03, -3.558e-02, -1.099e-01, -1.360e-02, 2.423e-02, 2.302e-02, -2.869e-02, 4.043e-02, -5.302e-02, 1.346e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.564e-01, 1.568e-01, -1.856e-02, 1.612e-01, -2.879e-02, -8.849e-02, 5.674e-03, -1.476e-01, 1.648e-02, -8.039e-02, -4.358e-02, 9.791e-02, -5.656e-02, 5.333e-02, 4.120e-02, 6.981e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.946e-01, 1.005e-01, -2.015e-01, -2.564e-01, -4.473e-03, 4.481e-02, -4.779e-02, 5.080e-02, -3.373e-02, -3.232e-02, 1.125e-01, 2.175e-01, 1.564e-01, 3.510e-02, 1.120e-03, -1.820e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(-1.519e-01, 1.970e-01, 4.905e-02, 3.548e-02, -1.912e-01, 5.860e-02, 2.620e-02, -2.154e-02, 2.894e-01, 5.281e-02, -3.348e-02, -7.041e-02, 1.001e-01, 5.715e-02, 1.094e-02, 2.958e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(3.577e-02, -7.767e-03, 1.761e-01, 4.556e-03, 7.599e-02, 2.778e-02, -2.771e-01, 1.016e-02, -3.600e-02, 1.802e-01, 3.780e-02, -2.235e-02, -1.978e-02, 2.331e-01, 3.627e-02, 3.359e-03), r4);\n\tr5 = MulAdd(s1_0_0, M4(2.949e-02, 2.082e-01, -3.947e-02, -9.335e-02, -9.643e-02, 2.989e-02, -1.795e-02, 1.084e-02, 5.672e-02, -3.214e-02, -6.001e-02, 9.107e-02, 1.314e-01, 1.534e-01, 3.610e-02, -5.869e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-6.196e-02, -2.616e-01, -8.786e-03, 3.314e-02, 5.189e-04, -1.273e-01, 1.412e-02, -5.632e-02, -8.377e-04, 2.897e-02, -1.711e-02, -7.237e-02, -3.588e-02, -1.506e-01, -3.448e-02, 1.558e-01), r6);\n\tr7 = MulAdd(s1_0_0, M4(4.473e-02, -2.229e-01, 3.395e-02, 7.687e-02, -1.094e-01, -7.530e-02, -8.004e-02, -8.406e-02, 8.295e-02, 1.481e-01, 2.734e-02, -1.888e-01, -2.265e-02, 1.530e-01, 5.818e-03, 1.450e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-2.495e-01, -2.685e-01, 8.773e-02, 1.216e-01, -2.350e-01, -8.708e-02, 1.967e-02, -1.474e-01, 1.082e-01, -1.436e-01, -2.007e-01, -2.006e-01, -3.414e-02, 5.343e-02, 2.963e-01, 2.165e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(2.202e-01, 2.546e-02, -3.809e-02, 3.763e-01, 2.189e-02, 8.013e-03, 5.593e-02, -5.416e-02, -7.211e-03, 5.224e-02, -8.732e-02, 7.656e-02, 2.078e-01, -2.003e-01, 1.437e-01, 7.046e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-2.437e-01, 4.491e-01, 1.162e-01, -7.796e-03, -1.104e-01, 5.127e-02, 2.155e-01, 2.031e-01, 5.240e-02, 3.467e-01, 1.159e-01, -2.093e-01, -1.043e-01, 2.230e-01, -6.911e-02, 1.020e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(1.311e-02, 6.029e-02, 2.252e-02, -5.181e-02, -5.433e-02, 1.684e-01, -5.577e-02, -5.870e-02, -8.036e-01, -8.950e-02, -6.394e-03, 5.253e-02, 1.569e-02, 1.429e-01, -3.973e-02, 7.094e-03), r3);\n\tr4 = MulAdd(s1_0_1, M4(-3.771e-02, -2.627e-01, 6.059e-02, -1.486e-02, -2.027e-02, 3.679e-02, 6.751e-02, 9.432e-03, 2.655e-02, -2.978e-01, -1.018e-01, 6.068e-02, -9.692e-03, -4.664e-02, 1.782e-02, 2.058e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(2.311e-02, 2.494e-01, -1.366e-01, 9.562e-02, -5.868e-02, -3.643e-01, 1.118e-01, -1.565e-02, -7.016e-03, 1.249e-01, -9.422e-02, 5.828e-02, -1.813e-02, -1.478e-02, 3.481e-02, -3.810e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(2.628e-02, 2.522e-02, 6.701e-02, 5.968e-03, -1.355e-01, 2.114e-02, -1.283e-01, 1.205e-01, -8.724e-02, 8.791e-02, 1.284e-01, -1.467e-01, -1.327e-01, -1.050e-01, -1.282e-01, -1.384e-01), r6);\n\tr7 = MulAdd(s1_0_1, M4(9.461e-02, -1.508e-01, -9.415e-02, 1.754e-01, 3.094e-01, 4.456e-02, -1.586e-01, 5.910e-02, 5.243e-02, -8.277e-02, -1.196e-01, -1.588e-01, 1.703e-01, -9.146e-02, -1.564e-01, 8.892e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(-1.111e-01, 1.128e-01, -2.256e-02, 5.786e-03, -1.552e-01, -1.757e-02, 1.364e-01, -1.014e-02, -1.389e-02, -7.893e-02, -5.258e-02, 5.780e-02, -4.915e-02, -9.681e-02, 2.298e-02, 1.763e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-9.233e-02, -1.231e-01, -2.412e-02, 7.352e-02, -1.375e-01, -4.143e-01, 8.258e-03, 2.685e-02, 2.765e-02, -1.007e-01, 1.466e-03, 4.794e-04, 9.079e-02, 9.733e-02, -4.035e-02, 7.203e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-8.083e-02, 9.253e-02, 3.623e-02, -2.528e-01, 3.515e-02, -1.977e-02, 2.835e-01, -7.642e-02, 7.502e-02, -4.742e-02, 1.001e-02, -1.407e-02, 7.228e-03, 9.821e-02, 5.971e-02, -2.841e-03), r2);\n\tr3 = MulAdd(s1_0_2, M4(4.474e-02, -3.095e-01, 2.953e-02, -2.188e-02, -1.961e-01, -1.372e-01, -1.191e-02, -7.111e-02, -3.632e-02, 5.450e-03, -2.097e-02, -1.840e-03, 1.824e-01, 2.200e-02, -3.906e-02, 6.602e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(5.781e-03, -1.087e-02, -8.312e-02, 1.892e-02, -1.875e-02, 2.194e-02, 2.155e-01, -2.375e-02, -1.527e-02, -1.309e-01, -1.312e-01, 8.242e-03, -2.036e-02, -1.293e-01, 7.360e-02, 1.877e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(5.638e-02, 1.043e-01, 6.733e-02, -4.366e-02, -1.038e-01, -2.932e-02, -3.394e-02, 8.797e-02, 5.948e-02, -5.348e-02, 2.327e-01, 1.738e-02, 1.020e-01, 1.152e-02, -1.285e-02, -5.367e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(1.002e-01, 4.530e-02, 5.693e-02, 8.187e-02, -5.354e-02, 2.127e-01, -3.211e-02, 1.929e-01, 2.007e-03, -8.854e-02, -2.781e-02, 1.431e-01, -1.115e-02, 2.571e-02, -3.044e-02, 4.380e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-9.737e-02, -5.447e-03, -7.243e-03, 3.674e-03, -6.297e-02, -7.918e-02, -8.278e-02, -8.306e-03, -6.559e-02, 6.359e-02, -1.096e-01, 1.774e-02, -6.368e-02, 5.978e-02, 4.639e-02, -5.524e-04), r7);\n\tr0 = MulAdd(s1_1_0, M4(-2.337e-03, -2.224e-01, -4.797e-02, -1.104e-01, 9.386e-02, 6.873e-02, -3.686e-02, -1.396e-01, -1.081e-01, -1.872e-02, -5.050e-02, 2.565e-02, -2.563e-02, 5.945e-02, 8.686e-02, -1.197e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(-8.092e-02, -1.901e-01, 7.576e-03, -1.076e-01, 1.890e-02, -4.689e-02, 3.455e-02, 4.348e-02, 2.506e-03, -1.474e-01, -1.716e-02, -2.950e-02, 8.838e-02, 1.047e-01, 6.023e-02, 4.114e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.120e-01, -1.630e-01, -8.610e-02, 1.997e-01, -7.560e-02, 3.207e-02, -9.702e-02, -1.129e-01, -1.200e-02, -7.959e-02, 3.371e-02, -9.694e-03, 9.680e-02, -1.141e-01, 9.657e-02, 1.293e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(-1.145e-01, 9.338e-02, 3.244e-02, -8.809e-03, -6.968e-02, 7.025e-02, -2.112e-02, 2.125e-02, -2.014e-02, -5.061e-02, 4.493e-02, -7.216e-03, 6.755e-02, -2.324e-01, 5.344e-02, -9.511e-03), r3);\n\tr4 = MulAdd(s1_1_0, M4(4.991e-02, 1.777e-01, 1.419e-02, 1.317e-02, 3.796e-02, -7.241e-02, 1.241e-01, 2.289e-02, 1.868e-02, 1.692e-01, -6.850e-02, 1.619e-03, -4.635e-02, 2.976e-03, 1.832e-01, 3.113e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(3.283e-02, 3.304e-02, -6.801e-02, 2.191e-01, -1.325e-02, -2.593e-02, 7.465e-02, 1.379e-01, -2.048e-02, 1.270e-01, -1.099e-01, -9.453e-02, -2.135e-01, -6.814e-02, 3.846e-02, 5.817e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(1.422e-01, 7.721e-02, 3.951e-02, 1.600e-01, 8.720e-04, 3.576e-01, -3.225e-02, -9.548e-02, -5.543e-02, 1.651e-01, 1.293e-01, -1.055e-01, 1.800e-03, -2.208e-01, -5.052e-02, 1.120e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.060e-01, -6.894e-02, 6.656e-01, 1.663e-01, -8.446e-02, 3.248e-02, 3.888e-02, -9.023e-02, -2.920e-02, 2.584e-01, 6.725e-02, 5.053e-02, 2.413e-01, -1.741e-01, -4.003e-02, 2.023e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(1.648e-01, -1.754e-01, -1.970e-01, -5.059e-01, 1.471e-01, 1.987e-01, -6.157e-02, 1.842e-01, -3.924e-02, -1.055e-01, -1.424e-02, -1.344e-01, 1.942e-01, 1.140e-01, -1.142e-01, -6.701e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.941e-01, -1.791e-01, 1.742e-02, 1.508e-01, -2.339e-01, 3.335e-01, 1.821e-01, 1.681e-01, -9.220e-02, -3.594e-01, -1.504e-01, -2.445e-02, 5.702e-02, -1.371e-01, -1.132e-02, 1.707e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-6.463e-01, 1.697e-03, -4.270e-01, 8.159e-02, 3.473e-01, 2.927e-01, -3.845e-01, -2.462e-02, 1.409e-01, -8.422e-02, -3.834e-02, -2.615e-01, -1.752e-01, -9.128e-02, -3.682e-01, -3.573e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-8.547e-01, -2.558e-01, 5.603e-02, 1.744e-01, 1.594e-01, -4.995e-02, 1.469e-01, -2.174e-02, 1.444e-01, -2.409e-01, -7.690e-02, 4.881e-04, -1.427e-01, 4.830e-02, 6.169e-02, -2.084e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(-1.129e-01, -4.299e-01, -3.488e-01, 2.118e-01, 1.814e-01, 2.222e-01, 9.452e-02, 5.555e-02, 2.535e-02, 2.623e-01, -2.266e-01, 7.828e-02, 1.495e-01, 2.152e-03, -2.419e-01, -3.194e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-2.881e-01, 1.664e-01, -2.469e-01, 6.232e-01, 1.438e-02, 9.996e-02, -2.974e-01, 1.104e-01, 9.255e-02, 9.053e-02, -1.608e-01, 1.233e-01, -2.184e-01, -2.168e-01, 2.057e-01, 3.599e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(-1.284e-01, 1.007e-01, 4.205e-01, 1.380e-01, -7.642e-02, -4.942e-03, 3.533e-02, -3.314e-02, -7.005e-02, -9.019e-02, 2.200e-01, -8.323e-02, -5.665e-02, 2.640e-01, 2.800e-01, -7.346e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(-1.802e-01, -3.059e-01, -1.980e-01, -8.162e-01, 9.712e-02, 3.770e-01, -1.311e-01, -4.974e-02, -1.351e-01, 3.041e-01, 2.767e-02, -6.361e-02, 2.739e-01, -1.557e-01, 3.279e-02, -1.396e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-6.268e-02, -8.841e-02, 8.435e-02, -1.688e-01, -1.340e-01, 5.166e-02, 7.708e-02, -1.362e-01, -8.664e-02, 7.550e-02, 1.509e-01, -7.444e-02, 8.785e-02, 9.852e-03, 2.960e-02, -8.882e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(7.760e-02, -1.352e-02, 1.499e-01, 7.103e-02, -1.405e-02, -4.169e-02, 7.444e-02, 3.395e-02, -9.285e-02, -1.150e-01, 7.899e-02, 5.696e-02, 7.309e-02, -2.452e-01, 7.100e-02, -8.385e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-5.754e-02, -7.634e-02, 9.208e-02, 1.984e-01, -2.721e-02, 7.476e-03, 2.439e-03, 1.965e-01, -1.099e-03, -3.268e-02, 2.226e-01, 2.543e-01, -1.497e-01, -3.488e-02, -1.470e-01, -1.493e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(-9.322e-01, -2.604e-02, 5.476e-02, -4.443e-03, -1.853e-01, 1.352e-01, -1.825e-02, 5.008e-03, -2.184e-01, -1.397e-01, 5.516e-02, 1.797e-02, -7.443e-02, 2.360e-01, 2.034e-01, 1.369e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.097e-02, 8.989e-02, -2.153e-01, -1.659e-02, -6.758e-02, -9.970e-02, 1.251e-01, -3.583e-02, 1.426e-02, 2.071e-01, 1.390e-01, -2.881e-02, -2.083e-02, -1.400e-01, 1.197e-01, -3.969e-03), r4);\n\tr5 = MulAdd(s1_1_2, M4(-6.746e-03, -8.600e-02, 5.158e-02, -1.112e-01, 1.443e-01, 1.337e-01, 6.890e-02, 1.128e-01, -5.380e-02, 5.032e-03, -2.046e-01, 2.858e-03, -6.840e-02, 1.810e-01, -1.771e-04, -5.235e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-1.194e-01, 2.200e-02, -1.061e-02, 8.422e-02, 4.242e-02, -2.522e-02, -1.762e-01, 6.714e-02, -1.060e-01, 6.446e-02, -1.809e-02, -1.325e-02, 1.891e-02, 9.253e-02, -2.191e-02, -1.955e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(-1.193e-02, 7.460e-02, -2.834e-01, -1.483e-04, -1.561e-01, -2.117e-01, -5.792e-04, 1.466e-01, -1.743e-01, -1.675e-01, -1.024e-02, 1.234e-01, -2.920e-01, -1.086e-01, 8.021e-03, -9.578e-03), r7);\n\tr0 = MulAdd(s1_2_0, M4(1.098e-01, 9.235e-02, -5.766e-02, 1.719e-01, 5.382e-02, -9.085e-02, -1.434e-02, -2.408e-02, 3.569e-02, 1.302e-01, -1.899e-02, 1.120e-02, -1.737e-02, 2.610e-03, 3.875e-02, 1.400e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.419e-02, -1.127e-02, 2.211e-02, 1.868e-02, 3.907e-02, 1.084e-02, 1.485e-02, 5.157e-02, 8.408e-02, 1.033e-01, 1.217e-02, -3.837e-02, -1.368e-02, -1.162e-02, -3.763e-02, -5.200e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.166e-01, -8.309e-02, -5.576e-02, -2.357e-01, 9.535e-02, -2.477e-02, -2.298e-02, 1.039e-01, 8.889e-02, -2.484e-02, -2.646e-02, -5.672e-03, 6.564e-02, 7.157e-02, 9.704e-02, 2.673e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-2.632e-01, -1.613e-01, 4.380e-02, -7.112e-03, -1.711e-01, 1.422e-02, 3.167e-02, 1.197e-01, 1.324e-01, 6.578e-02, 9.912e-05, 6.316e-03, 1.860e-01, -3.945e-02, -5.609e-02, -6.305e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(1.037e-01, -4.800e-02, 1.937e-01, 5.512e-03, 6.779e-02, -3.486e-02, -7.122e-02, -5.617e-03, 2.000e-02, -4.553e-02, 4.457e-02, -1.314e-02, -2.226e-02, -7.951e-02, 8.685e-02, -8.616e-03), r4);\n\tr5 = MulAdd(s1_2_0, M4(-1.408e-01, -3.306e-02, 9.751e-02, -1.437e-02, 5.878e-02, -2.971e-02, 1.078e-01, -5.584e-02, 9.370e-02, 6.741e-02, 4.805e-03, -2.478e-02, 3.856e-02, 3.328e-02, -2.682e-02, -3.967e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-1.295e-02, -1.766e-01, 7.642e-02, -3.694e-02, 1.813e-01, 3.422e-02, 4.395e-02, -8.452e-02, 6.486e-02, -8.219e-02, -9.741e-03, -2.658e-02, -8.196e-02, -1.542e-02, -3.689e-02, 2.194e-01), r6);\n\tr7 = MulAdd(s1_2_0, M4(-3.959e-01, -3.387e-01, 9.470e-02, -2.951e-01, 8.044e-02, -5.451e-02, -4.599e-02, 2.149e-01, 1.491e-01, 4.135e-02, -2.398e-02, 8.940e-02, -1.264e-01, 9.064e-02, 4.328e-02, -2.120e-01), r7);\n\tr0 = MulAdd(s1_2_1, M4(1.460e-01, 8.181e-02, 4.995e-02, 2.573e-01, 1.496e-01, -1.345e-03, -1.581e-02, 5.676e-02, 4.373e-02, 4.548e-02, 1.888e-02, 1.134e-01, -4.041e-02, 1.170e-01, -7.153e-03, -1.469e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(4.261e-02, -6.913e-02, -7.703e-03, 3.990e-02, 1.197e-01, 8.238e-02, 4.336e-02, 5.110e-02, 4.445e-02, 1.401e-01, -1.735e-02, -5.529e-02, -6.977e-02, -3.523e-02, 7.174e-02, 5.513e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(6.136e-02, -1.762e-01, 3.927e-02, 4.073e-02, -7.568e-02, -2.201e-02, 2.110e-01, -2.567e-01, -1.023e-01, 9.513e-03, 1.266e-01, 5.295e-02, -3.720e-02, 8.171e-02, -4.460e-02, 1.662e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(-3.354e-01, -1.692e-01, -1.593e-03, -9.213e-03, -2.710e-01, 5.914e-02, 8.218e-02, 1.878e-01, -4.229e-01, -2.190e-02, -1.245e-02, 2.087e-02, -1.952e-01, -7.683e-02, -2.216e-02, -9.974e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(2.766e-01, -2.995e-01, 2.319e-02, 1.268e-02, 8.145e-02, 6.058e-02, 2.788e-02, 5.329e-03, 1.312e-01, -1.124e-01, -1.209e-01, -8.754e-03, 1.769e-01, 2.567e-03, -5.921e-02, -2.968e-03), r4);\n\tr5 = MulAdd(s1_2_1, M4(3.373e-01, -1.035e-01, 6.533e-02, 1.092e-01, 1.160e-02, 1.039e-01, 9.875e-02, -1.590e-01, 5.161e-02, 4.325e-02, -4.448e-02, -1.685e-02, 5.673e-02, 9.440e-02, -5.775e-02, 1.132e-01), r5);\n\tr6 = MulAdd(s1_2_1, M4(-1.971e-03, 8.864e-02, 6.527e-02, -9.966e-02, -5.518e-02, 5.356e-02, 6.932e-02, 1.429e-01, 2.512e-02, 1.369e-01, -1.303e-02, -1.059e-02, 6.407e-03, -9.068e-03, 2.894e-02, 1.763e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(-6.968e-01, 1.089e-01, -1.425e-01, 1.302e-02, -1.242e-01, -4.014e-02, -6.257e-02, 1.523e-01, -1.367e-01, -2.678e-02, -1.259e-01, -9.308e-02, -1.828e-02, -1.365e-01, 5.457e-02, -2.799e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(2.239e-02, -2.356e-02, 3.363e-03, -7.793e-02, -3.124e-02, 8.198e-02, 2.954e-02, 1.735e-02, 6.822e-02, 2.391e-02, 1.718e-02, 3.106e-02, 5.584e-03, -2.678e-02, -6.721e-02, 3.866e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.530e-01, -6.275e-02, 1.589e-01, 9.628e-02, 9.892e-03, -4.070e-02, 6.210e-02, 5.576e-02, 1.043e-02, -1.988e-01, 1.790e-02, -1.817e-02, 2.251e-02, 6.181e-02, -2.529e-02, 2.285e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-7.881e-02, -1.572e-01, 2.064e-02, -1.582e-01, -2.760e-02, 2.279e-02, 2.238e-01, 1.647e-01, -4.020e-02, -7.921e-02, -1.531e-02, -3.699e-03, -1.744e-02, 1.111e-01, -1.014e-01, -1.102e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(-8.865e-01, 1.841e-01, 1.012e-01, 3.133e-02, 2.240e-02, 7.008e-02, 3.752e-02, 6.713e-02, -3.296e-01, -4.627e-02, 1.206e-02, -2.246e-02, -2.309e-01, -1.490e-02, -4.520e-03, -1.782e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(4.501e-02, 2.258e-01, 6.580e-02, -1.305e-02, -6.869e-02, -5.110e-02, 5.037e-02, -6.804e-05, 3.386e-02, -7.085e-02, -8.840e-02, -7.215e-04, -5.081e-02, -3.352e-02, -1.167e-02, 6.539e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(-5.387e-02, -9.078e-02, 6.083e-02, -2.481e-02, 4.707e-02, 4.861e-02, -5.629e-02, -1.205e-02, 9.685e-02, -1.131e-01, -3.903e-02, -1.845e-02, 1.314e-02, 1.208e-01, 7.740e-02, -5.654e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-1.082e-01, 1.483e-01, -3.983e-02, 1.487e-01, 3.254e-03, 6.954e-02, 3.274e-03, 8.530e-02, 6.969e-02, -4.038e-02, 1.906e-03, -3.266e-02, 1.742e-02, -2.340e-02, -2.048e-03, 5.368e-03), r6);\n\tr7 = MulAdd(s1_2_2, M4(-7.555e-02, 4.492e-02, 1.548e-02, -7.536e-02, -1.918e-01, -9.792e-02, -2.503e-02, -1.380e-01, -2.081e-01, -2.306e-01, -5.427e-02, -5.651e-02, -6.512e-02, 6.028e-02, -3.736e-02, 2.389e-02), r7);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(4.767e-02, -2.138e-02, 4.620e-02, 4.776e-02, -3.341e-03, 6.859e-03, 7.164e-03, -2.988e-03, -7.580e-02, 1.803e-02, 9.281e-02, 4.280e-03, 4.924e-02, 4.475e-02, 6.080e-02, 7.929e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-5.872e-02, 7.611e-02, 2.119e-02, 1.133e-02, -5.298e-02, -8.007e-02, 4.525e-02, -2.524e-02, 2.496e-02, -2.113e-01, 2.752e-02, 4.912e-02, 7.787e-02, -2.765e-02, -7.574e-03, -5.874e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.048e-01, 5.990e-02, -5.984e-02, 3.165e-01, 3.622e-02, 2.622e-02, 1.258e-01, -9.453e-03, -1.713e-01, -1.672e-02, -1.356e-01, 6.364e-03, -3.664e-02, -7.432e-02, -1.054e-01, -1.835e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(-6.659e-02, 4.837e-02, 1.838e-02, -4.060e-02, -2.131e-01, -5.096e-02, 3.736e-02, 3.676e-02, -6.942e-02, 6.986e-02, -4.767e-02, -3.428e-02, -2.044e-01, -3.158e-02, -1.885e-02, -2.378e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.613e-02, -9.632e-03, -3.870e-02, -6.169e-03, -4.815e-04, -2.404e-01, -7.670e-02, -5.821e-03, -1.306e-02, 2.534e-01, -8.445e-02, 2.653e-02, 1.815e-02, 3.799e-02, 5.577e-02, 3.186e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(5.094e-02, -5.655e-03, -1.127e-01, -1.225e-01, -1.854e-02, 5.352e-02, 9.427e-02, 1.346e-01, 4.687e-02, -1.700e-01, 1.071e-01, 9.957e-02, -1.071e-01, -3.514e-02, -1.195e-02, 1.541e-01), r5);\n\tr6 = MulAdd(s0_0_0, M4(6.773e-03, 7.856e-02, -5.268e-02, -1.112e-02, -5.792e-02, 3.596e-02, 5.787e-03, -5.142e-02, -5.610e-02, 3.494e-01, -2.216e-02, -1.075e-02, -2.036e-01, -8.102e-02, 4.236e-02, -1.553e-01), r6);\n\tr7 = MulAdd(s0_0_0, M4(-1.642e-01, 6.641e-02, -1.296e-01, 1.745e-01, -2.924e-02, -4.816e-02, -1.958e-02, -1.122e-01, -1.090e-01, -2.269e-01, -2.154e-01, 2.005e-02, 1.713e-01, -1.304e-01, 4.963e-02, 2.524e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(1.879e-01, -3.785e-02, 5.662e-02, -4.856e-02, 5.206e-02, 1.740e-01, 2.703e-02, 1.601e-01, 1.041e-01, 1.623e-02, -1.690e-02, -4.800e-02, 1.087e-01, -2.007e-03, 4.129e-02, 7.416e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(1.170e-01, -5.423e-02, 1.539e-02, -1.718e-02, -5.766e-02, -4.961e-02, 1.128e-01, 1.736e-01, 4.344e-02, 1.430e-01, 1.544e-02, -2.852e-02, 6.520e-02, 3.390e-02, 5.778e-02, -4.930e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-5.288e-02, 8.835e-02, 1.088e-01, -2.812e-01, -1.695e-02, -7.153e-02, 1.654e-01, -2.183e-02, 1.216e-01, -6.371e-02, 1.477e-01, 8.900e-02, 3.585e-02, -2.047e-01, -4.074e-04, 8.529e-03), r2);\n\tr3 = MulAdd(s0_0_1, M4(-4.503e-01, -4.525e-02, 4.893e-02, -1.082e-01, 5.057e-02, -1.049e-01, 3.156e-03, -5.210e-02, 1.740e-01, -9.131e-02, -1.803e-03, -8.650e-02, 2.587e-01, 1.278e-02, 4.375e-02, -7.548e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(3.923e-03, 7.611e-02, -5.993e-02, -1.518e-02, -5.434e-02, 4.715e-02, -1.536e-01, 4.927e-02, -3.681e-02, 7.079e-02, -1.142e-02, -3.161e-02, -1.611e-02, -8.424e-04, 1.777e-01, -1.375e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(4.822e-02, 1.972e-01, -2.072e-01, 8.236e-02, -4.222e-02, 6.231e-02, 7.981e-02, 7.520e-02, 5.033e-02, 8.877e-02, -1.293e-01, 4.052e-02, 2.407e-02, 5.084e-02, 1.961e-02, 4.175e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-7.954e-02, -8.460e-02, 3.216e-02, -3.021e-02, 9.531e-02, -3.089e-02, -5.460e-02, 1.044e-01, 1.036e-01, -9.797e-03, -7.739e-02, 1.448e-01, 1.177e-01, 1.229e-01, 5.613e-02, -8.367e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(-4.745e-02, 1.931e-01, -6.036e-02, 5.100e-02, 1.284e-01, 2.234e-02, 8.066e-02, -2.250e-02, 2.385e-01, 2.537e-01, 8.379e-02, -2.590e-01, -1.389e-01, 8.791e-02, -1.132e-02, -1.462e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(-2.753e-02, -4.549e-02, 1.745e-02, -3.752e-02, -4.715e-02, -1.122e-01, 9.924e-02, -2.636e-03, -1.303e-01, -4.942e-02, -1.624e-02, 1.524e-03, -1.970e-02, 7.950e-02, -1.029e-01, 3.062e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.917e-02, 1.254e-01, -3.613e-02, -8.393e-02, -1.183e-01, -1.696e-01, 3.612e-02, 1.868e-02, -6.345e-02, 9.892e-02, 2.758e-02, -1.100e-01, 4.705e-02, -8.066e-02, 9.143e-03, -1.071e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-4.259e-02, 1.249e-01, -1.323e-01, 8.250e-02, 7.925e-03, -4.248e-02, 1.298e-01, -7.558e-02, 5.550e-02, 1.517e-02, -1.149e-01, -1.093e-02, -1.394e-02, 4.971e-03, 1.677e-03, 1.529e-01), r2);\n\tr3 = MulAdd(s0_0_2, M4(-2.177e-01, -4.227e-02, -1.151e-02, 3.754e-02, -4.722e-03, -6.809e-02, 6.937e-02, -4.418e-02, 2.210e-01, -5.873e-02, 1.146e-01, -8.464e-02, -2.918e-02, 1.000e-01, 1.645e-02, -4.058e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(3.085e-03, -9.243e-02, -5.129e-02, -1.163e-02, -6.945e-03, 3.152e-01, -1.333e-01, 3.642e-03, 2.461e-02, 1.624e-01, 2.114e-02, 1.623e-02, 2.544e-02, -2.585e-01, -1.232e-01, 2.570e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(6.375e-02, -5.455e-02, 4.648e-02, -1.165e-02, 1.041e-02, 2.490e-02, -3.803e-02, -3.605e-02, 4.140e-02, 6.495e-03, -4.270e-02, 1.668e-02, -4.024e-02, -5.460e-02, -2.182e-01, 3.745e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(-2.113e-03, -4.341e-02, -5.457e-03, 6.608e-02, 4.745e-02, 9.593e-02, 1.401e-01, 5.698e-02, 4.701e-02, -3.114e-02, 1.568e-01, 3.517e-02, -8.344e-02, 6.549e-03, 3.978e-02, -1.072e-01), r6);\n\tr7 = MulAdd(s0_0_2, M4(-7.358e-02, 6.927e-04, 2.692e-02, -1.186e-02, -3.113e-02, 5.885e-02, -5.984e-02, -8.092e-03, 2.257e-01, -4.877e-02, 3.074e-02, 1.154e-01, 1.364e-01, 5.980e-02, 9.983e-03, 4.372e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-4.861e-02, 4.012e-02, -6.741e-02, -7.062e-02, -3.041e-02, -2.406e-02, -2.197e-03, -1.918e-01, 5.420e-02, 4.990e-02, -1.181e-01, -1.334e-02, -6.989e-02, -4.972e-02, 1.029e-02, 1.782e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-5.106e-02, -9.627e-02, -1.045e-02, -1.085e-01, -1.819e-02, -8.307e-02, 6.480e-03, 2.495e-02, 1.105e-01, -5.324e-03, 5.482e-02, 3.322e-02, -1.459e-01, -2.108e-01, -2.261e-02, -4.340e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.043e-02, -3.701e-02, -4.756e-02, -1.764e-01, 2.689e-02, -5.682e-02, -5.379e-02, -7.182e-02, -7.603e-02, -5.936e-02, 3.227e-02, -3.816e-01, -5.073e-02, 6.629e-02, -5.682e-03, 2.722e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(1.017e-01, 4.122e-02, -2.818e-02, 1.284e-01, -1.294e-01, -1.102e-03, -2.823e-02, 3.526e-02, -1.044e-01, -7.473e-02, 6.374e-02, 4.444e-02, 1.274e-01, -6.897e-02, 5.294e-02, -3.755e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(6.276e-02, 9.469e-02, -4.094e-02, -6.166e-03, 1.142e-02, -1.078e-01, -9.509e-02, 6.312e-03, 1.601e-01, -9.522e-02, -6.820e-02, 2.274e-03, 7.129e-02, 1.453e-01, -6.772e-02, 3.058e-03), r4);\n\tr5 = MulAdd(s0_1_0, M4(-9.564e-02, -8.699e-02, 7.920e-02, 1.520e-01, -2.765e-03, 2.231e-02, -1.355e-01, -1.120e-01, -5.135e-02, 1.117e-01, 1.944e-01, -8.873e-02, -1.607e-02, -9.513e-02, -2.240e-01, -1.236e-01), r5);\n\tr6 = MulAdd(s0_1_0, M4(-5.150e-02, 3.127e-01, -1.970e-02, -5.836e-02, -2.726e-02, -6.717e-02, -2.560e-02, 1.153e-02, 8.970e-02, 4.827e-02, -1.645e-02, 5.155e-02, -7.406e-02, -1.170e-02, 6.064e-02, 2.098e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(-1.681e-01, 3.154e-01, 1.337e-01, -1.000e-01, -1.901e-02, -4.065e-02, -1.601e-01, 1.935e-01, 2.382e-01, -2.249e-01, -3.778e-03, 2.715e-02, -1.868e-01, 3.696e-03, -2.165e-01, -5.970e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-1.822e-01, 5.861e-03, -9.930e-02, -6.188e-02, 7.534e-02, 1.099e-01, 8.514e-02, 2.156e-01, -9.148e-03, -3.038e-02, 6.115e-02, 1.732e-01, 5.831e-02, 1.155e-02, 6.611e-02, 3.320e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-2.481e-01, -2.838e-02, -5.116e-03, 2.089e-01, 7.131e-02, 2.104e-01, -4.528e-02, -2.280e-01, -4.283e-02, -4.725e-01, -5.803e-03, -1.538e-02, 7.075e-02, -1.910e-01, 3.206e-02, 6.956e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.197e-01, 1.647e-01, -3.129e-01, 4.701e-01, -6.201e-02, -2.457e-01, -2.664e-01, 1.898e-01, -9.447e-02, 7.057e-02, 5.698e-02, 2.047e-01, 4.174e-02, 1.059e-01, 1.768e-01, 8.506e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.542e-01, -2.549e-02, 1.159e-02, -1.399e-01, 2.092e-01, -7.064e-02, -5.696e-02, 4.772e-02, 4.731e-02, 1.157e-01, -3.510e-02, -2.290e-01, -3.597e-01, -6.143e-02, 4.854e-04, 6.141e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(-4.665e-02, 1.608e-01, 1.749e-01, 8.324e-02, 2.494e-01, -1.582e-02, 6.040e-02, -6.237e-02, -1.421e-01, -1.803e-01, 1.883e-01, 1.107e-02, -4.587e-02, -8.638e-02, -4.893e-02, -9.527e-03), r4);\n\tr5 = MulAdd(s0_1_1, M4(1.834e-01, 5.711e-02, -2.653e-01, 1.820e-01, 7.155e-02, -2.581e-01, 1.062e-01, -1.247e-01, 6.228e-03, 8.698e-02, 3.721e-02, 1.300e-03, 2.634e-01, -3.178e-03, 6.297e-02, 5.625e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(2.069e-01, -2.556e-02, 1.285e-01, 1.723e-01, -8.563e-02, -1.304e-01, -1.271e-01, -3.633e-01, 1.793e-01, -2.086e-01, 1.632e-02, 4.914e-02, -5.318e-02, -9.430e-02, -7.248e-02, -5.997e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(2.489e-01, -3.068e-03, 6.230e-03, 1.741e-01, -1.005e-01, -2.077e-01, 4.309e-02, -1.321e-01, 7.372e-02, 4.681e-01, 2.085e-01, 1.594e-01, 1.539e-01, -2.214e-01, 1.154e-01, -1.146e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(9.875e-02, -1.074e-01, 8.572e-02, 7.889e-02, 8.083e-02, 6.964e-02, 5.458e-02, -8.146e-03, -9.291e-02, 6.660e-02, 5.994e-02, -1.227e-02, -1.677e-02, 1.866e-02, 4.498e-02, -7.447e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.176e-01, 1.061e-01, -9.385e-02, -3.217e-02, -4.864e-02, 1.222e-01, 2.694e-02, -9.550e-02, -1.021e-01, 2.022e-01, -3.472e-02, 3.245e-02, -1.249e-01, -5.663e-02, -1.267e-02, -5.725e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.299e-01, -1.945e-01, -1.202e-01, -1.280e-02, -1.746e-02, -3.792e-02, 2.022e-02, 8.503e-02, 1.752e-01, -3.519e-02, 5.192e-02, 3.818e-01, 3.203e-02, 2.671e-02, -9.405e-03, -2.161e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.443e-01, -3.569e-02, 4.068e-03, 2.502e-02, 1.377e-01, 1.535e-01, 2.207e-02, 3.742e-02, 2.580e-02, -3.278e-02, -2.901e-02, 1.611e-02, -9.735e-02, -2.397e-02, 6.013e-02, -7.086e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(2.443e-02, -5.368e-02, -6.999e-02, -1.604e-02, 3.553e-02, 4.814e-02, 5.644e-02, 1.538e-02, -3.125e-02, -4.188e-02, -1.719e-02, -5.636e-03, 1.597e-02, 3.389e-03, -1.047e-01, -9.422e-03), r4);\n\tr5 = MulAdd(s0_1_2, M4(-5.495e-02, -6.852e-02, 1.402e-01, -4.427e-02, -1.754e-02, 4.530e-02, -2.161e-01, 7.482e-02, -1.925e-01, -2.010e-01, -2.314e-01, -1.591e-02, 2.146e-03, 7.827e-02, 7.499e-02, 8.999e-03), r5);\n\tr6 = MulAdd(s0_1_2, M4(4.740e-02, -1.309e-02, 1.195e-01, -1.362e-01, 6.944e-02, 4.904e-02, 7.351e-02, -9.012e-02, -8.988e-03, -5.200e-02, 4.168e-02, -8.178e-02, -5.762e-02, 6.758e-02, 1.102e-01, -1.313e-01), r6);\n\tr7 = MulAdd(s0_1_2, M4(-2.299e-02, -1.537e-01, -1.454e-02, -9.427e-02, 3.681e-02, 1.014e-01, 1.153e-02, 5.111e-02, -3.060e-01, -4.243e-02, 4.396e-02, 6.908e-03, -9.918e-02, -8.710e-02, -1.501e-02, -1.231e-01), r7);\n\tr0 = MulAdd(s0_2_0, M4(6.625e-02, 1.141e-01, -3.416e-03, 4.236e-02, 3.125e-02, -6.712e-02, -2.817e-02, -7.973e-03, 6.164e-02, 4.506e-02, 5.017e-02, -1.315e-01, -3.911e-02, 1.951e-02, -2.933e-02, -9.103e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(5.804e-02, 7.930e-02, 4.932e-02, 3.416e-02, -6.707e-02, -7.991e-02, 5.775e-03, 8.192e-02, 1.028e-01, 9.791e-02, -4.117e-02, -1.614e-02, 2.811e-04, 3.657e-02, 5.362e-03, -4.754e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(3.683e-02, -2.473e-03, -4.978e-02, 1.376e-01, 1.878e-02, -1.611e-02, -8.687e-02, -6.179e-03, -3.672e-02, -1.509e-02, 1.969e-02, 1.233e-01, -1.081e-01, 1.045e-01, 1.137e-02, 9.560e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(3.696e-03, -5.196e-03, 8.840e-02, -1.459e-02, 1.643e-03, -9.662e-03, 3.306e-02, -9.112e-03, 1.591e-01, -1.144e-02, -5.300e-02, 9.366e-02, 2.624e-01, 1.096e-01, 1.730e-02, 3.724e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(7.262e-02, -3.041e-02, 5.015e-02, -9.010e-03, 1.067e-02, 1.960e-02, -4.080e-02, 7.148e-03, -4.150e-02, 4.866e-01, -2.248e-01, 2.292e-03, -1.886e-03, 1.800e-03, 9.240e-02, -5.089e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(4.980e-02, 4.041e-02, -1.279e-02, -3.285e-02, 6.018e-02, -4.650e-02, -5.325e-02, 3.515e-02, 3.990e-02, 1.455e-02, 1.143e-01, -4.447e-02, 1.409e-01, -4.893e-02, -7.910e-03, -6.171e-04), r5);\n\tr6 = MulAdd(s0_2_0, M4(8.880e-02, -2.017e-01, 9.205e-03, -1.884e-01, 9.859e-02, -4.493e-02, 3.104e-02, 4.820e-02, 2.727e-02, 9.178e-02, 2.058e-02, -1.030e-01, 5.771e-02, 1.326e-01, 6.294e-03, 3.249e-01), r6);\n\tr7 = MulAdd(s0_2_0, M4(5.071e-02, -1.427e-01, 6.448e-02, 1.304e-01, -9.071e-02, 2.422e-01, -2.076e-01, 6.803e-03, 4.992e-02, -8.990e-02, 6.138e-02, -8.187e-02, -7.254e-02, 1.343e-01, -5.576e-02, -3.688e-01), r7);\n\tr0 = MulAdd(s0_2_1, M4(3.911e-02, -2.316e-02, 1.671e-02, -2.103e-02, -5.534e-04, -1.738e-02, 1.632e-03, -1.333e-01, -7.616e-02, -9.478e-02, -8.129e-02, 2.003e-02, -7.203e-04, -1.106e-01, 1.445e-02, 6.959e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-7.092e-03, 6.411e-02, -9.302e-03, -9.226e-03, -1.435e-02, 1.857e-01, 1.665e-02, -2.775e-03, -7.518e-02, -4.818e-02, 2.841e-02, 4.037e-03, -2.527e-02, 3.858e-01, -9.741e-02, 1.901e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.965e-02, -4.516e-02, 4.714e-02, -3.227e-01, -2.252e-02, -2.911e-02, 4.213e-02, 3.208e-02, -7.964e-02, -3.430e-02, -6.652e-02, -3.031e-02, 1.328e-02, -4.133e-02, 7.341e-02, -5.801e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(4.695e-02, -6.654e-03, 3.578e-02, -2.420e-03, 1.227e-01, -2.544e-02, 9.003e-03, 2.615e-02, -1.570e-01, -6.607e-02, 8.131e-02, 1.135e-01, -6.046e-02, 4.582e-02, -6.912e-02, 1.601e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(-6.672e-02, 1.844e-01, -1.414e-01, -1.185e-02, -5.294e-02, -1.411e-01, -4.097e-02, 7.734e-03, -2.584e-03, 1.743e-01, 3.612e-03, 6.418e-03, 2.484e-03, -2.467e-01, -4.728e-02, 1.622e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-1.605e-01, -1.134e-01, -3.449e-02, -1.467e-01, -1.253e-01, -2.879e-02, -3.583e-02, 3.573e-02, 1.057e-01, 6.612e-02, -1.620e-01, -3.013e-02, 2.498e-01, 1.548e-01, -2.463e-02, -1.124e-01), r5);\n\tr6 = MulAdd(s0_2_1, M4(-1.974e-02, 5.399e-02, 1.374e-02, -1.742e-01, -3.493e-02, -1.219e-02, 3.359e-02, 7.583e-03, 1.556e-01, -1.288e-01, -3.463e-03, -4.853e-02, -8.631e-02, -9.918e-02, 7.448e-02, -1.641e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(7.987e-02, 5.349e-02, -5.531e-02, -4.508e-02, 8.426e-02, -3.066e-01, 1.369e-01, -1.275e-01, 3.751e-01, -3.809e-02, 8.932e-04, 1.437e-01, -4.580e-01, -3.196e-01, -8.251e-02, -4.135e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(1.187e-02, 5.156e-02, -3.179e-02, 1.308e-01, -9.189e-03, -5.894e-05, 8.291e-04, 3.914e-02, -3.922e-02, -1.541e-01, 5.886e-03, 2.108e-02, 4.044e-02, 3.250e-03, -1.075e-03, 2.117e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-4.469e-03, -6.137e-02, 7.697e-02, 8.635e-03, -4.693e-02, 1.120e-01, 1.798e-02, -3.235e-02, 1.483e-01, -4.694e-03, -1.427e-02, 1.540e-02, -3.065e-02, 9.155e-02, 4.392e-02, -3.161e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(6.788e-03, -9.854e-02, -1.020e-01, -1.619e-01, 1.748e-02, 3.014e-02, 4.188e-02, -6.949e-02, 1.917e-01, -1.414e-01, 2.312e-01, -1.718e-01, 4.012e-03, 1.995e-02, 5.195e-02, 5.723e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(-2.247e-01, 8.249e-02, 5.809e-02, 7.700e-02, 1.402e-01, -1.804e-02, 4.237e-02, 1.086e-02, 2.315e-01, -8.668e-02, -4.037e-03, 2.563e-02, 1.333e-01, -4.784e-02, 4.582e-02, 3.037e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(-7.031e-02, -1.018e-01, 1.335e-01, -4.076e-04, 1.742e-02, -9.126e-02, 1.087e-01, 7.175e-04, -3.517e-02, -8.565e-02, -9.473e-02, 1.361e-02, -6.153e-02, -4.779e-02, -1.326e-02, 5.097e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(-9.683e-02, -4.402e-02, 7.248e-02, -2.780e-02, 2.684e-02, 1.054e-01, -3.866e-03, 1.440e-02, -6.472e-02, -7.958e-05, -7.104e-03, -1.755e-02, 9.975e-02, 4.356e-02, 1.125e-01, 2.654e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-3.223e-02, -1.389e-02, -4.168e-02, 1.892e-01, 3.977e-02, 1.417e-02, 4.301e-02, -2.134e-01, -4.680e-02, -1.299e-01, 3.926e-02, 7.555e-02, -1.123e-02, -4.553e-02, 1.561e-02, 2.424e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-6.088e-02, -1.068e-01, -3.757e-02, -1.570e-01, 4.022e-02, 3.229e-02, 6.205e-03, 1.156e-02, -2.619e-01, 5.697e-02, -3.612e-02, -4.189e-02, -4.943e-03, -1.642e-01, -1.682e-02, 2.664e-03), r7);\n\tr0 = MulAdd(s1_0_0, M4(-8.190e-03, -3.116e-02, -1.504e-02, -6.274e-02, 7.340e-02, -3.479e-02, 3.425e-03, -1.135e-01, -9.857e-03, -1.534e-02, 4.620e-03, -1.082e-01, -9.253e-02, -1.079e-01, 1.197e-02, -7.823e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-8.325e-02, 2.395e-02, -1.423e-02, -6.729e-02, -2.781e-02, -8.591e-02, 1.180e-02, -8.604e-02, -1.216e-03, 1.458e-01, 3.601e-02, -5.350e-02, 3.591e-02, -4.485e-02, -2.182e-02, 5.101e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(3.788e-02, 9.281e-03, -1.902e-02, 1.927e-01, -3.624e-03, 8.441e-03, 9.772e-02, -1.302e-01, 2.389e-02, 1.062e-01, -1.724e-01, 7.686e-02, -1.257e-01, 7.297e-02, 1.798e-01, 1.727e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(-8.027e-02, 1.008e-01, -1.815e-02, 7.974e-03, 1.001e-01, 6.144e-02, -1.173e-02, 3.945e-02, 1.395e-01, 3.219e-02, 5.518e-03, -7.976e-02, 1.236e-01, -1.906e-02, 2.921e-02, 1.751e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(1.379e-02, -2.180e-02, 2.864e-02, -8.765e-03, 6.153e-03, -3.852e-02, 9.928e-02, 7.042e-03, -3.497e-04, 1.129e-01, -2.928e-02, -1.647e-02, 2.137e-02, -3.101e-01, 5.748e-02, 2.702e-04), r4);\n\tr5 = MulAdd(s1_0_0, M4(-4.082e-02, 8.507e-02, 6.279e-02, -4.972e-02, -2.190e-02, -1.766e-02, -2.207e-01, 1.934e-02, 1.062e-01, 1.479e-01, 1.230e-02, -1.086e-02, 2.665e-02, 8.976e-02, 1.089e-01, -3.474e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-1.160e-02, 1.979e-01, -1.205e-02, -4.197e-02, 9.353e-02, 1.219e-01, 1.545e-02, 3.748e-02, 1.075e-01, -2.297e-01, 3.480e-02, 1.479e-01, 1.252e-01, -1.083e-01, 4.553e-02, -3.583e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-5.195e-02, 1.795e-01, -6.303e-02, -5.311e-02, 1.631e-01, 2.070e-01, 1.808e-01, 2.098e-02, 1.335e-01, -1.253e-02, -4.999e-02, -3.166e-02, -1.789e-01, -1.204e-01, -2.286e-02, 1.056e-01), r7);\n\tr0 = MulAdd(s1_0_1, M4(1.278e-01, 1.745e-02, 6.677e-02, 1.367e-02, -4.469e-02, 1.084e-01, -9.018e-02, -1.309e-01, -7.387e-02, -9.278e-02, 7.155e-02, 8.278e-02, -9.016e-03, -8.388e-02, 7.696e-02, -1.065e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.252e-01, -4.749e-02, -7.777e-03, -1.323e-02, -1.492e-02, 1.592e-02, -1.458e-02, -1.327e-01, 9.843e-02, -3.497e-02, -3.498e-02, 1.397e-01, -4.454e-02, 1.601e-01, -4.758e-02, 3.627e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-1.199e-01, -3.328e-02, -6.694e-02, 2.882e-02, 4.369e-02, 2.549e-01, 1.860e-01, 9.317e-02, -9.353e-02, -9.231e-02, -1.371e-01, -1.880e-02, 3.416e-02, -7.848e-02, 1.523e-01, -1.225e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(5.412e-02, -2.251e-02, -5.757e-02, -3.735e-02, 3.627e-02, -1.461e-02, 3.705e-02, 7.489e-03, 3.873e-02, -3.553e-02, -1.280e-02, 1.308e-01, -1.809e-02, 3.131e-02, -2.878e-02, 9.658e-05), r3);\n\tr4 = MulAdd(s1_0_1, M4(-1.577e-02, 1.310e-01, -8.541e-02, 4.480e-03, 1.530e-02, -4.853e-01, 3.681e-04, 1.691e-02, -4.714e-02, -1.147e-01, -7.865e-02, -8.424e-02, 7.716e-03, 6.179e-02, 9.520e-02, 1.934e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(3.235e-02, -1.665e-01, -9.498e-02, 3.117e-02, 5.393e-02, 2.367e-01, 1.873e-01, -2.213e-02, 4.262e-02, -1.294e-01, 1.934e-01, -3.641e-02, -2.360e-02, 1.083e-02, 6.353e-02, -1.858e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-1.743e-02, 1.041e-01, -6.192e-02, 9.098e-02, 3.655e-03, 8.329e-02, 6.942e-02, -4.177e-02, 7.615e-03, -7.037e-02, -8.747e-02, 7.916e-02, 8.518e-02, 1.072e-02, 3.361e-02, 7.310e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-2.150e-02, 7.013e-02, -1.171e-01, -7.903e-02, 1.143e-01, -1.256e-01, 9.576e-02, -1.196e-03, 1.042e-01, -7.504e-02, -6.195e-02, -1.912e-01, 3.100e-01, 1.386e-01, 8.451e-02, 1.637e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(-1.756e-03, 8.223e-02, 2.341e-02, -5.192e-02, -8.994e-02, -9.977e-02, 1.571e-02, 1.527e-01, -7.058e-02, -1.603e-01, -3.976e-02, 1.266e-01, -7.349e-02, -7.824e-02, 7.782e-03, -4.690e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(2.226e-02, -1.805e-02, 2.243e-02, -7.355e-02, 9.169e-02, -2.141e-01, 3.365e-02, -2.107e-02, -1.544e-02, 3.861e-02, 7.440e-02, 2.118e-02, -2.289e-02, -1.216e-01, 2.392e-02, 3.166e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(4.806e-02, -1.451e-02, -1.244e-01, 4.094e-02, 9.062e-02, -6.151e-02, -1.358e-01, 3.840e-01, 3.271e-02, -5.096e-02, -8.206e-02, -2.877e-02, 1.921e-03, -1.042e-01, 1.687e-02, -4.052e-01), r2);\n\tr3 = MulAdd(s1_0_2, M4(1.027e-01, -4.211e-02, -1.861e-02, 2.599e-02, 7.471e-02, 6.238e-02, 4.271e-02, 7.349e-02, 1.321e-02, 5.986e-02, 7.790e-02, -2.947e-01, -1.423e-01, -3.980e-02, 4.326e-02, -1.862e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-1.058e-03, 6.959e-02, -7.870e-02, -1.018e-02, 7.200e-03, -5.795e-02, 1.906e-02, -1.435e-02, 9.556e-03, 6.817e-02, 1.570e-01, 1.043e-02, 6.531e-03, 1.467e-01, -9.776e-02, 5.807e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(-2.742e-02, 8.369e-02, -1.244e-02, -1.076e-02, 1.529e-02, -9.039e-02, -2.651e-01, -1.666e-03, -7.710e-03, -2.413e-02, 9.946e-02, 4.515e-02, 6.552e-02, 1.175e-01, 2.615e-01, 4.783e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-3.754e-02, -2.645e-02, -2.505e-02, 5.283e-02, 1.771e-01, -6.298e-02, 1.843e-02, 3.417e-02, 2.982e-02, -8.604e-02, -4.077e-02, -2.785e-02, 3.404e-04, 5.114e-02, 2.016e-02, -1.343e-01), r6);\n\tr7 = MulAdd(s1_0_2, M4(1.091e-01, -8.760e-02, -3.821e-02, -3.327e-02, 7.187e-02, -6.998e-02, 6.117e-03, -3.472e-02, 1.826e-01, 2.198e-02, 1.352e-02, 9.712e-02, 1.422e-01, -1.064e-01, -2.041e-02, -2.332e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-1.411e-02, -2.947e-01, -1.003e-03, -2.791e-01, -4.379e-02, 2.030e-01, -3.723e-03, 9.202e-02, 4.622e-02, 5.011e-02, 1.233e-02, 5.792e-03, 8.600e-02, -3.306e-03, 5.053e-02, 2.645e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(8.151e-02, -1.707e-01, -9.677e-03, 3.301e-02, -5.086e-02, -1.011e-01, -1.421e-02, -2.892e-02, 7.456e-02, 1.910e-01, 1.832e-02, -5.982e-02, 7.540e-02, 1.284e-01, 2.096e-02, 1.172e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-2.361e-01, -3.975e-02, 2.056e-01, -7.953e-02, -1.117e-02, -6.758e-02, 1.070e-01, -3.613e-02, 1.403e-01, 2.316e-02, 6.713e-02, -3.145e-02, -8.792e-02, 7.016e-02, -7.753e-02, -2.055e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(-1.614e-01, -8.862e-02, 4.908e-02, -1.419e-02, 1.986e-01, -5.082e-02, -1.526e-02, 1.344e-03, -1.011e-01, 2.096e-02, -4.157e-02, -2.161e-01, -1.284e-01, 1.827e-02, -2.222e-02, 2.263e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(5.686e-03, -3.324e-01, -7.449e-02, 5.418e-03, 6.582e-02, 1.063e-01, -1.130e-01, 1.977e-02, -2.168e-02, 8.726e-02, 1.279e-01, -1.135e-02, -6.022e-03, 1.700e-04, -1.923e-02, -4.718e-03), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.399e-01, -1.993e-01, 1.779e-01, -2.014e-02, 1.994e-02, -1.467e-01, -1.394e-01, 2.417e-02, -3.527e-02, -1.061e-01, 9.241e-02, 6.981e-02, 4.184e-02, 2.075e-02, 6.759e-02, 9.117e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(1.411e-01, 1.808e-01, 1.043e-01, -8.719e-02, 1.770e-01, 8.341e-02, 1.061e-01, -2.529e-01, -1.780e-01, -1.572e-02, 1.068e-01, -1.417e-01, 1.379e-02, -2.751e-01, -7.836e-02, -1.949e-03), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.698e-02, 1.956e-01, -7.241e-02, -1.596e-01, -1.016e-02, 5.208e-01, 2.809e-01, -9.257e-02, 6.977e-02, -1.024e-01, 4.319e-02, 1.187e-01, -4.811e-01, -2.875e-01, -1.352e-01, 8.791e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(9.557e-02, -1.503e-02, 3.297e-02, -1.462e-01, -5.761e-02, 4.442e-02, -2.494e-02, -7.468e-02, 6.709e-02, 9.341e-02, 3.397e-02, -1.753e-01, -1.169e-01, 4.739e-02, 8.166e-02, 2.057e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(8.908e-03, 7.090e-01, 5.851e-02, -3.194e-03, -7.265e-03, 1.808e-02, 1.294e-01, -1.020e-01, 4.503e-02, -1.053e-01, -3.576e-01, -5.366e-02, -2.222e-03, 8.614e-02, -4.696e-02, 1.296e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.749e-01, -3.122e-01, -1.388e-02, -2.969e-01, -6.181e-01, 7.837e-02, 2.585e-02, -1.539e-02, -1.760e-01, 1.058e-01, -8.669e-03, -1.749e-01, 1.544e-01, -3.686e-02, 1.185e-01, 5.671e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(2.678e-02, 1.049e-01, 4.040e-02, -6.291e-02, 1.308e-02, -2.378e-02, 1.008e-01, -5.682e-02, 2.940e-01, -9.883e-02, 3.429e-01, 9.594e-01, 8.520e-02, 6.707e-02, -4.160e-02, -7.291e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(8.599e-02, 1.220e-01, 4.412e-02, -2.796e-02, -6.909e-02, -4.650e-01, 2.792e-01, -1.109e-03, -7.303e-03, -5.041e-02, -1.707e-01, 9.868e-02, 9.899e-02, -1.688e-01, 1.265e-01, 6.045e-03), r4);\n\tr5 = MulAdd(s1_1_1, M4(-4.678e-02, 3.084e-01, 7.358e-02, -8.662e-02, -1.935e-02, 8.432e-02, 2.881e-01, 1.100e-01, -4.266e-01, 2.494e-01, -3.189e-01, 1.473e-02, -2.380e-01, -1.101e-01, -3.038e-01, 9.405e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(-1.420e-02, -2.104e-01, -2.754e-02, -7.239e-02, 8.174e-02, -4.432e-01, -3.019e-02, -1.406e-02, 3.235e-02, 1.193e-01, -2.802e-01, -4.892e-02, 4.351e-02, 1.003e-01, 3.084e-02, 7.754e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(1.853e-01, -4.049e-01, -1.250e-02, 4.632e-02, -8.813e-01, -8.656e-01, -4.120e-01, -1.899e-01, -1.295e-01, -1.155e-01, -7.821e-02, -3.327e-02, 3.002e-02, 2.312e-01, 1.177e-01, 2.771e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-1.017e-01, 3.518e-02, -3.778e-02, 3.606e-02, 6.320e-04, 4.249e-03, -2.133e-02, 6.078e-03, -2.491e-01, -3.479e-02, 3.184e-02, -8.719e-02, 9.577e-02, 2.859e-02, 1.114e-01, -1.083e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(4.130e-02, -2.423e-01, 6.514e-03, 3.106e-02, 6.662e-02, 3.390e-01, 2.614e-02, 1.437e-02, 5.119e-02, -2.093e-01, 1.059e-01, 7.409e-02, -5.054e-03, -5.976e-02, -1.166e-02, 6.184e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(2.727e-03, -4.239e-02, 1.162e-01, 1.143e-01, 3.819e-01, 5.017e-03, 2.739e-01, -3.993e-01, -1.303e-01, 1.259e-01, 2.593e-01, 2.541e-01, -6.363e-02, -5.503e-02, 1.107e-01, 2.644e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(2.933e-03, -1.312e-02, 2.723e-02, -2.468e-02, -5.263e-01, -2.367e-02, 7.522e-02, 5.891e-03, 2.679e-01, -3.581e-02, -8.935e-02, -3.082e-01, -5.705e-02, -9.186e-03, -3.501e-02, 9.348e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(2.881e-02, -1.011e-01, -2.271e-01, 7.720e-03, -2.125e-02, 1.737e-01, -1.349e-01, 2.220e-02, 4.585e-02, 6.766e-02, -3.870e-02, -3.861e-02, -2.234e-02, -4.175e-02, 2.256e-02, -6.432e-03), r4);\n\tr5 = MulAdd(s1_1_2, M4(2.939e-02, -1.585e-02, 7.779e-02, 1.170e-01, -1.054e-01, -1.920e-01, 4.525e-03, 1.006e-01, -1.954e-03, -2.367e-02, 3.869e-02, -1.076e-01, -1.602e-02, -1.048e-01, 8.371e-02, -7.591e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-7.072e-02, 4.054e-03, 3.499e-02, -2.546e-02, 1.049e-01, -2.212e-01, 1.204e-01, 1.996e-01, -3.043e-02, 1.043e-01, 4.314e-02, -5.964e-02, -1.471e-01, 1.128e-01, 9.228e-03, 1.334e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(8.415e-02, 5.404e-02, -2.008e-02, 3.530e-02, -1.491e-01, 6.226e-02, 1.259e-01, 7.116e-02, -1.966e-01, 9.806e-02, -2.829e-02, -5.911e-03, -5.831e-03, 4.328e-02, -6.298e-02, 1.485e-01), r7);\n\tr0 = MulAdd(s1_2_0, M4(1.108e-01, -1.171e-01, -3.022e-02, -4.097e-03, -6.561e-02, 6.700e-02, -1.961e-02, 2.702e-02, -1.823e-02, 4.566e-03, 1.059e-02, 8.300e-03, 9.976e-02, -5.697e-02, -2.938e-02, -1.054e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(-3.886e-02, -2.529e-01, -1.962e-02, 8.119e-02, 5.953e-04, -4.688e-02, 1.633e-02, 1.244e-01, 1.637e-02, 2.424e-04, 4.043e-02, -3.930e-02, -8.228e-02, -7.312e-03, 1.125e-02, -6.613e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-5.349e-02, 6.347e-02, -1.289e-01, 1.203e-01, -6.158e-03, -1.070e-02, -8.168e-02, 2.549e-02, 5.900e-02, -3.058e-02, 1.248e-01, 1.311e-01, 1.066e-01, 9.496e-02, 1.557e-02, -3.834e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.728e-01, 5.675e-02, -5.088e-02, -2.560e-02, 6.392e-02, -1.839e-02, 1.886e-02, 1.901e-02, -5.195e-02, 3.168e-02, 6.887e-02, -1.261e-01, -9.228e-03, 4.186e-02, 1.352e-02, 1.355e-03), r3);\n\tr4 = MulAdd(s1_2_0, M4(-1.169e-01, 4.775e-01, 9.814e-02, -1.842e-02, -3.614e-03, -9.207e-02, -7.689e-02, 2.486e-03, 2.446e-03, 1.166e-01, 9.365e-02, -2.558e-02, 6.567e-02, -2.394e-01, -6.479e-02, -3.405e-03), r4);\n\tr5 = MulAdd(s1_2_0, M4(2.182e-01, -1.307e-01, -1.492e-01, -4.570e-02, 5.099e-03, 3.608e-02, 9.075e-02, -2.584e-02, -3.698e-02, 2.592e-02, 8.697e-02, 1.242e-02, -5.293e-02, 4.504e-03, 3.564e-02, -6.111e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-8.987e-03, 3.653e-01, -1.142e-01, 7.881e-02, 1.304e-01, 1.245e-01, 4.056e-02, -1.214e-01, -9.653e-03, -1.665e-03, -2.840e-02, -2.233e-02, -3.065e-02, -2.133e-02, -6.010e-02, -3.045e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(-1.079e-01, 2.273e-01, 1.071e-01, -2.043e-01, 9.018e-02, -2.559e-02, 7.765e-02, 1.282e-02, 8.445e-02, 3.272e-02, 1.483e-01, 2.021e-02, 9.074e-02, 1.142e-01, -4.468e-02, 7.109e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(1.100e-01, -9.407e-02, -9.458e-03, 3.969e-02, -5.413e-02, -2.750e-02, 1.911e-02, 1.718e-01, 9.641e-02, -3.358e-02, -1.286e-02, -8.659e-04, 2.835e-02, -1.647e-01, 1.757e-02, 2.298e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-7.169e-02, 1.518e-01, -1.322e-01, 1.596e-01, -7.046e-02, -1.316e-01, -7.983e-02, 7.655e-03, -2.017e-01, 2.202e-01, 3.461e-02, 1.206e-01, -8.480e-02, 2.949e-02, 6.519e-02, 3.088e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(3.664e-01, 2.533e-01, 1.442e-01, 1.428e-01, 1.332e-02, -4.758e-02, -1.179e-01, 1.823e-01, 1.250e-01, 1.459e-01, 1.391e-01, -6.040e-03, 8.986e-02, -1.284e-02, -8.281e-02, -3.010e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(4.701e-02, -5.261e-02, -9.393e-02, 3.343e-02, 1.503e-01, -2.292e-02, -3.578e-02, 9.653e-02, -1.964e-01, 1.475e-01, -1.213e-01, -9.775e-02, 6.312e-02, -2.450e-02, 5.582e-02, 8.378e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(3.724e-03, -5.581e-02, 7.049e-03, 3.136e-02, 6.953e-02, 2.744e-01, 2.416e-02, -1.040e-02, 2.606e-02, -1.726e-01, 2.781e-02, -2.270e-05, 1.365e-02, -1.547e-01, -2.918e-01, -1.118e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(4.601e-01, 1.246e-01, 4.722e-02, -4.440e-02, 2.291e-01, 9.880e-02, -3.888e-02, -2.107e-02, 1.957e-01, 2.438e-02, -4.326e-02, 8.325e-02, -2.457e-01, -7.202e-02, 4.951e-02, -1.229e-01), r5);\n\tr6 = MulAdd(s1_2_1, M4(2.799e-02, -3.093e-01, 3.145e-02, 3.518e-01, -2.643e-02, 2.504e-01, 4.166e-02, -1.412e-01, 3.309e-02, 1.821e-01, 4.172e-02, 2.252e-01, -1.059e-01, -7.864e-03, -3.914e-03, -2.102e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(-1.190e-01, -4.581e-02, -8.933e-02, 9.162e-03, 5.747e-02, 1.537e-01, -3.184e-02, 1.467e-01, 6.992e-02, 1.811e-01, 3.514e-02, 8.536e-02, -3.199e-01, -2.342e-01, -1.096e-01, -4.865e-01), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.434e-01, 4.325e-02, 3.324e-02, -4.864e-02, 7.294e-02, -2.106e-02, 6.617e-02, 5.846e-02, 1.695e-01, 5.695e-02, -3.113e-02, 4.477e-03, 1.603e-01, -1.418e-01, -1.209e-03, 1.317e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(-8.600e-02, -1.233e-01, -4.165e-03, 2.032e-02, 3.954e-02, 2.723e-01, -1.223e-01, -1.109e-02, -1.261e-02, -1.561e-01, 4.877e-02, -6.859e-02, 4.561e-03, -1.511e-01, 3.459e-02, -6.576e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-7.195e-02, 1.106e-01, 6.145e-02, 7.216e-03, 1.903e-01, 2.026e-02, -7.555e-02, -6.773e-02, 7.642e-02, 8.873e-02, -7.012e-02, -3.194e-02, -9.560e-02, -3.601e-02, 2.920e-02, 9.814e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-1.059e-02, -2.314e-01, -9.703e-03, 2.692e-02, 5.064e-02, 1.357e-01, -9.450e-02, 1.341e-02, -1.730e-01, -8.389e-02, 4.765e-02, 2.891e-02, -5.909e-01, -4.271e-02, 3.850e-02, -7.610e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-4.596e-02, -6.662e-02, -2.075e-01, -6.957e-03, -3.995e-02, -1.758e-01, -1.345e-02, 1.715e-02, -4.520e-02, -5.978e-02, -5.833e-02, -1.990e-03, 6.372e-02, 2.009e-02, 1.946e-01, 4.686e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(4.942e-02, 1.365e-01, -5.058e-02, 3.324e-03, 2.128e-02, 1.784e-02, -5.827e-02, -2.533e-02, 7.054e-02, -6.607e-03, -9.985e-02, 4.479e-02, 4.973e-02, -1.153e-03, 2.041e-02, 1.151e-01), r5);\n\tr6 = MulAdd(s1_2_2, M4(-3.766e-03, -4.860e-02, -3.830e-02, 1.165e-01, 1.015e-01, -1.010e-01, 5.241e-02, -1.254e-01, 1.401e-02, 6.006e-03, 2.055e-02, 1.190e-01, -5.490e-02, 3.074e-02, -9.132e-03, 7.776e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(1.203e-01, -1.383e-01, -1.505e-01, 4.010e-02, -4.260e-02, 2.827e-02, 1.680e-01, 1.147e-01, -2.485e-02, 1.962e-01, -7.478e-02, -1.454e-02, -3.416e-01, -2.729e-02, 4.275e-02, -8.590e-02), r7);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT4[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT5[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT6[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT7[gxy] = r7;\n}\n\n//!PASS 4\n//!DESC conv3 (32x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2, T3, T4, T5, T6, T7\n//!OUT T8, T9, T10, T11, T12, T13, T14, T15\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n#define L4(x, y) V4(O(T4, x, y))\n#define L5(x, y) V4(O(T5, x, y))\n#define L6(x, y) V4(O(T6, x, y))\n#define L7(x, y) V4(O(T7, x, y))\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.474e-01, 1.298e-01, -1.085e-01, -1.859e-01, 1.227e-02, -1.338e-01, 9.852e-02, -4.044e-01, -2.737e-02, 6.503e-02, -1.977e-01, 5.675e-02, 1.532e-01, 7.837e-02, -1.342e-01, -2.557e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(8.451e-02, 9.687e-02, 5.391e-02, 6.839e-02, -2.355e-01, -1.479e-01, 1.866e-02, -1.186e-01, -1.916e-01, 3.658e-02, -3.811e-03, 6.083e-02, 1.457e-01, -9.787e-02, -1.755e-02, 1.411e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(3.617e-02, -6.267e-01, 4.558e-02, -3.714e-01, -5.726e-02, -2.792e-02, 1.936e-01, 2.362e-01, 9.875e-02, 1.485e-01, -5.527e-03, -4.814e-01, -5.912e-02, -3.522e-01, -6.101e-02, -3.801e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(2.892e-01, 3.523e-02, 5.865e-03, 1.227e-01, 7.217e-02, 3.505e-02, -2.961e-01, -4.275e-01, -3.209e-02, -1.411e-01, -1.431e-01, -3.397e-01, 3.539e-01, 4.718e-02, -1.958e-01, -1.908e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(-1.706e-01, -3.306e-02, -1.182e-03, -3.325e-02, 1.820e-01, -1.548e-02, 1.091e-01, -2.536e-02, 1.911e-02, -9.744e-02, 2.774e-02, -1.226e-01, 1.391e-02, -1.024e-01, -6.014e-02, -9.770e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(4.805e-01, -1.987e-01, -1.055e-01, -2.459e-02, -8.016e-01, -2.942e-01, -1.670e-01, 1.615e-02, -8.062e-01, -3.232e-02, 7.241e-02, 1.798e-02, 2.734e-01, 9.614e-02, -1.067e-01, 4.664e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-9.297e-02, 8.584e-03, 1.282e-01, -6.171e-03, -5.090e-02, 1.533e-02, 2.520e-03, -3.581e-02, -3.004e-02, -6.065e-03, 2.988e-02, -3.361e-02, 3.945e-02, -2.269e-02, 2.246e-02, 6.265e-03), r6);\n\tr7 = MulAdd(s0_0_0, M4(4.640e-02, 3.459e-02, 2.504e-02, -1.479e-02, 3.306e-03, 1.076e-02, 1.306e-02, 2.541e-02, -3.628e-02, -2.026e-02, 1.390e-02, 1.751e-01, 3.512e-02, -2.018e-02, -9.690e-03, -1.342e-01), r7);\n\tr0 = MulAdd(s0_0_1, M4(1.864e-01, 1.697e-01, 1.712e-01, -4.903e-03, -1.239e-02, 1.158e-01, 2.400e-02, -5.213e-02, -7.973e-03, 1.320e-01, -1.361e-01, 5.297e-02, -6.338e-02, 1.276e-01, -7.762e-02, -3.379e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(1.773e-02, -8.849e-02, -2.239e-02, 1.762e-02, -3.698e-02, -7.385e-02, 5.700e-02, -8.614e-02, -1.638e-01, 3.312e-02, 8.962e-03, 1.707e-02, 1.154e-01, 2.613e-01, -1.605e-02, 2.603e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(6.092e-02, 5.533e-02, 4.544e-02, -8.800e-02, 3.534e-02, -1.101e-01, -1.944e-01, 1.094e-01, -7.996e-02, 6.459e-02, -1.365e-01, -1.604e-01, 7.959e-02, -2.465e-01, -1.154e-01, -1.083e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-3.401e-01, 9.734e-03, -1.241e-01, -9.727e-02, 1.860e-02, -2.065e-02, -2.285e-01, -1.348e-01, -6.241e-02, -4.482e-02, -1.992e-01, -2.428e-01, -1.298e-01, -2.923e-02, -1.670e-01, 2.954e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.842e-01, -1.025e-01, 5.699e-02, -1.071e-01, -5.554e-01, -2.370e-01, -2.687e-01, -2.190e-01, 1.320e-01, -4.573e-02, 1.856e-01, -4.996e-02, -1.324e-01, 2.738e-02, -1.548e-02, 1.343e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(7.544e-02, -6.649e-02, -3.866e-01, 9.034e-02, 3.174e-01, -4.275e-03, -2.662e-01, -3.090e-02, 7.751e-02, -9.729e-03, -1.781e-01, 3.877e-01, -1.032e+00, 1.840e-01, 4.220e-02, -3.552e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(4.728e-02, -3.508e-03, -1.828e-02, 7.528e-03, -4.297e-02, -2.838e-02, 1.083e-02, -4.676e-02, -5.961e-02, -3.460e-03, -7.547e-03, -7.994e-02, 3.414e-02, -3.095e-03, -4.807e-02, -2.001e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(2.123e-03, -2.261e-02, -1.303e-02, -4.455e-01, 3.133e-02, 4.364e-02, 4.409e-02, 1.897e-02, -3.873e-02, 5.523e-03, 3.345e-02, 1.625e-01, 2.266e-02, 3.179e-03, -1.072e-03, -2.791e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-2.612e-01, 3.365e-02, 1.899e-01, 3.295e-04, 3.043e-03, -4.645e-02, 1.668e-01, -3.598e-02, 3.489e-05, -2.535e-02, 1.054e-01, 3.300e-02, 1.483e-01, -6.029e-02, -3.991e-01, -9.493e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(-7.804e-02, 4.153e-02, -5.218e-03, -1.358e-02, -1.355e-02, -1.128e-01, -3.731e-03, 6.606e-02, 1.610e-01, 4.532e-02, -3.722e-02, 2.879e-02, 6.699e-02, 1.440e-02, 1.226e-03, 1.949e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-8.595e-02, -4.201e-02, -1.202e-02, -4.487e-02, -4.052e-03, -9.652e-03, -2.001e-02, -2.674e-01, -8.595e-02, -8.360e-02, 8.366e-02, 4.478e-03, 3.694e-02, 1.384e-01, 9.255e-02, 2.030e-01), r2);\n\tr3 = MulAdd(s0_0_2, M4(-4.135e-01, -1.676e-02, 4.572e-02, 3.051e-02, -1.379e-01, 1.338e-02, 9.556e-02, -2.089e-02, -5.120e-02, 7.290e-02, 9.707e-02, -7.974e-02, 8.599e-03, 9.111e-02, 3.652e-01, 2.697e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(-1.572e-01, -4.681e-02, -8.685e-02, -4.144e-02, -3.776e-02, 3.265e-02, -7.057e-02, 4.227e-02, -7.541e-02, 1.602e-02, 1.291e-01, 2.278e-02, 1.142e-01, -1.470e-01, -3.055e-03, -1.434e-01), r4);\n\tr5 = MulAdd(s0_0_2, M4(2.095e-02, 1.709e-01, 1.116e-01, -1.355e-01, 5.258e-02, 1.462e-02, 1.190e-01, -9.337e-02, 4.302e-01, 5.929e-02, 1.055e-02, -2.973e-03, -4.021e-01, -3.513e-02, -8.029e-02, -9.250e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(3.661e-02, -6.839e-02, 3.406e-02, -1.877e-03, 1.990e-02, 5.243e-02, 3.022e-02, -1.900e-02, 1.021e-02, -5.133e-03, -4.265e-02, 1.748e-02, 7.103e-02, -3.741e-02, 4.499e-02, 1.890e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(1.856e-02, -1.072e-02, 4.371e-03, 1.004e-01, 1.185e-02, 3.921e-03, -1.011e-03, 5.581e-02, -4.422e-02, -4.590e-02, -2.837e-02, -8.019e-02, 9.509e-02, -1.498e-02, -2.305e-03, 2.613e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-3.145e-01, -1.413e-01, 2.954e-01, -2.734e-01, 2.932e-02, 1.117e-01, -1.880e-01, -8.887e-01, 2.628e-01, 2.590e-02, 4.727e-02, -6.716e-02, 5.712e-02, -1.844e-02, -6.921e-02, 3.428e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(2.338e-01, 4.250e-01, -3.162e-02, 8.644e-03, -7.922e-02, -7.700e-03, 4.542e-02, 1.081e-01, -2.282e-02, -5.990e-02, 1.189e-01, 1.010e-02, -6.281e-02, -2.866e-01, 1.536e-02, -9.861e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(-2.376e-01, -9.490e-02, 1.074e-01, 5.465e-01, -7.327e-03, -1.543e-01, 1.167e-01, -2.723e-03, 3.082e-02, -3.448e-02, -1.692e-01, 1.425e-01, 8.234e-02, -2.493e-01, 7.012e-02, 2.972e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.193e-01, 3.169e-01, 1.947e-01, -8.275e-02, -3.820e-02, -1.145e-01, 6.629e-02, 7.079e-02, 1.674e-01, -1.279e-01, -1.078e-01, 1.761e-02, 2.337e-02, -1.099e-01, -1.226e-01, -4.779e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(5.389e-02, 1.100e-01, 5.430e-02, 1.171e-01, 3.920e-02, 1.019e-02, -1.019e-01, 1.640e-02, -4.258e-01, -2.022e-02, -4.166e-03, -8.543e-03, -1.814e-01, 9.047e-02, -9.820e-03, 6.706e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-2.701e-01, -2.702e-01, 1.393e-01, 1.615e-03, 6.152e-02, 6.409e-02, 1.495e-01, -4.386e-02, 1.140e-01, 3.445e-02, -1.293e-01, -1.980e-01, 6.589e-02, -1.831e-01, 1.727e-01, 9.937e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-2.797e-02, 1.189e-01, 1.000e-01, -8.228e-02, 7.498e-02, -1.960e-02, -1.873e-02, 6.954e-02, 1.041e-02, -3.934e-02, 8.746e-02, 3.746e-02, -2.530e-02, 6.146e-03, -1.558e-02, 3.085e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(8.559e-02, 2.716e-02, 2.059e-03, 1.349e-01, -9.206e-02, 6.561e-03, 2.799e-03, -5.355e-02, -2.546e-03, -1.077e-03, 7.343e-03, 8.674e-02, 2.654e-02, 5.755e-03, 6.568e-04, -1.140e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(-3.136e-01, -2.506e-02, -1.130e-01, 5.351e-02, -1.548e-01, 6.748e-02, 9.746e-02, -2.488e-02, -1.888e-01, -2.014e-01, -2.525e-01, 1.643e-01, -2.596e-02, -7.510e-02, -2.161e-01, 1.255e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.348e-01, -2.533e-01, 7.355e-02, 7.458e-02, 3.875e-02, -6.758e-02, 2.702e-02, -1.548e-01, -7.472e-03, -4.377e-02, -1.542e-02, -3.074e-01, -1.490e-01, -1.468e-01, 4.508e-03, -3.201e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-8.437e-02, -2.811e-02, -1.601e-01, 1.445e-02, -3.104e-02, -8.225e-04, -8.692e-02, 5.285e-02, 1.075e-01, -1.098e-01, -1.440e-01, -4.023e-02, -1.996e-02, -8.965e-02, 1.327e-01, 3.168e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.111e-04, -2.014e-01, 5.422e-02, -6.810e-01, 8.900e-03, 4.507e-02, 2.086e-01, -5.785e-02, -1.262e-02, 1.918e-01, 1.312e-01, -5.360e-01, 2.788e-01, -5.827e-02, 1.415e-01, -2.807e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(5.576e-02, -6.099e-02, 6.152e-02, -5.667e-02, 6.747e-03, -7.805e-03, 5.789e-02, 4.406e-04, -1.958e-02, -2.127e-02, -1.096e-01, -2.845e-02, 1.231e-01, -1.404e-01, -1.125e-01, -1.567e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(2.583e-02, 1.597e-01, 1.519e-01, 1.630e-02, 1.085e-01, -3.913e-02, -1.520e-01, 2.182e-01, -1.640e-02, -5.270e-02, -4.350e-02, -4.007e-01, -4.535e-01, 6.196e-02, -1.143e-01, -8.229e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(7.964e-03, 1.677e-02, 1.473e-01, 8.384e-02, -2.839e-02, -5.575e-02, -9.612e-03, -2.876e-02, -2.388e-01, 3.166e-02, 9.760e-02, 2.427e-01, 3.291e-02, 3.221e-02, -1.044e-01, 5.721e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(1.065e-01, 3.550e-02, 7.068e-03, 2.024e-02, -1.873e-01, 2.005e-02, 1.200e-02, -4.591e-03, 5.104e-02, 4.622e-02, 5.701e-02, 1.090e-01, -1.564e-01, -2.957e-03, -2.189e-02, -2.419e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(1.496e-01, 2.736e-01, -1.218e-03, 3.137e-02, -1.135e-03, -3.185e-02, -1.319e-01, 4.567e-02, 1.041e-01, 8.943e-02, 5.037e-02, 1.401e-01, -1.521e-01, 5.068e-02, 7.291e-02, -7.611e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.721e-02, 1.418e-01, -4.359e-04, 7.287e-02, -1.853e-03, 4.261e-02, -7.692e-03, -1.255e-01, -5.956e-03, 5.760e-02, 1.726e-02, -9.453e-02, -1.012e-01, -1.193e-01, 4.423e-02, 1.338e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.777e-02, 5.184e-03, -8.771e-02, -1.031e-01, -3.616e-02, -4.118e-02, 2.073e-01, -9.279e-02, -1.110e-01, -2.855e-02, 1.492e-01, 1.325e-01, -1.310e-01, 3.611e-02, -1.114e-01, 1.124e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-2.872e-02, -1.066e-02, 1.022e-01, 5.806e-02, -9.678e-02, 1.533e-01, 7.692e-02, 1.673e-01, 1.224e-01, 2.477e-01, -4.769e-02, 2.590e-01, 8.527e-02, -1.329e-01, -1.471e-01, 5.083e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(6.435e-02, 2.461e-02, -6.408e-02, 4.783e-03, 4.726e-02, -4.522e-02, -1.870e-01, -5.739e-02, 2.604e-01, -5.048e-02, 7.373e-02, -5.514e-02, 9.712e-03, 1.679e-02, -5.164e-02, 2.145e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(1.024e-01, 2.607e-01, -1.083e-01, 1.279e-01, -1.186e-01, 7.201e-02, 1.268e-01, 3.551e-01, -1.685e-01, -1.731e-01, -4.039e-02, -1.778e-01, -1.427e-01, 1.623e-01, 1.174e-01, 5.463e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-4.371e-02, 2.290e-02, -6.051e-02, 4.853e-02, 5.228e-02, -3.817e-03, -6.906e-04, 6.946e-03, 7.387e-02, -3.548e-02, 2.420e-02, -4.190e-02, 4.769e-02, -1.560e-03, 2.778e-02, 9.316e-03), r6);\n\tr7 = MulAdd(s0_1_2, M4(-3.234e-02, -1.452e-02, -2.395e-02, -2.398e-02, -5.109e-02, 6.561e-04, -1.825e-03, 6.040e-02, -4.782e-02, 6.975e-05, 9.325e-03, 6.562e-02, 1.129e-01, 3.315e-02, 1.903e-02, 8.951e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(1.577e-01, -1.241e-01, -1.474e-01, -2.875e-01, -1.882e-01, -1.709e-02, 2.187e-02, -2.637e-01, -8.452e-02, 1.047e-01, 1.604e-01, 3.595e-01, 4.373e-02, 7.037e-03, 1.764e-02, 6.768e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-4.948e-02, 1.876e-01, -4.073e-04, -5.454e-02, -8.516e-02, -1.070e-01, 3.138e-02, -6.701e-02, 8.492e-02, -7.578e-02, 2.481e-02, 9.071e-02, -9.078e-02, -1.334e-01, -3.315e-02, 6.117e-04), r1);\n\tr2 = MulAdd(s0_2_0, M4(-2.209e-01, -2.947e-02, 2.987e-01, -2.966e-02, -3.074e-01, 1.917e-02, -1.304e-01, 1.394e-02, -5.747e-02, 2.596e-02, -1.067e-01, -9.474e-03, 6.245e-02, -3.143e-03, -5.580e-01, -3.800e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(-8.730e-02, 2.788e-01, 1.391e-01, 3.359e-02, -5.035e-02, -1.021e-01, 1.254e-01, 2.922e-02, 4.002e-02, 5.817e-02, -1.379e-01, -4.224e-04, -5.387e-02, 4.133e-02, -2.333e-02, 1.212e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-1.911e-01, -6.389e-02, 2.408e-02, -8.405e-02, 1.414e-02, -3.028e-02, -4.046e-02, -4.035e-02, 1.255e-01, -6.041e-02, -2.127e-01, -4.335e-02, -4.476e-02, 1.469e-02, -2.715e-02, 1.353e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-9.596e-02, 1.045e-01, -4.166e-01, 2.908e-02, -3.192e-02, 2.152e-01, 1.402e-01, -5.871e-02, -7.445e-02, 8.558e-03, -5.366e-01, 8.949e-02, 1.638e-01, -4.619e-02, 1.162e-01, 9.851e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(4.315e-02, -9.158e-03, 1.803e-02, -1.916e-02, -5.928e-02, -3.132e-02, -2.398e-02, 1.263e-02, -1.543e-02, -3.151e-02, 5.544e-02, 3.425e-02, 5.266e-02, 1.806e-02, 3.036e-02, -3.017e-03), r6);\n\tr7 = MulAdd(s0_2_0, M4(2.191e-01, 1.947e-02, 5.439e-03, 1.074e-01, 5.545e-01, 1.387e-02, 2.346e-02, -4.471e-02, -4.651e-01, -3.478e-02, -5.519e-03, -7.206e-02, 2.343e-01, -1.689e-02, -9.514e-03, 3.935e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(1.386e-01, -2.393e-01, 3.080e-02, -1.137e-02, 2.256e-01, 8.243e-03, 1.492e-01, 5.850e-02, -2.336e-01, 1.900e-02, 4.857e-02, 1.913e-02, -1.235e-01, 4.799e-02, 2.607e-01, 6.502e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.628e-01, 1.139e-01, 6.804e-02, -1.442e-01, 5.818e-02, -1.411e-01, -3.119e-02, 1.112e-01, 1.720e-02, -6.720e-02, 1.123e-01, 4.283e-02, 6.276e-03, -6.398e-02, 5.962e-03, -1.170e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.758e-01, -3.690e-02, -2.787e-01, -1.175e-01, 4.369e-01, 1.642e-02, 6.648e-02, -1.593e-02, 1.528e-01, -1.212e-02, 2.873e-01, -1.167e-02, -8.523e-02, 2.552e-02, 3.090e-01, 3.567e-03), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.194e-01, -8.057e-02, -2.194e-01, 1.413e-02, 3.319e-01, 8.325e-02, 7.495e-02, 2.642e-01, -2.285e-01, -3.307e-02, 3.827e-02, -2.407e-02, -8.483e-02, -7.791e-02, 7.336e-02, 1.910e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(-3.823e-01, 2.722e-03, 8.596e-02, 1.363e-02, 1.051e-01, -2.893e-02, 1.835e-01, 1.041e-02, -8.385e-02, 2.784e-02, -2.733e-01, 2.257e-02, 1.153e-01, -5.560e-02, 2.058e-01, -5.020e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-4.929e-02, 2.454e-02, 3.407e-01, -9.343e-02, 1.577e-01, -2.626e-02, 8.531e-02, 8.408e-04, 3.598e-02, -2.247e-01, -8.090e-02, 1.116e-01, -5.012e-02, -9.377e-02, -1.987e-02, 1.701e-01), r5);\n\tr6 = MulAdd(s0_2_1, M4(9.532e-02, -8.837e-02, 8.395e-02, 7.568e-02, 3.327e-02, -4.457e-02, 1.257e-02, 1.671e-02, -4.969e-02, 3.682e-02, -9.962e-03, -8.573e-02, -1.020e-02, 8.433e-03, -8.331e-03, 4.075e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(3.158e-04, 2.233e-02, 3.137e-02, 1.074e-02, 2.394e-03, -4.028e-02, -1.469e-02, 4.238e-03, 3.513e-02, 6.492e-02, 3.349e-02, -5.069e-02, -4.773e-02, -1.148e-02, -1.075e-03, -7.981e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-3.553e-02, 1.304e-01, 1.180e-01, -3.709e-02, -1.058e-01, -9.765e-02, 1.131e-01, 1.566e-01, -5.665e-02, -5.765e-02, 9.438e-02, 1.640e-02, -6.778e-02, 1.992e-02, 1.957e-01, -1.440e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-6.559e-02, 6.427e-03, 2.064e-02, -7.771e-02, 1.290e-02, 1.269e-01, -2.032e-02, 4.554e-02, -1.942e-02, 6.278e-02, 3.281e-02, 3.507e-03, -7.424e-02, -2.525e-01, 3.707e-02, 3.026e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.320e-01, 4.311e-02, 5.420e-03, 1.979e-02, -6.133e-02, 2.326e-02, 1.644e-02, -8.151e-02, 6.233e-02, 2.819e-02, -7.261e-02, 1.236e-02, -6.325e-02, 2.670e-02, -1.326e-01, -3.054e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(7.920e-02, -1.657e-02, -3.499e-02, -1.213e-01, -1.838e-01, -7.033e-02, -3.786e-02, 4.654e-01, -1.063e-01, 4.805e-03, 1.569e-01, 1.995e-02, -3.784e-01, 2.754e-03, 1.439e-01, -1.778e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(7.697e-02, -2.199e-02, 2.249e-01, -5.061e-02, 2.500e-01, -3.735e-02, -2.929e-02, -4.890e-02, 2.852e-02, 7.082e-02, 1.154e-01, 5.168e-02, 6.364e-02, -1.309e-01, 7.194e-02, -1.350e-01), r4);\n\tr5 = MulAdd(s0_2_2, M4(-6.400e-02, -1.403e-01, 2.278e-02, 5.699e-02, -5.016e-02, -3.429e-02, 7.098e-02, 4.209e-02, 8.798e-02, -9.900e-02, 4.124e-02, 1.042e-02, 1.924e-01, 1.008e-01, 1.420e-01, 2.004e-01), r5);\n\tr6 = MulAdd(s0_2_2, M4(6.420e-02, -8.942e-03, 4.238e-02, -1.166e-02, -4.514e-02, 4.556e-02, -1.807e-02, -1.436e-02, 4.045e-02, -5.260e-02, 1.572e-02, 2.206e-02, -7.212e-03, -2.198e-02, 6.810e-02, 6.779e-03), r6);\n\tr7 = MulAdd(s0_2_2, M4(-3.135e-02, 1.397e-02, 1.524e-02, -2.572e-02, 1.355e-02, -1.052e-02, -8.815e-03, -5.099e-02, -3.013e-02, 1.651e-02, 1.354e-02, 5.184e-02, 2.321e-01, 2.106e-02, 2.048e-02, -7.182e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-1.446e-01, 1.225e-01, -5.417e-02, -3.288e-01, -1.514e-01, 1.385e-02, -7.164e-02, -5.120e-01, -2.151e-02, -3.706e-02, -7.961e-03, -1.961e-02, -5.449e-02, 5.409e-02, 1.823e-01, 1.156e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(7.333e-02, -5.961e-02, -2.112e-02, -6.769e-02, -6.679e-02, -2.396e-01, 2.430e-02, 9.855e-02, 8.434e-02, 2.798e-01, 3.466e-04, 3.940e-02, 7.763e-02, 7.325e-02, -7.489e-03, 4.473e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(8.225e-02, -6.149e-01, -1.930e-01, -5.329e-03, -1.910e-01, -2.065e-01, 1.492e-01, -3.634e-01, 1.618e-01, 5.899e-01, -1.191e-01, -1.142e+00, -6.787e-02, -8.577e-01, 2.334e-02, 5.479e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(1.072e-01, 1.150e-01, -1.243e-01, 7.163e-02, -2.101e-02, 8.071e-02, -7.651e-02, -6.937e-01, -4.742e-02, 1.125e-01, 1.704e-01, 6.315e-02, 4.792e-02, -1.104e-01, -6.017e-02, 2.696e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(1.543e-01, -1.177e-01, -1.541e-01, -1.369e-01, -1.159e-01, -9.062e-02, 1.016e-01, -8.568e-02, -2.288e-03, -1.525e-03, 2.051e-01, -2.342e-02, -8.229e-02, -2.611e-02, 1.387e-01, -2.199e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-3.540e-01, -3.323e-02, -7.824e-02, 7.982e-02, -6.683e-01, -2.165e-02, -9.101e-02, 2.114e-01, -2.809e-01, -1.533e-01, -2.855e-02, -3.552e-02, -6.249e-01, 2.209e-02, -4.207e-03, -8.359e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-5.775e-02, 7.059e-02, -1.393e-03, -3.689e-02, 2.392e-02, -7.825e-02, -3.992e-02, -3.244e-02, 1.086e-01, 1.706e-02, 1.014e-02, 1.593e-01, -1.044e-02, -1.886e-02, -4.090e-02, -5.077e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-1.990e-03, 3.812e-03, 4.845e-03, -1.422e-01, -7.365e-02, 1.341e-02, 2.708e-02, 3.322e-02, 5.606e-02, -1.767e-02, -7.250e-02, -1.080e-01, -1.523e-02, -9.573e-03, 1.462e-02, 8.889e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-1.238e-01, 1.568e-01, -1.503e-01, -9.400e-02, 5.631e-02, -2.202e-02, 6.586e-01, 3.112e-02, -2.409e-02, -1.691e-02, 7.566e-02, -6.774e-02, -9.777e-02, -6.023e-03, 3.928e-01, -1.409e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(7.712e-02, -7.186e-02, 1.919e-02, 1.430e-01, -5.891e-02, -2.297e-02, 3.290e-02, 2.861e-01, 1.294e-01, -1.714e-01, -2.199e-03, 1.273e-01, -1.086e-01, -3.184e-03, 6.962e-02, -1.021e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(6.773e-02, -3.854e-02, -1.200e-01, -7.712e-02, 7.480e-02, -8.836e-03, 1.250e-01, 2.930e-02, 9.618e-02, 8.653e-02, 3.162e-02, -2.189e-02, 6.208e-02, -1.507e-02, -1.614e-01, -1.691e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(-3.538e-02, -1.155e-01, -7.152e-02, -6.222e-02, -2.144e-01, -1.206e-03, -2.218e-02, -5.720e-01, 1.300e-02, 6.581e-02, 1.483e-01, 2.165e-01, 1.486e-01, 2.495e-02, -3.006e-01, 3.395e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(9.043e-02, -1.227e-01, -4.677e-02, -1.256e-01, -3.824e-01, -4.543e-02, 1.587e-01, -3.494e-02, 1.157e-01, -5.809e-02, -3.684e-01, -7.889e-02, 5.415e-02, -1.270e-01, 2.530e-02, -1.207e-01), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.110e+00, 3.822e-02, -5.795e-02, -3.493e-01, -5.636e-01, 8.146e-03, 5.870e-02, 3.246e-01, -1.069e-01, 1.296e-02, -2.201e-02, -3.564e-01, -4.443e-01, 8.940e-02, -2.952e-01, -2.497e-01), r5);\n\tr6 = MulAdd(s1_0_1, M4(-4.236e-02, -1.153e-02, -7.662e-02, -5.983e-03, 2.451e-02, -6.526e-02, 3.606e-02, -1.225e-03, 2.143e-01, -1.592e-01, 2.326e-01, -1.087e-02, 1.800e-02, -1.366e-02, 1.871e-01, 1.071e-01), r6);\n\tr7 = MulAdd(s1_0_1, M4(6.270e-02, 1.723e-02, 2.017e-02, 1.954e-01, -8.156e-03, 1.459e-02, 2.438e-02, 1.636e-01, 4.132e-02, -9.221e-02, -9.807e-02, -1.380e-01, 1.647e-02, 2.195e-02, -3.255e-02, -6.722e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(2.722e-02, 1.341e-01, 1.580e-01, -6.660e-02, -1.587e-01, -1.436e-02, -1.605e-02, 5.153e-02, -1.336e-01, -3.227e-02, -6.557e-02, 3.709e-02, 2.630e-02, 1.230e-01, 1.247e-01, 3.172e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(6.470e-02, -1.840e-04, -1.569e-02, 4.971e-02, 1.544e-02, -4.019e-02, -6.529e-03, 2.196e-01, -9.655e-02, -4.785e-03, 4.083e-03, -6.182e-02, 8.406e-02, -8.323e-02, 2.346e-02, -1.884e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-3.216e-02, -4.007e-02, -8.904e-02, 1.839e-01, -6.156e-02, 2.520e-03, 1.119e-01, 4.026e-02, 1.493e-01, 1.195e-02, 4.886e-02, 1.179e-01, 3.375e-02, 3.113e-02, -1.774e-01, -1.826e-01), r2);\n\tr3 = MulAdd(s1_0_2, M4(1.066e-01, -5.524e-02, 5.109e-02, -5.686e-01, -8.849e-02, 3.150e-02, 1.567e-01, 3.182e-01, 1.397e-01, 2.495e-02, -1.819e-02, 2.779e-01, -7.452e-02, 1.778e-02, 4.310e-02, 7.758e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-1.919e-01, -1.044e-01, -8.606e-02, -9.122e-02, 8.790e-02, -5.502e-02, 6.348e-02, -6.848e-02, -5.565e-02, -6.972e-02, 7.771e-03, -5.392e-02, 1.971e-01, 1.014e-01, -6.191e-02, 1.149e-01), r4);\n\tr5 = MulAdd(s1_0_2, M4(3.122e-01, 7.146e-02, 7.641e-02, -1.025e-01, 7.959e-02, -1.489e-01, -1.989e-01, -8.792e-02, -9.740e-02, -6.546e-02, 1.927e-01, -1.040e-01, 4.853e-01, 8.990e-03, 4.695e-03, 1.594e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-3.218e-02, 8.237e-02, -1.748e-02, 2.116e-03, 1.180e-02, -3.506e-02, 9.862e-02, -3.394e-02, 7.741e-02, 1.741e-02, 6.136e-03, 3.093e-02, 2.630e-02, -6.498e-02, 8.981e-02, -5.602e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-6.932e-03, 3.298e-03, -1.534e-02, 9.104e-03, -2.895e-02, -6.828e-03, 1.097e-02, 4.106e-02, 6.973e-02, 1.308e-02, -2.719e-02, 1.249e-01, 2.904e-02, 2.023e-02, 3.406e-02, -1.080e-01), r7);\n\tr0 = MulAdd(s1_1_0, M4(2.319e-01, -1.427e-01, 2.164e-01, 4.828e-03, 1.853e-01, -8.545e-02, -2.007e-01, 4.675e-02, 7.740e-02, 3.932e-02, -1.807e-02, 2.859e-02, 1.756e-01, -5.835e-02, -2.838e-02, 1.047e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.719e-01, 4.949e-02, -2.933e-02, -1.484e-01, -9.899e-02, -1.055e-01, 2.034e-02, -3.307e-02, 1.023e-01, -6.362e-03, 1.181e-01, 3.972e-02, 4.018e-02, 5.619e-02, 5.551e-03, 2.953e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(3.761e-01, -1.385e-01, 4.836e-02, -1.006e-01, -1.540e-01, 1.925e-01, 1.888e-02, -3.091e-02, -1.439e-01, -1.310e-01, 2.759e-01, -2.947e-01, 2.593e-01, 1.872e-02, 2.701e-01, 1.465e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(-3.053e-01, 9.513e-02, 2.825e-01, 5.621e-02, 4.795e-01, 4.853e-02, -4.496e-01, -1.160e+00, -2.140e-01, 8.537e-02, 5.587e-03, 1.700e-01, 2.463e-01, 2.515e-02, -1.890e-02, 3.952e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(3.321e-01, 4.329e-02, -1.463e-01, 1.673e-02, -9.246e-02, -6.821e-02, 1.064e-01, -6.476e-02, -2.405e-01, -1.775e-02, -1.164e-01, -2.975e-02, -1.646e-01, -9.722e-02, 9.394e-03, -1.062e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(9.216e-02, -4.449e-01, -4.487e-01, -8.843e-02, 8.694e-03, -3.027e-01, -2.516e-02, -6.869e-02, 2.918e-01, 9.046e-02, 1.298e-01, -1.615e-01, -7.237e-02, 1.991e-01, 1.281e-01, -9.338e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(5.387e-02, 7.123e-02, -4.917e-02, -2.624e-02, -5.074e-02, -4.621e-02, -3.100e-02, -4.082e-02, -1.217e-02, 4.162e-02, 1.924e-02, 5.754e-02, 1.179e-02, -7.757e-02, -1.184e-01, -5.490e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(-6.865e-02, 8.116e-03, -9.130e-03, -1.441e-02, -3.446e-02, 9.261e-03, 1.376e-02, 6.831e-02, -1.258e-01, 7.976e-02, -8.713e-02, -1.909e-01, 1.704e-01, -2.088e-02, 3.144e-02, 3.480e-03), r7);\n\tr0 = MulAdd(s1_1_1, M4(-1.167e-01, 7.418e-02, -3.248e-02, 7.476e-02, 1.097e-01, 1.544e-01, 1.074e-01, 5.725e-03, -2.056e-01, -7.074e-02, -1.870e-01, 1.192e-02, 4.320e-02, 1.378e-02, -2.939e-01, -1.476e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.248e-01, -5.046e-02, -4.572e-02, -1.610e-01, 6.287e-02, -5.770e-02, 3.674e-02, 2.814e-01, 2.693e-02, -6.570e-02, 1.321e-01, -2.616e-01, 7.745e-02, 4.961e-02, 5.013e-02, 9.582e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.533e-01, -9.654e-02, 1.216e-01, -2.855e-02, -2.046e-01, 5.235e-02, 1.658e-02, 4.307e-02, -1.090e-01, -2.914e-02, -1.733e-01, -5.862e-02, 2.843e-01, -5.060e-02, -4.106e-03, -7.125e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(4.697e-01, -7.614e-02, 1.615e-01, -7.399e-02, -4.743e-01, -1.021e-01, 3.129e-02, -1.348e-01, -2.189e-01, -1.292e-01, -1.156e-01, -2.948e-01, -6.364e-01, -5.693e-02, 1.036e-01, -4.912e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.180e-01, 1.337e-02, -2.683e-01, 2.484e-02, -1.749e-01, -3.217e-04, 8.642e-02, -6.474e-03, 5.913e-02, -5.268e-02, -3.466e-02, -2.168e-02, -1.786e-01, -1.978e-02, -2.705e-01, -1.460e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-2.165e-01, -2.423e-01, 4.117e-02, -6.272e-02, 2.378e-01, -2.443e-01, 6.332e-02, 1.297e-01, -1.922e-01, 1.444e-01, 3.352e-02, 1.421e-01, 2.140e-01, -2.958e-02, -1.776e-02, 1.275e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(-2.199e-01, -1.762e-01, 5.195e-02, -3.675e-02, 5.054e-03, 3.127e-02, -4.033e-02, -5.984e-02, 2.204e-02, 2.599e-01, -1.270e-01, 1.858e-01, 1.530e-01, 2.165e-01, 1.063e-01, -3.538e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(1.388e-01, -1.023e-01, -4.462e-02, 5.337e-02, 2.668e-02, 4.225e-02, 1.984e-02, -8.923e-02, 2.082e-01, -2.062e-01, 2.855e-01, 1.431e-01, -6.231e-02, 8.387e-02, 6.974e-03, 7.964e-03), r7);\n\tr0 = MulAdd(s1_1_2, M4(3.779e-02, -2.916e-02, 3.350e-02, -1.383e-01, -4.562e-02, -1.266e-02, -4.270e-02, 2.701e-02, 9.986e-02, -3.095e-02, 4.338e-02, -3.752e-03, -8.004e-02, 5.668e-03, -3.480e-02, 8.218e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-8.313e-02, -8.879e-02, -4.477e-02, -1.181e-01, -3.731e-02, -9.555e-02, -2.011e-02, 1.085e-01, -4.093e-02, 1.766e-02, 4.811e-02, -1.178e-01, -1.111e-01, -4.721e-02, -3.645e-02, -4.562e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.283e-01, -5.290e-02, 1.034e-01, 3.539e-02, -4.489e-02, -1.264e-02, -4.818e-02, 7.283e-02, -5.418e-03, -1.879e-02, -6.890e-02, -4.362e-02, 1.202e-01, -4.389e-02, -9.957e-02, 6.480e-03), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.275e-01, -6.761e-02, -9.832e-02, 3.519e-01, 5.404e-01, -9.032e-02, -5.139e-02, 4.406e-01, 1.028e-01, -1.048e-01, 1.828e-03, -3.161e-01, 1.377e-01, 1.278e-01, -8.727e-02, -1.259e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(-6.464e-02, -1.419e-01, -9.148e-03, -1.444e-01, -1.196e-01, -4.560e-02, -4.912e-02, -5.610e-02, -7.917e-02, 1.274e-02, 1.408e-01, -4.781e-03, 2.166e-01, 4.915e-02, 7.961e-02, 4.537e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(1.891e-01, 3.122e-02, 1.331e-02, 1.469e-01, -2.723e-01, 2.120e-02, 1.066e-01, -2.379e-02, -1.760e-02, -7.989e-03, -7.040e-02, 9.131e-02, -8.396e-02, 1.162e-02, 1.012e-01, 2.978e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(4.815e-02, 1.147e-01, -9.492e-02, 1.401e-02, 2.218e-02, -4.460e-02, 1.037e-01, 5.743e-03, -5.081e-02, -3.835e-02, -4.924e-02, -1.210e-02, 5.609e-02, -5.804e-02, 1.254e-01, 2.271e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(6.275e-02, 8.079e-03, -1.616e-02, 5.536e-02, 5.103e-02, -2.477e-02, -1.581e-02, -4.815e-02, 4.681e-03, -4.296e-02, -2.738e-02, 1.680e-02, -8.786e-04, -3.942e-02, -2.413e-02, -5.246e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-6.601e-02, 4.527e-02, -3.497e-02, -1.064e+00, -3.785e-01, -7.422e-02, -3.156e-01, -1.178e+00, -3.306e-01, -3.193e-02, 3.031e-02, 1.328e-01, -8.922e-03, -9.166e-02, -1.619e-01, -1.564e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(-1.905e-02, -9.001e-02, -1.748e-02, -9.905e-02, 3.418e-02, 1.508e-01, 4.680e-03, 1.315e-01, 5.858e-04, -3.614e-02, -1.089e-02, 9.659e-02, 2.636e-02, -7.445e-02, -7.936e-03, 1.995e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.687e-01, 2.616e-02, 8.020e-02, -3.748e-02, -1.067e-02, 7.341e-02, 1.997e-01, -1.173e-02, -5.905e-01, -3.197e-02, -9.548e-02, -7.445e-02, 1.690e-02, -5.632e-04, -3.961e-02, 7.416e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-2.006e-01, 5.020e-03, -5.334e-02, -3.399e-01, 6.542e-02, -1.576e-01, 8.036e-02, -9.581e-03, -3.236e-01, 8.891e-02, -2.670e-03, -2.207e-02, -2.407e-03, -6.621e-02, 1.221e-01, -8.552e-03), r3);\n\tr4 = MulAdd(s1_2_0, M4(-9.893e-02, -1.248e-01, -6.166e-03, -9.477e-02, 1.611e-01, 5.756e-02, 1.254e-01, 5.763e-02, -1.096e-01, -4.498e-02, -6.978e-02, -3.998e-02, 1.219e-01, 7.223e-02, -1.082e-01, 1.021e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(2.003e-01, 1.656e-01, -2.167e-01, -5.158e-02, 1.480e-01, 1.011e-01, 1.268e-01, -2.055e-01, 7.232e-02, 9.739e-02, 2.029e-01, 1.149e-02, 1.723e-01, 6.359e-02, -5.687e-02, -5.312e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-1.193e-02, 2.213e-02, -4.867e-02, -3.448e-03, 9.785e-03, -3.497e-02, -2.422e-03, 7.659e-03, 3.848e-02, -2.288e-02, -2.470e-02, -1.907e-02, 9.545e-02, -6.459e-02, 1.547e-02, -3.897e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(-4.213e-01, -1.335e-02, -9.051e-03, -7.782e-02, 1.960e-01, -8.513e-03, -9.283e-03, -6.371e-04, -1.056e+00, 4.006e-02, -2.129e-02, -8.261e-02, -1.002e-01, -3.216e-02, -6.140e-03, 5.913e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(6.074e-02, 9.638e-02, -6.287e-02, -2.182e-01, -1.628e-01, 5.110e-02, -6.498e-02, -3.565e-02, 1.195e-01, -9.610e-02, 5.020e-02, 7.863e-03, -6.637e-02, -9.497e-02, -1.910e-01, 1.808e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.381e-02, 1.707e-02, 4.409e-02, 4.998e-02, 6.542e-02, 1.284e-01, 4.483e-02, 2.138e-01, 6.084e-02, 2.216e-01, 9.161e-03, 2.909e-02, -2.129e-01, 1.228e-01, 3.426e-02, 4.063e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.944e-01, -6.285e-03, 1.977e-01, -7.654e-02, -4.872e-01, 2.451e-02, -2.137e-03, 7.840e-02, -1.887e-02, 3.460e-02, 3.215e-02, -7.721e-03, -1.515e-01, -2.100e-02, 5.747e-02, -6.549e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(1.598e-01, -3.083e-02, -1.782e-01, 6.574e-02, 3.955e-02, -9.604e-02, 1.671e-01, 3.145e-01, -1.110e-01, 2.408e-02, 4.668e-02, -2.202e-01, 1.041e-01, 1.810e-01, 1.643e-01, 2.293e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(-1.326e-01, -1.564e-01, 1.109e-01, -1.042e-01, 1.475e-02, -8.286e-02, 3.616e-02, -3.923e-02, 1.338e-01, -2.766e-02, 1.086e-01, -1.820e-02, -1.377e-01, 8.858e-02, 9.308e-02, 1.076e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(1.729e-02, 4.700e-02, -8.882e-02, -1.510e-01, 7.909e-02, -3.025e-02, -1.373e-01, -8.175e-02, 2.589e-01, 1.039e-02, -3.613e-02, 2.004e-01, -1.752e-02, -2.781e-01, 5.583e-02, 9.096e-03), r5);\n\tr6 = MulAdd(s1_2_1, M4(4.395e-02, 5.914e-02, -8.088e-02, 1.028e-02, 8.279e-02, 6.970e-02, -4.179e-02, -1.015e-02, 4.422e-02, -7.691e-02, -1.372e-02, 2.086e-03, 1.214e-01, -1.208e-02, 5.836e-02, -1.559e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(5.437e-02, 4.839e-02, 7.457e-03, -1.241e-01, 4.559e-04, 6.280e-02, 3.284e-02, 1.212e-01, 1.060e-01, -6.945e-02, -2.935e-02, 2.933e-02, 2.899e-02, 2.473e-02, 1.339e-02, -1.251e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.592e-02, 5.233e-02, -5.365e-02, -3.133e-03, 1.738e-02, -9.718e-02, -1.270e-01, 2.578e-02, -1.185e-01, -4.329e-02, 9.282e-02, 6.089e-02, 1.639e-01, -4.413e-02, 5.166e-02, -5.751e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-8.596e-02, -6.292e-02, 2.290e-02, 2.049e-03, -4.149e-02, 2.572e-02, 8.319e-03, 7.175e-02, -2.675e-02, -2.458e-02, 8.651e-03, -9.415e-02, 2.734e-02, -5.862e-02, 2.481e-02, -3.534e-04), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.838e-01, 2.723e-02, -1.634e-01, -6.779e-02, 3.119e-02, 3.221e-02, 8.163e-02, -7.044e-03, -9.913e-02, -1.738e-03, -8.932e-02, 5.322e-02, -6.054e-02, -6.449e-02, 7.458e-02, -1.086e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(-6.476e-02, -1.420e-01, -1.033e-01, -2.151e-01, 1.261e-01, 1.229e-01, -7.398e-02, 1.517e-01, -8.528e-02, -9.583e-02, 1.483e-02, 5.880e-02, 4.248e-01, -5.499e-02, -2.685e-02, 8.394e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-1.935e-01, 4.830e-02, -7.200e-02, 4.724e-02, -3.084e-01, 1.018e-01, 5.489e-03, 8.184e-02, 5.163e-02, 5.264e-02, 1.125e-01, 1.818e-02, -1.294e-01, -1.138e-01, -3.432e-02, -1.233e-01), r4);\n\tr5 = MulAdd(s1_2_2, M4(5.456e-02, -2.215e-02, 6.336e-02, -1.187e-02, -5.341e-02, -3.656e-01, 6.674e-02, 1.544e-01, 4.654e-02, 8.630e-02, -1.102e-01, -4.425e-02, 2.593e-02, 1.533e-02, 6.175e-02, -2.598e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(5.869e-03, -1.237e-02, -1.216e-02, -2.753e-03, 4.715e-02, 3.139e-02, -1.823e-02, -9.315e-03, -2.081e-02, -8.910e-02, 9.347e-02, -1.702e-03, 6.765e-02, 6.657e-02, -4.684e-02, -1.067e-03), r6);\n\tr7 = MulAdd(s1_2_2, M4(-4.600e-02, 9.335e-03, 1.352e-02, 9.983e-02, 6.416e-02, 2.419e-02, 6.022e-03, 6.259e-02, 1.863e-02, -4.674e-02, -1.686e-02, -4.228e-02, -5.498e-02, 5.071e-02, 3.033e-02, -7.064e-02), r7);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(2.697e-02, 4.245e-03, 1.144e-01, -1.910e-01, 1.382e-01, -1.582e-01, 3.991e-02, -5.288e-02, -2.221e-01, -3.129e-01, -3.443e-02, 1.324e-01, 1.181e-01, -5.680e-02, -8.437e-02, 2.448e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-9.389e-02, -1.992e-01, -1.525e-02, -7.652e-02, 6.849e-02, -5.468e-02, 4.231e-02, -1.173e-01, -4.680e-02, 3.522e-03, -7.983e-02, -2.954e-02, 6.879e-02, 6.306e-02, -1.986e-02, 9.934e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(2.184e-01, 1.048e-01, 2.535e-01, -3.667e-01, -5.035e-02, -9.665e-01, 4.715e-03, 4.505e-01, -1.012e-01, -1.238e-01, -9.832e-02, -2.880e-01, -3.971e-02, 4.767e-01, 1.355e-02, -8.806e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-1.261e-01, -5.954e-02, -4.272e-02, -7.985e-02, -1.083e-01, -2.612e-02, 1.513e-01, -3.409e-01, 1.737e-01, -1.450e-01, -4.989e-02, 8.742e-02, 1.692e-01, 8.944e-03, 4.705e-02, 2.882e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(8.240e-02, -7.365e-02, 1.162e-01, -4.555e-02, 1.251e-02, -6.112e-02, 3.645e-02, -4.171e-02, 8.290e-02, 8.829e-03, 3.207e-02, 3.055e-02, 6.303e-02, -9.639e-02, 5.086e-02, -9.603e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-3.304e-01, -2.366e-01, 1.896e-01, 9.380e-03, -9.531e-01, 2.410e-01, 1.133e-02, -6.271e-02, 1.344e-01, 9.074e-02, -4.510e-01, 7.755e-02, 2.868e-01, -5.852e-01, 1.391e-01, -6.469e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(4.700e-02, 2.245e-02, 4.638e-02, -6.200e-04, -2.386e-02, 7.658e-03, 7.342e-03, 6.954e-02, 9.044e-02, 6.648e-02, 2.716e-02, -5.573e-03, 2.544e-02, 1.485e-02, 7.188e-02, -1.196e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(-3.693e-02, -6.091e-03, -1.709e-02, -5.169e-02, -5.438e-02, 1.108e-02, 3.233e-03, 8.087e-03, -5.413e-02, -3.342e-02, -4.156e-02, 5.851e-02, 8.111e-02, -1.113e-02, -6.950e-03, 2.953e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(-1.432e-01, -1.745e-01, -3.563e-01, -1.769e-01, 9.471e-02, -1.655e-01, -5.313e-01, 5.810e-02, 8.916e-02, -1.929e-01, -1.487e+00, -6.000e-02, 1.462e-01, 5.872e-02, -6.769e-01, -8.667e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.497e-01, -1.187e-01, -2.616e-02, -1.267e-01, -1.980e-01, 9.967e-02, 2.904e-02, -8.764e-02, -2.097e-01, -3.367e-01, -2.556e-02, 7.251e-02, 1.198e-01, 7.746e-02, -2.185e-02, 2.845e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.476e-01, 6.086e-02, -8.065e-02, 1.405e-01, 1.268e-01, 2.654e-02, 5.845e-03, -8.481e-02, -1.899e-01, -8.946e-02, 9.407e-02, 1.577e-02, 2.772e-02, 4.878e-02, -8.207e-02, 2.054e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.999e-01, -6.499e-02, -4.478e-01, 8.967e-02, 1.509e-01, 4.402e-02, 1.043e-01, -3.421e-01, -3.287e-02, -1.280e-01, -1.177e-01, 2.844e-01, -1.123e-01, -6.774e-02, -3.353e-03, 2.725e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(-9.727e-02, -9.025e-02, 6.311e-02, -9.385e-02, 3.987e-02, -7.668e-02, 4.031e-02, -7.669e-02, -1.506e-01, 4.724e-02, -5.483e-02, 4.134e-02, -9.211e-02, -3.461e-02, -1.377e-02, -3.540e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-4.602e-02, -1.414e+00, 5.245e-01, 4.473e-01, 2.436e-01, -1.020e-01, 7.770e-02, 9.786e-02, 1.186e-01, 6.344e-02, -1.276e-01, -1.580e-01, -1.474e-01, -2.147e-01, 2.320e-01, -1.919e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(1.773e-01, -2.941e-02, 5.671e-02, 8.456e-03, -4.659e-02, 6.330e-02, 9.304e-02, 6.117e-03, 1.059e-01, 1.453e-02, -3.549e-02, 4.864e-03, 4.874e-02, -1.522e-02, -7.389e-03, 9.563e-03), r6);\n\tr7 = MulAdd(s0_0_1, M4(-4.608e-02, -2.488e-02, -2.961e-02, -2.830e-01, 1.150e-03, 2.665e-02, 1.026e-02, 1.569e-01, -8.424e-02, -1.650e-04, -1.630e-02, -1.654e-01, -4.145e-03, -2.304e-02, -2.067e-02, 1.196e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-1.663e-01, 1.935e-01, -5.648e-02, 5.810e-02, -4.894e-02, 1.815e-01, -9.492e-02, 1.888e-02, 9.368e-03, 1.849e-01, 7.255e-02, -4.282e-02, 1.461e-01, 1.857e-01, -1.530e-01, -3.427e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-3.925e-02, -6.101e-02, 3.658e-02, -1.714e-01, -6.347e-02, 5.367e-02, 7.962e-03, -8.674e-02, -7.138e-03, 5.887e-02, -1.777e-03, 9.826e-02, 1.386e-03, -9.592e-02, -1.043e-02, 2.234e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-3.770e-02, 4.884e-03, -1.640e-02, 1.980e-01, -2.236e-02, -1.825e-02, -3.516e-02, -2.417e-02, 7.479e-03, -8.879e-02, -1.856e-02, 1.333e-01, -1.157e-01, 1.515e-02, 7.456e-02, -2.604e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-1.725e-01, 8.097e-02, 5.996e-02, -3.185e-01, -8.565e-02, -4.172e-02, 3.482e-02, -8.083e-01, 1.745e-02, 8.606e-02, -4.409e-02, 1.833e-01, -1.026e-01, -2.229e-02, 1.906e-01, 1.455e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(-2.416e-01, 6.664e-02, 4.989e-02, 6.934e-02, 3.319e-02, 3.159e-02, 5.197e-04, 4.121e-02, -2.314e-01, -7.239e-02, 7.478e-02, -6.505e-02, -6.489e-02, -1.499e-02, -1.445e-01, -1.427e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(3.412e-01, -5.136e-01, 2.129e-01, -9.452e-02, -1.257e-01, -1.333e-01, 1.628e-01, -6.362e-02, 4.004e-01, 2.048e-02, -2.219e-01, -1.272e-01, -1.266e-01, 1.207e-01, 1.305e-01, -1.248e-03), r5);\n\tr6 = MulAdd(s0_0_2, M4(3.526e-02, -7.056e-02, 2.944e-02, -4.485e-02, 1.771e-02, -3.405e-02, 2.501e-02, 2.194e-02, 6.726e-02, -1.835e-05, -1.681e-02, 3.053e-05, 2.769e-02, -5.290e-02, 8.267e-02, -1.012e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-2.346e-02, 2.446e-02, 3.459e-02, 8.957e-02, 3.631e-02, -1.025e-02, -3.974e-03, -2.057e-01, -9.911e-03, 2.481e-03, 5.682e-04, 8.972e-02, 4.135e-03, -2.078e-02, -1.279e-03, 4.404e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-5.324e-01, 1.448e-01, 1.846e-02, 4.528e-01, -9.730e-02, 1.334e-01, -1.808e-01, -1.396e+00, -3.519e-01, -3.110e-02, -3.743e-01, -7.446e-01, 1.255e-01, -6.487e-02, 4.899e-02, -7.119e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-9.552e-02, -3.009e-02, -1.494e-02, -1.264e-01, -6.121e-01, -3.285e-01, 5.456e-03, -8.667e-02, -1.637e-01, -1.811e-01, -7.459e-02, 2.964e-02, -2.927e-02, 7.189e-02, -3.355e-02, 6.146e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.786e-01, 4.004e-05, -2.201e-01, 1.347e-01, -9.300e-02, 1.886e-01, -5.237e-02, -1.388e-01, -2.529e-01, 5.265e-02, 1.332e-01, -3.669e-02, 4.479e-02, -3.063e-02, -1.177e-01, 1.577e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(1.960e-02, -1.386e-01, -2.176e-01, -1.873e-01, -9.248e-02, -3.076e-01, -1.823e-01, -2.253e-01, -6.264e-02, -1.346e-01, -5.184e-01, 1.744e-01, 6.487e-02, 8.969e-02, 2.170e-01, 2.590e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(-2.333e-02, -3.215e-04, 1.138e-01, 1.340e-02, 1.200e-01, -9.553e-02, -6.764e-02, -6.782e-02, 1.516e-01, 1.448e-01, 1.010e-01, 1.650e-01, -1.946e-01, 2.021e-01, 4.979e-02, 2.273e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(7.409e-03, -1.443e+00, -1.379e-01, 2.573e-02, 2.143e-01, 3.631e-01, 1.948e-01, 7.425e-02, -5.281e-02, -4.623e-02, 2.242e-01, 2.360e-02, 6.642e-02, -4.031e-01, -2.051e-02, 2.189e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(8.930e-02, 4.987e-03, 3.443e-02, -1.883e-02, -1.471e-02, -4.180e-02, -8.377e-02, 1.567e-01, 2.843e-02, 1.182e-01, 2.019e-02, -1.760e-02, 4.467e-02, 2.422e-02, 9.748e-02, 1.450e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(1.071e-01, -2.389e-03, -5.130e-03, 7.943e-02, -8.839e-02, -4.797e-02, -3.813e-02, -3.010e-01, -6.231e-02, -2.509e-02, -4.433e-02, 4.809e-02, -2.144e-02, -8.993e-03, -2.043e-02, 3.470e-03), r7);\n\tr0 = MulAdd(s0_1_1, M4(-1.386e-01, -3.559e-02, 3.628e-01, -8.241e-02, 5.255e-02, -4.710e-01, 6.736e-01, 2.417e-02, 1.864e-01, -1.542e-01, 3.146e-02, -5.739e-02, -8.290e-02, -1.057e-01, -9.117e-02, -3.106e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.663e-01, -1.491e-01, 1.597e-01, -3.934e-01, -4.628e-01, 2.041e-01, 7.690e-02, -8.165e-02, -2.571e-01, -3.073e-01, 3.503e-02, -1.408e-01, 1.597e-01, 1.621e-01, 4.472e-02, -1.825e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(3.195e-01, 2.815e-02, -3.560e-01, -7.961e-02, -5.540e-03, -1.075e-02, -8.499e-02, 3.997e-03, -5.914e-01, -1.909e-02, -6.139e-02, 3.792e-02, 3.699e-01, 9.283e-02, 2.108e-01, 1.656e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(4.404e-01, 2.590e-02, 3.322e-01, 2.085e-01, 3.188e-01, 5.558e-02, -5.098e-02, -3.672e-01, 2.895e-01, -2.406e-01, -6.756e-02, -2.979e-01, -3.605e-01, 5.262e-02, -1.437e-01, 5.156e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-6.908e-02, -1.355e-02, 1.384e-02, -9.644e-03, -9.291e-01, -1.068e-01, 1.912e-02, -8.675e-02, -1.663e-01, -5.438e-02, 2.673e-01, -4.800e-02, -2.734e-01, -2.020e-02, -1.226e-02, -1.568e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(2.642e-01, 2.515e-01, -3.306e-01, -1.873e-02, -3.372e-01, -1.344e-01, 1.251e-01, -1.625e-01, -3.626e-02, 2.093e-01, -2.698e-01, -3.754e-01, -9.635e-02, -6.386e-01, 9.326e-02, -1.859e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(5.596e-03, 1.547e-01, 1.939e-01, -4.154e-03, 2.052e-01, -4.519e-02, -5.858e-02, -5.971e-02, 1.731e-01, 2.270e-01, -6.018e-02, -2.366e-02, 4.518e-02, -5.708e-02, -6.140e-03, 8.173e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(1.225e-01, 1.772e-01, 1.165e-01, 1.875e-01, 2.832e-02, 9.953e-02, 9.628e-02, 5.882e-01, -8.966e-03, 9.985e-02, 4.181e-02, 3.324e-02, -1.758e-03, -1.408e-03, -3.002e-03, 9.308e-03), r7);\n\tr0 = MulAdd(s0_1_2, M4(3.725e-01, 6.378e-02, 3.318e-01, 2.173e-02, 1.141e-02, -2.212e-01, -1.354e-01, -8.393e-03, -6.507e-02, -8.895e-02, -1.106e-01, 1.346e-01, 1.736e-01, 7.825e-02, 8.774e-02, 6.366e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(4.474e-02, 1.527e-01, -1.380e-03, 1.051e-01, 8.799e-02, 1.331e-02, 1.791e-02, -1.339e-01, 2.190e-02, -7.293e-02, -3.579e-03, 8.450e-03, 2.202e-02, 5.486e-02, 1.639e-02, 1.022e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.512e-01, -4.372e-02, 3.325e-01, 1.081e-01, 1.067e-01, 7.995e-04, -9.410e-03, 5.678e-02, -3.772e-02, 3.833e-02, 1.558e-01, 1.359e-02, -1.115e-01, 3.855e-02, -1.279e-02, 1.384e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-6.525e-01, 1.589e-01, -1.303e-01, -1.978e-01, 1.607e-01, 4.088e-02, 1.040e-01, -1.749e-01, -2.304e-01, 6.943e-02, 9.553e-02, 1.320e-01, -5.311e-01, -2.786e-02, 9.360e-02, 3.291e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(-2.187e-01, 1.865e-02, -3.977e-01, 1.058e-02, 8.015e-02, -1.443e-02, -5.560e-02, -1.543e-02, -6.381e-01, -2.886e-02, 1.942e-02, -2.443e-02, -3.969e-01, -7.766e-02, -1.400e-01, -7.762e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(3.051e-01, -4.297e-01, -4.379e-01, 3.445e-01, -5.632e-02, -2.875e-02, -7.424e-02, 1.611e-02, -3.850e-01, -2.404e-01, 1.158e-01, -3.090e-02, 6.969e-02, 4.321e-02, 3.149e-01, 2.868e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-4.932e-02, -5.932e-02, -1.538e-01, 1.200e-02, 4.227e-02, 6.911e-02, -9.629e-02, -1.738e-02, -3.042e-03, -8.012e-04, -2.199e-02, 1.059e-02, 2.888e-02, -4.735e-02, 1.008e-01, 4.821e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-3.494e-02, -4.276e-02, -4.529e-02, -2.194e-01, 2.888e-02, 2.936e-02, 9.786e-03, 3.636e-03, 1.685e-02, -1.247e-02, -1.685e-02, 6.372e-02, -2.661e-02, -1.211e-02, -3.025e-03, -8.649e-03), r7);\n\tr0 = MulAdd(s0_2_0, M4(-1.518e-01, 3.168e-02, -1.490e-01, -1.300e+00, -9.744e-01, 1.610e-02, -7.149e-02, -1.402e+00, 5.184e-01, 6.995e-03, -1.455e-02, -1.079e+00, -3.340e-02, -6.295e-02, 1.072e-02, -5.615e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.891e-02, -3.173e-02, -3.367e-02, 3.642e-02, 1.152e-01, -8.986e-02, 2.193e-02, 1.084e-01, -3.635e-02, 5.372e-02, 6.534e-04, -2.112e-02, 1.347e-02, 2.739e-02, -1.081e-02, 1.207e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(-4.530e-01, 3.842e-02, 1.642e-01, 1.112e-01, 4.741e-02, -6.417e-02, -2.936e-01, 7.086e-02, 2.335e-01, -2.923e-02, 3.775e-02, 6.324e-02, 7.757e-02, 3.018e-02, -3.398e-03, 3.409e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(9.979e-02, 1.118e-01, -1.329e-02, -8.899e-02, 9.204e-02, -1.253e-01, -6.119e-02, -1.836e-01, 2.314e-01, -1.155e-02, 6.251e-02, 2.116e-01, -5.190e-01, 1.939e-02, 1.272e-01, -7.337e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-9.107e-03, 3.692e-02, 5.852e-02, 4.182e-02, 1.181e-01, -4.109e-02, -4.427e-02, -2.895e-02, -4.900e-03, -1.120e-01, 4.352e-02, -8.859e-02, -8.997e-03, -1.067e-01, 3.049e-02, -1.154e-01), r4);\n\tr5 = MulAdd(s0_2_0, M4(5.959e-02, 2.028e-01, 1.583e-01, -4.047e-02, -1.068e-02, -9.338e-01, 2.548e-01, 2.388e-02, -1.528e-03, 2.493e-01, -6.273e-02, 4.730e-02, 1.720e-01, -6.743e-01, -6.870e-02, 5.817e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(1.545e-02, 9.645e-03, 3.883e-02, 8.384e-03, 4.131e-02, -2.981e-02, 1.536e-02, 8.081e-02, 2.022e-02, -3.151e-02, -6.966e-03, 9.047e-04, 5.658e-02, -3.479e-02, -2.504e-02, 1.767e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-2.125e-01, -1.390e-02, -2.557e-02, 1.272e-02, -1.575e-01, -8.755e-03, -2.339e-03, -8.227e-02, 3.829e-01, -2.475e-03, -3.063e-03, 7.333e-03, -5.567e-02, -1.479e-02, -1.137e-02, -1.097e-03), r7);\n\tr0 = MulAdd(s0_2_1, M4(1.965e-02, -2.083e-02, -1.941e-01, -3.606e-02, -1.731e-01, 1.149e-01, 1.072e-01, -1.226e-02, -2.004e-01, 2.228e-02, -9.421e-02, 6.581e-02, 1.745e-02, -4.766e-02, 1.230e-02, 4.735e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(6.642e-02, 1.385e-01, 3.476e-02, -1.106e-01, 1.968e-01, 5.420e-02, -6.149e-02, 7.274e-02, -1.211e-01, 1.117e-03, -7.619e-04, 8.113e-02, -5.145e-02, -2.239e-02, 2.556e-02, 1.005e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-3.955e-01, 5.054e-02, 3.838e-01, 4.033e-02, 1.268e-01, -9.603e-03, 2.181e-01, -1.228e-01, -8.297e-02, -6.781e-02, 6.483e-02, 6.607e-02, 7.644e-02, 2.945e-02, 1.164e-02, 5.643e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(2.897e-01, 3.692e-02, 1.259e-01, 2.651e-01, -1.391e+00, 3.216e-01, -1.313e-01, 1.360e-01, -2.737e-01, -4.346e-02, -1.784e-01, 3.364e-02, 6.734e-02, 1.423e-02, -2.550e-02, 1.951e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(9.557e-02, 3.900e-02, 5.915e-02, 3.683e-02, -2.463e-01, -1.552e-01, -1.514e-02, -1.497e-01, 5.883e-02, -6.605e-02, -7.079e-02, -9.377e-02, 1.604e-01, -1.439e-02, -1.360e-01, -2.092e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-7.330e-02, -5.783e-01, 6.324e-02, -1.174e-01, 2.695e-01, 5.190e-01, 2.049e-02, 2.002e-01, -8.198e-02, -4.178e-01, 1.033e-01, -1.883e-01, -9.337e-02, -4.814e-01, 3.468e-01, 1.848e-01), r5);\n\tr6 = MulAdd(s0_2_1, M4(1.013e-02, 1.981e-02, -4.581e-02, -4.111e-02, -9.342e-02, 2.667e-01, -1.334e-01, -6.486e-02, 3.932e-02, 1.402e-02, 6.629e-02, -4.132e-02, 7.539e-02, -5.952e-02, 3.901e-02, 4.761e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(1.793e-01, 3.970e-02, 2.264e-02, 7.492e-02, 1.363e-01, 1.995e-02, -4.514e-02, -1.291e-01, -3.474e-02, 1.505e-02, 1.542e-02, -6.567e-02, 2.836e-02, 2.776e-03, 1.321e-02, -1.972e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-3.673e-01, -1.655e-01, -1.203e-01, 2.395e-03, 1.003e-01, -3.382e-02, -1.712e-01, 7.350e-04, -5.297e-02, 4.319e-02, -7.218e-02, -5.273e-03, 1.619e-01, 3.570e-02, 2.399e-01, -1.012e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(3.858e-02, -2.632e-02, 3.938e-02, -1.261e-01, -7.048e-02, -2.862e-02, 1.763e-03, -1.501e-01, -9.061e-03, 2.549e-02, -2.378e-02, -5.715e-03, 4.197e-02, 1.557e-01, 1.364e-02, 7.171e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.041e-02, -5.579e-03, -7.274e-02, -2.295e-02, -5.220e-02, -3.808e-03, -6.716e-02, 2.317e-02, 1.023e-01, 2.580e-03, 2.227e-02, -4.117e-03, 1.448e-01, 2.102e-02, 1.382e-01, 9.311e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(-2.801e-01, -7.678e-02, -1.363e-01, -6.010e-02, -2.321e-01, -9.758e-02, 1.415e-02, 3.760e-02, -1.572e-01, 7.396e-02, 4.732e-02, 1.971e-02, -5.335e-01, 1.036e-01, 1.529e-01, -1.320e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(-2.750e-01, -6.475e-02, 7.851e-02, -8.550e-02, -1.210e-01, -9.325e-03, -8.130e-02, -2.081e-02, -7.068e-02, 6.371e-02, -7.069e-02, 5.322e-02, 1.069e-01, 1.113e-01, -8.298e-02, 1.067e-01), r4);\n\tr5 = MulAdd(s0_2_2, M4(-1.088e-01, -3.783e-01, -1.434e-01, -4.337e-02, -1.288e-01, 1.210e-01, -2.273e-02, 1.259e-01, 1.696e-03, 1.982e-01, 7.429e-02, -1.694e-02, 1.640e-01, -1.622e-01, -1.007e-01, 2.492e-01), r5);\n\tr6 = MulAdd(s0_2_2, M4(-3.295e-05, 2.030e-02, 2.951e-04, 1.150e-02, -8.774e-02, -1.665e-02, -2.707e-02, 2.415e-02, 4.206e-02, 2.496e-02, -3.776e-03, -1.450e-02, 2.179e-02, -2.126e-02, -5.219e-02, 4.626e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(8.885e-02, 3.446e-02, 7.774e-03, -3.872e-02, -3.284e-02, -1.510e-02, -1.692e-02, 6.664e-02, -7.357e-03, -5.862e-03, 4.709e-04, -2.714e-02, 1.415e-02, -1.059e-03, -1.073e-03, 2.064e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(1.401e-01, 4.695e-02, -8.241e-01, -8.885e-01, 8.574e-02, -2.018e-01, 6.895e-02, -4.409e-01, 3.041e-01, 1.158e-01, 3.215e-02, -1.898e-01, -1.349e-01, -9.768e-02, 1.172e-01, 1.565e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(-2.886e-01, -2.173e-01, 2.512e-03, -9.007e-02, -1.248e-02, 3.001e-02, 2.245e-02, -1.509e-01, 7.507e-02, 8.794e-02, 1.009e-02, 5.614e-02, -9.737e-02, 3.223e-02, 8.839e-03, -2.491e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(3.911e-01, -2.062e-02, -3.518e-01, -1.047e-02, -5.114e-02, 5.036e-01, 3.659e-01, 1.083e-01, 2.803e-01, -1.418e-01, 1.343e-01, -9.708e-01, -1.206e-01, -9.919e-01, -1.549e-01, -3.788e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(4.989e-01, -3.875e-02, -6.823e-02, -1.297e-01, -2.269e-01, -1.153e-01, -3.280e-01, 4.800e-01, 2.059e-01, 1.346e-01, 1.853e-01, 4.148e-01, -8.272e-02, -4.003e-02, -2.116e-02, -3.586e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(-2.520e-01, -6.342e-02, -5.906e-01, -5.516e-02, 5.448e-02, 3.207e-02, -3.848e-02, 3.132e-02, 1.486e-01, -1.811e-02, 1.935e-01, -3.630e-02, 3.991e-02, -1.133e-02, -1.467e-02, -2.495e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-3.088e-01, -2.981e-01, 6.660e-01, -1.151e+00, -6.951e-01, -1.577e-02, -3.107e-02, -5.260e-02, -4.275e-01, 1.676e-01, 2.123e-01, 1.271e-01, -8.215e-01, -8.808e-02, -2.016e-01, -9.948e-03), r5);\n\tr6 = MulAdd(s1_0_0, M4(6.687e-02, 4.759e-02, 1.928e-01, 3.408e-03, 3.589e-02, -1.253e-01, -1.324e-01, 2.441e-04, 3.846e-02, -3.791e-02, 4.057e-02, -9.088e-02, 1.842e-02, 4.216e-02, 3.894e-02, 1.267e-01), r6);\n\tr7 = MulAdd(s1_0_0, M4(1.865e-01, 1.085e-02, 9.065e-03, 1.364e-01, -4.341e-02, -6.861e-03, 1.493e-02, 5.177e-02, 1.433e-01, 2.669e-03, 2.509e-02, -1.037e-02, -3.511e-02, -2.776e-02, -2.951e-02, 2.579e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(2.419e-01, 2.705e-01, -4.322e-02, -7.367e-01, -2.301e-01, 4.920e-02, 3.362e-01, -1.334e-01, -1.135e-01, 8.169e-02, 2.015e-01, 1.852e-02, -3.069e-02, -1.425e-01, 3.186e-02, -1.323e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(6.811e-02, -8.387e-02, 4.920e-02, 2.974e-01, 4.839e-03, 2.162e-01, 1.463e-03, -6.402e-02, 8.975e-02, -1.899e-01, -8.813e-02, 1.139e-01, -1.237e-01, -2.151e-02, -1.011e-02, -2.975e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-3.175e-01, 4.904e-01, 1.297e-01, -4.463e-01, -5.905e-02, -2.636e-02, -4.736e-01, -2.271e-01, -1.331e-02, -3.570e-02, 1.547e-02, 3.668e-01, 1.187e-02, 2.271e-03, -4.825e-02, -6.350e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-2.295e-01, 8.224e-02, 2.605e-01, 1.211e+00, 1.892e-01, 4.700e-02, 2.959e-01, 2.863e-01, 2.674e-01, 3.018e-02, 3.155e-02, -1.979e-01, 9.088e-02, -5.011e-02, 1.268e-02, -5.951e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(4.957e-02, 2.683e-02, -1.669e-01, 7.916e-03, -2.504e-01, 1.668e-02, 1.090e-01, -4.791e-04, -7.000e-02, -1.823e-01, -4.240e-02, -1.844e-01, 2.518e-01, -2.643e-02, -2.158e-01, -5.097e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-5.326e-01, 1.477e-01, -8.244e-02, 1.234e-01, 3.900e-02, -1.019e-02, 1.574e-01, 2.854e-01, -4.101e-02, -9.502e-02, 1.258e-01, -9.038e-02, -1.303e-01, 2.926e-03, -1.132e-01, -3.639e-01), r5);\n\tr6 = MulAdd(s1_0_1, M4(-9.377e-02, -5.105e-02, 8.707e-02, -8.462e-02, 3.068e-02, -7.605e-03, 6.162e-02, -6.136e-02, 9.867e-02, 5.326e-02, 1.214e-01, 1.714e-01, 1.041e-01, -1.232e-01, 8.600e-02, 7.630e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-6.159e-03, 3.113e-02, 3.549e-02, -3.360e-01, -1.222e-01, 1.450e-02, 2.236e-02, -9.161e-03, 1.159e-01, -1.319e-02, -1.923e-02, -2.457e-02, -2.037e-02, -2.382e-02, -3.648e-02, -7.842e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(8.535e-02, -2.700e-02, -2.703e-01, -5.496e-02, 1.510e-01, -2.067e-01, 1.136e-01, 4.184e-02, 3.745e-02, 8.261e-03, 5.589e-02, -4.566e-02, -7.036e-03, 1.098e-01, -9.889e-02, 1.953e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(3.625e-02, -8.516e-02, 3.384e-02, -1.071e-01, 1.509e-01, -9.412e-02, -5.664e-02, 3.596e-02, -1.063e-01, 1.221e-01, 4.563e-04, 1.730e-04, 8.558e-03, -4.967e-02, -2.313e-02, -3.000e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(2.073e-01, 1.157e-01, 1.106e-02, 1.063e-01, 1.309e-01, -9.662e-02, 5.887e-02, -2.138e-01, 7.841e-02, -6.147e-02, 3.634e-02, -2.136e-01, -2.279e-03, 5.348e-02, -9.832e-03, 8.879e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-1.063e-01, -7.669e-02, -9.870e-02, -3.761e-01, -3.215e-02, -9.560e-02, -7.065e-02, -7.420e-02, -2.390e-02, -1.219e-01, -1.504e-01, -1.712e-01, 4.136e-02, 1.028e-01, 4.225e-02, -2.347e-01), r3);\n\tr4 = MulAdd(s1_0_2, M4(-1.696e-01, 8.640e-02, -1.647e-02, 9.504e-02, -5.215e-02, -1.810e-04, -4.054e-02, -4.558e-05, -2.558e-01, -1.724e-02, 9.675e-02, -2.733e-02, 5.575e-02, -5.759e-02, -7.039e-02, -5.842e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(7.364e-01, -7.965e-03, -1.650e-01, -7.546e-02, -7.863e-01, -1.564e-01, -3.623e-01, -6.435e-02, 2.895e-02, 5.250e-02, 3.780e-02, 1.887e-01, -2.162e-01, 3.306e-02, 6.206e-02, -5.888e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-1.135e-02, -2.301e-02, 3.380e-02, 1.089e-02, 8.374e-02, 1.023e-01, -4.750e-02, -8.806e-03, -5.411e-02, -7.110e-02, -1.457e-02, 1.225e-02, 3.170e-02, 1.974e-02, -2.800e-02, -2.617e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-3.722e-02, 1.370e-02, 1.615e-02, -7.514e-03, -1.111e-02, -4.933e-03, -3.267e-02, -6.201e-02, 4.553e-03, -5.049e-03, 1.921e-02, -7.968e-02, 5.512e-02, -7.348e-03, -1.614e-04, 9.552e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-2.244e-01, -9.605e-02, 2.552e-01, -7.475e-01, -2.217e-01, -3.508e-02, -3.437e-01, 2.482e-01, 1.317e-01, 1.456e-01, -1.256e-02, 4.875e-01, 1.611e-01, -3.493e-02, -5.460e-02, -4.635e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(-7.948e-02, 1.033e-01, 3.159e-02, -5.607e-02, 2.274e-02, -3.137e-01, 2.726e-02, -1.588e-02, -1.620e-03, -2.227e-02, -1.364e-02, 1.147e-02, 5.966e-02, -4.584e-02, -3.574e-02, -3.194e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(2.584e-01, 8.541e-02, -1.382e-02, -7.483e-02, 3.151e-03, 1.563e-02, 5.058e-02, -2.527e-01, -3.631e-01, 4.553e-02, 2.003e-01, 8.188e-02, 1.639e-01, 5.854e-02, 2.694e-02, -6.252e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-1.953e-01, 3.024e-01, 2.069e-01, 7.296e-01, -3.077e-01, 4.769e-02, -2.608e-01, -1.052e-01, 9.939e-02, 8.270e-02, 1.071e-01, 2.213e-01, 1.076e-01, 6.327e-02, 6.712e-02, 1.444e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(-1.342e-02, -6.719e-02, -1.135e-01, -5.957e-02, -5.488e-02, -2.034e-01, 1.828e-01, -2.265e-01, 7.716e-03, 8.318e-03, 2.385e-02, 3.840e-03, -6.056e-03, -9.962e-02, -1.476e-02, -6.816e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-4.638e-01, -3.141e-02, 4.188e-01, 4.565e-01, -6.847e-02, 2.462e-02, 1.218e-02, -9.796e-03, -6.275e-02, 7.100e-02, 1.170e-01, -8.348e-03, -1.158e-01, 4.352e-01, -9.887e-02, -9.548e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(4.418e-02, 1.529e-02, 1.396e-01, -9.983e-02, -5.485e-02, 4.417e-02, -1.314e-01, 2.044e-02, -1.233e-01, 7.449e-02, 6.475e-02, -2.891e-02, 5.935e-02, 2.302e-02, 9.862e-02, -1.518e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(-6.455e-02, 6.009e-02, 3.894e-02, -2.862e-02, -1.240e-02, 2.410e-02, 6.006e-03, -2.800e-01, 2.512e-01, -5.661e-02, 1.712e-02, -1.255e-01, -1.020e-01, 8.036e-04, -1.195e-02, -5.563e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-1.490e-02, 6.252e-02, 4.775e-01, 5.765e-01, 2.803e-02, 7.286e-03, -1.662e-01, -8.964e-03, -8.686e-02, -1.179e-01, 2.995e-02, 1.650e-01, 1.374e-01, 1.410e-01, 5.040e-02, -5.805e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-2.887e-02, 2.624e-01, 2.653e-02, 2.094e-01, -9.629e-02, 2.137e-03, 2.464e-02, 2.425e-01, 9.367e-03, -2.137e-03, 7.585e-03, -2.672e-01, 1.416e-01, 1.367e-01, 2.153e-01, 1.901e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(3.987e-01, 9.310e-02, -6.973e-02, 5.655e-02, 1.927e-02, 7.487e-02, 1.911e-01, 9.001e-03, -1.367e-01, -4.596e-02, -1.145e-01, 1.704e-01, 1.259e-01, -1.413e-02, 2.363e-01, -3.045e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-3.728e-02, 1.111e-02, -6.078e-02, -7.555e-02, 7.558e-02, -1.129e-01, -4.215e-02, 1.239e-01, -8.198e-02, -4.773e-02, 3.069e-02, -1.200e-01, 5.829e-01, -1.493e-01, -7.284e-02, 1.048e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.160e-01, -3.936e-02, 7.892e-02, -2.802e-02, -1.251e-01, 7.611e-02, 4.039e-02, 6.029e-02, -4.341e-02, -1.919e-01, -3.262e-01, -1.831e-01, -9.960e-02, -9.241e-02, 2.733e-01, -1.251e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-4.782e-01, -3.176e-01, -4.543e-01, 3.465e-02, 1.292e-01, 3.073e-01, -7.717e-03, -2.449e-01, -9.130e-02, -1.362e-01, -1.264e-02, -1.188e-01, 1.571e-01, 4.469e-02, -2.672e-01, 1.945e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(1.460e-01, 5.780e-02, -4.830e-02, -6.872e-02, -5.926e-02, -5.320e-03, -1.185e-01, -2.411e-02, -4.173e-02, -1.777e-01, -1.055e-01, 5.396e-02, 4.548e-02, 7.742e-02, -6.517e-02, 4.033e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(7.899e-02, 4.042e-02, 3.534e-02, 3.234e-02, -1.120e-01, 2.389e-02, 1.499e-02, 7.170e-02, -1.088e-01, 4.044e-01, -1.286e-01, 3.377e-02, 9.551e-02, 2.325e-01, 1.155e-01, 1.061e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-8.751e-02, 1.617e-01, 3.042e-01, -2.510e-01, -3.527e-02, -1.154e-01, 2.203e-02, 1.905e-01, -4.565e-02, -1.695e-01, -6.883e-02, -3.195e-02, -6.656e-02, 1.093e-02, 1.711e-01, 1.092e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(-7.572e-02, 6.341e-02, -6.029e-03, 1.551e-01, -5.406e-02, -5.483e-02, 2.825e-02, 2.752e-02, 8.439e-02, -4.620e-02, -1.995e-02, 8.552e-02, -1.293e-01, 4.517e-02, 6.714e-03, -3.884e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-1.182e-01, -1.015e-02, -8.228e-02, -7.268e-02, -1.171e-01, -1.612e-02, -6.328e-02, -3.554e-02, 8.844e-02, -2.524e-02, -2.404e-02, 3.859e-03, -5.237e-02, 5.406e-02, -1.344e-02, 4.547e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-3.013e-01, 4.545e-02, 1.082e-01, 3.228e-01, 1.912e-01, 1.577e-01, -1.793e-01, -9.114e-03, 3.479e-02, 6.172e-02, 3.498e-02, -1.022e-02, -2.509e-02, -4.573e-02, -9.066e-02, -1.606e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(7.915e-02, -4.718e-02, -1.125e-01, -5.563e-02, 2.277e-01, -8.845e-02, -4.447e-02, -1.062e-01, -4.512e-02, 6.996e-02, 1.594e-02, 5.096e-02, -2.353e-01, -1.096e-02, 6.694e-02, -2.518e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(2.143e-01, -1.811e-02, 8.797e-02, 2.699e-01, -1.265e-01, -1.747e-01, 1.109e-01, -1.778e-01, 1.546e-01, 8.945e-02, -2.351e-01, -1.229e-01, -6.196e-02, 4.408e-02, -5.445e-02, 1.428e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(2.129e-02, -1.009e-02, 7.501e-02, -2.961e-02, -3.406e-02, -1.134e-01, -1.067e-02, -1.388e-02, -5.590e-02, 7.753e-02, -2.369e-02, 2.216e-02, 7.626e-02, -9.033e-02, 5.357e-02, 1.048e-05), r6);\n\tr7 = MulAdd(s1_1_2, M4(7.256e-02, -1.014e-03, -1.950e-03, -6.248e-03, -8.308e-02, 2.052e-04, 3.105e-02, -2.390e-03, -5.543e-02, 9.105e-02, 2.654e-02, -7.509e-02, 5.066e-02, -2.223e-02, -2.987e-04, 6.506e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-2.679e-03, -6.699e-02, -2.921e-02, -8.818e-01, -8.923e-03, -5.783e-02, 2.358e-02, -1.398e+00, -4.977e-01, -1.812e-01, 1.800e-02, 4.286e-02, 1.348e-01, 6.141e-02, 7.933e-02, -4.420e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(-3.927e-02, 2.562e-02, 3.113e-02, -8.451e-02, 5.380e-02, 1.945e-01, -1.653e-02, 3.416e-02, -1.397e-02, -4.389e-02, 1.038e-03, 1.001e-01, 3.132e-03, -5.991e-03, -2.269e-02, -3.395e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(3.603e-01, 7.790e-01, -2.202e-02, -1.881e-01, -1.317e-02, -6.786e-02, -4.579e-01, 2.114e-01, -3.122e-01, -1.559e-02, -1.304e-01, -3.466e-02, -3.869e-01, 2.698e-02, 1.184e-01, -8.708e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-2.274e-02, -6.398e-02, 1.104e-01, -2.734e-01, 5.062e-01, -7.541e-02, -1.311e-01, -1.625e-01, -6.374e-02, -9.634e-02, 1.118e-01, 1.136e-01, -8.064e-02, 1.399e-01, -2.642e-02, -1.191e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(-4.302e-02, 5.555e-02, 5.444e-02, 5.238e-02, 5.932e-02, -1.671e-01, -1.153e-01, -1.540e-01, 1.165e-01, 1.571e-02, 1.423e-01, 1.608e-02, -3.237e-02, -3.600e-02, 1.325e-02, -4.053e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(2.993e-01, -1.966e-01, 5.342e-02, -7.766e-02, -3.303e-02, -1.030e-01, -2.818e-01, -7.753e-02, 2.405e-01, -2.664e-02, 1.376e-01, -4.680e-02, 1.118e-02, -5.431e-02, 3.818e-02, 3.521e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(2.645e-02, -5.865e-02, -3.578e-02, 5.309e-02, 1.719e-02, 3.913e-02, 2.351e-02, -3.341e-02, 1.317e-02, 5.757e-02, 7.042e-03, 3.284e-02, -5.801e-02, -8.048e-02, -1.052e-02, -9.797e-03), r6);\n\tr7 = MulAdd(s1_2_0, M4(-2.311e-01, 2.719e-03, -5.467e-03, 2.546e-02, -9.464e-01, 3.109e-03, 3.790e-03, -9.337e-02, -2.948e-01, -4.868e-03, 1.159e-02, 1.829e-03, -1.194e-01, -2.336e-02, -1.168e-02, 1.049e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(1.731e-01, -3.933e-02, 1.792e-01, -1.539e-02, 1.801e-01, 1.853e-01, -9.244e-02, -1.146e-01, 1.098e-01, 1.333e-01, -5.548e-02, -2.695e-01, 1.476e-01, -2.480e-02, -1.400e-01, 1.936e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-4.329e-02, 5.210e-03, -1.504e-02, 3.377e-02, 9.383e-02, 1.455e-01, -4.358e-02, 1.996e-02, 1.558e-01, 7.497e-04, -3.066e-03, 8.707e-02, -3.527e-02, 1.208e-01, -3.247e-02, 3.865e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.474e-01, 2.116e-02, -1.382e-01, -8.160e-02, -3.583e-03, -1.997e-02, 3.275e-01, -6.982e-02, 1.343e-01, 2.521e-02, 1.219e-01, -5.232e-02, -2.587e-01, 1.894e-03, -2.549e-02, 1.080e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(3.408e-01, 6.341e-02, -5.118e-02, -3.134e-01, 8.524e-02, 2.460e-01, 1.692e-01, -4.338e-02, -2.016e-01, -1.164e-01, -1.750e-01, 2.898e-02, 3.328e-02, 1.079e-01, 3.680e-02, 1.068e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(-5.379e-02, 1.423e-01, -3.896e-02, 1.144e-01, -7.776e-02, 1.813e-02, 4.971e-03, -1.929e-03, -4.107e-02, -3.112e-02, -1.241e-02, -4.937e-02, 4.194e-02, 3.266e-02, 5.781e-02, 7.016e-03), r4);\n\tr5 = MulAdd(s1_2_1, M4(4.820e-01, 1.825e-01, 1.647e-01, 1.201e-01, -3.878e-02, -8.364e-02, -1.950e-01, -5.337e-02, 6.059e-02, 3.357e-02, 1.466e-01, -2.419e-02, 1.527e-01, 2.243e-02, -3.929e-02, 1.573e-01), r5);\n\tr6 = MulAdd(s1_2_1, M4(-2.494e-02, 3.032e-02, -1.335e-02, -3.888e-02, -6.285e-03, 1.240e-02, -3.339e-03, -3.811e-02, -5.640e-02, 8.791e-02, -1.694e-01, 8.095e-02, 1.267e-01, -4.114e-02, 4.087e-02, 9.321e-03), r6);\n\tr7 = MulAdd(s1_2_1, M4(-1.311e-01, -7.115e-03, -1.685e-02, 1.102e-01, -1.714e-01, -3.140e-02, -2.525e-02, -1.836e-02, -6.310e-02, 5.205e-02, 2.204e-02, 8.721e-03, -7.332e-02, -9.747e-03, -8.442e-03, -1.405e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-4.887e-03, 3.396e-02, -9.947e-02, -1.040e-01, -1.218e-01, -8.458e-02, 1.448e-01, 1.008e-02, 1.055e-01, -1.523e-02, -6.844e-02, -1.181e-01, -4.591e-02, -5.278e-02, 1.044e-01, 3.583e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.708e-02, -1.353e-01, -1.863e-02, 3.681e-02, -2.947e-03, 1.763e-02, -1.410e-02, -5.874e-02, -1.195e-01, -3.926e-02, -1.805e-02, -1.871e-02, 1.723e-02, 4.306e-02, 2.098e-03, -5.839e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-7.174e-02, 5.414e-02, 9.302e-02, -2.195e-03, 1.889e-01, -5.958e-02, -3.034e-02, -1.116e-01, -6.447e-02, 3.267e-02, -7.693e-02, -3.226e-02, 3.237e-02, -5.092e-04, 7.206e-03, 4.419e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(1.338e-01, -8.337e-02, -2.787e-02, 2.842e-01, 7.291e-02, 6.358e-02, 1.370e-01, -2.448e-01, -1.843e-01, -8.020e-02, 2.064e-02, -1.168e-03, -2.454e-02, -1.970e-03, 1.570e-01, -4.328e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-6.267e-03, 1.231e-01, -7.535e-02, 1.114e-01, 3.833e-02, 3.064e-02, -2.165e-02, 1.305e-02, -1.944e-02, 3.130e-02, 4.090e-02, 1.466e-02, 2.158e-02, -1.038e-01, -1.824e-02, -1.103e-01), r4);\n\tr5 = MulAdd(s1_2_2, M4(-5.727e-02, 2.128e-01, 4.312e-02, -9.257e-02, 1.843e-02, -4.170e-02, -3.453e-02, 2.443e-02, 5.766e-02, -4.682e-02, -1.699e-02, 1.186e-01, -8.413e-02, 1.768e-01, -1.386e-02, 2.639e-03), r5);\n\tr6 = MulAdd(s1_2_2, M4(1.765e-02, 4.516e-02, -2.215e-02, 9.884e-03, 1.242e-02, 4.610e-02, 6.803e-04, -9.889e-03, -6.041e-02, 7.338e-02, -6.986e-02, 2.725e-02, 1.443e-03, -5.344e-02, 9.499e-02, 1.700e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(4.466e-02, -6.290e-03, -2.098e-02, 1.346e-02, 3.553e-02, 9.656e-04, -1.168e-02, -3.730e-02, -8.320e-02, 4.917e-02, 1.677e-02, 3.933e-02, 8.772e-02, -2.413e-02, -1.332e-03, -8.255e-03), r7);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.534e-01, 8.031e-02, -1.373e-01, 3.652e-01, 2.222e-01, -4.385e-02, -6.859e-02, 2.070e-01, -1.635e-01, 4.190e-02, -5.053e-02, -2.464e-01, -3.126e-02, -1.431e-01, -5.332e-02, -2.824e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(2.041e-03, -1.073e-01, -4.442e-02, 2.171e-02, 1.363e-02, -9.147e-02, -1.188e-02, -3.703e-02, -2.116e-02, 1.652e-01, 2.665e-02, -1.036e-01, 2.117e-01, -6.723e-02, 6.233e-02, 6.626e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.435e-01, -1.383e+00, -1.966e-01, -1.314e+00, 4.067e-02, 1.533e-01, 1.553e-01, 1.339e-01, 3.121e-01, -7.496e-01, 3.468e-02, -7.867e-01, -1.606e-01, -1.418e+00, 1.089e-01, -3.704e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(-4.550e-02, 1.450e-01, 1.465e-01, 8.901e-02, 6.358e-02, 7.039e-02, 3.018e-01, 4.505e-02, 8.405e-02, 5.890e-02, 1.239e-01, -3.641e-01, 2.736e-02, 7.440e-02, 1.405e-01, 1.873e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(-1.974e-02, 6.813e-02, 1.376e-01, 3.475e-02, 3.970e-01, -2.562e-02, -7.306e-02, -2.236e-02, -3.072e-01, -3.389e-03, -1.882e-01, -1.938e-02, 3.754e-02, 4.659e-02, -3.580e-03, 2.142e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-7.754e-01, 4.945e-02, -2.042e-01, 2.138e-02, 2.245e-01, -2.132e-01, -2.269e-01, -1.654e-01, 1.532e-01, -1.958e-01, 3.059e-02, -1.073e-01, -9.770e-01, 1.267e-02, 7.651e-02, 1.157e-01), r5);\n\tr6 = MulAdd(s0_0_0, M4(-5.393e-02, -4.189e-02, 3.939e-02, 4.602e-03, 6.671e-02, 6.292e-02, 1.148e-02, 2.153e-02, 2.059e-02, -2.520e-02, -3.700e-02, -3.698e-03, 2.554e-02, 2.677e-02, -6.904e-02, -1.000e-01), r6);\n\tr7 = MulAdd(s0_0_0, M4(1.735e-02, 1.640e-02, 1.091e-02, 5.467e-03, 4.934e-02, 3.335e-03, -1.396e-02, 5.251e-02, 6.964e-03, 1.804e-02, 2.313e-02, 1.232e-01, -1.038e-01, -3.665e-02, 6.141e-02, 1.476e-01), r7);\n\tr0 = MulAdd(s0_0_1, M4(-8.594e-03, 1.089e-01, -3.113e-01, -4.589e-02, 9.447e-02, -3.511e-01, 3.024e-02, -2.236e-02, 1.527e-01, 1.850e-01, -9.234e-01, -6.088e-02, 1.420e-02, 5.777e-02, -9.624e-02, 7.164e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(7.245e-02, -3.241e-02, 2.646e-01, 2.017e-01, 1.152e-01, 1.603e-01, 6.538e-03, 1.267e-01, -5.496e-02, -2.752e-01, -2.160e-02, -1.027e-01, 5.193e-02, -4.439e-02, 3.755e-03, 2.949e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.542e-01, 9.203e-02, 1.391e-01, 5.295e-01, -6.716e-02, 1.313e-01, 5.691e-03, 2.151e-01, 1.616e-01, 1.214e-01, 4.204e-02, -3.477e-01, -7.263e-03, 3.096e-01, -1.291e-02, -1.908e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(-3.055e-01, -1.380e-01, -8.161e-02, 9.753e-02, 1.382e-01, -5.301e-02, 6.711e-02, 5.337e-01, -5.671e-02, 9.730e-02, 1.828e-02, -3.925e-01, -7.137e-02, -7.677e-02, -4.366e-02, -2.343e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.105e-01, -7.487e-02, -3.057e-01, -9.650e-02, -2.381e-01, 8.506e-03, 3.799e-03, 7.133e-03, 8.046e-02, 9.308e-03, -8.481e-02, 1.411e-02, 4.010e-01, 1.345e-01, 1.775e-01, 9.317e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-7.305e-01, 6.841e-02, -7.488e-02, -2.221e-01, -4.354e-03, -7.689e-01, 4.478e-01, 3.320e-01, -1.142e-01, 8.862e-02, -6.418e-02, 2.605e-01, -4.098e-02, -2.048e-01, -1.568e-02, -1.776e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(-2.948e-02, 2.210e-01, 1.150e-01, 2.152e-01, 7.727e-02, 6.038e-02, 3.928e-02, -6.117e-02, -5.184e-02, 1.154e-01, 1.022e-01, -2.510e-02, -4.929e-02, -6.050e-02, -2.604e-02, -2.319e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(-9.076e-02, 1.296e-01, -1.536e-01, -2.523e-02, 6.981e-02, 4.755e-02, 1.619e-02, -1.008e-03, 2.120e-02, 9.762e-03, -5.650e-03, -4.438e-02, -2.018e-02, -5.408e-02, 1.356e-01, -9.373e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-3.822e-03, -3.494e-02, -1.270e-01, -3.372e-02, -1.631e-01, -1.541e-01, -2.484e-01, -1.568e-01, 8.883e-02, 1.089e-01, -1.366e-01, 8.326e-02, -2.171e-02, 9.882e-02, 1.827e-01, 4.458e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.192e-01, 1.197e-01, -3.453e-04, -3.227e-03, -7.388e-02, -7.412e-02, -1.046e-01, 8.934e-03, -4.906e-02, 5.438e-02, 3.510e-02, -4.123e-02, 2.697e-02, -2.811e-02, -1.531e-03, 1.008e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(7.865e-03, -2.585e-02, 9.105e-02, 1.671e-01, -1.312e-01, 6.851e-02, 2.416e-02, 7.628e-02, -1.470e-01, 1.032e-01, 2.024e-01, -3.593e-02, 4.378e-02, -3.256e-02, -1.878e-02, 6.419e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-2.867e-01, -7.257e-03, -2.332e-01, -1.235e-01, -6.245e-02, -1.539e-02, 3.499e-01, 2.485e-01, -4.402e-01, -1.912e-02, 5.828e-02, 5.826e-02, -2.068e-02, 6.842e-02, 2.448e-02, -1.451e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(7.266e-02, 4.289e-02, 8.026e-03, 5.725e-02, 3.499e-01, -5.262e-02, -3.624e-01, -5.395e-02, 6.303e-02, 3.031e-03, -5.863e-03, -5.193e-03, -4.165e-03, -8.220e-02, -5.449e-02, -7.150e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(3.070e-01, -1.116e-01, 4.725e-02, 1.773e-01, -1.627e-01, -1.199e-01, 1.258e-01, -2.870e-01, -3.924e-01, 9.625e-02, 8.987e-02, 3.272e-02, 2.197e-01, 2.682e-02, -9.906e-02, 5.994e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(1.005e-01, -3.953e-02, 2.919e-02, -6.093e-02, 1.291e-01, 4.665e-02, 3.792e-02, -7.753e-02, -1.009e-01, -5.576e-02, 2.801e-02, 8.946e-03, -9.236e-02, 4.917e-02, 1.440e-02, -4.082e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-5.700e-02, 8.880e-02, 2.019e-02, -9.155e-02, -2.861e-03, -4.455e-02, -4.010e-02, -5.706e-03, -2.352e-02, -7.569e-04, 1.528e-02, -2.248e-01, -6.258e-03, -6.287e-02, 1.409e-02, -2.591e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(2.742e-01, 3.512e-02, 2.295e-02, -1.004e+00, -1.184e-01, 2.470e-02, -4.829e-03, 7.979e-01, 2.981e-01, -1.441e-01, 1.205e-01, 1.961e-01, 1.420e-01, -6.314e-02, -8.166e-02, -6.635e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.284e-01, 1.685e-01, -3.018e-02, 5.820e-02, -1.819e-01, -3.766e-01, -5.482e-02, -7.230e-02, -4.385e-02, -1.056e-02, 1.160e-02, 3.123e-02, -2.418e-02, -1.225e-01, 2.264e-02, -1.613e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.766e-01, 1.293e-01, -5.451e-02, -9.505e-02, -6.159e-01, 2.197e-01, -4.470e-02, 9.867e-02, 1.541e-02, 1.048e-01, -6.216e-02, -1.214e-01, -5.416e-02, 2.982e-01, 1.394e-01, 3.344e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.776e-01, -1.532e-02, -8.621e-02, -1.407e-01, -1.388e-01, -3.037e-01, -2.049e-01, -3.748e-02, 9.982e-03, -1.358e-01, -2.271e-02, -3.733e-01, -2.099e-01, -2.367e-01, -3.365e-01, -1.880e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(-1.241e-01, -1.394e-01, 1.006e-01, -1.496e-01, 2.946e-01, -5.724e-02, 1.151e-01, -6.529e-02, 1.330e-01, 1.040e-01, 2.944e-02, 1.073e-01, -9.878e-02, -1.624e-01, -1.100e-01, -1.300e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(7.745e-02, -3.917e-02, -4.939e-02, 1.029e-01, 3.121e-01, 5.288e-01, 4.346e-01, 5.855e-02, 3.886e-02, 1.652e-01, -5.985e-02, -1.485e-01, 1.622e-01, 1.272e-01, 4.298e-02, -1.637e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-8.739e-03, -8.064e-02, -1.221e-01, -6.398e-02, 3.021e-02, 1.493e-01, -7.923e-03, -4.934e-02, -2.457e-03, 2.204e-02, -4.125e-02, -4.991e-02, 2.228e-02, -2.305e-02, -8.385e-02, 1.450e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(1.057e-01, 9.876e-03, 1.730e-02, -6.025e-02, -1.082e-02, 1.015e-02, -1.985e-02, -1.590e-04, -7.909e-02, 2.695e-02, 1.809e-02, 1.899e-01, 8.662e-02, -9.506e-02, 1.058e-01, -1.092e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(-1.587e-01, -2.826e-01, 1.867e-01, -1.667e-01, -3.809e-02, -5.441e-01, 1.424e-01, -1.440e-01, -5.224e-01, 1.423e-01, 2.208e-01, 2.232e-01, -1.069e-01, -4.082e-02, -3.293e-02, 1.647e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.654e-02, -6.300e-02, -5.347e-02, -2.712e-01, -2.999e-01, 1.891e-01, 1.160e-01, 4.178e-01, 1.206e-01, -1.620e-01, 3.757e-03, 7.793e-02, -1.265e-01, -5.770e-02, -3.527e-01, -3.037e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.824e-01, 2.040e-02, 7.197e-02, -7.863e-02, 1.571e-01, 4.300e-02, 3.574e-01, -2.176e-02, -1.263e-01, -7.696e-02, -2.394e-01, 2.410e-01, -7.209e-04, 1.555e-01, -1.107e-01, -1.996e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(2.375e-01, -2.241e-01, 7.648e-02, -1.184e-02, -2.032e-01, -3.198e-01, -1.595e-01, -1.032e-01, 7.332e-02, -5.976e-02, -3.096e-02, 1.836e-01, 2.370e-01, 1.156e-01, 1.863e-01, -1.767e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(4.174e-02, -9.348e-02, -1.096e-01, -7.349e-02, -4.750e-01, -1.736e-02, 1.010e-01, -1.830e-02, 2.496e-01, -1.849e-01, -8.811e-02, -1.854e-01, -7.418e-02, -6.119e-02, 2.163e-01, -6.141e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.210e-01, -1.029e-01, 4.850e-02, -1.333e-01, 2.913e-01, -1.063e+00, -8.532e-02, 4.007e-02, -4.512e-01, -4.707e-01, -1.703e-01, -1.934e-01, -1.330e-01, -3.835e-02, 2.725e-02, -1.680e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-7.851e-02, -1.568e-02, 3.359e-02, 1.425e-02, -5.359e-02, 7.323e-02, -2.509e-01, 7.541e-02, 7.788e-02, 2.327e-03, 1.327e-01, -6.665e-02, 1.195e-01, 2.499e-03, 1.417e-01, 4.184e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(-7.323e-02, 2.507e-02, 8.626e-02, 1.132e-01, 2.531e-01, 9.754e-02, 3.885e-02, 1.643e-01, -6.541e-02, 2.739e-02, 3.161e-02, 7.448e-02, 2.295e-01, 2.946e-01, 5.566e-01, 3.632e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-6.299e-02, -3.440e-03, 4.772e-02, 1.597e-01, -1.119e-01, -3.178e-02, 1.137e-01, 1.450e-01, 4.687e-02, -3.704e-02, -2.008e-01, -5.637e-02, -3.235e-03, 4.347e-02, -1.054e-01, 7.752e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-6.402e-02, -4.918e-02, -7.496e-03, -3.662e-02, -2.202e-02, -6.878e-02, 1.458e-02, -6.745e-02, 1.736e-01, 2.177e-01, -5.456e-02, 4.404e-02, -2.127e-02, 3.745e-02, 1.293e-01, 2.547e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(3.044e-02, -1.014e-02, -1.775e-01, 4.815e-02, -1.554e-01, 1.091e-02, 1.174e-01, -2.453e-01, -4.675e-02, -4.750e-02, 1.286e-01, 6.104e-02, 1.756e-02, 3.565e-02, -3.867e-02, 1.625e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-3.182e-01, 9.939e-02, 1.830e-01, 4.139e-02, -5.780e-01, -1.662e-01, -1.081e+00, 2.370e-01, -4.027e-01, 2.302e-01, 8.981e-02, 2.939e-01, -1.139e-01, 3.181e-03, -2.340e-02, -3.050e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(1.999e-04, 5.076e-02, 7.901e-02, 4.376e-02, 6.814e-01, 5.651e-02, -1.435e-01, 5.392e-02, -2.001e-01, -1.239e-01, -1.358e-01, -1.290e-01, -9.013e-02, -1.113e-01, -5.760e-02, -1.305e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(1.165e-01, -1.623e-02, -6.048e-02, 1.529e-01, -3.599e-01, -7.268e-02, 2.877e-02, 9.915e-02, 2.633e-01, -7.848e-03, 8.768e-02, -3.796e-02, -1.072e-01, 1.266e-01, -1.036e-01, 1.169e-01), r5);\n\tr6 = MulAdd(s0_1_2, M4(8.720e-02, -6.333e-02, 1.187e-01, 8.411e-03, 1.135e-01, -5.649e-02, 1.009e-01, -4.979e-02, 1.010e-01, 4.389e-02, -1.026e-02, 2.640e-02, 4.024e-02, 3.247e-02, 2.778e-02, -5.482e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(6.624e-02, 2.160e-02, -9.330e-03, -6.624e-02, -3.059e-02, 1.120e-02, 1.784e-02, -2.235e-01, 1.090e-01, -3.045e-02, -4.049e-02, -4.012e-03, 3.174e-02, 1.015e-02, 2.222e-02, -1.938e-04), r7);\n\tr0 = MulAdd(s0_2_0, M4(-1.506e-01, 6.879e-02, -2.857e-03, -1.008e+00, 1.787e-01, -9.940e-03, 2.069e-01, 3.344e-01, 4.816e-02, -9.109e-02, -9.580e-03, 1.113e+00, -1.203e-01, 9.117e-03, 2.240e-02, 1.537e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.575e-02, 3.695e-02, -4.067e-02, -7.370e-02, -2.376e-02, 1.333e-01, -1.699e-02, -6.041e-02, -3.675e-02, -7.856e-02, 5.581e-02, -5.587e-02, -1.155e-01, 1.504e-01, 4.406e-02, 3.149e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-3.952e-01, -4.498e-03, -1.616e-01, -3.601e-02, -1.433e-01, -1.734e-01, -2.965e-02, 1.690e-01, -9.985e-02, 7.155e-02, 2.664e-01, -1.797e-01, 3.329e-01, -3.993e-03, -9.658e-02, 6.065e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-1.875e-02, 1.391e-02, 1.349e-01, -5.074e-02, 7.874e-02, 2.724e-01, 1.063e-01, 2.276e-01, 1.683e-02, 1.721e-01, 2.852e-01, 2.048e-01, -2.101e-02, -1.101e-01, 3.993e-02, 1.080e-01), r3);\n\tr4 = MulAdd(s0_2_0, M4(9.898e-02, -4.022e-02, 7.750e-02, -6.444e-02, -5.294e-02, 6.044e-03, -9.131e-02, 3.652e-03, -8.670e-02, -6.920e-02, -2.778e-02, -3.714e-02, -2.278e-02, 2.461e-02, -3.093e-03, 6.424e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-2.663e-02, 1.649e-01, 3.211e-02, 9.596e-02, 2.938e-04, -5.346e-02, 2.115e-01, 8.645e-02, 1.626e-02, 1.929e-01, 1.491e-02, -5.891e-02, -1.003e-01, -7.321e-02, -2.599e-02, -4.410e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(-3.011e-02, -9.138e-03, 1.571e-02, 2.538e-02, 2.302e-02, 3.137e-02, -1.853e-02, 1.538e-02, -1.115e-02, -4.669e-02, -2.266e-02, 4.404e-03, 3.032e-03, 1.196e-02, -1.178e-02, -3.908e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(2.315e-01, -4.504e-02, -2.934e-02, -5.150e-02, -8.891e-01, -9.063e-03, -1.436e-02, -5.433e-02, -1.150e+00, 3.281e-02, 2.994e-02, 1.770e-02, -2.715e-01, 5.654e-02, 1.523e-02, -1.226e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(1.819e-01, 1.067e-01, 2.158e-01, 1.456e-02, -7.016e-01, -1.843e-01, -3.624e-01, -6.714e-02, 2.696e-01, -7.213e-02, 1.375e-01, 2.372e-03, 1.030e-01, -7.496e-02, -7.125e-03, 1.521e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.037e-01, -8.380e-02, 1.858e-02, -1.418e-01, 1.868e-01, -1.595e-01, 3.703e-02, 2.668e-01, 1.501e-02, 1.950e-02, 5.002e-03, -3.075e-02, -2.813e-02, 5.177e-03, -1.086e-02, -6.702e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(2.450e-02, -3.499e-02, 1.107e-01, 6.312e-02, -1.551e-01, 4.226e-02, -2.577e-02, 7.259e-02, 1.697e-01, -1.957e-03, 1.787e-01, 7.394e-03, -2.544e-01, 6.043e-02, -9.302e-03, 5.201e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.494e-01, 4.672e-02, -2.049e-01, 7.947e-02, 2.732e-02, 6.926e-02, 9.374e-02, 3.353e-01, 2.750e-01, -8.780e-02, 5.580e-03, -2.549e-01, -9.300e-02, 8.864e-02, 5.264e-02, 9.103e-05), r3);\n\tr4 = MulAdd(s0_2_1, M4(-1.860e-01, -3.612e-02, 2.047e-01, -4.667e-02, 1.029e-01, 4.169e-02, 4.396e-02, 4.267e-02, -1.201e-01, -1.085e-01, 4.642e-02, -8.781e-02, -9.741e-02, -4.071e-02, -1.030e-01, -5.117e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-1.340e-01, -9.899e-02, 2.257e-02, 3.356e-02, 4.104e-02, -4.190e-01, 2.206e-01, -8.366e-02, 1.742e-02, 5.338e-02, -1.851e-01, 6.817e-02, 9.372e-02, -3.561e-03, -9.770e-03, 6.462e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-1.110e-01, 3.913e-02, -6.555e-02, -4.384e-03, -1.716e-01, -1.446e-02, -6.963e-02, 2.414e-02, 2.558e-02, 1.995e-02, -6.566e-02, 3.439e-03, 7.807e-03, 2.023e-02, 2.969e-02, 3.273e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(4.697e-02, 1.108e-02, 1.608e-03, 5.726e-02, -9.270e-04, 3.054e-03, 1.295e-02, -5.686e-02, -8.541e-02, 8.750e-03, -1.863e-03, 6.735e-03, -1.935e-02, -6.044e-02, 6.568e-02, 8.453e-04), r7);\n\tr0 = MulAdd(s0_2_2, M4(-2.280e-01, -5.499e-02, -5.505e-02, -1.913e-03, 1.250e-01, -3.127e-01, -1.096e-01, -1.179e-01, -1.133e-01, -1.255e-01, -8.740e-02, 6.555e-02, 1.714e-01, 7.550e-02, 9.307e-02, -1.397e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-3.494e-02, -8.948e-02, -4.217e-02, 1.109e-02, 9.660e-02, 3.927e-02, -3.779e-02, 2.986e-02, -4.604e-02, -8.802e-02, 3.777e-02, -8.766e-02, 2.893e-02, 4.860e-02, 1.472e-02, 5.863e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(8.019e-02, -4.989e-02, 2.983e-02, -8.822e-03, -8.039e-02, -4.896e-02, -1.726e-01, -3.604e-01, -3.298e-03, 3.234e-02, 1.268e-02, -7.666e-02, -2.049e-03, 9.414e-04, -2.016e-02, 4.633e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(7.741e-03, -2.338e-02, -1.432e-01, 1.870e-02, -1.173e+00, -1.933e-01, -7.026e-01, 2.976e-01, -1.385e-01, -1.388e-01, 8.070e-02, 2.223e-01, 2.380e-01, 1.699e-03, -5.430e-02, 5.755e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(-6.053e-02, -7.482e-04, 5.674e-02, -1.722e-02, 1.015e-01, -9.920e-02, -1.832e-01, -1.019e-01, 1.116e-01, 4.379e-02, -5.446e-02, 4.065e-02, -4.034e-02, -9.527e-02, -8.001e-02, -1.252e-01), r4);\n\tr5 = MulAdd(s0_2_2, M4(-1.142e-01, 1.461e-02, 1.179e-01, -7.658e-02, -5.716e-02, -1.522e-02, 1.920e-01, -3.780e-02, -1.290e-02, 3.890e-03, 8.433e-02, 1.626e-02, 3.949e-02, 6.792e-02, 1.276e-02, 2.340e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-4.080e-02, 4.069e-02, 3.484e-02, 1.837e-03, 9.199e-02, -1.974e-02, 1.125e-01, -3.443e-02, -1.412e-02, -8.617e-02, -3.451e-02, 7.691e-03, 3.243e-02, -9.851e-03, -1.758e-02, -2.056e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(7.505e-02, 1.627e-03, -1.639e-02, -1.807e-02, -3.763e-01, -7.877e-03, -2.070e-02, 1.257e-01, -1.389e-03, 1.200e-02, 2.412e-02, 2.746e-02, -8.427e-02, -1.566e-02, -2.944e-02, 4.974e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-4.212e-02, -1.176e-01, 5.684e-02, -4.597e-01, 1.968e-01, 1.198e-01, -1.709e-01, -3.827e-01, -4.103e-02, -1.121e-01, 1.798e-01, 3.442e-01, 2.789e-01, 1.530e-02, -3.282e-02, 9.998e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.890e-01, 2.566e-01, 1.071e-02, 1.125e-01, -6.420e-02, -1.356e-01, -2.162e-02, 1.155e-01, -4.572e-02, 2.526e-02, 1.664e-02, -1.529e-02, -9.528e-03, 6.849e-02, 1.134e-02, 6.081e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.597e-01, -8.683e-01, 2.509e-02, -1.532e-01, -1.198e-01, -1.398e-01, -6.073e-02, 4.507e-01, -6.777e-02, -1.074e+00, 1.395e-02, -2.080e-02, -1.336e-01, -1.495e+00, -1.676e-01, -2.286e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(-2.681e-01, 1.233e-01, -9.107e-02, 4.626e-01, 2.822e-01, -1.779e-02, -2.746e-01, 2.485e-01, 2.647e-01, -3.444e-02, 1.327e-01, 1.832e-01, -1.440e-01, -7.945e-02, 6.637e-02, -2.819e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(-2.728e-01, 7.328e-02, 4.406e-02, 7.392e-02, -7.140e-02, 4.891e-03, 1.198e-02, 2.013e-02, -3.248e-02, -2.626e-02, 4.152e-02, -3.005e-02, 5.563e-04, 6.022e-02, 1.139e-01, 6.323e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-1.712e+00, -4.527e-01, 8.114e-02, 3.945e-02, -8.459e-01, -1.345e-02, 9.251e-03, -1.439e-01, -4.166e-01, 1.647e-01, -3.638e-03, 1.464e-02, -1.176e+00, -9.108e-03, -6.988e-02, 6.767e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(1.816e-03, -3.053e-03, 3.843e-02, -1.052e-01, -7.398e-03, 5.605e-02, 5.685e-02, 4.798e-02, -9.222e-03, 2.403e-02, 3.108e-02, 1.414e-02, 2.987e-02, -4.237e-02, 8.290e-02, 7.891e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(3.996e-02, 4.288e-02, 3.297e-02, 4.234e-01, -3.541e-02, -5.948e-03, -3.308e-02, -6.119e-02, 1.252e-02, 1.437e-02, 2.307e-03, -2.496e-02, -4.909e-02, -9.552e-03, -1.230e-02, -9.585e-03), r7);\n\tr0 = MulAdd(s1_0_1, M4(1.513e-01, 1.522e-01, -4.030e-01, -9.499e-02, -9.783e-03, 1.132e-01, 2.791e-01, -9.478e-03, 7.914e-02, -1.236e-01, -3.955e-01, 1.845e-04, -2.792e-03, -1.086e-01, 6.203e-02, -5.163e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(2.283e-01, -1.053e-01, -2.127e-02, 2.540e-01, -1.004e-01, 1.127e-01, 5.306e-02, 2.122e-02, 8.366e-02, -3.618e-02, 3.596e-02, 4.800e-02, 6.888e-02, 6.311e-02, -3.075e-02, 2.827e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.356e-01, 6.514e-02, 2.173e-01, 1.900e-01, 2.272e-02, 4.923e-02, -2.978e-03, 6.766e-02, -2.028e-02, 7.994e-02, 2.160e-01, -4.193e-02, 1.182e-01, 6.530e-02, 9.692e-03, 2.276e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(-4.196e-01, -2.495e-01, -6.254e-02, 1.384e-01, -1.907e-01, 1.571e-01, -6.736e-02, 3.276e-01, 7.072e-02, -1.764e-02, -1.997e-01, 1.556e-01, -2.215e-01, 7.609e-02, -8.449e-02, 2.519e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(3.509e-01, 7.533e-02, -1.194e-02, 7.016e-02, -2.551e-01, -8.442e-02, -5.077e-02, -7.159e-02, 1.958e-01, 3.066e-02, -6.820e-02, 3.860e-02, -9.215e-02, -1.233e-01, -1.288e-01, -1.272e-01), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.320e-01, 3.797e-01, 3.777e-02, 3.874e-01, -2.709e-01, -9.064e-02, 1.512e-01, -1.411e-01, 7.287e-01, -7.521e-02, -8.099e-02, 1.929e-02, 6.671e-02, -2.690e-01, -1.121e-01, -1.678e-01), r5);\n\tr6 = MulAdd(s1_0_1, M4(-6.558e-03, 8.023e-02, -1.149e-01, -4.659e-02, 6.744e-02, -1.198e-01, -4.305e-02, 1.182e-02, -7.363e-02, -1.842e-03, 5.672e-02, 1.741e-03, 1.072e-01, 4.097e-02, 2.782e-02, 9.251e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(7.209e-02, 6.520e-03, -1.898e-02, -5.835e-01, 5.933e-02, 1.622e-02, 2.632e-02, -2.499e-02, 3.616e-03, 1.586e-02, 1.354e-02, -2.620e-02, -8.875e-02, -3.711e-03, -3.870e-02, -3.293e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(6.898e-02, 3.202e-03, 7.644e-02, -5.016e-02, 5.515e-02, -7.644e-02, 7.009e-02, 2.845e-02, -4.122e-02, -1.830e-02, 6.145e-03, 6.501e-02, 8.187e-03, 8.028e-03, -1.039e-01, 3.755e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-6.936e-02, 3.599e-02, -1.053e-03, -9.197e-02, -5.458e-03, -4.929e-02, 3.173e-03, -8.783e-03, -1.240e-01, -1.675e-02, 2.223e-02, 3.902e-02, -2.626e-02, 1.473e-01, -2.043e-03, 3.307e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-6.140e-02, -5.726e-02, -1.461e-01, -1.342e-01, 9.439e-03, 1.870e-02, 8.044e-02, 1.338e-01, 3.049e-02, -4.114e-02, -3.188e-02, 4.688e-02, -9.905e-02, -8.369e-02, 5.736e-02, 6.717e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-7.814e-02, -5.329e-02, 2.261e-02, -2.707e-02, 8.920e-02, 1.133e-01, 2.082e-01, 3.870e-02, -2.216e-01, 5.183e-02, -7.813e-02, 9.406e-02, -1.024e-01, -1.031e-02, -9.327e-02, -1.370e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-1.689e-01, -8.843e-02, 1.106e-02, -8.181e-02, -5.235e-02, 4.016e-02, -4.996e-03, 4.286e-02, 6.272e-02, -9.033e-02, 2.005e-02, -7.953e-02, -1.257e-01, -2.813e-02, -1.150e-01, -2.914e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(2.105e-01, 2.626e-01, 1.592e-01, -1.603e-01, 4.601e-01, 8.272e-02, 9.760e-02, 2.059e-01, 1.413e-01, -7.785e-02, -5.149e-02, -3.883e-02, -7.303e-02, 1.056e-01, -2.771e-01, -4.219e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(3.597e-02, -4.678e-02, 2.592e-02, -1.692e-02, 4.317e-04, 6.999e-03, 1.910e-02, -1.074e-02, -5.015e-02, -4.737e-02, -1.391e-02, 2.018e-02, 1.081e-02, 1.830e-02, -4.253e-02, 5.495e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-3.712e-02, -1.599e-03, 4.353e-03, 8.915e-02, 2.689e-02, 8.239e-03, 5.499e-03, 9.349e-02, 2.364e-02, -4.583e-03, 5.312e-03, -4.284e-02, -1.116e-03, 7.958e-03, -2.078e-02, -4.449e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(4.056e-01, -4.832e-02, -4.047e-02, -1.412e+00, -4.248e-01, -5.531e-02, 1.657e-01, -7.974e-01, -2.271e-01, 3.781e-02, 1.071e-01, -1.540e-01, 1.778e-01, -8.631e-02, 1.264e-01, 3.241e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(4.354e-02, 2.808e-01, 2.581e-03, -1.106e-01, 1.089e-01, 6.082e-02, 3.854e-02, 3.415e-02, 2.247e-03, 3.140e-02, 5.009e-03, 8.331e-02, -9.157e-02, 2.837e-02, -6.369e-02, -7.625e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-3.512e-01, 1.635e-01, 1.379e-01, -2.685e-01, 1.440e-01, 1.457e-01, 3.261e-02, 2.396e-01, -1.335e-02, -4.184e-02, -1.994e-01, -2.348e-02, 5.723e-02, -1.410e-01, -3.711e-01, -6.842e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-3.094e-02, 2.198e-01, 7.860e-02, 3.629e-01, 4.302e-02, 1.819e-01, 6.504e-02, -1.278e-01, -1.231e-01, 7.654e-03, 2.481e-02, -2.842e-01, -1.440e-01, 1.654e-01, 3.014e-02, -1.587e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(-8.902e-02, -5.912e-02, -4.433e-02, -6.066e-02, 1.151e-01, -1.091e-01, 1.028e-01, -9.949e-02, -1.283e-01, -6.146e-02, -4.876e-02, -5.631e-02, -9.849e-02, -6.668e-02, 7.395e-02, -7.563e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(3.339e-02, 5.569e-02, 1.266e-01, 6.191e-03, 2.195e-01, -2.649e-01, -1.464e-01, 1.259e-01, 3.741e-01, 1.479e-01, 1.291e-02, 1.198e-01, -2.769e-02, 6.527e-02, 4.081e-01, 6.343e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(-7.936e-02, -6.411e-02, 2.771e-02, -7.517e-02, -5.180e-02, 3.063e-02, 1.735e-01, -1.177e-02, -1.900e-02, -3.775e-02, 3.986e-02, -1.196e-02, 6.621e-02, -4.512e-02, -1.695e-02, -2.841e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(7.214e-02, 8.651e-03, 1.268e-02, 4.564e-02, -1.759e-01, 5.453e-02, 2.884e-02, -1.458e-01, 4.021e-02, 1.439e-03, 9.294e-03, 2.226e-02, 4.895e-02, -2.411e-02, -1.968e-02, 9.428e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-2.811e-01, -1.060e-01, -4.733e-02, -1.494e-01, 8.058e-02, -5.024e-02, -2.867e-01, 3.526e-02, -4.281e-02, -1.973e-01, 9.420e-03, -2.526e-02, -2.212e-01, -5.130e-02, -3.946e-02, 3.178e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.243e-01, -9.434e-02, 4.384e-02, -1.454e-01, 1.564e-01, 5.847e-03, 7.640e-02, 7.202e-02, 1.565e-02, 1.117e-01, 4.497e-02, -6.519e-02, -1.067e-02, -1.907e-01, 8.995e-02, 2.479e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.910e-02, -1.348e-02, -3.123e-01, -6.449e-02, -6.658e-02, 1.803e-02, -1.303e-01, -3.284e-02, 3.450e-02, -5.216e-02, -1.049e-01, -4.180e-01, 2.229e-01, 6.183e-02, -6.664e-02, 3.128e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(8.054e-02, -2.869e-01, -1.484e-03, -2.406e-01, -4.016e-01, 3.061e-02, 1.432e-01, 8.432e-02, 3.888e-01, 1.039e-01, 1.532e-01, -1.658e-01, 1.392e-01, -1.919e-01, 4.940e-02, -2.318e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(-2.725e-02, 4.170e-02, -1.311e-01, 6.593e-02, 1.740e-01, -1.416e-02, -1.147e-01, -4.782e-03, -3.322e-01, -7.154e-02, 5.004e-03, -5.549e-02, 3.111e-01, -6.271e-02, 7.194e-03, -5.846e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-1.558e-01, -1.084e-01, -2.408e-02, 4.833e-02, -6.772e-02, 2.105e-01, -5.086e-02, 5.477e-02, 1.439e-01, 1.789e-01, 3.335e-01, 3.968e-02, 1.714e-01, -7.420e-02, 2.305e-01, 1.698e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(1.502e-01, -1.265e-01, 8.092e-02, 1.346e-02, -1.936e-02, 7.998e-02, 1.937e-02, -4.790e-03, -2.058e-02, -6.975e-03, 2.325e-01, 4.722e-02, 1.338e-01, 1.064e-01, 6.707e-02, -7.531e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(3.669e-02, 9.861e-03, 3.924e-02, -4.564e-03, -1.355e-01, 6.725e-02, 2.747e-02, 3.380e-02, 1.836e-01, 1.234e-02, 1.242e-02, 2.661e-01, 1.239e-01, 1.121e-01, 3.259e-02, 1.295e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-8.300e-02, -7.283e-02, -9.452e-02, 1.919e-01, 7.721e-03, 1.820e-01, -2.192e-01, 5.849e-02, 1.442e-01, 7.370e-02, -3.785e-01, -6.475e-02, -4.187e-02, 2.516e-02, -8.034e-02, 3.885e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.021e-01, -1.130e-01, 7.589e-03, -7.631e-02, 1.125e-01, -4.169e-02, -5.004e-02, 2.249e-01, 1.425e-01, 1.844e-01, 1.706e-02, -2.411e-02, 1.203e-01, 8.682e-03, 1.524e-02, 2.372e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(-7.215e-02, 1.658e-02, -1.758e-02, -5.725e-02, -4.316e-02, -4.048e-03, -4.688e-02, 2.256e-01, -1.048e-01, -1.109e-03, -1.867e-02, -1.983e-01, -2.710e-02, -1.014e-02, 2.283e-01, -4.183e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-2.781e-03, 1.296e-02, -3.116e-02, -2.900e-01, 3.148e-02, 1.640e-02, -2.167e-01, -2.967e-02, 1.999e-01, 3.139e-02, -2.349e-03, -3.197e-01, -7.309e-02, -1.627e-01, -6.781e-03, 7.675e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(1.796e-01, 1.276e-01, 5.783e-02, 1.285e-01, 8.789e-03, -9.486e-02, -3.668e-02, -9.746e-02, 2.059e-01, 3.889e-02, -1.148e-01, 4.285e-02, 4.882e-02, -2.106e-01, -2.270e-01, -2.264e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(5.632e-02, -2.972e-02, 1.479e-01, -2.979e-01, 2.731e-02, -2.044e-01, 1.735e-01, -8.886e-02, 6.270e-03, -4.493e-02, -4.280e-02, 1.537e-01, -1.036e-02, -1.308e-01, -1.216e-01, -2.135e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(-6.316e-03, -1.958e-02, 2.894e-02, 1.182e-02, -5.809e-03, 5.906e-02, 6.843e-02, -1.387e-03, -5.096e-02, 1.239e-02, -4.045e-02, -2.692e-02, -7.823e-03, 9.038e-02, -1.112e-01, -3.185e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(-5.133e-02, 2.784e-04, 3.509e-04, 2.739e-02, -3.145e-02, -2.980e-02, -3.186e-02, -3.914e-02, 4.733e-02, 2.267e-02, 1.449e-02, -6.479e-02, -1.275e-02, 6.982e-02, 2.081e-02, 8.280e-03), r7);\n\tr0 = MulAdd(s1_2_0, M4(-5.925e-01, -3.214e-02, 2.349e-02, -5.357e-01, -3.863e-02, -9.322e-02, 1.049e-01, -7.189e-01, 5.102e-02, 7.996e-02, 1.174e-01, -1.111e+00, -1.852e-01, 2.141e-02, 1.129e-01, -1.018e+00), r0);\n\tr1 = MulAdd(s1_2_0, M4(-4.773e-02, 4.552e-02, -7.071e-03, -1.079e-02, -2.115e-02, 4.646e-02, -4.183e-03, 2.390e-02, 8.404e-02, 7.421e-02, -9.049e-04, 1.526e-01, 4.763e-03, -1.945e-02, -1.801e-02, -1.959e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.567e+00, 3.401e-02, 1.161e-01, 1.727e-01, -6.384e-01, -1.692e-02, -1.220e-01, 2.943e-02, -7.298e-02, -3.032e-02, 7.682e-02, 3.113e-01, 2.450e-03, -4.196e-02, -2.559e-02, -1.728e-01), r2);\n\tr3 = MulAdd(s1_2_0, M4(2.133e-01, 1.577e-01, 3.319e-01, -8.955e-02, -3.040e-01, -1.382e-01, 7.910e-02, 2.005e-01, 1.747e-01, 3.892e-02, -4.338e-03, 3.984e-01, 2.160e-01, 1.833e-01, -1.066e-01, -8.467e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(1.300e-01, 3.285e-02, -5.140e-02, 2.225e-02, 1.026e-01, -3.145e-02, -9.666e-02, -1.515e-02, 1.307e-01, -4.634e-02, 6.495e-02, -5.004e-02, 2.557e-02, -5.107e-02, -7.724e-02, -2.960e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-8.655e-02, 1.333e-01, 8.511e-02, -1.995e-01, 4.444e-02, -1.353e-01, -1.126e-01, 8.665e-02, -2.152e-01, -9.176e-01, 2.338e-02, -8.275e-03, 4.744e-02, 3.275e-01, 4.672e-02, 1.160e-01), r5);\n\tr6 = MulAdd(s1_2_0, M4(-1.894e-02, 6.759e-02, 5.952e-02, -8.009e-02, -5.750e-03, 4.639e-03, -9.741e-03, -4.135e-02, 1.229e-04, 2.475e-02, 1.898e-02, -1.879e-02, 2.348e-02, -4.550e-02, 1.041e-01, 4.737e-04), r6);\n\tr7 = MulAdd(s1_2_0, M4(-5.746e-01, 3.698e-02, 9.865e-03, 1.149e-01, -4.752e-01, 2.542e-02, 6.583e-03, -1.318e-02, 4.349e-02, 1.351e-02, 6.133e-03, -5.325e-02, -6.234e-01, -2.290e-02, -9.046e-03, -4.766e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(5.161e-02, 1.083e-01, 5.941e-02, 3.398e-02, 1.365e-01, -1.077e-01, -1.020e-01, -9.876e-02, 1.780e-01, -4.425e-03, -1.519e-01, 5.190e-02, 1.169e-01, 1.699e-01, -2.763e-02, 2.617e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(3.724e-03, -7.518e-02, -9.506e-03, 3.121e-02, -4.077e-02, 9.968e-02, 8.373e-02, 3.620e-02, -7.057e-02, 9.784e-02, -3.165e-02, 2.043e-02, -3.963e-02, -2.018e-01, -2.943e-02, 2.117e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.467e-01, 3.529e-02, -1.826e-01, -8.014e-02, -1.349e-02, -8.852e-03, 1.224e-01, -1.361e-01, 1.259e-01, 2.262e-02, -7.423e-02, 1.388e-01, -4.153e-01, 4.406e-02, 4.627e-02, 2.802e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(2.524e-02, 1.075e-01, -1.591e-01, -8.039e-03, 3.395e-01, -1.145e-01, -1.006e-01, -1.380e-01, -5.079e-01, 3.666e-02, 4.444e-02, 3.719e-02, 2.095e-01, 1.029e-01, 5.537e-02, -7.224e-03), r3);\n\tr4 = MulAdd(s1_2_1, M4(1.086e-02, 3.314e-02, 2.242e-02, 5.193e-02, -1.306e-01, -4.403e-02, 7.424e-02, -4.309e-02, 1.007e-01, -1.281e-01, -2.966e-01, -1.026e-01, 1.663e-01, -8.865e-02, 2.039e-01, -7.364e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-9.036e-02, -8.078e-02, -3.177e-02, -3.405e-03, 2.876e-01, 2.305e-01, -1.641e-01, -1.732e-01, -1.376e-01, -2.177e-01, 1.608e-01, 3.917e-02, -2.674e-02, -1.288e-01, -1.663e-02, 5.916e-03), r5);\n\tr6 = MulAdd(s1_2_1, M4(-2.194e-02, -7.006e-02, -1.276e-02, 3.212e-02, 1.155e-01, -7.904e-02, 2.036e-02, 2.678e-02, -3.672e-02, 1.249e-02, 8.671e-02, -2.799e-02, -2.739e-02, 8.668e-02, 4.280e-02, -1.578e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-5.708e-02, -2.527e-02, -1.415e-02, -9.127e-02, -1.761e-02, 4.992e-02, 3.567e-02, 4.567e-02, 2.605e-01, -9.670e-03, -9.795e-03, -1.003e-01, 2.237e-01, -1.709e-03, -3.395e-02, 6.013e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(5.359e-02, 9.679e-03, -1.189e-01, -6.537e-02, 1.526e-01, -1.036e-01, 9.670e-02, 2.782e-02, 1.403e-01, 7.595e-02, 1.635e-01, 3.776e-02, -2.122e-03, 2.313e-02, 3.367e-01, 5.315e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(6.233e-02, -1.304e-01, -1.305e-02, 5.716e-02, -3.767e-02, 9.121e-02, 5.039e-03, -5.397e-02, 1.109e-01, 6.239e-02, -4.598e-03, -1.096e-01, 2.924e-02, -1.083e-01, 3.098e-02, -7.686e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(1.186e-02, 1.701e-02, 1.943e-01, 1.332e-02, -4.201e-02, -3.159e-03, 2.778e-02, 1.550e-02, -5.273e-02, -7.333e-03, 6.226e-02, 1.591e-01, 1.156e-01, 1.238e-02, -8.074e-02, -5.826e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(1.271e-01, 3.396e-02, 7.087e-02, -4.794e-02, 2.500e-01, 9.156e-02, 1.664e-02, 2.016e-01, 1.699e-01, 1.573e-01, 4.057e-02, -8.500e-02, 1.835e-01, 5.236e-02, 4.358e-02, 7.813e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-1.807e-01, -1.348e-01, 7.892e-02, -1.645e-01, 2.072e-01, 4.352e-02, 9.941e-02, 3.453e-02, 1.174e-01, -3.431e-02, -6.155e-02, -4.904e-02, -1.693e-01, 3.144e-02, 1.084e-01, 2.994e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-3.886e-02, -7.998e-02, -5.512e-02, -1.135e-01, 1.121e-01, 2.762e-02, -1.476e-02, 4.211e-02, -7.326e-02, 1.234e-01, -9.054e-02, 1.028e-01, -9.360e-03, -2.035e-01, 5.658e-02, 4.863e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-3.594e-02, 5.931e-02, -4.347e-02, -1.748e-02, 2.247e-02, -3.963e-02, -2.821e-02, -5.360e-03, -5.906e-04, -1.005e-02, -1.412e-02, 3.020e-02, -8.775e-03, -6.579e-02, 1.145e-01, -1.132e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(9.508e-02, 8.925e-03, 1.139e-03, 8.030e-03, -5.532e-02, -4.668e-03, 7.239e-03, -5.004e-03, 5.995e-02, -8.452e-03, -1.730e-02, -6.062e-02, 8.648e-02, 1.507e-02, 1.739e-02, 7.095e-02), r7);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.779e-02, 4.947e-02, -7.594e-02, -2.152e-01, 2.537e-01, -5.111e-02, -1.125e-01, 1.138e-01, 5.209e-02, -1.326e-01, 3.796e-02, -3.148e-01, -1.491e-01, 3.220e-02, 3.641e-01, 5.585e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.576e-01, -2.957e-01, 4.400e-02, 8.546e-03, -1.789e-02, -8.735e-02, 2.547e-02, -1.107e-02, -6.971e-02, -7.984e-02, 4.303e-03, -3.293e-02, -9.569e-02, -2.157e-01, -1.484e-02, -1.326e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.345e-01, -3.456e-01, 2.237e-01, -9.253e-01, -4.274e-02, -3.188e-01, 9.220e-02, -1.091e-01, -3.772e-02, -1.188e-01, 6.506e-02, -1.104e+00, -1.027e-01, -9.730e-01, -1.852e-01, 3.741e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(-1.387e-01, -5.136e-02, 9.699e-02, -1.021e-02, -3.498e-01, -6.324e-02, 6.273e-02, 4.486e-03, 1.552e-01, 6.433e-02, -8.336e-02, -3.525e-01, 6.307e-02, -1.042e-01, -1.593e-01, 3.073e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(-8.955e-02, -9.707e-02, -1.069e-01, -1.029e-01, 4.065e-02, 1.477e-01, -2.866e-02, 1.407e-01, 1.992e-01, 5.864e-02, -8.956e-02, 7.849e-02, 2.535e-01, 2.937e-02, -1.492e-01, 5.858e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-4.630e-01, 4.407e-01, 3.600e-01, 1.455e-01, -2.995e-01, -1.262e-01, -1.452e-01, 1.858e-01, -1.359e+00, 8.277e-02, -1.095e-01, 1.317e-01, 1.192e+00, -6.153e-01, -2.748e-01, 1.462e-01), r5);\n\tr6 = MulAdd(s0_0_0, M4(7.098e-03, -1.840e-02, -1.198e-01, 2.383e-02, -3.777e-02, 4.960e-02, 1.043e-01, 1.231e-02, -2.890e-03, -1.214e-03, -2.146e-02, -5.304e-02, 4.990e-03, 4.667e-02, 1.505e-02, -1.996e-03), r6);\n\tr7 = MulAdd(s0_0_0, M4(-2.549e-02, 2.064e-02, 2.238e-02, 9.302e-02, -8.051e-03, 2.133e-02, 8.254e-03, -2.202e-03, 4.267e-03, 5.486e-03, 1.785e-03, 1.248e-01, 2.557e-02, -1.485e-03, -1.004e-02, -1.193e-01), r7);\n\tr0 = MulAdd(s0_0_1, M4(5.681e-02, 1.706e-01, 1.670e-01, 3.119e-02, 6.393e-02, -3.408e-02, -1.209e-01, -1.122e-01, -2.183e-02, 7.228e-02, 1.896e-02, -1.152e-01, -1.659e-01, -7.203e-02, -8.071e-01, -1.217e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-2.300e-01, -4.184e-01, 1.675e-02, 9.095e-03, 7.918e-02, 7.424e-02, 2.422e-02, 4.207e-02, -1.373e-01, 3.532e-02, -2.465e-02, 5.008e-02, -1.736e-01, -2.312e-01, 2.957e-02, -4.385e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.477e-01, 5.837e-03, 1.101e-01, 6.754e-02, 8.169e-02, -9.476e-02, 2.070e-02, -3.232e-01, -2.651e-01, -2.377e-01, -1.452e-01, -1.755e-02, -5.089e-02, 8.270e-02, -5.144e-02, 3.308e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(2.847e-02, 1.740e-02, -1.191e-01, -4.564e-01, -9.267e-01, -1.021e-01, -1.930e-01, -7.574e-02, 1.490e-01, -1.377e-01, 5.455e-02, -5.468e-01, -4.493e-02, -9.524e-02, 4.207e-02, -4.464e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(-2.606e-01, 5.535e-02, 5.609e-02, 7.075e-02, -1.356e-03, 4.258e-02, -3.356e-02, 4.566e-02, 8.908e-02, -8.924e-02, 1.015e-01, -9.176e-02, 9.719e-02, -7.970e-02, -7.328e-02, -8.747e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(2.421e-01, -8.693e-02, -3.579e-02, 1.923e-01, 6.892e-03, -1.834e-01, 1.031e-01, -2.580e-01, -1.100e-01, -8.960e-02, 1.166e-01, 2.230e-02, -1.513e-01, -2.691e-01, 5.590e-02, -3.199e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(-6.992e-02, -4.426e-02, 5.108e-02, -6.969e-03, 1.865e-02, 1.320e-02, 3.849e-02, 3.603e-02, 4.322e-02, 9.245e-03, -2.864e-02, -9.783e-02, -1.881e-02, -1.358e-03, -1.517e-03, 1.157e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(3.426e-02, -7.105e-03, 1.585e-02, -1.838e-01, -1.003e-02, 1.560e-02, 6.597e-04, 3.882e-02, 2.377e-02, -1.216e-02, -2.035e-02, -5.481e-02, -6.730e-03, -1.399e-02, -2.734e-02, 1.202e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(-1.823e-02, 1.120e-01, -2.589e-02, 3.937e-02, -1.029e-01, -1.254e-01, 1.803e-01, 3.363e-02, 6.262e-02, 6.967e-02, -7.586e-03, -5.318e-02, 1.350e-01, 1.657e-01, -1.227e-01, 2.332e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(3.108e-02, 7.732e-02, 6.474e-02, -2.631e-02, -5.629e-02, 8.438e-02, 1.886e-02, 3.766e-02, 9.324e-02, 7.008e-02, 7.390e-03, 7.581e-02, -9.486e-02, -6.187e-02, 4.630e-02, 1.129e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.231e-01, 2.967e-02, -1.223e-01, -1.743e-01, 1.589e-01, 1.167e-01, 2.734e-02, -2.088e-01, 2.373e-02, -4.638e-03, -2.981e-03, -2.670e-01, -5.008e-02, -5.631e-02, 8.243e-02, 2.026e-01), r2);\n\tr3 = MulAdd(s0_0_2, M4(-1.219e-01, 4.528e-03, -7.983e-02, -5.074e-02, -1.312e-01, 4.677e-02, 2.821e-01, 3.825e-02, -1.329e-01, -5.239e-03, 1.891e-02, -3.673e-01, -1.822e-01, 2.719e-02, 1.076e-02, 3.929e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(4.094e-01, 3.443e-03, -9.791e-02, 1.487e-02, -5.571e-02, -2.105e-02, 6.158e-02, 5.790e-03, -1.833e-01, -6.916e-02, -5.746e-02, -6.196e-02, -1.497e-01, -7.583e-02, -1.556e-01, -6.125e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-2.636e-01, 1.338e-01, -1.362e-01, -7.484e-02, -1.129e-01, -7.779e-02, 5.082e-02, 1.355e-01, 7.030e-02, 6.634e-02, -1.614e-02, 6.697e-02, -1.237e-01, 1.975e-01, 1.322e-01, -1.864e-01), r5);\n\tr6 = MulAdd(s0_0_2, M4(-6.518e-02, -5.349e-02, -2.137e-02, 6.372e-02, 4.641e-02, 1.082e-02, -1.356e-02, 4.700e-02, -8.002e-02, 6.516e-02, -6.797e-02, 2.988e-03, -4.092e-02, -1.886e-02, -2.124e-02, 7.334e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(1.450e-02, 1.806e-02, 2.229e-02, -1.136e-01, -7.390e-02, 4.119e-03, -9.707e-03, 8.923e-03, -2.641e-02, 1.399e-02, -1.599e-03, -6.453e-03, 4.258e-03, 9.802e-03, 6.497e-03, 1.573e-01), r7);\n\tr0 = MulAdd(s0_1_0, M4(-1.083e-01, -8.098e-03, -1.178e-01, 1.524e-01, -8.369e-01, -9.982e-02, 1.082e-01, -3.083e-01, 3.133e-02, 5.893e-02, -5.504e-02, -4.428e-01, 5.388e-02, 1.497e-02, 8.514e-02, 4.088e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-4.572e-02, -2.803e-01, 2.535e-02, 8.325e-02, 1.549e-01, 1.679e-01, 3.137e-02, 6.531e-02, 2.343e-02, -1.929e-01, -2.793e-02, -6.325e-02, 1.908e-01, 4.289e-02, -1.989e-02, 1.391e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.493e-01, 1.382e-02, 1.026e-01, -8.188e-02, 6.135e-02, 6.887e-02, -2.740e-01, 1.664e-02, -7.811e-02, -5.687e-02, -7.787e-02, 1.862e-01, 4.113e-01, -1.015e-01, -2.700e-01, -1.488e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(-5.852e-02, -1.194e-01, -3.373e-01, 1.925e-01, -7.088e-01, -5.062e-02, 7.638e-02, 2.537e-01, 1.293e-01, -8.521e-02, 4.610e-02, -2.366e-02, -9.115e-02, 3.990e-02, -1.653e-03, 7.717e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(1.172e-01, 4.058e-02, 1.409e-01, 6.238e-02, 1.006e-01, 4.797e-02, -6.974e-02, 4.790e-02, 3.619e-02, -8.741e-02, 7.930e-02, -9.331e-02, 1.000e-02, -4.065e-02, -1.610e-02, -2.940e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(7.437e-02, 1.780e-01, 5.474e-02, 1.366e-01, -2.551e-01, -3.238e-01, 1.135e-01, -7.989e-02, 5.784e-02, 1.126e-01, 1.842e-01, -5.620e-02, 5.637e-02, -1.398e-01, 4.380e-05, -2.012e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(2.864e-02, 5.549e-02, -4.644e-02, 8.557e-03, 3.409e-02, -1.075e-02, 5.593e-03, 1.339e-02, 1.043e-02, 1.513e-02, 1.053e-01, 3.140e-02, -1.221e-02, 7.607e-03, 2.733e-02, -2.103e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(1.519e-02, 2.291e-02, 7.767e-03, 2.085e-02, -9.427e-02, 1.802e-02, 1.608e-02, -3.285e-02, -1.047e-01, -3.436e-03, -6.761e-02, -8.740e-02, -6.124e-02, -7.898e-03, -5.110e-03, -1.059e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(-1.867e-01, -3.089e-02, 1.013e-01, 2.684e-01, -5.296e-01, 3.867e-02, 1.367e-01, 2.435e-01, 2.801e-01, -2.608e-02, -2.136e-02, 1.778e-01, -2.498e-01, -5.193e-02, 5.572e-02, 2.941e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.597e-01, -7.831e-02, 7.112e-03, 8.788e-02, -9.509e-02, 3.796e-02, -2.287e-03, 1.408e-01, 9.579e-02, 2.212e-01, 4.150e-01, 7.674e-02, 2.601e-02, -1.778e-01, 3.958e-02, 7.449e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(6.633e-02, 6.254e-02, -3.783e-01, 2.208e-02, -1.218e-01, 7.768e-03, 1.043e-01, 1.019e-02, 9.971e-02, -8.433e-02, 2.298e-01, 1.812e-01, -8.349e-02, 6.999e-03, 1.506e-01, 4.198e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(8.092e-03, 6.112e-02, 2.400e-01, 1.814e-02, 2.056e-01, -1.591e-02, -3.940e-01, -4.313e-02, 3.508e-01, -1.125e-01, 3.049e-02, 1.929e-01, 3.356e-01, -1.860e-01, -7.791e-02, -1.367e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(6.210e-02, 1.275e-02, 1.937e-01, 2.755e-02, 1.482e-01, 3.158e-02, 1.645e-02, 3.490e-02, -9.791e-02, -3.241e-02, 4.775e-02, -1.327e-02, 1.187e-01, -2.558e-02, -5.454e-02, -1.829e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.986e-01, -4.018e-01, 8.349e-02, -1.578e-01, 6.103e-02, 2.072e-01, 1.954e-01, -4.864e-02, 1.438e-01, -9.432e-02, -3.844e-01, -9.455e-02, -2.159e-01, 2.875e-01, -1.814e-01, 2.247e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(1.229e-01, 2.248e-01, 1.516e-01, -3.738e-02, -4.414e-02, 3.938e-02, 1.279e-01, -6.872e-02, 9.395e-02, 7.976e-02, -1.706e-01, 4.704e-02, -6.105e-02, 8.444e-02, 2.006e-02, 1.945e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(-6.170e-02, 7.445e-02, 1.755e-02, 2.657e-01, -2.533e-02, 1.946e-02, 1.614e-02, 4.630e-02, 1.668e-02, -7.984e-03, 1.020e-01, -2.619e-02, 2.619e-03, 2.405e-02, 1.535e-02, -3.709e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(1.319e-01, 1.281e-01, 7.347e-03, -7.147e-02, 1.834e-01, 3.267e-02, -5.116e-02, -1.068e-01, -1.967e-01, -1.586e-01, -1.782e-02, 4.085e-02, 1.067e-01, 9.958e-02, 8.861e-02, 6.336e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(6.993e-03, 1.443e-01, 4.511e-03, 8.182e-02, 1.095e-01, 9.550e-02, 8.200e-02, 5.362e-02, 1.036e-02, -8.651e-02, -8.538e-03, 3.308e-02, -7.997e-02, -1.582e-02, 1.910e-02, 5.905e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(4.517e-02, -6.152e-04, -2.151e-02, 5.287e-02, 1.367e-01, 5.288e-02, 8.092e-02, -9.420e-02, -5.642e-02, 6.666e-02, -1.163e-02, 1.675e-01, -2.551e-02, -1.375e-02, 1.561e-01, -7.479e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(1.753e-01, -6.089e-02, 4.840e-01, -3.369e-02, 2.528e-01, -2.005e-01, 1.242e-01, 1.947e-01, -6.029e-02, 1.063e-01, -1.044e-01, 1.609e-01, -3.566e-01, -9.306e-02, 2.163e-02, 1.599e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(-2.697e-01, -1.875e-01, 1.640e-01, -1.912e-01, 4.020e-02, -5.658e-02, 3.985e-01, -7.594e-02, -7.790e-02, -2.845e-03, -1.030e-02, -1.321e-02, 4.449e-02, -5.945e-03, -1.447e-02, -1.544e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(3.664e-02, -3.134e-01, 1.663e-02, 9.150e-02, -1.456e-01, -7.309e-02, 1.584e-01, 1.925e-01, 2.099e-02, 2.245e-01, -1.046e-01, -1.220e-01, -2.443e-02, -1.362e-01, 1.280e-01, 4.341e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-1.900e-02, 2.390e-02, -8.608e-02, -5.359e-02, -3.595e-02, 8.363e-03, -1.370e-01, -1.783e-02, 1.280e-01, -3.049e-02, 1.129e-01, -2.424e-02, -4.010e-02, 2.723e-02, -5.167e-02, 1.085e-03), r6);\n\tr7 = MulAdd(s0_1_2, M4(-1.127e-01, 1.237e-02, 2.392e-03, -7.394e-02, 6.038e-02, 7.538e-02, 6.274e-02, -8.479e-02, -5.931e-02, -1.861e-02, -2.611e-02, 8.089e-02, 5.255e-02, 1.262e-02, 1.995e-02, 1.992e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-2.889e-01, 6.177e-02, -1.733e-01, -1.474e+00, 8.529e-03, -2.238e-02, -2.937e-01, 1.970e-01, 3.500e-02, 5.432e-02, 6.600e-02, -1.056e-01, 2.063e-01, 1.190e-01, 9.417e-02, -9.036e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(-9.620e-02, -6.455e-02, 1.164e-02, -4.726e-02, 1.100e-02, 7.582e-02, 4.526e-03, 6.446e-03, -7.645e-02, -4.772e-02, -9.034e-03, 2.369e-02, 4.703e-02, 2.154e-01, -8.478e-04, -3.539e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-2.652e-01, 2.401e-02, -1.699e-01, 1.454e-03, 1.250e-01, -1.257e-02, 9.173e-02, 1.026e-01, -2.854e-01, -4.271e-02, -1.290e-02, 2.288e-02, -5.614e-01, 8.527e-03, -2.918e-02, 1.422e-01), r2);\n\tr3 = MulAdd(s0_2_0, M4(-4.406e-02, 5.079e-02, 1.275e-01, -3.990e-01, -6.106e-01, 1.681e-01, 1.850e-01, -1.213e-02, -9.223e-02, -7.063e-03, -4.589e-02, -9.859e-02, -1.090e-01, -4.165e-02, 3.895e-02, 8.647e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(4.550e-02, -1.151e-01, -1.610e-01, -9.209e-02, -1.628e-01, 4.817e-02, -5.758e-02, 7.173e-02, 1.189e-02, -6.431e-02, -1.846e-03, -5.254e-02, -3.645e-02, 4.621e-03, 1.129e-01, 3.081e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(1.456e-01, -7.865e-02, -1.342e-01, 2.882e-03, -1.246e-01, 2.941e-02, -1.286e-01, 3.037e-02, -1.468e-02, -3.311e-01, -1.811e-01, -2.285e-02, -7.752e-02, -1.603e-01, -2.945e-02, -1.820e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(4.754e-02, -2.659e-03, -8.370e-03, -8.858e-03, 2.683e-03, 6.900e-02, 1.164e-02, -2.721e-02, -5.621e-02, 2.154e-02, -2.616e-02, 1.211e-02, -3.508e-02, 3.430e-02, 1.840e-02, -2.937e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-5.189e-01, 1.691e-02, 1.330e-02, 1.565e-02, -1.872e-01, 2.412e-02, 1.046e-02, 4.117e-02, -8.570e-01, 9.102e-03, -1.185e-02, 4.741e-02, -1.333e+00, 1.204e-02, 2.651e-03, 5.228e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(5.708e-02, 6.739e-02, 8.391e-02, -5.047e-02, -8.086e-02, 8.522e-02, -5.293e-02, 6.360e-02, 5.932e-02, 1.680e-03, -2.092e-01, -1.876e-01, -4.441e-02, 5.656e-02, -9.783e-02, -1.126e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(9.008e-02, -9.604e-02, -6.726e-04, 9.413e-03, -6.320e-02, 4.442e-02, -2.721e-02, 4.530e-02, 7.341e-02, -5.341e-02, -1.465e-03, 4.488e-02, -7.085e-03, 5.130e-02, 4.529e-02, 6.339e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(8.525e-02, -2.859e-02, -5.512e-02, 1.096e-01, 7.011e-02, -5.402e-02, 7.567e-03, 8.947e-02, -3.013e-02, -1.621e-02, 1.522e-02, -3.539e-02, -3.448e-01, 4.245e-04, -4.237e-02, -4.992e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-1.385e-02, -3.772e-02, -6.727e-03, -1.556e-01, -6.880e-01, 9.512e-03, -4.769e-01, -2.714e-01, -2.023e-01, -1.919e-02, -1.464e-01, 1.454e-01, 7.636e-02, -6.269e-02, -6.007e-02, 1.116e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(8.432e-02, -4.907e-02, 2.978e-02, -2.302e-02, 9.114e-03, 4.323e-02, 1.473e-01, 5.761e-02, -4.094e-02, -1.411e-01, -1.681e-01, -1.201e-01, -1.178e-01, -5.160e-02, -4.552e-02, -5.757e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-1.053e-02, 1.359e-02, -1.067e-01, 1.813e-01, 2.842e-02, 2.288e-01, -1.962e-01, -7.070e-03, 2.914e-02, -7.343e-02, 2.553e-01, -4.320e-02, -1.622e-01, -4.394e-02, -2.140e-01, -5.127e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-3.900e-02, 1.159e-02, -9.023e-03, 1.557e-02, 6.172e-03, 9.385e-02, -1.536e-01, -1.449e-02, 5.118e-02, 9.148e-02, -2.574e-02, -6.745e-02, 1.984e-02, 1.060e-02, 5.133e-02, 1.713e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(1.376e-01, -1.215e-02, -1.299e-02, 4.837e-02, 1.466e-01, 1.416e-02, -1.821e-02, -1.529e-02, -2.686e-01, 2.708e-02, 4.817e-04, -3.752e-02, 9.663e-02, 2.964e-02, 2.308e-02, 5.747e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-2.173e-02, -5.592e-02, 4.678e-02, 7.359e-03, -4.851e-02, -1.541e-01, -6.620e-02, -2.384e-01, 2.580e-01, 5.336e-02, 2.426e-02, 4.055e-02, 8.449e-02, 1.463e-03, 1.509e-02, 3.062e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(9.598e-02, 1.116e-01, -1.281e-02, 1.040e-01, 8.876e-03, -6.397e-02, 1.527e-02, 3.018e-01, 5.357e-02, -2.021e-02, 2.569e-02, -8.669e-02, 6.346e-04, 1.218e-01, -2.073e-03, -3.496e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(4.015e-02, 1.225e-02, 1.710e-01, -3.689e-02, -1.468e-01, 8.691e-03, -1.045e-01, -5.329e-03, 1.303e-01, 6.207e-02, -6.703e-02, -7.342e-04, -3.897e-02, 2.665e-02, -2.392e-02, 4.096e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(4.811e-02, 1.809e-01, -3.570e-01, 3.928e-01, 2.290e-02, -1.423e-02, -6.789e-02, 5.561e-02, -5.652e-02, -2.037e-02, 8.868e-02, 1.365e-02, -4.258e-01, 1.039e-02, 3.986e-02, -4.323e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(-3.872e-02, -1.334e-03, 1.635e-02, -1.348e-02, -1.164e-01, -6.057e-02, 1.107e-01, -6.477e-02, 1.501e-01, -9.191e-02, -1.780e-03, -1.093e-01, 8.726e-02, 2.827e-02, -3.336e-02, 9.094e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(3.538e-02, 2.922e-01, 9.326e-04, -1.908e-01, -5.413e-03, 4.137e-02, 1.765e-02, -1.549e-01, -1.044e-01, 7.181e-02, 3.612e-02, 6.487e-02, 8.553e-02, -7.860e-03, -3.949e-02, -6.812e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-7.345e-02, 2.527e-02, -8.767e-02, 1.418e-02, -8.353e-04, 2.082e-02, -4.329e-02, -6.767e-03, -1.335e-02, 3.585e-02, -7.039e-02, 3.508e-03, 1.834e-05, 4.463e-02, -7.012e-03, -3.800e-03), r6);\n\tr7 = MulAdd(s0_2_2, M4(-4.698e-03, -1.345e-02, -2.178e-02, -5.535e-02, 7.492e-02, 1.045e-02, -9.973e-04, -1.419e-02, -5.491e-03, 1.988e-02, 4.402e-03, 5.652e-02, -7.653e-02, 5.116e-03, -5.743e-04, -3.554e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(9.231e-02, -1.866e-01, -9.509e-02, 1.799e-01, 1.534e-01, -9.639e-02, -1.972e-01, -1.461e-01, 1.274e-01, 1.597e-01, -2.235e-01, -9.076e-02, -9.166e-02, 1.104e-01, 2.705e-01, 7.586e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.204e-01, 2.016e-01, -6.407e-03, -1.458e-01, 1.337e-01, 1.276e-01, 4.236e-02, 1.120e-02, 1.879e-02, 6.585e-03, 2.870e-02, 1.103e-02, 1.453e-02, 1.650e-01, -1.715e-02, 4.334e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-6.593e-02, -3.664e-01, 1.524e-02, 2.716e-02, 5.288e-04, 4.638e-01, -1.240e-01, 4.397e-01, 1.509e-01, -4.047e-01, 1.296e-02, -1.152e-02, -9.213e-02, -3.333e-01, -6.276e-02, 4.668e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(6.873e-02, 5.374e-02, 3.695e-01, -6.281e-02, 1.155e-01, 1.338e-02, -1.359e-01, -2.956e-01, 1.355e-01, -1.490e-01, -1.059e-01, 1.462e-01, -3.275e-02, 6.445e-02, 6.587e-02, 6.378e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-8.322e-02, -2.655e-03, 2.106e-02, 1.736e-02, 1.872e-02, 1.676e-02, -1.254e-01, 4.206e-02, -3.240e-01, -6.412e-03, 1.759e-01, -4.022e-03, 1.822e-01, -3.704e-02, -4.234e-02, -2.158e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(1.010e+00, 8.308e-02, 2.098e-01, -3.403e-02, 9.346e-01, 1.980e-01, -1.990e-01, -1.077e-02, -5.160e-01, -3.525e-01, 6.119e-02, -1.534e-01, 3.929e-01, -1.050e-01, -1.414e-01, 1.651e-01), r5);\n\tr6 = MulAdd(s1_0_0, M4(2.678e-02, 3.041e-02, 3.276e-02, 5.693e-02, -9.326e-02, -2.125e-02, 4.410e-02, 2.947e-03, -4.937e-02, -8.909e-02, 4.287e-02, 1.344e-02, 2.434e-02, 8.836e-03, -5.272e-02, 8.346e-03), r6);\n\tr7 = MulAdd(s1_0_0, M4(8.090e-02, -1.279e-02, -2.037e-02, -3.491e-02, -2.003e-02, 1.533e-02, 2.331e-02, -4.324e-03, 6.473e-02, -5.293e-03, 1.631e-02, 9.586e-02, -2.000e-02, -1.308e-02, -1.357e-02, -1.083e-01), r7);\n\tr0 = MulAdd(s1_0_1, M4(-4.929e-02, -2.031e-01, 3.234e-01, 3.451e-01, 1.385e-01, 7.338e-02, -2.456e-01, -1.069e-02, -1.423e-01, 2.397e-01, 2.320e-01, 4.007e-02, -2.552e-01, -1.170e-01, 1.692e-01, 3.450e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(4.598e-02, 3.294e-01, -4.480e-02, -2.544e-01, 1.043e-01, -7.199e-02, 2.774e-03, 2.134e-01, -1.795e-01, 5.047e-01, -1.345e-02, -1.803e-02, 4.504e-01, -1.370e-01, -5.919e-03, 5.255e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-5.556e-02, -3.465e-01, -1.090e-01, 5.434e-01, 2.346e-02, -2.960e-02, -1.357e-02, -6.090e-02, -1.509e-01, 1.032e-01, -3.149e-01, -7.220e-01, 4.430e-02, 1.086e-01, -9.442e-02, 1.309e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(5.279e-02, 9.915e-02, -2.265e-01, -3.004e-01, 1.061e-01, -4.263e-02, -1.026e-01, -6.775e-02, -1.090e-01, -1.331e-01, -2.807e-01, 1.083e-01, 1.398e-01, 2.192e-01, 2.956e-01, 3.535e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(1.968e-01, -4.343e-02, 5.365e-02, -4.056e-02, 2.222e-01, 5.530e-02, -8.853e-02, 4.145e-02, 2.622e-02, -7.202e-02, -4.176e-02, -6.246e-02, -4.596e-02, -7.818e-02, 1.749e-01, -7.242e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.016e-02, -3.721e-01, 3.799e-01, -3.029e-01, -6.190e-01, 2.932e-01, 6.910e-02, -9.270e-02, 1.195e+00, 1.756e-01, -8.349e-01, -3.574e-01, -1.079e-01, 2.332e-02, 2.674e-01, 1.995e-01), r5);\n\tr6 = MulAdd(s1_0_1, M4(6.914e-02, 6.215e-02, -9.976e-04, 8.898e-02, -9.805e-02, 7.413e-02, 9.629e-02, -5.644e-02, -1.916e-03, 7.106e-02, 7.177e-02, 4.068e-02, -6.170e-02, 7.623e-02, 1.381e-02, -2.222e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(3.350e-03, -3.520e-02, -5.041e-02, -1.760e-01, -3.410e-03, 2.111e-02, 1.816e-02, -2.894e-02, 4.815e-02, -5.189e-03, -1.905e-02, -1.117e-01, -3.806e-02, 6.818e-03, 1.177e-03, 1.624e-01), r7);\n\tr0 = MulAdd(s1_0_2, M4(5.991e-02, -1.973e-01, -7.105e-02, -4.881e-02, 5.202e-03, -9.002e-02, 2.096e-01, 2.982e-02, 6.908e-02, 1.520e-01, -4.894e-02, 3.054e-02, -6.365e-03, -2.588e-01, -3.800e-01, 1.001e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-2.191e-02, -3.344e-02, -8.416e-04, -1.363e-02, -1.665e-02, 2.327e-02, 3.020e-04, 9.117e-03, 1.232e-01, -3.225e-02, 5.049e-02, 4.056e-03, 1.304e-01, 3.056e-01, 6.099e-04, -3.005e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.495e-01, 1.233e-02, 3.089e-02, -4.779e-01, -3.045e-02, 1.023e-02, -2.692e-02, 9.120e-02, 3.303e-02, 3.506e-02, 5.225e-02, 6.600e-02, 2.429e-01, -1.679e-01, 1.570e-01, -3.842e-01), r2);\n\tr3 = MulAdd(s1_0_2, M4(-3.068e-01, 6.616e-02, 3.304e-01, -3.840e-01, 1.431e-01, -6.096e-02, -2.856e-01, 1.030e-02, 1.739e-01, -4.867e-02, -3.464e-01, 2.837e-01, 1.596e-02, -1.742e-01, -4.166e-03, -6.066e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-1.325e-02, 9.180e-02, 2.598e-02, 1.066e-01, 2.583e-01, 1.728e-02, -2.575e-02, 2.220e-02, 1.101e-02, 9.127e-02, 9.349e-02, 9.624e-02, 5.892e-01, -4.483e-02, 4.779e-02, -5.068e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-1.467e-01, -1.090e-01, 1.265e-01, 7.234e-02, 1.214e-02, 2.027e-01, -7.880e-02, 1.437e-01, 1.911e-01, 8.504e-02, -1.902e-01, -4.838e-02, -2.406e-01, -3.578e-02, 2.012e-01, -3.603e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(3.470e-02, -2.257e-02, 9.580e-03, 6.880e-02, -8.576e-02, -7.182e-03, 4.863e-03, 7.158e-03, -4.018e-02, -6.397e-02, 7.324e-02, 3.495e-02, -1.451e-01, 6.938e-02, -1.101e-01, 5.179e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-2.993e-02, -1.816e-02, -1.839e-02, 3.439e-02, -3.459e-02, -6.899e-03, -2.754e-03, -1.494e-02, 8.990e-02, 1.017e-02, 1.560e-02, -1.901e-03, -1.106e-01, -9.773e-03, -2.571e-02, -1.746e-01), r7);\n\tr0 = MulAdd(s1_1_0, M4(5.459e-02, -1.541e-01, -2.541e-01, -1.236e-01, 2.996e-01, -2.004e-02, 1.558e-01, 2.199e-02, 4.165e-01, 1.592e-01, 3.358e-01, -1.344e+00, -1.674e-01, -1.020e-01, 5.839e-02, -2.667e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(-5.992e-02, -2.945e-01, 4.155e-02, -3.889e-02, -5.864e-02, -2.217e-02, 3.559e-03, 7.214e-02, -5.338e-02, -1.456e-01, 4.668e-02, -1.735e-01, 1.791e-01, 1.489e-01, -2.071e-02, -4.118e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-2.033e-01, -9.285e-02, 8.502e-02, 1.277e-01, -2.028e-01, -4.271e-02, 1.850e-02, -8.900e-02, 4.140e-01, 9.352e-03, 1.140e-01, -9.992e-02, -7.299e-02, -1.502e-01, -8.490e-02, -3.733e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(8.563e-03, -1.363e-01, 9.074e-02, 1.053e-01, -1.407e-01, -3.686e-02, 6.048e-03, -1.987e-01, 3.047e-01, 7.092e-02, 3.330e-01, -4.101e-01, 1.027e-03, 4.201e-01, 1.103e-01, 1.961e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(3.156e-02, -7.756e-02, 7.251e-02, -7.140e-02, -1.067e-01, -4.466e-03, -9.832e-02, -5.349e-03, -3.905e-02, -1.092e-01, 1.069e-02, -9.519e-02, 7.012e-02, 2.366e-02, 3.043e-02, 3.571e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(8.223e-02, -7.075e-01, 3.264e-01, -5.122e-02, -8.830e-02, 7.160e-01, -3.486e-01, -7.672e-02, -6.643e-02, -5.015e-02, -1.882e-01, -5.439e-02, -4.843e-04, -4.033e-01, -1.073e-01, -1.016e-01), r5);\n\tr6 = MulAdd(s1_1_0, M4(-7.858e-03, -2.817e-02, 8.572e-02, 2.935e-02, -1.771e-02, 2.951e-02, 3.955e-03, -8.345e-03, -1.347e-01, -2.641e-02, 4.705e-02, 4.489e-02, -5.842e-02, 6.161e-02, 4.554e-02, -6.486e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(-3.137e-02, 2.032e-02, 3.029e-02, -1.151e-02, 4.288e-02, 4.726e-03, 1.701e-03, -1.255e-02, 8.095e-02, 4.181e-04, 6.588e-03, -6.795e-02, -1.623e-01, 5.122e-03, 2.210e-03, 6.766e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-1.058e-01, -1.784e-01, -2.076e-01, 6.810e-03, -3.810e-03, -1.702e-03, -8.346e-02, -1.134e-02, 4.819e-01, -1.779e-01, -1.149e-01, -1.306e-01, -3.554e-01, -3.238e-02, -4.719e-01, 1.150e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-2.253e-02, -9.040e-03, 7.509e-02, -3.597e-01, -7.522e-02, 7.393e-02, 1.738e-02, -1.439e-01, 1.905e-03, 2.022e-01, -8.241e-02, -5.798e-01, 1.820e-01, -7.066e-02, 2.762e-02, -3.424e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(2.533e-01, -5.622e-03, -5.621e-02, 9.615e-03, -2.448e-02, -1.670e-02, 1.494e-01, 7.086e-02, 2.147e-02, -1.340e-02, 3.415e-01, 1.100e-01, -6.359e-02, -6.835e-02, 3.759e-02, 4.656e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-5.460e-01, -5.217e-02, -1.209e-01, 3.972e-02, -3.988e-01, -2.700e-02, -2.246e-01, -2.760e-01, 1.930e-01, 2.877e-01, 4.887e-01, -2.995e-01, 1.063e-01, 2.016e-01, 3.461e-02, 1.836e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(-1.928e-02, 1.292e-02, 1.260e-01, 1.445e-02, -8.922e-02, -1.186e-01, -2.957e-02, -1.153e-01, 1.999e-01, -1.242e-01, -4.394e-01, -9.530e-02, -2.113e-01, 3.376e-02, 6.192e-02, 2.817e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-6.630e-01, -6.871e-01, -2.114e-01, 2.009e-02, -7.830e-02, -4.814e-01, -6.577e-01, -1.119e-01, -7.896e-01, -2.575e+00, -5.326e-01, -3.455e-01, -1.330e+00, -7.497e-01, 2.345e-01, 5.564e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(-9.646e-02, -9.900e-02, -8.130e-02, 1.271e-01, -2.964e-02, -1.414e-02, 4.166e-02, 2.372e-02, 9.244e-02, -7.504e-03, 8.559e-02, -1.258e-03, -1.013e-01, 7.436e-02, 4.368e-02, 3.710e-04), r6);\n\tr7 = MulAdd(s1_1_1, M4(-4.436e-02, 8.210e-03, 2.542e-02, 1.637e-01, -3.705e-02, -2.138e-03, -8.809e-04, 6.078e-02, -4.845e-02, -5.673e-02, -3.996e-02, -4.315e-02, 9.889e-02, 5.468e-03, 3.814e-03, -3.721e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-2.499e-01, -1.493e-01, -1.428e-01, 2.069e-01, 8.788e-02, 4.634e-02, -6.234e-02, -6.389e-03, 3.515e-02, -3.251e-02, -5.981e-02, -2.509e-01, -3.125e-03, -1.309e-01, 1.984e-01, -1.012e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(-4.671e-02, -5.055e-02, 1.066e-02, -1.570e-02, 4.681e-02, -6.319e-02, 1.450e-02, 7.674e-03, -1.770e-01, -6.281e-02, 1.784e-02, -2.404e-01, 6.916e-02, 2.654e-01, -2.750e-02, -1.907e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(-1.585e-01, 8.818e-02, -1.486e-01, -5.357e-02, -2.571e-02, 2.283e-02, 4.100e-02, -4.274e-03, 2.892e-01, -1.565e-02, -1.749e-01, -9.511e-02, 3.721e-01, 1.637e-02, 1.356e-01, -2.804e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.237e+00, 9.443e-02, 1.507e-01, -2.200e-01, 7.134e-01, 5.364e-02, -6.939e-02, 9.147e-02, 2.250e-01, 9.971e-03, -9.486e-02, -4.174e-02, 7.918e-02, -5.979e-02, -2.454e-01, 1.388e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(-1.309e-01, -1.870e-01, -1.615e-01, -1.792e-01, -3.647e-01, -1.186e-01, -2.995e-02, -1.121e-01, -2.721e-01, 9.053e-02, -2.782e-01, 8.400e-02, 1.696e-01, 9.134e-03, -2.667e-01, -9.235e-03), r4);\n\tr5 = MulAdd(s1_1_2, M4(2.752e-01, 1.740e-01, 2.777e-01, -1.324e-01, -1.019e-01, 1.357e-02, -2.905e-01, 8.046e-02, -1.815e-01, -6.000e-04, 2.606e-02, 1.197e-01, -2.938e-01, -2.684e-02, -2.243e-01, 6.722e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(1.097e-01, -5.197e-02, 8.015e-02, 5.920e-03, -3.705e-02, 6.715e-02, -3.443e-02, 1.311e-03, -4.514e-02, 2.090e-02, 9.063e-02, 7.865e-02, -6.269e-02, 1.444e-01, -1.427e-01, 4.367e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(5.409e-03, 1.135e-03, 1.467e-02, -4.348e-02, -2.754e-02, 2.156e-02, 3.101e-03, 2.620e-02, -6.267e-02, -5.596e-03, -4.978e-03, -4.675e-02, -1.260e-02, -1.316e-02, -3.647e-02, -1.251e-01), r7);\n\tr0 = MulAdd(s1_2_0, M4(-2.544e-01, -7.973e-02, -4.974e-02, -1.020e+00, 3.454e-01, 1.735e-01, 6.085e-02, 8.009e-01, -2.042e-01, -7.346e-02, 1.353e-01, -7.327e-01, 2.820e-02, -1.701e-01, 1.755e-01, -7.197e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(-1.398e-01, -1.767e-01, 1.893e-03, -3.104e-02, 2.447e-02, 2.281e-02, 6.333e-03, 5.111e-02, 8.658e-02, -1.768e-01, 1.403e-02, -2.600e-03, 6.585e-02, -9.375e-02, 6.457e-03, -4.516e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.182e-01, 3.517e-02, 2.394e-02, -5.479e-02, -5.583e-02, 4.754e-02, -1.824e-01, -1.157e-02, -3.879e-01, -1.108e-02, -1.709e-01, 8.050e-02, -3.979e-01, 7.094e-03, 1.843e-01, 3.139e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.381e-01, 6.463e-04, 1.761e-01, 1.742e-01, 5.391e-02, -1.111e-02, -9.796e-02, 6.384e-02, -2.390e-01, -1.480e-01, -2.348e-01, -3.777e-01, -9.332e-02, 3.200e-02, -3.850e-01, -1.178e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(-1.509e-01, -5.205e-03, 9.303e-02, 4.336e-03, -7.408e-02, 4.995e-02, -8.089e-02, 7.218e-02, 5.455e-02, -2.427e-02, 1.393e-01, -6.034e-02, -5.056e-02, -3.184e-02, 7.202e-03, -2.410e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-6.108e-02, -1.372e-01, 1.757e-01, -7.251e-02, -8.647e-02, 1.473e-01, -1.305e-01, 1.029e-01, -1.196e-01, -4.951e-01, 2.070e-01, -9.438e-02, -6.602e-02, 1.382e-01, -5.032e-02, 3.023e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-1.824e-02, 3.316e-02, 8.841e-03, -2.477e-02, -2.423e-02, -3.405e-02, 4.923e-02, 2.754e-02, 7.777e-03, 1.898e-02, -2.652e-02, -2.589e-02, -4.267e-02, 1.850e-02, -4.699e-02, -3.004e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(2.617e-01, 1.995e-02, 6.708e-03, 3.176e-02, -2.343e-01, -1.298e-02, -2.822e-03, -6.420e-02, -6.144e-02, 1.664e-02, 1.788e-02, 1.648e-02, -2.878e-01, 8.579e-03, 5.971e-03, 7.651e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(4.682e-02, 4.870e-03, 2.314e-01, 1.334e-01, 1.425e-01, 1.412e-01, 8.011e-02, -3.645e-02, -2.787e-01, -4.083e-02, 4.195e-02, 1.167e-01, 3.249e-01, -1.237e-01, -1.859e-01, -6.862e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(5.779e-02, -3.014e-03, 4.200e-02, -2.276e-01, -5.578e-04, 8.430e-02, -7.987e-03, 1.557e-01, 1.176e-01, -9.744e-02, -6.960e-03, -1.796e-01, -7.546e-02, 5.016e-02, -1.645e-02, 1.141e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.911e-01, -2.394e-02, 1.041e-01, -4.942e-02, -1.965e-02, 4.356e-02, -2.783e-02, 3.091e-02, -2.571e-01, -4.784e-03, -3.908e-02, -4.228e-02, 4.387e-01, 2.384e-02, -4.139e-02, 2.791e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-4.893e-02, 4.137e-02, 1.943e-02, 3.655e-01, 1.103e-01, 9.981e-03, -1.384e-01, 1.131e-01, -4.473e-01, -5.953e-02, -3.896e-01, -2.021e-01, -2.117e-01, -8.257e-02, -3.174e-01, -3.981e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(1.024e-01, 2.095e-02, 1.637e-01, 2.708e-02, 1.617e-02, -1.146e-02, -4.963e-02, 1.579e-03, -3.654e-02, -9.085e-02, 1.587e-01, -7.290e-02, 3.788e-03, -4.603e-03, -1.104e-01, -2.299e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-6.016e-02, -2.777e-01, -1.819e-01, -2.486e-03, -1.474e-02, 4.657e-01, 9.546e-02, 1.425e-01, -1.284e-01, 3.064e-01, -2.016e-01, -3.461e-02, -7.356e-02, 9.614e-02, 1.202e-01, -9.229e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(3.060e-02, 3.305e-02, -7.642e-02, 1.761e-02, 2.335e-02, 1.862e-02, 5.095e-02, 2.461e-02, 1.817e-02, 6.180e-02, -1.226e-02, 2.662e-02, 3.493e-02, 3.387e-02, -7.149e-02, 1.939e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(2.197e-01, 3.800e-02, 2.179e-02, 5.651e-02, 2.730e-02, -7.957e-03, -9.829e-03, 8.782e-03, -3.268e-01, 2.586e-03, -1.143e-02, 2.868e-02, -2.900e-01, -4.286e-03, -3.090e-03, -2.301e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-7.080e-02, -4.789e-02, -1.831e-01, -4.589e-02, 7.887e-02, 7.569e-02, 8.742e-02, -1.245e-02, 1.450e-01, 1.276e-02, -7.689e-02, 1.468e-01, -2.522e-01, -3.067e-02, -5.923e-02, 1.781e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(-4.096e-02, 5.609e-02, -2.857e-03, 4.354e-02, 6.818e-02, 9.414e-02, 4.422e-03, 6.310e-02, 1.682e-03, 4.240e-03, 9.417e-03, 3.090e-03, -1.178e-01, -1.114e-01, 2.260e-02, 9.989e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(8.262e-03, -3.547e-02, 5.486e-02, 4.939e-02, -1.102e-01, 9.197e-03, 4.574e-02, -7.028e-03, 1.773e-01, 1.242e-02, -4.538e-02, 4.082e-02, -1.469e-01, 5.083e-02, -3.032e-01, -1.172e-01), r2);\n\tr3 = MulAdd(s1_2_2, M4(-4.855e-01, -1.088e-02, 1.461e-01, -7.121e-02, 3.085e-01, 4.481e-04, -2.516e-01, 1.203e-01, -4.282e-01, -1.011e-01, 7.936e-02, -2.187e-01, 1.965e-01, -2.024e-01, 1.246e-01, -6.502e-04), r3);\n\tr4 = MulAdd(s1_2_2, M4(-7.870e-02, 6.483e-02, 1.957e-01, 5.638e-02, 4.132e-02, -2.743e-02, -1.172e-01, -2.092e-02, -1.165e-02, -7.701e-02, 8.675e-02, -7.983e-02, 1.107e-01, -5.782e-02, -1.586e-01, -7.044e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-1.491e-01, -3.246e-01, 1.628e-01, 6.706e-02, -3.200e-02, 1.487e-01, 5.378e-02, 8.390e-02, -1.249e-01, 1.470e-01, -1.501e-01, 5.634e-02, -5.679e-02, -2.239e-01, 6.250e-02, -1.235e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-3.502e-02, -2.300e-02, -1.829e-02, 1.417e-03, -1.471e-02, 8.559e-04, 3.688e-02, 2.059e-02, -1.497e-02, -1.094e-02, 9.212e-02, -1.487e-02, 4.028e-02, 7.818e-02, 8.726e-02, -2.863e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(4.793e-02, -7.070e-03, -1.017e-02, -9.070e-02, -2.569e-02, -3.445e-03, 1.467e-03, 4.311e-02, -1.428e-02, 1.018e-02, 2.486e-02, 1.652e-02, 4.987e-02, 3.600e-02, 3.167e-02, -9.506e-04), r7);\n\tr0 = max(r0, 0.0);\n\tT8[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT9[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT10[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT11[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT12[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT13[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT14[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT15[gxy] = r7;\n}\n\n//!PASS 5\n//!DESC conv4 (32x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T8, T9, T10, T11, T12, T13, T14, T15\n//!OUT T0, T1, T2, T3, T4, T5, T6, T7\n\n#define L0(x, y) V4(O(T8, x, y))\n#define L1(x, y) V4(O(T9, x, y))\n#define L2(x, y) V4(O(T10, x, y))\n#define L3(x, y) V4(O(T11, x, y))\n#define L4(x, y) V4(O(T12, x, y))\n#define L5(x, y) V4(O(T13, x, y))\n#define L6(x, y) V4(O(T14, x, y))\n#define L7(x, y) V4(O(T15, x, y))\n\nvoid Pass5(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-4.246e-02, -5.065e-02, 2.643e-02, -4.908e-02, 1.448e-02, -1.558e-01, -2.744e-02, 1.899e-02, -5.990e-02, 1.219e-01, 6.065e-02, -1.294e-01, -4.760e-02, 1.618e-01, 4.067e-02, 3.994e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-6.107e-02, -4.063e-02, 3.182e-02, 7.807e-02, 1.337e-01, -1.339e-02, 3.134e-02, -6.729e-02, 1.211e-02, -3.177e-03, 7.602e-02, 1.107e-02, -2.954e-02, 7.651e-04, 2.207e-02, 6.953e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-5.021e-03, 6.001e-03, -3.011e-03, 4.340e-03, -1.103e-02, 2.954e-03, -1.949e-02, 2.119e-02, -3.580e-03, 1.654e-03, -1.228e-02, 4.100e-03, -4.275e-02, -1.529e-02, -5.699e-02, -2.613e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-1.042e-02, 3.681e-02, -1.924e-03, 2.146e-03, -3.191e-02, -8.446e-02, -1.322e-02, 1.285e-01, 6.015e-03, 5.092e-02, 1.196e-02, 5.910e-02, 6.178e-03, 4.143e-02, -5.342e-03, 1.055e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(-3.088e-03, -3.670e-02, 5.930e-02, -9.369e-02, -1.366e-02, -9.932e-02, -9.609e-02, 2.240e-02, 1.068e-03, 4.994e-02, -1.832e-02, -7.452e-02, 4.918e-02, -2.652e-01, 1.733e-01, 3.265e-01), r4);\n\tr5 = MulAdd(s0_0_0, M4(7.581e-03, -2.541e-03, -5.060e-02, 3.115e-02, -5.914e-03, 3.850e-03, 9.918e-03, -1.753e-01, -6.757e-03, 4.044e-02, -3.446e-02, -5.305e-02, -7.789e-02, 3.787e-02, -8.042e-02, 5.512e-01), r5);\n\tr6 = MulAdd(s0_0_0, M4(-5.636e-02, -5.082e-03, -3.082e-02, -3.709e-03, -1.340e-02, 9.461e-04, -4.330e-02, -3.701e-02, 4.084e-03, 4.811e-03, -1.022e-02, 1.866e-02, -1.421e-01, -8.355e-01, -3.057e-03, 1.753e-01), r6);\n\tr7 = MulAdd(s0_0_0, M4(-3.771e-02, -2.582e-02, -5.340e-02, -3.466e-01, -4.240e-01, -5.801e-02, 2.124e-02, 9.896e-03, -2.685e-01, 1.955e-02, -3.885e-02, 4.063e-01, -7.666e-02, 2.523e-01, -2.553e-03, 2.357e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(4.882e-02, -1.331e-01, 6.463e-02, -8.456e-03, -1.665e-01, 4.643e-02, 1.642e-02, 8.819e-02, -8.752e-02, 2.044e-01, 7.787e-03, -1.509e-02, -2.478e-01, -5.608e-01, 3.069e-02, -1.332e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-7.799e-02, -6.647e-04, -9.004e-02, -1.676e-02, 9.562e-02, -1.815e-02, -7.824e-03, -6.354e-05, 3.478e-02, -1.688e-02, 9.534e-02, -3.965e-02, -3.610e-01, 1.635e-01, -4.318e-01, 2.315e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(2.069e-02, 3.048e-03, 9.559e-03, -2.690e-02, 1.679e-02, -2.985e-02, 1.364e-02, -3.910e-02, 1.118e-02, -5.006e-03, 6.973e-03, -1.298e-02, -2.577e-02, 6.549e-02, 1.911e-01, 1.560e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(-6.281e-03, -1.578e-02, -2.449e-02, 1.775e-02, 4.028e-03, -2.070e-01, -2.633e-02, -1.546e-01, 2.782e-02, 1.202e-02, 1.139e-02, 4.670e-02, -2.954e-01, 1.188e-01, 1.385e-01, -2.507e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(2.252e-02, -1.024e-01, 4.214e-02, -1.362e-01, 7.095e-03, -2.647e-01, 1.481e-02, -1.159e-02, 9.156e-03, -1.735e-02, 2.229e-02, 2.990e-02, -2.931e-01, 4.276e-01, -5.215e-01, 6.049e-01), r4);\n\tr5 = MulAdd(s0_0_1, M4(-4.777e-03, 1.212e-02, -4.627e-02, 3.006e-02, -2.521e-02, -6.213e-03, -3.683e-02, -3.030e-02, -7.916e-03, 4.798e-02, 6.183e-03, 1.030e-01, 2.046e-01, -4.496e-02, 9.359e-02, 5.480e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(-4.382e-02, -6.096e-03, 3.683e-02, -7.152e-02, -9.338e-02, -1.862e-02, -2.819e-01, 6.043e-02, -1.112e-02, 3.969e-03, -1.725e-01, -2.558e-03, 6.175e-01, 2.985e-01, 7.019e-02, 2.796e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(4.507e-02, 8.860e-02, -2.980e-03, -1.321e-01, 3.178e-01, 8.707e-02, 8.584e-02, 3.193e-01, -8.010e-02, 2.411e-02, -1.187e-03, 3.576e-01, 2.209e-02, -3.873e-01, 5.521e-02, -5.135e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(7.660e-02, 8.400e-03, 6.591e-02, -8.415e-02, 3.671e-02, 5.505e-02, 3.514e-02, 3.111e-02, -2.874e-02, 2.552e-01, 1.208e-02, 1.781e-02, 1.982e-01, -9.219e-01, -2.844e-01, -4.268e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-4.650e-02, 2.876e-03, -5.667e-02, 3.773e-02, -2.237e-02, -2.998e-02, -1.410e-02, -3.170e-02, 2.166e-02, -1.973e-02, 2.682e-02, -9.625e-02, -9.801e-01, -8.602e-01, -2.092e-01, -1.161e+00), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.253e-02, 1.672e-02, -5.807e-03, 1.188e-02, 1.369e-02, 1.065e-02, -8.383e-04, -1.957e-02, 9.424e-03, 3.003e-03, 3.881e-03, -2.269e-02, -3.922e-01, 5.404e-01, -8.637e-02, 1.005e+00), r2);\n\tr3 = MulAdd(s0_0_2, M4(-1.393e-02, 8.618e-02, 5.821e-02, 9.014e-04, 1.299e-02, -7.700e-02, -6.963e-02, -5.616e-02, 7.173e-03, -6.476e-02, -6.546e-02, 7.124e-03, -2.653e-01, 1.836e+00, -6.816e-01, -4.162e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(-2.431e-02, -2.411e-01, 2.080e-02, 1.194e-02, 1.440e-02, 6.187e-02, 2.111e-02, 7.430e-02, -8.093e-03, -1.104e-01, -1.399e-02, 2.040e-01, 2.006e-01, 1.177e+00, -9.115e-01, -4.199e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(1.033e-02, 9.465e-03, 1.422e-02, 1.834e-01, -4.694e-04, 7.105e-03, -4.179e-03, 3.359e-01, -2.403e-03, 5.700e-02, 2.417e-02, -2.163e+00, 8.469e-01, 1.234e+00, -3.385e-01, -3.848e-01), r5);\n\tr6 = MulAdd(s0_0_2, M4(8.815e-02, -1.959e-01, -1.692e-02, -7.826e-02, -1.362e-01, 1.409e-01, -8.047e-02, -2.954e-02, -4.612e-02, 1.935e-01, -2.143e-02, -6.523e-03, -4.143e-01, 5.181e-03, 4.214e-02, -9.035e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-8.083e-02, -1.336e-02, 1.501e-02, -6.322e-01, -2.599e-02, -4.066e-02, 5.401e-02, 9.272e-02, -2.101e-01, 7.469e-03, 3.151e-02, 3.199e-01, -1.371e-01, -8.808e-02, 5.971e-01, -5.010e-01), r7);\n\tr0 = MulAdd(s0_1_0, M4(1.488e-03, -1.840e-01, 8.420e-02, -1.814e-02, 1.959e-01, 1.333e-01, 7.313e-02, -1.618e-02, -1.594e-02, 1.199e-01, -2.459e-02, -8.133e-02, 2.182e-01, 5.950e-02, -6.558e-02, 1.466e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-5.005e-02, 1.151e-02, 2.821e-02, 3.796e-02, 6.886e-02, -7.593e-03, -1.504e-01, -5.119e-02, -6.628e-02, -3.213e-02, -9.069e-02, -9.054e-02, -4.705e-02, -1.274e-01, -3.280e-01, -1.460e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-3.056e-03, 3.245e-03, 4.833e-03, -1.191e-02, 4.105e-02, -4.452e-02, 8.738e-03, -5.013e-03, 7.587e-03, -1.837e-02, 1.436e-02, 3.649e-02, 3.417e-02, -3.456e-02, -2.535e-03, -7.587e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(2.091e-02, 9.706e-03, 6.837e-03, 8.135e-03, -6.208e-02, -1.420e-01, -1.427e-01, 9.425e-02, 2.586e-03, 7.881e-03, 2.007e-02, 5.734e-03, 2.367e-02, -8.868e-02, -8.140e-02, 4.453e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(3.241e-02, -5.166e-02, 2.485e-02, 7.645e-02, -7.920e-02, -1.523e-01, -5.313e-02, 3.161e-01, -1.828e-02, 6.816e-02, -9.884e-02, -7.836e-02, 4.193e-02, 5.343e-02, 1.003e-01, -7.313e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(4.114e-03, -2.052e-02, -3.828e-02, -1.204e-02, -2.494e-02, 1.047e-01, -4.693e-03, -5.169e-02, 1.004e-02, -4.192e-03, -4.265e-02, 2.558e-02, -9.251e-02, -4.857e-02, 8.149e-02, -4.220e-01), r5);\n\tr6 = MulAdd(s0_1_0, M4(-5.197e-02, -5.184e-03, 3.108e-03, 3.005e-02, 6.622e-02, 1.315e-02, -3.561e-02, -1.271e-01, 1.885e-02, 9.861e-03, 3.860e-02, 2.322e-02, -7.785e-02, -8.553e-02, -1.675e-01, -1.027e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(-7.998e-02, 2.540e-02, -2.434e-02, -3.304e-01, 4.540e-01, -1.013e-01, 1.125e-01, 3.945e-02, -1.476e-01, -5.552e-02, -5.667e-03, 2.204e-01, -8.668e-01, -1.052e-01, 6.026e-02, -1.762e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(-4.660e-02, -1.798e-01, -3.294e-02, -1.939e-02, 8.482e-02, -1.883e-01, -9.571e-02, -8.392e-02, 1.158e-01, -6.728e-02, -6.826e-02, -6.303e-03, 3.001e-01, -4.017e-02, 6.901e-01, 1.222e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-4.821e-02, -3.648e-02, -7.936e-02, -5.793e-02, -4.935e-02, -2.803e-02, -4.774e-02, -3.330e-02, -7.979e-02, -1.202e-02, -3.879e-02, -1.145e-01, 7.980e-02, 3.506e-01, -1.297e-01, 1.960e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.530e-02, 1.170e-02, -4.653e-03, 1.259e-03, 1.233e-02, -3.801e-02, -2.697e-03, 6.043e-02, 4.067e-02, -2.243e-02, -7.515e-03, 5.964e-02, 1.934e-01, -7.346e-02, 3.988e-01, 1.132e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(7.866e-03, -5.641e-02, 2.479e-02, -3.673e-02, -2.649e-04, 2.711e-02, -8.292e-02, -2.621e-01, 7.523e-02, 1.333e-01, 5.598e-02, 7.686e-02, 2.440e-01, -2.657e-01, 1.769e-02, 1.896e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-1.038e-02, 8.318e-02, -9.269e-02, 3.747e-03, 5.747e-03, -2.026e-01, 3.645e-02, 2.014e-01, 4.090e-02, 1.922e-01, 1.677e-02, -2.821e-02, 1.919e-01, 4.422e-01, -7.839e-02, -5.716e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(1.093e-02, 1.661e-02, -1.686e-02, 6.140e-03, -1.319e-02, 1.690e-02, 9.603e-02, 9.056e-02, -6.050e-03, -5.102e-02, -8.626e-02, -3.223e-02, 2.698e-01, 1.743e-01, 6.777e-02, -2.358e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-8.055e-02, -6.751e-03, -3.804e-03, 3.749e-02, -1.803e-01, 7.421e-05, -2.429e-01, -5.954e-02, 3.957e-02, 1.887e-02, 1.236e-01, 9.691e-02, -7.851e-02, 2.983e-01, 1.645e-02, 1.881e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(-5.807e-02, 6.383e-02, -3.943e-02, -2.933e-01, -7.145e-01, -1.198e-01, -6.960e-03, -3.428e-01, -2.882e-01, -8.214e-02, -4.102e-02, -4.777e-01, -5.033e-02, 2.362e-01, 1.916e-01, 1.985e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(-7.512e-02, 3.776e-02, 8.865e-02, -4.006e-03, -1.701e-01, 3.391e-03, -1.581e-02, 1.707e-01, 5.121e-02, 6.631e-02, 4.459e-03, -4.282e-02, -9.489e-03, -4.068e-01, -3.404e-01, 5.080e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-3.667e-02, -6.770e-03, -8.838e-03, 8.523e-02, 1.311e-02, -3.447e-02, -4.885e-02, -3.510e-02, -1.116e-02, -8.157e-03, -2.313e-02, -7.138e-02, -1.649e-01, -1.123e-01, -7.997e-01, -1.946e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-8.247e-03, 1.700e-02, -4.630e-03, -1.386e-02, -8.531e-03, -2.680e-02, 1.742e-02, -2.186e-02, 1.869e-02, 1.232e-03, 8.471e-03, -1.519e-02, 2.057e-01, -1.453e-01, -1.995e-01, 2.212e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-2.200e-02, 7.228e-02, 3.264e-02, -9.277e-02, -7.796e-03, 5.608e-02, 2.462e-02, -2.095e-02, 3.123e-03, -4.539e-02, 2.392e-02, 6.412e-02, -1.606e-01, 5.780e-01, 2.773e-01, -5.463e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(1.660e-02, -4.501e-02, 1.085e-02, -1.218e-02, -2.854e-03, 5.903e-02, 2.657e-03, 4.362e-02, -7.921e-02, 4.947e-02, 2.185e-02, -1.222e-01, -3.613e-02, -3.978e-01, 2.729e-01, -6.910e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(2.092e-03, 1.812e-02, 2.339e-02, -2.003e-02, -1.505e-02, -4.430e-02, -2.842e-02, -7.419e-01, -2.758e-03, 1.311e-02, 1.839e-02, -1.471e-04, -1.186e-01, 5.319e-01, -1.092e-01, 8.392e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-3.265e-01, -1.142e+00, 3.782e-03, 2.374e-01, 1.441e-01, 2.746e-01, 2.249e-02, 2.137e-02, 3.207e-01, -2.617e-01, 3.316e-02, 1.582e-01, -2.419e-01, -4.880e-02, -6.384e-02, -4.408e-01), r6);\n\tr7 = MulAdd(s0_1_2, M4(3.432e-02, -6.923e-02, 7.885e-02, -3.454e-01, -3.152e-01, -2.904e-03, 1.678e-02, 2.117e-01, -2.918e-01, 5.860e-02, -7.965e-02, 3.487e-01, -9.051e-01, -5.946e-01, 4.917e-02, 2.389e-01), r7);\n\tr0 = MulAdd(s0_2_0, M4(-1.202e-02, -1.702e-01, 6.869e-02, -4.728e-02, 2.327e-01, 6.500e-02, 1.489e-01, 4.669e-02, 3.560e-02, 1.402e-01, 3.543e-02, -1.827e-02, 1.205e-02, 1.551e-01, -1.784e-01, -2.087e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(-4.463e-02, -8.645e-03, -3.732e-02, 3.822e-03, -2.118e-02, 4.445e-02, 1.841e-01, -1.281e-01, 6.520e-02, -1.230e-03, 1.075e-01, -4.163e-02, -1.146e-01, -1.389e-02, -1.062e-01, 9.517e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.005e-02, 1.135e-02, -4.795e-03, -1.220e-02, 1.224e-02, -1.095e-02, 7.961e-03, -1.256e-02, -1.183e-03, -2.289e-03, -5.285e-03, 3.578e-02, 3.451e-03, 2.822e-02, -4.077e-03, -3.659e-04), r2);\n\tr3 = MulAdd(s0_2_0, M4(6.564e-02, 3.480e-02, 1.317e-02, -7.009e-03, -3.135e-01, 7.920e-02, -1.967e-02, 5.823e-02, -5.334e-02, -3.878e-02, 2.030e-02, -1.799e-02, 4.303e-02, 1.428e-01, -1.059e-02, -4.270e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-8.383e-02, -4.214e-02, 4.968e-02, -1.644e-01, -5.113e-01, -2.470e-01, -1.460e-01, 7.885e-03, -2.990e-02, -1.077e-02, -6.895e-02, -4.199e-03, 2.283e-01, 2.083e-02, 1.791e-02, -2.635e-01), r4);\n\tr5 = MulAdd(s0_2_0, M4(8.822e-04, 1.207e-02, -1.651e-02, 2.177e-02, -6.896e-03, -6.622e-03, -4.993e-02, -6.075e-02, 4.476e-03, 1.051e-02, 5.917e-03, 1.366e-02, 8.333e-03, 3.270e-02, -3.335e-02, 9.167e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(-2.301e-02, 1.958e-03, -3.088e-02, -4.250e-02, 2.504e-02, 1.658e-04, 2.928e-02, -3.120e-02, -2.759e-02, 8.303e-03, -6.888e-02, 5.801e-02, -1.982e-01, -2.188e-02, -6.403e-02, 5.886e-01), r6);\n\tr7 = MulAdd(s0_2_0, M4(-4.302e-02, -7.651e-04, -2.306e-02, -3.441e-01, -4.935e-02, -7.558e-02, 5.874e-02, 1.452e-01, -2.017e-01, 1.120e-02, -3.693e-02, 2.421e-01, 6.681e-02, 7.348e-02, -2.486e-02, -1.494e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-3.543e-02, -1.825e-02, 5.666e-02, -8.762e-02, 2.562e-02, -2.438e-01, -8.101e-04, -7.645e-02, 7.837e-02, -6.295e-02, 1.905e-02, -2.483e-02, 1.250e-02, -3.221e-01, -4.032e-02, 2.000e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-2.007e-02, -1.954e-02, -1.327e-01, -6.172e-03, 8.742e-02, 8.753e-02, 1.147e-02, -5.375e-02, 7.969e-02, -3.640e-02, -2.418e-02, -1.091e-02, 8.820e-03, -7.373e-02, 2.940e-01, -1.657e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-6.024e-03, 3.915e-03, 6.088e-03, -1.796e-02, 2.503e-02, -2.917e-02, -6.139e-03, 1.402e-02, 1.064e-02, -1.592e-03, 3.280e-03, 1.730e-02, -5.651e-02, 7.517e-02, 7.600e-02, 4.212e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-1.404e-01, 3.212e-02, 1.084e-02, -1.463e-02, 1.240e-02, -1.125e-01, -4.735e-02, 5.810e-02, 1.928e-01, -7.298e-03, -3.382e-02, -1.751e-02, -2.643e-01, -1.464e-02, 1.005e-01, 1.873e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(8.516e-02, -7.377e-02, 6.584e-02, -3.708e-01, -4.114e-01, -5.536e-02, 8.370e-02, -1.112e-01, 1.056e-01, 1.047e-01, -1.598e-02, -1.157e-01, 3.708e-01, -7.385e-02, 6.151e-01, 4.853e-01), r4);\n\tr5 = MulAdd(s0_2_1, M4(6.675e-04, 3.611e-03, 2.046e-02, 5.676e-02, -2.643e-02, 9.541e-02, 3.926e-02, 2.465e-01, 1.066e-02, 5.190e-02, -6.037e-02, 4.276e-02, 1.380e-01, -1.484e-02, -1.291e-01, 2.934e-01), r5);\n\tr6 = MulAdd(s0_2_1, M4(7.566e-04, 2.233e-04, -1.861e-02, -5.281e-02, 1.812e-02, 4.124e-02, -1.330e-01, 2.483e-01, -6.220e-02, 1.588e-03, -6.727e-02, 2.322e-02, 2.855e-01, -4.061e-01, 1.087e-01, 9.094e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(-3.233e-02, -2.696e-02, -3.317e-02, -3.438e-01, 4.187e-02, -1.649e-01, 2.957e-02, -8.434e-02, -2.698e-01, 6.431e-03, -6.809e-02, 2.490e-01, -8.107e-02, 2.076e-01, -2.492e-02, 1.734e-01), r7);\n\tr0 = MulAdd(s0_2_2, M4(2.867e-03, -2.026e-01, 4.582e-02, -1.807e-02, -1.060e-01, 1.714e-01, 4.073e-02, -1.400e-01, -2.959e-04, 4.662e-02, 3.347e-02, -6.414e-02, 7.454e-01, 1.247e-01, 1.751e-01, -6.489e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(-8.002e-02, 4.562e-03, -7.862e-02, 4.140e-02, 7.468e-02, -2.981e-03, -1.614e-03, -1.611e-01, 7.693e-03, 1.215e-03, -1.205e-02, -2.962e-02, -2.112e-01, 1.354e-02, -5.304e-01, 4.579e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(3.021e-03, -1.295e-02, -6.177e-04, 8.781e-03, 1.245e-02, -2.181e-02, 5.976e-03, 1.515e-02, 1.410e-02, -3.798e-03, 2.295e-03, 9.563e-03, 1.359e-02, 6.224e-02, -3.480e-02, 1.319e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(7.070e-02, -2.133e-03, 1.092e-02, -3.501e-03, -4.323e-01, -7.215e-02, -7.779e-02, 1.620e-02, 3.236e-01, -2.008e-02, -2.247e-02, 4.798e-02, -1.602e-01, -4.011e-01, -3.367e-01, -4.307e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(6.449e-02, 3.645e-02, 4.013e-02, -4.121e-01, -9.572e-02, -2.035e-01, -7.936e-02, -5.988e-01, -7.921e-01, -1.281e-01, 2.549e-02, -5.620e-01, 1.796e-01, -8.857e-01, -5.122e-01, -4.589e-01), r4);\n\tr5 = MulAdd(s0_2_2, M4(-4.231e-03, -3.332e-02, -7.007e-02, -9.550e-02, -1.187e-02, 7.397e-03, 1.091e-02, -3.154e-01, -6.689e-04, -7.318e-03, -4.430e-02, -2.521e-01, 6.495e-02, -6.792e-02, 1.891e-01, 7.431e-01), r5);\n\tr6 = MulAdd(s0_2_2, M4(-2.766e-01, -1.042e-01, 1.994e-02, -8.071e-01, -1.428e-01, -1.978e-01, 3.659e-02, 7.107e-01, 4.159e-01, -4.312e-01, -4.226e-02, -1.234e+00, -3.934e-01, -1.518e-01, 1.852e-01, 1.169e-01), r6);\n\tr7 = MulAdd(s0_2_2, M4(-5.175e-02, -6.230e-02, -2.318e-02, -4.794e-01, 1.735e-01, 7.644e-02, 3.592e-02, 1.418e-01, -2.082e-01, 2.530e-02, -4.966e-02, 1.578e-01, 8.311e-01, -2.370e-01, -3.682e-01, -8.964e-01), r7);\n\tr0 = MulAdd(s1_0_0, M4(-6.928e-02, 6.880e-02, -1.920e-02, -1.528e-01, 2.578e-03, 1.557e-02, -5.705e-02, -1.141e-01, 2.411e-02, 8.107e-02, -3.229e-02, 1.423e-01, 7.041e-02, -1.362e-01, 9.218e-02, -1.988e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(5.722e-02, 4.613e-02, 7.007e-02, -4.826e-02, -2.570e-03, 4.126e-02, -2.456e-02, 4.613e-02, -7.775e-02, -6.605e-02, -2.175e-02, -2.586e-02, -1.262e-01, -3.726e-02, -5.837e-02, 3.767e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-1.465e-02, 1.079e-02, -2.716e-03, 1.862e-02, -1.588e-02, 1.426e-02, -9.416e-03, -9.530e-03, 4.113e-02, -3.361e-02, 2.608e-02, 3.265e-03, 1.585e-02, -2.686e-03, 8.857e-03, -3.022e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-3.687e-04, 1.732e-01, 4.236e-02, 1.549e-02, 2.597e-02, -1.482e-02, 1.058e-01, 4.066e-03, -1.739e-02, -9.396e-02, -2.264e-02, 6.627e-02, 3.794e-02, -1.226e-01, -2.867e-02, -1.636e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(7.367e-04, 9.297e-02, -4.577e-02, -2.670e-03, 2.124e-03, 2.246e-01, -1.063e-01, 5.833e-03, 1.090e-02, -1.045e-01, 1.224e-01, 9.124e-02, 5.384e-02, -1.177e-01, 1.539e-01, -2.618e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(7.718e-03, 1.904e-02, 1.130e-01, -3.102e-02, 3.817e-03, -6.042e-02, 6.804e-03, -1.690e-02, 3.259e-02, -1.633e-02, -2.314e-02, -2.133e-02, -1.629e-04, -1.421e-02, -5.258e-02, -2.315e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(4.023e-02, 1.969e-04, -1.132e-01, -3.323e-02, -6.274e-03, 7.009e-03, 6.874e-02, 7.196e-02, 3.767e-02, 8.897e-03, -7.333e-02, -3.777e-02, 1.847e-02, -4.922e-03, 2.211e-02, -2.143e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-6.346e-01, -4.555e-02, -8.283e-02, 1.453e-01, -4.367e-02, 9.052e-02, -6.316e-02, -7.571e-02, 1.789e-02, 2.921e-02, 8.430e-03, 8.274e-03, 4.743e-01, -8.907e-02, 4.483e-02, 9.892e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-2.844e-02, -4.502e-03, 8.101e-02, 1.262e-01, 1.275e-01, 2.763e-01, 3.134e-02, -6.533e-03, -8.571e-02, 2.871e-02, -8.548e-02, -1.946e-01, 1.109e-01, -6.673e-01, 2.351e-02, -1.440e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.775e-03, -1.510e-02, -2.903e-02, 1.242e-02, -2.707e-02, -1.503e-02, -2.190e-01, -6.268e-02, -1.157e-01, 1.062e-02, 1.479e-01, -1.803e-02, -1.775e-01, 1.753e-02, -1.026e-01, -2.310e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.654e-02, -1.556e-02, 9.798e-03, -2.368e-02, 7.157e-03, -1.524e-02, 1.762e-04, 1.340e-02, 3.884e-01, 2.473e-01, -4.699e-02, 7.366e-02, 3.819e-02, 2.106e-02, -1.382e-02, -4.894e-03), r2);\n\tr3 = MulAdd(s1_0_1, M4(-3.447e-03, -1.018e-01, 6.577e-02, 7.283e-02, 5.001e-02, -3.289e-01, -1.234e-01, 1.891e-02, -2.497e-02, -4.135e-02, -1.417e-01, -3.875e-02, 7.530e-03, -1.360e-01, 5.794e-02, -1.159e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(-3.164e-02, -2.568e-01, 2.728e-02, -6.404e-02, 1.257e-02, 2.986e-01, -4.065e-02, -2.342e-03, -6.247e-02, 9.314e-02, -6.803e-02, 3.954e-03, 2.660e-02, 1.872e-01, -7.820e-03, 8.089e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.395e-02, 6.745e-03, -7.433e-02, -7.272e-02, -3.227e-03, -8.697e-02, -6.558e-02, -5.874e-02, -2.453e-02, -7.880e-03, 2.214e-02, 2.930e-01, -2.093e-03, -1.156e-01, -2.801e-02, -1.167e-01), r5);\n\tr6 = MulAdd(s1_0_1, M4(4.309e-02, 1.436e-02, -1.324e-01, 9.219e-02, 1.223e-02, -1.910e-02, -2.878e-01, -4.223e-02, 2.329e-02, 5.661e-02, -2.169e-01, -4.806e-02, 7.704e-02, -3.586e-03, -2.421e-01, -5.822e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(2.250e-01, 6.877e-02, -1.810e-02, -1.204e-04, -3.104e-01, 1.672e-01, -1.827e-01, 9.945e-02, -1.190e-01, 8.760e-03, -3.223e-01, 9.494e-02, -3.944e-01, -1.501e-01, -9.852e-03, -3.210e-01), r7);\n\tr0 = MulAdd(s1_0_2, M4(-2.037e-01, 1.354e-01, 2.402e-02, -2.210e-01, 2.160e-01, 3.370e-01, -7.254e-02, -3.104e-01, -2.089e-03, 2.674e-03, -4.204e-03, -7.711e-03, -2.552e-02, 9.712e-02, 2.149e-03, 4.301e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(3.410e-02, -1.231e-02, -7.911e-03, -9.671e-02, -1.849e-02, -1.388e-02, 2.574e-02, 1.325e-01, -4.743e-02, 1.937e-02, 2.803e-02, -6.759e-02, -3.155e-02, 1.357e-02, -2.997e-02, 5.882e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.760e-02, -5.534e-03, 2.755e-03, -1.073e-02, -3.200e-02, -1.465e-02, 2.074e-04, 4.164e-02, -5.937e-02, -5.432e-02, 7.133e-03, 1.292e-02, 1.216e-02, 1.596e-03, -9.956e-04, 9.139e-03), r2);\n\tr3 = MulAdd(s1_0_2, M4(-5.772e-02, -9.625e-02, 3.455e-02, -2.211e-02, 4.198e-02, -1.146e-01, 1.276e-01, 1.482e-01, -3.058e-02, 9.908e-02, 2.253e-02, -1.075e-01, 1.113e-02, 9.962e-02, 5.921e-02, 2.628e-01), r3);\n\tr4 = MulAdd(s1_0_2, M4(-2.387e-02, -3.230e-02, -2.579e-02, 2.014e-01, 5.311e-03, 1.527e-01, -3.654e-02, -7.509e-02, -8.474e-03, -1.043e-01, -3.159e-02, -1.993e-02, -9.031e-03, -5.404e-02, 7.264e-02, -2.145e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-1.122e-02, 2.926e-02, -2.984e-02, -5.262e-01, 5.321e-03, 4.899e-02, 1.095e-01, -8.944e-01, -1.904e-02, -1.857e-02, 6.870e-03, -3.061e-01, -1.410e-03, 7.015e-03, 2.897e-02, -5.490e-01), r5);\n\tr6 = MulAdd(s1_0_2, M4(-7.447e-04, -1.655e-01, -1.035e-01, -1.264e-01, 3.781e-01, 7.898e-02, 2.007e-01, 6.023e-02, -3.987e-02, 2.146e-01, 5.837e-02, 1.130e-01, 2.015e-02, -2.118e-01, -4.436e-02, 1.432e-01), r6);\n\tr7 = MulAdd(s1_0_2, M4(1.208e-02, 3.067e-02, -1.565e-01, 4.514e-02, 1.228e-01, 9.523e-02, -9.116e-02, 5.338e-03, -1.115e-01, -2.110e-02, 3.763e-02, 3.103e-02, -1.350e-02, 3.966e-02, 9.880e-04, -3.167e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(1.433e-01, -6.727e-02, -6.402e-02, -4.671e-03, 4.293e-02, 9.138e-02, 1.724e-01, -1.262e-01, -5.170e-03, 1.639e-01, -5.182e-02, 1.511e-01, -3.944e-01, -4.485e-01, -3.194e-01, -2.215e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-3.935e-02, 7.582e-02, -1.231e-01, -6.389e-03, 9.305e-02, 1.853e-01, 1.656e-01, 8.815e-02, 2.910e-02, -1.895e-01, -1.059e-01, 1.315e-02, 2.916e-02, -5.517e-03, -1.903e-01, -8.220e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-3.243e-04, -1.740e-02, 1.930e-02, 1.591e-02, -5.250e-03, 1.208e-02, -1.981e-05, -9.539e-03, -3.747e-02, 6.148e-02, -2.122e-01, -6.847e-02, -2.407e-02, 2.129e-02, 3.630e-03, -1.203e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(8.937e-03, 2.596e-03, -6.718e-02, 5.693e-02, -4.468e-02, -1.364e-01, 3.827e-02, 9.460e-02, 2.991e-01, 8.193e-02, -1.020e-01, 6.987e-02, 1.161e-02, -4.733e-02, -2.338e-03, 7.633e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-2.960e-02, -1.331e-01, -2.316e-02, -1.205e-01, -3.767e-02, -1.630e-01, 1.016e-02, 3.735e-01, 5.190e-01, 7.574e-02, 1.257e-01, -4.696e-02, 8.051e-02, -1.504e-01, 3.027e-01, -8.813e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(4.025e-03, 4.180e-02, -1.353e-01, -6.203e-02, 3.420e-03, -2.346e-02, 1.655e-01, 3.514e-02, -2.764e-01, 1.702e-02, 2.577e-02, 3.381e-02, 1.794e-02, -3.717e-02, -5.048e-02, 1.677e-04), r5);\n\tr6 = MulAdd(s1_1_0, M4(-4.058e-02, -7.654e-03, 2.449e-03, 9.046e-02, -4.479e-02, -8.274e-03, -1.152e-02, 8.323e-03, 1.341e-01, 1.263e-02, -1.235e-01, -7.864e-03, 1.966e-02, 4.680e-03, 8.547e-02, 7.143e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(-4.863e-01, 6.811e-02, 4.886e-02, 1.271e-01, 7.123e-02, 4.224e-03, 1.944e-02, -4.537e-02, -1.404e-01, -1.841e-01, -6.062e-02, -3.228e-02, -4.511e-01, -1.864e-01, -3.546e-02, -3.274e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(6.879e-02, 3.812e-02, -6.950e-02, 4.470e-02, -3.683e-01, -1.389e-01, 5.396e-02, 3.882e-02, -1.979e-01, -3.425e-01, 2.316e-01, -2.958e-01, -1.837e-01, -2.446e-01, 1.812e-01, -1.734e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(9.016e-02, -1.072e-01, -3.679e-01, -4.820e-02, -1.354e-01, -9.672e-02, -2.966e-02, 3.040e-02, -4.192e-02, 1.594e-01, 5.993e-02, 6.536e-02, -1.434e-01, -2.869e-02, 2.635e-02, -1.099e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(2.955e-02, 1.962e-02, 2.974e-02, -1.858e-02, 1.012e-02, -4.081e-02, 3.442e-03, 2.446e-03, 1.454e-01, -1.604e-01, -4.680e-02, 2.292e-01, 2.611e-02, -1.617e-02, 2.166e-02, -6.174e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(5.852e-02, 2.684e-01, 3.390e-02, 1.884e-01, 7.627e-02, -1.961e-01, -3.960e-02, -1.113e-01, -3.654e-01, -1.210e-01, 1.182e-01, 1.988e-02, -6.174e-02, 7.834e-02, 9.973e-03, 1.122e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(-5.549e-03, 2.212e-01, -5.556e-02, -6.126e-01, 1.537e-01, -7.131e-02, 7.848e-02, -7.276e-02, 2.524e-01, -9.751e-02, -2.047e-01, 2.242e-01, 2.670e-02, -1.999e-01, 1.539e-01, -2.977e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(1.875e-02, 1.147e-02, -2.095e-01, -3.884e-02, -3.259e-02, -6.073e-02, -1.702e-01, 3.529e-02, -3.392e-02, 4.804e-02, -1.158e-01, -7.224e-02, -2.927e-03, -1.969e-01, -2.102e-03, -8.353e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(1.538e-01, 7.352e-02, 9.450e-02, 4.659e-02, -1.317e-02, -5.664e-03, 3.530e-03, 1.573e-01, -8.012e-02, -5.035e-01, 2.011e-01, -3.487e-01, -8.320e-02, -3.175e-02, 6.973e-02, -4.072e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-4.944e-01, -8.329e-02, 2.179e-02, 1.552e-01, -5.580e-01, -2.364e-02, -5.159e-02, 1.594e-01, -3.128e-01, 1.770e-01, 3.495e-01, -2.202e-01, 6.568e-01, -2.660e-01, 1.550e-01, 4.342e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-1.620e-01, 8.940e-02, -6.040e-02, -3.055e-01, 5.512e-02, 9.737e-02, 3.997e-02, -2.092e-01, 2.408e-01, -6.031e-03, -2.730e-02, 4.881e-02, 8.990e-02, 1.222e-01, 4.823e-02, -3.631e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(1.016e-01, 8.272e-04, -1.846e-01, -1.404e-01, 7.299e-02, 5.641e-02, 9.807e-02, -2.652e-02, 6.617e-02, 4.679e-02, 3.644e-02, -9.006e-02, -1.347e-02, 7.861e-03, 5.360e-02, 2.349e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(4.163e-02, 2.043e-02, 7.625e-03, -8.710e-03, -2.934e-02, -1.534e-02, -1.146e-02, 2.959e-02, 8.524e-03, -2.499e-02, 1.048e-02, 2.151e-02, 1.731e-02, -1.109e-02, 2.390e-03, 1.737e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-7.156e-02, 1.343e-01, 4.280e-02, -1.932e-01, 8.272e-02, -1.383e-01, -7.196e-02, 2.176e-01, 3.854e-02, -6.801e-02, -1.341e-03, -2.614e-03, -4.077e-02, -7.186e-02, 5.020e-02, 1.285e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(2.194e-02, -1.233e-02, 3.748e-05, -6.446e-01, 4.490e-02, -2.001e-01, -5.684e-02, 4.318e-02, -1.408e-01, -2.105e-01, -5.532e-02, -4.343e-01, -6.319e-02, -6.029e-02, 1.208e-01, -4.543e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(-2.541e-03, 8.339e-03, 6.540e-02, -1.289e+00, -1.040e-02, 3.447e-02, 8.452e-02, -4.979e-01, -6.776e-02, 3.128e-02, 4.102e-02, -2.099e-01, -5.136e-03, 4.249e-03, 4.823e-02, -4.238e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(7.797e-02, 7.370e-02, 6.453e-02, -2.013e-02, -3.034e-01, -3.677e-01, -1.652e-02, 4.509e-01, -3.522e-01, -6.915e-01, -1.424e-02, 4.805e-01, 1.194e-01, -3.672e-01, 7.421e-02, -1.357e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(-3.741e-01, 9.441e-04, -1.980e-01, -1.010e-01, 1.696e-01, 1.378e-01, -2.545e-02, 1.332e-02, 2.192e-01, 5.411e-02, -8.827e-02, 5.159e-02, -2.119e-02, 7.041e-02, 4.942e-02, -1.494e-01), r7);\n\tr0 = MulAdd(s1_2_0, M4(-1.354e-01, 3.335e-02, 8.580e-02, 1.569e-02, 3.305e-01, 8.400e-02, -8.919e-02, -1.564e-01, -7.369e-02, 9.350e-02, 3.781e-02, 2.458e-02, 6.333e-02, 3.061e-02, 1.062e-01, -7.785e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(7.437e-02, -7.921e-02, 7.397e-02, -1.476e-01, -2.677e-02, 4.037e-02, 3.494e-02, 3.455e-02, -3.717e-03, -1.322e-01, -2.348e-01, -5.585e-02, 8.387e-03, -6.183e-02, 1.479e-02, 3.325e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-3.094e-03, 9.313e-03, 1.265e-03, 3.214e-02, -1.118e-03, 7.474e-03, 4.335e-03, -1.179e-02, -5.383e-02, 8.327e-02, 2.196e-03, 1.618e-01, -1.008e-02, 9.521e-03, -3.512e-03, 1.224e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-2.230e-01, 4.942e-02, 4.082e-02, -5.210e-03, -7.680e-02, -3.156e-02, -8.048e-02, 6.046e-02, 7.060e-02, -3.882e-02, -3.788e-03, -2.288e-03, 1.907e-01, -3.986e-02, 1.146e-02, 4.289e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-8.071e-01, -2.318e-01, -1.656e-01, -2.130e-01, 1.365e-01, -1.055e-01, 6.716e-03, -9.167e-02, -4.527e-01, 2.516e-01, -8.569e-02, -1.556e-01, 1.650e-01, -1.393e-01, 1.448e-02, -1.658e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(1.603e-02, 6.861e-02, -1.409e-01, 8.047e-02, 5.605e-03, -4.681e-02, 5.749e-02, 5.029e-04, 1.040e-01, -1.340e-02, 3.420e-02, -7.218e-02, 1.011e-02, 3.310e-02, 6.216e-02, -2.746e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(4.728e-03, 1.546e-02, -7.770e-03, -2.698e-02, 1.686e-02, 2.615e-03, 4.978e-02, 4.025e-02, 1.627e-01, 2.608e-02, -6.758e-02, -5.653e-02, -4.275e-02, -3.551e-03, 7.496e-02, 1.096e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(-7.151e-02, -2.660e-02, -2.212e-01, -5.509e-02, -2.824e-01, 1.414e-01, 1.498e-01, 3.171e-01, -2.679e-01, 2.887e-02, -9.115e-04, 2.203e-02, 1.369e-01, -8.667e-02, -2.131e-02, 2.466e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-1.645e-01, 1.046e-01, -2.134e-01, -3.897e-01, -2.246e-01, -2.119e-01, -2.419e-02, -2.666e-01, 1.057e-01, -8.335e-02, 2.634e-01, 2.815e-01, -1.489e-01, 1.882e-01, 4.695e-02, 8.291e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.277e-01, -1.064e-01, -2.137e-01, 1.122e-01, 1.809e-02, 8.962e-02, -3.088e-01, -2.805e-02, -1.213e-02, 3.557e-02, 5.168e-02, 2.976e-02, 1.795e-02, 2.216e-02, 4.765e-02, -7.324e-04), r1);\n\tr2 = MulAdd(s1_2_1, M4(-3.703e-02, 6.617e-02, -1.266e-02, 3.747e-02, 1.241e-02, -2.653e-02, -7.993e-03, -1.009e-02, 1.786e-02, 6.891e-02, -2.574e-02, 1.171e-01, 1.135e-02, -3.248e-03, 9.493e-03, 1.378e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-3.059e-02, -2.471e-01, 6.162e-02, -5.398e-02, 2.847e-02, -3.491e-02, 7.766e-02, 7.862e-02, -3.068e-01, -2.047e-02, 4.303e-02, 5.987e-02, -1.471e-01, -3.788e-02, 4.920e-02, 8.493e-03), r3);\n\tr4 = MulAdd(s1_2_1, M4(-1.901e-01, 4.038e-02, -2.928e-01, -4.683e-01, -3.496e-02, -2.860e-01, 3.182e-02, -2.336e-01, 3.032e-02, 1.495e-01, -1.359e-01, 4.565e-03, -1.149e-01, 2.919e-02, 1.791e-01, 2.235e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(6.504e-02, 7.966e-02, -1.614e-01, 1.604e-01, -3.899e-02, -1.559e-02, -2.321e-01, 1.433e-01, 2.893e-02, -1.475e-02, -1.101e-01, -7.505e-02, 1.168e-02, 5.971e-02, -6.246e-02, 9.207e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(1.793e-01, 8.661e-03, 6.790e-03, 1.686e-01, 8.157e-02, 2.472e-02, 1.214e-02, -6.577e-02, 9.557e-02, 8.130e-02, 5.922e-02, 5.996e-01, 5.631e-02, 4.427e-03, 3.650e-02, 2.286e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-4.749e-01, -5.702e-02, -2.997e-01, 1.071e-01, 2.808e-01, 3.093e-02, 8.961e-02, -1.237e-01, 4.889e-02, -1.390e-01, -5.453e-03, -1.990e-02, -3.469e-02, 2.650e-02, 3.116e-02, 3.039e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.502e-01, 2.294e-02, 8.440e-02, 3.184e-02, 2.727e-02, -1.184e-02, -9.937e-02, -6.155e-02, -9.901e-02, 1.126e-01, -7.629e-02, -1.195e-01, -2.624e-03, -1.165e-01, -1.178e-02, -5.337e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-4.094e-02, -1.308e-02, -4.774e-02, -5.383e-02, 7.674e-02, -5.611e-03, -1.308e-01, 2.416e-02, 2.825e-02, 5.305e-02, 8.666e-02, 8.911e-03, -1.534e-02, -8.157e-03, 7.009e-04, 5.281e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(5.437e-03, 2.766e-02, -2.062e-03, -9.782e-03, -1.532e-02, -1.604e-02, 3.127e-03, -1.378e-02, 6.862e-03, 5.672e-02, 2.640e-03, -2.292e-03, 4.375e-04, -1.196e-03, -3.717e-03, 3.065e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-6.630e-01, 1.538e-01, 3.943e-02, -9.678e-02, 2.301e-01, 7.743e-02, -2.416e-02, -1.315e-01, 1.460e-01, -5.786e-02, -1.060e-02, -8.754e-02, 5.117e-02, -1.073e-02, 2.665e-02, 1.017e-01), r3);\n\tr4 = MulAdd(s1_2_2, M4(-3.551e-01, 1.558e-01, 6.718e-02, -1.285e+00, -5.887e-02, 1.196e-01, -4.660e-02, 3.551e-01, -5.026e-01, -1.998e-01, -4.666e-02, -9.657e-01, -4.137e-01, -5.271e-02, 1.192e-01, 2.312e-01), r4);\n\tr5 = MulAdd(s1_2_2, M4(2.747e-02, -5.076e-02, -1.496e-01, 3.109e-02, -1.559e-02, -4.176e-02, -8.161e-02, 9.913e-02, 1.217e-03, -3.712e-03, 8.228e-02, -8.778e-02, 7.705e-03, 6.695e-03, 9.705e-03, -1.138e-01), r5);\n\tr6 = MulAdd(s1_2_2, M4(1.057e+00, -2.863e-01, -6.096e-02, -3.396e+00, -3.716e-01, -2.097e-01, 9.069e-03, -1.917e+00, -1.255e+00, -1.396e-02, 1.081e-01, -1.733e-02, -3.303e-01, -6.039e-02, -1.902e-02, -1.299e-01), r6);\n\tr7 = MulAdd(s1_2_2, M4(-1.138e-01, -6.374e-02, -1.274e-01, 5.687e-03, -3.853e-01, 3.678e-03, 5.686e-02, 2.221e-01, -6.857e-02, -1.142e-03, 4.005e-02, -1.896e-02, 1.692e-02, 5.708e-02, -2.169e-02, -2.144e-01), r7);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(7.010e-02, 2.580e-02, -3.796e-02, -2.617e-02, -1.752e-02, 3.452e-03, -2.766e-02, 2.413e-02, -1.889e-02, 3.563e-02, 3.682e-02, -8.015e-02, -3.607e-02, -1.091e-01, 1.030e-02, 1.100e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.298e-02, -3.314e-02, 2.369e-02, -7.706e-03, -5.820e-02, -2.736e-02, 6.842e-03, -9.871e-03, 1.330e-02, -5.199e-05, 9.021e-03, 1.939e-01, 4.940e-02, -3.907e-02, 4.554e-02, -4.788e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(4.277e-03, -5.003e-03, 1.144e-02, -6.410e-03, -1.138e-02, 1.196e-02, -1.722e-02, 1.470e-02, -1.609e-03, 1.403e-02, 1.522e-02, 5.297e-03, -2.169e-02, 9.012e-03, -1.004e-02, 3.037e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-2.890e-02, 9.138e-02, 4.828e-02, -6.070e-02, 4.165e-02, -9.588e-02, -2.776e-02, 2.384e-02, 1.190e-02, 1.734e-01, 4.156e-02, -5.473e-02, 5.140e-02, 1.016e-01, -4.945e-02, 1.787e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-5.113e-02, 3.203e-02, -5.553e-03, 5.278e-03, 4.831e-02, 2.277e-02, 1.290e-02, -1.486e-01, 3.703e-02, 4.738e-02, 9.036e-02, -1.459e-01, 7.321e-02, 9.062e-02, 7.737e-02, 6.405e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(5.484e-03, -1.103e-02, 1.220e-02, 8.942e-03, -1.113e-02, 2.779e-02, -2.099e-02, -3.226e-02, 2.494e-02, 1.724e-02, -5.109e-02, 7.312e-02, 1.013e-02, 1.145e-02, 1.108e-01, -7.583e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(6.853e-02, 1.983e-02, 4.933e-02, -7.434e-03, 1.042e-01, -3.236e-03, -4.685e-02, -4.602e-02, -1.574e-02, -5.226e-03, 5.093e-02, -1.169e-02, 6.207e-02, 2.607e-03, -8.167e-03, -4.167e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(-5.121e-02, 6.165e-02, 1.960e-02, 1.549e-01, 3.799e-01, 2.424e-02, 3.693e-02, -1.663e-01, 5.158e-01, 2.760e-02, -3.447e-02, -4.653e-01, -1.281e-01, -7.801e-02, -1.284e-02, -5.803e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(9.777e-02, 5.078e-02, -6.663e-02, 1.831e-02, 1.991e-01, 2.356e-01, 5.236e-02, -6.536e-02, 5.705e-02, -8.426e-02, 2.374e-02, 6.451e-02, 5.394e-02, 7.537e-02, -2.092e-02, -6.420e-03), r0);\n\tr1 = MulAdd(s0_0_1, M4(-9.338e-02, -2.434e-02, 3.673e-02, 5.036e-02, -6.724e-02, 4.190e-02, 3.508e-02, -8.315e-03, -6.991e-03, 1.891e-02, -2.507e-02, 8.276e-02, 7.188e-02, 8.331e-02, 3.092e-02, 1.079e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-1.001e-02, 5.286e-02, -1.393e-02, 3.302e-02, -7.614e-03, 4.412e-03, 2.350e-02, -1.089e-03, 1.807e-02, 1.472e-02, -3.254e-03, 1.153e-02, 9.153e-03, 6.628e-03, 7.200e-03, -2.811e-03), r2);\n\tr3 = MulAdd(s0_0_1, M4(-7.750e-02, 1.551e-01, 2.762e-02, 5.727e-02, -1.646e-01, 2.184e-01, 7.563e-02, 2.199e-01, 1.479e-02, 9.375e-02, 6.647e-02, -9.758e-02, 1.314e-02, -2.763e-02, -1.333e-01, 6.367e-03), r3);\n\tr4 = MulAdd(s0_0_1, M4(-5.514e-02, 4.765e-02, -1.895e-01, -2.006e-02, -1.481e-01, -1.484e-01, 1.831e-01, -1.618e-01, -1.243e-02, 1.328e-01, 5.540e-02, -8.457e-02, -1.085e-01, -7.325e-02, 8.645e-02, 2.562e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(3.572e-02, 4.332e-02, -6.002e-02, 3.252e-02, 8.173e-03, -1.745e-01, -1.265e-01, -2.789e-02, 1.238e-02, 2.958e-02, 4.003e-02, 1.518e-02, 2.708e-03, 5.857e-02, 9.524e-02, 5.273e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(1.328e-01, 2.839e-02, -2.145e-03, 2.599e-02, -1.087e-01, -4.956e-02, -1.419e-01, -4.475e-02, 6.000e-03, -1.450e-04, -3.969e-02, -2.913e-02, 7.791e-02, 2.152e-03, -1.503e-01, 2.063e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(-1.451e-01, 3.375e-02, -2.707e-02, -1.111e-01, -2.640e-01, -3.375e-01, -9.207e-03, 4.176e-02, 4.545e-01, -6.238e-02, 4.279e-02, -1.972e-01, -1.084e-01, -1.048e-01, 8.497e-02, -8.203e-03), r7);\n\tr0 = MulAdd(s0_0_2, M4(1.372e-01, -1.899e-01, 6.899e-02, -1.454e-01, -1.421e-01, -1.041e-01, -2.008e-02, 3.825e-02, -1.286e-01, -7.537e-02, -1.188e-01, -1.255e-01, -2.924e-01, 5.882e-02, -9.379e-03, -6.037e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.295e-01, 9.834e-03, 4.934e-02, -3.953e-02, -1.512e-01, -4.066e-02, -7.969e-02, -8.267e-02, 4.692e-03, 4.745e-02, 5.159e-02, 1.269e-01, -4.284e-02, -1.165e-02, 1.439e-01, 3.347e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(4.112e-02, 1.856e-02, -1.530e-03, -1.070e-02, 2.587e-02, 1.126e-02, -2.036e-02, -2.063e-02, 1.841e-02, 2.264e-02, -5.907e-03, 4.143e-02, 9.842e-02, 3.579e-02, 9.939e-03, -5.559e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-2.949e-02, 2.082e-01, 2.156e-02, -2.114e-01, 1.003e-01, -1.979e-01, 4.132e-02, -3.306e-01, 2.225e-02, 7.183e-02, 1.107e-02, -3.346e-02, 2.178e-01, -4.597e-01, -1.829e-03, -1.043e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-1.125e-01, -1.720e-02, -2.599e-01, 1.048e-03, -1.398e+00, 1.584e-01, -2.127e-01, -2.883e-01, -7.684e-03, -1.232e-01, 4.828e-02, -8.212e-02, 7.922e-02, 5.732e-02, -1.363e-01, -1.983e-01), r4);\n\tr5 = MulAdd(s0_0_2, M4(8.462e-03, 2.706e-02, 1.377e-01, -4.617e-01, -1.902e-03, -2.831e-02, -1.158e-01, 5.983e-01, 1.140e-02, 3.631e-02, 1.161e-01, 7.252e-01, -2.289e-02, -1.008e-01, -1.131e-01, 6.983e-01), r5);\n\tr6 = MulAdd(s0_0_2, M4(1.660e-02, 1.027e-03, 1.040e-02, -1.364e-02, -1.241e-01, 2.688e-01, 2.126e-01, -9.957e-01, 1.032e-01, 1.658e-01, 1.247e-02, -4.336e-02, 9.856e-01, -5.106e-01, -1.390e-01, -4.176e-01), r6);\n\tr7 = MulAdd(s0_0_2, M4(-2.181e-01, -1.237e-01, 4.908e-02, 3.291e-01, -2.388e-02, 2.194e-01, 8.364e-02, 2.099e-01, 1.556e-01, 3.001e-02, -8.374e-02, -1.701e-01, -3.242e-02, 2.019e-01, -2.499e-01, 1.463e-01), r7);\n\tr0 = MulAdd(s0_1_0, M4(-5.271e-02, -5.125e-02, 1.330e-03, -4.184e-02, 4.105e-02, -2.168e-02, 1.435e-01, 7.316e-02, 4.079e-02, -1.019e-01, -8.641e-03, -5.577e-02, -1.408e-01, 1.426e-01, 2.101e-02, -3.880e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(5.733e-02, -7.461e-02, 8.398e-03, -8.122e-02, 9.225e-02, 9.868e-02, 4.397e-02, -1.844e-01, -5.666e-02, -8.750e-02, -9.890e-02, 8.710e-03, 2.679e-02, -7.638e-03, 6.113e-02, 1.277e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.073e-02, 2.117e-02, 9.696e-03, 3.034e-02, -7.865e-02, 2.105e-02, -2.723e-02, 1.270e-02, -2.283e-02, 3.310e-02, -7.799e-03, -2.266e-02, 6.391e-04, -3.016e-03, -2.334e-02, 1.316e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(2.724e-02, 1.850e-02, 1.508e-02, 1.564e-02, 2.377e-01, 3.391e-02, 2.604e-02, 9.148e-02, -4.399e-02, 5.667e-02, 3.206e-02, -2.924e-02, -1.354e-01, -8.470e-02, 2.057e-02, 9.813e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(4.107e-02, 8.932e-02, -7.222e-02, 2.454e-02, 2.410e-01, 1.436e-01, -5.042e-02, 1.613e-01, -3.930e-02, -9.649e-02, -6.088e-02, -5.674e-02, -1.721e-01, -4.055e-02, 1.184e-01, 9.586e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(3.772e-02, -5.463e-03, -4.862e-02, 8.625e-05, -3.781e-02, -7.664e-02, 3.242e-02, -2.532e-01, 1.230e-02, 3.062e-02, -5.238e-02, -7.124e-02, -1.271e-02, 4.986e-02, -1.682e-01, 2.222e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(1.349e-02, -2.477e-03, -2.360e-02, -2.715e-02, 1.923e-01, 1.341e-01, 1.616e-01, 1.500e-01, -5.783e-02, -1.351e-02, -1.426e-02, -2.066e-02, -5.059e-02, 7.720e-02, -7.674e-03, 1.451e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(-2.906e-01, 2.974e-02, -1.860e-02, -8.139e-02, -3.628e-01, -3.336e-01, 3.782e-02, 1.181e-01, 6.367e-01, 9.729e-02, -4.432e-02, -1.621e-01, 8.064e-02, 2.595e-02, -1.605e-02, 1.410e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(1.004e-01, 1.232e-01, 3.825e-02, 4.721e-02, -1.183e-01, 1.380e-01, -3.501e-01, -2.383e-02, -1.531e-01, -4.438e-02, -9.370e-03, 6.555e-02, 5.059e-02, -5.727e-01, 3.179e-02, 1.162e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.190e-02, 3.825e-03, 4.993e-02, -1.526e-02, 3.021e-01, -9.395e-02, 3.777e-01, 1.251e-01, 4.083e-02, 1.184e-02, -1.078e-01, 1.713e-01, -1.654e-01, -8.916e-02, -4.622e-01, -1.047e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.485e-02, 4.725e-02, -3.626e-03, 1.046e-01, 2.344e-02, 4.965e-02, 1.183e-01, -6.281e-02, -6.323e-02, 7.423e-02, 1.874e-02, -3.476e-02, 6.875e-02, -2.071e-02, 3.496e-02, -1.476e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(2.669e-02, -9.339e-03, 6.941e-03, 8.353e-02, 1.153e-01, -1.321e-01, -3.430e-02, 1.797e-01, 5.719e-02, -5.787e-02, 1.027e-01, 5.772e-02, 1.717e-01, 3.221e-01, 9.309e-02, 4.082e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(5.685e-02, 7.023e-02, -1.070e-02, -1.109e-01, -1.803e-01, -1.684e-01, 2.069e-01, 2.089e-01, 1.706e-01, -9.793e-02, 2.555e-02, -2.065e-01, 4.341e-01, -3.460e-01, 1.781e-01, 2.090e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(7.688e-02, -1.812e-02, -1.459e-01, 1.012e-01, 1.052e-01, -3.587e-01, 1.304e-01, -3.062e-01, 6.631e-02, -5.239e-02, -7.872e-02, 1.136e-02, 3.083e-02, 2.282e-02, -3.784e-02, -5.642e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(2.506e-02, 2.193e-02, -4.561e-02, 1.406e-01, -9.914e-03, -1.163e-01, -4.181e-02, -8.107e-02, 1.989e-01, 3.465e-02, 8.403e-02, 4.538e-02, 2.559e-01, -4.582e-03, -2.019e-02, -2.821e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(-1.610e-01, -3.257e-02, -8.216e-02, 1.165e-01, -6.274e-02, -1.334e-01, 4.675e-02, -1.432e-01, 6.604e-01, 7.438e-02, -1.583e-01, 2.265e-02, -2.748e-01, 7.150e-02, 1.781e-01, 1.500e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-9.497e-02, 1.971e-01, -3.314e-02, 6.160e-03, -1.824e-01, 5.648e-01, 1.528e-01, 1.950e-02, -1.426e-01, -1.647e-01, 1.144e-02, -3.451e-02, -4.503e-01, -4.867e-01, -1.929e-01, -1.835e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-5.787e-02, 2.025e-02, -1.605e-03, 3.382e-02, 6.151e-02, -6.288e-02, -1.191e-02, -3.067e-01, 4.087e-02, 8.247e-03, -6.121e-02, 2.118e-01, -2.837e-01, 1.369e-02, 6.247e-02, 1.206e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(4.014e-02, 2.546e-02, -9.905e-03, 3.643e-02, -2.861e-01, 3.799e-02, 2.415e-03, -5.305e-02, -1.467e-02, 2.077e-02, -1.541e-02, 6.996e-02, 1.067e-01, 6.967e-02, -2.949e-02, 3.978e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-2.441e-02, -5.781e-02, -3.064e-02, -4.145e-02, 1.674e-02, 1.382e-01, 4.290e-02, 1.062e-01, 5.792e-02, 4.061e-02, -5.201e-02, -9.817e-02, -4.480e-01, -3.154e-01, 8.798e-02, 1.713e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(1.708e-02, -1.490e-01, -8.878e-02, 9.791e-02, -3.255e-01, -3.693e-01, -1.776e-02, -7.902e-01, 7.595e-02, 9.426e-02, 4.683e-02, -2.357e-01, 2.462e-01, -2.460e-01, -1.080e-02, -1.428e+00), r4);\n\tr5 = MulAdd(s0_1_2, M4(1.835e-02, 4.913e-02, 5.148e-02, 2.048e-01, 1.195e-01, -6.822e-01, -2.822e-01, -7.212e-01, 3.104e-02, -8.662e-03, 7.813e-03, -2.346e-01, 3.769e-02, -7.233e-02, 1.999e-01, -8.053e-01), r5);\n\tr6 = MulAdd(s0_1_2, M4(3.305e-01, -1.750e+00, 3.293e-02, 8.174e-02, -2.421e-01, -7.937e-01, -4.422e-01, -4.255e-01, -1.729e-01, -1.408e-01, -1.086e-01, 9.196e-02, -1.284e+00, -5.197e-01, 4.108e-01, -1.434e+00), r6);\n\tr7 = MulAdd(s0_1_2, M4(-1.485e-01, 1.959e-02, -7.687e-03, -1.741e-02, -5.410e-01, 2.666e-01, 1.954e-01, -1.514e-01, 4.188e-01, -2.707e-02, -6.724e-02, -1.629e-01, -1.523e+00, 1.504e-01, -1.219e-01, -1.580e-01), r7);\n\tr0 = MulAdd(s0_2_0, M4(-3.493e-02, -1.024e-02, 2.157e-02, 3.897e-02, -3.378e-01, -1.354e-01, -8.811e-02, 7.046e-02, -6.537e-02, -1.216e-01, -5.391e-02, 3.950e-02, 2.426e-01, 8.215e-02, -8.315e-02, -6.214e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-7.755e-05, -2.822e-02, 1.494e-02, 3.848e-02, 1.529e-01, 3.506e-02, 3.263e-01, 1.954e-01, -6.631e-02, 4.701e-02, -7.084e-02, 1.499e-01, 1.007e-03, -5.343e-02, -9.573e-02, 1.092e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.582e-02, 1.991e-02, -4.899e-04, 8.381e-03, -7.715e-03, -1.720e-02, -8.371e-02, 3.052e-02, -2.743e-02, 2.974e-02, -5.202e-03, -2.472e-03, 2.614e-03, -1.804e-02, 3.213e-02, 5.310e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(6.748e-02, 6.449e-03, 2.196e-02, -3.058e-02, 1.142e-01, -9.858e-04, 1.065e-01, -1.338e-01, -8.011e-02, 9.395e-02, 3.635e-02, 2.534e-02, -5.140e-03, -1.200e-01, 2.901e-03, 5.859e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(2.990e-01, 1.701e-02, 1.412e-02, 1.275e-01, 4.150e-01, 1.858e-01, 2.423e-03, 5.339e-01, 3.144e-01, -1.453e-01, 3.853e-02, -8.517e-02, 2.764e-01, -7.535e-02, -6.340e-03, 1.299e-01), r4);\n\tr5 = MulAdd(s0_2_0, M4(1.958e-02, 1.051e-03, 3.294e-02, 1.934e-02, -1.126e-01, 9.244e-02, -7.184e-03, 4.064e-01, 1.915e-02, -3.749e-02, 2.973e-02, -1.613e-01, 5.246e-02, -7.706e-04, -2.079e-02, -1.593e-01), r5);\n\tr6 = MulAdd(s0_2_0, M4(-3.841e-02, -2.225e-03, 2.874e-03, 2.443e-02, 5.446e-01, -2.140e-01, 1.192e-01, -6.386e-01, -1.056e-03, -2.944e-03, 3.566e-02, 3.168e-02, -2.834e-01, 1.390e-02, -1.519e-01, 1.559e-01), r6);\n\tr7 = MulAdd(s0_2_0, M4(-1.065e-04, 8.992e-02, 8.924e-03, 2.546e-01, 3.671e-01, -1.579e-01, -5.417e-02, 2.006e-01, 4.609e-01, 9.763e-02, 1.572e-02, -2.007e-01, -2.372e-01, -8.344e-01, 7.941e-02, -1.366e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-1.234e-02, 1.835e-01, -2.665e-02, -2.958e-02, -2.468e-02, -1.270e-01, 7.076e-02, -9.718e-02, -2.095e-02, -7.280e-02, -1.011e-02, -4.756e-03, -3.764e-01, -1.731e-01, 2.381e-01, 2.540e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.432e-02, 1.887e-03, -6.076e-02, 3.092e-02, 2.810e-01, 3.877e-01, 2.162e-01, 4.257e-02, -2.241e-02, 3.137e-02, -3.325e-01, 2.087e-01, 5.052e-02, -2.640e-01, -1.991e-01, 1.790e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(4.244e-03, 1.052e-02, 2.144e-03, 5.085e-03, 1.338e-01, -4.472e-03, 7.072e-01, -1.700e-01, -8.055e-03, 2.214e-02, -6.793e-03, -6.929e-03, -3.575e-02, 6.568e-02, -1.147e-01, 1.536e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.423e-01, 3.182e-02, -5.496e-03, 4.663e-02, 7.496e-02, -2.750e-01, -1.860e-01, -2.078e-01, -5.990e-01, -6.004e-02, 1.145e-01, 2.128e-02, -4.736e-01, 1.876e-01, -7.939e-02, 2.685e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(-4.325e-01, 5.362e-02, -5.352e-02, -1.668e-01, 3.340e-01, -1.959e-01, -6.212e-01, -2.709e-02, -7.894e-02, 3.006e-02, -6.822e-02, -4.070e-01, -3.913e-01, 8.437e-02, -6.118e-02, 6.684e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(1.346e-02, -2.635e-03, -5.604e-02, 3.436e-03, 4.759e-01, 3.603e-01, 1.546e-01, -9.899e-02, 1.462e-02, -7.273e-03, -9.523e-02, 2.200e-03, 1.355e-02, 1.021e-03, 3.171e-02, -2.358e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(5.690e-02, 9.930e-03, -2.030e-03, -2.898e-02, 8.695e-01, 1.139e-01, -1.979e-01, -4.801e-01, 6.685e-02, -1.548e-02, -6.525e-03, 1.261e-01, 3.210e-01, 2.138e-01, -3.693e-01, -1.273e-01), r6);\n\tr7 = MulAdd(s0_2_1, M4(-1.932e-01, -2.634e-02, 2.191e-02, -1.103e-02, 2.894e-01, -1.129e-01, -6.263e-02, 1.139e-01, 2.907e-01, -9.602e-03, 6.600e-02, -1.613e-01, -1.439e-01, -4.453e-01, -9.733e-03, 2.839e-01), r7);\n\tr0 = MulAdd(s0_2_2, M4(5.641e-02, 5.747e-02, 3.316e-02, 4.527e-02, 5.777e-01, 1.807e-01, 2.318e-02, 2.652e-01, 1.354e-01, -1.022e-01, 1.714e-02, 1.133e-01, -5.125e-01, -6.912e-01, 1.463e-01, -1.155e+00), r0);\n\tr1 = MulAdd(s0_2_2, M4(-5.302e-04, 2.746e-02, 4.852e-02, -8.495e-03, 4.371e-01, -1.163e+00, -2.205e-01, 1.836e-01, -5.494e-02, 3.816e-02, -4.240e-02, 1.868e-01, -1.189e+00, 5.638e-02, -4.053e-02, 1.750e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(3.124e-03, -2.357e-03, -1.879e-03, -2.063e-03, 4.538e-01, -2.584e-01, 6.129e-02, -2.863e-01, -9.109e-03, 8.164e-03, -1.691e-02, 2.902e-02, 1.265e-01, -1.020e-01, 6.171e-02, -2.245e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(-1.309e-01, -1.325e-02, 4.063e-02, -1.523e-02, 5.406e-02, 2.515e-01, 5.370e-01, 4.952e-01, -1.294e-01, -1.264e-02, 7.822e-02, -5.633e-02, -5.730e-03, -2.857e-01, 2.966e-01, -5.108e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(-3.921e-01, 1.138e-02, -3.337e-02, 2.290e-03, 3.356e-01, -1.441e-01, 6.684e-01, 7.325e-02, -7.771e-01, 8.571e-02, 9.833e-02, -1.071e+00, 3.727e-01, -8.972e-01, -1.062e-01, -4.701e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-1.604e-03, -2.330e-02, 3.068e-02, -4.798e-01, -7.029e-01, -2.929e-01, -4.559e-02, 1.737e-01, 7.727e-03, -3.220e-02, 5.319e-03, 9.328e-02, -1.149e-01, 2.465e-01, 4.585e-02, -3.650e-03), r5);\n\tr6 = MulAdd(s0_2_2, M4(-1.776e-01, 2.311e-02, 5.084e-02, -1.568e+00, -8.679e-02, -8.683e-02, 1.151e-02, -5.441e-02, -7.616e-01, -2.522e-01, 1.568e-02, 7.168e-01, -3.182e-02, -2.793e-02, 3.528e-01, -1.124e-01), r6);\n\tr7 = MulAdd(s0_2_2, M4(-9.981e-02, -1.574e-02, 2.313e-02, 6.895e-02, 8.651e-03, 8.945e-02, -1.057e+00, 1.167e-01, 5.286e-01, -6.506e-03, -1.122e-02, -2.120e-01, -1.651e-01, 4.242e-02, -7.308e-02, 1.013e-01), r7);\n\tr0 = MulAdd(s1_0_0, M4(5.008e-02, -5.997e-01, 2.477e-02, -9.393e-02, -2.051e-01, 1.878e-02, 6.571e-02, 6.035e-02, 2.529e-01, -1.040e-01, -3.709e-02, 3.078e-03, -3.046e-02, -1.017e-01, -1.832e-02, 3.912e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-4.897e-02, -3.097e-02, -4.722e-03, -1.052e-01, 6.193e-02, -2.278e-03, 7.886e-02, 4.730e-02, 1.170e-01, -2.043e-02, -1.342e-01, 1.284e-01, 1.161e-01, -7.062e-02, 1.180e-01, 2.761e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.742e-02, -2.601e-02, -4.326e-03, 1.663e-02, -1.191e-02, 9.736e-03, -4.582e-03, 5.017e-03, 3.321e-03, 8.680e-03, 3.432e-03, -7.398e-04, 2.764e-02, -5.780e-03, 8.631e-03, -2.095e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(8.099e-03, -5.076e-02, 1.205e-02, -2.834e-03, 1.946e-02, -2.603e-02, 4.958e-02, 4.134e-02, -5.042e-03, 8.049e-02, -4.872e-02, -2.169e-02, -8.351e-02, -8.586e-02, -5.849e-02, -2.012e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(-7.443e-03, -6.931e-02, 5.157e-02, 1.408e-01, 1.852e-02, 2.092e-01, -3.979e-02, -1.095e-01, -4.634e-02, 2.559e-02, 6.926e-02, 3.347e-02, -5.075e-03, -1.148e-01, -6.926e-02, 1.419e-01), r4);\n\tr5 = MulAdd(s1_0_0, M4(-1.934e-02, -8.359e-03, -2.436e-02, -6.968e-02, 9.010e-03, -4.173e-03, 8.011e-02, -6.088e-03, 9.016e-03, 8.200e-03, 1.560e-02, -5.562e-02, -1.486e-02, 2.671e-02, -4.279e-02, -8.692e-03), r5);\n\tr6 = MulAdd(s1_0_0, M4(-2.228e-02, -3.223e-03, -4.321e-02, -3.360e-02, 2.458e-02, 1.102e-02, 1.824e-02, 6.396e-03, 8.663e-02, 3.725e-03, 4.139e-02, -7.372e-02, -1.163e-01, -2.331e-02, 6.073e-02, -1.241e-01), r6);\n\tr7 = MulAdd(s1_0_0, M4(-6.494e-01, -5.815e-02, -3.174e-02, 3.832e-01, 2.978e-01, 7.326e-02, -1.429e-01, 2.259e-01, 4.012e-01, -1.577e-02, 9.791e-02, -1.867e-01, -8.324e-01, -5.174e-02, -1.499e-01, -1.150e-01), r7);\n\tr0 = MulAdd(s1_0_1, M4(9.042e-03, 7.812e-02, -8.277e-02, -3.660e-02, -3.893e-01, -1.812e-01, -8.165e-02, -7.863e-02, 1.093e-01, 9.523e-02, -7.141e-02, -3.243e-02, 1.789e-02, -3.915e-01, 4.503e-02, 2.744e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(-2.278e-01, -3.012e-02, -9.045e-02, -4.670e-02, 2.352e-02, -3.904e-03, 1.760e-01, 6.693e-02, -1.917e-03, -3.100e-03, 4.533e-02, 3.086e-02, 7.818e-03, 6.601e-02, -1.265e-01, 2.241e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-8.786e-03, -1.459e-02, 6.353e-03, 3.031e-02, -1.365e-02, 6.962e-03, -1.238e-02, 1.370e-02, 2.755e-02, 2.254e-02, 7.204e-03, -2.629e-03, -1.707e-02, 1.692e-02, 6.873e-03, -4.489e-03), r2);\n\tr3 = MulAdd(s1_0_1, M4(-1.836e-02, 1.210e-02, -1.442e-02, -2.265e-02, 2.152e-02, -4.938e-01, 7.800e-03, 1.824e-02, 1.647e-02, 9.987e-02, -1.793e-02, -9.449e-02, 6.766e-02, -8.218e-02, -1.368e-01, -1.773e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(-9.401e-02, -2.020e-01, 7.521e-03, -9.068e-02, -1.191e-03, -7.038e-02, 7.216e-02, 1.782e-01, 1.035e-02, 1.049e-01, 5.043e-02, -1.597e-01, 9.111e-02, 6.424e-02, -2.913e-02, -1.563e-01), r4);\n\tr5 = MulAdd(s1_0_1, M4(2.210e-05, -2.233e-02, 1.271e-01, -4.341e-02, 6.158e-03, 9.750e-02, 3.506e-03, 1.559e-01, 1.635e-02, 1.763e-03, 4.892e-02, 4.907e-02, 1.043e-02, 2.222e-03, -6.000e-02, 9.950e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(5.779e-02, -7.878e-03, -2.639e-01, 7.689e-03, -9.853e-02, -1.024e-02, -2.580e-02, 1.004e-01, 4.774e-03, -1.236e-02, -3.872e-02, -6.561e-02, -7.869e-02, 4.925e-03, -1.681e-01, -1.769e-03), r6);\n\tr7 = MulAdd(s1_0_1, M4(-1.269e-01, 1.650e-02, -1.323e-01, 3.401e-01, 2.776e-01, 6.312e-02, -1.137e-01, 1.350e-01, 2.255e-01, 1.328e-02, 1.136e-01, 1.299e-02, -2.708e-01, 1.226e-01, -7.159e-02, -2.203e-01), r7);\n\tr0 = MulAdd(s1_0_2, M4(-1.677e-01, 2.088e-01, -1.010e-02, 7.462e-02, -2.501e-01, 1.648e-01, 1.288e-02, 1.591e-01, 4.901e-02, 1.375e-01, -6.947e-02, 3.791e-02, -1.009e-01, -2.085e-02, -1.059e-01, 1.316e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(2.875e-02, 2.287e-02, -4.533e-02, -1.040e-01, 3.073e-02, -3.353e-04, -1.683e-02, 3.942e-02, -1.532e-02, -4.580e-04, 1.750e-02, 1.075e-01, 9.027e-02, 7.962e-04, -8.431e-04, 7.943e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-6.030e-03, 1.057e-03, 5.743e-05, -1.746e-02, 9.796e-03, -6.825e-03, -1.343e-03, -8.084e-03, 3.264e-02, 2.540e-02, -1.440e-02, 2.546e-02, -2.011e-02, 2.113e-02, -9.190e-03, 9.249e-03), r2);\n\tr3 = MulAdd(s1_0_2, M4(-3.497e-02, -1.326e-02, 5.703e-02, 3.026e-02, 1.062e-02, 2.208e-01, 7.049e-02, -1.189e-01, 3.196e-02, 9.324e-02, -2.325e-02, 3.531e-02, 9.814e-02, -8.875e-02, -9.253e-02, 3.835e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-2.297e-02, 5.286e-02, -6.654e-02, 1.005e-01, 1.582e-02, -2.355e-01, -4.295e-02, -2.403e-02, -1.695e-02, -1.125e-01, 3.426e-02, 5.451e-02, 5.907e-02, -1.608e-02, -4.668e-02, 2.459e-01), r4);\n\tr5 = MulAdd(s1_0_2, M4(-2.135e-03, 2.747e-02, 4.561e-02, -5.012e-01, -1.278e-02, 1.148e-02, 3.643e-02, -4.375e-01, 7.917e-03, 2.572e-02, 3.499e-02, 8.118e-02, 1.492e-02, -1.547e-02, -3.753e-03, -6.538e-01), r5);\n\tr6 = MulAdd(s1_0_2, M4(-1.144e-03, -1.309e-01, 5.250e-02, -1.895e-01, -1.700e-01, -1.087e-01, 6.400e-02, 7.735e-03, -3.497e-02, 8.701e-02, 1.067e-01, 5.621e-02, -7.765e-01, 9.426e-02, 7.489e-02, -3.767e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-1.897e-02, 5.095e-02, 1.379e-03, 3.313e-01, -3.356e-01, 7.398e-02, -2.592e-02, 1.119e-01, 1.174e-01, -5.191e-02, 1.055e-01, -2.660e-01, -2.897e-01, 9.267e-04, 9.834e-02, -2.419e-01), r7);\n\tr0 = MulAdd(s1_1_0, M4(-8.730e-02, -4.125e-01, -9.430e-02, -6.492e-02, 6.231e-02, -3.265e-01, 1.431e-01, 6.573e-02, 1.571e-01, 9.785e-02, -2.894e-02, -7.595e-02, 1.926e-01, 1.811e-01, -1.606e-01, 1.014e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(5.237e-02, -5.490e-02, 7.482e-02, 7.055e-02, -1.109e-01, -1.434e-03, -9.190e-03, -9.155e-02, 1.187e-02, -3.393e-02, 6.365e-02, 6.279e-02, 9.797e-02, -1.264e-01, 8.918e-02, -3.896e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.076e-02, -2.168e-02, 1.196e-03, 7.513e-02, -1.818e-02, 1.719e-02, -8.449e-03, -5.925e-05, -7.612e-03, 2.240e-02, 2.784e-03, 2.248e-02, 1.672e-03, 1.452e-02, -9.887e-03, -1.629e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-3.392e-02, 5.161e-02, -8.871e-03, 1.775e-03, 1.073e-03, 1.058e-01, 5.206e-02, 2.219e-02, 6.343e-03, 1.227e-01, 5.137e-02, -7.039e-03, 9.163e-02, -7.979e-02, 1.973e-02, -6.886e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-7.020e-02, -2.851e-02, -6.758e-02, 3.948e-02, -3.274e-02, 1.527e-02, -8.212e-02, -3.381e-02, 3.903e-02, 1.458e-02, 2.866e-02, 1.279e-01, -8.270e-03, 1.527e-01, 2.455e-02, -5.932e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(8.555e-03, -3.701e-03, -5.172e-02, -5.927e-02, 1.132e-02, 4.555e-02, -1.628e-01, -1.347e-01, 3.165e-02, 7.422e-03, -9.961e-03, 1.751e-02, -7.242e-03, 8.262e-02, -3.675e-02, -5.746e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(-3.853e-02, -7.030e-04, 2.752e-02, 6.746e-02, -1.052e-02, -1.693e-02, -1.498e-02, 1.337e-02, 4.642e-02, 6.114e-03, 2.541e-03, -5.316e-02, -3.789e-02, -1.484e-02, 1.501e-01, 2.158e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(2.363e-02, -9.952e-03, -6.406e-02, 3.317e-01, -5.817e-01, 1.332e-01, 1.705e-02, -6.120e-04, 3.674e-01, -9.329e-02, -2.904e-03, -4.504e-01, -5.892e-01, 1.298e-01, 2.033e-02, 1.100e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(-6.900e-02, -1.696e-01, -1.106e-01, -6.978e-03, 6.530e-02, -7.895e-02, 9.019e-02, -5.325e-02, 7.491e-03, -1.899e-01, -1.008e-02, 7.801e-02, 1.229e-01, 1.637e-02, 2.606e-02, -1.165e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.767e-03, 1.317e-02, 1.408e-01, -2.080e-01, -2.207e-01, 4.682e-02, -1.291e-01, 7.653e-03, 1.124e-01, -3.633e-02, 1.275e-01, -1.809e-01, 6.819e-02, 6.042e-02, 1.090e-01, 6.325e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.118e-02, -3.550e-02, -1.408e-02, 5.971e-02, 2.077e-02, 1.618e-02, 1.268e-02, -3.658e-02, 7.844e-03, 3.773e-02, 7.532e-03, 1.283e-02, -5.146e-02, 7.674e-02, -2.944e-02, 2.161e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-5.366e-02, 1.483e-01, 4.457e-03, 5.734e-02, -3.230e-02, 1.167e-01, 1.197e-01, 6.476e-02, -2.642e-02, 1.287e-01, 3.225e-03, 3.101e-02, -8.810e-02, 4.593e-02, 4.231e-02, 9.323e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(-7.336e-02, 2.619e-02, 1.346e-02, -7.734e-03, -1.977e-02, -9.616e-03, 1.185e-01, -4.372e-02, 3.883e-02, 4.452e-02, -4.666e-02, 3.074e-01, 4.508e-02, 2.885e-01, -7.912e-02, -1.855e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-1.960e-02, -6.004e-02, 1.134e-02, 1.670e-01, 3.717e-03, -1.821e-01, -1.656e-01, 3.292e-02, 3.529e-02, 4.158e-02, -5.546e-02, -4.111e-02, 5.653e-02, 9.966e-02, 8.117e-03, -2.086e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(-1.175e-01, -6.559e-03, -3.471e-02, -6.164e-02, 2.256e-01, 5.804e-02, 1.964e-01, -1.814e-01, 1.030e-02, 1.185e-02, -8.508e-02, -7.814e-02, 2.428e-02, 2.922e-02, 4.455e-02, 2.298e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-2.397e-01, 8.121e-02, -9.996e-02, -5.445e-02, 3.176e-01, -9.292e-02, 1.716e-01, 1.497e-01, -1.766e-01, 8.365e-02, -3.039e-02, -3.030e-01, -1.732e+00, -5.210e-02, 5.461e-03, -3.229e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-4.753e-02, -5.108e-02, 9.734e-02, -5.713e-03, -5.363e-02, 3.375e-02, -1.484e-02, 1.047e-01, 1.797e-01, -1.277e-01, -5.196e-02, -3.726e-02, -6.054e-02, 6.871e-02, -3.255e-02, -2.329e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(4.398e-02, -5.829e-02, 6.441e-02, -1.648e-01, -4.267e-02, 4.639e-03, 7.109e-02, 1.564e-02, 1.307e-01, -1.558e-03, -3.617e-02, 9.632e-02, -1.355e-02, 1.390e-02, -2.592e-02, -4.371e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(5.341e-03, 2.586e-03, 4.048e-03, -4.428e-02, 2.617e-02, -2.008e-02, 8.320e-03, -1.439e-03, -1.615e-02, 4.107e-02, -2.871e-03, 1.271e-03, 1.457e-02, 3.847e-02, -9.195e-03, -3.353e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(7.321e-03, 2.921e-02, -5.813e-02, 1.239e-01, 9.998e-03, 1.121e-02, 4.857e-02, -1.131e-01, -4.749e-02, 2.264e-02, 6.801e-02, 1.212e-02, 1.300e-01, -2.612e-02, 3.505e-02, 1.391e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(5.955e-04, 9.301e-02, -7.714e-02, -2.545e-01, 2.844e-02, -2.500e-02, -2.075e-02, 3.031e-01, 4.691e-03, 2.723e-01, 6.844e-02, 2.842e-01, -1.228e-01, 1.555e-01, 1.994e-02, 8.207e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(-7.574e-03, 3.614e-02, -2.200e-02, -2.923e-01, -1.216e-02, -6.202e-02, -6.469e-02, -1.970e-01, 2.497e-02, -2.930e-03, -6.410e-02, 6.492e-01, 1.104e-02, -2.781e-02, 9.849e-02, -4.201e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(-3.283e-01, -4.736e-01, -6.370e-02, -1.555e-01, 4.855e-02, -6.112e-01, 9.263e-02, 7.564e-03, 5.551e-02, 8.647e-02, -1.865e-04, -1.331e-01, 3.637e-01, -1.203e-02, 1.750e-01, 1.565e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(-2.574e-01, 3.643e-03, -4.685e-02, 5.569e-01, 2.708e-01, 3.459e-02, -2.872e-02, -6.509e-02, 1.732e-01, -1.210e-01, 3.233e-02, -9.051e-02, -8.102e-01, 3.604e-02, -4.755e-02, -1.630e-01), r7);\n\tr0 = MulAdd(s1_2_0, M4(1.022e-02, 8.250e-02, -7.580e-02, -7.245e-02, -1.372e-01, 6.819e-02, 9.847e-02, -4.074e-02, -4.509e-02, -5.161e-03, -3.211e-02, 3.714e-02, -7.038e-02, 1.754e-01, -1.662e-01, 1.710e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(2.306e-02, -5.543e-02, 2.605e-03, -8.567e-02, 1.208e-01, 1.849e-02, 9.596e-02, 3.367e-04, -2.350e-02, 2.547e-02, 1.535e-01, 4.501e-02, -1.317e-01, 2.208e-02, 2.052e-01, -6.597e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-2.380e-03, -8.439e-03, -9.432e-03, 6.300e-03, -2.452e-02, 2.681e-02, 4.443e-03, 5.602e-02, 2.344e-03, -1.622e-03, 4.270e-03, 2.029e-03, 4.865e-03, -1.388e-02, 2.450e-03, 9.416e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(2.302e-02, 1.668e-02, -7.555e-02, 3.040e-02, 1.331e-02, -3.819e-02, 4.718e-02, 7.707e-03, -4.253e-01, 2.019e-02, 5.235e-02, 8.357e-03, -1.430e-01, 4.019e-02, -4.816e-02, -1.988e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(-4.193e-01, 1.956e-02, 2.705e-02, -3.418e-02, 3.541e-01, -2.935e-02, 1.626e-02, -4.380e-02, 7.357e-02, 7.143e-02, 3.855e-02, 5.258e-02, 1.681e-01, -1.529e-01, -7.253e-02, 6.841e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(-8.919e-03, 9.006e-03, -8.863e-02, -3.448e-02, 4.822e-02, -8.963e-03, -1.389e-02, -5.843e-02, 4.230e-03, 1.157e-02, 6.431e-03, -8.394e-02, -2.985e-03, -3.971e-02, 8.444e-02, -2.717e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-2.061e-02, 7.170e-03, -6.426e-02, 4.792e-02, 1.205e-01, 7.532e-03, -1.098e-02, 8.671e-02, -2.010e-02, -6.549e-03, 7.766e-03, 2.910e-02, -2.425e-02, -7.352e-03, -1.615e-01, -3.579e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(9.898e-02, 3.264e-02, 1.042e-01, 6.294e-01, 1.153e-01, 1.430e-01, -5.758e-02, -1.258e-02, 2.636e-01, -5.972e-02, 3.436e-02, -2.237e-01, -6.624e-01, 1.051e-02, -6.699e-02, -1.825e-01), r7);\n\tr0 = MulAdd(s1_2_1, M4(-2.418e-02, 2.889e-02, -4.122e-02, -7.618e-02, -2.404e-01, 1.800e-01, 1.263e-01, 1.931e-01, 1.460e-01, -1.227e-01, -3.515e-02, -1.121e-01, -6.343e-02, 9.775e-02, -5.923e-02, -5.068e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(2.362e-02, -6.508e-02, 1.284e-01, 7.160e-02, 6.197e-02, -1.799e-02, -4.176e-02, 9.207e-03, -5.270e-02, -1.777e-02, 8.002e-03, 5.975e-02, -3.381e-02, -4.117e-02, 2.810e-02, 1.537e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(8.036e-03, 3.718e-03, -1.024e-02, -2.082e-02, -3.467e-03, 3.985e-02, -1.991e-02, 7.203e-02, -2.052e-03, 3.896e-03, 8.601e-04, -4.090e-03, -8.617e-03, 2.817e-02, -2.338e-04, 1.486e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-5.490e-01, 8.273e-02, -7.094e-02, 8.566e-03, -1.287e-01, -4.342e-02, 5.220e-02, -2.009e-02, -1.646e-02, 8.124e-02, -1.141e-02, 1.317e-02, -4.688e-01, 1.270e-01, -8.245e-02, -8.974e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-7.381e-01, 3.022e-02, -1.090e-01, -1.714e-01, -1.525e-01, 3.773e-01, 1.548e-02, 3.487e-02, 1.744e-01, 1.248e-01, 7.907e-02, -4.788e-03, 8.767e-02, -1.314e-01, -8.031e-02, 8.791e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-1.144e-02, -2.877e-02, -1.386e-02, 7.059e-02, 4.531e-02, 5.602e-02, -7.556e-02, 3.856e-01, 2.849e-03, -1.398e-03, 7.214e-02, -9.344e-02, 3.684e-02, -2.945e-02, 5.539e-02, -1.678e-01), r5);\n\tr6 = MulAdd(s1_2_1, M4(-5.836e-02, 9.989e-03, 3.413e-02, 5.204e-03, 2.178e-01, 2.428e-02, -3.726e-02, 2.921e-01, -1.232e-01, -1.161e-02, 4.567e-03, -4.871e-02, 5.015e-02, -1.235e-03, -1.535e-01, -2.341e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(-1.780e-01, 6.169e-02, 4.942e-02, 1.697e-01, -3.636e-01, -9.181e-02, -3.181e-02, -4.362e-02, 4.727e-02, -3.112e-02, 1.122e-01, -1.001e-01, -8.218e-01, 3.528e-02, -5.410e-02, 3.149e-03), r7);\n\tr0 = MulAdd(s1_2_2, M4(-9.153e-02, 2.855e-01, 1.360e-01, -3.451e-02, -2.946e-02, 2.793e-02, 2.850e-03, 4.901e-02, 1.414e-01, -5.118e-02, -5.826e-02, -2.689e-02, -8.330e-02, 4.612e-02, -5.254e-02, -4.263e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.361e-01, 3.825e-02, 4.420e-02, -8.993e-02, 5.153e-02, 2.559e-02, 1.148e-01, 3.704e-02, -8.759e-02, 1.323e-02, -5.333e-02, 9.451e-02, -1.561e-02, -2.912e-02, -3.479e-02, -1.003e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(3.610e-03, -7.384e-03, 1.417e-02, -5.167e-02, 2.217e-02, 2.716e-04, 4.096e-04, 1.661e-02, 6.286e-03, -1.105e-02, -2.921e-05, -4.300e-03, 3.280e-02, -1.401e-02, 8.214e-03, -6.617e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(-8.327e-01, 6.383e-02, 2.565e-02, 4.355e-02, -8.730e-01, -3.341e-03, 6.649e-02, -4.708e-02, -2.771e-02, 5.884e-02, 8.008e-02, 2.597e-02, 2.404e-01, 5.302e-02, -2.400e-03, 4.739e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-8.262e-01, 3.081e-02, -6.380e-02, -1.409e+00, 2.703e-02, -8.426e-03, -2.120e-02, 9.148e-02, -5.980e-01, 8.569e-02, 3.751e-02, 6.745e-01, 6.341e-02, 9.142e-02, -1.389e-01, -1.021e+00), r4);\n\tr5 = MulAdd(s1_2_2, M4(-7.023e-03, -1.708e-03, 3.794e-02, -1.610e-01, 5.678e-03, 1.672e-02, -3.973e-02, 1.737e-01, -8.441e-03, -8.321e-03, -2.487e-02, -1.817e-02, -4.245e-03, -3.148e-02, -1.291e-01, -8.049e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-5.479e-01, -1.600e-01, 4.131e-02, 7.715e-01, 2.385e-01, -7.480e-01, 6.083e-02, -3.065e+00, 1.586e-01, -1.026e-01, -1.825e-02, -2.125e+00, 1.799e-01, 2.516e-01, -2.867e-02, -7.357e-01), r6);\n\tr7 = MulAdd(s1_2_2, M4(-2.411e-01, 3.666e-02, 6.619e-02, 6.924e-01, 1.015e-01, 5.432e-02, -5.284e-02, -2.009e-02, 2.981e-01, -6.386e-02, 1.116e-01, -2.783e-01, -8.413e-02, -1.360e-02, -8.293e-02, -8.577e-02), r7);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-3.371e-02, 2.584e-01, 4.010e-02, 2.133e-02, 1.552e-02, 1.320e-02, 1.327e-02, 1.492e-02, -2.212e-01, -2.138e-01, -5.293e-01, 2.404e-02, 1.147e-01, 1.139e-01, 8.482e-02, 1.016e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(7.581e-02, -3.442e-02, 4.702e-02, 1.184e-03, -5.538e-02, -5.588e-02, -5.675e-02, -5.718e-02, -4.675e-02, 1.563e-02, 1.486e-01, -3.920e-02, 2.569e-03, 3.040e-02, 2.544e-03, 9.620e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.188e-02, 1.750e-02, 7.066e-03, -2.621e-03, -9.256e-02, -8.632e-02, -9.584e-02, -9.276e-02, -1.617e-03, 1.337e-03, -2.680e-02, 1.727e-02, -8.499e-02, -6.665e-02, -8.741e-02, -9.373e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(9.149e-03, -2.061e-02, -2.175e-02, 9.081e-02, -3.816e-04, -3.801e-03, 2.591e-03, 2.177e-03, 3.829e-02, 1.043e-01, 8.408e-02, -5.259e-02, 5.210e-02, 4.704e-02, 7.963e-02, 5.601e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.204e-02, 6.972e-02, 1.105e-01, 6.290e-02, -7.805e-02, -7.892e-02, -7.752e-02, -7.929e-02, 1.181e-02, 1.972e-01, 1.700e-03, 1.471e-01, 4.305e-02, 5.478e-02, 3.867e-02, 3.675e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(1.678e-02, 4.018e-02, -6.470e-02, 1.886e-02, 1.352e-02, 9.948e-03, 9.785e-03, 1.204e-02, -1.730e-02, -6.482e-02, 1.155e-01, -1.501e-01, 1.046e-01, 1.116e-01, 1.108e-01, 1.025e-01), r5);\n\tr6 = MulAdd(s0_0_0, M4(-1.177e-02, 3.018e-03, 1.878e-01, 8.668e-02, 2.089e-02, 2.026e-02, 2.482e-02, 2.403e-02, 3.168e-02, 1.280e-02, 5.630e-02, -4.846e-02, -1.745e-01, -1.766e-01, -1.724e-01, -1.736e-01), r6);\n\tr7 = MulAdd(s0_0_0, M4(-1.569e-01, -6.947e-03, -2.718e-02, 8.287e-02, -7.700e-02, -7.781e-02, -7.599e-02, -7.716e-02, 5.442e-02, -7.039e-02, -3.804e-02, 5.494e-02, 2.465e-02, 2.423e-02, 7.222e-03, 2.340e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(6.042e-02, 4.809e-03, 2.048e-02, 7.388e-03, 1.691e-02, 2.807e-02, 2.872e-02, 2.758e-02, -1.401e-01, 6.671e-02, -1.908e-01, 1.841e-01, 2.311e-02, 2.074e-02, 3.911e-02, 2.249e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(1.118e-01, -2.907e-02, 1.092e-01, -7.762e-03, 6.169e-02, 5.380e-02, 7.304e-02, 7.198e-02, -2.860e-01, 2.261e-02, 1.438e-01, 3.353e-03, -2.271e-02, -2.882e-02, 4.910e-03, -9.591e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(-9.600e-04, 2.664e-02, -2.894e-03, 1.801e-02, 4.192e-02, -2.854e-02, 1.254e-02, 1.960e-02, 2.306e-02, -2.701e-02, 1.939e-02, -5.290e-02, 2.521e-02, 4.765e-02, -5.897e-04, -1.382e-03), r2);\n\tr3 = MulAdd(s0_0_1, M4(8.956e-02, 7.029e-02, -9.967e-02, 1.611e-01, 3.231e-02, 4.183e-02, 5.089e-02, 6.763e-02, 2.404e-02, -2.476e-01, 1.294e-02, -1.593e-01, -5.020e-02, -4.879e-02, -2.861e-02, -6.245e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(2.256e-03, 9.689e-02, 5.703e-02, 5.408e-02, 6.888e-02, 6.533e-02, 8.892e-02, 6.286e-02, 5.800e-03, -4.017e-01, -7.922e-02, 3.883e-01, 2.015e-02, 1.104e-02, 2.605e-02, 4.046e-03), r4);\n\tr5 = MulAdd(s0_0_1, M4(2.068e-02, 1.925e-02, 3.422e-02, -3.701e-02, 5.244e-02, 6.048e-02, 5.028e-02, 3.215e-02, -1.319e-02, -1.709e-01, -9.179e-02, -2.967e-01, -9.503e-03, -1.883e-02, 9.898e-03, 1.238e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(9.356e-03, 5.705e-03, 3.835e-02, 3.530e-03, 3.060e-02, 3.854e-02, 3.054e-02, 4.250e-02, 6.038e-02, -1.409e-02, -1.555e-01, 1.814e-01, 4.037e-02, 5.743e-02, 5.667e-02, 9.284e-03), r6);\n\tr7 = MulAdd(s0_0_1, M4(-1.886e-01, -7.532e-02, -2.939e-03, 4.706e-02, -3.444e-02, -4.405e-02, -1.232e-02, -2.187e-02, 1.279e-01, 3.016e-02, 8.148e-02, 2.096e-01, 2.880e-02, 3.468e-02, 3.298e-02, 3.731e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(3.232e-02, 1.090e-02, 4.942e-02, 4.858e-02, 8.879e-02, 7.440e-02, 6.769e-02, 8.657e-02, 7.323e-02, 1.181e-04, -8.942e-02, -2.194e-02, 5.797e-02, 6.141e-02, 5.418e-02, 6.609e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(3.369e-02, -2.067e-02, 1.954e-02, -1.566e-02, 1.177e-02, -1.251e-02, 1.515e-02, 8.981e-03, -1.272e-01, 7.769e-03, 1.042e-02, -4.271e-02, -5.063e-02, -5.074e-02, -5.078e-02, -4.837e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.832e-03, 6.063e-03, -1.182e-03, 2.723e-03, 5.182e-02, 2.304e-02, 3.555e-02, 1.941e-02, 2.304e-02, 1.823e-02, -1.144e-02, 8.476e-03, -8.485e-02, -9.191e-02, -6.896e-02, -7.421e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-8.456e-03, 3.879e-02, -8.178e-02, -1.484e-01, 2.650e-02, 1.143e-02, 6.493e-03, 1.525e-02, 2.742e-02, -1.579e-01, -3.751e-02, 1.924e-02, -7.207e-03, -8.546e-03, -1.088e-02, -9.972e-03), r3);\n\tr4 = MulAdd(s0_0_2, M4(-8.098e-02, 1.050e-01, 3.040e-02, -1.131e-01, 2.323e-02, 3.048e-02, 4.263e-02, 2.794e-02, -6.684e-03, 1.062e-01, -1.433e-02, 8.789e-02, 1.224e-01, 1.212e-01, 1.219e-01, 1.214e-01), r4);\n\tr5 = MulAdd(s0_0_2, M4(2.877e-03, 9.964e-03, 4.720e-02, 8.692e-02, 6.188e-04, 2.476e-02, 2.560e-02, 1.872e-02, 5.791e-03, -6.854e-02, -4.391e-02, -2.001e+00, -6.087e-02, -5.548e-02, -7.305e-02, -6.726e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(2.492e-02, 1.057e-01, 1.397e-01, 6.018e-02, -4.341e-02, -3.676e-02, -3.820e-02, -2.684e-02, -1.921e-01, -1.285e+00, -1.905e-01, 6.723e-02, -3.341e-02, -3.026e-02, -3.212e-02, -2.804e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-3.839e-02, -3.922e-02, 4.606e-02, 1.450e-01, -2.396e-02, -3.121e-02, -1.215e-02, -1.601e-02, -1.244e-02, 2.459e-02, 5.886e-03, 1.296e-01, 3.926e-02, 6.667e-02, 4.524e-02, 5.729e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-5.412e-02, -5.805e-03, 1.094e-01, -3.895e-02, 4.720e-02, 4.558e-02, 4.656e-02, 4.747e-02, -2.577e-02, -1.800e-01, -1.285e-01, -7.711e-02, -4.960e-02, -5.801e-02, -7.233e-02, -5.786e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(8.367e-02, -2.160e-02, 3.091e-01, 5.079e-02, 1.012e-01, 1.017e-01, 1.000e-01, 1.005e-01, 1.397e-02, 1.087e-01, -5.290e-02, 1.481e-01, 2.070e-02, 3.662e-02, -7.016e-03, 4.328e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-3.390e-02, 4.577e-02, -2.688e-03, 3.200e-02, 4.910e-02, 5.154e-02, 4.149e-02, 5.228e-02, 7.050e-02, -5.236e-02, 2.572e-02, -1.496e-02, -2.886e-02, -1.456e-02, -2.960e-02, -1.207e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(3.837e-03, -4.543e-02, 1.049e-02, 5.477e-02, -2.230e-02, -2.641e-02, -1.892e-02, -1.867e-02, -3.562e-02, -4.589e-02, -7.759e-03, -2.175e-03, -4.611e-02, -5.964e-02, -6.631e-02, -5.313e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-5.090e-03, 4.645e-02, -2.014e-02, 8.779e-02, -8.816e-03, -1.151e-02, -1.048e-02, -1.026e-02, -9.439e-02, -2.262e-01, 1.678e-02, 1.229e-01, -1.500e-02, -2.676e-02, -1.226e-02, -2.013e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(4.787e-02, 2.981e-02, -1.541e-01, -5.980e-02, 1.910e-02, 1.177e-02, 1.246e-02, 1.455e-02, -2.395e-02, 4.299e-02, 9.889e-02, -9.000e-02, 1.012e-01, 1.054e-01, 1.078e-01, 1.056e-01), r5);\n\tr6 = MulAdd(s0_1_0, M4(2.329e-02, 3.318e-03, -3.272e-02, 6.753e-03, -2.454e-02, -2.795e-02, -1.998e-02, -2.162e-02, 4.360e-03, 1.586e-03, 8.346e-02, 1.566e-01, 5.738e-02, 6.035e-02, 6.707e-02, 5.771e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(-1.059e-01, 2.945e-02, -1.066e-01, 1.434e-01, 6.689e-03, 6.799e-03, 6.623e-03, 7.010e-03, -5.306e-02, -1.752e-01, 8.150e-02, 1.408e-01, 8.292e-02, 8.236e-02, 8.537e-02, 9.539e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-8.077e-02, 1.584e-01, -3.166e-03, 1.647e-01, 1.710e-02, 1.680e-02, 1.976e-02, 2.067e-02, -2.679e-01, -7.103e-02, -2.736e-01, -2.059e-01, 9.224e-03, 1.865e-02, 2.141e-02, 2.784e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(8.088e-02, -3.457e-02, 1.183e-01, -7.108e-03, -1.056e-01, -1.029e-01, -1.046e-01, -1.059e-01, 2.376e-03, -1.073e-01, -3.183e-01, 1.239e-01, -1.627e-02, 8.524e-03, -4.102e-03, 6.896e-03), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.969e-02, 4.501e-02, -1.014e-02, 7.089e-03, -1.959e-02, -2.549e-02, -6.735e-03, -2.700e-02, 5.014e-02, -1.720e-02, 1.517e-02, -3.478e-03, -3.176e-02, -1.294e-02, -1.769e-02, -3.729e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.786e-02, 5.770e-02, 2.734e-02, 1.793e-01, 5.589e-02, 3.501e-02, 5.091e-02, 3.816e-02, -1.302e-02, -1.447e-01, -1.209e-01, -1.109e-01, 9.662e-02, 1.071e-01, 1.095e-01, 1.054e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(1.737e-02, -1.378e-01, 7.279e-02, 3.045e-01, -1.341e-02, -1.281e-02, -8.748e-04, -5.515e-02, 4.632e-02, -3.694e-01, -1.384e-01, -5.100e-01, 5.594e-02, 5.535e-02, 4.527e-02, 5.231e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(2.181e-02, 1.005e-01, -1.439e-02, 7.224e-02, -8.383e-02, -1.067e-01, -1.116e-01, -9.439e-02, -1.553e-02, 1.253e-02, -4.356e-02, 4.380e-02, -2.477e-02, -5.480e-02, -1.543e-02, -4.783e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(1.321e-01, 2.577e-02, 1.736e-02, 1.425e-01, 1.048e-01, 1.148e-01, 9.206e-02, 9.060e-02, -6.546e-02, 2.173e-04, -6.379e-01, -1.826e-01, -2.659e-02, -3.245e-02, -4.826e-02, -3.333e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(-1.880e-01, -7.526e-02, 4.225e-02, -3.606e-02, -7.578e-02, -7.462e-02, -5.158e-02, -9.120e-02, -1.952e-01, 9.890e-02, -2.427e-01, -1.784e-01, -2.522e-02, -3.124e-02, -1.649e-02, -1.699e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-2.463e-02, 1.140e-01, 1.478e-02, -1.026e-01, 1.744e-02, -1.381e-02, 2.192e-02, 3.663e-02, -3.026e-01, -6.679e-02, 1.726e-02, 2.556e-02, -4.327e-03, -1.625e-02, -7.115e-03, -6.995e-03), r0);\n\tr1 = MulAdd(s0_1_2, M4(5.103e-02, -1.901e-02, 7.035e-02, 2.032e-02, 6.548e-02, 7.938e-02, 5.754e-02, 7.844e-02, 3.155e-02, -7.516e-03, -3.426e-02, 7.272e-02, -1.410e-02, -1.842e-02, -2.113e-02, -1.805e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.605e-02, 8.928e-03, -3.039e-03, 1.299e-02, 6.575e-02, 3.999e-02, 7.034e-02, 3.147e-02, 1.126e-02, 2.426e-02, 5.560e-04, -3.717e-02, 1.090e-01, 7.630e-02, 1.011e-01, 8.431e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(7.160e-03, -5.102e-03, 1.727e-02, -5.155e-02, -2.504e-02, -4.024e-02, -2.183e-02, -3.394e-02, -2.905e-02, 1.226e-02, 7.963e-04, 3.898e-03, -7.646e-03, -1.833e-02, -2.201e-02, -1.764e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(2.001e-03, -1.159e-01, -1.473e-02, 1.496e-01, 2.773e-02, 2.270e-02, 3.125e-02, 1.847e-02, 1.330e-02, 1.460e-01, -4.612e-02, -2.185e-01, -1.094e-02, -1.340e-02, -9.453e-04, -1.054e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(8.618e-03, 2.032e-02, 1.758e-02, -4.417e-01, -6.323e-02, -5.694e-02, -5.251e-02, -6.373e-02, 6.624e-03, -7.027e-02, 1.634e-02, 3.068e-01, -6.570e-02, -1.494e-01, -1.240e-01, -1.211e-01), r5);\n\tr6 = MulAdd(s0_1_2, M4(-1.269e-02, -5.927e-02, -2.137e-02, 1.099e-01, -5.186e-02, -4.906e-02, -5.200e-02, -6.201e-02, 2.378e-01, -9.921e-01, 1.679e-02, -6.300e-01, -6.740e-02, -6.234e-02, -6.595e-02, -6.247e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-1.025e-01, -6.615e-02, -4.002e-02, 2.972e-02, 5.108e-02, 4.152e-02, 7.804e-02, 2.782e-02, 2.244e-02, -1.609e-02, 6.774e-02, 3.781e-02, 1.616e-01, 1.612e-01, 1.706e-01, 1.665e-01), r7);\n\tr0 = MulAdd(s0_2_0, M4(5.950e-02, 1.607e-01, 1.015e-01, 5.691e-02, 2.221e-03, 2.346e-03, 1.744e-03, 3.320e-03, 6.283e-02, -3.279e-01, -4.633e-02, 6.567e-02, -7.563e-02, -7.776e-02, -7.240e-02, -7.777e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-3.226e-02, -2.394e-02, 1.050e-01, -4.335e-02, -1.243e-01, -1.190e-01, -1.232e-01, -1.239e-01, -1.503e-03, 4.127e-02, 1.504e-01, 2.229e-02, -8.024e-02, -7.889e-02, -8.090e-02, -8.099e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-3.506e-02, 4.481e-02, 2.994e-03, 5.406e-02, -1.108e-01, -1.187e-01, -1.193e-01, -1.092e-01, -3.703e-03, 1.259e-02, 1.849e-02, 5.983e-03, -1.039e-01, -1.000e-01, -9.306e-02, -8.662e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(1.449e-01, 1.790e-01, -4.317e-02, -1.110e-02, -3.813e-02, -4.229e-02, -3.758e-02, -3.561e-02, -4.770e-01, 2.354e-03, 2.768e-02, 1.380e-03, 6.391e-02, 5.950e-02, 5.989e-02, 6.566e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-8.294e-02, 1.330e-01, -2.361e-02, -5.140e-02, 2.814e-02, 2.351e-02, 2.691e-02, 2.625e-02, -5.689e-01, 4.897e-02, 3.383e-02, -6.848e-02, -8.619e-03, -7.217e-03, -9.347e-03, -1.132e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(5.926e-02, -2.348e-02, -1.657e-02, 4.661e-02, 7.075e-02, 5.489e-02, 5.806e-02, 5.935e-02, 2.589e-02, 2.405e-02, -4.945e-03, -3.821e-02, 5.626e-02, 4.929e-02, 3.960e-02, 4.240e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(2.833e-02, 7.642e-03, -6.232e-03, -4.312e-03, -3.909e-02, -4.076e-02, -3.273e-02, -3.583e-02, 8.674e-02, 6.373e-03, 3.135e-02, 1.015e-01, -2.617e-02, -2.462e-02, -1.916e-02, -1.909e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(5.258e-02, -4.396e-02, 1.294e-02, -5.185e-02, -2.765e-02, -2.766e-02, -2.685e-02, -2.726e-02, 1.039e-01, 1.203e-02, 3.003e-02, -1.832e-02, -7.699e-02, -7.711e-02, -7.395e-02, -7.629e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(1.442e-01, -8.332e-02, 6.165e-02, 1.371e-01, -6.719e-02, -6.901e-02, -6.290e-02, -6.673e-02, -5.735e-02, -6.426e-02, -1.297e-01, -1.476e-01, -1.340e-02, -8.476e-03, -1.498e-02, -9.491e-03), r0);\n\tr1 = MulAdd(s0_2_1, M4(-9.552e-02, 1.834e-02, 1.573e-01, 2.067e-02, 1.092e-02, -5.146e-04, 5.047e-03, -4.513e-03, 3.238e-02, 7.746e-04, -5.077e-02, 2.582e-02, 1.047e-02, 1.195e-02, 8.940e-03, 9.732e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(2.512e-02, 6.819e-03, -5.820e-03, 1.266e-02, -2.810e-02, -1.547e-02, -1.717e-02, -3.499e-03, 8.078e-03, 5.659e-03, 1.218e-02, 4.747e-03, 1.712e-02, 4.091e-03, -2.048e-03, 1.343e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-1.745e-01, 5.542e-02, 1.433e-02, 3.438e-02, -8.832e-02, -9.105e-02, -9.030e-02, -8.150e-02, 1.178e-01, 4.553e-02, -1.218e-02, -2.014e-02, -2.615e-02, -2.819e-02, -2.790e-02, -4.057e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-4.392e-01, 1.180e-01, 9.982e-02, -1.755e-01, -1.127e-02, -1.273e-02, -1.465e-02, -7.484e-03, -5.731e-01, -1.088e-01, -6.049e-02, 1.721e-01, -8.076e-02, -8.328e-02, -8.422e-02, -8.266e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(6.116e-03, -3.092e-02, -5.232e-02, 4.906e-02, 1.530e-02, 3.070e-02, 9.782e-03, 2.482e-02, 1.550e-02, 2.828e-02, 3.668e-02, 6.771e-02, 3.697e-03, 3.325e-03, 6.292e-03, 1.029e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(1.244e-01, 2.365e-02, -3.245e-02, 1.174e-02, -4.499e-02, -2.728e-02, -2.421e-02, 1.468e-02, -7.270e-02, 1.685e-02, -9.362e-03, -1.897e-01, -1.453e-02, -8.940e-03, -1.188e-02, -1.674e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(-9.583e-02, -7.437e-02, 8.994e-02, 3.256e-02, 5.191e-02, 4.728e-02, 5.227e-02, 4.628e-02, 1.060e-01, 7.175e-02, 3.394e-02, 1.251e-01, 3.622e-02, 3.527e-02, 4.084e-02, 3.952e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(1.458e-01, 1.015e-01, 2.928e-02, -2.258e-02, -1.054e-01, -9.270e-02, -9.594e-02, -1.005e-01, 1.989e-02, -7.523e-03, 2.186e-02, 8.915e-02, 3.194e-02, 3.367e-02, 3.396e-02, 3.450e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-2.633e-02, 1.019e-02, 1.990e-02, -2.232e-02, -4.580e-02, -6.968e-02, -5.433e-02, -7.696e-02, 1.908e-02, 6.854e-03, 6.876e-03, 6.396e-02, -7.155e-02, -7.392e-02, -7.343e-02, -7.059e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(4.587e-03, 2.280e-03, -3.759e-04, -1.105e-02, 2.915e-03, 4.938e-02, 8.463e-03, 2.539e-02, -7.267e-04, 5.601e-03, 2.467e-03, -3.724e-03, 9.993e-02, 8.858e-02, 9.574e-02, 9.072e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(2.305e-01, 3.505e-02, 1.776e-04, -6.352e-03, 8.778e-03, 1.277e-02, 1.198e-02, 1.134e-02, -9.689e-01, 4.993e-02, 2.576e-02, -1.077e-02, 1.401e-01, 1.387e-01, 1.401e-01, 1.396e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(-9.629e-03, 2.580e-02, 1.258e-02, -5.285e-02, -5.569e-02, -6.100e-02, -5.666e-02, -5.668e-02, -1.596e-01, 1.742e-01, -5.780e-03, -5.374e-01, -4.530e-02, -4.632e-02, -4.585e-02, -4.608e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-1.137e-02, -1.191e-03, 4.487e-03, -8.101e-02, -1.493e-01, -1.274e-01, -1.764e-01, -1.564e-01, 7.653e-03, -1.180e-02, 4.844e-02, 1.894e-01, -1.180e-01, -1.152e-01, -1.217e-01, -1.182e-01), r5);\n\tr6 = MulAdd(s0_2_2, M4(1.353e-01, 1.799e-02, 1.686e-01, 4.123e-01, -7.489e-03, -4.462e-03, -7.286e-03, -4.764e-03, -1.069e+00, -1.058e-01, -1.298e-02, 1.009e+00, -8.612e-03, -5.655e-03, -8.284e-03, -5.854e-03), r6);\n\tr7 = MulAdd(s0_2_2, M4(4.947e-02, 3.095e-02, -2.104e-03, 4.470e-02, -2.951e-03, -1.005e-02, -1.559e-02, 8.888e-03, 1.233e-01, -5.062e-03, 5.161e-02, 6.295e-02, 2.689e-02, 2.303e-02, 2.378e-02, 2.652e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(9.790e-02, -1.875e-01, -6.536e-02, 1.267e-01, -1.862e-02, 1.830e-01, -5.376e-02, -7.601e-03, -6.444e-04, -5.601e-02, -2.847e-02, 1.288e-01, 8.455e-02, 3.695e-02, 1.161e-01, -9.388e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-5.081e-02, -1.245e-02, -1.064e-01, -3.163e-02, 3.920e-02, 2.877e-02, 6.446e-02, -9.951e-02, 2.618e-02, -1.524e-02, -2.709e-02, -8.667e-03, -2.652e-02, -3.828e-02, 1.204e-01, 6.149e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.608e-02, 2.694e-03, -7.173e-04, 1.597e-02, 5.493e-03, -9.022e-03, 7.734e-03, -9.995e-03, 4.282e-03, -1.191e-03, 7.504e-04, -1.435e-04, -5.659e-03, 4.183e-03, -5.752e-03, 2.105e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(4.751e-02, -1.115e-02, -2.442e-02, -4.939e-02, 5.144e-02, 6.870e-02, -7.374e-03, 1.264e-02, 4.382e-02, 3.001e-02, -7.763e-02, -6.420e-02, 3.749e-02, -4.954e-02, 5.118e-02, -4.762e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-6.066e-02, -3.833e-02, 1.097e-01, 2.102e-02, 1.321e-02, 1.034e-01, 7.211e-03, 2.474e-01, 3.612e-02, 2.192e-01, 3.632e-02, -7.746e-02, 5.733e-02, -1.645e-01, 1.219e-01, 3.140e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(1.566e-02, -4.501e-03, 7.700e-02, -8.856e-02, -6.272e-03, 3.276e-03, -4.840e-03, -3.711e-02, -1.650e-03, 6.476e-03, 7.323e-03, 6.333e-03, 9.602e-03, -4.891e-02, -3.935e-02, 1.032e-01), r5);\n\tr6 = MulAdd(s1_0_0, M4(-5.064e-02, -1.341e-02, -3.291e-02, -1.958e-02, -6.630e-03, 7.283e-03, 4.433e-03, 6.598e-02, 7.777e-02, 1.529e-02, 2.038e-02, 7.368e-02, -4.116e-03, -7.598e-03, -3.398e-02, 4.338e-03), r6);\n\tr7 = MulAdd(s1_0_0, M4(2.338e-01, 9.110e-02, 7.692e-02, 1.109e-01, -8.740e-02, -3.944e-02, 5.188e-02, 4.861e-01, -1.083e-01, -7.327e-02, 4.869e-02, -2.541e-01, 4.474e-01, -5.309e-02, -3.504e-02, -1.991e-01), r7);\n\tr0 = MulAdd(s1_0_1, M4(3.738e-02, -3.085e-01, 3.520e-02, -3.339e-01, 4.226e-02, 2.596e-01, -1.670e-02, -6.689e-02, 1.571e-01, 1.394e-01, -1.105e-02, -1.018e-01, 1.770e-01, -3.570e-03, -2.041e-02, -1.353e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(3.529e-02, 2.464e-02, 4.762e-02, -2.883e-02, 6.203e-02, 1.820e-02, 3.935e-02, 8.524e-03, 1.584e-02, 1.914e-02, 1.142e-02, 1.667e-02, -1.378e-01, -1.149e-02, 3.452e-03, -1.029e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(3.163e-02, 2.367e-02, -1.263e-02, 5.836e-02, -1.060e-02, -1.380e-02, -3.160e-03, 1.160e-03, 8.083e-03, 9.605e-03, 1.750e-03, -2.753e-02, 4.834e-02, -9.634e-03, 2.076e-04, 6.881e-03), r2);\n\tr3 = MulAdd(s1_0_1, M4(-3.422e-01, 1.620e-01, -4.171e-02, -1.051e-01, 7.300e-02, -2.383e-02, 1.044e-01, 3.522e-02, 8.073e-02, -1.985e-02, 1.713e-02, -1.796e-02, -6.148e-04, -1.049e-01, 1.062e-01, 1.366e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(-4.665e-01, 1.525e-01, -1.174e-03, 1.342e-01, -4.939e-03, 3.073e-02, 2.592e-03, 6.107e-02, 6.166e-02, -9.281e-02, -9.645e-02, 7.099e-02, -5.162e-03, -1.289e-01, 1.082e-01, 1.027e-01), r4);\n\tr5 = MulAdd(s1_0_1, M4(2.593e-02, 5.135e-02, 1.262e-01, 5.606e-02, -1.303e-02, -2.714e-02, 2.680e-03, -2.045e-01, 1.856e-03, 3.143e-02, 8.886e-05, 2.087e-01, -1.210e-02, -7.779e-02, -3.330e-02, -3.144e-01), r5);\n\tr6 = MulAdd(s1_0_1, M4(4.985e-02, 1.262e-02, -3.305e-02, 3.467e-02, 1.389e-01, 1.595e-02, 7.616e-02, 9.224e-02, -1.872e-02, -1.092e-02, 1.550e-01, 8.526e-02, 1.528e-01, 1.032e-02, -1.635e-01, 4.034e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-8.490e-02, -1.865e-01, -5.808e-02, -1.802e-02, -7.911e-02, -6.995e-02, -9.985e-02, 6.288e-02, -1.246e-01, -3.560e-02, -5.896e-02, -1.454e-01, 1.575e-01, -4.913e-02, 3.065e-02, -3.420e-01), r7);\n\tr0 = MulAdd(s1_0_2, M4(5.202e-02, 1.734e-01, -1.089e-01, -4.066e-02, 9.405e-02, -9.139e-03, 3.844e-02, -1.241e-01, -3.890e-03, -1.108e-02, -9.782e-03, -3.975e-02, -3.104e-03, -9.426e-02, -4.714e-03, 3.016e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(4.160e-02, 4.373e-03, 2.064e-02, 3.526e-02, -3.422e-02, -1.294e-02, -5.213e-02, -2.155e-02, -2.201e-02, 2.488e-04, -1.611e-02, -2.491e-03, -5.001e-02, -6.910e-03, -7.813e-03, 1.248e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(3.058e-02, 1.467e-02, -3.814e-03, 2.339e-02, 2.801e-02, -1.032e-02, 6.799e-03, -1.291e-02, -3.247e-03, 1.781e-02, -4.681e-03, -8.206e-04, -1.869e-02, -1.916e-02, 1.943e-03, 1.824e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-6.100e-02, 7.078e-02, 5.828e-02, 1.604e-01, 4.448e-02, 7.991e-02, -2.187e-02, 2.918e-02, 7.417e-02, 5.318e-02, -3.092e-02, -6.758e-02, -6.849e-03, -1.837e-01, 9.158e-02, 1.007e-01), r3);\n\tr4 = MulAdd(s1_0_2, M4(1.957e-01, -1.184e-01, 3.042e-02, -3.376e-01, -3.241e-02, 7.771e-02, -1.875e-02, -1.564e-01, -1.300e-03, -2.041e-02, 1.369e-02, -1.459e-01, 7.139e-03, 1.470e-01, 5.953e-02, 5.171e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(5.653e-03, -3.815e-03, 9.263e-02, -3.117e-01, -1.157e-02, 1.378e-02, -2.161e-02, 1.047e-02, 9.885e-03, -3.371e-03, 3.043e-02, -1.526e-01, -5.073e-03, -6.762e-03, -2.040e-02, -5.787e-01), r5);\n\tr6 = MulAdd(s1_0_2, M4(-2.362e-01, 1.118e-01, 1.524e-01, 7.686e-02, 7.852e-02, 1.831e-01, -8.447e-02, -1.538e-03, 3.385e-01, 2.524e-03, -6.989e-02, 5.229e-02, -4.435e-04, -4.389e-01, -1.427e-01, -1.565e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(3.160e-02, 2.391e-02, -1.523e-01, 1.645e-01, -1.399e-02, -3.362e-02, -3.363e-02, 4.828e-01, -3.138e-01, -1.688e-02, -5.483e-02, -3.399e-01, 1.768e-01, 5.571e-03, -3.772e-04, -3.084e-01), r7);\n\tr0 = MulAdd(s1_1_0, M4(-6.310e-02, 3.606e-01, -1.418e-01, 1.333e-01, -3.098e-02, 1.034e-01, -3.648e-02, 6.501e-02, -6.558e-02, 6.307e-02, -8.979e-02, -1.719e-03, -1.516e-01, -3.317e-01, -1.866e-01, 2.853e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.370e-01, -2.441e-02, -1.056e-01, -1.973e-02, -1.387e-02, 1.689e-02, 4.118e-02, -9.133e-02, 1.736e-02, -4.060e-02, 1.864e-02, 2.382e-02, -4.537e-02, 4.144e-02, 1.220e-01, 1.138e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(3.348e-02, -1.320e-02, 2.224e-02, -8.850e-02, -5.012e-03, 3.392e-03, -7.851e-03, 3.815e-03, -1.148e-02, 4.497e-03, 9.233e-04, 2.256e-02, 4.451e-03, -2.184e-02, 1.264e-02, -1.706e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-1.559e-02, -1.397e-01, 1.447e-01, 5.461e-02, 7.685e-03, -7.903e-02, 5.606e-02, -3.840e-03, 3.022e-02, 6.750e-02, -1.600e-02, -4.693e-02, 3.925e-02, -7.176e-02, 7.877e-02, -1.305e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(7.085e-02, 2.137e-01, 1.495e-01, 2.179e-01, -4.943e-02, 1.654e-01, 4.321e-02, 1.070e-01, 3.478e-02, 1.731e-01, -5.861e-03, 3.600e-02, 2.086e-02, -2.109e-01, 1.670e-01, -1.958e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-4.363e-03, -1.020e-01, -1.623e-02, 1.358e-01, -7.199e-03, 1.599e-02, -6.153e-02, -1.449e-02, 1.536e-02, -3.208e-02, -2.386e-02, 1.142e-01, -1.555e-02, -3.916e-02, -4.072e-02, 9.291e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(5.317e-02, 2.302e-02, -4.531e-02, 9.936e-02, 3.544e-02, 1.110e-02, -3.858e-02, 9.171e-02, 6.368e-02, 2.202e-02, -9.895e-03, -4.339e-02, -7.294e-02, -1.287e-02, 2.125e-02, 3.663e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(3.466e-01, -1.063e-01, 2.439e-02, -9.868e-02, -2.862e-01, -1.213e-01, 6.187e-02, 3.387e-01, -3.733e-01, -8.814e-02, -8.017e-02, -1.942e-01, -1.978e-01, -9.349e-02, -8.544e-03, 8.663e-03), r7);\n\tr0 = MulAdd(s1_1_1, M4(3.416e-02, -2.628e-02, 1.486e-01, 1.036e-01, -1.771e-02, -3.862e-01, -6.393e-02, -4.214e-02, -9.922e-02, 2.615e-01, 1.632e-01, -5.836e-01, -1.773e-01, -8.775e-02, 4.772e-02, -1.525e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.549e-02, 6.416e-02, 2.628e-01, -8.918e-02, 6.980e-02, -4.016e-02, 7.103e-02, -1.610e-01, 1.558e-02, 5.892e-02, 3.501e-02, 1.035e-01, 3.797e-02, -9.405e-02, -5.522e-03, 3.581e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.139e-01, 3.783e-02, 1.976e-02, -6.257e-02, 1.213e-02, -1.929e-02, 2.298e-02, -1.489e-02, -3.167e-03, 8.076e-03, 4.900e-03, -1.831e-02, -2.664e-02, -6.714e-02, 1.361e-03, -1.080e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-1.168e+00, -1.852e-01, 8.305e-02, 2.606e-01, -1.614e-03, -9.509e-02, -1.201e-02, -9.648e-03, -2.243e-02, 1.210e-02, -3.248e-02, -1.149e-01, -2.474e-02, 2.682e-02, -1.286e-01, -1.884e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(2.602e-01, -3.665e-03, 3.495e-02, 1.356e-01, -6.726e-02, -7.619e-02, -5.883e-02, 1.081e-02, 3.638e-02, -1.453e-01, -2.170e-02, 2.251e-01, -1.783e-02, -1.188e-01, 5.711e-02, -6.208e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(5.960e-02, -1.969e-01, 6.568e-02, 1.371e-01, -1.171e-04, -2.791e-02, -2.114e-02, -4.699e-02, 1.010e-02, -1.583e-03, 6.813e-02, 1.892e-02, -3.971e-02, 2.840e-02, 1.054e-02, -1.476e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(4.459e-02, -3.200e-02, 1.929e-02, -1.539e-01, 5.409e-02, 2.041e-02, 5.001e-02, 1.657e-01, -8.636e-02, -3.997e-02, 7.372e-02, 1.562e-01, -1.452e-01, -5.197e-02, -2.862e-01, -1.781e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(4.171e-01, -8.434e-01, 8.074e-02, 2.183e-01, -9.202e-02, 2.585e-02, -3.219e-02, 1.704e-01, -3.318e-01, -3.302e-02, -1.985e-02, -5.658e-02, 5.311e-02, 1.059e-01, -5.497e-02, 2.278e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(1.208e-01, 6.227e-01, -3.808e-02, -5.822e-01, 2.698e-02, -1.426e-01, 6.466e-02, -1.250e-01, -2.127e-01, 2.083e-01, 4.713e-02, -1.077e-02, 3.017e-02, -8.434e-02, 8.755e-03, -2.054e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(2.927e-02, 2.693e-03, 2.224e-01, 1.282e-02, 2.563e-02, 7.143e-03, -2.165e-02, -1.032e-01, 1.821e-01, -3.683e-02, -1.117e-01, 1.194e-01, 5.686e-02, -1.366e-02, -2.527e-02, 5.137e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.026e-01, 8.727e-02, -2.907e-02, 7.254e-02, 2.949e-02, -1.676e-02, 2.461e-03, 1.188e-02, -3.954e-03, 1.420e-02, -7.258e-04, 4.232e-04, -2.411e-02, -4.958e-03, -1.574e-03, 6.232e-03), r2);\n\tr3 = MulAdd(s1_1_2, M4(-7.404e-02, -2.816e-01, -3.142e-04, 1.573e-01, 6.415e-03, -6.851e-03, 2.767e-02, 1.722e-02, 3.551e-03, -6.332e-02, -9.387e-02, -2.579e-01, -1.684e-03, 1.991e-02, -1.786e-02, -6.521e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-5.261e-01, 1.470e-02, 1.110e-01, -1.986e-01, 4.522e-02, -7.242e-02, -8.388e-02, -1.084e+00, 6.770e-02, -7.975e-02, 2.823e-03, 6.637e-02, -3.378e-02, 3.930e-02, 6.609e-02, -7.069e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(2.468e-02, 4.172e-02, 1.848e-01, -5.178e-02, -1.155e-02, -1.234e-02, 1.812e-02, 2.366e-02, 6.047e-04, 4.865e-02, 2.688e-02, 4.059e-02, -1.117e-03, 5.726e-03, -6.134e-03, 9.316e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(9.437e-01, 3.000e-01, -1.092e-01, 7.752e-02, 2.267e-01, 3.524e-02, 8.818e-02, -2.049e-03, 3.726e-02, 4.715e-01, -3.867e-01, -6.869e-03, -2.249e-01, 2.891e-01, -1.296e-01, -2.032e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(4.790e-01, 7.038e-02, -8.420e-02, 1.123e-01, -2.479e-03, -2.206e-02, -5.746e-02, 2.423e-01, -2.666e-01, 2.174e-02, -8.811e-02, -1.785e-01, 4.977e-03, -3.228e-03, -2.857e-02, -6.336e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-4.261e-01, 2.081e-02, 6.293e-02, 9.626e-02, 4.461e-02, 1.995e-01, 8.065e-03, 9.244e-03, -7.937e-03, -2.247e-01, 3.818e-02, -2.656e-02, 1.876e-02, 8.098e-02, -4.126e-02, 1.928e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.274e-01, 1.337e-01, -2.237e-01, -2.688e-01, 5.336e-02, 2.912e-02, 1.954e-02, 3.227e-02, -2.648e-02, -3.307e-02, -1.005e-01, -5.628e-02, -5.216e-02, -1.109e-02, -5.338e-02, 8.749e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-7.175e-03, 1.898e-02, 6.822e-03, -4.264e-02, 8.869e-03, -9.613e-03, -3.135e-03, 4.576e-03, 1.222e-02, -1.367e-03, -8.625e-03, -1.855e-02, 4.969e-03, -3.299e-03, -1.849e-02, -2.824e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-7.111e-01, -1.818e-01, -2.015e-01, -3.025e-01, -3.950e-02, 5.203e-04, 1.230e-02, -6.355e-03, 1.246e-01, 1.116e-02, -1.899e-02, -5.211e-02, 2.133e-01, -2.421e-02, -4.954e-03, -1.361e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-5.003e-01, 6.025e-01, -7.426e-03, -7.209e-01, -2.453e-01, 4.055e-02, -4.247e-02, 9.527e-03, -4.950e-02, 2.155e-01, -3.318e-02, -2.412e-02, -1.898e-01, -1.043e-01, 2.300e-01, -9.353e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(1.278e-02, -1.389e-01, 2.204e-01, -3.025e-01, -7.178e-03, 1.343e-02, -1.487e-02, 8.914e-03, -1.382e-02, -1.527e-02, 8.569e-02, 1.564e-02, -3.552e-02, -2.326e-02, -7.594e-03, 4.323e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-3.548e-02, 1.221e-01, -3.958e-01, -3.529e-01, 5.772e-02, 1.269e-02, -3.073e-02, 1.177e-01, 2.209e-02, 7.001e-03, 3.293e-02, -3.137e-02, -3.653e-02, -7.026e-03, 1.025e-02, -9.523e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(-3.486e-01, 5.350e-02, -2.704e-02, 1.044e-03, -2.161e-02, -2.734e-02, -3.264e-02, 6.161e-01, -1.366e-01, -2.604e-02, -2.103e-02, -2.973e-01, 2.072e-01, 6.230e-02, 2.350e-02, -4.513e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(3.679e-01, 7.786e-01, -6.647e-02, -5.254e-02, -6.526e-02, 3.032e-01, 3.084e-03, 3.469e-03, 1.587e-01, 1.530e-01, -2.787e-02, 1.899e-02, -6.942e-02, 3.963e-02, -3.166e-02, -5.022e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.236e-01, 2.263e-01, 2.653e-01, 4.133e-01, 8.385e-02, -1.563e-02, 1.672e-01, 5.816e-02, -5.330e-03, 1.463e-02, -1.037e-02, -4.697e-02, -3.329e-02, -1.897e-02, 1.465e-02, -3.786e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(-2.955e-02, 2.408e-02, 1.536e-01, -9.313e-02, -1.187e-03, 1.602e-03, 1.561e-04, 2.363e-02, -2.610e-02, 2.512e-02, 6.969e-03, -2.231e-02, 1.242e-03, -1.217e-02, 1.147e-02, -3.843e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-4.834e-01, -3.347e-01, -1.349e-01, -4.446e-01, -8.192e-01, 2.817e-03, -1.759e-02, 2.803e-02, -5.321e-01, 3.630e-02, 1.474e-03, -5.598e-02, -2.692e-01, 1.199e-02, -4.619e-02, 3.656e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-4.392e-01, -3.213e-01, -5.020e-01, 7.239e-01, -4.125e-01, 8.314e-03, -3.792e-02, 3.897e-01, -2.307e-01, 1.455e-01, -4.836e-02, 2.423e-02, -1.983e-01, 3.572e-02, 5.868e-02, 3.865e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(1.567e-01, -2.530e-01, -2.674e-01, -5.889e-01, 1.463e-02, 1.575e-02, -5.047e-02, -4.118e-02, 1.382e-02, -1.631e-04, -9.384e-02, 4.085e-02, -2.315e-02, -1.378e-02, -3.588e-02, -1.594e-01), r5);\n\tr6 = MulAdd(s1_2_1, M4(-4.264e-02, 1.231e-02, 1.883e-01, 3.057e-01, 2.805e-02, 9.671e-03, 2.665e-02, 1.314e-02, -6.108e-02, -1.953e-02, 5.549e-02, 2.816e-01, -5.775e-02, -3.260e-02, 5.174e-02, -4.784e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(4.810e-01, -3.855e-01, -1.208e-01, 7.755e-03, 1.382e-01, -4.068e-02, 3.900e-02, -3.682e-03, -1.837e-01, -1.200e-02, -7.269e-02, -1.426e-01, 1.342e-01, -4.576e-04, -6.173e-03, -1.936e-01), r7);\n\tr0 = MulAdd(s1_2_2, M4(1.451e+00, -1.604e+00, 2.956e-01, -1.087e-01, -5.801e-02, 2.186e-01, 6.312e-02, -4.800e-02, 7.175e-02, -1.342e-01, -2.532e-02, 1.348e-01, 3.439e-03, -6.556e-02, 6.973e-03, -4.728e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(-5.599e-01, -1.803e-01, -7.091e-02, 1.376e-01, 8.569e-02, 2.111e-02, -7.708e-03, -7.607e-02, -3.071e-02, 2.323e-02, -6.794e-03, 1.420e-02, -4.456e-02, -1.020e-02, 4.469e-02, 2.387e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.866e-01, 2.647e-01, -3.754e-02, 6.269e-02, 1.776e-02, -1.356e-02, 1.269e-03, 1.303e-02, -7.006e-04, 1.497e-02, -2.627e-03, -1.225e-02, 4.145e-03, -2.154e-02, 1.959e-03, 6.556e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(-8.479e-02, 5.986e-01, 5.099e-01, -2.727e-01, -2.265e-02, -1.008e-01, -4.463e-03, 1.367e-02, 3.411e-01, 6.955e-02, 1.575e-02, -2.016e-02, -1.089e-01, 5.031e-02, 7.865e-03, 8.924e-03), r3);\n\tr4 = MulAdd(s1_2_2, M4(-9.071e-02, 4.678e-01, -7.643e-02, -6.617e-03, 2.625e-01, -1.831e-02, 4.219e-03, -5.149e-01, 4.360e-02, 1.929e-01, 2.076e-02, -6.199e-01, -1.175e+00, 7.380e-04, 1.005e-01, 1.061e+00), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.898e-01, -1.033e-01, 2.105e-01, -3.794e-02, -1.238e-03, -2.940e-02, -2.521e-03, -3.604e-01, 5.264e-03, -3.613e-02, -4.436e-02, 2.361e-01, -1.296e-02, -4.863e-03, 6.420e-03, 6.275e-03), r5);\n\tr6 = MulAdd(s1_2_2, M4(-1.645e-01, -1.614e-01, -9.021e-01, -1.612e-01, -3.793e-01, -8.007e-03, -3.329e-03, -4.837e-01, -2.981e-01, -2.123e-03, 6.674e-02, -8.650e-01, -7.457e-03, -2.486e-02, 1.608e-02, -1.656e+00), r6);\n\tr7 = MulAdd(s1_2_2, M4(-1.481e-01, -7.629e-01, -4.276e-01, -2.614e-01, -5.239e-01, 6.772e-03, -9.822e-03, 4.271e-01, -1.376e-01, -8.469e-02, -3.319e-03, -2.705e-01, 1.539e-01, -3.850e-02, 1.571e-02, -1.201e-01), r7);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(6.445e-03, 5.569e-02, -2.640e-01, -3.736e-02, -1.877e-02, -2.386e-01, 6.474e-02, -8.203e-02, 1.538e-01, -1.672e-02, -9.623e-03, 3.591e-02, -6.365e-02, -1.841e-01, -5.087e-02, -7.349e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-9.893e-03, 5.433e-02, 5.560e-02, 3.878e-03, -1.684e-02, -3.327e-02, 3.674e-02, -1.983e-02, 4.632e-02, 4.854e-02, -4.272e-02, 2.548e-02, 7.841e-02, 2.210e-03, 5.193e-03, 5.546e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(6.028e-03, 2.692e-02, -3.502e-03, 4.042e-02, 1.249e-02, -4.675e-02, 3.321e-02, -5.434e-02, -2.140e-02, 3.376e-02, 5.737e-03, 2.989e-02, -3.306e-02, 2.982e-02, 3.532e-03, 2.364e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(8.060e-02, 8.293e-02, 1.219e-01, 4.012e-02, -2.475e-02, -2.308e-01, -2.266e-02, -6.897e-02, 4.774e-03, -2.134e-02, -3.815e-03, -5.044e-04, 3.878e-03, 8.949e-02, -1.602e-02, 3.622e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(6.634e-02, 1.780e-01, 9.433e-03, -8.639e-03, -3.513e-02, -1.709e-01, -1.128e-01, -1.253e-01, 2.585e-02, 1.866e-01, 9.501e-02, -3.829e-02, -7.381e-04, 5.057e-02, 2.795e-02, 1.426e-01), r4);\n\tr5 = MulAdd(s0_0_0, M4(3.251e-02, -5.152e-02, 1.245e-01, -1.690e-01, -1.695e-03, -5.201e-02, -1.804e-01, 8.274e-02, 3.006e-02, -2.795e-02, 1.323e-01, 8.663e-03, 2.935e-02, 7.295e-02, 1.675e-01, -5.501e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(5.605e-02, 7.055e-03, 1.065e-02, 8.180e-02, 1.012e-03, -3.152e-03, 6.751e-03, 4.555e-02, -7.944e-03, -8.665e-03, -9.293e-02, 4.886e-02, -8.230e-03, -8.521e-03, 4.305e-02, -8.495e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(4.077e-02, -2.330e-01, 2.913e-02, -1.993e-01, -3.524e-03, 2.745e-02, -2.113e-02, 1.380e-01, 1.330e-01, -2.548e-02, 9.954e-02, -1.977e-01, 3.436e-02, -2.458e-02, 2.341e-02, -3.143e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(-1.557e-01, 4.794e-02, 1.244e-01, 1.943e-01, 1.947e-01, -1.949e-01, -1.313e-01, -2.356e-02, 9.018e-02, -8.893e-02, 3.275e-02, 1.296e-01, -1.530e-01, 1.025e-01, 7.340e-02, 1.340e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-6.828e-03, -5.137e-02, 8.618e-02, 9.248e-03, -6.658e-02, 2.350e-02, -3.498e-02, -9.620e-02, -9.650e-02, 4.639e-03, 1.019e-01, 4.407e-02, 4.240e-02, -1.985e-02, 5.062e-02, 4.535e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.602e-01, 1.758e-02, 1.618e-02, -8.503e-02, 5.095e-02, 6.293e-02, 4.779e-03, -2.461e-02, 4.135e-02, -1.650e-02, 3.429e-02, -4.212e-02, -5.994e-02, -9.497e-02, 1.493e-02, -1.643e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(4.629e-02, -2.117e-01, -9.304e-02, 1.648e-01, -2.976e-02, -2.698e-01, 1.856e-02, -1.831e-01, 3.368e-02, 9.857e-02, -4.409e-02, 9.862e-02, -1.052e-02, 1.464e-01, -1.643e-02, 8.453e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(2.047e-03, -3.264e-01, -2.322e-02, 3.125e-02, 6.155e-03, -2.531e-02, 7.453e-02, -4.315e-02, 3.349e-02, -8.304e-02, 7.968e-02, -9.168e-02, -2.950e-02, -2.811e-01, 2.480e-02, 6.070e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-3.229e-02, -1.140e-01, -8.256e-02, -1.473e-01, 2.638e-02, -3.748e-02, -7.614e-04, -1.550e-02, 1.094e-02, -1.298e-01, 2.627e-03, 9.356e-03, 1.419e-02, -1.139e-02, -4.057e-03, 3.845e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(3.733e-02, 2.770e-02, -2.847e-02, 1.143e-01, 8.311e-02, 2.545e-02, -1.193e-01, -1.773e-02, -3.764e-02, 3.059e-02, 8.687e-02, -9.349e-02, -3.159e-02, 2.827e-02, -1.183e-02, 6.938e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(2.988e-02, 1.168e-01, 1.186e-01, -4.534e-02, 1.849e-02, 4.578e-02, 6.171e-02, -6.366e-03, 3.702e-01, 1.350e-01, 9.388e-02, -2.540e-02, -6.202e-03, 1.813e-01, 1.628e-02, -6.877e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(3.613e-02, 1.187e-02, -1.298e-02, -1.910e-02, 6.802e-02, 1.379e-01, -2.370e-02, -6.488e-02, 1.963e-01, 7.552e-02, -1.142e-01, -2.069e-01, 1.503e-01, -8.810e-02, -2.954e-02, -1.275e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.235e-01, 4.341e-03, 5.108e-02, 5.295e-02, -3.075e-02, -1.873e-02, -6.661e-02, -2.474e-02, -3.613e-02, 3.325e-02, 1.218e-01, 6.536e-02, 1.007e-01, 8.982e-03, -6.666e-02, 2.165e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.492e-02, 3.613e-02, -1.008e-02, 2.108e-02, 2.254e-02, 4.139e-02, -4.825e-03, -1.552e-02, 2.298e-02, 6.766e-02, -1.713e-02, 2.140e-02, 1.603e-02, 4.154e-02, -1.048e-02, 2.020e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(9.525e-03, 8.828e-02, -1.330e-01, 4.647e-02, 1.481e-02, -2.682e-02, -2.728e-02, -3.138e-01, 5.202e-03, 3.613e-02, -7.287e-02, -3.572e-01, -1.576e-02, 3.239e-02, 5.687e-02, -1.513e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(-6.843e-02, 2.713e-01, 4.224e-02, 1.577e-01, 5.316e-02, 3.483e-02, 1.937e-02, 6.018e-02, -3.225e-03, 1.293e-01, 1.349e-02, 1.093e-01, 1.551e-02, 1.809e-01, 3.364e-02, 7.711e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(1.927e-02, 3.262e-02, 1.333e-01, -3.204e-01, 1.329e-02, 2.408e-02, 1.837e-02, -3.171e-01, 3.211e-02, -2.639e-02, -2.104e-02, -4.586e-02, 2.644e-02, 1.221e-01, 9.261e-02, -1.354e+00), r5);\n\tr6 = MulAdd(s0_0_2, M4(-6.401e-02, -1.661e-01, 1.251e-01, -9.104e-02, 8.395e-03, -2.916e-01, 4.567e-02, -3.275e-02, -4.892e-02, 3.654e-02, -3.259e-02, -1.077e-01, -2.469e-02, -3.503e-01, -4.186e-02, 8.217e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(2.453e-01, -3.098e-03, -1.595e-02, -9.224e-02, -2.480e-01, -7.752e-02, -7.105e-02, -1.242e-01, 1.359e-02, -4.111e-02, -4.912e-02, -1.825e-01, -1.513e-03, -1.741e-02, -4.385e-02, -3.996e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(1.101e-01, -2.144e-01, 2.901e-01, -7.635e-02, -6.246e-02, -3.096e-01, -3.233e-01, -1.694e-01, -1.282e-01, 3.551e-01, 1.550e-01, 2.281e-02, 1.629e-01, -2.035e-01, 1.792e-01, -6.963e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.076e-01, 2.482e-01, 6.198e-02, 2.494e-01, -1.591e-01, 1.568e-03, 8.715e-03, 8.408e-02, -6.893e-02, -5.409e-02, -7.981e-02, 2.301e-02, 3.116e-02, 5.275e-02, -7.837e-02, 1.142e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(6.248e-02, -2.132e-02, 4.626e-02, -1.951e-02, -2.531e-02, 2.057e-02, -5.345e-02, -9.936e-02, -3.414e-02, 1.907e-02, -1.062e-02, 5.818e-02, 7.646e-02, -4.968e-02, 1.477e-01, 4.808e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(2.470e-02, -8.376e-02, -7.398e-02, 5.061e-02, 4.226e-02, 1.987e-01, 9.157e-02, -1.007e-01, 4.033e-02, 5.689e-02, -3.101e-03, -1.851e-03, -1.093e-01, -6.489e-02, -9.470e-02, 1.037e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(1.189e-01, -1.569e-01, 6.888e-02, 9.427e-02, 2.355e-02, -2.950e-01, 1.247e-01, 1.052e-03, 2.162e-02, 1.069e-01, -1.162e-01, -8.350e-02, -1.531e-01, -7.560e-02, -2.713e-01, 9.419e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-1.179e-02, 8.534e-02, -3.781e-02, 2.385e-02, -7.985e-02, -1.605e-02, -6.125e-02, -7.035e-02, 3.383e-02, 4.063e-02, -1.336e-01, -1.747e-02, 1.283e-01, -2.615e-02, -2.239e-01, -2.361e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(5.142e-02, -6.416e-03, 5.615e-03, -1.001e-02, -4.594e-02, 1.110e-02, 5.693e-02, -2.186e-02, 3.158e-03, 1.094e-02, -3.285e-02, -9.957e-02, -1.934e-02, -4.240e-03, -3.415e-03, 1.109e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(1.835e-01, 9.507e-02, 1.056e-02, 3.682e-01, -2.444e-01, -1.039e-02, 3.010e-02, -2.941e-01, -2.429e-01, 7.356e-02, -2.078e-01, 2.593e-01, -8.343e-02, 1.514e-01, -2.957e-02, 1.079e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(-3.497e-02, 3.468e-01, -6.693e-02, -1.346e-02, -3.312e-01, -9.412e-02, -3.097e-01, -4.823e-02, -2.075e-01, 8.191e-02, -4.092e-01, 6.825e-02, 2.489e-01, -1.879e-01, 7.512e-02, 8.273e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.491e-01, -1.554e-01, -2.419e-01, -2.445e-02, 5.582e-02, -5.124e-02, -1.860e-01, -6.939e-02, -6.515e-02, -4.657e-02, -1.238e-01, -6.747e-02, -3.540e-03, -2.663e-02, -7.108e-02, -2.487e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.194e-01, 2.234e-03, 3.696e-02, -1.718e-02, -1.301e-01, 8.948e-02, 9.810e-02, 1.430e-02, -1.201e-02, 1.154e-01, -7.398e-04, 2.729e-02, 1.510e-02, 1.118e-01, 1.125e-01, -6.836e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(3.371e-02, 1.519e-01, 1.674e-01, -1.847e-01, -4.308e-02, 9.470e-02, -7.935e-02, 2.957e-02, 9.610e-02, -1.061e-02, -3.807e-03, 6.516e-02, 1.517e-01, 5.029e-02, 2.369e-01, 2.841e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(1.335e-01, -2.091e-01, 1.054e-01, 1.607e-01, 4.484e-02, -3.335e-02, -5.930e-02, -4.402e-01, 9.778e-02, -2.406e-01, 1.226e-01, 3.949e-02, -1.131e-01, -8.900e-03, -6.451e-02, -1.072e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.940e-02, 8.031e-02, -1.448e-02, -1.097e-02, 2.592e-03, 4.662e-02, 9.442e-02, -5.925e-02, 9.709e-02, 1.091e-01, 2.862e-01, 6.389e-02, 2.137e-02, 3.373e-01, 1.348e-01, 3.265e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(2.832e-02, 1.701e-02, 8.407e-02, -4.049e-01, -1.018e-01, -1.292e-01, -6.228e-02, -3.381e-01, 1.490e-01, 2.440e-02, 1.253e-01, 1.576e-01, 1.308e-01, 2.726e-01, 1.655e-01, 3.594e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(1.108e-01, -2.421e-03, -3.232e-02, 3.646e-02, 1.494e-01, 4.874e-02, -4.962e-02, 5.322e-02, 9.533e-03, 2.036e-01, -1.160e-01, -9.793e-02, -7.051e-02, 1.304e-01, 1.669e-01, -1.415e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(-8.326e-02, 1.885e-02, -8.325e-02, 1.141e-01, -3.687e-01, -1.162e-01, 9.827e-02, 4.501e-02, -4.946e-01, -2.303e-01, 1.155e-01, 2.079e-01, 2.269e-01, 1.462e-01, -6.793e-02, -2.386e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(8.985e-02, -4.854e-03, -5.623e-02, 1.368e-01, -1.768e-02, -4.905e-02, -1.101e-01, 5.946e-03, -1.582e-02, 4.810e-03, 1.369e-02, 1.535e-01, 8.795e-02, 4.387e-02, 7.995e-02, 4.833e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.192e-01, 3.912e-02, -1.504e-03, 1.520e-02, 1.203e-02, 1.039e-01, 8.453e-03, -7.996e-02, -3.599e-02, 8.179e-02, -7.608e-03, -5.317e-02, 7.876e-02, 1.473e-01, -2.343e-02, -7.829e-04), r2);\n\tr3 = MulAdd(s0_1_2, M4(-7.560e-03, 2.460e-01, 1.741e-01, 6.027e-02, -2.422e-02, -2.247e-02, 4.897e-02, -1.359e-01, -3.607e-02, -1.503e-01, -1.911e-02, -1.020e-01, -2.955e-02, 1.339e-01, 1.979e-01, -3.025e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(-9.736e-03, 9.576e-02, -4.685e-02, -1.702e-01, 6.316e-02, 2.656e-01, -4.675e-03, 1.421e-01, 1.151e-01, 2.277e-01, 4.592e-02, -4.153e-02, 1.427e-02, 1.841e-01, 1.429e-02, -8.309e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(2.351e-02, 3.143e-02, 3.300e-02, 4.238e-01, 4.187e-02, 4.382e-02, 7.419e-03, -7.524e-02, 4.593e-02, -7.770e-02, -1.275e-01, -6.797e-02, 7.587e-02, 1.440e-01, 8.662e-02, 2.193e-03), r5);\n\tr6 = MulAdd(s0_1_2, M4(5.201e-01, -5.883e-02, 5.596e-02, 1.007e-01, 1.437e-01, -5.360e-01, -2.332e-02, -8.491e-02, -9.491e-02, -4.227e-01, -1.114e-01, -2.301e-01, -8.754e-02, -4.291e-01, 3.735e-02, 1.702e-01), r6);\n\tr7 = MulAdd(s0_1_2, M4(-2.506e-01, -3.584e-02, 5.652e-03, -6.287e-02, 3.758e-02, -1.567e-01, 4.449e-02, 5.284e-02, 1.670e-01, -1.768e-01, 1.448e-01, 1.604e-01, -2.174e-01, -1.040e-01, -8.709e-02, -3.950e-03), r7);\n\tr0 = MulAdd(s0_2_0, M4(1.404e-02, -1.918e-01, -6.421e-02, -1.104e-02, 8.462e-02, 4.909e-02, 2.630e-02, -1.101e-01, 6.161e-03, 1.130e-01, 1.537e-01, -1.036e-03, 8.983e-03, 1.460e-01, 7.522e-02, -1.284e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(-7.498e-02, 1.382e-01, -9.814e-03, -2.032e-02, 7.676e-02, -9.705e-03, 2.041e-01, 1.128e-02, 3.409e-02, -3.922e-02, -1.077e-01, -1.326e-02, -7.994e-02, -7.216e-02, -1.889e-02, -1.913e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(3.046e-03, 2.175e-02, 2.557e-02, 1.467e-02, -4.491e-03, 6.110e-03, 4.532e-03, -8.087e-03, -1.385e-02, 1.898e-02, 1.662e-02, 9.252e-02, -2.974e-02, 8.941e-03, -2.735e-02, 5.330e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-1.037e-01, 5.785e-02, 4.279e-03, 2.971e-02, -2.131e-01, -3.045e-02, 1.692e-02, 2.104e-02, 1.630e-02, 5.029e-02, -1.411e-02, 6.077e-02, -2.926e-01, -5.544e-02, 3.470e-02, -3.687e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-2.745e-01, -4.199e-02, 6.531e-02, -1.280e-01, -3.946e-01, -2.027e-01, -1.129e-01, 1.079e-01, 9.695e-02, 1.777e-02, -1.079e-01, 5.982e-03, -4.116e-01, 6.018e-02, -1.504e-01, -1.313e-01), r4);\n\tr5 = MulAdd(s0_2_0, M4(2.315e-02, -2.242e-02, -1.244e-01, 2.572e-02, 3.258e-03, 1.970e-03, 9.624e-02, 1.094e-01, 6.369e-02, -2.774e-02, -1.341e-02, -2.299e-02, 2.952e-02, -1.166e-02, 8.905e-02, -5.842e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(6.603e-02, -4.355e-03, 3.993e-04, 3.315e-02, -3.252e-02, 7.981e-03, 1.880e-02, 5.368e-02, 4.448e-03, 4.829e-04, 6.492e-03, 9.617e-02, 5.386e-02, -2.821e-02, 6.651e-03, -9.679e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(1.260e-01, -1.499e-01, 9.926e-02, -2.360e-01, 1.621e-01, 1.343e-01, 1.554e-02, 4.327e-02, -1.846e-01, 1.172e-01, -4.726e-02, 8.260e-02, 3.195e-02, -4.302e-03, 8.926e-02, 3.265e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(4.441e-02, -2.897e-02, -1.129e-01, -1.989e-01, 1.844e-04, 5.582e-02, -3.457e-02, -1.025e-01, -2.334e-02, -5.900e-02, -9.138e-02, 7.156e-02, -1.355e-01, -1.163e-01, 8.378e-02, 2.517e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.045e-01, -3.206e-02, 6.490e-02, -9.738e-02, 7.710e-03, 2.798e-04, -1.866e-01, -4.642e-02, 9.114e-02, -1.816e-02, -1.269e-01, 8.276e-03, -7.285e-02, 4.253e-02, 2.735e-02, 1.435e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.753e-02, 1.812e-02, 1.061e-02, -1.558e-01, 2.476e-03, -1.690e-02, -8.425e-03, 9.071e-02, 3.429e-02, 1.153e-03, -2.573e-02, 9.396e-02, -5.859e-02, 6.424e-02, -3.571e-02, 1.709e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(-4.466e-01, 7.230e-03, -7.232e-02, -8.913e-02, -3.675e-01, 9.772e-03, 3.806e-02, -4.140e-02, 2.115e-02, -3.753e-02, 8.290e-02, 4.679e-03, -9.018e-02, -8.423e-02, -3.139e-02, 7.913e-04), r3);\n\tr4 = MulAdd(s0_2_1, M4(1.339e-01, 1.219e-01, 1.103e-01, -3.098e-01, 9.180e-02, 1.917e-02, 4.839e-02, -1.802e-01, 6.087e-02, -1.363e-01, -1.495e-02, 1.378e-01, -8.693e-01, -1.412e-01, 2.255e-01, 3.093e-01), r4);\n\tr5 = MulAdd(s0_2_1, M4(-5.032e-02, -1.705e-02, 8.784e-03, -6.517e-02, 2.241e-02, -5.352e-02, -2.037e-01, -2.771e-02, 4.584e-03, -2.339e-02, -1.090e-01, 2.105e-02, 1.919e-01, -1.193e-01, -3.048e-01, -2.266e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(2.221e-02, 6.552e-03, -5.054e-02, -8.923e-02, 2.127e-01, 3.215e-02, -1.033e-01, -1.287e-01, 7.356e-02, 5.528e-02, -2.509e-02, 2.130e-01, 1.100e-01, -3.856e-02, 2.740e-02, 2.296e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(7.941e-02, 5.376e-02, -3.312e-03, 1.556e-01, -2.914e-01, -5.134e-02, -5.881e-02, -1.890e-01, -4.937e-01, -2.328e-01, -1.021e-01, -9.575e-02, 1.998e-02, -1.535e-01, -8.452e-02, 1.166e-01), r7);\n\tr0 = MulAdd(s0_2_2, M4(2.930e-01, 1.118e-01, -6.785e-02, 3.423e-02, 1.310e-01, -3.433e-02, 4.467e-02, 5.438e-02, -8.658e-03, -1.768e-01, 9.201e-02, 2.292e-01, -6.240e-02, 2.363e-01, -1.019e-01, -2.915e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(-7.943e-02, -1.718e-02, 4.384e-02, 1.187e-02, -2.191e-02, -1.170e-02, 1.152e-02, -3.170e-02, -2.784e-02, 2.834e-02, 8.592e-02, -5.783e-03, -8.885e-02, 1.670e-02, 9.434e-02, 5.890e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-4.870e-02, 1.929e-02, 3.358e-03, -4.647e-02, 1.952e-02, 1.744e-02, 2.832e-03, -4.139e-02, 4.379e-03, 1.357e-02, 1.746e-03, -2.202e-02, 2.683e-02, 8.740e-02, -2.170e-02, -2.350e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(1.810e-01, -5.087e-02, 3.103e-03, 3.159e-02, -2.930e-01, 8.961e-02, -3.838e-02, -7.723e-02, -4.796e-01, -4.328e-03, -3.273e-02, -1.464e-01, -6.351e-02, 5.832e-02, -3.524e-02, -3.205e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(2.582e-01, -1.077e-01, 8.244e-03, 5.027e-01, 2.524e-01, 1.652e-01, -3.088e-02, -3.345e-01, -7.502e-02, 1.727e-02, 3.439e-02, -7.288e-01, -2.715e-01, -1.769e-01, -4.053e-02, -1.606e+00), r4);\n\tr5 = MulAdd(s0_2_2, M4(-6.776e-03, -4.452e-03, 1.150e-02, 8.124e-02, 1.074e-02, 9.452e-03, 5.379e-02, 2.345e-01, -2.655e-03, -2.502e-02, -6.060e-03, -3.278e-01, 8.499e-02, -2.776e-02, 7.739e-02, -4.181e-01), r5);\n\tr6 = MulAdd(s0_2_2, M4(-7.095e-01, -1.999e-01, 6.040e-02, 5.957e-01, -1.201e+00, -9.346e-02, -5.864e-02, -2.432e-02, -8.651e-01, -2.469e-01, -5.281e-02, -8.932e-01, -4.180e-01, -2.065e-01, 1.211e-01, 3.404e-01), r6);\n\tr7 = MulAdd(s0_2_2, M4(2.075e-01, -2.351e-02, -4.309e-03, 7.217e-02, -3.249e-01, 2.493e-02, -6.081e-02, 6.151e-02, -5.729e-02, 1.424e-02, -2.402e-02, 1.922e-01, -1.035e-01, 4.903e-02, 6.516e-02, -4.602e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(4.943e-02, -2.853e-01, -4.650e-02, -3.824e-02, -5.390e-03, 5.512e-02, 1.070e-02, -6.137e-02, -6.312e-02, -1.399e-01, -1.619e-01, -1.651e-01, -1.611e-01, 6.445e-02, 8.422e-02, 1.647e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(2.961e-02, -1.345e-01, 1.625e-01, -1.812e-01, 3.108e-04, -5.880e-03, 4.212e-02, -9.035e-02, -1.433e-01, 6.859e-02, 6.827e-02, -2.634e-02, -1.002e-02, 1.127e-02, -6.745e-02, 3.313e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(3.697e-02, -4.748e-02, -1.196e-02, 8.398e-03, 2.166e-02, 2.527e-02, -4.571e-02, 3.308e-02, -7.955e-02, -9.063e-03, 2.897e-02, 1.224e-02, 2.063e-02, 7.460e-03, 8.594e-03, -2.727e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-6.713e-02, -1.744e-01, -7.570e-02, -3.480e-01, 3.077e-02, 4.561e-02, 1.634e-02, -3.595e-02, 6.168e-04, 8.102e-02, 1.727e-01, 2.164e-02, 5.319e-03, -1.285e-01, -4.818e-02, 1.778e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-2.654e-01, -1.514e-02, -1.319e-01, -6.706e-02, 1.844e-02, -1.475e-02, -7.712e-02, -6.878e-03, -4.625e-03, 1.877e-02, -1.691e-02, 5.485e-02, -2.463e-03, -1.519e-01, 6.423e-02, 7.885e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-4.412e-02, -5.615e-02, 1.388e-01, -6.562e-01, -1.707e-02, -5.678e-03, -9.243e-02, 9.007e-02, 2.699e-02, -9.099e-02, 2.185e-02, -1.094e-01, 1.335e-03, 3.432e-02, 6.618e-03, 2.894e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-1.368e-01, -9.921e-02, -5.308e-02, -9.348e-02, -1.315e-02, 2.402e-02, 6.324e-02, 3.630e-02, -4.941e-02, 4.900e-03, 6.183e-02, -1.612e-03, -1.596e-02, -3.478e-03, -1.613e-01, -1.121e-01), r6);\n\tr7 = MulAdd(s1_0_0, M4(5.172e-01, 2.295e-01, -5.111e-02, -2.383e-01, -5.273e-02, -1.018e-01, -4.202e-02, -6.286e-02, -3.786e-01, -1.630e-01, -1.086e-01, 3.142e-03, 5.236e-01, 6.547e-02, 1.122e-01, -1.221e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(2.569e-01, 3.955e-01, 8.561e-02, -1.322e-01, 4.819e-02, 6.329e-02, -5.302e-02, 2.163e-02, -4.934e-02, 2.486e-01, 1.619e-01, 1.792e-01, 5.167e-02, -7.745e-02, -6.344e-03, 7.161e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-2.828e-01, 7.510e-01, -2.287e-01, 5.078e-01, -1.984e-01, -9.331e-03, -1.845e-02, -7.837e-03, -3.844e-01, -5.505e-02, 5.500e-02, -1.304e-01, -8.070e-03, 3.500e-02, 1.191e-01, 3.840e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-3.099e-02, -2.494e-03, -6.263e-02, 6.200e-02, 3.503e-02, -4.974e-02, 1.690e-02, -1.209e-02, -1.091e-01, -1.307e-01, -4.369e-03, -5.454e-02, -1.384e-02, 3.184e-02, -6.362e-03, 1.408e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(1.606e-02, 3.553e-01, 2.478e-03, -6.788e-01, -1.063e-02, -1.839e-01, 1.992e-03, 4.846e-02, 4.364e-02, 1.056e-01, 1.993e-01, 1.736e-01, 2.064e-02, 6.909e-02, -2.604e-02, 7.834e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-1.195e-01, -2.720e-01, -3.392e-01, 7.446e-02, 2.360e-02, -1.435e-01, -4.453e-02, 1.140e-02, -5.627e-03, -7.843e-02, -2.734e-02, 1.635e-01, 6.744e-03, 2.837e-01, 4.709e-02, 5.890e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-7.570e-02, 2.316e-01, 2.555e-01, -4.334e-01, -2.444e-02, -1.349e-01, 4.508e-02, -3.951e-01, 2.943e-02, -3.245e-01, -1.306e-01, -5.769e-01, 2.118e-02, 1.885e-02, 1.580e-02, 1.688e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-2.855e-01, -3.515e-01, 1.157e-01, 3.979e-01, 7.018e-02, -3.009e-02, -7.472e-02, -2.729e-02, 1.269e-01, 5.912e-02, 1.696e-01, 1.661e-01, 1.823e-02, 2.515e-02, -4.280e-02, -1.343e-01), r6);\n\tr7 = MulAdd(s1_0_1, M4(3.858e-01, -7.115e-03, -1.233e-01, 2.395e-01, 3.574e-03, -4.745e-03, -3.238e-02, 7.905e-02, 1.236e-01, 1.063e-01, 2.628e-01, 8.234e-02, 4.802e-02, 8.785e-03, 2.983e-02, -2.270e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(-7.330e-01, 7.035e-01, 4.855e-02, 6.736e-01, -7.837e-02, -1.664e-02, 1.237e-02, 4.564e-03, 1.537e-01, 2.326e-01, 3.802e-02, -1.086e-01, -2.629e-02, 1.388e-02, 3.070e-02, 3.157e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(-3.001e-01, 4.297e-02, 1.596e-01, 5.797e-01, -4.791e-03, -3.922e-03, 3.668e-03, -2.109e-02, -7.763e-02, -7.441e-03, -6.030e-03, -2.918e-02, 1.836e-02, 4.759e-04, 7.469e-02, 3.641e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(5.002e-03, 7.998e-02, -3.386e-02, -9.921e-03, 9.064e-02, 1.934e-02, -2.560e-03, -2.032e-02, 2.894e-02, 5.068e-03, 1.988e-03, -2.171e-02, -8.986e-03, 5.408e-04, -4.014e-04, 1.222e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(1.772e-01, -6.750e-01, 1.653e-02, -1.642e-01, 4.542e-02, -1.131e-01, -1.286e-01, 4.405e-02, 3.735e-02, -8.069e-02, -1.983e-02, -1.757e-01, 3.837e-03, 2.052e-02, 4.280e-02, 3.406e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(1.613e-01, 3.465e-01, -8.554e-02, 4.483e-01, -4.865e-03, -6.195e-02, -2.852e-02, -1.208e-01, 1.057e-02, -4.621e-02, 2.217e-02, 2.566e-01, -1.629e-02, -7.730e-02, 4.023e-02, -1.260e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(3.757e-02, 5.588e-02, -6.314e-02, 2.106e-02, -6.717e-03, 4.239e-03, 3.942e-02, 1.568e-01, 4.140e-03, -2.467e-02, 2.665e-02, -1.041e-01, 6.649e-03, 6.154e-03, 2.194e-02, 2.552e-01), r5);\n\tr6 = MulAdd(s1_0_2, M4(4.271e-01, -2.314e-02, -3.683e-01, 9.159e-01, -1.142e-01, 3.495e-02, -3.216e-02, -4.487e-02, -1.334e-01, -3.753e-01, -6.358e-02, -9.791e-03, 2.056e-02, 6.089e-02, 1.849e-02, -1.799e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-2.509e+00, -5.062e-01, -7.098e-02, 1.777e-01, -8.158e-02, 5.419e-06, -1.223e-02, -4.762e-03, 4.997e-02, 4.540e-02, 3.938e-02, -3.508e-02, 1.510e-01, -1.813e-02, -1.378e-02, 5.564e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(1.592e-01, 8.355e-02, 2.684e-01, -1.294e-01, 7.387e-02, -8.988e-02, -1.281e-01, 9.324e-02, 7.095e-02, -7.782e-02, 1.161e-01, 1.560e-01, 6.966e-02, -1.032e-01, -2.085e-02, 1.921e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(-2.039e-01, 6.522e-02, -3.560e-01, 1.450e-01, 3.363e-03, 1.630e-01, 1.571e-01, 1.833e-01, 2.286e-01, 4.092e-01, 1.538e-01, 1.874e-01, -1.946e-02, 1.985e-02, -1.254e-01, -1.081e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(9.486e-03, -1.505e-02, -1.529e-02, -1.522e-02, 1.856e-01, -8.333e-02, 2.979e-01, -1.972e-02, 5.903e-02, -1.379e-02, 2.925e-01, 6.318e-02, -2.174e-02, 1.634e-02, 1.201e-02, -8.915e-04), r2);\n\tr3 = MulAdd(s1_1_0, M4(-1.899e-02, 1.193e-01, 5.226e-02, 6.196e-02, -1.221e-01, -3.799e-02, 7.405e-02, 1.815e-02, 8.875e-02, -2.554e-01, -3.844e-02, 6.835e-02, 1.201e-02, -2.308e-01, -1.299e-01, 3.943e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(1.991e-02, -5.960e-03, -7.821e-02, -1.727e-01, -3.570e-02, -1.298e-01, 3.035e-01, 9.874e-02, -1.419e-01, 8.159e-02, -9.609e-02, 2.845e-02, 5.213e-02, 1.396e-01, -1.169e-01, -5.224e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-4.026e-02, -5.390e-02, -1.728e-02, -1.780e-02, 2.803e-01, 5.878e-02, 4.129e-02, 3.072e-02, 2.662e-01, 1.385e-01, 2.529e-01, 4.892e-02, 2.738e-02, -9.478e-03, 3.973e-02, -1.365e-01), r5);\n\tr6 = MulAdd(s1_1_0, M4(2.539e-01, -3.523e-02, -7.851e-02, 3.750e-01, 2.980e-02, 2.031e-02, 4.963e-02, 5.333e-02, -4.566e-02, 4.996e-02, 3.583e-02, 1.111e-01, 5.386e-02, -4.692e-03, -1.688e-01, -1.226e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(-1.935e-01, -2.702e-01, 7.559e-02, 1.632e-01, 1.110e-01, -3.405e-02, 7.188e-02, -1.956e-01, 1.060e-01, -1.191e-01, 2.113e-01, 1.646e-02, 2.626e-01, -5.036e-02, 3.739e-02, -3.387e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(3.817e-01, -4.041e-01, -1.224e-01, -2.426e-02, -1.332e-01, 1.016e-01, 9.070e-03, -3.391e-01, -1.914e-01, 8.335e-03, -1.070e-01, -2.186e-01, -4.297e-02, -1.764e-01, 8.873e-03, 1.133e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.067e-01, -4.792e-02, -1.192e-01, -1.765e-01, 1.870e-01, -1.962e-01, -1.025e-01, -1.363e-01, 1.916e-01, -3.875e-01, -1.291e-01, -8.523e-02, 1.847e-01, -4.891e-02, 9.138e-02, 5.999e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(9.694e-02, -3.628e-02, 1.143e-01, 1.003e-01, 2.995e-02, -2.357e-01, -1.780e-01, -1.540e-01, -5.835e-02, 2.330e-01, 4.105e-01, 2.265e-01, -2.278e-02, 6.294e-02, -6.819e-03, 2.035e-03), r2);\n\tr3 = MulAdd(s1_1_1, M4(1.423e-01, 4.487e-02, 1.347e-01, -2.839e-03, 9.154e-02, 1.584e-02, -8.709e-02, -8.458e-02, 2.465e-01, -1.062e-01, -3.194e-01, -2.493e-01, 3.096e-02, -3.524e-01, -1.958e-01, 1.864e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(6.759e-02, 5.328e-02, 1.513e-01, -2.046e-01, -7.280e-02, -2.675e-03, -1.235e-01, -1.811e-01, -7.810e-02, -1.418e-02, -7.678e-02, -4.112e-01, 5.017e-02, 1.312e-01, 3.287e-02, 3.480e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-9.959e-03, -2.336e-02, 4.504e-02, 1.098e-02, 3.402e-01, 9.611e-02, 1.847e-03, 2.778e-01, -3.441e-01, 1.171e-01, -1.057e-01, 4.225e-01, 4.322e-02, 9.517e-02, 2.915e-01, 1.467e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(-3.377e-01, -5.843e-02, 3.245e-01, 2.310e-01, -3.703e-01, 4.175e-01, -2.118e-01, -9.768e-02, -2.543e-01, 3.956e-01, -3.110e-01, 6.725e-02, 2.077e-03, 2.058e-02, 1.657e-01, 2.185e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-2.065e-01, -5.796e-02, 1.970e-01, -3.483e-01, -8.671e-02, 7.376e-02, -1.612e-01, -5.946e-02, -9.949e-02, 1.369e-01, -3.626e-01, 3.580e-02, -6.250e-01, 6.950e-02, 1.207e-01, 1.699e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(4.421e-01, -1.738e-01, 1.392e-01, 3.086e-01, -7.615e-02, -1.661e-01, 1.024e-01, 1.979e-01, -2.153e-01, -1.286e-01, -5.003e-03, 1.124e-01, 5.629e-02, 8.590e-02, 5.299e-03, -3.746e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(7.282e-02, 3.761e-02, -1.275e-01, -1.357e-01, -5.176e-02, 4.897e-02, 1.070e-02, 1.997e-02, -1.234e-02, -5.390e-02, 4.905e-02, 8.619e-02, 3.716e-03, -7.977e-03, 1.472e-02, -5.041e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(6.284e-02, -1.098e-01, -6.570e-03, 1.733e-01, 4.594e-02, -6.019e-02, -5.694e-03, 4.534e-02, 4.487e-02, 1.394e-02, -9.132e-04, -1.737e-02, 4.048e-03, 1.547e-02, -1.094e-02, 1.900e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-4.201e-02, 1.159e-01, 5.886e-02, 5.191e-02, -6.907e-02, -1.496e-05, -1.772e-02, 1.300e-01, 4.413e-02, 8.449e-02, -9.171e-02, 9.671e-02, -2.540e-03, -2.951e-01, -1.460e-01, -1.033e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(2.599e-01, 2.645e-01, 2.668e-01, 1.888e-01, 1.105e-01, 9.636e-02, 2.255e-02, -1.245e-01, 7.154e-02, -6.923e-02, 3.794e-02, -6.449e-02, -1.323e-02, 6.357e-02, 3.267e-02, 2.008e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(4.532e-02, 8.814e-02, -3.875e-01, -8.657e-01, -1.397e-02, -3.697e-02, -1.576e-02, 9.924e-03, 2.535e-02, -4.875e-02, -6.281e-02, -2.005e-01, 1.037e-02, 1.823e-02, 1.106e-01, -8.826e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(-3.602e-02, -2.853e+00, 5.579e-02, -3.261e-01, 4.346e-02, -6.478e-02, -7.466e-02, -1.921e-01, 7.695e-02, -1.430e-01, -2.131e-02, -4.073e-01, -5.381e-01, -3.578e-01, -4.996e-02, 1.269e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(-1.615e-01, -2.842e-01, -1.937e-01, -2.633e-01, -1.464e-02, -5.080e-02, 6.136e-02, 1.561e-01, -7.309e-02, 5.238e-02, -9.560e-03, 3.468e-02, 5.133e-02, -5.044e-02, 6.569e-02, -4.313e-03), r7);\n\tr0 = MulAdd(s1_2_0, M4(6.969e-02, -1.358e-02, 1.479e-01, 2.066e-02, 4.480e-02, -6.737e-02, -4.508e-02, 2.714e-02, 8.842e-02, -1.179e-01, 4.169e-02, 7.697e-02, -1.381e-01, -6.564e-02, 2.456e-02, 8.270e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(7.321e-02, 7.245e-02, 1.924e-02, 4.291e-02, -3.238e-02, -5.342e-02, -4.713e-02, 9.498e-03, 2.296e-02, 9.228e-02, -8.967e-02, -3.066e-02, -1.007e-01, -1.558e-01, -4.022e-01, -8.275e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.253e-03, 1.506e-02, 2.075e-02, 4.236e-02, -7.688e-02, 7.690e-02, -2.959e-02, -9.580e-02, -4.637e-03, 3.018e-02, 8.012e-02, -6.728e-02, -6.366e-03, -3.308e-03, -7.633e-03, 1.554e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(-9.321e-02, 5.975e-02, -3.771e-02, 1.101e-01, 2.507e-01, 6.805e-02, -3.744e-02, -4.596e-02, 7.242e-02, 4.683e-02, -1.963e-02, 3.237e-02, 9.016e-02, -9.106e-02, -1.119e-01, 3.237e-03), r3);\n\tr4 = MulAdd(s1_2_0, M4(9.758e-01, -8.433e-02, -2.589e-02, -2.978e-02, 1.263e-01, 3.504e-03, 3.854e-02, -9.741e-04, -8.392e-01, 5.412e-02, 9.008e-02, 2.015e-01, -7.947e-01, 6.506e-03, -1.365e-01, -1.149e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(3.112e-02, 3.038e-03, 3.595e-02, -5.854e-02, 2.854e-02, -4.793e-02, 1.396e-04, 3.243e-02, 1.334e-02, 2.369e-02, -2.095e-02, 4.518e-02, -3.609e-03, -7.892e-03, -2.395e-03, -5.518e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-2.898e-02, 1.997e-03, -3.318e-03, 9.084e-03, -2.840e-03, -3.251e-02, -1.388e-02, -4.682e-02, 3.855e-03, 2.244e-02, -3.254e-03, -1.525e-02, 1.966e-02, -1.352e-03, -3.654e-02, -2.964e-01), r6);\n\tr7 = MulAdd(s1_2_0, M4(1.840e-01, -5.375e-02, -3.922e-02, 1.423e-01, 7.077e-02, 5.101e-02, -9.325e-03, 6.131e-02, -8.668e-03, 1.282e-02, -4.626e-02, 8.645e-02, -3.849e-01, -1.161e-01, -2.973e-02, 1.421e-01), r7);\n\tr0 = MulAdd(s1_2_1, M4(-1.370e-02, -3.323e-02, -1.027e-01, 2.707e-02, -8.550e-04, 1.023e-01, 5.682e-02, -9.045e-02, 6.163e-02, 6.428e-02, -5.997e-02, -2.176e-01, -1.392e-02, 5.525e-02, 1.450e-01, -3.313e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(2.847e-02, -9.973e-03, -8.325e-02, -9.041e-02, -3.840e-02, 4.789e-02, 1.821e-02, 4.118e-03, 9.298e-02, -9.328e-02, -5.115e-02, -1.422e-02, -3.355e-01, 5.580e-02, 1.479e-01, -5.994e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(4.281e-02, -2.036e-02, -2.193e-02, 3.687e-02, 7.839e-02, -1.363e-01, -6.281e-02, 1.252e-01, 7.841e-02, -6.268e-02, 8.228e-02, -3.890e-02, -5.226e-02, 5.868e-02, -1.284e-02, -9.916e-03), r2);\n\tr3 = MulAdd(s1_2_1, M4(1.937e-01, -6.217e-02, -4.736e-02, 1.966e-03, -2.416e-01, 7.989e-02, 2.913e-02, 1.030e-01, -3.709e-01, 1.300e-02, 5.271e-02, -2.363e-02, -4.434e-01, 6.821e-02, -1.462e-02, 6.878e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(1.044e+00, 4.489e-02, -8.859e-03, 9.887e-02, 2.108e-01, 1.783e-01, -1.200e-01, 5.191e-02, -8.573e-01, 9.148e-02, -7.734e-02, -1.128e-01, -6.740e-01, -2.110e-02, -8.069e-02, 5.320e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(-2.901e-02, 5.058e-02, 4.534e-02, 6.471e-03, -3.153e-02, -2.350e-02, 3.682e-02, -3.270e-03, -8.618e-02, 1.179e-01, 8.720e-02, 2.149e-01, 4.164e-02, -2.386e-02, 1.097e-01, -1.367e-01), r5);\n\tr6 = MulAdd(s1_2_1, M4(-4.611e-02, -3.606e-02, -1.559e-01, -4.596e-02, -1.043e-01, -4.546e-02, 6.542e-02, -1.872e-01, 9.684e-02, 1.341e-01, 5.512e-02, -3.266e-01, -1.323e-02, -1.947e-02, -1.874e-02, -3.876e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(-1.667e-02, -7.206e-03, -1.790e-02, -1.197e-01, 2.055e-02, -2.548e-02, 5.770e-02, -5.505e-02, -1.225e-01, -7.564e-02, -1.027e-02, -1.289e-01, 6.911e-02, -3.150e-02, 1.944e-01, -5.009e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.771e-01, -1.900e-02, -4.102e-03, -9.780e-02, 6.047e-02, -1.767e-02, 2.717e-02, 6.853e-02, 4.067e-02, -4.830e-02, 6.582e-03, 1.694e-01, 6.180e-02, -8.050e-02, 4.892e-02, 2.057e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.283e-01, -7.252e-02, 1.427e-01, 4.372e-02, 4.045e-02, 2.434e-02, 2.322e-03, 7.501e-03, 3.974e-02, -1.217e-02, -3.873e-02, -1.325e-02, -7.886e-02, 2.611e-02, -6.274e-02, 9.516e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-3.773e-02, 4.245e-02, 1.338e-02, -5.543e-03, -6.653e-03, -2.552e-02, 1.471e-03, -7.214e-03, -2.020e-02, -7.026e-02, 2.323e-02, -2.039e-02, -3.106e-03, 3.699e-02, -1.403e-02, 6.757e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(2.474e-01, -3.796e-02, -2.139e-02, -5.771e-02, 1.505e-01, -2.192e-03, -8.726e-03, 6.535e-02, -1.653e-01, -1.472e-02, 1.661e-02, 3.973e-02, -2.846e-01, -5.834e-02, -5.771e-03, 2.730e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(4.020e-01, 8.881e-02, 4.497e-02, 1.731e+00, 1.571e-02, -6.169e-02, -5.750e-02, -2.860e-01, -1.033e-01, -2.971e-02, 7.130e-02, -4.732e-01, -1.118e-01, 6.617e-02, 1.031e-01, -1.524e+00), r4);\n\tr5 = MulAdd(s1_2_2, M4(8.004e-04, -1.164e-02, -3.280e-03, -1.343e+00, -1.269e-02, -3.753e-02, -3.033e-02, -1.357e-02, -1.527e-02, 4.216e-02, -9.082e-02, -1.088e-01, 2.679e-02, 1.600e-02, 3.066e-02, -1.838e-01), r5);\n\tr6 = MulAdd(s1_2_2, M4(2.454e-01, 4.150e-01, -5.410e-03, -4.742e-01, -1.028e+00, -2.041e-01, -6.164e-02, -3.151e+00, -8.429e-01, -3.942e-02, -1.734e-02, -1.166e+00, 4.835e-01, -2.718e-01, 7.609e-02, -8.615e-01), r6);\n\tr7 = MulAdd(s1_2_2, M4(1.497e-01, 4.948e-02, 3.697e-02, -2.276e-01, -2.239e-03, 5.576e-03, -1.679e-02, -7.581e-02, 8.095e-02, -1.482e-02, -3.972e-02, -7.593e-02, 1.224e-01, -1.345e-01, 3.161e-02, 8.212e-02), r7);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT4[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT5[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT6[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT7[gxy] = r7;\n}\n\n//!PASS 6\n//!DESC conv5 (32x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2, T3, T4, T5, T6, T7\n//!OUT T8, T9, T10, T11, T12, T13, T14, T15\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n#define L4(x, y) V4(O(T4, x, y))\n#define L5(x, y) V4(O(T5, x, y))\n#define L6(x, y) V4(O(T6, x, y))\n#define L7(x, y) V4(O(T7, x, y))\n\nvoid Pass6(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.081e-01, 1.450e-02, -2.132e-01, 7.090e-02, 2.102e-02, 1.820e-02, 5.394e-02, -9.485e-02, 3.899e-02, 5.073e-02, -2.481e-02, -1.082e-01, 1.929e-01, 1.463e-01, -1.311e-01, -3.640e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-5.030e-01, 6.381e-04, 4.415e-02, 1.760e-04, 1.385e-01, -1.104e-01, 5.119e-02, -3.380e-03, 2.795e-01, -1.313e-01, -7.327e-02, -1.875e-02, 2.041e-03, 2.737e-01, 9.452e-02, 1.435e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-2.160e-01, 5.651e-02, 3.179e-03, 9.433e-02, -2.921e-04, 1.525e-02, -8.463e-03, -1.043e-02, -3.289e-02, 3.155e-02, 3.647e-03, -1.976e-02, 1.515e-01, -1.428e-01, 9.310e-03, 1.108e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(1.897e-02, -2.791e-02, -2.746e-01, 3.803e-02, 3.751e-04, 1.463e-02, 4.277e-02, 1.877e-02, 7.850e-03, -9.708e-03, -2.147e-04, -1.400e-02, 4.734e-02, -6.925e-02, 3.440e-02, 2.032e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(5.747e-02, 1.134e-01, 6.872e-02, 2.985e-02, -1.080e-03, -1.252e-02, 8.471e-02, 1.359e-01, 1.374e-03, -3.948e-02, -1.979e-02, -3.512e-02, -6.322e-02, -6.148e-02, -1.792e-02, -6.706e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-4.740e-02, -1.787e-02, 3.242e-02, 3.291e-02, -2.567e-02, 3.754e-02, -7.214e-02, 1.213e-02, -4.754e-03, 3.580e-02, 7.539e-02, -3.071e-02, 4.887e-02, -5.101e-02, -2.243e-01, 6.832e-03), r5);\n\tr6 = MulAdd(s0_0_0, M4(7.556e-02, -1.101e-01, -1.237e-01, -7.473e-04, -8.207e-03, -8.435e-03, 5.856e-02, 9.551e-03, 1.294e-02, -2.052e-02, 2.924e-02, -1.996e-03, -1.365e-01, -5.673e-02, -3.863e-02, 1.451e-03), r6);\n\tr7 = MulAdd(s0_0_0, M4(1.284e-01, -1.016e-01, 1.692e-02, -5.837e-02, 4.898e-02, 2.762e-02, 4.941e-02, 1.982e-03, -9.299e-03, 3.007e-02, -2.716e-02, 1.784e-02, 1.765e-02, 1.965e-01, -2.820e-02, 2.461e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(8.566e-02, 3.277e-02, 6.469e-02, 5.709e-03, 6.219e-04, -6.275e-02, -5.888e-02, -1.922e-01, 3.351e-02, 1.585e-02, -3.291e-02, -9.144e-02, 1.064e-01, 7.111e-02, 9.945e-02, 1.938e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-5.389e-01, 1.377e-01, -4.586e-02, 1.130e-01, 1.568e-01, 2.314e-02, 1.793e-01, -6.408e-03, -1.290e+00, -1.597e-01, 8.752e-02, -2.675e-02, -7.604e-01, -4.167e-01, 3.093e-01, 1.125e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(2.542e-02, -5.372e-02, -3.201e-04, -8.742e-02, 5.373e-02, 5.268e-02, 9.271e-03, 2.991e-02, 5.600e-02, 1.021e-01, -1.599e-02, -2.917e-02, 2.698e-01, -1.450e-02, 3.186e-02, 3.831e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.969e-02, -3.933e-02, -1.510e-01, 4.775e-03, 1.715e-02, 1.904e-02, 6.014e-02, 4.150e-02, 3.943e-04, -8.881e-03, -7.643e-02, 4.244e-02, 4.216e-02, -3.608e-02, 2.027e-01, -5.315e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(3.771e-02, 8.765e-02, 3.262e-02, -3.538e-01, -3.579e-02, -3.089e-02, 2.494e-02, 4.153e-02, -2.183e-02, -5.584e-02, -2.981e-03, -9.172e-02, 1.430e-02, 9.716e-02, -3.076e-02, 1.326e-01), r4);\n\tr5 = MulAdd(s0_0_1, M4(-7.455e-03, 2.025e-02, 2.678e-02, 3.770e-02, 1.463e-02, -2.326e-02, -2.463e-02, 8.488e-03, 1.259e-02, -7.082e-03, 1.192e-02, 1.592e-02, 8.232e-02, 2.884e-02, -1.599e-01, -1.162e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(2.919e-02, -7.573e-02, 2.338e-01, 4.810e-02, -4.689e-02, -2.557e-02, -7.240e-02, -2.202e-02, -5.589e-02, -1.989e-02, 4.993e-02, 1.974e-02, -5.443e-02, 1.241e-01, 4.452e-02, -6.928e-03), r6);\n\tr7 = MulAdd(s0_0_1, M4(3.503e-02, 3.849e-02, 3.222e-02, -3.734e-02, 6.343e-02, -8.684e-02, 7.440e-02, 7.165e-02, 1.149e-02, 7.864e-03, 2.178e-02, 5.752e-02, -4.051e-02, 1.445e-01, -7.517e-02, -8.778e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(3.427e-02, -2.688e-03, 5.748e-02, -5.582e-02, -1.147e-02, -2.209e-02, 4.276e-03, 7.933e-02, -3.817e-03, 1.531e-03, -7.210e-02, 1.225e-01, 9.020e-03, 3.866e-02, -6.756e-03, 9.394e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.608e-01, 6.480e-02, 9.228e-02, 2.769e-02, -1.822e-01, -1.801e-02, -9.610e-04, 1.323e-02, -4.781e-01, -7.023e-02, 2.955e-01, -5.136e-02, -1.693e-01, 9.564e-02, -1.848e-01, 9.344e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(-7.479e-02, -1.746e-02, 6.891e-03, -2.039e-02, 6.876e-02, -1.554e-02, 3.192e-03, 1.254e-02, -2.192e-01, 3.336e-02, 2.657e-02, -9.489e-02, 2.332e-01, -6.442e-02, 2.705e-04, -8.454e-03), r2);\n\tr3 = MulAdd(s0_0_2, M4(7.629e-03, -1.254e-02, -6.671e-02, 1.315e-03, 9.176e-04, -2.990e-02, 7.816e-02, 5.012e-02, 2.049e-02, 1.451e-04, -2.359e-03, 4.999e-02, 1.128e-02, 2.704e-02, -2.094e-02, -2.127e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-1.668e-02, -8.102e-03, -2.386e-02, 1.367e-01, -1.292e-02, 2.268e-03, -6.109e-02, 8.955e-02, 2.431e-02, -1.443e-02, -8.614e-02, -3.203e-02, 2.097e-02, 1.250e-01, -8.089e-02, -9.536e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(6.984e-03, -6.199e-02, -1.038e-01, 1.126e-02, 1.931e-02, -1.026e-02, 2.849e-02, 7.688e-03, 4.029e-02, 7.039e-03, 3.247e-02, -6.341e-03, -1.641e-02, 2.834e-02, -2.516e-02, 1.684e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(-7.803e-03, 7.094e-02, 9.260e-02, 5.896e-02, -4.068e-02, 3.416e-02, -8.349e-02, 3.450e-02, -1.181e-03, 7.408e-02, -7.076e-02, 3.545e-03, 1.269e-02, 2.002e-02, 6.895e-02, -2.205e-04), r6);\n\tr7 = MulAdd(s0_0_2, M4(6.317e-02, -5.680e-02, -2.317e-02, -2.330e-02, -8.309e-03, -1.470e-02, 5.337e-02, 1.256e-02, 7.638e-03, 5.507e-02, -2.112e-02, 5.246e-02, -4.915e-02, 6.318e-02, -9.694e-02, 1.051e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(4.113e-02, 7.207e-02, 1.852e-01, -1.150e-01, 2.976e-02, 1.501e-02, 1.023e-03, -3.005e-02, -4.188e-02, 2.683e-02, -9.715e-03, -1.996e-01, -1.295e-01, 1.529e-02, 3.381e-02, -3.158e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.753e-01, 1.538e-01, -3.508e-01, 4.961e-03, 1.729e-01, 5.641e-02, 9.140e-02, 3.349e-03, 1.651e-02, 3.186e-02, -2.120e-02, -1.435e-02, -1.026e-01, -7.495e-02, 7.155e-02, 8.956e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-9.887e-02, -7.747e-02, 1.814e-02, -8.020e-02, 1.169e-01, 4.176e-02, -1.495e-02, 4.224e-02, -5.131e-02, 3.549e-02, 2.364e-03, -9.879e-03, -1.823e-01, 1.340e-02, 1.279e-02, 2.280e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(3.064e-02, -2.595e-03, 8.815e-02, 1.727e-01, -1.631e-02, -1.434e-02, 5.641e-03, 8.144e-02, 2.030e-02, 5.271e-04, -7.314e-02, -2.280e-02, 4.421e-02, -8.616e-03, 9.864e-02, -1.609e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(-1.888e-02, -1.857e-03, -7.696e-02, 1.040e-01, -2.444e-02, 2.282e-02, -8.238e-02, -8.505e-03, 3.311e-02, -4.961e-02, -3.845e-02, -7.162e-02, -4.975e-03, 6.974e-03, 9.287e-02, -2.216e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(3.251e-02, -2.345e-01, 2.885e-01, -2.643e-02, -2.617e-02, 4.426e-02, 1.064e-01, 2.571e-02, -1.127e-02, 4.232e-02, 8.089e-02, 2.550e-02, 7.621e-03, -5.239e-03, -1.605e-01, 4.425e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-4.046e-03, 2.073e-01, 1.015e-01, -1.541e-02, -1.676e-02, 4.848e-02, 1.547e-02, -1.642e-02, 2.096e-02, -4.284e-03, -2.439e-02, -1.977e-02, 8.132e-03, -5.154e-02, -4.524e-03, -9.762e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(1.188e-02, -3.221e-02, 1.662e-01, -1.628e-02, -3.398e-02, -6.376e-02, 1.310e-02, 1.793e-02, 4.737e-02, 7.295e-03, -4.553e-02, -8.024e-03, -3.575e-03, 2.092e-01, 1.338e-01, -4.014e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(3.929e-02, -5.933e-01, 6.972e-02, -2.164e-01, 1.490e-02, -6.696e-03, -1.499e-01, -1.908e-01, 7.294e-02, 1.615e-01, -1.650e-01, -1.005e-02, 5.936e-02, 3.197e-01, -7.032e-02, 3.081e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(2.191e-01, 5.359e-02, 1.210e-01, 2.156e-01, 1.336e-01, 6.122e-02, 4.058e-01, 8.814e-02, -2.012e-02, -6.067e-02, 2.000e-01, -1.160e-02, 3.932e-02, -4.426e-02, 5.565e-02, 3.265e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-4.665e-02, -8.771e-02, -4.211e-02, 1.223e-01, -1.821e-03, 6.906e-03, 4.007e-02, 8.324e-02, -1.003e-01, 1.073e-01, 2.806e-02, -1.792e-02, -2.488e-01, 1.197e-01, 3.652e-02, -1.948e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-2.764e-02, -2.447e-02, -6.523e-02, 1.638e-02, 6.107e-02, -1.949e-02, 4.869e-02, 9.769e-02, 4.665e-02, -4.144e-02, -4.374e-02, 5.493e-02, 4.799e-02, -1.157e-01, 1.746e-02, 3.666e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(-7.246e-02, -3.530e-03, 4.826e-03, 2.323e-02, -6.315e-02, 1.253e-01, -2.340e-01, -3.962e-02, -5.071e-02, -1.590e-02, -1.451e-01, 5.814e-02, 1.012e-01, 1.915e-01, -1.324e-01, 6.092e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-8.972e-02, -3.106e-02, -6.385e-02, 4.630e-02, 6.402e-02, -1.460e-01, 8.150e-02, 3.228e-02, 3.921e-02, -2.016e-01, -7.937e-03, 2.407e-02, 1.172e-01, -3.720e-01, -2.289e-01, -6.835e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(1.131e-01, 7.688e-02, -2.101e-01, 3.744e-02, -9.017e-02, -1.219e-02, 1.796e-02, -3.016e-02, 8.089e-03, -4.975e-03, -8.909e-02, -5.532e-02, -2.549e-01, 1.879e-01, 1.028e-01, 1.132e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(1.873e-01, -1.027e-01, 1.258e-01, -4.242e-02, -1.478e-02, -2.979e-02, 1.877e-02, 4.848e-02, -7.047e-02, 2.124e-02, -3.318e-02, -1.300e-02, -2.940e-01, 1.463e-01, -1.414e-01, -5.863e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-3.514e-02, 1.236e-01, -2.808e-02, 1.075e-01, -1.364e-02, 1.100e-02, -3.138e-02, 7.920e-02, -3.967e-02, -9.089e-02, -1.468e-02, 1.316e-01, -1.719e-02, 1.183e-02, 1.743e-01, -3.874e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(1.809e-01, 1.978e-01, 4.358e-02, 1.362e-01, -4.595e-02, -1.605e-01, 1.291e-01, 4.202e-02, 2.159e-01, -9.549e-02, 3.204e-01, 5.491e-02, 2.812e-01, -3.633e-01, 6.941e-02, 3.391e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(2.990e-03, 7.880e-02, 2.575e-02, 6.489e-02, -9.153e-02, 4.048e-02, 1.238e-02, -5.081e-02, 1.163e-01, -3.426e-02, 5.451e-02, -2.933e-02, -2.455e-01, 7.934e-02, 1.303e-02, 1.457e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(2.070e-02, -4.503e-02, -1.405e-01, 2.788e-02, -2.468e-03, -5.552e-02, 1.285e-01, 4.186e-02, 4.843e-02, -7.450e-02, 4.909e-02, 1.227e-01, 3.609e-02, 1.384e-01, 1.881e-01, -7.556e-03), r3);\n\tr4 = MulAdd(s0_1_2, M4(-1.560e-02, -1.827e-01, -9.097e-02, 9.114e-02, -7.311e-03, -2.555e-02, -3.250e-02, 5.121e-02, 3.239e-03, -1.166e-01, -1.556e-01, 1.869e-02, -5.386e-03, 4.430e-02, 3.042e-02, -3.420e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(3.469e-03, -5.497e-02, 7.665e-02, 1.379e-02, 1.719e-02, -1.222e-01, -7.448e-02, -2.948e-03, 8.470e-02, -9.556e-02, 1.599e-01, -3.528e-02, 2.491e-02, 8.096e-02, -1.338e-02, 5.093e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(2.057e-02, -2.288e-02, -2.953e-02, 1.959e-02, -5.863e-02, 6.061e-03, -1.484e-01, 2.149e-02, -9.158e-02, 1.515e-01, -2.482e-01, -7.007e-02, 8.932e-02, -6.866e-02, 1.860e-02, 4.816e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-9.899e-03, -2.957e-02, -1.051e-02, -5.452e-02, -1.099e-01, 1.427e-01, 5.149e-02, -5.578e-02, -1.172e-01, 1.444e-01, -2.463e-02, -8.647e-03, -1.417e-02, -1.341e-03, -5.200e-02, 1.255e-01), r7);\n\tr0 = MulAdd(s0_2_0, M4(4.424e-02, -6.199e-02, -1.337e-02, 5.219e-02, 6.786e-02, -1.150e-02, -2.361e-03, 7.120e-02, -1.719e-02, -3.147e-03, -2.556e-03, -4.171e-02, 1.013e-01, 2.974e-01, 8.719e-02, 1.134e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.070e-02, 4.605e-02, -3.152e-02, 6.296e-02, -4.991e-02, -9.163e-02, 3.294e-02, -3.854e-04, 2.364e-02, 4.175e-02, 3.576e-02, -2.791e-02, -1.063e-01, -3.022e-03, -1.120e-01, 6.598e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(3.058e-02, -5.566e-02, -9.024e-03, 1.303e-01, 5.201e-02, 3.583e-02, -5.061e-03, -5.703e-02, 6.256e-04, 4.314e-02, 5.242e-03, 4.409e-02, 2.122e-01, 1.420e-02, -4.009e-03, -5.843e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-2.253e-02, -1.022e-02, -6.236e-02, -4.171e-02, -1.102e-02, -7.465e-03, 9.368e-02, 3.205e-02, 2.790e-02, 6.558e-03, -2.204e-02, 4.803e-03, 4.377e-03, -2.074e-02, -6.186e-03, 7.541e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-8.081e-02, -6.260e-02, -1.849e-02, -2.986e-02, 3.061e-02, -7.293e-02, 3.479e-02, 1.542e-01, 5.762e-03, 3.656e-02, -1.792e-02, 4.997e-02, 1.587e-01, 2.935e-02, 4.864e-02, 1.385e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-4.351e-02, 1.476e-02, -1.157e-01, -1.804e-02, -7.478e-03, 3.710e-02, 2.609e-02, -7.595e-03, 5.493e-03, -2.680e-02, 4.085e-02, 2.425e-02, -1.987e-02, 2.500e-02, 1.743e-02, -3.350e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(7.981e-02, -1.092e-01, -5.494e-02, -1.295e-02, 4.574e-03, 3.757e-02, 1.727e-03, 1.510e-02, -8.974e-05, 9.487e-03, 9.331e-03, -8.774e-03, -2.158e-02, -5.018e-02, 6.454e-02, 3.867e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-1.326e-02, -3.125e-02, -5.799e-02, -1.735e-02, -4.038e-02, 1.533e-02, 3.913e-02, -5.993e-03, -4.919e-03, -5.606e-03, -3.479e-02, -4.068e-03, -7.624e-03, 2.537e-02, -6.283e-02, -4.957e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(2.448e-02, 1.774e-01, 5.232e-02, -4.273e-02, 5.616e-02, 3.031e-02, -3.319e-02, 2.194e-02, 2.492e-02, 3.488e-02, -4.146e-03, -3.370e-04, -8.689e-03, 2.592e-01, -1.728e-02, 1.489e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.280e-01, -5.492e-02, 9.335e-02, 5.232e-02, -2.835e-02, 5.528e-02, 2.828e-01, 2.217e-02, -2.564e-02, -6.029e-02, 1.504e-01, 2.380e-02, 1.205e-01, -4.467e-01, -2.405e-02, 1.011e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.128e-01, -2.231e-03, 2.407e-02, 5.725e-02, -3.085e-02, 5.961e-02, 5.205e-03, 2.822e-02, 5.295e-02, 4.610e-02, 1.705e-02, -2.045e-02, -9.132e-02, 1.290e-01, 2.013e-02, 1.108e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(8.386e-02, 2.204e-02, 6.409e-02, 6.850e-02, 8.361e-03, -1.514e-02, 1.132e-01, 4.449e-02, 3.408e-02, -1.942e-02, -1.589e-02, 2.548e-02, 1.087e-01, 3.127e-02, -2.072e-01, 1.381e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-9.022e-02, -8.713e-02, -2.403e-02, -8.093e-02, 7.986e-02, 1.139e-01, 3.803e-02, 8.494e-02, 4.046e-02, -4.043e-02, -1.024e-02, -3.965e-02, -2.972e-02, -5.786e-02, -4.305e-02, 2.864e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(7.927e-02, 2.863e-02, 2.238e-02, 9.307e-02, -2.409e-03, -1.541e-02, 1.574e-02, 6.317e-03, 5.819e-02, -5.180e-02, 1.048e-01, 4.054e-02, 7.446e-02, -2.060e-01, -7.139e-02, 1.076e-01), r5);\n\tr6 = MulAdd(s0_2_1, M4(4.311e-02, -1.543e-01, 1.232e-01, -7.092e-03, -4.858e-02, 4.407e-02, -6.448e-02, -2.222e-02, -9.799e-02, 5.128e-02, -6.992e-02, -3.746e-02, -1.074e-01, 1.502e-02, -2.160e-02, -3.796e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(-1.013e-02, -1.112e-01, -1.947e-01, 4.136e-02, 3.446e-02, 1.304e-01, 2.204e-02, -3.578e-03, -1.282e-02, 1.808e-02, 5.147e-02, -3.178e-02, -9.296e-02, 4.114e-02, -7.644e-02, 2.906e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-2.805e-03, -1.052e-01, 5.306e-02, 1.062e-01, -4.756e-02, 1.696e-02, 9.694e-04, 9.562e-02, 3.919e-02, 4.097e-02, -3.098e-02, 1.923e-02, -4.019e-02, -3.127e-02, 7.489e-02, 7.488e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-7.989e-02, 1.844e-01, 1.219e-01, 7.638e-02, 9.208e-02, 4.427e-02, 7.113e-02, 4.995e-02, -4.360e-02, -6.758e-03, 7.775e-02, 1.226e-02, -6.389e-02, 4.345e-02, 8.671e-03, -2.713e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.555e-01, -6.318e-02, 2.919e-02, 1.276e-01, 3.331e-02, 3.780e-02, -8.978e-04, 2.837e-02, -6.678e-02, -6.541e-02, 4.359e-02, 2.230e-03, -2.903e-02, -6.966e-02, 3.926e-02, -1.229e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(1.835e-02, 1.630e-02, -9.764e-02, 2.129e-02, 2.003e-04, -4.214e-03, 1.078e-01, 8.221e-03, 4.330e-02, 4.276e-03, -3.119e-02, 3.082e-02, 2.009e-02, 7.422e-03, -6.960e-03, 1.569e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(3.641e-02, -5.554e-02, -2.636e-02, -3.555e-02, 2.509e-02, -3.761e-02, 3.878e-02, 6.321e-02, -4.242e-02, 3.723e-03, -2.829e-03, 2.098e-02, -2.492e-02, -1.917e-01, -5.869e-02, 9.004e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(1.334e-02, -9.393e-02, -1.371e-01, 3.514e-02, 3.046e-03, -2.060e-02, -9.556e-02, 1.087e-02, 3.165e-02, -7.471e-02, 5.709e-03, 1.461e-02, 2.871e-02, -2.708e-02, -3.052e-01, 7.678e-04), r5);\n\tr6 = MulAdd(s0_2_2, M4(2.557e-02, -1.209e-01, 1.161e-01, -1.402e-02, -1.457e-02, 8.106e-02, -4.590e-02, 1.174e-02, -3.765e-02, 3.457e-02, -1.158e-01, -1.397e-03, -6.184e-02, -5.749e-02, -4.847e-02, 7.069e-03), r6);\n\tr7 = MulAdd(s0_2_2, M4(-8.029e-03, -4.017e-02, -3.480e-02, 3.690e-03, 1.247e-02, 1.179e-01, -1.924e-02, -3.471e-03, 5.542e-02, 5.007e-02, -5.665e-02, -2.951e-02, -6.358e-02, 1.595e-01, 1.018e-01, 5.773e-03), r7);\n\tr0 = MulAdd(s1_0_0, M4(-7.495e-02, -4.711e-03, -6.812e-03, 6.120e-02, 4.527e-02, 8.956e-02, 4.632e-02, -2.563e-01, -8.466e-03, 9.321e-02, 1.036e-01, 1.724e-01, -1.356e-02, -4.011e-02, -5.051e-02, -5.568e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(2.659e-01, -7.400e-02, -2.377e-01, 8.193e-03, -2.358e-02, 5.168e-02, -5.785e-02, 2.570e-03, 1.358e-01, -4.582e-02, -1.188e-02, -3.220e-02, 2.111e-01, 7.044e-02, -1.435e-01, 2.324e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(3.552e-02, 4.247e-02, 1.318e-03, -3.807e-02, -4.227e-02, -1.696e-02, 8.768e-03, -1.452e-01, 5.463e-02, 1.568e-01, 3.480e-02, -7.618e-02, -4.886e-02, 4.750e-02, 9.174e-03, 1.122e-01), r2);\n\tr3 = MulAdd(s1_0_0, M4(1.801e-02, 8.451e-03, 5.130e-02, -1.435e-02, 1.073e-02, 1.618e-02, 7.193e-02, 3.664e-02, 7.912e-02, 2.389e-02, 3.937e-02, 4.087e-02, 2.188e-02, -1.991e-02, 2.566e-05, -7.489e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(1.066e-02, -8.951e-03, 6.558e-02, 9.751e-02, 7.993e-03, -6.565e-02, 3.764e-03, 8.639e-03, 3.773e-03, -9.123e-02, -8.606e-03, 7.292e-02, 2.856e-02, 1.071e-02, 4.138e-02, 3.301e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(3.737e-02, 1.597e-02, -1.305e-02, 8.818e-03, 1.100e-02, -9.491e-02, -1.824e-02, 3.509e-02, 3.745e-02, -1.034e-02, 5.697e-02, 4.856e-02, 2.903e-02, -5.255e-03, 4.911e-02, 5.967e-03), r5);\n\tr6 = MulAdd(s1_0_0, M4(2.226e-02, -4.525e-02, 4.396e-02, -4.196e-03, -6.602e-02, 4.493e-02, 2.204e-02, -2.293e-02, -6.349e-03, 1.457e-01, 1.171e-01, -4.877e-04, -9.691e-03, -1.027e-02, 1.326e-02, 2.264e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(3.526e-02, 4.392e-02, 4.149e-02, 1.462e-02, -4.354e-02, 2.127e-02, -5.690e-03, 8.261e-03, 1.410e-01, 1.196e-02, 4.992e-02, -6.469e-02, 8.860e-02, -2.651e-02, -2.266e-02, -2.376e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(2.034e-02, 5.904e-03, -7.297e-03, -8.912e-02, 3.111e-02, -2.929e-02, -1.340e-01, 7.340e-02, 3.737e-02, -2.213e-01, 3.370e-02, -3.381e-02, -1.371e-02, -7.682e-02, -8.168e-02, 1.288e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(5.807e-01, 5.760e-02, 1.126e-01, 2.580e-02, 1.784e-01, -2.258e-01, -1.653e-01, -5.868e-02, 3.052e-02, 1.081e-02, -1.165e-01, -4.793e-02, 2.742e-01, -7.269e-02, -1.581e-01, 4.199e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.997e-03, -1.336e-03, 8.428e-04, 6.233e-02, -4.848e-02, 2.301e-01, 6.469e-02, 7.940e-02, 1.227e-01, -1.028e-01, 5.093e-03, 1.185e-02, 2.119e-02, 1.740e-02, 2.842e-02, 4.148e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-6.220e-03, 3.761e-03, 1.210e-01, -1.948e-03, 8.910e-02, -2.444e-02, 2.084e-01, -1.100e-01, -6.824e-03, -3.394e-02, -8.481e-02, 7.695e-02, 5.666e-02, -5.214e-02, -1.571e-01, 1.699e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-1.853e-02, 8.163e-03, 7.593e-02, 9.091e-02, 4.019e-02, 1.279e-02, -2.251e-01, -1.089e-01, 5.089e-03, 8.972e-02, 2.721e-02, 9.528e-03, -9.656e-03, 1.575e-02, -6.908e-02, -6.580e-04), r4);\n\tr5 = MulAdd(s1_0_1, M4(1.185e-02, 3.526e-02, -8.063e-02, -2.950e-02, 1.478e-01, -1.818e-01, -5.616e-02, -4.447e-02, 1.602e-02, 4.457e-02, 1.038e-01, -7.565e-03, 6.116e-02, -3.395e-02, 6.941e-02, -1.654e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-1.857e-02, -1.074e-02, -5.472e-02, -3.283e-02, -1.799e-01, 9.332e-02, 7.291e-02, 2.866e-02, 4.404e-02, 1.671e-02, -1.168e-02, 1.517e-02, -6.115e-03, -9.092e-03, 4.700e-02, 4.287e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(7.982e-03, 2.638e-02, -9.884e-02, -2.137e-02, 1.726e-01, -2.780e-02, 1.019e-02, 1.759e-02, 3.896e-02, -9.740e-03, -8.581e-03, 5.117e-02, 4.610e-02, 3.601e-02, -5.770e-02, -7.982e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(3.979e-02, 1.405e-02, 6.034e-02, -4.448e-03, 9.412e-03, -4.931e-02, 6.349e-02, -2.756e-02, 9.210e-03, 5.468e-02, 9.310e-02, 2.324e-02, -6.211e-03, 5.718e-02, -2.017e-02, 6.106e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(2.318e-01, -1.887e-03, 5.145e-03, 1.567e-02, -3.071e-01, -5.108e-01, 1.084e-01, 6.661e-02, -1.233e-01, 1.665e-01, 2.797e-02, -1.002e-01, -1.328e-01, 3.698e-03, 3.764e-03, 1.210e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(-7.891e-03, -5.370e-02, -2.014e-02, 5.619e-02, 7.342e-02, -6.842e-02, 1.687e-02, 3.632e-02, 1.141e-01, 8.812e-03, 8.745e-03, -8.611e-02, 1.120e-01, -7.418e-02, 4.426e-03, 2.285e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-1.650e-02, 6.547e-03, 1.493e-03, 4.769e-03, 2.134e-03, 6.751e-03, -4.170e-02, -4.311e-02, 7.518e-03, 3.750e-02, 2.564e-02, 7.263e-02, 2.717e-02, -1.074e-02, -4.759e-02, -6.102e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-4.942e-03, 2.193e-03, 5.327e-03, 5.182e-02, -1.557e-02, 7.814e-02, -7.182e-02, 4.138e-02, 4.928e-04, -6.294e-02, 3.070e-02, 1.022e-01, 2.457e-02, 1.745e-01, -3.153e-02, 8.227e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-2.620e-02, -1.121e-02, -1.831e-02, 1.183e-02, 9.442e-03, 2.420e-02, -2.203e-02, 2.584e-02, -8.718e-03, 2.574e-02, -3.417e-02, 2.335e-02, 3.747e-03, 2.033e-02, 1.564e-02, 1.535e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-8.386e-03, 6.623e-02, 2.506e-02, -2.993e-02, -2.203e-02, 1.095e-02, 1.950e-02, 7.083e-02, 3.170e-02, 2.737e-02, -1.612e-02, 1.178e-02, 4.482e-03, -6.531e-02, 2.223e-02, -8.375e-03), r6);\n\tr7 = MulAdd(s1_0_2, M4(-4.695e-02, -4.506e-03, 1.791e-02, -2.618e-02, 3.583e-02, -1.096e-02, -4.611e-02, 9.507e-02, 1.076e-01, 2.470e-02, 5.566e-02, -2.285e-02, -2.244e-02, 5.163e-02, -1.606e-01, -9.137e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-6.117e-02, -2.631e-01, -1.743e-01, 8.155e-02, 9.415e-02, 7.715e-02, -4.446e-03, -3.965e-02, 2.790e-02, 9.182e-02, 1.843e-02, 2.545e-01, -1.116e-01, -4.047e-02, 1.807e-02, 5.804e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(2.179e-01, 9.250e-02, 2.823e-01, 5.738e-02, 1.005e-01, -1.860e-02, 1.591e-01, -2.684e-02, -5.086e-02, 1.924e-01, -1.878e-01, 9.096e-02, -5.599e-02, 2.247e-02, 1.527e-01, -4.758e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(5.480e-02, 1.009e-01, -1.141e-02, 6.026e-03, -1.384e-03, 7.351e-02, -1.041e-03, 7.301e-02, 1.004e-01, 1.601e-02, -4.892e-03, 5.825e-03, -4.256e-02, -1.998e-02, 9.966e-03, -9.193e-03), r2);\n\tr3 = MulAdd(s1_1_0, M4(3.383e-02, -1.850e-03, -1.821e-01, 3.964e-02, -3.014e-02, -3.625e-02, -1.176e-01, 8.754e-02, 1.568e-02, -1.205e-02, 5.221e-02, 5.486e-02, 2.631e-02, 1.183e-02, 7.859e-02, -6.908e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-1.068e-02, 5.394e-02, -1.560e-01, -9.253e-02, 9.890e-02, 5.828e-02, 1.228e-02, 3.750e-02, -3.239e-02, 1.182e-01, -7.526e-02, -1.954e-02, 1.791e-02, 6.569e-03, 1.006e-01, 1.766e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.165e-01, 1.525e-02, -2.423e-02, 6.959e-02, -4.370e-03, -2.987e-02, -1.006e-01, -1.656e-01, -2.466e-02, 8.422e-03, 6.884e-02, -4.435e-02, 1.436e-02, 2.679e-02, 1.156e-01, 2.666e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(5.838e-02, -7.511e-02, -1.207e-02, 4.376e-02, 1.304e-03, 2.223e-02, -2.198e-02, 1.018e-01, -1.888e-02, 6.168e-02, 1.298e-02, -1.351e-02, -1.835e-02, 3.104e-02, 3.083e-02, 2.994e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.315e-01, 1.449e-02, 3.425e-02, -7.666e-03, -7.806e-02, 1.054e-01, -7.593e-02, -5.494e-02, -5.442e-02, 8.276e-02, -5.105e-02, -2.573e-02, 1.017e-01, 1.684e-02, 2.037e-02, -9.431e-03), r7);\n\tr0 = MulAdd(s1_1_1, M4(-1.400e-01, 5.972e-02, -9.643e-02, 1.599e-01, 2.999e-02, 1.092e-01, -2.314e-01, -4.417e-01, -4.610e-02, 2.001e-02, 3.220e-02, -1.082e-01, -1.636e-01, -1.659e-01, 7.411e-02, 2.234e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-4.421e-02, 2.100e-02, -1.481e-01, -8.704e-02, 3.067e-01, -2.553e-01, -4.254e-01, 3.077e-01, 3.627e-02, 4.315e-03, -7.988e-02, 1.208e-01, -9.047e-02, -1.174e-01, 2.292e-01, -7.961e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-7.279e-02, -1.260e-01, -7.115e-03, 2.407e-01, -2.149e-01, 1.683e-01, 9.400e-02, 2.337e-01, -1.350e-01, -8.388e-02, -3.943e-02, 1.419e-03, -5.435e-02, -1.206e-01, -6.403e-03, -1.362e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-2.822e-02, -4.432e-02, -1.759e-02, 1.468e-01, 4.046e-01, 4.653e-02, 2.247e-01, -4.007e-02, -1.612e-02, 2.727e-03, -3.397e-02, 9.025e-02, -1.670e-02, -3.032e-02, -1.323e-02, 2.813e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.482e-02, 4.576e-02, -1.515e-02, -1.131e-01, -5.018e-02, 2.626e-02, -3.611e-01, -2.899e-01, -3.381e-02, 1.712e-01, 3.841e-02, -1.130e-01, -9.021e-03, 5.978e-02, 2.667e-01, -1.214e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-1.057e-01, 1.647e-01, 1.114e-01, 3.392e-02, 3.123e-01, -4.297e-01, -1.669e-01, 3.623e-01, -8.654e-02, 9.750e-02, 6.284e-02, -3.535e-02, -1.917e-02, 6.247e-02, 2.821e-02, 3.886e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(8.619e-02, -1.725e-01, -4.911e-02, 3.077e-01, -1.550e-01, 1.771e-01, -5.292e-01, -1.794e-01, 4.233e-02, -1.924e-01, -3.635e-03, -8.398e-03, 1.081e-02, -5.105e-02, 6.314e-02, 9.817e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(-9.712e-03, 1.920e-02, -5.498e-02, 1.423e-01, -2.308e-01, 2.585e-01, 4.646e-02, -1.775e-01, -2.117e-01, 1.451e-01, -2.958e-02, 3.520e-02, 5.629e-02, 9.149e-02, -5.260e-02, -1.095e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-1.366e-03, 1.626e-01, 1.245e-02, 8.757e-02, 3.023e-02, 1.350e-01, 2.020e-02, 2.610e-02, 6.127e-02, 3.174e-02, -8.161e-03, 1.851e-01, 9.218e-02, 3.643e-02, 8.141e-02, -8.572e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(1.969e-01, -1.077e-01, -7.891e-02, 9.679e-02, -1.043e-01, -6.299e-01, -2.478e-01, -3.969e-01, -1.419e-01, 6.007e-02, -1.773e-01, 1.123e-01, 4.238e-02, -5.867e-02, -2.705e-01, 1.473e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-3.174e-01, 3.711e-02, 2.929e-04, 4.162e-02, 1.078e-01, 1.076e-01, 9.816e-02, -2.432e-02, -2.230e-01, 1.813e-02, -2.125e-02, -4.367e-02, -1.612e-01, 1.391e-01, 1.170e-02, -9.815e-03), r2);\n\tr3 = MulAdd(s1_1_2, M4(1.906e-02, -7.457e-02, 1.043e-01, 1.421e-01, -4.872e-02, 2.165e-02, -3.016e-02, 2.315e-02, -4.458e-03, -2.365e-02, 5.334e-02, 1.241e-01, 1.329e-02, 5.788e-02, -1.597e-01, -9.424e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-5.712e-02, 1.280e-01, -1.392e-01, 6.559e-02, 8.855e-02, 3.516e-03, -1.193e-02, -2.974e-02, 2.110e-02, 2.183e-01, 3.190e-03, -9.546e-02, 9.790e-02, -7.919e-02, 1.995e-02, 1.445e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(5.456e-02, -9.901e-02, -1.549e-02, -3.455e-02, -4.734e-02, -1.665e-01, -2.186e-01, 1.411e-02, -1.125e-02, -4.762e-02, 9.784e-02, -1.650e-02, -1.209e-02, 5.230e-02, 8.255e-03, 2.442e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(4.936e-03, -2.359e-02, -1.082e-02, 6.062e-02, -2.755e-02, 4.868e-03, -3.632e-02, 3.743e-02, -4.578e-02, -9.581e-03, 4.702e-03, 1.188e-02, 5.861e-02, 4.173e-02, 2.385e-01, 1.395e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(-2.020e-02, 8.343e-02, 2.182e-02, 2.393e-02, 2.194e-01, 6.776e-02, -2.718e-02, 5.216e-02, 1.276e-02, -2.733e-02, -7.236e-03, 7.393e-02, 2.147e-01, -1.909e-01, -7.715e-02, -8.000e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(1.187e-01, -8.785e-03, 1.048e-01, -1.007e-01, 5.565e-03, -7.269e-02, -7.559e-02, 1.499e-02, 3.854e-02, 4.894e-02, 5.338e-03, 3.435e-02, -4.809e-02, 9.022e-02, 2.237e-02, 1.081e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(3.443e-02, -3.635e-01, -3.622e-01, 1.238e-01, 4.456e-02, 1.427e-02, 8.158e-02, 8.360e-03, 1.089e-02, 8.865e-02, 1.457e-01, -4.728e-02, -2.084e-02, 6.101e-02, -2.254e-02, -5.095e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-5.832e-02, -8.435e-02, 4.502e-02, 2.564e-01, -2.770e-02, -5.038e-03, 5.459e-03, 8.955e-02, 2.843e-02, 3.780e-02, 6.146e-03, 3.123e-02, -2.304e-02, 4.342e-02, 8.507e-03, 8.324e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(9.121e-02, -7.645e-03, -6.854e-02, 1.819e-01, 8.647e-03, -1.839e-03, 7.047e-03, 1.868e-02, 4.435e-03, -1.511e-02, 3.620e-02, 1.423e-02, 2.228e-02, -8.492e-03, -3.605e-03, -5.287e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-5.569e-02, -5.798e-02, -1.826e-01, 2.134e-01, -6.915e-02, 1.006e-05, -6.068e-02, 8.854e-04, 1.867e-02, -1.790e-03, -1.060e-01, 8.182e-02, 1.041e-02, -3.552e-02, 2.369e-02, 3.999e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(1.413e-01, -1.451e-01, 2.548e-01, 1.586e-01, 8.955e-04, -5.282e-02, -7.397e-02, -1.732e-02, 9.430e-03, -2.887e-02, -4.676e-03, 2.062e-02, 1.850e-02, 5.371e-03, 1.641e-01, 3.568e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(2.298e-02, 1.482e-01, 2.242e-02, -1.274e-01, -1.774e-02, 2.084e-02, -2.143e-02, -3.333e-03, -1.522e-02, 3.124e-02, -2.347e-02, -6.929e-03, -1.298e-02, 5.894e-03, 8.787e-03, 5.243e-03), r6);\n\tr7 = MulAdd(s1_2_0, M4(-5.504e-02, -4.210e-02, 1.712e-01, 1.322e-02, -2.133e-03, -6.910e-02, 3.379e-02, -8.616e-03, -1.619e-02, 4.575e-02, 1.476e-02, -1.846e-02, 1.703e-02, -1.006e-02, 3.256e-02, -2.448e-03), r7);\n\tr0 = MulAdd(s1_2_1, M4(-6.777e-02, -2.553e-01, -1.374e-01, -2.726e-01, 5.133e-02, 2.112e-01, -5.954e-02, 1.517e-01, -3.098e-02, 6.577e-02, -2.605e-02, 1.032e-01, -1.542e-01, -5.512e-02, 2.099e-02, 1.331e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.264e-01, 2.022e-01, 1.722e-01, 3.529e-01, 6.055e-02, 2.943e-01, 1.475e-01, 2.751e-02, 8.259e-02, 8.573e-02, -8.516e-02, 4.900e-02, -1.154e-01, -1.028e-01, -3.474e-02, 2.096e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.044e-01, -4.587e-02, -1.623e-02, -1.714e-01, -1.366e-01, 3.332e-02, 4.574e-03, -1.704e-02, -4.814e-03, -1.424e-02, 1.918e-02, -2.977e-02, 9.744e-02, -8.800e-02, 1.859e-03, 5.180e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-1.432e-01, -8.799e-02, -4.672e-01, 7.658e-02, 5.091e-02, -1.684e-02, 1.069e-02, 9.691e-02, 2.318e-02, -2.677e-02, 8.814e-02, -2.287e-02, -1.841e-02, -3.597e-02, -8.959e-02, -1.957e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(6.345e-02, 1.069e-01, -9.828e-02, 3.353e-01, 8.895e-02, -1.557e-01, -1.259e-02, -7.599e-03, -2.701e-02, 1.015e-01, 9.293e-02, 9.243e-02, -2.189e-02, 6.782e-02, 1.050e-01, 7.284e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-1.402e-01, -9.527e-02, -1.273e-01, -8.394e-02, 4.423e-02, -1.850e-01, -9.029e-02, -3.226e-02, 7.058e-02, 1.228e-02, 7.566e-02, 2.751e-02, 1.720e-02, 3.980e-02, -1.551e-03, -9.773e-03), r5);\n\tr6 = MulAdd(s1_2_1, M4(1.223e-02, 1.349e-01, -2.518e-01, -2.729e-02, -1.431e-01, 5.183e-02, -3.684e-02, 2.979e-02, 3.971e-02, -1.886e-02, 1.747e-02, -1.898e-03, 1.972e-02, -3.790e-02, -9.863e-03, 1.400e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-5.632e-02, 1.250e-01, 3.569e-01, -1.235e-01, -2.819e-02, 5.136e-02, -3.136e-02, -5.436e-02, -1.438e-02, 7.632e-02, 5.084e-02, -1.724e-02, -1.438e-02, 4.237e-02, 1.018e-02, -3.879e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-2.177e-01, -1.199e-01, -7.824e-02, 2.193e-01, -8.350e-02, 2.076e-02, 2.147e-02, 9.991e-02, -8.969e-02, -7.935e-02, -5.115e-03, -1.457e-02, -3.898e-02, 2.342e-04, -3.322e-03, 7.108e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(6.882e-02, 3.081e-01, 3.369e-01, 7.581e-02, -1.610e-02, -8.688e-02, 6.501e-02, 7.890e-02, -4.005e-02, 2.548e-02, -2.277e-02, -2.477e-02, -7.867e-02, 5.225e-02, -1.597e-01, 2.560e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-8.130e-02, -1.644e-03, -1.593e-02, -8.288e-02, 1.201e-02, -1.376e-02, -7.763e-03, -7.850e-02, 2.591e-01, 1.207e-02, 1.191e-02, -3.576e-03, 3.718e-02, 4.239e-02, 8.664e-03, 1.361e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-3.518e-03, -8.412e-02, -2.077e-01, 8.649e-02, -1.418e-03, 7.049e-03, -3.161e-02, 6.894e-03, -4.276e-02, -9.487e-04, -9.195e-02, -5.895e-02, 2.738e-02, 4.399e-02, -7.769e-02, -6.222e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(7.574e-02, 1.895e-01, 4.641e-02, 2.563e-01, 2.056e-02, 1.194e-02, -3.237e-02, 6.689e-02, 1.438e-02, -7.693e-02, 8.275e-02, 1.075e-01, -3.536e-03, -2.713e-03, 1.794e-02, 3.594e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.094e-02, 2.880e-03, -7.445e-02, -5.151e-02, -1.422e-02, -3.842e-02, -8.569e-02, 1.593e-02, -2.501e-02, 9.357e-02, 4.462e-02, -1.235e-02, 3.440e-03, -2.742e-02, 1.143e-02, 3.006e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-3.798e-02, 8.187e-02, -1.767e-01, -6.740e-02, -2.699e-02, -1.689e-02, 5.862e-04, 1.952e-02, 1.915e-02, 5.182e-02, -1.923e-02, -9.531e-03, 4.110e-02, -2.255e-02, 3.756e-02, 3.475e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(5.929e-02, 1.785e-01, 1.716e-01, -6.689e-02, 1.587e-03, 5.824e-02, -7.527e-02, 7.804e-02, 2.886e-03, 1.011e-02, 3.849e-02, -2.799e-02, 5.453e-03, -6.849e-02, -2.399e-02, -3.097e-02), r7);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-8.396e-02, -1.074e-01, -2.347e-02, 5.795e-02, 4.871e-02, 6.555e-02, -7.390e-02, -6.039e-03, -5.714e-02, -5.749e-02, -1.087e-01, 8.950e-02, -8.267e-02, -3.860e-02, 1.183e-02, -1.715e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-4.293e-01, -4.958e-02, 1.004e-02, -4.961e-02, 5.433e-01, 1.621e-01, 1.785e-01, 2.749e-02, -1.620e-01, -1.952e-01, 1.163e-01, 3.043e-03, -5.697e-01, 1.629e-01, -1.856e-01, -6.253e-05), r1);\n\tr2 = MulAdd(s0_0_0, M4(9.395e-02, -8.406e-02, -1.056e-02, -9.251e-02, 6.275e-02, 1.171e-01, 3.062e-02, 1.695e-01, 3.527e-02, 1.139e-01, 2.918e-02, 1.199e-01, -9.568e-02, -7.005e-02, -4.213e-03, -9.189e-03), r2);\n\tr3 = MulAdd(s0_0_0, M4(-4.543e-02, -3.274e-02, 1.473e-02, -2.621e-02, 2.496e-02, -1.511e-02, -1.277e-01, 1.694e-02, 4.166e-02, -2.429e-02, -3.533e-02, -1.815e-02, 2.494e-02, -1.628e-02, 5.930e-02, 1.570e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.057e-03, 1.333e-02, 1.209e-01, -2.591e-02, 2.840e-02, -1.985e-03, -1.509e-01, -1.006e-02, -5.379e-02, 9.901e-03, -7.098e-02, -1.107e-01, 7.586e-03, -7.930e-03, 2.127e-02, 9.825e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(2.362e-02, 7.528e-02, -6.927e-02, -2.705e-02, 2.320e-02, -3.916e-03, 7.472e-02, 2.210e-03, -1.206e-01, -4.396e-02, -3.673e-04, -5.866e-02, -3.893e-02, 4.072e-02, -1.406e-01, -6.925e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-3.062e-02, 6.025e-02, 1.066e-02, -7.175e-02, 7.483e-02, -4.965e-02, 4.526e-02, 5.549e-02, -5.548e-02, -4.558e-02, -5.376e-02, 1.105e-01, -5.630e-02, -9.661e-02, -1.566e-01, -4.718e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(1.183e-02, 1.660e-02, -1.763e-02, -1.771e-02, -1.924e-02, -6.022e-02, -3.053e-02, -4.690e-03, -1.483e-02, -2.294e-02, -7.180e-03, 4.862e-02, -2.338e-02, 4.492e-02, 5.396e-02, 2.205e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(9.830e-03, -3.289e-02, -4.087e-02, -8.909e-02, -4.088e-02, -6.217e-02, -1.368e-02, 2.866e-02, -1.878e-01, 5.401e-03, -1.401e-01, 1.131e-01, -1.543e-02, -7.788e-02, -1.572e-01, -2.212e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-8.667e-02, -5.460e-03, 1.095e-02, 7.804e-03, -2.706e-01, -5.242e-02, -2.871e-02, 1.426e-02, -2.841e-01, 1.385e-01, -1.113e-01, -1.252e-01, -3.195e-01, -1.685e-01, -2.806e-01, -3.974e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(4.266e-02, 4.839e-02, 1.764e-02, 3.617e-01, 2.975e-02, -3.591e-02, -1.338e-02, -4.050e-01, 1.521e-02, -1.017e-02, -2.424e-02, 1.603e-01, -2.288e-01, 1.254e-01, 1.052e-01, -8.228e-03), r2);\n\tr3 = MulAdd(s0_0_1, M4(-6.376e-02, 1.094e-01, -2.915e-02, -4.523e-02, 6.992e-02, -1.631e-01, -1.350e-01, -5.395e-02, 2.962e-02, 9.674e-02, -6.280e-03, 2.059e-01, 5.006e-02, 5.415e-02, 2.527e-01, 1.274e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(2.157e-02, 2.988e-02, -2.534e-03, -2.768e-02, 6.541e-02, -6.719e-02, 2.295e-02, 2.115e-02, -1.081e-01, 2.887e-02, -1.665e-01, -1.646e-01, -2.823e-02, -6.677e-03, -1.210e-01, -1.030e-01), r4);\n\tr5 = MulAdd(s0_0_1, M4(-1.785e-02, 9.211e-02, -2.299e-02, -1.116e-03, 2.790e-02, -9.017e-02, 9.126e-02, -3.846e-02, -1.118e-01, 3.178e-02, -4.853e-02, -1.940e-02, 1.577e-01, -9.710e-02, -9.624e-02, -4.631e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(6.857e-02, -8.677e-02, -4.118e-02, -3.004e-04, -7.678e-02, 8.226e-02, -4.423e-02, -8.623e-02, -3.863e-02, -2.428e-01, -4.323e-02, 2.726e-01, 2.809e-02, -8.107e-02, -7.956e-02, 1.949e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(-1.015e-02, 3.056e-02, 2.923e-02, 6.958e-02, 2.810e-02, -2.685e-02, 2.788e-02, -7.094e-02, -4.895e-03, 6.753e-02, 4.999e-02, 1.470e-01, 1.747e-01, 1.317e-02, -2.500e-02, 1.112e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(3.574e-02, 1.213e-01, -1.423e-02, -4.329e-02, -3.927e-02, -7.480e-02, 1.364e-02, 5.053e-02, 1.727e-02, 3.244e-02, -4.345e-03, 3.698e-02, 8.193e-02, -1.041e-03, -7.555e-02, -7.762e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.661e-01, 3.072e-02, -5.349e-05, -1.603e-02, -3.999e-01, 8.858e-02, -4.628e-02, 6.883e-03, -6.300e-01, -7.261e-02, 1.833e-02, -1.968e-01, -6.375e-01, 1.771e-01, -1.159e-01, 6.416e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(4.557e-02, 6.410e-03, -1.790e-02, 2.818e-03, -1.058e-01, -1.400e-02, 2.228e-02, -2.900e-02, -3.254e-01, -1.470e-01, 5.141e-02, 3.713e-02, -1.379e-01, 2.574e-03, -2.842e-02, -3.872e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(5.884e-03, -2.788e-02, 1.579e-02, 1.428e-02, -3.862e-03, 2.979e-02, -5.923e-02, -6.804e-02, 1.705e-02, 2.574e-03, -9.490e-03, 1.774e-01, 6.485e-03, -7.740e-02, 6.690e-02, -8.741e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-2.475e-02, 4.303e-02, 1.116e-02, 1.404e-02, 3.225e-02, 8.022e-02, -7.098e-03, -5.987e-02, -1.233e-01, -6.516e-02, -2.743e-01, -4.059e-02, 1.849e-02, 3.529e-02, 6.350e-02, -9.129e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-4.065e-02, 1.317e-03, -1.813e-02, 1.995e-02, 3.625e-02, -1.727e-02, 2.257e-02, -2.319e-02, 1.192e-01, 6.959e-02, 1.764e-02, 2.641e-02, -2.020e-02, -1.428e-02, 1.006e-01, 1.532e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(-1.784e-02, -1.683e-02, -2.525e-02, 5.139e-02, -6.991e-03, -2.246e-04, 8.731e-02, -1.433e-02, 1.937e-01, 3.264e-02, -2.946e-02, 4.092e-01, 1.311e-02, 4.034e-02, -1.185e-01, 8.742e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-1.155e-01, 2.703e-02, -8.567e-02, -8.749e-02, 1.296e-01, -2.203e-02, 7.105e-02, 1.329e-01, 3.781e-03, -1.138e-02, 2.215e-02, 3.522e-02, -9.452e-02, 9.705e-02, -6.276e-02, -6.475e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(2.325e-02, 1.149e-01, -5.855e-02, -5.658e-02, -1.928e-02, 2.667e-02, -6.189e-02, -2.117e-01, -7.953e-02, 2.154e-03, -6.296e-02, -9.058e-02, 8.574e-02, 7.836e-02, 1.470e-01, 9.408e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.482e-01, 2.330e-01, -2.462e-01, -6.834e-02, 1.957e-01, -1.926e-01, -4.187e-02, -1.252e-02, 3.243e-02, 4.759e-02, -2.003e-01, -4.548e-02, -2.472e-01, 1.801e-01, 2.912e-01, 2.398e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.247e-01, 9.522e-02, -1.013e-02, -1.210e-01, -7.704e-02, 7.821e-02, -2.050e-02, 1.460e-01, -9.744e-02, 7.506e-02, -2.905e-04, -3.521e-01, 3.818e-02, 9.388e-02, -1.242e-02, -8.279e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(7.618e-02, 6.351e-02, -5.941e-02, 1.678e-02, 1.468e-01, 1.230e-02, 2.020e-02, 3.077e-02, 1.831e-02, -7.309e-02, 3.340e-02, -1.234e-01, -1.439e-02, 6.812e-02, 1.067e-02, 1.779e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(4.513e-02, -9.439e-02, -6.473e-02, -5.951e-02, -8.512e-02, 4.365e-02, 1.269e-01, -7.695e-02, -6.582e-02, -5.830e-02, 1.742e-01, -3.058e-02, 5.954e-02, 1.145e-01, 1.449e-01, 1.607e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(1.661e-01, -3.903e-03, -1.227e-01, -4.358e-02, 2.700e-02, -2.339e-02, 5.559e-02, 6.196e-02, -1.989e-01, -2.397e-01, 6.604e-02, 2.451e-01, 5.880e-02, 2.530e-02, 7.979e-02, 1.147e-01), r5);\n\tr6 = MulAdd(s0_1_0, M4(7.952e-02, 2.142e-02, 1.421e-01, 1.059e-01, -6.721e-02, -9.696e-02, 2.050e-02, -2.632e-02, -3.146e-01, -2.229e-01, -1.057e-01, -2.052e-01, -4.827e-02, -6.872e-02, -1.091e-01, -3.683e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(1.588e-01, -9.229e-02, -4.170e-02, 7.077e-02, 7.855e-02, -9.455e-03, 8.754e-02, 7.992e-02, -1.149e-02, -1.569e-03, 1.443e-02, 3.592e-02, -1.200e-01, 2.159e-02, 3.519e-02, 3.168e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(5.714e-02, 2.871e-02, 1.274e-01, 8.385e-02, 9.535e-02, -7.357e-02, 6.113e-02, 1.267e-01, -2.607e-01, -4.410e-02, 5.878e-02, -1.360e-01, 8.074e-02, 7.719e-02, 1.674e-01, -4.387e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.566e-01, -1.214e-01, 2.555e-02, 8.022e-02, -1.102e-01, -8.331e-02, 9.703e-02, -4.623e-02, -1.286e-01, 6.370e-02, -9.120e-02, -2.126e-01, -1.795e-01, -4.296e-02, 5.985e-02, 3.581e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-5.627e-02, -8.705e-03, 5.648e-02, -3.912e-01, 2.405e-01, -2.065e-01, -3.226e-01, 9.332e-02, -6.739e-02, -4.597e-02, -2.970e-01, -1.247e-01, 2.173e-02, 1.499e-01, -9.986e-02, 2.900e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(8.569e-02, -1.165e-01, -1.196e-01, -6.819e-02, 1.175e-01, 6.390e-03, 1.187e-01, 1.234e-01, 3.018e-01, 2.667e-01, 5.095e-02, 2.235e-02, 2.798e-01, 7.398e-02, 8.845e-02, -1.423e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(3.272e-02, -2.814e-02, 3.178e-01, 8.191e-02, -8.987e-02, -2.244e-01, -3.232e-01, 3.552e-02, -2.673e-01, -8.766e-02, 1.061e-01, -1.138e-01, -3.388e-02, -2.159e-02, 7.541e-02, 1.508e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.094e-01, -1.390e-01, 5.358e-02, -7.128e-03, 3.057e-01, -1.950e-02, 9.014e-02, -2.548e-01, -1.294e-01, -4.843e-02, 2.222e-03, -4.148e-02, 1.762e-01, -1.052e-01, 7.624e-02, 6.400e-03), r5);\n\tr6 = MulAdd(s0_1_1, M4(-2.414e-01, -9.607e-02, -1.259e-01, -1.371e-01, 7.696e-02, 2.487e-01, 2.249e-01, -2.592e-01, -1.503e-01, -7.991e-02, 1.596e-01, -2.479e-01, -8.352e-02, 1.246e-01, -2.444e-02, -9.442e-03), r6);\n\tr7 = MulAdd(s0_1_1, M4(-1.537e-01, 5.955e-02, 1.129e-01, 2.935e-01, -9.297e-02, -1.750e-01, -3.264e-04, -7.119e-02, 9.341e-02, -1.918e-01, -3.296e-02, -2.573e-01, -1.078e-01, -1.372e-01, -5.703e-02, 1.573e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(6.792e-03, -7.335e-02, 1.263e-01, 5.314e-02, -4.417e-02, 3.796e-03, -5.599e-02, 6.276e-02, -8.330e-02, -4.504e-02, 1.939e-01, -6.908e-02, -1.442e-02, 6.378e-03, 5.021e-02, 6.549e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.400e-01, -1.904e-01, 1.111e-02, -3.205e-02, 3.401e-01, -1.192e-01, 1.000e-01, -1.951e-02, -2.799e-01, 8.185e-02, -2.748e-02, -4.541e-01, -2.303e-02, -9.604e-02, -1.008e-01, -1.870e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(8.981e-02, -7.484e-03, 5.769e-02, 3.152e-03, 1.501e-01, -1.894e-02, -5.980e-02, -1.072e-02, 1.403e-01, -7.221e-02, 1.757e-01, 1.284e-01, 5.307e-02, -1.145e-01, 6.637e-02, 4.609e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-4.861e-02, 7.297e-02, -3.678e-02, -4.759e-02, 3.604e-02, 3.731e-03, 1.379e-02, 1.341e-01, -2.711e-01, 2.226e-01, -4.935e-02, 3.964e-02, 4.731e-02, 5.844e-02, -6.201e-02, 1.001e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(-3.718e-02, -1.242e-01, -7.276e-02, 6.114e-02, -2.921e-02, -8.045e-02, 2.028e-02, 3.262e-02, -3.184e-01, -2.027e-01, -1.451e-01, 7.590e-02, -1.207e-01, -1.761e-01, 1.323e-02, -8.453e-03), r4);\n\tr5 = MulAdd(s0_1_2, M4(7.600e-02, 4.603e-02, -2.683e-02, -4.088e-02, -3.091e-02, 4.411e-02, 1.657e-02, 4.495e-02, 2.745e-01, 1.995e-01, -1.452e-01, -5.074e-02, 8.212e-02, 3.688e-02, 9.101e-02, 2.388e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(5.180e-02, 7.592e-02, 1.423e-01, -6.606e-02, -6.334e-02, -5.188e-02, -1.084e-01, 8.827e-03, 3.936e-01, 3.741e-01, 2.185e-01, -8.516e-02, 8.358e-02, 5.166e-02, -1.469e-01, 9.834e-03), r6);\n\tr7 = MulAdd(s0_1_2, M4(4.624e-02, -9.831e-02, 8.416e-02, 1.013e-01, -4.888e-02, 4.232e-02, 1.239e-02, 4.393e-03, -9.320e-02, -1.440e-01, -3.090e-02, -9.434e-02, -1.947e-01, 6.876e-02, -1.217e-01, -1.399e-01), r7);\n\tr0 = MulAdd(s0_2_0, M4(-4.913e-02, -1.329e-01, 1.120e-01, -2.365e-02, -1.605e-02, -8.900e-02, 6.858e-02, -1.590e-02, 1.325e-01, 3.838e-02, -9.410e-03, 2.597e-02, -4.930e-02, -4.325e-02, 3.890e-02, 1.253e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-6.926e-02, 3.712e-02, -5.088e-01, 4.839e-02, 2.619e-02, -5.802e-03, -1.956e-01, 1.096e-01, -7.536e-02, 8.625e-03, 6.509e-02, -4.045e-02, 5.301e-03, -1.253e-02, -9.241e-03, 5.086e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-8.245e-02, -2.724e-01, -4.015e-02, -1.921e-01, -5.539e-02, -2.046e-01, -2.534e-02, -6.963e-02, 8.195e-02, 9.496e-02, 2.970e-02, -1.229e-02, 1.079e-01, -1.938e-02, -1.420e-03, -3.727e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-1.096e-01, 6.024e-02, 5.075e-02, 8.269e-02, -4.233e-02, 2.122e-02, 4.395e-02, 1.637e-02, 1.109e-02, -2.905e-02, -2.165e-02, -4.529e-02, -3.265e-02, -3.527e-02, 5.198e-02, 3.968e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-1.172e-01, -1.761e-02, -1.372e-01, -1.615e-01, -6.219e-02, 3.861e-02, -1.448e-01, 4.695e-02, 2.494e-01, 9.708e-02, 1.829e-01, 8.122e-02, 1.422e-02, -3.195e-03, 3.350e-02, -1.015e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(2.072e-01, 3.192e-01, 1.309e-01, 4.050e-01, 1.361e-01, 1.606e-01, 6.240e-02, 3.527e-01, -3.122e-02, -6.766e-02, -1.973e-02, -9.936e-02, -6.496e-02, 7.316e-02, -8.033e-02, -1.417e-01), r5);\n\tr6 = MulAdd(s0_2_0, M4(3.349e-01, 1.057e-01, 1.772e-01, 5.101e-02, 1.880e-01, 5.177e-02, 1.895e-01, 3.918e-02, -1.505e-01, -4.108e-02, -8.184e-02, -5.552e-02, 2.277e-02, 3.866e-03, -3.599e-02, 2.005e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-2.630e-02, -1.170e-01, -4.053e-03, -7.471e-02, -4.548e-02, -1.512e-01, -2.401e-02, -3.225e-02, -3.234e-03, 1.185e-01, -7.683e-03, 6.485e-02, 2.144e-02, 7.090e-02, 8.710e-02, -2.800e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-1.756e-01, 9.608e-02, -1.034e-01, 1.609e-03, 1.061e-01, 1.638e-01, -1.363e-01, -6.902e-02, 2.914e-01, 3.228e-02, 1.080e-01, 5.062e-03, 9.886e-03, 7.123e-02, 3.683e-02, -5.412e-03), r0);\n\tr1 = MulAdd(s0_2_1, M4(3.357e-01, -1.137e-01, -2.408e-01, 4.966e-01, 2.287e-01, 4.829e-02, -4.273e-02, 2.475e-01, -7.165e-02, -5.393e-02, 3.528e-02, -2.860e-01, -1.507e-04, 1.730e-01, 1.577e-01, -8.658e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.052e-01, 1.708e-01, -9.525e-03, -5.733e-02, -1.252e-01, 2.026e-01, 3.876e-02, 9.282e-02, 7.215e-02, 2.287e-02, -2.882e-02, 2.480e-02, 6.022e-02, 6.965e-02, 8.813e-03, -3.763e-03), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.601e-03, -6.330e-04, 4.665e-02, -1.740e-02, -2.755e-03, 4.982e-02, -1.269e-01, -2.504e-02, -1.080e-01, -9.446e-02, 4.744e-02, -1.812e-01, 3.624e-02, 2.818e-02, -3.262e-02, 6.700e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(8.076e-02, 7.286e-02, -2.545e-02, -3.825e-02, 1.264e-01, 1.738e-01, 2.126e-02, 1.923e-02, 4.258e-01, 1.304e-01, 2.181e-01, 5.302e-02, 5.823e-02, 5.333e-02, 4.980e-02, -1.475e-01), r4);\n\tr5 = MulAdd(s0_2_1, M4(-1.286e-01, 2.066e-02, 7.727e-02, 1.609e-01, -1.580e-01, -1.058e-01, 3.294e-02, -6.596e-02, 1.110e-01, 6.870e-02, 1.244e-01, 5.798e-02, -4.134e-02, -1.179e-01, -1.034e-01, -1.879e-01), r5);\n\tr6 = MulAdd(s0_2_1, M4(-8.288e-02, -9.983e-02, -1.455e-01, 1.430e-01, -1.140e-01, -8.414e-02, -9.874e-02, 1.160e-01, 2.311e-02, 1.351e-01, 3.899e-02, -1.009e-01, -1.131e-01, -2.298e-02, -6.981e-02, -2.261e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(3.020e-01, 2.978e-01, 6.242e-02, 1.583e-01, 2.341e-01, 1.211e-01, 9.470e-03, 1.891e-01, 2.073e-02, 5.970e-02, 2.519e-02, 4.949e-02, -3.925e-03, 1.397e-02, 3.103e-02, 6.164e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-5.460e-02, -5.033e-02, -3.799e-02, 1.055e-01, -5.824e-02, 4.091e-03, -6.291e-02, 7.308e-02, 1.825e-01, 2.980e-02, -1.523e-02, 3.379e-03, 6.145e-03, -8.065e-02, 1.772e-01, -5.773e-04), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.026e-01, -5.307e-03, 1.757e-01, 1.767e-01, -6.213e-02, 4.640e-03, 1.432e-01, -5.489e-02, 4.284e-03, -4.442e-02, 1.895e-02, -1.052e-01, -4.019e-02, 7.342e-02, 6.335e-02, -1.323e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(-3.191e-02, 7.614e-02, 6.004e-02, -1.532e-02, -9.871e-02, -8.325e-02, -5.134e-03, 9.183e-02, 1.082e-01, -3.942e-02, 5.952e-02, -5.681e-02, 1.233e-01, -7.441e-02, -4.704e-02, 3.026e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(3.891e-02, -2.326e-02, 1.109e-02, 8.567e-03, 1.405e-02, 1.971e-02, 9.325e-02, 1.423e-02, -7.059e-02, -1.738e-01, -3.299e-02, -9.649e-02, -2.022e-02, 5.564e-02, 3.750e-02, 2.950e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(1.104e-01, 9.643e-02, 4.782e-02, -2.930e-02, -7.643e-02, -7.139e-03, 4.190e-02, 4.823e-02, 2.753e-01, 1.309e-01, -8.976e-03, -6.050e-02, -3.656e-02, -1.486e-01, -1.484e-03, -8.554e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-1.508e-02, -5.635e-02, -5.468e-02, 2.569e-02, 4.578e-02, -4.161e-02, -6.547e-02, 2.057e-02, 8.898e-02, 6.084e-02, -1.530e-02, -1.329e-02, 6.926e-04, 7.874e-02, 4.884e-02, -6.882e-03), r5);\n\tr6 = MulAdd(s0_2_2, M4(-1.122e-01, 7.189e-03, -2.141e-01, 5.510e-02, -7.320e-03, 4.208e-02, -1.570e-02, 3.645e-03, 1.008e-01, 7.891e-02, -1.173e-01, -9.103e-02, 5.898e-02, 9.176e-03, -3.601e-02, -7.743e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-1.013e-02, 1.534e-01, 8.025e-02, 5.653e-02, -1.436e-01, 5.917e-02, -1.054e-01, 1.064e-02, 1.641e-02, 1.281e-01, -2.123e-02, -3.983e-02, -8.158e-02, -9.917e-03, 8.927e-02, 2.493e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-2.225e-01, 2.000e-01, -9.251e-01, 9.578e-01, -5.046e-02, -4.435e-02, -5.362e-03, 7.593e-02, -1.508e-02, -2.830e-02, -6.948e-02, 9.258e-02, 5.983e-02, 4.886e-02, 1.415e-02, -2.548e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-2.001e-01, -1.429e+00, -1.977e-01, 2.374e-01, -1.247e-01, -3.364e-02, 7.388e-02, -9.291e-03, 4.711e-02, -8.950e-02, -1.036e-01, 7.692e-03, -1.042e-01, -2.890e-02, 1.440e-01, -8.765e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(4.208e-02, -7.000e-02, 3.704e-02, -1.506e-02, 1.430e-01, 1.894e-02, -7.691e-03, 7.285e-02, 1.674e-01, -1.972e-03, -9.383e-03, 7.559e-02, 3.826e-02, 1.445e-02, -1.295e-02, -6.481e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-1.258e-01, -9.150e-02, 9.492e-01, 7.258e-01, -1.842e-02, -1.055e-03, -4.601e-02, -2.000e-03, -2.822e-02, -3.992e-02, 8.987e-02, 2.890e-02, -1.504e-02, 7.215e-03, -3.952e-02, -1.892e-03), r3);\n\tr4 = MulAdd(s1_0_0, M4(-1.948e-01, -1.570e-01, -7.398e-01, -2.212e-01, 1.867e-02, 3.906e-02, -4.356e-03, -5.070e-02, 3.967e-03, 9.930e-03, 5.924e-02, 4.430e-03, 3.713e-03, -6.231e-03, 3.201e-02, -5.318e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-7.003e-02, 1.058e-02, -1.297e-02, -1.094e-01, -2.787e-02, 1.043e-01, -7.909e-02, 7.981e-03, -5.667e-03, 6.811e-02, -1.701e-02, 2.092e-02, -3.895e-02, 6.269e-02, 3.259e-02, 2.701e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-1.711e-01, 4.105e-01, -3.046e-02, 8.002e-01, 1.241e-02, -2.590e-03, 8.218e-03, 4.752e-02, 2.063e-02, -5.203e-02, 2.490e-02, 7.145e-02, 4.298e-02, -1.145e-02, -4.750e-03, -4.259e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-1.971e-01, 1.347e-01, -2.428e-01, 5.080e-01, 7.933e-03, 5.705e-02, 3.837e-02, -2.831e-03, 1.173e-02, 1.473e-02, 1.478e-02, -2.049e-02, -2.309e-02, -1.498e-03, 1.052e-02, -4.867e-03), r7);\n\tr0 = MulAdd(s1_0_1, M4(1.484e-01, 7.472e-02, -1.077e+00, 8.442e-01, -3.988e-02, 2.098e-02, 2.463e-02, -4.384e-03, -9.435e-03, 3.549e-02, -4.891e-02, -5.362e-02, 1.393e-03, 5.487e-03, 6.113e-03, -5.487e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.105e-01, -4.071e-01, 1.361e-01, 7.464e-01, -1.981e-01, 6.394e-02, -1.451e-02, -6.697e-03, 9.303e-02, 7.021e-02, -2.253e-02, -6.321e-02, -7.608e-01, 2.971e-02, 1.901e-02, 3.300e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(-1.047e+00, -2.080e-01, -2.668e-01, 2.549e-01, 5.805e-03, -4.917e-02, 2.713e-03, 1.360e-01, -2.182e-01, 6.067e-02, 4.482e-02, -3.062e-02, 7.321e-03, -1.602e-02, 1.317e-02, 5.359e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-1.481e-01, -5.586e-01, -9.283e-01, 7.247e-01, 1.234e-02, -3.944e-03, 1.347e-03, -2.980e-02, 6.423e-02, 1.652e-02, 8.099e-02, 9.946e-03, 4.415e-03, 8.994e-03, -1.219e-02, -1.012e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-5.054e-02, 4.612e-01, -9.070e-01, -1.021e-01, 1.636e-02, -3.714e-05, 3.393e-02, 5.088e-02, 2.508e-02, -5.296e-02, 8.545e-02, 5.726e-02, -1.171e-02, 3.951e-02, -1.221e-02, -2.104e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-7.129e-02, -1.199e+00, -6.014e-01, 4.420e-02, -1.634e-02, 1.058e-01, 1.252e-02, 5.266e-02, 5.744e-02, 5.717e-02, -4.544e-02, 2.334e-02, 7.673e-03, -2.428e-02, 3.208e-02, -2.734e-03), r5);\n\tr6 = MulAdd(s1_0_1, M4(1.241e-01, 8.994e-02, -2.950e-01, 6.682e-02, 8.832e-02, -4.237e-02, 3.735e-02, 1.011e-01, 6.034e-03, -5.205e-02, 3.553e-02, 1.566e-02, 2.863e-03, -4.466e-02, -6.422e-02, -1.051e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-5.746e-01, 3.825e-01, 4.377e-01, -2.784e-01, 9.936e-02, 1.054e-02, 1.160e-02, -2.191e-02, 5.041e-02, -4.556e-02, -1.263e-02, -4.314e-02, -3.479e-02, -6.165e-02, -4.737e-02, 3.285e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(-7.158e-01, -3.113e-01, -6.581e-02, 4.249e-01, 3.268e-02, 4.029e-03, -5.600e-04, -6.791e-02, -1.095e-02, 2.253e-02, -1.209e-01, 6.353e-03, -1.275e-02, 5.546e-03, 2.686e-02, 1.301e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-7.008e-01, 4.633e-01, 3.700e-01, 1.652e-01, -1.427e-01, 3.317e-03, 1.032e-03, -1.821e-02, -3.295e-01, 8.863e-02, -6.301e-02, 3.428e-02, 4.033e-01, -3.580e-02, 3.824e-02, -2.014e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(8.244e-01, -2.880e-03, 1.262e-01, 5.185e-01, 6.974e-02, -3.172e-02, 2.019e-02, -5.891e-02, 1.242e-01, 2.892e-02, -7.823e-03, -2.164e-04, -6.396e-02, 1.895e-02, -1.322e-03, 2.758e-03), r2);\n\tr3 = MulAdd(s1_0_2, M4(3.434e-02, 3.985e-02, 4.881e-01, 7.151e-02, 2.258e-03, -7.383e-03, -1.008e-01, 1.616e-02, -1.369e-02, -3.470e-02, -4.724e-02, -1.979e-02, -1.076e-02, 1.177e-02, -5.017e-03, 1.697e-04), r3);\n\tr4 = MulAdd(s1_0_2, M4(2.313e-02, -1.065e-01, 2.771e-01, 1.184e-01, 5.398e-03, 2.945e-02, -1.744e-02, -3.925e-02, 3.889e-02, 7.434e-02, 3.246e-02, -8.069e-02, 1.308e-03, -2.303e-03, -1.045e-02, 2.198e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-1.161e-01, 4.764e-01, -3.468e-01, 2.204e-01, -1.514e-03, 2.776e-02, -5.555e-02, 8.265e-04, -1.341e-02, 5.107e-02, -1.156e-02, -3.378e-03, -2.351e-02, 4.409e-02, -5.119e-02, 8.841e-03), r5);\n\tr6 = MulAdd(s1_0_2, M4(2.347e-01, -5.286e-01, -2.735e-01, 1.311e-01, 2.497e-02, -4.403e-02, 9.494e-03, -1.185e-02, 1.673e-02, -2.807e-02, -1.062e-01, 1.587e-02, -6.929e-03, 1.417e-02, 2.268e-02, -1.064e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(1.659e-03, 3.633e-01, -1.080e+00, -2.449e-01, -2.406e-02, 3.675e-02, -1.045e-02, -2.408e-02, 9.330e-02, -2.138e-03, -1.102e-01, 4.404e-04, -1.424e-02, 4.633e-02, -1.887e-02, 4.702e-03), r7);\n\tr0 = MulAdd(s1_1_0, M4(5.165e-01, -3.488e-01, 3.986e-02, 4.293e-02, -2.819e-02, 3.564e-03, 4.099e-02, -1.023e-01, 9.591e-02, -2.512e-02, -1.740e-01, -2.521e-01, -2.648e-02, -8.121e-02, -5.201e-02, -5.604e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-3.757e-02, -1.007e-03, -2.344e-01, -1.772e-01, 3.333e-01, 1.824e-02, -5.614e-02, 4.638e-02, 3.682e-02, 1.347e-01, 3.312e-01, -4.256e-02, 7.251e-02, 5.215e-02, -2.525e-01, 4.145e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(4.328e-02, 1.841e-01, 7.925e-05, -2.572e-01, -6.948e-02, -1.582e-02, -4.934e-03, 6.336e-03, 9.148e-02, 5.044e-02, 2.730e-02, -3.161e-02, -1.607e-01, -5.456e-02, -3.072e-02, -1.190e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(5.160e-02, -1.555e-01, -4.676e-02, -1.660e-01, 2.753e-03, 1.582e-02, 5.555e-02, -5.779e-02, 6.343e-02, -2.634e-02, -1.970e-01, 5.906e-02, -5.885e-02, 1.145e-02, 4.228e-02, -6.318e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(9.579e-01, -1.630e-01, 5.342e-01, -3.943e-02, -1.402e-02, -2.053e-02, 5.963e-02, 2.249e-01, -2.190e-02, -1.042e-01, 9.899e-02, -3.279e-02, -9.028e-03, 5.163e-02, 8.219e-02, -2.251e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.764e-01, -1.573e-01, -4.711e-02, -9.054e-02, 2.347e-02, 6.460e-02, -8.875e-02, 6.113e-02, 5.977e-02, 9.766e-02, 3.526e-02, -6.576e-03, -2.559e-02, 3.290e-02, 7.301e-02, 1.676e-03), r5);\n\tr6 = MulAdd(s1_1_0, M4(-5.957e-01, -2.497e-01, -1.685e-01, -1.801e-01, -1.193e-02, 4.038e-02, 4.249e-02, -1.086e-02, 6.821e-03, 4.988e-02, 6.445e-02, -1.838e-02, -4.049e-02, -1.802e-01, -4.814e-02, 1.967e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(-3.674e-02, 1.377e-01, 1.186e-01, -7.761e-03, 3.520e-02, -3.586e-02, 4.516e-03, 2.876e-02, 1.958e-02, -3.201e-02, -2.051e-02, 2.082e-02, 5.840e-02, 5.667e-02, 4.181e-02, 7.959e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(2.877e-01, 9.117e-02, 5.600e-02, 3.718e-01, 1.110e-01, 7.118e-02, 1.562e-01, -3.529e-02, 1.774e-01, -1.636e-01, -1.407e-01, -5.875e-02, 2.196e-02, -4.177e-02, -4.022e-02, -7.927e-03), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.492e-01, 2.952e-01, 3.317e-01, -6.491e-01, 3.215e-01, 1.070e-01, 3.289e-01, 8.798e-02, -6.031e-02, -8.699e-02, 1.094e-01, 6.841e-02, 3.021e-02, -1.055e-02, -3.374e-01, -9.265e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(2.902e-01, -2.194e-01, -1.431e-02, -2.756e-02, 2.948e-01, 2.407e-01, 1.907e-02, -8.624e-02, 3.818e-01, 9.449e-02, 7.327e-02, -1.122e-01, -9.734e-02, 1.228e-01, 3.143e-02, -1.726e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-3.251e-01, -3.092e-01, -3.271e-02, -2.027e-01, -2.847e-02, 8.087e-02, -9.727e-02, 3.343e-03, 1.261e-01, -5.150e-02, -4.737e-02, -4.321e-02, 5.170e-02, -2.625e-02, -3.371e-02, 2.407e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(5.366e-01, 7.439e-01, 7.903e-02, -4.865e-02, 2.838e-02, -5.443e-02, 1.061e-01, 2.371e-01, 6.420e-02, -1.198e-01, 4.461e-02, -4.340e-02, -1.333e-02, 2.236e-02, -6.077e-02, -7.071e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(3.449e-01, 1.518e-01, 1.429e-01, 1.430e-01, 4.594e-03, 1.078e-01, 3.097e-02, -1.627e-02, 1.274e-01, -4.365e-03, 6.847e-02, 7.898e-02, 6.386e-02, -7.959e-02, 9.597e-02, 2.368e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(4.251e-01, 2.797e-01, 3.498e-02, -1.738e-01, -3.589e-02, 7.895e-02, -4.857e-02, -4.422e-02, 7.688e-03, 5.955e-02, -1.881e-02, -1.008e-01, -1.310e-02, -1.884e-03, -5.115e-01, 3.795e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(1.086e-01, 6.010e-02, -1.259e-01, 7.360e-02, 5.721e-02, -1.194e-01, 1.616e-01, 4.763e-02, 2.897e-01, -1.313e-01, 4.509e-02, -2.906e-02, 7.813e-02, -3.947e-02, -4.984e-02, -2.110e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(1.013e-01, 3.701e-01, -6.921e-02, -3.558e-01, -6.022e-02, -2.898e-02, -4.015e-02, -3.187e-02, -1.914e-02, -5.736e-02, -6.972e-02, -3.226e-02, -4.006e-03, -1.466e-03, -9.459e-03, 2.058e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(1.158e-01, -2.638e-01, -5.747e-03, -1.728e-02, 3.001e-01, -1.374e-01, 2.508e-02, -2.647e-02, 1.271e-01, -2.835e-02, -1.173e-01, 5.340e-02, 8.825e-02, 1.547e-01, -1.429e-01, -1.382e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(3.917e-02, 6.543e-02, 7.405e-02, 8.346e-02, 2.832e-01, -6.429e-02, 1.474e-03, -1.345e-01, 2.647e-01, 1.702e-02, 1.453e-02, -9.008e-02, -9.232e-02, 2.807e-02, 1.262e-02, -1.299e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.096e-01, 2.449e-02, 6.089e-02, -1.225e-01, -6.291e-03, 2.599e-02, -1.048e-02, -6.665e-03, -2.943e-02, -4.377e-02, -5.803e-03, -7.150e-02, -3.142e-03, 3.763e-02, -1.779e-02, -3.451e-03), r3);\n\tr4 = MulAdd(s1_1_2, M4(9.335e-02, 1.597e-01, -1.770e-02, -7.280e-02, -1.091e-02, -8.288e-02, 1.615e-02, 4.501e-02, 3.921e-02, 4.289e-02, 8.263e-02, -4.314e-02, 4.162e-03, -1.360e-01, -1.158e-02, 5.851e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(6.417e-02, 1.464e-01, -2.294e-02, -6.143e-02, 1.577e-02, 1.081e-01, -6.157e-02, -2.203e-02, -3.880e-02, 1.098e-01, 1.346e-02, 5.105e-03, 2.968e-03, -4.569e-03, -8.478e-02, 1.241e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(1.553e-01, 1.220e-01, -1.393e-01, -2.318e-02, -2.029e-02, -6.256e-02, 1.507e-02, -6.566e-02, 1.678e-02, 2.674e-02, -8.762e-02, 7.030e-03, -2.694e-03, -5.213e-02, -1.065e-02, -2.818e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(1.258e-01, 3.815e-01, 8.325e-02, 1.225e-01, -7.965e-03, -6.562e-02, 9.158e-02, 1.077e-01, 1.664e-02, -8.347e-03, -7.391e-02, -1.152e-01, -8.078e-02, 3.168e-02, 2.490e-03, 6.176e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(1.938e-02, 4.383e-02, -1.682e-02, -1.908e-01, 4.402e-02, -1.568e-02, -1.034e-01, 6.780e-02, 3.077e-02, 1.518e-01, -4.242e-02, 2.756e-01, -3.962e-02, 3.457e-02, -5.494e-02, -1.622e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(-3.671e-02, -5.359e-02, 1.716e-01, -1.382e-01, 2.047e-01, 2.900e-01, 5.934e-03, 1.057e-01, -1.226e-01, 3.550e-02, -3.845e-01, -8.013e-02, 2.135e-02, 8.241e-02, -2.811e-01, -1.899e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.117e-02, 1.594e-01, -6.135e-03, 1.682e-01, 2.203e-01, -3.381e-02, 1.144e-03, 8.590e-02, 2.074e-01, 7.607e-03, 3.585e-02, -1.032e-01, -3.579e-03, 8.840e-02, -1.806e-02, -1.196e-01), r2);\n\tr3 = MulAdd(s1_2_0, M4(2.190e-02, 5.155e-02, -7.349e-02, -4.745e-02, 3.092e-02, -7.536e-02, 2.973e-02, 6.587e-02, 7.353e-02, 1.616e-02, 2.800e-02, 3.417e-02, -6.278e-02, -4.721e-03, 6.332e-02, -8.829e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-2.448e-03, 2.713e-02, 2.586e-02, 1.095e-01, -5.408e-02, -1.876e-02, -9.046e-02, -4.615e-02, -3.490e-02, 6.995e-03, 1.071e-01, -9.038e-02, 9.883e-02, 2.611e-02, 2.048e-01, 1.325e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(3.331e-02, -6.127e-02, 4.555e-02, 4.188e-02, -2.753e-02, 4.139e-02, -1.471e-02, -6.254e-03, 9.357e-02, 2.616e-02, -2.195e-03, 9.171e-02, -2.888e-02, -1.696e-01, 1.437e-01, -1.554e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-3.624e-02, -7.823e-02, 5.207e-02, 2.008e-02, 1.240e-01, -6.489e-02, 2.547e-02, -1.063e-01, 1.199e-02, -3.584e-02, 6.549e-03, 8.725e-03, -1.380e-02, -1.987e-01, -6.188e-02, 4.365e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(2.885e-02, -7.486e-02, -3.979e-02, -1.043e-02, -4.017e-02, -1.958e-03, -1.797e-01, -9.543e-02, -2.217e-02, 4.189e-02, -7.774e-02, -9.110e-02, 1.445e-01, 5.406e-02, -1.047e-01, 2.395e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(3.589e-02, -5.318e-02, -3.301e-02, 1.639e-02, 9.661e-04, 5.863e-02, -1.139e-02, 1.613e-02, 8.384e-02, -2.851e-01, -3.674e-02, 1.709e-02, 2.548e-02, -1.063e-02, 3.791e-02, 2.711e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(2.233e-02, 1.265e-02, -7.291e-02, -9.728e-03, -2.311e-01, 1.555e-01, 2.603e-01, 2.433e-01, -3.113e-01, 1.571e-01, 1.982e-02, 2.345e-02, 1.482e-01, 3.787e-02, 1.879e-01, 7.235e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.101e-01, -1.248e-01, 3.964e-02, -9.400e-02, -3.077e-01, -3.219e-01, 1.740e-02, 1.265e-01, -1.083e-01, -1.755e-01, 3.848e-02, -2.192e-01, -1.055e-01, -8.726e-02, 3.800e-02, 1.329e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(1.714e-02, -1.063e-02, 1.140e-02, 5.826e-02, 8.290e-02, 9.846e-03, 3.525e-02, 1.239e-01, 3.433e-03, 2.173e-01, -2.689e-01, -1.238e-01, 8.889e-02, 3.160e-02, 1.137e-01, 5.029e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(5.360e-02, 9.693e-02, -5.618e-02, -1.139e-01, -1.041e-01, 8.422e-02, -2.001e-02, -1.070e-01, 7.531e-02, -7.183e-02, 2.323e-01, 3.700e-03, -8.716e-02, 3.802e-02, -3.601e-03, -1.390e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(3.305e-02, 2.301e-02, 1.394e-02, -3.814e-02, 1.814e-02, 1.363e-01, -2.211e-02, 3.506e-02, -5.634e-04, 2.299e-01, 2.004e-02, 4.460e-02, 8.779e-02, -7.851e-02, -4.460e-02, 3.806e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-2.052e-02, 3.143e-02, -4.434e-02, -7.718e-02, 6.945e-02, 2.200e-02, 1.339e-01, -5.978e-03, 4.874e-02, -1.446e-02, 3.414e-02, 2.413e-02, 7.851e-03, 5.324e-02, -1.028e-01, -3.547e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-9.757e-02, 5.846e-02, 2.096e-02, -3.917e-02, -2.219e-01, -1.059e-02, -1.554e-01, 3.795e-02, 8.076e-02, 7.668e-03, -1.342e-01, 1.020e-01, -2.114e-01, 4.876e-02, -3.302e-02, 2.679e-05), r7);\n\tr0 = MulAdd(s1_2_2, M4(3.233e-02, 1.223e-02, -8.207e-03, 1.153e-01, -1.692e-02, 8.109e-02, -2.238e-02, 1.041e-01, -3.599e-02, 4.858e-02, -5.039e-02, -1.095e-01, 3.965e-03, 9.750e-02, 1.384e-02, -1.769e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.120e-01, -3.865e-02, -8.848e-02, 5.348e-02, 5.747e-02, 4.376e-02, 1.268e-01, 6.795e-02, 5.032e-02, 4.625e-02, -2.623e-01, -5.918e-02, -2.355e-02, -3.195e-02, -6.141e-02, -7.004e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(7.568e-02, 1.600e-02, -1.495e-02, -9.895e-02, 2.014e-01, 7.351e-02, 6.510e-03, -4.199e-02, 4.292e-02, 1.111e-01, -2.555e-02, -3.554e-02, 3.209e-02, 6.205e-02, 9.381e-04, -1.403e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-3.743e-02, -5.097e-02, -2.871e-04, -4.818e-02, 9.785e-03, -2.833e-03, -1.836e-03, 2.827e-02, -3.058e-02, 3.767e-02, 9.183e-03, -1.082e-01, -3.216e-03, 1.382e-02, -5.178e-02, 3.470e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-3.260e-03, -8.117e-02, 3.621e-02, 4.480e-03, 1.130e-02, 1.382e-01, -1.731e-02, -2.408e-02, 4.376e-02, 3.516e-02, 5.981e-02, -4.351e-02, 2.410e-02, 3.062e-02, 2.240e-02, 7.331e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-5.713e-02, 5.158e-02, -5.065e-02, 1.244e-03, -4.706e-02, -7.084e-03, -7.490e-02, 3.041e-03, -3.868e-02, 6.435e-02, -5.191e-02, 3.046e-02, -3.478e-02, -1.406e-02, 1.089e-03, 1.629e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(3.665e-02, 6.662e-02, 3.955e-02, 3.413e-02, -5.139e-02, -3.569e-02, -1.590e-02, -5.071e-02, 6.038e-02, -1.019e-02, 8.577e-02, 4.779e-02, 1.925e-03, 5.608e-04, 4.871e-02, 1.957e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(5.845e-02, -1.251e-03, -5.048e-02, 3.643e-02, -3.810e-02, 7.466e-02, 3.752e-02, 2.683e-02, 2.062e-01, -2.257e-02, -1.115e-03, 4.516e-03, -3.383e-02, 5.142e-02, -7.149e-02, 4.960e-04), r7);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-3.131e-01, 4.106e-01, -6.879e-02, 4.973e-01, -1.645e-01, -1.165e-01, -2.697e-02, -8.123e-03, -2.029e-02, -5.793e-03, -3.516e-02, -9.976e-02, 1.973e-01, 8.039e-02, 3.009e-01, -1.980e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(6.893e-02, -6.242e-01, -8.001e-02, 3.079e-01, 1.342e-01, 3.825e-02, -2.310e-01, 3.128e-02, 1.233e-01, 3.153e-02, 3.186e-02, 4.406e-05, -3.381e-01, 4.914e-02, 1.362e-01, 3.850e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.482e+00, -5.313e-01, -7.345e-02, -7.882e-01, 7.253e-02, 3.858e-02, 2.572e-03, 1.056e-01, 8.920e-03, 4.206e-02, -7.322e-03, -1.843e-02, 8.553e-01, -3.339e-01, 5.833e-02, -3.434e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(-6.079e-02, 3.031e-02, 4.915e-01, -1.832e-01, 1.433e-02, -2.203e-02, -1.158e-02, -1.143e-02, -2.542e-02, -1.429e-02, -1.436e-02, 1.602e-02, 2.156e-01, 1.427e-04, -2.516e-01, 9.271e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(2.494e-01, 2.727e-01, -1.161e-01, -2.558e-01, 1.732e-02, 3.728e-02, 6.456e-02, -4.094e-02, 1.949e-02, -1.158e-05, 5.618e-02, 1.233e-01, -1.975e-01, -3.843e-01, 2.985e-01, 5.139e-01), r4);\n\tr5 = MulAdd(s0_0_0, M4(3.220e-02, -1.943e-01, -3.974e-01, 2.535e-01, 1.805e-03, 1.287e-02, 4.504e-03, 3.577e-02, 7.589e-03, 3.503e-02, 5.225e-03, 3.480e-02, -2.142e-02, 3.806e-01, 3.807e-01, 1.945e-01), r5);\n\tr6 = MulAdd(s0_0_0, M4(1.455e-03, -1.665e-01, 4.583e-02, 2.382e-01, -1.102e-02, 1.279e-02, 5.941e-02, 8.034e-02, -2.862e-05, -2.709e-03, -2.212e-02, 3.138e-02, 3.826e-02, 4.237e-01, -1.826e-01, -5.047e-01), r6);\n\tr7 = MulAdd(s0_0_0, M4(1.027e-01, -3.107e-02, 3.083e-01, 1.806e-01, 3.564e-02, -2.106e-02, 4.501e-02, -3.876e-02, 4.383e-02, 1.872e-02, -4.395e-02, -1.363e-02, -2.433e-01, 1.505e-01, 2.058e-01, -1.544e-01), r7);\n\tr0 = MulAdd(s0_0_1, M4(-6.023e-02, -1.096e+00, 7.193e-03, -3.373e-01, 2.217e-02, 4.241e-02, 3.655e-02, 7.433e-02, 8.648e-02, -9.150e-03, 3.827e-02, 4.116e-02, -5.782e-02, -4.670e-02, 3.374e-01, -1.343e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.005e+00, 6.467e-02, -8.169e-01, -5.626e-01, -6.590e-01, -2.353e-01, 8.536e-02, 1.061e-01, -4.235e-01, -9.342e-02, 6.807e-02, 7.317e-02, -3.583e-01, 3.156e-01, 2.928e-01, 3.628e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(-1.586e-01, -2.103e-01, 1.027e-01, -4.411e-01, -1.179e-01, 5.777e-02, 3.737e-02, -3.068e-02, -6.619e-02, 5.889e-02, 1.010e-02, -1.932e-01, -1.204e-01, -3.494e-01, -3.067e-02, 4.014e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-1.467e-01, -2.731e-02, 4.255e-01, 5.026e-01, 7.960e-02, -9.728e-03, -2.021e-02, 3.609e-02, 2.879e-02, 6.887e-03, 2.096e-02, 6.796e-03, -1.129e-01, 2.527e-01, -6.231e-02, -1.204e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.591e-01, -2.724e-01, 3.563e-01, 3.214e-01, 5.182e-02, 4.759e-02, -3.638e-02, 7.936e-02, -1.352e-02, 1.322e-02, 3.960e-02, 1.667e-01, 2.939e-02, -1.095e-02, 6.383e-02, -1.200e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-1.107e-01, 8.356e-01, 1.837e-01, 8.593e-02, 1.597e-02, -6.660e-02, 2.423e-02, 5.897e-02, 1.699e-02, -1.703e-02, 9.641e-02, 5.761e-03, -8.732e-02, 1.607e-01, -1.370e-01, -2.271e-03), r5);\n\tr6 = MulAdd(s0_0_1, M4(6.709e-02, -2.590e-01, -2.202e-01, -8.641e-02, -4.665e-02, 9.649e-02, 1.439e-01, 5.666e-02, 4.549e-02, -6.070e-02, 2.927e-02, 6.062e-02, 3.644e-02, 1.351e-01, -4.018e-02, -8.040e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(3.824e-01, 2.488e-02, -1.700e-01, -4.045e-01, 4.602e-02, -4.895e-02, 1.550e-02, -1.069e-01, 4.597e-02, 3.226e-03, 9.510e-03, -1.430e-02, -1.287e-01, 2.861e-01, 2.146e-01, 4.121e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(2.856e-01, 3.269e-01, -4.493e-02, -3.621e-01, -6.964e-02, -1.256e-01, -3.462e-02, 1.736e-03, 4.179e-02, 1.214e-02, 5.544e-02, 5.531e-02, -6.674e-02, 1.402e-02, -1.180e-02, 2.383e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.387e-01, -4.823e-01, -3.227e+00, -4.600e-01, 6.401e-02, -1.101e-01, 1.677e-01, 4.017e-02, -2.845e-01, 8.412e-02, 1.044e-01, 6.661e-02, -2.230e-01, -3.553e-02, -2.141e-01, -8.382e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-2.447e-01, 3.627e-01, 1.306e-03, -3.381e-01, 7.838e-02, -6.718e-02, 1.138e-02, 4.442e-02, 1.420e-02, -2.216e-02, 1.579e-02, 1.653e-02, 1.318e-02, 4.633e-02, -7.994e-03, -1.056e-01), r2);\n\tr3 = MulAdd(s0_0_2, M4(-2.765e-02, 1.722e-01, -2.163e-01, -3.706e-01, 8.824e-03, -3.747e-02, 1.059e-01, -1.082e-02, 3.406e-02, 2.213e-02, -2.105e-04, 1.492e-02, -3.305e-02, 1.446e-02, 6.080e-02, -3.854e-03), r3);\n\tr4 = MulAdd(s0_0_2, M4(2.685e-01, 3.989e-01, 2.964e-02, -4.705e-01, -1.762e-03, 2.284e-02, -2.664e-03, 4.562e-02, 1.123e-02, -5.830e-02, 1.650e-02, 8.761e-02, -1.089e-02, -4.924e-02, 1.364e-02, 2.172e-01), r4);\n\tr5 = MulAdd(s0_0_2, M4(6.269e-02, -2.345e-01, -7.609e-01, 2.600e-02, 5.866e-03, -1.084e-02, -1.754e-02, 2.008e-03, 2.714e-02, 4.646e-03, -4.452e-02, 2.946e-02, -3.978e-03, 2.720e-02, -4.368e-02, -4.153e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(-1.603e-01, -3.499e-01, -4.341e-02, -1.606e-02, -1.834e-02, 1.055e-03, 4.452e-02, 5.569e-02, 4.524e-02, 2.081e-02, -6.482e-02, -6.753e-02, -1.560e-02, 1.003e-01, 5.608e-02, 1.514e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(4.294e-02, -1.865e-01, 1.291e-01, 1.917e-02, -1.652e-02, -1.437e-02, -6.853e-02, -1.528e-02, 6.402e-02, 2.632e-02, -3.566e-02, 2.670e-02, 4.288e-02, -6.076e-02, 1.159e-02, 4.830e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-8.575e-02, 2.150e-01, 1.237e-01, -2.619e-01, 8.207e-03, -6.335e-02, 6.677e-03, -1.185e-01, -3.872e-03, 2.200e-02, 2.521e-02, -1.788e-01, 1.633e-01, 2.127e-01, 7.766e-02, -1.427e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-6.607e-01, -1.341e-01, 1.476e-01, 1.532e-01, 2.182e-01, 1.228e-01, 1.046e-01, -5.217e-03, 9.037e-03, -7.931e-02, 2.357e-01, 3.317e-02, 2.357e-01, -1.501e-01, -1.488e-01, 3.021e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.577e-02, -1.212e-01, 1.279e-02, 1.342e-01, 1.530e-02, 2.509e-02, 8.568e-03, 9.933e-02, -2.247e-02, 6.724e-02, 9.530e-03, 9.224e-02, -4.447e-01, -1.442e-01, 1.714e-02, 3.711e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.564e-02, 1.273e-01, 1.807e-01, -1.952e-02, 2.625e-02, 2.235e-04, 2.375e-04, -1.062e-01, 1.046e-02, -2.849e-02, -3.389e-02, -7.101e-02, 1.028e-01, -1.062e-01, -1.150e-01, 4.149e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(-5.248e-01, 1.755e-02, -3.838e-01, -7.363e-02, 4.051e-02, -5.132e-02, 1.222e-01, 8.836e-02, 1.348e-02, 3.197e-02, -1.664e-02, 8.820e-02, 1.275e-01, 1.660e-01, -2.803e-02, 3.543e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(1.772e-01, 2.974e-01, 8.515e-02, 1.359e-01, 2.861e-02, -3.529e-02, -9.069e-02, 5.949e-02, 9.806e-04, -1.339e-02, 2.201e-02, -1.015e-02, 2.325e-02, 3.479e-02, -1.251e-01, 9.714e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(3.795e-01, 2.454e-01, 2.640e-01, 1.362e-01, -1.819e-02, 2.545e-02, -3.386e-02, -1.978e-02, -5.140e-02, -2.753e-02, -2.743e-02, 3.925e-03, 5.783e-02, -9.098e-02, 3.678e-02, -3.076e-03), r6);\n\tr7 = MulAdd(s0_1_0, M4(9.963e-02, -2.729e-01, -5.148e-02, -4.333e-04, 7.542e-02, -1.634e-02, 1.563e-02, -1.851e-02, 9.065e-02, 2.655e-02, 4.737e-04, -3.823e-02, -2.331e-01, -7.659e-02, -2.841e-01, -2.759e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-3.036e-01, -1.208e-01, 1.326e-01, 4.230e-01, 8.442e-02, 1.978e-02, -5.439e-02, 1.625e-01, -6.173e-02, -1.439e-01, 9.431e-02, 1.723e-01, -2.004e-01, 3.356e-02, 7.535e-02, 2.698e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(4.145e-01, 1.068e-01, -3.623e-01, 3.200e-01, 8.395e-02, 5.862e-02, 9.859e-02, 1.721e-01, -4.359e-02, -9.655e-02, -4.681e-01, 5.712e-02, 1.451e-01, 2.540e-01, 2.443e-01, 1.238e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.391e-01, -6.738e-02, 7.520e-04, -6.341e-02, 3.387e-02, 1.069e-01, 4.631e-02, 1.522e-02, 5.595e-02, -2.029e-01, -3.503e-02, -2.711e-01, 7.017e-03, -2.612e-01, 1.138e-01, 4.907e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.668e-01, 4.731e-02, 6.712e-02, 2.771e-01, 6.681e-02, -3.167e-02, -9.286e-02, -2.790e-02, -3.489e-02, -5.492e-03, 3.716e-02, -5.428e-02, 1.851e-01, 1.503e-01, 1.992e-01, 3.131e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(4.028e-02, -5.410e-01, 9.876e-03, -1.873e-02, -3.480e-02, -7.880e-02, -3.097e-02, 1.317e-01, -1.801e-02, 1.027e-01, 6.985e-02, 1.985e-01, 3.474e-02, 1.500e-01, 1.477e-03, 4.488e-04), r4);\n\tr5 = MulAdd(s0_1_1, M4(6.377e-02, 7.796e-02, 1.271e-01, 5.041e-01, 9.317e-02, -1.430e-01, -5.379e-02, 5.455e-02, -7.699e-02, 2.504e-01, 3.967e-01, 1.475e-01, 2.135e-02, -3.393e-02, 3.203e-01, -9.415e-03), r5);\n\tr6 = MulAdd(s0_1_1, M4(-1.141e-01, -1.537e-01, -1.175e-01, 7.285e-02, -9.158e-02, 1.344e-01, 1.026e-01, 6.031e-02, 1.043e-01, 3.876e-02, 9.515e-02, 1.181e-01, 3.168e-02, -1.910e-01, 1.216e-01, 1.750e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(-8.411e-02, 1.590e-01, 9.465e-02, 5.555e-02, 5.190e-02, -4.394e-02, 1.097e-01, -7.776e-02, -3.678e-02, -5.268e-04, -9.011e-02, -3.897e-02, -7.714e-02, 1.570e-01, -1.763e-01, 5.741e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-1.971e-01, 3.617e-02, -1.714e-01, 2.554e-02, -6.973e-02, -4.949e-02, 2.911e-03, 1.271e-02, -5.070e-02, 1.589e-01, -4.790e-02, -1.314e-01, -2.574e-02, -9.470e-03, 5.849e-02, -3.692e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-3.022e-02, 7.478e-02, 5.935e-02, 2.853e-01, 1.009e-01, 1.086e-01, -1.330e-02, 1.059e-01, -9.963e-02, -1.254e-01, -2.512e-01, -4.430e-02, 1.215e-01, 6.272e-02, -3.145e-02, 2.639e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.236e-01, 5.912e-02, 8.096e-02, 2.069e-02, -9.177e-02, -7.170e-02, 3.741e-02, -1.431e-02, -1.725e-01, 7.112e-02, 3.943e-02, -8.250e-02, -2.042e-02, -8.276e-02, -4.815e-02, 3.759e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.110e-01, -2.143e-02, 1.574e-01, -1.489e-01, 1.269e-02, 1.938e-02, 9.506e-02, -5.346e-02, -4.624e-02, 7.570e-02, 3.218e-02, 1.503e-02, 4.640e-03, -3.370e-02, -1.280e-01, -8.143e-03), r3);\n\tr4 = MulAdd(s0_1_2, M4(-2.483e-01, -4.646e-02, 8.498e-02, -5.270e-02, -1.909e-02, 5.381e-02, -4.856e-02, 7.325e-02, 9.337e-02, 2.015e-01, 1.777e-02, 4.632e-02, 8.178e-02, 5.311e-02, 2.886e-02, -1.039e-03), r4);\n\tr5 = MulAdd(s0_1_2, M4(-9.790e-02, -9.820e-02, -2.025e-01, 3.793e-02, 2.415e-02, 2.404e-02, -6.233e-02, 5.541e-03, -6.933e-02, -3.986e-02, 1.482e-02, 3.190e-02, -7.739e-02, -2.897e-02, -2.305e-02, 2.392e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-1.160e-01, -3.329e-02, 7.617e-02, 9.808e-02, -1.271e-02, 1.146e-01, -2.243e-02, 3.107e-02, 4.068e-02, -2.968e-01, -6.635e-02, 1.151e-01, 4.213e-02, -8.494e-02, -2.728e-03, -1.947e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(4.176e-02, 1.452e-01, -6.609e-02, 5.906e-02, -3.180e-02, 5.801e-02, -8.901e-02, -1.144e-02, 3.006e-01, 5.321e-02, -1.061e-01, -8.499e-04, 5.228e-02, -3.388e-02, -3.305e-03, 5.801e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-4.097e-02, 1.095e-01, 6.092e-02, 1.387e-01, 5.415e-03, -3.865e-03, 2.662e-02, -3.862e-02, 2.128e-02, 8.468e-02, 2.611e-02, -1.240e-01, 1.114e-01, -1.629e-01, 3.324e-02, -8.927e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.857e-01, 1.902e-02, -1.975e-02, 1.258e-01, -1.335e-01, 1.075e-01, 1.439e-01, -1.917e-02, -5.396e-02, 4.725e-02, -2.709e-02, -1.333e-02, 8.044e-02, 1.402e-01, 1.092e-01, -5.725e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(3.677e-02, -6.098e-02, 4.996e-03, -6.906e-02, -5.192e-02, -7.418e-04, 1.277e-02, 1.597e-01, -5.186e-02, 2.800e-02, 5.939e-03, 1.194e-02, 6.699e-02, -3.439e-02, -7.380e-03, -4.851e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(5.050e-03, -1.325e-02, 9.302e-02, -1.090e-02, 3.926e-02, -6.705e-03, 3.679e-02, -3.162e-02, 8.463e-03, -9.677e-03, -7.847e-02, -5.640e-02, -8.741e-02, -9.431e-03, 3.592e-03, 4.588e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(1.987e-02, -3.750e-02, 3.187e-02, -1.672e-02, 3.841e-04, 6.908e-02, -1.248e-02, 1.333e-02, 2.639e-02, -9.394e-02, 5.770e-03, 7.023e-02, -7.870e-02, -1.123e-01, 4.967e-02, 2.016e-01), r4);\n\tr5 = MulAdd(s0_2_0, M4(-1.098e-02, 3.117e-02, -2.389e-02, -9.463e-03, 4.169e-02, -1.579e-02, 3.054e-03, 3.303e-02, 1.257e-02, -5.351e-02, -1.573e-02, 9.697e-03, -3.070e-02, 3.733e-03, 1.035e-02, -4.494e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(1.517e-02, 6.376e-02, -1.136e-04, 1.001e-02, 8.138e-04, 2.342e-02, -4.186e-02, -1.021e-02, -2.244e-02, 2.333e-03, -4.696e-02, 6.771e-04, -2.028e-02, 6.914e-03, -1.268e-02, -1.840e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(4.161e-02, 1.404e-02, 3.445e-02, -1.382e-02, 5.973e-02, -1.643e-03, 2.274e-02, -1.669e-02, 4.344e-02, 2.264e-02, -7.045e-02, -1.513e-02, 1.989e-02, -4.780e-02, 2.099e-01, 2.770e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-4.994e-02, -2.435e-03, -1.308e-02, -1.867e-01, -6.819e-02, 1.163e-01, -2.858e-02, 5.657e-02, -9.556e-02, 2.130e-02, 5.866e-02, 1.095e-01, 5.366e-02, 1.509e-01, 3.690e-02, -4.875e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.253e-01, -6.850e-03, 8.461e-02, -7.666e-02, 1.766e-02, -7.966e-02, 5.724e-02, 8.325e-02, -5.334e-02, 3.412e-02, 4.102e-02, -4.469e-03, 4.615e-02, 4.603e-02, 2.564e-02, -6.945e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.772e-01, 6.729e-02, -1.657e-02, 1.419e-01, -5.980e-02, 3.771e-02, 4.843e-02, 8.480e-03, 4.584e-02, -1.744e-02, -2.062e-02, 6.759e-02, 2.186e-01, -1.489e-01, -8.955e-04, 8.712e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-1.455e-02, 4.769e-02, 6.227e-03, 6.409e-03, 8.799e-02, 2.913e-02, -2.788e-02, 4.839e-02, -6.479e-03, -3.238e-02, -7.183e-02, -6.738e-02, -5.961e-03, -9.810e-03, 1.324e-01, 2.582e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-5.054e-02, 4.415e-02, -3.635e-02, 8.128e-02, -5.186e-02, 7.832e-02, -2.387e-02, 4.238e-02, 7.790e-02, -4.546e-02, -4.878e-02, 4.586e-02, -1.284e-02, 7.122e-02, 7.302e-02, 4.277e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-4.578e-02, -1.851e-02, 1.061e-01, 4.813e-03, 9.058e-02, -7.212e-02, 2.180e-02, 7.567e-02, 2.103e-02, 1.937e-02, 8.224e-02, 8.245e-02, 1.650e-02, -3.222e-02, -9.516e-03, -2.059e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(6.026e-04, -1.173e-01, -4.957e-02, -1.376e-02, -7.595e-02, 1.455e-01, 1.356e-01, 3.078e-02, -9.976e-04, -1.302e-02, 4.374e-03, -5.775e-02, -6.524e-02, -3.359e-02, -2.012e-02, -1.413e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(-9.671e-03, -1.333e-01, -4.218e-02, -3.284e-02, -1.739e-01, 6.743e-02, 6.540e-02, -3.839e-02, -4.983e-02, -4.340e-03, -1.114e-02, 4.977e-03, -1.916e-03, 7.763e-02, -4.839e-02, 4.112e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(1.383e-02, -7.671e-02, 5.171e-03, 3.402e-02, 3.064e-02, -9.570e-03, -4.519e-02, 9.118e-02, 4.059e-02, -1.651e-02, -3.117e-02, -3.840e-02, -5.165e-03, -1.226e-02, 6.013e-03, 7.383e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-8.939e-02, 4.455e-02, 2.415e-02, 9.417e-03, -2.051e-02, 2.472e-02, 5.550e-02, 1.224e-01, 1.690e-02, 2.354e-02, 2.730e-02, 4.527e-02, -1.490e-01, 1.801e-02, 7.794e-02, 5.467e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.527e-02, -3.911e-02, -1.246e-03, -7.828e-02, 1.213e-02, -6.374e-02, 2.532e-02, -3.819e-02, -3.813e-02, -1.214e-02, 2.559e-02, 1.756e-03, -2.478e-02, -1.797e-02, 4.092e-03, 3.853e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(2.572e-02, -1.146e-02, -1.343e-02, 1.923e-02, 1.888e-02, -6.999e-04, -5.241e-02, -5.036e-02, -2.011e-02, -6.236e-02, -7.932e-02, 1.220e-02, 8.803e-03, 8.273e-02, 9.103e-03, 5.041e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(1.993e-02, 3.938e-02, -4.945e-02, 8.293e-03, 5.785e-02, 7.863e-02, 3.397e-02, -4.241e-02, -2.470e-02, -2.730e-01, 9.239e-03, 5.289e-02, -2.474e-02, -5.721e-02, -3.863e-02, 5.239e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(1.570e-02, -2.925e-02, -3.079e-02, 2.474e-02, -4.242e-04, 1.778e-02, -1.982e-01, 1.766e-02, 1.247e-02, 2.874e-02, 8.564e-02, 5.445e-03, -7.327e-03, 2.149e-02, -1.998e-02, 2.908e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(1.463e-02, 3.296e-02, 9.943e-03, 6.287e-03, -8.507e-03, 2.651e-02, 3.316e-03, 1.792e-02, 3.690e-02, -1.874e-02, -7.734e-03, -4.114e-02, 9.169e-03, -9.466e-03, 4.502e-02, -2.476e-03), r6);\n\tr7 = MulAdd(s0_2_2, M4(-1.428e-02, 2.596e-02, -5.415e-03, 5.212e-02, 3.896e-02, 3.846e-02, -1.051e-01, -3.483e-02, -3.065e-02, -1.003e-03, -3.426e-02, -2.283e-02, -1.995e-02, -7.140e-02, -8.174e-02, 3.026e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(5.155e-02, 3.938e-02, 7.727e-02, -3.023e-02, 9.033e-02, 3.304e-02, 7.790e-02, -1.088e-01, -2.615e-02, -2.219e-02, 3.631e-02, 1.254e-01, -1.334e-01, -3.861e-02, 2.644e-02, -6.660e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(4.725e-02, 1.217e-01, 1.601e-01, -9.877e-03, -9.862e-01, 2.807e-02, 2.180e-02, 2.697e-03, 4.777e-01, -8.707e-03, 1.548e-02, 1.644e-02, 9.601e-02, -1.594e-01, -3.070e-01, -2.049e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(3.481e-02, -6.284e-02, 3.012e-02, -3.464e-03, -1.827e-01, -7.313e-02, 1.870e-02, -2.364e-01, 3.489e-02, -3.170e-02, 1.386e-02, 8.177e-02, -1.217e-01, 9.381e-03, -5.379e-03, -2.413e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-2.018e-02, 3.962e-02, -1.568e-02, 3.396e-02, 2.789e-02, 2.198e-02, 5.090e-02, 1.226e-02, 3.503e-02, -1.959e-03, -3.859e-02, 1.379e-02, -4.621e-03, 9.524e-02, -2.600e-02, 6.506e-04), r3);\n\tr4 = MulAdd(s1_0_0, M4(2.417e-02, -3.992e-03, 4.125e-03, 6.034e-02, 9.492e-03, -4.440e-02, 4.602e-02, 1.431e-01, 1.864e-03, 8.689e-02, 6.288e-02, -4.577e-02, -4.308e-02, -1.178e-01, 1.565e-01, -1.089e-01), r4);\n\tr5 = MulAdd(s1_0_0, M4(9.351e-02, -1.192e-02, 6.272e-02, -3.715e-03, 2.161e-02, 2.244e-02, -9.377e-02, 3.458e-02, -2.012e-03, 6.260e-03, 5.985e-02, 2.103e-03, 4.920e-03, 1.579e-01, -1.041e-01, -1.050e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(3.870e-02, 8.260e-02, 8.813e-02, -2.757e-02, 7.890e-04, 9.085e-02, -4.624e-03, -8.934e-02, 3.847e-02, 1.482e-02, 6.739e-03, -3.191e-02, 9.443e-03, -4.270e-02, -1.453e-01, 9.323e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(3.372e-02, -1.540e-02, 2.703e-02, -9.279e-03, -2.318e-02, -3.074e-02, -3.952e-02, -2.781e-02, 2.190e-02, -4.409e-02, 3.492e-02, -4.081e-02, 5.316e-02, -1.715e-01, 1.545e-01, 2.227e-01), r7);\n\tr0 = MulAdd(s1_0_1, M4(-2.396e-02, -1.545e-01, -9.749e-02, -4.536e-02, -6.201e-03, -4.554e-02, 3.178e-02, -5.583e-02, -3.279e-02, 4.512e-02, 8.858e-02, 6.757e-02, 1.313e-02, -5.183e-02, 2.254e-02, 8.888e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(2.397e-01, -9.918e-02, -6.404e-02, 2.201e-02, 1.454e-01, 3.848e-02, -3.994e-02, 1.291e-02, 1.297e-01, 2.957e-02, -5.309e-02, 2.844e-02, 1.277e-01, -1.846e-01, 1.244e-01, 1.055e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(9.247e-02, 1.374e-01, -4.579e-02, -1.837e-01, 2.042e-01, -8.178e-03, -1.394e-02, 6.071e-02, -2.287e-01, -1.413e-01, -1.925e-03, 2.048e-02, -7.203e-02, 2.512e-02, 1.009e-02, -6.267e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-5.952e-02, -7.951e-02, -8.012e-02, -8.981e-02, -5.596e-02, 7.733e-03, 3.947e-03, -3.187e-02, 5.549e-03, -3.740e-03, -2.745e-02, 2.485e-02, 1.331e-02, 5.542e-02, -1.033e-01, -7.269e-03), r3);\n\tr4 = MulAdd(s1_0_1, M4(8.318e-02, 2.464e-02, 6.801e-02, 7.100e-02, -1.427e-02, -1.927e-02, 7.547e-02, -2.516e-02, 2.368e-02, 5.416e-02, 4.120e-02, -1.193e-01, 6.888e-02, 3.608e-02, -1.031e-02, 8.180e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.439e-01, -7.817e-02, 4.563e-02, 8.791e-02, -3.647e-02, 1.552e-02, 5.138e-02, -2.146e-02, 1.118e-03, 3.846e-02, -4.324e-02, 1.849e-02, 5.642e-03, -2.112e-02, -9.550e-02, -1.521e-04), r5);\n\tr6 = MulAdd(s1_0_1, M4(-1.401e-01, -1.318e-02, -7.154e-02, -1.074e-01, -1.857e-02, -2.743e-02, 4.726e-02, -8.685e-02, 5.785e-02, -5.427e-02, 1.098e-01, 5.057e-03, -3.055e-02, 6.438e-02, 1.557e-01, -5.470e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(1.359e-02, -3.433e-02, 3.958e-02, -8.917e-02, 1.466e-02, -6.707e-02, 6.245e-02, 2.646e-02, -2.011e-02, 3.673e-02, -4.639e-02, -4.138e-03, 3.202e-03, 4.832e-02, 8.569e-02, 3.968e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(-1.646e-03, -2.358e-02, -8.180e-02, 2.715e-02, -7.271e-04, 6.519e-04, -4.057e-02, 5.108e-02, -3.604e-02, 1.933e-02, 7.273e-02, -6.491e-02, -5.142e-02, -1.333e-02, -1.501e-02, 2.043e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-2.646e-01, 1.065e-02, -5.943e-02, -5.779e-02, -1.355e-01, -3.904e-02, -4.904e-02, -1.207e-03, -1.252e-01, 4.985e-02, 1.046e-01, 9.517e-03, -2.113e-01, -1.386e-02, -7.977e-02, -1.319e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.740e-01, -4.504e-02, 4.736e-02, 1.381e-02, 1.314e-01, 8.813e-02, -1.889e-03, -2.939e-02, -4.241e-02, -6.987e-02, -3.409e-03, 4.278e-02, -1.341e-02, -1.590e-02, -4.471e-04, 3.440e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(3.899e-02, -2.087e-02, 5.480e-02, 3.981e-02, -2.966e-02, 2.864e-02, -9.341e-02, 5.728e-02, -4.914e-03, 2.930e-02, 8.696e-02, -5.083e-02, -2.762e-04, -3.337e-02, 3.275e-02, 7.052e-03), r3);\n\tr4 = MulAdd(s1_0_2, M4(-2.148e-02, 1.593e-02, -8.913e-02, -1.342e-01, 7.657e-03, -1.831e-02, -3.284e-02, -9.446e-03, 8.840e-03, 3.743e-02, 6.205e-02, 3.535e-02, -2.834e-03, 5.677e-02, 2.201e-02, -1.423e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(4.181e-02, -5.092e-02, 8.707e-02, -2.112e-02, -2.191e-02, 7.105e-03, 4.932e-02, -8.824e-03, -2.308e-02, 4.020e-02, -8.263e-02, 1.569e-02, -1.351e-02, -4.164e-03, 8.505e-02, 5.281e-04), r5);\n\tr6 = MulAdd(s1_0_2, M4(5.419e-02, -4.047e-02, -2.160e-02, 1.909e-01, 6.831e-03, -1.072e-03, -4.994e-02, -5.169e-02, 1.546e-02, -3.381e-02, 1.527e-02, -4.409e-02, 1.225e-02, 3.628e-03, -7.162e-02, -6.853e-03), r6);\n\tr7 = MulAdd(s1_0_2, M4(3.797e-02, -1.780e-02, -1.006e-04, 1.422e-03, -4.725e-02, 7.923e-03, 3.785e-02, 4.390e-02, 1.337e-02, 2.172e-02, -7.707e-02, -5.185e-02, 1.406e-02, 1.372e-02, -2.894e-03, -2.285e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(3.287e-02, 5.668e-02, -1.453e-02, 1.653e-02, 5.121e-02, -6.016e-02, 1.988e-02, 2.664e-02, 4.750e-02, 1.499e-01, 1.640e-01, 1.220e-01, 4.342e-01, -3.640e-01, -2.723e-01, 2.697e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(2.266e-02, -1.840e-01, -1.004e-01, 4.626e-02, 3.615e-02, -2.043e-01, -1.752e-01, 8.538e-03, -1.241e-01, -1.820e-01, -4.259e-01, 4.038e-02, 1.963e-01, -3.694e-01, 2.871e-01, 1.678e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(8.093e-02, -7.265e-02, 3.297e-02, 2.201e-01, -1.511e-02, 3.993e-03, 2.586e-02, 2.825e-01, 1.410e-01, -5.957e-02, 3.134e-02, -9.444e-02, -3.157e-01, -2.976e-02, 7.780e-02, 1.548e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(2.620e-02, 3.620e-02, 3.866e-02, 9.906e-02, 5.578e-02, 9.342e-03, -4.920e-02, 4.753e-02, 2.903e-02, -7.059e-03, 9.330e-02, -1.435e-02, 1.501e-01, -1.009e-01, 1.109e-01, 1.913e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(6.860e-03, 1.136e-02, -1.098e-01, 1.005e-01, -2.618e-03, -6.669e-02, -1.839e-01, -1.968e-01, -1.046e-02, 6.693e-02, -8.591e-02, 1.659e-01, -5.579e-02, 9.168e-02, 1.323e-01, -4.841e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(5.036e-02, 1.300e-01, -9.835e-02, -2.349e-01, 1.376e-02, 1.035e-01, 1.926e-02, -5.360e-02, 1.312e-01, -1.013e-01, 7.937e-02, -2.406e-03, 6.773e-02, 2.052e-01, -5.825e-02, 1.902e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(1.814e-01, 9.121e-02, 6.794e-02, 8.737e-02, -1.972e-02, 4.885e-02, 3.464e-02, 8.922e-02, 2.472e-03, 4.411e-02, 2.149e-01, 4.481e-02, -5.816e-01, -5.216e-01, -9.875e-02, -6.775e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(3.739e-02, 6.854e-02, 1.990e-03, -3.360e-02, 1.142e-01, -2.065e-01, -6.898e-02, -8.273e-03, -1.025e-02, -6.059e-02, 2.674e-02, 5.393e-02, -2.013e-01, 2.194e-01, -2.729e-01, 3.695e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(4.807e-02, -1.920e-02, -8.597e-02, -1.172e-01, -3.735e-02, -6.593e-02, -1.315e-01, -1.085e-01, -6.731e-02, 1.489e-01, 3.184e-01, -1.120e-01, -1.586e-02, -2.269e-01, -3.137e-01, 3.037e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(2.001e-01, -2.240e-02, 1.206e-01, 5.815e-02, 1.717e-01, 3.268e-02, 3.902e-01, 1.643e-02, -1.544e-01, -2.099e-01, -1.760e-01, 1.670e-01, -6.960e-02, -1.434e-01, 4.200e-02, 2.874e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-1.416e-01, 2.095e-01, 6.237e-01, -1.361e-01, -3.275e-01, -2.113e-01, 3.367e-02, 5.042e-02, -4.400e-01, -9.694e-02, 3.241e-02, -7.263e-02, 1.579e-01, 1.668e-01, 6.237e-02, -3.189e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(1.702e-01, -6.703e-03, 6.127e-03, -1.175e-01, 1.321e-01, -2.763e-02, -1.644e-03, 1.512e-01, 1.989e-02, 8.667e-02, 1.627e-01, -5.059e-02, 9.985e-02, -7.497e-02, 4.026e-02, 6.328e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(6.708e-02, 9.099e-03, 8.874e-02, 1.272e-01, -7.434e-02, -3.001e-01, -1.287e-01, -1.884e-01, 5.953e-03, -1.508e-01, 8.414e-02, -1.612e-01, -1.057e-01, 3.295e-01, -3.943e-02, 6.486e-03), r4);\n\tr5 = MulAdd(s1_1_1, M4(-2.078e-01, -2.273e-01, -1.237e-01, 6.559e-02, 4.847e-02, -2.998e-02, 8.917e-02, 8.291e-02, -3.119e-02, -5.877e-02, 1.651e-02, -6.250e-02, 1.657e-01, 1.805e-02, 2.567e-01, -5.677e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(-3.887e-01, -9.997e-02, -7.390e-02, -1.556e-01, 6.067e-02, -1.587e-01, -3.333e-02, 3.557e-02, 9.653e-02, -8.199e-02, 2.803e-02, 1.669e-01, -6.241e-02, 1.184e-01, -1.311e-01, 1.454e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(6.632e-03, -2.108e-03, 1.115e-01, 1.938e-01, 3.232e-01, -1.136e-01, -1.046e-01, 1.073e-02, 2.518e-01, 2.454e-01, -1.519e-01, -5.116e-02, 1.750e-01, 1.676e-01, -1.936e-01, 9.400e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-5.054e-02, -4.203e-02, 7.929e-02, 8.179e-02, 1.110e-02, -1.156e-01, -5.068e-02, 9.637e-02, 3.756e-02, 8.177e-02, 1.948e-01, -5.226e-02, 1.551e-02, -1.179e-01, 2.606e-03, -1.076e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(2.289e-02, 7.479e-02, 1.080e-01, -3.004e-01, 1.110e-01, -4.973e-02, 4.861e-02, -5.279e-02, -2.929e-01, 1.305e-01, -2.049e-01, -2.488e-01, -4.412e-02, -3.608e-03, 1.733e-01, -3.337e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.706e-01, -1.072e-01, 7.237e-02, 1.580e-01, 3.046e-01, -1.080e-02, 3.655e-02, -1.474e-01, -3.225e-01, 7.089e-02, -5.528e-02, 4.115e-02, 4.319e-02, -1.633e-02, -1.035e-02, 1.444e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-9.620e-02, 2.125e-01, 2.610e-02, 1.842e-01, 1.833e-02, -9.674e-03, -1.311e-01, -3.261e-03, 1.369e-02, 3.933e-02, 1.476e-01, -3.744e-02, -1.389e-02, 3.246e-02, -1.019e-01, -5.164e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.161e-01, -2.056e-01, -7.204e-02, -1.551e-02, 8.983e-02, -8.377e-02, 7.292e-02, -7.488e-02, -1.958e-02, -2.660e-01, -4.228e-03, 1.765e-03, 2.202e-02, 3.771e-02, -2.321e-02, 2.922e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(1.430e-01, 2.082e-01, 3.809e-02, -7.557e-02, 6.340e-02, 3.053e-02, -8.100e-02, -4.205e-02, -5.069e-02, 6.407e-03, 2.211e-02, 3.827e-02, -5.785e-03, 7.160e-02, -1.491e-01, 1.094e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(2.208e-01, 1.043e-01, 1.093e-01, -1.014e-01, -3.699e-02, 2.466e-02, -2.646e-01, -7.233e-02, 3.841e-02, 1.428e-02, 2.618e-01, 8.569e-02, 9.487e-03, -3.606e-02, 5.432e-03, 1.677e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(-9.353e-02, -8.352e-02, -7.092e-02, 3.700e-02, -5.754e-02, -5.129e-03, 9.114e-02, 3.991e-02, 6.895e-02, -2.453e-02, 3.538e-02, 1.196e-01, 2.145e-02, 5.240e-02, 9.214e-02, 3.228e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-8.032e-02, 1.380e-02, 6.130e-02, 2.811e-02, 5.985e-02, 1.373e-01, -8.127e-02, -1.195e-01, 3.521e-02, 5.215e-02, 4.863e-02, 1.808e-01, -1.713e-01, -8.745e-01, -9.992e-01, 6.650e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(2.123e-02, 8.348e-03, 1.619e-02, 5.202e-02, 3.949e-02, 5.242e-04, -2.678e-01, -7.821e-02, -2.051e-02, -3.735e-02, 1.576e-01, 6.303e-02, -5.028e-01, -2.204e-01, -1.156e+00, -3.001e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-6.664e-02, -3.782e-02, -1.871e-02, 7.059e-02, 4.907e-02, -1.215e-01, 4.724e-02, 3.540e-02, 1.838e-02, -4.092e-02, 2.315e-02, 3.138e-02, -2.557e-01, 8.670e-03, 7.049e-02, 4.257e-01), r2);\n\tr3 = MulAdd(s1_2_0, M4(7.847e-03, 2.316e-02, 1.174e-02, 3.373e-02, 7.547e-02, 6.430e-02, -2.165e-02, 3.115e-02, 5.238e-02, 2.528e-02, -3.545e-02, 8.820e-03, 1.103e-01, 2.112e-02, 3.957e-01, 4.041e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(-1.418e-01, -5.124e-02, -8.355e-02, -1.157e-03, -9.295e-02, 2.489e-02, -1.440e-01, -3.688e-02, 2.388e-03, 1.011e-02, 5.233e-02, 5.549e-02, -2.852e-01, -1.502e-01, 6.955e-01, -3.325e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(5.637e-02, 3.852e-02, 6.310e-02, 1.101e-01, 1.220e-01, -4.565e-02, 8.157e-02, 1.122e-01, 8.282e-03, -2.698e-02, -1.372e-01, 8.602e-03, 6.438e-05, 2.515e-01, 1.594e-01, -8.818e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(6.615e-02, 1.765e-02, 3.341e-02, 1.310e-02, -6.674e-02, 4.242e-02, 9.238e-02, 5.663e-04, 1.414e-02, -2.927e-02, 9.537e-03, 3.576e-02, 6.724e-02, -3.850e-01, 3.799e-01, 1.400e-04), r6);\n\tr7 = MulAdd(s1_2_0, M4(-1.491e-02, -8.563e-02, 2.105e-02, -1.245e-02, -7.240e-02, -2.123e-01, -7.816e-02, 7.594e-02, 4.407e-02, 1.903e-03, -2.140e-02, -2.513e-02, -1.193e-01, 8.387e-02, 6.256e-04, 3.576e-01), r7);\n\tr0 = MulAdd(s1_2_1, M4(3.213e-02, 1.162e-01, -1.325e-02, 3.235e-02, 1.467e-01, -1.371e-02, -6.913e-02, -5.069e-03, -1.216e-01, 7.923e-02, 1.756e-01, -1.477e-03, 1.155e-01, 5.547e-02, -2.527e-02, 1.708e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(9.815e-02, -7.193e-02, 6.665e-02, 4.545e-02, -2.421e-02, 2.358e-01, 3.799e-01, 1.591e-01, 1.196e-01, 2.156e-01, -2.164e-02, 2.336e-02, 1.023e-01, -9.604e-02, 1.426e-01, 9.515e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.893e-02, 2.032e-02, 1.084e-02, 5.193e-02, 1.980e-01, -8.261e-02, 7.934e-02, 2.795e-02, -1.071e-01, -1.219e-01, -1.565e-03, -5.423e-02, 2.125e-01, -1.283e-01, 1.815e-02, -5.796e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(3.529e-02, -5.465e-02, -1.057e-02, -2.351e-02, 4.524e-02, 8.723e-02, -2.125e-01, 2.134e-01, 6.508e-02, 3.566e-02, 7.216e-02, -6.857e-03, 1.042e-01, 1.450e-01, 8.581e-02, 3.826e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(5.399e-02, 5.194e-02, -5.312e-02, 4.765e-02, -7.170e-03, 1.140e-01, -2.402e-01, -7.426e-02, 2.343e-02, -6.883e-02, -5.258e-02, -9.095e-03, 1.481e-01, 3.451e-01, 4.638e-02, -5.847e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-7.295e-02, -1.434e-01, 1.640e-02, 4.174e-02, 3.860e-03, -1.658e-01, -7.756e-02, 4.288e-02, -2.743e-02, -5.897e-03, -1.634e-01, 4.134e-02, 5.368e-02, 1.381e-01, 5.191e-01, 5.497e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-1.175e-01, -8.513e-02, -4.925e-02, 5.230e-02, -1.617e-01, 2.035e-02, -8.892e-02, 7.021e-02, 7.371e-02, -6.627e-02, 3.380e-02, 1.181e-02, 6.058e-02, 1.645e-01, -8.510e-01, -9.050e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(5.205e-03, 3.805e-02, -9.153e-02, -4.183e-02, -2.226e-01, -2.784e-01, -1.024e-02, -7.053e-02, -7.461e-02, 9.332e-02, 5.603e-02, -7.972e-03, -2.125e-01, 2.455e-01, 9.951e-02, -2.398e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(8.311e-02, -4.339e-02, -2.945e-02, 4.421e-02, 5.850e-02, -1.156e-01, 7.985e-02, -4.369e-03, -1.024e-01, 1.055e-01, 7.349e-02, -2.073e-02, -4.929e-02, 3.790e-03, -2.877e-02, -5.406e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-6.593e-02, 5.168e-02, 7.579e-02, -9.707e-02, -1.893e-01, 1.721e-01, -9.962e-02, 1.346e-02, 2.375e-01, -6.523e-03, 2.766e-02, 3.241e-02, -6.220e-02, -2.842e-03, 9.414e-02, -1.967e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-8.877e-02, -9.284e-02, 2.789e-02, 6.092e-03, -1.378e-01, 5.531e-02, 1.019e-02, -1.665e-02, -7.885e-02, 9.206e-03, -2.887e-02, -5.090e-02, -3.523e-02, -9.070e-02, -5.603e-03, -4.872e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-5.115e-02, -3.701e-02, 5.187e-02, -2.752e-03, 3.730e-02, 1.079e-01, -3.619e-02, 1.164e-01, -3.533e-02, -3.359e-02, -1.801e-02, -4.069e-02, -2.053e-02, 1.998e-02, -3.368e-02, -1.231e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(7.670e-02, 3.538e-02, 6.134e-02, 3.222e-02, -9.364e-02, 3.116e-02, 1.187e-02, -2.161e-02, 6.479e-02, -8.732e-02, 4.191e-02, -4.857e-02, 1.249e-02, -2.612e-02, 4.627e-03, -8.674e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(7.068e-03, 2.723e-02, 3.695e-02, -2.346e-02, -7.028e-02, 2.621e-02, 4.069e-02, 6.421e-02, -6.053e-02, 2.299e-02, 1.125e-02, -6.807e-03, -3.890e-02, 4.204e-02, -5.710e-02, 2.127e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(6.230e-02, 1.597e-03, 1.938e-02, -4.848e-02, 4.431e-02, -6.608e-02, 6.181e-02, -4.583e-02, 5.161e-02, -4.609e-02, 7.739e-02, 2.838e-02, 7.090e-02, 3.963e-02, 1.835e-03, 2.791e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-1.208e-02, 2.398e-02, 7.348e-03, -8.198e-03, -8.663e-02, 7.227e-03, -1.042e-01, 9.432e-02, 5.033e-02, 6.859e-02, 7.731e-02, -1.427e-03, 7.252e-02, 2.556e-02, -8.080e-02, 5.807e-02), r7);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(6.175e-01, 1.466e-01, -1.261e-01, -1.989e-01, 1.757e-02, -1.761e+00, 4.945e-01, -6.805e-01, -1.057e-03, -1.572e-02, -4.921e-02, 1.281e-02, -8.714e-01, 1.102e-01, 1.265e-01, -3.126e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.378e-01, -3.472e-01, -1.786e-01, -3.022e-01, -5.992e-02, -2.345e-01, -5.037e-01, 5.295e-01, 1.074e-01, 2.978e-02, 1.337e-02, 1.407e-02, -5.078e-02, -9.239e-01, 1.557e-01, -1.127e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.201e+00, -4.361e-01, -1.398e-01, 1.731e-01, -8.127e-01, -1.985e-01, -2.220e-01, 4.237e-01, -1.008e-01, 4.639e-02, -7.347e-03, 1.293e-02, -2.069e-01, 3.553e-01, -9.043e-02, 1.106e+00), r2);\n\tr3 = MulAdd(s0_0_0, M4(-2.552e-01, 2.635e-01, -2.308e-01, 4.978e-01, 5.428e-02, -1.321e-01, 5.495e-01, -5.446e-02, -3.496e-02, -3.420e-04, -1.759e-02, -2.881e-02, 1.789e-02, 1.112e-01, 3.282e-01, 1.592e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(-3.245e-01, -5.007e-01, 6.370e-01, 6.189e-01, -1.040e-01, 1.547e+00, 2.857e-01, -3.975e-01, -1.394e-02, 6.087e-03, -5.105e-02, 3.850e-02, 2.459e-01, -3.560e-01, 4.493e-01, -2.934e-01), r4);\n\tr5 = MulAdd(s0_0_0, M4(-3.804e-01, 2.931e-01, -2.988e-01, 1.200e-01, -1.024e-01, -4.974e-01, 3.716e-02, 7.919e-02, 3.383e-03, -4.734e-02, -4.854e-02, -4.029e-03, -1.570e-01, 1.957e-01, -6.752e-01, 3.004e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-3.247e-01, 8.468e-01, -1.835e-01, 3.309e-01, -6.120e-01, -3.041e-01, 6.994e-02, 1.116e-01, -1.981e-02, 6.491e-03, -7.672e-03, -2.333e-02, 6.607e-02, -8.167e-01, 2.233e-01, 5.743e-01), r6);\n\tr7 = MulAdd(s0_0_0, M4(-3.373e-01, 1.986e-01, 1.133e+00, 9.087e-02, -4.143e-01, 3.746e-01, -4.083e-03, -2.950e-01, -4.093e-02, -2.611e-02, -1.790e-02, 7.777e-03, 4.914e-01, -2.175e-01, 3.825e-01, -2.685e-01), r7);\n\tr0 = MulAdd(s0_0_1, M4(-1.524e-01, 1.313e-01, 5.409e-02, 3.133e-01, -9.484e-02, 2.406e-01, -2.171e-01, 9.553e-02, -2.196e-02, -1.155e-02, -2.292e-02, 2.631e-02, -5.736e-02, -2.017e-01, 6.853e-02, -2.414e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-8.641e-01, -2.112e-01, 1.382e-01, 1.442e-01, -7.583e-01, -2.114e-01, 5.286e-02, -1.446e-01, -4.309e-01, 4.801e-02, 5.886e-02, 4.391e-02, -6.101e-01, -1.132e-01, 2.334e-01, 1.116e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.078e-01, 2.824e-01, -5.866e-02, -2.523e-01, -4.160e-01, -7.391e-02, -1.946e-02, -1.105e-01, 7.453e-03, -2.117e-02, 2.839e-02, 6.419e-02, 2.842e-01, -1.759e-01, 7.056e-02, 7.598e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-1.480e-02, -8.402e-03, 4.383e-02, 3.400e-02, 6.594e-03, -1.068e-01, 1.158e-01, 2.043e-01, 4.362e-02, 3.313e-02, -1.810e-02, -5.345e-02, 4.635e-02, 2.157e-01, 1.076e-01, -1.355e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.274e-01, 3.095e-01, 3.757e-02, 7.858e-02, -2.251e-01, 5.060e-02, -3.489e-01, -5.315e-02, -6.237e-03, 4.338e-02, -4.361e-02, -8.469e-02, 8.123e-03, 2.846e-01, 1.418e-01, 7.588e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(1.068e-02, -2.758e-02, 2.940e-01, -5.502e-02, -4.384e-02, 5.319e-02, 2.271e-01, 7.153e-02, 3.158e-02, -2.946e-02, 4.218e-03, -1.444e-02, 8.523e-02, 1.848e-01, -6.157e-02, 1.939e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-1.771e-02, 1.003e-01, 4.830e-01, 6.805e-02, 2.250e-01, 2.745e-02, -1.364e-01, 8.457e-01, -1.895e-02, 3.585e-02, -7.599e-02, -2.513e-02, 7.172e-02, -1.177e-01, -8.252e-01, -6.476e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(1.301e-01, 5.087e-02, 3.735e-02, 7.448e-02, 1.027e-01, 7.978e-02, -2.924e-01, 4.871e-02, -5.049e-02, 3.007e-02, -7.460e-03, -4.365e-02, 2.290e-01, 7.241e-02, 1.442e-01, 2.086e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(-5.418e-02, 7.768e-03, 2.205e-02, -5.137e-02, 4.244e-02, -7.740e-02, 3.565e-02, -3.332e-02, -4.529e-02, 1.183e-02, 1.953e-02, 1.950e-02, 1.920e-02, 8.505e-02, -3.716e-02, 8.391e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.340e-01, -3.486e-03, -5.874e-03, 1.267e-02, -1.624e-01, 1.880e-02, 9.137e-02, -1.140e-01, 1.841e-01, 5.843e-03, 4.815e-02, 1.867e-02, 1.365e-01, -3.482e-02, -2.558e-02, 5.275e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(9.543e-02, -7.447e-02, -1.984e-02, -3.731e-03, -4.424e-02, -6.198e-02, -2.194e-02, -2.799e-02, -1.206e-01, -2.334e-02, -8.397e-03, 4.531e-02, 4.711e-02, 3.914e-02, 1.297e-02, 5.504e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-4.814e-02, 2.568e-02, 1.179e-01, 7.529e-02, -1.266e-02, 5.212e-03, -1.551e-02, -2.134e-02, 1.919e-02, -9.578e-03, 7.461e-02, -2.486e-02, 4.002e-02, 1.028e-02, -1.040e-01, -4.800e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(2.080e-02, -7.203e-02, 5.676e-02, -1.291e-01, 2.631e-02, 1.092e-01, -5.221e-02, -4.683e-02, -1.139e-02, 1.828e-02, 5.528e-02, 4.621e-02, 1.977e-02, -1.436e-01, 2.946e-02, -1.002e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-6.082e-02, -1.291e-02, 1.132e-01, -1.110e-02, 1.918e-03, 1.711e-02, -1.379e-01, -6.627e-03, 1.496e-02, 3.211e-02, -4.463e-02, 1.480e-02, 3.035e-02, 2.615e-02, 6.150e-02, 1.878e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(2.369e-02, -9.000e-02, -6.297e-02, -4.870e-02, 2.502e-02, -3.957e-02, 1.043e-01, 7.544e-02, -1.814e-02, 1.418e-02, 4.335e-02, 5.115e-02, -1.274e-02, 1.273e-01, -4.571e-02, -2.816e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(9.744e-02, -7.171e-02, 3.232e-02, -2.078e-03, 7.975e-02, -7.501e-02, 7.379e-02, 2.012e-02, -2.807e-03, 1.046e-02, 2.045e-02, 2.039e-02, -1.301e-01, 6.223e-02, 3.694e-02, -1.561e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(5.976e-01, -2.298e-01, 9.199e-02, -5.684e-01, -1.069e+00, -6.802e-01, -1.915e+00, 5.810e-01, 8.488e-02, 5.794e-02, 1.022e-01, 3.490e-02, 1.159e-01, 4.014e-01, 6.896e-02, 9.016e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-4.256e-01, 3.096e-01, 4.535e-01, 1.005e-01, -2.366e-01, 8.488e-01, -1.130e+00, 3.322e-01, -1.703e-01, -6.861e-02, 6.206e-03, 3.370e-02, -2.897e-01, 1.769e-01, 3.308e-01, 9.533e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(2.794e-01, -4.475e-02, -1.384e-02, 2.033e-02, 3.381e-01, -2.015e-01, -3.719e-01, -4.905e-01, -1.942e-01, -3.141e-02, -1.411e-02, -4.598e-01, 1.865e-01, 6.597e-02, 7.203e-02, 3.270e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.042e-01, 1.371e-02, 1.629e-01, -6.343e-03, -7.452e-01, -5.893e-01, 9.436e-01, -8.533e-01, -6.389e-02, 5.143e-02, -2.759e-02, -2.571e-02, 1.186e-01, 2.552e-02, 5.039e-02, 1.714e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(2.157e-01, 2.766e-01, 3.818e-02, 4.244e-01, -7.273e-02, 1.282e+00, 6.788e-01, 8.030e-02, 1.039e-01, 6.432e-02, 1.918e-01, 2.510e-01, 1.606e-01, 3.603e-01, -3.594e-01, 2.406e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(2.324e-02, -8.332e-02, 5.148e-02, -1.531e-01, 8.812e-02, 1.487e-01, 6.488e-01, 9.530e-01, -4.122e-02, 6.712e-02, -2.073e-01, -9.121e-02, 1.665e-01, -4.948e-02, 3.656e-02, 7.672e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-2.206e-01, 2.714e-01, 1.155e-01, 3.756e-02, -6.535e-01, -6.011e-01, -1.943e-01, -3.388e-01, 8.043e-02, 3.099e-03, 4.803e-02, 2.041e-02, 1.393e-01, 2.401e-01, -1.687e-01, 7.469e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(1.618e-01, -1.801e-02, -7.465e-03, 1.225e-01, -3.059e-01, 9.670e-01, -2.855e-01, 4.108e-02, -4.773e-02, 3.472e-02, -1.408e-01, 2.605e-02, -8.859e-03, -8.008e-02, 3.407e-02, 1.257e-01), r7);\n\tr0 = MulAdd(s0_1_1, M4(1.142e-01, -4.125e-02, -8.558e-02, 3.852e-01, -6.261e-02, -1.978e-01, 2.571e-01, 9.692e-02, 2.230e-02, -2.307e-02, 2.082e-01, -3.287e-02, -1.420e-01, -1.249e-01, 6.974e-02, 1.912e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(4.463e-01, 3.388e-01, 1.023e-01, 1.695e-01, 6.216e-02, -1.730e-01, -6.718e-02, -1.059e+00, -9.615e-02, -8.823e-02, -2.567e-01, 7.491e-02, 1.171e-01, 3.177e-01, 2.703e-01, 3.072e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.604e-01, -1.032e-01, 7.472e-03, 5.805e-02, 4.558e-01, -4.424e-01, 3.671e-01, 1.487e-01, -1.511e-01, -4.959e-02, -2.107e-02, 1.115e-01, -8.873e-02, -1.792e-01, 1.111e-01, 5.407e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(7.286e-02, -1.812e-01, -3.241e-02, 1.320e-01, -4.892e-01, 5.020e-01, -1.831e-01, 2.104e-01, 4.652e-02, 5.965e-02, -7.669e-02, -1.274e-01, 2.231e-01, 2.764e-01, 1.001e-01, 3.193e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-3.454e-02, 3.412e-01, 6.375e-02, 8.747e-02, -5.727e-01, -2.330e-01, -1.738e-01, 1.763e-01, 7.805e-02, 5.461e-02, -4.662e-02, 2.980e-02, 9.963e-02, 4.733e-01, 6.256e-02, 2.209e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(9.848e-02, -5.695e-02, 3.663e-01, -9.432e-02, 5.143e-01, 3.936e-01, -3.622e-01, -2.785e-01, 3.260e-02, 5.053e-02, -2.665e-01, 5.907e-02, 1.004e-03, 8.195e-02, 1.105e-01, 1.175e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-1.137e-01, 1.836e-01, -7.472e-02, 7.295e-03, 5.464e-01, 5.335e-01, 4.453e-01, -4.921e-01, 5.348e-03, 4.581e-03, -1.362e-01, 8.615e-02, -1.342e-02, -5.834e-03, -5.437e-02, 4.326e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(-5.433e-02, -2.741e-02, 1.922e-01, -1.565e-01, -3.036e-01, -2.242e-01, -4.795e-02, -3.017e-01, 1.529e-01, -1.031e-01, -2.382e-02, 6.684e-02, -3.035e-01, 3.487e-01, -9.682e-02, 1.077e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(2.129e-03, -7.773e-02, 1.019e-02, 4.842e-02, -2.740e-02, 6.271e-02, 2.003e-02, -1.168e-01, 2.932e-02, 5.539e-02, 1.585e-02, 2.166e-02, -6.866e-02, -3.479e-02, -9.547e-02, 1.398e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(1.905e-01, 5.199e-02, 1.824e-01, 7.938e-02, 6.700e-02, 5.648e-02, 7.198e-02, 5.534e-03, 1.447e-01, 2.023e-02, 9.877e-02, 1.304e-01, 5.778e-02, -1.289e-01, -8.254e-02, 9.080e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.314e-01, 2.107e-02, 1.339e-02, -1.290e-02, 6.750e-02, -4.713e-02, -1.162e-02, -1.211e-02, -4.780e-02, 1.001e-02, 5.708e-04, 4.529e-02, -8.080e-03, 7.982e-03, -2.114e-02, 1.206e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(1.975e-02, -9.077e-03, 5.960e-02, 4.018e-02, 2.560e-02, 3.738e-02, 3.922e-02, 1.886e-02, 1.064e-02, -5.211e-02, -2.137e-02, 5.725e-02, -6.758e-03, -2.741e-03, 4.570e-02, -2.633e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(-2.248e-02, 2.568e-01, -2.635e-02, 1.346e-01, -2.551e-02, -2.846e-01, -2.773e-02, -1.247e-01, 8.326e-03, -5.903e-02, -8.870e-03, 1.333e-01, -3.323e-02, 1.232e-01, 9.271e-02, 3.977e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(9.600e-03, 9.414e-02, 1.436e-01, -4.903e-03, 4.966e-02, -3.364e-02, 1.275e-01, -1.605e-02, -4.639e-02, -1.519e-02, -8.643e-02, 3.347e-02, -6.907e-02, 1.729e-02, 6.198e-02, 1.784e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-3.354e-02, 6.757e-02, -1.104e-01, -2.734e-03, -5.518e-03, 6.431e-02, -7.741e-02, -4.109e-02, 3.119e-02, 3.652e-02, 8.567e-02, 1.578e-02, 2.409e-02, -4.211e-02, 1.383e-02, 2.472e-03), r6);\n\tr7 = MulAdd(s0_1_2, M4(5.867e-02, 1.421e-02, 1.341e-02, 5.339e-02, -3.654e-03, 6.918e-02, -1.605e-02, 1.125e-01, 9.685e-03, 5.898e-02, 1.589e-02, -1.582e-01, 2.781e-02, -9.047e-03, -5.774e-02, 8.633e-03), r7);\n\tr0 = MulAdd(s0_2_0, M4(2.006e-03, -5.360e-02, -8.608e-02, -5.832e-02, 4.191e-03, -1.851e+00, -1.458e+00, 6.577e-01, 1.992e-01, -4.445e-02, 6.941e-02, 3.697e-02, -1.283e-03, -2.272e-02, 4.586e-02, 7.005e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.558e-01, 9.765e-02, 2.246e-02, -6.876e-02, 4.587e-01, 1.688e+00, 8.198e-02, 1.482e-01, -1.389e-02, -2.414e-01, -3.039e-01, 1.194e-01, 1.427e-01, -6.772e-02, 1.966e-03, 5.698e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.208e-01, 1.102e-01, 3.953e-02, 1.642e-01, -6.604e-01, 5.076e-01, 4.269e-02, -1.296e+00, -9.060e-02, 3.451e-02, -4.762e-03, 7.480e-02, 1.929e-03, -8.832e-02, 7.576e-04, -4.721e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(6.293e-02, 2.769e-02, 9.159e-02, -5.501e-03, -5.864e-02, -2.411e-01, -2.546e-01, -3.418e-01, -2.829e-02, -7.168e-02, -1.278e-02, -4.573e-03, -3.174e-02, -3.233e-02, 8.090e-02, 6.761e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-8.558e-02, -9.874e-02, 7.652e-02, 1.012e-01, 2.071e-01, -9.729e-01, 1.059e-01, 1.373e-01, -2.771e-02, -1.107e-01, -7.126e-02, 2.538e-01, 9.066e-03, -5.096e-02, 4.259e-03, -5.068e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(4.876e-02, 2.922e-02, -1.056e-01, 2.736e-02, -3.927e-02, 5.058e-01, 1.621e-01, 6.927e-02, 1.658e-02, 2.008e-01, 2.892e-02, -2.345e-02, -2.491e-02, 9.051e-03, 1.971e-02, -7.002e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(7.126e-02, -5.260e-02, 7.307e-02, 5.777e-02, -2.994e-01, 7.355e-01, 5.031e-01, 2.857e-01, 1.012e-01, 1.230e-01, 1.740e-01, -4.465e-02, -7.689e-02, 9.520e-02, -9.615e-02, -5.551e-03), r6);\n\tr7 = MulAdd(s0_2_0, M4(2.409e-03, 8.154e-02, 5.517e-02, -8.225e-02, -1.674e-01, -5.182e-01, 1.871e+00, -3.425e-01, -4.185e-02, -1.894e-02, -1.601e-01, 1.411e-02, -1.041e-02, 5.091e-02, 1.208e-01, -9.776e-03), r7);\n\tr0 = MulAdd(s0_2_1, M4(-1.638e-01, 6.979e-02, 4.867e-02, -7.780e-02, 2.427e-01, -3.045e-02, 1.841e-01, -6.640e-02, -1.642e-01, -3.874e-01, 5.147e-02, 5.667e-02, 2.232e-02, 6.218e-02, -8.443e-03, 1.061e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.103e-01, 4.777e-02, -1.074e-01, 1.938e-02, 2.890e-02, 2.031e-01, 1.361e-01, -1.563e-01, -4.503e-01, 5.905e-02, -4.034e-01, 4.789e-01, -1.890e-01, 3.079e-02, 4.107e-02, 1.740e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(-7.723e-02, -6.378e-02, 6.381e-03, 9.757e-02, -1.092e-01, 1.389e-01, -2.737e-03, 4.234e-03, -1.720e-01, -1.285e-01, 1.242e-02, -1.099e-01, 1.135e-01, 5.645e-02, -3.496e-02, 5.050e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-1.351e-02, 1.041e-01, -9.451e-03, -5.970e-02, 9.355e-03, -3.417e-01, -7.741e-02, -2.500e-01, -1.028e-03, 9.219e-02, 2.312e-02, -6.666e-03, -5.562e-02, -2.012e-02, 9.868e-02, -2.412e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-1.080e-01, 9.412e-02, 9.100e-02, -6.315e-02, 6.035e-01, 1.157e-01, 2.213e-02, 2.169e-02, 7.475e-02, -1.967e-01, 2.142e-01, -9.301e-02, -1.245e-02, -9.241e-03, 9.140e-02, 3.966e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-2.372e-02, 5.100e-02, 1.145e-01, 4.775e-03, 1.581e-02, -1.733e-02, 8.554e-02, 1.106e-01, -1.000e-02, 9.647e-02, 1.070e-01, -3.318e-02, -2.375e-02, 5.456e-02, -6.516e-03, -1.019e-03), r5);\n\tr6 = MulAdd(s0_2_1, M4(-6.052e-03, -1.311e-01, 6.006e-02, 4.971e-02, 4.397e-02, 3.555e-04, -9.437e-02, -9.506e-02, 8.353e-02, -3.643e-02, 2.072e-01, 2.961e-02, 4.248e-03, 2.094e-03, -8.792e-03, 3.538e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(9.958e-02, 4.070e-02, -1.300e-01, 6.600e-02, 3.793e-02, 2.113e-01, 3.514e-01, 1.507e-01, -3.996e-02, 7.193e-02, -1.726e-01, -1.556e-02, 8.131e-02, 4.854e-02, -5.474e-02, 1.050e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-9.445e-03, 2.921e-02, 3.252e-02, 3.893e-02, 1.005e-02, -4.859e-03, -4.674e-02, 1.608e-01, 2.925e-02, 1.880e-02, 2.260e-02, 7.590e-02, -2.038e-02, -2.356e-02, 1.628e-02, 7.886e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(9.455e-03, -5.660e-02, -1.052e-01, -5.274e-03, -6.135e-02, -8.179e-02, -1.107e-01, -1.935e-02, 1.034e-02, -1.176e-01, -6.398e-02, 1.583e-01, 5.941e-02, 3.042e-02, 1.837e-02, -2.803e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-3.081e-02, 1.476e-02, 1.657e-02, 4.195e-02, -3.626e-02, 7.608e-02, 3.842e-02, 4.796e-02, -6.656e-02, -3.752e-03, -3.697e-02, 1.379e-01, -7.464e-03, -3.674e-02, 3.284e-02, 3.553e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(2.043e-02, -1.019e-02, 8.497e-02, 1.731e-03, -9.904e-03, -3.239e-02, -1.032e-02, 2.618e-02, -6.824e-04, -1.434e-02, 2.077e-02, 1.088e-02, 4.553e-02, 5.940e-02, 1.615e-02, 8.975e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(4.385e-02, -1.275e-03, 1.762e-02, -4.624e-02, -1.838e-02, 1.607e-01, 2.668e-02, 1.225e-01, 2.938e-02, 1.365e-01, -2.292e-02, 1.557e-01, -1.110e-02, 5.304e-02, 3.842e-03, 2.343e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(3.392e-02, -6.344e-02, -9.575e-02, -4.752e-03, 4.125e-04, -1.102e-02, 1.099e-02, -8.342e-03, -2.866e-03, -1.508e-02, -1.331e-01, 1.212e-02, 4.180e-02, 1.615e-03, 4.174e-02, 2.383e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-1.363e-02, -9.332e-03, 8.330e-02, 2.154e-02, -8.812e-03, -1.277e-02, 3.936e-02, -3.334e-02, 2.651e-02, 3.881e-02, 1.296e-01, 4.159e-02, 1.341e-02, 3.450e-02, 5.594e-02, 1.105e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-3.643e-02, -2.067e-02, 3.567e-02, -5.437e-02, -7.273e-02, -4.243e-02, -5.705e-02, -1.305e-01, 6.172e-02, -2.443e-03, 6.441e-02, -5.903e-03, -1.254e-02, 8.162e-03, -1.632e-02, 3.418e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-4.802e-01, 6.184e-02, -3.544e-02, -1.036e-01, -2.562e-02, 1.892e-02, 4.851e-02, -6.488e-02, -4.741e-02, -5.145e-02, 1.207e-01, 9.647e-02, -1.160e-01, -1.308e-02, 1.422e-02, 3.766e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(3.967e-01, 6.075e-02, -3.163e-01, 1.864e-01, -4.300e-01, -4.701e-02, -3.126e-02, -8.230e-03, -5.781e-02, -1.403e-01, 1.836e-01, 1.299e-02, -1.593e-01, -5.722e-02, 6.014e-02, 3.007e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(2.032e-02, 6.265e-02, 5.188e-02, -2.837e-01, 3.251e-02, -6.901e-02, -1.993e-03, -8.952e-03, 6.031e-02, -9.447e-03, -1.757e-02, 1.893e-01, 1.089e-02, -2.471e-02, -7.402e-03, -4.034e-04), r2);\n\tr3 = MulAdd(s1_0_0, M4(7.791e-02, -4.336e-02, 1.327e-01, -3.069e-01, -1.074e-02, 1.285e-02, 7.478e-02, -1.331e-02, -2.778e-02, -5.674e-03, 1.460e-01, 6.762e-03, 1.296e-03, 4.221e-03, 1.274e-01, 8.814e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(8.285e-02, -1.346e-01, 1.918e-02, -1.116e-01, -7.634e-03, 1.180e-02, 9.446e-02, -7.337e-02, -9.324e-03, 4.468e-02, -4.144e-02, -1.055e-02, -2.772e-03, 4.873e-02, 1.810e-02, -1.764e-01), r4);\n\tr5 = MulAdd(s1_0_0, M4(7.933e-02, 1.110e-01, 1.147e+00, -1.040e-01, 1.101e-02, 3.740e-02, -6.454e-02, 2.851e-02, -1.426e-02, -5.342e-04, 1.270e-01, -4.321e-02, -2.806e-02, 5.512e-03, -2.440e-02, 1.257e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(1.345e-01, -8.221e-02, -1.091e-01, 1.252e-01, 2.584e-02, -2.187e-02, -2.715e-02, -1.346e-02, 3.043e-02, 2.786e-03, -2.344e-02, 2.298e-03, -3.089e-02, 3.637e-02, 1.688e-02, -1.985e-03), r6);\n\tr7 = MulAdd(s1_0_0, M4(1.673e-01, -1.093e-01, 6.154e-04, -4.526e-02, -8.353e-03, 3.537e-03, 1.545e-02, -1.523e-02, -3.956e-02, -1.133e-02, -2.632e-02, 4.141e-02, -2.078e-02, 9.263e-03, 9.499e-02, 2.018e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-1.744e-01, -1.818e-02, 7.816e-02, -1.195e-01, -9.394e-03, -5.120e-02, 1.404e-02, -3.259e-02, -5.111e-03, -4.529e-02, -8.846e-02, -5.333e-02, -1.041e-01, -4.181e-02, 4.959e-02, 4.245e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(2.957e-01, 2.463e-01, -3.323e-01, 5.322e-02, -3.675e-01, -1.833e-02, -4.382e-02, 2.652e-03, 4.308e-02, 2.385e-01, -1.679e-01, -7.594e-02, -2.875e-01, -8.561e-02, 1.442e-01, 7.233e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-1.769e-01, -2.027e-01, 2.626e-02, -3.406e-01, 1.107e-02, -2.674e-03, 1.910e-02, 9.334e-02, 2.216e-02, -5.387e-02, -2.730e-02, 3.506e-02, -4.668e-03, -9.056e-03, -4.841e-03, -4.385e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(1.241e-01, -1.622e-03, -4.996e-01, -3.270e-02, -3.367e-02, 1.879e-02, 8.616e-02, -1.381e-02, -3.934e-02, 7.513e-03, -1.598e-01, 3.552e-02, 3.054e-03, -1.931e-02, 2.212e-01, 9.029e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(5.085e-02, -1.105e-01, 6.562e-02, 5.705e-02, 8.063e-03, -1.292e-02, 1.280e-01, -1.885e-01, 1.242e-02, -2.867e-02, -1.123e-01, -1.843e-01, 1.643e-02, 4.495e-03, 2.966e-02, -1.367e-01), r4);\n\tr5 = MulAdd(s1_0_1, M4(4.898e-02, 5.004e-02, 7.642e-01, -1.985e-02, 1.650e-02, -4.286e-03, -2.788e-02, -4.547e-02, -8.138e-02, 3.985e-02, -3.606e-02, 3.623e-02, -3.531e-05, 8.730e-03, 1.895e-02, 2.815e-03), r5);\n\tr6 = MulAdd(s1_0_1, M4(1.130e-01, 1.314e-02, 1.096e-02, -1.691e-02, 2.556e-02, -4.367e-02, -5.012e-02, 3.933e-02, 5.458e-02, -7.593e-02, -1.091e-01, 1.074e-01, -1.865e-02, 1.679e-02, -1.147e-02, 1.093e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(1.148e-01, 1.288e-01, -4.991e-03, -4.185e-02, 2.839e-02, -4.353e-04, 5.859e-02, 1.881e-02, 3.069e-02, 5.097e-02, -4.341e-02, 4.214e-02, 5.312e-02, -5.818e-02, 1.889e-01, 2.154e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(-3.353e-01, 2.936e-03, 1.102e-01, -5.930e-03, 1.705e-02, 1.957e-02, -1.651e-02, 1.157e-01, -3.732e-03, 6.266e-02, 1.214e-02, -8.849e-02, -7.495e-02, 1.028e-02, 5.236e-02, 2.898e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-6.773e-01, 1.502e-01, -1.963e-01, -1.362e-02, -4.676e-01, -1.823e-01, 1.920e-01, 7.887e-02, -4.582e-01, 8.473e-02, -1.698e-02, -1.675e-02, 1.992e-03, -7.974e-02, 9.167e-02, 7.390e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.220e-01, -1.642e-01, 7.797e-02, -3.516e-01, -1.743e-01, 8.669e-02, 6.112e-03, -5.148e-02, -7.692e-02, 3.275e-02, -6.375e-03, -2.326e-02, -2.731e-02, -4.388e-02, -6.109e-04, 3.573e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(1.531e-01, -4.927e-02, 2.888e-01, -7.065e-02, 2.374e-02, 3.919e-02, -7.739e-02, 4.037e-02, -2.686e-03, -4.007e-02, 3.418e-02, -4.187e-02, -7.505e-03, 9.149e-03, 1.299e-01, 1.033e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(5.271e-02, -1.598e-01, 1.021e-01, -6.364e-02, 7.108e-03, 1.210e-02, -1.253e-02, -5.997e-03, 1.120e-02, 1.026e-01, 5.431e-02, -6.707e-03, 2.999e-03, -2.906e-03, 3.775e-02, -1.321e-01), r4);\n\tr5 = MulAdd(s1_0_2, M4(1.240e-01, 7.874e-02, 1.197e+00, -2.513e-02, 5.243e-02, -7.124e-02, -5.251e-02, -1.174e-03, -1.996e-02, -1.351e-02, 5.669e-02, -1.548e-04, 8.485e-03, 1.428e-02, 3.284e-02, -1.747e-03), r5);\n\tr6 = MulAdd(s1_0_2, M4(1.067e-01, 1.168e-01, 8.169e-02, 5.151e-02, -2.536e-02, 7.348e-02, 5.496e-02, 1.199e-02, 5.768e-03, -2.000e-03, 8.283e-02, 4.773e-02, -4.101e-03, -4.629e-03, -5.340e-02, 1.353e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(7.832e-02, 3.387e-02, 3.859e-02, -4.385e-02, 4.929e-03, -1.394e-02, -5.242e-02, 7.464e-02, 2.580e-02, 4.188e-02, -5.189e-03, -7.774e-02, 1.426e-02, -5.026e-02, 1.304e-01, 2.456e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-4.659e-01, -1.046e-01, -5.975e-02, -4.432e-02, 6.215e-03, -1.089e-02, 5.458e-02, 1.122e-01, 1.382e-01, 2.114e-01, 8.327e-02, -3.767e-01, -4.342e-02, 9.720e-04, 2.839e-02, 6.951e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(3.827e-03, -4.264e-02, 9.332e-02, 1.293e-01, 8.836e-02, -9.524e-02, -3.780e-02, -2.319e-02, -4.102e-01, 2.349e-01, 2.072e-01, 5.374e-02, 5.333e-02, -1.141e-01, 3.643e-02, 7.526e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(-6.913e-02, -1.363e-01, 1.983e-02, -2.980e-01, -4.988e-02, 7.864e-02, 3.758e-03, -8.504e-02, -1.202e-01, -1.587e-01, 6.094e-04, 9.750e-02, -1.319e-02, -2.281e-02, -8.121e-03, 4.314e-03), r2);\n\tr3 = MulAdd(s1_1_0, M4(1.071e-02, -1.171e-01, 4.683e-02, -4.208e-01, 7.377e-03, -3.283e-03, -9.366e-02, -2.071e-02, 1.094e-02, -2.646e-02, -7.520e-02, -8.237e-02, -1.024e-02, -1.321e-02, 1.782e-01, 1.115e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(3.292e-02, -1.050e-01, 1.998e-01, -1.454e-01, 4.380e-02, 5.776e-02, 1.099e-02, -3.106e-02, -6.469e-02, -8.443e-02, -2.430e-02, -1.036e-01, 2.183e-02, -6.045e-02, 6.007e-02, -7.744e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(5.882e-03, 7.551e-02, 1.236e+00, -1.587e-01, 2.101e-02, 4.571e-02, 3.435e-02, -6.714e-02, 1.018e-02, -1.465e-01, -4.475e-03, 1.421e-01, -1.160e-02, 2.301e-02, -4.745e-02, 6.028e-03), r5);\n\tr6 = MulAdd(s1_1_0, M4(2.913e-02, 1.733e-02, -9.548e-02, 2.216e-01, 4.097e-02, 8.134e-02, 4.890e-02, 6.356e-02, -3.973e-02, -3.131e-02, -9.047e-02, -8.143e-02, -3.084e-02, 8.639e-04, -2.065e-02, -7.368e-03), r6);\n\tr7 = MulAdd(s1_1_0, M4(-7.080e-03, 1.539e-02, -2.385e-02, 3.853e-02, 1.083e-01, -1.037e-02, -7.667e-02, 5.034e-03, -4.868e-03, -5.033e-02, -7.826e-02, -1.939e-02, 3.358e-02, 1.936e-02, 1.335e-01, 9.902e-03), r7);\n\tr0 = MulAdd(s1_1_1, M4(-3.064e-01, 8.204e-02, 3.999e-02, -1.912e-01, -2.135e-01, -1.221e-01, 3.878e-02, -1.232e-01, -8.678e-02, -2.148e-01, 4.626e-02, -7.446e-02, -6.546e-02, -6.065e-03, 3.180e-02, 1.806e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(8.680e-02, -1.009e-01, 1.040e-01, -5.491e-02, -3.291e-01, -9.735e-03, 6.189e-02, -2.377e-02, 2.093e-02, 5.234e-02, 8.439e-02, 1.927e-02, 1.369e-02, -3.627e-02, -2.357e-02, -4.049e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.344e-02, -3.966e-02, -8.955e-03, 1.105e-01, -3.323e-02, -5.638e-02, 1.547e-02, 2.660e-02, 6.831e-02, 6.664e-02, 1.482e-02, -1.896e-01, -6.082e-03, -1.035e-02, 2.080e-03, 2.396e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-2.775e-02, -8.873e-02, -7.906e-02, -3.407e-01, 1.039e-01, 1.062e-01, 2.155e-01, -8.179e-02, -7.744e-02, 1.990e-02, -2.972e-02, -1.096e-01, 9.024e-03, -2.236e-02, 2.304e-01, 2.015e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.560e-01, -1.405e-01, 2.744e-01, 1.783e-01, -6.518e-02, 4.940e-02, 2.548e-01, -3.594e-01, 7.946e-02, -1.608e-01, 1.032e-01, 2.608e-01, -1.564e-02, -8.869e-02, 2.008e-02, -4.120e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(1.632e-01, 2.807e-01, 8.474e-01, -1.161e-01, 2.384e-02, 2.066e-01, -2.097e-01, 2.388e-02, -4.099e-02, -7.734e-02, 1.905e-01, -4.865e-03, -1.046e-02, 5.508e-02, 2.315e-02, 2.616e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(1.421e-01, -1.758e-02, 6.035e-02, 7.682e-02, 9.019e-02, -1.587e-01, -7.795e-02, 7.594e-02, -4.016e-02, -1.215e-01, -1.137e-01, -1.085e-01, -8.093e-03, 1.973e-02, -3.436e-04, -1.241e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(2.544e-01, -7.225e-02, 1.107e-02, -1.211e-01, 1.417e-01, 5.382e-02, 5.798e-02, 1.645e-01, -8.704e-03, -1.297e-01, 1.080e-01, -9.339e-02, -1.916e-02, -3.020e-02, 1.706e-01, -2.420e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-4.372e-01, 8.461e-02, 1.437e-01, 1.171e-01, 9.846e-02, 3.642e-02, -1.724e-01, 1.728e-01, -1.281e-03, 1.255e-01, 1.528e-01, -9.730e-02, -9.606e-02, -8.496e-03, 1.076e-02, -9.763e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(-1.022e+00, 1.235e-01, -1.919e-01, 6.606e-02, 3.447e-01, -2.204e-01, 2.038e-01, 2.765e-01, 2.245e-01, 1.348e-01, 2.078e-01, 9.507e-02, 4.392e-02, -3.246e-02, -1.540e-03, 8.362e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-7.243e-02, 1.284e-01, 1.061e-01, -1.432e-01, 3.344e-01, 2.038e-01, 5.922e-03, -2.932e-01, 8.374e-03, 2.541e-02, -2.778e-02, 2.991e-02, 2.195e-02, -3.228e-02, 5.435e-03, 1.044e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(1.753e-01, 1.407e-01, -3.281e-03, -2.875e-01, 4.763e-02, -1.466e-01, -3.484e-02, 7.411e-03, -3.892e-02, 1.039e-02, -7.985e-02, -4.807e-02, -1.940e-03, -4.110e-03, 2.281e-01, 6.867e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-1.224e-02, -4.105e-01, 3.076e-01, 2.787e-02, 5.123e-02, 1.773e-01, 1.779e-01, 1.628e-01, -1.746e-02, 5.124e-04, 9.113e-02, 1.400e-01, 2.424e-02, 1.241e-02, 4.441e-02, -1.260e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(1.511e-01, 7.658e-02, 1.246e+00, -2.029e-03, 4.101e-02, -1.116e-01, -2.218e-01, 6.036e-03, -4.218e-02, 5.721e-02, -1.556e-01, 7.087e-03, -3.117e-03, 4.107e-02, 2.723e-02, 1.216e-03), r5);\n\tr6 = MulAdd(s1_1_2, M4(-1.890e-02, 6.528e-02, 2.810e-01, 4.220e-02, -1.933e-01, 1.459e-01, 2.201e-01, 1.636e-01, -5.503e-03, -5.531e-02, -5.367e-02, 4.754e-02, -4.534e-03, -4.117e-02, -4.599e-02, 1.547e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(4.486e-02, -1.540e-01, -1.421e-01, 5.036e-03, -8.667e-03, 7.862e-02, -1.392e-01, -8.959e-02, 9.548e-02, -1.250e-01, -5.670e-02, -4.820e-02, 5.563e-03, -3.401e-02, 1.421e-01, 8.609e-03), r7);\n\tr0 = MulAdd(s1_2_0, M4(-3.145e-01, -8.170e-02, 9.982e-02, -2.160e-01, 3.999e-03, 8.868e-02, -8.923e-03, 4.228e-02, -6.050e-02, 1.489e-01, 5.159e-02, -2.543e-01, -4.682e-02, 5.491e-03, -2.430e-03, 2.391e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(7.974e-04, -1.026e-01, -6.218e-01, 4.457e-02, 2.700e-02, -3.299e-02, -5.112e-02, 1.774e-02, 9.518e-02, 1.845e-01, 1.036e-01, -1.042e-01, 3.497e-02, -9.974e-02, 7.688e-02, 5.380e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-2.561e-01, -2.960e-02, 4.848e-03, -1.547e-01, 5.418e-02, 1.850e-02, -2.041e-03, -1.111e-01, -4.658e-02, -6.993e-02, -3.673e-02, 4.118e-02, -2.484e-02, -5.018e-02, -3.389e-03, 2.236e-04), r2);\n\tr3 = MulAdd(s1_2_0, M4(-3.346e-03, -3.943e-02, 5.442e-03, -4.131e-01, -2.085e-02, -3.007e-02, 7.748e-02, 9.341e-03, -9.392e-02, -2.345e-02, 1.262e-02, -4.906e-02, -8.269e-03, -2.516e-02, 7.508e-02, 1.600e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(2.095e-02, -2.213e-01, 1.417e-01, -1.985e-02, 4.725e-02, -4.807e-02, 3.107e-02, -7.947e-02, 9.302e-02, 9.501e-02, -4.915e-02, -7.166e-02, -3.609e-03, -4.625e-02, -7.423e-03, -1.170e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(6.229e-02, 1.833e-01, 9.741e-01, -4.873e-02, -6.741e-03, -2.065e-02, -2.859e-02, -2.558e-02, -3.784e-02, -2.257e-02, -4.098e-02, -2.381e-02, -3.559e-02, 3.553e-02, 2.220e-02, -2.092e-03), r5);\n\tr6 = MulAdd(s1_2_0, M4(4.033e-02, 1.267e-01, 4.085e-02, -2.594e-02, -1.675e-02, 1.469e-02, 5.898e-02, 5.355e-02, -3.809e-02, -8.039e-02, -3.060e-02, 1.596e-02, -3.395e-03, 2.058e-02, 1.010e-02, -8.330e-03), r6);\n\tr7 = MulAdd(s1_2_0, M4(-8.796e-02, -4.515e-03, 2.333e-01, 6.716e-02, 4.564e-02, 4.897e-02, -3.876e-02, -5.467e-02, 6.712e-02, 8.763e-02, -1.837e-02, -3.485e-02, 3.381e-02, 3.068e-02, 4.391e-02, -2.714e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-3.888e-01, 7.868e-02, 6.346e-02, -1.975e-01, 1.464e-01, 3.414e-02, -8.554e-02, -1.843e-01, 2.718e-01, 2.628e-01, 1.223e-01, -1.758e-01, -2.240e-02, -2.329e-02, 1.251e-02, 2.599e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(2.859e-01, -5.638e-02, -8.466e-01, -3.105e-02, 2.799e-01, 1.126e-01, 5.373e-02, 1.776e-01, -8.350e-02, -3.570e-01, 3.527e-02, 6.534e-02, 4.630e-02, -1.027e-01, 4.495e-02, 5.588e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(4.744e-02, -2.323e-01, 6.523e-02, -4.334e-01, -4.464e-03, 1.002e-01, 2.851e-02, 5.798e-02, 2.587e-02, 6.235e-02, -1.180e-02, 2.007e-01, -6.089e-02, -1.908e-02, -2.336e-03, -8.543e-03), r2);\n\tr3 = MulAdd(s1_2_1, M4(8.333e-02, 4.615e-02, 2.455e-01, -3.650e-01, 7.953e-02, -5.994e-03, -1.744e-01, 3.669e-03, 5.381e-03, 2.584e-02, -5.670e-02, 6.697e-02, 1.049e-02, -2.453e-02, 2.349e-01, 1.542e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(-7.677e-02, 2.040e-01, 1.948e-01, 2.419e-02, 9.228e-02, -1.202e-01, 9.326e-02, -6.982e-02, -1.016e-01, 1.012e-01, -2.204e-01, -1.109e-01, 3.841e-02, 6.106e-03, 3.336e-02, -9.663e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(4.865e-02, 2.077e-01, 8.207e-01, -1.314e-01, 4.254e-02, -1.391e-01, -2.162e-01, 6.291e-02, -2.082e-02, -8.721e-02, -2.997e-02, 9.806e-02, -2.457e-02, 2.352e-02, 4.122e-02, 2.776e-03), r5);\n\tr6 = MulAdd(s1_2_1, M4(7.794e-02, -6.479e-02, 3.864e-02, 3.730e-02, -8.118e-02, 4.408e-02, 9.169e-02, -1.371e-02, 2.646e-02, -2.007e-01, 6.843e-02, -5.533e-02, -1.935e-02, -2.167e-02, -3.900e-02, 7.580e-04), r6);\n\tr7 = MulAdd(s1_2_1, M4(-7.576e-02, 2.673e-02, -9.340e-03, -1.055e-01, 1.679e-01, 1.401e-01, -8.134e-02, 2.902e-02, -9.050e-02, -3.395e-01, -1.691e-01, -1.997e-02, 3.219e-02, 4.285e-02, 1.230e-01, -3.539e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-5.258e-01, 3.368e-02, 2.926e-01, 9.264e-02, 5.676e-02, -5.060e-02, -6.984e-02, 2.830e-02, 1.670e-02, 4.718e-03, 4.709e-02, -3.220e-02, -8.695e-02, 1.812e-03, 1.619e-02, -2.726e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-2.434e-01, 1.266e-01, -2.110e-01, -1.256e-02, 1.999e-01, -8.615e-02, 8.335e-02, 1.941e-01, -1.744e-01, 4.445e-01, 1.681e-01, 1.319e-01, -2.324e-02, -1.084e-01, 7.252e-02, -2.142e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-3.040e-01, -1.092e-01, -9.840e-03, -2.590e-01, -3.160e-01, -4.040e-02, 2.415e-02, 1.324e-01, -9.506e-02, -1.189e-01, -8.770e-04, 2.204e-02, -1.328e-02, -2.303e-02, -6.615e-03, 3.107e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(1.319e-01, 4.252e-02, 6.347e-02, -3.870e-01, 5.451e-03, 2.412e-02, 1.263e-01, -5.163e-03, -3.942e-02, -1.048e-01, -1.391e-01, 1.336e-01, -9.097e-03, -3.213e-02, 1.845e-01, 9.454e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-7.713e-02, -1.751e-01, 3.307e-01, -7.008e-02, -8.131e-02, -1.502e-01, 1.483e-01, -2.013e-02, -8.650e-02, -2.228e-01, -6.886e-02, -4.961e-03, 3.098e-03, -4.517e-02, 5.389e-03, -7.494e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(3.382e-02, 9.041e-02, 1.131e+00, 3.286e-03, 3.035e-02, -1.077e-01, -1.505e-01, 1.827e-02, -1.536e-02, -1.278e-01, -2.355e-01, -1.985e-02, -2.891e-02, 3.457e-02, 9.569e-02, -2.037e-03), r5);\n\tr6 = MulAdd(s1_2_2, M4(9.358e-02, -6.646e-02, 1.017e-01, 1.100e-01, -8.770e-02, 4.431e-02, -1.731e-01, 3.893e-02, -3.441e-02, -1.047e-01, 6.274e-02, -2.404e-02, -5.254e-03, -8.886e-03, 2.557e-02, 4.372e-03), r6);\n\tr7 = MulAdd(s1_2_2, M4(-6.934e-02, -1.249e-01, -3.040e-01, 6.448e-02, -6.934e-02, 7.439e-02, -3.565e-03, -7.579e-02, -1.313e-01, -1.729e-02, -1.646e-01, -1.194e-01, 1.121e-02, -5.722e-02, 1.071e-01, -1.715e-02), r7);\n\tr0 = max(r0, 0.0);\n\tT8[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT9[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT10[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT11[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT12[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT13[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT14[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT15[gxy] = r7;\n}\n\n//!PASS 7\n//!DESC conv6 (32x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T8, T9, T10, T11, T12, T13, T14, T15\n//!OUT T0, T1, T2, T3, T4, T5, T6, T7\n\n#define L0(x, y) V4(O(T8, x, y))\n#define L1(x, y) V4(O(T9, x, y))\n#define L2(x, y) V4(O(T10, x, y))\n#define L3(x, y) V4(O(T11, x, y))\n#define L4(x, y) V4(O(T12, x, y))\n#define L5(x, y) V4(O(T13, x, y))\n#define L6(x, y) V4(O(T14, x, y))\n#define L7(x, y) V4(O(T15, x, y))\n\nvoid Pass7(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-5.940e-02, 2.354e-02, 3.885e-02, -9.157e-02, -1.258e-03, -8.704e-03, 5.516e-02, 5.560e-02, 6.726e-02, 5.143e-02, 3.091e-02, 5.945e-02, -1.983e-02, 2.699e-02, 3.481e-02, 1.287e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.343e-02, -8.713e-03, -2.698e-02, -2.374e-02, -4.265e-02, -1.899e-01, -2.395e-02, -2.278e-02, 5.472e-03, -2.008e-01, 7.802e-02, -7.191e-02, -6.890e-02, -3.575e-03, -3.708e-02, 5.225e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(7.053e-02, 4.355e-02, -1.432e-02, 1.282e-02, -1.210e-02, -1.204e-02, 7.156e-02, 1.061e-03, 3.638e-02, -7.216e-03, 4.072e-04, 2.778e-02, 2.029e-02, -3.547e-02, 2.040e-02, 2.421e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(3.556e-02, -6.544e-02, -1.554e-02, -1.323e-01, -6.689e-02, -2.259e-02, 5.147e-02, 3.193e-02, -1.253e-01, 8.334e-02, 1.952e-02, -6.589e-02, 8.983e-02, -2.205e-02, 4.782e-02, 1.288e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(2.797e-02, -3.868e-02, 1.086e-02, 1.431e-02, -9.767e-02, -2.474e-02, -1.380e-02, -3.751e-02, 3.968e-02, 1.412e-01, 3.219e-02, 8.858e-03, 1.421e-02, 9.929e-02, 2.546e-02, -9.565e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(5.186e-02, -1.811e-02, -3.420e-02, 5.435e-02, -6.041e-02, -2.498e-02, 1.902e-02, -4.880e-02, -2.072e-02, 7.297e-03, -1.765e-02, -2.498e-01, -3.312e-02, 2.395e-02, 1.335e-02, -8.216e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-7.492e-02, -8.537e-02, 6.152e-02, -8.061e-03, 2.042e-02, -1.351e-03, -5.251e-02, -1.300e-02, -8.449e-03, -3.439e-02, 1.811e-02, -6.397e-02, -5.693e-03, 5.147e-02, 2.394e-03, 5.164e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(2.778e-02, 6.215e-02, 6.681e-02, -9.090e-04, 7.734e-02, 5.407e-02, -6.119e-02, -6.534e-03, 3.863e-02, -1.273e-01, 1.248e-02, -4.649e-02, 7.536e-02, 4.810e-02, 1.222e-02, 3.748e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(3.352e-02, -1.620e-01, 3.207e-02, 6.615e-03, 1.743e-01, 4.194e-02, 9.603e-02, -3.164e-03, -7.596e-02, 9.993e-02, 1.094e-01, 6.390e-03, 2.811e-03, -1.694e-02, 2.307e-03, -4.159e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-6.188e-02, -1.281e-01, -7.736e-02, 3.545e-02, 1.642e-01, 6.769e-02, -1.624e-02, -1.321e-02, 5.900e-02, 2.169e-02, -1.756e-02, 1.087e-03, 7.153e-02, -2.169e-02, 6.576e-02, 7.104e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(6.363e-02, 1.109e-01, 9.263e-02, -6.065e-03, -1.357e-01, -1.337e-01, -1.849e-01, -2.894e-02, 5.135e-02, -9.799e-03, -2.366e-01, 5.072e-03, 1.529e-02, 7.997e-02, -1.603e-02, 3.802e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.566e-01, 6.415e-02, 2.111e-02, 2.094e-01, -6.202e-01, 7.469e-02, -5.492e-02, -5.398e-01, 3.623e-01, -2.372e-01, -8.618e-02, -1.344e-01, 2.615e-02, 3.168e-01, -8.128e-03, -1.141e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.598e-02, 1.548e-01, 2.533e-01, -3.570e-02, -7.553e-02, -2.389e-01, 2.976e-02, 3.363e-02, 1.447e-01, 1.168e-01, 5.763e-02, 4.133e-02, -3.298e-03, -9.426e-02, -5.675e-02, -9.835e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-1.377e-02, 2.067e-01, -9.161e-02, -3.820e-02, -1.774e-02, -2.618e-02, 5.421e-02, -1.629e-01, -2.715e-02, 1.280e-01, 1.626e-02, -5.973e-02, 1.094e-01, 2.350e-02, 3.914e-02, 5.838e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(1.423e-01, -2.605e-01, 1.422e-01, -5.840e-02, -6.529e-02, 1.004e-01, -9.692e-02, -7.040e-02, -7.104e-02, 8.043e-02, 5.961e-02, -4.033e-02, -8.450e-02, 1.470e-01, 5.240e-03, 5.238e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(-2.275e-02, -1.785e-01, 7.317e-02, -5.490e-02, 1.426e-01, -3.367e-02, -1.044e-01, -7.369e-02, 4.341e-02, -9.253e-02, 1.478e-02, -4.822e-02, 3.205e-02, 6.415e-02, 1.851e-02, 4.253e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-1.471e-02, 7.145e-02, 1.264e-01, 6.936e-03, -2.558e-02, -8.765e-02, 8.649e-02, -2.207e-02, 2.234e-02, 3.639e-02, 2.527e-02, -1.451e-01, -1.588e-02, 1.162e-02, 6.931e-02, -8.768e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.145e-01, 7.078e-02, -2.288e-01, 2.111e-01, 9.222e-02, 1.344e-01, 5.056e-02, 2.135e-02, -5.252e-02, -3.280e-02, -6.872e-02, -5.349e-02, -7.661e-02, 1.633e-02, 1.452e-01, -5.877e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(4.137e-02, 4.792e-02, -6.279e-02, 1.611e-01, 4.675e-02, 9.667e-02, 4.732e-02, -2.203e-03, -2.852e-02, -4.300e-03, 7.644e-02, 2.959e-03, -4.481e-02, -9.562e-02, 8.460e-02, 3.966e-03), r2);\n\tr3 = MulAdd(s0_0_2, M4(2.439e-01, 1.519e-02, -7.858e-02, -4.183e-01, 2.901e-02, -1.398e-01, -4.186e-03, 7.731e-02, -8.473e-02, -1.652e-01, 7.742e-03, -5.383e-02, -2.033e-01, -2.563e-01, -4.064e-02, 2.317e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(4.223e-02, -3.404e-02, 1.410e-01, 8.023e-02, -4.172e-03, 1.883e-01, -2.589e-02, 6.320e-02, -1.219e-02, -4.745e-02, -1.911e-02, 1.062e-01, 2.470e-02, 6.941e-02, -2.298e-02, 1.822e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-8.320e-02, 2.165e-01, -5.760e-02, -9.599e-02, 5.832e-03, -3.073e-02, 4.571e-03, -1.152e-01, 3.367e-02, -1.065e-01, 5.869e-02, 5.401e-02, -2.280e-02, 1.885e-02, 4.827e-02, 7.416e-03), r5);\n\tr6 = MulAdd(s0_0_2, M4(4.403e-02, -1.232e-01, 3.433e-02, -5.657e-03, -1.211e-01, -2.456e-02, 5.762e-02, -1.256e-02, 3.791e-02, 1.434e-02, 6.001e-02, 1.211e-02, 6.916e-02, 7.408e-02, 8.145e-02, 4.106e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(2.317e-01, -9.190e-02, 1.700e-01, -9.780e-03, 1.586e-01, -8.805e-02, -1.137e-01, -8.578e-03, -7.348e-02, -6.899e-02, 4.411e-02, -4.038e-03, -7.739e-04, 1.629e-02, 9.933e-02, 2.013e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(1.522e-01, -4.546e-02, 7.754e-02, 7.804e-02, 1.356e-01, 3.551e-02, 9.057e-02, 2.640e-02, -4.229e-02, -6.590e-02, -2.952e-02, 7.567e-03, 1.470e-01, 1.642e-02, 7.886e-02, -3.039e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.227e-01, 5.909e-02, 7.337e-03, 2.902e-02, 1.178e-02, -3.816e-02, -4.674e-02, -3.403e-03, 1.219e-01, 2.303e-02, -2.671e-02, 1.015e-01, -4.392e-02, -3.539e-03, 7.426e-02, -3.503e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.678e-02, 5.389e-02, 8.357e-02, 7.598e-03, 1.320e-02, 5.006e-03, -7.856e-02, -2.219e-02, 1.171e-01, -2.493e-02, -7.935e-02, -1.903e-02, -8.287e-03, -2.965e-03, -1.255e-02, -1.892e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(5.288e-02, 4.247e-02, 4.712e-02, 4.065e-02, 2.565e-01, -9.533e-02, 4.035e-02, -5.057e-02, -2.561e-01, -1.345e-02, 1.340e-01, -1.602e-02, 4.690e-02, 1.128e-01, -7.890e-03, -1.338e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(2.354e-02, 7.322e-02, 6.566e-02, -5.431e-02, 7.833e-02, 2.350e-02, 1.890e-02, 5.592e-02, 1.183e-01, 7.245e-02, 2.792e-02, 9.246e-03, 1.950e-02, 1.108e-01, -2.058e-02, 1.145e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(6.754e-03, -1.651e-03, 1.291e-01, -1.139e-01, 6.940e-02, -4.534e-03, -8.293e-03, -1.969e-02, -1.769e-01, 7.267e-02, -1.818e-02, 5.643e-02, -5.814e-02, 6.144e-02, 5.399e-02, 1.748e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(5.301e-02, -6.043e-02, 1.718e-02, 4.112e-02, 7.470e-02, 2.657e-02, -4.357e-03, 1.541e-02, -6.451e-02, 5.656e-03, -4.645e-02, -3.908e-02, -1.971e-02, 9.196e-03, 3.187e-02, 5.433e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(-3.355e-02, 1.940e-03, -8.297e-02, 3.125e-02, 6.210e-03, -5.265e-02, -4.952e-03, 2.773e-03, 4.449e-02, -8.466e-02, -1.623e-02, -1.549e-02, 2.051e-02, -7.203e-02, 2.036e-02, 4.535e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-6.880e-02, -2.642e-01, 2.399e-02, -9.836e-02, -1.453e-02, 1.687e-01, 5.059e-02, -1.718e-01, -1.018e-01, -2.979e-01, -7.793e-04, -2.026e-03, 9.276e-02, 4.639e-03, 1.379e-02, 1.565e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(3.644e-02, -9.054e-02, 4.974e-01, 2.170e-02, -5.390e-02, 4.544e-04, -4.990e-01, -3.722e-02, -7.077e-03, 2.360e-01, 2.427e-01, -1.418e-01, 2.493e-01, -1.711e-01, 4.048e-01, -8.254e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.400e-01, -4.510e-02, -1.470e-01, 1.610e-01, 1.261e-01, -3.686e-05, -4.675e-02, 1.200e-01, 4.037e-02, 1.172e-02, -2.133e-01, 5.994e-02, -2.657e-02, -2.709e-02, 1.657e-01, 1.610e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-3.133e-02, -1.255e-01, -7.456e-02, -1.141e-02, -1.512e-01, -2.380e-01, -1.965e-01, -2.652e-01, -4.017e-01, 1.616e-01, -1.821e-01, -1.045e-01, 1.065e-01, -1.255e-01, -8.318e-02, -1.190e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-1.688e-02, -2.306e-02, 1.423e-01, -3.849e-02, -1.195e-02, -9.229e-02, -1.661e-01, 5.361e-02, -1.236e-01, -5.425e-01, 2.593e-02, 8.817e-02, 1.139e-01, -2.070e-02, 1.265e-01, -1.604e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(-2.758e-01, -6.467e-02, 6.549e-02, 1.158e-02, 1.149e-01, -5.775e-02, -4.183e-02, -2.615e-01, -2.088e-02, -2.784e-01, 5.507e-02, 4.922e-02, 4.277e-03, -8.123e-02, 8.955e-02, -2.182e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-1.711e-02, -3.520e-03, 1.614e-01, 2.986e-02, 1.569e-01, 7.744e-02, 1.395e-01, 1.346e-01, 5.638e-02, -4.402e-03, -6.561e-03, -7.161e-03, 1.381e-02, 1.087e-01, 2.309e-02, 3.968e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(5.268e-02, -1.099e-01, -8.367e-02, 3.347e-02, 5.497e-02, -2.280e-01, 1.529e-01, 1.150e-01, -2.304e-01, 1.963e-01, 1.332e-01, -5.617e-03, -1.064e-02, -9.990e-02, -7.943e-02, 5.603e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-7.741e-02, -3.445e-02, 1.740e-01, -9.087e-02, 7.382e-02, -1.470e-01, 9.014e-02, -1.068e-01, 3.844e-02, 2.494e-01, -2.440e-01, -1.703e-01, -2.894e-02, 1.099e-01, 6.115e-03, -2.755e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.083e-01, 2.807e-02, 1.173e-03, -3.039e-02, 1.830e-01, 1.203e-01, -2.277e-01, 8.306e-02, 9.699e-02, -6.276e-02, 8.840e-02, -1.165e-01, -5.168e-02, -2.414e-02, 1.092e-02, 3.911e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.039e-01, 5.559e-02, -2.594e-01, 1.027e-01, -2.166e-02, -4.142e-02, -7.166e-02, 5.066e-02, -2.172e-02, -3.135e-02, 6.265e-02, -3.411e-02, -1.113e-02, 9.209e-04, 5.069e-02, -1.871e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-2.592e-01, 5.402e-02, 3.331e-02, -7.901e-01, -3.404e-01, 5.265e-02, 2.640e-01, 1.893e-01, -1.237e-01, -3.159e-01, -2.274e-02, -1.964e-01, 1.371e-01, -5.439e-03, 5.476e-02, -9.448e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(-4.357e-02, -7.924e-02, 8.129e-02, -2.195e-02, -3.345e-02, -3.938e-02, -7.829e-03, 9.712e-03, 5.993e-03, -2.784e-01, 2.374e-02, -8.853e-02, -1.101e-03, 2.973e-02, -5.944e-03, 1.746e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(-3.165e-02, -1.039e-01, 1.641e-01, -3.082e-02, 2.005e-02, 3.289e-02, -9.150e-03, -7.991e-02, -9.047e-02, 5.560e-02, -1.493e-01, 3.718e-02, -5.997e-02, 2.026e-01, -1.941e-02, 7.350e-03), r5);\n\tr6 = MulAdd(s0_1_2, M4(7.684e-02, 1.929e-02, -5.148e-02, 4.811e-03, 6.006e-02, 4.390e-02, 1.432e-01, -6.923e-02, 3.893e-02, 2.582e-02, -2.076e-01, 5.295e-02, 8.698e-02, 2.090e-02, -9.988e-02, 6.117e-03), r6);\n\tr7 = MulAdd(s0_1_2, M4(4.452e-02, -2.304e-01, 3.707e-01, 1.749e-03, 7.557e-02, 9.906e-03, -2.465e-01, -6.957e-02, 3.232e-02, -1.252e-02, -1.083e-01, 4.720e-02, 7.148e-02, 1.067e-01, 2.803e-01, 1.456e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(3.882e-02, -1.964e-02, 1.067e-02, 3.933e-02, 6.166e-03, -3.159e-02, 2.277e-02, -3.097e-02, 7.193e-02, -9.759e-03, 6.502e-02, -9.609e-02, -1.208e-02, 1.948e-02, 1.568e-02, 3.835e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(4.165e-02, 3.361e-02, -6.731e-02, -3.573e-02, 3.237e-02, -2.873e-02, 1.470e-01, 2.694e-02, -7.557e-02, 1.594e-02, -3.739e-02, -3.901e-02, 1.515e-02, -2.052e-02, -5.243e-02, 3.053e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.726e-02, -1.539e-02, -5.410e-02, 2.352e-02, 1.230e-02, 5.059e-03, -4.146e-02, -5.424e-03, -1.734e-02, 5.032e-02, 1.005e-01, -5.122e-03, 6.714e-02, -3.857e-03, -8.472e-02, -6.555e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(-2.380e-02, 1.177e-02, 6.958e-02, 5.444e-02, 1.029e-01, 5.166e-02, -5.009e-02, -1.323e-02, -1.871e-01, 6.407e-02, -5.025e-02, -2.175e-02, -1.431e-02, 1.057e-01, 1.452e-01, 9.713e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-5.265e-02, 3.711e-02, 5.872e-03, -6.323e-03, 2.370e-02, -2.767e-02, -3.298e-02, 2.048e-02, -6.877e-02, -2.344e-02, 5.630e-02, -3.252e-02, 6.113e-02, -7.002e-02, 3.538e-02, -4.909e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-2.247e-02, -1.341e-02, -8.680e-03, -5.448e-02, -8.604e-02, 1.991e-04, 1.228e-02, -8.751e-02, 8.910e-02, 4.524e-02, 9.351e-02, 6.220e-02, 1.134e-02, 4.336e-02, -1.023e-01, 4.169e-04), r5);\n\tr6 = MulAdd(s0_2_0, M4(7.639e-02, 6.462e-03, -4.956e-02, 3.358e-02, -2.534e-02, -3.727e-02, 1.807e-02, -1.579e-02, 3.924e-02, 1.507e-02, 2.015e-02, 3.649e-02, -1.284e-02, -3.856e-02, -6.255e-03, 4.105e-03), r6);\n\tr7 = MulAdd(s0_2_0, M4(-3.581e-02, -2.055e-02, -1.970e-02, 1.527e-02, -5.878e-03, -6.546e-02, -2.673e-03, -1.094e-02, -2.520e-02, -6.798e-02, -4.912e-02, 1.043e-02, -2.301e-03, -1.396e-02, -3.518e-03, 9.646e-04), r7);\n\tr0 = MulAdd(s0_2_1, M4(-1.156e-01, -1.220e-01, 9.977e-03, 2.187e-02, 1.081e-02, -6.917e-02, 3.357e-02, -1.290e-01, -4.245e-02, 5.620e-02, -4.421e-02, 8.692e-02, -5.384e-02, 8.422e-02, 1.288e-02, 4.997e-03), r0);\n\tr1 = MulAdd(s0_2_1, M4(2.363e-02, -9.793e-02, 2.187e-01, -1.638e-02, 2.885e-02, -3.859e-02, 2.014e-01, 4.464e-02, 9.240e-02, -1.079e-01, 1.202e-01, -5.502e-03, 1.124e-02, -4.617e-02, 1.527e-01, -1.397e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.161e-03, -4.416e-02, -1.879e-02, 3.813e-02, 5.158e-03, 3.370e-02, -1.450e-01, 2.121e-02, -5.984e-02, -3.603e-02, -2.827e-02, 8.999e-02, -5.875e-02, 5.931e-03, 9.795e-03, -9.057e-03), r2);\n\tr3 = MulAdd(s0_2_1, M4(-7.165e-02, 9.308e-02, -2.351e-02, 1.799e-02, 9.544e-02, -8.745e-02, -5.824e-02, 5.484e-02, 1.002e-01, 1.189e-01, 2.156e-01, 1.946e-01, 5.722e-02, -4.154e-02, -1.383e-01, 1.650e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(7.887e-02, -2.904e-03, 1.182e-01, -1.266e-02, -3.510e-02, -5.543e-02, -1.263e-02, -6.062e-02, -8.496e-03, -2.646e-01, 6.136e-02, -1.292e-02, 1.561e-02, 4.283e-02, 1.270e-03, -2.048e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-4.469e-02, -4.165e-02, -3.635e-02, 5.226e-02, -1.353e-01, -4.573e-02, -1.902e-01, -1.514e-01, 1.354e-02, 5.813e-03, 1.037e-02, 9.134e-02, 1.185e-02, -4.091e-02, -1.799e-01, -2.768e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(6.292e-02, 6.275e-02, 4.067e-03, 7.094e-02, -7.150e-02, 1.482e-03, -1.261e-02, -6.274e-02, 1.658e-02, 1.342e-01, -2.512e-03, -5.574e-02, 6.938e-02, 4.009e-02, -4.521e-02, 7.926e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(9.484e-03, -1.058e-01, -4.767e-02, 6.403e-02, 1.945e-02, -8.708e-02, -5.837e-02, -3.870e-02, 2.016e-03, -3.252e-02, -1.459e-02, -3.710e-02, -3.095e-02, -7.654e-02, 6.358e-02, 6.774e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-7.713e-03, -1.116e-01, 1.057e-01, -3.233e-02, 3.039e-02, 4.050e-03, 1.425e-02, -1.108e-01, 1.245e-02, -8.757e-02, 1.220e-01, 2.188e-02, -4.486e-02, -2.458e-02, 9.033e-03, -4.967e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-2.983e-02, 1.148e-02, -7.002e-03, 8.667e-02, 3.149e-02, 7.407e-02, -2.565e-02, -6.909e-02, -2.203e-02, 2.527e-02, 4.458e-02, 1.036e-01, -6.502e-02, -1.030e-02, 1.336e-01, 2.106e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(2.093e-01, 6.639e-02, -1.445e-01, 1.011e-01, -3.013e-02, -3.081e-02, -3.911e-01, -1.796e-02, 9.233e-02, -2.463e-03, 1.127e-01, -1.046e-02, 3.815e-02, 5.662e-02, -2.462e-02, 6.539e-03), r2);\n\tr3 = MulAdd(s0_2_2, M4(3.099e-02, -7.151e-02, -1.371e-02, -1.257e-01, -1.193e-01, 1.074e-01, 1.023e-01, 2.592e-02, 5.767e-02, -8.755e-02, -2.765e-01, 7.664e-02, -7.541e-02, 4.361e-02, 5.026e-02, -8.915e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(-3.543e-02, -3.170e-02, 4.844e-02, 4.666e-02, 9.071e-03, -7.873e-02, -1.314e-02, -4.084e-02, -3.920e-02, 1.635e-01, -6.616e-02, 2.727e-02, 2.408e-02, -9.045e-03, 9.934e-03, 6.436e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-3.416e-03, -6.406e-02, -7.912e-02, 2.844e-02, 4.062e-02, -3.150e-02, 9.659e-03, -5.367e-02, 5.556e-02, -9.474e-02, -2.795e-01, -5.564e-02, -3.508e-02, -5.833e-02, -1.132e-01, -3.339e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(6.915e-02, 6.618e-02, 3.969e-02, -4.725e-03, 2.505e-02, -5.912e-02, -2.076e-02, -3.061e-02, -1.053e-01, 1.376e-01, 1.368e-01, -1.543e-03, 9.553e-02, 3.118e-02, 1.148e-02, 2.274e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(5.271e-02, -9.970e-02, 1.073e-02, -1.930e-02, 8.514e-03, -6.242e-02, 2.948e-02, -3.730e-02, 5.459e-02, -2.918e-02, -2.502e-02, 3.887e-03, 1.758e-03, -6.412e-02, 9.847e-02, 8.246e-03), r7);\n\tr0 = MulAdd(s1_0_0, M4(7.438e-02, -4.315e-02, -5.910e-03, 4.604e-02, -1.404e-01, -6.178e-02, -4.996e-02, -7.730e-02, 3.635e-02, 2.612e-02, -1.213e-02, -9.343e-03, -9.618e-02, -7.060e-02, -9.788e-02, -1.603e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-4.730e-02, -1.327e-02, 4.203e-02, 2.675e-02, -1.674e-02, -7.079e-02, -5.749e-02, 4.558e-03, 6.720e-02, 2.621e-02, 7.684e-02, 7.320e-03, 2.328e-02, -1.378e-02, -1.719e-02, -1.238e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-3.036e-02, -3.648e-02, -1.920e-02, -1.118e-03, -9.639e-03, 5.323e-02, -1.002e-01, 9.433e-03, -3.520e-03, -5.052e-02, 2.292e-02, -1.160e-02, -9.177e-03, -6.216e-03, -1.980e-02, 1.675e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(-6.009e-02, -7.490e-02, 5.450e-02, 2.055e-01, 7.257e-02, -2.352e-02, -2.018e-02, -4.909e-02, 1.655e-02, 1.372e-01, -4.161e-02, 5.864e-02, 1.578e-01, 9.159e-02, -2.821e-02, -1.092e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(-3.398e-02, 4.154e-02, 4.131e-02, 8.396e-03, -3.048e-02, -7.292e-02, 3.262e-02, 4.045e-03, -1.103e-02, -5.466e-02, -8.496e-03, 1.163e-02, -6.317e-03, -1.556e-01, 1.820e-02, -2.863e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-4.008e-02, -5.498e-02, -5.617e-02, -2.365e-02, -5.416e-02, 7.856e-02, 1.464e-02, -8.602e-02, 1.570e-02, 6.842e-04, 4.650e-03, 1.714e-02, 6.801e-02, -1.141e-01, -2.376e-02, 1.013e-01), r5);\n\tr6 = MulAdd(s1_0_0, M4(2.138e-02, -6.107e-02, -3.327e-02, -8.653e-03, -6.500e-02, 3.612e-02, 4.241e-02, 1.482e-03, -1.686e-02, 5.970e-02, -2.061e-03, 1.241e-02, -7.775e-02, 6.371e-02, -4.304e-02, -5.311e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(4.399e-02, 2.665e-02, -1.570e-02, -1.766e-02, -2.859e-02, -4.850e-02, 4.019e-02, 7.008e-03, -2.399e-02, 1.254e-02, 2.043e-02, 1.052e-02, -2.250e-02, -7.040e-02, 1.898e-02, -4.762e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-2.977e-02, 7.236e-02, 1.148e-02, 3.608e-02, -3.516e-02, -2.082e-02, 4.380e-02, -6.556e-02, 1.706e-02, 1.752e-02, -4.331e-02, 7.997e-02, 7.130e-03, -1.650e-01, -1.961e-02, -7.321e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(6.026e-02, 1.469e-01, 3.087e-02, 2.127e-02, -7.373e-02, 6.519e-02, -2.555e-02, -2.753e-02, 1.641e-01, 2.006e-01, 1.033e-01, 5.464e-02, -4.666e-02, -1.515e-01, 5.641e-02, 4.858e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(6.029e-02, 6.754e-02, -3.632e-02, 4.640e-02, 6.795e-02, 2.901e-03, 9.784e-02, -9.226e-03, 1.067e-01, -1.128e-02, -1.778e-01, 9.756e-03, 6.879e-02, -8.721e-02, -2.198e-01, -1.039e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(1.579e-01, -9.926e-02, -5.555e-02, -3.427e-02, -2.711e-02, 1.016e-01, 5.338e-02, 1.964e-01, 6.237e-02, 1.059e-02, 4.719e-02, 7.481e-02, -2.235e-01, -2.902e-01, -2.956e-02, -8.433e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(5.428e-02, -4.213e-02, -2.923e-03, 5.011e-02, -4.774e-02, -5.601e-03, 6.690e-02, -3.612e-02, 1.287e-01, 7.430e-02, -4.584e-02, -1.003e-02, 7.211e-02, 1.375e-01, -8.033e-02, -9.305e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-3.939e-03, -1.683e-01, -9.148e-02, 3.116e-02, -3.471e-02, 3.216e-02, 3.209e-02, -6.400e-02, -8.827e-03, -6.167e-02, -6.181e-02, -4.553e-02, -1.154e-01, -2.652e-01, -4.882e-02, 1.895e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(2.181e-02, -1.196e-02, -5.549e-02, -2.291e-02, 3.975e-02, -4.514e-02, -2.119e-02, 5.953e-02, -4.102e-02, 8.676e-02, 8.266e-03, 1.945e-02, -1.636e-01, 1.199e-02, -1.046e-01, 3.951e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-9.049e-03, 1.792e-02, 4.067e-02, -2.581e-02, -8.512e-02, -1.506e-02, 7.580e-02, 4.794e-02, 5.151e-02, 4.956e-03, -1.121e-02, 2.141e-02, -4.962e-02, -2.538e-02, -1.346e-02, 3.944e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(1.149e-02, -4.519e-03, -4.751e-02, 5.653e-02, 1.578e-02, -5.754e-02, 2.006e-02, -6.560e-02, 4.468e-02, -1.453e-01, -6.824e-02, 6.214e-02, -3.672e-02, 4.139e-02, -8.078e-03, -1.898e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(2.347e-02, -3.651e-02, -2.759e-02, 4.725e-02, 1.065e-01, 9.559e-02, 1.513e-01, 6.052e-02, -2.947e-02, -3.821e-02, 6.424e-03, -2.270e-03, -5.039e-02, -3.673e-02, 1.983e-02, 3.893e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(2.437e-02, -2.527e-03, 3.140e-02, -1.003e-02, 7.019e-02, 4.223e-02, -8.267e-02, 3.932e-03, 5.350e-02, -1.414e-02, -3.064e-01, -2.115e-02, 2.338e-02, 3.736e-02, -1.264e-01, -1.582e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-5.442e-02, 5.597e-02, 2.152e-02, 1.092e-01, -2.262e-01, -4.287e-01, 2.199e-02, -2.373e-01, -1.051e-02, 8.202e-02, 1.627e-02, 1.213e-01, 3.654e-02, -3.215e-01, 4.368e-02, -2.938e-01), r3);\n\tr4 = MulAdd(s1_0_2, M4(2.247e-02, -2.589e-02, 1.951e-02, -5.477e-02, -5.220e-03, -3.083e-02, -3.911e-02, 1.085e-01, -6.813e-02, 3.436e-02, -2.452e-02, -5.431e-03, 8.143e-03, -3.318e-02, -1.257e-02, 2.664e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-2.893e-02, -3.903e-02, -3.650e-02, 2.287e-02, 2.788e-02, 2.188e-02, -2.919e-02, -1.077e-01, 3.244e-02, -1.194e-01, -4.797e-03, 1.687e-01, 1.774e-02, 8.279e-03, -1.352e-02, -2.412e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(7.699e-02, -2.053e-03, 1.237e-02, -9.878e-03, -1.540e-01, 1.082e-02, -1.479e-02, 8.358e-03, 2.037e-02, 9.391e-02, 4.233e-03, 2.280e-02, -3.099e-02, 2.614e-02, -2.006e-02, -1.713e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(1.314e-02, -3.091e-02, 2.910e-02, 6.190e-04, -1.390e-02, -4.612e-02, -1.338e-03, 6.365e-03, -1.844e-03, 8.847e-02, 1.032e-02, 1.617e-02, -3.002e-02, 2.732e-03, 5.021e-02, -2.954e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-1.956e-01, -3.126e-02, 7.389e-02, 7.820e-02, -3.865e-03, 5.802e-02, 1.343e-01, -1.039e-01, -5.983e-02, 5.467e-05, -5.455e-02, -4.006e-03, 9.130e-02, -1.274e-01, 6.212e-03, -6.125e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(2.067e-01, 3.014e-01, 3.591e-02, 5.767e-02, -2.024e-01, -1.686e-01, -6.890e-02, 2.927e-02, 2.914e-02, -8.048e-03, 6.436e-02, 1.404e-02, 5.119e-02, -2.231e-02, 5.793e-02, 4.565e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.470e-01, -4.186e-03, -4.420e-01, -3.099e-02, 5.190e-02, -2.947e-02, -9.841e-02, 1.480e-02, 2.320e-02, -5.163e-02, 1.053e-01, 1.319e-02, 4.512e-02, -1.255e-01, -4.735e-02, -1.124e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(-3.388e-01, -5.542e-02, 1.007e-01, 1.513e-01, 1.227e-01, 1.447e-01, 2.208e-03, -9.308e-02, -7.739e-02, -3.390e-03, 2.955e-02, 1.448e-01, 6.120e-02, -2.862e-03, -5.012e-02, -1.416e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(-2.208e-02, -2.258e-01, 1.385e-01, 5.127e-02, 4.325e-02, -6.753e-02, -1.309e-02, -1.834e-02, -9.144e-02, -2.554e-02, -1.253e-02, -3.649e-02, -1.587e-01, -4.222e-02, 1.804e-01, 1.358e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.414e-01, 1.824e-01, -7.922e-02, 1.688e-01, -5.175e-03, 3.920e-02, 4.343e-02, -7.500e-02, -2.047e-02, 1.456e-02, -1.798e-02, -5.635e-03, 2.274e-01, 8.596e-02, -1.660e-01, -1.207e-01), r5);\n\tr6 = MulAdd(s1_1_0, M4(2.579e-02, 1.316e-01, -8.193e-02, -4.927e-02, -3.754e-02, -7.466e-02, 9.059e-02, 6.042e-02, 3.279e-02, 8.966e-02, -3.503e-02, 1.047e-03, 1.342e-02, -7.025e-02, -5.502e-03, -1.201e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(-8.955e-02, -1.831e-01, 6.516e-02, -6.568e-02, 4.696e-02, -1.285e-02, 3.343e-02, 4.779e-02, 7.852e-03, 9.888e-02, 1.467e-02, 8.699e-03, 5.184e-04, -1.351e-01, -3.316e-02, -1.099e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(1.781e-01, -1.487e-01, 1.921e-02, -1.067e-01, -1.152e-01, 5.364e-02, 7.059e-02, -1.152e-01, -2.618e-02, -3.727e-02, -2.009e-02, 9.586e-02, 3.828e-02, -2.218e-01, 7.569e-02, -2.300e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(4.589e-02, -3.094e-01, 6.388e-01, -1.220e-01, -5.625e-02, -6.001e-02, -8.415e-02, -1.647e-02, 1.205e-02, 1.941e-01, 1.941e-02, 7.674e-02, 1.689e-02, -1.595e-01, -2.241e-01, -7.803e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.532e-01, 1.023e-01, -7.185e-02, 1.118e-01, 4.850e-02, 5.425e-03, 2.963e-01, 9.272e-02, 3.234e-02, 6.285e-02, 5.285e-02, -3.897e-02, 3.877e-01, 4.286e-02, -7.418e-02, -7.072e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(2.357e-02, 2.271e-01, 9.504e-03, 2.779e-01, 2.037e-01, 1.013e-01, 5.084e-02, -1.246e-01, -8.008e-02, 2.293e-01, 1.001e-01, 2.212e-01, 8.041e-02, -8.175e-02, 7.486e-03, -4.384e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(5.025e-02, 1.847e-02, 4.432e-02, 4.237e-01, -7.426e-03, -3.085e-02, -6.189e-03, -1.199e-02, 1.006e-01, 6.520e-02, 7.281e-03, -3.129e-03, 2.577e-01, 8.153e-04, -5.798e-02, 5.321e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(1.305e-01, -6.106e-01, -6.645e-01, 8.942e-02, -7.880e-03, 7.575e-02, -8.014e-02, -5.471e-02, 1.363e-01, 8.744e-02, 2.300e-03, 2.190e-01, 3.734e-03, -2.694e-01, -6.536e-01, -2.317e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(1.409e-01, 3.517e-01, 3.053e-01, 1.111e-01, -6.610e-02, -8.035e-02, 7.962e-02, 3.526e-02, 8.530e-04, 1.382e-01, 3.399e-02, 3.811e-02, -3.525e-01, 4.322e-02, -1.843e-02, -2.207e-03), r6);\n\tr7 = MulAdd(s1_1_1, M4(-1.879e-01, 2.259e-02, -2.511e-02, 5.971e-02, 2.756e-02, -7.027e-02, 9.540e-02, 2.910e-02, -3.499e-02, 1.470e-01, -1.527e-02, 2.808e-02, 2.612e-01, 1.309e-01, -2.114e-02, -6.152e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-4.947e-02, -2.114e-01, -4.344e-03, 2.210e-02, -1.067e-02, -2.554e-03, 1.469e-01, -1.695e-01, -1.892e-02, -9.975e-02, 4.959e-02, 1.532e-01, 1.118e-02, -2.510e-01, -1.004e-02, 1.059e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-6.524e-02, 9.671e-02, 2.647e-01, -1.159e-01, -8.286e-02, -3.332e-02, -7.812e-02, 3.514e-02, 1.334e-01, -1.477e-03, 2.039e-01, 1.462e-02, -1.967e-02, 3.990e-02, 8.440e-02, -2.691e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(1.631e-01, 9.335e-02, 6.659e-02, 2.200e-02, -3.770e-02, -5.432e-02, -5.157e-02, 8.380e-02, 7.198e-02, -5.987e-02, -4.612e-02, 6.963e-02, -1.252e-01, -7.201e-02, 3.675e-02, 8.987e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(5.096e-02, 4.077e-02, 7.629e-03, 2.700e-01, -3.072e-02, 2.492e-01, -3.721e-02, 3.177e-02, 1.618e-01, 6.389e-01, 1.226e-01, 1.047e-01, -1.126e-01, 1.344e-01, 7.082e-02, -2.468e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(5.794e-02, 1.433e-01, 4.348e-03, 6.999e-03, 1.741e-02, -1.353e-01, -4.720e-02, 6.378e-02, 5.862e-02, 7.463e-02, 3.774e-02, -4.242e-02, -2.601e-02, -5.015e-02, 2.932e-02, 1.376e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(3.127e-02, 3.506e-01, -2.643e-01, -8.171e-02, 6.518e-02, -2.311e-02, 5.851e-02, -8.693e-02, 7.569e-02, -3.611e-02, 4.370e-02, 3.038e-02, 2.759e-03, 1.153e-01, -1.453e-01, 7.571e-03), r5);\n\tr6 = MulAdd(s1_1_2, M4(1.369e-01, 1.615e-01, -5.832e-02, -2.587e-02, -3.985e-02, -1.523e-04, 1.340e-01, 3.139e-02, 1.091e-01, 4.051e-02, -3.725e-02, 6.957e-02, -5.518e-02, 5.894e-02, 2.572e-02, -7.201e-03), r6);\n\tr7 = MulAdd(s1_1_2, M4(-1.324e-01, -1.115e-01, 6.187e-02, -2.219e-02, 3.813e-02, 1.103e-01, -9.591e-03, 1.772e-02, 1.308e-02, 1.184e-01, -1.861e-02, 6.373e-02, -1.487e-02, -3.367e-02, -1.232e-01, 2.472e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(1.047e-01, -2.525e-01, -1.118e-01, -3.358e-01, 9.118e-03, -6.241e-02, -2.743e-03, -6.851e-02, -5.144e-02, 7.682e-02, -1.339e-02, -3.240e-02, -1.470e-01, 8.164e-02, -5.935e-02, -3.971e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-4.896e-02, -6.180e-01, 2.625e-01, -1.646e-02, 5.609e-03, -2.868e-02, -2.468e-02, 3.320e-02, -4.525e-02, -4.295e-03, -4.323e-03, -2.577e-02, 6.073e-03, -2.204e-02, 7.162e-02, -2.055e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.186e-01, 3.845e-01, -2.556e-01, -8.607e-02, 7.487e-02, 9.889e-02, 2.193e-03, 6.979e-03, -5.211e-03, -2.040e-02, 2.937e-03, -5.213e-03, -4.357e-02, -6.316e-02, -3.137e-02, -5.526e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-7.699e-01, -4.599e-01, -7.481e-01, -9.068e-01, 5.758e-03, -7.140e-02, -5.795e-02, -9.272e-02, -4.357e-02, -2.210e-02, 3.180e-02, 2.117e-02, 1.247e-01, 9.858e-03, 3.179e-02, 1.776e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(5.173e-02, -2.112e+00, 2.221e-01, 2.548e-01, 4.754e-02, -1.246e-01, -6.969e-02, 6.981e-02, 5.182e-02, 5.011e-02, 2.397e-03, -1.604e-02, -3.587e-02, -4.183e-02, 4.531e-02, 9.475e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-3.762e-02, 1.889e-01, -3.938e-01, -3.264e-03, 3.606e-02, 1.214e-02, 6.373e-02, 1.568e-02, -3.832e-02, 4.686e-03, 6.691e-03, -4.133e-02, 1.842e-02, 4.318e-02, -4.249e-02, 4.584e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-1.038e-01, -7.162e-01, 2.423e-01, 1.325e-02, -7.543e-02, -1.150e-01, 9.141e-02, -7.007e-02, 3.038e-02, 3.926e-02, -1.344e-02, 4.972e-02, -4.271e-02, -1.181e-02, -1.351e-02, -3.915e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(-1.782e-01, 2.899e-01, -3.390e-02, -1.980e-02, 2.582e-03, -6.707e-02, 1.432e-02, -5.872e-02, 3.055e-03, 3.433e-02, 2.155e-02, 5.319e-02, 2.637e-02, 3.017e-02, -1.496e-02, -2.837e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(4.170e-01, 1.619e-01, 1.225e-01, 6.065e-01, -6.923e-02, -4.213e-02, -1.214e-02, -4.405e-02, 6.701e-02, 1.929e-01, -7.648e-02, 2.603e-02, -4.196e-02, -3.742e-02, -3.881e-02, -2.821e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.609e-01, 2.099e-01, 3.159e-01, 3.270e-01, -7.711e-02, -2.002e-02, -1.204e-01, 9.375e-02, -1.687e-02, 5.910e-02, -3.884e-01, -9.886e-02, -8.439e-03, -8.017e-02, 8.751e-02, 1.394e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-5.643e-02, 8.978e-02, -5.078e-01, 1.961e-01, 4.948e-02, -3.752e-03, -1.590e-02, -8.061e-02, 6.740e-02, -2.940e-02, 1.487e-03, 6.132e-02, 2.158e-02, -5.562e-02, 1.522e-02, -3.316e-04), r2);\n\tr3 = MulAdd(s1_2_1, M4(7.240e-02, -2.763e-01, -2.168e-01, -1.437e+00, 8.852e-02, -2.095e-01, -1.436e-01, 5.108e-02, 8.874e-03, 1.510e-01, 1.072e-01, 3.277e-02, -1.010e-01, 7.852e-03, -3.011e-02, 9.851e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(3.633e-01, -3.527e-02, 4.854e-01, 2.124e-01, -1.707e-02, -1.393e-01, 3.344e-02, 5.388e-02, -3.442e-02, 7.790e-02, -6.025e-03, -4.506e-02, 1.627e-02, 9.562e-05, 3.904e-02, 1.042e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(5.029e-02, 5.407e-02, -9.142e-01, -1.111e-01, -4.085e-02, 1.599e-02, -3.337e-02, -6.776e-02, 1.363e-01, 2.256e-02, 8.341e-02, 2.451e-02, -4.602e-02, 9.256e-02, 2.716e-01, -2.923e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(4.189e-01, -9.742e-01, 1.203e-01, -7.024e-02, -5.762e-02, 1.644e-02, 3.308e-02, -5.854e-03, 8.882e-02, -7.206e-02, 1.336e-03, 4.712e-02, -6.468e-02, -1.008e-01, 6.666e-03, 3.538e-03), r6);\n\tr7 = MulAdd(s1_2_1, M4(1.802e-01, 1.618e-01, -5.341e-03, -4.529e-02, 5.161e-02, 7.733e-02, 9.266e-02, 5.315e-03, -2.985e-02, 1.673e-01, 9.068e-04, 4.585e-02, 4.894e-02, 1.537e-02, 1.037e-02, 6.535e-03), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.558e-01, -5.033e-02, 9.260e-04, 7.709e-01, 8.043e-02, 5.610e-02, 1.010e-02, -1.378e-01, 5.253e-02, -2.120e-02, 5.786e-03, -3.390e-02, 3.875e-02, 1.783e-02, 1.421e-02, 1.018e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-2.183e-02, 6.732e-02, 1.244e-01, 2.080e-03, -1.840e-02, 1.740e-02, 9.344e-02, -1.009e-02, 3.450e-04, -1.147e-02, 5.830e-02, -1.982e-03, 3.685e-02, -1.261e-02, 4.720e-02, 3.371e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.040e-01, 2.475e-01, -1.683e-01, 1.139e-01, 2.126e-02, 1.501e-02, 1.379e-01, 3.681e-02, -4.941e-02, -2.739e-02, -3.089e-03, -6.532e-03, -1.169e-01, -1.019e-02, -1.390e-02, 6.563e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(4.742e-01, -8.653e-02, -5.389e-03, -1.394e+00, 1.937e-01, 5.920e-02, -9.788e-02, -2.416e-01, -2.189e-01, 1.010e-01, -3.973e-02, 1.348e-01, 5.734e-02, -3.504e-02, 5.588e-02, 1.162e-01), r3);\n\tr4 = MulAdd(s1_2_2, M4(1.375e-01, -2.142e-01, 5.678e-02, 3.272e-01, 3.900e-02, -5.117e-02, -5.914e-03, 4.596e-02, -4.017e-02, -1.143e-02, -3.855e-02, -1.042e-01, 1.853e-02, 1.701e-03, 2.167e-02, -4.013e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.344e-02, -1.415e-01, -1.145e+00, 1.589e-01, -1.830e-02, -5.137e-02, 4.797e-02, -1.002e-01, 3.597e-02, 6.809e-02, 1.559e-01, -5.274e-03, 2.441e-03, 5.351e-02, 1.210e-02, -5.092e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(7.516e-02, 1.457e-01, 4.763e-02, -1.378e-01, -3.418e-02, -8.503e-02, 6.204e-02, 5.661e-02, 5.160e-02, -1.349e-01, 1.622e-02, 4.397e-02, -2.354e-02, -7.744e-03, 2.265e-02, 5.761e-03), r6);\n\tr7 = MulAdd(s1_2_2, M4(2.431e-01, 4.278e-02, 5.003e-02, -6.862e-02, 4.871e-02, 2.356e-02, 7.982e-02, 5.543e-02, -9.153e-03, 1.639e-01, 1.912e-02, 4.072e-02, 1.060e-02, 9.386e-02, -3.858e-02, 8.923e-03), r7);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.425e-02, -8.144e-02, 1.538e-02, -1.592e-02, 5.480e-02, 2.174e-02, 1.130e-01, 6.448e-02, 7.594e-02, 5.855e-02, 3.113e-02, -9.225e-02, -2.798e-02, 6.192e-03, -9.032e-02, -2.122e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-5.870e-02, -2.583e-01, -5.290e-02, -3.082e-02, -7.323e-02, -1.638e-01, -3.889e-02, -1.897e-02, 1.489e-01, 1.056e-01, 5.737e-02, -6.107e-02, 6.235e-02, -9.297e-02, 2.758e-03, 1.634e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(5.707e-02, 4.123e-03, -7.140e-02, 2.325e-03, 3.244e-02, 8.694e-03, 1.316e-01, 1.994e-02, -4.853e-02, -5.568e-03, -4.514e-02, -3.568e-03, 2.378e-02, 2.435e-02, -3.523e-02, 7.665e-03), r2);\n\tr3 = MulAdd(s0_0_0, M4(-2.648e-03, 9.739e-02, -3.093e-02, 2.252e-01, 1.969e-02, -1.161e-01, -6.589e-03, 1.031e-02, -1.374e-01, -8.092e-03, -7.070e-02, -4.326e-02, -1.417e-02, 2.699e-02, -5.039e-02, 1.226e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(-4.752e-02, -2.441e-02, -1.533e-02, -6.633e-02, 4.272e-02, 7.779e-02, 1.064e-02, -4.748e-02, 4.959e-02, -9.665e-02, -1.628e-03, 7.863e-02, -5.136e-03, -5.302e-02, -2.796e-02, -2.683e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(4.327e-02, -1.197e-02, 2.067e-02, -1.125e-01, -4.936e-03, 5.805e-02, 5.256e-03, -6.545e-02, 7.368e-03, 1.007e-02, -1.173e-02, -3.628e-02, 3.997e-03, 4.981e-02, 2.426e-02, 5.330e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-3.158e-02, -1.995e-02, 4.028e-02, 2.871e-02, -1.738e-02, -3.772e-02, -3.414e-02, 2.006e-02, 1.519e-02, 2.229e-02, 1.002e-02, 3.242e-02, -1.716e-02, 4.969e-02, -7.759e-03, 1.015e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(-1.996e-02, -4.356e-02, 4.810e-02, 1.962e-02, 7.859e-02, 4.767e-02, 3.274e-03, 7.680e-03, -1.640e-02, -9.756e-02, -2.731e-02, -9.090e-02, -1.434e-02, 8.081e-02, -5.564e-03, 1.721e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(-6.510e-02, 9.893e-02, 8.323e-02, 7.733e-02, 4.673e-03, 1.005e-01, 9.162e-02, 4.243e-02, 3.311e-02, 8.713e-02, -3.772e-02, -2.462e-01, -1.182e-01, -3.695e-02, -1.093e-01, -3.795e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(1.067e-01, 6.618e-02, 1.451e-01, 8.478e-02, 1.074e-01, 1.620e-01, 9.005e-02, 2.395e-02, -8.691e-02, -6.764e-02, 1.023e-01, -1.292e-01, 8.261e-02, 7.612e-02, -5.967e-02, 1.013e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(7.846e-02, -1.961e-02, 1.267e-01, 3.940e-02, -5.040e-02, -3.898e-02, 1.987e-01, 7.918e-02, -4.633e-02, -9.810e-02, 2.527e-02, 3.774e-03, 8.938e-02, 9.776e-02, -3.291e-01, 7.734e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(4.583e-02, -1.603e-01, -2.261e-02, 2.884e-02, -1.064e-01, -3.780e-02, -6.218e-02, -9.270e-02, 1.228e-01, -1.430e-01, -2.382e-02, -1.068e-01, -1.125e-01, -5.796e-02, -3.197e-02, 9.394e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(2.664e-02, -2.252e-02, 1.540e-02, -3.334e-03, 3.839e-02, -3.803e-02, -8.268e-02, 7.836e-02, -1.084e-02, -1.094e-02, -6.119e-02, 7.154e-02, -1.574e-02, -1.229e-01, 1.462e-02, -7.042e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-1.514e-02, 5.103e-02, -1.409e-01, -1.449e-01, 3.811e-03, 1.558e-01, 2.023e-02, 1.543e-01, 2.232e-02, -5.129e-02, -5.962e-02, 7.138e-02, -6.985e-02, 1.108e-01, 1.335e-01, 1.509e-01), r5);\n\tr6 = MulAdd(s0_0_1, M4(-2.844e-01, -6.620e-02, -1.307e-02, -1.143e-01, -1.606e-02, 3.195e-02, 6.673e-03, -1.254e-02, 8.025e-02, 9.372e-02, 6.845e-02, 4.016e-02, 5.306e-02, 7.545e-02, 1.528e-01, -1.443e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(5.841e-02, -3.476e-01, 5.285e-02, -1.052e-01, 5.871e-02, 8.325e-02, -4.799e-03, -2.478e-02, -5.745e-02, 7.665e-02, 5.849e-02, 5.356e-02, 4.770e-02, 1.246e-01, -1.570e-02, -1.495e-03), r7);\n\tr0 = MulAdd(s0_0_2, M4(-1.840e-02, -2.125e-02, -3.094e-02, -2.733e-02, -1.367e-02, -1.067e-01, -5.673e-03, -1.024e-01, -8.904e-03, 1.044e-02, 1.356e-02, -8.915e-02, 7.350e-03, 3.077e-03, -2.137e-01, -2.177e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.284e-02, -4.065e-02, 6.191e-02, -5.591e-02, 3.954e-02, 1.095e-01, -4.033e-02, -1.204e-01, 7.801e-03, 2.792e-02, 1.009e-01, 4.208e-02, -1.645e-02, -1.762e-01, -4.636e-02, -2.395e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-6.831e-03, 2.999e-02, -2.731e-01, -8.779e-04, -2.788e-02, 3.625e-02, 1.847e-01, -1.758e-02, -3.814e-02, 2.616e-02, 1.369e-01, -1.497e-02, 4.198e-02, 8.466e-02, -5.681e-01, 1.977e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(2.473e-01, -1.964e-01, 1.170e-01, 2.419e-01, -6.189e-02, -2.323e-01, -3.429e-02, -2.472e-01, 5.124e-03, -1.224e+00, -5.094e-02, 5.751e-02, -4.082e-01, -4.894e-01, 4.243e-02, 3.438e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(-6.046e-02, 2.872e-02, -1.960e-02, -2.555e-02, 9.292e-03, 3.971e-02, -5.452e-02, -1.287e-01, -5.022e-02, -1.206e-02, 6.928e-03, 5.189e-02, -1.052e-01, -1.023e-01, 1.668e-02, 1.041e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(2.821e-02, -6.154e-02, 1.539e-02, 2.711e-03, 2.539e-02, -2.211e-01, 3.846e-02, 6.184e-02, -1.770e-04, -6.092e-02, -7.713e-03, 3.106e-02, 9.766e-03, -2.437e-01, 1.509e-01, 1.081e-01), r5);\n\tr6 = MulAdd(s0_0_2, M4(-6.269e-02, 1.368e-02, -2.338e-02, 2.687e-02, 8.103e-03, 1.072e-02, 6.424e-02, 1.088e-01, 7.647e-03, 5.462e-03, 1.412e-02, -2.389e-02, 3.187e-01, 6.712e-02, 1.062e-01, 6.547e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-6.814e-02, -5.773e-02, 8.132e-02, 1.960e-02, -6.458e-02, -5.529e-03, -3.309e-02, 1.052e-01, 2.152e-02, -1.052e-01, -6.825e-02, -6.067e-02, -2.978e-01, -2.290e-02, 1.310e-01, 4.755e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-1.820e-02, 5.160e-02, -4.734e-03, -6.204e-02, 2.471e-01, -4.812e-03, 2.087e-01, 1.203e-01, -7.229e-03, -6.216e-02, -1.173e-02, -5.926e-02, 1.782e-03, -2.318e-03, -6.247e-02, -9.972e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-9.553e-02, -2.367e-02, 8.215e-02, 3.546e-02, -4.062e-02, -1.248e-01, 4.854e-03, -1.416e-02, -7.369e-02, 6.197e-02, 1.153e-02, 6.440e-02, 3.436e-02, -4.390e-04, -4.521e-03, -2.598e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(7.895e-02, -1.800e-02, 2.305e-02, -2.736e-02, 2.265e-02, 1.042e-01, -1.655e-02, 1.219e-02, 7.398e-02, 5.618e-02, -5.612e-02, 5.410e-02, -5.672e-02, 5.589e-03, 1.555e-01, 6.487e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(2.244e-01, -6.485e-02, 1.135e-01, 2.511e-01, 2.314e-01, -1.148e-01, -7.900e-03, -1.547e-01, -1.027e-02, 6.222e-02, -2.915e-02, 1.689e-02, -2.192e-01, 7.936e-02, -4.951e-02, 7.043e-03), r3);\n\tr4 = MulAdd(s0_1_0, M4(2.419e-01, 1.133e-01, 1.082e-01, -3.306e-02, 2.196e-01, 2.021e-01, 3.880e-02, 6.758e-02, -6.799e-02, -5.038e-02, -3.701e-02, -9.971e-03, -8.101e-02, 3.728e-02, 5.784e-02, -5.316e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-8.646e-03, -1.683e-02, 7.966e-04, 1.812e-01, 4.244e-02, -7.389e-02, 5.865e-02, -1.500e-01, -3.070e-02, -4.629e-02, -1.235e-01, 3.524e-02, 2.687e-01, 3.035e-02, 5.353e-02, 8.808e-04), r5);\n\tr6 = MulAdd(s0_1_0, M4(-2.477e-02, -1.162e-02, -9.011e-02, 8.193e-03, 1.200e-01, -7.400e-02, -1.719e-02, -1.188e-02, -1.290e-01, -7.054e-02, 1.920e-02, -6.552e-03, 2.017e-02, 6.724e-02, -6.100e-02, -7.588e-03), r6);\n\tr7 = MulAdd(s0_1_0, M4(-7.533e-02, -1.514e-02, -3.862e-02, 1.136e-02, 2.918e-02, -1.183e-01, -5.751e-02, -1.878e-02, 1.580e-02, 3.611e-03, -1.385e-02, -5.985e-02, 2.749e-02, -1.413e-03, -1.779e-02, -1.014e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(8.520e-02, -2.615e-01, 2.685e-01, -5.989e-02, 2.268e-01, 1.770e-01, -3.682e-01, -1.934e-01, -2.098e-01, -8.702e-02, -7.898e-02, 2.188e-01, 2.261e-02, 3.103e-02, 6.395e-02, 1.086e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.854e-01, -2.112e-01, -3.640e-01, 1.333e-01, 1.566e-01, 1.199e-01, -3.350e-01, 3.809e-02, 2.056e-01, -5.803e-02, 1.437e-01, 1.755e-01, -4.672e-02, -2.551e-01, 3.920e-03, -1.980e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.163e-01, 1.053e-02, -2.324e-01, -2.637e-02, -3.724e-02, 3.124e-01, 4.288e-02, 1.552e-01, 6.023e-02, -5.667e-03, -1.961e-02, 1.388e-01, -1.248e-04, 1.199e-01, -2.878e-01, -9.303e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(9.600e-02, -6.794e-04, -2.731e-01, 3.684e-01, -1.110e-01, -5.392e-01, -1.709e-01, -2.069e-01, -8.205e-02, 1.829e-01, 1.881e-01, -6.120e-02, 1.445e-01, 4.243e-02, 1.067e-01, -2.802e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-4.247e-02, 1.239e-01, -1.405e-01, 1.126e-01, -2.115e-01, -2.972e-01, 1.547e-01, 5.712e-02, 8.071e-02, -2.653e-02, 1.840e-01, -5.852e-02, 4.182e-01, 1.367e-01, 1.606e-01, 1.003e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(1.456e-01, -7.796e-02, 2.262e-01, -9.145e-02, 1.628e-01, -1.338e-01, 1.372e-01, 2.416e-01, -9.542e-02, 1.616e-01, -1.613e-01, -3.807e-02, -3.087e-01, -5.259e-02, 6.382e-02, -2.759e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-1.013e-01, -2.564e-01, -1.562e-02, 1.281e-02, -5.255e-03, 4.956e-03, -5.008e-02, -9.353e-02, -9.244e-02, -2.307e-02, 5.259e-03, 9.339e-01, -7.255e-02, 2.350e-02, -2.098e-02, -3.651e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(7.436e-02, -3.189e-02, 1.242e-01, -1.769e-02, 7.729e-02, 2.564e-01, -8.527e-02, -4.916e-02, -3.215e-02, 5.540e-02, 2.910e-02, -6.118e-01, 8.287e-02, -2.285e-01, -5.787e-02, -5.114e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(4.860e-02, -2.233e-01, 1.106e-01, -2.118e-03, -9.446e-02, -3.129e-01, -3.367e-02, -1.492e-01, 8.585e-02, -8.496e-02, 7.982e-02, -5.311e-02, 4.958e-02, 2.871e-01, -1.364e-02, -4.697e-03), r0);\n\tr1 = MulAdd(s0_1_2, M4(-8.900e-03, 9.945e-03, -1.172e-01, -1.702e-02, 7.421e-03, 8.364e-02, -1.309e-01, -1.015e-02, 8.832e-02, -1.091e-02, -9.522e-02, -2.711e-02, -5.992e-02, -9.667e-02, 2.411e-01, -1.558e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-9.448e-02, -4.435e-02, 5.157e-02, 3.130e-02, -1.202e-01, -2.005e-02, 1.345e-01, 7.964e-02, -1.225e-01, 6.034e-02, 2.138e-02, 6.704e-03, -2.417e-02, 1.669e-01, -2.510e-01, 2.280e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(1.792e-01, 1.504e-01, 1.760e-03, -1.486e-01, -4.546e-02, 4.657e-01, 1.468e-01, 1.487e-02, -6.925e-02, 2.378e-02, 1.284e-01, 1.350e-01, -3.322e-01, 6.996e-01, 2.666e-01, -2.961e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(5.649e-02, 7.121e-02, -7.697e-02, -5.475e-02, -1.199e-01, 2.184e-01, -1.604e-02, 8.612e-02, -6.759e-02, 5.398e-02, -1.119e-02, -4.619e-02, 2.713e-01, 2.561e-02, 1.450e-01, -2.370e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(4.949e-03, 3.716e-02, 6.274e-02, 9.949e-03, 9.993e-02, 6.644e-02, 2.953e-02, 2.034e-01, 7.516e-04, 1.036e-02, 4.790e-02, -3.814e-02, -4.571e-02, 1.865e-01, -4.699e-02, 3.066e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-6.951e-02, -5.465e-02, 1.076e-01, 2.125e-02, -3.677e-02, -4.744e-02, 1.375e-02, 5.595e-02, 7.305e-02, 1.077e-01, -3.137e-02, 3.538e-02, 7.652e-02, 9.815e-03, 5.966e-03, 1.252e-01), r6);\n\tr7 = MulAdd(s0_1_2, M4(-4.631e-03, 1.358e-01, -6.416e-02, 1.393e-02, -2.011e-02, -1.205e-01, -3.032e-01, 5.684e-02, 1.350e-03, 4.660e-03, -9.979e-02, -8.263e-02, -1.356e-01, 1.918e-02, -3.746e-02, 1.479e-01), r7);\n\tr0 = MulAdd(s0_2_0, M4(5.237e-02, 2.195e-02, 1.091e-02, -6.368e-02, -1.622e-02, -2.277e-02, 4.625e-03, 2.511e-02, 1.922e-02, 5.425e-02, 7.879e-02, 1.083e-02, 1.095e-03, 1.371e-03, 2.103e-02, -4.527e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.589e-02, -1.343e-01, -2.542e-01, 1.172e-02, 7.709e-03, -5.745e-02, 2.037e-01, 4.730e-02, -4.259e-02, -1.726e-02, -1.515e-01, 2.121e-02, -5.084e-02, -4.136e-02, 2.999e-02, -3.599e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(4.873e-02, 4.618e-03, -1.198e-01, 4.444e-02, -3.946e-02, 2.123e-02, -1.228e-01, -1.683e-02, -3.433e-02, 1.413e-02, 4.122e-02, 7.864e-03, 3.974e-02, 1.404e-02, -3.182e-02, -2.453e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(6.690e-02, 1.750e-01, -4.777e-02, 1.069e-01, -4.861e-02, -1.267e-02, -7.356e-02, -1.363e-01, 4.774e-02, -8.908e-02, -2.373e-03, 1.266e-01, -8.878e-02, 4.032e-02, -5.433e-02, 2.026e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-5.625e-02, 5.125e-02, 4.333e-02, -1.126e-01, -1.033e-02, -4.548e-02, 3.812e-02, 2.686e-03, 9.294e-02, 5.891e-02, 1.398e-02, 7.962e-02, 5.831e-02, 5.287e-02, 2.137e-02, -1.253e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(5.343e-02, 1.792e-02, 7.456e-02, -8.007e-02, -5.642e-03, -5.201e-02, -1.135e-01, -7.487e-03, 2.078e-02, 8.388e-02, 1.346e-01, 4.740e-02, -3.997e-02, 1.108e-03, -2.480e-02, -3.100e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(-9.357e-03, -2.665e-01, -5.230e-02, -7.139e-03, 4.137e-03, 3.872e-02, 1.575e-03, 2.205e-04, 9.979e-03, 5.533e-03, 1.167e-02, 9.543e-03, 9.520e-03, 1.428e-02, 5.744e-03, 2.460e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(3.574e-02, -5.077e-02, 1.216e-01, 2.618e-03, -1.771e-03, -1.507e-01, -2.407e-02, -1.497e-02, 6.031e-02, 6.872e-02, -6.985e-03, 3.485e-02, -1.706e-03, -5.188e-02, 4.438e-02, 2.653e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(6.805e-03, -6.893e-02, -7.440e-02, -1.348e-01, -1.617e-02, -2.230e-02, 8.059e-02, -1.091e-02, 1.840e-02, 1.538e-01, -5.816e-02, -7.121e-02, -1.205e-01, -4.178e-02, -8.480e-02, 2.927e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-2.604e-02, 5.228e-02, -1.796e-01, -2.865e-02, -2.213e-02, 8.515e-02, -1.285e-01, 1.852e-02, -8.330e-02, 3.784e-02, -3.941e-02, -1.169e-01, 2.652e-02, 5.585e-02, 2.209e-01, -5.865e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.301e-01, -2.191e-03, -5.519e-02, 5.770e-02, -1.096e-02, -2.621e-02, 2.750e-01, 9.601e-02, 3.054e-02, 2.415e-02, -7.603e-02, 5.043e-02, 2.817e-02, -2.141e-02, -3.294e-02, -1.084e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(9.495e-03, -3.550e-02, -2.165e-01, -5.089e-02, -2.379e-01, 6.931e-02, -2.072e-01, -1.129e-01, -1.390e-02, -6.979e-02, -2.263e-01, 5.200e-02, -3.015e-01, 8.298e-02, 6.244e-02, -9.816e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(7.196e-02, -1.897e-02, 2.595e-04, -1.055e-02, 3.051e-02, 2.360e-02, 1.326e-01, 6.772e-03, -1.092e-01, -4.636e-02, -7.392e-02, -4.080e-02, -2.086e-04, -1.374e-01, 9.711e-02, -2.956e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-8.258e-02, 1.670e-02, 3.079e-01, 6.490e-02, 7.641e-02, -4.513e-02, -1.706e-01, 5.995e-02, 1.223e-02, -4.897e-02, 1.114e-01, 3.189e-02, -1.403e-01, -1.952e-02, -2.092e-01, 6.464e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(9.293e-02, -1.297e-01, 3.209e-02, 1.014e-02, 1.269e-02, 3.152e-02, 2.006e-04, 3.177e-02, 2.435e-02, 1.354e-02, 4.950e-02, 2.475e-02, -6.144e-02, 1.316e-02, 3.259e-02, -7.007e-04), r6);\n\tr7 = MulAdd(s0_2_1, M4(-3.660e-02, -6.279e-02, 1.487e-01, 2.191e-02, 5.500e-03, -1.475e-01, 1.256e-01, 1.799e-02, -5.932e-02, -6.587e-03, 9.636e-02, -3.221e-02, -8.494e-03, -1.061e-01, -4.440e-02, 2.449e-03), r7);\n\tr0 = MulAdd(s0_2_2, M4(2.127e-02, -2.200e-03, 1.740e-02, -3.776e-02, -1.094e-02, 3.711e-02, 4.078e-02, -6.838e-02, 5.603e-02, -6.928e-02, 1.008e-02, 4.466e-02, 1.083e-02, -4.160e-02, -4.461e-02, 1.607e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(3.941e-02, -8.746e-04, 3.227e-02, 1.268e-02, -4.674e-02, -7.879e-02, 5.158e-02, 3.965e-02, -9.703e-03, 6.457e-03, -1.198e-01, 5.610e-04, -2.406e-02, -2.270e-02, 1.187e-02, 2.936e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(3.223e-02, 8.198e-03, -7.925e-02, 2.666e-03, 7.563e-02, 6.558e-02, 4.762e-02, 1.564e-01, -7.316e-03, -1.673e-02, 3.202e-02, -3.401e-02, 1.716e-01, 9.849e-04, 1.011e-01, 8.392e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(2.029e-01, -2.209e-02, -2.878e-02, 1.948e-01, 8.545e-02, -3.926e-03, 1.111e-03, 9.688e-02, 2.823e-02, -7.948e-02, -1.971e-02, 3.949e-02, -4.039e-02, 1.399e-01, 2.569e-01, 5.397e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(4.786e-02, -2.922e-02, -1.416e-02, 1.796e-02, 6.552e-02, 8.848e-03, 1.299e-01, -1.187e-01, -2.695e-02, 4.183e-02, -4.926e-02, -4.132e-02, -8.033e-02, -1.598e-01, 3.659e-02, -6.572e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(3.809e-02, 1.778e-02, 6.606e-02, -3.380e-02, 1.910e-02, -6.038e-03, -6.099e-02, -7.603e-03, 5.683e-02, 3.709e-02, -8.530e-02, -4.445e-02, 7.480e-02, 1.314e-01, -2.894e-01, 6.382e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-5.917e-02, 3.924e-02, 2.552e-03, -1.660e-02, -2.663e-02, 2.411e-02, 1.618e-02, -7.680e-03, -3.943e-02, 3.228e-02, 4.755e-02, 1.611e-02, -1.342e-01, -4.332e-02, 1.872e-02, 2.361e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-1.059e-02, 1.062e-03, 1.552e-01, -5.876e-03, -3.487e-02, 2.825e-02, -1.841e-01, 1.479e-02, 4.821e-02, -1.046e-02, -5.637e-02, -1.789e-02, 6.488e-02, 8.475e-02, 2.017e-01, 3.427e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-4.275e-02, -2.620e-02, -6.727e-02, -9.202e-02, 3.238e-02, -3.663e-02, 3.835e-02, 1.598e-01, 3.823e-03, 1.062e-01, -7.419e-02, 1.031e-01, 7.069e-02, -2.013e-02, -1.861e-03, 2.022e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(3.002e-02, 2.152e-01, 9.879e-02, 2.961e-02, -4.022e-02, -1.767e-01, 1.976e-02, 8.648e-02, -5.337e-02, 7.350e-02, -4.709e-02, 1.070e-02, -4.439e-02, -1.327e-02, 1.343e-01, 4.272e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-3.219e-03, 9.789e-03, 4.912e-03, -7.196e-03, 4.239e-02, 9.052e-02, -1.145e-01, -2.611e-02, -2.995e-02, -1.634e-01, -4.175e-02, -2.704e-02, 8.476e-02, -9.831e-02, -1.023e-01, 2.093e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(6.960e-03, 1.612e-02, 2.264e-02, -6.586e-03, -1.437e-01, -2.734e-01, 6.292e-02, -8.307e-02, 5.088e-03, 9.362e-02, -4.328e-02, 1.778e-01, -6.580e-04, -2.984e-02, 1.414e-02, 1.251e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(-8.373e-02, -9.252e-02, -8.625e-03, -3.552e-02, -9.123e-03, -1.114e-01, 4.173e-02, -4.849e-02, -4.993e-02, 6.557e-02, 5.347e-02, -4.153e-02, -2.240e-02, 1.614e-02, 9.741e-03, -1.134e-01), r4);\n\tr5 = MulAdd(s1_0_0, M4(-5.647e-02, -3.060e-02, -3.845e-02, 7.948e-02, -5.995e-02, 5.273e-02, -6.545e-02, 2.136e-01, 4.206e-02, 9.002e-02, 6.321e-02, 4.972e-02, 2.210e-02, -4.570e-02, -2.290e-02, -8.081e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-2.007e-02, 6.283e-02, 5.258e-02, -2.946e-02, 2.242e-02, -9.028e-02, -5.409e-02, 8.118e-03, 5.493e-02, 1.706e-02, -1.382e-01, -3.967e-02, 1.043e-01, 6.159e-02, -1.009e-01, 6.416e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-5.832e-02, -8.023e-02, 2.027e-02, 5.367e-02, 1.938e-02, -4.769e-02, -9.183e-03, -1.579e-02, 2.630e-02, 1.044e-01, 6.674e-02, -2.949e-02, -1.457e-02, 1.422e-02, 7.085e-03, 3.968e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-3.563e-03, -3.377e-02, 5.338e-02, -8.199e-03, 5.560e-03, -3.028e-02, -2.399e-02, 2.321e-01, 2.705e-02, -5.503e-02, -8.217e-02, 2.639e-02, -3.757e-02, -2.773e-01, 1.145e-01, -4.268e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.169e-01, -1.257e-01, 2.208e-01, 3.620e-02, -8.683e-03, 8.576e-03, 2.301e-01, 4.053e-01, -2.635e-02, 5.564e-02, 1.333e-02, -8.527e-02, 1.115e-01, -2.202e-02, 5.808e-03, 2.013e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(4.750e-02, 1.046e-01, -9.207e-02, 2.364e-02, 5.369e-02, 2.336e-01, 1.356e-02, 8.510e-02, -3.889e-02, 6.364e-02, 1.831e-01, -3.847e-02, 1.185e-01, 1.427e-01, -2.168e-01, 5.017e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(1.344e-01, 4.917e-01, 4.778e-02, 2.449e-01, -2.414e-01, 1.766e-01, 1.193e-02, 2.186e-01, -1.405e-01, 3.273e-02, 6.287e-03, -1.999e-01, 3.003e-02, 2.506e-02, -4.128e-02, 6.637e-03), r3);\n\tr4 = MulAdd(s1_0_1, M4(1.209e-01, 9.638e-02, 4.844e-02, 7.297e-04, 8.323e-02, -3.425e-02, -1.888e-01, 7.963e-02, -9.536e-02, -2.914e-02, -4.033e-02, -1.865e-02, -3.029e-05, 1.652e-02, -8.156e-03, 5.478e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.421e-01, -2.021e-01, -1.115e-01, -1.568e-01, 4.142e-02, 4.866e-01, -1.641e-01, -7.103e-02, 1.234e-01, 1.017e-01, 3.952e-02, 3.599e-03, 2.850e-02, 5.065e-02, 3.526e-02, 1.014e-01), r5);\n\tr6 = MulAdd(s1_0_1, M4(3.449e-02, 7.628e-03, -4.293e-02, 3.945e-02, -2.136e-01, -1.576e-01, -2.749e-02, 3.120e-02, -6.338e-02, -2.273e-02, -2.652e-02, 1.530e-02, -9.778e-03, 1.228e-01, 3.326e-02, 4.996e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-7.789e-02, 1.259e-01, 1.687e-03, 5.053e-02, 2.918e-01, 1.945e-01, 6.050e-02, 1.489e-01, 6.395e-03, 2.640e-02, -1.950e-02, 7.558e-03, 7.814e-02, 4.016e-02, 5.224e-03, 3.262e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(-1.016e-03, 3.229e-02, 8.035e-03, -2.217e-03, 4.750e-02, -1.332e-01, -9.080e-02, 6.084e-03, 4.590e-02, 1.227e-02, 4.795e-02, 2.076e-01, -2.728e-02, 4.960e-02, 6.040e-02, 1.560e-01), r0);\n\tr1 = MulAdd(s1_0_2, M4(7.738e-02, 1.662e-02, 6.163e-02, 2.326e-01, -1.861e-02, 1.140e-01, 1.660e-01, 7.067e-02, 6.357e-02, -6.777e-03, 9.737e-02, 4.343e-02, -7.707e-02, 9.363e-03, 5.628e-03, 9.303e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-9.959e-04, 1.047e-01, -9.745e-02, 3.778e-02, 9.033e-03, 5.310e-02, 4.775e-02, -2.173e-02, 1.613e-02, -1.456e-01, -6.093e-02, 6.427e-03, 5.284e-02, 3.349e-02, -8.907e-02, 4.516e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-6.245e-02, -9.659e-01, 5.249e-02, 3.472e-01, 1.993e-01, -7.586e-01, 2.283e-02, -8.668e-02, 6.980e-02, -1.063e+00, -5.757e-03, -5.227e-02, -9.234e-02, -8.936e-01, 1.278e-01, 1.190e-01), r3);\n\tr4 = MulAdd(s1_0_2, M4(7.511e-02, -7.208e-03, 2.815e-02, 3.132e-02, 1.288e-02, 1.360e-01, -6.525e-02, -9.010e-02, 4.644e-02, 4.844e-04, 1.423e-02, -1.519e-01, 3.261e-02, 6.247e-02, 2.447e-02, 5.797e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-1.018e-01, 9.432e-02, -6.071e-02, -6.047e-02, -2.811e-02, 8.331e-02, -7.029e-02, -2.412e-02, -4.752e-03, 1.846e-01, -1.093e-02, -3.461e-02, -2.427e-02, -1.401e-01, -6.004e-02, -8.591e-03), r5);\n\tr6 = MulAdd(s1_0_2, M4(-8.295e-02, -4.089e-02, -9.648e-03, -5.073e-02, -3.513e-02, -6.115e-02, -5.714e-02, 5.525e-02, -1.561e-02, -2.245e-02, -8.456e-02, -2.878e-02, 1.336e-01, 3.805e-02, -6.913e-02, -1.331e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(6.205e-02, -1.088e-01, 6.151e-02, 6.309e-02, 3.565e-02, -1.254e-02, 2.088e-02, 3.705e-02, 1.221e-02, 1.143e-01, -2.667e-02, -3.501e-02, -1.731e-02, -3.491e-02, 3.878e-02, -2.392e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-1.544e-01, -6.314e-04, -3.369e-02, -9.145e-02, 5.549e-02, 9.226e-02, 7.774e-02, 9.741e-02, 2.803e-02, 7.079e-02, -1.927e-03, -6.704e-02, -5.756e-02, 6.933e-02, 7.155e-02, 1.460e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(-3.895e-02, 1.059e-01, 1.282e-02, -3.065e-02, 1.435e-01, -1.411e-01, -1.513e-01, 3.338e-03, 1.501e-02, 1.332e-02, -3.450e-02, -3.778e-02, -1.478e-01, -1.133e-01, -6.039e-02, -5.610e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-2.721e-02, -9.785e-02, 1.783e-01, -3.846e-02, -2.407e-02, 1.135e-01, -2.043e-02, -5.424e-02, -1.266e-01, -1.390e-02, 8.909e-02, -4.347e-03, 8.281e-03, -5.973e-02, -7.578e-02, -3.093e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-9.147e-02, 8.106e-02, -3.372e-03, 9.986e-02, 1.452e-01, -1.161e-01, -8.106e-02, 1.738e-01, 7.076e-02, -1.352e-01, -2.385e-02, -2.934e-02, -1.183e-01, 1.219e-01, 1.326e-01, 1.675e-01), r3);\n\tr4 = MulAdd(s1_1_0, M4(4.046e-02, 1.085e-01, 2.809e-02, 2.863e-02, 2.757e-01, 1.542e-01, 1.584e-01, 9.989e-02, -1.095e-02, 1.241e-02, -5.367e-02, 7.053e-02, 7.109e-02, 8.548e-02, 1.521e-01, -8.131e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.214e-01, 5.152e-02, 7.615e-02, -1.497e-02, 1.345e-01, 3.847e-02, 3.808e-02, -4.738e-02, 1.644e-01, -5.329e-02, -2.509e-02, 1.228e-02, -1.343e-01, 1.900e-02, 9.133e-03, -1.152e-01), r5);\n\tr6 = MulAdd(s1_1_0, M4(-2.738e-02, 6.868e-02, 5.998e-02, 1.164e-01, 1.772e-01, -1.885e-01, 9.973e-03, -5.398e-02, -8.609e-03, -3.082e-02, -5.589e-03, -4.759e-02, -1.067e-02, 7.041e-02, -3.660e-02, 4.726e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(-2.588e-02, 1.881e-01, 5.529e-02, 1.144e-01, -1.336e-02, 1.801e-01, -1.430e-01, -5.974e-02, 2.918e-02, -1.913e-02, 6.095e-02, -5.186e-02, -4.824e-02, 4.725e-02, -1.402e-01, 4.993e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(2.359e-01, -3.712e-02, 2.974e-01, 1.471e-01, -9.007e-02, -7.435e-03, -5.285e-02, -3.428e-01, -3.886e-02, -5.008e-02, -8.678e-02, 3.568e-02, 4.689e-02, 2.400e-01, 6.014e-02, -1.380e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-6.487e-02, -9.861e-03, -3.153e-01, 1.034e-02, -2.958e-01, 1.040e-01, -2.101e-01, -1.050e-01, 5.988e-02, 1.752e-02, -1.434e-01, -1.644e-02, 1.114e-03, 6.187e-02, -7.975e-02, -1.721e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-1.320e-01, 1.778e-01, -2.138e-02, -2.490e-01, -3.349e-02, -4.041e-01, 1.154e-01, -1.489e-01, 3.185e-03, 9.005e-02, 2.042e-01, -4.086e-02, 2.392e-01, 2.916e-01, -2.651e-01, 1.788e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(3.155e-01, 2.678e-01, 3.447e-01, 5.695e-02, 4.027e-02, -6.059e-02, 4.526e-02, 4.590e-02, 1.347e-01, -2.340e-01, 2.000e-01, -3.481e-01, 1.825e-01, 1.686e-01, -6.959e-02, -1.896e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(4.853e-01, 4.946e-01, 3.868e-01, 1.052e-01, -1.782e-01, -1.589e-01, -2.410e-02, -1.728e-02, 8.285e-02, 1.901e-02, 6.907e-02, 5.437e-02, -1.629e-01, -1.107e-01, -1.443e-02, -6.758e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(9.143e-03, 1.577e-01, 1.585e-01, -4.487e-02, -1.874e-01, -2.654e-01, 2.185e-01, -2.977e-02, -1.097e-01, -3.332e-02, -4.294e-02, -7.686e-02, 1.238e-01, 7.061e-02, 9.985e-02, 1.350e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(-7.469e-03, 7.879e-02, -4.863e-02, 2.787e-02, 2.473e-01, 3.665e-01, -1.179e-01, 1.168e-04, -1.384e-01, -4.795e-02, 2.172e-01, -1.652e-02, -7.248e-02, -2.817e-01, -2.563e-02, -5.255e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(8.780e-03, 2.075e-01, -1.473e-02, 5.178e-01, -4.480e-02, -1.695e-01, 1.202e-01, 2.899e-02, 6.382e-02, -1.791e-02, -8.987e-02, -4.557e-06, -8.697e-02, 8.698e-02, 6.518e-03, -3.926e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(2.133e-02, -5.042e-02, -1.130e-02, -1.170e-01, -3.796e-02, 6.390e-02, 1.135e-02, 2.052e-01, 4.406e-02, 1.184e-01, 3.096e-02, -3.670e-02, -6.267e-02, -2.588e-01, -6.851e-02, 3.188e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.911e-02, -8.240e-02, -7.793e-02, -2.448e-01, 4.978e-02, 7.484e-03, -2.427e-01, -9.604e-02, -5.736e-02, -9.534e-03, -7.495e-02, -9.350e-02, 1.094e-01, -4.106e-02, -5.142e-02, 2.823e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-2.158e-01, -6.944e-02, -1.124e-02, -1.171e-01, 1.122e-01, 1.764e-02, 3.836e-02, 1.094e-01, -5.854e-02, -6.388e-02, 1.169e-01, 8.796e-03, -1.029e-01, 1.592e-03, -9.979e-02, 6.785e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-3.829e-02, 8.731e-02, -1.201e-01, -7.380e-02, -7.994e-02, 7.780e-02, 3.404e-02, -2.685e-01, -2.195e-01, -4.555e-03, -1.522e-02, -8.278e-02, -3.013e-02, 2.066e-01, -1.299e-01, -1.490e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.028e-01, -1.437e-01, -5.244e-02, -1.507e-01, -3.596e-02, -5.852e-02, 1.791e-02, 7.587e-02, 7.339e-03, -2.235e-02, 1.047e-02, 4.623e-02, -1.234e-01, -1.145e-01, 2.246e-02, -8.175e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(4.257e-02, -1.939e-01, 1.422e-01, 1.052e-01, 7.258e-02, -1.247e-01, 1.382e-01, -3.529e-03, 7.748e-02, -1.911e-02, 2.013e-01, 6.680e-02, 1.517e-03, -5.821e-02, -7.967e-02, 3.409e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(2.134e-01, 1.640e-02, 1.636e-01, 5.215e-02, -1.248e-01, 6.445e-02, 2.334e-02, 1.183e-02, 4.499e-02, -1.123e-01, -1.096e-01, 2.342e-02, -6.202e-02, -5.195e-02, 1.171e-01, 7.274e-03), r6);\n\tr7 = MulAdd(s1_1_2, M4(-2.499e-02, -5.155e-02, 6.009e-02, -2.309e-01, -2.546e-02, -3.863e-02, 1.324e-01, -9.248e-02, 1.306e-02, 1.149e-02, 6.772e-02, 1.094e-02, -3.186e-02, -8.571e-02, -1.737e-01, 9.114e-03), r7);\n\tr0 = MulAdd(s1_2_0, M4(3.152e-02, -1.573e-02, -4.788e-02, -1.531e-01, 6.856e-03, -9.487e-02, 1.036e-01, 4.345e-02, 3.746e-02, 2.673e-04, -1.091e-02, 1.164e-01, -7.596e-02, 5.534e-02, -8.473e-02, 2.561e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(-7.516e-02, 3.923e-02, -1.372e-01, -1.110e-02, 3.669e-02, -5.394e-02, 1.446e-02, -1.926e-02, 9.496e-02, -1.535e-03, 1.499e-01, -2.276e-03, 1.281e-02, 7.134e-02, 1.009e-01, -8.203e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(2.567e-02, 5.288e-02, 3.575e-02, 2.656e-02, -8.979e-02, -4.499e-02, -1.293e-01, -1.240e-02, -4.722e-02, -5.345e-02, -1.038e-02, -2.482e-02, -7.250e-03, -1.795e-01, 2.782e-02, -3.040e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-4.690e-02, 2.178e-02, 2.771e-02, 6.392e-02, 1.375e-01, 3.627e-02, 6.198e-02, -1.326e-01, -1.395e-01, -7.413e-02, -6.077e-02, 7.602e-02, -6.769e-02, -3.521e-04, 8.584e-03, 8.852e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-7.153e-02, -3.095e-02, -1.063e-01, -2.235e-03, 1.111e-01, 1.704e-01, 1.607e-01, 1.812e-03, -1.594e-03, 3.222e-02, -9.431e-03, -1.120e-02, -6.631e-03, 4.300e-04, 2.755e-02, -7.576e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-2.107e-02, -3.428e-02, 3.840e-02, 2.463e-02, -7.150e-02, -1.125e-02, -4.505e-02, -1.020e-01, 4.909e-02, 7.545e-02, 4.258e-02, 5.675e-02, -1.989e-03, 5.223e-02, 6.941e-02, 2.727e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-7.388e-02, 2.167e-02, -3.046e-03, -2.321e-02, 4.412e-02, -6.840e-02, 6.395e-02, 1.134e-02, 6.134e-02, 1.982e-02, -9.004e-02, -2.852e-02, 1.530e-01, -5.288e-02, -1.870e-01, 3.851e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(6.828e-03, -3.542e-02, 1.146e-01, -3.891e-02, -2.339e-02, 5.185e-02, -8.748e-02, 4.480e-02, -2.748e-03, 5.757e-02, 3.983e-02, -2.731e-02, 4.797e-02, 1.113e-01, 2.144e-02, 4.128e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(7.642e-02, 1.415e-01, -1.096e-01, 2.028e-01, -8.643e-02, -8.568e-02, 1.401e-01, -1.030e-01, 1.903e-02, -1.007e-01, 4.459e-02, 1.018e-01, -7.266e-02, -4.941e-02, 1.632e-02, 1.108e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(9.774e-03, -2.020e-02, -2.130e-01, 5.947e-02, 6.062e-02, 1.080e-02, 8.963e-02, -2.125e-01, -3.125e-03, -2.105e-02, 1.814e-01, 8.221e-02, -4.784e-02, 7.493e-02, -1.809e-01, 7.397e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(5.967e-02, 9.917e-02, -6.860e-02, -3.560e-02, -9.661e-02, -3.211e-02, 1.500e-01, 5.139e-02, 1.551e-02, -2.920e-02, 1.615e-02, -5.348e-02, 1.179e-01, 2.977e-02, 1.283e-01, 8.487e-03), r2);\n\tr3 = MulAdd(s1_2_1, M4(-8.975e-02, 1.319e-01, 9.952e-02, -4.766e-03, -6.552e-02, -6.817e-02, 7.924e-02, -1.838e-01, -1.455e-01, -1.530e-03, 7.462e-02, 6.173e-02, 9.037e-02, 5.151e-02, -4.928e-03, -3.042e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(5.209e-02, -1.690e-02, 4.847e-02, -6.973e-02, -2.732e-02, 8.061e-02, -5.141e-02, 7.529e-02, -3.331e-02, -7.493e-02, 1.846e-02, 3.175e-02, 8.327e-03, -2.756e-03, 8.229e-02, 6.395e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(6.445e-02, 1.271e-01, 8.169e-03, 2.984e-02, -4.353e-02, -1.645e-01, -7.486e-02, 4.843e-02, 1.870e-03, 1.049e-02, -4.991e-02, -1.892e-02, 8.850e-02, 4.262e-02, -5.263e-02, 3.964e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-5.658e-02, 9.601e-02, 9.187e-03, -8.514e-03, 8.756e-02, 1.807e-02, 5.469e-02, 3.401e-02, -8.225e-02, 1.619e-01, 2.224e-02, -5.016e-02, -7.639e-03, 1.454e-02, 1.866e-02, -3.061e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(3.290e-02, 7.171e-02, -5.158e-03, -1.493e-02, -9.499e-02, -1.043e-01, 5.225e-02, 5.132e-02, 2.847e-02, -8.789e-02, -1.299e-01, -5.271e-02, -3.273e-03, -8.504e-03, 6.992e-02, -1.075e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(2.086e-02, 1.080e-02, -3.626e-02, -1.769e-03, 1.201e-02, 4.610e-02, -8.526e-02, -8.011e-02, -2.603e-02, 6.718e-02, 4.572e-02, 2.283e-01, 2.813e-02, 6.523e-02, 6.660e-02, 1.024e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(6.268e-02, -1.596e-02, 6.104e-02, 1.030e-01, -2.692e-02, 1.261e-03, 3.837e-02, -7.785e-02, -2.805e-02, 2.651e-02, 2.446e-01, 1.457e-02, 4.256e-02, -6.373e-03, -2.596e-02, -2.326e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-6.465e-02, 4.945e-02, 1.654e-02, -4.816e-02, 7.982e-03, 5.732e-03, -8.129e-02, -5.053e-04, 7.306e-02, -9.788e-02, 1.893e-02, 7.926e-05, -2.529e-02, -8.999e-02, 4.903e-02, 6.737e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(2.881e-02, -3.805e-02, 1.564e-02, 1.259e-01, -6.380e-02, -6.581e-02, -2.989e-02, -1.347e-01, 1.411e-01, -1.367e-01, -7.766e-03, 6.065e-02, 1.091e-02, -9.369e-02, -1.150e-01, 2.094e-01), r3);\n\tr4 = MulAdd(s1_2_2, M4(5.069e-02, -4.854e-02, -2.619e-02, 3.206e-02, -1.184e-01, -5.719e-02, 1.102e-02, 4.207e-03, 6.139e-02, 7.158e-02, 3.370e-03, 1.963e-02, 1.766e-02, 8.235e-02, 4.151e-04, -1.246e-01), r4);\n\tr5 = MulAdd(s1_2_2, M4(8.736e-03, 1.275e-01, -1.863e-01, -2.174e-02, -2.064e-02, -1.619e-01, -9.140e-03, 3.758e-02, -1.706e-02, 2.887e-02, -1.753e-01, -1.077e-02, 2.198e-02, 9.758e-02, 1.287e-01, -4.795e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-7.144e-02, -1.036e-02, 2.262e-02, -5.455e-02, -6.506e-03, 3.130e-02, 7.007e-02, -1.203e-02, 8.244e-02, 4.825e-02, -1.636e-01, 2.320e-02, 7.745e-02, -1.039e-01, -7.516e-02, 9.344e-04), r6);\n\tr7 = MulAdd(s1_2_2, M4(7.378e-02, -2.100e-02, -4.704e-02, 1.525e-02, -6.130e-02, -9.537e-02, -1.840e-02, -2.944e-02, 4.782e-02, 2.546e-02, 2.838e-02, 1.265e-02, -2.896e-02, 1.809e-01, 3.971e-02, 2.525e-02), r7);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-3.086e-02, 6.584e-02, 6.024e-03, 7.602e-02, -8.133e-02, 1.155e-01, -1.257e-01, -5.558e-02, 3.184e-02, -8.855e-04, 3.584e-02, -1.751e-02, -8.524e-03, 1.809e-02, 2.272e-03, -9.233e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-2.465e-02, 5.760e-02, 1.534e-01, 3.399e-04, -1.400e-02, 1.200e-01, -2.422e-02, -2.513e-03, 8.923e-03, -1.821e-02, -4.063e-02, -5.177e-03, -1.336e-01, -1.028e-02, 2.130e-02, 1.346e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(2.203e-03, -1.042e-03, -3.751e-01, 2.112e-02, -5.245e-02, 4.772e-02, -5.637e-02, 5.232e-02, 3.624e-02, -2.953e-03, 8.630e-02, 1.750e-02, -2.904e-02, 5.701e-02, 8.557e-02, 4.736e-03), r2);\n\tr3 = MulAdd(s0_0_0, M4(4.977e-02, -1.143e-01, 7.488e-02, -5.551e-02, 1.477e-01, 5.907e-03, -7.227e-02, 1.772e-01, 3.777e-02, 2.232e-02, 5.823e-02, -5.041e-02, -1.082e-02, 1.523e-01, -9.840e-03, 5.697e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-3.038e-03, -1.095e-01, 6.199e-02, 1.453e-02, -6.835e-04, 3.203e-01, -2.258e-02, -1.221e-01, -5.413e-02, -1.655e-02, -5.737e-02, -2.025e-02, 1.347e-02, 6.535e-02, 8.228e-03, 4.431e-03), r4);\n\tr5 = MulAdd(s0_0_0, M4(-2.506e-01, -3.681e-02, 1.692e-02, 8.407e-02, -2.175e-01, 6.390e-02, -6.054e-02, -9.507e-02, 2.219e-02, -3.235e-02, 3.797e-02, 7.833e-03, 1.667e-03, 8.637e-02, -8.042e-02, -9.847e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(3.715e-02, 8.072e-02, 1.288e-01, -8.537e-02, 5.136e-02, 9.601e-02, -5.950e-02, 1.184e-01, 9.417e-03, 9.283e-03, -8.957e-03, -2.071e-04, 1.232e-02, -2.106e-02, 4.983e-02, -8.736e-04), r6);\n\tr7 = MulAdd(s0_0_0, M4(-1.436e-02, -6.321e-02, 2.656e-02, -6.977e-02, -1.176e-01, 2.970e-02, -3.549e-02, 1.183e-01, -2.375e-02, -6.695e-03, -2.054e-02, -4.209e-04, 3.611e-02, -1.659e-02, 4.454e-02, 2.402e-03), r7);\n\tr0 = MulAdd(s0_0_1, M4(-5.131e-02, -5.402e-02, -1.071e-01, 7.191e-02, 8.472e-02, -2.402e-01, 1.440e-02, -4.493e-02, 3.051e-02, -1.003e-01, 1.576e-02, -2.329e-02, 1.106e-01, 3.722e-02, 1.134e-01, -5.709e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.104e-01, -7.078e-02, 2.603e-02, -4.503e-01, 1.587e-01, -1.635e-01, 2.578e-02, -7.336e-02, -5.975e-02, -1.575e-01, -7.168e-02, -8.473e-02, 5.276e-02, 3.960e-02, 4.129e-02, 4.583e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.941e-01, 1.103e-01, -8.886e-01, -1.987e-02, 1.575e-02, -4.074e-02, -1.066e-01, 8.521e-02, -8.317e-02, -4.593e-02, 6.809e-02, -3.961e-02, -3.804e-02, 4.259e-02, 6.168e-02, 1.154e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-1.464e-01, 2.434e-02, 4.870e-02, 9.131e-02, 1.301e-01, 6.907e-03, -7.831e-02, 3.430e-01, -9.372e-02, -2.018e-02, 3.177e-02, 9.278e-02, -1.277e-01, 1.336e-01, -8.093e-02, -1.019e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(3.794e-02, -1.764e-01, 1.857e-01, 1.827e-02, -5.839e-02, 2.934e-02, 8.952e-03, -9.595e-02, -7.029e-02, -4.306e-02, 6.034e-02, -3.201e-02, -2.302e-02, 7.823e-03, -3.692e-03, 4.637e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(1.690e-01, -4.983e-01, 1.265e-01, 1.492e-01, -7.520e-02, -1.672e-01, -6.089e-02, 5.643e-02, 4.499e-02, -6.907e-02, 7.262e-02, 2.698e-02, -6.072e-02, 3.894e-02, -1.420e-02, -2.248e-03), r5);\n\tr6 = MulAdd(s0_0_1, M4(2.922e-01, 2.721e-02, 3.918e-01, -8.342e-03, 1.354e-01, 4.186e-02, 1.949e-01, 1.182e-01, 5.502e-02, 1.488e-02, -2.199e-03, -1.439e-02, -3.470e-03, -1.900e-02, -1.459e-02, 3.453e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(-4.747e-01, 3.369e-01, 3.065e-02, -1.173e-02, 3.211e-02, -9.170e-02, 1.284e-01, 8.960e-02, -2.372e-02, -1.804e-02, -7.730e-02, -7.842e-03, -1.250e-01, 6.435e-02, 3.161e-02, 1.768e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(7.167e-02, -1.244e-01, -9.452e-02, 5.408e-02, -1.342e-02, 9.277e-02, 8.297e-02, -2.613e-02, 2.593e-02, 1.009e-02, 3.056e-02, -1.066e-01, -2.828e-02, 4.670e-02, 7.630e-03, 2.846e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-2.630e-01, -5.845e-02, 2.331e-02, -2.832e-02, 8.786e-02, 1.689e-03, 8.293e-02, 5.114e-02, -1.232e-01, 1.697e-01, 2.371e-02, -5.956e-02, 9.594e-02, 5.416e-02, 1.233e-03, -1.363e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.174e-02, 1.676e-02, -5.185e-02, 1.973e-02, -6.165e-02, -2.889e-02, -7.995e-02, 2.420e-02, -6.064e-02, -3.040e-02, 2.650e-01, 3.627e-02, 7.850e-02, 7.887e-02, 9.094e-02, 1.489e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-1.424e-01, -4.151e-01, 2.701e-02, -4.741e-02, -8.732e-02, -6.194e-02, -1.377e-02, 1.633e-01, -1.617e-01, 2.217e-01, -7.512e-02, -4.777e-01, -1.919e-01, 3.262e-01, 6.091e-02, 6.158e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(1.451e-02, 2.669e-02, 3.678e-02, -2.336e-02, -1.355e-02, -2.526e-02, 4.508e-02, -5.811e-02, 1.711e-02, -3.579e-03, 3.283e-02, 6.081e-02, 7.573e-03, 8.923e-02, -1.071e-02, 7.008e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(5.540e-02, -2.761e-01, 9.481e-02, 5.760e-02, -3.982e-02, 5.448e-02, -7.396e-02, -3.780e-02, 3.106e-02, -4.116e-02, 2.122e-03, -7.407e-02, -4.850e-02, -3.328e-02, -4.344e-02, -2.532e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(3.481e-02, -5.688e-02, 8.690e-02, 6.811e-02, 5.879e-02, 9.871e-02, 6.882e-02, -1.003e-03, 3.085e-02, 1.364e-02, 7.987e-03, 6.605e-03, -6.774e-02, -4.628e-02, -4.341e-02, -5.464e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-1.648e-01, -5.737e-02, 1.050e-01, 5.121e-02, 6.463e-02, -1.040e-01, 1.047e-01, 4.215e-03, -9.405e-03, -1.487e-01, 1.665e-01, 6.149e-03, -3.615e-02, -9.104e-02, -4.522e-03, -5.059e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-2.194e-01, -2.458e-03, -1.121e-01, 2.099e-01, 1.643e-01, 1.298e-01, 2.814e-02, -1.145e-01, 1.636e-01, -4.581e-02, 5.635e-02, 3.175e-02, 2.968e-02, 2.185e-02, -7.254e-02, -3.915e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(2.619e-02, -5.196e-02, 1.300e-01, -3.948e-02, -2.104e-02, 2.155e-02, -3.696e-01, -4.714e-02, 4.111e-02, 1.164e-01, 9.722e-03, 3.691e-04, -4.824e-02, 1.211e-01, 1.528e-01, -3.337e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(1.029e-03, -1.496e-01, -3.594e-02, -3.698e-02, -2.642e-01, 2.396e-01, -5.862e-02, -2.617e-02, -9.205e-02, -1.048e-02, 1.242e-01, -3.139e-02, -5.743e-02, -1.868e-02, -2.550e-02, -3.000e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.251e-01, 5.504e-02, 9.259e-02, -1.265e-01, 8.736e-02, -1.089e-01, -3.434e-01, -3.955e-02, 9.587e-03, 2.883e-03, 1.174e-02, 6.312e-02, -2.175e-02, -1.179e-01, 1.160e-01, 1.149e-01), r3);\n\tr4 = MulAdd(s0_1_0, M4(3.595e-02, -1.123e-01, 7.983e-02, -4.173e-02, -1.844e-01, 1.054e-01, 1.401e-01, 8.913e-03, 8.413e-03, 5.432e-02, 3.624e-02, -2.465e-02, -3.913e-02, -9.722e-03, 3.792e-02, 3.626e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-7.807e-02, 1.341e-02, -1.093e-01, 1.495e-01, 6.574e-03, -1.019e-02, 1.188e-02, -3.809e-01, 3.495e-03, 7.352e-02, -2.910e-02, 6.044e-02, 6.568e-02, 3.426e-02, 9.815e-02, 3.692e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(5.004e-02, -2.728e-02, -2.858e-02, -4.977e-02, -5.326e-02, -2.552e-02, 4.607e-02, 1.460e-01, 5.897e-02, 2.808e-02, -5.614e-02, 1.908e-02, -2.202e-02, 1.086e-01, 2.754e-02, -1.732e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(-6.529e-03, 8.674e-02, 3.671e-02, -3.613e-02, -2.170e-02, -5.282e-02, 5.467e-03, 1.439e-01, -2.086e-02, 6.340e-02, -7.400e-02, 1.911e-02, -5.384e-04, 3.879e-02, 2.397e-02, -2.386e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-6.919e-02, 1.170e-01, 3.555e-02, 2.981e-02, 1.851e-02, 8.233e-02, 1.140e-02, -1.557e-02, 3.526e-02, -6.545e-02, 1.324e-01, -4.706e-02, -1.823e-01, -1.712e-02, 4.516e-01, 2.709e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-7.150e-02, -8.915e-02, -5.777e-01, -2.872e-02, 7.700e-02, -5.895e-02, 1.890e-01, -1.095e-01, -4.103e-01, -2.290e-01, 1.797e-01, -1.253e-01, 4.129e-02, -3.752e-01, -2.202e-01, -5.469e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(5.332e-01, 9.871e-02, -1.715e-01, 1.222e-02, -1.870e-01, 5.601e-03, 1.143e-01, 1.939e-01, -1.211e-01, 4.753e-02, -4.128e-01, 4.908e-02, 4.079e-01, -4.917e-02, 2.343e-01, 1.008e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.291e-01, -2.178e-02, 3.241e-01, -8.140e-02, -2.052e-01, -9.704e-02, 4.703e-02, 3.286e-01, -3.163e-02, 2.606e-02, 1.571e-01, 1.573e-01, -1.652e-02, 2.551e-01, -2.709e-03, -6.250e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(1.939e-01, -1.741e-01, 6.425e-02, 3.851e-03, 8.394e-02, 1.479e-01, 1.224e-01, 1.128e-01, 2.032e-01, 2.093e-01, -2.236e-02, 1.284e-02, -5.710e-02, -3.762e-01, -1.188e-02, -1.702e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(1.130e-01, 4.283e-02, -7.300e-02, 2.008e-01, -2.397e-02, 7.329e-02, 6.279e-02, -1.170e-01, -3.076e-01, 1.757e-02, -1.187e-01, -6.681e-02, 1.548e-01, 9.612e-03, 2.409e-01, -3.453e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(-5.588e-03, -9.155e-02, -1.137e-01, -2.648e-01, 7.788e-02, -1.868e-01, -1.043e-01, 7.434e-02, 7.513e-03, -5.986e-02, 2.217e-02, 1.243e-01, 2.318e-02, 2.452e-01, 1.781e-01, 8.317e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(-7.959e-02, 4.222e-02, 4.563e-03, -2.477e-01, -4.761e-03, 1.724e-01, -7.255e-02, 1.009e-01, -1.127e-01, 7.721e-02, -1.132e-01, 1.122e-01, 1.904e-01, -6.412e-02, -9.307e-02, 7.081e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-1.795e-02, -5.892e-03, -8.051e-02, 1.517e-01, 4.198e-02, 6.742e-02, -3.009e-02, -3.035e-02, 1.136e-02, -4.779e-01, -3.604e-02, 1.041e-01, 7.966e-02, -1.149e-01, 9.233e-03, 7.768e-04), r0);\n\tr1 = MulAdd(s0_1_2, M4(-6.324e-02, 1.042e-02, -9.744e-02, 1.235e-02, -3.158e-02, 7.411e-02, 3.163e-02, -3.229e-02, 6.498e-02, -1.857e-02, 5.470e-02, -7.441e-02, -1.679e-01, 4.005e-02, -2.849e-01, 1.686e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(8.383e-02, 2.239e-02, -9.402e-02, -5.530e-02, -1.882e-01, -2.525e-02, 1.804e-01, -1.571e-02, -1.231e-01, 4.519e-02, 1.512e-02, 2.634e-02, 8.688e-02, 6.189e-02, -2.074e-01, 6.415e-03), r2);\n\tr3 = MulAdd(s0_1_2, M4(1.595e-01, 1.856e-01, 1.771e-02, 2.704e-01, 7.276e-02, -2.012e-01, -4.756e-02, 9.898e-02, -1.785e-01, 1.553e-01, 8.183e-02, -3.840e-01, 4.353e-02, 3.888e-02, 5.147e-02, -1.319e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(-4.234e-02, 5.204e-02, 8.718e-03, -1.475e-01, -4.803e-02, 1.698e-02, -1.151e-02, -2.067e-02, -2.672e-02, -7.483e-02, -9.177e-03, -7.463e-02, -1.917e-02, -7.993e-03, -2.160e-02, 1.665e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(6.767e-02, 9.257e-02, -1.103e-01, -7.148e-02, -1.685e-02, -1.318e-02, 1.811e-01, 9.859e-03, -3.788e-02, -2.666e-01, -3.659e-01, 1.028e-01, 6.273e-03, -1.176e-01, 2.067e-01, 6.322e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-7.278e-02, 1.911e-01, 1.802e-01, -5.569e-02, 2.986e-02, -7.639e-02, -1.075e-01, 5.052e-02, 1.193e-03, 6.152e-02, 3.143e-02, 7.430e-02, -7.514e-02, -1.452e-02, 8.727e-02, -6.993e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(3.168e-02, -4.531e-02, -8.076e-02, -6.167e-02, -1.069e-01, 2.750e-02, -1.670e-02, 6.124e-02, -1.180e-01, -1.294e-01, 2.249e-01, 6.627e-02, 8.967e-02, 8.772e-02, -1.266e-01, -6.295e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-3.174e-02, 1.703e-03, 4.586e-02, 7.368e-02, -4.579e-02, 9.961e-03, -3.191e-02, -6.188e-02, -2.458e-02, -5.548e-02, -8.128e-02, -1.205e-01, 2.279e-02, 3.324e-02, -3.479e-02, -7.232e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(9.430e-03, -3.278e-02, 4.546e-02, 9.382e-04, -7.637e-03, 6.497e-02, -6.614e-02, 2.607e-02, 2.630e-02, -1.949e-02, -9.175e-03, -7.643e-03, -7.888e-02, -2.153e-02, -2.398e-03, -2.905e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.152e-03, -2.948e-02, 6.306e-02, -1.663e-02, 3.853e-02, 1.437e-02, 9.843e-02, 3.720e-02, 3.979e-03, 2.038e-02, 1.428e-01, -6.635e-04, -2.379e-02, 2.876e-02, -1.208e-01, 2.357e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(9.910e-02, 8.932e-03, 4.888e-02, -5.517e-02, -8.764e-02, -6.357e-02, -1.200e-02, 8.910e-02, -7.342e-02, -1.874e-03, -1.174e-01, -1.388e-02, -1.300e-01, 4.963e-02, -6.733e-02, 4.919e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(3.526e-02, 8.502e-03, 3.162e-02, -4.773e-02, 7.405e-04, -1.044e-01, 4.891e-02, -1.900e-02, 8.011e-02, -3.869e-02, -4.799e-02, 4.538e-02, -8.634e-02, 9.311e-02, -1.560e-02, -8.789e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(2.886e-02, 4.762e-03, 4.066e-02, 3.449e-02, 7.733e-02, -5.020e-02, -7.693e-02, -2.218e-03, 6.365e-02, -1.734e-02, -1.689e-02, -7.768e-03, -1.559e-02, 2.190e-03, -4.680e-02, -3.870e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(1.107e-02, -2.577e-02, 3.007e-02, -1.357e-02, -1.120e-01, 8.953e-02, -3.526e-04, 2.971e-02, -7.978e-02, -5.648e-03, 4.350e-02, -1.117e-02, -6.059e-03, -5.496e-04, -6.198e-03, -3.242e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(1.263e-02, 4.297e-02, -4.286e-04, -2.090e-02, -6.731e-03, 2.384e-02, 1.666e-03, 1.794e-02, -2.378e-02, -5.343e-02, -1.010e-02, -1.583e-03, 2.272e-02, -9.729e-03, -1.795e-02, -1.540e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(2.504e-02, 2.624e-02, 3.776e-02, -1.987e-05, 4.795e-02, -6.163e-02, 6.203e-03, 7.885e-02, -2.465e-02, -1.204e-01, -9.856e-02, 2.508e-02, 4.001e-02, 9.439e-02, 2.835e-02, -3.211e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-5.651e-02, 2.019e-02, 8.015e-02, -4.616e-02, 5.443e-02, -1.701e-02, 1.213e-01, 4.708e-02, 4.310e-02, 7.889e-02, 1.332e-01, 4.992e-02, 1.105e-02, -4.954e-02, 2.858e-01, 1.636e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-6.511e-02, -2.759e-02, -2.470e-02, 2.726e-02, 5.210e-02, 6.864e-03, 1.048e-01, 7.220e-05, 1.028e-01, -8.117e-03, 6.773e-02, -3.912e-02, 8.356e-02, 1.379e-01, -1.851e-01, -5.280e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-3.921e-02, -3.181e-02, -3.786e-02, -1.953e-01, 2.085e-01, 3.048e-02, 1.463e-02, 2.824e-01, -3.519e-02, 6.432e-02, 1.871e-01, 8.427e-02, 1.769e-02, 8.624e-02, -3.199e-01, 6.613e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-2.408e-02, 3.683e-02, -5.436e-02, 5.119e-02, -2.503e-03, -2.498e-02, 4.709e-02, -4.057e-02, 6.911e-02, -1.471e-01, 4.802e-02, 7.009e-02, -7.939e-02, 8.743e-02, 3.564e-02, -1.498e-01), r4);\n\tr5 = MulAdd(s0_2_1, M4(-1.634e-02, 3.274e-02, 9.929e-02, 2.199e-02, 1.201e-01, 4.114e-02, -1.253e-01, 3.495e-02, 1.007e-01, 9.568e-02, -1.631e-01, 6.648e-02, -1.265e-01, -4.173e-03, -4.016e-02, -8.033e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(3.839e-02, 1.471e-02, 1.359e-02, -1.781e-02, -7.132e-02, -1.471e-03, 4.152e-02, -1.870e-02, -6.797e-02, 2.034e-02, -2.870e-02, -5.532e-02, -3.828e-02, -2.531e-02, -5.696e-02, 2.400e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(-5.616e-02, 3.054e-02, 3.532e-02, -2.716e-02, 6.526e-02, 9.036e-02, -2.096e-02, -2.526e-02, -9.338e-03, 1.094e-01, 6.095e-02, -4.797e-02, -3.575e-02, -2.919e-01, -1.106e-02, 7.891e-03), r7);\n\tr0 = MulAdd(s0_2_2, M4(2.262e-02, 3.227e-02, -6.412e-02, -1.440e-02, -2.468e-03, 3.804e-02, 5.851e-02, 5.538e-02, 6.902e-02, -2.403e-03, 2.918e-02, 3.845e-02, 1.458e-02, -6.558e-02, 6.737e-02, -1.964e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.794e-02, 8.298e-03, -4.078e-02, -3.522e-02, -2.661e-02, -3.119e-02, -8.298e-02, -2.409e-03, 1.784e-02, -2.949e-02, -1.377e-01, 4.044e-02, -3.880e-02, 1.659e-01, -7.154e-02, 6.957e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-9.398e-02, -7.095e-02, 1.429e-02, -4.155e-02, 3.049e-02, 3.645e-02, 7.479e-03, 2.153e-02, 1.591e-01, -1.832e-02, 2.697e-02, 5.132e-02, -1.508e-02, -1.246e-03, 9.328e-02, 6.005e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(-1.265e-01, 8.369e-02, -2.430e-02, -2.120e-01, 7.036e-02, 4.796e-02, 5.252e-02, 1.667e-01, 2.643e-01, 4.669e-02, 1.003e-02, 1.072e-01, -1.339e-01, 1.455e-01, 1.357e-02, -7.186e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(-1.773e-02, 7.546e-03, -5.273e-03, -2.885e-02, 2.701e-02, 6.558e-02, -1.121e-03, -1.907e-03, -1.683e-02, 3.902e-02, 3.648e-02, -1.869e-02, 5.396e-02, 1.174e-01, 3.122e-03, 5.688e-03), r4);\n\tr5 = MulAdd(s0_2_2, M4(-2.664e-02, -1.572e-02, 2.848e-02, -2.007e-02, 4.524e-03, 1.111e-02, -6.721e-02, 2.120e-02, 4.389e-02, 3.912e-02, 4.979e-03, 1.694e-02, 5.465e-02, 1.002e-04, 3.131e-02, 7.765e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-6.909e-02, 7.883e-02, 1.155e-03, -4.634e-04, -2.259e-02, -1.233e-02, -1.054e-02, -2.618e-02, -5.950e-02, 2.164e-02, 3.266e-02, -9.666e-03, -1.308e-01, -1.103e-01, 4.380e-02, 3.658e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-3.171e-02, -1.413e-02, -3.455e-02, 1.335e-02, 1.805e-02, -6.690e-03, 5.011e-02, -1.758e-02, 3.652e-02, -6.086e-02, 8.654e-02, 2.594e-03, 5.714e-03, 9.740e-03, -1.055e-01, 2.244e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(1.039e-02, 2.678e-02, 3.699e-02, -7.544e-02, -5.224e-02, -6.811e-02, -2.421e-02, -4.904e-02, -6.435e-02, -2.226e-05, -2.374e-03, -1.138e-01, -1.372e-02, -3.656e-02, -5.997e-02, 9.880e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(5.019e-02, 5.855e-03, -4.275e-02, -2.232e-02, -6.622e-02, 9.083e-02, -1.076e-02, -7.495e-02, 4.055e-02, 5.163e-02, 5.283e-02, 3.499e-02, 2.842e-02, -1.213e-01, 7.040e-02, 2.439e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-6.152e-03, 1.051e-01, 5.880e-02, 3.786e-02, -4.236e-02, 2.030e-02, 3.940e-02, -8.719e-03, -2.819e-02, 1.629e-02, -8.002e-02, -1.579e-02, 1.630e-02, -9.402e-02, -3.748e-02, -9.927e-04), r2);\n\tr3 = MulAdd(s1_0_0, M4(9.190e-02, -1.576e-01, 1.153e-02, -9.745e-02, 1.074e-01, -1.621e-01, -1.116e-01, 1.036e-01, 6.028e-02, -8.726e-02, -3.817e-02, -1.191e-01, -1.147e-01, 4.886e-02, 5.753e-02, 1.432e-01), r3);\n\tr4 = MulAdd(s1_0_0, M4(6.303e-02, 1.061e-01, 6.562e-02, 2.790e-02, 2.837e-02, 1.574e-02, 1.087e-01, -1.723e-02, 4.195e-03, -9.582e-02, -2.906e-02, 7.103e-02, 1.564e-02, 2.177e-02, 7.226e-02, -1.511e-01), r4);\n\tr5 = MulAdd(s1_0_0, M4(3.310e-02, 1.031e-01, -2.849e-02, -1.280e-01, -3.977e-02, -3.970e-02, 6.817e-02, -1.832e-02, -3.578e-02, -4.505e-02, -2.626e-02, 5.679e-02, 9.143e-03, 1.084e-02, -3.256e-02, -1.338e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-2.292e-02, 6.412e-03, 8.419e-02, -2.544e-02, -1.939e-03, -5.048e-02, 6.611e-02, -7.897e-03, -7.313e-02, -2.023e-02, 2.800e-02, 7.626e-03, 6.797e-03, 1.183e-01, -3.187e-02, -3.479e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(3.796e-02, -8.116e-02, 1.061e-02, -2.413e-02, -2.723e-02, 6.388e-02, -1.288e-02, -7.351e-03, 4.091e-04, -6.597e-02, 2.024e-02, 7.299e-03, 1.202e-02, 2.332e-02, -7.301e-02, -1.928e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(1.211e-01, -1.070e-01, 6.561e-02, -2.095e-02, -1.661e-02, 2.042e-02, -1.668e-02, -3.800e-02, -3.385e-02, -6.344e-03, 1.411e-02, -1.451e-01, -7.524e-02, -6.323e-02, 7.071e-02, -7.070e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.173e-01, 1.226e-01, 6.019e-03, 8.379e-02, 8.870e-02, 1.229e-01, 4.746e-02, 8.939e-02, -7.092e-02, -8.362e-02, -3.572e-02, -3.737e-02, 6.778e-02, 1.767e-02, 1.801e-01, -1.592e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-6.507e-03, -8.663e-02, -3.135e-02, -1.043e-02, 1.989e-02, -2.857e-02, 1.304e-01, -2.201e-02, -1.074e-02, 3.566e-02, 7.416e-02, -1.524e-02, 2.596e-02, 1.537e-03, -1.389e-01, -5.014e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-5.969e-02, -2.365e-03, -1.006e-01, 2.907e-02, 4.619e-01, 2.546e-01, -1.224e-01, -2.231e-01, 2.925e-02, -7.161e-02, -6.773e-02, 8.592e-02, -2.363e-01, 6.946e-02, -7.044e-02, -5.299e-03), r3);\n\tr4 = MulAdd(s1_0_1, M4(1.357e-02, 3.867e-02, -6.444e-02, 2.877e-02, 8.995e-02, 1.285e-01, -6.911e-02, 8.179e-02, 5.130e-02, 6.145e-02, -8.667e-02, 1.387e-01, -1.116e-01, -1.309e-01, 1.231e-02, -4.114e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(7.250e-02, -3.555e-02, -5.305e-02, 6.662e-02, 3.965e-02, -1.278e-02, -8.519e-02, 3.026e-02, 3.111e-02, -9.182e-02, -3.598e-02, 2.625e-02, 8.489e-02, -3.729e-02, 6.053e-02, 6.140e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-4.783e-02, 3.467e-02, -4.023e-02, 1.398e-02, -4.409e-02, -1.358e-01, -1.058e-01, 4.427e-02, -3.809e-02, -5.117e-02, 1.162e-01, -6.533e-03, 4.282e-02, 1.597e-01, 6.497e-02, -3.510e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(3.404e-02, -3.127e-02, -5.884e-02, 6.831e-02, -2.265e-02, 2.978e-02, 2.966e-02, 3.118e-02, 5.290e-03, -2.945e-02, 1.668e-02, -1.910e-02, -1.403e-01, 4.803e-02, -1.446e-01, -9.301e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(1.910e-02, 1.161e-02, -3.337e-02, -1.369e-01, -1.231e-02, 1.345e-01, -8.125e-02, -4.857e-02, 2.945e-02, -5.550e-02, -1.209e-01, -6.567e-02, 5.218e-02, -7.576e-02, 1.530e-01, -5.844e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-7.789e-02, -1.685e-01, 6.626e-02, -6.098e-02, 6.812e-02, -1.253e-01, -1.484e-02, 3.778e-02, 8.572e-03, -4.533e-02, 3.775e-02, -9.238e-03, 4.640e-03, 8.049e-02, 1.389e-01, -1.615e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.304e-02, -4.039e-02, 5.856e-02, -4.850e-02, 5.127e-02, 5.376e-02, -6.780e-02, -4.012e-02, 1.983e-02, -4.309e-04, -1.166e-02, -7.004e-02, -3.660e-02, -1.058e-01, -1.212e-01, 1.950e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-1.021e-01, -9.957e-01, -1.046e-01, -2.168e-01, 4.496e-01, -6.202e-01, -3.099e-02, -2.073e-01, 4.497e-02, -7.208e-01, 1.849e-02, -2.369e-01, -2.883e-02, -8.483e-01, 9.321e-03, -6.523e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-1.975e-02, -1.433e-01, -9.003e-02, 5.023e-02, 3.917e-02, -2.588e-01, 4.047e-02, 2.269e-02, 2.852e-03, -3.136e-02, -5.483e-02, 1.066e-01, 4.559e-02, 9.194e-02, -1.172e-02, 3.341e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(6.717e-03, -7.745e-02, -6.107e-02, 1.121e-01, -2.416e-02, 1.627e-01, -1.322e-02, -7.374e-03, -2.476e-04, 6.386e-03, -4.209e-02, 5.376e-02, -1.807e-02, 1.936e-01, -5.950e-02, -1.351e-01), r5);\n\tr6 = MulAdd(s1_0_2, M4(-4.187e-02, 6.191e-02, -2.872e-02, 7.442e-02, -1.149e-01, 8.206e-02, -1.258e-02, -7.069e-02, 9.689e-03, -5.997e-02, -4.325e-02, -1.708e-03, 2.469e-02, 1.086e-01, 4.751e-03, -2.578e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-3.372e-02, -4.474e-02, 8.650e-02, 1.682e-02, 9.504e-02, -2.963e-02, -8.072e-02, -4.602e-02, -2.752e-02, -1.887e-02, -1.366e-02, -4.214e-03, -1.728e-01, -6.957e-02, -9.632e-02, -2.210e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-7.073e-02, 3.984e-02, 1.750e-01, 3.849e-02, 1.534e-02, 1.296e-02, 4.884e-02, 2.833e-02, 3.893e-03, 4.598e-02, 6.003e-02, 5.382e-03, 1.903e-02, 3.722e-02, -9.577e-02, -2.938e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-7.002e-02, -8.041e-02, 1.562e-01, -1.192e-02, -1.749e-01, -1.515e-01, -4.607e-02, -4.043e-02, -1.087e-01, 4.587e-03, 3.030e-02, 5.215e-03, 4.361e-02, 7.036e-02, 2.685e-02, -2.066e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(2.059e-02, -7.594e-02, -3.815e-02, 3.405e-05, 1.829e-02, 4.242e-03, -1.457e-01, -1.085e-02, 9.042e-03, 2.585e-02, -1.623e-02, 2.672e-02, -6.527e-02, 2.275e-02, 1.732e-01, -4.915e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-1.179e-01, 4.650e-02, -3.694e-02, -1.264e-01, 2.183e-01, 1.750e-01, 4.870e-02, -1.545e-01, -2.276e-01, 2.265e-02, 2.774e-02, 1.132e-01, 3.137e-02, -1.005e-01, -7.264e-03, 2.036e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(5.051e-02, 5.632e-02, 2.834e-02, 3.863e-02, -3.364e-02, 7.360e-02, -2.076e-02, 1.055e-01, 2.992e-02, 1.372e-01, 1.527e-02, -8.820e-02, -5.506e-02, 1.052e-02, 1.286e-02, 1.728e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-2.140e-01, 3.230e-03, -2.857e-02, 1.896e-02, 5.556e-02, -3.436e-03, -8.588e-02, 2.802e-02, 2.988e-02, -1.600e-03, -8.788e-04, -7.018e-02, 2.241e-01, 3.417e-03, 4.114e-02, 5.349e-03), r5);\n\tr6 = MulAdd(s1_1_0, M4(3.862e-02, -1.478e-02, 8.559e-02, 2.548e-03, 4.609e-02, -1.228e-01, -1.275e-02, 2.289e-02, -5.565e-02, 3.467e-02, 2.828e-02, 5.651e-02, 2.175e-02, 1.281e-01, -2.776e-02, 7.786e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.206e-02, -6.410e-03, 2.735e-02, 8.145e-03, 1.678e-02, -7.349e-02, 3.343e-02, 8.688e-03, 3.815e-02, 1.059e-01, 1.890e-03, 5.180e-02, -3.494e-02, 1.311e-01, -6.710e-02, 1.057e-01), r7);\n\tr0 = MulAdd(s1_1_1, M4(-2.144e-01, 4.338e-02, -2.459e-01, -2.613e-01, 6.160e-02, -8.970e-02, -1.445e-01, 2.118e-02, -4.685e-02, -1.275e-01, 8.716e-02, 7.434e-02, 1.480e-01, 8.625e-02, 9.337e-02, 4.079e-03), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.746e-01, 3.573e-01, -2.658e-01, -2.790e-01, 8.387e-04, 7.567e-02, -1.550e-01, 9.129e-02, 6.615e-02, -6.103e-02, 2.230e-01, 7.397e-02, -2.765e-02, -7.620e-02, -4.741e-01, 1.809e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.075e-01, -5.263e-02, 6.495e-03, 1.691e-01, 1.983e-02, 1.915e-02, 2.462e-01, 1.042e-01, 9.986e-02, -8.085e-02, 8.374e-03, 6.197e-02, 1.148e-01, 1.767e-01, 4.024e-02, 2.879e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-3.681e-01, -2.369e-02, -9.636e-02, 2.493e-01, -4.483e-01, -2.447e-01, -2.173e-01, -4.098e-01, 1.772e-01, 2.637e-02, 6.280e-02, 2.007e-02, 1.622e-01, 4.334e-03, 9.353e-02, -1.821e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(-8.028e-01, -3.701e-01, -2.570e-01, -1.360e-01, -4.850e-01, -1.806e-01, 3.086e-02, -2.315e-02, 1.868e-02, -1.987e-01, 5.143e-02, -3.655e-02, 1.222e-02, 2.544e-01, -9.784e-03, 2.913e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(1.965e-01, -2.279e-02, 1.266e-01, 3.019e-01, 2.022e-01, 3.962e-02, 5.772e-02, 5.501e-02, -8.871e-03, 1.073e-02, -5.888e-02, -2.899e-02, -4.695e-02, -5.795e-03, -1.805e-01, -1.891e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(1.538e-01, -1.868e-02, 1.932e-02, -2.243e-01, -1.043e-02, -3.346e-02, 3.519e-02, -8.910e-02, 2.155e-02, 4.890e-02, 2.706e-02, -5.719e-02, -2.170e-01, -1.968e-01, -1.470e-01, 4.059e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(-2.047e-01, -1.967e-01, -5.823e-02, 2.231e-02, 1.083e-01, -8.835e-02, 1.888e-02, -7.129e-02, 5.018e-02, 3.596e-03, 2.186e-02, -2.985e-02, 1.232e-01, -8.562e-02, 2.357e-02, -3.976e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(3.604e-02, 1.649e-01, -1.785e-01, 2.182e-02, -3.910e-02, 2.584e-01, -1.103e-02, -1.654e-01, -1.010e-02, -3.481e-02, 1.637e-02, 1.323e-01, 4.698e-02, 2.911e-01, -5.721e-02, -2.215e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(3.091e-01, -1.202e-01, 1.067e-01, -6.209e-02, 5.121e-02, -2.473e-02, 1.549e-01, 7.786e-02, -6.146e-03, -1.927e-02, -8.998e-02, 3.474e-02, -1.497e-01, -4.063e-02, 2.250e-02, 1.177e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(7.910e-02, -1.440e-01, 2.046e-03, 3.076e-01, -5.656e-03, 9.095e-02, -1.553e-01, -3.556e-02, 1.347e-01, -1.224e-02, -4.124e-02, -1.492e-02, 6.936e-02, -1.102e-01, -9.272e-02, 2.806e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(2.522e-01, 5.709e-02, -1.427e-01, 2.732e-01, 1.768e-01, 1.743e-02, -2.396e-01, 1.672e-01, 2.282e-02, -1.197e-01, 6.520e-02, -1.362e-01, -1.483e-01, 1.983e-01, -9.269e-02, -2.817e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(1.284e-01, -1.049e-01, 6.961e-02, 1.640e-01, -1.547e-01, -2.128e-01, 9.902e-03, -7.118e-02, 4.126e-02, -1.642e-02, 1.140e-02, 7.533e-03, 2.261e-01, -1.786e-01, -5.578e-03, 2.611e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(3.688e-02, 3.687e-02, -3.517e-02, -4.243e-02, -1.123e-02, 1.900e-01, 3.457e-02, 6.688e-02, 5.488e-03, -1.800e-02, -5.696e-02, -6.607e-02, -8.092e-02, -7.057e-02, -1.463e-02, -8.502e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-8.542e-02, -9.532e-02, -1.238e-02, -5.857e-02, 9.139e-03, 1.497e-02, 5.383e-02, -3.265e-02, -1.093e-01, 1.192e-02, -4.280e-02, -5.333e-02, -9.743e-02, -1.939e-01, 3.621e-02, -1.488e-01), r6);\n\tr7 = MulAdd(s1_1_2, M4(-1.732e-02, 6.675e-02, -3.480e-01, 2.397e-01, 1.075e-01, 3.253e-02, -1.683e-01, -5.285e-02, 9.690e-02, 1.217e-01, 8.517e-02, -2.107e-02, 4.022e-02, 1.933e-01, 2.323e-01, 4.860e-01), r7);\n\tr0 = MulAdd(s1_2_0, M4(3.680e-02, -7.523e-03, -1.266e-02, -7.131e-02, 5.878e-03, -9.187e-02, -1.566e-02, 3.816e-02, 6.837e-03, 5.444e-02, 4.485e-02, -2.313e-02, -6.383e-03, 2.773e-02, -3.534e-02, -3.502e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-6.948e-03, 5.371e-02, 1.122e-01, 6.005e-03, 3.740e-02, -4.687e-02, 2.431e-01, 1.052e-01, 2.252e-02, 7.357e-03, -5.174e-02, -3.519e-02, -1.913e-02, -1.210e-03, -4.157e-02, -8.882e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-6.065e-02, 2.900e-02, 1.756e-01, 3.418e-02, 7.337e-02, 3.794e-02, -1.197e-01, 1.450e-02, 1.260e-02, -1.189e-03, -1.771e-02, -1.033e-03, 2.970e-02, 4.804e-02, -5.144e-02, -8.386e-03), r2);\n\tr3 = MulAdd(s1_2_0, M4(1.827e-01, -2.151e-01, -3.611e-02, -6.993e-02, 2.523e-01, -2.833e-02, 8.074e-02, 1.880e-02, 8.056e-02, -1.120e-01, 3.621e-02, -2.335e-01, -1.165e-01, 1.069e-01, -1.805e-02, 9.052e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-1.050e-01, -1.276e-01, -5.050e-02, 4.153e-03, 3.105e-02, -8.962e-02, -4.766e-03, -5.175e-02, 1.371e-02, 8.654e-03, -1.159e-02, 1.297e-01, 8.278e-02, 1.411e-02, 7.695e-02, -6.737e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(1.353e-01, -9.666e-02, 5.471e-03, 1.847e-01, -1.332e-01, -4.189e-02, -9.731e-02, 3.070e-02, 6.963e-02, -3.110e-02, -5.950e-03, -3.595e-02, -9.666e-02, 3.104e-02, 3.231e-02, -1.121e-01), r5);\n\tr6 = MulAdd(s1_2_0, M4(-7.388e-02, 1.249e-01, 5.554e-02, 2.255e-03, -4.137e-02, -5.996e-02, -4.640e-03, -7.619e-02, -4.905e-02, 1.397e-02, 9.143e-02, -5.663e-03, -3.173e-03, -8.839e-02, -2.134e-02, 1.158e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(1.198e-02, -7.902e-02, 5.564e-02, -6.696e-03, 1.801e-02, -9.390e-02, -9.950e-04, -6.604e-02, -3.939e-03, 3.998e-02, 2.081e-02, -7.337e-03, 1.696e-03, 1.966e-02, -3.466e-02, 6.569e-03), r7);\n\tr0 = MulAdd(s1_2_1, M4(1.108e-01, 9.450e-02, -5.010e-02, 7.269e-03, -1.781e-02, -9.468e-02, 1.647e-02, 3.515e-02, 2.044e-04, 5.878e-02, -5.164e-02, -4.595e-02, -6.006e-02, -1.383e-03, 2.536e-03, 3.020e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-2.082e-02, 5.990e-02, -2.252e-02, 8.218e-03, -1.296e-01, 8.821e-02, 1.122e-01, -3.445e-03, 5.959e-02, -2.114e-02, -6.887e-02, -3.317e-02, -6.773e-02, 3.170e-03, -3.782e-01, -7.289e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(9.027e-04, -7.332e-02, -6.253e-02, 5.900e-02, -6.808e-02, -5.744e-02, 1.572e-01, 1.377e-02, 5.696e-02, 3.975e-03, -3.663e-02, -3.608e-02, 4.131e-03, 5.128e-02, 7.368e-02, -2.456e-03), r2);\n\tr3 = MulAdd(s1_2_1, M4(-4.880e-02, -1.519e-01, -1.002e-01, 2.812e-02, 4.125e-01, 1.875e-03, -1.940e-01, -1.642e-02, -1.200e-01, -2.365e-02, 6.985e-03, -2.390e-01, 1.805e-01, -1.899e-02, 5.215e-02, 1.432e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(-2.408e-01, -1.233e-01, 8.202e-03, -2.659e-02, -2.732e-03, 9.653e-02, -3.124e-02, -6.724e-02, 5.005e-02, -8.612e-03, -1.002e-01, 7.346e-02, 2.532e-02, 6.252e-02, 2.057e-02, -2.383e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(1.351e-01, -2.986e-02, -1.936e-01, 7.593e-02, -5.327e-02, -5.972e-02, 2.279e-02, 2.980e-02, -2.633e-02, 3.426e-02, 6.311e-02, 1.473e-02, 2.490e-02, 3.446e-02, 1.304e-01, -6.298e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-6.601e-02, 2.172e-01, 1.312e-02, -7.737e-02, 1.789e-02, 1.669e-01, 6.256e-03, 3.918e-02, -3.549e-02, -5.516e-02, 2.935e-02, -6.530e-03, 4.606e-02, -9.222e-02, 3.312e-02, 1.255e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(-2.775e-02, 8.202e-02, 1.252e-02, 1.222e-02, -1.253e-02, -1.326e-02, 7.993e-02, 4.041e-02, 1.730e-02, -5.841e-03, 1.882e-02, -1.779e-02, 1.802e-02, 9.758e-02, 2.817e-02, 1.918e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(6.023e-04, 5.566e-03, 8.965e-02, -2.493e-02, 3.095e-02, 5.479e-02, -4.872e-02, 2.600e-02, 1.629e-02, -3.134e-02, -6.467e-02, -2.672e-02, -6.396e-02, 1.224e-01, 9.536e-04, -1.027e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.157e-01, -3.039e-02, 1.475e-01, 2.647e-02, 2.358e-02, 6.890e-02, -1.362e-01, -1.227e-02, -2.334e-02, -6.275e-02, 9.628e-02, 1.240e-02, -3.345e-03, 8.928e-03, 1.474e-01, -3.246e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(5.638e-02, 3.699e-02, 1.223e-01, 1.273e-01, 1.127e-02, -5.854e-02, 6.436e-02, 1.379e-02, 2.718e-02, -2.805e-03, -5.008e-02, -6.157e-02, -1.362e-01, 4.830e-02, 1.721e-03, -9.271e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-4.397e-02, 1.924e-02, -1.794e-01, 5.388e-02, 2.171e-01, 1.248e-01, -1.914e-01, -7.104e-02, -1.013e-01, -1.081e-01, -8.710e-02, -1.200e-01, 5.387e-02, -1.047e-01, -4.757e-02, 1.055e-01), r3);\n\tr4 = MulAdd(s1_2_2, M4(1.216e-01, 1.953e-01, 4.566e-02, 5.259e-02, -6.438e-03, 1.136e-01, 2.228e-02, -2.164e-02, -2.533e-02, 5.699e-03, -2.948e-02, 4.567e-02, -1.202e-02, -1.642e-02, -2.577e-02, -9.936e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-3.124e-02, 9.117e-03, -1.213e-01, -9.445e-02, 6.736e-02, 3.769e-02, 3.870e-02, 9.133e-03, 2.495e-02, -3.967e-02, -2.132e-02, 1.736e-02, -1.012e-02, 1.456e-02, 1.553e-01, -1.751e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-1.017e-01, -9.897e-02, 5.710e-02, -3.329e-03, -3.817e-03, -1.500e-01, -6.379e-02, -2.080e-02, 2.290e-02, 5.375e-02, 6.092e-02, 1.245e-02, -7.933e-03, -1.421e-01, -2.714e-02, 8.934e-03), r6);\n\tr7 = MulAdd(s1_2_2, M4(5.234e-02, 8.639e-02, -2.828e-01, 2.998e-02, 2.070e-02, 1.019e-02, -4.050e-02, -1.216e-02, -4.330e-03, -3.997e-02, 9.144e-03, -9.352e-03, -7.237e-02, 9.383e-02, 2.101e-01, 5.779e-03), r7);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(1.018e-01, 1.232e-02, 1.647e-02, -5.158e-02, -1.521e-02, 7.457e-03, -2.182e-02, 1.051e-01, 1.116e-01, 1.432e-02, -9.606e-03, -1.122e-01, -1.609e-02, -1.781e-02, 3.818e-02, 7.589e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.045e-01, 3.626e-02, -3.137e-02, 1.956e-02, -8.177e-02, 3.780e-02, 2.280e-02, 3.490e-02, 5.684e-02, -6.072e-02, -1.436e-02, 8.098e-02, -5.708e-02, -6.992e-02, -3.142e-02, -3.447e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(2.312e-02, -2.989e-02, -3.475e-02, -7.717e-03, -6.729e-02, -4.887e-02, 1.725e-01, -2.710e-02, 3.079e-02, 2.033e-02, -1.165e-01, -3.030e-03, -1.416e-02, 3.651e-02, 9.532e-02, -1.423e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(-1.046e-01, 2.549e-01, 1.186e-02, -7.136e-02, -2.711e-02, 1.774e-02, 5.408e-02, -2.615e-02, -3.802e-02, 1.617e-01, -3.794e-02, 1.103e-01, 8.755e-02, -8.515e-02, 4.105e-02, -1.012e-01), r3);\n\tr4 = MulAdd(s0_0_0, M4(-1.357e-01, -6.189e-02, -6.641e-02, 3.533e-02, -1.209e-01, -2.374e-02, 2.570e-02, -4.191e-02, 6.430e-02, -2.378e-02, -6.018e-02, 5.296e-02, 4.404e-03, 5.061e-02, 2.678e-03, 3.364e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(1.135e-02, -3.170e-02, -6.200e-03, -2.549e-03, 2.762e-02, -1.103e-01, 5.649e-02, 9.386e-02, -6.546e-02, 4.122e-02, 7.743e-04, 1.076e-01, 1.229e-02, -5.750e-02, -7.445e-02, -1.120e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(1.528e-02, -1.030e-03, -5.339e-03, 3.015e-02, 6.924e-02, 5.837e-02, -8.228e-02, 6.095e-02, -4.944e-02, 3.264e-02, 1.174e-02, -1.086e-02, -3.358e-02, 1.185e-02, -6.329e-03, -8.970e-03), r6);\n\tr7 = MulAdd(s0_0_0, M4(3.196e-02, -2.623e-02, 3.909e-02, 2.734e-02, -4.731e-02, 7.900e-02, -2.006e-02, 4.947e-02, 3.717e-02, 7.777e-02, -3.533e-02, -9.744e-03, -5.541e-03, -3.078e-02, -2.550e-02, -2.644e-03), r7);\n\tr0 = MulAdd(s0_0_1, M4(9.631e-02, -3.361e-02, 3.125e-02, -1.237e-02, 6.787e-02, 9.761e-02, -3.325e-03, 1.995e-01, -1.007e-01, -2.604e-02, -6.802e-03, -1.293e-01, -5.467e-03, 5.778e-02, 6.752e-02, 1.722e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(2.077e-02, 8.183e-02, -1.611e-01, 3.742e-02, -5.072e-02, 1.969e-02, 2.544e-02, -8.375e-02, -2.324e-02, 1.014e-01, 6.624e-02, 3.894e-02, -2.271e-02, 2.011e-02, 7.518e-03, 1.812e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(4.503e-02, 9.789e-02, -9.668e-02, 6.034e-02, -6.577e-02, 5.577e-02, 1.023e-01, 4.118e-02, 1.902e-02, 7.763e-02, -4.018e-03, 3.620e-03, 8.222e-02, 3.862e-02, -4.451e-02, 3.803e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-1.441e-01, 1.570e-02, 7.341e-02, -7.315e-02, -3.651e-02, 1.487e-02, 2.070e-01, 1.918e-01, -1.056e-01, -2.861e-01, -7.799e-02, -8.802e-02, -3.459e-02, 5.365e-02, 2.455e-02, 5.950e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-7.917e-03, -1.634e-02, 4.202e-02, -9.649e-02, -6.991e-02, -5.406e-02, 5.764e-02, 6.575e-02, -1.221e-02, 3.393e-02, -2.002e-03, -3.755e-02, 3.351e-02, 5.335e-02, 1.996e-02, -1.666e-03), r4);\n\tr5 = MulAdd(s0_0_1, M4(2.390e-02, -4.540e-02, 2.907e-02, 4.657e-02, 4.685e-03, -2.027e-01, -1.576e-03, 1.243e-01, 2.335e-02, 1.170e-01, -6.649e-02, -1.137e-02, -1.917e-02, 1.146e-02, -4.077e-02, -9.832e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(1.329e-02, 7.760e-02, -6.476e-03, -2.004e-02, 7.334e-02, 5.137e-02, -7.888e-02, -4.819e-03, -1.150e-02, -1.133e-01, 9.707e-02, -5.991e-02, 2.108e-02, -8.742e-02, -3.165e-02, 3.654e-04), r6);\n\tr7 = MulAdd(s0_0_1, M4(7.453e-02, -2.092e-02, 1.156e-02, -2.611e-02, -1.782e-01, 1.754e-01, -6.167e-02, -1.558e-02, 1.226e-01, -9.998e-02, 2.958e-02, -3.990e-02, 8.550e-02, -9.747e-03, 5.036e-02, -6.006e-04), r7);\n\tr0 = MulAdd(s0_0_2, M4(-4.161e-02, -9.792e-02, 5.065e-02, 1.242e-01, -6.321e-02, -1.817e-01, 6.284e-02, 9.986e-02, 3.384e-02, 2.243e-02, -4.526e-03, -1.412e-02, 1.702e-02, 2.835e-02, -2.733e-02, -2.520e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(3.683e-02, -7.680e-02, -4.750e-02, 8.193e-04, -6.382e-02, 5.406e-02, -7.788e-04, 3.105e-02, -3.992e-02, 5.179e-03, -1.480e-03, 4.320e-03, 4.204e-03, 5.005e-02, -8.472e-02, 5.266e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(2.670e-02, 2.676e-02, -5.343e-03, 4.530e-02, 2.410e-02, 3.699e-02, 2.637e-01, 6.427e-02, -3.530e-02, 2.136e-02, -1.042e-01, -2.426e-03, 2.845e-02, 3.240e-02, 3.225e-02, 8.706e-04), r2);\n\tr3 = MulAdd(s0_0_2, M4(-2.894e-01, -9.373e-01, 3.411e-02, -8.726e-02, -4.873e-02, -3.316e-01, 1.053e-01, -3.314e-01, 6.860e-02, -4.550e-01, 5.294e-02, 1.448e-01, -7.367e-02, -5.231e-01, -5.939e-02, 5.965e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(2.034e-02, 1.286e-01, -4.870e-02, 3.701e-02, -1.113e-02, 6.036e-02, 9.186e-02, -4.302e-02, -4.833e-02, 5.208e-03, 1.988e-03, -5.271e-02, -2.197e-02, -4.844e-02, -2.583e-02, 4.286e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(6.031e-03, -3.397e-01, 1.380e-02, 6.457e-02, 4.869e-02, -8.585e-02, 1.255e-02, 8.779e-03, -2.289e-02, 6.478e-02, -1.134e-02, -4.206e-02, 9.454e-03, -5.771e-02, 1.722e-02, -3.259e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(1.712e-02, -3.029e-02, -5.487e-02, 4.625e-02, 6.746e-02, -5.212e-02, -1.125e-02, -6.219e-02, 4.269e-03, -1.602e-02, 3.966e-02, 5.340e-03, -5.928e-03, -8.167e-03, -1.928e-03, 1.189e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(2.874e-02, 2.569e-02, -1.808e-02, 5.291e-02, -8.792e-02, -5.676e-02, -8.415e-02, -4.871e-02, -6.067e-02, 9.979e-03, 9.929e-02, 4.715e-03, 4.138e-02, 5.224e-04, 3.267e-02, -3.050e-03), r7);\n\tr0 = MulAdd(s0_1_0, M4(6.399e-02, 2.803e-02, -4.060e-02, -4.529e-02, -2.962e-02, 1.574e-03, -7.932e-02, 1.102e-01, 1.586e-01, 9.452e-02, 5.955e-02, -7.007e-02, -1.206e-01, -1.015e-01, -7.973e-04, -6.763e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.255e-01, 1.747e-01, -8.135e-02, 1.734e-02, 6.417e-02, 5.732e-02, 1.755e-01, 2.682e-02, 4.414e-03, -3.416e-01, -1.967e-01, -5.596e-02, -2.624e-02, -2.496e-02, -9.567e-02, 4.215e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-2.824e-02, -1.001e-02, 6.284e-02, 3.994e-03, -3.138e-02, -2.551e-02, 5.215e-02, -2.714e-02, -1.645e-02, 7.729e-02, 5.691e-02, 7.986e-02, 2.631e-02, 3.526e-02, -1.466e-01, -8.477e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(-2.117e-01, -8.500e-02, 1.388e-01, 1.884e-01, 2.067e-02, 2.334e-02, -1.903e-01, 1.656e-02, 2.359e-01, 9.120e-02, 2.624e-02, -6.141e-02, 1.043e-01, -7.766e-02, -6.493e-02, 5.580e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(4.377e-02, 1.650e-03, -1.619e-02, -5.317e-02, -4.142e-02, -7.039e-02, 1.190e-01, -1.013e-01, -7.241e-02, -1.038e-01, -1.693e-01, -2.339e-02, 2.456e-02, 3.038e-02, -7.675e-02, 1.029e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(-2.607e-01, 4.994e-02, 3.868e-02, 6.962e-02, 8.370e-02, -4.184e-02, 2.681e-02, 2.750e-02, -1.170e-01, 1.586e-02, 5.577e-02, -2.946e-01, 4.398e-02, -3.127e-02, -5.142e-02, -1.120e-01), r5);\n\tr6 = MulAdd(s0_1_0, M4(-2.394e-02, 1.288e-01, -1.239e-02, 6.481e-02, 2.117e-02, 4.959e-02, -9.280e-03, -2.059e-02, 6.507e-02, -8.603e-04, -3.968e-02, -7.716e-02, -2.659e-02, -5.241e-02, 5.924e-02, 3.322e-02), r6);\n\tr7 = MulAdd(s0_1_0, M4(-2.462e-02, 7.056e-02, -8.028e-03, 6.289e-02, 1.378e-02, 8.252e-02, -5.283e-02, -1.861e-02, -8.679e-03, -2.003e-01, -8.669e-02, -7.544e-02, 1.235e-02, 6.724e-02, 2.352e-02, 2.898e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-6.972e-02, 1.200e-01, -1.098e-03, 1.094e-01, 9.140e-03, 4.520e-02, 2.686e-01, 1.403e-01, 1.573e-01, 3.215e-01, -2.056e-01, 5.128e-03, -2.090e-01, -9.153e-02, 8.296e-02, -6.579e-03), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.932e-01, 1.126e-01, -2.974e-02, -1.919e-01, 5.256e-03, -3.333e-02, -4.433e-02, 1.248e-01, -2.960e-01, 8.392e-02, -4.013e-01, -1.700e-01, 7.687e-02, 8.199e-02, -1.091e-01, 4.502e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-1.751e-01, 1.200e-01, -4.205e-02, -7.272e-03, 2.250e-02, 1.029e-01, -4.249e-02, -3.260e-02, -3.325e-01, -4.046e-02, -4.976e-02, -1.343e-01, 1.808e-01, 1.219e-01, -7.099e-02, -4.046e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(-9.852e-01, 2.743e-01, 5.922e-02, 4.506e-01, 3.914e-01, 1.442e-01, -3.081e-02, 1.201e-01, 1.086e-04, -4.909e-01, -7.830e-02, -1.714e-01, -1.907e-01, 4.450e-01, 2.685e-03, -4.062e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(-7.838e-01, -2.631e-01, 2.395e-01, -7.656e-02, 1.571e-01, 4.182e-01, 2.796e-02, 2.439e-01, -1.919e-01, -1.040e-01, -8.363e-02, 9.736e-02, -1.023e-01, 1.793e-01, 1.199e-02, 1.444e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(9.444e-02, 4.812e-02, 9.769e-02, 1.003e-01, 1.004e-01, 5.340e-02, -9.840e-02, 2.466e-01, 1.717e-01, -1.657e-01, 2.557e-01, 2.696e-01, -1.662e-01, 3.003e-01, -3.265e-02, -7.087e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(7.308e-02, 2.302e-01, 1.695e-01, 1.213e-01, -7.329e-02, -7.951e-02, 1.257e-03, -1.056e-01, 1.461e-01, -8.738e-02, 2.912e-01, 7.441e-03, -2.858e-02, 6.559e-02, -3.022e-01, -1.043e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(-2.137e-01, 1.683e-02, -7.494e-02, 1.208e-01, 5.836e-02, 6.076e-01, -1.046e-02, -1.304e-01, -1.651e-01, -1.265e-01, 2.881e-01, 5.875e-03, 5.818e-01, -1.268e-01, 9.289e-02, -9.625e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(3.622e-02, -2.666e-01, 6.231e-02, 1.851e-01, -5.627e-03, -6.851e-01, 4.723e-02, 1.537e-01, 2.215e-02, 2.823e-02, 9.355e-02, 4.885e-02, -6.718e-02, -2.612e-01, 3.952e-02, 1.944e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.434e-01, -6.235e-02, 2.596e-01, 1.032e-02, -1.915e-01, 1.880e-01, -2.920e-01, 6.097e-03, -1.583e-01, 3.200e-02, -4.338e-02, 5.918e-02, 3.636e-02, 2.086e-02, -1.882e-02, 1.245e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-2.563e-02, -4.869e-02, -5.395e-03, 3.636e-01, -2.202e-01, 3.662e-02, 1.571e-01, -2.342e-02, -2.781e-03, 7.328e-02, 4.613e-02, 1.812e-02, 1.559e-01, 1.019e-01, -4.776e-01, 9.922e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-3.244e-01, 6.547e-01, 3.182e-01, 2.122e-01, -1.508e-02, 1.116e-01, 5.724e-02, 2.378e-01, -4.275e-03, -2.610e-01, 6.075e-02, 1.463e-01, 6.042e-02, -1.507e+00, -7.865e-02, 1.740e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(1.290e-01, 1.546e-01, 1.596e-01, 9.982e-02, -1.204e-01, 1.452e-01, 1.788e-02, -6.061e-02, 1.597e-02, -3.683e-02, -6.789e-04, -8.652e-02, 4.113e-02, -6.724e-02, 4.232e-02, 4.472e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-6.222e-02, 4.843e-02, -1.095e-01, -1.179e-01, 1.988e-02, -5.518e-02, 2.436e-01, 1.265e-01, -9.374e-03, 3.225e-02, 6.820e-02, -2.729e-02, 8.350e-03, 2.728e-01, -1.811e-02, -2.508e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(9.121e-02, 1.471e-01, -1.119e-01, 2.919e-02, 4.992e-02, 1.798e-02, -2.982e-03, -3.243e-02, 1.048e-01, -5.510e-02, 3.963e-02, 5.341e-02, -1.134e-01, 8.499e-02, 4.676e-02, -1.008e-01), r6);\n\tr7 = MulAdd(s0_1_2, M4(6.031e-02, 6.545e-02, -1.077e+00, 6.680e-02, 4.535e-02, 1.208e-02, -1.480e-01, -3.489e-03, -1.544e-02, -9.505e-04, -1.155e-02, 3.455e-02, 1.340e-01, -7.499e-02, -1.751e-01, -8.715e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-2.937e-02, 2.521e-02, -2.557e-03, -3.022e-02, -3.379e-02, 3.230e-02, 2.877e-02, 5.618e-02, 2.317e-02, 1.038e-01, -3.257e-02, -5.450e-02, 1.371e-01, -4.321e-02, 7.399e-02, -2.016e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(2.728e-02, 1.095e-01, -2.488e-01, -6.993e-02, -5.818e-02, -6.406e-02, -4.149e-02, -1.170e-02, 3.989e-02, 2.520e-02, -3.640e-02, -1.022e-02, -9.946e-02, -1.217e-01, -1.612e-01, 7.848e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-9.339e-03, 1.280e-02, 1.084e-01, -4.910e-03, -1.442e-03, -5.153e-02, -1.302e-02, -1.813e-02, -3.937e-02, -8.499e-03, 5.512e-02, -4.613e-02, 7.834e-02, 2.128e-01, -3.213e-01, 1.656e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-3.431e-01, 1.741e-02, 2.016e-03, 2.513e-02, 1.515e-01, 7.315e-02, 1.034e-01, -1.113e-01, -1.020e-01, 5.318e-03, -9.311e-02, 1.163e-01, 1.868e-01, 1.271e-01, 3.329e-03, 8.578e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-1.435e-02, -1.919e-02, -2.112e-02, 4.697e-02, 1.058e-01, 6.869e-02, 1.048e-01, -1.208e-02, -9.956e-02, -3.601e-03, -1.211e-01, -1.509e-03, -6.817e-02, 4.441e-02, 1.275e-02, 4.228e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(8.388e-02, 5.091e-02, 2.109e-02, -3.493e-02, -1.313e-01, 2.084e-02, -1.621e-02, -1.218e-01, 2.645e-02, -1.193e-02, -1.794e-01, 2.158e-03, -1.672e-01, -2.648e-02, 2.974e-02, -1.353e-01), r5);\n\tr6 = MulAdd(s0_2_0, M4(1.427e-02, 7.387e-02, -6.135e-03, 3.867e-02, 3.977e-02, -3.131e-02, 2.302e-02, 8.910e-02, -5.369e-02, 5.465e-02, -5.946e-02, 7.537e-03, -1.108e-01, -1.151e-01, 1.080e-01, -7.864e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-3.591e-02, 5.662e-02, 2.205e-02, 3.157e-02, -2.057e-02, 2.103e-02, -7.762e-02, 8.179e-02, 8.240e-03, -5.292e-02, -1.748e-02, 4.691e-03, 4.568e-02, -7.251e-02, 1.333e-02, -6.741e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(3.240e-03, 9.619e-02, -4.898e-02, -3.000e-02, 4.555e-02, -3.145e-03, 3.835e-02, 1.007e-02, 4.578e-02, 8.409e-02, -8.553e-02, -1.395e-01, 3.430e-02, 5.459e-02, -8.520e-02, 9.043e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(2.199e-02, -1.820e-01, -1.059e-01, -3.411e-02, -2.982e-02, 8.434e-02, -1.237e-01, -5.364e-02, -3.033e-02, 2.889e-02, -1.331e-01, 1.411e-01, 1.119e-02, -2.639e-02, -9.817e-03, 5.437e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(3.069e-02, 3.821e-02, -8.891e-02, 3.314e-02, -4.230e-02, 6.470e-02, 1.837e-01, 1.906e-01, 5.896e-02, -2.748e-02, -1.304e-01, -6.073e-02, -2.303e-01, -4.305e-02, 1.572e-01, 2.762e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-2.712e-01, -2.875e-02, 2.136e-01, 1.011e-02, -1.629e-01, 1.029e-01, 6.773e-02, -1.584e-01, 6.071e-02, 6.653e-02, -1.780e-01, 1.539e-01, -1.015e-01, -7.664e-02, -2.877e-01, -4.643e-01), r3);\n\tr4 = MulAdd(s0_2_1, M4(-8.180e-03, -1.063e-01, 8.179e-02, -9.399e-02, 5.049e-02, 2.524e-02, -3.601e-02, 1.519e-02, 9.250e-02, -5.135e-02, -1.008e-01, -9.218e-02, -7.876e-03, 1.103e-01, -4.606e-02, -1.942e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(5.605e-02, 6.444e-02, -1.321e-01, -1.901e-02, 4.401e-03, -4.456e-03, 1.396e-01, 1.621e-02, 5.918e-02, 4.022e-02, -9.257e-01, -4.909e-03, -9.999e-02, -3.811e-02, 3.242e-01, -8.379e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(2.888e-02, -4.213e-02, -4.318e-03, -2.496e-02, 6.446e-02, -1.273e-01, -1.018e-03, 2.783e-02, -5.261e-02, -1.870e-01, -3.202e-02, -3.694e-02, 2.024e-01, 6.831e-02, -3.461e-02, 1.126e-01), r6);\n\tr7 = MulAdd(s0_2_1, M4(-1.200e-02, -3.514e-02, -7.095e-02, -1.993e-02, -1.232e-03, 8.130e-02, -5.814e-02, 2.809e-02, 3.292e-02, 5.298e-02, -4.363e-03, -2.144e-02, -1.025e-02, -1.038e-01, 1.648e-01, 9.699e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-3.051e-02, -9.645e-02, 7.463e-02, 6.049e-02, 5.446e-03, 3.970e-02, -1.119e-01, -7.596e-02, 2.664e-02, 3.187e-02, -2.559e-02, -9.189e-02, 1.794e-02, -5.264e-02, -1.117e-02, -1.319e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(-3.388e-02, -4.682e-02, -1.211e-01, 3.681e-02, -2.477e-02, -3.397e-02, -5.636e-02, -5.447e-02, -1.454e-02, 6.858e-03, -4.541e-03, -2.661e-02, 8.302e-02, 8.412e-02, -6.972e-02, 1.516e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.806e-02, 6.344e-02, -5.748e-02, 2.941e-02, -1.645e-01, -5.028e-02, -3.943e-02, -5.719e-02, -2.447e-02, 4.939e-02, -3.758e-02, -1.117e-02, 1.787e-02, -6.613e-03, 4.060e-02, -3.070e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(-1.458e-01, -2.475e-01, 1.500e-01, 1.892e-02, -6.499e-02, 1.032e-01, 1.166e-01, -7.168e-02, -1.917e-02, 5.460e-02, 3.129e-02, -4.074e-02, -1.269e-01, 1.326e-01, -1.236e-02, -1.580e-01), r3);\n\tr4 = MulAdd(s0_2_2, M4(-1.522e-02, -8.299e-02, -8.786e-03, 1.037e-01, -7.140e-02, -9.748e-02, 1.334e-02, -1.388e-01, -1.095e-02, -3.988e-02, -6.685e-02, 8.560e-03, -4.806e-02, 4.893e-02, -2.899e-02, 1.083e-01), r4);\n\tr5 = MulAdd(s0_2_2, M4(-3.315e-02, 6.575e-03, -7.056e-02, -2.382e-02, 5.772e-02, 7.269e-02, 1.055e-01, 1.661e-01, 9.142e-02, -1.395e-02, -3.359e-02, 1.795e-02, 1.523e-02, -1.290e-02, 7.085e-02, 4.646e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-1.665e-02, 1.216e-01, 9.394e-02, -2.575e-02, 1.106e-01, 2.539e-02, -8.093e-02, -3.698e-02, 2.751e-02, -2.787e-04, 1.087e-01, 7.093e-03, -4.586e-02, -6.927e-02, -3.943e-02, -6.012e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-5.889e-03, -4.236e-02, -1.037e-01, -2.349e-02, -6.900e-02, 4.316e-02, 1.640e-02, -4.553e-02, -1.498e-02, -5.819e-02, 2.662e-02, 2.349e-03, -1.306e-02, 4.150e-02, -2.064e-01, -6.499e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-1.865e-02, 2.011e-02, 1.852e-02, 5.100e-02, -3.127e-02, -1.218e-02, -7.438e-02, -1.121e-01, -3.223e-04, 1.089e-02, -1.043e-02, -2.813e-02, -9.400e-02, -6.191e-02, -2.960e-02, 1.303e-01), r0);\n\tr1 = MulAdd(s1_0_0, M4(-7.951e-02, -5.635e-02, -2.771e-02, 5.199e-03, 4.553e-02, 6.425e-02, 2.501e-02, -9.787e-03, 5.506e-02, 6.667e-02, 1.673e-01, 2.096e-02, 3.674e-02, 2.107e-02, -2.001e-03, 5.865e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(4.936e-02, 1.330e-02, 2.680e-02, 1.842e-02, 3.094e-02, 1.520e-01, -1.238e-01, -1.626e-02, -2.979e-02, -8.032e-02, 1.843e-01, -1.164e-02, 2.162e-02, -3.870e-02, -1.357e-01, -1.920e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(2.501e-02, 5.085e-02, -2.863e-02, 3.514e-02, 6.387e-02, 4.358e-02, 3.147e-02, -1.095e-01, 9.752e-02, -1.282e-02, -6.669e-02, -6.958e-02, -9.218e-02, 9.301e-02, 1.461e-01, 7.415e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-5.687e-04, 3.998e-02, -5.312e-02, -4.528e-02, -3.231e-02, -2.556e-01, -1.141e-02, 4.909e-02, 8.623e-02, -1.447e-02, -1.877e-02, 1.186e-02, -6.590e-02, -3.764e-02, 1.270e-01, -6.851e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(5.390e-02, -3.909e-02, -3.574e-03, 9.363e-03, -2.757e-03, 1.079e-01, 2.682e-02, 2.045e-02, -3.835e-02, 8.868e-02, -8.223e-02, 2.484e-02, -4.200e-02, -8.661e-02, 5.904e-02, -2.847e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-2.241e-02, 3.191e-02, 1.660e-02, 4.295e-02, -9.951e-02, 4.188e-02, 9.593e-02, -2.938e-02, -4.934e-02, -1.051e-01, -3.810e-02, 6.244e-03, 8.133e-02, 7.290e-02, -1.302e-02, -2.151e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(4.425e-02, 4.221e-02, 6.696e-02, 3.653e-02, 2.863e-02, -4.529e-03, 1.850e-03, -3.795e-02, 4.027e-02, -3.839e-02, -1.876e-02, 1.099e-02, -2.389e-02, 1.025e-02, -4.549e-02, -8.110e-03), r7);\n\tr0 = MulAdd(s1_0_1, M4(-4.914e-02, 4.564e-02, 1.782e-02, 5.970e-02, -3.178e-02, -1.831e-01, 4.202e-02, -7.067e-02, 4.378e-02, 9.971e-02, -9.442e-02, -1.398e-02, 8.734e-02, -9.002e-02, 9.671e-02, 6.196e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.806e-02, -6.208e-02, -9.543e-02, 4.230e-03, -1.888e-01, -1.048e-01, 1.708e-02, -1.516e-01, -4.339e-02, -1.515e-01, -7.272e-02, -4.815e-02, -1.953e-02, -1.316e-03, -3.108e-02, -1.972e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-1.711e-02, -2.259e-02, 9.586e-02, -9.814e-03, 4.211e-02, -4.320e-02, 5.937e-02, -3.197e-02, -7.208e-02, 9.978e-04, 1.910e-01, -2.523e-03, 5.806e-02, -1.068e-02, -2.004e-01, 1.223e-03), r2);\n\tr3 = MulAdd(s1_0_1, M4(3.359e-02, -3.370e-01, 1.854e-02, -2.828e-01, -1.080e-01, -1.408e-01, -5.658e-02, -9.361e-02, -1.267e-02, -2.675e-02, -8.246e-02, 1.651e-01, -9.841e-02, 6.918e-02, 7.451e-02, 6.975e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-2.954e-02, -1.015e-01, -2.685e-02, -9.720e-04, 4.378e-02, -6.444e-02, -6.003e-02, 8.481e-02, 3.265e-02, -1.128e-01, -5.033e-03, 7.614e-02, -3.276e-02, 9.420e-02, 7.991e-02, -5.264e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(3.009e-02, 1.028e-01, 9.814e-02, 1.431e-02, 8.539e-02, -2.620e-01, -1.905e-02, -1.627e-01, -1.527e-01, -2.661e-01, -3.465e-02, -2.798e-02, 2.431e-02, -1.433e-01, 4.953e-02, -8.119e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-6.028e-02, 2.679e-02, -5.257e-02, -3.645e-02, 3.068e-02, 7.268e-02, 7.199e-02, -6.293e-02, 5.825e-02, -4.569e-02, 4.119e-02, -5.235e-02, 1.450e-01, 5.392e-02, -2.514e-02, -7.526e-03), r6);\n\tr7 = MulAdd(s1_0_1, M4(1.587e-01, -3.078e-02, 4.903e-03, -4.552e-02, -3.610e-02, -2.792e-02, -7.162e-02, -7.280e-02, -6.744e-02, -1.369e-01, 8.813e-02, -3.286e-02, -7.999e-02, -2.082e-02, -1.551e-02, -1.010e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(-2.622e-02, 2.684e-02, 3.128e-02, -1.535e-02, -2.404e-02, 1.621e-01, -1.521e-02, -1.078e-01, 1.001e-01, 1.636e-01, 2.925e-02, 1.398e-01, -1.638e-02, -1.154e-01, 4.236e-02, 1.124e-01), r0);\n\tr1 = MulAdd(s1_0_2, M4(2.658e-02, 4.512e-02, -3.993e-02, 2.172e-02, 6.502e-03, -8.863e-02, -9.081e-02, -7.144e-02, 5.235e-02, 1.190e-01, 1.423e-01, -3.503e-02, -2.056e-02, -1.134e-01, 1.352e-02, 2.760e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.163e-02, 3.594e-03, 5.669e-02, -1.554e-02, 3.209e-02, 1.240e-01, -3.146e-02, -4.591e-02, 1.968e-02, -1.075e-01, 1.545e-01, -3.627e-02, 6.519e-02, -5.993e-02, -1.373e-01, 5.721e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-6.603e-02, -5.988e-01, -1.195e-02, -7.810e-03, -1.044e-01, -5.980e-01, 3.397e-02, -1.961e-01, -2.344e-02, -4.166e-01, -1.557e-02, 1.924e-01, -3.165e-02, -6.138e-01, 2.746e-02, -2.334e-01), r3);\n\tr4 = MulAdd(s1_0_2, M4(-2.759e-02, 9.776e-02, -3.541e-02, 2.320e-02, 2.157e-02, -9.864e-02, -3.121e-02, 7.778e-02, 8.252e-03, 4.347e-02, 6.535e-03, -1.096e-01, -9.884e-03, -3.015e-02, 5.993e-02, -3.748e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(2.682e-02, 4.480e-02, 3.781e-02, -1.964e-02, -7.554e-03, -2.458e-02, -9.248e-02, -8.403e-02, -5.377e-02, 2.885e-02, -9.510e-02, -1.323e-01, -1.676e-02, -4.060e-03, 5.996e-02, 8.914e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-2.423e-02, 2.781e-03, 3.614e-02, 2.473e-02, -4.404e-02, 2.653e-02, 1.530e-01, -3.651e-02, -3.431e-02, 3.772e-02, -9.289e-02, 7.994e-03, 1.480e-01, -3.479e-02, -4.058e-02, -4.419e-03), r6);\n\tr7 = MulAdd(s1_0_2, M4(8.482e-02, 7.546e-02, -5.797e-03, 7.913e-03, 8.715e-02, 5.940e-02, 5.113e-02, -4.176e-02, 6.374e-02, 7.983e-02, -5.560e-03, 1.168e-02, -2.851e-02, 2.189e-02, 1.179e-02, 2.257e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(1.520e-01, 9.464e-02, 3.775e-02, -1.124e-02, 1.645e-01, -2.561e-02, -2.643e-02, -4.278e-02, -1.260e-01, -1.613e-01, -2.421e-02, -1.541e-01, 1.725e-02, 1.196e-01, -4.904e-02, 5.608e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(8.180e-02, -1.072e-01, 2.839e-02, -2.190e-02, -7.819e-02, 1.096e-01, -1.202e-01, 3.326e-02, 1.093e-01, 4.477e-02, 7.629e-04, 3.058e-02, 4.273e-02, -1.148e-01, 1.456e-02, -9.119e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(3.628e-02, -3.258e-02, 6.814e-02, 1.752e-03, 2.313e-02, -9.126e-02, 2.713e-01, -1.204e-02, 4.245e-02, 9.456e-02, 1.719e-01, 1.021e-02, -8.520e-02, -4.953e-02, 1.012e-01, -1.878e-03), r2);\n\tr3 = MulAdd(s1_1_0, M4(1.091e-01, 6.570e-02, -1.859e-03, 2.054e-01, -2.537e-02, -2.660e-02, -8.623e-02, 8.554e-02, -3.173e-01, -1.930e-01, -9.859e-02, -5.763e-02, -2.417e-02, 7.424e-02, -4.091e-02, -7.748e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(1.237e-01, -5.692e-02, 8.210e-04, 3.521e-02, -8.430e-02, -3.852e-02, -4.758e-02, -3.517e-02, -8.541e-02, -2.908e-01, -4.407e-02, 9.867e-02, 9.139e-02, -2.185e-02, -1.134e-01, -1.097e-03), r4);\n\tr5 = MulAdd(s1_1_0, M4(1.003e-01, 3.318e-02, 7.391e-02, -1.691e-01, 2.260e-01, -4.972e-02, 1.861e-02, -1.618e-01, -7.623e-02, -2.594e-02, 3.933e-02, -4.124e-02, -3.999e-02, 1.403e-02, 9.241e-02, -1.627e-04), r5);\n\tr6 = MulAdd(s1_1_0, M4(3.689e-02, 2.992e-02, -6.507e-02, -2.000e-02, 2.137e-02, -1.298e-04, -9.646e-02, 8.374e-02, -2.229e-02, -1.118e-02, 8.471e-02, -5.020e-02, 3.479e-02, -6.436e-02, -7.425e-02, 1.059e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(-2.717e-02, -1.684e-01, 2.418e-02, -3.454e-02, 1.062e-02, 8.406e-02, -1.061e-02, 5.729e-02, 1.601e-02, -4.729e-02, 5.862e-02, -4.580e-02, 3.717e-02, 2.039e-02, 2.690e-02, 9.001e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(2.577e-01, 1.959e-01, 2.450e-02, 6.216e-02, 1.267e-01, -1.808e-01, -4.259e-02, -3.341e-02, 1.717e-02, 1.923e-01, 7.343e-02, 3.066e-02, 9.872e-02, 2.026e-01, -1.533e-02, 7.675e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-2.124e-01, 4.114e-02, 4.243e-01, -8.082e-02, -1.951e-01, -1.162e-01, 2.188e-01, 9.980e-02, -2.073e-02, -3.428e-01, -1.017e-01, 1.438e-01, -3.596e-01, 4.625e-02, 3.677e-02, -3.522e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(7.105e-02, -1.792e-01, 8.513e-02, 1.903e-02, -6.898e-02, -1.024e-01, 1.046e-01, -3.382e-02, 8.553e-03, 6.060e-02, -3.418e-01, 1.195e-02, 1.644e-01, 9.807e-02, 1.113e-01, 5.422e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-1.490e-02, -2.149e-01, -3.271e-01, -1.380e-01, -1.770e-01, 4.275e-02, -1.146e-02, 2.785e-01, -7.691e-02, 2.465e-01, 2.503e-02, 1.214e-01, 4.360e-01, 1.875e-02, 1.903e-02, -9.945e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(8.425e-02, 4.313e-02, -1.057e-01, -1.689e-02, -6.002e-02, -4.082e-02, 5.735e-02, -8.925e-02, 5.434e-02, 1.048e-01, 2.136e-02, -1.062e-01, 1.745e-01, 9.472e-02, 1.168e-01, 1.885e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-8.390e-02, -3.030e-01, 6.797e-02, -7.977e-02, -3.545e-01, 3.267e-02, -2.051e-01, -7.827e-02, -4.316e-02, 1.864e-02, -2.004e-01, -1.753e-01, 6.909e-02, -6.142e-02, -8.028e-02, 6.992e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(1.822e-01, 5.840e-02, 2.621e-02, 6.568e-02, 2.169e-02, 1.002e-01, -8.344e-02, -3.652e-02, -1.560e-02, 2.351e-01, 1.695e-01, -1.575e-02, -6.937e-02, -5.929e-02, 2.028e-01, 2.321e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(2.241e-03, -2.269e-01, 2.047e-01, 6.151e-02, 1.278e-01, -1.743e-01, -1.024e-02, -3.359e-02, 8.219e-02, -1.734e-01, -1.343e-01, -1.155e-02, 8.709e-02, 8.756e-02, 4.463e-01, 2.519e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(1.349e-02, 2.159e-01, 8.519e-02, -1.252e-01, -2.306e-02, 2.666e-01, -6.038e-02, -2.690e-02, -1.854e-02, -1.074e-01, 1.343e-01, -2.129e-01, -7.048e-02, -3.667e-01, 1.052e-01, 1.727e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(-7.246e-02, -3.051e-03, 7.310e-02, -4.694e-02, 6.036e-02, -3.824e-02, 3.737e-03, -3.494e-02, -1.496e-01, 8.426e-02, -9.284e-02, 8.487e-03, 6.623e-02, 2.616e-02, 7.188e-03, 3.844e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-2.748e-02, -5.190e-02, 1.063e-01, 8.911e-03, 4.206e-02, 7.017e-02, 1.306e-02, 1.289e-02, -6.469e-02, 6.374e-03, -8.085e-02, 5.571e-03, -7.366e-02, -2.874e-02, 1.748e-01, 6.230e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(1.658e-01, -2.898e-01, -1.124e-02, -9.411e-02, -7.307e-03, -4.716e-01, 4.735e-03, 1.573e-01, 2.367e-02, 4.895e-02, -8.358e-02, 1.760e-01, 5.667e-02, -1.024e-01, 5.969e-02, -2.070e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(2.500e-03, 2.493e-02, -1.633e-02, 1.965e-02, 4.367e-02, -9.171e-02, 4.548e-02, -8.298e-02, -3.475e-02, 1.642e-03, -2.436e-02, 8.819e-02, 4.023e-02, 2.166e-01, 5.408e-02, -7.923e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(2.739e-02, -6.487e-02, 3.080e-03, -4.735e-03, -1.160e-02, -5.551e-02, -6.786e-02, -2.130e-02, -2.922e-02, -5.572e-02, 4.660e-02, -4.449e-03, -5.408e-04, 6.988e-02, 3.185e-02, 5.592e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(1.921e-02, -2.631e-02, 1.951e-02, 2.508e-02, -5.125e-02, -6.216e-02, -6.143e-02, 1.976e-02, 4.056e-02, 6.245e-02, 3.146e-02, -2.957e-02, 6.813e-02, -7.874e-02, -4.607e-02, 6.221e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(4.060e-02, 5.296e-02, 1.733e-01, 1.459e-02, -1.911e-03, -3.882e-02, 9.050e-02, 1.282e-02, -1.186e-02, -8.499e-02, 1.492e-01, -3.260e-02, 1.887e-02, 1.252e-01, -1.534e-02, 9.051e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-7.399e-02, 5.585e-02, -1.211e-02, -1.027e-02, 6.131e-02, 1.871e-02, -4.466e-04, -1.105e-02, 7.056e-02, 3.675e-02, 4.299e-02, -9.408e-02, -2.113e-03, 1.340e-02, -5.233e-02, 7.876e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.849e-03, -2.622e-02, 8.432e-02, -2.913e-05, -1.012e-02, 1.380e-01, -2.696e-01, -8.384e-03, -5.262e-02, -2.895e-02, -8.776e-02, -1.191e-02, 6.941e-02, -2.456e-02, -1.444e-01, 2.581e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(8.450e-03, -3.649e-02, -1.337e-02, -3.517e-02, 2.119e-02, -1.726e-02, 3.780e-02, -3.873e-02, -3.624e-02, -1.435e-02, -9.302e-02, 6.382e-03, 8.391e-02, 6.862e-02, -9.961e-02, -5.059e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.811e-01, -2.480e-02, -4.741e-02, 1.670e-01, 8.576e-02, 5.283e-02, 3.100e-02, -3.119e-02, 2.683e-01, 8.418e-02, -4.932e-02, 7.416e-02, -7.703e-02, 1.938e-01, 1.334e-01, -1.972e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(-5.957e-02, -4.754e-02, 5.410e-03, -8.830e-02, -9.410e-02, 1.045e-01, 3.475e-02, 5.608e-02, 2.052e-02, 7.845e-03, -9.187e-02, -1.803e-03, -2.832e-02, 3.688e-02, -6.737e-02, 5.270e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-9.795e-02, -9.348e-04, -9.291e-02, -1.411e-02, 5.898e-02, -2.583e-02, 4.387e-02, -1.492e-01, -1.592e-01, -6.135e-02, -1.562e-02, -8.667e-02, -5.639e-02, 2.656e-02, -2.173e-01, -1.889e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-4.960e-03, 1.873e-02, -1.105e-01, 2.597e-02, 4.418e-02, 1.331e-02, -3.707e-02, 4.719e-02, 4.114e-02, 3.499e-02, 5.705e-02, 5.299e-02, 1.816e-02, -1.616e-01, -3.457e-02, -5.369e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(2.948e-02, -8.599e-02, -4.188e-02, 2.031e-02, 2.680e-02, 8.375e-02, -3.498e-02, 5.178e-02, -4.439e-02, -1.507e-02, 5.684e-02, 5.273e-02, 5.313e-03, -1.042e-01, 3.371e-02, -6.504e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-7.395e-02, 3.276e-02, -2.269e-04, 7.893e-02, 5.830e-02, 1.452e-01, -1.361e-02, 6.712e-02, 3.376e-02, -9.384e-02, -5.069e-02, -2.233e-01, 4.066e-02, -1.260e-01, 1.685e-02, -5.212e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-9.662e-02, 6.314e-02, -1.704e-01, -2.036e-02, 8.167e-02, 1.095e-01, -2.750e-02, -3.791e-02, 3.217e-02, -1.826e-02, -1.509e-01, -9.514e-02, 3.511e-02, -8.614e-02, 1.567e-01, 1.284e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(-2.000e-02, -2.454e-02, 2.413e-02, -2.657e-02, -1.212e-01, -8.592e-03, 1.269e-01, 5.501e-03, -8.773e-02, -4.080e-03, 4.661e-02, -4.626e-02, -2.613e-02, 2.190e-02, -9.980e-02, -1.120e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(-1.258e-01, 2.793e-02, -4.512e-02, 1.591e-01, -1.049e-01, 3.318e-02, 2.183e-01, 1.492e-01, -5.634e-02, -6.915e-02, -1.049e-01, -2.300e-01, -1.523e-01, 6.375e-02, 6.503e-02, -1.396e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-2.101e-02, 5.074e-02, 3.405e-02, -7.987e-02, -8.527e-02, 1.323e-02, 4.919e-02, -3.832e-02, -1.540e-02, 1.237e-01, -5.345e-02, 9.805e-02, 7.500e-02, -5.170e-02, -1.284e-01, 1.106e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(7.788e-02, 6.039e-04, 2.260e-02, 4.946e-02, 3.278e-02, -5.590e-02, 4.670e-02, -2.874e-02, -1.109e-01, -1.267e-01, 1.552e-02, -5.307e-02, -7.011e-02, 1.028e-01, -5.455e-02, 8.586e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-2.094e-02, -1.785e-01, -3.034e-02, 4.132e-03, 8.662e-02, -1.248e-01, -5.613e-02, 3.239e-02, 2.839e-02, 2.324e-03, 1.024e-01, 1.428e-02, 6.199e-02, 9.109e-02, -1.242e-01, 1.372e-04), r6);\n\tr7 = MulAdd(s1_2_1, M4(5.536e-03, 5.006e-02, -7.798e-02, 3.294e-02, 3.213e-02, -1.167e-01, -8.325e-02, 1.765e-02, -8.207e-03, -1.028e-01, -4.349e-02, 2.099e-02, 1.250e-02, -1.343e-01, 7.672e-02, 6.518e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-2.043e-02, 2.884e-02, 2.740e-02, 3.485e-02, 3.895e-02, -1.118e-01, 2.449e-02, 2.074e-02, 2.020e-03, 6.780e-03, 9.242e-03, -4.039e-02, -3.497e-02, -8.913e-02, -5.155e-02, 2.590e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(8.848e-03, 1.468e-02, 1.053e-01, 1.905e-02, -6.363e-02, -3.077e-02, 4.572e-02, 3.596e-02, -1.091e-02, 4.160e-02, 1.665e-02, -2.456e-02, 2.052e-02, -4.255e-02, -3.674e-02, 1.936e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-2.145e-02, -5.781e-03, 1.478e-01, 6.097e-02, 9.543e-03, 2.292e-02, 1.569e-02, 4.774e-02, -6.826e-02, -8.448e-02, -9.934e-03, -6.721e-03, -2.270e-02, 5.301e-03, -8.421e-03, 2.898e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(8.269e-02, -1.268e-02, -3.839e-02, 1.779e-01, -1.107e-01, 5.993e-03, -1.038e-01, 3.780e-02, -1.549e-01, 1.851e-01, 9.625e-02, 5.638e-02, -3.583e-02, 7.233e-02, 1.770e-01, -1.732e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(3.744e-02, 3.627e-02, 2.263e-02, -3.364e-02, -1.422e-02, 4.108e-02, 2.596e-02, 4.506e-02, -6.271e-04, -4.114e-02, -2.429e-02, -6.037e-02, 8.467e-02, -9.505e-03, 4.022e-02, 5.856e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(3.274e-02, 4.617e-02, 2.678e-02, 1.295e-02, 1.059e-02, -1.523e-02, 2.401e-02, 6.461e-02, -2.142e-02, -1.733e-02, 6.982e-02, 8.992e-04, -8.035e-02, 7.251e-02, 1.195e-01, 7.150e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(2.999e-02, -8.032e-02, -1.265e-02, 3.097e-02, 5.162e-02, 4.260e-02, 5.971e-02, 1.775e-02, 1.199e-01, 8.231e-03, -1.252e-01, 3.797e-02, 9.026e-02, -4.499e-02, -7.362e-02, -3.069e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(1.596e-02, 3.236e-04, 8.575e-02, 2.852e-02, 2.102e-02, 1.427e-02, 1.507e-03, 1.249e-02, -3.732e-02, 4.335e-02, 7.945e-02, 4.483e-02, 5.558e-03, -1.232e-02, -1.468e-01, 2.083e-02), r7);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT4[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT5[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT6[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT7[gxy] = r7;\n}\n\n//!PASS 8\n//!DESC conv7 (32x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2, T3, T4, T5, T6, T7\n//!OUT T8, T9, T10, T11, T12, T13, T14, T15\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n#define L4(x, y) V4(O(T4, x, y))\n#define L5(x, y) V4(O(T5, x, y))\n#define L6(x, y) V4(O(T6, x, y))\n#define L7(x, y) V4(O(T7, x, y))\n\nvoid Pass8(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(2.193e-02, 4.096e-03, 1.229e-02, -2.600e-02, 4.405e-03, -6.006e-04, 2.603e-02, 1.148e-02, -3.559e-02, -3.563e-02, -4.724e-03, 9.231e-02, -2.986e-02, 1.523e-02, 1.953e-02, -9.404e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(2.808e-02, -1.216e-02, 5.696e-02, 5.417e-02, 1.194e-01, 3.970e-02, 1.153e-01, -2.933e-02, -1.494e-01, -2.509e-02, -7.562e-02, -4.979e-02, 3.814e-02, 2.407e-03, 3.103e-02, 2.931e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(2.202e-01, 4.896e-02, -1.901e-02, 6.704e-02, -2.998e-02, 1.602e-02, 5.006e-03, -1.240e-02, -2.258e-01, -2.702e-02, -1.003e-01, -4.114e-02, -1.209e-01, 4.057e-03, 8.958e-03, 1.077e-01), r2);\n\tr3 = MulAdd(s0_0_0, M4(-3.964e-02, 1.408e-02, 5.894e-02, 7.580e-02, -7.665e-02, 1.135e-03, 1.633e-02, 1.631e-03, 2.507e-02, 1.585e-02, 2.240e-02, 4.631e-02, 1.028e-01, -1.234e-02, -2.462e-02, -2.630e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.199e-02, -4.109e-02, -3.071e-02, 3.814e-02, -2.157e-03, -1.661e-02, 3.362e-02, 7.540e-03, -7.994e-04, 6.867e-02, -3.504e-03, -1.156e-01, -3.065e-03, 7.496e-02, -7.114e-03, -5.064e-04), r4);\n\tr5 = MulAdd(s0_0_0, M4(1.082e-02, 4.877e-03, -2.477e-02, 1.676e-02, 1.669e-02, 3.008e-02, -2.749e-02, -2.647e-02, -2.332e-02, 2.419e-02, 7.750e-02, 4.304e-02, 7.744e-02, 5.294e-02, -9.259e-02, -5.442e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(4.838e-02, 1.263e-01, 1.628e-02, -3.375e-02, 5.208e-02, -3.544e-02, 3.576e-02, 4.988e-02, -1.288e-01, -6.997e-03, -1.047e-02, 4.184e-02, -2.334e-02, -4.337e-02, 4.524e-03, -1.298e-01), r6);\n\tr7 = MulAdd(s0_0_0, M4(-2.199e-02, -5.004e-03, 1.702e-02, 3.401e-03, 9.596e-02, 3.016e-02, 7.999e-03, 2.400e-02, -8.456e-02, 3.391e-02, -5.411e-03, 1.911e-02, -7.348e-02, -2.376e-02, 3.208e-03, 5.632e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(3.739e-02, 5.325e-02, 4.478e-02, -1.037e-02, -5.521e-02, 2.217e-02, 4.631e-02, 8.129e-02, -5.165e-02, 2.549e-02, -2.430e-02, 1.702e-02, 9.546e-02, -7.246e-03, 3.282e-03, -7.865e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-5.445e-02, -1.676e-02, 8.366e-02, 1.469e-01, -1.397e-02, 7.104e-02, 4.280e-02, 1.357e-01, -1.078e-01, -7.589e-02, -1.018e-02, -1.140e-01, 1.326e-01, 8.938e-02, 9.015e-02, 1.064e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(5.846e-02, -3.735e-03, 1.161e-01, 2.451e-02, -4.969e-01, -5.243e-02, 5.160e-02, -2.035e-02, 2.790e-01, -8.564e-03, 9.025e-02, 2.716e-02, -1.441e-02, -2.652e-01, -7.376e-02, -2.019e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(-4.458e-02, -1.654e-02, 1.329e-02, -4.332e-02, 5.906e-02, 2.980e-02, 2.048e-02, 9.353e-02, 4.582e-02, 3.986e-02, 1.535e-02, 7.312e-02, -4.701e-03, -1.146e-02, -8.430e-02, -1.783e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(-2.283e-02, -6.789e-02, -8.520e-03, 6.567e-02, -4.331e-02, -3.522e-02, 7.498e-03, -4.675e-02, 1.424e-02, 6.581e-02, -6.533e-02, -9.927e-02, 6.588e-02, 3.131e-03, 1.181e-01, 5.658e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(2.434e-02, -4.333e-02, -4.944e-02, 4.443e-02, -5.822e-04, 4.087e-02, 1.568e-02, -8.456e-03, 5.200e-03, 1.590e-02, 3.025e-02, 5.607e-02, -5.925e-02, 2.891e-02, -2.638e-02, -9.875e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(9.091e-02, 8.095e-02, 3.334e-02, -9.432e-02, -1.233e-01, -8.451e-02, 4.364e-02, 7.098e-02, 4.761e-02, -9.379e-05, -3.464e-02, 5.573e-02, 1.012e-01, -1.770e-01, 1.814e-02, -8.945e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(1.729e-01, -1.241e-02, -4.275e-03, -4.945e-02, 1.894e-01, 1.040e-03, 4.102e-02, 4.114e-02, -1.916e-01, 7.801e-02, -4.699e-02, 2.175e-02, -1.055e-01, -1.572e-01, 4.892e-02, 1.481e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(1.017e-02, 1.242e-02, -1.110e-02, -7.305e-02, 3.600e-02, 4.604e-02, 3.097e-02, 3.556e-02, 4.595e-02, -2.976e-02, 2.990e-02, 5.325e-02, -1.096e-01, -2.279e-03, -1.975e-03, -2.945e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.365e-02, -1.421e-01, -2.773e-02, 1.789e-01, -2.628e-02, 1.742e-02, -1.321e-02, 2.039e-02, -3.614e-02, 2.926e-02, -2.137e-02, 1.092e-01, 1.013e-01, -4.704e-02, 2.056e-03, -4.272e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-4.305e-01, 5.488e-02, 4.369e-02, 1.807e-02, 1.090e-01, 8.281e-02, -5.683e-03, -1.164e-03, 6.789e-02, 1.645e-01, -1.210e-02, 6.143e-02, 4.038e-02, 8.465e-02, 7.400e-03, 3.254e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(1.300e-02, -1.797e-02, 6.806e-03, 1.056e-01, 7.454e-03, 2.418e-02, 3.599e-02, 2.054e-02, 4.017e-02, 1.189e-02, 1.379e-01, 2.344e-02, -1.513e-02, 6.797e-03, 8.492e-02, -4.177e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(1.095e-02, -6.896e-02, -3.908e-02, 7.936e-02, 1.401e-02, 7.777e-03, 1.607e-02, -4.422e-02, 1.659e-02, -6.426e-03, -4.480e-02, -4.960e-02, 3.666e-02, 2.579e-02, 2.044e-02, 5.433e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-5.096e-02, 4.151e-02, -6.435e-02, -2.935e-02, -1.096e-02, 4.004e-02, 1.011e-02, -2.526e-02, 2.935e-03, 1.776e-02, 4.237e-02, -3.212e-02, 2.074e-02, -2.249e-02, -5.283e-02, 2.045e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(2.328e-02, 2.901e-02, 2.043e-02, -2.848e-02, -1.184e-01, 1.132e-01, 1.336e-02, -3.840e-03, 4.123e-02, 4.946e-02, 4.825e-02, -4.534e-02, 7.140e-02, 1.574e-01, -3.042e-03, 1.329e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(2.580e-01, 9.098e-02, -5.457e-03, 2.980e-02, -1.254e-01, 9.724e-03, -2.324e-02, 3.589e-02, -3.878e-02, 7.989e-02, 1.901e-02, 2.349e-02, -5.869e-02, -5.467e-02, -9.921e-02, -3.196e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(5.131e-02, 2.684e-03, -1.969e-02, -1.114e-02, -6.602e-02, -1.125e-01, -1.033e-01, -7.758e-02, -6.044e-02, -1.259e-02, 4.874e-02, 2.141e-02, 1.387e-01, -9.269e-02, 2.892e-02, 2.035e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(1.437e-02, -3.320e-03, 7.812e-02, -4.959e-03, 2.351e-01, 8.013e-02, -1.466e-01, 5.221e-02, 5.705e-02, -5.153e-02, 2.017e-02, -1.208e-01, -5.271e-02, 9.495e-03, 6.135e-02, -7.685e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(4.051e-02, 1.611e-01, 2.084e-03, 9.595e-02, 9.862e-02, -1.508e-01, 9.337e-02, 5.320e-04, -1.514e-02, -8.166e-02, -8.908e-02, -7.800e-02, 1.547e-01, -1.375e-01, -5.193e-02, -1.332e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.226e-02, 5.510e-03, -9.070e-03, 3.940e-02, -1.598e-01, 8.465e-03, -1.889e-01, -1.057e-01, -2.097e-02, 3.089e-02, 2.149e-02, 1.345e-02, 1.326e-01, -1.140e-02, 1.018e-01, -7.143e-03), r3);\n\tr4 = MulAdd(s0_1_0, M4(5.168e-02, -3.415e-02, -5.526e-04, 4.691e-02, 5.088e-03, 4.238e-02, 9.833e-02, 1.565e-01, -4.075e-02, 1.393e-03, -9.955e-04, -1.030e-01, 1.362e-01, 1.645e-02, -8.245e-02, 1.306e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(-2.504e-02, -3.629e-02, -1.543e-03, 2.592e-02, -1.320e-01, -4.753e-02, 2.647e-02, -6.994e-02, 3.041e-04, -1.436e-02, 5.617e-03, -1.060e-02, 1.352e-01, 1.781e-02, -9.891e-02, 4.358e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-4.273e-02, 7.494e-02, -3.445e-02, 2.877e-02, 4.241e-02, -4.726e-02, -1.341e-01, -1.354e-01, -6.190e-03, -8.320e-02, 4.163e-02, -2.354e-02, 1.120e-01, 2.065e-01, 5.385e-02, -3.069e-04), r6);\n\tr7 = MulAdd(s0_1_0, M4(-5.956e-02, 6.960e-02, 5.904e-03, -3.395e-02, -6.042e-04, 1.324e-02, -8.967e-02, -4.483e-02, -2.636e-01, 5.330e-02, -4.225e-02, -1.180e-02, -6.858e-02, -1.507e-02, -5.604e-02, 2.764e-03), r7);\n\tr0 = MulAdd(s0_1_1, M4(-1.147e-04, -1.927e-02, 4.422e-02, 1.604e-01, -1.754e-01, -2.632e-01, -4.659e-02, 1.208e-02, -1.847e-01, -2.526e-02, 4.083e-03, 1.799e-02, -5.897e-02, 3.600e-03, 5.961e-02, 1.257e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(4.981e-02, 1.270e-02, -2.407e-01, -6.165e-02, 1.827e-01, -8.822e-02, -1.282e-01, -6.933e-01, -8.708e-03, 9.458e-02, 1.116e-01, 4.564e-01, -3.468e-01, -1.329e-01, -4.616e-02, -3.704e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-3.783e-02, -6.110e-02, -8.527e-02, -2.173e-01, 2.072e-01, -3.947e-01, -6.113e-01, -3.098e-01, -3.013e-01, 2.878e-01, 1.053e-01, 2.555e-01, -2.493e-01, 3.198e-01, -1.147e-01, 6.920e-03), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.592e-02, -6.559e-02, -2.206e-01, -9.351e-02, -7.251e-02, 3.789e-02, 1.277e-01, -1.978e-01, -1.680e-01, 1.884e-02, -2.058e-01, 1.198e-01, -1.383e-01, -7.246e-03, -8.406e-02, 2.815e-03), r3);\n\tr4 = MulAdd(s0_1_1, M4(3.254e-02, -1.421e-01, -9.839e-02, -2.610e-01, 7.946e-02, -8.170e-02, -1.259e-01, -3.484e-01, 2.155e-02, -4.199e-03, 5.373e-02, -8.983e-02, -3.368e-01, -1.010e-01, -3.302e-02, -2.883e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(-5.154e-02, 1.413e-01, -2.944e-02, 8.037e-02, 7.026e-02, 1.538e-01, 2.713e-04, 7.985e-02, -6.464e-02, -1.166e-01, -7.689e-02, 4.004e-02, -2.251e-01, -2.359e-02, 2.684e-01, -9.288e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(-2.959e-02, -1.627e-01, -5.982e-03, 1.261e-01, 1.981e-01, 8.691e-02, 4.175e-02, 3.612e-02, -9.207e-02, 1.916e-03, 4.476e-02, 5.185e-02, -1.977e-01, -6.463e-02, -1.966e-02, 1.378e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(-2.675e-02, 1.353e-01, 1.846e-01, 1.115e-01, -3.936e-01, -6.179e-02, -2.526e-01, 1.202e-01, -1.292e-01, -8.402e-02, 2.329e-01, -1.695e-01, 2.245e-01, 1.397e-01, 4.797e-02, 1.382e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-1.697e-01, -1.103e-01, -1.332e-02, -2.337e-02, -1.110e-01, 2.330e-02, -1.696e-02, 6.998e-03, -1.207e-01, 8.330e-02, 2.622e-02, 2.499e-02, -6.736e-02, 1.783e-03, -4.563e-02, -4.580e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(1.514e-01, -8.068e-02, -9.391e-02, -3.036e-01, -6.870e-02, 6.951e-02, 6.809e-02, 1.462e-01, 1.692e-01, 1.362e-01, 2.025e-01, 2.610e-01, 7.792e-02, 1.616e-01, -2.903e-02, -1.430e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.737e-01, -2.259e-01, -1.288e-01, -1.377e-01, 2.700e-02, 3.576e-03, 8.837e-02, 2.904e-02, -2.302e-02, -9.977e-02, 6.460e-02, -5.198e-03, -7.495e-02, -2.017e-01, 4.703e-02, 1.055e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(1.036e-03, -4.867e-02, -1.351e-01, -1.755e-01, -4.527e-02, 2.295e-02, -3.796e-02, -5.913e-03, -1.451e-02, 4.407e-02, -1.664e-02, -3.584e-01, -1.232e-02, -1.575e-02, -2.514e-02, -6.469e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(6.347e-02, 1.509e-01, -1.188e-01, 5.426e-02, -1.440e-01, -7.131e-02, 3.691e-03, 8.768e-02, -1.304e-01, 1.670e-02, -1.347e-02, 1.362e-01, 2.384e-02, -6.485e-03, 1.021e-01, 1.748e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(-8.473e-02, -5.088e-02, 3.695e-02, -3.414e-02, 5.446e-03, 5.473e-02, 5.370e-02, 1.134e-02, -5.990e-02, 2.590e-02, 8.100e-02, -3.391e-02, 8.148e-02, -4.800e-02, -1.057e-01, 5.311e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-1.789e-01, -1.909e-01, -3.993e-02, 6.770e-02, 3.917e-02, -1.285e-01, 5.610e-03, -6.927e-03, 2.090e-01, -6.194e-03, -8.423e-03, -1.463e-01, 5.024e-02, -1.429e-01, -1.948e-02, 1.195e-03), r6);\n\tr7 = MulAdd(s0_1_2, M4(5.772e-02, -2.030e-01, -2.821e-01, -2.656e-02, 1.393e-01, 9.929e-02, 1.795e-02, 5.498e-02, 3.966e-01, -1.918e-02, 7.519e-02, 5.167e-02, -7.964e-02, 9.114e-02, 7.425e-02, -5.468e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-6.231e-02, 6.952e-02, -1.461e-02, -2.409e-02, 1.235e-02, -3.301e-02, -2.575e-03, 4.383e-02, 6.700e-03, 1.563e-02, 2.192e-02, 5.955e-02, 3.637e-03, 3.035e-02, 7.876e-03, -1.464e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(4.294e-02, -5.188e-03, -2.442e-02, 3.094e-02, -2.875e-02, 2.913e-03, 1.914e-02, -4.828e-02, -5.692e-02, 5.733e-02, -1.698e-02, -6.984e-02, 6.007e-02, 5.822e-02, -8.898e-02, 1.020e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.085e-02, 5.436e-02, 5.327e-02, 4.468e-02, -4.183e-02, -1.081e-02, 4.993e-02, 1.089e-02, 5.993e-03, -2.076e-02, 7.417e-03, -3.675e-02, -7.245e-02, 2.432e-02, 2.782e-02, -5.464e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-5.914e-02, -1.320e-02, -6.761e-03, -1.856e-02, 2.098e-02, -6.106e-03, 1.185e-02, -2.889e-02, 3.042e-02, 3.404e-02, -1.054e-01, 7.488e-03, -2.571e-02, -3.475e-03, 1.835e-02, -1.003e-03), r3);\n\tr4 = MulAdd(s0_2_0, M4(-3.020e-02, -3.002e-02, 4.832e-04, -2.147e-02, 1.864e-02, -1.101e-02, 2.221e-02, 4.736e-02, 3.896e-02, 1.632e-02, 4.100e-02, -7.698e-02, 7.481e-03, -4.513e-02, 2.106e-03, 6.067e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-1.051e-02, -1.731e-02, 6.857e-03, -2.372e-02, 2.727e-02, -7.792e-04, 4.102e-02, -8.819e-03, 4.148e-02, 1.170e-02, 3.150e-02, 3.565e-02, 6.613e-02, 2.974e-02, -7.013e-02, -9.284e-03), r5);\n\tr6 = MulAdd(s0_2_0, M4(4.643e-02, 1.298e-02, -6.088e-02, 5.348e-02, -2.318e-02, 6.514e-03, -9.708e-03, -9.865e-02, -1.040e-01, -1.015e-01, 3.999e-02, -4.854e-02, 2.841e-02, -1.127e-01, 2.860e-02, -1.922e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-8.503e-02, 3.106e-02, 1.538e-01, -1.607e-02, -7.385e-02, -3.413e-02, -1.829e-02, -4.963e-03, -5.402e-02, -7.252e-02, -6.589e-03, 3.357e-02, -6.766e-02, 2.184e-03, 8.764e-02, 2.841e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(1.065e-01, -4.277e-02, 3.220e-02, 3.585e-02, 1.044e-01, -5.074e-03, -2.508e-02, -1.334e-02, 9.303e-02, 1.079e-01, 1.568e-02, 2.533e-02, -2.894e-02, -3.935e-02, -2.782e-02, -7.495e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-8.802e-02, -7.910e-02, -2.747e-02, -4.581e-01, 1.642e-01, 1.185e-01, 2.786e-02, -2.187e-01, 8.555e-02, 9.267e-02, -1.429e-01, 1.442e-01, 1.465e-01, -8.563e-02, -5.797e-02, 2.067e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-5.358e-02, -2.388e-02, 1.787e-02, 3.467e-02, 2.009e-02, -1.593e-02, -1.853e-01, -1.637e-01, -1.028e-02, -1.448e-01, -4.755e-02, -1.294e-01, 7.792e-02, -1.557e-01, 2.079e-02, 9.154e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.356e-01, -2.258e-02, -7.667e-02, 6.822e-02, 5.537e-02, 1.388e-02, -8.355e-03, 2.791e-02, -2.591e-02, 5.090e-02, 1.529e-01, 1.863e-02, -3.013e-02, -1.895e-02, 9.205e-02, -2.199e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(4.867e-02, -5.228e-02, 3.889e-03, 1.094e-01, -5.061e-02, -1.801e-02, -4.140e-03, 3.981e-02, -1.087e-02, -4.663e-02, 1.568e-02, -4.934e-02, -4.527e-03, 3.790e-02, 1.555e-02, 2.722e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(3.858e-02, -1.923e-02, -7.594e-03, 9.209e-02, 3.669e-02, 2.940e-02, -8.941e-02, 3.350e-02, -1.790e-02, -2.645e-02, -7.611e-02, -6.073e-02, -2.991e-02, -2.319e-02, -8.723e-04, 8.567e-03), r5);\n\tr6 = MulAdd(s0_2_1, M4(6.072e-02, 3.556e-02, 7.051e-02, -7.495e-02, -8.334e-02, -5.753e-02, -3.751e-02, 3.313e-02, -3.677e-02, 1.304e-01, 3.732e-02, -3.416e-02, 7.498e-02, 1.103e-01, 6.730e-03, 5.701e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(-1.526e-01, -7.154e-02, -2.016e-02, -1.554e-02, -8.075e-02, -1.165e-01, -9.421e-02, 3.769e-02, 1.276e-01, -1.519e-01, -2.026e-01, -1.023e-02, -9.460e-02, -8.530e-02, -2.847e-01, -3.344e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-5.322e-02, -7.916e-02, 5.301e-03, -3.458e-02, -1.602e-03, 3.435e-02, 1.592e-02, 1.241e-03, 1.411e-01, -7.579e-02, -2.836e-04, -2.464e-02, 1.069e-01, -4.858e-03, 1.790e-02, -4.092e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(9.762e-02, 1.054e-01, 1.149e-01, -2.767e-01, 7.110e-02, 4.793e-02, -7.460e-03, 1.067e-02, 2.133e-02, 1.078e-01, 3.898e-02, -1.715e-01, 3.945e-02, -3.048e-02, 1.550e-02, 1.081e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(-1.171e-01, -9.886e-04, 1.509e-01, -1.270e-01, 9.755e-02, -2.198e-02, 2.664e-02, 5.167e-02, 1.106e-01, -1.898e-02, 1.163e-01, -9.447e-02, 1.105e-01, 5.840e-02, 5.950e-02, -1.179e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(-4.966e-02, -1.901e-02, -5.702e-02, -4.279e-02, 2.166e-02, 7.600e-03, 5.157e-02, 4.279e-02, 9.575e-02, 3.221e-02, 1.440e-01, 6.961e-02, -3.546e-02, -1.686e-03, 9.623e-03, 5.355e-03), r3);\n\tr4 = MulAdd(s0_2_2, M4(5.548e-02, -1.800e-02, 7.859e-03, -3.189e-02, -5.105e-02, 1.862e-02, 9.376e-03, 5.247e-02, -1.957e-02, -3.775e-02, 3.650e-02, 1.239e-01, 1.014e-01, 4.951e-02, 1.058e-02, 9.238e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(2.129e-02, -1.007e-02, -1.020e-01, 2.005e-02, -1.626e-02, -3.262e-03, 4.382e-02, -1.125e-02, 1.238e-02, -1.550e-02, -9.884e-02, -2.163e-02, -5.818e-03, -6.717e-02, -2.107e-02, 4.479e-03), r5);\n\tr6 = MulAdd(s0_2_2, M4(-5.362e-02, -1.318e-01, 2.922e-02, 6.707e-02, 2.147e-02, 1.250e-02, -8.862e-04, -4.174e-02, -5.087e-04, -1.616e-01, 2.507e-02, -1.061e-01, 1.008e-01, -6.838e-02, 7.030e-03, 1.088e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-2.678e-01, -1.959e-01, 4.387e-02, 5.436e-03, 7.891e-02, -6.583e-02, 5.107e-02, -8.266e-03, -2.741e-02, 2.699e-02, 1.809e-01, -1.554e-02, -8.502e-02, 3.692e-02, 4.393e-02, -6.375e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-2.425e-02, -7.758e-02, 5.531e-03, 8.778e-02, 3.156e-02, -1.915e-02, -7.599e-03, -1.289e-02, -3.870e-04, 3.463e-02, -8.475e-02, -1.455e-02, -2.628e-02, -5.031e-03, -1.368e-02, -1.079e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(2.666e-02, 1.008e-01, -5.006e-02, 8.809e-02, 4.245e-03, -1.671e-02, 9.409e-03, 7.436e-02, 8.240e-03, 5.155e-02, -4.163e-02, -4.095e-02, -9.542e-02, -1.545e-02, -9.305e-02, -1.368e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(3.594e-02, -2.025e-02, -4.094e-02, -6.889e-02, -6.322e-02, -3.791e-02, -3.746e-02, 1.918e-03, 9.501e-02, 2.243e-03, 7.684e-02, 8.788e-04, 9.665e-02, 7.653e-02, 5.562e-02, -3.641e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-6.902e-02, 2.423e-02, 8.476e-02, 1.611e-02, -4.338e-04, -1.586e-02, -2.603e-02, -2.252e-02, 8.322e-02, -4.994e-03, -6.604e-02, -1.079e-02, -6.838e-02, 5.038e-03, 1.013e-01, 3.674e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-3.699e-02, 3.248e-02, 6.327e-03, -4.826e-02, -1.224e-02, 7.876e-03, -7.215e-03, -2.679e-02, -7.552e-04, 1.396e-02, -8.822e-03, 1.023e-01, -6.810e-03, -8.604e-03, 2.271e-02, -1.653e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(1.908e-02, 5.048e-03, 6.385e-02, 1.349e-02, 1.674e-02, -9.008e-03, -1.298e-02, 2.283e-02, -4.049e-03, -2.205e-02, -4.966e-04, 3.466e-02, -2.840e-03, 1.352e-02, -5.393e-03, 6.144e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(7.708e-03, 1.773e-02, 3.079e-02, -2.570e-02, 3.799e-02, 7.802e-03, -3.226e-03, 7.041e-02, 4.045e-02, -4.144e-03, -7.784e-02, 7.497e-02, 2.042e-02, 5.357e-03, -1.770e-02, 5.325e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(3.408e-02, -7.442e-03, 8.781e-02, -3.716e-03, 2.215e-02, -2.977e-02, -1.729e-02, -6.236e-03, -2.386e-02, 3.398e-04, 2.049e-02, -2.853e-02, 2.273e-02, 4.566e-02, -1.530e-02, 1.553e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-1.505e-01, -2.863e-02, -4.213e-02, 4.151e-02, 4.299e-02, 1.180e-03, 4.053e-03, 2.974e-03, 2.250e-02, -1.621e-01, -1.835e-01, -3.700e-02, 1.038e-02, -4.085e-02, 5.879e-03, -2.326e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(6.600e-03, 8.668e-02, -3.303e-02, 2.106e-02, 5.787e-02, 7.864e-02, 4.592e-02, 1.417e-01, 6.048e-02, -4.784e-02, -3.361e-02, -1.038e-01, -8.942e-04, -1.117e-01, -9.139e-03, -2.131e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.043e-01, 7.515e-02, 6.286e-02, 1.745e-02, -6.014e-02, -4.913e-03, -9.170e-03, 1.848e-02, -8.421e-02, -1.424e-01, -1.268e-02, -2.680e-02, 1.276e-01, 6.099e-02, -1.311e-01, 7.860e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(7.453e-02, 7.543e-02, 6.958e-02, 5.098e-02, -1.122e-02, -4.061e-03, 4.267e-02, 4.596e-02, -1.261e-01, 8.132e-03, -1.069e-03, -7.177e-02, 2.025e-01, 2.018e-02, -8.446e-02, 1.086e-01), r3);\n\tr4 = MulAdd(s1_0_1, M4(-2.366e-02, 4.798e-02, 1.156e-03, 5.809e-02, 9.645e-03, 1.865e-03, -1.439e-02, -6.174e-02, 1.809e-03, 5.356e-03, -4.787e-03, 9.360e-02, -4.191e-02, 1.265e-01, -4.619e-02, -1.821e-01), r4);\n\tr5 = MulAdd(s1_0_1, M4(-5.082e-02, 1.381e-02, 3.888e-02, 5.811e-02, 2.500e-02, 1.014e-02, -1.675e-02, 5.909e-02, -3.159e-02, -2.658e-02, 1.162e-02, -5.128e-03, 1.382e-02, -1.283e-02, -3.396e-02, 1.179e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-7.126e-02, 2.170e-02, -5.140e-02, 3.150e-02, 6.903e-02, -1.080e-02, 3.065e-02, -3.708e-02, 1.474e-01, -2.483e-02, -5.890e-02, 8.846e-02, 9.547e-02, 9.322e-02, -1.652e-03, -2.245e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-1.597e-01, 1.359e-02, 7.124e-02, 7.982e-03, 3.289e-02, -5.096e-02, 6.057e-02, -5.905e-04, -1.141e-01, -4.151e-03, -6.376e-02, -1.066e-02, -4.969e-02, 1.519e-01, -4.429e-02, 6.366e-03), r7);\n\tr0 = MulAdd(s1_0_2, M4(-3.699e-02, 3.046e-03, -3.692e-02, 3.793e-02, -3.952e-02, -4.521e-03, -1.485e-02, -3.929e-04, -9.477e-02, -1.692e-01, -3.720e-02, 1.307e-02, 5.883e-02, -6.748e-02, 5.819e-03, -1.037e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.920e-02, 5.638e-02, 9.326e-03, -1.478e-02, 4.841e-02, 3.308e-02, 2.372e-02, 1.062e-01, -2.836e-02, -5.210e-02, -5.301e-02, -2.063e-01, -3.864e-02, 3.257e-02, 3.826e-03, 5.075e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.260e-01, 4.418e-03, -1.853e-02, -9.560e-03, 2.163e-01, 7.553e-02, 2.679e-02, -9.942e-03, -3.876e-02, -2.687e-02, -7.644e-02, -3.944e-02, -2.188e-01, -3.829e-03, 8.716e-02, -1.123e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(2.504e-02, 7.300e-02, -3.376e-03, 2.287e-03, 5.925e-02, 5.321e-03, -3.889e-02, 1.005e-01, -4.359e-02, -6.637e-03, 1.053e-02, -3.631e-02, 1.148e-02, -2.108e-02, 2.520e-02, -6.650e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-2.502e-02, 6.480e-02, -2.810e-03, -7.475e-02, -3.271e-02, -4.177e-02, 1.540e-02, 9.846e-02, -5.310e-03, 1.569e-02, -4.781e-03, -4.752e-02, -4.467e-03, 3.244e-03, -6.049e-03, -1.018e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(2.147e-03, 1.605e-02, 3.701e-02, -1.461e-02, -1.946e-02, 4.662e-02, 9.916e-04, 2.752e-02, 9.745e-03, 1.547e-02, 7.588e-03, -3.115e-05, -1.309e-03, -4.777e-02, 9.870e-03, 3.079e-03), r5);\n\tr6 = MulAdd(s1_0_2, M4(-5.690e-03, 9.807e-02, -1.674e-02, 7.300e-03, 4.987e-03, 3.738e-03, 5.592e-04, -1.107e-02, 1.017e-01, 1.772e-03, -6.057e-03, 6.661e-02, 4.710e-02, -7.001e-02, 3.189e-02, -4.004e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-1.084e-01, 5.906e-02, 1.203e-02, 3.166e-02, 7.393e-02, 1.840e-02, 1.381e-02, 3.822e-02, -2.903e-02, -9.225e-03, -2.394e-02, 1.891e-02, 7.495e-02, -2.545e-02, 4.897e-02, -4.383e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-1.471e-01, -6.702e-03, 9.318e-03, 1.711e-02, 4.528e-02, -4.823e-02, -4.277e-02, -1.479e-02, -1.533e-02, 2.724e-02, -5.132e-02, 3.291e-03, -8.557e-02, -4.835e-02, 9.768e-03, -5.025e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-8.100e-02, -1.532e-01, -1.590e-01, 3.131e-01, 7.298e-02, -3.050e-02, -5.412e-02, -8.687e-02, 7.202e-02, 3.668e-02, -1.253e-01, -1.085e-01, 2.048e-01, 1.121e-02, 2.341e-01, 1.773e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(-7.826e-02, 3.979e-01, 1.067e-01, 2.566e-01, -5.394e-02, -1.007e-01, -6.849e-02, 4.847e-03, 1.714e-03, -5.025e-02, 7.825e-02, -1.954e-02, -1.807e-02, -1.665e-01, -4.487e-02, -2.886e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-1.668e-01, 7.331e-02, 1.274e-01, -2.797e-02, 1.093e-01, 2.362e-03, -3.414e-03, 5.022e-02, 4.471e-02, 1.681e-02, -4.946e-02, -3.767e-02, -8.179e-02, 3.650e-03, 4.745e-02, -6.750e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(6.371e-02, -4.506e-02, 2.366e-02, -5.213e-01, 2.094e-02, 3.852e-02, -2.253e-03, 1.115e-01, -7.029e-02, 6.890e-03, -1.085e-02, 1.095e-01, -1.420e-02, 1.022e-01, 2.966e-02, 1.918e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(-3.625e-02, 1.158e-02, -2.652e-03, 1.159e-01, 1.855e-02, 5.749e-03, -1.214e-02, -7.806e-03, 1.539e-02, 2.002e-02, -3.554e-02, 3.841e-02, 7.618e-02, -2.541e-02, -6.336e-02, -1.415e-01), r5);\n\tr6 = MulAdd(s1_1_0, M4(-6.651e-02, -9.842e-02, 5.702e-02, -1.042e-01, 2.462e-02, 5.374e-02, -6.089e-02, -1.030e-01, 2.634e-02, 8.076e-02, -8.237e-02, 2.191e-01, 4.762e-02, 1.229e-01, -5.217e-02, -1.801e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(-7.227e-02, 6.006e-02, -6.592e-05, 8.141e-03, -4.361e-02, -3.187e-02, -2.023e-02, -4.509e-03, -4.007e-05, -1.140e-01, -1.897e-02, 1.127e-02, 1.108e-01, 4.622e-02, -1.239e-03, -1.338e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(7.550e-03, -2.329e-02, -2.906e-02, 1.470e-01, -2.666e-01, 2.386e-03, 1.018e-01, -7.646e-02, -6.444e-02, -4.454e-01, -8.381e-02, -6.501e-02, 4.764e-01, -8.232e-02, 1.888e-02, 7.440e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-2.272e-01, 1.420e-01, -1.821e-01, -5.739e-02, -4.839e-02, 2.241e-02, -1.649e-01, -1.224e-01, 3.323e-01, -1.353e-02, -4.123e-04, -2.343e-01, -6.322e-03, 4.131e-01, 2.240e-01, 4.342e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(3.174e-01, -8.502e-02, -8.630e-02, -4.243e-02, 3.439e-01, 2.242e-01, 8.314e-02, 1.637e-01, 4.018e-02, -1.656e-01, 2.713e-02, -1.067e-01, 3.578e-01, 3.108e-03, 1.079e-01, 6.444e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(3.612e-01, 1.549e-01, -4.002e-01, 2.242e-01, -6.474e-02, 9.083e-02, 5.304e-02, -2.355e-01, -5.495e-02, 1.187e-02, -2.495e-01, -2.959e-01, 4.482e-01, -1.557e-02, -1.470e-01, 9.590e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(4.957e-02, 2.805e-01, 1.049e-01, -2.939e-02, -5.994e-02, -1.716e-01, -1.072e-01, -5.723e-01, -1.179e-02, 6.399e-02, -5.157e-02, 1.388e-02, -4.251e-02, -3.905e-02, 4.132e-01, 3.207e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(2.369e-01, 1.843e-02, -9.671e-02, -3.782e-02, 3.940e-02, -9.990e-02, -6.406e-02, 5.007e-01, -1.308e-01, 2.956e-02, -4.973e-02, -9.639e-02, -1.867e-02, 2.307e-01, -1.347e-01, -1.572e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(-1.421e-01, 1.190e-01, 1.464e-02, -4.160e-02, 3.711e-01, 1.558e-01, 2.771e-02, -7.788e-02, 2.510e-01, -1.723e-01, -2.869e-01, 8.149e-02, -4.295e-02, -1.763e-01, 4.132e-03, -1.307e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(1.135e-01, -5.412e-03, 3.355e-02, -2.040e-03, 5.301e-03, 1.499e-01, 5.773e-03, -1.154e-01, 1.607e-03, -1.372e-01, 1.358e-01, 2.249e-02, 4.518e-01, -2.471e-01, 2.273e-01, 2.111e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-1.753e-01, -3.032e-02, 4.898e-02, 1.443e-03, 1.267e-01, 2.230e-02, 9.333e-03, 2.267e-02, 3.123e-02, -1.673e-01, -9.095e-03, 6.556e-03, 7.735e-02, -7.040e-02, 3.607e-02, -4.749e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(5.250e-02, 1.945e-01, 1.869e-02, -1.308e-02, 1.510e-02, 1.696e-01, 8.600e-03, 1.596e-01, 1.674e-01, -7.286e-02, 3.156e-02, -1.543e-01, -3.084e-02, -4.449e-02, -3.741e-02, -8.606e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-1.035e-01, 1.754e-02, 6.518e-02, 5.743e-03, -1.317e-01, 3.291e-02, 1.214e-01, -7.912e-03, 4.602e-02, 1.191e-01, -3.306e-02, -5.995e-02, 2.171e-01, 2.710e-02, 4.245e-02, 4.703e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-7.983e-02, 1.294e-01, 2.008e-02, -3.613e-01, -5.847e-02, 6.386e-02, -1.685e-01, 1.429e-01, 5.890e-02, -3.670e-02, -1.953e-02, -8.209e-02, -3.032e-02, -1.129e-02, -5.520e-02, -2.878e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-7.607e-02, 7.074e-02, 9.465e-02, 9.128e-02, 1.461e-01, -1.331e-01, -3.206e-02, 4.313e-02, -6.525e-02, -2.515e-02, -3.357e-02, -1.233e-01, 7.237e-02, 9.648e-02, 3.813e-02, -1.309e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(1.053e-02, 1.131e-01, -1.612e-02, 5.534e-02, -2.412e-03, -1.995e-02, 1.271e-02, 1.167e-01, -1.670e-02, -2.621e-02, 2.412e-02, -1.210e-02, -2.161e-02, -6.067e-02, -3.891e-02, -1.318e-03), r5);\n\tr6 = MulAdd(s1_1_2, M4(-2.588e-02, 9.403e-02, -3.262e-02, 9.944e-02, -1.721e-01, -2.001e-01, -6.037e-03, 3.189e-02, 1.577e-01, -4.903e-02, -3.145e-03, 1.607e-02, -4.407e-02, -9.909e-03, 2.082e-02, 8.191e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(4.428e-02, -7.600e-02, 7.838e-02, 1.055e-01, 1.082e-01, -1.194e-01, 1.629e-01, -1.079e-02, 2.401e-02, -1.744e-01, -6.648e-02, -2.499e-02, 1.505e-02, -1.651e-01, -1.339e-01, -6.116e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-4.048e-02, 4.745e-02, 1.355e-02, -3.120e-02, 5.405e-02, 3.513e-02, -7.154e-03, 2.457e-02, 8.347e-03, 2.358e-02, 1.498e-02, -9.019e-03, 2.824e-03, -5.198e-02, -2.533e-02, 2.718e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.023e-01, -9.244e-02, 1.740e-01, -3.502e-02, -1.238e-01, -3.323e-02, -4.168e-02, 6.372e-03, -2.112e-02, -1.205e-02, 6.537e-02, -4.001e-04, -2.519e-01, 5.097e-02, 1.226e-01, 2.549e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(-2.688e-03, 8.329e-03, -5.323e-02, 1.068e-01, 4.895e-02, -1.015e-02, -1.398e-01, -1.791e-02, 4.040e-03, -2.146e-02, 2.303e-02, -6.497e-03, -2.780e-02, 4.560e-02, -2.364e-02, 3.987e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-3.074e-02, 4.845e-02, -1.173e-01, 2.471e-02, 7.444e-02, 3.259e-02, 1.521e-01, -2.375e-04, 6.843e-03, 1.042e-02, 2.618e-02, 1.564e-02, -1.304e-01, -1.290e-04, 5.364e-02, -1.267e-01), r3);\n\tr4 = MulAdd(s1_2_0, M4(-3.413e-02, -5.555e-02, -4.069e-02, 2.646e-02, 9.505e-03, -8.494e-03, -1.675e-02, -6.303e-02, -7.265e-03, -1.791e-02, -5.926e-03, -4.514e-03, 2.727e-02, 5.171e-02, 4.251e-02, -2.059e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(-4.477e-02, -2.401e-02, -1.688e-02, -2.815e-02, 3.289e-03, 2.436e-02, 2.091e-02, 7.874e-03, -3.957e-03, -1.653e-02, 3.025e-02, 3.750e-03, 9.042e-02, -1.789e-02, 6.877e-02, -7.103e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-1.687e-02, 1.421e-01, -7.608e-02, -6.061e-02, 6.752e-02, -3.981e-05, 8.178e-02, -8.189e-02, 5.960e-02, 1.331e-02, 2.839e-02, 3.987e-02, -7.593e-02, -1.637e-01, -3.460e-02, -4.969e-01), r6);\n\tr7 = MulAdd(s1_2_0, M4(5.226e-02, 8.468e-02, 4.701e-02, -1.591e-02, -6.372e-02, -1.220e-02, 5.606e-03, 2.521e-02, 1.473e-02, -7.284e-03, 6.123e-02, -1.210e-02, 2.818e-02, 4.014e-02, -6.511e-02, -1.857e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-8.966e-02, 2.701e-02, 5.838e-02, 4.979e-02, -4.458e-02, 3.675e-02, 1.677e-01, 1.875e-02, 3.292e-02, 1.028e-02, -6.812e-02, -5.214e-02, 2.429e-01, 1.582e-01, -1.943e-03, -8.708e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(-3.233e-01, -5.507e-02, -9.737e-02, 3.086e-01, 4.379e-02, -5.814e-02, 8.822e-02, 1.694e-01, 8.512e-02, -2.120e-03, 5.901e-02, -1.215e-01, -8.809e-01, 6.862e-02, 4.853e-02, -3.536e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.924e-01, 6.484e-03, 1.140e-01, -1.550e-01, -1.052e-01, 1.718e-02, 3.100e-01, -2.719e-02, -4.583e-02, 1.149e-03, -2.259e-02, 4.056e-03, -7.712e-02, 8.053e-03, 7.837e-02, 1.427e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(1.236e-02, 1.210e-01, 1.082e-01, -9.091e-02, 4.714e-03, 1.047e-01, -7.002e-02, -1.458e-01, -2.315e-02, -1.249e-03, -2.026e-02, -7.078e-02, 7.446e-02, -1.666e-02, 1.351e-01, 1.427e-01), r3);\n\tr4 = MulAdd(s1_2_1, M4(4.837e-02, -1.353e-01, 1.381e-02, -2.021e-02, -1.190e-01, -1.840e-01, -6.517e-02, -3.348e-01, 5.793e-03, 1.419e-02, 1.677e-02, 5.400e-02, 1.200e-01, 2.700e-01, 1.235e-01, -9.627e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(5.938e-02, 3.868e-02, 1.205e-02, -1.782e-02, 1.037e-01, 1.144e-01, -1.103e-01, 3.616e-02, 4.259e-04, -1.996e-03, -5.111e-02, -2.135e-02, 5.091e-03, -4.630e-02, 2.535e-01, 7.017e-03), r5);\n\tr6 = MulAdd(s1_2_1, M4(-1.238e-02, 5.931e-02, 5.973e-02, -2.356e-02, 1.036e-01, -1.545e-01, 2.139e-01, 1.142e-01, -1.842e-02, 1.029e-02, -4.616e-02, -1.865e-02, -2.737e-01, 5.161e-02, 9.473e-03, -3.356e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-1.734e-01, 2.619e-01, 1.321e-01, 3.527e-02, 3.867e-02, 1.060e-01, 3.267e-01, 1.284e-01, 3.676e-03, 5.675e-02, 1.367e-01, -8.566e-03, -8.946e-02, -7.591e-02, 5.006e-01, -7.398e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-4.327e-02, -3.936e-02, -3.502e-02, -3.246e-02, 2.345e-02, 8.331e-03, -3.274e-02, 6.665e-02, 2.480e-02, 3.726e-02, 4.427e-02, -9.114e-03, -5.764e-02, -9.249e-02, -1.211e-02, 4.862e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(7.104e-02, 9.364e-02, -2.781e-02, -8.608e-02, 1.369e-01, 6.349e-02, -1.258e-02, -5.164e-02, -7.369e-03, 4.309e-02, 9.351e-02, -7.465e-02, -1.106e-01, 6.737e-03, -6.918e-02, -4.983e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-5.908e-02, -7.721e-02, 7.349e-02, -2.991e-03, 1.052e-01, -7.586e-02, 6.454e-02, 6.240e-02, 1.326e-02, 3.794e-02, -4.293e-02, 6.176e-02, -3.961e-02, -7.188e-02, -5.950e-02, -8.605e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-6.508e-02, 5.654e-02, 7.554e-02, -6.513e-02, 5.535e-02, 2.556e-02, -2.589e-02, 1.878e-01, 1.330e-02, -1.359e-02, -2.960e-02, -2.276e-02, -2.073e-02, -1.105e-02, 8.501e-02, -5.525e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(2.410e-02, 8.082e-02, 8.079e-02, -1.703e-02, -5.975e-02, -5.120e-03, 2.366e-02, -5.235e-02, -2.097e-02, -1.715e-02, -5.110e-03, 5.290e-02, -2.397e-03, 1.121e-01, 3.199e-02, -3.460e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.986e-02, 6.838e-04, -2.142e-02, 4.847e-02, 3.846e-02, -4.970e-02, 1.259e-01, 2.854e-02, 1.002e-02, 2.547e-02, -5.682e-03, 1.498e-03, -1.228e-02, 3.742e-03, 6.689e-02, 1.218e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-4.244e-02, 2.358e-03, -6.338e-03, 6.604e-02, -8.591e-02, 2.091e-01, 3.308e-03, -4.051e-02, 6.190e-02, -3.007e-02, 5.420e-02, 1.928e-02, 2.937e-02, -2.940e-02, -1.983e-02, -3.320e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-5.611e-02, -2.071e-01, -8.482e-02, -2.287e-02, 1.978e-01, 4.575e-02, 1.545e-03, -5.091e-02, -2.925e-02, -8.463e-02, 8.669e-02, 2.520e-02, 4.975e-02, -1.042e-02, -1.975e-01, 5.986e-03), r7);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(3.433e-02, 2.177e-02, 1.580e-02, -2.081e-02, -5.686e-03, 7.012e-02, 1.693e-03, 7.222e-02, 5.731e-02, 5.795e-03, 2.301e-02, -2.299e-02, 3.219e-02, 9.678e-03, 1.925e-02, -3.461e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.923e-02, -8.276e-02, 2.679e-02, 7.940e-02, -1.130e-01, 2.295e-03, 4.208e-02, -1.075e-01, -2.085e-02, 1.043e-02, -2.531e-02, 3.967e-02, 8.519e-02, 7.672e-02, 1.109e-01, 1.234e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(2.283e-01, 5.575e-02, -1.873e-02, 4.800e-02, -4.011e-02, 8.669e-02, 3.087e-02, 7.846e-02, -1.693e-01, -4.089e-03, -8.811e-02, -1.043e-02, -5.670e-02, 6.130e-02, 3.381e-02, -1.987e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(2.073e-02, 3.887e-03, -2.279e-02, 5.473e-02, 8.476e-02, -1.539e-02, -3.881e-02, -7.011e-02, 6.288e-02, -1.866e-02, 3.095e-02, 1.788e-02, 1.410e-01, -2.218e-02, -3.470e-02, -5.548e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(3.779e-02, -2.679e-02, -2.375e-02, -3.854e-03, -8.016e-03, -8.449e-04, -4.196e-02, 6.854e-03, 6.129e-03, 8.437e-03, 1.057e-02, 4.749e-03, 3.285e-02, 4.473e-02, 6.776e-02, 1.446e-01), r4);\n\tr5 = MulAdd(s0_0_0, M4(-1.474e-03, -2.622e-02, -1.766e-02, -2.170e-02, -3.290e-02, -1.400e-02, 6.907e-02, 5.451e-02, -1.793e-02, -1.101e-02, -1.344e-02, -2.040e-02, 7.177e-02, 1.353e-01, -1.194e-02, -1.135e-01), r5);\n\tr6 = MulAdd(s0_0_0, M4(1.806e-02, 6.106e-02, -2.410e-03, 7.667e-03, -1.113e-01, -1.423e-02, -2.105e-02, -6.071e-02, 7.402e-03, 3.006e-02, 2.227e-02, -4.677e-02, -6.195e-02, 1.513e-02, 1.274e-02, -1.685e-01), r6);\n\tr7 = MulAdd(s0_0_0, M4(1.236e-01, 3.963e-02, 4.950e-03, -2.638e-02, -1.966e-01, -3.024e-02, -4.414e-02, -1.416e-02, 3.135e-02, 3.725e-02, 4.341e-02, -1.050e-02, -8.486e-02, -4.742e-02, -1.168e-02, 1.405e-01), r7);\n\tr0 = MulAdd(s0_0_1, M4(1.119e-01, 1.054e-02, -7.452e-03, 2.434e-02, -1.094e-02, 6.213e-02, -4.749e-02, 4.195e-02, -5.214e-02, -1.822e-02, -3.966e-02, 3.096e-02, 2.889e-01, 5.926e-02, 2.194e-02, -6.340e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.148e-02, 2.188e-01, -7.148e-02, 2.685e-01, -1.008e-01, -8.164e-02, -5.712e-02, 7.443e-02, -8.122e-02, 2.580e-02, -3.502e-02, -3.966e-02, 1.811e-02, 8.387e-02, 9.748e-02, -1.541e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.169e-02, 1.411e-01, 1.901e-01, 6.194e-02, -5.534e-02, -1.276e-01, 6.057e-02, -3.591e-03, -2.378e-01, 1.354e-01, 1.165e-01, 5.109e-02, -1.063e-01, -2.855e-01, 1.442e-02, -4.700e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-1.759e-01, 2.483e-02, 1.483e-01, -8.865e-02, -4.343e-02, -1.856e-02, -3.577e-02, -7.830e-02, -8.376e-02, -6.981e-02, -1.172e-01, -9.636e-02, 3.474e-01, -2.768e-02, 1.308e-02, 1.087e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(-3.075e-02, 9.195e-03, 6.486e-02, 7.342e-02, -1.831e-03, -1.969e-02, -5.231e-02, 9.403e-02, 1.293e-02, 1.317e-03, 6.787e-02, 5.779e-02, 6.179e-02, -1.089e-02, 1.792e-01, 1.107e-01), r4);\n\tr5 = MulAdd(s0_0_1, M4(1.010e-03, 5.455e-03, 2.110e-02, 3.739e-02, -3.736e-02, -6.686e-02, 3.930e-02, 1.395e-02, 1.876e-02, -1.568e-02, 5.662e-02, 1.154e-02, 1.326e-01, 1.576e-01, -4.477e-02, -7.972e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-1.818e-02, 2.212e-02, -8.701e-03, -3.948e-02, 3.011e-02, -7.410e-02, -6.063e-02, 9.941e-02, -7.347e-02, -1.313e-01, -4.836e-02, 9.643e-02, -9.356e-02, 8.861e-02, 6.276e-03, -1.410e-01), r6);\n\tr7 = MulAdd(s0_0_1, M4(2.531e-01, -5.895e-02, 3.527e-02, 3.766e-03, -1.622e-01, 2.887e-02, -4.162e-02, -3.606e-02, -3.848e-02, 9.665e-02, -6.284e-02, -3.535e-03, 1.645e-01, -1.368e-01, 1.483e-02, 1.473e-01), r7);\n\tr0 = MulAdd(s0_0_2, M4(2.508e-02, 2.069e-02, -1.217e-02, -1.944e-02, -2.061e-01, -9.387e-02, -4.408e-02, 8.228e-02, -3.218e-02, -4.760e-02, 2.055e-03, -6.501e-02, 1.940e-01, -2.889e-02, 1.790e-02, -5.407e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(8.772e-03, -6.940e-03, 9.205e-03, -5.249e-02, -4.901e-02, -1.174e-01, -9.366e-02, -6.232e-02, -6.844e-02, -4.401e-02, -4.122e-02, 2.831e-02, -3.514e-02, 4.649e-02, 7.741e-02, 2.087e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.386e-01, 1.881e-02, -9.802e-02, 2.126e-02, 1.944e-01, -9.326e-02, -8.772e-02, 7.536e-02, -5.258e-01, -3.687e-02, -1.040e-01, -1.777e-02, 2.197e-01, 3.093e-03, 3.747e-02, -4.453e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(6.684e-02, 1.578e-02, 1.583e-02, 1.649e-01, -1.904e-02, -3.011e-02, 6.975e-02, 5.021e-02, 1.172e-01, -5.412e-02, -7.385e-02, 6.133e-02, 2.235e-02, -1.503e-02, -4.419e-02, 1.516e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(4.167e-02, 3.210e-03, -2.149e-03, 2.397e-02, 3.704e-02, -3.872e-02, -2.508e-03, -4.721e-02, -4.330e-02, -1.313e-02, -1.708e-02, -8.368e-02, 8.785e-02, 3.820e-03, 5.796e-02, 1.244e-01), r4);\n\tr5 = MulAdd(s0_0_2, M4(-1.836e-02, 2.607e-03, -1.428e-02, -3.371e-02, 9.947e-03, -2.008e-02, 5.759e-02, 3.068e-02, -2.695e-02, -2.802e-02, -5.393e-02, -1.797e-02, 1.533e-03, 2.904e-02, -1.970e-02, 4.996e-03), r5);\n\tr6 = MulAdd(s0_0_2, M4(4.933e-03, -1.552e-02, -3.902e-02, 3.972e-02, -3.217e-02, 6.160e-02, 1.526e-02, 6.760e-02, -1.926e-02, -8.597e-02, 2.376e-02, 8.724e-03, -2.081e-02, -3.778e-02, 3.847e-02, -8.184e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(4.074e-02, 2.208e-02, -3.483e-02, 7.616e-03, -1.706e-01, 8.917e-02, -4.686e-02, -2.180e-02, 4.107e-02, 1.097e-01, 1.338e-02, -3.009e-02, 1.587e-01, -4.203e-02, 2.832e-02, 2.781e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(1.396e-01, -2.210e-02, 6.367e-02, -8.490e-03, -2.077e-02, -1.006e-02, -4.139e-02, 2.643e-02, -1.950e-02, 6.143e-02, 6.522e-02, -9.734e-03, 3.988e-02, 4.204e-02, -5.923e-02, -1.556e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(9.107e-02, -9.058e-03, 6.671e-02, 2.107e-01, -2.280e-02, 4.573e-02, -9.996e-02, -5.707e-03, -1.547e-02, -8.147e-03, -4.886e-02, -6.042e-02, -7.370e-02, 1.617e-01, 2.077e-01, -2.495e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-8.869e-02, 4.098e-02, 3.792e-02, 1.231e-02, 1.165e-01, -7.582e-02, 2.206e-01, -6.548e-02, -7.454e-02, -8.791e-02, -2.480e-02, -8.484e-02, 3.453e-02, -2.311e-01, -5.730e-02, -1.121e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(1.149e-01, 2.229e-02, 1.603e-01, 1.506e-01, -1.860e-02, -1.556e-02, -9.117e-03, 4.450e-02, 4.487e-02, -5.705e-02, 1.525e-02, 2.714e-02, 8.326e-02, -3.430e-02, 1.460e-01, -5.332e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-1.906e-02, -5.045e-02, -5.827e-02, 4.083e-02, -5.700e-02, 5.582e-03, 1.347e-02, -6.273e-02, -8.573e-03, 4.588e-02, 2.876e-02, 3.635e-02, 4.318e-02, 8.068e-02, 8.734e-02, 5.455e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(-6.259e-02, -4.551e-02, -5.493e-03, -8.563e-04, -7.172e-02, -1.685e-02, -3.402e-03, -7.831e-03, 3.953e-02, -2.682e-02, -2.693e-02, -1.309e-02, 4.231e-01, 6.566e-02, 1.043e-01, 1.736e-03), r5);\n\tr6 = MulAdd(s0_1_0, M4(-1.229e-01, 1.476e-01, 7.557e-02, 3.681e-01, -1.369e-01, -2.195e-01, -1.623e-02, 1.367e-01, 9.974e-03, -1.137e-02, 6.529e-02, -2.654e-03, 1.480e-01, 4.218e-02, -2.063e-02, 2.574e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(1.005e-02, -3.408e-02, 2.260e-02, -5.660e-02, -1.900e-01, -1.225e-02, -5.759e-03, -1.077e-02, -1.644e-02, -2.479e-02, -5.994e-03, -1.877e-02, 7.377e-02, -1.760e-02, -1.290e-01, 5.997e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-2.942e-01, -1.239e-01, -2.506e-02, -6.660e-02, -7.905e-02, -9.331e-02, 4.654e-02, 1.540e-01, -5.439e-02, -3.593e-03, -2.313e-02, 4.613e-02, 1.732e-01, -1.337e-01, -3.855e-02, -5.913e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-3.360e-02, -2.212e-01, 8.749e-02, -2.558e-01, -9.527e-02, -2.088e-01, -6.142e-02, -2.624e-01, 1.217e-01, -4.115e-02, -9.533e-03, -1.338e-01, -1.040e-01, -3.799e-01, 8.121e-02, -5.999e-03), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.360e-01, -4.375e-01, -6.415e-01, -5.348e-01, -1.683e-01, 1.831e-01, -2.639e-01, 1.254e-01, -1.171e-01, -5.235e-05, 2.018e-01, 4.857e-02, 1.270e-01, -1.867e-02, -2.591e-01, -1.880e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(-1.994e-01, 5.226e-02, -3.074e-01, -3.848e-01, 1.224e-01, -4.808e-02, 1.006e-01, 1.846e-01, 1.683e-01, -1.147e-01, 1.598e-03, -7.474e-02, 2.764e-01, -3.566e-02, 1.955e-01, 2.731e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(3.946e-02, 7.196e-02, -1.597e-01, -2.406e-01, -1.337e-01, 1.773e-02, -6.409e-02, -3.369e-01, -1.033e-01, 6.402e-02, 9.708e-02, -4.440e-02, 4.678e-02, -1.359e-02, -1.891e-01, 2.177e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.121e-01, 1.633e-02, -6.619e-02, -1.212e-01, -6.903e-02, -1.198e-01, 6.868e-02, 5.375e-02, -2.784e-02, 7.006e-02, 7.638e-02, -5.526e-02, -1.494e-02, -1.731e-01, -2.375e-02, -6.470e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(2.335e-01, -1.180e-01, 3.426e-02, -6.257e-02, -2.804e-02, 2.856e-01, 1.628e-02, 5.641e-02, -2.702e-02, -1.238e-01, -3.015e-02, -4.729e-02, -3.937e-02, 4.282e-01, -1.240e-01, 2.954e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(4.301e-02, 3.293e-01, 2.188e-02, 1.104e-02, -2.222e-01, 1.075e-02, 8.253e-02, -1.214e-01, 8.205e-02, -1.224e-01, -1.821e-01, 7.097e-02, -4.954e-03, 2.961e-01, 1.238e-01, -1.391e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(-1.879e-01, -1.815e-02, 1.720e-02, 1.738e-02, 8.976e-04, 3.424e-02, -1.024e-03, 6.776e-02, 1.449e-01, -5.772e-02, 5.075e-02, -7.495e-02, -6.710e-02, 2.822e-02, 9.178e-03, 1.020e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(7.813e-02, 1.069e-02, -3.503e-02, -1.709e-02, 1.770e-01, 1.026e-01, 3.567e-02, 3.054e-02, 6.901e-02, -5.269e-02, -1.755e-01, -2.995e-01, -1.042e-01, -1.750e-01, 1.122e-02, -5.001e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-2.358e-01, 1.527e-01, 9.218e-02, -1.072e-02, -1.480e-01, -2.827e-01, -6.943e-02, 1.635e-02, -3.257e-01, 7.118e-02, -9.212e-02, -1.150e-01, -1.650e-02, 1.582e-01, 4.920e-02, 6.972e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.091e-01, 6.110e-02, 7.018e-03, -2.607e-01, 1.746e-02, -3.238e-02, 5.247e-02, -5.139e-02, -5.199e-02, -4.011e-02, -1.483e-03, 5.609e-02, 4.569e-02, -4.331e-02, -8.061e-02, 1.499e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(-1.860e-01, -6.047e-02, -1.165e-02, 2.622e-03, 1.162e-01, 7.673e-02, -8.302e-02, -7.768e-02, 1.440e-01, -2.116e-02, -4.299e-02, -8.004e-02, -4.254e-02, -1.139e-01, -1.461e-01, -1.063e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(-1.697e-02, 5.656e-02, 9.653e-03, -2.414e-02, 1.482e-02, -9.582e-02, -9.888e-03, 1.001e-01, 2.585e-02, -7.803e-02, -9.059e-02, 5.260e-02, -7.913e-02, -4.366e-02, -5.242e-02, -4.996e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(1.565e-03, 3.663e-02, 6.473e-02, 1.390e-03, -5.039e-02, -2.667e-01, -5.629e-02, 1.135e-01, 1.749e-01, 1.829e-01, 3.762e-02, -5.229e-02, 4.612e-02, -9.680e-02, 1.005e-02, 1.394e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(1.330e-01, 3.666e-02, 7.364e-02, 5.152e-02, -2.250e-01, -2.461e-02, -1.052e-01, -7.436e-02, -2.828e-01, -1.519e-01, -2.803e-01, -7.107e-02, -2.311e-01, 2.013e-01, 1.392e-01, -3.910e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(-1.684e-02, 5.286e-02, 1.400e-02, -8.169e-04, -4.528e-02, -5.018e-02, -2.024e-02, 5.773e-02, -3.859e-02, 5.765e-03, 3.259e-02, -1.015e-02, 4.827e-02, -8.382e-02, -4.376e-02, 1.550e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.741e-02, -1.775e-02, 7.180e-03, 1.877e-01, -3.114e-02, -4.856e-02, -1.006e-01, -1.888e-01, -7.403e-02, 1.245e-02, 2.127e-02, -7.815e-03, -4.729e-03, 8.178e-02, -1.016e-01, -1.947e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.874e-02, 7.682e-02, -4.566e-02, 9.838e-02, -1.247e-01, -1.753e-01, -9.253e-03, -7.470e-02, 5.176e-02, 6.421e-02, 2.167e-01, 4.999e-02, 4.947e-03, -3.524e-02, -3.412e-02, -2.474e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(2.005e-02, 2.676e-02, 5.711e-02, 7.249e-02, 1.017e-02, -2.008e-02, -2.304e-02, 4.329e-02, -2.318e-02, -6.320e-02, -8.396e-02, -3.520e-02, 1.846e-03, -1.160e-02, -6.152e-02, -1.189e-01), r3);\n\tr4 = MulAdd(s0_2_0, M4(3.215e-03, -4.699e-02, -1.670e-03, -5.659e-03, 4.393e-03, 1.992e-02, -6.113e-03, -8.164e-02, -1.254e-02, -3.831e-03, 8.283e-03, -4.703e-02, 1.574e-02, 8.984e-02, 2.429e-02, -7.877e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(-2.388e-02, -4.771e-03, 3.992e-02, 6.144e-02, -2.625e-02, 4.282e-02, 4.528e-02, 2.131e-02, 3.211e-02, 1.487e-02, -4.021e-02, -1.499e-02, 3.677e-02, -9.883e-03, 3.333e-02, -1.481e-03), r5);\n\tr6 = MulAdd(s0_2_0, M4(7.210e-02, 8.764e-02, 4.431e-03, 8.680e-02, -1.179e-01, 6.208e-02, -2.212e-03, -1.147e-02, -7.932e-02, -2.432e-01, 2.966e-02, 7.254e-02, -1.360e-01, -8.741e-02, 2.443e-03, 2.543e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(8.654e-02, 1.591e-02, -5.052e-02, 6.317e-03, -1.955e-01, 1.527e-02, 9.404e-04, 4.052e-02, -5.331e-02, 3.683e-02, -5.067e-03, 9.805e-03, -7.201e-02, -7.163e-02, -1.695e-03, -2.088e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(5.408e-02, -2.869e-02, 3.204e-02, -1.628e-02, 1.219e-02, -7.118e-03, -2.526e-02, 4.873e-02, 9.862e-02, 3.435e-02, 3.407e-02, 1.056e-01, -6.064e-02, -2.341e-02, -6.447e-05, -3.154e-04), r0);\n\tr1 = MulAdd(s0_2_1, M4(-8.376e-02, 1.310e-01, -6.017e-03, -2.658e-03, 1.129e-01, 4.676e-02, 2.977e-02, 5.308e-02, -1.005e-01, -5.521e-02, -2.280e-01, 2.511e-01, 4.789e-02, -3.347e-03, -3.298e-02, -6.597e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-3.145e-02, 2.040e-02, -9.763e-02, -1.513e-01, 6.111e-02, -1.067e-01, 4.298e-02, 6.183e-02, 9.970e-02, 3.464e-02, -3.200e-01, -4.713e-02, -1.778e-02, -4.977e-02, -7.189e-02, -1.706e-03), r2);\n\tr3 = MulAdd(s0_2_1, M4(4.467e-02, 4.849e-02, -3.959e-02, -4.397e-02, 2.108e-02, -3.906e-02, -2.397e-03, -5.049e-02, 6.530e-02, -1.062e-01, 4.576e-02, 2.489e-01, 2.885e-02, -2.624e-04, 7.095e-02, -3.726e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-1.174e-01, -8.860e-03, -1.316e-03, -1.535e-01, -6.729e-03, 5.807e-02, 4.063e-02, -9.192e-02, 3.006e-02, 4.913e-02, 3.878e-02, -1.732e-01, -7.068e-02, 2.644e-02, -2.290e-02, -8.945e-03), r4);\n\tr5 = MulAdd(s0_2_1, M4(4.498e-02, -5.380e-02, -3.658e-02, -5.525e-02, 3.952e-02, 1.562e-02, 1.601e-01, 1.428e-01, 3.992e-02, 2.964e-02, 8.570e-02, 9.633e-02, 7.690e-02, 3.753e-02, 4.602e-02, 2.347e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-1.161e-02, -9.146e-02, 1.003e-02, 9.533e-02, -6.525e-02, 2.310e-03, 1.309e-03, 2.748e-03, -1.083e-01, 7.128e-02, 4.236e-02, 2.686e-02, -4.691e-02, 5.454e-03, 2.206e-02, 2.813e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(-9.152e-02, 2.072e-02, -4.183e-03, -4.963e-02, -9.512e-02, -2.447e-01, -1.857e-01, 1.412e-02, 1.768e-01, 1.461e-05, -1.773e-01, 2.944e-02, -3.233e-02, -4.307e-02, -1.992e-01, 5.399e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(2.247e-02, 3.534e-02, 7.972e-03, 3.072e-02, -3.666e-02, -1.239e-02, -1.175e-02, 6.861e-02, -5.881e-02, -2.379e-02, 1.019e-02, 1.690e-02, 3.877e-03, 2.405e-04, 4.799e-02, 2.049e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(3.080e-02, -3.821e-02, -8.786e-03, -5.588e-02, 1.975e-01, 2.633e-02, 3.022e-02, -5.263e-02, 3.583e-05, 8.746e-02, 2.792e-02, -6.661e-02, -3.371e-02, -1.159e-03, -5.066e-02, 1.303e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(8.350e-03, -5.183e-02, -5.948e-04, 1.256e-02, 7.458e-02, 8.070e-02, -9.196e-02, -7.021e-02, 5.910e-02, 1.530e-03, 2.332e-01, 1.142e-01, -1.663e-02, 2.266e-02, -5.534e-02, 6.301e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(7.267e-03, 3.529e-02, -3.412e-02, 7.519e-02, -4.776e-02, 4.683e-05, -4.447e-03, -6.215e-02, -1.523e-02, -6.438e-02, 5.997e-02, -1.738e-01, 1.521e-02, 9.170e-03, 1.080e-01, -2.338e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(-3.421e-02, 4.259e-02, -2.268e-03, -5.848e-02, 7.133e-03, -3.824e-02, -2.603e-02, -8.977e-02, -1.387e-01, 2.610e-02, 2.187e-02, 1.126e-01, 2.137e-02, 2.326e-02, -2.372e-02, -1.728e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(3.235e-02, 2.374e-02, 3.745e-02, 1.976e-02, 4.895e-02, -2.928e-02, 1.145e-01, -3.225e-02, 1.811e-02, 3.352e-02, -4.128e-03, -4.402e-02, 2.071e-02, -1.487e-02, 7.705e-02, -1.359e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-5.612e-02, -4.394e-02, 3.582e-03, 7.470e-02, -7.114e-02, -5.717e-02, -2.317e-02, -3.118e-02, -8.414e-02, 1.698e-02, 2.401e-02, -1.555e-03, -1.959e-02, 1.038e-01, 2.115e-02, -4.372e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(2.044e-02, -8.671e-02, -8.056e-02, 1.672e-02, -1.732e-01, 2.985e-02, 4.535e-02, -2.844e-03, -5.643e-02, -2.241e-01, 4.842e-02, 3.332e-02, 6.974e-02, -4.780e-02, -1.669e-01, 1.870e-03), r7);\n\tr0 = MulAdd(s1_0_0, M4(2.048e-02, 5.647e-03, -1.281e-02, 4.991e-03, 7.165e-03, -1.123e-02, -2.946e-02, 3.284e-02, 1.099e-01, -2.771e-02, 4.738e-02, 1.844e-03, -1.604e-03, 3.296e-02, 2.219e-02, -3.164e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-2.336e-02, -3.913e-02, -1.265e-02, -2.431e-02, 1.542e-03, 3.921e-02, -8.757e-03, 3.165e-02, 8.128e-02, 1.334e-02, 1.092e-01, 9.251e-02, -1.297e-02, -3.341e-02, -2.649e-03, -6.010e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-1.022e-01, 7.979e-02, -3.352e-02, 3.720e-02, 2.465e-02, 7.842e-02, -6.636e-02, 1.660e-03, -1.256e-01, -1.847e-01, -2.320e-01, -4.325e-02, 1.443e-01, -4.710e-02, 4.706e-02, -9.054e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(-2.712e-06, -7.540e-02, 1.157e-02, -3.014e-02, 3.242e-02, -7.216e-03, 4.231e-02, -1.901e-03, 4.600e-02, 1.295e-02, 1.215e-01, -5.129e-02, -4.195e-02, 1.007e-02, 6.650e-02, 4.141e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-1.309e-02, 5.346e-02, 1.823e-02, 3.982e-02, 3.287e-02, -4.686e-02, -1.667e-02, -9.976e-02, 5.369e-02, 4.377e-02, 5.268e-02, 2.058e-01, -1.010e-02, -4.256e-02, -1.795e-02, 5.821e-03), r4);\n\tr5 = MulAdd(s1_0_0, M4(-1.251e-02, 1.912e-02, -1.559e-03, 1.068e-02, 1.178e-02, -7.442e-04, 9.577e-03, 8.442e-03, 3.913e-02, -7.289e-02, 3.922e-02, -1.785e-01, 1.778e-03, -1.789e-02, -2.069e-02, -5.559e-03), r5);\n\tr6 = MulAdd(s1_0_0, M4(5.571e-02, -3.329e-02, -3.168e-02, -8.441e-02, 5.582e-03, 2.146e-02, -1.414e-02, -2.535e-02, -4.868e-04, 5.363e-02, 8.631e-02, 2.855e-02, 3.019e-02, 4.107e-02, 4.907e-02, -6.291e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-5.628e-02, -8.644e-03, -4.367e-03, 1.907e-02, -2.869e-02, -1.374e-02, -1.006e-02, 8.500e-04, -2.425e-02, 1.068e-02, 8.984e-02, -7.579e-02, 6.805e-02, 6.665e-03, -6.088e-03, -1.872e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-9.801e-03, 6.957e-03, 6.227e-02, -9.218e-04, 2.663e-02, -1.455e-02, -3.836e-02, -1.616e-02, -1.412e-01, -1.528e-02, 3.370e-03, 2.086e-02, -1.664e-02, -1.390e-02, -2.506e-02, -1.683e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.100e-02, 1.714e-02, 1.413e-02, 7.483e-02, -2.499e-02, 2.600e-02, 6.008e-03, -1.689e-02, -2.005e-01, 6.107e-02, -2.390e-01, 8.058e-02, -1.214e-02, -1.096e-01, -4.853e-02, 3.363e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-3.406e-01, -1.845e-01, 7.491e-02, 1.893e-02, 3.646e-01, -3.309e-02, 4.615e-02, 1.553e-02, -3.126e-01, 1.005e-01, -2.114e-02, -9.308e-03, 4.166e-02, 6.834e-02, 7.967e-02, 1.988e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-1.647e-01, -6.851e-02, -7.268e-02, -4.651e-02, -1.039e-01, 4.646e-03, -2.339e-03, -6.301e-03, 1.689e-01, 7.614e-02, 2.107e-01, -8.614e-02, 8.935e-02, 1.962e-02, 1.000e-02, 6.275e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-2.193e-02, 4.074e-02, -4.795e-02, 8.514e-03, 7.104e-03, 5.746e-02, -1.288e-02, 5.436e-02, 2.141e-02, 9.596e-02, 1.782e-01, 9.750e-02, -3.084e-02, 7.310e-02, -2.023e-02, 5.743e-03), r4);\n\tr5 = MulAdd(s1_0_1, M4(4.697e-03, 2.293e-02, -2.265e-02, 1.477e-03, 1.789e-02, -2.481e-02, -1.700e-02, 1.567e-02, 7.722e-02, -6.913e-03, -5.674e-02, 2.077e-01, -6.829e-03, -1.035e-02, -7.868e-03, -5.975e-03), r5);\n\tr6 = MulAdd(s1_0_1, M4(-4.221e-02, -3.733e-02, -2.554e-02, 5.621e-02, 2.558e-02, 1.261e-02, -1.876e-02, 4.505e-02, -3.724e-02, 1.575e-01, -4.120e-02, 7.766e-02, 3.024e-02, 3.207e-02, 2.216e-03, -5.276e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(9.091e-02, 3.346e-02, -6.158e-02, 3.082e-02, -2.353e-02, -8.472e-03, 2.758e-02, -2.179e-02, -1.663e-01, 2.334e-02, -1.049e-01, -1.630e-02, 1.009e-01, -5.047e-03, -5.583e-02, -7.365e-03), r7);\n\tr0 = MulAdd(s1_0_2, M4(8.425e-02, 2.677e-02, 1.770e-02, 5.256e-02, -6.264e-02, -5.973e-02, -2.043e-03, 1.776e-03, 8.025e-02, -3.385e-02, -2.047e-02, -4.250e-02, 5.879e-02, -5.518e-03, -1.358e-03, -2.126e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(2.154e-01, 6.501e-02, 1.374e-01, 2.427e-01, -5.082e-03, 1.704e-02, 1.841e-03, -1.642e-02, -1.313e-01, -8.904e-02, 6.468e-03, -7.818e-02, 2.865e-02, -2.097e-03, 2.742e-02, 3.616e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.480e-01, 6.127e-02, -6.742e-02, -7.826e-02, -3.175e-03, -8.003e-03, -2.117e-02, -2.262e-03, -8.626e-02, -6.270e-02, -1.218e-01, -5.285e-02, 2.977e-04, 3.340e-02, -2.271e-03, -6.017e-03), r2);\n\tr3 = MulAdd(s1_0_2, M4(-2.490e-01, -1.264e-01, -2.259e-01, -2.738e-01, 1.717e-02, -4.767e-03, 6.818e-03, 1.102e-02, 1.003e-01, 4.259e-02, -1.408e-02, 8.315e-02, 9.003e-03, 3.983e-03, 5.603e-03, 2.581e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(6.196e-02, -4.857e-02, 5.963e-02, 1.612e-02, -3.147e-03, 5.231e-03, 5.966e-03, -2.392e-02, -4.526e-02, -6.080e-02, -4.119e-02, 2.231e-02, 3.041e-02, -9.599e-03, -1.555e-02, -2.028e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-4.288e-02, 5.142e-02, 5.304e-02, -1.040e-02, 1.779e-02, -2.225e-02, 6.823e-03, 2.037e-02, -1.224e-02, -3.326e-02, -7.422e-03, -7.952e-03, -2.391e-02, -7.107e-03, -5.489e-03, -3.404e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-2.663e-02, 5.800e-02, -3.815e-02, -1.414e-02, 4.598e-02, -4.500e-02, 3.938e-03, 5.069e-03, 4.925e-02, -6.247e-02, -1.453e-02, -2.991e-02, 2.282e-02, 9.902e-03, -3.983e-03, -1.075e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-4.676e-02, -1.012e-01, 1.279e-01, 4.976e-02, 2.967e-03, 3.487e-02, -1.742e-02, -1.617e-02, 9.006e-02, 8.972e-02, 3.479e-03, -2.469e-02, 2.020e-02, 4.496e-03, 1.540e-02, -1.062e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(8.444e-02, 1.564e-02, 1.799e-02, -8.712e-03, 1.294e-01, 4.545e-03, 7.543e-02, 1.479e-01, 1.498e-02, 3.114e-02, -9.570e-02, 9.084e-02, 2.480e-02, 8.802e-03, 4.385e-02, -2.912e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.170e-03, -4.941e-03, 1.864e-02, 9.283e-02, 2.523e-01, -2.135e-02, 2.549e-01, -3.337e-02, 1.495e-02, 3.199e-01, -3.578e-01, -2.655e-01, 1.326e-01, 2.724e-02, 3.357e-02, -3.590e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(3.907e-02, -1.099e-02, -1.677e-01, -4.800e-02, 9.106e-02, -6.727e-02, -2.077e-01, -2.350e-02, 5.325e-02, -1.665e-01, 1.208e-02, -3.748e-02, -9.935e-02, -1.073e-01, 3.078e-03, -1.175e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(-3.382e-02, -1.264e-01, 2.273e-02, -3.371e-03, 2.284e-01, -6.337e-03, 4.472e-01, 2.303e-01, 1.104e-02, 5.708e-03, 1.406e-02, -2.359e-02, 1.676e-01, -3.858e-03, 5.660e-02, 3.787e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(5.639e-02, -8.308e-02, -3.141e-02, 9.440e-02, 1.715e-02, -8.417e-04, 3.240e-02, 9.859e-03, 2.356e-02, 5.099e-02, 1.304e-01, 9.755e-02, -4.325e-02, -2.835e-02, -3.895e-02, -2.002e-01), r4);\n\tr5 = MulAdd(s1_1_0, M4(4.537e-02, 3.128e-03, -7.931e-03, 4.219e-02, 1.976e-01, 1.479e-01, 6.835e-03, -2.080e-01, 1.135e-01, 1.921e-02, 3.091e-03, -1.895e-02, -6.006e-03, 1.306e-02, -6.377e-02, -6.443e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(5.144e-03, -3.957e-02, -9.004e-02, 2.320e-02, -1.747e-01, 9.572e-02, 1.675e-01, -1.524e-01, -1.372e-01, -1.264e-01, -9.349e-02, 3.298e-02, 2.770e-02, 1.124e-01, 3.643e-02, -2.196e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(2.038e-02, 1.684e-02, 8.488e-02, -3.199e-03, 4.942e-02, -1.665e-01, -2.425e-02, 1.577e-01, -1.727e-01, -1.170e-01, -3.618e-02, 1.048e-02, 8.666e-02, -1.095e-01, 2.549e-02, 2.194e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-2.356e-01, -3.834e-02, -3.717e-02, -8.522e-02, 1.503e-01, 2.895e-01, 1.045e-01, -1.518e-02, -6.383e-02, -5.393e-02, -6.360e-02, 2.455e-01, 2.487e-01, 4.327e-02, 1.028e-02, 3.702e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(-2.553e-01, -2.187e-01, -2.510e-01, -6.334e-01, -7.945e-02, 3.529e-01, -4.319e-02, 2.607e-01, -1.825e-01, -2.820e-02, 1.001e-01, 1.409e-01, 1.367e-01, 1.761e-01, 1.065e-01, 3.645e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.708e-01, 3.947e-02, -1.597e-01, 1.251e-01, 3.569e-01, 2.403e-01, 2.671e-01, 3.949e-01, 1.479e-01, -2.015e-01, 3.699e-01, -8.580e-02, 7.567e-02, 1.805e-01, 1.568e-01, 4.129e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(-7.845e-02, -2.718e-01, 1.716e-01, 9.974e-02, 3.643e-01, -9.609e-04, 1.128e-01, 3.451e-01, 2.076e-01, 5.969e-02, 2.255e-01, 2.185e-02, 1.096e-01, -4.109e-03, -1.144e-01, -7.466e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(3.600e-02, 2.411e-01, -1.027e-02, -2.053e-02, 1.823e-01, -2.683e-02, 1.106e-01, 8.723e-02, -1.441e-01, -8.227e-02, 2.090e-01, 1.892e-01, 6.592e-02, 3.139e-02, 1.592e-01, 2.482e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(1.165e-02, 2.761e-02, -1.057e-01, 5.347e-04, -2.728e-02, -5.926e-02, -4.042e-03, 7.955e-02, 3.409e-01, 5.517e-02, 1.237e-01, 9.373e-02, -2.535e-02, 2.742e-03, -2.777e-02, 2.139e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(-1.383e-01, 1.068e-01, -9.642e-02, 4.702e-02, -5.174e-01, 6.022e-02, -6.472e-03, 6.871e-02, -4.383e-02, -1.519e-02, 9.151e-02, -7.000e-02, -1.698e-01, 5.352e-02, -3.126e-02, -1.222e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-2.554e-02, 7.526e-02, -2.085e-01, 2.240e-02, -7.470e-03, -1.163e-01, 2.511e-01, -4.846e-02, 7.155e-02, 9.252e-02, -5.678e-02, 4.020e-02, -5.182e-02, -2.711e-01, 2.442e-02, -6.106e-03), r7);\n\tr0 = MulAdd(s1_1_2, M4(2.110e-02, 8.184e-02, 1.693e-02, 1.974e-02, 1.425e-01, -1.680e-02, 3.302e-02, 5.170e-03, 1.940e-02, -6.561e-02, -7.044e-03, -3.476e-03, -6.780e-04, 3.390e-02, 2.587e-03, 9.228e-04), r0);\n\tr1 = MulAdd(s1_1_2, M4(-4.956e-02, -5.595e-02, -4.964e-02, -2.045e-01, -5.121e-02, 2.583e-02, -1.384e-03, 2.158e-02, -2.915e-02, -7.390e-02, -3.147e-02, -6.633e-02, 7.503e-02, 3.454e-02, 6.373e-02, -3.814e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(2.235e-02, -6.815e-02, 4.002e-02, 8.851e-02, 1.427e-01, -9.932e-03, 3.651e-02, -1.722e-02, 1.524e-02, 2.169e-01, -1.050e-01, -1.666e-01, -3.131e-02, 1.357e-02, 4.912e-02, 4.722e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-5.553e-02, -2.530e-01, 1.299e-01, 2.015e-01, 1.405e-02, -2.100e-02, 9.729e-03, 8.182e-02, 3.105e-02, 5.212e-02, -4.474e-02, 5.775e-02, 2.121e-02, 1.037e-02, -1.157e-02, -1.089e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-4.858e-03, 1.106e-01, 1.922e-02, 6.573e-02, -3.544e-02, 8.615e-02, -4.257e-02, -3.658e-02, 7.434e-02, -1.932e-02, -1.059e-02, -4.979e-02, 7.197e-03, 3.467e-02, -5.945e-02, 8.389e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(7.446e-03, 2.517e-02, 1.240e-02, -6.218e-02, 3.003e-02, -5.026e-03, -2.951e-02, -6.735e-02, -1.576e-02, 2.114e-02, 1.755e-02, -5.546e-02, -6.186e-03, 1.188e-03, -1.566e-02, -3.132e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-9.989e-02, -3.479e-01, -4.001e-02, -8.228e-02, -2.728e-02, -7.604e-03, 3.120e-02, 5.488e-03, -6.112e-02, 1.631e-01, -2.241e-02, -2.032e-02, -1.562e-02, 4.022e-02, 7.056e-04, -1.116e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(4.028e-02, -4.854e-02, -1.479e-01, 2.386e-02, -9.492e-03, -4.107e-02, -6.155e-02, 2.345e-03, -2.635e-02, -1.050e-01, -4.420e-02, 4.446e-03, 5.208e-02, -9.245e-02, 4.024e-02, 6.983e-03), r7);\n\tr0 = MulAdd(s1_2_0, M4(1.246e-02, 4.448e-03, 1.272e-02, 7.670e-05, -1.720e-01, -1.308e-01, -1.355e-01, -2.852e-01, 1.135e-04, 2.219e-02, -2.503e-02, 2.474e-02, 1.717e-01, -1.937e-03, 7.921e-02, 4.754e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.035e-01, 6.743e-03, 5.997e-02, -4.505e-02, 3.226e-01, -3.213e-02, -1.900e-01, -3.616e-01, -2.878e-02, -4.393e-02, 3.165e-02, -1.538e-01, -5.952e-02, 7.255e-02, -1.675e-01, 4.562e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.351e-02, -1.408e-01, -5.804e-02, 9.402e-02, -1.980e-01, 6.052e-02, -1.973e-01, -4.123e-01, -3.343e-02, -4.020e-02, -3.515e-02, -2.650e-03, 4.443e-02, 1.504e-01, -1.327e-01, 2.548e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(2.219e-03, -8.543e-02, -2.114e-01, -1.222e-01, 6.066e-02, 9.838e-02, -7.272e-02, -1.366e-01, 1.285e-02, 5.999e-03, 6.859e-02, -2.889e-02, -6.144e-02, -9.855e-03, 1.303e-01, 1.391e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-2.610e-02, -3.629e-02, -2.653e-02, 6.704e-02, -2.381e-01, 7.725e-02, -1.992e-01, -1.222e-01, 1.889e-02, 3.170e-02, 3.362e-02, -1.432e-02, 1.147e-03, 4.392e-02, 1.288e-02, 7.817e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-1.318e-02, 2.718e-02, 1.499e-02, -1.600e-02, 4.402e-02, -1.246e-01, -2.185e-01, -3.054e-01, 8.049e-03, -2.847e-03, 3.395e-02, -5.498e-03, 5.864e-03, 3.032e-02, 5.896e-02, 3.644e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(7.222e-02, 1.567e-02, -7.343e-02, 5.620e-02, -1.289e-01, -2.314e-01, 8.242e-02, 1.486e-01, 1.505e-02, 2.537e-02, -1.484e-02, -5.988e-02, 1.096e-01, 7.778e-02, 8.489e-02, -5.872e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(7.593e-02, -7.562e-02, -1.121e-01, 3.034e-02, 7.961e-03, -9.872e-05, -9.261e-02, -4.870e-02, 4.195e-02, -1.537e-02, -1.561e-02, -5.858e-03, -3.398e-02, 2.669e-02, 4.791e-02, 3.238e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(8.187e-04, -2.792e-02, 3.229e-02, -2.817e-02, -2.790e-02, 9.980e-02, -3.136e-01, 1.685e-02, 1.216e-02, 7.152e-02, 3.573e-02, 2.599e-02, -9.931e-02, 7.724e-04, -1.366e-01, -2.815e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.027e-01, 4.013e-03, 1.626e-01, 1.421e-01, 4.536e-02, 4.554e-02, -1.788e-02, -8.533e-04, -8.846e-02, -9.048e-02, 1.373e-02, -1.423e-01, -6.191e-02, 1.335e-01, 5.496e-02, -2.709e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-9.319e-02, 1.037e-01, -5.629e-02, -1.676e-01, 9.909e-03, -9.563e-01, 1.965e-01, 4.580e-03, -3.673e-02, 8.117e-02, 1.653e-01, 6.877e-02, -5.021e-02, -6.694e-02, 1.969e-01, 1.073e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(-4.626e-03, -8.766e-02, -9.091e-02, -1.205e-01, 3.175e-02, -2.829e-02, 1.505e-02, 2.070e-01, 3.012e-02, 1.697e-02, 3.532e-03, 2.671e-02, -1.299e-02, -2.564e-02, 4.664e-02, 3.697e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-3.225e-02, -6.060e-02, -3.314e-02, 4.261e-02, 9.064e-02, 9.891e-02, 9.253e-02, 4.247e-01, 4.658e-02, 4.809e-02, 4.151e-02, 5.392e-02, 1.518e-01, 1.255e-01, 9.641e-02, 2.403e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(-2.077e-02, 1.460e-02, 1.445e-03, 8.890e-02, 1.545e-02, -2.641e-02, 2.096e-01, 6.457e-03, 8.590e-02, -7.987e-03, -3.475e-04, -1.653e-04, 3.577e-03, 8.087e-03, -4.609e-03, -1.534e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(2.791e-03, 1.278e-02, 2.726e-02, 1.414e-02, -8.818e-02, -4.538e-02, 1.345e-02, 8.589e-02, -3.821e-02, 1.538e-02, -1.933e-03, -2.093e-03, 1.360e-02, 8.758e-02, -9.701e-02, -5.863e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-1.521e-01, -3.283e-02, 2.036e-01, 1.439e-02, 6.617e-02, 1.726e-01, 1.894e-01, -6.813e-02, -4.919e-02, -9.717e-02, 5.746e-02, -1.260e-02, -3.200e-03, 9.005e-02, 1.165e-01, 1.321e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-4.303e-02, -2.620e-02, -1.266e-02, 2.305e-03, -1.442e-01, -2.960e-02, -4.547e-02, 9.066e-03, -1.481e-02, -6.282e-02, -4.389e-03, 8.105e-03, 4.572e-02, 3.077e-03, 1.141e-02, -5.293e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.155e-02, 2.957e-02, 2.754e-03, 2.208e-01, -5.067e-03, 6.819e-02, 6.155e-03, 1.017e-01, -4.319e-02, -2.234e-02, -1.939e-02, 7.679e-02, -5.991e-03, -2.938e-02, -4.278e-02, 1.616e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-2.531e-02, 4.208e-02, 1.463e-02, 1.120e-01, -1.112e-02, -1.215e-01, 1.182e-02, 4.349e-02, -8.140e-02, 4.295e-03, -1.485e-02, 5.263e-02, 4.834e-02, 2.594e-02, 2.774e-02, -6.396e-03), r2);\n\tr3 = MulAdd(s1_2_2, M4(-3.404e-02, -4.298e-02, -7.572e-02, 2.268e-02, 1.285e-02, 1.929e-02, -4.820e-02, -8.335e-02, 5.292e-03, 8.463e-03, -7.643e-03, 2.914e-02, -2.687e-02, 3.581e-03, 3.537e-02, 7.012e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-1.908e-02, -1.855e-02, -3.291e-02, -7.582e-02, 2.553e-02, -2.537e-02, 4.781e-02, 8.475e-02, 5.433e-02, 9.159e-03, 3.768e-02, -3.033e-02, 1.375e-02, -2.396e-02, -1.832e-02, 2.585e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.979e-02, 1.710e-02, 6.764e-03, -1.342e-02, -1.224e-02, 1.204e-03, 4.779e-03, 2.736e-02, -1.395e-02, -2.643e-02, 4.926e-02, 2.219e-02, -3.114e-02, 1.583e-02, 1.321e-02, -1.659e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-3.568e-02, -1.274e-01, 9.272e-03, 2.248e-02, 3.255e-02, -5.337e-03, -2.507e-02, 1.805e-02, -2.016e-02, 7.591e-02, 3.559e-03, -1.728e-02, 6.835e-02, 1.951e-02, 1.568e-02, -1.709e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(1.151e-02, 1.168e-01, -1.298e-02, 2.015e-02, 3.726e-02, 9.347e-02, 5.420e-02, 1.324e-02, -1.914e-03, -5.359e-03, 2.558e-07, -3.567e-02, 5.314e-02, 5.227e-02, -1.145e-03, 1.172e-02), r7);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.699e-02, 2.453e-02, 8.729e-03, -5.124e-03, -3.617e-03, 5.060e-02, -3.174e-02, 1.627e-03, 1.612e-02, 4.627e-03, 9.844e-03, -7.564e-03, -1.685e-02, -2.603e-02, -2.819e-02, -1.107e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.789e-02, 4.384e-02, -3.950e-02, -3.161e-03, 6.465e-02, -1.185e-02, 7.438e-02, -6.945e-03, 3.376e-02, -1.832e-02, -4.112e-02, 3.558e-02, -3.401e-03, -1.336e-02, -2.648e-02, -1.497e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(5.507e-02, -4.675e-02, -1.100e-01, -1.083e-02, 1.865e-02, 2.664e-01, 1.121e-01, 1.055e-01, -4.699e-02, -3.061e-02, 3.561e-02, -6.037e-02, -1.320e-01, -9.022e-02, -1.787e-02, 1.151e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(1.318e-02, 2.004e-02, 5.332e-02, 1.651e-02, -7.460e-02, -4.873e-02, -1.166e-01, -3.282e-02, 9.120e-02, -2.577e-03, -4.369e-02, 4.144e-02, 5.812e-03, -1.775e-02, -4.787e-02, -5.405e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(-2.304e-02, 2.995e-02, 4.822e-02, -3.116e-02, 1.309e-02, 2.521e-02, -1.764e-02, 2.758e-03, 2.774e-02, 2.928e-02, -1.133e-03, 5.536e-02, 6.152e-03, 4.864e-02, 2.341e-02, 5.699e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(1.133e-03, 1.926e-02, -1.786e-02, -1.823e-03, 7.328e-03, -7.865e-03, 1.015e-02, -5.337e-03, -9.250e-03, 2.523e-02, -1.734e-02, -2.646e-02, 2.167e-02, 3.844e-02, -3.243e-02, -2.118e-02), r5);\n\tr6 = MulAdd(s0_0_0, M4(-5.909e-02, 1.882e-02, 1.957e-02, 7.041e-02, 6.297e-02, 6.207e-04, -4.662e-02, -1.072e-01, 1.756e-02, 1.669e-02, -2.111e-02, -1.131e-01, -3.777e-04, -1.846e-02, -3.890e-02, -6.583e-03), r6);\n\tr7 = MulAdd(s0_0_0, M4(7.049e-02, 3.338e-02, 4.094e-03, 2.473e-02, -5.161e-02, -8.978e-03, -1.797e-02, -2.069e-03, 1.008e-01, -4.454e-02, 3.113e-02, 2.289e-02, -1.357e-01, -2.456e-02, -2.950e-02, 4.449e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(6.122e-03, -5.749e-03, -3.465e-02, 4.137e-02, 2.227e-01, 1.169e-01, 1.254e-02, 6.637e-02, 1.158e-01, 1.034e-02, 6.113e-02, -6.882e-03, 6.563e-02, 1.928e-03, 5.700e-02, -6.014e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.127e-02, 5.641e-02, -3.061e-02, -6.395e-02, 4.245e-02, 5.371e-02, 1.236e-01, 8.777e-02, 5.933e-02, 5.741e-02, 8.384e-02, 8.764e-02, 4.583e-02, -5.792e-02, 5.821e-03, -1.170e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(1.236e-01, -5.890e-03, 6.238e-02, 6.105e-04, -2.006e-01, 3.136e-02, 4.856e-03, 9.782e-02, 8.175e-02, 6.524e-02, 1.945e-01, 1.793e-02, -3.450e-01, -1.166e-01, -7.770e-02, -1.215e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.197e-01, 1.043e-02, 1.454e-02, 2.676e-02, 5.940e-04, -1.066e-01, -1.070e-01, -2.992e-02, -1.241e-01, -9.017e-04, 6.852e-03, -5.966e-02, 1.269e-02, -1.322e-02, -4.389e-02, 7.802e-03), r3);\n\tr4 = MulAdd(s0_0_1, M4(2.924e-02, 1.347e-02, 3.570e-02, 5.130e-02, 4.237e-02, -6.161e-02, 4.198e-02, 1.052e-01, 2.492e-02, -1.967e-01, 7.323e-02, -7.223e-02, 1.672e-02, -8.141e-02, 4.315e-03, -8.448e-03), r4);\n\tr5 = MulAdd(s0_0_1, M4(-8.629e-03, 3.777e-02, -3.711e-03, 5.601e-02, 2.271e-03, 4.870e-02, 1.767e-02, -5.191e-02, -3.716e-02, -9.646e-03, 9.953e-03, -1.231e-02, -5.051e-02, 3.143e-02, -3.436e-02, -6.304e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-8.046e-02, 7.298e-02, -5.969e-02, 7.178e-03, -3.242e-02, -5.961e-02, 3.592e-02, -1.750e-02, 1.693e-02, -3.019e-02, 8.088e-02, -1.256e-01, -1.084e-02, -9.569e-02, 9.005e-02, -1.104e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(4.103e-02, -5.575e-02, 2.572e-02, 3.908e-02, 1.097e-01, -7.617e-02, 4.382e-02, 5.432e-02, 1.488e-01, -1.023e-01, 3.031e-02, -3.175e-02, -1.273e-01, -3.453e-02, 1.874e-02, 1.124e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(8.463e-02, -4.478e-02, 4.977e-02, -2.380e-02, 8.321e-02, -7.381e-02, 6.290e-03, -3.508e-02, -1.736e-01, 4.127e-02, 7.577e-03, 1.359e-02, -8.899e-02, 3.583e-02, -4.100e-02, 3.821e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-6.731e-02, 5.711e-02, 1.283e-02, -1.323e-01, 3.622e-02, 3.597e-03, 1.065e-02, 8.461e-02, 5.978e-02, 1.044e-02, -6.579e-02, 1.081e-01, 2.893e-03, 3.881e-02, -5.739e-02, -1.789e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(3.782e-01, 1.508e-01, -2.403e-02, 5.517e-02, -2.844e-01, 2.409e-02, 8.963e-02, 2.754e-02, -3.732e-01, -2.287e-03, 9.761e-02, -2.173e-02, 2.086e-02, -1.137e-01, -1.620e-02, -3.598e-03), r2);\n\tr3 = MulAdd(s0_0_2, M4(1.804e-02, 1.977e-02, -4.916e-02, 1.862e-02, -7.680e-02, -6.476e-02, -9.735e-02, -9.868e-02, -2.296e-02, -3.273e-03, 5.054e-02, -3.222e-02, -7.770e-02, 9.829e-03, -5.191e-03, -8.657e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(3.800e-02, 1.124e-01, 8.278e-02, 2.944e-02, 1.178e-01, -3.728e-02, -3.655e-02, 4.020e-02, 1.955e-03, 5.650e-02, -8.741e-02, 2.715e-02, -4.269e-02, 8.375e-02, 1.781e-02, -6.238e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-1.375e-03, 2.064e-02, -1.646e-02, 3.991e-02, -3.176e-02, -6.020e-02, -1.117e-02, -5.056e-02, 1.471e-02, -6.714e-02, 5.350e-02, 1.984e-02, 2.950e-02, 5.751e-02, 1.255e-02, 4.571e-03), r5);\n\tr6 = MulAdd(s0_0_2, M4(6.421e-02, -2.001e-02, 4.878e-02, -1.207e-02, -3.192e-02, 5.163e-02, 4.156e-03, -4.145e-02, -9.302e-02, 1.738e-02, 1.664e-03, 2.464e-02, -1.691e-01, -4.982e-03, -5.421e-02, 8.526e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(2.472e-02, -9.023e-03, 4.512e-02, 2.254e-02, 4.580e-02, -3.380e-02, -5.660e-02, -6.491e-02, 1.084e-01, -4.229e-02, -4.207e-02, -5.551e-02, -2.477e-01, -7.752e-02, -4.601e-02, 4.578e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(5.264e-02, -8.959e-03, 4.640e-02, -8.081e-04, -3.846e-02, 7.155e-02, -7.024e-02, 2.847e-02, 2.619e-02, 1.867e-02, -8.571e-03, -1.835e-02, 1.594e-02, -3.426e-02, -6.207e-02, -1.501e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-9.235e-03, 1.919e-02, -4.340e-02, 7.665e-02, -2.487e-02, -1.265e-02, 1.017e-01, -9.201e-02, -8.419e-02, 3.737e-02, 1.217e-01, 1.089e-02, -8.038e-03, -1.478e-02, -6.861e-02, -3.009e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-2.996e-02, -5.669e-03, -8.215e-02, -6.378e-02, -1.059e-01, 5.242e-02, 5.849e-02, 1.801e-01, 7.885e-02, 3.452e-02, 5.746e-03, 5.580e-02, -3.321e-02, -2.389e-01, -1.596e-01, -1.674e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(-5.979e-03, 2.399e-02, -9.684e-03, -1.396e-02, -3.830e-02, -8.993e-02, -1.255e-01, -2.592e-02, 2.017e-02, 1.252e-02, 1.300e-01, 5.350e-03, 1.384e-01, -2.217e-02, -4.277e-02, -9.401e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-2.838e-02, 3.722e-02, 1.722e-02, -3.351e-02, 1.092e-01, 7.817e-02, 4.291e-02, 2.136e-01, -8.313e-03, -9.176e-04, -1.521e-03, 1.031e-01, 1.394e-02, 1.271e-02, -1.151e-02, 1.938e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(-2.718e-02, 1.956e-02, 4.095e-02, -4.042e-02, 5.963e-02, 3.920e-02, -5.643e-02, 1.852e-02, 1.279e-01, 4.994e-02, -9.010e-03, 6.168e-02, 1.938e-01, 1.841e-02, 1.525e-02, 2.483e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(2.140e-02, 4.638e-02, 4.826e-02, -3.772e-02, -2.358e-02, 7.397e-02, -6.322e-02, 1.216e-01, 1.037e-01, 1.903e-02, 2.781e-03, 5.951e-02, 1.474e-01, 1.409e-01, -1.141e-01, 1.071e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(4.416e-02, -6.333e-02, -2.345e-02, 1.603e-02, -8.454e-02, 5.724e-03, -7.366e-02, 3.625e-02, 4.750e-02, -4.116e-03, -1.322e-02, 5.155e-02, -1.445e-02, -6.720e-02, -1.233e-01, 1.102e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(3.294e-02, -2.588e-01, -5.506e-02, 1.104e-01, 2.021e-01, 1.449e-01, 2.786e-02, 1.018e-01, -2.565e-01, 1.080e-01, 6.219e-04, 1.603e-01, -1.838e-01, 5.126e-02, 2.825e-02, 5.908e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.188e-01, 1.994e-02, 2.188e-01, 3.638e-01, -4.002e-01, -1.116e-01, -8.035e-02, -4.580e-01, -2.565e-01, -4.484e-01, -1.675e-01, 8.387e-02, -3.174e-01, -3.266e-01, -9.780e-02, 1.352e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(-7.273e-02, 1.641e-01, -6.881e-02, 7.784e-02, 1.737e-01, 2.236e-01, 1.590e-01, 1.087e-01, -8.728e-03, 5.321e-02, -3.084e-02, 4.393e-02, -1.156e-03, 1.949e-01, 4.788e-02, -1.679e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.248e-01, 1.993e-02, 1.086e-01, 1.439e-02, -7.724e-02, -1.704e-01, 1.294e-01, -1.055e-01, -2.009e-01, 2.721e-02, -9.690e-02, 1.294e-01, -1.004e-01, -2.101e-02, -2.186e-01, -1.841e-01), r3);\n\tr4 = MulAdd(s0_1_1, M4(2.471e-03, -6.492e-02, -5.780e-03, -5.411e-01, 2.581e-02, -1.557e-02, 1.190e-01, 2.973e-01, -1.523e-01, -1.055e-01, 1.753e-02, -3.356e-01, -5.985e-02, -8.805e-02, -9.567e-02, -1.073e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(3.696e-01, 1.610e-01, -9.243e-02, 2.075e-01, 1.162e-01, 1.161e-02, 2.721e-02, 1.685e-01, -2.141e-01, 3.596e-03, -6.125e-02, 8.286e-02, -1.003e-01, 7.759e-02, -3.680e-02, 4.462e-03), r5);\n\tr6 = MulAdd(s0_1_1, M4(-1.215e-03, 9.498e-02, -3.285e-02, -4.557e-01, -3.101e-01, 5.406e-02, -1.864e-03, 1.307e-02, 2.396e-01, -3.561e-02, 1.055e-02, -2.841e-01, 1.179e-01, -2.532e-01, 3.582e-02, -9.741e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(-1.500e-01, -5.118e-02, 7.059e-02, 1.574e-01, 2.838e-01, 4.638e-02, -3.592e-02, 2.003e-02, 3.727e-01, 2.312e-01, 5.263e-02, 4.596e-02, -2.622e-01, 1.564e-01, -2.239e-02, 7.054e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(1.479e-01, -4.454e-02, 9.754e-02, -5.581e-02, 2.006e-01, 6.968e-02, 3.864e-02, 4.994e-02, 1.889e-01, -2.853e-02, -2.033e-02, -1.624e-01, -3.427e-02, -1.499e-01, -5.514e-02, -8.071e-03), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.296e-01, 3.143e-01, 4.301e-02, 3.776e-01, -4.256e-04, -4.452e-01, -3.676e-02, -4.120e-01, 1.031e-03, 1.090e-01, 2.235e-02, -1.708e-01, 1.380e-01, 3.009e-02, 1.906e-02, -1.221e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-4.173e-03, 4.171e-02, 1.666e-01, 2.164e-01, 2.992e-01, 1.460e-01, -7.659e-02, 7.486e-02, 2.406e-01, -3.154e-01, 4.954e-02, -1.149e-01, -6.024e-02, -8.107e-02, -3.827e-02, -3.146e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(1.432e-01, 2.072e-02, -3.527e-03, 1.379e-01, 2.751e-02, -1.222e-01, -4.684e-02, 2.533e-01, 1.066e-02, 1.014e-02, 5.414e-02, -2.883e-02, -5.769e-02, 2.592e-02, 2.874e-03, -1.017e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(3.299e-01, 1.551e-01, 1.395e-01, 1.089e-01, 1.519e-01, 1.847e-02, -6.612e-02, 6.092e-03, 1.981e-01, 8.652e-02, 3.472e-01, 2.351e-01, 1.155e-02, -3.866e-02, 7.441e-02, 3.917e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(5.616e-04, -2.613e-02, -5.262e-02, 8.949e-02, 3.226e-02, 9.695e-02, -4.730e-02, -8.470e-03, 6.702e-02, 8.653e-02, 5.368e-02, 4.185e-02, -8.629e-03, 4.530e-03, 6.285e-02, 7.321e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-1.756e-01, 1.858e-01, 8.392e-02, -7.712e-02, -1.256e-01, 1.102e-01, 2.035e-03, 2.032e-02, -1.175e-01, -1.481e-01, -3.828e-02, 4.534e-02, 6.798e-03, 6.033e-02, -9.206e-02, 5.712e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-4.279e-03, 2.075e-03, 2.131e-01, -3.816e-02, -2.280e-01, 1.013e-01, -1.573e-01, 1.017e-01, 9.638e-02, -1.098e-01, -1.167e-01, 9.393e-02, -1.927e-01, 3.680e-02, -4.589e-02, 1.804e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(2.098e-02, -2.625e-02, -5.712e-05, -1.306e-02, -2.426e-02, -4.923e-02, -2.636e-03, -1.325e-02, 5.392e-02, 2.922e-02, 7.693e-03, 1.426e-02, 4.848e-02, 2.421e-02, -1.395e-02, 2.670e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-3.999e-02, -1.316e-02, 1.538e-02, -4.576e-02, 1.415e-02, -3.083e-02, 2.984e-04, 7.023e-02, 3.527e-02, 4.293e-03, -2.543e-04, 8.186e-02, -9.301e-02, 3.131e-02, -4.021e-02, -1.360e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.043e-02, 7.171e-02, 1.535e-02, 2.667e-02, 4.137e-03, 3.653e-02, -1.576e-01, 2.531e-02, 4.089e-03, 4.317e-02, 3.617e-02, 4.504e-04, 4.128e-02, -1.968e-02, -9.106e-02, 1.734e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(8.537e-03, 2.179e-02, 3.348e-02, -1.118e-02, 1.038e-02, -4.976e-02, -4.687e-02, -5.187e-02, -1.266e-02, -3.526e-04, -7.196e-02, -1.151e-02, 2.983e-02, -7.380e-03, 2.741e-02, -5.148e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-2.849e-03, 1.909e-02, -2.173e-03, -2.281e-02, 8.239e-03, 2.591e-02, 1.961e-02, 9.980e-02, 4.319e-02, 1.405e-04, -3.032e-03, 9.597e-04, 6.869e-03, 3.842e-02, 6.530e-03, -4.868e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-2.817e-02, -1.837e-02, 9.601e-03, -2.196e-03, 7.436e-03, -1.918e-02, 3.064e-02, -1.333e-02, -1.321e-02, -2.557e-02, -4.648e-02, 2.069e-03, 7.936e-02, 3.073e-02, -2.536e-02, 1.152e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(-5.319e-02, 2.712e-02, -9.440e-03, 2.467e-02, 5.591e-02, 3.469e-02, 4.034e-02, 1.214e-01, -6.909e-02, -3.399e-02, -3.236e-02, -7.133e-02, -1.809e-02, -4.617e-02, -3.067e-02, 1.436e-03), r6);\n\tr7 = MulAdd(s0_2_0, M4(9.221e-02, 1.463e-02, 1.837e-02, -6.643e-03, -2.982e-02, -2.480e-02, -1.027e-01, -3.259e-02, -3.095e-02, 2.696e-02, 3.942e-02, -2.504e-02, -4.515e-02, -9.126e-02, -1.358e-01, 2.035e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(2.867e-02, -7.671e-02, -6.400e-02, -2.318e-02, -5.243e-02, 1.104e-01, 2.482e-02, 1.243e-02, -6.322e-02, -8.663e-02, -2.780e-02, -7.240e-04, -5.529e-02, -1.343e-01, -3.045e-02, 1.849e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.189e-01, -9.812e-02, -1.551e-01, 6.752e-02, 1.030e-01, -1.935e-02, 2.626e-01, -9.098e-03, -2.976e-02, 2.442e-02, 1.665e-01, 2.235e-01, 1.386e-02, 7.587e-02, 1.187e-01, -1.500e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(4.416e-02, 3.333e-03, -1.536e-02, 4.857e-02, -1.323e-01, 1.720e-01, 9.522e-03, 2.695e-02, -2.062e-02, 2.415e-02, 1.342e-01, 2.456e-02, -4.982e-02, -9.736e-02, 1.851e-02, -9.201e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-4.615e-02, 1.972e-02, 7.316e-02, 5.183e-02, -3.389e-02, -1.000e-01, -3.503e-01, -2.319e-01, -6.304e-02, -1.518e-02, 3.754e-02, -7.737e-03, -3.505e-02, 4.188e-03, -7.790e-02, -4.819e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(5.110e-02, 3.284e-02, -7.003e-03, -9.890e-02, 5.165e-02, -4.600e-02, -1.188e-02, 1.559e-01, 1.161e-02, -1.100e-01, -4.187e-02, -3.968e-02, -5.004e-02, 6.858e-02, 2.276e-02, 2.666e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-6.552e-02, -4.072e-02, 3.486e-02, -2.901e-02, 1.626e-01, 5.911e-02, -1.017e-01, 3.829e-02, -3.355e-02, -3.562e-02, -4.775e-02, -3.795e-02, -4.605e-03, 4.139e-02, 4.410e-02, 2.661e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(1.152e-03, 7.808e-02, -4.983e-02, -1.018e-01, -1.063e-01, -3.083e-01, -1.409e-02, 1.728e-01, -3.556e-02, -2.597e-02, 1.641e-02, 9.242e-02, -4.014e-02, -3.906e-02, 3.474e-02, -1.511e-02), r6);\n\tr7 = MulAdd(s0_2_1, M4(1.980e-01, -1.336e-02, -8.539e-02, -3.906e-02, -1.470e-01, 3.185e-01, 3.344e-01, 4.723e-02, 2.245e-04, 2.485e-02, 1.186e-01, -6.665e-02, -1.470e-01, -7.701e-02, -1.280e-01, 3.659e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(8.334e-02, -1.588e-02, 6.537e-02, -4.220e-02, -6.051e-02, 4.745e-02, 2.191e-02, 3.319e-02, 7.392e-02, 6.098e-02, -3.432e-02, 1.485e-02, -1.518e-02, 8.800e-03, 1.693e-02, 2.482e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(-5.900e-02, 2.620e-02, -8.855e-02, 2.764e-01, -2.690e-02, -1.336e-01, 4.474e-02, 8.682e-02, -9.183e-02, -9.690e-02, 1.007e-01, -4.344e-01, 5.095e-02, -4.445e-02, 2.406e-02, -8.773e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(5.265e-02, -2.269e-02, 4.580e-02, 7.003e-02, -1.051e-01, 9.846e-02, -2.152e-01, 9.771e-02, -3.251e-02, 6.941e-02, -2.141e-02, 1.288e-02, -6.352e-02, 3.863e-02, -3.316e-02, -1.534e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(1.361e-02, 1.605e-02, 1.110e-01, 6.722e-02, -1.464e-02, -3.985e-02, -9.216e-02, -5.086e-02, 8.909e-02, -4.823e-02, -1.829e-01, 1.391e-02, -8.673e-02, 1.468e-02, -4.596e-03, 1.467e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(1.435e-01, 3.797e-02, 1.211e-02, 7.100e-02, -2.801e-02, -6.302e-02, -4.234e-02, -6.623e-02, 8.333e-02, 3.693e-02, 4.158e-02, 1.458e-02, -2.823e-02, -2.930e-02, -7.928e-03, -1.417e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-3.356e-02, -2.686e-02, -3.337e-03, 1.230e-02, -1.306e-02, 3.943e-02, 6.435e-02, 1.651e-02, -3.415e-02, 1.273e-02, -6.209e-02, 9.898e-03, 9.067e-03, 1.819e-02, -2.241e-02, 1.453e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-1.391e-02, 2.145e-01, 4.477e-02, -3.646e-02, -1.993e-02, 7.817e-02, 1.212e-02, 4.736e-02, -1.605e-02, -8.342e-02, -4.629e-02, -5.590e-02, -1.346e-02, -6.831e-02, 1.838e-02, -7.779e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(2.958e-02, -6.562e-02, -1.401e-01, -4.167e-02, 1.166e-01, 1.539e-01, -4.762e-02, 5.129e-02, -2.189e-02, 8.161e-02, 3.799e-01, -9.185e-03, -7.436e-02, -4.975e-03, 1.288e-02, 2.151e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(3.622e-02, -1.726e-02, -8.107e-03, -8.198e-03, 1.428e-02, -2.517e-02, 6.760e-03, -1.171e-02, -3.442e-03, 4.465e-02, 2.608e-02, 5.484e-04, -1.146e-02, -1.430e-03, -3.357e-02, -1.144e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(5.075e-02, 5.844e-03, 1.423e-02, 6.318e-02, -3.517e-02, 2.625e-02, -4.927e-03, 1.324e-01, -7.167e-02, 2.586e-03, 4.428e-02, -1.390e-01, -1.115e-02, -1.580e-02, 2.159e-02, -4.508e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.360e-01, -4.823e-02, 2.358e-02, -7.505e-02, 9.769e-02, -2.517e-02, -6.763e-02, 1.084e-02, 2.212e-02, 8.001e-02, -3.072e-01, 5.412e-02, -2.659e-02, -6.097e-02, -6.165e-02, -8.211e-03), r2);\n\tr3 = MulAdd(s1_0_0, M4(2.256e-02, -1.444e-02, 2.564e-02, 9.089e-02, -2.410e-03, 1.854e-02, 3.076e-02, 9.009e-02, -2.502e-03, -3.552e-02, -1.795e-01, 7.317e-02, 5.526e-02, -1.480e-02, 2.749e-02, 6.588e-03), r3);\n\tr4 = MulAdd(s1_0_0, M4(-1.379e-02, -4.191e-02, -2.778e-02, -1.664e-02, 2.229e-02, -3.083e-02, 4.881e-03, -1.249e-02, -6.144e-02, -1.086e-01, -1.753e-02, 1.155e-01, 1.723e-02, 2.385e-02, 2.347e-02, 2.461e-04), r4);\n\tr5 = MulAdd(s1_0_0, M4(-3.318e-02, 3.245e-04, 3.006e-02, -1.296e-02, 2.903e-03, 4.885e-03, -1.903e-02, -2.609e-02, -4.165e-02, 9.938e-02, -1.805e-02, 7.326e-02, -9.132e-03, -2.509e-02, 1.850e-02, -5.618e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-1.123e-02, 1.332e-03, 1.180e-02, 1.836e-02, -3.138e-03, 9.927e-02, 3.879e-03, -1.559e-01, -2.920e-02, -1.461e-01, 6.108e-03, 8.353e-02, -3.238e-02, 1.555e-02, -2.342e-02, -3.781e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(1.020e-01, -1.137e-02, 4.783e-02, -5.897e-03, -3.177e-03, -4.400e-03, 3.672e-02, 7.229e-03, -1.025e-01, -5.147e-03, 2.753e-02, 1.095e-01, 1.569e-02, -7.529e-03, -5.831e-03, -2.275e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(2.792e-03, -1.393e-02, 1.220e-02, 1.105e-02, 1.137e-01, -8.867e-03, 1.350e-02, -1.134e-02, 5.098e-02, 4.555e-02, 1.783e-01, 2.073e-01, 1.882e-02, -6.899e-02, -7.918e-02, 3.933e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(4.510e-02, 1.606e-02, -1.110e-02, -2.091e-01, -4.914e-02, 3.954e-02, 5.091e-02, 1.870e-01, -2.540e-02, 2.321e-03, 4.716e-02, 1.327e-01, -4.024e-02, -5.792e-03, -2.693e-02, 2.960e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-8.062e-02, 8.139e-02, 8.776e-02, -1.698e-02, 2.332e-01, -1.263e-03, 6.899e-02, -5.345e-02, 3.716e-01, 2.655e-02, -4.276e-01, -1.924e-01, -1.078e-02, -1.682e-02, -7.316e-03, -3.751e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(2.440e-01, -2.255e-02, 2.368e-01, 1.529e-01, 1.535e-02, 7.565e-03, 4.023e-02, 3.690e-02, 1.807e-01, -1.303e-02, 9.553e-02, -2.697e-01, -2.192e-01, -4.618e-02, 2.174e-02, -8.393e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-9.785e-03, -2.581e-02, -1.855e-02, -2.743e-01, 5.307e-02, -1.033e-01, 1.650e-02, 5.155e-02, -3.044e-01, -3.238e-01, 1.646e-01, 1.427e-01, 2.298e-02, -8.414e-02, 1.022e-02, 5.440e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(3.078e-02, 1.807e-02, 4.896e-02, -9.373e-03, -7.204e-03, -1.120e-02, -7.034e-03, -8.534e-03, -4.761e-02, 2.627e-01, 1.436e-01, -2.306e-01, 6.166e-02, -4.061e-02, 2.114e-03, 1.479e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(3.793e-02, 6.511e-02, 6.635e-02, -6.398e-02, -6.159e-02, 4.589e-02, 5.079e-04, -8.737e-02, -2.043e-01, -1.341e-01, 1.354e-01, 2.513e-02, 1.320e-03, -6.075e-02, 4.789e-03, 1.184e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-3.226e-02, 7.194e-02, -3.288e-02, 1.115e-02, 5.456e-02, -8.362e-02, 3.519e-02, -2.807e-02, 2.720e-01, -1.026e-01, 4.695e-02, 2.903e-01, -5.174e-03, -2.481e-02, -5.946e-03, -4.149e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(2.405e-01, 3.214e-02, -1.582e-02, 6.301e-03, -1.750e-02, 4.359e-02, -1.065e-03, 6.185e-03, -1.124e-01, -7.936e-02, 4.354e-03, -1.659e-03, 1.775e-02, -4.230e-02, 1.057e-02, -1.480e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(3.952e-02, -9.180e-03, 4.875e-02, 5.235e-03, 1.064e-02, -4.676e-03, 9.476e-03, -4.963e-02, -2.701e-02, 5.796e-02, 6.713e-02, 1.950e-02, -8.457e-02, -1.250e-01, -8.471e-02, -1.931e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(-2.907e-01, 3.420e-02, -2.434e-02, 1.782e-02, 5.380e-02, 7.462e-03, 2.136e-02, 2.875e-02, 9.122e-02, -4.058e-02, 1.081e-01, 5.780e-03, 1.569e-01, 2.260e-01, 5.777e-03, 9.020e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-2.212e-01, -1.812e-02, 1.671e-02, 1.966e-02, -5.594e-02, 9.984e-03, 1.659e-02, 3.596e-02, 4.379e-02, -2.516e-02, 3.254e-02, 2.418e-02, 1.353e-01, -3.329e-02, 2.199e-02, -3.452e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(2.589e-02, -8.963e-02, 1.922e-02, -3.539e-02, 2.488e-02, -3.915e-03, -1.900e-02, 1.331e-02, -2.862e-02, 5.172e-02, -4.793e-02, 3.806e-02, -1.478e-02, 1.228e-01, 2.830e-02, -1.015e-01), r4);\n\tr5 = MulAdd(s1_0_2, M4(3.179e-02, -3.324e-02, 2.772e-02, 2.767e-02, -7.457e-03, 2.875e-02, 3.225e-03, -2.513e-03, -1.475e-02, 2.695e-02, 8.420e-03, -1.084e-02, -5.851e-03, 8.990e-02, -7.240e-03, -7.243e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-1.589e-01, 1.211e-01, -1.140e-01, -1.135e-02, -5.460e-02, 1.107e-02, -1.431e-02, 5.921e-03, -1.020e-01, 7.570e-02, 1.921e-02, -4.374e-02, 3.464e-02, 2.514e-02, 2.774e-02, 3.484e-03), r6);\n\tr7 = MulAdd(s1_0_2, M4(-2.507e-01, 7.113e-03, -6.043e-02, -2.913e-02, -3.392e-02, -1.757e-02, -9.477e-03, 2.815e-02, 2.856e-02, 2.607e-02, 7.269e-02, 2.258e-02, -1.277e-02, 1.013e-01, -1.199e-01, 8.032e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(2.088e-02, 1.802e-02, 1.741e-02, -2.767e-03, 2.340e-02, -1.011e-02, 2.774e-02, 1.861e-02, -6.853e-02, 3.400e-04, -2.840e-02, -4.743e-02, -2.769e-02, -2.994e-03, -3.791e-02, -4.146e-04), r0);\n\tr1 = MulAdd(s1_1_0, M4(-2.321e-02, 1.417e-02, 7.980e-02, 2.467e-02, 7.330e-02, 2.725e-02, 6.396e-02, 8.203e-02, 1.106e-01, -6.245e-02, 3.707e-01, 2.102e-01, -8.363e-02, -4.085e-02, -1.863e-01, -2.330e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(9.640e-02, 1.255e-01, 5.415e-02, 5.432e-02, -6.057e-03, 2.574e-02, -6.370e-02, -4.629e-02, 2.659e-02, -9.322e-02, -6.164e-02, 7.088e-03, -1.657e-02, -1.598e-02, -1.341e-02, -7.778e-03), r2);\n\tr3 = MulAdd(s1_1_0, M4(-5.363e-02, 6.154e-03, -1.533e-01, 3.557e-02, -8.353e-03, 2.129e-02, 1.760e-01, 1.714e-01, -1.846e-02, -2.181e-02, -2.416e-01, 1.714e-02, -1.514e-01, -2.627e-02, 4.086e-02, -4.858e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-3.392e-02, -2.616e-02, -2.349e-02, -3.247e-02, 1.859e-02, 3.183e-03, -8.188e-03, -1.013e-01, -1.947e-02, -1.302e-01, -1.295e-02, 1.263e-01, -2.189e-02, 2.495e-02, 2.148e-02, -2.672e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-2.348e-02, -1.208e-02, -4.315e-04, -5.304e-03, 6.145e-02, 3.745e-02, 2.138e-02, -7.582e-02, -3.063e-02, -3.393e-02, 1.305e-02, 6.140e-02, -7.641e-03, -2.878e-02, 2.872e-02, -3.628e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(-3.906e-02, -3.766e-02, -2.765e-02, -7.880e-02, 5.824e-02, 1.743e-01, 6.375e-02, -2.375e-01, -8.169e-03, -7.942e-02, -1.423e-01, -3.268e-01, 5.620e-02, -7.528e-03, -2.748e-02, -6.712e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.331e-01, -2.438e-02, 7.640e-02, -4.663e-03, 4.273e-02, 2.923e-03, -3.497e-02, 2.547e-02, -1.090e-01, 1.100e-01, -3.014e-03, -4.447e-02, -6.252e-02, 1.230e-02, -7.712e-02, -2.742e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(1.697e-01, 7.607e-02, 9.304e-02, 5.091e-02, -1.813e-01, 2.155e-01, -1.532e-02, -5.668e-03, 5.042e-04, 1.736e-02, -3.810e-02, 4.425e-02, 8.414e-03, 6.116e-03, 2.055e-02, 1.577e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-2.902e-01, -2.052e-01, 3.494e-02, 4.877e-02, 1.115e-01, -2.490e-02, -1.538e-02, -1.231e-01, 2.027e-01, -1.233e-01, 9.153e-02, -1.271e-01, 1.906e-01, -1.673e-01, 2.899e-01, 1.672e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-5.579e-02, 7.518e-02, -1.151e-01, 1.169e-01, 2.252e-01, -6.809e-02, 1.534e-01, 2.076e-01, -9.781e-02, -2.586e-01, 2.348e-01, -7.838e-02, -4.411e-01, 3.157e-01, 5.189e-02, 3.018e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(1.031e-02, -3.779e-02, -4.434e-02, 1.755e-01, 6.392e-02, 5.457e-02, 2.183e-01, 3.438e-01, 2.991e-02, -3.405e-02, -2.716e-01, -1.323e-01, 2.238e-01, -1.390e-01, -1.318e-01, -5.473e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.095e-02, -2.430e-02, 9.417e-02, 5.531e-02, 1.038e-01, 3.319e-01, -2.812e-02, 4.986e-03, 3.772e-01, -1.336e-01, 1.037e-01, 1.814e-01, 7.735e-02, 4.117e-02, 2.135e-02, -3.867e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(-4.078e-02, 9.460e-03, 4.450e-02, -2.727e-02, 3.409e-02, 7.311e-02, -4.297e-02, 1.470e-01, 1.417e-01, 6.924e-02, -2.708e-02, 1.067e-01, 1.293e-01, 1.897e-01, 7.369e-03, -6.913e-03), r5);\n\tr6 = MulAdd(s1_1_1, M4(-2.348e-01, -3.283e-02, 4.960e-02, 3.237e-01, -5.371e-01, 1.823e-01, -3.689e-03, -9.019e-02, 2.262e-01, -6.722e-02, -4.308e-02, 8.104e-02, -1.531e-01, -2.684e-01, -5.511e-03, -7.351e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(-2.803e-02, -1.879e-02, 1.209e-01, 1.789e-02, -1.607e-01, 7.233e-02, 1.076e-01, 5.191e-02, -2.205e-01, -1.949e-01, 4.716e-01, 8.364e-02, -2.287e-01, -9.623e-02, -1.353e-01, 1.714e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-5.233e-01, -3.993e-02, -7.213e-02, -1.110e-01, -1.431e-01, 1.295e-02, -3.001e-02, 2.926e-02, -6.557e-02, 2.969e-02, -8.225e-03, -4.696e-02, -3.424e-02, 9.128e-02, -3.056e-02, 1.151e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.152e-01, -1.086e-01, -3.154e-01, -2.808e-01, 8.061e-02, 6.000e-03, -2.668e-02, 5.306e-02, -4.876e-02, -1.605e-02, 3.215e-03, 1.913e-01, -8.630e-03, 1.799e-01, -4.881e-03, 1.477e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-3.603e-01, -2.092e-01, -3.135e-02, 5.976e-02, 6.766e-02, -5.060e-02, 1.182e-01, 2.509e-02, -1.467e-02, 1.376e-01, 5.265e-02, 8.863e-02, -2.407e-01, 8.889e-02, 1.038e-01, 1.686e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.528e-01, -8.165e-02, 1.455e-01, -5.657e-01, -1.841e-02, 2.013e-02, 4.070e-02, -2.593e-02, 4.130e-02, -2.909e-02, 3.892e-02, 9.678e-02, -2.045e-01, -9.253e-02, -1.246e-01, -1.980e-01), r3);\n\tr4 = MulAdd(s1_1_2, M4(-8.043e-02, -9.234e-02, 7.458e-02, 1.753e-02, 1.964e-02, -2.901e-02, 1.590e-02, 1.456e-01, 8.692e-02, -2.986e-02, -2.331e-02, 7.569e-02, 1.035e-01, 4.091e-02, 1.246e-01, 1.851e-01), r4);\n\tr5 = MulAdd(s1_1_2, M4(3.695e-02, -1.182e-01, -3.412e-02, 1.110e-01, -5.959e-03, 9.910e-03, 6.548e-02, 5.338e-02, -2.846e-02, -5.706e-02, -3.221e-02, 2.723e-02, -5.765e-02, 6.255e-02, 7.774e-02, 6.663e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(2.764e-01, -2.774e-01, -1.044e-01, 9.017e-02, -2.072e-02, -6.747e-02, -1.662e-02, -5.361e-02, 5.814e-03, 6.109e-02, 1.550e-02, 4.387e-03, -4.124e-03, -2.990e-02, -1.772e-02, -1.153e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(1.174e-01, 1.869e-01, -6.770e-02, -1.284e-01, 1.051e-01, 9.003e-03, -4.245e-02, 8.050e-03, -1.161e-01, 1.606e-01, -5.982e-02, -5.791e-02, 1.524e-01, -1.299e-01, 1.658e-01, 5.286e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(2.213e-02, 2.187e-02, 3.783e-03, -2.415e-02, -2.183e-02, 5.703e-02, 4.638e-02, -5.327e-02, -1.077e-02, 4.449e-03, 1.494e-02, 2.303e-03, -3.354e-02, -5.910e-02, -3.906e-03, 3.103e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.333e-02, -2.261e-02, 5.235e-02, 7.168e-02, 1.039e-01, 7.339e-03, -3.984e-02, 1.088e-01, -6.077e-03, -1.731e-02, -1.017e-01, -3.842e-02, 6.470e-04, -3.957e-02, -6.069e-02, -5.653e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-2.515e-02, 3.577e-02, 4.604e-02, -1.641e-02, -2.950e-02, 2.631e-02, 1.450e-01, 2.445e-02, 6.218e-03, -4.846e-02, -1.858e-02, -1.442e-02, 1.132e-02, 3.479e-03, -5.794e-03, 1.541e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.165e-02, -2.343e-02, -5.358e-02, 2.560e-02, 6.116e-02, 2.923e-02, -2.018e-02, 3.815e-02, -2.059e-02, 2.505e-02, 1.210e-01, 4.683e-02, -1.827e-02, -2.836e-02, -1.362e-01, -4.589e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-2.401e-02, -3.272e-02, -1.311e-02, -1.161e-02, 9.860e-03, -1.668e-02, -3.709e-03, -2.237e-02, -2.202e-02, 2.347e-02, -4.742e-03, -2.044e-02, 3.827e-02, -3.757e-02, 1.636e-02, -1.171e-01), r4);\n\tr5 = MulAdd(s1_2_0, M4(-3.704e-02, 5.868e-03, -2.412e-02, -3.131e-02, -2.603e-02, -6.012e-02, -6.682e-03, -2.749e-02, -6.294e-03, -2.023e-02, 2.877e-02, -1.191e-02, -3.784e-02, -8.757e-03, -3.160e-04, -1.565e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-2.734e-02, -2.581e-03, 1.273e-02, -4.741e-02, 1.656e-02, 1.179e-01, 1.633e-03, 6.286e-02, 9.109e-02, 3.170e-02, -5.488e-03, 2.060e-02, -7.403e-02, -2.116e-02, -3.677e-02, -7.401e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(1.739e-02, 6.411e-02, 1.491e-02, 3.861e-03, 7.409e-02, -2.396e-02, -4.675e-02, -4.581e-02, 6.500e-03, 6.163e-03, -3.067e-02, -2.118e-02, -3.881e-02, -2.331e-02, 4.570e-02, -8.297e-03), r7);\n\tr0 = MulAdd(s1_2_1, M4(-4.884e-02, 9.292e-03, 3.431e-02, -5.014e-02, -1.684e-02, -1.274e-01, 4.214e-02, -5.394e-02, 2.959e-02, -1.469e-02, -2.274e-03, -2.680e-02, 1.791e-02, 6.385e-02, 2.014e-02, 9.624e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(2.908e-02, 5.229e-02, 4.735e-03, 2.399e-01, 2.477e-01, 1.370e-01, 1.605e-01, -5.305e-01, -9.206e-02, 1.400e-02, -6.580e-02, 8.547e-02, -3.224e-01, -1.477e-01, -4.603e-01, 2.034e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(2.668e-03, 5.537e-03, 1.141e-02, 4.370e-02, -1.480e-01, 1.714e-01, -2.069e-01, -2.585e-01, 3.641e-02, -3.550e-02, -8.044e-02, 1.008e-01, 5.027e-02, 5.272e-02, -8.042e-02, 1.140e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(3.791e-03, -3.362e-02, 7.928e-02, 1.882e-01, 8.381e-02, 5.012e-02, -1.076e-02, -2.535e-01, 4.592e-03, -2.114e-02, 5.088e-03, -8.834e-03, -1.629e-02, -9.019e-02, 6.523e-02, 1.643e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(3.827e-02, -3.900e-02, -1.191e-02, -7.481e-02, 2.828e-03, -1.632e-01, 2.908e-02, 1.343e-01, 7.700e-03, 5.225e-02, 4.840e-02, 3.256e-02, 1.561e-01, 4.028e-02, 1.726e-02, 5.670e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(7.446e-03, -1.039e-02, -3.221e-03, 3.288e-02, -9.842e-02, 5.170e-02, 1.698e-01, 4.961e-03, 9.642e-03, -1.797e-02, 2.291e-02, -1.022e-02, 1.838e-02, 3.601e-02, 3.025e-02, -3.657e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(1.079e-01, 9.000e-02, 2.464e-02, 1.086e-01, 4.285e-01, -2.515e-01, 2.330e-02, -6.076e-02, -3.570e-02, 4.323e-02, 1.642e-02, 4.302e-02, 2.907e-04, 1.918e-02, 1.653e-02, -2.223e-01), r6);\n\tr7 = MulAdd(s1_2_1, M4(-2.842e-02, -3.620e-02, -2.724e-01, -1.959e-02, 1.608e-02, -1.712e-01, 2.848e-02, 6.651e-02, -5.600e-02, -1.258e-01, -1.082e-01, -2.948e-02, -3.295e-02, -1.250e-01, -2.315e-01, 3.817e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(3.191e-02, 7.591e-02, 1.063e-02, -1.025e-01, -1.088e-02, 1.770e-02, -1.508e-02, 9.669e-03, 2.765e-02, -3.000e-02, 2.232e-03, -1.277e-02, 6.746e-02, -5.101e-02, -5.388e-03, 4.172e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.098e-01, 1.072e-03, 9.448e-02, -9.188e-02, 8.823e-02, 3.713e-04, 6.387e-02, -1.353e-01, -9.676e-04, -3.857e-02, -2.814e-02, 1.031e-01, 1.752e-01, 3.387e-02, 6.182e-02, -1.121e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(-2.234e-02, 9.602e-02, -9.485e-02, -1.291e-01, -1.325e-02, -1.646e-02, 1.244e-01, 3.839e-02, -2.722e-02, 5.166e-02, 3.781e-02, -8.134e-03, 1.166e-02, -4.012e-02, 9.452e-02, -3.076e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-2.574e-02, -1.554e-02, -1.636e-01, -3.754e-02, -1.092e-02, 2.649e-02, 4.232e-02, 1.098e-01, 1.443e-02, -2.108e-02, 7.503e-03, -5.909e-02, 4.564e-03, -4.527e-02, 2.663e-02, -1.553e-01), r3);\n\tr4 = MulAdd(s1_2_2, M4(-2.019e-02, -8.032e-02, -6.711e-02, -1.837e-02, -4.067e-02, 1.731e-02, -7.141e-03, 1.020e-01, -2.476e-02, 2.296e-02, 1.280e-02, 5.023e-02, 2.084e-02, 1.336e-01, 1.257e-01, 9.029e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.041e-02, -7.875e-03, -1.213e-01, -1.169e-01, -4.145e-03, 2.249e-02, 4.015e-02, 1.237e-02, 1.105e-02, -3.125e-02, -2.003e-02, -5.088e-03, 5.749e-02, 1.827e-02, 2.299e-02, 5.233e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(6.845e-02, -1.679e-01, -1.422e-02, -6.094e-03, -2.055e-02, 1.082e-01, -7.506e-03, -3.170e-02, 5.443e-02, -8.094e-02, 2.376e-02, 2.240e-02, 2.924e-02, -2.308e-01, 3.745e-02, -5.555e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-7.480e-02, -9.956e-02, 1.600e-01, -1.394e-02, 8.963e-02, 9.185e-03, -3.422e-02, 2.243e-02, -1.934e-02, 3.268e-02, -7.071e-02, -2.908e-02, -6.637e-02, -1.881e-01, -7.769e-02, 3.044e-02), r7);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-4.178e-02, 3.761e-02, -3.111e-02, 5.197e-03, 3.125e-02, 4.406e-02, 1.619e-02, 6.733e-03, 3.377e-02, -6.295e-02, 2.211e-02, -3.696e-02, 6.992e-03, -5.836e-02, -2.046e-01, 2.926e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-4.636e-02, 1.505e-03, 1.357e-03, -1.808e-02, -3.479e-02, -2.022e-02, -5.816e-02, 2.475e-02, 3.987e-02, 4.268e-03, -5.701e-02, -9.692e-02, 3.010e-02, 1.888e-02, 6.417e-02, 6.123e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(3.695e-02, 6.616e-02, 2.776e-02, 3.876e-02, 2.090e-01, 1.665e-01, 7.589e-02, 6.109e-02, 6.979e-02, -1.472e-03, -1.071e-01, -1.231e-02, 2.682e-02, -1.054e-01, -4.718e-02, -2.525e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(1.775e-02, -1.668e-02, -3.179e-02, -9.150e-02, -1.185e-02, 4.445e-03, -5.655e-02, 2.552e-02, -8.224e-02, -1.076e-03, 4.899e-02, -3.709e-02, 1.931e-02, -8.639e-02, -5.193e-03, 6.771e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(-1.549e-02, -1.009e-02, 2.413e-02, 4.375e-02, 2.391e-03, -7.372e-03, -2.930e-02, 2.059e-02, -6.375e-02, -3.849e-02, 2.226e-03, -8.480e-02, -4.149e-03, 2.782e-03, 4.310e-02, -2.980e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-2.033e-02, 1.662e-03, 2.415e-02, -9.437e-03, -2.312e-02, -3.007e-04, 1.728e-02, 7.375e-03, -7.269e-05, -6.697e-03, -2.605e-02, -5.864e-03, -8.833e-04, -1.566e-02, -2.660e-03, -1.144e-01), r5);\n\tr6 = MulAdd(s0_0_0, M4(-4.693e-02, -4.167e-02, -2.397e-02, -7.211e-03, 3.059e-02, 1.825e-02, -7.499e-03, -8.604e-02, 7.683e-02, 3.757e-02, 3.052e-02, 8.735e-02, 4.822e-03, -5.609e-02, -1.032e-01, -8.248e-03), r6);\n\tr7 = MulAdd(s0_0_0, M4(1.336e-01, 1.342e-02, -7.009e-02, 1.222e-02, -4.426e-02, -2.006e-02, -3.885e-02, 2.093e-03, -1.431e-01, 3.375e-02, 8.919e-02, -4.588e-03, -3.571e-02, -5.774e-03, 2.870e-02, 6.785e-03), r7);\n\tr0 = MulAdd(s0_0_1, M4(4.210e-02, -3.191e-02, -6.236e-02, 3.725e-02, 4.351e-02, 1.403e-01, 8.709e-02, -4.033e-02, -5.586e-02, 1.389e-02, -2.061e-02, 1.665e-02, 5.022e-03, -4.579e-01, -1.242e-01, 1.571e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-2.828e-02, -2.345e-02, -5.959e-02, -1.309e-01, -1.057e-01, -4.560e-02, -3.810e-02, 4.876e-02, 9.582e-02, 1.306e-02, 4.242e-02, 7.286e-02, 1.330e-01, -1.289e-02, 5.965e-02, -1.426e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-2.612e-01, -1.387e-01, -4.208e-02, 2.960e-02, -2.100e-02, -2.152e-02, 3.397e-03, 9.100e-02, 8.849e-02, -3.583e-02, 9.016e-03, 2.813e-02, -9.248e-02, 2.656e-02, 8.173e-02, -9.211e-03), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.487e-02, 4.684e-03, -1.052e-02, -3.470e-02, 9.417e-02, 2.279e-02, 1.236e-01, 4.715e-02, 1.062e-03, -2.766e-03, 3.880e-02, 1.404e-01, -1.398e-01, -9.785e-02, -9.700e-03, -4.079e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-5.078e-02, 1.080e-01, -5.708e-02, -1.153e-02, 1.126e-02, 3.593e-02, 1.884e-02, 3.760e-04, 6.906e-02, 2.044e-02, 1.072e-02, -2.644e-02, 3.632e-02, -1.722e-01, -1.851e-02, -1.360e-01), r4);\n\tr5 = MulAdd(s0_0_1, M4(2.563e-03, -5.577e-02, 3.890e-02, 1.975e-02, 1.678e-02, -2.885e-02, -4.533e-02, 8.059e-03, 3.250e-02, 5.957e-02, -2.815e-02, 2.239e-02, 4.696e-02, -4.880e-02, -2.594e-03, -3.637e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-8.045e-02, -3.836e-02, -4.592e-02, 6.920e-02, 1.431e-01, 1.800e-01, 4.534e-02, -1.287e-01, -8.314e-03, -6.734e-04, -4.387e-02, 6.023e-02, -3.864e-02, 5.063e-02, -4.599e-02, 3.029e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(9.454e-02, 1.629e-01, -3.219e-02, -4.535e-02, 2.071e-01, -3.478e-02, -2.965e-03, -1.610e-02, -1.587e-01, -6.690e-02, 3.275e-02, 4.508e-02, -2.894e-02, -2.631e-02, 3.225e-02, -2.907e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-4.244e-03, -7.366e-02, -4.260e-02, 1.716e-02, 2.217e-02, 4.222e-02, 5.369e-02, 2.088e-02, 1.309e-02, 4.303e-02, 5.640e-03, -3.252e-02, 1.097e-02, 2.056e-02, -5.814e-02, 6.580e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-6.903e-02, -2.236e-02, -3.895e-02, 1.506e-02, 5.310e-02, 6.211e-02, 1.039e-01, 1.974e-01, -5.440e-02, -5.082e-03, -6.693e-02, -6.881e-02, 4.961e-02, 2.266e-02, 1.775e-02, -1.922e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(6.101e-02, -8.111e-02, -8.800e-02, -5.701e-02, -1.073e-01, 4.495e-02, 2.176e-01, 1.634e-02, 2.572e-01, 7.776e-02, 1.217e-02, 1.744e-02, 1.092e-01, 9.352e-02, 7.388e-03, 5.982e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(8.700e-04, 2.018e-02, -1.392e-02, 1.119e-02, 1.262e-01, 1.543e-02, -4.724e-02, 6.715e-02, 2.485e-02, 1.522e-02, -2.065e-02, 4.998e-02, -7.299e-03, -4.639e-02, 2.801e-02, -4.050e-03), r3);\n\tr4 = MulAdd(s0_0_2, M4(4.530e-03, 6.224e-03, 2.938e-02, -1.085e-02, 1.349e-02, -2.926e-02, 8.166e-04, 1.361e-01, -6.596e-03, 2.411e-02, 3.063e-02, 2.645e-02, 1.165e-02, -3.077e-02, -1.455e-03, -6.098e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-1.160e-02, -2.826e-02, 6.629e-04, 3.376e-02, -3.230e-02, -7.350e-02, 3.964e-02, 7.584e-03, 9.401e-03, 2.213e-02, -3.226e-02, 2.170e-03, 4.756e-03, 3.305e-02, 3.355e-02, -3.534e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(-2.949e-02, 3.875e-02, -1.301e-02, -3.096e-02, -8.635e-02, -1.413e-02, 4.773e-02, -9.890e-02, -5.306e-03, 2.445e-02, -7.441e-04, 3.840e-02, -1.307e-01, 9.728e-03, -2.231e-02, 7.473e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-1.965e-02, 5.308e-02, -4.193e-02, -2.156e-02, 1.275e-01, -1.899e-02, 1.130e-01, -6.019e-02, -1.156e-01, -4.651e-03, -3.671e-03, 2.247e-02, -1.110e-01, -2.912e-02, -3.652e-02, 4.384e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-2.280e-02, -9.330e-03, 5.177e-02, 5.441e-03, 6.048e-02, 1.740e-02, -1.482e-02, 1.690e-02, -3.417e-02, 9.463e-02, 6.710e-02, -3.317e-03, -1.874e-02, -3.211e-01, -2.599e-01, 4.279e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-5.158e-02, -4.774e-02, -2.461e-02, -1.470e-01, -1.204e-02, 4.857e-02, 1.763e-01, 9.235e-03, -8.995e-02, -5.136e-02, -6.519e-02, 8.741e-02, -4.404e-02, -3.824e-02, -7.641e-02, -1.081e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-9.313e-02, -4.460e-02, 3.488e-02, 1.082e-01, -4.360e-02, 1.847e-02, -1.193e-02, 4.131e-02, -9.072e-02, 2.528e-01, 1.294e-01, 1.292e-01, -2.251e-02, -5.236e-02, -8.313e-02, -4.651e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(-4.251e-02, -6.832e-03, -1.492e-03, -1.606e-02, 3.154e-04, 4.059e-03, 3.441e-02, -3.412e-02, -5.431e-02, -1.377e-02, -2.144e-01, -5.716e-03, 1.728e-02, -1.978e-01, 1.098e-01, 2.261e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-5.473e-02, 2.774e-02, -7.991e-03, -1.021e-01, -1.183e-02, -2.710e-02, -4.112e-02, 7.031e-03, -3.823e-03, 9.129e-04, 5.705e-03, -3.457e-02, 2.872e-02, 6.066e-02, -2.042e-02, -1.073e-01), r4);\n\tr5 = MulAdd(s0_1_0, M4(-8.193e-02, 3.812e-03, 3.390e-02, -4.546e-02, -1.100e-02, -1.723e-02, 1.082e-02, 1.847e-02, -1.162e-01, -1.063e-02, -5.236e-02, 3.273e-02, 1.766e-02, 6.020e-02, 1.729e-02, 3.843e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(-7.838e-02, -1.502e-02, -1.129e-02, 9.832e-02, -2.914e-02, 1.281e-01, -6.630e-03, 1.371e-02, -9.459e-02, -4.074e-03, 2.775e-02, -1.647e-01, 1.033e-01, -1.820e-02, 4.113e-01, 1.635e-01), r6);\n\tr7 = MulAdd(s0_1_0, M4(1.724e-01, -5.369e-02, -2.716e-02, 1.405e-02, 5.131e-03, 6.045e-02, 1.510e-02, -1.596e-02, -1.252e-01, 6.388e-03, 1.636e-02, -4.037e-03, -1.447e-02, -2.812e-02, -2.888e-02, -4.047e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(7.329e-02, -1.035e-01, -8.966e-03, -1.460e-01, -1.109e-01, -2.838e-01, -1.846e-01, -7.840e-02, 2.680e-01, -2.015e-02, -1.309e-02, 5.064e-02, 3.357e-02, -2.868e-02, 7.637e-01, 1.335e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.141e-01, 8.094e-02, -9.433e-02, 8.084e-02, 1.280e-01, 1.401e-01, -1.450e-01, 4.253e-02, 3.113e-01, 3.177e-01, 1.978e-01, -2.670e-02, -8.594e-03, -1.396e-01, -2.529e-02, 6.254e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.875e-01, 4.566e-02, -2.717e-01, -9.590e-02, -1.241e-01, -3.973e-01, -2.058e-01, -3.869e-01, 2.520e-01, -2.670e-01, -3.163e-01, -2.446e-01, -5.442e-02, 3.411e-01, -9.303e-02, 6.439e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(9.159e-02, 9.916e-03, -6.090e-03, 6.035e-02, -9.083e-02, -1.525e-02, -3.529e-01, -5.655e-02, 5.558e-02, 9.554e-03, 1.880e-01, -1.043e-01, -6.314e-02, 6.270e-01, -1.565e-01, -4.529e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(6.912e-02, 1.959e-01, 1.197e-01, -3.888e-02, -9.848e-02, 6.141e-02, 9.151e-02, -5.658e-02, 4.942e-02, 1.683e-02, 1.069e-01, -4.210e-02, -1.413e-01, -4.672e-03, -1.773e-01, -2.547e-01), r4);\n\tr5 = MulAdd(s0_1_1, M4(9.477e-02, 1.465e-01, -1.190e-01, 3.589e-02, 8.350e-02, -5.636e-02, -2.723e-02, 2.522e-02, 4.514e-02, 1.693e-01, 1.050e-01, -5.871e-02, -2.407e-01, -4.184e-01, -1.750e-02, 1.455e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(-5.950e-02, 3.665e-02, -3.992e-02, -4.005e-02, 1.585e-01, -3.456e-01, -1.519e-01, -5.584e-02, -7.738e-02, -1.128e-02, 6.242e-02, -2.291e-01, 7.469e-02, -3.728e-02, -4.883e-01, -2.773e-01), r6);\n\tr7 = MulAdd(s0_1_1, M4(-1.639e-01, -1.734e-01, -1.899e-02, 1.121e-01, -1.069e-01, 3.161e-02, 1.244e-01, -5.062e-02, -4.674e-02, -3.415e-02, 1.402e-01, 1.772e-01, -1.951e-02, 5.693e-02, -2.988e-02, 4.013e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(2.599e-02, -1.114e-01, 2.401e-02, -1.417e-02, 5.011e-02, 1.077e-01, 6.377e-02, -3.404e-03, 3.961e-02, -4.214e-02, -1.702e-02, 3.021e-02, -1.425e-01, 5.609e-01, -1.654e-02, -5.951e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(3.906e-02, 2.617e-03, 3.719e-02, -6.562e-02, -1.219e-01, 6.735e-03, -1.167e-01, 1.116e-01, -1.093e-01, 1.586e-01, 3.039e-02, 5.595e-02, -5.551e-02, 1.919e-01, -4.765e-02, 8.195e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-2.969e-02, 4.672e-02, 7.835e-02, 1.369e-02, -2.158e-02, 8.329e-02, 1.616e-01, -2.523e-03, 7.289e-03, -3.927e-02, 1.139e-01, -3.930e-03, -7.871e-02, -1.529e-01, 7.448e-02, 1.321e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-7.376e-02, 2.761e-02, -5.316e-02, -9.063e-02, 1.580e-02, 1.369e-02, 1.387e-01, 8.485e-03, -8.582e-03, 1.087e-02, -1.382e-01, -2.167e-03, -8.113e-02, -3.408e-02, 1.082e-01, -9.623e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(-8.110e-02, 4.897e-02, -5.811e-02, -1.588e-02, 8.469e-02, 7.523e-03, 4.108e-02, -2.173e-02, -4.850e-02, 5.515e-02, 1.469e-01, 2.469e-02, -3.045e-02, 8.518e-02, 3.716e-02, 1.623e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(1.933e-02, 5.895e-02, -5.712e-02, -3.569e-02, 6.742e-02, 3.232e-04, -8.038e-02, -1.225e-02, 3.553e-02, 8.618e-02, -3.716e-03, 2.361e-02, 3.051e-02, -2.953e-02, 2.695e-02, 9.094e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(-1.205e-01, -1.062e-02, -1.888e-02, 1.243e-02, 4.356e-02, 8.633e-03, 9.023e-02, -3.550e-02, -2.085e-01, 2.260e-01, -2.439e-03, 1.009e-02, 9.792e-02, 2.289e-02, -7.373e-02, 2.152e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-1.438e-01, -6.214e-02, -6.277e-02, 5.260e-02, -8.550e-02, -2.213e-01, -1.263e-01, -1.183e-02, -1.877e-01, -9.718e-02, 8.825e-02, 6.691e-02, 1.773e-01, 1.224e-02, 7.090e-03, 7.748e-03), r7);\n\tr0 = MulAdd(s0_2_0, M4(5.348e-02, -5.033e-02, 5.387e-03, -7.003e-03, -6.266e-02, -1.490e-02, 3.515e-03, -1.263e-02, -8.737e-02, -4.585e-02, 2.635e-02, 6.413e-03, -3.922e-02, -3.672e-02, -6.578e-02, -1.005e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(2.279e-02, -1.132e-01, 7.109e-02, 1.417e-01, 9.290e-02, 1.695e-03, -5.438e-02, 5.071e-02, -4.328e-02, -9.292e-02, -2.855e-02, 1.258e-01, -4.447e-03, -9.529e-03, 4.352e-02, 7.758e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(-5.054e-03, -5.661e-02, -1.120e-01, -1.904e-03, -1.035e-03, 2.034e-02, 1.328e-02, 1.658e-02, -4.081e-03, -1.147e-01, -1.561e-02, 9.993e-03, 5.118e-02, 5.149e-03, -3.838e-02, 8.117e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(5.964e-02, -2.679e-02, -8.648e-02, 1.540e-02, -2.448e-02, 2.502e-02, 3.992e-02, 1.688e-02, -3.033e-02, -1.284e-02, -9.942e-03, -4.455e-02, -5.898e-02, 1.563e-03, -1.816e-02, -7.170e-04), r3);\n\tr4 = MulAdd(s0_2_0, M4(1.427e-02, 7.330e-03, -1.419e-02, 1.589e-02, -2.616e-02, 3.515e-02, 4.451e-03, -8.266e-02, -5.310e-02, -1.871e-02, 3.058e-03, 9.660e-04, -4.348e-02, -5.201e-02, 5.185e-04, -2.399e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(8.530e-04, 2.847e-02, -1.453e-02, -1.359e-02, -1.718e-02, -3.855e-02, 2.748e-02, 4.615e-03, -1.077e-02, 5.263e-02, -4.582e-02, -2.513e-02, -3.820e-02, 6.994e-03, 1.676e-02, -2.239e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(4.270e-03, 2.833e-02, 4.667e-02, -1.160e-01, -1.505e-02, 6.651e-02, -8.207e-03, 7.282e-02, 2.069e-02, -1.229e-02, -4.128e-03, 8.883e-02, 5.291e-02, -4.322e-02, 2.249e-01, -4.905e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(1.611e-01, 2.283e-04, -1.621e-01, 2.789e-02, 1.103e-02, -3.833e-03, -1.231e-01, -3.398e-02, -1.619e-01, 2.654e-02, -4.486e-02, 4.819e-02, 3.169e-02, 6.421e-02, 4.362e-02, 2.694e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-1.335e-01, 2.675e-02, -3.375e-02, 1.053e-01, -8.279e-03, -5.838e-02, -4.819e-02, -2.481e-04, -1.491e-01, 2.372e-02, 1.974e-02, 7.849e-03, 6.800e-02, 4.565e-01, 1.127e-01, -5.452e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-6.069e-02, 9.850e-02, 8.609e-02, -1.948e-01, 1.103e-01, -3.131e-02, -3.679e-02, -5.703e-01, -1.414e-01, -1.073e-01, -9.980e-03, -1.558e-01, -2.407e-02, -3.320e-02, -6.869e-02, 1.912e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(-6.624e-02, -1.114e-02, 2.127e-01, -1.204e-01, 6.656e-02, -4.784e-02, -2.329e-01, -5.592e-02, -1.190e-01, 2.085e-01, 1.061e-01, 5.054e-02, -1.016e-02, 3.002e-03, 7.726e-02, 4.338e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-8.664e-03, 2.906e-02, -5.764e-02, -1.303e-01, 1.352e-02, 1.783e-02, -8.837e-02, -1.756e-02, -9.241e-02, 4.203e-03, -7.346e-02, -8.259e-02, 5.677e-02, -6.276e-02, 2.730e-02, 3.718e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(2.661e-02, -4.743e-02, -1.294e-02, -9.678e-02, -2.457e-02, 2.285e-02, 1.086e-02, -1.612e-01, 2.104e-02, -2.546e-02, 3.155e-02, 2.620e-02, 8.873e-02, -2.692e-03, 5.363e-02, 1.347e-01), r4);\n\tr5 = MulAdd(s0_2_1, M4(-8.073e-02, 1.982e-04, 9.942e-02, 2.025e-02, 5.045e-02, 1.392e-02, -2.144e-02, 4.456e-03, -5.007e-02, 3.529e-02, -6.862e-02, 4.193e-02, 6.860e-02, 7.749e-04, 4.736e-03, -4.148e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-1.736e-01, -4.582e-02, -4.725e-02, 4.957e-02, 6.123e-02, -9.177e-02, -6.621e-02, 5.299e-02, 1.261e-02, -8.838e-02, -4.107e-02, 6.038e-02, 8.264e-02, 1.277e-01, 4.489e-02, 3.815e-03), r6);\n\tr7 = MulAdd(s0_2_1, M4(2.184e-01, 1.742e-01, 4.217e-01, 1.805e-02, 1.768e-02, 1.393e-02, -1.158e-02, 2.373e-03, -6.473e-02, 2.057e-01, 3.315e-01, 4.153e-02, 4.382e-02, -5.985e-02, -3.343e-02, 3.707e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-5.336e-02, -2.595e-02, 4.703e-02, 2.311e-02, -1.814e-02, 1.353e-01, 4.580e-02, 2.926e-04, 2.724e-02, -1.221e-02, -1.499e-03, 3.503e-02, -4.012e-03, -6.407e-02, -1.273e-01, -4.148e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(2.787e-02, -3.310e-02, 7.059e-03, 5.620e-02, -9.424e-02, -2.158e-02, -2.005e-02, -2.568e-01, -7.979e-02, -3.774e-02, -5.321e-02, 4.191e-02, 6.042e-02, 4.913e-03, 4.458e-03, 1.174e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.604e-02, -2.336e-03, -4.023e-02, 3.853e-02, 5.578e-02, -7.897e-03, -5.564e-02, 9.159e-02, 2.188e-03, 2.417e-02, 2.339e-02, 9.168e-02, 6.297e-02, -4.567e-02, 3.323e-02, -1.466e-01), r2);\n\tr3 = MulAdd(s0_2_2, M4(-2.511e-02, 2.439e-02, -3.204e-02, 5.687e-02, -2.274e-02, 1.420e-02, 1.392e-02, -5.182e-02, -2.631e-02, -1.257e-02, -6.875e-03, 6.769e-02, -2.528e-02, -7.059e-02, -2.277e-02, 3.236e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(-3.973e-02, -2.101e-02, -3.814e-02, -6.092e-02, -8.150e-02, -4.925e-03, -7.680e-03, -1.829e-02, -1.249e-02, 5.563e-02, 7.930e-02, 4.487e-02, -6.371e-02, -2.606e-02, -1.389e-02, 3.853e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(1.083e-02, 5.367e-02, 3.866e-03, 8.290e-03, 2.250e-02, 2.259e-02, 5.901e-03, 1.608e-02, -2.134e-02, 1.914e-02, 4.508e-02, 3.933e-02, -2.755e-02, 1.727e-02, -2.801e-02, -6.133e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-1.397e-01, 9.792e-02, -2.228e-02, -4.035e-02, 2.135e-02, -2.000e-01, 3.413e-02, 3.819e-03, -4.808e-02, 2.491e-02, -1.999e-02, 4.671e-02, 9.039e-02, -6.368e-02, 4.096e-02, 4.260e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(1.752e-01, 6.403e-02, 5.053e-02, 6.023e-02, 1.300e-01, -5.901e-02, 4.267e-02, 3.021e-02, -3.029e-01, 8.362e-02, 5.224e-02, 1.239e-02, -5.748e-02, 6.187e-02, 9.526e-03, 4.471e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(4.700e-02, 1.884e-02, 8.852e-03, -6.149e-03, -2.698e-02, -1.421e-02, 2.821e-02, 1.467e-02, -5.515e-02, 2.677e-02, -3.328e-02, 2.397e-02, -3.883e-03, -1.391e-02, 2.050e-01, -8.398e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.536e-01, 3.814e-02, 1.035e-01, 1.912e-02, 1.928e-05, -7.306e-02, 1.147e-02, -9.208e-03, 7.330e-03, -1.657e-02, 5.336e-02, -2.144e-02, 7.003e-02, -3.063e-02, -5.622e-02, 4.836e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-1.241e-01, -1.184e-01, 8.088e-03, -3.021e-02, -4.995e-02, 2.847e-02, -2.934e-02, 1.154e-02, -3.084e-02, 7.935e-02, -7.007e-02, 1.844e-02, 6.088e-02, -1.613e-01, -7.970e-02, -9.874e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(2.793e-02, 5.379e-03, -4.510e-02, -6.226e-02, -8.994e-02, 1.249e-02, 6.302e-02, 2.680e-02, -2.252e-01, -1.540e-03, -7.206e-03, 3.824e-02, -3.360e-02, 8.338e-02, 1.612e-03, -2.335e-03), r3);\n\tr4 = MulAdd(s1_0_0, M4(-4.367e-03, 1.827e-02, -2.930e-04, 2.005e-02, 1.785e-02, -2.100e-02, -2.178e-02, -1.919e-01, 3.026e-02, 3.232e-02, -4.618e-02, -1.207e-02, -3.210e-03, -7.679e-02, -4.943e-02, 2.919e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-7.526e-03, -4.135e-02, -6.328e-03, -3.731e-02, 1.135e-02, -1.862e-02, 7.496e-03, 4.172e-02, -1.153e-02, -4.456e-02, 1.761e-02, 1.029e-03, -4.917e-03, 3.233e-02, -2.284e-03, 4.675e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(1.542e-02, -4.505e-02, 2.397e-02, -5.087e-03, 1.696e-03, -4.820e-02, 2.641e-02, 3.951e-02, -1.289e-01, -1.091e-01, 6.579e-03, 7.416e-03, -1.595e-02, -3.028e-02, 9.734e-02, -7.118e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(1.222e-01, -4.276e-02, 3.915e-02, -4.162e-02, 7.934e-03, 8.072e-02, -2.811e-02, -1.253e-02, -1.042e-01, 3.222e-02, 5.780e-03, -4.854e-02, 6.794e-02, -4.089e-02, 8.404e-02, -5.458e-03), r7);\n\tr0 = MulAdd(s1_0_1, M4(-1.221e-01, 1.150e-02, 5.389e-03, 5.016e-02, -2.776e-02, 8.363e-02, 5.399e-02, 2.190e-02, -2.013e-01, 8.606e-03, -6.294e-02, 3.510e-02, 2.264e-02, 3.894e-01, 2.061e-01, 6.365e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(9.094e-02, 3.119e-02, 1.012e-02, 5.720e-02, -1.246e-01, -9.054e-02, -8.973e-02, -2.546e-01, -7.283e-02, -1.897e-02, 5.196e-02, 8.013e-02, 4.340e-02, 2.063e-02, -1.097e-02, -4.893e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-3.838e-01, 3.845e-02, 6.318e-02, -3.668e-02, 1.655e-01, 9.658e-02, -1.378e-03, 1.098e-01, -1.455e-01, -4.652e-02, -4.777e-02, -5.917e-02, -4.081e-02, 5.709e-02, -3.591e-02, -8.344e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-2.269e-01, -1.367e-02, 6.740e-02, -6.763e-02, 9.737e-02, 2.324e-02, 5.067e-02, 1.618e-01, -1.860e-01, -1.605e-02, -1.025e-02, -1.094e-01, -1.002e-01, 1.140e-01, 2.881e-02, -3.926e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(1.190e-02, -2.733e-02, 8.632e-04, 9.029e-02, -6.234e-03, 7.481e-02, -4.785e-02, -1.961e-01, -3.447e-02, 5.929e-03, 5.239e-02, 8.743e-03, -1.048e-02, -7.394e-02, 6.013e-02, -7.195e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(3.476e-02, 2.815e-03, 3.010e-02, 2.372e-02, 1.779e-02, 9.303e-02, -4.341e-02, 1.163e-02, -5.007e-03, 1.234e-01, -5.084e-03, -4.676e-02, 4.812e-03, 1.044e-01, 4.125e-03, 5.491e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-4.876e-02, -9.760e-02, 4.254e-02, 5.573e-02, -1.318e-01, 9.849e-02, 7.528e-03, 1.499e-01, 2.862e-02, -1.075e-02, -1.595e-02, 3.855e-02, -1.721e-02, -3.321e-02, 1.728e-01, 5.302e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(6.878e-02, -7.626e-02, 5.077e-03, -1.053e-02, -7.435e-02, 1.272e-01, -5.758e-02, 9.973e-02, -3.818e-02, 8.671e-03, -8.553e-02, 1.180e-01, -8.422e-02, -5.725e-02, -5.800e-03, 4.503e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(-1.595e-02, 7.691e-02, 5.116e-03, -1.576e-02, 1.904e-02, 5.215e-02, 2.093e-02, -1.652e-02, 1.970e-02, -2.534e-02, -2.548e-02, -5.128e-03, -4.598e-02, 1.753e-01, 3.988e-02, 8.458e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(1.568e-02, -1.212e-03, -1.069e-02, 1.835e-02, 8.689e-03, 1.650e-02, -3.258e-02, 9.454e-02, 2.309e-02, 2.508e-02, 2.680e-02, 1.055e-01, 3.575e-02, 3.265e-02, 9.124e-03, -1.420e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(4.014e-02, -7.397e-04, -2.311e-02, -1.283e-02, 1.843e-01, -1.544e-01, 5.800e-02, 7.841e-03, -2.036e-02, -6.962e-02, -4.115e-02, 2.533e-02, 9.927e-02, 1.050e-01, 3.652e-03, 1.576e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(6.273e-03, 2.200e-03, -5.072e-02, 6.044e-02, -2.218e-02, 1.236e-02, 8.000e-02, 8.166e-02, 2.931e-02, -8.812e-03, -9.364e-03, -1.726e-02, -1.059e-02, 3.772e-02, 3.234e-02, -4.005e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-3.054e-02, -3.126e-02, 3.406e-02, 1.373e-02, 1.930e-02, 1.051e-01, 2.569e-02, 6.290e-02, -3.429e-02, 3.856e-03, -2.065e-03, -3.620e-02, 3.973e-03, -2.765e-02, -1.378e-02, -6.284e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(-4.984e-03, 1.757e-02, -3.113e-02, 1.714e-02, -1.325e-02, 5.896e-02, -7.124e-02, 7.912e-02, -1.078e-02, -1.454e-02, -5.637e-03, 2.288e-03, 2.316e-02, 6.394e-02, 4.346e-02, 5.028e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(-3.355e-02, 3.796e-02, -3.747e-03, 1.905e-03, -9.193e-02, -7.477e-02, -1.627e-02, -1.240e-02, 5.168e-03, -4.408e-02, -8.030e-03, -2.287e-02, -1.803e-01, 3.315e-02, -2.586e-02, 4.400e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(1.593e-02, 4.005e-03, 2.858e-03, 2.896e-03, -8.189e-03, 5.147e-02, -1.318e-02, 4.886e-02, -1.302e-02, -1.635e-02, 7.111e-02, -2.193e-02, -1.789e-01, -5.463e-02, 3.043e-03, 1.990e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(5.084e-02, -1.680e-02, -7.123e-02, 3.187e-02, -1.170e-02, 8.788e-03, -6.418e-02, -4.451e-02, -1.351e-01, 4.480e-02, -6.568e-02, -4.508e-03, 1.691e-02, 2.675e-01, 2.510e-01, -1.132e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(-2.324e-01, 4.310e-02, -3.192e-01, -8.462e-02, 3.844e-02, -1.313e-01, 4.276e-02, 1.417e-01, 2.859e-02, 8.128e-02, -2.298e-01, 1.085e-01, 4.462e-02, 2.571e-02, 3.003e-02, -3.890e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(9.487e-02, 9.236e-03, 4.545e-02, -2.762e-02, -7.798e-02, 1.214e-01, 4.264e-02, 1.596e-03, 9.439e-02, 5.570e-02, 1.444e-01, 1.363e-01, -3.237e-02, -7.803e-02, -6.583e-02, -3.685e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(1.106e-01, -4.179e-03, 1.067e-01, -3.585e-02, -5.078e-02, 6.319e-03, -1.905e-01, -4.202e-02, -2.153e-01, 3.629e-03, -2.744e-01, -2.529e-01, 1.867e-02, 2.367e-01, 7.890e-02, 4.400e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(4.343e-02, -1.844e-02, 4.242e-02, -2.243e-01, -2.398e-02, -1.139e-01, -5.618e-05, -1.189e-01, -3.508e-03, 3.923e-02, 8.570e-02, -6.376e-02, 6.749e-02, 6.884e-03, 9.684e-04, 9.322e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-3.057e-02, -1.176e-02, 6.310e-02, 2.445e-02, -5.188e-02, -8.619e-02, 1.947e-02, -3.320e-03, -1.179e-01, 1.194e-01, -1.722e-02, 1.481e-02, 3.803e-02, -3.276e-02, -5.987e-03, 1.158e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(1.359e-02, -1.258e-01, -5.316e-02, 4.705e-02, -3.157e-02, -1.324e-01, -9.256e-02, 1.256e-01, 2.620e-02, -4.087e-01, -2.303e-01, 1.556e-01, -3.323e-02, -9.547e-02, -4.092e-01, 1.432e-01), r6);\n\tr7 = MulAdd(s1_1_0, M4(6.089e-02, 4.445e-04, 1.265e-01, -9.357e-03, 5.261e-02, 8.813e-02, 6.936e-02, -7.112e-02, -2.498e-01, 7.290e-02, -7.656e-02, 1.136e-01, 2.699e-02, -2.019e-02, 2.173e-02, 6.612e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-3.649e-01, -9.004e-02, -1.211e-02, 2.859e-02, -1.047e-01, -3.002e-02, -1.307e-02, 1.047e-01, -2.515e-01, -1.990e-01, -1.135e-01, 1.390e-02, 1.287e-01, 7.719e-02, -6.738e-01, 1.106e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.731e-02, -2.453e-01, -3.098e-01, -4.718e-01, -2.292e-01, -1.363e-01, 2.035e-01, 1.407e-01, 2.435e-01, -6.287e-02, 1.542e-02, -1.543e-01, -8.809e-02, -3.101e-02, -2.011e-02, 8.320e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(-7.073e-01, 2.820e-01, -3.753e-02, 1.922e-01, -7.778e-02, -2.464e-01, -2.349e-01, -1.655e-01, -2.244e-02, -1.657e-01, -9.490e-03, 1.403e-02, -2.582e-02, 2.458e-01, 4.825e-03, 9.156e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(1.469e-01, 8.603e-03, 2.729e-02, 6.490e-02, 3.539e-02, 1.989e-02, 8.058e-03, 4.352e-02, -6.720e-02, -2.752e-02, -2.544e-02, -2.254e-01, 3.150e-03, -6.812e-01, -1.072e-01, -3.605e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.174e-01, 1.558e-01, -1.133e-01, -2.669e-01, 2.397e-01, -6.308e-02, -7.623e-03, 9.065e-02, -2.430e-01, 1.743e-02, -1.298e-02, -7.682e-02, -1.541e-01, 1.258e-01, -9.419e-02, -2.521e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(1.520e-01, -8.180e-03, 8.433e-03, 2.268e-01, 1.802e-01, -5.461e-02, 1.434e-02, 5.285e-02, -8.430e-02, 8.704e-02, 1.228e-01, 4.626e-02, -1.841e-01, 3.834e-01, 1.256e-02, -3.002e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(3.403e-02, -4.284e-02, -7.722e-02, 1.797e-01, -4.103e-02, 6.583e-02, 2.423e-02, 5.975e-02, 2.749e-01, -3.771e-01, -1.284e-01, 8.671e-02, 2.804e-01, 8.367e-04, 7.348e-01, -2.336e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(-5.449e-01, 4.078e-02, -3.283e-01, -9.162e-03, 1.703e-01, 4.338e-02, 3.278e-02, -4.725e-02, 2.962e-01, -8.791e-04, -1.364e-01, 8.539e-02, 1.166e-01, 4.273e-02, -1.991e-01, -5.059e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(3.060e-02, 1.215e-01, -2.612e-02, 7.030e-04, 1.889e-02, 4.142e-02, -1.020e-01, -8.402e-02, 4.987e-02, 5.880e-02, 3.468e-02, 5.607e-03, -1.141e-01, -4.617e-01, -8.723e-02, 3.378e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(-1.994e-01, -1.580e-02, -8.129e-02, 8.227e-02, 3.363e-02, 1.294e-01, 5.079e-02, 2.855e-01, -2.248e-02, -6.509e-02, -2.069e-02, -4.118e-02, 6.151e-02, 8.666e-02, -7.089e-02, 9.844e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-2.863e-01, 6.114e-02, -7.523e-02, 5.513e-02, 4.499e-02, -1.396e-01, 1.078e-01, -9.061e-02, -1.661e-02, 6.287e-02, -1.772e-01, -6.615e-02, -1.954e-01, -6.409e-02, 9.669e-02, 1.545e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(-4.792e-02, -7.260e-03, -1.708e-02, 4.527e-02, 9.495e-02, 1.045e-03, -2.673e-02, 6.279e-02, 2.539e-02, -3.220e-03, 8.853e-03, 7.624e-02, -7.348e-02, 9.217e-02, 1.205e-01, -2.797e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-6.892e-02, 2.317e-02, -9.994e-02, -1.641e-01, 4.409e-02, 4.822e-02, 9.058e-02, 9.482e-02, 6.519e-02, -2.316e-02, -1.041e-02, -3.749e-02, -6.368e-02, 1.833e-02, 5.485e-02, 2.331e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(2.883e-02, 9.430e-03, 2.655e-02, -2.544e-02, 4.041e-02, 4.091e-02, -7.678e-02, 8.466e-02, 1.182e-02, -2.691e-02, 6.221e-03, -3.962e-04, 5.872e-02, 1.888e-02, 2.473e-02, 4.176e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(5.123e-02, 3.380e-02, 1.385e-02, -2.751e-02, 7.014e-02, 2.279e-02, -5.803e-02, 7.037e-03, -1.689e-02, 6.599e-02, 2.737e-02, -4.241e-02, 7.788e-02, 6.181e-02, -1.662e-02, -5.089e-03), r6);\n\tr7 = MulAdd(s1_1_2, M4(1.472e-02, 1.333e-01, 5.867e-02, 1.351e-02, 2.338e-02, 1.560e-01, 5.883e-02, 3.674e-02, -4.854e-02, 4.696e-02, -5.369e-02, -2.109e-02, 1.691e-01, 4.282e-02, 6.838e-02, -3.160e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(9.276e-02, -3.172e-02, 2.278e-02, -6.093e-02, -2.366e-02, -3.094e-02, -5.361e-02, 8.174e-03, 1.861e-02, -1.793e-02, -3.927e-02, 4.695e-02, -5.494e-02, 7.816e-02, 7.544e-02, -2.145e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(3.802e-02, -2.710e-02, -2.361e-01, -1.087e-01, 1.212e-01, -1.266e-02, -3.429e-02, -7.721e-02, 1.216e-01, 6.151e-02, 7.201e-02, -1.948e-01, -6.585e-02, -5.750e-02, 1.195e-01, 6.182e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(-1.084e-01, 6.844e-02, 4.676e-02, -7.644e-02, -7.164e-02, 3.309e-03, 7.243e-03, -3.872e-02, -3.525e-02, -6.655e-02, -7.129e-02, -1.352e-02, 1.567e-02, 1.208e-02, -9.707e-03, 6.109e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(4.236e-02, 2.161e-02, 4.911e-02, 2.265e-02, 2.474e-02, 8.378e-03, 1.222e-02, -1.549e-03, -1.754e-02, -1.182e-02, -1.690e-03, -1.106e-02, -8.077e-04, 1.975e-03, -1.328e-03, 3.465e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-1.492e-02, -1.425e-02, -2.305e-03, 1.920e-01, 2.841e-04, 1.409e-02, -3.874e-03, -7.151e-03, -9.165e-03, 2.497e-02, 3.632e-02, -2.461e-02, -9.732e-03, -4.903e-02, -1.703e-02, 2.683e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(7.715e-02, 2.594e-02, -6.410e-02, -6.241e-02, 2.881e-03, -1.485e-02, -1.268e-02, 4.859e-03, 3.494e-02, 2.826e-02, 4.475e-02, 5.280e-03, -3.280e-02, 2.178e-02, -1.496e-03, -5.826e-03), r5);\n\tr6 = MulAdd(s1_2_0, M4(1.215e-01, -5.318e-02, 2.436e-02, -1.309e-01, 6.115e-02, 8.036e-03, -3.347e-02, -5.667e-02, -4.609e-02, 2.812e-02, -3.180e-02, -1.145e-01, 1.597e-02, 1.077e-01, -2.998e-01, -7.859e-03), r6);\n\tr7 = MulAdd(s1_2_0, M4(-1.308e-02, -4.367e-02, 1.455e-01, 3.499e-02, 8.389e-02, -2.040e-02, -2.365e-02, -1.971e-02, -3.605e-02, 3.921e-02, 2.086e-01, 2.506e-02, 7.797e-02, 8.459e-02, 4.057e-02, 8.035e-04), r7);\n\tr0 = MulAdd(s1_2_1, M4(-1.807e-01, -1.166e-01, -3.871e-02, 3.804e-02, 7.383e-02, 2.521e-02, 3.520e-02, -5.788e-03, 2.761e-02, 3.309e-02, -4.117e-03, 2.830e-02, 1.096e-02, -3.570e-01, -4.310e-02, -7.071e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(9.420e-02, -2.437e-01, -3.752e-01, 7.079e-01, 6.222e-02, 8.590e-03, -2.306e-02, -2.322e-01, 9.291e-04, -4.095e-02, 1.320e-03, -2.141e-01, -2.801e-02, 1.450e-02, -2.619e-02, 2.044e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(2.654e-01, -1.063e-01, -8.734e-02, 2.941e-01, 2.127e-02, 4.815e-03, 6.994e-03, 7.340e-02, 2.823e-02, 9.133e-04, -1.923e-02, 8.428e-03, 3.289e-02, 1.166e-01, 5.721e-02, 8.406e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(-7.418e-02, -2.698e-02, 2.236e-01, 2.280e-01, -9.818e-03, -1.763e-02, -7.449e-02, -7.249e-02, 2.358e-02, 1.347e-02, 1.393e-01, 2.829e-02, 3.604e-02, 1.192e-01, 1.636e-02, 5.082e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(6.348e-02, -1.344e-02, 2.860e-03, 1.222e-01, -1.249e-02, -5.742e-03, 1.047e-02, -1.572e-02, -2.249e-02, -2.168e-03, 1.712e-02, 5.501e-02, 4.916e-02, -4.028e-03, 5.380e-03, -1.128e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-2.110e-01, -8.790e-02, 3.262e-01, -1.210e-02, 3.512e-02, -2.978e-02, -2.919e-02, 7.415e-02, 3.771e-02, -2.618e-02, 5.400e-02, 4.615e-03, 2.444e-02, 2.411e-02, -1.476e-02, 6.205e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(1.850e-02, 5.502e-01, 6.280e-03, -1.326e-02, 3.068e-02, -9.801e-02, 2.372e-03, 1.786e-02, -6.864e-02, -1.540e-01, 5.600e-03, -5.007e-02, 1.683e-01, 6.454e-02, -9.130e-02, -1.605e-04), r6);\n\tr7 = MulAdd(s1_2_1, M4(4.863e-01, -5.516e-01, -7.441e-01, -8.045e-02, -8.304e-02, -1.236e-01, -1.672e-01, -3.919e-02, -6.082e-02, -4.462e-02, -1.124e-02, -1.767e-02, -2.127e-02, -8.644e-03, 4.518e-02, -8.600e-03), r7);\n\tr0 = MulAdd(s1_2_2, M4(5.157e-02, 4.671e-02, 3.828e-02, -2.171e-02, -1.050e-01, -4.870e-02, -6.112e-02, -1.548e-02, 2.514e-02, 2.407e-02, -2.115e-03, -7.722e-03, -1.159e-04, -4.612e-02, 2.749e-02, -1.659e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-6.879e-03, -1.204e-02, -2.930e-02, 9.561e-02, 2.224e-02, -8.274e-02, -6.408e-02, 1.050e-01, -3.329e-02, -2.339e-02, -1.796e-02, -2.833e-02, 6.685e-02, 4.649e-02, -1.025e-02, 6.351e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(2.553e-02, -3.173e-02, 8.386e-02, -3.322e-02, -4.489e-02, -5.457e-02, 3.843e-03, -6.910e-03, -1.538e-02, -2.554e-02, 1.329e-02, 3.626e-02, 8.379e-02, -6.788e-02, 1.867e-02, -5.913e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(4.544e-02, -2.266e-02, -8.291e-02, -6.874e-02, -2.362e-02, -1.754e-02, 3.320e-02, -1.043e-03, 2.129e-02, -5.464e-03, 1.660e-02, 4.435e-03, -2.877e-02, 1.072e-01, -4.050e-02, 3.472e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(7.569e-03, -2.871e-02, 4.966e-02, 6.721e-02, 3.951e-02, 4.684e-02, 1.930e-02, -3.562e-02, 6.661e-03, -2.608e-04, -1.019e-02, 3.642e-02, -4.792e-02, -3.907e-02, -9.465e-03, 7.300e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(1.701e-02, -2.852e-02, -5.717e-02, -1.118e-02, -2.960e-02, -3.029e-02, 5.892e-03, -2.105e-02, 3.971e-05, -2.607e-03, -1.507e-02, -7.347e-03, -1.329e-02, 3.392e-02, 4.653e-02, 5.305e-03), r5);\n\tr6 = MulAdd(s1_2_2, M4(6.069e-02, -1.147e-01, -9.518e-03, 8.367e-02, 1.471e-02, 1.839e-02, -1.548e-02, 1.619e-02, 6.354e-03, 4.209e-02, -5.968e-04, -2.019e-02, -2.907e-03, -1.041e-02, -5.102e-02, 3.852e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(1.372e-01, -1.323e-01, 2.007e-01, -2.774e-02, 9.515e-02, 2.826e-02, -1.779e-02, -3.421e-02, 4.356e-02, -6.281e-02, -3.813e-02, -1.615e-03, -4.875e-02, 4.054e-02, -2.544e-02, 1.786e-03), r7);\n\tr0 = max(r0, 0.0);\n\tT8[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT9[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT10[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT11[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT12[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT13[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT14[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT15[gxy] = r7;\n}\n\n//!PASS 9\n//!DESC conv8 (32x32)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T8, T9, T10, T11, T12, T13, T14, T15\n//!OUT T0, T1, T2, T3, T4, T5, T6, T7\n\n#define L0(x, y) V4(O(T8, x, y))\n#define L1(x, y) V4(O(T9, x, y))\n#define L2(x, y) V4(O(T10, x, y))\n#define L3(x, y) V4(O(T11, x, y))\n#define L4(x, y) V4(O(T12, x, y))\n#define L5(x, y) V4(O(T13, x, y))\n#define L6(x, y) V4(O(T14, x, y))\n#define L7(x, y) V4(O(T15, x, y))\n\nvoid Pass9(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0, r3 = 0.0, r4 = 0.0, r5 = 0.0, r6 = 0.0, r7 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.699e-03, -8.469e-02, -2.809e-02, -1.436e-02, -9.688e-03, 3.844e-02, -2.903e-02, -1.621e-02, 4.823e-03, -1.008e-02, 1.460e-01, -1.153e-02, 5.466e-03, -1.808e-03, 1.101e-02, -1.959e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.421e-03, -1.247e-02, -8.520e-03, -1.411e-02, -8.387e-03, -6.458e-04, -1.194e-01, -9.637e-03, 1.340e-02, -4.468e-03, -9.008e-02, -7.208e-02, -2.189e-02, -1.564e-02, 1.241e-02, -1.288e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.295e-02, 1.679e-02, -1.126e-01, 6.744e-03, -3.260e-03, -3.078e-03, -3.516e-02, 3.482e-02, -6.340e-03, -1.033e-01, -7.785e-02, 5.008e-03, 6.546e-03, -2.663e-02, 5.750e-02, -1.442e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(1.185e-01, -1.255e-02, 5.312e-02, 2.035e-02, 9.446e-03, 2.800e-02, 5.457e-02, 8.967e-03, -8.313e-03, 3.729e-03, -3.575e-02, -2.098e-02, 2.378e-02, -5.536e-02, -3.730e-02, -5.650e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.003e-03, -8.680e-03, 1.428e-02, 4.403e-02, 2.544e-03, -5.710e-02, -2.866e-02, -2.725e-02, -1.404e-02, -9.739e-02, 2.150e-02, 2.872e-02, 2.191e-02, 1.010e-03, -2.136e-03, 2.062e-03), r4);\n\tr5 = MulAdd(s0_0_0, M4(8.176e-02, -1.132e-02, 7.891e-02, 1.751e-02, -2.786e-02, 1.969e-02, -1.248e-02, -7.455e-02, 1.694e-02, -1.903e-02, 3.067e-02, -1.028e-01, -1.179e-02, -1.604e-02, 4.949e-03, -5.356e-03), r5);\n\tr6 = MulAdd(s0_0_0, M4(3.810e-03, 1.612e-01, 6.293e-03, -1.687e-02, -8.729e-02, -3.004e-02, -1.934e-02, -1.159e-01, 9.511e-02, -2.278e-02, -9.675e-03, 2.156e-03, 2.469e-03, -6.456e-02, -1.619e-03, 1.351e-02), r6);\n\tr7 = MulAdd(s0_0_0, M4(-1.543e-02, 1.783e-02, 9.713e-05, -1.530e-02, 4.569e-04, 1.600e-02, -1.919e-01, -3.560e-02, -2.641e-03, -2.510e-02, 3.798e-02, -4.583e-03, -1.654e-02, 2.909e-02, 1.606e-03, -3.968e-04), r7);\n\tr0 = MulAdd(s0_0_1, M4(1.498e-02, -4.500e-02, -1.612e-03, 1.290e-02, 2.796e-02, 1.123e-02, -6.008e-02, -3.173e-03, -1.190e-02, -5.093e-02, 8.907e-02, 3.545e-02, -1.968e-02, -8.038e-02, -2.584e-02, -7.064e-03), r0);\n\tr1 = MulAdd(s0_0_1, M4(-6.168e-03, -2.135e-02, -1.314e-03, -5.175e-02, -1.690e-02, 1.482e-03, 1.757e-02, 9.896e-02, 1.470e-02, -5.153e-04, 1.566e-01, -8.661e-02, -6.274e-02, -3.820e-02, -6.212e-02, -5.947e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(-1.689e-02, 1.361e-02, 1.323e-01, -2.334e-02, 7.283e-03, 1.765e-02, 1.005e-02, -3.542e-02, 7.216e-04, 1.837e-01, 1.960e-02, -7.935e-02, 1.081e-02, 3.796e-02, 1.862e-02, -1.397e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-6.468e-02, -9.270e-02, 2.660e-01, -4.481e-02, -2.135e-02, -1.941e-02, -1.402e-02, -5.778e-03, -1.216e-02, -1.097e-01, -2.874e-02, -3.360e-02, -4.352e-03, 1.169e-01, 1.919e-01, 6.316e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(5.551e-03, 1.691e-02, 5.391e-02, 4.769e-02, -6.248e-03, 7.670e-02, -2.998e-02, -9.572e-03, 1.664e-02, -1.002e-01, 6.892e-03, 4.208e-02, -1.073e-02, -1.482e-02, -5.035e-02, 3.161e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-7.837e-02, -5.762e-02, 2.588e-02, 1.190e-03, 1.629e-05, -6.514e-02, -4.003e-02, 2.470e-02, 2.934e-03, -2.659e-02, 3.923e-02, 1.111e-01, 2.081e-02, -2.767e-03, -5.492e-02, -1.192e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-1.977e-03, -1.291e-01, 1.715e-02, -1.581e-02, 1.121e-01, -2.428e-02, -6.809e-02, -9.446e-02, -1.590e-02, -5.760e-02, 3.384e-02, -4.978e-02, -1.062e-02, 2.269e-01, 3.883e-03, -1.149e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(6.802e-03, -2.313e-02, 1.765e-02, 5.141e-02, -2.540e-02, -6.824e-03, 1.229e-01, 7.593e-03, -1.079e-03, 5.059e-03, 1.301e-01, -1.993e-02, -2.756e-02, -6.238e-02, -4.731e-03, -4.532e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-2.262e-03, 9.568e-03, -2.101e-02, 2.459e-02, 2.635e-03, 1.860e-02, 6.416e-03, -1.796e-02, -1.743e-02, 6.161e-03, 6.186e-02, 1.903e-02, 4.618e-03, -4.598e-02, 1.335e-02, 1.672e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-6.632e-03, -2.284e-03, -7.202e-03, -2.224e-04, -3.027e-04, 1.298e-02, 3.224e-02, -1.482e-02, 2.178e-02, 1.487e-03, -1.331e-03, -6.711e-02, -1.386e-02, 1.791e-02, 1.248e-02, -2.280e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-4.250e-03, -2.879e-05, -1.668e-02, 1.740e-02, -2.715e-03, -2.549e-02, -2.012e-02, -3.787e-02, 6.215e-03, -1.887e-02, 8.407e-02, -1.643e-02, 1.722e-02, 3.511e-03, 3.259e-02, -4.195e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(2.066e-02, 3.377e-03, 1.003e-03, -6.821e-03, -4.450e-03, 1.936e-02, 2.354e-02, 2.950e-02, 5.354e-03, 1.308e-03, -4.660e-02, 6.036e-03, 1.148e-02, 3.595e-02, -6.962e-02, -1.297e-01), r3);\n\tr4 = MulAdd(s0_0_2, M4(2.821e-02, -1.127e-02, 6.666e-02, 2.834e-02, 7.572e-03, 6.950e-02, -1.171e-02, -2.118e-03, 2.965e-03, -1.059e-01, -3.828e-02, -8.175e-03, -2.447e-02, -3.236e-02, -8.085e-02, -1.255e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(3.861e-02, 8.379e-02, 1.768e-02, -1.292e-02, -2.937e-02, 2.562e-02, -5.570e-03, 6.205e-02, -1.408e-02, -4.589e-03, 8.398e-03, 3.898e-02, -1.184e-01, -1.089e-01, -3.724e-02, 4.776e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(-5.713e-03, 1.301e-01, 1.674e-02, 1.037e-02, 1.018e-02, -1.072e-02, 8.793e-03, 1.013e-01, 6.641e-03, 4.234e-02, 3.341e-02, 1.800e-02, 9.361e-03, -3.856e-01, -4.895e-02, -7.927e-03), r6);\n\tr7 = MulAdd(s0_0_2, M4(2.867e-03, 2.880e-02, -3.307e-03, -8.394e-03, 3.330e-03, 6.602e-03, -3.333e-02, 1.882e-02, 3.689e-02, 5.543e-03, -8.959e-02, 4.093e-03, -3.608e-02, 1.766e-02, 4.703e-03, 3.404e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-7.695e-02, 1.028e-01, -7.776e-03, 1.731e-02, -5.638e-02, -3.786e-02, 1.158e-01, -5.241e-04, 4.297e-02, 2.739e-03, -9.262e-02, -1.888e-02, -2.136e-02, 1.182e-02, -1.329e-02, 4.583e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(4.433e-02, -1.109e-03, -2.135e-02, 2.199e-02, -1.485e-02, 7.955e-03, -7.692e-02, -7.961e-03, 1.355e-02, 4.291e-03, 1.161e-01, 9.199e-02, -1.276e-02, 2.787e-02, -6.851e-02, 1.502e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(6.104e-03, 2.877e-02, 1.681e-01, 1.651e-01, -3.314e-03, 2.237e-02, 6.270e-03, 8.370e-03, -7.529e-03, -4.417e-02, 7.847e-02, 4.877e-02, -3.244e-03, -9.077e-03, -1.187e-01, -1.052e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.313e-01, 4.485e-02, 9.546e-02, 5.868e-02, -1.835e-02, -1.393e-02, -5.299e-03, 6.230e-03, -1.730e-02, -4.669e-03, -1.240e-02, 1.638e-03, -1.277e-01, 1.594e-02, 9.614e-03, -7.250e-03), r3);\n\tr4 = MulAdd(s0_1_0, M4(-4.032e-02, -1.819e-03, -1.806e-03, 4.128e-02, -4.360e-03, -6.847e-03, -1.643e-02, -6.599e-03, 1.633e-02, 6.178e-02, -1.922e-02, 2.156e-02, -4.845e-02, -5.208e-02, 7.400e-03, 8.491e-03), r4);\n\tr5 = MulAdd(s0_1_0, M4(5.312e-02, 3.228e-02, -1.501e-01, 4.825e-02, 3.298e-03, 5.614e-03, 1.036e-02, 7.007e-02, 2.138e-02, -2.286e-02, -6.909e-02, -9.997e-02, 3.655e-02, 2.680e-03, 1.842e-02, -6.811e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(3.871e-02, 2.717e-01, -2.313e-02, -1.331e-02, -8.474e-02, -5.280e-02, -3.338e-03, 8.839e-02, 1.304e-01, -1.889e-02, 2.070e-02, 4.677e-02, -1.115e-02, 3.237e-02, 7.712e-03, 1.533e-03), r6);\n\tr7 = MulAdd(s0_1_0, M4(-9.905e-02, -2.476e-02, 4.041e-02, -9.551e-02, -2.033e-02, 6.192e-04, 7.983e-02, 4.453e-02, 8.156e-03, 1.319e-03, 2.065e-02, 5.971e-02, 4.240e-03, -3.854e-02, 1.376e-02, 7.625e-03), r7);\n\tr0 = MulAdd(s0_1_1, M4(-2.793e-02, 1.714e-01, 6.908e-02, 6.031e-02, 7.940e-02, 3.075e-02, 4.463e-01, 4.649e-02, -1.550e-02, 3.415e-02, -3.262e-01, 4.916e-02, -2.183e-01, -1.371e-01, 5.525e-02, -7.968e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(9.655e-02, 7.905e-02, 7.103e-02, 9.075e-03, 2.166e-02, -1.508e-02, 3.367e-01, 9.267e-02, 3.410e-02, -3.968e-02, -2.144e-01, 1.694e-01, 3.352e-01, 7.456e-02, 1.179e-01, 3.709e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.923e-01, -3.214e-02, 1.993e-02, 3.425e-01, -7.675e-03, 9.736e-02, 2.920e-02, 4.671e-02, 4.858e-02, 2.527e-01, -4.861e-02, 2.575e-02, -3.344e-01, 1.888e-02, 1.681e-01, 2.723e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.187e-01, -2.439e-01, -8.371e-02, -2.545e-01, 2.996e-02, -4.522e-03, -6.241e-03, -2.458e-02, 7.709e-04, -7.349e-04, -8.141e-02, -3.270e-02, 1.876e-01, -1.581e-01, -1.361e-01, 3.034e-03), r3);\n\tr4 = MulAdd(s0_1_1, M4(-7.499e-02, -7.396e-02, 3.778e-01, -1.393e-01, 3.482e-02, 8.613e-02, 9.501e-03, 8.498e-02, 4.205e-02, 6.409e-02, 8.159e-02, -9.841e-03, -1.127e-01, 8.768e-02, -4.210e-02, 6.256e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(1.785e-01, -2.569e-01, 1.865e-01, 6.057e-02, -2.029e-02, -7.398e-02, 5.134e-02, 1.392e-01, 1.146e-01, -1.938e-02, 3.057e-02, 9.810e-02, -1.488e-01, 1.735e-01, 6.518e-02, 1.519e-01), r5);\n\tr6 = MulAdd(s0_1_1, M4(7.943e-02, -5.684e-01, -1.251e-01, 7.435e-02, 4.663e-01, -7.157e-02, 3.748e-02, 2.493e-02, -5.254e-01, -4.339e-02, 2.835e-02, 1.311e-01, 1.195e-01, 1.785e-01, -1.798e-01, 1.452e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(2.789e-01, 3.529e-02, -7.248e-03, 6.179e-02, -3.372e-02, -9.129e-02, -1.159e-01, -3.672e-02, 6.359e-02, 4.435e-02, 1.182e-01, -1.277e-01, 3.821e-01, -1.597e-01, 5.383e-02, 4.842e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-3.810e-03, -1.467e-02, -2.451e-02, 8.090e-02, 1.457e-02, 3.079e-02, 9.483e-02, 4.081e-04, -3.342e-02, -1.910e-02, -6.059e-03, -1.726e-02, -2.844e-02, 6.035e-02, -3.651e-02, 2.003e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-5.630e-03, -3.369e-02, -2.332e-02, 2.467e-03, 3.852e-03, -1.151e-02, 1.192e-02, -5.057e-03, 1.707e-02, -1.560e-02, 8.377e-02, 6.794e-02, 6.491e-03, -5.944e-02, -4.331e-02, -2.757e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.198e-02, 1.228e-03, -4.321e-02, -8.007e-02, -4.745e-03, -4.295e-02, -1.600e-02, -4.860e-03, 3.046e-02, -5.179e-02, 2.404e-02, 1.176e-02, 5.522e-02, 7.775e-03, 2.789e-02, -1.186e-01), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.469e-02, 6.047e-03, 1.135e-01, 7.210e-02, 2.631e-02, -1.640e-02, -5.382e-02, 7.730e-03, -1.571e-02, -2.678e-02, -9.058e-02, -7.554e-02, -3.470e-02, 3.152e-02, 1.061e-01, 1.423e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(-2.342e-02, -2.418e-02, -1.612e-02, -1.386e-02, 1.631e-02, -5.535e-02, -1.086e-02, -2.878e-02, -3.901e-02, 1.033e-01, 3.946e-02, 4.215e-02, -2.290e-02, 6.071e-03, 4.253e-02, -1.201e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(5.218e-02, -1.304e-02, 5.834e-02, -1.248e-02, -1.885e-02, 2.017e-02, 5.088e-04, 1.466e-02, 2.580e-03, 7.419e-02, -3.245e-02, 2.054e-01, 5.049e-02, -3.418e-01, 6.925e-02, 4.300e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(1.797e-02, 2.617e-01, 8.777e-03, 6.353e-03, -1.480e-01, -3.515e-02, 1.531e-02, -4.529e-02, -2.842e-01, -9.357e-02, -4.251e-02, 1.586e-02, 1.082e-02, 1.477e-01, -8.638e-02, 2.242e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-3.052e-02, 1.294e-01, -7.182e-03, -1.280e-01, 1.731e-03, -2.351e-02, 4.183e-02, 2.458e-02, 4.285e-02, 1.209e-01, -9.302e-02, 1.138e-02, -7.615e-02, 3.415e-01, -1.529e-02, -2.030e-01), r7);\n\tr0 = MulAdd(s0_2_0, M4(3.628e-02, 4.814e-02, 2.438e-02, 5.156e-02, 1.209e-02, 1.628e-02, 1.480e-02, -1.046e-02, 6.711e-03, 2.130e-02, 2.986e-02, 6.356e-03, -1.684e-02, -5.087e-02, 7.078e-03, -1.362e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.242e-02, -3.280e-02, 2.880e-02, -7.491e-03, -2.699e-03, -7.844e-05, 1.111e-01, -2.336e-02, -6.763e-03, 4.281e-03, 3.393e-02, -7.288e-03, -1.471e-02, -2.276e-02, 2.713e-02, 7.440e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(7.278e-03, 1.472e-02, 4.664e-02, -1.262e-03, -5.761e-04, -2.055e-03, -1.574e-02, -4.532e-02, -1.279e-02, -6.470e-02, 5.489e-02, -1.962e-02, 4.843e-03, 5.377e-04, 1.144e-02, 1.048e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(2.827e-02, 5.928e-03, 4.449e-03, -1.559e-02, 2.128e-02, 2.520e-02, 1.208e-02, 1.506e-02, 6.987e-03, -1.048e-03, 2.735e-02, 1.429e-02, -1.969e-02, 2.400e-02, -3.150e-03, 2.652e-03), r3);\n\tr4 = MulAdd(s0_2_0, M4(-4.754e-02, -1.795e-03, -1.376e-02, 2.137e-02, -2.133e-02, 4.873e-02, -4.877e-04, 1.541e-02, 1.477e-02, 5.012e-02, -2.407e-03, -1.931e-04, 1.561e-02, 6.019e-02, -2.203e-02, 8.870e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(4.085e-03, -5.556e-03, 1.008e-01, -1.110e-02, 6.892e-03, 3.749e-02, -7.754e-03, 6.630e-03, 2.543e-02, -6.010e-03, 4.693e-02, -7.107e-02, -1.837e-02, 4.582e-03, -3.009e-02, -9.475e-04), r5);\n\tr6 = MulAdd(s0_2_0, M4(-1.993e-02, 3.766e-01, 5.842e-02, 9.719e-04, 2.434e-02, 5.985e-02, -2.322e-03, 1.472e-03, -4.217e-03, -7.487e-02, 5.695e-03, -5.673e-02, 4.193e-02, -9.957e-02, -1.829e-02, 4.347e-03), r6);\n\tr7 = MulAdd(s0_2_0, M4(-5.208e-03, -3.198e-02, 2.260e-02, -2.297e-01, 9.742e-03, 2.219e-02, 1.455e-02, -2.079e-02, 2.087e-02, -9.815e-03, 1.572e-02, -3.888e-03, -2.436e-02, 6.718e-03, 1.047e-02, -3.774e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(9.561e-02, 5.823e-02, 3.651e-02, 1.333e-01, -3.569e-02, 3.852e-02, -7.054e-02, -2.424e-02, 7.435e-02, -4.082e-02, -2.628e-01, -1.127e-02, 1.224e-01, 4.786e-02, 1.018e-02, -4.354e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(7.653e-02, 3.392e-03, -4.354e-03, 2.130e-02, 6.084e-03, 2.059e-02, -8.031e-02, -5.139e-02, 5.362e-03, -3.162e-02, 1.616e-01, -1.303e-02, 6.402e-04, 4.291e-02, -1.598e-02, 1.597e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.891e-02, 4.092e-03, 1.514e-02, -9.042e-02, -5.240e-04, -5.108e-02, -9.487e-03, -1.510e-02, 1.142e-03, 2.534e-02, -5.658e-02, 7.912e-03, -4.678e-03, -1.024e-02, 5.881e-02, -1.143e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(1.037e-01, -1.291e-02, -1.918e-02, -2.232e-03, -3.614e-02, 1.710e-02, 3.725e-02, 1.300e-02, -8.317e-02, -8.284e-03, -2.672e-02, -7.163e-05, 3.699e-02, 3.385e-02, 2.497e-02, -9.703e-03), r3);\n\tr4 = MulAdd(s0_2_1, M4(3.140e-01, 1.939e-02, -1.042e-02, 1.591e-02, 1.264e-01, 4.594e-02, 4.283e-03, -1.565e-02, -1.849e-01, 1.528e-01, -1.416e-02, -6.418e-03, -4.538e-02, 1.157e-02, -1.976e-02, -8.701e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(8.481e-02, 9.486e-02, -1.295e-01, 2.643e-02, 1.793e-02, -1.226e-02, -4.034e-03, 2.151e-02, -1.857e-02, -1.016e-02, -1.853e-02, 1.046e-01, -1.097e-02, 1.644e-02, -2.049e-01, -1.572e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(2.478e-02, -3.041e-01, 2.131e-01, -1.737e-03, 5.509e-02, -1.471e-02, -6.646e-03, 4.506e-02, 9.290e-02, -3.406e-02, 1.244e-02, -1.275e-01, -2.797e-02, -3.512e-01, 5.746e-02, 1.904e-03), r6);\n\tr7 = MulAdd(s0_2_1, M4(1.378e-02, 1.163e-01, 1.670e-02, 1.925e-01, 7.738e-03, 2.968e-03, -1.560e-02, -2.029e-02, 9.760e-03, 7.108e-03, -4.986e-03, 6.084e-02, -4.902e-02, -8.715e-02, -1.951e-02, 8.421e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-1.402e-02, -7.690e-04, -7.955e-03, 3.292e-02, -7.628e-03, -2.311e-02, 1.787e-02, -3.906e-03, 7.501e-03, -1.468e-02, -9.610e-03, 6.064e-03, 2.593e-02, 3.627e-02, 9.900e-02, 9.448e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-1.468e-02, -2.938e-02, 1.079e-02, 5.997e-03, 8.251e-03, -1.313e-02, -4.292e-02, -1.583e-02, 2.038e-02, -1.641e-02, -1.415e-02, -2.185e-02, -3.922e-02, -5.870e-03, 7.757e-02, 3.418e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(2.018e-02, -1.475e-03, 7.505e-03, 3.057e-02, 3.170e-03, 4.197e-03, 1.732e-02, 7.764e-04, 1.374e-02, 7.973e-03, 3.437e-02, 1.059e-02, 1.150e-02, 2.091e-02, -1.136e-02, 3.019e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(-3.644e-03, -4.284e-03, 1.739e-02, -4.026e-02, -3.327e-02, 6.152e-03, -2.266e-02, 6.964e-03, -5.974e-02, -4.827e-03, 2.317e-02, -6.816e-03, 1.683e-02, 3.418e-02, -1.641e-02, 2.937e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(6.871e-02, -1.174e-02, 6.666e-03, 6.297e-02, 3.629e-03, -6.560e-02, 2.221e-03, -3.013e-03, -8.023e-06, 1.121e-01, 8.176e-03, 2.111e-02, 1.963e-01, 8.970e-02, 1.564e-02, -4.701e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(-2.132e-02, -2.267e-02, 6.135e-03, -1.078e-02, -5.840e-03, 1.905e-02, 1.268e-02, -7.194e-02, -1.431e-02, -1.739e-02, 3.141e-02, 8.179e-02, 5.140e-02, -1.569e-01, 1.004e-02, 6.618e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(-1.079e-02, 2.491e-01, 5.385e-02, 6.129e-03, -2.506e-03, 9.982e-02, -6.538e-03, 3.338e-02, 6.812e-02, 6.498e-02, -3.505e-03, -6.664e-02, 7.484e-02, -3.674e-01, -4.371e-03, 8.481e-03), r6);\n\tr7 = MulAdd(s0_2_2, M4(-2.236e-02, 8.854e-02, 2.161e-03, -3.728e-02, 7.051e-04, -1.942e-02, 5.068e-03, 3.023e-03, -4.271e-04, -3.823e-02, 6.171e-05, 2.448e-03, -4.839e-02, 3.888e-02, 2.311e-02, -8.007e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-3.832e-03, 3.401e-03, 3.362e-03, -2.204e-02, -1.015e-02, 6.500e-02, 7.932e-03, 6.476e-02, -2.954e-03, 5.964e-02, -2.901e-04, 1.166e-02, -1.393e-02, 8.272e-02, 1.195e-02, 2.776e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.344e-04, -9.810e-03, 9.541e-03, -3.696e-02, -1.258e-02, 1.716e-03, -1.904e-02, 6.726e-03, 2.943e-03, 1.995e-02, 4.744e-03, -1.575e-03, 1.345e-02, 3.569e-03, 6.992e-03, 2.228e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-3.255e-04, 1.441e-02, -3.604e-01, 3.074e-02, -6.280e-03, 1.383e-02, -4.092e-01, 1.098e-01, -2.144e-03, -2.800e-02, 2.331e-01, 3.288e-02, 1.871e-02, 1.195e-02, 1.026e-01, 8.650e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-1.484e-01, 2.799e-02, -1.712e-02, 1.389e-02, -9.383e-03, 3.860e-02, 2.977e-02, 1.373e-02, -8.396e-02, 1.674e-02, -1.977e-02, -2.952e-02, 2.277e-02, 4.219e-03, -2.636e-02, 2.142e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-1.735e-02, 1.167e-03, 1.803e-02, 2.099e-02, 1.925e-02, 1.059e-02, -2.644e-02, -7.770e-02, 1.583e-02, 5.069e-03, -5.411e-03, -5.394e-03, -3.678e-02, 1.383e-03, 2.716e-02, 1.288e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-3.211e-02, -1.040e-02, 4.146e-02, 1.974e-02, -8.847e-02, 2.719e-02, 1.265e-02, 4.720e-03, -2.096e-02, -7.469e-03, -1.421e-02, -9.890e-03, 2.942e-02, 3.797e-03, 4.109e-02, 2.879e-03), r5);\n\tr6 = MulAdd(s1_0_0, M4(1.185e-02, -9.140e-02, -9.993e-04, -1.355e-02, 5.693e-03, 2.301e-01, 2.839e-02, 3.191e-03, -1.727e-02, -8.343e-03, 3.359e-03, -5.311e-03, -1.073e-02, -3.479e-02, -3.351e-03, 4.203e-03), r6);\n\tr7 = MulAdd(s1_0_0, M4(-1.018e-02, -1.469e-02, 9.012e-04, -1.073e-02, -2.789e-02, -2.427e-02, 1.389e-02, -4.089e-02, 7.851e-03, 1.534e-02, -1.156e-02, 3.632e-02, 4.187e-03, -2.388e-02, 6.452e-03, 2.901e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(3.011e-02, -5.054e-02, -1.282e-02, -6.515e-02, 3.948e-02, -7.768e-02, -2.369e-02, -1.611e-02, -2.879e-02, -6.509e-02, 2.037e-02, -2.770e-02, -1.456e-02, 1.436e-01, 7.543e-02, -9.738e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(4.522e-03, 9.647e-04, -1.936e-02, -1.267e-01, -2.488e-02, -7.348e-02, -1.604e-02, -3.116e-02, 1.527e-02, 1.998e-02, 1.961e-02, -2.724e-03, 3.479e-02, 3.293e-02, 5.676e-02, 5.638e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-4.502e-04, -1.301e-01, -2.915e-01, -1.230e-01, -3.123e-02, 1.022e-02, 1.003e-01, 1.992e-02, -9.947e-03, -5.475e-02, -2.376e-01, 7.383e-02, 5.823e-02, -6.942e-03, -1.193e-01, -1.347e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(-5.315e-03, -8.192e-02, -2.783e-01, -2.428e-02, -1.041e-01, -3.233e-01, -3.073e-01, -2.087e-02, 7.548e-02, 1.097e-01, -3.405e-02, -4.644e-02, 9.401e-02, 7.588e-02, 2.607e-01, -1.834e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-1.916e-02, 5.045e-03, -1.875e-01, -4.938e-02, 3.080e-02, -3.042e-02, -1.793e-01, 6.988e-03, -3.530e-03, 1.862e-02, -3.906e-02, -3.150e-02, -7.771e-02, 6.722e-02, 1.814e-01, 8.670e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.326e-01, -1.300e-02, -1.836e-01, -2.541e-02, -1.260e-02, -6.959e-02, 8.148e-02, -3.137e-02, -8.499e-02, 6.581e-03, 1.335e-01, -1.332e-02, 1.359e-01, -1.249e-03, 8.767e-02, -2.084e-03), r5);\n\tr6 = MulAdd(s1_0_1, M4(-5.182e-02, 3.509e-02, -1.009e-03, -5.171e-02, -1.506e-02, -1.510e-01, 3.486e-02, -2.216e-02, -7.466e-03, 9.056e-03, -1.100e-02, -1.799e-02, -1.692e-02, 4.583e-02, -6.116e-02, 4.620e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-1.967e-02, 3.320e-03, -1.171e-01, -4.761e-02, 3.194e-02, -5.458e-03, 1.744e-02, 1.017e-02, 7.552e-03, 1.015e-02, -4.801e-02, -1.813e-02, 5.024e-02, 4.452e-02, -3.682e-03, -2.702e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(2.194e-02, 6.152e-03, 4.765e-03, 5.144e-02, 5.348e-03, 3.756e-02, -1.001e-02, 1.551e-02, -3.760e-02, -1.873e-02, 1.194e-03, -2.181e-02, 3.196e-03, 2.475e-02, 4.648e-03, -4.165e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-7.652e-03, 2.734e-03, -1.693e-02, -1.791e-02, -6.253e-03, 1.073e-02, 1.580e-02, 1.887e-02, 3.271e-02, 1.314e-02, -2.249e-02, 2.899e-02, -6.126e-04, 7.996e-04, 8.940e-04, 9.613e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(4.833e-03, 2.449e-02, 4.206e-02, 1.290e-02, -2.438e-03, 4.929e-03, 1.731e-02, -1.952e-02, -1.895e-02, -6.081e-03, 1.870e-02, -8.798e-02, -2.656e-03, -8.425e-04, 3.339e-02, 2.779e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(2.571e-02, -4.703e-02, 2.992e-02, -2.149e-02, 2.837e-02, 1.823e-02, 2.880e-02, -1.387e-02, -1.371e-02, 1.034e-01, -1.743e-01, -1.107e-01, -2.289e-02, 3.714e-02, 1.323e-01, 6.089e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(-2.233e-02, -8.902e-03, -3.277e-01, -6.459e-03, 1.240e-02, 2.034e-02, 3.232e-02, -1.053e-03, -5.188e-02, 2.359e-02, -1.069e-01, 3.699e-02, 2.743e-03, 2.041e-02, 8.269e-02, 2.053e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(-3.198e-02, -5.607e-02, -9.609e-03, -2.203e-02, -4.552e-02, 9.146e-03, -2.607e-02, 2.780e-02, 2.782e-02, -8.781e-02, -6.089e-02, 8.372e-03, 5.987e-02, 4.603e-04, 3.415e-02, -3.077e-04), r5);\n\tr6 = MulAdd(s1_0_2, M4(-2.673e-02, 1.939e-02, 2.148e-02, -6.746e-02, 1.440e-02, 8.051e-02, 2.857e-03, -2.782e-03, 1.833e-02, -2.305e-02, -2.576e-02, 3.963e-03, 1.474e-02, 1.422e-01, 2.276e-02, 2.758e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-6.919e-04, -9.743e-02, 2.645e-02, -4.031e-02, -2.005e-04, 2.915e-02, 7.187e-03, -7.145e-03, -1.259e-02, 1.215e-02, -1.254e-02, 3.630e-02, -1.727e-02, -2.248e-02, -9.584e-04, -4.824e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-1.931e-02, -2.810e-02, -1.691e-02, 4.113e-02, 4.188e-02, -9.903e-03, 1.762e-02, -7.424e-02, -7.942e-03, -5.046e-02, 2.648e-02, -2.654e-02, 4.560e-02, -1.087e-02, -4.244e-02, 2.177e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-7.750e-03, -2.069e-02, -1.766e-02, 8.534e-03, -5.963e-02, -3.970e-03, 6.781e-02, -1.428e-02, -4.800e-03, 1.592e-02, 1.009e-02, 1.161e-02, -2.630e-02, 2.537e-02, -1.742e-02, -1.996e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.175e-02, -1.505e-02, -2.685e-01, -3.045e-02, -2.157e-02, -1.618e-02, 2.881e-01, 1.422e-01, 1.398e-03, 2.036e-03, -6.645e-02, -7.312e-02, -4.555e-03, -2.764e-02, 2.434e-02, -3.379e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(-3.063e-01, -1.909e-02, -1.567e-02, 4.410e-03, 1.807e-01, -8.367e-02, 4.449e-02, -3.725e-02, -4.008e-02, -1.017e-02, 1.778e-02, 7.149e-03, 1.449e-01, 2.007e-02, 4.862e-02, 5.184e-03), r3);\n\tr4 = MulAdd(s1_1_0, M4(-2.156e-02, -8.404e-03, 2.206e-02, 1.986e-02, 4.205e-02, 2.924e-02, 5.856e-04, 3.319e-02, 1.730e-02, 4.093e-02, 1.303e-02, 4.895e-02, 6.662e-02, -3.159e-02, -2.552e-02, -4.928e-03), r4);\n\tr5 = MulAdd(s1_1_0, M4(1.384e-02, 1.765e-02, -7.980e-02, 6.425e-02, 3.085e-02, -7.783e-02, 2.131e-01, 1.202e-02, 4.911e-02, 3.452e-03, 1.225e-01, 3.096e-03, -1.085e-01, -1.932e-02, 5.950e-02, -1.697e-03), r5);\n\tr6 = MulAdd(s1_1_0, M4(5.503e-02, -1.530e-03, -4.663e-03, 7.112e-03, -1.582e-02, 2.508e-01, -8.296e-03, 1.025e-02, -6.263e-03, 4.975e-02, 8.144e-03, -3.180e-03, -4.342e-03, -1.587e-01, 5.497e-02, -1.570e-03), r6);\n\tr7 = MulAdd(s1_1_0, M4(-1.216e-02, -3.011e-02, -8.144e-03, -2.237e-02, 1.123e-01, 4.831e-02, -2.657e-02, 7.008e-02, 1.409e-02, 9.306e-03, 1.330e-02, 2.049e-02, -2.472e-02, -1.705e-02, -2.569e-02, 5.212e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-2.065e-01, -2.388e-01, -2.222e-01, 3.381e-02, -8.297e-02, -1.921e-01, 5.540e-03, -2.035e-01, 4.507e-02, 4.088e-02, 1.477e-01, -2.761e-02, 2.294e-01, 1.517e-02, 6.070e-02, 1.188e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.623e-02, -2.917e-02, -2.153e-01, 1.239e-02, 3.509e-02, -4.379e-03, -4.695e-02, 2.679e-02, -6.581e-02, -4.785e-02, 1.385e-01, -2.785e-03, 8.062e-02, 4.487e-03, 6.041e-02, -1.478e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.939e-02, -5.740e-02, 1.867e-02, -2.483e-01, -3.098e-02, -2.655e-02, -7.671e-02, -2.833e-01, 3.190e-02, -6.267e-02, 5.305e-03, -1.323e-01, 1.577e-01, 8.658e-03, -1.688e-02, -1.247e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-1.750e-01, 2.310e-02, -1.801e-02, -6.261e-02, 2.276e-02, 3.893e-02, 1.408e-01, -1.336e-01, -1.556e-01, -6.851e-02, -5.804e-02, -3.592e-02, 1.078e-01, -8.618e-02, -2.447e-02, 1.634e-01), r3);\n\tr4 = MulAdd(s1_1_1, M4(-1.490e-02, -2.928e-01, -2.053e-02, -4.156e-02, -5.153e-02, 9.107e-02, 1.570e-01, 7.518e-02, -1.655e-02, 1.679e-01, 1.063e-01, 1.278e-01, 1.864e-01, 5.339e-02, -9.291e-02, 1.547e-01), r4);\n\tr5 = MulAdd(s1_1_1, M4(3.699e-02, -6.099e-02, -3.115e-01, -3.968e-01, 1.219e-01, -9.380e-02, -6.074e-01, -1.775e-02, 6.087e-02, -1.069e-02, 1.581e-01, -5.164e-02, -1.189e-01, 5.195e-02, 3.061e-01, 1.959e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(-2.176e-01, -4.930e-01, -7.786e-02, 5.544e-03, -6.808e-02, -6.198e-01, -5.263e-02, 2.283e-03, -3.468e-02, 3.741e-01, -5.825e-02, 1.581e-02, 2.462e-02, 3.661e-01, 1.947e-01, -1.285e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(-5.042e-02, 2.743e-02, -6.620e-02, -2.402e-01, -1.222e-01, 1.301e-02, -2.044e-02, -2.694e-01, 1.199e-01, 1.032e-02, -8.081e-02, -2.685e-01, 1.239e-01, 5.172e-02, 1.532e-02, -1.401e-01), r7);\n\tr0 = MulAdd(s1_1_2, M4(-8.447e-03, -1.028e-01, -2.348e-02, -6.616e-02, -2.217e-02, -3.680e-02, -4.298e-02, 6.609e-02, 2.720e-02, 8.470e-02, 1.043e-01, -3.046e-02, 3.821e-02, 1.199e-01, 2.174e-02, -1.014e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(-3.330e-02, 1.156e-02, -8.223e-03, 1.328e-02, 8.462e-03, -5.712e-02, -1.031e-02, -2.649e-03, 7.241e-02, -4.089e-02, 4.924e-02, -1.887e-02, -1.755e-02, 8.211e-02, 5.697e-03, 5.151e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(2.237e-02, 1.320e-02, -1.883e-03, 3.558e-02, -1.366e-02, -2.572e-03, -3.195e-02, 1.121e-02, -9.487e-03, -1.957e-02, -1.594e-02, -1.274e-01, 5.919e-03, -3.763e-03, 3.873e-02, 5.396e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(2.651e-02, 2.534e-02, 8.820e-04, -6.421e-02, 4.018e-02, -3.089e-02, 2.582e-02, -2.907e-02, -6.330e-02, -9.038e-02, -2.307e-01, -1.940e-02, 6.852e-02, 9.310e-03, 9.838e-02, 5.537e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.543e-02, -5.896e-02, 6.165e-02, 5.231e-02, -7.403e-02, -7.821e-02, -1.873e-02, -3.799e-02, 5.007e-02, 1.896e-01, -6.005e-02, 3.046e-01, 1.097e-01, 3.107e-02, 1.694e-02, 1.421e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(8.159e-03, -1.167e-01, 7.883e-02, 5.337e-03, 1.705e-02, -4.689e-03, 6.120e-04, -2.153e-02, 3.125e-02, -1.791e-01, -8.179e-03, -5.676e-02, -7.712e-03, 3.697e-02, 7.833e-02, 2.571e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(2.887e-02, -2.096e-01, -8.088e-02, 2.276e-02, -1.554e-02, 3.092e-03, -2.133e-02, -2.139e-02, -5.651e-02, -5.553e-01, 3.422e-01, -1.780e-02, 1.203e-02, -1.411e-01, 6.804e-02, 8.897e-04), r6);\n\tr7 = MulAdd(s1_1_2, M4(-1.925e-03, -5.172e-01, 2.272e-02, 7.966e-02, -3.978e-02, 8.862e-02, 6.368e-04, -4.417e-02, 1.560e-02, -8.707e-02, -2.197e-03, 4.539e-02, 1.245e-02, -2.026e-03, -2.452e-03, 3.607e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(-3.073e-02, -2.297e-02, 3.045e-02, -6.272e-03, 1.617e-02, -3.879e-02, -2.061e-02, 1.737e-02, 1.307e-02, 2.927e-02, 5.118e-03, -1.751e-03, 2.009e-02, 2.045e-03, 4.206e-03, 8.452e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-1.219e-02, 1.118e-02, 1.972e-02, 6.805e-03, 4.640e-03, -3.663e-02, 1.735e-02, 9.686e-03, -1.324e-02, 5.443e-03, -2.891e-04, 6.250e-03, -9.792e-03, -1.326e-02, 2.404e-03, -3.790e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(2.424e-03, 6.302e-03, 2.833e-02, -2.555e-02, 1.001e-02, -1.763e-02, 6.230e-02, 7.828e-02, 6.770e-03, 3.622e-03, -7.145e-03, -2.995e-02, 4.694e-04, -7.552e-03, 6.400e-02, 2.849e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-4.187e-02, -1.100e-02, 1.976e-02, 6.990e-03, -4.565e-02, 4.876e-03, -2.444e-02, -2.695e-02, 2.437e-03, 4.141e-03, 4.061e-03, -5.027e-04, -2.432e-02, -9.279e-03, 6.914e-03, -7.898e-04), r3);\n\tr4 = MulAdd(s1_2_0, M4(3.657e-02, 3.366e-02, -7.884e-03, 1.774e-02, -1.136e-03, 3.034e-02, 1.420e-03, 2.672e-02, 1.007e-02, 3.902e-03, -2.394e-03, -6.111e-03, 4.246e-02, 1.722e-02, -7.447e-03, -1.475e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-9.570e-04, 1.945e-02, 7.287e-02, 2.875e-02, 3.847e-02, 3.810e-04, -3.376e-01, 4.524e-03, 1.143e-02, -7.189e-03, 9.271e-03, 1.392e-02, -1.267e-02, 1.625e-02, -2.040e-01, 1.364e-03), r5);\n\tr6 = MulAdd(s1_2_0, M4(1.759e-02, 4.211e-02, -1.605e-02, 1.323e-03, 1.139e-02, -1.850e-01, 6.890e-03, 6.483e-03, 8.173e-03, 3.853e-02, -5.206e-03, 6.500e-03, 1.714e-03, -1.045e-01, -9.036e-03, 8.208e-03), r6);\n\tr7 = MulAdd(s1_2_0, M4(6.674e-03, 1.857e-03, 3.069e-03, 3.793e-02, 2.052e-03, 3.001e-02, -1.542e-02, 3.278e-03, -4.805e-03, 1.765e-02, -3.871e-03, 4.067e-02, -9.179e-03, 4.962e-03, -7.114e-04, 7.603e-03), r7);\n\tr0 = MulAdd(s1_2_1, M4(-8.938e-02, -1.399e-02, 2.159e-02, -3.724e-02, -6.076e-03, 4.967e-02, -3.771e-02, 8.174e-03, 7.702e-02, 3.019e-02, 4.010e-04, -2.985e-02, 8.677e-02, 4.867e-02, 2.972e-02, -2.913e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(3.843e-03, -6.900e-03, 3.337e-03, -1.165e-02, -3.561e-02, 6.762e-02, -3.432e-02, 2.076e-02, -2.773e-03, 3.136e-02, -3.098e-02, -3.325e-03, -3.841e-02, 8.377e-03, -7.681e-03, 7.386e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(8.711e-03, -3.136e-02, 1.575e-02, 8.119e-02, -3.438e-02, 2.602e-02, 4.742e-03, -9.950e-02, 2.134e-02, -1.885e-02, 1.279e-02, -3.134e-02, 1.092e-02, -4.430e-03, 4.860e-02, -4.235e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(2.249e-02, -1.086e-03, -2.313e-02, -3.768e-02, 1.089e-01, 1.158e-04, -2.553e-02, -6.015e-03, -2.385e-01, 1.603e-02, 1.933e-02, 3.209e-02, 1.253e-01, 3.849e-03, 8.236e-03, 1.149e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(-1.794e-01, 3.779e-02, -2.763e-03, 2.177e-02, 6.590e-02, -5.678e-02, 2.838e-02, -3.296e-01, 1.428e-01, -3.384e-02, 7.890e-04, -2.957e-02, -1.224e-01, 3.460e-02, -9.605e-03, -1.385e-01), r4);\n\tr5 = MulAdd(s1_2_1, M4(-3.927e-02, -2.362e-02, -4.483e-02, -1.970e-02, 4.458e-03, 6.302e-02, -2.903e-02, 3.013e-02, 4.457e-02, 1.523e-02, -2.999e-02, 1.643e-02, 9.879e-03, 1.272e-02, -1.343e-01, -2.289e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(-2.414e-02, -3.605e-01, 1.363e-02, 2.880e-03, 1.787e-02, -1.588e-01, -1.217e-02, -1.272e-02, 2.794e-03, -4.656e-01, -3.797e-03, -1.231e-02, -1.285e-02, 2.695e-01, 3.075e-02, -2.234e-03), r6);\n\tr7 = MulAdd(s1_2_1, M4(7.450e-03, -6.477e-03, -2.149e-02, -1.137e-01, -2.410e-02, -4.886e-02, -2.627e-03, -4.177e-02, -2.388e-02, -4.332e-02, -6.356e-03, 3.531e-02, -5.215e-03, -2.027e-02, -6.208e-03, -1.776e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-3.382e-02, -2.255e-02, 1.316e-02, 1.089e-02, -1.191e-02, -6.631e-03, 2.451e-02, -3.868e-02, 3.661e-02, 3.249e-02, 2.557e-02, 4.449e-02, 2.704e-02, 2.279e-02, 9.378e-03, 7.891e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.184e-02, -5.142e-03, 1.403e-02, -5.849e-03, -6.790e-03, 7.696e-03, 3.400e-02, 1.154e-02, -8.701e-03, 3.454e-02, -1.619e-02, -5.812e-03, -4.514e-03, 5.693e-03, 1.634e-02, 1.697e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(-3.061e-03, 9.936e-03, -1.737e-02, 1.969e-03, 2.201e-02, -2.126e-02, 1.337e-02, 2.149e-02, 5.863e-02, -1.236e-02, -1.231e-02, -6.010e-03, 2.775e-03, -1.100e-02, 1.751e-02, 4.919e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(1.438e-02, -1.005e-02, 3.388e-03, 1.249e-02, -2.130e-02, 3.995e-02, 1.930e-02, -1.104e-02, -4.201e-02, 1.897e-02, -4.047e-02, -2.509e-02, 3.193e-02, 1.103e-02, 6.293e-03, -2.497e-03), r3);\n\tr4 = MulAdd(s1_2_2, M4(-2.441e-01, 1.979e-02, -1.719e-02, -1.203e-02, 7.130e-03, 2.283e-02, 3.101e-02, 1.408e-02, 5.360e-03, -9.609e-03, 2.353e-02, 4.288e-02, 8.781e-02, -1.146e-03, -1.175e-03, -2.773e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-1.839e-02, -6.623e-03, -3.085e-02, 8.698e-04, -6.975e-03, -3.489e-02, 1.046e-01, 2.249e-02, 3.066e-02, 4.170e-03, 6.406e-02, -1.104e-02, -1.787e-02, -1.699e-02, -6.373e-02, 8.313e-03), r5);\n\tr6 = MulAdd(s1_2_2, M4(8.101e-03, -2.566e-01, -7.245e-02, -6.986e-03, 1.168e-02, 2.220e-02, 5.879e-02, 1.629e-02, -8.084e-03, -7.689e-02, 1.159e-01, -1.915e-02, 1.392e-03, -1.932e-01, -1.788e-02, -2.093e-03), r6);\n\tr7 = MulAdd(s1_2_2, M4(-1.880e-03, -7.916e-03, 3.524e-03, 3.695e-02, 7.530e-04, -2.596e-02, -8.548e-03, 8.942e-02, -4.967e-03, -8.843e-02, -1.724e-02, -1.839e-01, -3.795e-03, 7.692e-02, -6.723e-03, 6.472e-02), r7);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(7.206e-04, -1.586e-02, -6.176e-03, 2.159e-03, 8.255e-04, -2.187e-02, -2.203e-02, 2.204e-02, -1.343e-02, -4.927e-02, -8.109e-03, -8.151e-03, 1.352e-02, 9.448e-02, 9.167e-03, -5.248e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.203e-02, -2.885e-03, -7.913e-03, -1.819e-02, 1.299e-02, 5.330e-04, -1.289e-02, -2.347e-03, 4.032e-03, 1.897e-02, -2.169e-02, -7.025e-03, -6.897e-03, -1.888e-03, 3.518e-03, -1.106e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(8.660e-04, -9.477e-03, 2.761e-02, 2.058e-02, -6.282e-03, 2.929e-02, -2.942e-01, 8.373e-02, 7.709e-03, 2.185e-02, 2.086e-01, -4.182e-02, 1.775e-02, -3.828e-02, -4.200e-02, -2.953e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(3.829e-02, -3.628e-03, 3.599e-02, -1.918e-03, 6.271e-02, 9.111e-02, 4.117e-02, 4.164e-02, -1.265e-01, -1.285e-01, -8.023e-02, -3.751e-02, 6.570e-02, -1.372e-01, -3.209e-02, -5.201e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(9.586e-03, -1.774e-02, 1.124e-02, 3.364e-03, 6.928e-03, 3.526e-03, 2.607e-02, -4.648e-03, -1.556e-02, -1.488e-02, -1.955e-02, 7.379e-03, 2.207e-02, -2.745e-03, -2.489e-02, 4.024e-03), r4);\n\tr5 = MulAdd(s0_0_0, M4(1.949e-02, 3.632e-03, 3.557e-02, -1.141e-02, -4.059e-02, 1.972e-02, 7.344e-03, 9.172e-03, 3.430e-02, -7.931e-03, 3.410e-02, 2.148e-02, 2.266e-02, -3.498e-03, -3.680e-02, -6.629e-03), r5);\n\tr6 = MulAdd(s0_0_0, M4(-7.819e-03, 3.798e-02, -3.430e-03, -1.069e-02, -1.868e-03, 4.272e-02, 1.654e-02, -4.346e-03, 1.940e-02, -7.009e-02, 9.008e-03, -1.056e-02, -1.129e-02, 6.776e-03, -1.250e-02, -8.156e-03), r6);\n\tr7 = MulAdd(s0_0_0, M4(1.439e-03, 3.763e-03, -2.291e-03, 9.490e-03, -9.807e-03, -1.320e-02, 2.391e-02, 4.137e-03, 5.238e-02, 1.995e-02, 2.406e-02, 4.092e-02, -1.524e-03, 5.062e-02, -2.348e-02, -4.847e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(2.268e-02, -8.661e-03, 8.410e-04, 8.350e-03, 3.436e-03, -2.178e-02, 1.040e-02, 2.610e-02, -5.550e-02, 9.008e-02, -1.323e-02, 1.047e-01, 4.725e-02, -1.596e-01, -1.014e-02, -4.259e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(2.791e-04, -1.113e-02, -4.386e-03, -1.890e-02, -1.531e-02, -5.013e-03, -1.034e-02, 1.036e-02, -9.942e-03, 4.761e-02, -2.565e-03, -3.992e-02, 3.772e-02, -5.067e-02, -1.773e-02, 6.369e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(9.565e-04, 8.384e-03, 4.091e-03, -1.800e-02, 1.714e-02, 3.314e-02, 8.136e-02, 2.112e-02, 2.526e-02, -3.241e-02, -4.138e-02, 1.371e-01, 6.587e-03, 1.791e-02, -1.985e-01, 5.973e-02), r2);\n\tr3 = MulAdd(s0_0_1, M4(-7.797e-03, -1.328e-02, 7.690e-02, 7.538e-03, 6.297e-02, -1.675e-01, 1.792e-01, -1.724e-01, 5.111e-02, 2.604e-02, -1.130e-01, -2.944e-02, -8.810e-02, 3.046e-02, -2.216e-01, 2.448e-01), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.260e-02, -1.451e-02, 1.018e-01, 3.894e-02, 1.381e-03, -1.863e-02, -1.826e-01, -1.694e-02, 1.216e-02, 7.709e-03, 1.618e-01, -6.856e-02, 5.260e-02, -1.042e-03, 2.300e-01, 2.839e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(4.341e-02, 1.967e-02, 3.057e-03, 1.077e-02, 5.837e-02, 7.104e-03, -2.289e-02, 1.635e-03, -1.655e-01, 7.602e-02, 3.093e-02, 1.419e-02, 9.948e-02, -9.364e-04, 9.235e-02, -2.571e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(1.006e-02, 1.665e-02, 7.907e-03, -8.000e-03, 3.716e-04, -1.544e-01, -6.378e-02, -7.547e-03, 1.109e-02, 1.433e-01, 1.640e-02, -3.768e-02, -3.283e-02, 1.072e-01, 8.707e-02, -9.677e-03), r6);\n\tr7 = MulAdd(s0_0_1, M4(-1.348e-03, 1.159e-03, 9.720e-03, -4.891e-03, 4.441e-02, 4.192e-02, 5.141e-02, 2.199e-02, -6.206e-02, 8.083e-02, -1.449e-02, 3.169e-03, 3.570e-02, -8.234e-02, 2.448e-03, -4.305e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(3.493e-03, 7.358e-04, 4.650e-03, 5.085e-03, 1.039e-02, 5.448e-02, 4.482e-03, 1.042e-01, 2.221e-02, 2.893e-02, -1.534e-03, -1.528e-02, -1.681e-03, -7.159e-03, 5.550e-03, -2.989e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-5.417e-03, 4.957e-03, -3.010e-03, -1.079e-03, 1.654e-02, -3.621e-02, -3.149e-03, 6.181e-03, -2.057e-02, 7.181e-03, -2.235e-02, -1.656e-02, 2.242e-02, -6.735e-03, -8.001e-03, 2.096e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.610e-03, 2.433e-03, 1.816e-02, 2.393e-02, -3.117e-03, -1.058e-03, 1.405e-02, 7.222e-02, -2.150e-03, -2.262e-03, 2.119e-02, 4.121e-02, 1.849e-02, -3.318e-03, 4.598e-02, -6.828e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-1.764e-04, 1.789e-02, -2.067e-03, 9.511e-03, 3.528e-02, -7.162e-02, 1.054e-01, -7.053e-02, 1.729e-02, 1.004e-02, 9.987e-02, 8.020e-02, 3.696e-03, -1.204e-03, 2.571e-02, -2.964e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(4.605e-05, 3.081e-03, -4.480e-02, -5.423e-03, 2.822e-03, 1.569e-02, 1.933e-01, 7.417e-02, -1.767e-02, 4.387e-03, -1.870e-01, -2.935e-02, -5.830e-03, -3.332e-02, 5.551e-02, 1.760e-02), r4);\n\tr5 = MulAdd(s0_0_2, M4(-2.721e-02, -1.416e-04, 6.497e-03, 1.390e-02, -4.544e-03, 5.533e-02, 1.000e-02, 2.569e-02, -2.667e-02, 3.822e-03, -9.438e-03, -1.620e-02, 2.379e-03, -5.296e-02, 3.976e-02, 4.764e-03), r5);\n\tr6 = MulAdd(s0_0_2, M4(1.609e-02, -9.948e-03, 4.969e-03, 4.274e-03, 2.055e-02, 2.039e-01, -2.067e-02, 2.112e-02, 1.103e-03, 6.305e-02, -1.839e-02, -2.137e-02, 1.142e-02, -1.137e-01, -3.406e-02, 1.112e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-3.191e-03, 9.691e-03, 1.084e-03, -1.899e-03, -2.251e-02, 3.278e-02, -1.108e-03, 2.451e-02, 6.580e-03, 3.982e-02, 5.607e-03, 2.998e-02, 2.172e-02, -1.117e-02, 3.029e-03, -8.862e-03), r7);\n\tr0 = MulAdd(s0_1_0, M4(-4.193e-02, 7.767e-02, -1.380e-02, -8.949e-03, 7.006e-02, -1.877e-01, -2.152e-02, 6.189e-02, -6.370e-02, -6.518e-02, -2.220e-02, 5.530e-02, -7.928e-02, 1.144e-01, -4.116e-02, -8.150e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(4.041e-02, 4.114e-03, -4.883e-03, 1.312e-02, -5.520e-02, -4.981e-02, -1.071e-02, -3.095e-02, 4.749e-02, -2.407e-03, -2.626e-03, -1.076e-02, 4.715e-02, 2.076e-02, -2.040e-02, 3.899e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(2.093e-02, 1.531e-02, -1.811e-01, 7.840e-02, 1.836e-02, -2.603e-02, 1.343e-01, -1.322e-01, 4.814e-02, 3.736e-03, 1.334e-01, 2.800e-02, -1.690e-02, 2.248e-02, 1.130e-01, 1.563e-01), r2);\n\tr3 = MulAdd(s0_1_0, M4(-1.295e-01, 1.073e-03, -6.096e-02, 6.759e-02, 2.778e-02, -7.414e-02, 5.662e-02, -3.473e-02, 1.090e-01, 3.002e-02, 5.443e-02, 2.704e-03, -4.585e-02, 4.470e-03, -3.407e-02, 1.519e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-3.163e-02, -2.148e-02, 3.927e-02, 6.131e-02, 1.634e-02, 3.749e-03, 3.581e-02, -1.516e-02, 1.920e-02, 1.524e-02, 1.455e-02, -2.569e-03, 2.579e-02, -2.566e-02, 5.673e-02, 2.619e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(1.101e-01, 1.499e-02, -4.089e-02, 9.097e-04, -2.847e-02, 3.584e-02, -5.823e-02, -8.497e-03, -2.070e-02, 7.495e-03, 4.120e-02, 3.278e-02, 2.921e-02, -4.778e-02, 8.765e-02, 1.593e-02), r5);\n\tr6 = MulAdd(s0_1_0, M4(2.398e-02, 1.718e-01, 7.601e-03, 3.098e-03, 4.049e-04, 2.236e-01, -2.441e-02, -3.737e-03, 1.372e-02, 5.095e-02, 3.005e-02, -1.149e-02, 1.232e-02, -1.689e-01, 6.660e-02, -1.055e-03), r6);\n\tr7 = MulAdd(s0_1_0, M4(-3.455e-02, -3.474e-02, 1.815e-02, -6.158e-02, -1.210e-02, -6.445e-02, -3.553e-02, -1.096e-02, 8.444e-02, 3.528e-02, -1.279e-02, 2.989e-02, 5.606e-02, 1.162e-01, 2.289e-02, 3.989e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(-1.395e-03, -5.641e-03, 3.145e-02, -6.868e-02, -2.690e-01, 1.802e-01, 4.773e-02, 6.296e-02, 8.861e-02, -3.486e-01, -1.789e-01, 3.343e-01, 1.959e-01, 3.735e-01, 1.146e-01, 2.719e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-6.556e-03, 4.180e-04, -2.971e-02, -4.431e-02, 3.706e-01, -8.032e-02, 6.379e-02, -1.113e-02, 1.623e-02, -4.530e-02, -9.552e-02, -2.269e-02, 1.831e-01, 6.815e-02, 1.274e-01, -1.368e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.525e-02, -1.917e-02, 9.680e-02, -1.952e-01, 1.477e-01, 1.922e-03, 2.564e-02, 1.747e-01, 1.549e-01, -5.432e-02, -1.258e-02, -7.382e-02, 1.467e-01, -3.402e-02, 4.836e-02, -1.478e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(1.158e-02, 2.703e-01, 8.819e-02, -2.628e-01, 3.620e-02, 3.720e-02, 6.591e-02, -1.142e-02, -2.936e-01, 2.963e-02, -4.564e-02, 3.235e-02, -3.177e-02, 7.337e-02, 2.008e-02, -3.454e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(-1.567e-02, -2.158e-03, 3.631e-02, -9.545e-02, 1.692e-01, -2.595e-02, 6.625e-02, 3.462e-01, -1.825e-02, -9.522e-02, -1.577e-01, -2.632e-02, -1.051e-01, 1.307e-01, -5.931e-02, 6.539e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-2.824e-01, -1.689e-01, -2.329e-01, -2.997e-03, -1.211e-02, -1.127e-01, 7.093e-02, -1.568e-02, 3.089e-02, 1.865e-01, -1.587e-01, 1.532e-01, 2.529e-01, 2.375e-01, 6.014e-02, 5.784e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(4.935e-03, -4.761e-02, -6.209e-02, 1.126e-02, 1.933e-02, -3.711e-01, 2.901e-01, 2.545e-02, 1.323e-01, 1.848e-01, -1.237e-01, -1.722e-02, -1.282e-02, 2.760e-01, -2.861e-01, 3.331e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(4.922e-02, -2.534e-02, -2.872e-02, 8.531e-02, -1.639e-02, -1.917e-02, -1.977e-02, 1.470e-01, -3.724e-02, 2.821e-02, -7.448e-02, 2.330e-03, -8.905e-02, -2.379e-01, -3.456e-02, -1.825e-01), r7);\n\tr0 = MulAdd(s0_1_2, M4(-5.436e-03, 1.742e-02, 9.410e-03, 3.403e-02, 4.274e-02, 2.474e-03, 1.016e-02, -1.635e-01, -3.052e-02, 3.323e-02, 1.327e-02, 1.863e-01, 3.439e-02, 1.311e-02, -6.015e-02, -9.452e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-2.942e-03, 6.152e-03, 1.592e-02, -1.461e-02, -4.749e-02, 2.365e-02, -2.523e-02, -1.835e-02, 3.389e-03, -1.505e-02, 1.739e-03, -1.696e-02, 4.308e-02, 1.860e-02, -1.971e-02, -2.017e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(1.066e-02, -1.080e-02, -2.108e-02, 6.318e-02, -3.243e-02, 9.867e-03, -5.215e-02, 2.317e-01, -5.432e-02, -1.053e-02, -1.625e-02, 2.524e-02, 3.845e-02, 1.801e-02, 3.735e-02, 2.177e-03), r2);\n\tr3 = MulAdd(s0_1_2, M4(1.662e-02, 2.304e-02, -1.143e-02, 3.413e-02, 6.952e-02, -3.878e-02, -4.467e-02, -1.304e-01, -1.138e-02, -6.738e-02, -1.166e-01, -8.885e-02, 5.482e-02, -9.227e-03, 1.723e-02, -1.051e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(2.761e-03, 6.761e-03, -1.072e-01, -1.854e-02, 4.018e-02, 2.359e-02, 5.006e-02, 2.424e-02, 8.883e-02, -8.230e-03, -2.764e-02, -2.375e-02, -7.418e-03, -1.403e-02, 7.727e-03, 1.048e-01), r4);\n\tr5 = MulAdd(s0_1_2, M4(1.115e-03, 6.706e-02, -1.533e-02, -6.483e-03, -5.148e-02, -6.329e-02, -4.628e-02, -3.523e-03, 2.269e-02, 1.161e-01, -4.976e-02, 2.431e-02, -6.469e-02, 9.331e-02, -3.135e-02, 1.306e-02), r5);\n\tr6 = MulAdd(s0_1_2, M4(4.879e-03, -6.504e-03, 1.175e-02, -4.762e-02, -9.885e-03, 2.322e-01, 1.780e-01, -4.045e-02, 4.105e-02, -3.980e-03, -7.107e-02, -2.995e-02, 1.464e-02, -1.447e-01, 9.383e-02, -1.652e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-7.863e-03, -4.724e-02, -5.577e-03, 1.332e-02, 5.578e-03, 5.215e-02, 1.869e-02, 1.425e-01, 2.858e-03, -1.294e-01, -8.189e-03, -2.045e-02, 3.083e-02, -1.783e-01, -2.817e-03, 9.741e-02), r7);\n\tr0 = MulAdd(s0_2_0, M4(7.206e-02, 1.572e-01, 5.629e-03, 2.251e-02, 2.557e-02, 7.850e-02, 1.165e-02, -1.896e-03, 2.245e-02, 6.472e-02, 1.777e-02, 3.633e-03, 8.385e-02, -6.707e-02, -2.306e-02, -2.283e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.927e-03, 5.752e-02, 8.823e-03, -2.510e-02, 1.093e-02, 2.703e-02, -2.093e-03, -3.306e-03, -2.307e-03, 1.767e-03, -1.129e-02, -1.339e-02, 2.650e-02, -3.602e-02, -4.537e-03, -7.069e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.947e-04, -1.823e-02, -4.484e-02, 7.144e-02, -1.674e-02, 2.987e-02, 1.221e-02, 8.666e-02, 3.390e-03, 9.306e-03, 1.076e-01, 6.689e-02, 3.874e-02, -7.382e-04, 6.395e-02, 3.654e-02), r2);\n\tr3 = MulAdd(s0_2_0, M4(-2.730e-02, 4.544e-02, 3.344e-02, 8.619e-03, -4.086e-02, 1.340e-02, 4.821e-03, -2.348e-02, -1.346e-01, -2.168e-02, -8.738e-03, -9.878e-03, 6.752e-02, -2.320e-02, -4.168e-03, 2.512e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(7.676e-02, 8.652e-04, -1.847e-02, -1.777e-02, -1.835e-02, -2.275e-02, -4.980e-03, 2.377e-02, 6.289e-02, -5.677e-03, -1.826e-02, -9.439e-03, 7.980e-02, -5.221e-03, -1.437e-02, -3.597e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-9.666e-02, -2.736e-02, 9.370e-02, 3.258e-02, 2.995e-02, -2.052e-03, -5.711e-02, -9.075e-03, 2.379e-05, -1.771e-02, -7.004e-02, 1.287e-02, -1.728e-02, -4.768e-03, 4.210e-02, 5.004e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(-5.993e-03, -1.368e-02, 7.404e-02, -3.325e-03, -8.577e-03, 4.529e-02, 1.302e-03, -1.104e-03, 6.358e-03, -3.847e-02, -2.863e-03, -1.437e-02, 4.481e-02, -1.372e-01, 2.238e-02, -1.238e-02), r6);\n\tr7 = MulAdd(s0_2_0, M4(-3.612e-02, 4.995e-02, -4.094e-02, 9.105e-02, -2.956e-02, -2.907e-03, 1.432e-02, -3.152e-02, -2.220e-02, 3.496e-03, 1.430e-02, 4.678e-02, 1.410e-02, 2.586e-03, -2.501e-03, 9.739e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-3.993e-02, -4.484e-02, 7.838e-02, -1.071e-02, 2.083e-02, -1.577e-01, -9.158e-03, 1.027e-01, -1.111e-01, 1.106e-02, -2.423e-02, 6.233e-02, -1.333e-01, -3.496e-02, 1.701e-02, -3.026e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(2.449e-01, 3.562e-02, 2.644e-02, -1.840e-02, -5.956e-02, -6.307e-02, -3.199e-02, 8.131e-04, -2.473e-02, 1.175e-02, -6.087e-03, 1.118e-02, 2.546e-02, -4.871e-02, 8.481e-03, 3.337e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(6.686e-02, 1.752e-02, 6.277e-02, 8.750e-02, 3.552e-02, -1.241e-02, 4.922e-03, 3.354e-02, -1.513e-02, 1.560e-03, 4.756e-02, -2.052e-02, 3.571e-02, -2.760e-03, -1.997e-02, 1.601e-01), r2);\n\tr3 = MulAdd(s0_2_1, M4(2.767e-02, -2.006e-01, -1.930e-01, 1.470e-01, 1.145e-01, -6.710e-03, -1.060e-02, -5.670e-02, 8.126e-02, 2.677e-02, -5.398e-02, -3.404e-02, -3.170e-02, -2.053e-02, 2.656e-02, 5.508e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(3.416e-02, 4.721e-02, -1.655e-01, 2.606e-01, -2.745e-01, 1.645e-02, 1.792e-02, 2.219e-02, -5.751e-02, -2.815e-02, 3.281e-03, -1.932e-02, 2.570e-01, 2.045e-02, -2.440e-02, 4.655e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(-3.333e-02, 1.024e-01, 2.757e-01, -4.384e-02, 2.999e-02, 6.038e-02, 1.282e-01, 1.276e-02, 3.650e-02, 7.038e-02, 5.177e-02, 3.294e-02, -3.122e-02, -2.868e-02, 5.738e-02, -5.310e-03), r5);\n\tr6 = MulAdd(s0_2_1, M4(-4.407e-02, -2.550e-02, 2.557e-01, -3.111e-02, 3.545e-02, -5.437e-01, 1.519e-01, 1.431e-03, 4.174e-02, 8.332e-02, 3.676e-02, -4.349e-03, -2.578e-02, 5.773e-01, 4.796e-02, 2.822e-03), r6);\n\tr7 = MulAdd(s0_2_1, M4(1.364e-01, -3.258e-02, 1.248e-02, -1.047e-01, 2.721e-03, -1.895e-02, -7.392e-04, -3.198e-02, -1.133e-02, 4.855e-02, 1.145e-02, 1.189e-01, 1.047e-02, -9.211e-03, -1.066e-02, -7.240e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-1.426e-02, -2.376e-02, -1.359e-02, -1.981e-02, -1.207e-02, 1.472e-02, -1.116e-02, 4.943e-04, -3.345e-02, 1.760e-02, -1.189e-02, -1.293e-02, -1.806e-02, 1.578e-02, 2.097e-02, 2.540e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-3.983e-03, 1.897e-02, 5.812e-03, 8.255e-03, 1.229e-02, 3.097e-02, -1.039e-02, 4.437e-03, -1.218e-02, 8.685e-03, -2.322e-03, -1.031e-03, 1.236e-02, 3.657e-03, 3.407e-02, 9.097e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(-5.774e-03, 5.541e-04, 1.636e-02, 8.106e-02, -1.586e-02, -1.173e-02, -5.138e-03, -4.627e-02, 2.759e-03, -1.483e-02, 2.119e-02, 3.626e-02, -8.853e-03, 1.399e-02, -1.560e-02, -7.213e-03), r2);\n\tr3 = MulAdd(s0_2_2, M4(-2.422e-02, 1.268e-02, 7.511e-02, 1.679e-02, 1.186e-03, 1.621e-02, 2.083e-02, -1.892e-02, -1.537e-02, 9.949e-03, 5.188e-02, -1.937e-02, 3.090e-02, 7.357e-03, 3.148e-03, 3.126e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(-3.637e-02, -2.204e-02, 8.677e-02, 3.627e-02, 4.382e-02, -2.748e-02, 5.669e-03, -1.224e-02, -1.461e-01, 2.082e-02, 1.323e-02, 1.361e-02, -5.569e-02, 3.284e-02, 2.095e-03, -2.180e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(6.023e-02, 6.438e-02, 1.274e-01, 3.282e-02, 9.942e-03, 2.388e-02, 3.121e-02, -2.661e-02, 5.251e-03, 2.418e-03, 6.584e-02, -2.670e-02, 1.041e-02, -2.786e-02, -1.768e-02, 6.154e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(3.406e-02, -2.333e-01, 3.907e-02, 1.395e-02, 1.517e-03, -1.857e-01, -4.504e-02, 9.959e-04, -4.114e-02, -5.696e-02, 2.976e-02, -1.165e-02, 5.483e-02, 1.192e-02, -4.999e-02, 9.221e-04), r6);\n\tr7 = MulAdd(s0_2_2, M4(2.374e-02, -1.294e-01, 6.931e-03, 9.897e-02, -4.020e-03, 6.151e-03, -4.262e-03, 6.936e-02, 4.679e-03, 6.067e-02, -8.883e-03, 8.583e-04, 3.276e-03, -1.177e-01, 6.171e-03, -1.485e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(-7.457e-03, 1.602e-02, -5.222e-03, 4.241e-03, -1.051e-03, 1.631e-02, -1.401e-01, -8.019e-03, 4.540e-02, 3.394e-02, -2.704e-04, -2.417e-03, 1.469e-02, -1.857e-02, 1.179e-02, 1.035e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(9.246e-03, 7.689e-03, 1.293e-03, -9.436e-03, -1.221e-02, 1.841e-02, 1.267e-01, 3.270e-02, -1.250e-02, -4.165e-03, -1.447e-03, -3.048e-03, 4.790e-03, -2.384e-02, 1.063e-02, -2.362e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(3.330e-03, -6.581e-03, 3.383e-02, 3.133e-03, -4.530e-03, -1.959e-02, -1.724e-01, -1.018e-01, 8.212e-03, -2.860e-02, -8.685e-02, 5.018e-03, 1.032e-02, -2.723e-04, -3.381e-03, -5.355e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(9.777e-04, -4.826e-03, 2.328e-02, -1.714e-02, 1.768e-02, 1.435e-02, 3.113e-02, 1.979e-02, -2.415e-02, -3.242e-02, -6.709e-02, -1.691e-02, 2.496e-03, 7.877e-03, -6.326e-02, 8.310e-03), r3);\n\tr4 = MulAdd(s1_0_0, M4(8.696e-03, -4.377e-03, 1.008e-02, -3.912e-04, 1.990e-03, 2.182e-01, -6.958e-03, -2.107e-02, 4.350e-02, 6.579e-04, 3.261e-02, 4.971e-03, -1.359e-02, 2.359e-04, -6.338e-03, -2.863e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(-1.413e-02, 3.494e-03, 9.038e-03, -1.278e-02, -3.947e-02, 4.531e-02, -2.848e-02, 1.745e-01, 2.720e-02, -1.201e-02, 2.954e-02, -1.587e-02, 4.600e-03, 1.365e-02, 2.160e-02, 2.458e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-4.630e-03, 3.248e-02, -5.154e-03, -6.172e-03, -1.155e-01, 1.901e-02, 1.267e-02, -2.374e-02, 3.970e-03, -1.560e-02, 1.645e-02, 9.046e-03, 1.560e-02, -6.877e-02, -1.286e-02, -1.702e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-6.759e-03, 4.032e-03, -5.506e-03, 3.737e-04, -1.237e-02, 2.448e-02, -3.430e-02, 7.355e-03, -1.078e-02, 9.481e-03, -1.402e-02, -1.677e-02, -2.770e-03, -5.739e-03, 1.021e-03, 1.516e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(7.777e-03, 7.496e-03, 3.909e-03, -2.691e-02, -1.814e-02, -2.805e-02, 7.467e-03, -6.988e-02, 3.286e-02, -1.948e-01, -3.576e-02, -5.130e-03, -1.436e-02, 1.285e-01, 3.178e-02, 8.331e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-3.717e-03, 9.299e-03, -7.338e-03, 1.020e-02, -1.140e-02, 3.203e-02, -3.232e-01, -5.468e-03, -2.010e-02, -1.587e-02, -1.711e-02, 4.386e-02, 5.804e-02, 7.843e-03, 2.413e-02, -1.561e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(-5.107e-03, -2.158e-02, 1.191e-02, -1.209e-03, 4.469e-03, 7.202e-03, -1.044e-01, -5.776e-02, 1.548e-02, 6.575e-03, 8.877e-02, -8.499e-03, -1.935e-02, -9.063e-03, 1.844e-02, 1.248e-01), r2);\n\tr3 = MulAdd(s1_0_1, M4(-4.162e-02, -3.530e-02, -5.135e-02, -1.858e-02, -1.891e-02, -1.374e-02, 4.602e-02, 4.200e-02, -1.076e-01, 1.054e-01, -1.205e-01, 5.416e-02, 8.942e-02, -1.373e-02, 2.986e-01, 2.353e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(-1.362e-02, 1.161e-02, -6.899e-03, -1.432e-02, -1.733e-03, 8.951e-02, 5.553e-03, -2.839e-02, 7.625e-03, 4.721e-03, 9.472e-02, 2.555e-02, -1.058e-02, 2.194e-02, 2.164e-01, 3.993e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.843e-02, -1.083e-02, 3.474e-02, -3.700e-03, -3.124e-02, 1.876e-02, -2.350e-02, -3.272e-01, 1.320e-01, -6.070e-02, 7.305e-02, -1.169e-02, 2.186e-02, 5.625e-02, -3.123e-02, 1.967e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-2.817e-03, -8.921e-02, -2.656e-03, -1.344e-03, 2.450e-01, 6.890e-02, -6.658e-02, -1.559e-02, -1.113e-02, 2.680e-04, 2.740e-02, 3.111e-02, 6.980e-03, 4.977e-02, 1.287e-02, -6.803e-03), r6);\n\tr7 = MulAdd(s1_0_1, M4(3.922e-03, 3.357e-02, -2.274e-02, 3.514e-02, -1.694e-02, 6.249e-03, 5.964e-03, -1.701e-03, 1.044e-01, -1.034e-02, -1.273e-02, 8.711e-02, -1.490e-01, 2.123e-02, 2.413e-03, 3.122e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(1.080e-03, 4.187e-02, 6.514e-03, 8.510e-03, 1.694e-02, 3.913e-02, 1.184e-01, 1.640e-02, 1.537e-02, 1.713e-02, 1.876e-02, 2.713e-02, 4.903e-03, -2.137e-02, 8.848e-03, 1.958e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-4.924e-03, -5.702e-03, 4.127e-03, 2.579e-05, -3.286e-03, -1.053e-03, 3.267e-02, -1.985e-02, -8.548e-03, -5.980e-03, 2.826e-02, 1.362e-02, 1.977e-02, -2.558e-02, -2.647e-03, -1.017e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(-1.468e-02, 6.294e-03, -4.127e-02, 1.187e-02, -5.763e-03, 1.026e-02, 3.603e-03, 2.997e-02, 1.738e-02, 2.559e-02, -6.732e-03, 3.232e-02, -4.623e-03, -2.247e-03, 3.925e-03, -2.233e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(3.845e-02, 9.169e-03, -3.693e-03, 3.896e-02, -6.329e-03, 8.361e-03, 4.188e-02, 1.342e-02, 3.229e-03, 3.019e-02, 1.811e-01, 5.364e-02, -3.197e-02, -1.094e-03, -2.825e-02, -1.309e-02), r3);\n\tr4 = MulAdd(s1_0_2, M4(6.566e-03, 1.824e-02, -1.322e-02, 6.932e-03, 8.027e-03, -1.998e-01, -1.690e-02, -1.727e-03, 5.594e-02, 1.100e-02, 1.336e-01, 5.185e-02, 1.189e-02, 7.989e-03, 4.624e-03, -1.321e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(8.988e-03, 7.249e-03, 7.090e-03, -6.490e-03, 3.921e-03, -3.384e-02, 5.193e-02, 1.733e-01, 3.842e-02, 5.066e-02, 2.045e-02, 1.461e-02, 2.299e-02, 1.240e-02, 2.122e-02, 6.243e-03), r5);\n\tr6 = MulAdd(s1_0_2, M4(-1.019e-02, 8.833e-02, 1.514e-02, 1.092e-02, -1.854e-01, -2.060e-03, -7.420e-03, 2.386e-02, 4.237e-03, -3.434e-02, 1.321e-02, 5.962e-03, 6.339e-03, -1.051e-03, 1.652e-02, -3.090e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-1.178e-02, -1.901e-02, 2.294e-03, -1.289e-02, -3.921e-03, -3.049e-02, -2.508e-02, -1.965e-02, -3.526e-02, -4.529e-02, 3.058e-02, -5.303e-02, 1.602e-02, 1.163e-02, -6.228e-03, -3.586e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(3.329e-03, 5.768e-02, -8.945e-03, -1.740e-02, -6.184e-02, -7.327e-02, 3.051e-01, -1.495e-02, 3.035e-02, 1.023e-01, 4.544e-02, 5.619e-02, 3.369e-02, 4.247e-02, 3.355e-02, -1.470e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.286e-02, 9.117e-03, 1.733e-02, -1.772e-02, -5.565e-03, 1.022e-02, -3.037e-01, -1.813e-02, -2.108e-03, 2.846e-02, 1.638e-02, -7.009e-04, 2.992e-02, -4.911e-02, -6.112e-03, -1.977e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(-7.768e-03, -6.568e-03, 2.299e-01, 6.946e-02, 1.039e-02, 3.227e-04, -1.970e-01, -1.166e-01, 1.146e-02, 5.660e-03, 7.155e-02, 3.278e-02, -7.967e-03, -7.886e-02, -2.138e-01, 1.170e-02), r2);\n\tr3 = MulAdd(s1_1_0, M4(5.510e-03, 3.235e-02, 8.392e-03, 8.870e-03, -2.323e-02, -8.682e-03, -1.689e-02, 2.440e-02, 8.798e-03, 1.794e-02, 3.089e-02, -5.112e-03, -2.272e-01, -5.592e-02, -5.011e-02, -3.123e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(1.899e-02, -2.169e-02, 1.080e-02, -1.962e-02, 2.043e-02, -2.835e-01, 1.224e-02, -3.608e-02, 2.376e-02, -1.522e-03, -4.519e-03, -3.680e-03, -4.409e-02, 1.783e-02, -4.334e-02, -2.949e-03), r4);\n\tr5 = MulAdd(s1_1_0, M4(-5.603e-02, -9.281e-03, -1.586e-02, 8.399e-03, -4.453e-02, 2.699e-02, -4.776e-02, 5.906e-02, 6.417e-03, -1.075e-03, 6.513e-02, 2.976e-03, -4.574e-02, 8.110e-02, -1.499e-01, 7.753e-03), r5);\n\tr6 = MulAdd(s1_1_0, M4(-4.536e-03, -2.534e-02, 7.918e-03, -8.997e-03, -9.992e-02, 1.071e-02, -1.579e-02, 2.564e-02, 8.321e-03, 9.870e-02, 2.694e-02, -8.649e-03, 1.226e-02, -4.786e-02, 2.364e-02, -1.590e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(3.654e-02, 1.634e-03, -7.705e-03, 1.996e-02, -1.350e-02, 1.001e-02, -2.090e-02, 1.590e-03, -8.571e-03, -2.747e-03, 1.703e-02, 2.897e-02, 5.895e-02, 3.115e-02, -5.451e-02, 6.862e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-2.316e-02, -1.330e-01, -5.042e-02, 8.038e-02, -1.051e-02, -7.790e-02, -1.381e-01, -6.669e-02, 5.720e-02, 3.818e-01, 1.069e-01, 1.155e-01, -2.634e-01, 1.447e-01, 5.681e-02, -1.289e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(8.617e-02, 1.775e-02, -2.765e-02, 7.716e-03, -1.450e-02, 1.122e-02, 7.876e-01, 1.452e-02, 8.179e-02, 2.900e-02, 1.519e-02, -3.743e-02, -1.855e-01, 3.957e-01, 1.775e-03, 1.526e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.724e-01, 2.019e-02, 1.332e-03, 8.901e-02, 2.117e-02, -1.105e-03, -4.705e-02, -1.646e-01, 5.595e-02, 5.595e-02, -3.744e-02, -2.966e-01, -7.244e-02, -7.028e-02, -3.743e-02, 2.974e-01), r2);\n\tr3 = MulAdd(s1_1_1, M4(-3.654e-02, 1.102e-01, -2.374e-02, 7.211e-02, -8.819e-03, 9.520e-03, 1.475e-02, 3.059e-02, 3.438e-01, 2.433e-02, -5.545e-03, 9.827e-02, -1.426e-03, 3.852e-02, -3.565e-01, 3.059e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.187e-02, -4.936e-02, -1.769e-01, 2.282e-02, 2.023e-02, -2.145e-01, -4.198e-02, -6.134e-02, -2.408e-02, -1.736e-03, -7.233e-02, 3.573e-02, 5.529e-02, 5.531e-02, 7.275e-02, -7.060e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(1.562e-01, 1.204e-01, -1.085e-02, -1.198e-03, -2.973e-02, -2.753e-02, -1.398e-01, -1.116e-01, 1.054e-01, 1.192e-01, 1.191e-01, -9.158e-02, -5.578e-04, -1.951e-01, 5.742e-02, 6.692e-02), r5);\n\tr6 = MulAdd(s1_1_1, M4(1.271e-02, -4.713e-03, -5.824e-02, -1.452e-02, 1.937e-02, -5.062e-02, 1.096e-02, -2.592e-03, -1.019e-01, -2.122e-01, 4.066e-02, -1.713e-02, 5.089e-02, 1.819e-01, 3.208e-02, -3.206e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(3.028e-01, 7.556e-02, 2.700e-02, 6.696e-02, 1.039e-02, -5.122e-02, 3.716e-02, -1.362e-01, -2.916e-01, -9.187e-02, 5.463e-02, -8.511e-02, 9.027e-02, 1.295e-01, -6.526e-02, 8.029e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-8.051e-03, -6.207e-02, -2.492e-02, 1.001e-01, 3.107e-02, 2.434e-02, -2.219e-01, -2.684e-02, 1.200e-01, 1.234e-01, 8.539e-02, 7.829e-02, -2.660e-02, 1.023e-01, 4.663e-02, -2.523e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(1.861e-02, -8.423e-02, -3.044e-03, -7.324e-03, -7.872e-03, 1.584e-02, -1.290e-01, 4.341e-02, 1.044e-01, 5.707e-02, 6.059e-02, 4.747e-02, -4.425e-02, 2.169e-02, 2.564e-02, 1.294e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-2.703e-02, 3.863e-02, -1.907e-03, -1.009e-01, 4.896e-03, -1.836e-02, 2.361e-02, -7.096e-02, 3.217e-02, 3.077e-02, 3.121e-02, -8.957e-02, 1.669e-02, -5.893e-03, 2.019e-02, 4.674e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.931e-02, 3.592e-02, -2.686e-02, 1.016e-01, 3.235e-02, 1.627e-02, 3.669e-02, 3.873e-02, 2.655e-02, 5.571e-02, -4.172e-04, 1.199e-01, 2.873e-04, 1.070e-02, 4.267e-02, 1.407e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-1.356e-02, -1.621e-02, 6.122e-02, 2.685e-02, 1.036e-02, 3.857e-01, -2.975e-02, -2.660e-02, -2.271e-02, 1.180e-01, 1.569e-01, -1.094e-02, -4.355e-03, 3.762e-02, 3.043e-02, 2.787e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(-3.197e-02, 1.213e-01, 5.625e-03, -2.804e-02, -2.494e-02, -4.142e-02, -6.713e-03, 1.796e-02, 1.864e-01, 6.209e-02, 9.787e-02, -2.723e-02, 6.793e-02, -1.972e-01, 1.116e-03, 3.691e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(-1.367e-02, 6.184e-02, 6.174e-02, -1.824e-02, 6.932e-02, -5.621e-02, -6.030e-04, 3.373e-02, -5.146e-02, 1.415e-01, -4.131e-02, 3.248e-02, 4.285e-02, -3.411e-02, -3.381e-02, 1.171e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(3.610e-03, 3.062e-02, 2.402e-02, -6.869e-02, -7.583e-03, -4.366e-02, -4.151e-03, 1.158e-02, 8.275e-02, 1.679e-02, 1.510e-02, -4.262e-01, -1.331e-02, 1.015e-01, 1.933e-03, 3.646e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(5.423e-03, -8.942e-02, -2.030e-02, -1.440e-02, -5.377e-03, 2.274e-03, -1.910e-01, 1.474e-03, 2.695e-02, -5.569e-04, 5.160e-03, 5.527e-03, -8.992e-02, 2.735e-02, 1.443e-02, -2.583e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(8.922e-03, -2.151e-02, -3.329e-02, 1.320e-03, 9.494e-04, 1.261e-02, 5.694e-02, 1.942e-02, 7.529e-03, 6.147e-03, 9.555e-03, -2.996e-03, 3.269e-03, 4.092e-02, 2.569e-02, -8.132e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.021e-02, 2.643e-02, 7.415e-02, -7.724e-02, -8.169e-03, -1.418e-03, -9.806e-02, 2.346e-02, 6.720e-04, -1.909e-03, 3.530e-02, 2.400e-02, 3.335e-03, 3.174e-02, -5.351e-03, -3.846e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(2.797e-02, -8.277e-03, -1.580e-03, 2.048e-02, -4.260e-02, -8.880e-03, -6.121e-03, -4.910e-03, -8.130e-02, -1.035e-02, 2.174e-02, -1.149e-03, -9.776e-02, 1.203e-02, 1.629e-02, 2.695e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(1.193e-02, -8.569e-03, -5.850e-03, 2.316e-02, 1.535e-03, 1.401e-01, -6.226e-03, 3.374e-04, 5.963e-02, 1.128e-02, -7.360e-03, -3.721e-03, 7.684e-02, 1.911e-02, 4.137e-03, 5.165e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(1.763e-02, 2.665e-02, -7.969e-02, 2.151e-02, -4.933e-03, 1.494e-02, -2.735e-02, -1.919e-01, -8.535e-03, 7.451e-03, -3.082e-04, 1.949e-02, 1.072e-02, 1.453e-02, 5.197e-02, 2.311e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(2.399e-02, -1.821e-01, -6.983e-03, -4.257e-03, 1.547e-01, -1.688e-03, -2.715e-03, -1.089e-02, 2.422e-02, 1.862e-01, -1.085e-02, 1.257e-03, 1.952e-02, 1.413e-01, 2.361e-02, -5.586e-03), r6);\n\tr7 = MulAdd(s1_2_0, M4(-1.078e-02, -1.045e-02, 2.728e-02, 6.898e-02, -4.865e-03, 2.806e-02, 2.284e-02, 4.488e-03, 6.961e-03, -1.541e-02, 2.061e-02, 6.052e-03, -6.080e-03, 1.010e-02, 1.913e-02, 8.997e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(1.123e-01, -1.066e-02, -7.128e-03, -4.180e-03, 4.157e-03, -8.632e-03, 7.563e-02, 2.173e-03, -1.082e-01, -2.317e-02, 2.483e-02, 1.076e-02, -3.795e-02, -3.388e-02, -1.974e-02, 8.700e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-2.910e-02, 1.689e-02, 5.304e-03, -3.341e-03, -2.022e-02, -5.708e-03, -2.739e-01, -2.904e-02, 2.653e-02, 1.315e-02, 2.814e-02, 1.371e-02, 7.682e-03, -2.624e-02, -2.472e-02, -3.148e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(5.841e-02, -1.496e-02, 5.911e-02, 1.465e-01, 7.947e-04, -1.584e-02, -1.142e-02, -5.066e-02, -4.082e-03, 1.200e-02, -2.946e-03, -6.914e-02, -1.833e-02, 2.684e-03, -2.307e-02, 1.402e-01), r2);\n\tr3 = MulAdd(s1_2_1, M4(-3.505e-02, 1.141e-02, -9.401e-03, 2.957e-02, 1.520e-02, -3.274e-03, -1.609e-03, -1.447e-02, 7.909e-02, -5.152e-03, 5.933e-03, 1.614e-02, -6.598e-03, -1.522e-02, -4.242e-02, -2.286e-02), r3);\n\tr4 = MulAdd(s1_2_1, M4(7.687e-02, -1.386e-02, -2.856e-02, 2.817e-02, -7.765e-02, 3.313e-02, 5.967e-03, -1.190e-02, 1.497e-02, 3.113e-02, 7.033e-03, -1.725e-03, 2.170e-01, 2.125e-02, 3.408e-03, 2.116e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(-8.275e-02, 4.110e-02, -4.274e-02, 7.544e-02, -4.190e-02, 7.548e-03, -5.742e-02, 3.170e-01, 9.376e-03, -6.212e-03, 8.327e-02, -1.348e-02, -9.500e-03, 3.246e-02, -4.095e-02, 4.145e-02), r5);\n\tr6 = MulAdd(s1_2_1, M4(7.979e-02, 3.551e-01, 1.169e-01, -7.922e-04, -3.188e-01, -1.605e-01, 3.004e-03, -2.287e-02, -2.185e-02, 2.607e-01, -2.363e-02, 5.113e-03, 2.706e-02, 2.203e-01, -1.801e-01, 1.687e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(9.169e-02, 7.877e-02, -4.592e-03, 1.953e-01, -1.037e-03, -3.331e-02, -4.253e-02, -2.892e-02, 4.445e-02, 2.519e-02, 6.334e-04, -2.484e-01, -1.764e-02, 9.583e-02, 2.585e-04, 9.760e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.680e-02, 2.450e-02, -1.982e-02, 7.306e-03, 5.544e-03, 2.551e-02, 1.538e-01, -4.414e-02, 3.461e-02, -5.225e-02, -1.059e-02, -4.235e-02, 3.532e-02, -1.327e-03, 1.312e-02, -1.489e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(3.634e-02, -9.181e-03, -1.526e-02, 3.045e-03, -8.391e-03, 2.019e-02, 2.355e-02, -3.235e-02, 1.338e-02, -5.559e-02, 8.676e-03, -6.682e-03, 9.631e-03, -3.259e-03, 1.307e-03, -1.101e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(1.607e-02, 3.929e-03, 4.186e-03, -1.568e-03, 1.180e-02, -1.161e-02, 1.108e-02, 6.015e-03, 3.419e-02, 2.099e-03, 3.241e-02, 4.540e-02, 4.911e-04, 8.697e-03, 1.317e-02, 4.359e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-6.471e-03, -6.703e-03, -2.105e-02, -2.756e-02, 8.202e-03, 6.064e-03, -2.819e-03, 1.796e-02, -1.882e-02, -3.956e-02, -7.276e-03, -2.845e-02, 4.673e-02, 5.217e-03, 2.308e-03, 1.386e-03), r3);\n\tr4 = MulAdd(s1_2_2, M4(-1.325e-01, -3.894e-02, 5.440e-03, -9.399e-02, -2.020e-02, -2.550e-01, -5.470e-03, -4.160e-02, 2.826e-01, 5.318e-04, -5.378e-03, 2.117e-02, 7.752e-02, 2.357e-02, -3.012e-02, 8.659e-03), r4);\n\tr5 = MulAdd(s1_2_2, M4(3.303e-02, 1.632e-02, -3.005e-02, -3.293e-02, 4.267e-03, -5.268e-02, -1.560e-02, -2.189e-01, -4.589e-02, 1.518e-02, 9.793e-02, -1.482e-02, -3.699e-02, 7.507e-03, 3.157e-02, 1.258e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(-3.459e-02, -1.798e-01, 8.206e-03, -9.487e-03, 1.460e-01, -1.415e-01, 3.501e-02, 1.525e-02, -1.405e-02, -1.221e-01, 3.201e-02, 1.686e-02, 9.377e-03, 3.470e-02, -4.402e-03, 5.753e-03), r6);\n\tr7 = MulAdd(s1_2_2, M4(1.072e-02, 6.760e-02, 2.593e-03, -1.160e-01, -8.068e-04, -1.304e-02, 1.863e-02, -4.527e-03, 3.579e-02, -6.086e-02, -1.705e-03, 7.441e-02, 3.304e-02, 3.156e-03, 3.829e-03, 5.946e-02), r7);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(3.247e-02, 2.445e-02, 4.422e-03, 3.429e-02, -2.107e-02, -6.812e-02, -2.260e-02, -4.861e-03, 1.918e-02, 5.191e-02, 4.333e-02, 2.867e-03, 8.689e-03, 4.460e-02, 1.023e-02, 1.967e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(2.774e-02, 4.544e-03, 3.927e-04, 2.446e-02, 7.979e-03, -6.214e-04, -2.375e-02, 4.624e-03, -9.918e-03, 3.016e-03, 4.524e-02, -2.445e-02, 7.093e-03, 1.054e-03, 2.020e-02, 1.057e-02), r1);\n\tr2 = MulAdd(s0_0_0, M4(1.676e-02, 2.207e-02, 3.741e-02, 2.610e-03, -6.781e-03, -9.982e-03, 3.745e-02, 4.794e-02, 1.270e-02, -1.173e-02, 1.675e-01, -4.716e-02, 1.207e-03, 1.441e-02, -6.229e-02, 1.829e-02), r2);\n\tr3 = MulAdd(s0_0_0, M4(4.425e-02, 5.015e-02, 4.431e-03, 2.479e-02, 1.794e-02, 4.469e-02, -8.891e-03, -6.527e-03, -1.211e-01, 4.767e-03, 3.877e-02, -1.498e-02, 4.593e-02, -2.204e-02, -2.100e-02, 3.330e-02), r3);\n\tr4 = MulAdd(s0_0_0, M4(1.061e-02, -1.836e-02, 1.423e-02, -1.020e-02, -4.456e-02, -3.590e-02, -2.975e-02, -2.002e-02, -3.795e-03, 3.267e-02, 2.071e-02, -7.400e-03, -5.502e-04, 1.906e-02, 4.799e-02, -1.293e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(2.097e-02, 1.336e-02, 1.327e-02, -1.874e-02, -5.762e-03, -1.149e-02, -1.448e-02, -1.617e-02, -1.169e-01, -5.375e-02, -2.570e-02, 9.062e-03, 4.390e-03, 6.597e-03, 1.151e-02, -3.722e-03), r5);\n\tr6 = MulAdd(s0_0_0, M4(-1.071e-02, -1.225e-01, -1.147e-02, 4.771e-03, -1.753e-02, -1.246e-01, 7.456e-03, -7.683e-03, 3.726e-02, -1.304e-01, -2.978e-02, 1.867e-02, -1.223e-02, 5.968e-02, 5.511e-03, 6.982e-03), r6);\n\tr7 = MulAdd(s0_0_0, M4(9.419e-02, -3.177e-02, 9.391e-03, 5.607e-02, 4.777e-02, -1.554e-03, -2.029e-02, -1.617e-02, 3.233e-02, 1.616e-02, 5.542e-03, -7.696e-03, -1.096e-02, 7.612e-03, 1.683e-02, -1.048e-02), r7);\n\tr0 = MulAdd(s0_0_1, M4(-2.736e-03, 1.958e-01, 2.537e-02, -2.006e-02, -2.754e-02, 6.495e-03, 1.588e-02, -2.021e-02, -3.922e-03, -1.386e-02, -2.112e-02, 1.204e-02, 4.888e-03, 9.579e-02, 1.630e-02, -1.866e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(9.198e-02, 6.417e-02, 2.051e-03, 6.033e-02, 1.387e-02, -4.291e-03, 3.884e-03, -1.727e-02, -4.845e-03, -2.899e-02, -4.097e-02, 1.135e-02, -3.209e-03, 6.323e-03, 3.998e-03, -7.700e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(7.270e-02, 3.419e-02, 1.298e-02, 3.239e-02, -5.060e-03, -1.035e-02, -6.049e-02, -8.863e-02, 5.344e-03, -2.258e-02, -2.468e-01, -3.460e-02, 1.603e-02, -4.043e-02, 1.224e-01, -1.866e-01), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.873e-02, -9.924e-02, -2.065e-01, -9.729e-02, 8.379e-02, -3.654e-02, 1.313e-01, -8.774e-02, 9.203e-02, 2.402e-01, 1.155e-02, 5.175e-02, 1.661e-02, -9.623e-02, 1.099e-01, -9.621e-02), r3);\n\tr4 = MulAdd(s0_0_1, M4(-1.627e-02, -5.174e-03, 5.435e-02, 4.327e-03, -2.751e-02, -3.576e-02, -2.462e-02, 5.239e-02, -7.212e-03, -1.696e-02, -1.030e-01, 2.176e-02, -2.731e-03, 2.093e-02, -1.485e-01, -3.402e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(1.228e-01, 1.129e-01, -4.129e-02, -9.205e-03, 2.299e-02, -1.962e-02, -6.218e-02, -3.559e-02, -1.121e-01, -4.248e-02, -5.969e-02, 4.440e-03, -6.008e-02, 4.523e-03, -1.005e-01, 1.516e-02), r5);\n\tr6 = MulAdd(s0_0_1, M4(-9.217e-03, 2.044e-02, 1.047e-02, 3.265e-02, -1.585e-02, 1.165e-01, -1.009e-02, -1.381e-02, 1.159e-02, 6.516e-03, -4.175e-03, 8.138e-03, 1.594e-02, 6.859e-02, 3.714e-03, 1.792e-02), r6);\n\tr7 = MulAdd(s0_0_1, M4(3.833e-02, 8.483e-02, 6.207e-03, -2.389e-03, 3.746e-02, -1.748e-02, 8.824e-03, -6.621e-02, -3.942e-02, 6.616e-02, -1.612e-02, -3.541e-02, 6.894e-03, -1.495e-02, -3.532e-02, -1.863e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(-2.045e-03, 2.449e-02, 2.844e-02, -2.362e-02, -8.888e-03, -9.330e-03, -3.240e-02, -3.276e-03, -5.085e-03, -3.471e-02, 1.181e-02, -6.295e-03, 2.984e-02, 3.172e-02, 5.034e-03, 4.106e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.009e-03, 1.315e-02, 9.784e-03, 2.386e-02, 4.727e-03, -4.151e-03, -1.426e-02, -1.144e-02, -1.622e-02, -1.251e-02, 1.034e-02, 3.792e-04, -2.240e-04, -1.920e-02, 6.469e-03, 6.448e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(-1.193e-03, -2.160e-03, -2.364e-02, -3.042e-02, 4.182e-04, 2.422e-04, 2.946e-02, -1.325e-02, 2.529e-02, 9.106e-03, 7.420e-03, 2.506e-02, -5.981e-03, -8.992e-03, -3.199e-02, 5.485e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-1.944e-03, 1.014e-02, 2.109e-02, -1.176e-02, -3.592e-02, -5.065e-03, -1.176e-02, -2.643e-02, -1.927e-02, -3.553e-02, 4.466e-03, -4.176e-02, -1.652e-02, -1.455e-02, -5.167e-02, -4.763e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-8.675e-04, 2.152e-02, -9.117e-03, -3.627e-02, -3.409e-02, -3.868e-02, 2.395e-02, 1.055e-02, -7.962e-03, -1.834e-02, -5.173e-02, -3.777e-03, 1.081e-02, 9.338e-03, 8.033e-02, 5.210e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(-4.162e-02, -4.052e-02, 6.353e-03, 2.505e-02, 2.662e-02, 4.702e-02, 5.472e-03, -1.444e-02, 5.831e-03, -1.165e-01, 2.637e-02, 4.307e-03, 4.516e-02, -1.247e-02, -2.307e-02, -2.270e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(1.594e-02, -7.651e-02, 5.071e-03, 2.962e-02, -1.055e-02, -2.765e-02, -1.115e-02, 3.322e-04, 7.933e-04, -3.294e-01, -1.880e-02, -2.311e-02, -1.926e-02, 6.626e-02, 1.088e-02, 1.033e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-1.231e-02, -4.957e-02, 1.322e-02, -3.060e-02, 9.647e-03, 2.091e-02, -7.513e-03, 1.349e-02, -7.666e-03, -3.497e-02, -2.038e-03, 1.571e-03, -9.686e-03, -7.690e-02, -1.224e-02, 9.441e-03), r7);\n\tr0 = MulAdd(s0_1_0, M4(8.467e-02, 3.851e-02, -1.292e-02, 3.756e-02, -9.184e-02, 5.835e-03, 9.368e-04, -3.071e-02, 1.191e-01, -5.975e-03, -5.334e-02, -3.442e-02, 6.667e-02, 6.369e-02, 1.543e-02, 1.146e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(7.663e-02, -7.978e-03, -8.637e-04, 1.370e-02, 7.366e-02, 2.672e-02, -1.936e-02, -3.747e-02, 6.574e-04, 2.449e-02, -5.513e-02, -1.985e-02, 4.891e-03, -2.638e-02, -7.621e-04, 5.607e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(4.371e-02, 3.065e-02, -1.840e-01, -1.692e-02, 2.349e-02, 3.782e-03, -4.739e-01, -6.287e-03, 3.132e-02, -1.217e-02, 1.443e-01, 6.665e-02, 1.381e-02, 1.978e-02, -1.218e-01, -9.787e-02), r2);\n\tr3 = MulAdd(s0_1_0, M4(-9.716e-02, -1.540e-02, -8.482e-03, -3.034e-02, -2.163e-01, 7.449e-02, -9.722e-03, 2.893e-02, 2.793e-01, 2.147e-02, -6.111e-02, -2.617e-04, -1.279e-01, 9.274e-04, 5.058e-02, 2.642e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(-3.590e-02, -2.242e-02, -2.179e-02, 1.047e-02, -4.451e-02, 8.406e-03, -4.041e-04, 5.473e-02, 1.122e-01, -6.718e-02, -7.119e-02, -3.936e-02, 4.824e-02, 3.809e-03, -2.079e-02, -1.249e-03), r4);\n\tr5 = MulAdd(s0_1_0, M4(5.175e-02, -5.988e-03, 6.816e-02, -5.288e-02, 1.652e-02, -1.317e-02, -1.305e-02, -1.338e-02, -1.547e-02, -8.737e-02, -1.691e-01, -6.978e-02, 2.376e-02, 5.201e-02, -2.541e-02, 1.635e-03), r5);\n\tr6 = MulAdd(s0_1_0, M4(-3.511e-02, 5.232e-02, -3.886e-03, -8.405e-04, -3.445e-03, -1.538e-01, -4.100e-02, 1.020e-02, -8.052e-02, 6.614e-02, 1.591e-02, -5.360e-02, 1.370e-02, 1.151e-02, 1.685e-02, 7.141e-03), r6);\n\tr7 = MulAdd(s0_1_0, M4(5.030e-02, -2.296e-02, 3.698e-02, 8.151e-02, -5.429e-02, -4.137e-03, 2.446e-03, -1.044e-01, 4.021e-02, 4.430e-02, -4.115e-02, -5.990e-02, 1.128e-02, 3.556e-03, 3.805e-02, 1.652e-02), r7);\n\tr0 = MulAdd(s0_1_1, M4(1.807e-01, -1.894e-01, -3.800e-02, -2.073e-01, 4.882e-03, -1.008e-01, 9.987e-03, -3.234e-01, 5.441e-02, -9.351e-02, 3.484e-02, 2.540e-01, -5.725e-02, -4.892e-02, -6.098e-02, -4.832e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-5.306e-02, -4.848e-02, 1.034e-02, 1.603e-03, 3.018e-03, 2.003e-01, 1.370e-02, -7.887e-02, 5.872e-02, -8.589e-02, 8.897e-02, 2.407e-02, 1.947e-02, 4.671e-02, -4.538e-02, -2.400e-03), r1);\n\tr2 = MulAdd(s0_1_1, M4(2.475e-01, 1.702e-02, 7.591e-02, 7.274e-02, 3.256e-02, -2.786e-02, -2.513e-02, -2.061e-01, 4.162e-02, -5.384e-02, -1.725e-01, 4.957e-02, -1.153e-01, -2.267e-02, -2.745e-03, -1.695e-01), r2);\n\tr3 = MulAdd(s0_1_1, M4(7.264e-02, 2.704e-02, 3.825e-02, 6.236e-03, -6.518e-02, -4.432e-02, -1.217e-01, -1.204e-01, -2.461e-01, 1.307e-01, -5.938e-02, 4.543e-01, 1.711e-02, -7.573e-02, 4.248e-02, -7.518e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(6.734e-02, 2.906e-02, 4.828e-02, 1.587e-01, -1.076e-01, 2.952e-03, -1.224e-01, -1.607e-01, 2.687e-02, 1.151e-01, 1.511e-01, 7.425e-02, 5.108e-02, -5.974e-02, 2.788e-02, 4.931e-02), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.980e-02, 9.978e-02, 8.480e-02, -3.505e-02, -1.912e-01, -2.510e-01, -3.839e-02, -7.051e-02, 2.645e-01, 1.392e-01, 1.476e-01, 1.357e-01, -1.048e-01, -1.009e-01, 6.249e-02, -2.325e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(-4.945e-02, 1.215e-01, 2.725e-01, 3.670e-02, -7.701e-02, 1.251e-01, -6.787e-02, -2.951e-02, 9.364e-02, 9.705e-02, 6.678e-02, -1.652e-02, 2.385e-02, -5.728e-01, 5.067e-02, -3.176e-02), r6);\n\tr7 = MulAdd(s0_1_1, M4(9.298e-02, 2.870e-01, 3.259e-02, 5.253e-03, -1.170e-03, -3.730e-02, -1.425e-02, -3.482e-02, 3.145e-02, 4.745e-02, -4.875e-02, 5.740e-02, 1.450e-01, 1.004e-01, -4.680e-02, 2.684e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(3.427e-02, 3.408e-02, -8.046e-04, 4.471e-02, -8.067e-04, 5.924e-02, 2.432e-02, 9.642e-03, 1.183e-02, 6.551e-02, 3.561e-02, -2.336e-02, 1.703e-02, -5.522e-02, -2.632e-02, -1.533e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.149e-02, -2.416e-02, 1.103e-02, -2.313e-03, 2.846e-02, 3.208e-02, -2.687e-02, -1.869e-02, 7.678e-03, 2.641e-02, -6.989e-03, -1.486e-02, 2.752e-02, -2.932e-02, 9.913e-03, -4.102e-03), r1);\n\tr2 = MulAdd(s0_1_2, M4(-6.868e-03, 1.020e-02, 9.432e-03, 3.108e-02, -1.245e-03, 7.939e-04, 3.635e-02, -3.540e-02, 3.601e-02, -2.254e-02, 1.724e-02, 3.154e-03, -3.769e-03, 1.203e-02, -1.358e-02, -1.686e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-2.569e-02, -2.237e-03, -7.337e-05, 5.130e-02, 3.527e-02, -6.241e-03, -1.991e-02, -5.677e-02, 2.424e-02, 5.250e-02, 1.681e-02, 3.529e-02, 3.396e-03, -2.334e-02, -7.684e-02, -4.161e-02), r3);\n\tr4 = MulAdd(s0_1_2, M4(6.294e-02, -6.983e-04, -1.848e-02, -3.371e-02, -1.190e-02, 7.408e-03, -3.601e-02, -2.698e-02, -9.749e-03, 4.118e-02, 2.049e-02, 9.793e-02, 5.729e-02, -6.324e-02, -2.100e-02, -2.989e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-5.049e-03, -6.672e-03, -3.043e-02, 1.518e-02, -4.307e-02, -5.278e-02, -1.962e-02, -2.663e-02, -9.317e-03, -1.141e-01, -4.304e-02, -2.157e-02, -2.139e-02, -8.082e-02, 2.563e-02, 8.412e-04), r5);\n\tr6 = MulAdd(s0_1_2, M4(1.819e-02, 1.857e-01, -3.911e-02, 1.877e-02, -1.955e-02, -3.868e-02, 2.024e-02, 5.543e-04, -7.562e-03, 4.427e-02, 7.236e-03, -1.748e-03, -1.740e-02, 1.354e-01, 2.369e-02, -1.135e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(2.081e-02, 8.130e-02, 3.485e-03, 4.988e-03, -6.675e-03, 7.031e-02, -1.420e-02, -8.016e-04, 1.896e-02, -2.959e-01, -2.662e-04, -1.558e-01, -1.910e-02, 3.447e-02, 2.061e-03, -3.596e-03), r7);\n\tr0 = MulAdd(s0_2_0, M4(-3.542e-02, -6.665e-03, 3.309e-02, 2.739e-02, -1.807e-02, 1.956e-03, -1.193e-02, 5.889e-03, -1.110e-01, -1.120e-01, -4.487e-03, -1.875e-02, 4.034e-02, 4.609e-02, -3.729e-03, 4.079e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.873e-04, 1.223e-02, 1.951e-02, 4.014e-03, -2.029e-03, -3.115e-03, -3.211e-02, 8.444e-03, 1.327e-03, 5.642e-03, 9.380e-03, -2.667e-04, -2.085e-03, 8.331e-03, 1.655e-03, 1.123e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(-1.255e-03, -1.071e-02, -8.088e-02, 2.505e-02, -1.203e-03, -1.955e-03, 4.494e-02, -5.369e-02, 9.008e-03, -4.077e-03, -6.946e-02, -8.318e-02, 4.887e-03, -1.634e-03, 8.170e-03, -4.656e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(1.605e-03, 2.224e-02, -6.820e-03, 2.917e-02, -1.154e-02, 1.054e-02, -2.797e-02, -1.852e-03, -1.219e-01, -1.629e-02, -1.809e-02, -1.921e-03, 6.194e-02, -3.602e-03, -9.418e-03, -8.279e-03), r3);\n\tr4 = MulAdd(s0_2_0, M4(4.756e-02, 3.262e-02, 5.298e-03, -1.123e-02, 1.484e-02, -2.269e-02, -1.799e-02, -1.338e-03, -1.503e-02, -1.334e-02, 2.932e-02, 4.040e-02, 6.422e-02, -6.673e-03, 6.075e-04, 1.566e-02), r4);\n\tr5 = MulAdd(s0_2_0, M4(-3.260e-02, -7.769e-03, -1.001e-02, 2.463e-02, -1.873e-02, 8.493e-03, -1.976e-03, -2.680e-02, 3.155e-02, -2.113e-02, 1.135e-01, 2.106e-02, -6.675e-03, 4.055e-03, -2.216e-02, -1.955e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(1.955e-02, 5.215e-02, -3.457e-02, 1.222e-02, -1.251e-02, -1.648e-01, 2.787e-02, 1.053e-03, 8.541e-03, 2.088e-01, -2.505e-02, 7.351e-03, -1.990e-02, -1.453e-01, 2.028e-02, -5.161e-03), r6);\n\tr7 = MulAdd(s0_2_0, M4(2.399e-02, 6.254e-03, -2.979e-03, -2.089e-02, 4.361e-03, -1.791e-02, -7.671e-03, -6.808e-02, 2.493e-02, -1.707e-02, -6.540e-03, -2.031e-02, -7.889e-03, 1.140e-02, 4.352e-04, -4.362e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(8.715e-02, 1.609e-02, 1.150e-02, -2.738e-02, -9.686e-02, -1.006e-02, 3.245e-02, -7.998e-02, -2.234e-01, -4.014e-02, -8.911e-02, -3.574e-02, -2.708e-04, -2.161e-02, -3.472e-02, -2.691e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-2.285e-02, 6.370e-04, 9.435e-03, 1.586e-02, -8.577e-03, 3.787e-02, -2.876e-03, -6.503e-03, 6.819e-02, -1.028e-01, -9.693e-02, -2.845e-02, 1.934e-02, -2.260e-02, -3.440e-03, 3.719e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.871e-02, 1.149e-02, 4.109e-02, 2.087e-02, -4.111e-03, -2.586e-02, -3.305e-02, -1.355e-02, -4.674e-02, -1.341e-02, -6.925e-02, 3.186e-02, -9.968e-03, -1.000e-02, -1.844e-02, -4.316e-02), r2);\n\tr3 = MulAdd(s0_2_1, M4(-6.539e-02, -7.291e-03, 1.231e-02, -1.017e-02, 3.074e-02, -7.670e-03, -8.639e-03, 5.553e-02, 6.268e-02, -3.665e-02, 1.502e-02, -7.479e-02, -6.912e-02, 8.522e-03, 2.264e-02, 4.231e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-1.352e-01, -1.486e-02, -4.086e-03, -1.656e-03, 1.576e-01, 1.084e-02, -1.823e-02, 5.679e-02, -1.558e-01, -9.401e-02, -2.660e-02, 6.245e-02, -9.752e-02, -7.913e-03, 6.939e-03, -3.897e-02), r4);\n\tr5 = MulAdd(s0_2_1, M4(2.383e-03, 5.459e-02, 6.250e-02, -5.402e-02, -4.503e-02, -7.547e-02, -8.869e-02, -8.547e-03, -4.870e-02, -8.433e-02, 1.894e-02, -1.042e-01, 1.391e-02, -1.309e-02, 1.700e-02, 1.793e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-5.334e-02, -1.738e-01, -2.798e-02, 1.286e-02, -1.974e-02, -2.585e-01, -1.160e-01, 1.017e-02, -7.845e-02, -2.913e-01, -5.333e-02, -6.627e-04, 2.781e-02, -3.860e-01, -4.063e-02, 7.434e-03), r6);\n\tr7 = MulAdd(s0_2_1, M4(-2.302e-02, 3.631e-03, 7.342e-03, 1.151e-02, 5.744e-02, 2.585e-02, -1.873e-02, -7.399e-02, 3.117e-03, 1.768e-02, -1.743e-02, -1.047e-02, 1.652e-02, -1.711e-06, 2.840e-03, -9.447e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(2.637e-02, 4.401e-02, 3.603e-02, 7.198e-04, 6.436e-03, -1.319e-02, -6.471e-03, 5.104e-02, -2.625e-02, -9.003e-02, -2.792e-03, -9.084e-02, -1.567e-02, -1.115e-05, -1.468e-02, 2.668e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-7.743e-03, 1.071e-02, 2.550e-02, 9.080e-03, 2.308e-02, 8.384e-03, -1.664e-02, 8.372e-03, -2.508e-02, -2.324e-02, 1.498e-02, 3.832e-03, -1.631e-03, -2.802e-03, -1.293e-02, 1.455e-04), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.293e-02, 3.655e-03, 1.684e-02, 2.158e-02, -1.057e-02, -1.100e-02, 1.702e-02, -1.569e-02, -3.055e-03, 1.378e-02, -3.127e-02, 1.915e-02, -1.098e-02, 3.229e-03, -9.285e-03, -2.108e-02), r2);\n\tr3 = MulAdd(s0_2_2, M4(5.507e-03, 1.004e-02, 9.104e-03, -2.910e-03, -4.561e-02, -1.478e-02, 2.090e-02, -2.318e-02, 3.225e-02, -6.465e-03, -4.894e-02, 4.249e-02, -1.609e-03, -4.329e-03, 3.124e-03, -3.016e-02), r3);\n\tr4 = MulAdd(s0_2_2, M4(1.272e-02, 2.918e-02, 9.992e-03, 7.190e-03, 4.753e-02, 9.061e-03, -5.999e-03, -1.292e-02, -2.455e-02, -1.048e-02, -6.520e-03, 5.766e-03, 3.369e-02, -4.312e-03, 1.421e-02, -1.437e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(1.641e-02, 4.833e-03, 1.633e-02, 1.189e-02, -9.911e-03, -2.862e-03, 1.899e-02, -9.628e-03, -1.104e-02, -6.718e-02, -3.684e-02, 7.112e-03, 5.628e-03, -6.968e-03, 1.830e-02, 8.021e-03), r5);\n\tr6 = MulAdd(s0_2_2, M4(8.795e-03, -1.846e-01, 4.271e-02, 7.210e-03, -3.186e-03, -2.068e-01, -1.648e-02, 3.535e-03, 3.562e-02, -1.335e-01, -6.168e-02, -1.540e-02, -7.189e-03, -6.424e-03, 5.072e-04, -4.757e-03), r6);\n\tr7 = MulAdd(s0_2_2, M4(-4.706e-03, -4.391e-02, 2.997e-03, 2.885e-04, -1.034e-02, 2.939e-02, -7.926e-03, -1.937e-02, -1.320e-02, -1.597e-01, 1.961e-02, -8.478e-03, 4.016e-03, -4.110e-02, -2.717e-03, -7.959e-03), r7);\n\tr0 = MulAdd(s1_0_0, M4(-6.993e-03, -1.340e-02, 3.583e-02, -1.424e-02, -9.317e-03, -8.433e-02, 5.970e-02, -3.612e-03, -2.055e-02, -2.143e-02, -8.613e-04, 1.263e-02, 9.544e-04, -5.069e-02, -4.162e-02, -1.104e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.352e-02, -1.087e-02, 6.112e-04, 3.014e-02, 1.541e-02, 1.946e-02, -4.084e-02, -1.538e-01, 6.708e-02, 2.423e-02, -1.866e-02, 2.946e-02, 1.203e-03, -3.895e-04, 2.472e-02, 1.154e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-3.479e-03, -9.781e-04, -1.132e-01, 2.580e-03, -1.593e-02, -2.495e-01, -9.525e-03, 1.408e-02, -1.217e-02, -3.318e-02, 1.277e-01, 5.182e-02, -4.129e-03, 1.251e-02, 2.022e-01, -1.925e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-5.463e-02, -3.094e-02, 7.043e-03, 5.771e-04, 4.081e-02, 2.574e-02, -6.408e-02, 3.323e-02, -5.260e-02, 1.372e-02, 1.004e-01, -1.688e-02, -4.430e-02, 3.749e-02, -1.563e-02, 1.552e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(-1.533e-02, 2.432e-02, -3.803e-02, 2.484e-02, 1.053e-02, -2.931e-02, 1.922e-02, -4.676e-03, -1.281e-02, -3.017e-02, 9.595e-03, 2.249e-02, 1.046e-02, -1.500e-04, 2.711e-02, -1.732e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(4.279e-02, 1.041e-02, -1.779e-03, 2.983e-03, 2.926e-02, 2.923e-02, 1.042e-02, -3.855e-02, 3.159e-02, 4.871e-02, 3.017e-02, -8.893e-03, 8.521e-03, -2.935e-02, 3.411e-02, 1.048e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(1.306e-02, 1.556e-02, 1.407e-04, 3.976e-03, 9.181e-02, 4.999e-02, 1.742e-03, 9.081e-02, 5.857e-03, 1.804e-02, 1.315e-02, 5.434e-03, -2.947e-02, -4.619e-02, 6.819e-03, -1.331e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(3.716e-03, -2.637e-02, 6.125e-03, -2.674e-02, 1.272e-02, -2.182e-02, 1.510e-01, 4.902e-02, 6.869e-02, -3.569e-03, -2.240e-02, 5.596e-02, 2.177e-02, 1.166e-02, -1.819e-02, 2.438e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(-2.703e-02, -5.600e-02, -4.968e-02, 1.470e-02, -2.996e-02, 6.084e-02, 2.486e-01, -2.896e-02, -3.998e-02, 2.025e-01, 4.718e-02, -3.467e-02, 9.364e-03, 4.573e-02, -9.367e-03, 4.095e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-8.071e-03, 3.197e-02, -5.201e-02, 7.724e-03, -2.311e-03, 4.419e-02, -2.515e-01, -5.279e-01, 1.209e-01, 1.139e-01, -9.652e-03, -2.023e-02, 1.114e-02, 4.567e-03, 5.842e-02, -1.074e-02), r1);\n\tr2 = MulAdd(s1_0_1, M4(4.198e-03, 3.906e-02, -3.918e-02, -1.385e-01, 5.298e-03, 1.392e-01, 4.746e-02, 5.784e-02, 2.018e-02, -7.562e-03, -1.193e-01, -1.931e-01, 7.358e-03, -3.791e-02, -3.825e-03, 3.382e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(3.986e-02, -9.576e-02, 1.189e-01, -1.189e-01, -1.438e-02, -9.955e-03, 1.813e-02, -1.037e-02, 5.528e-02, -1.922e-01, -3.127e-01, -1.464e-01, -5.188e-02, 6.915e-02, -8.120e-02, 9.250e-03), r3);\n\tr4 = MulAdd(s1_0_1, M4(6.224e-03, -4.254e-02, -7.391e-02, -5.085e-02, 1.203e-02, -2.624e-01, 4.281e-02, -3.121e-02, 1.066e-02, 2.595e-02, 7.891e-03, 4.870e-02, 1.691e-02, 8.232e-02, 4.726e-02, 2.332e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(-1.205e-01, -1.005e-02, -1.296e-01, -3.032e-02, 1.792e-02, 4.893e-02, 6.541e-02, -1.450e-01, -2.457e-01, 1.947e-02, -1.784e-01, -3.052e-02, -5.197e-02, -6.922e-03, 1.665e-02, 1.255e-02), r5);\n\tr6 = MulAdd(s1_0_1, M4(-1.994e-02, -2.639e-02, 1.678e-02, 3.034e-04, -1.245e-02, 1.138e-01, -2.199e-02, 4.230e-01, -8.509e-03, 1.700e-01, 3.355e-03, 5.180e-02, -9.282e-03, 1.111e-01, -1.545e-02, -1.388e-02), r6);\n\tr7 = MulAdd(s1_0_1, M4(-2.418e-02, -7.653e-02, 1.899e-02, -5.316e-02, -9.713e-03, -4.192e-02, -2.125e-01, 1.023e-02, 7.737e-02, -1.358e-02, -3.189e-02, -5.651e-02, 3.854e-03, 2.376e-02, -1.916e-03, -1.755e-02), r7);\n\tr0 = MulAdd(s1_0_2, M4(2.497e-02, -1.832e-02, 3.917e-02, -8.912e-02, -1.533e-02, -5.538e-02, 1.269e-01, -1.466e-02, 2.747e-03, -1.770e-02, 2.197e-02, -7.926e-02, -1.878e-03, -7.687e-02, -4.645e-02, 6.828e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(2.069e-02, 3.623e-02, 1.340e-02, 6.546e-03, -3.096e-03, -6.574e-03, 5.171e-02, -9.777e-02, 9.642e-03, 1.122e-02, 8.148e-03, 1.444e-02, -5.860e-03, -2.961e-02, -7.516e-03, -3.764e-02), r1);\n\tr2 = MulAdd(s1_0_2, M4(6.157e-03, -1.103e-02, 4.890e-02, 6.185e-02, -2.223e-02, 3.091e-02, -8.027e-03, 3.096e-02, -1.764e-02, -3.412e-02, -2.686e-02, 1.581e-01, -1.825e-02, -1.502e-02, -4.481e-02, -1.187e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(-2.844e-02, -1.989e-02, 8.862e-02, 1.918e-02, 1.380e-02, -3.633e-03, -5.188e-02, 2.763e-02, -2.239e-03, -4.664e-02, -7.169e-02, 7.141e-03, 6.062e-02, -1.257e-02, -2.687e-01, 6.677e-03), r3);\n\tr4 = MulAdd(s1_0_2, M4(-5.725e-03, 2.191e-02, -9.734e-02, -3.584e-02, -6.147e-03, -2.399e-01, 1.296e-03, 2.917e-03, -1.347e-02, 6.100e-03, -7.268e-02, -2.825e-02, -5.429e-03, 4.699e-02, -7.434e-02, -6.606e-03), r4);\n\tr5 = MulAdd(s1_0_2, M4(-3.414e-02, -7.856e-03, -7.194e-02, 2.634e-02, 3.918e-02, 1.272e-02, -1.379e-03, 1.746e-01, 4.944e-02, -5.796e-02, 1.686e-02, -1.672e-02, 2.002e-02, 3.251e-02, 3.349e-02, -4.382e-02), r5);\n\tr6 = MulAdd(s1_0_2, M4(4.546e-02, -3.827e-02, -1.803e-03, -3.071e-02, -1.313e-01, 2.062e-02, -6.652e-03, 9.995e-02, -5.680e-04, -1.185e-01, -6.042e-03, 1.524e-02, -8.626e-03, 4.217e-02, 1.079e-02, 9.611e-03), r6);\n\tr7 = MulAdd(s1_0_2, M4(5.041e-02, -8.716e-02, 1.098e-02, 3.304e-02, 4.062e-03, -4.288e-02, -2.248e-02, 1.821e-02, 2.332e-02, -8.808e-02, -1.317e-02, 1.255e-01, -1.506e-02, -2.486e-02, -2.009e-02, 5.439e-02), r7);\n\tr0 = MulAdd(s1_1_0, M4(-7.249e-02, -4.231e-02, -5.787e-02, 9.237e-03, -1.982e-02, -2.479e-02, 2.254e-01, -3.137e-02, 6.998e-02, 1.039e-01, -1.003e-02, -2.077e-02, 1.084e-02, 9.149e-02, 4.920e-02, -5.208e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.843e-02, -4.886e-04, -2.442e-02, -1.597e-02, 2.632e-02, -3.580e-02, -2.408e-01, 7.984e-02, 1.800e-02, -1.016e-02, -7.119e-04, -7.044e-03, 3.332e-02, 1.114e-02, -9.181e-03, -1.826e-02), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.647e-02, -3.380e-02, 1.727e-03, 4.218e-02, 1.854e-02, -2.619e-01, -2.088e-01, -8.456e-02, 4.383e-03, -5.544e-02, -1.525e-01, 2.684e-02, -6.045e-03, 2.090e-02, 8.900e-02, -3.825e-03), r2);\n\tr3 = MulAdd(s1_1_0, M4(-7.321e-02, -1.453e-02, -7.731e-04, -1.267e-02, -7.739e-02, -1.938e-02, -2.480e-02, 1.180e-02, -9.997e-02, 1.353e-03, 3.663e-03, -1.084e-02, 8.275e-03, -3.503e-02, 3.235e-02, -1.948e-02), r3);\n\tr4 = MulAdd(s1_1_0, M4(-4.362e-02, -3.643e-03, 8.116e-03, -1.485e-02, -5.757e-02, -1.655e-01, -3.333e-02, -2.830e-02, -1.413e-02, -3.058e-02, -1.637e-04, -6.420e-02, -4.727e-02, -2.800e-02, -3.685e-02, -2.088e-02), r4);\n\tr5 = MulAdd(s1_1_0, M4(-1.273e-02, -4.013e-03, -3.458e-02, -3.564e-02, -8.390e-02, 4.137e-02, 2.552e-03, -3.998e-01, -3.333e-02, 2.336e-02, -6.599e-02, -2.458e-02, -5.423e-02, 7.844e-03, -8.651e-03, -1.823e-02), r5);\n\tr6 = MulAdd(s1_1_0, M4(-5.725e-02, -7.546e-02, -1.837e-02, 9.721e-03, 3.994e-01, 1.232e-02, -2.276e-02, -2.425e-02, 1.923e-03, -2.779e-01, 2.374e-02, 4.354e-03, -2.204e-02, 3.540e-03, -1.782e-02, 4.334e-03), r6);\n\tr7 = MulAdd(s1_1_0, M4(-2.066e-02, 1.185e-02, -5.907e-02, -5.693e-02, -5.354e-02, 1.052e-02, 4.258e-01, 5.921e-02, -3.077e-02, -3.747e-02, -3.482e-02, 2.703e-02, -7.982e-03, -1.670e-02, 3.536e-03, -2.869e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-9.156e-02, -1.747e-02, 3.052e-02, 2.666e-01, 5.808e-02, -5.384e-02, -1.696e-01, 2.863e-02, 4.247e-01, 1.778e-02, -2.172e-02, 4.421e-02, 1.174e-01, 2.017e-01, 7.007e-02, 1.560e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.243e-01, 9.398e-02, 1.028e-01, -3.447e-02, -9.042e-02, -1.246e-01, 2.501e-01, 5.684e-01, -1.700e-01, 3.662e-02, -2.757e-02, 2.350e-02, 1.083e-01, -2.765e-02, -1.519e-01, -4.667e-03), r1);\n\tr2 = MulAdd(s1_1_1, M4(2.834e-01, 6.274e-02, -5.704e-02, 1.537e-02, 1.180e-01, 3.760e-01, 9.990e-02, -4.893e-02, 2.349e-01, 3.986e-02, -3.313e-02, -2.676e-01, 1.294e-01, 3.212e-02, 1.017e-01, 3.613e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(1.259e-01, -6.357e-02, -5.212e-02, 3.687e-02, -1.129e-01, 4.054e-02, -6.009e-02, -6.325e-02, -1.257e-01, -3.482e-02, 4.098e-02, -2.261e-02, -1.347e-01, 7.299e-02, 1.193e-01, 3.621e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(1.194e-02, 1.662e-01, -2.394e-03, -1.235e-01, 4.797e-02, -2.313e-01, 3.465e-02, 7.148e-02, 1.530e-01, -4.239e-02, 6.129e-02, -1.415e-01, -9.609e-02, -1.802e-01, -7.934e-02, -5.761e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-9.304e-02, -1.450e-01, 3.208e-02, 1.900e-01, 1.643e-01, -1.272e-01, 8.231e-02, -4.120e-02, 9.742e-02, -2.433e-01, 1.297e-01, -6.243e-02, -1.459e-01, 8.079e-03, -1.522e-01, -1.254e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(1.035e-01, -5.753e-02, -1.515e-01, -1.088e-02, -2.822e-01, -1.189e-01, 6.909e-02, -4.131e-01, -7.484e-02, 5.947e-02, 3.230e-01, -2.557e-02, 4.971e-03, 2.218e-01, -7.158e-03, -1.902e-02), r6);\n\tr7 = MulAdd(s1_1_1, M4(-3.916e-02, -9.700e-02, 5.993e-02, 5.172e-02, -9.856e-02, 1.606e-02, -2.460e-01, -1.945e-01, -1.538e-01, 8.502e-02, 2.334e-02, -2.245e-01, -1.933e-01, 1.219e-01, 6.520e-02, 4.645e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-7.293e-02, -6.397e-03, -5.087e-02, -3.191e-01, -4.040e-02, 4.651e-02, -7.251e-02, 2.098e-02, 4.741e-03, 2.527e-02, -4.628e-02, -9.617e-02, -1.265e-01, -2.308e-01, -4.774e-02, 3.123e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(7.713e-02, 1.607e-01, -5.112e-02, -2.756e-02, -1.170e-02, 1.278e-02, 1.531e-02, 1.168e-01, 1.997e-02, 5.771e-02, -4.118e-02, -2.260e-02, -5.551e-02, -5.635e-02, 1.140e-03, 2.471e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-1.368e-03, -2.550e-02, 2.208e-02, 2.374e-01, -3.795e-02, 2.313e-02, -1.064e-02, -8.615e-02, -1.592e-02, -2.898e-02, -6.652e-03, 2.210e-02, -3.115e-02, 1.123e-02, -3.998e-02, -1.397e-01), r2);\n\tr3 = MulAdd(s1_1_2, M4(6.235e-02, -4.513e-02, -4.661e-02, -1.880e-01, -6.665e-03, 1.057e-02, 6.830e-02, 1.752e-02, -1.569e-03, -5.063e-02, -3.673e-02, -1.702e-01, -1.782e-01, -4.052e-02, 5.623e-02, 3.467e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(-2.640e-02, 1.854e-02, -5.896e-02, 9.214e-02, 6.420e-02, 1.386e-01, 3.506e-02, 3.510e-02, 4.176e-02, -3.189e-02, 6.753e-04, 7.409e-02, -1.579e-02, -1.160e-01, 2.092e-02, -6.209e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(-1.206e-01, 3.760e-01, 2.097e-02, 5.795e-02, -2.317e-02, 7.366e-02, 2.154e-03, 4.651e-01, -4.193e-02, 2.157e-01, 2.645e-02, -2.678e-02, 3.283e-03, 1.657e-01, -2.750e-02, -5.084e-02), r5);\n\tr6 = MulAdd(s1_1_2, M4(2.972e-02, -2.082e-02, -5.092e-02, 7.456e-03, -3.157e-01, 1.707e-02, 3.285e-02, -6.076e-02, -5.114e-02, -6.414e-02, 1.005e-01, -1.812e-02, -3.421e-02, 3.591e-02, 2.232e-02, -2.480e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(1.430e-01, -2.327e-01, -1.426e-02, 4.155e-01, 4.333e-02, 1.265e-01, -6.382e-02, 6.306e-02, 2.692e-02, -2.001e-01, -3.029e-02, 1.730e-01, -1.815e-02, 2.262e-01, 9.453e-03, 1.082e-01), r7);\n\tr0 = MulAdd(s1_2_0, M4(1.735e-02, 4.647e-05, 2.887e-02, 4.132e-03, -8.566e-03, 5.146e-02, -2.017e-01, -2.334e-02, 1.870e-02, 2.222e-02, -1.331e-03, 1.348e-02, -9.396e-03, -1.108e-02, -4.504e-02, 1.736e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-1.952e-03, -4.668e-03, 1.759e-02, 1.084e-02, -1.119e-02, 2.391e-02, 1.170e-01, 3.563e-02, -9.095e-03, 7.724e-06, 4.531e-04, -2.165e-03, -1.608e-03, -1.132e-03, 6.706e-03, -7.070e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.468e-03, -4.433e-03, 5.148e-02, 3.984e-02, -1.156e-02, 1.763e-02, -4.562e-02, 7.688e-03, 4.053e-04, 1.621e-02, 3.696e-02, -1.250e-02, -8.141e-03, -1.813e-02, -1.260e-01, -3.164e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(9.203e-02, 1.334e-02, -6.066e-03, 9.245e-03, 1.805e-03, -3.316e-02, 2.164e-02, -1.175e-02, 6.372e-02, 1.600e-02, 2.038e-02, 7.600e-03, -2.533e-02, -9.021e-03, -1.243e-02, -1.853e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(-2.519e-02, 4.145e-03, 5.558e-04, 2.300e-02, 7.148e-02, 1.410e-01, -9.479e-03, -1.517e-02, -4.195e-03, -7.787e-03, -1.192e-02, -7.124e-03, 5.022e-03, -1.143e-02, 1.265e-02, -1.333e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(-4.840e-03, -2.092e-02, 7.770e-02, -6.761e-03, 5.260e-03, 2.929e-02, -5.033e-02, -3.109e-01, -1.550e-03, 1.231e-02, -4.368e-02, -6.373e-03, 2.426e-02, -3.007e-02, 1.528e-02, -2.104e-02), r5);\n\tr6 = MulAdd(s1_2_0, M4(-1.397e-02, -1.728e-02, 1.555e-02, 2.091e-03, 2.510e-01, -1.889e-02, -2.483e-02, -6.518e-02, 6.689e-03, -3.030e-01, 1.004e-02, -3.690e-03, -2.542e-02, 3.196e-01, -3.001e-03, 3.288e-03), r6);\n\tr7 = MulAdd(s1_2_0, M4(7.152e-03, -8.231e-03, -4.474e-03, -2.482e-02, 6.177e-03, 3.487e-02, 1.243e-02, 8.260e-03, -1.943e-02, 1.225e-02, 8.468e-03, -1.079e-03, 1.648e-02, -6.180e-04, 4.117e-04, -4.482e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(-6.959e-02, 2.576e-02, 5.041e-02, -2.150e-02, 2.076e-02, -7.281e-02, -2.479e-01, -1.012e-02, 1.066e-02, 9.089e-03, -4.048e-03, -1.681e-03, -6.081e-03, -1.715e-02, -8.276e-02, 3.829e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-2.177e-02, 1.617e-02, -2.569e-02, 3.171e-03, 1.243e-02, -3.672e-02, 1.183e-01, -4.676e-03, -2.778e-02, 2.125e-02, 3.063e-03, -3.316e-03, 2.354e-02, -4.642e-03, -8.612e-03, -3.114e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.945e-02, 1.850e-03, -5.120e-02, -7.869e-02, -4.431e-02, -3.433e-02, 2.085e-02, 5.196e-02, 2.076e-02, 1.454e-02, 3.045e-02, 5.503e-02, 6.174e-03, 6.180e-03, 8.228e-02, -6.752e-03), r2);\n\tr3 = MulAdd(s1_2_1, M4(-1.760e-01, 1.143e-02, 2.131e-03, 2.190e-02, 7.291e-02, -2.234e-02, 1.037e-02, -4.344e-02, -2.942e-02, -1.020e-02, -2.412e-02, -1.939e-03, 5.436e-02, -1.523e-02, 4.349e-04, -4.135e-03), r3);\n\tr4 = MulAdd(s1_2_1, M4(-8.059e-02, -9.862e-03, 3.119e-02, 3.837e-02, -2.326e-01, 4.912e-01, 1.451e-02, 2.420e-02, 7.076e-02, 3.338e-03, 1.217e-02, -1.825e-02, 1.743e-01, -7.499e-02, -1.611e-02, -7.241e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(3.075e-02, 1.457e-02, 1.506e-03, 3.476e-03, -5.653e-02, -5.276e-02, -5.407e-02, 1.997e-01, 3.251e-03, 2.576e-02, -3.576e-02, 3.023e-02, -1.093e-03, 1.563e-02, -7.201e-02, -2.352e-04), r5);\n\tr6 = MulAdd(s1_2_1, M4(-2.038e-02, 2.998e-01, -3.757e-02, -6.957e-03, -9.711e-03, -3.434e-01, 1.041e-03, -4.164e-02, 1.745e-02, -1.146e-01, 8.777e-03, -6.365e-03, 1.389e-02, -2.688e-01, -3.448e-02, -1.837e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-3.287e-02, -1.188e-02, -1.593e-02, 3.268e-02, 7.104e-02, -1.169e-02, -4.035e-02, -1.142e-01, -1.559e-02, 1.418e-02, 1.644e-02, 4.901e-02, 2.321e-02, 1.233e-03, 1.029e-02, 9.178e-03), r7);\n\tr0 = MulAdd(s1_2_2, M4(-1.072e-02, -2.687e-02, 1.781e-02, -7.493e-03, 3.379e-02, 1.934e-02, -1.738e-02, -9.837e-03, 7.248e-03, 1.317e-02, -1.008e-03, 1.733e-02, -2.817e-02, 7.177e-03, -4.748e-02, 2.059e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(2.409e-02, 2.153e-02, -5.048e-03, -6.512e-03, 1.271e-02, -3.647e-03, -4.920e-02, -1.888e-02, 9.377e-03, 2.182e-02, -5.002e-03, -5.749e-03, -1.294e-02, -2.561e-02, -4.801e-02, -1.193e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(-3.046e-02, -6.907e-03, -1.810e-02, -1.116e-01, -6.608e-03, -2.784e-02, -2.039e-02, 2.541e-02, -4.548e-03, -1.076e-02, -1.131e-02, -2.905e-02, 8.213e-03, 7.125e-04, -3.887e-02, -4.586e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(-1.466e-02, -2.709e-03, -1.536e-02, -3.669e-02, 2.238e-02, -1.163e-02, -1.314e-02, 2.244e-02, -1.251e-02, 3.678e-03, 9.112e-03, -2.536e-02, 2.337e-02, 2.679e-03, -3.417e-04, 3.712e-02), r3);\n\tr4 = MulAdd(s1_2_2, M4(-5.505e-02, -1.773e-02, 3.096e-03, 1.012e-02, -1.922e-02, 7.019e-02, -3.454e-02, -3.898e-02, 2.293e-02, -5.769e-03, -1.748e-02, -3.920e-03, -6.788e-02, -4.139e-02, -1.364e-02, -3.400e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(-1.534e-02, 2.482e-02, -2.533e-02, -9.635e-03, -9.111e-04, 3.477e-02, -1.610e-02, 1.945e-03, -1.467e-02, 1.571e-02, -8.005e-03, -1.845e-03, 1.296e-02, 2.373e-02, -6.808e-02, -2.657e-02), r5);\n\tr6 = MulAdd(s1_2_2, M4(3.112e-02, -8.936e-02, -6.355e-02, 8.021e-03, -8.720e-02, 1.238e-01, -1.437e-02, -2.044e-02, -6.920e-03, 2.513e-01, 8.299e-03, -1.093e-03, -7.317e-02, 6.879e-01, -8.286e-03, -8.424e-03), r6);\n\tr7 = MulAdd(s1_2_2, M4(2.209e-02, -5.823e-02, -2.059e-03, 7.659e-02, 1.456e-02, -3.574e-02, -4.560e-03, -2.412e-02, 1.233e-02, 8.395e-03, -7.665e-03, 5.066e-03, -2.443e-02, 1.677e-01, -1.131e-02, -7.721e-02), r7);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(3.377e-03, 6.323e-02, 8.608e-03, 2.397e-03, -4.330e-02, 2.568e-02, -4.100e-03, 3.124e-02, 8.319e-03, 5.624e-02, 4.819e-02, -5.980e-03, 7.208e-03, -1.882e-02, -1.344e-02, 1.274e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-7.897e-04, 8.111e-03, -1.153e-02, -1.847e-03, -3.919e-03, 6.581e-03, 1.270e-02, 2.536e-02, -2.467e-04, -4.543e-04, 8.767e-02, 6.716e-02, -1.133e-02, -2.418e-03, -1.024e-03, -3.993e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(5.661e-03, -5.296e-02, -1.499e-01, 1.008e-02, 1.370e-02, 5.989e-02, 3.022e-02, 1.722e-02, -1.240e-02, -6.942e-02, 4.260e-02, -2.205e-02, -1.213e-03, 9.743e-03, -6.894e-02, -1.346e-03), r2);\n\tr3 = MulAdd(s0_0_0, M4(-1.213e-01, 1.077e-02, -1.478e-02, -3.217e-03, 2.105e-01, 1.994e-02, 8.657e-02, 1.623e-02, -4.582e-03, -1.702e-02, 2.945e-02, -1.156e-02, -3.059e-02, 6.822e-03, -3.461e-02, -3.964e-03), r3);\n\tr4 = MulAdd(s0_0_0, M4(2.226e-03, -9.267e-03, -1.088e-02, -8.064e-03, 1.717e-04, -6.341e-03, 3.047e-02, -1.051e-02, -3.471e-03, 1.054e-01, -9.335e-03, 2.072e-02, -2.035e-02, -1.569e-02, -3.141e-03, 1.034e-02), r4);\n\tr5 = MulAdd(s0_0_0, M4(-3.722e-02, 2.525e-03, -2.300e-02, -5.432e-02, -5.499e-02, -1.524e-02, 4.264e-02, -1.754e-02, 4.597e-03, 2.092e-03, 1.214e-02, 4.261e-02, 1.394e-02, -1.829e-02, -2.274e-03, 2.298e-03), r5);\n\tr6 = MulAdd(s0_0_0, M4(-4.400e-02, 1.052e-01, 7.992e-05, 1.442e-02, -1.373e-03, 1.881e-01, -1.386e-02, 1.335e-02, -2.841e-02, -1.817e-02, 1.924e-02, 2.761e-02, -8.255e-03, -4.427e-03, -8.709e-03, -5.086e-03), r6);\n\tr7 = MulAdd(s0_0_0, M4(-1.735e-02, 9.049e-03, -2.553e-02, 8.977e-03, -3.748e-02, -2.417e-02, 5.452e-02, -1.670e-02, 4.029e-03, -5.892e-03, -3.647e-02, 1.497e-02, -6.717e-03, 6.973e-04, 4.803e-03, -6.980e-03), r7);\n\tr0 = MulAdd(s0_0_1, M4(-2.465e-02, 5.298e-02, 1.140e-01, -2.118e-02, 1.086e-01, -1.703e-01, -1.187e-02, -9.045e-02, 1.374e-02, -6.048e-02, 1.718e-02, 6.835e-03, 4.113e-03, -3.955e-02, 4.770e-03, 1.848e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.207e-02, 1.917e-02, 5.379e-02, -3.454e-02, 9.122e-02, -4.258e-02, -2.943e-03, -3.196e-02, 5.742e-03, 9.881e-03, 1.845e-01, 1.052e-02, 1.815e-02, -2.552e-02, -8.046e-04, -3.209e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(6.458e-04, 1.225e-02, -9.029e-03, -2.741e-02, 8.692e-02, -4.525e-02, 5.175e-02, -1.692e-02, -5.469e-03, 1.702e-01, -4.692e-02, -1.261e-02, -6.999e-03, -6.802e-03, -4.393e-01, 3.854e-04), r2);\n\tr3 = MulAdd(s0_0_1, M4(1.072e-01, 1.068e-02, -1.360e-01, 3.191e-02, -1.238e-01, 6.662e-02, 2.396e-01, -2.898e-02, -1.519e-02, -2.893e-02, -1.653e-02, 1.953e-02, -1.434e-02, -5.373e-02, 3.308e-02, -6.473e-03), r3);\n\tr4 = MulAdd(s0_0_1, M4(1.264e-02, 1.189e-01, -3.296e-02, -7.974e-03, 7.470e-02, -2.822e-02, -6.105e-02, 3.929e-02, 1.061e-02, 8.464e-03, 3.401e-03, 1.919e-02, -3.106e-02, -1.668e-02, 1.418e-02, 3.246e-02), r4);\n\tr5 = MulAdd(s0_0_1, M4(-4.772e-02, -5.892e-02, -4.429e-02, 2.580e-03, 3.239e-02, 8.567e-02, 9.236e-02, 2.896e-02, -3.329e-02, -1.914e-02, -5.318e-02, 1.307e-01, 2.365e-02, 9.200e-03, 1.526e-02, 8.763e-03), r5);\n\tr6 = MulAdd(s0_0_1, M4(5.766e-03, -1.525e-01, -1.695e-05, -8.891e-03, 1.886e-02, -1.167e-01, 4.930e-02, 4.642e-03, 1.620e-01, 2.073e-02, 3.455e-02, 1.313e-01, 9.157e-03, 1.651e-02, -1.617e-03, -9.367e-03), r6);\n\tr7 = MulAdd(s0_0_1, M4(-2.669e-02, -3.468e-02, 7.989e-03, 3.395e-03, 1.093e-01, -1.607e-02, -3.161e-02, 7.841e-02, 2.436e-02, -4.349e-02, 2.261e-01, 2.670e-02, 1.791e-02, -9.299e-03, 8.210e-04, -1.730e-02), r7);\n\tr0 = MulAdd(s0_0_2, M4(2.336e-02, 6.121e-03, -6.499e-03, 7.005e-03, -4.498e-03, 1.403e-02, -3.375e-03, -4.527e-02, 1.741e-02, 9.456e-02, -1.823e-01, 1.610e-02, 1.655e-02, -1.846e-01, -1.206e-02, -5.179e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.644e-02, 1.966e-02, -1.528e-02, -3.839e-03, -2.642e-02, 6.172e-02, 1.486e-02, -1.006e-02, 1.380e-02, -1.351e-02, -1.406e-01, 8.094e-03, 1.900e-02, -3.395e-02, -2.268e-02, -4.597e-02), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.863e-03, 8.284e-03, -2.839e-03, -5.060e-04, -2.751e-03, -2.065e-02, 1.229e-03, 5.369e-03, -6.962e-04, -8.567e-02, 6.353e-02, -1.687e-02, -1.397e-02, -3.104e-02, 4.865e-02, -5.968e-02), r2);\n\tr3 = MulAdd(s0_0_2, M4(-1.606e-02, -1.404e-02, 3.992e-02, -9.739e-03, 3.504e-02, -8.290e-03, -3.928e-02, -1.070e-01, 6.747e-03, 1.117e-02, -1.293e-02, -1.075e-01, -3.986e-02, -7.185e-02, -7.917e-02, 1.592e-02), r3);\n\tr4 = MulAdd(s0_0_2, M4(-7.532e-03, 6.120e-03, -2.339e-02, -1.816e-02, 2.868e-03, -2.822e-02, -2.106e-02, 1.724e-02, 4.231e-02, 3.517e-02, -3.893e-02, 9.619e-03, 6.296e-03, -1.497e-02, -2.069e-02, 8.664e-03), r4);\n\tr5 = MulAdd(s0_0_2, M4(-2.702e-02, -2.605e-02, -2.342e-03, 6.062e-02, -4.693e-02, -3.374e-02, -4.401e-02, -6.816e-03, -2.421e-02, -2.709e-05, -3.714e-03, 2.939e-02, -3.210e-02, 6.366e-03, 4.069e-02, -3.524e-02), r5);\n\tr6 = MulAdd(s0_0_2, M4(3.058e-02, -2.047e-02, -7.091e-03, 1.924e-02, -1.749e-02, -3.048e-02, -6.386e-02, 5.266e-03, -5.935e-03, 6.475e-02, 1.331e-02, -1.873e-02, -2.061e-02, -2.268e-02, 3.947e-02, -6.734e-02), r6);\n\tr7 = MulAdd(s0_0_2, M4(-7.874e-03, -4.971e-02, 3.357e-04, -6.172e-03, -1.654e-02, -3.039e-02, -7.279e-03, 5.801e-04, 9.917e-03, -4.723e-03, -2.377e-02, 2.265e-02, 1.232e-02, -1.740e-03, -3.161e-02, -1.707e-02), r7);\n\tr0 = MulAdd(s0_1_0, M4(-5.941e-03, -1.040e-01, -8.047e-02, -9.848e-03, 6.010e-02, -2.014e-01, -6.750e-02, -1.037e-02, 1.311e-02, -1.313e-02, -2.296e-02, 3.490e-03, -5.921e-03, -2.481e-02, -6.826e-03, -9.647e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(-3.397e-03, 3.617e-03, -2.653e-02, -4.968e-02, -8.954e-03, -5.207e-02, -1.347e-02, 5.714e-03, -1.192e-02, 5.875e-03, -3.949e-02, -2.583e-02, -1.816e-02, 5.974e-03, -6.302e-04, 4.424e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(-1.203e-02, -8.426e-02, 3.335e-02, -1.779e-03, 2.016e-02, 4.041e-03, -9.247e-02, -7.221e-02, -1.296e-02, -1.145e-01, 3.716e-02, 3.785e-02, -1.352e-03, 1.593e-02, -1.383e-01, 7.335e-03), r2);\n\tr3 = MulAdd(s0_1_0, M4(-9.285e-03, -1.270e-02, 9.762e-03, -3.552e-02, 2.358e-01, -3.534e-02, -9.073e-03, -2.558e-02, 4.504e-02, -3.304e-03, -1.766e-02, 1.058e-02, -2.405e-02, 5.221e-03, -7.620e-03, -1.443e-02), r3);\n\tr4 = MulAdd(s0_1_0, M4(2.062e-02, -1.597e-02, -2.442e-02, -2.521e-02, 6.979e-02, -2.734e-02, -1.662e-02, -3.567e-02, 5.916e-02, -1.621e-02, 1.606e-02, -1.091e-02, -8.540e-03, -5.511e-03, 9.531e-03, 1.371e-02), r4);\n\tr5 = MulAdd(s0_1_0, M4(-4.372e-02, -3.435e-02, -8.167e-02, -1.026e-02, -3.019e-02, -9.134e-03, 1.887e-02, 3.355e-02, -4.504e-04, -1.114e-02, 8.577e-03, 9.693e-02, 2.125e-02, -1.308e-02, 1.256e-02, 8.820e-03), r5);\n\tr6 = MulAdd(s0_1_0, M4(-8.872e-03, 4.408e-02, 1.530e-02, -2.235e-02, 3.004e-02, 2.452e-01, -5.846e-02, 1.598e-02, -1.106e-01, -2.772e-02, 1.528e-03, -3.740e-02, 8.398e-03, 7.828e-02, 6.275e-03, 8.811e-05), r6);\n\tr7 = MulAdd(s0_1_0, M4(2.470e-02, -1.222e-02, -7.143e-02, -3.079e-02, 8.617e-03, 1.616e-02, -1.471e-03, -4.284e-02, 2.833e-02, 2.503e-02, -1.208e-01, 6.965e-03, 6.328e-04, 1.381e-03, 1.495e-02, -2.388e-03), r7);\n\tr0 = MulAdd(s0_1_1, M4(-3.283e-02, -2.959e-01, -3.839e-01, 3.958e-03, -1.705e-01, 2.319e-01, -2.458e-03, 1.744e-01, 2.440e-02, -7.605e-02, 1.911e-01, 2.381e-02, -1.071e-01, -8.506e-02, -6.273e-02, -2.383e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(2.340e-02, -3.129e-02, -3.782e-01, -2.358e-01, -1.212e-01, 3.955e-01, 1.236e-02, 3.310e-02, 1.500e-02, -4.682e-02, -1.193e-01, -4.836e-03, -3.441e-02, -1.598e-02, -3.164e-02, -9.701e-03), r1);\n\tr2 = MulAdd(s0_1_1, M4(-7.167e-02, -6.567e-02, -9.184e-03, -3.730e-02, -7.145e-02, 4.863e-02, 1.206e-01, 1.608e-01, 4.985e-02, 1.534e-01, -3.321e-02, -4.824e-02, -4.299e-02, -3.400e-02, -5.554e-02, 3.869e-02), r2);\n\tr3 = MulAdd(s0_1_1, M4(-6.277e-02, -6.717e-02, -6.734e-02, 2.927e-02, 1.860e-01, 3.654e-02, 5.334e-02, 3.826e-01, -6.567e-03, -2.694e-02, -5.160e-03, -7.348e-03, 1.423e-01, -2.644e-02, 3.245e-02, -4.404e-02), r3);\n\tr4 = MulAdd(s0_1_1, M4(1.227e-01, -5.106e-01, -1.313e-01, -4.210e-02, -1.912e-01, -1.377e-02, 1.597e-01, -2.445e-02, -4.589e-03, -7.614e-03, -3.543e-03, -6.165e-02, 2.368e-02, -3.869e-02, -3.329e-02, 6.916e-04), r4);\n\tr5 = MulAdd(s0_1_1, M4(-1.247e-01, 3.902e-03, -1.162e-01, -4.879e-01, 1.437e-01, -1.850e-01, -1.104e-01, 1.714e-01, 5.716e-03, 2.805e-02, 1.661e-02, -3.370e-01, -4.873e-02, 1.169e-02, -5.218e-02, -2.273e-02), r5);\n\tr6 = MulAdd(s0_1_1, M4(-2.705e-01, -6.702e-01, -6.887e-02, -2.496e-01, 1.913e-01, -5.026e-01, 2.697e-01, -1.488e-02, 3.248e-01, 4.976e-02, -4.141e-02, -1.546e-01, -2.324e-02, -1.416e-01, 2.194e-02, -7.731e-03), r6);\n\tr7 = MulAdd(s0_1_1, M4(5.933e-02, -1.082e-01, -6.860e-02, -2.139e-01, -2.906e-02, 1.938e-01, 5.003e-02, 3.037e-01, 4.803e-03, 4.418e-02, 2.607e-01, -3.267e-02, 3.530e-02, 1.126e-02, -3.043e-02, 5.429e-02), r7);\n\tr0 = MulAdd(s0_1_2, M4(-1.441e-03, 6.763e-02, 3.636e-03, -8.717e-03, -1.400e-02, 9.538e-03, -4.896e-02, 1.293e-01, 1.378e-04, -1.341e-01, 4.384e-01, 9.160e-03, -1.869e-01, -3.529e-01, -1.204e-01, -4.284e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(1.646e-03, 2.922e-02, 1.201e-02, -4.171e-02, 2.511e-03, -7.475e-02, -2.103e-02, 4.044e-03, -3.067e-04, 2.487e-02, 3.676e-01, 5.383e-02, -1.637e-02, -1.848e-01, -1.313e-01, -1.457e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(4.173e-03, 1.330e-02, 1.256e-02, 6.308e-02, -7.403e-03, -4.858e-04, -6.007e-02, -1.032e-01, 1.862e-02, -9.043e-02, 4.260e-02, -2.272e-02, 1.438e-02, -3.474e-02, 4.067e-02, 3.543e-02), r2);\n\tr3 = MulAdd(s0_1_2, M4(-1.682e-02, -3.073e-02, -4.839e-02, 6.182e-02, -2.938e-02, -6.743e-03, 5.628e-02, 1.224e-01, -3.807e-02, 1.148e-02, 3.336e-02, 8.553e-02, -4.072e-02, 1.958e-02, 3.959e-02, -2.169e-01), r3);\n\tr4 = MulAdd(s0_1_2, M4(6.184e-02, -7.103e-02, -5.205e-02, -5.186e-02, 7.012e-02, -6.988e-02, -6.356e-05, -6.707e-02, -7.239e-02, 5.141e-02, -3.765e-02, 2.870e-02, -1.932e-01, -1.511e-01, 1.000e-01, 2.914e-02), r4);\n\tr5 = MulAdd(s0_1_2, M4(-2.860e-02, -1.050e-01, -2.574e-02, 1.596e-01, -4.382e-02, -9.132e-02, -7.632e-03, 1.945e-02, -4.609e-02, 1.011e-01, -5.941e-02, -2.086e-01, -3.319e-02, 5.630e-02, -3.719e-01, -1.843e-01), r5);\n\tr6 = MulAdd(s0_1_2, M4(1.067e-01, -2.268e-02, 3.552e-02, -7.268e-02, 1.798e-02, 2.262e-01, -6.643e-02, -5.551e-03, 2.446e-01, -4.533e-02, -7.775e-02, 7.392e-03, -1.548e-01, -4.675e-01, -1.724e-01, -2.495e-02), r6);\n\tr7 = MulAdd(s0_1_2, M4(-2.574e-03, -3.224e-02, 2.203e-02, 7.643e-02, -1.494e-02, 8.042e-02, -1.984e-05, -4.579e-02, 2.555e-02, 1.076e-01, 1.158e-02, -6.283e-02, -3.255e-02, -3.065e-01, -5.043e-02, -5.253e-01), r7);\n\tr0 = MulAdd(s0_2_0, M4(-1.971e-02, -3.148e-02, 1.337e-03, -2.942e-02, 1.400e-03, 7.825e-02, 3.750e-03, -2.774e-03, 2.235e-03, -3.102e-03, 3.408e-02, 1.687e-02, -3.034e-03, 1.105e-02, 1.645e-02, 1.588e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.063e-03, 1.738e-02, 2.330e-02, 7.602e-03, 2.373e-03, -1.030e-02, 1.127e-02, 1.878e-02, 4.625e-03, 1.760e-03, -8.029e-03, -1.303e-02, -8.153e-03, 8.011e-04, 1.170e-02, 4.904e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(-7.007e-03, -1.380e-02, 4.138e-02, -1.017e-02, -1.366e-02, -1.479e-02, -9.142e-02, 3.404e-02, 1.047e-05, 4.125e-02, 2.900e-02, -3.336e-02, -2.955e-03, 2.703e-04, -2.407e-02, 3.253e-03), r2);\n\tr3 = MulAdd(s0_2_0, M4(3.040e-03, 1.599e-02, -2.435e-02, -1.074e-02, 6.143e-02, -1.499e-02, -2.484e-02, -1.115e-02, -6.852e-02, 1.293e-02, -1.544e-02, 9.004e-03, -3.813e-03, 2.113e-03, 9.851e-03, -1.209e-02), r3);\n\tr4 = MulAdd(s0_2_0, M4(-1.102e-02, 1.520e-02, -2.348e-02, -1.091e-02, -1.198e-01, 2.589e-03, 1.277e-02, -2.335e-02, -5.454e-03, -3.921e-02, -1.876e-03, 1.851e-02, 1.268e-02, 2.492e-02, -7.312e-03, 5.208e-03), r4);\n\tr5 = MulAdd(s0_2_0, M4(-6.181e-03, -2.046e-02, -4.426e-02, -1.629e-02, 2.199e-02, -5.675e-03, -1.571e-02, 2.968e-03, 2.936e-02, 4.471e-03, 1.368e-02, 4.733e-02, 2.037e-03, -1.116e-03, 6.962e-03, 1.707e-02), r5);\n\tr6 = MulAdd(s0_2_0, M4(-2.663e-03, 6.673e-02, -2.795e-03, 8.496e-03, -1.619e-02, 4.968e-02, -8.089e-03, 7.469e-03, -7.347e-02, -5.951e-02, -6.648e-05, 1.731e-02, 1.480e-02, 1.134e-02, -6.339e-03, 1.566e-03), r6);\n\tr7 = MulAdd(s0_2_0, M4(-3.734e-03, -3.503e-03, -4.001e-03, 1.258e-02, 4.615e-03, 1.224e-02, -1.948e-02, 2.714e-02, 2.368e-03, -4.793e-03, -2.586e-02, -6.429e-04, -7.787e-03, 1.209e-02, 2.317e-03, -1.471e-02), r7);\n\tr0 = MulAdd(s0_2_1, M4(-7.196e-02, 5.811e-03, 1.119e-02, 1.960e-03, 1.449e-02, -4.674e-02, -2.569e-03, -8.573e-03, -4.246e-02, 2.850e-02, -1.793e-02, 2.017e-02, 3.056e-02, 3.009e-03, 2.004e-03, 8.143e-03), r0);\n\tr1 = MulAdd(s0_2_1, M4(-8.307e-03, 2.852e-03, 4.490e-04, 2.973e-02, 9.135e-03, -2.836e-02, 3.683e-02, 7.524e-03, 2.964e-03, 5.364e-03, -2.425e-03, -4.137e-02, 3.410e-03, 1.770e-02, 2.151e-02, 5.923e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.224e-02, 4.250e-03, 8.521e-03, -7.707e-02, -3.269e-02, -1.430e-03, 8.108e-02, 8.285e-02, 6.373e-03, 3.085e-03, -2.055e-02, 3.948e-02, -1.344e-02, 1.675e-02, 3.941e-02, 2.250e-04), r2);\n\tr3 = MulAdd(s0_2_1, M4(-6.834e-02, 1.353e-02, 2.738e-02, 6.514e-03, -1.387e-02, -1.550e-02, 3.847e-02, -3.888e-02, 3.699e-02, -1.173e-03, -1.618e-02, 1.171e-02, -7.003e-02, -6.835e-03, 1.569e-02, 1.396e-02), r3);\n\tr4 = MulAdd(s0_2_1, M4(-2.536e-02, 1.903e-02, -6.643e-03, 1.385e-02, -1.391e-01, 3.395e-02, 2.119e-02, 1.189e-02, -1.092e-01, -8.076e-02, -2.184e-02, 9.571e-03, 1.221e-02, 1.873e-02, 1.822e-02, 9.732e-03), r4);\n\tr5 = MulAdd(s0_2_1, M4(2.165e-02, -1.619e-03, -1.819e-02, -1.623e-01, -6.824e-03, -6.386e-02, 8.074e-02, -1.022e-02, -9.986e-03, -3.494e-02, 2.773e-03, 5.890e-02, 1.855e-02, 2.419e-03, -2.697e-02, 1.996e-02), r5);\n\tr6 = MulAdd(s0_2_1, M4(-1.101e-01, -4.766e-01, -9.665e-02, 1.886e-02, -3.391e-03, -2.032e-01, -7.186e-02, 6.500e-03, 3.570e-02, 1.997e-01, -1.938e-02, 3.971e-02, 1.683e-02, -1.208e-01, 5.286e-03, 7.252e-03), r6);\n\tr7 = MulAdd(s0_2_1, M4(-2.024e-02, -2.343e-02, -3.222e-03, -6.407e-02, -3.158e-03, -6.715e-02, -1.634e-02, 2.124e-02, -7.877e-03, -2.649e-04, 3.714e-02, 5.955e-02, 5.766e-03, -5.890e-03, -1.209e-03, 6.522e-02), r7);\n\tr0 = MulAdd(s0_2_2, M4(-3.046e-02, -9.188e-03, -1.796e-02, 4.049e-02, 3.239e-02, 6.722e-03, -1.046e-02, -1.258e-03, -2.586e-02, 4.966e-02, -8.083e-02, 2.015e-02, 3.615e-02, 9.955e-02, 3.889e-02, 2.167e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(6.102e-03, 7.585e-03, -2.459e-03, 8.103e-03, 2.996e-03, 4.752e-02, 1.519e-03, 8.808e-03, 7.792e-03, 8.996e-03, -3.241e-02, -3.056e-02, 1.979e-02, 2.153e-02, 1.853e-02, 3.264e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(-5.809e-03, -1.412e-04, -5.505e-03, -2.434e-02, 7.213e-03, -3.750e-03, -1.797e-02, -2.553e-02, 1.109e-02, 3.798e-02, 2.265e-02, 3.871e-02, -1.927e-02, -1.108e-02, -1.817e-02, 7.566e-03), r2);\n\tr3 = MulAdd(s0_2_2, M4(-5.770e-03, 1.483e-02, -4.971e-03, 1.258e-02, 5.106e-03, -4.877e-03, -6.265e-03, 2.558e-02, -1.153e-02, 1.120e-02, 1.320e-02, -1.487e-02, 3.822e-02, 2.904e-03, -1.756e-03, -1.212e-04), r3);\n\tr4 = MulAdd(s0_2_2, M4(-1.484e-01, -1.611e-02, 1.683e-02, 3.491e-03, 3.906e-02, 1.427e-02, 4.243e-03, 3.152e-02, 5.024e-02, 1.316e-01, 1.166e-02, 6.766e-03, -3.313e-01, 3.828e-02, -1.449e-02, -3.978e-02), r4);\n\tr5 = MulAdd(s0_2_2, M4(1.105e-02, -5.008e-02, 2.682e-02, 7.773e-02, 4.380e-02, 9.643e-02, 1.655e-02, 8.733e-03, 2.130e-02, -3.027e-02, 1.881e-02, 1.018e-01, 1.770e-02, -1.190e-02, -6.292e-02, -3.046e-02), r5);\n\tr6 = MulAdd(s0_2_2, M4(6.471e-02, -1.659e-02, -2.215e-02, 9.704e-03, -4.339e-03, 2.271e-01, 3.800e-02, 3.913e-03, 5.026e-02, -3.676e-02, 2.800e-02, 1.488e-03, -3.211e-02, -2.390e-01, 8.511e-03, 1.313e-02), r6);\n\tr7 = MulAdd(s0_2_2, M4(-1.851e-02, -3.509e-02, -1.265e-03, 2.713e-02, -5.053e-03, -2.774e-02, 2.684e-03, -8.807e-02, -2.561e-04, -1.076e-02, -1.994e-02, 6.374e-03, -1.701e-02, -3.695e-02, -6.834e-03, -6.663e-02), r7);\n\tr0 = MulAdd(s1_0_0, M4(9.398e-02, 2.467e-02, -1.492e-02, -1.874e-02, 1.676e-02, 9.524e-02, 3.167e-02, 2.189e-02, -4.501e-03, 5.564e-04, -2.911e-02, 5.839e-03, 1.443e-02, 4.397e-02, -1.190e-01, 1.744e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-4.574e-02, 1.964e-02, -1.585e-02, 5.251e-03, 3.223e-03, -1.525e-02, 1.567e-05, 3.161e-02, -1.023e-02, 1.853e-02, -8.479e-03, 8.785e-03, -6.884e-03, -9.835e-03, 1.362e-02, 1.700e-01), r1);\n\tr2 = MulAdd(s1_0_0, M4(1.478e-02, -3.320e-02, 7.148e-02, -1.524e-01, 3.085e-02, -1.619e-02, 7.770e-03, 1.939e-02, 1.165e-02, 2.367e-02, 1.866e-01, -3.523e-03, 1.731e-02, 2.845e-01, 6.564e-02, -1.856e-02), r2);\n\tr3 = MulAdd(s1_0_0, M4(-9.271e-03, -8.634e-02, -8.923e-02, 4.142e-03, 1.323e-01, -4.289e-02, -5.173e-02, 2.531e-02, 1.418e-02, 5.079e-03, 6.024e-02, 8.031e-03, -1.939e-03, -3.649e-02, -3.993e-02, -3.454e-02), r3);\n\tr4 = MulAdd(s1_0_0, M4(3.189e-02, -9.355e-03, 4.098e-03, 3.110e-02, -4.909e-02, -2.512e-03, 7.107e-02, 4.583e-02, -1.818e-02, -7.463e-03, 5.189e-03, 1.636e-03, -1.007e-03, 3.677e-03, -3.181e-02, -1.191e-02), r4);\n\tr5 = MulAdd(s1_0_0, M4(6.568e-02, -4.754e-02, -1.803e-02, -1.490e-02, 1.068e-01, 3.484e-02, 1.040e-01, -1.724e-02, 3.260e-02, 3.189e-02, -2.450e-02, 2.482e-02, 1.099e-02, -9.853e-03, -5.112e-02, 3.213e-02), r5);\n\tr6 = MulAdd(s1_0_0, M4(-1.489e-02, -8.604e-02, 1.829e-02, 3.638e-04, 1.338e-02, -6.777e-02, 7.503e-03, 1.063e-02, 1.394e-02, -1.659e-02, -2.744e-02, 4.378e-03, -1.323e-01, -2.670e-02, -7.877e-03, -9.518e-02), r6);\n\tr7 = MulAdd(s1_0_0, M4(-5.211e-02, 3.539e-02, -2.359e-02, 6.113e-02, -2.268e-02, -1.436e-02, 1.889e-04, 3.385e-03, 3.393e-02, 1.844e-02, 1.547e-02, 3.372e-02, -2.198e-02, 3.313e-02, -1.587e-01, -1.280e-02), r7);\n\tr0 = MulAdd(s1_0_1, M4(9.695e-02, 1.067e-01, 1.615e-02, 6.034e-02, -2.156e-02, 2.018e-01, 1.241e-02, -3.990e-02, -5.641e-03, 6.459e-02, -3.603e-03, 4.117e-02, -2.133e-03, 9.316e-02, -2.371e-01, 3.870e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-2.575e-02, -3.067e-02, 1.014e-03, -9.315e-03, 3.297e-02, 7.967e-02, 2.817e-03, 8.902e-02, 5.429e-02, 4.973e-02, -1.465e-02, -5.174e-03, 1.361e-02, -1.276e-02, 3.193e-01, 5.803e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(-7.419e-03, 1.512e-02, -1.294e-01, 2.450e-01, 1.091e-01, 1.058e-02, -2.307e-02, -3.010e-02, 5.605e-02, -3.793e-03, 1.174e-02, -4.994e-02, 5.839e-03, -1.655e-01, -2.596e-02, 4.818e-02), r2);\n\tr3 = MulAdd(s1_0_1, M4(-3.634e-02, 1.139e-02, 1.871e-01, 1.135e-01, 3.485e-04, -9.114e-02, -3.270e-02, 3.663e-02, 1.500e-01, 2.515e-01, 1.912e-01, 8.327e-02, -5.554e-02, -4.496e-02, -5.264e-02, 2.192e-02), r3);\n\tr4 = MulAdd(s1_0_1, M4(1.345e-02, -1.768e-02, 8.864e-02, 4.849e-02, 1.304e-02, 7.171e-03, 1.430e-01, 6.623e-02, 1.290e-02, 2.030e-03, 4.641e-02, 4.041e-02, 1.476e-02, 3.252e-01, 5.349e-03, -2.556e-02), r4);\n\tr5 = MulAdd(s1_0_1, M4(1.229e-01, 1.324e-01, -1.109e-01, -4.096e-03, 1.420e-01, 7.344e-02, 5.622e-02, 6.493e-03, 1.802e-01, 1.008e-01, -1.174e-01, -7.252e-03, 1.430e-02, 3.843e-02, -8.913e-04, 1.345e-01), r5);\n\tr6 = MulAdd(s1_0_1, M4(7.882e-03, -1.422e-01, 2.807e-03, 1.749e-02, 1.042e-02, 4.728e-02, -2.243e-02, 9.535e-02, -6.616e-03, 6.530e-02, 2.636e-02, -1.595e-03, -3.642e-02, 4.565e-02, 2.313e-02, -4.283e-01), r6);\n\tr7 = MulAdd(s1_0_1, M4(-8.317e-03, 5.899e-03, -1.057e-03, -5.950e-03, -4.066e-02, 3.048e-03, -1.665e-03, 5.355e-02, 1.323e-02, 6.504e-03, -2.441e-03, -2.155e-02, 3.934e-04, 1.808e-02, 2.104e-01, 7.316e-03), r7);\n\tr0 = MulAdd(s1_0_2, M4(2.773e-02, -1.711e-02, 3.196e-03, 3.319e-02, 2.911e-02, -3.523e-02, 7.309e-03, -6.662e-02, -8.692e-03, -2.200e-02, 1.028e-03, -1.004e-02, -8.855e-03, 1.480e-02, -1.463e-01, -5.019e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-3.493e-02, -1.438e-02, 8.143e-03, -1.636e-03, -1.017e-02, -8.710e-06, 7.420e-03, 7.510e-03, -8.727e-03, 6.242e-03, 7.953e-03, 1.253e-02, 1.484e-03, 2.224e-02, -6.206e-02, 1.020e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.364e-02, -2.187e-02, 1.126e-01, -1.021e-01, -5.247e-03, 1.689e-02, 3.699e-02, 1.933e-02, -2.269e-03, 1.379e-02, 2.458e-02, 8.813e-02, 1.082e-02, -2.740e-02, -9.801e-04, -5.680e-02), r2);\n\tr3 = MulAdd(s1_0_2, M4(5.790e-02, 2.240e-02, -1.291e-01, -2.100e-01, -4.228e-02, 5.062e-02, 1.460e-03, -3.208e-02, -2.941e-02, -1.590e-02, 2.795e-02, -9.526e-03, -1.541e-03, 1.612e-02, 5.193e-02, -9.376e-03), r3);\n\tr4 = MulAdd(s1_0_2, M4(6.432e-03, 3.323e-03, 6.145e-02, 3.681e-02, -2.196e-02, -4.332e-04, 5.419e-02, -2.826e-03, -6.324e-03, 1.586e-02, 9.048e-02, 3.060e-03, -1.045e-03, 2.881e-01, 4.363e-02, -2.222e-02), r4);\n\tr5 = MulAdd(s1_0_2, M4(3.558e-02, 2.099e-02, 2.665e-02, -2.035e-02, 3.228e-02, 2.208e-02, 2.678e-02, 4.423e-03, 5.700e-02, 5.554e-02, 2.024e-02, 1.430e-02, -2.172e-02, 5.472e-02, -8.058e-02, -1.987e-01), r5);\n\tr6 = MulAdd(s1_0_2, M4(-1.439e-02, -1.597e-02, -1.547e-02, -1.969e-02, 7.890e-03, -1.907e-01, 2.526e-02, 1.736e-02, 1.617e-02, 7.355e-02, 1.638e-03, -4.090e-03, 1.530e-01, 7.051e-02, -3.314e-03, -9.901e-02), r6);\n\tr7 = MulAdd(s1_0_2, M4(-3.954e-02, -4.800e-03, -9.901e-03, -4.450e-02, -4.959e-04, -1.804e-02, 1.841e-02, 1.328e-02, 5.716e-03, -3.354e-02, 1.358e-02, 3.278e-02, -1.285e-02, 3.972e-02, 3.843e-02, 9.833e-03), r7);\n\tr0 = MulAdd(s1_1_0, M4(-4.429e-02, 3.007e-02, -2.105e-02, 2.163e-02, 1.503e-01, 1.374e-01, -2.084e-03, -1.450e-03, -2.013e-02, -1.570e-02, 4.414e-03, -1.032e-03, 2.662e-03, -4.983e-02, -1.802e-01, -1.474e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-7.482e-02, 4.842e-02, -1.273e-02, 5.003e-05, 4.947e-02, 4.833e-02, -1.641e-02, -1.279e-02, -1.351e-02, -1.280e-02, -1.103e-02, 1.653e-02, -3.262e-02, -6.700e-03, 2.861e-01, -1.154e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(-2.974e-02, -1.194e-02, 1.140e-01, -2.007e-01, -2.788e-03, -1.341e-02, 6.567e-02, 1.701e-01, -2.428e-03, 1.419e-02, 5.268e-02, 1.271e-02, 8.267e-03, 2.881e-01, -2.142e-01, -1.008e-01), r2);\n\tr3 = MulAdd(s1_1_0, M4(-3.280e-03, 2.949e-02, 8.680e-02, 2.807e-02, -3.024e-01, 4.112e-02, -3.670e-02, 4.753e-02, 2.272e-01, 1.071e-02, 3.688e-02, -1.533e-02, -4.690e-02, 2.269e-02, -2.318e-02, 5.239e-04), r3);\n\tr4 = MulAdd(s1_1_0, M4(-6.619e-02, -3.724e-02, 2.199e-02, -5.998e-02, 6.338e-02, -1.820e-02, -4.225e-02, -1.040e-02, -4.392e-02, -1.180e-02, 1.150e-02, 2.520e-02, -1.500e-02, 2.271e-01, 2.974e-02, -3.138e-03), r4);\n\tr5 = MulAdd(s1_1_0, M4(6.724e-04, -7.980e-02, 7.258e-02, -5.028e-02, -8.569e-02, -1.350e-02, -7.507e-02, -2.490e-02, 2.642e-02, 1.655e-02, 1.044e-01, 2.069e-02, -3.037e-02, 1.304e-02, -1.750e-02, 5.213e-01), r5);\n\tr6 = MulAdd(s1_1_0, M4(-3.164e-02, -4.728e-02, 3.845e-02, 1.161e-02, -2.656e-02, -8.084e-02, 6.055e-02, -1.190e-02, 1.613e-02, -8.523e-02, 1.726e-02, 3.993e-03, -3.115e-01, -1.643e-02, 2.264e-02, 2.313e-02), r6);\n\tr7 = MulAdd(s1_1_0, M4(1.970e-03, 9.251e-02, -1.663e-02, -1.283e-01, -9.379e-03, 1.935e-02, 1.532e-03, 5.821e-02, -1.397e-02, 2.226e-02, 1.172e-02, 3.625e-02, 2.764e-04, 5.375e-03, -4.125e-01, -1.104e-02), r7);\n\tr0 = MulAdd(s1_1_1, M4(-1.610e-01, 1.897e-02, -2.758e-02, -8.879e-02, 1.046e-01, 1.304e-01, -9.008e-02, -5.796e-02, 4.957e-02, 1.556e-02, 9.311e-02, 1.217e-01, 4.048e-02, -1.968e-01, 6.862e-02, 5.171e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(2.335e-01, -1.579e-02, -1.493e-02, 1.867e-02, 1.074e-01, 5.604e-02, -3.007e-02, -1.803e-02, 4.498e-02, 5.848e-02, 8.563e-02, 1.792e-02, -9.757e-02, -1.323e-01, -3.908e-01, -5.743e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-2.510e-01, 1.101e-02, -1.431e-01, -3.665e-02, -3.560e-02, -1.149e-02, 2.437e-02, -2.446e-01, 1.170e-01, 2.557e-02, -5.309e-02, -4.227e-03, 1.268e-02, -3.789e-01, -4.597e-03, 5.734e-02), r2);\n\tr3 = MulAdd(s1_1_1, M4(8.314e-02, -4.262e-02, -3.422e-02, -6.613e-02, 3.601e-02, 2.563e-02, -3.742e-02, -9.389e-02, -2.980e-02, 1.442e-02, 7.620e-02, 1.967e-01, -1.218e-02, 1.947e-03, -1.127e-01, -5.631e-02), r3);\n\tr4 = MulAdd(s1_1_1, M4(-3.848e-02, -3.888e-02, -2.018e-01, -3.598e-02, 2.031e-01, -6.294e-02, 1.284e-02, -3.835e-01, 1.106e-02, 8.618e-02, -4.009e-03, 2.144e-01, 6.669e-02, -1.541e-02, 8.081e-02, 3.270e-02), r4);\n\tr5 = MulAdd(s1_1_1, M4(-2.083e-01, 1.199e-01, 7.691e-02, 3.380e-02, 8.730e-02, 9.642e-03, -1.167e-01, 1.099e-02, -8.425e-02, 6.610e-02, 2.907e-01, 4.100e-02, 1.791e-01, -1.265e-01, 1.998e-01, -2.124e-01), r5);\n\tr6 = MulAdd(s1_1_1, M4(2.201e-02, -1.027e-01, -6.909e-02, 1.717e-02, -2.066e-02, 4.200e-01, -2.727e-01, -1.357e-02, 4.602e-02, 1.563e-01, 2.160e-01, 1.645e-02, 8.304e-02, -1.695e-01, 3.523e-02, 3.976e-01), r6);\n\tr7 = MulAdd(s1_1_1, M4(1.945e-01, -2.726e-01, 1.534e-02, -9.138e-04, 2.091e-02, -9.741e-02, -3.207e-02, -1.223e-01, 1.194e-01, 3.562e-04, 3.355e-02, 9.011e-02, -7.097e-03, -2.899e-02, 2.680e-01, -5.722e-02), r7);\n\tr0 = MulAdd(s1_1_2, M4(-1.332e-02, 7.708e-03, -1.471e-02, -4.208e-02, 1.044e-02, 3.743e-02, 9.244e-03, 9.236e-03, -1.645e-02, 3.895e-02, -7.705e-03, -7.752e-02, 1.062e-02, 4.222e-02, 5.552e-02, -5.029e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-7.886e-04, -4.118e-02, -1.845e-02, 7.050e-04, 1.475e-02, 2.632e-02, 3.027e-03, -6.144e-03, -2.401e-02, 5.237e-02, -1.304e-02, 8.398e-03, 1.618e-02, 3.045e-03, -1.485e-02, -1.396e-01), r1);\n\tr2 = MulAdd(s1_1_2, M4(3.111e-02, -1.950e-02, 7.728e-02, 3.533e-02, -1.309e-02, 8.576e-03, -3.660e-03, 2.218e-02, 3.394e-02, 1.248e-02, 1.699e-02, 2.903e-02, -4.142e-03, -4.362e-03, 6.323e-03, 1.232e-02), r2);\n\tr3 = MulAdd(s1_1_2, M4(-1.265e-02, 4.220e-02, 8.782e-02, 5.163e-02, -8.460e-03, -1.801e-02, -6.169e-02, -3.818e-03, 6.046e-02, 4.114e-02, 8.795e-02, 5.241e-02, 1.302e-03, 1.125e-02, -1.586e-03, 2.613e-02), r3);\n\tr4 = MulAdd(s1_1_2, M4(3.802e-03, -1.366e-02, -1.615e-02, -1.236e-01, 3.395e-02, 5.504e-03, -2.910e-02, -1.283e-04, 1.164e-02, 1.293e-02, 2.992e-02, 1.916e-02, 4.152e-02, -2.275e-01, -3.583e-02, 2.313e-02), r4);\n\tr5 = MulAdd(s1_1_2, M4(8.656e-04, -2.257e-01, 9.412e-02, -3.105e-02, -2.163e-02, -6.275e-02, -2.270e-02, 5.565e-03, -1.142e-02, 4.970e-02, 3.629e-02, 2.045e-02, -1.626e-02, 9.372e-02, -3.971e-03, -4.834e-01), r5);\n\tr6 = MulAdd(s1_1_2, M4(-2.791e-02, -8.809e-02, -4.780e-03, 2.119e-02, -2.292e-02, -2.014e-01, 2.115e-02, -1.065e-02, 2.236e-02, 6.686e-02, -3.713e-02, 2.150e-02, 3.670e-01, 1.239e-01, -2.065e-02, 5.554e-02), r6);\n\tr7 = MulAdd(s1_1_2, M4(-4.292e-02, 1.597e-01, -3.552e-02, 8.990e-02, 4.166e-03, 4.604e-02, 1.406e-02, -1.115e-02, 2.762e-02, 3.522e-02, 4.575e-03, 8.581e-02, 3.415e-02, 5.890e-03, 7.468e-02, -2.760e-02), r7);\n\tr0 = MulAdd(s1_2_0, M4(5.587e-02, 3.504e-02, 1.426e-02, -6.187e-03, -3.917e-02, -2.057e-02, -1.637e-02, -3.482e-03, 2.527e-02, 1.139e-02, 9.998e-04, 1.086e-02, 4.963e-03, 2.088e-02, 1.900e-01, -2.546e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-3.774e-02, -1.126e-02, 2.122e-02, -1.295e-02, 2.633e-03, 2.783e-03, -1.264e-02, 1.308e-03, 3.550e-04, -4.089e-03, 1.401e-02, -2.488e-04, -1.469e-02, 5.573e-03, -1.693e-01, -4.968e-02), r1);\n\tr2 = MulAdd(s1_2_0, M4(9.527e-03, -1.666e-02, 3.600e-02, 1.213e-01, -5.681e-03, 1.389e-02, -2.488e-02, 4.636e-03, -2.472e-03, -6.036e-03, 6.980e-02, 4.164e-02, 1.663e-02, -1.078e-02, 2.971e-02, -8.330e-02), r2);\n\tr3 = MulAdd(s1_2_0, M4(-1.162e-02, -2.447e-02, -1.506e-02, -5.547e-03, -2.757e-02, -4.595e-03, -1.280e-02, -1.180e-03, 5.080e-02, 5.399e-04, 1.056e-02, -1.034e-02, -5.185e-02, -9.174e-03, 4.598e-03, 1.232e-02), r3);\n\tr4 = MulAdd(s1_2_0, M4(7.318e-02, -5.898e-03, -2.660e-03, -1.464e-02, 1.374e-04, -2.824e-02, 2.384e-03, 9.465e-03, 3.343e-03, 2.173e-02, 4.104e-04, 5.300e-03, 5.740e-02, -2.036e-01, 1.138e-02, -2.019e-02), r4);\n\tr5 = MulAdd(s1_2_0, M4(3.406e-02, -9.663e-02, -5.448e-02, -2.198e-02, -2.020e-03, -2.730e-03, 5.039e-02, 2.562e-03, 1.097e-03, 5.986e-04, -1.877e-02, 1.189e-03, -8.487e-03, 5.379e-02, -2.011e-02, 3.208e-01), r5);\n\tr6 = MulAdd(s1_2_0, M4(-2.405e-02, -2.653e-02, 1.024e-02, -1.280e-02, -4.172e-03, -2.887e-02, -9.619e-03, -5.841e-03, -1.682e-03, -6.330e-02, 8.739e-03, 4.401e-03, -2.607e-01, -2.600e-01, -3.621e-04, 5.045e-02), r6);\n\tr7 = MulAdd(s1_2_0, M4(-2.930e-02, 5.317e-02, -1.691e-02, -1.059e-01, 1.641e-02, -6.421e-03, 1.469e-02, 1.885e-02, -1.035e-03, 6.655e-04, -9.153e-03, 3.714e-03, -1.996e-02, 1.057e-02, -1.635e-02, 1.136e-02), r7);\n\tr0 = MulAdd(s1_2_1, M4(1.613e-01, -3.930e-02, -1.684e-02, 4.990e-02, -9.732e-02, -5.712e-02, -7.737e-02, -5.430e-02, 6.602e-02, 3.943e-02, 4.205e-02, 3.539e-02, -8.545e-02, -1.622e-02, 2.807e-01, -2.401e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-3.357e-02, 4.094e-02, 6.701e-04, -1.022e-02, 2.469e-02, -4.405e-02, -3.870e-02, -4.491e-03, -2.373e-02, 2.826e-02, 3.720e-02, 7.619e-03, 2.508e-02, 3.937e-03, -9.496e-02, -1.896e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(5.009e-02, -8.218e-03, 7.544e-02, -1.599e-01, -1.855e-02, 7.198e-04, 9.265e-03, 4.968e-02, 1.960e-02, 6.702e-03, -1.497e-02, -5.139e-02, -2.843e-02, -9.799e-03, 3.750e-02, 4.958e-02), r2);\n\tr3 = MulAdd(s1_2_1, M4(1.432e-02, -1.479e-02, 9.914e-03, 3.619e-02, -1.072e-01, -8.229e-03, -4.055e-03, -9.490e-03, 1.275e-01, 5.056e-03, -7.828e-03, 2.760e-02, 4.094e-02, 9.342e-03, 4.325e-02, -4.804e-03), r3);\n\tr4 = MulAdd(s1_2_1, M4(4.712e-02, -1.405e-02, 8.179e-02, -4.759e-02, 2.117e-01, -7.921e-02, -3.502e-03, 7.529e-02, -7.358e-02, 7.297e-02, 4.144e-05, -5.261e-02, -2.155e-01, -4.630e-01, -1.833e-02, 4.209e-02), r4);\n\tr5 = MulAdd(s1_2_1, M4(7.626e-02, 7.053e-02, 2.115e-02, 5.883e-03, -2.756e-02, 2.920e-03, 5.692e-02, 3.139e-03, 4.723e-03, 1.981e-02, -3.713e-02, -6.558e-03, -4.204e-02, -8.798e-02, 2.618e-04, -2.555e-01), r5);\n\tr6 = MulAdd(s1_2_1, M4(5.246e-03, -3.581e-01, 8.570e-02, -3.602e-02, 5.389e-03, -1.090e-01, -5.086e-02, 9.800e-03, -2.984e-03, 4.203e-01, 2.784e-02, -2.688e-03, -2.875e-02, 1.239e-01, -2.153e-02, 5.779e-02), r6);\n\tr7 = MulAdd(s1_2_1, M4(-3.059e-02, 1.317e-02, 2.470e-03, 7.287e-02, 7.613e-03, 6.855e-02, 5.389e-03, -6.526e-03, 2.769e-03, -4.876e-02, -1.204e-03, -6.006e-02, -9.304e-04, -7.304e-03, -5.964e-03, -5.300e-02), r7);\n\tr0 = MulAdd(s1_2_2, M4(3.324e-02, 6.462e-02, 2.492e-02, 5.959e-02, -5.333e-03, -9.274e-03, -4.950e-03, 2.973e-02, 3.804e-03, 1.113e-03, -1.439e-02, -3.260e-02, 2.692e-02, -9.656e-03, 3.535e-02, -5.434e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(-2.574e-02, 2.917e-02, 1.583e-02, -7.433e-04, 6.083e-03, -3.703e-03, -1.670e-02, -9.224e-03, -1.647e-02, 4.717e-03, -9.703e-04, 3.693e-05, 2.151e-02, -5.783e-03, 7.983e-02, 3.694e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(3.995e-02, 4.758e-03, 3.162e-02, 5.823e-02, -1.746e-03, -1.529e-03, -4.171e-03, -3.871e-02, 2.731e-04, 6.056e-03, 2.013e-02, 7.987e-03, -8.509e-03, 2.606e-02, 9.403e-03, 5.533e-02), r2);\n\tr3 = MulAdd(s1_2_2, M4(3.009e-02, 2.343e-02, -2.270e-02, -1.032e-02, -2.241e-02, -3.937e-03, -1.808e-02, -3.135e-03, 1.851e-02, -1.258e-02, 2.020e-02, 2.506e-03, 1.237e-02, 3.878e-03, 2.065e-02, 5.080e-03), r3);\n\tr4 = MulAdd(s1_2_2, M4(-1.178e-02, 2.022e-02, 5.362e-02, -4.195e-04, -1.496e-02, -2.784e-02, 7.923e-03, 9.848e-03, -1.264e-03, -2.355e-03, -1.678e-02, -1.006e-02, -4.888e-02, -3.257e-02, -1.040e-02, 1.107e-02), r4);\n\tr5 = MulAdd(s1_2_2, M4(4.259e-02, 2.188e-02, -2.732e-02, -2.413e-02, 3.366e-03, 5.611e-03, 4.099e-02, 5.765e-03, -1.479e-02, 1.497e-03, -4.943e-02, -6.206e-03, -1.653e-03, 6.616e-02, 5.008e-03, 8.134e-04), r5);\n\tr6 = MulAdd(s1_2_2, M4(-1.182e-02, -1.275e-01, 7.212e-02, -3.132e-03, 1.432e-02, 5.283e-02, 9.252e-03, -6.545e-03, -1.052e-02, -1.721e-01, -5.741e-03, 2.099e-03, 5.709e-02, -2.620e-02, 1.018e-02, 3.301e-02), r6);\n\tr7 = MulAdd(s1_2_2, M4(-4.131e-02, 9.073e-02, -6.150e-04, -2.696e-02, 6.673e-03, -3.917e-02, 3.396e-03, -5.014e-02, -3.042e-03, 7.839e-02, 9.334e-03, 1.461e-01, 8.233e-03, -5.651e-02, -1.904e-04, 4.348e-02), r7);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n\tr3 = max(r3, 0.0);\n\tT3[gxy] = r3;\n\tr4 = max(r4, 0.0);\n\tT4[gxy] = r4;\n\tr5 = max(r5, 0.0);\n\tT5[gxy] = r5;\n\tr6 = max(r6, 0.0);\n\tT6[gxy] = r6;\n\tr7 = max(r7, 0.0);\n\tT7[gxy] = r7;\n}\n\n//!PASS 10\n//!DESC out-shuffle (32x12)\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, T0, T1, T2, T3, T4, T5, T6, T7\n//!OUT OUTPUT\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n#define L3(x, y) V4(O(T3, x, y))\n#define L4(x, y) V4(O(T4, x, y))\n#define L5(x, y) V4(O(T5, x, y))\n#define L6(x, y) V4(O(T6, x, y))\n#define L7(x, y) V4(O(T7, x, y))\n\nvoid Pass10(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 sz = GetOutputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(6.536e-03, -1.553e-04, 1.180e-02, 2.795e-03, -1.435e-04, 5.009e-04, 2.105e-03, 2.085e-04, -2.543e-02, 2.419e-03, -8.638e-04, 2.445e-03, -5.811e-03, 4.714e-03, 3.582e-03, -1.736e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.112e-04, 3.390e-03, 1.429e-02, 2.803e-03, -7.525e-03, 1.744e-03, 9.001e-04, 4.977e-04, 5.361e-03, -2.926e-04, -2.612e-04, -9.695e-04, -7.373e-03, 4.104e-03, 3.419e-03, -2.151e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(4.057e-03, 1.914e-03, 1.251e-02, 4.410e-03, -8.533e-03, -1.833e-03, 3.898e-04, 4.003e-04, -7.057e-03, 1.664e-03, 1.786e-04, 9.965e-04, -3.412e-03, 5.146e-03, 2.117e-03, -1.485e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(-1.486e-01, -7.984e-02, 3.074e-02, 3.923e-02, -3.677e-04, -3.278e-03, 1.054e-02, 6.254e-03, -8.406e-02, -8.081e-02, 1.764e-02, 8.502e-03, -1.221e-02, -6.571e-03, 9.191e-03, 2.205e-03), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.808e-01, -1.106e-01, 3.510e-02, 5.017e-02, -1.649e-02, -2.131e-02, 1.406e-02, 9.417e-03, 2.362e-02, 1.838e-02, -5.754e-03, 6.855e-04, -1.047e-02, -2.992e-03, 3.980e-03, 2.039e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(-1.577e-01, -8.716e-02, 2.958e-02, 3.877e-02, -1.439e-02, -1.827e-02, 8.747e-03, 4.421e-03, -2.946e-02, -2.411e-02, 6.042e-03, 5.737e-03, -1.475e-02, -2.538e-03, 4.356e-03, -1.629e-03), r2);\n\tr0 = MulAdd(s0_0_2, M4(5.298e-03, -2.189e-02, 3.668e-03, 1.358e-02, 2.600e-03, -9.894e-03, -2.785e-03, 7.909e-03, -2.487e-03, -3.410e-02, -1.638e-03, 2.289e-03, -2.392e-03, 4.081e-03, -5.163e-04, 2.110e-04), r0);\n\tr1 = MulAdd(s0_0_2, M4(-4.925e-03, -4.187e-02, 7.194e-03, 1.179e-02, 9.481e-04, -1.386e-02, -1.219e-03, 7.224e-03, 1.529e-03, 9.007e-03, 8.150e-04, 2.145e-04, -4.606e-03, 6.780e-03, -1.721e-04, 1.609e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(-3.938e-03, -3.333e-02, 1.740e-03, 8.678e-03, -1.851e-03, -1.727e-02, -1.979e-03, 3.894e-03, 7.573e-04, -1.404e-02, -1.423e-03, -6.127e-04, -5.314e-03, 1.019e-03, -8.835e-04, -3.175e-04), r2);\n\tr0 = MulAdd(s0_1_0, M4(-1.011e-02, 6.430e-03, 7.138e-03, 5.573e-03, -8.692e-03, 5.033e-03, -3.971e-03, -1.063e-03, 3.284e-02, 4.592e-03, -1.982e-03, -4.809e-03, -2.225e-03, 9.040e-03, -6.802e-03, 1.381e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.566e-02, 1.692e-03, 1.220e-02, 6.463e-03, 9.704e-04, 4.092e-03, -1.541e-03, -4.859e-04, -3.721e-03, -1.923e-04, -1.755e-03, 1.969e-03, -7.025e-03, 1.169e-02, -1.230e-02, 1.727e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-9.935e-03, 4.059e-03, 9.063e-03, 4.904e-03, 1.629e-03, 7.160e-03, -1.199e-03, -2.012e-04, 1.464e-02, -9.567e-05, -4.338e-03, -1.928e-03, 3.021e-03, 9.795e-03, -2.149e-04, 1.570e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(-5.621e-02, 2.168e-02, 2.179e-01, 1.421e-02, 1.857e-01, -2.032e-02, -1.496e-01, 3.940e-03, 3.148e-01, 2.175e-01, -3.645e-01, -1.997e-01, 1.068e-01, -1.086e-01, 6.470e-02, -9.697e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-5.410e-02, 2.485e-02, 2.589e-01, 1.778e-02, 2.607e-01, 3.478e-02, -2.458e-01, -4.346e-02, -6.140e-02, -4.433e-02, 5.727e-02, 4.163e-02, 1.353e-01, -1.519e-01, 9.293e-02, -1.295e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-4.330e-02, 2.548e-02, 2.203e-01, 2.020e-02, 2.144e-01, 1.475e-02, -1.952e-01, -2.304e-02, 1.160e-01, 8.405e-02, -1.491e-01, -7.940e-02, 1.076e-01, -1.051e-01, 6.361e-02, -9.021e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(-2.697e-03, 1.427e-02, -8.627e-03, 4.432e-02, -1.181e-02, 4.811e-02, -4.399e-03, -9.440e-03, 1.482e-04, 8.459e-02, 1.650e-02, -7.642e-02, -7.064e-03, -6.217e-03, -6.301e-03, 1.322e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-3.475e-03, 2.235e-02, -7.250e-03, 6.167e-02, -9.901e-03, 6.191e-02, -4.011e-03, -1.726e-02, 2.023e-04, -2.936e-02, -2.697e-03, 1.703e-02, -7.531e-03, 2.706e-04, -1.069e-02, 1.564e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.923e-03, 1.572e-02, -9.355e-03, 4.505e-02, -9.194e-03, 5.810e-02, -7.026e-03, -1.895e-02, -8.708e-04, 2.461e-02, 5.713e-03, -3.287e-02, -6.822e-03, -5.916e-03, -8.881e-03, 8.309e-03), r2);\n\tr0 = MulAdd(s0_2_0, M4(1.304e-03, -1.823e-04, -8.926e-04, -1.055e-03, -1.356e-03, 6.534e-04, -1.321e-03, 5.203e-03, 1.166e-03, -3.730e-03, 8.704e-03, -8.196e-03, -8.489e-04, 1.269e-03, -4.426e-03, 3.696e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(-5.453e-04, 1.365e-04, -3.057e-03, -1.696e-03, -3.275e-03, 3.229e-04, -6.649e-04, 1.850e-03, -1.095e-03, 1.344e-03, -3.817e-04, -1.007e-03, -1.688e-03, 1.024e-03, -3.856e-03, 2.784e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(-3.555e-05, 1.703e-05, -1.959e-03, -1.396e-03, -3.109e-03, 1.663e-04, 7.634e-05, 4.007e-03, -1.272e-04, -5.371e-04, 3.776e-03, -4.236e-03, 2.538e-04, 2.668e-03, -8.964e-04, 3.908e-03), r2);\n\tr0 = MulAdd(s0_2_1, M4(5.875e-03, -2.073e-03, -1.339e-02, 7.809e-04, -1.070e-02, 6.045e-03, -4.661e-02, -2.140e-02, -1.568e-02, 1.552e-03, 9.644e-02, 9.399e-02, -1.168e-03, 9.085e-03, 9.830e-03, -8.167e-03), r0);\n\tr1 = MulAdd(s0_2_1, M4(4.846e-03, -4.935e-03, -1.801e-02, -3.853e-03, -1.071e-02, 6.852e-03, -1.229e-02, 2.732e-03, 1.013e-03, -3.174e-03, -1.719e-02, -1.140e-02, -3.818e-03, 1.752e-02, 8.271e-03, -9.500e-03), r1);\n\tr2 = MulAdd(s0_2_1, M4(4.506e-03, -3.341e-03, -1.521e-02, 2.494e-05, -6.342e-03, 7.369e-03, -1.209e-02, -2.677e-03, -4.947e-03, -1.016e-03, 3.796e-02, 3.901e-02, -3.205e-03, 1.314e-02, 8.777e-03, -1.771e-03), r2);\n\tr0 = MulAdd(s0_2_2, M4(-9.636e-04, 6.128e-04, -2.493e-03, -7.815e-03, 4.572e-03, -8.934e-04, 2.681e-03, -1.266e-02, -8.698e-04, -5.596e-03, 4.526e-03, 2.084e-02, -7.113e-04, 6.970e-03, -8.181e-04, -3.173e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(-2.695e-03, -7.004e-04, -3.196e-03, -8.945e-03, 1.616e-03, -2.431e-03, -1.269e-03, -9.806e-03, -4.105e-04, 2.687e-03, -2.449e-03, -6.400e-03, -1.834e-03, 2.873e-03, -1.415e-03, -9.750e-04), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.099e-03, 2.169e-04, -2.936e-03, -7.594e-03, 2.479e-03, 1.290e-03, 1.757e-03, -2.527e-03, -1.406e-03, -6.050e-04, -1.387e-03, 6.014e-03, -2.435e-03, 2.845e-03, -2.391e-03, -4.743e-03), r2);\n\tr0 = MulAdd(s1_0_0, M4(-8.847e-03, 2.949e-03, 2.082e-03, -2.279e-03, 7.977e-03, -6.109e-03, -2.109e-03, -1.415e-03, -8.225e-03, -2.857e-03, -7.756e-03, -1.876e-03, 1.247e-02, 1.849e-04, 1.069e-04, 7.315e-04), r0);\n\tr1 = MulAdd(s1_0_0, M4(-8.512e-03, 2.596e-03, 2.096e-03, -2.008e-03, 7.567e-03, -7.839e-03, 7.749e-04, -5.607e-04, 2.764e-03, 3.317e-04, 6.621e-03, 4.555e-04, -2.751e-03, -6.104e-04, -8.743e-04, -1.526e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(-5.414e-03, 4.479e-03, 2.513e-03, -2.188e-03, 1.052e-02, -5.456e-03, 2.292e-03, 7.838e-05, 1.689e-03, 2.205e-03, 1.871e-03, -9.309e-04, 3.119e-03, 8.349e-04, -4.758e-04, 7.152e-04), r2);\n\tr0 = MulAdd(s1_0_1, M4(-3.137e-02, -1.273e-02, 1.397e-03, 8.147e-03, -7.153e-02, -6.138e-02, 1.985e-02, 1.050e-02, 3.651e-02, 1.107e-02, -2.329e-02, 2.142e-02, -2.335e-02, 2.252e-03, 1.097e-02, 2.974e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(-3.914e-02, -1.398e-02, 4.298e-03, 1.145e-02, -8.026e-02, -7.886e-02, 2.155e-02, 1.170e-02, -1.210e-02, -2.190e-04, 8.107e-03, -3.919e-03, 5.064e-03, -5.636e-05, -1.715e-04, -4.346e-05), r1);\n\tr2 = MulAdd(s1_0_1, M4(-1.838e-02, -4.510e-03, 6.368e-03, 1.109e-02, -6.866e-02, -5.923e-02, 1.679e-02, 1.324e-02, 1.992e-02, 1.764e-02, -4.936e-03, 9.885e-03, -1.315e-02, -3.625e-03, 2.318e-03, -1.455e-03), r2);\n\tr0 = MulAdd(s1_0_2, M4(-1.217e-03, -7.088e-03, -1.421e-03, 1.118e-03, 6.348e-04, -2.347e-02, -3.339e-04, -2.213e-03, 1.119e-02, 2.715e-02, 2.239e-03, -1.099e-03, 9.370e-03, -4.778e-03, -1.113e-03, 4.150e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(-1.074e-03, -5.190e-03, -5.752e-04, 2.165e-03, -9.736e-04, -2.863e-02, 2.040e-04, -1.804e-04, -2.121e-03, -1.563e-03, -1.543e-03, 8.657e-04, -1.759e-03, 2.738e-03, 1.479e-04, 3.087e-04), r1);\n\tr2 = MulAdd(s1_0_2, M4(-4.153e-04, 8.458e-04, -2.648e-03, 1.704e-03, 4.730e-04, -2.350e-02, -5.321e-05, -1.203e-03, 3.679e-03, 1.488e-02, 2.151e-03, 1.505e-03, 4.563e-03, -2.287e-03, 1.021e-03, 1.903e-03), r2);\n\tr0 = MulAdd(s1_1_0, M4(-2.361e-02, 3.257e-04, -2.498e-02, 1.151e-02, 4.512e-02, -1.813e-02, 5.920e-02, -1.444e-02, 1.179e-01, -2.197e-02, -1.305e-02, 2.596e-02, 1.251e-02, -6.552e-03, -3.239e-03, -1.836e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-2.394e-02, 2.661e-03, -2.753e-02, 1.581e-02, 4.919e-02, -2.707e-02, 6.665e-02, -2.020e-02, -2.415e-02, 5.245e-03, -1.106e-03, -3.449e-03, -4.414e-03, 1.229e-03, -2.807e-03, 3.860e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(-2.704e-02, -2.203e-03, -2.655e-02, 1.000e-02, 4.645e-02, -1.825e-02, 5.851e-02, -1.626e-02, 4.114e-02, -1.055e-02, -3.292e-03, 1.187e-02, 5.798e-03, -4.958e-03, -3.382e-03, -2.947e-03), r2);\n\tr0 = MulAdd(s1_1_1, M4(2.855e-02, -1.258e-01, -1.174e-01, -1.432e-01, 1.140e-02, 1.768e-01, -1.804e-01, -2.375e-02, -3.137e-01, 2.131e-01, 2.881e-01, -1.602e-01, 3.322e-01, 2.358e-01, 1.521e-02, 3.277e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.812e-02, -1.471e-01, -1.489e-01, -1.821e-01, 2.234e-02, 2.193e-01, -2.144e-01, -3.003e-02, 6.140e-02, -3.357e-02, -4.720e-02, 1.894e-02, -7.934e-02, -5.298e-02, -1.546e-02, -1.971e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(2.239e-02, -1.316e-01, -9.926e-02, -1.355e-01, 1.003e-02, 1.818e-01, -1.774e-01, -2.215e-02, -1.250e-01, 8.510e-02, 1.179e-01, -5.758e-02, 1.294e-01, 9.713e-02, -8.303e-03, -2.689e-03), r2);\n\tr0 = MulAdd(s1_1_2, M4(1.018e-03, 6.236e-02, 6.031e-03, 2.252e-02, 4.757e-04, -4.581e-02, 1.097e-02, -5.334e-02, 1.983e-02, -1.313e-01, -3.187e-02, 5.918e-02, -2.997e-02, 8.778e-02, -6.236e-03, -1.864e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(2.257e-03, 6.763e-02, 6.677e-03, 2.774e-02, 2.973e-03, -5.359e-02, 1.138e-02, -5.994e-02, -5.099e-03, 3.910e-02, 9.463e-03, -1.230e-02, 4.827e-03, -2.459e-02, 3.460e-03, -2.702e-04), r1);\n\tr2 = MulAdd(s1_1_2, M4(-3.151e-04, 6.038e-02, 3.308e-03, 2.679e-02, -7.847e-04, -5.140e-02, 6.464e-03, -5.809e-02, 5.531e-03, -4.992e-02, -7.362e-03, 2.428e-02, -1.087e-02, 3.375e-02, 3.513e-03, -7.451e-03), r2);\n\tr0 = MulAdd(s1_2_0, M4(-2.334e-04, 7.731e-04, -2.638e-03, 3.350e-04, 2.194e-03, 1.747e-03, 2.398e-02, -5.556e-03, -4.501e-03, 2.122e-03, -3.450e-03, 8.489e-03, -1.608e-02, 4.339e-03, 1.893e-02, 3.921e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-3.227e-03, 7.023e-04, 2.829e-04, -3.034e-03, 3.218e-03, 1.700e-03, 2.594e-02, -7.735e-03, 1.010e-03, -9.290e-04, 2.945e-03, -3.460e-03, 1.193e-03, 7.866e-04, -1.201e-03, -8.176e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-7.102e-04, 1.226e-03, -4.314e-03, -2.701e-03, 3.504e-03, 2.858e-03, 2.252e-02, -4.817e-03, -3.455e-03, -8.528e-04, -4.444e-03, -9.779e-05, -4.689e-03, 1.891e-03, 1.166e-02, 1.268e-02), r2);\n\tr0 = MulAdd(s1_2_1, M4(-1.053e-02, 1.293e-02, 5.949e-02, 6.633e-03, -1.318e-05, -1.714e-02, 8.037e-02, 8.422e-02, 3.479e-02, -2.692e-02, -2.525e-02, 1.654e-02, 1.677e-02, -6.561e-03, -3.903e-01, -3.081e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.041e-02, 1.402e-02, 7.397e-02, 1.910e-02, 4.761e-04, -2.189e-02, 8.370e-02, 9.741e-02, -9.669e-03, 3.105e-03, 1.283e-02, 5.391e-03, 1.257e-02, 9.025e-03, 7.495e-02, 6.828e-02), r1);\n\tr2 = MulAdd(s1_2_1, M4(-1.150e-02, 1.067e-02, 5.505e-02, 3.515e-03, -3.031e-03, -1.811e-02, 6.718e-02, 8.228e-02, 1.160e-02, -7.922e-03, -9.584e-03, 1.523e-02, 1.766e-02, 9.218e-03, -1.477e-01, -1.111e-01), r2);\n\tr0 = MulAdd(s1_2_2, M4(1.800e-03, 2.809e-03, -8.679e-04, 4.236e-02, -1.530e-04, -8.804e-04, -4.535e-03, 8.532e-03, -1.320e-04, 1.108e-02, -1.083e-02, -6.371e-03, -5.079e-03, -6.099e-03, 3.393e-02, -4.553e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.036e-03, 3.152e-03, -4.738e-03, 4.260e-02, 1.928e-04, 2.318e-03, 2.204e-03, 1.192e-02, 6.993e-04, -4.150e-03, 2.686e-03, -2.842e-03, -4.302e-04, -4.610e-04, -9.520e-03, 1.333e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(3.783e-04, 7.018e-05, -2.884e-03, 3.650e-02, 1.271e-03, -1.406e-03, -1.429e-03, 1.976e-03, 8.770e-04, 2.600e-03, -5.381e-03, -1.169e-02, -4.752e-03, -5.965e-03, 8.675e-03, -1.206e-02), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\ts1_0_0 = L3(-1.0, -1.0); s1_0_1 = L3(0.0, -1.0); s1_0_2 = L3(1.0, -1.0);\n\ts1_1_0 = L3(-1.0, 0.0); s1_1_1 = L3(0.0, 0.0); s1_1_2 = L3(1.0, 0.0);\n\ts1_2_0 = L3(-1.0, 1.0); s1_2_1 = L3(0.0, 1.0); s1_2_2 = L3(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-8.270e-03, -4.335e-03, -4.436e-03, 3.587e-03, 2.672e-03, -1.374e-03, 1.470e-03, 1.445e-03, -1.961e-03, 1.124e-04, -4.786e-04, 5.576e-04, -1.899e-04, -6.485e-05, -2.871e-03, 1.024e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-9.637e-03, -2.811e-03, -4.754e-03, 4.664e-03, 1.278e-03, -3.356e-04, -5.816e-04, 2.017e-03, -1.316e-03, 4.577e-04, -8.027e-04, 4.267e-04, 1.125e-03, 4.589e-04, -2.908e-03, 1.015e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(-7.373e-03, -2.099e-03, -2.663e-03, 5.172e-03, 1.985e-03, -1.430e-03, 2.241e-04, 1.229e-03, -2.728e-04, 3.527e-04, 2.327e-04, 8.215e-04, 1.936e-03, -3.792e-04, -1.008e-03, 1.539e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(2.264e-02, -7.239e-03, -4.527e-03, -1.084e-02, -3.728e-02, 1.178e-02, -1.989e-02, -8.277e-03, -7.587e-04, 4.708e-04, -3.787e-04, 8.447e-05, 2.314e-02, 4.028e-03, 2.036e-03, -9.115e-04), r0);\n\tr1 = MulAdd(s0_0_1, M4(2.960e-02, -1.247e-02, -7.508e-03, -9.332e-03, 6.502e-03, 2.281e-03, 5.723e-03, 1.248e-03, -3.658e-03, 1.108e-03, -4.735e-04, 7.123e-04, 2.569e-02, 2.534e-03, -1.556e-03, -3.163e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(2.594e-02, -6.544e-03, -5.569e-03, -9.064e-03, -6.065e-03, 4.577e-03, -8.695e-04, -3.545e-03, -3.982e-04, 2.359e-03, 4.178e-04, 9.407e-04, 1.779e-02, 3.863e-03, -2.764e-03, -2.412e-03), r2);\n\tr0 = MulAdd(s0_0_2, M4(-4.258e-03, 5.065e-03, -3.152e-03, -4.048e-03, -1.106e-02, 3.579e-02, 4.084e-03, 1.361e-02, 1.392e-03, -1.410e-03, 9.064e-04, -3.915e-03, -8.318e-04, -1.515e-02, -1.757e-03, 4.555e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(-4.198e-03, 8.903e-03, -2.937e-03, -5.510e-03, 1.852e-03, -2.152e-02, -4.344e-03, -1.697e-03, 6.868e-03, -2.737e-03, -6.500e-04, -4.134e-03, 4.741e-04, -1.887e-02, -1.120e-03, 8.519e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(-2.320e-03, 9.825e-03, -8.040e-04, -2.750e-03, -1.034e-02, 9.242e-03, -3.444e-03, 9.055e-03, 4.770e-03, -6.373e-05, 1.171e-03, -2.351e-03, -5.389e-04, -2.137e-02, -1.461e-03, 1.784e-03), r2);\n\tr0 = MulAdd(s0_1_0, M4(2.794e-03, -1.189e-02, -5.480e-03, -1.740e-02, -5.630e-03, 6.190e-03, -1.506e-03, -4.717e-03, -3.496e-03, 1.239e-03, -3.583e-03, -1.848e-04, 1.440e-02, -2.526e-03, 5.481e-03, -3.101e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(6.124e-03, -1.524e-02, -4.496e-03, -1.971e-02, 5.053e-03, -9.880e-06, 1.784e-03, -3.695e-03, -3.871e-03, 1.319e-03, -3.367e-03, 9.125e-04, 1.503e-02, -4.018e-03, 6.971e-03, -3.670e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(-3.072e-03, -1.386e-02, -1.078e-02, -1.853e-02, -4.243e-03, 1.728e-03, -1.446e-03, -4.490e-03, -4.008e-03, 2.628e-04, -2.846e-03, -7.047e-05, 2.120e-02, -3.016e-03, 1.133e-02, -9.951e-04), r2);\n\tr0 = MulAdd(s0_1_1, M4(1.547e-01, 1.451e-01, 1.369e-01, 1.077e-01, 3.174e-01, -1.178e-03, 1.077e-01, 1.506e-02, 3.675e-03, 3.483e-03, -1.507e-02, 4.767e-03, -1.789e-01, 7.690e-02, -4.121e-02, 8.277e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(1.812e-01, 1.872e-01, 1.724e-01, 1.316e-01, -6.665e-02, -2.381e-03, -2.917e-02, 5.257e-03, 1.012e-02, 3.897e-03, -1.375e-02, 5.840e-03, -2.209e-01, 9.646e-02, -5.482e-02, 1.097e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(1.480e-01, 1.361e-01, 1.374e-01, 1.014e-01, 1.151e-01, 3.133e-04, 3.780e-02, 8.211e-03, -9.808e-04, 1.802e-03, -1.552e-02, 5.765e-03, -1.971e-01, 9.009e-02, -5.204e-02, 9.531e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(-9.738e-03, 1.167e-02, -1.181e-02, 2.276e-02, 8.042e-03, -3.155e-01, -4.852e-03, -9.679e-02, 1.034e-01, -1.205e-01, -8.722e-04, 5.249e-03, 3.038e-03, 2.286e-02, 7.542e-03, -3.845e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-9.051e-03, 1.246e-02, -1.101e-02, 3.407e-02, 5.153e-03, 7.310e-02, 7.055e-03, 1.344e-02, 1.241e-01, -1.439e-01, 8.187e-03, 1.256e-02, 3.870e-03, 3.601e-02, 1.001e-02, -5.549e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-8.417e-03, 1.612e-02, -1.095e-02, 2.899e-02, 1.198e-02, -1.339e-01, -6.944e-04, -4.353e-02, 1.126e-01, -1.333e-01, 8.577e-03, 7.703e-03, 6.170e-04, 1.417e-02, 7.251e-03, -5.313e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(-2.513e-03, -7.049e-04, 2.900e-03, -2.203e-03, 8.534e-03, -5.652e-05, 3.490e-03, 4.595e-03, 3.939e-04, 2.009e-04, -5.889e-04, 1.928e-04, 3.172e-03, 1.101e-03, 8.973e-03, -2.214e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.555e-03, -3.073e-04, 2.661e-03, -3.799e-03, 1.604e-03, 1.136e-03, 6.965e-03, 1.919e-03, -2.414e-04, -5.622e-05, -1.268e-03, -2.708e-04, 3.100e-03, 1.118e-03, 9.797e-03, -2.044e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(-3.006e-03, 3.364e-04, -1.912e-05, -2.955e-03, 6.646e-03, 7.668e-05, 5.262e-03, 2.692e-03, 6.471e-04, 4.397e-05, -1.445e-03, -1.015e-03, 9.439e-03, 3.439e-03, 1.763e-02, -7.481e-04), r2);\n\tr0 = MulAdd(s0_2_1, M4(-1.984e-02, -1.413e-02, 5.574e-03, 2.566e-02, 1.292e-02, 1.126e-02, 2.037e-01, 1.710e-02, -6.167e-03, 7.503e-03, 8.388e-03, 8.636e-03, 1.653e-02, -3.825e-03, -4.780e-02, -1.097e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-1.874e-02, -1.569e-02, 1.058e-02, 4.029e-02, -8.582e-03, -3.012e-03, -4.339e-02, -1.043e-02, -9.619e-03, 7.381e-03, 1.124e-02, 9.231e-03, 1.758e-02, -4.471e-03, -5.432e-02, -1.775e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.533e-02, -1.481e-02, 9.926e-03, 2.435e-02, 2.488e-03, 5.063e-03, 7.445e-02, 4.387e-03, -1.400e-02, 4.294e-03, -1.810e-03, 3.949e-03, 1.254e-02, -1.558e-03, -6.062e-02, -1.042e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(1.972e-03, -6.351e-03, 3.213e-04, -1.230e-02, -5.946e-03, -2.091e-02, -1.187e-02, -2.163e-01, 1.536e-02, -1.346e-02, 1.271e-01, -1.461e-01, -1.478e-03, 3.275e-03, -1.501e-03, 2.520e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(3.322e-03, -5.997e-03, 3.496e-04, -1.523e-02, 1.065e-04, -3.771e-04, 4.522e-03, 4.259e-02, 1.335e-02, -1.452e-02, 1.501e-01, -1.688e-01, -2.316e-03, -2.244e-03, -6.299e-03, 3.552e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(2.611e-03, -4.240e-03, -3.390e-04, -9.719e-03, 1.612e-05, -7.986e-03, 4.050e-03, -9.401e-02, 2.222e-02, -1.291e-02, 1.382e-01, -1.558e-01, -7.532e-04, -2.445e-03, -3.924e-03, 2.205e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(-6.429e-04, 2.124e-04, 3.306e-03, 2.655e-05, 4.762e-04, -6.423e-04, 9.553e-05, 3.327e-04, -4.078e-04, -2.299e-04, -9.391e-04, -3.286e-03, 6.708e-04, 4.082e-03, -5.966e-03, -1.373e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-2.508e-03, -2.579e-04, 2.448e-04, 7.199e-04, 2.709e-05, -9.622e-04, -2.145e-04, 5.177e-04, -2.946e-03, -3.630e-04, -2.937e-05, -2.387e-03, -1.785e-03, 6.282e-03, -3.148e-03, -1.222e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(-1.516e-03, -2.525e-04, 2.293e-03, 4.337e-04, 1.184e-04, -7.996e-04, -3.021e-04, 5.643e-04, -3.901e-03, -4.040e-04, -4.728e-04, -2.531e-03, -2.913e-03, 3.279e-03, -4.013e-03, -7.594e-04), r2);\n\tr0 = MulAdd(s1_0_1, M4(1.772e-02, -4.979e-03, -2.286e-04, 1.085e-04, -2.937e-03, 2.833e-03, -4.024e-04, 1.241e-03, 1.498e-03, 5.343e-03, -2.971e-04, 6.293e-04, -1.663e-04, 9.650e-03, -2.788e-03, -3.178e-03), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.553e-02, -1.129e-02, 3.489e-05, 2.630e-03, -4.974e-03, 3.765e-03, 4.433e-04, 2.792e-04, 1.491e-03, 2.699e-03, -3.134e-04, 7.534e-04, -2.178e-05, 1.604e-02, -3.047e-03, -4.569e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(1.475e-02, -1.004e-02, -1.893e-03, 7.607e-04, -3.638e-03, 2.484e-03, -2.060e-04, 1.834e-04, -3.441e-04, 2.266e-03, -9.973e-04, -1.118e-04, 2.477e-04, 6.117e-03, -5.758e-04, -4.252e-03), r2);\n\tr0 = MulAdd(s1_0_2, M4(-8.027e-03, 2.710e-02, 3.875e-03, -4.375e-03, 1.241e-04, -1.411e-03, 1.008e-03, 3.734e-04, 5.589e-04, 1.197e-03, 5.651e-04, 3.359e-04, 2.926e-04, 2.163e-03, 6.066e-04, -7.168e-04), r0);\n\tr1 = MulAdd(s1_0_2, M4(-7.619e-03, 3.506e-02, 2.715e-03, -3.951e-03, -2.790e-04, -3.523e-03, 1.099e-03, 7.690e-04, -3.011e-04, -1.418e-04, 1.010e-04, 3.778e-04, 9.611e-04, 4.016e-03, -1.496e-05, -2.031e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(-7.917e-03, 3.381e-02, 2.207e-03, -3.732e-03, -7.893e-04, -3.137e-03, 4.316e-04, -2.686e-06, -1.676e-04, -1.034e-03, 3.705e-04, -1.587e-04, 6.992e-04, 3.403e-03, 1.053e-03, 7.600e-05), r2);\n\tr0 = MulAdd(s1_1_0, M4(-7.657e-04, 3.977e-04, -1.775e-03, -7.406e-04, 2.168e-03, -2.819e-03, -4.189e-04, -4.358e-03, -5.947e-03, -4.858e-03, 4.052e-03, 2.913e-03, -6.476e-02, 1.616e-03, -3.002e-02, 6.241e-03), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.868e-03, -4.740e-04, -4.276e-03, -1.372e-03, 5.500e-03, 1.178e-04, 1.665e-03, -3.705e-03, -1.526e-02, -3.732e-03, 4.770e-03, 2.203e-03, -8.375e-02, 1.006e-03, -4.186e-02, 4.973e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(-6.170e-04, -7.990e-04, -5.022e-03, -1.668e-03, 7.853e-03, 2.761e-03, 4.196e-03, -1.323e-03, -9.281e-03, -3.035e-03, 4.039e-03, 4.068e-03, -6.237e-02, 3.238e-03, -3.163e-02, 4.612e-03), r2);\n\tr0 = MulAdd(s1_1_1, M4(2.960e-02, 1.103e-02, -1.145e-01, 1.493e-02, 5.996e-02, 8.083e-02, -1.395e-02, -3.463e-03, 2.289e-02, 3.281e-02, -1.210e-02, 3.220e-03, 2.075e-02, -1.077e-01, 3.025e-02, 2.985e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(4.115e-02, 1.873e-02, -1.304e-01, 1.637e-02, 8.081e-02, 9.069e-02, -2.474e-02, -3.233e-03, 3.590e-02, 3.308e-02, -2.377e-02, 3.790e-03, 2.591e-02, -1.469e-01, 4.695e-02, 3.783e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(3.046e-02, 1.454e-02, -1.220e-01, 1.310e-02, 6.049e-02, 8.023e-02, -2.038e-02, -2.893e-03, 3.772e-02, 3.443e-02, -1.581e-02, 4.041e-03, 9.702e-03, -1.142e-01, 2.266e-02, 2.011e-02), r2);\n\tr0 = MulAdd(s1_1_2, M4(7.886e-02, -1.913e-01, 6.374e-03, 7.934e-02, -1.306e-03, 1.923e-02, -1.342e-03, -2.536e-03, -1.428e-03, -1.205e-02, 5.263e-04, 4.133e-04, -1.263e-03, 1.898e-02, -2.460e-03, 5.386e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(8.667e-02, -2.203e-01, 2.003e-02, 8.813e-02, -2.740e-03, 2.168e-02, -1.026e-03, -4.661e-03, 1.144e-03, -7.390e-03, 1.019e-03, -3.393e-03, -6.365e-03, 2.313e-02, -4.289e-03, 6.694e-03), r1);\n\tr2 = MulAdd(s1_1_2, M4(7.740e-02, -1.958e-01, 2.282e-02, 7.544e-02, -1.709e-03, 1.471e-02, -1.173e-03, -5.040e-03, -1.259e-04, -7.972e-03, 5.165e-04, -2.295e-03, -2.379e-03, 1.705e-02, -1.471e-03, 4.539e-03), r2);\n\tr0 = MulAdd(s1_2_0, M4(-3.765e-04, 6.336e-04, -1.522e-03, 4.824e-04, -1.291e-02, 3.766e-03, -3.280e-02, -5.714e-04, 8.004e-03, -5.166e-03, 1.060e-02, -3.837e-04, 2.508e-03, 3.672e-03, -2.703e-02, 2.688e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(-9.124e-04, 6.111e-04, -1.387e-03, 1.141e-03, -9.072e-03, 4.705e-03, -4.040e-02, 2.312e-03, 2.639e-02, -7.309e-03, 8.825e-03, -1.195e-04, 3.146e-03, 3.052e-03, -3.240e-02, 5.739e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(-4.733e-04, 3.441e-05, -1.200e-03, -2.152e-04, -1.059e-02, 3.850e-03, -3.194e-02, 3.663e-03, 3.206e-02, -1.511e-03, 1.744e-02, 2.813e-03, 4.727e-03, 3.154e-03, -2.044e-02, 6.152e-03), r2);\n\tr0 = MulAdd(s1_2_1, M4(-4.207e-03, -9.178e-04, 3.502e-02, -5.787e-03, -1.153e-02, -7.105e-02, 1.468e-01, -1.640e-02, -9.602e-02, 5.585e-02, 1.116e-01, -1.038e-01, 4.682e-03, 1.290e-02, -3.268e-02, -8.137e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(-4.429e-03, -1.768e-03, 4.207e-02, -4.075e-03, -4.229e-03, -7.834e-02, 1.782e-01, -3.396e-03, -1.533e-01, 1.057e-01, 1.844e-01, -1.597e-01, 2.202e-03, 1.601e-02, -4.945e-02, -1.092e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(-6.277e-03, -1.622e-03, 4.138e-02, -4.609e-03, -3.497e-03, -6.470e-02, 1.470e-01, -8.993e-03, -1.244e-01, 7.397e-02, 1.357e-01, -1.165e-01, 1.909e-03, 1.187e-02, -3.712e-02, -8.179e-02), r2);\n\tr0 = MulAdd(s1_2_2, M4(3.745e-03, 1.284e-02, -4.578e-02, 3.984e-02, -8.630e-03, 2.877e-02, -7.633e-03, 5.017e-02, -8.447e-03, 5.808e-02, -2.827e-03, 1.441e-02, -4.045e-03, 6.334e-03, -5.908e-03, 9.190e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(6.426e-03, 1.193e-02, -6.274e-02, 3.429e-02, -1.049e-02, 3.949e-02, -1.035e-02, 6.101e-02, -1.134e-02, 5.457e-02, -1.297e-02, 2.894e-02, -3.439e-03, 8.303e-03, -5.050e-03, 1.255e-02), r1);\n\tr2 = MulAdd(s1_2_2, M4(4.954e-03, 1.193e-02, -5.823e-02, 3.296e-02, -8.926e-03, 3.078e-02, -5.659e-03, 5.102e-02, -1.003e-02, 4.963e-02, -6.659e-03, 2.544e-02, -1.971e-03, 7.836e-03, -5.200e-03, 1.000e-02), r2);\n\ts0_0_0 = L4(-1.0, -1.0); s0_0_1 = L4(0.0, -1.0); s0_0_2 = L4(1.0, -1.0);\n\ts0_1_0 = L4(-1.0, 0.0); s0_1_1 = L4(0.0, 0.0); s0_1_2 = L4(1.0, 0.0);\n\ts0_2_0 = L4(-1.0, 1.0); s0_2_1 = L4(0.0, 1.0); s0_2_2 = L4(1.0, 1.0);\n\ts1_0_0 = L5(-1.0, -1.0); s1_0_1 = L5(0.0, -1.0); s1_0_2 = L5(1.0, -1.0);\n\ts1_1_0 = L5(-1.0, 0.0); s1_1_1 = L5(0.0, 0.0); s1_1_2 = L5(1.0, 0.0);\n\ts1_2_0 = L5(-1.0, 1.0); s1_2_1 = L5(0.0, 1.0); s1_2_2 = L5(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(2.702e-04, 2.049e-03, -2.495e-02, 2.175e-04, 4.124e-02, 7.067e-03, -1.133e-03, 1.455e-03, -3.714e-03, -7.958e-04, 2.340e-03, 6.892e-04, 9.173e-03, -3.225e-03, -5.641e-03, 2.581e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.561e-02, 3.031e-03, -3.116e-02, 5.478e-03, -9.053e-03, -2.100e-04, -2.241e-03, 6.387e-04, -4.143e-03, -7.070e-05, 1.845e-03, 1.345e-03, 1.077e-02, -5.309e-03, -5.249e-03, 1.174e-03), r1);\n\tr2 = MulAdd(s0_0_0, M4(2.881e-03, 3.775e-05, -2.960e-02, 1.128e-04, 1.364e-02, -1.317e-03, -1.695e-03, 2.240e-03, -3.579e-03, -3.961e-04, 2.419e-03, 1.382e-03, 1.125e-02, -4.639e-03, -5.801e-03, 1.801e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(4.628e-02, 1.694e-01, -3.142e-02, -1.899e-01, 6.648e-02, 7.788e-02, -5.299e-03, -2.044e-02, 5.077e-03, -4.515e-03, 5.471e-04, 7.807e-04, 1.610e-02, 1.864e-02, -4.254e-03, -7.382e-03), r0);\n\tr1 = MulAdd(s0_0_1, M4(6.624e-02, 1.909e-01, -4.221e-02, -2.113e-01, -1.525e-02, -1.851e-02, 2.799e-03, 8.479e-03, 3.020e-03, -8.467e-03, -7.550e-04, 2.541e-03, 2.071e-02, 3.212e-02, -1.139e-03, -1.114e-02), r1);\n\tr2 = MulAdd(s0_0_1, M4(5.801e-02, 1.637e-01, -2.677e-02, -1.792e-01, 2.790e-02, 3.412e-02, -7.470e-05, -6.957e-03, 3.407e-03, -6.537e-03, -1.919e-04, 2.131e-03, 1.381e-02, 2.471e-02, -4.841e-03, -1.080e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(1.620e-03, -6.797e-03, 2.806e-03, -2.016e-03, -5.053e-03, 1.720e-02, -1.837e-03, -1.490e-03, 3.972e-04, 1.455e-03, -6.978e-04, 1.580e-04, 1.947e-03, 2.384e-03, 4.539e-03, -3.064e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(-5.880e-04, -4.504e-03, 4.175e-03, -7.831e-03, 1.204e-04, -6.937e-03, 1.157e-03, -1.093e-03, 1.441e-03, 1.311e-03, -2.929e-04, -1.554e-03, -1.113e-03, -1.823e-03, 2.828e-03, -1.933e-03), r1);\n\tr2 = MulAdd(s0_0_2, M4(1.910e-03, -2.156e-03, 4.104e-03, -1.017e-03, -1.247e-03, 5.295e-03, -1.162e-03, 5.715e-04, 4.367e-04, 1.362e-04, -7.074e-04, -6.579e-04, 9.216e-04, 1.240e-03, 3.575e-03, -2.667e-03), r2);\n\tr0 = MulAdd(s0_1_0, M4(2.471e-04, -3.967e-03, 1.017e-02, -5.180e-04, -1.110e-01, -2.316e-03, 6.096e-02, 1.864e-03, 7.248e-03, -1.430e-03, -7.929e-03, -2.919e-03, 8.886e-04, 5.193e-03, 3.901e-02, -1.802e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-3.365e-03, -2.575e-03, 9.420e-03, 6.929e-04, 2.917e-02, 2.879e-03, -2.144e-02, -2.431e-03, 8.078e-03, -1.428e-04, -1.242e-02, -1.260e-04, 5.127e-03, 4.936e-03, 4.730e-02, -2.113e-02), r1);\n\tr2 = MulAdd(s0_1_0, M4(-4.257e-04, -3.112e-03, 9.096e-03, -2.548e-03, -4.258e-02, -1.071e-03, 1.729e-02, -1.169e-03, 5.943e-03, -5.239e-03, -1.069e-02, -4.580e-03, -1.973e-03, 7.129e-03, 4.578e-02, -1.561e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(-8.702e-03, -1.623e-02, 2.183e-02, 1.310e-02, -1.538e-01, -3.683e-01, 1.646e-01, 3.599e-01, -2.471e-02, 1.072e-01, -6.414e-03, -2.735e-02, -2.667e-02, -7.176e-02, 4.861e-02, 1.529e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-1.164e-02, -2.350e-02, 1.458e-02, 7.006e-03, 3.264e-02, 7.005e-02, -4.487e-02, -8.072e-02, -2.933e-02, 1.195e-01, -4.309e-03, -3.259e-02, -3.507e-02, -1.057e-01, 5.190e-02, 1.896e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-9.980e-03, -1.753e-02, 1.855e-02, 1.625e-02, -6.669e-02, -1.497e-01, 5.540e-02, 1.276e-01, -3.233e-02, 1.004e-01, -6.788e-03, -2.198e-02, -2.508e-02, -8.815e-02, 4.897e-02, 1.548e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(-1.458e-03, 7.640e-05, -2.318e-03, 6.786e-03, -1.045e-02, 1.524e-03, 1.105e-02, -1.112e-04, 4.731e-04, 3.172e-03, 1.424e-03, -6.781e-03, 1.056e-03, 1.237e-03, -8.112e-04, -2.542e-03), r0);\n\tr1 = MulAdd(s0_1_2, M4(6.002e-04, 1.832e-04, -1.922e-03, 8.288e-03, 4.219e-03, -1.423e-03, -3.992e-03, -7.458e-03, 5.148e-04, 2.761e-03, 1.191e-03, -3.114e-03, -4.990e-04, 7.538e-03, 1.285e-03, -1.419e-02), r1);\n\tr2 = MulAdd(s0_1_2, M4(-2.803e-05, -5.879e-04, -6.447e-04, 7.266e-03, -5.101e-03, -5.634e-03, 2.349e-03, -4.136e-03, 8.280e-04, 1.138e-03, 1.527e-03, -5.910e-03, 4.843e-04, 7.517e-03, 1.182e-03, -2.407e-03), r2);\n\tr0 = MulAdd(s0_2_0, M4(5.392e-04, 2.275e-05, -1.442e-03, -1.328e-04, 1.560e-03, 3.941e-03, -1.860e-02, -1.282e-02, 3.920e-03, 9.447e-03, -1.088e-02, 1.177e-02, -5.317e-03, -2.327e-03, -3.089e-02, -3.461e-03), r0);\n\tr1 = MulAdd(s0_2_0, M4(4.817e-04, -4.667e-04, -2.021e-03, -1.076e-03, 2.263e-04, 3.962e-04, 7.797e-03, 3.044e-04, -3.565e-03, 1.226e-02, -9.914e-03, 5.457e-03, -8.590e-03, -2.554e-03, -3.332e-02, -2.377e-03), r1);\n\tr2 = MulAdd(s0_2_0, M4(6.105e-04, -1.854e-04, -1.228e-03, -3.355e-04, 8.887e-04, 1.827e-03, -2.330e-03, -6.319e-03, -7.707e-03, 6.626e-03, -1.870e-02, 5.943e-03, -4.804e-03, -1.713e-03, -3.870e-02, -3.140e-03), r2);\n\tr0 = MulAdd(s0_2_1, M4(2.675e-03, 2.361e-03, 4.789e-04, -2.434e-03, -4.012e-03, 1.350e-02, -5.750e-02, -7.776e-02, 1.568e-02, 7.273e-02, 2.619e-02, -2.305e-01, -5.742e-03, 4.371e-04, -4.041e-02, -7.153e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(2.250e-03, 2.587e-03, -1.154e-04, -3.515e-03, -2.553e-03, -5.747e-03, 2.168e-02, 3.014e-02, 2.093e-02, 9.888e-02, 3.973e-02, -2.729e-01, -6.368e-03, 8.800e-04, -4.822e-02, -8.862e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.959e-03, 2.450e-03, -3.743e-04, -2.003e-03, -3.010e-03, 2.817e-03, -1.813e-02, -1.979e-02, 2.472e-02, 8.239e-02, 2.803e-02, -2.496e-01, -3.018e-03, 3.974e-03, -3.870e-02, -8.059e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(9.742e-05, 1.367e-03, -1.224e-03, 1.078e-04, 2.455e-03, 4.467e-04, -2.938e-04, -7.677e-03, -3.849e-03, 7.413e-03, -6.489e-03, 3.179e-03, -4.920e-04, -1.542e-05, -2.481e-03, -1.261e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-1.464e-04, 1.354e-03, -1.081e-03, -2.266e-04, -1.271e-03, 1.421e-03, -1.154e-03, 5.194e-03, -4.786e-03, 1.262e-02, -6.882e-03, 8.520e-04, -5.801e-04, -1.073e-03, -9.766e-04, -1.132e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(-2.493e-04, 6.429e-04, -1.051e-03, -8.508e-04, -1.738e-04, -5.960e-05, -1.389e-03, -3.913e-03, -4.269e-03, 8.811e-03, -5.328e-03, 3.956e-03, -1.369e-03, -9.760e-05, -1.577e-03, -9.410e-03), r2);\n\tr0 = MulAdd(s1_0_0, M4(-1.814e-03, 3.269e-03, 3.504e-03, -2.049e-03, 1.777e-02, -1.260e-02, -5.433e-03, 1.405e-03, 5.507e-03, 2.317e-03, -2.983e-04, -2.777e-04, 3.009e-02, -4.243e-03, 1.208e-02, 5.346e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.463e-03, 2.445e-03, 3.299e-03, -3.181e-03, 1.888e-02, -1.486e-02, -8.582e-03, -3.767e-05, 2.544e-03, 1.122e-03, -5.464e-03, -1.928e-03, -5.252e-03, 5.411e-04, -3.828e-03, -3.708e-04), r1);\n\tr2 = MulAdd(s1_0_0, M4(-2.700e-03, 6.970e-04, 2.852e-03, -3.614e-03, 1.590e-02, -1.372e-02, -7.095e-03, 1.129e-03, 3.849e-03, 5.460e-04, -4.422e-03, -2.415e-03, 1.015e-02, -1.005e-03, 1.177e-03, 5.347e-04), r2);\n\tr0 = MulAdd(s1_0_1, M4(-1.179e-02, -1.287e-03, 3.487e-03, 6.572e-03, 7.904e-03, -2.431e-02, -5.628e-03, 1.807e-03, 9.989e-03, 1.433e-02, -1.247e-03, -9.923e-03, -5.718e-02, 4.131e-02, 7.779e-03, -2.200e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-1.746e-02, -1.689e-03, 7.522e-03, 8.042e-03, 8.991e-03, -3.012e-02, -5.894e-03, 6.686e-04, 1.265e-02, 1.128e-02, -6.619e-03, -8.846e-03, 1.738e-02, -1.436e-02, -5.151e-03, 2.888e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(-1.139e-02, 1.047e-04, 5.944e-03, 7.902e-03, 9.334e-03, -2.808e-02, -2.620e-03, 5.344e-04, 1.870e-02, 1.533e-02, -1.750e-03, -8.624e-03, -2.025e-02, 9.918e-03, 3.431e-04, -6.789e-03), r2);\n\tr0 = MulAdd(s1_0_2, M4(-2.562e-03, -3.027e-03, -1.254e-03, 2.399e-03, -4.344e-04, -5.797e-04, 1.986e-04, -2.140e-03, -8.021e-03, 4.517e-03, -1.681e-03, 1.960e-03, -1.656e-03, -3.138e-02, -3.209e-03, -4.637e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(-2.062e-04, -3.235e-03, -2.088e-03, 3.413e-03, -3.194e-04, -6.156e-04, 2.283e-04, -3.280e-03, -4.654e-03, 1.376e-02, -2.645e-03, -4.304e-03, 5.563e-04, 8.865e-03, -5.242e-04, 1.492e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(-3.003e-03, -4.202e-03, -1.966e-03, 2.188e-03, -3.281e-04, -5.919e-04, 1.049e-03, -1.767e-03, -6.134e-03, 1.424e-02, -1.146e-03, 8.459e-04, 3.919e-04, -5.847e-03, -2.405e-03, -1.715e-03), r2);\n\tr0 = MulAdd(s1_1_0, M4(6.038e-03, 1.770e-05, -1.776e-02, 7.396e-03, 7.212e-02, -8.470e-03, 8.770e-02, -1.765e-02, -2.129e-02, 4.595e-03, -7.896e-03, 9.910e-04, 8.581e-02, -1.281e-02, 7.835e-02, -2.547e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(4.101e-03, 1.033e-03, -2.033e-02, 3.121e-03, 7.544e-02, -8.386e-03, 8.961e-02, -1.523e-02, -2.306e-03, -1.317e-03, -7.620e-03, 8.940e-03, -2.447e-02, 2.554e-03, -1.364e-02, 3.828e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.199e-02, 3.041e-03, -1.427e-02, 6.669e-03, 7.691e-02, -5.597e-03, 8.859e-02, -1.559e-02, -7.509e-03, 2.924e-03, -2.478e-03, 6.865e-03, 2.912e-02, -4.461e-03, 3.379e-02, -8.090e-03), r2);\n\tr0 = MulAdd(s1_1_1, M4(1.540e-01, 8.408e-02, -6.067e-02, -7.211e-02, 5.140e-02, -1.656e-01, 6.323e-02, -1.567e-01, -1.880e-01, -6.544e-02, 1.903e-01, 5.432e-02, -2.951e-01, 2.808e-01, -3.136e-01, 3.225e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(2.194e-01, 1.294e-01, -7.544e-02, -8.306e-02, 6.978e-02, -2.008e-01, 7.266e-02, -1.834e-01, -2.636e-01, -3.233e-02, 2.388e-01, 3.929e-02, 4.968e-02, -5.149e-02, 7.690e-02, -7.370e-02), r1);\n\tr2 = MulAdd(s1_1_1, M4(1.738e-01, 1.086e-01, -5.803e-02, -6.665e-02, 5.067e-02, -1.729e-01, 5.652e-02, -1.645e-01, -2.114e-01, -4.775e-02, 1.960e-01, 5.001e-02, -1.172e-01, 1.043e-01, -1.136e-01, 1.109e-01), r2);\n\tr0 = MulAdd(s1_1_2, M4(1.019e-02, -1.121e-03, 1.848e-03, -1.007e-02, -2.639e-03, 6.274e-03, -4.507e-03, 1.990e-03, 2.357e-03, -3.082e-02, -3.833e-03, 9.187e-03, 1.814e-02, -6.774e-02, 1.903e-02, -7.593e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(3.332e-03, 1.425e-03, 1.444e-03, -2.145e-02, -4.338e-03, 8.578e-03, -4.858e-03, 3.808e-03, 1.019e-02, -6.616e-02, -9.239e-03, 2.694e-02, -3.694e-03, 2.301e-02, -2.264e-03, 2.406e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(6.341e-03, -1.711e-03, 4.469e-05, -1.732e-02, -4.223e-03, 5.689e-03, -4.546e-03, 1.552e-03, 6.513e-03, -4.903e-02, -7.042e-03, 1.781e-02, 7.500e-03, -1.035e-02, 8.944e-03, -1.347e-02), r2);\n\tr0 = MulAdd(s1_2_0, M4(1.176e-02, -3.660e-03, -1.157e-02, -7.458e-03, -9.844e-04, -3.402e-03, 2.430e-02, -1.030e-02, 4.520e-03, -1.953e-03, 1.845e-03, 2.726e-03, -2.599e-03, -6.778e-04, 2.664e-02, 4.520e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.644e-02, -5.172e-03, -9.530e-03, -1.330e-03, 1.485e-03, -4.820e-03, 2.999e-02, -1.540e-02, 3.867e-03, -4.487e-04, -1.820e-03, -2.314e-03, 3.185e-04, -2.040e-04, -1.331e-02, 8.305e-04), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.792e-02, -2.523e-03, -1.798e-03, -3.865e-04, 4.170e-05, -4.948e-03, 2.838e-02, -1.162e-02, 4.054e-03, -1.298e-03, 1.701e-03, -5.036e-04, 6.730e-05, -7.372e-04, 4.742e-03, 1.380e-03), r2);\n\tr0 = MulAdd(s1_2_1, M4(2.240e-02, -1.207e-02, -1.450e-01, 4.139e-02, -2.362e-03, 3.917e-03, 3.523e-03, -2.984e-02, 6.629e-03, 2.533e-03, -5.072e-03, -5.010e-04, 1.327e-02, -1.271e-02, -4.262e-02, 2.840e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(3.267e-02, -2.485e-02, -2.182e-01, 2.382e-02, -5.226e-03, 2.619e-03, 6.832e-03, -4.459e-02, 1.569e-02, -7.233e-04, 2.370e-03, 1.560e-02, 3.593e-04, -8.842e-04, 4.410e-03, -6.364e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(2.021e-02, -1.721e-02, -1.810e-01, 3.095e-02, -2.100e-03, 5.379e-03, 4.590e-03, -3.255e-02, 7.291e-03, 5.672e-04, 3.410e-04, 7.665e-03, 4.347e-03, -5.760e-03, -1.975e-02, 9.519e-03), r2);\n\tr0 = MulAdd(s1_2_2, M4(3.803e-03, -3.850e-03, 1.292e-03, -9.431e-03, -1.447e-03, 3.179e-04, -9.346e-04, 4.572e-03, 2.759e-03, -3.007e-03, 7.324e-03, 1.773e-02, -1.855e-03, -1.916e-03, -1.034e-03, -2.030e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(7.351e-04, -8.992e-03, 3.788e-03, -1.241e-02, -9.679e-04, -5.007e-04, -1.158e-03, 6.540e-03, 2.400e-04, 3.297e-04, 2.617e-03, 1.691e-02, 1.507e-03, -2.967e-03, -4.620e-04, 2.749e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(-1.819e-04, -7.975e-03, 3.093e-03, -1.316e-02, -8.912e-04, -3.030e-04, -1.668e-03, 4.379e-03, 1.612e-03, -3.453e-03, 5.019e-03, 1.751e-02, 1.574e-04, -1.546e-03, 3.895e-04, -3.499e-03), r2);\n\ts0_0_0 = L6(-1.0, -1.0); s0_0_1 = L6(0.0, -1.0); s0_0_2 = L6(1.0, -1.0);\n\ts0_1_0 = L6(-1.0, 0.0); s0_1_1 = L6(0.0, 0.0); s0_1_2 = L6(1.0, 0.0);\n\ts0_2_0 = L6(-1.0, 1.0); s0_2_1 = L6(0.0, 1.0); s0_2_2 = L6(1.0, 1.0);\n\ts1_0_0 = L7(-1.0, -1.0); s1_0_1 = L7(0.0, -1.0); s1_0_2 = L7(1.0, -1.0);\n\ts1_1_0 = L7(-1.0, 0.0); s1_1_1 = L7(0.0, 0.0); s1_1_2 = L7(1.0, 0.0);\n\ts1_2_0 = L7(-1.0, 1.0); s1_2_1 = L7(0.0, 1.0); s1_2_2 = L7(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.830e-02, 9.239e-04, -7.613e-03, -1.923e-03, -1.108e-02, -7.052e-04, -8.013e-04, -1.804e-04, -1.028e-02, -1.101e-03, 6.931e-03, 1.598e-03, 2.111e-03, -3.657e-03, -1.889e-03, -2.488e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.227e-02, -2.486e-03, 4.197e-03, -5.511e-04, -9.085e-03, -1.706e-04, 4.688e-03, -8.259e-04, -1.277e-02, 1.220e-03, 5.327e-03, 3.683e-03, 3.565e-04, 7.312e-04, 2.450e-04, 7.593e-04), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.329e-02, -2.749e-03, -3.037e-03, -2.122e-03, -1.424e-02, -4.092e-03, -1.179e-03, -3.091e-03, -1.637e-02, -2.846e-03, 6.897e-03, 2.446e-03, 1.898e-03, -8.773e-04, -1.024e-03, -1.555e-03), r2);\n\tr0 = MulAdd(s0_0_1, M4(8.431e-02, -5.356e-02, -2.921e-02, 1.356e-02, 1.620e-01, -1.525e-01, 6.864e-02, -5.713e-02, -2.509e-05, -5.780e-02, 1.157e-02, 8.518e-03, 9.904e-05, 1.672e-02, 2.553e-03, -5.790e-04), r0);\n\tr1 = MulAdd(s0_0_1, M4(-2.186e-02, 5.023e-03, 4.567e-03, -4.960e-03, 1.803e-01, -1.729e-01, 7.069e-02, -6.239e-02, -1.158e-02, -8.521e-02, 1.340e-02, 1.070e-02, 2.936e-03, -2.047e-03, -1.049e-03, -1.777e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(3.521e-02, -3.219e-02, -1.260e-02, 2.190e-03, 1.549e-01, -1.518e-01, 6.531e-02, -5.394e-02, -4.059e-03, -6.928e-02, 9.256e-03, 1.137e-02, -2.687e-03, 5.254e-03, -1.135e-03, 2.662e-04), r2);\n\tr0 = MulAdd(s0_0_2, M4(2.572e-03, 3.605e-02, 4.216e-03, 6.460e-03, -2.584e-03, 3.794e-03, -1.391e-03, 1.892e-03, -1.420e-04, -3.891e-03, -4.842e-03, -5.084e-04, 1.150e-03, -1.352e-02, -1.370e-03, 1.282e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(2.196e-04, -7.468e-03, -5.635e-04, -2.588e-03, -6.562e-04, -3.002e-03, 1.305e-03, -2.737e-03, 2.441e-03, -2.050e-03, -1.723e-03, 1.490e-03, -1.621e-03, 2.654e-03, 6.056e-04, 5.077e-04), r1);\n\tr2 = MulAdd(s0_0_2, M4(2.004e-03, 1.940e-02, 1.286e-03, 1.356e-03, 1.445e-04, 9.615e-03, 2.394e-04, 5.458e-03, 5.131e-04, -6.530e-03, -2.362e-03, -1.428e-03, 1.537e-03, -5.873e-03, 6.455e-04, -8.162e-04), r2);\n\tr0 = MulAdd(s0_1_0, M4(-1.005e-01, 1.597e-02, -7.300e-02, 1.637e-02, -1.435e-03, -3.706e-03, -1.881e-02, -2.898e-04, 1.018e-02, -8.329e-03, -9.084e-04, 6.002e-03, -1.005e-01, 2.436e-02, -1.968e-03, 7.260e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(2.211e-02, -2.648e-03, 2.362e-02, -3.559e-03, 8.995e-04, -2.754e-03, -2.142e-02, -2.175e-03, 5.999e-03, -5.479e-03, 5.801e-03, -8.790e-04, 2.143e-02, -2.848e-03, 4.758e-03, -2.324e-03), r1);\n\tr2 = MulAdd(s0_1_0, M4(-4.126e-02, 5.736e-03, -2.773e-02, 4.158e-03, 2.166e-04, -3.212e-03, -2.190e-02, -2.018e-03, 5.445e-03, -8.202e-03, 1.354e-03, -4.538e-03, -3.746e-02, 9.026e-03, 2.151e-03, 1.750e-03), r2);\n\tr0 = MulAdd(s0_1_1, M4(2.572e-01, -2.891e-01, 3.564e-01, -3.019e-01, 1.705e-02, -4.134e-02, 1.194e-01, -1.452e-01, -2.422e-02, -1.179e-01, -1.886e-02, 1.822e-01, -2.167e-01, -3.193e-01, -3.372e-02, -2.419e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-7.635e-02, 7.895e-02, -7.690e-02, 6.323e-02, 2.466e-02, -3.360e-02, 1.460e-01, -1.669e-01, -3.131e-02, -1.489e-01, -2.936e-03, 2.498e-01, 4.345e-02, 6.281e-02, 1.717e-02, 1.227e-02), r1);\n\tr2 = MulAdd(s0_1_1, M4(9.283e-02, -1.121e-01, 1.431e-01, -1.275e-01, 2.358e-02, -3.123e-02, 1.195e-01, -1.441e-01, -2.606e-02, -1.160e-01, -4.983e-03, 2.056e-01, -7.952e-02, -1.245e-01, -6.995e-03, 1.499e-04), r2);\n\tr0 = MulAdd(s0_1_2, M4(-1.672e-02, 8.847e-02, -1.593e-02, 8.085e-02, -3.198e-03, 6.484e-03, -3.740e-03, 8.929e-03, 3.599e-03, -1.288e-02, 9.185e-03, -9.553e-03, 2.033e-02, -9.126e-03, 2.340e-02, -4.057e-03), r0);\n\tr1 = MulAdd(s0_1_2, M4(4.561e-03, -1.681e-02, 4.407e-03, -1.569e-02, -5.071e-03, 7.260e-03, -6.350e-03, 5.298e-03, 2.613e-03, -1.196e-02, 8.981e-03, -1.395e-02, -3.709e-03, 4.387e-03, -6.232e-03, 5.276e-04), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.572e-03, 4.708e-02, -2.633e-03, 4.529e-02, -4.259e-03, 4.579e-03, -3.106e-03, 8.326e-03, 1.851e-03, -1.272e-02, 7.649e-03, -1.300e-02, 7.396e-03, 1.220e-03, 6.967e-03, -3.731e-03), r2);\n\tr0 = MulAdd(s0_2_0, M4(1.065e-02, -4.600e-03, -2.870e-02, -1.455e-03, -3.395e-03, 1.392e-03, -3.088e-03, -1.734e-03, -4.430e-05, 8.316e-04, 2.380e-03, 8.480e-04, 7.640e-03, -1.267e-02, 6.116e-02, -2.527e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-4.946e-03, 3.184e-04, 1.042e-03, 1.883e-03, -2.017e-03, 1.447e-03, -3.377e-03, -2.001e-04, 1.179e-03, 1.348e-03, 6.038e-03, 1.500e-03, 3.103e-03, 7.088e-03, -8.545e-03, 1.004e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(1.959e-03, -1.950e-03, -1.601e-02, -2.686e-04, -3.131e-03, 6.867e-04, -4.153e-03, -1.532e-03, 9.750e-04, 1.113e-03, 4.521e-03, 9.643e-04, 7.362e-03, 1.138e-03, 2.550e-02, -6.410e-03), r2);\n\tr0 = MulAdd(s0_2_1, M4(-1.366e-02, 2.197e-02, 1.275e-02, -2.617e-02, 4.692e-03, -3.673e-03, -1.225e-04, -4.975e-03, 3.037e-03, 9.130e-03, 8.488e-03, -1.181e-02, 3.249e-02, 1.804e-02, 2.437e-01, 3.182e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(8.266e-03, -1.041e-02, -1.115e-02, 1.050e-02, 2.117e-03, -4.960e-03, -8.845e-04, -2.616e-03, 4.767e-03, 1.250e-02, 9.515e-03, -1.305e-02, -8.535e-03, -5.903e-03, -5.728e-02, -6.628e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(-1.950e-03, 4.156e-03, 3.716e-03, -1.366e-02, 4.557e-03, -4.141e-03, 2.273e-03, -2.954e-03, 3.246e-03, 1.020e-02, 8.326e-03, -1.067e-02, 3.762e-03, 1.634e-03, 9.602e-02, 1.256e-01), r2);\n\tr0 = MulAdd(s0_2_2, M4(3.713e-03, -1.059e-02, 1.090e-03, 2.264e-02, -1.226e-03, -1.669e-04, -9.471e-04, 5.293e-04, -1.177e-04, 2.283e-03, -1.161e-04, 1.039e-02, -1.769e-02, 1.378e-02, -2.280e-02, -6.570e-03), r0);\n\tr1 = MulAdd(s0_2_2, M4(-6.946e-04, -1.214e-03, -1.081e-03, -7.112e-03, -6.703e-04, -1.322e-03, -1.093e-04, 6.063e-04, 9.527e-05, 2.027e-03, -1.174e-03, 9.795e-03, 7.832e-03, -7.495e-04, 8.043e-03, -1.286e-03), r1);\n\tr2 = MulAdd(s0_2_2, M4(1.165e-03, -5.390e-03, 2.954e-03, 1.253e-02, -5.144e-04, -2.672e-04, -7.592e-04, 3.984e-04, 2.035e-04, 9.571e-04, -6.774e-04, 7.616e-03, -2.181e-03, 4.871e-03, -6.033e-03, -2.677e-03), r2);\n\tr0 = MulAdd(s1_0_0, M4(6.704e-03, 1.169e-04, -1.221e-03, -1.416e-03, -1.826e-02, 5.988e-03, 2.416e-03, 3.713e-03, 3.909e-03, -8.108e-04, 1.680e-04, 2.633e-03, 5.324e-03, 1.204e-03, 9.961e-03, 4.721e-04), r0);\n\tr1 = MulAdd(s1_0_0, M4(6.102e-03, -1.080e-03, -9.492e-04, -1.369e-03, -2.031e-02, 1.030e-02, 2.418e-03, 5.572e-03, -2.943e-04, -1.339e-03, -4.704e-04, 2.347e-03, 4.416e-03, 4.612e-04, 1.125e-02, -1.007e-03), r1);\n\tr2 = MulAdd(s1_0_0, M4(4.252e-03, -7.081e-04, -1.326e-03, -1.115e-03, -2.106e-02, 4.809e-03, 1.141e-03, 3.440e-03, 4.314e-04, -2.189e-03, -3.248e-04, 2.594e-03, 5.662e-03, 1.437e-03, 6.546e-03, -3.796e-04), r2);\n\tr0 = MulAdd(s1_0_1, M4(1.011e-02, 5.550e-03, -9.871e-04, -4.009e-04, -1.344e-02, 5.862e-02, 2.157e-03, -3.859e-03, 3.861e-02, 4.542e-03, 1.278e-02, 4.456e-03, -8.617e-02, 1.016e-01, 4.137e-03, 2.592e-04), r0);\n\tr1 = MulAdd(s1_0_1, M4(1.290e-02, 7.707e-03, -2.401e-03, -2.521e-03, -1.776e-02, 6.238e-02, 3.572e-03, -3.134e-03, -8.481e-03, 3.921e-03, -7.316e-03, 1.618e-03, -8.617e-02, 1.146e-01, 3.130e-03, 3.910e-03), r1);\n\tr2 = MulAdd(s1_0_1, M4(3.696e-03, 9.470e-04, -2.910e-03, -3.038e-03, -1.509e-02, 5.916e-02, 5.547e-04, -3.006e-03, 1.678e-02, 1.109e-03, 5.446e-03, 3.128e-03, -7.837e-02, 1.034e-01, 7.731e-03, 1.736e-03), r2);\n\tr0 = MulAdd(s1_0_2, M4(2.999e-03, 5.601e-03, 2.522e-03, 5.265e-04, 1.518e-03, -4.667e-03, 9.087e-04, -4.450e-04, 3.037e-03, -4.042e-02, -7.441e-03, -3.891e-03, 6.607e-03, 1.742e-03, -1.618e-03, 1.829e-03), r0);\n\tr1 = MulAdd(s1_0_2, M4(3.573e-03, 2.583e-03, 1.517e-03, 1.267e-05, 1.249e-04, -6.713e-03, 9.014e-04, -1.485e-03, 2.853e-03, 5.784e-03, 8.356e-04, 7.572e-03, 4.603e-03, 7.777e-03, -9.700e-04, -1.347e-03), r1);\n\tr2 = MulAdd(s1_0_2, M4(1.563e-03, -7.823e-04, 1.636e-03, -6.150e-05, 1.873e-04, -7.907e-03, 4.499e-04, -2.539e-03, -1.767e-03, -1.873e-02, -5.386e-03, 5.638e-04, 4.370e-03, 5.836e-03, 3.717e-04, 3.623e-03), r2);\n\tr0 = MulAdd(s1_1_0, M4(1.763e-02, -5.817e-03, 1.478e-02, -2.856e-03, -1.087e-01, 3.991e-02, -1.155e-01, 4.553e-02, 3.050e-03, -1.295e-03, 3.896e-03, -2.078e-03, 6.402e-03, -3.087e-03, -6.344e-03, 2.628e-04), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.749e-02, -6.682e-03, 1.509e-02, -6.275e-03, -1.431e-01, 3.794e-02, -1.509e-01, 6.031e-02, 5.318e-03, 2.007e-03, 5.251e-03, -5.152e-03, 1.209e-02, -3.512e-03, -5.874e-03, -1.524e-03), r1);\n\tr2 = MulAdd(s1_1_0, M4(1.566e-02, -4.625e-03, 1.095e-02, -4.867e-03, -1.169e-01, 3.619e-02, -1.265e-01, 4.626e-02, 3.919e-03, 2.163e-04, 3.066e-03, -4.478e-03, 8.046e-03, -3.661e-03, -1.831e-03, -9.800e-04), r2);\n\tr0 = MulAdd(s1_1_1, M4(-1.811e-01, -4.022e-03, -3.983e-02, -1.887e-02, -5.292e-02, 1.072e-01, -5.246e-02, 1.502e-01, -3.408e-01, -2.011e-02, -1.334e-01, 1.417e-02, -5.875e-02, 6.323e-02, -2.036e-01, 1.886e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-2.243e-01, -1.652e-02, -5.017e-02, -2.937e-02, -5.586e-02, 1.526e-01, -6.372e-02, 1.865e-01, 6.665e-02, 1.517e-02, 3.270e-02, 1.034e-02, -8.348e-02, 7.447e-02, -2.246e-01, 2.284e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(-1.792e-01, -7.270e-03, -4.627e-02, -2.623e-02, -4.494e-02, 1.254e-01, -4.700e-02, 1.613e-01, -1.373e-01, 8.571e-03, -4.681e-02, 1.453e-02, -6.017e-02, 6.860e-02, -1.956e-01, 1.995e-01), r2);\n\tr0 = MulAdd(s1_1_2, M4(4.951e-03, -7.690e-02, 4.114e-03, -2.484e-02, 3.700e-03, -3.981e-03, 4.833e-03, -5.262e-03, 1.349e-02, 3.117e-01, 1.595e-02, 1.086e-01, 1.835e-03, -3.870e-03, 4.140e-03, 7.384e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(7.446e-03, -8.711e-02, 5.547e-03, -3.258e-02, 5.744e-03, -4.560e-03, 4.658e-03, -8.761e-03, -6.979e-03, -6.670e-02, -1.595e-03, -3.577e-02, 4.607e-03, -1.101e-02, 3.016e-03, 1.403e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(9.248e-03, -7.104e-02, 5.404e-03, -2.753e-02, 4.776e-03, -4.582e-03, 4.411e-03, -7.340e-03, 2.260e-03, 1.176e-01, 5.640e-04, 3.453e-02, 7.236e-04, -7.158e-03, 1.306e-04, 9.991e-03), r2);\n\tr0 = MulAdd(s1_2_0, M4(1.072e-03, -1.263e-03, 7.637e-03, -2.671e-03, 3.352e-03, -1.003e-03, -1.195e-02, 2.751e-03, 3.520e-04, 1.162e-03, 6.526e-03, -3.753e-03, -1.062e-03, -5.833e-04, 8.010e-04, -2.413e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(2.901e-03, -1.488e-03, 7.516e-03, -2.461e-03, 1.090e-03, 3.848e-03, -2.412e-02, -3.660e-03, 3.110e-03, 1.049e-03, 2.160e-03, 2.520e-03, -1.106e-03, -2.254e-03, 3.853e-03, -5.356e-03), r1);\n\tr2 = MulAdd(s1_2_0, M4(5.098e-04, -8.236e-04, 9.811e-03, 9.862e-04, -1.661e-04, 1.083e-03, -1.983e-02, -1.507e-03, 4.201e-03, 5.528e-04, 6.552e-03, -7.365e-04, -3.525e-03, -2.322e-03, -1.683e-04, -3.879e-03), r2);\n\tr0 = MulAdd(s1_2_1, M4(8.045e-03, -1.056e-02, -8.520e-02, -1.311e-03, 3.788e-04, -4.827e-03, -8.454e-03, 1.440e-02, 2.919e-03, 5.898e-03, -1.910e-01, -2.966e-02, -1.014e-02, 2.177e-03, 9.896e-03, 1.835e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.200e-02, -1.283e-02, -1.042e-01, -3.091e-03, -2.023e-03, -1.143e-02, -9.682e-03, 1.996e-02, 1.040e-02, 2.502e-03, 5.059e-02, 8.249e-03, -8.990e-03, 4.783e-03, 7.433e-03, 2.962e-03), r1);\n\tr2 = MulAdd(s1_2_1, M4(1.031e-02, -1.142e-02, -8.140e-02, 1.753e-03, -2.565e-03, -6.954e-03, -9.448e-03, 1.872e-02, 8.913e-03, 6.261e-03, -7.544e-02, -4.336e-03, -7.300e-03, 3.806e-03, 1.172e-02, 5.823e-03), r2);\n\tr0 = MulAdd(s1_2_2, M4(2.117e-03, -7.491e-03, 4.958e-03, -5.896e-02, -3.228e-04, -2.274e-04, 5.455e-04, -1.405e-03, 2.787e-03, 8.108e-03, 7.662e-03, 1.826e-01, 1.166e-03, 1.565e-03, 1.572e-03, -2.761e-03), r0);\n\tr1 = MulAdd(s1_2_2, M4(3.648e-03, -7.492e-03, 7.566e-03, -6.626e-02, -1.922e-03, -1.418e-03, 8.532e-05, -1.628e-03, -1.875e-03, -7.480e-03, -5.740e-03, -3.978e-02, -8.104e-04, 2.341e-03, 5.188e-04, -7.545e-03), r1);\n\tr2 = MulAdd(s1_2_2, M4(2.797e-03, -3.287e-03, 8.760e-03, -5.046e-02, -1.458e-03, -2.502e-03, 6.034e-04, -3.008e-03, -1.281e-03, 1.262e-03, 3.077e-03, 6.751e-02, -1.200e-04, 1.705e-03, -1.655e-05, -5.620e-03), r2);\n\tfloat2 opt = float2(GetOutputPt()), fpos = (float2(gxy) + 0.5) * opt;\n\tOUTPUT[gxy + int2(0, 0)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(0.0, 0.0) * opt, 0).rgb + MF3(r0.x, r1.x, r2.x)), 1.0);\n\tOUTPUT[gxy + int2(1, 0)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(1.0, 0.0) * opt, 0).rgb + MF3(r0.y, r1.y, r2.y)), 1.0);\n\tOUTPUT[gxy + int2(0, 1)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(0.0, 1.0) * opt, 0).rgb + MF3(r0.z, r1.z, r2.z)), 1.0);\n\tOUTPUT[gxy + int2(1, 1)] = MF4(saturate(INPUT.SampleLevel(SL, fpos + float2(1.0, 1.0) * opt, 0).rgb + MF3(r0.w, r1.w, r2.w)), 1.0);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy2/CuNNy-fast-NVL.hlsl",
    "content": "// CuNNy fast - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-0003\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, x, y) t.SampleLevel(SP, pos + float2(x, y) * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T4;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T5;\n\n//!PASS 1\n//!DESC in (1x12)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT T0, T1, T2\n\n#define L0(x, y) MF(dot(MF3(0.299, 0.587, 0.114), O(INPUT, x, y).rgb))\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tMF s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\tr0 = V4(-7.280e-05, 1.400e-04, -1.296e-04, 4.014e-04);\n\tr1 = V4(-1.023e-03, 2.540e-04, 1.793e-03, -4.770e-03);\n\tr2 = V4(-5.813e-04, 2.326e-02, 2.179e-02, 3.161e-03);\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\tr0 = mad(s0_0_0, V4(3.974e-03, -4.994e-02, -1.106e-01, 7.984e-02), r0);\n\tr1 = mad(s0_0_0, V4(-1.146e-02, 2.714e-02, -1.208e-01, -5.811e-03), r1);\n\tr2 = mad(s0_0_0, V4(2.306e-02, -1.984e-02, -1.205e-02, -5.797e-03), r2);\n\tr0 = mad(s0_0_1, V4(8.621e-01, 4.326e-01, 5.918e-01, -1.650e-01), r0);\n\tr1 = mad(s0_0_1, V4(5.566e-03, -1.528e-01, 1.548e-01, -3.752e-01), r1);\n\tr2 = mad(s0_0_1, V4(-2.113e-02, -2.094e-04, 6.522e-02, -5.227e-02), r2);\n\tr0 = mad(s0_0_2, V4(1.085e-02, -1.058e-01, -7.681e-03, -8.618e-02), r0);\n\tr1 = mad(s0_0_2, V4(2.526e-03, -1.193e-01, 1.655e-01, 2.262e-02), r1);\n\tr2 = mad(s0_0_2, V4(4.877e-03, 8.765e-03, 9.976e-03, 3.630e-02), r2);\n\tr0 = mad(s0_1_0, V4(-6.514e-03, -1.627e-02, 9.897e-02, 3.289e-02), r0);\n\tr1 = mad(s0_1_0, V4(7.988e-01, 3.223e-02, 3.274e-02, -2.993e-01), r1);\n\tr2 = mad(s0_1_0, V4(2.822e-03, -4.395e-03, 3.037e-01, -2.012e-01), r2);\n\tr0 = mad(s0_1_1, V4(-8.652e-01, -1.159e-02, 8.169e-02, 4.252e-01), r0);\n\tr1 = mad(s0_1_1, V4(-7.781e-01, 4.338e-01, 2.879e-01, 7.549e-01), r1);\n\tr2 = mad(s0_1_1, V4(6.310e-01, -1.011e-01, -2.446e-01, 5.293e-01), r2);\n\tr0 = mad(s0_1_2, V4(-5.410e-03, -9.159e-02, -6.371e-01, -6.387e-01), r0);\n\tr1 = mad(s0_1_2, V4(-1.319e-02, -1.619e-01, 2.345e-01, -8.862e-02), r1);\n\tr2 = mad(s0_1_2, V4(-1.833e-02, 3.118e-02, 2.168e-02, -4.513e-02), r2);\n\tr0 = mad(s0_2_0, V4(5.906e-05, -6.218e-03, 2.289e-02, -1.228e-01), r0);\n\tr1 = mad(s0_2_0, V4(-1.375e-02, 1.999e-02, 9.690e-02, 1.443e-02), r1);\n\tr2 = mad(s0_2_0, V4(2.581e-02, -1.284e-01, 3.156e-02, -6.670e-02), r2);\n\tr0 = mad(s0_2_1, V4(2.334e-03, -4.197e-03, -1.160e-01, 3.487e-01), r0);\n\tr1 = mad(s0_2_1, V4(2.869e-03, -2.522e-02, -4.490e-01, 8.423e-02), r1);\n\tr2 = mad(s0_2_1, V4(-5.647e-03, 3.777e-01, -1.097e-01, -1.901e-01), r2);\n\tr0 = mad(s0_2_2, V4(-4.110e-03, 1.439e-03, 7.400e-02, 1.250e-01), r0);\n\tr1 = mad(s0_2_2, V4(6.177e-03, 1.872e-02, -4.033e-01, -1.047e-01), r1);\n\tr2 = mad(s0_2_2, V4(1.412e-02, 1.066e-02, -2.194e-02, 2.292e-02), r2);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT2[gxy] = r2;\n}\n\n//!PASS 2\n//!DESC conv1 (12x12)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1, T2\n//!OUT T3, T4, T5\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n#define L2(x, y) V4(O(T2, x, y))\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0, r2 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.195e-01, -2.782e-03, -1.647e-02, 8.935e-02, 1.342e-01, -4.409e-02, -2.694e-02, -1.557e-01, -4.474e-01, 5.639e-02, 1.080e-01, -1.304e-01, -2.758e-01, 7.983e-02, -1.059e-02, -6.616e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(1.783e-01, 9.807e-02, -2.627e-02, -2.885e-02, 2.384e-01, -2.243e-01, -7.838e-03, 6.787e-02, -2.319e-01, 2.666e-01, 1.008e-01, -1.147e-01, 9.865e-02, 1.294e-01, 4.350e-02, 1.246e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(-1.619e-02, -3.094e-02, -4.934e-02, -1.328e-02, -4.038e-02, 2.685e-02, -2.006e-01, -1.888e-02, -3.766e-02, 3.719e-02, 8.466e-02, 6.166e-03, -9.328e-02, -2.239e-01, -7.447e-02, 1.739e-02), r2);\n\tr0 = MulAdd(s0_0_1, M4(-5.621e-01, -1.996e-02, 8.765e-02, -3.496e-02, 4.525e-01, -7.246e-02, -2.052e-01, -1.602e-01, -2.078e-01, 6.393e-02, 2.912e-02, 7.006e-02, 4.341e-01, 1.246e-01, 2.096e-02, 6.617e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(2.314e-02, -3.825e-02, 2.103e-02, 4.088e-02, 3.772e-01, -2.136e-01, -9.008e-02, -1.062e-01, -9.125e-03, 7.250e-02, 2.888e-02, -1.003e-01, 1.971e-02, -3.385e-01, -5.944e-04, 2.791e-01), r1);\n\tr2 = MulAdd(s0_0_1, M4(8.260e-03, -1.815e-01, 1.043e-01, -6.471e-03, -2.324e-01, 3.654e-02, -3.034e-01, -4.956e-02, 6.765e-02, 9.634e-02, 6.750e-02, 2.752e-02, 2.886e-02, -1.977e-01, 6.311e-01, 2.736e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(-1.072e-01, -7.057e-02, 1.890e-02, 1.577e-01, 2.271e-01, 1.453e-01, -8.716e-02, -2.320e-01, -1.048e-01, 1.195e-02, -6.811e-03, 2.474e-02, -3.527e-02, -1.130e-01, -1.529e-02, -8.423e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-8.031e-02, -9.505e-02, -4.529e-02, 9.090e-02, 1.433e-01, -1.259e-01, 7.499e-02, 7.982e-02, 3.114e-03, 4.358e-02, -4.961e-02, -1.052e-01, -3.700e-02, -1.449e-01, -1.125e-01, 1.505e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(-3.306e-02, -4.710e-03, 1.636e-01, 4.672e-02, 1.131e-01, 2.906e-02, -6.813e-02, -7.225e-03, -2.967e-02, -1.007e-01, 2.268e-02, -1.861e-02, -6.798e-02, 5.887e-02, 2.688e-02, -1.170e-05), r2);\n\tr0 = MulAdd(s0_1_0, M4(6.728e-02, 3.510e-02, 2.658e-02, 2.512e-01, -3.088e-01, -1.993e-01, 2.953e-01, -2.033e-01, 2.062e-01, 1.665e-02, 1.870e-01, -2.065e-01, -3.763e-01, -2.050e-01, -1.891e-02, -5.449e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(3.610e-01, 5.925e-01, 2.751e-02, -2.362e-02, 6.179e-01, -2.047e-01, -7.985e-02, -3.896e-01, 2.502e-02, 5.250e-01, -7.937e-03, -3.707e-01, -4.750e-01, -1.274e-01, 1.043e-01, 6.493e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-8.045e-02, -4.278e-01, -3.148e-01, 1.371e-02, 4.091e-02, 7.419e-02, -1.184e-01, -8.461e-02, 8.302e-03, 3.290e-02, -1.579e-01, 1.514e-01, -3.994e-02, 1.810e-01, -2.520e-01, 7.419e-02), r2);\n\tr0 = MulAdd(s0_1_1, M4(3.134e-01, 3.896e-01, 7.740e-01, 7.747e-01, 3.455e-02, 1.452e-01, 2.454e-02, 5.856e-02, -8.463e-02, 2.719e-02, 3.138e-02, 1.391e-01, 1.401e-01, 2.224e-02, 5.334e-02, -1.340e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(2.838e-01, 5.138e-01, 3.291e-01, 3.940e-01, 1.003e-01, 1.362e-01, 1.313e-01, 9.639e-02, 2.783e-01, -5.034e-01, -6.909e-02, -3.842e-01, 1.153e-01, 2.969e-01, -4.680e-02, 8.920e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(3.780e-01, -4.150e-01, 5.874e-01, 4.346e-01, -5.301e-03, -6.339e-01, 1.921e-01, -1.519e-01, -5.744e-02, 2.906e-02, 4.541e-01, -1.083e-01, 3.193e-01, -1.175e-01, -1.372e-01, 3.318e-01), r2);\n\tr0 = MulAdd(s0_1_2, M4(1.232e-01, -3.721e-01, 9.193e-02, 1.525e-01, 5.252e-01, 2.155e-01, 1.284e-01, -2.804e-01, -1.023e-01, -2.272e-01, -2.110e-02, -6.227e-03, -1.946e-02, -9.592e-02, -5.048e-02, -2.675e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(1.930e-01, -8.656e-01, -2.994e-01, -2.104e-01, 1.890e-01, 4.542e-01, 2.574e-02, -1.720e-01, -1.645e-01, -3.407e-01, -5.756e-02, -1.956e-01, 1.388e-01, -1.445e-01, -6.649e-02, 2.406e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-1.713e-01, -1.264e-01, 2.701e-01, 2.557e-02, 1.577e-01, 1.241e-01, 1.909e-01, 1.067e-01, -2.781e-02, 1.250e-01, 8.625e-02, -3.212e-02, -4.053e-02, -2.230e-02, 2.453e-02, -7.918e-03), r2);\n\tr0 = MulAdd(s0_2_0, M4(4.534e-02, -4.142e-02, 8.179e-02, -2.684e-01, -4.161e-02, -8.607e-02, -5.479e-02, 1.754e-01, -8.713e-02, -1.797e-02, 4.359e-02, -1.742e-01, -2.398e-02, 5.235e-02, 5.225e-02, 1.756e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(-1.164e-01, 2.328e-01, 2.310e-01, 1.101e-01, 2.458e-02, -8.798e-01, -2.802e-01, 5.107e-02, -1.197e+00, 2.584e-01, 3.634e-02, -4.719e-01, 6.120e-01, 2.479e-02, 1.159e-01, 4.846e-01), r1);\n\tr2 = MulAdd(s0_2_0, M4(5.291e-02, 1.612e-01, -2.273e-01, 1.439e-01, 4.775e-01, 1.082e-02, -3.568e-02, 1.408e-01, 1.625e-01, -1.131e-01, -7.561e-02, 1.519e-01, -6.958e-03, -2.370e-01, 1.773e-02, -1.732e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(4.541e-01, 2.469e-01, -1.168e-02, -3.170e-01, -1.101e+00, -7.643e-01, -2.874e-01, 2.968e-02, 1.191e-02, 1.177e-01, 1.100e-03, -8.066e-01, 6.307e-02, 1.023e-01, 2.403e-02, 2.938e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(4.083e-01, 2.414e-01, 1.567e-02, 5.885e-01, -1.929e+00, 2.075e-01, 4.123e-02, 2.607e-01, 2.411e-01, 3.928e-02, -8.402e-02, -4.086e-01, 1.313e-01, -6.640e-03, 1.242e-01, 4.443e-01), r1);\n\tr2 = MulAdd(s0_2_1, M4(1.621e+00, 2.404e-01, -3.576e-01, 1.405e+00, -8.027e-01, 7.398e-01, 6.259e-01, -3.249e-01, 3.969e-01, -9.999e-02, 2.323e-01, 2.189e-01, 1.142e-01, -1.526e-01, 1.631e-01, 7.761e-02), r2);\n\tr0 = MulAdd(s0_2_2, M4(-1.086e-02, -6.350e-02, 9.068e-03, -2.549e-01, -2.245e-01, 7.344e-01, 3.321e-02, 3.097e-01, 2.939e-02, -2.476e-01, 1.290e-02, 5.514e-02, 2.033e-02, 1.535e-02, 3.096e-02, -1.111e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(5.527e-01, -4.384e-01, -9.156e-02, 3.779e-01, -8.049e-02, 1.777e-01, 1.279e-01, 5.167e-01, 8.615e-02, 3.818e-02, -8.714e-02, -4.111e-01, -9.676e-03, 1.170e-01, -5.134e-02, 4.131e-01), r1);\n\tr2 = MulAdd(s0_2_2, M4(9.804e-02, 3.701e-01, 7.796e-02, 1.041e-01, 3.967e-01, -3.729e-02, -3.651e-01, 2.187e-01, -1.155e-01, 2.961e-02, 4.329e-02, -9.155e-02, -6.378e-02, -1.005e-01, -8.361e-04, -2.016e-02), r2);\n\tr0 = MulAdd(s1_0_0, M4(-8.091e-02, 5.964e-03, 1.131e-02, -1.045e-01, 4.463e-01, -3.057e-02, -3.990e-02, -1.284e-01, 7.705e-02, -1.342e-01, -1.647e-01, -1.505e-01, -1.435e-02, -4.786e-02, -1.364e-02, 7.105e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(5.244e-01, 1.761e-01, 9.298e-02, -2.485e-02, -4.892e-01, -4.094e-01, -1.527e-01, 5.510e-02, -2.399e-01, -5.568e-01, -2.523e-01, 4.273e-02, -2.009e-02, -1.415e-01, 9.470e-03, -2.935e-02), r1);\n\tr2 = MulAdd(s1_0_0, M4(-1.994e-02, 4.133e-02, -7.480e-02, 1.158e-02, 5.948e-02, 1.075e-01, 4.158e-02, -7.777e-03, 7.635e-02, 1.919e-01, 2.498e-01, -6.321e-02, 3.255e-03, 5.260e-02, -1.264e-02, 1.136e-02), r2);\n\tr0 = MulAdd(s1_0_1, M4(-1.161e+00, -1.801e-03, 2.903e-01, 8.344e-02, 9.512e-02, 4.877e-02, 2.932e-02, -3.623e-01, -3.902e-01, -2.259e-02, 2.860e-04, -3.074e-01, -3.301e-03, -5.011e-02, -1.529e-01, 1.839e-01), r0);\n\tr1 = MulAdd(s1_0_1, M4(4.421e-01, 1.424e-02, 2.052e-01, 1.260e-01, -4.766e-01, 2.058e-01, -1.150e-01, 1.372e-01, -6.994e-02, 4.053e-01, 1.377e-01, -5.016e-02, 3.171e-01, -1.886e-02, 2.080e-02, -1.534e-01), r1);\n\tr2 = MulAdd(s1_0_1, M4(7.398e-02, -1.675e-01, 2.317e-02, 4.728e-03, 1.186e-01, 4.680e-01, 8.349e-02, 9.532e-02, -5.383e-02, 6.255e-02, -5.918e-01, -5.407e-02, -7.339e-02, 1.084e-01, -4.561e-01, -7.709e-02), r2);\n\tr0 = MulAdd(s1_0_2, M4(-5.955e-01, -8.572e-02, 5.788e-02, -2.494e-02, -2.346e-02, 5.889e-02, 1.739e-02, 1.601e-01, -1.611e-02, 7.011e-02, 1.486e-02, 3.629e-03, 2.366e-02, 1.401e-01, 1.545e-02, -6.272e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-3.560e-01, -1.456e-01, -2.211e-01, -1.439e-01, 3.024e-01, 2.056e-01, 1.674e-01, 4.816e-02, 8.819e-02, 2.785e-01, 1.116e-01, 4.942e-02, 7.848e-02, 2.130e-01, 6.364e-02, -2.354e-01), r1);\n\tr2 = MulAdd(s1_0_2, M4(-6.028e-02, -2.269e-01, -2.095e-01, 8.257e-03, -3.370e-02, 1.719e-01, -1.185e-01, 2.671e-02, 1.316e-02, -6.564e-02, -5.600e-02, 2.305e-03, 2.600e-02, -2.821e-01, -1.426e-02, -7.375e-02), r2);\n\tr0 = MulAdd(s1_1_0, M4(-2.248e-02, 6.043e-02, 2.808e-02, 2.329e-01, 1.073e-01, -1.018e-01, -4.755e-02, -2.192e-02, 3.759e-02, -1.135e-01, -1.280e-01, 1.908e-01, 2.422e-02, -6.803e-02, 9.674e-04, 1.846e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(-2.803e-01, 4.876e-01, 2.270e-02, -3.722e-03, -1.658e-01, -3.292e-01, -6.100e-02, -1.270e-01, -1.044e+00, -3.930e-01, -2.939e-01, -2.094e-01, -2.124e-01, -2.370e-03, 1.091e-01, -1.311e-01), r1);\n\tr2 = MulAdd(s1_1_0, M4(-4.534e-03, -1.763e-01, -8.423e-02, 2.711e-02, -5.319e-03, 4.972e-01, 3.259e-02, -1.313e-01, -1.667e-01, 1.638e-01, 3.195e-01, -2.000e-01, -6.090e-02, 1.472e-01, -2.107e-02, -2.024e-02), r2);\n\tr0 = MulAdd(s1_1_1, M4(6.284e-01, 4.037e-01, 5.488e-01, 4.483e-01, 2.585e-01, 4.176e-02, 4.315e-02, 7.433e-01, -2.203e-01, -7.788e-02, 1.316e-03, 1.170e-01, -5.041e-01, -5.083e-01, -1.636e-01, 2.094e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(3.974e-01, 7.238e-01, 5.801e-01, 2.100e-01, -5.379e-01, -3.604e-02, -4.114e-01, -2.587e-01, -6.799e-01, 4.307e-01, 1.028e-01, -4.541e-01, -2.498e-01, -1.995e-01, -5.944e-03, -5.798e-01), r1);\n\tr2 = MulAdd(s1_1_1, M4(8.748e-01, -2.503e-01, -1.163e-01, 6.193e-01, -7.160e-02, -2.926e-01, 2.823e-01, -5.832e-02, -4.691e-01, -3.428e-01, -3.361e-01, -3.252e-01, -5.215e-01, -4.780e-01, -3.895e-01, -5.131e-01), r2);\n\tr0 = MulAdd(s1_1_2, M4(2.491e-01, -3.704e+01, 1.015e-01, -1.715e+00, 7.478e-04, 2.296e-01, 3.992e-02, 3.427e-01, -7.711e-03, 1.593e-02, 2.253e-02, -1.188e-01, 6.016e-02, 6.191e-01, 3.195e-03, 5.925e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(3.271e-01, -1.288e+00, -3.803e-01, -8.543e-02, -5.573e-01, 4.268e-01, 4.147e-01, 1.555e-01, -4.686e-02, 1.956e-01, 1.947e-02, 8.344e-02, -1.150e-01, -2.216e-02, 4.597e-02, -5.005e-02), r1);\n\tr2 = MulAdd(s1_1_2, M4(-5.889e-02, 7.753e-02, 9.189e-02, -7.154e-02, 4.701e-02, -3.662e-01, -2.010e-01, 3.158e-02, 6.865e-03, 5.643e-02, -6.771e-02, 3.890e-02, 3.126e-01, 1.334e-01, 1.128e-01, 1.313e-01), r2);\n\tr0 = MulAdd(s1_2_0, M4(-2.087e-02, 1.292e-02, 1.714e-02, -1.420e-01, 3.486e-01, -6.191e-02, -5.583e-02, -9.830e-02, 1.524e-02, -2.447e-02, -4.297e-02, -3.177e-01, 5.009e-02, 3.690e-02, 1.104e-02, 1.465e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(-3.224e-01, 1.184e-01, 9.703e-02, 7.334e-02, 1.129e+00, -1.284e-01, -8.011e-02, 2.494e-01, -6.895e-01, -1.548e-01, -7.984e-02, -1.451e-01, -7.972e-02, 5.407e-02, 4.626e-02, -4.652e-01), r1);\n\tr2 = MulAdd(s1_2_0, M4(1.332e-02, 7.325e-02, -6.152e-02, 3.228e-02, -1.453e-01, -1.606e-01, 4.684e-03, -5.536e-02, -2.218e-02, 6.068e-02, 4.577e-02, -4.796e-02, -1.470e-01, -6.950e-02, -7.434e-02, -1.102e-01), r2);\n\tr0 = MulAdd(s1_2_1, M4(-5.598e-02, 1.295e-01, 1.021e-03, -3.887e-01, -3.907e-01, 2.177e-01, 1.152e-02, 1.330e-01, 2.220e-02, 1.094e-02, 1.356e-02, -1.842e-01, -2.615e-02, -4.044e-02, 5.777e-03, -3.430e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.770e+00, 6.587e-02, 4.620e-02, -4.802e-02, -1.365e-01, 4.538e-01, 1.483e-01, -3.157e-01, -1.712e-01, 4.919e-02, -2.451e-02, -1.657e-01, -5.841e-01, -2.260e-01, 3.821e-02, -6.152e-01), r1);\n\tr2 = MulAdd(s1_2_1, M4(2.949e-01, 1.007e-01, -2.504e-01, 2.965e-01, 1.692e-01, -4.431e-01, -3.032e-01, 8.727e-02, -7.648e-02, 5.728e-02, -1.088e-01, -5.211e-02, -2.787e-01, 2.133e-01, 3.779e-01, -1.804e-01), r2);\n\tr0 = MulAdd(s1_2_2, M4(-8.538e-02, -9.626e-02, -3.871e-02, -3.720e-01, -2.251e-01, -1.783e-01, -1.719e-02, -1.389e-01, -5.509e-02, 7.782e-03, -2.470e-02, -4.052e-02, 3.227e-01, -1.139e-01, -1.620e-02, 1.942e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(-6.348e-01, -8.457e-02, -8.323e-02, -3.917e-03, 5.205e-02, -3.622e-02, 1.685e-01, -4.062e-01, -1.141e-01, 1.716e-02, 3.226e-02, -1.704e-01, 7.662e-02, -3.979e-01, -1.098e-01, -4.929e-01), r1);\n\tr2 = MulAdd(s1_2_2, M4(1.495e-03, -4.435e-02, -9.707e-02, 3.295e-02, -8.101e-02, 5.559e-02, 1.508e-01, 4.317e-03, 2.925e-02, 9.780e-03, 1.053e-02, 1.849e-02, 3.227e-02, 1.697e-01, 5.290e-02, 2.406e-02), r2);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.288e-01, -1.476e-01, -1.194e-01, 1.757e-01, -9.781e-02, 1.083e-01, 3.316e-02, -2.542e-01, 3.555e-01, 5.492e-02, -5.015e-02, 7.384e-02, 3.053e-01, 1.326e-01, -1.065e-01, 4.714e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-2.339e-01, -2.341e-01, -1.656e-01, -2.802e-02, -2.977e-02, 3.076e-01, 9.083e-03, 1.685e-01, -1.178e+00, -4.871e-01, -2.761e-01, -1.368e-01, -5.744e-01, -1.064e-02, 1.435e-01, 3.032e-01), r1);\n\tr2 = MulAdd(s0_0_0, M4(-8.233e-02, 1.596e-01, 3.061e-01, -2.245e-02, -1.757e-01, -5.143e-02, 1.061e-01, 5.894e-02, 7.105e-02, -6.280e-02, 1.684e-01, -2.964e-02, 2.744e-02, -1.831e-01, 3.190e-02, -1.195e-02), r2);\n\tr0 = MulAdd(s0_0_1, M4(3.771e-01, -3.831e-01, 6.527e-02, 4.982e-01, -3.543e-01, -4.346e-01, 1.272e-01, -5.401e-02, -3.638e-01, 3.155e-01, -1.419e-02, 2.188e-01, 2.790e-01, -2.027e-01, 5.311e-02, -2.886e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-4.946e-01, 1.635e-01, 1.824e-01, 1.272e-01, -1.880e-01, 3.846e-01, 1.452e-01, -9.590e-01, -1.433e+00, 3.369e-01, 3.227e-01, 1.594e-01, -5.894e-01, -3.781e-01, -2.127e-01, 2.710e-03), r1);\n\tr2 = MulAdd(s0_0_1, M4(-3.087e-02, 4.912e-01, -8.260e-01, -1.196e-01, -3.771e-01, -4.267e-01, -2.383e-01, -1.185e-01, 1.409e-01, 8.061e-01, -1.003e-01, -9.949e-03, -5.593e-02, 3.181e-01, -1.151e-01, -5.267e-02), r2);\n\tr0 = MulAdd(s0_0_2, M4(2.705e-01, 5.424e-01, -6.658e-02, 2.918e-01, -2.207e-01, 1.130e-01, -5.503e-02, -1.384e-01, 8.320e-01, 2.518e-01, -7.916e-03, 2.687e-02, -3.833e-01, -4.623e-02, 3.314e-03, -1.942e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(-4.029e-01, -2.731e-02, -3.362e-02, 3.361e-01, 3.759e-01, -4.710e-01, 1.406e-01, -2.484e-01, 6.383e-01, 2.517e-01, 1.400e-02, 5.596e-02, 2.565e-01, -1.129e-01, 8.728e-02, 4.135e-01), r1);\n\tr2 = MulAdd(s0_0_2, M4(2.970e-01, 5.334e-02, 2.566e-01, 1.008e-01, -6.914e-02, -8.490e-02, 4.448e-01, -4.482e-02, 1.091e-01, 4.105e-01, -1.081e-01, -2.144e-02, -1.531e-02, 7.835e-02, -3.865e-02, -1.018e-01), r2);\n\tr0 = MulAdd(s0_1_0, M4(-4.130e-01, -1.357e-01, 2.685e-02, -2.348e-01, -1.936e-02, 1.505e-02, -1.392e-01, -2.457e-02, -1.300e-02, -1.012e-01, -1.854e-01, -5.578e-01, -1.498e-01, -1.423e-01, -8.878e-03, -3.682e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(6.660e-01, 7.191e-02, 6.120e-01, -4.368e-01, 5.277e-01, 1.327e-01, -1.072e-01, -9.239e-02, 5.542e-01, -7.792e-01, -2.208e-01, -1.730e-01, 4.048e-01, -4.107e-01, -2.397e-01, 3.588e-01), r1);\n\tr2 = MulAdd(s0_1_0, M4(-4.015e-01, -5.224e-01, 4.182e-01, -4.482e-01, 1.562e-01, -4.360e-01, 1.370e-01, -3.616e-02, -4.618e-02, 1.868e-01, 8.858e-02, -8.757e-02, -1.432e-01, 1.780e-01, 2.062e-01, -1.036e-01), r2);\n\tr0 = MulAdd(s0_1_1, M4(7.276e-02, -1.208e-01, -5.913e-02, -5.598e-01, 2.440e-01, 2.302e-01, 1.070e-01, 2.536e-01, 7.349e-02, -3.152e-01, 2.640e-01, -2.006e-01, -5.437e-01, 1.998e-02, 2.490e-01, -1.816e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(7.291e-01, -7.681e-02, -1.505e-01, -7.358e-02, -2.790e-01, 3.648e-01, 1.184e-01, 1.451e+00, 2.265e-01, 3.704e-01, 2.199e-01, -7.690e-02, -2.274e+00, 6.125e-01, 2.507e-01, -2.036e-01), r1);\n\tr2 = MulAdd(s0_1_1, M4(-6.974e-01, -9.483e-01, -1.005e+00, -7.180e-01, 9.718e-01, 9.220e-01, 1.815e-01, 7.114e-01, -5.811e-01, -4.000e-01, 6.824e-02, -2.309e-01, 5.481e-02, 1.076e-01, -8.109e-02, 8.214e-02), r2);\n\tr0 = MulAdd(s0_1_2, M4(-3.908e-03, 3.818e-01, 7.491e-02, -2.036e-01, -4.699e-01, -2.655e-01, 5.943e-02, 8.274e-02, -9.263e-02, 5.145e-02, -6.481e-02, -8.418e-01, 2.354e-01, 3.803e-01, 8.590e-02, 6.857e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(2.391e-01, -8.973e-02, -3.659e-01, 3.401e-01, -3.881e-01, 5.709e-02, -5.577e-02, 4.037e-01, 7.414e-01, -1.485e-01, -1.317e-01, -1.475e-01, -7.282e-01, -1.551e-02, 1.411e-01, -4.009e-01), r1);\n\tr2 = MulAdd(s0_1_2, M4(-2.483e-01, -4.494e-01, 8.249e-01, -1.202e-01, -8.706e-02, -1.870e-01, -2.945e-01, -9.375e-02, -5.850e-02, 1.752e-01, -6.868e-02, 1.178e-01, -9.945e-02, 8.942e-02, 1.186e-01, -8.432e-02), r2);\n\tr0 = MulAdd(s0_2_0, M4(1.203e-02, -1.769e-01, 3.631e-02, 1.997e-01, 4.286e-02, -7.483e-02, -6.190e-02, -9.006e-02, -7.242e-02, 5.012e-03, -1.616e-02, 3.364e-01, 9.702e-02, 2.644e-02, 4.662e-02, 1.905e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.757e-01, -2.754e-02, -1.902e-01, 7.075e-02, -2.360e-01, -6.136e-02, -1.723e-01, -4.440e-01, 7.379e-01, -9.306e-02, -1.066e-01, 2.348e-01, 3.588e-01, 2.486e-01, 7.216e-03, 8.569e-02), r1);\n\tr2 = MulAdd(s0_2_0, M4(2.279e-01, 6.121e-01, 3.666e-01, 2.546e-01, 1.741e-02, 1.978e-01, 8.353e-02, -2.692e-03, 1.146e-02, -2.822e-01, 1.836e-04, -1.034e-02, 6.014e-03, 1.530e-01, 9.490e-02, 9.806e-02), r2);\n\tr0 = MulAdd(s0_2_1, M4(2.685e-01, -3.993e-02, 1.243e-01, 1.526e-01, -2.746e-02, 5.692e-03, -4.628e-02, -1.644e-01, -6.031e-02, 1.331e-01, 4.747e-02, 6.986e-01, -5.089e-02, -8.952e-02, -8.912e-03, 6.074e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(2.769e-02, 4.781e-02, -2.540e-02, 9.864e-02, -6.560e-01, -4.386e-02, -1.233e-01, -5.068e-01, -7.804e-01, 7.293e-02, 1.295e-01, 9.702e-02, 1.280e+00, 1.412e-01, 1.408e-02, -9.061e-02), r1);\n\tr2 = MulAdd(s0_2_1, M4(6.217e-01, 5.693e-01, -4.500e-01, 8.445e-01, -6.107e-02, -2.220e-01, -2.737e-01, -1.397e-01, 2.242e-01, -1.369e-01, -5.505e-02, 6.678e-02, 1.838e-01, -7.097e-02, 1.136e-01, 1.761e-01), r2);\n\tr0 = MulAdd(s0_2_2, M4(-2.326e-01, 1.049e-01, -6.058e-02, -2.120e-01, -5.192e-02, -5.077e-02, -7.789e-03, 3.571e-02, -1.458e-01, -8.850e-02, 7.475e-02, 4.803e-01, 1.460e-01, -2.452e-02, 1.272e-02, 7.251e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-2.952e-01, 1.587e-01, 1.255e-01, -3.417e-01, -1.724e-01, -4.613e-02, 6.487e-02, -4.664e-01, 3.921e-01, -5.472e-02, 2.621e-02, 5.369e-01, 3.998e-01, -1.093e-01, -1.931e-02, 3.767e-02), r1);\n\tr2 = MulAdd(s0_2_2, M4(2.300e-01, -6.538e-03, 1.104e-01, 2.158e-01, -1.142e-01, -4.974e-02, -6.693e-02, -8.683e-02, -9.128e-02, -5.455e-01, -8.184e-02, -3.169e-02, -7.272e-02, 2.355e-02, -2.067e-01, -4.727e-02), r2);\n\tr0 = max(r0, 0.0);\n\tT3[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT4[gxy] = r1;\n\tr2 = max(r2, 0.0);\n\tT5[gxy] = r2;\n}\n\n//!PASS 3\n//!DESC conv2 (12x8)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T3, T4, T5\n//!OUT T0, T1\n\n#define L0(x, y) V4(O(T3, x, y))\n#define L1(x, y) V4(O(T4, x, y))\n#define L2(x, y) V4(O(T5, x, y))\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(2.387e-02, 5.039e-03, 1.100e-02, -1.362e-02, 9.302e-02, 8.205e-02, 2.296e-02, 7.425e-03, -2.191e-02, -1.911e-02, 2.297e-04, 9.503e-04, -2.780e-02, 2.108e-02, 1.064e-02, -1.065e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(2.802e-02, -9.735e-03, -7.902e-03, -3.066e-02, -1.309e-02, 6.763e-02, 2.354e-03, -1.702e-02, -5.457e-02, -1.194e-01, 2.090e-02, 2.264e-02, 3.222e-02, -3.080e-02, 1.552e-02, 1.208e-01), r1);\n\tr0 = MulAdd(s0_0_1, M4(1.401e-02, -4.661e-03, 6.371e-02, -1.231e-02, 1.398e-01, 5.913e-02, -1.489e-01, 2.703e-02, 2.063e-03, -4.034e-02, 5.600e-03, -1.538e-01, -2.203e-02, 2.497e-02, -1.312e-01, 6.019e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(5.172e-03, 6.714e-02, 7.182e-02, 1.414e-01, 9.651e-02, 5.924e-02, 5.372e-03, 3.350e-01, 4.913e-02, 1.126e-01, -8.533e-02, -5.515e-02, -4.498e-02, -4.091e-02, -1.401e-01, -9.632e-02), r1);\n\tr0 = MulAdd(s0_0_2, M4(4.700e-02, 3.259e-02, 5.663e-02, 3.233e-02, 3.070e-02, 2.611e-02, -1.845e-02, 1.003e-02, -3.212e-03, -8.722e-03, 2.501e-03, 3.606e-02, -3.405e-02, -1.799e-02, -6.237e-02, 9.660e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(5.018e-02, 8.628e-03, 1.489e-01, -8.424e-02, 1.169e-01, -4.234e-03, 5.637e-02, -7.539e-02, -9.058e-02, -1.327e-02, 8.276e-02, 1.966e-02, 3.427e-02, -1.187e-02, -1.087e-01, -8.417e-02), r1);\n\tr0 = MulAdd(s0_1_0, M4(-1.191e-01, 1.294e-01, 1.445e-02, 2.066e-02, -4.614e-02, -2.934e-02, -3.672e-02, -1.284e-02, 5.660e-01, 2.852e-01, 2.228e-01, 1.082e-01, 2.247e-02, -7.533e-03, -2.905e-02, -6.454e-04), r0);\n\tr1 = MulAdd(s0_1_0, M4(8.417e-02, -2.250e-01, -1.563e-02, -2.469e-02, 1.544e-01, 2.183e-01, -1.818e-03, -6.337e-03, -2.744e-01, 9.829e-01, 2.247e-02, 4.035e-02, 1.008e-01, 1.393e-01, 4.202e-03, 1.659e-02), r1);\n\tr0 = MulAdd(s0_1_1, M4(-6.695e-02, 1.528e-01, 5.858e-02, 6.154e-01, 5.879e-01, 6.793e-01, 8.536e-01, 4.064e-01, 3.909e-01, 4.033e-01, -7.441e-01, 6.816e-01, 2.666e-01, -2.377e-01, 1.375e-02, -9.337e-02), r0);\n\tr1 = MulAdd(s0_1_1, M4(-7.669e-02, 6.810e-02, -1.178e+00, 8.876e-02, 4.678e-01, 8.091e-02, 2.549e-01, 4.048e-01, 6.447e-01, -3.797e-01, 6.796e-01, -1.002e-01, -1.359e-01, 1.556e-01, 4.443e-01, 5.872e-02), r1);\n\tr0 = MulAdd(s0_1_2, M4(2.936e-02, 3.309e-02, -4.649e-02, 1.266e-03, -1.071e-02, 1.150e-02, -4.307e-02, 8.376e-02, -8.812e-02, 2.457e-03, 3.471e-01, 6.348e-02, -9.286e-03, -1.159e-02, -1.309e-01, -2.829e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(8.603e-02, -1.563e-02, -4.872e-02, -8.130e-02, 1.372e-01, 6.076e-04, 4.155e-02, 4.680e-02, -3.156e-01, 3.210e-02, -3.230e-01, 1.127e-01, -2.228e-02, 1.770e-02, 3.213e-01, -1.441e-01), r1);\n\tr0 = MulAdd(s0_2_0, M4(-1.035e-01, -1.453e-01, 2.119e-02, -4.831e-02, 2.838e-02, 3.192e-02, -2.990e-03, 1.083e-02, -4.665e-02, 2.126e-01, 2.998e-01, 5.725e-02, -2.358e-02, 2.070e-02, 9.487e-03, 2.215e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(2.265e-01, 5.212e-02, -2.732e-02, -2.056e-01, -1.269e-01, -9.936e-02, 8.049e-04, -2.832e-02, -3.935e-01, -6.899e-02, -8.451e-03, -8.612e-02, 4.968e-02, -7.789e-02, -1.894e-02, -9.563e-03), r1);\n\tr0 = MulAdd(s0_2_1, M4(-4.269e-02, -2.241e-01, -4.941e-01, -1.515e-01, 1.681e-02, 8.103e-02, 1.392e-02, -2.671e-02, -9.747e-02, -3.161e-02, -6.227e-03, 1.997e-01, -3.018e-01, 1.713e-01, 6.287e-02, 1.076e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(-4.755e-01, -1.019e-01, 5.387e-02, 1.452e-01, 1.255e-01, 6.241e-04, -9.066e-02, 4.872e-02, 3.606e-01, -4.531e-02, 3.632e-02, -2.959e-01, 1.296e-02, -2.184e-02, 4.305e-04, -2.642e-02), r1);\n\tr0 = MulAdd(s0_2_2, M4(-1.507e-02, 9.670e-03, -7.726e-02, -7.397e-02, 1.959e-02, 1.723e-02, -9.752e-03, -2.326e-02, -2.236e-02, -6.484e-02, -4.524e-02, -5.987e-02, 2.390e-02, 6.645e-02, 5.563e-02, 1.685e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.048e-01, 2.912e-02, -1.161e-01, 1.022e-01, 5.820e-02, -8.682e-04, 2.609e-02, -6.270e-03, -2.588e-01, -1.494e-02, -4.232e-02, -3.747e-02, -9.839e-02, -8.867e-03, 7.103e-02, 6.650e-02), r1);\n\tr0 = MulAdd(s1_0_0, M4(-1.487e-01, -3.279e-01, -2.672e-02, -8.456e-02, 7.692e-03, -1.460e-02, 3.830e-04, -1.309e-02, -1.023e-01, -2.793e-02, -3.870e-02, -1.387e-03, 2.262e-01, 6.213e-02, 8.477e-02, 5.583e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.209e-01, -5.293e-01, 1.742e-02, 1.232e-01, -2.523e-02, 3.848e-02, 1.010e-02, -4.849e-02, 3.161e-02, -4.788e-02, -3.296e-02, 6.662e-02, -1.255e-01, 2.300e-01, -3.164e-02, 1.294e-01), r1);\n\tr0 = MulAdd(s1_0_1, M4(-1.350e-01, 1.637e-01, -1.179e-01, -1.987e-01, 5.722e-02, 7.147e-03, 3.106e-02, 2.949e-02, -1.528e-01, -8.862e-02, -1.209e-01, -1.719e-02, -1.948e-01, -1.005e-01, 1.262e-03, -3.722e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-2.300e-01, -1.910e-01, -1.522e-01, -1.348e+00, -4.016e-02, 2.514e-02, -8.788e-03, -2.277e-01, 5.975e-02, -7.251e-02, -2.105e-01, 2.540e-01, 1.489e-01, -2.735e-01, 2.353e-01, -3.681e-01), r1);\n\tr0 = MulAdd(s1_0_2, M4(-1.500e-01, -1.010e-01, -1.774e-01, -1.191e-01, -2.646e-02, -2.101e-02, 2.656e-03, -1.485e-02, -3.013e-02, 3.431e-02, 3.875e-02, -3.613e-02, -5.432e-02, -2.659e-02, -6.672e-02, -3.826e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-2.183e-01, -2.350e-03, -2.978e-01, -1.457e-01, -7.195e-03, -1.510e-02, 5.454e-02, -2.988e-02, 1.451e-01, 3.372e-03, 2.713e-03, -1.074e-01, -1.362e-01, 2.364e-02, -2.819e-01, 1.518e-01), r1);\n\tr0 = MulAdd(s1_1_0, M4(1.042e-01, 2.220e-01, 5.613e-02, 1.645e-01, -1.062e-01, -3.348e-02, 5.082e-02, -1.945e-02, -1.909e-01, -1.220e-01, -1.552e-01, -7.162e-02, -1.783e-01, 6.354e-02, 4.846e-02, 2.436e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-1.876e-01, 2.569e-01, -8.313e-02, -8.131e-02, -3.810e-02, -4.132e-01, -2.325e-02, 3.355e-02, 2.210e-01, -3.486e-01, 4.346e-03, 1.124e-01, -1.194e-01, -2.803e-01, 3.860e-02, -1.494e-03), r1);\n\tr0 = MulAdd(s1_1_1, M4(2.000e-01, -6.499e-01, 2.163e-01, -1.899e-01, -2.588e-01, -1.604e-01, -8.083e-02, -2.531e-01, 2.904e-01, 3.430e-01, 6.142e-02, -3.122e-01, -1.360e-01, -2.939e-01, -3.565e-01, -5.947e-02), r0);\n\tr1 = MulAdd(s1_1_1, M4(6.801e-02, 1.179e-01, -5.623e-02, -6.493e-02, -4.985e-01, -1.634e-02, -3.174e-01, -4.263e-01, -1.463e-01, 1.955e-01, -2.140e-01, 8.439e-01, 3.290e-02, 4.419e-02, -2.152e-01, -1.529e-01), r1);\n\tr0 = MulAdd(s1_1_2, M4(-1.757e-02, -2.921e-01, -1.383e-02, 8.974e-02, -1.238e-02, -1.996e-02, -7.740e-02, -2.862e-02, -1.169e-01, -1.899e-01, 2.023e-01, 2.529e-01, 3.576e-02, -1.853e-02, -5.013e-03, -9.529e-02), r0);\n\tr1 = MulAdd(s1_1_2, M4(-2.812e-01, 8.243e-03, 2.446e-01, -4.952e-02, -1.401e-01, -5.836e-03, -3.480e-02, -3.135e-02, 6.191e-01, -3.551e-02, 2.819e-02, -1.803e-01, -2.387e-01, 1.252e-02, 1.372e-01, -6.929e-02), r1);\n\tr0 = MulAdd(s1_2_0, M4(-6.778e-03, -8.322e-02, -6.105e-03, -2.485e-02, -1.710e-02, -8.667e-02, -9.260e-03, -2.666e-03, -1.631e-02, -1.091e-01, -1.499e-01, -1.142e-03, 1.879e-02, -8.178e-02, 2.972e-03, -4.369e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(3.702e-02, -1.485e-01, -5.488e-03, 5.798e-02, 1.759e-02, 2.316e-02, 2.227e-02, -3.748e-02, 1.924e-01, -2.009e-02, 1.210e-02, 6.553e-02, 8.576e-02, 5.872e-02, -1.460e-02, -3.207e-02), r1);\n\tr0 = MulAdd(s1_2_1, M4(-2.267e-01, 7.790e-02, -1.837e-02, -7.647e-02, 3.443e-03, -6.516e-02, -1.018e-01, -2.413e-02, -7.503e-02, -9.552e-02, -4.063e-02, -6.569e-02, 2.606e-02, 5.670e-02, 7.544e-02, -2.148e-02), r0);\n\tr1 = MulAdd(s1_2_1, M4(1.096e-02, -7.206e-02, -7.949e-02, 4.133e-02, -1.003e-01, -2.908e-02, 5.395e-03, -3.755e-02, 5.544e-03, 3.053e-02, -2.249e-02, 1.112e-01, -6.042e-02, 1.486e-02, 3.790e-02, 5.070e-02), r1);\n\tr0 = MulAdd(s1_2_2, M4(-5.846e-02, 9.742e-02, -7.688e-02, 1.446e-01, -2.631e-02, -2.632e-02, -8.949e-03, -1.008e-02, -5.947e-03, -3.663e-03, -3.306e-03, -3.730e-02, -1.279e-02, 1.553e-03, 3.512e-03, 3.078e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(-4.995e-02, -3.162e-02, -1.268e-01, -2.651e-02, -2.819e-02, 2.515e-03, -3.405e-02, 1.166e-02, 2.245e-01, 2.107e-02, 1.057e-01, 9.793e-03, -4.176e-02, -1.143e-03, 1.737e-03, -2.745e-02), r1);\n\ts0_0_0 = L2(-1.0, -1.0); s0_0_1 = L2(0.0, -1.0); s0_0_2 = L2(1.0, -1.0);\n\ts0_1_0 = L2(-1.0, 0.0); s0_1_1 = L2(0.0, 0.0); s0_1_2 = L2(1.0, 0.0);\n\ts0_2_0 = L2(-1.0, 1.0); s0_2_1 = L2(0.0, 1.0); s0_2_2 = L2(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.196e-01, -4.586e-02, -1.041e-02, -7.075e-02, -1.043e-01, -1.993e-01, 4.699e-03, 2.184e-02, -5.846e-02, -1.485e-02, 3.524e-02, 1.643e-02, 9.159e-02, 1.665e-03, -1.411e-01, 3.330e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(2.904e-01, -9.613e-02, -1.256e-03, -7.892e-02, -1.265e-02, 2.645e-03, -1.015e-01, -2.250e-01, -2.015e-02, -1.767e-01, -1.145e-01, 1.611e-01, -1.394e-01, 9.167e-02, -1.368e-02, -2.010e-01), r1);\n\tr0 = MulAdd(s0_0_1, M4(-7.302e-03, -1.195e-01, 1.192e-01, -2.582e-01, 2.065e-01, -4.437e-01, 1.013e-01, -1.743e-01, -7.795e-03, -7.220e-03, -4.291e-02, -9.929e-02, 1.154e-02, 9.751e-03, 4.229e-01, 2.901e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-3.311e-01, 3.008e-02, -1.935e-02, -1.906e-01, -2.607e-01, 1.470e-01, 2.939e-01, -1.605e-01, -2.637e-02, 4.003e-03, -2.290e-01, -1.696e-01, 9.910e-02, -2.000e-02, 4.756e-01, 5.140e-01), r1);\n\tr0 = MulAdd(s0_0_2, M4(1.236e-02, 1.774e-02, 1.694e-01, 1.014e-01, -3.561e-02, -3.528e-02, -1.364e-02, 1.269e-01, -1.765e-02, -2.019e-02, -9.837e-03, -1.400e-02, -5.214e-03, -2.716e-02, -2.091e-01, -1.499e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(-2.367e-02, 2.824e-02, 2.510e-02, 2.237e-01, -1.304e-01, 5.437e-02, -4.635e-02, -5.073e-02, -5.724e-04, -4.104e-03, -1.058e-02, 4.223e-04, -1.335e-01, -4.954e-02, 8.899e-02, -3.740e-01), r1);\n\tr0 = MulAdd(s0_1_0, M4(-3.056e-01, -4.099e-01, -1.091e-01, -1.174e-01, -1.373e-01, -4.709e-02, -1.483e-02, -1.188e-02, -1.693e-02, 5.456e-02, 3.565e-02, 3.283e-02, 4.658e-01, 4.776e-01, -3.195e-02, 1.139e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(5.813e-01, -6.348e-01, 5.341e-02, 1.283e-01, -2.898e-01, -5.605e-01, -7.739e-02, 4.109e-02, -4.842e-01, -2.015e-01, 3.188e-02, 2.494e-01, -4.639e-01, 9.178e-01, -7.965e-02, -1.977e-01), r1);\n\tr0 = MulAdd(s0_1_1, M4(-4.475e-01, -2.325e-01, -2.114e-01, -3.678e-01, -4.110e-01, -5.558e-02, -4.194e-01, -1.646e-01, -1.812e-01, -1.165e-01, -2.180e-01, -4.219e-01, 6.516e-01, 4.901e-01, 7.598e-01, 2.872e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-6.779e-01, -2.329e-01, -3.032e-01, -9.753e-01, 2.636e-02, 1.457e-02, -1.628e-01, -2.202e-01, 2.485e-01, -1.431e-01, -3.447e-01, -7.063e-01, 8.067e-01, 3.149e-01, 3.533e-01, 1.168e+00), r1);\n\tr0 = MulAdd(s0_1_2, M4(-8.960e-02, -1.548e-01, -2.743e-02, -1.452e-01, -3.411e-02, -7.984e-02, -1.720e-01, -1.372e-01, -2.922e-02, -4.869e-02, 6.113e-02, -6.427e-02, 1.180e-01, 1.630e-01, 1.424e-01, 2.843e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(-6.987e-01, 2.133e-03, -4.074e-02, 9.316e-02, -1.117e-01, -2.403e-02, 3.816e-02, -1.217e-02, -1.752e-01, -1.545e-03, -1.333e-01, -6.443e-02, 5.456e-01, 7.471e-03, -7.507e-03, -2.339e-01), r1);\n\tr0 = MulAdd(s0_2_0, M4(5.189e-02, -3.084e-02, 6.678e-02, -1.339e-02, 5.211e-02, -4.927e-02, -1.239e-02, -1.325e-02, -1.362e-02, -5.128e-02, 1.129e-02, 4.093e-02, -4.678e-02, 9.366e-02, -6.714e-02, 1.592e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.821e-01, 1.900e-01, -4.043e-02, -2.715e-02, 7.738e-02, 1.067e-01, -2.444e-02, 3.594e-02, -8.610e-02, -1.304e-01, 1.970e-02, 4.296e-03, -2.328e-01, -2.435e-01, 3.431e-02, 5.506e-02), r1);\n\tr0 = MulAdd(s0_2_1, M4(1.392e-01, -4.945e-02, 2.119e-01, -7.351e-02, 4.283e-02, 2.137e-02, 1.687e-01, -1.623e-02, 1.400e-02, -7.672e-03, -1.617e-01, -4.320e-02, -1.651e-01, 2.251e-02, -2.378e-01, 7.097e-02), r0);\n\tr1 = MulAdd(s0_2_1, M4(-2.090e-01, 3.536e-02, -3.582e-03, 2.963e-03, -6.411e-02, -9.594e-03, 1.891e-02, 3.416e-02, 1.578e-02, -2.630e-02, 8.782e-04, 2.474e-02, 2.531e-01, -2.681e-02, -2.825e-02, -3.559e-02), r1);\n\tr0 = MulAdd(s0_2_2, M4(6.498e-02, 6.811e-02, 1.636e-01, 5.577e-02, -1.441e-02, 7.929e-03, 3.934e-02, 3.743e-04, -2.435e-02, -6.520e-03, 1.730e-02, 8.862e-03, -6.469e-02, -7.798e-02, -2.087e-01, -6.567e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(-4.256e-02, 2.814e-02, -8.059e-02, 4.228e-02, 4.183e-02, 3.332e-03, -8.306e-02, -5.689e-02, -2.430e-02, -6.836e-03, -2.929e-02, 1.817e-02, 3.010e-02, -3.360e-02, 1.072e-01, -2.368e-02), r1);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n}\n\n//!PASS 4\n//!DESC out-shuffle (8x4)\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, T0, T1\n//!OUT OUTPUT\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 sz = GetOutputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(2.292e-02, 1.001e-02, -8.934e-03, 1.739e-03, -1.075e-02, 1.342e-03, 7.415e-03, 4.035e-03, 6.036e-02, -7.155e-03, -1.980e-03, -2.166e-03, -2.081e-02, 7.952e-03, -1.267e-02, 1.142e-02), r0);\n\tr0 = MulAdd(s0_0_1, M4(7.132e-02, 2.416e-02, -2.227e-03, -4.860e-04, 5.798e-03, -1.587e-02, 2.928e-02, -4.944e-02, 4.748e-02, 1.255e-01, -1.654e-02, 7.912e-03, -7.690e-02, -8.911e-02, -5.182e-04, 1.592e-02), r0);\n\tr0 = MulAdd(s0_0_2, M4(1.837e-02, 1.590e-02, -5.851e-04, -1.591e-02, 2.044e-03, -3.361e-02, 1.057e-02, 1.349e-02, 1.272e-02, -6.750e-03, 7.907e-03, -1.285e-02, -1.592e-02, 9.610e-04, -9.432e-03, 8.813e-03), r0);\n\tr0 = MulAdd(s0_1_0, M4(8.667e-02, -9.242e-03, 3.318e-02, 1.916e-02, 6.151e-02, 2.082e-02, 3.235e-02, -2.143e-02, 5.009e-02, -1.719e-02, 1.851e-01, -1.685e-02, 2.506e-02, -3.894e-03, 1.690e-03, 2.377e-02), r0);\n\tr0 = MulAdd(s0_1_1, M4(-8.387e-01, -1.761e-01, 3.328e-01, 5.308e-02, 2.998e-01, 4.975e-02, -7.793e-01, -1.165e-01, -5.922e-02, 1.125e-01, 9.888e-02, 4.112e-01, 2.311e-01, 3.285e-01, 1.176e-02, -2.353e-01), r0);\n\tr0 = MulAdd(s0_1_2, M4(-3.505e-02, -1.204e-01, -3.650e-02, 3.279e-02, 2.166e-02, 1.921e-02, 4.179e-02, -1.014e-01, 1.004e-02, -3.576e-02, 1.460e-02, -1.919e-02, -8.401e-03, 5.749e-02, -1.101e-02, 4.334e-02), r0);\n\tr0 = MulAdd(s0_2_0, M4(1.645e-02, 5.136e-04, 1.847e-02, 1.850e-02, -5.264e-03, 1.014e-03, 1.631e-02, 7.070e-03, -1.447e-03, -3.175e-03, -3.604e-02, -1.518e-02, 1.477e-05, -1.200e-03, 5.377e-02, -3.313e-03), r0);\n\tr0 = MulAdd(s0_2_1, M4(3.565e-02, 5.328e-03, 4.944e-02, -7.376e-03, -2.322e-03, 6.952e-04, 2.526e-02, -4.164e-03, -5.473e-03, 3.168e-03, -8.765e-02, -6.798e-02, -4.066e-03, -7.083e-03, 1.200e-01, 1.899e-01), r0);\n\tr0 = MulAdd(s0_2_2, M4(1.376e-02, 5.270e-03, 2.451e-02, -3.066e-02, -1.031e-03, -8.212e-04, -1.497e-02, 1.617e-04, -6.968e-03, 2.039e-04, -6.910e-03, -1.776e-02, 2.744e-03, 5.319e-04, 8.148e-03, 1.788e-02), r0);\n\tr0 = MulAdd(s1_0_0, M4(-1.572e-02, 8.821e-03, -1.483e-02, 2.154e-02, -9.811e-03, -2.851e-03, 2.289e-03, -3.321e-03, -4.134e-02, -7.724e-03, 4.346e-03, -9.430e-04, -4.933e-03, 3.370e-03, -5.796e-03, 8.162e-03), r0);\n\tr0 = MulAdd(s1_0_1, M4(5.311e-02, -1.421e-01, 1.289e-02, 3.699e-02, 2.606e-02, -7.378e-03, 5.391e-03, -6.596e-03, -3.749e-02, -7.154e-02, -1.086e-03, 6.008e-03, 2.401e-02, -1.457e-02, -2.020e-02, 6.355e-03), r0);\n\tr0 = MulAdd(s1_0_2, M4(-2.142e-02, 4.039e-02, -1.041e-02, 9.822e-03, 3.846e-02, 1.240e-01, 3.890e-03, -1.742e-03, -2.683e-03, 7.338e-03, -4.240e-04, 4.985e-03, -6.563e-03, 2.869e-03, 4.070e-03, 4.858e-03), r0);\n\tr0 = MulAdd(s1_1_0, M4(9.836e-02, 2.372e-03, 1.294e-01, -3.218e-03, -6.737e-02, -7.906e-03, -1.745e-02, -6.910e-03, 1.958e-01, 3.296e-02, -1.284e-01, -3.370e-02, -1.589e-02, -3.011e-02, -3.112e-03, -1.329e-02), r0);\n\tr0 = MulAdd(s1_1_1, M4(3.337e-01, -3.467e-01, 3.918e-01, -5.527e-01, -1.231e-01, 6.421e-02, 1.877e-02, 4.993e-02, 1.997e-01, 3.447e-01, -8.720e-02, -1.753e-01, -5.701e-01, 4.404e-01, -9.540e-02, 1.248e-01), r0);\n\tr0 = MulAdd(s1_1_2, M4(-1.848e-02, 7.104e-02, -3.674e-02, 7.264e-02, 3.116e-02, -8.314e-01, 1.517e-01, 3.116e-01, 2.196e-03, 3.479e-02, 3.625e-03, -7.317e-03, -4.041e-02, 9.449e-02, -3.724e-02, 1.484e-02), r0);\n\tr0 = MulAdd(s1_2_0, M4(-2.451e-02, 4.403e-03, -5.063e-03, 4.535e-03, -1.594e-02, -2.546e-03, -3.374e-02, -1.276e-02, -5.974e-02, -8.156e-03, -8.276e-02, 6.096e-02, -9.513e-03, 9.127e-04, -8.361e-03, -2.912e-02), r0);\n\tr0 = MulAdd(s1_2_1, M4(-7.426e-03, 4.917e-03, 1.844e-02, -1.523e-02, -2.838e-02, -5.470e-03, 2.448e-02, -2.177e-02, -4.583e-02, -2.253e-02, 7.540e-02, -3.926e-01, -1.423e-02, 2.884e-02, -4.344e-01, 3.271e-01), r0);\n\tr0 = MulAdd(s1_2_2, M4(3.116e-03, -2.670e-03, 2.760e-03, 2.948e-02, -3.235e-02, 1.630e-02, -2.941e-02, 1.160e-01, -1.131e-02, -9.327e-03, -2.012e-02, 4.236e-02, -5.858e-03, -1.082e-02, -2.096e-02, 9.844e-02), r0);\n\tstatic const MF3x3 RY = {0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081}, YR = {1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099};\n\tfloat2 opt = float2(GetOutputPt()), fpos = (float2(gxy) + 0.5) * opt;\n\tMF3 yuv;\n\tyuv = mul(RY, INPUT.SampleLevel(SL, fpos + float2(0.0, 0.0) * opt, 0).rgb);\n\tOUTPUT[gxy + int2(0, 0)] = MF4(mul(YR, MF3(saturate(yuv.r + r0.x), yuv.yz)), 1.0);\n\tyuv = mul(RY, INPUT.SampleLevel(SL, fpos + float2(1.0, 0.0) * opt, 0).rgb);\n\tOUTPUT[gxy + int2(1, 0)] = MF4(mul(YR, MF3(saturate(yuv.r + r0.y), yuv.yz)), 1.0);\n\tyuv = mul(RY, INPUT.SampleLevel(SL, fpos + float2(0.0, 1.0) * opt, 0).rgb);\n\tOUTPUT[gxy + int2(0, 1)] = MF4(mul(YR, MF3(saturate(yuv.r + r0.z), yuv.yz)), 1.0);\n\tyuv = mul(RY, INPUT.SampleLevel(SL, fpos + float2(1.0, 1.0) * opt, 0).rgb);\n\tOUTPUT[gxy + int2(1, 1)] = MF4(mul(YR, MF3(saturate(yuv.r + r0.w), yuv.yz)), 1.0);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy2/CuNNy-faster-NVL.hlsl",
    "content": "// CuNNy faster - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-0002\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, x, y) t.SampleLevel(SP, pos + float2(x, y) * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T3;\n\n//!PASS 1\n//!DESC in (1x8)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT T0, T1\n\n#define L0(x, y) MF(dot(MF3(0.299, 0.587, 0.114), O(INPUT, x, y).rgb))\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tMF s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;\n\tV4 r0 = 0.0, r1 = 0.0;\n\tr0 = V4(-1.467e-03, -2.492e-04, -6.573e-04, -6.401e-04);\n\tr1 = V4(-4.736e-03, 7.443e-03, 2.352e-03, -8.863e-04);\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\tr0 = mad(s0_0_0, V4(-3.649e-02, 6.494e-03, 6.929e-03, -1.320e-02), r0);\n\tr1 = mad(s0_0_0, V4(-2.453e-01, 2.722e-02, -7.841e-02, -8.301e-01), r1);\n\tr0 = mad(s0_0_1, V4(-5.663e-02, 2.213e-03, -9.981e-03, 7.036e-03), r0);\n\tr1 = mad(s0_0_1, V4(-2.193e-01, 5.934e-04, -3.767e-02, -6.469e-02), r1);\n\tr0 = mad(s0_0_2, V4(-5.772e-02, -7.180e-03, 4.832e-03, -4.077e-03), r0);\n\tr1 = mad(s0_0_2, V4(3.104e-02, 3.213e-03, 8.831e-02, -1.925e-02), r1);\n\tr0 = mad(s0_1_0, V4(-1.444e-01, 2.094e-03, -8.605e-01, -3.923e-02), r0);\n\tr1 = mad(s0_1_0, V4(1.032e-01, 4.432e-02, 3.857e-01, 8.655e-01), r1);\n\tr0 = mad(s0_1_1, V4(7.103e-01, 8.262e-01, 8.574e-01, 6.191e-01), r0);\n\tr1 = mad(s0_1_1, V4(8.105e-01, -8.463e-02, -5.097e-01, 4.015e-02), r1);\n\tr0 = mad(s0_1_2, V4(-8.078e-02, -1.313e-01, -2.669e-04, 3.881e-02), r0);\n\tr1 = mad(s0_1_2, V4(-1.696e-01, -3.874e-02, 1.460e-01, 1.208e-02), r1);\n\tr0 = mad(s0_2_0, V4(-5.270e-02, -9.660e-03, 3.139e-03, 5.236e-02), r0);\n\tr1 = mad(s0_2_0, V4(8.130e-02, 2.059e-01, 1.882e-01, -3.923e-02), r1);\n\tr0 = mad(s0_2_1, V4(-1.171e-01, -7.569e-01, 9.770e-04, -6.428e-02), r0);\n\tr1 = mad(s0_2_1, V4(-2.483e-01, 3.656e-02, -2.046e-01, 3.488e-02), r1);\n\tr0 = mad(s0_2_2, V4(1.227e-02, 6.710e-02, -5.071e-03, 3.497e-02), r0);\n\tr1 = mad(s0_2_2, V4(-1.450e-01, 6.362e-02, 2.222e-02, -1.415e-03), r1);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n}\n\n//!PASS 2\n//!DESC conv1 (8x8)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1\n//!OUT T2, T3\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.745e-02, -2.207e-01, 1.935e-01, -1.900e-01, 2.286e-01, 2.744e-01, -8.664e-02, 1.118e-01, -4.883e-02, 9.057e-02, -4.562e-02, 1.048e-01, -9.133e-01, 6.688e-02, -6.078e-02, 3.743e-01), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.947e-01, -2.976e-02, -1.775e-02, -1.307e-01, 5.090e-01, 3.405e-01, 4.068e-02, 8.503e-02, 8.089e-02, 1.247e-02, 5.559e-02, 4.655e-02, 3.293e-01, 2.122e-01, 5.199e-01, 1.024e-03), r1);\n\tr0 = MulAdd(s0_0_1, M4(-3.874e-02, -2.083e-01, 7.888e-02, 1.068e-01, 6.695e-01, -3.078e-02, 2.589e-01, -4.537e-01, -3.048e-02, 2.744e-01, -8.475e-02, 3.597e-01, -5.918e-01, 2.407e-01, -3.240e-01, -2.955e-01), r0);\n\tr1 = MulAdd(s0_0_1, M4(-8.418e-02, 1.246e-03, -1.387e-01, -9.880e-02, 5.665e-01, 4.463e-01, -4.628e-02, -3.749e-01, 3.047e-01, 3.018e-01, 4.826e-01, -4.538e-02, 3.256e-01, 1.067e-01, -8.467e-02, 1.222e-01), r1);\n\tr0 = MulAdd(s0_0_2, M4(-6.977e-02, -1.212e-02, -1.844e-01, 7.854e-02, 7.446e-02, -2.596e-02, 1.750e-01, -1.119e-01, 1.223e-01, 2.946e-02, 2.369e-01, -1.947e-02, 6.332e-02, -3.517e-02, -3.114e-01, 4.048e-02), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.367e-01, -4.050e-02, 6.962e-02, 2.745e-01, 1.526e-02, 3.480e-02, -8.861e-02, -4.383e-01, 4.392e-02, 9.908e-02, 2.106e-01, -2.098e-01, 6.691e-02, -4.208e-02, -1.477e-01, 2.624e-01), r1);\n\tr0 = MulAdd(s0_1_0, M4(1.160e+00, -3.447e-01, 1.431e-01, -6.233e-01, -3.682e-01, 5.971e-02, 1.294e-01, -7.259e-02, -5.681e-01, 1.449e-01, 2.995e-02, 2.269e-01, 6.139e-01, -1.479e-01, -1.879e-01, 9.096e-01), r0);\n\tr1 = MulAdd(s0_1_0, M4(-3.301e-01, -8.343e-02, -4.568e-02, 7.738e-02, 6.387e-01, 5.020e-01, -7.634e-02, 2.607e-01, 3.192e-02, 3.449e-02, 1.919e-01, -6.372e-02, -2.151e-01, 4.512e-01, 6.904e-02, -2.574e-01), r1);\n\tr0 = MulAdd(s0_1_1, M4(-4.517e-01, -1.243e-01, -2.165e-01, -6.066e-01, 4.020e-01, 2.854e-03, 6.640e-02, 3.243e-03, -5.373e-01, 3.836e-01, 8.138e-02, 4.463e-01, 4.095e-01, 7.528e-01, 1.965e-01, 3.183e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-6.218e-01, -4.830e-01, -9.349e-02, 5.566e-01, -2.872e-01, 3.838e-01, -1.341e-01, 5.983e-01, 9.584e-01, 6.938e-01, -2.568e-01, -3.701e-01, 5.510e-02, -7.565e-01, -1.861e-01, -4.291e-01), r1);\n\tr0 = MulAdd(s0_1_2, M4(6.486e-02, 1.377e-01, -3.370e-02, -2.791e-02, -1.140e-02, -9.545e-02, 2.359e-01, 3.221e-02, 5.838e-02, 7.187e-02, 8.145e-01, -4.951e-01, -8.723e-02, -4.000e-01, 4.580e-01, -5.536e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(1.394e-01, 8.523e-02, 1.672e-01, 1.163e-01, -1.975e-02, 1.853e-01, 3.929e-02, 5.932e-01, 7.156e-02, 2.065e-01, 1.014e-01, -8.406e-01, -2.946e-01, 1.205e-02, -1.384e-01, -9.426e-02), r1);\n\tr0 = MulAdd(s0_2_0, M4(1.578e-01, 3.479e-01, -4.638e-02, -1.476e-02, -2.450e-02, -2.310e-01, 3.853e-02, -3.572e-02, -2.824e-01, -1.821e-01, 2.635e-02, 1.115e-02, 4.829e-01, -1.333e-02, 1.353e-01, -1.404e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(4.062e-01, -7.839e-02, -1.528e-01, 1.463e-01, -2.094e-01, 5.457e-02, 4.655e-02, 3.771e-02, -8.435e-03, -2.585e-03, 2.200e-01, -2.484e-02, 2.209e-02, 5.240e-01, -6.499e-02, 3.130e-01), r1);\n\tr0 = MulAdd(s0_2_1, M4(-1.333e-01, 2.201e-01, -1.312e-01, 2.972e-01, -7.875e-02, 1.708e-02, 1.902e-02, 5.143e-02, -1.431e-01, -5.507e-01, -9.084e-02, -3.752e-02, 1.752e-01, -3.599e-01, 8.160e-02, -1.351e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(6.348e-01, 2.734e-02, 1.104e-02, -4.207e-01, -7.792e-02, -1.760e-02, 1.204e-01, 2.692e-01, -5.941e-01, 1.669e-01, 6.509e-02, 3.877e-01, -4.454e-01, -2.498e-01, -8.765e-02, 3.905e-01), r1);\n\tr0 = MulAdd(s0_2_2, M4(4.501e-02, 7.349e-02, -2.666e-01, 9.839e-02, 1.803e-02, 1.300e-02, -6.910e-02, 2.326e-02, 3.095e-02, -1.059e-01, 6.958e-02, -1.489e-01, -3.644e-02, 8.288e-02, 1.284e-01, 7.309e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(1.741e-01, -4.271e-02, 6.756e-03, -3.452e-01, -8.228e-02, -1.461e-02, 5.054e-03, 3.622e-01, -1.589e-01, 1.089e-01, 8.572e-02, 1.207e+00, 2.484e-02, -9.725e-02, 5.219e-02, -4.567e-01), r1);\n\tr0 = MulAdd(s1_0_0, M4(-1.583e-02, -3.945e-02, -4.681e-02, 3.724e-02, -5.691e-01, 2.831e-01, 1.781e-01, 3.673e-01, 1.344e-01, -2.381e-01, -3.967e-02, -5.579e-02, 1.124e-02, 4.429e-02, 1.785e-02, -7.294e-03), r0);\n\tr1 = MulAdd(s1_0_0, M4(-1.249e-02, -1.271e-02, -5.509e-02, -1.618e-01, 5.631e-02, 1.353e-01, 5.989e-01, -3.549e-01, -3.291e-02, 1.055e-02, -3.570e-01, 2.014e-03, 2.559e-02, 2.520e-02, 1.014e-01, 4.776e-02), r1);\n\tr0 = MulAdd(s1_0_1, M4(-6.841e-02, -3.330e-01, 1.491e-01, -2.479e-01, 8.614e-01, 2.899e-01, -1.464e-01, -4.568e-01, -1.016e-01, 1.217e-02, 8.128e-02, -1.909e-01, 8.666e-02, 1.567e-01, -4.480e-02, 9.731e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-3.779e-01, -1.597e-01, -1.078e-01, -2.329e-01, -2.164e-01, -5.395e-02, 4.674e-02, -7.412e-01, -5.047e-02, 6.253e-03, 3.330e-03, 1.284e-01, 9.175e-02, 2.142e-02, 5.378e-03, 7.153e-02), r1);\n\tr0 = MulAdd(s1_0_2, M4(4.816e-02, -4.240e-02, 7.788e-02, -2.622e-02, -2.669e-02, 1.150e-01, 5.443e-01, 6.535e-01, 1.021e-01, -6.372e-02, -1.450e-01, -1.939e-01, -2.537e-02, 1.151e-01, -4.627e-02, 5.969e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-3.323e-02, -1.189e-02, -4.776e-02, -1.254e-01, 1.630e-02, -4.824e-03, 3.465e-01, -1.163e-01, -4.700e-02, -7.449e-03, -1.178e-01, 2.407e-01, 1.349e-01, 5.684e-02, 8.430e-02, -4.766e-03), r1);\n\tr0 = MulAdd(s1_1_0, M4(3.267e-01, 1.082e-01, 6.145e-02, -2.367e-01, -6.572e-01, -2.386e-01, 1.232e-01, -2.354e-01, 2.557e-01, 5.896e-02, -6.426e-02, -2.649e-01, -8.893e-02, -5.766e-02, -2.966e-03, 5.249e-02), r0);\n\tr1 = MulAdd(s1_1_0, M4(-8.711e-02, 1.077e-04, -1.323e-01, -2.155e-02, 3.191e-01, -1.654e-01, 3.363e-01, 3.341e-01, -5.586e-02, 6.453e-02, -7.851e-02, 1.353e-01, 1.495e-02, 2.910e-02, 3.749e-02, -4.560e-03), r1);\n\tr0 = MulAdd(s1_1_1, M4(-1.276e-01, 5.603e-02, 4.266e-02, -2.442e-01, -1.999e-01, -6.974e-01, -4.758e-01, -8.425e-01, -6.083e-01, 1.831e-01, -1.002e-01, 2.716e-03, -7.994e-01, 4.148e-01, -2.609e-02, 3.311e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.617e-01, -4.843e-01, -4.719e-02, 4.770e-02, 1.218e-01, 8.793e-02, -9.632e-01, 2.590e-01, 8.878e-04, -3.296e-02, 3.320e-01, 2.555e-01, 2.194e-01, 3.115e-01, 8.496e-01, -1.949e-01), r1);\n\tr0 = MulAdd(s1_1_2, M4(1.427e-02, -1.316e-01, 9.460e-02, -1.718e-01, -1.585e-01, -2.074e-01, 9.441e-04, -3.306e-01, -1.671e-01, 3.161e-02, -1.101e-01, 1.125e-01, -2.796e-01, 3.944e-01, -3.721e-01, 3.283e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(-1.260e-01, -8.491e-02, -7.202e-02, 1.288e-01, -1.071e-01, -4.142e-02, -1.240e-01, 5.697e-01, -2.579e-02, -7.446e-03, 9.417e-02, -3.176e-01, 4.365e-01, 1.960e-01, 1.096e-01, -2.448e-01), r1);\n\tr0 = MulAdd(s1_2_0, M4(2.348e-01, -1.035e-01, 1.214e-03, -9.820e-02, -2.979e-01, -1.009e-01, 1.762e-03, 2.216e-02, 2.369e-01, 2.364e-01, -4.041e-02, 1.902e-01, -1.076e-01, -3.857e-02, 1.176e-02, 1.821e-03), r0);\n\tr1 = MulAdd(s1_2_0, M4(1.106e-01, 6.168e-03, -8.660e-02, -9.408e-02, -4.449e-02, -1.545e-01, 1.303e-01, -4.042e-02, 2.602e-02, 6.939e-02, -2.552e-01, -7.157e-02, -4.227e-02, 4.203e-02, 1.665e-01, -6.815e-03), r1);\n\tr0 = MulAdd(s1_2_1, M4(1.327e-01, -1.606e-01, 6.922e-02, -1.945e-01, 1.564e-01, 4.677e-02, -8.247e-02, -1.052e-01, 1.166e-01, 2.031e-01, 2.183e-01, 3.076e-01, -1.039e+00, -7.060e-02, -1.160e-01, 4.229e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(9.163e-02, 6.150e-02, -1.353e-01, -4.893e-01, 1.450e-01, 2.789e-01, -3.849e-02, 2.974e-01, 1.348e-01, 9.801e-02, 7.791e-02, -3.330e-01, -6.113e-01, -3.717e-02, 2.095e-01, -2.653e-02), r1);\n\tr0 = MulAdd(s1_2_2, M4(-9.045e-02, 9.807e-03, 7.241e-02, 1.403e-03, 1.353e-01, 1.390e-01, -1.117e-01, 9.984e-02, 2.738e-01, 2.320e-01, 4.406e-02, 9.207e-03, 1.703e-01, -7.247e-02, 1.095e-01, 1.438e-01), r0);\n\tr1 = MulAdd(s1_2_2, M4(-4.790e-03, -2.152e-02, -2.678e-02, -1.558e-01, 2.494e-02, -4.282e-02, -2.160e-02, 3.721e-02, 9.600e-02, 3.137e-02, -2.145e-03, 6.140e-02, 2.852e-01, 3.834e-01, 2.035e-01, 1.803e-02), r1);\n\tr0 = max(r0, 0.0);\n\tT2[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT3[gxy] = r1;\n}\n\n//!PASS 3\n//!DESC conv2 (8x8)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T2, T3\n//!OUT T0, T1\n\n#define L0(x, y) V4(O(T2, x, y))\n#define L1(x, y) V4(O(T3, x, y))\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(3.721e-01, -2.400e-02, -1.956e-01, -2.366e-02, -9.801e-01, 3.329e-01, 2.192e-01, 1.466e-02, 5.032e-01, 4.557e-01, 1.382e-01, 6.692e-03, -6.218e-01, 3.035e-03, -9.975e-02, 2.041e-02), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.125e-01, -1.964e-02, -3.158e-02, -7.642e-02, 1.214e-02, 2.403e-02, 2.518e-03, 5.992e-02, -3.808e-02, -7.547e-02, 2.046e-02, 9.350e-02, -1.091e-02, -4.339e-02, -1.240e-03, 3.815e-02), r1);\n\tr0 = MulAdd(s0_0_1, M4(-1.061e+00, -1.985e-01, -9.808e-01, -2.885e-02, -3.455e+00, -5.276e-02, 1.655e-01, -1.392e-01, -5.314e-01, 3.927e-03, 1.428e-02, -1.066e-01, 1.385e+00, 1.430e-02, 5.197e-02, 1.058e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(2.568e-01, 5.616e-02, -2.189e-02, -6.037e-02, 1.284e-01, -1.030e-01, -3.021e-02, -2.181e-01, -1.265e-01, -3.797e-01, 3.796e-02, 4.211e-02, -2.102e-01, -3.914e-02, 1.532e-02, 7.398e-02), r1);\n\tr0 = MulAdd(s0_0_2, M4(-4.630e+00, 5.360e-02, -9.901e-02, 6.749e-02, -3.970e+00, -7.701e-03, 7.287e-03, -2.363e-03, -5.005e+00, 1.976e-02, -2.377e-03, 3.549e-03, -5.780e+00, -1.170e-01, -8.632e-03, 8.844e-03), r0);\n\tr1 = MulAdd(s0_0_2, M4(-1.027e+00, -4.827e-02, 1.986e-03, -2.380e-01, 2.717e-01, 9.447e-02, -3.643e-01, -7.834e-02, -3.782e-02, -1.204e-01, -5.315e-02, 2.084e-02, 8.963e-03, 3.009e-02, 1.096e-01, 2.298e-02), r1);\n\tr0 = MulAdd(s0_1_0, M4(3.437e-01, 7.051e-02, -1.714e-01, 7.105e-02, 8.972e-02, 3.610e-01, -1.654e-01, -1.354e-01, 1.456e-01, -4.150e-01, 6.514e-01, -4.283e-02, -1.893e-01, -5.605e-01, 2.214e-01, -3.887e-03), r0);\n\tr1 = MulAdd(s0_1_0, M4(-2.589e-01, 3.982e-02, -2.441e-02, -1.366e-01, 5.284e-02, -6.163e-02, -2.746e-02, -1.043e-01, -6.777e-01, 3.831e-02, -4.013e-02, -3.283e-01, -2.101e-01, 5.011e-02, 5.132e-03, -8.595e-02), r1);\n\tr0 = MulAdd(s0_1_1, M4(2.334e-02, -2.941e+01, -1.112e+00, -4.133e-01, 2.986e-01, 2.569e-02, 1.114e-01, 4.450e-01, 8.375e-01, 9.858e-02, -2.843e-02, -1.439e-01, -2.625e-01, 7.243e-01, -7.802e-02, -2.181e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(8.222e-01, 1.408e-01, 1.489e-01, 4.876e-01, -2.979e-01, -2.124e-01, -1.848e-01, 1.382e-01, 9.510e-01, 2.895e-01, -2.940e-01, -3.275e-03, 5.967e-01, 2.665e-01, 1.332e-01, 5.154e-02), r1);\n\tr0 = MulAdd(s0_1_2, M4(-2.033e-02, -4.102e-02, -2.331e-01, -7.625e-03, 1.539e-01, 1.332e-01, 6.752e-03, -2.610e-02, -2.315e-01, -3.520e-02, -2.606e-02, 3.162e-02, 3.172e-01, -2.522e-01, -3.822e-02, 1.669e-02), r0);\n\tr1 = MulAdd(s0_1_2, M4(-1.607e+00, -4.652e-01, -9.161e-01, -9.656e-01, -8.619e-02, 4.011e-02, 5.215e-01, 2.646e-01, -2.163e-01, -3.428e-01, -2.179e-01, -7.829e-02, -3.517e-01, -1.967e-01, -4.287e-01, -1.498e-01), r1);\n\tr0 = MulAdd(s0_2_0, M4(-1.786e-01, 9.090e-02, -2.610e-03, -5.163e-02, 6.480e-02, -3.163e-02, 1.155e-01, -8.818e-03, 2.394e-01, -5.334e-02, 2.987e-01, 5.863e-02, 3.900e-02, 4.309e-02, -2.314e-01, -6.592e-02), r0);\n\tr1 = MulAdd(s0_2_0, M4(-2.722e-02, 1.052e-01, 8.269e-03, -5.500e-02, -3.936e-03, 5.446e-03, -1.516e-02, 5.667e-03, -1.344e-02, 5.689e-02, 5.689e-03, -1.548e-01, 1.431e-02, -5.652e-02, -2.087e-02, -4.520e-02), r1);\n\tr0 = MulAdd(s0_2_1, M4(-1.032e-01, -1.703e-01, 6.614e-02, -4.873e-01, -2.534e-01, 9.399e-02, 2.212e-01, -3.525e-01, -1.027e-01, 1.957e-01, -1.243e-01, 4.235e-02, -9.614e-04, 1.865e-01, -6.629e-02, -1.868e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(1.028e-01, -1.106e-01, -7.235e-02, 4.743e-02, 7.260e-02, 1.035e-01, 3.983e-02, -3.822e-02, 2.064e-01, 5.926e-02, 2.607e-01, 4.834e-01, -2.974e-01, -3.156e-01, -1.608e-01, -1.681e-01), r1);\n\tr0 = MulAdd(s0_2_2, M4(-1.451e-01, -3.157e-02, 9.779e-02, -1.622e-02, -2.159e-01, -4.299e-02, -1.642e-02, -2.655e-02, -1.737e-01, -5.800e-02, -7.301e-02, 1.616e-02, -4.006e-01, -1.319e-01, -8.343e-02, 3.723e-02), r0);\n\tr1 = MulAdd(s0_2_2, M4(3.804e-02, 3.039e-01, -4.726e-02, -3.090e-01, 1.665e-01, 1.750e-01, -4.054e-02, 5.676e-02, -1.217e-01, -7.191e-02, 1.771e-02, -1.154e-01, -2.791e-02, -1.646e-01, -1.121e-01, -3.843e-02), r1);\n\tr0 = MulAdd(s1_0_0, M4(-7.360e-02, -9.049e-02, -8.863e-02, 3.107e-03, 3.522e-03, 1.528e-01, 1.353e-01, -1.450e-02, 2.771e-02, -2.253e-01, -1.361e-01, -6.045e-03, -2.504e-02, 5.064e-02, -1.548e-01, 2.374e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(-3.736e-02, -1.712e-03, 1.067e-02, -4.615e-03, 8.765e-02, -2.028e-02, -2.360e-02, -3.386e-02, -4.990e-02, -1.162e-02, 5.282e-03, -2.086e-02, 9.336e-02, 1.060e-02, -1.951e-02, -6.118e-02), r1);\n\tr0 = MulAdd(s1_0_1, M4(-8.324e-02, 2.494e-02, -2.002e-01, 4.015e-02, 2.385e-01, -6.613e-02, 2.512e-01, -6.451e-02, 1.712e-01, -9.852e-02, -2.800e-01, 7.153e-02, -9.909e-01, -3.173e-02, 1.414e-02, -8.374e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(-4.612e-02, 2.401e-02, 6.899e-02, 2.905e-01, 6.444e-02, 3.205e-02, -1.362e-01, -4.326e-01, -9.494e-02, -6.820e-03, 6.421e-02, 1.714e-01, -5.901e-01, -9.780e-02, 9.027e-03, 1.887e-02), r1);\n\tr0 = MulAdd(s1_0_2, M4(-6.049e+00, 7.153e-02, -5.054e-03, 2.387e-02, -8.097e+00, -8.952e-02, -6.126e-03, -4.407e-02, -1.088e+01, 2.262e-02, -1.584e-02, -4.606e-03, -7.515e+00, 8.446e-02, 1.333e-02, -1.092e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-4.014e-01, -2.529e-01, 2.178e-01, 8.960e-02, 4.076e-01, 2.650e-01, -2.803e-01, -8.337e-02, -4.150e-01, -1.169e-01, 2.159e-01, 2.209e-02, 7.263e-02, -5.167e-02, -4.701e-02, 7.609e-03), r1);\n\tr0 = MulAdd(s1_1_0, M4(4.563e-02, -4.523e-01, -1.023e-01, 2.913e-02, -4.190e-02, 9.824e-01, 3.403e-01, -2.963e-03, 5.346e-02, -5.637e-01, -1.136e-01, -9.705e-03, -1.695e-01, -1.431e-01, -3.994e-01, -2.549e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(5.094e-02, 5.899e-02, 7.176e-03, 7.392e-02, -7.962e-02, -1.056e-01, 1.996e-02, 4.597e-02, -5.665e-02, 9.646e-02, -6.105e-03, -2.696e-02, -6.616e-02, -2.239e-02, 1.726e-02, 5.942e-02), r1);\n\tr0 = MulAdd(s1_1_1, M4(-3.702e-01, -4.155e-01, -1.366e-01, -5.453e-01, -6.551e-01, -4.287e-01, 2.979e-02, 7.101e-01, -4.266e-02, -3.441e-01, -1.953e-01, -3.330e-01, -4.962e-01, -4.581e-02, -7.599e-02, -1.879e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(-1.928e-01, -4.612e-02, -6.519e-02, -3.969e-01, 6.230e-01, -8.522e-02, 9.952e-02, 8.184e-01, -2.250e-01, 8.927e-02, -3.654e-03, -2.698e-01, -2.588e-01, -3.297e-01, -4.873e-01, -7.559e-01), r1);\n\tr0 = MulAdd(s1_1_2, M4(-3.205e-01, 2.685e-01, -1.573e-02, 1.145e-01, 7.271e-01, -2.939e-01, -3.419e-02, -2.347e-02, -5.742e-01, 3.567e-01, 1.567e-01, -5.314e-02, -5.630e-02, 4.847e-02, 4.357e-02, -7.304e-03), r0);\n\tr1 = MulAdd(s1_1_2, M4(8.431e-02, -7.407e-01, -5.968e-01, -2.895e-01, 3.057e-01, 1.355e+00, 1.218e+00, 3.684e-01, 4.405e-01, -1.468e-01, -4.819e-01, -2.115e-01, -8.326e-02, -2.803e-01, -2.881e-01, -8.513e-03), r1);\n\tr0 = MulAdd(s1_2_0, M4(4.779e-02, -1.131e-01, -4.024e-02, 4.553e-02, -1.352e-02, 1.175e-01, -2.165e-01, -5.019e-02, -6.223e-02, -2.675e-01, 2.218e-02, 2.798e-02, -1.053e-01, 3.073e-03, -1.362e-01, -2.476e-02), r0);\n\tr1 = MulAdd(s1_2_0, M4(5.614e-02, 4.595e-02, 1.443e-02, 1.143e-02, 8.510e-02, -1.797e-02, -1.004e-02, 3.894e-02, -2.742e-03, 4.209e-02, 1.094e-02, -2.318e-02, 4.537e-03, 1.701e-02, -9.907e-03, 3.756e-03), r1);\n\tr0 = MulAdd(s1_2_1, M4(3.562e-02, -1.879e-01, -1.339e-01, 4.551e-01, 4.446e-02, -7.805e-02, 9.978e-02, 1.169e-01, 2.374e-01, -1.717e-01, 5.298e-01, 7.449e-02, 2.152e-02, -8.717e-03, -6.392e-02, -2.474e-03), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.522e-01, -1.399e-02, 6.566e-03, 3.406e-02, -1.909e-01, -1.610e-01, -7.153e-02, -1.621e-01, 9.282e-05, 7.914e-02, 1.993e-02, -7.462e-02, -1.242e-01, -1.460e-01, -5.944e-02, -4.934e-02), r1);\n\tr0 = MulAdd(s1_2_2, M4(1.692e-01, 1.819e-01, 8.325e-02, 3.697e-02, -7.658e-03, -5.463e-03, -2.540e-02, -5.200e-03, 7.926e-02, 1.222e-01, 2.049e-01, -3.164e-02, 4.969e-02, -3.982e-03, -1.223e-02, 2.194e-04), r0);\n\tr1 = MulAdd(s1_2_2, M4(-1.815e-01, -1.559e-01, 1.636e-01, 9.129e-02, 5.644e-02, 7.938e-02, 4.851e-02, 1.213e-01, 2.705e-01, 3.824e-01, 2.329e-01, 2.939e-01, -3.185e-02, -5.969e-02, -3.864e-02, -3.748e-02), r1);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n}\n\n//!PASS 4\n//!DESC out-shuffle (8x4)\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, T0, T1\n//!OUT OUTPUT\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 sz = GetOutputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0;\n\tr0 = V4(1.178e-04, -5.913e-05, -9.275e-09, -1.228e-04);\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-1.244e-02, -8.758e-03, -8.863e-03, 2.117e-02, -9.270e-04, 5.927e-04, 1.009e-03, -1.716e-03, -9.253e-04, -1.111e-03, 1.800e-03, 1.738e-03, -1.496e-02, -1.273e-02, -1.486e-02, 7.423e-03), r0);\n\tr0 = MulAdd(s0_0_1, M4(3.739e-03, -9.298e-06, 1.274e-03, 3.710e-03, 3.239e-03, 1.140e-03, -1.923e-02, -4.003e-03, 3.644e-02, -8.557e-03, 9.162e-04, -2.231e-03, -5.309e-01, 1.193e-02, -4.997e-02, -2.020e-02), r0);\n\tr0 = MulAdd(s0_0_2, M4(6.792e-03, -1.583e-03, -1.545e-04, 2.123e-03, -1.343e-01, 1.223e-01, 2.373e-03, -8.276e-02, -4.049e-03, 1.254e-01, -1.080e-02, 1.894e-02, 9.075e-03, 1.250e-02, -3.510e-02, -1.125e-01), r0);\n\tr0 = MulAdd(s0_1_0, M4(1.235e-01, -3.503e-02, -3.821e-02, -3.128e-02, -5.355e-03, 4.795e-04, -7.349e-03, -4.585e-04, 5.054e-03, 8.673e-04, 1.080e-03, -6.774e-04, -1.712e-03, 1.244e-02, -5.717e-03, 4.947e-03), r0);\n\tr0 = MulAdd(s0_1_1, M4(-2.232e-02, 3.194e-01, -4.260e-02, 9.687e-03, 5.554e-02, -3.243e-02, 4.311e-02, -3.627e-02, 1.753e-01, 1.504e-02, 1.343e-01, 8.075e-03, 2.201e-02, 3.087e-04, 3.701e-01, 2.575e-01), r0);\n\tr0 = MulAdd(s0_1_2, M4(5.742e-03, -5.625e-02, 2.008e-02, -8.259e-03, -3.426e-01, 4.014e-01, -5.684e-01, 5.084e-01, -4.118e-01, 2.838e-02, -1.102e-01, 2.417e-01, -1.824e-03, -1.022e-02, -9.827e-03, 1.753e-01), r0);\n\tr0 = MulAdd(s0_2_0, M4(-2.962e-02, 3.611e-02, -2.826e-02, 7.162e-02, 3.191e-03, -2.836e-03, 3.641e-03, 4.525e-04, -3.387e-03, 1.218e-03, -2.024e-03, 1.153e-03, 3.745e-03, -9.613e-04, 1.151e-02, 4.385e-04), r0);\n\tr0 = MulAdd(s0_2_1, M4(-4.404e-01, 4.677e-02, -2.510e-01, 4.287e-01, -1.260e-02, 9.716e-04, 1.849e-02, 2.118e-03, 2.679e-02, -4.549e-03, 8.995e-02, -8.610e-03, -4.725e-03, -2.950e-03, -1.471e-02, -1.283e-02), r0);\n\tr0 = MulAdd(s0_2_2, M4(1.786e-02, -3.493e-02, 2.228e-02, -1.174e-01, 5.050e-02, -1.421e-02, 2.838e-02, 4.065e-02, -1.205e-02, -3.918e-02, -1.469e-01, -9.351e-02, 1.648e-03, -1.034e-03, 4.440e-03, 6.707e-03), r0);\n\tr0 = MulAdd(s1_0_0, M4(-2.142e-02, 6.180e-03, -4.312e-04, -1.255e-03, 1.440e-01, -3.725e-03, -9.258e-03, -2.704e-02, 5.318e-02, 2.435e-02, 3.821e-02, 2.240e-02, 3.649e-02, -1.872e-02, -5.139e-03, -2.301e-03), r0);\n\tr0 = MulAdd(s1_0_1, M4(1.169e-02, -4.560e-02, 3.319e-03, -1.149e-02, 1.058e-02, 1.033e-01, -8.919e-03, -3.206e-03, 1.938e-02, 4.199e-02, 1.024e-02, 2.606e-02, -6.607e-04, 9.595e-02, -1.618e-02, -9.020e-03), r0);\n\tr0 = MulAdd(s1_0_2, M4(-2.192e-04, -1.368e-03, 2.637e-04, 2.084e-03, 3.796e-04, 4.478e-03, 4.530e-03, 3.802e-03, 1.389e-03, 8.964e-03, -7.443e-03, -9.200e-03, -4.164e-03, -4.553e-02, 8.826e-03, 5.783e-03), r0);\n\tr0 = MulAdd(s1_1_0, M4(-3.189e-02, 1.554e-02, -2.356e-02, 6.188e-03, -3.738e-01, -1.353e-01, 3.467e-01, -7.778e-02, 3.385e-01, 1.687e-01, -1.031e+00, -5.774e-02, 8.364e-03, 6.707e-03, 4.895e-02, 3.747e-02), r0);\n\tr0 = MulAdd(s1_1_1, M4(2.261e-01, -5.996e-01, 1.353e-01, 2.720e-02, -1.738e-02, 6.702e-02, 2.513e-02, 2.757e-01, -2.204e-03, 8.863e-02, 4.658e-02, -1.606e-01, 3.429e-01, 3.604e-01, -4.408e-02, -8.637e-01), r0);\n\tr0 = MulAdd(s1_1_2, M4(-5.780e-03, 3.479e-02, -1.777e-03, -6.527e-04, -3.946e-03, -2.386e-02, 3.971e-03, 7.918e-04, -8.640e-05, 3.242e-02, -1.883e-03, 1.259e-02, 1.303e-02, -1.050e-02, -2.165e-02, -2.813e-02), r0);\n\tr0 = MulAdd(s1_2_0, M4(-4.737e-03, 4.114e-03, -5.121e-03, -5.830e-04, 1.718e-03, -3.928e-04, -1.548e-01, -5.817e-02, -2.471e-02, 2.727e-03, 1.538e-01, 9.399e-02, -3.287e-03, -2.909e-03, -2.165e-02, 1.371e-03), r0);\n\tr0 = MulAdd(s1_2_1, M4(1.177e-03, 3.208e-02, 9.937e-02, 2.223e-02, 7.648e-03, 1.837e-02, -2.497e-02, -2.802e-02, -1.218e-02, -2.563e-03, -3.208e-03, 3.593e-02, 2.020e-02, -9.020e-03, 1.183e-01, 9.113e-02), r0);\n\tr0 = MulAdd(s1_2_2, M4(-1.707e-03, -3.909e-03, 6.098e-03, 2.484e-03, 5.783e-04, 9.003e-03, -6.119e-03, -1.253e-02, -6.749e-04, -8.294e-03, 1.991e-03, 1.878e-02, 9.696e-04, -1.977e-03, 4.883e-03, 1.341e-02), r0);\n\tstatic const MF3x3 RY = {0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081}, YR = {1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099};\n\tfloat2 opt = float2(GetOutputPt()), fpos = (float2(gxy) + 0.5) * opt;\n\tMF3 yuv;\n\tyuv = mul(RY, INPUT.SampleLevel(SL, fpos + float2(0.0, 0.0) * opt, 0).rgb);\n\tOUTPUT[gxy + int2(0, 0)] = MF4(mul(YR, MF3(saturate(yuv.r + r0.x), yuv.yz)), 1.0);\n\tyuv = mul(RY, INPUT.SampleLevel(SL, fpos + float2(1.0, 0.0) * opt, 0).rgb);\n\tOUTPUT[gxy + int2(1, 0)] = MF4(mul(YR, MF3(saturate(yuv.r + r0.y), yuv.yz)), 1.0);\n\tyuv = mul(RY, INPUT.SampleLevel(SL, fpos + float2(0.0, 1.0) * opt, 0).rgb);\n\tOUTPUT[gxy + int2(0, 1)] = MF4(mul(YR, MF3(saturate(yuv.r + r0.z), yuv.yz)), 1.0);\n\tyuv = mul(RY, INPUT.SampleLevel(SL, fpos + float2(1.0, 1.0) * opt, 0).rgb);\n\tOUTPUT[gxy + int2(1, 1)] = MF4(mul(YR, MF3(saturate(yuv.r + r0.w), yuv.yz)), 1.0);\n}\n"
  },
  {
    "path": "src/Effects/CuNNy2/CuNNy-veryfast-NVL.hlsl",
    "content": "// CuNNy veryfast - https://github.com/funnyplanter/CuNNy\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n// \n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// \n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n// \n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME CuNNy-0001\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState SP;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState SL;\n\n//!COMMON\n#define O(t, x, y) t.SampleLevel(SP, pos + float2(x, y) * pt, 0)\n#define V4 MF4\n#define M4 MF4x4\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T0;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D T3;\n\n//!PASS 1\n//!DESC in (1x8)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN INPUT\n//!OUT T0, T1\n\n#define L0(x, y) MF(dot(MF3(0.299, 0.587, 0.114), O(INPUT, x, y).rgb))\n\nvoid Pass1(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tMF s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;\n\tV4 r0 = 0.0, r1 = 0.0;\n\tr0 = V4(1.026e-03, -2.981e-03, 2.268e-03, -1.057e-03);\n\tr1 = V4(-1.665e-03, 3.286e-03, -3.161e-03, -9.035e-04);\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\tr0 = mad(s0_0_0, V4(4.998e-03, -1.996e-02, 2.062e-02, -1.826e-02), r0);\n\tr1 = mad(s0_0_0, V4(-5.265e-03, 2.075e-03, 2.429e-02, 3.332e-02), r1);\n\tr0 = mad(s0_0_1, V4(2.804e-02, 4.874e-02, 3.034e-02, 7.068e-03), r0);\n\tr1 = mad(s0_0_1, V4(2.430e-02, -1.450e-01, 1.032e-02, 4.446e-01), r1);\n\tr0 = mad(s0_0_2, V4(1.752e-02, -4.398e-02, -1.954e-02, 1.824e-02), r0);\n\tr1 = mad(s0_0_2, V4(-2.447e-02, 3.411e-02, -3.408e-02, -8.259e-02), r1);\n\tr0 = mad(s0_1_0, V4(3.185e-02, -3.662e-01, -1.870e-02, 8.200e-01), r0);\n\tr1 = mad(s0_1_0, V4(-7.897e-03, 1.151e-01, -2.607e-01, -3.053e-02), r1);\n\tr0 = mad(s0_1_1, V4(-9.682e-02, 4.676e-01, -1.874e-01, -8.066e-01), r0);\n\tr1 = mad(s0_1_1, V4(-8.105e-01, 4.792e-01, 8.066e-01, 9.627e-02), r1);\n\tr0 = mad(s0_1_2, V4(4.775e-01, -8.455e-02, 8.943e-02, -2.106e-02), r0);\n\tr1 = mad(s0_1_2, V4(8.912e-02, -9.258e-02, 3.846e-02, -7.281e-02), r1);\n\tr0 = mad(s0_2_0, V4(-1.763e-02, -2.789e-01, 4.132e-01, -2.679e-02), r0);\n\tr1 = mad(s0_2_0, V4(8.231e-03, 8.443e-02, -2.719e-01, 4.610e-04), r1);\n\tr0 = mad(s0_2_1, V4(3.664e-03, 2.998e-01, -6.781e-02, 2.461e-02), r0);\n\tr1 = mad(s0_2_1, V4(7.667e-01, -1.057e-02, -2.979e-01, 5.408e-02), r1);\n\tr0 = mad(s0_2_2, V4(-6.392e-02, -1.812e-02, 1.094e-02, 2.662e-03), r0);\n\tr1 = mad(s0_2_2, V4(-3.848e-02, 2.277e-02, -1.486e-02, -1.206e-02), r1);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT1[gxy] = r1;\n}\n\n//!PASS 2\n//!DESC conv1 (8x8)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T0, T1\n//!OUT T2, T3\n\n#define L0(x, y) V4(O(T0, x, y))\n#define L1(x, y) V4(O(T1, x, y))\n\nvoid Pass2(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0, r1 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(3.294e-01, 4.686e-02, -1.020e-01, -3.003e-01, -9.869e-02, 3.719e-02, -7.138e-03, 2.881e-01, 3.220e-01, -6.357e-02, -6.724e-02, 7.248e-02, -4.531e-02, 1.142e-02, -1.283e-02, 3.312e-03), r0);\n\tr1 = MulAdd(s0_0_0, M4(-1.897e-02, 1.714e-01, 7.384e-02, 5.059e-01, 1.216e-02, -7.572e-02, -1.294e-01, 1.965e-02, -2.641e-02, 3.440e-02, -3.206e-01, 7.578e-02, 4.822e-02, -5.309e-02, 4.980e-02, -2.297e-01), r1);\n\tr0 = MulAdd(s0_0_1, M4(-5.258e-02, -4.673e-02, -2.457e-01, 5.254e-01, -9.082e-01, -4.544e-01, -9.198e-02, 1.782e-01, -2.241e-01, -8.426e-02, -1.917e-01, 1.895e-01, 1.256e-01, 2.920e-01, -1.948e-01, 1.098e-02), r0);\n\tr1 = MulAdd(s0_0_1, M4(-1.061e-01, 3.819e-01, 9.685e-02, -5.909e+00, -8.986e-03, -5.059e-01, -6.348e-01, -4.566e-01, 1.974e-02, -3.641e-01, -6.473e-02, -7.168e-01, 8.116e-02, -9.474e-02, 6.230e-01, 1.415e-01), r1);\n\tr0 = MulAdd(s0_0_2, M4(8.010e-02, -4.801e-02, 6.959e-02, -1.714e-01, -1.210e-02, -3.453e-02, 7.624e-02, 1.421e-01, -8.770e-01, 2.378e-01, -8.130e-01, 5.840e-01, 2.632e-02, 1.018e-01, -1.675e-01, 2.058e-01), r0);\n\tr1 = MulAdd(s0_0_2, M4(1.740e-02, -2.677e-02, -6.515e-02, -1.401e+01, -4.665e-01, -4.795e-02, -1.572e-01, -2.678e+00, -5.329e-01, -4.122e-01, 2.206e-01, -1.176e+01, 9.385e-02, 1.746e-01, 1.694e-01, -2.664e+00), r1);\n\tr0 = MulAdd(s0_1_0, M4(-3.246e-02, 3.232e-01, -4.307e-01, 2.822e-01, 3.894e-03, -3.894e-02, 1.196e-01, -2.086e-01, 1.110e-01, -3.645e-03, 1.001e-02, -5.595e-02, -4.108e-02, 5.774e-02, -1.192e-02, -5.918e-02), r0);\n\tr1 = MulAdd(s0_1_0, M4(-1.642e-01, -1.149e+00, 2.587e-01, -7.493e-01, 3.742e-02, 2.881e-01, 1.076e-01, 3.382e-02, -7.062e-02, 6.909e-02, -8.023e-02, -3.361e-02, 6.265e-02, -4.848e-02, 1.150e-01, -5.995e-02), r1);\n\tr0 = MulAdd(s0_1_1, M4(2.838e-01, -5.586e-01, 6.230e-01, -4.002e-01, 3.255e-01, -1.077e-01, -5.773e-01, 1.763e-01, -2.401e-01, 1.249e-01, 3.205e-01, -7.300e-02, 6.839e-03, 3.467e-01, 7.362e-01, -7.519e-01), r0);\n\tr1 = MulAdd(s0_1_1, M4(-2.741e-01, 9.805e-01, -1.780e-01, 7.361e-01, -7.676e-01, 1.490e-01, 4.947e-01, 9.604e-02, -2.708e-01, 6.055e-01, -2.115e-01, 3.844e-01, 1.176e+00, 1.091e-01, -3.643e-01, -2.254e-01), r1);\n\tr0 = MulAdd(s0_1_2, M4(4.413e-02, 2.526e-02, 7.251e-02, 5.943e-02, 3.701e-01, -4.031e-02, -1.190e-01, -9.990e-02, -3.710e-02, 3.842e-02, -3.715e-02, -4.212e-01, 5.410e-01, 9.975e-03, 5.684e-01, 1.869e-01), r0);\n\tr1 = MulAdd(s0_1_2, M4(8.257e-02, 4.720e-02, 2.332e-02, -2.108e-01, 1.474e-02, 2.510e-01, 1.372e-01, 2.900e-01, 9.461e-03, 1.588e-01, 6.632e-02, 3.074e-01, -1.391e-01, 4.718e-01, -4.072e-02, -4.638e-01), r1);\n\tr0 = MulAdd(s0_2_0, M4(2.017e-02, -6.963e-02, -2.059e-01, 5.522e-02, 3.876e-03, -2.700e-02, -7.056e-02, -8.622e-02, -8.871e-02, -2.346e-02, 3.707e-02, -5.105e-02, -5.580e-02, 1.536e-02, -6.917e-02, 1.723e-01), r0);\n\tr1 = MulAdd(s0_2_0, M4(1.041e-01, -3.692e-01, -1.067e-01, -4.372e-01, 7.756e-02, -7.766e-02, -2.291e-02, 7.570e-02, 5.341e-02, -2.788e-02, -8.032e-02, 3.647e-02, 4.171e-02, -1.244e-01, -5.408e-02, 1.956e-02), r1);\n\tr0 = MulAdd(s0_2_1, M4(2.526e-01, -8.803e-02, -3.521e-02, -1.952e-01, 9.958e-02, 1.918e-02, 9.500e-02, -1.255e-01, 9.954e-02, 8.401e-02, 1.860e-01, -7.880e-02, -1.647e-01, -8.276e-04, 5.116e-02, 2.928e-01), r0);\n\tr1 = MulAdd(s0_2_1, M4(5.802e-01, 1.341e-01, 1.434e-02, -1.704e-01, 1.346e-01, 1.339e-01, 9.508e-02, -3.802e-02, -3.687e-02, 2.012e-01, 2.227e-01, -5.216e-02, 2.646e-01, -3.975e-01, -2.920e-01, -1.163e-01), r1);\n\tr0 = MulAdd(s0_2_2, M4(5.494e-04, 1.475e-03, 5.538e-03, 7.359e-02, 1.837e-01, 6.217e-02, 1.074e-01, 5.277e-03, 1.910e-02, 5.994e-02, 5.796e-02, -1.437e-01, -5.969e-02, 1.504e-02, 5.454e-03, 1.468e-01), r0);\n\tr1 = MulAdd(s0_2_2, M4(-6.347e-02, -6.738e-02, -2.679e-02, 6.836e-03, 2.155e-01, 2.283e-01, -1.834e-02, -2.290e-05, 1.763e-01, -2.847e-02, 3.850e-02, -1.163e-01, -7.949e-01, -2.105e-01, -2.335e-02, -8.468e-02), r1);\n\tr0 = MulAdd(s1_0_0, M4(-5.303e-02, 6.088e-02, 3.405e-02, -2.250e-01, -1.050e-01, -1.489e-02, 1.661e-01, 2.608e-01, 6.371e-02, -6.136e-02, 3.083e-02, -2.826e-01, -1.023e-01, -1.921e-02, 9.302e-02, 1.577e-02), r0);\n\tr1 = MulAdd(s1_0_0, M4(1.050e-01, -8.178e-02, 5.020e-01, -1.824e-01, -1.509e-01, -8.470e-02, -2.997e-01, -2.193e-01, -3.256e-02, -5.481e-02, 7.575e-02, -6.707e-02, -4.388e-02, -1.462e-02, -5.667e-02, 8.515e-02), r1);\n\tr0 = MulAdd(s1_0_1, M4(1.863e+00, 8.300e-01, 1.364e-01, -3.951e-01, 5.022e-01, 2.851e-02, 6.264e-01, -1.539e-01, 7.931e-01, 2.568e-01, 4.988e-01, -4.003e-01, 1.147e-01, 5.882e-02, 1.213e-01, 4.826e-02), r0);\n\tr1 = MulAdd(s1_0_1, M4(4.619e-01, 5.371e-01, 3.185e-01, 8.274e-02, 1.200e-01, -1.226e-01, -2.706e-01, -8.163e-01, 1.243e-01, 5.196e-01, 1.733e-01, 2.327e-01, 3.773e-03, -8.958e-02, -6.588e-02, -5.215e-01), r1);\n\tr0 = MulAdd(s1_0_2, M4(-5.725e-02, 9.622e-02, -1.639e-01, 4.223e-01, -7.787e-02, 1.686e-01, -1.608e-01, 2.978e-01, 4.661e-01, 1.002e-01, 2.627e-01, -1.418e-01, 8.262e-02, 5.574e-02, 3.143e-02, 2.579e-02), r0);\n\tr1 = MulAdd(s1_0_2, M4(-2.046e-01, 9.959e-02, 2.075e-01, -2.096e+00, -4.847e-01, -6.149e-01, 4.701e-02, -5.941e+00, 1.440e-01, 2.179e-01, 1.561e-01, -3.578e+00, -6.861e-02, -1.618e-01, 9.439e-03, -1.287e+01), r1);\n\tr0 = MulAdd(s1_1_0, M4(-9.579e-02, 6.189e-02, -1.159e-01, 2.150e-01, -4.549e-01, -2.409e-01, 3.925e-01, -4.460e-01, 1.360e-01, -4.751e-04, -3.381e-02, 2.064e-01, -1.230e-01, -4.066e-01, 5.518e-02, -5.011e-01), r0);\n\tr1 = MulAdd(s1_1_0, M4(1.352e-01, -2.319e-01, -1.343e-01, -3.817e-02, -3.801e-02, 4.277e-01, 4.445e-01, 4.374e-01, -2.427e-01, -1.002e-01, -1.179e-01, 1.841e-02, 1.593e-01, 4.485e-01, -2.762e-01, 5.878e-01), r1);\n\tr0 = MulAdd(s1_1_1, M4(7.918e-02, 3.248e-02, 5.526e-01, 3.818e-01, -5.114e-01, 3.427e-01, -5.737e-01, 4.692e-01, -1.458e-01, 1.323e-01, -5.878e-02, -1.936e-01, 8.602e-02, -1.909e-01, -2.575e-02, -3.231e-01), r0);\n\tr1 = MulAdd(s1_1_1, M4(1.096e-01, 8.324e-02, -1.157e+00, -1.651e-01, 1.479e-02, 3.467e-01, 1.509e-01, 8.535e-01, 2.386e-02, -7.060e-01, -1.040e-02, 1.156e-01, 4.657e-01, 8.064e-01, 3.275e-01, 5.316e-01), r1);\n\tr0 = MulAdd(s1_1_2, M4(-2.163e-01, 6.235e-03, -8.975e-02, 2.083e-01, 5.216e-01, 1.365e-01, 1.431e-01, -4.618e-02, 1.459e-01, 1.150e-01, -4.137e-02, 9.075e-03, -4.688e-01, -1.238e-01, -1.970e-01, -3.330e-01), r0);\n\tr1 = MulAdd(s1_1_2, M4(-7.615e-01, -1.597e-01, -4.504e-02, -3.390e-01, 1.909e-01, 2.195e-01, -5.178e-02, -6.446e-01, 3.213e-01, -3.822e-02, 9.009e-02, 1.444e-01, 6.707e-01, 2.809e-01, -1.399e-02, 6.922e-01), r1);\n\tr0 = MulAdd(s1_2_0, M4(-7.206e-02, -1.223e-02, -3.867e-02, 9.155e-02, 4.327e-01, 1.158e-01, -2.036e-01, -1.259e-01, 6.557e-02, -1.204e-03, 5.246e-02, -6.929e-02, 1.062e-01, -4.244e-02, -3.571e-01, 5.444e-01), r0);\n\tr1 = MulAdd(s1_2_0, M4(-1.416e-02, -6.707e-02, -1.206e-01, 2.679e-02, -3.135e-01, -8.026e-02, 3.923e-01, -2.604e-01, -1.131e-01, 5.136e-02, 6.091e-02, -6.370e-02, -2.769e-01, -6.045e-01, 2.380e-01, -1.016e-01), r1);\n\tr0 = MulAdd(s1_2_1, M4(-5.873e-02, -7.936e-02, -7.740e-02, 9.037e-02, 1.292e-02, -2.422e-01, -2.022e-01, -5.898e-01, -2.129e-02, 6.206e-02, 1.817e-02, -7.300e-02, -1.877e-02, 4.453e-01, 4.070e-01, 7.967e-01), r0);\n\tr1 = MulAdd(s1_2_1, M4(-1.115e-01, -3.104e-02, 2.083e-02, -9.055e-02, 4.538e-01, 1.284e-01, -2.979e-01, 1.177e-01, 1.194e-01, -3.457e-02, 5.920e-02, 1.283e-01, -1.695e-01, -3.700e-01, -1.649e-01, 2.046e-01), r1);\n\tr0 = MulAdd(s1_2_2, M4(-3.303e-02, 2.488e-04, -4.218e-02, 7.275e-03, -3.436e-02, -5.248e-02, 1.132e-01, 8.247e-02, -2.631e-02, 1.910e-02, 5.824e-02, 2.078e-02, -2.627e-01, 9.032e-02, 5.265e-02, 7.366e-02), r0);\n\tr1 = MulAdd(s1_2_2, M4(1.975e-02, -6.391e-02, -2.874e-02, -5.150e-02, 2.261e-01, -2.319e-01, -9.771e-02, 4.567e-01, 3.352e-04, -4.777e-02, -2.349e-02, -1.224e-03, -4.864e-01, -5.346e-01, 3.012e-02, -3.242e-01), r1);\n\tr0 = max(r0, 0.0);\n\tT2[gxy] = r0;\n\tr1 = max(r1, 0.0);\n\tT3[gxy] = r1;\n}\n\n//!PASS 3\n//!DESC conv2 (8x4)\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n//!IN T2, T3\n//!OUT T0\n\n#define L0(x, y) V4(O(T2, x, y))\n#define L1(x, y) V4(O(T3, x, y))\n\nvoid Pass3(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = Rmp8x8(tid.x) + blockStart;\n\tuint2 sz = GetInputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = (gxy + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2, s1_0_0, s1_0_1, s1_0_2, s1_1_0, s1_1_1, s1_1_2, s1_2_0, s1_2_1, s1_2_2;\n\tV4 r0 = 0.0;\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\ts1_0_0 = L1(-1.0, -1.0); s1_0_1 = L1(0.0, -1.0); s1_0_2 = L1(1.0, -1.0);\n\ts1_1_0 = L1(-1.0, 0.0); s1_1_1 = L1(0.0, 0.0); s1_1_2 = L1(1.0, 0.0);\n\ts1_2_0 = L1(-1.0, 1.0); s1_2_1 = L1(0.0, 1.0); s1_2_2 = L1(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-8.148e-03, 2.568e-02, 4.651e-02, -7.485e-02, 1.790e-02, -8.190e-02, -1.489e-01, 1.323e-01, 3.400e-02, 6.812e-02, 3.208e-02, -2.434e-02, 6.154e-02, 8.815e-02, 6.566e-02, 5.507e-02), r0);\n\tr0 = MulAdd(s0_0_1, M4(3.119e-02, -4.280e-03, -6.519e-03, 1.538e-01, -2.105e-01, -1.431e-01, -1.406e-01, -4.139e-01, 8.038e-02, -1.392e-01, 9.856e-03, -9.555e-02, 1.765e-01, 2.941e-01, 9.466e-02, 3.756e-01), r0);\n\tr0 = MulAdd(s0_0_2, M4(-1.209e-01, 4.339e-02, -7.104e-02, -6.860e-02, 4.313e-02, -1.887e-01, 1.963e-02, -4.690e-02, -6.567e-02, -1.265e-01, -4.360e-02, -1.146e-01, -5.670e-02, 1.087e-01, -4.472e-02, 1.739e-02), r0);\n\tr0 = MulAdd(s0_1_0, M4(-4.968e-02, -1.421e-01, 3.657e-02, -2.672e-01, -7.897e-04, -3.623e-01, 3.450e-02, -2.245e-01, -4.632e-03, -1.128e-01, -1.792e-01, 5.298e-01, 1.125e-01, -1.141e-01, -8.822e-02, 6.274e-02), r0);\n\tr0 = MulAdd(s0_1_1, M4(-1.880e-01, -3.701e-01, -1.155e-01, 3.115e-01, 3.475e-01, 8.071e-01, 7.021e-01, -3.410e-01, -2.617e-01, 1.043e+00, -3.493e-01, -2.318e-01, -4.900e-01, -5.969e-01, -1.215e-01, -3.721e-01), r0);\n\tr0 = MulAdd(s0_1_2, M4(3.329e-01, 1.936e-01, 1.228e-01, -1.891e-02, -3.213e-01, -4.152e-01, -1.440e-01, 4.134e-02, 2.842e-01, -5.296e-02, 3.641e-01, 5.137e-01, 1.812e-01, 8.146e-02, 1.061e-01, 3.798e-02), r0);\n\tr0 = MulAdd(s0_2_0, M4(-6.376e-03, 2.285e-01, 5.671e-02, -8.081e-02, -9.302e-02, -1.174e-01, -1.714e-01, 2.654e-02, -1.334e-02, 1.460e-01, 5.519e-02, -1.432e-01, 3.235e-02, 5.162e-02, 3.121e-02, 6.723e-03), r0);\n\tr0 = MulAdd(s0_2_1, M4(1.175e-01, -3.771e-02, 5.432e-02, 3.030e-01, 1.248e-01, 3.087e-02, -5.464e-02, 9.374e-02, 1.291e-01, 2.582e-02, 2.026e-01, 3.218e-02, -3.019e-02, -6.113e-02, 1.022e-03, -1.526e-02), r0);\n\tr0 = MulAdd(s0_2_2, M4(-4.480e-02, 4.266e-02, -1.878e-02, -7.446e-02, 4.263e-02, -1.403e-01, -1.898e-01, -1.598e-01, -4.898e-02, -1.334e-01, -4.467e-03, 2.087e-02, 6.375e-03, 8.764e-02, 7.014e-02, 3.828e-02), r0);\n\tr0 = MulAdd(s1_0_0, M4(-1.823e-02, -5.078e-02, -4.285e-02, 4.404e-02, -9.971e-03, -3.043e-02, -1.849e-02, 1.066e-01, 1.313e-02, 2.819e-02, 6.397e-02, -4.005e-02, -2.264e-02, -4.141e-02, -6.211e-02, 2.856e-02), r0);\n\tr0 = MulAdd(s1_0_1, M4(-1.643e-01, -6.951e-02, -5.324e-02, -1.595e-01, 4.259e-02, 1.606e-01, 2.015e-02, -3.517e-04, 7.591e-02, 1.665e-01, 1.284e-01, 1.572e-01, -8.479e-02, -9.076e-02, -3.720e-02, -7.167e-02), r0);\n\tr0 = MulAdd(s1_0_2, M4(1.875e-01, 4.330e-02, 7.509e-02, 9.155e-02, 1.067e-01, -9.226e-03, 6.569e-02, 1.057e-01, 9.918e-02, 2.543e-03, 6.361e-02, 4.849e-02, -3.967e-02, 9.021e-02, -2.580e-02, -8.976e-03), r0);\n\tr0 = MulAdd(s1_1_0, M4(7.936e-03, 4.667e-02, 1.710e-01, -5.760e-01, 5.680e-03, 6.270e-01, 3.174e-01, 4.808e-02, 7.891e-03, -5.142e-03, 1.486e-02, -1.813e-02, -2.654e-02, -6.394e-01, -8.960e-02, -4.404e-01), r0);\n\tr0 = MulAdd(s1_1_1, M4(-9.929e-04, -5.820e-01, 1.195e-01, 4.442e-01, 9.473e-01, -7.623e-01, 3.154e-01, -6.255e-01, 4.396e-04, 7.951e-01, -1.909e-01, 1.098e+00, -2.184e-02, -4.709e-01, -1.576e-01, -5.169e-01), r0);\n\tr0 = MulAdd(s1_1_2, M4(3.076e-01, 2.549e-01, 2.183e-01, 2.803e-01, -6.310e-01, -3.174e-01, -4.287e-01, -4.186e-01, 1.036e-02, 1.632e-01, -9.137e-04, -2.596e-02, -2.581e-02, -9.876e-03, 6.714e-02, 3.123e-02), r0);\n\tr0 = MulAdd(s1_2_0, M4(7.675e-03, 5.052e-03, -3.337e-02, 9.983e-02, 1.332e-02, 1.577e-01, 1.304e-01, 1.257e-01, -6.344e-03, 1.044e-01, 5.069e-02, 2.343e-02, 8.552e-02, -9.318e-01, -1.662e-02, -5.734e-01), r0);\n\tr0 = MulAdd(s1_2_1, M4(-3.231e-02, 9.578e-02, -6.091e-02, -1.283e-01, 8.889e-02, -7.374e-02, 1.334e-01, 2.598e-02, 2.393e-01, 8.617e-02, 3.545e-01, 9.125e-02, 3.194e-01, 6.674e-01, -2.021e-02, -1.412e-01), r0);\n\tr0 = MulAdd(s1_2_2, M4(9.790e-02, 1.380e-02, 4.626e-02, 9.249e-02, 8.255e-03, 6.021e-02, 2.871e-04, 1.201e-01, 1.724e-01, 1.096e-01, 1.130e-01, 1.430e-01, -4.326e-01, -3.163e-01, -1.880e-01, -1.765e-01), r0);\n\tr0 = max(r0, 0.0);\n\tT0[gxy] = r0;\n}\n\n//!PASS 4\n//!DESC out-shuffle (4x4)\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n//!IN INPUT, T0\n//!OUT OUTPUT\n\n#define L0(x, y) V4(O(T0, x, y))\n\nvoid Pass4(uint2 blockStart, uint3 tid) {\n\tfloat2 pt = float2(GetInputPt());\n\tuint2 gxy = (Rmp8x8(tid.x) << 1) + blockStart;\n\tuint2 sz = GetOutputSize();\n\tif (gxy.x >= sz.x || gxy.y >= sz.y)\n\t\treturn;\n\tfloat2 pos = ((gxy >> 1) + 0.5) * pt;\n\tV4 s0_0_0, s0_0_1, s0_0_2, s0_1_0, s0_1_1, s0_1_2, s0_2_0, s0_2_1, s0_2_2;\n\tV4 r0 = 0.0;\n\tr0 = V4(1.026e-04, 2.907e-04, -2.278e-04, -8.361e-05);\n\ts0_0_0 = L0(-1.0, -1.0); s0_0_1 = L0(0.0, -1.0); s0_0_2 = L0(1.0, -1.0);\n\ts0_1_0 = L0(-1.0, 0.0); s0_1_1 = L0(0.0, 0.0); s0_1_2 = L0(1.0, 0.0);\n\ts0_2_0 = L0(-1.0, 1.0); s0_2_1 = L0(0.0, 1.0); s0_2_2 = L0(1.0, 1.0);\n\tr0 = MulAdd(s0_0_0, M4(-2.078e-02, 2.658e-02, 5.912e-03, -8.754e-04, 3.267e-02, 6.010e-03, -8.934e-03, -7.844e-03, -3.699e-02, -2.191e-02, 1.024e-02, 1.211e-02, 2.276e-03, -2.706e-02, -1.511e-02, -6.482e-03), r0);\n\tr0 = MulAdd(s0_0_1, M4(4.173e-03, -2.643e-02, 4.702e-03, 8.715e-03, 1.479e-02, -1.440e-01, 3.235e-02, 3.772e-02, 1.870e-01, 1.372e-01, -6.517e-02, -4.455e-02, -1.782e-01, 9.614e-02, 5.090e-02, 1.126e-02), r0);\n\tr0 = MulAdd(s0_0_2, M4(9.667e-03, -4.513e-04, 6.245e-03, 1.301e-02, -5.169e-03, 1.161e-02, -1.311e-02, -1.338e-02, -2.069e-02, 2.227e-02, -7.714e-03, -3.542e-02, 1.850e-02, -5.652e-02, 1.112e-02, 4.749e-02), r0);\n\tr0 = MulAdd(s0_1_0, M4(-4.541e-01, 4.950e-02, -2.319e-01, 1.072e-01, 5.148e-02, -1.947e-02, 6.616e-02, 1.984e-02, -7.690e-02, 1.773e-02, -1.006e-01, -6.559e-02, 2.260e-03, -8.378e-03, -3.693e-02, -7.541e-02), r0);\n\tr0 = MulAdd(s0_1_1, M4(-8.618e-02, -6.200e-01, -3.466e-02, -3.779e-01, 5.723e-01, -2.387e-02, 6.342e-02, -4.658e-01, 1.304e-01, 1.130e-01, 7.051e-01, 5.566e-01, 2.580e-02, 3.877e-01, -5.566e-01, 1.724e-01), r0);\n\tr0 = MulAdd(s0_1_2, M4(-9.982e-03, 6.074e-03, 5.088e-03, -8.145e-03, -4.550e-02, 9.498e-02, -4.190e-02, -2.528e-02, 1.080e-02, -6.524e-02, -2.383e-02, 1.350e-01, -3.786e-03, 1.538e-01, 2.104e-02, -1.411e-01), r0);\n\tr0 = MulAdd(s0_2_0, M4(3.114e-02, -2.459e-02, -6.471e-02, 5.313e-02, -9.421e-03, 5.377e-03, 1.764e-02, 4.711e-03, 2.045e-02, 1.029e-02, -2.045e-02, 1.090e-02, 2.616e-02, -3.509e-03, 1.584e-02, 2.190e-02), r0);\n\tr0 = MulAdd(s0_2_1, M4(1.764e-02, 7.804e-02, -4.490e-02, -1.519e-01, -7.934e-02, 5.097e-03, 5.826e-02, 6.307e-03, -1.490e-02, -3.430e-02, 4.749e-02, -1.289e-02, -1.011e-02, -2.436e-02, 3.430e-02, 2.518e-02), r0);\n\tr0 = MulAdd(s0_2_2, M4(-3.636e-03, -1.442e-02, -1.291e-02, -2.985e-02, 1.788e-02, 5.287e-03, -1.129e-02, 1.125e-02, 1.328e-02, 3.210e-02, 1.753e-03, 1.867e-02, -4.918e-03, -3.528e-02, 2.455e-03, 5.595e-02), r0);\n\tstatic const MF3x3 RY = {0.299, 0.587, 0.114, -0.169, -0.331, 0.5, 0.5, -0.419, -0.081}, YR = {1, -0.00093, 1.401687, 1, -0.3437, -0.71417, 1, 1.77216, 0.00099};\n\tfloat2 opt = float2(GetOutputPt()), fpos = (float2(gxy) + 0.5) * opt;\n\tMF3 yuv;\n\tyuv = mul(RY, INPUT.SampleLevel(SL, fpos + float2(0.0, 0.0) * opt, 0).rgb);\n\tOUTPUT[gxy + int2(0, 0)] = MF4(mul(YR, MF3(saturate(yuv.r + r0.x), yuv.yz)), 1.0);\n\tyuv = mul(RY, INPUT.SampleLevel(SL, fpos + float2(1.0, 0.0) * opt, 0).rgb);\n\tOUTPUT[gxy + int2(1, 0)] = MF4(mul(YR, MF3(saturate(yuv.r + r0.y), yuv.yz)), 1.0);\n\tyuv = mul(RY, INPUT.SampleLevel(SL, fpos + float2(0.0, 1.0) * opt, 0).rgb);\n\tOUTPUT[gxy + int2(0, 1)] = MF4(mul(YR, MF3(saturate(yuv.r + r0.z), yuv.yz)), 1.0);\n\tyuv = mul(RY, INPUT.SampleLevel(SL, fpos + float2(1.0, 1.0) * opt, 0).rgb);\n\tOUTPUT[gxy + int2(1, 1)] = MF4(mul(YR, MF3(saturate(yuv.r + r0.w), yuv.yz)), 1.0);\n}\n"
  },
  {
    "path": "src/Effects/Deband.hlsl",
    "content": "// Deband\n// Port from https://github.com/haasn/gentoo-conf/blob/xor/home/nand/.mpv/shaders/deband.glsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!PARAMETER\n//!LABEL Threshold\n//!DEFAULT 64\n//!MIN 0\n//!MAX 512\n//!STEP 4\n// The threshold of difference below which a pixel is considered to be part of\n// a gradient. Higher = more debanding, but setting it too high diminishes image\n// details.\nfloat threshold;\n\n//!PARAMETER\n//!LABEL Range\n//!DEFAULT 8\n//!MIN 0\n//!MAX 16\n//!STEP 0.1\n// The range (in source pixels) at which to sample for neighbours. Higher values\n// will find more gradients, but lower values will deband more aggressively.\nfloat range;\n\n//!PARAMETER\n//!LABEL Iterations\n//!DEFAULT 4\n//!MIN 1\n//!MAX 10\n//!STEP 1\n// The number of debanding iterations to perform. Each iteration samples from\n// random positions, so increasing the number of iterations is likely to\n// increase the debanding quality. Conversely, it slows the shader down.\n// (Each iteration will use a multiple of the configured range, and a\n// successively lower THRESHOLD - so setting it much higher has little effect)\nint iterations;\n\n//!PARAMETER\n//!LABEL Grain\n//!DEFAULT 48\n//!MIN 0\n//!MAX 256\n//!STEP 4\n// (Optional) Add some extra noise to the image. This significantly helps cover\n// up remaining banding and blocking artifacts, at comparatively little visual\n// quality. Higher = more grain. Setting it to 0 disables the effect.\nfloat grain;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam1;\n\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\n\n// Wide usage friendly PRNG, shamelessly stolen from a GLSL tricks forum post\nfloat mod289(float x)  { return x - floor(x / 289.0) * 289.0; }\nfloat permute(float x) { return mod289((34.0*x + 1.0) * x); }\nfloat rand(float x)    { return frac(x / 41.0); }\n\n// Helper: Calculate a stochastic approximation of the avg color around a pixel\nfloat3 average(float2 pos, float r, inout float h)\n{\n    const float2 pt = GetInputPt();\n    // Compute a random rangle and distance\n    float dist = rand(h) * r;         h = permute(h);\n    float dir  = rand(h) * 6.2831853; h = permute(h);\n\n    float2 o = float2(cos(dir), sin(dir)) * pt * dist;\n\n    // Sample at quarter-turn intervals around the source pixel\n    float3 ref[4];\n    ref[0] = INPUT.SampleLevel(sam, pos + float2( o.x,  o.y), 0).rgb;\n    ref[1] = INPUT.SampleLevel(sam, pos + float2(-o.y,  o.x), 0).rgb;\n    ref[2] = INPUT.SampleLevel(sam, pos + float2(-o.x, -o.y), 0).rgb;\n    ref[3] = INPUT.SampleLevel(sam, pos + float2( o.y, -o.x), 0).rgb;\n\n    // Return the (normalized) average\n    return (ref[0] + ref[1] + ref[2] + ref[3])/4.0;\n}\n\nfloat4 Pass1(float2 pos)\n{\n    // Initialize the PRNG by hashing the position + a random uniform\n    float3 m = float3(pos, 4.6);\n    float h = permute(permute(permute(m.x)+m.y)+m.z);\n\n    // Sample the source pixel\n    float3 col = INPUT.SampleLevel(sam1, pos, 0).rgb;\n\n#ifdef MP_INLINE_PARAMS\n    [unroll]\n#endif\n    for (int i = 1; i <= iterations; i++) {\n        // Use the average instead if the difference is below the threshold\n        float3 avg = average(pos, i*range, h);\n        float3 diff = abs(col - avg);\n        float3 thres = threshold / (i * 16384.0);\n        col = lerp(avg, col, step(thres, diff));\n    }\n\n    // Add some random noise to the output\n    float3 noise;\n    noise.x = rand(h); h = permute(h);\n    noise.y = rand(h); h = permute(h);\n    noise.z = rand(h); h = permute(h);\n    col += (grain/8192.0) * (noise - 0.5);\n\n    return float4(col, 1.0);\n}\n"
  },
  {
    "path": "src/Effects/Effects.vcxproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup Label=\"Globals\">\n    <Keyword>Win32Proj</Keyword>\n    <ProjectGuid>{62503530-b84b-4cc2-80b6-3f89618172b7}</ProjectGuid>\n    <WindowsTargetPlatformVersion>10.0.26100.0</WindowsTargetPlatformVersion>\n    <IntDir>$(SolutionDir)\\obj\\$(Platform)\\$(Configuration)\\$(MSBuildProjectName)\\</IntDir>\n    <OutDir>$(SolutionDir)\\bin\\$(Platform)\\$(Configuration)\\</OutDir>\n  </PropertyGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.Default.props\" />\n  <Import Project=\"..\\Common.Pre.props\" />\n  <PropertyGroup Label=\"Configuration\">\n    <ConfigurationType>Utility</ConfigurationType>\n  </PropertyGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.props\" />\n  <ImportGroup Label=\"PropertySheets\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <ItemDefinitionGroup>\n    <CopyFileToFolders>\n      <DestinationFolders>$(OutDir)\\effects</DestinationFolders>\n      <DestinationFileName>%(RelativeDir)%(Filename)%(Extension)</DestinationFileName>\n    </CopyFileToFolders>\n  </ItemDefinitionGroup>\n  <ItemGroup>\n    <CopyFileToFolders Include=\"ACNet.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Jinc.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Lanczos.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SSimDownscaler.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Bicubic.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"ImageAdjustment.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SMAA\\SMAA.hlsli\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SMAA\\SMAA_High.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SMAA\\SMAA_Low.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SMAA\\SMAA_Medium.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SMAA\\SMAA_Ultra.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FSR\\FSR_EASU.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FSR\\FSR_RCAS.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SMAA\\AreaTex.dds\" />\n    <CopyFileToFolders Include=\"SMAA\\SearchTex.dds\" />\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_3D_AA_Upscale_US.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_3D_Upscale_US.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Denoise_Bilateral_Mean.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Denoise_Bilateral_Median.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Denoise_Bilateral_Mode.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_L.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_M.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_Soft_UL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_Soft_VL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_Soft_L.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_Soft_M.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_VL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_UL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_S.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_Soft_S.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Thin_HQ.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_Denoise_L.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_Denoise_S.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_Denoise_UL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_Denoise_VL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_GAN_x2_S.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_L.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_S.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_UL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_VL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CRT\\CRT_Easymode.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CRT\\CRT_Geom.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CRT\\CRT_Hyllian.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CRT\\CRT_Lottes.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CRT\\GTU_v050.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"xBRZ\\xBRZ_2x.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"xBRZ\\xBRZ_3x.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"xBRZ\\xBRZ_4x.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"xBRZ\\xBRZ_5x.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"xBRZ\\xBRZ_6x.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"xBRZ\\xBRZ_Freescale.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FXAA\\FXAA.hlsli\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FXAA\\FXAA_High.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FXAA\\FXAA_Medium.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FXAA\\FXAA_Ultra.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\prescalers.hlsli\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_3x_R2.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_3x_R2_RGB.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_3x_R3.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_3x_R3_RGB.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_3x_R4.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_3x_R4_RGB.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Lite_AR_R2.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Lite_AR_R3.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Lite_AR_R4.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Lite_R2.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Lite_R3.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Lite_R4.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_R2.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_R2_RGB.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_R3.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_R3_RGB.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_R4.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_R4_RGB.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_AR_R2.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_AR_R2_RGB.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_AR_R3.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_AR_R3_RGB.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_R2.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_R2_RGB.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_R3.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_R3_RGB.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_3x_lut2_f16.dds\" />\n    <CopyFileToFolders Include=\"RAVU\\ravu_3x_lut3_f16.dds\" />\n    <CopyFileToFolders Include=\"RAVU\\ravu_3x_lut4_f16.dds\" />\n    <CopyFileToFolders Include=\"RAVU\\ravu_lite_lut2_f16.dds\" />\n    <CopyFileToFolders Include=\"RAVU\\ravu_lite_lut3_f16.dds\" />\n    <CopyFileToFolders Include=\"RAVU\\ravu_lite_lut4_f16.dds\" />\n    <CopyFileToFolders Include=\"RAVU\\ravu_lut2_f16.dds\" />\n    <CopyFileToFolders Include=\"RAVU\\ravu_lut3_f16.dds\" />\n    <CopyFileToFolders Include=\"RAVU\\ravu_lut4_f16.dds\" />\n    <CopyFileToFolders Include=\"RAVU\\ravu_zoom_lut2_ar_f16.dds\" />\n    <CopyFileToFolders Include=\"RAVU\\ravu_zoom_lut2_f16.dds\" />\n    <CopyFileToFolders Include=\"RAVU\\ravu_zoom_lut3_ar_f16.dds\" />\n    <CopyFileToFolders Include=\"RAVU\\ravu_zoom_lut3_f16.dds\" />\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns128_win8x4.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns128_win8x6.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns16_win8x4.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns16_win8x6.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns256_win8x4.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns256_win8x6.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns32_win8x4.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns32_win8x6.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns64_win8x4.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns64_win8x6.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\prescalers.hlsli\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NIS\\NIS.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NIS\\NVSharpen.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NIS\\Coef_Scale.dds\" />\n    <CopyFileToFolders Include=\"NIS\\Coef_USM.dds\" />\n    <CopyFileToFolders Include=\"CAS\\CAS.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CAS\\CAS_Scaling.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FSRCNNX\\FSRCNNX.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FSRCNNX\\FSRCNNX_LineArt.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Sharpen\\AdaptiveSharpen.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Sharpen\\FineSharp.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Sharpen\\LCAS.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Sharpen\\LumaSharpen.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Pixel Art\\MMPX.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Pixel Art\\Pixellate.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Pixel Art\\SharpBilinear.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Deband.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Bilinear.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Nearest.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_GAN_x3_L.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_GAN_x2_M.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-2x4C-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-2x4C-NVL-DN.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-3x4C-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-3x4C-NVL-DN.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-4x4C-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-4x4C-NVL-DN.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-4x8C-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-4x8C-NVL-DN.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-4x16C-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-4x16C-NVL-DN.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-6x8C-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-6x8C-NVL-DN.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-8x4C-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-8x4C-NVL-DN.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-8x8C-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-8x8C-NVL-DN.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-8x16C-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-8x16C-NVL-DN.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-16x16C-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-16x16C-NVL-DN.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NIS\\NIS_Scaler.hlsli\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <None Include=\"StubDefs.hlsli\" />\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-3x12-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-4x12-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-4x16-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-4x24-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-4x32-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-8x32-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-fast-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-faster-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-veryfast-NVL.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SGSR.hlsl\">\n      <FileType>Document</FileType>\n    </CopyFileToFolders>\n  </ItemGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.targets\" />\n</Project>"
  },
  {
    "path": "src/Effects/Effects.vcxproj.filters",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemGroup>\n    <CopyFileToFolders Include=\"ACNet.hlsl\" />\n    <CopyFileToFolders Include=\"Jinc.hlsl\" />\n    <CopyFileToFolders Include=\"Lanczos.hlsl\" />\n    <CopyFileToFolders Include=\"SSimDownscaler.hlsl\" />\n    <CopyFileToFolders Include=\"ImageAdjustment.hlsl\" />\n    <CopyFileToFolders Include=\"SMAA\\SMAA.hlsli\">\n      <Filter>SMAA</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SMAA\\SMAA_High.hlsl\">\n      <Filter>SMAA</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SMAA\\SMAA_Low.hlsl\">\n      <Filter>SMAA</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SMAA\\SMAA_Medium.hlsl\">\n      <Filter>SMAA</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SMAA\\SMAA_Ultra.hlsl\">\n      <Filter>SMAA</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FSR\\FSR_EASU.hlsl\">\n      <Filter>FSR</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FSR\\FSR_RCAS.hlsl\">\n      <Filter>FSR</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SMAA\\AreaTex.dds\">\n      <Filter>SMAA</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SMAA\\SearchTex.dds\">\n      <Filter>SMAA</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_3D_AA_Upscale_US.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_3D_Upscale_US.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Denoise_Bilateral_Mean.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Denoise_Bilateral_Mode.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Denoise_Bilateral_Median.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_L.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_M.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_Soft_UL.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_Soft_VL.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_Soft_L.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_Soft_M.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_VL.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_UL.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_S.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Restore_Soft_S.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Thin_HQ.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_Denoise_L.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_Denoise_S.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_Denoise_UL.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_Denoise_VL.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_GAN_x2_S.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_L.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_S.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_UL.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_VL.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CRT\\CRT_Easymode.hlsl\">\n      <Filter>CRT</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CRT\\CRT_Geom.hlsl\">\n      <Filter>CRT</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CRT\\CRT_Hyllian.hlsl\">\n      <Filter>CRT</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CRT\\CRT_Lottes.hlsl\">\n      <Filter>CRT</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CRT\\GTU_v050.hlsl\">\n      <Filter>CRT</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"xBRZ\\xBRZ_2x.hlsl\">\n      <Filter>xBRZ</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"xBRZ\\xBRZ_3x.hlsl\">\n      <Filter>xBRZ</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"xBRZ\\xBRZ_4x.hlsl\">\n      <Filter>xBRZ</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"xBRZ\\xBRZ_5x.hlsl\">\n      <Filter>xBRZ</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"xBRZ\\xBRZ_6x.hlsl\">\n      <Filter>xBRZ</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"xBRZ\\xBRZ_Freescale.hlsl\">\n      <Filter>xBRZ</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FXAA\\FXAA_High.hlsl\">\n      <Filter>FXAA</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FXAA\\FXAA_Medium.hlsl\">\n      <Filter>FXAA</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FXAA\\FXAA_Ultra.hlsl\">\n      <Filter>FXAA</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FXAA\\FXAA.hlsli\">\n      <Filter>FXAA</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\prescalers.hlsli\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_3x_lut2_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_3x_lut3_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_3x_lut4_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_3x_R2_RGB.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_3x_R2.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_3x_R3_RGB.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_3x_R3.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_3x_R4_RGB.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_3x_R4.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Lite_AR_R2.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Lite_AR_R3.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Lite_AR_R4.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_lite_lut2_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_lite_lut3_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_lite_lut4_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Lite_R2.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Lite_R3.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Lite_R4.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_lut2_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_lut3_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_lut4_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_R2_RGB.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_R2.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_R3_RGB.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_R3.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_R4_RGB.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_R4.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_AR_R2_RGB.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_AR_R2.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_AR_R3_RGB.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_AR_R3.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_zoom_lut2_ar_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_zoom_lut2_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_zoom_lut3_ar_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\ravu_zoom_lut3_f16.dds\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_R2_RGB.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_R2.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_R3.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"RAVU\\RAVU_Zoom_R3_RGB.hlsl\">\n      <Filter>RAVU</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns128_win8x4.hlsl\">\n      <Filter>NNEDI3</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns128_win8x6.hlsl\">\n      <Filter>NNEDI3</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns16_win8x4.hlsl\">\n      <Filter>NNEDI3</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns16_win8x6.hlsl\">\n      <Filter>NNEDI3</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns256_win8x4.hlsl\">\n      <Filter>NNEDI3</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns256_win8x6.hlsl\">\n      <Filter>NNEDI3</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns32_win8x4.hlsl\">\n      <Filter>NNEDI3</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns32_win8x6.hlsl\">\n      <Filter>NNEDI3</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns64_win8x4.hlsl\">\n      <Filter>NNEDI3</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\NNEDI3_nns64_win8x6.hlsl\">\n      <Filter>NNEDI3</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NNEDI3\\prescalers.hlsli\">\n      <Filter>NNEDI3</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NIS\\NIS.hlsl\">\n      <Filter>NIS</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NIS\\Coef_Scale.dds\">\n      <Filter>NIS</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NIS\\Coef_USM.dds\">\n      <Filter>NIS</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"NIS\\NVSharpen.hlsl\">\n      <Filter>NIS</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CAS\\CAS_Scaling.hlsl\">\n      <Filter>CAS</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CAS\\CAS.hlsl\">\n      <Filter>CAS</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FSRCNNX\\FSRCNNX.hlsl\">\n      <Filter>FSRCNNX</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"FSRCNNX\\FSRCNNX_LineArt.hlsl\">\n      <Filter>FSRCNNX</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Sharpen\\AdaptiveSharpen.hlsl\">\n      <Filter>Sharpen</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Sharpen\\FineSharp.hlsl\">\n      <Filter>Sharpen</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Sharpen\\LCAS.hlsl\">\n      <Filter>Sharpen</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Sharpen\\LumaSharpen.hlsl\">\n      <Filter>Sharpen</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Pixel Art\\MMPX.hlsl\">\n      <Filter>Pixel Art</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Pixel Art\\Pixellate.hlsl\">\n      <Filter>Pixel Art</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Pixel Art\\SharpBilinear.hlsl\">\n      <Filter>Pixel Art</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Deband.hlsl\" />\n    <CopyFileToFolders Include=\"Nearest.hlsl\" />\n    <CopyFileToFolders Include=\"Bilinear.hlsl\" />\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_GAN_x3_L.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Anime4K\\Anime4K_Upscale_GAN_x2_M.hlsl\">\n      <Filter>Anime4K</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-2x4C-NVL.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-2x4C-NVL-DN.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-3x4C-NVL.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-3x4C-NVL-DN.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-4x4C-NVL.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-4x4C-NVL-DN.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-4x8C-NVL.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-4x8C-NVL-DN.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-4x16C-NVL.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-4x16C-NVL-DN.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-6x8C-NVL.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-6x8C-NVL-DN.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-8x4C-NVL.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-8x4C-NVL-DN.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-8x8C-NVL.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-8x8C-NVL-DN.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-8x16C-NVL.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-8x16C-NVL-DN.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-16x16C-NVL.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy\\CuNNy-16x16C-NVL-DN.hlsl\">\n      <Filter>CuNNy</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"Bicubic.hlsl\" />\n    <CopyFileToFolders Include=\"NIS\\NIS_Scaler.hlsli\">\n      <Filter>NIS</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-3x12-NVL.hlsl\">\n      <Filter>CuNNy2</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-4x12-NVL.hlsl\">\n      <Filter>CuNNy2</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-4x16-NVL.hlsl\">\n      <Filter>CuNNy2</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-4x24-NVL.hlsl\">\n      <Filter>CuNNy2</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-4x32-NVL.hlsl\">\n      <Filter>CuNNy2</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-8x32-NVL.hlsl\">\n      <Filter>CuNNy2</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-faster-NVL.hlsl\">\n      <Filter>CuNNy2</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-fast-NVL.hlsl\">\n      <Filter>CuNNy2</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"CuNNy2\\CuNNy-veryfast-NVL.hlsl\">\n      <Filter>CuNNy2</Filter>\n    </CopyFileToFolders>\n    <CopyFileToFolders Include=\"SGSR.hlsl\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Filter Include=\"Anime4K\">\n      <UniqueIdentifier>{698d22a6-2a44-4262-a38e-76581d788a99}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"SMAA\">\n      <UniqueIdentifier>{74cb8e62-d411-4b32-b9b9-cc83bd4a58da}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"xBRZ\">\n      <UniqueIdentifier>{13943e28-4fe6-492b-bee1-1e5458d41763}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"FXAA\">\n      <UniqueIdentifier>{dc735dd3-2692-4ab7-a861-792e2c2f8e5d}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"CRT\">\n      <UniqueIdentifier>{6e798d9a-5bc2-47b6-aaf0-80862e290378}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"RAVU\">\n      <UniqueIdentifier>{cd0d6b91-fff1-4731-9198-d3c818fbbcd3}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"FSR\">\n      <UniqueIdentifier>{265c81d9-3ccf-442d-86f5-e256d4ef55fc}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"NNEDI3\">\n      <UniqueIdentifier>{47ebe4ed-6766-4781-8ba2-a9115b518ac3}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"NIS\">\n      <UniqueIdentifier>{2a9bfdf6-4953-44ee-a989-ecb9c21f15bf}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"CAS\">\n      <UniqueIdentifier>{604c2f86-a219-4941-9cc6-775f434f1351}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"FSRCNNX\">\n      <UniqueIdentifier>{962f3a4e-e086-4ba0-86a5-7355d5af7a4a}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"Sharpen\">\n      <UniqueIdentifier>{3e769cea-6a90-4904-ba66-0b0e993f7a91}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"Pixel Art\">\n      <UniqueIdentifier>{0b58f073-84cb-4c38-919d-80176ae408bc}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"CuNNy\">\n      <UniqueIdentifier>{9157745b-aa96-42ce-bdc6-1230dffa326b}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"CuNNy2\">\n      <UniqueIdentifier>{52055d56-41dc-409a-a878-3c1278082f6d}</UniqueIdentifier>\n    </Filter>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"StubDefs.hlsli\" />\n  </ItemGroup>\n</Project>"
  },
  {
    "path": "src/Effects/FSR/FSR_EASU.hlsl",
    "content": "// FidelityFX-FSR 中 EASU 通道\n// 移植自 https://github.com/GPUOpen-Effects/FidelityFX-FSR/blob/a21ffb8f6c13233ba336352bdff293894c706575/ffx-fsr/ffx_fsr1.h\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n#define min3(a, b, c) min(a, min(b, c))\n#define max3(a, b, c) max(a, max(b, c))\n\n#ifdef MP_FP16\n\nMF2 MF2_x(MF1 a) { return MF2(a, a); }\n#define MF2_(a) MF2_x(MF1(a))\n\n// This runs 2 taps in parallel.\nvoid FsrEasuTapH(\n\tinout MF2 aCR,\n\tinout MF2 aCG,\n\tinout MF2 aCB,\n\tinout MF2 aW,\n\tMF2 offX,\n\tMF2 offY,\n\tMF2 dir,\n\tMF2 len,\n\tMF1 lob,\n\tMF1 clp,\n\tMF2 cR,\n\tMF2 cG,\n\tMF2 cB\n) {\n\tMF2 vX, vY;\n\tvX = offX * dir.xx + offY * dir.yy;\n\tvY = offX * (-dir.yy) + offY * dir.xx;\n\tvX *= len.x; vY *= len.y;\n\tMF2 d2 = vX * vX + vY * vY;\n\td2 = min(d2, MF2_(clp));\n\tMF2 wB = MF2_(2.0 / 5.0) * d2 + MF2_(-1.0);\n\tMF2 wA = MF2_(lob) * d2 + MF2_(-1.0);\n\twB *= wB;\n\twA *= wA;\n\twB = MF2_(25.0 / 16.0) * wB + MF2_(-(25.0 / 16.0 - 1.0));\n\tMF2 w = wB * wA;\n\taCR += cR * w;\n\taCG += cG * w;\n\taCB += cB * w;\n\taW += w;\n}\n\n// This runs 2 taps in parallel.\nvoid FsrEasuSetH(\n\tinout MF2 dirPX,\n\tinout MF2 dirPY,\n\tinout MF2 lenP,\n\tMF2 pp,\n\tbool biST,\n\tbool biUV,\n\tMF2 lA,\n\tMF2 lB,\n\tMF2 lC,\n\tMF2 lD,\n\tMF2 lE\n) {\n\tMF2 w = MF2_(0.0);\n\tif (biST)w = (MF2(1.0, 0.0) + MF2(-pp.x, pp.x)) * MF(MF(1.0) - pp.y);\n\tif (biUV)w = (MF2(1.0, 0.0) + MF2(-pp.x, pp.x)) * MF(pp.y);\n\t// ABS is not free in the packed FP16 path.\n\tMF2 dc = lD - lC;\n\tMF2 cb = lC - lB;\n\tMF2 lenX = max(abs(dc), abs(cb));\n\tlenX = rcp(lenX);\n\tMF2 dirX = lD - lB;\n\tdirPX += dirX * w;\n\tlenX = saturate(abs(dirX) * lenX);\n\tlenX *= lenX;\n\tlenP += lenX * w;\n\tMF2 ec = lE - lC;\n\tMF2 ca = lC - lA;\n\tMF2 lenY = max(abs(ec), abs(ca));\n\tlenY = rcp(lenY);\n\tMF2 dirY = lE - lA;\n\tdirPY += dirY * w;\n\tlenY = saturate(abs(dirY) * lenY);\n\tlenY *= lenY;\n\tlenP += lenY * w;\n}\n\nMF3 FsrEasu(\n\tuint2 ip,\n\tfloat4 con0,\n\tfloat4 con1,\n\tfloat4 con2,\n\tfloat2 con3\n) {\n\t//------------------------------------------------------------------------------------------------------------------------------\n\tfloat2 pp = float2(ip) * con0.xy + con0.zw;\n\tfloat2 fp = floor(pp);\n\tpp -= fp;\n\tMF2 ppp = MF2(pp);\n\t//------------------------------------------------------------------------------------------------------------------------------\n\tfloat2 p0 = fp * con1.xy + con1.zw;\n\tfloat2 p1 = p0 + con2.xy;\n\tfloat2 p2 = p0 + con2.zw;\n\tfloat2 p3 = p0 + con3.xy;\n\tMF4 bczzR = INPUT.GatherRed(sam, p0);\n\tMF4 bczzG = INPUT.GatherGreen(sam, p0);\n\tMF4 bczzB = INPUT.GatherBlue(sam, p0);\n\tMF4 ijfeR = INPUT.GatherRed(sam, p1);\n\tMF4 ijfeG = INPUT.GatherGreen(sam, p1);\n\tMF4 ijfeB = INPUT.GatherBlue(sam, p1);\n\tMF4 klhgR = INPUT.GatherRed(sam, p2);\n\tMF4 klhgG = INPUT.GatherGreen(sam, p2);\n\tMF4 klhgB = INPUT.GatherBlue(sam, p2);\n\tMF4 zzonR = INPUT.GatherRed(sam, p3);\n\tMF4 zzonG = INPUT.GatherGreen(sam, p3);\n\tMF4 zzonB = INPUT.GatherBlue(sam, p3);\n\t//------------------------------------------------------------------------------------------------------------------------------\n\tMF4 bczzL = bczzB * MF(0.5) + (bczzR * MF(0.5) + bczzG);\n\tMF4 ijfeL = ijfeB * MF(0.5) + (ijfeR * MF(0.5) + ijfeG);\n\tMF4 klhgL = klhgB * MF(0.5) + (klhgR * MF(0.5) + klhgG);\n\tMF4 zzonL = zzonB * MF(0.5) + (zzonR * MF(0.5) + zzonG);\n\tMF1 bL = bczzL.x;\n\tMF1 cL = bczzL.y;\n\tMF1 iL = ijfeL.x;\n\tMF1 jL = ijfeL.y;\n\tMF1 fL = ijfeL.z;\n\tMF1 eL = ijfeL.w;\n\tMF1 kL = klhgL.x;\n\tMF1 lL = klhgL.y;\n\tMF1 hL = klhgL.z;\n\tMF1 gL = klhgL.w;\n\tMF1 oL = zzonL.z;\n\tMF1 nL = zzonL.w;\n\t// This part is different, accumulating 2 taps in parallel.\n\tMF2 dirPX = MF2_(0.0);\n\tMF2 dirPY = MF2_(0.0);\n\tMF2 lenP = MF2_(0.0);\n\tFsrEasuSetH(dirPX, dirPY, lenP, ppp, true, false, MF2(bL, cL), MF2(eL, fL), MF2(fL, gL), MF2(gL, hL), MF2(jL, kL));\n\tFsrEasuSetH(dirPX, dirPY, lenP, ppp, false, true, MF2(fL, gL), MF2(iL, jL), MF2(jL, kL), MF2(kL, lL), MF2(nL, oL));\n\tMF2 dir = MF2(dirPX.r + dirPX.g, dirPY.r + dirPY.g);\n\tMF1 len = lenP.r + lenP.g;\n\t//------------------------------------------------------------------------------------------------------------------------------\n\tMF2 dir2 = dir * dir;\n\tMF1 dirR = dir2.x + dir2.y;\n\tbool zro = dirR < MF1(1.0 / 32768.0);\n\tdirR = rsqrt(dirR);\n\tdirR = zro ? MF(1.0) : dirR;\n\tdir.x = zro ? MF(1.0) : dir.x;\n\tdir *= MF2_(dirR);\n\tlen = len * MF(0.5);\n\tlen *= len;\n\tMF1 stretch = (dir.x * dir.x + dir.y * dir.y) * rcp(max(abs(dir.x), abs(dir.y)));\n\tMF2 len2 = MF2(MF(1.0) + (stretch - MF(1.0)) * len, MF(1.0) + MF(-0.5) * len);\n\tMF1 lob = MF(0.5) + MF((1.0 / 4.0 - 0.04) - 0.5) * len;\n\tMF1 clp = rcp(lob);\n\t//------------------------------------------------------------------------------------------------------------------------------\n\t  // FP16 is different, using packed trick to do min and max in same operation.\n\tMF2 bothR = max(max(MF2(-ijfeR.z, ijfeR.z), MF2(-klhgR.w, klhgR.w)), max(MF2(-ijfeR.y, ijfeR.y), MF2(-klhgR.x, klhgR.x)));\n\tMF2 bothG = max(max(MF2(-ijfeG.z, ijfeG.z), MF2(-klhgG.w, klhgG.w)), max(MF2(-ijfeG.y, ijfeG.y), MF2(-klhgG.x, klhgG.x)));\n\tMF2 bothB = max(max(MF2(-ijfeB.z, ijfeB.z), MF2(-klhgB.w, klhgB.w)), max(MF2(-ijfeB.y, ijfeB.y), MF2(-klhgB.x, klhgB.x)));\n\t// This part is different for FP16, working pairs of taps at a time.\n\tMF2 pR = MF2_(0.0);\n\tMF2 pG = MF2_(0.0);\n\tMF2 pB = MF2_(0.0);\n\tMF2 pW = MF2_(0.0);\n\tFsrEasuTapH(pR, pG, pB, pW, MF2(0.0, 1.0) - ppp.xx, MF2(-1.0, -1.0) - ppp.yy, dir, len2, lob, clp, bczzR.xy, bczzG.xy, bczzB.xy);\n\tFsrEasuTapH(pR, pG, pB, pW, MF2(-1.0, 0.0) - ppp.xx, MF2(1.0, 1.0) - ppp.yy, dir, len2, lob, clp, ijfeR.xy, ijfeG.xy, ijfeB.xy);\n\tFsrEasuTapH(pR, pG, pB, pW, MF2(0.0, -1.0) - ppp.xx, MF2(0.0, 0.0) - ppp.yy, dir, len2, lob, clp, ijfeR.zw, ijfeG.zw, ijfeB.zw);\n\tFsrEasuTapH(pR, pG, pB, pW, MF2(1.0, 2.0) - ppp.xx, MF2(1.0, 1.0) - ppp.yy, dir, len2, lob, clp, klhgR.xy, klhgG.xy, klhgB.xy);\n\tFsrEasuTapH(pR, pG, pB, pW, MF2(2.0, 1.0) - ppp.xx, MF2(0.0, 0.0) - ppp.yy, dir, len2, lob, clp, klhgR.zw, klhgG.zw, klhgB.zw);\n\tFsrEasuTapH(pR, pG, pB, pW, MF2(1.0, 0.0) - ppp.xx, MF2(2.0, 2.0) - ppp.yy, dir, len2, lob, clp, zzonR.zw, zzonG.zw, zzonB.zw);\n\tMF3 aC = MF3(pR.x + pR.y, pG.x + pG.y, pB.x + pB.y);\n\tMF aW = pW.x + pW.y;\n\t//------------------------------------------------------------------------------------------------------------------------------\n\t  // Slightly different for FP16 version due to combined min and max.\n\treturn min(MF3(bothR.y, bothG.y, bothB.y), max(-MF3(bothR.x, bothG.x, bothB.x), aC * rcp(aW)));\n}\n\n#else\n\n// Filtering for a given tap for the scalar.\nvoid FsrEasuTapF(\n\tinout float3 aC, // Accumulated color, with negative lobe.\n\tinout float aW, // Accumulated weight.\n\tfloat2 off, // Pixel offset from resolve position to tap.\n\tfloat2 dir, // Gradient direction.\n\tfloat2 len, // Length.\n\tfloat lob, // Negative lobe strength.\n\tfloat clp, // Clipping point.\n\tfloat3 c // Tap color.\n) {\n\t// Rotate offset by direction.\n\tfloat2 v;\n\tv.x = (off.x * (dir.x)) + (off.y * dir.y);\n\tv.y = (off.x * (-dir.y)) + (off.y * dir.x);\n\t// Anisotropy.\n\tv *= len;\n\t// Compute distance^2.\n\tfloat d2 = v.x * v.x + v.y * v.y;\n\t// Limit to the window as at corner, 2 taps can easily be outside.\n\td2 = min(d2, clp);\n\t// Approximation of lanczos2 without sin() or rcp(), or sqrt() to get x.\n\t//  (25/16 * (2/5 * x^2 - 1)^2 - (25/16 - 1)) * (1/4 * x^2 - 1)^2\n\t//  |_______________________________________|   |_______________|\n\t//                   base                             window\n\t// The general form of the 'base' is,\n\t//  (a*(b*x^2-1)^2-(a-1))\n\t// Where 'a=1/(2*b-b^2)' and 'b' moves around the negative lobe.\n\tfloat wB = 2.0f / 5.0f * d2 - 1;\n\tfloat wA = lob * d2 - 1;\n\twB *= wB;\n\twA *= wA;\n\twB = 25.0f / 16.0f * wB - (25.0f / 16.0f - 1.0f);\n\tfloat w = wB * wA;\n\t// Do weighted average.\n\taC += c * w;\n\taW += w;\n}\n\n// Accumulate direction and length.\nvoid FsrEasuSetF(\n\tinout float2 dir,\n\tinout float len,\n\tfloat2 pp,\n\tbool biS,\n\tbool biT,\n\tbool biU,\n\tbool biV,\n\tfloat lA,\n\tfloat lB,\n\tfloat lC,\n\tfloat lD,\n\tfloat lE\n) {\n\t// Compute bilinear weight, branches factor out as predicates are compiler time immediates.\n\t//  s t\n\t//  u v\n\tfloat w = 0;\n\tif (biS)\n\t\tw = (1 - pp.x) * (1 - pp.y);\n\tif (biT)\n\t\tw = pp.x * (1 - pp.y);\n\tif (biU)\n\t\tw = (1.0 - pp.x) * pp.y;\n\tif (biV)\n\t\tw = pp.x * pp.y;\n\t// Direction is the '+' diff.\n\t//    a\n\t//  b c d\n\t//    e\n\t// Then takes magnitude from abs average of both sides of 'c'.\n\t// Length converts gradient reversal to 0, smoothly to non-reversal at 1, shaped, then adding horz and vert terms.\n\tfloat dc = lD - lC;\n\tfloat cb = lC - lB;\n\tfloat lenX = max(abs(dc), abs(cb));\n\tlenX = rcp(lenX);\n\tfloat dirX = lD - lB;\n\tdir.x += dirX * w;\n\tlenX = saturate(abs(dirX) * lenX);\n\tlenX *= lenX;\n\tlen += lenX * w;\n\t// Repeat for the y axis.\n\tfloat ec = lE - lC;\n\tfloat ca = lC - lA;\n\tfloat lenY = max(abs(ec), abs(ca));\n\tlenY = rcp(lenY);\n\tfloat dirY = lE - lA;\n\tdir.y += dirY * w;\n\tlenY = saturate(abs(dirY) * lenY);\n\tlenY *= lenY;\n\tlen += lenY * w;\n}\n\nfloat3 FsrEasu(uint2 ip, float4 con0, float4 con1, float4 con2, float2 con3) {\n//------------------------------------------------------------------------------------------------------------------------------\n\t// Get position of 'f'.\n\tfloat2 pp = ip * con0.xy + con0.zw;\n\tfloat2 fp = floor(pp);\n\tpp -= fp;\n//------------------------------------------------------------------------------------------------------------------------------\n\t// 12-tap kernel.\n\t//    b c\n\t//  e f g h\n\t//  i j k l\n\t//    n o\n\t// Gather 4 ordering.\n\t//  a b\n\t//  r g\n\t// For packed FP16, need either {rg} or {ab} so using the following setup for gather in all versions,\n\t//    a b    <- unused (z)\n\t//    r g\n\t//  a b a b\n\t//  r g r g\n\t//    a b\n\t//    r g    <- unused (z)\n\t// Allowing dead-code removal to remove the 'z's.\n\tfloat2 p0 = fp * con1.xy + con1.zw;\n\t// These are from p0 to avoid pulling two constants on pre-Navi hardware.\n\tfloat2 p1 = p0 + con2.xy;\n\tfloat2 p2 = p0 + con2.zw;\n\tfloat2 p3 = p0 + con3;\n\n\tfloat4 bczzR = INPUT.GatherRed(sam, p0);\n\tfloat4 bczzG = INPUT.GatherGreen(sam, p0);\n\tfloat4 bczzB = INPUT.GatherBlue(sam, p0);\n\tfloat4 ijfeR = INPUT.GatherRed(sam, p1);\n\tfloat4 ijfeG = INPUT.GatherGreen(sam, p1);\n\tfloat4 ijfeB = INPUT.GatherBlue(sam, p1);\n\tfloat4 klhgR = INPUT.GatherRed(sam, p2);\n\tfloat4 klhgG = INPUT.GatherGreen(sam, p2);\n\tfloat4 klhgB = INPUT.GatherBlue(sam, p2);\n\tfloat4 zzonR = INPUT.GatherRed(sam, p3);\n\tfloat4 zzonG = INPUT.GatherGreen(sam, p3);\n\tfloat4 zzonB = INPUT.GatherBlue(sam, p3);\n//------------------------------------------------------------------------------------------------------------------------------\n\t// Simplest multi-channel approximate luma possible (luma times 2, in 2 FMA/MAD).\n\tfloat4 bczzL = bczzB * 0.5 + (bczzR * 0.5 + bczzG);\n\tfloat4 ijfeL = ijfeB * 0.5 + (ijfeR * 0.5 + ijfeG);\n\tfloat4 klhgL = klhgB * 0.5 + (klhgR * 0.5 + klhgG);\n\tfloat4 zzonL = zzonB * 0.5 + (zzonR * 0.5 + zzonG);\n\t// Rename.\n\tfloat bL = bczzL.x;\n\tfloat cL = bczzL.y;\n\tfloat iL = ijfeL.x;\n\tfloat jL = ijfeL.y;\n\tfloat fL = ijfeL.z;\n\tfloat eL = ijfeL.w;\n\tfloat kL = klhgL.x;\n\tfloat lL = klhgL.y;\n\tfloat hL = klhgL.z;\n\tfloat gL = klhgL.w;\n\tfloat oL = zzonL.z;\n\tfloat nL = zzonL.w;\n\t// Accumulate for bilinear interpolation.\n\tfloat2 dir = 0;\n\tfloat len = 0;\n\tFsrEasuSetF(dir, len, pp, true, false, false, false, bL, eL, fL, gL, jL);\n\tFsrEasuSetF(dir, len, pp, false, true, false, false, cL, fL, gL, hL, kL);\n\tFsrEasuSetF(dir, len, pp, false, false, true, false, fL, iL, jL, kL, nL);\n\tFsrEasuSetF(dir, len, pp, false, false, false, true, gL, jL, kL, lL, oL);\n//------------------------------------------------------------------------------------------------------------------------------\n\t// Normalize with approximation, and cleanup close to zero.\n\tfloat2 dir2 = dir * dir;\n\tfloat dirR = dir2.x + dir2.y;\n\tbool zro = dirR < 1.0f / 32768.0f;\n\tdirR = rsqrt(dirR);\n\tdirR = zro ? 1 : dirR;\n\tdir.x = zro ? 1 : dir.x;\n\tdir *= dirR;\n\t// Transform from {0 to 2} to {0 to 1} range, and shape with square.\n\tlen = len * 0.5;\n\tlen *= len;\n\t// Stretch kernel {1.0 vert|horz, to sqrt(2.0) on diagonal}.\n\tfloat stretch = (dir.x * dir.x + dir.y * dir.y) * rcp(max(abs(dir.x), abs(dir.y)));\n\t// Anisotropic length after rotation,\n\t//  x := 1.0 lerp to 'stretch' on edges\n\t//  y := 1.0 lerp to 2x on edges\n\tfloat2 len2 = { 1 + (stretch - 1) * len, 1 - 0.5 * len };\n\t// Based on the amount of 'edge',\n\t// the window shifts from +/-{sqrt(2.0) to slightly beyond 2.0}.\n\tfloat lob = 0.5 + ((1.0 / 4.0 - 0.04) - 0.5) * len;\n\t// Set distance^2 clipping point to the end of the adjustable window.\n\tfloat clp = rcp(lob);\n//------------------------------------------------------------------------------------------------------------------------------\n\t// Accumulation mixed with min/max of 4 nearest.\n\t//    b c\n\t//  e f g h\n\t//  i j k l\n\t//    n o\n\tfloat3 min4 = min(min3(float3(ijfeR.z, ijfeG.z, ijfeB.z), float3(klhgR.w, klhgG.w, klhgB.w), float3(ijfeR.y, ijfeG.y, ijfeB.y)),\n\t\tfloat3(klhgR.x, klhgG.x, klhgB.x));\n\tfloat3 max4 = max(max3(float3(ijfeR.z, ijfeG.z, ijfeB.z), float3(klhgR.w, klhgG.w, klhgB.w), float3(ijfeR.y, ijfeG.y, ijfeB.y)),\n\t\tfloat3(klhgR.x, klhgG.x, klhgB.x));\n\t// Accumulation.\n\tfloat3 aC = 0;\n\tfloat aW = 0;\n\tFsrEasuTapF(aC, aW, float2(0.0, -1.0) - pp, dir, len2, lob, clp, float3(bczzR.x, bczzG.x, bczzB.x)); // b\n\tFsrEasuTapF(aC, aW, float2(1.0, -1.0) - pp, dir, len2, lob, clp, float3(bczzR.y, bczzG.y, bczzB.y)); // c\n\tFsrEasuTapF(aC, aW, float2(-1.0, 1.0) - pp, dir, len2, lob, clp, float3(ijfeR.x, ijfeG.x, ijfeB.x)); // i\n\tFsrEasuTapF(aC, aW, float2(0.0, 1.0) - pp, dir, len2, lob, clp, float3(ijfeR.y, ijfeG.y, ijfeB.y)); // j\n\tFsrEasuTapF(aC, aW, float2(0.0, 0.0) - pp, dir, len2, lob, clp, float3(ijfeR.z, ijfeG.z, ijfeB.z)); // f\n\tFsrEasuTapF(aC, aW, float2(-1.0, 0.0) - pp, dir, len2, lob, clp, float3(ijfeR.w, ijfeG.w, ijfeB.w)); // e\n\tFsrEasuTapF(aC, aW, float2(1.0, 1.0) - pp, dir, len2, lob, clp, float3(klhgR.x, klhgG.x, klhgB.x)); // k\n\tFsrEasuTapF(aC, aW, float2(2.0, 1.0) - pp, dir, len2, lob, clp, float3(klhgR.y, klhgG.y, klhgB.y)); // l\n\tFsrEasuTapF(aC, aW, float2(2.0, 0.0) - pp, dir, len2, lob, clp, float3(klhgR.z, klhgG.z, klhgB.z)); // h\n\tFsrEasuTapF(aC, aW, float2(1.0, 0.0) - pp, dir, len2, lob, clp, float3(klhgR.w, klhgG.w, klhgB.w)); // g\n\tFsrEasuTapF(aC, aW, float2(1.0, 2.0) - pp, dir, len2, lob, clp, float3(zzonR.z, zzonG.z, zzonB.z)); // o\n\tFsrEasuTapF(aC, aW, float2(0.0, 2.0) - pp, dir, len2, lob, clp, float3(zzonR.w, zzonG.w, zzonB.w)); // n\n//------------------------------------------------------------------------------------------------------------------------------\n\t// Normalize and dering.\n\treturn min(max4, max(min4, aC * rcp(aW)));\n}\n\n#endif\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = blockStart + Rmp8x8(threadId.x);\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tuint2 inputSize = GetInputSize();\n\tfloat2 inputPt = GetInputPt();\n\n\tfloat4 con0, con1, con2;\n\tfloat2 con3;\n\t// Output integer position to a pixel position in viewport.\n\tcon0[0] = (float)inputSize.x / (float)outputSize.x;\n\tcon0[1] = (float)inputSize.y / (float)outputSize.y;\n\tcon0[2] = 0.5f * con0[0] - 0.5f;\n\tcon0[3] = 0.5f * con0[1] - 0.5f;\n\t// Viewport pixel position to normalized image space.\n\t// This is used to get upper-left of 'F' tap.\n\tcon1[0] = inputPt.x;\n\tcon1[1] = inputPt.y;\n\t// Centers of gather4, first offset from upper-left of 'F'.\n\t//      +---+---+\n\t//      |   |   |\n\t//      +--(0)--+\n\t//      | b | c |\n\t//  +---F---+---+---+\n\t//  | e | f | g | h |\n\t//  +--(1)--+--(2)--+\n\t//  | i | j | k | l |\n\t//  +---+---+---+---+\n\t//      | n | o |\n\t//      +--(3)--+\n\t//      |   |   |\n\t//      +---+---+\n\tcon1[2] = inputPt.x;\n\tcon1[3] = -inputPt.y;\n\t// These are from (0) instead of 'F'.\n\tcon2[0] = -inputPt.x;\n\tcon2[1] = 2.0f * inputPt.y;\n\tcon2[2] = inputPt.x;\n\tcon2[3] = 2.0f * inputPt.y;\n\tcon3[0] = 0;\n\tcon3[1] = 4.0f * inputPt.y;\n\n\tOUTPUT[gxy] = MF4(FsrEasu(gxy, con0, con1, con2, con3), 1);\n\n\tgxy.x += 8u;\n\tif (gxy.x < outputSize.x && gxy.y < outputSize.y) {\n\t\tOUTPUT[gxy] = MF4(FsrEasu(gxy, con0, con1, con2, con3), 1);\n\t}\n\n\tgxy.y += 8u;\n\tif (gxy.x < outputSize.x && gxy.y < outputSize.y) {\n\t\tOUTPUT[gxy] = MF4(FsrEasu(gxy, con0, con1, con2, con3), 1);\n\t}\n\n\tgxy.x -= 8u;\n\tif (gxy.x < outputSize.x && gxy.y < outputSize.y) {\n\t\tOUTPUT[gxy] = MF4(FsrEasu(gxy, con0, con1, con2, con3), 1);\n\t}\n}\n"
  },
  {
    "path": "src/Effects/FSR/FSR_RCAS.hlsl",
    "content": "// FidelityFX-FSR 中 RCAS 通道\n// 移植自 https://github.com/GPUOpen-Effects/FidelityFX-FSR/blob/a21ffb8f6c13233ba336352bdff293894c706575/ffx-fsr/ffx_fsr1.h\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!PARAMETER\n//!LABEL Sharpness\n//!DEFAULT 0.87\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat sharpness;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n#define min3(a, b, c) min(a, min(b, c))\n#define max3(a, b, c) max(a, max(b, c))\n\n// This is set at the limit of providing unnatural results for sharpening.\n#define FSR_RCAS_LIMIT (0.25-(1.0/16.0))\n\n#ifdef MP_FP16\n\nvoid FsrRcasHx2(\n\tout MF2 pixR,\n\tout MF2 pixG,\n\tout MF2 pixB,\n\tfloat3 b0, float3 d0, float3 e0, float3 f0, float3 h0,\n\tfloat3 b1, float3 d1, float3 e1, float3 f1, float3 h1,\n\tMF s\n) {\n\t// Arrays of Structures to Structures of Arrays conversion.\n\tMF2 bR = MF2(b0.r, b1.r);\n\tMF2 bG = MF2(b0.g, b1.g);\n\tMF2 bB = MF2(b0.b, b1.b);\n\tMF2 dR = MF2(d0.r, d1.r);\n\tMF2 dG = MF2(d0.g, d1.g);\n\tMF2 dB = MF2(d0.b, d1.b);\n\tMF2 eR = MF2(e0.r, e1.r);\n\tMF2 eG = MF2(e0.g, e1.g);\n\tMF2 eB = MF2(e0.b, e1.b);\n\tMF2 fR = MF2(f0.r, f1.r);\n\tMF2 fG = MF2(f0.g, f1.g);\n\tMF2 fB = MF2(f0.b, f1.b);\n\tMF2 hR = MF2(h0.r, h1.r);\n\tMF2 hG = MF2(h0.g, h1.g);\n\tMF2 hB = MF2(h0.b, h1.b);\n\t// Luma times 2.\n\tMF2 bL = bB * 0.5 + (bR * 0.5 + bG);\n\tMF2 dL = dB * 0.5 + (dR * 0.5 + dG);\n\tMF2 eL = eB * 0.5 + (eR * 0.5 + eG);\n\tMF2 fL = fB * 0.5 + (fR * 0.5 + fG);\n\tMF2 hL = hB * 0.5 + (hR * 0.5 + hG);\n\t// Noise detection.\n\tMF2 nz = 0.25 * bL + 0.25 * dL + 0.25 * fL + 0.25 * hL - eL;\n\tnz = saturate(abs(nz) * rcp(max3(max3(bL, dL, eL), fL, hL) - min3(min3(bL, dL, eL), fL, hL)));\n\tnz = -0.5 * nz + 1.0;\n\t// Min and max of ring.\n\tMF2 mn4R = min(min3(bR, dR, fR), hR);\n\tMF2 mn4G = min(min3(bG, dG, fG), hG);\n\tMF2 mn4B = min(min3(bB, dB, fB), hB);\n\tMF2 mx4R = max(min3(bR, dR, fR), hR);\n\tMF2 mx4G = max(min3(bG, dG, fG), hG);\n\tMF2 mx4B = max(min3(bB, dB, fB), hB);\n\t// Immediate constants for peak range.\n\tMF2 peakC = MF2(1.0, -1.0 * 4.0);\n\t// Limiters, these need to be high precision RCPs.\n\tMF2 hitMinR = min(mn4R, eR) * rcp(4.0 * mx4R);\n\tMF2 hitMinG = min(mn4G, eG) * rcp(4.0 * mx4G);\n\tMF2 hitMinB = min(mn4B, eB) * rcp(4.0 * mx4B);\n\tMF2 hitMaxR = (peakC.x - max(mx4R, eR)) * rcp(4.0 * mn4R + peakC.y);\n\tMF2 hitMaxG = (peakC.x - max(mx4G, eG)) * rcp(4.0 * mn4G + peakC.y);\n\tMF2 hitMaxB = (peakC.x - max(mx4B, eB)) * rcp(4.0 * mn4B + peakC.y);\n\tMF2 lobeR = max(-hitMinR, hitMaxR);\n\tMF2 lobeG = max(-hitMinG, hitMaxG);\n\tMF2 lobeB = max(-hitMinB, hitMaxB);\n\tMF2 lobe = max(-FSR_RCAS_LIMIT, min(max3(lobeR, lobeG, lobeB), 0.0)) * s;\n\t// Apply noise removal.\n\tlobe*=nz;\n\t// Resolve, which needs the medium precision rcp approximation to avoid visible tonality changes.\n\tMF2 rcpL = rcp(4.0 * lobe + 1.0);\n\tpixR = (lobe * bR + lobe * dR + lobe * hR + lobe * fR + eR) * rcpL;\n\tpixG = (lobe * bG + lobe * dG + lobe * hG + lobe * fG + eG) * rcpL;\n\tpixB = (lobe * bB + lobe * dB + lobe * hB + lobe * fB + eB) * rcpL;\n}\n\n#else\n\nfloat3 FsrRcasF(float3 b, float3 d, float3 e, float3 f, float3 h) {\n\t// Algorithm uses minimal 3x3 pixel neighborhood.\n\t//    b \n\t//  d e f\n\t//    h\n\n\t// Rename (32-bit) or regroup (16-bit).\n\tfloat bR = b.r;\n\tfloat bG = b.g;\n\tfloat bB = b.b;\n\tfloat dR = d.r;\n\tfloat dG = d.g;\n\tfloat dB = d.b;\n\tfloat eR = e.r;\n\tfloat eG = e.g;\n\tfloat eB = e.b;\n\tfloat fR = f.r;\n\tfloat fG = f.g;\n\tfloat fB = f.b;\n\tfloat hR = h.r;\n\tfloat hG = h.g;\n\tfloat hB = h.b;\n\n\tfloat nz;\n\n\t// Luma times 2.\n\tfloat bL = bB * 0.5 + (bR * 0.5 + bG);\n\tfloat dL = dB * 0.5 + (dR * 0.5 + dG);\n\tfloat eL = eB * 0.5 + (eR * 0.5 + eG);\n\tfloat fL = fB * 0.5 + (fR * 0.5 + fG);\n\tfloat hL = hB * 0.5 + (hR * 0.5 + hG);\n\n\t// Noise detection.\n\tnz = 0.25 * bL + 0.25 * dL + 0.25 * fL + 0.25 * hL - eL;\n\tnz = saturate(abs(nz) * rcp(max3(max3(bL, dL, eL), fL, hL) - min3(min3(bL, dL, eL), fL, hL)));\n\tnz = -0.5 * nz + 1.0;\n\n\t// Min and max of ring.\n\tfloat mn4R = min(min3(bR, dR, fR), hR);\n\tfloat mn4G = min(min3(bG, dG, fG), hG);\n\tfloat mn4B = min(min3(bB, dB, fB), hB);\n\tfloat mx4R = max(max3(bR, dR, fR), hR);\n\tfloat mx4G = max(max3(bG, dG, fG), hG);\n\tfloat mx4B = max(max3(bB, dB, fB), hB);\n\t// Immediate constants for peak range.\n\tfloat2 peakC = { 1.0, -1.0 * 4.0 };\n\t// Limiters, these need to be high precision RCPs.\n\tfloat hitMinR = min(mn4R, eR) * rcp(4.0 * mx4R);\n\tfloat hitMinG = min(mn4G, eG) * rcp(4.0 * mx4G);\n\tfloat hitMinB = min(mn4B, eB) * rcp(4.0 * mx4B);\n\tfloat hitMaxR = (peakC.x - max(mx4R, eR)) * rcp(4.0 * mn4R + peakC.y);\n\tfloat hitMaxG = (peakC.x - max(mx4G, eG)) * rcp(4.0 * mn4G + peakC.y);\n\tfloat hitMaxB = (peakC.x - max(mx4B, eB)) * rcp(4.0 * mn4B + peakC.y);\n\tfloat lobeR = max(-hitMinR, hitMaxR);\n\tfloat lobeG = max(-hitMinG, hitMaxG);\n\tfloat lobeB = max(-hitMinB, hitMaxB);\n\tfloat lobe = max(-FSR_RCAS_LIMIT, min(max3(lobeR, lobeG, lobeB), 0)) * sharpness;\n\n\t// Apply noise removal.\n\tlobe *= nz;\n\n\t// Resolve, which needs the medium precision rcp approximation to avoid visible tonality changes.\n\tfloat rcpL = rcp(4.0 * lobe + 1.0);\n\tfloat3 c = {\n\t\t(lobe * bR + lobe * dR + lobe * hR + lobe * fR + eR) * rcpL,\n\t\t(lobe * bG + lobe * dG + lobe * hG + lobe * fG + eG) * rcpL,\n\t\t(lobe * bB + lobe * dB + lobe * hB + lobe * fB + eB) * rcpL\n\t};\n\n\treturn c;\n}\n\n#endif\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = blockStart + (Rmp8x8(threadId.x) << 1);\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat3 src[4][4];\n\t[unroll]\n\tfor (uint i = 1; i < 3; ++i) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j < 4; ++j) {\n\t\t\tsrc[i][j] = INPUT.Load(int3(gxy.x + i - 1, gxy.y + j - 1, 0)).rgb;\n\t\t}\n\t}\n\n\tsrc[0][1] = INPUT.Load(int3(gxy.x - 1, gxy.y, 0)).rgb;\n\tsrc[0][2] = INPUT.Load(int3(gxy.x - 1, gxy.y + 1, 0)).rgb;\n\tsrc[3][1] = INPUT.Load(int3(gxy.x + 2, gxy.y, 0)).rgb;\n\tsrc[3][2] = INPUT.Load(int3(gxy.x + 2, gxy.y + 1, 0)).rgb;\n\n#ifdef MP_FP16\n\tMF2 pixR, pixG, pixB;\n\tconst MF s = (MF)sharpness;\n\tFsrRcasHx2(pixR, pixG, pixB, src[1][0], src[0][1], src[1][1], src[2][1], src[1][2], src[2][0], src[1][1], src[2][1], src[3][1], src[2][2], s);\n\tOUTPUT[gxy] = MF4(pixR.x, pixG.x, pixB.x, 1);\n\t++gxy.x;\n\tOUTPUT[gxy] = MF4(pixR.y, pixG.y, pixB.y, 1);\n\t\n\tFsrRcasHx2(pixR, pixG, pixB, src[2][1], src[1][2], src[2][2], src[3][2], src[2][3], src[1][1], src[0][2], src[1][2], src[2][2], src[1][3], s);\n\t++gxy.y;\n\tOUTPUT[gxy] = MF4(pixR.x, pixG.x, pixB.x, 1);\n\t--gxy.x;\n\tOUTPUT[gxy] = MF4(pixR.y, pixG.y, pixB.y, 1);\n#else\n\tOUTPUT[gxy] = float4(FsrRcasF(src[1][0], src[0][1], src[1][1], src[2][1], src[1][2]), 1);\n\n\t++gxy.x;\n\tif (gxy.x < outputSize.x && gxy.y < outputSize.y) {\n\t\tOUTPUT[gxy] = float4(FsrRcasF(src[2][0], src[1][1], src[2][1], src[3][1], src[2][2]), 1);\n\t}\n\n\t++gxy.y;\n\tif (gxy.x < outputSize.x && gxy.y < outputSize.y) {\n\t\tOUTPUT[gxy] = float4(FsrRcasF(src[2][1], src[1][2], src[2][2], src[3][2], src[2][3]), 1);\n\t}\n\n\t--gxy.x;\n\tif (gxy.x < outputSize.x && gxy.y < outputSize.y) {\n\t\tOUTPUT[gxy] = float4(FsrRcasF(src[1][1], src[0][2], src[1][2], src[2][2], src[1][3]), 1);\n\t}\n#endif\n}\n"
  },
  {
    "path": "src/Effects/FSRCNNX/FSRCNNX.hlsl",
    "content": "// FSRCNNX_x2_8-0-4-1\n// 移植自 https://github.com/igv/FSRCNN-TensorFlow\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D featureMap1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D featureMap2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n\n//!PASS 1\n//!DESC feature map\n//!IN INPUT\n//!OUT featureMap1, featureMap2\n//!BLOCK_SIZE 32, 24\n//!NUM_THREADS 128\n\n#define SH_PIXELS_X  (MP_BLOCK_WIDTH + 4)\n#define SH_PIXELS_Y  (MP_BLOCK_HEIGHT + 4)\n\ngroupshared MF shPixelsY[SH_PIXELS_Y][SH_PIXELS_X];\n\nMF GetLuma(MF3 rgb) {\n\treturn dot(MF3(0.299, 0.587, 0.114), rgb);\n}\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tfloat2 inputPt = GetInputPt();\n\tuint2 inputSize = GetInputSize();\n\tuint i;\n\n\tfor (i = threadId.x * 2; i < SH_PIXELS_X * SH_PIXELS_Y / 2; i += MP_NUM_THREADS_X * 2) {\n\t\tuint2 pos = uint2(i % SH_PIXELS_X, i / SH_PIXELS_X * 2);\n\t\tconst float2 tpos = (blockStart + pos - 1.5f) * inputPt;\n\n\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\tshPixelsY[pos.y][pos.x] = GetLuma(MF3(sr.w, sg.w, sb.w));\n\t\tshPixelsY[pos.y][pos.x + 1] = GetLuma(MF3(sr.z, sg.z, sb.z));\n\t\tshPixelsY[pos.y + 1][pos.x] = GetLuma(MF3(sr.x, sg.x, sb.x));\n\t\tshPixelsY[pos.y + 1][pos.x + 1] = GetLuma(MF3(sr.y, sg.y, sb.y));\n\t}\n\n\tGroupMemoryBarrierWithGroupSync();\n\n\tfor (i = threadId.x; i < MP_BLOCK_WIDTH * MP_BLOCK_HEIGHT; i += MP_NUM_THREADS_X) {\n\t\tconst uint2 pos = uint2(i % MP_BLOCK_WIDTH, i / MP_BLOCK_WIDTH);\n\t\tconst uint2 destPos = blockStart + pos;\n\n\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tMF src[5][5];\n\t\t[unroll]\n\t\tfor (int i = 0; i < 5; ++i) {\n\t\t\t[unroll]\n\t\t\tfor (int j = 0; j < 5; ++j) {\n\t\t\t\tsrc[j][i] = shPixelsY[pos.y + i][pos.x + j];\n\t\t\t}\n\t\t}\n\n\t\tMF4 target1 = MF4(-0.1572492271661758, -0.0120896836742759, 0.0061487639322877, -0.2852848768234253);\n\t\ttarget1 = mad(src[0][0], MF4(-0.0047900392673910, 0.0537447109818459, -0.0000247144635068, 0.0066653941757977), target1);\n\t\ttarget1 = mad(src[0][1], MF4(0.0073144687339664, -0.0309004038572311, -0.0109181385487318, -0.0092840325087309), target1);\n\t\ttarget1 = mad(src[0][2], MF4(0.0591700896620750, 0.1974907070398331, -0.0197357516735792, -0.0546554848551750), target1);\n\t\ttarget1 = mad(src[0][3], MF4(-0.0011764382943511, -0.0299451071768999, 0.0229587312787771, 0.0021908886265010), target1);\n\t\ttarget1 = mad(src[0][4], MF4(0.0098101310431957, 0.0080995410680771, -0.0030452020000666, -0.0132035519927740), target1);\n\t\ttarget1 = mad(src[1][0], MF4(-0.0168330334126949, -0.0743711441755295, -0.0259261634200811, 0.0234480481594801), target1);\n\t\ttarget1 = mad(src[1][1], MF4(0.0239933785051107, 0.1896541714668274, 0.0207756329327822, -0.0370332375168800), target1);\n\t\ttarget1 = mad(src[1][2], MF4(0.0094799501821399, -0.0652511194348335, -0.0004292793164495, -0.0726212188601494), target1);\n\t\ttarget1 = mad(src[1][3], MF4(0.0297284796833992, -0.1210186630487442, -0.0202929321676493, -0.0574462898075581), target1);\n\t\ttarget1 = mad(src[1][4], MF4(-0.0318185277283192, 0.0840775370597839, 0.0110451309010386, 0.0415569432079792), target1);\n\t\ttarget1 = mad(src[2][0], MF4(-0.0253141783177853, 0.1168256178498268, 0.1159729585051537, 0.0963164269924164), target1);\n\t\ttarget1 = mad(src[2][1], MF4(-0.1103615835309029, -0.0276833958923817, -0.4999594092369080, 0.1053867191076279), target1);\n\t\ttarget1 = mad(src[2][2], MF4(1.1100435256958008, 0.0646764487028122, 0.0154005717486143, 0.8891586661338806), target1);\n\t\ttarget1 = mad(src[2][3], MF4(0.1229330673813820, 0.1719468832015991, 0.5730338096618652, -0.1645544171333313), target1);\n\t\ttarget1 = mad(src[2][4], MF4(-0.0090442728251219, -0.3023961782455444, -0.1589493155479431, 0.0418574027717113), target1);\n\t\ttarget1 = mad(src[3][0], MF4(0.0031942036002874, -0.1310926079750061, 0.0075543406419456, -0.0016449346439913), target1);\n\t\ttarget1 = mad(src[3][1], MF4(-0.0995150282979012, -0.0701921209692955, -0.0130895879119635, 0.1344170123338699), target1);\n\t\ttarget1 = mad(src[3][2], MF4(0.0060519003309309, -0.1533465683460236, 0.0114194005727768, 0.0264683905988932), target1);\n\t\ttarget1 = mad(src[3][3], MF4(0.0244008023291826, 0.1881769001483917, -0.0206351149827242, -0.0628309547901154), target1);\n\t\ttarget1 = mad(src[3][4], MF4(0.0075713125988841, 0.0508594363927841, 0.0430423170328140, -0.0124188791960478), target1);\n\t\ttarget1 = mad(src[4][0], MF4(-0.0166875869035721, -0.0047865519300103, 0.0006719123339280, 0.0316803231835365), target1);\n\t\ttarget1 = mad(src[4][1], MF4(-0.0058461269363761, 0.0990798473358154, -0.0177743826061487, -0.0066122291609645), target1);\n\t\ttarget1 = mad(src[4][2], MF4(-0.0972401946783066, -0.0225446373224258, -0.0037693574558944, 0.1953062713146210), target1);\n\t\ttarget1 = mad(src[4][3], MF4(-0.0216837190091610, -0.1824268400669098, 0.0069816261529922, 0.0283037684857845), target1);\n\t\ttarget1 = mad(src[4][4], MF4(-0.0025767991319299, 0.0459827110171318, -0.0080216089263558, 0.0084134787321091), target1);\n\n\t\tMF4 target2 = MF4(0.0541447550058365, 0.0088306749239564, -0.0112389577552676, -0.0127860950306058);\n\t\ttarget2 = mad(src[0][0], MF4(0.0142660010606050, 0.0137931071221828, 0.0061188107356429, -0.0104134222492576), target2);\n\t\ttarget2 = mad(src[0][1], MF4(0.0147292809560895, -0.0289912857115269, 0.0266769435256720, 0.0933856964111328), target2);\n\t\ttarget2 = mad(src[0][2], MF4(-0.1734338253736496, 0.1116316691040993, -0.1973157376050949, -0.0581855811178684), target2);\n\t\ttarget2 = mad(src[0][3], MF4(0.0347507223486900, -0.0341566652059555, 0.0061667622067034, 0.0075258882716298), target2);\n\t\ttarget2 = mad(src[0][4], MF4(0.0069884369149804, -0.0194250214844942, 0.0080830128863454, -0.0036874092184007), target2);\n\t\ttarget2 = mad(src[1][0], MF4(0.0233764201402664, 0.0344744995236397, 0.0162145942449570, 0.0979529991745949), target2);\n\t\ttarget2 = mad(src[1][1], MF4(0.1280796974897385, -0.1018339172005653, -0.0132977198809385, -0.0019474622095004), target2);\n\t\ttarget2 = mad(src[1][2], MF4(0.4286882579326630, 0.1222677752375603, 0.7046694159507751, 0.0945475697517395), target2);\n\t\ttarget2 = mad(src[1][3], MF4(0.1107441782951355, -0.0134433070197701, -0.0174900908023119, -0.1686445474624634), target2);\n\t\ttarget2 = mad(src[1][4], MF4(0.0321478620171547, 0.0065357843413949, 0.0300805997103453, 0.0420113280415535), target2);\n\t\ttarget2 = mad(src[2][0], MF4(-0.1240341588854790, 0.0950303301215172, -0.0129648456349969, -0.2681856453418732), target2);\n\t\ttarget2 = mad(src[2][1], MF4(0.4846960902214050, 0.0351924635469913, 0.0223043337464333, -0.1273630708456039), target2);\n\t\ttarget2 = mad(src[2][2], MF4(-1.9379507303237915, -0.2444442063570023, 0.0291962660849094, -0.3835578560829163), target2);\n\t\ttarget2 = mad(src[2][3], MF4(0.6396278142929077, -0.0765938311815262, -0.0552659817039967, 0.4393545985221863), target2);\n\t\ttarget2 = mad(src[2][4], MF4(-0.1969728022813797, -0.0607173256576061, 0.0131113547831774, 0.0542017817497253), target2);\n\t\ttarget2 = mad(src[3][0], MF4(0.0091696009039879, -0.0031533432193100, -0.0368777588009834, -0.0459998287260532), target2);\n\t\ttarget2 = mad(src[3][1], MF4(0.1096992492675781, 0.2597902715206146, 0.0304869692772627, -0.0195200722664595), target2);\n\t\ttarget2 = mad(src[3][2], MF4(0.2889648377895355, -0.4275591969490051, -0.7414156794548035, 0.2695442438125610), target2);\n\t\ttarget2 = mad(src[3][3], MF4(0.0892018377780914, -0.0229137558490038, 0.0244414471089840, -0.1926898956298828), target2);\n\t\ttarget2 = mad(src[3][4], MF4(0.0576358586549759, 0.0027846973389387, -0.0036861505359411, -0.0253547113388777), target2);\n\t\ttarget2 = mad(src[4][0], MF4(0.0159624069929123, 0.0319602824747562, 0.0019470085389912, 0.0089780492708087), target2);\n\t\ttarget2 = mad(src[4][1], MF4(0.0552792511880398, 0.0543054342269897, 0.0134062822908163, 0.0545728243887424), target2);\n\t\ttarget2 = mad(src[4][2], MF4(-0.1170092225074768, 0.1963327825069427, 0.1503890156745911, 0.1891828328371048), target2);\n\t\ttarget2 = mad(src[4][3], MF4(-0.0084421783685684, 0.1297017931938171, -0.0330600887537003, -0.0942063704133034), target2);\n\t\ttarget2 = mad(src[4][4], MF4(0.0118440408259630, -0.0337875857949257, 0.0055063469335437, 0.0254479162395000), target2);\n\n\t\tfeatureMap1[destPos] = target1;\n\t\tfeatureMap2[destPos] = target2;\n\t}\n}\n\n\n//!PASS 2\n//!DESC mapping 1\n//!IN featureMap1, featureMap2\n//!OUT tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = featureMap1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml1 = featureMap1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = featureMap1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = featureMap1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = featureMap1.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = featureMap1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = featureMap1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = featureMap1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = featureMap1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 tl2 = featureMap2.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml2 = featureMap2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = featureMap2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = featureMap2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = featureMap2.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = featureMap2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = featureMap2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = featureMap2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = featureMap2.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 target1 = MF4(-0.0445119962096214, -0.7632357478141785, 0.0156328510493040, -0.2424548566341400);\n\ttarget1 = MulAdd(tl1, MF4x4(0.1279004216194153, -0.0275541823357344, 0.2275633513927460, 0.2241709381341934, 0.0197204202413559, -0.0456816256046295, -0.1296672523021698, 0.0564568229019642, -0.0241488646715879, -0.0237508192658424, -0.1899632662534714, 0.4177669584751129, -0.1814560592174530, -0.0526473335921764, 0.1154382973909378, -0.0715614855289459), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(-0.0660311505198479, 0.0416736751794815, 0.3146112561225891, 0.1472041457891464, -0.3456672728061676, -0.0055983816273510, 0.0022350433282554, 0.0819796621799469, 0.0057485047727823, 0.1532524228096008, 0.0204557459801435, -0.2500547170639038, -0.0524359568953514, -0.1911625266075134, -0.1078366711735725, -0.1296254843473434), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(0.0904538556933403, -0.0150672039017081, 0.3322310745716095, 0.0638923197984695, 0.5975797176361084, -0.2452044337987900, -0.4947478473186493, -0.0783191770315170, 0.5771877169609070, -0.0870653912425041, -0.8966570496559143, -0.2140965163707733, -0.0493861362338066, -0.0380848757922649, -0.1345319598913193, -0.0186063013970852), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(-0.2523841261863708, 0.1387074738740921, 0.7878478765487671, -0.2251627445220947, 0.2277439534664154, 0.5417668819427490, 0.0866540968418121, -0.1707777529954910, -0.0598246827721596, -0.4717158675193787, -1.2242834568023682, 0.0454643070697784, -0.3503442704677582, 0.0573085807263851, 0.2530198395252228, -0.0207283068448305), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(0.0168380383402109, -0.2142438590526581, -0.0207892972975969, 0.3628533780574799, 0.2431225180625916, 0.3098322153091431, 0.4073205888271332, -0.2762102782726288, -0.0197229012846947, 0.1305596232414246, -0.5697882771492004, -0.2976251542568207, -0.0551432967185974, 0.2614036500453949, -0.1410341411828995, -0.2906406223773956), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(-0.0498303361237049, 0.0224859956651926, 0.1952174901962280, -0.0311204437166452, 0.2501715123653412, -0.5893352627754211, -1.0793941020965576, 0.0160885509103537, 0.5081620812416077, 0.0482814386487007, 0.0546359121799469, -0.0501569248735905, 0.1400523334741592, -0.0106841633096337, -0.0940591320395470, -0.1791856139898300), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(0.0393299944698811, 0.2232691347599030, -0.1055066883563995, -0.1607919186353683, -0.1567825973033905, -0.0042221010662615, -0.0548228211700916, 0.2352052628993988, 0.1483389288187027, 0.7503526806831360, 0.0797731876373291, -0.0049001369625330, -0.0242983382195234, -0.0308702979236841, 0.0828925222158432, 0.0561857633292675), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(0.0926392748951912, -0.0418718457221985, -0.3060409128665924, -0.1883587390184402, 0.0284292586147785, -0.3584854304790497, -0.7909982800483704, -0.0187337957322598, -0.2496993243694305, -0.7520986795425415, 0.3771523833274841, -0.0259053874760866, 0.0337998159229755, 0.2209153026342392, 0.0708771497011185, -0.2814430892467499), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(-0.5287809371948242, 0.5777525901794434, 0.0880500450730324, -0.8452472090721130, -0.3393408954143524, -0.2273543328046799, -0.1298527419567108, 0.4990308582782745, 1.2613251209259033, -0.7636719942092896, 1.5694186687469482, -0.4087363779544830, 0.0874531939625740, 0.7067158818244934, -0.3419588804244995, -0.3265531957149506), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(0.8229957222938538, -0.1236215904355049, -0.1859253048896790, 1.6684840917587280, 0.2000777721405029, -0.1239093989133835, 1.5623438358306885, 0.1779983490705490, 0.1017884835600853, -0.3707404434680939, 1.0626678466796875, -0.3124029338359833, 0.0659058541059494, -0.3585464656352997, -0.1866402775049210, 0.6733445525169373), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(-0.5544115900993347, -0.1892931908369064, 0.2460739761590958, -0.1056193932890892, -0.4318082630634308, 0.1257930994033813, -0.2672747671604156, -0.1690235435962677, 0.0018221997888759, -0.4397548139095306, -0.3007801771163940, 0.1068472340703011, 0.3506655991077423, 0.1143834441900253, 0.1363849341869354, -0.1417382210493088), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(-0.0505668744444847, 0.1831464916467667, 0.3957343697547913, -0.2295413911342621, -0.3892803490161896, 0.5436951518058777, 0.1217770799994469, 0.0223295800387859, -0.4462866187095642, -0.4055982232093811, -0.3771279454231262, 0.0807068347930908, 0.2116729617118835, 0.0281026475131512, -0.0229265503585339, 0.2868605256080627), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(0.1962712109088898, -0.2373334914445877, -2.5208437442779541, -0.1988540291786194, 0.2224564403295517, -0.1783192902803421, -0.3962321281433105, -0.1685980409383774, 0.1910390257835388, 0.2554391324520111, 0.4586416482925415, 0.2779130041599274, -0.2002453953027725, -0.0061091855168343, 1.3808131217956543, 0.0434907525777817), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(-0.0307611189782619, -0.0524470545351505, -0.5897512435913086, -0.0816674903035164, 0.4052906930446625, 0.2542210817337036, -1.9041002988815308, 0.0835462361574173, -0.2484460622072220, -0.0184739269316196, 0.4510098397731781, 0.2587619423866272, 0.1537084281444550, 0.1503131389617920, -0.0742949545383453, 0.0613216012716293), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(0.1772638261318207, 0.0948876664042473, 0.0083848545327783, -0.2919732332229614, 0.2566950321197510, 0.0288751143962145, -0.4624863862991333, -0.0608786940574646, 0.3310996592044830, -0.0104284398257732, 0.6334818005561829, -0.0027201652992517, -0.0342350602149963, 0.1938806027173996, -0.2464301586151123, 0.0125883584842086), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(0.4839433431625366, -0.0502159744501114, -1.1114163398742676, -0.3965759575366974, 0.2117286175489426, 0.0414481423795223, -0.1332397013902664, -0.0549883767962456, -0.1275007277727127, 0.7844302654266357, -0.0095163453370333, 0.0961041301488876, -0.4759134948253632, -0.4284025132656097, -0.2072399407625198, -0.3953579664230347), target1);\n\ttarget1 = MulAdd(br1, MF4x4(0.1605869531631470, -0.1715892106294632, 0.0865620598196983, -0.0464400537312031, -0.2688548862934113, 0.1722514480352402, 0.0167612321674824, -0.0032994034700096, -0.3451044559478760, -0.2280300110578537, -0.0029796555172652, -0.1597652435302734, 0.0500137843191624, 0.1023071259260178, -0.0407028235495090, 0.2228624969720840), target1);\n\ttarget1 = MulAdd(br2, MF4x4(0.6999920010566711, 0.0839441940188408, 0.0815469548106194, -0.1509176045656204, -0.0690853074193001, -0.3200871348381042, 0.0780162736773491, -0.1449639797210693, 0.2868815064430237, 0.3962450027465820, -0.3439113497734070, 0.2657423913478851, 0.0988137871026993, 0.3471299111843109, -0.2186402678489685, -0.0648017078638077), target1);\n\ttarget1 = max(target1, 0) + MF4(1.0311057567596436, 0.1051208898425102, 0.1158760935068130, 0.0466635078191757) * min(target1, 0);\n\n\tMF4 target2 = MF4(0.0713458731770515, -0.1403961777687073, -0.0019562745001167, 0.0153338573873043);\n\ttarget2 = MulAdd(tl1, MF4x4(-0.0950641855597496, -0.1496641039848328, -0.0653550028800964, 0.0655386000871658, -0.0118882004171610, 0.2012491524219513, -0.2844599783420563, -0.4794720113277435, 0.1128025799989700, -0.0173030979931355, -0.0558849945664406, -0.2957552075386047, 0.0128202112391591, 0.0199047476053238, -0.0091027505695820, -0.0789640173316002), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(0.1597457975149155, -0.0476507246494293, 0.1466529071331024, 0.0859163030982018, 0.0797316282987595, -0.3380981683731079, 0.2370245009660721, -0.1145931258797646, -0.0352988094091415, -0.0444888733327389, -0.2100716233253479, 0.1305520236492157, -0.1359029710292816, 0.1097442805767059, 0.0449938289821148, -0.1155664771795273), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(-0.0333916284143925, 0.2415594160556793, 0.0520512908697128, 0.1228107511997223, -0.0491011217236519, 0.4408806562423706, 0.4631956815719604, 0.2014560103416443, -0.3688595592975616, 0.0367180295288563, 0.2484581321477890, -0.1113442853093147, 0.1283355057239532, 0.0418004281818867, -0.0171243026852608, -0.1231943219900131), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(0.3493446409702301, 0.4550022482872009, 0.0368724688887596, 0.0748724937438965, 0.5001406073570251, 0.0145555436611176, 0.1236629858613014, 0.3143120706081390, -0.1951988488435745, -0.0157914645969868, 0.0937998965382576, -0.2233840376138687, 0.5033411383628845, -0.3183194100856781, -0.2259195148944855, 0.3639536798000336), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(-0.0742707476019859, -0.1287801116704941, -0.2533137500286102, 0.0666435658931732, -0.0185621567070484, 0.1427449285984039, -0.0724751204252243, -0.0781485065817833, -0.2270648330450058, -0.2314778864383698, 0.3814929425716400, -0.1655400246381760, 0.0408568829298019, -0.1139645278453827, 0.1797397136688232, -0.0245632305741310), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(0.1184135973453522, 0.0439366139471531, 0.0225226897746325, -0.0038526873104274, 0.1292685419321060, 0.0629177838563919, 0.3455114960670471, -0.1857204884290695, -0.4921502172946930, -0.1171003505587578, 0.0188624169677496, -0.1101682260632515, 0.0676844567060471, 0.5154085755348206, -0.0898379907011986, 0.3413280248641968), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(-0.2631838321685791, 0.0215514600276947, 0.3092688918113708, -0.0200904365628958, 0.0678770467638969, 0.1769931465387344, -0.3653681278228760, -0.3274513185024261, 0.4608019888401031, -0.1544784456491470, 0.1189439669251442, 0.7015876173973083, 0.2732816934585571, -0.0545057803392410, -0.3474545478820801, -0.0253226496279240), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(0.0994316861033440, 0.0642566010355949, 0.2031503319740295, 0.2276959568262100, -0.1094077304005623, 0.4463521838188171, 0.0921792611479759, -0.3033096492290497, -0.0953373983502388, -0.1331395804882050, 0.2615413069725037, -0.2874414622783661, -0.0389687754213810, 0.0338272154331207, 0.2804331183433533, -0.3443813025951385), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(-0.1806042939424515, -0.4840798676013947, 0.4222546219825745, 0.1238701492547989, 0.0117481639608741, -0.5986865758895874, 0.3057619929313660, 0.1934896260499954, -0.7086342573165894, -0.8567376136779785, 0.6944998502731323, -1.4599204063415527, 0.0886754393577576, -0.4293498098850250, -0.1524195969104767, 0.2418079674243927), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(2.1706113815307617, 0.3525652289390564, -0.7008359432220459, -0.4825965166091919, -0.3203429281711578, 0.8500943183898926, -0.7993509769439697, 0.4329842329025269, 0.2106771767139435, 1.1103280782699585, 1.2092385292053223, 1.4814503192901611, -0.4147390127182007, -0.7046836614608765, -0.1443170011043549, -0.6811133027076721), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(-0.1489356607198715, 0.1400019824504852, 0.2425604313611984, -0.2098473459482193, -0.1580564379692078, 0.1463224738836288, -0.2187854647636414, 0.5174596905708313, -0.0143817225471139, -0.0362622961401939, -0.0068237944506109, 0.4749472737312317, 0.2914732992649078, -0.3306328952312469, -0.2444777786731720, -0.1171946674585342), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(0.0455239675939083, 0.3496046066284180, 0.1297491937875748, -0.2541095912456512, 0.3605501055717468, 0.2339573651552200, -0.0188565086573362, -0.0526181310415268, 0.1471424549818039, 0.8212822079658508, 0.0819099843502045, -0.0851665437221527, 0.3739568293094635, 0.1304695755243301, 0.1481167376041412, -0.2134698331356049), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(-0.2076720446348190, -0.0932599306106567, 0.0648527294397354, -0.2374770641326904, -0.0927826911211014, 0.1848200261592865, 0.4131188094615936, 0.3280069231987000, -0.2099185734987259, 0.2130926996469498, -0.0362745784223080, 0.0191331822425127, 0.1590368449687958, 0.0303016249090433, 0.1207325309514999, 0.2451425045728683), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(-0.0135009605437517, -0.0101303057745099, 0.0752487555146217, 0.0533373840153217, -0.0253537259995937, 0.1318614929914474, -0.1263181120157242, 0.0249524712562561, -0.1477261483669281, 0.3236559033393860, 0.0773291289806366, -0.1439673304557800, -0.2005890905857086, 0.0892757251858711, 0.0398719944059849, 0.3675192892551422), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(-0.0193535499274731, -0.2256918102502823, 0.0341436080634594, 0.0795947611331940, 0.1496857404708862, -0.2784725725650787, -0.0582313314080238, -0.2786065340042114, -0.1666128039360046, -0.6534121036529541, 0.2695854306221008, -0.0179719906300306, 0.0015976354479790, 0.0139929885044694, -0.1706486046314240, -0.3274765610694885), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(-0.7170836329460144, 0.0868831276893616, 0.1829078495502472, -0.0076045366004109, 0.1525912433862686, -0.2558896839618683, 0.0893209800124168, -0.3426039516925812, -0.2871107757091522, -0.2445062994956970, 0.1676304638385773, 0.2116415053606033, 0.0883995518088341, -0.3880331516265869, 0.2636835277080536, -0.2514505982398987), target2);\n\ttarget2 = MulAdd(br1, MF4x4(-0.1861270815134048, 0.2000686377286911, -0.1501186788082123, 0.1525203883647919, 0.1969228833913803, 0.1174068301916122, -0.1281060427427292, -0.0854888409376144, 0.0290613435208797, -0.0538076497614384, -0.0251582786440849, 0.0692845508456230, 0.0384319014847279, 0.2888138592243195, 0.1151804402470589, 0.0990421250462532), target2);\n\ttarget2 = MulAdd(br2, MF4x4(-0.0344385802745819, 0.1270371377468109, 0.0922426953911781, -0.0426749102771282, -0.1656492203474045, -0.3273328542709351, -0.0282224025577307, 0.1099396124482155, -0.1113230437040329, 0.2943290174007416, -0.2181112915277481, -0.3177657723426819, -0.1096536740660667, -0.0508293099701405, -0.0256164856255054, -0.0388228967785835), target2);\n\ttarget2 = max(target2, 0) + MF4(0.7142407894134521, 0.0686190053820610, 0.3999933302402496, -1.0247212648391724) * min(target2, 0);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n}\n\n\n//!PASS 3\n//!DESC mapping 2\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 tl2 = tex2.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex2.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 target1 = MF4(0.0203563515096903, 0.1902436912059784, -0.0757935121655464, 0.0393617525696754);\n\ttarget1 = MulAdd(tl1, MF4x4(-0.1080558672547340, -0.0400269515812397, 0.1042881682515144, -0.1994346678256989, 0.0172465778887272, -0.0829331055283546, -0.1278677284717560, -0.0762506872415543, -0.0593080408871174, -0.0305212251842022, 0.1326192617416382, -0.3380933105945587, -0.0722763314843178, -0.1975518912076950, -0.0223602931946516, 0.2251029163599014), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(0.1747678220272064, 0.0297168865799904, 0.1054855734109879, 0.0803295820951462, -0.0338115766644478, -0.3885377943515778, -0.3540246784687042, -0.0719623491168022, -0.0656022280454636, -0.0469004511833191, 0.1379419565200806, 0.0319863893091679, 0.0799935683608055, -0.0099127553403378, 0.1698455959558487, -0.0108015276491642), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(0.1587898135185242, 0.3995443880558014, -0.0333226583898067, 0.2373267263174057, -0.1616930961608887, 0.0659186244010925, 0.0141129801049829, -0.0541022196412086, -0.5743742585182190, 0.1121487766504288, 0.4259817600250244, 0.0280795227736235, -0.3721714317798615, -0.3496374189853668, 0.0997273251414299, -0.0079920450225472), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(0.0928084030747414, 0.3107658624649048, 0.1375299990177155, 0.1550617516040802, -0.0780353918671608, -0.0102957757189870, -0.2056752145290375, -0.3927979469299316, -1.2112152576446533, 0.0213295854628086, 0.1396545022726059, 0.0492016039788723, -0.0569122135639191, -0.1691886335611343, -0.1535325646400452, 0.2800904810428619), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(0.2494744062423706, -0.0363066755235195, 0.0959179550409317, -0.0048101749271154, -0.0195793900638819, 0.0451166369020939, 0.1470773071050644, -0.0050059854984283, 0.2886958122253418, -0.3221147954463959, -0.7062104344367981, 0.1646659970283508, -0.0092520527541637, -0.1254461258649826, 0.0217506736516953, -0.0678806379437447), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(-0.0686557441949844, -0.0414490625262260, -0.1855954080820084, 0.0264346338808537, -0.0296857114881277, -0.0431593284010887, 0.0669397041201591, -0.0946076661348343, -0.2036914378404617, -0.1336101740598679, -0.2099903970956802, -0.1327936947345734, -0.1002155169844627, -0.0368575826287270, -0.1660962998867035, 0.0728288888931274), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(0.5504320859909058, 0.2939232587814331, 0.4704743027687073, 0.2129514217376709, 0.0843106731772423, -0.1978624463081360, -0.3298224806785583, 0.1919094175100327, 0.1980742365121841, -0.0644423812627792, 0.0091170109808445, -0.2124856859445572, 0.0804558470845222, -0.1130188927054405, -0.6276652812957764, 0.1861163526773453), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(-0.3357668519020081, 0.2093413323163986, 0.4355416595935822, 0.1550502777099609, -0.6510964035987854, -0.1751857399940491, -0.2060168534517288, -0.1710205078125000, -0.1202360317111015, -0.2500316798686981, 0.1074745431542397, -0.2418434321880341, 0.0133954072371125, -0.0555886104702950, 0.1514673978090286, 0.2739115655422211), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(-0.3006273508071899, -0.2699472010135651, -0.1982013583183289, -0.0032952548936009, 0.0307833012193441, 0.3671586215496063, -0.0966020002961159, -0.2836556434631348, 0.4297264218330383, 0.6171903610229492, 0.6723483800888062, 0.2705117464065552, -0.1438141316175461, -0.0873940736055374, -0.7001031041145325, -0.2052250355482101), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(-0.2875024676322937, -1.6230558156967163, -0.6733398437500000, -0.9642448425292969, -0.1964960694313049, 0.2485812455415726, 0.1236900389194489, -1.1423941850662231, -0.0412602946162224, 0.3412002623081207, 0.3962794244289398, -0.2490761876106262, -0.0058065578341484, -0.4578708708286285, -0.2418260127305984, 0.5357795953750610), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(0.0062361713498831, 0.1925230026245117, 0.0824977159500122, 0.0561275146901608, 0.0929671525955200, 0.0698546022176743, 0.3816939592361450, 0.0395248420536518, -0.0719512030482292, 0.0564917400479317, -0.1297784000635147, 0.1245511695742607, 0.0012355837970972, -0.0990515723824501, 0.4213519692420959, -0.1645816713571548), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(-0.0611936338245869, -0.0220258161425591, -0.0040935277938843, -0.1060328409075737, -0.0583154149353504, -0.0171997752040625, 0.1058546081185341, 0.2793170809745789, -0.2339317053556442, -0.1972009539604187, -0.0600687190890312, -0.0684379041194916, 0.0243016034364700, -0.2111079394817352, -0.2042971849441528, 0.0724857896566391), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(-0.0833447948098183, -0.0533220991492271, 0.0767802372574806, 0.1182348504662514, -0.0223299078643322, -0.0479344800114632, -0.0119727496057749, 0.0524821877479553, -0.0334780365228653, 0.0719002187252045, 0.0439689308404922, 0.0475181229412556, 0.0764308497309685, 0.0086713796481490, -0.1700707823038101, 0.06573542952537547), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(0.1391696482896805, 0.0739523395895958, 0.0565792545676231, -0.0430364646017551, 0.0943084582686424, 0.0102064209058881, 0.0120795257389545, -0.0841303989291191, 0.1573246121406555, 0.0164279472082853, 0.0988841354846954, -0.1430613398551941, -0.0572808869183064, -0.0844292491674423, 0.0621565617620945, 0.0923799052834511), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(-0.1223107874393463, -0.2441930323839188, -0.2410650849342346, -0.0162935722619295, 0.0695567727088928, -0.0028583710081875, -0.0059417244046926, 0.0715164169669151, -0.0668491795659065, -0.1499572396278381, 0.0869924053549767, 0.0553652904927731, 0.2729566097259521, 0.1370039582252502, -0.1282183527946472, -0.1451860070228577), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(0.1331952214241028, 0.0021079662255943, -0.1116734445095062, -0.4168601930141449, 0.0534659475088120, 0.0037860786542296, -0.0366065911948681, 0.1047701835632324, 0.1491260826587677, 0.0782341659069061, 0.0949895009398460, -0.1160908639431000, -0.1057133302092552, -0.2699718773365021, -0.1193305626511574, 0.2142304331064224), target1);\n\ttarget1 = MulAdd(br1, MF4x4(0.0041565205901861, -0.1065499857068062, -0.0629659667611122, -0.1144768893718719, 0.0318886637687683, -0.0562519319355488, 0.0043422472663224, 0.0226082988083363, -0.1456198990345001, -0.2398656159639359, -0.2625046670436859, -0.0710547044873238, 0.0067904205061495, 0.0018544088816270, 0.1019348874688148, -0.0186133962124586), target1);\n\ttarget1 = MulAdd(br2, MF4x4(0.0732532218098640, 0.1516859829425812, 0.0580205544829369, 0.1968977004289627, -0.0066619524732232, -0.1597842127084732, -0.0990600511431694, -0.1059188917279243, 0.0718481168150902, -0.2222738713026047, -0.1675696671009064, -0.1500017195940018, -0.0568779110908508, -0.0582777932286263, -0.0844587534666061, -0.0263266414403915), target1);\n\ttarget1 = max(target1, 0) + MF4(-0.2459529191255569, 0.7563464641571045, -0.0705636814236641, -0.0094820559024811) * min(target1, 0);\n\n\tMF4 target2 = MF4(-0.0448397286236286, -0.1649267971515656, -0.1192543581128120, -0.0061073559336364);\n\ttarget2 = MulAdd(tl1, MF4x4(0.0724840760231018, -0.0480341166257858, -0.1082391515374184, -0.1447021961212158, 0.0723197236657143, 0.0481830574572086, 0.0009448126656935, 0.0353565886616707, -0.0653375908732414, 0.0029647622723132, -0.0016588598955423, -0.2075651884078979, 0.0403469167649746, 0.3929971158504486, 0.0342363268136978, 0.1427230089902878), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(-0.0743464827537537, 0.1844420731067657, 0.0256296340376139, -0.2808582782745361, 0.0351609662175179, 0.3277008235454559, -0.0205841138958931, -0.5355809330940247, 0.0681906566023827, 0.2058052271604538, -0.0479847639799118, -0.3735262751579285, -0.0261550359427929, -0.1148884072899818, -0.2329017966985703, 0.0728458985686302), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(-0.1236097738146782, 0.1251334398984909, -0.1339431256055832, 0.0198749266564846, -0.1325920224189758, -2.2431972026824951, -0.0680834427475929, -0.5671764612197876, -0.3431925177574158, -0.0983135104179382, -0.2207138091325760, -0.2374879121780396, 0.0127309206873178, 1.3076044321060181, 0.0848151743412018, -0.1928595900535583), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(-0.0471093133091927, -0.1513628512620926, -0.0134263765066862, -0.1519252359867096, -0.5260242223739624, 0.2291621714830399, 0.4088975787162781, -0.4315340518951416, 0.0933236032724380, -1.0386694669723511, 0.0015958193689585, -0.2737887501716614, -0.0246253963559866, -0.2722961604595184, -0.1770633459091187, -0.2291279733181000), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(-0.0017552347853780, 0.1903935521841049, -0.0740704238414764, -0.0917679518461227, 0.0323882810771465, -0.3029108047485352, 0.0532565414905548, -0.0651542618870735, 0.4868686199188232, 0.8539272546768188, 0.4151960313320160, 0.2619662582874298, -0.0413270294666290, 0.1404227763414383, 0.1027320474386215, 0.3274228572845459), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(0.1828346252441406, 0.0274682324379683, -0.1169882863759995, 0.0327291004359722, 0.1786244213581085, -0.6569546461105347, -0.0609031207859516, -0.1676601022481918, -0.1481092721223831, 0.2889067530632019, 0.1246089115738869, 0.2203597426414490, -0.0366856977343559, 0.1539470851421356, 0.0069492300972342, -0.1544002443552017), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(0.2073992937803268, -0.0717074573040009, -0.0196173377335072, -0.0956910699605942, 0.0728898122906685, 0.0484567955136299, 0.3063069283962250, -0.3200540542602539, 0.0291527546942234, -0.0265460256487131, 0.1168476045131683, -0.2479970753192902, 0.1224220171570778, 0.0745823010802269, 0.1868897676467896, -0.1958049237728119), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(0.0019954447634518, -0.0225235987454653, 0.0812198966741562, 0.0295672398060560, -0.2016931176185608, -0.2239151000976562, -0.2481262385845184, -0.2381946444511414, -0.0520484372973442, -0.1200495883822441, 0.2121954560279846, -0.1573531329631805, -0.0198472067713737, 0.1001087054610252, -0.1084884032607079, -0.3126969039440155), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(0.3838330209255219, 0.1678779572248459, 0.6496244072914124, 0.3783606290817261, -0.2198582738637924, -0.2351343184709549, -0.2852248847484589, 0.6310021877288818, 0.8083020448684692, 0.0039323624223471, -0.0901831910014153, 0.0797894075512886, -0.2271467447280884, 0.7082978487014771, 0.1513756662607193, 0.2188975960016251), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(-0.2871031761169434, 0.2316448241472244, 0.4947948157787323, 0.3308620452880859, -0.0623455122113228, -0.1314185708761215, -0.2664661705493927, 0.8725078701972961, 0.4541083276271820, 0.1433589160442352, -1.1269453763961792, 0.6427971124649048, -0.1016561388969421, 0.3418317139148712, -0.0991155728697777, -1.0508837699890137), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(-0.2179604172706604, 0.1258949041366577, -0.1155700981616974, -0.0536149404942989, -0.0140614463016391, -0.0091438721865416, -0.0501774959266186, -0.3570724725723267, -0.5832386016845703, 0.2004123181104660, 0.2986239194869995, -0.8139168024063110, 0.0142666567116976, 0.0681498944759369, 0.1293468028306961, -0.1001938357949257), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(0.1952836811542511, -0.3092494010925293, 0.3063779771327972, 0.1934849917888641, 0.0746696740388870, -0.3533902466297150, -0.1269576102495193, -0.2237875163555145, 0.2470717132091522, -0.2640363574028015, -0.2862776815891266, 0.1740108281373978, -0.0963631942868233, 0.2631850540637970, 0.0400718413293362, -0.3590607047080994), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(-0.5299927592277527, 0.0979989692568779, 0.1666737496852875, -0.1547524333000183, -0.0043443185277283, 0.1540203243494034, 0.0594348423182964, -0.0167275425046682, -0.1043610796332359, 0.0504250898957253, 0.0456700921058655, 0.2525034546852112, 0.2241353541612625, -0.1678503304719925, 0.1532667279243469, 0.2901742458343506), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(0.0998796448111534, 0.0385462641716003, -0.0762400180101395, -0.1255892217159271, 0.0281430184841156, -0.0304958485066891, -0.1440480053424835, -0.1001605167984962, -0.2257689833641052, 0.2056092917919159, 0.0248535349965096, -0.1383949518203735, -0.0951708629727364, 0.0997417271137238, 0.0275330394506454, -0.5728432536125183), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(0.4256163835525513, 0.1745115518569946, -0.2409395426511765, 0.3139856457710266, -0.0036795330233872, 0.1819283962249756, -0.0864531323313713, 0.0102691333740950, -0.3397279977798462, 0.1107075437903404, -0.0035228815395385, -0.2207705229520798, -0.1779139339923859, -0.2106117755174637, 0.0352664291858673, 0.3615589439868927), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(-0.0345224253833294, -0.0669926702976227, 0.0907212942838669, -0.3758732676506042, -0.0452554710209370, -0.1134464666247368, -0.0358871109783649, -0.1858227252960205, -0.0233245138078928, -0.0495684742927551, 0.1976234614849091, -0.1165761798620224, -0.0340447537600994, 0.1095624342560768, 0.0110175255686045, -0.8269239664077759), target2);\n\ttarget2 = MulAdd(br1, MF4x4(-0.1379280686378479, 0.1004267781972885, 0.0723998174071312, -0.1510958224534988, 0.0610648579895496, 0.0451720170676708, -0.0231927260756493, -0.0251553766429424, 0.2306085377931595, 0.1033207178115845, -0.1316205114126205, 0.1130664870142937, -0.0458516106009483, -0.1152514070272446, -0.0088650323450565, -0.0214479379355907), target2);\n\ttarget2 = MulAdd(br2, MF4x4(-0.0545783303678036, -0.0620098188519478, 0.0347074456512928, 0.1096799224615097, 0.0036664425861090, -0.0413107499480247, 0.1443250179290771, -0.1161036714911461, -0.0061624986119568, -0.0252977479249239, 0.3230019211769104, -0.2536626160144806, -0.0565439648926258, 0.0827583819627762, -0.0071726376190782, -0.1983329951763153), target2);\n\ttarget2 = max(target2, 0) + MF4(-0.6312188506126404, -0.1215368881821632, 0.2487443536520004, 0.4051703512668610) * min(target2, 0);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 4\n//!DESC mapping 3\n//!IN tex3, tex4\n//!OUT tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex3.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex3.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 tl2 = tex4.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex4.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 target1 = MF4(-0.0410279631614685, -0.1111723631620407, -0.0406232848763466, -0.0939496159553528);\n\ttarget1 = MulAdd(tl1, MF4x4(0.1221675798296928, 0.0083215842023492, -0.0162804014980793, 0.0316714197397232, -0.2205813378095627, 0.1500435769557953, 0.2109555304050446, 0.2741867899894714, 0.0956874340772629, -0.0896854698657990, -0.1657065600156784, -0.1349759399890900, 0.0601499564945698, -0.1523845940828323, -0.1828087568283081, -0.2727653682231903), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(-0.0918163508176804, 0.1564485579729080, 0.1133174449205399, 0.2215953171253204, -0.0623677000403404, -0.0497728772461414, -0.0372809022665024, -0.0258478187024593, -0.1364922970533371, 0.1053884625434875, 0.3292874991893768, 0.2693256139755249, -0.0347631797194481, -0.1470523178577423, 0.0096792401745915, -0.0542853325605392), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(0.1331177949905396, -0.0964357852935791, -0.0706946700811386, 0.1593225002288818, -0.4815943241119385, 0.1224092170596123, -0.0870430991053581, 0.0005010276800022, -0.0242684502154589, -0.2256436049938202, 0.1367238312959671, 0.0474774017930031, 0.6886650323867798, -0.0065326127223670, 0.1841574758291245, -0.1354993879795074), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(-0.1049591675400734, 0.0515934228897095, 0.1128631457686424, 0.1688040047883987, -0.0084041170775890, -0.0006375144002959, -0.0598374009132385, 0.1424416452646255, -0.0048398924991488, 0.1832167655229568, 0.0231959503144026, 0.0816788375377655, -0.1321710795164108, 0.0397678017616272, -0.0058345394209027, 0.5784573554992676), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(0.1438693851232529, -0.0694608166813850, -0.0428275354206562, 0.1599996536970139, -0.1651254445314407, 0.1388883888721466, -0.0895452573895454, 0.2569831907749176, 0.3150432109832764, -0.0910519883036613, 0.0367441214621067, 0.1903669685125351, 0.2805841267108917, -0.0444608181715012, 0.0059385276399553, -0.2585869431495667), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(-0.1217494234442711, 0.0191769022494555, -0.0065453462302685, 0.1391217857599258, 0.0998920649290085, -0.0162798929959536, 0.0502282194793224, 0.0370145924389362, 0.0290782172232866, -0.0099554909393191, 0.0142515478655696, 0.1248661577701569, -0.0076912571676075, 0.0251651499420404, 0.2190572917461395, 0.0020069130696356), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(0.2666685581207275, -0.1625511497259140, -0.3938800692558289, -0.0253848694264889, 0.0987015441060066, 0.2033616453409195, 0.3128099143505096, 0.4608893990516663, 0.0620003379881382, -0.1389972567558289, -0.3095863461494446, -0.4023511111736298, -0.1105777546763420, 0.1115406602621078, 0.3639950752258301, 0.0645622834563255), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(-0.2135885655879974, -0.1035343706607819, 0.1795026361942291, 0.1828210204839706, 0.0780984908342361, 0.0656728670001030, 0.0033678691834211, 0.1361345648765564, 0.1712654232978821, -0.0172833092510700, -0.0502183400094509, 0.2910411655902863, 0.0691247656941414, 0.1935720741748810, 0.0652214139699936, 0.1608240753412247), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(0.8243460655212402, -0.0979344248771667, -0.0366373993456364, 0.1692261099815369, 0.5517869591712952, 0.3282494544982910, -0.7905511856079102, -0.4462923705577850, -0.0803156569600105, 0.1172509342432022, 0.1864327639341354, 0.1471016854047775, 0.1296005547046661, -0.1004103720188141, 0.3174172043800354, -0.1181766316294670), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(0.0259374529123306, -0.0934808850288391, 0.3008874654769897, 0.3957927823066711, -0.4048821926116943, 0.1461934000253677, -0.1819096356630325, -0.1908810287714005, 0.3193186521530151, -0.7438099980354309, 0.1919509470462799, -0.2065188735723495, 0.1752236187458038, -0.6840037107467651, 0.1588519066572189, -0.3956064879894257), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(0.1574442386627197, -0.0114925103262067, -0.1208277940750122, 0.2058266401290894, 0.2879209220409393, -0.0419875606894493, -0.1902059614658356, -0.2723863720893860, -0.1086223348975182, -0.0870924964547157, 0.8605937957763672, 0.2656622231006622, -0.1653763055801392, 0.0816384851932526, -0.0137870563194156, 0.1433854848146439), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(-0.1565909236669540, -0.0307490080595016, -0.1055604666471481, 0.2573592662811279, -0.1186821162700653, 0.1141471788287163, -0.0272745657712221, -0.1049114838242531, 0.2445316016674042, -0.0027864547446370, -0.1759569346904755, -0.1556979566812515, 0.0550616309046745, 0.1704383641481400, 0.0853662937879562, 0.3280856907367706), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(0.1460669338703156, 0.4202052652835846, -0.3638312816619873, -0.0958623066544533, -0.0492525361478329, -0.3664234280586243, 0.0794373303651810, 0.0399017669260502, 0.0629198029637337, 0.1662959158420563, -0.1001493930816650, -0.0587460733950138, -0.0396478697657585, 0.0017320754704997, 0.0314909480512142, -0.0202700830996037), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(-0.0964399129152298, 0.0380319654941559, 0.0396055467426777, 0.0265473183244467, -0.0161637403070927, -0.1872924566268921, 0.1670000404119492, 0.0029466480482370, -0.1093841269612312, -0.3629201948642731, -0.0562992505729198, 0.1792684197425842, -0.0203859098255634, 0.0983991250395775, 0.0058611719869077, 0.1627455651760101), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(-0.1117974221706390, 0.7562329173088074, -0.2046248912811279, 0.1677842289209366, -0.2063486129045486, -0.6023545265197754, -0.5739209651947021, 0.5110496878623962, -0.0715268924832344, -0.1373793482780457, 0.1251420378684998, -0.0477442294359207, 0.4961377978324890, 0.2688887119293213, 0.3146316707134247, -0.5197153687477112), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(-0.1314805448055267, 0.0746279135346413, 0.3457699418067932, 0.2564856410026550, 0.0839370116591454, -0.6136511564254761, -0.4646295011043549, 0.0612256154417992, -0.1910563558340073, -0.0935136750340462, -0.2426030039787292, 0.2102959007024765, 0.1575350016355515, 0.6145061254501343, 0.3368154168128967, -0.0974092856049538), target1);\n\ttarget1 = MulAdd(br1, MF4x4(0.0565315335988998, 0.2393359094858170, -0.0932938233017921, 0.1555283814668655, 0.0123879108577967, -0.1247719228267670, -0.0564610138535500, -0.1125799044966698, -0.0104600470513105, 0.0482629500329494, 0.2316472232341766, 0.1083717569708824, -0.0525921434164047, 0.0643989592790604, -0.0525734610855579, -0.0503251366317272), target1);\n\ttarget1 = MulAdd(br2, MF4x4(-0.1835366338491440, 0.0978360474109650, -0.1111819595098495, 0.2109299153089523, 0.0509372949600220, -0.1992686837911606, 0.0677929744124413, -0.0870024710893631, -0.0412262082099915, -0.0697719156742096, -0.0967373847961426, 0.0137308547273278, 0.0195730421692133, 0.0410240143537521, 0.1157210171222687, 0.2283479571342468), target1);\n\ttarget1 = max(target1, 0) + MF4(0.1991519331932068, -0.1275756657123566, -0.0622864030301571, 0.1586369574069977) * min(target1, 0);\n\n\tMF4 target2 = MF4(-0.0089084329083562, -0.0336172059178352, 0.0177190825343132, 0.0529975406825542);\n\ttarget2 = MulAdd(tl1, MF4x4(-0.0275970958173275, 0.0141968233510852, 0.1181544512510300, -0.0572245270013809, 0.1161347925662994, -0.1156444773077965, -0.2549640238285065, 0.0882879272103310, -0.0715355500578880, 0.0151285668835044, 0.1079384386539459, 0.0650847703218460, -0.1597152203321457, 0.0669793561100960, 0.2084401696920395, -0.0951152443885803), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(0.0404323227703571, -0.0206144321709871, -0.1080420613288879, -0.2038477361202240, 0.0248847268521786, -0.0064681121148169, 0.0389525443315506, 0.0011026862775907, 0.0885242074728012, 0.0295896343886852, -0.3323790132999420, 0.1935138553380966, -0.0466548874974251, 0.1023886054754257, 0.1257870644330978, -0.1541756242513657), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(-0.0076520540751517, 0.0361139886081219, 0.1749804913997650, -0.2051989138126373, 0.0022692133206874, -0.0282937753945589, -0.2039019316434860, -0.2343468815088272, -0.0357327871024609, -0.0570764988660812, 0.2925858795642853, -0.1988349705934525, -0.0584560707211494, -0.0341510921716690, 0.1300961822271347, 0.5184492468833923), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(0.0884973928332329, 0.0333527140319347, 0.0180535931140184, -0.2655122876167297, 0.0433661043643951, 0.0104369185864925, 0.0010909073753282, -0.0705273598432541, -0.0602585524320602, 0.2420269846916199, -0.4731841087341309, -0.8040290474891663, 0.3066828548908234, -0.2466925680637360, 0.0938910692930222, -0.2002603262662888), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(0.0549152903258801, 0.0291299298405647, 0.0946277007460594, -0.0581608228385448, 0.0669180899858475, -0.0635575056076050, -0.2427970170974731, -0.2677550315856934, 0.2226776182651520, 0.1301570236682892, -0.1519709974527359, 0.0671724304556847, -0.0526433289051056, 0.1898351758718491, 0.2383745312690735, 0.21917118132114417), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(-0.0234222635626793, 0.0238620284944773, 0.0427630320191383, -0.1080563366413116, 0.0332126952707767, -0.0039051575586200, 0.0293126031756401, 0.0161924213171005, 0.0453971028327942, 0.0131999952718616, -0.0689036697149277, 0.2349009960889816, 0.1013344153761864, 0.2706570029258728, 0.1191426888108253, -0.2830821871757507), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(0.0181465242058039, -0.0571886636316776, 0.4875229001045227, -0.4244020283222198, 0.4331104159355164, 0.1066712513566017, -0.5277034044265747, 0.1110567077994347, -0.1179447323083878, -0.0273578558117151, 0.1798476576805115, -0.2829602360725403, 0.1012385115027428, -0.2528488039970398, 0.1697608679533005, 0.1121710017323494), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(-0.1404130905866623, -0.0984055623412132, -0.0279541295021772, -0.1321212500333786, -0.0841855704784393, 0.1336171030998230, -0.1458790600299835, -0.0044095455668867, 0.2203754037618637, 0.1455714553594589, -0.2362042963504791, -0.0329121425747871, -0.1683547794818878, 0.0289597529917955, 0.3424547612667084, 0.0143845872953534), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(0.0287246014922857, 0.1948280781507492, 0.5998955368995667, 0.1192114129662514, -0.6269109249114990, 0.8724324703216553, -0.6399638652801514, -0.4201497733592987, -0.3355066180229187, -0.1566904038190842, -0.4396412074565887, 0.1525828838348389, 0.5573399066925049, 0.2324324846267700, 0.2762884795665741, 0.0406046211719513), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(0.3890096545219421, -0.0574061162769794, -0.1468243300914764, -0.5953360199928284, -0.1363215148448944, -0.2224670499563217, -0.2237723320722580, 0.2738097012042999, -0.4868114292621613, -0.5029351711273193, -0.3570256233215332, -0.1776263266801834, -0.0176672954112291, -0.4318660795688629, 1.0395888090133667, 0.1728395074605942), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(0.1337304115295410, -0.0809440389275551, 0.1600498855113983, -0.1108811497688293, -0.2376178801059723, -0.1532768607139587, -0.0447455830872059, 0.2515332102775574, 0.4848278462886810, -0.0915748402476311, -0.0336527302861214, -0.2141884714365005, 0.2125129699707031, 0.3237875998020172, 0.0022272330243140, -0.0167857185006142), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(0.0457934997975826, 0.0510537698864937, -0.0519523508846760, -0.4506326615810394, -0.1029204949736595, 0.0116113182157278, -0.1750748157501221, -0.0048758201301098, 0.1506977379322052, 0.0633068457245827, -0.1628549993038177, -0.0144928665831685, 0.1408756822347641, 0.2896180152893066, 0.0803691521286964, -0.4930096566677094), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(-0.0484248884022236, 0.1371297985315323, -0.1235475391149521, -0.2618594765663147, -0.0280395895242691, 0.0248795989900827, 0.1204105168581009, 0.3246576189994812, 0.0426272377371788, -0.0520061068236828, 0.0575957447290421, -0.2613646090030670, 0.1165295541286469, -0.0390013493597507, -0.0470846109092236, -0.0014663023175672), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(-0.1066762879490852, -0.0869804695248604, -0.0099332248792052, -0.1355892717838287, -0.0760413780808449, 0.1377770304679871, -0.0263407956808805, 0.0880135521292686, 0.1496269851922989, -0.0487459264695644, 0.1286851912736893, 0.2218491584062576, 0.1723349541425705, -0.0165541302412748, -0.0690477639436722, -0.2388458102941513), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(-0.4236431121826172, 0.0465179122984409, -0.1526456624269485, 0.1426440477371216, 0.5913932919502258, -0.1082349196076393, 0.2731275856494904, -0.2687640488147736, -0.4628683030605316, -0.0537119321525097, -0.1597615629434586, 0.0528527684509754, -0.3485085070133209, 0.1395110934972763, 0.0642972290515900, 0.0323829315602779), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(0.0066713397391140, -0.0482029877603054, -0.1707276403903961, -0.1001396998763084, 0.0539822019636631, -0.1624453216791153, 0.4913550019264221, 0.3687861263751984, 0.0491421781480312, 0.1311376541852951, 0.0992425829172134, -0.4636098444461823, -0.3415873646736145, -0.0153833786025643, -0.0270162131637335, -0.0935514941811562), target2);\n\ttarget2 = MulAdd(br1, MF4x4(-0.1738258153200150, 0.0458541549742222, -0.0653749182820320, -0.0156540926545858, -0.0357586294412613, -0.1486178338527679, 0.1798035055398941, -0.1310307979583740, 0.0783249065279961, -0.0261360015720129, -0.1047066971659660, 0.3385537564754486, -0.0339452810585499, 0.2299628853797913, -0.1408322304487228, -0.0352708548307419), target2);\n\ttarget2 = MulAdd(br2, MF4x4(0.0463018082082272, 0.0565674640238285, -0.0538956597447395, -0.2354862987995148, 0.0297824125736952, 0.0307939313352108, 0.1271791011095047, -0.1025698855519295, 0.1060482114553452, -0.0703211054205894, -0.0083062350749969, 0.0474255047738552, 0.0442508421838284, 0.1569559425115585, -0.0442709513008595, -0.1188704669475555), target2);\n\ttarget2 = max(target2, 0) + MF4(0.7366524934768677, 1.0013850927352905, -0.0276311747729778, 0.0734841898083687) * min(target2, 0);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n}\n\n\n//!PASS 5\n//!DESC mapping 4, sub-band residuals\n//!IN tex1, tex2, featureMap1, featureMap2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 tl2 = tex2.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex2.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 c1 = { -0.1306160986423492,-0.0808217376470566,-0.2880123555660248,0.0099629526957870 };\n\tc1 = MulAdd(tl1, MF4x4(-0.1033539846539497, 0.0541300140321255, -0.0804840475320816, -0.0334571413695812, -0.0264753755182028, 0.1118840202689171, 0.1186013221740723, -0.0127575425431132, 0.2236593365669250, 0.0025286162272096, 0.0985530614852905, 0.0685181617736816, -0.1884875595569611, 0.0530862808227539, -0.0482063069939613, 0.0375233069062233), c1);\n\tc1 = MulAdd(tl2, MF4x4(0.1837068796157837, -0.0632847175002098, 0.0016613919287920, 0.0392861217260361, 0.2923883199691772, -0.1713902205228806, 0.1907587945461273, 0.0550456829369068, 0.0644215345382690, -0.1046456992626190, 0.0187383033335209, 0.0770180150866508, 0.1933846622705460, -0.0455715768039227, 0.0375007353723049, -0.1053109914064407), c1);\n\tc1 = MulAdd(ml1, MF4x4(-0.0972480997443199, 0.2820451855659485, 0.0114549007266760, -0.0954328626394272, 0.0706252008676529, 0.4829064607620239, -0.6371517181396484, 0.0005180989392102, 0.3280143439769745, 0.0665246024727821, -0.0503116399049759, -0.1261110603809357, 0.1114177703857422, -0.2053108513355255, 0.1428771317005157, 0.3926100134849548), c1);\n\tc1 = MulAdd(ml2, MF4x4(-0.2571723163127899, 0.1627264618873596, -0.4940335154533386, -0.1361546218395233, 0.0804422944784164, -0.4231885373592377, 0.0650202706456184, 0.0518481098115444, -0.0502478554844856, -0.1305799931287766, 0.1814480125904083, 0.0090866927057505, -0.0510044656693935, -0.1691461503505707, 0.0922467112541199, -0.0314207412302494), c1);\n\tc1 = MulAdd(bl1, MF4x4(0.1270498335361481, 0.0563284493982792, -0.0435525141656399, 0.1569847911596298, 0.0576847903430462, 0.3461692929267883, -0.0325655154883862, -0.2688976824283600, -0.1341977864503860, -0.1382253766059875, 0.2293784171342850, -0.1111817285418510, -0.1402447521686554, -0.3257531225681305, 0.0598510466516018, 0.1008039116859436), c1);\n\tc1 = MulAdd(bl2, MF4x4(0.1698816716670990, 0.3491003513336182, -0.1367681026458740, -0.1165873408317566, -0.2091718912124634, -0.1487034261226654, -0.0569749698042870, -0.2100717276334763, 0.0404917001724243, -0.1372035890817642, 0.0689046755433083, -0.0367818064987659, -0.0325474888086319, -0.0114965448155999, -0.0137249026447535, -0.0279692262411118), c1);\n\tc1 = MulAdd(tc1, MF4x4(-0.0563433989882469, 0.0132494345307350, -0.2434540390968323, 0.0796563774347305, -0.2109155058860779, 0.0387088693678379, -0.0591037571430206, 0.0955820381641388, 0.4660535752773285, -0.1204202473163605, 0.1332369595766068, -0.0285425651818514, -0.3886952698230743, -0.0434980578720570, -0.0849134400486946, 0.0802380964159966), c1);\n\tc1 = MulAdd(tc2, MF4x4(0.0412235632538795, 0.1571959257125854, 0.2050069272518158, -0.1138664111495018, 0.1962715685367584, 0.0594439841806889, 0.0351715497672558, -0.0129811102524400, 0.2055217623710632, -0.0647534057497978, 0.0373471938073635, 0.0877277255058289, -0.5734645724296570, 0.1188675239682198, -0.1145943328738213, -0.1182733029127121), c1);\n\tc1 = MulAdd(mc1, MF4x4(-0.2004909217357635, -0.4817073047161102, 0.5596802830696106, -0.0327854752540588, 0.0989314392209053, 0.4127818942070007, 0.7265836596488953, -0.2692042589187622, 0.5195841789245605, -0.2357539832592010, -0.3819393217563629, 0.1755530238151550, 0.6578183770179749, 0.1075539961457253, -0.2688144743442535, 0.3242723941802979), c1);\n\tc1 = MulAdd(mc2, MF4x4(-0.3221310675144196, 0.2978510260581970, 0.2269985526800156, -0.3184116482734680, 0.4845580160617828, 0.4407236874103546, 0.0099756307899952, -0.3121858239173889, -0.3810067176818848, -0.0553649961948395, 0.0202834140509367, 0.0409953594207764, 0.2532750964164734, 0.2731618583202362, 0.1237529441714287, 0.0134243080392480), c1);\n\tc1 = MulAdd(bc1, MF4x4(0.1835541725158691, 0.0549701862037182, -0.1749316602945328, -0.2030028849840164, 0.0263462308794260, 0.2781440317630768, 0.0372458845376968, 0.3643021881580353, -0.4047883749008179, 0.0660117194056511, 0.4863115549087524, -0.2024163603782654, -0.6403482556343079, 0.2765505611896515, 0.1417075097560883, 0.5064445734024048), c1);\n\tc1 = MulAdd(bc2, MF4x4(0.6106975078582764, -0.1570862233638763, -0.3223383128643036, -0.2497926801443100, -0.4854303300380707, 0.0132978223264217, -0.0609334111213684, 0.1285556703805923, -0.1412864029407501, -0.1379042416810989, -0.0258826259523630, 0.1357705891132355, -0.1285902857780457, -0.0577826797962189, 0.0550044551491737, 0.1717510819435120), c1);\n\tc1 = MulAdd(tr1, MF4x4(0.1389609426259995, 0.0835867226123810, 0.0309768319129944, -0.0278116948902607, -0.0390677824616432, -0.0111810686066747, -0.0025318188127130, 0.0069569633342326, 0.0347319357097149, 0.0191543344408274, 0.0314339138567448, -0.0228427499532700, 0.0416300334036350, 0.0249234102666378, 0.1210031509399414, 0.1142473593354225), c1);\n\tc1 = MulAdd(tr2, MF4x4(0.0607251487672329, 0.0386395826935768, -0.0219341218471527, -0.1102298423647881, 0.1487188935279846, 0.0602982006967068, -0.0280748903751373, -0.0211924221366644, 0.0042894422076643, -0.0269144997000694, 0.0814756453037262, -0.0314031280577183, -0.0213186051696539, -0.1362965404987335, 0.0382767543196678, -0.0669511556625366), c1);\n\tc1 = MulAdd(mr1, MF4x4(-0.2397561967372894, 0.3023172020912170, -0.2398054003715515, 0.0041919997893274, -0.1016605198383331, -0.1521034836769104, -0.1526568531990051, 0.0272433310747147, 0.0741761848330498, 0.1116370111703873, 0.1149727106094360, -0.0809784531593323, -0.1448147594928741, -0.0943927690386772, -0.0086280042305589, 0.1243222951889038), c1);\n\tc1 = MulAdd(mr2, MF4x4(-0.0469366572797298, -0.1655988991260529, -0.1029584184288979, -0.1347874104976654, 0.2064601778984070, 0.0521226711571217, -0.1366733759641647, -0.0041872998699546, 0.1077186539769173, 0.0184442866593599, -0.2309073060750961, -0.1637075096368790, -0.0417953692376614, -0.3190860450267792, -0.1593534499406815, 0.0136412177234888), c1);\n\tc1 = MulAdd(br1, MF4x4(0.1698798984289169, 0.0232755411416292, -0.0876034423708916, -0.3008348643779755, 0.0789884999394417, 0.0034748215693980, -0.0064704762771726, 0.0057828431017697, -0.0190630126744509, -0.0334153175354004, -0.0195646341890097, 0.0105131156742573, 0.0995147302746773, -0.3130289018154144, -0.0724022984504700, 0.0113303456455469), c1);\n\tc1 = MulAdd(br2, MF4x4(-0.0027791252359748, -0.0193455871194601, -0.0415000133216381, 0.0568981170654297, -0.2745247483253479, 0.1222846284508705, 0.1899162530899048, 0.1067754998803139, -0.0561975166201591, -0.1500336527824402, 0.0526139959692955, -0.3491798937320709, -0.0692384615540504, -0.0307095069438219, 0.0498757846653461, 0.0019003645284101), c1);\n\tc1 = max(c1, 0) + MF4(0.1552927196025848, 0.0782765746116638, 0.7966942191123962, -1.1619627475738525) * min(c1, 0);\n\n\tMF4 c2 = { -0.1443098634481430,-0.1343899369239807,-0.0624338127672672,-0.1094277128577232 };\n\tc2 = MulAdd(tl1, MF4x4(-0.0689977407455444, -0.1693786680698395, 0.0109281269833446, 0.0609922930598259, 0.0296908002346754, 0.1195700988173485, -0.0694077461957932, 0.0971287414431572, 0.0253518298268318, 0.1213042959570885, 0.0703809782862663, 0.0055739870294929, -0.1595942378044128, -0.1336689442396164, -0.0622441768646240, -0.0428023114800453), c2);\n\tc2 = MulAdd(tl2, MF4x4(0.0860001668334007, -0.0226618759334087, 0.1602241247892380, 0.0431661494076252, 0.1526461094617844, 0.2752982378005981, 0.0960300788283348, -0.0536719262599945, -0.0171773489564657, 0.0457364916801453, -0.0360932648181915, -0.0397153608500957, -0.0277090407907963, 0.0729821547865868, -0.0145150292664766, 0.0252893269062042), c2);\n\tc2 = MulAdd(ml1, MF4x4(-0.1407091915607452, -0.4007499516010284, -0.0302001200616360, -0.0606933943927288, -0.2960600554943085, -0.2263117432594299, 0.0721478462219238, -0.4578711986541748, 0.0960150733590126, -0.1606502830982208, 0.2444226741790771, 0.0000882153908606, 0.1472496986389160, 0.3256779909133911, -0.2132861614227295, 0.0339313484728336), c2);\n\tc2 = MulAdd(ml2, MF4x4(-0.1477648764848709, -0.1487885862588882, -0.1973863691091537, 0.0717295333743095, 0.0843430235981941, 0.6259996294975281, -0.1214931011199951, -0.1274987608194351, 0.2359549105167389, 0.3002171218395233, -0.0825233608484268, -0.0157950688153505, 0.0706149637699127, 0.1762917637825012, -0.0611497573554516, -0.0859689489006996), c2);\n\tc2 = MulAdd(bl1, MF4x4(0.0174895934760571, -0.0567042417824268, 0.0409146919846535, 0.0258173532783985, 0.1421577036380768, 0.1234543323516846, -0.1721662431955338, 0.1492216140031815, 0.1100751459598541, 0.0501539446413517, 0.1100447699427605, -0.1086079254746437, -0.0608497932553291, 0.0087817469611764, 0.0714464113116264, -0.1285197436809540), c2);\n\tc2 = MulAdd(bl2, MF4x4(-0.0017177806003019, -0.1463395059108734, -0.1085453778505325, 0.1650195866823196, 0.0813829153776169, 0.1102061793208122, -0.0578421875834465, -0.0232036896049976, -0.1239888817071915, 0.0155465165153146, 0.1079114526510239, -0.0420837886631489, -0.0775837749242783, 0.0148941157385707, -0.0502299368381500, -0.0654754191637039), c2);\n\tc2 = MulAdd(tc1, MF4x4(0.0918162539601326, 0.0440697595477104, -0.0515748932957649, 0.0417411290109158, 0.0353216230869293, 0.1535954177379608, 0.0439723692834377, -0.1288845241069794, 0.1076577678322792, -0.1306740194559097, 0.0715952813625336, -0.0681907683610916, -0.3798767924308777, 0.1023928597569466, -0.0970670804381371, 0.0077168666757643), c2);\n\tc2 = MulAdd(tc2, MF4x4(0.0634560957551003, -0.0550306066870689, 0.2073986232280731, 0.0520241297781467, 0.1162287592887878, -0.2218665480613708, 0.3199682831764221, 0.0606246069073677, -0.0058511858806014, -0.0667045339941978, -0.0449917949736118, 0.0707788690924644, -0.3323366343975067, -0.0763893201947212, -0.0997853428125381, -0.1181001588702202), c2);\n\tc2 = MulAdd(mc1, MF4x4(-0.3101258873939514, 0.2616009712219238, 0.0584651045501232, 0.1656491309404373, -0.0069236233830452, 0.2573371529579163, -0.1793291717767715, -0.2718756198883057, 0.0953581258654594, 0.0524105131626129, 0.1183085516095161, 0.0583294369280338, 0.5036848187446594, -0.5763167142868042, -0.2119628041982651, -0.3140562772750854), c2);\n\tc2 = MulAdd(mc2, MF4x4(-0.2497755438089371, -0.0146329319104552, -0.2741575539112091, 0.2459975033998489, 0.3562706708908081, -0.6528629064559937, -0.4287456274032593, 0.2055913358926773, 0.1739019453525543, -0.3855968713760376, -0.0958273336291313, -0.7066691517829895, 0.2365748286247253, -0.3046728968620300, -0.2590373754501343, -0.0496727414429188), c2);\n\tc2 = MulAdd(bc1, MF4x4(-0.0844531357288361, -0.0321611948311329, -0.0951840654015541, 0.0577518045902252, -0.1606003493070602, 0.2776086628437042, -0.1355003118515015, -0.0880064144730568, -0.1277643740177155, -0.0514567233622074, 0.1522682905197144, -0.1040910631418228, -0.2767944037914276, -0.1452194601297379, 0.0089118303731084, 0.0231996178627014), c2);\n\tc2 = MulAdd(bc2, MF4x4(0.2603267133235931, 0.0167464651167393, -0.2064073234796524, 0.1782064288854599, 0.4890212416648865, 0.0559245310723782, 0.1221160590648651, -0.0202587731182575, -0.4056585729122162, -0.1839511841535568, 0.2775998413562775, 0.0024275144096464, -0.2624500989913940, -0.0619418807327747, 0.0153478365391493, 0.0123427547514439), c2);\n\tc2 = MulAdd(tr1, MF4x4(0.0816635638475418, -0.0134946266189218, 0.0594766475260258, -0.0551253929734230, 0.0134431896731257, -0.0652195811271667, -0.0563635528087616, -0.0066532371565700, -0.0004114551993553, 0.0105680683627725, 0.1324467360973358, 0.0467248968780041, 0.0301312971860170, -0.1073397025465965, -0.0363437235355377, -0.0474153012037277), c2);\n\tc2 = MulAdd(tr2, MF4x4(0.0199097190052271, 0.0901319086551666, 0.0448978282511234, 0.0505443066358566, 0.0438878424465656, -0.0494784042239189, 0.0724927335977554, -0.0070675504393876, -0.0012125011999160, 0.0295279901474714, 0.0705125033855438, 0.0555334389209747, -0.0403393507003784, -0.1271172016859055, 0.0017914215568453, 0.1462216079235077), c2);\n\tc2 = MulAdd(mr1, MF4x4(-0.2827299833297729, 0.2052399665117264, 0.0042732120491564, -0.3969024717807770, -0.0782120972871780, 0.1960176974534988, -0.0675340741872787, 0.0027962317690253, 0.0516129024326801, -0.0352642722427845, 0.0546326488256454, 0.0065340655855834, -0.1062376946210861, 0.1364430636167526, -0.0536947809159756, 0.2098117172718048), c2);\n\tc2 = MulAdd(mr2, MF4x4(0.0045875865034759, 0.2162927240133286, -0.2158576399087906, -0.0047327815555036, 0.1251590698957443, 0.1279677897691727, -0.1188964918255806, 0.0328494384884834, 0.0076038073748350, -0.0561547242105007, 0.0335608273744583, 0.4332321286201477, 0.0021786799188703, 0.0844521671533585, -0.2102309316396713, -0.0189208015799522), c2);\n\tc2 = MulAdd(br1, MF4x4(0.0933093801140785, 0.1548244059085846, -0.0598701611161232, 0.0357220247387886, -0.1141726672649384, 0.0536412484943867, -0.0159156844019890, -0.0445508137345314, 0.1883231997489929, -0.1547038406133652, 0.0530619807541370, 0.0059371814131737, 0.0602529086172581, -0.0435577929019928, 0.0083390390500426, 0.0191930737346411), c2);\n\tc2 = MulAdd(br2, MF4x4(-0.0351041629910469, 0.2119503468275070, -0.0841927304863930, 0.0079463515430689, 0.0683520361781120, -0.1657009869813919, 0.0611055232584476, -0.0063667562790215, 0.0330024957656860, -0.1810818463563919, 0.0872574150562286, 0.1485669612884521, -0.1305806934833527, 0.0041402997449040, 0.0223289318382740, -0.0141495745629072), c2);\n\tc2 = max(c2, 0) + MF4(0.5769761204719543, 0.1716064810752869, -0.0821026712656021, 0.2092144042253494) * min(c2, 0);\n\n\tMF4 target1 = MF4(0.0245648548007011, -0.4467784762382507, 0.0197526942938566, -0.0110000418499112);\n\ttarget1 = MulAdd(c1, MF4x4(0.0302665308117867, -0.9262221455574036, -0.1161134764552116, -0.0506900474429131, 0.2716045379638672, -0.0485871583223343, 0.0044713355600834, -0.4274623394012451, 0.0749531090259552, -0.3700785338878632, 0.0350039415061474, -0.0540786534547806, -0.0607390031218529, -0.8019900321960449, 0.0923245251178741, 0.1258827745914459), target1);\n\ttarget1 = MulAdd(c2, MF4x4(-0.0649135261774063, 0.0815236791968346, 0.0067334296181798, 0.1277425885200500, -0.0051357815973461, -0.1485908329486847, 0.0074226572178304, 0.0050623500719666, 0.0588018335402012, -0.0692552924156189, 0.1288725286722183, -0.0989386290311813, 0.0427936837077141, 0.0967708528041840, -0.0455632135272026, -0.0711275041103363), target1);\n\ttarget1 += featureMap1.SampleLevel(sam, pos, 0);\n\ttarget1 = max(target1, 0) + MF4(0.9927186965942383, 0.0570580027997494, 1.3226752281188965, 1.0069466829299927) * min(target1, 0);\n\n\tMF4 target2 = MF4(-0.0425243787467480, -0.3715015351772308, -0.0256227850914001, -0.2774516046047211);\n\ttarget2 = MulAdd(c1, MF4x4(0.0238118842244148, 0.0295480657368898, -0.0066418983042240, 0.1021223962306976, -0.0568209178745747, -0.4355100393295288, -0.2700522541999817, -0.2060186564922333, -0.0689613372087479, -0.1689691990613937, -0.0306748505681753, -0.2461252212524414, -0.0057375836186111, -0.1892303228378296, -0.0285871494561434, -0.5032613277435303), target2);\n\ttarget2 = MulAdd(c2, MF4x4(0.5463213324546814, 0.0972800329327583, 0.0307560767978430, 0.0678058937191963, -0.0356063023209572, -0.7013865113258362, 0.1890443563461304, -0.1036657467484474, -0.1745826154947281, -0.2942218780517578, -0.0485423319041729, -0.2983124554157257, -0.0524431839585304, -0.3261034786701202, 0.3217246532440186, 0.1958018541336060), target2);\n\ttarget2 += featureMap2.SampleLevel(sam, pos, 0);\n\ttarget2 = max(target2, 0) + MF4(0.1391339898109436, 0.0960328355431557, 0.6235341429710388, 0.1177272796630859) * min(target2, 0);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 6\n//!DESC sub-pixel convolution, aggregation \n//!IN tex3, tex4, INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nconst static MF2x3 rgb2uv = {\n\t-0.169, -0.331, 0.5,\n\t0.5, -0.419, -0.081\n};\n\nconst static MF3x3 yuv2rgb = {\n\t1, -0.00093, 1.401687,\n\t1, -0.3437, -0.71417,\n\t1, 1.77216, 0.00099\n};\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 outputPt = GetOutputPt();\n\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex3.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex3.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 tl2 = tex4.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex4.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 result = { 0.2010385394096375,0.2058132737874985,0.1918809115886688,0.1961363703012466 };\n\tresult = MulAdd(tl1, MF4x4(-0.0005980331334285, -0.0095877395942807, -0.0149448839947581, -0.0026380482595414, 0.0320665836334229, -0.0706205591559410, -0.0054677254520357, 0.0215112231671810, -0.0025710910558701, -0.0000433265340689, 0.0044494951143861, -0.0034823501482606, -0.0050858515314758, 0.0109513988718390, 0.0208286065608263, -0.0032168829347938), result);\n\tresult = MulAdd(tl2, MF4x4(-0.0145305208861828, 0.0246876608580351, -0.0038286084309220, -0.0033089490607381, -0.0920709222555161, -0.0767898634076118, 0.0012083095498383, -0.0751532614231110, 0.0001302754972130, -0.0107085108757019, -0.0010383903281763, -0.0059571005403996, 0.0809685289859772, 0.0414833538234234, 0.0227938480675220, -0.0211347509175539), result);\n\tresult = MulAdd(ml1, MF4x4(0.0160999298095703, 0.0364215746521950, -0.0377063788473606, -0.0449111759662628, -0.0476365163922310, 0.1522845029830933, -0.0131391752511263, -0.0476671792566776, -0.0378389135003090, 0.0235454943031073, 0.0224007442593575, -0.0010372076649219, -0.0089435689151287, -0.0293026417493820, 0.0274190884083509, 0.0469092652201653), result);\n\tresult = MulAdd(ml2, MF4x4(0.0297575183212757, -0.0132508194074035, -0.0044682323932648, -0.0096222748979926, 0.2525918781757355, 0.1873829364776611, -0.5599535703659058, -0.2372044622898102, 0.0033207221422344, 0.0256173480302095, 0.0294605866074562, 0.0323960892856121, -0.1679904460906982, -0.1278967708349228, 0.3168168365955353, 0.1978507637977600), result);\n\tresult = MulAdd(bl1, MF4x4(-0.0047590560279787, -0.0149335600435734, 0.0033453819341958, -0.0012247267877683, 0.1112466752529144, 0.0147760482504964, 0.0031189601868391, 0.0391573049128056, -0.0028154491446912, -0.0036881719715893, -0.0116015253588557, -0.0037573333829641, 0.0047581391409039, 0.0071071563288569, -0.0033221673220396, 0.0004882142529823), result);\n\tresult = MulAdd(bl2, MF4x4(-0.0025197160430253, -0.0018677815096453, 0.0038254233077168, 0.0041981274262071, -0.1321131736040115, -0.0494364202022552, 0.0760654658079147, -0.1386690139770508, -0.0016222692793235, -0.0060105528682470, 0.0010201989207417, 0.0092753591015935, -0.0194614846259356, 0.0087382243946195, -0.0606758072972298, 0.0156162241473794), result);\n\tresult = MulAdd(tc1, MF4x4(-0.0073722628876567, 0.0012844242155552, 0.0241398401558399, -0.0075527969747782, -0.0865194946527481, -0.0610522404313087, 0.0289319511502981, -0.0994452014565468, 0.0281447004526854, -0.0250582899898291, 0.0044891634024680, -0.0246205236762762, 0.0112307453528047, -0.0010844616917893, -0.0223584957420826, 0.0177635718137026), result);\n\tresult = MulAdd(tc2, MF4x4(-0.0585863515734673, 0.0953190475702286, -0.0555586628615856, 0.1033507287502289, 0.1560877263545990, -0.0690897777676582, -0.0341389514505863, -0.0661668032407761, 0.0531073249876499, -0.0266165956854820, -0.0203275382518768, 0.0017760475166142, -0.1300747394561768, 0.1810652017593384, 0.0381597876548767, 0.1397419273853302), result);\n\tresult = MulAdd(mc1, MF4x4(0.6259804368019104, 0.6062518954277039, 0.5450409054756165, 0.5966195464134216, -0.0423948727548122, 0.0760537460446358, -0.0113651463761926, 0.3007817566394806, -0.3218322694301605, 0.2713021934032440, -0.3143473267555237, 0.2303840517997742, 0.3493050038814545, 0.3590726852416992, 0.4138027429580688, 0.3391666412353516), result);\n\tresult = MulAdd(mc2, MF4x4(0.0790478289127350, -0.0978994593024254, 0.0779844969511032, -0.0823706611990929, 0.0094470111653209, 0.1671760678291321, 0.1201528310775757, -0.2016288936138153, 0.3667598366737366, 0.3651430010795593, -0.3612343966960907, -0.2978236973285675, -0.4231655597686768, 0.0091423410922289, -0.1918412446975708, 0.4224558770656586), result);\n\tresult = MulAdd(bc1, MF4x4(-0.0186564289033413, 0.0274957418441772, -0.0064405309967697, 0.0056951809674501, 0.4864942431449890, -0.2563461959362030, 0.4357284605503082, -0.2976118028163910, 0.0374982468783855, 0.0167757049202919, 0.0305800959467888, 0.0232830215245485, 0.0138373551890254, -0.0191283021122217, 0.0032355054281652, 0.0055057541467249), result);\n\tresult = MulAdd(bc2, MF4x4(-0.0276355985552073, 0.0048149987123907, -0.0251619722694159, -0.0057246969081461, 0.0271473955363035, -0.0042668608948588, -0.0594691745936871, 0.2255926281213760, -0.0203660242259502, 0.0721646770834923, 0.0137230781838298, -0.0650938376784325, -0.3049557507038116, 0.2035628110170364, -0.2509683668613434, 0.1962853819131851), result);\n\tresult = MulAdd(tr1, MF4x4(0.0109980758279562, -0.0053752651438117, -0.0112550277262926, 0.0024017230607569, 0.0362104885280132, 0.0084348218515515, -0.0106990104541183, -0.0207723993808031, -0.0014961160486564, 0.0066790678538382, 0.0028113177977502, 0.0025022011250257, -0.0093937022611499, 0.0016421369509771, 0.0035362334456295, -0.0058064293116331), result);\n\tresult = MulAdd(tr2, MF4x4(0.0138889988884330, -0.0078343702480197, 0.0061464929021895, 0.0202130675315857, -0.0257590841501951, -0.0366640128195286, 0.0250097587704659, -0.0498071312904358, -0.0103149358183146, -0.0001786737266229, -0.0099909817799926, 0.0062733208760619, 0.0131437368690968, -0.0005469865864143, -0.0388854071497917, 0.0612070746719837), result);\n\tresult = MulAdd(mr1, MF4x4(0.0052813654765487, 0.0215748809278011, 0.0107395220547915, -0.0079439217224717, 0.0382786765694618, 0.0697424262762070, -0.0415962152183056, 0.0657853558659554, 0.0209470037370920, -0.0218399092555046, -0.0447359494864941, 0.0407319553196430, -0.0040902681648731, -0.0196106657385826, -0.0018554026028141, 0.0203906055539846), result);\n\tresult = MulAdd(mr2, MF4x4(-0.0106181986629963, 0.0084018819034100, 0.0131329754367471, -0.0198754761368036, 0.1117177084088326, 0.0990846082568169, -0.0732304081320763, 0.0163581725209951, -0.0648830309510231, -0.0451613292098045, 0.0206844564527273, 0.0031441387254745, -0.0106161693111062, -0.0567689687013626, 0.0782861113548279, -0.0306094046682119), result);\n\tresult = MulAdd(br1, MF4x4(0.0012452082009986, -0.0026056850329041, -0.0096226977184415, -0.0037850935477763, -0.0190967041999102, 0.0534373670816422, 0.1599360853433609, 0.0834670960903168, -0.0070255175232887, 0.0012873009545729, 0.0030876772943884, -0.0093916896730661, -0.0033529615029693, 0.0043485122732818, 0.0089034689590335, -0.0067489291541278), result);\n\tresult = MulAdd(br2, MF4x4(0.0004713654634543, -0.0034161377698183, -0.0026913962792605, 0.0053522582165897, -0.0040974905714393, 0.0273330621421337, -0.0333138220012188, -0.0701237097382545, 0.0082997502759099, -0.0183656588196754, -0.0122841577976942, -0.0052855615504086, -0.0023795007728040, -0.0438593104481697, -0.1101513057947159, -0.0182559806853533), result);\n\n\t[unroll]\n\tfor (uint i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j <= 1; ++j) {\n\t\t\tconst uint2 destPos = gxy + uint2(i, j);\n\n\t\t\tMF2 originUV = mul(rgb2uv, INPUT.SampleLevel(sam1, (destPos + 0.5f) * outputPt, 0).rgb);\n\t\t\tconst uint index = i * 2 + j;\n\t\t\tOUTPUT[destPos] = MF4(mul(yuv2rgb, MF3(result[index], originUV)), 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/FSRCNNX/FSRCNNX_LineArt.hlsl",
    "content": "// FSRCNNX_x2_8-0-4-1_LineArt\n// 移植自 https://github.com/igv/FSRCNN-TensorFlow\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!USE MulAdd\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D featureMap1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D featureMap2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex3;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex4;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n//!PASS 1\n//!DESC feature map\n//!IN INPUT\n//!OUT featureMap1, featureMap2\n//!BLOCK_SIZE 32, 24\n//!NUM_THREADS 128\n\n#define SH_PIXELS_X  (MP_BLOCK_WIDTH + 4)\n#define SH_PIXELS_Y  (MP_BLOCK_HEIGHT + 4)\n\ngroupshared MF shPixelsY[SH_PIXELS_Y][SH_PIXELS_X];\n\nMF GetLuma(MF3 rgb) {\n\treturn dot(MF3(0.299f, 0.587f, 0.114f), rgb);\n}\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tfloat2 inputPt = GetInputPt();\n\tuint2 inputSize = GetInputSize();\n\tuint i;\n\n\tfor (i = threadId.x * 2; i < SH_PIXELS_X * SH_PIXELS_Y / 2; i += MP_NUM_THREADS_X * 2) {\n\t\tuint2 pos = uint2(i % SH_PIXELS_X, i / SH_PIXELS_X * 2);\n\t\tconst float2 tpos = (blockStart + pos - 1.5f) * inputPt;\n\n\t\tconst MF4 sr = INPUT.GatherRed(sam, tpos);\n\t\tconst MF4 sg = INPUT.GatherGreen(sam, tpos);\n\t\tconst MF4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\tshPixelsY[pos.y][pos.x] = GetLuma(MF3(sr.w, sg.w, sb.w));\n\t\tshPixelsY[pos.y][pos.x + 1] = GetLuma(MF3(sr.z, sg.z, sb.z));\n\t\tshPixelsY[pos.y + 1][pos.x] = GetLuma(MF3(sr.x, sg.x, sb.x));\n\t\tshPixelsY[pos.y + 1][pos.x + 1] = GetLuma(MF3(sr.y, sg.y, sb.y));\n\t}\n\n\tGroupMemoryBarrierWithGroupSync();\n\n\tfor (i = threadId.x; i < MP_BLOCK_WIDTH * MP_BLOCK_HEIGHT; i += MP_NUM_THREADS_X) {\n\t\tconst uint2 pos = uint2(i % MP_BLOCK_WIDTH, i / MP_BLOCK_WIDTH);\n\t\tconst uint2 destPos = blockStart + pos;\n\n\t\tif (destPos.x >= inputSize.x || destPos.y >= inputSize.y) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tMF src[5][5];\n\t\t[unroll]\n\t\tfor (int i = 0; i < 5; ++i) {\n\t\t\t[unroll]\n\t\t\tfor (int j = 0; j < 5; ++j) {\n\t\t\t\tsrc[j][i] = shPixelsY[pos.y + i][pos.x + j];\n\t\t\t}\n\t\t}\n\n\t\tMF4 target1 = MF4(-0.3117050230503082, 0.1817725896835327, 0.0011673698900267, -0.0044658286496997);\n\t\ttarget1 = mad(src[0][0], MF4(-0.0187959559261799, -0.0206312909722328, 0.0226501729339361, 0.0111862262710929), target1);\n\t\ttarget1 = mad(src[0][1], MF4(0.0469042696058750, 0.0428658165037632, -0.0208927169442177, -0.0053485808894038), target1);\n\t\ttarget1 = mad(src[0][2], MF4(0.0486242026090622, 0.0268428903073072, -0.1095351055264473, -0.0197027549147606), target1);\n\t\ttarget1 = mad(src[0][3], MF4(-0.0301427692174911, -0.0444439016282558, 0.0803908482193947, -0.0072240661829710), target1);\n\t\ttarget1 = mad(src[0][4], MF4(0.0097448397427797, 0.0132117131724954, -0.0087575586512685, 0.0003270092420280), target1);\n\t\ttarget1 = mad(src[1][0], MF4(0.0227436870336533, 0.0284603293985128, -0.0899902656674385, 0.0174379274249077), target1);\n\t\ttarget1 = mad(src[1][1], MF4(-0.0880827009677887, -0.0890802741050720, 0.3386772871017456, -0.0749290063977242), target1);\n\t\ttarget1 = mad(src[1][2], MF4(-0.0832799598574638, -0.1518420130014420, 0.1693033277988434, 0.1514045447111130), target1);\n\t\ttarget1 = mad(src[1][3], MF4(0.0490957386791706, 0.0839962288737297, 0.0323486365377903, -0.0491475425660610), target1);\n\t\ttarget1 = mad(src[1][4], MF4(0.0281097982078791, 0.0267692077904940, -0.0460123419761658, 0.0137899341061711), target1);\n\t\ttarget1 = mad(src[2][0], MF4(0.0592067055404186, -0.0008030450553633, 0.1280025541782379, -0.0270480886101723), target1);\n\t\ttarget1 = mad(src[2][1], MF4(-0.0784756019711494, -0.0078630214557052, -0.1963789612054825, 0.2132134586572647), target1);\n\t\ttarget1 = mad(src[2][2], MF4(0.9478371739387512, -0.7432878613471985, -0.4691794812679291, -0.4196422100067139), target1);\n\t\ttarget1 = mad(src[2][3], MF4(0.1578149050474167, -0.0874812081456184, 0.1223142221570015, 0.2514914274215698), target1);\n\t\ttarget1 = mad(src[2][4], MF4(0.0576529577374458, 0.0775778889656067, 0.0526014007627964, -0.1151828765869141), target1);\n\t\ttarget1 = mad(src[3][0], MF4(-0.0459806136786938, -0.0550342053174973, -0.0553226508200169, -0.0042642662301660), target1);\n\t\ttarget1 = mad(src[3][1], MF4(0.1346504986286163, 0.1795998811721802, -0.0741422399878502, -0.0004661275597755), target1);\n\t\ttarget1 = mad(src[3][2], MF4(-0.0344312079250813, -0.0998986735939980, 0.2834288179874420, 0.1789152175188065), target1);\n\t\ttarget1 = mad(src[3][3], MF4(-0.0376542955636978, -0.0137260686606169, -0.2183600962162018, -0.0829529240727425), target1);\n\t\ttarget1 = mad(src[3][4], MF4(0.0143303163349628, 0.0085790483281016, 0.0312815308570862, 0.0557830408215523), target1);\n\t\ttarget1 = mad(src[4][0], MF4(0.0196402054280043, 0.0245775021612644, 0.0333996489644051, 0.0064323167316616), target1);\n\t\ttarget1 = mad(src[4][1], MF4(-0.0247105974704027, -0.0139399459585547, 0.0039188005030155, 0.0138866743072867), target1);\n\t\ttarget1 = mad(src[4][2], MF4(0.0688862130045891, 0.0629303157329559, -0.0323157459497452, -0.1300792843103409), target1);\n\t\ttarget1 = mad(src[4][3], MF4(0.0111092608422041, 0.0116711426526308, 0.0460555553436279, 0.0563828162848949), target1);\n\t\ttarget1 = mad(src[4][4], MF4(-0.0043270774185658, -0.0096766958013177, -0.0235258601605892, -0.0409700050950050), target1);\n\n\t\tMF4 target2 = MF4(0.0165165197104216, 0.0061719734221697, -0.0008248710073531, -0.0774794667959213);\n\t\ttarget2 = mad(src[0][0], MF4(-0.0127812735736370, -0.0146999256685376, 0.0025963818188757, 0.0008133125957102), target2);\n\t\ttarget2 = mad(src[0][1], MF4(0.0192508958280087, 0.0089628640562296, 0.0046624913811684, -0.0005601323791780), target2);\n\t\ttarget2 = mad(src[0][2], MF4(-0.1021092385053635, -0.0491660982370377, -0.0818324312567711, -0.0719010531902313), target2);\n\t\ttarget2 = mad(src[0][3], MF4(0.0166876111179590, -0.0046075899153948, 0.0258100070059299, -0.0235325042158365), target2);\n\t\ttarget2 = mad(src[0][4], MF4(-0.0028500237967819, -0.0020616643596441, -0.0073093594983220, -0.0034190006554127), target2);\n\t\ttarget2 = mad(src[1][0], MF4(0.0024815262295306, 0.0222324915230274, -0.0080765523016453, 0.0105959763750434), target2);\n\t\ttarget2 = mad(src[1][1], MF4(0.1017390340566635, 0.0138921840116382, 0.0559288635849953, -0.0168517548590899), target2);\n\t\ttarget2 = mad(src[1][2], MF4(0.1267367750406265, -0.2365809977054596, 0.4724994897842407, -0.0154752098023891), target2);\n\t\ttarget2 = mad(src[1][3], MF4(0.0847241580486298, 0.1127829849720001, -0.0643212646245956, 0.0177757386118174), target2);\n\t\ttarget2 = mad(src[1][4], MF4(-0.0354492329061031, -0.0234994646161795, 0.0336676724255085, 0.0153558924794197), target2);\n\t\ttarget2 = mad(src[2][0], MF4(-0.1001686528325081, 0.0175829399377108, -0.0146998856216669, -0.0897502079606056), target2);\n\t\ttarget2 = mad(src[2][1], MF4(0.0973328053951263, -0.5987607836723328, -0.0770601108670235, 0.2343221157789230), target2);\n\t\ttarget2 = mad(src[2][2], MF4(-1.0639246702194214, 0.5335622429847717, -0.2365868240594864, 0.6484431028366089), target2);\n\t\ttarget2 = mad(src[2][3], MF4(-0.0258918590843678, 0.1439655423164368, 0.2597847878932953, -0.5380389094352722), target2);\n\t\ttarget2 = mad(src[2][4], MF4(0.0333042629063129, -0.0408495217561722, 0.0026879014912993, 0.0496195442974567), target2);\n\t\ttarget2 = mad(src[3][0], MF4(0.0017764334334061, 0.0032939016819000, -0.0121603077277541, -0.0066827093251050), target2);\n\t\ttarget2 = mad(src[3][1], MF4(0.0497846752405167, 0.0766935721039772, 0.0505562871694565, 0.0058483541943133), target2);\n\t\ttarget2 = mad(src[3][2], MF4(0.6903248429298401, 0.0658241882920265, -0.4562527537345886, -0.0117225451394916), target2);\n\t\ttarget2 = mad(src[3][3], MF4(0.1896255612373352, -0.0459045991301537, -0.0380226671695709, -0.0333303771913052), target2);\n\t\ttarget2 = mad(src[3][4], MF4(-0.0868696048855782, 0.0157926902174950, 0.0011628456413746, 0.0207170285284519), target2);\n\t\ttarget2 = mad(src[4][0], MF4(0.0130701754242182, -0.0067251212894917, -0.0007082104566507, -0.0017002354143187), target2);\n\t\ttarget2 = mad(src[4][1], MF4(0.0029672298114747, -0.0060487915761769, 0.0191176552325487, 0.0520425662398338), target2);\n\t\ttarget2 = mad(src[4][2], MF4(-0.0253955777734518, -0.0159530192613602, 0.0304108783602715, -0.0263646803796291), target2);\n\t\ttarget2 = mad(src[4][3], MF4(-0.0708072409033775, 0.0109798992052674, 0.0285820439457893, 0.0188453849405050), target2);\n\t\ttarget2 = mad(src[4][4], MF4(0.0698847994208336, -0.0164128411561251, 0.0043246182613075, -0.0244176983833313), target2);\n\n\t\tfeatureMap1[destPos] = target1;\n\t\tfeatureMap2[destPos] = target2;\n\t}\n}\n\n\n//!PASS 2\n//!DESC mapping 1\n//!IN featureMap1, featureMap2\n//!OUT tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = featureMap1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml1 = featureMap1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = featureMap1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = featureMap1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = featureMap1.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = featureMap1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = featureMap1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = featureMap1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = featureMap1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 tl2 = featureMap2.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml2 = featureMap2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = featureMap2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = featureMap2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = featureMap2.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = featureMap2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = featureMap2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = featureMap2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = featureMap2.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 target1 = MF4(-0.0031195033807307, -0.0977938771247864, 0.0337169878184795, 0.0840695425868034);\n\ttarget1 = MulAdd(tl1, MF4x4(0.0028950418345630, 0.2153117954730988, -0.1120878234505653, 0.1065240651369095, -0.0902118757367134, 0.2227627933025360, -0.1268638819456100, 0.0378417931497097, 0.0262128096073866, 0.1100647151470184, -0.0224360711872578, -0.2487984448671341, 0.3278627693653107, 0.3930607438087463, -0.3361104130744934, -0.2318559885025024), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(-0.1388952732086182, -0.0210590325295925, -0.0107318097725511, 0.1340505480766296, -0.2403931617736816, 0.4324082732200623, -0.1229069381952286, -0.1129430904984474, -0.2194076776504517, -0.2529417872428894, 0.2493167072534561, 0.1228863969445229, -0.6289532780647278, 0.2511698901653290, -0.1145481690764427, -0.1931190490722656), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(0.0802633240818977, -0.2823207676410675, -0.0453533977270126, 0.2149281948804855, 0.2391699999570847, -0.3012505769729614, -0.0672336667776108, 0.1134754717350006, -0.1874532252550125, 0.2426864057779312, 0.0001024203302222, -0.2685940861701965, -0.2393693625926971, -0.0148733090609312, 0.4815890491008759, -0.5666245818138123), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(0.2353847920894623, 0.7481728792190552, 0.0613395981490612, -0.3136185705661774, -0.6453479528427124, 0.2987860739231110, -0.1935778856277466, -0.4407877624034882, -0.1155721992254257, -0.8143445253372192, -0.1829861551523209, 0.0808847546577454, 0.3689287006855011, -0.1318729221820831, 0.1494798213243484, -0.7250000834465027), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(-0.2325237691402435, -0.0383906811475754, -0.0762876123189926, 0.0158057715743780, -0.3222318589687347, -0.0946261659264565, -0.1157991588115692, 0.2080847620964050, -0.1521182358264923, 0.4038263857364655, -0.2508496940135956, 0.0620750486850739, 0.1382832378149033, -0.1788915544748306, -0.1054779291152954, -0.1079574525356293), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(0.0441149584949017, -0.1473216116428375, 0.1350974887609482, -0.2101743519306183, 0.4860914349555969, -0.0438372306525707, 0.1496813595294952, 0.1337997019290924, 0.2939592599868774, -0.2875731289386749, 0.3024089336395264, 0.2730985283851624, 0.3860357403755188, -0.2070714235305786, 0.0471001267433167, 0.0515876151621342), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(-0.0282726809382439, -0.0808876901865005, -0.1294671446084976, 0.0327957235276699, 0.2005466669797897, 0.0710152760148048, -0.2951858937740326, 0.1284866034984589, -0.3245949447154999, -0.2784474790096283, -0.0651488602161407, 0.2024642229080200, -0.1790685206651688, -0.1523464322090149, 0.0683958381414413, -0.0721997469663620), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(0.2084605693817139, 0.2224501073360443, 0.2990169227123260, -0.0822417438030243, 0.1661120802164078, 0.2242873460054398, 0.3008987009525299, -0.0589924007654190, 1.0089585781097412, 0.3364263474941254, 0.3114744126796722, -0.4205997586250305, 0.2149223387241364, -0.2686808407306671, 0.6869788169860840, 0.0397010855376720), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(-0.1719545274972916, 0.2342357635498047, -0.1108281537890434, 0.0051285717636347, -0.5348495244979858, -0.0063809715211391, -0.2947000265121460, 0.0092384787276387, 0.1788431107997894, -0.8757466077804565, -0.0199933666735888, -0.0933040529489517, -1.1017562150955200, -1.1397477388381958, -0.8490890264511108, 2.0844755172729492), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(-0.7517850399017334, -0.6626257300376892, -1.7181873321533203, 1.3924138545989990, 0.3148886561393738, 1.2373961210250854, 0.8413697481155396, 0.2569177746772766, 0.1905626207590103, -0.8806108832359314, 0.7340399026870728, 1.8838906288146973, -0.1782593727111816, 0.3429502546787262, -0.3488911390304565, -0.6653195619583130), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(0.1612574905157089, -0.0092199165374041, -0.2294603884220123, 0.2070839852094650, 0.1995067894458771, -0.1586991697549820, -0.1423671096563339, 0.1524601876735687, 0.6368640661239624, -0.1302748024463654, 0.2046667486429214, 0.4024843573570251, 0.3522947132587433, 1.0427794456481934, -0.4195784628391266, -0.7421376705169678), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(-0.0139375794678926, 0.0099870329722762, 0.1957603991031647, 0.2892707288265228, -0.0361699834465981, 0.5173625946044922, -0.0569337680935860, 0.1873179972171783, -1.0557887554168701, 0.2226557582616806, 0.0604930445551872, 0.3329092264175415, -0.1138753890991211, 0.3199435174465179, 0.0987524166703224, 0.1584812700748444), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(-0.1148171499371529, 0.0505522675812244, -0.1067250370979309, 0.0587497279047966, -0.3531772792339325, -0.0130594912916422, -0.0051763984374702, 0.0720054879784584, -0.2512235343456268, 0.5235862731933594, 0.1203625276684761, 0.0220968686044216, 0.5066124200820923, -0.2726359069347382, 0.3687904477119446, -0.3189409077167511), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(0.2119312435388565, -0.0852348133921623, 0.1512662768363953, 0.0316264666616917, 0.2671527862548828, 0.2980401515960693, -0.1022484675049782, -0.1188400015234947, 0.1485718190670013, 0.2684609889984131, 0.1905853003263474, -0.1392537802457809, 0.4225537180900574, 0.0611033178865910, -0.0134558668360114, -0.2009256333112717), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(-0.0571580827236176, -0.0214836131781340, -0.2749050855636597, 0.0790889635682106, -0.0811165198683739, -0.2081381976604462, -0.3047288656234741, 0.0027117941062897, -0.2009213417768478, -0.7622461318969727, -0.4736055433750153, 0.2779547572135925, 0.4795901477336884, 0.7571166157722473, 1.2372496128082275, -0.7046401500701904), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(-0.1537595987319946, 0.3831464648246765, -0.1571276187896729, -0.1867597997188568, 0.6104238033294678, 0.0229409243911505, 0.2101978808641434, -0.1350114792585373, 0.4454170167446136, 0.3683053851127625, -0.3370352983474731, -0.3944822549819946, -0.4503754675388336, -0.4261152446269989, 0.5954129695892334, 0.0479046516120434), target1);\n\ttarget1 = MulAdd(br1, MF4x4(0.2166123390197754, 0.0542660057544708, 0.1477318406105042, 0.1632562726736069, 0.4279211461544037, 0.2100527286529541, -0.0213893372565508, 0.3388189971446991, 0.2154107838869095, -0.2220560610294342, -0.0808312967419624, 0.1158433631062508, -0.1609301865100861, 0.4950682818889618, 0.4356543123722076, -0.0398453846573830), target1);\n\ttarget1 = MulAdd(br2, MF4x4(0.0525114983320236, 0.1031088456511497, -0.2437869310379028, -0.1797652095556259, -0.2139296382665634, -0.0230520907789469, 0.0188236199319363, 0.2274840623140335, 0.2199348062276840, -0.0977248921990395, 0.0661730542778969, -0.1618098169565201, -0.1215345263481140, -0.2456843554973602, -0.1434712260961533, -0.1226665675640106), target1);\n\ttarget1 = max(target1, 0) + MF4(-0.9874631166458130, 0.2700935602188110, 1.0154639482498169, 0.7301973104476929) * min(target1, 0);\n\n\tMF4 target2 = MF4(0.0170604288578033, -0.0097856530919671, 0.0882583037018776, 0.0158541873097420);\n\ttarget2 = MulAdd(tl1, MF4x4(0.1967887729406357, -0.0514578297734261, 0.0351365692913532, -0.0027727256529033, 0.0978068783879280, -0.3902593851089478, 0.0123964082449675, -0.1210777312517166, 0.3820665776729584, -0.5003674030303955, 0.0546922460198402, -0.0777103230357170, 0.9743819236755371, -0.3239430189132690, -0.2496883124113083, 0.1733392328023911), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(-0.1924884468317032, 0.5075340867042542, -0.0542841143906116, 0.0434595011174679, 0.1881206482648849, -0.1774751842021942, -0.1752865165472031, 0.0315622761845589, -0.4268247485160828, 0.3984751403331757, -0.0704891532659531, -0.0969574451446533, 0.1777588576078415, 0.2743588685989380, -0.0317226983606815, -0.1993683725595474), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(-0.1353080570697784, -0.0161478724330664, 0.0713945776224136, 0.1482806354761124, -0.0025943452492356, -0.0296892002224922, 0.1426411569118500, 0.3263220191001892, 0.3354269266128540, -0.0851829424500465, 0.1781585812568665, -0.0421005003154278, -0.5350970029830933, -1.3111218214035034, 0.2340501397848129, -0.9513134956359863), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(-0.0965117588639259, -0.3247327506542206, 0.1102668121457100, -0.1604842394590378, 0.4602060914039612, 0.0756718367338181, -0.3309438228607178, -0.3001569509506226, 0.2267884165048599, 0.1377216577529907, -0.0426548905670643, 0.1272846758365631, -0.1080727055668831, -0.4640344679355621, -0.3294694125652313, -0.2043451815843582), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(0.0720937326550484, -0.1846759617328644, -0.1708657741546631, -0.0725364983081818, 0.1260499358177185, -0.1162428930401802, -0.2501497566699982, -0.1012131050229073, 0.2760527133941650, -0.0939920768141747, 0.2875119149684906, 0.0406376719474792, 0.1008657962083817, -0.1240409687161446, -0.4121425449848175, 0.3269978761672974), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(0.0125542022287846, 0.2582587003707886, 0.1726561784744263, 0.0180624593049288, 0.0579377673566341, -0.0663961246609688, -0.0078865075483918, -0.0506187379360199, -0.0882500410079956, -0.0282228980213404, -0.1616529822349548, -0.1816279888153076, 0.1482390761375427, -0.3260181546211243, 0.1757252663373947, 0.1394872069358826), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(-0.0768914818763733, -0.1610976904630661, -0.0581125281751156, 0.1043644994497299, -0.0832794085144997, 0.1854220479726791, -0.0097211552783847, 0.2851990759372711, -0.6227292418479919, -0.2649715840816498, 0.4023403823375702, -0.2051993161439896, 0.4956052303314209, 0.8367735743522644, 0.2145122885704041, 0.3317213356494904), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(0.9697892665863037, -0.2038540095090866, -0.3166446983814240, -0.0504710040986538, 0.1532189846038818, 0.3050784170627594, -0.1300316900014877, -0.2059933692216873, 0.4894859492778778, -0.3882815837860107, -0.7273328304290771, 0.3463444113731384, -0.8791087865829468, -0.2762917280197144, -0.2789021134376526, -0.1907687485218048), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(0.1201086342334747, 0.1047629937529564, -0.3030976653099060, 0.0362001918256283, -0.2728919386863708, -0.5267004966735840, 0.1090360283851624, -0.2792145609855652, -0.3083780109882355, 0.2616442143917084, 0.4801669716835022, 0.1518263220787048, -1.6350433826446533, 0.7567611336708069, -1.9801075458526611, 1.1116229295730591), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(-0.6893532276153564, -0.3531652688980103, -0.1891958266496658, 1.7840391397476196, 1.4943064451217651, 0.7292221188545227, -1.7417374849319458, 0.0550648272037506, -0.1120251268148422, 0.8250336647033691, 1.1355321407318115, -1.1124770641326904, -0.2689424455165863, 0.9269363284111023, 1.9637582302093506, -0.3709079027175903), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(-0.0544882826507092, -0.1718381494283676, -0.1280352175235748, 0.1454906165599823, -0.1176344379782677, 0.0151336872950196, -0.2567785680294037, 0.2511477768421173, 0.3610197603702545, 0.5843607783317566, 0.0848828330636024, 0.1415835469961166, 0.4969498217105865, 0.5772764682769775, 0.5247990489006042, -0.0598939247429371), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(0.0529166162014008, -0.1535185724496841, -0.1523050367832184, -0.0501741841435432, -0.0633302107453346, -0.3949260413646698, 0.1972121149301529, -0.2604303061962128, -0.1828030794858932, 0.2246686667203903, -0.6004081368446350, 0.0432657450437546, -0.2086566388607025, 0.2799777686595917, 0.2933793962001801, -0.0253354366868734), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(-0.0009011612855829, -0.0231834072619677, -0.0538895800709724, -0.0315926298499107, -0.1181581020355225, -0.2161513417959213, -0.2679739892482758, -0.0537310577929020, 0.3116895258426666, -0.1043426766991615, -0.4458046257495880, 0.0201701205223799, -0.8122410774230957, -0.5180496573448181, -0.1277437359094620, -0.1671603769063950), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(0.2782520055770874, 0.2888738214969635, 0.2265798002481461, 0.0807978361845016, -0.1869603991508484, -0.2283953428268433, -0.4374879896640778, 0.2510242760181427, 0.4857149720191956, -0.1796883046627045, 0.2519723176956177, 0.1950220316648483, -0.0102280136197805, -0.4034306704998016, -0.2963733077049255, 0.4622495174407959), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(0.0423482730984688, -0.2923308312892914, -0.0082442639395595, 0.2373020350933075, 0.1710588335990906, 0.0392467305064201, 0.0116449045017362, 0.3267012536525726, -0.8832122683525085, 0.7230877280235291, -0.2364437282085419, -0.5563997030258179, 0.2307662665843964, -1.0188170671463013, 0.3680693507194519, -0.8103905916213989), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(-0.1161488518118858, -0.6775091290473938, -0.0844684988260269, -0.3587656021118164, -0.0190705843269825, -0.5557464957237244, 0.3721883893013000, 0.1322396695613861, -0.1157554760575294, -0.1545359939336777, 0.4236145615577698, -0.9936751127243042, -0.0805041715502739, -0.2628504335880280, 0.1407603323459625, -0.4183281958103180), target2);\n\ttarget2 = MulAdd(br1, MF4x4(-0.0447837486863136, 0.0488513521850109, -0.1358503550291061, 0.0202376656234264, -0.0258089359849691, -0.2975459396839142, -0.1580457836389542, 0.1025377139449120, -0.0301857776939869, -0.1071514338254929, -0.0150549048557878, 0.0794499814510345, 0.4558653235435486, 0.8186704516410828, 0.2287982851266861, -0.1438317447900772), target2);\n\ttarget2 = MulAdd(br2, MF4x4(0.1536326855421066, 0.2366072386503220, 0.0591898001730442, -0.0547822229564190, 0.1068296432495117, -0.0342746265232563, -0.1388098448514938, 0.3756637275218964, 0.2406303733587265, 0.1881252676248550, -0.1518276780843735, 0.1872117221355438, 0.1484777033329010, 0.1825126409530640, -0.1781855672597885, 0.1650572419166565), target2);\n\ttarget2 = max(target2, 0) + MF4(-0.5060276985168457, -1.3971502780914307, 0.7606850862503052, -0.5118398666381836) * min(target2, 0);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n}\n\n\n//!PASS 3\n//!DESC mapping 2\n//!IN tex1, tex2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 tl2 = tex2.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex2.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 target1 = MF4(0.2456959486007690, 0.1773831695318222, -0.0800321474671364, -0.1356369554996490);\n\ttarget1 = MulAdd(tl1, MF4x4(0.0867862403392792, -0.0188770499080420, -0.1502736657857895, -0.1099725291132927, -0.3013791441917419, 0.0430033504962921, 0.0345034115016460, -0.0400283746421337, 0.0455053038895130, -0.0785564482212067, -0.1695308536291122, 0.0467130616307259, -0.0208115540444851, 0.0026763146743178, -0.1338489353656769, -0.1844547539949417), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(0.1620235443115234, 0.0102646192535758, -0.0163768343627453, 0.0822434723377228, 0.1546859890222549, 0.0250307265669107, 0.0373145006597042, -0.0117816952988505, 0.0517709590494633, -0.0252467226237059, -0.1536794751882553, -0.0202652048319578, -0.3231309056282043, 0.1350613087415695, 0.1932685226202011, 0.1793868690729141), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(-0.5794479846954346, 0.1861644536256790, 0.1153499931097031, 0.1069827228784561, 0.4245908558368683, 0.1373304873704910, -0.1780052036046982, 0.0466761402785778, -1.1490619182586670, 0.8257195353507996, 0.0008257642621174, 0.0699498802423477, 0.3857855796813965, 0.1599738448858261, -0.0160159282386303, -0.1072350814938545), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(-0.0448461174964905, -0.1027067080140114, 0.1546361148357391, -0.1321994811296463, 0.3319362998008728, 0.0670638754963875, -0.0980701223015785, -0.1242648735642433, 0.0487120002508163, 0.1034812107682228, -0.3318608701229095, -0.0663819089531898, -0.7049940824508667, -0.2681597173213959, 0.5434955358505249, 0.3798713982105255), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(-0.1650677323341370, -0.1774029582738876, -0.0693891644477844, 0.0644233599305153, 0.0096654882654548, 0.0590313524007797, -0.0626199543476105, -0.1101114749908447, -0.0919653624296188, -0.2198607474565506, -0.3686812222003937, -0.0030939118005335, -0.0286871381103992, -0.0267137177288532, -0.2114386558532715, -0.1006813868880272), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(-0.1621828079223633, -0.3327856957912445, -0.3447196483612061, -0.0941574051976204, 0.1980617940425873, -0.0039776018820703, 0.0631400719285011, -0.0371704883873463, 0.0801121518015862, -0.2228745818138123, -0.1361533999443054, -0.0061448244377971, -0.2867666780948639, -0.0285903755575418, -0.2431204020977020, 0.0123175233602524), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(-0.0213332772254944, 0.0521896183490753, 0.1267389953136444, 0.0592065081000328, 0.2370698899030685, -0.0788677260279655, -0.0918647274374962, 0.0576282069087029, -0.0021516692359000, -0.1609319597482681, 0.1739181131124496, 0.4105915725231171, -0.0331462696194649, 0.0667985677719116, 0.0239557847380638, 0.2053552418947220), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(0.0452669933438301, -0.0624216794967651, -0.2210896909236908, -0.2319414317607880, 0.0553048253059387, -0.0195244718343019, -0.0948461145162582, -0.1411011815071106, 0.1357870846986771, -0.0044978843070567, 0.0117386765778065, 0.2855076789855957, 0.0721756964921951, 0.0725790113210678, 0.0879172906279564, 0.2261598110198975), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(0.1625189036130905, 0.2556113302707672, 0.0096751591190696, 0.4720825850963593, 0.1724947541952133, 0.7794855833053589, -0.5798769593238831, -0.5527915954589844, -0.2930226027965546, -0.1513507068157196, -0.1671935617923737, 0.1259696036577225, -1.5636392831802368, -0.6248261332511902, -0.7778694629669189, 0.7258287668228149), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(-0.2203702777624130, -0.2413295805454254, 0.5873484611511230, 0.8019542694091797, 0.2896324992179871, -0.0073753874748945, -0.4705016911029816, -0.4037020802497864, -0.5916352272033691, 0.8720123767852783, 1.4509203433990479, -0.4347604215145111, 0.1296572685241699, -0.0382503382861614, 1.0146147012710571, 0.6662492156028748), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(0.1450282633304596, 0.1838535815477371, -0.2957614958286285, -0.1175402477383614, 0.0455737337470055, -0.1042275950312614, 0.2409446090459824, 0.2161487638950348, 0.2523523867130280, -0.1657318323850632, 0.3264083266258240, 0.0015554791316390, 0.0756938308477402, 0.6486120820045471, 0.2910028994083405, 0.0061267162673175), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(0.1902535557746887, -1.9667011499404907, 0.5702443718910217, 0.1346294432878494, -0.1391871571540833, 0.0248745214194059, -0.0059022656641901, -0.1015660688281059, -0.0244528464972973, 0.6021597385406494, 0.1408251225948334, 0.1453502923250198, 0.1481679081916809, -0.0782008916139603, 0.1340244859457016, 0.2094520628452301), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(0.0108401505276561, 0.0073569868691266, 0.0448315776884556, 0.0920599550008774, -0.0208782758563757, -0.0072226687334478, 0.1590231209993362, 0.0974729061126709, -0.0504082255065441, -0.1492372304201126, -0.0240942239761353, -0.3387995064258575, -0.0284501910209656, -0.0475567393004894, -0.1351375281810760, -0.0968868359923363), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(-0.0175144840031862, 0.0215768050402403, -0.2070538252592087, -0.1020313948392868, -0.0632536634802818, 0.0187655575573444, 0.0033090459182858, 0.0483726076781750, 0.0874270573258400, 0.0391933582723141, -0.0733725428581238, 0.0455813333392143, 0.0519542098045349, -0.0167136136442423, 0.0001770213857526, -0.0226714108139277), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(0.0230981707572937, 0.0211336743086576, -0.0202524177730083, 0.0004777485737577, -0.3133100867271423, -0.2222708314657211, -0.3225338459014893, 0.0252504348754883, -0.1565012782812119, -0.1223759651184082, -0.1677924543619156, 0.1436173915863037, -0.1002913638949394, -0.4352810978889465, -0.1214068830013275, 0.1200122535228729), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(0.2746300697326660, 0.0240563396364450, 0.2214205712080002, -0.0140676703304052, -0.1697816103696823, 0.0239461977034807, -0.2184012532234192, -0.1122284159064293, -0.0025032388512045, -0.1982196122407913, -0.0088773546740413, -0.0592936985194683, 0.0981788560748100, 0.0590783730149269, 0.1699221283197403, 0.1146017014980316), target1);\n\ttarget1 = MulAdd(br1, MF4x4(-0.1190557554364204, 0.0139884017407894, -0.3765408396720886, -0.1967576593160629, -0.0013050300767645, 0.0838785469532013, 0.0467342510819435, 0.0197970345616341, 0.0199079178273678, 0.1127095147967339, -0.0382974669337273, -0.0808331072330475, 0.0045804185792804, 0.1423084437847137, 0.0275978501886129, 0.0051016276702285), target1);\n\ttarget1 = MulAdd(br2, MF4x4(0.0694821104407310, -0.1185832619667053, 0.1340767890214920, -0.0096760904416442, -0.0057105780579150, -0.0358094684779644, -0.0208928529173136, -0.0422658622264862, -0.1662766784429550, 0.0397685728967190, -0.0169682707637548, 0.1427496373653412, 0.1324639916419983, 0.0579542480409145, 0.1712465286254883, 0.1062873229384422), target1);\n\ttarget1 = max(target1, 0) + MF4(0.0476732961833477, -0.0824369415640831, 1.4746414422988892, 1.6789640188217163) * min(target1, 0);\n\n\tMF4 target2 = MF4(-0.0375947281718254, 0.2783663868904114, 0.0855874642729759, -0.0183580406010151);\n\ttarget2 = MulAdd(tl1, MF4x4(-0.3375159502029419, -0.0481248162686825, 0.0022695809602737, -0.1379150450229645, 0.2087368816137314, -0.1413425505161285, 0.0311671234667301, 0.2090687304735184, -0.1255441159009933, -0.3856352567672729, 0.0592494457960129, -0.2192105948925018, 0.0635740235447884, -0.0259831510484219, 0.1284605711698532, 0.1543060839176178), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(0.0265662875026464, 0.1603409945964813, -0.0106395082548261, 0.0252655427902937, 0.0633112043142319, 0.1634869277477264, 0.0606260225176811, -0.0386067330837250, 0.1025275588035583, -0.0086877709254622, 0.0572752207517624, 0.2958410382270813, 0.2315495908260345, -0.0511345490813255, -0.0684579163789749, 0.2366850525140762), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(-0.6637977361679077, 0.1115299314260483, 0.0334465689957142, -0.0595322623848915, 0.0194256473332644, 0.1154914125800133, -0.0093330284580588, -0.2107555270195007, 0.2593949139118195, -0.2310725152492523, -0.0191440880298615, 0.0831847414374352, 0.0869263112545013, 0.1271044909954071, -0.0199039578437805, 0.0421413294970989), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(0.1171221211552620, -0.2125719487667084, -0.0189515724778175, 0.2465390264987946, 0.1773879528045654, 0.2518055438995361, 0.0552976131439209, -0.1894477456808090, 0.1769066900014877, -0.1464872211217880, -0.0573948174715042, -0.4012156426906586, 0.2111275196075439, -0.5377770662307739, -0.2866773009300232, 0.1336809694766998), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(-0.6472494006156921, -0.0555078461766243, 0.0564644038677216, 0.0711399838328362, -0.0228650532662868, -0.0755083113908768, 0.0132119813933969, 0.1565485745668411, 0.0769101306796074, -0.4400988519191742, -0.0369989611208439, -0.0459617786109447, 0.1246264874935150, -0.2121030986309052, 0.0351070538163185, 0.1162980273365974), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(-0.0239488855004311, -0.4389697015285492, -0.0041466108523309, 0.2026203870773315, 0.0299914367496967, 0.0214463528245687, -0.0340079553425312, -0.0866646468639374, -0.1258078664541245, 0.0335666500031948, 0.0279387012124062, 0.0377361401915550, -0.0037173877935857, -0.1970001310110092, 0.0554011650383472, 0.0747631862759590), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(-0.5669959783554077, -0.0150139974430203, -0.0079386057332158, -0.1156958788633347, -0.0749717876315117, 0.1512815952301025, -0.0340143367648125, -0.1504366695880890, -0.1540268361568451, -0.0089722918346524, -0.0974140912294388, -0.4191842377185822, 0.0414282791316509, -0.0518460534512997, -0.1025082096457481, -0.1974052190780640), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(0.1328157931566238, -0.0447603911161423, 0.0625142455101013, 0.1125901266932487, 0.1033857688307762, 0.0811788439750671, 0.1270843595266342, -0.0564684942364693, 0.0797754079103470, 0.1379490494728088, -0.2863929569721222, -0.0602805763483047, 0.2699469923973083, 0.1226278319954872, -0.2505964636802673, 0.0639543756842613), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(-1.5813068151473999, 0.5872991085052490, -0.2429279834032059, -0.4303708970546722, 0.2854560911655426, 1.0167927742004395, 0.8617131114006042, 0.2191447615623474, 0.9627910852432251, 0.7867327332496643, 1.2628984451293945, 0.8908280134201050, -0.4586973786354065, -0.7981753349304199, 0.4780183732509613, -0.9264264106750488), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(0.2435170710086823, -0.0829131007194519, -0.3455205559730530, 0.4117922484874725, 0.2749316394329071, 0.1895177811384201, 0.4110289216041565, -0.1298204958438873, 0.1637304723262787, 0.8604004383087158, 1.0940867662429810, -0.3959148228168488, 0.3289682567119598, -0.0633709058165550, -2.0705056190490723, 0.1684481352567673), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(-0.8055392503738403, 0.2874773740768433, -0.1400482803583145, -0.1834644526243210, 0.0150187248364091, 0.0192099008709192, -0.0783268958330154, -0.2944276928901672, 0.0451190918684006, 0.1181604787707329, 0.1095703318715096, -0.2282790690660477, 0.1960140317678452, 0.3371279239654541, 0.0243086088448763, -0.0463834926486015), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(0.2196981906890869, -0.0534196794033051, -0.0839012116193771, 0.2049407809972763, 0.0194450635462999, -0.0593264624476433, 0.1640597432851791, 0.0274629276245832, -0.1243807971477509, 0.0611803941428661, -0.1799024045467377, -0.1864561140537262, 0.2465235143899918, -0.0211831126362085, -0.2282803803682327, -0.1430586874485016), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(-0.3611976802349091, 0.0288475938141346, -0.0297703798860312, -0.0418547466397285, -0.3251218497753143, -0.0134126413613558, -0.0686949566006660, -0.0233805924654007, -0.2749838531017303, -0.2486374378204346, 0.0724888965487480, 0.1193816959857941, -0.2721751034259796, -0.2033173292875290, 0.0248280912637711, 0.0589503161609173), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(0.1689156740903854, 0.0712056383490562, 0.1930764019489288, 0.0722641199827194, 0.0640723854303360, 0.0566449724137783, 0.0815568938851357, -0.0213705692440271, -0.1826065927743912, 0.0393006950616837, -0.1493768393993378, 0.0386883616447449, -0.0130320172756910, -0.0327960774302483, -0.0204591657966375, 0.0134796360507607), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(-0.5736998319625854, -0.0392777882516384, 0.1370634734630585, -0.0484432727098465, 0.1308025121688843, -0.2323654592037201, -0.2625242173671722, -0.2956316471099854, -0.1103305667638779, -0.0551420338451862, 0.0006514643318951, 0.0022458140738308, 0.2859890162944794, -0.0839410424232483, 0.5223253369331360, 0.0280438754707575), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(0.0556896403431892, 0.0735942423343658, -0.2387326955795288, 0.1338670998811722, 0.0996377170085907, 0.0365633517503738, 0.3044275343418121, -0.0164738632738590, 0.1139278411865234, 0.1249758303165436, 0.2395293861627579, -0.0708516016602516, 0.1228865459561348, 0.0634353235363960, -0.3463226258754730, -0.0362484715878963), target2);\n\ttarget2 = MulAdd(br1, MF4x4(-0.4082182049751282, -0.1144043654203415, 0.0233679264783859, 0.0130491442978382, 0.0237790253013372, 0.0709472149610519, 0.1275831013917923, -0.0888639837503433, -0.0140889342874289, -0.1301848441362381, -0.1709596514701843, 0.0314525589346886, 0.0293366052210331, 0.0934117212891579, 0.0720594301819801, 0.0094668027013540), target2);\n\ttarget2 = MulAdd(br2, MF4x4(0.1782542318105698, -0.1532294601202011, -0.2839424610137939, 0.0435897931456566, 0.0621095262467861, -0.0348550342023373, 0.0461588650941849, 0.0183234252035618, 0.2204841077327728, 0.1267120093107224, 0.1979495882987976, -0.2149147540330887, 0.2110942006111145, 0.0718472301959991, -0.1063910648226738, -0.0493422709405422), target2);\n\ttarget2 = max(target2, 0) + MF4(-0.0162308197468519, 0.4942881166934967, 0.1156802847981453, 1.4069133996963501) * min(target2, 0);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 4\n//!DESC mapping 3\n//!IN tex3, tex4\n//!OUT tex1, tex2\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex3.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex3.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 tl2 = tex4.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex4.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 target1 = MF4(0.1563357263803482, -0.0187121629714966, -0.0126413907855749, 0.1197946891188622);\n\ttarget1 = MulAdd(tl1, MF4x4(0.0248779058456421, 0.0970748737454414, -0.0710923895239830, -0.0502988137304783, -0.1513994187116623, 0.2118151038885117, -0.1060286536812782, -0.0017144688172266, -0.0556356199085712, -0.0478693507611752, 0.1046469956636429, 0.0019442490302026, -0.1099060326814651, 0.0196554642170668, -0.0393092185258865, -0.0131395589560270), target1);\n\ttarget1 = MulAdd(tl2, MF4x4(0.4478245079517365, -0.0910880789160728, -0.2786923944950104, -0.0162817053496838, 0.0112394141033292, -0.1194593086838722, 0.0425493344664574, -0.0044937161728740, -0.1628813296556473, -0.2678257226943970, 0.2309084981679916, 0.0530976355075836, -0.1750707328319550, -0.0064609451219440, -0.0241944380104542, 0.0247293189167976), target1);\n\ttarget1 = MulAdd(ml1, MF4x4(-0.0999718829989433, 0.2529200315475464, -0.2410994917154312, -0.0778252258896828, -0.1284751892089844, 0.0736103430390358, -0.0542359724640846, -0.0292810052633286, 0.0842959657311440, 0.1324738860130310, -0.1200775727629662, 0.0923810601234436, -0.3018241524696350, -0.0444923602044582, -0.2015913128852844, -0.0204973872750998), target1);\n\ttarget1 = MulAdd(ml2, MF4x4(-0.3240330517292023, -0.5515946745872498, -0.0859212949872017, 0.0462087914347649, -0.0053406502120197, -0.0506816878914833, 0.1402591317892075, 0.0343847945332527, -0.1610218435525894, 0.7799831628799438, -0.4482840299606323, 0.4723005294799805, -0.2119023054838181, 0.1128389388322830, -0.1832690685987473, -0.0362148694694042), target1);\n\ttarget1 = MulAdd(bl1, MF4x4(-0.0930702313780785, -0.0642902702093124, -0.0367766097187996, -0.0020038220100105, 0.0453414916992188, 0.0075245667248964, -0.0119760576635599, 0.0035134663339704, 0.1123304143548012, 0.1128236204385757, 0.0063381437212229, -0.0171416625380516, -0.1588087528944016, -0.2571538090705872, 0.2774460315704346, 0.0171892605721951), target1);\n\ttarget1 = MulAdd(bl2, MF4x4(-0.0579603239893913, 0.3495539724826813, -0.4717904627323151, -0.0042169657535851, -0.0763773098587990, -0.1721021682024002, 0.1467801630496979, -0.0172323398292065, -0.0802723765373230, -0.0116639221087098, 0.0178409330546856, -0.0121179902926087, -0.0710472315549850, -0.1480658054351807, 0.1912731230258942, 0.0008336952887475), target1);\n\ttarget1 = MulAdd(tc1, MF4x4(0.0445428267121315, -0.1481070518493652, 0.1304957717657089, -0.1157935336232185, -0.1166803613305092, -0.3920064568519592, 0.8788923621177673, 0.3384790122509003, -0.0278418567031622, -0.1011456921696663, -0.0513025075197220, -0.0748791247606277, -0.0502855703234673, -0.1696091145277023, -0.0049756630323827, -0.0209914986044168), target1);\n\ttarget1 = MulAdd(tc2, MF4x4(-0.1725586950778961, 0.1313660293817520, -0.3432282805442810, -0.0246748421341181, -0.0593904331326485, 0.1949618458747864, -0.2589366734027863, 0.0379127524793148, -0.0550928115844727, -0.0913493037223816, 0.1150950565934181, -0.1235521435737610, -0.0625528916716576, -0.3131158649921417, 0.4109992682933807, 0.0410865694284439), target1);\n\ttarget1 = MulAdd(mc1, MF4x4(0.8893174529075623, -0.0700975209474564, 0.7708584070205688, -0.2465052455663681, -0.1121069490909576, -0.5598245263099670, 0.7997139692306519, -0.5694547295570374, -0.1351616084575653, 0.1108073145151138, 0.7269443273544312, 0.1369582563638687, 0.6071134805679321, 0.8817817568778992, 0.0194139964878559, -0.2244683355093002), target1);\n\ttarget1 = MulAdd(mc2, MF4x4(-0.2949840426445007, -0.3180212676525116, -0.5362266302108765, 0.0656562000513077, -0.6400785446166992, -0.4476518630981445, -0.6344851851463318, 0.7187259793281555, -0.3846258223056793, 1.0990517139434814, -0.7282652258872986, -0.6530264616012573, 0.8294114470481873, 0.6079595088958740, 0.3271140158176422, 0.4062923491001129), target1);\n\ttarget1 = MulAdd(bc1, MF4x4(-0.0373790934681892, -0.1651912927627563, 0.0589407421648502, 0.0622759014368057, 0.0095487469807267, 0.0824478641152382, -0.0216544214636087, 0.1070290282368660, -0.0805450007319450, -0.0367405600845814, 0.0055392896756530, 0.0046677836216986, 0.1806629896163940, 0.2809534966945648, 0.0341635458171368, 0.1274557113647461), target1);\n\ttarget1 = MulAdd(bc2, MF4x4(0.3259792327880859, -0.3150677680969238, -0.2272015213966370, 0.0287732314318419, 0.0530966222286224, 0.3310768604278564, -0.2079527378082275, -0.1340134441852570, 0.0769909769296646, -0.2229669988155365, 0.1012685745954514, 0.0622584670782089, 0.1539722383022308, 0.2163516432046890, -0.1021269038319588, -0.0561319366097450), target1);\n\ttarget1 = MulAdd(tr1, MF4x4(-0.1077229678630829, -0.2074016332626343, 0.0913541764020920, 0.0391069389879704, 0.0848263725638390, -0.0416730083525181, 0.0603712275624275, 0.0457836911082268, 0.0035252417437732, 0.0004963557003066, 0.0027605029754341, 0.0254582706838846, -0.0146415829658508, 0.0273043140769005, 0.0692857503890991, 0.0091926595196128), target1);\n\ttarget1 = MulAdd(tr2, MF4x4(0.0692942291498184, -0.4098799824714661, 0.3745719194412231, -0.0331038050353527, -0.0513759665191174, 0.0989063531160355, -0.1431623697280884, -0.0274865441024303, 0.0244991369545460, -0.0112041812390089, 0.0523535087704659, 0.0222812052816153, -0.0314176008105278, 0.2347036451101303, -0.0928338095545769, -0.0338262394070625), target1);\n\ttarget1 = MulAdd(mr1, MF4x4(0.3805117309093475, -0.1917886883020401, 0.2292910665273666, 0.3065188527107239, -0.2231798321008682, 0.2646720707416534, -0.1371945887804031, -0.0272636637091637, 0.1435333937406540, -0.0137438504025340, 0.0088603384792805, -0.0633594989776611, -0.1662645787000656, 0.2498313635587692, -0.2899549007415771, 0.0460192002356052), target1);\n\ttarget1 = MulAdd(mr2, MF4x4(0.1833423078060150, 0.0624732412397861, -0.3103306889533997, -0.0102488445118070, 0.0073305973783135, -0.2617286443710327, 0.2580088973045349, -0.0416168905794621, 0.1506632268428802, -0.0574487410485744, 0.0778761878609657, 0.1702914088964462, -0.0307608898729086, 0.0848424360156059, -0.1303439885377884, -0.0837477520108223), target1);\n\ttarget1 = MulAdd(br1, MF4x4(0.0605936460196972, -0.0835580825805664, 0.0067690783180296, 0.0539834238588810, 0.0881687626242638, -0.0001589829771547, -0.0706917122006416, 0.0060382266528904, 0.1218314692378044, 0.0132934488356113, 0.0503435060381889, -0.0386124141514301, -0.1492055207490921, -0.0103553524240851, -0.0697906538844109, -0.0208332743495703), target1);\n\ttarget1 = MulAdd(br2, MF4x4(-0.2907077968120575, -0.1428615152835846, -0.1178332567214966, 0.0093302968889475, -0.0501379445195198, 0.1940260678529739, -0.0139665808528662, 0.0440400391817093, 0.0546711236238480, -0.0606320053339005, 0.0891899466514587, -0.0187927689403296, -0.0581561885774136, -0.0785671249032021, -0.0746953785419464, -0.0350385755300522), target1);\n\ttarget1 = max(target1, 0) + MF4(0.0636819079518318, -0.0394099690020084, 0.0154740391299129, 1.4728027582168579) * min(target1, 0);\n\n\tMF4 target2 = MF4(0.0120743932202458, -0.0392544493079185, 0.0073779639787972, 0.0674902275204659);\n\ttarget2 = MulAdd(tl1, MF4x4(-0.0253207311034203, -0.0178817976266146, -0.0941111445426941, -0.0096205184236169, -0.0948953703045845, -0.1085971817374229, -0.1137845888733864, -0.1022860705852509, 0.0362259782850742, 0.0741802081465721, -0.0426849052309990, 0.1004608497023582, -0.0553506910800934, -0.0631089508533478, 0.0144856451079249, -0.0129664530977607), target2);\n\ttarget2 = MulAdd(tl2, MF4x4(0.1779767572879791, 0.0777176544070244, 0.3302779793739319, -0.0630711168050766, 0.0130759663879871, -0.0583435148000717, 0.0534219592809677, -0.0205510091036558, -0.1502479761838913, 0.0436260215938091, -0.3180699944496155, 0.1497740298509598, -0.0714024156332016, -0.0304171387106180, -0.1271478682756424, -0.0160594787448645), target2);\n\ttarget2 = MulAdd(ml1, MF4x4(-0.2060592919588089, 0.0177838709205389, 0.2679423391819000, 0.0484818480908871, -0.1020416766405106, -0.0875749215483665, 0.2993223369121552, 0.0260893367230892, -0.0320936217904091, -0.0193585660308599, 0.1074631884694099, -0.0031519578769803, -0.1419622153043747, -0.0621272362768650, -0.2517412602901459, -0.1112222597002983), target2);\n\ttarget2 = MulAdd(ml2, MF4x4(0.0975706353783607, -0.1846135258674622, -0.2201799452304840, -0.0123737258836627, 0.0554487742483616, -0.0255174264311790, -0.2444359511137009, -0.1069484427571297, -0.0487980805337429, -0.0570272766053677, 0.1149747893214226, -0.0176141038537025, -0.1059966161847115, 0.1263166964054108, 0.1091895326972008, 0.0400139950215816), target2);\n\ttarget2 = MulAdd(bl1, MF4x4(-0.0971131697297096, 0.1365687996149063, -0.1780374944210052, 0.2879253029823303, -0.0652871504426003, -0.0537611208856106, -0.0763697773218155, 0.0455291420221329, 0.0246813204139471, -0.0074042826890945, 0.2309278100728989, 0.0046464367769659, -0.0692639946937561, 0.0042336005717516, -0.2525716722011566, 0.3263924717903137), target2);\n\ttarget2 = MulAdd(bl2, MF4x4(-0.0798230320215225, -0.1135407239198685, -0.4427868127822876, 0.0395730547606945, 0.0537165030837059, 0.0225568320602179, -0.1189213171601295, -0.0707803219556808, -0.0074193109758198, -0.0493272021412849, 0.1401828378438950, 0.1580671072006226, -0.0574450828135014, 0.0058684512041509, -0.1626979410648346, 0.0857749953866005), target2);\n\ttarget2 = MulAdd(tc1, MF4x4(-0.0715018808841705, 0.0310761369764805, -0.3861580789089203, 0.0770959705114365, 0.1908793896436691, 0.2067244797945023, 0.1176377162337303, 0.0705406218767166, -0.0944501385092735, 0.1110353469848633, -0.2772715091705322, -0.0079436022788286, 0.1045550853013992, 0.0076957782730460, 0.0220303647220135, 0.0434708297252655), target2);\n\ttarget2 = MulAdd(tc2, MF4x4(-0.4399432241916656, -0.0885980203747749, 0.2042984664440155, 0.0499991811811924, 0.0443918742239475, -0.0322260186076164, 0.0960535407066345, 0.0173596814274788, 0.0851852819323540, -0.0549903102219105, -0.2807548046112061, -0.1112457811832428, 0.0906120762228966, 0.1066406965255737, -0.3857226073741913, 0.1345559209585190), target2);\n\ttarget2 = MulAdd(mc1, MF4x4(0.2723454833030701, -0.1252564936876297, 0.3694194555282593, 0.0895726680755615, 0.2200681418180466, 0.3019879162311554, 0.4471587240695953, 0.2883224189281464, 0.0264542233198881, 0.3020884990692139, 0.2432236075401306, 0.5683830380439758, -0.0914180725812912, -0.1473430246114731, -0.5914288163185120, -0.1922498643398285), target2);\n\ttarget2 = MulAdd(mc2, MF4x4(0.2161763310432434, -0.0415927544236183, -0.0378856658935547, -0.0317508913576603, -0.2287719398736954, -0.4885228574275970, -0.2818722724914551, -0.3797133862972260, 0.4456195533275604, 0.7929218411445618, -0.1307591795921326, 0.2016224861145020, 0.2801168859004974, -0.0006753758061677, 0.5686879754066467, 0.0415142513811588), target2);\n\ttarget2 = MulAdd(bc1, MF4x4(0.0530648417770863, -0.2444190829992294, 0.0235249921679497, 0.0224611610174179, 0.0651976913213730, -0.0449720136821270, 0.1208736971020699, -0.0743656828999519, 0.1318923383951187, 0.1823218315839767, 0.5197241306304932, 0.1862808614969254, 0.2317387014627457, -0.2857755720615387, 0.1650039553642273, -0.1755792349576950), target2);\n\ttarget2 = MulAdd(bc2, MF4x4(-0.0835669562220573, 0.0129750147461891, -0.4473843872547150, -0.5028023719787598, -0.0481940247118473, -0.0905050709843636, -0.6921447515487671, -0.2693449556827545, 0.2342379540205002, 0.0392520241439342, 0.4797120690345764, 0.1215118318796158, 0.1369755119085312, -0.1010836884379387, -0.0070533878169954, -0.2589581906795502), target2);\n\ttarget2 = MulAdd(tr1, MF4x4(0.1088275387883186, 0.0839678123593330, -0.3048903048038483, -0.0084876483306289, 0.3669581115245819, 0.0472131110727787, -0.1243446245789528, -0.1012610718607903, 0.1622449755668640, -0.1317851245403290, -0.0711368247866631, -0.1593778431415558, -0.0104977218434215, -0.0608197152614594, 0.0286014154553413, 0.0388568006455898), target2);\n\ttarget2 = MulAdd(tr2, MF4x4(0.0885753333568573, 0.1340429484844208, -0.0027331225574017, -0.0736069232225418, -0.1520483642816544, 0.1104429140686989, 0.1728315353393555, 0.1210049912333488, 0.0688045620918274, -0.1218316256999969, -0.0629790797829628, -0.1348981261253357, 0.0943875387310982, -0.0730865821242332, -0.2342475503683090, -0.0808216184377670), target2);\n\ttarget2 = MulAdd(mr1, MF4x4(-0.1263358592987061, -0.7069915533065796, 0.1411920040845871, -0.2682386934757233, 0.2957956194877625, 0.1127238497138023, 0.3032427430152893, 0.2759581208229065, 0.8320354819297791, -0.0136295817792416, 0.0530097521841526, -0.0727380812168121, 0.0614950619637966, 0.0339637212455273, -0.0386842861771584, -0.0550391897559166), target2);\n\ttarget2 = MulAdd(mr2, MF4x4(-0.0998953506350517, -0.2231116443872452, 0.0948988571763039, 0.1258799731731415, -0.6855500936508179, -0.4546283185482025, -0.3335786461830139, 0.0718025788664818, 0.6456025242805481, -0.2023779749870300, 0.1325027197599411, -0.1078727394342422, 0.3024467229843140, 0.1703380942344666, 0.2321108430624008, 0.2143797874450684), target2);\n\ttarget2 = MulAdd(br1, MF4x4(0.0542521663010120, -0.2265717238187790, -0.0289179943501949, 0.0697252005338669, -0.1518151611089706, 0.0225123148411512, 0.0370684377849102, -0.1546901017427444, 0.0753403753042221, -0.0465561784803867, 0.1635994315147400, 0.1127668544650078, 0.0738654434680939, 0.1077028661966324, -0.1282461881637573, -0.0510208979249001), target2);\n\ttarget2 = MulAdd(br2, MF4x4(-0.1740311384201050, 0.0542572811245918, 0.0551791004836559, 0.1728909015655518, -0.0078740902245045, 0.0999085083603859, -0.0136023676022887, 0.0501077920198441, 0.0529310964047909, -0.0859082415699959, -0.0285708475857973, -0.0186515673995018, -0.0793913751840591, 0.0688859447836876, -0.1684362143278122, 0.0473327860236168), target2);\n\ttarget2 = max(target2, 0) + MF4(-0.1339675635099411, 0.3599768280982971, -0.1313954293727875, 0.8648772835731506) * min(target2, 0);\n\n\ttex1[gxy] = target1;\n\ttex2[gxy] = target2;\n}\n\n\n//!PASS 5\n//!DESC mapping 4, sub-band residuals\n//!IN tex1, tex2, featureMap1, featureMap2\n//!OUT tex3, tex4\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex1.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex1.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex1.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex1.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex1.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex1.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex1.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 tl2 = tex2.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex2.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex2.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex2.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex2.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex2.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex2.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 c1 = { -0.0466146245598793,0.0514914207160473,-0.1174036413431168,0.1775186359882355 };\n\tc1 = MulAdd(tl1, MF4x4(0.0403013713657856, -0.0201274380087852, -0.0814156234264374, -0.0156530365347862, -0.1377502679824829, -0.0417905971407890, 0.0382207930088043, -0.1200272291898727, 0.0445257574319839, -0.0034040021710098, -0.1461200863122940, -0.0280020851641893, -0.0284179765731096, -0.0257030930370092, -0.0306571796536446, 0.0027001383714378), c1);\n\tc1 = MulAdd(tl2, MF4x4(0.0474935993552208, -0.1903701126575470, -0.5459222793579102, 0.0117317456752062, 0.1298255324363708, -0.1852943897247314, 0.0912317335605621, 0.0597700774669647, 0.0291008763015270, -0.0133294332772493, 0.2249753177165985, -0.1039957106113434, -0.0360252261161804, 0.0713268965482712, -0.1684121936559677, 0.0038015090394765), c1);\n\tc1 = MulAdd(ml1, MF4x4(0.1707874685525894, -0.0190297029912472, 0.0620337612926960, 0.1826018989086151, -0.0537132881581783, 0.0105489455163479, 0.0954312533140182, -0.0787296965718269, 0.1069839373230934, 0.1045138239860535, 0.1288910657167435, 0.0561389364302158, -0.0446831695735455, 0.0814650580286980, 0.0968160405755043, -0.0053927232511342), c1);\n\tc1 = MulAdd(ml2, MF4x4(-0.4036456644535065, 0.5173328518867493, 0.2669098377227783, 0.1405677497386932, 0.7028214335441589, 0.4912839531898499, 0.6029286384582520, 0.5650771260261536, 0.0271350406110287, 0.0700132623314857, -0.0723611563444138, -0.1151952818036079, -0.1905510127544403, -0.1715065985918045, 0.2840125858783722, -0.0591109022498131), c1);\n\tc1 = MulAdd(bl1, MF4x4(-0.0454136617481709, 0.0026271974202245, 0.0717174336314201, -0.0211183167994022, -0.0145919620990753, -0.0671255514025688, -0.0502023696899414, 0.0087185343727469, -0.0288616847246885, -0.0113478675484657, -0.2463355064392090, 0.0117223775014281, -0.0308947954326868, -0.0319634601473808, 0.0732206851243973, -0.0482302159070969), c1);\n\tc1 = MulAdd(bl2, MF4x4(0.1823509633541107, -0.0050594508647919, -0.3849277794361115, 0.0906973257660866, -0.2269264608621597, -0.1660439521074295, -0.0572436749935150, -0.2200210094451904, -0.0326488390564919, -0.0223822314292192, 0.2504203319549561, -0.0020041887182742, 0.0842133983969688, 0.0320363529026508, -0.2134571075439453, 0.0419851355254650), c1);\n\tc1 = MulAdd(tc1, MF4x4(-0.1438133865594864, 0.0348416790366173, 0.0934710800647736, 0.0492126196622849, -0.2420855760574341, 0.0501662716269493, 0.1352647244930267, -0.0790266394615173, 0.2533731162548065, 0.0078659672290087, -0.6405819058418274, 0.0266417451202869, 0.1385341882705688, 0.2193202823400497, -0.0242960918694735, 0.0509849824011326), c1);\n\tc1 = MulAdd(tc2, MF4x4(-0.1021846532821655, 0.0409118719398975, -0.0411306917667389, -0.0381408408284187, 0.3855873942375183, 0.0598353408277035, -0.0579320192337036, 0.0582632422447205, 0.1651727408170700, 0.1139431521296501, 0.3897903859615326, -0.2790665924549103, -0.2033874839544296, 0.0795733034610748, 0.1354800611734390, 0.0271498821675777), c1);\n\tc1 = MulAdd(mc1, MF4x4(0.5974506139755249, 0.2842084765434265, 0.2237064242362976, -0.1201776340603828, 0.4645690321922302, -0.4258180558681488, 0.2686293423175812, -0.5262981653213501, -0.6491079330444336, -0.1924646943807602, 0.5328685045242310, -0.2459655404090881, -0.0878667980432510, -0.5910828113555908, 0.5153566598892212, 0.1743167340755463), c1);\n\tc1 = MulAdd(mc2, MF4x4(-0.0390859283506870, 0.1246269494295120, 0.0820790305733681, -0.0892064496874809, 0.2791964113712311, -0.0395625308156013, 0.8821132779121399, 0.0838626548647881, 0.0933722704648972, -0.3405517935752869, -0.6993819475173950, -0.2844510078430176, 0.0422397889196873, -0.0712213888764381, 0.4871867001056671, 0.1554806381464005), c1);\n\tc1 = MulAdd(bc1, MF4x4(-0.2699566185474396, 0.0006965834181756, 0.2727784812450409, -0.0620054267346859, -0.3147658407688141, -0.0038526458665729, 0.3236006200313568, -0.0877058431506157, 0.2106281071901321, 0.0453009121119976, -0.5439859628677368, 0.0184146761894226, -0.0296773612499237, -0.0038715677801520, 0.1077574864029884, 0.0138774076476693), c1);\n\tc1 = MulAdd(bc2, MF4x4(-0.0886235535144806, -0.0839715227484703, -0.1154380440711975, -0.0073053352534771, 0.0023921213578433, -0.0275820419192314, 0.0455723628401756, 0.0129091050475836, -0.0887900739908218, -0.0148513885214925, 0.0876928195357323, -0.0784894824028015, -0.0062762177549303, -0.0526834838092327, 0.0037576633039862, 0.0319633670151234), c1);\n\tc1 = MulAdd(tr1, MF4x4(-0.0464110672473907, 0.0236346330493689, 0.0669583231210709, -0.0472575165331364, 0.0208626259118319, -0.0271043106913567, -0.0606599785387516, -0.0139442197978497, -0.0014815550530329, 0.0122182741761208, 0.0004507199628279, 0.0158279109746218, 0.0385761559009552, 0.0296174921095371, -0.0291853323578835, 0.0165338683873415), c1);\n\tc1 = MulAdd(tr2, MF4x4(-0.0233153514564037, 0.0219305511564016, -0.0743728205561638, -0.0093567697331309, 0.0286262184381485, 0.0774424001574516, 0.1148394867777824, -0.0301702339202166, 0.0024869549088180, -0.0374004244804382, 0.4192572534084320, -0.0790813118219376, -0.0493366643786430, -0.0104152699932456, -0.0490021072328091, -0.0024766430724412), c1);\n\tc1 = MulAdd(mr1, MF4x4(0.0144469039514661, -0.1078102141618729, 0.1059413179755211, -0.1089596152305603, 0.0470409952104092, 0.0500787831842899, -0.0514846295118332, 0.0626327991485596, -0.0882258489727974, 0.0321751609444618, 0.2398201376199722, -0.2443147897720337, 0.0259658545255661, -0.0396602302789688, 0.2174025326967239, 0.0715249925851822), c1);\n\tc1 = MulAdd(mr2, MF4x4(-0.0154824554920197, 0.0291374288499355, 0.0039887567982078, -0.0431501194834709, 0.0593536123633385, -0.0845754146575928, 0.2000104188919067, 0.0186260938644409, 0.0547599084675312, 0.0526885949075222, -0.1233010515570641, -0.0432526804506779, 0.0357321202754974, 0.0021650493144989, 0.0814491733908653, 0.0971980616450310), c1);\n\tc1 = MulAdd(br1, MF4x4(0.0287933535873890, 0.0494442507624626, 0.0210838094353676, -0.0483787320554256, -0.0759167149662971, -0.0253081526607275, 0.1219362914562225, -0.0418672412633896, -0.0189503412693739, 0.0143473483622074, -0.1790502667427063, -0.0662427768111229, 0.0324281528592110, 0.0148597611114383, 0.0266743116080761, 0.0377049185335636), c1);\n\tc1 = MulAdd(br2, MF4x4(-0.0054656565189362, -0.0150196319445968, -0.0463149808347225, -0.0104772448539734, 0.0347928367555141, 0.0091987038031220, 0.0037015024572611, 0.0577751062810421, 0.0232732165604830, 0.0034828644711524, 0.0977631732821465, -0.0051266341470182, -0.0189268663525581, -0.0049852686934173, 0.0438088737428188, -0.0025434335693717), c1);\n\tc1 = max(c1, 0) + MF4(0.2930726408958435, -0.7832366824150085, 0.0082256151363254, 1.0583437681198120) * min(c1, 0);\n\n\tMF4 c2 = { -0.0836324766278267,0.0299216359853745,0.0159619841724634,-0.1379968672990799 };\n\tc2 = MulAdd(tl1, MF4x4(-0.0837135538458824, 0.0536015741527081, -0.0739900916814804, 0.0180259179323912, 0.0306078922003508, 0.0638481751084328, -0.0674207285046577, -0.0308991391211748, -0.0134472101926804, -0.0455930270254612, 0.0009395828237757, -0.0776428431272507, -0.0028933393768966, -0.0612038075923920, -0.0162172410637140, -0.0327735245227814), c2);\n\tc2 = MulAdd(tl2, MF4x4(-0.1481152623891830, 0.1160185635089874, -0.1463897079229355, 0.0038319902960211, -0.1815536171197891, 0.0099428771063685, -0.1647379845380783, 0.0335076004266739, -0.0302220620214939, -0.1180571690201759, -0.0232424903661013, -0.0164348836988211, -0.0015188503311947, 0.1787684559822083, 0.0413909815251827, 0.0699580833315849), c2);\n\tc2 = MulAdd(ml1, MF4x4(0.0381213910877705, -1.8747351169586182, 0.0916024073958397, -0.1057635396718979, -0.1335459649562836, 0.0378836020827293, -0.0848037749528885, 0.1720509082078934, 0.1115766093134880, 0.0519676357507706, 0.1311796754598618, -0.2338305413722992, -0.0886595770716667, 0.1390771120786667, 0.0120587171986699, 0.0929709225893021), c2);\n\tc2 = MulAdd(ml2, MF4x4(-0.0403309725224972, 0.1023108437657356, -0.0249778237193823, -0.2056589871644974, 0.0864044427871704, 0.7677633166313171, 0.6112527251243591, -0.0935023576021194, 0.0358289442956448, -0.0510838404297829, 0.0531301461160183, -0.1200713515281677, -0.0281702410429716, 0.3054289221763611, -0.1970508396625519, 0.1440129280090332), c2);\n\tc2 = MulAdd(bl1, MF4x4(0.0137230604887009, 0.1833357512950897, -0.0056075016036630, -0.1050542071461678, 0.0367035493254662, 0.0896537080407143, -0.0109558179974556, -0.0221142154186964, -0.0462382063269615, -0.1151964291930199, -0.0042086942121387, 0.0297981910407543, 0.0043998458422720, 0.0687817037105560, -0.0601253211498260, 0.0031949516851455), c2);\n\tc2 = MulAdd(bl2, MF4x4(0.0760864540934563, 0.1863034367561340, 0.0503818355500698, -0.0258647575974464, -0.0760487392544746, 0.2433954179286957, -0.1973436474800110, 0.0079258847981691, -0.0294476337730885, -0.0404389686882496, -0.0294238775968552, 0.0358795709908009, 0.0298653114587069, 0.0783578902482986, 0.0419599078595638, 0.0248970054090023), c2);\n\tc2 = MulAdd(tc1, MF4x4(0.0907182395458221, 0.0576495565474033, 0.0530257523059845, 0.0549531430006027, 0.0915074944496155, -0.0465312339365482, -0.0230909585952759, -0.1178105399012566, -0.1995413154363632, -0.0433083362877369, -0.0418573357164860, 0.0866744294762611, -0.0793146342039108, 0.0074148247949779, 0.1731810569763184, 0.0715740397572517), c2);\n\tc2 = MulAdd(tc2, MF4x4(0.0023458630312234, 0.0404974594712257, -0.1356777399778366, 0.0418198816478252, -0.0675975754857063, 0.0050714882090688, 0.1104314029216766, -0.1206769123673439, -0.1913090348243713, 0.0773992761969566, 0.0560133233666420, -0.2490582764148712, 0.0971352458000183, 0.0728188008069992, 0.0192280132323503, 0.0784228071570396), c2);\n\tc2 = MulAdd(mc1, MF4x4(-0.0261659007519484, 0.1157309040427208, -0.3534074723720551, 0.5200188755989075, 0.1345363408327103, -0.1973183751106262, 0.1199645772576332, -1.1136766672134399, 0.1412540972232819, 0.1534357517957687, 0.2593606412410736, 0.3824510574340820, 0.5013928413391113, -0.1928857117891312, -0.2875523269176483, -0.0354673676192760), c2);\n\tc2 = MulAdd(mc2, MF4x4(0.1194906458258629, 0.1256935596466064, 0.0932049900293350, 0.1464174836874008, 0.0670514181256294, -0.1400509625673294, 0.1003381684422493, -0.1169824004173279, 0.2452844530344009, -0.0348181650042534, -0.3607256710529327, -0.3338264226913452, -0.0456272326409817, -0.0939910858869553, -0.1304696053266525, 0.0402086712419987), c2);\n\tc2 = MulAdd(bc1, MF4x4(-0.0869473740458488, -0.1211445480585098, 0.0065225088037550, 0.0068075512535870, -0.1304764598608017, -0.0536689385771751, -0.1490984708070755, -0.0136555638164282, 0.1024399474263191, 0.0315260104835033, 0.0369606800377369, -0.0167442485690117, 0.0501606240868568, -0.0476666353642941, 0.0291139576584101, -0.0997947081923485), c2);\n\tc2 = MulAdd(bc2, MF4x4(-0.0373449698090553, -0.0382255539298058, -0.1446493864059448, 0.0054460307583213, 0.0428361445665359, -0.2411493360996246, 0.0281034875661135, -0.1959404051303864, -0.0147660700604320, -0.0115446811541915, -0.0435077212750912, -0.0445765219628811, 0.0025869212113321, -0.0454641655087471, -0.0552970357239246, 0.0636689588427544), c2);\n\tc2 = MulAdd(tr1, MF4x4(0.0051982915028930, -0.0825250744819641, 0.0167135465890169, -0.1018612906336784, -0.0686964690685272, 0.0087886471301317, -0.0206265803426504, -0.0206072553992271, 0.0498707666993141, -0.0364030301570892, 0.0309015773236752, 0.0090340757742524, -0.0129618886858225, 0.0051486417651176, 0.0260841641575098, 0.0167939160019159), c2);\n\tc2 = MulAdd(tr2, MF4x4(0.0010780893499032, -0.0352349840104580, -0.0192162413150072, -0.0381371527910233, 0.0282760411500931, -0.0559629201889038, 0.0619673281908035, -0.0514238551259041, 0.0122259482741356, 0.0608348101377487, -0.0754647627472878, -0.1400517821311951, -0.0136043848469853, 0.0550616234540939, -0.0093750739470124, 0.0393888689577579), c2);\n\tc2 = MulAdd(mr1, MF4x4(-0.1028572022914886, -0.0257119275629520, -0.0871436968445778, -0.2802977561950684, 0.1279940754175186, 0.0694741085171700, 0.0366430617868900, 0.1782210469245911, -0.0931140556931496, -0.1249292492866516, -0.0775476619601250, -0.3643486201763153, -0.1307956129312515, -0.0392269045114517, -0.0212084632366896, 0.0024634231813252), c2);\n\tc2 = MulAdd(mr2, MF4x4(-0.0036887160968035, -0.0489760562777519, -0.0022769547067583, -0.0936355590820312, -0.0981694832444191, -0.0402673967182636, -0.0764046013355255, 0.0067043504677713, 0.0426195561885834, -0.0056512621231377, 0.0814872384071350, -0.0765113532543182, 0.0027868365868926, 0.0623648613691330, 0.0598746836185455, 0.1226531565189362), c2);\n\tc2 = MulAdd(br1, MF4x4(0.0350537523627281, 0.0229270569980145, 0.0465267412364483, -0.0452729463577271, 0.0256041418761015, 0.0215708781033754, -0.0193957649171352, -0.0173931997269392, 0.0231500957161188, -0.0499401167035103, 0.0173991154879332, -0.0804103761911392, -0.0232445765286684, -0.0107213268056512, 0.0450597628951073, 0.0691299363970757), c2);\n\tc2 = MulAdd(br2, MF4x4(0.0023379696067423, -0.0239015202969313, -0.0137971211224794, -0.0529763884842396, 0.0394022278487682, 0.0184435173869133, 0.0855478867888451, 0.0777183994650841, -0.0052624838426709, -0.0031146518886089, 0.0387042500078678, 0.0015482418239117, -0.0088084554299712, 0.0233839545398951, -0.0151950558647513, 0.0070519605651498), c2);\n\tc2 = max(c2, 0) + MF4(0.7931001186370850, -0.0506631620228291, 0.3833878636360168, 0.3061273992061615) * min(c2, 0);\n\n\tMF4 target1 = MF4(0.0313877351582050, -0.0325053185224533, -0.0413495972752571, 0.0357267409563065);\n\ttarget1 = MulAdd(c1, MF4x4(0.1461677402257919, -0.1208343803882599, 0.0125428512692451, -0.1319324076175690, -0.3387282788753510, -0.3393035829067230, -0.2043240815401077, 0.0048940703272820, -0.0343158058822155, 0.0995195582509041, -0.0571033284068108, -0.0356303341686726, 0.1097832918167114, 0.1462953090667725, 0.0575199872255325, -0.1682354062795639), target1);\n\ttarget1 = MulAdd(c2, MF4x4(0.1110563054680824, 0.0068465564399958, -0.0098551185801625, -0.1380221396684647, -0.3268660008907318, -0.2625139057636261, 0.5479852557182312, -0.0188483651727438, -0.7557058334350586, -0.6716431379318237, 0.0680231377482414, 1.0786534547805786, -0.0519768036901951, -0.0483648441731930, 0.1052823588252068, 0.0570317767560482), target1);\n\ttarget1 += featureMap1.SampleLevel(sam, pos, 0);\n\ttarget1 = max(target1, 0) + MF4(0.9962985515594482, 0.9851159453392029, 0.2272046357393265, -0.1116774082183838) * min(target1, 0);\n\n\tMF4 target2 = MF4(-0.0820835754275322, -0.0049459170550108, -0.1635029017925262, 0.0367167443037033);\n\ttarget2 = MulAdd(c1, MF4x4(-0.1730685681104660, -0.1758024245500565, -0.0673282966017723, -0.7883995175361633, -0.0092403469607234, 0.1237237676978111, -0.0802010595798492, 0.1532886922359467, -0.0256615914404392, 0.0783618539571762, -0.0216845069080591, 0.4360575079917908, 0.2488089799880981, -0.0421040952205658, 0.4070311486721039, 0.1112201139330864), target2);\n\ttarget2 = MulAdd(c2, MF4x4(-0.1360913068056107, -0.0307455379515886, -0.1545475125312805, -0.0465389303863049, -0.1308580189943314, 0.2625028789043427, -0.2567890584468842, 0.3363034725189209, 0.1148972064256668, 0.3114618360996246, -0.1600875705480576, 0.6157666444778442, 0.0422471873462200, 0.0509155690670013, -1.1255714893341064, 0.0219085998833179), target2);\n\ttarget2 += featureMap2.SampleLevel(sam, pos, 0);\n\ttarget2 = max(target2, 0) + MF4(-0.3776825070381165, 1.2568452358245850, 0.3147132694721222, 1.0953333377838135) * min(target2, 0);\n\n\ttex3[gxy] = target1;\n\ttex4[gxy] = target2;\n}\n\n\n//!PASS 6\n//!DESC sub-pixel convolution, aggregation\n//!IN tex3, tex4, INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nconst static MF2x3 rgb2uv = {\n\t-0.169, -0.331, 0.5,\n\t0.5, -0.419, -0.081\n};\n\nconst static MF3x3 yuv2rgb = {\n\t1, -0.00093, 1.401687,\n\t1, -0.3437, -0.71417,\n\t1, 1.77216, 0.00099\n};\n\nvoid Pass6(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 outputPt = GetOutputPt();\n\n\tfloat2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\n\t// [tl, tc, tr]\n\t// [ml, mc, mr]\n\t// [bl, bc, br]\n\tMF4 tl1 = tex3.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl1 = tex3.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc1 = tex3.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc1 = tex3.SampleLevel(sam, pos, 0);\n\tMF4 bc1 = tex3.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr1 = tex3.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br1 = tex3.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 tl2 = tex4.SampleLevel(sam, pos - inputPt, 0);\n\tMF4 ml2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0);\n\tMF4 bl2 = tex4.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0);\n\tMF4 tc2 = tex4.SampleLevel(sam, pos + float2(0, -inputPt.y), 0);\n\tMF4 mc2 = tex4.SampleLevel(sam, pos, 0);\n\tMF4 bc2 = tex4.SampleLevel(sam, pos + float2(0, inputPt.y), 0);\n\tMF4 tr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0);\n\tMF4 mr2 = tex4.SampleLevel(sam, pos + float2(inputPt.x, 0), 0);\n\tMF4 br2 = tex4.SampleLevel(sam, pos + inputPt, 0);\n\n\tMF4 result = { 0.2160381823778152,0.2298326790332794,0.2062894254922867,0.2233859002590179 };\n\tresult = MulAdd(tl1, MF4x4(-0.0031023439951241, 0.0059619112871587, 0.0058020050637424, 0.0062482208013535, 0.0052765505388379, -0.0022552218288183, -0.0065842187032104, -0.0008604917675257, 0.0003460258303676, -0.0022195784840733, -0.0074996319599450, -0.0015739878872409, 0.0056171459145844, 0.0002592361997813, 0.0019835520070046, 0.0018105609342456), result);\n\tresult = MulAdd(tl2, MF4x4(0.0275507327169180, 0.0051669259555638, -0.0139658711850643, 0.0030883529689163, 0.0089544747024775, 0.0085759535431862, -0.0002981633588206, -0.0054096584208310, -0.0125233745202422, 0.0065056309103966, 0.0073427790775895, 0.0003864165919367, -0.0041021117940545, 0.0030372787732631, 0.0006185144884512, 0.0062267151661217), result);\n\tresult = MulAdd(ml1, MF4x4(0.0105074141174555, -0.0004502697847784, -0.0009122507181019, 0.0026426143012941, 0.0040101194754243, -0.0023395312018692, 0.0017362632788718, 0.0091658774763346, 0.0205013062804937, -0.0020239499863237, -0.0114130824804306, -0.0075353132560849, 0.0225470513105392, -0.0366680622100830, -0.0000535918843525, 0.0050146644935012), result);\n\tresult = MulAdd(ml2, MF4x4(0.0625989288091660, 0.1151928976178169, -0.0027104590553790, -0.0123298475518823, -0.0099824573844671, 0.0108926137909293, 0.0334197729825974, 0.0193741749972105, 0.0490560680627823, 0.0152345551177859, 0.0405332818627357, 0.0399475656449795, 0.0105373272672296, -0.0020778691396117, -0.0097913276404142, 0.0004653275245801), result);\n\tresult = MulAdd(bl1, MF4x4(-0.0080901645123959, -0.0073888520710170, -0.0015905323671177, 0.0006022278103046, -0.0082205599173903, -0.0010853469138965, 0.0055166282691061, 0.0084898881614208, 0.0071090045385063, 0.0003273489419371, -0.0063129402697086, -0.0121429329738021, -0.0069875395856798, -0.0045646210201085, 0.0015905641485006, 0.0037552448920906), result);\n\tresult = MulAdd(bl2, MF4x4(-0.0046724923886359, 0.0016644159331918, 0.0062663913704455, 0.0014710600953549, -0.0338839665055275, -0.0083738788962364, 0.0060393707826734, 0.0241303537040949, -0.0034021178726107, 0.0056042689830065, -0.0083823651075363, 0.0026392592117190, 0.0026657863054425, 0.0020144139416516, -0.0042312326841056, -0.0035609540063888), result);\n\tresult = MulAdd(tc1, MF4x4(0.0009882192825899, 0.0002152582601411, -0.0123004913330078, -0.0005484037101269, -0.0111524788662791, 0.0119459852576256, -0.0154546750709414, 0.0188625976443291, 0.0204733721911907, -0.0079483250156045, -0.0007576426141895, -0.0042714662849903, 0.0307108033448458, -0.0069440440274775, 0.0000003838358680, 0.0070015545934439), result);\n\tresult = MulAdd(tc2, MF4x4(-0.0063984976150095, -0.0027606852818280, -0.0355033427476883, 0.0163108259439468, -0.0317453853785992, 0.0353556163609028, -0.0016268522012979, 0.0312290452420712, 0.0149499354884028, -0.0139254443347454, 0.0109228380024433, 0.0234404578804970, 0.0088780215010047, 0.0083913588896394, 0.0070422240532935, 0.0086190626025200), result);\n\tresult = MulAdd(mc1, MF4x4(0.4668360948562622, 0.5502970218658447, 0.5616708993911743, 0.4827409684658051, -0.4825374484062195, -0.4473012387752533, -0.3305214643478394, -0.5241096019744873, -0.1466400325298309, 0.0804405659437180, 0.0349484048783779, 0.0052239256910980, -0.1175492331385612, 0.0954673886299133, 0.1326161473989487, -0.1377900093793869), result);\n\tresult = MulAdd(mc2, MF4x4(0.0407393611967564, 0.0987918972969055, -0.0807525441050529, -0.1235820129513741, -0.0658119991421700, 0.0621846020221710, -0.0816140249371529, 0.0406704805791378, 0.3287288248538971, 0.3512411415576935, -0.3979234397411346, -0.3275865316390991, 0.2961717247962952, 0.0169802401214838, 0.2695185840129852, 0.0150923738256097), result);\n\tresult = MulAdd(bc1, MF4x4(-0.0050105354748666, -0.0008035619393922, -0.0079824347048998, 0.0376648232340813, -0.0048509594053030, -0.0067090289667249, -0.0259696990251541, 0.0086074192076921, 0.0126011213287711, -0.0174850821495056, 0.0156697910279036, 0.0028463243506849, 0.0099161649122834, -0.0114374589174986, -0.0169337950646877, 0.0257211104035378), result);\n\tresult = MulAdd(bc2, MF4x4(0.0043578865006566, -0.0106186466291547, 0.0165964700281620, 0.0014091627672315, 0.0037815889809281, 0.0364324115216732, -0.0395258180797100, 0.0625703483819962, -0.0144113656133413, 0.0321297869086266, 0.0208382532000542, -0.0383783876895905, -0.0258011315017939, -0.0143258580937982, -0.0092717679217458, -0.0178859047591686), result);\n\tresult = MulAdd(tr1, MF4x4(-0.0050332350656390, -0.0001488960406277, -0.0115145305171609, 0.0045622875913978, -0.0021374952048063, 0.0015796425286680, -0.0077072884887457, 0.0015828146133572, 0.0171351470053196, 0.0024297721683979, -0.0374940223991871, 0.0058337682858109, -0.0027352231554687, 0.0007051698048599, -0.0002820930676535, -0.0036236173473299), result);\n\tresult = MulAdd(tr2, MF4x4(0.0016052227001637, 0.0049667325802147, -0.0081164520233870, -0.0035548578016460, -0.0131295239552855, 0.0158293209969997, -0.0340857952833176, 0.0222462061792612, -0.0019779701251537, -0.0012918257853016, 0.0048964750021696, 0.0049310824833810, 0.0011332486756146, -0.0004788591759279, -0.0017202866729349, 0.0012215448077768), result);\n\tresult = MulAdd(mr1, MF4x4(-0.0057867411524057, -0.0133802210912108, 0.0158019792288542, 0.0344623439013958, -0.0040443707257509, -0.0037790425121784, 0.0045541841536760, 0.0198037009686232, 0.1110823750495911, 0.0822209641337395, -0.0382958762347698, -0.1459431499242783, 0.0010219293180853, -0.0161874033510685, -0.0285891294479370, 0.0300961043685675), result);\n\tresult = MulAdd(mr2, MF4x4(-0.0089390166103840, -0.0105021111667156, -0.0130960196256638, -0.0257005076855421, 0.0099271116778255, -0.0267942640930414, 0.0677764937281609, 0.0239320658147335, -0.0469516664743423, -0.0230019800364971, -0.0446235798299313, -0.0338921397924423, -0.0061601125635207, 0.0139691382646561, -0.0029954034835100, -0.0108477231115103), result);\n\tresult = MulAdd(br1, MF4x4(-0.0002513871586416, 0.0017334159929305, -0.0072467559948564, -0.0149013847112656, -0.0091025009751320, -0.0054195052944124, -0.0053499941714108, 0.0118143679574132, -0.0134334927424788, 0.0106377983465791, -0.0072384304367006, 0.0483081750571728, -0.0011459409724921, -0.0010465533705428, 0.0040362793952227, -0.0004637696838472), result);\n\tresult = MulAdd(br2, MF4x4(0.0037248437292874, 0.0041816406883299, -0.0139264371246099, 0.0035959482192993, -0.0390684641897678, -0.0257617402821779, -0.0298785082995892, -0.0066674682311714, -0.0151000469923019, -0.0176323894411325, 0.0045121158473194, 0.0077007445506752, 0.0051746177487075, 0.0075236861594021, 0.0008582049049437, 0.0010294843232259), result);\n\n\t[unroll]\n\tfor (uint i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j <= 1; ++j) {\n\t\t\tconst uint2 destPos = gxy + uint2(i, j);\n\n\t\t\tMF2 originUV = mul(rgb2uv, INPUT.SampleLevel(sam1, (destPos + 0.5f) * outputPt, 0).rgb);\n\t\t\tconst uint index = i * 2 + j;\n\t\t\tOUTPUT[destPos] = MF4(mul(yuv2rgb, MF3(result[index], originUV)), 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/FXAA/FXAA.hlsli",
    "content": "// 移植自 https://github.com/libretro/slang-shaders/blob/master/anti-aliasing/shaders/fxaa.slang\n\n\n/*\nFXAA_PRESET - Choose compile-in knob preset 0-5.\n------------------------------------------------------------------------------\nFXAA_EDGE_THRESHOLD - The minimum amount of local contrast required\n\t\t\t\t\t  to apply algorithm.\n\t\t\t\t\t  1.0/3.0  - too little\n\t\t\t\t\t  1.0/4.0  - good start\n\t\t\t\t\t  1.0/8.0  - applies to more edges\n\t\t\t\t\t  1.0/16.0 - overkill\n------------------------------------------------------------------------------\nFXAA_EDGE_THRESHOLD_MIN - Trims the algorithm from processing darks.\n\t\t\t\t\t\t  Perf optimization.\n\t\t\t\t\t\t  1.0/32.0 - visible limit (smaller isn't visible)\n\t\t\t\t\t\t  1.0/16.0 - good compromise\n\t\t\t\t\t\t  1.0/12.0 - upper limit (seeing artifacts)\n------------------------------------------------------------------------------\nFXAA_SEARCH_STEPS - Maximum number of search steps for end of span.\n------------------------------------------------------------------------------\nFXAA_SEARCH_THRESHOLD - Controls when to stop searching.\n\t\t\t\t\t\t1.0/4.0 - seems to be the best quality wise\n------------------------------------------------------------------------------\nFXAA_SUBPIX_TRIM - Controls sub-pixel aliasing removal.\n\t\t\t\t   1.0/2.0 - low removal\n\t\t\t\t   1.0/3.0 - medium removal\n\t\t\t\t   1.0/4.0 - default removal\n\t\t\t\t   1.0/8.0 - high removal\n\t\t\t\t   0.0 - complete removal\n------------------------------------------------------------------------------\nFXAA_SUBPIX_CAP - Insures fine detail is not completely removed.\n\t\t\t\t  This is important for the transition of sub-pixel detail,\n\t\t\t\t  like fences and wires.\n\t\t\t\t  3.0/4.0 - default (medium amount of filtering)\n\t\t\t\t  7.0/8.0 - high amount of filtering\n\t\t\t\t  1.0 - no capping of sub-pixel aliasing removal\n*/\n\n#ifndef FXAA_PRESET\n#define FXAA_PRESET 5\n#endif\n#if (FXAA_PRESET == 3)\n#define FXAA_EDGE_THRESHOLD      (1.0/8.0)\n#define FXAA_EDGE_THRESHOLD_MIN  (1.0/16.0)\n#define FXAA_SEARCH_STEPS        16\n#define FXAA_SEARCH_THRESHOLD    (1.0/4.0)\n#define FXAA_SUBPIX_CAP          (3.0/4.0)\n#define FXAA_SUBPIX_TRIM         (1.0/4.0)\n#endif\n#if (FXAA_PRESET == 4)\n#define FXAA_EDGE_THRESHOLD      (1.0/8.0)\n#define FXAA_EDGE_THRESHOLD_MIN  (1.0/24.0)\n#define FXAA_SEARCH_STEPS        24\n#define FXAA_SEARCH_THRESHOLD    (1.0/4.0)\n#define FXAA_SUBPIX_CAP          (3.0/4.0)\n#define FXAA_SUBPIX_TRIM         (1.0/4.0)\n#endif\n#if (FXAA_PRESET == 5)\n#define FXAA_EDGE_THRESHOLD      (1.0/8.0)\n#define FXAA_EDGE_THRESHOLD_MIN  (1.0/24.0)\n#define FXAA_SEARCH_STEPS        32\n#define FXAA_SEARCH_THRESHOLD    (1.0/4.0)\n#define FXAA_SUBPIX_CAP          (3.0/4.0)\n#define FXAA_SUBPIX_TRIM         (1.0/4.0)\n#endif\n\n#define FXAA_SUBPIX_TRIM_SCALE (1.0/(1.0 - FXAA_SUBPIX_TRIM))\n\n// Return the luma, the estimation of luminance from rgb inputs.\n// This approximates luma using one FMA instruction,\n// skipping normalization and tossing out blue.\n// FxaaLuma() will range 0.0 to 2.963210702.\nfloat FxaaLuma(float3 rgb) {\n\treturn rgb.y * (0.587 / 0.299) + rgb.x;\n}\n\nfloat3 FxaaLerp3(float3 a, float3 b, float amountOfA) {\n\treturn (a - b) * amountOfA + b;\n}\n\n\nfloat3 FXAA(float3 src[4][4], uint i, uint j, Texture2D<float4> INPUT, SamplerState sam, float2 pos, float2 inputPt) {\n\tfloat lumaN = FxaaLuma(src[i][j - 1]);\n\tfloat lumaW = FxaaLuma(src[i - 1][j]);\n\tfloat lumaM = FxaaLuma(src[i][j]);\n\tfloat lumaE = FxaaLuma(src[i + 1][j]);\n\tfloat lumaS = FxaaLuma(src[i][j + 1]);\n\tfloat rangeMin = min(lumaM, min(min(lumaN, lumaW), min(lumaS, lumaE)));\n\tfloat rangeMax = max(lumaM, max(max(lumaN, lumaW), max(lumaS, lumaE)));\n\n\tfloat range = rangeMax - rangeMin;\n\tif (range < max(FXAA_EDGE_THRESHOLD_MIN, rangeMax * FXAA_EDGE_THRESHOLD)) {\n\t\treturn src[i][j];\n\t} else {\n\t\tfloat3 rgbL = src[i][j - 1] + src[i - 1][j] + src[i][j] + src[i + 1][j] + src[i][j + 1];\n\n\t\tfloat lumaL = (lumaN + lumaW + lumaE + lumaS) * 0.25;\n\t\tfloat rangeL = abs(lumaL - lumaM);\n\t\tfloat blendL = max(0.0, (rangeL / range) - FXAA_SUBPIX_TRIM) * FXAA_SUBPIX_TRIM_SCALE;\n\t\tblendL = min(FXAA_SUBPIX_CAP, blendL);\n\n\t\trgbL += (src[i - 1][j - 1] + src[i + 1][j - 1] + src[i - 1][j + 1] + src[i + 1][j + 1]);\n\t\trgbL *= 1.0 / 9.0;\n\n\t\tfloat lumaNW = FxaaLuma(src[i - 1][j - 1]);\n\t\tfloat lumaNE = FxaaLuma(src[i + 1][j - 1]);\n\t\tfloat lumaSW = FxaaLuma(src[i - 1][j + 1]);\n\t\tfloat lumaSE = FxaaLuma(src[i + 1][j + 1]);\n\n\t\tfloat edgeVert =\n\t\t\tabs((0.25 * lumaNW) + (-0.5 * lumaN) + (0.25 * lumaNE)) +\n\t\t\tabs((0.50 * lumaW) + (-1.0 * lumaM) + (0.50 * lumaE)) +\n\t\t\tabs((0.25 * lumaSW) + (-0.5 * lumaS) + (0.25 * lumaSE));\n\t\tfloat edgeHorz =\n\t\t\tabs((0.25 * lumaNW) + (-0.5 * lumaW) + (0.25 * lumaSW)) +\n\t\t\tabs((0.50 * lumaN) + (-1.0 * lumaM) + (0.50 * lumaS)) +\n\t\t\tabs((0.25 * lumaNE) + (-0.5 * lumaE) + (0.25 * lumaSE));\n\n\t\tbool horzSpan = edgeHorz >= edgeVert;\n\t\tfloat lengthSign = horzSpan ? -inputPt.y : -inputPt.x;\n\n\t\tif (!horzSpan) {\n\t\t\tlumaN = lumaW;\n\t\t\tlumaS = lumaE;\n\t\t}\n\n\t\tfloat gradientN = abs(lumaN - lumaM);\n\t\tfloat gradientS = abs(lumaS - lumaM);\n\t\tlumaN = (lumaN + lumaM) * 0.5;\n\t\tlumaS = (lumaS + lumaM) * 0.5;\n\n\t\tif (gradientN < gradientS) {\n\t\t\tlumaN = lumaS;\n\t\t\tlumaN = lumaS;\n\t\t\tgradientN = gradientS;\n\t\t\tlengthSign *= -1.0;\n\t\t}\n\n\t\tfloat2 posN;\n\t\tposN.x = pos.x + (horzSpan ? 0.0 : lengthSign * 0.5);\n\t\tposN.y = pos.y + (horzSpan ? lengthSign * 0.5 : 0.0);\n\n\t\tgradientN *= FXAA_SEARCH_THRESHOLD;\n\n\t\tfloat2 posP = posN;\n\t\tfloat2 offNP = horzSpan ? float2(inputPt.x, 0.0) : float2(0.0, inputPt.y);\n\t\tfloat lumaEndN = lumaN;\n\t\tfloat lumaEndP = lumaN;\n\t\tbool doneN = false;\n\t\tbool doneP = false;\n\t\tposN += offNP * float2(-1.0, -1.0);\n\t\tposP += offNP * float2(1.0, 1.0);\n\n\t\tfor (int i = 0; i < FXAA_SEARCH_STEPS; i++) {\n\t\t\tif (!doneN) {\n\t\t\t\tlumaEndN = FxaaLuma(INPUT.SampleLevel(sam, posN.xy, 0).xyz);\n\t\t\t}\n\t\t\tif (!doneP) {\n\t\t\t\tlumaEndP = FxaaLuma(INPUT.SampleLevel(sam, posP.xy, 0).xyz);\n\t\t\t}\n\n\t\t\tdoneN = doneN || (abs(lumaEndN - lumaN) >= gradientN);\n\t\t\tdoneP = doneP || (abs(lumaEndP - lumaN) >= gradientN);\n\n\t\t\tif (doneN && doneP) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (!doneN) {\n\t\t\t\tposN -= offNP;\n\t\t\t}\n\t\t\tif (!doneP) {\n\t\t\t\tposP += offNP;\n\t\t\t}\n\t\t}\n\n\t\tfloat dstN = horzSpan ? pos.x - posN.x : pos.y - posN.y;\n\t\tfloat dstP = horzSpan ? posP.x - pos.x : posP.y - pos.y;\n\t\tbool directionN = dstN < dstP;\n\t\tlumaEndN = directionN ? lumaEndN : lumaEndP;\n\n\t\tif (((lumaM - lumaN) < 0.0) == ((lumaEndN - lumaN) < 0.0)) {\n\t\t\tlengthSign = 0.0;\n\t\t}\n\n\t\tfloat spanLength = (dstP + dstN);\n\t\tdstN = directionN ? dstN : dstP;\n\t\tfloat subPixelOffset = (0.5 + (dstN * (-1.0 / spanLength))) * lengthSign;\n\t\tfloat3 rgbF = INPUT.SampleLevel(sam, float2(\n\t\t\tpos.x + (horzSpan ? 0.0 : subPixelOffset),\n\t\t\tpos.y + (horzSpan ? subPixelOffset : 0.0)), 0).xyz;\n\t\treturn FxaaLerp3(rgbL, rgbF, blendL);\n\t}\n}\n"
  },
  {
    "path": "src/Effects/FXAA/FXAA_High.hlsl",
    "content": "// 移植自 https://github.com/libretro/slang-shaders/blob/master/anti-aliasing/shaders/fxaa.slang\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME FXAA_1\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n#define FXAA_PRESET 4\n#include \"FXAA.hlsli\"\n\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tfloat3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst float4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst float4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst float4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = float3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = float3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = float3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = float3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 1; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i, j);\n\t\t\tOUTPUT[destPos] = float4(FXAA(src, i + 1, j + 1, INPUT, sam, (destPos + 0.5f) * inputPt, inputPt), 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/FXAA/FXAA_Medium.hlsl",
    "content": "// 移植自 https://github.com/libretro/slang-shaders/blob/master/anti-aliasing/shaders/fxaa.slang\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME FXAA_0\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n#define FXAA_PRESET 3\n#include \"FXAA.hlsli\"\n\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tfloat3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst float4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst float4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst float4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = float3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = float3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = float3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = float3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 1; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i, j);\n\t\t\tOUTPUT[destPos] = float4(FXAA(src, i + 1, j + 1, INPUT, sam, (destPos + 0.5f) * inputPt, inputPt), 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/FXAA/FXAA_Ultra.hlsl",
    "content": "// 移植自 https://github.com/libretro/slang-shaders/blob/master/anti-aliasing/shaders/fxaa.slang\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME FXAA_2\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n#define FXAA_PRESET 5\n#include \"FXAA.hlsli\"\n\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tfloat3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst float4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst float4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst float4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = float3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = float3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = float3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = float3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 1; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i, j);\n\t\t\tOUTPUT[destPos] = float4(FXAA(src, i + 1, j + 1, INPUT, sam, (destPos + 0.5f) * inputPt, inputPt), 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/ImageAdjustment.hlsl",
    "content": "// 移植自 https://github.com/libretro/slang-shaders/blob/3f67e1870dbd5be74ae2f09eaed0eeadce6abd15/misc/image-adjustment.slang\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!LABEL Target Gamma\n//!DEFAULT 2.2\n//!MIN 0.01\n//!MAX 5\n//!STEP 0.01\nfloat targetGamma;\n\n//!PARAMETER\n//!LABEL Monitor Gamma\n//!DEFAULT 2.2\n//!MIN 0.01\n//!MAX 5\n//!STEP 0.01\nfloat monitorGamma;\n\n//!PARAMETER\n//!LABEL Saturation\n//!DEFAULT 1\n//!MIN 0\n//!MAX 5\n//!STEP 0.01\nfloat saturation;\n\n//!PARAMETER\n//!LABEL Luminance\n//!DEFAULT 1\n//!MIN 0\n//!MAX 2\n//!STEP 0.01\nfloat luminance;\n\n//!PARAMETER\n//!LABEL Contrast\n//!DEFAULT 1\n//!MIN 0\n//!MAX 10\n//!STEP 0.1\nfloat contrast;\n\n//!PARAMETER\n//!LABEL Brightness Boost\n//!DEFAULT 0\n//!MIN -1\n//!MAX 1\n//!STEP 0.01\nfloat brightBoost;\n\n//!PARAMETER\n//!LABEL Black Level\n//!DEFAULT 0\n//!MIN -1\n//!MAX 1\n//!STEP 0.01\nfloat blackLevel;\n\n//!PARAMETER\n//!LABEL Red Channel\n//!DEFAULT 1\n//!MIN 0\n//!MAX 2\n//!STEP 0.01\nfloat r;\n\n//!PARAMETER\n//!LABEL Green Channel\n//!DEFAULT 1\n//!MIN 0\n//!MAX 2\n//!STEP 0.01\nfloat g;\n\n//!PARAMETER\n//!LABEL Blue Channel\n//!DEFAULT 1\n//!MIN 0\n//!MAX 2\n//!STEP 0.01\nfloat b;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\n\nfloat3 RGBtoHSV(float3 c) {\n    float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n    float4 p = c.y < c.z ? float4(c.bg, K.wz) : float4(c.gb, K.xy);\n    float4 q = c.x < p.x ? float4(p.xyw, c.x) : float4(c.x, p.yzx);\n\n    float d = q.x - min(q.w, q.y);\n    float e = 1.0e-10;\n    return float3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n}\n\nfloat3 HSVtoRGB(float3 c) {\n    float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n    float3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www);\n    return c.z * lerp(K.xxx, saturate(p - K.xxx), c.y);\n}\n\nfloat4 Pass1(float2 pos) {\n\tfloat3 color = INPUT.SampleLevel(sam, pos, 0).rgb;\n\n    // saturation and luminance\n\tcolor = saturate(HSVtoRGB(RGBtoHSV(color) * float3(1.0, saturation, luminance)));\n\n    // contrast and brightness\n    color = saturate((color - 0.5) * contrast + 0.5 + brightBoost);\n\n    // black level\n    color -= blackLevel;\n    color = saturate(color / (1 - blackLevel));\n\n\t// gamma correction\n\tcolor = pow(color, targetGamma / monitorGamma);\n\n    color *= float3(r, g, b);\n\n\treturn float4(color, 1);\n}\n"
  },
  {
    "path": "src/Effects/Jinc.hlsl",
    "content": "// Jinc2 插值算法\n// 移植自 https://github.com/libretro/common-shaders/blob/master/windowed/shaders/jinc2.cg\n//\n// This is an approximation of Jinc(x)*Jinc(x*r1/r2) for x < 2.5,\n// where r1 and r2 are the first two zeros of jinc function.\n// For a jinc 2-lobe best approximation, use A=0.5 and B=0.825.\n\n// A=0.5, B=0.825 is the best jinc approximation for x<2.5. if B=1.0, it's a lanczos filter.\n// Increase A to get more blur. Decrease it to get a sharper picture. \n// B = 0.825 to get rid of dithering. Increase B to get a fine sharpness, though dithering returns.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!USE MulAdd\n\n#include \"StubDefs.hlsli\"\n\n\n//!PARAMETER\n//!LABEL Window Sinc Param\n//!DEFAULT 0.5\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat windowSinc;\n\n//!PARAMETER\n//!LABEL Sinc Param\n//!DEFAULT 0.825\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat sinc;\n\n//!PARAMETER\n//!LABEL Anti-ringing Strength\n//!DEFAULT 0.5\n//!MIN 0\n//!MAX 1\n//!STEP 0.1\nfloat ARStrength;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\n#define PI 3.1415926535897932384626433832795\n\n#define min4(a, b, c, d) min(min(a, b), min(c, d))\n#define max4(a, b, c, d) max(max(a, b), max(c, d))\n\n\nfloat d(float2 pt1, float2 pt2) {\n\tfloat2 v = pt2 - pt1;\n\treturn sqrt(dot(v, v));\n}\n\nfloat4 resampler(float4 x, float wa, float wb) {\n\treturn (x == float4(0.0, 0.0, 0.0, 0.0))\n\t\t? float4(wa * wb, wa * wb, wa * wb, wa * wb)\n\t\t: sin(x * wa) * sin(x * wb) * rcp(x * x);\n}\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\n\tfloat2 dx = float2(1.0, 0.0);\n\tfloat2 dy = float2(0.0, 1.0);\n\n\tfloat2 pc = (gxy + 0.5f) * GetOutputPt() * GetInputSize();\n\tfloat2 tc = floor(pc - 0.5f) + 0.5f;\n\n\tfloat wa = windowSinc * PI;\n\tfloat wb = sinc * PI;\n\tfloat4x4 weights = {\n\t\tresampler(float4(d(pc, tc - dx - dy), d(pc, tc - dy), d(pc, tc + dx - dy), d(pc, tc + 2.0 * dx - dy)), wa, wb),\n\t\tresampler(float4(d(pc, tc - dx), d(pc, tc), d(pc, tc + dx), d(pc, tc + 2.0 * dx)), wa, wb),\n\t\tresampler(float4(d(pc, tc - dx + dy), d(pc, tc + dy), d(pc, tc + dx + dy), d(pc, tc + 2.0 * dx + dy)), wa, wb),\n\t\tresampler(float4(d(pc, tc - dx + 2.0 * dy), d(pc, tc + 2.0 * dy), d(pc, tc + dx + 2.0 * dy), d(pc, tc + 2.0 * dx + 2.0 * dy)), wa, wb)\n\t};\n\n\ttc -= 0.5f;\n\n\tfloat3 src[4][4];\n\n\t[unroll]\n\tfor (uint i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = (tc + uint2(i, j)) * inputPt;\n\t\t\tconst float4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst float4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst float4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = float3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = float3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = float3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = float3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\tfloat3 color = MulAdd(weights[0], float4x3(src[0][0], src[1][0], src[2][0], src[3][0]), 0.0);\n\tcolor = MulAdd(weights[1], float4x3(src[0][1], src[1][1], src[2][1], src[3][1]), color);\n\tcolor = MulAdd(weights[2], float4x3(src[0][2], src[1][2], src[2][2], src[3][2]), color);\n\tcolor = MulAdd(weights[3], float4x3(src[0][3], src[2][3], src[2][3], src[3][3]), color);\n\tcolor *= rcp(dot(mul(weights, float4(1, 1, 1, 1)), 1));\n\n\t// 抗振铃\n\t// Get min/max samples\n\tfloat3 min_sample = min4(src[1][1], src[2][1], src[1][2], src[2][2]);\n\tfloat3 max_sample = max4(src[1][1], src[2][1], src[1][2], src[2][2]);\n\tcolor = lerp(color, clamp(color, min_sample, max_sample), ARStrength);\n\n\t// final sum and weight normalization\n\tOUTPUT[gxy] = float4(color, 1);\n}\n"
  },
  {
    "path": "src/Effects/Lanczos.hlsl",
    "content": "// Lanczos6 插值算法\n// 移植自 https://github.com/libretro/common-shaders/blob/master/windowed/shaders/lanczos6.cg\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!LABEL Anti-ringing Strength\n//!DEFAULT 0.5\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat ARStrength;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\n\n#define FIX(c) max(abs(c), 1e-5)\n#define PI 3.14159265359\n#define min4(a, b, c, d) min(min(a, b), min(c, d))\n#define max4(a, b, c, d) max(max(a, b), max(c, d))\n\nfloat3 weight3(float x) {\n\tconst float rcpRadius = 1.0f / 3.0f;\n\tfloat3 s = FIX(2.0 * PI * float3(x - 1.5, x - 0.5, x + 0.5));\n\t// Lanczos3. Note: we normalize outside this function, so no point in multiplying by radius.\n\treturn /*radius **/ sin(s) * sin(s * rcpRadius) * rcp(s * s);\n}\n\nfloat4 Pass1(float2 pos) {\n\tpos *= GetInputSize();\n\tfloat2 inputPt = GetInputPt();\n\n\tuint i, j;\n\n\tfloat2 f = frac(pos.xy + 0.5f);\n\tfloat3 linetaps1 = weight3(0.5f - f.x * 0.5f);\n\tfloat3 linetaps2 = weight3(1.0f - f.x * 0.5f);\n\tfloat3 columntaps1 = weight3(0.5f - f.y * 0.5f);\n\tfloat3 columntaps2 = weight3(1.0f - f.y * 0.5f);\n\n\t// make sure all taps added together is exactly 1.0, otherwise some\n\t// (very small) distortion can occur\n\tfloat suml = dot(linetaps1, float3(1, 1, 1)) + dot(linetaps2, float3(1, 1, 1));\n\tfloat sumc = dot(columntaps1, float3(1, 1, 1)) + dot(columntaps2, float3(1, 1, 1));\n\tlinetaps1 /= suml;\n\tlinetaps2 /= suml;\n\tcolumntaps1 /= sumc;\n\tcolumntaps2 /= sumc;\n\n\tpos -= f + 1.5f;\n\n\tfloat3 src[6][6];\n\n\t[unroll]\n\tfor (i = 0; i <= 4; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 4; j += 2) {\n\t\t\tfloat2 tpos = (pos + uint2(i, j)) * inputPt;\n\t\t\tconst float4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst float4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst float4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = float3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = float3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = float3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = float3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t// final sum and weight normalization\n\n\tfloat3 color = float3(0, 0, 0);\n\t[unroll]\n\tfor (i = 0; i <= 4; i += 2) {\n\t\tcolor += (mul(linetaps1, float3x3(src[0][i], src[2][i], src[4][i])) + mul(linetaps2, float3x3(src[1][i], src[3][i], src[5][i]))) * columntaps1[i / 2] + (mul(linetaps1, float3x3(src[0][i + 1], src[2][i + 1], src[4][i + 1])) + mul(linetaps2, float3x3(src[1][i + 1], src[3][i + 1], src[5][i + 1]))) * columntaps2[i / 2];\n\t}\n\n\t// 抗振铃\n\tfloat3 min_sample = min4(src[2][2], src[3][2], src[2][3], src[3][3]);\n\tfloat3 max_sample = max4(src[2][2], src[3][2], src[2][3], src[3][3]);\n\tcolor = lerp(color, clamp(color, min_sample, max_sample), ARStrength);\n\n\treturn float4(color, 1);\n}\n"
  },
  {
    "path": "src/Effects/NIS/NIS.hlsl",
    "content": "//!MAGPIE EFFECT\n//!VERSION 4\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!PARAMETER\n//!LABEL Sharpness\n//!DEFAULT 0.5\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat sharpness;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!SOURCE Coef_Scale.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D coef_scaler;\n\n//!TEXTURE\n//!SOURCE Coef_USM.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D coef_usm;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState samplerLinearClamp;\n\n\n//!PASS 1\n//!IN INPUT, coef_scaler, coef_usm\n//!OUT OUTPUT\n//!BLOCK_SIZE 32,32\n//!NUM_THREADS 256\n\n#ifdef MP_DEBUG\n#pragma warning(disable: 4000)\t// X4000: use of potentially uninitialized variable (GetEdgeMap)\n#pragma warning(disable: 4714)\t// X4714: sum of temp registers and indexable temp registers times 256 threads exceeds the recommended total 16384.  Performance may be reduced\n#endif\n\n#define NIS_SCALER 1\n#define NIS_HLSL 1\n#define NIS_TEXTURE_GATHER 1\n\n#ifdef MP_FP16\n#define NIS_USE_HALF_PRECISION 1\n#else\n#define NIS_USE_HALF_PRECISION 0\n#endif\n\nstatic const float kDetectRatio = 2.0f * 1127.f / 1024.f;\nstatic const float kDetectThres = 64.0f / 1024.0f;\nstatic const float kEps = 1.0f / 255.0f;\nstatic const float kMinContrastRatio = 2.0f;\nstatic const float kMaxContrastRatio = 10.0f;\nstatic const float kRatioNorm = 1.0f / (kMaxContrastRatio - kMinContrastRatio);\nstatic const float kContrastBoost = 1.0f;\nstatic const float kSharpStartY = 0.45f;\nstatic const float kSharpEndY = 0.9f;\nstatic const float kSharpScaleY = 1.0f / (kSharpEndY - kSharpStartY);\nstatic const float sharpen_slider = sharpness - 0.5f;\nstatic const float MinScale = (sharpen_slider >= 0.0f) ? 1.25f : 1.0f;\nstatic const float MaxScale = (sharpen_slider >= 0.0f) ? 1.25f : 1.75f;\nstatic const float kSharpStrengthMin = max(0.0f, 0.4f + sharpen_slider * MinScale * 1.2f);\nstatic const float kSharpStrengthMax = 1.6f + sharpen_slider * MaxScale * 1.8f;\nstatic const float kSharpStrengthScale = kSharpStrengthMax - kSharpStrengthMin;\nstatic const float LimitScale = (sharpen_slider >= 0.0f) ? 1.25f : 1.0f;\nstatic const float kSharpLimitMin = max(0.1f, 0.14f + sharpen_slider * LimitScale * 0.32f);\nstatic const float kSharpLimitMax = 0.5f + sharpen_slider * LimitScale * 0.6f;\nstatic const float kSharpLimitScale = kSharpLimitMax - kSharpLimitMin;\n\n#define NIS_BLOCK_WIDTH MP_BLOCK_WIDTH\n#define NIS_BLOCK_HEIGHT MP_BLOCK_HEIGHT\n#define NIS_THREAD_GROUP_SIZE MP_NUM_THREADS_X\n\n#define in_texture INPUT\n#define out_texture OUTPUT\n\nstatic const float kScaleX = 1 / GetScale().x;\nstatic const float kScaleY = 1 / GetScale().y;\nstatic const float kSrcNormX = GetInputPt().x;\nstatic const float kSrcNormY = GetInputPt().y;\n\n#include \"NIS_Scaler.hlsli\"\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tNVScaler(blockStart / uint2(MP_BLOCK_WIDTH, MP_BLOCK_HEIGHT), threadId.x);\n}\n"
  },
  {
    "path": "src/Effects/NIS/NIS_Scaler.hlsli",
    "content": "// 取自 https://github.com/NVIDIAGameWorks/NVIDIAImageScaling/blob/35e13ba316c98eeecf16f37eae70ce88019911f6/NIS/NIS_Scaler.h\n\n// The MIT License(MIT)\n//\n// Copyright(c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files(the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions :\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n//---------------------------------------------------------------------------------\n// NVIDIA Image Scaling SDK  - v1.0.3\n//---------------------------------------------------------------------------------\n// The NVIDIA Image Scaling SDK provides a single spatial scaling and sharpening algorithm\n// for cross-platform support. The scaling algorithm uses a 6-tap scaling filter combined\n// with 4 directional scaling and adaptive sharpening filters, which creates nice smooth images\n// and sharp edges. In addition, the SDK provides a state-of-the-art adaptive directional sharpening algorithm\n// for use in applications where no scaling is required.\n//\n// The directional scaling and sharpening algorithm is named NVScaler while the adaptive-directional-sharpening-only\n// algorithm is named NVSharpen. Both algorithms are provided as compute shaders and\n// developers are free to integrate them in their applications. Note that if you integrate NVScaler, you\n// should NOT integrate NVSharpen, as NVScaler already includes a sharpening pass\n//\n// Pipeline Placement\n// ------------------\n// The call into the NVIDIA Image Scaling shaders must occur during the post-processing phase after tone-mapping.\n// Applying the scaling in linear HDR in-game color-space may result in a sharpening effect that is\n// either not visible or too strong. Since sharpening algorithms can enhance noisy or grainy regions, it is recommended\n// that certain effects such as film grain should occur after NVScaler or NVSharpen. Low-pass filters such as motion blur or\n// light bloom are recommended to be applied before NVScaler or NVSharpen to avoid sharpening attenuation.\n//\n// Color Space and Ranges\n// ----------------------\n// NVIDIA Image Scaling shaders can process color textures stored as either LDR or HDR with the following\n// restrictions:\n// 1) LDR\n//    - The range of color values must be in the [0, 1] range\n//    - The input color texture must be in display-referred color-space after tone mapping and OETF (gamma-correction)\n//      has been applied\n// 2) HDR PQ\n//    - The range of color values must be in the [0, 1] range\n//    - The input color texture must be in display-referred color-space after tone mapping with Rec.2020 PQ OETF applied\n// 3) HDR Linear\n//    - The recommended range of color values is [0, 12.5], where luminance value (as per BT. 709) of\n//      1.0 maps to brightness value of 80nits (sRGB peak) and 12.5 maps to 1000nits\n//    - The input color texture may have luminance values that are either linear and scene-referred or\n//      linear and display-referred (after tone mapping)\n//\n// If the input color texture sent to NVScaler/NVSharpen is in HDR format set NIS_HDR_MODE define to either\n// NIS_HDR_MODE_LINEAR (1) or NIS_HDR_MODE_PQ (2).\n//\n// Supported Texture Formats\n// -------------------------\n// Input and output formats:\n// Input and output formats are expected to be in the rages defined in previous section and should be\n// specified using non-integer data types such as DXGI_FORMAT_R8G8B8A8_UNORM.\n//\n// Coefficients formats:\n// The scaler coefficients and USM coefficients format should be specified using float4 type such as\n// DXGI_FORMAT_R32G32B32A32_FLOAT or DXGI_FORMAT_R16G16B16A16_FLOAT.\n//\n// Resource States, Buffers, and Sampler:\n// The game or application calling NVIDIA Image Scaling SDK shaders must ensure that the textures are in\n// the correct state.\n// - Input color textures must be in pixel shader read state. Shader Resource View (SRV) in DirectX\n// - The output texture must be in read/write state. Unordered Access View (UAV) in DirectX\n// - The coefficients texture for NVScaler must be in read state. Shader Resource View (SRV) in DirectX\n// - The configuration variables must be passed as constant buffer. Constant Buffer View (CBV) in DirectX\n// - The sampler for texture pixel sampling. Linear clamp SamplerState in Direct\n//\n// Adding NVIDIA Image Scaling SDK to a Project\n// --------------------------------------------\n// Include NIS_Scaler.h directly in your application or alternative use the provided NIS_Main.hlsl shader file.\n// Use NIS_Config.h to get the ideal shader dispatch values for your platform, to configure the algorithm constant\n// values (NVScalerUpdateConfig, and NVSharpenUpdateConfig), and to access the algorithm coefficients (coef_scale and coef_USM).\n//\n// Defines:\n// NIS_SCALER: default (1) NVScaler, (0) fast NVSharpen only, no upscaling\n// NIS_HDR_MODE: default (0) disabled, (1) Linear, (2) PQ\n// NIS_BLOCK_WIDTH: pixels per block width. Use GetOptimalBlockWidth query for your platform\n// NIS_BLOCK_HEIGHT: pixels per block height. Use GetOptimalBlockHeight query for your platform\n// NIS_THREAD_GROUP_SIZE: number of threads per group. Use GetOptimalThreadGroupSize query for your platform\n// NIS_USE_HALF_PRECISION: default (0) disabled, (1) enable half pression computation\n// NIS_HLSL: (1) enabled, (0) disabled\n// NIS_HLSL_6_2: default (0) HLSL v5, (1) HLSL v6.2 forces NIS_HLSL=1\n// NIS_GLSL: (1) enabled, (0) disabled\n// NIS_VIEWPORT_SUPPORT: default(0) disabled, (1) enable input/output viewport support\n// NIS_NV12_SUPPORT: default(0) disabled, (1) enable NV12 input\n// NIS_CLAMP_OUTPUT: default(0) disabled, (1) enable output clamp\n//\n// Default NVScaler shader constants:\n// [NIS_BLOCK_WIDTH, NIS_BLOCK_HEIGHT, NIS_THREAD_GROUP_SIZE] = [32, 24, 256]\n//\n// Default NVSharpen shader constants:\n// [NIS_BLOCK_WIDTH, NIS_BLOCK_HEIGHT, NIS_THREAD_GROUP_SIZE] = [32, 32, 256]\n// \n// NIS_UNROLL: default [unroll]\n// NIS_UNROLL_INNER: default NIS_UNROLL, define in case of a compiler error for inner nested loops\n//---------------------------------------------------------------------------------\n\n// NVScaler enable by default. Set to 0 for NVSharpen only\n#ifndef NIS_SCALER\n#define NIS_SCALER 1\n#endif\n\n// HDR Modes\n#define NIS_HDR_MODE_NONE  0\n#define NIS_HDR_MODE_LINEAR  1\n#define NIS_HDR_MODE_PQ  2\n#ifndef NIS_HDR_MODE\n#define NIS_HDR_MODE NIS_HDR_MODE_NONE\n#endif\n#define kHDRCompressionFactor  0.282842712f\n\n// Viewport support\n#ifndef NIS_VIEWPORT_SUPPORT\n#define NIS_VIEWPORT_SUPPORT 0\n#endif\n\n// HLSL, GLSL\n#if NIS_HLSL==0 && !defined(NIS_GLSL)\n#define NIS_GLSL 1\n#endif\n#if NIS_HLSL_6_2 || (!NIS_GLSL && !NIS_HLSL)\n#if defined(NIS_HLSL)\n#undef NIS_HLSL\n#endif\n#define NIS_HLSL 1\n#endif\n#if NIS_HLSL && NIS_GLSL\n#undef NIS_GLSL\n#define NIS_GLSL 0\n#endif\n\n// Half precision\n#ifndef NIS_USE_HALF_PRECISION\n#define NIS_USE_HALF_PRECISION 0\n#endif\n\n#if NIS_HLSL\n// Generic type and function aliases for HLSL\n#define NVF float\n#define NVF2 float2\n#define NVF3 float3\n#define NVF4 float4\n#define NVI int\n#define NVI2 int2\n#define NVU uint\n#define NVU2 uint2\n#define NVB bool\n#if NIS_USE_HALF_PRECISION\n#if NIS_HLSL_6_2\n#define NVH float16_t\n#define NVH2 float16_t2\n#define NVH3 float16_t3\n#define NVH4 float16_t4\n#else\n#define NVH min16float\n#define NVH2 min16float2\n#define NVH3 min16float3\n#define NVH4 min16float4\n#endif // NIS_HLSL_6_2\n#else // FP32 types\n#define NVH NVF\n#define NVH2 NVF2\n#define NVH3 NVF3\n#define NVH4 NVF4\n#endif // NIS_USE_HALF_PRECISION\n#define NVSHARED groupshared\n#define NVTEX_LOAD(x, pos) x[pos]\n#define NVTEX_SAMPLE(x, sampler, pos) x.SampleLevel(sampler, pos, 0)\n#define NVTEX_SAMPLE_RED(x, sampler, pos) x.GatherRed(sampler, pos)\n#define NVTEX_SAMPLE_GREEN(x, sampler, pos) x.GatherGreen(sampler, pos)\n#define NVTEX_SAMPLE_BLUE(x, sampler, pos) x.GatherBlue(sampler, pos)\n#define NVTEX_STORE(x, pos, v) x[pos] = v\n#ifndef NIS_UNROLL\n#define NIS_UNROLL [unroll]\n#endif\n#endif // NIS_HLSL\n\n// Generic type and function aliases for GLSL\n#if NIS_GLSL\n#define NVF float\n#define NVF2 vec2\n#define NVF3 vec3\n#define NVF4 vec4\n#define NVI int\n#define NVI2 ivec2\n#define NVU uint\n#define NVU2 uvec2\n#define NVB bool\n#if NIS_USE_HALF_PRECISION\n#define NVH float16_t\n#define NVH2 f16vec2\n#define NVH3 f16vec3\n#define NVH4 f16vec4\n#else // FP32 types\n#define NVH NVF\n#define NVH2 NVF2\n#define NVH3 NVF3\n#define NVH4 NVF4\n#endif  // NIS_USE_HALF_PRECISION\n#define NVSHARED shared\n#define NVTEX_LOAD(x, pos) texelFetch(sampler2D(x, samplerLinearClamp), pos, 0)\n#define NVTEX_SAMPLE(x, sampler, pos) textureLod(sampler2D(x, sampler), pos, 0)\n#define NVTEX_SAMPLE_RED(x, sampler, pos) textureGather(sampler2D(x, sampler), pos, 0)\n#define NVTEX_SAMPLE_GREEN(x, sampler, pos) textureGather(sampler2D(x, sampler), pos, 1)\n#define NVTEX_SAMPLE_BLUE(x, sampler, pos) textureGather(sampler2D(x, sampler), pos, 2)\n#define NVTEX_STORE(x, pos, v) imageStore(x, NVI2(pos), v)\n#define saturate(x) clamp(x, 0, 1)\n#define lerp(a, b, x) mix(a, b, x)\n#define GroupMemoryBarrierWithGroupSync() groupMemoryBarrier(); barrier()\n#ifndef NIS_UNROLL\n#define NIS_UNROLL\n#endif\n#endif // NIS_GLSL\n\n#ifndef NIS_UNROLL_INNER\n#define NIS_UNROLL_INNER NIS_UNROLL\n#endif\n\n// Texture gather\n#ifndef NIS_TEXTURE_GATHER\n#define NIS_TEXTURE_GATHER 0\n#endif\n\n// NIS Scaling\n#define NIS_SCALE_INT 1\n#define NIS_SCALE_FLOAT NVF(1.f)\n\n// NIS output clamp\n#if NIS_CLAMP_OUTPUT\n#if NIS_HDR_MODE == NIS_HDR_MODE_LINEAR\n#define NVCLAMP(x) ( clamp(x, 0.0f, 12.5f) )\n#else\n#define NVCLAMP(x) ( saturate(x) )\n#endif\n#else\n#define NVCLAMP(x) (x)\n#endif\n\nNVF getY(NVF3 rgba)\n{\n#if NIS_HDR_MODE == NIS_HDR_MODE_PQ\n    return NVF(0.262f) * rgba.x + NVF(0.678f) * rgba.y + NVF(0.0593f) * rgba.z;\n#elif NIS_HDR_MODE == NIS_HDR_MODE_LINEAR\n    return sqrt(NVF(0.2126f) * rgba.x + NVF(0.7152f) * rgba.y + NVF(0.0722f) * rgba.z) * kHDRCompressionFactor;\n#else\n    return NVF(0.2126f) * rgba.x + NVF(0.7152f) * rgba.y + NVF(0.0722f) * rgba.z;\n#endif\n}\n\nNVF getYLinear(NVF3 rgba)\n{\n    return NVF(0.2126f) * rgba.x + NVF(0.7152f) * rgba.y + NVF(0.0722f) * rgba.z;\n}\n\nNVF3 YUVtoRGB(NVF3 yuv)\n{\n    float y = yuv.x - 16.0f / 255.0f;\n    float u = yuv.y - 128.0f / 255.0f;\n    float v = yuv.z - 128.0f / 255.0f;\n    NVF3 rgb;\n    rgb.x = saturate(1.164f * y + 1.596f * v);\n    rgb.y = saturate(1.164f * y - 0.392f * u - 0.813f * v);\n    rgb.z = saturate(1.164f * y + 2.017f * u);\n    return rgb;\n}\n\n#if NIS_SCALER\nNVF4 GetEdgeMap(NVF p[4][4], NVI i, NVI j)\n#else\nNVF4 GetEdgeMap(NVF p[5][5], NVI i, NVI j)\n#endif\n{\n    const NVF g_0 = abs(p[0 + i][0 + j] + p[0 + i][1 + j] + p[0 + i][2 + j] - p[2 + i][0 + j] - p[2 + i][1 + j] - p[2 + i][2 + j]);\n    const NVF g_45 = abs(p[1 + i][0 + j] + p[0 + i][0 + j] + p[0 + i][1 + j] - p[2 + i][1 + j] - p[2 + i][2 + j] - p[1 + i][2 + j]);\n    const NVF g_90 = abs(p[0 + i][0 + j] + p[1 + i][0 + j] + p[2 + i][0 + j] - p[0 + i][2 + j] - p[1 + i][2 + j] - p[2 + i][2 + j]);\n    const NVF g_135 = abs(p[1 + i][0 + j] + p[2 + i][0 + j] + p[2 + i][1 + j] - p[0 + i][1 + j] - p[0 + i][2 + j] - p[1 + i][2 + j]);\n\n    const NVF g_0_90_max = max(g_0, g_90);\n    const NVF g_0_90_min = min(g_0, g_90);\n    const NVF g_45_135_max = max(g_45, g_135);\n    const NVF g_45_135_min = min(g_45, g_135);\n\n    NVF e_0_90 = 0;\n    NVF e_45_135 = 0;\n\n    if (g_0_90_max + g_45_135_max == 0)\n    {\n        return NVF4(0, 0, 0, 0);\n    }\n\n    e_0_90 = min(g_0_90_max / (g_0_90_max + g_45_135_max), 1.0f);\n    e_45_135 = 1.0f - e_0_90;\n\n    NVB c_0_90 = (g_0_90_max > (g_0_90_min * kDetectRatio)) && (g_0_90_max > kDetectThres) && (g_0_90_max > g_45_135_min);\n    NVB c_45_135 = (g_45_135_max > (g_45_135_min * kDetectRatio)) && (g_45_135_max > kDetectThres) && (g_45_135_max > g_0_90_min);\n    NVB c_g_0_90 = g_0_90_max == g_0;\n    NVB c_g_45_135 = g_45_135_max == g_45;\n\n    NVF f_e_0_90 = (c_0_90 && c_45_135) ? e_0_90 : 1.0f;\n    NVF f_e_45_135 = (c_0_90 && c_45_135) ? e_45_135 : 1.0f;\n\n    NVF weight_0 = (c_0_90 && c_g_0_90) ? f_e_0_90 : 0.0f;\n    NVF weight_90 = (c_0_90 && !c_g_0_90) ? f_e_0_90 : 0.0f;\n    NVF weight_45 = (c_45_135 && c_g_45_135) ? f_e_45_135 : 0.0f;\n    NVF weight_135 = (c_45_135 && !c_g_45_135) ? f_e_45_135 : 0.0f;\n\n    return NVF4(weight_0, weight_90, weight_45, weight_135);\n}\n\n#if NIS_SCALER\n\n#ifndef NIS_BLOCK_WIDTH\n#define NIS_BLOCK_WIDTH 32\n#endif\n#ifndef NIS_BLOCK_HEIGHT\n#define NIS_BLOCK_HEIGHT 24\n#endif\n#ifndef NIS_THREAD_GROUP_SIZE\n#define NIS_THREAD_GROUP_SIZE 256\n#endif\n#define kPhaseCount  64\n#define kFilterSize  6\n#define kSupportSize 6\n#define kPadSize     kSupportSize\n// 'Tile' is the region of source luminance values that we load into shPixelsY.\n// It is the area of source pixels covered by the destination 'Block' plus a\n// 3 pixel border of support pixels.\n#define kTilePitch              (NIS_BLOCK_WIDTH + kPadSize)\n#define kTileSize               (kTilePitch * (NIS_BLOCK_HEIGHT + kPadSize))\n// 'EdgeMap' is the region of source pixels for which edge map vectors are derived.\n// It is the area of source pixels covered by the destination 'Block' plus a\n// 1 pixel border.\n#define kEdgeMapPitch           (NIS_BLOCK_WIDTH + 2)\n#define kEdgeMapSize            (kEdgeMapPitch * (NIS_BLOCK_HEIGHT + 2))\n\nNVSHARED NVF shPixelsY[kTileSize];\nNVSHARED NVH shCoefScaler[kPhaseCount][kFilterSize];\nNVSHARED NVH shCoefUSM[kPhaseCount][kFilterSize];\nNVSHARED NVH4 shEdgeMap[kEdgeMapSize];\n\nvoid LoadFilterBanksSh(NVI i0) {\n    // Load up filter banks to shared memory\n    // The work is spread over (kPhaseCount * 2) threads\n    NVI i = i0;\n#if( kPhaseCount * 2 > NIS_THREAD_GROUP_SIZE )\n    for (; i < kPhaseCount * 2; i += NIS_THREAD_GROUP_SIZE)\n#else\n    if (i < kPhaseCount * 2)\n#endif\n    {\n        NVI phase = i >> 1;\n        NVI vIdx = i & 1;\n\n        NVH4 v = NVH4(NVTEX_LOAD(coef_scaler, NVI2(vIdx, phase)));\n        NVI filterOffset = vIdx * 4;\n        shCoefScaler[phase][filterOffset + 0] = v.x;\n        shCoefScaler[phase][filterOffset + 1] = v.y;\n        if (vIdx == 0)\n        {\n            shCoefScaler[phase][2] = v.z;\n            shCoefScaler[phase][3] = v.w;\n        }\n\n        v = NVH4(NVTEX_LOAD(coef_usm, NVI2(vIdx, phase)));\n        shCoefUSM[phase][filterOffset + 0] = v.x;\n        shCoefUSM[phase][filterOffset + 1] = v.y;\n        if (vIdx == 0)\n        {\n            shCoefUSM[phase][2] = v.z;\n            shCoefUSM[phase][3] = v.w;\n        }\n    }\n}\n\n\nNVF CalcLTI(NVF p0, NVF p1, NVF p2, NVF p3, NVF p4, NVF p5, NVI phase_index)\n{\n    const NVB selector = (phase_index <= kPhaseCount / 2);\n    NVF sel = selector ? p0 : p3;\n    const NVF a_min = min(min(p1, p2), sel);\n    const NVF a_max = max(max(p1, p2), sel);\n    sel = selector ? p2 : p5;\n    const NVF b_min = min(min(p3, p4), sel);\n    const NVF b_max = max(max(p3, p4), sel);\n\n    const NVF a_cont = a_max - a_min;\n    const NVF b_cont = b_max - b_min;\n\n    const NVF cont_ratio = max(a_cont, b_cont) / (min(a_cont, b_cont) + kEps);\n    return (1.0f - saturate((cont_ratio - kMinContrastRatio) * kRatioNorm)) * kContrastBoost;\n}\n\nNVF4 GetInterpEdgeMap(const NVF4 edge[2][2], NVF phase_frac_x, NVF phase_frac_y)\n{\n    NVF4 h0 = lerp(edge[0][0], edge[0][1], phase_frac_x);\n    NVF4 h1 = lerp(edge[1][0], edge[1][1], phase_frac_x);\n    return lerp(h0, h1, phase_frac_y);\n}\n\nNVF EvalPoly6(const NVF pxl[6], NVI phase_int)\n{\n    NVF y = 0.f;\n    {\n        NIS_UNROLL\n        for (NVI i = 0; i < 6; ++i)\n        {\n            y += shCoefScaler[phase_int][i] * pxl[i];\n        }\n    }\n    NVF y_usm = 0.f;\n    {\n        NIS_UNROLL\n        for (NVI i = 0; i < 6; ++i)\n        {\n            y_usm += shCoefUSM[phase_int][i] * pxl[i];\n        }\n    }\n\n    // let's compute a piece-wise ramp based on luma\n    const NVF y_scale = 1.0f - saturate((y * (1.0f / NIS_SCALE_FLOAT) - kSharpStartY) * kSharpScaleY);\n\n    // scale the ramp to sharpen as a function of luma\n    const NVF y_sharpness = y_scale * kSharpStrengthScale + kSharpStrengthMin;\n\n    y_usm *= y_sharpness;\n\n    // scale the ramp to limit USM as a function of luma\n    const NVF y_sharpness_limit = (y_scale * kSharpLimitScale + kSharpLimitMin) * y;\n\n    y_usm = min(y_sharpness_limit, max(-y_sharpness_limit, y_usm));\n    // reduce ringing\n    y_usm *= CalcLTI(pxl[0], pxl[1], pxl[2], pxl[3], pxl[4], pxl[5], phase_int);\n\n    return y + y_usm;\n}\n\nNVF FilterNormal(const NVF p[6][6], NVI phase_x_frac_int, NVI phase_y_frac_int)\n{\n    NVF h_acc = 0.0f;\n    NIS_UNROLL\n    for (NVI j = 0; j < 6; ++j)\n    {\n        NVF v_acc = 0.0f;\n        NIS_UNROLL\n        for (NVI i = 0; i < 6; ++i)\n        {\n            v_acc += p[i][j] * shCoefScaler[phase_y_frac_int][i];\n        }\n        h_acc += v_acc * shCoefScaler[phase_x_frac_int][j];\n    }\n\n    // let's return the sum unpacked -> we can accumulate it later\n    return h_acc;\n}\n\nNVF AddDirFilters(NVF p[6][6], NVF phase_x_frac, NVF phase_y_frac, NVI phase_x_frac_int, NVI phase_y_frac_int, NVF4 w)\n{\n    NVF f = 0;\n    if (w.x > 0.0f)\n    {\n        // 0 deg filter\n        NVF interp0Deg[6];\n        {\n            NIS_UNROLL\n                for (NVI i = 0; i < 6; ++i)\n                {\n                    interp0Deg[i] = lerp(p[i][2], p[i][3], phase_x_frac);\n                }\n        }\n        f += EvalPoly6(interp0Deg, phase_y_frac_int) * w.x;\n    }\n    if (w.y > 0.0f)\n    {\n        // 90 deg filter\n        NVF interp90Deg[6];\n        {\n            NIS_UNROLL\n                for (NVI i = 0; i < 6; ++i)\n                {\n                    interp90Deg[i] = lerp(p[2][i], p[3][i], phase_y_frac);\n                }\n        }\n\n        f += EvalPoly6(interp90Deg, phase_x_frac_int) * w.y;\n    }\n    if (w.z > 0.0f)\n    {\n        //45 deg filter\n        NVF pphase_b45 = 0.5f + 0.5f * (phase_x_frac - phase_y_frac);\n\n        NVF temp_interp45Deg[7];\n        temp_interp45Deg[1] = lerp(p[2][1], p[1][2], pphase_b45);\n        temp_interp45Deg[3] = lerp(p[3][2], p[2][3], pphase_b45);\n        temp_interp45Deg[5] = lerp(p[4][3], p[3][4], pphase_b45);\n        {\n            pphase_b45 = pphase_b45 - 0.5f;\n            NVF a = (pphase_b45 >= 0.f) ? p[0][2] : p[2][0];\n            NVF b = (pphase_b45 >= 0.f) ? p[1][3] : p[3][1];\n            NVF c = (pphase_b45 >= 0.f) ? p[2][4] : p[4][2];\n            NVF d = (pphase_b45 >= 0.f) ? p[3][5] : p[5][3];\n            temp_interp45Deg[0] = lerp(p[1][1], a, abs(pphase_b45));\n            temp_interp45Deg[2] = lerp(p[2][2], b, abs(pphase_b45));\n            temp_interp45Deg[4] = lerp(p[3][3], c, abs(pphase_b45));\n            temp_interp45Deg[6] = lerp(p[4][4], d, abs(pphase_b45));\n        }\n\n        NVF interp45Deg[6];\n        NVF pphase_p45 = phase_x_frac + phase_y_frac;\n        if (pphase_p45 >= 1)\n        {\n            NIS_UNROLL\n                for (NVI i = 0; i < 6; i++)\n                {\n                    interp45Deg[i] = temp_interp45Deg[i + 1];\n                }\n            pphase_p45 = pphase_p45 - 1;\n        }\n        else\n        {\n            NIS_UNROLL\n                for (NVI i = 0; i < 6; i++)\n                {\n                    interp45Deg[i] = temp_interp45Deg[i];\n                }\n        }\n\n        f += EvalPoly6(interp45Deg, NVI(pphase_p45 * 64)) * w.z;\n    }\n    if (w.w > 0.0f)\n    {\n        //135 deg filter\n        NVF pphase_b135 = 0.5f * (phase_x_frac + phase_y_frac);\n\n        NVF temp_interp135Deg[7];\n        temp_interp135Deg[1] = lerp(p[3][1], p[4][2], pphase_b135);\n        temp_interp135Deg[3] = lerp(p[2][2], p[3][3], pphase_b135);\n        temp_interp135Deg[5] = lerp(p[1][3], p[2][4], pphase_b135);\n        {\n            pphase_b135 = pphase_b135 - 0.5f;\n            NVF a = (pphase_b135 >= 0.f) ? p[5][2] : p[3][0];\n            NVF b = (pphase_b135 >= 0.f) ? p[4][3] : p[2][1];\n            NVF c = (pphase_b135 >= 0.f) ? p[3][4] : p[1][2];\n            NVF d = (pphase_b135 >= 0.f) ? p[2][5] : p[0][3];\n            temp_interp135Deg[0] = lerp(p[4][1], a, abs(pphase_b135));\n            temp_interp135Deg[2] = lerp(p[3][2], b, abs(pphase_b135));\n            temp_interp135Deg[4] = lerp(p[2][3], c, abs(pphase_b135));\n            temp_interp135Deg[6] = lerp(p[1][4], d, abs(pphase_b135));\n        }\n\n        NVF interp135Deg[6];\n        NVF pphase_p135 = 1 + (phase_x_frac - phase_y_frac);\n        if (pphase_p135 >= 1)\n        {\n            NIS_UNROLL\n                for (NVI i = 0; i < 6; ++i)\n                {\n                    interp135Deg[i] = temp_interp135Deg[i + 1];\n                }\n            pphase_p135 = pphase_p135 - 1;\n        }\n        else\n        {\n            NIS_UNROLL\n                for (NVI i = 0; i < 6; ++i)\n                {\n                    interp135Deg[i] = temp_interp135Deg[i];\n                }\n        }\n\n        f += EvalPoly6(interp135Deg, NVI(pphase_p135 * 64)) * w.w;\n    }\n    return f;\n}\n\n\n//-----------------------------------------------------------------------------------------------\n// NVScaler\n//-----------------------------------------------------------------------------------------------\nvoid NVScaler(NVU2 blockIdx, NVU threadIdx)\n{\n    // Figure out the range of pixels from input image that would be needed to be loaded for this thread-block\n    NVI dstBlockX = NVI(NIS_BLOCK_WIDTH * blockIdx.x);\n    NVI dstBlockY = NVI(NIS_BLOCK_HEIGHT * blockIdx.y);\n\n    const NVI srcBlockStartX = NVI(floor((dstBlockX + 0.5f) * kScaleX - 0.5f));\n    const NVI srcBlockStartY = NVI(floor((dstBlockY + 0.5f) * kScaleY - 0.5f));\n    const NVI srcBlockEndX = NVI(ceil((dstBlockX + NIS_BLOCK_WIDTH + 0.5f) * kScaleX - 0.5f));\n    const NVI srcBlockEndY = NVI(ceil((dstBlockY + NIS_BLOCK_HEIGHT + 0.5f) * kScaleY - 0.5f));\n\n    NVI numTilePixelsX = srcBlockEndX - srcBlockStartX + kSupportSize - 1;\n    NVI numTilePixelsY = srcBlockEndY - srcBlockStartY + kSupportSize - 1;\n\n    // round-up load region to even size since we're loading in 2x2 batches\n    numTilePixelsX += numTilePixelsX & 0x1;\n    numTilePixelsY += numTilePixelsY & 0x1;\n    const NVI numTilePixels = numTilePixelsX * numTilePixelsY;\n\n    // calculate the equivalent values for the edge map\n    const NVI numEdgeMapPixelsX = numTilePixelsX - kSupportSize + 2;\n    const NVI numEdgeMapPixelsY = numTilePixelsY - kSupportSize + 2;\n    const NVI numEdgeMapPixels = numEdgeMapPixelsX * numEdgeMapPixelsY;\n\n    // fill in input luma tile (shPixelsY) in batches of 2x2 pixels\n    // we use texture gather to get extra support necessary\n    // to compute 2x2 edge map outputs too\n    {\n        for (NVU i = threadIdx * 2; i < NVU(numTilePixels) >> 1; i += NIS_THREAD_GROUP_SIZE * 2)\n        {\n            NVU py = (i / numTilePixelsX) * 2;\n            NVU px = i % numTilePixelsX;\n\n            // 0.5 to be in the center of texel\n            // - (kSupportSize - 1) / 2 to shift by the kernel support size\n            NVF kShift = 0.5f - (kSupportSize - 1) / 2;\n#if NIS_VIEWPORT_SUPPORT\n            const NVF tx = (srcBlockStartX + px + kInputViewportOriginX + kShift) * kSrcNormX;\n            const NVF ty = (srcBlockStartY + py + kInputViewportOriginY + kShift) * kSrcNormY;\n#else\n            const NVF tx = (srcBlockStartX + px + kShift) * kSrcNormX;\n            const NVF ty = (srcBlockStartY + py + kShift) * kSrcNormY;\n#endif\n            NVF p[2][2];\n#if NIS_TEXTURE_GATHER\n            {\n                const NVF4 sr = NVTEX_SAMPLE_RED(in_texture, samplerLinearClamp, NVF2(tx, ty));\n                const NVF4 sg = NVTEX_SAMPLE_GREEN(in_texture, samplerLinearClamp, NVF2(tx, ty));\n                const NVF4 sb = NVTEX_SAMPLE_BLUE(in_texture, samplerLinearClamp, NVF2(tx, ty));\n\n                p[0][0] = getY(NVF3(sr.w, sg.w, sb.w));\n                p[0][1] = getY(NVF3(sr.z, sg.z, sb.z));\n                p[1][0] = getY(NVF3(sr.x, sg.x, sb.x));\n                p[1][1] = getY(NVF3(sr.y, sg.y, sb.y));\n            }\n#else\n            NIS_UNROLL_INNER\n            for (NVI j = 0; j < 2; j++)\n            {\n                NIS_UNROLL_INNER\n                for (NVI k = 0; k < 2; k++)\n                {\n#if NIS_NV12_SUPPORT\n                    p[j][k] = NVTEX_SAMPLE(in_texture_y, samplerLinearClamp, NVF2(tx + k * kSrcNormX, ty + j * kSrcNormY));\n#else\n                    const NVF4 px = NVTEX_SAMPLE(in_texture, samplerLinearClamp, NVF2(tx + k * kSrcNormX, ty + j * kSrcNormY));\n                    p[j][k] = getY(px.xyz);\n#endif\n                }\n            }\n#endif\n            const NVU idx = py * kTilePitch + px;\n            shPixelsY[idx] = NVH(p[0][0]);\n            shPixelsY[idx + 1] = NVH(p[0][1]);\n            shPixelsY[idx + kTilePitch] = NVH(p[1][0]);\n            shPixelsY[idx + kTilePitch + 1] = NVH(p[1][1]);\n        }\n    }\n    GroupMemoryBarrierWithGroupSync();\n    {\n        // fill in the edge map of 2x2 pixels\n        for (NVU i = threadIdx * 2; i < NVU(numEdgeMapPixels) >> 1; i += NIS_THREAD_GROUP_SIZE * 2)\n        {\n            NVU py = (i / numEdgeMapPixelsX) * 2;\n            NVU px = i % numEdgeMapPixelsX;\n\n            const NVU edgeMapIdx = py * kEdgeMapPitch + px;\n\n            NVU tileCornerIdx = (py + 1) * kTilePitch + px + 1;\n            NVF p[4][4];\n            NIS_UNROLL_INNER\n            for (NVI j = 0; j < 4; j++)\n            {\n                NIS_UNROLL_INNER\n                for (NVI k = 0; k < 4; k++)\n                {\n                    p[j][k] = shPixelsY[tileCornerIdx + j * kTilePitch + k];\n                }\n            }\n\n            shEdgeMap[edgeMapIdx] = NVH4(GetEdgeMap(p, 0, 0));\n            shEdgeMap[edgeMapIdx + 1] = NVH4(GetEdgeMap(p, 0, 1));\n            shEdgeMap[edgeMapIdx + kEdgeMapPitch] = NVH4(GetEdgeMap(p, 1, 0));\n            shEdgeMap[edgeMapIdx + kEdgeMapPitch + 1] = NVH4(GetEdgeMap(p, 1, 1));\n        }\n    }\n    LoadFilterBanksSh(NVI(threadIdx));\n    GroupMemoryBarrierWithGroupSync();\n\n    // output coord within a tile\n    const NVI2 pos = NVI2(NVU(threadIdx) % NVU(NIS_BLOCK_WIDTH), NVU(threadIdx) / NVU(NIS_BLOCK_WIDTH));\n    // x coord inside the output image\n    const NVI dstX = dstBlockX + pos.x;\n    // x coord inside the input image\n    const NVF srcX = (0.5f + dstX) * kScaleX - 0.5f;\n    // nearest integer part\n    const NVI px = NVI(floor(srcX) - srcBlockStartX);\n    // fractional part\n    const NVF fx = srcX - floor(srcX);\n    // discretized phase\n    const NVI fx_int = NVI(fx * kPhaseCount);\n#if NIS_VIEWPORT_SUPPORT\n    if (NVU(srcX) > kInputViewportWidth || NVU(dstX) > kOutputViewportWidth)\n    {\n        return;\n    }\n#endif\n    for (NVI k = 0; k < NIS_BLOCK_WIDTH * NIS_BLOCK_HEIGHT / NIS_THREAD_GROUP_SIZE; ++k)\n    {\n        // y coord inside the output image\n        const NVI dstY = dstBlockY + pos.y + k * (NIS_THREAD_GROUP_SIZE / NIS_BLOCK_WIDTH);\n        // y coord inside the input image\n        const NVF srcY = (0.5f + dstY) * kScaleY - 0.5f;\n#if NIS_VIEWPORT_SUPPORT\n        if (!(NVU(srcY) > kInputViewportHeight || NVU(dstY) > kOutputViewportHeight))\n#endif\n        {\n            // nearest integer part\n            const NVI py = NVI(floor(srcY) - srcBlockStartY);\n            // fractional part\n            const NVF fy = srcY - floor(srcY);\n            // discretized phase\n            const NVI fy_int = NVI(fy * kPhaseCount);\n\n            // generate weights for directional filters\n            const NVI startEdgeMapIdx = py * kEdgeMapPitch + px;\n            NVF4 edge[2][2];\n            NIS_UNROLL\n            for (NVI i = 0; i < 2; i++)\n            {\n                NIS_UNROLL\n                for (NVI j = 0; j < 2; j++)\n                {\n                    // need to shift edge map sampling since it's a 2x2 centered inside 6x6 grid\n                    edge[i][j] = shEdgeMap[startEdgeMapIdx + (i * kEdgeMapPitch) + j];\n                }\n            }\n            const NVF4 w = GetInterpEdgeMap(edge, fx, fy) * NIS_SCALE_INT;\n\n            // load 6x6 support to regs\n            const NVI startTileIdx = py * kTilePitch + px;\n            NVF p[6][6];\n            {\n                NIS_UNROLL\n                for (NVI i = 0; i < 6; ++i)\n                {\n                    NIS_UNROLL\n                    for (NVI j = 0; j < 6; ++j)\n                    {\n                        p[i][j] = shPixelsY[startTileIdx + i * kTilePitch + j];\n                    }\n                }\n            }\n\n            // weigth for luma\n            const NVF baseWeight = NIS_SCALE_FLOAT - w.x - w.y - w.z - w.w;\n\n            // final luma is a weighted product of directional & normal filters\n            NVF opY = 0;\n\n            // get traditional scaler filter output\n            opY += FilterNormal(p, fx_int, fy_int) * baseWeight;\n\n            // get directional filter bank output\n            opY += AddDirFilters(p, fx, fy, fx_int, fy_int, w);\n\n#if NIS_VIEWPORT_SUPPORT\n            NVF2 coord = NVF2((srcX + kInputViewportOriginX + 0.5f) * kSrcNormX, (srcY + kInputViewportOriginY + 0.5f) * kSrcNormY);\n            NVF2 dstCoord = NVF2(dstX + kOutputViewportOriginX, dstY + kOutputViewportOriginY);\n#else\n            NVF2 coord = NVF2((srcX + 0.5f) * kSrcNormX, (srcY + 0.5f) * kSrcNormY);\n            NVF2 dstCoord = NVF2(dstX, dstY);\n#endif\n            // do bilinear tap for chroma upscaling\n#if NIS_NV12_SUPPORT\n            NVF y = NVTEX_SAMPLE(in_texture_y, samplerLinearClamp, coord);\n            NVF2 uv = NVTEX_SAMPLE(in_texture_uv, samplerLinearClamp, coord);\n            NVF4 op = NVF4(YUVtoRGB(NVF3(y, uv)), 1.0f);\n#else\n            NVF4 op = NVTEX_SAMPLE(in_texture, samplerLinearClamp, coord);\n            NVF y = getY(NVF3(op.x, op.y, op.z));\n#endif\n\n#if NIS_HDR_MODE == NIS_HDR_MODE_LINEAR\n            const NVF kEps = 1e-4f;\n            const NVF kNorm = 1.0f / (NIS_SCALE_FLOAT * kHDRCompressionFactor);\n            const NVF opYN = max(opY, 0.0f) * kNorm;\n            const NVF corr = (opYN * opYN + kEps) / (max(getYLinear(NVF3(op.x, op.y, op.z)), 0.0f) + kEps);\n            op.x *= corr;\n            op.y *= corr;\n            op.z *= corr;\n#else\n            const NVF corr = opY * (1.0f / NIS_SCALE_FLOAT) - y;\n            op.x += corr;\n            op.y += corr;\n            op.z += corr;\n#endif\n            NVTEX_STORE(out_texture, dstCoord, MF4(NVCLAMP(op)));\n\t\t}\n    }\n}\n#else\n\n#ifndef NIS_BLOCK_WIDTH\n#define NIS_BLOCK_WIDTH 32\n#endif\n#ifndef NIS_BLOCK_HEIGHT\n#define NIS_BLOCK_HEIGHT 32\n#endif\n#ifndef NIS_THREAD_GROUP_SIZE\n#define NIS_THREAD_GROUP_SIZE 256\n#endif\n\n#define kSupportSize 5\n#define kNumPixelsX  (NIS_BLOCK_WIDTH + kSupportSize + 1)\n#define kNumPixelsY  (NIS_BLOCK_HEIGHT + kSupportSize + 1)\n\nNVSHARED NVF shPixelsY[kNumPixelsY][kNumPixelsX];\n\nNVF CalcLTIFast(const NVF y[5])\n{\n    const NVF a_min = min(min(y[0], y[1]), y[2]);\n    const NVF a_max = max(max(y[0], y[1]), y[2]);\n\n    const NVF b_min = min(min(y[2], y[3]), y[4]);\n    const NVF b_max = max(max(y[2], y[3]), y[4]);\n\n    const NVF a_cont = a_max - a_min;\n    const NVF b_cont = b_max - b_min;\n\n    const NVF cont_ratio = max(a_cont, b_cont) / (min(a_cont, b_cont) + kEps);\n    return (1.0f - saturate((cont_ratio - kMinContrastRatio) * kRatioNorm)) * kContrastBoost;\n}\n\nNVF EvalUSM(const NVF pxl[5], const NVF sharpnessStrength, const NVF sharpnessLimit)\n{\n    // USM profile\n    NVF y_usm = -0.6001f * pxl[1] + 1.2002f * pxl[2] - 0.6001f * pxl[3];\n    // boost USM profile\n    y_usm *= sharpnessStrength;\n    // clamp to the limit\n    y_usm = min(sharpnessLimit, max(-sharpnessLimit, y_usm));\n    // reduce ringing\n    y_usm *= CalcLTIFast(pxl);\n\n    return y_usm;\n}\n\nNVF4 GetDirUSM(const NVF p[5][5])\n{\n    // sharpness boost & limit are the same for all directions\n    const NVF scaleY = 1.0f - saturate((p[2][2] - kSharpStartY) * kSharpScaleY);\n    // scale the ramp to sharpen as a function of luma\n    const NVF sharpnessStrength = scaleY * kSharpStrengthScale + kSharpStrengthMin;\n    // scale the ramp to limit USM as a function of luma\n    const NVF sharpnessLimit = (scaleY * kSharpLimitScale + kSharpLimitMin) * p[2][2];\n\n    NVF4 rval;\n    // 0 deg filter\n    NVF interp0Deg[5];\n    {\n        for (NVI i = 0; i < 5; ++i)\n        {\n            interp0Deg[i] = p[i][2];\n        }\n    }\n\n    rval.x = EvalUSM(interp0Deg, sharpnessStrength, sharpnessLimit);\n\n    // 90 deg filter\n    NVF interp90Deg[5];\n    {\n        for (NVI i = 0; i < 5; ++i)\n        {\n            interp90Deg[i] = p[2][i];\n        }\n    }\n\n    rval.y = EvalUSM(interp90Deg, sharpnessStrength, sharpnessLimit);\n\n    //45 deg filter\n    NVF interp45Deg[5];\n    interp45Deg[0] = p[1][1];\n    interp45Deg[1] = lerp(p[2][1], p[1][2], 0.5f);\n    interp45Deg[2] = p[2][2];\n    interp45Deg[3] = lerp(p[3][2], p[2][3], 0.5f);\n    interp45Deg[4] = p[3][3];\n\n    rval.z = EvalUSM(interp45Deg, sharpnessStrength, sharpnessLimit);\n\n    //135 deg filter\n    NVF interp135Deg[5];\n    interp135Deg[0] = p[3][1];\n    interp135Deg[1] = lerp(p[3][2], p[2][1], 0.5f);\n    interp135Deg[2] = p[2][2];\n    interp135Deg[3] = lerp(p[2][3], p[1][2], 0.5f);\n    interp135Deg[4] = p[1][3];\n\n    rval.w = EvalUSM(interp135Deg, sharpnessStrength, sharpnessLimit);\n    return rval;\n}\n\n//-----------------------------------------------------------------------------------------------\n// NVSharpen\n//-----------------------------------------------------------------------------------------------\nvoid NVSharpen(NVU2 blockIdx, NVU threadIdx)\n{\n    const NVI dstBlockX = NVI(NIS_BLOCK_WIDTH * blockIdx.x);\n    const NVI dstBlockY = NVI(NIS_BLOCK_HEIGHT * blockIdx.y);\n\n    // fill in input luma tile in batches of 2x2 pixels\n    // we use texture gather to get extra support necessary\n    // to compute 2x2 edge map outputs too\n    const NVF kShift = 0.5f - kSupportSize / 2;\n\n    for (NVI i = NVI(threadIdx) * 2; i < kNumPixelsX * kNumPixelsY / 2; i += NIS_THREAD_GROUP_SIZE * 2)\n    {\n        NVU2 pos = NVU2(NVU(i) % NVU(kNumPixelsX), NVU(i) / NVU(kNumPixelsX) * 2);\n        NIS_UNROLL\n        for (NVI dy = 0; dy < 2; dy++)\n        {\n            NIS_UNROLL\n            for (NVI dx = 0; dx < 2; dx++)\n            {\n#if NIS_VIEWPORT_SUPPORT\n                const NVF tx = (dstBlockX + pos.x + kInputViewportOriginX + dx + kShift) * kSrcNormX;\n                const NVF ty = (dstBlockY + pos.y + kInputViewportOriginY + dy + kShift) * kSrcNormY;\n#else\n                const NVF tx = (dstBlockX + pos.x + dx + kShift) * kSrcNormX;\n                const NVF ty = (dstBlockY + pos.y + dy + kShift) * kSrcNormY;\n#endif\n#if NIS_NV12_SUPPORT\n                shPixelsY[pos.y + dy][pos.x + dx] = NVTEX_SAMPLE(in_texture_y, samplerLinearClamp, NVF2(tx, ty));\n#else\n                const NVF4 px = NVTEX_SAMPLE(in_texture, samplerLinearClamp, NVF2(tx, ty));\n                shPixelsY[pos.y + dy][pos.x + dx] = getY(px.xyz);\n#endif\n            }\n        }\n    }\n\n    GroupMemoryBarrierWithGroupSync();\n\n    for (NVI k = NVI(threadIdx); k < NIS_BLOCK_WIDTH * NIS_BLOCK_HEIGHT; k += NIS_THREAD_GROUP_SIZE)\n    {\n        const NVI2 pos = NVI2(NVU(k) % NVU(NIS_BLOCK_WIDTH), NVU(k) / NVU(NIS_BLOCK_WIDTH));\n\n        // load 5x5 support to regs\n        NVF p[5][5];\n        NIS_UNROLL\n        for (NVI i = 0; i < 5; ++i)\n        {\n            NIS_UNROLL\n            for (NVI j = 0; j < 5; ++j)\n            {\n                p[i][j] = shPixelsY[pos.y + i][pos.x + j];\n            }\n        }\n\n        // get directional filter bank output\n        NVF4 dirUSM = GetDirUSM(p);\n\n        // generate weights for directional filters\n        NVF4 w = GetEdgeMap(p, kSupportSize / 2 - 1, kSupportSize / 2 - 1);\n\n        // final USM is a weighted sum filter outputs\n        const NVF usmY = (dirUSM.x * w.x + dirUSM.y * w.y + dirUSM.z * w.z + dirUSM.w * w.w);\n\n        // do bilinear tap and correct rgb texel so it produces new sharpened luma\n        const NVI dstX = dstBlockX + pos.x;\n        const NVI dstY = dstBlockY + pos.y;\n\n#if NIS_VIEWPORT_SUPPORT\n        NVF2 coord = NVF2((dstX + kInputViewportOriginX + 0.5f) * kSrcNormX, (dstY + kInputViewportOriginY + 0.5f) * kSrcNormY);\n        NVF2 dstCoord = NVF2(dstX + kOutputViewportOriginX, dstY + kOutputViewportOriginY);\n        if (!(NVU(dstX) > kOutputViewportWidth || NVU(dstY) > kOutputViewportHeight))\n#else\n        NVF2 coord = NVF2((dstX + 0.5f) * kSrcNormX, (dstY + 0.5f) * kSrcNormY);\n        NVF2 dstCoord = NVF2(dstX, dstY);\n#endif\n        {\n#if NIS_NV12_SUPPORT\n            NVF y = NVTEX_SAMPLE(in_texture_y, samplerLinearClamp, coord);\n            NVF2 uv = NVTEX_SAMPLE(in_texture_uv, samplerLinearClamp, coord);\n            NVF4 op = NVF4(YUVtoRGB(NVF3(y, uv)), 1.0f);\n#else\n            NVF4 op = NVTEX_SAMPLE(in_texture, samplerLinearClamp, coord);\n#endif\n#if NIS_HDR_MODE == NIS_HDR_MODE_LINEAR\n            const NVF kEps = 1e-4f * kHDRCompressionFactor * kHDRCompressionFactor;\n            NVF newY = p[2][2] + usmY;\n            newY = max(newY, 0.0f);\n            const NVF oldY = p[2][2];\n            const NVF corr = (newY * newY + kEps) / (oldY * oldY + kEps);\n            op.x *= corr;\n            op.y *= corr;\n            op.z *= corr;\n#else\n            op.x += usmY;\n            op.y += usmY;\n            op.z += usmY;\n#endif\n            NVTEX_STORE(out_texture, dstCoord, (MF4)NVCLAMP(op));\n        }\n    }\n}\n#endif"
  },
  {
    "path": "src/Effects/NIS/NVSharpen.hlsl",
    "content": "// 移植自 https://github.com/NVIDIAGameWorks/NVIDIAImageScaling/blob/main/NIS/NIS_Scaler.h\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!CAPABILITY FP16\n\n#include \"../StubDefs.hlsli\"\n\n//!PARAMETER\n//!LABEL Sharpness\n//!DEFAULT 0.5\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat sharpness;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState samplerLinearClamp;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 32, 32\n//!NUM_THREADS 256\n\n#ifdef MP_DEBUG\n#pragma warning(disable: 4000)\t// X4000: use of potentially uninitialized variable (GetEdgeMap)\n#pragma warning(disable: 4714)\t// X4714: sum of temp registers and indexable temp registers times 256 threads exceeds the recommended total 16384.  Performance may be reduced\n#endif\n\n#define NIS_SCALER 0\n#define NIS_HLSL 1\n\n#ifdef MP_FP16\n#define NIS_USE_HALF_PRECISION 1\n#else\n#define NIS_USE_HALF_PRECISION 0\n#endif\n\nstatic const float kDetectRatio = 2.0f * 1127.f / 1024.f;\nstatic const float kDetectThres = 64.0f / 1024.0f;\nstatic const float kEps = 1.0f / 255.0f;\nstatic const float kMinContrastRatio = 2.0f;\nstatic const float kMaxContrastRatio = 10.0f;\nstatic const float kRatioNorm = 1.0f / (kMaxContrastRatio - kMinContrastRatio);\nstatic const float kContrastBoost = 1.0f;\nstatic const float kSharpStartY = 0.45f;\nstatic const float kSharpEndY = 0.9f;\nstatic const float kSharpScaleY = 1.0f / (kSharpEndY - kSharpStartY);\nstatic const float sharpen_slider = sharpness - 0.5f;\nstatic const float MinScale = (sharpen_slider >= 0.0f) ? 1.25f : 1.0f;\nstatic const float MaxScale = (sharpen_slider >= 0.0f) ? 1.25f : 1.75f;\nstatic const float kSharpStrengthMin = max(0.0f, 0.4f + sharpen_slider * MinScale * 1.2f);\nstatic const float kSharpStrengthMax = 1.6f + sharpen_slider * MaxScale * 1.8f;\nstatic const float kSharpStrengthScale = kSharpStrengthMax - kSharpStrengthMin;\nstatic const float LimitScale = (sharpen_slider >= 0.0f) ? 1.25f : 1.0f;\nstatic const float kSharpLimitMin = max(0.1f, 0.14f + sharpen_slider * LimitScale * 0.32f);\nstatic const float kSharpLimitMax = 0.5f + sharpen_slider * LimitScale * 0.6f;\nstatic const float kSharpLimitScale = kSharpLimitMax - kSharpLimitMin;\n\n#define NIS_BLOCK_WIDTH MP_BLOCK_WIDTH\n#define NIS_BLOCK_HEIGHT MP_BLOCK_HEIGHT\n#define NIS_THREAD_GROUP_SIZE MP_NUM_THREADS_X\n\n#define in_texture INPUT\n#define out_texture OUTPUT\n\nstatic const float kSrcNormX = GetInputPt().x;\nstatic const float kSrcNormY = GetInputPt().y;\n\n#include \"NIS_Scaler.hlsli\"\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tNVSharpen(blockStart / uint2(MP_BLOCK_WIDTH, MP_BLOCK_HEIGHT), threadId.x);\n}\n"
  },
  {
    "path": "src/Effects/NNEDI3/NNEDI3_nns128_win8x4.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: nnedi3.py --nns 128 --win 8x4 --use-compute-shader --use-magpie\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME NNEDI3_128_4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 1 * 2\n//!HEIGHT INPUT_HEIGHT * 2 * 1\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH * 1\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D temp;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_temp;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC NNEDI3 (double_y, nns128, win8x4)\n//!IN INPUT\n//!OUT temp\n//!BLOCK_SIZE 32, 16\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[8]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 8; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 32.0;\n\tfloat mstd1 = sumsq / 32.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, -1106336704, -1104338237, 1041734649, -1112016931)\n\t\t + W(1, -1134422686, -1108550970, -1135080854, -1117701445)\n\t\t + W(2, -1097058997, 1036063029, 1053379177, -1099451832)\n\t\t + W(3, -1096794255, 1068454954, 1068510503, -1092648385)\n\t\t + W(4, -1096428577, 1045547931, -1114733521, -1101312270)\n\t\t + W(5, -1108910446, -1102009308, -1146436468, -1118387353)\n\t\t + W(6, -1110459731, -1122481515, -1107441476, -1118789516)\n\t\t + W(7, -1101174078, 1017740065, -1113618698, -1107281979);\n\tsum2 = W(0, -1107960738, 1034572820, -1105088633, -1147785184)\n\t\t + W(1, 1022891960, 1003346080, -1103397515, 1035529310)\n\t\t + W(2, -1112828174, -1096749055, 1056062200, -1105585021)\n\t\t + W(3, -1099542471, 1067566060, -1127174872, 1034766166)\n\t\t + W(4, 1028527356, -1090311143, 1048792675, -1117109292)\n\t\t + W(5, -1124169384, 1028295012, -1106700271, -1116900804)\n\t\t + W(6, 1003609248, -1101382023, 1033154740, -1121486356)\n\t\t + W(7, 1019646072, -1102277943, 1037356874, -1114899026);\n\tWS(-1075683047, -1087125913);\n\tsum1 = W(0, 1042687663, 1052977914, -1087267578, 1041384601) + W(1, 1034752002, 1046022844, -1097639380, 1034807969)\n\t\t + W(2, 1020877136, 1051043629, -1087388173, 1037740431) + W(3, 1043598702, 1049374510, -1095656786, 1044538321)\n\t\t + W(4, 1032834596, 1044576234, -1108370107, -1113942663)\n\t\t + W(5, 1049059763, -1108783446, -1101488315, 1043415765)\n\t\t + W(6, 1041786741, -1105784362, -1111228387, 1011031587)\n\t\t + W(7, 1050972591, -1089957133, -1108747496, 1034104676);\n\tsum2 = W(0, -1129327146, -1112916736, -1109246006, -1168639863)\n\t\t + W(1, -1149557934, -1120018795, 1012425107, -1122303521)\n\t\t + W(2, 1027469999, -1105442406, 1044505132, -1114911422)\n\t\t + W(3, -1116270499, 1056936993, 1054092693, -1109477794)\n\t\t + W(4, -1107094547, 1036431709, 1015080154, -1122292075)\n\t\t + W(5, -1114668504, 1029410453, -1102188513, 1038663029)\n\t\t + W(6, -1136313139, -1126491682, -1123974759, -1124857486)\n\t\t + W(7, -1115408970, -1112281372, -1115235380, 1004657207);\n\tWS(1042212664, -1102203684);\n\tsum1 = W(0, -1140902818, 1040147851, 1035472140, -1111794429)\n\t\t + W(1, 1019874102, -1104962202, 1045102086, 1033944684)\n\t\t + W(2, -1138465404, -1102798136, 1044852023, -1122108180)\n\t\t + W(3, 1041713132, -1085739950, 1052255697, 1042129278) + W(4, 1031911135, -1090423514, 1050093153, 1026181805)\n\t\t + W(5, 1032244040, -1096835716, -1114874577, 1045351411)\n\t\t + W(6, -1122713961, 1015091005, -1125530488, 1045226448)\n\t\t + W(7, 1032066151, -1100137137, 1025859399, 1037723887);\n\tsum2 = W(0, 1025219442, -1109152196, 1026944460, -1136900198)\n\t\t + W(1, -1119436548, -1122141349, 1040314652, -1112897189)\n\t\t + W(2, 1041363772, 1032935700, -1124096755, -1144192892)\n\t\t + W(3, 1026037858, -1095545125, -1132954458, 1046665648)\n\t\t + W(4, -1106963956, 1029288712, 1063106013, -1112667488)\n\t\t + W(5, -1148187164, 1048235476, 1044093468, -1091150222)\n\t\t + W(6, -1115265228, 1017807431, -1119277141, -1098670428)\n\t\t + W(7, 1027834104, -1124373883, -1115291573, -1099776205);\n\tWS(-1106435384, 1038338229);\n\tsum1 = W(0, 1040095954, 1057302312, -1085504617, 1038469973) + W(1, 1019822615, 1048464174, -1109673285, 1008999077)\n\t\t + W(2, 1037825128, 1048602738, -1088007186, 1047759857) + W(3, 1041126536, 1046177110, -1089584127, 1042217259)\n\t\t + W(4, 1042659628, -1113571175, -1112427435, -1122205838)\n\t\t + W(5, 1046281616, 1010729037, -1099904421, 1042535855) + W(6, 1025627498, -1116720143, 985851280, 1020820192)\n\t\t + W(7, 1052688116, -1090676327, -1109333660, 1034203799);\n\tsum2 = W(0, 1016257202, 1059204215, 1078138204, 1045786159) + W(1, 1025056091, 1059357388, 1057901024, -1115583727)\n\t\t + W(2, -1123344133, -1096239491, -1075026282, 1040463834)\n\t\t + W(3, -1117490597, -1080318626, -1073900782, 1043123901)\n\t\t + W(4, -1139226916, -1097775023, 1041808545, 1021989454)\n\t\t + W(5, -1121712633, -1121076469, 1040778731, -1105966927)\n\t\t + W(6, 1032149092, -1108589001, 1040543247, 1015040126)\n\t\t + W(7, 1018740994, 1042934709, 1013253724, -1147555881);\n\tWS(-1079558823, -1098708322);\n\tsum1 = W(0, -1107155318, -1102044491, -1157836704, 1018716763)\n\t\t + W(1, 1025234303, -1098872409, 1050456336, 1032647774) + W(2, 1015859078, -1087610848, 1055919296, 1043448582)\n\t\t + W(3, 1036194249, -1086405173, 1051086989, 1041211303) + W(4, -1109510417, 1049149960, 1049231261, 1032229161)\n\t\t + W(5, -1106597869, -1113006787, 1047976577, -1113988824)\n\t\t + W(6, -1106784003, 1034815041, 1037659280, -1114873522)\n\t\t + W(7, -1107821257, -1109243348, 1045770027, -1115826050);\n\tsum2 = W(0, -1115121954, 1038073794, -1128914993, -1116577465)\n\t\t + W(1, 1012713185, -1114116718, 1041575276, -1124395325)\n\t\t + W(2, -1120959275, 1048906430, 1074552079, 1055266270) + W(3, 979525395, -1089285214, -1076455267, 1060162115)\n\t\t + W(4, 1031308048, 1044939824, -1081125046, -1098098687) + W(5, 1023425822, 960279117, -1109266711, 1021768571)\n\t\t + W(6, 1008898041, -1114246838, 1028966618, -1124862202)\n\t\t + W(7, 1015643115, -1116674868, -1116558128, 1013382601);\n\tWS(1045132600, -1120782135);\n\tsum1 = W(0, -1105751784, 1057393815, -1105555137, -1117651397)\n\t\t + W(1, -1105178898, 1048859946, -1097544977, 1030868229)\n\t\t + W(2, -1104184899, 1059464001, -1093321826, -1113548192)\n\t\t + W(3, -1114219853, 1046945589, -1096850414, -1114482291)\n\t\t + W(4, -1110381909, -1115358437, 1045680426, -1100710867)\n\t\t + W(5, 1038688878, -1101266388, 1054674458, -1101910270)\n\t\t + W(6, -1129240105, 1006928425, 1040711722, -1109195062)\n\t\t + W(7, 1028338913, 1001553277, 1051440502, -1106616547);\n\tsum2 =\n\t\tW(0, 1017265392, 1041015042, -1100279165, 1015388608) + W(1, -1109811903, 1031690548, -1110095441, -1118750728)\n\t\t+ W(2, 1023756444, 1041543835, -1121800962, 1018680528) + W(3, -1113627340, 1061785433, 1052269299, -1143924414)\n\t\t+ W(4, 1014378799, -1112539854, 1027655784, -1099334823)\n\t\t+ W(5, -1145950526, 1033767962, -1103181542, 1020584168)\n\t\t+ W(6, -1129429444, -1111764061, -1110834939, -1108053853)\n\t\t+ W(7, 1013677319, -1098545742, -1106577514, 1036964648);\n\tWS(1052573852, -1122511817);\n\tsum1 =\n\t\tW(0, -1122539822, -1107197216, -1123108403, 1051517474) + W(1, 1036520122, -1104137920, 1038549849, 1023654291)\n\t\t+ W(2, -1150669710, -1095755763, 1032946604, 1039184399)\n\t\t+ W(3, -1131456914, -1089160552, 1050538028, 1041388597)\n\t\t+ W(4, 1027717464, -1090293588, 1052989852, -1168884669) + W(5, 1032118773, -1090056564, 1057974832, 1033029075)\n\t\t+ W(6, 1021054902, -1092174087, 1053464075, 1028526105) + W(7, 1030809195, -1086001910, 1057808582, 1041880934);\n\tsum2 = W(0, -1085894681, -1108201039, 1070882268, -1081052443)\n\t\t + W(1, 1038192816, -1090848333, -1093216289, -1102549623)\n\t\t + W(2, -1098445483, 1052221636, 1067999858, -1087793608)\n\t\t + W(3, -1102898046, 1071505414, 1073865984, -1090403840)\n\t\t + W(4, 1008806191, -1098981857, 1058878464, -1095780376)\n\t\t + W(5, 1050638036, -1086351349, -1083525828, 1055133376)\n\t\t + W(6, -1102617523, -1096799400, -1107159037, -1096503933)\n\t\t + W(7, 1057325981, -1088620184, -1083206959, 1053790412);\n\tWS(-1073219892, -1080326418);\n\tsum1 = W(0, -1114077580, -1101602915, 1057495924, -1151047116)\n\t\t + W(1, -1142635506, -1103425331, 1053716920, -1114784094)\n\t\t + W(2, -1142955026, -1090278522, 1055741332, -1111276924)\n\t\t + W(3, -1123237842, -1092662145, 1051447237, -1121668701)\n\t\t + W(4, 1038107057, -1091646784, 1052494629, 1000704387)\n\t\t + W(5, -1103324917, -1114692451, 1049044089, -1109204280)\n\t\t + W(6, 1026598572, -1101848592, 1043005848, 1010568075)\n\t\t + W(7, -1095875035, 1038718196, 1047828379, -1156952092);\n\tsum2 =\n\t\tW(0, -1121663397, -1095443331, -1067370736, 1005231721) + W(1, -1116542136, 1050195534, -1071776975, 974104521)\n\t\t+ W(2, 1042431779, -1123573301, 1068672794, -1111985184) + W(3, 1037730633, -1100504352, 1077012119, 1047585075)\n\t\t+ W(4, 1010053773, 1043186658, 1070664889, 1016528922) + W(5, -1137348615, -1102861372, 1045361006, -1109020232)\n\t\t+ W(6, 1028087910, -1110454800, -1123945395, 1037668055)\n\t\t+ W(7, -1119025600, 1040229501, 1027642294, -1117277443);\n\tWS(-1130027456, 1047744266);\n\tsum1 =\n\t\tW(0, 1030328637, -1103440100, 1050534604, -1130350917) + W(1, -1100312969, 1043447132, 1038395889, -1105733872)\n\t\t+ W(2, 1036569044, -1096543805, 1037345619, 1043114871) + W(3, 1044449278, -1093151398, -1106526388, 1022399622)\n\t\t+ W(4, -1106699970, 1024264999, -1115006287, 1020228332) + W(5, 1046212150, -1115860524, 1035372917, 1024836117)\n\t\t+ W(6, -1104762293, 1041344218, 980910400, -1123108872)\n\t\t+ W(7, -1124975021, 1032410566, 1044066628, -1112803412);\n\tsum2 =\n\t\tW(0, 1029880722, 1033391383, -1137819024, -1114516031) + W(1, -1098453144, 1041649400, -1137377888, 1025620716)\n\t\t+ W(2, 1029103498, -1095624145, 1040796761, 1035240799) + W(3, 1067660000, -1082091368, -1080643124, 1066795978)\n\t\t+ W(4, -1094604015, 1056223691, -1102259819, -1098376459)\n\t\t+ W(5, 1046293202, 1027973488, -1121978412, 1036814117)\n\t\t+ W(6, -1104816365, 1034193475, -1148596400, -1107858514)\n\t\t+ W(7, -1117927817, 1034286113, 1041009105, -1114981924);\n\tWS(1049012636, 1037011386);\n\tsum1 = W(0, -1108102978, -1097922903, 1049818257, 1041216474)\n\t\t + W(1, 1042768739, -1089977373, 1052134241, -1106782690)\n\t\t + W(2, 1036457352, -1083790961, 1059747641, -1120768141) + W(3, -1105146600, 1050515995, 1062551839, 975424142)\n\t\t + W(4, -1100621772, 1053649082, -1088576433, 1042971413)\n\t\t + W(5, -1100160944, 1044221701, -1093385002, 1047421135)\n\t\t + W(6, -1149100234, 1020595485, -1108848982, -1142399358)\n\t\t + W(7, -1116535239, -1110188826, -1147628986, 1034144007);\n\tsum2 = W(0, -1130376652, -1109271051, -1098570547, 1029552052)\n\t\t + W(1, -1109307779, 1040605589, -1097221185, -1097745138)\n\t\t + W(2, 998991648, -1117670218, -1087670872, -1101762859)\n\t\t + W(3, -1105231849, 1068278024, 1068017963, -1100990121)\n\t\t + W(4, -1124853008, -1099193318, -1103240593, -1094879980)\n\t\t + W(5, -1110904873, 1035466738, 1049832589, -1119653306)\n\t\t + W(6, 1033926100, -1111928806, 1018913792, -1099498770)\n\t\t + W(7, 1012787248, 1025845624, 1035573068, 1046656503);\n\tWS(-1099128120, 1074104605);\n\tsum1 =\n\t\tW(0, 1001695642, 1031876531, -1106225286, 1039516460) + W(1, -1114738061, 1036082771, -1127447088, 1037331996)\n\t\t+ W(2, -1137881464, 1049670772, -1114090766, 1048871226) + W(3, 1035838167, 1045634202, -1084335000, 1024672505)\n\t\t+ W(4, 1036976671, 1039176783, -1092101927, -1111706306) + W(5, 1043227732, 1044499416, -1106295064, 1040216275)\n\t\t+ W(6, 1024532056, -1115296143, -1108352670, 1018355325)\n\t\t+ W(7, 1041576607, 1036111714, -1103209586, -1129216251);\n\tsum2 =\n\t\tW(0, -1125983803, 1057121124, -1097673861, -1097055530) + W(1, 1026289226, 1048908439, -1081617292, -1105528539)\n\t\t+ W(2, 1003361806, 1042597022, -1083990029, -1094090339) + W(3, 1036989304, -1101738899, 1066557847, 1060807350)\n\t\t+ W(4, -1121376018, -1101518001, 1050089807, 1045798092)\n\t\t+ W(5, -1127516251, -1114490175, 1021212715, 1007168711) + W(6, 999276462, 1032222895, -1107462587, 1021142275)\n\t\t+ W(7, 1020382491, -1111061815, 1048167829, 1024157832);\n\tWS(1043392312, -1114334171);\n\tsum1 =\n\t\tW(0, 1041086874, 1046571639, -1101297859, -1108043111) + W(1, 1027676176, 1051603231, -1100311555, 1031499310)\n\t\t+ W(2, 1029494548, -1114765098, -1090719068, -1123479337)\n\t\t+ W(3, 1038182418, 1063881062, -1092551191, 1047470620) + W(4, 1033375641, 1036439434, -1093343060, 1029157954)\n\t\t+ W(5, 1014428948, 1039261900, -1095549099, -1113522785) + W(6, 1016176348, 1049353410, -1102133676, 1032866554)\n\t\t+ W(7, 1036956537, 1039119196, -1097401399, -1108903402);\n\tsum2 = W(0, 1032922039, -1110774431, 1024080221, -1111786600) + W(1, 1034144522, 1041464609, 1024001520, 1038622987)\n\t\t + W(2, 1035186417, -1089347840, -1102975683, -1098326560)\n\t\t + W(3, -1106146153, 1063858171, 1062496232, -1094555153)\n\t\t + W(4, 995983013, -1103182741, -1104694448, -1110476474)\n\t\t + W(5, 1014708981, -1105498679, 1034761930, -1107944280)\n\t\t + W(6, -1118508182, 1046443094, -1113235807, 1045574278)\n\t\t + W(7, -1122673776, -1107403517, -1126790312, -1119406695);\n\tWS(1055141020, 1060902337);\n\tsum1 =\n\t\tW(0, 1034435725, 1057965143, -1123568702, -1104499136) + W(1, -1133288704, 1052483105, -1121795134, 1006999415)\n\t\t+ W(2, 1026181508, 1052696320, -1094115828, -1153162900)\n\t\t+ W(3, 1033934442, -1122504460, -1084201687, 1029709087) + W(4, 1030709219, 1052884304, -1093347107, 1036285529)\n\t\t+ W(5, -1118188821, 1049027177, -1096042081, -1155692311)\n\t\t+ W(6, 1027652318, 1046782257, -1098441692, 1013713298)\n\t\t+ W(7, 1035419593, 1045790650, -1101051195, -1111952258);\n\tsum2 = W(0, 1043194323, -1070666261, -1098866335, -1101126135)\n\t\t + W(1, 1017945729, -1075189642, -1106608294, 1010301074) + W(2, 992756489, 1068575013, 1051129947, -1107911121)\n\t\t + W(3, -1117717167, 1076566585, 1049134123, 1046700061) + W(4, 1023440269, 1056539999, 1047751107, 1020103457)\n\t\t + W(5, -1108161809, -1098049115, -1097073139, 1026363561)\n\t\t + W(6, 1034607052, 1036076910, 1011007330, 1035420194)\n\t\t + W(7, -1115924363, -1112346970, 1016205049, -1137869730);\n\tWS(-1090579868, 1070279725);\n\tsum1 = W(0, 1032329895, 1048430680, -1101560157, -1129281319)\n\t\t + W(1, -1102328821, 1050349544, -1091335294, 1012204235)\n\t\t + W(2, -1113203900, 1052980239, 1039656780, 1033674783)\n\t\t + W(3, -1098061089, 1057014372, -1084573078, -1115372202)\n\t\t + W(4, -1105344998, 1057962188, -1103450436, -1108117804)\n\t\t + W(5, 1034205973, 1038273502, 1043587871, -1111454739)\n\t\t + W(6, -1106552005, 1046276062, -1098888483, -1115265901)\n\t\t + W(7, 1041435478, 1049777060, 1002064136, -1109943484);\n\tsum2 = W(0, 987673807, 1027892228, -1103141235, 1005138532) + W(1, 1036995374, -1102736131, 1049007178, 1028221332)\n\t\t + W(2, -1095509641, 1034852634, -1090760003, -1123669832)\n\t\t + W(3, -1094252408, 1059241808, 1060311666, -1128511149)\n\t\t + W(4, -1119095571, -1103859919, -1129798465, 1032914452)\n\t\t + W(5, -1103179232, 1043446486, -1100012675, 1006285508)\n\t\t + W(6, 1040985329, -1109795439, 1051746582, -1122773902)\n\t\t + W(7, -1114181285, 1004807604, -1113144024, 987177167);\n\tWS(1058381774, -1086956646);\n\tsum1 =\n\t\tW(0, 1005434106, -1096145742, 1046241393, 1026532260) + W(1, -1149835360, -1100460324, 1039571170, -1120107684)\n\t\t+ W(2, 1034370117, -1096424577, 1054608457, -1107524072)\n\t\t+ W(3, 1036055789, 1033532617, -1110152984, -1123297125) + W(4, 1007595428, 1049990129, -1100950084, 1032832748)\n\t\t+ W(5, -1173712576, 1042033667, -1103984787, 1041584782)\n\t\t+ W(6, -1122685332, -1147483724, -1122634471, -1111048693)\n\t\t+ W(7, -1119060568, 1021597150, 1016207588, 1023439817);\n\tsum2 = W(0, 1073050559, 1049113865, 1048373410, -1123382260) + W(1, 1069067455, 1035642194, -1101089925, 1035361564)\n\t\t + W(2, -1096535796, -1105600932, 1050248373, -1105239942)\n\t\t + W(3, -1073893027, -1114871718, -1113393188, 1000972215)\n\t\t + W(4, -1077684470, -1104998692, 1015693919, -1112223483) + W(5, 1038335059, 1034875990, 1032989733, 987872957)\n\t\t + W(6, 994568047, 1004288083, 1024635942, 1016564448) + W(7, -1109196141, 1019116562, 1041247426, 1019016937);\n\tWS(1051792028, 1027146209);\n\tsum1 =\n\t\tW(0, -1173418992, -1096555104, 1048715847, 1037767898) + W(1, 1031492470, -1099279313, 1043543405, 1032372106)\n\t\t+ W(2, 1030866682, -1102472206, 1045948678, 1031937048) + W(3, -1111745573, -1086728512, 1048944276, 1030986133)\n\t\t+ W(4, 1037975597, -1098029143, 1053562136, 1035090980) + W(5, 1032231158, -1099704976, 1041023999, 1038793940)\n\t\t+ W(6, 1021051177, -1107704157, 1031959404, 1031982829) + W(7, 1029296729, -1088435526, 1046674105, 1043937550);\n\tsum2 =\n\t\tW(0, 1076285256, -1071495861, -1089164092, 1024798548) + W(1, 1067013205, -1080654015, 1044446905, -1130255717)\n\t\t+ W(2, 1054912747, -1092768710, -1089831336, -1111620633)\n\t\t+ W(3, -1103468782, 1053690657, 1049463752, -1129289568)\n\t\t+ W(4, -1082179927, 1062196550, -1116071286, 1022374674)\n\t\t+ W(5, -1086354611, 1059230433, 1055604285, -1147177200)\n\t\t+ W(6, -1086555076, 1065208788, -1102169042, 1008723412) + W(7, -1077304359, 1069826015, 1049830695, 990531682);\n\tWS(-1116843232, 1041538044);\n\tsum1 =\n\t\tW(0, 1038718416, 1050813118, -1091780513, -1107356403) + W(1, 1041393778, 1048646402, -1107072481, 1032833522)\n\t\t+ W(2, 1023355030, 1043671731, -1097953353, -1126022145)\n\t\t+ W(3, 1040958951, 1037057641, -1088265503, -1185162751) + W(4, 1040537034, 1050123337, -1105750724, 1038008293)\n\t\t+ W(5, -1112360254, 1052799074, -1091053114, -1123581176)\n\t\t+ W(6, 1043346413, 1037436293, -1121572392, 1033129910)\n\t\t+ W(7, 1047211822, 1042212684, -1091261766, -1116284746);\n\tsum2 =\n\t\tW(0, -1127892588, -1090048491, -1076486023, 1071993665) + W(1, 1025248710, -1124324076, -1080184847, 1067215194)\n\t\t+ W(2, -1127740272, -1092974499, -1080442855, 1068762214)\n\t\t+ W(3, -1114879615, 1047668544, 1048567939, 1014309155) + W(4, -1125515678, 1042122418, 1066323214, -1079656754)\n\t\t+ W(5, -1135605467, 1052455522, 1068938556, -1077318729)\n\t\t+ W(6, 1015277154, -1102075660, 1066205534, -1083078137)\n\t\t+ W(7, -1118452308, 1052515578, 1058048535, -1086246531);\n\tWS(1045082936, 1047750074);\n\tsum1 = W(0, 1017867382, 1038967959, -1107005280, -1117189504)\n\t\t + W(1, -1105827232, 1036533543, -1101431328, 1000061951)\n\t\t + W(2, -1139557912, 1048524561, 1044741561, 1034808454)\n\t\t + W(3, -1098507795, 1057427781, -1099209723, -1102176472)\n\t\t + W(4, -1112138258, 1057555836, -1103886606, -1102736460)\n\t\t + W(5, -1113781499, 1044700722, -1117912777, -1102956733)\n\t\t + W(6, -1117154624, 1037485187, -1108908881, -1113728179)\n\t\t + W(7, 1024003356, 1046059755, 1024367918, -1108156515);\n\tsum2 = W(0, 1003184961, 1024857236, -1114215978, 1037587704) + W(1, 971431442, -1109323954, 1030818718, -1121823736)\n\t\t + W(2, -1131894760, 1026446282, 1031262679, 1045339410)\n\t\t + W(3, -1133283297, -1105665514, 1056963612, -1107079097)\n\t\t + W(4, 984723076, -1116186208, 1055283667, -1090072253) + W(5, 1031831407, 1024492508, 975724297, -1102678968)\n\t\t + W(6, -1125590160, -1121629964, -1116339968, -1103014356)\n\t\t + W(7, 1031681833, -1148808497, 1026784592, -1123463096);\n\tWS(1059869006, 1015916977);\n\tsum1 =\n\t\tW(0, -1111801867, -1103727218, 1051877295, -1115491581) + W(1, 1039164638, -1102716146, 1051739903, -1106752078)\n\t\t+ W(2, 1023424768, -1089648586, 1057614174, -1104830517)\n\t\t+ W(3, -1118862224, -1092420393, 1055627629, -1112797325)\n\t\t+ W(4, -1114194639, 1049092536, -1096079006, 1038662167) + W(5, -1099094340, 1052180160, 1008315659, 1030088557)\n\t\t+ W(6, -1118811114, 1032231232, -1121275805, -1131680577)\n\t\t+ W(7, -1096321008, 1046058153, 1039975892, -1175801754);\n\tsum2 =\n\t\tW(0, -1113427160, -1090644207, 1034414883, 1038986783)\n\t\t+ W(1, -1104433368, -1091764889, -1120815960, -1135559136)\n\t\t+ W(2, -1104169884, -1109333336, 995253792, 1033390214) + W(3, -1117600576, 1065407690, 1059846520, -1120264784)\n\t\t+ W(4, -1102319880, -1098732665, 1048874179, -1104270640)\n\t\t+ W(5, 1039627671, -1109931470, 1008884504, 1019376128) + W(6, -1097619580, 1043714297, 1021072320, -1111461786)\n\t\t+ W(7, 1047721667, 1041133481, -1103318888, -1142244432);\n\tWS(1054131356, -1077482588);\n\tsum1 = W(0, -1100136045, -1101215881, 1045307006, 1047064142)\n\t\t + W(1, 989703980, -1100083265, 1039854844, -1120855287)\n\t\t + W(2, -1114161471, -1091699940, 1051542530, 1042850313)\n\t\t + W(3, -1117800461, -1088812180, 1056393300, -1122501592)\n\t\t + W(4, 1013262449, -1095974704, 1053327664, -1118254671)\n\t\t + W(5, -1112319975, 1033042241, 1059113280, -1111473941)\n\t\t + W(6, 1027862775, -1095224480, 1049428707, -1119385054)\n\t\t + W(7, -1103330903, -1102789769, 1055440053, -1109190398);\n\tsum2 = W(0, -1098032416, 1063396296, 1043414797, -1093635160) + W(1, 1055692800, 1024719031, 1032661901, 1049215120)\n\t\t + W(2, -1101668743, 1065491656, 1058961916, -1090478816)\n\t\t + W(3, -1100435053, 1073645059, 1063424749, 1050905898)\n\t\t + W(4, -1089098280, 1060161647, -1096580753, -1135528507)\n\t\t + W(5, -1094416925, -1074198531, -1098776178, 1042380471)\n\t\t + W(6, -1099202751, -1081296593, -1115458644, 1032695397)\n\t\t + W(7, -1104551065, -1083400329, -1092624053, 1054277265);\n\tWS(-1082679118, -1072338335);\n\tsum1 =\n\t\tW(0, -1126832308, -1092407662, 1041636256, 1032452512) + W(1, 998650886, -1099976035, 1035459839, -1118647007)\n\t\t+ W(2, 1029713605, -1098757312, 1053507448, -1113994637) + W(3, 1045660229, 1049242330, -1097348797, 1019901759)\n\t\t+ W(4, -1125245511, 1052609817, -1097111418, 1026546307) + W(5, 1001090478, 1049104969, -1099322690, 1041545965)\n\t\t+ W(6, -1126242526, 958956607, -1116731426, -1113342195)\n\t\t+ W(7, -1128346278, -1170516592, 1009511091, 1027607012);\n\tsum2 = W(0, -1069228184, -1099529380, -1112044089, -1144476451)\n\t\t + W(1, -1073602631, 1043301860, 1041147606, -1112019052)\n\t\t + W(2, 1021776922, 1054858487, -1119872164, 1036271953) + W(3, 1076866983, 1044685536, -1106846135, 1018899191)\n\t\t + W(4, 1069809281, 1062109344, 1042271976, -1114284680)\n\t\t + W(5, -1101499289, -1097491140, 1035368326, -1126672913)\n\t\t + W(6, 1013617559, -1149319294, 1025827813, -1112053703)\n\t\t + W(7, 1036050969, -1113127688, -1115137330, -1146921887);\n\tWS(-1125906880, 1029353026);\n\tsum1 =\n\t\tW(0, 1052620124, -1082830235, 1044570800, 1033131793) + W(1, 1040928385, -1087911853, 1048894344, 1031982257)\n\t\t+ W(2, 1053619569, -1088553290, 1054767249, -1118254573) + W(3, 1034478636, -1115166792, 1052323270, 1037418321)\n\t\t+ W(4, -1149501032, -1104403058, -1096342700, 1045103465)\n\t\t+ W(5, 1027228408, 1046902211, -1092690897, 1053685367) + W(6, 1033816441, -1140598044, -1112660402, 1032758420)\n\t\t+ W(7, -1143379631, -1115398454, -1089842615, 1056771243);\n\tsum2 = W(0, 1052242091, -1123374674, -1088438592, -1109756837)\n\t\t + W(1, -1105901664, 1032004261, -1109896025, -1117902306)\n\t\t + W(2, 1041713460, 1057464262, -1106721416, -1106560728)\n\t\t + W(3, -1098081544, 1055897675, 1057898227, -1101499608)\n\t\t + W(4, -1101414896, -1108453649, 1044097375, -1114554169)\n\t\t + W(5, -1140318759, -1099401944, 1041656473, 1042131382)\n\t\t + W(6, -1123485994, 1039811869, 1042751001, -1104786072)\n\t\t + W(7, -1108472633, -1092934450, 1033994653, 1048148308);\n\tWS(-1080878567, 1068324028);\n\tsum1 = W(0, -1115471279, -1095139206, 1057833304, 1032811018)\n\t\t + W(1, 1019310859, -1103458412, 1049561152, -1118469827)\n\t\t + W(2, -1121098697, -1090917913, 1058273109, -1107876783)\n\t\t + W(3, -1115193805, -1094785898, 1054221326, -1109399058)\n\t\t + W(4, -1153442440, -1100131090, 1050583410, -1121957752)\n\t\t + W(5, -1104713039, -1118370765, 1048985266, -1109945243)\n\t\t + W(6, 1023975060, -1102569730, 1041261354, -1125987028)\n\t\t + W(7, -1094675607, 1044057356, 1045920684, -1144681671);\n\tsum2 = W(0, -1122597644, 1052263517, 1084267296, 1037076324) + W(1, 1032420914, -1132353885, 1077171750, 1017945885)\n\t\t + W(2, -1109997244, -1113437764, -1076080701, 1045994672)\n\t\t + W(3, 1029919127, -1086124512, -1066836895, -1105598049)\n\t\t + W(4, -1129031901, -1134522929, -1073829589, -1115453382)\n\t\t + W(5, 1025876905, -1137529969, -1128728545, 1027437378)\n\t\t + W(6, -1121404056, 1041285329, -1128683125, -1112127416)\n\t\t + W(7, 1025649559, -1111439550, -1109934248, 1032857588);\n\tWS(-1106960696, -1099012034);\n\tsum1 = W(0, -1114528403, -1099071342, 1055554285, -1109121109)\n\t\t + W(1, -1119077260, -1099370430, 1049964157, -1115766890)\n\t\t + W(2, -1143558020, -1089278443, 1061104081, -1114965299)\n\t\t + W(3, -1119877760, -1086538844, 1056629915, -1120868875)\n\t\t + W(4, -1109244232, 1010994112, 1049997315, 1034547527)\n\t\t + W(5, -1096650748, 1041376829, 1042073805, -1114495407)\n\t\t + W(6, -1112604445, 1042854492, 1031563405, -1139584324)\n\t\t + W(7, -1100402892, 1049345155, -1123516568, -1118254096);\n\tsum2 = W(0, -1116593925, 1027806287, 1032648371, 1024756439)\n\t\t + W(1, 1028908115, -1136470458, 1006654490, -1116529299) + W(2, 999050165, 1039840949, 1052059722, -1107372324)\n\t\t + W(3, 1037914955, -1122048333, 1057985079, -1128153177)\n\t\t + W(4, -1106109711, 1057135276, -1090440242, -1142966917)\n\t\t + W(5, -1105957739, -1105275062, -1131926605, -1123338691)\n\t\t + W(6, -1123834115, -1096566133, 1018741845, 1013415162)\n\t\t + W(7, -1113783754, -1105721601, -1124260101, 1018182189);\n\tWS(-1103089976, 1059868827);\n\tsum1 = W(0, 1026631887, -1091300264, 1056895190, 1031003956)\n\t\t + W(1, 1033737723, -1096562704, 1050565142, -1140469197)\n\t\t + W(2, 1034000797, -1087537316, 1059766350, -1108911023)\n\t\t + W(3, -1130496915, -1094386976, 1053939124, 1032926090)\n\t\t + W(4, -1106694966, 1044429902, -1108577640, -1120892680)\n\t\t + W(5, -1105866475, 1045093007, -1109922270, 1034482579)\n\t\t + W(6, -1106727101, 1040636078, -1122075862, -1136817768)\n\t\t + W(7, -1098705919, 1044615672, -1100982776, 1045052014);\n\tsum2 =\n\t\tW(0, -1114832682, 1044376552, 1052671036, -1084839384) + W(1, 1038307608, -1101986459, -1094811671, -1076225566)\n\t\t+ W(2, -1109268272, 1025272345, -1106762472, -1074779618)\n\t\t+ W(3, 1031259614, -1112738770, 1052706603, -1088390497) + W(4, -1136199018, 1014008179, 1040752903, 1066038403)\n\t\t+ W(5, -1118450441, 1042085570, -1100877636, 1071357616) + W(6, 1025376385, -1110075404, 1051973899, 1068318141)\n\t\t+ W(7, -1125957173, 1027010884, 1036345951, 1050587817);\n\tWS(-1089897038, 998399462);\n\tsum1 = W(0, -1100326508, -1114312802, 1049930251, -1141222070)\n\t\t + W(1, -1099771006, -1109889234, 1047140918, -1114407115)\n\t\t + W(2, -1103969415, -1092992143, 1060325312, -1106384368)\n\t\t + W(3, 1030998252, -1098209637, 1062808044, 1017922927)\n\t\t + W(4, -1111096702, -1116385180, -1128865717, 1023432554)\n\t\t + W(5, -1129527451, -1096464604, 1048691588, -1125954964)\n\t\t + W(6, -1115021151, -1111889198, -1137813989, -1121716413)\n\t\t + W(7, -1124899748, -1109224641, 1043572929, 1020452535);\n\tsum2 =\n\t\tW(0, -1094975511, -1113696880, 1023473326, 1029862812) + W(1, -1089233591, 1032844980, 1036803698, -1117299445)\n\t\t+ W(2, -1089977002, 1066397244, -1129026618, 1025970568) + W(3, 1033778332, 1037917830, -1104280508, 1031377784)\n\t\t+ W(4, 1006981461, 1039504138, 1024702770, -1122944997) + W(5, -1137053176, 1032622380, -1121975322, 1022461928)\n\t\t+ W(6, -1125132764, 1021506052, 974010432, -1130740686) + W(7, 979684320, -1119563165, -1138205260, 1024270227);\n\tWS(-1096120220, -1099720911);\n\tsum1 = W(0, 1052677544, -1105594052, -1101878153, 990296621) + W(1, 1027883172, 1050583742, -1120505890, 1026529890)\n\t\t + W(2, 1046184634, 1030711656, -1094174707, 1039246623) + W(3, 1036941212, 1050761182, -1087347673, 1031039363)\n\t\t + W(4, 1037786724, 1044997418, -1091299260, 1038193547) + W(5, 1039372749, 1051859318, -1092171165, 1036921611)\n\t\t + W(6, 992842790, 1041579690, -1105854769, -1115076484)\n\t\t + W(7, 1040590154, 1052858474, -1087724293, 1007468831);\n\tsum2 =\n\t\tW(0, 1040381409, 1023777345, -1110031849, 1022623295) + W(1, -1131846701, -1095435966, -1146822820, -1096899181)\n\t\t+ W(2, 1030695069, -1111411494, -1089001391, 1049343346)\n\t\t+ W(3, 1015259161, -1085163747, -1074171332, -1107180310)\n\t\t+ W(4, 1026868853, -1100600319, -1078760233, 1043071461) + W(5, -1164136976, 1052695808, 1048168469, 1020495459)\n\t\t+ W(6, -1121164685, 1041440525, 1074132102, 1017314953) + W(7, -1109936403, 1051545155, 1072577306, 1050115198);\n\tWS(-1080112807, -1111145054);\n\tsum1 = W(0, -1103297132, 1049824404, -1133975251, 1026400021)\n\t\t + W(1, -1106341774, 1049617192, -1122989109, 1042898005)\n\t\t + W(2, -1098278655, 1059552348, -1086286580, 1041608840)\n\t\t + W(3, 1024154699, 1031972225, -1137351813, -1145221295)\n\t\t + W(4, 1037514093, -1085661228, 1056970252, -1102084285) + W(5, 1034961350, -1097823136, 992708574, 1041904442)\n\t\t + W(6, -1125780682, -1114326813, 1021582000, 1038246926)\n\t\t + W(7, -1109009483, -1119831648, 1040424089, 1042525799);\n\tsum2 =\n\t\tW(0, 1041258750, 989910477, -1134607603, -1109794979) + W(1, -1109734283, -1100922013, 1016064722, 1041809078)\n\t\t+ W(2, -1123542769, -1096844113, 1041392492, -1126381362) + W(3, -1113561957, 1051742866, 1057819912, 982123162)\n\t\t+ W(4, -1110564237, -1100235579, 1047439582, -1119465765)\n\t\t+ W(5, 1026811493, -1105813951, -1113868277, 1026735929)\n\t\t+ W(6, -1130694514, -1151284621, -1118083589, 1019553626)\n\t\t+ W(7, 1024057869, -1136706867, -1114600003, -1114678252);\n\tWS(1043409720, -1105036943);\n\tsum1 =\n\t\tW(0, 1040191749, -1096303173, -1115184605, 1041655059) + W(1, 1033970558, -1095924673, 1041748910, 1041917006)\n\t\t+ W(2, 1042494496, -1093807736, 1044442592, -1160531625) + W(3, 1046767380, -1092831585, 1042876074, 1039311757)\n\t\t+ W(4, 972615552, -1096756208, -1140612185, 1020654492) + W(5, 1032778168, -1126846855, 1018241414, 1043700571)\n\t\t+ W(6, 1032217109, -1115229280, 1027878365, 1034107952) + W(7, 1032356247, -1098580285, 1034858676, 1036396440);\n\tsum2 = W(0, 1027808259, -1139047739, 986751832, -1095774205) + W(1, 1010119787, 1043340308, 1026247831, -1093511024)\n\t\t + W(2, -1111510504, -1106790738, 1065364148, -1089533357)\n\t\t + W(3, -1113418759, -1096910874, 1040723354, 1053173071)\n\t\t + W(4, 1032132185, 1040059331, 1038861011, -1106558855)\n\t\t + W(5, -1121052855, -1115460243, -1113647147, 1027584935)\n\t\t + W(6, 1014515195, 1017581734, 1041604470, -1121443175)\n\t\t + W(7, 1010692603, -1120741339, -1135975307, 1014681515);\n\tWS(1035857520, 1029952289);\n\tsum1 =\n\t\tW(0, -1143077795, 1037051011, -1110400621, -1121149466) + W(1, -1105351783, 1029971495, -1106469910, 1043652126)\n\t\t+ W(2, -1113811952, 1049064844, -1094483622, 1027875988) + W(3, -1106526780, 1035603988, 1058276716, 1035104701)\n\t\t+ W(4, 1035289215, -1083894414, 1056346487, -1114346217) + W(5, 999420801, -1098557596, 1050633420, -1123554317)\n\t\t+ W(6, -1129002434, -1111645039, 1042325343, -1130799743)\n\t\t+ W(7, -1113970285, -1130790920, 1026109447, 1025377311);\n\tsum2 = W(0, -1118517607, 1026484093, 1039465846, 1008581907)\n\t\t + W(1, -1101077931, 1046485772, 1030900361, -1114630284)\n\t\t + W(2, 1029148161, -1098019518, 1048118782, -1106945018)\n\t\t + W(3, -1087996420, 1071267691, 1064954318, -1097625455)\n\t\t + W(4, 1047526016, -1082674625, -1084489705, -1156379726)\n\t\t + W(5, -1108756119, 1032470282, -1118487613, 1024110641)\n\t\t + W(6, 1038718292, -1106613565, -1112021711, 1020048570)\n\t\t + W(7, 1024464693, -1113199029, -1120012731, 1036291722);\n\tWS(1058189134, 1034857672);\n\tsum1 =\n\t\tW(0, -1171748679, 1031241360, -1100969760, 987174985) + W(1, -1105475825, 1044072484, -1094075536, 1045893176)\n\t\t+ W(2, -1097172873, 1057114388, -1082247827, 1042860595) + W(3, -1108837708, 1051374554, 1060030327, 1031954257)\n\t\t+ W(4, 1038034707, -1083662360, 1058651386, -1120638978)\n\t\t+ W(5, -1131134898, -1099379283, 1046921459, -1137288661)\n\t\t+ W(6, -1113151849, -1121036423, 1041721673, 1037681908)\n\t\t+ W(7, -1119273967, 1018101850, 1036514264, 1029972391);\n\tsum2 =\n\t\tW(0, 1003810984, 1020569783, -1128982694, 1043745048) + W(1, 1036204547, -1114489126, -1099380876, -1104004872)\n\t\t+ W(2, -1101998989, -1121260135, -1101918458, -1104165612)\n\t\t+ W(3, 1041029203, 1052640914, 1059611184, -1121067579) + W(4, -1098215637, 1059150102, 1040381797, -1100369008)\n\t\t+ W(5, 1044393168, -1098121773, -1094102036, 1032515174)\n\t\t+ W(6, -1110527635, 1037147118, 1028175839, -1114899975)\n\t\t+ W(7, 1027560485, -1110248773, -1113935142, 1000033398);\n\tWS(-1107450480, 1040804833);\n\tsum1 = W(0, 1040192716, 1040473489, -1095196747, -1124855402)\n\t\t + W(1, 1022226221, 1047969017, -1098407451, 1020416041)\n\t\t + W(2, 1002013395, 1044185574, -1087290490, -1160070647)\n\t\t + W(3, -1117682794, 1060667554, -1089168888, 1045737613)\n\t\t + W(4, 1001040843, 1057909434, -1111951852, -1101676720)\n\t\t + W(5, 1000424795, 1049088596, -1119291421, -1103624738)\n\t\t + W(6, -1120982404, 1038016429, 1031577591, -1104451167)\n\t\t + W(7, 1025306833, 1042416864, -1112956481, -1115902938);\n\tsum2 = W(0, 1014727333, -1124633329, 1026257754, -1111611661)\n\t\t + W(1, -1117243126, -1107065949, -1111801245, -1136702760)\n\t\t + W(2, 1029406572, 1041729284, -1084100906, -1103677442)\n\t\t + W(3, 1027900147, -1094200388, 1052541581, 1050798725)\n\t\t + W(4, -1112527674, -1104959017, 1070744988, -1105828213)\n\t\t + W(5, -1114664521, 1040214496, -1111707080, -1111536822)\n\t\t + W(6, -1111634336, 1005029260, -1127513012, -1106506739)\n\t\t + W(7, -1107116047, 1049039902, -1107038609, -1140667375);\n\tWS(-1113867888, 1064515135);\n\tsum1 = W(0, -1113562537, 1048061265, 1011269086, -1105945126)\n\t\t + W(1, -1107046062, 1043460993, -1098944190, -1148623547)\n\t\t + W(2, -1103978495, 1060048584, -1107431310, -1111558073)\n\t\t + W(3, -1098739202, 1062873548, 1045822761, -1114838028)\n\t\t + W(4, -1122423580, -1119786749, 1025265092, -1101841139)\n\t\t + W(5, 1019693149, 1023528257, -1112998912, -1117915947)\n\t\t + W(6, -1116789880, -1106657727, -1142662356, -1106868487)\n\t\t + W(7, 1020558520, -1137576074, -1104660585, -1122252061);\n\tsum2 = W(0, -1145158406, 1022878354, -1111624996, 1010204019)\n\t\t + W(1, 1012385731, -1129472106, 1015658802, -1123973089)\n\t\t + W(2, 1016118130, 1044961455, 1040055751, -1157676569) + W(3, 1024197601, 1049544336, 1057430996, 1022031298)\n\t\t + W(4, -1112179804, 1030346877, -1114498280, -1124728962)\n\t\t + W(5, -1119519161, -1131221354, 1020564842, 1023003938)\n\t\t + W(6, -1127326042, -1095482557, -1112131584, -1121117277)\n\t\t + W(7, -1113792718, -1093377057, 1019749938, -1141925830);\n\tWS(1051333020, -1087054195);\n\tsum1 =\n\t\tW(0, -1112042433, -1104387605, 1052246829, -1113527444) + W(1, 1019002067, -1096771599, 1048899277, -1098301717)\n\t\t+ W(2, -1115058903, -1102529947, 1054136106, -1095193948)\n\t\t+ W(3, 1046618143, -1093976551, 1044227957, 1044013586)\n\t\t+ W(4, -1107874438, -1089735051, 1060328029, -1107288943)\n\t\t+ W(5, -1148774132, -1129150690, 1046377228, 1038700845) + W(6, 1036768028, -1101876091, 1045160291, 1024370318)\n\t\t+ W(7, -1154881470, -1098135714, 1045432325, 1019966234);\n\tsum2 =\n\t\tW(0, -1114066012, 1041392892, 1044719218, -1097547793) + W(1, 1029900262, -1112610934, 1046575198, -1095644935)\n\t\t+ W(2, -1114806697, 1041587346, 1050162797, -1102972970)\n\t\t+ W(3, -1110038644, 1025557898, 1055420600, -1095936036) + W(4, 1036646832, 1055783298, -1099287148, 1028020818)\n\t\t+ W(5, -1110070018, -1102485451, -1100701871, -1113902766)\n\t\t+ W(6, 1020625547, 988088600, 1033323822, -1135974783) + W(7, 987867800, 1039502616, -1119304428, 1018696751);\n\tWS(-1120103648, -1090070191);\n\tsum1 =\n\t\tW(0, -1117418940, 1049030490, -1112262737, -1114427969) + W(1, 1024592611, 1050801054, -1094705236, 1032013281)\n\t\t+ W(2, 1040968250, -1111205267, 1042055990, -1110419822)\n\t\t+ W(3, 1049918615, -1116228463, -1085341341, 1047944497)\n\t\t+ W(4, 1034410595, 1050512309, -1106227665, -1132367051) + W(5, 1035134604, -1102511675, 1036298997, 1025392341)\n\t\t+ W(6, -1119948353, 1034763283, -1138448657, -1111046724)\n\t\t+ W(7, -1144523437, 1039656998, -1110564136, -1120201127);\n\tsum2 =\n\t\tW(0, -1122606938, 1046354401, -1124762815, -1118515993) + W(1, -1141997982, 1040228902, -1102583710, 1036845124)\n\t\t+ W(2, 1027805544, -1143835982, 1052785838, -1106443071) + W(3, -1120462650, 1061896257, 1059397472, 1043676745)\n\t\t+ W(4, -1100560083, -1080731069, -1120768779, 995709275)\n\t\t+ W(5, -1105726471, -1098049024, -1126645315, -1128858827)\n\t\t+ W(6, 1025575588, 1026943708, 1011421951, -1112152255)\n\t\t+ W(7, -1113668318, 1032253740, -1122685018, -1127110207);\n\tWS(1060158670, 1068766623);\n\tsum1 =\n\t\tW(0, -1116432453, 1056712636, -1087151539, 1040295867) + W(1, -1131098839, 1049784895, -1102593034, 1033948341)\n\t\t+ W(2, -1099753724, 1057908127, -1089291740, 1031077093) + W(3, 1034945056, 1044163070, -1094800699, 1027113355)\n\t\t+ W(4, -1122123599, 1028198895, 1036808107, -1132674679)\n\t\t+ W(5, 1040823512, -1122504371, -1120242995, -1117547229)\n\t\t+ W(6, 1040184285, -1123329903, -1127465369, 1040274980)\n\t\t+ W(7, 1050332416, -1096645803, -1132187055, -1137741501);\n\tsum2 =\n\t\tW(0, 1036379663, -1098232449, -1128107780, -1120677803) + W(1, -1108907739, 1058983203, 1035811659, -1120240179)\n\t\t+ W(2, 1070189048, 1016986873, 1040144345, 1029686139) + W(3, 1073213180, 1047923452, -1105399966, -1109097268)\n\t\t+ W(4, 1065321765, 1033582270, -1110681209, 1041308319) + W(5, -1076673488, 1031365639, 1039880527, -1109042515)\n\t\t+ W(6, -1079893128, 1038048757, -1116001167, 1034493417)\n\t\t+ W(7, -1072585926, -1107019906, 1018297481, -1131123922);\n\tWS(-1112459888, 1031046963);\n\tsum1 = W(0, -1112719265, -1128634346, 1043326546, -1115081924)\n\t\t + W(1, -1129483154, -1120462421, -1103778738, -1114915140)\n\t\t + W(2, -1103727283, -1112785958, 1050524372, -1104237825)\n\t\t + W(3, -1091575740, 1056781779, 1067939282, -1096588493)\n\t\t + W(4, -1104335643, -1153409228, 1048587330, -1108534894)\n\t\t + W(5, -1155155940, -1108013960, -1132710977, -1114726045)\n\t\t + W(6, -1114094348, -1118230989, -1109505653, 991235804)\n\t\t + W(7, -1105426861, 1027667442, 1036777787, -1111746006);\n\tsum2 =\n\t\tW(0, -1119086167, 1037241732, -1114652243, -1131518324) + W(1, 1013020612, -1129818230, 1028260797, -1115730540)\n\t\t+ W(2, -1141008560, 1029187991, -1112264831, 1036245214)\n\t\t+ W(3, -1108719150, -1074141953, 1072760747, 1034705438) + W(4, 1023891147, 1019083994, 1042535682, -1119172530)\n\t\t+ W(5, -1145112744, -1124211508, -1131878972, -1133917220)\n\t\t+ W(6, 1018251990, -1122886966, 1037493286, -1114007324)\n\t\t+ W(7, -1116478859, 1027168441, -1129254230, 1018465006);\n\tWS(-1086783566, -1086791567);\n\tsum1 = W(0, -1115195632, -1095708330, -1123676804, 1041725033)\n\t\t + W(1, -1153026662, -1093442522, 1018199561, -1121101892)\n\t\t + W(2, -1134496297, -1098161001, 1037878573, 1034570216)\n\t\t + W(3, -1108787789, 1044632085, 1064261167, -1103584185)\n\t\t + W(4, -1119803561, -1091375169, 1057417647, -1108866704)\n\t\t + W(5, -1145121243, -1107384199, 1052226946, -1122033784)\n\t\t + W(6, -1131708777, -1100078210, 1046948682, -1117964907)\n\t\t + W(7, -1110064394, -1104664012, 1047330733, 1022321300);\n\tsum2 = W(0, 1031515378, -1077397139, -1134939312, -1112896962)\n\t\t + W(1, -1121810184, -1079753374, -1097085111, 1035985281)\n\t\t + W(2, 1010081392, 1044674665, 1052841311, -1105060263) + W(3, -1119765868, 1073378801, 1007836336, 1031953140)\n\t\t + W(4, 1035546479, 1056367001, 1044809025, 1022446080)\n\t\t + W(5, -1106495935, -1109376902, -1118570548, 1031289566) + W(6, 1028378344, 1035615024, 992033726, 1032016077)\n\t\t + W(7, 1003402623, -1118889676, 1010750288, -1150317246);\n\tWS(-1096711324, -1080143969);\n\tsum1 = W(0, -1135181951, -1095339398, 1050582337, 1026786373)\n\t\t + W(1, 1025399430, -1094144146, 1049483953, -1123204644)\n\t\t + W(2, 1033906501, -1093853897, 1045129706, 1006467326) + W(3, 1041786535, -1089314149, 1046728732, 1031608549)\n\t\t + W(4, -1133559462, -1089126233, 1045641984, -1135165794)\n\t\t + W(5, 1003671004, -1110956839, 1051092970, 1017185520) + W(6, -1123695637, -1129083412, 1049638101, 996324016)\n\t\t + W(7, -1105366874, -1113909272, 1057307443, 1009923752);\n\tsum2 =\n\t\tW(0, 1023911567, -1108118447, 1044892126, -1112738860) + W(1, 1004932796, -1134375038, -1138359022, 1020475455)\n\t\t+ W(2, -1119124867, 1035251904, 1063133445, -1102926770) + W(3, 1022775023, 1037995724, 1074655410, 1047698054)\n\t\t+ W(4, 1011639102, 1050162042, 1070062472, -1113839430) + W(5, 1036397588, 1037707684, -1083132698, -1117927031)\n\t\t+ W(6, 999444348, -1111062570, -1073510095, 1017195567)\n\t\t+ W(7, -1106309084, -1101285996, -1073687480, 1041743674);\n\tWS(-1089880270, 1068594400);\n\tsum1 =\n\t\tW(0, -1114467040, -1104513741, 1050219169, -1118490053) + W(1, 1023170830, -1091458130, 1042545281, -1120682309)\n\t\t+ W(2, 1036273894, 1034367029, 1048674674, 1031296832) + W(3, -1107800974, -1100997781, 1042739212, -1110241363)\n\t\t+ W(4, 1029867434, -1095286649, 1053624831, 1034289100) + W(5, -1106779367, 1047811540, 1034908007, -1107012174)\n\t\t+ W(6, 1024593089, -1096228817, 1034674708, 1021221591)\n\t\t+ W(7, -1110449433, -1109179032, 1049808694, -1126204757);\n\tsum2 = W(0, 1030004067, -1133064657, 1024174065, -1119836251)\n\t\t + W(1, -1117028113, -1134091777, -1113615539, 1025775761)\n\t\t + W(2, -1105887481, 1045929484, 1032698350, -1118489229)\n\t\t + W(3, -1066126465, 1081917443, -1097201480, 1041573100)\n\t\t + W(4, -1104777348, 1043726141, 1033613382, -1124268877)\n\t\t + W(5, -1122550707, 1028310407, -1107697461, 1030764051)\n\t\t + W(6, -1130918117, 1016764395, 1029778305, -1116797441)\n\t\t + W(7, 1023720579, -1116064873, 1018371831, 1018350967);\n\tWS(1067475431, -1126058166);\n\tsum1 =\n\t\tW(0, -1108052732, -1097851361, 1049362324, 1040199303) + W(1, 1043040440, -1108210069, 1048929252, -1109622414)\n\t\t+ W(2, 1048922396, -1084429932, 1054104112, 1041203782) + W(3, -1097574342, 1055911149, 1047147106, -1104274751)\n\t\t+ W(4, -1119673025, 1041902328, -1085779789, 1047880876)\n\t\t+ W(5, -1101774749, 1035827603, 1049622021, -1116198608)\n\t\t+ W(6, 1019400344, -1115594513, 1019477630, -1107876353)\n\t\t+ W(7, 1007801026, -1107003538, 1037086373, 1036701569);\n\tsum2 =\n\t\tW(0, 1013753738, 1020731454, -1120697178, 1009873360) + W(1, -1113150555, 1046742995, 1034035253, -1099358283)\n\t\t+ W(2, 1015248850, 1045156685, -1094710566, 1039470065) + W(3, 1042650722, -1104352239, -1128318417, 1046693145)\n\t\t+ W(4, 1040818978, -1089864705, 1045040370, 1036008061) + W(5, -1105652199, 1045331461, 1025091411, 1030627793)\n\t\t+ W(6, 1033430289, -1109224259, -1106535436, 1017876415)\n\t\t+ W(7, -1120377801, 1016214593, 1019751894, -1132110931);\n\tWS(1060496974, -1099362699);\n\tsum1 = W(0, 1054706808, -1109706041, -1098091909, -1129324363)\n\t\t + W(1, 1036662868, 1041317773, -1123237413, 1015757258) + W(2, 1045895019, 1051554925, -1091928498, 1021341985)\n\t\t + W(3, 1033303646, 1049334366, -1083798889, -1112852963)\n\t\t + W(4, 1044095763, 1051166813, -1095315343, 1041804248)\n\t\t + W(5, -1130190200, 1053590462, -1087007295, -1127492145)\n\t\t + W(6, 1035564779, 1049285205, -1097088265, 1039262630)\n\t\t + W(7, 1040746168, 1055551482, -1094550458, -1114905285);\n\tsum2 = W(0, -1073385920, 1077926840, 1032559783, -1094451238)\n\t\t + W(1, -1084887580, 1058818874, -1089669880, -1121878040)\n\t\t + W(2, -1083140914, 1060159151, 1045764296, -1173171215)\n\t\t + W(3, -1081800202, 1074845707, 1059775011, -1120435570)\n\t\t + W(4, -1085954594, 1061906872, -1103860568, -1115590029)\n\t\t + W(5, 1037413129, -1084431515, -1094536545, 1053315192)\n\t\t + W(6, -1096433065, -1126824848, -1133232881, -1107838893)\n\t\t + W(7, 1054210787, -1087315344, -1099186518, 1052978812);\n\tWS(-1078369703, 1041267413);\n\tsum1 = W(0, 1024386586, 1041630887, -1102607056, 1016693023)\n\t\t + W(1, -1098405416, -1112635974, 1051293608, 1018393854)\n\t\t + W(2, 1044040033, -1132435208, -1094040968, 1046099151)\n\t\t + W(3, -1098286219, 1041292515, 1052507157, -1095618428)\n\t\t + W(4, -1130684104, -1091497929, 1056853585, 1018959206)\n\t\t + W(5, 1045750173, 1016159377, -1105775474, -1117949682)\n\t\t + W(6, -1098338270, -1139597330, 1049412460, -1118540325)\n\t\t + W(7, 1041584973, -1101611546, 1026100205, 1040982949);\n\tsum2 = W(0, 1035615459, -1097925659, 1043665288, 1020457849) + W(1, 1028814353, 1038714809, 1033337220, -1103657321)\n\t\t + W(2, 1062855981, -1077657685, 1051048913, -1109823715)\n\t\t + W(3, 1052250964, -1101970047, -1113114333, 1058024935)\n\t\t + W(4, 1056109526, -1098468896, -1085664062, 1056999181)\n\t\t + W(5, -1106019250, -1114182260, 1040975429, -1105846491)\n\t\t + W(6, 1048995011, -1104046747, -1109605260, 1042595027)\n\t\t + W(7, -1115640692, -1130122971, 1034778788, -1112374505);\n\tWS(1049151900, -1114127847);\n\tsum1 = W(0, 1050216581, 1044969414, -1106856243, -1099359923)\n\t\t + W(1, 1000015204, 1047621718, -1112471205, -1148711507)\n\t\t + W(2, -1136218178, 1057314961, -1091938023, -1133921207)\n\t\t + W(3, 1023136961, 1055877843, -1092033343, -1112054390)\n\t\t + W(4, -1130455775, 1054358666, -1099719178, 1034273823)\n\t\t + W(5, -1133465094, 1052966059, -1089783713, -1122838974)\n\t\t + W(6, -1160090192, 1045850836, -1099053307, 1019980258)\n\t\t + W(7, 1035991733, 1052491071, -1087984664, -1112322824);\n\tsum2 = W(0, -1105478410, 1011113448, 1068049752, -1082501551)\n\t\t + W(1, 1039552519, 1050864081, -1103020148, 1059003564)\n\t\t + W(2, -1131405058, -1125310098, 1066695202, -1098156272)\n\t\t + W(3, -1099466970, 1043215106, 1074596924, 1039344435) + W(4, 1049027924, 1034334973, 1067601936, -1099880092)\n\t\t + W(5, -1115050596, -1095883745, -1084539788, -1107282542)\n\t\t + W(6, -1129231446, 1036178144, -1075514015, -1097076855)\n\t\t + W(7, 1049583286, -1088635155, -1074115054, 1042018058);\n\tWS(-1081332839, -1093454830);\n\tsum1 = W(0, -1109709318, 1035356975, 1039420520, -1111308088)\n\t\t + W(1, -1104916884, 1037116623, -1122158672, 1014687039)\n\t\t + W(2, -1108177419, -1125155242, 1053028347, -1112931654)\n\t\t + W(3, -1117212646, 1030327966, -1104761999, 1020526050)\n\t\t + W(4, -1119705461, 1050241163, 1032136206, -1119448076)\n\t\t + W(5, 1032417267, -1103907222, -1115200780, -1112611266)\n\t\t + W(6, -1118748528, 1046095669, -1115609017, -1136487898)\n\t\t + W(7, 987327371, 1033262333, 1029855614, -1104533373);\n\tsum2 = W(0, 1013207527, -1118344664, -1124997045, 1036829905)\n\t\t + W(1, -1127355075, 1028266047, -1117884424, 1016171285)\n\t\t + W(2, -1103159789, 1043690369, -1116887196, 1024917624) + W(3, 1040955478, 1051132935, 1047094008, 1041601336)\n\t\t + W(4, 1008876024, -1108842627, 1057384051, -1127506713)\n\t\t + W(5, -1116686760, 1041402295, -1100609336, 1033786361)\n\t\t + W(6, 1035764738, -1105537330, -1098518151, -1114313206)\n\t\t + W(7, -1154118338, -1128237045, -1089828796, -1102385561);\n\tWS(1063446990, 1030048893);\n\tsum1 = W(0, -1131562670, 1043069042, -1108681470, -1108650254)\n\t\t + W(1, -1099483503, 1049571969, -1106599551, -1106453175)\n\t\t + W(2, -1106193120, 1061428532, -1097709592, 1008661917)\n\t\t + W(3, -1102405700, 1053095529, 1046689338, -1102088711)\n\t\t + W(4, 1021119810, -1115069793, 1029025472, -1123233168)\n\t\t + W(5, -1113568905, -1119868742, 1006738196, -1104754348)\n\t\t + W(6, 1009340592, 1027160065, -1120287391, -1136963210)\n\t\t + W(7, 1030255032, 1043118346, -1111789333, -1114502129);\n\tsum2 = W(0, 1012371361, 1017109065, -1110016822, -1103671135)\n\t\t + W(1, -1149491589, -1115161102, -1109821790, -1097972516)\n\t\t + W(2, 1023756477, 1012418345, 1060485172, -1094449842)\n\t\t + W(3, -1165255819, -1111308586, 1031379047, 1049769129) + W(4, -1111467932, 1015942947, 1046805034, 999148403)\n\t\t + W(5, 1019335917, -1106016138, -1114576028, 1022790203)\n\t\t + W(6, -1140694601, 1015823021, 1024897044, 1032463998)\n\t\t + W(7, 1010513313, 1026481588, -1114618076, -1146831635);\n\tWS(1060385486, 1040268319);\n\tsum1 = W(0, -1115333181, -1105770459, 1048230464, 1022495614)\n\t\t + W(1, -1113839600, -1104706211, -1122113023, -1115044751)\n\t\t + W(2, 1026945989, -1085502934, 1051932092, 997701279) + W(3, 1041834949, -1112644646, 1065603891, 1044329112)\n\t\t + W(4, -1100015113, -1102865873, -1105250533, 1038196649)\n\t\t + W(5, 1010458454, -1112283012, 1054415097, -1113673817)\n\t\t + W(6, -1113704543, -1108020290, -1122402466, -1105082025)\n\t\t + W(7, -1110169699, -1115522389, 1046973419, -1115640050);\n\tsum2 = W(0, -1115664423, 1041813775, -1142717933, -1120925434)\n\t\t + W(1, -1122287706, 1041645390, -1094011677, -1119842210)\n\t\t + W(2, 1044568139, -1087138046, -1124627987, -1120985148)\n\t\t + W(3, -1099350461, 1067461852, 1027339570, -1113918825)\n\t\t + W(4, -1102715015, -1116572542, 1045144111, -1100833175)\n\t\t + W(5, 1042022920, -1109622665, 1054026149, -1101147879)\n\t\t + W(6, 1031291077, -1113357449, -1122353792, -1112018489)\n\t\t + W(7, 1032474264, -1110133469, 1047364150, -1109170005);\n\tWS(1049043868, 1050086952);\n\tsum1 = W(0, -1127858130, -1091279607, 1054362490, 1028884238)\n\t\t + W(1, 1025810768, -1101354119, 1044465651, 1022883995) + W(2, 1034666762, -1089232423, 1050465752, 1032068165)\n\t\t + W(3, 989092984, -1092016019, 1058690160, 1005443958) + W(4, -1115481017, -1089729669, 1053482909, 1007092039)\n\t\t + W(5, -1119959429, -1104525366, 1051092259, -1149438996)\n\t\t + W(6, 1012364567, -1121438163, 1019953121, -1137072337)\n\t\t + W(7, -1097661520, -1160888088, 1051219071, 1017307814);\n\tsum2 =\n\t\tW(0, 1030282550, -1099759289, 1070065566, -1078832473) + W(1, 1012065197, 1050936278, 1068820850, -1076346523)\n\t\t+ W(2, 1049708534, 1018991152, 1068572253, -1075628240) + W(3, -1101566471, 1050588571, 1075164582, -1072955990)\n\t\t+ W(4, 1043525707, -1112383125, 1046261639, -1093459475)\n\t\t+ W(5, 1038111746, -1121285468, 1053555382, -1088795804) + W(6, 1040589253, 1039884984, 1040055978, -1099780818)\n\t\t+ W(7, -1106531005, -1113841779, 1058828770, -1090423367);\n\tWS(-1083655502, 1074535575);\n\tsum1 = W(0, 973651072, -1100106921, 1049212555, -1122472503) + W(1, 1028862937, -1096173461, 1052529147, 996549482)\n\t\t + W(2, 1029517469, -1088250868, 1057957824, -1111380529)\n\t\t + W(3, -1111330742, -1101351113, 1060855844, -1125410415)\n\t\t + W(4, 1043404639, -1092528244, 1050267538, -1109626381)\n\t\t + W(5, -1105397947, 1034877328, -1104065896, -1122247818)\n\t\t + W(6, -1129726574, -1113904430, 1041335934, -1108333759)\n\t\t + W(7, -1099887737, -1118418050, 1047916353, 1037233742);\n\tsum2 = W(0, 1037582341, -1116649305, -1107051108, 1040538112)\n\t\t + W(1, 1032149251, -1112916551, 1041643977, -1112067691)\n\t\t + W(2, -1135487115, 1044443302, 1030763641, 1036263743)\n\t\t + W(3, -1107247151, -1117703407, 1053360182, -1115814520)\n\t\t + W(4, 1053968825, 1049963138, -1087331905, 1035849297)\n\t\t + W(5, -1096732175, 1042101117, -1089009482, -1104153316)\n\t\t + W(6, 1034930229, 1046616621, -1110671517, -1104877620)\n\t\t + W(7, -1094249638, -1127010106, 1059951262, -1116847106);\n\tWS(-1132786560, 1056578758);\n\tsum1 = W(0, 1031072232, 1043718831, -1098888378, -1123786893)\n\t\t + W(1, 1019453021, 1050053971, -1104586611, 1030360908)\n\t\t + W(2, -1112153353, 1057505465, -1090760605, -1123598824)\n\t\t + W(3, -1127115205, 1049535379, -1081773448, 1035671447)\n\t\t + W(4, -1153314582, 1052394474, -1106021324, 1044649456)\n\t\t + W(5, -1105591705, 1045418390, -1120283669, -1105554848) + W(6, 986346381, 1044283028, 1036365944, 1033186457)\n\t\t + W(7, 1024604121, 1048806335, -1103287167, -1108912601);\n\tsum2 =\n\t\tW(0, 1040658557, 1011638864, 1041865287, -1109113498) + W(1, -1106354313, 1020064744, -1103147627, 1033931950)\n\t\t+ W(2, 1027144364, 1049840877, 1026998340, -1120927100) + W(3, -1103628435, 1050147177, 1053587315, -1102211113)\n\t\t+ W(4, -1123462592, -1117174472, -1118058864, 1033328738)\n\t\t+ W(5, -1130705048, -1105120318, 1036775410, -1101351534)\n\t\t+ W(6, -1126068784, -1113970774, -1104140895, 1028877580)\n\t\t+ W(7, 1016031184, -1135769248, 1030416564, -1112076066);\n\tWS(1062711758, -1109562142);\n\tsum1 = W(0, -1107075140, -1100622401, 1053288051, 1017596397)\n\t\t + W(1, -1125545776, -1104747337, 1049612355, 1007433175)\n\t\t + W(2, -1121788380, -1103229831, 1059638178, -1120034657)\n\t\t + W(3, -1112684886, -1083301774, 1048337697, -1098025711)\n\t\t + W(4, -1128625782, 1050510715, 1052952654, -1112854653)\n\t\t + W(5, -1102890883, -1097610180, 1051307580, -1108240645)\n\t\t + W(6, -1129119788, -1109077454, 1041285742, 1022176121)\n\t\t + W(7, -1102110160, 1030737729, 1049115768, 1020667959);\n\tsum2 = W(0, 1022257834, 977550902, -1113927342, 1036504102) + W(1, 1033804876, -1105772859, 1042844173, -1107093105)\n\t\t + W(2, 1033963400, -1098748483, -1096777339, 1028160469)\n\t\t + W(3, -1113268759, 1063293804, 1059312088, -1089861840)\n\t\t + W(4, -1123922685, -1090033704, -1134320563, -1101525036)\n\t\t + W(5, 1029999681, 1051039483, 1037687330, 1017532722) + W(6, 1015463858, -1104977553, 1024487701, -1122996995)\n\t\t + W(7, -1125618402, 1022914778, 1004875175, -1116068477);\n\tWS(1046002488, -1083997249);\n\tsum1 = W(0, -1116203964, -1099156844, 1050076828, 1025075217) + W(1, 1044431961, 1028498222, 1049400252, 1035032656)\n\t\t + W(2, 1041235242, -1096363997, 1050263757, 1032516798) + W(3, 1046371486, -1079124621, 1020370202, 1050189128)\n\t\t + W(4, -1106267745, -1088685662, 1048790666, 1042510329)\n\t\t + W(5, -1117705943, -1103556299, 1053355933, 1039724554) + W(6, -1122870401, 999993136, 1034829570, 1027729159)\n\t\t + W(7, -1109240562, -1106798659, 1037276039, 1037249299);\n\tsum2 = W(0, -1094982381, 1041875660, 1017839086, 1045890174)\n\t\t + W(1, 1024745423, -1091311273, 1044409386, -1107764806) + W(2, -1097113645, 1042706326, 974632891, 1048260200)\n\t\t + W(3, 1017043870, -1148119319, 1061393923, -1118443235)\n\t\t + W(4, 1052555320, -1098101314, 1043955676, -1097368628)\n\t\t + W(5, -1107563793, 1010824956, -1098402228, 1041238578)\n\t\t + W(6, 1049262968, -1094774489, 1042935118, -1116185663)\n\t\t + W(7, -1118735987, 1030619863, -1094515595, 1042214090);\n\tWS(-1083255246, -1075588436);\n\tsum1 =\n\t\tW(0, -1154522904, 1026375684, -1099839750, 1037990411) + W(1, -1106371438, 1036249778, -1113752075, -1119606102)\n\t\t+ W(2, -1105464695, 1056687627, -1092436626, 1043935324) + W(3, 1036086422, -1097055709, 1050924256, 1036476796)\n\t\t+ W(4, 1023783355, -1088556578, 1056650964, -1111337285)\n\t\t+ W(5, -1127243930, -1108055408, 1045926824, -1110940389)\n\t\t+ W(6, 1030176790, -1105944807, 1039385437, -1124332025)\n\t\t+ W(7, 1031412139, -1123388097, 1041066449, 1021333175);\n\tsum2 = W(0, -1117330831, 1032531181, 1043756688, 1060766869) + W(1, 1023708058, -1114369361, 1031926890, 1067300065)\n\t\t + W(2, -1133288218, 1017487862, -1104593512, -1105945514)\n\t\t + W(3, -1122435213, 1047518334, 1043258354, -1075696003)\n\t\t + W(4, -1139180683, -1122916014, -1096895795, -1102393264)\n\t\t + W(5, 1020252429, 1027012545, 1049767697, -1106946489) + W(6, 1025188082, -1103557501, 1019544307, 1020047431)\n\t\t + W(7, -1109968059, 1046855474, -1112657711, -1113285900);\n\tWS(1056055196, 1023945849);\n\tsum1 =\n\t\tW(0, -1104545849, 1036175954, 1032040419, -1111539988) + W(1, -1139517988, -1138851412, 1009002268, 1026875367)\n\t\t+ W(2, -1101013315, 1048468083, 1040659763, -1104005681)\n\t\t+ W(3, -1136100212, -1097789539, 1059870683, -1112873620)\n\t\t+ W(4, -1148373856, -1096999890, 1039368714, -1135793772)\n\t\t+ W(5, 1013350648, -1097071058, 1053644410, -1132670698) + W(6, -1120654743, 995622088, -1122818538, 1028030253)\n\t\t+ W(7, -1108930702, -1128233700, 1033002810, -1133516850);\n\tsum2 = W(0, 1033182461, -1110992702, 1011638125, -1116812221)\n\t\t + W(1, -1135790885, 1041801313, 976542168, -1135785781)\n\t\t + W(2, 1036058972, -1115959119, -1106760241, 1013579453)\n\t\t + W(3, -1145806187, -1083556559, -1068720208, 1034110873)\n\t\t + W(4, 1026470367, 1047402951, 1080067579, 1048786168) + W(5, -1125994579, 1026458945, 1043021822, -1124564059)\n\t\t + W(6, -1123856921, 1021989349, -1118809257, -1115658442)\n\t\t + W(7, -1152817846, 1029289545, 1027196491, -1110636256);\n\tWS(1047050040, 1036867972);\n\tsum1 = W(0, 1031952202, 1041031945, -1098508279, -1117663192)\n\t\t + W(1, 1040033213, 1050476745, -1097704487, 1033331580) + W(2, 1049413776, 1016870010, -1091275871, 1012948685)\n\t\t + W(3, 1052329098, 1054273441, -1087382286, 1043041286)\n\t\t + W(4, -1134253939, 1041748879, -1095309386, -1131302504)\n\t\t + W(5, 1023712847, 1035493153, -1117526273, -1125396951)\n\t\t + W(6, -1129317744, 1041656495, -1112254893, -1153578470)\n\t\t + W(7, 1023414180, 1041394937, -1108492595, -1112644847);\n\tsum2 = W(0, -1120609508, -1138324119, -1110367912, 1021280635)\n\t\t + W(1, -1098653081, 1042859622, 1038385587, 1026624912) + W(2, -1074671298, 1072071026, 1026263792, 1026288466)\n\t\t + W(3, -1081276780, 1068070176, -1107049493, -1122098825)\n\t\t + W(4, -1097107702, 1044485226, 1024907208, 1040255596)\n\t\t + W(5, -1110118090, 1040658983, -1122488627, -1152233050)\n\t\t + W(6, -1137118351, -1118978815, 1038809437, -1126727249)\n\t\t + W(7, -1119823807, 1035453187, -1111098449, 1006813455);\n\tWS(1047287096, 1059538103);\n\tsum1 = W(0, 1030804480, 1034749929, -1102474905, 1013951379)\n\t\t + W(1, -1111595219, 1051408038, -1094490621, 1039425378)\n\t\t + W(2, -1123153834, 1049213285, -1099609086, -1112788128)\n\t\t + W(3, -1098057279, 1057344539, 1048597242, -1098419769)\n\t\t + W(4, 1007980582, 1048793645, -1094890059, -1118093753)\n\t\t + W(5, 1018775223, -1106759404, 1046324795, -1108341356)\n\t\t + W(6, 1036089754, -1115115061, 1003815995, -1120388747)\n\t\t + W(7, 1030691489, 1033654600, -1126686757, -1135294247);\n\tsum2 = W(0, -1112864979, 1024004698, 1034996841, 1004307827)\n\t\t + W(1, 1034721747, -1109416755, 1041661735, -1116757818) + W(2, -1108077379, 988806988, 1041642045, 1037366938)\n\t\t + W(3, 1023366533, 1058238498, 1008174217, -1107547239)\n\t\t + W(4, 1021246669, -1115279539, -1122858630, -1108868659)\n\t\t + W(5, 1032508120, 1041332549, -1089151778, -1128614293)\n\t\t + W(6, -1113986367, 1033457886, -1130797677, -1130732717)\n\t\t + W(7, -1153257254, 1018109285, -1111548255, -1122125438);\n\tWS(1066216871, -1084582294);\n\tsum1 =\n\t\tW(0, 1009745022, -1095963722, 1050775177, 1027534757) + W(1, 1023325836, -1096473834, 1046303345, -1126933960)\n\t\t+ W(2, 1034246149, -1087129751, 1057767679, -1118146623)\n\t\t+ W(3, -1103455511, -1142570129, 1064400323, -1103828265)\n\t\t+ W(4, 1025953385, -1094684497, 1038452388, 1018950609) + W(5, -1105242559, -1107829831, 992534739, 1030437560)\n\t\t+ W(6, 988118663, -1107520037, 1025316967, 1020674901) + W(7, -1107601837, -1117719279, 1044853309, 1033139589);\n\tsum2 =\n\t\tW(0, -1127013105, 1031626404, 1029958550, 1017794797) + W(1, 1018526115, -1117975133, -1113082476, 1023300847)\n\t\t+ W(2, -1123587641, 1062148372, 1035325186, -1145491637) + W(3, 1052346460, 1074624908, -1130733653, 1041942663)\n\t\t+ W(4, -1098654594, -1090512380, 1046581721, -1113152926)\n\t\t+ W(5, 1029804743, -1070854231, -1113725416, -1139181075)\n\t\t+ W(6, -1118240305, -1095518794, 1031776819, -1120299385)\n\t\t+ W(7, 1030491706, 1041467716, -1115594754, -1142763637);\n\tWS(1033725552, -1082653885);\n\tsum1 = W(0, 1027658456, -1091894661, 1054730080, 1024810077) + W(1, 1033791775, -1094613753, 1052727904, 1020875129)\n\t\t + W(2, 1038169633, -1085886368, 1060322284, -1114253244)\n\t\t + W(3, -1130834725, -1094605577, 1054915405, 1021660859)\n\t\t + W(4, -1105755912, 1049096200, -1115316932, 1010914050)\n\t\t + W(5, -1107114253, 1038006563, -1113871235, 1032412472)\n\t\t + W(6, -1106878767, 1040399888, -1114082704, 1016596422)\n\t\t + W(7, -1102176852, 1038046228, -1098681477, 1044096992);\n\tsum2 =\n\t\tW(0, -1126607908, -1109006144, -1093467963, 1059727060) + W(1, -1111819446, 1050929158, 1063076656, 1073053378)\n\t\t+ W(2, 1032709615, 1025316173, 1048889614, 1073749745) + W(3, -1119610542, -1107176811, -1090320472, 1058093447)\n\t\t+ W(4, 1027594385, -1123863107, 1046933317, -1079533534)\n\t\t+ W(5, 1029384695, -1122531221, 1051206364, -1073154062) + W(6, -1115269200, 1026796828, 997945380, -1075936158)\n\t\t+ W(7, 1032209203, -1115616555, -1109796884, -1088004581);\n\tWS(-1087442510, 1045166814);\n\tsum1 =\n\t\tW(0, -1106921670, 1032009478, 1041337656, -1110338367) + W(1, 1032907600, -1127325529, -1100890040, 1042108264)\n\t\t+ W(2, -1111070674, -1106321881, 1060092296, -1105899594)\n\t\t+ W(3, 1047421629, -1085655355, 1044767811, 1027442111) + W(4, -1094092352, 1057239638, 1040377247, -1105935775)\n\t\t+ W(5, 1031075349, -1098381173, 1037296628, 1037469097)\n\t\t+ W(6, -1136240762, -1128650952, -1131454723, 1027139781)\n\t\t+ W(7, -1129052086, -1107389381, 1037463686, 991481919);\n\tsum2 = W(0, -1119426781, 1040351141, -1104019881, 1015410156)\n\t\t + W(1, -1109786529, 1043540747, -1106797782, 1043466418)\n\t\t + W(2, 1041819143, -1105926532, -1098594115, 1048709183)\n\t\t + W(3, 1018220925, -1133247980, 1066013053, -1092013542)\n\t\t + W(4, -1103055916, -1096724541, -1136157126, -1109288787)\n\t\t + W(5, -1124599508, 1038612076, -1097021086, 1027934232) + W(6, 986571056, 1019567362, 1025702119, -1140871148)\n\t\t + W(7, 1024618671, -1143357456, 1008181894, 1027080058);\n\tWS(1059279054, 1041683061);\n\tsum1 = W(0, 1028823114, -1096417644, 1041071884, 1040139175)\n\t\t + W(1, 1033060856, -1095251776, 1051348966, -1133443258)\n\t\t + W(2, -1136683218, -1096755466, -1106154521, 1027763154)\n\t\t + W(3, 1041097809, -1095420880, 1062896338, 1037083176)\n\t\t + W(4, -1108712682, -1087904547, 1057053635, -1109247178)\n\t\t + W(5, -1099515041, -1117180600, 1050313119, -1169250436)\n\t\t + W(6, -1114499693, -1113115866, 1041134484, 1007514196)\n\t\t + W(7, -1105525449, -1121084634, 1043053335, 1031868218);\n\tsum2 =\n\t\tW(0, -1104031080, 1039900182, 1028023758, -1125301559) + W(1, -1113246189, 1044206765, -1122555834, 1027754708)\n\t\t+ W(2, -1124792744, 1043086617, 1041018096, -1129842792)\n\t\t+ W(3, -1107688308, 1057123143, -1100462314, 1022410763)\n\t\t+ W(4, -1084040655, 1066602722, -1123151815, 1034604384) + W(5, -1089958554, 1037219700, 1032289221, 1029558442)\n\t\t+ W(6, -1098618924, -1111210157, 1028867168, -1139711519)\n\t\t+ W(7, -1098033920, 1036938090, -1143651414, -1122704124);\n\tWS(-1093886876, -1092780259);\n\tsum1 = W(0, 1031521076, 1034696971, -1098366291, 991412379) + W(1, 1040859655, 1027092583, -1107551117, 1023411481)\n\t\t + W(2, -1123954783, 1057011018, -1084481759, 1037665034)\n\t\t + W(3, -1115369432, 1055452141, -1086775792, 1037775165)\n\t\t + W(4, 1027325374, 1055461116, 1050583573, -1102735091)\n\t\t + W(5, -1130075936, 1043845385, -1098824964, -1106471523)\n\t\t + W(6, 1017430099, 1041326696, 1032795870, -1113156096)\n\t\t + W(7, 1005655277, 1045628689, -1110858724, -1108701199);\n\tsum2 = W(0, -1099549152, -1115620025, 1042476476, -1128057356)\n\t\t + W(1, -1101982776, -1110046443, -1138118945, -1104607948)\n\t\t + W(2, 1039636960, 1067650764, 1056117723, -1129519972)\n\t\t + W(3, 1065032135, -1096892917, -1084935200, 1039009532)\n\t\t + W(4, 1046191187, -1084058149, 1043334912, 1042222420)\n\t\t + W(5, -1112740199, -1089814493, -1116550886, -1114781123)\n\t\t + W(6, -1120755726, 1022618460, 1030169574, 1023299940)\n\t\t + W(7, -1138571865, -1106519005, -1123579094, 1029490149);\n\tWS(-1103384376, 1050555318);\n\tsum1 =\n\t\tW(0, 990997212, 1056616014, -1113359817, -1104278389) + W(1, -1104723373, 1049493908, -1101985253, -1112669305)\n\t\t+ W(2, -1102560870, 1060440249, -1095607555, -1117918862)\n\t\t+ W(3, -1110645588, 1063537686, -1091747296, -1124628967)\n\t\t+ W(4, -1114771100, 1049398171, -1098384586, -1120789735)\n\t\t+ W(5, 1006886950, -1123261404, -1094355067, 1020875660) + W(6, 1011892746, 1042753094, -1098733239, 1029891897)\n\t\t+ W(7, 1041403778, 1041297647, -1099641616, -1143354303);\n\tsum2 =\n\t\tW(0, -1097904627, 1056762738, 1033294591, -1113205081) + W(1, -1102268820, 998260703, -1102966386, -1105114179)\n\t\t+ W(2, -1101696600, 1049156882, 1040206209, 1028552759) + W(3, -1102083058, 1055125136, 1048772561, 1023069474)\n\t\t+ W(4, -1100977750, 1040009482, 1004029807, -1108173489) + W(5, 1022682138, -1099421122, 1040485303, 1040370279)\n\t\t+ W(6, -1105396681, -1114104451, -1118051402, -1109779069)\n\t\t+ W(7, 1035758392, -1112582051, 1040482786, -1135668672);\n\tWS(1042369848, -1095650924);\n\tsum1 =\n\t\tW(0, 1032801852, 1060985291, -1088222536, -1154392525) + W(1, -1124780413, 1056066249, -1093287088, 1017158008)\n\t\t+ W(2, -1142443027, 1059062488, -1089766974, 1041310978)\n\t\t+ W(3, 1031124370, 1046815795, -1084610255, -1111535759)\n\t\t+ W(4, 1024489633, 1051554984, -1096293908, -1118760812) + W(5, 1037041722, 1026983110, 1035048291, -1118618480)\n\t\t+ W(6, -1157391942, 1037131073, -1113190096, 1032589425)\n\t\t+ W(7, 1048283534, 1028118439, -1107690581, -1101944856);\n\tsum2 = W(0, 1056251107, -1084477192, -1077785336, 1053829707)\n\t\t + W(1, -1118435725, 1041984407, -1086371528, -1113013425)\n\t\t + W(2, -1111043713, -1093515412, -1093010832, 1046411943)\n\t\t + W(3, -1090037466, 1073185178, 1074151927, -1090694669)\n\t\t + W(4, -1129656805, 1051712939, 1054463958, -1095714333)\n\t\t + W(5, -1093926860, 1053076395, -1094829660, -1103046632)\n\t\t + W(6, 1052716525, -1096065312, -1090812268, 1035367276)\n\t\t + W(7, -1083761792, 1066458198, 1063500158, -1087950464);\n\tWS(-1081634407, -1072784825);\n\tsum1 = W(0, -1102740818, 1024862651, 1056867014, 1016622683)\n\t\t + W(1, -1115394775, 1046040367, 1027952685, -1112643478)\n\t\t + W(2, -1101924733, -1109613465, 1058509811, -1096240139)\n\t\t + W(3, -1100839185, -1115978107, 1050187219, -1101581667)\n\t\t + W(4, -1123768914, 1049722038, -1098437541, 1008822020)\n\t\t + W(5, -1140848016, -1098661743, 1033615035, 1023463264)\n\t\t + W(6, -1118249725, -1138059466, -1143195264, -1116668435)\n\t\t + W(7, -1116477425, 1025943000, -1132571500, 1036595961);\n\tsum2 =\n\t\tW(0, -1139809909, 1046126277, -1119940899, 1040903120) + W(1, -1126178115, -1111752353, 1055245806, -1104413152)\n\t\t+ W(2, 1032546581, 1034216546, -1088954301, 1019748625) + W(3, -1097752958, 1042101074, 1058677046, -1089277711)\n\t\t+ W(4, 1042272246, 1043290796, -1087007443, 1028591970)\n\t\t+ W(5, -1118367610, -1112722386, 1048637958, -1139620757)\n\t\t+ W(6, -1138081685, 1034532478, -1140548675, 1017306737) + W(7, 1017774855, 1030093406, 1029648824, 1033828758);\n\tWS(1050645916, 1033550915);\n\tsum1 = W(0, -1118556120, -1107219907, 1039060494, 1030703933)\n\t\t + W(1, -1108262319, 1043545243, -1145250020, -1110184190)\n\t\t + W(2, 1043230361, -1086762442, 1059123936, -1110311564)\n\t\t + W(3, -1094947334, -1104041435, 1057758321, -1100512367)\n\t\t + W(4, -1103841584, 1058293794, -1096913490, 1044416908)\n\t\t + W(5, 1018079143, -1097977901, 1039599795, -1132472896)\n\t\t + W(6, 1032598742, 1041130248, -1151122424, -1147952664)\n\t\t + W(7, 1008731683, -1123331655, -1123961290, 1022228292);\n\tsum2 = W(0, 1040267615, -1112791644, 1010515766, 1024308395) + W(1, 1048409433, -1110540665, 1032365064, 1041630361)\n\t\t + W(2, -1107165984, -1088877638, -1090038325, 1040244783)\n\t\t + W(3, -1086251247, 1053330884, 1049266570, 1037513285)\n\t\t + W(4, -1113957324, 1057377190, 1028890653, -1098504745)\n\t\t + W(5, -1107976602, 1057673067, -1103454662, 1039941233)\n\t\t + W(6, -1122078587, 1024512949, 1041725883, -1103661415)\n\t\t + W(7, -1111525785, 1042772014, -1143554104, 1024552651);\n\tWS(1051978908, -1102077462);\n\tsum1 =\n\t\tW(0, -1132165009, 1045761591, 1013540534, -1106078467) + W(1, -1117187439, 1051430047, -1096198150, 1014010165)\n\t\t+ W(2, -1108837850, 1060286099, -1130717861, -1121999817)\n\t\t+ W(3, 1037183202, 1046972447, -1085387922, 1030141582) + W(4, 1028473682, -1128782822, -1105434962, 1008925446)\n\t\t+ W(5, 1045655273, 1028047735, -1101497054, 1018887490)\n\t\t+ W(6, 1025240990, -1178179968, -1110960744, -1122721428)\n\t\t+ W(7, 1033734537, 1035331372, -1102517015, 1026996307);\n\tsum2 = W(0, 1023072493, 974611657, -1101792417, -1112121991) + W(1, -1125531833, 1047662948, 1051899312, 1037288067)\n\t\t + W(2, 1030396885, 1035351326, 1080526024, 1042102238)\n\t\t + W(3, -1118880502, -1090109833, -1069022098, -1113214479)\n\t\t + W(4, 1027419877, -1110942359, -1087739606, 1032127295)\n\t\t + W(5, -1161271853, 1033315833, 1036440530, -1143368203)\n\t\t + W(6, 1019485964, 1010290822, -1124554651, -1132377096)\n\t\t + W(7, 1028708277, -1156901930, -1114394737, -1141169667);\n\tWS(1058455886, -1096183470);\n\tsum1 = W(0, -1105360672, -1112611850, 1060616064, -1104075433)\n\t\t + W(1, -1112035684, 1032735242, 1033545283, -1111940643)\n\t\t + W(2, -1105059667, 1048808633, 1051085625, -1115570744)\n\t\t + W(3, -1103063975, 1042817013, -1097442806, -1097216429)\n\t\t + W(4, -1112638549, 1058906409, -1102188695, -1107200030)\n\t\t + W(5, -1104182327, 1047248804, -1103229812, -1108265532)\n\t\t + W(6, -1106250503, 1047193699, -1106970890, -1119499692)\n\t\t + W(7, -1103319623, 1057710235, -1109193562, -1106901731);\n\tsum2 = W(0, -1135393651, -1114274101, -1117767149, -1110403581)\n\t\t + W(1, -1131009665, 1016197705, -1130986601, -1136444051)\n\t\t + W(2, 1004138181, -1143366053, 1026922589, -1112183743)\n\t\t + W(3, -1111055824, 1051632163, 1048764370, -1121253595)\n\t\t + W(4, -1134829555, -1111579981, 1036257166, 1009689523)\n\t\t + W(5, -1127256265, 1038147066, -1112945554, 989872074)\n\t\t + W(6, -1113946573, 1025185617, -1143942149, -1123668797)\n\t\t + W(7, 1010148467, -1137859715, -1123068365, -1123716033);\n\tWS(-1103618872, 1023577831);\n\tsum1 = W(0, 1041702149, 1057806109, -1091063799, 1022049043) + W(1, 1032268701, 997904496, -1106010126, -1102660926)\n\t\t + W(2, 1021026046, 1057675340, -1090884608, 1046995709)\n\t\t + W(3, 1032012647, -1129702414, -1094077941, -1100395542)\n\t\t + W(4, 1023662430, 1056283152, -1094732237, 1050214494)\n\t\t + W(5, -1111766616, 1039716321, -1100869456, -1096243374)\n\t\t + W(6, -1112590149, 1049875952, -1105996279, 1047647816)\n\t\t + W(7, 1042231991, 1054291708, -1098425069, -1100607928);\n\tsum2 = W(0, 1073849383, -1072987051, 1040644897, 1022236877)\n\t\t + W(1, 1069429154, -1080077361, -1098556311, -1128073567)\n\t\t + W(2, 1070121938, -1076996297, -1124122091, -1118780260)\n\t\t + W(3, 1066905653, -1086754234, -1095882058, 1027638421)\n\t\t + W(4, -1087755842, 1060194671, -1096747545, 1012182550)\n\t\t + W(5, -1080359597, 1067521081, 1048551041, -1129108935)\n\t\t + W(6, -1073496568, 1074652354, -1092793409, -1130588931)\n\t\t + W(7, -1070245916, 1075883836, 1058695504, 1001812541);\n\tWS(1010873216, -1100304815);\n\tsum1 =\n\t\tW(0, -1154187044, 1045945805, -1102222630, -1113759340) + W(1, 1028741017, 1051026373, -1103217414, 1022415534)\n\t\t+ W(2, -1114247598, 1058185854, -1097780567, -1105383733)\n\t\t+ W(3, -1099084427, 1059904750, -1091550752, -1111624796)\n\t\t+ W(4, -1104966895, 1052860588, -1108718914, -1114326870)\n\t\t+ W(5, 994968800, 1038231664, -1110664976, -1110217221) + W(6, -1113228468, 1040557287, 1017403508, -1108875519)\n\t\t+ W(7, 1028263947, 1032103905, 1017865354, -1109350878);\n\tsum2 = W(0, -1114639192, -1100331344, 1035901690, 1012858414)\n\t\t + W(1, 1039210963, 1069298433, 1043940791, -1126620651) + W(2, 1047528380, 1080352854, 1030733380, 1036529177)\n\t\t + W(3, -1099502544, -1067747068, -1084572959, -1099630936)\n\t\t + W(4, 1041344628, -1080996124, 1003800555, 1043527822)\n\t\t + W(5, -1108972702, 1032407437, 1045939813, -1119860547)\n\t\t + W(6, 1021595805, -1121090437, -1121287047, -1145664907)\n\t\t + W(7, -1116883371, 1016604711, -1122259179, 1034105585);\n\tWS(1044302648, -1104457270);\n\tsum1 = W(0, -1115179413, 1029190781, -1108944696, -1115207128)\n\t\t + W(1, -1101763748, 1045938783, -1102720380, 1013266237) + W(2, 999269803, 1034810490, 1038235218, 1025157307)\n\t\t + W(3, -1106420033, 1055724168, -1101615303, -1105407492)\n\t\t + W(4, 1041707045, 1053359959, -1094303566, 1045691477)\n\t\t + W(5, -1128885581, -1100033022, 1043259278, -1113033137)\n\t\t + W(6, -1110751840, 1037908026, 1011056201, -1114066571)\n\t\t + W(7, 1029110244, 1035419021, -1123807773, -1113282394);\n\tsum2 =\n\t\tW(0, -1117238549, -1109414288, -1115125848, 1023475415)\n\t\t+ W(1, -1115295266, -1128441429, -1121954754, 1024122972)\n\t\t+ W(2, 1033754662, -1104877135, 1018153798, 1002646200) + W(3, -1095438097, 1053172955, 1038786210, -1106263750)\n\t\t+ W(4, -1106855439, 1056926069, -1104082080, 1034246226) + W(5, 1011060498, -1108715476, 1043675119, 1025499367)\n\t\t+ W(6, -1117460606, 1036225840, 1008366234, -1107090094)\n\t\t+ W(7, 1032653312, -1114450934, 1018894269, 1013321052);\n\tWS(1068015911, 1043072951);\n\tsum1 =\n\t\tW(0, -1127841379, -1101991257, 1041159238, 1035382295) + W(1, 1035792844, -1091973141, 1040826438, -1098419575)\n\t\t+ W(2, -1155603908, -1110119406, 1052691071, 1043898844) + W(3, 1018341976, -1095315357, 1053842800, 1030324599)\n\t\t+ W(4, -1111053022, -1107228151, 1042506601, -1108241413)\n\t\t+ W(5, 1044403491, -1111437840, 1050221764, 1043481954)\n\t\t+ W(6, -1112313859, -1097295811, 1030249017, -1098652336)\n\t\t+ W(7, 1005208661, -1103670736, 1046985745, 1032196534);\n\tsum2 = W(0, -1134315530, -1125722365, -1135384490, -1118933131)\n\t\t + W(1, 1033824390, 1019923991, 998580556, 1027495017) + W(2, -1112867968, 1039464885, -1093291922, 1045077367)\n\t\t + W(3, 1039862799, -1087456726, -1061395777, 1087627027)\n\t\t + W(4, 1005143468, -1119378177, -1106942114, 1034637079)\n\t\t + W(5, -1114969920, 1042059959, -1121281813, -1148550692)\n\t\t + W(6, 1030354102, -1113780490, 1034179020, -1118611519)\n\t\t + W(7, -1131720457, 1009971850, 1032010553, -1117397469);\n\tWS(1060186318, -1131602669);\n\tsum1 = W(0, 1022422466, 1050205114, -1099402401, -1112848707)\n\t\t + W(1, -1102049002, 1052887138, -1102238785, -1106285089)\n\t\t + W(2, 1050775273, 1052456073, -1100510367, 1039607513)\n\t\t + W(3, -1097141731, 1049038746, -1088759247, -1098786589)\n\t\t + W(4, 1056872997, 1040490435, -1122526498, 1048305743)\n\t\t + W(5, -1099566807, 1039690728, -1099089908, -1104192622)\n\t\t + W(6, 1025667942, 1043457059, -1102859210, 1032266998)\n\t\t + W(7, 1032894309, 1045856748, -1106963501, -1118572779);\n\tsum2 =\n\t\tW(0, 989650422, -1120410947, 1047633630, -1081060940) + W(1, -1108234271, 1050158699, 1066272871, -1074101109)\n\t\t+ W(2, -1120122674, -1092804082, 1075424781, -1079387458) + W(3, 1045260201, 1024838498, 1061734347, 1050344942)\n\t\t+ W(4, -1114112879, -1125280065, -1091697647, 1043540897)\n\t\t+ W(5, 1037831837, -1119936776, 1003481288, 1039609275)\n\t\t+ W(6, -1117501250, -1114421818, 1011848513, -1131708367)\n\t\t+ W(7, 1024132690, 1035095434, -1106020023, 1026462111);\n\tWS(1057810382, 986287880);\n\tsum1 = W(0, -1105255365, -1110142276, 1041191503, 1050176972)\n\t\t + W(1, 1027767677, -1106138450, 1031406779, -1130243957)\n\t\t + W(2, 1037147968, -1092238936, 1027980992, 1041310918) + W(3, 1038550632, -1090210593, 1049547413, 1041377527)\n\t\t + W(4, -1136315263, -1089134184, 1052451129, -1115128119)\n\t\t + W(5, 1035749561, -1093055129, 1057536820, 1033537239)\n\t\t + W(6, -1115075413, -1097497096, 1050343212, -1127231554)\n\t\t + W(7, 1028257967, -1089420006, 1058108487, 1031965752);\n\tsum2 =\n\t\tW(0, -1099824579, 1070708271, 1075074245, -1097074436) + W(1, -1113793286, -1104040400, -1084124078, 1023561426)\n\t\t+ W(2, 1053512844, -1091831853, -1082668198, 1039380165)\n\t\t+ W(3, -1112943238, -1072548459, -1072503695, 1009216489)\n\t\t+ W(4, 1041834894, -1093778092, 1056090411, 1043969626) + W(5, -1099992002, 1057576575, 1053907302, -1107563771)\n\t\t+ W(6, -1120789532, 1064181862, 1058602971, 1034348623) + W(7, 1024916046, 1051972140, 1054786345, -1106961801);\n\tWS(-1075707047, 1038147646);\n\tsum1 =\n\t\tW(0, 1038492938, 1050722763, -1095596015, 1040870942) + W(1, -1115961531, 1026800423, -1103730686, -1122935577)\n\t\t+ W(2, 1036899040, 1055626176, -1091210886, 1047700685) + W(3, 1041066756, 1052178217, -1090286882, 1036539085)\n\t\t+ W(4, 1038870159, 1027667391, -1094135001, -1102625947) + W(5, 1045702796, 1053246416, -1095582752, 1048523811)\n\t\t+ W(6, 1022987667, -1100305296, -1109653838, -1105859960)\n\t\t+ W(7, 1044017707, 1049962981, -1093296229, -1117734303);\n\tsum2 =\n\t\tW(0, -1145353723, 1027969677, -1115030411, 1052090154) + W(1, -1113260796, -1095928859, 1031463199, -1110261785)\n\t\t+ W(2, -1112198364, 1052169305, -1108227013, 1041877601)\n\t\t+ W(3, -1113367096, 1052353113, 1051016428, -1099630700)\n\t\t+ W(4, 1007958125, -1129450520, 1041462653, -1087173862) + W(5, 1047146251, 1051473061, 1045242344, -1102681887)\n\t\t+ W(6, -1122974002, -1091037095, 1032341221, -1095485390)\n\t\t+ W(7, 1021064313, 1050393555, 1020102815, -1111896409);\n\tWS(-1102302520, 1068562064);\n\tsum1 = W(0, -1130894152, -1101486038, 1044130034, 1031789673)\n\t\t + W(1, 1029216267, -1094978851, 1029251017, -1102217970)\n\t\t + W(2, 1029150351, -1104755260, 1053252560, 1042516209) + W(3, 1029804895, -1093484995, 1050941559, 1040658618)\n\t\t + W(4, -1108054071, -1110271975, 1036880709, -1113036417)\n\t\t + W(5, 1046304488, -1106599349, 1050863202, 1041743615)\n\t\t + W(6, -1107326720, -1102131284, -1128083416, -1102226940)\n\t\t + W(7, 1018120580, -1102274525, 1047248574, 1032422999);\n\tsum2 =\n\t\tW(0, 1019111797, 1022527979, -1131519898, 1029130971) + W(1, -1123809812, -1111065998, 1023737355, -1117143513)\n\t\t+ W(2, 1006739898, 1031759809, 1045357020, -1106220344) + W(3, 1041109085, -1095097056, 1082939698, -1064938697)\n\t\t+ W(4, -1126211453, 1034613952, 1027342607, -1122955245)\n\t\t+ W(5, 1028972357, -1107360163, 1033832936, -1112280546)\n\t\t+ W(6, -1118372569, 1033659253, -1112248823, 1032152906)\n\t\t+ W(7, 1025713585, -1118642675, -1118824157, 1028082979);\n\tWS(1066566439, -1125753148);\n\tsum1 = W(0, 1020091828, -1096367972, 1038767583, 1030663671) + W(1, 1041951168, -1098758994, 1048997640, 1025331919)\n\t\t + W(2, -1130301450, -1093467737, -1130818632, -1108818909)\n\t\t + W(3, 1052053147, -1089881409, 1064063659, 1044746920)\n\t\t + W(4, -1131231944, -1092544881, -1116991019, 1022962726)\n\t\t + W(5, 1033588155, -1098181717, 1042770882, 1041997189) + W(6, 1009411772, -1110070786, 1046860728, 1018371147)\n\t\t + W(7, -1116682291, -1096392077, 1027361773, 1038578846);\n\tsum2 = W(0, -1105507764, 1019815533, -1136431769, 1024962860)\n\t\t + W(1, -1149004498, 1047279899, -1121679526, 1041000955)\n\t\t + W(2, -1098298748, -1106660204, -1096656341, -1107413740)\n\t\t + W(3, -1115729482, 1058550934, 1058580319, 1027135608)\n\t\t + W(4, -1094576030, 1031191852, -1098228632, -1101441076)\n\t\t + W(5, -1111478010, 1032716298, 1041490224, 1035067556)\n\t\t + W(6, -1129010369, -1117054989, 1047791827, -1123460834)\n\t\t + W(7, 1018600957, 1019851909, -1106522387, 1005788722);\n\tWS(1050996380, 1066787661);\n\tsum1 = W(0, 1042843177, -1109518091, -1098674409, -1112832565)\n\t\t + W(1, -1120310187, 1043911830, -1097687209, -1133582755)\n\t\t + W(2, 1033453959, 1059519229, -1096304487, -1116528532)\n\t\t + W(3, -1107450543, 1061971625, -1098011863, -1105396874)\n\t\t + W(4, 1017862620, 1051823058, -1095767039, 1033796902) + W(5, -1134072575, 1046601317, -1095249970, 999923683)\n\t\t + W(6, 1025308393, 1042112788, -1098354285, 1030029487)\n\t\t + W(7, 1033769739, 1046863997, -1098417599, -1109771063);\n\tsum2 =\n\t\tW(0, -1103321099, -1087654445, -1098379129, 1013739975) + W(1, 1033376724, -1114493691, -1096458683, 1015354012)\n\t\t+ W(2, -1108916223, 1049058628, 1036368268, -1121134774) + W(3, 1033194077, 1065240604, 1054396447, -1115257551)\n\t\t+ W(4, 1038197771, -1128335788, 1049730119, -1129699908)\n\t\t+ W(5, 1032881798, -1094150295, -1108472207, 1021079748) + W(6, 1017830932, 1006224046, 1031462702, -1117224382)\n\t\t+ W(7, -1138730935, -1112103411, -1102017203, 1038189385);\n\tWS(1027314912, -1081149641);\n\tsum1 = W(0, -1109480125, 1051429188, -1118844062, -1097611416)\n\t\t + W(1, -1114947760, 1053252314, -1094077252, 1034118735)\n\t\t + W(2, -1101195017, 1058130398, -1113091794, -1104617542)\n\t\t + W(3, -1132100201, 1061393767, -1085308129, 1035982720)\n\t\t + W(4, -1103759537, 1057940398, -1102037735, -1114189097)\n\t\t + W(5, 1044342469, -1104522586, -1094497965, 1036294793)\n\t\t + W(6, -1111893319, 1055491172, -1103334896, -1128796810)\n\t\t + W(7, 1051194426, -1120202825, -1094870250, 1030785028);\n\tsum2 = W(0, -1131039707, -1098833779, -1147567565, 1035790053)\n\t\t + W(1, 1024995350, -1124760267, 1057070390, 995065627)\n\t\t + W(2, -1104486127, -1078713050, -1091843304, 1037354874)\n\t\t + W(3, 1015537291, -1065942779, -1081156610, -1154356731)\n\t\t + W(4, 1053996441, 1047686732, -1094140189, -1107145709)\n\t\t + W(5, -1103676904, 1084085461, 1060423478, 1026796886) + W(6, 1047124046, 1064521940, 1046849692, -1108476011)\n\t\t + W(7, -1111129691, -1093915430, 1018309905, 1038591472);\n\tWS(-1081542375, 1044780323);\n\tsum1 = W(0, 1026864081, 1046719985, -1098857847, -1114219435)\n\t\t + W(1, -1100303790, 1054288460, -1108679899, -1104586877)\n\t\t + W(2, 1048337215, 1054459103, -1098101851, 1041408644)\n\t\t + W(3, -1098110473, 1048901488, -1093175556, -1098306531)\n\t\t + W(4, 1054474587, 1041639871, -1104037973, 1046672715)\n\t\t + W(5, -1099969099, 1034589376, -1107626335, -1104199322)\n\t\t + W(6, 1023999910, 1043694031, -1101510966, 1022681657)\n\t\t + W(7, 1028627178, 1046235480, -1106600025, -1126646775);\n\tsum2 =\n\t\tW(0, 1017985090, 1024212320, -1099849981, 1067245211) + W(1, 1027847194, -1098721130, -1081468176, 1074345814)\n\t\t+ W(2, 1036519222, 1050387030, -1070464929, 1070597407)\n\t\t+ W(3, -1113167123, -1094712479, -1096550174, -1088417301)\n\t\t+ W(4, 1037009826, -1100822056, 1057690620, -1104880956)\n\t\t+ W(5, -1113380621, 1028269032, 1042714784, -1102737214) + W(6, 1031131596, 1009055356, -1145638655, 1000105719)\n\t\t+ W(7, -1115360802, -1113841920, 1046010973, -1112342255);\n\tWS(1059294542, 1020616832);\n\tsum1 =\n\t\tW(0, -1157534552, -1096856701, 1050532499, -1112831597) + W(1, 1039080142, 1044861738, 1041652423, 1046540791)\n\t\t+ W(2, -1097783100, -1089052876, 1057029426, -1098369827)\n\t\t+ W(3, 1031217968, -1085780263, 1047119538, 1040272239) + W(4, -1164216296, 1044573672, 1039715347, 1024931118)\n\t\t+ W(5, -1138897989, -1097342660, 1043073721, -1103025619) + W(6, 1026686634, 1041475528, 1040308239, 1045404192)\n\t\t+ W(7, -1105498094, -1105558033, 1048391538, -1114523696);\n\tsum2 = W(0, -1106291706, 1040318024, -1114208076, -1142193319)\n\t\t + W(1, 1001372950, -1105705183, -1116263519, -1145917455)\n\t\t + W(2, -1099590495, 1045484852, -1108179199, 1036599633)\n\t\t + W(3, -1093748925, 1061316313, 1049891427, -1108356360)\n\t\t + W(4, 1015225205, -1098311584, 1040668388, -1148092276)\n\t\t + W(5, -1105937891, 1041085521, -1111581107, 1032743264)\n\t\t + W(6, -1112612361, 1028378294, -1115787941, 1021281994)\n\t\t + W(7, 995169980, 1035732349, -1113959318, 1024794158);\n\tWS(1059376718, -1137270291);\n\tsum1 =\n\t\tW(0, -1118257199, 1043258576, -1114290826, -1112002778) + W(1, 1037392427, -1106073464, -1124279079, 1022160871)\n\t\t+ W(2, -1097794403, 1054680411, -1115190716, 1045843716) + W(3, 1035766677, -1099046488, 1052189312, 1011458515)\n\t\t+ W(4, 1026067385, -1088020070, 1054691490, -1110958220) + W(5, 1032186693, 1041392887, -1097245116, 1046761570)\n\t\t+ W(6, -1108679762, -1113652045, 1025610423, -1117145658)\n\t\t+ W(7, -1139304576, -1111666975, -1123561026, 1032305501);\n\tsum2 =\n\t\tW(0, 1025244035, 1033595807, 1016573022, 1002397687) + W(1, -1122852568, -1087687504, 1048825911, -1104089806)\n\t\t+ W(2, -1092220395, 1066421651, 1058107887, -1130145014)\n\t\t+ W(3, 1038019467, 1047700223, -1089540205, -1111655831) + W(4, 1048072683, -1084925862, 1045215493, 1032935415)\n\t\t+ W(5, -1113553750, 1050883425, -1098430697, 1015641098)\n\t\t+ W(6, -1119930901, -1105555859, 1041208433, 1001885951)\n\t\t+ W(7, -1139793711, -1146566911, -1124843514, -1131703250);\n\tWS(1058596686, 1013962118);\n\tsum1 =\n\t\tW(0, 1000024554, 1052551424, -1088298614, 1039656505) + W(1, -1127551432, 1049056438, -1098656348, 1034731345)\n\t\t+ W(2, -1100000762, 1057499982, -1090756927, 1019232187) + W(3, 1035333436, 1036076760, -1097067922, 1033429441)\n\t\t+ W(4, -1122612871, -1127972943, 1040213184, -1125045580)\n\t\t+ W(5, 1044766998, -1116046252, 1015197910, -1113717771)\n\t\t+ W(6, 1041477861, -1118015335, -1123679237, 1037833508)\n\t\t+ W(7, 1051562743, -1099275107, -1122278672, -1122272135);\n\tsum2 =\n\t\tW(0, -1104434141, 1048601996, 1033271157, 1004930429) + W(1, 1029025211, -1091369704, -1119340081, 1028438774)\n\t\t+ W(2, -1078497608, 1052827694, 1025214064, -1106316897)\n\t\t+ W(3, -1079110377, -1106615386, -1109539756, 1034989376)\n\t\t+ W(4, -1085502108, -1115334546, 1050957039, -1108631008)\n\t\t+ W(5, 1066279808, 1037382016, -1106594885, 1023198169) + W(6, 1062913146, -1122817088, 1036274829, -1134348613)\n\t\t+ W(7, 1068620036, 1048688798, -1118139306, -1139733884);\n\tWS(1044771128, 1023341948);\n\tsum1 =\n\t\tW(0, -1156220044, -1092336191, 1051560294, 1036528391) + W(1, 1034545464, -1098819215, 1044146859, 1029114797)\n\t\t+ W(2, 1033488922, -1096491302, 1051910286, 1022761170) + W(3, -1111313058, -1086850728, 1045449190, 1029767950)\n\t\t+ W(4, 1038420969, -1102939421, 1053458817, 1041877300) + W(5, 1008511890, -1100928894, 1038883707, 1034675856)\n\t\t+ W(6, 1013986230, -1115524377, 1012126018, 1037411178) + W(7, 1011084871, -1089482302, 1046748951, 1043196317);\n\tsum2 =\n\t\tW(0, -1071004894, 1076503146, 1057610169, -1122913984) + W(1, -1080574884, 1066884159, -1107351326, -1130255370)\n\t\t+ W(2, -1089987082, 1058011283, 1054000347, 1038970611) + W(3, 1049506323, -1098882467, -1090234844, 1014162118)\n\t\t+ W(4, 1065282653, -1084978169, 1030898490, -1114000490)\n\t\t+ W(5, 1062249589, -1088626314, -1090230279, 1022492087)\n\t\t+ W(6, 1060165079, -1082249713, 1044380003, -1131621088)\n\t\t+ W(7, 1070844945, -1077734377, -1096516163, 1013009282);\n\tWS(-1111817840, -1134998409);\n\tsum1 = W(0, 1022731056, -1102901203, 1029699069, 1021112442)\n\t\t + W(1, 1045262352, -1094315057, 1052915216, -1107194439)\n\t\t + W(2, 1044888721, -1085070720, 1058770140, -1097785743)\n\t\t + W(3, 1029818259, -1111793509, 1057078063, -1117717150)\n\t\t + W(4, -1105915720, 1055206544, -1095183540, 1040740592)\n\t\t + W(5, -1114660906, 1046806370, -1097451385, 1036425016)\n\t\t + W(6, 1027479949, -1123039746, -1112670352, 1005586201)\n\t\t + W(7, 991785104, -1136267423, -1114500629, 1016465988);\n\tsum2 = W(0, -1129690332, -1113356803, 997943457, 1015499837)\n\t\t + W(1, 1030842707, 1026318374, -1119512995, -1180561029)\n\t\t + W(2, -1123486113, 1041923626, 1037525758, -1144014736)\n\t\t + W(3, 1054087898, -1089332833, -1088292904, 1037328869)\n\t\t + W(4, -1105176966, 1068558125, 1040210770, -1107365912)\n\t\t + W(5, -1097205966, -1141184456, 1050151959, -1114055561)\n\t\t + W(6, -1098021434, -1107728348, 1018682892, 1009592392)\n\t\t + W(7, -1106929221, -1104288342, 1006954668, 1013301204);\n\tWS(-1100650808, 1043653943);\n\tsum1 = W(0, 1038392637, 1044290651, -1095199164, 1033771919) + W(1, 1032036848, 1040683515, -1115398639, 1038316223)\n\t\t + W(2, -1120772452, -1106266873, -1094097345, 1042896310)\n\t\t + W(3, 1043637149, -1090111931, -1097393337, 1045751664)\n\t\t + W(4, 1040259489, -1133467790, -1104941765, -1159203906)\n\t\t + W(5, 1047398869, 1044787930, -1101572298, 1015063331) + W(6, 1038054351, 1023591523, 1016760834, 1030908740)\n\t\t + W(7, 1050576478, 1037223428, -1102689443, -1125005703);\n\tsum2 = W(0, 1018053796, 1046306039, -1101305605, 1031448374) + W(1, 1000548496, 1043541862, 1029064982, -1112893849)\n\t\t + W(2, 1049079603, 1010667960, -1116813778, 1021972628) + W(3, 1039189619, 1064529690, 1038487223, -1105518867)\n\t\t + W(4, -1128574308, 1047996002, -1100258391, 1037842238)\n\t\t + W(5, -1118597354, -1087406141, 1048794746, 1033382833)\n\t\t + W(6, -1106984497, -1095617964, -1114392997, 1021089548)\n\t\t + W(7, -1104543855, -1086946593, 1045938007, -1140458600);\n\tWS(-1121537248, 1047151836);\n\tsum1 = W(0, -1096325448, 1052654400, 1000450324, -1116556387)\n\t\t + W(1, -1113135282, 1035132488, -1110395025, 1023519458)\n\t\t + W(2, -1098188693, 1046868890, -1139200797, -1111260975)\n\t\t + W(3, -1112146268, -1134150082, 1049727010, -1110207458)\n\t\t + W(4, -1108791588, -1129891280, 1041189572, -1104838938)\n\t\t + W(5, -1117696601, -1098847494, 1056884317, -1098805187)\n\t\t + W(6, -1123869651, 1032919412, 1041128337, -1146298440)\n\t\t + W(7, -1114157115, -1107856679, 1058220805, -1103148146);\n\tsum2 = W(0, -1142864271, 1043572739, -1125571574, -1107989855)\n\t\t + W(1, 1021304865, 1026011378, 1028667063, -1140649559) + W(2, 1043366966, -1102859954, 1022196210, 1020722946)\n\t\t + W(3, -1107584343, -1080136051, -1072538638, -1132367054)\n\t\t + W(4, 1014758407, -1103597159, -1076945816, 1041979768)\n\t\t + W(5, -1130465374, -1115654645, 1048815254, -1126224006)\n\t\t + W(6, -1120740451, 1046511165, 1072551214, 1027667511) + W(7, 1000478551, 1053224660, 1074776028, 1048839210);\n\tWS(-1086568910, 969651201);\n\tsum1 = W(0, -1128189323, -1096064919, 1047521403, 1043461231)\n\t\t + W(1, 1044154939, -1089612648, 1054908701, -1099266659)\n\t\t + W(2, 1043534732, -1084798775, 1056987371, -1113308531)\n\t\t + W(3, -1114366976, 1053159863, 1057685165, -1152040120)\n\t\t + W(4, -1098469330, 1053431542, -1089249613, 1042761408)\n\t\t + W(5, -1101372520, 1050787607, -1090701774, 1049635020)\n\t\t + W(6, -1123038043, 1036747448, -1105030179, 1010635844)\n\t\t + W(7, -1132910587, -1116020373, 1027268120, 1018344000);\n\tsum2 = W(0, 1042932965, -1103892922, -1104364155, -1139842168)\n\t\t + W(1, -1103428495, 1060495074, 1060109323, -1118896922) + W(2, 1039997403, 1052448567, 1064108701, 991756114)\n\t\t + W(3, -1093583228, -1075640666, -1073056297, -1097481656)\n\t\t + W(4, 1044856824, 1057723154, 1055665788, 1040659602) + W(5, -1121819542, 1057002090, 1060503917, -1099984054)\n\t\t + W(6, -1177180368, -1112150955, -1116550688, 1034919451)\n\t\t + W(7, 1028413178, -1118134166, -1110515035, 1041069777);\n\tWS(-1084093518, -1116656412);\n\tsum1 = W(0, 1002008836, 1058416208, -1096672513, -1112390467) + W(1, 959481663, 1026388179, -1109778819, 1023428581)\n\t\t + W(2, -1104590931, 1059097973, -1088144465, -1112632704)\n\t\t + W(3, 1050696243, 1042079029, -1096264126, 1040470858)\n\t\t + W(4, -1106608235, 1041679827, -1101432288, -1102954054)\n\t\t + W(5, 1047962207, 1049127990, -1100480244, 1047012782)\n\t\t + W(6, 1030562773, 1031439243, -1113594772, -1112144502)\n\t\t + W(7, 1015783795, 1042535660, -1093923750, -1145396437);\n\tsum2 = W(0, 1007960967, 1027407916, -1129957403, -1132155403)\n\t\t + W(1, -1110192070, 1010716935, 1018303319, -1121935910)\n\t\t + W(2, 1049899326, -1097456083, 1037417999, -1137993343)\n\t\t + W(3, 1056650247, -1070859565, -1094713389, -1142796285)\n\t\t + W(4, 1078512141, -1068241064, -1096379657, 1039214170)\n\t\t + W(5, 1081472440, -1079514242, 1043613542, -1111213656)\n\t\t + W(6, 1058404171, -1094427160, 1025537830, 1032528613) + W(7, 999915485, 1030657127, -1116925932, 1024356221);\n\tWS(1052225948, 1018668194);\n\tsum1 = W(0, -1120453498, 1051775516, -1117579103, -1107074656)\n\t\t + W(1, -1123160289, 1048325451, -1111291056, -1112742544)\n\t\t + W(2, -1108654867, 1058214550, -1093397513, -1147977428)\n\t\t + W(3, -1104839613, 1064670427, -1091445969, -1119335936)\n\t\t + W(4, 1041378113, -1126638409, -1092047898, -1109154218)\n\t\t + W(5, 1036965515, 1049967085, -1099225050, 1034167881)\n\t\t + W(6, 1044186084, -1096299613, -1112850625, -1138567959)\n\t\t + W(7, 1034438594, -1128237844, -1112057991, 1019177609);\n\tsum2 = W(0, -1121001958, -1117606942, -1103097305, -1130038396)\n\t\t + W(1, -1148685985, -1111847761, 1021935234, -1112487949)\n\t\t + W(2, 1018483434, -1120566718, 1049895592, 1038078839)\n\t\t + W(3, 1021815720, -1076982600, -1081972918, -1125812992)\n\t\t + W(4, 1049361594, 1074852012, 1051964198, -1152546434)\n\t\t + W(5, -1108634723, 1048076514, 1040925857, -1104919092)\n\t\t + W(6, -1132118692, -1102180777, 1017568960, 1026180028)\n\t\t + W(7, -1105580672, -1116866514, 1040155911, -1123068468);\n\tWS(-1096382876, -1091051652);\n\tsum1 = W(0, -1116126267, 1057278592, -1096000788, -1116910752)\n\t\t + W(1, -1113197617, 1048826126, -1097274020, -1140807037)\n\t\t + W(2, -1112424211, 1058810754, -1088739494, 1039925053)\n\t\t + W(3, -1124324715, 1056304110, -1091311905, -1132679170)\n\t\t + W(4, -1136579346, 1041995897, -1114916522, -1107191661)\n\t\t + W(5, 1040875430, 1016295122, 1038826452, -1119450067)\n\t\t + W(6, -1113905512, 1024916389, -1128507781, 1023437062)\n\t\t + W(7, 1017323784, 1042534003, 1017648027, -1098370349);\n\tsum2 = W(0, -1120311657, 1025682064, 1036682152, -1108273289)\n\t\t + W(1, 1036113080, -1107470193, -1108061877, 1012612647)\n\t\t + W(2, -1109045199, 1035621932, 1051542033, -1101063214)\n\t\t + W(3, 1029662296, -1118009189, -1101792442, -1076098595)\n\t\t + W(4, -1122358251, 1045290388, -1093646778, -1080861029)\n\t\t + W(5, -1114085873, 1009830751, 1056395710, 1039398973) + W(6, 1016737279, 1035169596, -1091719234, 1065137390)\n\t\t + W(7, -1115835645, 1030264440, 1052430993, 1072502688);\n\tWS(1040082544, -1114755812);\n\tsum1 = W(0, 1017784372, -1110974758, 1040296296, 1024480479)\n\t\t + W(1, 1037505264, -1108514902, 1041424680, -1104471944)\n\t\t + W(2, 1045745417, -1095324708, 1054913780, -1106439461)\n\t\t + W(3, 1019379817, 1052579502, -1106396419, -1115066496)\n\t\t + W(4, -1109308706, 1058051822, -1087512533, 1040857799)\n\t\t + W(5, -1124056118, 1046163210, -1093666877, 1001482384) + W(6, 1025470519, 1038459986, -1106674096, 995688529)\n\t\t + W(7, 1039469090, 998280780, -1109356390, -1108404770);\n\tsum2 = W(0, -1162396366, 1045315846, 1034748092, 1035646876)\n\t\t + W(1, -1117720653, -1118054954, 1034773210, -1100298043)\n\t\t + W(2, -1104226850, 1057942904, 1043388435, -1097646834)\n\t\t + W(3, -1105580348, 1059476362, 1067689202, -1093789486)\n\t\t + W(4, -1105643813, -1090022037, -1083232471, 1040357620)\n\t\t + W(5, 1031813906, 1045409162, -1101262587, -1113573448)\n\t\t + W(6, 1011045214, -1106412098, -1124577575, 1012935222)\n\t\t + W(7, 1018164327, 1023977529, -1102021751, 1024454049);\n\tWS(1036525168, -1082462584);\n\tsum1 = W(0, -1116308971, -1085123800, 1057675329, 1019612704)\n\t\t + W(1, 1037298441, -1087372070, 1051660338, 1027541711)\n\t\t + W(2, 1027885589, -1086414101, 1059597873, -1109257541)\n\t\t + W(3, -1122874917, -1096064460, 1059581688, 1041073820)\n\t\t + W(4, -1154089797, -1099879381, 1052784510, 1028059367)\n\t\t + W(5, -1108384819, -1104319094, -1117339864, 1045372305)\n\t\t + W(6, 1028179743, -1127380522, 1039251609, 1031554934)\n\t\t + W(7, 1003463273, -1096394215, -1110971807, 1053758651);\n\tsum2 =\n\t\tW(0, 1060691160, -1081285622, -1080809247, 1052276353) + W(1, -1103295177, -1090050073, 1050684042, -1106187369)\n\t\t+ W(2, 1035985281, -1102851017, -1087522637, 1048638013)\n\t\t+ W(3, -1085964582, 1072728426, 1060852217, -1090587145) + W(4, -1105398566, 1060511611, 1058511518, 1029176048)\n\t\t+ W(5, -1107551093, 1033954581, 1041242888, -1094879840) + W(6, 1049030608, -1086630634, 1028348456, 1046256182)\n\t\t+ W(7, -1090293163, 1058069039, 1062481845, -1087039462);\n\tWS(-1074352935, 1040600857);\n\tsum1 =\n\t\tW(0, 1042034194, 1057627204, -1090157751, 1024364622) + W(1, 1028652336, 1025049468, -1105875707, -1105990299)\n\t\t+ W(2, 1024054004, 1057567995, -1088931067, 1048022018) + W(3, 1030695172, 1022098295, -1095088235, -1100928004)\n\t\t+ W(4, 1029627411, 1052602222, -1094832321, 1049957878)\n\t\t+ W(5, -1117605317, 1039437212, -1104356174, -1095846092)\n\t\t+ W(6, -1114002447, 1049556590, -1107260676, 1047165477)\n\t\t+ W(7, 1041624512, 1053416947, -1101255271, -1098759166);\n\tsum2 = W(0, -1075440350, 1073165865, -1112383192, -1148975848)\n\t\t + W(1, -1079714919, 1065983198, 1048707236, -1115591486)\n\t\t + W(2, -1079134350, 1068716226, -1135853868, 1038054064)\n\t\t + W(3, -1081735031, 1066499710, -1098543278, -1125971282)\n\t\t + W(4, 1055569671, -1095308006, 1021808504, 1040311395)\n\t\t + W(5, 1066585571, -1080754250, -1108920844, -1110109816)\n\t\t + W(6, 1071644179, -1074800849, 1050977418, 1035370814)\n\t\t + W(7, 1075476470, -1073191304, -1090378667, -1120408347);\n\tWS(1041022776, 1033480094);\n\tsum1 =\n\t\tW(0, -1132576057, 1026327841, -1110434490, -1119031508) + W(1, -1123321429, 1042302896, -1109312954, 1021323174)\n\t\t+ W(2, 1028959481, 1052457903, -1089918670, 1029242558) + W(3, -1104176578, 1063677500, 1025377120, -1118638740)\n\t\t+ W(4, 1046472198, -1097607903, -1090934974, 1013298461)\n\t\t+ W(5, -1121060138, -1123802109, 1046523967, -1106699146)\n\t\t+ W(6, 1027556403, -1118671609, -1112257611, 1030036314)\n\t\t+ W(7, -1115611836, 1039698959, 1000531209, -1116635705);\n\tsum2 =\n\t\tW(0, -1106027239, 1049930690, -1110218398, 1034564779) + W(1, -1122286155, -1127267122, -1108798456, 1018367610)\n\t\t+ W(2, -1102546078, 1041115945, 1058786995, -1095860458) + W(3, 1055155948, -1091935564, 1075372513, 1043590800)\n\t\t+ W(4, -1096754888, 1052250618, -1071163371, -1112711414)\n\t\t+ W(5, 1032068992, -1103388917, -1123143101, -1119323979)\n\t\t+ W(6, -1121774513, 1038737216, -1121707895, 1016553114)\n\t\t+ W(7, 1036170969, -1108790214, 1032355550, 1017858173);\n\tWS(1055618972, -1117202987);\n\tsum1 =\n\t\tW(0, 1030962480, 1039894129, -1101932469, 1031993659) + W(1, -1101414710, 1053882576, -1089999221, 1048656807)\n\t\t+ W(2, -1098100923, 1057347458, -1085784352, 1043352452) + W(3, -1111740150, 1049814740, 1051098296, 1031031542)\n\t\t+ W(4, 1036980413, -1090053902, 1056052448, -1104607674)\n\t\t+ W(5, 1041005827, -1088233382, 1051763396, -1119077705) + W(6, 1021681163, -1105970903, 1044301630, 1022017143)\n\t\t+ W(7, -1112834597, -1117339136, 1032801282, 1039235901);\n\tsum2 = W(0, -1114659327, -1101541229, -1107338771, 1039378885)\n\t\t + W(1, -1123577690, 1043634319, 1057974128, -1111523166) + W(2, 1042921002, 1066882360, 1050113378, 1040130625)\n\t\t + W(3, -1105097716, -1077668162, -1080704784, -1104122760)\n\t\t + W(4, 1042773509, 1037629509, 1051155360, 1012227066) + W(5, -1093975266, 1058638399, 1052705661, -1110420726)\n\t\t + W(6, 1032061179, -1108208741, 1008396554, -1125218199)\n\t\t + W(7, 1000405669, -1131856909, -1111189711, 1025207949);\n\tWS(-1091387548, -1116324289);\n\tsum1 = W(0, 1026642697, -1112220622, 1049897926, 1027958127)\n\t\t + W(1, 1044682252, -1093973688, 1047211372, -1098544270)\n\t\t + W(2, 1041967213, 1046046637, 1050365286, -1112662293)\n\t\t + W(3, 1032214050, -1086442024, -1112122925, -1106755108)\n\t\t + W(4, -1131062694, -1099996941, 1046223135, -1116559746)\n\t\t + W(5, 1015214154, 1053177927, -1132096750, 1034258897)\n\t\t + W(6, -1137069945, -1098783494, 1024489425, -1111108842)\n\t\t + W(7, -1110158325, 1037567917, 1042021623, 1031638516);\n\tsum2 =\n\t\tW(0, -1108095393, 1011776651, -1101257730, 1019145070) + W(1, 1016776222, 1024100809, -1105403134, 1032882678)\n\t\t+ W(2, 977935538, -1097248934, -1101986254, -1124027994)\n\t\t+ W(3, -1122468710, 1057627889, 1060632600, -1103033100) + W(4, 1019959206, 1042194141, -1090719303, 1039533068)\n\t\t+ W(5, 1030099429, -1117226417, 1037412790, -1110127978)\n\t\t+ W(6, -1104930054, 1051928720, -1109292621, -1125661478)\n\t\t+ W(7, 1002749526, 1041814459, -1115385474, -1108291818);\n\tWS(1057965518, -1118811194);\n\tsum1 =\n\t\tW(0, -1104352985, -1106566686, 1052732873, -1107147458) + W(1, 1038892389, -1112643723, 1003767366, -1114250980)\n\t\t+ W(2, -1105058276, 1026830542, 1060358287, -1096574819) + W(3, 1042490232, -1091938531, 1019887594, 1048844541)\n\t\t+ W(4, -1121521774, 1058056073, -1118338013, 1024329053)\n\t\t+ W(5, -1099594944, -1101314965, 1042464324, -1107780158)\n\t\t+ W(6, 1033536020, -1098044778, 1024562028, 1032778872)\n\t\t+ W(7, -1095161930, 1039936570, 1046000094, -1107207172);\n\tsum2 =\n\t\tW(0, -1116205334, 993944814, 1032713731, -1106373772) + W(1, 1042905425, -1113078065, -1104977559, 1039619019)\n\t\t+ W(2, -1109155755, 1044406596, 1048672381, -1115343154) + W(3, 1044205280, 1040105843, -1104277422, 1048332350)\n\t\t+ W(4, 1035597621, 1043112037, -1103087244, 999501191) + W(5, 1008636092, -1123380436, -1153474446, -1106439836)\n\t\t+ W(6, 1036458751, -1105268129, 1015784078, 1021528398)\n\t\t+ W(7, -1092853308, 1005260887, 1036094123, -1106473413);\n\tWS(1053420700, 1049909457);\n\tsum1 = W(0, -1115258034, -1106165874, 1050401361, -1113250117)\n\t\t + W(1, 1034071238, -1089903413, 1041332866, 1023742249) + W(2, 1027276239, 1036166247, 1049384898, -1130552842)\n\t\t + W(3, -1115686559, -1100423414, 1037380859, -1120158506)\n\t\t + W(4, 1041096236, -1093491554, 1052388787, 1037333727)\n\t\t + W(5, -1102788144, 1049835542, 1034784425, -1103514783)\n\t\t + W(6, 1034068157, -1095323722, 1031952854, 1037170040)\n\t\t + W(7, -1107460367, -1110396954, 1050882791, -1114330639);\n\tsum2 = W(0, -1112500393, 1024557142, -1136367764, 1020782048)\n\t\t + W(1, 1028289272, -1165623582, 1035333264, -1122738507)\n\t\t + W(2, 1049127312, -1095250820, -1114028070, 1025362120)\n\t\t + W(3, 1086771603, -1062269001, -1087155359, 1034731082)\n\t\t + W(4, 1048088739, -1095068995, 1022077560, -1125007838) + W(5, 1020087240, 999933935, 1034746908, -1120796207)\n\t\t + W(6, 1014851096, -1135945992, -1120864651, 1026594640)\n\t\t + W(7, -1146529543, 1025716258, -1127622484, -1128255426);\n\tWS(1063806286, 1027083983);\n\tsum1 = W(0, -1114823180, 1045480194, -1118427516, -1109705966)\n\t\t + W(1, 1030313470, 1039206373, -1106496703, 1020453816)\n\t\t + W(2, -1111791457, 1061885616, 1010686340, -1103432478)\n\t\t + W(3, -1111977289, 1050451993, -1083830979, 1039658735)\n\t\t + W(4, -1108043857, 1057912708, -1099420545, -1114670584)\n\t\t + W(5, 1019729830, 1036575619, -1105267089, -1109909656)\n\t\t + W(6, -1114640622, 1039765761, -1131920190, -1113587473)\n\t\t + W(7, 1033983240, 1034424532, -1125840468, -1112770081);\n\tsum2 =\n\t\tW(0, 1033978022, -1122290634, 1016780797, -1164938552) + W(1, -1100194899, -1091664523, -1103111994, 1002490582)\n\t\t+ W(2, 1033701105, -1071413373, 1047766898, -1105595809) + W(3, 1050426550, 1075108998, -1096749849, 1051489664)\n\t\t+ W(4, -1104028404, 1062092502, 1027350687, -1108336227)\n\t\t+ W(5, 1034191613, -1103668501, -1131589290, 1021076655)\n\t\t+ W(6, -1141130302, 1034149895, -1131724600, -1149103768)\n\t\t+ W(7, 1010895851, -1140709165, 1027888251, -1131210373);\n\tWS(1058288590, 1045994186);\n\tsum1 = W(0, 1018135640, -1093342072, 1052167946, 1038262801)\n\t\t + W(1, -1123855059, -1096797372, 1041780692, 1015346466)\n\t\t + W(2, 1040223430, -1086390197, 1052872019, -1132654257)\n\t\t + W(3, -1112801779, -1105293320, 1059840396, -1134794696)\n\t\t + W(4, 1036317947, -1091216419, 1051866430, -1117665797)\n\t\t + W(5, -1098800665, -1117054299, 1050341107, 1012611090)\n\t\t + W(6, 1034707665, -1096209979, 1048652350, -1139713758)\n\t\t + W(7, -1096517871, 1023470716, 1050625648, 1010858330);\n\tsum2 = W(0, 1041114210, -1099008397, -1123917868, -1125418381)\n\t\t + W(1, -1099284356, 1047276236, -1111523652, -1120564910)\n\t\t + W(2, 1038292116, -1081084758, 1037708884, 1020505319)\n\t\t + W(3, -1092208278, -1071665325, -1086778305, -1100128811)\n\t\t + W(4, 1054381469, 1054365119, -1101037019, 1024474915)\n\t\t + W(5, -1104534119, 1081581342, 1026238413, -1125603475)\n\t\t + W(6, 1025804573, 1062322644, -1134916894, 1025011807)\n\t\t + W(7, 1033400256, -1093538640, 1052085127, -1103707544);\n\tWS(-1088887374, 1070119449);\n\tsum1 = W(0, 1040460421, 1052058645, -1090595183, -1105506686)\n\t\t + W(1, 1041554590, 1048371361, -1115426747, 1029097335)\n\t\t + W(2, 1013850612, 1048732808, -1094790815, -1129317061)\n\t\t + W(3, 1038262022, 1042754705, -1087902678, 1001782464) + W(4, 1042710919, 1047384127, -1106656361, 1038072126)\n\t\t + W(5, -1106869091, 1054439312, -1090477876, -1131475029)\n\t\t + W(6, 1044864290, 1032508990, -1122940954, 1028935005)\n\t\t + W(7, 1046057615, 1042772520, -1091795237, -1119515740);\n\tsum2 =\n\t\tW(0, 1024604999, 1056461606, 1071685965, -1075212110) + W(1, -1112923336, 1030035123, 1066713447, -1080779344)\n\t\t+ W(2, 1027433809, 1050727550, 1068313262, -1078194918) + W(3, 1025504127, -1090534096, 1028028856, -1153515923)\n\t\t+ W(4, 1007245204, -1105339223, -1081367671, 1068056044)\n\t\t+ W(5, -1144581942, -1095507508, -1078816510, 1069903211)\n\t\t+ W(6, -1129047399, 1043793174, -1081156501, 1064173276)\n\t\t+ W(7, 1021294865, -1095638178, -1090770344, 1060536751);\n\tWS(1040470840, 1011790950);\n\tsum1 = W(0, 1015095158, 1043725275, -1105535856, -1108386992)\n\t\t + W(1, -1120734562, 1051465082, -1108441440, 1030149375)\n\t\t + W(2, -1116691398, 1058372660, -1095343471, -1112701741)\n\t\t + W(3, -1118217942, 1055309890, -1081260869, 1026499745) + W(4, 1019898057, 1046636817, 1047492563, 1032201014)\n\t\t + W(5, -1123629847, 1044874098, -1093096561, -1115283258)\n\t\t + W(6, 1034607368, 1043010193, -1105294873, 1028457510)\n\t\t + W(7, 1041822001, 1040878843, -1106259483, -1112399171);\n\tsum2 =\n\t\tW(0, 1022830461, -1117997331, 1037270083, 1023767946) + W(1, 1021246145, -1110014342, -1125616185, -1130403951)\n\t\t+ W(2, 1015115055, -1111993293, 1044158772, 1025796328) + W(3, -1114703004, 1036613835, 1073620398, 1050812248)\n\t\t+ W(4, -1120910531, 1023720090, -1076883688, -1112499600)\n\t\t+ W(5, 1015720307, -1117604953, -1087890801, 1028283916) + W(6, 983370825, -1120463052, 1025754476, -1104874229)\n\t\t+ W(7, -1123770073, 1036937497, -1113287589, 1033737696);\n\tWS(1058309838, -1101980246);\n\tsum1 =\n\t\tW(0, -1118965337, -1110907254, 1038642111, 1028903966) + W(1, -1098779704, 1049643561, 1038999679, -1108240479)\n\t\t+ W(2, 1049071256, -1081904943, 1054751182, 1040887994) + W(3, -1113399754, 1042163763, 1056093093, -1118832415)\n\t\t+ W(4, 1026571427, 1052138696, -1083956910, 1046797612)\n\t\t+ W(5, -1110569018, -1106220306, 1050507993, -1104697276)\n\t\t+ W(6, -1131332475, 1025191299, -1146247429, -1123883748)\n\t\t+ W(7, -1128371676, -1129449041, 1030864044, 1017502086);\n\tsum2 = W(0, -1137655511, -1111106723, 1035105104, -1112318930)\n\t\t + W(1, 1043191716, 1033166752, -1112822728, 1027572041)\n\t\t + W(2, -1121349336, 1033268708, -1104857525, 1035699332)\n\t\t + W(3, -1097517035, 1052576386, 1055574555, -1097542777)\n\t\t + W(4, 1046822141, -1107318253, -1114990789, -1110157019)\n\t\t + W(5, -1129223371, -1102887232, -1121581721, 1031007843)\n\t\t + W(6, -1116759551, 1040601750, -1152414880, -1157281192)\n\t\t + W(7, -1124684976, 993535634, -1107957817, 1025775603);\n\tWS(1063710542, -1111213649);\n\tsum1 = W(0, 1039559517, 1052251350, -1101160384, -1113889808)\n\t\t + W(1, -1110192145, 1049489370, -1097695264, 1031901152)\n\t\t + W(2, -1107309859, 1058328276, -1093740712, -1104513406)\n\t\t + W(3, -1118762901, 1061120005, -1096321197, -1097003636)\n\t\t + W(4, -1108199122, 1049656673, -1097289639, -1112381384)\n\t\t + W(5, 1037245627, 1033876357, -1114972772, -1176476024)\n\t\t + W(6, -1139769966, 1041987905, -1102516745, 1022802380)\n\t\t + W(7, 1035326852, 1045428971, -1103522251, -1115185874);\n\tsum2 = W(0, 1026803387, -1115186477, 999853755, -1112425236) + W(1, 1021750253, 1031459540, 1031446318, -1106593609)\n\t\t + W(2, 1040812059, -1116326399, 1058720440, -1086524651)\n\t\t + W(3, -1107480079, 1040651083, 1071698983, -1075753828)\n\t\t + W(4, 1041131835, 1020594503, 1051128601, -1096266051)\n\t\t + W(5, -1115082464, 1033768858, 1034660038, -1108942599)\n\t\t + W(6, 1006187407, -1132516997, 1027131696, -1123360193)\n\t\t + W(7, 1001155939, 1015478283, 1041372466, -1104453127);\n\tWS(1039772272, -1082982873);\n\tsum1 = W(0, 1039127452, 1049032497, -1098139952, -1155633625)\n\t\t + W(1, -1106264016, 1053169593, -1088020664, 1043520647)\n\t\t + W(2, -1104546353, 1060522592, -1087153807, 1040400554)\n\t\t + W(3, -1145518233, 1056693961, 1038834197, -1139907193)\n\t\t + W(4, 1041713673, -1095982984, 1053429837, -1104883452)\n\t\t + W(5, 1044410893, -1088607916, 1048228018, -1103034636)\n\t\t + W(6, 1039725795, -1099512929, 1030077856, -1134131855)\n\t\t + W(7, 1007790526, -1120546088, -1130616150, 1012687882);\n\tsum2 =\n\t\tW(0, 1032987173, -1092902636, 1027660911, 1032111389) + W(1, -1102803435, 1037122437, 1039508875, -1101516234)\n\t\t+ W(2, -1097110538, -1083842457, -1115097563, 1001644292)\n\t\t+ W(3, -1101871105, 1067610414, 1067552095, -1104358647)\n\t\t+ W(4, -1101555589, 1033006847, -1096151174, -1145661076)\n\t\t+ W(5, -1123533577, 1041814167, 1026567371, -1104681426)\n\t\t+ W(6, -1098769512, 1045724867, -1107225085, 1020958965) + W(7, 1048796624, 999019252, -1105667947, 1028203943);\n\tWS(-1101412664, 1073047832);\n\tsum1 = W(0, -1113880945, 1059007377, -1091904865, -1133362719)\n\t\t + W(1, -1123950537, 1047579477, -1097814305, -1131741454)\n\t\t + W(2, -1109995975, 1060416389, -1087199740, 1032803377)\n\t\t + W(3, -1123565085, 1056063051, -1092124214, -1113780884)\n\t\t + W(4, -1123728428, 1046383171, -1099567891, -1113889390)\n\t\t + W(5, 1035385983, 1040643140, 1038341800, -1126485237)\n\t\t + W(6, -1115318676, 1033389702, -1119557930, 1012558775)\n\t\t + W(7, 1010675502, 1041003725, 1042882861, -1096461162);\n\tsum2 = W(0, 1013686761, 1030949359, -1109223248, -1132915573) + W(1, -1123503757, 1039110679, 1035635962, 996209923)\n\t\t + W(2, 1035262859, -1105775253, -1106751414, 1029135163)\n\t\t + W(3, -1115490710, 1027204409, 1057425426, 1070858778) + W(4, 1025861040, 1019519396, 1043312829, 1067133266)\n\t\t + W(5, 980681483, -1111394964, -1098000154, -1098902818)\n\t\t + W(6, -1125276038, 1024413043, 1051287795, -1083268694)\n\t\t + W(7, -1129892230, -1126757058, -1103421662, -1073095921);\n\tWS(-1103532344, -1105840701);\n\tsum1 =\n\t\tW(0, -1106756472, -1105825052, 1050195304, 1044840709) + W(1, -1106322913, 1053932942, 1007328528, -1104890465)\n\t\t+ W(2, 1029810954, -1086676361, 1057202097, -1144507642)\n\t\t+ W(3, -1096389739, -1098358914, 1054492326, -1098185309)\n\t\t+ W(4, -1116067305, 1054020609, -1093369370, 1032208700) + W(5, 1035916925, -1096691570, 1012599092, 1048715303)\n\t\t+ W(6, -1105566449, 1051257001, 1027855335, -1100267787)\n\t\t+ W(7, 1034505108, 1026552303, -1101687900, 1050640157);\n\tsum2 = W(0, -1111707317, -1101137684, -1116414033, -1103752872)\n\t\t + W(1, -1119262447, -1109186725, -1107841286, 1034593530)\n\t\t + W(2, 1037989791, 1049211868, 1056722210, -1110917586)\n\t\t + W(3, 1056036881, -1099242284, -1094543747, 1049861706)\n\t\t + W(4, -1105645897, 1038198606, 1053421235, 1030171051)\n\t\t + W(5, 1006194414, -1118866635, -1104714858, -1103907620)\n\t\t + W(6, -1146663095, -1109483964, -1120693058, 1032413269)\n\t\t + W(7, -1129479912, -1114787638, -1115357885, 1029169157);\n\tWS(1045178680, -1115117954);\n\tsum1 = W(0, -1102680211, 1048681528, 1019008549, 1008490315)\n\t\t + W(1, -1123018420, -1113607536, 1040296293, 1012835273)\n\t\t + W(2, -1116849368, -1092105355, 1035615004, 1027033246)\n\t\t + W(3, 1024407336, -1093530556, 1061339424, -1128145511)\n\t\t + W(4, -1107241006, -1096193779, 1057711678, -1103222073)\n\t\t + W(5, 1026392201, -1102060551, 1055864515, -1110547491)\n\t\t + W(6, -1107918421, -1102337510, 1045891981, -1110097884)\n\t\t + W(7, -1123314455, -1095199752, 1052562824, 1020395952);\n\tsum2 = W(0, -1108321996, -1096948503, -1112108000, 1026091852)\n\t\t + W(1, -1115537892, -1104693583, -1112710060, 1022753169)\n\t\t + W(2, -1106228104, 1047339287, -1126080161, -1120501740)\n\t\t + W(3, 998645667, 1055675007, 1051246853, -1105262859) + W(4, -1112292909, 1049114511, 1041989299, -1123292948)\n\t\t + W(5, 1035781218, -1100682049, 1025978716, -1139782977)\n\t\t + W(6, -1111036660, 1032758858, 1034053890, -1111667328)\n\t\t + W(7, 1018530825, -1113969306, -1113712936, 1033000622);\n\tWS(1044590904, 1058699692);\n\tsum1 = W(0, 985175380, -1092606720, 1051210502, 1009220799) + W(1, 1034192409, -1090621088, 1050384326, -1109361592)\n\t\t + W(2, 1020554347, -1093618783, 1055009987, -1117059707)\n\t\t + W(3, 1024014533, -1113905855, 1062574818, -1128567457)\n\t\t + W(4, -1115433194, -1096920415, 1054554325, 1015981863)\n\t\t + W(5, -1128687821, -1112503613, 1031218808, 1039114097)\n\t\t + W(6, 1008304190, -1100279725, -1105751509, -1127205548)\n\t\t + W(7, -1115445028, -1101027255, -1144235755, 1035507338);\n\tsum2 = W(0, 1036009101, -1108619644, 1010492213, -1131279719)\n\t\t + W(1, -1117283755, 1041337919, -1100684466, 1035041542)\n\t\t + W(2, 1033667347, 1012813669, 1015579759, -1124020763) + W(3, -1107239966, 1053310286, 1056064408, 1025470531)\n\t\t + W(4, 1034685217, -1103814148, 1050883237, 1032198922)\n\t\t + W(5, -1128406639, 1029066827, -1113069964, -1104788458)\n\t\t + W(6, -1123321687, -1109499964, -1098878001, 1024066141)\n\t\t + W(7, -1125402335, -1123197815, -1096911819, -1108347132);\n\tWS(1044030776, -1089132931);\n\tsum1 = W(0, 1034269487, -1093699058, 1045160768, 1040395197)\n\t\t + W(1, 1032883970, -1097458090, 1050995424, -1135242887)\n\t\t + W(2, 1042439154, -1086092656, 1057188990, 1040422743)\n\t\t + W(3, 1044751430, -1078975458, -1096290982, 1048952172) + W(4, 1019707982, 1035194756, 1032938655, 1042217766)\n\t\t + W(5, 1041434446, 1038040390, 1043682915, 1043586045) + W(6, -1133288904, -1131544335, 1022768458, 1029073256)\n\t\t + W(7, -1128708109, -1101499019, 1043305900, 1044718778);\n\tsum2 = W(0, 1043294282, -1107262777, -1132728616, -1112978295)\n\t\t + W(1, -1127265324, -1107127922, -1133435576, -1101649503)\n\t\t + W(2, 1035036911, 1048700262, -1115280193, -1142433873)\n\t\t + W(3, 1051203976, -1114081637, 1060204569, -1138065032)\n\t\t + W(4, -1092441683, 1027047222, -1096051714, 1049542158)\n\t\t + W(5, 1037063919, -1087538045, 1059699424, 1027406094)\n\t\t + W(6, -1095318743, 1043898666, -1091030613, 1036599707)\n\t\t + W(7, -1096741875, -1114635611, 1057805441, -1117298502);\n\tWS(-1083489614, -1078579141);\n\tsum1 = W(0, -1113694287, -1091060438, 1048678744, 1022130309)\n\t\t + W(1, 1048897616, -1104759380, 1055607032, 1045345264)\n\t\t + W(2, -1104500498, -1089217572, 1025763911, -1098656951)\n\t\t + W(3, 1029397720, -1096433234, 1056656214, 1045280313) + W(4, 1039983475, -1090900481, 1055730826, 1003335600)\n\t\t + W(5, -1099529286, -1103761763, 1039576037, -1104729181)\n\t\t + W(6, 1047818144, -1126261903, 1050842685, 1045845834)\n\t\t + W(7, -1100400745, -1098862766, 1044462332, -1124798927);\n\tsum2 = W(0, 1034867092, -1113896283, -1089397746, 1053130734)\n\t\t + W(1, 1036831152, 1008734783, -1143881728, 1048547317)\n\t\t + W(2, -1155378720, -1107821706, -1090933436, 1050664536)\n\t\t + W(3, 1050005016, 1036439980, 1067046868, -1081990202)\n\t\t + W(4, -1109019109, -1105188391, 1074023168, -1073616958)\n\t\t + W(5, -1107857756, -1103852014, 1073004488, -1073650181)\n\t\t + W(6, 1025727369, -1113326142, 1071596064, -1078582463)\n\t\t + W(7, -1105627363, 1036502992, 1068047188, -1079035066);\n\tWS(-1123566816, -1118788492);\n\tsum1 =\n\t\tW(0, 1034266605, -1131696345, -1102436480, 1029920799) + W(1, -1136553988, 1054570946, -1101485920, 1027694719)\n\t\t+ W(2, 1032767842, 1043367745, -1093672570, 1029228634) + W(3, -1119057557, 1057910725, -1081257723, 1038070160)\n\t\t+ W(4, 1032596498, 1051309065, -1104247863, 1041012541)\n\t\t+ W(5, -1138237144, 1050053561, -1097237249, -1104490509)\n\t\t+ W(6, 1034235800, 1044754161, -1100737384, 1036672371)\n\t\t+ W(7, 1038972738, 1047609962, -1118734125, -1101643609);\n\tsum2 = W(0, 1001205015, -1108935456, -1123729961, -1151981614)\n\t\t + W(1, 1006355343, 1048575251, 1037564428, -1123825361)\n\t\t + W(2, 1030505158, -1114918170, -1096130861, 1015236500)\n\t\t + W(3, -1119701641, -1088419213, -1068662368, -1095410362)\n\t\t + W(4, 1039794598, 1032736312, 1076967646, 1049774729) + W(5, -1107202062, 1045905661, 1068403675, -1105335733)\n\t\t + W(6, 1026836118, -1116946341, -1104305708, 1050153445)\n\t\t + W(7, -1115440174, 1003805295, -1124006983, -1103176791);\n\tWS(-1103567160, 1051728620);\n\tsum1 =\n\t\tW(0, 1022317012, 1037463598, -1094952698, 1033922872) + W(1, -1105517764, 1027268637, -1107670055, 1024776175)\n\t\t+ W(2, -1109296554, 1052072875, -1103880757, 1038888053) + W(3, 1030946149, -1094107172, 1052944567, 1043766492)\n\t\t+ W(4, 1032988986, -1087396213, 1057943536, -1110506946)\n\t\t+ W(5, -1117957958, -1098739651, 1052382091, -1108829569)\n\t\t+ W(6, 1025729823, -1104965205, 1036164793, -1132271979) + W(7, 1009731405, 1017302004, 1041821631, 1015545129);\n\tsum2 =\n\t\tW(0, 1031290011, -1127050317, -1113481669, -1080536402) + W(1, -1114551402, 1026829489, 1042490649, -1076466135)\n\t\t+ W(2, -1137203270, 1032334734, 1043198364, 1038797044) + W(3, 1025723227, -1098446681, -1127701979, 1074254195)\n\t\t+ W(4, 1020823723, 1041359246, 1057793899, 1035340712) + W(5, -1107112701, 1041376772, -1100591458, -1118262367)\n\t\t+ W(6, -1156747895, 1034398482, -1114292550, 1013380262)\n\t\t+ W(7, -1140368490, -1104694439, 1037536680, 1032104302);\n\tWS(-1106439480, 1029090439);\n\tsum1 =\n\t\tW(0, 1034559195, 1042655458, -1102396839, 1026400220) + W(1, -1151887836, 1030625962, -1115609614, 1035325646)\n\t\t+ W(2, 1020849475, 1059377738, -1089162129, 1042909598) + W(3, 1042053132, -1084013087, -1083731653, 1039293086)\n\t\t+ W(4, 1043127920, -1107145304, 1052971191, 1029716960) + W(5, 1043814293, 1032281331, -1107154457, 1024778063)\n\t\t+ W(6, 1037260390, 1040913704, -1113717087, 1028666946) + W(7, 1043715864, 1033172451, 1017680531, -1130742978);\n\tsum2 =\n\t\tW(0, -1129107524, 1021999108, 1022835844, -1129901940) + W(1, -1123636938, -1148550480, 1016982596, -1140398984)\n\t\t+ W(2, -1116921954, -1104180688, 1016773924, 1030858450) + W(3, 1035143287, 1058583951, 1054454385, -1117386658)\n\t\t+ W(4, 1036996009, -1112895549, -1097314323, -1108156993)\n\t\t+ W(5, 1026655402, -1116180274, -1099699990, -1118751234)\n\t\t+ W(6, -1117010042, -1131502740, -1132536424, 1016259828)\n\t\t+ W(7, -1126794884, -1138164712, -1129763396, -1117013506);\n\tWS(1048151864, 1059242544);\n\tsum1 =\n\t\tW(0, -1122367849, -1097114939, 1043794348, 1026875087) + W(1, -1121466768, -1097911384, 1033810391, 1014185912)\n\t\t+ W(2, 1042165293, -1085899247, 1063564267, -1106211614)\n\t\t+ W(3, -1116044868, 1042506911, 1042284551, -1111561384)\n\t\t+ W(4, -1105437493, 1056857214, -1089674786, 1040868541) + W(5, 1037358179, -1105063934, 1049648847, 1028107682)\n\t\t+ W(6, -1125163356, -1123578292, 1021855394, -1111395274)\n\t\t+ W(7, -1111398955, -1106114902, 1045389303, 1010402126);\n\tsum2 = W(0, -1139648101, -1110557326, -1106733442, 1039330638)\n\t\t + W(1, -1108856547, 1041627874, -1106727608, 987619817) + W(2, 1015236663, 1032833232, 1048813377, 1025349119)\n\t\t + W(3, -1095822659, 1054902128, 1055403310, -1095503796)\n\t\t + W(4, -1137977893, -1098765424, -1097123375, 1050144719)\n\t\t + W(5, 1038373686, -1121592121, 1045561320, -1108448514)\n\t\t + W(6, 1015865663, -1106594443, -1106386080, 1041979856)\n\t\t + W(7, 1025690243, -1117564251, 1017823319, -1105901385);\n\tWS(1058511566, 1043187024);\n\tsum1 =\n\t\tW(0, 1042620242, 1041476871, -1106861387, 1043942651) + W(1, 1027981614, 1044640335, -1120607404, 1040914531)\n\t\t+ W(2, 1037513401, 1039039385, -1101062960, 1040902562) + W(3, 1050564856, -1085132912, -1089194338, 1048598306)\n\t\t+ W(4, 1040390932, -1095196494, 1032203084, 1019897185) + W(5, 1044188393, -1116362934, -1134658518, 1032634704)\n\t\t+ W(6, 1032851398, -1107832665, 1026497359, 1027555603)\n\t\t+ W(7, 1043046140, -1105825814, -1105488567, 1032742569);\n\tsum2 = W(0, -1094808435, -1083260450, 1041967320, 1026111290)\n\t\t + W(1, -1132385524, -1089624726, -1102801635, 1034887813)\n\t\t + W(2, -1110994277, -1098133391, 1050258559, -1123786474)\n\t\t + W(3, 1039748829, 1063143581, 1037743779, 1033106845) + W(4, 1038866141, 1043371703, 1048943341, -1110363077)\n\t\t + W(5, 1012861192, 1040218148, -1112998265, -1121754906) + W(6, 1030487914, 1012758152, 1031702418, 1012203560)\n\t\t + W(7, -1132742376, 1052570990, -1105604919, -1111765769);\n\tWS(-1087236686, 1061665912);\n\tsum1 = W(0, -1115274057, 1023071688, -1107980923, -1119301463)\n\t\t + W(1, -1116162424, 1030200068, -1101866270, -1128116268)\n\t\t + W(2, -1104461343, 1054050807, -1092884195, -1109238785)\n\t\t + W(3, -1093387666, 1067462106, 1056570668, -1095571507)\n\t\t + W(4, -1113556238, 1050597447, 1044256537, -1103733247)\n\t\t + W(5, -1115159031, 1031104576, -1106234576, -1111522325)\n\t\t + W(6, -1126942285, -1121547516, -1128835891, -1111458030)\n\t\t + W(7, -1121543315, 1042315272, -1114796114, -1109780718);\n\tsum2 =\n\t\tW(0, -1127633710, 1024134807, -1114424195, -1109129714) + W(1, 1024854732, 1020748524, -1098546148, 1025355297)\n\t\t+ W(2, -1123781128, -1117094752, -1079772750, -1102118069)\n\t\t+ W(3, 1040493279, 1065417820, 1059484680, -1114766469) + W(4, -1105896535, 1047826025, -1107504040, 1033237727)\n\t\t+ W(5, 1033983514, -1102101577, 1049649199, -1154145757)\n\t\t+ W(6, -1122459292, 1040101538, -1105983778, 1012710689)\n\t\t+ W(7, -1120616672, -1124130304, 1041220419, -1123999628);\n\tWS(-1092106140, -1084163121);\n\tsum1 =\n\t\tW(0, 1036347305, 1049849489, -1101083230, -1106738110) + W(1, 1016904817, 1040213041, -1152694122, -1115216475)\n\t\t+ W(2, 1034414494, 1056746079, -1083169173, 1039797369) + W(3, 1040590819, 1048812489, -1107117385, 1022569263)\n\t\t+ W(4, 1047670567, -1084779712, 1051667767, -1112982247)\n\t\t+ W(5, 1030378702, 1040726752, -1109066592, -1125038036) + W(6, -1114654031, 1033236350, 1024925978, 1025136605)\n\t\t+ W(7, 1037868673, 1034988241, -1107106473, -1146668256);\n\tsum2 = W(0, -1144361879, -1111008682, -1092072719, 1021883158)\n\t\t + W(1, -1128843246, -1134810723, -1121102479, -1116668390)\n\t\t + W(2, 1005924247, 1041181160, 1045581242, -1109114373)\n\t\t + W(3, -1104940693, 1054697191, 1046555600, -1113715104)\n\t\t + W(4, -1123234701, 1052731012, -1103970223, -1128555074)\n\t\t + W(5, 1030348431, 1042931729, -1104348933, 1032936433)\n\t\t + W(6, 1032437115, -1112071203, -1113690885, -1136719027)\n\t\t + W(7, 1024671661, -1111460488, -1129885552, -1114960949);\n\tWS(1058637774, -1109876822);\n\tsum1 =\n\t\tW(0, -1123254812, 1042623060, -1126486401, -1112485473) + W(1, 1041301297, -1105094644, -1111052512, 1037949088)\n\t\t+ W(2, -1108082435, 1059472952, -1094910408, 1016105496)\n\t\t+ W(3, -1113241451, 1043969956, -1094009726, 1038892497)\n\t\t+ W(4, -1110973875, -1113269955, 1058531737, -1093047519)\n\t\t+ W(5, 1027216056, 1026816394, -1100061186, 1032398170) + W(6, 1014894339, -1130602892, 1032486130, -1128303438)\n\t\t+ W(7, 1019588394, 1026167148, -1117291247, 1021704844);\n\tsum2 =\n\t\tW(0, 1019183838, -1103677237, 1041385745, -1115238116) + W(1, 1031923668, 1026573624, 1025625867, 1024201143)\n\t\t+ W(2, 1049015983, -1101357077, -1095136476, 1024442030)\n\t\t+ W(3, -1096362417, 1060010174, -1096248497, -1122837727)\n\t\t+ W(4, 1005830618, -1122620605, -1115221092, 1034369966) + W(5, 1036998273, -1106684685, 1049273019, 1031554545)\n\t\t+ W(6, -1119396253, 1023743335, -1112424814, 1004099770) + W(7, -1125844722, 970656667, 1011280453, 1010302645);\n\tWS(1068382951, -1145853862);\n\tsum1 = W(0, -1109092968, -1104283584, -1126224104, -1142984099)\n\t\t + W(1, -1120835030, -1104742016, 1048835390, 1035504970)\n\t\t + W(2, 1015957108, -1087137628, 1060142968, 1044651720) + W(3, 1033165317, -1082841532, 1050512116, 1036256010)\n\t\t + W(4, 1015780402, 1048723479, 1050625794, 1040271692)\n\t\t + W(5, -1098982451, -1119342334, 1046183055, -1112268532)\n\t\t + W(6, -1106789039, 1037068029, 1033167819, -1115364877)\n\t\t + W(7, -1105810191, 998682871, 1042826568, -1113754717);\n\tsum2 =\n\t\tW(0, 1042289605, -1105845074, -1105090355, 1041479887) + W(1, -1123754179, 1032442894, -1106552079, 1028813354)\n\t\t+ W(2, 1040865617, -1090127653, -1075116096, -1087510643)\n\t\t+ W(3, 1025996190, 1055606718, 1073431719, -1084272058) + W(4, -1100913998, -1104101067, 1067916428, 1045036562)\n\t\t+ W(5, -1118459936, 1026136504, 1042119939, -1131666845)\n\t\t+ W(6, -1114401734, 1031986833, -1112990087, 1021173748)\n\t\t+ W(7, -1118182115, 1045409779, 1031635830, -1131440550);\n\tWS(-1115823328, -1115141930);\n\tsum1 = W(0, 994860217, -1096937968, 1034643656, 1022968545) + W(1, 1043355533, -1093401724, 1045563268, -1100277972)\n\t\t + W(2, 1046651158, -1082957735, 1056739037, -1106135459)\n\t\t + W(3, 1031967699, 1057829358, 1053028032, -1113373017)\n\t\t + W(4, -1112906011, 1054780763, -1085595451, 1036473238)\n\t\t + W(5, -1139800861, 1049387203, -1100812438, 1042166401)\n\t\t + W(6, 1032268536, 1029694230, -1112691098, -1109328859)\n\t\t + W(7, 1021673189, 1032667294, -1163065290, 1026417494);\n\tsum2 =\n\t\tW(0, 1041009418, 1006794492, 1023178506, -1126244586) + W(1, -1106230161, 1034312638, -1120362931, 1021996758)\n\t\t+ W(2, -1113994011, -1108126219, -1105213924, -1131146954)\n\t\t+ W(3, -1100787264, 1060460225, 1054015707, 997147503) + W(4, -1102450993, -1119222967, 1053508358, -1107185372)\n\t\t+ W(5, -1114680808, -1097084093, -1133314452, -1126416406)\n\t\t+ W(6, 1031764893, -1125377404, -1141774536, -1126617106)\n\t\t+ W(7, -1145068408, -1105852265, -1120752408, -1131039214);\n\tWS(1044911928, 1063248560);\n\tsum1 =\n\t\tW(0, -1117210934, -1089987573, 1050931427, -1154913199) + W(1, 1045807559, 1006551364, 1049202419, 1049427019)\n\t\t+ W(2, -1116245664, -1085623154, 1044690392, -1098224261)\n\t\t+ W(3, -1122601008, -1098705597, 1056494849, 1043742399) + W(4, 1041679280, -1089608778, 1054654497, 1009817082)\n\t\t+ W(5, -1102494868, -1098692501, 1047881833, -1102952115) + W(6, 1044187563, 1040126000, 1043119951, 1048685800)\n\t\t+ W(7, -1101059428, -1100421777, 1043071666, -1132265536);\n\tsum2 = W(0, -1110897864, 1031814971, 1060526454, -1090228093)\n\t\t + W(1, -1104703066, -1126406622, 1034850394, -1097166620)\n\t\t + W(2, 1039476246, -1112535334, 1060516426, -1091926928)\n\t\t + W(3, -1102025112, -1088994686, -1088701567, 1063814816)\n\t\t + W(4, 1041770976, 1050082866, -1072347435, 1074296249) + W(5, 1044782005, 1038057456, -1075073775, 1073862535)\n\t\t + W(6, -1112640404, 1029663347, -1077197270, 1067261757)\n\t\t + W(7, 1045848501, -1098794387, -1081012351, 1067785227);\n\tWS(-1105546040, 1026157880);\n\tsum1 =\n\t\tW(0, 1040950836, 1040614249, -1102499357, 1036650571) + W(1, 1036866652, 1043435937, 1032157499, 1032871003)\n\t\t+ W(2, 1045419231, 1048836647, -1088963702, 1035867609) + W(3, 1057171433, -1092874056, -1078642173, 1040635958)\n\t\t+ W(4, 1039696013, 1049109967, -1094603626, 1039966133) + W(5, 1040737235, 1037560064, 999044599, 1035782037)\n\t\t+ W(6, 1031337694, 1039556030, -1107844556, 1034875342) + W(7, 1043417390, 1020658754, -1101965321, 1029450491);\n\tsum2 =\n\t\tW(0, 999804672, 1033414560, -1131242272, -1111239120) + W(1, 965076992, -1142972544, -1152459008, -1114613368)\n\t\t+ W(2, 1017997216, -1117537424, 1043660652, 1024438240) + W(3, -1113573416, -1080122522, 1068973644, 1009242816)\n\t\t+ W(4, 1015814944, -1116987776, -1113471168, 1026341216) + W(5, 1013150208, 1009041344, 1023678672, -1111376032)\n\t\t+ W(6, 1004325632, 1030258512, -1115573696, -1124670336)\n\t\t+ W(7, -1116017408, -1123867424, 1025739248, 1011147520);\n\tWS(-1081027239, 1060388068);\n\tsum1 =\n\t\tW(0, 1040945153, 1049191505, -1103567931, -1142725077) + W(1, 1018532824, 1052335227, -1106690587, -1126830164)\n\t\t+ W(2, 1048158700, 1053224518, -1098210230, 1044049241) + W(3, 1050078256, -1089652372, -1079677805, 1037048166)\n\t\t+ W(4, 1043330564, 1050009062, -1090769236, 1037549983) + W(5, 1045983912, 1019623144, -1102526621, -1124021470)\n\t\t+ W(6, 1034126717, 1043374892, -1113976903, 1031972104) + W(7, 1042366848, 1037373643, -1106920486, 1000910717);\n\tsum2 = W(0, 1029289565, -1119356133, -1126159585, -1119814653)\n\t\t + W(1, 1023484285, 1031916514, -1111485988, -1133461586)\n\t\t + W(2, 1041097307, -1120749829, -1121314077, -1112201820)\n\t\t + W(3, 1044843621, 1057057740, 1024531885, 1001931237) + W(4, -1101664529, 1055633817, -1102656055, 1035253182)\n\t\t + W(5, -1108647964, -1098024997, 1016983721, 1019582313)\n\t\t + W(6, -1111945130, 1038083406, -1105960100, 1011319026)\n\t\t + W(7, -1129898257, -1101101054, 1022769465, -1110859200);\n\tWS(-1121436896, -1083449266);\n\tsum1 =\n\t\tW(0, -1131437006, 1057845458, -1096100393, -1112818966) + W(1, -1126965659, 1026072602, -1106937331, 1025271436)\n\t\t+ W(2, -1106898372, 1058188821, -1089458543, -1120770471)\n\t\t+ W(3, 1049661628, 1047051462, -1093909527, 1039868950)\n\t\t+ W(4, -1110051320, 1036301673, -1105302990, -1101852248)\n\t\t+ W(5, 1048826500, 1049513187, -1097831955, 1048680544) + W(6, 1018834023, 1026266705, -1115312055, -1111779257)\n\t\t+ W(7, 1030351624, 1043516478, -1094725407, -1137214404);\n\tsum2 = W(0, 1025140224, -1118806788, -1126785121, 1031495588) + W(1, 1016993788, 1030590564, -1118559458, 991152164)\n\t\t + W(2, -1106156741, 1042721449, -1106137914, 1038491925)\n\t\t + W(3, -1085967118, 1078987048, -1100137345, 1040984057)\n\t\t + W(4, -1070014283, 1078555235, 1044823121, -1111978905)\n\t\t + W(5, -1066270592, 1069325982, -1105174392, 1030579932)\n\t\t + W(6, -1089828448, 1051485796, -1121082393, -1113499951)\n\t\t + W(7, -1115300709, 1026006822, 1011662011, -1120641633);\n\tWS(1060473294, -1125032523);\n\tsum1 = W(0, -1118381578, 1043924207, 1028842287, -1103983036)\n\t\t + W(1, -1131528546, 1048790648, -1094915206, 1032416951)\n\t\t + W(2, -1103035725, 1057928103, 1048586166, -1131359957)\n\t\t + W(3, 1044891665, -1096003632, -1089668066, 1041536420)\n\t\t + W(4, 1017562024, -1104437021, 1048997587, -1119623443)\n\t\t + W(5, 1038728371, -1127678449, -1106021950, 1026802338)\n\t\t + W(6, 1013193724, -1138265298, 1016196772, -1112764523)\n\t\t + W(7, 1017619335, 1019650740, -1112334062, 1028850580);\n\tsum2 = W(0, -1124013145, 1023871771, 1041717973, 1027246941)\n\t\t + W(1, -1154979909, -1104183315, -1104961174, -1105906795)\n\t\t + W(2, -1113455493, 1024353365, -1071159846, -1114760758)\n\t\t + W(3, 1042673063, -1099433949, 1075222357, 1048045634) + W(4, 1009341589, 1037029004, 1061754151, -1101645527)\n\t\t + W(5, -1131887235, -1106752952, -1106459992, 1027783079)\n\t\t + W(6, -1126494367, -1136822537, 1037905746, -1130069351)\n\t\t + W(7, -1120394460, -1135604889, 1020599743, 1023779471);\n\tWS(1063175758, 1049951270);\n\tsum1 = W(0, 1051934199, -1084051495, 1040719576, 1028219745) + W(1, 1041620825, -1091045702, 1046456792, 1028165760)\n\t\t + W(2, 1053157077, -1089200998, 1054477181, -1110307566)\n\t\t + W(3, 1019501037, -1103613676, 1050464826, 1037889601)\n\t\t + W(4, -1121035141, -1103906809, -1098419444, 1045652053)\n\t\t + W(5, 1024394007, 1042850683, -1097805325, 1054554722) + W(6, 1034798936, -1117239270, 1011564046, 1031152711)\n\t\t + W(7, 999909159, -1106705027, -1091232034, 1056053333);\n\tsum2 = W(0, -1091471926, 1062079447, 1055700238, 1015596856) + W(1, 1042259987, -1095572989, 1041645665, 1033532620)\n\t\t + W(2, -1103057728, -1089203271, 1037140407, 1035045090)\n\t\t + W(3, 1049412228, -1092861102, -1093629070, 1042934527)\n\t\t + W(4, 1044973062, 1034556296, -1095940003, 1032040702)\n\t\t + W(5, -1116401558, 1047552828, -1106623325, -1106239816)\n\t\t + W(6, 1011000463, -1110031497, -1107294450, 1033073048)\n\t\t + W(7, -1130123924, 1051271629, 1053844390, -1095799213);\n\tWS(-1085388366, -1090694979);\n\tsum1 = W(0, -1123787314, 1044273497, -1108110651, -1115475932)\n\t\t + W(1, -1119481145, -1130943626, 1041576542, -1117135031)\n\t\t + W(2, 1032777214, 1047368143, -1087220302, 1040347561)\n\t\t + W(3, -1112850502, 1059845268, 1027588771, -1101064470)\n\t\t + W(4, 1041751591, -1095680144, 1036323946, 1037523789)\n\t\t + W(5, -1125429276, 1039407200, -1111657568, -1126225621)\n\t\t + W(6, -1140788444, 990533574, 1021334836, -1134357621)\n\t\t + W(7, -1113892940, 1032644049, -1143449895, -1109271006);\n\tsum2 = W(0, -1107190004, 1037736456, -1125693587, -1120404934)\n\t\t + W(1, 1013881877, -1105376838, 1040619572, -1122228614)\n\t\t + W(2, -1118295314, -1123416196, -1082924015, 1051908042)\n\t\t + W(3, -1121103222, 1042717593, 1068021664, -1087341114)\n\t\t + W(4, -1127822751, -1115549939, 1016978358, 1042189807)\n\t\t + W(5, -1115317828, 1043660085, -1108863865, -1125959243)\n\t\t + W(6, -1126179247, -1126402007, -1136349779, 1038966556)\n\t\t + W(7, -1114801766, 1040920849, -1107267301, 1023515477);\n\tWS(1065904679, -1122628785);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[429];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { temp[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 11 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 429; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 11, y = (uint)id % 11;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (3)) + 0.5, float(group_base.y + y - (1)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[8];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 11];\n\tsamples[1][1] = inp[local_pos + 12];\n\tsamples[1][2] = inp[local_pos + 13];\n\tsamples[1][3] = inp[local_pos + 14];\n\tsamples[2][0] = inp[local_pos + 22];\n\tsamples[2][1] = inp[local_pos + 23];\n\tsamples[2][2] = inp[local_pos + 24];\n\tsamples[2][3] = inp[local_pos + 25];\n\tsamples[3][0] = inp[local_pos + 33];\n\tsamples[3][1] = inp[local_pos + 34];\n\tsamples[3][2] = inp[local_pos + 35];\n\tsamples[3][3] = inp[local_pos + 36];\n\tsamples[4][0] = inp[local_pos + 44];\n\tsamples[4][1] = inp[local_pos + 45];\n\tsamples[4][2] = inp[local_pos + 46];\n\tsamples[4][3] = inp[local_pos + 47];\n\tsamples[5][0] = inp[local_pos + 55];\n\tsamples[5][1] = inp[local_pos + 56];\n\tsamples[5][2] = inp[local_pos + 57];\n\tsamples[5][3] = inp[local_pos + 58];\n\tsamples[6][0] = inp[local_pos + 66];\n\tsamples[6][1] = inp[local_pos + 67];\n\tsamples[6][2] = inp[local_pos + 68];\n\tsamples[6][3] = inp[local_pos + 69];\n\tsamples[7][0] = inp[local_pos + 77];\n\tsamples[7][1] = inp[local_pos + 78];\n\tsamples[7][2] = inp[local_pos + 79];\n\tsamples[7][3] = inp[local_pos + 80];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 34];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(1, 2);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2) + ivec2(0, 1), ret);\n}\n//!PASS 2\n//!DESC NNEDI3 (double_x, nns128, win8x4)\n//!IN INPUT, temp\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 8\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[8]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 8; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 32.0;\n\tfloat mstd1 = sumsq / 32.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, -1106336704, -1134422686, -1097058997, -1096794255)\n\t\t + W(1, -1096428577, -1108910446, -1110459731, -1101174078)\n\t\t + W(2, -1104338237, -1108550970, 1036063029, 1068454954)\n\t\t + W(3, 1045547931, -1102009308, -1122481515, 1017740065)\n\t\t + W(4, 1041734649, -1135080854, 1053379177, 1068510503)\n\t\t + W(5, -1114733521, -1146436468, -1107441476, -1113618698)\n\t\t + W(6, -1112016931, -1117701445, -1099451832, -1092648385)\n\t\t + W(7, -1101312270, -1118387353, -1118789516, -1107281979);\n\tsum2 = W(0, -1107960738, 1022891960, -1112828174, -1099542471)\n\t\t + W(1, 1028527356, -1124169384, 1003609248, 1019646072) + W(2, 1034572820, 1003346080, -1096749055, 1067566060)\n\t\t + W(3, -1090311143, 1028295012, -1101382023, -1102277943)\n\t\t + W(4, -1105088633, -1103397515, 1056062200, -1127174872)\n\t\t + W(5, 1048792675, -1106700271, 1033154740, 1037356874)\n\t\t + W(6, -1147785184, 1035529310, -1105585021, 1034766166)\n\t\t + W(7, -1117109292, -1116900804, -1121486356, -1114899026);\n\tWS(-1075683047, -1087125913);\n\tsum1 = W(0, 1042687663, 1034752002, 1020877136, 1043598702) + W(1, 1032834596, 1049059763, 1041786741, 1050972591)\n\t\t + W(2, 1052977914, 1046022844, 1051043629, 1049374510)\n\t\t + W(3, 1044576234, -1108783446, -1105784362, -1089957133)\n\t\t + W(4, -1087267578, -1097639380, -1087388173, -1095656786)\n\t\t + W(5, -1108370107, -1101488315, -1111228387, -1108747496)\n\t\t + W(6, 1041384601, 1034807969, 1037740431, 1044538321) + W(7, -1113942663, 1043415765, 1011031587, 1034104676);\n\tsum2 = W(0, -1129327146, -1149557934, 1027469999, -1116270499)\n\t\t + W(1, -1107094547, -1114668504, -1136313139, -1115408970)\n\t\t + W(2, -1112916736, -1120018795, -1105442406, 1056936993)\n\t\t + W(3, 1036431709, 1029410453, -1126491682, -1112281372)\n\t\t + W(4, -1109246006, 1012425107, 1044505132, 1054092693)\n\t\t + W(5, 1015080154, -1102188513, -1123974759, -1115235380)\n\t\t + W(6, -1168639863, -1122303521, -1114911422, -1109477794)\n\t\t + W(7, -1122292075, 1038663029, -1124857486, 1004657207);\n\tWS(1042212664, -1102203684);\n\tsum1 =\n\t\tW(0, -1140902818, 1019874102, -1138465404, 1041713132) + W(1, 1031911135, 1032244040, -1122713961, 1032066151)\n\t\t+ W(2, 1040147851, -1104962202, -1102798136, -1085739950)\n\t\t+ W(3, -1090423514, -1096835716, 1015091005, -1100137137) + W(4, 1035472140, 1045102086, 1044852023, 1052255697)\n\t\t+ W(5, 1050093153, -1114874577, -1125530488, 1025859399)\n\t\t+ W(6, -1111794429, 1033944684, -1122108180, 1042129278) + W(7, 1026181805, 1045351411, 1045226448, 1037723887);\n\tsum2 =\n\t\tW(0, 1025219442, -1119436548, 1041363772, 1026037858) + W(1, -1106963956, -1148187164, -1115265228, 1027834104)\n\t\t+ W(2, -1109152196, -1122141349, 1032935700, -1095545125)\n\t\t+ W(3, 1029288712, 1048235476, 1017807431, -1124373883) + W(4, 1026944460, 1040314652, -1124096755, -1132954458)\n\t\t+ W(5, 1063106013, 1044093468, -1119277141, -1115291573)\n\t\t+ W(6, -1136900198, -1112897189, -1144192892, 1046665648)\n\t\t+ W(7, -1112667488, -1091150222, -1098670428, -1099776205);\n\tWS(-1106435384, 1038338229);\n\tsum1 = W(0, 1040095954, 1019822615, 1037825128, 1041126536) + W(1, 1042659628, 1046281616, 1025627498, 1052688116)\n\t\t + W(2, 1057302312, 1048464174, 1048602738, 1046177110)\n\t\t + W(3, -1113571175, 1010729037, -1116720143, -1090676327)\n\t\t + W(4, -1085504617, -1109673285, -1088007186, -1089584127)\n\t\t + W(5, -1112427435, -1099904421, 985851280, -1109333660) + W(6, 1038469973, 1008999077, 1047759857, 1042217259)\n\t\t + W(7, -1122205838, 1042535855, 1020820192, 1034203799);\n\tsum2 = W(0, 1016257202, 1025056091, -1123344133, -1117490597)\n\t\t + W(1, -1139226916, -1121712633, 1032149092, 1018740994)\n\t\t + W(2, 1059204215, 1059357388, -1096239491, -1080318626)\n\t\t + W(3, -1097775023, -1121076469, -1108589001, 1042934709)\n\t\t + W(4, 1078138204, 1057901024, -1075026282, -1073900782) + W(5, 1041808545, 1040778731, 1040543247, 1013253724)\n\t\t + W(6, 1045786159, -1115583727, 1040463834, 1043123901)\n\t\t + W(7, 1021989454, -1105966927, 1015040126, -1147555881);\n\tWS(-1079558823, -1098708322);\n\tsum1 =\n\t\tW(0, -1107155318, 1025234303, 1015859078, 1036194249) + W(1, -1109510417, -1106597869, -1106784003, -1107821257)\n\t\t+ W(2, -1102044491, -1098872409, -1087610848, -1086405173)\n\t\t+ W(3, 1049149960, -1113006787, 1034815041, -1109243348) + W(4, -1157836704, 1050456336, 1055919296, 1051086989)\n\t\t+ W(5, 1049231261, 1047976577, 1037659280, 1045770027) + W(6, 1018716763, 1032647774, 1043448582, 1041211303)\n\t\t+ W(7, 1032229161, -1113988824, -1114873522, -1115826050);\n\tsum2 = W(0, -1115121954, 1012713185, -1120959275, 979525395) + W(1, 1031308048, 1023425822, 1008898041, 1015643115)\n\t\t + W(2, 1038073794, -1114116718, 1048906430, -1089285214)\n\t\t + W(3, 1044939824, 960279117, -1114246838, -1116674868)\n\t\t + W(4, -1128914993, 1041575276, 1074552079, -1076455267)\n\t\t + W(5, -1081125046, -1109266711, 1028966618, -1116558128)\n\t\t + W(6, -1116577465, -1124395325, 1055266270, 1060162115)\n\t\t + W(7, -1098098687, 1021768571, -1124862202, 1013382601);\n\tWS(1045132600, -1120782135);\n\tsum1 = W(0, -1105751784, -1105178898, -1104184899, -1114219853)\n\t\t + W(1, -1110381909, 1038688878, -1129240105, 1028338913) + W(2, 1057393815, 1048859946, 1059464001, 1046945589)\n\t\t + W(3, -1115358437, -1101266388, 1006928425, 1001553277)\n\t\t + W(4, -1105555137, -1097544977, -1093321826, -1096850414)\n\t\t + W(5, 1045680426, 1054674458, 1040711722, 1051440502)\n\t\t + W(6, -1117651397, 1030868229, -1113548192, -1114482291)\n\t\t + W(7, -1100710867, -1101910270, -1109195062, -1106616547);\n\tsum2 = W(0, 1017265392, -1109811903, 1023756444, -1113627340)\n\t\t + W(1, 1014378799, -1145950526, -1129429444, 1013677319) + W(2, 1041015042, 1031690548, 1041543835, 1061785433)\n\t\t + W(3, -1112539854, 1033767962, -1111764061, -1098545742)\n\t\t + W(4, -1100279165, -1110095441, -1121800962, 1052269299)\n\t\t + W(5, 1027655784, -1103181542, -1110834939, -1106577514)\n\t\t + W(6, 1015388608, -1118750728, 1018680528, -1143924414)\n\t\t + W(7, -1099334823, 1020584168, -1108053853, 1036964648);\n\tWS(1052573852, -1122511817);\n\tsum1 = W(0, -1122539822, 1036520122, -1150669710, -1131456914)\n\t\t + W(1, 1027717464, 1032118773, 1021054902, 1030809195)\n\t\t + W(2, -1107197216, -1104137920, -1095755763, -1089160552)\n\t\t + W(3, -1090293588, -1090056564, -1092174087, -1086001910)\n\t\t + W(4, -1123108403, 1038549849, 1032946604, 1050538028) + W(5, 1052989852, 1057974832, 1053464075, 1057808582)\n\t\t + W(6, 1051517474, 1023654291, 1039184399, 1041388597) + W(7, -1168884669, 1033029075, 1028526105, 1041880934);\n\tsum2 = W(0, -1085894681, 1038192816, -1098445483, -1102898046)\n\t\t + W(1, 1008806191, 1050638036, -1102617523, 1057325981)\n\t\t + W(2, -1108201039, -1090848333, 1052221636, 1071505414)\n\t\t + W(3, -1098981857, -1086351349, -1096799400, -1088620184)\n\t\t + W(4, 1070882268, -1093216289, 1067999858, 1073865984)\n\t\t + W(5, 1058878464, -1083525828, -1107159037, -1083206959)\n\t\t + W(6, -1081052443, -1102549623, -1087793608, -1090403840)\n\t\t + W(7, -1095780376, 1055133376, -1096503933, 1053790412);\n\tWS(-1073219892, -1080326418);\n\tsum1 = W(0, -1114077580, -1142635506, -1142955026, -1123237842)\n\t\t + W(1, 1038107057, -1103324917, 1026598572, -1095875035)\n\t\t + W(2, -1101602915, -1103425331, -1090278522, -1092662145)\n\t\t + W(3, -1091646784, -1114692451, -1101848592, 1038718196)\n\t\t + W(4, 1057495924, 1053716920, 1055741332, 1051447237) + W(5, 1052494629, 1049044089, 1043005848, 1047828379)\n\t\t + W(6, -1151047116, -1114784094, -1111276924, -1121668701)\n\t\t + W(7, 1000704387, -1109204280, 1010568075, -1156952092);\n\tsum2 =\n\t\tW(0, -1121663397, -1116542136, 1042431779, 1037730633) + W(1, 1010053773, -1137348615, 1028087910, -1119025600)\n\t\t+ W(2, -1095443331, 1050195534, -1123573301, -1100504352)\n\t\t+ W(3, 1043186658, -1102861372, -1110454800, 1040229501)\n\t\t+ W(4, -1067370736, -1071776975, 1068672794, 1077012119) + W(5, 1070664889, 1045361006, -1123945395, 1027642294)\n\t\t+ W(6, 1005231721, 974104521, -1111985184, 1047585075) + W(7, 1016528922, -1109020232, 1037668055, -1117277443);\n\tWS(-1130027456, 1047744266);\n\tsum1 = W(0, 1030328637, -1100312969, 1036569044, 1044449278)\n\t\t + W(1, -1106699970, 1046212150, -1104762293, -1124975021)\n\t\t + W(2, -1103440100, 1043447132, -1096543805, -1093151398)\n\t\t + W(3, 1024264999, -1115860524, 1041344218, 1032410566) + W(4, 1050534604, 1038395889, 1037345619, -1106526388)\n\t\t + W(5, -1115006287, 1035372917, 980910400, 1044066628) + W(6, -1130350917, -1105733872, 1043114871, 1022399622)\n\t\t + W(7, 1020228332, 1024836117, -1123108872, -1112803412);\n\tsum2 = W(0, 1029880722, -1098453144, 1029103498, 1067660000)\n\t\t + W(1, -1094604015, 1046293202, -1104816365, -1117927817)\n\t\t + W(2, 1033391383, 1041649400, -1095624145, -1082091368) + W(3, 1056223691, 1027973488, 1034193475, 1034286113)\n\t\t + W(4, -1137819024, -1137377888, 1040796761, -1080643124)\n\t\t + W(5, -1102259819, -1121978412, -1148596400, 1041009105)\n\t\t + W(6, -1114516031, 1025620716, 1035240799, 1066795978)\n\t\t + W(7, -1098376459, 1036814117, -1107858514, -1114981924);\n\tWS(1049012636, 1037011386);\n\tsum1 = W(0, -1108102978, 1042768739, 1036457352, -1105146600)\n\t\t + W(1, -1100621772, -1100160944, -1149100234, -1116535239)\n\t\t + W(2, -1097922903, -1089977373, -1083790961, 1050515995)\n\t\t + W(3, 1053649082, 1044221701, 1020595485, -1110188826) + W(4, 1049818257, 1052134241, 1059747641, 1062551839)\n\t\t + W(5, -1088576433, -1093385002, -1108848982, -1147628986)\n\t\t + W(6, 1041216474, -1106782690, -1120768141, 975424142)\n\t\t + W(7, 1042971413, 1047421135, -1142399358, 1034144007);\n\tsum2 = W(0, -1130376652, -1109307779, 998991648, -1105231849)\n\t\t + W(1, -1124853008, -1110904873, 1033926100, 1012787248)\n\t\t + W(2, -1109271051, 1040605589, -1117670218, 1068278024)\n\t\t + W(3, -1099193318, 1035466738, -1111928806, 1025845624)\n\t\t + W(4, -1098570547, -1097221185, -1087670872, 1068017963)\n\t\t + W(5, -1103240593, 1049832589, 1018913792, 1035573068)\n\t\t + W(6, 1029552052, -1097745138, -1101762859, -1100990121)\n\t\t + W(7, -1094879980, -1119653306, -1099498770, 1046656503);\n\tWS(-1099128120, 1074104605);\n\tsum1 = W(0, 1001695642, -1114738061, -1137881464, 1035838167) + W(1, 1036976671, 1043227732, 1024532056, 1041576607)\n\t\t + W(2, 1031876531, 1036082771, 1049670772, 1045634202) + W(3, 1039176783, 1044499416, -1115296143, 1036111714)\n\t\t + W(4, -1106225286, -1127447088, -1114090766, -1084335000)\n\t\t + W(5, -1092101927, -1106295064, -1108352670, -1103209586)\n\t\t + W(6, 1039516460, 1037331996, 1048871226, 1024672505)\n\t\t + W(7, -1111706306, 1040216275, 1018355325, -1129216251);\n\tsum2 = W(0, -1125983803, 1026289226, 1003361806, 1036989304) + W(1, -1121376018, -1127516251, 999276462, 1020382491)\n\t\t + W(2, 1057121124, 1048908439, 1042597022, -1101738899)\n\t\t + W(3, -1101518001, -1114490175, 1032222895, -1111061815)\n\t\t + W(4, -1097673861, -1081617292, -1083990029, 1066557847)\n\t\t + W(5, 1050089807, 1021212715, -1107462587, 1048167829)\n\t\t + W(6, -1097055530, -1105528539, -1094090339, 1060807350)\n\t\t + W(7, 1045798092, 1007168711, 1021142275, 1024157832);\n\tWS(1043392312, -1114334171);\n\tsum1 = W(0, 1041086874, 1027676176, 1029494548, 1038182418) + W(1, 1033375641, 1014428948, 1016176348, 1036956537)\n\t\t + W(2, 1046571639, 1051603231, -1114765098, 1063881062) + W(3, 1036439434, 1039261900, 1049353410, 1039119196)\n\t\t + W(4, -1101297859, -1100311555, -1090719068, -1092551191)\n\t\t + W(5, -1093343060, -1095549099, -1102133676, -1097401399)\n\t\t + W(6, -1108043111, 1031499310, -1123479337, 1047470620)\n\t\t + W(7, 1029157954, -1113522785, 1032866554, -1108903402);\n\tsum2 = W(0, 1032922039, 1034144522, 1035186417, -1106146153) + W(1, 995983013, 1014708981, -1118508182, -1122673776)\n\t\t + W(2, -1110774431, 1041464609, -1089347840, 1063858171)\n\t\t + W(3, -1103182741, -1105498679, 1046443094, -1107403517)\n\t\t + W(4, 1024080221, 1024001520, -1102975683, 1062496232)\n\t\t + W(5, -1104694448, 1034761930, -1113235807, -1126790312)\n\t\t + W(6, -1111786600, 1038622987, -1098326560, -1094555153)\n\t\t + W(7, -1110476474, -1107944280, 1045574278, -1119406695);\n\tWS(1055141020, 1060902337);\n\tsum1 = W(0, 1034435725, -1133288704, 1026181508, 1033934442) + W(1, 1030709219, -1118188821, 1027652318, 1035419593)\n\t\t + W(2, 1057965143, 1052483105, 1052696320, -1122504460) + W(3, 1052884304, 1049027177, 1046782257, 1045790650)\n\t\t + W(4, -1123568702, -1121795134, -1094115828, -1084201687)\n\t\t + W(5, -1093347107, -1096042081, -1098441692, -1101051195)\n\t\t + W(6, -1104499136, 1006999415, -1153162900, 1029709087)\n\t\t + W(7, 1036285529, -1155692311, 1013713298, -1111952258);\n\tsum2 = W(0, 1043194323, 1017945729, 992756489, -1117717167) + W(1, 1023440269, -1108161809, 1034607052, -1115924363)\n\t\t + W(2, -1070666261, -1075189642, 1068575013, 1076566585)\n\t\t + W(3, 1056539999, -1098049115, 1036076910, -1112346970)\n\t\t + W(4, -1098866335, -1106608294, 1051129947, 1049134123)\n\t\t + W(5, 1047751107, -1097073139, 1011007330, 1016205049)\n\t\t + W(6, -1101126135, 1010301074, -1107911121, 1046700061)\n\t\t + W(7, 1020103457, 1026363561, 1035420194, -1137869730);\n\tWS(-1090579868, 1070279725);\n\tsum1 = W(0, 1032329895, -1102328821, -1113203900, -1098061089)\n\t\t + W(1, -1105344998, 1034205973, -1106552005, 1041435478) + W(2, 1048430680, 1050349544, 1052980239, 1057014372)\n\t\t + W(3, 1057962188, 1038273502, 1046276062, 1049777060)\n\t\t + W(4, -1101560157, -1091335294, 1039656780, -1084573078)\n\t\t + W(5, -1103450436, 1043587871, -1098888483, 1002064136)\n\t\t + W(6, -1129281319, 1012204235, 1033674783, -1115372202)\n\t\t + W(7, -1108117804, -1111454739, -1115265901, -1109943484);\n\tsum2 =\n\t\tW(0, 987673807, 1036995374, -1095509641, -1094252408) + W(1, -1119095571, -1103179232, 1040985329, -1114181285)\n\t\t+ W(2, 1027892228, -1102736131, 1034852634, 1059241808) + W(3, -1103859919, 1043446486, -1109795439, 1004807604)\n\t\t+ W(4, -1103141235, 1049007178, -1090760003, 1060311666)\n\t\t+ W(5, -1129798465, -1100012675, 1051746582, -1113144024)\n\t\t+ W(6, 1005138532, 1028221332, -1123669832, -1128511149) + W(7, 1032914452, 1006285508, -1122773902, 987177167);\n\tWS(1058381774, -1086956646);\n\tsum1 = W(0, 1005434106, -1149835360, 1034370117, 1036055789)\n\t\t + W(1, 1007595428, -1173712576, -1122685332, -1119060568)\n\t\t + W(2, -1096145742, -1100460324, -1096424577, 1033532617)\n\t\t + W(3, 1049990129, 1042033667, -1147483724, 1021597150) + W(4, 1046241393, 1039571170, 1054608457, -1110152984)\n\t\t + W(5, -1100950084, -1103984787, -1122634471, 1016207588)\n\t\t + W(6, 1026532260, -1120107684, -1107524072, -1123297125)\n\t\t + W(7, 1032832748, 1041584782, -1111048693, 1023439817);\n\tsum2 =\n\t\tW(0, 1073050559, 1069067455, -1096535796, -1073893027) + W(1, -1077684470, 1038335059, 994568047, -1109196141)\n\t\t+ W(2, 1049113865, 1035642194, -1105600932, -1114871718) + W(3, -1104998692, 1034875990, 1004288083, 1019116562)\n\t\t+ W(4, 1048373410, -1101089925, 1050248373, -1113393188) + W(5, 1015693919, 1032989733, 1024635942, 1041247426)\n\t\t+ W(6, -1123382260, 1035361564, -1105239942, 1000972215) + W(7, -1112223483, 987872957, 1016564448, 1019016937);\n\tWS(1051792028, 1027146209);\n\tsum1 = W(0, -1173418992, 1031492470, 1030866682, -1111745573) + W(1, 1037975597, 1032231158, 1021051177, 1029296729)\n\t\t + W(2, -1096555104, -1099279313, -1102472206, -1086728512)\n\t\t + W(3, -1098029143, -1099704976, -1107704157, -1088435526)\n\t\t + W(4, 1048715847, 1043543405, 1045948678, 1048944276) + W(5, 1053562136, 1041023999, 1031959404, 1046674105)\n\t\t + W(6, 1037767898, 1032372106, 1031937048, 1030986133) + W(7, 1035090980, 1038793940, 1031982829, 1043937550);\n\tsum2 = W(0, 1076285256, 1067013205, 1054912747, -1103468782)\n\t\t + W(1, -1082179927, -1086354611, -1086555076, -1077304359)\n\t\t + W(2, -1071495861, -1080654015, -1092768710, 1053690657)\n\t\t + W(3, 1062196550, 1059230433, 1065208788, 1069826015) + W(4, -1089164092, 1044446905, -1089831336, 1049463752)\n\t\t + W(5, -1116071286, 1055604285, -1102169042, 1049830695)\n\t\t + W(6, 1024798548, -1130255717, -1111620633, -1129289568)\n\t\t + W(7, 1022374674, -1147177200, 1008723412, 990531682);\n\tWS(-1116843232, 1041538044);\n\tsum1 = W(0, 1038718416, 1041393778, 1023355030, 1040958951) + W(1, 1040537034, -1112360254, 1043346413, 1047211822)\n\t\t + W(2, 1050813118, 1048646402, 1043671731, 1037057641) + W(3, 1050123337, 1052799074, 1037436293, 1042212684)\n\t\t + W(4, -1091780513, -1107072481, -1097953353, -1088265503)\n\t\t + W(5, -1105750724, -1091053114, -1121572392, -1091261766)\n\t\t + W(6, -1107356403, 1032833522, -1126022145, -1185162751)\n\t\t + W(7, 1038008293, -1123581176, 1033129910, -1116284746);\n\tsum2 = W(0, -1127892588, 1025248710, -1127740272, -1114879615)\n\t\t + W(1, -1125515678, -1135605467, 1015277154, -1118452308)\n\t\t + W(2, -1090048491, -1124324076, -1092974499, 1047668544)\n\t\t + W(3, 1042122418, 1052455522, -1102075660, 1052515578)\n\t\t + W(4, -1076486023, -1080184847, -1080442855, 1048567939)\n\t\t + W(5, 1066323214, 1068938556, 1066205534, 1058048535) + W(6, 1071993665, 1067215194, 1068762214, 1014309155)\n\t\t + W(7, -1079656754, -1077318729, -1083078137, -1086246531);\n\tWS(1045082936, 1047750074);\n\tsum1 = W(0, 1017867382, -1105827232, -1139557912, -1098507795)\n\t\t + W(1, -1112138258, -1113781499, -1117154624, 1024003356)\n\t\t + W(2, 1038967959, 1036533543, 1048524561, 1057427781) + W(3, 1057555836, 1044700722, 1037485187, 1046059755)\n\t\t + W(4, -1107005280, -1101431328, 1044741561, -1099209723)\n\t\t + W(5, -1103886606, -1117912777, -1108908881, 1024367918)\n\t\t + W(6, -1117189504, 1000061951, 1034808454, -1102176472)\n\t\t + W(7, -1102736460, -1102956733, -1113728179, -1108156515);\n\tsum2 = W(0, 1003184961, 971431442, -1131894760, -1133283297) + W(1, 984723076, 1031831407, -1125590160, 1031681833)\n\t\t + W(2, 1024857236, -1109323954, 1026446282, -1105665514)\n\t\t + W(3, -1116186208, 1024492508, -1121629964, -1148808497)\n\t\t + W(4, -1114215978, 1030818718, 1031262679, 1056963612) + W(5, 1055283667, 975724297, -1116339968, 1026784592)\n\t\t + W(6, 1037587704, -1121823736, 1045339410, -1107079097)\n\t\t + W(7, -1090072253, -1102678968, -1103014356, -1123463096);\n\tWS(1059869006, 1015916977);\n\tsum1 = W(0, -1111801867, 1039164638, 1023424768, -1118862224)\n\t\t + W(1, -1114194639, -1099094340, -1118811114, -1096321008)\n\t\t + W(2, -1103727218, -1102716146, -1089648586, -1092420393)\n\t\t + W(3, 1049092536, 1052180160, 1032231232, 1046058153) + W(4, 1051877295, 1051739903, 1057614174, 1055627629)\n\t\t + W(5, -1096079006, 1008315659, -1121275805, 1039975892)\n\t\t + W(6, -1115491581, -1106752078, -1104830517, -1112797325)\n\t\t + W(7, 1038662167, 1030088557, -1131680577, -1175801754);\n\tsum2 = W(0, -1113427160, -1104433368, -1104169884, -1117600576)\n\t\t + W(1, -1102319880, 1039627671, -1097619580, 1047721667)\n\t\t + W(2, -1090644207, -1091764889, -1109333336, 1065407690)\n\t\t + W(3, -1098732665, -1109931470, 1043714297, 1041133481) + W(4, 1034414883, -1120815960, 995253792, 1059846520)\n\t\t + W(5, 1048874179, 1008884504, 1021072320, -1103318888)\n\t\t + W(6, 1038986783, -1135559136, 1033390214, -1120264784)\n\t\t + W(7, -1104270640, 1019376128, -1111461786, -1142244432);\n\tWS(1054131356, -1077482588);\n\tsum1 =\n\t\tW(0, -1100136045, 989703980, -1114161471, -1117800461) + W(1, 1013262449, -1112319975, 1027862775, -1103330903)\n\t\t+ W(2, -1101215881, -1100083265, -1091699940, -1088812180)\n\t\t+ W(3, -1095974704, 1033042241, -1095224480, -1102789769) + W(4, 1045307006, 1039854844, 1051542530, 1056393300)\n\t\t+ W(5, 1053327664, 1059113280, 1049428707, 1055440053) + W(6, 1047064142, -1120855287, 1042850313, -1122501592)\n\t\t+ W(7, -1118254671, -1111473941, -1119385054, -1109190398);\n\tsum2 = W(0, -1098032416, 1055692800, -1101668743, -1100435053)\n\t\t + W(1, -1089098280, -1094416925, -1099202751, -1104551065)\n\t\t + W(2, 1063396296, 1024719031, 1065491656, 1073645059)\n\t\t + W(3, 1060161647, -1074198531, -1081296593, -1083400329)\n\t\t + W(4, 1043414797, 1032661901, 1058961916, 1063424749)\n\t\t + W(5, -1096580753, -1098776178, -1115458644, -1092624053)\n\t\t + W(6, -1093635160, 1049215120, -1090478816, 1050905898)\n\t\t + W(7, -1135528507, 1042380471, 1032695397, 1054277265);\n\tWS(-1082679118, -1072338335);\n\tsum1 = W(0, -1126832308, 998650886, 1029713605, 1045660229)\n\t\t + W(1, -1125245511, 1001090478, -1126242526, -1128346278)\n\t\t + W(2, -1092407662, -1099976035, -1098757312, 1049242330)\n\t\t + W(3, 1052609817, 1049104969, 958956607, -1170516592) + W(4, 1041636256, 1035459839, 1053507448, -1097348797)\n\t\t + W(5, -1097111418, -1099322690, -1116731426, 1009511091)\n\t\t + W(6, 1032452512, -1118647007, -1113994637, 1019901759)\n\t\t + W(7, 1026546307, 1041545965, -1113342195, 1027607012);\n\tsum2 = W(0, -1069228184, -1073602631, 1021776922, 1076866983)\n\t\t + W(1, 1069809281, -1101499289, 1013617559, 1036050969) + W(2, -1099529380, 1043301860, 1054858487, 1044685536)\n\t\t + W(3, 1062109344, -1097491140, -1149319294, -1113127688)\n\t\t + W(4, -1112044089, 1041147606, -1119872164, -1106846135)\n\t\t + W(5, 1042271976, 1035368326, 1025827813, -1115137330)\n\t\t + W(6, -1144476451, -1112019052, 1036271953, 1018899191)\n\t\t + W(7, -1114284680, -1126672913, -1112053703, -1146921887);\n\tWS(-1125906880, 1029353026);\n\tsum1 = W(0, 1052620124, 1040928385, 1053619569, 1034478636) + W(1, -1149501032, 1027228408, 1033816441, -1143379631)\n\t\t + W(2, -1082830235, -1087911853, -1088553290, -1115166792)\n\t\t + W(3, -1104403058, 1046902211, -1140598044, -1115398454)\n\t\t + W(4, 1044570800, 1048894344, 1054767249, 1052323270)\n\t\t + W(5, -1096342700, -1092690897, -1112660402, -1089842615)\n\t\t + W(6, 1033131793, 1031982257, -1118254573, 1037418321) + W(7, 1045103465, 1053685367, 1032758420, 1056771243);\n\tsum2 = W(0, 1052242091, -1105901664, 1041713460, -1098081544)\n\t\t + W(1, -1101414896, -1140318759, -1123485994, -1108472633)\n\t\t + W(2, -1123374674, 1032004261, 1057464262, 1055897675)\n\t\t + W(3, -1108453649, -1099401944, 1039811869, -1092934450)\n\t\t + W(4, -1088438592, -1109896025, -1106721416, 1057898227)\n\t\t + W(5, 1044097375, 1041656473, 1042751001, 1033994653)\n\t\t + W(6, -1109756837, -1117902306, -1106560728, -1101499608)\n\t\t + W(7, -1114554169, 1042131382, -1104786072, 1048148308);\n\tWS(-1080878567, 1068324028);\n\tsum1 = W(0, -1115471279, 1019310859, -1121098697, -1115193805)\n\t\t + W(1, -1153442440, -1104713039, 1023975060, -1094675607)\n\t\t + W(2, -1095139206, -1103458412, -1090917913, -1094785898)\n\t\t + W(3, -1100131090, -1118370765, -1102569730, 1044057356)\n\t\t + W(4, 1057833304, 1049561152, 1058273109, 1054221326) + W(5, 1050583410, 1048985266, 1041261354, 1045920684)\n\t\t + W(6, 1032811018, -1118469827, -1107876783, -1109399058)\n\t\t + W(7, -1121957752, -1109945243, -1125987028, -1144681671);\n\tsum2 = W(0, -1122597644, 1032420914, -1109997244, 1029919127)\n\t\t + W(1, -1129031901, 1025876905, -1121404056, 1025649559)\n\t\t + W(2, 1052263517, -1132353885, -1113437764, -1086124512)\n\t\t + W(3, -1134522929, -1137529969, 1041285329, -1111439550)\n\t\t + W(4, 1084267296, 1077171750, -1076080701, -1066836895)\n\t\t + W(5, -1073829589, -1128728545, -1128683125, -1109934248)\n\t\t + W(6, 1037076324, 1017945885, 1045994672, -1105598049)\n\t\t + W(7, -1115453382, 1027437378, -1112127416, 1032857588);\n\tWS(-1106960696, -1099012034);\n\tsum1 = W(0, -1114528403, -1119077260, -1143558020, -1119877760)\n\t\t + W(1, -1109244232, -1096650748, -1112604445, -1100402892)\n\t\t + W(2, -1099071342, -1099370430, -1089278443, -1086538844)\n\t\t + W(3, 1010994112, 1041376829, 1042854492, 1049345155) + W(4, 1055554285, 1049964157, 1061104081, 1056629915)\n\t\t + W(5, 1049997315, 1042073805, 1031563405, -1123516568)\n\t\t + W(6, -1109121109, -1115766890, -1114965299, -1120868875)\n\t\t + W(7, 1034547527, -1114495407, -1139584324, -1118254096);\n\tsum2 =\n\t\tW(0, -1116593925, 1028908115, 999050165, 1037914955) + W(1, -1106109711, -1105957739, -1123834115, -1113783754)\n\t\t+ W(2, 1027806287, -1136470458, 1039840949, -1122048333)\n\t\t+ W(3, 1057135276, -1105275062, -1096566133, -1105721601) + W(4, 1032648371, 1006654490, 1052059722, 1057985079)\n\t\t+ W(5, -1090440242, -1131926605, 1018741845, -1124260101)\n\t\t+ W(6, 1024756439, -1116529299, -1107372324, -1128153177)\n\t\t+ W(7, -1142966917, -1123338691, 1013415162, 1018182189);\n\tWS(-1103089976, 1059868827);\n\tsum1 = W(0, 1026631887, 1033737723, 1034000797, -1130496915)\n\t\t + W(1, -1106694966, -1105866475, -1106727101, -1098705919)\n\t\t + W(2, -1091300264, -1096562704, -1087537316, -1094386976)\n\t\t + W(3, 1044429902, 1045093007, 1040636078, 1044615672) + W(4, 1056895190, 1050565142, 1059766350, 1053939124)\n\t\t + W(5, -1108577640, -1109922270, -1122075862, -1100982776)\n\t\t + W(6, 1031003956, -1140469197, -1108911023, 1032926090)\n\t\t + W(7, -1120892680, 1034482579, -1136817768, 1045052014);\n\tsum2 =\n\t\tW(0, -1114832682, 1038307608, -1109268272, 1031259614) + W(1, -1136199018, -1118450441, 1025376385, -1125957173)\n\t\t+ W(2, 1044376552, -1101986459, 1025272345, -1112738770) + W(3, 1014008179, 1042085570, -1110075404, 1027010884)\n\t\t+ W(4, 1052671036, -1094811671, -1106762472, 1052706603) + W(5, 1040752903, -1100877636, 1051973899, 1036345951)\n\t\t+ W(6, -1084839384, -1076225566, -1074779618, -1088390497)\n\t\t+ W(7, 1066038403, 1071357616, 1068318141, 1050587817);\n\tWS(-1089897038, 998399462);\n\tsum1 = W(0, -1100326508, -1099771006, -1103969415, 1030998252)\n\t\t + W(1, -1111096702, -1129527451, -1115021151, -1124899748)\n\t\t + W(2, -1114312802, -1109889234, -1092992143, -1098209637)\n\t\t + W(3, -1116385180, -1096464604, -1111889198, -1109224641)\n\t\t + W(4, 1049930251, 1047140918, 1060325312, 1062808044) + W(5, -1128865717, 1048691588, -1137813989, 1043572929)\n\t\t + W(6, -1141222070, -1114407115, -1106384368, 1017922927)\n\t\t + W(7, 1023432554, -1125954964, -1121716413, 1020452535);\n\tsum2 = W(0, -1094975511, -1089233591, -1089977002, 1033778332)\n\t\t + W(1, 1006981461, -1137053176, -1125132764, 979684320) + W(2, -1113696880, 1032844980, 1066397244, 1037917830)\n\t\t + W(3, 1039504138, 1032622380, 1021506052, -1119563165)\n\t\t + W(4, 1023473326, 1036803698, -1129026618, -1104280508)\n\t\t + W(5, 1024702770, -1121975322, 974010432, -1138205260) + W(6, 1029862812, -1117299445, 1025970568, 1031377784)\n\t\t + W(7, -1122944997, 1022461928, -1130740686, 1024270227);\n\tWS(-1096120220, -1099720911);\n\tsum1 = W(0, 1052677544, 1027883172, 1046184634, 1036941212) + W(1, 1037786724, 1039372749, 992842790, 1040590154)\n\t\t + W(2, -1105594052, 1050583742, 1030711656, 1050761182) + W(3, 1044997418, 1051859318, 1041579690, 1052858474)\n\t\t + W(4, -1101878153, -1120505890, -1094174707, -1087347673)\n\t\t + W(5, -1091299260, -1092171165, -1105854769, -1087724293)\n\t\t + W(6, 990296621, 1026529890, 1039246623, 1031039363) + W(7, 1038193547, 1036921611, -1115076484, 1007468831);\n\tsum2 =\n\t\tW(0, 1040381409, -1131846701, 1030695069, 1015259161) + W(1, 1026868853, -1164136976, -1121164685, -1109936403)\n\t\t+ W(2, 1023777345, -1095435966, -1111411494, -1085163747)\n\t\t+ W(3, -1100600319, 1052695808, 1041440525, 1051545155)\n\t\t+ W(4, -1110031849, -1146822820, -1089001391, -1074171332)\n\t\t+ W(5, -1078760233, 1048168469, 1074132102, 1072577306) + W(6, 1022623295, -1096899181, 1049343346, -1107180310)\n\t\t+ W(7, 1043071461, 1020495459, 1017314953, 1050115198);\n\tWS(-1080112807, -1111145054);\n\tsum1 = W(0, -1103297132, -1106341774, -1098278655, 1024154699)\n\t\t + W(1, 1037514093, 1034961350, -1125780682, -1109009483) + W(2, 1049824404, 1049617192, 1059552348, 1031972225)\n\t\t + W(3, -1085661228, -1097823136, -1114326813, -1119831648)\n\t\t + W(4, -1133975251, -1122989109, -1086286580, -1137351813)\n\t\t + W(5, 1056970252, 992708574, 1021582000, 1040424089) + W(6, 1026400021, 1042898005, 1041608840, -1145221295)\n\t\t + W(7, -1102084285, 1041904442, 1038246926, 1042525799);\n\tsum2 = W(0, 1041258750, -1109734283, -1123542769, -1113561957)\n\t\t + W(1, -1110564237, 1026811493, -1130694514, 1024057869)\n\t\t + W(2, 989910477, -1100922013, -1096844113, 1051742866)\n\t\t + W(3, -1100235579, -1105813951, -1151284621, -1136706867)\n\t\t + W(4, -1134607603, 1016064722, 1041392492, 1057819912)\n\t\t + W(5, 1047439582, -1113868277, -1118083589, -1114600003)\n\t\t + W(6, -1109794979, 1041809078, -1126381362, 982123162)\n\t\t + W(7, -1119465765, 1026735929, 1019553626, -1114678252);\n\tWS(1043409720, -1105036943);\n\tsum1 = W(0, 1040191749, 1033970558, 1042494496, 1046767380) + W(1, 972615552, 1032778168, 1032217109, 1032356247)\n\t\t + W(2, -1096303173, -1095924673, -1093807736, -1092831585)\n\t\t + W(3, -1096756208, -1126846855, -1115229280, -1098580285)\n\t\t + W(4, -1115184605, 1041748910, 1044442592, 1042876074) + W(5, -1140612185, 1018241414, 1027878365, 1034858676)\n\t\t + W(6, 1041655059, 1041917006, -1160531625, 1039311757) + W(7, 1020654492, 1043700571, 1034107952, 1036396440);\n\tsum2 = W(0, 1027808259, 1010119787, -1111510504, -1113418759)\n\t\t + W(1, 1032132185, -1121052855, 1014515195, 1010692603)\n\t\t + W(2, -1139047739, 1043340308, -1106790738, -1096910874)\n\t\t + W(3, 1040059331, -1115460243, 1017581734, -1120741339) + W(4, 986751832, 1026247831, 1065364148, 1040723354)\n\t\t + W(5, 1038861011, -1113647147, 1041604470, -1135975307)\n\t\t + W(6, -1095774205, -1093511024, -1089533357, 1053173071)\n\t\t + W(7, -1106558855, 1027584935, -1121443175, 1014681515);\n\tWS(1035857520, 1029952289);\n\tsum1 = W(0, -1143077795, -1105351783, -1113811952, -1106526780)\n\t\t + W(1, 1035289215, 999420801, -1129002434, -1113970285) + W(2, 1037051011, 1029971495, 1049064844, 1035603988)\n\t\t + W(3, -1083894414, -1098557596, -1111645039, -1130790920)\n\t\t + W(4, -1110400621, -1106469910, -1094483622, 1058276716)\n\t\t + W(5, 1056346487, 1050633420, 1042325343, 1026109447) + W(6, -1121149466, 1043652126, 1027875988, 1035104701)\n\t\t + W(7, -1114346217, -1123554317, -1130799743, 1025377311);\n\tsum2 = W(0, -1118517607, -1101077931, 1029148161, -1087996420)\n\t\t + W(1, 1047526016, -1108756119, 1038718292, 1024464693) + W(2, 1026484093, 1046485772, -1098019518, 1071267691)\n\t\t + W(3, -1082674625, 1032470282, -1106613565, -1113199029)\n\t\t + W(4, 1039465846, 1030900361, 1048118782, 1064954318)\n\t\t + W(5, -1084489705, -1118487613, -1112021711, -1120012731)\n\t\t + W(6, 1008581907, -1114630284, -1106945018, -1097625455)\n\t\t + W(7, -1156379726, 1024110641, 1020048570, 1036291722);\n\tWS(1058189134, 1034857672);\n\tsum1 =\n\t\tW(0, -1171748679, -1105475825, -1097172873, -1108837708)\n\t\t+ W(1, 1038034707, -1131134898, -1113151849, -1119273967) + W(2, 1031241360, 1044072484, 1057114388, 1051374554)\n\t\t+ W(3, -1083662360, -1099379283, -1121036423, 1018101850)\n\t\t+ W(4, -1100969760, -1094075536, -1082247827, 1060030327) + W(5, 1058651386, 1046921459, 1041721673, 1036514264)\n\t\t+ W(6, 987174985, 1045893176, 1042860595, 1031954257) + W(7, -1120638978, -1137288661, 1037681908, 1029972391);\n\tsum2 = W(0, 1003810984, 1036204547, -1101998989, 1041029203)\n\t\t + W(1, -1098215637, 1044393168, -1110527635, 1027560485)\n\t\t + W(2, 1020569783, -1114489126, -1121260135, 1052640914)\n\t\t + W(3, 1059150102, -1098121773, 1037147118, -1110248773)\n\t\t + W(4, -1128982694, -1099380876, -1101918458, 1059611184)\n\t\t + W(5, 1040381797, -1094102036, 1028175839, -1113935142)\n\t\t + W(6, 1043745048, -1104004872, -1104165612, -1121067579)\n\t\t + W(7, -1100369008, 1032515174, -1114899975, 1000033398);\n\tWS(-1107450480, 1040804833);\n\tsum1 = W(0, 1040192716, 1022226221, 1002013395, -1117682794) + W(1, 1001040843, 1000424795, -1120982404, 1025306833)\n\t\t + W(2, 1040473489, 1047969017, 1044185574, 1060667554) + W(3, 1057909434, 1049088596, 1038016429, 1042416864)\n\t\t + W(4, -1095196747, -1098407451, -1087290490, -1089168888)\n\t\t + W(5, -1111951852, -1119291421, 1031577591, -1112956481)\n\t\t + W(6, -1124855402, 1020416041, -1160070647, 1045737613)\n\t\t + W(7, -1101676720, -1103624738, -1104451167, -1115902938);\n\tsum2 =\n\t\tW(0, 1014727333, -1117243126, 1029406572, 1027900147) + W(1, -1112527674, -1114664521, -1111634336, -1107116047)\n\t\t+ W(2, -1124633329, -1107065949, 1041729284, -1094200388)\n\t\t+ W(3, -1104959017, 1040214496, 1005029260, 1049039902) + W(4, 1026257754, -1111801245, -1084100906, 1052541581)\n\t\t+ W(5, 1070744988, -1111707080, -1127513012, -1107038609)\n\t\t+ W(6, -1111611661, -1136702760, -1103677442, 1050798725)\n\t\t+ W(7, -1105828213, -1111536822, -1106506739, -1140667375);\n\tWS(-1113867888, 1064515135);\n\tsum1 = W(0, -1113562537, -1107046062, -1103978495, -1098739202)\n\t\t + W(1, -1122423580, 1019693149, -1116789880, 1020558520) + W(2, 1048061265, 1043460993, 1060048584, 1062873548)\n\t\t + W(3, -1119786749, 1023528257, -1106657727, -1137576074)\n\t\t + W(4, 1011269086, -1098944190, -1107431310, 1045822761)\n\t\t + W(5, 1025265092, -1112998912, -1142662356, -1104660585)\n\t\t + W(6, -1105945126, -1148623547, -1111558073, -1114838028)\n\t\t + W(7, -1101841139, -1117915947, -1106868487, -1122252061);\n\tsum2 =\n\t\tW(0, -1145158406, 1012385731, 1016118130, 1024197601) + W(1, -1112179804, -1119519161, -1127326042, -1113792718)\n\t\t+ W(2, 1022878354, -1129472106, 1044961455, 1049544336)\n\t\t+ W(3, 1030346877, -1131221354, -1095482557, -1093377057)\n\t\t+ W(4, -1111624996, 1015658802, 1040055751, 1057430996) + W(5, -1114498280, 1020564842, -1112131584, 1019749938)\n\t\t+ W(6, 1010204019, -1123973089, -1157676569, 1022031298)\n\t\t+ W(7, -1124728962, 1023003938, -1121117277, -1141925830);\n\tWS(1051333020, -1087054195);\n\tsum1 = W(0, -1112042433, 1019002067, -1115058903, 1046618143)\n\t\t + W(1, -1107874438, -1148774132, 1036768028, -1154881470)\n\t\t + W(2, -1104387605, -1096771599, -1102529947, -1093976551)\n\t\t + W(3, -1089735051, -1129150690, -1101876091, -1098135714)\n\t\t + W(4, 1052246829, 1048899277, 1054136106, 1044227957) + W(5, 1060328029, 1046377228, 1045160291, 1045432325)\n\t\t + W(6, -1113527444, -1098301717, -1095193948, 1044013586)\n\t\t + W(7, -1107288943, 1038700845, 1024370318, 1019966234);\n\tsum2 = W(0, -1114066012, 1029900262, -1114806697, -1110038644)\n\t\t + W(1, 1036646832, -1110070018, 1020625547, 987867800) + W(2, 1041392892, -1112610934, 1041587346, 1025557898)\n\t\t + W(3, 1055783298, -1102485451, 988088600, 1039502616) + W(4, 1044719218, 1046575198, 1050162797, 1055420600)\n\t\t + W(5, -1099287148, -1100701871, 1033323822, -1119304428)\n\t\t + W(6, -1097547793, -1095644935, -1102972970, -1095936036)\n\t\t + W(7, 1028020818, -1113902766, -1135974783, 1018696751);\n\tWS(-1120103648, -1090070191);\n\tsum1 =\n\t\tW(0, -1117418940, 1024592611, 1040968250, 1049918615) + W(1, 1034410595, 1035134604, -1119948353, -1144523437)\n\t\t+ W(2, 1049030490, 1050801054, -1111205267, -1116228463) + W(3, 1050512309, -1102511675, 1034763283, 1039656998)\n\t\t+ W(4, -1112262737, -1094705236, 1042055990, -1085341341)\n\t\t+ W(5, -1106227665, 1036298997, -1138448657, -1110564136)\n\t\t+ W(6, -1114427969, 1032013281, -1110419822, 1047944497)\n\t\t+ W(7, -1132367051, 1025392341, -1111046724, -1120201127);\n\tsum2 = W(0, -1122606938, -1141997982, 1027805544, -1120462650)\n\t\t + W(1, -1100560083, -1105726471, 1025575588, -1113668318)\n\t\t + W(2, 1046354401, 1040228902, -1143835982, 1061896257)\n\t\t + W(3, -1080731069, -1098049024, 1026943708, 1032253740)\n\t\t + W(4, -1124762815, -1102583710, 1052785838, 1059397472)\n\t\t + W(5, -1120768779, -1126645315, 1011421951, -1122685018)\n\t\t + W(6, -1118515993, 1036845124, -1106443071, 1043676745)\n\t\t + W(7, 995709275, -1128858827, -1112152255, -1127110207);\n\tWS(1060158670, 1068766623);\n\tsum1 =\n\t\tW(0, -1116432453, -1131098839, -1099753724, 1034945056) + W(1, -1122123599, 1040823512, 1040184285, 1050332416)\n\t\t+ W(2, 1056712636, 1049784895, 1057908127, 1044163070) + W(3, 1028198895, -1122504371, -1123329903, -1096645803)\n\t\t+ W(4, -1087151539, -1102593034, -1089291740, -1094800699)\n\t\t+ W(5, 1036808107, -1120242995, -1127465369, -1132187055) + W(6, 1040295867, 1033948341, 1031077093, 1027113355)\n\t\t+ W(7, -1132674679, -1117547229, 1040274980, -1137741501);\n\tsum2 = W(0, 1036379663, -1108907739, 1070189048, 1073213180)\n\t\t + W(1, 1065321765, -1076673488, -1079893128, -1072585926)\n\t\t + W(2, -1098232449, 1058983203, 1016986873, 1047923452) + W(3, 1033582270, 1031365639, 1038048757, -1107019906)\n\t\t + W(4, -1128107780, 1035811659, 1040144345, -1105399966)\n\t\t + W(5, -1110681209, 1039880527, -1116001167, 1018297481)\n\t\t + W(6, -1120677803, -1120240179, 1029686139, -1109097268)\n\t\t + W(7, 1041308319, -1109042515, 1034493417, -1131123922);\n\tWS(-1112459888, 1031046963);\n\tsum1 = W(0, -1112719265, -1129483154, -1103727283, -1091575740)\n\t\t + W(1, -1104335643, -1155155940, -1114094348, -1105426861)\n\t\t + W(2, -1128634346, -1120462421, -1112785958, 1056781779)\n\t\t + W(3, -1153409228, -1108013960, -1118230989, 1027667442)\n\t\t + W(4, 1043326546, -1103778738, 1050524372, 1067939282)\n\t\t + W(5, 1048587330, -1132710977, -1109505653, 1036777787)\n\t\t + W(6, -1115081924, -1114915140, -1104237825, -1096588493)\n\t\t + W(7, -1108534894, -1114726045, 991235804, -1111746006);\n\tsum2 = W(0, -1119086167, 1013020612, -1141008560, -1108719150)\n\t\t + W(1, 1023891147, -1145112744, 1018251990, -1116478859)\n\t\t + W(2, 1037241732, -1129818230, 1029187991, -1074141953)\n\t\t + W(3, 1019083994, -1124211508, -1122886966, 1027168441)\n\t\t + W(4, -1114652243, 1028260797, -1112264831, 1072760747)\n\t\t + W(5, 1042535682, -1131878972, 1037493286, -1129254230)\n\t\t + W(6, -1131518324, -1115730540, 1036245214, 1034705438)\n\t\t + W(7, -1119172530, -1133917220, -1114007324, 1018465006);\n\tWS(-1086783566, -1086791567);\n\tsum1 = W(0, -1115195632, -1153026662, -1134496297, -1108787789)\n\t\t + W(1, -1119803561, -1145121243, -1131708777, -1110064394)\n\t\t + W(2, -1095708330, -1093442522, -1098161001, 1044632085)\n\t\t + W(3, -1091375169, -1107384199, -1100078210, -1104664012)\n\t\t + W(4, -1123676804, 1018199561, 1037878573, 1064261167) + W(5, 1057417647, 1052226946, 1046948682, 1047330733)\n\t\t + W(6, 1041725033, -1121101892, 1034570216, -1103584185)\n\t\t + W(7, -1108866704, -1122033784, -1117964907, 1022321300);\n\tsum2 = W(0, 1031515378, -1121810184, 1010081392, -1119765868)\n\t\t + W(1, 1035546479, -1106495935, 1028378344, 1003402623)\n\t\t + W(2, -1077397139, -1079753374, 1044674665, 1073378801)\n\t\t + W(3, 1056367001, -1109376902, 1035615024, -1118889676)\n\t\t + W(4, -1134939312, -1097085111, 1052841311, 1007836336) + W(5, 1044809025, -1118570548, 992033726, 1010750288)\n\t\t + W(6, -1112896962, 1035985281, -1105060263, 1031953140)\n\t\t + W(7, 1022446080, 1031289566, 1032016077, -1150317246);\n\tWS(-1096711324, -1080143969);\n\tsum1 = W(0, -1135181951, 1025399430, 1033906501, 1041786535)\n\t\t + W(1, -1133559462, 1003671004, -1123695637, -1105366874)\n\t\t + W(2, -1095339398, -1094144146, -1093853897, -1089314149)\n\t\t + W(3, -1089126233, -1110956839, -1129083412, -1113909272)\n\t\t + W(4, 1050582337, 1049483953, 1045129706, 1046728732) + W(5, 1045641984, 1051092970, 1049638101, 1057307443)\n\t\t + W(6, 1026786373, -1123204644, 1006467326, 1031608549) + W(7, -1135165794, 1017185520, 996324016, 1009923752);\n\tsum2 = W(0, 1023911567, 1004932796, -1119124867, 1022775023) + W(1, 1011639102, 1036397588, 999444348, -1106309084)\n\t\t + W(2, -1108118447, -1134375038, 1035251904, 1037995724)\n\t\t + W(3, 1050162042, 1037707684, -1111062570, -1101285996)\n\t\t + W(4, 1044892126, -1138359022, 1063133445, 1074655410)\n\t\t + W(5, 1070062472, -1083132698, -1073510095, -1073687480)\n\t\t + W(6, -1112738860, 1020475455, -1102926770, 1047698054)\n\t\t + W(7, -1113839430, -1117927031, 1017195567, 1041743674);\n\tWS(-1089880270, 1068594400);\n\tsum1 =\n\t\tW(0, -1114467040, 1023170830, 1036273894, -1107800974) + W(1, 1029867434, -1106779367, 1024593089, -1110449433)\n\t\t+ W(2, -1104513741, -1091458130, 1034367029, -1100997781)\n\t\t+ W(3, -1095286649, 1047811540, -1096228817, -1109179032) + W(4, 1050219169, 1042545281, 1048674674, 1042739212)\n\t\t+ W(5, 1053624831, 1034908007, 1034674708, 1049808694) + W(6, -1118490053, -1120682309, 1031296832, -1110241363)\n\t\t+ W(7, 1034289100, -1107012174, 1021221591, -1126204757);\n\tsum2 =\n\t\tW(0, 1030004067, -1117028113, -1105887481, -1066126465)\n\t\t+ W(1, -1104777348, -1122550707, -1130918117, 1023720579)\n\t\t+ W(2, -1133064657, -1134091777, 1045929484, 1081917443) + W(3, 1043726141, 1028310407, 1016764395, -1116064873)\n\t\t+ W(4, 1024174065, -1113615539, 1032698350, -1097201480) + W(5, 1033613382, -1107697461, 1029778305, 1018371831)\n\t\t+ W(6, -1119836251, 1025775761, -1118489229, 1041573100)\n\t\t+ W(7, -1124268877, 1030764051, -1116797441, 1018350967);\n\tWS(1067475431, -1126058166);\n\tsum1 =\n\t\tW(0, -1108052732, 1043040440, 1048922396, -1097574342) + W(1, -1119673025, -1101774749, 1019400344, 1007801026)\n\t\t+ W(2, -1097851361, -1108210069, -1084429932, 1055911149)\n\t\t+ W(3, 1041902328, 1035827603, -1115594513, -1107003538) + W(4, 1049362324, 1048929252, 1054104112, 1047147106)\n\t\t+ W(5, -1085779789, 1049622021, 1019477630, 1037086373) + W(6, 1040199303, -1109622414, 1041203782, -1104274751)\n\t\t+ W(7, 1047880876, -1116198608, -1107876353, 1036701569);\n\tsum2 =\n\t\tW(0, 1013753738, -1113150555, 1015248850, 1042650722) + W(1, 1040818978, -1105652199, 1033430289, -1120377801)\n\t\t+ W(2, 1020731454, 1046742995, 1045156685, -1104352239) + W(3, -1089864705, 1045331461, -1109224259, 1016214593)\n\t\t+ W(4, -1120697178, 1034035253, -1094710566, -1128318417)\n\t\t+ W(5, 1045040370, 1025091411, -1106535436, 1019751894) + W(6, 1009873360, -1099358283, 1039470065, 1046693145)\n\t\t+ W(7, 1036008061, 1030627793, 1017876415, -1132110931);\n\tWS(1060496974, -1099362699);\n\tsum1 = W(0, 1054706808, 1036662868, 1045895019, 1033303646) + W(1, 1044095763, -1130190200, 1035564779, 1040746168)\n\t\t + W(2, -1109706041, 1041317773, 1051554925, 1049334366) + W(3, 1051166813, 1053590462, 1049285205, 1055551482)\n\t\t + W(4, -1098091909, -1123237413, -1091928498, -1083798889)\n\t\t + W(5, -1095315343, -1087007295, -1097088265, -1094550458)\n\t\t + W(6, -1129324363, 1015757258, 1021341985, -1112852963)\n\t\t + W(7, 1041804248, -1127492145, 1039262630, -1114905285);\n\tsum2 = W(0, -1073385920, -1084887580, -1083140914, -1081800202)\n\t\t + W(1, -1085954594, 1037413129, -1096433065, 1054210787) + W(2, 1077926840, 1058818874, 1060159151, 1074845707)\n\t\t + W(3, 1061906872, -1084431515, -1126824848, -1087315344)\n\t\t + W(4, 1032559783, -1089669880, 1045764296, 1059775011)\n\t\t + W(5, -1103860568, -1094536545, -1133232881, -1099186518)\n\t\t + W(6, -1094451238, -1121878040, -1173171215, -1120435570)\n\t\t + W(7, -1115590029, 1053315192, -1107838893, 1052978812);\n\tWS(-1078369703, 1041267413);\n\tsum1 = W(0, 1024386586, -1098405416, 1044040033, -1098286219)\n\t\t + W(1, -1130684104, 1045750173, -1098338270, 1041584973)\n\t\t + W(2, 1041630887, -1112635974, -1132435208, 1041292515)\n\t\t + W(3, -1091497929, 1016159377, -1139597330, -1101611546)\n\t\t + W(4, -1102607056, 1051293608, -1094040968, 1052507157)\n\t\t + W(5, 1056853585, -1105775474, 1049412460, 1026100205) + W(6, 1016693023, 1018393854, 1046099151, -1095618428)\n\t\t + W(7, 1018959206, -1117949682, -1118540325, 1040982949);\n\tsum2 = W(0, 1035615459, 1028814353, 1062855981, 1052250964) + W(1, 1056109526, -1106019250, 1048995011, -1115640692)\n\t\t + W(2, -1097925659, 1038714809, -1077657685, -1101970047)\n\t\t + W(3, -1098468896, -1114182260, -1104046747, -1130122971)\n\t\t + W(4, 1043665288, 1033337220, 1051048913, -1113114333)\n\t\t + W(5, -1085664062, 1040975429, -1109605260, 1034778788)\n\t\t + W(6, 1020457849, -1103657321, -1109823715, 1058024935)\n\t\t + W(7, 1056999181, -1105846491, 1042595027, -1112374505);\n\tWS(1049151900, -1114127847);\n\tsum1 = W(0, 1050216581, 1000015204, -1136218178, 1023136961)\n\t\t + W(1, -1130455775, -1133465094, -1160090192, 1035991733)\n\t\t + W(2, 1044969414, 1047621718, 1057314961, 1055877843) + W(3, 1054358666, 1052966059, 1045850836, 1052491071)\n\t\t + W(4, -1106856243, -1112471205, -1091938023, -1092033343)\n\t\t + W(5, -1099719178, -1089783713, -1099053307, -1087984664)\n\t\t + W(6, -1099359923, -1148711507, -1133921207, -1112054390)\n\t\t + W(7, 1034273823, -1122838974, 1019980258, -1112322824);\n\tsum2 =\n\t\tW(0, -1105478410, 1039552519, -1131405058, -1099466970) + W(1, 1049027924, -1115050596, -1129231446, 1049583286)\n\t\t+ W(2, 1011113448, 1050864081, -1125310098, 1043215106) + W(3, 1034334973, -1095883745, 1036178144, -1088635155)\n\t\t+ W(4, 1068049752, -1103020148, 1066695202, 1074596924)\n\t\t+ W(5, 1067601936, -1084539788, -1075514015, -1074115054)\n\t\t+ W(6, -1082501551, 1059003564, -1098156272, 1039344435)\n\t\t+ W(7, -1099880092, -1107282542, -1097076855, 1042018058);\n\tWS(-1081332839, -1093454830);\n\tsum1 = W(0, -1109709318, -1104916884, -1108177419, -1117212646)\n\t\t + W(1, -1119705461, 1032417267, -1118748528, 987327371) + W(2, 1035356975, 1037116623, -1125155242, 1030327966)\n\t\t + W(3, 1050241163, -1103907222, 1046095669, 1033262333)\n\t\t + W(4, 1039420520, -1122158672, 1053028347, -1104761999)\n\t\t + W(5, 1032136206, -1115200780, -1115609017, 1029855614)\n\t\t + W(6, -1111308088, 1014687039, -1112931654, 1020526050)\n\t\t + W(7, -1119448076, -1112611266, -1136487898, -1104533373);\n\tsum2 =\n\t\tW(0, 1013207527, -1127355075, -1103159789, 1040955478) + W(1, 1008876024, -1116686760, 1035764738, -1154118338)\n\t\t+ W(2, -1118344664, 1028266047, 1043690369, 1051132935)\n\t\t+ W(3, -1108842627, 1041402295, -1105537330, -1128237045)\n\t\t+ W(4, -1124997045, -1117884424, -1116887196, 1047094008)\n\t\t+ W(5, 1057384051, -1100609336, -1098518151, -1089828796) + W(6, 1036829905, 1016171285, 1024917624, 1041601336)\n\t\t+ W(7, -1127506713, 1033786361, -1114313206, -1102385561);\n\tWS(1063446990, 1030048893);\n\tsum1 = W(0, -1131562670, -1099483503, -1106193120, -1102405700)\n\t\t + W(1, 1021119810, -1113568905, 1009340592, 1030255032) + W(2, 1043069042, 1049571969, 1061428532, 1053095529)\n\t\t + W(3, -1115069793, -1119868742, 1027160065, 1043118346)\n\t\t + W(4, -1108681470, -1106599551, -1097709592, 1046689338)\n\t\t + W(5, 1029025472, 1006738196, -1120287391, -1111789333)\n\t\t + W(6, -1108650254, -1106453175, 1008661917, -1102088711)\n\t\t + W(7, -1123233168, -1104754348, -1136963210, -1114502129);\n\tsum2 =\n\t\tW(0, 1012371361, -1149491589, 1023756477, -1165255819) + W(1, -1111467932, 1019335917, -1140694601, 1010513313)\n\t\t+ W(2, 1017109065, -1115161102, 1012418345, -1111308586) + W(3, 1015942947, -1106016138, 1015823021, 1026481588)\n\t\t+ W(4, -1110016822, -1109821790, 1060485172, 1031379047)\n\t\t+ W(5, 1046805034, -1114576028, 1024897044, -1114618076)\n\t\t+ W(6, -1103671135, -1097972516, -1094449842, 1049769129)\n\t\t+ W(7, 999148403, 1022790203, 1032463998, -1146831635);\n\tWS(1060385486, 1040268319);\n\tsum1 = W(0, -1115333181, -1113839600, 1026945989, 1041834949)\n\t\t + W(1, -1100015113, 1010458454, -1113704543, -1110169699)\n\t\t + W(2, -1105770459, -1104706211, -1085502934, -1112644646)\n\t\t + W(3, -1102865873, -1112283012, -1108020290, -1115522389)\n\t\t + W(4, 1048230464, -1122113023, 1051932092, 1065603891)\n\t\t + W(5, -1105250533, 1054415097, -1122402466, 1046973419) + W(6, 1022495614, -1115044751, 997701279, 1044329112)\n\t\t + W(7, 1038196649, -1113673817, -1105082025, -1115640050);\n\tsum2 = W(0, -1115664423, -1122287706, 1044568139, -1099350461)\n\t\t + W(1, -1102715015, 1042022920, 1031291077, 1032474264) + W(2, 1041813775, 1041645390, -1087138046, 1067461852)\n\t\t + W(3, -1116572542, -1109622665, -1113357449, -1110133469)\n\t\t + W(4, -1142717933, -1094011677, -1124627987, 1027339570)\n\t\t + W(5, 1045144111, 1054026149, -1122353792, 1047364150)\n\t\t + W(6, -1120925434, -1119842210, -1120985148, -1113918825)\n\t\t + W(7, -1100833175, -1101147879, -1112018489, -1109170005);\n\tWS(1049043868, 1050086952);\n\tsum1 =\n\t\tW(0, -1127858130, 1025810768, 1034666762, 989092984) + W(1, -1115481017, -1119959429, 1012364567, -1097661520)\n\t\t+ W(2, -1091279607, -1101354119, -1089232423, -1092016019)\n\t\t+ W(3, -1089729669, -1104525366, -1121438163, -1160888088)\n\t\t+ W(4, 1054362490, 1044465651, 1050465752, 1058690160) + W(5, 1053482909, 1051092259, 1019953121, 1051219071)\n\t\t+ W(6, 1028884238, 1022883995, 1032068165, 1005443958) + W(7, 1007092039, -1149438996, -1137072337, 1017307814);\n\tsum2 = W(0, 1030282550, 1012065197, 1049708534, -1101566471) + W(1, 1043525707, 1038111746, 1040589253, -1106531005)\n\t\t + W(2, -1099759289, 1050936278, 1018991152, 1050588571)\n\t\t + W(3, -1112383125, -1121285468, 1039884984, -1113841779)\n\t\t + W(4, 1070065566, 1068820850, 1068572253, 1075164582) + W(5, 1046261639, 1053555382, 1040055978, 1058828770)\n\t\t + W(6, -1078832473, -1076346523, -1075628240, -1072955990)\n\t\t + W(7, -1093459475, -1088795804, -1099780818, -1090423367);\n\tWS(-1083655502, 1074535575);\n\tsum1 =\n\t\tW(0, 973651072, 1028862937, 1029517469, -1111330742) + W(1, 1043404639, -1105397947, -1129726574, -1099887737)\n\t\t+ W(2, -1100106921, -1096173461, -1088250868, -1101351113)\n\t\t+ W(3, -1092528244, 1034877328, -1113904430, -1118418050) + W(4, 1049212555, 1052529147, 1057957824, 1060855844)\n\t\t+ W(5, 1050267538, -1104065896, 1041335934, 1047916353) + W(6, -1122472503, 996549482, -1111380529, -1125410415)\n\t\t+ W(7, -1109626381, -1122247818, -1108333759, 1037233742);\n\tsum2 = W(0, 1037582341, 1032149251, -1135487115, -1107247151)\n\t\t + W(1, 1053968825, -1096732175, 1034930229, -1094249638)\n\t\t + W(2, -1116649305, -1112916551, 1044443302, -1117703407)\n\t\t + W(3, 1049963138, 1042101117, 1046616621, -1127010106) + W(4, -1107051108, 1041643977, 1030763641, 1053360182)\n\t\t + W(5, -1087331905, -1089009482, -1110671517, 1059951262)\n\t\t + W(6, 1040538112, -1112067691, 1036263743, -1115814520)\n\t\t + W(7, 1035849297, -1104153316, -1104877620, -1116847106);\n\tWS(-1132786560, 1056578758);\n\tsum1 = W(0, 1031072232, 1019453021, -1112153353, -1127115205)\n\t\t + W(1, -1153314582, -1105591705, 986346381, 1024604121) + W(2, 1043718831, 1050053971, 1057505465, 1049535379)\n\t\t + W(3, 1052394474, 1045418390, 1044283028, 1048806335)\n\t\t + W(4, -1098888378, -1104586611, -1090760605, -1081773448)\n\t\t + W(5, -1106021324, -1120283669, 1036365944, -1103287167)\n\t\t + W(6, -1123786893, 1030360908, -1123598824, 1035671447)\n\t\t + W(7, 1044649456, -1105554848, 1033186457, -1108912601);\n\tsum2 =\n\t\tW(0, 1040658557, -1106354313, 1027144364, -1103628435) + W(1, -1123462592, -1130705048, -1126068784, 1016031184)\n\t\t+ W(2, 1011638864, 1020064744, 1049840877, 1050147177)\n\t\t+ W(3, -1117174472, -1105120318, -1113970774, -1135769248)\n\t\t+ W(4, 1041865287, -1103147627, 1026998340, 1053587315) + W(5, -1118058864, 1036775410, -1104140895, 1030416564)\n\t\t+ W(6, -1109113498, 1033931950, -1120927100, -1102211113)\n\t\t+ W(7, 1033328738, -1101351534, 1028877580, -1112076066);\n\tWS(1062711758, -1109562142);\n\tsum1 = W(0, -1107075140, -1125545776, -1121788380, -1112684886)\n\t\t + W(1, -1128625782, -1102890883, -1129119788, -1102110160)\n\t\t + W(2, -1100622401, -1104747337, -1103229831, -1083301774)\n\t\t + W(3, 1050510715, -1097610180, -1109077454, 1030737729) + W(4, 1053288051, 1049612355, 1059638178, 1048337697)\n\t\t + W(5, 1052952654, 1051307580, 1041285742, 1049115768) + W(6, 1017596397, 1007433175, -1120034657, -1098025711)\n\t\t + W(7, -1112854653, -1108240645, 1022176121, 1020667959);\n\tsum2 =\n\t\tW(0, 1022257834, 1033804876, 1033963400, -1113268759) + W(1, -1123922685, 1029999681, 1015463858, -1125618402)\n\t\t+ W(2, 977550902, -1105772859, -1098748483, 1063293804) + W(3, -1090033704, 1051039483, -1104977553, 1022914778)\n\t\t+ W(4, -1113927342, 1042844173, -1096777339, 1059312088) + W(5, -1134320563, 1037687330, 1024487701, 1004875175)\n\t\t+ W(6, 1036504102, -1107093105, 1028160469, -1089861840)\n\t\t+ W(7, -1101525036, 1017532722, -1122996995, -1116068477);\n\tWS(1046002488, -1083997249);\n\tsum1 = W(0, -1116203964, 1044431961, 1041235242, 1046371486)\n\t\t + W(1, -1106267745, -1117705943, -1122870401, -1109240562)\n\t\t + W(2, -1099156844, 1028498222, -1096363997, -1079124621)\n\t\t + W(3, -1088685662, -1103556299, 999993136, -1106798659) + W(4, 1050076828, 1049400252, 1050263757, 1020370202)\n\t\t + W(5, 1048790666, 1053355933, 1034829570, 1037276039) + W(6, 1025075217, 1035032656, 1032516798, 1050189128)\n\t\t + W(7, 1042510329, 1039724554, 1027729159, 1037249299);\n\tsum2 = W(0, -1094982381, 1024745423, -1097113645, 1017043870)\n\t\t + W(1, 1052555320, -1107563793, 1049262968, -1118735987)\n\t\t + W(2, 1041875660, -1091311273, 1042706326, -1148119319)\n\t\t + W(3, -1098101314, 1010824956, -1094774489, 1030619863) + W(4, 1017839086, 1044409386, 974632891, 1061393923)\n\t\t + W(5, 1043955676, -1098402228, 1042935118, -1094515595)\n\t\t + W(6, 1045890174, -1107764806, 1048260200, -1118443235)\n\t\t + W(7, -1097368628, 1041238578, -1116185663, 1042214090);\n\tWS(-1083255246, -1075588436);\n\tsum1 = W(0, -1154522904, -1106371438, -1105464695, 1036086422)\n\t\t + W(1, 1023783355, -1127243930, 1030176790, 1031412139) + W(2, 1026375684, 1036249778, 1056687627, -1097055709)\n\t\t + W(3, -1088556578, -1108055408, -1105944807, -1123388097)\n\t\t + W(4, -1099839750, -1113752075, -1092436626, 1050924256)\n\t\t + W(5, 1056650964, 1045926824, 1039385437, 1041066449) + W(6, 1037990411, -1119606102, 1043935324, 1036476796)\n\t\t + W(7, -1111337285, -1110940389, -1124332025, 1021333175);\n\tsum2 =\n\t\tW(0, -1117330831, 1023708058, -1133288218, -1122435213) + W(1, -1139180683, 1020252429, 1025188082, -1109968059)\n\t\t+ W(2, 1032531181, -1114369361, 1017487862, 1047518334) + W(3, -1122916014, 1027012545, -1103557501, 1046855474)\n\t\t+ W(4, 1043756688, 1031926890, -1104593512, 1043258354) + W(5, -1096895795, 1049767697, 1019544307, -1112657711)\n\t\t+ W(6, 1060766869, 1067300065, -1105945514, -1075696003)\n\t\t+ W(7, -1102393264, -1106946489, 1020047431, -1113285900);\n\tWS(1056055196, 1023945849);\n\tsum1 = W(0, -1104545849, -1139517988, -1101013315, -1136100212)\n\t\t + W(1, -1148373856, 1013350648, -1120654743, -1108930702)\n\t\t + W(2, 1036175954, -1138851412, 1048468083, -1097789539)\n\t\t + W(3, -1096999890, -1097071058, 995622088, -1128233700) + W(4, 1032040419, 1009002268, 1040659763, 1059870683)\n\t\t + W(5, 1039368714, 1053644410, -1122818538, 1033002810)\n\t\t + W(6, -1111539988, 1026875367, -1104005681, -1112873620)\n\t\t + W(7, -1135793772, -1132670698, 1028030253, -1133516850);\n\tsum2 =\n\t\tW(0, 1033182461, -1135790885, 1036058972, -1145806187) + W(1, 1026470367, -1125994579, -1123856921, -1152817846)\n\t\t+ W(2, -1110992702, 1041801313, -1115959119, -1083556559) + W(3, 1047402951, 1026458945, 1021989349, 1029289545)\n\t\t+ W(4, 1011638125, 976542168, -1106760241, -1068720208) + W(5, 1080067579, 1043021822, -1118809257, 1027196491)\n\t\t+ W(6, -1116812221, -1135785781, 1013579453, 1034110873)\n\t\t+ W(7, 1048786168, -1124564059, -1115658442, -1110636256);\n\tWS(1047050040, 1036867972);\n\tsum1 = W(0, 1031952202, 1040033213, 1049413776, 1052329098) + W(1, -1134253939, 1023712847, -1129317744, 1023414180)\n\t\t + W(2, 1041031945, 1050476745, 1016870010, 1054273441) + W(3, 1041748879, 1035493153, 1041656495, 1041394937)\n\t\t + W(4, -1098508279, -1097704487, -1091275871, -1087382286)\n\t\t + W(5, -1095309386, -1117526273, -1112254893, -1108492595)\n\t\t + W(6, -1117663192, 1033331580, 1012948685, 1043041286)\n\t\t + W(7, -1131302504, -1125396951, -1153578470, -1112644847);\n\tsum2 = W(0, -1120609508, -1098653081, -1074671298, -1081276780)\n\t\t + W(1, -1097107702, -1110118090, -1137118351, -1119823807)\n\t\t + W(2, -1138324119, 1042859622, 1072071026, 1068070176) + W(3, 1044485226, 1040658983, -1118978815, 1035453187)\n\t\t + W(4, -1110367912, 1038385587, 1026263792, -1107049493)\n\t\t + W(5, 1024907208, -1122488627, 1038809437, -1111098449)\n\t\t + W(6, 1021280635, 1026624912, 1026288466, -1122098825)\n\t\t + W(7, 1040255596, -1152233050, -1126727249, 1006813455);\n\tWS(1047287096, 1059538103);\n\tsum1 = W(0, 1030804480, -1111595219, -1123153834, -1098057279)\n\t\t + W(1, 1007980582, 1018775223, 1036089754, 1030691489) + W(2, 1034749929, 1051408038, 1049213285, 1057344539)\n\t\t + W(3, 1048793645, -1106759404, -1115115061, 1033654600)\n\t\t + W(4, -1102474905, -1094490621, -1099609086, 1048597242)\n\t\t + W(5, -1094890059, 1046324795, 1003815995, -1126686757)\n\t\t + W(6, 1013951379, 1039425378, -1112788128, -1098419769)\n\t\t + W(7, -1118093753, -1108341356, -1120388747, -1135294247);\n\tsum2 = W(0, -1112864979, 1034721747, -1108077379, 1023366533)\n\t\t + W(1, 1021246669, 1032508120, -1113986367, -1153257254) + W(2, 1024004698, -1109416755, 988806988, 1058238498)\n\t\t + W(3, -1115279539, 1041332549, 1033457886, 1018109285) + W(4, 1034996841, 1041661735, 1041642045, 1008174217)\n\t\t + W(5, -1122858630, -1089151778, -1130797677, -1111548255)\n\t\t + W(6, 1004307827, -1116757818, 1037366938, -1107547239)\n\t\t + W(7, -1108868659, -1128614293, -1130732717, -1122125438);\n\tWS(1066216871, -1084582294);\n\tsum1 = W(0, 1009745022, 1023325836, 1034246149, -1103455511) + W(1, 1025953385, -1105242559, 988118663, -1107601837)\n\t\t + W(2, -1095963722, -1096473834, -1087129751, -1142570129)\n\t\t + W(3, -1094684497, -1107829831, -1107520037, -1117719279)\n\t\t + W(4, 1050775177, 1046303345, 1057767679, 1064400323) + W(5, 1038452388, 992534739, 1025316967, 1044853309)\n\t\t + W(6, 1027534757, -1126933960, -1118146623, -1103828265)\n\t\t + W(7, 1018950609, 1030437560, 1020674901, 1033139589);\n\tsum2 =\n\t\tW(0, -1127013105, 1018526115, -1123587641, 1052346460) + W(1, -1098654594, 1029804743, -1118240305, 1030491706)\n\t\t+ W(2, 1031626404, -1117975133, 1062148372, 1074624908)\n\t\t+ W(3, -1090512380, -1070854231, -1095518794, 1041467716)\n\t\t+ W(4, 1029958550, -1113082476, 1035325186, -1130733653)\n\t\t+ W(5, 1046581721, -1113725416, 1031776819, -1115594754) + W(6, 1017794797, 1023300847, -1145491637, 1041942663)\n\t\t+ W(7, -1113152926, -1139181075, -1120299385, -1142763637);\n\tWS(1033725552, -1082653885);\n\tsum1 = W(0, 1027658456, 1033791775, 1038169633, -1130834725)\n\t\t + W(1, -1105755912, -1107114253, -1106878767, -1102176852)\n\t\t + W(2, -1091894661, -1094613753, -1085886368, -1094605577)\n\t\t + W(3, 1049096200, 1038006563, 1040399888, 1038046228) + W(4, 1054730080, 1052727904, 1060322284, 1054915405)\n\t\t + W(5, -1115316932, -1113871235, -1114082704, -1098681477)\n\t\t + W(6, 1024810077, 1020875129, -1114253244, 1021660859) + W(7, 1010914050, 1032412472, 1016596422, 1044096992);\n\tsum2 = W(0, -1126607908, -1111819446, 1032709615, -1119610542)\n\t\t + W(1, 1027594385, 1029384695, -1115269200, 1032209203)\n\t\t + W(2, -1109006144, 1050929158, 1025316173, -1107176811)\n\t\t + W(3, -1123863107, -1122531221, 1026796828, -1115616555)\n\t\t + W(4, -1093467963, 1063076656, 1048889614, -1090320472) + W(5, 1046933317, 1051206364, 997945380, -1109796884)\n\t\t + W(6, 1059727060, 1073053378, 1073749745, 1058093447)\n\t\t + W(7, -1079533534, -1073154062, -1075936158, -1088004581);\n\tWS(-1087442510, 1045166814);\n\tsum1 =\n\t\tW(0, -1106921670, 1032907600, -1111070674, 1047421629) + W(1, -1094092352, 1031075349, -1136240762, -1129052086)\n\t\t+ W(2, 1032009478, -1127325529, -1106321881, -1085655355)\n\t\t+ W(3, 1057239638, -1098381173, -1128650952, -1107389381)\n\t\t+ W(4, 1041337656, -1100890040, 1060092296, 1044767811) + W(5, 1040377247, 1037296628, -1131454723, 1037463686)\n\t\t+ W(6, -1110338367, 1042108264, -1105899594, 1027442111) + W(7, -1105935775, 1037469097, 1027139781, 991481919);\n\tsum2 =\n\t\tW(0, -1119426781, -1109786529, 1041819143, 1018220925) + W(1, -1103055916, -1124599508, 986571056, 1024618671)\n\t\t+ W(2, 1040351141, 1043540747, -1105926532, -1133247980)\n\t\t+ W(3, -1096724541, 1038612076, 1019567362, -1143357456)\n\t\t+ W(4, -1104019881, -1106797782, -1098594115, 1066013053)\n\t\t+ W(5, -1136157126, -1097021086, 1025702119, 1008181894) + W(6, 1015410156, 1043466418, 1048709183, -1092013542)\n\t\t+ W(7, -1109288787, 1027934232, -1140871148, 1027080058);\n\tWS(1059279054, 1041683061);\n\tsum1 = W(0, 1028823114, 1033060856, -1136683218, 1041097809)\n\t\t + W(1, -1108712682, -1099515041, -1114499693, -1105525449)\n\t\t + W(2, -1096417644, -1095251776, -1096755466, -1095420880)\n\t\t + W(3, -1087904547, -1117180600, -1113115866, -1121084634)\n\t\t + W(4, 1041071884, 1051348966, -1106154521, 1062896338) + W(5, 1057053635, 1050313119, 1041134484, 1043053335)\n\t\t + W(6, 1040139175, -1133443258, 1027763154, 1037083176)\n\t\t + W(7, -1109247178, -1169250436, 1007514196, 1031868218);\n\tsum2 = W(0, -1104031080, -1113246189, -1124792744, -1107688308)\n\t\t + W(1, -1084040655, -1089958554, -1098618924, -1098033920)\n\t\t + W(2, 1039900182, 1044206765, 1043086617, 1057123143) + W(3, 1066602722, 1037219700, -1111210157, 1036938090)\n\t\t + W(4, 1028023758, -1122555834, 1041018096, -1100462314)\n\t\t + W(5, -1123151815, 1032289221, 1028867168, -1143651414)\n\t\t + W(6, -1125301559, 1027754708, -1129842792, 1022410763)\n\t\t + W(7, 1034604384, 1029558442, -1139711519, -1122704124);\n\tWS(-1093886876, -1092780259);\n\tsum1 = W(0, 1031521076, 1040859655, -1123954783, -1115369432)\n\t\t + W(1, 1027325374, -1130075936, 1017430099, 1005655277) + W(2, 1034696971, 1027092583, 1057011018, 1055452141)\n\t\t + W(3, 1055461116, 1043845385, 1041326696, 1045628689)\n\t\t + W(4, -1098366291, -1107551117, -1084481759, -1086775792)\n\t\t + W(5, 1050583573, -1098824964, 1032795870, -1110858724) + W(6, 991412379, 1023411481, 1037665034, 1037775165)\n\t\t + W(7, -1102735091, -1106471523, -1113156096, -1108701199);\n\tsum2 = W(0, -1099549152, -1101982776, 1039636960, 1065032135)\n\t\t + W(1, 1046191187, -1112740199, -1120755726, -1138571865)\n\t\t + W(2, -1115620025, -1110046443, 1067650764, -1096892917)\n\t\t + W(3, -1084058149, -1089814493, 1022618460, -1106519005)\n\t\t + W(4, 1042476476, -1138118945, 1056117723, -1084935200)\n\t\t + W(5, 1043334912, -1116550886, 1030169574, -1123579094)\n\t\t + W(6, -1128057356, -1104607948, -1129519972, 1039009532)\n\t\t + W(7, 1042222420, -1114781123, 1023299940, 1029490149);\n\tWS(-1103384376, 1050555318);\n\tsum1 = W(0, 990997212, -1104723373, -1102560870, -1110645588)\n\t\t + W(1, -1114771100, 1006886950, 1011892746, 1041403778) + W(2, 1056616014, 1049493908, 1060440249, 1063537686)\n\t\t + W(3, 1049398171, -1123261404, 1042753094, 1041297647)\n\t\t + W(4, -1113359817, -1101985253, -1095607555, -1091747296)\n\t\t + W(5, -1098384586, -1094355067, -1098733239, -1099641616)\n\t\t + W(6, -1104278389, -1112669305, -1117918862, -1124628967)\n\t\t + W(7, -1120789735, 1020875660, 1029891897, -1143354303);\n\tsum2 = W(0, -1097904627, -1102268820, -1101696600, -1102083058)\n\t\t + W(1, -1100977750, 1022682138, -1105396681, 1035758392) + W(2, 1056762738, 998260703, 1049156882, 1055125136)\n\t\t + W(3, 1040009482, -1099421122, -1114104451, -1112582051)\n\t\t + W(4, 1033294591, -1102966386, 1040206209, 1048772561) + W(5, 1004029807, 1040485303, -1118051402, 1040482786)\n\t\t + W(6, -1113205081, -1105114179, 1028552759, 1023069474)\n\t\t + W(7, -1108173489, 1040370279, -1109779069, -1135668672);\n\tWS(1042369848, -1095650924);\n\tsum1 = W(0, 1032801852, -1124780413, -1142443027, 1031124370)\n\t\t + W(1, 1024489633, 1037041722, -1157391942, 1048283534) + W(2, 1060985291, 1056066249, 1059062488, 1046815795)\n\t\t + W(3, 1051554984, 1026983110, 1037131073, 1028118439)\n\t\t + W(4, -1088222536, -1093287088, -1089766974, -1084610255)\n\t\t + W(5, -1096293908, 1035048291, -1113190096, -1107690581)\n\t\t + W(6, -1154392525, 1017158008, 1041310978, -1111535759)\n\t\t + W(7, -1118760812, -1118618480, 1032589425, -1101944856);\n\tsum2 = W(0, 1056251107, -1118435725, -1111043713, -1090037466)\n\t\t + W(1, -1129656805, -1093926860, 1052716525, -1083761792)\n\t\t + W(2, -1084477192, 1041984407, -1093515412, 1073185178)\n\t\t + W(3, 1051712939, 1053076395, -1096065312, 1066458198)\n\t\t + W(4, -1077785336, -1086371528, -1093010832, 1074151927)\n\t\t + W(5, 1054463958, -1094829660, -1090812268, 1063500158)\n\t\t + W(6, 1053829707, -1113013425, 1046411943, -1090694669)\n\t\t + W(7, -1095714333, -1103046632, 1035367276, -1087950464);\n\tWS(-1081634407, -1072784825);\n\tsum1 = W(0, -1102740818, -1115394775, -1101924733, -1100839185)\n\t\t + W(1, -1123768914, -1140848016, -1118249725, -1116477425)\n\t\t + W(2, 1024862651, 1046040367, -1109613465, -1115978107)\n\t\t + W(3, 1049722038, -1098661743, -1138059466, 1025943000) + W(4, 1056867014, 1027952685, 1058509811, 1050187219)\n\t\t + W(5, -1098437541, 1033615035, -1143195264, -1132571500)\n\t\t + W(6, 1016622683, -1112643478, -1096240139, -1101581667)\n\t\t + W(7, 1008822020, 1023463264, -1116668435, 1036595961);\n\tsum2 = W(0, -1139809909, -1126178115, 1032546581, -1097752958)\n\t\t + W(1, 1042272246, -1118367610, -1138081685, 1017774855)\n\t\t + W(2, 1046126277, -1111752353, 1034216546, 1042101074) + W(3, 1043290796, -1112722386, 1034532478, 1030093406)\n\t\t + W(4, -1119940899, 1055245806, -1088954301, 1058677046)\n\t\t + W(5, -1087007443, 1048637958, -1140548675, 1029648824)\n\t\t + W(6, 1040903120, -1104413152, 1019748625, -1089277711)\n\t\t + W(7, 1028591970, -1139620757, 1017306737, 1033828758);\n\tWS(1050645916, 1033550915);\n\tsum1 =\n\t\tW(0, -1118556120, -1108262319, 1043230361, -1094947334) + W(1, -1103841584, 1018079143, 1032598742, 1008731683)\n\t\t+ W(2, -1107219907, 1043545243, -1086762442, -1104041435)\n\t\t+ W(3, 1058293794, -1097977901, 1041130248, -1123331655) + W(4, 1039060494, -1145250020, 1059123936, 1057758321)\n\t\t+ W(5, -1096913490, 1039599795, -1151122424, -1123961290)\n\t\t+ W(6, 1030703933, -1110184190, -1110311564, -1100512367)\n\t\t+ W(7, 1044416908, -1132472896, -1147952664, 1022228292);\n\tsum2 = W(0, 1040267615, 1048409433, -1107165984, -1086251247)\n\t\t + W(1, -1113957324, -1107976602, -1122078587, -1111525785)\n\t\t + W(2, -1112791644, -1110540665, -1088877638, 1053330884)\n\t\t + W(3, 1057377190, 1057673067, 1024512949, 1042772014) + W(4, 1010515766, 1032365064, -1090038325, 1049266570)\n\t\t + W(5, 1028890653, -1103454662, 1041725883, -1143554104) + W(6, 1024308395, 1041630361, 1040244783, 1037513285)\n\t\t + W(7, -1098504745, 1039941233, -1103661415, 1024552651);\n\tWS(1051978908, -1102077462);\n\tsum1 = W(0, -1132165009, -1117187439, -1108837850, 1037183202)\n\t\t + W(1, 1028473682, 1045655273, 1025240990, 1033734537) + W(2, 1045761591, 1051430047, 1060286099, 1046972447)\n\t\t + W(3, -1128782822, 1028047735, -1178179968, 1035331372)\n\t\t + W(4, 1013540534, -1096198150, -1130717861, -1085387922)\n\t\t + W(5, -1105434962, -1101497054, -1110960744, -1102517015)\n\t\t + W(6, -1106078467, 1014010165, -1121999817, 1030141582)\n\t\t + W(7, 1008925446, 1018887490, -1122721428, 1026996307);\n\tsum2 = W(0, 1023072493, -1125531833, 1030396885, -1118880502)\n\t\t + W(1, 1027419877, -1161271853, 1019485964, 1028708277) + W(2, 974611657, 1047662948, 1035351326, -1090109833)\n\t\t + W(3, -1110942359, 1033315833, 1010290822, -1156901930)\n\t\t + W(4, -1101792417, 1051899312, 1080526024, -1069022098)\n\t\t + W(5, -1087739606, 1036440530, -1124554651, -1114394737)\n\t\t + W(6, -1112121991, 1037288067, 1042102238, -1113214479)\n\t\t + W(7, 1032127295, -1143368203, -1132377096, -1141169667);\n\tWS(1058455886, -1096183470);\n\tsum1 = W(0, -1105360672, -1112035684, -1105059667, -1103063975)\n\t\t + W(1, -1112638549, -1104182327, -1106250503, -1103319623)\n\t\t + W(2, -1112611850, 1032735242, 1048808633, 1042817013) + W(3, 1058906409, 1047248804, 1047193699, 1057710235)\n\t\t + W(4, 1060616064, 1033545283, 1051085625, -1097442806)\n\t\t + W(5, -1102188695, -1103229812, -1106970890, -1109193562)\n\t\t + W(6, -1104075433, -1111940643, -1115570744, -1097216429)\n\t\t + W(7, -1107200030, -1108265532, -1119499692, -1106901731);\n\tsum2 = W(0, -1135393651, -1131009665, 1004138181, -1111055824)\n\t\t + W(1, -1134829555, -1127256265, -1113946573, 1010148467)\n\t\t + W(2, -1114274101, 1016197705, -1143366053, 1051632163)\n\t\t + W(3, -1111579981, 1038147066, 1025185617, -1137859715)\n\t\t + W(4, -1117767149, -1130986601, 1026922589, 1048764370)\n\t\t + W(5, 1036257166, -1112945554, -1143942149, -1123068365)\n\t\t + W(6, -1110403581, -1136444051, -1112183743, -1121253595)\n\t\t + W(7, 1009689523, 989872074, -1123668797, -1123716033);\n\tWS(-1103618872, 1023577831);\n\tsum1 = W(0, 1041702149, 1032268701, 1021026046, 1032012647) + W(1, 1023662430, -1111766616, -1112590149, 1042231991)\n\t\t + W(2, 1057806109, 997904496, 1057675340, -1129702414) + W(3, 1056283152, 1039716321, 1049875952, 1054291708)\n\t\t + W(4, -1091063799, -1106010126, -1090884608, -1094077941)\n\t\t + W(5, -1094732237, -1100869456, -1105996279, -1098425069)\n\t\t + W(6, 1022049043, -1102660926, 1046995709, -1100395542)\n\t\t + W(7, 1050214494, -1096243374, 1047647816, -1100607928);\n\tsum2 =\n\t\tW(0, 1073849383, 1069429154, 1070121938, 1066905653) + W(1, -1087755842, -1080359597, -1073496568, -1070245916)\n\t\t+ W(2, -1072987051, -1080077361, -1076996297, -1086754234)\n\t\t+ W(3, 1060194671, 1067521081, 1074652354, 1075883836) + W(4, 1040644897, -1098556311, -1124122091, -1095882058)\n\t\t+ W(5, -1096747545, 1048551041, -1092793409, 1058695504)\n\t\t+ W(6, 1022236877, -1128073567, -1118780260, 1027638421)\n\t\t+ W(7, 1012182550, -1129108935, -1130588931, 1001812541);\n\tWS(1010873216, -1100304815);\n\tsum1 = W(0, -1154187044, 1028741017, -1114247598, -1099084427)\n\t\t + W(1, -1104966895, 994968800, -1113228468, 1028263947) + W(2, 1045945805, 1051026373, 1058185854, 1059904750)\n\t\t + W(3, 1052860588, 1038231664, 1040557287, 1032103905)\n\t\t + W(4, -1102222630, -1103217414, -1097780567, -1091550752)\n\t\t + W(5, -1108718914, -1110664976, 1017403508, 1017865354)\n\t\t + W(6, -1113759340, 1022415534, -1105383733, -1111624796)\n\t\t + W(7, -1114326870, -1110217221, -1108875519, -1109350878);\n\tsum2 =\n\t\tW(0, -1114639192, 1039210963, 1047528380, -1099502544) + W(1, 1041344628, -1108972702, 1021595805, -1116883371)\n\t\t+ W(2, -1100331344, 1069298433, 1080352854, -1067747068)\n\t\t+ W(3, -1080996124, 1032407437, -1121090437, 1016604711) + W(4, 1035901690, 1043940791, 1030733380, -1084572959)\n\t\t+ W(5, 1003800555, 1045939813, -1121287047, -1122259179)\n\t\t+ W(6, 1012858414, -1126620651, 1036529177, -1099630936)\n\t\t+ W(7, 1043527822, -1119860547, -1145664907, 1034105585);\n\tWS(1044302648, -1104457270);\n\tsum1 = W(0, -1115179413, -1101763748, 999269803, -1106420033)\n\t\t + W(1, 1041707045, -1128885581, -1110751840, 1029110244) + W(2, 1029190781, 1045938783, 1034810490, 1055724168)\n\t\t + W(3, 1053359959, -1100033022, 1037908026, 1035419021)\n\t\t + W(4, -1108944696, -1102720380, 1038235218, -1101615303)\n\t\t + W(5, -1094303566, 1043259278, 1011056201, -1123807773)\n\t\t + W(6, -1115207128, 1013266237, 1025157307, -1105407492)\n\t\t + W(7, 1045691477, -1113033137, -1114066571, -1113282394);\n\tsum2 =\n\t\tW(0, -1117238549, -1115295266, 1033754662, -1095438097) + W(1, -1106855439, 1011060498, -1117460606, 1032653312)\n\t\t+ W(2, -1109414288, -1128441429, -1104877135, 1053172955)\n\t\t+ W(3, 1056926069, -1108715476, 1036225840, -1114450934)\n\t\t+ W(4, -1115125848, -1121954754, 1018153798, 1038786210) + W(5, -1104082080, 1043675119, 1008366234, 1018894269)\n\t\t+ W(6, 1023475415, 1024122972, 1002646200, -1106263750) + W(7, 1034246226, 1025499367, -1107090094, 1013321052);\n\tWS(1068015911, 1043072951);\n\tsum1 = W(0, -1127841379, 1035792844, -1155603908, 1018341976)\n\t\t + W(1, -1111053022, 1044403491, -1112313859, 1005208661)\n\t\t + W(2, -1101991257, -1091973141, -1110119406, -1095315357)\n\t\t + W(3, -1107228151, -1111437840, -1097295811, -1103670736)\n\t\t + W(4, 1041159238, 1040826438, 1052691071, 1053842800) + W(5, 1042506601, 1050221764, 1030249017, 1046985745)\n\t\t + W(6, 1035382295, -1098419575, 1043898844, 1030324599)\n\t\t + W(7, -1108241413, 1043481954, -1098652336, 1032196534);\n\tsum2 =\n\t\tW(0, -1134315530, 1033824390, -1112867968, 1039862799) + W(1, 1005143468, -1114969920, 1030354102, -1131720457)\n\t\t+ W(2, -1125722365, 1019923991, 1039464885, -1087456726)\n\t\t+ W(3, -1119378177, 1042059959, -1113780490, 1009971850)\n\t\t+ W(4, -1135384490, 998580556, -1093291922, -1061395777)\n\t\t+ W(5, -1106942114, -1121281813, 1034179020, 1032010553) + W(6, -1118933131, 1027495017, 1045077367, 1087627027)\n\t\t+ W(7, 1034637079, -1148550692, -1118611519, -1117397469);\n\tWS(1060186318, -1131602669);\n\tsum1 = W(0, 1022422466, -1102049002, 1050775273, -1097141731)\n\t\t + W(1, 1056872997, -1099566807, 1025667942, 1032894309) + W(2, 1050205114, 1052887138, 1052456073, 1049038746)\n\t\t + W(3, 1040490435, 1039690728, 1043457059, 1045856748)\n\t\t + W(4, -1099402401, -1102238785, -1100510367, -1088759247)\n\t\t + W(5, -1122526498, -1099089908, -1102859210, -1106963501)\n\t\t + W(6, -1112848707, -1106285089, 1039607513, -1098786589)\n\t\t + W(7, 1048305743, -1104192622, 1032266998, -1118572779);\n\tsum2 = W(0, 989650422, -1108234271, -1120122674, 1045260201)\n\t\t + W(1, -1114112879, 1037831837, -1117501250, 1024132690)\n\t\t + W(2, -1120410947, 1050158699, -1092804082, 1024838498)\n\t\t + W(3, -1125280065, -1119936776, -1114421818, 1035095434)\n\t\t + W(4, 1047633630, 1066272871, 1075424781, 1061734347) + W(5, -1091697647, 1003481288, 1011848513, -1106020023)\n\t\t + W(6, -1081060940, -1074101109, -1079387458, 1050344942)\n\t\t + W(7, 1043540897, 1039609275, -1131708367, 1026462111);\n\tWS(1057810382, 986287880);\n\tsum1 = W(0, -1105255365, 1027767677, 1037147968, 1038550632)\n\t\t + W(1, -1136315263, 1035749561, -1115075413, 1028257967)\n\t\t + W(2, -1110142276, -1106138450, -1092238936, -1090210593)\n\t\t + W(3, -1089134184, -1093055129, -1097497096, -1089420006)\n\t\t + W(4, 1041191503, 1031406779, 1027980992, 1049547413) + W(5, 1052451129, 1057536820, 1050343212, 1058108487)\n\t\t + W(6, 1050176972, -1130243957, 1041310918, 1041377527)\n\t\t + W(7, -1115128119, 1033537239, -1127231554, 1031965752);\n\tsum2 = W(0, -1099824579, -1113793286, 1053512844, -1112943238)\n\t\t + W(1, 1041834894, -1099992002, -1120789532, 1024916046)\n\t\t + W(2, 1070708271, -1104040400, -1091831853, -1072548459)\n\t\t + W(3, -1093778092, 1057576575, 1064181862, 1051972140)\n\t\t + W(4, 1075074245, -1084124078, -1082668198, -1072503695)\n\t\t + W(5, 1056090411, 1053907302, 1058602971, 1054786345) + W(6, -1097074436, 1023561426, 1039380165, 1009216489)\n\t\t + W(7, 1043969626, -1107563771, 1034348623, -1106961801);\n\tWS(-1075707047, 1038147646);\n\tsum1 = W(0, 1038492938, -1115961531, 1036899040, 1041066756) + W(1, 1038870159, 1045702796, 1022987667, 1044017707)\n\t\t + W(2, 1050722763, 1026800423, 1055626176, 1052178217) + W(3, 1027667391, 1053246416, -1100305296, 1049962981)\n\t\t + W(4, -1095596015, -1103730686, -1091210886, -1090286882)\n\t\t + W(5, -1094135001, -1095582752, -1109653838, -1093296229)\n\t\t + W(6, 1040870942, -1122935577, 1047700685, 1036539085)\n\t\t + W(7, -1102625947, 1048523811, -1105859960, -1117734303);\n\tsum2 = W(0, -1145353723, -1113260796, -1112198364, -1113367096)\n\t\t + W(1, 1007958125, 1047146251, -1122974002, 1021064313) + W(2, 1027969677, -1095928859, 1052169305, 1052353113)\n\t\t + W(3, -1129450520, 1051473061, -1091037095, 1050393555)\n\t\t + W(4, -1115030411, 1031463199, -1108227013, 1051016428) + W(5, 1041462653, 1045242344, 1032341221, 1020102815)\n\t\t + W(6, 1052090154, -1110261785, 1041877601, -1099630700)\n\t\t + W(7, -1087173862, -1102681887, -1095485390, -1111896409);\n\tWS(-1102302520, 1068562064);\n\tsum1 = W(0, -1130894152, 1029216267, 1029150351, 1029804895)\n\t\t + W(1, -1108054071, 1046304488, -1107326720, 1018120580)\n\t\t + W(2, -1101486038, -1094978851, -1104755260, -1093484995)\n\t\t + W(3, -1110271975, -1106599349, -1102131284, -1102274525)\n\t\t + W(4, 1044130034, 1029251017, 1053252560, 1050941559) + W(5, 1036880709, 1050863202, -1128083416, 1047248574)\n\t\t + W(6, 1031789673, -1102217970, 1042516209, 1040658618)\n\t\t + W(7, -1113036417, 1041743615, -1102226940, 1032422999);\n\tsum2 =\n\t\tW(0, 1019111797, -1123809812, 1006739898, 1041109085) + W(1, -1126211453, 1028972357, -1118372569, 1025713585)\n\t\t+ W(2, 1022527979, -1111065998, 1031759809, -1095097056)\n\t\t+ W(3, 1034613952, -1107360163, 1033659253, -1118642675) + W(4, -1131519898, 1023737355, 1045357020, 1082939698)\n\t\t+ W(5, 1027342607, 1033832936, -1112248823, -1118824157)\n\t\t+ W(6, 1029130971, -1117143513, -1106220344, -1064938697)\n\t\t+ W(7, -1122955245, -1112280546, 1032152906, 1028082979);\n\tWS(1066566439, -1125753148);\n\tsum1 = W(0, 1020091828, 1041951168, -1130301450, 1052053147)\n\t\t + W(1, -1131231944, 1033588155, 1009411772, -1116682291)\n\t\t + W(2, -1096367972, -1098758994, -1093467737, -1089881409)\n\t\t + W(3, -1092544881, -1098181717, -1110070786, -1096392077)\n\t\t + W(4, 1038767583, 1048997640, -1130818632, 1064063659) + W(5, -1116991019, 1042770882, 1046860728, 1027361773)\n\t\t + W(6, 1030663671, 1025331919, -1108818909, 1044746920) + W(7, 1022962726, 1041997189, 1018371147, 1038578846);\n\tsum2 = W(0, -1105507764, -1149004498, -1098298748, -1115729482)\n\t\t + W(1, -1094576030, -1111478010, -1129010369, 1018600957)\n\t\t + W(2, 1019815533, 1047279899, -1106660204, 1058550934) + W(3, 1031191852, 1032716298, -1117054989, 1019851909)\n\t\t + W(4, -1136431769, -1121679526, -1096656341, 1058580319)\n\t\t + W(5, -1098228632, 1041490224, 1047791827, -1106522387)\n\t\t + W(6, 1024962860, 1041000955, -1107413740, 1027135608)\n\t\t + W(7, -1101441076, 1035067556, -1123460834, 1005788722);\n\tWS(1050996380, 1066787661);\n\tsum1 = W(0, 1042843177, -1120310187, 1033453959, -1107450543)\n\t\t + W(1, 1017862620, -1134072575, 1025308393, 1033769739) + W(2, -1109518091, 1043911830, 1059519229, 1061971625)\n\t\t + W(3, 1051823058, 1046601317, 1042112788, 1046863997)\n\t\t + W(4, -1098674409, -1097687209, -1096304487, -1098011863)\n\t\t + W(5, -1095767039, -1095249970, -1098354285, -1098417599)\n\t\t + W(6, -1112832565, -1133582755, -1116528532, -1105396874)\n\t\t + W(7, 1033796902, 999923683, 1030029487, -1109771063);\n\tsum2 = W(0, -1103321099, 1033376724, -1108916223, 1033194077)\n\t\t + W(1, 1038197771, 1032881798, 1017830932, -1138730935)\n\t\t + W(2, -1087654445, -1114493691, 1049058628, 1065240604)\n\t\t + W(3, -1128335788, -1094150295, 1006224046, -1112103411)\n\t\t + W(4, -1098379129, -1096458683, 1036368268, 1054396447)\n\t\t + W(5, 1049730119, -1108472207, 1031462702, -1102017203)\n\t\t + W(6, 1013739975, 1015354012, -1121134774, -1115257551)\n\t\t + W(7, -1129699908, 1021079748, -1117224382, 1038189385);\n\tWS(1027314912, -1081149641);\n\tsum1 = W(0, -1109480125, -1114947760, -1101195017, -1132100201)\n\t\t + W(1, -1103759537, 1044342469, -1111893319, 1051194426) + W(2, 1051429188, 1053252314, 1058130398, 1061393767)\n\t\t + W(3, 1057940398, -1104522586, 1055491172, -1120202825)\n\t\t + W(4, -1118844062, -1094077252, -1113091794, -1085308129)\n\t\t + W(5, -1102037735, -1094497965, -1103334896, -1094870250)\n\t\t + W(6, -1097611416, 1034118735, -1104617542, 1035982720)\n\t\t + W(7, -1114189097, 1036294793, -1128796810, 1030785028);\n\tsum2 = W(0, -1131039707, 1024995350, -1104486127, 1015537291)\n\t\t + W(1, 1053996441, -1103676904, 1047124046, -1111129691)\n\t\t + W(2, -1098833779, -1124760267, -1078713050, -1065942779)\n\t\t + W(3, 1047686732, 1084085461, 1064521940, -1093915430)\n\t\t + W(4, -1147567565, 1057070390, -1091843304, -1081156610)\n\t\t + W(5, -1094140189, 1060423478, 1046849692, 1018309905) + W(6, 1035790053, 995065627, 1037354874, -1154356731)\n\t\t + W(7, -1107145709, 1026796886, -1108476011, 1038591472);\n\tWS(-1081542375, 1044780323);\n\tsum1 = W(0, 1026864081, -1100303790, 1048337215, -1098110473)\n\t\t + W(1, 1054474587, -1099969099, 1023999910, 1028627178) + W(2, 1046719985, 1054288460, 1054459103, 1048901488)\n\t\t + W(3, 1041639871, 1034589376, 1043694031, 1046235480)\n\t\t + W(4, -1098857847, -1108679899, -1098101851, -1093175556)\n\t\t + W(5, -1104037973, -1107626335, -1101510966, -1106600025)\n\t\t + W(6, -1114219435, -1104586877, 1041408644, -1098306531)\n\t\t + W(7, 1046672715, -1104199322, 1022681657, -1126646775);\n\tsum2 = W(0, 1017985090, 1027847194, 1036519222, -1113167123)\n\t\t + W(1, 1037009826, -1113380621, 1031131596, -1115360802)\n\t\t + W(2, 1024212320, -1098721130, 1050387030, -1094712479)\n\t\t + W(3, -1100822056, 1028269032, 1009055356, -1113841920)\n\t\t + W(4, -1099849981, -1081468176, -1070464929, -1096550174)\n\t\t + W(5, 1057690620, 1042714784, -1145638655, 1046010973) + W(6, 1067245211, 1074345814, 1070597407, -1088417301)\n\t\t + W(7, -1104880956, -1102737214, 1000105719, -1112342255);\n\tWS(1059294542, 1020616832);\n\tsum1 = W(0, -1157534552, 1039080142, -1097783100, 1031217968)\n\t\t + W(1, -1164216296, -1138897989, 1026686634, -1105498094)\n\t\t + W(2, -1096856701, 1044861738, -1089052876, -1085780263)\n\t\t + W(3, 1044573672, -1097342660, 1041475528, -1105558033) + W(4, 1050532499, 1041652423, 1057029426, 1047119538)\n\t\t + W(5, 1039715347, 1043073721, 1040308239, 1048391538) + W(6, -1112831597, 1046540791, -1098369827, 1040272239)\n\t\t + W(7, 1024931118, -1103025619, 1045404192, -1114523696);\n\tsum2 = W(0, -1106291706, 1001372950, -1099590495, -1093748925)\n\t\t + W(1, 1015225205, -1105937891, -1112612361, 995169980) + W(2, 1040318024, -1105705183, 1045484852, 1061316313)\n\t\t + W(3, -1098311584, 1041085521, 1028378294, 1035732349)\n\t\t + W(4, -1114208076, -1116263519, -1108179199, 1049891427)\n\t\t + W(5, 1040668388, -1111581107, -1115787941, -1113959318)\n\t\t + W(6, -1142193319, -1145917455, 1036599633, -1108356360)\n\t\t + W(7, -1148092276, 1032743264, 1021281994, 1024794158);\n\tWS(1059376718, -1137270291);\n\tsum1 =\n\t\tW(0, -1118257199, 1037392427, -1097794403, 1035766677) + W(1, 1026067385, 1032186693, -1108679762, -1139304576)\n\t\t+ W(2, 1043258576, -1106073464, 1054680411, -1099046488)\n\t\t+ W(3, -1088020070, 1041392887, -1113652045, -1111666975)\n\t\t+ W(4, -1114290826, -1124279079, -1115190716, 1052189312)\n\t\t+ W(5, 1054691490, -1097245116, 1025610423, -1123561026) + W(6, -1112002778, 1022160871, 1045843716, 1011458515)\n\t\t+ W(7, -1110958220, 1046761570, -1117145658, 1032305501);\n\tsum2 =\n\t\tW(0, 1025244035, -1122852568, -1092220395, 1038019467) + W(1, 1048072683, -1113553750, -1119930901, -1139793711)\n\t\t+ W(2, 1033595807, -1087687504, 1066421651, 1047700223)\n\t\t+ W(3, -1084925862, 1050883425, -1105555859, -1146566911)\n\t\t+ W(4, 1016573022, 1048825911, 1058107887, -1089540205) + W(5, 1045215493, -1098430697, 1041208433, -1124843514)\n\t\t+ W(6, 1002397687, -1104089806, -1130145014, -1111655831)\n\t\t+ W(7, 1032935415, 1015641098, 1001885951, -1131703250);\n\tWS(1058596686, 1013962118);\n\tsum1 = W(0, 1000024554, -1127551432, -1100000762, 1035333436)\n\t\t + W(1, -1122612871, 1044766998, 1041477861, 1051562743) + W(2, 1052551424, 1049056438, 1057499982, 1036076760)\n\t\t + W(3, -1127972943, -1116046252, -1118015335, -1099275107)\n\t\t + W(4, -1088298614, -1098656348, -1090756927, -1097067922)\n\t\t + W(5, 1040213184, 1015197910, -1123679237, -1122278672) + W(6, 1039656505, 1034731345, 1019232187, 1033429441)\n\t\t + W(7, -1125045580, -1113717771, 1037833508, -1122272135);\n\tsum2 =\n\t\tW(0, -1104434141, 1029025211, -1078497608, -1079110377) + W(1, -1085502108, 1066279808, 1062913146, 1068620036)\n\t\t+ W(2, 1048601996, -1091369704, 1052827694, -1106615386)\n\t\t+ W(3, -1115334546, 1037382016, -1122817088, 1048688798)\n\t\t+ W(4, 1033271157, -1119340081, 1025214064, -1109539756)\n\t\t+ W(5, 1050957039, -1106594885, 1036274829, -1118139306) + W(6, 1004930429, 1028438774, -1106316897, 1034989376)\n\t\t+ W(7, -1108631008, 1023198169, -1134348613, -1139733884);\n\tWS(1044771128, 1023341948);\n\tsum1 = W(0, -1156220044, 1034545464, 1033488922, -1111313058) + W(1, 1038420969, 1008511890, 1013986230, 1011084871)\n\t\t + W(2, -1092336191, -1098819215, -1096491302, -1086850728)\n\t\t + W(3, -1102939421, -1100928894, -1115524377, -1089482302)\n\t\t + W(4, 1051560294, 1044146859, 1051910286, 1045449190) + W(5, 1053458817, 1038883707, 1012126018, 1046748951)\n\t\t + W(6, 1036528391, 1029114797, 1022761170, 1029767950) + W(7, 1041877300, 1034675856, 1037411178, 1043196317);\n\tsum2 = W(0, -1071004894, -1080574884, -1089987082, 1049506323)\n\t\t + W(1, 1065282653, 1062249589, 1060165079, 1070844945) + W(2, 1076503146, 1066884159, 1058011283, -1098882467)\n\t\t + W(3, -1084978169, -1088626314, -1082249713, -1077734377)\n\t\t + W(4, 1057610169, -1107351326, 1054000347, -1090234844)\n\t\t + W(5, 1030898490, -1090230279, 1044380003, -1096516163)\n\t\t + W(6, -1122913984, -1130255370, 1038970611, 1014162118)\n\t\t + W(7, -1114000490, 1022492087, -1131621088, 1013009282);\n\tWS(-1111817840, -1134998409);\n\tsum1 = W(0, 1022731056, 1045262352, 1044888721, 1029818259) + W(1, -1105915720, -1114660906, 1027479949, 991785104)\n\t\t + W(2, -1102901203, -1094315057, -1085070720, -1111793509)\n\t\t + W(3, 1055206544, 1046806370, -1123039746, -1136267423) + W(4, 1029699069, 1052915216, 1058770140, 1057078063)\n\t\t + W(5, -1095183540, -1097451385, -1112670352, -1114500629)\n\t\t + W(6, 1021112442, -1107194439, -1097785743, -1117717150)\n\t\t + W(7, 1040740592, 1036425016, 1005586201, 1016465988);\n\tsum2 = W(0, -1129690332, 1030842707, -1123486113, 1054087898)\n\t\t + W(1, -1105176966, -1097205966, -1098021434, -1106929221)\n\t\t + W(2, -1113356803, 1026318374, 1041923626, -1089332833)\n\t\t + W(3, 1068558125, -1141184456, -1107728348, -1104288342)\n\t\t + W(4, 997943457, -1119512995, 1037525758, -1088292904) + W(5, 1040210770, 1050151959, 1018682892, 1006954668)\n\t\t + W(6, 1015499837, -1180561029, -1144014736, 1037328869)\n\t\t + W(7, -1107365912, -1114055561, 1009592392, 1013301204);\n\tWS(-1100650808, 1043653943);\n\tsum1 =\n\t\tW(0, 1038392637, 1032036848, -1120772452, 1043637149) + W(1, 1040259489, 1047398869, 1038054351, 1050576478)\n\t\t+ W(2, 1044290651, 1040683515, -1106266873, -1090111931) + W(3, -1133467790, 1044787930, 1023591523, 1037223428)\n\t\t+ W(4, -1095199164, -1115398639, -1094097345, -1097393337)\n\t\t+ W(5, -1104941765, -1101572298, 1016760834, -1102689443) + W(6, 1033771919, 1038316223, 1042896310, 1045751664)\n\t\t+ W(7, -1159203906, 1015063331, 1030908740, -1125005703);\n\tsum2 =\n\t\tW(0, 1018053796, 1000548496, 1049079603, 1039189619) + W(1, -1128574308, -1118597354, -1106984497, -1104543855)\n\t\t+ W(2, 1046306039, 1043541862, 1010667960, 1064529690) + W(3, 1047996002, -1087406141, -1095617964, -1086946593)\n\t\t+ W(4, -1101305605, 1029064982, -1116813778, 1038487223)\n\t\t+ W(5, -1100258391, 1048794746, -1114392997, 1045938007)\n\t\t+ W(6, 1031448374, -1112893849, 1021972628, -1105518867)\n\t\t+ W(7, 1037842238, 1033382833, 1021089548, -1140458600);\n\tWS(-1121537248, 1047151836);\n\tsum1 = W(0, -1096325448, -1113135282, -1098188693, -1112146268)\n\t\t + W(1, -1108791588, -1117696601, -1123869651, -1114157115)\n\t\t + W(2, 1052654400, 1035132488, 1046868890, -1134150082)\n\t\t + W(3, -1129891280, -1098847494, 1032919412, -1107856679)\n\t\t + W(4, 1000450324, -1110395025, -1139200797, 1049727010) + W(5, 1041189572, 1056884317, 1041128337, 1058220805)\n\t\t + W(6, -1116556387, 1023519458, -1111260975, -1110207458)\n\t\t + W(7, -1104838938, -1098805187, -1146298440, -1103148146);\n\tsum2 =\n\t\tW(0, -1142864271, 1021304865, 1043366966, -1107584343) + W(1, 1014758407, -1130465374, -1120740451, 1000478551)\n\t\t+ W(2, 1043572739, 1026011378, -1102859954, -1080136051)\n\t\t+ W(3, -1103597159, -1115654645, 1046511165, 1053224660)\n\t\t+ W(4, -1125571574, 1028667063, 1022196210, -1072538638) + W(5, -1076945816, 1048815254, 1072551214, 1074776028)\n\t\t+ W(6, -1107989855, -1140649559, 1020722946, -1132367054)\n\t\t+ W(7, 1041979768, -1126224006, 1027667511, 1048839210);\n\tWS(-1086568910, 969651201);\n\tsum1 = W(0, -1128189323, 1044154939, 1043534732, -1114366976)\n\t\t + W(1, -1098469330, -1101372520, -1123038043, -1132910587)\n\t\t + W(2, -1096064919, -1089612648, -1084798775, 1053159863)\n\t\t + W(3, 1053431542, 1050787607, 1036747448, -1116020373) + W(4, 1047521403, 1054908701, 1056987371, 1057685165)\n\t\t + W(5, -1089249613, -1090701774, -1105030179, 1027268120)\n\t\t + W(6, 1043461231, -1099266659, -1113308531, -1152040120)\n\t\t + W(7, 1042761408, 1049635020, 1010635844, 1018344000);\n\tsum2 = W(0, 1042932965, -1103428495, 1039997403, -1093583228)\n\t\t + W(1, 1044856824, -1121819542, -1177180368, 1028413178)\n\t\t + W(2, -1103892922, 1060495074, 1052448567, -1075640666)\n\t\t + W(3, 1057723154, 1057002090, -1112150955, -1118134166)\n\t\t + W(4, -1104364155, 1060109323, 1064108701, -1073056297)\n\t\t + W(5, 1055665788, 1060503917, -1116550688, -1110515035)\n\t\t + W(6, -1139842168, -1118896922, 991756114, -1097481656)\n\t\t + W(7, 1040659602, -1099984054, 1034919451, 1041069777);\n\tWS(-1084093518, -1116656412);\n\tsum1 = W(0, 1002008836, 959481663, -1104590931, 1050696243) + W(1, -1106608235, 1047962207, 1030562773, 1015783795)\n\t\t + W(2, 1058416208, 1026388179, 1059097973, 1042079029) + W(3, 1041679827, 1049127990, 1031439243, 1042535660)\n\t\t + W(4, -1096672513, -1109778819, -1088144465, -1096264126)\n\t\t + W(5, -1101432288, -1100480244, -1113594772, -1093923750)\n\t\t + W(6, -1112390467, 1023428581, -1112632704, 1040470858)\n\t\t + W(7, -1102954054, 1047012782, -1112144502, -1145396437);\n\tsum2 = W(0, 1007960967, -1110192070, 1049899326, 1056650247) + W(1, 1078512141, 1081472440, 1058404171, 999915485)\n\t\t + W(2, 1027407916, 1010716935, -1097456083, -1070859565)\n\t\t + W(3, -1068241064, -1079514242, -1094427160, 1030657127)\n\t\t + W(4, -1129957403, 1018303319, 1037417999, -1094713389)\n\t\t + W(5, -1096379657, 1043613542, 1025537830, -1116925932)\n\t\t + W(6, -1132155403, -1121935910, -1137993343, -1142796285)\n\t\t + W(7, 1039214170, -1111213656, 1032528613, 1024356221);\n\tWS(1052225948, 1018668194);\n\tsum1 = W(0, -1120453498, -1123160289, -1108654867, -1104839613)\n\t\t + W(1, 1041378113, 1036965515, 1044186084, 1034438594) + W(2, 1051775516, 1048325451, 1058214550, 1064670427)\n\t\t + W(3, -1126638409, 1049967085, -1096299613, -1128237844)\n\t\t + W(4, -1117579103, -1111291056, -1093397513, -1091445969)\n\t\t + W(5, -1092047898, -1099225050, -1112850625, -1112057991)\n\t\t + W(6, -1107074656, -1112742544, -1147977428, -1119335936)\n\t\t + W(7, -1109154218, 1034167881, -1138567959, 1019177609);\n\tsum2 = W(0, -1121001958, -1148685985, 1018483434, 1021815720)\n\t\t + W(1, 1049361594, -1108634723, -1132118692, -1105580672)\n\t\t + W(2, -1117606942, -1111847761, -1120566718, -1076982600)\n\t\t + W(3, 1074852012, 1048076514, -1102180777, -1116866514)\n\t\t + W(4, -1103097305, 1021935234, 1049895592, -1081972918) + W(5, 1051964198, 1040925857, 1017568960, 1040155911)\n\t\t + W(6, -1130038396, -1112487949, 1038078839, -1125812992)\n\t\t + W(7, -1152546434, -1104919092, 1026180028, -1123068468);\n\tWS(-1096382876, -1091051652);\n\tsum1 = W(0, -1116126267, -1113197617, -1112424211, -1124324715)\n\t\t + W(1, -1136579346, 1040875430, -1113905512, 1017323784) + W(2, 1057278592, 1048826126, 1058810754, 1056304110)\n\t\t + W(3, 1041995897, 1016295122, 1024916389, 1042534003)\n\t\t + W(4, -1096000788, -1097274020, -1088739494, -1091311905)\n\t\t + W(5, -1114916522, 1038826452, -1128507781, 1017648027)\n\t\t + W(6, -1116910752, -1140807037, 1039925053, -1132679170)\n\t\t + W(7, -1107191661, -1119450067, 1023437062, -1098370349);\n\tsum2 = W(0, -1120311657, 1036113080, -1109045199, 1029662296)\n\t\t + W(1, -1122358251, -1114085873, 1016737279, -1115835645)\n\t\t + W(2, 1025682064, -1107470193, 1035621932, -1118009189) + W(3, 1045290388, 1009830751, 1035169596, 1030264440)\n\t\t + W(4, 1036682152, -1108061877, 1051542033, -1101792442)\n\t\t + W(5, -1093646778, 1056395710, -1091719234, 1052430993)\n\t\t + W(6, -1108273289, 1012612647, -1101063214, -1076098595)\n\t\t + W(7, -1080861029, 1039398973, 1065137390, 1072502688);\n\tWS(1040082544, -1114755812);\n\tsum1 = W(0, 1017784372, 1037505264, 1045745417, 1019379817) + W(1, -1109308706, -1124056118, 1025470519, 1039469090)\n\t\t + W(2, -1110974758, -1108514902, -1095324708, 1052579502) + W(3, 1058051822, 1046163210, 1038459986, 998280780)\n\t\t + W(4, 1040296296, 1041424680, 1054913780, -1106396419)\n\t\t + W(5, -1087512533, -1093666877, -1106674096, -1109356390)\n\t\t + W(6, 1024480479, -1104471944, -1106439461, -1115066496)\n\t\t + W(7, 1040857799, 1001482384, 995688529, -1108404770);\n\tsum2 = W(0, -1162396366, -1117720653, -1104226850, -1105580348)\n\t\t + W(1, -1105643813, 1031813906, 1011045214, 1018164327) + W(2, 1045315846, -1118054954, 1057942904, 1059476362)\n\t\t + W(3, -1090022037, 1045409162, -1106412098, 1023977529) + W(4, 1034748092, 1034773210, 1043388435, 1067689202)\n\t\t + W(5, -1083232471, -1101262587, -1124577575, -1102021751)\n\t\t + W(6, 1035646876, -1100298043, -1097646834, -1093789486)\n\t\t + W(7, 1040357620, -1113573448, 1012935222, 1024454049);\n\tWS(1036525168, -1082462584);\n\tsum1 = W(0, -1116308971, 1037298441, 1027885589, -1122874917)\n\t\t + W(1, -1154089797, -1108384819, 1028179743, 1003463273)\n\t\t + W(2, -1085123800, -1087372070, -1086414101, -1096064460)\n\t\t + W(3, -1099879381, -1104319094, -1127380522, -1096394215)\n\t\t + W(4, 1057675329, 1051660338, 1059597873, 1059581688) + W(5, 1052784510, -1117339864, 1039251609, -1110971807)\n\t\t + W(6, 1019612704, 1027541711, -1109257541, 1041073820) + W(7, 1028059367, 1045372305, 1031554934, 1053758651);\n\tsum2 =\n\t\tW(0, 1060691160, -1103295177, 1035985281, -1085964582) + W(1, -1105398566, -1107551093, 1049030608, -1090293163)\n\t\t+ W(2, -1081285622, -1090050073, -1102851017, 1072728426)\n\t\t+ W(3, 1060511611, 1033954581, -1086630634, 1058069039) + W(4, -1080809247, 1050684042, -1087522637, 1060852217)\n\t\t+ W(5, 1058511518, 1041242888, 1028348456, 1062481845) + W(6, 1052276353, -1106187369, 1048638013, -1090587145)\n\t\t+ W(7, 1029176048, -1094879840, 1046256182, -1087039462);\n\tWS(-1074352935, 1040600857);\n\tsum1 = W(0, 1042034194, 1028652336, 1024054004, 1030695172) + W(1, 1029627411, -1117605317, -1114002447, 1041624512)\n\t\t + W(2, 1057627204, 1025049468, 1057567995, 1022098295) + W(3, 1052602222, 1039437212, 1049556590, 1053416947)\n\t\t + W(4, -1090157751, -1105875707, -1088931067, -1095088235)\n\t\t + W(5, -1094832321, -1104356174, -1107260676, -1101255271)\n\t\t + W(6, 1024364622, -1105990299, 1048022018, -1100928004)\n\t\t + W(7, 1049957878, -1095846092, 1047165477, -1098759166);\n\tsum2 = W(0, -1075440350, -1079714919, -1079134350, -1081735031)\n\t\t + W(1, 1055569671, 1066585571, 1071644179, 1075476470) + W(2, 1073165865, 1065983198, 1068716226, 1066499710)\n\t\t + W(3, -1095308006, -1080754250, -1074800849, -1073191304)\n\t\t + W(4, -1112383192, 1048707236, -1135853868, -1098543278)\n\t\t + W(5, 1021808504, -1108920844, 1050977418, -1090378667)\n\t\t + W(6, -1148975848, -1115591486, 1038054064, -1125971282)\n\t\t + W(7, 1040311395, -1110109816, 1035370814, -1120408347);\n\tWS(1041022776, 1033480094);\n\tsum1 = W(0, -1132576057, -1123321429, 1028959481, -1104176578)\n\t\t + W(1, 1046472198, -1121060138, 1027556403, -1115611836) + W(2, 1026327841, 1042302896, 1052457903, 1063677500)\n\t\t + W(3, -1097607903, -1123802109, -1118671609, 1039698959)\n\t\t + W(4, -1110434490, -1109312954, -1089918670, 1025377120)\n\t\t + W(5, -1090934974, 1046523967, -1112257611, 1000531209)\n\t\t + W(6, -1119031508, 1021323174, 1029242558, -1118638740)\n\t\t + W(7, 1013298461, -1106699146, 1030036314, -1116635705);\n\tsum2 = W(0, -1106027239, -1122286155, -1102546078, 1055155948)\n\t\t + W(1, -1096754888, 1032068992, -1121774513, 1036170969)\n\t\t + W(2, 1049930690, -1127267122, 1041115945, -1091935564)\n\t\t + W(3, 1052250618, -1103388917, 1038737216, -1108790214)\n\t\t + W(4, -1110218398, -1108798456, 1058786995, 1075372513)\n\t\t + W(5, -1071163371, -1123143101, -1121707895, 1032355550)\n\t\t + W(6, 1034564779, 1018367610, -1095860458, 1043590800)\n\t\t + W(7, -1112711414, -1119323979, 1016553114, 1017858173);\n\tWS(1055618972, -1117202987);\n\tsum1 = W(0, 1030962480, -1101414710, -1098100923, -1111740150)\n\t\t + W(1, 1036980413, 1041005827, 1021681163, -1112834597) + W(2, 1039894129, 1053882576, 1057347458, 1049814740)\n\t\t + W(3, -1090053902, -1088233382, -1105970903, -1117339136)\n\t\t + W(4, -1101932469, -1089999221, -1085784352, 1051098296)\n\t\t + W(5, 1056052448, 1051763396, 1044301630, 1032801282) + W(6, 1031993659, 1048656807, 1043352452, 1031031542)\n\t\t + W(7, -1104607674, -1119077705, 1022017143, 1039235901);\n\tsum2 =\n\t\tW(0, -1114659327, -1123577690, 1042921002, -1105097716) + W(1, 1042773509, -1093975266, 1032061179, 1000405669)\n\t\t+ W(2, -1101541229, 1043634319, 1066882360, -1077668162)\n\t\t+ W(3, 1037629509, 1058638399, -1108208741, -1131856909)\n\t\t+ W(4, -1107338771, 1057974128, 1050113378, -1080704784) + W(5, 1051155360, 1052705661, 1008396554, -1111189711)\n\t\t+ W(6, 1039378885, -1111523166, 1040130625, -1104122760)\n\t\t+ W(7, 1012227066, -1110420726, -1125218199, 1025207949);\n\tWS(-1091387548, -1116324289);\n\tsum1 = W(0, 1026642697, 1044682252, 1041967213, 1032214050)\n\t\t + W(1, -1131062694, 1015214154, -1137069945, -1110158325)\n\t\t + W(2, -1112220622, -1093973688, 1046046637, -1086442024)\n\t\t + W(3, -1099996941, 1053177927, -1098783494, 1037567917)\n\t\t + W(4, 1049897926, 1047211372, 1050365286, -1112122925) + W(5, 1046223135, -1132096750, 1024489425, 1042021623)\n\t\t + W(6, 1027958127, -1098544270, -1112662293, -1106755108)\n\t\t + W(7, -1116559746, 1034258897, -1111108842, 1031638516);\n\tsum2 = W(0, -1108095393, 1016776222, 977935538, -1122468710) + W(1, 1019959206, 1030099429, -1104930054, 1002749526)\n\t\t + W(2, 1011776651, 1024100809, -1097248934, 1057627889) + W(3, 1042194141, -1117226417, 1051928720, 1041814459)\n\t\t + W(4, -1101257730, -1105403134, -1101986254, 1060632600)\n\t\t + W(5, -1090719303, 1037412790, -1109292621, -1115385474)\n\t\t + W(6, 1019145070, 1032882678, -1124027994, -1103033100)\n\t\t + W(7, 1039533068, -1110127978, -1125661478, -1108291818);\n\tWS(1057965518, -1118811194);\n\tsum1 = W(0, -1104352985, 1038892389, -1105058276, 1042490232)\n\t\t + W(1, -1121521774, -1099594944, 1033536020, -1095161930)\n\t\t + W(2, -1106566686, -1112643723, 1026830542, -1091938531)\n\t\t + W(3, 1058056073, -1101314965, -1098044778, 1039936570) + W(4, 1052732873, 1003767366, 1060358287, 1019887594)\n\t\t + W(5, -1118338013, 1042464324, 1024562028, 1046000094)\n\t\t + W(6, -1107147458, -1114250980, -1096574819, 1048844541)\n\t\t + W(7, 1024329053, -1107780158, 1032778872, -1107207172);\n\tsum2 = W(0, -1116205334, 1042905425, -1109155755, 1044205280)\n\t\t + W(1, 1035597621, 1008636092, 1036458751, -1092853308) + W(2, 993944814, -1113078065, 1044406596, 1040105843)\n\t\t + W(3, 1043112037, -1123380436, -1105268129, 1005260887)\n\t\t + W(4, 1032713731, -1104977559, 1048672381, -1104277422)\n\t\t + W(5, -1103087244, -1153474446, 1015784078, 1036094123)\n\t\t + W(6, -1106373772, 1039619019, -1115343154, 1048332350)\n\t\t + W(7, 999501191, -1106439836, 1021528398, -1106473413);\n\tWS(1053420700, 1049909457);\n\tsum1 =\n\t\tW(0, -1115258034, 1034071238, 1027276239, -1115686559) + W(1, 1041096236, -1102788144, 1034068157, -1107460367)\n\t\t+ W(2, -1106165874, -1089903413, 1036166247, -1100423414)\n\t\t+ W(3, -1093491554, 1049835542, -1095323722, -1110396954) + W(4, 1050401361, 1041332866, 1049384898, 1037380859)\n\t\t+ W(5, 1052388787, 1034784425, 1031952854, 1050882791) + W(6, -1113250117, 1023742249, -1130552842, -1120158506)\n\t\t+ W(7, 1037333727, -1103514783, 1037170040, -1114330639);\n\tsum2 = W(0, -1112500393, 1028289272, 1049127312, 1086771603) + W(1, 1048088739, 1020087240, 1014851096, -1146529543)\n\t\t + W(2, 1024557142, -1165623582, -1095250820, -1062269001)\n\t\t + W(3, -1095068995, 999933935, -1135945992, 1025716258)\n\t\t + W(4, -1136367764, 1035333264, -1114028070, -1087155359)\n\t\t + W(5, 1022077560, 1034746908, -1120864651, -1127622484)\n\t\t + W(6, 1020782048, -1122738507, 1025362120, 1034731082)\n\t\t + W(7, -1125007838, -1120796207, 1026594640, -1128255426);\n\tWS(1063806286, 1027083983);\n\tsum1 = W(0, -1114823180, 1030313470, -1111791457, -1111977289)\n\t\t + W(1, -1108043857, 1019729830, -1114640622, 1033983240) + W(2, 1045480194, 1039206373, 1061885616, 1050451993)\n\t\t + W(3, 1057912708, 1036575619, 1039765761, 1034424532)\n\t\t + W(4, -1118427516, -1106496703, 1010686340, -1083830979)\n\t\t + W(5, -1099420545, -1105267089, -1131920190, -1125840468)\n\t\t + W(6, -1109705966, 1020453816, -1103432478, 1039658735)\n\t\t + W(7, -1114670584, -1109909656, -1113587473, -1112770081);\n\tsum2 = W(0, 1033978022, -1100194899, 1033701105, 1050426550)\n\t\t + W(1, -1104028404, 1034191613, -1141130302, 1010895851)\n\t\t + W(2, -1122290634, -1091664523, -1071413373, 1075108998)\n\t\t + W(3, 1062092502, -1103668501, 1034149895, -1140709165)\n\t\t + W(4, 1016780797, -1103111994, 1047766898, -1096749849)\n\t\t + W(5, 1027350687, -1131589290, -1131724600, 1027888251)\n\t\t + W(6, -1164938552, 1002490582, -1105595809, 1051489664)\n\t\t + W(7, -1108336227, 1021076655, -1149103768, -1131210373);\n\tWS(1058288590, 1045994186);\n\tsum1 =\n\t\tW(0, 1018135640, -1123855059, 1040223430, -1112801779) + W(1, 1036317947, -1098800665, 1034707665, -1096517871)\n\t\t+ W(2, -1093342072, -1096797372, -1086390197, -1105293320)\n\t\t+ W(3, -1091216419, -1117054299, -1096209979, 1023470716) + W(4, 1052167946, 1041780692, 1052872019, 1059840396)\n\t\t+ W(5, 1051866430, 1050341107, 1048652350, 1050625648) + W(6, 1038262801, 1015346466, -1132654257, -1134794696)\n\t\t+ W(7, -1117665797, 1012611090, -1139713758, 1010858330);\n\tsum2 = W(0, 1041114210, -1099284356, 1038292116, -1092208278)\n\t\t + W(1, 1054381469, -1104534119, 1025804573, 1033400256)\n\t\t + W(2, -1099008397, 1047276236, -1081084758, -1071665325)\n\t\t + W(3, 1054365119, 1081581342, 1062322644, -1093538640)\n\t\t + W(4, -1123917868, -1111523652, 1037708884, -1086778305)\n\t\t + W(5, -1101037019, 1026238413, -1134916894, 1052085127)\n\t\t + W(6, -1125418381, -1120564910, 1020505319, -1100128811)\n\t\t + W(7, 1024474915, -1125603475, 1025011807, -1103707544);\n\tWS(-1088887374, 1070119449);\n\tsum1 = W(0, 1040460421, 1041554590, 1013850612, 1038262022) + W(1, 1042710919, -1106869091, 1044864290, 1046057615)\n\t\t + W(2, 1052058645, 1048371361, 1048732808, 1042754705) + W(3, 1047384127, 1054439312, 1032508990, 1042772520)\n\t\t + W(4, -1090595183, -1115426747, -1094790815, -1087902678)\n\t\t + W(5, -1106656361, -1090477876, -1122940954, -1091795237)\n\t\t + W(6, -1105506686, 1029097335, -1129317061, 1001782464)\n\t\t + W(7, 1038072126, -1131475029, 1028935005, -1119515740);\n\tsum2 =\n\t\tW(0, 1024604999, -1112923336, 1027433809, 1025504127) + W(1, 1007245204, -1144581942, -1129047399, 1021294865)\n\t\t+ W(2, 1056461606, 1030035123, 1050727550, -1090534096)\n\t\t+ W(3, -1105339223, -1095507508, 1043793174, -1095638178) + W(4, 1071685965, 1066713447, 1068313262, 1028028856)\n\t\t+ W(5, -1081367671, -1078816510, -1081156501, -1090770344)\n\t\t+ W(6, -1075212110, -1080779344, -1078194918, -1153515923)\n\t\t+ W(7, 1068056044, 1069903211, 1064173276, 1060536751);\n\tWS(1040470840, 1011790950);\n\tsum1 = W(0, 1015095158, -1120734562, -1116691398, -1118217942)\n\t\t + W(1, 1019898057, -1123629847, 1034607368, 1041822001) + W(2, 1043725275, 1051465082, 1058372660, 1055309890)\n\t\t + W(3, 1046636817, 1044874098, 1043010193, 1040878843)\n\t\t + W(4, -1105535856, -1108441440, -1095343471, -1081260869)\n\t\t + W(5, 1047492563, -1093096561, -1105294873, -1106259483)\n\t\t + W(6, -1108386992, 1030149375, -1112701741, 1026499745)\n\t\t + W(7, 1032201014, -1115283258, 1028457510, -1112399171);\n\tsum2 = W(0, 1022830461, 1021246145, 1015115055, -1114703004) + W(1, -1120910531, 1015720307, 983370825, -1123770073)\n\t\t + W(2, -1117997331, -1110014342, -1111993293, 1036613835)\n\t\t + W(3, 1023720090, -1117604953, -1120463052, 1036937497)\n\t\t + W(4, 1037270083, -1125616185, 1044158772, 1073620398)\n\t\t + W(5, -1076883688, -1087890801, 1025754476, -1113287589)\n\t\t + W(6, 1023767946, -1130403951, 1025796328, 1050812248)\n\t\t + W(7, -1112499600, 1028283916, -1104874229, 1033737696);\n\tWS(1058309838, -1101980246);\n\tsum1 = W(0, -1118965337, -1098779704, 1049071256, -1113399754)\n\t\t + W(1, 1026571427, -1110569018, -1131332475, -1128371676)\n\t\t + W(2, -1110907254, 1049643561, -1081904943, 1042163763)\n\t\t + W(3, 1052138696, -1106220306, 1025191299, -1129449041) + W(4, 1038642111, 1038999679, 1054751182, 1056093093)\n\t\t + W(5, -1083956910, 1050507993, -1146247429, 1030864044)\n\t\t + W(6, 1028903966, -1108240479, 1040887994, -1118832415)\n\t\t + W(7, 1046797612, -1104697276, -1123883748, 1017502086);\n\tsum2 = W(0, -1137655511, 1043191716, -1121349336, -1097517035)\n\t\t + W(1, 1046822141, -1129223371, -1116759551, -1124684976)\n\t\t + W(2, -1111106723, 1033166752, 1033268708, 1052576386) + W(3, -1107318253, -1102887232, 1040601750, 993535634)\n\t\t + W(4, 1035105104, -1112822728, -1104857525, 1055574555)\n\t\t + W(5, -1114990789, -1121581721, -1152414880, -1107957817)\n\t\t + W(6, -1112318930, 1027572041, 1035699332, -1097542777)\n\t\t + W(7, -1110157019, 1031007843, -1157281192, 1025775603);\n\tWS(1063710542, -1111213649);\n\tsum1 = W(0, 1039559517, -1110192145, -1107309859, -1118762901)\n\t\t + W(1, -1108199122, 1037245627, -1139769966, 1035326852) + W(2, 1052251350, 1049489370, 1058328276, 1061120005)\n\t\t + W(3, 1049656673, 1033876357, 1041987905, 1045428971)\n\t\t + W(4, -1101160384, -1097695264, -1093740712, -1096321197)\n\t\t + W(5, -1097289639, -1114972772, -1102516745, -1103522251)\n\t\t + W(6, -1113889808, 1031901152, -1104513406, -1097003636)\n\t\t + W(7, -1112381384, -1176476024, 1022802380, -1115185874);\n\tsum2 = W(0, 1026803387, 1021750253, 1040812059, -1107480079) + W(1, 1041131835, -1115082464, 1006187407, 1001155939)\n\t\t + W(2, -1115186477, 1031459540, -1116326399, 1040651083)\n\t\t + W(3, 1020594503, 1033768858, -1132516997, 1015478283) + W(4, 999853755, 1031446318, 1058720440, 1071698983)\n\t\t + W(5, 1051128601, 1034660038, 1027131696, 1041372466)\n\t\t + W(6, -1112425236, -1106593609, -1086524651, -1075753828)\n\t\t + W(7, -1096266051, -1108942599, -1123360193, -1104453127);\n\tWS(1039772272, -1082982873);\n\tsum1 = W(0, 1039127452, -1106264016, -1104546353, -1145518233)\n\t\t + W(1, 1041713673, 1044410893, 1039725795, 1007790526) + W(2, 1049032497, 1053169593, 1060522592, 1056693961)\n\t\t + W(3, -1095982984, -1088607916, -1099512929, -1120546088)\n\t\t + W(4, -1098139952, -1088020664, -1087153807, 1038834197)\n\t\t + W(5, 1053429837, 1048228018, 1030077856, -1130616150)\n\t\t + W(6, -1155633625, 1043520647, 1040400554, -1139907193)\n\t\t + W(7, -1104883452, -1103034636, -1134131855, 1012687882);\n\tsum2 = W(0, 1032987173, -1102803435, -1097110538, -1101871105)\n\t\t + W(1, -1101555589, -1123533577, -1098769512, 1048796624)\n\t\t + W(2, -1092902636, 1037122437, -1083842457, 1067610414) + W(3, 1033006847, 1041814167, 1045724867, 999019252)\n\t\t + W(4, 1027660911, 1039508875, -1115097563, 1067552095)\n\t\t + W(5, -1096151174, 1026567371, -1107225085, -1105667947)\n\t\t + W(6, 1032111389, -1101516234, 1001644292, -1104358647)\n\t\t + W(7, -1145661076, -1104681426, 1020958965, 1028203943);\n\tWS(-1101412664, 1073047832);\n\tsum1 = W(0, -1113880945, -1123950537, -1109995975, -1123565085)\n\t\t + W(1, -1123728428, 1035385983, -1115318676, 1010675502) + W(2, 1059007377, 1047579477, 1060416389, 1056063051)\n\t\t + W(3, 1046383171, 1040643140, 1033389702, 1041003725)\n\t\t + W(4, -1091904865, -1097814305, -1087199740, -1092124214)\n\t\t + W(5, -1099567891, 1038341800, -1119557930, 1042882861)\n\t\t + W(6, -1133362719, -1131741454, 1032803377, -1113780884)\n\t\t + W(7, -1113889390, -1126485237, 1012558775, -1096461162);\n\tsum2 = W(0, 1013686761, -1123503757, 1035262859, -1115490710)\n\t\t + W(1, 1025861040, 980681483, -1125276038, -1129892230) + W(2, 1030949359, 1039110679, -1105775253, 1027204409)\n\t\t + W(3, 1019519396, -1111394964, 1024413043, -1126757058)\n\t\t + W(4, -1109223248, 1035635962, -1106751414, 1057425426)\n\t\t + W(5, 1043312829, -1098000154, 1051287795, -1103421662) + W(6, -1132915573, 996209923, 1029135163, 1070858778)\n\t\t + W(7, 1067133266, -1098902818, -1083268694, -1073095921);\n\tWS(-1103532344, -1105840701);\n\tsum1 = W(0, -1106756472, -1106322913, 1029810954, -1096389739)\n\t\t + W(1, -1116067305, 1035916925, -1105566449, 1034505108)\n\t\t + W(2, -1105825052, 1053932942, -1086676361, -1098358914)\n\t\t + W(3, 1054020609, -1096691570, 1051257001, 1026552303) + W(4, 1050195304, 1007328528, 1057202097, 1054492326)\n\t\t + W(5, -1093369370, 1012599092, 1027855335, -1101687900)\n\t\t + W(6, 1044840709, -1104890465, -1144507642, -1098185309)\n\t\t + W(7, 1032208700, 1048715303, -1100267787, 1050640157);\n\tsum2 = W(0, -1111707317, -1119262447, 1037989791, 1056036881)\n\t\t + W(1, -1105645897, 1006194414, -1146663095, -1129479912)\n\t\t + W(2, -1101137684, -1109186725, 1049211868, -1099242284)\n\t\t + W(3, 1038198606, -1118866635, -1109483964, -1114787638)\n\t\t + W(4, -1116414033, -1107841286, 1056722210, -1094543747)\n\t\t + W(5, 1053421235, -1104714858, -1120693058, -1115357885)\n\t\t + W(6, -1103752872, 1034593530, -1110917586, 1049861706)\n\t\t + W(7, 1030171051, -1103907620, 1032413269, 1029169157);\n\tWS(1045178680, -1115117954);\n\tsum1 = W(0, -1102680211, -1123018420, -1116849368, 1024407336)\n\t\t + W(1, -1107241006, 1026392201, -1107918421, -1123314455)\n\t\t + W(2, 1048681528, -1113607536, -1092105355, -1093530556)\n\t\t + W(3, -1096193779, -1102060551, -1102337510, -1095199752)\n\t\t + W(4, 1019008549, 1040296293, 1035615004, 1061339424) + W(5, 1057711678, 1055864515, 1045891981, 1052562824)\n\t\t + W(6, 1008490315, 1012835273, 1027033246, -1128145511)\n\t\t + W(7, -1103222073, -1110547491, -1110097884, 1020395952);\n\tsum2 =\n\t\tW(0, -1108321996, -1115537892, -1106228104, 998645667) + W(1, -1112292909, 1035781218, -1111036660, 1018530825)\n\t\t+ W(2, -1096948503, -1104693583, 1047339287, 1055675007)\n\t\t+ W(3, 1049114511, -1100682049, 1032758858, -1113969306)\n\t\t+ W(4, -1112108000, -1112710060, -1126080161, 1051246853)\n\t\t+ W(5, 1041989299, 1025978716, 1034053890, -1113712936) + W(6, 1026091852, 1022753169, -1120501740, -1105262859)\n\t\t+ W(7, -1123292948, -1139782977, -1111667328, 1033000622);\n\tWS(1044590904, 1058699692);\n\tsum1 = W(0, 985175380, 1034192409, 1020554347, 1024014533) + W(1, -1115433194, -1128687821, 1008304190, -1115445028)\n\t\t + W(2, -1092606720, -1090621088, -1093618783, -1113905855)\n\t\t + W(3, -1096920415, -1112503613, -1100279725, -1101027255)\n\t\t + W(4, 1051210502, 1050384326, 1055009987, 1062574818) + W(5, 1054554325, 1031218808, -1105751509, -1144235755)\n\t\t + W(6, 1009220799, -1109361592, -1117059707, -1128567457)\n\t\t + W(7, 1015981863, 1039114097, -1127205548, 1035507338);\n\tsum2 = W(0, 1036009101, -1117283755, 1033667347, -1107239966)\n\t\t + W(1, 1034685217, -1128406639, -1123321687, -1125402335)\n\t\t + W(2, -1108619644, 1041337919, 1012813669, 1053310286)\n\t\t + W(3, -1103814148, 1029066827, -1109499964, -1123197815)\n\t\t + W(4, 1010492213, -1100684466, 1015579759, 1056064408)\n\t\t + W(5, 1050883237, -1113069964, -1098878001, -1096911819)\n\t\t + W(6, -1131279719, 1035041542, -1124020763, 1025470531)\n\t\t + W(7, 1032198922, -1104788458, 1024066141, -1108347132);\n\tWS(1044030776, -1089132931);\n\tsum1 = W(0, 1034269487, 1032883970, 1042439154, 1044751430) + W(1, 1019707982, 1041434446, -1133288904, -1128708109)\n\t\t + W(2, -1093699058, -1097458090, -1086092656, -1078975458)\n\t\t + W(3, 1035194756, 1038040390, -1131544335, -1101499019)\n\t\t + W(4, 1045160768, 1050995424, 1057188990, -1096290982) + W(5, 1032938655, 1043682915, 1022768458, 1043305900)\n\t\t + W(6, 1040395197, -1135242887, 1040422743, 1048952172) + W(7, 1042217766, 1043586045, 1029073256, 1044718778);\n\tsum2 = W(0, 1043294282, -1127265324, 1035036911, 1051203976)\n\t\t + W(1, -1092441683, 1037063919, -1095318743, -1096741875)\n\t\t + W(2, -1107262777, -1107127922, 1048700262, -1114081637)\n\t\t + W(3, 1027047222, -1087538045, 1043898666, -1114635611)\n\t\t + W(4, -1132728616, -1133435576, -1115280193, 1060204569)\n\t\t + W(5, -1096051714, 1059699424, -1091030613, 1057805441)\n\t\t + W(6, -1112978295, -1101649503, -1142433873, -1138065032)\n\t\t + W(7, 1049542158, 1027406094, 1036599707, -1117298502);\n\tWS(-1083489614, -1078579141);\n\tsum1 = W(0, -1113694287, 1048897616, -1104500498, 1029397720)\n\t\t + W(1, 1039983475, -1099529286, 1047818144, -1100400745)\n\t\t + W(2, -1091060438, -1104759380, -1089217572, -1096433234)\n\t\t + W(3, -1090900481, -1103761763, -1126261903, -1098862766)\n\t\t + W(4, 1048678744, 1055607032, 1025763911, 1056656214) + W(5, 1055730826, 1039576037, 1050842685, 1044462332)\n\t\t + W(6, 1022130309, 1045345264, -1098656951, 1045280313)\n\t\t + W(7, 1003335600, -1104729181, 1045845834, -1124798927);\n\tsum2 = W(0, 1034867092, 1036831152, -1155378720, 1050005016)\n\t\t + W(1, -1109019109, -1107857756, 1025727369, -1105627363)\n\t\t + W(2, -1113896283, 1008734783, -1107821706, 1036439980)\n\t\t + W(3, -1105188391, -1103852014, -1113326142, 1036502992)\n\t\t + W(4, -1089397746, -1143881728, -1090933436, 1067046868)\n\t\t + W(5, 1074023168, 1073004488, 1071596064, 1068047188) + W(6, 1053130734, 1048547317, 1050664536, -1081990202)\n\t\t + W(7, -1073616958, -1073650181, -1078582463, -1079035066);\n\tWS(-1123566816, -1118788492);\n\tsum1 =\n\t\tW(0, 1034266605, -1136553988, 1032767842, -1119057557) + W(1, 1032596498, -1138237144, 1034235800, 1038972738)\n\t\t+ W(2, -1131696345, 1054570946, 1043367745, 1057910725) + W(3, 1051309065, 1050053561, 1044754161, 1047609962)\n\t\t+ W(4, -1102436480, -1101485920, -1093672570, -1081257723)\n\t\t+ W(5, -1104247863, -1097237249, -1100737384, -1118734125)\n\t\t+ W(6, 1029920799, 1027694719, 1029228634, 1038070160) + W(7, 1041012541, -1104490509, 1036672371, -1101643609);\n\tsum2 = W(0, 1001205015, 1006355343, 1030505158, -1119701641)\n\t\t + W(1, 1039794598, -1107202062, 1026836118, -1115440174)\n\t\t + W(2, -1108935456, 1048575251, -1114918170, -1088419213)\n\t\t + W(3, 1032736312, 1045905661, -1116946341, 1003805295)\n\t\t + W(4, -1123729961, 1037564428, -1096130861, -1068662368)\n\t\t + W(5, 1076967646, 1068403675, -1104305708, -1124006983)\n\t\t + W(6, -1151981614, -1123825361, 1015236500, -1095410362)\n\t\t + W(7, 1049774729, -1105335733, 1050153445, -1103176791);\n\tWS(-1103567160, 1051728620);\n\tsum1 = W(0, 1022317012, -1105517764, -1109296554, 1030946149)\n\t\t + W(1, 1032988986, -1117957958, 1025729823, 1009731405) + W(2, 1037463598, 1027268637, 1052072875, -1094107172)\n\t\t + W(3, -1087396213, -1098739651, -1104965205, 1017302004)\n\t\t + W(4, -1094952698, -1107670055, -1103880757, 1052944567)\n\t\t + W(5, 1057943536, 1052382091, 1036164793, 1041821631) + W(6, 1033922872, 1024776175, 1038888053, 1043766492)\n\t\t + W(7, -1110506946, -1108829569, -1132271979, 1015545129);\n\tsum2 =\n\t\tW(0, 1031290011, -1114551402, -1137203270, 1025723227) + W(1, 1020823723, -1107112701, -1156747895, -1140368490)\n\t\t+ W(2, -1127050317, 1026829489, 1032334734, -1098446681) + W(3, 1041359246, 1041376772, 1034398482, -1104694439)\n\t\t+ W(4, -1113481669, 1042490649, 1043198364, -1127701979)\n\t\t+ W(5, 1057793899, -1100591458, -1114292550, 1037536680)\n\t\t+ W(6, -1080536402, -1076466135, 1038797044, 1074254195)\n\t\t+ W(7, 1035340712, -1118262367, 1013380262, 1032104302);\n\tWS(-1106439480, 1029090439);\n\tsum1 = W(0, 1034559195, -1151887836, 1020849475, 1042053132) + W(1, 1043127920, 1043814293, 1037260390, 1043715864)\n\t\t + W(2, 1042655458, 1030625962, 1059377738, -1084013087) + W(3, -1107145304, 1032281331, 1040913704, 1033172451)\n\t\t + W(4, -1102396839, -1115609614, -1089162129, -1083731653)\n\t\t + W(5, 1052971191, -1107154457, -1113717087, 1017680531) + W(6, 1026400220, 1035325646, 1042909598, 1039293086)\n\t\t + W(7, 1029716960, 1024778063, 1028666946, -1130742978);\n\tsum2 = W(0, -1129107524, -1123636938, -1116921954, 1035143287)\n\t\t + W(1, 1036996009, 1026655402, -1117010042, -1126794884)\n\t\t + W(2, 1021999108, -1148550480, -1104180688, 1058583951)\n\t\t + W(3, -1112895549, -1116180274, -1131502740, -1138164712)\n\t\t + W(4, 1022835844, 1016982596, 1016773924, 1054454385)\n\t\t + W(5, -1097314323, -1099699990, -1132536424, -1129763396)\n\t\t + W(6, -1129901940, -1140398984, 1030858450, -1117386658)\n\t\t + W(7, -1108156993, -1118751234, 1016259828, -1117013506);\n\tWS(1048151864, 1059242544);\n\tsum1 = W(0, -1122367849, -1121466768, 1042165293, -1116044868)\n\t\t + W(1, -1105437493, 1037358179, -1125163356, -1111398955)\n\t\t + W(2, -1097114939, -1097911384, -1085899247, 1042506911)\n\t\t + W(3, 1056857214, -1105063934, -1123578292, -1106114902)\n\t\t + W(4, 1043794348, 1033810391, 1063564267, 1042284551) + W(5, -1089674786, 1049648847, 1021855394, 1045389303)\n\t\t + W(6, 1026875087, 1014185912, -1106211614, -1111561384)\n\t\t + W(7, 1040868541, 1028107682, -1111395274, 1010402126);\n\tsum2 = W(0, -1139648101, -1108856547, 1015236663, -1095822659)\n\t\t + W(1, -1137977893, 1038373686, 1015865663, 1025690243) + W(2, -1110557326, 1041627874, 1032833232, 1054902128)\n\t\t + W(3, -1098765424, -1121592121, -1106594443, -1117564251)\n\t\t + W(4, -1106733442, -1106727608, 1048813377, 1055403310)\n\t\t + W(5, -1097123375, 1045561320, -1106386080, 1017823319) + W(6, 1039330638, 987619817, 1025349119, -1095503796)\n\t\t + W(7, 1050144719, -1108448514, 1041979856, -1105901385);\n\tWS(1058511566, 1043187024);\n\tsum1 = W(0, 1042620242, 1027981614, 1037513401, 1050564856) + W(1, 1040390932, 1044188393, 1032851398, 1043046140)\n\t\t + W(2, 1041476871, 1044640335, 1039039385, -1085132912)\n\t\t + W(3, -1095196494, -1116362934, -1107832665, -1105825814)\n\t\t + W(4, -1106861387, -1120607404, -1101062960, -1089194338)\n\t\t + W(5, 1032203084, -1134658518, 1026497359, -1105488567) + W(6, 1043942651, 1040914531, 1040902562, 1048598306)\n\t\t + W(7, 1019897185, 1032634704, 1027555603, 1032742569);\n\tsum2 =\n\t\tW(0, -1094808435, -1132385524, -1110994277, 1039748829) + W(1, 1038866141, 1012861192, 1030487914, -1132742376)\n\t\t+ W(2, -1083260450, -1089624726, -1098133391, 1063143581) + W(3, 1043371703, 1040218148, 1012758152, 1052570990)\n\t\t+ W(4, 1041967320, -1102801635, 1050258559, 1037743779) + W(5, 1048943341, -1112998265, 1031702418, -1105604919)\n\t\t+ W(6, 1026111290, 1034887813, -1123786474, 1033106845)\n\t\t+ W(7, -1110363077, -1121754906, 1012203560, -1111765769);\n\tWS(-1087236686, 1061665912);\n\tsum1 = W(0, -1115274057, -1116162424, -1104461343, -1093387666)\n\t\t + W(1, -1113556238, -1115159031, -1126942285, -1121543315)\n\t\t + W(2, 1023071688, 1030200068, 1054050807, 1067462106) + W(3, 1050597447, 1031104576, -1121547516, 1042315272)\n\t\t + W(4, -1107980923, -1101866270, -1092884195, 1056570668)\n\t\t + W(5, 1044256537, -1106234576, -1128835891, -1114796114)\n\t\t + W(6, -1119301463, -1128116268, -1109238785, -1095571507)\n\t\t + W(7, -1103733247, -1111522325, -1111458030, -1109780718);\n\tsum2 =\n\t\tW(0, -1127633710, 1024854732, -1123781128, 1040493279) + W(1, -1105896535, 1033983514, -1122459292, -1120616672)\n\t\t+ W(2, 1024134807, 1020748524, -1117094752, 1065417820) + W(3, 1047826025, -1102101577, 1040101538, -1124130304)\n\t\t+ W(4, -1114424195, -1098546148, -1079772750, 1059484680)\n\t\t+ W(5, -1107504040, 1049649199, -1105983778, 1041220419)\n\t\t+ W(6, -1109129714, 1025355297, -1102118069, -1114766469)\n\t\t+ W(7, 1033237727, -1154145757, 1012710689, -1123999628);\n\tWS(-1092106140, -1084163121);\n\tsum1 = W(0, 1036347305, 1016904817, 1034414494, 1040590819) + W(1, 1047670567, 1030378702, -1114654031, 1037868673)\n\t\t + W(2, 1049849489, 1040213041, 1056746079, 1048812489) + W(3, -1084779712, 1040726752, 1033236350, 1034988241)\n\t\t + W(4, -1101083230, -1152694122, -1083169173, -1107117385)\n\t\t + W(5, 1051667767, -1109066592, 1024925978, -1107106473)\n\t\t + W(6, -1106738110, -1115216475, 1039797369, 1022569263)\n\t\t + W(7, -1112982247, -1125038036, 1025136605, -1146668256);\n\tsum2 = W(0, -1144361879, -1128843246, 1005924247, -1104940693)\n\t\t + W(1, -1123234701, 1030348431, 1032437115, 1024671661)\n\t\t + W(2, -1111008682, -1134810723, 1041181160, 1054697191)\n\t\t + W(3, 1052731012, 1042931729, -1112071203, -1111460488)\n\t\t + W(4, -1092072719, -1121102479, 1045581242, 1046555600)\n\t\t + W(5, -1103970223, -1104348933, -1113690885, -1129885552)\n\t\t + W(6, 1021883158, -1116668390, -1109114373, -1113715104)\n\t\t + W(7, -1128555074, 1032936433, -1136719027, -1114960949);\n\tWS(1058637774, -1109876822);\n\tsum1 =\n\t\tW(0, -1123254812, 1041301297, -1108082435, -1113241451) + W(1, -1110973875, 1027216056, 1014894339, 1019588394)\n\t\t+ W(2, 1042623060, -1105094644, 1059472952, 1043969956) + W(3, -1113269955, 1026816394, -1130602892, 1026167148)\n\t\t+ W(4, -1126486401, -1111052512, -1094910408, -1094009726)\n\t\t+ W(5, 1058531737, -1100061186, 1032486130, -1117291247) + W(6, -1112485473, 1037949088, 1016105496, 1038892497)\n\t\t+ W(7, -1093047519, 1032398170, -1128303438, 1021704844);\n\tsum2 =\n\t\tW(0, 1019183838, 1031923668, 1049015983, -1096362417) + W(1, 1005830618, 1036998273, -1119396253, -1125844722)\n\t\t+ W(2, -1103677237, 1026573624, -1101357077, 1060010174) + W(3, -1122620605, -1106684685, 1023743335, 970656667)\n\t\t+ W(4, 1041385745, 1025625867, -1095136476, -1096248497)\n\t\t+ W(5, -1115221092, 1049273019, -1112424814, 1011280453)\n\t\t+ W(6, -1115238116, 1024201143, 1024442030, -1122837727) + W(7, 1034369966, 1031554545, 1004099770, 1010302645);\n\tWS(1068382951, -1145853862);\n\tsum1 = W(0, -1109092968, -1120835030, 1015957108, 1033165317)\n\t\t + W(1, 1015780402, -1098982451, -1106789039, -1105810191)\n\t\t + W(2, -1104283584, -1104742016, -1087137628, -1082841532)\n\t\t + W(3, 1048723479, -1119342334, 1037068029, 998682871) + W(4, -1126224104, 1048835390, 1060142968, 1050512116)\n\t\t + W(5, 1050625794, 1046183055, 1033167819, 1042826568) + W(6, -1142984099, 1035504970, 1044651720, 1036256010)\n\t\t + W(7, 1040271692, -1112268532, -1115364877, -1113754717);\n\tsum2 =\n\t\tW(0, 1042289605, -1123754179, 1040865617, 1025996190) + W(1, -1100913998, -1118459936, -1114401734, -1118182115)\n\t\t+ W(2, -1105845074, 1032442894, -1090127653, 1055606718) + W(3, -1104101067, 1026136504, 1031986833, 1045409779)\n\t\t+ W(4, -1105090355, -1106552079, -1075116096, 1073431719)\n\t\t+ W(5, 1067916428, 1042119939, -1112990087, 1031635830) + W(6, 1041479887, 1028813354, -1087510643, -1084272058)\n\t\t+ W(7, 1045036562, -1131666845, 1021173748, -1131440550);\n\tWS(-1115823328, -1115141930);\n\tsum1 = W(0, 994860217, 1043355533, 1046651158, 1031967699) + W(1, -1112906011, -1139800861, 1032268536, 1021673189)\n\t\t + W(2, -1096937968, -1093401724, -1082957735, 1057829358)\n\t\t + W(3, 1054780763, 1049387203, 1029694230, 1032667294) + W(4, 1034643656, 1045563268, 1056739037, 1053028032)\n\t\t + W(5, -1085595451, -1100812438, -1112691098, -1163065290)\n\t\t + W(6, 1022968545, -1100277972, -1106135459, -1113373017)\n\t\t + W(7, 1036473238, 1042166401, -1109328859, 1026417494);\n\tsum2 = W(0, 1041009418, -1106230161, -1113994011, -1100787264)\n\t\t + W(1, -1102450993, -1114680808, 1031764893, -1145068408)\n\t\t + W(2, 1006794492, 1034312638, -1108126219, 1060460225)\n\t\t + W(3, -1119222967, -1097084093, -1125377404, -1105852265)\n\t\t + W(4, 1023178506, -1120362931, -1105213924, 1054015707)\n\t\t + W(5, 1053508358, -1133314452, -1141774536, -1120752408)\n\t\t + W(6, -1126244586, 1021996758, -1131146954, 997147503)\n\t\t + W(7, -1107185372, -1126416406, -1126617106, -1131039214);\n\tWS(1044911928, 1063248560);\n\tsum1 =\n\t\tW(0, -1117210934, 1045807559, -1116245664, -1122601008) + W(1, 1041679280, -1102494868, 1044187563, -1101059428)\n\t\t+ W(2, -1089987573, 1006551364, -1085623154, -1098705597)\n\t\t+ W(3, -1089608778, -1098692501, 1040126000, -1100421777) + W(4, 1050931427, 1049202419, 1044690392, 1056494849)\n\t\t+ W(5, 1054654497, 1047881833, 1043119951, 1043071666) + W(6, -1154913199, 1049427019, -1098224261, 1043742399)\n\t\t+ W(7, 1009817082, -1102952115, 1048685800, -1132265536);\n\tsum2 = W(0, -1110897864, -1104703066, 1039476246, -1102025112)\n\t\t + W(1, 1041770976, 1044782005, -1112640404, 1045848501)\n\t\t + W(2, 1031814971, -1126406622, -1112535334, -1088994686)\n\t\t + W(3, 1050082866, 1038057456, 1029663347, -1098794387) + W(4, 1060526454, 1034850394, 1060516426, -1088701567)\n\t\t + W(5, -1072347435, -1075073775, -1077197270, -1081012351)\n\t\t + W(6, -1090228093, -1097166620, -1091926928, 1063814816)\n\t\t + W(7, 1074296249, 1073862535, 1067261757, 1067785227);\n\tWS(-1105546040, 1026157880);\n\tsum1 = W(0, 1040950836, 1036866652, 1045419231, 1057171433) + W(1, 1039696013, 1040737235, 1031337694, 1043417390)\n\t\t + W(2, 1040614249, 1043435937, 1048836647, -1092874056) + W(3, 1049109967, 1037560064, 1039556030, 1020658754)\n\t\t + W(4, -1102499357, 1032157499, -1088963702, -1078642173)\n\t\t + W(5, -1094603626, 999044599, -1107844556, -1101965321) + W(6, 1036650571, 1032871003, 1035867609, 1040635958)\n\t\t + W(7, 1039966133, 1035782037, 1034875342, 1029450491);\n\tsum2 = W(0, 999804672, 965076992, 1017997216, -1113573416) + W(1, 1015814944, 1013150208, 1004325632, -1116017408)\n\t\t + W(2, 1033414560, -1142972544, -1117537424, -1080122522)\n\t\t + W(3, -1116987776, 1009041344, 1030258512, -1123867424)\n\t\t + W(4, -1131242272, -1152459008, 1043660652, 1068973644)\n\t\t + W(5, -1113471168, 1023678672, -1115573696, 1025739248)\n\t\t + W(6, -1111239120, -1114613368, 1024438240, 1009242816)\n\t\t + W(7, 1026341216, -1111376032, -1124670336, 1011147520);\n\tWS(-1081027239, 1060388068);\n\tsum1 = W(0, 1040945153, 1018532824, 1048158700, 1050078256) + W(1, 1043330564, 1045983912, 1034126717, 1042366848)\n\t\t + W(2, 1049191505, 1052335227, 1053224518, -1089652372) + W(3, 1050009062, 1019623144, 1043374892, 1037373643)\n\t\t + W(4, -1103567931, -1106690587, -1098210230, -1079677805)\n\t\t + W(5, -1090769236, -1102526621, -1113976903, -1106920486)\n\t\t + W(6, -1142725077, -1126830164, 1044049241, 1037048166)\n\t\t + W(7, 1037549983, -1124021470, 1031972104, 1000910717);\n\tsum2 = W(0, 1029289565, 1023484285, 1041097307, 1044843621)\n\t\t + W(1, -1101664529, -1108647964, -1111945130, -1129898257)\n\t\t + W(2, -1119356133, 1031916514, -1120749829, 1057057740)\n\t\t + W(3, 1055633817, -1098024997, 1038083406, -1101101054)\n\t\t + W(4, -1126159585, -1111485988, -1121314077, 1024531885)\n\t\t + W(5, -1102656055, 1016983721, -1105960100, 1022769465)\n\t\t + W(6, -1119814653, -1133461586, -1112201820, 1001931237)\n\t\t + W(7, 1035253182, 1019582313, 1011319026, -1110859200);\n\tWS(-1121436896, -1083449266);\n\tsum1 = W(0, -1131437006, -1126965659, -1106898372, 1049661628)\n\t\t + W(1, -1110051320, 1048826500, 1018834023, 1030351624) + W(2, 1057845458, 1026072602, 1058188821, 1047051462)\n\t\t + W(3, 1036301673, 1049513187, 1026266705, 1043516478)\n\t\t + W(4, -1096100393, -1106937331, -1089458543, -1093909527)\n\t\t + W(5, -1105302990, -1097831955, -1115312055, -1094725407)\n\t\t + W(6, -1112818966, 1025271436, -1120770471, 1039868950)\n\t\t + W(7, -1101852248, 1048680544, -1111779257, -1137214404);\n\tsum2 = W(0, 1025140224, 1016993788, -1106156741, -1085967118)\n\t\t + W(1, -1070014283, -1066270592, -1089828448, -1115300709)\n\t\t + W(2, -1118806788, 1030590564, 1042721449, 1078987048) + W(3, 1078555235, 1069325982, 1051485796, 1026006822)\n\t\t + W(4, -1126785121, -1118559458, -1106137914, -1100137345)\n\t\t + W(5, 1044823121, -1105174392, -1121082393, 1011662011) + W(6, 1031495588, 991152164, 1038491925, 1040984057)\n\t\t + W(7, -1111978905, 1030579932, -1113499951, -1120641633);\n\tWS(1060473294, -1125032523);\n\tsum1 = W(0, -1118381578, -1131528546, -1103035725, 1044891665)\n\t\t + W(1, 1017562024, 1038728371, 1013193724, 1017619335) + W(2, 1043924207, 1048790648, 1057928103, -1096003632)\n\t\t + W(3, -1104437021, -1127678449, -1138265298, 1019650740)\n\t\t + W(4, 1028842287, -1094915206, 1048586166, -1089668066)\n\t\t + W(5, 1048997587, -1106021950, 1016196772, -1112334062)\n\t\t + W(6, -1103983036, 1032416951, -1131359957, 1041536420)\n\t\t + W(7, -1119623443, 1026802338, -1112764523, 1028850580);\n\tsum2 = W(0, -1124013145, -1154979909, -1113455493, 1042673063)\n\t\t + W(1, 1009341589, -1131887235, -1126494367, -1120394460)\n\t\t + W(2, 1023871771, -1104183315, 1024353365, -1099433949)\n\t\t + W(3, 1037029004, -1106752952, -1136822537, -1135604889)\n\t\t + W(4, 1041717973, -1104961174, -1071159846, 1075222357)\n\t\t + W(5, 1061754151, -1106459992, 1037905746, 1020599743)\n\t\t + W(6, 1027246941, -1105906795, -1114760758, 1048045634)\n\t\t + W(7, -1101645527, 1027783079, -1130069351, 1023779471);\n\tWS(1063175758, 1049951270);\n\tsum1 = W(0, 1051934199, 1041620825, 1053157077, 1019501037) + W(1, -1121035141, 1024394007, 1034798936, 999909159)\n\t\t + W(2, -1084051495, -1091045702, -1089200998, -1103613676)\n\t\t + W(3, -1103906809, 1042850683, -1117239270, -1106705027)\n\t\t + W(4, 1040719576, 1046456792, 1054477181, 1050464826)\n\t\t + W(5, -1098419444, -1097805325, 1011564046, -1091232034)\n\t\t + W(6, 1028219745, 1028165760, -1110307566, 1037889601) + W(7, 1045652053, 1054554722, 1031152711, 1056053333);\n\tsum2 =\n\t\tW(0, -1091471926, 1042259987, -1103057728, 1049412228) + W(1, 1044973062, -1116401558, 1011000463, -1130123924)\n\t\t+ W(2, 1062079447, -1095572989, -1089203271, -1092861102)\n\t\t+ W(3, 1034556296, 1047552828, -1110031497, 1051271629) + W(4, 1055700238, 1041645665, 1037140407, -1093629070)\n\t\t+ W(5, -1095940003, -1106623325, -1107294450, 1053844390) + W(6, 1015596856, 1033532620, 1035045090, 1042934527)\n\t\t+ W(7, 1032040702, -1106239816, 1033073048, -1095799213);\n\tWS(-1085388366, -1090694979);\n\tsum1 = W(0, -1123787314, -1119481145, 1032777214, -1112850502)\n\t\t + W(1, 1041751591, -1125429276, -1140788444, -1113892940)\n\t\t + W(2, 1044273497, -1130943626, 1047368143, 1059845268) + W(3, -1095680144, 1039407200, 990533574, 1032644049)\n\t\t + W(4, -1108110651, 1041576542, -1087220302, 1027588771)\n\t\t + W(5, 1036323946, -1111657568, 1021334836, -1143449895)\n\t\t + W(6, -1115475932, -1117135031, 1040347561, -1101064470)\n\t\t + W(7, 1037523789, -1126225621, -1134357621, -1109271006);\n\tsum2 = W(0, -1107190004, 1013881877, -1118295314, -1121103222)\n\t\t + W(1, -1127822751, -1115317828, -1126179247, -1114801766)\n\t\t + W(2, 1037736456, -1105376838, -1123416196, 1042717593)\n\t\t + W(3, -1115549939, 1043660085, -1126402007, 1040920849)\n\t\t + W(4, -1125693587, 1040619572, -1082924015, 1068021664)\n\t\t + W(5, 1016978358, -1108863865, -1136349779, -1107267301)\n\t\t + W(6, -1120404934, -1122228614, 1051908042, -1087341114)\n\t\t + W(7, 1042189807, -1125959243, 1038966556, 1023515477);\n\tWS(1065904679, -1122628785);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[525];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define temp_tex(pos) (float(texture(temp, pos).x))\nstatic const float2 temp_size = float2(GetInputSize().x * 1, GetInputSize().y * 2);\nstatic const float2 temp_pt = float2(1.0 / (temp_size.x), 1.0 / (temp_size.y));\n\n#define HOOKED_tex(pos) temp_tex(pos)\n#define HOOKED_size temp_size\n#define HOOKED_pt temp_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 525; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (1)) + 0.5, float(group_base.y + y - (3)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[8];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 6];\n\tsamples[1][3] = inp[local_pos + 7];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 19];\n\tsamples[3][1] = inp[local_pos + 20];\n\tsamples[3][2] = inp[local_pos + 21];\n\tsamples[3][3] = inp[local_pos + 22];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 32];\n\tsamples[4][3] = inp[local_pos + 33];\n\tsamples[5][0] = inp[local_pos + 34];\n\tsamples[5][1] = inp[local_pos + 35];\n\tsamples[5][2] = inp[local_pos + 36];\n\tsamples[5][3] = inp[local_pos + 37];\n\tsamples[6][0] = inp[local_pos + 45];\n\tsamples[6][1] = inp[local_pos + 46];\n\tsamples[6][2] = inp[local_pos + 47];\n\tsamples[6][3] = inp[local_pos + 48];\n\tsamples[7][0] = inp[local_pos + 49];\n\tsamples[7][1] = inp[local_pos + 50];\n\tsamples[7][2] = inp[local_pos + 51];\n\tsamples[7][3] = inp[local_pos + 52];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 18];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(2, 1);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1) + ivec2(1, 0), ret);\n}\n"
  },
  {
    "path": "src/Effects/NNEDI3/NNEDI3_nns128_win8x6.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: nnedi3.py --nns 128 --win 8x6 --use-compute-shader --use-magpie\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME NNEDI3_128_6\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 1 * 2\n//!HEIGHT INPUT_HEIGHT * 2 * 1\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH * 1\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D temp;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_temp;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC NNEDI3 (double_y, nns128, win8x6)\n//!IN INPUT\n//!OUT temp\n//!BLOCK_SIZE 32, 16\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[12]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 12; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 48.0;\n\tfloat mstd1 = sumsq / 48.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, -1138315554, 1017020226, 1054031418, -1098719688)\n\t\t + W(1, -1110814528, -1144117236, -1151849881, -1120184142)\n\t\t + W(2, 1052033568, -1094289569, 1026313661, 1029415347)\n\t\t + W(3, -1130100551, -1113913797, 1057266643, -1094215666)\n\t\t + W(4, -1136459684, -1122295896, -1139428474, -1137890034)\n\t\t + W(5, 1050615732, -1084764287, 1037955767, -1158862002)\n\t\t + W(6, -1115186183, -1105019328, 1060278709, -1093503073)\n\t\t + W(7, -1125342359, -1115484761, 1024054031, 1030136834)\n\t\t + W(8, 1051842684, -1122358095, -1118592012, 1027215228)\n\t\t + W(9, -1123693866, -1119041199, 1049323809, -1104408867)\n\t\t + W(10, -1141919603, -1148196514, -1134121575, 1009291685)\n\t\t + W(11, 1050624038, -1101060057, -1117980571, -1131405947);\n\tsum2 =\n\t\tW(0, 1011608699, -1112090344, 1035039469, 1018826733) + W(1, -1130070276, -1126912052, 1021515189, 1032910614)\n\t\t+ W(2, -1112298310, -1103038162, 1030536589, 1027816837)\n\t\t+ W(3, -1133688887, -1111235489, 1068933685, 1035541017)\n\t\t+ W(4, 1002846254, -1119314146, -1109181339, 1050015381)\n\t\t+ W(5, 1079505355, -1096237270, 1047170650, -1132054353) + W(6, 1032724543, 1041065097, -1082386736, 1051919390)\n\t\t+ W(7, 1012706615, 1004049262, -1120491130, -1106592726)\n\t\t+ W(8, -1067816278, -1101133158, -1108914015, 1017068057)\n\t\t+ W(9, 997621755, -1112521193, -1094139890, -1120644044) + W(10, 1011888367, 1020965593, 1020760181, 1032648390)\n\t\t+ W(11, -1123411157, 1029904493, -1115273665, 1017829425);\n\tWS(1038714296, 1044827315);\n\tsum1 = W(0, 1008773074, -1137155124, 1058392080, -1100726684)\n\t\t + W(1, -1097060854, 1034472653, 1000000044, -1139148008)\n\t\t + W(2, 1051571686, -1106613964, 1034039029, -1136883834)\n\t\t + W(3, -1125197471, -1110040196, 1058043460, -1093356205)\n\t\t + W(4, -1112523275, 1033872898, -1155069097, -1114984084)\n\t\t + W(5, 1059856605, -1087655353, -1137125990, -1122772178)\n\t\t + W(6, -1128457331, -1117135435, 1053821137, -1093486798)\n\t\t + W(7, -1134047198, -1125370043, -1147450330, 1038803511)\n\t\t + W(8, 1050763009, -1088451200, -1131894321, 1027534056)\n\t\t + W(9, -1142834606, -1110360429, 1046500044, -1109846237)\n\t\t + W(10, 1021083253, -1126166913, -1131672268, 1046900069)\n\t\t + W(11, 1049636107, -1093848946, -1108292068, 1020331091);\n\tsum2 = W(0, -1123255245, -1116671780, 1046375724, 1061532718) + W(1, 998291536, -1094346395, 982126402, -1111301077)\n\t\t + W(2, 1053914306, 1066141278, 1041257894, -1108898352) + W(3, 1020504368, 1011773496, 1013495848, 1064263836)\n\t\t + W(4, 1023442398, 1023084860, 1036976721, -1102830064)\n\t\t + W(5, -1106352300, 1055449836, -1101238723, 1037821947)\n\t\t + W(6, -1113656730, 1031803093, -1103067006, -1076699072)\n\t\t + W(7, -1103198508, -1123876988, -1157600449, 1045043848)\n\t\t + W(8, -1094946683, -1085904680, 1048924521, 1041381351)\n\t\t + W(9, -1129338356, 1026389126, 1036977493, -1099822488)\n\t\t + W(10, -1109968297, -1109391389, 1032297389, 1022832316)\n\t\t + W(11, -1098417421, -1092845936, 1053328593, 1023206676);\n\tWS(-1087781687, -1134030789);\n\tsum1 =\n\t\tW(0, 1028179002, -1113846601, -1090428884, 1056064759) + W(1, -1116809458, -1123784128, 1037437606, -1129634048)\n\t\t+ W(2, -1098510574, 1049319247, -1105760812, 1016685513)\n\t\t+ W(3, -1106850597, 1045066941, -1095161561, 1048732210)\n\t\t+ W(4, 1007721067, -1105661778, 1040743460, -1108576055) + W(5, -1094444002, 1054487227, 1050640540, 1048222150)\n\t\t+ W(6, -1123964671, 1030205873, -1095134094, 1044300425)\n\t\t+ W(7, 1040160031, -1110013906, -1122790273, -1117192467)\n\t\t+ W(8, -1098192922, 1055338520, -1106372902, 1033480951) + W(9, 1036030878, 1027547489, -1101066654, 1034894336)\n\t\t+ W(10, -1109703824, -1112122819, 1027799500, -1110675758)\n\t\t+ W(11, -1095206484, 1053272331, -1138309939, 1033810456);\n\tsum2 = W(0, 1023697539, -1119401943, 1010071413, 1025267901) + W(1, 988018625, -1122026299, -1134698244, 1013558867)\n\t\t + W(2, -1112961274, 1033970227, -1116217767, 1005039212)\n\t\t + W(3, 1018187921, -1119659280, 1019163177, 1048742053)\n\t\t + W(4, -1103390691, -1115786374, 1024534132, 1038666215)\n\t\t + W(5, -1097296472, 1082848284, -1064739318, 1042066180)\n\t\t + W(6, -1145140771, -1120396841, 1033089456, 1060700209)\n\t\t + W(7, -1086947071, 1017803659, -1142625275, 1035154544)\n\t\t + W(8, -1105855221, -1115995862, 1042818438, -1115628759)\n\t\t + W(9, -1141296989, -1131590401, -1156341795, 1035612397)\n\t\t + W(10, -1109434149, -1150181080, 1007645751, 1021197862)\n\t\t + W(11, -1120357988, -1123714371, 1029308077, 1011442501);\n\tWS(1060770743, -1108197568);\n\tsum1 =\n\t\tW(0, 1016886775, 1029069588, -1095627128, 1046558478) + W(1, -1146067869, 1009558662, -1160198547, 1038531041)\n\t\t+ W(2, -1096395039, 1048524254, -1097778094, 1033422755) + W(3, 1015246637, 1041390628, -1086831062, 1058409012)\n\t\t+ W(4, -1098986327, 1033638277, -1139668038, 1022402527) + W(5, 1057717017, 1050284011, -1110221104, 1029754521)\n\t\t+ W(6, 1034731136, -1103954605, 1056693263, -1083755424)\n\t\t+ W(7, 1042951984, -1119102757, 1019206597, -1112398730)\n\t\t+ W(8, 1053908426, -1092005688, 1037994808, -1130383710)\n\t\t+ W(9, -1123983389, -1117714338, 1043180606, -1101033824)\n\t\t+ W(10, 1025216609, -1114155844, -1115649126, 1039312430)\n\t\t+ W(11, 1038174992, -1131529899, 1000398449, -1129441697);\n\tsum2 =\n\t\tW(0, -1104188915, 1041755532, 1039915367, 1028942726) + W(1, 1030445090, -1104654601, 1026676440, -1099902739)\n\t\t+ W(2, 1048552390, -1105392496, -1104867005, 1033528857)\n\t\t+ W(3, -1122447814, 1020538503, -1105911641, -1106738713)\n\t\t+ W(4, -1106850996, 989961401, 1024214572, -1096783078) + W(5, 1068731351, 1066518668, -1126700225, -1133955554)\n\t\t+ W(6, 1036156927, -1094671115, -1096057439, -1122053390)\n\t\t+ W(7, 1025639958, -1153726297, 1039804037, -1096595186)\n\t\t+ W(8, -1091471401, -1123632409, -1113480650, 1032072745)\n\t\t+ W(9, -1140508998, -1108992818, 1033306823, 1032650381)\n\t\t+ W(10, -1115144981, -1128986161, 1023379743, 1023478108)\n\t\t+ W(11, -1096750685, -1109607147, 1031767054, 1023561226);\n\tWS(-1105940700, 1068951582);\n\tsum1 =\n\t\tW(0, 1000087558, -1126610867, 1040363554, -1103531583) + W(1, -1126498674, 1033586531, 1035444041, -1119652358)\n\t\t+ W(2, 1048983991, -1095183320, 1041424541, 1011542187) + W(3, 1016288952, -1105308514, -1129232537, 1035540828)\n\t\t+ W(4, -1116171169, 1018737568, 1033866603, 1025089333) + W(5, 1043404182, -1091977028, -1108874003, 1021129404)\n\t\t+ W(6, 1023501510, -1101500686, 1050470779, -1098956255) + W(7, -1107291841, 1033496245, 1030903912, 1024487034)\n\t\t+ W(8, 1032787659, 1016827662, -1115835365, 1023594100) + W(9, -1121882082, 1036868116, 1042688239, -1107477027)\n\t\t+ W(10, 1038297635, 1015384473, -1139243976, -1137536646)\n\t\t+ W(11, 1051055933, -1111432589, -1101253029, 1034920923);\n\tsum2 = W(0, -1123978268, -1102554320, 1043643239, 1026913323)\n\t\t + W(1, 1031431539, -1112242992, -1122059260, 1044079872)\n\t\t + W(2, -1111536011, 1056944699, 1037617295, 1005844362)\n\t\t + W(3, -1123592170, -1093658955, 1042723115, -1093217948)\n\t\t + W(4, -1103624535, -1101249260, 1036141312, -1094337979)\n\t\t + W(5, 1067907418, 1064662115, -1090550375, 1042545272)\n\t\t + W(6, -1111710804, 1045282706, -1118927202, -1091166584)\n\t\t + W(7, -1119161360, -1111294278, -1127043568, -1139302445)\n\t\t + W(8, 1035940631, -1092135065, -1112133073, 1025042022) + W(9, 1040694361, 983065168, 1016057395, 1041761864)\n\t\t + W(10, 1014979737, 1026789959, -1120657957, -1105233712)\n\t\t + W(11, 1027935282, -1104693620, -1106943303, -1114223884);\n\tWS(1061289911, -1074625008);\n\tsum1 =\n\t\tW(0, -1118986355, 1035013222, 1058027688, -1087592511) + W(1, -1107213995, 1048036382, 1042690449, -1110099132)\n\t\t+ W(2, 1047068971, 1013931199, 1008030621, -1106703359) + W(3, 1022020251, 1048074309, 1036127926, -1088015817)\n\t\t+ W(4, 1042727509, 1044183504, 1032007652, -1101544522) + W(5, 1058005973, -1099315493, -1093058723, 1029001296)\n\t\t+ W(6, 1040686510, -1102744618, 1048070472, -1091144488)\n\t\t+ W(7, 1042938237, -1106075703, -1108674269, 1043103143) + W(8, 1057593649, -1088950448, 1002612916, 1048869669)\n\t\t+ W(9, -1123719572, -1099009366, 1043345580, 1033106140)\n\t\t+ W(10, -1110941900, -1107279296, 1033202498, 1038471242)\n\t\t+ W(11, 1055515931, -1090129177, -1113377491, 1042195418);\n\tsum2 =\n\t\tW(0, 1034897388, 1047600068, -1092005485, 1032211690) + W(1, 1046053217, -1111289614, -1104469346, 1074182899)\n\t\t+ W(2, -1074957140, -1124075063, 981988140, 990179414) + W(3, -1104312342, 1080728354, -1067981267, -1100127529)\n\t\t+ W(4, 1036844207, -1123826485, 1033162274, 1077196082)\n\t\t+ W(5, -1071410100, -1093339345, 1030504779, -1109598746)\n\t\t+ W(6, 1001538203, 1039546617, -1101189403, 1036352485) + W(7, 1025223671, 1036519612, -1119055011, -1121476275)\n\t\t+ W(8, 1042351425, 1008083901, -1101604075, -1146561467)\n\t\t+ W(9, 1036889309, -1113609974, -1113906708, 1032631324)\n\t\t+ W(10, 1034478190, 1017678167, -1122390571, -1124909535)\n\t\t+ W(11, 1037135096, 1002134635, -1113103836, -1132393287);\n\tWS(-1106894556, 1030995446);\n\tsum1 =\n\t\tW(0, 1025589699, 1033805806, 1034528997, -1098701288) + W(1, -1119393787, 1027839817, -1123387156, 1025291593)\n\t\t+ W(2, 1054610112, -1096105008, 1037953340, -1123546765)\n\t\t+ W(3, 1028556318, -1127599047, 1039781117, -1091536615)\n\t\t+ W(4, -1120434724, 1027349522, -1139656804, -1105750398)\n\t\t+ W(5, 1065523109, -1090836572, -1103173850, 1022652480) + W(6, 980812294, -1104274718, 1054896451, -1097995702)\n\t\t+ W(7, -1111869411, -1135075504, -1128131860, -1117867836)\n\t\t+ W(8, 1045458038, 1039238949, -1104116474, -1125284461)\n\t\t+ W(9, -1137342353, 1018769427, 1040199808, -1110811780)\n\t\t+ W(10, -1129786002, -1152753902, 1017797929, -1114245906)\n\t\t+ W(11, 1047692618, 1001735913, -1106977725, -1131064048);\n\tsum2 = W(0, 1030581609, -1096073996, -1104952058, 1036583621)\n\t\t + W(1, 1006888722, 1023568502, -1110091164, -1132437108)\n\t\t + W(2, 1031847146, 1040176294, -1120421639, -1124563800) + W(3, 1024868796, 1051933742, 1077840619, 1056082302)\n\t\t + W(4, -1114613612, 1026684617, -1124528958, 1042406776)\n\t\t + W(5, -1071401906, -1080138625, 1012484405, -1114165836)\n\t\t + W(6, -1175372351, -1117745155, -1108532142, 1039833458)\n\t\t + W(7, 1044393926, -1139194300, 1022252519, -1117509823)\n\t\t + W(8, -1107574374, 1041695761, -1112420268, 1023135287)\n\t\t + W(9, -1123141270, -1110977956, 1034777920, -1119756119)\n\t\t + W(10, 1028893644, -1122696127, -1123316826, 1029056744)\n\t\t + W(11, 1034383482, 977900031, 1027961212, 1034470668);\n\tWS(-1094248046, 1034739186);\n\tsum1 =\n\t\tW(0, -1121641997, 1043421097, -1090462057, 1057979744) + W(1, 1042504017, 1019430629, -1148807918, -1114752489)\n\t\t+ W(2, -1097763033, 1045790578, -1105205440, -1115505835)\n\t\t+ W(3, -1119896808, 1040593858, -1089339622, 1054873978) + W(4, 1029920941, 1008619887, -1118546659, 1043491504)\n\t\t+ W(5, -1089142502, 1054724534, -1114903193, 1038945077)\n\t\t+ W(6, -1117202258, 1033892386, -1089696734, 1056858543) + W(7, -1102740772, 1025474934, 1027770003, 1035924243)\n\t\t+ W(8, -1098379668, 1046524773, 1042806872, -1148381698)\n\t\t+ W(9, -1121511758, 1032482905, -1096843609, 1049846778)\n\t\t+ W(10, -1103488653, 1017864241, -1114510703, 1031829015)\n\t\t+ W(11, -1089945727, 1056083605, 1031492831, 1029503362);\n\tsum2 =\n\t\tW(0, 1032629114, -1111104155, -1111175727, 1069180600) + W(1, -1092657949, -1081878912, 1024571549, 1022922994)\n\t\t+ W(2, 1047799465, 1065968459, -1106624299, -1085703668)\n\t\t+ W(3, -1123705993, 1036988882, -1121840686, 1066031139)\n\t\t+ W(4, 1026540087, -1080884055, -1120833813, -1104365480)\n\t\t+ W(5, -1098359864, 1064223912, 1044325339, -1079207816) + W(6, 1031286487, 1038064580, 1008715668, 1062275672)\n\t\t+ W(7, 1048614780, -1083548865, -1113289848, -1119955010)\n\t\t+ W(8, -1115327032, 1060225053, -1117772151, -1085294305) + W(9, 1033808184, 1018164430, 1042276675, 1060364945)\n\t\t+ W(10, -1105153406, -1090372695, 1035572024, -1144675449)\n\t\t+ W(11, -1114533548, 1057151625, -1103516228, -1100806033);\n\tWS(-1095016302, 1049780935);\n\tsum1 =\n\t\tW(0, -1140214663, 1050711943, 1044505338, -1092537964) + W(1, -1110639373, 1025322472, 1008440267, -1110792724)\n\t\t+ W(2, 1051364259, -1101785640, 1026645590, 1024485132) + W(3, -1137823987, 1036012635, 1051977632, -1091742968)\n\t\t+ W(4, -1130979716, 1018037601, 1035221148, -1104496021)\n\t\t+ W(5, 1058946996, -1090015552, -1106527650, 1032762847)\n\t\t+ W(6, 1007510683, -1145733059, 1056967247, -1090979415)\n\t\t+ W(7, -1146016549, 1010918699, 1029727784, -1109552317) + W(8, 1057598839, -1088424934, 1015167915, 1027572437)\n\t\t+ W(9, -1142229143, -1115585956, 1050931556, -1096995861)\n\t\t+ W(10, 1009720606, -1127055707, 1025812851, -1142816275)\n\t\t+ W(11, 1058283380, -1095074239, -1105047309, 1011865435);\n\tsum2 = W(0, 1040969494, -1087779211, 1056604611, 1059045592) + W(1, -1085730308, 1035668628, 1036141535, 1033693595)\n\t\t + W(2, -1095617275, 1037950807, 1051875566, -1110274633)\n\t\t + W(3, -1136101349, -1096934819, 1057610078, 1059474718)\n\t\t + W(4, -1104408796, -1106464684, 1015318832, 1042126031)\n\t\t + W(5, 1059711341, 1079595174, 1011257519, -1106179801)\n\t\t + W(6, -1112220931, 1036377831, -1098744628, 1065421414)\n\t\t + W(7, -1102027272, 1035078820, -1111621316, 1046621966)\n\t\t + W(8, -1088974739, -1079659864, -1097874228, 1045400280)\n\t\t + W(9, 1042180910, -1129542795, -1112239718, -1077353318)\n\t\t + W(10, -1123714793, -1122902412, -1115487487, 1052735842)\n\t\t + W(11, -1089093989, -1076641223, -1089345613, 1057832501);\n\tWS(-1081166556, -1096725839);\n\tsum1 = W(0, -1146977357, -1114510289, 1050030946, -1102646113)\n\t\t + W(1, -1113153825, -1114582784, -1130642485, -1119269199)\n\t\t + W(2, 1045921361, -1098664649, 992772066, 1022415207) + W(3, 1032268722, 1038356317, 1039889859, 1027769520)\n\t\t + W(4, 1041426283, 1025422681, -1111253552, -1095921640)\n\t\t + W(5, 1057711094, -1089074675, -1107182252, -1098886685)\n\t\t + W(6, 1024786511, 1038758688, 1053078718, -1098156409) + W(7, 1043642083, 1036466489, 1021187873, -1102108905)\n\t\t + W(8, 1045805544, -1106011300, -1131324475, -1129952762)\n\t\t + W(9, -1115200917, -1117501552, 1042557010, -1102728052)\n\t\t + W(10, -1148235644, -1133449046, 1021141494, 1024092394)\n\t\t + W(11, 1052716334, -1107570834, -1153593794, 1012650491);\n\tsum2 =\n\t\tW(0, -1154116071, 1032309947, -1123962703, -1133231158) + W(1, -1128886461, 1035599863, -1120032365, 1017679770)\n\t\t+ W(2, 1025906643, -1134787122, -1108727038, 1039832482)\n\t\t+ W(3, 1033357218, -1118521489, 1007375557, -1096414395) + W(4, 1020492423, 1035524914, -1132933754, 1020082264)\n\t\t+ W(5, -1114291801, 1064675801, -1080568363, 1059399952)\n\t\t+ W(6, -1165588207, -1122971142, -1114360955, -1097709607)\n\t\t+ W(7, -1108104258, 1040378905, 1029048100, 1015972752) + W(8, 1031540723, 1040110606, -1112615988, 1024318985)\n\t\t+ W(9, -1115144648, 1021714009, -1136421576, -1121524587)\n\t\t+ W(10, -1111963053, 1036458899, 1020455541, -1134334294)\n\t\t+ W(11, 1014310369, -1119507729, 1028363593, -1122706022);\n\tWS(1058284215, -1100256461);\n\tsum1 = W(0, -1136333391, 1042064203, 1048792691, -1108621703) + W(1, -1107171315, 1009105958, 977549609, 1017583666)\n\t\t + W(2, 1037147366, -1098054746, 1036542212, -1118222526)\n\t\t + W(3, 1023954799, -1103445177, 1061193316, -1084539629) + W(4, 1001865121, 1005641493, 1032458293, 1003134525)\n\t\t + W(5, 1055543997, -1105743629, -1113492892, 1001049989)\n\t\t + W(6, -1131855793, 1030077610, -1089393894, 1061657482)\n\t\t + W(7, -1095280499, -1141919717, -1132003829, 1044505715)\n\t\t + W(8, -1102389770, -1111653453, 1000070140, 1031530183)\n\t\t + W(9, 1014651348, 1034368605, -1126089633, 1032593324)\n\t\t + W(10, -1124982771, 957669220, 1007647892, -1109681210)\n\t\t + W(11, 1030932473, -1134741175, 1012906393, -1123915241);\n\tsum2 =\n\t\tW(0, 1025749667, 1018718450, -1104497483, -1109821356) + W(1, 1032840840, 1009497507, -1112523495, 1033569638)\n\t\t+ W(2, -1111912018, 1026676021, -1114119398, 1017944258)\n\t\t+ W(3, 1034709000, -1099586256, -1087345020, -1092985416)\n\t\t+ W(4, 1018773778, 1033599708, 1021531102, -1096388774) + W(5, 1061077725, 1065372034, -1129773592, -1109427758)\n\t\t+ W(6, -1129693762, -1109846828, 1049253485, 1048850468)\n\t\t+ W(7, -1101038787, 1029395381, 1006685387, -1112379914)\n\t\t+ W(8, -1117456886, -1106255761, 1043058397, -1106769492)\n\t\t+ W(9, -1119027428, 1008781387, 1038233914, 1013968523)\n\t\t+ W(10, -1113511705, 1020319838, -1106459716, 1045287677)\n\t\t+ W(11, -1135366091, -1138431127, 1037121278, -1113647178);\n\tWS(1048665454, 1062854025);\n\tsum1 =\n\t\tW(0, 1004974300, -1140401360, 1040482153, -1107105990) + W(1, -1113947114, 1004764812, 1032679478, -1099989608)\n\t\t+ W(2, 1038119146, -1094089019, 1043046180, -1132148363)\n\t\t+ W(3, 1041394910, -1108003052, 1050737065, -1084721726) + W(4, 1044891839, 1022372181, 1026224498, -1103518244)\n\t\t+ W(5, 1054936910, 1054691719, 1025601857, -1113753404) + W(6, -1128844481, 1044968661, -1084409495, 1057517320)\n\t\t+ W(7, 1022006333, 1033354242, -1137588617, 1040271757) + W(8, -1099872844, 1035416977, 1017193535, -1131287582)\n\t\t+ W(9, -1115578718, 1031459778, -1107158134, 1033669936)\n\t\t+ W(10, 1025595521, -1112957780, -1128306202, -1114933822)\n\t\t+ W(11, 1038726400, 1032390235, 1023203548, 1012659010);\n\tsum2 = W(0, -1120028750, -1116919239, 1026537129, 1032246372)\n\t\t + W(1, 1047938064, -1102851233, -1137390044, 1034599590)\n\t\t + W(2, -1105861815, -1095438265, 1022176478, -1129352893)\n\t\t + W(3, 1031876652, -1110926857, -1114848017, -1093245727)\n\t\t + W(4, -1093210017, 1046245506, -1112211314, 1037510574)\n\t\t + W(5, 1054207178, 1062401065, -1118385188, -1106645860)\n\t\t + W(6, 1041988042, -1091078601, 1059021754, -1115099719)\n\t\t + W(7, -1104427658, 1043294706, -1105672202, 1052042083)\n\t\t + W(8, -1104155840, -1100501338, 1013766280, 1016480352)\n\t\t + W(9, 1032816067, -1102117757, 1047757772, -1112097107)\n\t\t + W(10, 1027075631, -1113418727, -1122489809, 1043447553)\n\t\t + W(11, -1115066040, -1102195598, 1027463789, 1030659187);\n\tWS(1046819548, -1112403026);\n\tsum1 =\n\t\tW(0, 1043575156, -1096536373, 1028458839, 1042563315) + W(1, -1147631681, -1134760216, -1118831073, 1040283909)\n\t\t+ W(2, 1047473762, -1108795847, -1115473730, 1037371629) + W(3, 1028002987, 1049135339, -1083606160, 1040849058)\n\t\t+ W(4, 1015994849, 1036578576, 1025124390, -1115136450) + W(5, 1052252597, 1045384892, -1102431101, -1147407721)\n\t\t+ W(6, 1023377962, -1127238030, 1054448495, -1081137782) + W(7, 1046487189, 1029054905, 1034880715, 1042113706)\n\t\t+ W(8, -1106041242, 1040945110, 1026652836, -1113175874)\n\t\t+ W(9, -1125071779, -1124049974, 1031800519, 1026387221)\n\t\t+ W(10, -1096718751, 1032040846, -1144027915, 1045174012)\n\t\t+ W(11, -1138801364, -1122981994, 1030118403, -1121286085);\n\tsum2 =\n\t\tW(0, -1116472244, 1036928405, 1035706238, -1121318128) + W(1, -1114868876, 1033058067, 1025044698, -1122373594)\n\t\t+ W(2, 1040619830, -1104861162, 1034962287, -1110745183)\n\t\t+ W(3, -1123391126, -1111538981, 1046111644, 1038958235)\n\t\t+ W(4, 1034772140, -1130393948, 1003069456, -1111848203) + W(5, 1044878634, 1050016986, -1113883437, 1005454840)\n\t\t+ W(6, -1129719684, 1027481573, 1017226015, 1040124875) + W(7, -1114732111, -1105702279, -1110477199, 990411281)\n\t\t+ W(8, 1030695866, -1116142138, -1102609372, 1029172520)\n\t\t+ W(9, 1023677849, -1136822924, -1114454329, -1113301330)\n\t\t+ W(10, 1029458562, -1112847239, 989635105, -1136314996)\n\t\t+ W(11, 1007553654, -1112411005, -1109652887, -1150621057);\n\tWS(1054158702, -1098491196);\n\tsum1 = W(0, -1129450472, -1119237644, -1101713087, 1033589815) + W(1, 1034513750, 1023147092, 983582877, 1026235385)\n\t\t + W(2, -1098493798, 1048228620, -1123359016, -1173092218)\n\t\t + W(3, -1121209423, 1037197666, -1083899440, 1060260620)\n\t\t + W(4, -1103037013, 1035595873, -1121678922, 1031464488)\n\t\t + W(5, -1103778771, 1056756834, -1122982297, 1020058530)\n\t\t + W(6, 1031290553, -1099798307, 1057005120, -1093716116)\n\t\t + W(7, 1049393023, -1117980637, -1119715259, -1102325483)\n\t\t + W(8, 1046824098, -1102446942, 1028221304, -1124996559)\n\t\t + W(9, 1032360987, -1107157175, 1037130136, -1111054172)\n\t\t + W(10, 1041637742, -1115548960, -1115265987, 1036899466)\n\t\t + W(11, 1011053924, -1132207900, 992781927, 995105423);\n\tsum2 =\n\t\tW(0, 1022318336, 1013555797, -1107715656, 1023151297) + W(1, 1033284778, -1133592549, -1115650269, 1016103802)\n\t\t+ W(2, -1119261847, -1114491928, -1130031974, -1142562170)\n\t\t+ W(3, 1023537352, 1041650416, 1043696631, 1042399799) + W(4, -1108010060, -1132296546, -1109544964, 1052577828)\n\t\t+ W(5, -1093802466, -1088107917, 1027122983, 1012286637)\n\t\t+ W(6, -1104797311, -1105646271, 1070961498, 1046742027)\n\t\t+ W(7, -1123089325, -1129646858, 1016525394, -1089308865)\n\t\t+ W(8, -1101461419, 1041655381, 1023301191, -1123666701)\n\t\t+ W(9, 1034835508, -1093424353, -1129647390, 1027817568)\n\t\t+ W(10, 1010592861, 1020078242, 1033208955, -1123233885)\n\t\t+ W(11, -1103638866, -1123805293, 1027104379, 1017326494);\n\tWS(-1098756718, 1025257793);\n\tsum1 =\n\t\tW(0, -1170432841, 1023803110, -1090131561, 1057699745) + W(1, -1119694405, 1012926412, 992949730, -1138344011)\n\t\t+ W(2, -1107275570, 1040420307, -1117188674, -1123369303)\n\t\t+ W(3, 1001883457, 1026014126, -1096556254, 1054103406)\n\t\t+ W(4, -1115724526, -1127845816, 1015181254, -1121590721)\n\t\t+ W(5, -1096688477, 1044394251, 1029634610, 1035099253)\n\t\t+ W(6, -1113865961, -1118191492, -1094031636, 1054646511)\n\t\t+ W(7, -1140440641, -1114907963, 1025052052, -1131017933)\n\t\t+ W(8, -1105028073, 1053702338, -1105231572, 1041135600) + W(9, -1142935155, 992699702, -1106433523, 1018441892)\n\t\t+ W(10, 1028218227, -1110839852, 1028407518, -1125677724)\n\t\t+ W(11, -1094260670, 1056434389, -1115106656, 1033590433);\n\tsum2 =\n\t\tW(0, -1113857499, 1035336978, 1003212424, 1016146718) + W(1, -1124908942, 1007728744, 1017397942, 977119295)\n\t\t+ W(2, -1169985407, -1139136560, -1127032094, 1015257206) + W(3, 994248048, 1058657166, -1086726098, 1029663775)\n\t\t+ W(4, -1128987279, -1139895388, -1107301692, 1082282453)\n\t\t+ W(5, -1067974855, -1088717558, 1045162011, 989071903) + W(6, -1114604929, 1081592322, -1065596346, 1032721198)\n\t\t+ W(7, -1132432620, -1115423533, -1099171315, 1057428850)\n\t\t+ W(8, -1101606461, -1109521003, 1001306728, 1026551071)\n\t\t+ W(9, -1128156929, 1029982493, -1114706375, 1035913834)\n\t\t+ W(10, -1127893472, -1124574009, -1105825924, 1050573738)\n\t\t+ W(11, -1113547007, -1115579388, 1022139202, 999865176);\n\tWS(1057488311, 1032489366);\n\tsum1 = W(0, 998859696, -1107316871, -1130375162, 1045821468)\n\t\t + W(1, 1009430200, -1127874328, -1126361486, 1034785118)\n\t\t + W(2, -1098594694, 1031878554, -1137835434, -1124885440)\n\t\t + W(3, 1028022609, -1114064513, -1105098668, 1057263754)\n\t\t + W(4, -1104540630, -1121514949, -1139957040, 1048520075)\n\t\t + W(5, -1099155379, -1127500588, 1033795278, 1026343507)\n\t\t + W(6, 1015295094, -1112481238, -1109749909, 1049599048)\n\t\t + W(7, -1105774078, 1007199100, -1122345661, -1154023155)\n\t\t + W(8, -1112014022, 1025402492, 1046311438, -1119007402)\n\t\t + W(9, -1126668079, -1133481329, -1114013594, 1034877470)\n\t\t + W(10, -1109189150, 1026086402, -1129886863, -1108825451)\n\t\t + W(11, -1116334683, 1046739556, -1119327433, -1138298796);\n\tsum2 =\n\t\tW(0, -1131728975, 1036764889, -1111227173, -1128881737) + W(1, 1037242625, -1122740141, 1035973522, -1115068573)\n\t\t+ W(2, 1022919798, 1043114423, 990889655, -1130091274) + W(3, 1044679054, -1096357732, -1128128484, -1098903856)\n\t\t+ W(4, 1034691185, -1126568042, 1057647035, -1081650015) + W(5, 1064645808, -1105946360, 997618289, 1036162942)\n\t\t+ W(6, 1029801795, 1008652352, -1094730608, -1121257166)\n\t\t+ W(7, -1119761613, -1145265129, -1120435503, 1020148594)\n\t\t+ W(8, 1034184152, -1122224678, -1123774451, 1016517254) + W(9, 1040526136, 1019038058, -1110501324, 1033879187)\n\t\t+ W(10, 1017411026, 1025838030, 1001204178, -1125968836)\n\t\t+ W(11, -1141167471, -1125677560, 1017460301, -1121815648);\n\tWS(1059796919, -1120566973);\n\tsum1 =\n\t\tW(0, -1128913552, -1112300176, -1105877684, 1051198984) + W(1, 1031319296, -1128535084, -1121363289, 1042197939)\n\t\t+ W(2, -1097436160, 1044389601, -1156941767, 1024751122)\n\t\t+ W(3, -1114223569, 1034918960, -1084964393, 1058261945)\n\t\t+ W(4, -1115209492, 1025460631, -1170089852, 1019526904) + W(5, 1000497399, 1057668526, 1032065846, 1032881746)\n\t\t+ W(6, 1032486790, -1097594444, 1058860547, -1083919657) + W(7, 1045243539, 1010383044, 1007200827, -1109654209)\n\t\t+ W(8, 1031553246, -1093305914, 1041280427, 986576750) + W(9, 1031548233, -1121876014, 1038828418, -1113158982)\n\t\t+ W(10, 1014469175, 1034628234, 1025411673, -1114258964)\n\t\t+ W(11, -1106885131, 1024357474, -1128319413, 1012703988);\n\tsum2 = W(0, -1143612781, 1030657759, -1142189493, -1116365956)\n\t\t + W(1, -1108113093, -1144957229, 1024653023, -1114346787)\n\t\t + W(2, -1145631357, -1122350618, -1120960689, 1013910379)\n\t\t + W(3, 1031492195, -1115709916, 1041520845, -1109597137)\n\t\t + W(4, -1100459142, 1028619709, -1118229715, -1122961088)\n\t\t + W(5, 1058735511, 1063925227, -1102646250, 1003281301)\n\t\t + W(6, 1037055061, 1023143173, -1123318690, -1097941231)\n\t\t + W(7, -1097541479, 1040501280, -1103747903, 1032102149)\n\t\t + W(8, -1113230658, -1096423541, -1119600722, 1015718737)\n\t\t + W(9, 1027878177, 1035049663, -1107577516, 1034348655)\n\t\t + W(10, 994779835, -1116733621, -1120661119, -1115297076)\n\t\t + W(11, 1029140405, -1104473650, 1048901284, -1122107736);\n\tWS(1025862512, -1097886171);\n\tsum1 =\n\t\tW(0, 1017995501, 1039868615, -1084617440, 1048852846) + W(1, 1036255511, 1003283810, 1028206791, 1039095646)\n\t\t+ W(2, -1095591910, 1046495341, 1032043925, 1031081728) + W(3, -1115115241, 1044724702, -1088992852, 1053236428)\n\t\t+ W(4, 974144948, -1128580235, 1023900364, 1040670187) + W(5, -1089161581, 1054642003, 1024473755, 1033561578)\n\t\t+ W(6, 973319892, 1036683863, -1092805231, 1050422468) + W(7, -1132527589, 1012484477, 1028215869, -1105649212)\n\t\t+ W(8, -1107053347, 1049220624, -1120787802, -1126192084)\n\t\t+ W(9, 1033665516, 1040757263, -1107160205, 1039010398) + W(10, 1025750940, 1035723265, 1031994596, -1101644966)\n\t\t+ W(11, -1102281943, 1042256548, 1034960116, -1141688154);\n\tsum2 = W(0, 1017309480, -1113384832, 1051665642, -1106075829)\n\t\t + W(1, 1041533127, -1143916576, -1115898040, -1105498372)\n\t\t + W(2, 1043260681, 1041703091, -1122221676, -1119502308)\n\t\t + W(3, 1026950620, -1140340528, -1109716244, -1109231476)\n\t\t + W(4, 1047102067, 1032670038, -1131938440, -1101077232)\n\t\t + W(5, 1039662810, 1049668212, -1109791178, -1130795288)\n\t\t + W(6, -1120377052, -1114410560, -1113565360, 1032262130)\n\t\t + W(7, 1039963022, -1112068676, -1147724576, 1042402941)\n\t\t + W(8, -1097796100, 1040746517, -1131969000, 1031201932)\n\t\t + W(9, -1108926548, -1114542528, -1108348496, -1140600496)\n\t\t + W(10, 1032294606, -1108483346, -1120540424, 1040078450)\n\t\t + W(11, -1097463639, 1048026467, -1107112902, 1028500076);\n\tWS(1059594295, -1081462343);\n\tsum1 = W(0, 1027153262, 1043504002, 1052804111, -1087238767) + W(1, 1041162890, 1012415888, 978268098, -1116748340)\n\t\t + W(2, 1047257898, -1102654539, 1038115889, -1165722369)\n\t\t + W(3, 1020914066, 1039643767, 1049749519, -1086204143) + W(4, 1044063108, 1033818911, 1037283618, 1038369681)\n\t\t + W(5, 1054855273, -1088075529, 1037006730, 1032180390) + W(6, 1001487768, 1034058802, 1047397560, -1086503800)\n\t\t + W(7, -1117492081, 991868273, 1024040629, 1040894970) + W(8, 1052275873, -1098202447, 1024505810, 1034352017)\n\t\t + W(9, -1121199663, -1111840522, 1039603542, -1107277965)\n\t\t + W(10, 995252542, -1131707508, 1022356543, 1036921959)\n\t\t + W(11, 1026848211, -1098696769, 1036480704, -1136594828);\n\tsum2 = W(0, 1028621181, -1120219585, 1035384087, 1034472183)\n\t\t + W(1, -1123130413, -1120488613, -1110777341, -1127812186)\n\t\t + W(2, -1126856730, -1129759266, -1106344343, -1132463093)\n\t\t + W(3, 1027102605, -1121966109, 1038893967, -1123472797)\n\t\t + W(4, -1121376361, -1111137329, 1030597213, -1109734497)\n\t\t + W(5, 1046142043, 1054407172, -1110811845, 1013238549)\n\t\t + W(6, -1106396561, -1139970197, -1102581665, -1114873213)\n\t\t + W(7, -1147353578, -1113345499, 1041951037, 1005564394) + W(8, 1024169581, 1049042812, 1023037898, 1010521365)\n\t\t + W(9, -1110468651, 1027913013, -1119264521, -1104920828)\n\t\t + W(10, -1123538565, -1123696429, 1026771477, 1021745754)\n\t\t + W(11, 1045072501, -1117275361, -1108801471, 934750635);\n\tWS(1001790336, 1033193226);\n\tsum1 = W(0, -1113292474, 1018580889, -1117909243, 1052553934)\n\t\t + W(1, -1104113579, -1129785460, -1131356554, -1115176285)\n\t\t + W(2, 1046326027, -1113855449, -1112351060, -1156866531)\n\t\t + W(3, -1133969725, -1102427201, 1041639692, 1060794158)\n\t\t + W(4, -1095014251, -1132017542, -1118664394, -1094752997)\n\t\t + W(5, 1062953181, 999804065, -1105541862, -1130622370)\n\t\t + W(6, 1027204153, -1105768635, 1031529696, -1122254720)\n\t\t + W(7, -1102735326, 1022740922, -1111709325, -1119059021)\n\t\t + W(8, 1040555139, -1110352445, 1031818996, -1121415144)\n\t\t + W(9, 1024655285, -1121009370, -1115548569, 1026923705)\n\t\t + W(10, 1008421480, 1008916224, -1127980619, -1131789226)\n\t\t + W(11, 1030139737, -1100154756, 1016036429, -1122315305);\n\tsum2 =\n\t\tW(0, 999771042, 1019371878, 1035878909, -1106457448) + W(1, 1038257769, -1118330440, -1130012060, -1137594745)\n\t\t+ W(2, 991329315, 1043986431, -1108709562, -1156785507) + W(3, -1123589256, 1002965746, 1042318306, -1118271248)\n\t\t+ W(4, 1025444512, -1134019065, 1018901632, -1114341154) + W(5, 1053769225, 1057361082, -1113472862, 1021163648)\n\t\t+ W(6, -1124249760, -1115605194, 1010690665, -1102884302)\n\t\t+ W(7, 1015483632, -1123825168, 1017234680, 1017493044) + W(8, -1099274218, 1037230696, -1115820708, 1025071687)\n\t\t+ W(9, -1118367200, 1015905000, -1101115118, -1112309114)\n\t\t+ W(10, 1020142296, -1126466092, 1016197020, 1024661143)\n\t\t+ W(11, -1092869373, 1036147884, 1016005876, 1013380697);\n\tWS(-1096043118, -1087645231);\n\tsum1 =\n\t\tW(0, -1115587665, 1029203067, 1045341850, -1106908023) + W(1, -1131991862, -1114910160, 1032694426, -1099485226)\n\t\t+ W(2, 1017432376, 1052615508, -1113683692, -1127306394)\n\t\t+ W(3, 1031441086, -1113336032, 1054321442, -1082902530) + W(4, 1050084000, 998100766, 1023546425, -1121275799)\n\t\t+ W(5, 1050158903, 1045376289, -1116607496, -1147820543)\n\t\t+ W(6, -1130229584, 1051148019, -1081266857, 1057440145)\n\t\t+ W(7, 1027649766, 1021215128, -1147531597, -1118364796) + W(8, 1047006846, -1118131945, -1120491559, 991663462)\n\t\t+ W(9, 1019733960, -1127235090, -1106232936, -1134199968)\n\t\t+ W(10, 1027530281, -1123554607, -1115129818, -1119188228)\n\t\t+ W(11, 1041137522, 1018710010, -1131853547, -1124042776);\n\tsum2 =\n\t\tW(0, -1129211209, 1023515648, 1040374834, -1110890211) + W(1, 1020265593, 1023672492, 1023861908, -1119658781)\n\t\t+ W(2, -1108471855, -1133136545, 1048083250, -1109425046)\n\t\t+ W(3, 1038235290, -1121364796, -1096619497, 1044872450)\n\t\t+ W(4, 1034188808, -1121333166, 1029997412, -1103304652)\n\t\t+ W(5, 1039720436, 1050855479, -1102257516, -1130250517)\n\t\t+ W(6, -1125523437, -1109858923, -1113539350, -1117035130)\n\t\t+ W(7, 1022698753, 1029442100, -1107362446, 1044349350) + W(8, 1038091910, -1107498682, 1024895152, -1122118916)\n\t\t+ W(9, -1114850415, 1032218024, -1121557752, -1130602657)\n\t\t+ W(10, -1162309256, 1020180841, 1013933265, 1027861436)\n\t\t+ W(11, 982770184, -1128608489, -1129090321, 939323929);\n\tWS(1062090935, 1058767985);\n\tsum1 =\n\t\tW(0, 1016379967, -1111629724, -1115487571, 1040669191) + W(1, -1124650927, -1131647467, -1127587553, 1016014666)\n\t\t+ W(2, 1046030390, -1131263417, -1107621674, 1039946613)\n\t\t+ W(3, -1124869109, 1045897412, -1089079359, 1049140321)\n\t\t+ W(4, -1120715392, -1197661491, 1030044278, 1039181162) + W(5, -1107063038, 1046027952, 1035258018, 1033161790)\n\t\t+ W(6, -1135267218, -1111908667, 1056809425, -1082917799)\n\t\t+ W(7, 1051125844, -1129645073, 1021197901, 1032078908)\n\t\t+ W(8, -1100036461, 1040408361, -1117322707, -1124734374)\n\t\t+ W(9, -1146487047, -1129970444, 1008766834, -1115518322)\n\t\t+ W(10, -1115270659, 1029976235, 1001072263, 1037221664)\n\t\t+ W(11, -1118068997, 1034380765, -1135017032, -1119763541);\n\tsum2 =\n\t\tW(0, 1033054007, -1111327982, -1121722910, 1038740385) + W(1, -1119336676, -1124024618, -1116547758, 1041352776)\n\t\t+ W(2, 1034677105, -1115132829, -1124364804, 1035204548)\n\t\t+ W(3, -1123189128, 1032790615, 1033549613, -1092378351) + W(4, -1102497930, 1032784783, 1033469023, 1012971008)\n\t\t+ W(5, 1033020303, -1108961666, -1106694042, 1032253989)\n\t\t+ W(6, -1122818756, -1098982462, 1051050782, -1121004928) + W(7, 1035128176, 1009754028, 1026371779, 1042838787)\n\t\t+ W(8, -1098306997, 1045175561, 1039643256, -1118316692)\n\t\t+ W(9, -1136838880, -1110172088, 1034801784, 1019964530)\n\t\t+ W(10, 1015821086, -1125398316, -1137766108, 1004924993)\n\t\t+ W(11, -1120000922, 1027487385, 1017988993, 1028774587);\n\tWS(1065136439, 1040354336);\n\tsum1 = W(0, -1140671753, -1108811053, 1057254373, -1099781359)\n\t\t + W(1, 1009251305, 1003726785, -1120274067, -1107804932)\n\t\t + W(2, 1050226223, -1098842784, 1010162395, -1112753158)\n\t\t + W(3, 1022747450, -1110160675, 1059609336, -1092867554)\n\t\t + W(4, 1036945681, -1120831377, -1124666160, -1105899870)\n\t\t + W(5, 1031464345, 1000731409, -1114655220, -1112429520)\n\t\t + W(6, -1123069063, 1025125049, -1093137163, 1058399851)\n\t\t + W(7, -1109467235, -1119063979, -1131113682, 1033405406)\n\t\t + W(8, -1111386668, 1055942809, -1101547023, -1146511789)\n\t\t + W(9, -1118356003, -1129239633, -1105328992, 1044975810)\n\t\t + W(10, -1113825780, -1116155918, -1126498983, 1016924742)\n\t\t + W(11, -1111235284, 1051704028, -1104493413, -1117793303);\n\tsum2 = W(0, -1139839138, 1034041544, 1034669108, -1095769692) + W(1, -1105759439, 1039138956, 998321428, 1018598993)\n\t\t + W(2, -1116818777, -1114897304, -1105398904, -1145690340)\n\t\t + W(3, -1134067290, 987604943, 1007335842, -1102588486)\n\t\t + W(4, -1108283066, 1018314989, 1024466364, -1102834025)\n\t\t + W(5, 1061492513, 1062722215, -1098749835, 1025712340)\n\t\t + W(6, 1008723794, -1131349085, -1121214551, -1107691916)\n\t\t + W(7, -1108418109, 1022467761, -1119932526, -1118877643)\n\t\t + W(8, -1116983417, -1117176868, 1041629273, -1121476700)\n\t\t + W(9, 1028368392, 1031347596, -1114752830, 1009572226)\n\t\t + W(10, -1103951670, 1033232162, -1132382549, -1113750023)\n\t\t + W(11, -1103912225, 1035794880, 1046707789, -1110829011);\n\tWS(1015535328, -1084984071);\n\tsum1 = W(0, -1114800552, -1108603860, -1099862310, 1058689409)\n\t\t + W(1, -1114937124, -1119809253, 1017574081, -1120445077)\n\t\t + W(2, -1098244185, 1050368026, -1113854018, -1119794874)\n\t\t + W(3, -1121052395, -1120661414, -1094435959, 1059588503)\n\t\t + W(4, -1120887600, -1117398367, -1121642214, 1038434434)\n\t\t + W(5, -1091868509, 1053265766, 1038069402, -1124845785)\n\t\t + W(6, 1031943978, 1004694578, -1100742889, 1053762387) + W(7, 1032168457, -1126829041, -1119258038, 983354644)\n\t\t + W(8, -1090330210, 1049777811, 1033335786, -1124490374)\n\t\t + W(9, 1015340962, -1131668588, -1106546547, 1042220181)\n\t\t + W(10, -1112611163, -1122991451, -1152091148, -1117988144)\n\t\t + W(11, -1096238847, 1044693386, 1033654385, 1025017029);\n\tsum2 = W(0, -1113763234, -1123863865, -1152383745, -1153318001)\n\t\t + W(1, 1032880554, -1112434267, -1113925793, -1117743388)\n\t\t + W(2, 1049718598, -1115051721, -1108241407, 1017487533)\n\t\t + W(3, -1117079348, 1031541130, 1054034272, -1111062529)\n\t\t + W(4, 1025815300, -1115045873, 1016562523, 1034144457) + W(5, 1045174355, 1029337732, 1040219109, -1115252534)\n\t\t + W(6, -1106152769, -1108434934, 1019958281, -1107848604)\n\t\t + W(7, -1122950542, -1112234054, 1021767953, 1028245712)\n\t\t + W(8, 1048832333, 1036566626, 1032317223, -1144290245)\n\t\t + W(9, -1110489214, -1107854239, 1037079656, -1106439039)\n\t\t + W(10, -1114917041, -1111099643, -1118706081, -1131124226)\n\t\t + W(11, 1041167636, -1100833945, 1023645948, -1123196065);\n\tWS(1058837943, 1069665989);\n\tsum1 = W(0, 962159770, -1123278397, 1059574623, -1100091288)\n\t\t + W(1, -1106975399, 1026912571, -1131526763, -1133106088)\n\t\t + W(2, 1052414436, -1100255560, 1034080493, 1026538575)\n\t\t + W(3, -1123587520, -1111839826, 1056026369, -1090882007)\n\t\t + W(4, 1026032901, -1128992103, 1016761717, -1119033369)\n\t\t + W(5, 1050778647, -1089604336, 1030312842, -1142474253)\n\t\t + W(6, -1116652202, -1112323118, 1057288447, -1090318286)\n\t\t + W(7, -1115237492, -1126485147, 1020359383, -1123741278)\n\t\t + W(8, 1051933055, -1098258189, -1123145400, 1024876312)\n\t\t + W(9, -1124916236, -1111587013, 1049400292, -1098860821)\n\t\t + W(10, 1023272149, -1130617057, -1120750038, 1031183749)\n\t\t + W(11, 1050858601, -1113801599, -1102573630, -1147252941);\n\tsum2 =\n\t\tW(0, 1031825723, 1031898082, -1068962638, -1097279430) + W(1, -1106804175, 1033946762, -1121672345, -1123032728)\n\t\t+ W(2, -1070958719, 1042495248, 1004890268, 1015278793) + W(3, -1128689519, -1149677000, 1062859919, 1042236169)\n\t\t+ W(4, 1033261211, -1125393239, 1003655756, 1042326937) + W(5, 1079716701, -1097154173, 1047991146, -1129356209)\n\t\t+ W(6, -1112729716, 1016978721, 1069238165, 1043003442) + W(7, 1029430153, -1130449529, 1021714543, -1135526098)\n\t\t+ W(8, -1106783417, -1101596383, 1006662138, -1143028884)\n\t\t+ W(9, -1143241256, 1017362221, 1038638730, -1114855682)\n\t\t+ W(10, 1016716693, 1021676019, 1015056847, -1115756346)\n\t\t+ W(11, 1030095799, 1029691669, -1116617969, 1007567766);\n\tWS(1027937136, 1051433372);\n\tsum1 = W(0, 1024223452, 1027262836, -1095583884, 1036904555) + W(1, 1037383306, 1026871330, -1131494490, 1034970897)\n\t\t + W(2, -1102510757, 1043230726, -1126475809, -1131579916)\n\t\t + W(3, 1034208027, 1041574867, -1088128354, 1043513377) + W(4, 1038022750, 1022249046, -1113660825, 1051529138)\n\t\t + W(5, -1082034838, -1088109312, 1049740992, -1121104697)\n\t\t + W(6, 1026687777, 1043759333, -1107709564, 1040837474) + W(7, 1043020088, 1030621125, 1007645322, 1035492122)\n\t\t + W(8, 1021392868, 1023668834, 1040579632, -1128113439) + W(9, 1019229306, 1025216066, -1116281753, 1033050768)\n\t\t + W(10, 968839375, 1026071912, 1023660333, 1033175550) + W(11, 1019915650, 1041627229, 1040383308, 1024084817);\n\tsum2 = W(0, -1122636491, 1019704225, 1049771287, -1108218455)\n\t\t + W(1, 1003686724, 1007985666, -1114076695, 1037288383) + W(2, 1032297878, 1029534785, -1114871835, 1019192761)\n\t\t + W(3, -1122337791, 1038646185, 1050229287, 1038576544)\n\t\t + W(4, 1026526587, -1146139348, -1121313911, -1113812515)\n\t\t + W(5, 1058219066, 1058416091, -1129529893, 1021492965)\n\t\t + W(6, 1019616565, -1115379683, -1126947029, -1096957025)\n\t\t + W(7, 1020162449, -1131201101, 1032037049, -1144905268)\n\t\t + W(8, -1089173556, 1029636273, 1011141050, -1129337357)\n\t\t + W(9, -1121846167, -1124810757, -1109798125, -1112204367)\n\t\t + W(10, 1015768281, -1117257463, 1035628188, -1104091459)\n\t\t + W(11, -1085784913, 1039375301, -1169657505, 1026702945);\n\tWS(-1087300279, 1060388257);\n\tsum1 =\n\t\tW(0, -1129462823, 1023690092, -1095623283, -1106106692) + W(1, 1037669414, -1130365587, 1031115364, 1041026294)\n\t\t+ W(2, -1092905754, 1045171988, -1113959460, -1127843579)\n\t\t+ W(3, -1114720439, 1027269348, -1093094418, 1058204318)\n\t\t+ W(4, -1142625182, -1122973026, 1025637865, 1022155151) + W(5, -1092295181, 1060821043, 1044954958, 1027810288)\n\t\t+ W(6, -1150727557, 1032140389, -1091295733, 1047241920) + W(7, 1031904715, 1008074737, 1019407412, 1019365849)\n\t\t+ W(8, -1094422277, 1051757075, 1022315054, 1005685302) + W(9, 1005184420, 1035913085, -1097873082, 1047453654)\n\t\t+ W(10, -1121754201, 1011776124, -1144567588, -1142073248)\n\t\t+ W(11, -1089577936, 1052799910, 1027854342, 1023937224);\n\tsum2 = W(0, -1120594034, -1166872476, 1040489823, -1102509951)\n\t\t + W(1, -1086857984, 1045679794, -1141459412, 1004777140)\n\t\t + W(2, -1122900789, -1110936244, -1095818924, -1104593759)\n\t\t + W(3, -1136839806, -1113289360, 1021539093, 1067324619)\n\t\t + W(4, -1093760272, -1110068744, 1028313984, 1013932442)\n\t\t + W(5, -1095750682, 1045560576, 1065644346, -1103109579)\n\t\t + W(6, -1127607807, 1019995585, 1045364618, -1096904945)\n\t\t + W(7, -1123950010, 1034732462, -1122936307, -1124945717)\n\t\t + W(8, 1031026044, -1100965201, 1042979309, 1018809021) + W(9, 1007613018, -1145964804, 1033830372, 1000232964)\n\t\t + W(10, -1121148085, -1152320711, -1134584398, -1157638606)\n\t\t + W(11, -1125456395, -1108078168, 1026162850, 980148252);\n\tWS(-1090838638, 1050174926);\n\tsum1 =\n\t\tW(0, 1024715784, -1109115088, -1106716164, 1038102082) + W(1, -1115525408, 1016756989, 1033853293, 1049593122)\n\t\t+ W(2, -1120751425, 1051782073, -1136454131, 1035169257) + W(3, -1106406969, 994296459, -1094496661, 1043814476)\n\t\t+ W(4, -1105105482, -1108133484, 1042483832, 1045373935) + W(5, -1086184702, 1058236139, 1033520471, 1042591993)\n\t\t+ W(6, 1025782733, 1015694078, -1092092861, 1045378621)\n\t\t+ W(7, 1029286795, -1140252101, -1138965820, -1112080289)\n\t\t+ W(8, -1095245812, 1042079876, -1106373991, -1115290814)\n\t\t+ W(9, 1038488261, 1045351388, -1100690449, 1050438570)\n\t\t+ W(10, 1034575399, 1041627941, -1139164262, -1114987669)\n\t\t+ W(11, -1094326222, 1040938025, -1122199803, 1001134058);\n\tsum2 =\n\t\tW(0, 1051544715, -1087153288, -1090874159, 1047568122) + W(1, -1111412903, 1034895049, 1047565246, -1111682644)\n\t\t+ W(2, -1099176408, 1032035298, 1040133461, -1131191613)\n\t\t+ W(3, 1046232208, -1081925443, -1105576760, -1119008010)\n\t\t+ W(4, -1140028602, -1112144320, -1105592564, 1060283907)\n\t\t+ W(5, 1048906709, 1036693685, -1107739759, 1040322447)\n\t\t+ W(6, -1094324661, 1062548140, -1112367085, -1119206793)\n\t\t+ W(7, 1044620924, -1130045765, -1105924841, -1127110112)\n\t\t+ W(8, 1049091960, -1158298480, -1096403637, 1011461326) + W(9, 1021200095, 1051334754, -1107585156, 1036759049)\n\t\t+ W(10, 1046459856, 1012649582, -1103932050, 1033462267)\n\t\t+ W(11, 1048824237, -1114785543, -1114351857, -1111955333);\n\tWS(1039738296, 1044009556);\n\tsum1 =\n\t\tW(0, 1031992376, -1113116036, 1058890327, -1088719167) + W(1, 1040542090, -1107110028, -1118478209, -1126664684)\n\t\t+ W(2, 1042459434, -1107130859, -1129453002, 1036863629) + W(3, 1036413734, 1028656912, 1054229481, -1088309806)\n\t\t+ W(4, 1042227988, -1133301245, 1042319122, -1095949365)\n\t\t+ W(5, 1057173004, -1090115281, -1127816747, -1121635021)\n\t\t+ W(6, 1025321013, 1046101634, 1048940614, -1090901446) + W(7, 1048439133, -1120611033, 1019779694, -1104617834)\n\t\t+ W(8, 1052520321, -1096019759, -1119199044, 1022364232)\n\t\t+ W(9, -1126468451, -1111694091, 1047137387, -1098195015)\n\t\t+ W(10, 1036380619, -1108092830, 1028741314, 1029160593)\n\t\t+ W(11, 1057385245, -1090793697, 1040359505, -1129794251);\n\tsum2 =\n\t\tW(0, -1088996856, 1009251693, 1062110924, -1115283476) + W(1, 1030923639, 1034262626, -1089163817, -1107842867)\n\t\t+ W(2, 1057525018, 1042234988, 1032774718, -1123202523)\n\t\t+ W(3, -1081345153, -1124806950, 1064189433, -1104109471)\n\t\t+ W(4, -1126776930, -1130902850, -1080285142, 1052635731)\n\t\t+ W(5, 1067630395, -1112028150, 1034769026, 1036915346)\n\t\t+ W(6, -1079794071, -1106464080, 1063058829, -1113992476)\n\t\t+ W(7, -1106165885, -1110986466, -1089981167, -1125456570)\n\t\t+ W(8, 1062842970, 1045262592, -1136163037, 1035294670) + W(9, -1091438196, -1115606726, 1054193960, 1042247754)\n\t\t+ W(10, 1032379012, -1135519157, -1099490886, -1106662163)\n\t\t+ W(11, 1053790298, -1104249669, -1108359351, 1024576891);\n\tWS(-1096394862, 1050867114);\n\tsum1 = W(0, 975777376, 1011677768, 1050217928, -1095631255) + W(1, -1105375964, 1033079080, 1035680965, -1097606072)\n\t\t + W(2, 1041761501, -1108785275, 1035556439, -1107649602)\n\t\t + W(3, 1017323049, 1017467204, 1059053443, -1088500104)\n\t\t + W(4, 1042635014, 1020084753, -1164976624, -1122057965)\n\t\t + W(5, -1098739346, -1111108333, 1025006046, -1112750027)\n\t\t + W(6, -1126109949, 1039142936, -1089683010, 1062642602)\n\t\t + W(7, 1038036638, -1142614292, -1117859264, -1137149130)\n\t\t + W(8, -1104430516, 1040456976, 1027021261, 1017623258) + W(9, 1011370603, 1023416416, -1115445691, 1016594173)\n\t\t + W(10, 1041295544, -1113983747, -1122131819, -1112401517)\n\t\t + W(11, 1042596520, -1120553683, 1029575724, -1124248029);\n\tsum2 =\n\t\tW(0, -1131210775, 1029829507, 1018275001, -1122984086) + W(1, -1096338526, 1033255054, 1024840523, -1108448221)\n\t\t+ W(2, -1117395779, -1132016729, -1114466007, -1103146109)\n\t\t+ W(3, 1024067225, 1046565608, 1042461338, 1059140985) + W(4, -1107995649, -1119288636, 1022860453, -1107856867)\n\t\t+ W(5, -1092962046, -1089805596, -1166014069, -1099911282)\n\t\t+ W(6, -1125865258, 1042031083, 1053212914, 1058514952)\n\t\t+ W(7, 1052927486, -1113255745, -1130239171, -1106481128)\n\t\t+ W(8, -1102214835, 1027704725, 1041713274, -1106771914)\n\t\t+ W(9, 1024964869, -1127390051, -1114692565, -1118917379)\n\t\t+ W(10, 1037010892, -1111017176, -1117571915, -1124576676)\n\t\t+ W(11, 991892650, 1032905776, 1032336370, 1000523989);\n\tWS(-1112511928, 1031640207);\n\tsum1 =\n\t\tW(0, 1037301926, -1102373753, 1058068053, -1091912761) + W(1, 1030698115, -1112730073, -1130112569, 1048837234)\n\t\t+ W(2, 1051625169, -1095738529, 1045615952, 1045904421)\n\t\t+ W(3, -1119711398, -1091456672, 1054040787, -1101742756)\n\t\t+ W(4, -1104227307, -1098654019, 1044751592, 1045582560)\n\t\t+ W(5, 1044375881, -1090186767, 1051640030, -1111879892)\n\t\t+ W(6, -1102628100, -1119033858, 1057193534, -1090190311)\n\t\t+ W(7, -1111999463, -1123401908, 1042267541, -1093436941)\n\t\t+ W(8, 1051238780, -1110077161, 1008998972, -1101737376) + W(9, 1021159833, 1050238014, 1045936610, -1098844722)\n\t\t+ W(10, 1050341641, 1043894710, -1122521821, -1100593739)\n\t\t+ W(11, 1058222955, -1090967581, -1108465231, -1112695488);\n\tsum2 =\n\t\tW(0, 1016218439, 1024549194, -1121292007, 1037076368) + W(1, -1112700443, 1032984152, 1009444234, -1117974589)\n\t\t+ W(2, -1111737758, -1110249739, 1020335555, -1112172263)\n\t\t+ W(3, -1111008440, 1042315856, 1047393563, -1086831522) + W(4, 1038599637, 1060801772, 1026480303, -1106327815)\n\t\t+ W(5, -1089871257, -1069929292, -1111547810, 1079084175)\n\t\t+ W(6, 1015374231, 1040022175, -1115783084, -1085683537) + W(7, 1049254465, 1057876572, -1115006890, 1025059842)\n\t\t+ W(8, 1043300713, 1033002057, -1118960414, 1033693800) + W(9, 1027237715, -1110870197, -1103999090, 1033912191)\n\t\t+ W(10, -1118358651, -1104475663, -1122692269, 1033099318)\n\t\t+ W(11, 1022298131, 1032775289, -1104218510, 1045399536);\n\tWS(-1106120924, 1033431669);\n\tsum1 = W(0, 1016553159, 1035990878, -1101729723, 1042266392) + W(1, 1024064284, 1018305971, -1146851238, 1041817850)\n\t\t + W(2, 1024013341, 1027850273, 1026394008, 1021653787) + W(3, 1024375743, 1041767260, -1116899488, 977256084)\n\t\t + W(4, 990294084, 996614956, 1026515514, 1047579686) + W(5, -1085522812, -1090381288, 1048833585, -1125739905)\n\t\t + W(6, 1005429062, 1031819293, -1090064383, 1048109660) + W(7, 1038017843, 1016883609, 1029812010, 1026577053)\n\t\t + W(8, -1118087802, -1113190325, 1040657490, -1121801815)\n\t\t + W(9, 1008887700, 1014785832, -1126747713, 1024173993) + W(10, 1020235411, 1027952623, 1021177962, 1011005202)\n\t\t + W(11, 1025078601, -1127218683, 1041410670, -1132785763);\n\tsum2 =\n\t\tW(0, 1032555846, -1110721648, -1094136567, 1030929664) + W(1, -1146526593, 1018020888, 1019641904, -1116342888)\n\t\t+ W(2, -1089264280, -1112511004, 1032788860, -1125819008)\n\t\t+ W(3, 1015684488, -1102693078, -1097199465, 1046449598) + W(4, 1012812816, 1004426241, -1123545328, 1027573888)\n\t\t+ W(5, 1056898914, 1052843165, 1033507644, -1122415072) + W(6, -1118308408, 1043950970, 1037769558, 1024674316)\n\t\t+ W(7, -1106559340, 1028547840, -1117707424, 1021888896) + W(8, 1041236542, -1109778580, 1017687520, 996318210)\n\t\t+ W(9, -1137876352, 1007632640, 1026403708, -1123597216)\n\t\t+ W(10, 1028523456, -1149117889, -1152988290, 1023916088)\n\t\t+ W(11, 1046276806, -1105717038, -1122312832, -1132920416);\n\tWS(1034973624, 1056792353);\n\tsum1 = W(0, -1120658336, -1130821617, -1114903379, -1130597942)\n\t\t + W(1, -1109039532, -1124529164, -1121055921, -1114464179)\n\t\t + W(2, -1125024178, -1102939831, -1115164458, -1124681556)\n\t\t + W(3, -1128295926, -1106629009, 1008426736, -1118485143)\n\t\t + W(4, -1104109440, -1138254780, 1021962732, -1093463666)\n\t\t + W(5, 1062068439, 1067744046, -1094141737, 993935312) + W(6, -1127490506, -1097245927, 1050479246, 1049107361)\n\t\t + W(7, -1105858697, -1132704804, -1119904327, -1132912612)\n\t\t + W(8, -1107542555, 1045213129, -1119937620, -1120970067)\n\t\t + W(9, -1122942113, -1118132038, 1028006365, -1113875250)\n\t\t + W(10, -1141854766, -1122550700, -1119710033, -1115274080)\n\t\t + W(11, 1025872901, 1036565277, -1121170098, -1120520661);\n\tsum2 = W(0, 1020401308, -1120501349, 1037264768, -1090330474) + W(1, -1105802125, 1023925581, 1017661559, 996214904)\n\t\t + W(2, -1116129767, -1084580575, 1032645479, -1119976615)\n\t\t + W(3, -1129375401, -1140432422, 1035443152, -1097846115)\n\t\t + W(4, -1102145888, 1025111856, -1130735541, 1024553914)\n\t\t + W(5, 1051779064, 1064606263, 1038402436, -1136822486) + W(6, -1146688164, 1006774606, 1039827062, 1048687051)\n\t\t + W(7, 1000828364, -1121332237, -1166762145, -1124013507)\n\t\t + W(8, 1025600009, 1019182043, 1025151371, 1015612208)\n\t\t + W(9, -1130185789, 1033491675, -1114545658, -1117487855)\n\t\t + W(10, 1028059566, -1119338761, -1137125822, -1117903931)\n\t\t + W(11, 1032817572, 1037037513, -1112238814, 999461036);\n\tWS(-1082445367, -1085006700);\n\tsum1 =\n\t\tW(0, -1131835086, 1041974800, -1081109875, 1054173212) + W(1, 1035072463, -1137431795, 1034878908, 1043293403)\n\t\t+ W(2, -1092276724, 1051286356, 1034209806, 1038048136) + W(3, -1106661648, 1042063924, -1086386347, 1055927462)\n\t\t+ W(4, -1114712644, -1110863483, 1037617118, 1045196135) + W(5, -1094524616, 1058619216, 1036390662, 1042877649)\n\t\t+ W(6, -1121819052, 1037212703, -1094507255, 1050138098)\n\t\t+ W(7, 1015171028, -1123146704, 1022066011, -1105403448)\n\t\t+ W(8, -1104988703, 1028915053, -1139447658, -1114994477)\n\t\t+ W(9, 1036207796, 1046411795, -1105674409, 1041419787) + W(10, 1026111277, 1040360493, 1033542412, -1100599618)\n\t\t+ W(11, -1096619449, -1130824962, 1045523870, -1121943708);\n\tsum2 = W(0, -1112963339, 1043137200, 1014823768, -1089890678)\n\t\t + W(1, 1022229356, -1128614108, 1025676326, 1000796272) + W(2, 1031859059, -1102855534, 1031913791, 1018516204)\n\t\t + W(3, -1117465202, 993751520, 1020211292, 1018575516)\n\t\t + W(4, -1120060570, -1138611816, 1036266015, -1098528956)\n\t\t + W(5, 1055374057, 1061198225, -1098119563, 1020738140) + W(6, -1124864900, 1032573075, 986723264, 1038055959)\n\t\t + W(7, -1106568385, -1132953832, 1019242508, -1097473255)\n\t\t + W(8, -1125510524, 1050136287, -1098582022, -1123833514)\n\t\t + W(9, 1017632828, 1049454991, -1111044051, -1109681619)\n\t\t + W(10, 1030233630, 1035860627, 1039721851, -1090503899)\n\t\t + W(11, 1007293144, 1054985311, -1101215648, -1110059149);\n\tWS(-1089141943, 1068474134);\n\tsum1 =\n\t\tW(0, 1024130588, -1121972404, 1032495505, 1036801227) + W(1, -1117579092, -1114425265, -1101143803, 1041396360)\n\t\t+ W(2, 1045416789, -1094238571, 1039470024, 1024684838) + W(3, 1039148539, -1105946681, -1106461946, 1057861426)\n\t\t+ W(4, -1113046718, -1108918837, -1124204515, 1052602058)\n\t\t+ W(5, -1094942270, -1098420551, 1047303536, -1127532529)\n\t\t+ W(6, 1026773217, -1091638882, 1059099726, 1040764762) + W(7, -1094617668, 1027200645, 1018218693, 1032280890)\n\t\t+ W(8, -1106993164, 1033290001, 1040300696, -1103088708)\n\t\t+ W(9, -1104179471, 1041946144, 1045088278, -1105244536)\n\t\t+ W(10, -1110195745, 1043167338, -1123573325, -1138642417)\n\t\t+ W(11, 1009482242, 1037819035, -1108347351, -1116739793);\n\tsum2 = W(0, 1016644168, -1134771145, -1129326838, -1114142714)\n\t\t + W(1, 1012771369, 1025799488, 998892514, -1114282184) + W(2, 1049635340, -1101404122, -1114952606, 1041138771)\n\t\t + W(3, -1116049462, 1042383274, -1147070546, -1095734150)\n\t\t + W(4, 1057697290, -1095991584, 1033248586, 1025008594)\n\t\t + W(5, -1102476512, 1060588986, -1111850310, 1027653952)\n\t\t + W(6, -1110140123, -1104878488, -1090718582, 1052949499)\n\t\t + W(7, -1096580248, -1127102864, 1041609896, -1101611481)\n\t\t + W(8, 1046973498, -1143476482, -1114336646, 1035005082)\n\t\t + W(9, -1103095555, 1048842205, -1115539252, -1110997031)\n\t\t + W(10, 1031782132, 992902692, 1030835892, -1122288558)\n\t\t + W(11, 1028769716, 1022411808, -1118966953, -1120028296);\n\tWS(1055908206, 1023803300);\n\tsum1 =\n\t\tW(0, 1033033649, -1114766205, 1059767687, -1093070812) + W(1, -1106762950, -1139512861, -1128828388, 1011459483)\n\t\t+ W(2, 1054454099, -1094569204, 1029622486, 1016172182) + W(3, 1027156540, -1106069078, 1057986836, -1086765600)\n\t\t+ W(4, 991938588, 1027600816, 1024886583, -1116675477) + W(5, 1059734148, -1090099632, -1098865153, 1027525694)\n\t\t+ W(6, -1122498726, -1116893112, 1056528229, -1094363024)\n\t\t+ W(7, -1101593593, -1135964969, 1032744244, 1045609495)\n\t\t+ W(8, 1043829406, -1102732570, -1139103892, 1036132330)\n\t\t+ W(9, -1114524705, -1113403236, 1047712168, -1103438026)\n\t\t+ W(10, 1022039246, -1117700205, 1005980052, 1049123968)\n\t\t+ W(11, 1049516377, -1098493775, -1097177334, 1035501771);\n\tsum2 =\n\t\tW(0, 1025334517, 1052224655, -1085507535, -1083097675) + W(1, -1097828858, 1062578782, -1115143239, 1029199567)\n\t\t+ W(2, -1092254017, -1079915962, -1092877982, 1029921983)\n\t\t+ W(3, -1112308287, 1050599738, -1091835304, -1078367265)\n\t\t+ W(4, -1101001669, 1036651638, -1115511381, -1137182696)\n\t\t+ W(5, 1050309385, -1085955474, 1031547399, 1017725718) + W(6, 1042864237, -1101494467, 1052849573, 1077549274)\n\t\t+ W(7, 974314816, -1103762806, 1031444191, -1094150391) + W(8, 1058681981, 1068550083, -1100178328, -1106558945)\n\t\t+ W(9, 1040795754, -1116631442, -1093246396, 1054678659)\n\t\t+ W(10, 1046838481, 1039431488, -1111573417, -1092627938)\n\t\t+ W(11, 1066882777, 1059124396, -1088438520, -1098096651);\n\tWS(-1078207964, -1098790270);\n\tsum1 =\n\t\tW(0, -1117816013, 1017293260, 1049047675, -1100878354) + W(1, 1032784131, -1126192007, 1039615439, -1121106131)\n\t\t+ W(2, -1100078274, 1049964833, -1107321921, -1122801847)\n\t\t+ W(3, 1040159636, -1098516348, 1057717203, -1094050686) + W(4, 1040450075, 1034337038, 1032454162, -1100564368)\n\t\t+ W(5, 1041647209, -1119951725, -1099964381, 1014677674)\n\t\t+ W(6, 1029735698, -1142189601, -1090236946, 1052197359)\n\t\t+ W(7, -1116032848, 1028031798, 1026856980, -1115831559) + W(8, 1041839801, -1110599850, 1034137049, 1027844545)\n\t\t+ W(9, -1128361629, -1129405415, -1114821509, 1009705546)\n\t\t+ W(10, 1036993018, -1121696025, 1002339317, -1114960439)\n\t\t+ W(11, 1034781465, 1020602063, 993360895, -1130484229);\n\tsum2 =\n\t\tW(0, 1025029135, -1104367710, -1119205162, 1051361304) + W(1, -1097951274, 1037239658, -1115606678, -1132455965)\n\t\t+ W(2, 1051294613, -1090262380, 1046775583, 1027534783)\n\t\t+ W(3, -1098891737, 1054704406, -1118431701, -1094584814)\n\t\t+ W(4, -1111734067, -1137589907, -1111864983, 1035843132)\n\t\t+ W(5, 1040638061, 1042639742, -1115582191, -1161598998) + W(6, -1112278329, 1038310704, 1033551568, 1042180969)\n\t\t+ W(7, -1116801751, -1113612863, 1017169741, 1037432870)\n\t\t+ W(8, -1095570314, 1054301740, -1102111461, -1137659371)\n\t\t+ W(9, -1123958951, -1137648567, 1040693441, 1006683771)\n\t\t+ W(10, -1108749213, 1017443081, 1031819582, -1122384617)\n\t\t+ W(11, 1008777251, 1032304440, -1103720876, 1038413214);\n\tWS(1060561207, -1110135205);\n\tsum1 =\n\t\tW(0, -1114856118, 1049197464, -1091745710, 1057921518) + W(1, 1045672489, 1021270499, -1124131449, -1108658488)\n\t\t+ W(2, -1095755605, 1045522218, -1100746808, -1112929307)\n\t\t+ W(3, -1121034566, 1041962623, -1091090769, 1055093690)\n\t\t+ W(4, 1019645080, -1157317541, -1112340961, 1047635080)\n\t\t+ W(5, -1089785676, 1056738433, -1111234056, 1036938084)\n\t\t+ W(6, -1112123800, 1029521634, -1088312300, 1057086969)\n\t\t+ W(7, -1095870350, -1148757666, 1034679769, 1045001085) + W(8, -1105390912, 1048793054, 1047514180, 1026507103)\n\t\t+ W(9, -1115322038, 1019494819, -1095959893, 1049205462)\n\t\t+ W(10, -1099214252, 1019330670, -1107671902, 1038785126)\n\t\t+ W(11, -1089779917, 1057170552, 1022895484, 1029094240);\n\tsum2 =\n\t\tW(0, -1110883135, 1041894205, -1114700148, -1082032478) + W(1, 1046875162, 1064081845, -1122184691, -1115970606)\n\t\t+ W(2, -1118217955, -1081043792, 1049320576, 1059051295) + W(3, 1008834310, 982318965, -1097954058, -1085641610)\n\t\t+ W(4, 982336213, 1064706681, 1033395903, 1040255170) + W(5, -1109327580, -1095688614, -1107088758, 1066526360)\n\t\t+ W(6, -1110716892, -1134396672, -1107386491, -1084362127)\n\t\t+ W(7, 1032307660, 1060847547, 1024095030, 1031402202) + W(8, -1114148625, -1093205100, -1122373488, 1058657081)\n\t\t+ W(9, -1113505190, -1121857157, -1116084956, -1087863650)\n\t\t+ W(10, 1045820748, 1055302318, -1113542640, 1031923695)\n\t\t+ W(11, -1128842340, -1094939475, 1044473869, 1041403755);\n\tWS(-1088848183, -1091270356);\n\tsum1 = W(0, -1113444636, 1022583331, -1092936920, 1050793382)\n\t\t + W(1, 1035173048, -1115063927, -1127291412, 1011517178)\n\t\t + W(2, -1094397598, 1055228191, -1112816343, 1007040780)\n\t\t + W(3, -1131637032, 1047190142, -1092945549, 1056457416)\n\t\t + W(4, 1039723405, -1118782984, -1105736260, 1040877723)\n\t\t + W(5, -1086200137, 1051083611, 1039289519, -1114815627)\n\t\t + W(6, 1030983166, 1035565944, -1102025475, 1056969730) + W(7, 1015654008, 998545680, -1127378047, -1097520394)\n\t\t + W(8, -1104020948, 1051399464, -1108815670, -1127143385)\n\t\t + W(9, 1037357901, -1114602800, -1116833526, 1044492479)\n\t\t + W(10, -1116817631, 1025703109, -1115666437, -1108205485)\n\t\t + W(11, -1102830535, 1047811509, 1032741190, -1123886254);\n\tsum2 =\n\t\tW(0, 1023906737, 1067295699, -1081442287, -1097077469) + W(1, 1029195957, 1026431960, -1110646223, 1065087692)\n\t\t+ W(2, -1085042817, 1037915281, 1015927544, -1132623721)\n\t\t+ W(3, -1119411664, 1065459703, -1083251842, -1096872835)\n\t\t+ W(4, 1018101230, 1018762696, 1010017751, -1118952488) + W(5, 1050008558, -1110920551, 1042598936, -1124571002)\n\t\t+ W(6, -1108429461, -1081475488, 1064700095, 1006981249)\n\t\t+ W(7, -1103158035, 1020104602, 1029589423, -1083105366) + W(8, 1064469883, 1036080906, 1041992018, -1114107558)\n\t\t+ W(9, -1110439418, -1095503285, 1057972141, -1106015672)\n\t\t+ W(10, -1108943564, 1036691137, -1125097343, -1083389324)\n\t\t+ W(11, 1061045473, 1051761632, -1114827780, -1119006739);\n\tWS(1034259896, 1039623341);\n\tsum1 = W(0, 1016878676, -1137539339, 1055868742, -1088089066) + W(1, 1043298073, 984347141, 1028460795, -1104998988)\n\t\t + W(2, 1047938201, -1091378989, 1036240559, -1121755284)\n\t\t + W(3, 1034359235, -1129847248, 1058114664, -1090213650) + W(4, 1043122195, 932956556, 1011385345, 1015052988)\n\t\t + W(5, 1043619008, -1114958501, -1119276751, 1018241806)\n\t\t + W(6, 1015855070, 1032818160, -1096687428, 1054476715) + W(7, -1110579607, 1026808723, 1016831138, 1044006969)\n\t\t + W(8, -1092418872, 1049053750, -1101201217, 1034235663)\n\t\t + W(9, -1128588247, 1033445320, -1100196186, 1040121848)\n\t\t + W(10, -1106781444, 1010316760, 1025908283, 1043524531)\n\t\t + W(11, -1095896370, 1044746961, 1018213241, -1120101215);\n\tsum2 =\n\t\tW(0, 951810592, -1108037836, -1092018666, -1130209970) + W(1, 1022643242, 1009312276, 1033659165, -1102042508)\n\t\t+ W(2, -1107310314, -1115641842, -1110096702, 1032067593)\n\t\t+ W(3, 1002259560, -1103529440, -1101738099, 1041635941)\n\t\t+ W(4, 1034513697, -1114108683, 1037243759, -1102191435) + W(5, 1066447662, 1067062587, -1100161415, 1041326077)\n\t\t+ W(6, -1112310958, -1111056455, 1032823775, -1098661250)\n\t\t+ W(7, 1027860693, -1120382671, 1034753865, -1119026649)\n\t\t+ W(8, 1031795157, -1099014553, -1096684817, 1026651225) + W(9, 992340497, -1101647251, 1040899047, -1117726225)\n\t\t+ W(10, -1114962434, 1038338139, -1114454490, 1024637657)\n\t\t+ W(11, 1046257437, -1111013301, -1112982645, -1106704138);\n\tWS(-1096556910, 1067967914);\n\tsum1 = W(0, 1032707155, -1122886335, -1095119782, 1055235700)\n\t\t + W(1, -1120012638, 1031514684, 1024354487, 1031668012)\n\t\t + W(2, -1103532312, 1048353625, -1105977207, -1126996321)\n\t\t + W(3, -1131915011, 1021347526, -1095435756, 1044387963)\n\t\t + W(4, -1105830818, -1116416117, 1043480447, 1041914807)\n\t\t + W(5, -1090836352, 1053060297, -1133082414, 1043128001)\n\t\t + W(6, -1118942187, 1036630543, -1091218783, 1041581564)\n\t\t + W(7, 1017318739, -1110350280, -1132633269, 1034774528)\n\t\t + W(8, -1104917967, 1052242886, -1121967338, 1039162573)\n\t\t + W(9, 1031302952, -1125222297, -1100801113, 1033613430)\n\t\t + W(10, -1130484760, -1148985233, 1031513592, -1106257250)\n\t\t + W(11, -1104067043, 1050269976, -1109204860, 1034839630);\n\tsum2 =\n\t\tW(0, -1125934657, 1041393774, -1097497496, 1047775001) + W(1, -1131783044, -1122059316, -1120747465, 1032139854)\n\t\t+ W(2, -1114660789, -1105604596, 1018330620, -1129241452)\n\t\t+ W(3, -1126946517, -1107151652, -1096477783, 1048515105)\n\t\t+ W(4, -1096755902, -1147658728, 1019390634, 1046075673) + W(5, 1057927405, 1059160295, 1041946221, 1011994599)\n\t\t+ W(6, -1140291646, -1090083756, -1110210473, 1043731078)\n\t\t+ W(7, -1091797353, 1032850220, 1045993569, 1024325836) + W(8, -1137735680, 1039621515, 1046026631, -1126091098)\n\t\t+ W(9, -1110717499, -1116058677, 1033250412, -1116506490)\n\t\t+ W(10, -1106745231, 1009337229, 1038335355, -1097350707)\n\t\t+ W(11, -1127153776, 987432265, -1124643180, -1124186068);\n\tWS(1061843767, -1077951557);\n\tsum1 =\n\t\tW(0, 1026388735, -1106366502, 1059311576, -1088217072) + W(1, 1041378862, -1102542817, -1120114128, -1131166601)\n\t\t+ W(2, 1043697070, -1105977039, -1130669927, 1039925540) + W(3, 1037862893, 1029755951, 1054385928, -1091419383)\n\t\t+ W(4, 1047467576, 989452730, 1029309653, -1091391038) + W(5, 1057568381, -1089136642, -1111164306, -1105668215)\n\t\t+ W(6, 1036389538, 1048316317, 1054220568, -1092475601)\n\t\t+ W(7, 1053509792, -1138232735, -1122000006, -1099454574)\n\t\t+ W(8, 1049723715, -1095416897, -1108260705, -1130981221)\n\t\t+ W(9, -1126306304, -1106178153, 1050234615, -1096877448)\n\t\t+ W(10, 1038585474, -1107228323, 1030215888, 1034019808)\n\t\t+ W(11, 1058416302, -1091809363, 1045917860, -1116719540);\n\tsum2 =\n\t\tW(0, 1061533858, 1041546460, -1081881922, -1104625991) + W(1, 1020257203, -1112819836, 1062451832, 1044663473)\n\t\t+ W(2, -1084977950, -1116240264, -1107478927, -1146254682)\n\t\t+ W(3, 1068272760, 1019905335, -1081565785, -1115490290) + W(4, 1038097782, 1018218872, 1070735043, -1103665132)\n\t\t+ W(5, -1079025547, -1094934042, -1129735749, -1108448519)\n\t\t+ W(6, 1070929067, 1027882908, -1082597652, 1002519540) + W(7, 1043320870, 1032555484, 1058522058, 1053579543)\n\t\t+ W(8, -1079765468, -1096683616, 997759194, -1111378699)\n\t\t+ W(9, 1059576348, 1030217484, -1088759123, -1103272320)\n\t\t+ W(10, -1110736144, 1018278443, 1052624489, 1042937819)\n\t\t+ W(11, -1090364693, 1039524167, 1041293151, -1120119454);\n\tWS(-1084224055, -1088316584);\n\tsum1 =\n\t\tW(0, -1113613001, -1107673717, 1006747746, 1039555654) + W(1, 1033838821, -1159624430, 1003388692, 1028109079)\n\t\t+ W(2, -1098426505, 1048291572, 1024741190, -1124153911)\n\t\t+ W(3, -1106869627, 1012698375, -1088923256, 1059475506) + W(4, -1120760050, 1033833840, 1016662735, 1027116933)\n\t\t+ W(5, -1097246285, 1054502102, 1019707757, 1010228666) + W(6, 1022316973, -1094644889, 1057877820, -1093203288)\n\t\t+ W(7, 1048977331, -1114819581, -1136760929, 1023495179)\n\t\t+ W(8, 1033746004, -1098003683, 1036081339, -1110624834)\n\t\t+ W(9, 1028746387, -1107590588, 1041863252, -1105649846) + W(10, 1041797102, -1119454813, 984919127, 1024116594)\n\t\t+ W(11, 1022736621, -1114921814, -1127589064, -1122201606);\n\tsum2 = W(0, 1015245257, -1113301472, -1126889814, -1122805777)\n\t\t + W(1, 1024783162, -1125306444, -1113948506, -1150409563)\n\t\t + W(2, 1027745966, -1121614859, 1024732276, -1120982285)\n\t\t + W(3, -1130594159, -1113241340, 1053517180, 1035094088) + W(4, 1035927962, -1117285071, 1007533655, 988101766)\n\t\t + W(5, -1115083078, -1117590123, 1033594898, -1115586407)\n\t\t + W(6, -1122336092, -1114338752, -1120298083, 1041346715)\n\t\t + W(7, -1136757529, -1179946326, -1131246557, 1042344950)\n\t\t + W(8, 1009652067, 1010321235, -1112303516, -1122655190)\n\t\t + W(9, -1121042747, 1024929700, 1023796132, 1022595647)\n\t\t + W(10, -1107129305, 1031780006, -1112003767, 1034588627)\n\t\t + W(11, 1015099871, 1021357977, -1116844702, -1109817399);\n\tWS(1056759150, 1060224665);\n\tsum1 = W(0, -1139374311, -1132085157, -1099925456, 1041263149)\n\t\t + W(1, 1033127353, -1131329248, 995010733, 1023919167)\n\t\t + W(2, -1105275165, -1143162806, 1020125661, -1128574472)\n\t\t + W(3, -1111414410, 1047983919, -1089721802, 1045591848)\n\t\t + W(4, 1047176279, -1124813330, -1108849608, 1035204919)\n\t\t + W(5, 1047380996, 1054640011, -1109178223, -1115433611)\n\t\t + W(6, 1028987391, 1044747100, -1111752399, -1086265361) + W(7, 1047077327, 1014274699, 1016981889, 1009635916)\n\t\t + W(8, -1106656308, 1052567064, 1025513390, -1114033239)\n\t\t + W(9, -1123115291, 1026679904, -1119632759, -1119813375)\n\t\t + W(10, 1020940735, -1135589654, -1129401942, -1133052010)\n\t\t + W(11, -1103728616, 1036660778, 1026259564, -1154487021);\n\tsum2 =\n\t\tW(0, 1023227060, -1114834111, -1123255684, -1111609489) + W(1, 1029177075, 1009084849, 1023565277, -1123243930)\n\t\t+ W(2, 1036838581, -1109001470, 1046335474, -1110362282)\n\t\t+ W(3, 1023373012, -1110717616, -1121973236, -1106028739)\n\t\t+ W(4, 1040383540, 1030364025, -1127246210, -1119831250)\n\t\t+ W(5, -1128787384, 1068968933, -1085459757, 1038001226) + W(6, 1035525242, 995075850, -1106791563, -1084327071)\n\t\t+ W(7, 1055427968, 1004844681, -1115895934, -1112704991)\n\t\t+ W(8, 1017209933, 1049794788, -1106438120, -1109625554)\n\t\t+ W(9, 1032252451, -1137853837, 1025363014, -1103092626)\n\t\t+ W(10, 1039281515, 1026824663, -1115664904, -1177558227)\n\t\t+ W(11, -1117762720, 1033559138, -1108939748, 1027051057);\n\tWS(1059198391, -1114206899);\n\tsum1 =\n\t\tW(0, -1123230572, 1047908609, -1086695351, -1111534963) + W(1, 1041894153, -1168813170, 1033309054, -1113872057)\n\t\t+ W(2, 1005036838, -1127426130, 1035651728, 1029018614)\n\t\t+ W(3, -1136657179, -1131612168, 1053830093, -1097279138)\n\t\t+ W(4, -1114797926, 1015674230, 1042361008, 1032838544) + W(5, 1063074340, 1032841926, 1042266564, -1115081892)\n\t\t+ W(6, -1127872354, 1018582917, 1022976638, -1102974814) + W(7, 1036160183, 1022213546, 1026831155, 1025662981)\n\t\t+ W(8, 1048968528, -1086802103, 1043048448, -1119589535)\n\t\t+ W(9, 1034821095, -1122684754, 1037218004, -1094977286) + W(10, 1028546130, 1023015663, 1027013917, 1042918755)\n\t\t+ W(11, 1045668084, -1080167184, 1051954532, -1121567905);\n\tsum2 = W(0, -1109294951, -1116747636, 1053044316, -1093594252)\n\t\t + W(1, -1105874671, 1036768486, 1044771761, -1095594447)\n\t\t + W(2, -1102224225, 1044254591, -1148207325, -1122217612)\n\t\t + W(3, -1106240469, -1091993541, 1065361960, -1103264547)\n\t\t + W(4, -1098859579, 1038496462, 1037653814, -1098134808)\n\t\t + W(5, 1060397410, 1059446961, -1110887683, -1106764847)\n\t\t + W(6, -1132138943, 1045429231, -1095097189, 1053539276)\n\t\t + W(7, -1103270924, 1035231626, -1129034439, -1112675284)\n\t\t + W(8, -1139768526, -1147713757, 1018090127, -1112984312)\n\t\t + W(9, 1027920896, 1030264036, -1100471477, -1115698004)\n\t\t + W(10, -1105560593, 1037287074, -1126749735, 1027709116)\n\t\t + W(11, -1095674438, -1131922215, 1044415945, -1106415399);\n\tWS(-1081905372, 1072993545);\n\tsum1 = W(0, 1004609681, -1111485397, -1100618406, 1052555682)\n\t\t + W(1, -1113666277, -1113131956, -1113931058, 1044870886)\n\t\t + W(2, -1103601459, 1050421002, -1125853837, -1119475260)\n\t\t + W(3, 1017897178, -1101161424, -1117978262, 1053397115)\n\t\t + W(4, -1109207833, -1119057377, -1110350900, 1042868018)\n\t\t + W(5, -1088871615, 1057434595, -1108715676, -1116054255)\n\t\t + W(6, -1119842647, 1016958866, -1096217303, 1037835279) + W(7, 1041223333, 1033629886, 1029593625, 1036666966)\n\t\t + W(8, -1090419947, 1054502387, -1131918060, 1019600139)\n\t\t + W(9, -1114320538, 1034341084, -1105396084, 1036260396)\n\t\t + W(10, 1046093262, 1034832815, 1026419555, -1123516147)\n\t\t + W(11, -1100180286, 1041011339, -1108472674, 1025124935);\n\tsum2 =\n\t\tW(0, 1027207918, -1134820995, -1123507780, 1022927690) + W(1, -1148644129, -1124904791, -1131003531, 1019005665)\n\t\t+ W(2, 992028222, 1039006609, -1114458430, 1019252639) + W(3, -1155176792, 1018656479, 1020777698, -1108026125)\n\t\t+ W(4, 985006155, 1019665619, -1144704129, 1016837667)\n\t\t+ W(5, -1093100477, -1075529389, -1165905039, -1148497627)\n\t\t+ W(6, -1120277627, -1133755465, -1106617270, -1071234400)\n\t\t+ W(7, 1009164120, -1154476856, 1018692534, 1007330736) + W(8, 1026210395, -1098388857, 1080134310, 1041946375)\n\t\t+ W(9, -1122116985, 1008190855, 1015481059, 1043410538) + W(10, 1068769301, -1120913968, 1016313728, 1024160458)\n\t\t+ W(11, 1009441727, -1127804151, 1038162442, -1102924087);\n\tWS(1052536174, -1151096569);\n\tsum1 = W(0, 991116371, -1128173243, -1103836723, 1032573088) + W(1, 999976938, 1037991630, 1033302347, -1146822742)\n\t\t + W(2, 1034951935, -1120898050, -1138114279, 1035558856)\n\t\t + W(3, -1116642336, 1036050892, -1087917523, 1057405287)\n\t\t + W(4, -1098834165, 1042054293, -1115536654, 1034768509)\n\t\t + W(5, -1106200391, -1120590821, -1118223722, 986260550)\n\t\t + W(6, 1020657940, -1102372039, 1061554222, -1082912644)\n\t\t + W(7, 1047922098, -1130396508, -1114833734, 1030675614)\n\t\t + W(8, 1041046871, 1002819162, -1107937520, 1023135729)\n\t\t + W(9, 1031490598, -1114628406, 1046795201, -1124848916)\n\t\t + W(10, 1038688870, -1142052488, -1158391502, 1032401267)\n\t\t + W(11, 1027714602, -1124036191, -1118805976, -1177279769);\n\tsum2 = W(0, 1035223119, 1038869307, -1108836158, -1105867416)\n\t\t + W(1, -1106282608, 1028503999, -1127800761, 1034423710)\n\t\t + W(2, -1116666352, -1109342419, 1047028407, -1119414296)\n\t\t + W(3, 1038890181, -1109261585, -1087753137, 1027333841)\n\t\t + W(4, -1148256348, -1113209005, 1028905699, -1095895125)\n\t\t + W(5, 1061176216, 1057224086, -1148022324, 1010099974) + W(6, 994981383, -1098712671, -1099737664, 1049674522)\n\t\t + W(7, -1103462952, 1020393479, -1127955051, 1032845262)\n\t\t + W(8, -1208820627, 1011854042, 1043242553, -1115953239) + W(9, 998786660, 1030375171, -1126035264, 1017325847)\n\t\t + W(10, -1121350765, 1024565993, -1121293280, -1114148994)\n\t\t + W(11, 1042226462, -1120003540, -1117125009, 1001260628);\n\tWS(1058902967, -1081860445);\n\tsum1 = W(0, -1121371387, -1116017491, -1114517185, -1144385454)\n\t\t + W(1, 1031405875, -1133995267, 1029881036, -1110722656)\n\t\t + W(2, -1096281750, 1046612526, 1032371736, -1118231237)\n\t\t + W(3, 992316765, -1103068528, -1110556335, 1050079932)\n\t\t + W(4, -1114542190, 1037331941, -1117974353, -1120254383)\n\t\t + W(5, -1087192661, 1061346066, -1113719056, -1117606232)\n\t\t + W(6, 1019164800, -1111729689, -1138608617, 1054224317)\n\t\t + W(7, -1147587566, 1027634660, -1115308289, -1123116948)\n\t\t + W(8, -1119671953, 1023689473, -1121094047, -1114416951)\n\t\t + W(9, 1031905998, -1110978129, 1026716344, 1034730016)\n\t\t + W(10, 1032702160, -1150819433, -1118946572, 1027465948)\n\t\t + W(11, 1026550240, 990814541, 1025765741, 1002408318);\n\tsum2 =\n\t\tW(0, -1127268449, 1017520494, 1046612660, -1104246964) + W(1, -1098833757, 1019779427, 1008157504, -1110533731)\n\t\t+ W(2, 1053115740, -1126879265, -1103206877, -1135658469)\n\t\t+ W(3, 1022079949, -1110799425, 1042237616, 1071620340) + W(4, 1047260740, -1112586418, -1129508015, 1038116680)\n\t\t+ W(5, -1081939523, -1082767624, 1046386206, 1021781126)\n\t\t+ W(6, 1023435994, -1149062134, 1046590815, -1091995420) + W(7, 1034566387, 1021597755, 987488696, -1109564641)\n\t\t+ W(8, 1019421448, -1133233221, -1113663072, 1025921212)\n\t\t+ W(9, -1149203238, 1031926637, 1025089506, -1113723868)\n\t\t+ W(10, -1131415815, 1022181144, 1025441916, -1140288129)\n\t\t+ W(11, 1002014090, 1008464055, -1120607589, -1133866981);\n\tWS(-1118927728, -1114990634);\n\tsum1 =\n\t\tW(0, -1123938375, 1033195056, 1057535917, -1087859524) + W(1, -1107191040, 1047574307, 1040612950, -1114716774)\n\t\t+ W(2, 1047260544, -1132924433, 1007112943, -1106834116) + W(3, 1024746402, 1048819881, 1042772673, -1087499341)\n\t\t+ W(4, 1043648426, 1044210486, 1022214714, -1104426015) + W(5, 1057677234, -1097320317, -1093740782, 1028537764)\n\t\t+ W(6, 1038811590, -1105195831, 1045869257, -1091890215)\n\t\t+ W(7, 1042013107, -1106862316, -1112630087, 1042575344) + W(8, 1057533694, -1089715893, 1020754614, 1047539199)\n\t\t+ W(9, -1118622728, -1098438774, 1042859777, 1029276300)\n\t\t+ W(10, -1107815558, -1107232885, 1031232344, 1038434900)\n\t\t+ W(11, 1055588422, -1091230428, -1113991309, 1041569343);\n\tsum2 =\n\t\tW(0, -1117938617, -1098776947, 1052841626, -1111689798) + W(1, -1101990052, 1034353164, 1034943831, -1074997876)\n\t\t+ W(2, 1071950042, 1008522816, 1023979086, 1019125592) + W(3, 1047294563, -1067348911, 1078478928, 1042633900)\n\t\t+ W(4, -1106116215, 1021696573, -1112881764, -1073328658)\n\t\t+ W(5, 1075942353, -1105497105, 1040726051, 1032192788)\n\t\t+ W(6, -1113196518, -1106856879, 1048374094, -1100859969)\n\t\t+ W(7, -1128120408, -1129459590, 1017166837, 1007574096)\n\t\t+ W(8, -1110198115, 1027760421, 1041816709, -1114781060)\n\t\t+ W(9, -1119652380, 1040326435, 1016518417, -1106280857) + W(10, 1015116440, 983174391, -1122537978, 1003760381)\n\t\t+ W(11, -1132261857, -1146348222, 1015700123, 1019612376);\n\tWS(1034111416, -1106797037);\n\tsum1 =\n\t\tW(0, -1127934684, -1113852291, -1096035023, 1052464285) + W(1, 1032415443, -1113420426, -1146675705, 1035613338)\n\t\t+ W(2, -1102929642, 1042719307, -1114220817, 1025128440) + W(3, 1006977829, 1034804131, -1090308252, 1054858571)\n\t\t+ W(4, 1032020487, -1114922591, -1113401378, 1037672145)\n\t\t+ W(5, -1089088820, 1057164897, -1123663635, -1136503085)\n\t\t+ W(6, 1019549798, 1044038057, -1096624416, 1050796251) + W(7, 1035431737, 1026704599, 1016064490, -1106829090)\n\t\t+ W(8, -1097224209, 1048920159, -1131720964, -1109868785)\n\t\t+ W(9, -1139061950, 1033066250, -1104516203, 1042039981) + W(10, -1114943722, 1024811962, 998716411, 995721454)\n\t\t+ W(11, -1095532026, 1049209393, 1041424208, -1138798477);\n\tsum2 =\n\t\tW(0, 1018373307, 1030944977, -1120549779, -1139755202) + W(1, -1101691927, 1049483493, -1117669473, 1035483586)\n\t\t+ W(2, -1113169149, -1114451942, -1102665013, 1049560407)\n\t\t+ W(3, 1036793172, -1120221588, 1031305133, 1047991436)\n\t\t+ W(4, -1083948126, 1057078402, -1107254646, -1138388666)\n\t\t+ W(5, -1118729068, 1050438576, -1083351573, 1060878230)\n\t\t+ W(6, 1027210469, -1119036598, -1123944089, 1058194810) + W(7, -1081291530, 1058504911, 983011887, 1026801669)\n\t\t+ W(8, -1136088418, -1103576008, -1106933299, 1044728114)\n\t\t+ W(9, -1124389554, -1120993070, 1045466087, 1037255439) + W(10, -1095248620, 1047223280, 999841656, 1036234905)\n\t\t+ W(11, -1110162376, -1114267729, -1124771645, 1036725012);\n\tWS(1038841272, 1052605132);\n\tsum1 =\n\t\tW(0, 1031922765, -1100459309, 1037270288, 1026910357) + W(1, 1023447506, -1104596348, -1104568331, 1046914264)\n\t\t+ W(2, 1041702805, -1101939446, -1114279623, 1044685961)\n\t\t+ W(3, 1037544250, -1120141702, -1098675705, 1040827436)\n\t\t+ W(4, 1048352911, -1104877098, -1109808312, -1117060814)\n\t\t+ W(5, 1045728636, 1037079325, -1115507167, -1117405559)\n\t\t+ W(6, -1115625903, 1046551204, 1017164043, -1095425143) + W(7, 1040518727, 1032200833, 1042593752, -1097718198)\n\t\t+ W(8, 999474559, 1046662664, 1038294495, -1104511859) + W(9, -1105481799, 1032086688, 1031450455, -1103113592)\n\t\t+ W(10, -1106032688, 1039045107, 1033924054, -1112841053)\n\t\t+ W(11, 1034794943, 1015870568, 1041969331, -1111795079);\n\tsum2 = W(0, -1119788132, 992683382, 1018867293, 1022669528) + W(1, 1044098145, -1102594356, 1033659476, -1104347191)\n\t\t + W(2, 1020892153, 1043646320, 1022003003, -1105788334)\n\t\t + W(3, -1112158198, 1044081475, -1090780387, 1053457206)\n\t\t + W(4, 1053806225, -1097169858, 1008462738, 1034564598)\n\t\t + W(5, -1098943438, -1103925357, 1061138285, -1089462725)\n\t\t + W(6, -1128623485, 1037093866, 1024702018, -1094689316)\n\t\t + W(7, 1061570617, -1090351234, -1135723434, -1118342628)\n\t\t + W(8, 1037085984, -1130567667, 1042502677, -1124000960)\n\t\t + W(9, 1030330775, 1008221186, -1108937272, -1111881166)\n\t\t + W(10, 1045330453, -1102638867, -1125624097, -1116661382)\n\t\t + W(11, 1041747819, 1006874186, 1015917808, -1119261652);\n\tWS(1059476151, -1123203418);\n\tsum1 = W(0, -1111725774, 1035594491, -1091810916, 1057461865)\n\t\t + W(1, 1016189354, -1123857235, 1032359159, 1034919857) + W(2, -1140486487, 1048140086, 1034245225, 1028750247)\n\t\t + W(3, -1110577724, -1111760306, -1084838663, 1060577506)\n\t\t + W(4, -1104347695, -1113205590, -1105544893, 1046155316)\n\t\t + W(5, -1086139015, 1052038472, 1027870402, -1121460986)\n\t\t + W(6, -1121304930, 1044165509, -1095808892, 1057513991)\n\t\t + W(7, -1103056264, -1148349487, -1115245634, 1020829292)\n\t\t + W(8, -1096673622, 1053266340, -1108853472, -1113141864)\n\t\t + W(9, 1036887935, 1039852002, -1127813812, 1045123672)\n\t\t + W(10, 1031021091, 1036934292, -1110517831, -1120384574)\n\t\t + W(11, -1090491960, 1055106407, -1133152957, 1011178567);\n\tsum2 =\n\t\tW(0, -1114868977, 1026556603, 1004734644, 1034344926) + W(1, 1040708934, -1131620842, -1107973502, -1115461868)\n\t\t+ W(2, -1092079110, 1042028492, -1103991549, -1105590488)\n\t\t+ W(3, 1044770988, -1104823400, 1059587552, 1024895663) + W(4, 1051421807, 1029419915, -1101288212, -1105554340)\n\t\t+ W(5, 1045430990, 1050688149, -1095880897, -1114582112) + W(6, 1025917421, 1036199790, 1037874646, 1047334362)\n\t\t+ W(7, -1118101029, 1015496806, 1028043472, -1116199065)\n\t\t+ W(8, -1137785064, -1116948841, -1122024357, -1121536685)\n\t\t+ W(9, -1111158861, 1020651575, -1093651456, 1044938016)\n\t\t+ W(10, -1099771430, -1121478353, -1123193100, -1128075734)\n\t\t+ W(11, -1127404110, 1042458099, 1007412048, -1127827256);\n\tWS(-1096078190, -1082738059);\n\tsum1 = W(0, 1007239809, -1108860284, -1100207850, 1053165251)\n\t\t + W(1, -1112013420, -1115685558, -1114850361, 1046670329)\n\t\t + W(2, -1101169270, 1050939564, -1126100266, -1124400725)\n\t\t + W(3, -1130257143, -1103368477, -1116530972, 1051252601)\n\t\t + W(4, -1112810720, -1112871192, -1112210107, 1045976117)\n\t\t + W(5, -1088435015, 1056131912, -1124484747, -1117830909)\n\t\t + W(6, -1118665957, 1029494103, -1092482434, 1045571555) + W(7, 1041969097, 1031308937, 1028242343, 1036298605)\n\t\t + W(8, -1090334611, 1053021861, 1032260218, -1143992478)\n\t\t + W(9, -1116764258, 1029804679, -1105280439, 1035862579)\n\t\t + W(10, 1044490698, 1037078646, 1022403683, -1128309634)\n\t\t + W(11, -1099682433, 1038809821, -1114977769, 1016808747);\n\tsum2 =\n\t\tW(0, -1133820219, 1027229337, -1115513384, 1007940354) + W(1, -1156542700, 1020775992, -1147891684, 1032424255)\n\t\t+ W(2, -1107406978, -1125237780, 1031863482, 994071912) + W(3, -1127336652, -1137665638, 1037916056, 1044701152)\n\t\t+ W(4, -1113898133, -1127018949, -1127200453, 1045946307)\n\t\t+ W(5, -1096925824, 1067148595, 1048747828, -1115116116) + W(6, 1020736496, -1116510358, 1031285965, 1076670751)\n\t\t+ W(7, -1101339101, -1122694416, 1001166860, -1145031593)\n\t\t+ W(8, -1138759126, 1039470145, -1070343554, -1106720041)\n\t\t+ W(9, 1022486646, -1116471963, 1020254812, -1109537872)\n\t\t+ W(10, -1082365934, 1034791139, -1135690985, -1126621635)\n\t\t+ W(11, -1122394148, 1025436583, -1107321525, 1039293842);\n\tWS(1056919406, -1123699093);\n\tsum1 = W(0, -1153021483, 985933670, -1089586019, 1058308826)\n\t\t + W(1, -1122912091, -1130942473, 1016658279, -1142160193)\n\t\t + W(2, -1106728023, 1043832952, -1111941676, -1162334614)\n\t\t + W(3, -1169964908, 1032391598, -1095447822, 1054485203)\n\t\t + W(4, -1114359010, -1115887538, -1131540465, -1109380555)\n\t\t + W(5, -1095937215, 1051425640, 1038539876, 1035573952)\n\t\t + W(6, -1116724456, -1112807501, -1092279079, 1057168451)\n\t\t + W(7, -1129000267, -1120065804, 1018808083, -1115139838)\n\t\t + W(8, -1105250414, 1053123845, -1105627696, 1037216107) + W(9, 986184318, 1023499017, -1104943256, 1034402292)\n\t\t + W(10, 1011544866, -1114397383, 1026972628, -1119658051)\n\t\t + W(11, -1093497009, 1056025192, -1129701482, 1031803900);\n\tsum2 =\n\t\tW(0, 1034281368, -1104410341, 1018060402, -1138447737) + W(1, 994323516, -1140256393, -1126716121, 1032410612)\n\t\t+ W(2, 1017706532, -1115589617, 1029627322, -1133676977)\n\t\t+ W(3, -1121241308, -1087414339, 1061712823, 1021983592)\n\t\t+ W(4, -1133709215, 1012505315, 1045372780, -1068615761)\n\t\t+ W(5, 1078313037, -1100339818, 1015111478, -1130902073)\n\t\t+ W(6, 1035929285, -1067644471, 1079888634, -1123293195) + W(7, 1023885100, 1028720332, 1047600787, -1091405946)\n\t\t+ W(8, 1048822788, 1030149270, -1124744731, -1123320040)\n\t\t+ W(9, 1004087438, -1118166494, 1023636550, -1120625820)\n\t\t+ W(10, 1010097407, 1022959192, 1041718259, -1097556864)\n\t\t+ W(11, 1035128990, 1021734756, 1009567515, -1136405679);\n\tWS(1057577783, -1116545908);\n\tsum1 =\n\t\tW(0, -1140559047, 1023488522, 1031631673, -1127758170) + W(1, 1037581685, -1129099776, -1119858755, 1007841757)\n\t\t+ W(2, 1034355893, -1102068668, 1038802963, 1023940956) + W(3, 1001413734, -1099448121, 1034820815, -1139646818)\n\t\t+ W(4, 1020321573, 1023108226, 1019558160, -1135636631)\n\t\t+ W(5, -1095265297, 1043309332, -1118918103, -1133216315)\n\t\t+ W(6, 1027838711, -1106014610, -1133110549, 1058446926)\n\t\t+ W(7, -1104027725, 1027058075, -1123065945, -1112832085)\n\t\t+ W(8, 976310772, 1018622064, -1110623851, -1123708581) + W(9, -1133184076, -1132115376, 1031909175, 1033516923)\n\t\t+ W(10, -1124259695, 1025545342, -1116764451, 1007686986)\n\t\t+ W(11, 1033492939, 1033353766, -1114622946, -1118432359);\n\tsum2 =\n\t\tW(0, -1139693312, -1124752720, -1098950560, 999696497) + W(1, -1111434581, 1026280044, 1036960926, -1121090060)\n\t\t+ W(2, -1103693150, 1034222778, -1119707404, 1014405392)\n\t\t+ W(3, -1143311649, -1099787410, 1033289622, -1104157082)\n\t\t+ W(4, 1018041096, -1121205834, 990661185, -1112556974) + W(5, 1052753541, 1058657457, -1108624084, 1023217352)\n\t\t+ W(6, 1015972640, -1123282486, -1106573325, 1042484509)\n\t\t+ W(7, -1111132399, 1005957425, 1000525745, -1104610584) + W(8, 1031872996, 1044261031, -1121815492, 1017712752)\n\t\t+ W(9, -1129692664, 1028371280, -1115662969, 1026599244)\n\t\t+ W(10, 1018446608, -1139874592, 1028832752, -1104217347)\n\t\t+ W(11, -1115847157, 1041506121, -1129135268, 1010211304);\n\tWS(1063874743, -1123600943);\n\tsum1 =\n\t\tW(0, 1026726381, -1110972995, -1088392527, 1060534134) + W(1, -1131352649, 1017113381, 1005084141, 1029034162)\n\t\t+ W(2, -1096434085, 1052968261, -1125442370, 1023149165)\n\t\t+ W(3, -1121313992, 1029564141, -1088422197, 1061531727)\n\t\t+ W(4, -1111100967, -1121647548, 1022502021, 1019350337) + W(5, -1089197156, 1048937234, 1007055431, 1028622922)\n\t\t+ W(6, 1010678471, 1021423943, -1089730182, 1053585019)\n\t\t+ W(7, -1124123103, -1132301739, 1012880846, -1112342611)\n\t\t+ W(8, -1099324833, 1049533342, 1037169096, -1122598880) + W(9, 1016038684, 1036724585, -1105649226, 1044791660)\n\t\t+ W(10, -1119334386, 1017220849, 1031948511, -1096649610)\n\t\t+ W(11, -1102131796, 1047748258, 1048887628, -1134858375);\n\tsum2 =\n\t\tW(0, 1041516351, -1098661524, 1065773241, 1067471192) + W(1, -1095722385, 1025030832, -1114001722, -1113317539)\n\t\t+ W(2, 1066164852, 1062194047, 1029392016, 1015621429) + W(3, 1031962338, 1041960143, -1094243603, -1131590099)\n\t\t+ W(4, 1045112423, 1033273068, -1127882717, -1113172562)\n\t\t+ W(5, -1071023147, -1071391818, 1027735196, -1106774969)\n\t\t+ W(6, 1024371132, 1057245216, -1087722937, -1082288010)\n\t\t+ W(7, 1047570295, 1021784721, -1116893380, -1108932190)\n\t\t+ W(8, 1043021464, 1036914992, -1110460182, -1147670187) + W(9, -1137233618, 1040530840, 1059923771, 1056604249)\n\t\t+ W(10, 1008215114, -1157997580, 1035584360, -1090505328)\n\t\t+ W(11, 1062948018, 1065534266, -1096088381, 1025226110);\n\tWS(-1081605212, 1037230241);\n\tsum1 = W(0, -1129286954, -1115600951, -1139829872, 1042245092)\n\t\t + W(1, -1130516890, -1191245347, -1127382348, -1127078325)\n\t\t + W(2, 1037397159, -1101819637, 1025459530, -1140137724)\n\t\t + W(3, -1114123448, 1045220821, -1103957592, 1057239854)\n\t\t + W(4, -1098019463, -1135821456, -1119205995, 1032978341)\n\t\t + W(5, 1057561887, -1089716883, 1040837167, -1153142562)\n\t\t + W(6, -1116053850, 1031622828, 1057799156, -1088291628)\n\t\t + W(7, 1039979404, -1123070334, -1114061454, 1039357911)\n\t\t + W(8, -1103125195, -1162281827, -1123433113, -1115244132)\n\t\t + W(9, 1024011222, 1020277751, 1035843369, -1111135597) + W(10, 1008116332, 975751222, -1165173963, 1026874614)\n\t\t + W(11, -1159950147, -1144308089, -1115664788, -1121723210);\n\tsum2 = W(0, -1129847377, 1027890930, 1045384717, -1131041629)\n\t\t + W(1, -1118537275, -1129495121, -1132201467, -1115667911)\n\t\t + W(2, -1139027758, -1086235324, 1015945835, 1022067627)\n\t\t + W(3, -1111059277, -1109124506, 1062718876, 1071241567)\n\t\t + W(4, -1090110249, -1139816838, 1032250249, -1115518668)\n\t\t + W(5, -1088514518, -1104078593, 1050303031, -1109320206)\n\t\t + W(6, 1003251981, -1131706033, 1043614591, -1091065468)\n\t\t + W(7, -1130925231, 1035917053, -1175110606, 1033851379)\n\t\t + W(8, -1096199608, 1021865867, 1030828678, -1140186118)\n\t\t + W(9, -1119100754, 1008685286, 1038009999, -1113376611)\n\t\t + W(10, -1128909271, 1027374356, 1007928974, -1130851063)\n\t\t + W(11, -1126833063, -1120766781, -1121346672, -1130315761);\n\tWS(1048635758, -1111558989);\n\tsum1 = W(0, -1116715915, -1114167026, 1019884197, 1046236914)\n\t\t + W(1, 1023679491, -1123924777, 1007517554, -1144951432)\n\t\t + W(2, -1100411873, 1042364482, 1030303424, -1115625243)\n\t\t + W(3, -1125319757, 1032434734, -1082609609, 1057088310)\n\t\t + W(4, 1025882348, 1018952757, -1130676803, -1116349759)\n\t\t + W(5, -1099356457, 1060062511, 1027068912, -1117219752)\n\t\t + W(6, 1032051720, 1007313161, -1114189151, -1105629450)\n\t\t + W(7, 1046455412, -1128015465, -1122176818, 1037795522)\n\t\t + W(8, -1098216348, 1032549225, 1037080648, -1117338239)\n\t\t + W(9, 1019813529, 1011561671, -1118483848, -1156935944)\n\t\t + W(10, 1024380849, 1001454266, -1125995833, 1022555096)\n\t\t + W(11, -1115419480, 1017135051, 1020138940, 1015509889);\n\tsum2 =\n\t\tW(0, 1017200252, 1032764106, -1100965710, -1120952053) + W(1, 1023440400, 1026555164, -1128076598, 1032749056)\n\t\t+ W(2, 1036328960, -1105592489, 1037836738, -1121478225)\n\t\t+ W(3, 1020177744, 1042154489, -1079875623, -1093732085)\n\t\t+ W(4, -1110726007, 1032334674, 1027061114, -1091917968) + W(5, 1069362278, 1053281179, -1110949820, 1004458190)\n\t\t+ W(6, -1120062015, -1115647155, 1041923814, 1053015354)\n\t\t+ W(7, -1097734576, 1030547292, 1007295183, -1109350747)\n\t\t+ W(8, -1121245377, 1023497366, 1029656316, -1115087241) + W(9, 1005463470, -1136438311, 1023734232, 1044015507)\n\t\t+ W(10, -1107014120, 1024950244, -1120999608, -1152745757)\n\t\t+ W(11, -1115720719, 1040619345, 1039138178, -1107079388);\n\tWS(1057226679, -1099093504);\n\tsum1 = W(0, -1117743115, -1106860569, 1059123761, -1116606854)\n\t\t + W(1, -1117312579, -1126837697, -1111361838, -1097721634)\n\t\t + W(2, 1043835217, -1113320356, 1021938430, -1108681130)\n\t\t + W(3, -1142218540, 1017711998, 1054886149, -1098795498)\n\t\t + W(4, 1024346219, -1128001843, -1115584496, -1098477656)\n\t\t + W(5, 1036645937, 1036044245, -1113074392, -1126342351)\n\t\t + W(6, -1144474236, 1017808579, -1096319852, 1058878095)\n\t\t + W(7, -1113306631, -1145404316, -1112915081, -1127808199)\n\t\t + W(8, -1102898152, 1054951826, -1104150268, 1022603516)\n\t\t + W(9, -1118048876, -1110778360, -1108186916, 1042821748)\n\t\t + W(10, -1109837016, -1113519979, -1124754680, 988685674)\n\t\t + W(11, -1103594844, 1057715322, -1104945799, -1166667748);\n\tsum2 =\n\t\tW(0, 1017552406, -1115134458, -1123239700, 1040415751) + W(1, 1024802817, -1116030864, -1121365003, -1113297695)\n\t\t+ W(2, 1033578978, -1119377084, -1140510683, -1154029132)\n\t\t+ W(3, 1024315197, -1121331284, 1032104202, 1033268884) + W(4, 1031096569, -1127078294, -1126393870, 1034056828)\n\t\t+ W(5, -1122610502, 1042552247, 1027588477, -1123710517) + W(6, 1006096662, -1116036592, 1042239151, 1014688747)\n\t\t+ W(7, -1116363642, -1142638070, 1026122801, -1122098200)\n\t\t+ W(8, -1128246386, 1038912262, -1106292650, 1002524342)\n\t\t+ W(9, -1115019758, -1138309587, -1130645774, 1011328923)\n\t\t+ W(10, -1119712705, -1123496021, 1010820131, -1114451237)\n\t\t+ W(11, 1021632898, 1013103251, -1106135611, 1026182445);\n\tWS(-1108758968, -1120615143);\n\tsum1 =\n\t\tW(0, 1007512449, 1043847294, 1041722714, -1089504654) + W(1, 1035899020, 1021562716, -1118729201, -1115009907)\n\t\t+ W(2, 1047642150, -1097300100, 1024857813, -1157490338) + W(3, 1033236958, 1038269372, 1052029054, -1092318719)\n\t\t+ W(4, 1041772976, 1033997944, -1188181540, -1103491829)\n\t\t+ W(5, 1056274631, -1092329088, -1115586563, -1127937658)\n\t\t+ W(6, 1032455763, 1026842103, 1057598894, -1088834696) + W(7, 1037648114, 1034853541, -1139132956, 1028990457)\n\t\t+ W(8, 1044856958, -1094694701, 1028932916, -1139535439)\n\t\t+ W(9, -1126666947, -1112992067, 1049081300, -1102944265) + W(10, 1031373190, 999073631, 1028445809, 1045480960)\n\t\t+ W(11, 1008203541, -1095636207, 987483733, 1033314299);\n\tsum2 = W(0, 1022601823, -1119857460, -1099325942, -1068582801)\n\t\t + W(1, 1035739756, 1015907333, 1027503424, 1016942723)\n\t\t + W(2, -1112391205, -1076271776, -1104095012, 1016973548)\n\t\t + W(3, -1114440342, -1113768249, 1050839307, 1067690352)\n\t\t + W(4, 1026494027, -1122697579, 1031020236, 1049278985) + W(5, -1097330938, 1077639092, 1047876791, 1015148595)\n\t\t + W(6, -1115479573, 1023747258, 1019565806, 1061065209) + W(7, 1016405011, -1106941761, 1028798660, 1008539869)\n\t\t + W(8, -1108724816, -1120523343, -1115660355, 1032414836)\n\t\t + W(9, -1137878778, 1030670036, -1143955309, 1002861982)\n\t\t + W(10, 1022661839, -1126087053, 973255146, -1124354630)\n\t\t + W(11, -1115374863, 1029925423, 1033007729, -1124658022);\n\tWS(-1125070560, -1096513533);\n\tsum1 =\n\t\tW(0, -1112401838, 1032850683, -1111199410, 1046757622) + W(1, 1033951818, -1110786345, -1141896047, 1035442769)\n\t\t+ W(2, -1105684773, 1047296038, 1013771590, -1113414691)\n\t\t+ W(3, -1114813980, 1027743049, -1093508577, 1061969278)\n\t\t+ W(4, -1100008383, -1131095256, -1125005414, 1036941992)\n\t\t+ W(5, -1099350541, -1107426238, 1023589122, -1114443933)\n\t\t+ W(6, 1026386210, -1104378805, 1060063436, -1092774776) + W(7, -1122038496, 996299870, -1115056418, 1037833707)\n\t\t+ W(8, -1112618105, 1028130403, -1110298148, -1117830096)\n\t\t+ W(9, 1012901881, 1022681350, 1035294797, -1127381572)\n\t\t+ W(10, 1030080099, -1140100259, -1125623196, 1033887999)\n\t\t+ W(11, 988362813, 1016528878, -1106008748, 1014753608);\n\tsum2 =\n\t\tW(0, -1128089453, 1024340419, -1102023306, -1103821003) + W(1, 1043342989, -1119644228, -1110645236, 1043920397)\n\t\t+ W(2, -1114712453, -1097377481, -1109265540, 1026656603)\n\t\t+ W(3, -1130916401, -1129344777, 1028225499, 972074333) + W(4, -1100613575, 1034952995, 1026446699, 1009781987)\n\t\t+ W(5, 1057874897, 1059140954, -1103696793, 1032660433) + W(6, -1115610756, -1102796808, 1052660862, 1038144249)\n\t\t+ W(7, -1116201867, -1130501689, 1032679495, 1037523581)\n\t\t+ W(8, -1102216434, -1107293486, -1131885037, 1029362471)\n\t\t+ W(9, -1114433002, 1023912055, -1127455825, 1006589878)\n\t\t+ W(10, -1105206442, 1013212643, -1123355757, 1026431795)\n\t\t+ W(11, -1128264837, -1102041035, -1127587329, 1005668278);\n\tWS(1049867118, 1034735186);\n\tsum1 =\n\t\tW(0, -1127774262, 1029333619, 1019113028, 1024964758) + W(1, 1007980364, -1121402761, -1117373036, -1123455456)\n\t\t+ W(2, 1040322517, 1032014380, 1019723167, -1118901061) + W(3, 1031064438, -1105261096, 1040279186, 1048588372)\n\t\t+ W(4, -1114399774, -1126411220, -1112922680, -1096141178)\n\t\t+ W(5, -1101685436, 1050135703, -1100797936, -1110911420)\n\t\t+ W(6, 1012648832, -1120189874, 1044944438, 1034886579) + W(7, -1113398479, 1019321608, -1132535687, 1024540628)\n\t\t+ W(8, -1121818673, 1040490120, -1150021355, -1114680743)\n\t\t+ W(9, -1120670652, -1138107141, 1035373868, 1016312768)\n\t\t+ W(10, -1128775361, -1121234663, -1140537009, 1000234461)\n\t\t+ W(11, 1032620736, 1034120602, 1008873398, -1121766352);\n\tsum2 =\n\t\tW(0, -1161289046, -1111556088, 1038429491, 1024158411) + W(1, -1123794133, 1016121349, 1020587590, -1127668568)\n\t\t+ W(2, -1130067243, 1018324827, 1035096674, -1127328688)\n\t\t+ W(3, 1029682388, -1095922552, 1050898724, -1123472030)\n\t\t+ W(4, -1142905112, -1126947701, 1031608572, -1092239431)\n\t\t+ W(5, 1058359401, -1093717514, 1042534485, -1126252937)\n\t\t+ W(6, -1117304231, -1165373610, 1040200303, -1118204561)\n\t\t+ W(7, -1137719883, -1122434117, -1129471662, -1120133906)\n\t\t+ W(8, 1044552317, -1112781150, -1136196985, -1137031592) + W(9, 965398246, 1007233453, -1132308256, 1017795291)\n\t\t+ W(10, 1027736448, -1121369248, -1134569151, 1019046119)\n\t\t+ W(11, 1031851372, -1120826542, -1128305748, -1162116006);\n\tWS(1063598519, 1040709546);\n\tsum1 =\n\t\tW(0, 989424433, -1129964132, -1092181324, 1056340507) + W(1, -1140166214, 1007420926, 1025004011, 1018517694)\n\t\t+ W(2, -1096845618, 1052096915, -1124688156, 1025298052)\n\t\t+ W(3, -1117397173, 1036280904, -1092686069, 1055848084) + W(4, 1027380346, -1114706068, 1010227902, 1042042835)\n\t\t+ W(5, -1082263275, -1117189370, 1041673920, 1030527159)\n\t\t+ W(6, -1116859551, 1025484624, -1087946945, 1053023013) + W(7, 1025279965, 1004378644, 1035862832, -1108371497)\n\t\t+ W(8, -1124000752, 1053676604, 1021321051, -1130325786) + W(9, 1012428267, 1028794752, 977020321, 1044581128)\n\t\t+ W(10, -1125256895, 1025029349, 1028295307, -1105766207)\n\t\t+ W(11, -1108973663, 1048031389, 1035434166, 1015026205);\n\tsum2 =\n\t\tW(0, -1128989779, 1040099849, -1100874000, 1021993174) + W(1, -1130783901, 1011642260, -1132752301, 992269838)\n\t\t+ W(2, 1034251701, -1130867684, 1034483450, -1123860313)\n\t\t+ W(3, -1121498089, 1034828720, -1104384455, -1113539068)\n\t\t+ W(4, -1122004711, 1016725938, -1112228563, 1034859451) + W(5, 1044543345, 1053848304, 1016645052, -1122625223)\n\t\t+ W(6, 1023519830, 1034954038, 1046406891, -1104908283) + W(7, 1032774629, 1011006880, -1111737432, -1122349299)\n\t\t+ W(8, 1028583216, -1100179639, 1016210650, -1114528083)\n\t\t+ W(9, 1023675120, 1019899084, -1114022376, -1111378604)\n\t\t+ W(10, 1033297067, 1021084026, -1134051546, -1112348174)\n\t\t+ W(11, 1040182737, -1097476412, 1025418184, -1141294629);\n\tWS(1052377710, -1116561061);\n\tsum1 = W(0, -1122160137, 1026711393, 1034438088, 1023922180)\n\t\t + W(1, -1115207840, 1014756539, -1112995181, 1046449684)\n\t\t + W(2, -1103073456, -1112523427, 1036366239, -1110629817)\n\t\t + W(3, 1021266631, -1094207935, 1059878180, 1031595583) + W(4, -1096200621, 1025340632, 1017022397, 1051777944)\n\t\t + W(5, -1091454284, -1107259466, 1043506315, -1122333286)\n\t\t + W(6, 1032809511, -1105978112, -1108523806, 1059633699)\n\t\t + W(7, -1105628259, -1126028515, -1105019076, 1045042328)\n\t\t + W(8, -1137740923, -1094439010, 1043730779, -1114494718)\n\t\t + W(9, 1019774100, -1140860791, -1113848547, 1048809290)\n\t\t + W(10, -1114298535, 1024493780, -1119221338, -1140595366)\n\t\t + W(11, 1015748571, 1019553093, -1117446555, -1121208702);\n\tsum2 = W(0, -1125003387, 1023545558, 1001356924, 1019826271)\n\t\t + W(1, 1029018751, -1114113554, -1110204990, -1122326332)\n\t\t + W(2, 1049948311, -1106041547, -1122275300, 1028296019)\n\t\t + W(3, 1008672566, 1039271760, -1104177316, 1040609653) + W(4, 1017003703, -1143932072, -1110854180, 997586352)\n\t\t + W(5, -1099440370, 1057375034, -1099421810, -1122149120)\n\t\t + W(6, 1015432805, 1043658401, -1101604747, -1098469549)\n\t\t + W(7, 1052007058, -1118594118, 1007507570, -1126010948)\n\t\t + W(8, -1112581048, 1041033112, 1018898909, -1129527698)\n\t\t + W(9, -1129875419, -1128126180, 1034699764, -1108980340)\n\t\t + W(10, -1118843549, 1031512617, -1145172348, 1018354299)\n\t\t + W(11, -1118892801, 1026776081, -1123423040, -1147650596);\n\tWS(1066846108, 1044745002);\n\tsum1 =\n\t\tW(0, 1019372186, 1049403789, 1042475733, -1091781177) + W(1, -1124410122, 1015897062, 978233216, -1107121557)\n\t\t+ W(2, 1051348497, -1100692098, 1039801345, 1009376476) + W(3, -1129136976, 1041504923, 1048713517, -1091573825)\n\t\t+ W(4, 1032893815, -1126291000, 1025331363, -1134682116) + W(5, 1054698948, -1089263023, 1040511932, 1006187856)\n\t\t+ W(6, -1142297744, 1039399714, 1049146911, -1091452887)\n\t\t+ W(7, -1146055296, 1016897132, 1015116199, -1122699462) + W(8, 1058118606, -1090043533, 1032222216, 1012743170)\n\t\t+ W(9, 1015645340, -1121336819, 1046729314, -1102394372)\n\t\t+ W(10, -1115550793, 1010428515, 1016287548, 1026221102)\n\t\t+ W(11, 1056609718, -1091564925, -1107840672, 1000566800);\n\tsum2 =\n\t\tW(0, -1121498998, 1040076187, 1040991236, -1097642453) + W(1, 1041191639, -1143069461, 1025173682, -1110698495)\n\t\t+ W(2, 1027215822, 1032193313, -1107046015, -1127878497)\n\t\t+ W(3, -1127952317, 1046879062, -1097422534, -1089335507)\n\t\t+ W(4, 1027648922, 1033858873, -1123064681, -1114452496)\n\t\t+ W(5, -1079622690, -1070315938, -1107556506, 1031644922)\n\t\t+ W(6, 1031325102, 1037259271, -1113150532, -1080614075)\n\t\t+ W(7, 1040688678, -1125227083, 1031547392, -1113826794) + W(8, 1059352243, 1063284099, 1044912350, -1135729999)\n\t\t+ W(9, -1116804726, -1113826560, 1032134129, 1075195474)\n\t\t+ W(10, -1107091577, -1112123781, 1013263415, -1114840697)\n\t\t+ W(11, 1048220488, 1071802337, 1050907604, -1104322253);\n\tWS(-1083170743, 1032719415);\n\tsum1 =\n\t\tW(0, 1023701883, -1115388842, -1095142736, -1131637740) + W(1, 1043889005, 1012236805, 1027723212, 1037576352)\n\t\t+ W(2, -1104329709, 1047136718, -1114738168, -1143133226)\n\t\t+ W(3, -1122560214, 1028066352, -1093573195, 1050356544) + W(4, 1032119470, -1126174356, 989186599, 1034436696)\n\t\t+ W(5, -1091782714, 1058921626, 1035779088, 1024911192) + W(6, 1018265472, 1046871436, -1090370147, 1057401704)\n\t\t+ W(7, -1119260798, 1033076018, -1118377474, 1036384970)\n\t\t+ W(8, -1088395265, 1046747968, 1026791695, -1122725807) + W(9, 1034616094, 1041769608, -1092608855, 1048250192)\n\t\t+ W(10, 1007978244, 1033024419, -1143849572, 1033711598)\n\t\t+ W(11, -1085234190, 1051022467, 1035213927, 1028803056);\n\tsum2 =\n\t\tW(0, 1040592912, -1091007599, -1122569720, 1061904811) + W(1, -1096410255, -1107753434, -1148866748, 1043419584)\n\t\t+ W(2, -1102576481, -1110256028, -1106770914, 1043044202)\n\t\t+ W(3, 1032765896, -1111893630, -1114969246, 1042199718)\n\t\t+ W(4, -1108992598, -1138614142, -1113675298, -1100951705)\n\t\t+ W(5, 1060370086, 1060838438, -1088153932, -1121677972) + W(6, 1035431068, 1030657616, 1018512847, 1061366749)\n\t\t+ W(7, -1091610254, 1049599377, -1111525482, -1123081200)\n\t\t+ W(8, -1112438148, -1086083341, 1039676388, -1117594428) + W(9, 1031171080, 1009914590, 1033713452, 1029235040)\n\t\t+ W(10, -1104419583, -1154941432, -1111672592, 1048594219)\n\t\t+ W(11, -1120657004, -1090315205, 1040642594, 1041324320);\n\tWS(-1087374135, 1068569819);\n\tsum1 = W(0, 1034522569, 1036038485, 1051494643, -1092286050)\n\t\t + W(1, 1024631242, -1124293233, -1114460210, -1134485343)\n\t\t + W(2, 1048850073, -1097395434, -1155697773, 1035227470) + W(3, 1040675195, 998999958, 1055860825, -1093950865)\n\t\t + W(4, 1034953465, 1022306499, -1156322949, -1102898978)\n\t\t + W(5, 1058980799, -1086427635, 1036357020, -1115248568)\n\t\t + W(6, -1126356143, 1032174021, 1050366134, -1097745188)\n\t\t + W(7, -1115522123, 1025097211, 1038944141, 1032843110) + W(8, 1048730421, -1098221875, 1020968428, 1020281868)\n\t\t + W(9, -1123272884, -1112707068, 1043911796, -1095510475)\n\t\t + W(10, 1032316940, -1112095119, -1147588893, 1041667373)\n\t\t + W(11, 1049367775, -1093210118, -1134843155, 1003691067);\n\tsum2 =\n\t\tW(0, 1036982689, -1101176821, 1032029724, 1031712503) + W(1, -1095262307, -1135236510, -1109420523, 1040154700)\n\t\t+ W(2, 1008871494, 1051308638, -1089037290, 1036178124) + W(3, 1038171016, -1103427381, 1053639476, -1103617514)\n\t\t+ W(4, -1077227331, 1056219784, -1114883799, 1011961296)\n\t\t+ W(5, -1094943648, -1090481186, -1077304111, 1063074442)\n\t\t+ W(6, 1032698755, -1115041464, 1046242469, 1048516585) + W(7, -1075605762, 1070767205, 1023400751, -1112162319)\n\t\t+ W(8, 1015257266, -1110670159, -1086532256, 1074120487)\n\t\t+ W(9, -1119043865, -1114657793, 1018562568, 1026474691)\n\t\t+ W(10, -1115849955, 1066414901, 1034471555, -1117007917)\n\t\t+ W(11, 1031877719, 1044794303, -1110424851, 1052188053);\n\tWS(-1094340206, 1025238393);\n\tsum1 =\n\t\tW(0, 1025401267, 1041212259, 1051626551, -1087771683) + W(1, 1026720107, 1024873417, -1120317764, -1123694073)\n\t\t+ W(2, 1044638395, -1099303356, 1027277160, 1003045609) + W(3, 1029217422, 1040075594, 1051991350, -1089805402)\n\t\t+ W(4, 1042793877, 1025974530, 1017691154, -1128349902) + W(5, 1049159169, -1090474853, 1032035372, -1140916353)\n\t\t+ W(6, 1015273200, 1030937834, 1055056667, -1089928234) + W(7, 1038797403, 1026491292, 1006374863, 1030337996)\n\t\t+ W(8, 1045537234, -1095611655, 1028636183, -1125445197)\n\t\t+ W(9, -1149759301, -1112880429, 1047952828, -1103717662)\n\t\t+ W(10, 1034683820, 1018728702, 1023921508, 1048792866)\n\t\t+ W(11, -1109761292, -1097665994, 1024357062, 1024842472);\n\tsum2 =\n\t\tW(0, 1016272983, -1117564089, 1054344808, 1082928383) + W(1, 1043627742, -1113989008, -1125328223, 1007328518)\n\t\t+ W(2, 1047318060, 1074423709, 1037006400, -1137080694) + W(3, 1019432157, 1038058236, -1095657702, -1074337637)\n\t\t+ W(4, 1040243063, 1017883877, -1136495190, -1106032359)\n\t\t+ W(5, -1084625245, -1066615612, -1106132294, -1126758430)\n\t\t+ W(6, 1024638490, 1036423350, -1124414562, -1087090886)\n\t\t+ W(7, -1119023275, 1040797418, -1122054341, -1129861056)\n\t\t+ W(8, 1036648948, 1034359725, 1004167460, -1113361096) + W(9, 1016158573, -1141592892, -1120282232, 999766988)\n\t\t+ W(10, 1002865564, 1023713345, -1137665190, 1032273458)\n\t\t+ W(11, 1033205457, -1114245215, -1113153751, 1022755221);\n\tWS(-1098231918, 1035887052);\n\tsum1 = W(0, 1007686525, -1117693688, 1048268202, -1105099271)\n\t\t + W(1, -1110112236, 1016554315, -1112046456, -1119004197)\n\t\t + W(2, 1036810732, -1097653932, -1130249512, -1115219957)\n\t\t + W(3, -1136641001, -1104788790, 1055375147, -1098720398)\n\t\t + W(4, -1106155488, -1142876018, 1025581173, -1092353842)\n\t\t + W(5, 1069647932, 1066085926, -1091717545, -1143806946)\n\t\t + W(6, -1121240420, -1104580134, 1052170270, -1093227035)\n\t\t + W(7, -1110987409, -1113561092, -1165513922, -1146015939)\n\t\t + W(8, 1020096363, -1123833253, -1108464746, -1123809427)\n\t\t + W(9, -1114143760, -1162096818, -1125578169, -1107379122)\n\t\t + W(10, -1156567122, -1113074326, -1123656209, -1117522176)\n\t\t + W(11, 1031911554, -1130540403, -1106840908, -1120698772);\n\tsum2 = W(0, -1125891647, -1121500935, 1021750179, 1017645919)\n\t\t + W(1, -1130193055, -1118741587, -1139529830, 1033326245)\n\t\t + W(2, -1133323886, -1167588957, 1018366499, 1021086319)\n\t\t + W(3, -1127048511, -1110257678, 1040835222, -1108825416)\n\t\t + W(4, -1144215516, -1113356630, -1119620679, 1033808587)\n\t\t + W(5, 1061147710, 1055027509, 1035778772, -1123951235)\n\t\t + W(6, 1015042367, -1152963927, -1110018076, -1105425292)\n\t\t + W(7, -1105010302, -1124596863, -1133002574, 1023704513)\n\t\t + W(8, 1035246842, -1090179180, 1019226535, 995355927) + W(9, 1001053676, -1125968895, -1123027527, 1035235033)\n\t\t + W(10, -1113493000, -1135606974, -1136336990, -1159911790)\n\t\t + W(11, -1144777900, -1104047270, -1137733870, -1141401292);\n\tWS(-1081201436, -1083122818);\n\tsum1 =\n\t\tW(0, 1024396773, -1118776317, -1090317103, 1056470156) + W(1, -1120183581, -1124728406, 1040103323, -1121204906)\n\t\t+ W(2, -1098486564, 1048677796, -1105729174, 1010393788)\n\t\t+ W(3, -1104054160, 1048678635, -1094484293, 1048629197)\n\t\t+ W(4, 1032093347, -1105359341, 1042893967, -1101546374) + W(5, -1101075087, 1052113969, 1048228642, 1048587688)\n\t\t+ W(6, -1121710378, 1036673102, -1095873942, 1033707976)\n\t\t+ W(7, 1044099610, -1107414311, -1122190892, -1112386175)\n\t\t+ W(8, -1099326495, 1057451847, -1102747354, 1034642220) + W(9, 1038539251, 1022162966, -1101153544, 1027207978)\n\t\t+ W(10, -1114063013, -1109685144, 1020559724, -1111471555)\n\t\t+ W(11, -1095630377, 1053998976, -1125760751, 1033222029);\n\tsum2 = W(0, -1130151079, 1029357099, -1141051917, -1126143047)\n\t\t + W(1, -1138853383, 1016378649, -1128601535, -1139320303)\n\t\t + W(2, 1027307392, -1124015138, 1026568428, -1128887123)\n\t\t + W(3, 1016586775, 1016703563, 1040480663, -1090482710) + W(4, 1051692940, 1024508650, -1116462462, 1036545095)\n\t\t + W(5, -1084177500, -1061542668, 1087807110, -1109325640)\n\t\t + W(6, 1006316053, 1027702761, 1027514935, -1081711054)\n\t\t + W(7, 1065457143, -1115450794, -1136401487, -1115282656)\n\t\t + W(8, 1033882273, 1042416533, -1101742731, 1030137534) + W(9, -1134837023, 1025282364, 975470826, -1107083018)\n\t\t + W(10, 1035528582, 1016609727, 1015531121, -1128863347)\n\t\t + W(11, 1013565163, 1030037156, -1123914522, -1122133136);\n\tWS(1056806766, 1019813151);\n\tsum1 =\n\t\tW(0, -1109922347, 1038862168, -1094336356, 1045176100) + W(1, 1023835087, -1117706029, 1027672232, -1098777292)\n\t\t+ W(2, 1025923920, 1046907893, -1097985673, -1143840774)\n\t\t+ W(3, -1113027385, 1057340869, -1089223672, 1028090813)\n\t\t+ W(4, 1044113854, -1111671123, -1106442907, -1131946518) + W(5, 1049099726, 1060367739, 1010151151, 1025756788)\n\t\t+ W(6, -1119504732, 1048903346, -1102142547, -1102839017)\n\t\t+ W(7, 1051267347, -1111600768, -1127683323, -1100586740)\n\t\t+ W(8, -1122538541, 1052174932, -1093148714, 1040843731) + W(9, 1015134384, 1027127869, -1099585557, 1024110556)\n\t\t+ W(10, 1029024221, -1107564881, -1122196904, -1136830686)\n\t\t+ W(11, -1100472159, 1047790604, -1137237669, -1131252120);\n\tsum2 =\n\t\tW(0, 1016054025, -1119367753, -1115811972, 1024987046) + W(1, 1016843613, 1007599121, -1116580030, 1033363716)\n\t\t+ W(2, -1119979151, -1114756690, 1025664850, -1120202841)\n\t\t+ W(3, -1128856269, -1107794961, 1046175546, -1100926142)\n\t\t+ W(4, 1028330842, -1144919563, 1024017790, -1129548157) + W(5, 1051115205, 1048732221, 1029232538, -1123931557)\n\t\t+ W(6, -1120027976, 1034251322, -1095340379, 1044324276)\n\t\t+ W(7, -1105635461, -1122027017, 1003808451, 1039517400)\n\t\t+ W(8, -1127431641, -1104827086, 1042504965, -1118580981)\n\t\t+ W(9, -1120561807, 1019337653, 976018325, -1139095561)\n\t\t+ W(10, -1118828309, 1016896817, 1020365697, -1174223189)\n\t\t+ W(11, -1148320619, -1138276477, -1117203320, 1009819353);\n\tWS(1067549148, 1061168738);\n\tsum1 =\n\t\tW(0, -1136860560, 1041916271, 1043173595, -1099729080) + W(1, 1028345500, -1117900922, 1019396970, -1102760394)\n\t\t+ W(2, 1046914407, -1097589844, 1036811500, -1118556558)\n\t\t+ W(3, 1034693791, -1100215160, 1063664325, -1085101004)\n\t\t+ W(4, 1044130369, -1118557363, 1031876061, -1127917744)\n\t\t+ W(5, 1041579695, 1044764001, -1111608196, -1148658183)\n\t\t+ W(6, -1126960466, 1038708237, -1084953669, 1062969721) + W(7, -1096862061, 1028601293, 1026075051, 1042570959)\n\t\t+ W(8, -1099553438, 1046958554, -1104831702, 1014732126)\n\t\t+ W(9, -1129065354, 1024557450, -1111656016, 1031927572)\n\t\t+ W(10, -1121741642, 999719805, -1125694250, -1114527138)\n\t\t+ W(11, 1036161892, -1129394940, 1028864534, -1111432076);\n\tsum2 =\n\t\tW(0, 1037988572, -1097183834, -1096111302, -1112255513)\n\t\t+ W(1, 1025606252, -1131066844, -1109648154, -1096035348)\n\t\t+ W(2, 1046143856, 1047451704, -1109281762, 1021094187) + W(3, -1115314649, -1106718097, 1065688064, 1048785443)\n\t\t+ W(4, 1025033440, -1118872350, -1110735622, 1044362532)\n\t\t+ W(5, -1100541529, -1089624797, -1124926742, 1035314838) + W(6, 1029414023, 1044653749, 1022961930, 1040629892)\n\t\t+ W(7, 1024229044, -1132267648, -1115532881, -1118097482)\n\t\t+ W(8, 1041170408, -1135819985, -1109992198, 1004115214)\n\t\t+ W(9, -1114457629, 1036871139, -1121640520, -1109975688)\n\t\t+ W(10, 1007526703, -1128646118, -1123631499, 1035597348)\n\t\t+ W(11, -1109551474, 1030316886, 1031542857, -1117895342);\n\tWS(-1090126519, 1034760182);\n\tsum1 =\n\t\tW(0, 1022234099, 1038732905, -1095221408, 1049091087) + W(1, -1141106060, -1130848127, 987019599, 1040082783)\n\t\t+ W(2, -1096833350, 1049531159, -1100657291, 1036771650) + W(3, 1021371561, 1042926010, -1090005917, 1052645704)\n\t\t+ W(4, -1098472859, 1035488804, -1125185183, 1019049563) + W(5, 1049172122, 1048882035, -1113910991, 1025403478)\n\t\t+ W(6, 1040030303, -1101231100, 1056956325, -1086324445) + W(7, 1041783487, 1007113098, 1005824514, -1108355337)\n\t\t+ W(8, 1052986466, -1089320760, 1033537135, -1138596020)\n\t\t+ W(9, 1028122555, -1115211984, 1046568014, -1101798768)\n\t\t+ W(10, 1037621024, -1128732298, -1120592523, 1035983309)\n\t\t+ W(11, 1025899358, -1123937043, -1125397784, -1127374557);\n\tsum2 = W(0, 1016736022, 1032939170, -1122689775, -1102551566)\n\t\t + W(1, -1122487238, 1026411789, 1011977196, -1102682487)\n\t\t + W(2, 1060510561, 1060805847, -1122236502, -1128029215)\n\t\t + W(3, -1137999416, 1037611888, 1051792579, 1057985083) + W(4, 1036808922, 1019619350, 1019963070, -1102949496)\n\t\t + W(5, -1073351999, -1073393989, -1103029047, -1125796177)\n\t\t + W(6, 1030437859, 1039010410, 1059164734, 1057367527) + W(7, 1039165500, 1024266957, -1122046802, -1110345340)\n\t\t + W(8, 1062467108, 1062012989, -1106860549, -1119780381)\n\t\t + W(9, -1142727409, -1124097437, 1031495287, -1147452225)\n\t\t + W(10, -1143421321, 1024156551, 1018753414, -1113761662)\n\t\t + W(11, -1101619274, -1099879364, 1015482390, 1016465010);\n\tWS(-1089242039, -1127205581);\n\tsum1 =\n\t\tW(0, -1124452989, 1047404342, -1086849964, -1114062493) + W(1, 1042532510, 1010360274, 1037734344, -1111320098)\n\t\t+ W(2, 1001557948, 998659036, 1038364441, 1032729828) + W(3, -1136469606, -1115981071, 1055753134, -1096047365)\n\t\t+ W(4, -1118490271, 1015888923, 1045032037, 1038279993) + W(5, 1059294849, -1107330927, 1044317529, -1118190491)\n\t\t+ W(6, -1131176455, 1006926037, 1006841992, -1105936042) + W(7, 1035319841, 1021147727, 1029283077, 1030509432)\n\t\t+ W(8, 1049404683, -1087265492, 1043122385, -1123196402)\n\t\t+ W(9, 1038076384, -1123275877, 1037635838, -1095492784) + W(10, 1027367204, 1027584778, 1029887056, 1043334248)\n\t\t+ W(11, 1044156233, -1080260267, 1053177470, -1118995315);\n\tsum2 =\n\t\tW(0, 1029897599, -1102843967, 1001547796, 1049416264) + W(1, -1120840401, -1115391670, -1114965417, 1046605828)\n\t\t+ W(2, 1025076963, -1100594038, 1041915682, 1020641677) + W(3, 1025776431, 1033633995, -1090433692, -1096668289)\n\t\t+ W(4, 1040646462, -1111492899, -1121485495, 1048791648) + W(5, 1044097140, -1117020477, 1042521794, 1034331443)\n\t\t+ W(6, -1140617930, -1104898739, 1042488362, -1102246327)\n\t\t+ W(7, -1112857889, -1115861875, -1113546368, 1031053127)\n\t\t+ W(8, -1118485295, 1034926551, -1109164591, -1134127978)\n\t\t+ W(9, 1031651703, -1108448442, 1045463546, 1047237110)\n\t\t+ W(10, 1015998805, -1120855845, -1117524097, -1108356905)\n\t\t+ W(11, 1040816680, 1044694712, -1109851905, -1124879769);\n\tWS(-1081567068, -1085072352);\n\tsum1 =\n\t\tW(0, 1026202077, 1008391383, 1043376377, -1106037014) + W(1, -1119432853, 1015626934, 1017630556, -1102096537)\n\t\t+ W(2, 1035138955, -1113878797, 1041401156, -1112723700)\n\t\t+ W(3, 1034866076, -1105309517, 1062685095, -1091962582) + W(4, 1028045374, 995954372, -1120073907, -1113888457)\n\t\t+ W(5, -1088326467, -1099527071, 1036249665, -1112822301) + W(6, 990337572, 1038015146, -1087780001, 1065743931)\n\t\t+ W(7, -1122166240, 1036674595, -1122725732, 1010107993)\n\t\t+ W(8, -1095652846, 1048331161, 1030964177, -1165855255) + W(9, 1016189565, 1035371298, -1111927693, 1035819857)\n\t\t+ W(10, 1030882915, 1020668626, -1135328058, -1107104879)\n\t\t+ W(11, -1134788873, 1033560764, 1034792920, -1140134473);\n\tsum2 =\n\t\tW(0, -1101998430, 1025808817, 1026331301, 1041383807) + W(1, 1033833028, -1108635033, 1034880732, -1110518368)\n\t\t+ W(2, 1035202798, 1044537615, -1096440885, 1042833515)\n\t\t+ W(3, -1111573656, -1090739547, -1095903349, 1045506861)\n\t\t+ W(4, 1030373631, -1107072548, 1034691412, -1098171169) + W(5, 1068344140, 1069658374, -1094064924, 1037649108)\n\t\t+ W(6, 1017688506, 1047617175, -1085314459, -1090700374)\n\t\t+ W(7, -1106284721, -1117475933, 1032207084, -1112107064)\n\t\t+ W(8, -1108916250, -1135142667, -1113568166, 996218700)\n\t\t+ W(9, 1002612774, 1027687639, -1113844364, -1106371211) + W(10, 1043762008, -1115713024, 995363580, 1035291452)\n\t\t+ W(11, -1111293323, -1105384559, -1113615358, 1031725587);\n\tWS(-1122270064, -1083487436);\n\tsum1 =\n\t\tW(0, 1022021054, -1111938972, -1089129474, 1061173530) + W(1, -1117042135, 990992466, 1000846209, 1031069285)\n\t\t+ W(2, -1092279467, 1053406092, -1112839626, 997371026) + W(3, -1120651002, 1035108132, -1089405705, 1061891890)\n\t\t+ W(4, -1115403968, -1123767278, -1133172181, -1122478547)\n\t\t+ W(5, -1088959911, 1046812368, 1035227362, -1136588785) + W(6, 1015175368, 1022898156, -1101358829, 1052509753)\n\t\t+ W(7, 983155781, 1014548513, 1008528664, -1109542844) + W(8, -1113192731, 1035774995, 1035355065, -1120262163)\n\t\t+ W(9, 1014262402, 1003755051, -1110785838, 1040815801)\n\t\t+ W(10, -1114859906, -1139309996, 1032206792, -1099224128)\n\t\t+ W(11, -1105614817, 1041852206, 1046440556, -1196238920);\n\tsum2 = W(0, 1044179919, -1111986018, -1080384748, -1092393621) + W(1, 1048581079, 1031858735, 1022028328, 998943655)\n\t\t + W(2, -1088604014, 1029389095, 1009323699, 1021777892)\n\t\t + W(3, 1040258943, -1095034556, -1104000317, -1090514887)\n\t\t + W(4, 1015383036, 1024626196, -1118974089, -1095846499)\n\t\t + W(5, 1073459027, 1071708766, -1097133430, 1024702395)\n\t\t + W(6, 1033279863, -1110448374, -1098039236, 1012336831)\n\t\t + W(7, -1122793353, 1031448400, -1117110809, -1099083231)\n\t\t + W(8, 1045892370, 1049307354, -1097759856, 1030521846)\n\t\t + W(9, 1031745329, -1120681553, -1111672860, -1100485937)\n\t\t + W(10, 1041920736, 1016567237, -1103290765, -1101323001)\n\t\t + W(11, 1055006842, 1051814517, -1091667564, 1029007432);\n\tWS(-1097130350, -1073679750);\n\tsum1 =\n\t\tW(0, -1154560184, -1142702368, -1095841490, 1034517635) + W(1, 1044574577, 992206103, 1025389788, 1008724804)\n\t\t+ W(2, -1096179481, 1053502809, -1112918112, -1143244972)\n\t\t+ W(3, -1145657140, 1035954194, -1095185831, 1045830013) + W(4, 1042446427, -1122388570, 1000633100, 1046084016)\n\t\t+ W(5, -1085973126, 1057148843, 1025817904, -1139683234)\n\t\t+ W(6, -1120139600, 1042008657, -1089907161, 1051926551) + W(7, 1017272605, 1018417129, 1032643785, -1106616153)\n\t\t+ W(8, -1096805620, 1052799826, -1123577295, 1017209342) + W(9, 1008755251, 1025929714, -1098086361, 1043469780)\n\t\t+ W(10, -1143679882, 1016358830, 1030414749, -1102859291)\n\t\t+ W(11, -1107347576, 1050172789, 1014891512, 1026775680);\n\tsum2 = W(0, 1021941992, -1106123822, 1031547466, -1135582819)\n\t\t + W(1, 1018035752, 1017098260, -1140009235, -1137197699)\n\t\t + W(2, 1040410800, 1048777558, -1114989513, -1129449426)\n\t\t + W(3, 1026649920, -1104678389, -1091687878, -1102399061)\n\t\t + W(4, 1038853959, -1170697076, 1025391436, -1103278668)\n\t\t + W(5, -1069452203, -1086654414, -1112110740, -1134437671)\n\t\t + W(6, 1033557641, 1049392706, 1071493698, 1036526271) + W(7, -1155541821, 1030635558, -1110654493, 1026389826)\n\t\t + W(8, 1075377385, 1051671224, -1119910153, -1127657747)\n\t\t + W(9, -1117894486, 1046385471, -1093315115, 1003979070)\n\t\t + W(10, -1130248744, 1010389927, 1031221238, -1107040085)\n\t\t + W(11, -1101021764, 1042747507, -1119798403, 1007123883);\n\tWS(-1110542776, 1046722292);\n\tsum1 =\n\t\tW(0, -1112464600, 1033517476, 1047470894, -1131671638) + W(1, 1005087552, -1142745264, 1016022658, -1108629467)\n\t\t+ W(2, -1133454244, 1032980471, -1105826521, 1026603482)\n\t\t+ W(3, 1027765771, -1106997347, 1053995028, -1092318054) + W(4, 1042584756, -1129658366, 981819586, -1113497042)\n\t\t+ W(5, -1100439522, 1042288212, -1109105451, 1017901338)\n\t\t+ W(6, 1026835189, -1116788199, -1093531706, 1061947018)\n\t\t+ W(7, -1098489206, -1142191304, 1025143735, -1106078850)\n\t\t+ W(8, 1048713001, -1121614518, -1105038597, 1040275689)\n\t\t+ W(9, -1111607705, 1041100086, -1106135867, 1012478420) + W(10, 977775992, 1016467704, 1024330241, -1124631714)\n\t\t+ W(11, -1115421707, 1041393523, -1114990145, 1020475210);\n\tsum2 = W(0, 1031452303, -1132232893, -1109510079, 1018866101) + W(1, 1014551643, 1032688527, 992881643, -1116591675)\n\t\t + W(2, 1032912109, -1116915567, 1024567259, -1114177042) + W(3, 978475180, 1016124301, -1114514404, 1055420465)\n\t\t + W(4, -1097097100, 1042584708, -1121457613, -1114931492)\n\t\t + W(5, 1032060799, 1059251768, -1118272021, -1109972047)\n\t\t + W(6, 1034445399, -1094590847, 1051504728, -1088887374)\n\t\t + W(7, 1048490818, 1024892699, -1130052481, 1040974964)\n\t\t + W(8, -1087149232, 1044275534, 1035881493, -1108606213)\n\t\t + W(9, 1032145701, -1110729382, 1039284419, -1114948355)\n\t\t + W(10, 1032922179, -1121421993, -1116902843, 1035934107)\n\t\t + W(11, 1032317221, -1104983612, 1032032409, -1133789139);\n\tWS(1059165367, -1104520251);\n\tsum1 =\n\t\tW(0, 1007492796, -1108628644, -1117534006, 1041312427) + W(1, -1113108212, -1124001749, -1117692608, 1046236477)\n\t\t+ W(2, -1094176525, -1118419948, 1029454180, -1113899741)\n\t\t+ W(3, 1009135144, -1120534447, 1053590938, -1107420459)\n\t\t+ W(4, -1110779368, -1131761404, -1115310467, 1052736188)\n\t\t+ W(5, 1041258594, -1097199722, 1053879643, -1114949702) + W(6, 1014125520, -1118278150, 1001540436, 1055263011)\n\t\t+ W(7, -1098892966, 1025063448, -1113191163, 1036684740)\n\t\t+ W(8, -1106455985, -1100739533, 1045621277, -1105125705)\n\t\t+ W(9, -1129119585, 1015268651, -1112388022, 1040471133)\n\t\t+ W(10, -1126748266, -1126282358, -1118876992, 1008090175)\n\t\t+ W(11, -1114551242, 1020553106, 1026632706, -1127494856);\n\tsum2 =\n\t\tW(0, 1027505664, -1104527074, 1034957797, 1041601252) + W(1, -1108054404, -1122847824, -1115834059, 1048986559)\n\t\t+ W(2, -1098163961, -1125657446, 1041896195, 1034858548) + W(3, 1029084872, -1089420265, 1051828462, 1045110551)\n\t\t+ W(4, -1099714824, -1116127595, 1029257304, -1098414029)\n\t\t+ W(5, 1053778056, 1041501740, -1129563106, -1170669534)\n\t\t+ W(6, -1128264406, -1104406791, 1048509414, 1041829791)\n\t\t+ W(7, -1092212913, 1037831890, -1138405484, 1040673804)\n\t\t+ W(8, -1106881855, -1119286592, 1049994472, -1107117839)\n\t\t+ W(9, -1118563560, -1203758566, -1113115951, 1045914276)\n\t\t+ W(10, -1105182054, 1031508216, -1127212263, -1117936348)\n\t\t+ W(11, -1136870020, 1022365337, -1139619400, -1127498142);\n\tWS(1064754871, 1064755352);\n\tsum1 =\n\t\tW(0, -1124996947, 1039345889, -1096693846, 1051509189) + W(1, -1110987505, 1036233792, -1126765813, 1034558935)\n\t\t+ W(2, -1096907004, 1048609181, -1122110878, 981607022) + W(3, -1111973122, 1025078634, -1092723587, 1055455058)\n\t\t+ W(4, -1103910610, 1033037628, 995438583, 1031530717) + W(5, 1042155040, 1038916133, 1036071207, 1028131846)\n\t\t+ W(6, -1131935965, -1102805216, 1055052309, -1085470304)\n\t\t+ W(7, 1036962198, -1113728073, 1011044801, -1112086641)\n\t\t+ W(8, 1050402072, -1096310694, 1042970795, -1155599823)\n\t\t+ W(9, 1017902933, -1108706152, 1045488762, -1110967031)\n\t\t+ W(10, 999916154, -1121653045, -1117569083, -1125705364)\n\t\t+ W(11, 1036105095, -1114430562, 1043170799, -1131031997);\n\tsum2 =\n\t\tW(0, -1133117125, 1035315397, 1034291601, -1093657955) + W(1, -1083656994, 1063017252, 1023646322, -1104375670)\n\t\t+ W(2, 1023753609, 1053589289, -1096844972, -1117431336)\n\t\t+ W(3, 1023723550, 1045506061, -1107539440, -1104725243)\n\t\t+ W(4, -1079943056, 1065218548, 1016880452, -1100884270)\n\t\t+ W(5, 1046403885, 1040733712, -1108767061, -1110535684) + W(6, -1128763803, 1037072250, -1123261308, 987308827)\n\t\t+ W(7, 1066015084, -1088643610, 1032406499, -1100571834) + W(8, 1040670310, 1047435788, 1056439411, -1092199491)\n\t\t+ W(9, -1112596197, 1043010850, -1109210140, -1103530057)\n\t\t+ W(10, 1038430454, -1140617522, 1024272758, -1106522969)\n\t\t+ W(11, 1037357283, 1046389911, 1050581867, -1093142505);\n\tWS(-1141889920, -1150694570);\n\tsum1 =\n\t\tW(0, -1121776659, -1156363954, -1110656781, -1150990554) + W(1, 1001967189, 1009891810, 1035438770, 1043244278)\n\t\t+ W(2, -1108191526, 1049522698, 1024784007, 1026909213) + W(3, -1107472311, 1039611642, -1092681840, 1047918398)\n\t\t+ W(4, -1120026675, -1115519345, 1029335145, 1044045394) + W(5, -1089342271, 1044281805, 1041259438, 1032535224)\n\t\t+ W(6, 1032163820, 1031781705, -1107172434, -1142656241)\n\t\t+ W(7, 1035091531, -1156224954, -1122959321, -1113754566)\n\t\t+ W(8, -1110931796, -1118178969, -1114065315, -1114416227)\n\t\t+ W(9, 1035788170, 1041298854, -1106653204, 1044014582) + W(10, 1037418924, 1034927023, 1006930832, -1113010266)\n\t\t+ W(11, -1098776751, 1035377494, 968315538, -1127266575);\n\tsum2 =\n\t\tW(0, -1096670021, 1059540854, 1045575353, -1133958494) + W(1, 1031038260, -1118270456, -1102787949, 1039622534)\n\t\t+ W(2, 1037899964, 1013042349, -1110193614, 988987510) + W(3, -1099441746, 1064198145, 1030855272, 1040028330)\n\t\t+ W(4, -1117097690, 1032105974, 1043637876, -1086802625)\n\t\t+ W(5, -1101655681, 1036771998, -1125265460, -1117707023)\n\t\t+ W(6, 1052388948, -1085971065, 1033969343, 1032851236)\n\t\t+ W(7, -1103569731, -1134648980, 1042101483, -1113298762)\n\t\t+ W(8, -1105771070, -1120619083, 1049976190, 1021389004) + W(9, -1135324433, -1098667485, 1036465297, 981463467)\n\t\t+ W(10, -1101523135, -1119296945, 1042670443, -1104634628)\n\t\t+ W(11, -1104173140, 1030229840, 1035574893, 1035007302);\n\tWS(1060329015, -1107100438);\n\tsum1 =\n\t\tW(0, -1139109867, 1016013223, 1052529520, -1098269535) + W(1, -1120993331, 1025836257, -1126768152, -1108878752)\n\t\t+ W(2, 1042283693, -1103310414, 1033078264, -1113589378)\n\t\t+ W(3, -1154508124, -1139382101, 1051369597, -1093610355) + W(4, 1033661966, 1029380042, 1024792785, 1046477388)\n\t\t+ W(5, 1051787130, -1088582834, 1015463488, -1124637616)\n\t\t+ W(6, -1145234942, 1046417836, 1040695538, -1090008057)\n\t\t+ W(7, 1035018943, -1127749832, -1121126338, 1044791733) + W(8, 1046651812, -1097854544, 1029328303, 1030094510)\n\t\t+ W(9, -1165337473, -1115375281, 1039020124, -1110993568)\n\t\t+ W(10, 980238373, -1117533511, -1128378904, 1030070044)\n\t\t+ W(11, 1046922680, -1105218789, -1121430349, 1016154976);\n\tsum2 =\n\t\tW(0, -1122821091, 1039646422, -1126218548, 1020520346) + W(1, 1030755819, 1003947528, 1016851522, -1156337616)\n\t\t+ W(2, -1123806894, -1105518185, 1031650855, 980292032) + W(3, -1106087013, -1131895450, 1035943528, 999070248)\n\t\t+ W(4, 1015158698, -1123933765, -1109184296, -1080883791)\n\t\t+ W(5, 1071805249, -1096231655, 1043321474, -1122746065)\n\t\t+ W(6, 1045004090, -1074990048, 1071092779, -1125969764)\n\t\t+ W(7, -1125796080, 1018391998, 1015529466, -1105476432)\n\t\t+ W(8, -1126394390, 1028426171, 1026097175, -1126690400) + W(9, 1026918939, -1104782698, 1031828962, 1030594487)\n\t\t+ W(10, -1140334484, 1018627618, -1115690469, 1022339242)\n\t\t+ W(11, -1122803425, -1127395662, -1110808154, -1149029768);\n\tWS(1004067712, 1029538397);\n\tsum1 = W(0, 1039684517, 1025050595, 1055781642, -1093421305)\n\t\t + W(1, -1134522377, 1033902960, -1113057966, -1112884456)\n\t\t + W(2, 1052279792, -1096595713, 1008080123, -1134909265)\n\t\t + W(3, 1034662227, -1120136235, 1057037092, -1096171643) + W(4, 1038845557, 1000314570, 976341006, -1106127376)\n\t\t + W(5, 1048957300, -1083333863, -1104830972, 1017566030)\n\t\t + W(6, -1116361615, -1108532672, 1059667231, -1093970477)\n\t\t + W(7, -1107387175, -1120056627, 1039793800, -1136083213)\n\t\t + W(8, 1049781884, 1050503466, -1105145436, 1034175935)\n\t\t + W(9, -1114202454, -1109109944, 1046150498, -1098876866)\n\t\t + W(10, -1111371224, -1129568684, 1023346679, 1026195563)\n\t\t + W(11, 1052752022, -1119746148, -1106375815, 1002478074);\n\tsum2 = W(0, 996458418, 1023361218, 1020176326, -1105686968) + W(1, -1112170015, 1016740014, 1033154491, -1129026548)\n\t\t + W(2, 1036155261, -1136279909, 1029838361, -1122796554)\n\t\t + W(3, -1124552606, -1113149678, -1107309754, -1101182829)\n\t\t + W(4, -1110765232, 1027141165, 983965669, -1096377075) + W(5, 1064108379, 1059185253, 1029555247, -1111484496)\n\t\t + W(6, -1113544599, -1108470744, -1113642974, -1094171461)\n\t\t + W(7, 1048386684, 1033692775, -1118592979, -1107366613)\n\t\t + W(8, -1147140265, -1097506500, 995412594, -1108579478)\n\t\t + W(9, 1024911403, 1040480632, -1123866147, 1038318571)\n\t\t + W(10, 1045927904, -1126067866, -1120675710, 978762058)\n\t\t + W(11, -1127049668, 1027330889, -1102738273, 1023291782);\n\tWS(1047133404, -1079170418);\n\tsum1 = W(0, 1009155056, -1122581460, 1042667713, 1030334583)\n\t\t + W(1, -1108143194, 1027163842, -1116032717, -1127398915)\n\t\t + W(2, 1041078541, -1113404572, -1123819760, -1122554086)\n\t\t + W(3, -1135035740, -1111731450, 1051022508, -1111377849)\n\t\t + W(4, -1112180142, 1023811915, -1132905800, -1098422622)\n\t\t + W(5, 1065228285, -1104817319, -1102890728, -1133181796)\n\t\t + W(6, 1006908676, -1136427723, 1042380775, -1091891141)\n\t\t + W(7, -1111098047, 1001483047, -1123509635, 1019095722)\n\t\t + W(8, 1050271906, -1103926112, 1023382911, -1116735535)\n\t\t + W(9, -1129150906, 1037504657, -1107182030, -1121675713)\n\t\t + W(10, -1136273159, 1015217807, -1147535977, 1012838771)\n\t\t + W(11, 1023931745, -1123007382, -1123177070, -1130799202);\n\tsum2 = W(0, -1151544588, 1017708852, -1147640076, 1008923057)\n\t\t + W(1, 1011942449, 1018406594, -1155029688, -1121981859)\n\t\t + W(2, -1129630940, 1024218233, 998377109, -1133221663)\n\t\t + W(3, 1018065470, -1114670464, -1093073209, -1119653793)\n\t\t + W(4, -1131988255, 1025316590, 1007239987, 1049278985)\n\t\t + W(5, -1077783117, -1083801634, 1041518161, -1123603132)\n\t\t + W(6, -1125453823, 1041079714, 1074285479, 1047560438)\n\t\t + W(7, -1114079754, -1131599727, -1118997712, -1156221672)\n\t\t + W(8, 1034878186, 1028846010, -1118519138, 1024940191) + W(9, 1007542759, -1120658712, 1016277382, 1036336794)\n\t\t + W(10, -1121956184, -1131785133, -1133631258, -1113215345)\n\t\t + W(11, 1033160981, 1022080564, 1027490516, -1130450701);\n\tWS(1043550940, 1028476494);\n\tsum1 = W(0, -1115183742, -1130981802, -1100607937, 1051762223)\n\t\t + W(1, 1000007075, -1121847282, -1121780237, -1102302048)\n\t\t + W(2, -1105099981, 1040535662, -1138550724, -1111548899)\n\t\t + W(3, -1117842775, -1117998761, -1096882923, 1059510884)\n\t\t + W(4, -1102853271, -1132334487, -1110838377, -1094318158)\n\t\t + W(5, 1062548805, 1068023761, -1099046056, 1013492582) + W(6, 991794198, -1102037997, -1103616404, 1055882697)\n\t\t + W(7, -1102330336, 1018468811, -1111061058, -1115328139)\n\t\t + W(8, -1097580450, 1041348961, -1131654944, -1119471984)\n\t\t + W(9, 1015980795, -1113105937, -1103768718, 1034161697)\n\t\t + W(10, -1112888641, -1129682576, -1113960535, -1106426583)\n\t\t + W(11, -1100373208, 1044552262, -1110284503, -1148988811);\n\tsum2 = W(0, 1029690847, -1103820712, 998970743, 1028297515)\n\t\t + W(1, -1122562191, -1133991676, -1115037203, 1043435491)\n\t\t + W(2, -1096312501, 1046052979, -1115911439, 1007821180)\n\t\t + W(3, -1127742454, -1100462798, 1044923803, -1099477234)\n\t\t + W(4, 1030898927, -1113716427, 1036903221, 1028701483) + W(5, 1041049643, 1065575031, -1096910875, 1036974934)\n\t\t + W(6, -1106227374, -1121926871, 1030485727, -1098681477)\n\t\t + W(7, 1034498637, -1111652935, 1039025001, -1126383902)\n\t\t + W(8, -1125321886, 1040854499, -1115709255, -1126914630)\n\t\t + W(9, -1108879063, 1017141302, 1008577020, -1106467082)\n\t\t + W(10, 1013474716, -1128843302, 1016988574, -1115441627)\n\t\t + W(11, 1033537170, -1122382559, -1129067614, -1114648723);\n\tWS(-1079050332, -1087647968);\n\tsum1 = W(0, -1138480508, -1112879708, -1095708941, 1054719611)\n\t\t + W(1, 1031575959, -1122888245, -1122115440, 1026750308)\n\t\t + W(2, -1102419558, 1048762675, -1106236805, -1139407140)\n\t\t + W(3, 1024624314, 1027382179, -1136300523, 1057423590)\n\t\t + W(4, -1115045376, -1136279992, -1106223181, -1116109267)\n\t\t + W(5, -1083772539, 1057166968, -1096438944, -1112079518)\n\t\t + W(6, 1029330596, 1024806390, -1103579129, 1058690419)\n\t\t + W(7, -1115914082, 1025354440, -1120448614, -1128868784)\n\t\t + W(8, -1102450653, 1049252525, -1116410163, -1128866725)\n\t\t + W(9, -1134294785, 1022822666, -1100406055, 1046884233)\n\t\t + W(10, -1127656777, 1008311211, 1004544641, -1115751616)\n\t\t + W(11, -1099401009, 1051036287, 1031406769, 1030150228);\n\tsum2 =\n\t\tW(0, 1018441725, -1121226957, 1025980595, -1143973174) + W(1, -1145354702, -1118705847, 1018735508, -1128043345)\n\t\t+ W(2, 1035475244, 1028848366, 1010180031, 1001175670) + W(3, -1106801879, 1036012925, -1093599779, -1119821797)\n\t\t+ W(4, -1106432772, -1114705464, 1042307735, -1105109021)\n\t\t+ W(5, 1063056253, 1055391108, -1103238145, 1024485983)\n\t\t+ W(6, -1108191465, 1026535678, -1097885523, -1118265757)\n\t\t+ W(7, -1114258989, -1109715589, -1153036923, 1024075219)\n\t\t+ W(8, 1035122552, 1031788992, -1114303163, 1025382280) + W(9, 1023515972, -1143871918, 1028845741, -1122707515)\n\t\t+ W(10, 1031455538, -1125366621, -1130614305, -1115606924)\n\t\t+ W(11, -1124060823, -1149779899, -1117711701, -1122890135);\n\tWS(1061221431, 1002405371);\n\tsum1 =\n\t\tW(0, -1123061017, -1123480946, -1090405194, 1054235011) + W(1, 1026563665, 1000058490, -1109190069, 1033046959)\n\t\t+ W(2, -1104934581, 1044209302, -1108435303, -1121369187)\n\t\t+ W(3, -1111043962, 1050201177, -1102475777, 1057895846) + W(4, 1037490845, 1030151784, -1094345134, 1042710035)\n\t\t+ W(5, -1086823335, 1052530935, -1102625680, -1111380603)\n\t\t+ W(6, -1146354418, 1050099666, -1097235340, 1058601910) + W(7, 1033897294, 1040756961, -1113941840, 1026923762)\n\t\t+ W(8, -1091215734, 1050794548, -1126650490, -1126829850)\n\t\t+ W(9, -1145213652, 1032794752, -1094526523, 1041457976)\n\t\t+ W(10, -1110275296, 1032331475, 1017803349, 1029204218)\n\t\t+ W(11, -1089600016, 1055600534, 1021417496, 1033488871);\n\tsum2 =\n\t\tW(0, 1049937345, -1089706816, 1050626093, 1030967529) + W(1, -1115709839, 1039088353, 1058657690, -1087536311)\n\t\t+ W(2, -1106625833, -1105431871, 1036734782, -1109192755)\n\t\t+ W(3, 1071079778, -1078069733, 1020012689, 1044296437) + W(4, -1122006247, 1031394755, 1072348129, -1078647761)\n\t\t+ W(5, -1094966474, -1112600090, -1122763227, -1116226089)\n\t\t+ W(6, 1066389113, -1079714039, -1098171132, 1038432439)\n\t\t+ W(7, -1130276743, 1022577738, 1049150259, -1090508646) + W(8, 1050328795, 1044145959, 1024733405, 1012728894)\n\t\t+ W(9, -1119844839, 1022376790, -1105718319, -1126694997)\n\t\t+ W(10, 1021875579, -1123093509, -1113785170, -1103849791)\n\t\t+ W(11, 1052174137, 1034822829, -1112758982, 1013882918);\n\tWS(-1092893294, -1089220584);\n\tsum1 = W(0, 1008699951, -1127519944, 1053766130, -1103359682)\n\t\t + W(1, -1104704049, 998920846, 1010493299, -1118558929) + W(2, 1051919929, -1096189801, 1032200864, 1028526614)\n\t\t + W(3, -1124403149, -1106263811, 1056071340, -1097091836)\n\t\t + W(4, -1111082358, -1149496748, 1025199074, -1113928672)\n\t\t + W(5, 1052175436, -1086367179, 1015736929, 1019181009)\n\t\t + W(6, -1117387089, -1098638288, 1062605050, -1096005139)\n\t\t + W(7, -1120379023, -1115659002, 1015178277, 1041393441)\n\t\t + W(8, 1047707912, -1102452900, -1123219920, 1027645503)\n\t\t + W(9, -1125915034, -1112838969, 1053546873, -1101730612)\n\t\t + W(10, 1019333603, -1131717807, -1130896954, 1035998582)\n\t\t + W(11, 1049473086, -1095432549, -1136688761, -1136451331);\n\tsum2 = W(0, -1143112647, 1034689803, -1115356591, -1121270233)\n\t\t + W(1, 1017968792, 1021729984, 992704062, -1109431235) + W(2, 1039097516, 1048248946, -1124530814, 1005857263)\n\t\t + W(3, -1124855502, 1033324328, -1073085951, -1106299172)\n\t\t + W(4, 1023517229, -1126326370, 1038449046, -1098090520)\n\t\t + W(5, -1063972596, -1091325299, -1113483013, 1015994888)\n\t\t + W(6, -1105916124, 1038361982, 1062319475, -1090314642)\n\t\t + W(7, -1141826407, 1013997779, 1035072543, 1040866773) + W(8, 1085456662, 1056006422, 1034240002, -1134900259)\n\t\t + W(9, -1114904409, 1032024575, 1062308854, 1043935118)\n\t\t + W(10, -1124783482, -1135264403, 1019251456, -1164332444)\n\t\t + W(11, -1102205120, -1107459099, 1032935811, 1001043447);\n\tWS(-1104754908, -1106735671);\n\tsum1 =\n\t\tW(0, 1030490103, -1117923535, -1088908700, 1033028505) + W(1, 1045999740, -1120248133, 1032595044, 1002237924)\n\t\t+ W(2, -1094516030, 1029213684, -1144798556, 1015682178)\n\t\t+ W(3, -1128810020, -1122216143, -1092804364, 1050263192)\n\t\t+ W(4, 1022746927, -1129595020, 1032319302, -1120462507)\n\t\t+ W(5, -1102093923, 1063837581, -1106958295, 1030078356) + W(6, 1019231224, 1025980110, -1088198897, 1058220138)\n\t\t+ W(7, -1107413149, 1021953856, 1025969502, -1123369072) + W(8, -1096286026, 1054477272, 995801516, -1153493672)\n\t\t+ W(9, 1016077744, 1034830735, -1102086589, 1045907999)\n\t\t+ W(10, -1115665070, 1019926661, 1024124136, -1104242198)\n\t\t+ W(11, -1103741447, 1049334234, 1030012489, 1022398552);\n\tsum2 = W(0, -1116247065, 1035833889, -1087068607, -1107323417)\n\t\t + W(1, -1109274147, 1021616338, 1015145430, -1107082251)\n\t\t + W(2, -1079268655, -1102842161, 1016322550, -1133554677)\n\t\t + W(3, 986051432, -1114579693, 1022672030, 1049680335) + W(4, -1111459111, 1010843781, -1117862601, 1043695503)\n\t\t + W(5, 1067901888, 1032100715, 1026073955, 1017398706) + W(6, -1114715779, 1039299404, 1059152338, 1040660749)\n\t\t + W(7, 992278036, 998891466, 1034116930, -1114493167) + W(8, 1008422125, -1115195239, -1173738319, -1139208557)\n\t\t + W(9, -1144744186, -1120378069, 1020328850, 1018816198)\n\t\t + W(10, 1033325633, -1138764845, 1026244953, 1019204162)\n\t\t + W(11, -1111927269, 1021018582, -1123657301, 1016479082);\n\tWS(-1092340590, -1082645376);\n\tsum1 =\n\t\tW(0, 1018128252, 1033191659, 1040446513, -1112709788) + W(1, 1031456758, -1113441282, 1018184990, -1106475329)\n\t\t+ W(2, 1036685563, -1105689791, 1040219053, -1127103440)\n\t\t+ W(3, 1028162329, -1101261661, 1061713267, -1086509296)\n\t\t+ W(4, 1042438664, -1123459213, -1117677972, -1102532636)\n\t\t+ W(5, 1042646693, 1038532783, -1111899057, 1018898486) + W(6, -1115495745, 1031605429, -1089327101, 1064314083)\n\t\t+ W(7, -1100451664, 1033438227, -1115409474, 1010011868)\n\t\t+ W(8, -1106573237, 1046976369, -1105951352, 1029058545)\n\t\t+ W(9, 1015642046, -1127814216, -1105713919, 1039016129)\n\t\t+ W(10, 1010066702, 1013299750, -1118723567, -1112449263)\n\t\t+ W(11, -1112423953, 1030956248, 1022848097, -1130132966);\n\tsum2 = W(0, -1107775669, 1040551451, 1027302533, 1033412933)\n\t\t + W(1, -1135101756, -1131050762, -1121347079, 1042459857)\n\t\t + W(2, -1122087227, -1113656153, 1017950151, -1130160250)\n\t\t + W(3, -1118975841, 1031184422, 1016161914, 1035641742)\n\t\t + W(4, -1109563699, 1017438602, -1121125435, -1152381105) + W(5, 989383522, -1114487413, 1046120628, 987844130)\n\t\t + W(6, -1123325897, -1105935240, 1045806619, 1041762467)\n\t\t + W(7, -1114574520, -1117833439, 1012434826, -1115286413)\n\t\t + W(8, -1125562074, 1029416951, 1035110196, -1173771715)\n\t\t + W(9, -1129695564, -1124425722, -1111270899, 1028252326)\n\t\t + W(10, 998528980, -1121778743, 1006663086, -1111096901)\n\t\t + W(11, -1114174571, -1127668218, 997585257, -1126450718);\n\tWS(1052284526, 1042464092);\n\tsum1 =\n\t\tW(0, 1010280196, 999914700, 1057530557, -1098111272) + W(1, -1101387838, 1027464615, -1136974408, -1110845507)\n\t\t+ W(2, 1046554367, -1100087104, -1110795931, -1128121686)\n\t\t+ W(3, 1026365340, -1109035161, 1060667985, -1090659644)\n\t\t+ W(4, -1102616600, 1001926272, 1020617774, -1110448219)\n\t\t+ W(5, 1063323154, -1094987596, -1105684762, 1025859742)\n\t\t+ W(6, 1023947782, -1110075532, 1043924417, -1095988958)\n\t\t+ W(7, -1124311688, 1017827156, -1127515216, 1038195741) + W(8, 1050039723, -1097163609, 1018127786, 1034844538)\n\t\t+ W(9, -1129271461, -1114945332, 1042422080, -1105136802)\n\t\t+ W(10, -1124435598, -1130637466, 1007810505, 1019473092)\n\t\t+ W(11, 1052688005, -1095692091, -1114597706, 1027019478);\n\tsum2 =\n\t\tW(0, 1025355846, -1119913429, 1034044275, -1140464466) + W(1, -1091074448, 1041357090, -1124685033, 1010871130)\n\t\t+ W(2, 1036346050, 1032812135, -1086522508, 1037018199) + W(3, 1029205900, 1016143206, -1128364593, 1071964190)\n\t\t+ W(4, -1074918519, 1033277276, 1011755468, 1033794365)\n\t\t+ W(5, -1133342818, 1067600837, -1089329657, -1111447139)\n\t\t+ W(6, -1113277680, -1140030878, 1020927778, 1039362648)\n\t\t+ W(7, -1106053895, -1118126225, 1035269289, 1020099653) + W(8, 1035477071, 1033733070, -1108456989, 1032003060)\n\t\t+ W(9, -1122502097, 991986873, 1011575434, 1008065452) + W(10, -1146528221, -1117647411, 1013457876, 1035095720)\n\t\t+ W(11, 1029499077, 994468553, -1106105254, 1009180302);\n\tWS(-1085785015, -1080175544);\n\tsum1 = W(0, 1035373246, -1103151077, 1058377668, -1091874455)\n\t\t + W(1, 1025579124, -1111695537, -1125806618, 1045216768)\n\t\t + W(2, 1050584367, -1094766367, 1043611260, 1043525714)\n\t\t + W(3, -1118822551, -1094452856, 1054861331, -1107649205)\n\t\t + W(4, -1106387815, -1102079139, 1044894533, 1039875576)\n\t\t + W(5, 1046782533, -1090132878, 1049375324, -1105407270)\n\t\t + W(6, -1102223008, -1151103277, 1057861265, -1090472533)\n\t\t + W(7, -1115030560, -1144672552, 1041222777, -1094574331)\n\t\t + W(8, 1051791466, -1111571937, -1137989279, -1102123612)\n\t\t + W(9, 1023709757, 1048044105, 1043274206, -1098390656)\n\t\t + W(10, 1049548184, 1041305154, -1122183565, -1103877399)\n\t\t + W(11, 1058273114, -1092114299, -1106419572, -1116205169);\n\tsum2 =\n\t\tW(0, 998449416, -1118465870, -1124628345, -1148690252) + W(1, 1037770975, -1105952484, -1121990028, 1035743758)\n\t\t+ W(2, 1040306990, 1001004257, -1132010249, 1037805583) + W(3, 1039055377, -1103571680, -1098483719, 1060096717)\n\t\t+ W(4, -1108861100, -1087084008, -1115523342, 1049274722) + W(5, 964150684, 1077176219, 1047972499, -1070507600)\n\t\t+ W(6, -1132069983, -1106547389, 1024621733, 1060014437)\n\t\t+ W(7, -1098623231, -1092504349, 1032292249, -1126693677)\n\t\t+ W(8, -1103504000, 1016774454, 1034159573, -1105946989)\n\t\t+ W(9, -1128335569, 1034009109, 1043582890, -1107960970) + W(10, 1020716885, 1041667680, 998312734, -1116877357)\n\t\t+ W(11, -1116867442, -1139511962, 1042264637, -1102914489);\n\tWS(1041580764, 1025947967);\n\tsum1 =\n\t\tW(0, 1032565172, 1034662848, 1053611982, -1093835868) + W(1, -1131110976, 1036244351, -1116825273, -1104706235)\n\t\t+ W(2, 1050747028, -1092905173, -1131069497, -1119290642)\n\t\t+ W(3, 1019951750, -1115255997, 1050206724, -1095669879) + W(4, 1036897764, 1017394926, 1022134396, -1107214727)\n\t\t+ W(5, 1063007652, -1096926641, -1105182467, 1029927621)\n\t\t+ W(6, -1111515158, -1098820316, 1060757006, -1089733625)\n\t\t+ W(7, -1098715869, -1106823604, 1034025399, 1032808736) + W(8, 1052025888, 1049974094, -1104277767, 1037476046)\n\t\t+ W(9, -1110133221, -1102823188, 1043880105, -1099659531)\n\t\t+ W(10, -1106501955, -1114565306, -1159719714, 1021100817)\n\t\t+ W(11, 1052817434, -1119725058, -1106408671, -1122404893);\n\tsum2 = W(0, -1132209742, 1031078182, -1131885988, -1109418986) + W(1, 969823813, -1135041624, 986836209, 1029631070)\n\t\t + W(2, 1025515900, -1129378830, 1027058278, 1012367442)\n\t\t + W(3, -1121945777, -1119773491, 1029199828, -1113141662)\n\t\t + W(4, 1030656895, -1116640321, -1170553346, 1020231728)\n\t\t + W(5, -1120148774, 1055904551, -1099466937, 1014349374)\n\t\t + W(6, -1138085578, 1023900693, -1122079840, 1057958803)\n\t\t + W(7, -1089769002, 1019607807, -1127752664, -1133642976)\n\t\t + W(8, 1019687015, 1044815557, -1096970616, 1019685270) + W(9, 1024317954, 1016594015, 1019770946, -1115676013)\n\t\t + W(10, -1105180704, 1040370156, -1170071298, -1123929889)\n\t\t + W(11, -1134784812, 1040873658, -1104818759, 1020720783);\n\tWS(-1101021916, -1101341893);\n\tsum1 =\n\t\tW(0, 1026213188, -1104193847, -1099125811, 1055643976) + W(1, 1025577212, -1110018309, -1128959914, 1029994953)\n\t\t+ W(2, -1096018912, 1049220736, -1111820508, 1025253614)\n\t\t+ W(3, 1026395551, -1146733010, -1093634574, 1055313981)\n\t\t+ W(4, -1119144868, -1114303945, -1114900877, 1036038140)\n\t\t+ W(5, -1086773562, 1052012604, -1127551698, -1123712161)\n\t\t+ W(6, -1152047246, 1031817213, -1090412335, 1060627153)\n\t\t+ W(7, -1111302883, 1028280877, 1012420650, -1118727997)\n\t\t+ W(8, -1107844781, 1051291321, 1025725832, -1119269431) + W(9, 1006057769, 1021561044, -1104575744, 1049980081)\n\t\t+ W(10, -1112108341, 1031833384, 1026345301, -1106810537)\n\t\t+ W(11, -1104632714, 1047342967, 1003961523, 999050183);\n\tsum2 = W(0, -1131988010, -1111316079, 1041465340, 1024389323)\n\t\t + W(1, -1121573843, -1149117460, 1023490159, 1007442131)\n\t\t + W(2, -1100903601, 1055734435, -1125698351, -1131908940)\n\t\t + W(3, -1126411872, -1122871173, 1038743702, 1080207498)\n\t\t + W(4, 1043717463, -1114017647, -1164111651, 1046145376)\n\t\t + W(5, -1093182708, 1078445253, 1049726225, -1119425741)\n\t\t + W(6, -1121501747, 1040330964, 1049859497, -1068399047)\n\t\t + W(7, -1122596352, 1019240934, 1031886393, -1109560063)\n\t\t + W(8, -1098635398, -1066503158, -1100760677, 1009702615)\n\t\t + W(9, -1117332099, 1016982738, 1035352171, -1109489195)\n\t\t + W(10, -1113462329, 1032687935, 1035364539, 1005935896)\n\t\t + W(11, -1113093917, 1012210427, 1035980752, -1141270643);\n\tWS(1046490332, 1041425064);\n\tsum1 = W(0, 1024529499, -1116828595, -1093042204, 1043650965) + W(1, 1015429414, 1019425762, 1033054902, 1002731779)\n\t\t + W(2, -1098109922, 1045029126, -1106337284, 995804238) + W(3, 1031945755, 1040980232, -1092614541, 1058500980)\n\t\t + W(4, 1033182334, 1032419541, -1146773895, -1160896989)\n\t\t + W(5, -1086741475, 1055608303, -1109695552, -1179835378)\n\t\t + W(6, 1029605664, 1052617834, -1091564618, 1058257970) + W(7, -1174108025, 1044059953, 1004520717, 1015420456)\n\t\t + W(8, -1090483479, 1019101890, 1029823567, -1127672093)\n\t\t + W(9, 1031502108, 1044142352, -1094325635, 1041689704)\n\t\t + W(10, -1123497953, 1032927635, 1024614604, 1032157630)\n\t\t + W(11, -1086427940, 1049761551, 1041880275, 1040104968);\n\tsum2 = W(0, -1122431319, 1026151548, -1122010793, 1049905644)\n\t\t + W(1, -1102178930, -1124048569, -1114479591, -1106953243)\n\t\t + W(2, 999999917, -1108260971, -1125976243, -1126306455) + W(3, 1024826864, 1048064546, 992235770, 1050719290)\n\t\t + W(4, -1123774104, 1025075060, -1100833312, -1097347844)\n\t\t + W(5, 1040448763, 1045454882, -1096948195, -1105554812) + W(6, 1043724086, 1037967160, 1044292364, 1049686405)\n\t\t + W(7, 1038302972, 1034346164, -1109354990, -1109085075)\n\t\t + W(8, 1032432738, -1111087807, -1108325988, -1114960687)\n\t\t + W(9, -1130104331, -1110876131, -1143420941, -1098496523)\n\t\t + W(10, -1118752296, 994535386, 1015245663, 1007980535)\n\t\t + W(11, 1040568157, 1043523736, -1113347688, 1032072922);\n\tWS(-1096079726, -1086813702);\n\tsum1 = W(0, -1135457777, -1105268453, 1045566625, -1104980990)\n\t\t + W(1, -1105625101, -1128467237, 1020632987, -1134572551)\n\t\t + W(2, 1038076635, -1125909619, -1145052038, 1035122115)\n\t\t + W(3, -1136898909, -1100910973, -1141635906, -1094783105)\n\t\t + W(4, 1032999502, -1125440663, 1041289173, -1166801940) + W(5, 1058638213, 1057673490, 1030475041, 1035865453)\n\t\t + W(6, 1012368645, 1038525034, -1104077708, -1100424110)\n\t\t + W(7, -1113674176, 988204202, 1002632984, -1102504381)\n\t\t + W(8, 1033251913, -1111352769, -1113040784, -1119749552)\n\t\t + W(9, 1024629150, 1029902179, 1009307365, 1012100357) + W(10, 992583714, 1027550920, -1127204699, -1110256943)\n\t\t + W(11, 1022942147, -1133590617, -1114381639, -1124393059);\n\tsum2 = W(0, 1009177065, -1117003048, 1042183695, -1105766164)\n\t\t + W(1, -1112946812, 1019480223, -1120740066, 1013092463)\n\t\t + W(2, 1025589372, 1042721142, -1113055730, 1026018809)\n\t\t + W(3, 1031366584, -1102800003, -1111208570, -1149080533)\n\t\t + W(4, -1103263899, 1020058227, 1041576942, -1090661723) + W(5, 1068855162, 1040487387, 1030911277, 1007104581)\n\t\t + W(6, -1100270767, 1059100650, -1085550755, 1023619821)\n\t\t + W(7, -1103276630, 1029611268, 1045439690, -1097382737)\n\t\t + W(8, 1044086134, -1099098175, -1114239046, -1162581429)\n\t\t + W(9, -1125959183, 1022453518, 1032267243, -1126080241)\n\t\t + W(10, -1107084863, 1037226018, 1033773937, -1106788899)\n\t\t + W(11, 1025170288, -1106320787, 1019625936, -1116554192);\n\tWS(1059841719, 1028884484);\n\tsum1 = W(0, -1113543486, -1108411818, -1112074625, 1058342439)\n\t\t + W(1, -1101044205, -1143395087, -1112448166, -1111506273)\n\t\t + W(2, 1034453786, 1041783662, -1112657624, -1122260358)\n\t\t + W(3, -1123514455, -1104706915, 1033474668, 1050338440)\n\t\t + W(4, -1103529079, -1124590486, 1014814024, -1096756366)\n\t\t + W(5, 1052483434, 1043430567, -1099567912, -1132902244)\n\t\t + W(6, -1116573889, -1106354949, 1048710884, -1116369607)\n\t\t + W(7, -1110811775, -1118491109, -1120616579, -1107115957)\n\t\t + W(8, 1049505778, -1117001986, -1119641312, -1118809775)\n\t\t + W(9, -1132301434, -1117349474, 1050151687, 1011608836)\n\t\t + W(10, -1133908615, 996976763, -1127146586, -1105758103)\n\t\t + W(11, 1056594572, -1106214629, -1113349351, -1114523384);\n\tsum2 = W(0, -1131846847, -1142019487, -1119272484, 1043688817)\n\t\t + W(1, -1110979463, -1128104285, 999597315, 973346488)\n\t\t + W(2, -1113005256, -1112114230, -1112619479, 1003422803)\n\t\t + W(3, 997751878, -1127636492, -1113445057, 1056371527)\n\t\t + W(4, -1097247478, 1021279303, -1114921220, -1114646695)\n\t\t + W(5, 1055277760, 1041350431, 1019660165, -1127196333) + W(6, 1031101790, -1098897499, 1032426103, 1038923617)\n\t\t + W(7, -1105379211, -1138766624, -1115596944, 1027087956)\n\t\t + W(8, 1036539833, -1123786644, 1026606310, -1129408714)\n\t\t + W(9, 1024706196, -1111832500, -1114392819, -1130636099)\n\t\t + W(10, 1012894502, -1130181692, -1120544321, 1029100436)\n\t\t + W(11, 1010252474, -1123180191, -1125326592, -1164469676);\n\tWS(-1092619630, -1089382730);\n\tsum1 =\n\t\tW(0, -1111364766, 1023648980, 1039669985, -1112475547) + W(1, -1102256285, 1036516737, 1043539187, 1020312451)\n\t\t+ W(2, -1096148415, 1048019422, 1027548272, -1110790259) + W(3, 984781533, -1115220152, 1055391282, -1085560118)\n\t\t+ W(4, 1048070471, 1016263062, 1030068626, -1101226428) + W(5, 1026945555, 1059189430, -1108016176, -1120756633)\n\t\t+ W(6, 1026274177, 1038621209, -1081505706, 1059392734) + W(7, 1040580240, 1007770772, -1111039089, -1105671421)\n\t\t+ W(8, 1045179252, -1105049488, 1037378816, 1034683832) + W(9, 1024515101, -1101912057, -1132720100, 1041558112)\n\t\t+ W(10, 1031071010, -1109624324, -1120853581, 1015856825)\n\t\t+ W(11, 1027675681, -1133761880, 1032748839, 1021933410);\n\tsum2 = W(0, 1021752691, -1111677325, -1108952074, 1033183913)\n\t\t + W(1, 1044091848, -1113755692, -1117827136, 1031932470)\n\t\t + W(2, -1110048197, 1038437939, -1103930854, 1027358915)\n\t\t + W(3, -1125983252, -1130612142, 1045228241, 1050756049)\n\t\t + W(4, 1008734718, -1104619422, 990310070, -1104195843) + W(5, 1051763659, 1045197632, -1105931725, 1032921649)\n\t\t + W(6, -1109957501, -1168184730, 1028013889, -1115591069)\n\t\t + W(7, -1149204891, -1117367196, 1040724727, -1105272655)\n\t\t + W(8, -1136328910, -1123843648, 1020655719, -1140627498)\n\t\t + W(9, -1109878975, 1035492359, -1114456338, -1120329563)\n\t\t + W(10, -1120613434, 1033876328, 1031887118, -1103738768)\n\t\t + W(11, -1114723198, 1035246991, -1121689275, -1121880867);\n\tWS(1051433070, 1041054969);\n\tsum1 = W(0, 1027474774, 1025557871, -1105663671, 1035613609) + W(1, 1041537220, 1027665948, 995089009, 1019369911)\n\t\t + W(2, 1032468488, 1037418314, 1036952965, -1122283488) + W(3, 1034863641, 1049084179, -1096978722, 1039456478)\n\t\t + W(4, 1041156238, 1041167849, -1109189270, 1046403907)\n\t\t + W(5, -1082587707, -1080639932, 1049567823, -1112387034)\n\t\t + W(6, 1039503310, 1044512531, -1102025153, 1026454114) + W(7, 1040087661, 1039611744, -1126811322, 1035909664)\n\t\t + W(8, -1107200379, 1042549431, 1039105725, -1137459494)\n\t\t + W(9, 1033371404, 1033234174, -1104819461, 1042229543)\n\t\t + W(10, -1131034584, 1031071714, 1010666397, 1028564471)\n\t\t + W(11, -1106755535, 1034360184, 1031577769, 1033297350);\n\tsum2 =\n\t\tW(0, 1039097792, -1103860174, -1106228186, 1004583985) + W(1, 1031892389, -1133334119, -1128793460, -1106733661)\n\t\t+ W(2, 1050938198, -1097187313, 1046933969, -1107245750)\n\t\t+ W(3, -1140010118, 1043000544, -1100268114, 1021007203)\n\t\t+ W(4, -1107049139, 1039577114, 1022871695, -1106671798) + W(5, 1039252188, 1053089515, 1049075999, -1104825734)\n\t\t+ W(6, -1138263433, 1046664654, -1099105674, 1048715277)\n\t\t+ W(7, -1103930146, 1030321621, -1112923836, -1123142296)\n\t\t+ W(8, -1121884665, -1114597930, 1022883749, -1117968576)\n\t\t+ W(9, 1026478628, 1037719970, -1100173198, 1047464456)\n\t\t+ W(10, -1098080196, 1036807670, -1110368657, 1042580191)\n\t\t+ W(11, 1034926170, -1106315502, -1108178582, 1018138445);\n\tWS(-1097236334, -1078251511);\n\tsum1 =\n\t\tW(0, -1147379729, -1107131303, -1102832418, 1058323440) + W(1, 1023750586, -1116361496, 981774949, 1007351583)\n\t\t+ W(2, -1125527926, 1053289720, -1121375351, -1124892056)\n\t\t+ W(3, -1145120489, 1033603653, -1095625930, 1056660465)\n\t\t+ W(4, 1026746467, -1128008098, -1112510828, 1043141838)\n\t\t+ W(5, -1082084799, 1032726417, 1033795604, -1117973855) + W(6, 975327689, 1029606457, -1090577043, 1058345481)\n\t\t+ W(7, 1025947909, -1148460889, 1008364580, 938727969) + W(8, -1093823475, 1053416161, -1131151340, -1125502955)\n\t\t+ W(9, -1140670990, 1020032977, -1098508888, 1046390514)\n\t\t+ W(10, -1119905544, 999577711, 1022969831, -1108966769)\n\t\t+ W(11, -1096801949, 1049766564, 1037296218, 1010324189);\n\tsum2 =\n\t\tW(0, 1024894779, -1102276353, -1120020336, -1081787381) + W(1, 1039662448, 1023553607, 1020144998, 1025017931)\n\t\t+ W(2, -1096890621, -1080908066, 992888305, -1118655405)\n\t\t+ W(3, -1118791847, -1107221556, 1050182775, -1102161510)\n\t\t+ W(4, -1130889346, -1120230550, 1007750652, 1046635995) + W(5, 1039741552, 1072604155, 1039835396, -1126400334)\n\t\t+ W(6, -1137666916, -1132306598, 1043589185, 1055213170) + W(7, -1110509653, 1020541198, 1023698735, 1023586615)\n\t\t+ W(8, -1108361045, -1115556916, -1122324709, 1020891302)\n\t\t+ W(9, 1009542396, 1030880679, -1114600836, 1037616572)\n\t\t+ W(10, 1000980713, -1119304668, -1129126018, 1015842286)\n\t\t+ W(11, 1024872627, -1105259074, -1124270218, 1033066840);\n\tWS(-1095840110, 1065907853);\n\tsum1 =\n\t\tW(0, -1149009607, -1123781617, 1057715094, -1102734645) + W(1, -1101560548, 1034276991, 1029310442, -1130903741)\n\t\t+ W(2, 1048478500, 1041326469, 1036129479, 1021921030) + W(3, -1122029108, -1115466131, 1058442742, -1088947208)\n\t\t+ W(4, -1107277134, 1036949012, -1136794300, 964920945) + W(5, 1045634572, -1083008792, -1109559039, 1024401462)\n\t\t+ W(6, -1118254622, -1115351608, 1052165513, -1096684061)\n\t\t+ W(7, 1036543086, -1114280609, -1132243967, 1043406509) + W(8, 1053323726, -1089856222, 1024712701, 1035777670)\n\t\t+ W(9, -1126823604, -1116119295, 1042519141, -1127763004)\n\t\t+ W(10, 1009014011, -1132072137, 1010554921, 1040435870)\n\t\t+ W(11, 1051535704, -1095672430, -1114598742, 1024787534);\n\tsum2 =\n\t\tW(0, -1122765153, -1112086475, 1040388299, 966593378) + W(1, -1114107386, 975247631, -1119761608, -1118318168)\n\t\t+ W(2, 1023061820, -1102263327, -1113965021, -1137846028)\n\t\t+ W(3, -1115823403, -1121250504, -1128744886, -1110151426)\n\t\t+ W(4, 1045334069, -1111548146, -1123357438, -1119202357)\n\t\t+ W(5, 1057284387, 1059190541, -1118800384, 1023792011)\n\t\t+ W(6, -1105805209, 1024515185, -1103324019, -1106793279)\n\t\t+ W(7, -1164047122, -1112106446, 1031734555, -1130234658) + W(8, 1037222780, 1050053336, 1025627836, 1020007628)\n\t\t+ W(9, -1111986136, -1134784044, -1110952019, -1107073751)\n\t\t+ W(10, -1114668630, -1125560981, -1126486235, 1026675759)\n\t\t+ W(11, -1117543075, 1021583022, -1124432766, -1131408661);\n\tWS(1024351088, -1094038469);\n\tsum1 = W(0, 1016930687, 1038061004, 1052546457, -1086527812) + W(1, 1040515838, 1006605995, 1024919184, -1118029957)\n\t\t + W(2, 1050276351, -1103330015, 1027568116, 1004978763) + W(3, 988693323, 1005748798, 1052906127, -1085615881)\n\t\t + W(4, 1040353352, 1030413326, 1038267403, 1038925818) + W(5, 1062157201, -1097782940, -1124671689, 1031140124)\n\t\t + W(6, 1001354275, 1032752795, 1055274272, -1088621706)\n\t\t + W(7, -1113419105, 1009586849, -1123840710, 1034287148)\n\t\t + W(8, 1050137483, -1090365828, 1017331974, 1023985459)\n\t\t + W(9, -1125725377, -1110688307, 1036684158, -1108159426)\n\t\t + W(10, 1018660298, -1129057942, -1120680465, 1036629872)\n\t\t + W(11, -1112935826, -1098987606, 1039926041, -1120649652);\n\tsum2 =\n\t\tW(0, 1018662896, 1033363591, -1101021011, -1107389045) + W(1, 1013978472, -1120396150, -1131745232, 1031409358)\n\t\t+ W(2, -1109130821, 1050735765, -1122086781, 1024022584)\n\t\t+ W(3, -1136728576, 1036576685, -1097527529, 1043333749) + W(4, 1029525730, 1015209616, -1110788716, 1060006588)\n\t\t+ W(5, 1058553385, -1120731420, -1118628277, 1030135008)\n\t\t+ W(6, -1123530251, 1052968790, 1023922010, -1100470754)\n\t\t+ W(7, -1117232951, 1018906596, -1101470606, -1102632350)\n\t\t+ W(8, 1057288665, -1097217661, -1112638769, -1121049341)\n\t\t+ W(9, -1110519714, -1105224546, -1111209476, 1038218737)\n\t\t+ W(10, -1121310567, 1024891644, -1125138150, -1083015355)\n\t\t+ W(11, 1034932287, 1047940150, 1023530026, -1113292326);\n\tWS(-1086599863, 1058406314);\n\tsum1 = W(0, -1165120005, 1027409257, 1060099497, -1093079745)\n\t\t + W(1, -1114693988, 1019186220, -1133002117, -1121445206)\n\t\t + W(2, 1049800473, -1099695891, 1033258882, 1025328858)\n\t\t + W(3, -1129945046, -1106007410, 1059141168, -1091476505)\n\t\t + W(4, -1129815521, -1128567742, 1024249318, -1105883025)\n\t\t + W(5, 1051534797, -1093891126, -1124179562, 1017248474)\n\t\t + W(6, -1119162837, -1105279538, 1058010671, -1094225343)\n\t\t + W(7, -1106482085, -1123837177, 1026085015, -1127421331)\n\t\t + W(8, 1051659429, -1106347590, -1112036922, 1031899202)\n\t\t + W(9, -1121003281, -1109094875, 1047889907, -1098091099)\n\t\t + W(10, 1030868870, -1123224348, -1127955907, 1024561201)\n\t\t + W(11, 1050835423, 999784785, -1097732400, -1141903913);\n\tsum2 = W(0, -1116781913, 1031543998, 1082393585, 1050004941) + W(1, 1025243259, -1123250937, 1016621488, 1029140379)\n\t\t + W(2, 1078957479, 1028477447, 1010603263, -1125975170)\n\t\t + W(3, -1133566515, 1044191480, -1080327233, -1104837212)\n\t\t + W(4, -1125439138, 1007793087, -1124282558, -1105795809)\n\t\t + W(5, -1065075267, -1086493521, -1117319975, 1028403247)\n\t\t + W(6, 1034216133, 1017978886, -1076777978, -1109285108)\n\t\t + W(7, 988101688, -1125200922, -1128560494, -1175609568) + W(8, 1030943022, 1045155438, 1024551608, 1020903576)\n\t\t + W(9, 991940908, -1120640387, -1110243052, 1033432207)\n\t\t + W(10, -1129511338, -1119399555, 1017899660, 1019924506)\n\t\t + W(11, -1113970478, -1130476854, 1020472787, 1028374268);\n\tWS(-1102531292, -1104168529);\n\tsum1 =\n\t\tW(0, -1149508566, 1032023755, 1058049088, -1091020399) + W(1, -1123106485, 1018386839, -1156103398, -1123937923)\n\t\t+ W(2, 1044530702, -1093487559, 1028416434, 1022122127) + W(3, 1005530819, -1114986325, 1057825341, -1088576155)\n\t\t+ W(4, -1124442300, 1027828556, 1019304359, -1105594348)\n\t\t+ W(5, 1061967565, -1113700815, -1132463754, 1023613146)\n\t\t+ W(6, -1111288609, -1100927253, 1057378026, -1096522221)\n\t\t+ W(7, -1107169312, -1118265958, -1152861762, 1042848102)\n\t\t+ W(8, 1043852869, -1100187457, 1030031137, 1031835352)\n\t\t+ W(9, -1123770879, -1131000647, 1032195229, -1097716728)\n\t\t+ W(10, -1127676038, -1124424850, 992160490, 1048571064)\n\t\t+ W(11, 1021567685, -1095320739, 1015048992, -1151822630);\n\tsum2 =\n\t\tW(0, -1112466451, 1034684305, -1101371049, -1100658772) + W(1, 1043071493, -1119405084, -1130983341, 1035765483)\n\t\t+ W(2, -1113050760, -1100149859, 1039321546, -1140521940)\n\t\t+ W(3, 1032826781, -1117553496, -1096382267, 1042208912)\n\t\t+ W(4, -1131759707, -1127348451, -1114093653, -1101908611)\n\t\t+ W(5, 1063677104, 1062452463, -1106482074, 1028341682) + W(6, 1040752192, -1105770401, -1132405995, 1047214162)\n\t\t+ W(7, -1105645940, 1022142418, -1154197073, -1106309648)\n\t\t+ W(8, -1114901667, -1095028755, 1034888818, -1118255322) + W(9, 1026229169, 984953298, 1023704972, -1109270652)\n\t\t+ W(10, 1035103126, -1118485150, 1032051747, -1113409477)\n\t\t+ W(11, -1104964374, -1107539022, 1008251057, 1025943565);\n\tWS(-1107552696, -1110437397);\n\tsum1 = W(0, 994440345, -1114854865, 1038159592, -1169396004)\n\t\t + W(1, -1112745281, 1003079356, -1123893979, -1115498472)\n\t\t + W(2, -1143015444, -1103811554, -1176837895, -1126823399)\n\t\t + W(3, -1123659045, -1107252796, 1048547885, -1102945115)\n\t\t + W(4, -1113210869, -1127252913, 1033249360, -1098484960)\n\t\t + W(5, 1066459081, 1054059005, -1092775086, 1036761683)\n\t\t + W(6, -1115012423, -1105215024, 1050116824, -1110458371)\n\t\t + W(7, -1107508006, -1117476787, 1025628848, -1113844817)\n\t\t + W(8, -1114931568, 1027966800, -1115481499, -1139958260)\n\t\t + W(9, -1120012907, 1015022176, -1139703834, -1137430074)\n\t\t + W(10, -1123286831, -1143819946, -1138236651, -1112267573)\n\t\t + W(11, 1030992175, 1038350450, -1114208046, -1119805695);\n\tsum2 =\n\t\tW(0, -1128900045, 1032112026, -1122103841, 1020429393) + W(1, -1123818335, 1025087925, -1134566747, -1121844433)\n\t\t+ W(2, 1023900033, 1031965476, -1168200234, -1116320886) + W(3, 1023101249, 1024457633, -1130431017, 1010339139)\n\t\t+ W(4, -1111989275, 1037399444, -1119409466, 1041370918)\n\t\t+ W(5, 1071310745, -1073631838, -1111141033, -1131868341)\n\t\t+ W(6, 1014344875, -1138667107, 1015570157, 1024644617) + W(7, -1128248465, 1027301561, -1124604689, 1023011873)\n\t\t+ W(8, 1025187637, 1038341472, 1032459330, -1118206868)\n\t\t+ W(9, -1135550339, -1123574415, 1029193653, -1117036677)\n\t\t+ W(10, 999769253, -1124415769, 1011013307, 1018662193)\n\t\t+ W(11, -1118001398, 1034637136, 1020580065, -1136885571);\n\tWS(-1106869980, -1095812171);\n\tsum1 = W(0, 998635262, 1030538232, -1104276842, 1021368885) + W(1, 1037657452, 1012233735, -1132768195, 1032306163)\n\t\t + W(2, 1027943897, 1042581143, -1130589992, -1127936403)\n\t\t + W(3, 1031165051, 1040655940, -1094369165, 1043839724) + W(4, 1045125152, 1030674671, -1109012795, 1049530762)\n\t\t + W(5, -1079963696, -1098205560, 1052736873, -1106402911)\n\t\t + W(6, 1031921458, 1035845131, -1094529094, 1041010327) + W(7, 1041646697, 1035635524, 959153786, 1029124089)\n\t\t + W(8, -1138415831, 1043286153, 1033263566, -1117746707)\n\t\t + W(9, 1015400066, 1034791747, -1107836910, 1040781721)\n\t\t + W(10, -1127518347, 1026900011, 1020404450, -1126776961)\n\t\t + W(11, -1127281161, 1032119517, 1032079673, 1007765715);\n\tsum2 =\n\t\tW(0, -1137391706, 1016897725, -1122041158, 1032188407) + W(1, 959684203, 1004755699, -1152109415, -1123613558)\n\t\t+ W(2, -1117579022, 1034093919, -1123954990, -1142267571)\n\t\t+ W(3, 1015680093, 1031100358, 1032233585, -1107212716) + W(4, -1144448755, 1020208893, -1108578627, 1031185182)\n\t\t+ W(5, 1068869480, -1079207220, -1112638895, -1131161181)\n\t\t+ W(6, 1012334874, 1018767069, 1031129926, -1118301998) + W(7, -1145613555, 1014639674, -1126811133, 1016912269)\n\t\t+ W(8, -1135215962, 1010098650, 1002322227, 1010341946)\n\t\t+ W(9, -1146463859, -1123894542, -1172726683, 1010207290)\n\t\t+ W(10, -1163026381, -1128211133, 1013671002, -1129388765)\n\t\t+ W(11, 1025914590, 998321459, -1185201771, 1014227898);\n\tWS(-1106551004, 1058945856);\n\tsum1 = W(0, -1136733265, 1027999917, 1036329486, 1021052191) + W(1, -1112842790, 996925861, 1029534949, -1110759309)\n\t\t + W(2, 1039804839, -1090459221, 1042972690, -1126301053)\n\t\t + W(3, 1040114552, -1101184472, 1055915689, -1088507490)\n\t\t + W(4, -1116549941, 1035692146, 1023973738, -1136820001)\n\t\t + W(5, 1045009467, -1102642413, 1048917175, -1116120689)\n\t\t + W(6, 1008178533, -1120539979, -1099722578, 1057115504)\n\t\t + W(7, -1103385510, 1032281663, -1121731675, 1050535890)\n\t\t + W(8, -1092228133, -1141944531, 1042662182, 1025401864)\n\t\t + W(9, -1122738710, 1036280349, -1110742697, 1036514925)\n\t\t + W(10, -1123309658, -1122836256, 998670125, -1112884987)\n\t\t + W(11, -1133144549, 1024140334, 1040183891, 1009223461);\n\tsum2 =\n\t\tW(0, -1166199047, 1029866216, -1143586281, 1016771040) + W(1, -1123676489, -1174784654, 1008667864, -1111274931)\n\t\t+ W(2, 1037662319, 1050961303, 1039205717, -1119230230) + W(3, -1137339492, 1026227362, 1052978055, 1073672156)\n\t\t+ W(4, 1048063806, -1117826448, -1142224481, -1119220040)\n\t\t+ W(5, -1079795268, -1075413433, 1028203090, 1028246046)\n\t\t+ W(6, -1152330850, 1031356244, -1109068899, 1029037052)\n\t\t+ W(7, -1113725553, -1160612324, 1020018908, -1116678638)\n\t\t+ W(8, 1041694498, 1026323256, -1115208722, 1024440460) + W(9, -1116618549, 1026327024, -1122243464, 1021575344)\n\t\t+ W(10, 1002430881, -1126523302, 1015962596, -1189397276)\n\t\t+ W(11, 1027749752, -1119692611, -1114291930, 1031666290);\n\tWS(1045979868, -1116118129);\n\tsum1 = W(0, 1019079208, -1115974509, 1054347779, -1096855346)\n\t\t + W(1, -1118610636, -1120438410, -1124899402, -1114857165)\n\t\t + W(2, 1046800787, -1098629066, 1029706377, 1017939836)\n\t\t + W(3, -1142300538, -1110287856, 1053005207, -1093283235)\n\t\t + W(4, 1028644213, -1131155654, 1011594153, -1099509298)\n\t\t + W(5, 1063937495, -1097005655, 1015974258, -1116499825)\n\t\t + W(6, -1134190949, -1112842949, 1058166871, -1090046872)\n\t\t + W(7, 1040979430, -1119992573, -1132197046, -1107483943)\n\t\t + W(8, 1048177899, -1104885511, -1129150352, -1120133576)\n\t\t + W(9, -1116332853, -1111331677, 1047873428, -1102896822)\n\t\t + W(10, 1028514810, -1118080608, -1135144470, 1018268010)\n\t\t + W(11, 1056893199, -1096686406, -1118433447, -1112688517);\n\tsum2 =\n\t\tW(0, -1132220574, 1034058342, 1008450820, -1132397996) + W(1, -1105536207, 1025437040, -1115410889, -1116250603)\n\t\t+ W(2, -1126553639, -1097158033, -1108668742, -1118211898)\n\t\t+ W(3, 1017347763, 1029372102, -1105866140, 1060185134)\n\t\t+ W(4, -1106418349, 1034066570, -1123931551, -1101916549)\n\t\t+ W(5, 1053545154, 1060913993, -1104852271, -1102379864) + W(6, 1027749497, -1104316591, 1054419707, 1033775493)\n\t\t+ W(7, -1106993048, -1133416673, -1111299822, 1035393713)\n\t\t+ W(8, -1102688086, -1115290197, -1102129692, -1209279719)\n\t\t+ W(9, 1025854529, -1107314572, 1036131430, -1106841697)\n\t\t+ W(10, -1149271050, -1133826631, -1123916419, 1033668899)\n\t\t+ W(11, -1144517652, 990325833, -1114889391, -1129688184);\n\tWS(1058774455, 1069380246);\n\tsum1 = W(0, 1032626516, -1114780225, 1045065548, -1111975378)\n\t\t + W(1, 1025328225, -1121960111, -1119757626, 1038823639)\n\t\t + W(2, 1040221656, -1115053555, 1020222778, 1037972921) + W(3, 1033017026, -1098306133, 1021036585, 1050529784)\n\t\t + W(4, -1115391173, -1112361500, 1015522813, 1034533838)\n\t\t + W(5, -1082356272, -1095104409, 1045288819, -1139302935)\n\t\t + W(6, -1128327131, -1103839696, 1057244812, -1133328720)\n\t\t + W(7, -1116298540, 1018289699, 1036888920, -1112718001)\n\t\t + W(8, 1032300191, -1111385431, 1042918995, -1110693582)\n\t\t + W(9, 1032769109, -1126986782, 1043416793, -1124233691)\n\t\t + W(10, 1029500622, 1027375220, -1148588495, 1012070438)\n\t\t + W(11, 1045596067, -1105784401, 1037659662, -1114680879);\n\tsum2 =\n\t\tW(0, -1129789987, 1017265095, -1124616639, -1116091154) + W(1, 1033010488, 1011223606, 1019234847, -1124971531)\n\t\t+ W(2, -1114025560, 1022067335, -1114442452, -1117824661)\n\t\t+ W(3, -1128803579, 1043137983, -1132476030, -1102585265)\n\t\t+ W(4, 1028851843, 1031833634, -1112792165, 1047657371)\n\t\t+ W(5, -1114992592, 1052022695, -1115343414, -1136738894)\n\t\t+ W(6, 1011967806, 1034970984, -1098689491, 1033604172) + W(7, 1002830796, 988094894, 995307959, 1010908150)\n\t\t+ W(8, -1115509379, 1031244615, -1121158047, 1025799099) + W(9, 1018394359, -1107223361, 1006851110, 1032350856)\n\t\t+ W(10, -1114060980, -1118870225, -1112288614, 1027672251)\n\t\t+ W(11, -1128503755, 1024636851, 1027935499, -1127411999);\n\tWS(1065814108, -1098421406);\n\tsum1 =\n\t\tW(0, 1030554015, -1104400078, -1097091133, 1050276747) + W(1, 1045406982, -1119880969, -1131576032, 1022555209)\n\t\t+ W(2, -1099298246, 1048827844, -1106685173, -1132305362)\n\t\t+ W(3, 1020712308, -1130072911, -1094842433, 1057743463)\n\t\t+ W(4, 1040093248, -1122176686, 1019668842, -1118231891) + W(5, -1084181571, 1051719984, 1018405640, 1026194364)\n\t\t+ W(6, -1178997255, 1041059117, -1098796514, 1058357819)\n\t\t+ W(7, -1118903138, 1004376640, 1023970854, -1115494780)\n\t\t+ W(8, -1094912271, 1056339293, -1115388505, 1024072531) + W(9, 1011631425, 1035736611, -1090107010, 1051879221)\n\t\t+ W(10, -1113309730, 1009992363, 1023862096, -1104560304)\n\t\t+ W(11, -1092396649, 1057941592, -1118151090, 1029155252);\n\tsum2 = W(0, -1104337717, -1085961218, 1065899128, 1055232204)\n\t\t + W(1, -1090132108, 1023963317, 1027104118, 1036459641)\n\t\t + W(2, -1117484391, -1101810882, 1052764213, 1014918739)\n\t\t + W(3, -1114433477, -1092980271, 1062039746, 1049041629)\n\t\t + W(4, -1092098978, 1035158266, -1122138940, -1101372003)\n\t\t + W(5, 1077763913, 1071302707, -1123596042, 1027553578)\n\t\t + W(6, 1048327612, -1098271754, -1088377514, -1084489503)\n\t\t + W(7, 1027311380, -1115760458, 1018207462, -1115566688)\n\t\t + W(8, -1079225367, -1087139921, 1042626102, 1025357528)\n\t\t + W(9, 1015118770, -1101224844, -1106150830, 1036291830)\n\t\t + W(10, -1105072819, 1032466828, 1054676844, -1105452167)\n\t\t + W(11, -1079350028, -1090077553, 1053993534, -1115160051);\n\tWS(-1083527351, -1082119000);\n\tsum1 =\n\t\tW(0, 1025283773, -1100516229, -1103907601, 1054198743) + W(1, -1139734483, -1115248201, -1132057884, 1028453762)\n\t\t+ W(2, -1097545679, 1048327710, -1114897689, 1021031566)\n\t\t+ W(3, 1024000280, -1124447466, -1096840081, 1054350616)\n\t\t+ W(4, -1109407791, -1115380998, -1117776915, 1027818609)\n\t\t+ W(5, -1088298777, 1057412078, -1112548849, -1139302503) + W(6, 994019357, 1030853236, -1090997910, 1059405315)\n\t\t+ W(7, -1107996896, 1029448614, -1146975260, -1120656758)\n\t\t+ W(8, -1097629690, 1052404744, 1035903152, -1119316016) + W(9, 1021506300, 1023329542, -1102673054, 1051692752)\n\t\t+ W(10, -1110888465, 1026998601, 1016847260, -1111423375)\n\t\t+ W(11, -1097673748, 1047886934, 1034953432, -1149960989);\n\tsum2 = W(0, 1023717076, 1034248479, -1110594365, -1113079527) + W(1, 1030579691, 999456782, 996584188, -1120794590)\n\t\t + W(2, 1045315954, -1094151830, -1113958061, 1021526858)\n\t\t + W(3, -1122858228, 1037241484, -1111180041, -1064957365)\n\t\t + W(4, -1106054130, 1018369486, 1005163886, -1124781820)\n\t\t + W(5, -1088752945, -1066051811, -1113733983, 1031457177)\n\t\t + W(6, 1025356913, -1115274025, -1100621689, 1081496726)\n\t\t + W(7, 1049150725, -1112407773, -1118691920, 1026099362) + W(8, 1052626156, 1084041658, 1032870315, 1022214782)\n\t\t + W(9, 1028885707, -1121079636, -1114153113, 1034711477)\n\t\t + W(10, 1042989109, -1108284893, -1114207359, 1010502519)\n\t\t + W(11, 1038857859, -1115018893, -1106741724, 1023330420);\n\tWS(1031453552, -1108810221);\n\tsum1 = W(0, -1122540068, -1106571135, -1105389195, 1051764564)\n\t\t + W(1, -1121040220, -1136080166, -1141490084, 1028200745)\n\t\t + W(2, 1023785053, -1104087736, 1027661528, 1023137883)\n\t\t + W(3, -1132153597, -1106394603, 1041720002, 1055195957)\n\t\t + W(4, -1111907522, -1123745267, 1029503994, 1029495448)\n\t\t + W(5, -1089108304, -1096098616, 1031937892, 1034024448)\n\t\t + W(6, -1126370513, -1118016922, 1047749927, 1047204316)\n\t\t + W(7, -1112974291, -1121356173, -1127727061, 1043712879)\n\t\t + W(8, -1092241143, 1028938666, 1025162247, 1028910871) + W(9, -1132743443, 1035505061, 998106632, 1043190746)\n\t\t + W(10, -1152510101, -1121641711, 1024122485, 1041979953)\n\t\t + W(11, -1098695505, 1039644831, 1002213552, 1025100697);\n\tsum2 =\n\t\tW(0, 1032316109, -1117365450, 1028239450, -1106184057) + W(1, 1039709205, -1127567978, -1122133197, 1033736971)\n\t\t+ W(2, -1104139010, 1045998485, -1126266788, 1029398164)\n\t\t+ W(3, 1021061413, -1117276879, -1090538079, -1087751568)\n\t\t+ W(4, 1056538813, -1106793212, -1122180337, 1009179554) + W(5, 1022309577, 1065712953, -1098763613, 1016414657)\n\t\t+ W(6, -1115376331, 1034450077, -1125496737, -1100319643)\n\t\t+ W(7, 1017435581, 1032114232, -1123716599, -1100616286)\n\t\t+ W(8, 1059658657, -1100023584, 1022563437, -1113653553)\n\t\t+ W(9, 1008734994, -1130550593, 1014965154, -1115246006)\n\t\t+ W(10, 980175008, 1034308617, -1144451812, -1102305630)\n\t\t+ W(11, 1053491799, -1107982835, -1103966134, 1020870093);\n\tWS(1060627383, -1111244297);\n\tsum1 =\n\t\tW(0, -1124372048, 1041984816, -1098607926, 1048999428) + W(1, -1110297584, 1037179887, -1124233202, 1023856878)\n\t\t+ W(2, -1097555068, 1050454749, -1119853981, -1124350564)\n\t\t+ W(3, -1115057922, 1037843884, -1092180401, 1057072683)\n\t\t+ W(4, -1100337986, 1037306108, -1126359548, 1013283185)\n\t\t+ W(5, 1035134080, 1037566628, -1117600845, -1180500637)\n\t\t+ W(6, -1135390133, -1106598024, 1055432750, -1088869991)\n\t\t+ W(7, 1045634091, -1107300041, 999175032, -1109047521) + W(8, 1050330552, -1097603878, 1040799043, -1132131255)\n\t\t+ W(9, -1137033126, -1108189319, 1046692025, -1106138715)\n\t\t+ W(10, -1129123036, -1126029544, -1120904377, -1127664786)\n\t\t+ W(11, 1039361415, -1115643873, 1042168959, -1132202938);\n\tsum2 =\n\t\tW(0, 1027553654, -1105419467, -1141314538, 1051401064) + W(1, 1061407816, -1086513034, -1128416633, 1035214610)\n\t\t+ W(2, 992160749, -1098506313, 1048701957, 1023990179) + W(3, -1120268362, -1102082588, 1039698771, 1041311911)\n\t\t+ W(4, 1065441970, -1083801169, 1026192109, 1034096310) + W(5, 1028842291, 1044707561, -1108357660, 1027929117)\n\t\t+ W(6, 1010812163, -1109637676, -1128101012, 1040877432)\n\t\t+ W(7, -1080219839, 1058347144, -1133939099, 1042926233)\n\t\t+ W(8, -1110346070, -1107620104, -1089748519, 1054974548)\n\t\t+ W(9, 1033310247, -1103557522, 1041169016, 1044637450) + W(10, -1106511250, 1012370076, 1007338654, 1039202903)\n\t\t+ W(11, -1150310139, -1101325278, -1094091750, 1054706164);\n\tWS(1037089208, -1117319375);\n\tsum1 = W(0, -1117307261, -1127081515, -1090315640, 1055484319)\n\t\t + W(1, 1019801962, -1140393804, -1109658215, 1037266337)\n\t\t + W(2, -1103803502, 1036834781, -1121027890, -1122236391)\n\t\t + W(3, -1104716662, 1045840649, -1108965493, 1059715066)\n\t\t + W(4, -1120952094, 1007521585, -1095157370, 1048384396)\n\t\t + W(5, -1089739445, 1050929076, -1115632913, -1115666157)\n\t\t + W(6, -1115283233, 1042005149, -1098438340, 1059599591)\n\t\t + W(7, -1115851136, 1038771059, -1113906562, 1026318614)\n\t\t + W(8, -1090508193, 1050537744, 1036887192, -1114842616)\n\t\t + W(9, -1127634429, 1035073906, -1096110967, 1039184033)\n\t\t + W(10, -1109698481, 1040209394, -1150522598, -1129730364)\n\t\t + W(11, -1090097982, 1056916499, 994450682, 1023772594);\n\tsum2 = W(0, -1096641595, 1051991389, -1107135642, -1120991144)\n\t\t + W(1, -1123228782, -1119770484, -1086741683, 1059199896)\n\t\t + W(2, 1044105651, 1025236133, 1032269711, 1020415755) + W(3, -1073585699, 1069582799, 1057042277, -1123268190)\n\t\t + W(4, -1116194138, -1119862022, -1071753138, 1070628328)\n\t\t + W(5, 1065961920, -1098135951, -1144560253, 1033682735)\n\t\t + W(6, -1078410756, 1067042424, 1057516905, 1032298014)\n\t\t + W(7, 1026966393, -1113740644, -1096289506, 1055331220)\n\t\t + W(8, -1098611055, -1106950583, -1155415556, 1022995083)\n\t\t + W(9, -1145261363, 1015112751, 1043415065, 1007537613) + W(10, 992611856, -1144895945, 997353903, 1024293693)\n\t\t + W(11, -1101981251, 1025642916, 1011854094, -1130196038);\n\tWS(-1089262391, 1050517969);\n\tsum1 = W(0, -1112721887, 956356282, 1041136081, -1112851037) + W(1, -1118798326, 1033047322, 1040766980, 1032255106)\n\t\t + W(2, -1099047838, -1136806893, 1044101949, -1110781188)\n\t\t + W(3, -1116916633, -1115255965, 1050954387, 1047658201)\n\t\t + W(4, -1099177336, 1022949658, -1109323658, 1053521294)\n\t\t + W(5, -1090918435, -1090498606, 1048722524, 984126311)\n\t\t + W(6, 1043853249, -1109293354, 1049475859, -1111100085)\n\t\t + W(7, 1044026608, -1111349460, -1102481809, 1024224759)\n\t\t + W(8, 1046323061, -1101889105, -1109421665, -1151794972)\n\t\t + W(9, 1025978335, 1036451442, -1129023222, -1112184834)\n\t\t + W(10, 1044252857, -1140137768, -1134508350, 998852344)\n\t\t + W(11, -1126452038, 1037224108, -1113020120, -1119083507);\n\tsum2 =\n\t\tW(0, -1120544497, -1104964203, 1056285145, -1109256198) + W(1, -1107706742, 1033408182, 1042905493, -1097077111)\n\t\t+ W(2, -1118581415, 1026029661, 1025674690, -1118988963)\n\t\t+ W(3, 1045262161, -1098230931, -1079914544, 1056552993)\n\t\t+ W(4, -1103396776, 1021102038, -1104438232, 1057982485)\n\t\t+ W(5, 1057557770, -1104081201, 1048351556, -1136298684)\n\t\t+ W(6, 1023630957, -1106247773, 1048964135, -1114436673)\n\t\t+ W(7, 1018818866, -1112938187, -1122372280, 1011970003) + W(8, 1020547274, 1033190701, -1103728916, 1034200267)\n\t\t+ W(9, 1027866949, 1026340389, -1113753028, -1107460568)\n\t\t+ W(10, 1046941904, -1117493164, -1121491826, 1016978228)\n\t\t+ W(11, 1034078959, 1034442922, -1106194166, -1172844144);\n\tWS(1055467886, -1126093527);\n\tsum1 =\n\t\tW(0, -1115675946, 1037777366, 1043818615, -1096353162) + W(1, -1150025924, 1035905869, 1039731987, -1126460340)\n\t\t+ W(2, -1103677379, 1012406341, 1031349769, -1103947080)\n\t\t+ W(3, -1108949528, -1145838757, 1060367897, -1088026493) + W(4, 1034695514, 1034985426, 1014043817, 1049783617)\n\t\t+ W(5, -1102044139, -1095567535, 1044285022, -1129716323) + W(6, 1025589529, 991251120, -1109258124, 1051881528)\n\t\t+ W(7, 1011738461, -1107675487, -1102050167, 1042727635)\n\t\t+ W(8, 1049311757, -1095440907, -1115570324, 1042590402)\n\t\t+ W(9, 1035820699, -1123043835, -1116399889, 1032817677)\n\t\t+ W(10, 1040150333, -1104125432, -1114599603, 1024161077)\n\t\t+ W(11, 1046137806, -1116994158, -1110796915, -1140552997);\n\tsum2 =\n\t\tW(0, -1115939175, -1111463085, 1026058510, 1015189774) + W(1, -1116961377, 1003109525, 1042939513, 1009748958)\n\t\t+ W(2, -1101036999, 1048391804, 1019493983, -1128500291)\n\t\t+ W(3, -1106984126, -1104760450, 1046231331, -1101164712)\n\t\t+ W(4, 1013441892, -1127287103, 1036071940, 1026404786) + W(5, 1060091622, 1059732347, -1113485706, 1036806652)\n\t\t+ W(6, -1133154938, 1042746589, -1109115274, -1090421446)\n\t\t+ W(7, -1102245299, -1110906499, -1110872047, 1018643239)\n\t\t+ W(8, 1042116887, -1092755101, -1104832958, 1042929180) + W(9, 1038271101, 1024219237, -1104891113, 1018386748)\n\t\t+ W(10, 1043357489, -1108912836, -1124388167, -1107044825)\n\t\t+ W(11, -1137025366, -1112446842, -1123717753, 1034520620);\n\tWS(1062208951, 1065603754);\n\tsum1 =\n\t\tW(0, 1032466911, 1029341462, 1059167044, -1090134924) + W(1, -1133534677, 987089513, 1012820793, 1027274819)\n\t\t+ W(2, 1052950767, -1094303727, 1027990706, 1032570772) + W(3, 1029562264, 997585115, 1057349364, -1085543304)\n\t\t+ W(4, 1035990447, -1136982833, 1020285479, 1040141401)\n\t\t+ W(5, -1108524682, -1080037127, 1037410929, -1125543221) + W(6, 993753125, 1032063722, 1049874906, -1095616607)\n\t\t+ W(7, 1039846496, 1015158861, 1033268866, -1153074023) + W(8, 1048703978, -1112675170, 1023735025, -1145342854)\n\t\t+ W(9, -1131051261, 1015103815, 1050186639, -1111683969) + W(10, 1040888889, 1031358985, 1028903855, 1040294280)\n\t\t+ W(11, 1053103700, -1091636059, -1118753424, 1022936933);\n\tsum2 =\n\t\tW(0, 1035386648, 1042887622, -1086410483, -1090258329) + W(1, 1060158548, -1113981975, 1023547272, -1099060438)\n\t\t+ W(2, 1053956416, -1112148135, 1050315819, -1099847621)\n\t\t+ W(3, 1025878508, -1099619867, -1094814183, -1093316197)\n\t\t+ W(4, 1046080958, 1046524888, 1026832668, -1099104088) + W(5, 1069089225, 1060781490, -1103190742, -1112424275)\n\t\t+ W(6, 1029828312, 1048769602, 1044213412, -1091192206)\n\t\t+ W(7, -1105160931, 1051146364, -1098240729, -1121505868)\n\t\t+ W(8, 1035342184, -1105713821, -1084784918, 1019461112) + W(9, 1044150428, 1040524432, 1040447750, -1089411157)\n\t\t+ W(10, 1058372334, 1028619520, -1103643200, -1115369075)\n\t\t+ W(11, 1049544904, 1058550641, -1080579858, 1040133188);\n\tWS(-1078970012, -1070975772);\n\tsum1 =\n\t\tW(0, 1023443287, -1111813336, -1095332548, 1048282532) + W(1, 1036630695, 999582566, 1008154783, 1034628686)\n\t\t+ W(2, -1098370186, 1052880922, -1109395910, -1140663171)\n\t\t+ W(3, 1008498119, 1020510238, -1091304148, 1054365856) + W(4, 1031904252, -1128098380, 1032996598, -1119594955)\n\t\t+ W(5, -1097391342, 1065196819, -1105409007, 1030941172)\n\t\t+ W(6, -1130007992, 1037186855, -1088889903, 1037830473) + W(7, 1022933044, 1003729918, 1026985054, -1129455456)\n\t\t+ W(8, -1093273302, 1040256647, 1030320779, -1138808617) + W(9, 1001505728, 1024916861, -1097878954, 1042516535)\n\t\t+ W(10, -1131972409, 1018809669, 1027285064, -1118416824)\n\t\t+ W(11, -1097408559, 1044458956, 1037289397, 1005961310);\n\tsum2 =\n\t\tW(0, -1114009537, 1019032853, 1024640816, 1029944441) + W(1, -1146945026, -1136399129, 1035366037, -1143037026)\n\t\t+ W(2, -1101234014, -1105571142, 1031686749, 1018164069)\n\t\t+ W(3, -1111463643, -1122373240, 1068131945, 1044188353)\n\t\t+ W(4, -1128619453, -1125359481, -1119334122, 1056620469) + W(5, 1075463933, -1093783941, 1046426762, 999713778)\n\t\t+ W(6, -1132366661, -1103744316, -1075751794, 1050699227)\n\t\t+ W(7, -1109652943, -1123073190, 1001109746, 1002774938)\n\t\t+ W(8, -1072865378, -1098127223, -1131952529, 1019524751)\n\t\t+ W(9, 1035022899, -1102405348, 1052446989, 1028903402) + W(10, -1123943246, 983357578, -1112054465, 1046894720)\n\t\t+ W(11, 1019415611, -1119380340, 1017598049, 1013611461);\n\tWS(-1137905088, -1096938393);\n\tsum1 =\n\t\tW(0, -1127951952, -1116133184, -1092624022, 1045295113) + W(1, 1023908704, 1031880695, -1139830244, 1040763803)\n\t\t+ W(2, -1104553656, 1046745657, -1103252327, 1040451684)\n\t\t+ W(3, -1108742721, 1041221580, -1090149133, 1057147883) + W(4, -1103732914, 1026434167, 1019792636, 1009683312)\n\t\t+ W(5, 1044078592, -1112574564, -1127338650, 1007135764)\n\t\t+ W(6, 1018370522, -1107181880, 1058802794, -1085568476) + W(7, 1040869579, 1014113348, 1020799581, 1002965001)\n\t\t+ W(8, 1043495791, -1103617227, 991652540, -1125537591) + W(9, 1021418002, 1022849180, 1033578226, 1032014262)\n\t\t+ W(10, 1013121207, 1016284007, -1148599498, 1039287108)\n\t\t+ W(11, -1113073030, 1022418564, 1011288682, -1116579933);\n\tsum2 = W(0, 1036469548, -1097965159, -1116680345, 1001756270)\n\t\t + W(1, 1032969412, -1131471357, 1017461301, -1101551098)\n\t\t + W(2, -1125992347, -1115644020, -1124365977, 1016380025)\n\t\t + W(3, 1017339130, -1094477168, 1058922542, 1035448965) + W(4, 1040541302, 1001720584, -1095997080, 1035631286)\n\t\t + W(5, -1103956246, -1105032669, -1112710338, -1115585175)\n\t\t + W(6, -1099654066, 1054988432, 1040393300, 1039533461) + W(7, 1017600743, 1001178742, -1105423964, 1047389393)\n\t\t + W(8, 1040203374, -1122662741, -1114085496, 1001141734)\n\t\t + W(9, -1113359567, 1041958533, -1108890296, -1130070269)\n\t\t + W(10, -1134082186, 1010209588, -1131580992, 1043362318)\n\t\t + W(11, 1024609216, 1025676040, 1015920174, -1122393401);\n\tWS(1017525984, 1039916017);\n\tsum1 =\n\t\tW(0, -1124853567, 1018048624, -1095739637, 1045916039) + W(1, 1035770156, 1019449355, -1147061122, -1127291978)\n\t\t+ W(2, -1104996150, 1043181303, 1038596810, -1118699785)\n\t\t+ W(3, -1129462517, 1049183858, -1085471393, 1054258797) + W(4, 1048116160, 1018729693, -1119594613, 1032566282)\n\t\t+ W(5, -1090223247, 1054999864, 1024906308, -1125493497) + W(6, 999306018, 1036307723, -1104470177, -1108082389)\n\t\t+ W(7, 1035021201, -1111613764, -1156505185, -1150114695)\n\t\t+ W(8, -1105492077, 1055713893, -1114305018, 1013642059)\n\t\t+ W(9, 1012193026, -1116656134, -1109848430, -1134406033)\n\t\t+ W(10, 1014226964, -1117195563, 1010192066, -1111959392)\n\t\t+ W(11, -1107232129, 1049351719, -1132413284, 990662981);\n\tsum2 =\n\t\tW(0, 1033095635, -1113611213, -1120605005, 1010827478) + W(1, -1096460028, 992544217, -1123818427, 1038354785)\n\t\t+ W(2, 1043017802, 1005632845, -1090567932, 1043858115) + W(3, 1023960168, -1136308834, 1016597499, 1067061797)\n\t\t+ W(4, -1078682340, 1041505996, -1115456886, 1031365710)\n\t\t+ W(5, -1105318511, 1065783254, -1094955795, -1104546945)\n\t\t+ W(6, -1130014725, -1121052824, 1032279133, 1033387493)\n\t\t+ W(7, -1114814318, -1114466677, -1134763238, 1037262635)\n\t\t+ W(8, -1129541437, 1024758296, 994121897, -1115137122) + W(9, 1020936831, -1129095405, 1028982810, -1141733133)\n\t\t+ W(10, -1126300988, 1007094454, 1030713030, 1030934712)\n\t\t+ W(11, 969324748, 973320358, -1148320949, -1122716507);\n\tWS(1033221560, 1063777383);\n\tsum1 =\n\t\tW(0, 1019126833, -1112638616, 1057738402, -1088696201) + W(1, 1044063732, -1130166589, 1022703059, -1107233655)\n\t\t+ W(2, 1049316970, -1093677291, 1018619290, -1127677637)\n\t\t+ W(3, 1034317754, -1107419652, 1057780266, -1091493000)\n\t\t+ W(4, 1042363102, -1141893947, -1141147507, 1017313945)\n\t\t+ W(5, 1039925560, -1105678958, -1123751101, -1141892011)\n\t\t+ W(6, 1023815261, 1030431247, -1101232178, 1054033952) + W(7, -1103422471, 1028589441, -1145478905, 1043218964)\n\t\t+ W(8, -1097249286, 1050643572, -1099574259, 1032480102)\n\t\t+ W(9, -1139797991, 1030899327, -1105363093, 1039373871)\n\t\t+ W(10, -1109462943, 1000558881, 1017044691, 1042038278)\n\t\t+ W(11, -1097041200, 1044902925, -1143343447, -1115509735);\n\tsum2 =\n\t\tW(0, -1130982538, -1106875761, 1056618334, 1055977286) + W(1, -1102508839, 1020425242, 1021127838, 1011019608)\n\t\t+ W(2, 1055137831, 1058761027, -1115387544, 1013848532) + W(3, 1013698904, 1024572751, 1048771047, -1103617496)\n\t\t+ W(4, -1128394642, 1016018634, -1227267307, 1039986653)\n\t\t+ W(5, -1073860127, -1072531400, 1043687089, -1112657573)\n\t\t+ W(6, -1180063220, -1113103478, -1108123535, 1052255088)\n\t\t+ W(7, -1126700500, 1035781641, -1130392938, -1104759550)\n\t\t+ W(8, 1059126644, 1063802283, -1109991236, -1125248586) + W(9, -1129014326, 1035543741, 1045481337, 1048895081)\n\t\t+ W(10, 1031917163, -1126407949, 1032270489, -1129087757)\n\t\t+ W(11, 1042704754, 1016319978, -1121934766, 1030839801);\n\tWS(-1091503470, -1126838795);\n\tsum1 = W(0, -1124121237, -1134568843, 1047693172, -1109412515)\n\t\t + W(1, -1129997061, 1024589216, -1113414670, -1126036384)\n\t\t + W(2, 1049117760, -1103447906, 1034526751, -1113770234)\n\t\t + W(3, 1028321829, 1033159265, -1105247938, -1096437464)\n\t\t + W(4, -1143270742, 1036105485, -1111356688, 1037814911)\n\t\t + W(5, 1058889082, -1098797565, 1022658271, -1114645460)\n\t\t + W(6, 1026686479, 1031580097, 1012762455, -1104719461)\n\t\t + W(7, -1109175079, 1023714995, -1121133649, 1040854417)\n\t\t + W(8, -1120516448, -1106636212, 1042645116, -1138248951)\n\t\t + W(9, -1120913068, -1106928812, 1049438209, -1129886751)\n\t\t + W(10, -1104071908, -1132081196, -1126384695, 1027944427)\n\t\t + W(11, 1040171928, -1106734009, 1012750451, -1145462266);\n\tsum2 =\n\t\tW(0, -1121971015, 1025966975, -1127561691, 1032121603) + W(1, -1118316871, -1147835451, -1109269766, 1042653975)\n\t\t+ W(2, 1038662008, -1104797770, 1018661176, 1023052754) + W(3, -1096046215, 1058579369, -1095336395, 1041625968)\n\t\t+ W(4, -1131103951, -1129857431, -1096349825, 1055073186)\n\t\t+ W(5, -1156170871, -1098327149, 1035437895, -1114991229)\n\t\t+ W(6, -1104467071, 1043843774, 1054347264, -1090818470) + W(7, 1042639369, 1011784142, -1105457821, 1043492169)\n\t\t+ W(8, -1116732629, 1028261711, -1115472379, -1157273063)\n\t\t+ W(9, -1114558576, -1138844670, 1043300107, -1117277405)\n\t\t+ W(10, -1115061521, 1024244091, -1113812495, 1035958317)\n\t\t+ W(11, 1025184897, -1130419167, -1130646919, -1148362739);\n\tWS(1065968028, 1020949470);\n\tsum1 = W(0, 1032158503, 1043191673, 1050691771, -1089572661) + W(1, 983294118, 1033006978, 1018701500, 1020082981)\n\t\t + W(2, 1043953282, -1139338281, 1041437600, -1139648989) + W(3, 1028916776, 999481917, 1047062836, -1091936976)\n\t\t + W(4, 1042367115, 1033705422, 1031923218, 1033906881) + W(5, 1032996498, -1081715803, 1040306653, -1132542121)\n\t\t + W(6, -1143490705, -1123072324, 1057457238, -1087112685)\n\t\t + W(7, 1019100064, -1138694873, 1005807263, 1012896153)\n\t\t + W(8, 1057445286, -1088032573, -1123572193, 1033839136)\n\t\t + W(9, 1028568398, 1015001550, 1051530049, -1100585253) + W(10, 1039280729, 1027376729, 1026731038, 1035245559)\n\t\t + W(11, 1057446979, -1095410205, -1104642968, 1015844228);\n\tsum2 =\n\t\tW(0, -1107158830, -1098284578, 1059620359, 1059101624) + W(1, -1080819081, 1041045600, -1114179967, 1050997929)\n\t\t+ W(2, -1120628180, -1084072333, 1055292451, 1041809552) + W(3, -1106205598, 1032837846, 1056621385, 1033838752)\n\t\t+ W(4, -1084530179, -1150759871, -1112529879, -1138556160)\n\t\t+ W(5, 1064698181, 1049137220, -1118657190, 1036987884) + W(6, 1036191348, -1103494095, 1049117565, -1100194061)\n\t\t+ W(7, 1035375516, 1040790470, 1045048740, 1033058370) + W(8, -1087565422, -1096659207, 1055648971, -1098721116)\n\t\t+ W(9, -1112261511, -1109765233, 1050635491, 1042760064)\n\t\t+ W(10, -1101810418, 1028926760, 1045813672, 1040601336)\n\t\t+ W(11, -1087363324, -1087988644, 1059720072, -1118399816);\n\tWS(-1079370588, -1069938997);\n\tsum1 =\n\t\tW(0, -1107111607, 1024046068, 1034755057, -1106911318) + W(1, 1032333322, -1122522177, 1031876694, 1040468568)\n\t\t+ W(2, 1048995971, -1106422470, 1043602212, -1133546645)\n\t\t+ W(3, -1108546779, -1110778478, 1044693184, -1092550445)\n\t\t+ W(4, -1124221431, -1123999146, 1007409349, 1041967908)\n\t\t+ W(5, 1056322870, -1089848952, 1044063648, -1129245296) + W(6, -1119937056, 1037532265, 992363881, -1115839591)\n\t\t+ W(7, -1137125241, -1121719236, -1110402417, 1027170100)\n\t\t+ W(8, -1123931633, -1098485404, 1015794334, 1009488187) + W(9, 1034313646, 1028424065, 1041273350, 1027494176)\n\t\t+ W(10, 1038675968, -1146748727, -1115195974, 1030920188)\n\t\t+ W(11, 1034999584, -1101830589, 1024639630, -1115284904);\n\tsum2 =\n\t\tW(0, -1116010697, 1044972838, -1107525170, 1025111869) + W(1, -1115770744, 1027404867, 1039856206, -1094195694)\n\t\t+ W(2, 1054041965, -1105218154, 1021276689, -1122132060) + W(3, 1025692273, 1041658757, -1095593913, 1047241736)\n\t\t+ W(4, -1113081166, 1036997767, 1047723216, -1090167008)\n\t\t+ W(5, 1054432792, -1103340827, 1030984707, -1109230755)\n\t\t+ W(6, 1054500142, -1087657974, 1048962216, -1105033641) + W(7, 1026520309, 1000189578, 1045538686, -1114739465)\n\t\t+ W(8, -1099510609, 1043141319, 1008623973, 949401483) + W(9, 1020883249, -1103808398, 1041852115, -1104502432)\n\t\t+ W(10, 1031142833, -1121181330, 1037455508, 1025495534)\n\t\t+ W(11, -1112321007, 1020729805, 1034321699, 989367833);\n\tWS(1051966318, -1113875142);\n\tsum1 =\n\t\tW(0, 1035883793, 1040145278, 1051696565, -1091560996) + W(1, -1133003627, -1126824689, -1111332346, -1135399329)\n\t\t+ W(2, 1051177307, -1096861164, -1117751383, 1039745286) + W(3, 1045917727, 1017502534, 1054251573, -1091248610)\n\t\t+ W(4, -1178468754, 1020593891, 1006041029, -1096989371)\n\t\t+ W(5, 1061428120, -1087158964, -1126263439, 1008594943)\n\t\t+ W(6, -1129901007, 1043615094, 1037934795, -1098884432) + W(7, -1106662601, 1037849734, 1042663274, 1025318012)\n\t\t+ W(8, 1050890887, -1096301045, 1017933485, 1035118155)\n\t\t+ W(9, -1119690564, -1113005508, 1046007992, -1093706893)\n\t\t+ W(10, 1038615540, -1114145271, 1014471632, 1043398529)\n\t\t+ W(11, 1049249377, -1093100168, -1116546293, 1028529816);\n\tsum2 =\n\t\tW(0, -1120038729, 995641288, 1035481768, 1011267102) + W(1, 1042749492, 1026093812, 1032134121, 1034430176)\n\t\t+ W(2, -1099098436, -1099374838, 1055985885, -1113501317) + W(3, -1112337284, 1011533369, 960227969, 1055781369)\n\t\t+ W(4, 1067101038, -1095011910, 1014623636, 1032554184) + W(5, -1122840036, 1046041384, 1069533386, -1086401299)\n\t\t+ W(6, 1015804972, -1114631943, -1123247827, 1055178264)\n\t\t+ W(7, 1065618150, -1079450114, -1111055788, 1037430467)\n\t\t+ W(8, -1115890560, -1124103196, 1058921177, -1075689828) + W(9, 1025605092, 1022278663, 1022436109, 1039303021)\n\t\t+ W(10, -1106092627, -1082339747, -1118260382, 1020696197)\n\t\t+ W(11, 1010081074, -1116158530, -1118372702, -1095588850);\n\tWS(-1087762743, -1114043214);\n\tsum1 =\n\t\tW(0, 1028903325, 1040067739, 1045936105, -1095653187) + W(1, -1122706133, 1029496147, -1111481047, 981566559)\n\t\t+ W(2, 1050679259, -1096161947, 1026181394, -1149217596) + W(3, 1010874850, 1032756947, 1052053924, -1090950614)\n\t\t+ W(4, 1034645023, -1132850610, -1117223539, -1130847267)\n\t\t+ W(5, 1055533279, -1084280212, 1030922562, -1154701224)\n\t\t+ W(6, -1114811697, -1123313460, 1059392176, -1097768267)\n\t\t+ W(7, 1030340896, -1113406339, 1027957028, -1113871531) + W(8, 1053658934, 1005713692, -1102292436, 1020850850)\n\t\t+ W(9, -1115120063, -1126050567, 1039338221, -1120312930)\n\t\t+ W(10, -1107839810, 1017761874, 1025677743, -1113266015)\n\t\t+ W(11, 1051823712, -1118568631, -1112577800, -1117302546);\n\tsum2 =\n\t\tW(0, 1001016005, -1150454109, 1001531747, 983352173) + W(1, -1106746798, -1157019725, -1125241033, -1111980552)\n\t\t+ W(2, 1031575403, -1103460210, 1036252996, 1023495862) + W(3, 1018218852, 1033028659, 1016765132, -1103428024)\n\t\t+ W(4, -1128273041, 1033057508, -1111720092, 1037513337)\n\t\t+ W(5, -1085543392, -1076627395, 1046375720, -1112606370)\n\t\t+ W(6, 1015413875, -1109924763, 1053354837, 1074369634) + W(7, 1055587240, 1019967806, -1140722987, -1144232926)\n\t\t+ W(8, 1054900052, 1051272122, -1094917738, -1107285947)\n\t\t+ W(9, -1138333196, -1117260807, 1041131548, -1098379064)\n\t\t+ W(10, -1106193524, 1012881631, 1010568725, -1113652225)\n\t\t+ W(11, 1045881209, -1098914955, -1098562564, 1031041657);\n\tWS(-1090517687, -1095444575);\n\tsum1 =\n\t\tW(0, 1025742446, 1032739299, 1054789967, -1095546301) + W(1, 1033023507, 1028563508, -1111454559, -1106175885)\n\t\t+ W(2, 1031326631, -1101847659, -1107099097, -1117676152)\n\t\t+ W(3, 1040962578, -1110724347, 1052551894, -1090925684) + W(4, 1036045063, 1036888990, 1035513890, -1118213794)\n\t\t+ W(5, 1059778428, -1089262225, 1035395209, 1007580971) + W(6, 1025779251, -1103218657, 1045793474, -1096439373)\n\t\t+ W(7, -1101529212, 949923192, 1041617005, 1040368314) + W(8, 1051667296, -1099734269, 1050132438, 1037985265)\n\t\t+ W(9, -1106922364, -1105137317, 1040121301, -1104705805)\n\t\t+ W(10, -1102593253, -1113513373, 1024699903, 1024907982)\n\t\t+ W(11, 1052247674, -1097282993, 1016797696, 1026673059);\n\tsum2 =\n\t\tW(0, 1052208474, -1095438834, 1040952518, -1101013864) + W(1, 1045777263, -1125550479, 1035064858, -1104348375)\n\t\t+ W(2, -1095663473, 1048824145, -1099869349, -1127115193)\n\t\t+ W(3, 1064043431, -1079843968, 1060639651, -1097227129) + W(4, 1049789703, 1024044553, 1055780907, -1084432555)\n\t\t+ W(5, 1054823629, -1105218176, -1118379111, 972648308) + W(6, 1048070172, -1106077690, -1098542607, 1048082838)\n\t\t+ W(7, -1102784042, 1021849499, 1057138231, -1086965748) + W(8, 1057295667, -1106201667, 1043327775, 1016298873)\n\t\t+ W(9, -1100953655, 1048708391, -1095587456, 1042233875)\n\t\t+ W(10, -1107731485, -1116706874, 1042120650, -1106942577)\n\t\t+ W(11, 1035260440, -1136871967, 1006771796, 1030896448);\n\tWS(-1115614648, 1042425791);\n\tsum1 = W(0, -1120207204, -1115327070, -1093340989, 1053481388)\n\t\t + W(1, 1030984860, -1113874973, -1124027509, 1016926292)\n\t\t + W(2, -1096731140, 1053311332, -1116407641, 1010793530)\n\t\t + W(3, -1144413692, 1038910502, -1096554678, 1057006919)\n\t\t + W(4, 1038600290, -1116271283, -1105701711, 1037845356)\n\t\t + W(5, -1085064420, 1049566369, 1043585442, -1114795809)\n\t\t + W(6, 1014568102, 1042236823, -1100005974, 1056376458) + W(7, 1018535375, 992031960, -1120774251, -1105850383)\n\t\t + W(8, -1098496607, 1048579325, -1122768840, -1130485552)\n\t\t + W(9, 1029691462, -1134596907, -1135406214, 1042582346)\n\t\t + W(10, -1120431498, 1029193328, -1119274774, -1117126533)\n\t\t + W(11, -1098152617, 1043887136, 1035562443, -1140222054);\n\tsum2 = W(0, -1127240204, -1079712608, 1066527571, 1049757184)\n\t\t + W(1, -1122509441, -1120167031, 1024332524, -1082891577)\n\t\t + W(2, 1063276166, 1025750476, -1127423195, 976948665) + W(3, -1145474239, -1081879450, 1065092416, 1045572932)\n\t\t + W(4, -1127801782, -1123809997, -1111478947, 1047818786)\n\t\t + W(5, 1033988518, -1093152038, -1126799575, 1030959654)\n\t\t + W(6, 1029335642, 1066272635, -1081647719, -1129453741) + W(7, 1033523902, 995040830, -1112394176, 1064292926)\n\t\t + W(8, -1085935960, -1107360776, -1109456127, 1026103880)\n\t\t + W(9, 1042612281, 1048742105, -1090025738, 1042389166)\n\t\t + W(10, 1029374360, -1116538748, -1152251822, 1063028070)\n\t\t + W(11, -1088819358, -1095668919, -1163717821, 1033003323);\n\tWS(1005558656, -1134386388);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[507];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { temp[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 13 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 507; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 13, y = (uint)id % 13;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (3)) + 0.5, float(group_base.y + y - (2)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[12];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 13];\n\tsamples[1][3] = inp[local_pos + 14];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 26];\n\tsamples[3][1] = inp[local_pos + 27];\n\tsamples[3][2] = inp[local_pos + 28];\n\tsamples[3][3] = inp[local_pos + 29];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 39];\n\tsamples[4][3] = inp[local_pos + 40];\n\tsamples[5][0] = inp[local_pos + 41];\n\tsamples[5][1] = inp[local_pos + 42];\n\tsamples[5][2] = inp[local_pos + 43];\n\tsamples[5][3] = inp[local_pos + 44];\n\tsamples[6][0] = inp[local_pos + 52];\n\tsamples[6][1] = inp[local_pos + 53];\n\tsamples[6][2] = inp[local_pos + 54];\n\tsamples[6][3] = inp[local_pos + 55];\n\tsamples[7][0] = inp[local_pos + 56];\n\tsamples[7][1] = inp[local_pos + 57];\n\tsamples[7][2] = inp[local_pos + 65];\n\tsamples[7][3] = inp[local_pos + 66];\n\tsamples[8][0] = inp[local_pos + 67];\n\tsamples[8][1] = inp[local_pos + 68];\n\tsamples[8][2] = inp[local_pos + 69];\n\tsamples[8][3] = inp[local_pos + 70];\n\tsamples[9][0] = inp[local_pos + 78];\n\tsamples[9][1] = inp[local_pos + 79];\n\tsamples[9][2] = inp[local_pos + 80];\n\tsamples[9][3] = inp[local_pos + 81];\n\tsamples[10][0] = inp[local_pos + 82];\n\tsamples[10][1] = inp[local_pos + 83];\n\tsamples[10][2] = inp[local_pos + 91];\n\tsamples[10][3] = inp[local_pos + 92];\n\tsamples[11][0] = inp[local_pos + 93];\n\tsamples[11][1] = inp[local_pos + 94];\n\tsamples[11][2] = inp[local_pos + 95];\n\tsamples[11][3] = inp[local_pos + 96];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 41];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(1, 2);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2) + ivec2(0, 1), ret);\n}\n//!PASS 2\n//!DESC NNEDI3 (double_x, nns128, win8x6)\n//!IN INPUT, temp\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 8\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[12]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 12; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 48.0;\n\tfloat mstd1 = sumsq / 48.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, -1138315554, -1151849881, -1130100551, -1139428474)\n\t\t + W(1, -1115186183, 1024054031, -1123693866, -1134121575)\n\t\t + W(2, 1017020226, -1120184142, -1113913797, -1137890034)\n\t\t + W(3, -1105019328, 1030136834, -1119041199, 1009291685) + W(4, 1054031418, 1052033568, 1057266643, 1050615732)\n\t\t + W(5, 1060278709, 1051842684, 1049323809, 1050624038)\n\t\t + W(6, -1098719688, -1094289569, -1094215666, -1084764287)\n\t\t + W(7, -1093503073, -1122358095, -1104408867, -1101060057)\n\t\t + W(8, -1110814528, 1026313661, -1136459684, 1037955767)\n\t\t + W(9, -1125342359, -1118592012, -1141919603, -1117980571)\n\t\t + W(10, -1144117236, 1029415347, -1122295896, -1158862002)\n\t\t + W(11, -1115484761, 1027215228, -1148196514, -1131405947);\n\tsum2 =\n\t\tW(0, 1011608699, 1021515189, -1133688887, -1109181339) + W(1, 1032724543, -1120491130, 997621755, 1020760181)\n\t\t+ W(2, -1112090344, 1032910614, -1111235489, 1050015381)\n\t\t+ W(3, 1041065097, -1106592726, -1112521193, 1032648390) + W(4, 1035039469, -1112298310, 1068933685, 1079505355)\n\t\t+ W(5, -1082386736, -1067816278, -1094139890, -1123411157)\n\t\t+ W(6, 1018826733, -1103038162, 1035541017, -1096237270)\n\t\t+ W(7, 1051919390, -1101133158, -1120644044, 1029904493) + W(8, -1130070276, 1030536589, 1002846254, 1047170650)\n\t\t+ W(9, 1012706615, -1108914015, 1011888367, -1115273665)\n\t\t+ W(10, -1126912052, 1027816837, -1119314146, -1132054353)\n\t\t+ W(11, 1004049262, 1017068057, 1020965593, 1017829425);\n\tWS(1038714296, 1044827315);\n\tsum1 = W(0, 1008773074, 1000000044, -1125197471, -1155069097)\n\t\t + W(1, -1128457331, -1147450330, -1142834606, -1131672268)\n\t\t + W(2, -1137155124, -1139148008, -1110040196, -1114984084)\n\t\t + W(3, -1117135435, 1038803511, -1110360429, 1046900069) + W(4, 1058392080, 1051571686, 1058043460, 1059856605)\n\t\t + W(5, 1053821137, 1050763009, 1046500044, 1049636107)\n\t\t + W(6, -1100726684, -1106613964, -1093356205, -1087655353)\n\t\t + W(7, -1093486798, -1088451200, -1109846237, -1093848946)\n\t\t + W(8, -1097060854, 1034039029, -1112523275, -1137125990)\n\t\t + W(9, -1134047198, -1131894321, 1021083253, -1108292068)\n\t\t + W(10, 1034472653, -1136883834, 1033872898, -1122772178)\n\t\t + W(11, -1125370043, 1027534056, -1126166913, 1020331091);\n\tsum2 =\n\t\tW(0, -1123255245, 982126402, 1020504368, 1036976721) + W(1, -1113656730, -1157600449, -1129338356, 1032297389)\n\t\t+ W(2, -1116671780, -1111301077, 1011773496, -1102830064) + W(3, 1031803093, 1045043848, 1026389126, 1022832316)\n\t\t+ W(4, 1046375724, 1053914306, 1013495848, -1106352300)\n\t\t+ W(5, -1103067006, -1094946683, 1036977493, -1098417421) + W(6, 1061532718, 1066141278, 1064263836, 1055449836)\n\t\t+ W(7, -1076699072, -1085904680, -1099822488, -1092845936)\n\t\t+ W(8, 998291536, 1041257894, 1023442398, -1101238723) + W(9, -1103198508, 1048924521, -1109968297, 1053328593)\n\t\t+ W(10, -1094346395, -1108898352, 1023084860, 1037821947)\n\t\t+ W(11, -1123876988, 1041381351, -1109391389, 1023206676);\n\tWS(-1087781687, -1134030789);\n\tsum1 = W(0, 1028179002, 1037437606, -1106850597, 1040743460)\n\t\t + W(1, -1123964671, -1122790273, 1036030878, 1027799500)\n\t\t + W(2, -1113846601, -1129634048, 1045066941, -1108576055)\n\t\t + W(3, 1030205873, -1117192467, 1027547489, -1110675758)\n\t\t + W(4, -1090428884, -1098510574, -1095161561, -1094444002)\n\t\t + W(5, -1095134094, -1098192922, -1101066654, -1095206484)\n\t\t + W(6, 1056064759, 1049319247, 1048732210, 1054487227) + W(7, 1044300425, 1055338520, 1034894336, 1053272331)\n\t\t + W(8, -1116809458, -1105760812, 1007721067, 1050640540)\n\t\t + W(9, 1040160031, -1106372902, -1109703824, -1138309939)\n\t\t + W(10, -1123784128, 1016685513, -1105661778, 1048222150)\n\t\t + W(11, -1110013906, 1033480951, -1112122819, 1033810456);\n\tsum2 = W(0, 1023697539, -1134698244, 1018187921, 1024534132)\n\t\t + W(1, -1145140771, -1142625275, -1141296989, 1007645751)\n\t\t + W(2, -1119401943, 1013558867, -1119659280, 1038666215)\n\t\t + W(3, -1120396841, 1035154544, -1131590401, 1021197862)\n\t\t + W(4, 1010071413, -1112961274, 1019163177, -1097296472)\n\t\t + W(5, 1033089456, -1105855221, -1156341795, -1120357988)\n\t\t + W(6, 1025267901, 1033970227, 1048742053, 1082848284) + W(7, 1060700209, -1115995862, 1035612397, -1123714371)\n\t\t + W(8, 988018625, -1116217767, -1103390691, -1064739318)\n\t\t + W(9, -1086947071, 1042818438, -1109434149, 1029308077)\n\t\t + W(10, -1122026299, 1005039212, -1115786374, 1042066180)\n\t\t + W(11, 1017803659, -1115628759, -1150181080, 1011442501);\n\tWS(1060770743, -1108197568);\n\tsum1 = W(0, 1016886775, -1160198547, 1015246637, -1139668038)\n\t\t + W(1, 1034731136, 1019206597, -1123983389, -1115649126) + W(2, 1029069588, 1038531041, 1041390628, 1022402527)\n\t\t + W(3, -1103954605, -1112398730, -1117714338, 1039312430)\n\t\t + W(4, -1095627128, -1096395039, -1086831062, 1057717017)\n\t\t + W(5, 1056693263, 1053908426, 1043180606, 1038174992) + W(6, 1046558478, 1048524254, 1058409012, 1050284011)\n\t\t + W(7, -1083755424, -1092005688, -1101033824, -1131529899)\n\t\t + W(8, -1146067869, -1097778094, -1098986327, -1110221104)\n\t\t + W(9, 1042951984, 1037994808, 1025216609, 1000398449) + W(10, 1009558662, 1033422755, 1033638277, 1029754521)\n\t\t + W(11, -1119102757, -1130383710, -1114155844, -1129441697);\n\tsum2 = W(0, -1104188915, 1026676440, -1122447814, 1024214572)\n\t\t + W(1, 1036156927, 1039804037, -1140508998, 1023379743)\n\t\t + W(2, 1041755532, -1099902739, 1020538503, -1096783078)\n\t\t + W(3, -1094671115, -1096595186, -1108992818, 1023478108)\n\t\t + W(4, 1039915367, 1048552390, -1105911641, 1068731351)\n\t\t + W(5, -1096057439, -1091471401, 1033306823, -1096750685)\n\t\t + W(6, 1028942726, -1105392496, -1106738713, 1066518668)\n\t\t + W(7, -1122053390, -1123632409, 1032650381, -1109607147)\n\t\t + W(8, 1030445090, -1104867005, -1106850996, -1126700225)\n\t\t + W(9, 1025639958, -1113480650, -1115144981, 1031767054)\n\t\t + W(10, -1104654601, 1033528857, 989961401, -1133955554)\n\t\t + W(11, -1153726297, 1032072745, -1128986161, 1023561226);\n\tWS(-1105940700, 1068951582);\n\tsum1 =\n\t\tW(0, 1000087558, 1035444041, 1016288952, 1033866603) + W(1, 1023501510, 1030903912, -1121882082, -1139243976)\n\t\t+ W(2, -1126610867, -1119652358, -1105308514, 1025089333)\n\t\t+ W(3, -1101500686, 1024487034, 1036868116, -1137536646) + W(4, 1040363554, 1048983991, -1129232537, 1043404182)\n\t\t+ W(5, 1050470779, 1032787659, 1042688239, 1051055933) + W(6, -1103531583, -1095183320, 1035540828, -1091977028)\n\t\t+ W(7, -1098956255, 1016827662, -1107477027, -1111432589)\n\t\t+ W(8, -1126498674, 1041424541, -1116171169, -1108874003)\n\t\t+ W(9, -1107291841, -1115835365, 1038297635, -1101253029)\n\t\t+ W(10, 1033586531, 1011542187, 1018737568, 1021129404) + W(11, 1033496245, 1023594100, 1015384473, 1034920923);\n\tsum2 = W(0, -1123978268, -1122059260, -1123592170, 1036141312)\n\t\t + W(1, -1111710804, -1127043568, 1040694361, -1120657957)\n\t\t + W(2, -1102554320, 1044079872, -1093658955, -1094337979)\n\t\t + W(3, 1045282706, -1139302445, 983065168, -1105233712) + W(4, 1043643239, -1111536011, 1042723115, 1067907418)\n\t\t + W(5, -1118927202, 1035940631, 1016057395, 1027935282) + W(6, 1026913323, 1056944699, -1093217948, 1064662115)\n\t\t + W(7, -1091166584, -1092135065, 1041761864, -1104693620)\n\t\t + W(8, 1031431539, 1037617295, -1103624535, -1090550375)\n\t\t + W(9, -1119161360, -1112133073, 1014979737, -1106943303)\n\t\t + W(10, -1112242992, 1005844362, -1101249260, 1042545272)\n\t\t + W(11, -1111294278, 1025042022, 1026789959, -1114223884);\n\tWS(1061289911, -1074625008);\n\tsum1 =\n\t\tW(0, -1118986355, 1042690449, 1022020251, 1032007652) + W(1, 1040686510, -1108674269, -1123719572, 1033202498)\n\t\t+ W(2, 1035013222, -1110099132, 1048074309, -1101544522)\n\t\t+ W(3, -1102744618, 1043103143, -1099009366, 1038471242) + W(4, 1058027688, 1047068971, 1036127926, 1058005973)\n\t\t+ W(5, 1048070472, 1057593649, 1043345580, 1055515931) + W(6, -1087592511, 1013931199, -1088015817, -1099315493)\n\t\t+ W(7, -1091144488, -1088950448, 1033106140, -1090129177)\n\t\t+ W(8, -1107213995, 1008030621, 1042727509, -1093058723)\n\t\t+ W(9, 1042938237, 1002612916, -1110941900, -1113377491)\n\t\t+ W(10, 1048036382, -1106703359, 1044183504, 1029001296)\n\t\t+ W(11, -1106075703, 1048869669, -1107279296, 1042195418);\n\tsum2 =\n\t\tW(0, 1034897388, -1104469346, -1104312342, 1033162274) + W(1, 1001538203, -1119055011, 1036889309, -1122390571)\n\t\t+ W(2, 1047600068, 1074182899, 1080728354, 1077196082) + W(3, 1039546617, -1121476275, -1113609974, -1124909535)\n\t\t+ W(4, -1092005485, -1074957140, -1067981267, -1071410100)\n\t\t+ W(5, -1101189403, 1042351425, -1113906708, 1037135096)\n\t\t+ W(6, 1032211690, -1124075063, -1100127529, -1093339345) + W(7, 1036352485, 1008083901, 1032631324, 1002134635)\n\t\t+ W(8, 1046053217, 981988140, 1036844207, 1030504779) + W(9, 1025223671, -1101604075, 1034478190, -1113103836)\n\t\t+ W(10, -1111289614, 990179414, -1123826485, -1109598746)\n\t\t+ W(11, 1036519612, -1146561467, 1017678167, -1132393287);\n\tWS(-1106894556, 1030995446);\n\tsum1 = W(0, 1025589699, -1123387156, 1028556318, -1139656804)\n\t\t + W(1, 980812294, -1128131860, -1137342353, 1017797929)\n\t\t + W(2, 1033805806, 1025291593, -1127599047, -1105750398)\n\t\t + W(3, -1104274718, -1117867836, 1018769427, -1114245906)\n\t\t + W(4, 1034528997, 1054610112, 1039781117, 1065523109) + W(5, 1054896451, 1045458038, 1040199808, 1047692618)\n\t\t + W(6, -1098701288, -1096105008, -1091536615, -1090836572)\n\t\t + W(7, -1097995702, 1039238949, -1110811780, 1001735913)\n\t\t + W(8, -1119393787, 1037953340, -1120434724, -1103173850)\n\t\t + W(9, -1111869411, -1104116474, -1129786002, -1106977725)\n\t\t + W(10, 1027839817, -1123546765, 1027349522, 1022652480)\n\t\t + W(11, -1135075504, -1125284461, -1152753902, -1131064048);\n\tsum2 =\n\t\tW(0, 1030581609, -1110091164, 1024868796, -1124528958) + W(1, -1175372351, 1022252519, -1123141270, -1123316826)\n\t\t+ W(2, -1096073996, -1132437108, 1051933742, 1042406776)\n\t\t+ W(3, -1117745155, -1117509823, -1110977956, 1029056744)\n\t\t+ W(4, -1104952058, 1031847146, 1077840619, -1071401906)\n\t\t+ W(5, -1108532142, -1107574374, 1034777920, 1034383482) + W(6, 1036583621, 1040176294, 1056082302, -1080138625)\n\t\t+ W(7, 1039833458, 1041695761, -1119756119, 977900031) + W(8, 1006888722, -1120421639, -1114613612, 1012484405)\n\t\t+ W(9, 1044393926, -1112420268, 1028893644, 1027961212)\n\t\t+ W(10, 1023568502, -1124563800, 1026684617, -1114165836)\n\t\t+ W(11, -1139194300, 1023135287, -1122696127, 1034470668);\n\tWS(-1094248046, 1034739186);\n\tsum1 = W(0, -1121641997, -1148807918, -1119896808, -1118546659)\n\t\t + W(1, -1117202258, 1027770003, -1121511758, -1114510703)\n\t\t + W(2, 1043421097, -1114752489, 1040593858, 1043491504) + W(3, 1033892386, 1035924243, 1032482905, 1031829015)\n\t\t + W(4, -1090462057, -1097763033, -1089339622, -1089142502)\n\t\t + W(5, -1089696734, -1098379668, -1096843609, -1089945727)\n\t\t + W(6, 1057979744, 1045790578, 1054873978, 1054724534) + W(7, 1056858543, 1046524773, 1049846778, 1056083605)\n\t\t + W(8, 1042504017, -1105205440, 1029920941, -1114903193)\n\t\t + W(9, -1102740772, 1042806872, -1103488653, 1031492831)\n\t\t + W(10, 1019430629, -1115505835, 1008619887, 1038945077)\n\t\t + W(11, 1025474934, -1148381698, 1017864241, 1029503362);\n\tsum2 = W(0, 1032629114, 1024571549, -1123705993, -1120833813)\n\t\t + W(1, 1031286487, -1113289848, 1033808184, 1035572024)\n\t\t + W(2, -1111104155, 1022922994, 1036988882, -1104365480)\n\t\t + W(3, 1038064580, -1119955010, 1018164430, -1144675449)\n\t\t + W(4, -1111175727, 1047799465, -1121840686, -1098359864)\n\t\t + W(5, 1008715668, -1115327032, 1042276675, -1114533548) + W(6, 1069180600, 1065968459, 1066031139, 1064223912)\n\t\t + W(7, 1062275672, 1060225053, 1060364945, 1057151625) + W(8, -1092657949, -1106624299, 1026540087, 1044325339)\n\t\t + W(9, 1048614780, -1117772151, -1105153406, -1103516228)\n\t\t + W(10, -1081878912, -1085703668, -1080884055, -1079207816)\n\t\t + W(11, -1083548865, -1085294305, -1090372695, -1100806033);\n\tWS(-1095016302, 1049780935);\n\tsum1 =\n\t\tW(0, -1140214663, 1008440267, -1137823987, 1035221148) + W(1, 1007510683, 1029727784, -1142229143, 1025812851)\n\t\t+ W(2, 1050711943, -1110792724, 1036012635, -1104496021)\n\t\t+ W(3, -1145733059, -1109552317, -1115585956, -1142816275)\n\t\t+ W(4, 1044505338, 1051364259, 1051977632, 1058946996) + W(5, 1056967247, 1057598839, 1050931556, 1058283380)\n\t\t+ W(6, -1092537964, -1101785640, -1091742968, -1090015552)\n\t\t+ W(7, -1090979415, -1088424934, -1096995861, -1095074239)\n\t\t+ W(8, -1110639373, 1026645590, -1130979716, -1106527650)\n\t\t+ W(9, -1146016549, 1015167915, 1009720606, -1105047309) + W(10, 1025322472, 1024485132, 1018037601, 1032762847)\n\t\t+ W(11, 1010918699, 1027572437, -1127055707, 1011865435);\n\tsum2 =\n\t\tW(0, 1040969494, 1036141535, -1136101349, 1015318832) + W(1, -1112220931, -1111621316, 1042180910, -1115487487)\n\t\t+ W(2, -1087779211, 1033693595, -1096934819, 1042126031) + W(3, 1036377831, 1046621966, -1129542795, 1052735842)\n\t\t+ W(4, 1056604611, -1095617275, 1057610078, 1059711341)\n\t\t+ W(5, -1098744628, -1088974739, -1112239718, -1089093989)\n\t\t+ W(6, 1059045592, 1037950807, 1059474718, 1079595174) + W(7, 1065421414, -1079659864, -1077353318, -1076641223)\n\t\t+ W(8, -1085730308, 1051875566, -1104408796, 1011257519)\n\t\t+ W(9, -1102027272, -1097874228, -1123714793, -1089345613)\n\t\t+ W(10, 1035668628, -1110274633, -1106464684, -1106179801)\n\t\t+ W(11, 1035078820, 1045400280, -1122902412, 1057832501);\n\tWS(-1081166556, -1096725839);\n\tsum1 =\n\t\tW(0, -1146977357, -1130642485, 1032268722, -1111253552) + W(1, 1024786511, 1021187873, -1115200917, 1021141494)\n\t\t+ W(2, -1114510289, -1119269199, 1038356317, -1095921640)\n\t\t+ W(3, 1038758688, -1102108905, -1117501552, 1024092394) + W(4, 1050030946, 1045921361, 1039889859, 1057711094)\n\t\t+ W(5, 1053078718, 1045805544, 1042557010, 1052716334) + W(6, -1102646113, -1098664649, 1027769520, -1089074675)\n\t\t+ W(7, -1098156409, -1106011300, -1102728052, -1107570834)\n\t\t+ W(8, -1113153825, 992772066, 1041426283, -1107182252)\n\t\t+ W(9, 1043642083, -1131324475, -1148235644, -1153593794)\n\t\t+ W(10, -1114582784, 1022415207, 1025422681, -1098886685)\n\t\t+ W(11, 1036466489, -1129952762, -1133449046, 1012650491);\n\tsum2 =\n\t\tW(0, -1154116071, -1120032365, 1033357218, -1132933754) + W(1, -1165588207, 1029048100, -1115144648, 1020455541)\n\t\t+ W(2, 1032309947, 1017679770, -1118521489, 1020082264) + W(3, -1122971142, 1015972752, 1021714009, -1134334294)\n\t\t+ W(4, -1123962703, 1025906643, 1007375557, -1114291801)\n\t\t+ W(5, -1114360955, 1031540723, -1136421576, 1014310369)\n\t\t+ W(6, -1133231158, -1134787122, -1096414395, 1064675801)\n\t\t+ W(7, -1097709607, 1040110606, -1121524587, -1119507729)\n\t\t+ W(8, -1128886461, -1108727038, 1020492423, -1080568363)\n\t\t+ W(9, -1108104258, -1112615988, -1111963053, 1028363593)\n\t\t+ W(10, 1035599863, 1039832482, 1035524914, 1059399952)\n\t\t+ W(11, 1040378905, 1024318985, 1036458899, -1122706022);\n\tWS(1058284215, -1100256461);\n\tsum1 = W(0, -1136333391, 977549609, 1023954799, 1032458293) + W(1, -1131855793, -1132003829, 1014651348, 1007647892)\n\t\t + W(2, 1042064203, 1017583666, -1103445177, 1003134525) + W(3, 1030077610, 1044505715, 1034368605, -1109681210)\n\t\t + W(4, 1048792691, 1037147366, 1061193316, 1055543997)\n\t\t + W(5, -1089393894, -1102389770, -1126089633, 1030932473)\n\t\t + W(6, -1108621703, -1098054746, -1084539629, -1105743629)\n\t\t + W(7, 1061657482, -1111653453, 1032593324, -1134741175)\n\t\t + W(8, -1107171315, 1036542212, 1001865121, -1113492892)\n\t\t + W(9, -1095280499, 1000070140, -1124982771, 1012906393)\n\t\t + W(10, 1009105958, -1118222526, 1005641493, 1001049989)\n\t\t + W(11, -1141919717, 1031530183, 957669220, -1123915241);\n\tsum2 = W(0, 1025749667, -1112523495, 1034709000, 1021531102)\n\t\t + W(1, -1129693762, 1006685387, -1119027428, -1106459716)\n\t\t + W(2, 1018718450, 1033569638, -1099586256, -1096388774)\n\t\t + W(3, -1109846828, -1112379914, 1008781387, 1045287677)\n\t\t + W(4, -1104497483, -1111912018, -1087345020, 1061077725)\n\t\t + W(5, 1049253485, -1117456886, 1038233914, -1135366091)\n\t\t + W(6, -1109821356, 1026676021, -1092985416, 1065372034)\n\t\t + W(7, 1048850468, -1106255761, 1013968523, -1138431127)\n\t\t + W(8, 1032840840, -1114119398, 1018773778, -1129773592)\n\t\t + W(9, -1101038787, 1043058397, -1113511705, 1037121278)\n\t\t + W(10, 1009497507, 1017944258, 1033599708, -1109427758)\n\t\t + W(11, 1029395381, -1106769492, 1020319838, -1113647178);\n\tWS(1048665454, 1062854025);\n\tsum1 =\n\t\tW(0, 1004974300, 1032679478, 1041394910, 1026224498) + W(1, -1128844481, -1137588617, -1115578718, -1128306202)\n\t\t+ W(2, -1140401360, -1099989608, -1108003052, -1103518244)\n\t\t+ W(3, 1044968661, 1040271757, 1031459778, -1114933822) + W(4, 1040482153, 1038119146, 1050737065, 1054936910)\n\t\t+ W(5, -1084409495, -1099872844, -1107158134, 1038726400)\n\t\t+ W(6, -1107105990, -1094089019, -1084721726, 1054691719) + W(7, 1057517320, 1035416977, 1033669936, 1032390235)\n\t\t+ W(8, -1113947114, 1043046180, 1044891839, 1025601857) + W(9, 1022006333, 1017193535, 1025595521, 1023203548)\n\t\t+ W(10, 1004764812, -1132148363, 1022372181, -1113753404)\n\t\t+ W(11, 1033354242, -1131287582, -1112957780, 1012659010);\n\tsum2 =\n\t\tW(0, -1120028750, -1137390044, 1031876652, -1112211314) + W(1, 1041988042, -1105672202, 1032816067, -1122489809)\n\t\t+ W(2, -1116919239, 1034599590, -1110926857, 1037510574)\n\t\t+ W(3, -1091078601, 1052042083, -1102117757, 1043447553)\n\t\t+ W(4, 1026537129, -1105861815, -1114848017, 1054207178)\n\t\t+ W(5, 1059021754, -1104155840, 1047757772, -1115066040)\n\t\t+ W(6, 1032246372, -1095438265, -1093245727, 1062401065)\n\t\t+ W(7, -1115099719, -1100501338, -1112097107, -1102195598)\n\t\t+ W(8, 1047938064, 1022176478, -1093210017, -1118385188) + W(9, -1104427658, 1013766280, 1027075631, 1027463789)\n\t\t+ W(10, -1102851233, -1129352893, 1046245506, -1106645860)\n\t\t+ W(11, 1043294706, 1016480352, -1113418727, 1030659187);\n\tWS(1046819548, -1112403026);\n\tsum1 =\n\t\tW(0, 1043575156, -1118831073, 1028002987, 1025124390) + W(1, 1023377962, 1034880715, -1125071779, -1144027915)\n\t\t+ W(2, -1096536373, 1040283909, 1049135339, -1115136450)\n\t\t+ W(3, -1127238030, 1042113706, -1124049974, 1045174012) + W(4, 1028458839, 1047473762, -1083606160, 1052252597)\n\t\t+ W(5, 1054448495, -1106041242, 1031800519, -1138801364) + W(6, 1042563315, -1108795847, 1040849058, 1045384892)\n\t\t+ W(7, -1081137782, 1040945110, 1026387221, -1122981994)\n\t\t+ W(8, -1147631681, -1115473730, 1015994849, -1102431101)\n\t\t+ W(9, 1046487189, 1026652836, -1096718751, 1030118403)\n\t\t+ W(10, -1134760216, 1037371629, 1036578576, -1147407721)\n\t\t+ W(11, 1029054905, -1113175874, 1032040846, -1121286085);\n\tsum2 =\n\t\tW(0, -1116472244, 1025044698, -1123391126, 1003069456) + W(1, -1129719684, -1110477199, 1023677849, 989635105)\n\t\t+ W(2, 1036928405, -1122373594, -1111538981, -1111848203)\n\t\t+ W(3, 1027481573, 990411281, -1136822924, -1136314996) + W(4, 1035706238, 1040619830, 1046111644, 1044878634)\n\t\t+ W(5, 1017226015, 1030695866, -1114454329, 1007553654) + W(6, -1121318128, -1104861162, 1038958235, 1050016986)\n\t\t+ W(7, 1040124875, -1116142138, -1113301330, -1112411005)\n\t\t+ W(8, -1114868876, 1034962287, 1034772140, -1113883437)\n\t\t+ W(9, -1114732111, -1102609372, 1029458562, -1109652887)\n\t\t+ W(10, 1033058067, -1110745183, -1130393948, 1005454840)\n\t\t+ W(11, -1105702279, 1029172520, -1112847239, -1150621057);\n\tWS(1054158702, -1098491196);\n\tsum1 = W(0, -1129450472, 983582877, -1121209423, -1121678922)\n\t\t + W(1, 1031290553, -1119715259, 1032360987, -1115265987)\n\t\t + W(2, -1119237644, 1026235385, 1037197666, 1031464488)\n\t\t + W(3, -1099798307, -1102325483, -1107157175, 1036899466)\n\t\t + W(4, -1101713087, -1098493798, -1083899440, -1103778771)\n\t\t + W(5, 1057005120, 1046824098, 1037130136, 1011053924) + W(6, 1033589815, 1048228620, 1060260620, 1056756834)\n\t\t + W(7, -1093716116, -1102446942, -1111054172, -1132207900)\n\t\t + W(8, 1034513750, -1123359016, -1103037013, -1122982297) + W(9, 1049393023, 1028221304, 1041637742, 992781927)\n\t\t + W(10, 1023147092, -1173092218, 1035595873, 1020058530)\n\t\t + W(11, -1117980637, -1124996559, -1115548960, 995105423);\n\tsum2 =\n\t\tW(0, 1022318336, -1115650269, 1023537352, -1109544964) + W(1, -1104797311, 1016525394, 1034835508, 1033208955)\n\t\t+ W(2, 1013555797, 1016103802, 1041650416, 1052577828)\n\t\t+ W(3, -1105646271, -1089308865, -1093424353, -1123233885)\n\t\t+ W(4, -1107715656, -1119261847, 1043696631, -1093802466)\n\t\t+ W(5, 1070961498, -1101461419, -1129647390, -1103638866)\n\t\t+ W(6, 1023151297, -1114491928, 1042399799, -1088107917) + W(7, 1046742027, 1041655381, 1027817568, -1123805293)\n\t\t+ W(8, 1033284778, -1130031974, -1108010060, 1027122983) + W(9, -1123089325, 1023301191, 1010592861, 1027104379)\n\t\t+ W(10, -1133592549, -1142562170, -1132296546, 1012286637)\n\t\t+ W(11, -1129646858, -1123666701, 1020078242, 1017326494);\n\tWS(-1098756718, 1025257793);\n\tsum1 = W(0, -1170432841, 992949730, 1001883457, 1015181254) + W(1, -1113865961, 1025052052, -1142935155, 1028407518)\n\t\t + W(2, 1023803110, -1138344011, 1026014126, -1121590721)\n\t\t + W(3, -1118191492, -1131017933, 992699702, -1125677724)\n\t\t + W(4, -1090131561, -1107275570, -1096556254, -1096688477)\n\t\t + W(5, -1094031636, -1105028073, -1106433523, -1094260670)\n\t\t + W(6, 1057699745, 1040420307, 1054103406, 1044394251) + W(7, 1054646511, 1053702338, 1018441892, 1056434389)\n\t\t + W(8, -1119694405, -1117188674, -1115724526, 1029634610)\n\t\t + W(9, -1140440641, -1105231572, 1028218227, -1115106656)\n\t\t + W(10, 1012926412, -1123369303, -1127845816, 1035099253)\n\t\t + W(11, -1114907963, 1041135600, -1110839852, 1033590433);\n\tsum2 =\n\t\tW(0, -1113857499, 1017397942, 994248048, -1107301692) + W(1, -1114604929, -1099171315, -1128156929, -1105825924)\n\t\t+ W(2, 1035336978, 977119295, 1058657166, 1082282453) + W(3, 1081592322, 1057428850, 1029982493, 1050573738)\n\t\t+ W(4, 1003212424, -1169985407, -1086726098, -1067974855)\n\t\t+ W(5, -1065596346, -1101606461, -1114706375, -1113547007)\n\t\t+ W(6, 1016146718, -1139136560, 1029663775, -1088717558)\n\t\t+ W(7, 1032721198, -1109521003, 1035913834, -1115579388)\n\t\t+ W(8, -1124908942, -1127032094, -1128987279, 1045162011)\n\t\t+ W(9, -1132432620, 1001306728, -1127893472, 1022139202) + W(10, 1007728744, 1015257206, -1139895388, 989071903)\n\t\t+ W(11, -1115423533, 1026551071, -1124574009, 999865176);\n\tWS(1057488311, 1032489366);\n\tsum1 = W(0, 998859696, -1126361486, 1028022609, -1139957040)\n\t\t + W(1, 1015295094, -1122345661, -1126668079, -1129886863)\n\t\t + W(2, -1107316871, 1034785118, -1114064513, 1048520075)\n\t\t + W(3, -1112481238, -1154023155, -1133481329, -1108825451)\n\t\t + W(4, -1130375162, -1098594694, -1105098668, -1099155379)\n\t\t + W(5, -1109749909, -1112014022, -1114013594, -1116334683)\n\t\t + W(6, 1045821468, 1031878554, 1057263754, -1127500588) + W(7, 1049599048, 1025402492, 1034877470, 1046739556)\n\t\t + W(8, 1009430200, -1137835434, -1104540630, 1033795278)\n\t\t + W(9, -1105774078, 1046311438, -1109189150, -1119327433)\n\t\t + W(10, -1127874328, -1124885440, -1121514949, 1026343507)\n\t\t + W(11, 1007199100, -1119007402, 1026086402, -1138298796);\n\tsum2 = W(0, -1131728975, 1035973522, 1044679054, 1057647035) + W(1, 1029801795, -1120435503, 1040526136, 1001204178)\n\t\t + W(2, 1036764889, -1115068573, -1096357732, -1081650015)\n\t\t + W(3, 1008652352, 1020148594, 1019038058, -1125968836)\n\t\t + W(4, -1111227173, 1022919798, -1128128484, 1064645808)\n\t\t + W(5, -1094730608, 1034184152, -1110501324, -1141167471)\n\t\t + W(6, -1128881737, 1043114423, -1098903856, -1105946360)\n\t\t + W(7, -1121257166, -1122224678, 1033879187, -1125677560) + W(8, 1037242625, 990889655, 1034691185, 997618289)\n\t\t + W(9, -1119761613, -1123774451, 1017411026, 1017460301)\n\t\t + W(10, -1122740141, -1130091274, -1126568042, 1036162942)\n\t\t + W(11, -1145265129, 1016517254, 1025838030, -1121815648);\n\tWS(1059796919, -1120566973);\n\tsum1 =\n\t\tW(0, -1128913552, -1121363289, -1114223569, -1170089852) + W(1, 1032486790, 1007200827, 1031548233, 1025411673)\n\t\t+ W(2, -1112300176, 1042197939, 1034918960, 1019526904)\n\t\t+ W(3, -1097594444, -1109654209, -1121876014, -1114258964)\n\t\t+ W(4, -1105877684, -1097436160, -1084964393, 1000497399)\n\t\t+ W(5, 1058860547, 1031553246, 1038828418, -1106885131) + W(6, 1051198984, 1044389601, 1058261945, 1057668526)\n\t\t+ W(7, -1083919657, -1093305914, -1113158982, 1024357474)\n\t\t+ W(8, 1031319296, -1156941767, -1115209492, 1032065846) + W(9, 1045243539, 1041280427, 1014469175, -1128319413)\n\t\t+ W(10, -1128535084, 1024751122, 1025460631, 1032881746) + W(11, 1010383044, 986576750, 1034628234, 1012703988);\n\tsum2 =\n\t\tW(0, -1143612781, 1024653023, 1031492195, -1118229715) + W(1, 1037055061, -1103747903, 1027878177, -1120661119)\n\t\t+ W(2, 1030657759, -1114346787, -1115709916, -1122961088)\n\t\t+ W(3, 1023143173, 1032102149, 1035049663, -1115297076) + W(4, -1142189493, -1145631357, 1041520845, 1058735511)\n\t\t+ W(5, -1123318690, -1113230658, -1107577516, 1029140405)\n\t\t+ W(6, -1116365956, -1122350618, -1109597137, 1063925227)\n\t\t+ W(7, -1097941231, -1096423541, 1034348655, -1104473650)\n\t\t+ W(8, -1108113093, -1120960689, -1100459142, -1102646250)\n\t\t+ W(9, -1097541479, -1119600722, 994779835, 1048901284) + W(10, -1144957229, 1013910379, 1028619709, 1003281301)\n\t\t+ W(11, 1040501280, 1015718737, -1116733621, -1122107736);\n\tWS(1025862512, -1097886171);\n\tsum1 = W(0, 1017995501, 1028206791, -1115115241, 1023900364) + W(1, 973319892, 1028215869, 1033665516, 1031994596)\n\t\t + W(2, 1039868615, 1039095646, 1044724702, 1040670187) + W(3, 1036683863, -1105649212, 1040757263, -1101644966)\n\t\t + W(4, -1084617440, -1095591910, -1088992852, -1089161581)\n\t\t + W(5, -1092805231, -1107053347, -1107160205, -1102281943)\n\t\t + W(6, 1048852846, 1046495341, 1053236428, 1054642003) + W(7, 1050422468, 1049220624, 1039010398, 1042256548)\n\t\t + W(8, 1036255511, 1032043925, 974144948, 1024473755) + W(9, -1132527589, -1120787802, 1025750940, 1034960116)\n\t\t + W(10, 1003283810, 1031081728, -1128580235, 1033561578)\n\t\t + W(11, 1012484477, -1126192084, 1035723265, -1141688154);\n\tsum2 =\n\t\tW(0, 1017309480, -1115898040, 1026950620, -1131938440)\n\t\t+ W(1, -1120377052, -1147724576, -1108926548, -1120540424)\n\t\t+ W(2, -1113384832, -1105498372, -1140340528, -1101077232)\n\t\t+ W(3, -1114410560, 1042402941, -1114542528, 1040078450) + W(4, 1051665642, 1043260681, -1109716244, 1039662810)\n\t\t+ W(5, -1113565360, -1097796100, -1108348496, -1097463639)\n\t\t+ W(6, -1106075829, 1041703091, -1109231476, 1049668212) + W(7, 1032262130, 1040746517, -1140600496, 1048026467)\n\t\t+ W(8, 1041533127, -1122221676, 1047102067, -1109791178)\n\t\t+ W(9, 1039963022, -1131969000, 1032294606, -1107112902)\n\t\t+ W(10, -1143916576, -1119502308, 1032670038, -1130795288)\n\t\t+ W(11, -1112068676, 1031201932, -1108483346, 1028500076);\n\tWS(1059594295, -1081462343);\n\tsum1 = W(0, 1027153262, 978268098, 1020914066, 1037283618) + W(1, 1001487768, 1024040629, -1121199663, 1022356543)\n\t\t + W(2, 1043504002, -1116748340, 1039643767, 1038369681) + W(3, 1034058802, 1040894970, -1111840522, 1036921959)\n\t\t + W(4, 1052804111, 1047257898, 1049749519, 1054855273) + W(5, 1047397560, 1052275873, 1039603542, 1026848211)\n\t\t + W(6, -1087238767, -1102654539, -1086204143, -1088075529)\n\t\t + W(7, -1086503800, -1098202447, -1107277965, -1098696769)\n\t\t + W(8, 1041162890, 1038115889, 1044063108, 1037006730) + W(9, -1117492081, 1024505810, 995252542, 1036480704)\n\t\t + W(10, 1012415888, -1165722369, 1033818911, 1032180390)\n\t\t + W(11, 991868273, 1034352017, -1131707508, -1136594828);\n\tsum2 = W(0, 1028621181, -1110777341, 1027102605, 1030597213)\n\t\t + W(1, -1106396561, 1041951037, -1110468651, 1026771477)\n\t\t + W(2, -1120219585, -1127812186, -1121966109, -1109734497)\n\t\t + W(3, -1139970197, 1005564394, 1027913013, 1021745754) + W(4, 1035384087, -1126856730, 1038893967, 1046142043)\n\t\t + W(5, -1102581665, 1024169581, -1119264521, 1045072501)\n\t\t + W(6, 1034472183, -1129759266, -1123472797, 1054407172)\n\t\t + W(7, -1114873213, 1049042812, -1104920828, -1117275361)\n\t\t + W(8, -1123130413, -1106344343, -1121376361, -1110811845)\n\t\t + W(9, -1147353578, 1023037898, -1123538565, -1108801471)\n\t\t + W(10, -1120488613, -1132463093, -1111137329, 1013238549)\n\t\t + W(11, -1113345499, 1010521365, -1123696429, 934750635);\n\tWS(1001790336, 1033193226);\n\tsum1 = W(0, -1113292474, -1131356554, -1133969725, -1118664394)\n\t\t + W(1, 1027204153, -1111709325, 1024655285, -1127980619)\n\t\t + W(2, 1018580889, -1115176285, -1102427201, -1094752997)\n\t\t + W(3, -1105768635, -1119059021, -1121009370, -1131789226)\n\t\t + W(4, -1117909243, 1046326027, 1041639692, 1062953181) + W(5, 1031529696, 1040555139, -1115548569, 1030139737)\n\t\t + W(6, 1052553934, -1113855449, 1060794158, 999804065)\n\t\t + W(7, -1122254720, -1110352445, 1026923705, -1100154756)\n\t\t + W(8, -1104113579, -1112351060, -1095014251, -1105541862)\n\t\t + W(9, -1102735326, 1031818996, 1008421480, 1016036429)\n\t\t + W(10, -1129785460, -1156866531, -1132017542, -1130622370)\n\t\t + W(11, 1022740922, -1121415144, 1008916224, -1122315305);\n\tsum2 =\n\t\tW(0, 999771042, -1130012060, -1123589256, 1018901632) + W(1, -1124249760, 1017234680, -1118367200, 1016197020)\n\t\t+ W(2, 1019371878, -1137594745, 1002965746, -1114341154) + W(3, -1115605194, 1017493044, 1015905000, 1024661143)\n\t\t+ W(4, 1035878909, 991329315, 1042318306, 1053769225) + W(5, 1010690665, -1099274218, -1101115118, -1092869373)\n\t\t+ W(6, -1106457448, 1043986431, -1118271248, 1057361082)\n\t\t+ W(7, -1102884302, 1037230696, -1112309114, 1036147884)\n\t\t+ W(8, 1038257769, -1108709562, 1025444512, -1113472862) + W(9, 1015483632, -1115820708, 1020142296, 1016005876)\n\t\t+ W(10, -1118330440, -1156785507, -1134019065, 1021163648)\n\t\t+ W(11, -1123825168, 1025071687, -1126466092, 1013380697);\n\tWS(-1096043118, -1087645231);\n\tsum1 = W(0, -1115587665, 1032694426, 1031441086, 1023546425)\n\t\t + W(1, -1130229584, -1147531597, 1019733960, -1115129818)\n\t\t + W(2, 1029203067, -1099485226, -1113336032, -1121275799)\n\t\t + W(3, 1051148019, -1118364796, -1127235090, -1119188228)\n\t\t + W(4, 1045341850, 1017432376, 1054321442, 1050158903) + W(5, -1081266857, 1047006846, -1106232936, 1041137522)\n\t\t + W(6, -1106908023, 1052615508, -1082902530, 1045376289)\n\t\t + W(7, 1057440145, -1118131945, -1134199968, 1018710010)\n\t\t + W(8, -1131991862, -1113683692, 1050084000, -1116607496)\n\t\t + W(9, 1027649766, -1120491559, 1027530281, -1131853547)\n\t\t + W(10, -1114910160, -1127306394, 998100766, -1147820543)\n\t\t + W(11, 1021215128, 991663462, -1123554607, -1124042776);\n\tsum2 =\n\t\tW(0, -1129211209, 1023861908, 1038235290, 1029997412) + W(1, -1125523437, -1107362446, -1114850415, 1013933265)\n\t\t+ W(2, 1023515648, -1119658781, -1121364796, -1103304652)\n\t\t+ W(3, -1109858923, 1044349350, 1032218024, 1027861436) + W(4, 1040374834, -1108471855, -1096619497, 1039720436)\n\t\t+ W(5, -1113539350, 1038091910, -1121557752, 982770184) + W(6, -1110890211, -1133136545, 1044872450, 1050855479)\n\t\t+ W(7, -1117035130, -1107498682, -1130602657, -1128608489)\n\t\t+ W(8, 1020265593, 1048083250, 1034188808, -1102257516) + W(9, 1022698753, 1024895152, -1162309256, -1129090321)\n\t\t+ W(10, 1023672492, -1109425046, -1121333166, -1130250517)\n\t\t+ W(11, 1029442100, -1122118916, 1020180841, 939323929);\n\tWS(1062090935, 1058767985);\n\tsum1 =\n\t\tW(0, 1016379967, -1127587553, -1124869109, 1030044278) + W(1, -1135267218, 1021197901, -1146487047, 1001072263)\n\t\t+ W(2, -1111629724, 1016014666, 1045897412, 1039181162) + W(3, -1111908667, 1032078908, -1129970444, 1037221664)\n\t\t+ W(4, -1115487571, 1046030390, -1089079359, -1107063038)\n\t\t+ W(5, 1056809425, -1100036461, 1008766834, -1118068997) + W(6, 1040669191, -1131263417, 1049140321, 1046027952)\n\t\t+ W(7, -1082917799, 1040408361, -1115518322, 1034380765)\n\t\t+ W(8, -1124650927, -1107621674, -1120715392, 1035258018)\n\t\t+ W(9, 1051125844, -1117322707, -1115270659, -1135017032)\n\t\t+ W(10, -1131647467, 1039946613, -1197661491, 1033161790)\n\t\t+ W(11, -1129645073, -1124734374, 1029976235, -1119763541);\n\tsum2 =\n\t\tW(0, 1033054007, -1116547758, -1123189128, 1033469023) + W(1, -1122818756, 1026371779, -1136838880, -1137766108)\n\t\t+ W(2, -1111327982, 1041352776, 1032790615, 1012971008) + W(3, -1098982462, 1042838787, -1110172088, 1004924993)\n\t\t+ W(4, -1121722910, 1034677105, 1033549613, 1033020303) + W(5, 1051050782, -1098306997, 1034801784, -1120000922)\n\t\t+ W(6, 1038740385, -1115132829, -1092378351, -1108961666)\n\t\t+ W(7, -1121004928, 1045175561, 1019964530, 1027487385)\n\t\t+ W(8, -1119336676, -1124364804, -1102497930, -1106694042)\n\t\t+ W(9, 1035128176, 1039643256, 1015821086, 1017988993) + W(10, -1124024618, 1035204548, 1032784783, 1032253989)\n\t\t+ W(11, 1009754028, -1118316692, -1125398316, 1028774587);\n\tWS(1065136439, 1040354336);\n\tsum1 = W(0, -1140671753, -1120274067, 1022747450, -1124666160)\n\t\t + W(1, -1123069063, -1131113682, -1118356003, -1126498983)\n\t\t + W(2, -1108811053, -1107804932, -1110160675, -1105899870)\n\t\t + W(3, 1025125049, 1033405406, -1129239633, 1016924742) + W(4, 1057254373, 1050226223, 1059609336, 1031464345)\n\t\t + W(5, -1093137163, -1111386668, -1105328992, -1111235284)\n\t\t + W(6, -1099781359, -1098842784, -1092867554, 1000731409)\n\t\t + W(7, 1058399851, 1055942809, 1044975810, 1051704028) + W(8, 1009251305, 1010162395, 1036945681, -1114655220)\n\t\t + W(9, -1109467235, -1101547023, -1113825780, -1104493413)\n\t\t + W(10, 1003726785, -1112753158, -1120831377, -1112429520)\n\t\t + W(11, -1119063979, -1146511789, -1116155918, -1117793303);\n\tsum2 = W(0, -1139839138, 998321428, -1134067290, 1024466364)\n\t\t + W(1, 1008723794, -1119932526, 1028368392, -1132382549) + W(2, 1034041544, 1018598993, 987604943, -1102834025)\n\t\t + W(3, -1131349085, -1118877643, 1031347596, -1113750023)\n\t\t + W(4, 1034669108, -1116818777, 1007335842, 1061492513)\n\t\t + W(5, -1121214551, -1116983417, -1114752830, -1103912225)\n\t\t + W(6, -1095769692, -1114897304, -1102588486, 1062722215)\n\t\t + W(7, -1107691916, -1117176868, 1009572226, 1035794880)\n\t\t + W(8, -1105759439, -1105398904, -1108283066, -1098749835)\n\t\t + W(9, -1108418109, 1041629273, -1103951670, 1046707789)\n\t\t + W(10, 1039138956, -1145690340, 1018314989, 1025712340)\n\t\t + W(11, 1022467761, -1121476700, 1033232162, -1110829011);\n\tWS(1015535328, -1084984071);\n\tsum1 = W(0, -1114800552, 1017574081, -1121052395, -1121642214)\n\t\t + W(1, 1031943978, -1119258038, 1015340962, -1152091148)\n\t\t + W(2, -1108603860, -1120445077, -1120661414, 1038434434)\n\t\t + W(3, 1004694578, 983354644, -1131668588, -1117988144)\n\t\t + W(4, -1099862310, -1098244185, -1094435959, -1091868509)\n\t\t + W(5, -1100742889, -1090330210, -1106546547, -1096238847)\n\t\t + W(6, 1058689409, 1050368026, 1059588503, 1053265766) + W(7, 1053762387, 1049777811, 1042220181, 1044693386)\n\t\t + W(8, -1114937124, -1113854018, -1120887600, 1038069402)\n\t\t + W(9, 1032168457, 1033335786, -1112611163, 1033654385)\n\t\t + W(10, -1119809253, -1119794874, -1117398367, -1124845785)\n\t\t + W(11, -1126829041, -1124490374, -1122991451, 1025017029);\n\tsum2 = W(0, -1113763234, -1113925793, -1117079348, 1016562523)\n\t\t + W(1, -1106152769, 1021767953, -1110489214, -1118706081)\n\t\t + W(2, -1123863865, -1117743388, 1031541130, 1034144457)\n\t\t + W(3, -1108434934, 1028245712, -1107854239, -1131124226)\n\t\t + W(4, -1152383745, 1049718598, 1054034272, 1045174355) + W(5, 1019958281, 1048832333, 1037079656, 1041167636)\n\t\t + W(6, -1153318001, -1115051721, -1111062529, 1029337732)\n\t\t + W(7, -1107848604, 1036566626, -1106439039, -1100833945)\n\t\t + W(8, 1032880554, -1108241407, 1025815300, 1040219109)\n\t\t + W(9, -1122950542, 1032317223, -1114917041, 1023645948)\n\t\t + W(10, -1112434267, 1017487533, -1115045873, -1115252534)\n\t\t + W(11, -1112234054, -1144290245, -1111099643, -1123196065);\n\tWS(1058837943, 1069665989);\n\tsum1 = W(0, 962159770, -1131526763, -1123587520, 1016761717)\n\t\t + W(1, -1116652202, 1020359383, -1124916236, -1120750038)\n\t\t + W(2, -1123278397, -1133106088, -1111839826, -1119033369)\n\t\t + W(3, -1112323118, -1123741278, -1111587013, 1031183749)\n\t\t + W(4, 1059574623, 1052414436, 1056026369, 1050778647) + W(5, 1057288447, 1051933055, 1049400292, 1050858601)\n\t\t + W(6, -1100091288, -1100255560, -1090882007, -1089604336)\n\t\t + W(7, -1090318286, -1098258189, -1098860821, -1113801599)\n\t\t + W(8, -1106975399, 1034080493, 1026032901, 1030312842)\n\t\t + W(9, -1115237492, -1123145400, 1023272149, -1102573630)\n\t\t + W(10, 1026912571, 1026538575, -1128992103, -1142474253)\n\t\t + W(11, -1126485147, 1024876312, -1130617057, -1147252941);\n\tsum2 =\n\t\tW(0, 1031825723, -1121672345, -1128689519, 1003655756) + W(1, -1112729716, 1021714543, -1143241256, 1015056847)\n\t\t+ W(2, 1031898082, -1123032728, -1149677000, 1042326937)\n\t\t+ W(3, 1016978721, -1135526098, 1017362221, -1115756346)\n\t\t+ W(4, -1068962638, -1070958719, 1062859919, 1079716701) + W(5, 1069238165, -1106783417, 1038638730, 1030095799)\n\t\t+ W(6, -1097279430, 1042495248, 1042236169, -1097154173)\n\t\t+ W(7, 1043003442, -1101596383, -1114855682, 1029691669) + W(8, -1106804175, 1004890268, 1033261211, 1047991146)\n\t\t+ W(9, 1029430153, 1006662138, 1016716693, -1116617969)\n\t\t+ W(10, 1033946762, 1015278793, -1125393239, -1129356209)\n\t\t+ W(11, -1130449529, -1143028884, 1021676019, 1007567766);\n\tWS(1027937136, 1051433372);\n\tsum1 = W(0, 1024223452, -1131494490, 1034208027, -1113660825) + W(1, 1026687777, 1007645322, 1019229306, 1023660333)\n\t\t + W(2, 1027262836, 1034970897, 1041574867, 1051529138) + W(3, 1043759333, 1035492122, 1025216066, 1033175550)\n\t\t + W(4, -1095583884, -1102510757, -1088128354, -1082034838)\n\t\t + W(5, -1107709564, 1021392868, -1116281753, 1019915650)\n\t\t + W(6, 1036904555, 1043230726, 1043513377, -1088109312) + W(7, 1040837474, 1023668834, 1033050768, 1041627229)\n\t\t + W(8, 1037383306, -1126475809, 1038022750, 1049740992) + W(9, 1043020088, 1040579632, 968839375, 1040383308)\n\t\t + W(10, 1026871330, -1131579916, 1022249046, -1121104697)\n\t\t + W(11, 1030621125, -1128113439, 1026071912, 1024084817);\n\tsum2 =\n\t\tW(0, -1122636491, -1114076695, -1122337791, -1121313911) + W(1, 1019616565, 1032037049, -1121846167, 1035628188)\n\t\t+ W(2, 1019704225, 1037288383, 1038646185, -1113812515)\n\t\t+ W(3, -1115379683, -1144905268, -1124810757, -1104091459)\n\t\t+ W(4, 1049771287, 1032297878, 1050229287, 1058219066)\n\t\t+ W(5, -1126947029, -1089173556, -1109798125, -1085784913)\n\t\t+ W(6, -1108218455, 1029534785, 1038576544, 1058416091) + W(7, -1096957025, 1029636273, -1112204367, 1039375301)\n\t\t+ W(8, 1003686724, -1114871835, 1026526587, -1129529893) + W(9, 1020162449, 1011141050, 1015768281, -1169657505)\n\t\t+ W(10, 1007985666, 1019192761, -1146139348, 1021492965)\n\t\t+ W(11, -1131201101, -1129337357, -1117257463, 1026702945);\n\tWS(-1087300279, 1060388257);\n\tsum1 =\n\t\tW(0, -1129462823, 1031115364, -1114720439, 1025637865) + W(1, -1150727557, 1019407412, 1005184420, -1144567588)\n\t\t+ W(2, 1023690092, 1041026294, 1027269348, 1022155151) + W(3, 1032140389, 1019365849, 1035913085, -1142073248)\n\t\t+ W(4, -1095623283, -1092905754, -1093094418, -1092295181)\n\t\t+ W(5, -1091295733, -1094422277, -1097873082, -1089577936)\n\t\t+ W(6, -1106106692, 1045171988, 1058204318, 1060821043) + W(7, 1047241920, 1051757075, 1047453654, 1052799910)\n\t\t+ W(8, 1037669414, -1113959460, -1142625182, 1044954958) + W(9, 1031904715, 1022315054, -1121754201, 1027854342)\n\t\t+ W(10, -1130365587, -1127843579, -1122973026, 1027810288)\n\t\t+ W(11, 1008074737, 1005685302, 1011776124, 1023937224);\n\tsum2 = W(0, -1120594034, -1141459412, -1136839806, 1028313984)\n\t\t + W(1, -1127607807, -1122936307, 1007613018, -1134584398)\n\t\t + W(2, -1166872476, 1004777140, -1113289360, 1013932442)\n\t\t + W(3, 1019995585, -1124945717, -1145964804, -1157638606)\n\t\t + W(4, 1040489823, -1122900789, 1021539093, -1095750682)\n\t\t + W(5, 1045364618, 1031026044, 1033830372, -1125456395)\n\t\t + W(6, -1102509951, -1110936244, 1067324619, 1045560576)\n\t\t + W(7, -1096904945, -1100965201, 1000232964, -1108078168)\n\t\t + W(8, -1086857984, -1095818924, -1093760272, 1065644346)\n\t\t + W(9, -1123950010, 1042979309, -1121148085, 1026162850)\n\t\t + W(10, 1045679794, -1104593759, -1110068744, -1103109579)\n\t\t + W(11, 1034732462, 1018809021, -1152320711, 980148252);\n\tWS(-1090838638, 1050174926);\n\tsum1 = W(0, 1024715784, 1033853293, -1106406969, 1042483832)\n\t\t + W(1, 1025782733, -1138965820, 1038488261, -1139164262) + W(2, -1109115088, 1049593122, 994296459, 1045373935)\n\t\t + W(3, 1015694078, -1112080289, 1045351388, -1114987669)\n\t\t + W(4, -1106716164, -1120751425, -1094496661, -1086184702)\n\t\t + W(5, -1092092861, -1095245812, -1100690449, -1094326222)\n\t\t + W(6, 1038102082, 1051782073, 1043814476, 1058236139) + W(7, 1045378621, 1042079876, 1050438570, 1040938025)\n\t\t + W(8, -1115525408, -1136454131, -1105105482, 1033520471)\n\t\t + W(9, 1029286795, -1106373991, 1034575399, -1122199803)\n\t\t + W(10, 1016756989, 1035169257, -1108133484, 1042591993)\n\t\t + W(11, -1140252101, -1115290814, 1041627941, 1001134058);\n\tsum2 =\n\t\tW(0, 1051544715, 1047565246, 1046232208, -1105592564) + W(1, -1094324661, -1105924841, 1021200095, -1103932050)\n\t\t+ W(2, -1087153288, -1111682644, -1081925443, 1060283907)\n\t\t+ W(3, 1062548140, -1127110112, 1051334754, 1033462267)\n\t\t+ W(4, -1090874159, -1099176408, -1105576760, 1048906709)\n\t\t+ W(5, -1112367085, 1049091960, -1107585156, 1048824237) + W(6, 1047568122, 1032035298, -1119008010, 1036693685)\n\t\t+ W(7, -1119206793, -1158298480, 1036759049, -1114785543)\n\t\t+ W(8, -1111412903, 1040133461, -1140028602, -1107739759)\n\t\t+ W(9, 1044620924, -1096403637, 1046459856, -1114351857)\n\t\t+ W(10, 1034895049, -1131191613, -1112144320, 1040322447)\n\t\t+ W(11, -1130045765, 1011461326, 1012649582, -1111955333);\n\tWS(1039738296, 1044009556);\n\tsum1 = W(0, 1031992376, -1118478209, 1036413734, 1042319122) + W(1, 1025321013, 1019779694, -1126468451, 1028741314)\n\t\t + W(2, -1113116036, -1126664684, 1028656912, -1095949365)\n\t\t + W(3, 1046101634, -1104617834, -1111694091, 1029160593) + W(4, 1058890327, 1042459434, 1054229481, 1057173004)\n\t\t + W(5, 1048940614, 1052520321, 1047137387, 1057385245)\n\t\t + W(6, -1088719167, -1107130859, -1088309806, -1090115281)\n\t\t + W(7, -1090901446, -1096019759, -1098195015, -1090793697)\n\t\t + W(8, 1040542090, -1129453002, 1042227988, -1127816747)\n\t\t + W(9, 1048439133, -1119199044, 1036380619, 1040359505)\n\t\t + W(10, -1107110028, 1036863629, -1133301245, -1121635021)\n\t\t + W(11, -1120611033, 1022364232, -1108092830, -1129794251);\n\tsum2 = W(0, -1088996856, -1089163817, -1081345153, -1080285142)\n\t\t + W(1, -1079794071, -1089981167, -1091438196, -1099490886)\n\t\t + W(2, 1009251693, -1107842867, -1124806950, 1052635731)\n\t\t + W(3, -1106464080, -1125456570, -1115606726, -1106662163)\n\t\t + W(4, 1062110924, 1057525018, 1064189433, 1067630395) + W(5, 1063058829, 1062842970, 1054193960, 1053790298)\n\t\t + W(6, -1115283476, 1042234988, -1104109471, -1112028150)\n\t\t + W(7, -1113992476, 1045262592, 1042247754, -1104249669)\n\t\t + W(8, 1030923639, 1032774718, -1126776930, 1034769026)\n\t\t + W(9, -1106165885, -1136163037, 1032379012, -1108359351)\n\t\t + W(10, 1034262626, -1123202523, -1130902850, 1036915346)\n\t\t + W(11, -1110986466, 1035294670, -1135519157, 1024576891);\n\tWS(-1096394862, 1050867114);\n\tsum1 =\n\t\tW(0, 975777376, 1035680965, 1017323049, -1164976624) + W(1, -1126109949, -1117859264, 1011370603, -1122131819)\n\t\t+ W(2, 1011677768, -1097606072, 1017467204, -1122057965)\n\t\t+ W(3, 1039142936, -1137149130, 1023416416, -1112401517) + W(4, 1050217928, 1041761501, 1059053443, -1098739346)\n\t\t+ W(5, -1089683010, -1104430516, -1115445691, 1042596520)\n\t\t+ W(6, -1095631255, -1108785275, -1088500104, -1111108333)\n\t\t+ W(7, 1062642602, 1040456976, 1016594173, -1120553683) + W(8, -1105375964, 1035556439, 1042635014, 1025006046)\n\t\t+ W(9, 1038036638, 1027021261, 1041295544, 1029575724) + W(10, 1033079080, -1107649602, 1020084753, -1112750027)\n\t\t+ W(11, -1142614292, 1017623258, -1113983747, -1124248029);\n\tsum2 =\n\t\tW(0, -1131210775, 1024840523, 1024067225, 1022860453) + W(1, -1125865258, -1130239171, 1024964869, -1117571915)\n\t\t+ W(2, 1029829507, -1108448221, 1046565608, -1107856867)\n\t\t+ W(3, 1042031083, -1106481128, -1127390051, -1124576676)\n\t\t+ W(4, 1018275001, -1117395779, 1042461338, -1092962046) + W(5, 1053212914, -1102214835, -1114692565, 991892650)\n\t\t+ W(6, -1122984086, -1132016729, 1059140985, -1089805596)\n\t\t+ W(7, 1058514952, 1027704725, -1118917379, 1032905776)\n\t\t+ W(8, -1096338526, -1114466007, -1107995649, -1166014069)\n\t\t+ W(9, 1052927486, 1041713274, 1037010892, 1032336370)\n\t\t+ W(10, 1033255054, -1103146109, -1119288636, -1099911282)\n\t\t+ W(11, -1113255745, -1106771914, -1111017176, 1000523989);\n\tWS(-1112511928, 1031640207);\n\tsum1 =\n\t\tW(0, 1037301926, -1130112569, -1119711398, 1044751592) + W(1, -1102628100, 1042267541, 1021159833, -1122521821)\n\t\t+ W(2, -1102373753, 1048837234, -1091456672, 1045582560)\n\t\t+ W(3, -1119033858, -1093436941, 1050238014, -1100593739) + W(4, 1058068053, 1051625169, 1054040787, 1044375881)\n\t\t+ W(5, 1057193534, 1051238780, 1045936610, 1058222955)\n\t\t+ W(6, -1091912761, -1095738529, -1101742756, -1090186767)\n\t\t+ W(7, -1090190311, -1110077161, -1098844722, -1090967581)\n\t\t+ W(8, 1030698115, 1045615952, -1104227307, 1051640030) + W(9, -1111999463, 1008998972, 1050341641, -1108465231)\n\t\t+ W(10, -1112730073, 1045904421, -1098654019, -1111879892)\n\t\t+ W(11, -1123401908, -1101737376, 1043894710, -1112695488);\n\tsum2 =\n\t\tW(0, 1016218439, 1009444234, -1111008440, 1026480303) + W(1, 1015374231, -1115006890, 1027237715, -1122692269)\n\t\t+ W(2, 1024549194, -1117974589, 1042315856, -1106327815) + W(3, 1040022175, 1025059842, -1110870197, 1033099318)\n\t\t+ W(4, -1121292007, -1111737758, 1047393563, -1089871257)\n\t\t+ W(5, -1115783084, 1043300713, -1103999090, 1022298131)\n\t\t+ W(6, 1037076368, -1110249739, -1086831522, -1069929292)\n\t\t+ W(7, -1085683537, 1033002057, 1033912191, 1032775289) + W(8, -1112700443, 1020335555, 1038599637, -1111547810)\n\t\t+ W(9, 1049254465, -1118960414, -1118358651, -1104218510)\n\t\t+ W(10, 1032984152, -1112172263, 1060801772, 1079084175)\n\t\t+ W(11, 1057876572, 1033693800, -1104475663, 1045399536);\n\tWS(-1106120924, 1033431669);\n\tsum1 = W(0, 1016553159, -1146851238, 1024375743, 1026515514) + W(1, 1005429062, 1029812010, 1008887700, 1021177962)\n\t\t + W(2, 1035990878, 1041817850, 1041767260, 1047579686) + W(3, 1031819293, 1026577053, 1014785832, 1011005202)\n\t\t + W(4, -1101729723, 1024013341, -1116899488, -1085522812)\n\t\t + W(5, -1090064383, -1118087802, -1126747713, 1025078601)\n\t\t + W(6, 1042266392, 1027850273, 977256084, -1090381288) + W(7, 1048109660, -1113190325, 1024173993, -1127218683)\n\t\t + W(8, 1024064284, 1026394008, 990294084, 1048833585) + W(9, 1038017843, 1040657490, 1020235411, 1041410670)\n\t\t + W(10, 1018305971, 1021653787, 996614956, -1125739905)\n\t\t + W(11, 1016883609, -1121801815, 1027952623, -1132785763);\n\tsum2 =\n\t\tW(0, 1032555846, 1019641904, 1015684488, -1123545328) + W(1, -1118308408, -1117707424, -1137876352, -1152988290)\n\t\t+ W(2, -1110721648, -1116342888, -1102693078, 1027573888) + W(3, 1043950970, 1021888896, 1007632640, 1023916088)\n\t\t+ W(4, -1094136567, -1089264280, -1097199465, 1056898914) + W(5, 1037769558, 1041236542, 1026403708, 1046276806)\n\t\t+ W(6, 1030929664, -1112511004, 1046449598, 1052843165)\n\t\t+ W(7, 1024674316, -1109778580, -1123597216, -1105717038)\n\t\t+ W(8, -1146526593, 1032788860, 1012812816, 1033507644) + W(9, -1106559340, 1017687520, 1028523456, -1122312832)\n\t\t+ W(10, 1018020888, -1125819008, 1004426241, -1122415072)\n\t\t+ W(11, 1028547840, 996318210, -1149117889, -1132920416);\n\tWS(1034973624, 1056792353);\n\tsum1 = W(0, -1120658336, -1121055921, -1128295926, 1021962732)\n\t\t + W(1, -1127490506, -1119904327, -1122942113, -1119710033)\n\t\t + W(2, -1130821617, -1114464179, -1106629009, -1093463666)\n\t\t + W(3, -1097245927, -1132912612, -1118132038, -1115274080)\n\t\t + W(4, -1114903379, -1125024178, 1008426736, 1062068439)\n\t\t + W(5, 1050479246, -1107542555, 1028006365, 1025872901)\n\t\t + W(6, -1130597942, -1102939831, -1118485143, 1067744046)\n\t\t + W(7, 1049107361, 1045213129, -1113875250, 1036565277)\n\t\t + W(8, -1109039532, -1115164458, -1104109440, -1094141737)\n\t\t + W(9, -1105858697, -1119937620, -1141854766, -1121170098)\n\t\t + W(10, -1124529164, -1124681556, -1138254780, 993935312)\n\t\t + W(11, -1132704804, -1120970067, -1122550700, -1120520661);\n\tsum2 =\n\t\tW(0, 1020401308, 1017661559, -1129375401, -1130735541)\n\t\t+ W(1, -1146688164, -1166762145, -1130185789, -1137125822)\n\t\t+ W(2, -1120501349, 996214904, -1140432422, 1024553914) + W(3, 1006774606, -1124013507, 1033491675, -1117903931)\n\t\t+ W(4, 1037264768, -1116129767, 1035443152, 1051779064) + W(5, 1039827062, 1025600009, -1114545658, 1032817572)\n\t\t+ W(6, -1090330474, -1084580575, -1097846115, 1064606263)\n\t\t+ W(7, 1048687051, 1019182043, -1117487855, 1037037513) + W(8, -1105802125, 1032645479, -1102145888, 1038402436)\n\t\t+ W(9, 1000828364, 1025151371, 1028059566, -1112238814)\n\t\t+ W(10, 1023925581, -1119976615, 1025111856, -1136822486)\n\t\t+ W(11, -1121332237, 1015612208, -1119338761, 999461036);\n\tWS(-1082445367, -1085006700);\n\tsum1 = W(0, -1131835086, 1034878908, -1106661648, 1037617118)\n\t\t + W(1, -1121819052, 1022066011, 1036207796, 1033542412) + W(2, 1041974800, 1043293403, 1042063924, 1045196135)\n\t\t + W(3, 1037212703, -1105403448, 1046411795, -1100599618)\n\t\t + W(4, -1081109875, -1092276724, -1086386347, -1094524616)\n\t\t + W(5, -1094507255, -1104988703, -1105674409, -1096619449)\n\t\t + W(6, 1054173212, 1051286356, 1055927462, 1058619216) + W(7, 1050138098, 1028915053, 1041419787, -1130824962)\n\t\t + W(8, 1035072463, 1034209806, -1114712644, 1036390662) + W(9, 1015171028, -1139447658, 1026111277, 1045523870)\n\t\t + W(10, -1137431795, 1038048136, -1110863483, 1042877649)\n\t\t + W(11, -1123146704, -1114994477, 1040360493, -1121943708);\n\tsum2 =\n\t\tW(0, -1112963339, 1025676326, -1117465202, 1036266015) + W(1, -1124864900, 1019242508, 1017632828, 1039721851)\n\t\t+ W(2, 1043137200, 1000796272, 993751520, -1098528956) + W(3, 1032573075, -1097473255, 1049454991, -1090503899)\n\t\t+ W(4, 1014823768, 1031859059, 1020211292, 1055374057) + W(5, 986723264, -1125510524, -1111044051, 1007293144)\n\t\t+ W(6, -1089890678, -1102855534, 1018575516, 1061198225) + W(7, 1038055959, 1050136287, -1109681619, 1054985311)\n\t\t+ W(8, 1022229356, 1031913791, -1120060570, -1098119563)\n\t\t+ W(9, -1106568385, -1098582022, 1030233630, -1101215648)\n\t\t+ W(10, -1128614108, 1018516204, -1138611816, 1020738140)\n\t\t+ W(11, -1132953832, -1123833514, 1035860627, -1110059149);\n\tWS(-1089141943, 1068474134);\n\tsum1 =\n\t\tW(0, 1024130588, -1101143803, 1039148539, -1124204515) + W(1, 1026773217, 1018218693, -1104179471, -1123573325)\n\t\t+ W(2, -1121972404, 1041396360, -1105946681, 1052602058)\n\t\t+ W(3, -1091638882, 1032280890, 1041946144, -1138642417)\n\t\t+ W(4, 1032495505, 1045416789, -1106461946, -1094942270) + W(5, 1059099726, -1106993164, 1045088278, 1009482242)\n\t\t+ W(6, 1036801227, -1094238571, 1057861426, -1098420551) + W(7, 1040764762, 1033290001, -1105244536, 1037819035)\n\t\t+ W(8, -1117579092, 1039470024, -1113046718, 1047303536)\n\t\t+ W(9, -1094617668, 1040300696, -1110195745, -1108347351)\n\t\t+ W(10, -1114425265, 1024684838, -1108918837, -1127532529)\n\t\t+ W(11, 1027200645, -1103088708, 1043167338, -1116739793);\n\tsum2 = W(0, 1016644168, 998892514, -1116049462, 1033248586) + W(1, -1110140123, 1041609896, -1103095555, 1030835892)\n\t\t + W(2, -1134771145, -1114282184, 1042383274, 1025008594)\n\t\t + W(3, -1104878488, -1101611481, 1048842205, -1122288558)\n\t\t + W(4, -1129326838, 1049635340, -1147070546, -1102476512)\n\t\t + W(5, -1090718582, 1046973498, -1115539252, 1028769716)\n\t\t + W(6, -1114142714, -1101404122, -1095734150, 1060588986)\n\t\t + W(7, 1052949499, -1143476482, -1110997031, 1022411808)\n\t\t + W(8, 1012771369, -1114952606, 1057697290, -1111850310)\n\t\t + W(9, -1096580248, -1114336646, 1031782132, -1118966953)\n\t\t + W(10, 1025799488, 1041138771, -1095991584, 1027653952)\n\t\t + W(11, -1127102864, 1035005082, 992902692, -1120028296);\n\tWS(1055908206, 1023803300);\n\tsum1 = W(0, 1033033649, -1128828388, 1027156540, 1024886583)\n\t\t + W(1, -1122498726, 1032744244, -1114524705, 1005980052)\n\t\t + W(2, -1114766205, 1011459483, -1106069078, -1116675477)\n\t\t + W(3, -1116893112, 1045609495, -1113403236, 1049123968) + W(4, 1059767687, 1054454099, 1057986836, 1059734148)\n\t\t + W(5, 1056528229, 1043829406, 1047712168, 1049516377)\n\t\t + W(6, -1093070812, -1094569204, -1086765600, -1090099632)\n\t\t + W(7, -1094363024, -1102732570, -1103438026, -1098493775)\n\t\t + W(8, -1106762950, 1029622486, 991938588, -1098865153)\n\t\t + W(9, -1101593593, -1139103892, 1022039246, -1097177334)\n\t\t + W(10, -1139512861, 1016172182, 1027600816, 1027525694)\n\t\t + W(11, -1135964969, 1036132330, -1117700205, 1035501771);\n\tsum2 = W(0, 1025334517, -1115143239, -1112308287, -1115511381)\n\t\t + W(1, 1042864237, 1031444191, 1040795754, -1111573417) + W(2, 1052224655, 1029199567, 1050599738, -1137182696)\n\t\t + W(3, -1101494467, -1094150391, -1116631442, -1092627938)\n\t\t + W(4, -1085507535, -1092254017, -1091835304, 1050309385)\n\t\t + W(5, 1052849573, 1058681981, -1093246396, 1066882777)\n\t\t + W(6, -1083097675, -1079915962, -1078367265, -1085955474)\n\t\t + W(7, 1077549274, 1068550083, 1054678659, 1059124396)\n\t\t + W(8, -1097828858, -1092877982, -1101001669, 1031547399)\n\t\t + W(9, 974314816, -1100178328, 1046838481, -1088438520) + W(10, 1062578782, 1029921983, 1036651638, 1017725718)\n\t\t + W(11, -1103762806, -1106558945, 1039431488, -1098096651);\n\tWS(-1078207964, -1098790270);\n\tsum1 =\n\t\tW(0, -1117816013, 1039615439, 1040159636, 1032454162) + W(1, 1029735698, 1026856980, -1128361629, 1002339317)\n\t\t+ W(2, 1017293260, -1121106131, -1098516348, -1100564368)\n\t\t+ W(3, -1142189601, -1115831559, -1129405415, -1114960439)\n\t\t+ W(4, 1049047675, -1100078274, 1057717203, 1041647209) + W(5, -1090236946, 1041839801, -1114821509, 1034781465)\n\t\t+ W(6, -1100878354, 1049964833, -1094050686, -1119951725)\n\t\t+ W(7, 1052197359, -1110599850, 1009705546, 1020602063) + W(8, 1032784131, -1107321921, 1040450075, -1099964381)\n\t\t+ W(9, -1116032848, 1034137049, 1036993018, 993360895) + W(10, -1126192007, -1122801847, 1034337038, 1014677674)\n\t\t+ W(11, 1028031798, 1027844545, -1121696025, -1130484229);\n\tsum2 =\n\t\tW(0, 1025029135, -1115606678, -1098891737, -1111864983) + W(1, -1112278329, 1017169741, -1123958951, 1031819582)\n\t\t+ W(2, -1104367710, -1132455965, 1054704406, 1035843132)\n\t\t+ W(3, 1038310704, 1037432870, -1137648567, -1122384617)\n\t\t+ W(4, -1119205162, 1051294613, -1118431701, 1040638061) + W(5, 1033551568, -1095570314, 1040693441, 1008777251)\n\t\t+ W(6, 1051361304, -1090262380, -1094584814, 1042639742) + W(7, 1042180969, 1054301740, 1006683771, 1032304440)\n\t\t+ W(8, -1097951274, 1046775583, -1111734067, -1115582191)\n\t\t+ W(9, -1116801751, -1102111461, -1108749213, -1103720876)\n\t\t+ W(10, 1037239658, 1027534783, -1137589907, -1161598998)\n\t\t+ W(11, -1113612863, -1137659371, 1017443081, 1038413214);\n\tWS(1060561207, -1110135205);\n\tsum1 = W(0, -1114856118, -1124131449, -1121034566, -1112340961)\n\t\t + W(1, -1112123800, 1034679769, -1115322038, -1107671902)\n\t\t + W(2, 1049197464, -1108658488, 1041962623, 1047635080) + W(3, 1029521634, 1045001085, 1019494819, 1038785126)\n\t\t + W(4, -1091745710, -1095755605, -1091090769, -1089785676)\n\t\t + W(5, -1088312300, -1105390912, -1095959893, -1089779917)\n\t\t + W(6, 1057921518, 1045522218, 1055093690, 1056738433) + W(7, 1057086969, 1048793054, 1049205462, 1057170552)\n\t\t + W(8, 1045672489, -1100746808, 1019645080, -1111234056)\n\t\t + W(9, -1095870350, 1047514180, -1099214252, 1022895484)\n\t\t + W(10, 1021270499, -1112929307, -1157317541, 1036938084)\n\t\t + W(11, -1148757666, 1026507103, 1019330670, 1029094240);\n\tsum2 =\n\t\tW(0, -1110883135, -1122184691, 1008834310, 1033395903) + W(1, -1110716892, 1024095030, -1113505190, -1113542640)\n\t\t+ W(2, 1041894205, -1115970606, 982318965, 1040255170) + W(3, -1134396672, 1031402202, -1121857157, 1031923695)\n\t\t+ W(4, -1114700148, -1118217955, -1097954058, -1109327580)\n\t\t+ W(5, -1107386491, -1114148625, -1116084956, -1128842340)\n\t\t+ W(6, -1082032478, -1081043792, -1085641610, -1095688614)\n\t\t+ W(7, -1084362127, -1093205100, -1087863650, -1094939475)\n\t\t+ W(8, 1046875162, 1049320576, 982336213, -1107088758) + W(9, 1032307660, -1122373488, 1045820748, 1044473869)\n\t\t+ W(10, 1064081845, 1059051295, 1064706681, 1066526360) + W(11, 1060847547, 1058657081, 1055302318, 1041403755);\n\tWS(-1088848183, -1091270356);\n\tsum1 = W(0, -1113444636, -1127291412, -1131637032, -1105736260)\n\t\t + W(1, 1030983166, -1127378047, 1037357901, -1115666437) + W(2, 1022583331, 1011517178, 1047190142, 1040877723)\n\t\t + W(3, 1035565944, -1097520394, -1114602800, -1108205485)\n\t\t + W(4, -1092936920, -1094397598, -1092945549, -1086200137)\n\t\t + W(5, -1102025475, -1104020948, -1116833526, -1102830535)\n\t\t + W(6, 1050793382, 1055228191, 1056457416, 1051083611) + W(7, 1056969730, 1051399464, 1044492479, 1047811509)\n\t\t + W(8, 1035173048, -1112816343, 1039723405, 1039289519)\n\t\t + W(9, 1015654008, -1108815670, -1116817631, 1032741190)\n\t\t + W(10, -1115063927, 1007040780, -1118782984, -1114815627)\n\t\t + W(11, 998545680, -1127143385, 1025703109, -1123886254);\n\tsum2 =\n\t\tW(0, 1023906737, -1110646223, -1119411664, 1010017751) + W(1, -1108429461, 1029589423, -1110439418, -1125097343)\n\t\t+ W(2, 1067295699, 1065087692, 1065459703, -1118952488)\n\t\t+ W(3, -1081475488, -1083105366, -1095503285, -1083389324)\n\t\t+ W(4, -1081442287, -1085042817, -1083251842, 1050008558) + W(5, 1064700095, 1064469883, 1057972141, 1061045473)\n\t\t+ W(6, -1097077469, 1037915281, -1096872835, -1110920551)\n\t\t+ W(7, 1006981249, 1036080906, -1106015672, 1051761632) + W(8, 1029195957, 1015927544, 1018101230, 1042598936)\n\t\t+ W(9, -1103158035, 1041992018, -1108943564, -1114827780)\n\t\t+ W(10, 1026431960, -1132623721, 1018762696, -1124571002)\n\t\t+ W(11, 1020104602, -1114107558, 1036691137, -1119006739);\n\tWS(1034259896, 1039623341);\n\tsum1 = W(0, 1016878676, 1028460795, 1034359235, 1011385345) + W(1, 1015855070, 1016831138, -1128588247, 1025908283)\n\t\t + W(2, -1137539339, -1104998988, -1129847248, 1015052988)\n\t\t + W(3, 1032818160, 1044006969, 1033445320, 1043524531) + W(4, 1055868742, 1047938201, 1058114664, 1043619008)\n\t\t + W(5, -1096687428, -1092418872, -1100196186, -1095896370)\n\t\t + W(6, -1088089066, -1091378989, -1090213650, -1114958501)\n\t\t + W(7, 1054476715, 1049053750, 1040121848, 1044746961) + W(8, 1043298073, 1036240559, 1043122195, -1119276751)\n\t\t + W(9, -1110579607, -1101201217, -1106781444, 1018213241)\n\t\t + W(10, 984347141, -1121755284, 932956556, 1018241806)\n\t\t + W(11, 1026808723, 1034235663, 1010316760, -1120101215);\n\tsum2 = W(0, 951810592, 1033659165, 1002259560, 1037243759) + W(1, -1112310958, 1034753865, 992340497, -1114454490)\n\t\t + W(2, -1108037836, -1102042508, -1103529440, -1102191435)\n\t\t + W(3, -1111056455, -1119026649, -1101647251, 1024637657)\n\t\t + W(4, -1092018666, -1107310314, -1101738099, 1066447662)\n\t\t + W(5, 1032823775, 1031795157, 1040899047, 1046257437) + W(6, -1130209970, -1115641842, 1041635941, 1067062587)\n\t\t + W(7, -1098661250, -1099014553, -1117726225, -1111013301)\n\t\t + W(8, 1022643242, -1110096702, 1034513697, -1100161415)\n\t\t + W(9, 1027860693, -1096684817, -1114962434, -1112982645)\n\t\t + W(10, 1009312276, 1032067593, -1114108683, 1041326077)\n\t\t + W(11, -1120382671, 1026651225, 1038338139, -1106704138);\n\tWS(-1096556910, 1067967914);\n\tsum1 =\n\t\tW(0, 1032707155, 1024354487, -1131915011, 1043480447) + W(1, -1118942187, -1132633269, 1031302952, 1031513592)\n\t\t+ W(2, -1122886335, 1031668012, 1021347526, 1041914807) + W(3, 1036630543, 1034774528, -1125222297, -1106257250)\n\t\t+ W(4, -1095119782, -1103532312, -1095435756, -1090836352)\n\t\t+ W(5, -1091218783, -1104917967, -1100801113, -1104067043)\n\t\t+ W(6, 1055235700, 1048353625, 1044387963, 1053060297) + W(7, 1041581564, 1052242886, 1033613430, 1050269976)\n\t\t+ W(8, -1120012638, -1105977207, -1105830818, -1133082414)\n\t\t+ W(9, 1017318739, -1121967338, -1130484760, -1109204860)\n\t\t+ W(10, 1031514684, -1126996321, -1116416117, 1043128001)\n\t\t+ W(11, -1110350280, 1039162573, -1148985233, 1034839630);\n\tsum2 = W(0, -1125934657, -1120747465, -1126946517, 1019390634)\n\t\t + W(1, -1140291646, 1045993569, -1110717499, 1038335355)\n\t\t + W(2, 1041393774, 1032139854, -1107151652, 1046075673)\n\t\t + W(3, -1090083756, 1024325836, -1116058677, -1097350707)\n\t\t + W(4, -1097497496, -1114660789, -1096477783, 1057927405)\n\t\t + W(5, -1110210473, -1137735680, 1033250412, -1127153776)\n\t\t + W(6, 1047775001, -1105604596, 1048515105, 1059160295) + W(7, 1043731078, 1039621515, -1116506490, 987432265)\n\t\t + W(8, -1131783044, 1018330620, -1096755902, 1041946221)\n\t\t + W(9, -1091797353, 1046026631, -1106745231, -1124643180)\n\t\t + W(10, -1122059316, -1129241452, -1147658728, 1011994599)\n\t\t + W(11, 1032850220, -1126091098, 1009337229, -1124186068);\n\tWS(1061843767, -1077951557);\n\tsum1 =\n\t\tW(0, 1026388735, -1120114128, 1037862893, 1029309653) + W(1, 1036389538, -1122000006, -1126306304, 1030215888)\n\t\t+ W(2, -1106366502, -1131166601, 1029755951, -1091391038)\n\t\t+ W(3, 1048316317, -1099454574, -1106178153, 1034019808) + W(4, 1059311576, 1043697070, 1054385928, 1057568381)\n\t\t+ W(5, 1054220568, 1049723715, 1050234615, 1058416302)\n\t\t+ W(6, -1088217072, -1105977039, -1091419383, -1089136642)\n\t\t+ W(7, -1092475601, -1095416897, -1096877448, -1091809363)\n\t\t+ W(8, 1041378862, -1130669927, 1047467576, -1111164306) + W(9, 1053509792, -1108260705, 1038585474, 1045917860)\n\t\t+ W(10, -1102542817, 1039925540, 989452730, -1105668215)\n\t\t+ W(11, -1138232735, -1130981221, -1107228323, -1116719540);\n\tsum2 = W(0, 1061533858, 1062451832, 1068272760, 1070735043) + W(1, 1070929067, 1058522058, 1059576348, 1052624489)\n\t\t + W(2, 1041546460, 1044663473, 1019905335, -1103665132) + W(3, 1027882908, 1053579543, 1030217484, 1042937819)\n\t\t + W(4, -1081881922, -1084977950, -1081565785, -1079025547)\n\t\t + W(5, -1082597652, -1079765468, -1088759123, -1090364693)\n\t\t + W(6, -1104625991, -1116240264, -1115490290, -1094934042)\n\t\t + W(7, 1002519540, -1096683616, -1103272320, 1039524167)\n\t\t + W(8, 1020257203, -1107478927, 1038097782, -1129735749) + W(9, 1043320870, 997759194, -1110736144, 1041293151)\n\t\t + W(10, -1112819836, -1146254682, 1018218872, -1108448519)\n\t\t + W(11, 1032555484, -1111378699, 1018278443, -1120119454);\n\tWS(-1084224055, -1088316584);\n\tsum1 = W(0, -1113613001, 1003388692, -1106869627, 1016662735) + W(1, 1022316973, -1136760929, 1028746387, 984919127)\n\t\t + W(2, -1107673717, 1028109079, 1012698375, 1027116933)\n\t\t + W(3, -1094644889, 1023495179, -1107590588, 1024116594)\n\t\t + W(4, 1006747746, -1098426505, -1088923256, -1097246285)\n\t\t + W(5, 1057877820, 1033746004, 1041863252, 1022736621) + W(6, 1039555654, 1048291572, 1059475506, 1054502102)\n\t\t + W(7, -1093203288, -1098003683, -1105649846, -1114921814)\n\t\t + W(8, 1033838821, 1024741190, -1120760050, 1019707757) + W(9, 1048977331, 1036081339, 1041797102, -1127589064)\n\t\t + W(10, -1159624430, -1124153911, 1033833840, 1010228666)\n\t\t + W(11, -1114819581, -1110624834, -1119454813, -1122201606);\n\tsum2 =\n\t\tW(0, 1015245257, -1113948506, -1130594159, 1007533655)\n\t\t+ W(1, -1122336092, -1131246557, -1121042747, -1112003767)\n\t\t+ W(2, -1113301472, -1150409563, -1113241340, 988101766) + W(3, -1114338752, 1042344950, 1024929700, 1034588627)\n\t\t+ W(4, -1126889814, 1027745966, 1053517180, -1115083078) + W(5, -1120298083, 1009652067, 1023796132, 1015099871)\n\t\t+ W(6, -1122805777, -1121614859, 1035094088, -1117590123) + W(7, 1041346715, 1010321235, 1022595647, 1021357977)\n\t\t+ W(8, 1024783162, 1024732276, 1035927962, 1033594898)\n\t\t+ W(9, -1136757529, -1112303516, -1107129305, -1116844702)\n\t\t+ W(10, -1125306444, -1120982285, -1117285071, -1115586407)\n\t\t+ W(11, -1179946326, -1122655190, 1031780006, -1109817399);\n\tWS(1056759150, 1060224665);\n\tsum1 =\n\t\tW(0, -1139374311, 995010733, -1111414410, -1108849608) + W(1, 1028987391, 1016981889, -1123115291, -1129401942)\n\t\t+ W(2, -1132085157, 1023919167, 1047983919, 1035204919) + W(3, 1044747100, 1009635916, 1026679904, -1133052010)\n\t\t+ W(4, -1099925456, -1105275165, -1089721802, 1047380996)\n\t\t+ W(5, -1111752399, -1106656308, -1119632759, -1103728616)\n\t\t+ W(6, 1041263149, -1143162806, 1045591848, 1054640011) + W(7, -1086265361, 1052567064, -1119813375, 1036660778)\n\t\t+ W(8, 1033127353, 1020125661, 1047176279, -1109178223) + W(9, 1047077327, 1025513390, 1020940735, 1026259564)\n\t\t+ W(10, -1131329248, -1128574472, -1124813330, -1115433611)\n\t\t+ W(11, 1014274699, -1114033239, -1135589654, -1154487021);\n\tsum2 =\n\t\tW(0, 1023227060, 1023565277, 1023373012, -1127246210) + W(1, 1035525242, -1115895934, 1032252451, -1115664904)\n\t\t+ W(2, -1114834111, -1123243930, -1110717616, -1119831250)\n\t\t+ W(3, 995075850, -1112704991, -1137853837, -1177558227)\n\t\t+ W(4, -1123255684, 1036838581, -1121973236, -1128787384)\n\t\t+ W(5, -1106791563, 1017209933, 1025363014, -1117762720)\n\t\t+ W(6, -1111609489, -1109001470, -1106028739, 1068968933)\n\t\t+ W(7, -1084327071, 1049794788, -1103092626, 1033559138) + W(8, 1029177075, 1046335474, 1040383540, -1085459757)\n\t\t+ W(9, 1055427968, -1106438120, 1039281515, -1108939748)\n\t\t+ W(10, 1009084849, -1110362282, 1030364025, 1038001226)\n\t\t+ W(11, 1004844681, -1109625554, 1026824663, 1027051057);\n\tWS(1059198391, -1114206899);\n\tsum1 =\n\t\tW(0, -1123230572, 1033309054, -1136657179, 1042361008) + W(1, -1127872354, 1026831155, 1034821095, 1027013917)\n\t\t+ W(2, 1047908609, -1113872057, -1131612168, 1032838544) + W(3, 1018582917, 1025662981, -1122684754, 1042918755)\n\t\t+ W(4, -1086695351, 1005036838, 1053830093, 1063074340) + W(5, 1022976638, 1048968528, 1037218004, 1045668084)\n\t\t+ W(6, -1111534963, -1127426130, -1097279138, 1032841926)\n\t\t+ W(7, -1102974814, -1086802103, -1094977286, -1080167184)\n\t\t+ W(8, 1041894153, 1035651728, -1114797926, 1042266564) + W(9, 1036160183, 1043048448, 1028546130, 1051954532)\n\t\t+ W(10, -1168813170, 1029018614, 1015674230, -1115081892)\n\t\t+ W(11, 1022213546, -1119589535, 1023015663, -1121567905);\n\tsum2 = W(0, -1109294951, 1044771761, -1106240469, 1037653814)\n\t\t + W(1, -1132138943, -1129034439, 1027920896, -1126749735)\n\t\t + W(2, -1116747636, -1095594447, -1091993541, -1098134808)\n\t\t + W(3, 1045429231, -1112675284, 1030264036, 1027709116) + W(4, 1053044316, -1102224225, 1065361960, 1060397410)\n\t\t + W(5, -1095097189, -1139768526, -1100471477, -1095674438)\n\t\t + W(6, -1093594252, 1044254591, -1103264547, 1059446961)\n\t\t + W(7, 1053539276, -1147713757, -1115698004, -1131922215)\n\t\t + W(8, -1105874671, -1148207325, -1098859579, -1110887683)\n\t\t + W(9, -1103270924, 1018090127, -1105560593, 1044415945)\n\t\t + W(10, 1036768486, -1122217612, 1038496462, -1106764847)\n\t\t + W(11, 1035231626, -1112984312, 1037287074, -1106415399);\n\tWS(-1081905372, 1072993545);\n\tsum1 =\n\t\tW(0, 1004609681, -1113931058, 1017897178, -1110350900) + W(1, -1119842647, 1029593625, -1114320538, 1026419555)\n\t\t+ W(2, -1111485397, 1044870886, -1101161424, 1042868018) + W(3, 1016958866, 1036666966, 1034341084, -1123516147)\n\t\t+ W(4, -1100618406, -1103601459, -1117978262, -1088871615)\n\t\t+ W(5, -1096217303, -1090419947, -1105396084, -1100180286)\n\t\t+ W(6, 1052555682, 1050421002, 1053397115, 1057434595) + W(7, 1037835279, 1054502387, 1036260396, 1041011339)\n\t\t+ W(8, -1113666277, -1125853837, -1109207833, -1108715676)\n\t\t+ W(9, 1041223333, -1131918060, 1046093262, -1108472674)\n\t\t+ W(10, -1113131956, -1119475260, -1119057377, -1116054255)\n\t\t+ W(11, 1033629886, 1019600139, 1034832815, 1025124935);\n\tsum2 = W(0, 1027207918, -1131003531, -1155176792, -1144704129)\n\t\t + W(1, -1120277627, 1018692534, -1122116985, 1016313728)\n\t\t + W(2, -1134820995, 1019005665, 1018656479, 1016837667) + W(3, -1133755465, 1007330736, 1008190855, 1024160458)\n\t\t + W(4, -1123507780, 992028222, 1020777698, -1093100477) + W(5, -1106617270, 1026210395, 1015481059, 1009441727)\n\t\t + W(6, 1022927690, 1039006609, -1108026125, -1075529389)\n\t\t + W(7, -1071234400, -1098388857, 1043410538, -1127804151)\n\t\t + W(8, -1148644129, -1114458430, 985006155, -1165905039) + W(9, 1009164120, 1080134310, 1068769301, 1038162442)\n\t\t + W(10, -1124904791, 1019252639, 1019665619, -1148497627)\n\t\t + W(11, -1154476856, 1041946375, -1120913968, -1102924087);\n\tWS(1052536174, -1151096569);\n\tsum1 = W(0, 991116371, 1033302347, -1116642336, -1115536654)\n\t\t + W(1, 1020657940, -1114833734, 1031490598, -1158391502)\n\t\t + W(2, -1128173243, -1146822742, 1036050892, 1034768509)\n\t\t + W(3, -1102372039, 1030675614, -1114628406, 1032401267)\n\t\t + W(4, -1103836723, 1034951935, -1087917523, -1106200391)\n\t\t + W(5, 1061554222, 1041046871, 1046795201, 1027714602) + W(6, 1032573088, -1120898050, 1057405287, -1120590821)\n\t\t + W(7, -1082912644, 1002819162, -1124848916, -1124036191)\n\t\t + W(8, 999976938, -1138114279, -1098834165, -1118223722)\n\t\t + W(9, 1047922098, -1107937520, 1038688870, -1118805976) + W(10, 1037991630, 1035558856, 1042054293, 986260550)\n\t\t + W(11, -1130396508, 1023135729, -1142052488, -1177279769);\n\tsum2 = W(0, 1035223119, -1127800761, 1038890181, 1028905699) + W(1, 994981383, -1127955051, 998786660, -1121293280)\n\t\t + W(2, 1038869307, 1034423710, -1109261585, -1095895125)\n\t\t + W(3, -1098712671, 1032845262, 1030375171, -1114148994)\n\t\t + W(4, -1108836158, -1116666352, -1087753137, 1061176216)\n\t\t + W(5, -1099737664, -1208820627, -1126035264, 1042226462)\n\t\t + W(6, -1105867416, -1109342419, 1027333841, 1057224086)\n\t\t + W(7, 1049674522, 1011854042, 1017325847, -1120003540)\n\t\t + W(8, -1106282608, 1047028407, -1148256348, -1148022324)\n\t\t + W(9, -1103462952, 1043242553, -1121350765, -1117125009)\n\t\t + W(10, 1028503999, -1119414296, -1113209005, 1010099974)\n\t\t + W(11, 1020393479, -1115953239, 1024565993, 1001260628);\n\tWS(1058902967, -1081860445);\n\tsum1 =\n\t\tW(0, -1121371387, 1029881036, 992316765, -1117974353) + W(1, 1019164800, -1115308289, 1031905998, -1118946572)\n\t\t+ W(2, -1116017491, -1110722656, -1103068528, -1120254383)\n\t\t+ W(3, -1111729689, -1123116948, -1110978129, 1027465948)\n\t\t+ W(4, -1114517185, -1096281750, -1110556335, -1087192661)\n\t\t+ W(5, -1138608617, -1119671953, 1026716344, 1026550240) + W(6, -1144385454, 1046612526, 1050079932, 1061346066)\n\t\t+ W(7, 1054224317, 1023689473, 1034730016, 990814541) + W(8, 1031405875, 1032371736, -1114542190, -1113719056)\n\t\t+ W(9, -1147587566, -1121094047, 1032702160, 1025765741)\n\t\t+ W(10, -1133995267, -1118231237, 1037331941, -1117606232)\n\t\t+ W(11, 1027634660, -1114416951, -1150819433, 1002408318);\n\tsum2 = W(0, -1127268449, 1008157504, 1022079949, -1129508015) + W(1, 1023435994, 987488696, -1149203238, 1025441916)\n\t\t + W(2, 1017520494, -1110533731, -1110799425, 1038116680)\n\t\t + W(3, -1149062134, -1109564641, 1031926637, -1140288129)\n\t\t + W(4, 1046612660, 1053115740, 1042237616, -1081939523) + W(5, 1046590815, 1019421448, 1025089506, 1002014090)\n\t\t + W(6, -1104246964, -1126879265, 1071620340, -1082767624)\n\t\t + W(7, -1091995420, -1133233221, -1113723868, 1008464055)\n\t\t + W(8, -1098833757, -1103206877, 1047260740, 1046386206)\n\t\t + W(9, 1034566387, -1113663072, -1131415815, -1120607589)\n\t\t + W(10, 1019779427, -1135658469, -1112586418, 1021781126)\n\t\t + W(11, 1021597755, 1025921212, 1022181144, -1133866981);\n\tWS(-1118927728, -1114990634);\n\tsum1 = W(0, -1123938375, 1040612950, 1024746402, 1022214714)\n\t\t + W(1, 1038811590, -1112630087, -1118622728, 1031232344)\n\t\t + W(2, 1033195056, -1114716774, 1048819881, -1104426015)\n\t\t + W(3, -1105195831, 1042575344, -1098438774, 1038434900) + W(4, 1057535917, 1047260544, 1042772673, 1057677234)\n\t\t + W(5, 1045869257, 1057533694, 1042859777, 1055588422)\n\t\t + W(6, -1087859524, -1132924433, -1087499341, -1097320317)\n\t\t + W(7, -1091890215, -1089715893, 1029276300, -1091230428)\n\t\t + W(8, -1107191040, 1007112943, 1043648426, -1093740782)\n\t\t + W(9, 1042013107, 1020754614, -1107815558, -1113991309)\n\t\t + W(10, 1047574307, -1106834116, 1044210486, 1028537764)\n\t\t + W(11, -1106862316, 1047539199, -1107232885, 1041569343);\n\tsum2 = W(0, -1117938617, 1034943831, 1047294563, -1112881764)\n\t\t + W(1, -1113196518, 1017166837, -1119652380, -1122537978)\n\t\t + W(2, -1098776947, -1074997876, -1067348911, -1073328658)\n\t\t + W(3, -1106856879, 1007574096, 1040326435, 1003760381) + W(4, 1052841626, 1071950042, 1078478928, 1075942353)\n\t\t + W(5, 1048374094, -1110198115, 1016518417, -1132261857)\n\t\t + W(6, -1111689798, 1008522816, 1042633900, -1105497105)\n\t\t + W(7, -1100859969, 1027760421, -1106280857, -1146348222)\n\t\t + W(8, -1101990052, 1023979086, -1106116215, 1040726051)\n\t\t + W(9, -1128120408, 1041816709, 1015116440, 1015700123) + W(10, 1034353164, 1019125592, 1021696573, 1032192788)\n\t\t + W(11, -1129459590, -1114781060, 983174391, 1019612376);\n\tWS(1034111416, -1106797037);\n\tsum1 = W(0, -1127934684, -1146675705, 1006977829, -1113401378)\n\t\t + W(1, 1019549798, 1016064490, -1139061950, 998716411) + W(2, -1113852291, 1035613338, 1034804131, 1037672145)\n\t\t + W(3, 1044038057, -1106829090, 1033066250, 995721454)\n\t\t + W(4, -1096035023, -1102929642, -1090308252, -1089088820)\n\t\t + W(5, -1096624416, -1097224209, -1104516203, -1095532026)\n\t\t + W(6, 1052464285, 1042719307, 1054858571, 1057164897) + W(7, 1050796251, 1048920159, 1042039981, 1049209393)\n\t\t + W(8, 1032415443, -1114220817, 1032020487, -1123663635)\n\t\t + W(9, 1035431737, -1131720964, -1114943722, 1041424208)\n\t\t + W(10, -1113420426, 1025128440, -1114922591, -1136503085)\n\t\t + W(11, 1026704599, -1109868785, 1024811962, -1138798477);\n\tsum2 = W(0, 1018373307, -1117669473, 1036793172, -1107254646) + W(1, 1027210469, 983011887, -1124389554, 999841656)\n\t\t + W(2, 1030944977, 1035483586, -1120221588, -1138388666)\n\t\t + W(3, -1119036598, 1026801669, -1120993070, 1036234905)\n\t\t + W(4, -1120549779, -1113169149, 1031305133, -1118729068)\n\t\t + W(5, -1123944089, -1136088418, 1045466087, -1110162376)\n\t\t + W(6, -1139755202, -1114451942, 1047991436, 1050438576)\n\t\t + W(7, 1058194810, -1103576008, 1037255439, -1114267729)\n\t\t + W(8, -1101691927, -1102665013, -1083948126, -1083351573)\n\t\t + W(9, -1081291530, -1106933299, -1095248620, -1124771645)\n\t\t + W(10, 1049483493, 1049560407, 1057078402, 1060878230)\n\t\t + W(11, 1058504911, 1044728114, 1047223280, 1036725012);\n\tWS(1038841272, 1052605132);\n\tsum1 =\n\t\tW(0, 1031922765, -1104568331, 1037544250, -1109808312) + W(1, -1115625903, 1042593752, -1105481799, 1033924054)\n\t\t+ W(2, -1100459309, 1046914264, -1120141702, -1117060814)\n\t\t+ W(3, 1046551204, -1097718198, 1032086688, -1112841053) + W(4, 1037270288, 1041702805, -1098675705, 1045728636)\n\t\t+ W(5, 1017164043, 999474559, 1031450455, 1034794943) + W(6, 1026910357, -1101939446, 1040827436, 1037079325)\n\t\t+ W(7, -1095425143, 1046662664, -1103113592, 1015870568)\n\t\t+ W(8, 1023447506, -1114279623, 1048352911, -1115507167) + W(9, 1040518727, 1038294495, -1106032688, 1041969331)\n\t\t+ W(10, -1104596348, 1044685961, -1104877098, -1117405559)\n\t\t+ W(11, 1032200833, -1104511859, 1039045107, -1111795079);\n\tsum2 = W(0, -1119788132, 1033659476, -1112158198, 1008462738)\n\t\t + W(1, -1128623485, -1135723434, 1030330775, -1125624097)\n\t\t + W(2, 992683382, -1104347191, 1044081475, 1034564598) + W(3, 1037093866, -1118342628, 1008221186, -1116661382)\n\t\t + W(4, 1018867293, 1020892153, -1090780387, -1098943438)\n\t\t + W(5, 1024702018, 1037085984, -1108937272, 1041747819) + W(6, 1022669528, 1043646320, 1053457206, -1103925357)\n\t\t + W(7, -1094689316, -1130567667, -1111881166, 1006874186)\n\t\t + W(8, 1044098145, 1022003003, 1053806225, 1061138285) + W(9, 1061570617, 1042502677, 1045330453, 1015917808)\n\t\t + W(10, -1102594356, -1105788334, -1097169858, -1089462725)\n\t\t + W(11, -1090351234, -1124000960, -1102638867, -1119261652);\n\tWS(1059476151, -1123203418);\n\tsum1 = W(0, -1111725774, 1032359159, -1110577724, -1105544893)\n\t\t + W(1, -1121304930, -1115245634, 1036887935, -1110517831)\n\t\t + W(2, 1035594491, 1034919857, -1111760306, 1046155316) + W(3, 1044165509, 1020829292, 1039852002, -1120384574)\n\t\t + W(4, -1091810916, -1140486487, -1084838663, -1086139015)\n\t\t + W(5, -1095808892, -1096673622, -1127813812, -1090491960)\n\t\t + W(6, 1057461865, 1048140086, 1060577506, 1052038472) + W(7, 1057513991, 1053266340, 1045123672, 1055106407)\n\t\t + W(8, 1016189354, 1034245225, -1104347695, 1027870402)\n\t\t + W(9, -1103056264, -1108853472, 1031021091, -1133152957)\n\t\t + W(10, -1123857235, 1028750247, -1113205590, -1121460986)\n\t\t + W(11, -1148349487, -1113141864, 1036934292, 1011178567);\n\tsum2 =\n\t\tW(0, -1114868977, -1107973502, 1044770988, -1101288212) + W(1, 1025917421, 1028043472, -1111158861, -1123193100)\n\t\t+ W(2, 1026556603, -1115461868, -1104823400, -1105554340)\n\t\t+ W(3, 1036199790, -1116199065, 1020651575, -1128075734) + W(4, 1004734644, -1092079110, 1059587552, 1045430990)\n\t\t+ W(5, 1037874646, -1137785064, -1093651456, -1127404110) + W(6, 1034344926, 1042028492, 1024895663, 1050688149)\n\t\t+ W(7, 1047334362, -1116948841, 1044938016, 1042458099) + W(8, 1040708934, -1103991549, 1051421807, -1095880897)\n\t\t+ W(9, -1118101029, -1122024357, -1099771430, 1007412048)\n\t\t+ W(10, -1131620842, -1105590488, 1029419915, -1114582112)\n\t\t+ W(11, 1015496806, -1121536685, -1121478353, -1127827256);\n\tWS(-1096078190, -1082738059);\n\tsum1 =\n\t\tW(0, 1007239809, -1114850361, -1130257143, -1112210107) + W(1, -1118665957, 1028242343, -1116764258, 1022403683)\n\t\t+ W(2, -1108860284, 1046670329, -1103368477, 1045976117) + W(3, 1029494103, 1036298605, 1029804679, -1128309634)\n\t\t+ W(4, -1100207850, -1101169270, -1116530972, -1088435015)\n\t\t+ W(5, -1092482434, -1090334611, -1105280439, -1099682433)\n\t\t+ W(6, 1053165251, 1050939564, 1051252601, 1056131912) + W(7, 1045571555, 1053021861, 1035862579, 1038809821)\n\t\t+ W(8, -1112013420, -1126100266, -1112810720, -1124484747)\n\t\t+ W(9, 1041969097, 1032260218, 1044490698, -1114977769)\n\t\t+ W(10, -1115685558, -1124400725, -1112871192, -1117830909)\n\t\t+ W(11, 1031308937, -1143992478, 1037078646, 1016808747);\n\tsum2 = W(0, -1133820219, -1147891684, -1127336652, -1127200453)\n\t\t + W(1, 1020736496, 1001166860, 1022486646, -1135690985) + W(2, 1027229337, 1032424255, -1137665638, 1045946307)\n\t\t + W(3, -1116510358, -1145031593, -1116471963, -1126621635)\n\t\t + W(4, -1115513384, -1107406978, 1037916056, -1096925824)\n\t\t + W(5, 1031285965, -1138759126, 1020254812, -1122394148)\n\t\t + W(6, 1007940354, -1125237780, 1044701152, 1067148595) + W(7, 1076670751, 1039470145, -1109537872, 1025436583)\n\t\t + W(8, -1156542700, 1031863482, -1113898133, 1048747828)\n\t\t + W(9, -1101339101, -1070343554, -1082365934, -1107321525)\n\t\t + W(10, 1020775992, 994071912, -1127018949, -1115116116)\n\t\t + W(11, -1122694416, -1106720041, 1034791139, 1039293842);\n\tWS(1056919406, -1123699093);\n\tsum1 = W(0, -1153021483, 1016658279, -1169964908, -1131540465)\n\t\t + W(1, -1116724456, 1018808083, 986184318, 1026972628) + W(2, 985933670, -1142160193, 1032391598, -1109380555)\n\t\t + W(3, -1112807501, -1115139838, 1023499017, -1119658051)\n\t\t + W(4, -1089586019, -1106728023, -1095447822, -1095937215)\n\t\t + W(5, -1092279079, -1105250414, -1104943256, -1093497009)\n\t\t + W(6, 1058308826, 1043832952, 1054485203, 1051425640) + W(7, 1057168451, 1053123845, 1034402292, 1056025192)\n\t\t + W(8, -1122912091, -1111941676, -1114359010, 1038539876)\n\t\t + W(9, -1129000267, -1105627696, 1011544866, -1129701482)\n\t\t + W(10, -1130942473, -1162334614, -1115887538, 1035573952)\n\t\t + W(11, -1120065804, 1037216107, -1114397383, 1031803900);\n\tsum2 = W(0, 1034281368, -1126716121, -1121241308, 1045372780) + W(1, 1035929285, 1047600787, 1004087438, 1041718259)\n\t\t + W(2, -1104410341, 1032410612, -1087414339, -1068615761)\n\t\t + W(3, -1067644471, -1091405946, -1118166494, -1097556864)\n\t\t + W(4, 1018060402, 1017706532, 1061712823, 1078313037) + W(5, 1079888634, 1048822788, 1023636550, 1035128990)\n\t\t + W(6, -1138447737, -1115589617, 1021983592, -1100339818)\n\t\t + W(7, -1123293195, 1030149270, -1120625820, 1021734756) + W(8, 994323516, 1029627322, -1133709215, 1015111478)\n\t\t + W(9, 1023885100, -1124744731, 1010097407, 1009567515)\n\t\t + W(10, -1140256393, -1133676977, 1012505315, -1130902073)\n\t\t + W(11, 1028720332, -1123320040, 1022959192, -1136405679);\n\tWS(1057577783, -1116545908);\n\tsum1 = W(0, -1140559047, -1119858755, 1001413734, 1019558160)\n\t\t + W(1, 1027838711, -1123065945, -1133184076, -1116764451)\n\t\t + W(2, 1023488522, 1007841757, -1099448121, -1135636631)\n\t\t + W(3, -1106014610, -1112832085, -1132115376, 1007686986)\n\t\t + W(4, 1031631673, 1034355893, 1034820815, -1095265297) + W(5, -1133110549, 976310772, 1031909175, 1033492939)\n\t\t + W(6, -1127758170, -1102068668, -1139646818, 1043309332)\n\t\t + W(7, 1058446926, 1018622064, 1033516923, 1033353766) + W(8, 1037581685, 1038802963, 1020321573, -1118918103)\n\t\t + W(9, -1104027725, -1110623851, -1124259695, -1114622946)\n\t\t + W(10, -1129099776, 1023940956, 1023108226, -1133216315)\n\t\t + W(11, 1027058075, -1123708581, 1025545342, -1118432359);\n\tsum2 = W(0, -1139693312, 1036960926, -1143311649, 990661185) + W(1, 1015972640, 1000525745, -1129692664, 1028832752)\n\t\t + W(2, -1124752720, -1121090060, -1099787410, -1112556974)\n\t\t + W(3, -1123282486, -1104610584, 1028371280, -1104217347)\n\t\t + W(4, -1098950560, -1103693150, 1033289622, 1052753541)\n\t\t + W(5, -1106573325, 1031872996, -1115662969, -1115847157)\n\t\t + W(6, 999696497, 1034222778, -1104157082, 1058657457) + W(7, 1042484509, 1044261031, 1026599244, 1041506121)\n\t\t + W(8, -1111434581, -1119707404, 1018041096, -1108624084)\n\t\t + W(9, -1111132399, -1121815492, 1018446608, -1129135268)\n\t\t + W(10, 1026280044, 1014405392, -1121205834, 1023217352)\n\t\t + W(11, 1005957425, 1017712752, -1139874592, 1010211304);\n\tWS(1063874743, -1123600943);\n\tsum1 = W(0, 1026726381, 1005084141, -1121313992, 1022502021) + W(1, 1010678471, 1012880846, 1016038684, 1031948511)\n\t\t + W(2, -1110972995, 1029034162, 1029564141, 1019350337)\n\t\t + W(3, 1021423943, -1112342611, 1036724585, -1096649610)\n\t\t + W(4, -1088392527, -1096434085, -1088422197, -1089197156)\n\t\t + W(5, -1089730182, -1099324833, -1105649226, -1102131796)\n\t\t + W(6, 1060534134, 1052968261, 1061531727, 1048937234) + W(7, 1053585019, 1049533342, 1044791660, 1047748258)\n\t\t + W(8, -1131352649, -1125442370, -1111100967, 1007055431)\n\t\t + W(9, -1124123103, 1037169096, -1119334386, 1048887628)\n\t\t + W(10, 1017113381, 1023149165, -1121647548, 1028622922)\n\t\t + W(11, -1132301739, -1122598880, 1017220849, -1134858375);\n\tsum2 =\n\t\tW(0, 1041516351, -1114001722, 1031962338, -1127882717) + W(1, 1024371132, -1116893380, -1137233618, 1035584360)\n\t\t+ W(2, -1098661524, -1113317539, 1041960143, -1113172562)\n\t\t+ W(3, 1057245216, -1108932190, 1040530840, -1090505328)\n\t\t+ W(4, 1065773241, 1066164852, -1094243603, -1071023147) + W(5, -1087722937, 1043021464, 1059923771, 1062948018)\n\t\t+ W(6, 1067471192, 1062194047, -1131590099, -1071391818) + W(7, -1082288010, 1036914992, 1056604249, 1065534266)\n\t\t+ W(8, -1095722385, 1029392016, 1045112423, 1027735196) + W(9, 1047570295, -1110460182, 1008215114, -1096088381)\n\t\t+ W(10, 1025030832, 1015621429, 1033273068, -1106774969)\n\t\t+ W(11, 1021784721, -1147670187, -1157997580, 1025226110);\n\tWS(-1081605212, 1037230241);\n\tsum1 = W(0, -1129286954, -1127382348, -1114123448, -1119205995)\n\t\t + W(1, -1116053850, -1114061454, 1024011222, -1165173963)\n\t\t + W(2, -1115600951, -1127078325, 1045220821, 1032978341) + W(3, 1031622828, 1039357911, 1020277751, 1026874614)\n\t\t + W(4, -1139829872, 1037397159, -1103957592, 1057561887)\n\t\t + W(5, 1057799156, -1103125195, 1035843369, -1159950147)\n\t\t + W(6, 1042245092, -1101819637, 1057239854, -1089716883)\n\t\t + W(7, -1088291628, -1162281827, -1111135597, -1144308089)\n\t\t + W(8, -1130516890, 1025459530, -1098019463, 1040837167)\n\t\t + W(9, 1039979404, -1123433113, 1008116332, -1115664788)\n\t\t + W(10, -1191245347, -1140137724, -1135821456, -1153142562)\n\t\t + W(11, -1123070334, -1115244132, 975751222, -1121723210);\n\tsum2 = W(0, -1129847377, -1132201467, -1111059277, 1032250249)\n\t\t + W(1, 1003251981, -1175110606, -1119100754, 1007928974)\n\t\t + W(2, 1027890930, -1115667911, -1109124506, -1115518668)\n\t\t + W(3, -1131706033, 1033851379, 1008685286, -1130851063)\n\t\t + W(4, 1045384717, -1139027758, 1062718876, -1088514518)\n\t\t + W(5, 1043614591, -1096199608, 1038009999, -1126833063)\n\t\t + W(6, -1131041629, -1086235324, 1071241567, -1104078593)\n\t\t + W(7, -1091065468, 1021865867, -1113376611, -1120766781)\n\t\t + W(8, -1118537275, 1015945835, -1090110249, 1050303031)\n\t\t + W(9, -1130925231, 1030828678, -1128909271, -1121346672)\n\t\t + W(10, -1129495121, 1022067627, -1139816838, -1109320206)\n\t\t + W(11, 1035917053, -1140186118, 1027374356, -1130315761);\n\tWS(1048635758, -1111558989);\n\tsum1 =\n\t\tW(0, -1116715915, 1007517554, -1125319757, -1130676803) + W(1, 1032051720, -1122176818, 1019813529, -1125995833)\n\t\t+ W(2, -1114167026, -1144951432, 1032434734, -1116349759) + W(3, 1007313161, 1037795522, 1011561671, 1022555096)\n\t\t+ W(4, 1019884197, -1100411873, -1082609609, -1099356457)\n\t\t+ W(5, -1114189151, -1098216348, -1118483848, -1115419480)\n\t\t+ W(6, 1046236914, 1042364482, 1057088310, 1060062511) + W(7, -1105629450, 1032549225, -1156935944, 1017135051)\n\t\t+ W(8, 1023679491, 1030303424, 1025882348, 1027068912) + W(9, 1046455412, 1037080648, 1024380849, 1020138940)\n\t\t+ W(10, -1123924777, -1115625243, 1018952757, -1117219752)\n\t\t+ W(11, -1128015465, -1117338239, 1001454266, 1015509889);\n\tsum2 = W(0, 1017200252, -1128076598, 1020177744, 1027061114)\n\t\t + W(1, -1120062015, 1007295183, 1005463470, -1120999608)\n\t\t + W(2, 1032764106, 1032749056, 1042154489, -1091917968)\n\t\t + W(3, -1115647155, -1109350747, -1136438311, -1152745757)\n\t\t + W(4, -1100965710, 1036328960, -1079875623, 1069362278)\n\t\t + W(5, 1041923814, -1121245377, 1023734232, -1115720719)\n\t\t + W(6, -1120952053, -1105592489, -1093732085, 1053281179)\n\t\t + W(7, 1053015354, 1023497366, 1044015507, 1040619345) + W(8, 1023440400, 1037836738, -1110726007, -1110949820)\n\t\t + W(9, -1097734576, 1029656316, -1107014120, 1039138178)\n\t\t + W(10, 1026555164, -1121478225, 1032334674, 1004458190)\n\t\t + W(11, 1030547292, -1115087241, 1024950244, -1107079388);\n\tWS(1057226679, -1099093504);\n\tsum1 = W(0, -1117743115, -1111361838, -1142218540, -1115584496)\n\t\t + W(1, -1144474236, -1112915081, -1118048876, -1124754680)\n\t\t + W(2, -1106860569, -1097721634, 1017711998, -1098477656)\n\t\t + W(3, 1017808579, -1127808199, -1110778360, 988685674) + W(4, 1059123761, 1043835217, 1054886149, 1036645937)\n\t\t + W(5, -1096319852, -1102898152, -1108186916, -1103594844)\n\t\t + W(6, -1116606854, -1113320356, -1098795498, 1036044245)\n\t\t + W(7, 1058878095, 1054951826, 1042821748, 1057715322) + W(8, -1117312579, 1021938430, 1024346219, -1113074392)\n\t\t + W(9, -1113306631, -1104150268, -1109837016, -1104945799)\n\t\t + W(10, -1126837697, -1108681130, -1128001843, -1126342351)\n\t\t + W(11, -1145404316, 1022603516, -1113519979, -1166667748);\n\tsum2 =\n\t\tW(0, 1017552406, -1121365003, 1024315197, -1126393870) + W(1, 1006096662, 1026122801, -1115019758, 1010820131)\n\t\t+ W(2, -1115134458, -1113297695, -1121331284, 1034056828)\n\t\t+ W(3, -1116036592, -1122098200, -1138309587, -1114451237)\n\t\t+ W(4, -1123239700, 1033578978, 1032104202, -1122610502)\n\t\t+ W(5, 1042239151, -1128246386, -1130645774, 1021632898) + W(6, 1040415751, -1119377084, 1033268884, 1042552247)\n\t\t+ W(7, 1014688747, 1038912262, 1011328923, 1013103251) + W(8, 1024802817, -1140510683, 1031096569, 1027588477)\n\t\t+ W(9, -1116363642, -1106292650, -1119712705, -1106135611)\n\t\t+ W(10, -1116030864, -1154029132, -1127078294, -1123710517)\n\t\t+ W(11, -1142638070, 1002524342, -1123496021, 1026182445);\n\tWS(-1108758968, -1120615143);\n\tsum1 =\n\t\tW(0, 1007512449, -1118729201, 1033236958, -1188181540) + W(1, 1032455763, -1139132956, -1126666947, 1028445809)\n\t\t+ W(2, 1043847294, -1115009907, 1038269372, -1103491829) + W(3, 1026842103, 1028990457, -1112992067, 1045480960)\n\t\t+ W(4, 1041722714, 1047642150, 1052029054, 1056274631) + W(5, 1057598894, 1044856958, 1049081300, 1008203541)\n\t\t+ W(6, -1089504654, -1097300100, -1092318719, -1092329088)\n\t\t+ W(7, -1088834696, -1094694701, -1102944265, -1095636207)\n\t\t+ W(8, 1035899020, 1024857813, 1041772976, -1115586563) + W(9, 1037648114, 1028932916, 1031373190, 987483733)\n\t\t+ W(10, 1021562716, -1157490338, 1033997944, -1127937658)\n\t\t+ W(11, 1034853541, -1139535439, 999073631, 1033314299);\n\tsum2 =\n\t\tW(0, 1022601823, 1027503424, -1114440342, 1031020236) + W(1, -1115479573, 1028798660, -1137878778, 973255146)\n\t\t+ W(2, -1119857460, 1016942723, -1113768249, 1049278985) + W(3, 1023747258, 1008539869, 1030670036, -1124354630)\n\t\t+ W(4, -1099325942, -1112391205, 1050839307, -1097330938)\n\t\t+ W(5, 1019565806, -1108724816, -1143955309, -1115374863)\n\t\t+ W(6, -1068582801, -1076271776, 1067690352, 1077639092) + W(7, 1061065209, -1120523343, 1002861982, 1029925423)\n\t\t+ W(8, 1035739756, -1104095012, 1026494027, 1047876791) + W(9, 1016405011, -1115660355, 1022661839, 1033007729)\n\t\t+ W(10, 1015907333, 1016973548, -1122697579, 1015148595)\n\t\t+ W(11, -1106941761, 1032414836, -1126087053, -1124658022);\n\tWS(-1125070560, -1096513533);\n\tsum1 = W(0, -1112401838, -1141896047, -1114813980, -1125005414)\n\t\t + W(1, 1026386210, -1115056418, 1012901881, -1125623196) + W(2, 1032850683, 1035442769, 1027743049, 1036941992)\n\t\t + W(3, -1104378805, 1037833707, 1022681350, 1033887999)\n\t\t + W(4, -1111199410, -1105684773, -1093508577, -1099350541)\n\t\t + W(5, 1060063436, -1112618105, 1035294797, 988362813) + W(6, 1046757622, 1047296038, 1061969278, -1107426238)\n\t\t + W(7, -1092774776, 1028130403, -1127381572, 1016528878)\n\t\t + W(8, 1033951818, 1013771590, -1100008383, 1023589122)\n\t\t + W(9, -1122038496, -1110298148, 1030080099, -1106008748)\n\t\t + W(10, -1110786345, -1113414691, -1131095256, -1114443933)\n\t\t + W(11, 996299870, -1117830096, -1140100259, 1014753608);\n\tsum2 = W(0, -1128089453, -1110645236, -1130916401, 1026446699)\n\t\t + W(1, -1115610756, 1032679495, -1114433002, -1123355757)\n\t\t + W(2, 1024340419, 1043920397, -1129344777, 1009781987) + W(3, -1102796808, 1037523581, 1023912055, 1026431795)\n\t\t + W(4, -1102023306, -1114712453, 1028225499, 1057874897)\n\t\t + W(5, 1052660862, -1102216434, -1127455825, -1128264837)\n\t\t + W(6, -1103821003, -1097377481, 972074333, 1059140954)\n\t\t + W(7, 1038144249, -1107293486, 1006589878, -1102041035)\n\t\t + W(8, 1043342989, -1109265540, -1100613575, -1103696793)\n\t\t + W(9, -1116201867, -1131885037, -1105206442, -1127587329)\n\t\t + W(10, -1119644228, 1026656603, 1034952995, 1032660433)\n\t\t + W(11, -1130501689, 1029362471, 1013212643, 1005668278);\n\tWS(1049867118, 1034735186);\n\tsum1 = W(0, -1127774262, -1117373036, 1031064438, -1112922680)\n\t\t + W(1, 1012648832, -1132535687, -1120670652, -1140537009)\n\t\t + W(2, 1029333619, -1123455456, -1105261096, -1096141178)\n\t\t + W(3, -1120189874, 1024540628, -1138107141, 1000234461)\n\t\t + W(4, 1019113028, 1040322517, 1040279186, -1101685436) + W(5, 1044944438, -1121818673, 1035373868, 1032620736)\n\t\t + W(6, 1024964758, 1032014380, 1048588372, 1050135703) + W(7, 1034886579, 1040490120, 1016312768, 1034120602)\n\t\t + W(8, 1007980364, 1019723167, -1114399774, -1100797936)\n\t\t + W(9, -1113398479, -1150021355, -1128775361, 1008873398)\n\t\t + W(10, -1121402761, -1118901061, -1126411220, -1110911420)\n\t\t + W(11, 1019321608, -1114680743, -1121234663, -1121766352);\n\tsum2 =\n\t\tW(0, -1161289046, 1020587590, 1029682388, 1031608572) + W(1, -1117304231, -1129471662, 965398246, -1134569151)\n\t\t+ W(2, -1111556088, -1127668568, -1095922552, -1092239431)\n\t\t+ W(3, -1165373610, -1120133906, 1007233453, 1019046119) + W(4, 1038429491, -1130067243, 1050898724, 1058359401)\n\t\t+ W(5, 1040200303, 1044552317, -1132308256, 1031851372) + W(6, 1024158411, 1018324827, -1123472030, -1093717514)\n\t\t+ W(7, -1118204561, -1112781150, 1017795291, -1120826542)\n\t\t+ W(8, -1123794133, 1035096674, -1142905112, 1042534485)\n\t\t+ W(9, -1137719883, -1136196985, 1027736448, -1128305748)\n\t\t+ W(10, 1016121349, -1127328688, -1126947701, -1126252937)\n\t\t+ W(11, -1122434117, -1137031592, -1121369248, -1162116006);\n\tWS(1063598519, 1040709546);\n\tsum1 =\n\t\tW(0, 989424433, 1025004011, -1117397173, 1010227902) + W(1, -1116859551, 1035862832, 1012428267, 1028295307)\n\t\t+ W(2, -1129964132, 1018517694, 1036280904, 1042042835) + W(3, 1025484624, -1108371497, 1028794752, -1105766207)\n\t\t+ W(4, -1092181324, -1096845618, -1092686069, -1082263275)\n\t\t+ W(5, -1087946945, -1124000752, 977020321, -1108973663) + W(6, 1056340507, 1052096915, 1055848084, -1117189370)\n\t\t+ W(7, 1053023013, 1053676604, 1044581128, 1048031389) + W(8, -1140166214, -1124688156, 1027380346, 1041673920)\n\t\t+ W(9, 1025279965, 1021321051, -1125256895, 1035434166) + W(10, 1007420926, 1025298052, -1114706068, 1030527159)\n\t\t+ W(11, 1004378644, -1130325786, 1025029349, 1015026205);\n\tsum2 = W(0, -1128989779, -1132752301, -1121498089, -1112228563)\n\t\t + W(1, 1023519830, -1111737432, 1023675120, -1134051546) + W(2, 1040099849, 992269838, 1034828720, 1034859451)\n\t\t + W(3, 1034954038, -1122349299, 1019899084, -1112348174)\n\t\t + W(4, -1100874000, 1034251701, -1104384455, 1044543345)\n\t\t + W(5, 1046406891, 1028583216, -1114022376, 1040182737)\n\t\t + W(6, 1021993174, -1130867684, -1113539068, 1053848304)\n\t\t + W(7, -1104908283, -1100179639, -1111378604, -1097476412)\n\t\t + W(8, -1130783901, 1034483450, -1122004711, 1016645052) + W(9, 1032774629, 1016210650, 1033297067, 1025418184)\n\t\t + W(10, 1011642260, -1123860313, 1016725938, -1122625223)\n\t\t + W(11, 1011006880, -1114528083, 1021084026, -1141294629);\n\tWS(1052377710, -1116561061);\n\tsum1 =\n\t\tW(0, -1122160137, -1112995181, 1021266631, 1017022397) + W(1, 1032809511, -1105019076, 1019774100, -1119221338)\n\t\t+ W(2, 1026711393, 1046449684, -1094207935, 1051777944)\n\t\t+ W(3, -1105978112, 1045042328, -1140860791, -1140595366)\n\t\t+ W(4, 1034438088, -1103073456, 1059878180, -1091454284)\n\t\t+ W(5, -1108523806, -1137740923, -1113848547, 1015748571)\n\t\t+ W(6, 1023922180, -1112523427, 1031595583, -1107259466) + W(7, 1059633699, -1094439010, 1048809290, 1019553093)\n\t\t+ W(8, -1115207840, 1036366239, -1096200621, 1043506315)\n\t\t+ W(9, -1105628259, 1043730779, -1114298535, -1117446555)\n\t\t+ W(10, 1014756539, -1110629817, 1025340632, -1122333286)\n\t\t+ W(11, -1126028515, -1114494718, 1024493780, -1121208702);\n\tsum2 =\n\t\tW(0, -1125003387, -1110204990, 1008672566, -1110854180) + W(1, 1015432805, 1007507570, -1129875419, -1145172348)\n\t\t+ W(2, 1023545558, -1122326332, 1039271760, 997586352) + W(3, 1043658401, -1126010948, -1128126180, 1018354299)\n\t\t+ W(4, 1001356924, 1049948311, -1104177316, -1099440370)\n\t\t+ W(5, -1101604747, -1112581048, 1034699764, -1118892801)\n\t\t+ W(6, 1019826271, -1106041547, 1040609653, 1057375034) + W(7, -1098469549, 1041033112, -1108980340, 1026776081)\n\t\t+ W(8, 1029018751, -1122275300, 1017003703, -1099421810)\n\t\t+ W(9, 1052007058, 1018898909, -1118843549, -1123423040)\n\t\t+ W(10, -1114113554, 1028296019, -1143932072, -1122149120)\n\t\t+ W(11, -1118594118, -1129527698, 1031512617, -1147650596);\n\tWS(1066846108, 1044745002);\n\tsum1 = W(0, 1019372186, 978233216, -1129136976, 1025331363) + W(1, -1142297744, 1015116199, 1015645340, 1016287548)\n\t\t + W(2, 1049403789, -1107121557, 1041504923, -1134682116)\n\t\t + W(3, 1039399714, -1122699462, -1121336819, 1026221102) + W(4, 1042475733, 1051348497, 1048713517, 1054698948)\n\t\t + W(5, 1049146911, 1058118606, 1046729314, 1056609718)\n\t\t + W(6, -1091781177, -1100692098, -1091573825, -1089263023)\n\t\t + W(7, -1091452887, -1090043533, -1102394372, -1091564925)\n\t\t + W(8, -1124410122, 1039801345, 1032893815, 1040511932)\n\t\t + W(9, -1146055296, 1032222216, -1115550793, -1107840672)\n\t\t + W(10, 1015897062, 1009376476, -1126291000, 1006187856)\n\t\t + W(11, 1016897132, 1012743170, 1010428515, 1000566800);\n\tsum2 =\n\t\tW(0, -1121498998, 1025173682, -1127952317, -1123064681) + W(1, 1031325102, 1031547392, -1116804726, 1013263415)\n\t\t+ W(2, 1040076187, -1110698495, 1046879062, -1114452496)\n\t\t+ W(3, 1037259271, -1113826794, -1113826560, -1114840697)\n\t\t+ W(4, 1040991236, 1027215822, -1097422534, -1079622690) + W(5, -1113150532, 1059352243, 1032134129, 1048220488)\n\t\t+ W(6, -1097642453, 1032193313, -1089335507, -1070315938)\n\t\t+ W(7, -1080614075, 1063284099, 1075195474, 1071802337) + W(8, 1041191639, -1107046015, 1027648922, -1107556506)\n\t\t+ W(9, 1040688678, 1044912350, -1107091577, 1050907604)\n\t\t+ W(10, -1143069461, -1127878497, 1033858873, 1031644922)\n\t\t+ W(11, -1125227083, -1135729999, -1112123781, -1104322253);\n\tWS(-1083170743, 1032719415);\n\tsum1 = W(0, 1023701883, 1027723212, -1122560214, 989186599) + W(1, 1018265472, -1118377474, 1034616094, -1143849572)\n\t\t + W(2, -1115388842, 1037576352, 1028066352, 1034436696) + W(3, 1046871436, 1036384970, 1041769608, 1033711598)\n\t\t + W(4, -1095142736, -1104329709, -1093573195, -1091782714)\n\t\t + W(5, -1090370147, -1088395265, -1092608855, -1085234190)\n\t\t + W(6, -1131637740, 1047136718, 1050356544, 1058921626) + W(7, 1057401704, 1046747968, 1048250192, 1051022467)\n\t\t + W(8, 1043889005, -1114738168, 1032119470, 1035779088) + W(9, -1119260798, 1026791695, 1007978244, 1035213927)\n\t\t + W(10, 1012236805, -1143133226, -1126174356, 1024911192)\n\t\t + W(11, 1033076018, -1122725807, 1033024419, 1028803056);\n\tsum2 =\n\t\tW(0, 1040592912, -1148866748, 1032765896, -1113675298) + W(1, 1035431068, -1111525482, 1031171080, -1111672592)\n\t\t+ W(2, -1091007599, 1043419584, -1111893630, -1100951705)\n\t\t+ W(3, 1030657616, -1123081200, 1009914590, 1048594219)\n\t\t+ W(4, -1122569720, -1102576481, -1114969246, 1060370086)\n\t\t+ W(5, 1018512847, -1112438148, 1033713452, -1120657004) + W(6, 1061904811, -1110256028, 1042199718, 1060838438)\n\t\t+ W(7, 1061366749, -1086083341, 1029235040, -1090315205)\n\t\t+ W(8, -1096410255, -1106770914, -1108992598, -1088153932)\n\t\t+ W(9, -1091610254, 1039676388, -1104419583, 1040642594)\n\t\t+ W(10, -1107753434, 1043044202, -1138614142, -1121677972)\n\t\t+ W(11, 1049599377, -1117594428, -1154941432, 1041324320);\n\tWS(-1087374135, 1068569819);\n\tsum1 =\n\t\tW(0, 1034522569, -1114460210, 1040675195, -1156322949) + W(1, -1126356143, 1038944141, -1123272884, -1147588893)\n\t\t+ W(2, 1036038485, -1134485343, 998999958, -1102898978) + W(3, 1032174021, 1032843110, -1112707068, 1041667373)\n\t\t+ W(4, 1051494643, 1048850073, 1055860825, 1058980799) + W(5, 1050366134, 1048730421, 1043911796, 1049367775)\n\t\t+ W(6, -1092286050, -1097395434, -1093950865, -1086427635)\n\t\t+ W(7, -1097745188, -1098221875, -1095510475, -1093210118)\n\t\t+ W(8, 1024631242, -1155697773, 1034953465, 1036357020) + W(9, -1115522123, 1020968428, 1032316940, -1134843155)\n\t\t+ W(10, -1124293233, 1035227470, 1022306499, -1115248568)\n\t\t+ W(11, 1025097211, 1020281868, -1112095119, 1003691067);\n\tsum2 =\n\t\tW(0, 1036982689, -1109420523, 1038171016, -1114883799) + W(1, 1032698755, 1023400751, -1119043865, 1034471555)\n\t\t+ W(2, -1101176821, 1040154700, -1103427381, 1011961296)\n\t\t+ W(3, -1115041464, -1112162319, -1114657793, -1117007917)\n\t\t+ W(4, 1032029724, 1008871494, 1053639476, -1094943648) + W(5, 1046242469, 1015257266, 1018562568, 1031877719)\n\t\t+ W(6, 1031712503, 1051308638, -1103617514, -1090481186) + W(7, 1048516585, -1110670159, 1026474691, 1044794303)\n\t\t+ W(8, -1095262307, -1089037290, -1077227331, -1077304111)\n\t\t+ W(9, -1075605762, -1086532256, -1115849955, -1110424851)\n\t\t+ W(10, -1135236510, 1036178124, 1056219784, 1063074442)\n\t\t+ W(11, 1070767205, 1074120487, 1066414901, 1052188053);\n\tWS(-1094340206, 1025238393);\n\tsum1 = W(0, 1025401267, -1120317764, 1029217422, 1017691154) + W(1, 1015273200, 1006374863, -1149759301, 1023921508)\n\t\t + W(2, 1041212259, -1123694073, 1040075594, -1128349902)\n\t\t + W(3, 1030937834, 1030337996, -1112880429, 1048792866) + W(4, 1051626551, 1044638395, 1051991350, 1049159169)\n\t\t + W(5, 1055056667, 1045537234, 1047952828, -1109761292)\n\t\t + W(6, -1087771683, -1099303356, -1089805402, -1090474853)\n\t\t + W(7, -1089928234, -1095611655, -1103717662, -1097665994)\n\t\t + W(8, 1026720107, 1027277160, 1042793877, 1032035372) + W(9, 1038797403, 1028636183, 1034683820, 1024357062)\n\t\t + W(10, 1024873417, 1003045609, 1025974530, -1140916353)\n\t\t + W(11, 1026491292, -1125445197, 1018728702, 1024842472);\n\tsum2 =\n\t\tW(0, 1016272983, -1125328223, 1019432157, -1136495190) + W(1, 1024638490, -1122054341, 1016158573, -1137665190)\n\t\t+ W(2, -1117564089, 1007328518, 1038058236, -1106032359)\n\t\t+ W(3, 1036423350, -1129861056, -1141592892, 1032273458)\n\t\t+ W(4, 1054344808, 1047318060, -1095657702, -1084625245)\n\t\t+ W(5, -1124414562, 1036648948, -1120282232, 1033205457)\n\t\t+ W(6, 1082928383, 1074423709, -1074337637, -1066615612) + W(7, -1087090886, 1034359725, 999766988, -1114245215)\n\t\t+ W(8, 1043627742, 1037006400, 1040243063, -1106132294) + W(9, -1119023275, 1004167460, 1002865564, -1113153751)\n\t\t+ W(10, -1113989008, -1137080694, 1017883877, -1126758430)\n\t\t+ W(11, 1040797418, -1113361096, 1023713345, 1022755221);\n\tWS(-1098231918, 1035887052);\n\tsum1 = W(0, 1007686525, -1112046456, -1136641001, 1025581173)\n\t\t + W(1, -1121240420, -1165513922, -1114143760, -1123656209)\n\t\t + W(2, -1117693688, -1119004197, -1104788790, -1092353842)\n\t\t + W(3, -1104580134, -1146015939, -1162096818, -1117522176)\n\t\t + W(4, 1048268202, 1036810732, 1055375147, 1069647932) + W(5, 1052170270, 1020096363, -1125578169, 1031911554)\n\t\t + W(6, -1105099271, -1097653932, -1098720398, 1066085926)\n\t\t + W(7, -1093227035, -1123833253, -1107379122, -1130540403)\n\t\t + W(8, -1110112236, -1130249512, -1106155488, -1091717545)\n\t\t + W(9, -1110987409, -1108464746, -1156567122, -1106840908)\n\t\t + W(10, 1016554315, -1115219957, -1142876018, -1143806946)\n\t\t + W(11, -1113561092, -1123809427, -1113074326, -1120698772);\n\tsum2 = W(0, -1125891647, -1139529830, -1127048511, -1119620679)\n\t\t + W(1, 1015042367, -1133002574, 1001053676, -1136336990)\n\t\t + W(2, -1121500935, 1033326245, -1110257678, 1033808587)\n\t\t + W(3, -1152963927, 1023704513, -1125968895, -1159911790)\n\t\t + W(4, 1021750179, -1133323886, 1040835222, 1061147710)\n\t\t + W(5, -1110018076, 1035246842, -1123027527, -1144777900)\n\t\t + W(6, 1017645919, -1167588957, -1108825416, 1055027509)\n\t\t + W(7, -1105425292, -1090179180, 1035235033, -1104047270)\n\t\t + W(8, -1130193055, 1018366499, -1144215516, 1035778772)\n\t\t + W(9, -1105010302, 1019226535, -1113493000, -1137733870)\n\t\t + W(10, -1118741587, 1021086319, -1113356630, -1123951235)\n\t\t + W(11, -1124596863, 995355927, -1135606974, -1141401292);\n\tWS(-1081201436, -1083122818);\n\tsum1 = W(0, 1024396773, 1040103323, -1104054160, 1042893967)\n\t\t + W(1, -1121710378, -1122190892, 1038539251, 1020559724)\n\t\t + W(2, -1118776317, -1121204906, 1048678635, -1101546374)\n\t\t + W(3, 1036673102, -1112386175, 1022162966, -1111471555)\n\t\t + W(4, -1090317103, -1098486564, -1094484293, -1101075087)\n\t\t + W(5, -1095873942, -1099326495, -1101153544, -1095630377)\n\t\t + W(6, 1056470156, 1048677796, 1048629197, 1052113969) + W(7, 1033707976, 1057451847, 1027207978, 1053998976)\n\t\t + W(8, -1120183581, -1105729174, 1032093347, 1048228642)\n\t\t + W(9, 1044099610, -1102747354, -1114063013, -1125760751)\n\t\t + W(10, -1124728406, 1010393788, -1105359341, 1048587688)\n\t\t + W(11, -1107414311, 1034642220, -1109685144, 1033222029);\n\tsum2 =\n\t\tW(0, -1130151079, -1128601535, 1016586775, -1116462462) + W(1, 1006316053, -1136401487, -1134837023, 1015531121)\n\t\t+ W(2, 1029357099, -1139320303, 1016703563, 1036545095) + W(3, 1027702761, -1115282656, 1025282364, -1128863347)\n\t\t+ W(4, -1141051917, 1027307392, 1040480663, -1084177500) + W(5, 1027514935, 1033882273, 975470826, 1013565163)\n\t\t+ W(6, -1126143047, -1124015138, -1090482710, -1061542668)\n\t\t+ W(7, -1081711054, 1042416533, -1107083018, 1030037156) + W(8, -1138853383, 1026568428, 1051692940, 1087807110)\n\t\t+ W(9, 1065457143, -1101742731, 1035528582, -1123914522)\n\t\t+ W(10, 1016378649, -1128887123, 1024508650, -1109325640)\n\t\t+ W(11, -1115450794, 1030137534, 1016609727, -1122133136);\n\tWS(1056806766, 1019813151);\n\tsum1 = W(0, -1109922347, 1027672232, -1113027385, -1106442907)\n\t\t + W(1, -1119504732, -1127683323, 1015134384, -1122196904)\n\t\t + W(2, 1038862168, -1098777292, 1057340869, -1131946518)\n\t\t + W(3, 1048903346, -1100586740, 1027127869, -1136830686)\n\t\t + W(4, -1094336356, 1025923920, -1089223672, 1049099726)\n\t\t + W(5, -1102142547, -1122538541, -1099585557, -1100472159)\n\t\t + W(6, 1045176100, 1046907893, 1028090813, 1060367739) + W(7, -1102839017, 1052174932, 1024110556, 1047790604)\n\t\t + W(8, 1023835087, -1097985673, 1044113854, 1010151151)\n\t\t + W(9, 1051267347, -1093148714, 1029024221, -1137237669)\n\t\t + W(10, -1117706029, -1143840774, -1111671123, 1025756788)\n\t\t + W(11, -1111600768, 1040843731, -1107564881, -1131252120);\n\tsum2 =\n\t\tW(0, 1016054025, -1116580030, -1128856269, 1024017790) + W(1, -1120027976, 1003808451, -1120561807, 1020365697)\n\t\t+ W(2, -1119367753, 1033363716, -1107794961, -1129548157)\n\t\t+ W(3, 1034251322, 1039517400, 1019337653, -1174223189) + W(4, -1115811972, -1119979151, 1046175546, 1051115205)\n\t\t+ W(5, -1095340379, -1127431641, 976018325, -1148320619)\n\t\t+ W(6, 1024987046, -1114756690, -1100926142, 1048732221)\n\t\t+ W(7, 1044324276, -1104827086, -1139095561, -1138276477) + W(8, 1016843613, 1025664850, 1028330842, 1029232538)\n\t\t+ W(9, -1105635461, 1042504965, -1118828309, -1117203320)\n\t\t+ W(10, 1007599121, -1120202841, -1144919563, -1123931557)\n\t\t+ W(11, -1122027017, -1118580981, 1016896817, 1009819353);\n\tWS(1067549148, 1061168738);\n\tsum1 = W(0, -1136860560, 1019396970, 1034693791, 1031876061)\n\t\t + W(1, -1126960466, 1026075051, -1129065354, -1125694250)\n\t\t + W(2, 1041916271, -1102760394, -1100215160, -1127917744)\n\t\t + W(3, 1038708237, 1042570959, 1024557450, -1114527138) + W(4, 1043173595, 1046914407, 1063664325, 1041579695)\n\t\t + W(5, -1084953669, -1099553438, -1111656016, 1036161892)\n\t\t + W(6, -1099729080, -1097589844, -1085101004, 1044764001)\n\t\t + W(7, 1062969721, 1046958554, 1031927572, -1129394940) + W(8, 1028345500, 1036811500, 1044130369, -1111608196)\n\t\t + W(9, -1096862061, -1104831702, -1121741642, 1028864534)\n\t\t + W(10, -1117900922, -1118556558, -1118557363, -1148658183)\n\t\t + W(11, 1028601293, 1014732126, 999719805, -1111432076);\n\tsum2 =\n\t\tW(0, 1037988572, -1109648154, -1115314649, -1110735622)\n\t\t+ W(1, 1029414023, -1115532881, -1114457629, -1123631499)\n\t\t+ W(2, -1097183834, -1096035348, -1106718097, 1044362532)\n\t\t+ W(3, 1044653749, -1118097482, 1036871139, 1035597348) + W(4, -1096111302, 1046143856, 1065688064, -1100541529)\n\t\t+ W(5, 1022961930, 1041170408, -1121640520, -1109551474)\n\t\t+ W(6, -1112255513, 1047451704, 1048785443, -1089624797)\n\t\t+ W(7, 1040629892, -1135819985, -1109975688, 1030316886)\n\t\t+ W(8, 1025606252, -1109281762, 1025033440, -1124926742) + W(9, 1024229044, -1109992198, 1007526703, 1031542857)\n\t\t+ W(10, -1131066844, 1021094187, -1118872350, 1035314838)\n\t\t+ W(11, -1132267648, 1004115214, -1128646118, -1117895342);\n\tWS(-1090126519, 1034760182);\n\tsum1 =\n\t\tW(0, 1022234099, 987019599, 1021371561, -1125185183) + W(1, 1040030303, 1005824514, 1028122555, -1120592523)\n\t\t+ W(2, 1038732905, 1040082783, 1042926010, 1019049563) + W(3, -1101231100, -1108355337, -1115211984, 1035983309)\n\t\t+ W(4, -1095221408, -1096833350, -1090005917, 1049172122) + W(5, 1056956325, 1052986466, 1046568014, 1025899358)\n\t\t+ W(6, 1049091087, 1049531159, 1052645704, 1048882035)\n\t\t+ W(7, -1086324445, -1089320760, -1101798768, -1123937043)\n\t\t+ W(8, -1141106060, -1100657291, -1098472859, -1113910991)\n\t\t+ W(9, 1041783487, 1033537135, 1037621024, -1125397784) + W(10, -1130848127, 1036771650, 1035488804, 1025403478)\n\t\t+ W(11, 1007113098, -1138596020, -1128732298, -1127374557);\n\tsum2 =\n\t\tW(0, 1016736022, 1011977196, -1137999416, 1019963070) + W(1, 1030437859, -1122046802, -1142727409, 1018753414)\n\t\t+ W(2, 1032939170, -1102682487, 1037611888, -1102949496)\n\t\t+ W(3, 1039010410, -1110345340, -1124097437, -1113761662)\n\t\t+ W(4, -1122689775, 1060510561, 1051792579, -1073351999) + W(5, 1059164734, 1062467108, 1031495287, -1101619274)\n\t\t+ W(6, -1102551566, 1060805847, 1057985083, -1073393989)\n\t\t+ W(7, 1057367527, 1062012989, -1147452225, -1099879364)\n\t\t+ W(8, -1122487238, -1122236502, 1036808922, -1103029047)\n\t\t+ W(9, 1039165500, -1106860549, -1143421321, 1015482390)\n\t\t+ W(10, 1026411789, -1128029215, 1019619350, -1125796177)\n\t\t+ W(11, 1024266957, -1119780381, 1024156551, 1016465010);\n\tWS(-1089242039, -1127205581);\n\tsum1 = W(0, -1124452989, 1037734344, -1136469606, 1045032037)\n\t\t + W(1, -1131176455, 1029283077, 1038076384, 1029887056)\n\t\t + W(2, 1047404342, -1111320098, -1115981071, 1038279993)\n\t\t + W(3, 1006926037, 1030509432, -1123275877, 1043334248) + W(4, -1086849964, 1001557948, 1055753134, 1059294849)\n\t\t + W(5, 1006841992, 1049404683, 1037635838, 1044156233) + W(6, -1114062493, 998659036, -1096047365, -1107330927)\n\t\t + W(7, -1105936042, -1087265492, -1095492784, -1080260267)\n\t\t + W(8, 1042532510, 1038364441, -1118490271, 1044317529) + W(9, 1035319841, 1043122385, 1027367204, 1053177470)\n\t\t + W(10, 1010360274, 1032729828, 1015888923, -1118190491)\n\t\t + W(11, 1021147727, -1123196402, 1027584778, -1118995315);\n\tsum2 = W(0, 1029897599, -1114965417, 1025776431, -1121485495)\n\t\t + W(1, -1140617930, -1113546368, 1031651703, -1117524097)\n\t\t + W(2, -1102843967, 1046605828, 1033633995, 1048791648)\n\t\t + W(3, -1104898739, 1031053127, -1108448442, -1108356905)\n\t\t + W(4, 1001547796, 1025076963, -1090433692, 1044097140) + W(5, 1042488362, -1118485295, 1045463546, 1040816680)\n\t\t + W(6, 1049416264, -1100594038, -1096668289, -1117020477)\n\t\t + W(7, -1102246327, 1034926551, 1047237110, 1044694712) + W(8, -1120840401, 1041915682, 1040646462, 1042521794)\n\t\t + W(9, -1112857889, -1109164591, 1015998805, -1109851905)\n\t\t + W(10, -1115391670, 1020641677, -1111492899, 1034331443)\n\t\t + W(11, -1115861875, -1134127978, -1120855845, -1124879769);\n\tWS(-1081567068, -1085072352);\n\tsum1 = W(0, 1026202077, 1017630556, 1034866076, -1120073907) + W(1, 990337572, -1122725732, 1016189565, -1135328058)\n\t\t + W(2, 1008391383, -1102096537, -1105309517, -1113888457)\n\t\t + W(3, 1038015146, 1010107993, 1035371298, -1107104879) + W(4, 1043376377, 1035138955, 1062685095, -1088326467)\n\t\t + W(5, -1087780001, -1095652846, -1111927693, -1134788873)\n\t\t + W(6, -1106037014, -1113878797, -1091962582, -1099527071)\n\t\t + W(7, 1065743931, 1048331161, 1035819857, 1033560764) + W(8, -1119432853, 1041401156, 1028045374, 1036249665)\n\t\t + W(9, -1122166240, 1030964177, 1030882915, 1034792920)\n\t\t + W(10, 1015626934, -1112723700, 995954372, -1112822301)\n\t\t + W(11, 1036674595, -1165855255, 1020668626, -1140134473);\n\tsum2 = W(0, -1101998430, 1034880732, -1111573656, 1034691412) + W(1, 1017688506, 1032207084, 1002612774, 995363580)\n\t\t + W(2, 1025808817, -1110518368, -1090739547, -1098171169)\n\t\t + W(3, 1047617175, -1112107064, 1027687639, 1035291452) + W(4, 1026331301, 1035202798, -1095903349, 1068344140)\n\t\t + W(5, -1085314459, -1108916250, -1113844364, -1111293323)\n\t\t + W(6, 1041383807, 1044537615, 1045506861, 1069658374)\n\t\t + W(7, -1090700374, -1135142667, -1106371211, -1105384559)\n\t\t + W(8, 1033833028, -1096440885, 1030373631, -1094064924)\n\t\t + W(9, -1106284721, -1113568166, 1043762008, -1113615358)\n\t\t + W(10, -1108635033, 1042833515, -1107072548, 1037649108)\n\t\t + W(11, -1117475933, 996218700, -1115713024, 1031725587);\n\tWS(-1122270064, -1083487436);\n\tsum1 = W(0, 1022021054, 1000846209, -1120651002, -1133172181) + W(1, 1015175368, 1008528664, 1014262402, 1032206792)\n\t\t + W(2, -1111938972, 1031069285, 1035108132, -1122478547)\n\t\t + W(3, 1022898156, -1109542844, 1003755051, -1099224128)\n\t\t + W(4, -1089129474, -1092279467, -1089405705, -1088959911)\n\t\t + W(5, -1101358829, -1113192731, -1110785838, -1105614817)\n\t\t + W(6, 1061173530, 1053406092, 1061891890, 1046812368) + W(7, 1052509753, 1035774995, 1040815801, 1041852206)\n\t\t + W(8, -1117042135, -1112839626, -1115403968, 1035227362)\n\t\t + W(9, 983155781, 1035355065, -1114859906, 1046440556) + W(10, 990992466, 997371026, -1123767278, -1136588785)\n\t\t + W(11, 1014548513, -1120262163, -1139309996, -1196238920);\n\tsum2 =\n\t\tW(0, 1044179919, 1022028328, 1040258943, -1118974089) + W(1, 1033279863, -1117110809, 1031745329, -1103290765)\n\t\t+ W(2, -1111986018, 998943655, -1095034556, -1095846499)\n\t\t+ W(3, -1110448374, -1099083231, -1120681553, -1101323001)\n\t\t+ W(4, -1080384748, -1088604014, -1104000317, 1073459027)\n\t\t+ W(5, -1098039236, 1045892370, -1111672860, 1055006842)\n\t\t+ W(6, -1092393621, 1029389095, -1090514887, 1071708766) + W(7, 1012336831, 1049307354, -1100485937, 1051814517)\n\t\t+ W(8, 1048581079, 1009323699, 1015383036, -1097133430)\n\t\t+ W(9, -1122793353, -1097759856, 1041920736, -1091667564)\n\t\t+ W(10, 1031858735, 1021777892, 1024626196, 1024702395) + W(11, 1031448400, 1030521846, 1016567237, 1029007432);\n\tWS(-1097130350, -1073679750);\n\tsum1 =\n\t\tW(0, -1154560184, 1025389788, -1145657140, 1000633100) + W(1, -1120139600, 1032643785, 1008755251, 1030414749)\n\t\t+ W(2, -1142702368, 1008724804, 1035954194, 1046084016) + W(3, 1042008657, -1106616153, 1025929714, -1102859291)\n\t\t+ W(4, -1095841490, -1096179481, -1095185831, -1085973126)\n\t\t+ W(5, -1089907161, -1096805620, -1098086361, -1107347576)\n\t\t+ W(6, 1034517635, 1053502809, 1045830013, 1057148843) + W(7, 1051926551, 1052799826, 1043469780, 1050172789)\n\t\t+ W(8, 1044574577, -1112918112, 1042446427, 1025817904) + W(9, 1017272605, -1123577295, -1143679882, 1014891512)\n\t\t+ W(10, 992206103, -1143244972, -1122388570, -1139683234)\n\t\t+ W(11, 1018417129, 1017209342, 1016358830, 1026775680);\n\tsum2 =\n\t\tW(0, 1021941992, -1140009235, 1026649920, 1025391436) + W(1, 1033557641, -1110654493, -1117894486, 1031221238)\n\t\t+ W(2, -1106123822, -1137197699, -1104678389, -1103278668)\n\t\t+ W(3, 1049392706, 1026389826, 1046385471, -1107040085) + W(4, 1031547466, 1040410800, -1091687878, -1069452203)\n\t\t+ W(5, 1071493698, 1075377385, -1093315115, -1101021764)\n\t\t+ W(6, -1135582819, 1048777558, -1102399061, -1086654414) + W(7, 1036526271, 1051671224, 1003979070, 1042747507)\n\t\t+ W(8, 1018035752, -1114989513, 1038853959, -1112110740)\n\t\t+ W(9, -1155541821, -1119910153, -1130248744, -1119798403)\n\t\t+ W(10, 1017098260, -1129449426, -1170697076, -1134437671)\n\t\t+ W(11, 1030635558, -1127657747, 1010389927, 1007123883);\n\tWS(-1110542776, 1046722292);\n\tsum1 = W(0, -1112464600, 1016022658, 1027765771, 981819586) + W(1, 1026835189, 1025143735, -1111607705, 1024330241)\n\t\t + W(2, 1033517476, -1108629467, -1106997347, -1113497042)\n\t\t + W(3, -1116788199, -1106078850, 1041100086, -1124631714)\n\t\t + W(4, 1047470894, -1133454244, 1053995028, -1100439522)\n\t\t + W(5, -1093531706, 1048713001, -1106135867, -1115421707)\n\t\t + W(6, -1131671638, 1032980471, -1092318054, 1042288212)\n\t\t + W(7, 1061947018, -1121614518, 1012478420, 1041393523)\n\t\t + W(8, 1005087552, -1105826521, 1042584756, -1109105451)\n\t\t + W(9, -1098489206, -1105038597, 977775992, -1114990145)\n\t\t + W(10, -1142745264, 1026603482, -1129658366, 1017901338)\n\t\t + W(11, -1142191304, 1040275689, 1016467704, 1020475210);\n\tsum2 = W(0, 1031452303, 992881643, 978475180, -1121457613) + W(1, 1034445399, -1130052481, 1032145701, -1116902843)\n\t\t + W(2, -1132232893, -1116591675, 1016124301, -1114931492)\n\t\t + W(3, -1094590847, 1040974964, -1110729382, 1035934107)\n\t\t + W(4, -1109510079, 1032912109, -1114514404, 1032060799)\n\t\t + W(5, 1051504728, -1087149232, 1039284419, 1032317221) + W(6, 1018866101, -1116915567, 1055420465, 1059251768)\n\t\t + W(7, -1088887374, 1044275534, -1114948355, -1104983612)\n\t\t + W(8, 1014551643, 1024567259, -1097097100, -1118272021) + W(9, 1048490818, 1035881493, 1032922179, 1032032409)\n\t\t + W(10, 1032688527, -1114177042, 1042584708, -1109972047)\n\t\t + W(11, 1024892699, -1108606213, -1121421993, -1133789139);\n\tWS(1059165367, -1104520251);\n\tsum1 =\n\t\tW(0, 1007492796, -1117692608, 1009135144, -1115310467) + W(1, 1014125520, -1113191163, -1129119585, -1118876992)\n\t\t+ W(2, -1108628644, 1046236477, -1120534447, 1052736188) + W(3, -1118278150, 1036684740, 1015268651, 1008090175)\n\t\t+ W(4, -1117534006, -1094176525, 1053590938, 1041258594)\n\t\t+ W(5, 1001540436, -1106455985, -1112388022, -1114551242)\n\t\t+ W(6, 1041312427, -1118419948, -1107420459, -1097199722)\n\t\t+ W(7, 1055263011, -1100739533, 1040471133, 1020553106) + W(8, -1113108212, 1029454180, -1110779368, 1053879643)\n\t\t+ W(9, -1098892966, 1045621277, -1126748266, 1026632706)\n\t\t+ W(10, -1124001749, -1113899741, -1131761404, -1114949702)\n\t\t+ W(11, 1025063448, -1105125705, -1126282358, -1127494856);\n\tsum2 = W(0, 1027505664, -1115834059, 1029084872, 1029257304)\n\t\t + W(1, -1128264406, -1138405484, -1118563560, -1127212263)\n\t\t + W(2, -1104527074, 1048986559, -1089420265, -1098414029)\n\t\t + W(3, -1104406791, 1040673804, -1203758566, -1117936348)\n\t\t + W(4, 1034957797, -1098163961, 1051828462, 1053778056)\n\t\t + W(5, 1048509414, -1106881855, -1113115951, -1136870020)\n\t\t + W(6, 1041601252, -1125657446, 1045110551, 1041501740) + W(7, 1041829791, -1119286592, 1045914276, 1022365337)\n\t\t + W(8, -1108054404, 1041896195, -1099714824, -1129563106)\n\t\t + W(9, -1092212913, 1049994472, -1105182054, -1139619400)\n\t\t + W(10, -1122847824, 1034858548, -1116127595, -1170669534)\n\t\t + W(11, 1037831890, -1107117839, 1031508216, -1127498142);\n\tWS(1064754871, 1064755352);\n\tsum1 = W(0, -1124996947, -1126765813, -1111973122, 995438583)\n\t\t + W(1, -1131935965, 1011044801, 1017902933, -1117569083) + W(2, 1039345889, 1034558935, 1025078634, 1031530717)\n\t\t + W(3, -1102805216, -1112086641, -1108706152, -1125705364)\n\t\t + W(4, -1096693846, -1096907004, -1092723587, 1042155040)\n\t\t + W(5, 1055052309, 1050402072, 1045488762, 1036105095) + W(6, 1051509189, 1048609181, 1055455058, 1038916133)\n\t\t + W(7, -1085470304, -1096310694, -1110967031, -1114430562)\n\t\t + W(8, -1110987505, -1122110878, -1103910610, 1036071207) + W(9, 1036962198, 1042970795, 999916154, 1043170799)\n\t\t + W(10, 1036233792, 981607022, 1033037628, 1028131846)\n\t\t + W(11, -1113728073, -1155599823, -1121653045, -1131031997);\n\tsum2 =\n\t\tW(0, -1133117125, 1023646322, 1023723550, 1016880452) + W(1, -1128763803, 1032406499, -1112596197, 1024272758)\n\t\t+ W(2, 1035315397, -1104375670, 1045506061, -1100884270)\n\t\t+ W(3, 1037072250, -1100571834, 1043010850, -1106522969) + W(4, 1034291601, 1023753609, -1107539440, 1046403885)\n\t\t+ W(5, -1123261308, 1040670310, -1109210140, 1037357283)\n\t\t+ W(6, -1093657955, 1053589289, -1104725243, 1040733712) + W(7, 987308827, 1047435788, -1103530057, 1046389911)\n\t\t+ W(8, -1083656994, -1096844972, -1079943056, -1108767061)\n\t\t+ W(9, 1066015084, 1056439411, 1038430454, 1050581867) + W(10, 1063017252, -1117431336, 1065218548, -1110535684)\n\t\t+ W(11, -1088643610, -1092199491, -1140617522, -1093142505);\n\tWS(-1141889920, -1150694570);\n\tsum1 =\n\t\tW(0, -1121776659, 1035438770, -1107472311, 1029335145) + W(1, 1032163820, -1122959321, 1035788170, 1006930832)\n\t\t+ W(2, -1156363954, 1043244278, 1039611642, 1044045394) + W(3, 1031781705, -1113754566, 1041298854, -1113010266)\n\t\t+ W(4, -1110656781, -1108191526, -1092681840, -1089342271)\n\t\t+ W(5, -1107172434, -1110931796, -1106653204, -1098776751)\n\t\t+ W(6, -1150990554, 1049522698, 1047918398, 1044281805) + W(7, -1142656241, -1118178969, 1044014582, 1035377494)\n\t\t+ W(8, 1001967189, 1024784007, -1120026675, 1041259438) + W(9, 1035091531, -1114065315, 1037418924, 968315538)\n\t\t+ W(10, 1009891810, 1026909213, -1115519345, 1032535224)\n\t\t+ W(11, -1156224954, -1114416227, 1034927023, -1127266575);\n\tsum2 = W(0, -1096670021, -1102787949, -1099441746, 1043637876)\n\t\t + W(1, 1052388948, 1042101483, -1135324433, 1042670443) + W(2, 1059540854, 1039622534, 1064198145, -1086802625)\n\t\t + W(3, -1085971065, -1113298762, -1098667485, -1104634628)\n\t\t + W(4, 1045575353, 1037899964, 1030855272, -1101655681)\n\t\t + W(5, 1033969343, -1105771070, 1036465297, -1104173140)\n\t\t + W(6, -1133958494, 1013042349, 1040028330, 1036771998) + W(7, 1032851236, -1120619083, 981463467, 1030229840)\n\t\t + W(8, 1031038260, -1110193614, -1117097690, -1125265460)\n\t\t + W(9, -1103569731, 1049976190, -1101523135, 1035574893)\n\t\t + W(10, -1118270456, 988987510, 1032105974, -1117707023)\n\t\t + W(11, -1134648980, 1021389004, -1119296945, 1035007302);\n\tWS(1060329015, -1107100438);\n\tsum1 = W(0, -1139109867, -1126768152, -1154508124, 1024792785)\n\t\t + W(1, -1145234942, -1121126338, -1165337473, -1128378904)\n\t\t + W(2, 1016013223, -1108878752, -1139382101, 1046477388)\n\t\t + W(3, 1046417836, 1044791733, -1115375281, 1030070044) + W(4, 1052529520, 1042283693, 1051369597, 1051787130)\n\t\t + W(5, 1040695538, 1046651812, 1039020124, 1046922680)\n\t\t + W(6, -1098269535, -1103310414, -1093610355, -1088582834)\n\t\t + W(7, -1090008057, -1097854544, -1110993568, -1105218789)\n\t\t + W(8, -1120993331, 1033078264, 1033661966, 1015463488) + W(9, 1035018943, 1029328303, 980238373, -1121430349)\n\t\t + W(10, 1025836257, -1113589378, 1029380042, -1124637616)\n\t\t + W(11, -1127749832, 1030094510, -1117533511, 1016154976);\n\tsum2 =\n\t\tW(0, -1122821091, 1016851522, -1106087013, -1109184296) + W(1, 1045004090, 1015529466, 1026918939, -1115690469)\n\t\t+ W(2, 1039646422, -1156337616, -1131895450, -1080883791)\n\t\t+ W(3, -1074990048, -1105476432, -1104782698, 1022339242)\n\t\t+ W(4, -1126218548, -1123806894, 1035943528, 1071805249)\n\t\t+ W(5, 1071092779, -1126394390, 1031828962, -1122803425) + W(6, 1020520346, -1105518185, 999070248, -1096231655)\n\t\t+ W(7, -1125969764, 1028426171, 1030594487, -1127395662) + W(8, 1030755819, 1031650855, 1015158698, 1043321474)\n\t\t+ W(9, -1125796080, 1026097175, -1140334484, -1110808154)\n\t\t+ W(10, 1003947528, 980292032, -1123933765, -1122746065)\n\t\t+ W(11, 1018391998, -1126690400, 1018627618, -1149029768);\n\tWS(1004067712, 1029538397);\n\tsum1 = W(0, 1039684517, -1113057966, 1034662227, 976341006) + W(1, -1116361615, 1039793800, -1114202454, 1023346679)\n\t\t + W(2, 1025050595, -1112884456, -1120136235, -1106127376)\n\t\t + W(3, -1108532672, -1136083213, -1109109944, 1026195563)\n\t\t + W(4, 1055781642, 1052279792, 1057037092, 1048957300) + W(5, 1059667231, 1049781884, 1046150498, 1052752022)\n\t\t + W(6, -1093421305, -1096595713, -1096171643, -1083333863)\n\t\t + W(7, -1093970477, 1050503466, -1098876866, -1119746148)\n\t\t + W(8, -1134522377, 1008080123, 1038845557, -1104830972)\n\t\t + W(9, -1107387175, -1105145436, -1111371224, -1106375815)\n\t\t + W(10, 1033902960, -1134909265, 1000314570, 1017566030)\n\t\t + W(11, -1120056627, 1034175935, -1129568684, 1002478074);\n\tsum2 = W(0, 996458418, 1033154491, -1124552606, 983965669) + W(1, -1113544599, -1118592979, 1024911403, -1120675710)\n\t\t + W(2, 1023361218, -1129026548, -1113149678, -1096377075)\n\t\t + W(3, -1108470744, -1107366613, 1040480632, 978762058) + W(4, 1020176326, 1036155261, -1107309754, 1064108379)\n\t\t + W(5, -1113642974, -1147140265, -1123866147, -1127049668)\n\t\t + W(6, -1105686968, -1136279909, -1101182829, 1059185253)\n\t\t + W(7, -1094171461, -1097506500, 1038318571, 1027330889)\n\t\t + W(8, -1112170015, 1029838361, -1110765232, 1029555247) + W(9, 1048386684, 995412594, 1045927904, -1102738273)\n\t\t + W(10, 1016740014, -1122796554, 1027141165, -1111484496)\n\t\t + W(11, 1033692775, -1108579478, -1126067866, 1023291782);\n\tWS(1047133404, -1079170418);\n\tsum1 = W(0, 1009155056, -1116032717, -1135035740, -1132905800)\n\t\t + W(1, 1006908676, -1123509635, -1129150906, -1147535977)\n\t\t + W(2, -1122581460, -1127398915, -1111731450, -1098422622)\n\t\t + W(3, -1136427723, 1019095722, 1037504657, 1012838771) + W(4, 1042667713, 1041078541, 1051022508, 1065228285)\n\t\t + W(5, 1042380775, 1050271906, -1107182030, 1023931745)\n\t\t + W(6, 1030334583, -1113404572, -1111377849, -1104817319)\n\t\t + W(7, -1091891141, -1103926112, -1121675713, -1123007382)\n\t\t + W(8, -1108143194, -1123819760, -1112180142, -1102890728)\n\t\t + W(9, -1111098047, 1023382911, -1136273159, -1123177070)\n\t\t + W(10, 1027163842, -1122554086, 1023811915, -1133181796)\n\t\t + W(11, 1001483047, -1116735535, 1015217807, -1130799202);\n\tsum2 = W(0, -1151544588, -1155029688, 1018065470, 1007239987)\n\t\t + W(1, -1125453823, -1118997712, 1007542759, -1133631258)\n\t\t + W(2, 1017708852, -1121981859, -1114670464, 1049278985)\n\t\t + W(3, 1041079714, -1156221672, -1120658712, -1113215345)\n\t\t + W(4, -1147640076, -1129630940, -1093073209, -1077783117)\n\t\t + W(5, 1074285479, 1034878186, 1016277382, 1033160981) + W(6, 1008923057, 1024218233, -1119653793, -1083801634)\n\t\t + W(7, 1047560438, 1028846010, 1036336794, 1022080564) + W(8, 1011942449, 998377109, -1131988255, 1041518161)\n\t\t + W(9, -1114079754, -1118519138, -1121956184, 1027490516)\n\t\t + W(10, 1018406594, -1133221663, 1025316590, -1123603132)\n\t\t + W(11, -1131599727, 1024940191, -1131785133, -1130450701);\n\tWS(1043550940, 1028476494);\n\tsum1 = W(0, -1115183742, -1121780237, -1117842775, -1110838377)\n\t\t + W(1, 991794198, -1111061058, 1015980795, -1113960535)\n\t\t + W(2, -1130981802, -1102302048, -1117998761, -1094318158)\n\t\t + W(3, -1102037997, -1115328139, -1113105937, -1106426583)\n\t\t + W(4, -1100607937, -1105099981, -1096882923, 1062548805)\n\t\t + W(5, -1103616404, -1097580450, -1103768718, -1100373208)\n\t\t + W(6, 1051762223, 1040535662, 1059510884, 1068023761) + W(7, 1055882697, 1041348961, 1034161697, 1044552262)\n\t\t + W(8, 1000007075, -1138550724, -1102853271, -1099046056)\n\t\t + W(9, -1102330336, -1131654944, -1112888641, -1110284503)\n\t\t + W(10, -1121847282, -1111548899, -1132334487, 1013492582)\n\t\t + W(11, 1018468811, -1119471984, -1129682576, -1148988811);\n\tsum2 =\n\t\tW(0, 1029690847, -1115037203, -1127742454, 1036903221) + W(1, -1106227374, 1039025001, -1108879063, 1016988574)\n\t\t+ W(2, -1103820712, 1043435491, -1100462798, 1028701483)\n\t\t+ W(3, -1121926871, -1126383902, 1017141302, -1115441627) + W(4, 998970743, -1096312501, 1044923803, 1041049643)\n\t\t+ W(5, 1030485727, -1125321886, 1008577020, 1033537170) + W(6, 1028297515, 1046052979, -1099477234, 1065575031)\n\t\t+ W(7, -1098681477, 1040854499, -1106467082, -1122382559)\n\t\t+ W(8, -1122562191, -1115911439, 1030898927, -1096910875)\n\t\t+ W(9, 1034498637, -1115709255, 1013474716, -1129067614)\n\t\t+ W(10, -1133991676, 1007821180, -1113716427, 1036974934)\n\t\t+ W(11, -1111652935, -1126914630, -1128843302, -1114648723);\n\tWS(-1079050332, -1087647968);\n\tsum1 = W(0, -1138480508, -1122115440, 1024624314, -1106223181)\n\t\t + W(1, 1029330596, -1120448614, -1134294785, 1004544641)\n\t\t + W(2, -1112879708, 1026750308, 1027382179, -1116109267)\n\t\t + W(3, 1024806390, -1128868784, 1022822666, -1115751616)\n\t\t + W(4, -1095708941, -1102419558, -1136300523, -1083772539)\n\t\t + W(5, -1103579129, -1102450653, -1100406055, -1099401009)\n\t\t + W(6, 1054719611, 1048762675, 1057423590, 1057166968) + W(7, 1058690419, 1049252525, 1046884233, 1051036287)\n\t\t + W(8, 1031575959, -1106236805, -1115045376, -1096438944)\n\t\t + W(9, -1115914082, -1116410163, -1127656777, 1031406769)\n\t\t + W(10, -1122888245, -1139407140, -1136279992, -1112079518)\n\t\t + W(11, 1025354440, -1128866725, 1008311211, 1030150228);\n\tsum2 =\n\t\tW(0, 1018441725, 1018735508, -1106801879, 1042307735) + W(1, -1108191465, -1153036923, 1023515972, -1130614305)\n\t\t+ W(2, -1121226957, -1128043345, 1036012925, -1105109021)\n\t\t+ W(3, 1026535678, 1024075219, -1143871918, -1115606924) + W(4, 1025980595, 1035475244, -1093599779, 1063056253)\n\t\t+ W(5, -1097885523, 1035122552, 1028845741, -1124060823)\n\t\t+ W(6, -1143973174, 1028848366, -1119821797, 1055391108)\n\t\t+ W(7, -1118265757, 1031788992, -1122707515, -1149779899)\n\t\t+ W(8, -1145354702, 1010180031, -1106432772, -1103238145)\n\t\t+ W(9, -1114258989, -1114303163, 1031455538, -1117711701)\n\t\t+ W(10, -1118705847, 1001175670, -1114705464, 1024485983)\n\t\t+ W(11, -1109715589, 1025382280, -1125366621, -1122890135);\n\tWS(1061221431, 1002405371);\n\tsum1 = W(0, -1123061017, -1109190069, -1111043962, -1094345134)\n\t\t + W(1, -1146354418, -1113941840, -1145213652, 1017803349)\n\t\t + W(2, -1123480946, 1033046959, 1050201177, 1042710035) + W(3, 1050099666, 1026923762, 1032794752, 1029204218)\n\t\t + W(4, -1090405194, -1104934581, -1102475777, -1086823335)\n\t\t + W(5, -1097235340, -1091215734, -1094526523, -1089600016)\n\t\t + W(6, 1054235011, 1044209302, 1057895846, 1052530935) + W(7, 1058601910, 1050794548, 1041457976, 1055600534)\n\t\t + W(8, 1026563665, -1108435303, 1037490845, -1102625680)\n\t\t + W(9, 1033897294, -1126650490, -1110275296, 1021417496)\n\t\t + W(10, 1000058490, -1121369187, 1030151784, -1111380603)\n\t\t + W(11, 1040756961, -1126829850, 1032331475, 1033488871);\n\tsum2 = W(0, 1049937345, 1058657690, 1071079778, 1072348129) + W(1, 1066389113, 1049150259, -1119844839, -1113785170)\n\t\t + W(2, -1089706816, -1087536311, -1078069733, -1078647761)\n\t\t + W(3, -1079714039, -1090508646, 1022376790, -1103849791)\n\t\t + W(4, 1050626093, -1106625833, 1020012689, -1094966474)\n\t\t + W(5, -1098171132, 1050328795, -1105718319, 1052174137)\n\t\t + W(6, 1030967529, -1105431871, 1044296437, -1112600090)\n\t\t + W(7, 1038432439, 1044145959, -1126694997, 1034822829)\n\t\t + W(8, -1115709839, 1036734782, -1122006247, -1122763227)\n\t\t + W(9, -1130276743, 1024733405, 1021875579, -1112758982)\n\t\t + W(10, 1039088353, -1109192755, 1031394755, -1116226089)\n\t\t + W(11, 1022577738, 1012728894, -1123093509, 1013882918);\n\tWS(-1092893294, -1089220584);\n\tsum1 = W(0, 1008699951, 1010493299, -1124403149, 1025199074)\n\t\t + W(1, -1117387089, 1015178277, -1125915034, -1130896954)\n\t\t + W(2, -1127519944, -1118558929, -1106263811, -1113928672)\n\t\t + W(3, -1098638288, 1041393441, -1112838969, 1035998582) + W(4, 1053766130, 1051919929, 1056071340, 1052175436)\n\t\t + W(5, 1062605050, 1047707912, 1053546873, 1049473086)\n\t\t + W(6, -1103359682, -1096189801, -1097091836, -1086367179)\n\t\t + W(7, -1096005139, -1102452900, -1101730612, -1095432549)\n\t\t + W(8, -1104704049, 1032200864, -1111082358, 1015736929)\n\t\t + W(9, -1120379023, -1123219920, 1019333603, -1136688761)\n\t\t + W(10, 998920846, 1028526614, -1149496748, 1019181009)\n\t\t + W(11, -1115659002, 1027645503, -1131717807, -1136451331);\n\tsum2 =\n\t\tW(0, -1143112647, 992704062, -1124855502, 1038449046) + W(1, -1105916124, 1035072543, -1114904409, 1019251456)\n\t\t+ W(2, 1034689803, -1109431235, 1033324328, -1098090520) + W(3, 1038361982, 1040866773, 1032024575, -1164332444)\n\t\t+ W(4, -1115356591, 1039097516, -1073085951, -1063972596)\n\t\t+ W(5, 1062319475, 1085456662, 1062308854, -1102205120)\n\t\t+ W(6, -1121270233, 1048248946, -1106299172, -1091325299)\n\t\t+ W(7, -1090314642, 1056006422, 1043935118, -1107459099)\n\t\t+ W(8, 1017968792, -1124530814, 1023517229, -1113483013)\n\t\t+ W(9, -1141826407, 1034240002, -1124783482, 1032935811)\n\t\t+ W(10, 1021729984, 1005857263, -1126326370, 1015994888)\n\t\t+ W(11, 1013997779, -1134900259, -1135264403, 1001043447);\n\tWS(-1104754908, -1106735671);\n\tsum1 = W(0, 1030490103, 1032595044, -1128810020, 1032319302) + W(1, 1019231224, 1025969502, 1016077744, 1024124136)\n\t\t + W(2, -1117923535, 1002237924, -1122216143, -1120462507)\n\t\t + W(3, 1025980110, -1123369072, 1034830735, -1104242198)\n\t\t + W(4, -1088908700, -1094516030, -1092804364, -1102093923)\n\t\t + W(5, -1088198897, -1096286026, -1102086589, -1103741447)\n\t\t + W(6, 1033028505, 1029213684, 1050263192, 1063837581) + W(7, 1058220138, 1054477272, 1045907999, 1049334234)\n\t\t + W(8, 1045999740, -1144798556, 1022746927, -1106958295)\n\t\t + W(9, -1107413149, 995801516, -1115665070, 1030012489)\n\t\t + W(10, -1120248133, 1015682178, -1129595020, 1030078356)\n\t\t + W(11, 1021953856, -1153493672, 1019926661, 1022398552);\n\tsum2 =\n\t\tW(0, -1116247065, 1015145430, 986051432, -1117862601) + W(1, -1114715779, 1034116930, -1144744186, 1026244953)\n\t\t+ W(2, 1035833889, -1107082251, -1114579693, 1043695503)\n\t\t+ W(3, 1039299404, -1114493167, -1120378069, 1019204162)\n\t\t+ W(4, -1087068607, -1079268655, 1022672030, 1067901888) + W(5, 1059152338, 1008422125, 1020328850, -1111927269)\n\t\t+ W(6, -1107323417, -1102842161, 1049680335, 1032100715) + W(7, 1040660749, -1115195239, 1018816198, 1021018582)\n\t\t+ W(8, -1109274147, 1016322550, -1111459111, 1026073955) + W(9, 992278036, -1173738319, 1033325633, -1123657301)\n\t\t+ W(10, 1021616338, -1133554677, 1010843781, 1017398706)\n\t\t+ W(11, 998891466, -1139208557, -1138764845, 1016479082);\n\tWS(-1092340590, -1082645376);\n\tsum1 =\n\t\tW(0, 1018128252, 1018184990, 1028162329, -1117677972) + W(1, -1115495745, -1115409474, 1015642046, -1118723567)\n\t\t+ W(2, 1033191659, -1106475329, -1101261661, -1102532636)\n\t\t+ W(3, 1031605429, 1010011868, -1127814216, -1112449263) + W(4, 1040446513, 1036685563, 1061713267, 1042646693)\n\t\t+ W(5, -1089327101, -1106573237, -1105713919, -1112423953)\n\t\t+ W(6, -1112709788, -1105689791, -1086509296, 1038532783) + W(7, 1064314083, 1046976369, 1039016129, 1030956248)\n\t\t+ W(8, 1031456758, 1040219053, 1042438664, -1111899057) + W(9, -1100451664, -1105951352, 1010066702, 1022848097)\n\t\t+ W(10, -1113441282, -1127103440, -1123459213, 1018898486)\n\t\t+ W(11, 1033438227, 1029058545, 1013299750, -1130132966);\n\tsum2 =\n\t\tW(0, -1107775669, -1121347079, -1118975841, -1121125435)\n\t\t+ W(1, -1123325897, 1012434826, -1129695564, 1006663086) + W(2, 1040551451, 1042459857, 1031184422, -1152381105)\n\t\t+ W(3, -1105935240, -1115286413, -1124425722, -1111096901)\n\t\t+ W(4, 1027302533, -1122087227, 1016161914, 989383522) + W(5, 1045806619, -1125562074, -1111270899, -1114174571)\n\t\t+ W(6, 1033412933, -1113656153, 1035641742, -1114487413) + W(7, 1041762467, 1029416951, 1028252326, -1127668218)\n\t\t+ W(8, -1135101756, 1017950151, -1109563699, 1046120628) + W(9, -1114574520, 1035110196, 998528980, 997585257)\n\t\t+ W(10, -1131050762, -1130160250, 1017438602, 987844130)\n\t\t+ W(11, -1117833439, -1173771715, -1121778743, -1126450718);\n\tWS(1052284526, 1042464092);\n\tsum1 = W(0, 1010280196, -1136974408, 1026365340, 1020617774)\n\t\t + W(1, 1023947782, -1127515216, -1129271461, 1007810505)\n\t\t + W(2, 999914700, -1110845507, -1109035161, -1110448219)\n\t\t + W(3, -1110075532, 1038195741, -1114945332, 1019473092) + W(4, 1057530557, 1046554367, 1060667985, 1063323154)\n\t\t + W(5, 1043924417, 1050039723, 1042422080, 1052688005)\n\t\t + W(6, -1098111272, -1100087104, -1090659644, -1094987596)\n\t\t + W(7, -1095988958, -1097163609, -1105136802, -1095692091)\n\t\t + W(8, -1101387838, -1110795931, -1102616600, -1105684762)\n\t\t + W(9, -1124311688, 1018127786, -1124435598, -1114597706)\n\t\t + W(10, 1027464615, -1128121686, 1001926272, 1025859742)\n\t\t + W(11, 1017827156, 1034844538, -1130637466, 1027019478);\n\tsum2 = W(0, 1025355846, -1124685033, 1029205900, 1011755468)\n\t\t + W(1, -1113277680, 1035269289, -1122502097, 1013457876)\n\t\t + W(2, -1119913429, 1010871130, 1016143206, 1033794365) + W(3, -1140030878, 1020099653, 991986873, 1035095720)\n\t\t + W(4, 1034044275, 1036346050, -1128364593, -1133342818) + W(5, 1020927778, 1035477071, 1011575434, 1029499077)\n\t\t + W(6, -1140464466, 1032812135, 1071964190, 1067600837) + W(7, 1039362648, 1033733070, 1008065452, 994468553)\n\t\t + W(8, -1091074448, -1086522508, -1074918519, -1089329657)\n\t\t + W(9, -1106053895, -1108456989, -1146528221, -1106105254)\n\t\t + W(10, 1041357090, 1037018199, 1033277276, -1111447139)\n\t\t + W(11, -1118126225, 1032003060, -1117647411, 1009180302);\n\tWS(-1085785015, -1080175544);\n\tsum1 = W(0, 1035373246, -1125806618, -1118822551, 1044894533)\n\t\t + W(1, -1102223008, 1041222777, 1023709757, -1122183565)\n\t\t + W(2, -1103151077, 1045216768, -1094452856, 1039875576)\n\t\t + W(3, -1151103277, -1094574331, 1048044105, -1103877399)\n\t\t + W(4, 1058377668, 1050584367, 1054861331, 1046782533) + W(5, 1057861265, 1051791466, 1043274206, 1058273114)\n\t\t + W(6, -1091874455, -1094766367, -1107649205, -1090132878)\n\t\t + W(7, -1090472533, -1111571937, -1098390656, -1092114299)\n\t\t + W(8, 1025579124, 1043611260, -1106387815, 1049375324)\n\t\t + W(9, -1115030560, -1137989279, 1049548184, -1106419572)\n\t\t + W(10, -1111695537, 1043525714, -1102079139, -1105407270)\n\t\t + W(11, -1144672552, -1102123612, 1041305154, -1116205169);\n\tsum2 =\n\t\tW(0, 998449416, -1121990028, 1039055377, -1115523342) + W(1, -1132069983, 1032292249, -1128335569, 998312734)\n\t\t+ W(2, -1118465870, 1035743758, -1103571680, 1049274722)\n\t\t+ W(3, -1106547389, -1126693677, 1034009109, -1116877357)\n\t\t+ W(4, -1124628345, 1040306990, -1098483719, 964150684) + W(5, 1024621733, -1103504000, 1043582890, -1116867442)\n\t\t+ W(6, -1148690252, 1001004257, 1060096717, 1077176219) + W(7, 1060014437, 1016774454, -1107960970, -1139511962)\n\t\t+ W(8, 1037770975, -1132010249, -1108861100, 1047972499) + W(9, -1098623231, 1034159573, 1020716885, 1042264637)\n\t\t+ W(10, -1105952484, 1037805583, -1087084008, -1070507600)\n\t\t+ W(11, -1092504349, -1105946989, 1041667680, -1102914489);\n\tWS(1041580764, 1025947967);\n\tsum1 = W(0, 1032565172, -1116825273, 1019951750, 1022134396)\n\t\t + W(1, -1111515158, 1034025399, -1110133221, -1159719714)\n\t\t + W(2, 1034662848, -1104706235, -1115255997, -1107214727)\n\t\t + W(3, -1098820316, 1032808736, -1102823188, 1021100817) + W(4, 1053611982, 1050747028, 1050206724, 1063007652)\n\t\t + W(5, 1060757006, 1052025888, 1043880105, 1052817434)\n\t\t + W(6, -1093835868, -1092905173, -1095669879, -1096926641)\n\t\t + W(7, -1089733625, 1049974094, -1099659531, -1119725058)\n\t\t + W(8, -1131110976, -1131069497, 1036897764, -1105182467)\n\t\t + W(9, -1098715869, -1104277767, -1106501955, -1106408671)\n\t\t + W(10, 1036244351, -1119290642, 1017394926, 1029927621)\n\t\t + W(11, -1106823604, 1037476046, -1114565306, -1122404893);\n\tsum2 =\n\t\tW(0, -1132209742, 986836209, -1121945777, -1170553346) + W(1, -1138085578, -1127752664, 1024317954, -1170071298)\n\t\t+ W(2, 1031078182, 1029631070, -1119773491, 1020231728) + W(3, 1023900693, -1133642976, 1016594015, -1123929889)\n\t\t+ W(4, -1131885988, 1025515900, 1029199828, -1120148774)\n\t\t+ W(5, -1122079840, 1019687015, 1019770946, -1134784812)\n\t\t+ W(6, -1109418986, -1129378830, -1113141662, 1055904551)\n\t\t+ W(7, 1057958803, 1044815557, -1115676013, 1040873658) + W(8, 969823813, 1027058278, 1030656895, -1099466937)\n\t\t+ W(9, -1089769002, -1096970616, -1105180704, -1104818759)\n\t\t+ W(10, -1135041624, 1012367442, -1116640321, 1014349374)\n\t\t+ W(11, 1019607807, 1019685270, 1040370156, 1020720783);\n\tWS(-1101021916, -1101341893);\n\tsum1 = W(0, 1026213188, -1128959914, 1026395551, -1114900877)\n\t\t + W(1, -1152047246, 1012420650, 1006057769, 1026345301)\n\t\t + W(2, -1104193847, 1029994953, -1146733010, 1036038140)\n\t\t + W(3, 1031817213, -1118727997, 1021561044, -1106810537)\n\t\t + W(4, -1099125811, -1096018912, -1093634574, -1086773562)\n\t\t + W(5, -1090412335, -1107844781, -1104575744, -1104632714)\n\t\t + W(6, 1055643976, 1049220736, 1055313981, 1052012604) + W(7, 1060627153, 1051291321, 1049980081, 1047342967)\n\t\t + W(8, 1025577212, -1111820508, -1119144868, -1127551698)\n\t\t + W(9, -1111302883, 1025725832, -1112108341, 1003961523)\n\t\t + W(10, -1110018309, 1025253614, -1114303945, -1123712161)\n\t\t + W(11, 1028280877, -1119269431, 1031833384, 999050183);\n\tsum2 =\n\t\tW(0, -1131988010, 1023490159, -1126411872, -1164111651) + W(1, -1121501747, 1031886393, -1117332099, 1035364539)\n\t\t+ W(2, -1111316079, 1007442131, -1122871173, 1046145376) + W(3, 1040330964, -1109560063, 1016982738, 1005935896)\n\t\t+ W(4, 1041465340, -1100903601, 1038743702, -1093182708)\n\t\t+ W(5, 1049859497, -1098635398, 1035352171, -1113093917) + W(6, 1024389323, 1055734435, 1080207498, 1078445253)\n\t\t+ W(7, -1068399047, -1066503158, -1109489195, 1012210427)\n\t\t+ W(8, -1121573843, -1125698351, 1043717463, 1049726225)\n\t\t+ W(9, -1122596352, -1100760677, -1113462329, 1035980752)\n\t\t+ W(10, -1149117460, -1131908940, -1114017647, -1119425741)\n\t\t+ W(11, 1019240934, 1009702615, 1032687935, -1141270643);\n\tWS(1046490332, 1041425064);\n\tsum1 = W(0, 1024529499, 1033054902, 1031945755, -1146773895) + W(1, 1029605664, 1004520717, 1031502108, 1024614604)\n\t\t + W(2, -1116828595, 1002731779, 1040980232, -1160896989) + W(3, 1052617834, 1015420456, 1044142352, 1032157630)\n\t\t + W(4, -1093042204, -1098109922, -1092614541, -1086741475)\n\t\t + W(5, -1091564618, -1090483479, -1094325635, -1086427940)\n\t\t + W(6, 1043650965, 1045029126, 1058500980, 1055608303) + W(7, 1058257970, 1019101890, 1041689704, 1049761551)\n\t\t + W(8, 1015429414, -1106337284, 1033182334, -1109695552)\n\t\t + W(9, -1174108025, 1029823567, -1123497953, 1041880275)\n\t\t + W(10, 1019425762, 995804238, 1032419541, -1179835378)\n\t\t + W(11, 1044059953, -1127672093, 1032927635, 1040104968);\n\tsum2 = W(0, -1122431319, -1114479591, 1024826864, -1100833312)\n\t\t + W(1, 1043724086, -1109354990, -1130104331, 1015245663)\n\t\t + W(2, 1026151548, -1106953243, 1048064546, -1097347844)\n\t\t + W(3, 1037967160, -1109085075, -1110876131, 1007980535) + W(4, -1122010793, 999999917, 992235770, 1040448763)\n\t\t + W(5, 1044292364, 1032432738, -1143420941, 1040568157) + W(6, 1049905644, -1108260971, 1050719290, 1045454882)\n\t\t + W(7, 1049686405, -1111087807, -1098496523, 1043523736)\n\t\t + W(8, -1102178930, -1125976243, -1123774104, -1096948195)\n\t\t + W(9, 1038302972, -1108325988, -1118752296, -1113347688)\n\t\t + W(10, -1124048569, -1126306455, 1025075060, -1105554812)\n\t\t + W(11, 1034346164, -1114960687, 994535386, 1032072922);\n\tWS(-1096079726, -1086813702);\n\tsum1 = W(0, -1135457777, 1020632987, -1136898909, 1041289173)\n\t\t + W(1, 1012368645, 1002632984, 1024629150, -1127204699)\n\t\t + W(2, -1105268453, -1134572551, -1100910973, -1166801940)\n\t\t + W(3, 1038525034, -1102504381, 1029902179, -1110256943)\n\t\t + W(4, 1045566625, 1038076635, -1141635906, 1058638213) + W(5, -1104077708, 1033251913, 1009307365, 1022942147)\n\t\t + W(6, -1104980990, -1125909619, -1094783105, 1057673490)\n\t\t + W(7, -1100424110, -1111352769, 1012100357, -1133590617)\n\t\t + W(8, -1105625101, -1145052038, 1032999502, 1030475041)\n\t\t + W(9, -1113674176, -1113040784, 992583714, -1114381639)\n\t\t + W(10, -1128467237, 1035122115, -1125440663, 1035865453)\n\t\t + W(11, 988204202, -1119749552, 1027550920, -1124393059);\n\tsum2 =\n\t\tW(0, 1009177065, -1120740066, 1031366584, 1041576942) + W(1, -1100270767, 1045439690, -1125959183, 1033773937)\n\t\t+ W(2, -1117003048, 1013092463, -1102800003, -1090661723)\n\t\t+ W(3, 1059100650, -1097382737, 1022453518, -1106788899) + W(4, 1042183695, 1025589372, -1111208570, 1068855162)\n\t\t+ W(5, -1085550755, 1044086134, 1032267243, 1025170288) + W(6, -1105766164, 1042721142, -1149080533, 1040487387)\n\t\t+ W(7, 1023619821, -1099098175, -1126080241, -1106320787)\n\t\t+ W(8, -1112946812, -1113055730, -1103263899, 1030911277)\n\t\t+ W(9, -1103276630, -1114239046, -1107084863, 1019625936)\n\t\t+ W(10, 1019480223, 1026018809, 1020058227, 1007104581)\n\t\t+ W(11, 1029611268, -1162581429, 1037226018, -1116554192);\n\tWS(1059841719, 1028884484);\n\tsum1 = W(0, -1113543486, -1112448166, -1123514455, 1014814024)\n\t\t + W(1, -1116573889, -1120616579, -1132301434, -1127146586)\n\t\t + W(2, -1108411818, -1111506273, -1104706915, -1096756366)\n\t\t + W(3, -1106354949, -1107115957, -1117349474, -1105758103)\n\t\t + W(4, -1112074625, 1034453786, 1033474668, 1052483434) + W(5, 1048710884, 1049505778, 1050151687, 1056594572)\n\t\t + W(6, 1058342439, 1041783662, 1050338440, 1043430567)\n\t\t + W(7, -1116369607, -1117001986, 1011608836, -1106214629)\n\t\t + W(8, -1101044205, -1112657624, -1103529079, -1099567912)\n\t\t + W(9, -1110811775, -1119641312, -1133908615, -1113349351)\n\t\t + W(10, -1143395087, -1122260358, -1124590486, -1132902244)\n\t\t + W(11, -1118491109, -1118809775, 996976763, -1114523384);\n\tsum2 = W(0, -1131846847, 999597315, 997751878, -1114921220) + W(1, 1031101790, -1115596944, 1024706196, -1120544321)\n\t\t + W(2, -1142019487, 973346488, -1127636492, -1114646695)\n\t\t + W(3, -1098897499, 1027087956, -1111832500, 1029100436)\n\t\t + W(4, -1119272484, -1113005256, -1113445057, 1055277760)\n\t\t + W(5, 1032426103, 1036539833, -1114392819, 1010252474) + W(6, 1043688817, -1112114230, 1056371527, 1041350431)\n\t\t + W(7, 1038923617, -1123786644, -1130636099, -1123180191)\n\t\t + W(8, -1110979463, -1112619479, -1097247478, 1019660165)\n\t\t + W(9, -1105379211, 1026606310, 1012894502, -1125326592)\n\t\t + W(10, -1128104285, 1003422803, 1021279303, -1127196333)\n\t\t + W(11, -1138766624, -1129408714, -1130181692, -1164469676);\n\tWS(-1092619630, -1089382730);\n\tsum1 = W(0, -1111364766, 1043539187, 984781533, 1030068626) + W(1, 1026274177, -1111039089, 1024515101, -1120853581)\n\t\t + W(2, 1023648980, 1020312451, -1115220152, -1101226428)\n\t\t + W(3, 1038621209, -1105671421, -1101912057, 1015856825)\n\t\t + W(4, 1039669985, -1096148415, 1055391282, 1026945555)\n\t\t + W(5, -1081505706, 1045179252, -1132720100, 1027675681)\n\t\t + W(6, -1112475547, 1048019422, -1085560118, 1059189430)\n\t\t + W(7, 1059392734, -1105049488, 1041558112, -1133761880)\n\t\t + W(8, -1102256285, 1027548272, 1048070471, -1108016176) + W(9, 1040580240, 1037378816, 1031071010, 1032748839)\n\t\t + W(10, 1036516737, -1110790259, 1016263062, -1120756633)\n\t\t + W(11, 1007770772, 1034683832, -1109624324, 1021933410);\n\tsum2 =\n\t\tW(0, 1021752691, -1117827136, -1125983252, 990310070) + W(1, -1109957501, 1040724727, -1109878975, 1031887118)\n\t\t+ W(2, -1111677325, 1031932470, -1130612142, -1104195843)\n\t\t+ W(3, -1168184730, -1105272655, 1035492359, -1103738768)\n\t\t+ W(4, -1108952074, -1110048197, 1045228241, 1051763659)\n\t\t+ W(5, 1028013889, -1136328910, -1114456338, -1114723198) + W(6, 1033183913, 1038437939, 1050756049, 1045197632)\n\t\t+ W(7, -1115591069, -1123843648, -1120329563, 1035246991)\n\t\t+ W(8, 1044091848, -1103930854, 1008734718, -1105931725)\n\t\t+ W(9, -1149204891, 1020655719, -1120613434, -1121689275)\n\t\t+ W(10, -1113755692, 1027358915, -1104619422, 1032921649)\n\t\t+ W(11, -1117367196, -1140627498, 1033876328, -1121880867);\n\tWS(1051433070, 1041054969);\n\tsum1 = W(0, 1027474774, 995089009, 1034863641, -1109189270) + W(1, 1039503310, -1126811322, 1033371404, 1010666397)\n\t\t + W(2, 1025557871, 1019369911, 1049084179, 1046403907) + W(3, 1044512531, 1035909664, 1033234174, 1028564471)\n\t\t + W(4, -1105663671, 1032468488, -1096978722, -1082587707)\n\t\t + W(5, -1102025153, -1107200379, -1104819461, -1106755535)\n\t\t + W(6, 1035613609, 1037418314, 1039456478, -1080639932) + W(7, 1026454114, 1042549431, 1042229543, 1034360184)\n\t\t + W(8, 1041537220, 1036952965, 1041156238, 1049567823) + W(9, 1040087661, 1039105725, -1131034584, 1031577769)\n\t\t + W(10, 1027665948, -1122283488, 1041167849, -1112387034)\n\t\t + W(11, 1039611744, -1137459494, 1031071714, 1033297350);\n\tsum2 =\n\t\tW(0, 1039097792, -1128793460, -1140010118, 1022871695) + W(1, -1138263433, -1112923836, 1026478628, -1110368657)\n\t\t+ W(2, -1103860174, -1106733661, 1043000544, -1106671798)\n\t\t+ W(3, 1046664654, -1123142296, 1037719970, 1042580191) + W(4, -1106228186, 1050938198, -1100268114, 1039252188)\n\t\t+ W(5, -1099105674, -1121884665, -1100173198, 1034926170)\n\t\t+ W(6, 1004583985, -1097187313, 1021007203, 1053089515) + W(7, 1048715277, -1114597930, 1047464456, -1106315502)\n\t\t+ W(8, 1031892389, 1046933969, -1107049139, 1049075999)\n\t\t+ W(9, -1103930146, 1022883749, -1098080196, -1108178582)\n\t\t+ W(10, -1133334119, -1107245750, 1039577114, -1104825734)\n\t\t+ W(11, 1030321621, -1117968576, 1036807670, 1018138445);\n\tWS(-1097236334, -1078251511);\n\tsum1 = W(0, -1147379729, 981774949, -1145120489, -1112510828) + W(1, 975327689, 1008364580, -1140670990, 1022969831)\n\t\t + W(2, -1107131303, 1007351583, 1033603653, 1043141838) + W(3, 1029606457, 938727969, 1020032977, -1108966769)\n\t\t + W(4, -1102832418, -1125527926, -1095625930, -1082084799)\n\t\t + W(5, -1090577043, -1093823475, -1098508888, -1096801949)\n\t\t + W(6, 1058323440, 1053289720, 1056660465, 1032726417) + W(7, 1058345481, 1053416161, 1046390514, 1049766564)\n\t\t + W(8, 1023750586, -1121375351, 1026746467, 1033795604)\n\t\t + W(9, 1025947909, -1131151340, -1119905544, 1037296218)\n\t\t + W(10, -1116361496, -1124892056, -1128008098, -1117973855)\n\t\t + W(11, -1148460889, -1125502955, 999577711, 1010324189);\n\tsum2 =\n\t\tW(0, 1024894779, 1020144998, -1118791847, 1007750652) + W(1, -1137666916, 1023698735, 1009542396, -1129126018)\n\t\t+ W(2, -1102276353, 1025017931, -1107221556, 1046635995) + W(3, -1132306598, 1023586615, 1030880679, 1015842286)\n\t\t+ W(4, -1120020336, -1096890621, 1050182775, 1039741552)\n\t\t+ W(5, 1043589185, -1108361045, -1114600836, 1024872627)\n\t\t+ W(6, -1081787381, -1080908066, -1102161510, 1072604155)\n\t\t+ W(7, 1055213170, -1115556916, 1037616572, -1105259074) + W(8, 1039662448, 992888305, -1130889346, 1039835396)\n\t\t+ W(9, -1110509653, -1122324709, 1000980713, -1124270218)\n\t\t+ W(10, 1023553607, -1118655405, -1120230550, -1126400334)\n\t\t+ W(11, 1020541198, 1020891302, -1119304668, 1033066840);\n\tWS(-1095840110, 1065907853);\n\tsum1 = W(0, -1149009607, 1029310442, -1122029108, -1136794300)\n\t\t + W(1, -1118254622, -1132243967, -1126823604, 1010554921)\n\t\t + W(2, -1123781617, -1130903741, -1115466131, 964920945)\n\t\t + W(3, -1115351608, 1043406509, -1116119295, 1040435870) + W(4, 1057715094, 1048478500, 1058442742, 1045634572)\n\t\t + W(5, 1052165513, 1053323726, 1042519141, 1051535704)\n\t\t + W(6, -1102734645, 1041326469, -1088947208, -1083008792)\n\t\t + W(7, -1096684061, -1089856222, -1127763004, -1095672430)\n\t\t + W(8, -1101560548, 1036129479, -1107277134, -1109559039)\n\t\t + W(9, 1036543086, 1024712701, 1009014011, -1114598742) + W(10, 1034276991, 1021921030, 1036949012, 1024401462)\n\t\t + W(11, -1114280609, 1035777670, -1132072137, 1024787534);\n\tsum2 =\n\t\tW(0, -1122765153, -1119761608, -1115823403, -1123357438)\n\t\t+ W(1, -1105805209, 1031734555, -1111986136, -1126486235)\n\t\t+ W(2, -1112086475, -1118318168, -1121250504, -1119202357)\n\t\t+ W(3, 1024515185, -1130234658, -1134784044, 1026675759) + W(4, 1040388299, 1023061820, -1128744886, 1057284387)\n\t\t+ W(5, -1103324019, 1037222780, -1110952019, -1117543075)\n\t\t+ W(6, 966593378, -1102263327, -1110151426, 1059190541) + W(7, -1106793279, 1050053336, -1107073751, 1021583022)\n\t\t+ W(8, -1114107386, -1113965021, 1045334069, -1118800384)\n\t\t+ W(9, -1164047122, 1025627836, -1114668630, -1124432766)\n\t\t+ W(10, 975247631, -1137846028, -1111548146, 1023792011)\n\t\t+ W(11, -1112106446, 1020007628, -1125560981, -1131408661);\n\tWS(1024351088, -1094038469);\n\tsum1 = W(0, 1016930687, 1024919184, 988693323, 1038267403) + W(1, 1001354275, -1123840710, -1125725377, -1120680465)\n\t\t + W(2, 1038061004, -1118029957, 1005748798, 1038925818) + W(3, 1032752795, 1034287148, -1110688307, 1036629872)\n\t\t + W(4, 1052546457, 1050276351, 1052906127, 1062157201) + W(5, 1055274272, 1050137483, 1036684158, -1112935826)\n\t\t + W(6, -1086527812, -1103330015, -1085615881, -1097782940)\n\t\t + W(7, -1088621706, -1090365828, -1108159426, -1098987606)\n\t\t + W(8, 1040515838, 1027568116, 1040353352, -1124671689) + W(9, -1113419105, 1017331974, 1018660298, 1039926041)\n\t\t + W(10, 1006605995, 1004978763, 1030413326, 1031140124)\n\t\t + W(11, 1009586849, 1023985459, -1129057942, -1120649652);\n\tsum2 =\n\t\tW(0, 1018662896, -1131745232, -1136728576, -1110788716)\n\t\t+ W(1, -1123530251, -1101470606, -1110519714, -1125138150)\n\t\t+ W(2, 1033363591, 1031409358, 1036576685, 1060006588) + W(3, 1052968790, -1102632350, -1105224546, -1083015355)\n\t\t+ W(4, -1101021011, -1109130821, -1097527529, 1058553385)\n\t\t+ W(5, 1023922010, 1057288665, -1111209476, 1034932287) + W(6, -1107389045, 1050735765, 1043333749, -1120731420)\n\t\t+ W(7, -1100470754, -1097217661, 1038218737, 1047940150)\n\t\t+ W(8, 1013978472, -1122086781, 1029525730, -1118628277)\n\t\t+ W(9, -1117232951, -1112638769, -1121310567, 1023530026)\n\t\t+ W(10, -1120396150, 1024022584, 1015209616, 1030135008)\n\t\t+ W(11, 1018906596, -1121049341, 1024891644, -1113292326);\n\tWS(-1086599863, 1058406314);\n\tsum1 = W(0, -1165120005, -1133002117, -1129945046, 1024249318)\n\t\t + W(1, -1119162837, 1026085015, -1121003281, -1127955907)\n\t\t + W(2, 1027409257, -1121445206, -1106007410, -1105883025)\n\t\t + W(3, -1105279538, -1127421331, -1109094875, 1024561201)\n\t\t + W(4, 1060099497, 1049800473, 1059141168, 1051534797) + W(5, 1058010671, 1051659429, 1047889907, 1050835423)\n\t\t + W(6, -1093079745, -1099695891, -1091476505, -1093891126)\n\t\t + W(7, -1094225343, -1106347590, -1098091099, 999784785)\n\t\t + W(8, -1114693988, 1033258882, -1129815521, -1124179562)\n\t\t + W(9, -1106482085, -1112036922, 1030868870, -1097732400)\n\t\t + W(10, 1019186220, 1025328858, -1128567742, 1017248474)\n\t\t + W(11, -1123837177, 1031899202, -1123224348, -1141903913);\n\tsum2 = W(0, -1116781913, 1016621488, -1133566515, -1124282558)\n\t\t + W(1, 1034216133, -1128560494, 991940908, 1017899660) + W(2, 1031543998, 1029140379, 1044191480, -1105795809)\n\t\t + W(3, 1017978886, -1175609568, -1120640387, 1019924506)\n\t\t + W(4, 1082393585, 1078957479, -1080327233, -1065075267)\n\t\t + W(5, -1076777978, 1030943022, -1110243052, -1113970478)\n\t\t + W(6, 1050004941, 1028477447, -1104837212, -1086493521)\n\t\t + W(7, -1109285108, 1045155438, 1033432207, -1130476854)\n\t\t + W(8, 1025243259, 1010603263, -1125439138, -1117319975) + W(9, 988101688, 1024551608, -1129511338, 1020472787)\n\t\t + W(10, -1123250937, -1125975170, 1007793087, 1028403247)\n\t\t + W(11, -1125200922, 1020903576, -1119399555, 1028374268);\n\tWS(-1102531292, -1104168529);\n\tsum1 =\n\t\tW(0, -1149508566, -1156103398, 1005530819, 1019304359) + W(1, -1111288609, -1152861762, -1123770879, 992160490)\n\t\t+ W(2, 1032023755, -1123937923, -1114986325, -1105594348)\n\t\t+ W(3, -1100927253, 1042848102, -1131000647, 1048571064) + W(4, 1058049088, 1044530702, 1057825341, 1061967565)\n\t\t+ W(5, 1057378026, 1043852869, 1032195229, 1021567685)\n\t\t+ W(6, -1091020399, -1093487559, -1088576155, -1113700815)\n\t\t+ W(7, -1096522221, -1100187457, -1097716728, -1095320739)\n\t\t+ W(8, -1123106485, 1028416434, -1124442300, -1132463754)\n\t\t+ W(9, -1107169312, 1030031137, -1127676038, 1015048992) + W(10, 1018386839, 1022122127, 1027828556, 1023613146)\n\t\t+ W(11, -1118265958, 1031835352, -1124424850, -1151822630);\n\tsum2 =\n\t\tW(0, -1112466451, -1130983341, 1032826781, -1114093653) + W(1, 1040752192, -1154197073, 1026229169, 1032051747)\n\t\t+ W(2, 1034684305, 1035765483, -1117553496, -1101908611)\n\t\t+ W(3, -1105770401, -1106309648, 984953298, -1113409477)\n\t\t+ W(4, -1101371049, -1113050760, -1096382267, 1063677104)\n\t\t+ W(5, -1132405995, -1114901667, 1023704972, -1104964374)\n\t\t+ W(6, -1100658772, -1100149859, 1042208912, 1062452463)\n\t\t+ W(7, 1047214162, -1095028755, -1109270652, -1107539022)\n\t\t+ W(8, 1043071493, 1039321546, -1131759707, -1106482074) + W(9, -1105645940, 1034888818, 1035103126, 1008251057)\n\t\t+ W(10, -1119405084, -1140521940, -1127348451, 1028341682)\n\t\t+ W(11, 1022142418, -1118255322, -1118485150, 1025943565);\n\tWS(-1107552696, -1110437397);\n\tsum1 =\n\t\tW(0, 994440345, -1123893979, -1123659045, 1033249360) + W(1, -1115012423, 1025628848, -1120012907, -1138236651)\n\t\t+ W(2, -1114854865, -1115498472, -1107252796, -1098484960)\n\t\t+ W(3, -1105215024, -1113844817, 1015022176, -1112267573)\n\t\t+ W(4, 1038159592, -1143015444, 1048547885, 1066459081) + W(5, 1050116824, -1114931568, -1139703834, 1030992175)\n\t\t+ W(6, -1169396004, -1103811554, -1102945115, 1054059005)\n\t\t+ W(7, -1110458371, 1027966800, -1137430074, 1038350450)\n\t\t+ W(8, -1112745281, -1176837895, -1113210869, -1092775086)\n\t\t+ W(9, -1107508006, -1115481499, -1123286831, -1114208046)\n\t\t+ W(10, 1003079356, -1126823399, -1127252913, 1036761683)\n\t\t+ W(11, -1117476787, -1139958260, -1143819946, -1119805695);\n\tsum2 =\n\t\tW(0, -1128900045, -1134566747, 1023101249, -1119409466) + W(1, 1014344875, -1124604689, -1135550339, 1011013307)\n\t\t+ W(2, 1032112026, -1121844433, 1024457633, 1041370918) + W(3, -1138667107, 1023011873, -1123574415, 1018662193)\n\t\t+ W(4, -1122103841, 1023900033, -1130431017, 1071310745) + W(5, 1015570157, 1025187637, 1029193653, -1118001398)\n\t\t+ W(6, 1020429393, 1031965476, 1010339139, -1073631838) + W(7, 1024644617, 1038341472, -1117036677, 1034637136)\n\t\t+ W(8, -1123818335, -1168200234, -1111989275, -1111141033)\n\t\t+ W(9, -1128248465, 1032459330, 999769253, 1020580065) + W(10, 1025087925, -1116320886, 1037399444, -1131868341)\n\t\t+ W(11, 1027301561, -1118206868, -1124415769, -1136885571);\n\tWS(-1106869980, -1095812171);\n\tsum1 = W(0, 998635262, -1132768195, 1031165051, -1109012795) + W(1, 1031921458, 959153786, 1015400066, 1020404450)\n\t\t + W(2, 1030538232, 1032306163, 1040655940, 1049530762) + W(3, 1035845131, 1029124089, 1034791747, -1126776961)\n\t\t + W(4, -1104276842, 1027943897, -1094369165, -1079963696)\n\t\t + W(5, -1094529094, -1138415831, -1107836910, -1127281161)\n\t\t + W(6, 1021368885, 1042581143, 1043839724, -1098205560) + W(7, 1041010327, 1043286153, 1040781721, 1032119517)\n\t\t + W(8, 1037657452, -1130589992, 1045125152, 1052736873) + W(9, 1041646697, 1033263566, -1127518347, 1032079673)\n\t\t + W(10, 1012233735, -1127936403, 1030674671, -1106402911)\n\t\t + W(11, 1035635524, -1117746707, 1026900011, 1007765715);\n\tsum2 =\n\t\tW(0, -1137391706, -1152109415, 1015680093, -1108578627) + W(1, 1012334874, -1126811133, -1146463859, 1013671002)\n\t\t+ W(2, 1016897725, -1123613558, 1031100358, 1031185182) + W(3, 1018767069, 1016912269, -1123894542, -1129388765)\n\t\t+ W(4, -1122041158, -1117579022, 1032233585, 1068869480)\n\t\t+ W(5, 1031129926, -1135215962, -1172726683, 1025914590)\n\t\t+ W(6, 1032188407, 1034093919, -1107212716, -1079207220) + W(7, -1118301998, 1010098650, 1010207290, 998321459)\n\t\t+ W(8, 959684203, -1123954990, -1144448755, -1112638895)\n\t\t+ W(9, -1145613555, 1002322227, -1163026381, -1185201771)\n\t\t+ W(10, 1004755699, -1142267571, 1020208893, -1131161181)\n\t\t+ W(11, 1014639674, 1010341946, -1128211133, 1014227898);\n\tWS(-1106551004, 1058945856);\n\tsum1 = W(0, -1136733265, 1029534949, 1040114552, 1023973738) + W(1, 1008178533, -1121731675, -1122738710, 998670125)\n\t\t + W(2, 1027999917, -1110759309, -1101184472, -1136820001)\n\t\t + W(3, -1120539979, 1050535890, 1036280349, -1112884987) + W(4, 1036329486, 1039804839, 1055915689, 1045009467)\n\t\t + W(5, -1099722578, -1092228133, -1110742697, -1133144549)\n\t\t + W(6, 1021052191, -1090459221, -1088507490, -1102642413)\n\t\t + W(7, 1057115504, -1141944531, 1036514925, 1024140334)\n\t\t + W(8, -1112842790, 1042972690, -1116549941, 1048917175)\n\t\t + W(9, -1103385510, 1042662182, -1123309658, 1040183891)\n\t\t + W(10, 996925861, -1126301053, 1035692146, -1116120689)\n\t\t + W(11, 1032281663, 1025401864, -1122836256, 1009223461);\n\tsum2 =\n\t\tW(0, -1166199047, 1008667864, -1137339492, -1142224481) + W(1, -1152330850, 1020018908, -1116618549, 1015962596)\n\t\t+ W(2, 1029866216, -1111274931, 1026227362, -1119220040)\n\t\t+ W(3, 1031356244, -1116678638, 1026327024, -1189397276)\n\t\t+ W(4, -1143586281, 1037662319, 1052978055, -1079795268)\n\t\t+ W(5, -1109068899, 1041694498, -1122243464, 1027749752) + W(6, 1016771040, 1050961303, 1073672156, -1075413433)\n\t\t+ W(7, 1029037052, 1026323256, 1021575344, -1119692611) + W(8, -1123676489, 1039205717, 1048063806, 1028203090)\n\t\t+ W(9, -1113725553, -1115208722, 1002430881, -1114291930)\n\t\t+ W(10, -1174784654, -1119230230, -1117826448, 1028246046)\n\t\t+ W(11, -1160612324, 1024440460, -1126523302, 1031666290);\n\tWS(1045979868, -1116118129);\n\tsum1 = W(0, 1019079208, -1124899402, -1142300538, 1011594153)\n\t\t + W(1, -1134190949, -1132197046, -1116332853, -1135144470)\n\t\t + W(2, -1115974509, -1114857165, -1110287856, -1099509298)\n\t\t + W(3, -1112842949, -1107483943, -1111331677, 1018268010)\n\t\t + W(4, 1054347779, 1046800787, 1053005207, 1063937495) + W(5, 1058166871, 1048177899, 1047873428, 1056893199)\n\t\t + W(6, -1096855346, -1098629066, -1093283235, -1097005655)\n\t\t + W(7, -1090046872, -1104885511, -1102896822, -1096686406)\n\t\t + W(8, -1118610636, 1029706377, 1028644213, 1015974258)\n\t\t + W(9, 1040979430, -1129150352, 1028514810, -1118433447)\n\t\t + W(10, -1120438410, 1017939836, -1131155654, -1116499825)\n\t\t + W(11, -1119992573, -1120133576, -1118080608, -1112688517);\n\tsum2 =\n\t\tW(0, -1132220574, -1115410889, 1017347763, -1123931551) + W(1, 1027749497, -1111299822, 1025854529, -1123916419)\n\t\t+ W(2, 1034058342, -1116250603, 1029372102, -1101916549)\n\t\t+ W(3, -1104316591, 1035393713, -1107314572, 1033668899)\n\t\t+ W(4, 1008450820, -1126553639, -1105866140, 1053545154)\n\t\t+ W(5, 1054419707, -1102688086, 1036131430, -1144517652)\n\t\t+ W(6, -1132397996, -1097158033, 1060185134, 1060913993) + W(7, 1033775493, -1115290197, -1106841697, 990325833)\n\t\t+ W(8, -1105536207, -1108668742, -1106418349, -1104852271)\n\t\t+ W(9, -1106993048, -1102129692, -1149271050, -1114889391)\n\t\t+ W(10, 1025437040, -1118211898, 1034066570, -1102379864)\n\t\t+ W(11, -1133416673, -1209279719, -1133826631, -1129688184);\n\tWS(1058774455, 1069380246);\n\tsum1 = W(0, 1032626516, -1119757626, 1033017026, 1015522813)\n\t\t + W(1, -1128327131, 1036888920, 1032769109, -1148588495)\n\t\t + W(2, -1114780225, 1038823639, -1098306133, 1034533838)\n\t\t + W(3, -1103839696, -1112718001, -1126986782, 1012070438)\n\t\t + W(4, 1045065548, 1040221656, 1021036585, -1082356272) + W(5, 1057244812, 1032300191, 1043416793, 1045596067)\n\t\t + W(6, -1111975378, -1115053555, 1050529784, -1095104409)\n\t\t + W(7, -1133328720, -1111385431, -1124233691, -1105784401)\n\t\t + W(8, 1025328225, 1020222778, -1115391173, 1045288819) + W(9, -1116298540, 1042918995, 1029500622, 1037659662)\n\t\t + W(10, -1121960111, 1037972921, -1112361500, -1139302935)\n\t\t + W(11, 1018289699, -1110693582, 1027375220, -1114680879);\n\tsum2 = W(0, -1129789987, 1019234847, -1128803579, -1112792165)\n\t\t + W(1, 1011967806, 995307959, 1018394359, -1112288614) + W(2, 1017265095, -1124971531, 1043137983, 1047657371)\n\t\t + W(3, 1034970984, 1010908150, -1107223361, 1027672251)\n\t\t + W(4, -1124616639, -1114025560, -1132476030, -1114992592)\n\t\t + W(5, -1098689491, -1115509379, 1006851110, -1128503755)\n\t\t + W(6, -1116091154, 1022067335, -1102585265, 1052022695) + W(7, 1033604172, 1031244615, 1032350856, 1024636851)\n\t\t + W(8, 1033010488, -1114442452, 1028851843, -1115343414)\n\t\t + W(9, 1002830796, -1121158047, -1114060980, 1027935499)\n\t\t + W(10, 1011223606, -1117824661, 1031833634, -1136738894)\n\t\t + W(11, 988094894, 1025799099, -1118870225, -1127411999);\n\tWS(1065814108, -1098421406);\n\tsum1 = W(0, 1030554015, -1131576032, 1020712308, 1019668842) + W(1, -1178997255, 1023970854, 1011631425, 1023862096)\n\t\t + W(2, -1104400078, 1022555209, -1130072911, -1118231891)\n\t\t + W(3, 1041059117, -1115494780, 1035736611, -1104560304)\n\t\t + W(4, -1097091133, -1099298246, -1094842433, -1084181571)\n\t\t + W(5, -1098796514, -1094912271, -1090107010, -1092396649)\n\t\t + W(6, 1050276747, 1048827844, 1057743463, 1051719984) + W(7, 1058357819, 1056339293, 1051879221, 1057941592)\n\t\t + W(8, 1045406982, -1106685173, 1040093248, 1018405640)\n\t\t + W(9, -1118903138, -1115388505, -1113309730, -1118151090)\n\t\t + W(10, -1119880969, -1132305362, -1122176686, 1026194364)\n\t\t + W(11, 1004376640, 1024072531, 1009992363, 1029155252);\n\tsum2 = W(0, -1104337717, 1027104118, -1114433477, -1122138940)\n\t\t + W(1, 1048327612, 1018207462, 1015118770, 1054676844)\n\t\t + W(2, -1085961218, 1036459641, -1092980271, -1101372003)\n\t\t + W(3, -1098271754, -1115566688, -1101224844, -1105452167)\n\t\t + W(4, 1065899128, -1117484391, 1062039746, 1077763913)\n\t\t + W(5, -1088377514, -1079225367, -1106150830, -1079350028)\n\t\t + W(6, 1055232204, -1101810882, 1049041629, 1071302707)\n\t\t + W(7, -1084489503, -1087139921, 1036291830, -1090077553)\n\t\t + W(8, -1090132108, 1052764213, -1092098978, -1123596042)\n\t\t + W(9, 1027311380, 1042626102, -1105072819, 1053993534) + W(10, 1023963317, 1014918739, 1035158266, 1027553578)\n\t\t + W(11, -1115760458, 1025357528, 1032466828, -1115160051);\n\tWS(-1083527351, -1082119000);\n\tsum1 = W(0, 1025283773, -1132057884, 1024000280, -1117776915) + W(1, 994019357, -1146975260, 1021506300, 1016847260)\n\t\t + W(2, -1100516229, 1028453762, -1124447466, 1027818609)\n\t\t + W(3, 1030853236, -1120656758, 1023329542, -1111423375)\n\t\t + W(4, -1103907601, -1097545679, -1096840081, -1088298777)\n\t\t + W(5, -1090997910, -1097629690, -1102673054, -1097673748)\n\t\t + W(6, 1054198743, 1048327710, 1054350616, 1057412078) + W(7, 1059405315, 1052404744, 1051692752, 1047886934)\n\t\t + W(8, -1139734483, -1114897689, -1109407791, -1112548849)\n\t\t + W(9, -1107996896, 1035903152, -1110888465, 1034953432)\n\t\t + W(10, -1115248201, 1021031566, -1115380998, -1139302503)\n\t\t + W(11, 1029448614, -1119316016, 1026998601, -1149960989);\n\tsum2 = W(0, 1023717076, 996584188, -1122858228, 1005163886) + W(1, 1025356913, -1118691920, 1028885707, -1114207359)\n\t\t + W(2, 1034248479, -1120794590, 1037241484, -1124781820)\n\t\t + W(3, -1115274025, 1026099362, -1121079636, 1010502519)\n\t\t + W(4, -1110594365, 1045315954, -1111180041, -1088752945)\n\t\t + W(5, -1100621689, 1052626156, -1114153113, 1038857859)\n\t\t + W(6, -1113079527, -1094151830, -1064957365, -1066051811)\n\t\t + W(7, 1081496726, 1084041658, 1034711477, -1115018893)\n\t\t + W(8, 1030579691, -1113958061, -1106054130, -1113733983)\n\t\t + W(9, 1049150725, 1032870315, 1042989109, -1106741724) + W(10, 999456782, 1021526858, 1018369486, 1031457177)\n\t\t + W(11, -1112407773, 1022214782, -1108284893, 1023330420);\n\tWS(1031453552, -1108810221);\n\tsum1 =\n\t\tW(0, -1122540068, -1141490084, -1132153597, 1029503994)\n\t\t+ W(1, -1126370513, -1127727061, -1132743443, 1024122485)\n\t\t+ W(2, -1106571135, 1028200745, -1106394603, 1029495448) + W(3, -1118016922, 1043712879, 1035505061, 1041979953)\n\t\t+ W(4, -1105389195, 1023785053, 1041720002, -1089108304) + W(5, 1047749927, -1092241143, 998106632, -1098695505)\n\t\t+ W(6, 1051764564, -1104087736, 1055195957, -1096098616) + W(7, 1047204316, 1028938666, 1043190746, 1039644831)\n\t\t+ W(8, -1121040220, 1027661528, -1111907522, 1031937892)\n\t\t+ W(9, -1112974291, 1025162247, -1152510101, 1002213552)\n\t\t+ W(10, -1136080166, 1023137883, -1123745267, 1034024448)\n\t\t+ W(11, -1121356173, 1028910871, -1121641711, 1025100697);\n\tsum2 =\n\t\tW(0, 1032316109, -1122133197, 1021061413, -1122180337) + W(1, -1115376331, -1123716599, 1008734994, -1144451812)\n\t\t+ W(2, -1117365450, 1033736971, -1117276879, 1009179554)\n\t\t+ W(3, 1034450077, -1100616286, -1130550593, -1102305630)\n\t\t+ W(4, 1028239450, -1104139010, -1090538079, 1022309577) + W(5, -1125496737, 1059658657, 1014965154, 1053491799)\n\t\t+ W(6, -1106184057, 1045998485, -1087751568, 1065712953)\n\t\t+ W(7, -1100319643, -1100023584, -1115246006, -1107982835)\n\t\t+ W(8, 1039709205, -1126266788, 1056538813, -1098763613) + W(9, 1017435581, 1022563437, 980175008, -1103966134)\n\t\t+ W(10, -1127567978, 1029398164, -1106793212, 1016414657)\n\t\t+ W(11, 1032114232, -1113653553, 1034308617, 1020870093);\n\tWS(1060627383, -1111244297);\n\tsum1 = W(0, -1124372048, -1124233202, -1115057922, -1126359548)\n\t\t + W(1, -1135390133, 999175032, -1137033126, -1120904377) + W(2, 1041984816, 1023856878, 1037843884, 1013283185)\n\t\t + W(3, -1106598024, -1109047521, -1108189319, -1127664786)\n\t\t + W(4, -1098607926, -1097555068, -1092180401, 1035134080)\n\t\t + W(5, 1055432750, 1050330552, 1046692025, 1039361415) + W(6, 1048999428, 1050454749, 1057072683, 1037566628)\n\t\t + W(7, -1088869991, -1097603878, -1106138715, -1115643873)\n\t\t + W(8, -1110297584, -1119853981, -1100337986, -1117600845)\n\t\t + W(9, 1045634091, 1040799043, -1129123036, 1042168959)\n\t\t + W(10, 1037179887, -1124350564, 1037306108, -1180500637)\n\t\t + W(11, -1107300041, -1132131255, -1126029544, -1132202938);\n\tsum2 =\n\t\tW(0, 1027553654, -1128416633, -1120268362, 1026192109) + W(1, 1010812163, -1133939099, 1033310247, 1007338654)\n\t\t+ W(2, -1105419467, 1035214610, -1102082588, 1034096310)\n\t\t+ W(3, -1109637676, 1042926233, -1103557522, 1039202903) + W(4, -1141314538, 992160749, 1039698771, 1028842291)\n\t\t+ W(5, -1128101012, -1110346070, 1041169016, -1150310139)\n\t\t+ W(6, 1051401064, -1098506313, 1041311911, 1044707561) + W(7, 1040877432, -1107620104, 1044637450, -1101325278)\n\t\t+ W(8, 1061407816, 1048701957, 1065441970, -1108357660)\n\t\t+ W(9, -1080219839, -1089748519, -1106511250, -1094091750)\n\t\t+ W(10, -1086513034, 1023990179, -1083801169, 1027929117)\n\t\t+ W(11, 1058347144, 1054974548, 1012370076, 1054706164);\n\tWS(1037089208, -1117319375);\n\tsum1 = W(0, -1117307261, -1109658215, -1104716662, -1095157370)\n\t\t + W(1, -1115283233, -1113906562, -1127634429, -1150522598)\n\t\t + W(2, -1127081515, 1037266337, 1045840649, 1048384396) + W(3, 1042005149, 1026318614, 1035073906, -1129730364)\n\t\t + W(4, -1090315640, -1103803502, -1108965493, -1089739445)\n\t\t + W(5, -1098438340, -1090508193, -1096110967, -1090097982)\n\t\t + W(6, 1055484319, 1036834781, 1059715066, 1050929076) + W(7, 1059599591, 1050537744, 1039184033, 1056916499)\n\t\t + W(8, 1019801962, -1121027890, -1120952094, -1115632913)\n\t\t + W(9, -1115851136, 1036887192, -1109698481, 994450682)\n\t\t + W(10, -1140393804, -1122236391, 1007521585, -1115666157)\n\t\t + W(11, 1038771059, -1114842616, 1040209394, 1023772594);\n\tsum2 = W(0, -1096641595, -1086741683, -1073585699, -1071753138)\n\t\t + W(1, -1078410756, -1096289506, -1145261363, 997353903) + W(2, 1051991389, 1059199896, 1069582799, 1070628328)\n\t\t + W(3, 1067042424, 1055331220, 1015112751, 1024293693) + W(4, -1107135642, 1044105651, 1057042277, 1065961920)\n\t\t + W(5, 1057516905, -1098611055, 1043415065, -1101981251)\n\t\t + W(6, -1120991144, 1025236133, -1123268190, -1098135951)\n\t\t + W(7, 1032298014, -1106950583, 1007537613, 1025642916)\n\t\t + W(8, -1123228782, 1032269711, -1116194138, -1144560253)\n\t\t + W(9, 1026966393, -1155415556, 992611856, 1011854094)\n\t\t + W(10, -1119770484, 1020415755, -1119862022, 1033682735)\n\t\t + W(11, -1113740644, 1022995083, -1144895945, -1130196038);\n\tWS(-1089262391, 1050517969);\n\tsum1 = W(0, -1112721887, 1040766980, -1116916633, -1109323658)\n\t\t + W(1, 1043853249, -1102481809, 1025978335, -1134508350) + W(2, 956356282, 1032255106, -1115255965, 1053521294)\n\t\t + W(3, -1109293354, 1024224759, 1036451442, 998852344) + W(4, 1041136081, -1099047838, 1050954387, -1090918435)\n\t\t + W(5, 1049475859, 1046323061, -1129023222, -1126452038)\n\t\t + W(6, -1112851037, -1136806893, 1047658201, -1090498606)\n\t\t + W(7, -1111100085, -1101889105, -1112184834, 1037224108)\n\t\t + W(8, -1118798326, 1044101949, -1099177336, 1048722524)\n\t\t + W(9, 1044026608, -1109421665, 1044252857, -1113020120)\n\t\t + W(10, 1033047322, -1110781188, 1022949658, 984126311)\n\t\t + W(11, -1111349460, -1151794972, -1140137768, -1119083507);\n\tsum2 =\n\t\tW(0, -1120544497, 1042905493, 1045262161, -1104438232) + W(1, 1023630957, -1122372280, 1027866949, -1121491826)\n\t\t+ W(2, -1104964203, -1097077111, -1098230931, 1057982485)\n\t\t+ W(3, -1106247773, 1011970003, 1026340389, 1016978228) + W(4, 1056285145, -1118581415, -1079914544, 1057557770)\n\t\t+ W(5, 1048964135, 1020547274, -1113753028, 1034078959) + W(6, -1109256198, 1026029661, 1056552993, -1104081201)\n\t\t+ W(7, -1114436673, 1033190701, -1107460568, 1034442922)\n\t\t+ W(8, -1107706742, 1025674690, -1103396776, 1048351556)\n\t\t+ W(9, 1018818866, -1103728916, 1046941904, -1106194166)\n\t\t+ W(10, 1033408182, -1118988963, 1021102038, -1136298684)\n\t\t+ W(11, -1112938187, 1034200267, -1117493164, -1172844144);\n\tWS(1055467886, -1126093527);\n\tsum1 =\n\t\tW(0, -1115675946, 1039731987, -1108949528, 1014043817) + W(1, 1025589529, -1102050167, 1035820699, -1114599603)\n\t\t+ W(2, 1037777366, -1126460340, -1145838757, 1049783617) + W(3, 991251120, 1042727635, -1123043835, 1024161077)\n\t\t+ W(4, 1043818615, -1103677379, 1060367897, -1102044139)\n\t\t+ W(5, -1109258124, 1049311757, -1116399889, 1046137806)\n\t\t+ W(6, -1096353162, 1012406341, -1088026493, -1095567535)\n\t\t+ W(7, 1051881528, -1095440907, 1032817677, -1116994158) + W(8, -1150025924, 1031349769, 1034695514, 1044285022)\n\t\t+ W(9, 1011738461, -1115570324, 1040150333, -1110796915)\n\t\t+ W(10, 1035905869, -1103947080, 1034985426, -1129716323)\n\t\t+ W(11, -1107675487, 1042590402, -1104125432, -1140552997);\n\tsum2 = W(0, -1115939175, 1042939513, -1106984126, 1036071940)\n\t\t + W(1, -1133154938, -1110872047, 1038271101, -1124388167)\n\t\t + W(2, -1111463085, 1009748958, -1104760450, 1026404786)\n\t\t + W(3, 1042746589, 1018643239, 1024219237, -1107044825) + W(4, 1026058510, -1101036999, 1046231331, 1060091622)\n\t\t + W(5, -1109115274, 1042116887, -1104891113, -1137025366)\n\t\t + W(6, 1015189774, 1048391804, -1101164712, 1059732347)\n\t\t + W(7, -1090421446, -1092755101, 1018386748, -1112446842)\n\t\t + W(8, -1116961377, 1019493983, 1013441892, -1113485706)\n\t\t + W(9, -1102245299, -1104832958, 1043357489, -1123717753)\n\t\t + W(10, 1003109525, -1128500291, -1127287103, 1036806652)\n\t\t + W(11, -1110906499, 1042929180, -1108912836, 1034520620);\n\tWS(1062208951, 1065603754);\n\tsum1 = W(0, 1032466911, 1012820793, 1029562264, 1020285479) + W(1, 993753125, 1033268866, -1131051261, 1028903855)\n\t\t + W(2, 1029341462, 1027274819, 997585115, 1040141401) + W(3, 1032063722, -1153074023, 1015103815, 1040294280)\n\t\t + W(4, 1059167044, 1052950767, 1057349364, -1108524682) + W(5, 1049874906, 1048703978, 1050186639, 1053103700)\n\t\t + W(6, -1090134924, -1094303727, -1085543304, -1080037127)\n\t\t + W(7, -1095616607, -1112675170, -1111683969, -1091636059)\n\t\t + W(8, -1133534677, 1027990706, 1035990447, 1037410929) + W(9, 1039846496, 1023735025, 1040888889, -1118753424)\n\t\t + W(10, 987089513, 1032570772, -1136982833, -1125543221)\n\t\t + W(11, 1015158861, -1145342854, 1031358985, 1022936933);\n\tsum2 = W(0, 1035386648, 1023547272, 1025878508, 1026832668) + W(1, 1029828312, -1098240729, 1044150428, -1103643200)\n\t\t + W(2, 1042887622, -1099060438, -1099619867, -1099104088)\n\t\t + W(3, 1048769602, -1121505868, 1040524432, -1115369075)\n\t\t + W(4, -1086410483, 1053956416, -1094814183, 1069089225) + W(5, 1044213412, 1035342184, 1040447750, 1049544904)\n\t\t + W(6, -1090258329, -1112148135, -1093316197, 1060781490)\n\t\t + W(7, -1091192206, -1105713821, -1089411157, 1058550641)\n\t\t + W(8, 1060158548, 1050315819, 1046080958, -1103190742)\n\t\t + W(9, -1105160931, -1084784918, 1058372334, -1080579858)\n\t\t + W(10, -1113981975, -1099847621, 1046524888, -1112424275)\n\t\t + W(11, 1051146364, 1019461112, 1028619520, 1040133188);\n\tWS(-1078970012, -1070975772);\n\tsum1 = W(0, 1023443287, 1008154783, 1008498119, 1032996598) + W(1, -1130007992, 1026985054, 1001505728, 1027285064)\n\t\t + W(2, -1111813336, 1034628686, 1020510238, -1119594955)\n\t\t + W(3, 1037186855, -1129455456, 1024916861, -1118416824)\n\t\t + W(4, -1095332548, -1098370186, -1091304148, -1097391342)\n\t\t + W(5, -1088889903, -1093273302, -1097878954, -1097408559)\n\t\t + W(6, 1048282532, 1052880922, 1054365856, 1065196819) + W(7, 1037830473, 1040256647, 1042516535, 1044458956)\n\t\t + W(8, 1036630695, -1109395910, 1031904252, -1105409007)\n\t\t + W(9, 1022933044, 1030320779, -1131972409, 1037289397)\n\t\t + W(10, 999582566, -1140663171, -1128098380, 1030941172)\n\t\t + W(11, 1003729918, -1138808617, 1018809669, 1005961310);\n\tsum2 =\n\t\tW(0, -1114009537, 1035366037, -1111463643, -1119334122) + W(1, -1132366661, 1001109746, 1035022899, -1112054465)\n\t\t+ W(2, 1019032853, -1143037026, -1122373240, 1056620469)\n\t\t+ W(3, -1103744316, 1002774938, -1102405348, 1046894720) + W(4, 1024640816, -1101234014, 1068131945, 1075463933)\n\t\t+ W(5, -1075751794, -1072865378, 1052446989, 1019415611)\n\t\t+ W(6, 1029944441, -1105571142, 1044188353, -1093783941)\n\t\t+ W(7, 1050699227, -1098127223, 1028903402, -1119380340)\n\t\t+ W(8, -1146945026, 1031686749, -1128619453, 1046426762)\n\t\t+ W(9, -1109652943, -1131952529, -1123943246, 1017598049)\n\t\t+ W(10, -1136399129, 1018164069, -1125359481, 999713778)\n\t\t+ W(11, -1123073190, 1019524751, 983357578, 1013611461);\n\tWS(-1137905088, -1096938393);\n\tsum1 = W(0, -1127951952, -1139830244, -1108742721, 1019792636)\n\t\t + W(1, 1018370522, 1020799581, 1021418002, -1148599498) + W(2, -1116133184, 1040763803, 1041221580, 1009683312)\n\t\t + W(3, -1107181880, 1002965001, 1022849180, 1039287108)\n\t\t + W(4, -1092624022, -1104553656, -1090149133, 1044078592)\n\t\t + W(5, 1058802794, 1043495791, 1033578226, -1113073030) + W(6, 1045295113, 1046745657, 1057147883, -1112574564)\n\t\t + W(7, -1085568476, -1103617227, 1032014262, 1022418564)\n\t\t + W(8, 1023908704, -1103252327, -1103732914, -1127338650) + W(9, 1040869579, 991652540, 1013121207, 1011288682)\n\t\t + W(10, 1031880695, 1040451684, 1026434167, 1007135764)\n\t\t + W(11, 1014113348, -1125537591, 1016284007, -1116579933);\n\tsum2 =\n\t\tW(0, 1036469548, 1017461301, 1017339130, -1095997080) + W(1, -1099654066, -1105423964, -1113359567, -1131580992)\n\t\t+ W(2, -1097965159, -1101551098, -1094477168, 1035631286) + W(3, 1054988432, 1047389393, 1041958533, 1043362318)\n\t\t+ W(4, -1116680345, -1125992347, 1058922542, -1103956246)\n\t\t+ W(5, 1040393300, 1040203374, -1108890296, 1024609216) + W(6, 1001756270, -1115644020, 1035448965, -1105032669)\n\t\t+ W(7, 1039533461, -1122662741, -1130070269, 1025676040)\n\t\t+ W(8, 1032969412, -1124365977, 1040541302, -1112710338)\n\t\t+ W(9, 1017600743, -1114085496, -1134082186, 1015920174)\n\t\t+ W(10, -1131471357, 1016380025, 1001720584, -1115585175)\n\t\t+ W(11, 1001178742, 1001141734, 1010209588, -1122393401);\n\tWS(1017525984, 1039916017);\n\tsum1 = W(0, -1124853567, -1147061122, -1129462517, -1119594613)\n\t\t + W(1, 999306018, -1156505185, 1012193026, 1010192066) + W(2, 1018048624, -1127291978, 1049183858, 1032566282)\n\t\t + W(3, 1036307723, -1150114695, -1116656134, -1111959392)\n\t\t + W(4, -1095739637, -1104996150, -1085471393, -1090223247)\n\t\t + W(5, -1104470177, -1105492077, -1109848430, -1107232129)\n\t\t + W(6, 1045916039, 1043181303, 1054258797, 1054999864) + W(7, -1108082389, 1055713893, -1134406033, 1049351719)\n\t\t + W(8, 1035770156, 1038596810, 1048116160, 1024906308) + W(9, 1035021201, -1114305018, 1014226964, -1132413284)\n\t\t + W(10, 1019449355, -1118699785, 1018729693, -1125493497)\n\t\t + W(11, -1111613764, 1013642059, -1117195563, 990662981);\n\tsum2 =\n\t\tW(0, 1033095635, -1123818427, 1023960168, -1115456886) + W(1, -1130014725, -1134763238, 1020936831, 1030713030)\n\t\t+ W(2, -1113611213, 1038354785, -1136308834, 1031365710)\n\t\t+ W(3, -1121052824, 1037262635, -1129095405, 1030934712)\n\t\t+ W(4, -1120605005, 1043017802, 1016597499, -1105318511) + W(5, 1032279133, -1129541437, 1028982810, 969324748)\n\t\t+ W(6, 1010827478, 1005632845, 1067061797, 1065783254) + W(7, 1033387493, 1024758296, -1141733133, 973320358)\n\t\t+ W(8, -1096460028, -1090567932, -1078682340, -1094955795)\n\t\t+ W(9, -1114814318, 994121897, -1126300988, -1148320949) + W(10, 992544217, 1043858115, 1041505996, -1104546945)\n\t\t+ W(11, -1114466677, -1115137122, 1007094454, -1122716507);\n\tWS(1033221560, 1063777383);\n\tsum1 = W(0, 1019126833, 1022703059, 1034317754, -1141147507)\n\t\t + W(1, 1023815261, -1145478905, -1139797991, 1017044691)\n\t\t + W(2, -1112638616, -1107233655, -1107419652, 1017313945)\n\t\t + W(3, 1030431247, 1043218964, 1030899327, 1042038278) + W(4, 1057738402, 1049316970, 1057780266, 1039925560)\n\t\t + W(5, -1101232178, -1097249286, -1105363093, -1097041200)\n\t\t + W(6, -1088696201, -1093677291, -1091493000, -1105678958)\n\t\t + W(7, 1054033952, 1050643572, 1039373871, 1044902925) + W(8, 1044063732, 1018619290, 1042363102, -1123751101)\n\t\t + W(9, -1103422471, -1099574259, -1109462943, -1143343447)\n\t\t + W(10, -1130166589, -1127677637, -1141893947, -1141892011)\n\t\t + W(11, 1028589441, 1032480102, 1000558881, -1115509735);\n\tsum2 = W(0, -1130982538, 1021127838, 1013698904, -1227267307)\n\t\t + W(1, -1180063220, -1130392938, -1129014326, 1032270489)\n\t\t + W(2, -1106875761, 1011019608, 1024572751, 1039986653)\n\t\t + W(3, -1113103478, -1104759550, 1035543741, -1129087757)\n\t\t + W(4, 1056618334, 1055137831, 1048771047, -1073860127) + W(5, -1108123535, 1059126644, 1045481337, 1042704754)\n\t\t + W(6, 1055977286, 1058761027, -1103617496, -1072531400) + W(7, 1052255088, 1063802283, 1048895081, 1016319978)\n\t\t + W(8, -1102508839, -1115387544, -1128394642, 1043687089)\n\t\t + W(9, -1126700500, -1109991236, 1031917163, -1121934766)\n\t\t + W(10, 1020425242, 1013848532, 1016018634, -1112657573)\n\t\t + W(11, 1035781641, -1125248586, -1126407949, 1030839801);\n\tWS(-1091503470, -1126838795);\n\tsum1 = W(0, -1124121237, -1113414670, 1028321829, -1111356688)\n\t\t + W(1, 1026686479, -1121133649, -1120913068, -1126384695)\n\t\t + W(2, -1134568843, -1126036384, 1033159265, 1037814911)\n\t\t + W(3, 1031580097, 1040854417, -1106928812, 1027944427) + W(4, 1047693172, 1049117760, -1105247938, 1058889082)\n\t\t + W(5, 1012762455, -1120516448, 1049438209, 1040171928)\n\t\t + W(6, -1109412515, -1103447906, -1096437464, -1098797565)\n\t\t + W(7, -1104719461, -1106636212, -1129886751, -1106734009)\n\t\t + W(8, -1129997061, 1034526751, -1143270742, 1022658271)\n\t\t + W(9, -1109175079, 1042645116, -1104071908, 1012750451)\n\t\t + W(10, 1024589216, -1113770234, 1036105485, -1114645460)\n\t\t + W(11, 1023714995, -1138248951, -1132081196, -1145462266);\n\tsum2 = W(0, -1121971015, -1109269766, -1096046215, -1096349825)\n\t\t + W(1, -1104467071, -1105457821, -1114558576, -1113812495)\n\t\t + W(2, 1025966975, 1042653975, 1058579369, 1055073186) + W(3, 1043843774, 1043492169, -1138844670, 1035958317)\n\t\t + W(4, -1127561691, 1038662008, -1095336395, -1156170871)\n\t\t + W(5, 1054347264, -1116732629, 1043300107, 1025184897)\n\t\t + W(6, 1032121603, -1104797770, 1041625968, -1098327149)\n\t\t + W(7, -1090818470, 1028261711, -1117277405, -1130419167)\n\t\t + W(8, -1118316871, 1018661176, -1131103951, 1035437895)\n\t\t + W(9, 1042639369, -1115472379, -1115061521, -1130646919)\n\t\t + W(10, -1147835451, 1023052754, -1129857431, -1114991229)\n\t\t + W(11, 1011784142, -1157273063, 1024244091, -1148362739);\n\tWS(1065968028, 1020949470);\n\tsum1 = W(0, 1032158503, 1018701500, 1028916776, 1031923218) + W(1, -1143490705, 1005807263, 1028568398, 1026731038)\n\t\t + W(2, 1043191673, 1020082981, 999481917, 1033906881) + W(3, -1123072324, 1012896153, 1015001550, 1035245559)\n\t\t + W(4, 1050691771, 1043953282, 1047062836, 1032996498) + W(5, 1057457238, 1057445286, 1051530049, 1057446979)\n\t\t + W(6, -1089572661, -1139338281, -1091936976, -1081715803)\n\t\t + W(7, -1087112685, -1088032573, -1100585253, -1095410205)\n\t\t + W(8, 983294118, 1041437600, 1042367115, 1040306653) + W(9, 1019100064, -1123572193, 1039280729, -1104642968)\n\t\t + W(10, 1033006978, -1139648989, 1033705422, -1132542121)\n\t\t + W(11, -1138694873, 1033839136, 1027376729, 1015844228);\n\tsum2 =\n\t\tW(0, -1107158830, -1114179967, -1106205598, -1112529879) + W(1, 1036191348, 1045048740, -1112261511, 1045813672)\n\t\t+ W(2, -1098284578, 1050997929, 1032837846, -1138556160)\n\t\t+ W(3, -1103494095, 1033058370, -1109765233, 1040601336) + W(4, 1059620359, -1120628180, 1056621385, 1064698181)\n\t\t+ W(5, 1049117565, -1087565422, 1050635491, -1087363324) + W(6, 1059101624, -1084072333, 1033838752, 1049137220)\n\t\t+ W(7, -1100194061, -1096659207, 1042760064, -1087988644)\n\t\t+ W(8, -1080819081, 1055292451, -1084530179, -1118657190)\n\t\t+ W(9, 1035375516, 1055648971, -1101810418, 1059720072) + W(10, 1041045600, 1041809552, -1150759871, 1036987884)\n\t\t+ W(11, 1040790470, -1098721116, 1028926760, -1118399816);\n\tWS(-1079370588, -1069938997);\n\tsum1 = W(0, -1107111607, 1031876694, -1108546779, 1007409349)\n\t\t + W(1, -1119937056, -1110402417, 1034313646, -1115195974)\n\t\t + W(2, 1024046068, 1040468568, -1110778478, 1041967908) + W(3, 1037532265, 1027170100, 1028424065, 1030920188)\n\t\t + W(4, 1034755057, 1048995971, 1044693184, 1056322870) + W(5, 992363881, -1123931633, 1041273350, 1034999584)\n\t\t + W(6, -1106911318, -1106422470, -1092550445, -1089848952)\n\t\t + W(7, -1115839591, -1098485404, 1027494176, -1101830589)\n\t\t + W(8, 1032333322, 1043602212, -1124221431, 1044063648) + W(9, -1137125241, 1015794334, 1038675968, 1024639630)\n\t\t + W(10, -1122522177, -1133546645, -1123999146, -1129245296)\n\t\t + W(11, -1121719236, 1009488187, -1146748727, -1115284904);\n\tsum2 = W(0, -1116010697, 1039856206, 1025692273, 1047723216) + W(1, 1054500142, 1045538686, 1020883249, 1037455508)\n\t\t + W(2, 1044972838, -1094195694, 1041658757, -1090167008)\n\t\t + W(3, -1087657974, -1114739465, -1103808398, 1025495534)\n\t\t + W(4, -1107525170, 1054041965, -1095593913, 1054432792)\n\t\t + W(5, 1048962216, -1099510609, 1041852115, -1112321007)\n\t\t + W(6, 1025111869, -1105218154, 1047241736, -1103340827)\n\t\t + W(7, -1105033641, 1043141319, -1104502432, 1020729805)\n\t\t + W(8, -1115770744, 1021276689, -1113081166, 1030984707) + W(9, 1026520309, 1008623973, 1031142833, 1034321699)\n\t\t + W(10, 1027404867, -1122132060, 1036997767, -1109230755)\n\t\t + W(11, 1000189578, 949401483, -1121181330, 989367833);\n\tWS(1051966318, -1113875142);\n\tsum1 =\n\t\tW(0, 1035883793, -1111332346, 1045917727, 1006041029) + W(1, -1129901007, 1042663274, -1119690564, 1014471632)\n\t\t+ W(2, 1040145278, -1135399329, 1017502534, -1096989371) + W(3, 1043615094, 1025318012, -1113005508, 1043398529)\n\t\t+ W(4, 1051696565, 1051177307, 1054251573, 1061428120) + W(5, 1037934795, 1050890887, 1046007992, 1049249377)\n\t\t+ W(6, -1091560996, -1096861164, -1091248610, -1087158964)\n\t\t+ W(7, -1098884432, -1096301045, -1093706893, -1093100168)\n\t\t+ W(8, -1133003627, -1117751383, -1178468754, -1126263439)\n\t\t+ W(9, -1106662601, 1017933485, 1038615540, -1116546293)\n\t\t+ W(10, -1126824689, 1039745286, 1020593891, 1008594943)\n\t\t+ W(11, 1037849734, 1035118155, -1114145271, 1028529816);\n\tsum2 =\n\t\tW(0, -1120038729, 1032134121, -1112337284, 1014623636) + W(1, 1015804972, -1111055788, 1025605092, -1118260382)\n\t\t+ W(2, 995641288, 1034430176, 1011533369, 1032554184) + W(3, -1114631943, 1037430467, 1022278663, 1020696197)\n\t\t+ W(4, 1035481768, -1099098436, 960227969, -1122840036) + W(5, -1123247827, -1115890560, 1022436109, 1010081074)\n\t\t+ W(6, 1011267102, -1099374838, 1055781369, 1046041384) + W(7, 1055178264, -1124103196, 1039303021, -1116158530)\n\t\t+ W(8, 1042749492, 1055985885, 1067101038, 1069533386) + W(9, 1065618150, 1058921177, -1106092627, -1118372702)\n\t\t+ W(10, 1026093812, -1113501317, -1095011910, -1086401299)\n\t\t+ W(11, -1079450114, -1075689828, -1082339747, -1095588850);\n\tWS(-1087762743, -1114043214);\n\tsum1 = W(0, 1028903325, -1111481047, 1010874850, -1117223539)\n\t\t + W(1, -1114811697, 1027957028, -1115120063, 1025677743) + W(2, 1040067739, 981566559, 1032756947, -1130847267)\n\t\t + W(3, -1123313460, -1113871531, -1126050567, -1113266015)\n\t\t + W(4, 1045936105, 1050679259, 1052053924, 1055533279) + W(5, 1059392176, 1053658934, 1039338221, 1051823712)\n\t\t + W(6, -1095653187, -1096161947, -1090950614, -1084280212)\n\t\t + W(7, -1097768267, 1005713692, -1120312930, -1118568631)\n\t\t + W(8, -1122706133, 1026181394, 1034645023, 1030922562)\n\t\t + W(9, 1030340896, -1102292436, -1107839810, -1112577800)\n\t\t + W(10, 1029496147, -1149217596, -1132850610, -1154701224)\n\t\t + W(11, -1113406339, 1020850850, 1017761874, -1117302546);\n\tsum2 = W(0, 1001016005, -1125241033, 1018218852, -1111720092)\n\t\t + W(1, 1015413875, -1140722987, -1138333196, 1010568725)\n\t\t + W(2, -1150454109, -1111980552, 1033028659, 1037513337)\n\t\t + W(3, -1109924763, -1144232926, -1117260807, -1113652225)\n\t\t + W(4, 1001531747, 1031575403, 1016765132, -1085543392) + W(5, 1053354837, 1054900052, 1041131548, 1045881209)\n\t\t + W(6, 983352173, -1103460210, -1103428024, -1076627395)\n\t\t + W(7, 1074369634, 1051272122, -1098379064, -1098914955)\n\t\t + W(8, -1106746798, 1036252996, -1128273041, 1046375720)\n\t\t + W(9, 1055587240, -1094917738, -1106193524, -1098562564)\n\t\t + W(10, -1157019725, 1023495862, 1033057508, -1112606370)\n\t\t + W(11, 1019967806, -1107285947, 1012881631, 1031041657);\n\tWS(-1090517687, -1095444575);\n\tsum1 = W(0, 1025742446, -1111454559, 1040962578, 1035513890) + W(1, 1025779251, 1041617005, -1106922364, 1024699903)\n\t\t + W(2, 1032739299, -1106175885, -1110724347, -1118213794)\n\t\t + W(3, -1103218657, 1040368314, -1105137317, 1024907982) + W(4, 1054789967, 1031326631, 1052551894, 1059778428)\n\t\t + W(5, 1045793474, 1051667296, 1040121301, 1052247674)\n\t\t + W(6, -1095546301, -1101847659, -1090925684, -1089262225)\n\t\t + W(7, -1096439373, -1099734269, -1104705805, -1097282993)\n\t\t + W(8, 1033023507, -1107099097, 1036045063, 1035395209)\n\t\t + W(9, -1101529212, 1050132438, -1102593253, 1016797696)\n\t\t + W(10, 1028563508, -1117676152, 1036888990, 1007580971)\n\t\t + W(11, 949923192, 1037985265, -1113513373, 1026673059);\n\tsum2 = W(0, 1052208474, 1035064858, 1064043431, 1055780907) + W(1, 1048070172, 1057138231, -1100953655, 1042120650)\n\t\t + W(2, -1095438834, -1104348375, -1079843968, -1084432555)\n\t\t + W(3, -1106077690, -1086965748, 1048708391, -1106942577)\n\t\t + W(4, 1040952518, -1095663473, 1060639651, 1054823629)\n\t\t + W(5, -1098542607, 1057295667, -1095587456, 1035260440)\n\t\t + W(6, -1101013864, 1048824145, -1097227129, -1105218176)\n\t\t + W(7, 1048082838, -1106201667, 1042233875, -1136871967)\n\t\t + W(8, 1045777263, -1099869349, 1049789703, -1118379111)\n\t\t + W(9, -1102784042, 1043327775, -1107731485, 1006771796)\n\t\t + W(10, -1125550479, -1127115193, 1024044553, 972648308)\n\t\t + W(11, 1021849499, 1016298873, -1116706874, 1030896448);\n\tWS(-1115614648, 1042425791);\n\tsum1 =\n\t\tW(0, -1120207204, -1124027509, -1144413692, -1105701711)\n\t\t+ W(1, 1014568102, -1120774251, 1029691462, -1119274774) + W(2, -1115327070, 1016926292, 1038910502, 1037845356)\n\t\t+ W(3, 1042236823, -1105850383, -1134596907, -1117126533)\n\t\t+ W(4, -1093340989, -1096731140, -1096554678, -1085064420)\n\t\t+ W(5, -1100005974, -1098496607, -1135406214, -1098152617)\n\t\t+ W(6, 1053481388, 1053311332, 1057006919, 1049566369) + W(7, 1056376458, 1048579325, 1042582346, 1043887136)\n\t\t+ W(8, 1030984860, -1116407641, 1038600290, 1043585442) + W(9, 1018535375, -1122768840, -1120431498, 1035562443)\n\t\t+ W(10, -1113874973, 1010793530, -1116271283, -1114795809)\n\t\t+ W(11, 992031960, -1130485552, 1029193328, -1140222054);\n\tsum2 = W(0, -1127240204, 1024332524, -1145474239, -1111478947)\n\t\t + W(1, 1029335642, -1112394176, 1042612281, -1152251822)\n\t\t + W(2, -1079712608, -1082891577, -1081879450, 1047818786)\n\t\t + W(3, 1066272635, 1064292926, 1048742105, 1063028070) + W(4, 1066527571, 1063276166, 1065092416, 1033988518)\n\t\t + W(5, -1081647719, -1085935960, -1090025738, -1088819358)\n\t\t + W(6, 1049757184, 1025750476, 1045572932, -1093152038)\n\t\t + W(7, -1129453741, -1107360776, 1042389166, -1095668919)\n\t\t + W(8, -1122509441, -1127423195, -1127801782, -1126799575)\n\t\t + W(9, 1033523902, -1109456127, 1029374360, -1163717821)\n\t\t + W(10, -1120167031, 976948665, -1123809997, 1030959654)\n\t\t + W(11, 995040830, 1026103880, -1116538748, 1033003323);\n\tWS(1005558656, -1134386388);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[555];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define temp_tex(pos) (float(texture(temp, pos).x))\nstatic const float2 temp_size = float2(GetInputSize().x * 1, GetInputSize().y * 2);\nstatic const float2 temp_pt = float2(1.0 / (temp_size.x), 1.0 / (temp_size.y));\n\n#define HOOKED_tex(pos) temp_tex(pos)\n#define HOOKED_size temp_size\n#define HOOKED_pt temp_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 555; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (2)) + 0.5, float(group_base.y + y - (3)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[12];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 6];\n\tsamples[1][3] = inp[local_pos + 7];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 19];\n\tsamples[3][1] = inp[local_pos + 20];\n\tsamples[3][2] = inp[local_pos + 21];\n\tsamples[3][3] = inp[local_pos + 22];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 32];\n\tsamples[4][3] = inp[local_pos + 33];\n\tsamples[5][0] = inp[local_pos + 34];\n\tsamples[5][1] = inp[local_pos + 35];\n\tsamples[5][2] = inp[local_pos + 36];\n\tsamples[5][3] = inp[local_pos + 37];\n\tsamples[6][0] = inp[local_pos + 45];\n\tsamples[6][1] = inp[local_pos + 46];\n\tsamples[6][2] = inp[local_pos + 47];\n\tsamples[6][3] = inp[local_pos + 48];\n\tsamples[7][0] = inp[local_pos + 49];\n\tsamples[7][1] = inp[local_pos + 50];\n\tsamples[7][2] = inp[local_pos + 51];\n\tsamples[7][3] = inp[local_pos + 52];\n\tsamples[8][0] = inp[local_pos + 60];\n\tsamples[8][1] = inp[local_pos + 61];\n\tsamples[8][2] = inp[local_pos + 62];\n\tsamples[8][3] = inp[local_pos + 63];\n\tsamples[9][0] = inp[local_pos + 64];\n\tsamples[9][1] = inp[local_pos + 65];\n\tsamples[9][2] = inp[local_pos + 66];\n\tsamples[9][3] = inp[local_pos + 67];\n\tsamples[10][0] = inp[local_pos + 75];\n\tsamples[10][1] = inp[local_pos + 76];\n\tsamples[10][2] = inp[local_pos + 77];\n\tsamples[10][3] = inp[local_pos + 78];\n\tsamples[11][0] = inp[local_pos + 79];\n\tsamples[11][1] = inp[local_pos + 80];\n\tsamples[11][2] = inp[local_pos + 81];\n\tsamples[11][3] = inp[local_pos + 82];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 33];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(2, 1);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1) + ivec2(1, 0), ret);\n}\n"
  },
  {
    "path": "src/Effects/NNEDI3/NNEDI3_nns16_win8x4.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: nnedi3.py --nns 16 --win 8x4 --use-compute-shader --use-magpie\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME NNEDI3_016_4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 1 * 2\n//!HEIGHT INPUT_HEIGHT * 2 * 1\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH * 1\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D temp;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_temp;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC NNEDI3 (double_y, nns16, win8x4)\n//!IN INPUT\n//!OUT temp\n//!BLOCK_SIZE 32, 16\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[8]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 8; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 32.0;\n\tfloat mstd1 = sumsq / 32.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, -1123354974, -1112248839, 1046299686, -1143613552)\n\t\t + W(1, -1118620174, 1024662558, 1028038478, -1129268360)\n\t\t + W(2, 1016130204, -1087068557, 1063313277, -1103342192)\n\t\t + W(3, -1103968288, 1048182784, 1047279381, -1115088511)\n\t\t + W(4, -1101453425, 1059583965, -1088182320, 1003350800)\n\t\t + W(5, -1117908518, -1119323982, 1034186247, -1134684248)\n\t\t + W(6, -1122284590, 1027638054, -1124394588, -1111377363)\n\t\t + W(7, -1122818124, -1137723992, 978245507, 1028117438);\n\tsum2 = W(0, -1162931039, -1131063526, 1029801649, -1117642655)\n\t\t + W(1, -1136248556, -1131086728, 1031011705, -1128864654)\n\t\t + W(2, -1115594515, -1128443230, 1042762789, -1107118398)\n\t\t + W(3, -1119907402, 1044675527, 1050674207, -1113986381)\n\t\t + W(4, 1022791334, -1107588397, 1009001220, -1186206458)\n\t\t + W(5, 1017500018, -1111169922, -1112569685, 1017255694)\n\t\t + W(6, -1156766128, -1125594766, -1148613464, 993928432)\n\t\t + W(7, 1014782692, -1135599628, -1114139175, 1007622876);\n\tWS(1038828992, 1041685264);\n\tsum1 = W(0, -1114329248, 1049950910, -1097681183, 1028668144) + W(1, 995958527, 1027336960, -1107326552, 1025858258)\n\t\t + W(2, -1117673776, 1060640651, -1085831405, 1033402064)\n\t\t + W(3, 1034401008, 1045782072, -1105157973, -1122828000)\n\t\t + W(4, 1038612842, -1098159517, 1053136924, -1110558370)\n\t\t + W(5, 1035088196, -1106507532, 1032016120, -1113173980)\n\t\t + W(6, 1008781376, -1124000392, 1023707152, 1012109856)\n\t\t + W(7, 1029875310, -1105439902, 1034119968, -1114749520);\n\tsum2 =\n\t\tW(0, 1031315360, -1099468189, -1112139926, 1036663822) + W(1, -1131767489, -1140834082, 1024287080, -1122285462)\n\t\t+ W(2, 1023637252, -1100127579, -1117241706, 1038018354)\n\t\t+ W(3, -1107869385, 1052854494, 1052996200, -1112496415)\n\t\t+ W(4, -1107666272, 1034036134, 1027811452, -1110479054)\n\t\t+ W(5, -1117110288, 1024451620, 1027157968, -1112615559) + W(6, -1124350185, 1003450083, -1131082337, 998992195)\n\t\t+ W(7, -1110538107, 1041131277, 1035032776, -1106762474);\n\tWS(-1086074680, 1053637716);\n\tsum1 = W(0, -1121345387, 1042002951, -1113042450, -1121398619)\n\t\t + W(1, -1148805338, -1165378922, -1115297518, 991217235)\n\t\t + W(2, -1136570733, 1052460699, -1107443934, -1117268427)\n\t\t + W(3, 1049266593, -1094571489, -1098765182, 1036113926)\n\t\t + W(4, 1027081787, -1124281856, 1043313411, -1136658365)\n\t\t + W(5, -1133439181, 1040734807, 1006695533, -1112513138)\n\t\t + W(6, -1158465386, -1121708851, 1016359031, 1021173351)\n\t\t + W(7, -1120818857, 1035650578, 1027853163, -1106476275);\n\tsum2 = W(0, 1026517575, -1170492850, -1138816415, -1143472678)\n\t\t + W(1, 1017334370, 1003954710, -1132363566, 998846550)\n\t\t + W(2, 1051558711, -1096673587, -1136175651, -1124275402)\n\t\t + W(3, 1071692777, -1077357700, -1098960792, 1018703670)\n\t\t + W(4, 1049822619, -1098179385, -1116986501, 1007812651) + W(5, 1020207734, 996694924, 1003290486, 1007766851)\n\t\t + W(6, 1022251878, -1122577241, -1141894102, 1009415395)\n\t\t + W(7, 1019995718, 1015494226, -1126828734, -1163222937);\n\tWS(1051521136, 1027207116);\n\tsum1 =\n\t\tW(0, -1122694020, 1010830545, -1124291704, 1018062184) + W(1, -1121133108, -1124202632, 1037913146, -1116091286)\n\t\t+ W(2, -1102175837, 1057246783, -1093542759, 1041281977) + W(3, -1116351908, 1026322980, 982577970, -1125394504)\n\t\t+ W(4, 1045518980, -1089509425, 1055793637, 1008755233) + W(5, 1009393969, 1025178484, -1118947636, -1127575032)\n\t\t+ W(6, 1008379217, -1117338572, 1001093793, 1015898776) + W(7, 1015772516, 1009646833, 1001810977, -1121163492);\n\tsum2 = W(0, -1137495011, -1135527491, 1027730022, -1118108263)\n\t\t + W(1, 1013616911, -1123650952, 1024465134, -1128775579)\n\t\t + W(2, -1135578111, 1013443151, 1049128967, -1098008683)\n\t\t + W(3, 1029346938, -1114797945, 1068130737, -1080443718)\n\t\t + W(4, 1017473747, -1122100892, 1046423571, -1101482344)\n\t\t + W(5, 1012413655, -1128721387, -1143058109, -1137148015)\n\t\t + W(6, -1133405571, -1166794345, 1020545683, -1128178767)\n\t\t + W(7, 1008139351, -1156685818, -1126785325, 991435034);\n\tWS(1057767608, -1132080751);\n\tsum1 = W(0, 1026028453, 1025766741, 1035118319, 1012106581) + W(1, 1026017621, -1135552917, 1040474693, -1138611630)\n\t\t + W(2, -1117947285, 1051769667, -1111744027, 1030333189)\n\t\t + W(3, 1048679017, -1083959172, -1084413328, 1045191121)\n\t\t + W(4, 1025261389, -1120826122, 1049618505, -1122181545)\n\t\t + W(5, 1011196341, 1045191525, -1110336171, 1030480605) + W(6, 1015828970, 1028389741, 1028257397, 1027514349)\n\t\t + W(7, 1025013027, 1039505775, -1123719333, 1020294666);\n\tsum2 = W(0, 1017587161, -1101123140, 1040188371, 988296658) + W(1, 1028118553, -1103020887, 1022642341, 1010063898)\n\t\t + W(2, 1008167722, -1099714612, 1039093756, 1026403646) + W(3, 1005112948, 1049070164, 1046164698, 1033545355)\n\t\t + W(4, -1125344655, 1032013714, -1111525569, 1002132020)\n\t\t + W(5, 1015776789, 1022049457, -1098832696, 1037334715)\n\t\t + W(6, -1148301500, 1009340114, -1115917000, -1139728254)\n\t\t + W(7, -1138850406, -1167693540, -1103378287, 1035581889);\n\tWS(-1099372256, -1088618788);\n\tsum1 = W(0, -1112538182, 1048693927, -1112344546, -1109099742)\n\t\t + W(1, -1113349022, 1033711782, -1129092599, -1110127398)\n\t\t + W(2, -1103996671, 1064716592, -1086749016, 1032699126)\n\t\t + W(3, 1024020908, -1143605597, 1044926535, -1121424940)\n\t\t + W(4, 1046614908, -1085173359, 1062252083, -1130166943)\n\t\t + W(5, -1111225386, 1004694493, 1040479887, -1106709441)\n\t\t + W(6, -1110537326, -1108087402, 1034104622, -1120726228)\n\t\t + W(7, -1114146165, -1138402062, 1042110371, -1106064827);\n\tsum2 = W(0, 987083788, 1013472954, -1120418118, 979955865)\n\t\t + W(1, -1144106823, -1131186779, -1122269098, -1163904780)\n\t\t + W(2, -1120467381, -1139561796, 1038342084, -1115615181)\n\t\t + W(3, -1121977305, 1044091298, 1042996066, -1127292875)\n\t\t + W(4, -1118651341, 1038343490, -1118476220, -1123141745)\n\t\t + W(5, -1162389292, -1115306287, -1128689408, 1014320394)\n\t\t + W(6, -1152635694, -1155962630, -1132569906, -1135582470)\n\t\t + W(7, 964510307, -1117365756, -1141833923, 1008840046);\n\tWS(1041282784, 1044242623);\n\tsum1 = W(0, -1119885764, -1171512555, 1003864029, 1025494836)\n\t\t + W(1, -1119816052, -1121861252, 1040963149, -1113504879)\n\t\t + W(2, -1100880653, 1057266723, -1094412795, 1043843337)\n\t\t + W(3, -1113812594, 1010135439, -1118004569, -1125989575)\n\t\t + W(4, 1046531310, -1089952515, 1056310444, -1156936827)\n\t\t + W(5, 1015358999, 1031135156, -1114099002, -1122714492)\n\t\t + W(6, 1005085853, -1115226950, 1015234855, 1003362397) + W(7, 1021011107, 1003139037, 992693307, -1120612644);\n\tsum2 =\n\t\tW(0, 1005317381, -1142619324, -1126266146, 1026462555) + W(1, -1143827754, 1012902153, -1128784654, 1020893616)\n\t\t+ W(2, 1019060164, -1114788024, -1094218173, 1054132458)\n\t\t+ W(3, 1009279342, -1098688460, -1078812823, 1070492026)\n\t\t+ W(4, 1014092605, -1120377499, -1099532818, 1048935725) + W(5, -1131000233, 1017453102, 1007638067, 1011358224)\n\t\t+ W(6, 1012779564, -1139793504, -1130333980, 1015734963)\n\t\t+ W(7, -1137528453, -1147729078, 1018177647, 987943782);\n\tWS(1046635232, 1024078131);\n\tsum1 = W(0, 1002735212, 1035063871, -1097977761, 1040314319) + W(1, 1025138813, 1034039879, -1105608655, 1035664624)\n\t\t + W(2, 1017042555, 1044122447, -1094991056, 1038536855)\n\t\t + W(3, -1132524982, -1110416695, 1051547730, -1114843703)\n\t\t + W(4, 1031803657, -1092481954, 1050188814, 1003107468) + W(5, 1033606155, -1094320024, 1047410847, 1019470987)\n\t\t + W(6, 1021596219, -1107502027, 1031346589, 1021345835)\n\t\t + W(7, 1015508823, -1103391009, 1046101811, -1136683190);\n\tsum2 =\n\t\tW(0, -1096475926, 1044036812, 1052862983, -1106234474) + W(1, -1112281069, -1112231286, 1024115789, -1121785528)\n\t\t+ W(2, -1116645717, -1111398905, 1051331710, -1130292776)\n\t\t+ W(3, 1041647377, -1096068583, 1038036111, 1037359643) + W(4, -1113263240, 1026411348, 1042458641, -1111704128)\n\t\t+ W(5, 1023473494, -1114320784, 1028002558, -1123406807)\n\t\t+ W(6, -1117017643, -1138574198, 1037890580, -1109714921)\n\t\t+ W(7, 1039764966, -1104710548, -1106844581, 1041123403);\n\tWS(-1088554040, -1076674880);\n\tsum1 =\n\t\tW(0, 1026292820, -1132973070, -1144171612, -1130131975) + W(1, 1016736263, 1034501898, -1110973538, 1028857234)\n\t\t+ W(2, 1042339025, -1089525132, 1052671191, -1108906970)\n\t\t+ W(3, -1110236986, 1037427962, -1123890785, -1112145786)\n\t\t+ W(4, -1103961368, 1056478885, -1092344862, 1002874044) + W(5, 1016313655, -1118983748, 1041641985, 1025897228)\n\t\t+ W(6, -1151588920, 1038469390, 1010979982, -1130905399)\n\t\t+ W(7, 1014755782, -1123320716, 1017396903, 1033705562);\n\tsum2 = W(0, 1013915195, -1133182691, -1127318198, 1020584890)\n\t\t + W(1, 1007730851, 1024414743, -1121307593, 1005058566) + W(2, 981970521, -1111248658, 1035588225, -1124411850)\n\t\t + W(3, 1028189234, 1040952978, 1057294107, 1029625115)\n\t\t + W(4, -1121038101, -1109339192, -1107404728, 1026110889)\n\t\t + W(5, -1142484934, -1094377458, 1024397525, 1023925523)\n\t\t + W(6, -1146368902, -1116592821, -1118541421, -1140327971)\n\t\t + W(7, 1010322539, -1112421528, 1019759378, -1199698720);\n\tWS(1063581112, 1015292283);\n\tsum1 =\n\t\tW(0, -1123806598, -1125096044, 1046804719, -1117498166) + W(1, -1124445804, 1037634467, 1028314614, 1006823135)\n\t\t+ W(2, 1036776315, -1083793455, 1064148787, -1106689849)\n\t\t+ W(3, -1112186771, -1098422117, 1034155462, 1004978479)\n\t\t+ W(4, -1102837698, 1058965073, -1089226130, 1033810693)\n\t\t+ W(5, -1117642958, -1106625757, 1037373467, 1029436414) + W(6, -1137018200, 1036181095, 994321759, -1119765454)\n\t\t+ W(7, 1010580432, -1127761788, 1021285644, 1034713459);\n\tsum2 = W(0, -1127012521, -1110373665, -1121983257, 1021812843)\n\t\t + W(1, -1129458054, -1122115974, -1121551577, 1015201109)\n\t\t + W(2, -1134632819, -1118435057, -1107711610, 1039413537)\n\t\t + W(3, -1113739078, 1041258512, 1043546644, -1127386873)\n\t\t + W(4, -1106078947, 1025961773, 1048226293, -1110385416)\n\t\t + W(5, -1115241196, 1041055451, -1131486243, -1135801459)\n\t\t + W(6, -1122814807, 1025056413, -1139476701, -1132245806)\n\t\t + W(7, -1119046895, 1029845331, 1018415015, -1140149017);\n\tWS(-1109010880, -1087548956);\n\tsum1 = W(0, 1034947768, -1095012676, 1046023882, 1029737824) + W(1, 1034343312, -1102610188, 1039446704, 1025692706)\n\t\t + W(2, 1016751552, -1096454908, 1042564604, 1038373096)\n\t\t + W(3, 1019661856, -1091443170, -1105694067, 1039271048)\n\t\t + W(4, -1126501287, -1131030249, 1044246468, 1012879825)\n\t\t + W(5, 1017025648, 1042942296, -1103700296, 1041317114) + W(6, 1030724160, 1019936112, -1141422594, 1029263800)\n\t\t + W(7, -1140792121, 1024647464, -1107855416, 1041193844);\n\tsum2 =\n\t\tW(0, 1034034732, -1107522705, -1105460279, 1021740679) + W(1, -1113997103, -1121503695, 1038975878, -1112744336)\n\t\t+ W(2, 1028771217, -1114143244, 1032873918, -1121564954) + W(3, 1025456143, -1105773446, 1059420344, 1024971971)\n\t\t+ W(4, 1035315492, -1109746606, 1040681265, -1122379806)\n\t\t+ W(5, -1102403849, -1106040358, 1046039582, -1106873869)\n\t\t+ W(6, 1018212015, -1106459627, 1026290649, -1130313815)\n\t\t+ W(7, -1099438501, 1039219872, 1046943722, -1105420350);\n\tWS(-1086299832, -1077288694);\n\tsum1 = W(0, 1021716686, -1099039878, -1111509136, 1039618828)\n\t\t + W(1, -1132921948, -1108540692, 1021468846, -1131678690)\n\t\t + W(2, -1113901292, -1158126306, -1096197083, 1041516082)\n\t\t + W(3, -1108835908, 1055092577, 1062013047, -1118733319)\n\t\t + W(4, 1023078294, -1089051407, 1050708993, -1122936235) + W(5, 965138311, -1113759276, 1022391342, 1015065790)\n\t\t + W(6, 998651320, -1107695832, -1133490396, 997649137) + W(7, -1130194922, -1113503632, 991635057, 1023538631);\n\tsum2 = W(0, -1133976495, 1035891239, -1130801609, -1113698362)\n\t\t + W(1, 1027343155, 1030599513, -1108453664, 1016406968)\n\t\t + W(2, -1149877867, 1037590422, 1012747883, -1108226898)\n\t\t + W(3, -1119506980, 1054189655, -1119322812, -1120928356)\n\t\t + W(4, -1126385541, 1041308688, -1107379808, 1016225738)\n\t\t + W(5, 1016526837, -1112736561, -1119223720, 988482485) + W(6, 994153115, 1004824957, -1116360142, 1018050885)\n\t\t + W(7, -1140785051, -1120347934, -1129452107, -1117792638);\n\tWS(-1113279936, 1066223903);\n\tsum1 = W(0, -1128171420, 1040261344, -1112013315, -1123695998)\n\t\t + W(1, -1141738481, -1140107833, -1116929726, -1154978689)\n\t\t + W(2, -1138940153, 1050703688, -1108200895, -1123177006)\n\t\t + W(3, 1044160156, -1100167260, -1100730273, 1034288823)\n\t\t + W(4, 1020686276, -1130335589, 1040782300, -1141423761)\n\t\t + W(5, -1129655596, 1035637471, 1024316286, -1114187043) + W(6, 964173357, -1124525100, 1014134393, 1013984857)\n\t\t + W(7, -1123239900, 1032644739, 1029624526, -1108229911);\n\tsum2 = W(0, -1115606620, 1021458196, 1009639320, -1131253088)\n\t\t + W(1, -1125272644, 1017345212, 1016051020, -1143902384)\n\t\t + W(2, -1099614716, 1047257730, -1120838650, 1020803060)\n\t\t + W(3, -1080575150, 1068148121, -1113655261, 1032085971)\n\t\t + W(4, -1102155153, 1044966894, -1132238288, 1016311348)\n\t\t + W(5, -1122847678, 1026244022, -1130782536, -1137376840)\n\t\t + W(6, -1123394906, 1017049220, 967940860, -1137115752)\n\t\t + W(7, -1129056732, 1010161976, 1004223696, -1136984808);\n\tWS(1060545080, -1126581603);\n\tsum1 =\n\t\tW(0, 1032630360, -1112268976, 1045186906, -1125010622) + W(1, 1037657648, -1128752350, 1032285712, 1029508223)\n\t\t+ W(2, 1043836232, -1090205186, 1053340438, -1108078856) + W(3, 1037448680, 1048595306, -1094666759, 1041691860)\n\t\t+ W(4, 976149203, 1057651571, -1082657749, 1042698525) + W(5, 1031833596, 1035187792, -1092127852, 1040118132)\n\t\t+ W(6, 1031675647, 1034806588, -1104761760, 1033087420) + W(7, 1025282125, 1043419290, -1096441814, 1034587656);\n\tsum2 =\n\t\tW(0, -1123698886, 1034075649, 998149095, -1113635181) + W(1, -1126365381, 1026991402, -1118780236, -1168196508)\n\t\t+ W(2, -1135914762, 1019253181, 1023543366, -1114469118)\n\t\t+ W(3, -1121651762, 1047572688, 1038479879, -1145545780) + W(4, -1118625490, 1035108181, -1114677625, 992781287)\n\t\t+ W(5, -1122087574, -1115886918, 1011684618, -1139655050)\n\t\t+ W(6, -1147908244, 1016718341, -1132109957, -1142844852)\n\t\t+ W(7, -1134045690, -1117034488, -1137057610, 1007905050);\n\tWS(-1083899832, -1105526146);\n\tsum1 = W(0, 1026357515, -1119744955, -1117075907, -1111407198)\n\t\t + W(1, -1139718894, -1125720471, -1106102943, -1152407445)\n\t\t + W(2, 1044187583, -1092285679, 1048719011, -1107209883)\n\t\t + W(3, -1105573131, 1062437883, 1052836221, -1107292779)\n\t\t + W(4, -1104526300, 1058460257, -1089717563, -1122559055)\n\t\t + W(5, -1119529939, 1022150135, -1123085499, -1119739267)\n\t\t + W(6, -1125768375, 1033366698, -1114009838, -1119196243)\n\t\t + W(7, -1132776678, 1009731342, -1112611206, -1129505495);\n\tsum2 = W(0, -1110807022, 1025172792, 1033543849, -1123816828)\n\t\t + W(1, -1129400032, -1117035240, 999654946, -1144812946)\n\t\t + W(2, -1105612607, 1035443403, 1039345667, -1120747576)\n\t\t + W(3, -1123619892, -1135427545, 1053020794, -1113498942)\n\t\t + W(4, -1131262448, -1111010692, 1047843748, -1113301822)\n\t\t + W(5, 1016529300, -1115955576, -1135856481, -1146605522)\n\t\t + W(6, -1129444600, -1117326476, 1022819536, -1119691028)\n\t\t + W(7, -1136239801, -1121250556, 998047364, -1135792457);\n\tWS(-1107513792, 1064663354);\n\tsum1 = W(0, 1030862455, -1113532308, 1032378968, -1123071015)\n\t\t + W(1, -1161118946, 1021510766, -1127591630, 1009770420)\n\t\t + W(2, 1040244826, -1091621085, 1051734861, -1107582956)\n\t\t + W(3, -1104300038, 1046262406, 1034822530, -1108820108)\n\t\t + W(4, -1102940181, 1054782000, -1095483267, -1125175670)\n\t\t + W(5, -1135077628, 1019068110, 1031948820, 1025488559)\n\t\t + W(6, -1135539484, 1036941280, -1172984259, -1126076542)\n\t\t + W(7, 1011863892, -1128724830, -1120336759, 1036426604);\n\tsum2 =\n\t\tW(0, -1135206239, -1140752647, 1022777359, 974924014) + W(1, -1139065871, -1123380440, 1021581075, -1133276463)\n\t\t+ W(2, 1026230428, 988696695, -1122295168, 1029689087) + W(3, 1025917606, -1092786651, -1085937537, -1140169471)\n\t\t+ W(4, 1027050280, 1049996339, 1032573953, -1135329695) + W(5, 1013849783, 1057784826, -1130048007, -1124883951)\n\t\t+ W(6, 1016077019, 1033822297, 1032545188, 1011238415) + W(7, -1127829351, 1034470972, -1137094527, 1001568686);\n\tWS(1058918200, -1121082995);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[429];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { temp[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 11 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 429; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 11, y = (uint)id % 11;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (3)) + 0.5, float(group_base.y + y - (1)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[8];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 11];\n\tsamples[1][1] = inp[local_pos + 12];\n\tsamples[1][2] = inp[local_pos + 13];\n\tsamples[1][3] = inp[local_pos + 14];\n\tsamples[2][0] = inp[local_pos + 22];\n\tsamples[2][1] = inp[local_pos + 23];\n\tsamples[2][2] = inp[local_pos + 24];\n\tsamples[2][3] = inp[local_pos + 25];\n\tsamples[3][0] = inp[local_pos + 33];\n\tsamples[3][1] = inp[local_pos + 34];\n\tsamples[3][2] = inp[local_pos + 35];\n\tsamples[3][3] = inp[local_pos + 36];\n\tsamples[4][0] = inp[local_pos + 44];\n\tsamples[4][1] = inp[local_pos + 45];\n\tsamples[4][2] = inp[local_pos + 46];\n\tsamples[4][3] = inp[local_pos + 47];\n\tsamples[5][0] = inp[local_pos + 55];\n\tsamples[5][1] = inp[local_pos + 56];\n\tsamples[5][2] = inp[local_pos + 57];\n\tsamples[5][3] = inp[local_pos + 58];\n\tsamples[6][0] = inp[local_pos + 66];\n\tsamples[6][1] = inp[local_pos + 67];\n\tsamples[6][2] = inp[local_pos + 68];\n\tsamples[6][3] = inp[local_pos + 69];\n\tsamples[7][0] = inp[local_pos + 77];\n\tsamples[7][1] = inp[local_pos + 78];\n\tsamples[7][2] = inp[local_pos + 79];\n\tsamples[7][3] = inp[local_pos + 80];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 34];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(1, 2);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2) + ivec2(0, 1), ret);\n}\n//!PASS 2\n//!DESC NNEDI3 (double_x, nns16, win8x4)\n//!IN INPUT, temp\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 8\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[8]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 8; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 32.0;\n\tfloat mstd1 = sumsq / 32.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, -1123354974, -1118620174, 1016130204, -1103968288)\n\t\t + W(1, -1101453425, -1117908518, -1122284590, -1122818124)\n\t\t + W(2, -1112248839, 1024662558, -1087068557, 1048182784)\n\t\t + W(3, 1059583965, -1119323982, 1027638054, -1137723992) + W(4, 1046299686, 1028038478, 1063313277, 1047279381)\n\t\t + W(5, -1088182320, 1034186247, -1124394588, 978245507)\n\t\t + W(6, -1143613552, -1129268360, -1103342192, -1115088511)\n\t\t + W(7, 1003350800, -1134684248, -1111377363, 1028117438);\n\tsum2 =\n\t\tW(0, -1162931039, -1136248556, -1115594515, -1119907402) + W(1, 1022791334, 1017500018, -1156766128, 1014782692)\n\t\t+ W(2, -1131063526, -1131086728, -1128443230, 1044675527)\n\t\t+ W(3, -1107588397, -1111169922, -1125594766, -1135599628)\n\t\t+ W(4, 1029801649, 1031011705, 1042762789, 1050674207) + W(5, 1009001220, -1112569685, -1148613464, -1114139175)\n\t\t+ W(6, -1117642655, -1128864654, -1107118398, -1113986381)\n\t\t+ W(7, -1186206458, 1017255694, 993928432, 1007622876);\n\tWS(1038828992, 1041685264);\n\tsum1 = W(0, -1114329248, 995958527, -1117673776, 1034401008) + W(1, 1038612842, 1035088196, 1008781376, 1029875310)\n\t\t + W(2, 1049950910, 1027336960, 1060640651, 1045782072)\n\t\t + W(3, -1098159517, -1106507532, -1124000392, -1105439902)\n\t\t + W(4, -1097681183, -1107326552, -1085831405, -1105157973)\n\t\t + W(5, 1053136924, 1032016120, 1023707152, 1034119968) + W(6, 1028668144, 1025858258, 1033402064, -1122828000)\n\t\t + W(7, -1110558370, -1113173980, 1012109856, -1114749520);\n\tsum2 = W(0, 1031315360, -1131767489, 1023637252, -1107869385)\n\t\t + W(1, -1107666272, -1117110288, -1124350185, -1110538107)\n\t\t + W(2, -1099468189, -1140834082, -1100127579, 1052854494)\n\t\t + W(3, 1034036134, 1024451620, 1003450083, 1041131277) + W(4, -1112139926, 1024287080, -1117241706, 1052996200)\n\t\t + W(5, 1027811452, 1027157968, -1131082337, 1035032776)\n\t\t + W(6, 1036663822, -1122285462, 1038018354, -1112496415)\n\t\t + W(7, -1110479054, -1112615559, 998992195, -1106762474);\n\tWS(-1086074680, 1053637716);\n\tsum1 = W(0, -1121345387, -1148805338, -1136570733, 1049266593)\n\t\t + W(1, 1027081787, -1133439181, -1158465386, -1120818857)\n\t\t + W(2, 1042002951, -1165378922, 1052460699, -1094571489)\n\t\t + W(3, -1124281856, 1040734807, -1121708851, 1035650578)\n\t\t + W(4, -1113042450, -1115297518, -1107443934, -1098765182)\n\t\t + W(5, 1043313411, 1006695533, 1016359031, 1027853163) + W(6, -1121398619, 991217235, -1117268427, 1036113926)\n\t\t + W(7, -1136658365, -1112513138, 1021173351, -1106476275);\n\tsum2 = W(0, 1026517575, 1017334370, 1051558711, 1071692777) + W(1, 1049822619, 1020207734, 1022251878, 1019995718)\n\t\t + W(2, -1170492850, 1003954710, -1096673587, -1077357700)\n\t\t + W(3, -1098179385, 996694924, -1122577241, 1015494226)\n\t\t + W(4, -1138816415, -1132363566, -1136175651, -1098960792)\n\t\t + W(5, -1116986501, 1003290486, -1141894102, -1126828734)\n\t\t + W(6, -1143472678, 998846550, -1124275402, 1018703670)\n\t\t + W(7, 1007812651, 1007766851, 1009415395, -1163222937);\n\tWS(1051521136, 1027207116);\n\tsum1 = W(0, -1122694020, -1121133108, -1102175837, -1116351908)\n\t\t + W(1, 1045518980, 1009393969, 1008379217, 1015772516) + W(2, 1010830545, -1124202632, 1057246783, 1026322980)\n\t\t + W(3, -1089509425, 1025178484, -1117338572, 1009646833)\n\t\t + W(4, -1124291704, 1037913146, -1093542759, 982577970) + W(5, 1055793637, -1118947636, 1001093793, 1001810977)\n\t\t + W(6, 1018062184, -1116091286, 1041281977, -1125394504)\n\t\t + W(7, 1008755233, -1127575032, 1015898776, -1121163492);\n\tsum2 = W(0, -1137495011, 1013616911, -1135578111, 1029346938)\n\t\t + W(1, 1017473747, 1012413655, -1133405571, 1008139351)\n\t\t + W(2, -1135527491, -1123650952, 1013443151, -1114797945)\n\t\t + W(3, -1122100892, -1128721387, -1166794345, -1156685818)\n\t\t + W(4, 1027730022, 1024465134, 1049128967, 1068130737) + W(5, 1046423571, -1143058109, 1020545683, -1126785325)\n\t\t + W(6, -1118108263, -1128775579, -1098008683, -1080443718)\n\t\t + W(7, -1101482344, -1137148015, -1128178767, 991435034);\n\tWS(1057767608, -1132080751);\n\tsum1 =\n\t\tW(0, 1026028453, 1026017621, -1117947285, 1048679017) + W(1, 1025261389, 1011196341, 1015828970, 1025013027)\n\t\t+ W(2, 1025766741, -1135552917, 1051769667, -1083959172) + W(3, -1120826122, 1045191525, 1028389741, 1039505775)\n\t\t+ W(4, 1035118319, 1040474693, -1111744027, -1084413328)\n\t\t+ W(5, 1049618505, -1110336171, 1028257397, -1123719333) + W(6, 1012106581, -1138611630, 1030333189, 1045191121)\n\t\t+ W(7, -1122181545, 1030480605, 1027514349, 1020294666);\n\tsum2 = W(0, 1017587161, 1028118553, 1008167722, 1005112948)\n\t\t + W(1, -1125344655, 1015776789, -1148301500, -1138850406)\n\t\t + W(2, -1101123140, -1103020887, -1099714612, 1049070164)\n\t\t + W(3, 1032013714, 1022049457, 1009340114, -1167693540) + W(4, 1040188371, 1022642341, 1039093756, 1046164698)\n\t\t + W(5, -1111525569, -1098832696, -1115917000, -1103378287)\n\t\t + W(6, 988296658, 1010063898, 1026403646, 1033545355) + W(7, 1002132020, 1037334715, -1139728254, 1035581889);\n\tWS(-1099372256, -1088618788);\n\tsum1 = W(0, -1112538182, -1113349022, -1103996671, 1024020908)\n\t\t + W(1, 1046614908, -1111225386, -1110537326, -1114146165)\n\t\t + W(2, 1048693927, 1033711782, 1064716592, -1143605597)\n\t\t + W(3, -1085173359, 1004694493, -1108087402, -1138402062)\n\t\t + W(4, -1112344546, -1129092599, -1086749016, 1044926535)\n\t\t + W(5, 1062252083, 1040479887, 1034104622, 1042110371)\n\t\t + W(6, -1109099742, -1110127398, 1032699126, -1121424940)\n\t\t + W(7, -1130166943, -1106709441, -1120726228, -1106064827);\n\tsum2 = W(0, 987083788, -1144106823, -1120467381, -1121977305)\n\t\t + W(1, -1118651341, -1162389292, -1152635694, 964510307)\n\t\t + W(2, 1013472954, -1131186779, -1139561796, 1044091298)\n\t\t + W(3, 1038343490, -1115306287, -1155962630, -1117365756)\n\t\t + W(4, -1120418118, -1122269098, 1038342084, 1042996066)\n\t\t + W(5, -1118476220, -1128689408, -1132569906, -1141833923)\n\t\t + W(6, 979955865, -1163904780, -1115615181, -1127292875)\n\t\t + W(7, -1123141745, 1014320394, -1135582470, 1008840046);\n\tWS(1041282784, 1044242623);\n\tsum1 = W(0, -1119885764, -1119816052, -1100880653, -1113812594)\n\t\t + W(1, 1046531310, 1015358999, 1005085853, 1021011107) + W(2, -1171512555, -1121861252, 1057266723, 1010135439)\n\t\t + W(3, -1089952515, 1031135156, -1115226950, 1003139037)\n\t\t + W(4, 1003864029, 1040963149, -1094412795, -1118004569) + W(5, 1056310444, -1114099002, 1015234855, 992693307)\n\t\t + W(6, 1025494836, -1113504879, 1043843337, -1125989575)\n\t\t + W(7, -1156936827, -1122714492, 1003362397, -1120612644);\n\tsum2 = W(0, 1005317381, -1143827754, 1019060164, 1009279342)\n\t\t + W(1, 1014092605, -1131000233, 1012779564, -1137528453)\n\t\t + W(2, -1142619324, 1012902153, -1114788024, -1098688460)\n\t\t + W(3, -1120377499, 1017453102, -1139793504, -1147729078)\n\t\t + W(4, -1126266146, -1128784654, -1094218173, -1078812823)\n\t\t + W(5, -1099532818, 1007638067, -1130333980, 1018177647) + W(6, 1026462555, 1020893616, 1054132458, 1070492026)\n\t\t + W(7, 1048935725, 1011358224, 1015734963, 987943782);\n\tWS(1046635232, 1024078131);\n\tsum1 = W(0, 1002735212, 1025138813, 1017042555, -1132524982) + W(1, 1031803657, 1033606155, 1021596219, 1015508823)\n\t\t + W(2, 1035063871, 1034039879, 1044122447, -1110416695)\n\t\t + W(3, -1092481954, -1094320024, -1107502027, -1103391009)\n\t\t + W(4, -1097977761, -1105608655, -1094991056, 1051547730)\n\t\t + W(5, 1050188814, 1047410847, 1031346589, 1046101811) + W(6, 1040314319, 1035664624, 1038536855, -1114843703)\n\t\t + W(7, 1003107468, 1019470987, 1021345835, -1136683190);\n\tsum2 = W(0, -1096475926, -1112281069, -1116645717, 1041647377)\n\t\t + W(1, -1113263240, 1023473494, -1117017643, 1039764966)\n\t\t + W(2, 1044036812, -1112231286, -1111398905, -1096068583)\n\t\t + W(3, 1026411348, -1114320784, -1138574198, -1104710548)\n\t\t + W(4, 1052862983, 1024115789, 1051331710, 1038036111) + W(5, 1042458641, 1028002558, 1037890580, -1106844581)\n\t\t + W(6, -1106234474, -1121785528, -1130292776, 1037359643)\n\t\t + W(7, -1111704128, -1123406807, -1109714921, 1041123403);\n\tWS(-1088554040, -1076674880);\n\tsum1 = W(0, 1026292820, 1016736263, 1042339025, -1110236986)\n\t\t + W(1, -1103961368, 1016313655, -1151588920, 1014755782)\n\t\t + W(2, -1132973070, 1034501898, -1089525132, 1037427962)\n\t\t + W(3, 1056478885, -1118983748, 1038469390, -1123320716)\n\t\t + W(4, -1144171612, -1110973538, 1052671191, -1123890785)\n\t\t + W(5, -1092344862, 1041641985, 1010979982, 1017396903)\n\t\t + W(6, -1130131975, 1028857234, -1108906970, -1112145786)\n\t\t + W(7, 1002874044, 1025897228, -1130905399, 1033705562);\n\tsum2 = W(0, 1013915195, 1007730851, 981970521, 1028189234) + W(1, -1121038101, -1142484934, -1146368902, 1010322539)\n\t\t + W(2, -1133182691, 1024414743, -1111248658, 1040952978)\n\t\t + W(3, -1109339192, -1094377458, -1116592821, -1112421528)\n\t\t + W(4, -1127318198, -1121307593, 1035588225, 1057294107)\n\t\t + W(5, -1107404728, 1024397525, -1118541421, 1019759378)\n\t\t + W(6, 1020584890, 1005058566, -1124411850, 1029625115)\n\t\t + W(7, 1026110889, 1023925523, -1140327971, -1199698720);\n\tWS(1063581112, 1015292283);\n\tsum1 = W(0, -1123806598, -1124445804, 1036776315, -1112186771)\n\t\t + W(1, -1102837698, -1117642958, -1137018200, 1010580432)\n\t\t + W(2, -1125096044, 1037634467, -1083793455, -1098422117)\n\t\t + W(3, 1058965073, -1106625757, 1036181095, -1127761788) + W(4, 1046804719, 1028314614, 1064148787, 1034155462)\n\t\t + W(5, -1089226130, 1037373467, 994321759, 1021285644) + W(6, -1117498166, 1006823135, -1106689849, 1004978479)\n\t\t + W(7, 1033810693, 1029436414, -1119765454, 1034713459);\n\tsum2 =\n\t\tW(0, -1127012521, -1129458054, -1134632819, -1113739078)\n\t\t+ W(1, -1106078947, -1115241196, -1122814807, -1119046895)\n\t\t+ W(2, -1110373665, -1122115974, -1118435057, 1041258512) + W(3, 1025961773, 1041055451, 1025056413, 1029845331)\n\t\t+ W(4, -1121983257, -1121551577, -1107711610, 1043546644)\n\t\t+ W(5, 1048226293, -1131486243, -1139476701, 1018415015) + W(6, 1021812843, 1015201109, 1039413537, -1127386873)\n\t\t+ W(7, -1110385416, -1135801459, -1132245806, -1140149017);\n\tWS(-1109010880, -1087548956);\n\tsum1 = W(0, 1034947768, 1034343312, 1016751552, 1019661856) + W(1, -1126501287, 1017025648, 1030724160, -1140792121)\n\t\t + W(2, -1095012676, -1102610188, -1096454908, -1091443170)\n\t\t + W(3, -1131030249, 1042942296, 1019936112, 1024647464) + W(4, 1046023882, 1039446704, 1042564604, -1105694067)\n\t\t + W(5, 1044246468, -1103700296, -1141422594, -1107855416)\n\t\t + W(6, 1029737824, 1025692706, 1038373096, 1039271048) + W(7, 1012879825, 1041317114, 1029263800, 1041193844);\n\tsum2 = W(0, 1034034732, -1113997103, 1028771217, 1025456143)\n\t\t + W(1, 1035315492, -1102403849, 1018212015, -1099438501)\n\t\t + W(2, -1107522705, -1121503695, -1114143244, -1105773446)\n\t\t + W(3, -1109746606, -1106040358, -1106459627, 1039219872)\n\t\t + W(4, -1105460279, 1038975878, 1032873918, 1059420344) + W(5, 1040681265, 1046039582, 1026290649, 1046943722)\n\t\t + W(6, 1021740679, -1112744336, -1121564954, 1024971971)\n\t\t + W(7, -1122379806, -1106873869, -1130313815, -1105420350);\n\tWS(-1086299832, -1077288694);\n\tsum1 = W(0, 1021716686, -1132921948, -1113901292, -1108835908) + W(1, 1023078294, 965138311, 998651320, -1130194922)\n\t\t + W(2, -1099039878, -1108540692, -1158126306, 1055092577)\n\t\t + W(3, -1089051407, -1113759276, -1107695832, -1113503632)\n\t\t + W(4, -1111509136, 1021468846, -1096197083, 1062013047) + W(5, 1050708993, 1022391342, -1133490396, 991635057)\n\t\t + W(6, 1039618828, -1131678690, 1041516082, -1118733319)\n\t\t + W(7, -1122936235, 1015065790, 997649137, 1023538631);\n\tsum2 = W(0, -1133976495, 1027343155, -1149877867, -1119506980)\n\t\t + W(1, -1126385541, 1016526837, 994153115, -1140785051) + W(2, 1035891239, 1030599513, 1037590422, 1054189655)\n\t\t + W(3, 1041308688, -1112736561, 1004824957, -1120347934)\n\t\t + W(4, -1130801609, -1108453664, 1012747883, -1119322812)\n\t\t + W(5, -1107379808, -1119223720, -1116360142, -1129452107)\n\t\t + W(6, -1113698362, 1016406968, -1108226898, -1120928356)\n\t\t + W(7, 1016225738, 988482485, 1018050885, -1117792638);\n\tWS(-1113279936, 1066223903);\n\tsum1 =\n\t\tW(0, -1128171420, -1141738481, -1138940153, 1044160156) + W(1, 1020686276, -1129655596, 964173357, -1123239900)\n\t\t+ W(2, 1040261344, -1140107833, 1050703688, -1100167260)\n\t\t+ W(3, -1130335589, 1035637471, -1124525100, 1032644739)\n\t\t+ W(4, -1112013315, -1116929726, -1108200895, -1100730273)\n\t\t+ W(5, 1040782300, 1024316286, 1014134393, 1029624526) + W(6, -1123695998, -1154978689, -1123177006, 1034288823)\n\t\t+ W(7, -1141423761, -1114187043, 1013984857, -1108229911);\n\tsum2 = W(0, -1115606620, -1125272644, -1099614716, -1080575150)\n\t\t + W(1, -1102155153, -1122847678, -1123394906, -1129056732)\n\t\t + W(2, 1021458196, 1017345212, 1047257730, 1068148121) + W(3, 1044966894, 1026244022, 1017049220, 1010161976)\n\t\t + W(4, 1009639320, 1016051020, -1120838650, -1113655261)\n\t\t + W(5, -1132238288, -1130782536, 967940860, 1004223696)\n\t\t + W(6, -1131253088, -1143902384, 1020803060, 1032085971)\n\t\t + W(7, 1016311348, -1137376840, -1137115752, -1136984808);\n\tWS(1060545080, -1126581603);\n\tsum1 = W(0, 1032630360, 1037657648, 1043836232, 1037448680) + W(1, 976149203, 1031833596, 1031675647, 1025282125)\n\t\t + W(2, -1112268976, -1128752350, -1090205186, 1048595306)\n\t\t + W(3, 1057651571, 1035187792, 1034806588, 1043419290) + W(4, 1045186906, 1032285712, 1053340438, -1094666759)\n\t\t + W(5, -1082657749, -1092127852, -1104761760, -1096441814)\n\t\t + W(6, -1125010622, 1029508223, -1108078856, 1041691860)\n\t\t + W(7, 1042698525, 1040118132, 1033087420, 1034587656);\n\tsum2 = W(0, -1123698886, -1126365381, -1135914762, -1121651762)\n\t\t + W(1, -1118625490, -1122087574, -1147908244, -1134045690)\n\t\t + W(2, 1034075649, 1026991402, 1019253181, 1047572688) + W(3, 1035108181, -1115886918, 1016718341, -1117034488)\n\t\t + W(4, 998149095, -1118780236, 1023543366, 1038479879)\n\t\t + W(5, -1114677625, 1011684618, -1132109957, -1137057610)\n\t\t + W(6, -1113635181, -1168196508, -1114469118, -1145545780)\n\t\t + W(7, 992781287, -1139655050, -1142844852, 1007905050);\n\tWS(-1083899832, -1105526146);\n\tsum1 = W(0, 1026357515, -1139718894, 1044187583, -1105573131)\n\t\t + W(1, -1104526300, -1119529939, -1125768375, -1132776678)\n\t\t + W(2, -1119744955, -1125720471, -1092285679, 1062437883)\n\t\t + W(3, 1058460257, 1022150135, 1033366698, 1009731342) + W(4, -1117075907, -1106102943, 1048719011, 1052836221)\n\t\t + W(5, -1089717563, -1123085499, -1114009838, -1112611206)\n\t\t + W(6, -1111407198, -1152407445, -1107209883, -1107292779)\n\t\t + W(7, -1122559055, -1119739267, -1119196243, -1129505495);\n\tsum2 = W(0, -1110807022, -1129400032, -1105612607, -1123619892)\n\t\t + W(1, -1131262448, 1016529300, -1129444600, -1136239801)\n\t\t + W(2, 1025172792, -1117035240, 1035443403, -1135427545)\n\t\t + W(3, -1111010692, -1115955576, -1117326476, -1121250556)\n\t\t + W(4, 1033543849, 999654946, 1039345667, 1053020794) + W(5, 1047843748, -1135856481, 1022819536, 998047364)\n\t\t + W(6, -1123816828, -1144812946, -1120747576, -1113498942)\n\t\t + W(7, -1113301822, -1146605522, -1119691028, -1135792457);\n\tWS(-1107513792, 1064663354);\n\tsum1 = W(0, 1030862455, -1161118946, 1040244826, -1104300038)\n\t\t + W(1, -1102940181, -1135077628, -1135539484, 1011863892)\n\t\t + W(2, -1113532308, 1021510766, -1091621085, 1046262406)\n\t\t + W(3, 1054782000, 1019068110, 1036941280, -1128724830) + W(4, 1032378968, -1127591630, 1051734861, 1034822530)\n\t\t + W(5, -1095483267, 1031948820, -1172984259, -1120336759)\n\t\t + W(6, -1123071015, 1009770420, -1107582956, -1108820108)\n\t\t + W(7, -1125175670, 1025488559, -1126076542, 1036426604);\n\tsum2 =\n\t\tW(0, -1135206239, -1139065871, 1026230428, 1025917606) + W(1, 1027050280, 1013849783, 1016077019, -1127829351)\n\t\t+ W(2, -1140752647, -1123380440, 988696695, -1092786651) + W(3, 1049996339, 1057784826, 1033822297, 1034470972)\n\t\t+ W(4, 1022777359, 1021581075, -1122295168, -1085937537)\n\t\t+ W(5, 1032573953, -1130048007, 1032545188, -1137094527) + W(6, 974924014, -1133276463, 1029689087, -1140169471)\n\t\t+ W(7, -1135329695, -1124883951, 1011238415, 1001568686);\n\tWS(1058918200, -1121082995);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[525];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define temp_tex(pos) (float(texture(temp, pos).x))\nstatic const float2 temp_size = float2(GetInputSize().x * 1, GetInputSize().y * 2);\nstatic const float2 temp_pt = float2(1.0 / (temp_size.x), 1.0 / (temp_size.y));\n\n#define HOOKED_tex(pos) temp_tex(pos)\n#define HOOKED_size temp_size\n#define HOOKED_pt temp_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 525; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (1)) + 0.5, float(group_base.y + y - (3)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[8];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 6];\n\tsamples[1][3] = inp[local_pos + 7];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 19];\n\tsamples[3][1] = inp[local_pos + 20];\n\tsamples[3][2] = inp[local_pos + 21];\n\tsamples[3][3] = inp[local_pos + 22];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 32];\n\tsamples[4][3] = inp[local_pos + 33];\n\tsamples[5][0] = inp[local_pos + 34];\n\tsamples[5][1] = inp[local_pos + 35];\n\tsamples[5][2] = inp[local_pos + 36];\n\tsamples[5][3] = inp[local_pos + 37];\n\tsamples[6][0] = inp[local_pos + 45];\n\tsamples[6][1] = inp[local_pos + 46];\n\tsamples[6][2] = inp[local_pos + 47];\n\tsamples[6][3] = inp[local_pos + 48];\n\tsamples[7][0] = inp[local_pos + 49];\n\tsamples[7][1] = inp[local_pos + 50];\n\tsamples[7][2] = inp[local_pos + 51];\n\tsamples[7][3] = inp[local_pos + 52];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 18];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(2, 1);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1) + ivec2(1, 0), ret);\n}\n"
  },
  {
    "path": "src/Effects/NNEDI3/NNEDI3_nns16_win8x6.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: nnedi3.py --nns 16 --win 8x6 --use-compute-shader --use-magpie\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME NNEDI3_016_6\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 1 * 2\n//!HEIGHT INPUT_HEIGHT * 2 * 1\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH * 1\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D temp;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_temp;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC NNEDI3 (double_y, nns16, win8x6)\n//!IN INPUT\n//!OUT temp\n//!BLOCK_SIZE 32, 16\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[12]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 12; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 48.0;\n\tfloat mstd1 = sumsq / 48.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 =\n\t\tW(0, -1126897990, 1027745880, 1024250604, 1024642508) + W(1, -1121959908, -1149906049, -1130469888, -1121396864)\n\t\t+ W(2, 1039079928, -1107295041, -1147395201, -1126556538)\n\t\t+ W(3, -1113607518, 1041026790, 1022159130, 1044630722) + W(4, -1107136294, 1005058137, -1116173177, 1042195560)\n\t\t+ W(5, -1098313415, 999141354, 1019497054, 1007702352) + W(6, 1015526727, 1018714920, 1042189511, -1106681307)\n\t\t+ W(7, 1035880216, -1121374916, -1133977224, 1026239260)\n\t\t+ W(8, -1106606352, 1038936227, -1124106064, 1025050132) + W(9, 990390561, -1131068140, 1013770942, -1122507740)\n\t\t+ W(10, -1136584888, -1135809122, -1122292152, 1015308851)\n\t\t+ W(11, -1122039043, 1031978820, -1116330759, 1018900008);\n\tsum2 = W(0, 1017133506, 1011515348, -1139818306, -1123730089) + W(1, 996184056, -1138856554, 1023321012, 1029416248)\n\t\t + W(2, -1115999672, 1020129658, 1015618084, 1007066512)\n\t\t + W(3, -1119553894, 1057587887, -1090489276, -1109933138)\n\t\t + W(4, 1016266760, -1145378916, -1112177411, 1071604647)\n\t\t + W(5, -1079392139, -1097028615, 1028448562, 1008681896)\n\t\t + W(6, -1165256880, 1051025857, -1098617840, -1105405946)\n\t\t + W(7, -1155286464, 1000343320, -1133574805, 1035052104)\n\t\t + W(8, -1139515542, -1135392452, -1138601606, 991053648)\n\t\t + W(9, 1020043526, 1010374724, -1121583660, -1142174380)\n\t\t + W(10, 997185888, -1155288808, -1135761830, 1018728192)\n\t\t + W(11, 1024878156, 1002597928, -1131188096, -1132781834);\n\tWS(1018288640, 1027735986);\n\tsum1 =\n\t\tW(0, 1012158232, -1178449286, 1044498160, -1128542910) + W(1, -1115962871, 1002517720, 1006778572, -1114624234)\n\t\t+ W(2, 1032943202, 1027108853, 1017365062, 964628492) + W(3, 1025063871, -1104570115, 1059928494, -1088743921)\n\t\t+ W(4, 1032615126, -1134936888, -1156175041, 1028919475)\n\t\t+ W(5, -1097612337, -1106124541, 1026836706, -1146238776)\n\t\t+ W(6, 1010747802, 1034856692, -1085331503, 1059914122)\n\t\t+ W(7, -1114177498, 1020458158, -1140348884, -1127457566)\n\t\t+ W(8, 1031833306, 1032056909, -1122073627, 1016604174) + W(9, 1020162890, -1122825993, -1119592595, 1033999672)\n\t\t+ W(10, 1022377282, 998219705, -1172026051, -1115773453)\n\t\t+ W(11, 1038136595, 1027508251, -1129465364, 1023799671);\n\tsum2 =\n\t\tW(0, -1126840972, -1130460798, 1019075916, 1017322604) + W(1, -1131054760, -1131047996, -1145399745, 985194115)\n\t\t+ W(2, -1120812206, -1129997452, 1006903064, -1143360737)\n\t\t+ W(3, -1139273136, -1112997847, -1139625904, 1042717692)\n\t\t+ W(4, -1114175000, -1130986946, 991527106, -1120456092) + W(5, 1043975251, 1051048254, -1113881740, 1007107280)\n\t\t+ W(6, -1135317632, 1001121889, -1150833602, -1121880440)\n\t\t+ W(7, 978663174, -1143215153, -1139461992, 1017866680)\n\t\t+ W(8, -1128878392, -1112673669, 1026044394, -1125685806)\n\t\t+ W(9, -1129486378, 1006765920, -1133504840, -1126929736)\n\t\t+ W(10, 1014584312, -1144361281, 995542402, 1000306721)\n\t\t+ W(11, -1142139489, -1114488494, 1007041936, -1134951296);\n\tWS(1042433344, -1111851638);\n\tsum1 = W(0, -1128612156, -1112658226, -1119638967, 1043958886)\n\t\t + W(1, -1120465263, -1128976934, -1139940268, -1123380939)\n\t\t + W(2, -1126908022, 1033805831, -1115346894, -1142120768)\n\t\t + W(3, -1122042583, -1128727592, -1097703246, 1057665642)\n\t\t + W(4, -1104545545, 1005565040, 984858240, -1107767030)\n\t\t + W(5, 1052387104, 1046318672, -1108167869, -1148354296)\n\t\t + W(6, 999630836, -1114896432, 1054789077, -1095395475)\n\t\t + W(7, 1029397739, -1133849404, -1146630760, -1115281716)\n\t\t + W(8, 1030603948, -1117224401, -1163176544, -1117808895)\n\t\t + W(9, -1126512698, -1129996802, 1028419819, -1123618471)\n\t\t + W(10, -1117439993, 1013349902, 996431920, -1123547845)\n\t\t + W(11, 1026334318, -1113258842, -1134051464, -1120421311);\n\tsum2 =\n\t\tW(0, 1022431497, -1109389142, 1004613154, 1028727631) + W(1, 1029503922, -1132574761, -1132240188, -1119299282)\n\t\t+ W(2, -1139248009, -1129989652, -1140046689, -1114039002)\n\t\t+ W(3, 1024165374, -1107432916, 1041447926, 1047487962) + W(4, 1017218352, -1135952741, -1114822837, 1044244351)\n\t\t+ W(5, -1108646182, -1100679909, 1040665470, -1123756570)\n\t\t+ W(6, -1120729932, 1031006195, 1047688354, -1126089152)\n\t\t+ W(7, -1120804126, -1148002498, -1124855948, 983982854) + W(8, 1009435309, 1033956847, -1107003694, 1028342876)\n\t\t+ W(9, -1126342960, -1158996358, -1122846542, -1123334894)\n\t\t+ W(10, -1140927562, -1117057946, -1128289576, -1121099750)\n\t\t+ W(11, 1036127241, 1039673953, -1102421772, 1026336008);\n\tWS(1015433728, 1058400049);\n\tsum1 =\n\t\tW(0, -1139873791, 1031161269, -1113693508, 1033801204) + W(1, -1119172737, -1143910182, -1133909491, 1032977294)\n\t\t+ W(2, -1112917766, -1131731326, 989007258, 1019358132) + W(3, 1023506921, -1116372870, -1116140698, 1045725159)\n\t\t+ W(4, -1122523445, 1008313039, -1230944644, 1035249566)\n\t\t+ W(5, -1103376612, -1102794347, 1044071755, -1115540344)\n\t\t+ W(6, -1118840528, -1120831281, 1044830734, -1116748777)\n\t\t+ W(7, 1030473357, -1126204226, 1028378783, -1114963068)\n\t\t+ W(8, -1141442286, 1032646513, 1018738506, -1118552369)\n\t\t+ W(9, -1121050287, 1032892305, 1023234585, -1112562780)\n\t\t+ W(10, 1021910870, 1016154651, 1033465034, -1105610222)\n\t\t+ W(11, 1034039600, 1030129285, -1122899972, -1124368226);\n\tsum2 = W(0, -1138428449, -1158711528, -1124467432, -1140697417)\n\t\t + W(1, 1030243467, 1012442941, 992976916, 1013039401) + W(2, -1130455464, -1123518198, 1033499227, 975746961)\n\t\t + W(3, -1142924106, -1128734961, -1113146735, -1099387353)\n\t\t + W(4, 1051222006, -1122081826, 976851025, 1036130613)\n\t\t + W(5, -1097860430, -1077268149, 1072898808, -1117904739)\n\t\t + W(6, 989093448, 1010050489, -1108810723, -1091225653) + W(7, 1056060393, -1131990027, 997652548, -1137359275)\n\t\t + W(8, -1122996798, 1032494444, 1025590581, 951236744) + W(9, -1153131756, 990210276, -1140348735, -1115493835)\n\t\t + W(10, 1025171621, 1006284898, -1134977059, -1138876101)\n\t\t + W(11, -1127238416, 1018469149, 1026307569, -1146863422);\n\tWS(-1143089152, 1030017260);\n\tsum1 =\n\t\tW(0, 1012276081, -1116644609, 1019444907, -1124688427) + W(1, 1029853709, -1130860131, 1001605962, -1127223379)\n\t\t+ W(2, -1119160665, 1035777366, -1136557285, -1130309965)\n\t\t+ W(3, 1024406997, -1109637089, 1048989101, -1098625404)\n\t\t+ W(4, 1038057505, -1130883561, -1155861797, -1115433381)\n\t\t+ W(5, 1044433671, 1006101820, -1111190908, 1009046005) + W(6, -1155627981, 1036571679, -1098184025, 1048780603)\n\t\t+ W(7, -1112291813, 1025361773, -1122534699, 1028189701)\n\t\t+ W(8, 1039597237, -1104960796, -1130076067, 1018788475)\n\t\t+ W(9, 1018348791, -1126280255, -1117935161, 1029641477)\n\t\t+ W(10, 1012573277, -1125993892, -1120990241, 1036379833)\n\t\t+ W(11, -1136463217, -1111599465, -1154886405, 1020397819);\n\tsum2 = W(0, -1153319600, 1008405084, -1118973116, -1140784820)\n\t\t + W(1, 1012585128, 1010769460, -1147284080, 985822624) + W(2, 1010505984, -1129308604, 1021293048, 1001814848)\n\t\t + W(3, 1008968960, -1142311064, -1101248908, 1037448945) + W(4, 1024969278, -1160749952, 995456320, 1022276922)\n\t\t + W(5, -1089187936, 1057794596, 1033366347, -1123619202)\n\t\t + W(6, -1140178660, -1140411728, -1109859050, 1029773785)\n\t\t + W(7, 1024400778, -1136545168, -1146954776, 1005012008) + W(8, 1017518401, 1015531414, 1007802556, 1000322872)\n\t\t + W(9, -1142030464, 1003782736, 982409184, 974134143) + W(10, 1003482728, -1152799248, -1170856127, 1006946188)\n\t\t + W(11, 995727232, 960534268, 1009923956, 985284128);\n\tWS(1064472528, -1121594920);\n\tsum1 =\n\t\tW(0, -1142654991, 1027230343, -1112807213, 1027061019) + W(1, -1128825126, -1164359388, -1143599223, 1032290711)\n\t\t+ W(2, -1113392623, 1016010466, 991342574, 1014490160) + W(3, 1014568428, -1136037408, -1115590690, 1034098395)\n\t\t+ W(4, 1008695068, -1148094031, 1010500896, 1002050167)\n\t\t+ W(5, -1113734161, -1112872467, 1027642302, -1127829894)\n\t\t+ W(6, -1124387333, -1122938499, 1038834309, -1130883382)\n\t\t+ W(7, 1013984188, -1138058188, 1020884834, -1120250507) + W(8, 1029912912, 1015162858, 1015817710, -1124941766)\n\t\t+ W(9, -1131205634, 1025589157, 1019867389, -1123484555)\n\t\t+ W(10, 1015459258, 1008886302, 1026841191, -1110863224)\n\t\t+ W(11, 1031947569, 1019435182, -1129521612, -1130075526);\n\tsum2 =\n\t\tW(0, 1003807591, -1154115373, 1000124719, 1017182228) + W(1, -1126980607, -1130234859, -1147429191, -1139843175)\n\t\t+ W(2, 1001833687, 1024488826, -1116401990, 987658746) + W(3, 1002635095, 1018649088, 1008095031, 1040714709)\n\t\t+ W(4, -1105844805, 1013729967, -1132089351, 1016729308)\n\t\t+ W(5, -1105992985, 1063780536, -1085442794, 1024604622) + W(6, -1147602519, 1024344696, 1014141127, 1047200342)\n\t\t+ W(7, -1101306502, 995366957, -1151072125, -1155997437)\n\t\t+ W(8, -1132427785, 1020609216, -1122913939, -1147894927) + W(9, 964968041, 1001714367, -1141957575, 1023684454)\n\t\t+ W(10, -1125194898, -1146690231, 1011860423, -1141691791)\n\t\t+ W(11, -1139390003, 1017456200, -1128761080, -1146063807);\n\tWS(1061878800, -1131153991);\n\tsum1 =\n\t\tW(0, -1123872727, 1015115512, -1099302516, 1041224340) + W(1, -1144166978, -1171049230, 1018625288, 1031144036)\n\t\t+ W(2, -1102371221, 1009910425, 1014687697, 1022902338) + W(3, -1127640224, 1036357847, -1085394744, 1052022073)\n\t\t+ W(4, -1115552350, -1132534141, 1026350045, -1108974562)\n\t\t+ W(5, 1059569738, 1058525661, -1125187302, 1016189168) + W(6, 1013916191, -1107191102, 1050617832, -1088226291)\n\t\t+ W(7, 1037730450, -1123531112, 1018183052, 1006433282) + W(8, 1032504563, -1097316565, 1040234099, -1127405808)\n\t\t+ W(9, -1145362866, 1014427177, 1031877738, -1109508096) + W(10, 1015825508, 1018548825, 1016048056, 1026198990)\n\t\t+ W(11, 1033421596, -1098228398, 1035235966, -1137247201);\n\tsum2 = W(0, -1131301730, 1031269327, -1127010401, -1109842974)\n\t\t + W(1, -1181736700, -1180777340, 973798558, -1131640108)\n\t\t + W(2, 1028981651, -1125259759, -1167651134, -1160957999)\n\t\t + W(3, -1127780866, 1013454096, -1149526184, -1113692773)\n\t\t + W(4, -1123287814, 993986728, 1013478572, -1109509101) + W(5, 1051779317, 1047088883, -1109788940, 1020962386)\n\t\t + W(6, -1160424319, -1117315078, 1028380081, -1134194124)\n\t\t + W(7, -1115287133, -1136947718, -1135840779, -1131160392)\n\t\t + W(8, -1137527992, 1028175261, -1121515979, -1138138790)\n\t\t + W(9, -1164912671, -1145619912, 998238336, 1018886164)\n\t\t + W(10, -1125209194, -1152989064, -1138738786, -1127332243)\n\t\t + W(11, -1148504424, 1027237057, -1142455024, -1123011340);\n\tWS(-1146021888, 1053974589);\n\tsum1 =\n\t\tW(0, 1029642476, -1119368753, 1042969521, -1095098901) + W(1, 1046685039, 984849429, 1013890275, -1134074211)\n\t\t+ W(2, 1042359026, -1107285127, 1031018217, -1135393367)\n\t\t+ W(3, -1176939092, 1007708103, 1045769551, -1096985546) + W(4, 1036262392, -1139413615, 1022266947, 1017736689)\n\t\t+ W(5, -1101301107, 1034918881, 1003810877, 1024875117) + W(6, -1146466657, 1027345005, -1094644679, 1050538529)\n\t\t+ W(7, -1120828825, -1172526890, 1004183253, 1032510570) + W(8, -1091538585, 1051699648, 1011534979, 1017671961)\n\t\t+ W(9, -1160650069, 1019378973, -1107179580, 1036824506)\n\t\t+ W(10, -1133351451, -1160823333, -1127783457, 1031489314)\n\t\t+ W(11, -1095508207, 1048776768, 1035618600, 1006585957);\n\tsum2 = W(0, 1031363252, -1091101506, 1048232756, 1057852755) + W(1, -1095952784, 1016290300, 1030774484, 1001500224)\n\t\t + W(2, -1110436898, -1132290932, -1131305343, -1126601761)\n\t\t + W(3, 1015165558, -1110787951, 1016237906, 1043794074) + W(4, -1113356328, 1003743696, 1007437656, 965388167)\n\t\t + W(5, 1014973676, 1047525730, -1152923833, 1022650220) + W(6, 1020087968, 1003188992, -1123006886, 1011818344)\n\t\t + W(7, -1111245491, 1021501454, -1158035650, 1041338676)\n\t\t + W(8, -1105090874, -1129296549, -1131940021, 1017537464)\n\t\t + W(9, -1137051446, -1134903850, -1123217223, 1034851396)\n\t\t + W(10, -1117639196, -1133259176, 1018262350, 1033269727)\n\t\t + W(11, -1104724635, -1106365430, 1024945328, 1019937714);\n\tWS(-1077057896, -1083600334);\n\tsum1 = W(0, 1017420011, 1011471785, 1029223422, -1116040414) + W(1, 1017123181, 1016511669, 1014201033, 1019976613)\n\t\t + W(2, -1126437509, 1015478313, 1024110818, -1167731667)\n\t\t + W(3, 1017846781, -1138042285, 1049638570, -1103217262) + W(4, 1023111893, 1009386661, 999765850, 1040273597)\n\t\t + W(5, -1090770241, -1087230893, 1030676769, 1023090125)\n\t\t + W(6, -1162024122, 1016487629, 1029091694, 1046437488) + W(7, -1112046985, 1020460717, 985808522, 1027730222)\n\t\t + W(8, 1037672698, 1024768280, -1120839802, 1025489318) + W(9, 1019153993, 1010855969, 1027546578, 1028909230)\n\t\t + W(10, 1023955584, -1134545259, 1011766057, 1025127228)\n\t\t + W(11, 1025680213, 1017109109, -1128064723, 1027741830);\n\tsum2 =\n\t\tW(0, 1023774756, -1107003878, 1020767940, -1118294055) + W(1, -1113997093, 1021408408, -1152708847, 1013240776)\n\t\t+ W(2, -1108605887, -1128830540, -1139588328, -1119578529)\n\t\t+ W(3, 1005727232, -1108761818, 1050907301, -1097736561)\n\t\t+ W(4, 1032528025, -1135972104, -1128030280, 1032847770) + W(5, 1058054639, 1008347200, 1039669350, -1131826954)\n\t\t+ W(6, 1004577664, 1024878510, -1106188814, 1049418167) + W(7, -1108856812, 999382680, -1116453887, -1129071264)\n\t\t+ W(8, 1040942692, -1105809360, -1104688291, 1019392776)\n\t\t+ W(9, 1020705336, -1124253692, -1115446820, 1014050712)\n\t\t+ W(10, 1018266740, -1117167612, -1127775332, -1114566712)\n\t\t+ W(11, 1042743894, -1132221182, -1103534695, 1022204104);\n\tWS(1034686080, -1080904524);\n\tsum1 =\n\t\tW(0, -1139332721, 1025190657, -1143163562, 1041601261) + W(1, 1024768205, -1137907141, -1156631187, 1024127465)\n\t\t+ W(2, 1040892278, 1028605547, -1129308018, 1012089369) + W(3, 1023562901, 1006799241, -1104914606, 1052908885)\n\t\t+ W(4, -1117860929, 1019594656, 1011454089, -1145135178)\n\t\t+ W(5, -1089193318, -1091833281, 1036300940, -1143330794)\n\t\t+ W(6, 1009225011, -1129417722, 1043909393, -1103073573) + W(7, 1040987970, 992909011, 1012327853, 1017495114)\n\t\t+ W(8, -1119873834, 1025246703, 1033652713, -1123933213)\n\t\t+ W(9, 1010687981, 1027561839, -1136185891, -1124345098) + W(10, 1024209623, 1018355139, 1010798725, 1010795083)\n\t\t+ W(11, -1118482716, 1032670633, 1027144528, -1123266333);\n\tsum2 =\n\t\tW(0, 998154484, -1124228589, -1132108902, -1115676434) + W(1, -1123985162, 1004957466, -1136847690, 1028193069)\n\t\t+ W(2, -1123281782, -1123302060, -1132306691, 1011392625)\n\t\t+ W(3, -1120010648, 1043298286, -1097765474, 1027211577)\n\t\t+ W(4, -1114822183, -1127542967, -1145824866, -1115567961)\n\t\t+ W(5, 1059221182, 1034703777, -1131429597, 1022587458) + W(6, 1015307650, -1106126812, 1048600788, -1099334080)\n\t\t+ W(7, 1029215805, -1127163397, 994166396, -1111174068) + W(8, -1130476352, 1015056080, 1023836215, -1122559367)\n\t\t+ W(9, 1000606426, -1128437454, 1026255089, -1137618020)\n\t\t+ W(10, -1127893362, -1171736302, 1010815409, -1110538383)\n\t\t+ W(11, -1118584150, 1028199647, 1025007180, -1124423270);\n\tWS(-1097173920, -1100403112);\n\tsum1 = W(0, -1133792968, -1126599342, 1026626987, -1109988694)\n\t\t + W(1, -1128510918, -1124691470, -1124511038, -1134319356)\n\t\t + W(2, -1112479512, -1122054529, -1138055228, -1131431128)\n\t\t + W(3, -1133667884, -1113753548, 1051379210, -1097159959)\n\t\t + W(4, 1031366423, -1128464692, -1126404688, -1113718896)\n\t\t + W(5, 1058852431, 1058630415, -1108453759, -1122909907)\n\t\t + W(6, -1129657589, 1034489098, -1097104011, 1049904553)\n\t\t + W(7, -1111244112, 1006087192, -1123548289, 1017816566)\n\t\t + W(8, 1007326848, -1104990865, -1129654222, -1138955724)\n\t\t + W(9, -1134226372, -1122628437, -1112737379, 983139170)\n\t\t + W(10, -1143321192, -1123473736, -1120375479, 1029275393)\n\t\t + W(11, -1116837058, -1110311540, -1132471000, -1149064600);\n\tsum2 = W(0, -1133003813, -1145103116, -1105221269, 1033080040)\n\t\t + W(1, 1016862101, -1129731365, -1170659932, 1024883426)\n\t\t + W(2, -1117429423, 1028547885, -1128891234, -1147341896)\n\t\t + W(3, 1006656308, -1122208183, -1098340061, 1042272545)\n\t\t + W(4, -1121562483, -1121650606, 1031055883, -1101651786)\n\t\t + W(5, 1055658740, 1058321046, -1100689547, 1031708925)\n\t\t + W(6, -1122785076, -1107240567, 1035604404, -1112738821)\n\t\t + W(7, -1115182870, -1123396988, -1138148825, -1137951645)\n\t\t + W(8, -1131811521, 1003752088, 1026865631, -1133076983)\n\t\t + W(9, -1134424500, -1131665157, -1130287800, 1015669581)\n\t\t + W(10, -1129373191, -1131162259, -1131089901, -1116779622)\n\t\t + W(11, -1123356625, 1033205575, -1134576021, -1127933595);\n\tWS(1049422752, 1064394145);\n\tsum1 = W(0, 1016583527, -1106085006, 995307718, 1042273115) + W(1, -1113049442, 1025810280, 997641734, -1123841888)\n\t\t + W(2, 1031369872, 1021597381, -1122854832, 1006187755)\n\t\t + W(3, -1129211865, 1041111742, -1088517333, 1058826428)\n\t\t + W(4, -1113933244, 1019889767, -1131677043, 1032245856)\n\t\t + W(5, -1098988005, -1105331685, 1032610296, -1131685097)\n\t\t + W(6, 1021172552, -1110939130, 1058612208, -1090507155)\n\t\t + W(7, 1037338632, -1155049030, 1021691141, -1105269375)\n\t\t + W(8, 1030057089, 1043687978, -1122591528, -1134096210)\n\t\t + W(9, -1133007562, -1137128282, 1036830720, -1120823228)\n\t\t + W(10, -1116248270, 1025994697, 1026669144, -1106745812)\n\t\t + W(11, 1034516890, 1038691348, -1117945591, -1126546729);\n\tsum2 = W(0, 1015668141, -1138201662, -1111996311, -1127284815)\n\t\t + W(1, -1125087482, 1020174885, -1124041461, -1140877219)\n\t\t + W(2, -1116450062, -1123578506, 1024732308, -1139064970)\n\t\t + W(3, 1005775275, 1027346708, -1125910350, -1106280325)\n\t\t + W(4, 1034158307, -1133423524, 1015274173, 1016303395)\n\t\t + W(5, -1108948194, 1052974100, 1032925063, -1161498797)\n\t\t + W(6, -1138139200, -1106503093, -1104963655, 1053021197)\n\t\t + W(7, -1107449032, -1134898868, 992639399, -1117618841) + W(8, 1031763952, 957951850, 994113735, 1013272790)\n\t\t + W(9, -1132053353, -1115775134, 1015724405, 1016609913)\n\t\t + W(10, -1132927280, -1132485274, -1129319398, -1122071744)\n\t\t + W(11, 1034411590, -1140595900, -1140186580, -1164791981);\n\tWS(-1101497152, -1084603877);\n\tsum1 =\n\t\tW(0, -1136425045, 1016522037, 967194407, 1019848413) + W(1, -1129523533, -1142614610, -1140218249, -1157845066)\n\t\t+ W(2, 1029505522, -1119357636, -1140249161, -1135395837)\n\t\t+ W(3, -1121565262, 1035402982, 1022903246, 1027088345)\n\t\t+ W(4, -1121932442, -1148904362, -1122160667, 1027884002)\n\t\t+ W(5, -1107598171, 1024422013, -1127296803, 1002411186) + W(6, 1006883159, 1025282390, 1025270942, -1117602990)\n\t\t+ W(7, 1030372258, -1130529549, -1132497425, 1022271101)\n\t\t+ W(8, -1120772739, 1030415880, -1129818261, 1018540973)\n\t\t+ W(9, 1004502690, -1138792353, -1154700189, -1171556244)\n\t\t+ W(10, -1138666305, -1138856043, -1128604789, 995143101)\n\t\t+ W(11, -1128284203, 1025955498, -1121511513, 1011955033);\n\tsum2 = W(0, -1126668299, -1131366283, 1024971228, 1000957181)\n\t\t + W(1, -1151515419, 1005199725, -1137964827, -1117612139)\n\t\t + W(2, 1034620123, -1119890411, -1145021381, -1136862175)\n\t\t + W(3, 1015963121, -1097765254, 1049249869, 1026062254) + W(4, 1001872029, 1007955643, 1030757650, -1083955387)\n\t\t + W(5, 1064229708, -1107214224, 1026637176, -1125717658)\n\t\t + W(6, -1137547503, -1103492737, 1047078464, -1122275403)\n\t\t + W(7, 1027173860, -1169614250, 997720155, -1118797430) + W(8, 1017921725, 1016072153, -1135832789, 923654805)\n\t\t + W(9, -1132279825, -1131387718, 1024786888, -1133941049)\n\t\t + W(10, -1148432117, 1002011725, -1152589275, -1140632131)\n\t\t + W(11, -1144191965, 996433547, -1140699475, 1005736109);\n\tWS(1059552336, -1136539026);\n\tsum1 =\n\t\tW(0, 990367896, 1041343484, -1096612504, 1033353841) + W(1, -1125599349, 1028944863, 1010957914, 1036710283)\n\t\t+ W(2, -1107358947, 1029016441, -1132821402, 1024290996)\n\t\t+ W(3, -1154541352, 1045269292, -1087221074, 1042554433)\n\t\t+ W(4, -1154580200, 1023892422, 1017372383, -1112141659) + W(5, 1058232297, 1029783110, -1114120867, 1023410731)\n\t\t+ W(6, 1026284586, -1116984235, 1051438086, -1087458720) + W(7, 1033522371, -1144215764, 1015461809, 1018013925)\n\t\t+ W(8, 1047713030, -1095293300, 1032365167, -1144750420) + W(9, 1014364322, 1006339428, 1032067931, -1114380761)\n\t\t+ W(10, 1004597796, 1001346936, 1021777309, 1032228520)\n\t\t+ W(11, 1045851190, -1099415088, 1030006574, -1130073781);\n\tsum2 = W(0, -1153914788, -1101809160, 1052877341, 1046574229)\n\t\t + W(1, -1095334336, 1023520281, -1126180245, -1115520194)\n\t\t + W(2, 1022007580, 1000424166, -1113807813, 1021218858) + W(3, 995844276, -1114410922, 1055965696, 1034680258)\n\t\t + W(4, -1109583292, 1008634443, -1141303142, 1033573989)\n\t\t + W(5, -1098900400, -1098051352, 1033797491, -1115608949) + W(6, 1026951758, 998799030, 1023481081, 1045079279)\n\t\t + W(7, 1032986287, 1032307290, 990856044, -1110191966) + W(8, 1023185808, -1106708743, 1025876178, -1128938562)\n\t\t + W(9, 1004850742, -1129252703, 1031073312, 984863273) + W(10, -1137844345, 1017335440, 1015235936, 1016759632)\n\t\t + W(11, -1104219784, -1103050031, 1038371038, 1020607644);\n\tWS(-1080660584, -1085825159);\n\tsum1 =\n\t\tW(0, 1013708199, -1123370319, -1145658646, -1118786339) + W(1, 1028171867, -1144908790, 998525366, -1131079022)\n\t\t+ W(2, -1111041043, 1035331132, 1017605134, -1131113128)\n\t\t+ W(3, 1026247587, -1110742584, 1047524760, -1095527502)\n\t\t+ W(4, 1042485668, -1130744068, 1009982783, -1113918027) + W(5, 1038280501, 1041941518, -1110999603, 992723116)\n\t\t+ W(6, -1136883881, 1032009669, -1096311074, 1051037928)\n\t\t+ W(7, -1106204846, 1025830203, -1128223794, 1025751155)\n\t\t+ W(8, 1042402294, -1106649743, -1132447358, 1017749654) + W(9, 999596614, -1126831290, -1118872454, 1032615945)\n\t\t+ W(10, 1002160934, -1127230527, -1126850910, 1033490448)\n\t\t+ W(11, 1023947050, -1111971999, 971034337, 1018668086);\n\tsum2 = W(0, 988660617, 1017543700, 1015794522, -1133704409) + W(1, 1003471274, -1140119133, -1145776834, 1002138986)\n\t\t + W(2, 1001599498, 1024621822, -1135257421, -1136500105)\n\t\t + W(3, -1133422913, 1031822055, 1041494739, -1102581932)\n\t\t + W(4, 970658596, -1163479081, -1126488793, 1032911160) + W(5, 1056510750, -1089051586, 1026713544, 1009057465)\n\t\t + W(6, 999416722, 1018658069, 1023998101, -1111744235) + W(7, 945757471, 1000517690, 999055930, 1007351961)\n\t\t + W(8, -1138508317, 1009295285, 998080468, -1137960905) + W(9, 987033481, -1162261577, 991201876, -1140892226)\n\t\t + W(10, -1156050276, -1186683976, -1179419172, 999395634)\n\t\t + W(11, -1141702058, -1147317506, 1007988669, -1146609818);\n\tWS(1064784784, -1120346387);\n\tsum1 = W(0, -1150678408, 1015721531, 1049255678, -1099108228)\n\t\t + W(1, -1149551256, -1136953142, 1000581420, -1110077251)\n\t\t + W(2, 1043607805, -1107416484, 1017163947, -1140022794)\n\t\t + W(3, 1006062348, -1107299655, 1059242626, -1089544734)\n\t\t + W(4, 1023526494, -1139533474, 1015088861, -1132691862)\n\t\t + W(5, -1123916922, -1130977491, 1022505321, 1012221798)\n\t\t + W(6, -1136518116, -1148196556, -1096371932, 1057929313)\n\t\t + W(7, -1104456865, 1014035238, -1126533711, 1013224070)\n\t\t + W(8, -1100407642, 1048500643, -1111675367, 1026165050)\n\t\t + W(9, 1012432222, -1124886999, -1132580564, 1035479729)\n\t\t + W(10, -1127245287, -1136458552, -1122704190, 1014270588)\n\t\t + W(11, -1102354822, 1044504531, 1007459698, 1017479699);\n\tsum2 = W(0, -1140771860, 1031694512, -1104948969, -1115570202)\n\t\t + W(1, 1040745971, -1127298441, -1125513054, -1122230843) + W(2, 993388690, 1042093481, -1111499166, 995262946)\n\t\t + W(3, -1131667695, 979286214, 1026183534, 1042830623) + W(4, -1119680402, 1002124441, -1131288705, 1025077104)\n\t\t + W(5, -1111209187, -1112764939, 982469091, -1123012516) + W(6, 978159878, -1108853537, 1041617383, 1043422569)\n\t\t + W(7, -1120447085, -1129740789, 1012596136, -1102087836)\n\t\t + W(8, 1045410736, 1034771561, -1109907689, -1125016939)\n\t\t + W(9, 1011933560, -1117751010, 1030126174, 1014235016)\n\t\t + W(10, -1127258987, 1004566649, -1121534607, -1113389694)\n\t\t + W(11, 1044425994, 1025820984, -1115100280, -1119639931);\n\tWS(-1088649680, 1067112300);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[507];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { temp[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 13 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 507; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 13, y = (uint)id % 13;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (3)) + 0.5, float(group_base.y + y - (2)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[12];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 13];\n\tsamples[1][3] = inp[local_pos + 14];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 26];\n\tsamples[3][1] = inp[local_pos + 27];\n\tsamples[3][2] = inp[local_pos + 28];\n\tsamples[3][3] = inp[local_pos + 29];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 39];\n\tsamples[4][3] = inp[local_pos + 40];\n\tsamples[5][0] = inp[local_pos + 41];\n\tsamples[5][1] = inp[local_pos + 42];\n\tsamples[5][2] = inp[local_pos + 43];\n\tsamples[5][3] = inp[local_pos + 44];\n\tsamples[6][0] = inp[local_pos + 52];\n\tsamples[6][1] = inp[local_pos + 53];\n\tsamples[6][2] = inp[local_pos + 54];\n\tsamples[6][3] = inp[local_pos + 55];\n\tsamples[7][0] = inp[local_pos + 56];\n\tsamples[7][1] = inp[local_pos + 57];\n\tsamples[7][2] = inp[local_pos + 65];\n\tsamples[7][3] = inp[local_pos + 66];\n\tsamples[8][0] = inp[local_pos + 67];\n\tsamples[8][1] = inp[local_pos + 68];\n\tsamples[8][2] = inp[local_pos + 69];\n\tsamples[8][3] = inp[local_pos + 70];\n\tsamples[9][0] = inp[local_pos + 78];\n\tsamples[9][1] = inp[local_pos + 79];\n\tsamples[9][2] = inp[local_pos + 80];\n\tsamples[9][3] = inp[local_pos + 81];\n\tsamples[10][0] = inp[local_pos + 82];\n\tsamples[10][1] = inp[local_pos + 83];\n\tsamples[10][2] = inp[local_pos + 91];\n\tsamples[10][3] = inp[local_pos + 92];\n\tsamples[11][0] = inp[local_pos + 93];\n\tsamples[11][1] = inp[local_pos + 94];\n\tsamples[11][2] = inp[local_pos + 95];\n\tsamples[11][3] = inp[local_pos + 96];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 41];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(1, 2);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2) + ivec2(0, 1), ret);\n}\n//!PASS 2\n//!DESC NNEDI3 (double_x, nns16, win8x6)\n//!IN INPUT, temp\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 8\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[12]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 12; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 48.0;\n\tfloat mstd1 = sumsq / 48.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, -1126897990, -1130469888, -1113607518, -1116173177)\n\t\t + W(1, 1015526727, -1133977224, 990390561, -1122292152) + W(2, 1027745880, -1121396864, 1041026790, 1042195560)\n\t\t + W(3, 1018714920, 1026239260, -1131068140, 1015308851) + W(4, 1024250604, 1039079928, 1022159130, -1098313415)\n\t\t + W(5, 1042189511, -1106606352, 1013770942, -1122039043) + W(6, 1024642508, -1107295041, 1044630722, 999141354)\n\t\t + W(7, -1106681307, 1038936227, -1122507740, 1031978820)\n\t\t + W(8, -1121959908, -1147395201, -1107136294, 1019497054)\n\t\t + W(9, 1035880216, -1124106064, -1136584888, -1116330759)\n\t\t + W(10, -1149906049, -1126556538, 1005058137, 1007702352)\n\t\t + W(11, -1121374916, 1025050132, -1135809122, 1018900008);\n\tsum2 = W(0, 1017133506, 1023321012, -1119553894, -1112177411)\n\t\t + W(1, -1165256880, -1133574805, 1020043526, -1135761830)\n\t\t + W(2, 1011515348, 1029416248, 1057587887, 1071604647) + W(3, 1051025857, 1035052104, 1010374724, 1018728192)\n\t\t + W(4, -1139818306, -1115999672, -1090489276, -1079392139)\n\t\t + W(5, -1098617840, -1139515542, -1121583660, 1024878156)\n\t\t + W(6, -1123730089, 1020129658, -1109933138, -1097028615)\n\t\t + W(7, -1105405946, -1135392452, -1142174380, 1002597928) + W(8, 996184056, 1015618084, 1016266760, 1028448562)\n\t\t + W(9, -1155286464, -1138601606, 997185888, -1131188096)\n\t\t + W(10, -1138856554, 1007066512, -1145378916, 1008681896)\n\t\t + W(11, 1000343320, 991053648, -1155288808, -1132781834);\n\tWS(1018288640, 1027735986);\n\tsum1 =\n\t\tW(0, 1012158232, 1006778572, 1025063871, -1156175041) + W(1, 1010747802, -1140348884, 1020162890, -1172026051)\n\t\t+ W(2, -1178449286, -1114624234, -1104570115, 1028919475)\n\t\t+ W(3, 1034856692, -1127457566, -1122825993, -1115773453)\n\t\t+ W(4, 1044498160, 1032943202, 1059928494, -1097612337) + W(5, -1085331503, 1031833306, -1119592595, 1038136595)\n\t\t+ W(6, -1128542910, 1027108853, -1088743921, -1106124541) + W(7, 1059914122, 1032056909, 1033999672, 1027508251)\n\t\t+ W(8, -1115962871, 1017365062, 1032615126, 1026836706)\n\t\t+ W(9, -1114177498, -1122073627, 1022377282, -1129465364)\n\t\t+ W(10, 1002517720, 964628492, -1134936888, -1146238776) + W(11, 1020458158, 1016604174, 998219705, 1023799671);\n\tsum2 = W(0, -1126840972, -1145399745, -1139273136, 991527106)\n\t\t + W(1, -1135317632, -1139461992, -1129486378, 995542402)\n\t\t + W(2, -1130460798, 985194115, -1112997847, -1120456092) + W(3, 1001121889, 1017866680, 1006765920, 1000306721)\n\t\t + W(4, 1019075916, -1120812206, -1139625904, 1043975251)\n\t\t + W(5, -1150833602, -1128878392, -1133504840, -1142139489)\n\t\t + W(6, 1017322604, -1129997452, 1042717692, 1051048254)\n\t\t + W(7, -1121880440, -1112673669, -1126929736, -1114488494)\n\t\t + W(8, -1131054760, 1006903064, -1114175000, -1113881740) + W(9, 978663174, 1026044394, 1014584312, 1007041936)\n\t\t + W(10, -1131047996, -1143360737, -1130986946, 1007107280)\n\t\t + W(11, -1143215153, -1125685806, -1144361281, -1134951296);\n\tWS(1042433344, -1111851638);\n\tsum1 = W(0, -1128612156, -1139940268, -1122042583, 984858240) + W(1, 999630836, -1146630760, -1126512698, 996431920)\n\t\t + W(2, -1112658226, -1123380939, -1128727592, -1107767030)\n\t\t + W(3, -1114896432, -1115281716, -1129996802, -1123547845)\n\t\t + W(4, -1119638967, -1126908022, -1097703246, 1052387104)\n\t\t + W(5, 1054789077, 1030603948, 1028419819, 1026334318) + W(6, 1043958886, 1033805831, 1057665642, 1046318672)\n\t\t + W(7, -1095395475, -1117224401, -1123618471, -1113258842)\n\t\t + W(8, -1120465263, -1115346894, -1104545545, -1108167869)\n\t\t + W(9, 1029397739, -1163176544, -1117439993, -1134051464)\n\t\t + W(10, -1128976934, -1142120768, 1005565040, -1148354296)\n\t\t + W(11, -1133849404, -1117808895, 1013349902, -1120421311);\n\tsum2 =\n\t\tW(0, 1022431497, -1132240188, 1024165374, -1114822837)\n\t\t+ W(1, -1120729932, -1124855948, -1126342960, -1128289576)\n\t\t+ W(2, -1109389142, -1119299282, -1107432916, 1044244351)\n\t\t+ W(3, 1031006195, 983982854, -1158996358, -1121099750) + W(4, 1004613154, -1139248009, 1041447926, -1108646182)\n\t\t+ W(5, 1047688354, 1009435309, -1122846542, 1036127241) + W(6, 1028727631, -1129989652, 1047487962, -1100679909)\n\t\t+ W(7, -1126089152, 1033956847, -1123334894, 1039673953) + W(8, 1029503922, -1140046689, 1017218352, 1040665470)\n\t\t+ W(9, -1120804126, -1107003694, -1140927562, -1102421772)\n\t\t+ W(10, -1132574761, -1114039002, -1135952741, -1123756570)\n\t\t+ W(11, -1148002498, 1028342876, -1117057946, 1026336008);\n\tWS(1015433728, 1058400049);\n\tsum1 =\n\t\tW(0, -1139873791, -1133909491, 1023506921, -1230944644) + W(1, -1118840528, 1028378783, -1121050287, 1033465034)\n\t\t+ W(2, 1031161269, 1032977294, -1116372870, 1035249566)\n\t\t+ W(3, -1120831281, -1114963068, 1032892305, -1105610222)\n\t\t+ W(4, -1113693508, -1112917766, -1116140698, -1103376612)\n\t\t+ W(5, 1044830734, -1141442286, 1023234585, 1034039600) + W(6, 1033801204, -1131731326, 1045725159, -1102794347)\n\t\t+ W(7, -1116748777, 1032646513, -1112562780, 1030129285) + W(8, -1119172737, 989007258, -1122523445, 1044071755)\n\t\t+ W(9, 1030473357, 1018738506, 1021910870, -1122899972)\n\t\t+ W(10, -1143910182, 1019358132, 1008313039, -1115540344)\n\t\t+ W(11, -1126204226, -1118552369, 1016154651, -1124368226);\n\tsum2 = W(0, -1138428449, 992976916, -1142924106, 976851025) + W(1, 989093448, 997652548, -1153131756, -1134977059)\n\t\t + W(2, -1158711528, 1013039401, -1128734961, 1036130613)\n\t\t + W(3, 1010050489, -1137359275, 990210276, -1138876101)\n\t\t + W(4, -1124467432, -1130455464, -1113146735, -1097860430)\n\t\t + W(5, -1108810723, -1122996798, -1140348735, -1127238416)\n\t\t + W(6, -1140697417, -1123518198, -1099387353, -1077268149)\n\t\t + W(7, -1091225653, 1032494444, -1115493835, 1018469149) + W(8, 1030243467, 1033499227, 1051222006, 1072898808)\n\t\t + W(9, 1056060393, 1025590581, 1025171621, 1026307569) + W(10, 1012442941, 975746961, -1122081826, -1117904739)\n\t\t + W(11, -1131990027, 951236744, 1006284898, -1146863422);\n\tWS(-1143089152, 1030017260);\n\tsum1 = W(0, 1012276081, 1001605962, 1024406997, -1155861797)\n\t\t + W(1, -1155627981, -1122534699, 1018348791, -1120990241)\n\t\t + W(2, -1116644609, -1127223379, -1109637089, -1115433381)\n\t\t + W(3, 1036571679, 1028189701, -1126280255, 1036379833) + W(4, 1019444907, -1119160665, 1048989101, 1044433671)\n\t\t + W(5, -1098184025, 1039597237, -1117935161, -1136463217)\n\t\t + W(6, -1124688427, 1035777366, -1098625404, 1006101820)\n\t\t + W(7, 1048780603, -1104960796, 1029641477, -1111599465)\n\t\t + W(8, 1029853709, -1136557285, 1038057505, -1111190908)\n\t\t + W(9, -1112291813, -1130076067, 1012573277, -1154886405)\n\t\t + W(10, -1130860131, -1130309965, -1130883561, 1009046005)\n\t\t + W(11, 1025361773, 1018788475, -1125993892, 1020397819);\n\tsum2 = W(0, -1153319600, -1147284080, 1008968960, 995456320)\n\t\t + W(1, -1140178660, -1146954776, -1142030464, -1170856127)\n\t\t + W(2, 1008405084, 985822624, -1142311064, 1022276922) + W(3, -1140411728, 1005012008, 1003782736, 1006946188)\n\t\t + W(4, -1118973116, 1010505984, -1101248908, -1089187936) + W(5, -1109859050, 1017518401, 982409184, 995727232)\n\t\t + W(6, -1140784820, -1129308604, 1037448945, 1057794596) + W(7, 1029773785, 1015531414, 974134143, 960534268)\n\t\t + W(8, 1012585128, 1021293048, 1024969278, 1033366347) + W(9, 1024400778, 1007802556, 1003482728, 1009923956)\n\t\t + W(10, 1010769460, 1001814848, -1160749952, -1123619202)\n\t\t + W(11, -1136545168, 1000322872, -1152799248, 985284128);\n\tWS(1064472528, -1121594920);\n\tsum1 = W(0, -1142654991, -1143599223, 1014568428, 1010500896)\n\t\t + W(1, -1124387333, 1020884834, -1131205634, 1026841191)\n\t\t + W(2, 1027230343, 1032290711, -1136037408, 1002050167)\n\t\t + W(3, -1122938499, -1120250507, 1025589157, -1110863224)\n\t\t + W(4, -1112807213, -1113392623, -1115590690, -1113734161)\n\t\t + W(5, 1038834309, 1029912912, 1019867389, 1031947569) + W(6, 1027061019, 1016010466, 1034098395, -1112872467)\n\t\t + W(7, -1130883382, 1015162858, -1123484555, 1019435182) + W(8, -1128825126, 991342574, 1008695068, 1027642302)\n\t\t + W(9, 1013984188, 1015817710, 1015459258, -1129521612)\n\t\t + W(10, -1164359388, 1014490160, -1148094031, -1127829894)\n\t\t + W(11, -1138058188, -1124941766, 1008886302, -1130075526);\n\tsum2 =\n\t\tW(0, 1003807591, -1147429191, 1002635095, -1132089351) + W(1, -1147602519, -1151072125, 964968041, 1011860423)\n\t\t+ W(2, -1154115373, -1139843175, 1018649088, 1016729308)\n\t\t+ W(3, 1024344696, -1155997437, 1001714367, -1141691791) + W(4, 1000124719, 1001833687, 1008095031, -1105992985)\n\t\t+ W(5, 1014141127, -1132427785, -1141957575, -1139390003) + W(6, 1017182228, 1024488826, 1040714709, 1063780536)\n\t\t+ W(7, 1047200342, 1020609216, 1023684454, 1017456200)\n\t\t+ W(8, -1126980607, -1116401990, -1105844805, -1085442794)\n\t\t+ W(9, -1101306502, -1122913939, -1125194898, -1128761080)\n\t\t+ W(10, -1130234859, 987658746, 1013729967, 1024604622)\n\t\t+ W(11, 995366957, -1147894927, -1146690231, -1146063807);\n\tWS(1061878800, -1131153991);\n\tsum1 =\n\t\tW(0, -1123872727, 1018625288, -1127640224, 1026350045) + W(1, 1013916191, 1018183052, -1145362866, 1016048056)\n\t\t+ W(2, 1015115512, 1031144036, 1036357847, -1108974562) + W(3, -1107191102, 1006433282, 1014427177, 1026198990)\n\t\t+ W(4, -1099302516, -1102371221, -1085394744, 1059569738) + W(5, 1050617832, 1032504563, 1031877738, 1033421596)\n\t\t+ W(6, 1041224340, 1009910425, 1052022073, 1058525661)\n\t\t+ W(7, -1088226291, -1097316565, -1109508096, -1098228398)\n\t\t+ W(8, -1144166978, 1014687697, -1115552350, -1125187302) + W(9, 1037730450, 1040234099, 1015825508, 1035235966)\n\t\t+ W(10, -1171049230, 1022902338, -1132534141, 1016189168)\n\t\t+ W(11, -1123531112, -1127405808, 1018548825, -1137247201);\n\tsum2 =\n\t\tW(0, -1131301730, 973798558, -1127780866, 1013478572) + W(1, -1160424319, -1135840779, -1164912671, -1138738786)\n\t\t+ W(2, 1031269327, -1131640108, 1013454096, -1109509101)\n\t\t+ W(3, -1117315078, -1131160392, -1145619912, -1127332243)\n\t\t+ W(4, -1127010401, 1028981651, -1149526184, 1051779317) + W(5, 1028380081, -1137527992, 998238336, -1148504424)\n\t\t+ W(6, -1109842974, -1125259759, -1113692773, 1047088883)\n\t\t+ W(7, -1134194124, 1028175261, 1018886164, 1027237057)\n\t\t+ W(8, -1181736700, -1167651134, -1123287814, -1109788940)\n\t\t+ W(9, -1115287133, -1121515979, -1125209194, -1142455024)\n\t\t+ W(10, -1180777340, -1160957999, 993986728, 1020962386)\n\t\t+ W(11, -1136947718, -1138138790, -1152989064, -1123011340);\n\tWS(-1146021888, 1053974589);\n\tsum1 =\n\t\tW(0, 1029642476, 1013890275, -1176939092, 1022266947) + W(1, -1146466657, 1004183253, -1160650069, -1127783457)\n\t\t+ W(2, -1119368753, -1134074211, 1007708103, 1017736689) + W(3, 1027345005, 1032510570, 1019378973, 1031489314)\n\t\t+ W(4, 1042969521, 1042359026, 1045769551, -1101301107)\n\t\t+ W(5, -1094644679, -1091538585, -1107179580, -1095508207)\n\t\t+ W(6, -1095098901, -1107285127, -1096985546, 1034918881) + W(7, 1050538529, 1051699648, 1036824506, 1048776768)\n\t\t+ W(8, 1046685039, 1031018217, 1036262392, 1003810877) + W(9, -1120828825, 1011534979, -1133351451, 1035618600)\n\t\t+ W(10, 984849429, -1135393367, -1139413615, 1024875117)\n\t\t+ W(11, -1172526890, 1017671961, -1160823333, 1006585957);\n\tsum2 = W(0, 1031363252, 1030774484, 1015165558, 1007437656) + W(1, 1020087968, -1158035650, -1137051446, 1018262350)\n\t\t + W(2, -1091101506, 1001500224, -1110787951, 965388167) + W(3, 1003188992, 1041338676, -1134903850, 1033269727)\n\t\t + W(4, 1048232756, -1110436898, 1016237906, 1014973676)\n\t\t + W(5, -1123006886, -1105090874, -1123217223, -1104724635)\n\t\t + W(6, 1057852755, -1132290932, 1043794074, 1047525730)\n\t\t + W(7, 1011818344, -1129296549, 1034851396, -1106365430)\n\t\t + W(8, -1095952784, -1131305343, -1113356328, -1152923833)\n\t\t + W(9, -1111245491, -1131940021, -1117639196, 1024945328)\n\t\t + W(10, 1016290300, -1126601761, 1003743696, 1022650220)\n\t\t + W(11, 1021501454, 1017537464, -1133259176, 1019937714);\n\tWS(-1077057896, -1083600334);\n\tsum1 = W(0, 1017420011, 1014201033, 1017846781, 999765850) + W(1, -1162024122, 985808522, 1019153993, 1011766057)\n\t\t + W(2, 1011471785, 1019976613, -1138042285, 1040273597) + W(3, 1016487629, 1027730222, 1010855969, 1025127228)\n\t\t + W(4, 1029223422, -1126437509, 1049638570, -1090770241) + W(5, 1029091694, 1037672698, 1027546578, 1025680213)\n\t\t + W(6, -1116040414, 1015478313, -1103217262, -1087230893)\n\t\t + W(7, 1046437488, 1024768280, 1028909230, 1017109109) + W(8, 1017123181, 1024110818, 1023111893, 1030676769)\n\t\t + W(9, -1112046985, -1120839802, 1023955584, -1128064723)\n\t\t + W(10, 1016511669, -1167731667, 1009386661, 1023090125)\n\t\t + W(11, 1020460717, 1025489318, -1134545259, 1027741830);\n\tsum2 =\n\t\tW(0, 1023774756, -1152708847, 1005727232, -1128030280) + W(1, 1004577664, -1116453887, 1020705336, -1127775332)\n\t\t+ W(2, -1107003878, 1013240776, -1108761818, 1032847770)\n\t\t+ W(3, 1024878510, -1129071264, -1124253692, -1114566712)\n\t\t+ W(4, 1020767940, -1108605887, 1050907301, 1058054639) + W(5, -1106188814, 1040942692, -1115446820, 1042743894)\n\t\t+ W(6, -1118294055, -1128830540, -1097736561, 1008347200)\n\t\t+ W(7, 1049418167, -1105809360, 1014050712, -1132221182)\n\t\t+ W(8, -1113997093, -1139588328, 1032528025, 1039669350)\n\t\t+ W(9, -1108856812, -1104688291, 1018266740, -1103534695)\n\t\t+ W(10, 1021408408, -1119578529, -1135972104, -1131826954)\n\t\t+ W(11, 999382680, 1019392776, -1117167612, 1022204104);\n\tWS(1034686080, -1080904524);\n\tsum1 = W(0, -1139332721, -1156631187, 1023562901, 1011454089) + W(1, 1009225011, 1012327853, 1010687981, 1010798725)\n\t\t + W(2, 1025190657, 1024127465, 1006799241, -1145135178) + W(3, -1129417722, 1017495114, 1027561839, 1010795083)\n\t\t + W(4, -1143163562, 1040892278, -1104914606, -1089193318)\n\t\t + W(5, 1043909393, -1119873834, -1136185891, -1118482716)\n\t\t + W(6, 1041601261, 1028605547, 1052908885, -1091833281)\n\t\t + W(7, -1103073573, 1025246703, -1124345098, 1032670633)\n\t\t + W(8, 1024768205, -1129308018, -1117860929, 1036300940) + W(9, 1040987970, 1033652713, 1024209623, 1027144528)\n\t\t + W(10, -1137907141, 1012089369, 1019594656, -1143330794)\n\t\t + W(11, 992909011, -1123933213, 1018355139, -1123266333);\n\tsum2 = W(0, 998154484, -1136847690, -1120010648, -1145824866) + W(1, 1015307650, 994166396, 1000606426, 1010815409)\n\t\t + W(2, -1124228589, 1028193069, 1043298286, -1115567961)\n\t\t + W(3, -1106126812, -1111174068, -1128437454, -1110538383)\n\t\t + W(4, -1132108902, -1123281782, -1097765474, 1059221182)\n\t\t + W(5, 1048600788, -1130476352, 1026255089, -1118584150)\n\t\t + W(6, -1115676434, -1123302060, 1027211577, 1034703777)\n\t\t + W(7, -1099334080, 1015056080, -1137618020, 1028199647)\n\t\t + W(8, -1123985162, -1132306691, -1114822183, -1131429597)\n\t\t + W(9, 1029215805, 1023836215, -1127893362, 1025007180)\n\t\t + W(10, 1004957466, 1011392625, -1127542967, 1022587458)\n\t\t + W(11, -1127163397, -1122559367, -1171736302, -1124423270);\n\tWS(-1097173920, -1100403112);\n\tsum1 = W(0, -1133792968, -1124511038, -1133667884, -1126404688)\n\t\t + W(1, -1129657589, -1123548289, -1134226372, -1120375479)\n\t\t + W(2, -1126599342, -1134319356, -1113753548, -1113718896)\n\t\t + W(3, 1034489098, 1017816566, -1122628437, 1029275393) + W(4, 1026626987, -1112479512, 1051379210, 1058852431)\n\t\t + W(5, -1097104011, 1007326848, -1112737379, -1116837058)\n\t\t + W(6, -1109988694, -1122054529, -1097159959, 1058630415)\n\t\t + W(7, 1049904553, -1104990865, 983139170, -1110311540)\n\t\t + W(8, -1128510918, -1138055228, 1031366423, -1108453759)\n\t\t + W(9, -1111244112, -1129654222, -1143321192, -1132471000)\n\t\t + W(10, -1124691470, -1131431128, -1128464692, -1122909907)\n\t\t + W(11, 1006087192, -1138955724, -1123473736, -1149064600);\n\tsum2 = W(0, -1133003813, -1170659932, 1006656308, 1031055883)\n\t\t + W(1, -1122785076, -1138148825, -1134424500, -1131089901)\n\t\t + W(2, -1145103116, 1024883426, -1122208183, -1101651786)\n\t\t + W(3, -1107240567, -1137951645, -1131665157, -1116779622)\n\t\t + W(4, -1105221269, -1117429423, -1098340061, 1055658740)\n\t\t + W(5, 1035604404, -1131811521, -1130287800, -1123356625)\n\t\t + W(6, 1033080040, 1028547885, 1042272545, 1058321046) + W(7, -1112738821, 1003752088, 1015669581, 1033205575)\n\t\t + W(8, 1016862101, -1128891234, -1121562483, -1100689547)\n\t\t + W(9, -1115182870, 1026865631, -1129373191, -1134576021)\n\t\t + W(10, -1129731365, -1147341896, -1121650606, 1031708925)\n\t\t + W(11, -1123396988, -1133076983, -1131162259, -1127933595);\n\tWS(1049422752, 1064394145);\n\tsum1 = W(0, 1016583527, 997641734, -1129211865, -1131677043) + W(1, 1021172552, 1021691141, -1133007562, 1026669144)\n\t\t + W(2, -1106085006, -1123841888, 1041111742, 1032245856)\n\t\t + W(3, -1110939130, -1105269375, -1137128282, -1106745812)\n\t\t + W(4, 995307718, 1031369872, -1088517333, -1098988005) + W(5, 1058612208, 1030057089, 1036830720, 1034516890)\n\t\t + W(6, 1042273115, 1021597381, 1058826428, -1105331685)\n\t\t + W(7, -1090507155, 1043687978, -1120823228, 1038691348)\n\t\t + W(8, -1113049442, -1122854832, -1113933244, 1032610296)\n\t\t + W(9, 1037338632, -1122591528, -1116248270, -1117945591)\n\t\t + W(10, 1025810280, 1006187755, 1019889767, -1131685097)\n\t\t + W(11, -1155049030, -1134096210, 1025994697, -1126546729);\n\tsum2 =\n\t\tW(0, 1015668141, -1124041461, 1005775275, 1015274173) + W(1, -1138139200, 992639399, -1132053353, -1129319398)\n\t\t+ W(2, -1138201662, -1140877219, 1027346708, 1016303395)\n\t\t+ W(3, -1106503093, -1117618841, -1115775134, -1122071744)\n\t\t+ W(4, -1111996311, -1116450062, -1125910350, -1108948194)\n\t\t+ W(5, -1104963655, 1031763952, 1015724405, 1034411590)\n\t\t+ W(6, -1127284815, -1123578506, -1106280325, 1052974100) + W(7, 1053021197, 957951850, 1016609913, -1140595900)\n\t\t+ W(8, -1125087482, 1024732308, 1034158307, 1032925063) + W(9, -1107449032, 994113735, -1132927280, -1140186580)\n\t\t+ W(10, 1020174885, -1139064970, -1133423524, -1161498797)\n\t\t+ W(11, -1134898868, 1013272790, -1132485274, -1164791981);\n\tWS(-1101497152, -1084603877);\n\tsum1 =\n\t\tW(0, -1136425045, -1140218249, -1121565262, -1122160667)\n\t\t+ W(1, 1006883159, -1132497425, 1004502690, -1128604789) + W(2, 1016522037, -1157845066, 1035402982, 1027884002)\n\t\t+ W(3, 1025282390, 1022271101, -1138792353, 995143101) + W(4, 967194407, 1029505522, 1022903246, -1107598171)\n\t\t+ W(5, 1025270942, -1120772739, -1154700189, -1128284203)\n\t\t+ W(6, 1019848413, -1119357636, 1027088345, 1024422013) + W(7, -1117602990, 1030415880, -1171556244, 1025955498)\n\t\t+ W(8, -1129523533, -1140249161, -1121932442, -1127296803)\n\t\t+ W(9, 1030372258, -1129818261, -1138666305, -1121511513)\n\t\t+ W(10, -1142614610, -1135395837, -1148904362, 1002411186)\n\t\t+ W(11, -1130529549, 1018540973, -1138856043, 1011955033);\n\tsum2 =\n\t\tW(0, -1126668299, -1137964827, 1015963121, 1030757650) + W(1, -1137547503, 997720155, -1132279825, -1152589275)\n\t\t+ W(2, -1131366283, -1117612139, -1097765254, -1083955387)\n\t\t+ W(3, -1103492737, -1118797430, -1131387718, -1140632131)\n\t\t+ W(4, 1024971228, 1034620123, 1049249869, 1064229708) + W(5, 1047078464, 1017921725, 1024786888, -1144191965)\n\t\t+ W(6, 1000957181, -1119890411, 1026062254, -1107214224) + W(7, -1122275403, 1016072153, -1133941049, 996433547)\n\t\t+ W(8, -1151515419, -1145021381, 1001872029, 1026637176)\n\t\t+ W(9, 1027173860, -1135832789, -1148432117, -1140699475)\n\t\t+ W(10, 1005199725, -1136862175, 1007955643, -1125717658)\n\t\t+ W(11, -1169614250, 923654805, 1002011725, 1005736109);\n\tWS(1059552336, -1136539026);\n\tsum1 = W(0, 990367896, 1010957914, -1154541352, 1017372383) + W(1, 1026284586, 1015461809, 1014364322, 1021777309)\n\t\t + W(2, 1041343484, 1036710283, 1045269292, -1112141659) + W(3, -1116984235, 1018013925, 1006339428, 1032228520)\n\t\t + W(4, -1096612504, -1107358947, -1087221074, 1058232297)\n\t\t + W(5, 1051438086, 1047713030, 1032067931, 1045851190) + W(6, 1033353841, 1029016441, 1042554433, 1029783110)\n\t\t + W(7, -1087458720, -1095293300, -1114380761, -1099415088)\n\t\t + W(8, -1125599349, -1132821402, -1154580200, -1114120867)\n\t\t + W(9, 1033522371, 1032365167, 1004597796, 1030006574) + W(10, 1028944863, 1024290996, 1023892422, 1023410731)\n\t\t + W(11, -1144215764, -1144750420, 1001346936, -1130073781);\n\tsum2 = W(0, -1153914788, -1126180245, 995844276, -1141303142) + W(1, 1026951758, 990856044, 1004850742, 1015235936)\n\t\t + W(2, -1101809160, -1115520194, -1114410922, 1033573989)\n\t\t + W(3, 998799030, -1110191966, -1129252703, 1016759632) + W(4, 1052877341, 1022007580, 1055965696, -1098900400)\n\t\t + W(5, 1023481081, 1023185808, 1031073312, -1104219784) + W(6, 1046574229, 1000424166, 1034680258, -1098051352)\n\t\t + W(7, 1045079279, -1106708743, 984863273, -1103050031)\n\t\t + W(8, -1095334336, -1113807813, -1109583292, 1033797491)\n\t\t + W(9, 1032986287, 1025876178, -1137844345, 1038371038)\n\t\t + W(10, 1023520281, 1021218858, 1008634443, -1115608949)\n\t\t + W(11, 1032307290, -1128938562, 1017335440, 1020607644);\n\tWS(-1080660584, -1085825159);\n\tsum1 = W(0, 1013708199, 998525366, 1026247587, 1009982783) + W(1, -1136883881, -1128223794, 999596614, -1126850910)\n\t\t + W(2, -1123370319, -1131079022, -1110742584, -1113918027)\n\t\t + W(3, 1032009669, 1025751155, -1126831290, 1033490448)\n\t\t + W(4, -1145658646, -1111041043, 1047524760, 1038280501)\n\t\t + W(5, -1096311074, 1042402294, -1118872454, 1023947050)\n\t\t + W(6, -1118786339, 1035331132, -1095527502, 1041941518)\n\t\t + W(7, 1051037928, -1106649743, 1032615945, -1111971999)\n\t\t + W(8, 1028171867, 1017605134, 1042485668, -1110999603) + W(9, -1106204846, -1132447358, 1002160934, 971034337)\n\t\t + W(10, -1144908790, -1131113128, -1130744068, 992723116)\n\t\t + W(11, 1025830203, 1017749654, -1127230527, 1018668086);\n\tsum2 = W(0, 988660617, -1145776834, -1133422913, -1126488793) + W(1, 999416722, 999055930, 987033481, -1179419172)\n\t\t + W(2, 1017543700, 1002138986, 1031822055, 1032911160) + W(3, 1018658069, 1007351961, -1162261577, 999395634)\n\t\t + W(4, 1015794522, 1001599498, 1041494739, 1056510750) + W(5, 1023998101, -1138508317, 991201876, -1141702058)\n\t\t + W(6, -1133704409, 1024621822, -1102581932, -1089051586)\n\t\t + W(7, -1111744235, 1009295285, -1140892226, -1147317506)\n\t\t + W(8, 1003471274, -1135257421, 970658596, 1026713544) + W(9, 945757471, 998080468, -1156050276, 1007988669)\n\t\t + W(10, -1140119133, -1136500105, -1163479081, 1009057465)\n\t\t + W(11, 1000517690, -1137960905, -1186683976, -1146609818);\n\tWS(1064784784, -1120346387);\n\tsum1 =\n\t\tW(0, -1150678408, 1000581420, 1006062348, 1015088861) + W(1, -1136518116, -1126533711, 1012432222, -1122704190)\n\t\t+ W(2, 1015721531, -1110077251, -1107299655, -1132691862)\n\t\t+ W(3, -1148196556, 1013224070, -1124886999, 1014270588) + W(4, 1049255678, 1043607805, 1059242626, -1123916922)\n\t\t+ W(5, -1096371932, -1100407642, -1132580564, -1102354822)\n\t\t+ W(6, -1099108228, -1107416484, -1089544734, -1130977491)\n\t\t+ W(7, 1057929313, 1048500643, 1035479729, 1044504531) + W(8, -1149551256, 1017163947, 1023526494, 1022505321)\n\t\t+ W(9, -1104456865, -1111675367, -1127245287, 1007459698)\n\t\t+ W(10, -1136953142, -1140022794, -1139533474, 1012221798)\n\t\t+ W(11, 1014035238, 1026165050, -1136458552, 1017479699);\n\tsum2 = W(0, -1140771860, -1125513054, -1131667695, -1131288705)\n\t\t + W(1, 978159878, 1012596136, 1011933560, -1121534607) + W(2, 1031694512, -1122230843, 979286214, 1025077104)\n\t\t + W(3, -1108853537, -1102087836, -1117751010, -1113389694)\n\t\t + W(4, -1104948969, 993388690, 1026183534, -1111209187) + W(5, 1041617383, 1045410736, 1030126174, 1044425994)\n\t\t + W(6, -1115570202, 1042093481, 1042830623, -1112764939) + W(7, 1043422569, 1034771561, 1014235016, 1025820984)\n\t\t + W(8, 1040745971, -1111499166, -1119680402, 982469091)\n\t\t + W(9, -1120447085, -1109907689, -1127258987, -1115100280)\n\t\t + W(10, -1127298441, 995262946, 1002124441, -1123012516)\n\t\t + W(11, -1129740789, -1125016939, 1004566649, -1119639931);\n\tWS(-1088649680, 1067112300);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[555];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define temp_tex(pos) (float(texture(temp, pos).x))\nstatic const float2 temp_size = float2(GetInputSize().x * 1, GetInputSize().y * 2);\nstatic const float2 temp_pt = float2(1.0 / (temp_size.x), 1.0 / (temp_size.y));\n\n#define HOOKED_tex(pos) temp_tex(pos)\n#define HOOKED_size temp_size\n#define HOOKED_pt temp_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 555; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (2)) + 0.5, float(group_base.y + y - (3)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[12];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 6];\n\tsamples[1][3] = inp[local_pos + 7];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 19];\n\tsamples[3][1] = inp[local_pos + 20];\n\tsamples[3][2] = inp[local_pos + 21];\n\tsamples[3][3] = inp[local_pos + 22];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 32];\n\tsamples[4][3] = inp[local_pos + 33];\n\tsamples[5][0] = inp[local_pos + 34];\n\tsamples[5][1] = inp[local_pos + 35];\n\tsamples[5][2] = inp[local_pos + 36];\n\tsamples[5][3] = inp[local_pos + 37];\n\tsamples[6][0] = inp[local_pos + 45];\n\tsamples[6][1] = inp[local_pos + 46];\n\tsamples[6][2] = inp[local_pos + 47];\n\tsamples[6][3] = inp[local_pos + 48];\n\tsamples[7][0] = inp[local_pos + 49];\n\tsamples[7][1] = inp[local_pos + 50];\n\tsamples[7][2] = inp[local_pos + 51];\n\tsamples[7][3] = inp[local_pos + 52];\n\tsamples[8][0] = inp[local_pos + 60];\n\tsamples[8][1] = inp[local_pos + 61];\n\tsamples[8][2] = inp[local_pos + 62];\n\tsamples[8][3] = inp[local_pos + 63];\n\tsamples[9][0] = inp[local_pos + 64];\n\tsamples[9][1] = inp[local_pos + 65];\n\tsamples[9][2] = inp[local_pos + 66];\n\tsamples[9][3] = inp[local_pos + 67];\n\tsamples[10][0] = inp[local_pos + 75];\n\tsamples[10][1] = inp[local_pos + 76];\n\tsamples[10][2] = inp[local_pos + 77];\n\tsamples[10][3] = inp[local_pos + 78];\n\tsamples[11][0] = inp[local_pos + 79];\n\tsamples[11][1] = inp[local_pos + 80];\n\tsamples[11][2] = inp[local_pos + 81];\n\tsamples[11][3] = inp[local_pos + 82];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 33];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(2, 1);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1) + ivec2(1, 0), ret);\n}\n"
  },
  {
    "path": "src/Effects/NNEDI3/NNEDI3_nns256_win8x4.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: nnedi3.py --nns 256 --win 8x4 --use-compute-shader --use-magpie\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME NNEDI3_256_4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 1 * 2\n//!HEIGHT INPUT_HEIGHT * 2 * 1\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH * 1\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D temp;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_temp;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC NNEDI3 (double_y, nns256, win8x4)\n//!IN INPUT\n//!OUT temp\n//!BLOCK_SIZE 32, 16\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[8]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 8; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 32.0;\n\tfloat mstd1 = sumsq / 32.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, 1024871952, -1091961907, 1049937838, 1023328805) + W(1, 1026430476, -1103990249, 1052012307, 994719130)\n\t\t + W(2, 1041094851, -1086639391, 1057524239, -1110763811)\n\t\t + W(3, 992987016, -1085365048, 1063527595, -1102193240) + W(4, 1034372511, -1087585419, 1061081007, 1046466539)\n\t\t + W(5, 1007997243, -1093414958, 1057188600, -1131716095)\n\t\t + W(6, 1038248733, -1100793414, -1104832955, 1042167685)\n\t\t + W(7, 1009484684, -1099588502, -1114088341, 1037858632);\n\tsum2 = W(0, -1122170202, -1115075619, -1113824159, 1016746290)\n\t\t + W(1, -1117362461, 1050294809, 1022334174, 1016781702)\n\t\t + W(2, -1125932452, 1041506545, -1098709995, 1031697879)\n\t\t + W(3, -1100385246, -1100233118, -1104291570, 1033455014)\n\t\t + W(4, 1020071642, -1100362988, 1072797337, 1050444141) + W(5, 1025043913, 1047005177, 1053652830, -1106922881)\n\t\t + W(6, 1017078274, 1012082941, -1100425628, -1081909907)\n\t\t + W(7, 1018043750, -1112302377, -1155649364, -1086585813);\n\tWS(-1096195455, 1061976972);\n\tsum1 =\n\t\tW(0, -1107583849, -1094469481, 1057261454, 1032308806) + W(1, 1045016510, -1104061589, 1051975353, 1046697387)\n\t\t+ W(2, -1102048399, -1082981042, 1058403546, -1093320254)\n\t\t+ W(3, 1050507709, -1086991635, 1061386858, 1051876218)\n\t\t+ W(4, -1138600128, -1087760032, 1052980216, -1106246183)\n\t\t+ W(5, 1004076226, -1088999402, 1052828202, -1112945129) + W(6, 1049677870, -1111975782, 1055128500, 1045880594)\n\t\t+ W(7, -1106918697, -1089081125, 1048525839, -1116677906);\n\tsum2 =\n\t\tW(0, 976892690, -1095110912, -1080663089, 1075827337) + W(1, 1043646796, -1114450783, -1074060607, 1075290035)\n\t\t+ W(2, -1131052969, 1052886335, -1068434194, 1070007941) + W(3, 1047930742, -1113296119, 1048011859, 1046007784)\n\t\t+ W(4, -1099144563, -1088067101, 1042920440, -1090506241)\n\t\t+ W(5, 1035354913, 1040578653, 1058047003, -1099371585)\n\t\t+ W(6, -1115191227, -1102673565, 1057110709, -1096675048)\n\t\t+ W(7, -1111106463, 1051335047, 1038060178, -1096378099);\n\tWS(-1095930303, -1128843438);\n\tsum1 = W(0, -1113225514, 1000563038, 1038763268, -1104281110)\n\t\t + W(1, 1030842449, -1103461662, 1052682210, -1105449143)\n\t\t + W(2, -1120882464, -1098779087, 1055587560, -1106219642)\n\t\t + W(3, -1111398934, -1156245815, 1046999855, -1105879965)\n\t\t + W(4, -1098488134, 1057689814, -1090605975, 1039743648)\n\t\t + W(5, -1098728413, 1058114717, -1106232348, 1030902068)\n\t\t + W(6, -1111237296, 1041725787, -1106563184, -1111582036)\n\t\t + W(7, -1104159890, 1046074787, -1119168797, 1033984854);\n\tsum2 = W(0, -1109947141, -1078961084, 1053833634, 1049299145)\n\t\t + W(1, -1087141194, -1081851502, -1102894339, 1040634467)\n\t\t + W(2, 1007133897, 1057831088, 1046573470, 1035108031) + W(3, -1099413759, 1067440534, 1058568743, -1114324751)\n\t\t + W(4, 1026690396, -1095618356, 1058025266, -1094447449)\n\t\t + W(5, 1045509921, 1022398658, -1115002147, 1023241606) + W(6, -1117657274, 1029712906, -1109832065, 987652806)\n\t\t + W(7, 1051942463, 1049871690, -1099467737, -1104714655);\n\tWS(1018627052, -1077328537);\n\tsum1 = W(0, -1107592280, -1098360952, 1054425801, -1121256842)\n\t\t + W(1, 1011043872, -1103889731, 1045838144, 1016847523)\n\t\t + W(2, -1138466445, -1088654431, 1063939041, -1114759963)\n\t\t + W(3, 1041422472, -1079526160, 1057394281, -1109966789)\n\t\t + W(4, -1112294435, -1109020730, 1061143403, -1115564074)\n\t\t + W(5, 1012707679, -1095389295, 1057286118, -1117689671)\n\t\t + W(6, -1150731309, -1102056896, 1040465365, -1133534770)\n\t\t + W(7, -1118891707, -1101414784, 1042544156, 1028492087);\n\tsum2 =\n\t\tW(0, -1161717665, 1033867626, 1028201267, -1124228530) + W(1, -1138679732, -1115218580, -1096378423, 1029766795)\n\t\t+ W(2, -1121504639, 1030621655, 1071708903, -1128256742) + W(3, 1050854432, -1096361601, 1079482342, 1035298280)\n\t\t+ W(4, -1106511096, 1044499063, -1064184100, 1035336882)\n\t\t+ W(5, 1030373815, -1104067382, -1089118805, -1105361644) + W(6, 980628162, 1040061476, 1048273255, -1119150405)\n\t\t+ W(7, 1031200951, -1122098343, -1109436715, 1035049634);\n\tWS(1045693694, 1057374369);\n\tsum1 = W(0, 1048369598, 1034312519, -1131023893, -1099588978)\n\t\t + W(1, -1104752283, 1045853799, -1098373234, 1019902402)\n\t\t + W(2, 1031950009, 1057046586, -1095062180, -1105510198)\n\t\t + W(3, -1123958928, 1065585622, -1089164628, 1033283356)\n\t\t + W(4, -1103831441, 1061666460, -1092432965, -1115031649)\n\t\t + W(5, -1106189273, 1060939321, -1087345809, -1122647270)\n\t\t + W(6, -1103850789, 1050689810, -1092965100, -1126666680)\n\t\t + W(7, -1110300085, 1060417841, -1091010256, -1103574093);\n\tsum2 = W(0, -1087427905, -1098709872, 1072153031, -1089481634)\n\t\t + W(1, 1058683530, -1099141199, -1088885778, 1056590706)\n\t\t + W(2, -1081734921, 1032637312, 1061509476, -1092495010) + W(3, 1050776004, 1072181481, 1071890032, 1048814690)\n\t\t + W(4, 1042479954, 1036599206, 1052304550, -1095810808)\n\t\t + W(5, 1025544982, -1080357543, -1080881103, -1097308566)\n\t\t + W(6, -1105492903, -1113642582, 1050862866, -1094462248)\n\t\t + W(7, 1058740427, -1086527647, -1078556244, 1039671439);\n\tWS(-1081549664, 1060153996);\n\tsum1 = W(0, 992286043, 1063391104, -1087586274, -1105647870)\n\t\t + W(1, -1115318586, 1055271797, -1095899708, 1025423024)\n\t\t + W(2, -1105782456, 1062019397, -1085498120, 1033921889)\n\t\t + W(3, 1026471870, 1061503832, -1089250259, -1113405924)\n\t\t + W(4, -1114468402, 1058772501, -1090055577, -1113674825)\n\t\t + W(5, 1037910210, 1045594046, -1102496824, -1106446561)\n\t\t + W(6, -1130210466, 1049908468, -1103786988, -1118412923)\n\t\t + W(7, 1043803882, 1040755007, -1104619012, -1096097592);\n\tsum2 = W(0, 1053790549, -1080860351, -1068185653, -1082483044)\n\t\t + W(1, -1110257416, -1097530578, -1077346152, -1088866791)\n\t\t + W(2, 1033688102, 1041061421, 1052310674, 1052658871) + W(3, -1102619530, 1064966059, 1072556372, -1104178634)\n\t\t + W(4, -1117483359, 1050344847, 1075004369, -1108410079)\n\t\t + W(5, -1098152061, 1040479494, 1064749402, 1040931499)\n\t\t + W(6, -1105743952, 1051151965, -1110156824, -1137891932)\n\t\t + W(7, -1083553679, 1065962098, 1045213317, 1053124980);\n\tWS(-1079020096, -1097079011);\n\tsum1 = W(0, -1109501731, -1096742621, 1057943754, 1016000225)\n\t\t + W(1, 1033910555, -1092191510, 1055662529, 1020967408)\n\t\t + W(2, 1015347636, -1089091160, 1059647341, -1102027816)\n\t\t + W(3, -1108027795, -1087072713, 1068092504, -1109882648)\n\t\t + W(4, 1042979875, -1087558450, 1059824411, -1106889398)\n\t\t + W(5, 1019929124, -1089417126, -1117499817, -1117366414)\n\t\t + W(6, 1040369234, -1104831498, 1043480574, -1104827345)\n\t\t + W(7, -1134559750, -1091818621, 1050143023, 1049289276);\n\tsum2 = W(0, 1037631964, -1097479797, 1051023588, 1045348435)\n\t\t + W(1, -1105851814, 1051380185, -1097950410, 1028003104)\n\t\t + W(2, 1036652885, 1028410699, 1034374804, -1113269608) + W(3, -1110757790, 1044594400, 1053237761, 1041832368)\n\t\t + W(4, 1024508007, 1041068006, -1132209182, 1033918380)\n\t\t + W(5, -1139201564, 1046036650, -1088293598, -1089693526)\n\t\t + W(6, -1113225064, 1054960427, -1081781977, -1099925151)\n\t\t + W(7, -1104657620, -1105334641, 1065714224, -1106359824);\n\tWS(-1087384991, 1052875812);\n\tsum1 = W(0, 1041733252, -1109905397, 1041497057, -1113613058)\n\t\t + W(1, -1138647561, -1104994285, 1032882549, -1117825756)\n\t\t + W(2, 1034391503, -1107522048, 1050093354, -1108789794)\n\t\t + W(3, -1106477875, 1057597757, -1091247383, 1028766931)\n\t\t + W(4, -1100509868, 1062613266, -1087942224, 1042722079)\n\t\t + W(5, -1098694249, 1055828187, -1090201627, 1013355333)\n\t\t + W(6, -1110959830, 1052485297, -1098203032, 1034047139)\n\t\t + W(7, -1120730421, 1044647290, -1100016695, 1038812681);\n\tsum2 = W(0, 1019350107, 1041831066, 1051650697, -1103332568)\n\t\t + W(1, -1111428867, -1130655130, -1112274143, -1077765094)\n\t\t + W(2, 1017374087, -1138336400, -1092155273, -1073481211)\n\t\t + W(3, -1112005123, 1035402260, -1114034096, -1087514353)\n\t\t + W(4, 1028700445, -1116945124, 1045953881, 1069095754) + W(5, -1112772903, 1041636268, 1041190902, 1074086485)\n\t\t + W(6, 1027823157, -1107238338, 1049171133, 1057277153) + W(7, 999439052, 1033528252, 1027833254, -1107727987);\n\tWS(1050457727, 1041689780);\n\tsum1 =\n\t\tW(0, -1131312139, 992358355, -1092744895, 1048008788) + W(1, -1116681402, 1014710691, 1027381214, 1036450832)\n\t\t+ W(2, 1030961105, 1040368912, -1089348299, 1053966377) + W(3, -1140959985, -1105027369, 1050737138, 933247243)\n\t\t+ W(4, 1046496193, -1089290871, 1038810352, 1043432004) + W(5, 1048638526, -1090315138, 1055368676, -1119062181)\n\t\t+ W(6, 1007270019, -1098770776, 1040416748, 1023583738) + W(7, 1049181764, -1086147588, 1051301702, 1037141075);\n\tsum2 =\n\t\tW(0, -1107193278, 1057496780, 1072935738, -1080570956) + W(1, 1019433289, 1031729137, -1080020989, 1054527180)\n\t\t+ W(2, 1039188525, 1037283932, -1078950448, -1096917141)\n\t\t+ W(3, -1123892633, -1086728254, -1087453268, 1050123895)\n\t\t+ W(4, 1039851328, -1087309268, 1051352061, 1053948249) + W(5, 1032631611, -1092570464, 1059438018, 1042769096)\n\t\t+ W(6, 1044641782, 1035754242, 1051006721, 1029707984) + W(7, -1097026795, 1063903066, 1056300653, -1106545458);\n\tWS(-1084263519, -1088250567);\n\tsum1 =\n\t\tW(0, -1107101246, 1048954180, -1118116730, -1111017296) + W(1, 1049480649, -1096698757, 1027018719, 1043604572)\n\t\t+ W(2, -1097447514, 1059331526, -1108150329, -1098833704)\n\t\t+ W(3, 1049647488, -1119095878, -1090501921, 1050343697)\n\t\t+ W(4, -1099235545, 1040553109, 1044929028, -1096264890) + W(5, 1018612505, 1041330418, -1094468036, 1044030041)\n\t\t+ W(6, -1103944776, 1040723088, 1047463532, -1121471547)\n\t\t+ W(7, 1032447885, 1023387386, -1106285556, -1175819022);\n\tsum2 = W(0, 991719940, -1157381748, -1100952734, 1029794653) + W(1, 1034086314, -1121095386, 1027786887, 1016292894)\n\t\t + W(2, 1055828179, -1103829652, -1085350121, 1067178121)\n\t\t + W(3, 1034571486, -1100672658, -1118546758, -1098007098)\n\t\t + W(4, 1049088345, -1090417467, 1049271738, 1008607005)\n\t\t + W(5, -1098363481, 1050795943, -1140682323, -1110134488)\n\t\t + W(6, -1111430799, -1113801830, 1035813474, -1115483467)\n\t\t + W(7, -1111365517, 1037803588, -1164121191, -1133015817);\n\tWS(1066054400, -1125664425);\n\tsum1 = W(0, 1015260777, 1054574294, -1095241461, -1127045294)\n\t\t + W(1, -1108545200, 1053284635, -1094415406, -1111343263)\n\t\t + W(2, 1023624464, 1059735702, -1088764634, 1041542629)\n\t\t + W(3, -1109354663, 1058150961, -1078845388, -1130514988)\n\t\t + W(4, 1023465234, 1058102002, -1090401103, 1035892576)\n\t\t + W(5, -1108921531, 1063397581, -1105651068, -1136829776)\n\t\t + W(6, -1116445024, 1046571067, -1116790272, 1030749305)\n\t\t + W(7, -1128865616, 1046728251, -1104354311, -1106930027);\n\tsum2 = W(0, 1041565398, -1104697837, -1115419200, -1158883614)\n\t\t + W(1, -1103469615, 1029373537, 1031260861, 1035036640) + W(2, 1029690269, 1057447179, 1026403525, 1034486240)\n\t\t + W(3, 1035794320, 1080145714, 1043319440, 1041655252) + W(4, 1035452008, -1103623095, 1050811672, -1114789346)\n\t\t + W(5, -1107146771, -1066097425, -1103531154, -1114794272)\n\t\t + W(6, -1124704946, -1097535851, -1090176537, 1036709484)\n\t\t + W(7, 1040850628, -1103109309, 1055196268, -1102936938);\n\tWS(-1087901375, 1071177135);\n\tsum1 =\n\t\tW(0, -1121594272, -1110224028, 1030219348, 994425384) + W(1, -1122618691, -1109965218, 1047787782, 1027034090)\n\t\t+ W(2, -1114434254, -1120206908, -1114914192, -1106192913)\n\t\t+ W(3, 1044010486, 1010935165, -1113546820, 1040356168)\n\t\t+ W(4, -1113833999, -1108541318, 1046030645, -1112701798)\n\t\t+ W(5, -1108159437, 1041417229, 1035224125, -1130438655) + W(6, 997526195, -1109330685, 1017890711, -1151173965)\n\t\t+ W(7, -1123472883, 1039497451, 1022061139, -1125745551);\n\tsum2 = W(0, 1042217679, -1116367239, 1026421701, -1140328609)\n\t\t + W(1, -1108814485, 1042859710, 1027395369, -1114630403)\n\t\t + W(2, 1058334461, -1078638996, 1028343990, -1105295199)\n\t\t + W(3, -1080767453, 1073929687, -1097310248, 1028261520)\n\t\t + W(4, 1050991857, -1092080339, 1042808122, -1122297114)\n\t\t + W(5, 1030602271, -1116721722, 1051491707, -1105219597) + W(6, 1034906705, -1106162437, 1024141024, 997359482)\n\t\t + W(7, -1127683613, 1035114111, -1112071525, 1017171678);\n\tWS(1066545696, -1154623394);\n\tsum1 =\n\t\tW(0, -1105442505, -1114054203, 1057182265, -1123432545) + W(1, -1115505461, -1098488296, 1049322687, 1010507424)\n\t\t+ W(2, -1102287846, -1092352928, 1062190966, -1097309632)\n\t\t+ W(3, 1023914903, -1089108436, 1059635472, 1045294808) + W(4, 1021900696, -1087887754, 1057132007, -1098559779)\n\t\t+ W(5, 1016559928, -1096061654, 1043675118, 1042399967)\n\t\t+ W(6, -1142506442, -1097827287, 1048482034, -1110816589)\n\t\t+ W(7, -1129232035, -1095543703, 1055016957, 1026256390);\n\tsum2 =\n\t\tW(0, -1094410020, 1040526244, 1038890507, -1120085021) + W(1, -1073520568, -1119660436, -1105577163, 1014274624)\n\t\t+ W(2, -1076806727, 1072065972, 1038803075, -1119386280) + W(3, 1007932024, 1074284701, -1096715819, 1032586275)\n\t\t+ W(4, -1129053184, 1045336233, 1048625414, -1148623280)\n\t\t+ W(5, -1126774165, -1114285571, -1106066396, 1033069015)\n\t\t+ W(6, 1016297320, 1027498382, 1035667090, -1113847206)\n\t\t+ W(7, 1026440100, -1109537500, -1128514892, 1028560484);\n\tWS(1055250687, -1106970626);\n\tsum1 = W(0, 1033119688, 1042190962, -1096546392, -1117586055)\n\t\t + W(1, -1105149829, 1055784922, -1103230410, -1125652468)\n\t\t + W(2, 1043588463, 1039447718, -1093610964, 1035816565)\n\t\t + W(3, -1098690473, 1060328969, -1094495495, -1103963220)\n\t\t + W(4, 1051357302, -1105877415, -1104321127, 1047255951)\n\t\t + W(5, -1111820283, 1050469874, -1102978667, -1108600424)\n\t\t + W(6, 1036109552, -1123255849, 1034127854, -1157028943)\n\t\t + W(7, -1119401059, 1044861546, -1097968467, 1018776031);\n\tsum2 = W(0, 1038757267, 1030211853, 1033894636, -1133782171)\n\t\t + W(1, -1111076574, -1147844455, 1039985174, -1117005539)\n\t\t + W(2, 1036628998, 1002666567, -1092985165, -1150866734)\n\t\t + W(3, -1107631850, -1080902130, -1084645521, 1049641986)\n\t\t + W(4, 1045867530, -1089131777, 1069738325, 1051354211)\n\t\t + W(5, -1126199158, 1067727291, -1096580382, -1100550183)\n\t\t + W(6, 1034641438, 1050167793, -1100096489, -1104598763)\n\t\t + W(7, 1014361489, -1114432338, -1100261485, 1033251244);\n\tWS(1063662431, 1022143153);\n\tsum1 =\n\t\tW(0, -1101665898, 1028101088, 1045825111, -1107336877) + W(1, 1044567949, -1100200043, -1112112432, 1049135824)\n\t\t+ W(2, -1113912242, -1110575390, 1011332621, -1117269540)\n\t\t+ W(3, 1054985008, -1090770105, 1036354680, 1043762234) + W(4, -1089448239, 1042239925, 1053092900, -1090665684)\n\t\t+ W(5, 1031890901, 1034205190, 1020582213, 1045380738) + W(6, -1106608329, 1041117720, -1122250931, -1108114694)\n\t\t+ W(7, 1016341751, 1032506575, 1037368233, 1027635960);\n\tsum2 =\n\t\tW(0, -1109621945, 995625223, 1033690799, -1127273987) + W(1, 1044140338, -1125871763, -1131300267, 1031533647)\n\t\t+ W(2, 1011973298, 1059194369, 1019603073, -1100093028) + W(3, 1054192939, -1085775903, -1105557074, 1049649037)\n\t\t+ W(4, -1083519810, -1085690186, 1066625604, -1099380904)\n\t\t+ W(5, 1050669158, 1055305067, -1093331249, 1041330252) + W(6, 1015542539, -1115586758, 1025625789, -1109873113)\n\t\t+ W(7, 1007706050, 1024423563, -1163078190, 1021669909);\n\tWS(1065395904, 1046290614);\n\tsum1 = W(0, 996799560, -1125542553, 1038203972, -1122586727) + W(1, 1015596034, 1043656950, -1105153011, 1036793959)\n\t\t + W(2, -1100668872, 1056396433, -1085640859, 1049715632)\n\t\t + W(3, -1100927819, 1054862894, -1101762943, 1035554923)\n\t\t + W(4, 1043886221, -1088911438, 1057024083, -1115152096)\n\t\t + W(5, 1025322396, -1099487682, 1036429768, -1122121748)\n\t\t + W(6, 1035443240, -1105531411, 1021072448, 1039652277)\n\t\t + W(7, -1114934548, -1117673547, 1035195023, 1024299964);\n\tsum2 = W(0, 1029237671, 1017509749, -1104176053, 1032328729)\n\t\t + W(1, -1133651707, -1140172751, 1038596873, 1037378915)\n\t\t + W(2, -1114304490, 1030543605, 1050264307, -1104642832)\n\t\t + W(3, -1114162505, -1092617066, -1093179067, 1049979232)\n\t\t + W(4, -1125875827, 1051105475, 1071302855, -1110244360)\n\t\t + W(5, -1112015576, 1033357967, -1090684841, -1085540383)\n\t\t + W(6, 1015895733, 1011455075, -1100815852, -1135016203)\n\t\t + W(7, 1035088799, -1105982664, 1003487558, 1015899853);\n\tWS(1058730335, 1038095077);\n\tsum1 = W(0, 1050009523, -1090412329, -1116071407, -1120619710)\n\t\t + W(1, -1156396202, 1022785342, -1112028282, 1033123659) + W(2, 1045232946, 990514519, 1027669243, -1138222105)\n\t\t + W(3, -1123440788, 1051849503, 1025171300, 1042856679) + W(4, 994853272, 1050259497, -1091444451, 1043400402)\n\t\t + W(5, 1029074928, 1048747736, -1091116387, 1046148791)\n\t\t + W(6, -1116532263, 1040337077, -1095024325, 1031722640)\n\t\t + W(7, 1016043038, 1047238893, -1085293672, 1050565349);\n\tsum2 = W(0, 1046272294, 1056160584, -1069609928, -1086350256)\n\t\t + W(1, -1119023958, 1047372879, -1100807597, 1012350161)\n\t\t + W(2, -1106071503, 1066704996, 1063602974, -1093103672)\n\t\t + W(3, -1097641458, 1062851774, 1071319304, -1165704932)\n\t\t + W(4, -1099339001, -1127558738, -1123458905, -1099266547)\n\t\t + W(5, -1122591395, -1095719050, 1049925865, 1039176837)\n\t\t + W(6, -1120322169, 1012197993, 1037702687, -1104052164)\n\t\t + W(7, -1112624405, -1094334166, 1046841945, 1043315186);\n\tWS(-1102208382, 1082454872);\n\tsum1 = W(0, -1121527792, -1097489215, 1044710709, 1024559218)\n\t\t + W(1, 1019782131, -1109352802, 1043005718, 1025756170)\n\t\t + W(2, -1111677734, -1089475261, 1059136208, -1098383546)\n\t\t + W(3, 1042764822, -1094323164, -1113184692, 1034230961)\n\t\t + W(4, -1098291428, 1057233791, -1102862820, -1121795355)\n\t\t + W(5, -1109244559, 1055571354, -1113821821, 1034138424)\n\t\t + W(6, -1122839755, 1036609181, 1016630678, -1148370726)\n\t\t + W(7, 1023050790, 1023873367, -1122283881, 1021065311);\n\tsum2 = W(0, 1012975921, -1113722375, -1109752074, 1009270385)\n\t\t + W(1, 1033684352, -1113902527, -1108511603, 1034062718)\n\t\t + W(2, -1119837718, 1034379158, 1047596894, -1096952633) + W(3, 1048900749, 1065557700, 1065261424, 1042274647)\n\t\t + W(4, -1088385914, 1033601684, -1110433219, -1110816087)\n\t\t + W(5, -1106132930, -1078602486, -1113936114, 1038223706)\n\t\t + W(6, -1107812043, 1048231286, -1106600777, 1037668398)\n\t\t + W(7, 1047279942, -1117907500, -1110420048, -1111923151);\n\tWS(1055139903, 1066543323);\n\tsum1 = W(0, -1113216706, 1025777755, 1062476912, -1094834883)\n\t\t + W(1, 1034160554, -1106690282, 1047449287, -1115394087)\n\t\t + W(2, -1110997976, 1025857819, 1040533578, -1100641176)\n\t\t + W(3, -1104052311, -1108040417, -1088276389, -1109281747)\n\t\t + W(4, -1130057219, 1042814916, 1043316038, -1111790927)\n\t\t + W(5, -1100344024, 1058801014, -1096553156, -1131081926)\n\t\t + W(6, -1109060119, 1040801319, 1003175286, -1127882001)\n\t\t + W(7, -1102181302, 1061190298, -1109923206, -1116502963);\n\tsum2 = W(0, 1032900543, -1093611286, -1093105706, -1103368978)\n\t\t + W(1, 1026043047, -1143136704, -1104881087, 996537094)\n\t\t + W(2, 1011969739, -1129502699, 1056641171, -1097512177) + W(3, 1005946567, 1065137024, 1062580590, 1038772124)\n\t\t + W(4, -1104378201, 1034934846, -1137732946, -1108835309)\n\t\t + W(5, -1106573410, 1044311979, -1102271464, 1035638256)\n\t\t + W(6, -1149079854, -1128312106, -1106196955, 1028654910)\n\t\t + W(7, -1098913457, -1107526541, -1097055308, -1144299515);\n\tWS(1037662203, -1095462961);\n\tsum1 =\n\t\tW(0, 1051208476, 1054332722, -1088537607, 1009988859) + W(1, 1007151360, 1048962332, -1096098779, -1120684294)\n\t\t+ W(2, 1047867778, 1056131053, -1089718811, 1043868050) + W(3, -1120692693, 1060311124, -1086623130, 1008468855)\n\t\t+ W(4, -1102286423, 1053179033, -1088149909, 1024446024) + W(5, 1029685138, 1057524976, -1093380227, 1041242535)\n\t\t+ W(6, -1117174983, 1045179237, -1094989189, -1121112609)\n\t\t+ W(7, 998066935, 1053688986, -1094538289, 1022948968);\n\tsum2 = W(0, -1075642964, 1064397427, 1042055631, 1049259770)\n\t\t + W(1, -1078284587, 1070403917, 1050515956, -1100572061)\n\t\t + W(2, -1077677369, 1072178178, -1094922849, 1038272909)\n\t\t + W(3, -1086975712, 1071930150, -1096417404, -1110188613)\n\t\t + W(4, 1050575143, -1093947328, -1094640520, 1033007627)\n\t\t + W(5, -1109971278, -1119680819, 1045435393, -1109186235)\n\t\t + W(6, 1043550667, -1134729809, -1109099138, 1040318497)\n\t\t + W(7, 1046375822, -1094009133, -1106076462, 1038207101);\n\tWS(-1091974591, 1028524890);\n\tsum1 =\n\t\tW(0, -1119527298, 1050666155, -1104886813, -1119869997) + W(1, 1034997099, -1101120961, -1100807815, 1044100139)\n\t\t+ W(2, -1099802012, 1057798952, -1099838668, -1103774309)\n\t\t+ W(3, 1033463662, -1146674958, 1021707158, -1112176434)\n\t\t+ W(4, -1090658116, 1048486316, 1057612011, -1094617942) + W(5, 1044419888, 1054164791, -1093871840, 1036492177)\n\t\t+ W(6, -1099353751, 1033437822, 1029138830, -1113521820)\n\t\t+ W(7, -1110855131, 1053708795, -1104286795, 1028051362);\n\tsum2 =\n\t\tW(0, 1029285075, -1114745613, 1024121756, -1127985632) + W(1, -1113245689, 1037297246, 1034295695, -1103172653)\n\t\t+ W(2, 1046869988, -1113507597, -1081105309, -1097344586)\n\t\t+ W(3, -1099734421, 1057852752, 1063764387, -1092930743) + W(4, 1045806866, 1031538739, -1093953622, 1039548141)\n\t\t+ W(5, -1099048447, 1019950674, 1060684479, -1113791115) + W(6, 1040440310, 1039903515, -1099720743, 1024790472)\n\t\t+ W(7, -1129472848, -1115367833, 1051222485, -1106398082);\n\tWS(1058893599, -1078409713);\n\tsum1 =\n\t\tW(0, -1115244150, -1102829117, 1039336887, -1115623287) + W(1, 1036724056, -1100240992, 1053376406, -1114512019)\n\t\t+ W(2, -1098555735, -1094663483, 1053054383, 1041993169) + W(3, 1049246955, -1084866106, 1065100884, 1018575674)\n\t\t+ W(4, 1045222582, -1085064800, 1054590883, -1114852275)\n\t\t+ W(5, -1138283737, -1093243506, 1056764679, -1108377677)\n\t\t+ W(6, 1044966206, -1093950047, 1053059489, -1118180448)\n\t\t+ W(7, -1115412967, -1095580366, 1050610273, -1122449691);\n\tsum2 = W(0, -1130929736, -1101060123, 1045192083, -1105822172)\n\t\t + W(1, 1009552185, -1090337753, 1061442923, -1103557108)\n\t\t + W(2, -1084383778, 1072779570, 1050903982, -1106762492)\n\t\t + W(3, 1050909748, 1053567468, -1089269841, -1117595750)\n\t\t + W(4, 1049209322, -1079161361, 1029505799, -1111371347)\n\t\t + W(5, -1096700837, 1057662166, -1094014597, 1025228376)\n\t\t + W(6, 1051369678, -1097661058, 1046387683, -1138825972)\n\t\t + W(7, -1129474226, -1112521942, -1105984421, 1030887459);\n\tWS(-1109369595, 1048740969);\n\tsum1 =\n\t\tW(0, 1040995480, 1051718495, -1091711555, -1125552391) + W(1, 1030414773, 1050319297, -1095167863, 1032958437)\n\t\t+ W(2, -1118646413, 1059003715, -1085356599, 1042985722) + W(3, 1043594790, 1046504696, -1083562713, 1045509569)\n\t\t+ W(4, -1129436350, -1135436979, -1096690237, 1023899916)\n\t\t+ W(5, 1037121811, 1043825845, -1098326935, 1019546753) + W(6, 1030207412, 1049475887, -1120665100, -1130219052)\n\t\t+ W(7, 1043560049, 1058279379, -1098718953, -1105013544);\n\tsum2 = W(0, -1113177829, -1117552581, -1100446453, 1041583669)\n\t\t + W(1, 1043809265, -1109343151, 1039662186, 1009024316)\n\t\t + W(2, -1095416462, 1052574118, -1114145263, -1118793923)\n\t\t + W(3, 1034071291, 1063553374, 1053677817, 1018689733) + W(4, -1120341831, 1070912061, -1101063801, 1031195477)\n\t\t + W(5, 1043900974, -1112203792, 1042882834, -1105538343)\n\t\t + W(6, 1020015593, -1091338378, -1094258913, -1114748986)\n\t\t + W(7, -1119209873, -1072794661, 1055602011, -1109237633);\n\tWS(-1093437503, 1065718162);\n\tsum1 =\n\t\tW(0, 1037550096, 1049488055, -1103061781, -1114711965) + W(1, -1101135841, 1042594425, 1046266118, -1097873069)\n\t\t+ W(2, 1044878747, 1049041945, -1087470164, 1046063170)\n\t\t+ W(3, -1107014286, 1066142676, -1106438298, -1091362312)\n\t\t+ W(4, 1042111087, -1100146203, -1111606545, 1037494709) + W(5, 1037051057, 1045825417, -1091131027, 1040258368)\n\t\t+ W(6, -1099961615, 1040663590, -1133427370, -1109172298)\n\t\t+ W(7, 1041500301, -1119554198, -1103590594, 1033770775);\n\tsum2 =\n\t\tW(0, -1106488910, -1123106758, 1050172947, -1124712996) + W(1, 1026201604, -1113590739, -1092748399, 1043391307)\n\t\t+ W(2, 1035711566, -1084666863, -1097703384, -1098783459)\n\t\t+ W(3, 1060425407, 1061776657, -1099741350, 1048423650) + W(4, -1098764525, 1055047321, -1120322586, 1041036039)\n\t\t+ W(5, -1096618367, -1119175762, 1050324229, -1099280352)\n\t\t+ W(6, -1182808622, -1103500958, 1025620288, 1048645442)\n\t\t+ W(7, -1127820908, 1041613778, -1105222946, -1118590758);\n\tWS(1056660607, -1113798601);\n\tsum1 = W(0, -1115305597, 1041913228, 1012656821, 1026504084) + W(1, -1101671294, 1008348404, 998498191, -1151777337)\n\t\t + W(2, 1016801995, 1031963795, -1102006873, 1032505286)\n\t\t + W(3, 1039904137, -1093680051, 1057450908, -1108358078)\n\t\t + W(4, 1037148876, -1089471492, 1049874551, 1031920291) + W(5, 1040453028, 1034024758, -1111681498, 1043455038)\n\t\t + W(6, -1110559226, -1111400057, -1109457443, -1129849213)\n\t\t + W(7, -1154296528, 1031051312, 1036430914, -1125050675);\n\tsum2 = W(0, 1042939003, 1024638457, -1123927190, 998901155) + W(1, -1114796094, -1101207597, 1042777565, 1022659417)\n\t\t + W(2, 1044529628, 1027593065, -1098782283, 1017512357)\n\t\t + W(3, -1124781020, -1097759574, 1059165645, -1104939928)\n\t\t + W(4, -1106748864, -1130307786, 1062760553, -1098668376)\n\t\t + W(5, 1016881133, 1033669310, 1017094385, -1089791762)\n\t\t + W(6, -1108227590, 1022409637, -1160993898, -1106217568)\n\t\t + W(7, 1027959261, 1019735589, -1125388747, -1115680109);\n\tWS(1066155712, 1004288134);\n\tsum1 = W(0, 1047132567, 1049267618, -1089062279, -1138510971)\n\t\t + W(1, 1029697589, 1048612844, -1092380195, 1046969501) + W(2, 1014062303, 1055750611, -1088453014, 1024451359)\n\t\t + W(3, 1041631965, 1059093756, -1084647474, 1049129552) + W(4, 991515041, 1057479944, -1091963789, 1040560290)\n\t\t + W(5, -1123217244, 1056993158, -1088742789, 1043007167)\n\t\t + W(6, -1154741365, 1047138005, -1098495965, -1122630737)\n\t\t + W(7, 1030265807, 1055767146, -1086886676, -1122583780);\n\tsum2 = W(0, 1011892235, 1040858440, -1127819845, 1010964983)\n\t\t + W(1, -1111382628, -1103755803, -1109875610, -1106716388)\n\t\t + W(2, 1037768402, -1125277089, -1096621612, 1032593498)\n\t\t + W(3, 1032283234, -1084511950, -1071556311, 1040462902)\n\t\t + W(4, -1114728106, -1090323786, -1071973667, -1100404332)\n\t\t + W(5, 1009460031, -1159433014, -1099343032, 1040394500)\n\t\t + W(6, -1112526532, 1053584755, 1076043190, 1007208771) + W(7, 1030203700, 1052886875, 1079690007, 1051792925);\n\tWS(-1086041375, 1049976369);\n\tsum1 =\n\t\tW(0, -1125608345, -1096855193, 1037693680, 1048607039) + W(1, 1025261033, -1097190986, 1051176741, 1030637974)\n\t\t+ W(2, 1032012444, -1086237883, 1059434222, 1026121224) + W(3, 1046732297, -1083643033, 1062665585, -1103554484)\n\t\t+ W(4, -1114869141, -1093631755, 1052924527, -1110078044)\n\t\t+ W(5, 1036081274, -1095059844, 1052562329, -1109004102) + W(6, 1036645660, -1132519191, 1041010310, 1035782593)\n\t\t+ W(7, -1119140736, -1095180224, 1048775023, -1118200972);\n\tsum2 =\n\t\tW(0, 1029601330, -1115199196, -1096390757, -1079547524)\n\t\t+ W(1, -1144560396, 1026958814, -1100298556, -1081990625) + W(2, 1032763954, 1032369083, 1076866217, 1041174181)\n\t\t+ W(3, -1115106220, -1106065675, -1108884178, 1041059708)\n\t\t+ W(4, -1111454114, 1042189754, -1116766618, 1024602232)\n\t\t+ W(5, -1121335223, 1029124674, 1025985538, -1127158528)\n\t\t+ W(6, -1109520646, 1022674491, -1115268590, 1007020790) + W(7, 1021645795, 1026253022, 1011072742, 1003377428);\n\tWS(-1111980027, 1060626277);\n\tsum1 = W(0, 1023621139, -1102882983, 1044706422, 1028429765)\n\t\t + W(1, 1032179266, -1092055397, 1043529367, -1113080214)\n\t\t + W(2, 1030954414, -1089823274, 1057090380, -1101761443)\n\t\t + W(3, 1037158526, -1095093232, 1064981515, -1098683411)\n\t\t + W(4, 1036765152, -1090725010, 1047303429, 1033439719) + W(5, 1036680203, -1139402199, 1042557255, 1030304674)\n\t\t + W(6, -1146606447, -1116432156, 1028925358, -1104492078)\n\t\t + W(7, -1119312598, -1108873773, 1041638915, -1112219839);\n\tsum2 =\n\t\tW(0, -1107703976, 1045439570, 1032849260, -1122224669) + W(1, 1046455264, -1090239140, -1096329612, 1035962913)\n\t\t+ W(2, -1093472442, 1028879562, 1030082819, -1098806672) + W(3, 1048924762, 1064195571, 1036056807, 1041148911)\n\t\t+ W(4, -1097201227, 1016778259, 1059898488, -1091828205) + W(5, 1049435664, 1027385222, -1091675747, 1041687668)\n\t\t+ W(6, -1106239872, 1028121257, 1053658286, -1098243254)\n\t\t+ W(7, -1119402461, -1105208479, -1117889585, -1104565052);\n\tWS(1062681599, 1040842201);\n\tsum1 =\n\t\tW(0, -1108789463, -1104300209, 1042117608, -1118282400)\n\t\t+ W(1, -1115361429, 1050445194, -1097788769, -1114475276)\n\t\t+ W(2, 1048981817, -1089127203, 1032428200, 1049574381) + W(3, -1092926921, 1063952639, 1049970971, -1090427073)\n\t\t+ W(4, 1054602509, 1043197406, -1088418847, 1045778638) + W(5, 1029602904, -1106041808, 1049956321, -1112080775)\n\t\t+ W(6, -1117967305, 1039191171, -1112931212, -1097758566)\n\t\t+ W(7, 1025443329, -1114238594, -1123051255, 1033393295);\n\tsum2 = W(0, 1038735267, -1126315713, -1111714958, -1111656758)\n\t\t + W(1, -1100048068, 1043050536, -1115313021, -1115683900)\n\t\t + W(2, -1115453090, 1053683464, 1046662525, -1093358619)\n\t\t + W(3, -1110884051, 1058830244, 1061563017, -1105966973)\n\t\t + W(4, -1090743949, -1100540415, 1052621807, 1037413595)\n\t\t + W(5, -1153955669, 1037942519, -1104363663, -1101879362)\n\t\t + W(6, -1112598570, -1098889179, -1118760183, 1044482581)\n\t\t + W(7, -1103797208, 1040830228, 1007755797, -1098877089);\n\tWS(1062776447, 1069975051);\n\tsum1 = W(0, -1130308944, 1036893844, -1104137265, -1108240801)\n\t\t + W(1, -1112835078, -1114635034, -1098478453, 1029922778)\n\t\t + W(2, -1113144126, 1050058840, -1104852259, -1111877761)\n\t\t + W(3, -1094805377, 1071110128, 1041368142, -1088740684)\n\t\t + W(4, -1098008538, 1061455014, -1095764665, -1112520550)\n\t\t + W(5, -1114270939, 1044746969, -1109080309, -1119589855)\n\t\t + W(6, -1117364667, 1018226642, -1103882015, -1121527653)\n\t\t + W(7, -1117827459, 1049407081, -1120810969, -1103102129);\n\tsum2 = W(0, 1028834725, -1113117380, 1037052904, -1113210551) + W(1, -1110297977, 1026197871, 996515330, 1032917698)\n\t\t + W(2, 1035091068, -1099362318, 1043940575, -1106692355)\n\t\t + W(3, 1034973002, 1077416661, -1069860026, -1103487680) + W(4, -1110025415, 1050456944, 969317772, 1034055293)\n\t\t + W(5, -1154986018, -1112814852, 1021906202, 1006658352)\n\t\t + W(6, -1120031976, 1027999489, -1115577362, 1018186436)\n\t\t + W(7, 1030684381, 1016280910, 1013156184, -1124181989);\n\tWS(-1082599007, -1084302409);\n\tsum1 =\n\t\tW(0, -1127095446, 1056665680, -1087212124, 1035858193) + W(1, 1011517278, 1052281350, -1096260148, -1128228554)\n\t\t+ W(2, -1110892475, 1058821842, -1085877656, 1043137767) + W(3, 1024933540, 1061132051, -1087957451, 1023709101)\n\t\t+ W(4, -1111586789, 1054434479, -1089270826, 1037286635)\n\t\t+ W(5, 1039136849, 1052720805, -1102718609, -1111842501)\n\t\t+ W(6, -1108207315, 1043783817, -1106422582, -1130056576)\n\t\t+ W(7, 1049617952, -1159632952, -1106709957, -1115207149);\n\tsum2 = W(0, 1048459811, -1095160239, 1026509768, -1123792544)\n\t\t + W(1, 1071226724, 1065850492, 1043007163, -1127547903) + W(2, 1075494724, -1121381976, 1043168485, 1027169380)\n\t\t + W(3, 1074401127, -1099027008, -1093896652, -1107011198)\n\t\t + W(4, 1044864951, 1031151008, 1012395574, 1037067951) + W(5, -1077687291, 1057399482, 1019701051, 1021690579)\n\t\t + W(6, -1072311776, 1045213405, -1109946848, -1124089088)\n\t\t + W(7, -1066953112, -1095971461, 1027278540, -1166810856);\n\tWS(-1118215158, -1130722305);\n\tsum1 = W(0, 1039784439, 1045520358, -1094865274, 966095017)\n\t\t + W(1, -1119983743, 1040649785, -1098235299, -1166742058)\n\t\t + W(2, 1027132090, -1126797149, -1085881139, 1023429181)\n\t\t + W(3, -1101267710, 1070303194, -1106608186, -1127173569)\n\t\t + W(4, -1106141431, 1059129261, -1088850304, -1112024885)\n\t\t + W(5, -1119840977, 1056727436, -1093134907, 1030946302)\n\t\t + W(6, -1131926580, 1040938982, -1098615277, -1160489077)\n\t\t + W(7, -1158357571, 1050582583, -1104503154, -1106263629);\n\tsum2 = W(0, -1122933952, 1043676402, -1122578476, 1034421913)\n\t\t + W(1, 1029904221, -1092335308, -1096734640, -1121365342)\n\t\t + W(2, -1104768174, 1050667883, -1067932755, -1103315560)\n\t\t + W(3, 1044174015, -1106663265, 1078656606, 1049347404) + W(4, -1122786276, 1035773679, 1056344301, 1027752905)\n\t\t + W(5, 1032455763, 1033986578, -1106732625, -1114333025)\n\t\t + W(6, -1118952582, -1123822916, 1033374173, 1025409455)\n\t\t + W(7, -1120585334, 1030027555, -1116084330, -1129253837);\n\tWS(-1112296443, -1083191171);\n\tsum1 =\n\t\tW(0, 1030599873, 1049894985, -1100141489, -1124642344) + W(1, -1102688301, 1052276159, -1095734081, -1114229790)\n\t\t+ W(2, 1038739494, 1055519004, 1044438853, 1039505712) + W(3, -1091052013, 1061107959, -1078809864, -1108354137)\n\t\t+ W(4, -1120252367, 1059731464, -1100785926, 1037196526)\n\t\t+ W(5, -1118018759, 1052059899, -1095185489, -1129006466)\n\t\t+ W(6, -1105737735, 1050382861, -1092887220, 1034647259)\n\t\t+ W(7, 1036799090, 1050879021, -1113977245, -1123394945);\n\tsum2 =\n\t\tW(0, -1134366274, 1032198029, -1102569648, -1113629492) + W(1, 1040286055, -1093721101, 1059013351, -1099320981)\n\t\t+ W(2, -1103185345, 1064064153, -1076328416, 1062572765)\n\t\t+ W(3, -1089934078, 1038410574, 1075980540, -1079072621)\n\t\t+ W(4, -1104699884, 1053501328, -1081344728, 1057269325)\n\t\t+ W(5, -1135474394, 1053898256, -1093863519, 1039501040)\n\t\t+ W(6, 1039368980, -1088730122, 1061819985, -1089994189) + W(7, 984214720, 1045555557, -1089334779, 1050815727);\n\tWS(1051639487, -1077445112);\n\tsum1 = W(0, 1023584208, -1087680633, 1058381481, 1019116206)\n\t\t + W(1, 1019039018, -1097242582, 1049175941, -1110819225)\n\t\t + W(2, 1046978951, -1087958558, 1059595066, 1041321753)\n\t\t + W(3, -1114024277, -1084584703, 1058705186, -1110784681)\n\t\t + W(4, 1042440780, -1089578188, 1060807824, -1120949436)\n\t\t + W(5, 1036430651, -1090497932, 1057261083, -1111841304)\n\t\t + W(6, 1019910405, -1100840226, 1047705823, -1108976675)\n\t\t + W(7, 1017051223, -1089989738, 1052092149, 1037750032);\n\tsum2 = W(0, -1103483317, 1043027417, 1043672886, -1126025102)\n\t\t + W(1, -1103949071, 1024633771, -1105891820, -1101612494)\n\t\t + W(2, 1036613850, 1050158855, -1113242263, 1051748473)\n\t\t + W(3, -1096200772, -1096718424, 1053817256, -1144187697)\n\t\t + W(4, -1094761445, 1057240079, 1043447632, -1129269697)\n\t\t + W(5, -1090478844, 1037855330, 1053166295, -1114569970)\n\t\t + W(6, -1091384835, 1036780676, 1043680942, -1102484885)\n\t\t + W(7, 1024429003, -1103545669, 1034776200, 1044262941);\n\tWS(-1102141694, 1066754929);\n\tsum1 =\n\t\tW(0, 1024767465, -1097150806, -1121670572, 1047316983) + W(1, 1028037205, -1105574095, 1021251426, -1123186307)\n\t\t+ W(2, -1148374821, -1092607882, 1053426631, 1027553675) + W(3, 996156698, -1086231302, 1064662112, 1037457517)\n\t\t+ W(4, 1034886379, -1085570014, 1060264850, -1103359865) + W(5, 1011245536, -1090150659, 1058905527, 1031219256)\n\t\t+ W(6, 1017269224, -1093685286, 1047037217, -1108923303)\n\t\t+ W(7, 1023537404, -1100403588, 1048736520, 1039125668);\n\tsum2 = W(0, -1127568330, 1005444026, -1099850392, -1069105992)\n\t\t + W(1, 1031019669, -1121000217, 1052911126, -1075891845)\n\t\t + W(2, 1013355589, -1135062981, 1040255711, 1052106082)\n\t\t + W(3, -1123247753, -1099801823, -1120914990, 1078854269)\n\t\t + W(4, -1131101666, 1044314830, 1055431083, 1061745892)\n\t\t + W(5, -1126559289, 1052295626, -1112663055, -1097592921)\n\t\t + W(6, -1128009624, -1112001042, 1029993103, 1033712114)\n\t\t + W(7, -1122774763, 1018744598, -1105142519, 1037317546);\n\tWS(-1092827839, 1049601702);\n\tsum1 =\n\t\tW(0, -1102748075, -1114726817, 1043768535, 1001409895) + W(1, 1048973336, -1100496851, 1037939345, 1025584388)\n\t\t+ W(2, -1101661842, 1056141590, -1092531310, 1043222609) + W(3, 1035794226, -1092935501, 1048278549, 1028885900)\n\t\t+ W(4, 1035295380, -1090189951, 1059458263, -1097823129) + W(5, 951002293, -1127762491, -1107678146, 1046084402)\n\t\t+ W(6, 1028700102, -1107070641, 1040739973, 1018269854)\n\t\t+ W(7, 1019995195, -1116434785, -1103464157, 1033486885);\n\tsum2 = W(0, 1047648616, -1099866854, 1040911688, -1104812914)\n\t\t + W(1, 1049954711, -1087014785, -1127547935, 1032774583)\n\t\t + W(2, -1086499077, 1059941103, 1006897087, -1118719608)\n\t\t + W(3, 1036131868, 1059724034, -1147690453, -1112213150)\n\t\t + W(4, 1021844703, -1104253425, -1094365093, 1020986307)\n\t\t + W(5, -1144052469, -1116739540, 1046092804, 1037506252)\n\t\t + W(6, 1036766656, -1123734224, -1117733622, 1020773629)\n\t\t + W(7, -1114852932, -1119117496, 1045874226, -1120467144);\n\tWS(1062974879, -1132215613);\n\tsum1 = W(0, -1181157822, -1096960767, 1047884458, 1046591191)\n\t\t + W(1, 1033235448, -1103300066, 1024586364, 1028472621)\n\t\t + W(2, -1120645311, -1098273063, 1040665968, 1027902609)\n\t\t + W(3, 1032693326, -1084817024, 1065496294, -1105457745)\n\t\t + W(4, 1014937094, -1086871647, 1061273423, -1099580452)\n\t\t + W(5, 1012846527, -1093312183, 1057013666, -1121668195)\n\t\t + W(6, 1029466479, -1094276984, 1048826162, -1123904424)\n\t\t + W(7, 1027727527, -1099477807, 1049029078, 1033797162);\n\tsum2 = W(0, -1120861164, -1114727130, 1051943787, 1073213517)\n\t\t + W(1, 1023555157, -1127207629, 1021361633, 1067585393)\n\t\t + W(2, -1114715157, 1049207316, -1100379929, -1095215585)\n\t\t + W(3, 1039733942, -1100512081, 1049204344, -1072102567)\n\t\t + W(4, -1111876903, 1044392032, 1029680046, -1085077901)\n\t\t + W(5, -1121732899, -1113639142, 1040523175, 1017790060)\n\t\t + W(6, 1028106223, -1107243417, -1113800818, -1115100698)\n\t\t + W(7, -1136150442, 1035475508, 1017564481, -1111101803);\n\tWS(1038961915, -1122010239);\n\tsum1 = W(0, 1004620105, 1048595660, -1099376311, -1116246236)\n\t\t + W(1, -1113106351, 1052250558, -1096833644, 1027857155)\n\t\t + W(2, -1112775210, 1058549636, -1088891129, 1036452944)\n\t\t + W(3, -1125534724, 1061573929, -1086812373, 1040782707)\n\t\t + W(4, -1137271196, 1057522353, -1093214133, 1018281129)\n\t\t + W(5, -1126589322, 1048822826, -1095914356, -1113857108)\n\t\t + W(6, 1026657556, 1040718305, -1105329661, 1010557432)\n\t\t + W(7, -1119328748, 1048641524, -1103878453, -1106455448);\n\tsum2 =\n\t\tW(0, -1116580406, 1027562258, 1055923683, 1077914250) + W(1, 1024927837, -1162615720, -1098456431, 1064911462)\n\t\t+ W(2, -1129828931, 1047581344, -1107918233, -1076359256)\n\t\t+ W(3, -1115420496, -1109513493, -1093462217, -1072190840)\n\t\t+ W(4, 1011185933, 1038795182, 1043574176, 1023726209) + W(5, -1123989928, -1118168090, 1042713369, -1114062645)\n\t\t+ W(6, -1146345634, 1030671240, -1118222006, -1119388396)\n\t\t+ W(7, -1132229127, 1038841827, 1029869485, -1111766417);\n\tWS(1058520191, -1103814144);\n\tsum1 =\n\t\tW(0, 1017038583, -1136595532, -1118053743, 1027978638) + W(1, 1027734728, 1016280509, -1128563239, -1097122909)\n\t\t+ W(2, 1045254802, -1109207324, 1044218638, -1104843131)\n\t\t+ W(3, -1107262661, 1062837304, -1096672636, 1033499055)\n\t\t+ W(4, -1105442246, 1058887264, -1085861660, 1025985831) + W(5, 1031430877, 1040464732, -1103880229, 1030848699)\n\t\t+ W(6, -1126950445, 1030731221, -1107144426, -1131329888)\n\t\t+ W(7, 1024536063, 1029953906, -1145128486, -1109411553);\n\tsum2 = W(0, 1034702970, -1176551015, 1007931783, -1110263367)\n\t\t + W(1, -1125598974, -1168898884, -1090251816, -1089294892)\n\t\t + W(2, -1114553387, 1041527709, 1067159008, -1085860022)\n\t\t + W(3, 1027536136, -1101298022, 1043575777, 1061443693)\n\t\t + W(4, -1115924578, 1036785061, 1028484706, -1099982080)\n\t\t + W(5, 1035052048, -1106074654, -1104273626, 1042454777)\n\t\t + W(6, -1132148431, 1030578400, -1148595850, 1027614804)\n\t\t + W(7, 1025333585, 1024211757, -1114791455, -1123742626);\n\tWS(1061983711, -1098811342);\n\tsum1 =\n\t\tW(0, 1012577103, 1051270689, -1108510228, -1107438075) + W(1, -1126897281, 1046420622, -1106195699, -1107699151)\n\t\t+ W(2, -1105225996, 1058683087, -1088411008, 1036711743) + W(3, 1024253613, 1058369439, -1089548804, 1026749110)\n\t\t+ W(4, 1053413654, -1097514912, -1118840551, -1116819519)\n\t\t+ W(5, -1137207095, 1052214131, -1096732498, 1024709491)\n\t\t+ W(6, 1042674340, -1105013139, -1109015536, -1140694819)\n\t\t+ W(7, -1109172700, 1050302029, -1103000311, -1154413112);\n\tsum2 =\n\t\tW(0, 1018267361, 1036503366, -1126101987, -1099489904) + W(1, -1110181012, 1041828239, -1116783782, -1102883314)\n\t\t+ W(2, -1146613180, 1050199247, 1071387060, 1052019906) + W(3, 1038715850, -1085432172, -1080125372, 1047113133)\n\t\t+ W(4, 1024296823, 1038941240, -1093021050, 1035497971)\n\t\t+ W(5, 1036970119, -1123003584, -1114155200, -1112911441)\n\t\t+ W(6, 1022003098, 1013422114, -1149124484, -1119585859)\n\t\t+ W(7, -1124702635, 1021003447, -1143100940, -1131838862);\n\tWS(1061194367, -1092415693);\n\tsum1 = W(0, 1036390333, 1051201914, -1104881972, -1115149537)\n\t\t + W(1, -1126263470, 1053058480, -1172862130, 1030237668)\n\t\t + W(2, 1025725222, 1054554894, -1093268199, 1021350042) + W(3, 1043857157, 1047231542, -1076465248, 1036659934)\n\t\t + W(4, 1035642972, 1057662314, -1087389459, 1039247491) + W(5, 1044002978, 1050872286, -1093150623, 1026362746)\n\t\t + W(6, 998479342, 1045022613, -1111846627, 1017611295) + W(7, 1045699251, 1049392206, -1095910796, 1018350484);\n\tsum2 = W(0, -1129487679, 1018376667, -1097777178, -1117386048)\n\t\t + W(1, 1042193002, -1087595144, -1098446206, -1106566736)\n\t\t + W(2, -1108339354, 1054016721, -1106280983, -1108034123)\n\t\t + W(3, -1095819059, 1063707892, 1068295659, -1104582586)\n\t\t + W(4, 1041127864, 1036978867, 1052165187, -1102127104)\n\t\t + W(5, -1103499785, -1103064253, -1110264861, 1036459063)\n\t\t + W(6, 1034257999, -1103241982, -1135489703, -1104779766)\n\t\t + W(7, -1118637794, -1112191100, -1107248782, 996655259);\n\tWS(-1094699455, 1066131816);\n\tsum1 =\n\t\tW(0, 1049793485, -1081848423, 1059460685, 1042128105) + W(1, 1029004921, -1088299640, 1048637514, -1139594888)\n\t\t+ W(2, 1050253240, -1084057276, 1060796209, 1026023615) + W(3, 1043166228, -1084821317, 1059873140, 1020508084)\n\t\t+ W(4, 1029407446, -1084563631, 1055943200, -1125172935) + W(5, 1041612884, -1104203619, 1047596309, 1048504406)\n\t\t+ W(6, 1035949114, -1099802604, 1050483936, -1115227886)\n\t\t+ W(7, 1012128942, -1096241030, -1105809528, 1051471881);\n\tsum2 =\n\t\tW(0, 1060779432, 1051802488, -1086062785, -1114203174) + W(1, -1118034101, -1097493973, 998397725, -1112558489)\n\t\t+ W(2, -1104519356, 1057101737, -1092333837, -1099984065)\n\t\t+ W(3, -1119327164, 1060027297, 1066349798, -1091352583) + W(4, -1101970936, 1044004337, 979464170, -1094257268)\n\t\t+ W(5, -1106905521, 1057962293, -1133317807, -1102635709)\n\t\t+ W(6, 1002331293, -1098665363, 1046794021, -1094504499)\n\t\t+ W(7, -1082144605, -1086721729, 1070824403, -1114333706);\n\tWS(-1074268304, 1079667699);\n\tsum1 =\n\t\tW(0, -1107189325, -1101508903, 1054199089, 1035260131) + W(1, 1027760991, -1090199334, 1054303683, -1107632246)\n\t\t+ W(2, -1136873402, -1090363950, 1062422475, 1005391451)\n\t\t+ W(3, -1113641470, -1087996124, 1067750847, -1101800081)\n\t\t+ W(4, 1031162561, -1083961527, -1113534839, 1034855959) + W(5, 1033891144, -1096484091, 1052689284, 1046337921)\n\t\t+ W(6, -1126712892, -1098094611, 1031942551, -1150999418)\n\t\t+ W(7, 1035917755, -1093567651, 1045977323, 1042992013);\n\tsum2 =\n\t\tW(0, -1109104193, -1100757902, 1040683096, -1125509919) + W(1, -1121805095, 1045040397, -1125556022, 1026278254)\n\t\t+ W(2, 1045986101, 1080470972, 1049174250, -1112163985) + W(3, 1048674700, -1080397282, -1095181876, 1050380898)\n\t\t+ W(4, -1091901802, -1070026310, -1122013099, -1131668233)\n\t\t+ W(5, 1048446997, 1054845861, -1110936398, 1033243862)\n\t\t+ W(6, -1113936425, -1109557127, 1038355211, -1144282357)\n\t\t+ W(7, 1027039508, -1113850952, -1103996340, 1036778147);\n\tWS(-1085238047, -1082053459);\n\tsum1 = W(0, -1106787663, 1039996894, 1048926451, -1104330662)\n\t\t + W(1, -1138285833, 1010512412, -1119213276, -1128637723)\n\t\t + W(2, -1108632776, 1053399812, -1130975030, -1108017347)\n\t\t + W(3, -1094657608, 1045540841, 1010216242, -1096910157)\n\t\t + W(4, -1101713608, 1051732998, 1034301867, -1101323868) + W(5, 1037328759, 1044326914, 1025236158, 1015829447)\n\t\t + W(6, -1111697288, 976543556, -1128978334, -1111437732)\n\t\t + W(7, -1109379868, 1057105320, -1109745879, -1108664266);\n\tsum2 =\n\t\tW(0, -1124623913, 1025825838, 1042257288, 1021162350) + W(1, 1032956443, -1119700813, -1135835500, -1114452863)\n\t\t+ W(2, 1027185909, 1032253087, 1053804277, -1109212782) + W(3, -1101336864, 1046009611, 1048892371, -1102267892)\n\t\t+ W(4, -1094263361, 1060071017, 1036906607, -1105958464)\n\t\t+ W(5, 1029736763, -1108021530, -1101254223, 1037505372)\n\t\t+ W(6, -1112090109, -1111711122, -1115069322, 996911332)\n\t\t+ W(7, 1039412150, -1092338318, -1114145526, -1125671849);\n\tWS(1060867039, -1136390908);\n\tsum1 =\n\t\tW(0, -1127355032, -1085412379, 1049179798, 1047055468) + W(1, 1034805910, -1094311080, 1049208039, -1108149971)\n\t\t+ W(2, 1035163860, -1093352008, 1060583566, 1036232649) + W(3, 1029669941, -1084691216, 1063283264, -1103012671)\n\t\t+ W(4, 1042066222, -1088428116, 1058522472, 1024178471) + W(5, 1021674692, -1088125293, 1055147879, 1026233836)\n\t\t+ W(6, 1040577786, -1096644095, 1050065089, -1126656770)\n\t\t+ W(7, 1021261983, -1091872390, 1041474713, 1049799631);\n\tsum2 = W(0, 1035672114, -1063752230, -1093487673, 1013645866)\n\t\t + W(1, -1098827199, -1085747691, 1041803367, 1034418818)\n\t\t + W(2, 1049155846, 1077059336, 1041184099, -1106855503) + W(3, 1035178389, 1075347264, -1096808218, 1049524211)\n\t\t + W(4, -1107113032, 1056308660, -1129382302, -1122362105)\n\t\t + W(5, -1144855824, 1034654874, -1119639669, 1030856901)\n\t\t + W(6, 1035201737, -1121418857, -1122522987, 1027103888)\n\t\t + W(7, -1127184278, 1014935340, 1011408026, -1115004359);\n\tWS(-1090674303, -1100343233);\n\tsum1 = W(0, -1120232797, -1091881416, 1051419109, 1036288004)\n\t\t + W(1, 1040422273, -1094093465, 1052500896, 1023553551)\n\t\t + W(2, 1026412864, -1085938046, 1061270771, -1112170192)\n\t\t + W(3, -1138867958, -1089254334, 1067891162, -1115349187)\n\t\t + W(4, 1033879777, -1089797193, 1060067146, -1112030904) + W(5, 1033565615, -1085407367, 1016645247, 998486818)\n\t\t + W(6, 1019476032, -1095206984, 1041715172, 1027103050) + W(7, 988102399, -1105032111, 1036835111, 1040345019);\n\tsum2 = W(0, 1040618154, -1101425729, 1012698939, -1121139419)\n\t\t + W(1, -1114130867, 1043012943, -1135257643, 1033653009)\n\t\t + W(2, -1122148687, 1049717343, 1047429512, 1038119907) + W(3, 1044229537, 1078734719, 1020747990, -1131387750)\n\t\t + W(4, -1110193301, 1058416067, 1045573328, -1162837210)\n\t\t + W(5, -1097134960, -1066172228, -1105653505, -1124290574)\n\t\t + W(6, 1037070268, -1087270128, -1098650023, -1142454518)\n\t\t + W(7, 1037459780, 1051160418, 1029335953, -1119987003);\n\tWS(-1083751903, -1076119444);\n\tsum1 = W(0, -1115245576, 1056842307, -1093345814, -1108216057)\n\t\t + W(1, -1106029427, 1054460828, -1096614035, -1118873130)\n\t\t + W(2, -1102084379, 1062160243, -1087844584, 1032187759)\n\t\t + W(3, -1113929101, 1061549380, -1088621915, -1118044066)\n\t\t + W(4, -1115339007, 1051628466, -1095344475, -1125935063)\n\t\t + W(5, 1029734646, 1034628298, 1039622221, -1114025640)\n\t\t + W(6, -1110488366, 1040780998, 1023285463, -1103117229)\n\t\t + W(7, -1147960477, 1027250487, 1052549785, -1101242061);\n\tsum2 = W(0, -1142266798, 1041896729, -1109207785, -1116438034)\n\t\t + W(1, -1105635988, -1133541327, -1119640286, -1143926222)\n\t\t + W(2, -1108468488, 1052249127, -1132044399, -1116983273)\n\t\t + W(3, -1104742183, 1059101684, 1057719514, -1107716245)\n\t\t + W(4, 1004562934, -1116644500, 1049160976, 1036001553)\n\t\t + W(5, -1111519795, 1022626513, 1040987637, -1093640310)\n\t\t + W(6, 1009402627, 1036478091, -1103527129, -1115139384)\n\t\t + W(7, 1007186587, -1114250343, -1094402391, -1102449905);\n\tWS(1032624635, 1033521535);\n\tsum1 = W(0, -1131553039, -1098906814, 1051615627, 1045470610)\n\t\t + W(1, -1117491096, -1100587359, 1047570260, 1025984961)\n\t\t + W(2, -1112834618, -1081513385, 1060987922, 1036113314)\n\t\t + W(3, 1049918570, -1078593782, 1043587024, 1040182861) + W(4, 1045795365, -1105649745, 1056209202, 1012071435)\n\t\t + W(5, 1016822387, -1092053629, 1059398075, 1032631435) + W(6, 1035361729, -1096260814, 1049440024, 1023888652)\n\t\t + W(7, -1113168565, -1095243062, 1051600524, 1034850724);\n\tsum2 = W(0, -1111826236, -1092384767, -1095745094, 1034661269)\n\t\t + W(1, -1099208280, 1027875109, -1100947515, 1048636172)\n\t\t + W(2, 1026789677, 1064661507, -1112642295, -1098451609)\n\t\t + W(3, -1106561040, 1062273543, 1068550638, -1099981129)\n\t\t + W(4, -1093448876, -1087164405, -1104229197, -1118651857)\n\t\t + W(5, 1046407154, -1108191451, -1106740917, 1049739863)\n\t\t + W(6, -1102666308, 1044380270, -1103404028, -1095995165)\n\t\t + W(7, 1042570396, -1104593420, -1105841536, 1048025970);\n\tWS(-1085606847, 1061985400);\n\tsum1 =\n\t\tW(0, -1108997980, -1089905075, 1057688104, 1040581229) + W(1, -1117164584, -1114895517, 1056544190, -1114811305)\n\t\t+ W(2, 1031768707, -1095264598, 1062390314, -1107526493)\n\t\t+ W(3, -1103105924, -1077801587, 1055481056, -1110202349)\n\t\t+ W(4, 1041900981, -1097956992, 1062127874, -1118208771)\n\t\t+ W(5, -1110420181, -1088999487, 1051900674, -1108027100)\n\t\t+ W(6, 1037113665, -1098379486, 1048102065, 1024450541) + W(7, 1014163116, -1096151518, 1057425872, 1041210774);\n\tsum2 = W(0, 1025785873, 1048760593, 1035955606, -1126760968)\n\t\t + W(1, 1048912334, -1090084783, -1119218892, 1008603006)\n\t\t + W(2, -1096464036, -1114768213, 1007739746, -1094704139)\n\t\t + W(3, 1056133856, 1066763200, 1064934573, -1080670875)\n\t\t + W(4, -1104154812, -1086306359, -1089946445, 1031309677)\n\t\t + W(5, -1121968309, 1058187354, 1050702067, -1125625514)\n\t\t + W(6, 1033410161, -1113492694, 1025685973, -1109240237)\n\t\t + W(7, 1015120151, -1128581905, -1102128709, 1039335694);\n\tWS(-1090966143, -1078936607);\n\tsum1 = W(0, -1116393227, -1086961670, 1058706816, -1116819366)\n\t\t + W(1, -1108278025, -1108945587, 1041859343, 1035952359)\n\t\t + W(2, 1051625062, -1086695325, 1060094467, 1041797992)\n\t\t + W(3, -1105522375, -1081986687, 1059190367, -1104043025)\n\t\t + W(4, 1058727904, -1089148367, 1061098519, 1053094890)\n\t\t + W(5, -1091195697, -1086453117, 1055062080, -1093101306)\n\t\t + W(6, 1052016408, -1092689140, 1056115606, 1015960496)\n\t\t + W(7, -1109728971, -1091172115, 1058930855, 1034498693);\n\tsum2 =\n\t\tW(0, 1023528661, -1118025227, 1075422545, -1073269716) + W(1, -1119417071, 1050920275, 1065042273, -1077701631)\n\t\t+ W(2, -1105978590, -1112399565, 1069638520, -1078616397)\n\t\t+ W(3, 1009798795, -1098493686, 1067662601, -1083676116) + W(4, 1040834561, 1036263434, -1093932676, 1044144047)\n\t\t+ W(5, -1111364082, -1124489419, -1079439326, 1070390370)\n\t\t+ W(6, 1041397121, 1048582480, -1078082886, 1068400636)\n\t\t+ W(7, 1033368796, -1089345484, -1070108577, 1077727906);\n\tWS(-1079921856, 1049308945);\n\tsum1 = W(0, 1030068962, -1165865787, -1187780005, 1025440517)\n\t\t + W(1, -1133949626, -1118082277, -1108803021, -1111921110)\n\t\t + W(2, 1050882798, 1053008345, 1038634079, -1120535059)\n\t\t + W(3, 1018623990, -1094507016, -1106873963, -1104818073)\n\t\t + W(4, -1106924392, 1052481994, -1087778738, 1046575523)\n\t\t + W(5, -1146454049, 1043504665, -1101591143, 1041667424)\n\t\t + W(6, -1116987117, 1047635255, -1101174683, 1031519031)\n\t\t + W(7, 1040905769, 1026870489, -1110197734, 1031554658);\n\tsum2 =\n\t\tW(0, -1116556974, 1059176005, -1096412953, -1114011261) + W(1, -1095066961, 1038856572, 1050790436, -1173649795)\n\t\t+ W(2, -1100395256, -1076691076, 1058179896, 1024138419) + W(3, 1050308919, 1055715442, -1097771226, 1040413046)\n\t\t+ W(4, 1040792410, 1046498927, 1039711359, -1106323994) + W(5, 1032406727, -1123959066, -1106160519, 1033840078)\n\t\t+ W(6, 1011901446, 1028959950, 1018212767, -1127468978)\n\t\t+ W(7, -1141998384, 1032868606, 1038360912, -1107910389);\n\tWS(1060842367, -1123947436);\n\tsum1 =\n\t\tW(0, 1024730985, 1048950736, -1097448124, -1122548355) + W(1, 1023159627, 1047784339, -1098772880, 1026072115)\n\t\t+ W(2, -1105241169, 1057388094, -1087773444, 1037590622) + W(3, 1017803651, 1060112037, -1085451727, 1037652837)\n\t\t+ W(4, 1037913699, 1062491953, -1088044111, 1034810634) + W(5, 1035962309, 1057656339, -1089872870, 1033785172)\n\t\t+ W(6, 1028045772, -1114528913, -1102522557, 1008900343)\n\t\t+ W(7, 1032728670, 997860858, -1103124285, -1114288296);\n\tsum2 = W(0, 1026131421, 1001103237, -1133854939, -1114822986)\n\t\t + W(1, -1112740722, -1121600279, 1038637096, -1108393699)\n\t\t + W(2, 1046858645, -1108221277, 1037424280, 1029862733)\n\t\t + W(3, 1032928238, -1097923247, -1103185020, -1101308237)\n\t\t + W(4, 1042166107, 1069212508, -1120290433, 1036213344) + W(5, 1040344552, 1057336110, 1019342369, -1145606165)\n\t\t + W(6, -1082879617, -1095628134, 1039461314, -1111520861)\n\t\t + W(7, -1091819295, -1107037379, -1122429445, 1034167562);\n\tWS(1038606587, 1058047160);\n\tsum1 =\n\t\tW(0, 1026865207, -1095018974, 1044423619, -1136300775) + W(1, 1042118304, -1093024127, 1048945010, -1117800769)\n\t\t+ W(2, 1051307036, -1082724754, 1054092644, 1005722288) + W(3, 1033639368, -1100730470, -1097872036, 1044405134)\n\t\t+ W(4, 1046742309, 1036658562, -1091674216, 1047528601) + W(5, -1109598961, 1040951763, 1033100505, 1044812414)\n\t\t+ W(6, 1028927539, -1113143704, 1030352835, 1032954286) + W(7, 1015037525, -1098528366, 1047837568, 1044220906);\n\tsum2 = W(0, 1050657429, 1045860939, -1111592920, -1103122208)\n\t\t + W(1, -1103301852, 1052242374, 1013554208, -1106328874)\n\t\t + W(2, 1060573163, -1100974944, -1111727364, 1015168980)\n\t\t + W(3, -1091436731, 1066745360, 1055083328, -1113723980)\n\t\t + W(4, -1104427284, -1079344782, -1098647652, 1051192034)\n\t\t + W(5, -1097267636, -1113016512, 1034990326, 1034643320)\n\t\t + W(6, 1038196249, -1119497008, -1110499846, -1122594772)\n\t\t + W(7, -1107511544, -1113648424, 1042188938, -1140986496);\n\tWS(-1095257599, 1052962039);\n\tsum1 =\n\t\tW(0, -1106746181, -1097695335, 1053309708, 1036635571) + W(1, 1031300369, -1111219488, 1042046133, 1032102291)\n\t\t+ W(2, 1046667354, -1083536631, 1060606673, -1110849586)\n\t\t+ W(3, 1037361867, -1088861218, 1053570633, -1103814096)\n\t\t+ W(4, 1040829967, -1107201338, -1101583222, -1130665360)\n\t\t+ W(5, -1128966365, -1115618056, 1033575580, 1023220920) + W(6, 1034540700, -1117058422, 1029127944, 1009452933)\n\t\t+ W(7, -1115420664, -1138753100, 1041019129, 1041468947);\n\tsum2 = W(0, -1137205193, -1089705070, -1116057142, -1106134583)\n\t\t + W(1, -1121249932, 1025195792, 1014073009, -1131583764)\n\t\t + W(2, -1137006201, 1049206515, 1040872535, 1023734245) + W(3, -1101149788, 1054529493, 1044729510, 1030258377)\n\t\t + W(4, 1034796937, 1039074115, 1024555690, 1045578999) + W(5, -1115985020, 1050074620, -1108168105, 1041497164)\n\t\t + W(6, -1140489533, -1104546681, -1105229574, -1131316168)\n\t\t + W(7, 1026538132, -1103055048, -1093226929, 1036128894);\n\tWS(1058062751, -1100017341);\n\tsum1 =\n\t\tW(0, -1129599006, 1055064995, -1094744478, -1110864465) + W(1, 1020928695, 1054737968, -1108714620, 1035506764)\n\t\t+ W(2, -1098371705, 1061839865, -1089137095, -1103907470)\n\t\t+ W(3, -1111175932, 1057524464, -1081607655, -1115102560)\n\t\t+ W(4, -1108928286, 1062722401, -1111400813, 1038105413)\n\t\t+ W(5, -1108487635, 1039434185, -1089739654, -1103382940) + W(6, 1028685770, 1053936411, 1037008853, 1038153674)\n\t\t+ W(7, -1134533769, 1054765971, -1094983833, -1101904010);\n\tsum2 =\n\t\tW(0, 1046625968, 1034733544, -1147999170, 1026537136) + W(1, -1114205611, -1100522159, -1093312378, -1103988998)\n\t\t+ W(2, -1097342682, 1034693600, 1057288295, 1049229753) + W(3, -1079666171, 1066071967, 1059803421, -1114956972)\n\t\t+ W(4, 1041595755, -1087077400, -1088579916, -1104980683) + W(5, 977545170, 1062799024, 1057064650, 1050850828)\n\t\t+ W(6, -1106070846, -1097179722, -1086854504, 997711860)\n\t\t+ W(7, -1145403458, 1015933409, 1055355590, -1115357129);\n\tWS(1033636603, -1075190676);\n\tsum1 = W(0, 1030520392, 1051253486, -1096251285, -1117233131)\n\t\t + W(1, -1125697208, 1043969999, -1100430004, -1122877346)\n\t\t + W(2, -1114269946, 1058583983, -1085953223, 1036037681)\n\t\t + W(3, -1109653337, 1064791929, -1093290764, -1109909101)\n\t\t + W(4, -1102211630, 1057642082, -1088005167, -1123582788)\n\t\t + W(5, 1032435172, 1055881859, -1098086422, 1029223000)\n\t\t + W(6, -1120127764, 1033241689, -1102333361, -1125435099)\n\t\t + W(7, 996293820, 1053053914, -1119839106, -1103406294);\n\tsum2 =\n\t\tW(0, -1120200303, -1113787644, -1109535466, 1041916719) + W(1, 1024626781, 1041562727, -1106166077, 1028143351)\n\t\t+ W(2, 1013431061, -1114475538, 1029531851, -1097688999)\n\t\t+ W(3, -1124733431, -1112371618, 1051805575, 1068535590) + W(4, 1027814217, 1032748777, 1061661699, 1074776935)\n\t\t+ W(5, 999438554, -1098117165, -1114245048, 1029048009) + W(6, -1116912567, 1042886038, 1039886302, -1076933565)\n\t\t+ W(7, 1007930813, -1140542509, -1093997696, -1072079702);\n\tWS(1051996799, 1040628126);\n\tsum1 =\n\t\tW(0, -1106876926, -1096999331, 1064227732, 1032518006) + W(1, 1042171100, -1106536569, 1056769919, -1132737450)\n\t\t+ W(2, 1014013938, -1087433914, 1057736892, -1121739327) + W(3, 1040804174, -1079279688, 1052514885, 1035728257)\n\t\t+ W(4, 1038633599, -1085040172, 1059334684, -1115112214)\n\t\t+ W(5, 1024260165, -1090750082, 1058371760, -1126170017)\n\t\t+ W(6, 1032103150, -1096245875, 1051111478, -1129820331)\n\t\t+ W(7, -1111941370, -1091794355, 1050507101, 1036168684);\n\tsum2 = W(0, -1097197656, -1105938617, -1063141508, 1047663602)\n\t\t + W(1, 1040517176, -1119182790, -1072247475, -1106333570)\n\t\t + W(2, -1107105879, 1048788314, 1073986693, 1017343300) + W(3, 1050425804, 1048225474, 1082212097, 1014706728)\n\t\t + W(4, -1108102513, 1050055380, 1063649950, 1023560998)\n\t\t + W(5, 1044838414, -1097162220, -1108483496, -1105252179)\n\t\t + W(6, 1026907274, 1028263310, 1040597170, 1016727612) + W(7, 978890108, 1043193320, -1096883524, 1025416282);\n\tWS(-1079662656, 1075711984);\n\tsum1 = W(0, -1136749190, 1054381451, -1099895821, -1111920714)\n\t\t + W(1, -1108214827, 1049467004, -1104318006, -1124862997)\n\t\t + W(2, -1112256994, 1060357369, -1094055613, -1099490085)\n\t\t + W(3, -1102094902, 1064079536, -1088977984, -1093653775)\n\t\t + W(4, 1019461885, 1058102849, -1094018397, 1047054555)\n\t\t + W(5, -1113236619, 1050217386, -1093377643, 1026036560)\n\t\t + W(6, -1115387518, 1046694646, -1102869707, -1122648846)\n\t\t + W(7, 1015637672, 1053154499, -1097489705, -1117787456);\n\tsum2 =\n\t\tW(0, 1021596406, -1120307380, 1037868882, -1094559059) + W(1, 1027700788, 1049653321, 1038499992, -1099826066)\n\t\t+ W(2, 1031902674, -1100871897, 1074972319, -1070411479) + W(3, 1035450862, 1054975194, 1073269037, -1076192259)\n\t\t+ W(4, -1146279384, -1106853601, 992333684, 1024067187) + W(5, 1036068426, 1042197470, 1032586692, -1107184127)\n\t\t+ W(6, -1108044351, 1034125536, -1129244749, 1032061183)\n\t\t+ W(7, 1030087008, -1133477273, 1010404410, -1104237818);\n\tWS(-1121360374, -1077155152);\n\tsum1 = W(0, -1105583845, -1092428892, 1053987635, 1036329976)\n\t\t + W(1, 1042009047, -1091586093, 1057449542, 1039912928)\n\t\t + W(2, -1135496901, -1087526962, 1037542524, -1114441548)\n\t\t + W(3, 1057317824, -1088356100, 1067018703, 1035631092) + W(4, 1037107234, -1084718223, 1053143538, 1024846769)\n\t\t + W(5, 1028773828, -1086275726, 1051794540, 1020991498) + W(6, 1042777544, -1096882940, 1049337758, 1032759069)\n\t\t + W(7, -1116736729, -1086839898, 1050512766, 1041911145);\n\tsum2 = W(0, -1122349048, -1108922684, -1102817435, 1024154790)\n\t\t + W(1, 1027223630, 1050237475, 1047134367, -1105600910)\n\t\t + W(2, -1123059666, -1093984844, -1086242189, 1041276041)\n\t\t + W(3, -1097496437, 1061603028, 1069845393, -1090292072)\n\t\t + W(4, -1101147358, 1054912466, -1091188340, -1122818012)\n\t\t + W(5, 1008041239, -1136134543, -1107987422, -1109079234)\n\t\t + W(6, -1113710228, 1050990810, -1126348732, 1047206075)\n\t\t + W(7, -1103013196, 1037079763, -1097181289, -1109791787);\n\tWS(-1087087711, 1067831143);\n\tsum1 =\n\t\tW(0, 1034272753, -1110686621, 1034360523, 1006467012) + W(1, 1043354114, -1094089577, 1051348739, -1097882829)\n\t\t+ W(2, 1046815315, -1090322161, 1056352764, -1098171061) + W(3, 1041026663, 1019000899, 1049291409, -1099191041)\n\t\t+ W(4, -1116058688, 1048378971, -1098372646, 1036956791)\n\t\t+ W(5, -1131457456, 1054466495, -1090870248, 1036945505)\n\t\t+ W(6, -1115558139, 1045446607, -1103803571, -1124941614)\n\t\t+ W(7, 1032034947, 1043401342, -1098529593, 1026141794);\n\tsum2 = W(0, 1046033632, -1147554302, 1021728539, 1034466187)\n\t\t + W(1, -1114282503, 1065651536, 1061103542, -1117467216) + W(2, 1044655964, 1052996561, 1047372498, 1040544990)\n\t\t + W(3, -1106001859, -1076523823, -1081697027, -1105745303)\n\t\t + W(4, -1104436397, -1095873418, -1094800655, -1119054372)\n\t\t + W(5, -1101664028, 1059971501, 1058036758, -1110996319)\n\t\t + W(6, 1015764662, 1037179306, -1113369666, -1120190386)\n\t\t + W(7, 1023732858, -1119149512, 1033040332, 1028498617);\n\tWS(1040537598, -1164677141);\n\tsum1 = W(0, 1044447583, 1058921623, -1079854668, 1051360885) + W(1, 987031402, 1052904912, -1089009751, 1009017491)\n\t\t + W(2, -1121775302, 1059494147, -1082135643, 1049103971)\n\t\t + W(3, 1042738997, 1059765434, -1085199868, 1042102879) + W(4, 1038434732, 1053249925, -1087718171, 1037325507)\n\t\t + W(5, 1049696256, 1045203303, -1094593271, 1033340813) + W(6, 1024826006, 1049549231, -1098502833, 1040792940)\n\t\t + W(7, 1044766000, 1032179929, -1111725730, -1103499809);\n\tsum2 = W(0, -1105450770, -1076904032, 1034745372, 1064235564)\n\t\t + W(1, -1099930216, -1110661913, -1104228342, -1133206564)\n\t\t + W(2, -1087670985, 1054929191, 1055270313, -1159337186)\n\t\t + W(3, -1097641768, 1067640588, 1058849806, -1095527236)\n\t\t + W(4, -1093727900, 1043325457, 1055379319, -1097371942)\n\t\t + W(5, 1034849198, 1041628489, 1047258529, -1123329564)\n\t\t + W(6, -1089823109, 1024934811, -1091022953, 1053074558)\n\t\t + W(7, 1026936119, 1071055811, -1093861556, -1079977593);\n\tWS(-1072228928, 1076959210);\n\tsum1 = W(0, 1049440860, -1102211417, 1052420434, 1046258910)\n\t\t + W(1, -1100954468, -1090494943, 1049042513, -1094165323)\n\t\t + W(2, 1040518102, -1089397123, 1057628335, -1113742940)\n\t\t + W(3, 1055014377, -1085929645, 1059399711, -1115570152)\n\t\t + W(4, -1102413547, -1092416799, 1055649007, -1095616949)\n\t\t + W(5, 1056933930, -1103710088, 1056457065, 1054320058)\n\t\t + W(6, -1100924366, -1099959722, 1043274798, -1096288332)\n\t\t + W(7, 1025160513, -1097219837, 1043339918, -1113497047);\n\tsum2 =\n\t\tW(0, 1037249746, -1091193116, 1058952598, -1099278743) + W(1, -1106259401, 1057292562, -1089499743, 1035766214)\n\t\t+ W(2, -1118512137, 1045032769, 990544085, -1120311473) + W(3, 1033553146, -1101074553, 1052938455, -1107284433)\n\t\t+ W(4, -1118437421, 1047290760, -1096914685, 1032001159)\n\t\t+ W(5, 1049532353, -1085599381, 1060306657, -1105441959)\n\t\t+ W(6, -1112295163, 1045403080, -1095081062, 1037527897)\n\t\t+ W(7, -1112769969, 1036239865, 1036770528, -1117837555);\n\tWS(-1095248895, -1088416713);\n\tsum1 = W(0, 991086878, -1112623265, 1049658160, 1025280780) + W(1, 1041397006, 1023033498, -1129854724, 1018002536)\n\t\t + W(2, -1100414321, -1095527100, 1056723856, -1101036339)\n\t\t + W(3, -1106522737, -1085500137, 1061179113, -1098081679)\n\t\t + W(4, 1032194452, -1103431285, 1050067968, -1121954805)\n\t\t + W(5, 1040515607, -1093888960, 1055178889, 1040437430)\n\t\t + W(6, -1113785099, 1025813699, 1027165141, -1107604207)\n\t\t + W(7, -1119710941, -1112974208, 1044420741, -1122583614);\n\tsum2 = W(0, -1115281709, 1049351198, -1101546004, -1132663474)\n\t\t + W(1, 1038308115, -1105447726, 1044927538, 1036918381)\n\t\t + W(2, -1086190321, 1061131477, -1105825160, -1104633062)\n\t\t + W(3, -1079410563, 1070791012, -1124003323, 1035199903)\n\t\t + W(4, 1055352031, -1080774986, 1054621998, -1119052371)\n\t\t + W(5, -1106071111, 1050939464, -1100497740, 1038597174)\n\t\t + W(6, 1042421121, -1096576742, 1042910101, -1126972585)\n\t\t + W(7, 999244165, 1021655353, -1123561791, -1141223925);\n\tWS(1057802399, -1081431823);\n\tsum1 = W(0, -1122831751, -1093480916, 1050038833, 1031929377)\n\t\t + W(1, -1131892376, -1097592621, 1050095280, 1003466633)\n\t\t + W(2, 1041203877, -1087992005, 1058335651, -1150646211)\n\t\t + W(3, 1034931072, -1086955360, 1062569267, -1108251076)\n\t\t + W(4, 1020249162, -1094219074, 1052617634, -1123920403)\n\t\t + W(5, 1023514439, -1099624791, 1053253320, -1110979235)\n\t\t + W(6, -1183605377, -1104094712, 1037479577, 1022403704)\n\t\t + W(7, -1102408215, -1103351679, 1047799764, 1031403703);\n\tsum2 = W(0, -1104748298, 1032567526, 1030425414, 1028805714) + W(1, 1035677532, 1015597088, -1106402955, 1010146816)\n\t\t + W(2, -1097271446, 1042180726, 1036072793, -1122721452)\n\t\t + W(3, -1071563129, -1131466492, 1026492053, -1139412188)\n\t\t + W(4, -1073203825, -1088097679, 1021201077, -1121571686)\n\t\t + W(5, -1105574565, 1049167232, 1046304011, 1013464552)\n\t\t + W(6, 1074066983, -1104411749, -1108010622, -1115684312)\n\t\t + W(7, 1076846054, 1054919113, 1040423027, -1159010626);\n\tWS(1057159391, -1098185256);\n\tsum1 =\n\t\tW(0, -1115997840, 1062337777, -1099145229, -1108105457) + W(1, -1139848194, 1059107990, -1096884471, 1026934458)\n\t\t+ W(2, -1110900998, 1058844902, -1083284577, -1128707950)\n\t\t+ W(3, 1040272534, 1060188982, -1081840204, 1050661700) + W(4, -1124007614, 1050305613, -1086268415, 1025671020)\n\t\t+ W(5, 1022311680, 1055455830, -1088086212, 1018441343) + W(6, -1122049771, 1052112283, -1093503993, 1032949738)\n\t\t+ W(7, 1025640163, 1058488623, -1095187909, -1115150240);\n\tsum2 =\n\t\tW(0, 1056249112, -1063663228, -1090194820, -1098679170) + W(1, -1087901783, -1065703489, 1049313091, 1049727089)\n\t\t+ W(2, 1050240307, 1050922399, 1059446328, -1118968312) + W(3, -1096100666, 1074103439, -1091782161, 1043947681)\n\t\t+ W(4, 1050011361, 1078895155, 1051412884, -1103451878) + W(5, 1046757851, 1075028289, 999915799, 1046896549)\n\t\t+ W(6, -1111613200, 1011769164, -1097222567, 1036070334)\n\t\t+ W(7, 1031802636, 1041242105, 1040180956, -1120669738);\n\tWS(-1076050352, 1072169512);\n\tsum1 =\n\t\tW(0, -1112010473, -1127017300, 1032805651, -1127012698) + W(1, -1110549812, -1096217239, 1055039585, 1017026201)\n\t\t+ W(2, 1041474168, -1101316183, -1107675851, 1027743346)\n\t\t+ W(3, -1102358403, -1098236010, 1058693100, -1103052317)\n\t\t+ W(4, 1035256808, -1097462672, 1050718238, 1025923518) + W(5, -1103941101, 1015309803, 1047069339, -1108585145)\n\t\t+ W(6, -1126807163, -1109990262, 1040782175, 1029935559)\n\t\t+ W(7, -1127729580, -1124828306, 1033573870, 1030091394);\n\tsum2 =\n\t\tW(0, -1115222730, 1013406324, 1048651312, -1105744683) + W(1, -1103808603, 1044516259, -1091636530, 1036643390)\n\t\t+ W(2, -1133607278, 1056099238, -1082257366, 1056116581)\n\t\t+ W(3, 1035011293, -1093760521, 1065398243, -1087652578)\n\t\t+ W(4, 1045426354, -1097063741, 1052543946, -1106429625) + W(5, 1005150868, 1046105407, -1105190986, 1031045850)\n\t\t+ W(6, 1038138903, -1106358807, -1143243436, -1129675875)\n\t\t+ W(7, 1014354189, 1034790704, -1124610775, 1033997397);\n\tWS(1065781680, 1039008007);\n\tsum1 =\n\t\tW(0, 1041247860, 1052873269, -1087848896, -1122380132) + W(1, -1132228043, 1052030887, -1090939837, 1043969975)\n\t\t+ W(2, -1116017645, 1057769989, -1086321043, -1167945460)\n\t\t+ W(3, 1029031978, 1065817909, -1090130600, 1043124941) + W(4, -1114552992, 1059292430, -1093123180, 1037414446)\n\t\t+ W(5, 1018467582, 1052683781, -1089813139, 1037105136) + W(6, -1119698444, 1045381867, -1093950448, 1016187596)\n\t\t+ W(7, 1039500994, 1042767258, -1088918334, -1139723011);\n\tsum2 = W(0, 1038177586, -1105284792, -1114385091, 1023745983)\n\t\t + W(1, 1024852101, -1131141686, -1105200928, 1044997454)\n\t\t + W(2, 1031995320, -1123455081, 1057384109, -1102654886) + W(3, 1016571646, 999573799, 1073904332, 1045931554)\n\t\t + W(4, 1033741319, -1107419527, 1075963065, -1113399825)\n\t\t + W(5, -1108656521, 1052574782, -1130292726, 1041285787)\n\t\t + W(6, 1035134998, -1099142208, -1072886122, -1101763500)\n\t\t + W(7, -1120710323, -1103717942, -1070457563, 1044467987);\n\tWS(-1090516543, -1087531312);\n\tsum1 = W(0, -1105337757, 1040358473, 1026287071, -1112133319)\n\t\t + W(1, -1135375282, 1025750638, -1109155234, 1043065477)\n\t\t + W(2, -1113059195, 1034124454, -1111070925, 1049735832)\n\t\t + W(3, -1111479074, -1082649657, -1113637434, 1048811350)\n\t\t + W(4, 1044282546, -1098312091, 1056333811, -1104740686)\n\t\t + W(5, 1036163039, -1114570479, 1044131649, -1111303053)\n\t\t + W(6, -1123738614, -1112260786, 1049914271, -1128712224)\n\t\t + W(7, -1110047807, 1044483760, 1039433994, -1136462731);\n\tsum2 = W(0, -1122757257, 1027164873, 1002742314, -1111953049)\n\t\t + W(1, 1009904581, -1112829049, -1115430893, -1116391321)\n\t\t + W(2, -1113467627, 1020364514, -1098221748, 1025748661)\n\t\t + W(3, -1099518373, 1064179702, 1059311413, -1098741962)\n\t\t + W(4, 1032421699, -1092934445, -1139891301, 1036551469)\n\t\t + W(5, -1095677862, 1039050377, 1041708988, -1119491053)\n\t\t + W(6, 1020800146, -1106885375, -1124766450, 1025848261)\n\t\t + W(7, -1112743661, 1022655162, 1032689603, -1122814953);\n\tWS(1059528063, 1057564569);\n\tsum1 = W(0, 993737087, -1096201122, 1052073475, 1036364765) + W(1, 1023855952, -1112481934, 1044928820, -1119101474)\n\t\t + W(2, 1051519336, -1089271861, 1057871347, 1026047377)\n\t\t + W(3, -1100822612, -1101379550, -1090210244, -1095066725)\n\t\t + W(4, 1027584566, -1129312776, 1027452795, 1043887545)\n\t\t + W(5, -1109486813, -1101173547, 1051680014, 1038809676)\n\t\t + W(6, -1127107174, 1031993577, 1038521522, -1152581582)\n\t\t + W(7, 1035631854, -1097162722, 1050823828, 1037595092);\n\tsum2 =\n\t\tW(0, -1106514375, -1115270098, 1025588625, -1109616345) + W(1, 1034094594, 1029678117, -1103891997, 1044342701)\n\t\t+ W(2, -1112949179, -1095879627, 1029083209, -1107320484)\n\t\t+ W(3, 1009317700, 1052560633, 1062070608, -1103446924)\n\t\t+ W(4, -1126355148, -1128108776, -1100067512, -1131810302)\n\t\t+ W(5, 1021633582, 1034084538, 1035054672, -1098743078) + W(6, 1010987268, 1040297892, -1117785257, -1123491293)\n\t\t+ W(7, -1106252693, 1049223604, 990783407, -1102218346);\n\tWS(1061977215, -1122204685);\n\tsum1 =\n\t\tW(0, -1124031333, 1053794732, -1090279300, 1017895407) + W(1, -1109554099, 1053305789, -1096176108, 1027213295)\n\t\t+ W(2, -1105250724, 1058003360, -1093816822, 1024566052) + W(3, 1036027519, 1059361796, -1081723655, 1033714163)\n\t\t+ W(4, 959521497, 1055117810, -1090510080, -1125004641) + W(5, 1055353398, 1051669497, -1097892492, 1006220452)\n\t\t+ W(6, 1038275624, 1037705519, -1101480172, -1112881733)\n\t\t+ W(7, -1136942561, 1047158647, -1098784634, -1145512357);\n\tsum2 = W(0, -1113155109, 1028856727, 993552399, 1036996819) + W(1, 1032430477, 1021325630, -1128331832, -1139715524)\n\t\t + W(2, -1105712018, 1050891972, 1042508384, -1111526035) + W(3, 1048044904, 1070862297, 1042132916, 1040898786)\n\t\t + W(4, -1081128362, 1074403261, 1044319918, 1025048067)\n\t\t + W(5, -1070110178, 1035516985, -1115800491, 1038841221)\n\t\t + W(6, -1092435520, -1108990845, 1033559089, -1119663830)\n\t\t + W(7, -1092804751, -1122256510, -1109033129, 1007165668);\n\tWS(-1096328959, 1070879408);\n\tsum1 = W(0, 1047483149, 1056909741, -1084253114, 1043610432)\n\t\t + W(1, -1131726569, 1050717891, -1097194674, -1120381614)\n\t\t + W(2, 1017405984, 1049879450, -1084428714, 1029856307) + W(3, 1016192218, 1064784543, -1088019878, 1046790989)\n\t\t + W(4, -1134185032, 1054175424, -1087922381, 1044095416)\n\t\t + W(5, -1130210629, 1055866677, -1096076442, -1106891777)\n\t\t + W(6, 1039283496, 1052923070, -1098682228, 1045347898)\n\t\t + W(7, 1022798351, 1050331269, -1089646420, -1103492015);\n\tsum2 =\n\t\tW(0, -1096731787, -1092572599, -1072213302, 1074300082) + W(1, 1041094096, -1083918511, -1081783724, 1061218424)\n\t\t+ W(2, 1030029833, -1081752188, -1088492050, 1062246408)\n\t\t+ W(3, -1134738767, 1050600846, -1098909280, 1055931246) + W(4, -1112066554, 1060518769, 1054813136, 1030722387)\n\t\t+ W(5, 1049526473, 1056806956, 1066457366, -1080408758) + W(6, -1103571503, 1052566197, 1061557517, -1082314750)\n\t\t+ W(7, 1038503381, 1040255570, 1074348460, -1074863778);\n\tWS(-1093955647, 1022010191);\n\tsum1 =\n\t\tW(0, 1027472455, 1051129150, -1126583382, -1110971745) + W(1, -1118029508, 1040858863, -1110637352, -1129027011)\n\t\t+ W(2, 1017520774, 1058284788, -1083829535, 1043546956) + W(3, -1100976252, 1064764899, -1092969620, 1032062845)\n\t\t+ W(4, 1048038797, -1094249656, -1093269900, 1049944248)\n\t\t+ W(5, 1019653215, 1054989120, -1098669306, -1114080636)\n\t\t+ W(6, 1015004427, -1137681219, -1101321193, 1039113958)\n\t\t+ W(7, 1006149335, 1047833420, -1092663640, -1120661351);\n\tsum2 =\n\t\tW(0, -1125700855, -1109340305, 1041739108, -1138307987) + W(1, 1010923567, -1099241242, -1121076246, 1010348245)\n\t\t+ W(2, -1097524591, -1097784845, -1122648580, 1043843262)\n\t\t+ W(3, -1086770251, 1061340682, 1059475190, -1104554020)\n\t\t+ W(4, -1119687254, -1091236020, -1097965354, 1042867821)\n\t\t+ W(5, -1136610695, 1059369820, 1048517727, -1105357691) + W(6, 1034141799, -1103210716, 1020884025, 1021404807)\n\t\t+ W(7, -1146172877, 1042204527, -1117941982, 1026766467);\n\tWS(1057685119, 1067243116);\n\tsum1 =\n\t\tW(0, -1129459555, -1098308652, 1053516928, 1029422892) + W(1, 1016923756, -1100618635, 1049587364, -1111775882)\n\t\t+ W(2, 1004671913, -1090418529, 1057639529, -1114348966)\n\t\t+ W(3, -1095493364, -1088191051, 1065512192, -1112549294)\n\t\t+ W(4, -1098633785, -1089905135, 1058720438, -1103551521)\n\t\t+ W(5, -1112175056, -1101363479, 1052631981, -1111153757) + W(6, 1046138501, -1106099897, 1043712557, 995391206)\n\t\t+ W(7, -1131471418, -1097291652, 1052947846, 1020473821);\n\tsum2 = W(0, -1131225411, -1140292462, 1018110051, 1018006973)\n\t\t + W(1, -1130956898, 1023877693, -1137158572, -1128428036)\n\t\t + W(2, -1103681442, 1042914798, -1224504659, 1020723155)\n\t\t + W(3, -1077027280, 1069127322, 1043315619, -1147115303)\n\t\t + W(4, -1076028808, 1071847872, -1120948958, 1020554514)\n\t\t + W(5, 1031803188, -1103125793, 1043270022, -1133954299)\n\t\t + W(6, -1101294062, 1043076855, -1113817590, 990350747) + W(7, 949706042, -1132087796, 1015417250, 1025989218);\n\tWS(-1097928959, -1082976358);\n\tsum1 =\n\t\tW(0, 1027664520, 1057835343, -1089326063, -1108038941) + W(1, -1123678010, 1050550727, -1096462854, 1032858337)\n\t\t+ W(2, -1106569905, 1057764410, -1083721351, 1021803093) + W(3, 1052451146, 1062299789, -1087127986, 1042469806)\n\t\t+ W(4, -1103556709, 1049034640, -1097735566, -1104920125)\n\t\t+ W(5, 1038567635, 1057826487, -1094118206, 1031016631)\n\t\t+ W(6, -1108799690, 1041175724, -1100805265, -1129264698)\n\t\t+ W(7, 1040222651, 1060823717, -1089053734, -1107162784);\n\tsum2 = W(0, 1059738223, -1087082495, -1092378156, 1034470847)\n\t\t + W(1, 1048150071, -1095900368, 1046247330, 1025055065) + W(2, 1052511773, -1108343021, 1033545850, 1045395587)\n\t\t + W(3, -1080186607, 1063110279, -1090059649, -1094453880)\n\t\t + W(4, -1078381471, 1074904245, -1107095292, 1053230483)\n\t\t + W(5, -1072132845, 1071639576, 1039712953, -1103894182)\n\t\t + W(6, -1071450961, 1076364217, -1113577164, 1032308634)\n\t\t + W(7, -1071397334, 1077341373, 1049211915, -1120241798);\n\tWS(-1093482751, 1040242403);\n\tsum1 = W(0, -1101135214, 1051279307, -1160860306, -1112732162)\n\t\t + W(1, -1123956286, 1045008905, -1106067054, -1135242283)\n\t\t + W(2, -1107524598, 1049489177, -1101021318, 1029341500)\n\t\t + W(3, -1138012647, -1132973569, -1113266773, -1121978915)\n\t\t + W(4, 1034129455, -1096848358, 1049504725, -1098727290)\n\t\t + W(5, 1042720691, -1098383795, 1059206814, -1102892456)\n\t\t + W(6, -1130324184, -1104810279, 1049756222, -1104163113)\n\t\t + W(7, 998898338, -1118268600, 1052043149, -1099073308);\n\tsum2 = W(0, 1050603120, 1055811875, -1086548128, 1034695967)\n\t\t + W(1, -1101078445, -1122671355, -1087609936, -1108269543)\n\t\t + W(2, 1048531671, 1038805789, -1088336312, -1089139562)\n\t\t + W(3, -1105220793, 1066111209, 1071017234, -1104320030)\n\t\t + W(4, -1091713187, 1026095418, -1115602704, -1100901763)\n\t\t + W(5, 1034851673, -1130092003, -1089969509, 1049804877)\n\t\t + W(6, -1122031169, -1137910742, -1121274059, -1103744367)\n\t\t + W(7, 1020293663, -1094690648, 1053616941, 1054827086);\n\tWS(-1112146683, -1077736475);\n\tsum1 = W(0, -1128590341, -1099064529, 1049253908, 1039097715)\n\t\t + W(1, -1130792414, -1090490649, 1028859267, 1017948777)\n\t\t + W(2, -1147973299, -1086623314, 1040872136, 1025770233)\n\t\t + W(3, -1117834531, -1101063739, 1068918685, -1115616742)\n\t\t + W(4, 1007065251, -1084449173, 1059458719, -1104116690)\n\t\t + W(5, 1033724609, -1094725676, 1057886934, -1132647657) + W(6, 1024083798, -1097837640, 1044653558, 998082042)\n\t\t + W(7, -1122914526, -1097461352, 1048946351, 1030833130);\n\tsum2 =\n\t\tW(0, 1038545045, 1044965772, 1038508364, 1032278560) + W(1, -1104316542, -1073797636, -1092377302, -1115941315)\n\t\t+ W(2, -1098913527, -1069601753, 1050236814, -1109127211) + W(3, 1054073276, 1079919017, 1044931722, 1042591612)\n\t\t+ W(4, 990615436, 1065620582, 1034922622, 997021068) + W(5, -1111960943, -1103381017, 1033398315, 1042220416)\n\t\t+ W(6, -1127436605, 1039512539, -1113162193, -1138197651)\n\t\t+ W(7, -1131799749, -1105195767, 1039327537, -1121388557);\n\tWS(-1090505151, -1074550453);\n\tsum1 = W(0, -1112838599, -1106878250, 1057615003, -1131143051)\n\t\t + W(1, 1028498739, -1103427629, 1042960070, 1023192930)\n\t\t + W(2, 1023419227, -1088602192, 1063645564, -1096958907)\n\t\t + W(3, -1117182312, -1088941275, 1053033883, 1048242260)\n\t\t + W(4, 1018948122, -1087514842, 1058641540, -1098164287)\n\t\t + W(5, -1126145258, -1096920942, 1043052986, 1045189988)\n\t\t + W(6, 1024711581, -1096615233, 1050742275, -1105551137)\n\t\t + W(7, -1125422420, -1095073209, 1053972531, 1026824959);\n\tsum2 = W(0, 1051549752, 1021553919, -1106404197, 1031994963)\n\t\t + W(1, 1081443218, -1111116920, 1044837835, -1113046369)\n\t\t + W(2, 1072492444, -1073777225, -1113676512, 1032624041)\n\t\t + W(3, 1048388769, -1067599847, -1089379201, 1025956540)\n\t\t + W(4, 1035162847, -1096587672, -1109546151, 1027498280)\n\t\t + W(5, -1139079606, 1029232562, 1030543674, -1132168419)\n\t\t + W(6, -1121149576, -1115288719, -1122606689, 1034044071)\n\t\t + W(7, -1123800689, 1042218632, -1125599605, -1115044631);\n\tWS(1051119487, 1041244378);\n\tsum1 = W(0, -1124974044, -1137238551, -1116593698, -1121323393)\n\t\t + W(1, 1028120435, -1113671305, -1103177170, 1033078132)\n\t\t + W(2, 1048876359, 1036964902, -1099611151, -1156053771)\n\t\t + W(3, 1037118035, 1061504071, -1104164974, -1129960608)\n\t\t + W(4, -1131477080, 1047204942, -1081804989, 1048068278)\n\t\t + W(5, -1118427428, 1050660570, -1114906180, 1011539382)\n\t\t + W(6, -1120234265, 1030267847, -1098831475, 1035846233)\n\t\t + W(7, -1125985859, 1049717597, -1103929310, -1115091743);\n\tsum2 = W(0, 1018090488, 1027537220, 1019973834, -1117503915)\n\t\t + W(1, -1104952272, 1048078363, -1095697091, 1045164128)\n\t\t + W(2, -1105226064, 1055192952, -1101823824, -1106818318)\n\t\t + W(3, -1128161694, -1102612387, 1074095781, -1087428157)\n\t\t + W(4, -1134153828, -1102761937, -1074759173, 1061969021)\n\t\t + W(5, 1024328280, -1101688104, 1063478353, -1092430375)\n\t\t + W(6, -1118410723, 1035228556, -1092594125, 1050476000)\n\t\t + W(7, -1117225997, 1016223417, 1041310640, -1110796930);\n\tWS(1062303263, 1031082743);\n\tsum1 =\n\t\tW(0, -1113216195, 1050954912, -1095964628, -1121789260) + W(1, -1099215391, 1012178225, -1095180416, 1027015379)\n\t\t+ W(2, 1052151297, 1065129152, -1088785601, 1041954507) + W(3, 1026092610, 1047492794, -1089641431, -1107401421)\n\t\t+ W(4, 1051942565, 1063700475, -1089295544, 1049634587)\n\t\t+ W(5, -1098039588, 1049517720, -1091476104, -1112964196)\n\t\t+ W(6, -1101893697, 1028060738, -1102410709, 1035520455)\n\t\t+ W(7, 1008063218, 1054989200, -1096414030, -1114231491);\n\tsum2 = W(0, 1033145987, -1175661064, 1021827842, -1165845202)\n\t\t + W(1, -1111827051, -1152013649, -1104895942, -1187919119)\n\t\t + W(2, -1103256184, 1050523165, 1034611383, -1125020091)\n\t\t + W(3, -1063595607, 1084357731, -1094652398, 1042933311)\n\t\t + W(4, -1101985731, 1048919805, 1029250458, -1108910008)\n\t\t + W(5, -1141099147, 1025442742, -1102082303, 1040766920)\n\t\t + W(6, -1136421288, -1145624409, 1021034188, -1126731425)\n\t\t + W(7, 1030655939, -1133270551, -1121842648, 1017996705);\n\tWS(1057958943, -1104691893);\n\tsum1 =\n\t\tW(0, -1111014615, -1105424217, 1044401084, -1118336456) + W(1, -1128240917, 1046008396, -1100901945, 1038452148)\n\t\t+ W(2, -1146251723, -1090082375, 1057785284, -1119525902)\n\t\t+ W(3, -1095236657, 1054329938, 1040293502, -1093887914) + W(4, 1047913107, 1003615948, -1099597392, 1045607070)\n\t\t+ W(5, -1103203951, 1013130820, 1051440085, -1107674167)\n\t\t+ W(6, 1033356080, 1044802714, -1102604718, -1113361665)\n\t\t+ W(7, 1023941889, -1101796865, 1036253756, 1037874639);\n\tsum2 = W(0, 1010987018, 1041119120, -1110188142, -1127404253)\n\t\t + W(1, -1105807463, -1111572952, 1045029856, 1029477872)\n\t\t + W(2, -1102396693, -1117220749, 1057260834, 1019931869)\n\t\t + W(3, 1054217500, -1087890507, -1087358521, 1056265374)\n\t\t + W(4, -1123211893, 1070205457, -1081682663, -1091128546)\n\t\t + W(5, 1029628166, -1101117061, 1051101181, -1124058781)\n\t\t + W(6, -1106898625, -1113015450, 1042553654, 1025549544)\n\t\t + W(7, 1028744914, -1121743361, -1135525482, 992401866);\n\tWS(1063883327, -1171419961);\n\tsum1 =\n\t\tW(0, -1131801844, 1049833398, -1102183011, -1101850371) + W(1, 1021098616, -1123871229, -1097479398, 1031224740)\n\t\t+ W(2, 1022023532, 1009731296, 1056730033, -1123343997) + W(3, -1121742227, 1044941350, 1041013425, -1127214008)\n\t\t+ W(4, -1090925859, 1060653970, -1095529687, -1107029405)\n\t\t+ W(5, 1024490200, 1043051923, -1097251239, 1042080318)\n\t\t+ W(6, -1102607801, 1048967870, -1104750961, -1107657120)\n\t\t+ W(7, -1123544461, 1050859794, -1097963532, 1009310536);\n\tsum2 = W(0, -1106082604, 1047581965, -1097195715, -1113941985)\n\t\t + W(1, 1041248381, -1108094251, -1105642610, -1131232309)\n\t\t + W(2, -1132935321, -1111186257, 1042983438, 1050509566)\n\t\t + W(3, -1106587714, 1050591326, 1048334662, -1103031697)\n\t\t + W(4, -1104172881, 1039028256, 1046273630, -1127691207)\n\t\t + W(5, -1118244665, 1025922877, -1128737701, -1115007353)\n\t\t + W(6, -1115368488, -1111866155, 1044426238, -1112751356)\n\t\t + W(7, -1139264801, -1104769894, -1122157893, 1031938310);\n\tWS(1064944927, 1037595256);\n\tsum1 = W(0, -1116864018, -1089228760, 1063040538, -1107296590)\n\t\t + W(1, 1023806679, -1095304482, 1057549004, -1106875789)\n\t\t + W(2, 1017115436, -1087165700, 1060715233, -1103245163)\n\t\t + W(3, 1009660557, -1086682215, 1064233001, -1106392275)\n\t\t + W(4, 1028149000, -1088874517, 1056983460, -1132085516)\n\t\t + W(5, -1109610248, -1099761351, 1052917089, -1107160974)\n\t\t + W(6, -1148661421, -1116139780, 1041500021, -1129006079)\n\t\t + W(7, -1102752831, -1131587330, 1045020525, -1152394658);\n\tsum2 =\n\t\tW(0, 1045832950, -1084008560, -1084775302, 1058474163) + W(1, -1110716731, 1049995423, -1093173621, -1102301410)\n\t\t+ W(2, 1025147898, -1089165996, 1054478967, -1128684365) + W(3, -1098226948, 1066542501, 1068786857, 1031931484)\n\t\t+ W(4, -1099749141, 1049362032, 1047038722, -1091779956)\n\t\t+ W(5, -1098250414, 1055260506, -1126019654, -1105326436)\n\t\t+ W(6, 1042544569, -1086997229, -1127724076, 1053449115)\n\t\t+ W(7, -1089530617, 1067285885, -1088213452, -1090548395);\n\tWS(-1082101344, -1089856493);\n\tsum1 =\n\t\tW(0, 1050831902, -1105691402, -1101015969, 1029275441) + W(1, -1112019073, 1030717682, -1098775681, -1120813832)\n\t\t+ W(2, 1030303546, 1055521064, -1097748442, -1139280937) + W(3, -1129997454, 1064695661, -1085520515, 965412887)\n\t\t+ W(4, -1110327174, 1061962758, -1086646154, 1041358014)\n\t\t+ W(5, -1117704076, 1058754169, -1089610799, -1122362798)\n\t\t+ W(6, -1112251093, 1047731210, -1093958751, 1028938947)\n\t\t+ W(7, -1131596868, 1056158989, -1094349907, 1016935004);\n\tsum2 = W(0, -1065128139, -1101130808, 1034565987, -1119435550)\n\t\t + W(1, -1076824095, 1050826865, -1109355365, 1023890205)\n\t\t + W(2, 1067439244, 1046966330, -1109830496, 1012867020) + W(3, 1079260085, 1049869634, -1112614302, 1015248786)\n\t\t + W(4, 1056740148, 1051236860, -1123646153, -1122661198)\n\t\t + W(5, -1103928218, -1114183173, 1051726295, -1136992532)\n\t\t + W(6, -1135208116, 1033256035, 1035002893, -1119472799)\n\t\t + W(7, 1039164015, -1104627926, -1109091637, -1136910724);\n\tWS(-1090711679, 1035967541);\n\tsum1 =\n\t\tW(0, -1111795270, -1104454427, 1050513973, 1030482278) + W(1, 1015715144, 1029360119, 1050454265, -1138269301)\n\t\t+ W(2, -1118064815, -1084526809, 1063535365, -1132452908)\n\t\t+ W(3, -1124564760, -1083278737, 1060834888, 1007072853) + W(4, 1033380937, -1083950349, 1050327592, 1028355007)\n\t\t+ W(5, 1041725555, -1091233609, 1054941014, 1029566323) + W(6, 1039158191, -1102432923, 1040417584, -1140656289)\n\t\t+ W(7, 1036708611, -1097260861, 1042099839, 1035976950);\n\tsum2 = W(0, 1030795338, -1099705557, -1100315818, -1124401732)\n\t\t + W(1, -1104698754, -1088930785, -1129318753, 1047822852)\n\t\t + W(2, -1086482027, -1087114188, -1088371087, 1041847465)\n\t\t + W(3, -1086674278, 1063363970, 1059258270, 1007827043) + W(4, 1048689193, 1066258058, 1052412907, -1114489829)\n\t\t + W(5, -1101252049, 1055138353, 1035784301, 1039056173)\n\t\t + W(6, -1127107620, -1113111809, -1107499570, 1036879119)\n\t\t + W(7, -1097010897, 1050900036, 1046424313, -1112035485);\n\tWS(-1098505599, -1075865372);\n\tsum1 = W(0, -1119631078, -1131715643, -1121509433, -1113178620)\n\t\t + W(1, 1024188415, 1032178901, -1128987132, 1024883696)\n\t\t + W(2, -1125460739, 1056750314, -1131145214, -1114020928)\n\t\t + W(3, -1113150415, 1055366257, -1096447994, -1102601578)\n\t\t + W(4, -1098117352, 1063530169, -1086227497, -1111953177)\n\t\t + W(5, 1028789822, 1038512989, -1117796833, -1101470933)\n\t\t + W(6, -1115205937, 1036256496, 1016180195, -1141768534)\n\t\t + W(7, -1134520549, 1042179631, 1032402616, -1114797153);\n\tsum2 = W(0, -1098762498, 1039073687, 1035541163, 1030962008) + W(1, -1112826554, 1047439072, 1032611741, 981436096)\n\t\t + W(2, -1099883844, 1024348972, 1050751610, 1048715774)\n\t\t + W(3, -1090598021, 1068429254, 1066295533, -1089341195)\n\t\t + W(4, 1060690639, -1078855206, -1081223881, -1094541311)\n\t\t + W(5, -1101866176, 1052294530, -1097770507, 1041458546)\n\t\t + W(6, 1051055486, -1095975199, -1126362074, 1044471119)\n\t\t + W(7, -1111565268, 1034134076, -1121819739, 1024624177);\n\tWS(1057165023, -1106509195);\n\tsum1 = W(0, -1110663097, -1090373040, 1057389257, 1036322023)\n\t\t + W(1, 1023353031, -1094296089, 1051297995, -1110472134)\n\t\t + W(2, 1009641338, -1087820187, 1064196683, -1103525103)\n\t\t + W(3, -1116674588, -1090764772, 1064337073, -1108191858)\n\t\t + W(4, -1121179137, -1101809276, 1058239248, -1105116828)\n\t\t + W(5, -1127866586, -1095695571, 1053143796, -1130262917)\n\t\t + W(6, 1019708412, -1097119704, 1049182394, -1117889432)\n\t\t + W(7, -1105922998, -1088811352, 1042633923, 1047174317);\n\tsum2 = W(0, -1112942365, -1106822390, -1102090209, 1043730009)\n\t\t + W(1, 1048482322, -1115190843, 1042851055, 1035412483)\n\t\t + W(2, -1100072975, 1034045428, -1103979279, -1105576965)\n\t\t + W(3, -1097118067, 1068163863, 1056641862, 1028572696) + W(4, 991349250, 1063618710, -1105663689, -1113934073)\n\t\t + W(5, -1108096389, -1107942623, 1049912171, -1105853831)\n\t\t + W(6, 1053525633, -1090492700, -1130278628, 1039916278)\n\t\t + W(7, 1000921969, -1076676559, -1111476815, -1106999228);\n\tWS(-1086493375, -1079336981);\n\tsum1 = W(0, 977772865, -1102983835, 1026410857, 1015269519)\n\t\t + W(1, -1123924042, -1108602044, -1098146918, 1049374456)\n\t\t + W(2, -1109993624, 1041059645, -1106936850, 1036994068)\n\t\t + W(3, -1107908519, -1094902379, 1061697492, 1041174790)\n\t\t + W(4, 1036636329, -1083260999, 1061962303, -1103125248)\n\t\t + W(5, 1038934102, -1084987377, 1057432285, -1125738921)\n\t\t + W(6, 1034769240, -1102484540, 1051050960, -1130650164)\n\t\t + W(7, -1099048778, -1108629750, 1050989872, 1040252563);\n\tsum2 =\n\t\tW(0, -1104970914, 1042634099, 1052960430, -1112577728) + W(1, 1018133697, -1097448347, -1108255972, -1096543501)\n\t\t+ W(2, 1040842491, 1055662701, 1062139198, -1090800341) + W(3, -1093587851, 1074010545, 1064732329, -1093194079)\n\t\t+ W(4, -1093237537, -1089724369, -1083390778, 1015865539)\n\t\t+ W(5, -1102375178, -1099392752, 1025575413, 991452982)\n\t\t+ W(6, -1099804326, 1049771835, -1104347883, -1126119433)\n\t\t+ W(7, 1054809337, -1092159031, -1096888027, 1028159711);\n\tWS(-1088469887, 1068090411);\n\tsum1 =\n\t\tW(0, -1113244581, 1001301201, -1115331947, -1124374314) + W(1, -1123900274, 1023861926, 1035790701, -1105829923)\n\t\t+ W(2, 1049496346, -1082959002, 1057295251, -1096521435)\n\t\t+ W(3, -1110903326, 1050701400, 1048296635, -1119292644)\n\t\t+ W(4, -1119953152, 1060902689, -1081663133, 1048590454) + W(5, 1031904934, 1043052181, -1113327662, 1027826066)\n\t\t+ W(6, 1034227191, 1043817559, -1110964279, -1106468266)\n\t\t+ W(7, 1025939062, 1038313117, 1034951606, -1117293966);\n\tsum2 = W(0, 1046922708, -1106472578, 1033443280, -1111979165)\n\t\t + W(1, 1033420508, -1114867820, -1109208012, 1050643686)\n\t\t + W(2, -1112865289, -1087802072, 1020845388, -1101832932)\n\t\t + W(3, -1096930035, 1058113813, 1048730658, -1129026525)\n\t\t + W(4, -1101802092, 1050476308, 1059721445, -1104558996)\n\t\t + W(5, 1017341032, -1103417477, -1107242470, -1135034393)\n\t\t + W(6, 1036773342, -1105807138, -1136542442, 1037376476)\n\t\t + W(7, -1107450994, 1033379085, -1104249476, 1023773731);\n\tWS(1052578175, -1092643724);\n\tsum1 = W(0, -1106584961, -1102735475, 1053304083, 993436516) + W(1, 1030893452, -1100779014, 1049737317, 1037510015)\n\t\t + W(2, 1033955624, -1082492039, 1060101900, -1101687426)\n\t\t + W(3, 1037358070, -1086815439, 1065824329, -1103135573)\n\t\t + W(4, 1036710537, -1088009424, 1041943502, 1029815263)\n\t\t + W(5, -1128189432, -1095075429, 1057719155, 1040440469)\n\t\t + W(6, -1118327615, -1106908643, 1051335460, -1106074638)\n\t\t + W(7, -1129060558, -1102841939, 1036237087, 1027836379);\n\tsum2 =\n\t\tW(0, -1115440098, 1015710974, 1041402597, -1130229431) + W(1, 1029771501, 1033337736, -1114856806, 1034787000)\n\t\t+ W(2, 1018065220, -1094728975, 1037520917, -1082769104) + W(3, 999202537, 1039453548, 1064530169, -1074584982)\n\t\t+ W(4, 1036811205, 1050012979, -1094040689, -1090370130) + W(5, -1111720654, 1032576025, 1073761042, 1032162938)\n\t\t+ W(6, -1125064265, -1103861773, 1063409170, -1105633547)\n\t\t+ W(7, 1019498859, 1040788513, -1090935047, 1034133532);\n\tWS(-1104397694, 1058392920);\n\tsum1 = W(0, 1012876448, 1051523414, -1094911217, 1023486907)\n\t\t + W(1, -1126111401, 1050625047, -1106828476, 1033392977)\n\t\t + W(2, -1142522206, 1043902243, -1089440467, -1119682235)\n\t\t + W(3, -1115125816, 1063861817, -1093833780, 1019625524)\n\t\t + W(4, -1103048369, 1056801600, -1087921625, -1096529922)\n\t\t + W(5, 999529969, 1053396405, -1107310585, 1015514383) + W(6, 1016404519, 1042081404, -1104958721, 1039287934)\n\t\t + W(7, -1117545451, 1054067798, -1097217844, -1113687714);\n\tsum2 = W(0, -1130009672, 1013515790, 1013756514, -1153587550)\n\t\t + W(1, 1027809153, -1106180134, 1023886448, 1024050371)\n\t\t + W(2, -1106384796, 1042067106, 1052609397, -1094102229)\n\t\t + W(3, 1051460883, -1094561503, 1078005003, -1070026280)\n\t\t + W(4, -1104521112, 1032257325, 1072194837, -1075632186)\n\t\t + W(5, 1033821004, -1124940473, -1094906083, 1053282219)\n\t\t + W(6, -1112259960, -1168427353, 1046140857, -1098407638)\n\t\t + W(7, 1028508475, -1120291522, -1140922271, 1033718481);\n\tWS(1063327007, -1121248448);\n\tsum1 =\n\t\tW(0, 1017612078, -1113236667, 1042967269, 1035231217) + W(1, 1043030576, -1096763312, 1049218219, -1115130868)\n\t\t+ W(2, 1039059525, -1091103118, 1058517677, -1107367965) + W(3, -1115811128, 1053297652, 1033504868, 1009543939)\n\t\t+ W(4, -1095615210, 1063340055, -1082785422, 1047061435)\n\t\t+ W(5, -1099887459, 1054079124, -1088587000, 1042859328)\n\t\t+ W(6, -1140707177, 1041492110, -1101731443, -1120288724)\n\t\t+ W(7, -1120397682, -1126620524, 1029718569, -1104957341);\n\tsum2 = W(0, 1037909727, -1119813454, -1099212072, 1032936033)\n\t\t + W(1, -1098298527, 1048025725, 1045330821, -1097673782)\n\t\t + W(2, -1126569464, 1041835288, -1106229244, -1109675885)\n\t\t + W(3, -1106955476, 1067026849, 1067954224, -1092590328)\n\t\t + W(4, -1096969233, -1085288934, -1095495837, 1004812688)\n\t\t + W(5, -1118592354, 1042571631, -1108169766, -1096486003)\n\t\t + W(6, 1042882430, -1117602980, -1164085849, 1034064234)\n\t\t + W(7, 1037216424, -1116313332, -1100305071, 1045459772);\n\tWS(-1114652667, 1051933605);\n\tsum1 =\n\t\tW(0, 1026700110, -1102428549, 1043087092, -1109604752) + W(1, 1037508767, -1105027032, 1048715843, -1113263092)\n\t\t+ W(2, -1128033780, -1106431647, 1062796090, -1098797270)\n\t\t+ W(3, 1034155035, 1043250735, -1089603768, 1023780992)\n\t\t+ W(4, -1102462575, 1059213449, -1090890112, -1112475685)\n\t\t+ W(5, 1024543544, 1038435705, -1106007014, -1121524254) + W(6, -1147042251, 1038748492, -1119096106, 986589794)\n\t\t+ W(7, 1032374633, 1016229610, -1104514210, 1007891224);\n\tsum2 = W(0, -1129141996, 1043866561, 1029019378, 1050935854)\n\t\t + W(1, -1106880495, -1096921120, -1092013580, -1111274547)\n\t\t + W(2, 1031191254, -1123077406, -1086673510, -1096956427)\n\t\t + W(3, -1102244397, 1064276171, 1064706574, -1115781076)\n\t\t + W(4, -1101040753, 1061828176, -1113110329, -1106057540)\n\t\t + W(5, 1046080919, -1095750750, -1091369762, 1029696990)\n\t\t + W(6, -1112883155, 1042185570, 1042119352, -1113619581)\n\t\t + W(7, 1031234782, -1128566730, -1105256367, 1012473722);\n\tWS(1059465279, -1101420399);\n\tsum1 =\n\t\tW(0, 1033088680, 1043444330, -1101682761, -1124073107) + W(1, -1124176798, 1000916382, -1126261266, -1118729178)\n\t\t+ W(2, 1014063089, 1057398923, -1089602004, 1032573720) + W(3, 1035053989, 1034190184, 1039770557, -1114558729)\n\t\t+ W(4, 1045820204, -1087528660, 1057859064, -1096323421) + W(5, 1038292302, 1036787650, -1106381771, 1041172764)\n\t\t+ W(6, -1115007182, 1027988010, -1104773247, 1024683157)\n\t\t+ W(7, -1131477704, 1042732770, -1102530758, 1029511616);\n\tsum2 = W(0, -1093261173, -1081648717, -1107343332, 1020947921)\n\t\t + W(1, -1100338012, -1096055698, 1016623505, -1121572837)\n\t\t + W(2, 1016590929, 1049309077, 1058913944, 1035038069) + W(3, -1160318928, 1060463741, 1061699617, -1121635630)\n\t\t + W(4, -1111261089, -1123677731, -1095509190, -1116667427)\n\t\t + W(5, 1032510827, 1042247124, 988275856, -1130213341) + W(6, 1037987285, 1035681279, -1111758125, 1033159595)\n\t\t + W(7, -1106728517, 1035240533, 979544481, -1112486763);\n\tWS(1060076127, 1072958059);\n\tsum1 =\n\t\tW(0, -1103118654, -1090537599, 1060753617, -1129584897) + W(1, 1043365506, -1097065432, 1046496158, 1025963976)\n\t\t+ W(2, -1115420333, -1086314390, 1060760746, -1106610556)\n\t\t+ W(3, 1031523031, -1088162978, 1055888777, 1040410096) + W(4, 1033412302, -1089193875, 1052645932, -1138875303)\n\t\t+ W(5, 1032254402, -1091959462, 1054239287, 1032279415) + W(6, 1031863013, -1111327644, 1044639698, 1032182482)\n\t\t+ W(7, -1127560355, -1086013855, 1056703661, 1044337291);\n\tsum2 =\n\t\tW(0, 1034238418, -1122429687, 1038471498, -1105287037) + W(1, 1026722605, -1113650971, 1047703041, -1106809975)\n\t\t+ W(2, -1123083006, -1101416602, 1050567163, -1099784158)\n\t\t+ W(3, 1044566349, -1095747837, 1073798913, -1077245954)\n\t\t+ W(4, -1114043742, 1044375513, 1074668356, -1072322090) + W(5, 1029836970, 1032414162, 1076147895, -1070521946)\n\t\t+ W(6, -1124457715, -1132025334, 1076524889, -1071353549)\n\t\t+ W(7, -1112207598, -1112893824, 1071535287, -1076180558);\n\tWS(-1114470395, -1114976351);\n\tsum1 = W(0, 1017446070, 991904560, 1034584479, -1110976571) + W(1, 1040990896, 1041627584, -1107221597, -1099251857)\n\t\t + W(2, -1129681934, 1047992216, -1115356259, -1111571481)\n\t\t + W(3, -1120446036, 1061349282, -1083497834, 1039733326)\n\t\t + W(4, -1097641691, 1061559014, -1089507216, 1036247843)\n\t\t + W(5, -1110115727, 1055187519, -1098995485, -1114440077)\n\t\t + W(6, -1110184487, 1045114861, -1109668803, -1115117640)\n\t\t + W(7, 1033457695, 1047040436, -1107186297, -1120899067);\n\tsum2 = W(0, -1093678598, -1084434022, 1064533419, 1042743345)\n\t\t + W(1, 1002676269, 1057422860, 1067683118, -1108978134)\n\t\t + W(2, 1055748356, 1066493380, -1078621547, -1117769694)\n\t\t + W(3, 1044340647, -1079318791, -1079939901, 1015093293)\n\t\t + W(4, -1118111722, -1116089022, 1054002901, 1049699290) + W(5, -1120084888, 1044705221, 1039926847, 986467602)\n\t\t + W(6, 1001595675, -1112694927, -1112070298, -1107171922)\n\t\t + W(7, -1123642691, 1031220790, 1023903081, 1037662763);\n\tWS(1048785023, 1039045299);\n\tsum1 =\n\t\tW(0, -1104130562, -1090140327, 1061197562, -1133671882) + W(1, 1043168659, -1100442863, 1040570004, 1032880081)\n\t\t+ W(2, -1117502116, -1085428843, 1062309944, -1102819715)\n\t\t+ W(3, 1029857553, -1093347651, 1050495728, 1038995485) + W(4, 1034838603, -1089406196, 1050259320, -1127149063)\n\t\t+ W(5, 1027207566, -1093521697, 1054560318, 1026681976) + W(6, 1024393315, -1120775857, 1039464338, 1035433414)\n\t\t+ W(7, -1130533431, -1086838999, 1056208688, 1041402190);\n\tsum2 =\n\t\tW(0, -1118465298, -1142302474, -1114395216, 1037219807) + W(1, 1011712973, 1025023956, -1104707163, 1039062755)\n\t\t+ W(2, -1128433260, 1041730218, -1095905892, 1046574176)\n\t\t+ W(3, 1029767219, -1097771962, -1080533844, 1069124140)\n\t\t+ W(4, 1021354231, -1094677866, -1075595300, 1073795377) + W(5, 982009542, -1122047812, -1072373863, 1075522683)\n\t\t+ W(6, 1014788797, 1028525757, -1072719492, 1074436097) + W(7, 1033540398, 1020814500, -1078361330, 1068741752);\n\tWS(1040594174, 1002085105);\n\tsum1 =\n\t\tW(0, 1041861603, -1113198522, -1137236930, 1041085614) + W(1, -1097746587, 1055071640, -1100468781, -1121524679)\n\t\t+ W(2, 1032164980, -1088672026, 1047493466, -1109849488) + W(3, 1031577622, 1050744420, -1105375081, 1048884604)\n\t\t+ W(4, -1102982955, 1057599999, -1087672398, -1113508732)\n\t\t+ W(5, 1044101411, -1103363988, 1050064611, -1098107838) + W(6, 1034678964, 1036351259, -1102178050, 1043931332)\n\t\t+ W(7, 1026039088, 1034848362, 1033863059, -1106488144);\n\tsum2 = W(0, -1099743490, 1011906269, 1037961444, -1108436276) + W(1, 1035577370, 1026663055, -1152297667, 991169347)\n\t\t + W(2, -1115293072, 1057096352, -1095995741, 1045881501)\n\t\t + W(3, -1102421679, 979639118, 1050233559, -1097952901) + W(4, 1038726510, 1044440375, 1022991474, -1122343653)\n\t\t + W(5, 1032210717, 1032214892, -1139108605, 1026937641)\n\t\t + W(6, -1107407193, 1028754425, -1115369483, -1105994898)\n\t\t + W(7, -1120037205, -1123040177, -1104470915, 1022469878);\n\tWS(1066613200, -1123971367);\n\tsum1 =\n\t\tW(0, 1021072883, -1096708150, 1051074184, 1026036124) + W(1, -1125712504, -1090955664, 1051398158, -1108624754)\n\t\t+ W(2, 1041158633, -1159875842, 1058934814, 1040756057)\n\t\t+ W(3, -1106077125, -1079911082, 1061682240, -1090753503)\n\t\t+ W(4, 1036847484, -1093258685, 1055629981, -1114271443) + W(5, 1032267227, -1103560179, 1054180539, 1025501945)\n\t\t+ W(6, 1016782186, -1089925031, 1052861897, -1105228376)\n\t\t+ W(7, 1031886911, -1106725252, 1047227273, 1043536294);\n\tsum2 = W(0, -1120579723, -1102098813, -1103583809, 1039910130)\n\t\t + W(1, -1104595791, 1059079365, 1035649855, -1110832147)\n\t\t + W(2, 1060943463, -1078775742, 1055196914, -1115424415)\n\t\t + W(3, -1081375340, 1070420847, 1036446407, -1092581761)\n\t\t + W(4, 1048074442, -1106373275, 1050043459, -1101688097)\n\t\t + W(5, 1049316438, -1084015554, 1050724789, -1115969635)\n\t\t + W(6, -1088959333, 1065759760, -1088425301, 1051846236)\n\t\t + W(7, 1054216959, -1087995034, 1052608338, -1103333947);\n\tWS(1015488492, -1082266482);\n\tsum1 = W(0, -1115294884, -1096364772, 1054950795, -1109722877)\n\t\t + W(1, 1041881447, 1036768790, 1051075280, 1018280484)\n\t\t + W(2, -1116482020, -1083421327, 1062057653, -1105734603)\n\t\t + W(3, 1028536641, -1079950554, 1057564011, -1124656723)\n\t\t + W(4, 1044897017, -1088856963, 1054170231, -1129161159)\n\t\t + W(5, -1108243791, -1096513911, 1056273768, -1113027740)\n\t\t + W(6, 1033207234, -1104622888, 1056919206, -1132093050)\n\t\t + W(7, 1015505847, -1096156044, 1054606378, 1025701004);\n\tsum2 = W(0, -1103335141, -1123809016, 1056172663, -1093357581)\n\t\t + W(1, -1087173612, -1080484881, 1047550056, -1112078382)\n\t\t + W(2, 1045744538, 1068142929, 1051886373, -1102262951)\n\t\t + W(3, -1106751239, 1065979347, 1064817240, -1097769156)\n\t\t + W(4, -1089877767, 1048007586, 1065470183, -1095892093)\n\t\t + W(5, 1054342226, -1086806497, -1098340366, 1033891425)\n\t\t + W(6, 1047940388, -1098712592, -1102735881, -1105000175)\n\t\t + W(7, -1120076732, -1082944418, -1088981287, 1059622670);\n\tWS(-1089551423, -1072840444);\n\tsum1 =\n\t\tW(0, 1041019406, 1055991358, -1086576149, 1027645528) + W(1, 1022173115, 1057526040, -1100702364, -1141651861)\n\t\t+ W(2, -1113297010, 1036785718, -1093552675, 1016689751) + W(3, 1015463395, 1059475300, -1089572736, 1031793146)\n\t\t+ W(4, -1103473726, 1056836657, -1091007140, -1125097480)\n\t\t+ W(5, 1040814976, 1050051043, -1090411145, 1041821422) + W(6, 1007312016, 1050846086, -1098618125, 1015074267)\n\t\t+ W(7, 1029778436, 1053584058, -1097362556, -1104623366);\n\tsum2 =\n\t\tW(0, 1069423067, -1076703167, 1041694716, 1032293264) + W(1, 1072187327, -1073855626, -1115348910, 1008297781)\n\t\t+ W(2, 1072064387, -1079134619, -1107764634, -1120515458)\n\t\t+ W(3, 1072314518, -1077864031, -1089838794, 1037018177)\n\t\t+ W(4, 1066704589, -1081021850, 1036250076, -1121141704) + W(5, 1063804587, -1081933355, 1028352388, 1025803257)\n\t\t+ W(6, 1053139391, -1094622730, -1114321992, -1123317222)\n\t\t+ W(7, 1042659879, -1099654949, 1035224325, 1027779018);\n\tWS(1053893247, -1106302313);\n\tsum1 =\n\t\tW(0, 1031892188, 1044357278, -1093335703, -1124627014) + W(1, -1110506435, 1051962248, -1098499127, -1121076939)\n\t\t+ W(2, -1127073177, 1061666784, -1085429924, 1038775118) + W(3, 1047997302, 1064449402, -1082436051, 1042378233)\n\t\t+ W(4, 1033243951, 1041901099, -1118050391, -1100759903)\n\t\t+ W(5, -1107646187, 1053582704, -1104422127, -1107823800)\n\t\t+ W(6, -1112186286, 1037482077, -1118004236, -1134911574)\n\t\t+ W(7, -1112631434, 1050110011, -1103845867, -1111029158);\n\tsum2 = W(0, 1045534781, -1106914963, -1093884354, 1048929407)\n\t\t + W(1, -1136883904, -1105365809, 1058094665, -1099297773)\n\t\t + W(2, 1027794169, -1087950271, -1076257974, 1057853479)\n\t\t + W(3, -1091599460, 1049402813, 1070891205, -1101014716)\n\t\t + W(4, -1105954111, 1059435817, 1057695328, -1088483015)\n\t\t + W(5, -1110353364, 1056244223, -1096007662, -1116753268)\n\t\t + W(6, 1026306116, -1106437513, 1042940020, -1107558514)\n\t\t + W(7, -1105327762, 1049633694, 1019026622, -1111740866);\n\tWS(1043803134, 1031905225);\n\tsum1 = W(0, -1113675573, 1045344728, -1093561052, -1125193272)\n\t\t + W(1, -1137620096, 1015450714, 1039772705, -1142985628)\n\t\t + W(2, 1045527725, 1036603287, -1087612823, 1043570724) + W(3, 1047471777, 1057861093, -1131204708, 1032608022)\n\t\t + W(4, 1025442024, 1007995990, -1109713128, -1125123818)\n\t\t + W(5, -1101766076, 1048683192, -1098589181, 1017746514)\n\t\t + W(6, 1041363873, -1103914745, -1142310312, -1137687994)\n\t\t + W(7, -1104559247, 1053784172, -1096789826, -1120823545);\n\tsum2 =\n\t\tW(0, -1102611800, 1052608919, -1092971881, 1033368250) + W(1, 1042572795, -1112317124, 1050084573, -1099740129)\n\t\t+ W(2, -1143715563, 1036000712, -1099050864, 1046340985) + W(3, 1047906835, 1058925768, 1062269077, -1106615878)\n\t\t+ W(4, 1034463821, -1089628524, -1100033854, -1143169701)\n\t\t+ W(5, -1097650393, -1097284017, -1155008883, 1034459058)\n\t\t+ W(6, 1044772028, -1090965565, 1043620595, -1102441858)\n\t\t+ W(7, -1105069125, 1053414419, -1099181286, -1145018737);\n\tWS(1065606800, 1041895077);\n\tsum1 =\n\t\tW(0, 1041785011, 1041397665, -1108226929, -1113822832) + W(1, -1113293285, 1050236482, -1089967688, -1105474774)\n\t\t+ W(2, 1031552121, 1063682744, -1092426598, 1045393909)\n\t\t+ W(3, -1114204019, 1055253222, -1085544687, -1106251932)\n\t\t+ W(4, 1014586031, 1057927896, -1092878524, 1018782386) + W(5, 1032452466, 1054837340, -1094102329, -1135035573)\n\t\t+ W(6, -1103346054, 1043307490, -1097746379, -1114747425)\n\t\t+ W(7, 1025447425, 1058487624, -1098262983, -1119448485);\n\tsum2 =\n\t\tW(0, 1038489223, -1094743304, -1079775068, 1069957645) + W(1, 1032193624, -1106563024, -1075431018, 1074314813)\n\t\t+ W(2, -1137158564, 1029053577, -1075905408, 1067854461)\n\t\t+ W(3, 1048862753, -1103121169, 1061439417, -1090496129)\n\t\t+ W(4, -1107218869, 1018988618, 1061842524, -1083145579)\n\t\t+ W(5, -1112577633, 1015522148, 1055667456, -1093776696) + W(6, 1034028859, -1107822714, 1032002642, 1038458963)\n\t\t+ W(7, -1110240510, 1017646246, 1047594841, -1100108785);\n\tWS(1050857279, 1035401177);\n\tsum1 =\n\t\tW(0, 1029370009, 1049972466, -1100844155, -1114359850) + W(1, -1121232094, 1045749679, -1097541146, -1119608387)\n\t\t+ W(2, -1118971861, 1054737744, -1089471141, 1032044074)\n\t\t+ W(3, -1116554354, 1064433520, -1088203652, 1039513726)\n\t\t+ W(4, -1102118870, 1057059356, -1089223685, 1028806533) + W(5, 1035949272, 1055161550, -1095333099, 1039358524)\n\t\t+ W(6, -1118591397, 1035470985, -1098430605, -1114373271)\n\t\t+ W(7, -1155732684, 1050840570, -1105548665, -1113669781);\n\tsum2 =\n\t\tW(0, 1034282103, 1040723224, 1028955705, -1104697256) + W(1, -1111920318, -1118965841, 1031483971, -1123254751)\n\t\t+ W(2, 1023538768, -1128437695, 1043259383, 1034554870)\n\t\t+ W(3, -1133376386, 1038672881, -1148076972, -1078609243)\n\t\t+ W(4, -1119100907, 993338648, -1084940093, -1075024478) + W(5, 1014776166, 1050613235, 1050550535, -1100774866)\n\t\t+ W(6, -1117007635, -1108740075, -1098463376, 1069274341)\n\t\t+ W(7, -1121555310, 1040276790, 1054296012, 1072481706);\n\tWS(1059068159, -1095269543);\n\tsum1 =\n\t\tW(0, 1022243158, 1058751902, -1083015108, 1040310153) + W(1, -1126585055, 1052633434, -1095802212, 1009201364)\n\t\t+ W(2, -1113503115, 1061437964, -1083734386, 1040208083)\n\t\t+ W(3, 1034732162, 1062365313, -1087136899, -1116554445) + W(4, 1029695369, 1054753811, -1089074173, 1044292534)\n\t\t+ W(5, 1045709362, 1047783152, -1093733821, -1141695574) + W(6, 1005846771, 1043895001, -1096742887, 1042140272)\n\t\t+ W(7, 1049870212, -1119990530, -1106170901, -1106848091);\n\tsum2 =\n\t\tW(0, -1110453349, 1048158098, 1064329884, -1096499673) + W(1, -1118716929, -1117235638, -1122504669, 1023790996)\n\t\t+ W(2, -1111084235, 1037169053, 1037379653, 1035642078) + W(3, 1027079271, 1044450691, -1106426334, -1103100998)\n\t\t+ W(4, 1058163522, -1086959067, -1081956377, 1059064502)\n\t\t+ W(5, 1060433363, -1096141012, -1081432626, -1109003581)\n\t\t+ W(6, 1058751114, -1102281652, -1086790317, 1048822766)\n\t\t+ W(7, -1077532089, 1061563184, 1073667932, -1089552462);\n\tWS(-1079238176, -1098575359);\n\tsum1 =\n\t\tW(0, -1122061272, 1040856756, -1106993315, -1113276757) + W(1, 1012614613, -1098659523, 1049053518, -1110111537)\n\t\t+ W(2, 1049213476, 1050219649, -1088887964, 1048270483) + W(3, -1091368434, 1046432350, 1061247706, -1098550683)\n\t\t+ W(4, 1050034455, -1092787824, -1113029435, 1053252708)\n\t\t+ W(5, -1115399887, 1045840143, -1096901418, -1120030007)\n\t\t+ W(6, -1105000541, -1102913028, 1045569657, -1144293604)\n\t\t+ W(7, 1040609063, -1104981396, -1106428832, 1037272948);\n\tsum2 = W(0, 1035271628, -1096995906, -1097624644, 1051183735)\n\t\t + W(1, 1033447544, 1032410306, 1048740225, -1095652467)\n\t\t + W(2, -1113618952, 1053850685, -1109777102, 1037584786)\n\t\t + W(3, -1104023060, 1054515359, 1058355960, -1116173683)\n\t\t + W(4, 1022009109, -1114408860, -1139294461, -1096371453)\n\t\t + W(5, -1104458884, 1030897990, -1116975083, 1030595307)\n\t\t + W(6, 1044684178, -1115683354, -1099524388, -1117706649)\n\t\t + W(7, -1104406640, -1106540716, 1036671037, -1108415342);\n\tWS(1064155455, 1041078114);\n\tsum1 =\n\t\tW(0, -1114884791, -1133388468, 1031759625, -1116707016) + W(1, 1038026665, -1103926126, 1051074474, -1135572861)\n\t\t+ W(2, 1040569148, -1088265213, 1049866386, -1145284192)\n\t\t+ W(3, -1123095214, -1088521037, 1060913876, -1110455500)\n\t\t+ W(4, -1113346810, -1094483240, 1044072016, -1116167073)\n\t\t+ W(5, -1098688777, 1052099081, 1034732568, 1029730485) + W(6, -1106297864, 1038941559, -1138713347, 1017022612)\n\t\t+ W(7, 1033022404, 1027852876, 1019301565, 1028095637);\n\tsum2 = W(0, 1027468398, -1120484835, 1033713911, 1037828351)\n\t\t + W(1, -1111732215, -1115316427, -1113615213, -1102210431)\n\t\t + W(2, -1149402831, 1042551085, 1015721118, 1027887653)\n\t\t + W(3, -1136133524, -1101059653, 1005178376, -1105049969)\n\t\t + W(4, 1058132410, 1067179636, -1112798365, 1033627060)\n\t\t + W(5, -1084703700, -1093846517, 1036573120, -1112780439)\n\t\t + W(6, -1103172541, 1015696434, 1035924289, 1025169534)\n\t\t + W(7, 1011948492, -1119207903, -1106241198, 1034168377);\n\tWS(1056869759, -1097268032);\n\tsum1 = W(0, 1018133293, 1036411431, 1039633317, -1111689725)\n\t\t + W(1, -1105532941, 1007771751, 1034605623, -1107937040)\n\t\t + W(2, 1027243330, -1116024394, 1050783724, -1105991139)\n\t\t + W(3, -1097428310, 1032024955, 1010531964, -1109581452)\n\t\t + W(4, -1099204213, -1130187397, 1045069064, -1103861656)\n\t\t + W(5, -1133851766, 1034973653, 1044277428, 1044990678)\n\t\t + W(6, -1138393927, -1114469768, 1046520720, -1106353867)\n\t\t + W(7, -1118550618, -1118964077, 1036629184, -1155661924);\n\tsum2 =\n\t\tW(0, 1031819015, 1040620760, -1130428603, -1130628701) + W(1, -1113612713, 1045122152, -1113774176, -1118722775)\n\t\t+ W(2, 1040659447, -1122637452, -1093905874, 1015363301)\n\t\t+ W(3, -1113225510, -1080510307, -1073670430, -1129641903)\n\t\t+ W(4, 1023788280, -1103769905, 1040925011, 1045479736) + W(5, -1115035325, 1050277803, 1074164392, 997650792)\n\t\t+ W(6, 1009487418, 1041168723, 1056579340, 1043373785) + W(7, 1023947578, -1112728330, 1044922942, -1122436477);\n\tWS(1064095487, 1025785067);\n\tsum1 =\n\t\tW(0, 1026371284, -1106851535, -1128892272, 1040514533) + W(1, -1097495743, 1042476562, 1049973404, -1103190740)\n\t\t+ W(2, 1050378694, -1104849584, -1115675316, 1040022019) + W(3, 1008396404, -1085976658, 1058008769, 1040395090)\n\t\t+ W(4, 1042871873, -1097042470, -1098054097, 1050097558)\n\t\t+ W(5, -1103138663, -1109264236, 1052615848, -1102548473)\n\t\t+ W(6, -1136206974, 1035073279, 1037088776, -1157051795)\n\t\t+ W(7, 1034556564, -1094929447, 1045135411, 1023679636);\n\tsum2 =\n\t\tW(0, -1124722923, 1033420628, -1105442746, 1029168594) + W(1, -1114618025, -1100145939, 1047309531, 1048079041)\n\t\t+ W(2, 1043439029, -1115804833, -1084852425, -1101613108)\n\t\t+ W(3, 1036363299, 1057589449, -1089136554, 1042227257) + W(4, -1096133271, 1053618149, 1028964970, 1045151454)\n\t\t+ W(5, 1049502378, -1091358477, 1056312267, 1041752672) + W(6, -1106999272, 1030436134, -1100909906, 1036382707)\n\t\t+ W(7, 1013819494, -1119548384, 1043379377, -1113267324);\n\tWS(1060109055, 1023402244);\n\tsum1 = W(0, 1039025762, 1051909299, -1098089231, -1107880995)\n\t\t + W(1, -1109278395, 1054481389, -1093104548, 1018380380)\n\t\t + W(2, -1125210976, 1061074499, -1087624466, -1167447218)\n\t\t + W(3, -1107337262, 1069080830, -1092709234, -1119879878)\n\t\t + W(4, -1119314274, 991275263, -1085745760, 1030906608) + W(5, 1038278743, 1049054227, -1093068092, 1028271716)\n\t\t + W(6, -1120902815, 1043342663, -1102438460, -1122586985)\n\t\t + W(7, 1024999351, 1051802331, -1098889074, -1107737008);\n\tsum2 =\n\t\tW(0, 995982518, 1035578813, -1118279893, -1115504751) + W(1, 1033194341, -1121421677, -1114972659, -1108849613)\n\t\t+ W(2, 1038373562, 1046888388, 1069469835, 1041670894) + W(3, 1040171687, -1103362299, 1078927590, 1050450381)\n\t\t+ W(4, -1108098969, 1050255581, -1065023683, -1097423961)\n\t\t+ W(5, 1027047733, -1096418856, -1082214759, -1114805949) + W(6, -1147696971, 1042040695, 1045909115, 964966831)\n\t\t+ W(7, 1033796110, -1116244525, -1112457727, 1025540676);\n\tWS(-1092049407, -1078216845);\n\tsum1 = W(0, 1019093687, 1057591089, -1089127853, -1109784091)\n\t\t + W(1, 1030002432, 1050969332, -1096074010, 1043174565)\n\t\t + W(2, -1100550858, 1056027116, -1082843219, -1126191805)\n\t\t + W(3, 1055647027, 1063070242, -1088645600, 1049441628)\n\t\t + W(4, -1103872766, 1039049940, -1097545633, -1097650089)\n\t\t + W(5, 1041444210, 1057957242, -1095349663, 1024042875)\n\t\t + W(6, -1115845919, 1034942714, -1103665506, -1123963793)\n\t\t + W(7, 1042339236, 1059965491, -1089209262, -1105758607);\n\tsum2 =\n\t\tW(0, -1086426610, 1062347208, 1053593730, -1108806990) + W(1, -1096143108, 1055082976, -1101252044, -1138780047)\n\t\t+ W(2, -1089951657, 1045157118, -1111940928, -1099705126) + W(3, 1062855195, 1048769854, 1037201995, 1058343455)\n\t\t+ W(4, 1068897447, -1073459143, -1091098547, -1094950430)\n\t\t+ W(5, 1074016711, -1078468086, -1119407664, 1046274438)\n\t\t+ W(6, 1075026151, -1071781830, 1031118734, -1128975824)\n\t\t+ W(7, 1074160921, -1072043968, -1095931446, 1035271906);\n\tWS(-1092377983, 1032564911);\n\tsum1 =\n\t\tW(0, 1026968586, 1051240140, -1140824311, -1108814006) + W(1, 1001025293, -1135919542, -1114206145, 1031981930)\n\t\t+ W(2, -1101464865, 1047585891, 1035412731, -1105914151)\n\t\t+ W(3, -1099757657, 1046337282, -1093593858, -1111723206)\n\t\t+ W(4, -1099131534, 1042168181, 1042300945, -1114245051) + W(5, 1021990836, 1042765483, -1105010841, 1047084274)\n\t\t+ W(6, -1124857771, 1039475666, -1129901419, -1110153104)\n\t\t+ W(7, 1016095931, 1031087233, -1150842169, 1021006644);\n\tsum2 = W(0, -1152594313, -1103837493, -1119502913, 1035550709)\n\t\t + W(1, -1114711758, -1102219265, 1049238470, -1111809635)\n\t\t + W(2, -1122222477, 1021928584, 1051353268, 1038283603)\n\t\t + W(3, -1119994373, 1043085394, 1069806319, -1113383091)\n\t\t + W(4, -1117872135, -1098150014, 1040245198, 1038911980)\n\t\t + W(5, -1136114154, -1114380427, -1084770114, -1106271331)\n\t\t + W(6, -1118889611, -1103586212, -1097500544, -1109409577)\n\t\t + W(7, -1120239593, 999997765, 1032457879, -1130668925);\n\tWS(1066805616, -1146277627);\n\tsum1 =\n\t\tW(0, -1135230785, -1097679853, 1046488473, 1036204713) + W(1, -1149155717, -1106566573, 1047676826, -1098488427)\n\t\t+ W(2, 1034010150, -1092037473, 1047117051, -1103697017) + W(3, 1042337650, -1085421897, 1062693860, 1057957971)\n\t\t+ W(4, -1127867356, -1091217395, 1049537116, -1114566390)\n\t\t+ W(5, 1036367663, -1094061036, 1056189429, 1034870184) + W(6, 1011804270, -1108406741, 1017502967, -1103604141)\n\t\t+ W(7, 998521116, -1096997053, 1049188263, 1029261884);\n\tsum2 = W(0, -1122819855, 1035645255, -1107161682, 1042480496)\n\t\t + W(1, 1029215207, -1111163705, 1019166485, -1107159841)\n\t\t + W(2, -1109976389, 1026839491, -1129473215, -1115971786)\n\t\t + W(3, 1044451524, -1095838714, 1082201538, -1067229991)\n\t\t + W(4, -1130065951, -1147512571, 1052773623, -1091650896)\n\t\t + W(5, 1027965847, -1156411358, 1033233466, -1142132409)\n\t\t + W(6, -1119702735, -1110332882, 1034307583, -1107215185)\n\t\t + W(7, 1036873692, -1114357123, 1001850219, 1025815163);\n\tWS(1040205182, 1040987841);\n\tsum1 =\n\t\tW(0, 1032709552, 1050828331, -1098789018, -1130845956) + W(1, 1028035406, 1054299632, -1102534446, -1131566290)\n\t\t+ W(2, -1152624047, 1000765841, -1087146945, 1024089890) + W(3, 1047238622, 1064828620, -1084918512, 1044521480)\n\t\t+ W(4, -1110798127, 1059217829, -1080798168, 1041701723)\n\t\t+ W(5, -1160283945, 1057730984, -1094152707, -1105870556)\n\t\t+ W(6, -1129145589, 1050797759, -1154982570, -1121779940)\n\t\t+ W(7, 1035307633, 1040620053, -1104995442, -1110323595);\n\tsum2 = W(0, -1104834685, 1039834326, 1040649104, -1113573633)\n\t\t + W(1, -1098615503, 1050496819, 1034170750, -1119108596)\n\t\t + W(2, -1090508283, 1045914856, -1118657109, -1128160390)\n\t\t + W(3, -1080862372, 1070974917, -1102559609, -1095002000)\n\t\t + W(4, 1048874616, -1085801376, 1041220807, 1053594264) + W(5, 1063492499, -1081343708, 1047362948, 1022825140)\n\t\t + W(6, 1035824034, 1033985362, -1099586035, 1041895669)\n\t\t + W(7, 1062512173, -1089072248, -1130222490, -1115149866);\n\tWS(-1087487423, 1060332710);\n\tsum1 = W(0, -1105878689, -1095746139, 1053913286, 1037671952)\n\t\t + W(1, 1042437466, -1089004262, 1055197099, -1117440135)\n\t\t + W(2, 1040585322, -1081828961, 1059867107, -1114610404)\n\t\t + W(3, -1121111477, -1099866351, 1061690846, 1028605502)\n\t\t + W(4, -1112195269, -1115422148, -1104536871, 1040822242)\n\t\t + W(5, -1112892785, 1039314504, -1102951638, 1041433743)\n\t\t + W(6, -1122925576, -1117471766, -1107184778, 1048192776)\n\t\t + W(7, 1012646976, -1108492170, -1130420108, 1029799624);\n\tsum2 = W(0, 1017331955, -1097747777, -1097037835, -1162485367)\n\t\t + W(1, -1104677463, 1040900608, 1016355419, -1104406873)\n\t\t + W(2, -1117673238, -1081336501, -1089023490, -1117660642)\n\t\t + W(3, -1094338757, 1073518733, 1068423959, -1096388411)\n\t\t + W(4, -1119646366, -1103573743, 1048344480, -1093216188)\n\t\t + W(5, -1104710153, -1106204508, 1057220074, 1028492960)\n\t\t + W(6, -1107625181, 1041186571, 1033091565, -1092192530)\n\t\t + W(7, 1022869095, -1097636016, 1053959289, 1049060345);\n\tWS(-1096756863, 1051174382);\n\tsum1 =\n\t\tW(0, 1025372546, -1115668125, 1000611497, 1034391118) + W(1, -1106905723, 1039995714, -1105014230, 1041916975)\n\t\t+ W(2, -1114360751, 1043101563, -1117013085, 1027806076)\n\t\t+ W(3, 1025624474, -1089490746, 1058174613, -1111998130) + W(4, 1037998160, -1092891318, 1045000731, 1008039732)\n\t\t+ W(5, 1032794399, -1107085565, 1035643438, 1030397185) + W(6, 1034992970, -1114405501, -1121180749, 1018926829)\n\t\t+ W(7, -1114244794, -1168885266, -1120880459, 1029203969);\n\tsum2 =\n\t\tW(0, -1089960886, -1095856011, 1007316785, 1036775569) + W(1, -1092452707, -1106157919, 1041476280, -1107942220)\n\t\t+ W(2, 1049541326, 1074170001, 1050706137, 1021239050) + W(3, 1032119458, -1085150802, -1083810164, -1132331444)\n\t\t+ W(4, 1032929374, 1046048366, 1043182557, 1036225521)\n\t\t+ W(5, -1110883627, -1112079347, -1129593193, -1113579728)\n\t\t+ W(6, -1123073435, 1027735021, -1214669080, 1009639193)\n\t\t+ W(7, 1026522309, -1111935169, 1009058861, 1022066674);\n\tWS(1063524863, 1010978751);\n\tsum1 = W(0, 1033376264, -1090913225, 1054337940, 1034437913) + W(1, 1035248130, -1094935586, 1045510498, 1040021853)\n\t\t + W(2, 1029138555, -1084407830, 1057961148, -1141033844)\n\t\t + W(3, 1040606570, -1085174115, 1062831778, 1032741433)\n\t\t + W(4, -1146340206, -1080254739, 1060252175, -1127614262)\n\t\t + W(5, -1122169062, -1094320024, 1058700983, -1136275261)\n\t\t + W(6, -1113033206, 1033710501, 1045946247, 1007782611) + W(7, -1115451138, 955403507, 1033261261, 1030604567);\n\tsum2 = W(0, -1096400044, 1053621644, 1017015195, 1037111777) + W(1, 1043917783, 1009306318, 1005897821, -1106811629)\n\t\t + W(2, -1123678571, 1051339656, -1141989437, 1047789047)\n\t\t + W(3, -1090244436, 1062093709, 1065539532, -1093438727)\n\t\t + W(4, 1046901313, -1080576226, -1083332175, 1049955112)\n\t\t + W(5, 1048870815, -1106342004, -1097183812, 1043219374)\n\t\t + W(6, 1033884063, -1098524562, -1097464341, 1050393105)\n\t\t + W(7, 1053211427, -1124418811, -1092155120, 1044056917);\n\tWS(-1085369887, -1080302329);\n\tsum1 = W(0, 1021216124, -1112260523, 1035888345, -1110274640)\n\t\t + W(1, -1121762938, -1119192737, 1049037307, -1111476420)\n\t\t + W(2, -1103047566, 1050211017, 1061443675, -1097892613)\n\t\t + W(3, -1094342263, 1058411732, 1044828010, -1097171068)\n\t\t + W(4, -1105630871, -1139271463, -1119204121, -1112160677)\n\t\t + W(5, -1107174593, 1042276856, -1100915542, 1026261917)\n\t\t + W(6, 1025950537, -1113852108, -1174284878, -1110403297)\n\t\t + W(7, -1146340105, -1119668597, -1119790119, -1132483222);\n\tsum2 = W(0, -1115512925, 1035074177, -1191992884, -1115656893)\n\t\t + W(1, -1146353705, 1040461813, 1043381354, -1137020948) + W(2, 1036066439, 1042528734, 1059049535, 1021899784)\n\t\t + W(3, -1134998124, 1058355837, 1058956516, -1112812041)\n\t\t + W(4, -1093678923, -1081621864, -1095612272, 1012903452)\n\t\t + W(5, -1122018103, -1089980594, 1050844919, -1123282157)\n\t\t + W(6, -1110317749, 1049357806, -1100731037, -1122890057)\n\t\t + W(7, 1002801625, -1101025299, 1036998024, 1023124620);\n\tWS(-1106521214, -1077666555);\n\tsum1 = W(0, 1003321829, 1052142545, -1102912320, -1108686032)\n\t\t + W(1, -1120901013, 1052094618, -1105733097, -1118608535)\n\t\t + W(2, -1105222370, 1060439250, -1085669204, 1045702647)\n\t\t + W(3, -1107011833, 1059969903, -1113880763, -1106161276)\n\t\t + W(4, 1029823211, -1095361591, 1052882623, -1103122454)\n\t\t + W(5, 1000924822, 1039904896, -1107186882, -1106172071)\n\t\t + W(6, -1127794128, 1000548911, -1118745688, -1113781993)\n\t\t + W(7, 1027793952, 1046166153, -1096551831, -1132637458);\n\tsum2 = W(0, 1034079401, 1025264110, -1123371956, -1116991392)\n\t\t + W(1, -1123608512, -1119278092, -1104246380, -1156408861)\n\t\t + W(2, 999851902, 1031056700, 1051208451, -1098806852) + W(3, -1128074608, 1059405503, 1063218900, 1038716729)\n\t\t + W(4, -1102099502, -1123208440, -1110007228, -1136590423)\n\t\t + W(5, -1109589984, -1081290516, -1131612640, 1034885175)\n\t\t + W(6, -1127758712, 1015173988, -1124651080, 1009682031)\n\t\t + W(7, 1032460032, -1121242732, 1025045004, -1115963068);\n\tWS(1061862175, -1081928168);\n\tsum1 = W(0, -1105584175, -1105871745, 1043886056, 1027658214) + W(1, 1024897880, -1093982770, 1052657028, 992865878)\n\t\t + W(2, 1038516044, -1092069365, 1055074797, -1121064957)\n\t\t + W(3, 1040792761, -1083616743, 1065026281, -1106374835)\n\t\t + W(4, 1041867802, -1089303929, 1056987882, 1015027694)\n\t\t + W(5, -1146323132, -1089274268, 1054263413, -1132520748)\n\t\t + W(6, 1033649803, -1106858177, 1043742846, -1137844354)\n\t\t + W(7, -1113939311, -1096909360, 1049053899, 1017619030);\n\tsum2 = W(0, 1078367032, 1027322757, 1023449836, -1115583846) + W(1, 1056220347, 1044756153, -1148770222, 993742973)\n\t\t + W(2, -1078889751, -1096547764, 1043960988, -1130380138)\n\t\t + W(3, -1073546091, -1101560565, -1126862726, -1147412718)\n\t\t + W(4, -1104234997, 1042443775, 1029550531, -1115461788)\n\t\t + W(5, -1129365336, 1048890957, -1133306383, 1019814478)\n\t\t + W(6, -1132392998, -1104280017, -1130422948, -1143007558)\n\t\t + W(7, -1105729449, 1028418751, 1042854212, -1123464959);\n\tWS(1052938943, -1103606318);\n\tsum1 = W(0, -1114719934, -1087051802, 1058073278, -1114447856)\n\t\t + W(1, -1110318513, -1108424920, 1044445625, 1040769086)\n\t\t + W(2, 1051495307, -1085940948, 1060893495, 1037779432)\n\t\t + W(3, -1100729633, -1082198177, 1058839039, -1103818980)\n\t\t + W(4, 1058926789, -1090825863, 1060585177, 1053070735)\n\t\t + W(5, -1090569589, -1088355266, 1053564817, -1091337376)\n\t\t + W(6, 1050591187, -1096343413, 1054456219, -1131842819)\n\t\t + W(7, -1120060704, -1090847836, 1059253187, 1026807692);\n\tsum2 = W(0, 1015621136, 1033006755, -1072583370, 1074691924)\n\t\t + W(1, 1032703681, -1098289077, -1084108607, 1067219112)\n\t\t + W(2, 1048700747, -1098808895, -1081224226, 1064576163)\n\t\t + W(3, -1098355550, 1046984196, -1081041246, 1066863963)\n\t\t + W(4, 1047054427, -1083721832, 1069053051, -1084686190)\n\t\t + W(5, -1097901072, 1061110777, 1046858869, -1086075738)\n\t\t + W(6, -1126056922, -1109410901, 1068664236, -1079374171)\n\t\t + W(7, -1165737020, 1047097145, 1076043754, -1071293986);\n\tWS(-1083248351, 1041375270);\n\tsum1 =\n\t\tW(0, 998616699, -1087439008, 1054645196, 1045294540) + W(1, -1142901727, -1092067298, 1052452449, -1128264947)\n\t\t+ W(2, 1043282847, -1097778587, 1050602866, 1042620067)\n\t\t+ W(3, -1128981712, -1084179155, 1058025241, -1146688137)\n\t\t+ W(4, 1049050406, -1090979219, 1061357806, -1127282486)\n\t\t+ W(5, -1110272759, -1086455104, 1053431193, -1125997182) + W(6, 1045114289, -1095775369, 1052134295, 981342481)\n\t\t+ W(7, -1170526381, -1087021556, 1053157267, 1046767364);\n\tsum2 =\n\t\tW(0, -1076239116, 1068235144, 1054062613, -1114529265) + W(1, -1079299620, 1068687973, 1019509447, -1116897962)\n\t\t+ W(2, -1079042334, 1068481951, 1057377046, 1041823371) + W(3, -1083365485, 1066921525, -1100834259, 1032806429)\n\t\t+ W(4, 1049726715, -1106704213, -1095788298, -1104989857)\n\t\t+ W(5, 1066758659, -1080829299, -1107253929, -1107915189)\n\t\t+ W(6, 1069675355, -1077473679, -1112126912, 1021289065)\n\t\t+ W(7, 1075688460, -1073149491, -1090199615, 1034867372);\n\tWS(-1089965567, 1041739713);\n\tsum1 = W(0, 1014059625, 1050606464, -1097348868, 1016608410)\n\t\t + W(1, -1109541748, 1046384755, -1098095776, -1110057610)\n\t\t + W(2, -1120181702, 1052952467, -1098227712, -1165355548)\n\t\t + W(3, -1113826001, 1062759283, -1097909490, -1103909923)\n\t\t + W(4, -1099389050, 1061539071, -1089710746, 1018410859)\n\t\t + W(5, -1107441048, 1056969105, -1097990985, -1097884829)\n\t\t + W(6, -1110918155, 1043585729, -1112431723, -1109883584)\n\t\t + W(7, -1129336123, 1054439728, -1101291373, -1118732474);\n\tsum2 =\n\t\tW(0, 1035083591, -1113211599, 1032203968, -1112771443) + W(1, -1112359157, 1037267536, -1129901649, 999833884)\n\t\t+ W(2, 1037205500, -1110383577, 1050641640, -1113848439) + W(3, -1119560270, 1053336900, 1062183610, 1048127168)\n\t\t+ W(4, -1130432545, 1036846600, 1052549520, -1087091182) + W(5, 1033928454, 1029308948, 1037218786, -1080175934)\n\t\t+ W(6, -1111608107, 1035214305, -1098666781, -1106600446)\n\t\t+ W(7, 1027763767, -1137000642, 1041216407, -1105808372);\n\tWS(1040803966, -1079223548);\n\tsum1 = W(0, -1103550802, -1108233168, -1115946235, 1021078213)\n\t\t + W(1, -1113401739, -1097729981, 1016715200, -1123835458)\n\t\t + W(2, -1105545077, -1112466052, 1051122342, -1103483180)\n\t\t + W(3, -1095164520, 1056711305, 1072346450, -1092700173)\n\t\t + W(4, -1102562113, 1033129898, 1046866637, -1104392485)\n\t\t + W(5, -1106149592, -1100704991, 1041579689, 1033532004)\n\t\t + W(6, -1123094707, -1106323272, 1017795558, -1128003929)\n\t\t + W(7, -1105989383, -1109921151, 1019070562, -1109398092);\n\tsum2 = W(0, -1132003761, -1097131135, 1033952970, -1114013558)\n\t\t + W(1, -1126076753, -1098724323, -1102131199, 1027012993)\n\t\t + W(2, 1028715469, -1094337061, 1043946979, -1109613274)\n\t\t + W(3, -1094940877, 1075670208, 1037045260, 1026138301)\n\t\t + W(4, -1096054213, -1092647285, 1052392413, -1107006741)\n\t\t + W(5, 1050064171, -1119763725, -1101691459, 1032910718)\n\t\t + W(6, -1095828963, -1104609741, -1104710657, -1127911473)\n\t\t + W(7, 1024912709, -1103386045, 1042676905, -1109320626);\n\tWS(-1077711088, -1080462700);\n\tsum1 =\n\t\tW(0, 1016976667, -1095463505, 1048382760, 1033669226) + W(1, -1143635214, -1094028818, 1043759401, 1023995271)\n\t\t+ W(2, 1050435883, -1084473735, 1060944248, 1038367764) + W(3, 1025648038, -1081613943, 1061061657, -1104130812)\n\t\t+ W(4, 1033190198, -1092817267, 1059085444, 1035230572)\n\t\t+ W(5, -1119077035, -1089963906, 1058923652, -1115548134)\n\t\t+ W(6, -1127874241, -1112556483, 1024757337, 998948881)\n\t\t+ W(7, -1124293633, -1096263708, 1052630131, 1035279350);\n\tsum2 =\n\t\tW(0, -1118714905, 1038737245, 1045939428, -1084863446) + W(1, -1128906105, 1033599435, -1124872105, -1120736313)\n\t\t+ W(2, -1104617441, 1047074065, 1073600723, 1072627800)\n\t\t+ W(3, -1102497202, -1081197801, -1069501955, 1076529178)\n\t\t+ W(4, 1052988680, 1051590837, -1078764847, 1066278053) + W(5, 1025452854, 1036478618, -1078626366, -1115729701)\n\t\t+ W(6, -1147569173, 1034730428, -1094352359, -1119746081)\n\t\t+ W(7, 1045309195, -1096538670, -1097394746, 1001372341);\n\tWS(-1085605823, 1039908372);\n\tsum1 = W(0, -1110519177, -1101464226, 1050281295, -1136474287)\n\t\t + W(1, 998302542, -1097280531, 1040574050, 1017687606) + W(2, -1105109851, 1050325520, -1112501642, 1027599892)\n\t\t + W(3, 1051114493, -1093718398, -1095999987, 1038451002)\n\t\t + W(4, 1047758692, -1109283231, 1052111506, -1112873934)\n\t\t + W(5, 1047411644, -1103804777, 1013903280, 1026946257)\n\t\t + W(6, 1008966514, -1107759461, -1131548857, 1007362713)\n\t\t + W(7, 1027414133, -1099881946, 1037344125, 1030395745);\n\tsum2 = W(0, -1115357326, -1098998597, 1033193484, -1119934044)\n\t\t + W(1, -1129481498, -1104582263, 1041990652, -1109942748)\n\t\t + W(2, 1037423788, -1098625511, 1052524895, 1028176618) + W(3, -1149109833, 1036322812, 1029624616, 1032249206)\n\t\t + W(4, -1107237807, 1050926614, -1102468922, -1117055607)\n\t\t + W(5, -1098320683, 1045914812, 1016354632, 1026298641)\n\t\t + W(6, -1118016391, 1029306918, 1029333966, -1116685452)\n\t\t + W(7, -1111060805, 1035368549, 1036818044, -1113790705);\n\tWS(1066221936, -1112686252);\n\tsum1 =\n\t\tW(0, -1111426931, 1042737360, 1039181581, -1110677245) + W(1, 1049363148, -1108750629, -1105687720, 1035534704)\n\t\t+ W(2, -1090113310, 1053136109, 1051677110, -1101864162) + W(3, 1038796336, -1095853365, 1031102479, 1019901392)\n\t\t+ W(4, -1102958241, -1108890233, 1058267293, -1107302241)\n\t\t+ W(5, 1041899238, 1023718298, -1089545128, 1048841797) + W(6, -1104001476, 1033191264, 1047293124, -1106653499)\n\t\t+ W(7, -1112879133, -1165972390, 1010166848, 989728967);\n\tsum2 =\n\t\tW(0, 1019579309, -1121628281, -1104132268, -1133616314) + W(1, -1115216952, 1041466962, -1110659898, 1046938970)\n\t\t+ W(2, -1101014764, 1044350744, -1092586315, -1089581193)\n\t\t+ W(3, 1035949455, -1096356807, 1067161402, -1097777539) + W(4, -1125343389, 1019949697, 1044980625, 1025080038)\n\t\t+ W(5, 1020295703, 1011899626, 1028945397, 1042942659) + W(6, -1107189524, 1020414781, 1024223321, 1000298789)\n\t\t+ W(7, 1032252124, -1108620092, -1106879950, 1034429670);\n\tWS(1065647552, 1042223795);\n\tsum1 =\n\t\tW(0, -1118213891, -1090185691, 1054600851, 1042956769) + W(1, 1047859212, -1099254654, 1056675965, 1045938459)\n\t\t+ W(2, -1102035956, -1085546115, 1052764224, -1095542592)\n\t\t+ W(3, 1049817209, -1090115457, 1060918524, 1048397149)\n\t\t+ W(4, -1136727619, -1086839140, 1050058698, -1107166488)\n\t\t+ W(5, 1018314812, -1089622500, 1053194074, -1115710386) + W(6, 1048950515, -1103143659, 1055030644, 1046421002)\n\t\t+ W(7, -1111834851, -1088857895, 1046059111, 1019098869);\n\tsum2 =\n\t\tW(0, 1038047795, 1045715537, 1062099960, -1074982428) + W(1, -1100534663, -1109612723, 1074456323, -1071944747)\n\t\t+ W(2, 1043709757, -1109559353, 1074047524, -1086420775)\n\t\t+ W(3, -1098906327, -1088589586, 1061406543, -1087600981)\n\t\t+ W(4, 1054998296, 1046750383, -1109444720, 1058024333) + W(5, -1097979318, 1030039799, -1095255331, 1040647828)\n\t\t+ W(6, 1042447686, -1112135838, -1106577876, 1042372587)\n\t\t+ W(7, -1135615252, -1108474833, -1098188594, 1051479186);\n\tWS(-1099261566, -1102058551);\n\tsum1 = W(0, 1037460750, -1099740733, 1035868896, 1046250530) + W(1, -1118752449, 1038344912, 1028635221, 1040547388)\n\t\t + W(2, 1048855473, -1097823268, -1135561696, 1049218244)\n\t\t + W(3, 1046116085, -1077722267, -1089090112, 1053686776)\n\t\t + W(4, 1041532007, -1086845489, 1054063629, 1041462458) + W(5, 1043443965, -1109540512, 1036245196, 1041323791)\n\t\t + W(6, 1035797482, -1112472539, 1039520068, -1116084210)\n\t\t + W(7, 1048656673, 1006300060, -1115462467, 1050214602);\n\tsum2 =\n\t\tW(0, -1107023704, -1099880087, 1047853298, -1106650230) + W(1, -1103130345, 1049640504, -1100868353, 1035820630)\n\t\t+ W(2, 1025081245, -1099241173, 1050410790, -1111373979) + W(3, 1007138702, 1060797185, -1096656068, 1048085306)\n\t\t+ W(4, 1020633935, -1096100738, 1053061345, -1098540289) + W(5, 1042694232, 1034621436, -1092716332, 1045275377)\n\t\t+ W(6, -1116958023, -1100840753, 1057695342, -1095110662)\n\t\t+ W(7, -1117764771, 1051814059, -1092707384, 1026583068);\n\tWS(-1081437504, -1086037448);\n\tsum1 = W(0, 1002898847, 1048903167, -1098037791, -1124004134)\n\t\t + W(1, 1034161364, 1048827465, -1110924302, 1038960439)\n\t\t + W(2, -1097339820, 1058952469, -1089826679, -1109622563)\n\t\t + W(3, -1102052735, 1062493730, -1082951605, 1046141833)\n\t\t + W(4, -1122224578, 1056452878, -1095802941, 1037494008)\n\t\t + W(5, -1116847174, 1052097743, -1093057352, -1142221339)\n\t\t + W(6, -1124219870, 1046287775, -1115921615, 1018754897)\n\t\t + W(7, -1114337484, 1051622635, -1097214606, -1115514650);\n\tsum2 =\n\t\tW(0, 1026296217, -1098267531, 1056065541, -1107249906) + W(1, 1046658552, 1054123387, -1080723543, 1049528827)\n\t\t+ W(2, -1092482457, 1031912087, 1068312252, -1094476247)\n\t\t+ W(3, 1048926974, -1103258874, -1095327126, -1114829012)\n\t\t+ W(4, -1093986590, 1064081451, -1101319294, -1110151549)\n\t\t+ W(5, 1051240634, -1081783631, 1054428583, -1109929036) + W(6, 1031417427, 1052301313, -1095108256, 1023898518)\n\t\t+ W(7, -1116201775, -1136084293, 1032992382, -1131461985);\n\tWS(1059931039, 1045326059);\n\tsum1 =\n\t\tW(0, -1105339195, 1027626820, 1035394960, 1020852317) + W(1, -1116497429, -1102542884, 1045819641, -1110241387)\n\t\t+ W(2, -1104905094, 1042432944, 1050447189, -1120454715) + W(3, 1048600749, -1087368655, 1050459387, 1028063406)\n\t\t+ W(4, 1017781140, -1090841955, 1058872902, -1135766366) + W(5, 1028510504, -1098837680, 1038310627, 1046575867)\n\t\t+ W(6, -1104151378, -1135818261, 1009721182, -1121800177)\n\t\t+ W(7, 1006123003, -1102238241, 1039487803, -1138241103);\n\tsum2 =\n\t\tW(0, -1108715925, 1033521028, -1130002309, 1043372642) + W(1, -1125695753, -1107049318, 1043711791, -1096562690)\n\t\t+ W(2, -1106861101, -1126359337, 1069432650, 1055907536) + W(3, 1037467647, 1024736242, 1069236178, -1077602923)\n\t\t+ W(4, 1049447879, -1096919459, -1089672176, -1079492159)\n\t\t+ W(5, -1108013135, 1030099711, -1104043463, 1048192702) + W(6, 1016159100, 1038861546, -1102967963, 1041544949)\n\t\t+ W(7, 1025122350, 1027296385, -1115278753, 1038199238);\n\tWS(1065273279, -1155200022);\n\tsum1 =\n\t\tW(0, 1032043190, -1110724474, 1048813356, -1107914275) + W(1, 1042748400, -1113644224, -1113329098, 1017813644)\n\t\t+ W(2, 1044363154, -1103694886, -1138873982, -1119126921)\n\t\t+ W(3, -1101712885, 1049530899, 1013956115, 1030506334) + W(4, 1020290996, 1032343156, -1088512539, 1047677002)\n\t\t+ W(5, 1042545917, -1119655327, -1118975351, 1035449518)\n\t\t+ W(6, 1023679047, -1113927803, -1112426340, 1040385292) + W(7, 969146311, 1014066252, -1102619473, 1037002750);\n\tsum2 =\n\t\tW(0, -1105379539, 1040024171, 1054804566, 1020126178) + W(1, -1114326988, 1033596237, -1100858724, 1058095820)\n\t\t+ W(2, -1128505094, 1027874005, -1108932212, -1095228668)\n\t\t+ W(3, -1127815582, -1090164335, 1015111122, -1114002666)\n\t\t+ W(4, -1144273240, 1026082941, 1057491035, -1109234902)\n\t\t+ W(5, 1011114412, -1098155637, -1123558275, -1117423595)\n\t\t+ W(6, 1010998384, 1010514392, 1041639386, -1148517800) + W(7, 1008109660, -1110656550, 1025837089, 1028462436);\n\tWS(1064822335, -1095840736);\n\tsum1 =\n\t\tW(0, 1049019197, 1056391992, -1082098174, 1047279757) + W(1, -1114924672, 1052717533, -1097259572, -1158101509)\n\t\t+ W(2, 1006539024, 1053226600, -1083318869, 1028150783) + W(3, 1027273471, 1063307800, -1085358981, 1048033194)\n\t\t+ W(4, 1024001604, 1051465786, -1093212548, 1040827508) + W(5, 1023329786, 1056189595, -1096912972, -1122795750)\n\t\t+ W(6, 1034076369, 1051405604, -1097995110, 1040247311)\n\t\t+ W(7, 1032078653, 1049885284, -1090164049, -1102713147);\n\tsum2 = W(0, 1044291516, 1057945825, 1075245425, -1075047571)\n\t\t + W(1, -1105536143, 1059138923, 1063262829, -1084742426)\n\t\t + W(2, -1123279074, 1064153610, 1058517731, -1087050661)\n\t\t + W(3, -1102729189, -1117658388, 1055818216, -1094508761)\n\t\t + W(4, 1019015608, -1082824416, -1095331241, -1107921801)\n\t\t + W(5, -1098099014, -1088923796, -1082492094, 1066223948)\n\t\t + W(6, 1041233257, -1114762777, -1084810008, 1065694420)\n\t\t + W(7, -1116414073, -1093119165, -1076437009, 1070896480);\n\tWS(-1090760447, 1052695066);\n\tsum1 = W(0, 1032827391, -1086160295, 1058956361, -1122589400)\n\t\t + W(1, 1004836815, -1100507696, 1050270371, 1011775197)\n\t\t + W(2, 1040820154, -1085279840, 1061054293, -1126907788)\n\t\t + W(3, 1033221771, -1085951050, 1060000376, -1109718672)\n\t\t + W(4, -1142824410, -1090476887, 1053225609, 1031459881)\n\t\t + W(5, 1019263487, -1096291378, 1052048107, 1014310644) + W(6, 1033909728, -1104244158, 1044967298, 1002236306)\n\t\t + W(7, 1030288497, -1096098979, -1123372967, 1050105184);\n\tsum2 = W(0, -1115548553, -1119133376, 1034230379, -1106450540)\n\t\t + W(1, 1010795990, 1054475337, 1049648601, -1130742967) + W(2, 1025233265, -1126101085, 1031862009, 1074765700)\n\t\t + W(3, -1108773712, -1096206384, 1056453743, 1076253468)\n\t\t + W(4, 1028577219, 1025243447, -1092511031, 1067142167)\n\t\t + W(5, -1123367926, -1123699076, 1040231624, -1082850789)\n\t\t + W(6, 1027045545, -1116348436, 1052333940, -1074864896)\n\t\t + W(7, 1016487959, 1026289255, -1098871930, -1066441953);\n\tWS(-1098442559, 1026469881);\n\tsum1 = W(0, -1149983818, 1050517915, -1114000872, -1106643136)\n\t\t + W(1, -1119522441, 1049663660, -1102209381, -1107005098)\n\t\t + W(2, -1111872220, 1057681670, -1097110004, -1107624656)\n\t\t + W(3, -1148708523, 1054270423, -1080449641, 1044397088)\n\t\t + W(4, 1033974589, 1065584902, -1089390067, 1040137492) + W(5, 1034687077, 1060962908, -1088971425, 1011262833)\n\t\t + W(6, -1121497336, 1043551013, -1096207069, -1152197144)\n\t\t + W(7, 1040191316, 1037520938, -1098201593, -1111636393);\n\tsum2 = W(0, -1093666199, 1067471948, 1044138823, -1087858714)\n\t\t + W(1, 1049995354, -1083836095, -1089657247, 1040673003)\n\t\t + W(2, -1104373549, 1067519925, 1068116530, -1086283540)\n\t\t + W(3, -1108191449, 1075025493, 1070698122, -1107890740)\n\t\t + W(4, -1086862321, -1079149522, -1077256496, 1052510667)\n\t\t + W(5, -1109961150, -1092122258, -1092830464, 1044801958)\n\t\t + W(6, -1105617480, -1118106953, -1104600439, -1113062539)\n\t\t + W(7, 1057348983, -1090446878, -1095892285, 1040940184);\n\tWS(-1089367999, -1080592817);\n\tsum1 =\n\t\tW(0, 1050901372, 1020565079, -1098563453, -1123752726) + W(1, -1142600967, 1046045566, -1094642094, 1032349343)\n\t\t+ W(2, 1043029392, 1051791856, -1092783656, 1017360893) + W(3, 1042662963, 1059303201, -1082254536, 1040706037)\n\t\t+ W(4, -1131715556, 1060541458, -1088235102, 1038984656) + W(5, 1028335344, 1057651322, -1083519131, 1042767141)\n\t\t+ W(6, 1009439676, 1050310918, -1088554180, 1039511244) + W(7, 1040529906, 1061742083, -1084895582, 1037250730);\n\tsum2 =\n\t\tW(0, -1086948904, 1072921984, -1102597600, -1081008410) + W(1, 1044777691, -1096214776, -1086612116, 1053678014)\n\t\t+ W(2, -1085906527, 1069427540, 1055370552, -1094318103) + W(3, -1107333159, 1069014322, 1068187895, 1040782350)\n\t\t+ W(4, -1094251850, 1068759557, 1049876941, -1097053445)\n\t\t+ W(5, -1101622483, -1095651744, -1098339283, 1052418274)\n\t\t+ W(6, 1054103540, -1080635176, -1098368915, -1116179967)\n\t\t+ W(7, -1095334551, -1071443034, -1119710681, 1057760894);\n\tWS(-1072329816, 1074376722);\n\tsum1 =\n\t\tW(0, -1119826815, -1097135645, 1051061560, 1001332238) + W(1, 1034466519, -1100415357, 1050212013, 1009264740)\n\t\t+ W(2, -1121811611, -1123247055, 1057003368, -1119531350)\n\t\t+ W(3, 1040071236, -1078161261, 1050094223, 1047608180) + W(4, 1034412551, -1086793716, 1060987117, -1139666027)\n\t\t+ W(5, -1125783811, -1092987820, 1053182609, 1053959834)\n\t\t+ W(6, 1025497578, -1117997032, 1030369595, -1130537576) + W(7, 989295697, -1097292445, 1040352158, 1003451511);\n\tsum2 =\n\t\tW(0, 1010850411, 1033963983, 1041326744, -1110591524) + W(1, -1119692159, 1024673399, -1126975570, 1039643589)\n\t\t+ W(2, -1110113403, -1107122545, 1049177676, -1098235771) + W(3, 1041465994, 1041917938, 1075051781, 1061676083)\n\t\t+ W(4, 1019542894, 1031918417, 1057547658, -1072022345) + W(5, 1041361680, 1016152214, -1100210466, -1080793678)\n\t\t+ W(6, -1128076954, -1119110501, -1101468559, 1038326573)\n\t\t+ W(7, 1035827461, -1108745692, -1111890885, -1115279667);\n\tWS(-1089734463, 1065567745);\n\tsum1 = W(0, -1115310942, -1089748010, 1053493076, 1041536229)\n\t\t + W(1, 1048676446, 1033541431, 1047890913, -1111760907) + W(2, 1051913151, -1091844976, 1060749357, 1031051700)\n\t\t + W(3, 1041943745, -1078026925, 1057682191, 1033727319)\n\t\t + W(4, 1032260949, -1083863979, 1060855949, -1117552023)\n\t\t + W(5, -1123414147, -1088695462, 1057895644, -1123512523)\n\t\t + W(6, 1025799735, -1097284573, 1049355215, -1134918146)\n\t\t + W(7, -1118314271, -1090712276, 1052101531, 1037093278);\n\tsum2 = W(0, -1087048499, 1067110585, 1062551012, -1088705293)\n\t\t + W(1, -1089227831, -1073947481, -1107011493, 1063056164)\n\t\t + W(2, -1081828818, -1100054441, 1044700801, -1091908804)\n\t\t + W(3, -1106022394, 1057992187, 1053279159, 1049660447) + W(4, 1057638724, -1096117153, 1047077354, 1041467137)\n\t\t + W(5, 1053589051, 1049824990, -1098858111, -1112699600) + W(6, 1030725267, 1008667589, 1055551992, 991046018)\n\t\t + W(7, 1050363813, 1047082764, -1093863007, -1118599281);\n\tWS(-1079109040, -1085312521);\n\tsum1 =\n\t\tW(0, 1023769582, 1037365911, -1113299189, -1127522065) + W(1, -1140282322, -1117579705, 1042794748, -1098682508)\n\t\t+ W(2, -1105105824, 1052645482, -1086336671, 1041518392) + W(3, 1041551140, 1061549365, -1087637436, 1049784787)\n\t\t+ W(4, 1030694836, -1092653220, 1051894263, -1104535548)\n\t\t+ W(5, -1111084358, 1050958145, -1111723928, -1112540051) + W(6, 955351653, -1113919416, 1039072513, 997865134)\n\t\t+ W(7, -1133450021, 1047664699, -1111528112, -1121426302);\n\tsum2 = W(0, -1112127727, -1182735741, 1027967369, -1099828018)\n\t\t + W(1, 1037755147, -1116775242, -1108084106, -1106208929)\n\t\t + W(2, -1117076760, -1110833901, 1047419656, -1106621688)\n\t\t + W(3, -1096944427, 1050960349, 1057406540, -1093670465) + W(4, 920706880, 1057824022, -1106635563, 1046907280)\n\t\t + W(5, -1126463908, 1025802869, 1030718323, -1104727129)\n\t\t + W(6, 1025583781, -1117624689, -1129307942, 1024731263)\n\t\t + W(7, 1016301114, -1106817101, -1146210056, -1133403952);\n\tWS(1066445424, -1114782683);\n\tsum1 = W(0, -1105169880, -1110498524, 1042140161, 1033176686)\n\t\t + W(1, 1037849343, -1092096849, 1045982494, 1027992139)\n\t\t + W(2, -1111719878, -1089773556, 1059787797, -1104315937)\n\t\t + W(3, 1053025475, -1093199580, 1058443885, 1034263873)\n\t\t + W(4, -1106443352, -1085224723, 1058982105, -1099213011)\n\t\t + W(5, -1118185334, 1017432168, 1051015495, 1015617473)\n\t\t + W(6, -1115180998, -1097477655, 1049335790, -1134277975)\n\t\t + W(7, -1104379365, -1120659192, 1047806371, -1124174113);\n\tsum2 =\n\t\tW(0, 1035156885, -1104443938, 1020765936, 1034215267) + W(1, 1010861092, -1111353322, -1131256669, -1119467871)\n\t\t+ W(2, 1053142713, -1092519845, 1043066295, 1043572605) + W(3, 1050643378, 1033492110, -1093594884, -1120345789)\n\t\t+ W(4, -1093995815, 1061622434, -1090891830, 1035132204)\n\t\t+ W(5, -1100307988, 1045835461, 1051701313, -1120193257)\n\t\t+ W(6, -1094190457, 1054276307, -1115303200, -1107758441)\n\t\t+ W(7, -1095534688, -1118030035, 1044764145, 1010759898);\n\tWS(1053797695, 1034928741);\n\tsum1 =\n\t\tW(0, -1113709609, 1027306577, -1089618673, 1039738506) + W(1, -1101985872, 1036410350, -1094568298, 1041675949)\n\t\t+ W(2, -1098832221, 1048222316, -1089721378, 1049870789) + W(3, -1106547453, 1049396519, 1057932790, 1032602030)\n\t\t+ W(4, 1032341932, -1093507345, 1051551069, 1041034929) + W(5, 1038712045, -1098128846, 1042310981, 1020376402)\n\t\t+ W(6, 1020651977, -1102358117, 1032076306, 1038606871) + W(7, 1037110646, -1095739626, 1049811664, 1036847389);\n\tsum2 =\n\t\tW(0, -1107569978, -1096371488, -1091206842, -1113379832)\n\t\t+ W(1, 1048834253, -1100415470, -1140716449, -1098639187)\n\t\t+ W(2, 1032955728, -1097656368, -1099982688, -1102236471)\n\t\t+ W(3, 1047116738, 1057366407, 1067804624, -1112454303) + W(4, -1095875849, 1049724515, -1107732848, 1037256860)\n\t\t+ W(5, 1024141754, 1047568587, -1101898886, 1039735469) + W(6, -1117854930, 1025784853, -1104360749, 1034482735)\n\t\t+ W(7, 1031286951, 1040928209, -1099991629, -1122662653);\n\tWS(-1100599294, -1113486107);\n\tsum1 = W(0, 1041832895, 1058015130, -1095482492, -1123207408)\n\t\t + W(1, -1113994869, 1043005476, -1095369841, -1120610968)\n\t\t + W(2, -1101582062, 1065539217, -1088297536, 1040056719)\n\t\t + W(3, -1100675730, 1054749782, -1085935041, -1111595960)\n\t\t + W(4, 1015862616, 1046936430, 1054414015, -1110844045) + W(5, 1033573462, 1043027144, -1096194081, 1041950395)\n\t\t + W(6, -1123901241, -1122192647, -1118572185, 1007333963)\n\t\t + W(7, -1147102474, 1047923809, -1106262926, -1097939280);\n\tsum2 = W(0, 1033496750, -1105017139, -1118941046, 1012703263)\n\t\t + W(1, -1118187780, 1043450683, -1142467441, 1009095593)\n\t\t + W(2, 1041080086, -1106458832, -1096734279, 1025973118)\n\t\t + W(3, -1102935461, 1057933296, 1063076098, -1089439993)\n\t\t + W(4, 1023898015, -1098239652, -1119844388, -1124882200)\n\t\t + W(5, -1122438380, -1111698692, 1048742138, 1004297609)\n\t\t + W(6, 1007185073, 1023645924, -1096898561, 1046154393) + W(7, 999989929, 1034431733, -1090457759, 1048791679);\n\tWS(1058454143, -1086058342);\n\tsum1 = W(0, -1115074879, 1051341170, -1123276713, 1040408770)\n\t\t + W(1, -1099743710, 1054019099, -1112675511, 1042487060)\n\t\t + W(2, -1103933280, 1057240637, -1095853513, 1044345774)\n\t\t + W(3, -1113530407, -1085932301, 1048593300, 1034191179)\n\t\t + W(4, -1124606630, -1090466976, 1059272419, -1105205160)\n\t\t + W(5, -1115568198, -1097279225, 1052135974, -1111240730)\n\t\t + W(6, -1123572016, -1108988935, 1039376368, -1135917288)\n\t\t + W(7, -1118699368, -1095706385, 1041536544, 1043157563);\n\tsum2 = W(0, 1047642666, -1106684338, -1097565895, 1038757740)\n\t\t + W(1, -1094360366, -1104496052, -1137000462, -1120606628)\n\t\t + W(2, -1111839157, -1101578828, 1017360469, 1043520604)\n\t\t + W(3, -1101124559, 1062389037, 1056361687, -1110716481)\n\t\t + W(4, -1119401007, -1099504899, 1057357121, -1121032787)\n\t\t + W(5, -1114275291, -1102577927, -1111580608, -1174578992)\n\t\t + W(6, 1010413358, -1121638606, 1047557438, 1020758339)\n\t\t + W(7, 1018914035, -1100286365, -1108198790, 1031842399);\n\tWS(-1116191222, -1087222261);\n\tsum1 = W(0, 1051378220, -1092140039, -1098282527, -1115126509)\n\t\t + W(1, 1026061480, 1041212802, -1108686318, 1018050395) + W(2, 1051132746, 1028855632, -1114615088, 1028919646)\n\t\t + W(3, -1131139769, 1054776996, -1096808426, 1031880915)\n\t\t + W(4, 1029438530, 1052461054, -1090181940, 1047407636) + W(5, 1010253799, 1056191968, -1089672580, 1041055121)\n\t\t + W(6, -1140691900, 1041996679, -1095415146, 1025713945)\n\t\t + W(7, 1032111196, 1051463563, -1084069643, 1049760258);\n\tsum2 = W(0, -1120688670, 1075791226, 1072772368, 1033088733)\n\t\t + W(1, 988781159, -1079951996, -1096143661, -1126178338)\n\t\t + W(2, 1023531678, -1080919050, -1087274515, 1039982901)\n\t\t + W(3, 1034244658, -1078043585, -1074830486, -1153355920)\n\t\t + W(4, 1038669521, 1061514147, -1138433181, 1047086021)\n\t\t + W(5, -1125227753, 1050383220, -1091737459, -1117938706)\n\t\t + W(6, -1122152897, 1043495776, 1043710967, 1036258954)\n\t\t + W(7, -1123518214, 1056154705, 1064633897, -1090859740);\n\tWS(-1086114623, -1084816591);\n\tsum1 =\n\t\tW(0, -1119067590, 1036163639, -1106221778, 1015833809) + W(1, 1041053515, -1112478813, -1114565991, 1041839788)\n\t\t+ W(2, -1123050946, 1045609440, -1102274148, 1038604869) + W(3, 1050414506, -1091176571, 1041957568, 1049671879)\n\t\t+ W(4, 1017204584, -1096458464, -1140250052, 1016035267) + W(5, 1033253648, -1092456237, 1042499428, 1004159150)\n\t\t+ W(6, -1109025761, 1039781304, 1024592194, 1019624502)\n\t\t+ W(7, -1142909644, 1019336538, -1110741472, 1038938427);\n\tsum2 =\n\t\tW(0, 1006657945, -1115603798, 1043167348, 1032033598) + W(1, -1145756082, -1129023472, 1029036192, -1122908214)\n\t\t+ W(2, -1102183527, 1024575987, -1134024937, 1013148193)\n\t\t+ W(3, 1043063832, -1070476153, -1079118960, -1117007948) + W(4, 1048257970, 1078068971, 1058188063, 1026806223)\n\t\t+ W(5, 1030027167, 1034687231, 1026633068, -1106350665) + W(6, -1129422896, 1014471457, -1138449465, 1037397710)\n\t\t+ W(7, -1120006792, 998969122, 1035752331, -1119066852);\n\tWS(1058895967, -1115291633);\n\tsum1 = W(0, -1125313920, -1118075736, -1101537045, -1102743433)\n\t\t + W(1, -1110715998, 1028840739, -1106860038, -1113756805)\n\t\t + W(2, -1110540830, 1050429809, -1109809347, -1112821659)\n\t\t + W(3, -1093243535, 1056177832, 1062536899, -1094426092)\n\t\t + W(4, -1098773368, 1050921353, 1050429425, -1112140166)\n\t\t + W(5, -1114664694, 1021103494, 1042267175, -1105504016)\n\t\t + W(6, -1108229374, 1039051533, -1104944731, -1123143221)\n\t\t + W(7, -1128878150, 1048765371, 1019165331, -1113092552);\n\tsum2 = W(0, -1118991740, 1049660250, -1072802862, -1093107290)\n\t\t + W(1, 1035161218, -1092533458, -1084844108, -1131472334)\n\t\t + W(2, 1031409558, 1052404039, 1059153934, -1099814906) + W(3, 1025873763, 1059098325, 1066715964, 1050189246)\n\t\t + W(4, -1130385854, 1035329255, 1054800035, 1033113369)\n\t\t + W(5, -1109675818, 1033133876, -1121630224, 1032032260) + W(6, 1035221069, -1100849576, 1017402854, 999987753)\n\t\t + W(7, -1106515599, 1041079456, 1051036492, -1109656332);\n\tWS(-1088275071, -1079832501);\n\tsum1 =\n\t\tW(0, -1121609972, -1140631216, 1031902612, -1114449795) + W(1, 1054795207, 1001216956, 1053928586, 1049117898)\n\t\t+ W(2, -1091175970, -1109051587, -1100362195, -1089874193)\n\t\t+ W(3, 1036185063, -1108520810, -1118566269, 1024185910) + W(4, 1036253081, -1112588624, 1050418310, 1033419200)\n\t\t+ W(5, -1095852779, -1111932116, -1106845532, -1098704820)\n\t\t+ W(6, 1056993046, 1018114011, 1057036918, 1052334541)\n\t\t+ W(7, -1099614386, -1114447781, -1106898567, -1103629998);\n\tsum2 = W(0, 1034198694, -1099753021, 1052074243, -1101897553) + W(1, 981839325, 1036479145, 1033443852, -1125560160)\n\t\t + W(2, 1050051875, -1087878645, 1061175239, -1090657055)\n\t\t + W(3, 1043520387, -1099082069, 1044393022, -1126528836)\n\t\t + W(4, -1099547613, 1049181233, 1036533430, -1113239720)\n\t\t + W(5, 1020237946, -1106552091, -1125692060, -1111189720)\n\t\t + W(6, -1112528204, 1051666481, -1100952955, 1038783930)\n\t\t + W(7, 1032634213, -1105193718, 1038429221, -1110455840);\n\tWS(1055684799, 1057467177);\n\tsum1 =\n\t\tW(0, -1115635180, -1084593518, 1057349085, 1044528285) + W(1, 1040983065, -1097583958, 1048845932, -1108137881)\n\t\t+ W(2, 1033664034, -1088354001, 1059080519, 1042415046) + W(3, 1047016048, -1083875169, 1057461395, -1130549589)\n\t\t+ W(4, 1040303666, -1089538899, 1055847004, 1025308788) + W(5, 1031194256, -1090088564, 1052697432, 1040121956)\n\t\t+ W(6, 1036112338, -1096939300, 1050363555, -1124884732)\n\t\t+ W(7, 1031542812, -1092334596, 1025617138, 1051059157);\n\tsum2 = W(0, 1039076253, 1084724252, 1055999642, -1111202323) + W(1, 1043377438, 1057352437, -1108204793, 982595482)\n\t\t + W(2, -1111770710, -1070809771, -1115649819, 1026864091)\n\t\t + W(3, -1129064764, -1070013447, -1084654208, 1008953953)\n\t\t + W(4, 1041506513, 1024963427, 1027889169, 1041107952)\n\t\t + W(5, -1117340191, -1115045950, 1023558847, -1112891517)\n\t\t + W(6, -1113661124, 1037860995, -1108774739, -1161342746)\n\t\t + W(7, 1006037802, -1120758055, 1034794526, 1036271073);\n\tWS(-1089965247, 1033154456);\n\tsum1 =\n\t\tW(0, -1118330000, 1037068672, 1043453383, -1112803845) + W(1, 1043361746, -1091726905, 1027410848, 1030795409)\n\t\t+ W(2, 1028536899, -1106295439, 1047994631, -1111747193)\n\t\t+ W(3, -1106541856, -1087991002, 1053447482, -1109712917)\n\t\t+ W(4, -1103233833, -1094017778, 1058853977, -1110327970)\n\t\t+ W(5, 1037178020, 1026207675, 1049286760, -1111739348) + W(6, -1122355891, -1102222128, 1044913013, 1037236782)\n\t\t+ W(7, -1148310999, -1106998176, 1056026770, -1104668925);\n\tsum2 = W(0, -1104081637, -1104712414, 1038273275, -1102746442)\n\t\t + W(1, -1115350296, 1065017407, 1027805677, 1038124336)\n\t\t + W(2, -1102551062, -1101193417, -1097697554, 1025981021)\n\t\t + W(3, 1033477476, 1054909386, 1069044481, -1090398660) + W(4, 1048930937, -1096226206, 1051154993, 1049254524)\n\t\t + W(5, -1092653578, -1094950793, -1097937335, -1111378843)\n\t\t + W(6, 1049862570, 1042131871, -1115393002, -1100983150)\n\t\t + W(7, -1095610208, -1100838677, -1090656582, 1038627466);\n\tWS(1053522367, -1088249107);\n\tsum1 = W(0, 1041083642, 1049354980, -1104528935, -1116245577)\n\t\t + W(1, -1109062519, 1050121221, -1089361286, -1108913352)\n\t\t + W(2, 1041255149, 1062047573, -1094323010, 1044478835)\n\t\t + W(3, -1129341567, 1050256849, -1085946707, -1106612546)\n\t\t + W(4, -1122816004, 1058306025, -1092704114, 1010650184)\n\t\t + W(5, 1034422596, 1054029415, -1096738148, -1127765836)\n\t\t + W(6, -1105678140, 1043380368, -1095183726, 1004046811)\n\t\t + W(7, 1002201935, 1057986114, -1098664466, -1116617606);\n\tsum2 = W(0, -1115691041, 1047105417, 1066880006, -1078420733)\n\t\t + W(1, -1122196578, 1040512713, 1072356775, -1074089832)\n\t\t + W(2, -1133382325, -1115639944, 1070833917, -1079250237)\n\t\t + W(3, -1119943136, -1093984910, -1106032356, 1053171659)\n\t\t + W(4, 1035619338, -1128164365, -1084317659, 1063302165)\n\t\t + W(5, 1026693101, -1112542694, -1103058628, 1050228647)\n\t\t + W(6, -1121646682, 1040561229, -1106694088, -1111273903)\n\t\t + W(7, 1035287249, -1122951759, -1109474775, 1041535222);\n\tWS(1054980735, -1118400611);\n\tsum1 =\n\t\tW(0, 1023857233, 1056052581, -1108899938, -1098911041) + W(1, -1136534172, 1054619866, -1084632317, 1014993130)\n\t\t+ W(2, -1109579886, 1062631892, -1087670245, 1019079234) + W(3, 1024279465, 1063340895, -1087714282, 984908360)\n\t\t+ W(4, 1031638446, 1054891904, -1089981519, 1040973935) + W(5, 1042081899, 1032051762, -1091518889, 1034243544)\n\t\t+ W(6, 1025101580, 1036582853, -1100292439, 1038263499) + W(7, 1037741818, 1040187076, -1096282711, 1035333164);\n\tsum2 = W(0, 1048663857, -1103126769, -1090522781, -1135969141)\n\t\t + W(1, -1115607290, -1089284711, -1135630263, -1096474341)\n\t\t + W(2, 1050959246, -1106476140, -1116194786, -1110761886)\n\t\t + W(3, -1094885185, 1065597134, 1068281966, -1097679100)\n\t\t + W(4, 1032263390, -1114774312, -1114594327, 1030603925)\n\t\t + W(5, -1094433235, 1044112203, 1034641663, 1025157613)\n\t\t + W(6, 1034671855, -1110680696, -1120338125, -1121778209)\n\t\t + W(7, -1100445080, 1044150663, 1039802827, -1101519530);\n\tWS(-1099426814, 1028666567);\n\tsum1 =\n\t\tW(0, 1017347599, 1050515008, -1097546199, -1122852442) + W(1, -1114817850, 1054909169, -1091252816, 1034424401)\n\t\t+ W(2, -1102332157, 1058789976, -1088740593, 1040697053) + W(3, 1038414608, 1049870885, 1026332624, -1119196265)\n\t\t+ W(4, 1040863441, -1096181150, 1050979384, -1096850298)\n\t\t+ W(5, 1043586729, -1094822147, 1046083753, -1101867410)\n\t\t+ W(6, 1033560385, -1110297504, 1043042893, -1112505198)\n\t\t+ W(7, 1024225691, 1035801215, -1106319780, 1022200238);\n\tsum2 = W(0, 1032296335, -1113854030, -1123218166, 1034439881)\n\t\t + W(1, -1113414658, 1056314261, 1057288090, -1106401889) + W(2, 1032045591, 1056282685, 1048444709, 1027355020)\n\t\t + W(3, -1096252543, -1076472908, -1076465599, -1099548772)\n\t\t + W(4, 1039836782, 1041975936, 1054239999, 1041344971) + W(5, -1130462124, 1060789196, 1064414385, -1137373456)\n\t\t + W(6, 1032505935, -1113045826, -1101415652, 1031341874)\n\t\t + W(7, 1017080436, -1114544525, 1017354944, -1131418272);\n\tWS(1048405758, 1021439377);\n\tsum1 = W(0, -1095783591, 1056714988, -1095028931, -1099026446)\n\t\t + W(1, 1004365570, 1053912029, -1097931508, 1040281084)\n\t\t + W(2, -1111296393, 1060368018, -1093355890, 1042667324)\n\t\t + W(3, -1090472608, 1058906144, -1084869763, -1099317986)\n\t\t + W(4, 1053249340, 1059710205, -1111710658, 1058667863)\n\t\t + W(5, -1096289768, 1050004859, -1089344390, -1094050929)\n\t\t + W(6, -1116930177, 1050104788, -1098648430, 1032145973)\n\t\t + W(7, 1031327257, 1057263364, -1095692170, -1127343131);\n\tsum2 =\n\t\tW(0, -1137650289, -1102128439, 1065729447, -1085103011) + W(1, -1108324664, 1038586891, 1042582877, -1096095433)\n\t\t+ W(2, -1107068637, -1102631398, 1055966210, -1096657292)\n\t\t+ W(3, 1053004242, -1096144010, 1066736444, -1084794119)\n\t\t+ W(4, -1096186406, 1065778432, -1077760412, 1061684194)\n\t\t+ W(5, 1044011702, -1087564484, -1109340585, 1053274132) + W(6, 1031462490, 1041037240, -1088233524, 1060428365)\n\t\t+ W(7, 1016473473, -1095964556, -1079487884, 1070082531);\n\tWS(-1120621558, -1109747932);\n\tsum1 = W(0, 1041405257, 1056552380, -1086075216, 1021959803) + W(1, 1034046808, 1057052863, -1102283433, 1009707220)\n\t\t + W(2, -1118447615, 1034826244, -1089852749, 1002695151)\n\t\t + W(3, 1031113092, 1061462741, -1087896594, 1030648525)\n\t\t + W(4, -1118172841, 1057041023, -1089300195, 1017359341)\n\t\t + W(5, 1039149197, 1051800560, -1089266110, 1034838445) + W(6, 1025628006, 1051243933, -1098077639, 1033512688)\n\t\t + W(7, 1023987646, 1054503948, -1098034299, -1099231069);\n\tsum2 =\n\t\tW(0, -1072120352, 1076686179, -1096491690, -1109988374) + W(1, -1071453180, 1075980741, 1055107632, -1125676035)\n\t\t+ W(2, -1069998225, 1075876198, -1100816518, 1033428305) + W(3, -1071241469, 1076219984, 1048961210, 1018908197)\n\t\t+ W(4, -1073669228, 1072219376, -1123192163, 1040773271)\n\t\t+ W(5, -1079882002, 1071235859, -1097056656, -1129279043)\n\t\t+ W(6, -1086087106, 1056170781, 1049622318, 1030403985)\n\t\t+ W(7, -1096258120, 1057784547, -1098632303, -1116156171);\n\tWS(1014286296, 1057122707);\n\tsum1 = W(0, -1100574608, 1045128364, 1045637171, -1113867461)\n\t\t + W(1, -1134927261, -1112841149, 1041785732, 1021982785)\n\t\t + W(2, -1096946922, 1023155519, 1051848326, -1106336253)\n\t\t + W(3, -1115033128, -1094208427, 1066937726, -1099783438)\n\t\t + W(4, -1104533485, -1099169249, 1058599142, -1105189673)\n\t\t + W(5, -1121259095, -1097752701, 1049921902, -1131816685)\n\t\t + W(6, -1131995140, -1111007544, -1118760834, -1114789302)\n\t\t + W(7, -1118839498, -1093400894, 1043420320, -1116552190);\n\tsum2 = W(0, 1049653051, -1095117458, 1052542945, 1018695699)\n\t\t + W(1, -1094509070, 1054995367, 1021265631, -1101605993) + W(2, 1050525055, 1042728281, 1046926465, 1044635344)\n\t\t + W(3, -1103662151, 1058124872, 1063131010, -1104882803) + W(4, 1043452805, 1049859565, 1029162962, 1042944443)\n\t\t + W(5, -1102028885, -1097129382, -1116537562, -1110047725)\n\t\t + W(6, -1109754017, -1098619851, -1092457406, -1107003327)\n\t\t + W(7, -1111709279, 1051259496, -1078653130, -1114867517);\n\tWS(-1089617919, -1078924764);\n\tsum1 =\n\t\tW(0, 1038586191, 1054651431, -1087542485, 1032587193) + W(1, -1112517470, 1043170193, -1101086846, -1121720345)\n\t\t+ W(2, 1021690773, 1058605998, -1088163691, 1034793549)\n\t\t+ W(3, -1148410045, 1062049174, -1087004528, -1139319682)\n\t\t+ W(4, -1123773533, 1056236357, -1089020247, 1040971627) + W(5, 1037589846, 1058401044, -1089711896, 1052009144)\n\t\t+ W(6, -1114886949, 1034515388, -1095006441, 1017461287)\n\t\t+ W(7, 1015916580, 1056139353, -1089662071, -1138694970);\n\tsum2 =\n\t\tW(0, 1041183203, -1104791361, -1113641717, 1040266660) + W(1, -1109901203, -1103309504, 1018299463, -1124518657)\n\t\t+ W(2, 1047303939, -1109225788, 993644855, 1039912380) + W(3, -1146453442, 1050748307, 1050538753, -1107008276)\n\t\t+ W(4, -1103370030, 1032462009, 1024125183, -1094411631) + W(5, 1035308463, 1055570013, 1058013570, -1087158984)\n\t\t+ W(6, -1107592095, -1104507532, 1044744090, -1091454514)\n\t\t+ W(7, -1129723226, 1050955773, -1110543421, -1122733934);\n\tWS(-1102088830, 1068463311);\n\tsum1 = W(0, 1007817678, 1054791531, -1088166471, 1034628887)\n\t\t + W(1, -1114291787, 1051084317, -1097682087, -1130503387)\n\t\t + W(2, -1106493040, 1059023407, -1087032011, 1042839161)\n\t\t + W(3, -1121377148, 1060487316, -1087032009, 1025313797)\n\t\t + W(4, -1120569345, 1053262386, -1090195409, 1040112167)\n\t\t + W(5, 1037434082, 1049438849, -1104445288, -1112558866)\n\t\t + W(6, -1121570543, 1043319351, -1110294871, -1130274577)\n\t\t + W(7, 1048479966, 1037267389, -1112047510, -1107488086);\n\tsum2 =\n\t\tW(0, -1092702026, 1046572938, -1113806693, 1023924734) + W(1, -1078842502, -1092761370, 1010298098, -1134107544)\n\t\t+ W(2, -1073165872, 1048469719, -1106037347, -1114438827)\n\t\t+ W(3, -1075365553, 1050413401, 1041503306, 1017902665) + W(4, -1101579557, -1110447061, 1037192623, 1011674154)\n\t\t+ W(5, 1066341075, -1104166524, 1033398310, -1109271682) + W(6, 1071992070, -1123716833, 1031702363, 1028552632)\n\t\t+ W(7, 1076187261, 1056626852, -1110743783, -1123830383);\n\tWS(1050299903, -1120086405);\n\tsum1 = W(0, 1001761330, 1015037916, 1045981578, 1032160884) + W(1, 1051426245, 1042953374, -1094503950, -1131440192)\n\t\t + W(2, -1097473350, -1103780307, 1055197076, -1100940622)\n\t\t + W(3, 1050955122, -1082933123, -1099126616, 1056645367)\n\t\t + W(4, -1098718343, 1055455844, -1118831961, -1095742542)\n\t\t + W(5, -1119699408, -1145769035, 1049761702, 1031622998)\n\t\t + W(6, 1038117517, -1132909758, -1105955296, 1041481643)\n\t\t + W(7, -1107622229, 1039587926, 1047033256, -1103124921);\n\tsum2 =\n\t\tW(0, 1033493706, -1100025935, -1117747708, -1131691420) + W(1, 1004282338, 1036668146, -1097774825, 1042472719)\n\t\t+ W(2, 1032395114, 1043333590, -1106149887, -1122758767)\n\t\t+ W(3, 1035721710, 1058018229, -1110236537, -1106477628)\n\t\t+ W(4, -1138557465, 1035348312, -1105971349, 1046834331)\n\t\t+ W(5, -1094630455, 1040910383, 1017216296, -1101697584) + W(6, 1050323990, 1034465026, -1110352462, 1040100106)\n\t\t+ W(7, -1102984389, 1044530527, -1108832665, -1099114129);\n\tWS(1059761855, -1093333930);\n\tsum1 = W(0, -1114738580, 1026403632, -1105736123, -1114933837)\n\t\t + W(1, -1114617627, 1045397583, -1109519752, 1044731740)\n\t\t + W(2, -1102727321, 1028768699, -1092041414, -1111636685)\n\t\t + W(3, 1053910378, 1067649611, -1090720496, 1058839312)\n\t\t + W(4, -1094270689, -1104323849, -1112030179, -1095377736)\n\t\t + W(5, -1107452471, 1042776267, -1103704317, 1034877772)\n\t\t + W(6, -1130455238, 1036450873, -1131764742, 1031929286)\n\t\t + W(7, -1108958070, 1044075076, -1106063752, -1113359528);\n\tsum2 = W(0, 1033753751, -1111931472, 1037689465, 1023732592)\n\t\t + W(1, -1102724392, 1032416705, -1105246922, -1126463180)\n\t\t + W(2, -1104466296, 1029992729, 1052475163, -1118149766)\n\t\t + W(3, -1083668043, 1069568682, -1090236396, -1106129378)\n\t\t + W(4, 1048180527, -1114422988, -1122305941, 1038071226)\n\t\t + W(5, -1130490520, -1133345747, -1123788932, -1124715334)\n\t\t + W(6, -1103926430, 1038116955, -1127253836, -1117123194)\n\t\t + W(7, 1029490699, -1129834714, -1122171294, 1029091180);\n\tWS(1058247519, 1058950523);\n\tsum1 = W(0, -1149972914, -1088063023, 1055543086, 1037155715)\n\t\t + W(1, 1038957612, -1093535488, 1052729022, 1026693813) + W(2, 1039970419, -1086741707, 1058924163, 1030719286)\n\t\t + W(3, 1008158544, -1077128706, 1057693884, 1032127358) + W(4, 1041515382, -1087332234, 1060656868, 1000958261)\n\t\t + W(5, 1036144305, 1032313207, 1056531259, -1112386573)\n\t\t + W(6, 1048236362, -1113848378, 1049522521, -1144612480)\n\t\t + W(7, -1101573740, -1089306475, 1052006205, 1039554949);\n\tsum2 =\n\t\tW(0, 1037957789, 1050553491, -1089722328, 1050994656) + W(1, -1128637884, 1004874497, 1058234547, -1095571828)\n\t\t+ W(2, -1110859440, -1106433025, -1098594890, 1041665953)\n\t\t+ W(3, 1052981065, 1058989771, 1052545864, -1129708900) + W(4, 1040710261, 1058251934, -1106724054, -1111634443)\n\t\t+ W(5, -1090346288, -1076253449, 1032950959, 1015279680)\n\t\t+ W(6, -1107045102, -1079150504, 1055215751, 1053553553)\n\t\t+ W(7, -1092015484, 1073146781, 993278274, -1088813426);\n\tWS(-1079689312, 1054955487);\n\tsum1 =\n\t\tW(0, -1112827293, -1094091800, 1053343716, 1046408387) + W(1, 1038847520, -1099397203, 1057879171, -1099233409)\n\t\t+ W(2, -1106748654, -1102151838, 1023820222, -1154890390)\n\t\t+ W(3, 1038138418, -1086663035, 1057249493, 1012875058) + W(4, 1035397268, -1087965823, 1057985827, -1109124523)\n\t\t+ W(5, 1020226162, -1095805620, 1053821069, -1126965269) + W(6, 1030022886, -1098762192, 1051466543, 1036334304)\n\t\t+ W(7, -1108673687, -1096846716, 1049463311, 1027304762);\n\tsum2 = W(0, 1029906557, -1118908362, -1075330978, 1069116571)\n\t\t + W(1, -1110945783, -1110004947, -1081100797, 1067844910)\n\t\t + W(2, 1046588193, -1089040350, -1089891752, 1066162938)\n\t\t + W(3, -1121400966, -1106443118, -1103643831, 1048795077)\n\t\t + W(4, -1106274145, 1054044230, -1095873523, 1049522444)\n\t\t + W(5, 1040948990, -1115139995, -1120742988, 1042365723)\n\t\t + W(6, -1114149785, -1112260837, -1107023588, 1011222152)\n\t\t + W(7, 1030737726, 1025987216, 1017833328, 1031208089);\n\tWS(1045323518, -1099573370);\n\tsum1 =\n\t\tW(0, 1043494028, 1054678847, -1087400961, 1041221965) + W(1, -1110296205, 1050638833, -1098183847, 1038272854)\n\t\t+ W(2, -1129034139, 1058657792, -1085969705, 1035507984) + W(3, 1040205415, 1062545342, -1082320511, 1038672050)\n\t\t+ W(4, 1019451328, 1053087270, -1092792902, 1018934299) + W(5, 1037480760, 1054717567, -1090230188, 1028598065)\n\t\t+ W(6, -1144942569, 1044080591, -1094581114, 1032398451)\n\t\t+ W(7, 1019441962, 1056118375, -1090342307, -1135273190);\n\tsum2 = W(0, -1115726367, -1100272494, 1026681555, -1095030133)\n\t\t + W(1, 1028786141, -1113941052, -1107020345, 1043410282)\n\t\t + W(2, 1044450180, -1104186275, 1044693748, -1120312046)\n\t\t + W(3, -1097529180, 1042859033, 1067055887, -1093369648)\n\t\t + W(4, 1047479398, -1097402721, 1064288021, -1083945294)\n\t\t + W(5, -1105649332, 1051025911, 1073649944, -1073003592)\n\t\t + W(6, -1127420023, 1025042835, 1067916626, -1079526678)\n\t\t + W(7, 1035799966, -1139194229, 1054550763, -1086831079);\n\tWS(-1086660959, -1095040438);\n\tsum1 = W(0, -1137772688, -1101831491, 1047762270, 1026497863)\n\t\t + W(1, -1103872010, -1108733164, 1048734598, -1112526127)\n\t\t + W(2, 1033664792, -1099393082, 1053294440, 1036444877)\n\t\t + W(3, -1114303830, -1091611870, 1032897582, -1105948909)\n\t\t + W(4, 1043631948, -1111668992, 1054700448, 1045765800)\n\t\t + W(5, -1110960013, -1092153253, 1051790266, -1102627253)\n\t\t + W(6, -1112201312, -1104258339, 1038982672, 1030853145)\n\t\t + W(7, 1004207675, -1111896549, 1042342295, 1024477884);\n\tsum2 =\n\t\tW(0, 1047134358, -1100773581, 1038575217, -1121016162) + W(1, 1032860761, 1019143260, -1097448906, 1027754828)\n\t\t+ W(2, 1058187056, -1086969962, 1050436365, -1118814167)\n\t\t+ W(3, -1089859690, 1060822499, -1092585260, 1047705700) + W(4, -1073724300, 1074524802, -1097001013, 992280012)\n\t\t+ W(5, -1113017653, -1127402252, 1052022456, -1115523910)\n\t\t+ W(6, -1123513506, 986153015, -1101541136, 1026625966) + W(7, 1005834992, 1026902445, 1040058169, -1115254226);\n\tWS(1065625968, 1033455989);\n\tsum1 = W(0, 1037701789, -1151616802, -1102944307, 1035789757)\n\t\t + W(1, -1137040283, -1099349487, 1053320242, -1106274637)\n\t\t + W(2, 1000406064, 1047711372, -1098462560, 1048627484)\n\t\t + W(3, -1094784938, -1115632781, 1053161728, -1098374228)\n\t\t + W(4, 1050863995, -1088133648, 1049613697, -1120581030)\n\t\t + W(5, -1103592251, 1049293870, -1128175786, -1114622845)\n\t\t + W(6, 1032127959, -1118922740, 1017489163, 1038993832)\n\t\t + W(7, 1038622703, -1120882929, -1119810116, -1165953346);\n\tsum2 = W(0, 1035866397, -1099238508, 1052038184, -1107491561)\n\t\t + W(1, -1103116216, 1047962584, -1105248240, 1027069673)\n\t\t + W(2, 1059558286, -1082734190, 1057669233, -1098068789)\n\t\t + W(3, 1058384307, -1088122523, -1091086098, 1053762892)\n\t\t + W(4, -1096953271, 1056069525, -1083280561, 1064349048)\n\t\t + W(5, 1042132369, -1106560803, 1032403631, -1107462772)\n\t\t + W(6, -1111426470, 1038442279, -1104452063, 1040922744)\n\t\t + W(7, -1128202268, 1028886015, -1150402298, 1012204557);\n\tWS(1066439152, -1108830929);\n\tsum1 = W(0, -1102916748, 1055608939, -1103898045, 1013732302)\n\t\t + W(1, -1108788820, 1051866141, -1097938907, 1035488645)\n\t\t + W(2, -1097607254, 1058768962, -1093577324, 1043113957)\n\t\t + W(3, -1099017414, 1030462560, -1125603603, 1027216291)\n\t\t + W(4, -1168846782, -1113005110, 1040477611, -1143171172)\n\t\t + W(5, -1109193920, -1109987210, 1050862423, -1118580993)\n\t\t + W(6, -1128476473, -1109670205, 1039038758, -1107320747)\n\t\t + W(7, -1106724277, -1105116142, 1053895221, -1107171108);\n\tsum2 =\n\t\tW(0, 1050905005, 1051409035, -1123874142, -1099079861) + W(1, 1051922636, -1107944278, -1131839644, 1035659117)\n\t\t+ W(2, 1052154527, 1040207956, -1100926997, -1109355656) + W(3, 1005525738, 1060123319, 1046139234, 1029590720)\n\t\t+ W(4, 1024591478, 1032045878, -1113252250, 1032543174) + W(5, -1094205878, -1096175996, 1039675350, 1044310065)\n\t\t+ W(6, -1094330307, -1086096303, -1128729660, -1129395200)\n\t\t+ W(7, -1105421569, -1081193369, 1062516858, 1042520685);\n\tWS(-1094347903, 1040885342);\n\tsum1 =\n\t\tW(0, 1027015666, -1119901274, -1109404651, -1145327523) + W(1, -1097151811, 1047615033, 1051228067, -1096635113)\n\t\t+ W(2, 1050782150, -1115052947, -1096976391, 1048638245)\n\t\t+ W(3, -1106442815, 1051587896, -1096200649, -1105180361)\n\t\t+ W(4, 1051184308, -1105704339, -1126487153, 1051518582)\n\t\t+ W(5, -1091810963, 1046407197, 1040585575, -1092825760) + W(6, 1034433919, 1009768300, -1132445914, 1038762547)\n\t\t+ W(7, 1042242605, -1122889273, -1108464678, 1040013733);\n\tsum2 = W(0, -1121205117, -1124056141, -1106581817, 1026565438)\n\t\t + W(1, 1031829824, -1109805410, 1007706034, 1029970286) + W(2, -1105324964, 1045427632, 1046732003, 1047283254)\n\t\t + W(3, -1090390675, 1059020251, 1057752640, -1089850616)\n\t\t + W(4, -1110420773, -1107061510, -1101115525, 1031976810)\n\t\t + W(5, 1018005966, -1118368537, -1103994134, 1036394258)\n\t\t + W(6, -1113281242, -1115675784, 1036673543, -1112565336)\n\t\t + W(7, 1032068637, -1113920834, 1042522746, -1145818031);\n\tWS(1066366016, -1121083386);\n\tsum1 =\n\t\tW(0, -1127500850, 1026624689, 1013565235, -1127181143) + W(1, -1122305754, -1114017662, 1052467062, 1035730049)\n\t\t+ W(2, 1025706181, -1088657475, -1121688536, 1045310349)\n\t\t+ W(3, -1104671484, -1098749979, 1066224034, 1026340635)\n\t\t+ W(4, 1043832110, -1085705014, -1112016562, -1121566277)\n\t\t+ W(5, -1111488580, 1037547214, 1041900405, -1127673329) + W(6, -1123271764, -1112264441, 1043675185, 998683632)\n\t\t+ W(7, 1015742169, -1105147876, 1022047173, -1132045794);\n\tsum2 = W(0, -1102951634, 1043023116, -1104735391, 1035018995)\n\t\t + W(1, 1044058166, -1093545812, 1058451408, -1112978123)\n\t\t + W(2, 1037657608, -1093647750, -1104370519, 1043811519)\n\t\t + W(3, -1091261805, 1070997171, -1105620254, 1052846459)\n\t\t + W(4, 1057746121, -1082044166, -1091103100, -1097428497)\n\t\t + W(5, -1106029228, 1051593249, -1096225251, -1127092852)\n\t\t + W(6, 1006392595, -1100798567, 1052307063, -1107453736)\n\t\t + W(7, -1119100020, 1013819138, -1121077487, 1041369362);\n\tWS(1059191103, 1030618557);\n\tsum1 =\n\t\tW(0, 1034200101, 1032351793, -1100440271, -1148363237) + W(1, 1053678608, 1049973094, -1098031908, 1026486548)\n\t\t+ W(2, -1114145283, 1058794603, -1087452589, -1194991971)\n\t\t+ W(3, 1047695489, 1053292689, -1078695803, 1043453347) + W(4, -1114663316, 1055818163, -1125225546, 1033675947)\n\t\t+ W(5, -1137634576, 1053263444, -1094543429, 966472909)\n\t\t+ W(6, -1125278731, 1041016873, -1116533557, -1115520783)\n\t\t+ W(7, -1138534517, 1043320696, -1104858229, -1119664758);\n\tsum2 =\n\t\tW(0, 1021496216, -1095812325, -1116672596, 1031503244) + W(1, -1072453458, -1094113031, -1112299630, 1023122856)\n\t\t+ W(2, -1079530578, 1068683999, -1135088113, 1036078566) + W(3, 1063841069, 1074699170, -1126165044, 1036242384)\n\t\t+ W(4, -1095958945, 1043477830, -1107446259, -1100441243)\n\t\t+ W(5, 1042172731, 1031880682, -1119142347, 1009915385) + W(6, 1015153576, -1121439437, 1037216194, -1114450875)\n\t\t+ W(7, -1132334880, -1115200049, 1034903618, 1017712520);\n\tWS(-1096433855, 1052342409);\n\tsum1 = W(0, -1117693364, 1042163431, 1006023611, -1113444755)\n\t\t + W(1, 1041070378, -1095385709, 1034697390, 1049542464)\n\t\t + W(2, -1105417036, 1060080198, -1109633387, -1112382959)\n\t\t + W(3, 1052133240, -1090036408, -1085473397, 1048891757)\n\t\t + W(4, 1042648272, -1090327769, 1057448056, -1111238376)\n\t\t + W(5, -1123398616, 1043184694, -1105658040, -1106505885)\n\t\t + W(6, 1044512510, -1111854479, -1104977148, 1049508979)\n\t\t + W(7, -1105041790, 1043408999, 1041051171, -1110665802);\n\tsum2 =\n\t\tW(0, 1039259027, 1043188759, -1165551167, -1113326246) + W(1, -1119373866, -1082984200, -1105050294, 1045229872)\n\t\t+ W(2, -1086821333, -1077733706, -1103802686, -1109909290)\n\t\t+ W(3, 1052826002, 1067327309, 1068967257, 1052700624) + W(4, -1117342490, -1149070344, 1054626023, -1098764713)\n\t\t+ W(5, 1036052293, 1052358305, -1101813629, -1099183932)\n\t\t+ W(6, 1037381955, -1102382047, -1103461210, 1052205497)\n\t\t+ W(7, -1101694007, 1050777563, -1106555317, -1096821402);\n\tWS(1046655614, 1069864308);\n\tsum1 = W(0, 1035633391, -1106200785, -1105260712, 1050507575) + W(1, 1040943483, 1031319761, 1026979270, 1034433460)\n\t\t + W(2, 1045417382, -1120751363, -1106053451, 1045765948)\n\t\t + W(3, 1043913370, -1093886310, -1121044950, 1041581532)\n\t\t + W(4, 1050212129, -1098821847, 1042106970, 1029812249) + W(5, 1047844019, -1088130094, 1049054225, 1017929306)\n\t\t + W(6, 1039058852, -1092291401, 1041620790, 1028938706)\n\t\t + W(7, 1043891960, -1082722808, 1042598038, 1034869942);\n\tsum2 = W(0, -1098805029, -1082465618, 1017798412, 1045866690)\n\t\t + W(1, -1101136548, -1084472150, -1108050411, 1039888035)\n\t\t + W(2, -1094351375, -1085764460, 1031330790, 1027046574)\n\t\t + W(3, -1097728468, -1140347496, 1053843229, 1038111290)\n\t\t + W(4, 1040878916, -1100091144, 1043199898, -1100094208) + W(5, 1049713965, 1049328541, 986797508, -1104239104)\n\t\t + W(6, 1037060075, 1062808960, -1119994130, -1098800085)\n\t\t + W(7, 1058810464, 1071144827, -1097822096, 1017716576);\n\tWS(-1077527440, 1065234224);\n\tsum1 =\n\t\tW(0, 1031059492, -1088676934, 1055802445, -1159469258) + W(1, 1014606833, -1098001853, 1051162632, 1001612013)\n\t\t+ W(2, 1041495444, -1087241405, 1059501583, -1109463457)\n\t\t+ W(3, 1031584061, -1083911392, 1061276187, -1105280809)\n\t\t+ W(4, -1143158030, -1095088526, 1050088278, 1038556792) + W(5, -1140389945, -1096536807, 1049527800, 986827883)\n\t\t+ W(6, 1035424519, -1104484775, 1042937212, 1030875577) + W(7, 1013235228, -1100223239, 1037087943, 1047418837);\n\tsum2 =\n\t\tW(0, 1026928347, 1019217071, 1027288437, -1112677997) + W(1, 1006719462, -1098369589, -1099640354, -1146387796)\n\t\t+ W(2, -1103317527, 1041304779, 1050941648, -1072403340)\n\t\t+ W(3, 1043604137, -1134457784, -1112266437, -1071428003)\n\t\t+ W(4, -1106627965, 1048134757, 1027462477, -1082446250) + W(5, 1034526167, -1118427047, 1040843010, 1059493547)\n\t\t+ W(6, -1117999031, 1029994729, -1104465031, 1072461191)\n\t\t+ W(7, -1134258967, -1113504087, 1054764710, 1077848621);\n\tWS(1034219259, -1130863201);\n\tsum1 = W(0, -1122470601, 1036468120, 1033355302, -1104067775)\n\t\t + W(1, -1125729883, 1031973022, -1125640547, -1112351746)\n\t\t + W(2, -1119868741, 1045421587, -1122038588, -1106594245)\n\t\t + W(3, -1092963050, 1062931954, 1044707408, -1094830635)\n\t\t + W(4, -1102984950, 1062738826, -1104269382, -1127079049)\n\t\t + W(5, 1017182198, 1050208654, -1106320445, -1109997276)\n\t\t + W(6, -1107264969, 990945063, -1110744610, -1112571199)\n\t\t + W(7, -1116589116, 1023027040, -1098846428, -1117279521);\n\tsum2 = W(0, -1120041672, 1041156572, -1103868400, 1036471018) + W(1, 999703935, 1029144962, 1036670980, -1107170022)\n\t\t + W(2, -1109032994, 1037796455, 1043292537, -1115113192) + W(3, 1041627711, 1046556501, 1059414852, 1029249656)\n\t\t + W(4, -1111815622, 1060385029, 1048639871, -1126242312)\n\t\t + W(5, 1029813110, 1040466231, -1105513272, 1043143286)\n\t\t + W(6, -1110751572, -1103822492, -1100107078, -1101226736)\n\t\t + W(7, -1114401610, -1076222058, 1043280503, 1034327293);\n\tWS(-1097041087, -1081891922);\n\tsum1 = W(0, 1045201037, -1097075376, -1126257330, -1115394372)\n\t\t + W(1, 1042240134, -1091271089, 1049467348, -1097795722)\n\t\t + W(2, 1049780286, -1094847921, 1057610047, -1097045891)\n\t\t + W(3, 1039927583, 1059654550, -1141428591, -1103383438)\n\t\t + W(4, -1122695635, 1056430510, -1089703504, 1036098616)\n\t\t + W(5, -1110484942, 1057233913, -1087958744, 1033721138)\n\t\t + W(6, -1117417409, 1041827328, -1096746586, 1035539581)\n\t\t + W(7, 1039840796, 1050554535, -1096159486, -1131932502);\n\tsum2 =\n\t\tW(0, 1012982255, 1052214657, -1136022111, 1032353073) + W(1, -1101224821, 1042508745, -1093748656, 1020863779)\n\t\t+ W(2, -1109376974, 1042044290, 1045672838, -1113516472) + W(3, -1116588919, 1071547407, 1065241977, 1040242686)\n\t\t+ W(4, -1096183361, -1089469015, 1049249478, -1120964187)\n\t\t+ W(5, -1092858264, -1090264503, 1047260540, -1103746594)\n\t\t+ W(6, -1090462581, 1039700797, 1046964814, -1100885683)\n\t\t+ W(7, -1119652925, -1083767147, -1107087862, 1028764718);\n\tWS(-1088621983, 1079497913);\n\tsum1 = W(0, 1027161409, 1052712773, -1102058289, -1100368317)\n\t\t + W(1, -1102075462, 1051824794, -1098602113, 1021667349)\n\t\t + W(2, -1120075900, 1057942154, -1096292664, -1106147487)\n\t\t + W(3, -1109063205, 1060662493, -1082645434, 1039175801)\n\t\t + W(4, -1104005172, 1062931830, -1090788424, -1129475640)\n\t\t + W(5, -1136555883, 1057800198, -1090185155, 1036809656)\n\t\t + W(6, -1112015962, 1047971474, -1098101583, 1009161622)\n\t\t + W(7, 1033292370, 1059753504, -1088742454, -1143403778);\n\tsum2 = W(0, -1150684740, -1095235693, 1044985054, 1035589955)\n\t\t + W(1, -1114056841, -1115238312, -1127339724, -1108218072)\n\t\t + W(2, -1164208415, -1080604054, -1106549807, 1022130402)\n\t\t + W(3, 1034698244, -1071093346, -1080554397, -1106288272)\n\t\t + W(4, -1134574697, -1083926997, -1104923511, 1024268734)\n\t\t + W(5, 1043895716, 1068501149, 1052487431, 1036117000) + W(6, -1101980686, 1079699126, 1054997905, -1130803558)\n\t\t + W(7, 1050191679, 1056576712, 1029700329, 1031345667);\n\tWS(-1087955103, 1023517655);\n\tsum1 =\n\t\tW(0, -1106663590, -1090071677, 1062902614, 1013889298) + W(1, 1037773274, -1103425461, 1055773525, -1100022495)\n\t\t+ W(2, -1116651838, -1089596734, 1059014377, -1101161913)\n\t\t+ W(3, 1022742037, -1082614473, 1060267482, 1030094516) + W(4, 1040438284, -1088542372, 1057943128, -1120043085)\n\t\t+ W(5, -1117813952, -1092404165, 1054561254, -1116951793)\n\t\t+ W(6, 1032561623, -1100716355, 1051603940, 1035114019)\n\t\t+ W(7, -1102318801, -1098396937, 1049819671, 1026546470);\n\tsum2 = W(0, -1107653444, -1094858135, 1084595456, -1065438414)\n\t\t + W(1, 1032757863, 1061839668, 1074196920, -1069856939)\n\t\t + W(2, -1150202006, 1049735190, 1067688119, -1073375528)\n\t\t + W(3, 1037010009, -1123088190, 1070729644, -1082206819)\n\t\t + W(4, 1026258576, -1089824138, 1050587980, -1086758222)\n\t\t + W(5, 1041748319, -1098358767, 1057889952, -1097734258)\n\t\t + W(6, -1131622502, 1049699018, -1127981435, -1106404220)\n\t\t + W(7, -1112646994, -1103776938, 1048602984, -1098587943);\n\tWS(-1089607615, 1063931357);\n\tsum1 = W(0, -1156148665, -1089422721, 1059281720, 1041177357)\n\t\t + W(1, 1033042784, -1099513696, 1053472432, -1107985659)\n\t\t + W(2, 1027235975, -1086976804, 1060428066, -1122980350)\n\t\t + W(3, -1117005684, -1083936660, 1061258678, -1103260375)\n\t\t + W(4, 1045226606, -1089259880, 1055780369, -1111710595)\n\t\t + W(5, -1112863441, -1092850238, 1057981025, -1109580750)\n\t\t + W(6, 1040283212, -1096473171, 1051704489, -1125267169)\n\t\t + W(7, -1102751384, -1096124078, 1054893029, 1035448166);\n\tsum2 = W(0, 1024298597, 1074606150, 1080820206, 1030125639) + W(1, 1037699935, 1048614297, 1047271097, -1121834510)\n\t\t + W(2, 1030404477, -1085515118, -1079656120, -1166463196)\n\t\t + W(3, -1094400051, -1071672142, -1066721483, -1101580999)\n\t\t + W(4, 1052543759, -1091215560, -1078287609, 1028051862)\n\t\t + W(5, 1024136176, -1095087497, -1096732136, 1009399200)\n\t\t + W(6, -1159281410, 1050441058, 1057126689, -1117118368)\n\t\t + W(7, -1102232478, 1071366890, 1074685383, -1113696211);\n\tWS(-1083901183, 1060981851);\n\tsum1 =\n\t\tW(0, -1106299749, 1048978486, 1016862419, -1121286832) + W(1, 1039492049, -1107896957, -1115539879, 1049662006)\n\t\t+ W(2, -1113140273, -1119192025, -1098481927, -1106196840)\n\t\t+ W(3, 1055856482, -1090009641, 1058119768, -1149152444)\n\t\t+ W(4, -1103186821, -1088174932, 1052019064, -1101797848)\n\t\t+ W(5, -1108369378, 1034759564, 1048477348, -1146708651) + W(6, -1115937041, 1008970428, 1034559233, 1024756171)\n\t\t+ W(7, -1127954738, 1027686380, 1044214632, -1111878699);\n\tsum2 = W(0, 1030335348, -1130369060, -1106797797, 1006653296)\n\t\t + W(1, -1110488253, 1056034410, 1040331307, -1094310491)\n\t\t + W(2, -1096373435, -1097486091, 1063611375, -1113782011)\n\t\t + W(3, 1042224202, -1094958491, -1106971469, 1042512890)\n\t\t + W(4, 1038378538, 1057631708, -1093142933, -1140559356)\n\t\t + W(5, -1117770266, -1114209587, 1037075531, -1114686161)\n\t\t + W(6, 1036930446, -1105273765, -1115233817, -1115373149)\n\t\t + W(7, -1168276161, -1115537765, 1025218793, 1026640233);\n\tWS(1063762143, -1098158381);\n\tsum1 = W(0, 1027555010, -1106988831, 1031921883, 1033567284)\n\t\t + W(1, -1113176415, 1049655577, 1032851437, -1099137927)\n\t\t + W(2, 1044835884, -1089572014, -1106152127, 1052671923)\n\t\t + W(3, -1094480963, 1041189880, 1057311541, -1101762329)\n\t\t + W(4, 1042205032, 1035602487, -1100163979, -1106014811)\n\t\t + W(5, 1038186408, -1095655321, 1046700975, 1044902280) + W(6, -1112247611, 995617211, 1050763922, -1094051821)\n\t\t + W(7, 1041241393, -1102946366, -1119959180, 1044480349);\n\tsum2 =\n\t\tW(0, 1010916279, 1040615985, -1103581164, -1126424725) + W(1, -1108274646, 1037755544, 1053142923, -1119616718)\n\t\t+ W(2, -1108043460, -1107213139, -1091384808, 1062997316)\n\t\t+ W(3, 1049469526, -1085933104, -1093682556, 1050086980)\n\t\t+ W(4, 1061284555, -1098201753, -1095835641, 1044548392)\n\t\t+ W(5, -1097521196, 1027381238, 1044225612, -1099920539) + W(6, 1047936551, 1007266289, -1101597200, 1043928239)\n\t\t+ W(7, -1106103943, 1039340208, 1011948943, -1120667237);\n\tWS(1060336095, -1119657045);\n\tsum1 =\n\t\tW(0, 1023788715, 1048279897, -1106238784, -1110161279) + W(1, -1117126579, 1044311660, -1096869700, -1136931731)\n\t\t+ W(2, -1108875843, 1062204714, 1019770348, -1115905233) + W(3, 1022815367, 1060724749, -1081389759, 1034904806)\n\t\t+ W(4, -1100562722, 1063043033, -1084472996, -1124661292)\n\t\t+ W(5, 1043213137, 1050929706, -1097593661, 1017832853)\n\t\t+ W(6, -1111482971, 1037241746, -1106654286, -1109716592)\n\t\t+ W(7, -1142747249, 1051192212, -1102133781, -1109353889);\n\tsum2 =\n\t\tW(0, 1036664563, 1009247708, 1013790140, 1035577258) + W(1, -1103288529, -1126560341, -1102369678, 1008412166)\n\t\t+ W(2, -1102134383, -1067246446, 1047852878, 1016094574) + W(3, 1057556566, 1067728497, -1093152080, 1045655865)\n\t\t+ W(4, -1099512639, 1078180911, -1110504691, -1123477495)\n\t\t+ W(5, 1031668335, -1085231458, 1042704555, 1023608957)\n\t\t+ W(6, -1103860103, 1047956293, -1132621098, -1112760821)\n\t\t+ W(7, 1028018661, -1114058193, 1030531898, -1120624893);\n\tWS(1035518203, 1045613832);\n\tsum1 =\n\t\tW(0, 1044215468, 1057279232, -1097478568, 1042423606) + W(1, -1096085823, 1043513429, -1096451901, -1098498663)\n\t\t+ W(2, -1102751483, 1057361220, -1091716958, 1012832112) + W(3, 1007706274, 1061539183, -1085528932, 1054368634)\n\t\t+ W(4, -1098118842, 1057962612, -1093017477, -1103819295)\n\t\t+ W(5, 1051305356, 1058710773, -1091718961, 1057808613)\n\t\t+ W(6, -1096250919, 1037420261, -1100741095, -1100568821)\n\t\t+ W(7, -1106455273, 1053125757, -1097230063, -1111733504);\n\tsum2 = W(0, -1105709018, 1058997495, -1086433444, 1022365788)\n\t\t + W(1, 1050542737, -1084246791, 1065459234, -1101303092)\n\t\t + W(2, -1106108137, -1103685622, 1055198365, 1040995532)\n\t\t + W(3, 1027983028, -1106510960, -1102412567, 1044759128)\n\t\t + W(4, 1053295819, -1089515541, 1057925132, -1104466949)\n\t\t + W(5, -1091042532, 1066680974, -1080963495, 1043286350)\n\t\t + W(6, 1049054259, -1088412186, 1056230430, -1096360229)\n\t\t + W(7, -1108416827, 1037143386, 1049505110, -1106131860);\n\tWS(-1103921662, 1072713673);\n\tsum1 = W(0, 1042712209, -1111681022, 1029885560, -1123292759)\n\t\t + W(1, -1130675027, -1104528338, 1032835743, -1124533373)\n\t\t + W(2, 1041149044, -1103688784, 1053127408, -1101763282)\n\t\t + W(3, -1108819823, 1055222237, -1089836355, -1143773237)\n\t\t + W(4, -1099465033, 1063848575, -1089832742, 1044926036)\n\t\t + W(5, -1102885798, 1053207587, -1090841456, 1032528402)\n\t\t + W(6, -1108891552, 1051374172, -1098121506, 1040294582)\n\t\t + W(7, -1122152216, 1044600823, -1101098252, 1018003689);\n\tsum2 = W(0, -1116466906, 1017580326, -1100144980, 1018640494) + W(1, 1032691193, 1031996320, 1045143645, 1067424527)\n\t\t + W(2, -1110682367, 1040673767, 1055366708, 1071822180)\n\t\t + W(3, -1134651946, -1121084452, -1112456349, 1057195246)\n\t\t + W(4, 1019799157, 1012141662, 1037079065, -1078565795)\n\t\t + W(5, 1020309206, -1123645954, 1036705771, -1073530916)\n\t\t + W(6, 1028255175, -1125118807, -1112096331, -1087156462)\n\t\t + W(7, -1118897648, 1005021204, 1021253254, 1033125682);\n\tWS(1054959295, 1011151216);\n\tsum1 = W(0, -1124554365, 1043778462, -1140499785, -1103855992)\n\t\t + W(1, 1028540695, -1104732576, -1111020475, -1113072532)\n\t\t + W(2, -1107828893, 1063706911, -1098481604, -1121738665)\n\t\t + W(3, -1135601758, 1052343180, -1081762405, 1048654720)\n\t\t + W(4, -1135515507, 1050410381, 1053053447, -1096321673)\n\t\t + W(5, 1032466990, -1128754020, -1112972157, 1012954617)\n\t\t + W(6, -1110097877, 1034222620, 1023071124, -1110289546)\n\t\t + W(7, 950109203, 1043960229, -1120112616, -1114439871);\n\tsum2 = W(0, -1104841432, 1047456971, 1024424907, 991739097) + W(1, 1047690020, -1094867354, 1033457856, -1129013032)\n\t\t + W(2, -1084375561, 1068880529, 1046341732, -1103560341)\n\t\t + W(3, -1086552004, 1065412328, -1087761187, 1059009805)\n\t\t + W(4, 1046416693, -1080289298, 1062384539, -1098849357)\n\t\t + W(5, 1025710892, -1110380578, -1103331799, 1045332030)\n\t\t + W(6, -1130856953, -1105039836, 1024509174, -1104241974)\n\t\t + W(7, -1113936449, 1016290713, -1126452938, 1019994493);\n\tWS(1061669311, 1066543312);\n\tsum1 =\n\t\tW(0, -1120030840, -1097490380, 1038501126, 1026361650) + W(1, -1111872182, 1051889621, -1110528784, -1112085217)\n\t\t+ W(2, 1046388965, -1085299564, 1050043436, 1019064063) + W(3, -1109640224, 1043197314, 1054292822, -1116217609)\n\t\t+ W(4, 1051640445, -1099578605, -1095700775, 1045441021)\n\t\t+ W(5, -1104742312, -1114905437, 1056051928, -1097066005)\n\t\t+ W(6, 1040612129, 1033952272, -1108619674, -1146667493)\n\t\t+ W(7, 1018742870, -1095793020, 1044337364, 1039394788);\n\tsum2 =\n\t\tW(0, 1041249103, -1098300344, 1041141085, -1123648820) + W(1, 1040922446, -1147221163, 1014590689, -1115292810)\n\t\t+ W(2, 1047169006, -1097103704, -1094689158, 1021735499) + W(3, -1133026152, 1055827658, 1056443342, 1023898168)\n\t\t+ W(4, 1045305983, -1082349433, 1051958562, -1153021086)\n\t\t+ W(5, -1121038685, -1105225178, 1035590360, 1038130213) + W(6, 1032067159, 1036618956, -1098250629, 1035045284)\n\t\t+ W(7, 986169209, -1102095468, -1145857885, 1030074795);\n\tWS(1066007616, 1040865170);\n\tsum1 = W(0, 1016703369, -1154003525, -1104662792, -1111826720)\n\t\t + W(1, -1106398093, 1038441464, 1031083397, -1146451379)\n\t\t + W(2, -1114560988, -1112021256, 1052887594, -1102003526)\n\t\t + W(3, -1096325697, 1050813825, 1061249791, -1102172436)\n\t\t + W(4, -1094335779, 1059033474, -1126656183, -1104413998)\n\t\t + W(5, 1023023221, -1108543232, -1106571274, -1109007926)\n\t\t + W(6, -1113231876, 1040892233, -1121820472, -1112600993)\n\t\t + W(7, 1022983872, 1034570898, -1115038347, -1123919488);\n\tsum2 = W(0, -1117895883, -1109314178, 1043196819, 1029963629)\n\t\t + W(1, 1036640719, -1103775527, 1047073701, -1117061975)\n\t\t + W(2, -1092695525, -1079308608, 1032498235, 1053147047)\n\t\t + W(3, -1109277526, -1088245301, 1071134194, -1113344034)\n\t\t + W(4, 1054484712, 1032194306, -1098274857, 1027577620)\n\t\t + W(5, -1102073467, 1058556412, -1102222667, -1104158962)\n\t\t + W(6, 1047716642, -1097777200, 1028797614, 1019489703)\n\t\t + W(7, -1115714917, 1049638324, -1109885254, -1106961770);\n\tWS(-1112959995, -1090797387);\n\tsum1 =\n\t\tW(0, 998546749, -1107113888, 1042251615, 1034524319) + W(1, -1102515009, -1157171375, 1043372984, -1109045169)\n\t\t+ W(2, 1018649191, -1095395659, 1057847906, 1025715818) + W(3, 1024148768, -1088418302, 1049085946, -1107024218)\n\t\t+ W(4, 1036601843, -1108499994, 1054314562, 1036766314) + W(5, 991750171, -1092700079, 1052242560, -1102346050)\n\t\t+ W(6, -1134314668, -1100812608, 1010001228, 1041369791)\n\t\t+ W(7, 1024106779, -1106951576, 1043704436, -1136260253);\n\tsum2 = W(0, -1097076796, 1045091130, 1028367411, 1016501386) + W(1, 1000463738, 1024736081, 1040206702, -1122385083)\n\t\t + W(2, -1083533587, 1064625577, -1112850496, -1104146558)\n\t\t + W(3, 1064100942, -1096201033, -1086258418, 1050125885)\n\t\t + W(4, 1074997490, -1071550159, 1052069491, -1105686824)\n\t\t + W(5, 1043707697, -1106033160, -1098690685, 1041978517)\n\t\t + W(6, 1028507309, -1118548401, 1050202273, -1109567340)\n\t\t + W(7, -1152835380, -1111712908, -1113053149, 1032203802);\n\tWS(1065286463, -1155116140);\n\tsum1 = W(0, -1127743664, -1099417962, 1047837241, 1035108393)\n\t\t + W(1, 1036265535, -1091060822, 1038987540, -1121911642)\n\t\t + W(2, -1118137852, -1088882712, 1061626690, -1119901843)\n\t\t + W(3, -1121018025, -1089265061, 1069311516, -1100290432)\n\t\t + W(4, 1024160014, -1088513194, 1053957977, -1101311755) + W(5, 1028265374, -1090887512, 1051214117, 980641778)\n\t\t + W(6, 1031461691, -1097685517, 1050330231, 1030945477)\n\t\t + W(7, -1116217572, -1096201501, 1045642342, 1036102670);\n\tsum2 = W(0, 1023964675, -1104287950, -1095527688, -1107378538)\n\t\t + W(1, 1054178647, -1098771138, -1106164282, -1107123343)\n\t\t + W(2, -1104607531, 1030951671, 1049293814, -1102317974)\n\t\t + W(3, -1088748842, 1062304002, 1069791349, -1093097006)\n\t\t + W(4, 1034720649, 1056993385, -1106129898, -1107155572)\n\t\t + W(5, 1027793575, -1095484784, -1093744890, -1104614583)\n\t\t + W(6, 1026748348, -1103591056, 1040804508, -1111048704)\n\t\t + W(7, 1048440611, -1115722179, -1102843948, 1036145149);\n\tWS(-1107864827, -1106183398);\n\tsum1 = W(0, -1106667222, 1028246417, 1062610107, -1094330385)\n\t\t + W(1, 1032383543, -1105288567, 1048732230, -1113355593)\n\t\t + W(2, -1104095901, 1024277645, 1033194034, -1100412503)\n\t\t + W(3, -1105126732, 1031807228, -1097352540, -1110531197)\n\t\t + W(4, -1119082647, 1024663749, 1042072353, -1106817153)\n\t\t + W(5, -1099092218, 1059042594, -1097841594, -1119219065)\n\t\t + W(6, -1106477481, 1038514313, -1132497297, -1116226478)\n\t\t + W(7, -1100466619, 1061247795, -1116357250, -1112377140);\n\tsum2 = W(0, -1124057659, 1049202878, 1055877653, 1043135164)\n\t\t + W(1, -1107748661, 1029365940, 1040631102, -1120955446)\n\t\t + W(2, -1106641450, -1100669682, -1121942624, 1048773070)\n\t\t + W(3, -1106278570, -1090514146, -1097531540, -1096084011)\n\t\t + W(4, -1115427744, 1050790854, -1095195500, 1040842880)\n\t\t + W(5, 1045306633, -1101749265, 1044511371, -1101432694)\n\t\t + W(6, -1107251222, 1044664667, -1123742683, -1108344435)\n\t\t + W(7, 1044220643, 1051259000, 1035140356, -1156279482);\n\tWS(-1107710971, -1103335008);\n\tsum1 = W(0, 1020774038, 1057965326, -1096736580, -1108312647)\n\t\t + W(1, -1097452822, 1052789750, -1097416740, 1007270548)\n\t\t + W(2, -1103681302, 1061528673, -1090723228, 1008435167)\n\t\t + W(3, -1142400543, 1059882105, -1082070814, 1032878150)\n\t\t + W(4, -1130541650, 1058381533, -1096313647, 1024150455)\n\t\t + W(5, 1035627390, 1052101646, -1092903493, 1029066731) + W(6, 1026485526, 1047827121, -1095953623, 1024752368)\n\t\t + W(7, 1026933710, 1048909172, -1094072619, -1129872006);\n\tsum2 = W(0, -1091198687, 1051358993, 1026242284, 1036983987)\n\t\t + W(1, -1096592719, 1056674994, -1102658445, -1112372364)\n\t\t + W(2, -1088722291, 1050253089, 1039492851, -1109827680) + W(3, 1017819408, 1057806550, 1048044980, 1033031265)\n\t\t + W(4, -1104841225, -1098514434, 1047848116, -1106004699)\n\t\t + W(5, 1047280108, -1095745001, -1114927114, -1128936304)\n\t\t + W(6, -1133964792, -1121773836, 1009730080, 1044703642)\n\t\t + W(7, 1046210234, -1101840089, -1115459009, -1121859563);\n\tWS(1046617982, -1079283690);\n\tsum1 = W(0, -1112235521, -1103103206, 1050398983, 1031782004)\n\t\t + W(1, -1112371935, 1005568807, 1053710959, -1112406582)\n\t\t + W(2, 1046025067, -1082068590, 1059470764, -1109731202)\n\t\t + W(3, -1114138877, 1053438832, 1056782757, -1120370051)\n\t\t + W(4, -1100106092, 1050481934, -1084354719, 1047048563)\n\t\t + W(5, -1106636112, -1113851306, 1044662919, -1114617505)\n\t\t + W(6, 1006684852, -1101804759, 1028720557, -1122334215)\n\t\t + W(7, -1134743124, -1101795702, 1040488963, 1035089325);\n\tsum2 =\n\t\tW(0, -1123583696, -1114190125, -1123424510, 1035265901) + W(1, 1041752924, -1107057915, -1108427412, 1011193218)\n\t\t+ W(2, -1096033091, 1054169171, -1101097272, -1097576107) + W(3, 1045050816, 1066165326, 1060681517, 1037309084)\n\t\t+ W(4, -1111810372, -1090934807, -1093738003, -1094306097)\n\t\t+ W(5, 1044170848, -1094482563, -1094742214, 1047478278) + W(6, 1035342189, 1030376713, -1122528198, 999245333)\n\t\t+ W(7, -1107148363, -1140242036, 1046835784, -1118953940);\n\tWS(1057107647, -1115492411);\n\tsum1 =\n\t\tW(0, 1043432615, 1037909322, -1092726398, 1042270260) + W(1, 1017716083, 1044219192, -1094557923, 1036944691)\n\t\t+ W(2, -1115224236, 1059480955, -1089724826, 1049175094) + W(3, 1034158091, 1055275264, -1079486955, 1036017407)\n\t\t+ W(4, 1031606075, 1062186253, -1094016652, -1112299996) + W(5, 1040917102, 1051479740, -1090199321, 1012181234)\n\t\t+ W(6, -1119339928, 1036604907, -1111430132, 1026270626)\n\t\t+ W(7, 1006053250, 1049031914, -1124163213, -1106538704);\n\tsum2 = W(0, 1018646782, 1037675363, 1056993548, -1095820604)\n\t\t + W(1, -1107779390, 1041358579, -1114299594, -1106961783)\n\t\t + W(2, 1048577488, -1103110037, -1108103869, -1113810892)\n\t\t + W(3, -1094766117, 1063077105, 1069120744, -1094104293)\n\t\t + W(4, 1029078775, -1094239344, 1019393926, -1100654825)\n\t\t + W(5, -1115207772, -1097294293, -1090842684, 1030620215)\n\t\t + W(6, 1041354677, -1106609062, -1103795001, 1015746998)\n\t\t + W(7, -1134027235, 1005749079, -1111892981, 1031888221);\n\tWS(1038408187, -1104646224);\n\tsum1 =\n\t\tW(0, -1100666444, 1031841147, 1045835257, -1121385297) + W(1, 1032659338, -1095811512, 1046356758, -1115316924)\n\t\t+ W(2, -1096791479, 1046629869, 1055310447, -1109718991) + W(3, 1050254507, -1086582314, 1049546009, 1043876936)\n\t\t+ W(4, -1125163769, -1092033141, 1059064223, -1115882186)\n\t\t+ W(5, 1034716030, -1095590162, 1032941357, 1051195252) + W(6, -1104041563, 1012740704, 1016606100, -1110386378)\n\t\t+ W(7, 1024265746, -1097384267, 1043234370, -1121465454);\n\tsum2 =\n\t\tW(0, 1033146053, 1033178697, -1110558215, -1107600367) + W(1, 1034495435, 1013274853, -1103797816, 1046600596)\n\t\t+ W(2, 1033891153, 1044565157, -1074394842, -1096372667)\n\t\t+ W(3, 1015618236, -1083473003, -1075035519, 1071496075) + W(4, -1102272365, 1047899954, 1070896015, 1070598351)\n\t\t+ W(5, 1026402836, 1033829854, -1107786181, -1103057086)\n\t\t+ W(6, -1126192412, 1026659107, 1039466503, -1099451771)\n\t\t+ W(7, -1130670616, -1129244632, 1033633210, -1106841766);\n\tWS(1060540543, -1145107984);\n\tsum1 = W(0, 1016949312, -1111708420, 999025948, -1110878953) + W(1, 1033700674, -1115158282, 1037057540, 1034636061)\n\t\t + W(2, 1008485935, -1112773425, -1111113150, 1006219749)\n\t\t + W(3, 1050394829, -1105627788, -1105528438, 1047777444)\n\t\t + W(4, 1025975118, -1166436080, -1092533512, 1034379342)\n\t\t + W(5, 1027755062, 1049090616, -1097657169, 1023310559)\n\t\t + W(6, -1166944971, -1131929874, -1125616567, 1042471825)\n\t\t + W(7, 1036625882, 1027903943, -1104970374, 1029991232);\n\tsum2 = W(0, -1112727972, 1028528033, 1050127712, 1039139414)\n\t\t + W(1, 1041061913, 1047913039, -1120606988, -1090975722)\n\t\t + W(2, 1030171918, 1058299937, -1075312291, -1096898908)\n\t\t + W(3, 1049192765, -1088725965, 1051042420, 1056682084) + W(4, -1097932217, 1006741474, 1061621025, 1043329296)\n\t\t + W(5, -1108991614, 1028842331, -1120436768, -1136718330)\n\t\t + W(6, -1128255593, -1119404040, 1041035795, 1019658885)\n\t\t + W(7, -1128975721, 1019613109, 1038145345, 1017746289);\n\tWS(1058512095, 1047466767);\n\tsum1 = W(0, 1025672397, -1102753041, 1037445664, 1037433000) + W(1, 1032743763, 1015664161, 1032570339, 1033220516)\n\t\t + W(2, 1046625694, -1102686879, -1091026739, 1035056566)\n\t\t + W(3, 1040236986, -1099087483, -1089271035, 1024398415)\n\t\t + W(4, 1041791363, -1097904327, -1100626131, 1043847942)\n\t\t + W(5, 1042422310, -1097334084, 1051389809, 1042353123) + W(6, 1024317081, -1123206279, 1041773046, 1037697617)\n\t\t + W(7, 1034505416, -1096407969, 1050962859, 1047698739);\n\tsum2 = W(0, -1111694157, -1097429792, 1052756319, -1115035673)\n\t\t + W(1, -1113457231, 1040318944, -1131566802, -1108486657)\n\t\t + W(2, 1007020677, -1109123041, 1066240251, 1057627634)\n\t\t + W(3, -1110494513, -1087577139, 1071158756, 1052796029)\n\t\t + W(4, 1036239980, -1115766281, 1055974927, 1037312144) + W(5, 1042151096, 1033854974, -1085216854, 1031946717)\n\t\t + W(6, 1014804229, 1056323633, -1076147337, -1107413695)\n\t\t + W(7, 1038268008, 1058473731, -1078122726, -1088208012);\n\tWS(-1087119871, 1051442968);\n\tsum1 =\n\t\tW(0, -1106951233, -1101188351, 1055191809, -1118371512) + W(1, 1026199466, -1102133666, 1046522759, 1024298399)\n\t\t+ W(2, -1111827529, -1096477343, 1061746551, -1102462991)\n\t\t+ W(3, 1034911407, -1081083296, 1062137809, -1118895495)\n\t\t+ W(4, -1110066258, -1093686286, 1056808794, -1105243164)\n\t\t+ W(5, 1036906330, -1089794286, 1061657374, 1028468933) + W(6, -1121489041, -1102503648, 1025414769, 1001909715)\n\t\t+ W(7, -1123695161, -1096524016, 1043754020, 1039027467);\n\tsum2 = W(0, 1036012528, -1111568121, -1125130883, 1019317279)\n\t\t + W(1, -1136414534, 1023613585, 1037328619, -1141870971)\n\t\t + W(2, 1028357901, 1046290638, -1077265349, -1105362146)\n\t\t + W(3, 1018170307, -1086518431, -1068062671, 1041918725) + W(4, 996800246, 1032866656, 1083861052, 1040576139)\n\t\t + W(5, -1115554829, 1040198779, 1057186482, -1110577355)\n\t\t + W(6, 1018408279, -1115393969, -1101393956, 1032099345)\n\t\t + W(7, -1128152611, 1031067220, 1024816461, -1109411807);\n\tWS(1041081598, -1101063046);\n\tsum1 = W(0, 1038662072, -1123374599, 1035193857, -1104056554)\n\t\t + W(1, -1105628103, 1048894326, -1098151405, 1009505700)\n\t\t + W(2, 1046838359, 1044003395, -1109376817, -1107771451)\n\t\t + W(3, -1112508084, 1062900743, -1082115704, 1039692648)\n\t\t + W(4, -1112561351, 1058339600, -1087104856, 1049374543)\n\t\t + W(5, 1047812813, 1041428913, -1097118497, -1126547869)\n\t\t + W(6, -1106996345, 1044355834, -1098603955, 1037690530)\n\t\t + W(7, 1045311157, 1013224727, -1110120844, -1121969199);\n\tsum2 = W(0, 1034938637, -1102665080, -1083931487, -1096043986)\n\t\t + W(1, -1110454828, 1066739686, 1057500561, 1050111041) + W(2, 1044300205, 1063593500, 1069787057, 1057117236)\n\t\t + W(3, -1094841314, -1072571644, -1073076170, -1094917255)\n\t\t + W(4, 1049263704, 1050585763, 1057940110, 992791419) + W(5, -1123904781, 1033188794, 1049962317, -1119131193)\n\t\t + W(6, 1032882093, 1040935597, -1103057884, -1129197337)\n\t\t + W(7, 1018550156, 992411043, 1032437745, -1139242755);\n\tWS(1047493374, 1019974383);\n\tsum1 = W(0, 1039818779, 1024992878, -1099980259, -1119405261)\n\t\t + W(1, 1022499782, 1056719767, -1093967742, 1017537921)\n\t\t + W(2, -1111466513, 1056992349, -1089692488, -1134657044)\n\t\t + W(3, -1128872350, 1066523241, -1081677329, 1032226588)\n\t\t + W(4, -1102282821, 1057279594, -1104336096, -1110606353)\n\t\t + W(5, 1027318580, 1050310409, -1095763174, 1029746358)\n\t\t + W(6, -1112367361, 1043633508, -1147598863, -1105211995)\n\t\t + W(7, -1121442618, 1050332018, -1103201160, -1109613299);\n\tsum2 = W(0, -1109381660, -1099927212, 1032613200, 1013674604)\n\t\t + W(1, 1024006001, 1048105027, 1031703418, -1113331152) + W(2, 1048332575, 1083214625, 1051352300, 1010546556)\n\t\t + W(3, 1030946168, -1068785948, -1082836395, -1137462284)\n\t\t + W(4, -1111460550, -1080184440, 1047472657, 1033485356)\n\t\t + W(5, -1115660792, -1125303858, 1027323348, 1034637753)\n\t\t + W(6, 1027780517, -1129923962, 1006215943, -1112671380)\n\t\t + W(7, -1125113546, 972536438, -1123338357, 1033990282);\n\tWS(1049191295, 1026054180);\n\tsum1 =\n\t\tW(0, 1015431080, -1104530451, -1120791464, 1041795830) + W(1, -1114491642, 1045418990, -1105318659, -1107859847)\n\t\t+ W(2, -1106844240, -1091806904, 1059085476, 1035107546)\n\t\t+ W(3, 1052544606, -1092275830, -1096734436, 1050727987)\n\t\t+ W(4, -1101337172, 1032037152, 1055073816, -1098252244) + W(5, 1006821496, -1091613549, 1054997266, 1024892180)\n\t\t+ W(6, 1048579163, -1136631349, -1117752159, -1114835508)\n\t\t+ W(7, -1107367092, -1104046587, 1054027444, -1107321874);\n\tsum2 = W(0, 1026733028, 1045033945, 1006278578, 1045459634) + W(1, -1099170713, 1052123052, -1100795787, 1045732660)\n\t\t + W(2, -1116840904, 1011374557, -1137517037, 1036547859)\n\t\t + W(3, -1119731112, 1034116255, -1093051584, 1049735621)\n\t\t + W(4, -1105853851, 1042679995, 1032967726, -1115758581)\n\t\t + W(5, 1023766170, -1103542762, 1030006514, 1012804929)\n\t\t + W(6, -1109160117, 1002727514, 1010971477, -1107202197)\n\t\t + W(7, -1110446049, -1116987471, 1032206215, -1108882618);\n\tWS(1061349183, 1052960956);\n\tsum1 = W(0, -1129777715, -1091852750, 1051531432, 1028688348)\n\t\t + W(1, -1138324169, -1098630008, 1050117038, 1001458973)\n\t\t + W(2, 1040354025, -1086948121, 1058780391, 1026112190)\n\t\t + W(3, -1113069161, -1087783598, 1063142264, -1101543047)\n\t\t + W(4, 1026875928, -1090578505, 1054898923, 1001807913)\n\t\t + W(5, -1148679486, -1098392878, 1055753851, -1107707133)\n\t\t + W(6, 1026350741, -1105317245, 1035239971, 1009551482)\n\t\t + W(7, -1099366619, -1113156712, 1049214940, 1035358529);\n\tsum2 = W(0, 1030464194, 1016786912, -1124271380, -1112870762)\n\t\t + W(1, -1114101658, -1111442214, 1036708968, 1035127660)\n\t\t + W(2, 1031167290, 1040962599, -1145350210, -1119263136)\n\t\t + W(3, 1076423743, 1052649879, -1106763968, 1030450749) + W(4, 1075592137, 1059016603, 1036666460, -1114823676)\n\t\t + W(5, -1122765276, -1109148248, -1102467968, 1030453841)\n\t\t + W(6, -1073082101, 1031660172, 1040647493, -1120712732)\n\t\t + W(7, -1067763317, -1093716078, -1123536642, 1004437586);\n\tWS(1049240575, 1032641532);\n\tsum1 = W(0, 1013730783, 1058635434, -1096215015, -1112522509)\n\t\t + W(1, -1105480706, 1033988870, -1101342144, -1114702617)\n\t\t + W(2, -1114036922, 1060052265, -1095577996, 1026538642)\n\t\t + W(3, -1113879072, 1060507082, -1090178495, -1118644393)\n\t\t + W(4, -1104229785, 1060417175, -1088104859, 1026113715)\n\t\t + W(5, -1108053747, 1056801557, -1096180920, -1115402364)\n\t\t + W(6, -1114764169, 1045744608, -1096622362, -1165415829)\n\t\t + W(7, -1146082265, 1050162924, 1035143657, -1096614130);\n\tsum2 = W(0, -1122276311, -1070701037, -1102500792, -1123484857)\n\t\t + W(1, 1035291415, -1088124412, -1135890037, -1122878839)\n\t\t + W(2, -1120194245, 1066415245, 1041496354, 1004310705) + W(3, 1040446858, 1074084237, -1104713726, 1043449641)\n\t\t + W(4, -1120530587, 1049852139, -1121031703, 1033156545)\n\t\t + W(5, -1138075205, -1122804719, -1103825640, 1027648711)\n\t\t + W(6, 1025217366, 1023048268, -1123990667, 1022832518)\n\t\t + W(7, -1118638617, -1139513797, 1028358694, -1136916673);\n\tWS(1058199967, 1050173679);\n\tsum1 =\n\t\tW(0, 1035142580, 1049466778, -1090097411, -1180331449) + W(1, 1027370573, 1058691576, -1101732588, 1040649373)\n\t\t+ W(2, -1130262537, 1039593430, -1086371009, -1120260556)\n\t\t+ W(3, 1035504777, 1068404719, -1088745136, 1040680775) + W(4, -1114438555, 1055172389, -1085029652, 1044382793)\n\t\t+ W(5, -1117883815, 1049428736, -1087836907, -1124005336)\n\t\t+ W(6, 1019391016, 1057860609, -1099893249, 1042216563)\n\t\t+ W(7, 1002653538, 1038434456, -1090680108, -1112700144);\n\tsum2 =\n\t\tW(0, -1116884059, -1098591960, 1049382153, -1103314039) + W(1, 1053572077, 1057696884, 1027480579, -1088718218)\n\t\t+ W(2, -1098664530, -1094622297, -1090176467, -1083506692)\n\t\t+ W(3, 1052736946, 1068603564, 1060239128, -1093271444)\n\t\t+ W(4, -1109898534, -1110319390, 1035982822, -1100206230)\n\t\t+ W(5, -1100793752, -1092295148, -1110105636, 1032439700) + W(6, 1049155169, 1060435963, 1048950002, 1034453968)\n\t\t+ W(7, -1110972354, -1093610507, 1038370396, 1006875670);\n\tWS(-1089372991, 1071972514);\n\tsum1 =\n\t\tW(0, -1138920887, 1036533027, -1102318256, 994211079) + W(1, -1111770809, -1104793556, 1048489074, -1105180974)\n\t\t+ W(2, -1102811010, 1055175791, -1087761408, 1048668925)\n\t\t+ W(3, -1115715559, -1099167419, 1059252133, 1002658941)\n\t\t+ W(4, 1039086134, -1087507272, 1053162297, -1118760057)\n\t\t+ W(5, -1097310634, 1049070430, -1114433380, 1015366427)\n\t\t+ W(6, 1031148825, -1119324807, -1118494745, 1042346841) + W(7, 1025838913, 1003453989, 1042268638, 1035401151);\n\tsum2 = W(0, 1030112837, 1042265630, 1026971571, -1110663804)\n\t\t + W(1, -1120976510, 1036120703, -1114486026, 1036038820) + W(2, 990074782, 1034066763, 1060265655, -1093575269)\n\t\t + W(3, -1093456890, 1054439327, 1048349987, -1097582212)\n\t\t + W(4, 1037465699, -1093016348, -1099844302, 1034062294) + W(5, 1026987255, 1018637880, 1021593632, 1015927322)\n\t\t + W(6, -1141406991, -1135344000, -1122669452, -1131991172)\n\t\t + W(7, -1139369648, 1039303764, -1105461723, -1112258092);\n\tWS(1064707295, -1106068023);\n\tsum1 =\n\t\tW(0, -1099232505, -1122722466, 1050522762, -1163785122) + W(1, 1035233224, -1096714286, 1050648196, 1029641572)\n\t\t+ W(2, 1008917721, -1092366070, 1057836626, -1106158547)\n\t\t+ W(3, -1113461090, -1085444145, 1065526616, -1112344246)\n\t\t+ W(4, 1030936392, -1087864449, 1058128499, -1120989814) + W(5, 1004172005, -1089654074, 1053303385, 1023496586)\n\t\t+ W(6, 1027313190, -1109977746, 1046037453, -1132212895)\n\t\t+ W(7, -1115756158, -1096643772, 1045431365, 1026679026);\n\tsum2 =\n\t\tW(0, -1064765544, -1093639717, 1043466147, -1118670633) + W(1, -1081497441, 1052279998, -1106897145, 1026058867)\n\t\t+ W(2, 1073825520, 1049786220, -1111313590, -1120615525) + W(3, 1076205171, 1062543003, 1028519541, 1005098917)\n\t\t+ W(4, -1119211273, -1112239696, -1110796836, 1002459349)\n\t\t+ W(5, 1027623494, -1095053933, 1038884306, 1024155429) + W(6, 1025169073, 1041086677, -1138045203, -1139354443)\n\t\t+ W(7, 1044157267, -1111173396, -1103601885, 1031190784);\n\tWS(-1111449083, -1157616163);\n\tsum1 = W(0, -1140902742, 1050785866, -1096435822, -1106580347)\n\t\t + W(1, -1108906886, 1041550344, -1095149714, -1111739842)\n\t\t + W(2, -1107746707, 1063519767, -1097214657, -1112949561)\n\t\t + W(3, -1091492130, 1070223306, 1059314470, -1090511327)\n\t\t + W(4, -1106259270, 1056548545, -1091358630, -1115482851)\n\t\t + W(5, -1123578095, 1033679887, -1102873285, -1102694659)\n\t\t + W(6, -1112828291, 1033485706, -1098893397, -1119291392)\n\t\t + W(7, -1129218172, 1037279241, -1105253969, -1105806553);\n\tsum2 =\n\t\tW(0, 1036877913, -1106537131, 1030920508, -1107276407) + W(1, -1107073590, 1029358898, -1148982309, -1158332371)\n\t\t+ W(2, -1107699229, 1059152956, -1101290720, -1104066278) + W(3, 1043855187, 1059494373, 1057939604, 1057817844)\n\t\t+ W(4, -1112562117, -1100478450, 1054005616, -1089434898)\n\t\t+ W(5, 1015957137, 1042289801, -1078154452, 1041374005)\n\t\t+ W(6, -1137092650, -1117856531, 1052159854, -1109759735)\n\t\t+ W(7, -1113777301, 1034651775, -1095096566, -1112996199);\n\tWS(-1078462192, -1081042006);\n\tsum1 = W(0, 1031777492, -1099264287, 1046006998, 987183826) + W(1, 1032754472, 1043123090, -1098614104, 1036343655)\n\t\t + W(2, 1041664052, -1089905073, -1129274543, 1009990171)\n\t\t + W(3, -1097597536, 1061087074, -1106235787, -1097811109)\n\t\t + W(4, -1104816664, 1058804947, -1084543524, 1031138063)\n\t\t + W(5, -1113883983, 1049386855, 1054195792, -1097275448)\n\t\t + W(6, 1034668408, 1033759807, -1107840264, 1026038601)\n\t\t + W(7, -1123431127, 1048603595, 1024992909, -1120606380);\n\tsum2 = W(0, 1045113399, 1042319052, -1096815184, -1116743882)\n\t\t + W(1, -1114091637, -1104675582, -1111655631, -1101972302)\n\t\t + W(2, -1107885511, -1091877193, -1112520325, 1050965596)\n\t\t + W(3, -1138476145, 1051152873, 1061790396, 1049921296)\n\t\t + W(4, -1105540689, -1091823953, 1058061302, -1092103725)\n\t\t + W(5, 1035866831, 1034466874, -1097657024, 1042351236)\n\t\t + W(6, -1106333432, 1039480371, 1040922298, -1102843808)\n\t\t + W(7, 1027850472, 1012452041, -1158709515, -1125733657);\n\tWS(1056694143, -1116016311);\n\tsum1 = W(0, -1113789237, 1051083644, -1097139864, -1123205479)\n\t\t + W(1, -1100431022, -1126988186, -1094809972, 1034447326)\n\t\t + W(2, 1050877939, 1064972735, -1089357240, 1036660918)\n\t\t + W(3, 1018856325, 1040063173, -1094444318, -1108178982)\n\t\t + W(4, 1050520537, 1063261729, -1089641983, 1047968461)\n\t\t + W(5, -1097203011, 1049408537, -1094346349, -1113292277)\n\t\t + W(6, -1103919120, 1026641091, -1100978845, 1038849023)\n\t\t + W(7, -1146363818, 1053332672, -1097363714, -1114302469);\n\tsum2 = W(0, -1117908102, 1019359999, -1120905960, 1017197102)\n\t\t + W(1, 1013765983, -1145413682, 1028148573, 1027705717)\n\t\t + W(2, 1045942570, -1095749402, 1032861566, -1127537989)\n\t\t + W(3, 1086231745, -1062836828, -1087097136, 1031521084)\n\t\t + W(4, 1048993826, -1094656357, -1145044098, 1027867224)\n\t\t + W(5, -1110131683, 1037693606, 1040390747, -1114691836)\n\t\t + W(6, 1005670802, -1125761673, -1112982831, 1031905995)\n\t\t + W(7, -1126497913, 1018172516, 1016402027, -1122299754);\n\tWS(1058898623, -1129627348);\n\tsum1 =\n\t\tW(0, -1115961291, 1024824451, 1015893437, -1111982511) + W(1, -1114910804, 1028416398, -1107386562, 1040362701)\n\t\t+ W(2, -1099814536, 1053775806, -1081677098, 1049488325) + W(3, 1014875535, 1049045373, 1054905786, 1016424474)\n\t\t+ W(4, 1042946610, -1081844071, 1057687981, -1105282974) + W(5, 1008636276, 1031972351, 1045923489, -1118478155)\n\t\t+ W(6, -1106406626, 1007262993, 1043411542, 1018226304) + W(7, -1120594878, 1044145240, 1016529769, 1008933435);\n\tsum2 = W(0, -1133545882, 1024635319, -1123675276, 1049399700)\n\t\t + W(1, 1048887568, -1104650552, 1009836758, -1109494815)\n\t\t + W(2, -1092588040, -1106613727, -1090053582, -1105276085)\n\t\t + W(3, 1040041167, 1061771033, 1063348295, -1099749985)\n\t\t + W(4, -1098849827, 1059347143, -1095509129, -1094328117)\n\t\t + W(5, 1009986974, 1020453405, -1091467004, 1040581639) + W(6, 1044263399, -1100016935, 1034750124, 1041257354)\n\t\t + W(7, -1120224962, 1003801667, 1013849670, -1116729410);\n\tWS(1051954047, 1053754534);\n\tsum1 = W(0, -1115617616, 1038078984, 1012663597, -1106689047)\n\t\t + W(1, 1024010640, 1036755054, -1111840872, 1027644834)\n\t\t + W(2, -1105864485, 1063482792, -1094956956, 1000291764)\n\t\t + W(3, -1104806436, 1054877383, -1088048944, -1099610254)\n\t\t + W(4, -1109064955, 1061183100, -1092794954, 1030290339)\n\t\t + W(5, -1116880702, 1032370277, -1106496725, -1110075188)\n\t\t + W(6, -1125878182, 1043596932, -1106933961, -1134690355)\n\t\t + W(7, 1017392662, 1041423460, 1027390113, -1125796047);\n\tsum2 = W(0, 1032585330, 1041153226, -1098242715, 1045110917)\n\t\t + W(1, -1120362784, 1038083675, -1097998955, 1041971655)\n\t\t + W(2, 1053495069, -1085822417, -1097864806, -1094674500)\n\t\t + W(3, -1103911013, 1062089523, 1056336567, -1090235355)\n\t\t + W(4, -1152525762, -1088542584, 1061326318, -1100885631)\n\t\t + W(5, -1128147020, 1044421032, 1046053205, -1141849761)\n\t\t + W(6, 1012657824, -1113855086, 1042938789, -1114518568)\n\t\t + W(7, -1104983105, 1041652917, -1160964996, 1032164357);\n\tWS(1061027871, -1104546242);\n\tsum1 = W(0, -1105616597, 999947493, 1020340785, 1044086916) + W(1, 1044372474, -1093243621, 1054887248, -1111771647)\n\t\t + W(2, 1021564129, -1093936864, 1050165368, 1042456335)\n\t\t + W(3, 1044930783, -1082760108, 1059757863, -1109427891)\n\t\t + W(4, 1046184033, -1089254915, 1059995997, -1109416824)\n\t\t + W(5, 1039863327, -1087020314, 1055330116, -1114227250)\n\t\t + W(6, 1037242932, -1095491356, 1049586618, -1119355674)\n\t\t + W(7, 1036593932, -1089177610, 1053764638, 1025046581);\n\tsum2 = W(0, -1071093827, 1060306884, 1049935328, -1107356858)\n\t\t + W(1, 1026041138, -1087262504, -1137957530, 1030953599)\n\t\t + W(2, 1068370917, -1080863241, 1024099582, 1026067688)\n\t\t + W(3, 1068180608, -1104665609, -1097098353, -1149593287)\n\t\t + W(4, -1099034443, 1065726420, -1115701817, 1031805059)\n\t\t + W(5, -1126398467, 1036496204, 1043337171, -1111590832)\n\t\t + W(6, -1114641099, 1052019191, -1155572887, -1110320626)\n\t\t + W(7, 1032038973, -1112342652, 1039831002, -1165279566);\n\tWS(-1085156031, 1045210454);\n\tsum1 =\n\t\tW(0, 1032928297, 1062377574, -1090582815, -1097791665) + W(1, -1111119484, 1050029461, -1097825399, 1025846477)\n\t\t+ W(2, 1023710638, 1062121112, -1087364538, 1032229097) + W(3, 1012189550, 1061895670, -1084850381, 1038427330)\n\t\t+ W(4, -1119437633, 1058328143, -1086721078, 1040335420) + W(5, 1039427612, 1050106073, -1087870448, 1036234257)\n\t\t+ W(6, -1114651991, 1051812528, -1095972450, 1026163704)\n\t\t+ W(7, 1039591187, 1050020631, -1089842983, -1146480404);\n\tsum2 = W(0, -1123647935, 1061817512, 1083879676, 1056516802) + W(1, 1039341132, 1048143772, 1075567701, 1037735150)\n\t\t + W(2, 1035983028, -1106274437, -1081957201, 1028242764)\n\t\t + W(3, -1100132407, -1080635557, -1069811820, -1096421593)\n\t\t + W(4, -1107056231, -1101127944, -1080342730, 1035329144)\n\t\t + W(5, 1035406254, -1113472410, -1083251742, 1030744652)\n\t\t + W(6, -1116224056, 1025367216, -1113852980, -1094803270)\n\t\t + W(7, 1039408558, -1101636583, -1087422720, 1049804166);\n\tWS(-1079692512, 1054562755);\n\tsum1 =\n\t\tW(0, -1109749038, 1042438683, -1092016161, 1050333996) + W(1, -1107273417, 1049923207, -1091034933, 1042543591)\n\t\t+ W(2, -1102577952, 1044388569, -1089719139, 1055304278) + W(3, 1030213964, -1113189609, 1050309800, 1034159515)\n\t\t+ W(4, 1036563817, -1089184118, 1048990040, 1040366472) + W(5, 1046944740, -1087748930, 1053009554, -1122229091)\n\t\t+ W(6, 1031914983, -1096053014, 1048709856, 1006842402) + W(7, 1050658577, -1091524869, 1049517424, 1034826102);\n\tsum2 = W(0, 1041125733, -1094982607, 1055140379, 1061130686) + W(1, -1097603156, 1045744428, 1049918932, 990353951)\n\t\t + W(2, -1103003109, -1102781952, -1106862916, 1058588396)\n\t\t + W(3, -1107000988, 1063877853, 1066829095, -1096233798)\n\t\t + W(4, 1032085636, -1096755169, -1090474230, -1095838692)\n\t\t + W(5, 1048646468, 1041101455, -1081598978, -1089860215)\n\t\t + W(6, -1094740103, 1038162032, 1049572267, -1096717844)\n\t\t + W(7, 1056003520, -1106723297, -1085369603, 1044183141);\n\tWS(-1080283264, 1053171958);\n\tsum1 =\n\t\tW(0, 1045885175, 1054395509, -1083475508, 1028512496) + W(1, -1113658461, 1050045174, -1095192933, 1035446876)\n\t\t+ W(2, 1034538909, 1055879386, -1085810962, 1026195253) + W(3, 974135701, 1060600957, -1084797135, 1044250612)\n\t\t+ W(4, -1122513036, 1061640838, -1086057732, 1037521197)\n\t\t+ W(5, -1118011958, 1060753746, -1087204563, -1117222317) + W(6, 998696774, 1054788217, -1092652351, 1038575473)\n\t\t+ W(7, -1108239136, 1061053402, -1108529436, -1101819472);\n\tsum2 =\n\t\tW(0, 1049760823, 1082611215, -1114287788, -1130959534) + W(1, -1132622893, 1077078383, 1055018182, 1035090608)\n\t\t+ W(2, 1033001558, 1066257283, -1101461080, -1112584386)\n\t\t+ W(3, -1136534149, 986681348, -1078537691, -1090394759) + W(4, 1043696998, -1084657320, 1054805894, 1058031741)\n\t\t+ W(5, -1092886300, -1069070549, 1065047159, 1038822180)\n\t\t+ W(6, -1098156850, -1072372844, 1049854091, 1041633511)\n\t\t+ W(7, 1058228696, -1074505611, -1082348593, -1115499033);\n\tWS(-1073398920, 1057727890);\n\tsum1 =\n\t\tW(0, 1041979362, 1052994159, -1092671491, -1110295050) + W(1, -1106188342, 1056847849, -1087976920, 1033778006)\n\t\t+ W(2, -1108985859, 1060197326, -1085676269, 1040328063)\n\t\t+ W(3, 1040300287, 1059196498, -1108460501, -1114468666)\n\t\t+ W(4, 1044683952, -1094535618, 1051731585, -1102804911)\n\t\t+ W(5, 1046284093, -1094105983, 1046385743, -1098429184)\n\t\t+ W(6, 1044621499, -1102914751, 1031818215, -1104640754) + W(7, 990388050, 1043962286, -1104493131, 1033981777);\n\tsum2 = W(0, 1021160276, -1089430647, -1102895535, 1031984432)\n\t\t + W(1, -1093219342, -1135654176, 1044152573, -1096279754)\n\t\t + W(2, -1089562294, -1079796815, -1095163331, 1011763192)\n\t\t + W(3, -1106388958, 1074674993, 1074136497, -1101895278)\n\t\t + W(4, -1099093932, -1098010580, -1095203310, -1117345690)\n\t\t + W(5, -1180890998, 1052929457, -1099885509, -1095468231)\n\t\t + W(6, -1090965228, 1040584224, 1041387674, -1107912603)\n\t\t + W(7, 1057228486, 1047748991, -1131585606, 1045144673);\n\tWS(-1087643711, 1073414034);\n\tsum1 =\n\t\tW(0, 1043421796, 1043019738, -1091862260, 1028452722) + W(1, -1116796288, 1056957030, -1093379129, -1112484637)\n\t\t+ W(2, 1042590607, 1048028053, -1089120888, 1043084437)\n\t\t+ W(3, -1098636497, 1065994910, -1081315117, -1120978641)\n\t\t+ W(4, 1008405302, 1061262410, -1088787029, 1046109207) + W(5, 1005024220, 1059267719, -1093593189, -1105879924)\n\t\t+ W(6, -1106384411, 1045820026, -1108751805, 1024805700)\n\t\t+ W(7, 1029633907, 1054563645, -1106230054, -1095994501);\n\tsum2 = W(0, 1015257573, -1101361376, -1151605286, -1114431290)\n\t\t + W(1, -1117575950, 1051853927, -1126719224, -1122150057)\n\t\t + W(2, 1040590395, 1007636882, -1099060090, -1123376079)\n\t\t + W(3, 1040031817, -1085239439, -1069257368, -1122292554)\n\t\t + W(4, -1104875608, 1029484438, 1078894141, 1045790053)\n\t\t + W(5, -1111928738, 1055085469, 1065488662, -1105709439)\n\t\t + W(6, -1124331304, -1104410806, -1097362053, 1046590167)\n\t\t + W(7, -1104400845, 1055334030, -1099504604, -1096100911);\n\tWS(-1089052703, 1050218486);\n\tsum1 = W(0, 1024924308, 1032977094, -1127622480, 1016061078)\n\t\t + W(1, -1124263665, 1048865735, -1103037451, 1027347950)\n\t\t + W(2, -1114112032, 1032370348, -1093324152, 1047024376)\n\t\t + W(3, -1101857739, 1057017435, -1130658874, -1114101947)\n\t\t + W(4, 1004177297, -1096925880, 1049797356, -1136753151)\n\t\t + W(5, -1132101549, -1106597310, -1147023991, -1136950735)\n\t\t + W(6, 1037546120, -1101706323, -1148374781, 1016234194)\n\t\t + W(7, -1127618735, -1138126252, 1041185327, -1135392976);\n\tsum2 =\n\t\tW(0, -1103127935, 1033687244, 1044282132, -1115309191) + W(1, 1034551493, -1111330163, -1132159854, -1101537844)\n\t\t+ W(2, -1131095837, -1111327049, 1043675418, 989659429) + W(3, 1056852609, -1097897810, 1038437355, -1126658673)\n\t\t+ W(4, 1041291951, -1092598078, -1085166716, -1101159602)\n\t\t+ W(5, 1031312786, 1027703970, -1122838335, 1065573620) + W(6, -1119687326, -1119650108, 1030316614, 1035948285)\n\t\t+ W(7, -1125922018, 1037109557, -1115941571, 1021015548);\n\tWS(1065854560, -1114586365);\n\tsum1 = W(0, 1025132845, -1093129789, 1039292161, 1052478106)\n\t\t + W(1, -1132208108, -1097600366, 1047014713, -1114318540)\n\t\t + W(2, 1043375962, -1094779500, 1054220253, 1045472794) + W(3, 1036127555, -1085251325, 1059484531, 1040640636)\n\t\t + W(4, 1042813603, -1085614646, 1058902029, 1026772633) + W(5, 1042302785, -1083792532, 1058554289, 1030110605)\n\t\t + W(6, 1041475414, -1088034874, 1049492791, -1123458066)\n\t\t + W(7, 1044294516, -1081301837, 1057966909, 1048041627);\n\tsum2 =\n\t\tW(0, -1082315074, -1085719643, 1072912386, -1097858732) + W(1, 1044643809, 1026206592, -1098026838, -1097387905)\n\t\t+ W(2, -1098370418, 1060376399, 1068488422, -1097681385) + W(3, 1032322202, 1066420950, 1072201946, -1095903963)\n\t\t+ W(4, -1088636595, 1042910065, 1055106268, -1092707091)\n\t\t+ W(5, 1057109638, 1025783712, -1087763572, -1104219349)\n\t\t+ W(6, -1093539506, -1117795056, -1084317601, -1087895305)\n\t\t+ W(7, 1061431798, -1120476284, -1077472196, -1105350768);\n\tWS(-1071370880, 1080498273);\n\tsum1 =\n\t\tW(0, -1117491793, -1117320376, 1025681812, -1112958490) + W(1, 1039364315, -1100646881, 1049740511, -1103504723)\n\t\t+ W(2, 1035846886, -1094786920, 1058631773, -1105396320) + W(3, 1023528601, 1045848824, -1094741601, 1032469201)\n\t\t+ W(4, -1131889533, 1057069771, -1088346742, 1034336534)\n\t\t+ W(5, -1106314247, 1055228236, -1102894479, -1144513794)\n\t\t+ W(6, 1028375004, 1020389492, -1138962992, -1116565942) + W(7, 1013100112, -1127017775, 995411618, 1002008579);\n\tsum2 = W(0, -1097850747, -1108946242, -1129761151, 1024320851)\n\t\t + W(1, -1107398437, -1114277717, -1118690429, 1012636527)\n\t\t + W(2, -1085613590, 1063125687, 1040789135, 1029278628)\n\t\t + W(3, 1042292809, -1084555354, -1101999238, 1026191463)\n\t\t + W(4, 1054106205, 1059764079, 1051725304, -1119736004)\n\t\t + W(5, -1106648125, 1041901467, -1128317719, -1127460399)\n\t\t + W(6, 1035361236, -1103098774, 1022272136, -1115360404)\n\t\t + W(7, -1122554235, -1148617751, 1025957669, 997652141);\n\tWS(1058528159, 1053906024);\n\tsum1 = W(0, -1112917396, -1104256080, 1023681564, 1039659283)\n\t\t + W(1, 1035675727, -1092229473, 1058833811, 1021887717)\n\t\t + W(2, -1104938189, -1097223269, 1051100098, 1033492802)\n\t\t + W(3, 1040468760, -1082484606, 1061928249, -1119337706)\n\t\t + W(4, -1105254898, -1103704557, 1057519273, -1099217437)\n\t\t + W(5, 1020887917, -1100912091, 1047691241, -1127325712)\n\t\t + W(6, -1113141838, -1118771074, 1047329733, -1114402703)\n\t\t + W(7, -1149793215, -1099449368, 1044776397, 1024214504);\n\tsum2 = W(0, -1129442596, 1040644144, -1106302200, -1105488042)\n\t\t + W(1, 1023778714, 1033307012, 1056981996, 1014815489) + W(2, -1113953277, 1056896617, 1082625405, 1048992482)\n\t\t + W(3, 1026809294, -1080168883, -1064674592, 1043950232)\n\t\t + W(4, 1035644478, 1030172798, -1098216535, -1120732434)\n\t\t + W(5, 1034718426, 1046899220, -1107268878, -1121557578)\n\t\t + W(6, 1016827280, -1114672577, -1138831353, 1026207834)\n\t\t + W(7, 1038084720, -1138817753, -1118740750, -1122753582);\n\tWS(1050028863, 1057904824);\n\tsum1 = W(0, 1016998719, -1115527732, 1049960370, 1033316845)\n\t\t + W(1, 1031484924, -1114471481, -1097014217, 1045307870)\n\t\t + W(2, -1113918453, -1092713340, 1059124695, -1113659631)\n\t\t + W(3, 1035763396, -1086973069, 1055821255, -1113580281)\n\t\t + W(4, -1100192683, 1048884339, 1045748179, -1104759887)\n\t\t + W(5, 1046082071, -1093669960, 1046233018, 1024760783) + W(6, 1023767163, -1109475380, 972758359, 1028768132)\n\t\t + W(7, -1109585801, -1102684193, 1047341446, -1118597711);\n\tsum2 = W(0, 1042577042, 1058174637, -1093234196, 1036828005) + W(1, 1035985609, 1022451597, 1028288917, 1036599280)\n\t\t + W(2, -1132583692, -1083350192, -1089654696, 1043707159)\n\t\t + W(3, -1108557005, -1102051996, 1066585170, -1099096459)\n\t\t + W(4, 1045882832, -1096734805, -1112976831, -1117191962)\n\t\t + W(5, 1049978360, 1040525485, -1101233023, 1038823523)\n\t\t + W(6, -1123148614, -1111555351, 1016281700, 1010883764)\n\t\t + W(7, 1037998467, 1012738322, 1035922998, -1106116243);\n\tWS(1064158815, 1035299335);\n\tsum1 =\n\t\tW(0, -1112803360, 1016610641, 1043480489, 1023721675) + W(1, 987363362, -1111853690, -1116662313, -1114846141)\n\t\t+ W(2, 1040202935, -1090418272, 1043761841, 1040437218) + W(3, -1148543050, -1086418793, 1062267936, 1044974085)\n\t\t+ W(4, -1119103150, -1096774480, 1026731899, -1112576238)\n\t\t+ W(5, 1016866897, -1106302329, 1046949595, 1035797256)\n\t\t+ W(6, -1120253212, -1125874772, 1044534239, -1118929285)\n\t\t+ W(7, -1136961231, -1111706212, 1038415821, 1017229376);\n\tsum2 = W(0, 982347958, -1130481715, 1039697927, 1029826582)\n\t\t + W(1, 1032509555, -1105443060, -1102232537, -1106323503)\n\t\t + W(2, -1111294086, 1041532435, 1059036310, -1087181565)\n\t\t + W(3, 1034453505, -1090026061, 1065332554, -1095157490)\n\t\t + W(4, -1107492941, -1115327745, 1049776291, 1032022369)\n\t\t + W(5, 1047671755, -1099067440, 1035057967, -1113855935)\n\t\t + W(6, -1114281099, 1007189687, -1116755236, -1137758215)\n\t\t + W(7, 1041657921, -1106888056, 1039394631, -1116441678);\n\tWS(1064590463, 1056702913);\n\tsum1 = W(0, 1029043770, -1118119137, 1044521535, -1108622774) + W(1, 1053372231, 1049750478, 1040212560, 1055292354)\n\t\t + W(2, -1096751755, -1090400466, 1048069253, -1086796959)\n\t\t + W(3, 1042753121, -1089893441, -1098259842, 1028130891)\n\t\t + W(4, -1132040847, 1035942347, 1046519145, 1043794349)\n\t\t + W(5, -1098166823, -1098407696, -1126503113, -1097599727)\n\t\t + W(6, 1054745035, 1057009004, 1029470901, 1057963224)\n\t\t + W(7, -1101919647, -1105867448, -1137574860, -1099480944);\n\tsum2 = W(0, -1112469736, 1047380321, -1107309008, -1130012001)\n\t\t + W(1, -1109993908, 1048112351, -1096267194, 1044766357)\n\t\t + W(2, -1113626244, 1039961237, -1149218892, 1024449363)\n\t\t + W(3, -1101975228, 1053720344, 1041967405, -1105185961)\n\t\t + W(4, -1113395603, 1033059361, -1105421186, 1034928166)\n\t\t + W(5, -1115391866, -1117206471, 1041082150, -1103730760)\n\t\t + W(6, -1111764318, 1050486894, -1097114178, 1041700935)\n\t\t + W(7, -1114050909, 1029031616, -1116211284, -1133808950);\n\tWS(1049282175, -1081654589);\n\tsum1 = W(0, 1026879882, 1056840376, -1089715922, 1023576205)\n\t\t + W(1, -1106636470, 1051340514, -1103588481, 1019713064)\n\t\t + W(2, 1025593670, 1059046350, -1087728227, 1018583793)\n\t\t + W(3, -1120434947, 1060994015, -1081081863, -1116831948)\n\t\t + W(4, -1109057316, 1062254571, -1089160278, 1040563949)\n\t\t + W(5, -1103814142, 1054415372, -1110084674, -1148705741)\n\t\t + W(6, -1108405355, 1044610849, -1097611347, -1130543166)\n\t\t + W(7, 1025046173, 1057281100, -1102762237, -1108038889);\n\tsum2 = W(0, 1021240677, -1112389783, 1025718250, -1104779102)\n\t\t + W(1, -1117500355, -1154883848, -1096682611, 1051908652)\n\t\t + W(2, -1104166105, -1102583420, 1048911763, -1093040032)\n\t\t + W(3, -1110155670, 1061056453, 1065471868, 1051220588)\n\t\t + W(4, -1101525323, -1123615532, -1149445264, -1113750073)\n\t\t + W(5, -1099065181, 1038434309, -1090281103, -1098156535)\n\t\t + W(6, -1135933351, 1041908272, 1042017461, 1046751376)\n\t\t + W(7, -1100288377, -1120914319, -1131934595, -1100861861);\n\tWS(1044733566, -1111466942);\n\tsum1 = W(0, 1033634167, 1060020808, -1092913556, -1112663104)\n\t\t + W(1, -1105078967, 1041929508, -1103349137, -1134753630)\n\t\t + W(2, -1104340430, 1062221635, -1092289734, -1126194825)\n\t\t + W(3, -1106426842, 1060048443, -1090785767, -1110397240)\n\t\t + W(4, -1101553619, 1059584252, -1094348262, -1114529117)\n\t\t + W(5, -1110993602, 1054717575, -1097827057, -1113238887)\n\t\t + W(6, -1113465444, 1044713794, -1098824243, -1140846474)\n\t\t + W(7, 1020428386, 1047352089, 1041060918, -1094820883);\n\tsum2 = W(0, 1040248415, 1084299283, 1054267917, 1002599056) + W(1, -1113076108, 1066146464, 1032173778, 1029289900)\n\t\t + W(2, 1043824330, -1073408210, -1102778436, 1027082476)\n\t\t + W(3, -1105221470, -1067326117, -1084477148, -1116688572)\n\t\t + W(4, 1036602392, -1097425816, -1149511007, 1024010398)\n\t\t + W(5, -1134849104, 1016852200, 1040914456, -1121212984)\n\t\t + W(6, -1163695359, -1119512248, 1026379762, 1007530464)\n\t\t + W(7, 1011808464, -1118870508, 1011171408, 1020903456);\n\tWS(1041204862, 1020998748);\n\tsum1 =\n\t\tW(0, 1041320410, 1040787048, -1129649268, -1136864165) + W(1, -1111643799, 1044400490, -1096018340, -1123167632)\n\t\t+ W(2, 1033147201, -1112000574, 1041936758, 1014392453) + W(3, 1033305824, 1057857240, -1090212595, 1043382402)\n\t\t+ W(4, -1110534482, 1058317173, -1083609992, 1046901861) + W(5, 1048653459, 1013490791, -1108280561, 1040774794)\n\t\t+ W(6, -1106102028, 1040475768, -1098465902, -1121200123)\n\t\t+ W(7, -1129433652, 1032979455, -1104103124, -1123801518);\n\tsum2 = W(0, 1033367466, -1105739926, 1035166617, -1121294834)\n\t\t + W(1, 1036408153, 1041467605, -1116824529, 1020242785)\n\t\t + W(2, 1049195658, -1097896497, -1127250349, 1024987646)\n\t\t + W(3, -1116950481, 1069287141, -1103787577, -1113169844)\n\t\t + W(4, -1081345874, 1045676499, -1104285546, -1109755223)\n\t\t + W(5, 1035726191, -1097322898, -1110450029, -1162599282)\n\t\t + W(6, -1109751565, 1034595972, 1041775082, -1128984227)\n\t\t + W(7, 1034565507, 1022861151, -1111377560, 1015705141);\n\tWS(1061587071, -1140717261);\n\tsum1 = W(0, -1112565188, -1082585266, 1063001355, 1029148274)\n\t\t + W(1, 1035683412, -1091946062, 1057075562, -1133150565)\n\t\t + W(2, 1034588141, -1086181493, 1061257307, -1121255338)\n\t\t + W(3, -1105710858, -1084260507, 1062016535, 1031972073)\n\t\t + W(4, 1024277837, -1087521200, 1059484653, -1140527211)\n\t\t + W(5, -1104681461, -1094344584, 1051726365, 1015752222)\n\t\t + W(6, 1033519565, -1109665588, 1053582679, -1140031633)\n\t\t + W(7, -1097426768, -1092361421, 1050023351, 1054184694);\n\tsum2 = W(0, 1052095029, -1068831962, -1076286348, 1061242602)\n\t\t + W(1, 1040595366, -1076957703, -1081349117, 1046002483)\n\t\t + W(2, -1098987175, -1081538085, -1088771362, 1040290526)\n\t\t + W(3, -1084153168, 1037971476, 1057908839, -1093902656)\n\t\t + W(4, -1091290481, 1070110671, -1114213425, -1094367529)\n\t\t + W(5, -1096720628, 1069986978, 1063483875, -1094489561)\n\t\t + W(6, -1101102486, 1074264190, 1068552571, -1099236623)\n\t\t + W(7, 1044734380, 1070997731, 1075267150, -1081182731);\n\tWS(-1071242520, -1095264341);\n\tsum1 =\n\t\tW(0, -1097248122, 1057257956, -1095464807, -1098637431) + W(1, 1017326143, 1050464317, -1098731544, 1039614697)\n\t\t+ W(2, -1105336241, 1059871125, -1096805078, 1034135507)\n\t\t+ W(3, -1091856432, 1058219580, -1088025845, -1098503641) + W(4, 1051920949, 1056167546, 1032394345, 1057766069)\n\t\t+ W(5, -1097210280, 1051126389, -1089070234, -1095933097)\n\t\t+ W(6, -1122345698, 1047883744, -1102431837, 1030493340)\n\t\t+ W(7, 999615444, 1055359408, -1098523426, -1112287963);\n\tsum2 = W(0, -1132961311, 1038597560, -1089057302, 1055074030)\n\t\t + W(1, 1034954689, -1114842936, -1113751042, 1048893008)\n\t\t + W(2, -1131131128, 1039456110, -1095192990, 1046429121)\n\t\t + W(3, -1105685093, -1104727669, -1097910004, 1057064004)\n\t\t + W(4, 1044104138, -1085849936, 1064526735, -1091871118)\n\t\t + W(5, -1118659572, 1053272959, 1045257331, -1096323208)\n\t\t + W(6, -1117347443, -1117746499, 1054461586, -1090448877)\n\t\t + W(7, -1140373421, 1049759548, 1062278408, -1081803378);\n\tWS(1055746431, 1040288248);\n\tsum1 = W(0, -1154016945, 1057716289, -1093759650, -1122750430)\n\t\t + W(1, -1117613130, 1055590360, -1094487986, -1117149477)\n\t\t + W(2, -1108247483, 1059644857, -1089867895, 1031955359)\n\t\t + W(3, -1114072538, 1067207252, -1085229664, 1016534394)\n\t\t + W(4, -1103530014, 1062212336, -1089860607, 1044969554)\n\t\t + W(5, -1134724696, -1104299500, -1088563377, -1137442922)\n\t\t + W(6, -1102903742, 1049302591, -1097577389, 1035178328)\n\t\t + W(7, 1046496384, 1054319858, -1094962569, -1108831509);\n\tsum2 = W(0, 1041968914, 1051752153, -1123800846, -1117011966)\n\t\t + W(1, 1026703145, -1115260470, 1035127537, 1031245794) + W(2, 1033601916, 1038625472, 1035458769, -1109678904)\n\t\t + W(3, 1035338047, 1052354182, 1035609386, 1050054059)\n\t\t + W(4, -1106207855, -1118891350, 1057116581, -1098815779)\n\t\t + W(5, -1094112140, -1081023345, -1104080857, 1038926653)\n\t\t + W(6, -1100978937, -1084581041, 1055976243, -1108176195)\n\t\t + W(7, -1106593629, 1066756564, -1101750238, -1107244818);\n\tWS(-1089881759, 1037957184);\n\tsum1 =\n\t\tW(0, 1000251530, -1098029886, -1105974859, 1041712355) + W(1, -1117869170, -1095515176, 1060224425, 1040628361)\n\t\t+ W(2, 1029072469, -1089055515, 1060210489, 1042449912) + W(3, 1031851625, -1079829205, 1061092856, -1119516507)\n\t\t+ W(4, 1024508279, -1094362449, 1060581840, -1102207965)\n\t\t+ W(5, -1105582638, -1105281331, 1056017638, -1107063314)\n\t\t+ W(6, -1121710869, -1112643769, 1040568609, -1112932479)\n\t\t+ W(7, -1105403363, -1102959900, 1050032516, -1124065669);\n\tsum2 = W(0, 1051114274, -1102532150, -1093533301, 1042271071)\n\t\t + W(1, -1105565679, -1114476854, 1038543175, -1112348507)\n\t\t + W(2, 1055378846, -1082969540, -1075201485, -1087360189)\n\t\t + W(3, -1098769061, 1064670328, 1077554590, -1100903801)\n\t\t + W(4, -1106275827, -1102001010, 1048871628, -1115312306)\n\t\t + W(5, -1101598109, 1044770567, 1040464379, 1031777408)\n\t\t + W(6, -1109849433, -1114021751, -1111404687, -1125205988)\n\t\t + W(7, -1104426610, 1049459491, 1049461049, -1104546886);\n\tWS(-1089609215, -1090633405);\n\tsum1 = W(0, -1095985139, 1060468726, 1029992257, -1106189340)\n\t\t + W(1, -1131730646, -1114989785, 1035463235, -1121474072)\n\t\t + W(2, -1106836118, -1111340153, 1053834481, -1109753904)\n\t\t + W(3, -1120898567, -1083229835, 1057093887, -1170836447)\n\t\t + W(4, -1122196780, -1097505195, 1060127651, -1099640750)\n\t\t + W(5, -1108220230, -1091862496, 1056095953, -1106303115)\n\t\t + W(6, -1113602180, -1118278055, 1053644551, -1102165833)\n\t\t + W(7, -1111282801, -1094974325, 1060964715, -1114233933);\n\tsum2 = W(0, -1102755055, 1028184991, 1014375557, 1018724927)\n\t\t + W(1, -1123071369, 1018963304, 1034540123, -1154538439)\n\t\t + W(2, -1101642458, 1042446539, -1110958917, 1030328833)\n\t\t + W(3, -1121616776, 1048904011, 1055634924, -1104340897)\n\t\t + W(4, -1123659230, 1022095962, -1122273513, -1123674010)\n\t\t + W(5, 1034971308, -1102092583, 1047229966, -1103087688)\n\t\t + W(6, -1114444448, -1115812270, 1006913192, -1118183380)\n\t\t + W(7, 992820811, -1115600403, 1032293939, -1116477720);\n\tWS(-1089497119, -1083970920);\n\tsum1 =\n\t\tW(0, 1049400081, 1017038202, -1096866095, -1129668560) + W(1, -1112985379, 1054102421, -1092440080, 1023489999)\n\t\t+ W(2, 1032734776, 1052273107, -1090492445, 1039999326) + W(3, 1046931016, 1050677101, -1077775563, 1047866250)\n\t\t+ W(4, 1032966898, 1056472798, -1095500286, 1031139121) + W(5, 1026703569, 1054012759, -1141821439, -1128248842)\n\t\t+ W(6, 1023567673, 1046736000, -1103091876, 1037611037)\n\t\t+ W(7, 1020804657, 1054561791, -1096856494, -1102316761);\n\tsum2 = W(0, -1119432539, -1113150368, 1049552369, -1123950204)\n\t\t + W(1, -1114702364, -1107904829, -1109676099, 1034167140)\n\t\t + W(2, -1131454616, 1051795717, 1049548364, 1018171432) + W(3, 1045807900, 1065572002, 1052256292, 1024318084)\n\t\t + W(4, -1107556037, -1104213250, 1058452060, -1104886632)\n\t\t + W(5, -1138592655, -1096394963, -1077576443, -1103410805)\n\t\t + W(6, -1120197723, 991774812, -1102019177, -1103678409)\n\t\t + W(7, -1116354551, 991245404, 1049782966, -1123412946);\n\tWS(-1092399743, 1070790531);\n\tsum1 =\n\t\tW(0, 1031557241, -1110110152, -1086332927, 1040307665) + W(1, 1024013147, -1123928476, -1104003948, 1029330819)\n\t\t+ W(2, 1045977841, -1100428029, -1091187884, 1054647477)\n\t\t+ W(3, 1049827334, -1093314535, -1110202001, 1048337215) + W(4, 1044712430, -1098211617, 1031718940, 1045074033)\n\t\t+ W(5, 1042539942, -1120318828, 1031171411, 1042256462) + W(6, 1022243624, -1110797385, -1118825252, 1034920639)\n\t\t+ W(7, 1042631871, -1103475236, 1047659449, 1041342974);\n\tsum2 = W(0, 1035080118, 1049091174, 1068767241, 1056655092) + W(1, -1111978522, 1049791001, 1068692590, -1120502660)\n\t\t + W(2, 1043189101, 1038894820, 1041587068, 1054889999)\n\t\t + W(3, -1107203795, -1088677682, -1079138335, -1094007639)\n\t\t + W(4, 1020874649, -1074681252, -1088844169, -1106617291)\n\t\t + W(5, 1040978901, 1032440616, 1033618204, 1037089622)\n\t\t + W(6, -1103963851, -1139760881, 1036797334, -1115116202)\n\t\t + W(7, 1014904337, -1132242473, 1040720920, 1029103732);\n\tWS(-1076899872, -1090262268);\n\tsum1 = W(0, -1111775583, -1105212520, 1053805936, -1130865048)\n\t\t + W(1, -1105515965, -1109220950, 1044900104, -1124779047)\n\t\t + W(2, 1031134981, -1105276619, 1061229259, -1108606366)\n\t\t + W(3, -1152866339, -1081197371, 1056451270, 1012899053)\n\t\t + W(4, 1022185487, -1085735312, 1061180827, -1111684786)\n\t\t + W(5, 1031461535, -1090100176, 1061600458, 1038272628) + W(6, 991487050, -1106571081, 1040836429, -1123743158)\n\t\t + W(7, 1013082739, -1094472404, -1114201801, 1043636133);\n\tsum2 = W(0, -1092758077, 1054372816, 1025999909, 1025560437) + W(1, -1099940688, 1036990346, 1044094629, 1015649794)\n\t\t + W(2, -1096959860, -1102824961, -1093700170, -1134776466)\n\t\t + W(3, -1093749782, 1072234824, 1074465248, -1118772240)\n\t\t + W(4, 1047974360, -1091574668, -1086059593, -1097328702)\n\t\t + W(5, -1120633714, -1098403340, -1083936129, 1035273338)\n\t\t + W(6, 1036248767, -1097220109, 1045585843, -1098634116)\n\t\t + W(7, -1113388587, 1024848209, -1093741871, 1051989609);\n\tWS(-1097318719, -1106686758);\n\tsum1 =\n\t\tW(0, -1138034233, 1031803579, -1107190316, -1118470609) + W(1, 1022220430, -1105675680, -1110575515, 1013564641)\n\t\t+ W(2, -1115259277, 1060345356, -1091489993, 1028754310) + W(3, 1037878284, 1040095311, -1082557626, 1043380040)\n\t\t+ W(4, -1109043646, 1057210483, 1054616755, -1126688788)\n\t\t+ W(5, -1118564628, 1018511203, -1113047197, -1103180903)\n\t\t+ W(6, -1132126739, 1038086620, 1037558661, -1105313401)\n\t\t+ W(7, -1123355602, 1040876381, 1040895458, -1110366427);\n\tsum2 =\n\t\tW(0, -1116780480, 1011610145, -1126532250, 1031867194) + W(1, 1034654933, -1109786563, 1049246354, -1117436106)\n\t\t+ W(2, 1033980194, 1034290987, -1098441369, 1050453777) + W(3, -1106740681, 1058839838, 1055488745, -1098876833)\n\t\t+ W(4, 1037910476, -1112504437, -1081564854, -1101879397)\n\t\t+ W(5, -1110588743, 1048688059, -1109313096, -1105182695)\n\t\t+ W(6, 1033369701, -1100404580, 1046210019, 1033744368) + W(7, 1006481529, 1024874106, -1122526519, 1042001428);\n\tWS(1061957727, 1058150789);\n\tsum1 =\n\t\tW(0, 1009728708, -1099288198, 1046412713, 1036440691) + W(1, 1031914819, -1097230757, 1055587995, -1109853493)\n\t\t+ W(2, 1043097483, -1087266183, 1056802398, -1106212891) + W(3, -1106863550, 1043273168, 1049133325, 1023154886)\n\t\t+ W(4, -1097372952, 1055416522, -1086687979, 1047286155)\n\t\t+ W(5, -1108191069, 1050026271, -1105368103, 1036106272)\n\t\t+ W(6, 1032793786, -1110590381, -1107437206, 1024106902)\n\t\t+ W(7, -1129266281, -1108247452, 1042988739, -1120124353);\n\tsum2 = W(0, 1021676194, 1026925373, -1130821928, 1011207236)\n\t\t + W(1, -1104415808, 1041631623, 1047340087, -1118374396) + W(2, 1041444786, 1049347642, 1055108729, 1032289888)\n\t\t + W(3, -1104915444, -1075706495, -1078646873, -1097824639)\n\t\t + W(4, 1042839409, 1068941883, 1058328878, 1041964936) + W(5, 1025561656, 1049874161, 1054741696, -1122940124)\n\t\t + W(6, -1111488206, -1096918949, -1108156193, 1033049167)\n\t\t + W(7, -1119893126, 1030080935, -1107876167, -1131526532);\n\tWS(1058678303, 1013994144);\n\tsum1 =\n\t\tW(0, -1118673511, 1050426208, -1111022430, -1110204509) + W(1, -1145988558, 1032382213, 1019043839, -1116037137)\n\t\t+ W(2, -1107600786, 1059103555, -1086017695, 1043824660)\n\t\t+ W(3, -1097799452, 1061451838, -1090188381, -1111434373)\n\t\t+ W(4, 1050901309, -1098106458, 1050664020, -1123560275) + W(5, 1025019066, 1032049821, -1093177128, 1043538778)\n\t\t+ W(6, 1034380585, 1038038624, -1133222475, -1104489131)\n\t\t+ W(7, -1117490811, 1043957152, -1113568728, -1110765932);\n\tsum2 =\n\t\tW(0, -1105859137, 1052524883, -1116369180, 1025172812) + W(1, 1047608842, -1096529292, 1033298597, 1035180205)\n\t\t+ W(2, -1101390223, -1103682938, -1095014501, -1138831970)\n\t\t+ W(3, 1011548907, 1018027622, 1063707518, -1096368530) + W(4, -1098146078, 1039330573, 1056731707, -1094263126)\n\t\t+ W(5, 1047719826, -1101134187, -1086128756, 1061932077)\n\t\t+ W(6, -1099968186, 1054816538, 1037701277, -1095466983)\n\t\t+ W(7, 1028887915, -1105962981, -1150004284, 1016476277);\n\tWS(1063038079, 1033861047);\n\tsum1 =\n\t\tW(0, -1111914898, 1016779545, -1107257338, -1114919788) + W(1, 1040884807, 1014390112, 1045397811, -1162045399)\n\t\t+ W(2, -1102681756, -1109833994, -1096677860, -1101855164)\n\t\t+ W(3, 1061986003, -1095449911, 1065846455, 1049909751)\n\t\t+ W(4, -1095429920, -1097838100, 1029008656, -1097193708)\n\t\t+ W(5, -1109559865, 1019923216, 1039008680, -1113534130) + W(6, 1034752240, -1148961393, 1033037520, 1007645095)\n\t\t+ W(7, -1104233906, 1009274926, 1029851870, -1103320918);\n\tsum2 = W(0, -1112457849, -1117177515, 1031942991, -1106095669)\n\t\t + W(1, -1106002020, 1017665294, 1033022206, 1041685053)\n\t\t + W(2, -1103752624, -1098231154, -1133545004, -1095196752)\n\t\t + W(3, -1114732591, 1062239338, 1061426536, 1046863079)\n\t\t + W(4, -1102536580, -1097906884, -1109528685, -1105989872)\n\t\t + W(5, 1029961226, -1101585142, 1032626487, -1120505375)\n\t\t + W(6, -1114728817, 1037597321, -1114069131, 1028074076)\n\t\t + W(7, 1038070251, -1112453861, 1032988844, -1124888510);\n\tWS(1060691839, -1121680521);\n\tsum1 = W(0, -1112633460, -1105323108, 1045243383, -1113361469)\n\t\t + W(1, 1034282296, -1097943963, -1117038833, -1109479713)\n\t\t + W(2, 1016470792, -1091137362, 1060606770, -1110311799)\n\t\t + W(3, -1124091490, -1083253895, 1065759511, -1102522287)\n\t\t + W(4, 1036530779, -1090987401, 1062311590, -1114082482)\n\t\t + W(5, -1110508885, -1090137469, 1056765570, -1104777690)\n\t\t + W(6, 1036991882, -1098291034, 1054157412, 1016563642)\n\t\t + W(7, -1133939630, -1093525810, 1057599172, -1167556095);\n\tsum2 =\n\t\tW(0, -1097189010, 1057901747, -1086723052, -1086497310) + W(1, 1041454563, 1039698409, -1087530727, -1090377488)\n\t\t+ W(2, -1110771302, -1122301550, -1094374456, -1110538585)\n\t\t+ W(3, 1043926258, -1125642190, 1064818137, 1061014784) + W(4, -1109373654, -1108285138, 1036021291, 1034378960)\n\t\t+ W(5, -1109768355, 1020817735, -1109979249, 1044647130) + W(6, -1114304258, 1040279727, 1055924705, 1013465199)\n\t\t+ W(7, 1043669875, -1101494695, 1040712355, 1050381101);\n\tWS(-1087684831, -1094525449);\n\tsum1 = W(0, 1038107891, -1093934649, 1052573184, 1038198313)\n\t\t + W(1, -1121734275, -1096975274, 1049163549, -1113930844)\n\t\t + W(2, 1035814365, -1093954738, 1040479417, 1035537105)\n\t\t + W(3, -1107604308, -1090018791, 1066601083, -1102439448)\n\t\t + W(4, 1038052214, -1088075930, 1058232216, -1113118893)\n\t\t + W(5, -1101928869, -1090123804, 1057618495, -1148589172)\n\t\t + W(6, -1104767443, -1106254226, 1040796439, -1146582942)\n\t\t + W(7, -1127021124, -1100235009, 1051666987, 1033628463);\n\tsum2 =\n\t\tW(0, -1102391770, 1038892506, -1109920182, 1034045130) + W(1, 1032495868, 1032348345, 1035913564, -1111661823)\n\t\t+ W(2, -1140349122, 1055934176, 1043439866, -1148365864) + W(3, 1051494072, 1066287204, 1049172795, 1035742233)\n\t\t+ W(4, -1080481573, 1070533091, 1048700512, 1024670194) + W(5, -1072283498, 1056179234, -1122911277, 1043482108)\n\t\t+ W(6, -1085993190, -1098172645, 1042548330, -1117726050)\n\t\t+ W(7, -1091499210, 1038613315, -1103404378, 1024343165);\n\tWS(-1095407551, -1073547033);\n\tsum1 = W(0, -1103915126, 1043640456, -1106314263, -1099126911)\n\t\t + W(1, -1101976843, 1041775803, -1098551608, 1023142916)\n\t\t + W(2, 1024335748, 1061599658, -1096990689, -1110220795)\n\t\t + W(3, -1108044768, 1057524528, -1095708126, -1106562202)\n\t\t + W(4, 1050893513, 1060862745, -1102020840, 1056016670)\n\t\t + W(5, -1095324014, 1028413803, -1092797676, -1099653918)\n\t\t + W(6, -1107189281, 1044362232, -1110398586, 1031215069)\n\t\t + W(7, -1114975198, 1051352312, -1097969466, -1138223071);\n\tsum2 = W(0, -1112168075, 1034632723, 1034960798, -1112860057)\n\t\t + W(1, -1111493200, -1122920764, 1040740621, -1108202591)\n\t\t + W(2, -1123529566, 1009053647, -1105159128, -1115675116)\n\t\t + W(3, 1022286331, 1049936313, 1057592446, -1112708946)\n\t\t + W(4, -1103466952, 1051909492, -1126339526, -1146770753)\n\t\t + W(5, 1035493883, -1099948229, 1041517424, -1116950762)\n\t\t + W(6, -1113566520, 1029419308, 1016655048, -1115594520)\n\t\t + W(7, -1106265315, -1107051081, 1024151142, -1103163741);\n\tWS(1063407871, 1051042354);\n\tsum1 = W(0, 1005154604, 1049807310, -1113122997, -1107282310)\n\t\t + W(1, -1120529264, 1052429035, -1100831547, 1042685852)\n\t\t + W(2, -1106161584, 1057743574, -1088929544, -1113923042)\n\t\t + W(3, -1130858780, 1063894449, -1086654500, -1129272494)\n\t\t + W(4, -1114354154, 1058090310, -1089886688, -1164896285)\n\t\t + W(5, -1127255711, 1052514789, -1092092086, -1131567786)\n\t\t + W(6, 1023693521, 1044231916, -1106897472, -1131959253)\n\t\t + W(7, -1115504868, 1049931918, -1097639884, -1115987013);\n\tsum2 = W(0, -1113031572, 1043434467, -1088941888, -1067187434)\n\t\t + W(1, 1030565628, -1108784254, 1056568736, -1079041185)\n\t\t + W(2, -1127702936, -1111949688, 1036016830, 1074040966) + W(3, 992883874, 1036810375, 1060861120, 1075709893)\n\t\t + W(4, 1014952720, -1111107284, 1023742716, -1099161149) + W(5, 990495554, 1042918247, -1098281783, 992814626)\n\t\t + W(6, 1018238740, -1120169364, 1022041004, 1039733673)\n\t\t + W(7, 1023316920, -1112993936, -1112517088, 1028892682);\n\tWS(1053166591, -1107822593);\n\tsum1 = W(0, 1033874440, -1120335240, -1105709561, 1042509273)\n\t\t + W(1, 1022746982, 1031831786, -1108379508, 1008295657) + W(2, 1035703758, 1052124034, -1093762507, 1044631286)\n\t\t + W(3, 1019810386, 1048792350, 1046826502, -1124953572)\n\t\t + W(4, 1044260196, -1095582904, 1053612659, -1112928126)\n\t\t + W(5, 1042374543, -1088629918, 1045805451, -1113071488)\n\t\t + W(6, 1040749291, -1097950065, 1037463342, -1120529605)\n\t\t + W(7, 1041374685, -1085974448, 1042845918, -1132054272);\n\tsum2 = W(0, 1010990056, -1096561981, 1040308359, -1119485380)\n\t\t + W(1, 1039106059, -1097601992, 1052717590, -1115258493)\n\t\t + W(2, -1102786881, 1031463124, 1058176412, -1101721469)\n\t\t + W(3, -1114641521, 1058004743, 1045709336, -1138490792)\n\t\t + W(4, -1133768253, 1042505523, 1034355291, -1101570252)\n\t\t + W(5, -1101476912, 1041182740, -1096768246, 1029590734)\n\t\t + W(6, -1103607882, -1105959219, 1033275384, 1037679123)\n\t\t + W(7, -1113060394, -1099775079, -1105804625, 1036565969);\n\tWS(1028916214, 1067075549);\n\tsum1 =\n\t\tW(0, 1039584518, -1148995491, -1098323934, 1026160863) + W(1, -1119264713, -1109885152, -1096386895, 1022848653)\n\t\t+ W(2, 1016298993, 1055889168, -1096985498, -1150434165)\n\t\t+ W(3, -1105861885, 1067421167, -1085982162, 1034469007)\n\t\t+ W(4, -1113980813, 1059632007, -1087532161, 1044152506) + W(5, 1020015061, 1055091716, -1088331431, 1024761132)\n\t\t+ W(6, -1134777055, 1045130509, -1095878225, 1032543553)\n\t\t+ W(7, 1032661512, 1052375930, -1104015130, -1104676378);\n\tsum2 = W(0, -1120016029, -1101422768, -1104653664, -1122344899)\n\t\t + W(1, -1096222017, -1103630239, -1105545071, 1042131820)\n\t\t + W(2, -1119382227, 1040689805, -1120927281, -1120071349)\n\t\t + W(3, -1092715875, 1064582511, 1058022283, -1101606830)\n\t\t + W(4, -1110818689, 1043406218, 1060808344, -1096987934)\n\t\t + W(5, 1049876716, -1089499537, -1107109410, 1051590178)\n\t\t + W(6, -1103484103, 1029271710, -1107008053, -1099435532)\n\t\t + W(7, 1032841990, -1117522613, -1105419897, 1050342947);\n\tWS(1047020030, 1040511430);\n\tsum1 =\n\t\tW(0, -1108637223, -1092384755, 1057603229, 1031927268) + W(1, 1033110649, -1090443530, 1053549631, -1122999800)\n\t\t+ W(2, 1044090139, -1085982557, 1061618217, 1026366340) + W(3, 1043424750, -1080046633, 1047924234, 1032840448)\n\t\t+ W(4, 1036624046, -1083957593, 1053999549, 1015929108) + W(5, -1120308481, -1096279270, 1057048888, 1020572028)\n\t\t+ W(6, 1033721201, -1149642107, 1057845673, 994286645) + W(7, -1106849700, -1100324533, 1052833857, 1039624063);\n\tsum2 = W(0, 1035208568, -1124082321, -1093736918, 1048736861)\n\t\t + W(1, 1043030610, 1008382386, 1050323039, -1118377912)\n\t\t + W(2, -1107699159, -1107061123, -1114950423, -1106119918)\n\t\t + W(3, 1044796248, 1049576136, 1074526989, -1111443567) + W(4, 1034655700, 1051573865, 1073198167, -1132389881)\n\t\t + W(5, -1103668262, 1048541752, -1080621030, 1034733436)\n\t\t + W(6, 1045164876, -1093669891, -1074078238, 1034120076)\n\t\t + W(7, -1095424772, -1134934914, -1079139349, 1029501600);\n\tWS(-1080108544, 1072234904);\n\tsum1 =\n\t\tW(0, -1115070415, 1027588151, 1031137458, 1018404227) + W(1, -1130610603, 1029085890, -1104252646, 1044293186)\n\t\t+ W(2, -1098588213, 1032775046, 1056995037, 1028038521) + W(3, 1057466749, -1089931562, -1083673968, 1050777268)\n\t\t+ W(4, -1104374087, -1123371019, 1052314097, -1093125043)\n\t\t+ W(5, 1029557602, -1094030554, 1050628415, 1046325824) + W(6, 1018553236, 1034779836, 1033643941, -1108340394)\n\t\t+ W(7, 1001112594, 999211181, 1036988180, 1020739741);\n\tsum2 = W(0, -1115557063, 1043108929, -1138826120, -1108049897)\n\t\t + W(1, -1118678156, 1033401680, -1093193803, -1109597407)\n\t\t + W(2, 1045099863, 1036186051, -1079584214, 1013268663)\n\t\t + W(3, -1102856438, -1124450766, 1068262877, 1049634970)\n\t\t + W(4, 1035209289, -1112637977, -1121148137, 1046161245)\n\t\t + W(5, 1035167397, -1114646959, 1041792105, -1111895568)\n\t\t + W(6, -1117208818, 1012643139, -1138286224, -1127251156)\n\t\t + W(7, -1120387027, -1132473655, 1032348301, -1116707942);\n\tWS(1061770399, 1033097145);\n\tsum1 = W(0, -1127803310, -1100493560, 1049484359, -1117956049)\n\t\t + W(1, -1108446526, -1122290538, 1040952192, -1101349332)\n\t\t + W(2, 1046619869, -1090144134, 1049567736, 1015706547)\n\t\t + W(3, -1102069216, -1124504076, 1060283011, 1051006353)\n\t\t + W(4, -1115166002, -1096124978, 1036170309, 1027971186)\n\t\t + W(5, -1107462472, -1113245389, 1049188012, -1105896346)\n\t\t + W(6, -1113123881, -1115437168, 1004781969, 1011773295)\n\t\t + W(7, -1109525661, -1114380655, 1043620172, -1118021614);\n\tsum2 = W(0, -1115090363, 1035607607, 1036976780, -1102631851)\n\t\t + W(1, -1146121477, 1032878473, 1008730983, -1105868946)\n\t\t + W(2, 1029869322, 1020296178, 1050702114, -1106613659) + W(3, 1039239074, -1094567498, 1060438996, 1056742871)\n\t\t + W(4, -1123366919, -1133024223, -1092544833, 1056526109)\n\t\t + W(5, -1123569769, -1111505684, -1088372125, -1103439045)\n\t\t + W(6, -1115297931, 1036037468, -1119747923, -1114092237)\n\t\t + W(7, 1022224092, 1025152664, 1015952550, -1109382916);\n\tWS(1063262431, 1041246684);\n\tsum1 =\n\t\tW(0, -1095604910, -1094141452, 1054301899, 1050361575) + W(1, 1035931377, -1103734011, 1050116188, 1015464930)\n\t\t+ W(2, -1116408259, -1088213584, 1059695011, -1130477940)\n\t\t+ W(3, -1113418944, -1084116356, 1063045487, 1005018697)\n\t\t+ W(4, 1035543059, -1088057339, 1060587189, -1114430457)\n\t\t+ W(5, -1109446615, -1084926720, 1062081288, -1112900435) + W(6, 1041501409, -1095142868, 1055163174, 968128030)\n\t\t+ W(7, -1111045021, -1085134126, 1061043357, 1012274924);\n\tsum2 = W(0, -1088652568, 1079171932, 1068650823, -1089634291)\n\t\t + W(1, -1101936220, 1073764649, 1062997529, -1106083041)\n\t\t + W(2, -1091191468, 1074855165, 1053027607, -1102140198)\n\t\t + W(3, -1102444501, -1113430470, 1039600983, -1123235056)\n\t\t + W(4, -1123800532, -1095064501, -1105207914, 1028735871)\n\t\t + W(5, -1111069004, -1078839186, -1082346847, 1056073450)\n\t\t + W(6, -1088813372, -1078450334, -1088354544, -1114344542)\n\t\t + W(7, 1050243792, -1071519758, -1081653443, 1060600412);\n\tWS(-1071343712, -1080188504);\n\tsum1 = W(0, 1048814204, 1024112567, -1101821021, -1155239198)\n\t\t + W(1, -1112944093, 992179242, -1105846854, -1115614373)\n\t\t + W(2, 1038698214, 1035991718, -1110088095, -1117961066)\n\t\t + W(3, -1110388460, 1065540811, -1086620536, 1022833410)\n\t\t + W(4, -1102353903, 1062800155, -1085891530, 1037955557)\n\t\t + W(5, -1113346827, 1057270438, -1092189183, -1130491710)\n\t\t + W(6, -1115354285, 1047814390, -1094362793, 1026576596)\n\t\t + W(7, -1172877482, 1055244391, -1096652125, 1021561214);\n\tsum2 = W(0, 1077488778, 1057844910, -1110901413, -1157420388)\n\t\t + W(1, 1067869852, 1017329883, -1123912240, 1016773013)\n\t\t + W(2, -1080283979, -1112258962, 1048616910, -1127671945)\n\t\t + W(3, -1070445594, 1038200220, -1103189448, 1027002057)\n\t\t + W(4, -1085461181, 1045877800, 1033584054, -1139116556)\n\t\t + W(5, -1113067149, 1016515143, -1113680120, -1108492850)\n\t\t + W(6, -1135625536, 1029029881, 1006246833, 1033508697)\n\t\t + W(7, -1105631704, 1026840239, 1028070058, -1122607860);\n\tWS(-1114300667, -1123436789);\n\tsum1 =\n\t\tW(0, 1048745214, 1024457460, -1084727981, -1124831645) + W(1, -1106612992, 1049280824, -1099711469, -1120312678)\n\t\t+ W(2, 1040619730, 1061265254, -1091611130, 991636461) + W(3, -1101020989, 1066754197, -1090437274, -1115033343)\n\t\t+ W(4, -1120049178, 1060475010, -1087975654, 1037659252)\n\t\t+ W(5, -1129452308, 1056957204, -1087165059, 1036876438)\n\t\t+ W(6, -1112058252, 1052291799, -1095257281, 1024723233)\n\t\t+ W(7, 1040777596, 1051532558, -1091858685, -1128167880);\n\tsum2 =\n\t\tW(0, -1102675226, -1096018291, -1064870457, 1050758265) + W(1, 1045758589, 1033992894, -1078407710, -1091427154)\n\t\t+ W(2, -1106608364, 1053924217, 1074354229, 1044800412) + W(3, 1037856863, 1023354017, 1077566439, -1122690967)\n\t\t+ W(4, -1121700495, 1045521037, 1055978728, 1037435194)\n\t\t+ W(5, 1038509645, -1112080608, -1100523264, -1101170582) + W(6, 1041300787, 1019757091, 1032114149, 1048475585)\n\t\t+ W(7, 1013024414, -1111416466, -1096094745, 1031501486);\n\tWS(-1081349952, -1073531246);\n\tsum1 =\n\t\tW(0, -1130396178, -1092471918, 1052933181, -1120779255) + W(1, -1123247001, -1094799967, 1040552427, 1032899791)\n\t\t+ W(2, 1049234666, -1087091570, 1062313536, 1048808240) + W(3, -1123595694, -1083589055, 1056428784, 1047688662)\n\t\t+ W(4, 1044575749, -1090515766, 1060166366, 1025076592)\n\t\t+ W(5, -1118849787, -1088301188, 1052569014, -1104574961)\n\t\t+ W(6, 1027091408, -1100895532, 956727337, -1114767697) + W(7, 1015989072, -1095518837, 1057005798, 1028829344);\n\tsum2 =\n\t\tW(0, 1036727690, -1101780564, 1047063866, -1095151348) + W(1, 1038605852, 1036224480, 1003722492, -1101329253)\n\t\t+ W(2, 1000461252, 1043313873, 1071364196, -1071443435) + W(3, -1108807283, 1058417373, 1075919102, -1072909475)\n\t\t+ W(4, -1118764382, -1110550387, 1031984760, -1137970650)\n\t\t+ W(5, 1040753555, 1041024731, 1052825370, -1094681513) + W(6, 1025474323, 1032765623, -1104266299, -1130737363)\n\t\t+ W(7, 1026410269, -1114514162, 1049040777, -1100563228);\n\tWS(-1087415039, 1075227720);\n\tsum1 = W(0, 1014202565, 1030200505, 1042588557, 1032642210) + W(1, -1121306305, -1093044977, 1045750086, 1039690838)\n\t\t + W(2, -1115466670, 1052765481, -1099185023, -1099716881)\n\t\t + W(3, 1055732347, -1086016434, -1102841730, 1054066516)\n\t\t + W(4, -1088701572, -1108244135, 1060432915, -1089156724)\n\t\t + W(5, 1045428619, 1044242725, 1001272287, 1045967960) + W(6, -1106855619, -1102530383, 1047811955, 994787170)\n\t\t + W(7, -1113272762, 1042147022, 1043051755, -1114980876);\n\tsum2 = W(0, 1034817173, 1033088277, -1105460751, -1119967238)\n\t\t + W(1, -1106843150, -1115275500, 1042281307, -1122100142)\n\t\t + W(2, 1035283571, -1108330169, -1117933953, -1118763227)\n\t\t + W(3, -1117324330, 1059951304, 1055263105, 1033190213)\n\t\t + W(4, -1106783723, -1114610359, 1036736577, -1099584511)\n\t\t + W(5, 1033652183, -1130129964, 1034893511, -1097591398)\n\t\t + W(6, -1105003316, -1100855920, 1040893249, 1043864443)\n\t\t + W(7, -1109219720, 1017452836, 1026860110, -1097701018);\n\tWS(1061885343, -1093433134);\n\tsum1 = W(0, -1119074171, -1116612499, 1043937396, 1026065358)\n\t\t + W(1, 1040591342, -1106037336, 1035985530, 1035233146) + W(2, 1024365415, -1090085717, 1054530437, 1023445318)\n\t\t + W(3, -1112185530, -1110885309, -1105284753, 1041032751)\n\t\t + W(4, -1102861510, 1058148680, -1085809524, 1043298226)\n\t\t + W(5, 1047951017, -1098920364, 1042740717, 1028431483)\n\t\t + W(6, 1033079635, -1104145445, -1143903027, 1030877520)\n\t\t + W(7, 1030794670, -1102965524, 1048819605, -1110782149);\n\tsum2 = W(0, -1120425303, -1115506247, -1089905659, -1106986872)\n\t\t + W(1, 1041777983, -1109249837, -1082926483, -1093100415)\n\t\t + W(2, 1008642595, 1051302633, 976609774, -1100742938) + W(3, 1038578170, 1062460419, 1062992305, -1121360027)\n\t\t + W(4, -1103931105, 1046700430, 1016533657, 1026171953)\n\t\t + W(5, -1144970974, -1110379832, 1046952726, -1123505732)\n\t\t + W(6, -1139607395, -1121481149, -1128426413, 1047068010)\n\t\t + W(7, -1105571910, -1125592805, 1044012895, -1108759193);\n\tWS(1057387711, 1071476886);\n\tsum1 = W(0, 1029774760, -1088145158, 1058722665, 1026644842)\n\t\t + W(1, 1046876472, -1090879061, 1046940920, -1124024690)\n\t\t + W(2, 1049447728, -1087750555, 1062289140, 1034805113)\n\t\t + W(3, -1104814472, -1081209882, 1060559271, -1101227374)\n\t\t + W(4, 1047761369, -1102041597, 1057163193, 1041428045)\n\t\t + W(5, -1107998911, -1088704948, 1046238393, -1112057972)\n\t\t + W(6, 1035672969, -1101378696, 1049034574, -1123650077)\n\t\t + W(7, 1025453339, -1090772220, 1051154538, 1045125730);\n\tsum2 =\n\t\tW(0, -1079574021, 1066168402, -1106633910, 1033041398) + W(1, -1076424748, 1072246945, 1039775524, 1025560740)\n\t\t+ W(2, -1084651933, 1055648588, -1122282375, 1042767844)\n\t\t+ W(3, -1079383446, 1069722149, 1050613020, -1122422479)\n\t\t+ W(4, -1094010079, -1105729737, -1112550614, 1029478726)\n\t\t+ W(5, -1105513599, 1052366950, 1046757765, 1029747528) + W(6, -1094989946, 1046266897, 1041413657, -1132333344)\n\t\t+ W(7, -1083946107, 1064021500, -1117589808, -1110924549);\n\tWS(-1088291167, -1076464582);\n\tsum1 = W(0, 1038365083, 1048475643, -1115380053, -1113517956)\n\t\t + W(1, 1013092187, 1039614653, -1115741870, -1118168192)\n\t\t + W(2, 1049005176, -1105893787, -1115211424, 1038779144)\n\t\t + W(3, -1096083994, -1090164821, -1106465144, -1103584918)\n\t\t + W(4, 1046666973, 1048630844, -1092124773, 1051487172) + W(5, 1029385568, 1052597003, -1097273638, 1036949051)\n\t\t + W(6, -1130846211, 1030762351, -1104199584, 1029432699)\n\t\t + W(7, 1035921309, 1049653618, -1098780292, 1041505439);\n\tsum2 = W(0, -1102442432, -1119046775, 1038119755, -1116688635)\n\t\t + W(1, 1042447103, -1103497340, -1117033259, -1109692823)\n\t\t + W(2, 1009200726, -1108371687, -1111757198, -1136365839)\n\t\t + W(3, -1140140535, 1063726871, 1053430514, -1103585210)\n\t\t + W(4, 1018235219, 1023996549, -1097582390, 1035998106)\n\t\t + W(5, 1038566242, -1100556235, -1130738637, -1122627505)\n\t\t + W(6, -1105836948, -1134905751, 1027482933, -1113769016)\n\t\t + W(7, -1119461411, -1115426548, 1038939472, -1131103707);\n\tWS(1063535295, -1106643391);\n\tsum1 = W(0, 998897947, 1049160779, -1095715331, 1022592892) + W(1, -1114069468, 1050551697, -1114097198, 1035333911)\n\t\t + W(2, 1030590255, 1037435628, -1091439068, -1105875754)\n\t\t + W(3, -1120649212, 1059662980, -1098500149, 1036951763)\n\t\t + W(4, -1112623985, 1051258674, -1093374928, -1097348874)\n\t\t + W(5, -1135800742, 1051146291, -1112852607, 1021555078)\n\t\t + W(6, -1126057998, 1042046535, -1104302276, 1032877804)\n\t\t + W(7, -1118923687, 1051522915, -1098602138, -1118947123);\n\tsum2 =\n\t\tW(0, 1020791040, 1023004440, -1131522740, -1130592194) + W(1, -1119848331, 1035188360, 1010552055, -1114014595)\n\t\t+ W(2, 1028098574, 1036866165, -1087402238, 1057774258) + W(3, 1024075228, -1081188844, -1063807577, 1085749988)\n\t\t+ W(4, 1036335573, 1036267331, -1074297638, 1072260443) + W(5, -1114214294, 1020492762, 1044255896, -1101071935)\n\t\t+ W(6, 1028067710, 1026996488, -1109527927, 1041502854)\n\t\t+ W(7, -1123998545, 1028180222, -1125487816, -1121770211);\n\tWS(1065370528, -1140007425);\n\tsum1 = W(0, -1119191691, -1089109360, 1051697742, 1048704645)\n\t\t + W(1, -1123119348, -1093467562, 1051845168, -1120571445)\n\t\t + W(2, 1043193134, -1104035088, 1049231373, 1047054964)\n\t\t + W(3, -1144777506, -1082641845, 1058881533, -1128753754)\n\t\t + W(4, 1048874737, -1090665335, 1060727795, -1122636375)\n\t\t + W(5, -1114692372, -1085597050, 1053776045, -1135014444)\n\t\t + W(6, 1047204584, -1097312497, 1050811579, 962936920) + W(7, 1028382351, -1084438004, 1054559607, 1047044271);\n\tsum2 = W(0, 1072219394, -1078126224, -1093298188, 1011861728)\n\t\t + W(1, 1068804680, -1079031251, -1110022070, 1040923692)\n\t\t + W(2, 1068134846, -1078951161, -1084926454, -1105857084)\n\t\t + W(3, 1066171639, -1087436811, -1107767815, -1121892273)\n\t\t + W(4, -1095987744, 1039512383, 1055586357, 1026590003) + W(5, -1080918851, 1067164113, 1031793821, 1040751494)\n\t\t + W(6, -1077110574, 1069504242, 1041030661, -1123439499)\n\t\t + W(7, -1071545857, 1075315134, 1055897321, -1109554506);\n\tWS(-1089696543, -1143233957);\n\tsum1 =\n\t\tW(0, -1115482013, -1129127938, 1041381507, -1122467892) + W(1, 1045323653, -1098483714, -1110243009, 1049605572)\n\t\t+ W(2, -1096516931, 1045383939, 1059582003, -1090424421)\n\t\t+ W(3, 1035013745, -1091150045, -1106321908, 1043667267)\n\t\t+ W(4, -1162367211, 1043411549, 1034020454, -1109629626) + W(5, 1054106403, -1086835476, 1026676964, 1048548650)\n\t\t+ W(6, -1107204469, 1048447553, 1034191370, -1105600748)\n\t\t+ W(7, 1036179510, -1103773800, -1159158363, 1035568493);\n\tsum2 = W(0, -1134008573, 1032064725, -1117795542, -1113496357)\n\t\t + W(1, -1125596513, -1121806942, 1035355315, 998755498) + W(2, 1011008945, 1045441656, 1024667789, -1119910472)\n\t\t + W(3, 1051842604, 1065460002, -1089961367, 1041632626)\n\t\t + W(4, -1125276577, -1114964420, -1081892598, 1035390555)\n\t\t + W(5, -1118729604, -1130705389, 1026896379, 1032979221)\n\t\t + W(6, -1111959837, -1121883022, 1020053498, -1129745921)\n\t\t + W(7, -1117720498, 1034360078, 1023648883, -1115672512);\n\tWS(1065278079, -1120402802);\n\tsum1 =\n\t\tW(0, 1031924074, 1052390115, -1097070063, -1116671142) + W(1, -1115548942, 1049303261, -1099757447, -1118597165)\n\t\t+ W(2, -1106896516, 1045251552, 1040981136, 1041336272) + W(3, -1112658654, 1060948388, -1081623390, 1043338841)\n\t\t+ W(4, -1103991244, 1062622505, -1085365853, -1145407604)\n\t\t+ W(5, -1121670257, 1054395391, -1096062708, 1032773481)\n\t\t+ W(6, -1115583119, 1045812503, -1101077740, -1123616408)\n\t\t+ W(7, 1031270934, 1048618059, -1099232531, -1127437558);\n\tsum2 =\n\t\tW(0, -1114021356, -1110767736, -1100377718, 1034493514) + W(1, 1032565152, -1122384971, 1041858293, 1019779384)\n\t\t+ W(2, 1056835748, -1085457975, -1085697040, 1016590225)\n\t\t+ W(3, -1085160508, 1068814369, 1060746614, -1097525969) + W(4, 1058685385, -1085213012, 1057245366, 1043875459)\n\t\t+ W(5, -1086618535, 1063574785, -1094120608, -1097974912)\n\t\t+ W(6, 1047242231, -1144776155, -1093482365, 1054776673)\n\t\t+ W(7, 1032715041, -1097434793, 1056356490, -1096653037);\n\tWS(1055688959, -1109584743);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[429];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { temp[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 11 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 429; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 11, y = (uint)id % 11;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (3)) + 0.5, float(group_base.y + y - (1)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[8];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 11];\n\tsamples[1][1] = inp[local_pos + 12];\n\tsamples[1][2] = inp[local_pos + 13];\n\tsamples[1][3] = inp[local_pos + 14];\n\tsamples[2][0] = inp[local_pos + 22];\n\tsamples[2][1] = inp[local_pos + 23];\n\tsamples[2][2] = inp[local_pos + 24];\n\tsamples[2][3] = inp[local_pos + 25];\n\tsamples[3][0] = inp[local_pos + 33];\n\tsamples[3][1] = inp[local_pos + 34];\n\tsamples[3][2] = inp[local_pos + 35];\n\tsamples[3][3] = inp[local_pos + 36];\n\tsamples[4][0] = inp[local_pos + 44];\n\tsamples[4][1] = inp[local_pos + 45];\n\tsamples[4][2] = inp[local_pos + 46];\n\tsamples[4][3] = inp[local_pos + 47];\n\tsamples[5][0] = inp[local_pos + 55];\n\tsamples[5][1] = inp[local_pos + 56];\n\tsamples[5][2] = inp[local_pos + 57];\n\tsamples[5][3] = inp[local_pos + 58];\n\tsamples[6][0] = inp[local_pos + 66];\n\tsamples[6][1] = inp[local_pos + 67];\n\tsamples[6][2] = inp[local_pos + 68];\n\tsamples[6][3] = inp[local_pos + 69];\n\tsamples[7][0] = inp[local_pos + 77];\n\tsamples[7][1] = inp[local_pos + 78];\n\tsamples[7][2] = inp[local_pos + 79];\n\tsamples[7][3] = inp[local_pos + 80];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 34];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(1, 2);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2) + ivec2(0, 1), ret);\n}\n//!PASS 2\n//!DESC NNEDI3 (double_x, nns256, win8x4)\n//!IN INPUT, temp\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 8\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[8]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 8; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 32.0;\n\tfloat mstd1 = sumsq / 32.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, 1024871952, 1026430476, 1041094851, 992987016) + W(1, 1034372511, 1007997243, 1038248733, 1009484684)\n\t\t + W(2, -1091961907, -1103990249, -1086639391, -1085365048)\n\t\t + W(3, -1087585419, -1093414958, -1100793414, -1099588502)\n\t\t + W(4, 1049937838, 1052012307, 1057524239, 1063527595) + W(5, 1061081007, 1057188600, -1104832955, -1114088341)\n\t\t + W(6, 1023328805, 994719130, -1110763811, -1102193240)\n\t\t + W(7, 1046466539, -1131716095, 1042167685, 1037858632);\n\tsum2 = W(0, -1122170202, -1117362461, -1125932452, -1100385246)\n\t\t + W(1, 1020071642, 1025043913, 1017078274, 1018043750) + W(2, -1115075619, 1050294809, 1041506545, -1100233118)\n\t\t + W(3, -1100362988, 1047005177, 1012082941, -1112302377)\n\t\t + W(4, -1113824159, 1022334174, -1098709995, -1104291570)\n\t\t + W(5, 1072797337, 1053652830, -1100425628, -1155649364) + W(6, 1016746290, 1016781702, 1031697879, 1033455014)\n\t\t + W(7, 1050444141, -1106922881, -1081909907, -1086585813);\n\tWS(-1096195455, 1061976972);\n\tsum1 = W(0, -1107583849, 1045016510, -1102048399, 1050507709)\n\t\t + W(1, -1138600128, 1004076226, 1049677870, -1106918697)\n\t\t + W(2, -1094469481, -1104061589, -1082981042, -1086991635)\n\t\t + W(3, -1087760032, -1088999402, -1111975782, -1089081125)\n\t\t + W(4, 1057261454, 1051975353, 1058403546, 1061386858) + W(5, 1052980216, 1052828202, 1055128500, 1048525839)\n\t\t + W(6, 1032308806, 1046697387, -1093320254, 1051876218)\n\t\t + W(7, -1106246183, -1112945129, 1045880594, -1116677906);\n\tsum2 = W(0, 976892690, 1043646796, -1131052969, 1047930742)\n\t\t + W(1, -1099144563, 1035354913, -1115191227, -1111106463)\n\t\t + W(2, -1095110912, -1114450783, 1052886335, -1113296119)\n\t\t + W(3, -1088067101, 1040578653, -1102673565, 1051335047)\n\t\t + W(4, -1080663089, -1074060607, -1068434194, 1048011859)\n\t\t + W(5, 1042920440, 1058047003, 1057110709, 1038060178) + W(6, 1075827337, 1075290035, 1070007941, 1046007784)\n\t\t + W(7, -1090506241, -1099371585, -1096675048, -1096378099);\n\tWS(-1095930303, -1128843438);\n\tsum1 = W(0, -1113225514, 1030842449, -1120882464, -1111398934)\n\t\t + W(1, -1098488134, -1098728413, -1111237296, -1104159890)\n\t\t + W(2, 1000563038, -1103461662, -1098779087, -1156245815)\n\t\t + W(3, 1057689814, 1058114717, 1041725787, 1046074787) + W(4, 1038763268, 1052682210, 1055587560, 1046999855)\n\t\t + W(5, -1090605975, -1106232348, -1106563184, -1119168797)\n\t\t + W(6, -1104281110, -1105449143, -1106219642, -1105879965)\n\t\t + W(7, 1039743648, 1030902068, -1111582036, 1033984854);\n\tsum2 =\n\t\tW(0, -1109947141, -1087141194, 1007133897, -1099413759) + W(1, 1026690396, 1045509921, -1117657274, 1051942463)\n\t\t+ W(2, -1078961084, -1081851502, 1057831088, 1067440534) + W(3, -1095618356, 1022398658, 1029712906, 1049871690)\n\t\t+ W(4, 1053833634, -1102894339, 1046573470, 1058568743)\n\t\t+ W(5, 1058025266, -1115002147, -1109832065, -1099467737)\n\t\t+ W(6, 1049299145, 1040634467, 1035108031, -1114324751) + W(7, -1094447449, 1023241606, 987652806, -1104714655);\n\tWS(1018627052, -1077328537);\n\tsum1 = W(0, -1107592280, 1011043872, -1138466445, 1041422472)\n\t\t + W(1, -1112294435, 1012707679, -1150731309, -1118891707)\n\t\t + W(2, -1098360952, -1103889731, -1088654431, -1079526160)\n\t\t + W(3, -1109020730, -1095389295, -1102056896, -1101414784)\n\t\t + W(4, 1054425801, 1045838144, 1063939041, 1057394281) + W(5, 1061143403, 1057286118, 1040465365, 1042544156)\n\t\t + W(6, -1121256842, 1016847523, -1114759963, -1109966789)\n\t\t + W(7, -1115564074, -1117689671, -1133534770, 1028492087);\n\tsum2 = W(0, -1161717665, -1138679732, -1121504639, 1050854432)\n\t\t + W(1, -1106511096, 1030373815, 980628162, 1031200951) + W(2, 1033867626, -1115218580, 1030621655, -1096361601)\n\t\t + W(3, 1044499063, -1104067382, 1040061476, -1122098343)\n\t\t + W(4, 1028201267, -1096378423, 1071708903, 1079482342)\n\t\t + W(5, -1064184100, -1089118805, 1048273255, -1109436715)\n\t\t + W(6, -1124228530, 1029766795, -1128256742, 1035298280)\n\t\t + W(7, 1035336882, -1105361644, -1119150405, 1035049634);\n\tWS(1045693694, 1057374369);\n\tsum1 = W(0, 1048369598, -1104752283, 1031950009, -1123958928)\n\t\t + W(1, -1103831441, -1106189273, -1103850789, -1110300085)\n\t\t + W(2, 1034312519, 1045853799, 1057046586, 1065585622) + W(3, 1061666460, 1060939321, 1050689810, 1060417841)\n\t\t + W(4, -1131023893, -1098373234, -1095062180, -1089164628)\n\t\t + W(5, -1092432965, -1087345809, -1092965100, -1091010256)\n\t\t + W(6, -1099588978, 1019902402, -1105510198, 1033283356)\n\t\t + W(7, -1115031649, -1122647270, -1126666680, -1103574093);\n\tsum2 =\n\t\tW(0, -1087427905, 1058683530, -1081734921, 1050776004) + W(1, 1042479954, 1025544982, -1105492903, 1058740427)\n\t\t+ W(2, -1098709872, -1099141199, 1032637312, 1072181481)\n\t\t+ W(3, 1036599206, -1080357543, -1113642582, -1086527647)\n\t\t+ W(4, 1072153031, -1088885778, 1061509476, 1071890032) + W(5, 1052304550, -1080881103, 1050862866, -1078556244)\n\t\t+ W(6, -1089481634, 1056590706, -1092495010, 1048814690)\n\t\t+ W(7, -1095810808, -1097308566, -1094462248, 1039671439);\n\tWS(-1081549664, 1060153996);\n\tsum1 = W(0, 992286043, -1115318586, -1105782456, 1026471870)\n\t\t + W(1, -1114468402, 1037910210, -1130210466, 1043803882) + W(2, 1063391104, 1055271797, 1062019397, 1061503832)\n\t\t + W(3, 1058772501, 1045594046, 1049908468, 1040755007)\n\t\t + W(4, -1087586274, -1095899708, -1085498120, -1089250259)\n\t\t + W(5, -1090055577, -1102496824, -1103786988, -1104619012)\n\t\t + W(6, -1105647870, 1025423024, 1033921889, -1113405924)\n\t\t + W(7, -1113674825, -1106446561, -1118412923, -1096097592);\n\tsum2 = W(0, 1053790549, -1110257416, 1033688102, -1102619530)\n\t\t + W(1, -1117483359, -1098152061, -1105743952, -1083553679)\n\t\t + W(2, -1080860351, -1097530578, 1041061421, 1064966059) + W(3, 1050344847, 1040479494, 1051151965, 1065962098)\n\t\t + W(4, -1068185653, -1077346152, 1052310674, 1072556372)\n\t\t + W(5, 1075004369, 1064749402, -1110156824, 1045213317)\n\t\t + W(6, -1082483044, -1088866791, 1052658871, -1104178634)\n\t\t + W(7, -1108410079, 1040931499, -1137891932, 1053124980);\n\tWS(-1079020096, -1097079011);\n\tsum1 = W(0, -1109501731, 1033910555, 1015347636, -1108027795)\n\t\t + W(1, 1042979875, 1019929124, 1040369234, -1134559750)\n\t\t + W(2, -1096742621, -1092191510, -1089091160, -1087072713)\n\t\t + W(3, -1087558450, -1089417126, -1104831498, -1091818621)\n\t\t + W(4, 1057943754, 1055662529, 1059647341, 1068092504) + W(5, 1059824411, -1117499817, 1043480574, 1050143023)\n\t\t + W(6, 1016000225, 1020967408, -1102027816, -1109882648)\n\t\t + W(7, -1106889398, -1117366414, -1104827345, 1049289276);\n\tsum2 = W(0, 1037631964, -1105851814, 1036652885, -1110757790)\n\t\t + W(1, 1024508007, -1139201564, -1113225064, -1104657620)\n\t\t + W(2, -1097479797, 1051380185, 1028410699, 1044594400) + W(3, 1041068006, 1046036650, 1054960427, -1105334641)\n\t\t + W(4, 1051023588, -1097950410, 1034374804, 1053237761)\n\t\t + W(5, -1132209182, -1088293598, -1081781977, 1065714224)\n\t\t + W(6, 1045348435, 1028003104, -1113269608, 1041832368)\n\t\t + W(7, 1033918380, -1089693526, -1099925151, -1106359824);\n\tWS(-1087384991, 1052875812);\n\tsum1 = W(0, 1041733252, -1138647561, 1034391503, -1106477875)\n\t\t + W(1, -1100509868, -1098694249, -1110959830, -1120730421)\n\t\t + W(2, -1109905397, -1104994285, -1107522048, 1057597757)\n\t\t + W(3, 1062613266, 1055828187, 1052485297, 1044647290) + W(4, 1041497057, 1032882549, 1050093354, -1091247383)\n\t\t + W(5, -1087942224, -1090201627, -1098203032, -1100016695)\n\t\t + W(6, -1113613058, -1117825756, -1108789794, 1028766931)\n\t\t + W(7, 1042722079, 1013355333, 1034047139, 1038812681);\n\tsum2 = W(0, 1019350107, -1111428867, 1017374087, -1112005123) + W(1, 1028700445, -1112772903, 1027823157, 999439052)\n\t\t + W(2, 1041831066, -1130655130, -1138336400, 1035402260)\n\t\t + W(3, -1116945124, 1041636268, -1107238338, 1033528252)\n\t\t + W(4, 1051650697, -1112274143, -1092155273, -1114034096)\n\t\t + W(5, 1045953881, 1041190902, 1049171133, 1027833254)\n\t\t + W(6, -1103332568, -1077765094, -1073481211, -1087514353)\n\t\t + W(7, 1069095754, 1074086485, 1057277153, -1107727987);\n\tWS(1050457727, 1041689780);\n\tsum1 = W(0, -1131312139, -1116681402, 1030961105, -1140959985)\n\t\t + W(1, 1046496193, 1048638526, 1007270019, 1049181764) + W(2, 992358355, 1014710691, 1040368912, -1105027369)\n\t\t + W(3, -1089290871, -1090315138, -1098770776, -1086147588)\n\t\t + W(4, -1092744895, 1027381214, -1089348299, 1050737138) + W(5, 1038810352, 1055368676, 1040416748, 1051301702)\n\t\t + W(6, 1048008788, 1036450832, 1053966377, 933247243) + W(7, 1043432004, -1119062181, 1023583738, 1037141075);\n\tsum2 = W(0, -1107193278, 1019433289, 1039188525, -1123892633)\n\t\t + W(1, 1039851328, 1032631611, 1044641782, -1097026795) + W(2, 1057496780, 1031729137, 1037283932, -1086728254)\n\t\t + W(3, -1087309268, -1092570464, 1035754242, 1063903066)\n\t\t + W(4, 1072935738, -1080020989, -1078950448, -1087453268)\n\t\t + W(5, 1051352061, 1059438018, 1051006721, 1056300653) + W(6, -1080570956, 1054527180, -1096917141, 1050123895)\n\t\t + W(7, 1053948249, 1042769096, 1029707984, -1106545458);\n\tWS(-1084263519, -1088250567);\n\tsum1 = W(0, -1107101246, 1049480649, -1097447514, 1049647488)\n\t\t + W(1, -1099235545, 1018612505, -1103944776, 1032447885)\n\t\t + W(2, 1048954180, -1096698757, 1059331526, -1119095878) + W(3, 1040553109, 1041330418, 1040723088, 1023387386)\n\t\t + W(4, -1118116730, 1027018719, -1108150329, -1090501921)\n\t\t + W(5, 1044929028, -1094468036, 1047463532, -1106285556)\n\t\t + W(6, -1111017296, 1043604572, -1098833704, 1050343697)\n\t\t + W(7, -1096264890, 1044030041, -1121471547, -1175819022);\n\tsum2 = W(0, 991719940, 1034086314, 1055828179, 1034571486) + W(1, 1049088345, -1098363481, -1111430799, -1111365517)\n\t\t + W(2, -1157381748, -1121095386, -1103829652, -1100672658)\n\t\t + W(3, -1090417467, 1050795943, -1113801830, 1037803588)\n\t\t + W(4, -1100952734, 1027786887, -1085350121, -1118546758)\n\t\t + W(5, 1049271738, -1140682323, 1035813474, -1164121191)\n\t\t + W(6, 1029794653, 1016292894, 1067178121, -1098007098)\n\t\t + W(7, 1008607005, -1110134488, -1115483467, -1133015817);\n\tWS(1066054400, -1125664425);\n\tsum1 = W(0, 1015260777, -1108545200, 1023624464, -1109354663)\n\t\t + W(1, 1023465234, -1108921531, -1116445024, -1128865616)\n\t\t + W(2, 1054574294, 1053284635, 1059735702, 1058150961) + W(3, 1058102002, 1063397581, 1046571067, 1046728251)\n\t\t + W(4, -1095241461, -1094415406, -1088764634, -1078845388)\n\t\t + W(5, -1090401103, -1105651068, -1116790272, -1104354311)\n\t\t + W(6, -1127045294, -1111343263, 1041542629, -1130514988)\n\t\t + W(7, 1035892576, -1136829776, 1030749305, -1106930027);\n\tsum2 =\n\t\tW(0, 1041565398, -1103469615, 1029690269, 1035794320) + W(1, 1035452008, -1107146771, -1124704946, 1040850628)\n\t\t+ W(2, -1104697837, 1029373537, 1057447179, 1080145714)\n\t\t+ W(3, -1103623095, -1066097425, -1097535851, -1103109309)\n\t\t+ W(4, -1115419200, 1031260861, 1026403525, 1043319440) + W(5, 1050811672, -1103531154, -1090176537, 1055196268)\n\t\t+ W(6, -1158883614, 1035036640, 1034486240, 1041655252)\n\t\t+ W(7, -1114789346, -1114794272, 1036709484, -1102936938);\n\tWS(-1087901375, 1071177135);\n\tsum1 = W(0, -1121594272, -1122618691, -1114434254, 1044010486)\n\t\t + W(1, -1113833999, -1108159437, 997526195, -1123472883)\n\t\t + W(2, -1110224028, -1109965218, -1120206908, 1010935165)\n\t\t + W(3, -1108541318, 1041417229, -1109330685, 1039497451)\n\t\t + W(4, 1030219348, 1047787782, -1114914192, -1113546820) + W(5, 1046030645, 1035224125, 1017890711, 1022061139)\n\t\t + W(6, 994425384, 1027034090, -1106192913, 1040356168)\n\t\t + W(7, -1112701798, -1130438655, -1151173965, -1125745551);\n\tsum2 = W(0, 1042217679, -1108814485, 1058334461, -1080767453)\n\t\t + W(1, 1050991857, 1030602271, 1034906705, -1127683613)\n\t\t + W(2, -1116367239, 1042859710, -1078638996, 1073929687)\n\t\t + W(3, -1092080339, -1116721722, -1106162437, 1035114111)\n\t\t + W(4, 1026421701, 1027395369, 1028343990, -1097310248) + W(5, 1042808122, 1051491707, 1024141024, -1112071525)\n\t\t + W(6, -1140328609, -1114630403, -1105295199, 1028261520)\n\t\t + W(7, -1122297114, -1105219597, 997359482, 1017171678);\n\tWS(1066545696, -1154623394);\n\tsum1 = W(0, -1105442505, -1115505461, -1102287846, 1023914903)\n\t\t + W(1, 1021900696, 1016559928, -1142506442, -1129232035)\n\t\t + W(2, -1114054203, -1098488296, -1092352928, -1089108436)\n\t\t + W(3, -1087887754, -1096061654, -1097827287, -1095543703)\n\t\t + W(4, 1057182265, 1049322687, 1062190966, 1059635472) + W(5, 1057132007, 1043675118, 1048482034, 1055016957)\n\t\t + W(6, -1123432545, 1010507424, -1097309632, 1045294808)\n\t\t + W(7, -1098559779, 1042399967, -1110816589, 1026256390);\n\tsum2 =\n\t\tW(0, -1094410020, -1073520568, -1076806727, 1007932024) + W(1, -1129053184, -1126774165, 1016297320, 1026440100)\n\t\t+ W(2, 1040526244, -1119660436, 1072065972, 1074284701) + W(3, 1045336233, -1114285571, 1027498382, -1109537500)\n\t\t+ W(4, 1038890507, -1105577163, 1038803075, -1096715819)\n\t\t+ W(5, 1048625414, -1106066396, 1035667090, -1128514892)\n\t\t+ W(6, -1120085021, 1014274624, -1119386280, 1032586275)\n\t\t+ W(7, -1148623280, 1033069015, -1113847206, 1028560484);\n\tWS(1055250687, -1106970626);\n\tsum1 = W(0, 1033119688, -1105149829, 1043588463, -1098690473)\n\t\t + W(1, 1051357302, -1111820283, 1036109552, -1119401059) + W(2, 1042190962, 1055784922, 1039447718, 1060328969)\n\t\t + W(3, -1105877415, 1050469874, -1123255849, 1044861546)\n\t\t + W(4, -1096546392, -1103230410, -1093610964, -1094495495)\n\t\t + W(5, -1104321127, -1102978667, 1034127854, -1097968467)\n\t\t + W(6, -1117586055, -1125652468, 1035816565, -1103963220)\n\t\t + W(7, 1047255951, -1108600424, -1157028943, 1018776031);\n\tsum2 = W(0, 1038757267, -1111076574, 1036628998, -1107631850)\n\t\t + W(1, 1045867530, -1126199158, 1034641438, 1014361489)\n\t\t + W(2, 1030211853, -1147844455, 1002666567, -1080902130)\n\t\t + W(3, -1089131777, 1067727291, 1050167793, -1114432338)\n\t\t + W(4, 1033894636, 1039985174, -1092985165, -1084645521)\n\t\t + W(5, 1069738325, -1096580382, -1100096489, -1100261485)\n\t\t + W(6, -1133782171, -1117005539, -1150866734, 1049641986)\n\t\t + W(7, 1051354211, -1100550183, -1104598763, 1033251244);\n\tWS(1063662431, 1022143153);\n\tsum1 =\n\t\tW(0, -1101665898, 1044567949, -1113912242, 1054985008) + W(1, -1089448239, 1031890901, -1106608329, 1016341751)\n\t\t+ W(2, 1028101088, -1100200043, -1110575390, -1090770105) + W(3, 1042239925, 1034205190, 1041117720, 1032506575)\n\t\t+ W(4, 1045825111, -1112112432, 1011332621, 1036354680) + W(5, 1053092900, 1020582213, -1122250931, 1037368233)\n\t\t+ W(6, -1107336877, 1049135824, -1117269540, 1043762234)\n\t\t+ W(7, -1090665684, 1045380738, -1108114694, 1027635960);\n\tsum2 = W(0, -1109621945, 1044140338, 1011973298, 1054192939) + W(1, -1083519810, 1050669158, 1015542539, 1007706050)\n\t\t + W(2, 995625223, -1125871763, 1059194369, -1085775903)\n\t\t + W(3, -1085690186, 1055305067, -1115586758, 1024423563)\n\t\t + W(4, 1033690799, -1131300267, 1019603073, -1105557074)\n\t\t + W(5, 1066625604, -1093331249, 1025625789, -1163078190)\n\t\t + W(6, -1127273987, 1031533647, -1100093028, 1049649037)\n\t\t + W(7, -1099380904, 1041330252, -1109873113, 1021669909);\n\tWS(1065395904, 1046290614);\n\tsum1 = W(0, 996799560, 1015596034, -1100668872, -1100927819) + W(1, 1043886221, 1025322396, 1035443240, -1114934548)\n\t\t + W(2, -1125542553, 1043656950, 1056396433, 1054862894)\n\t\t + W(3, -1088911438, -1099487682, -1105531411, -1117673547)\n\t\t + W(4, 1038203972, -1105153011, -1085640859, -1101762943)\n\t\t + W(5, 1057024083, 1036429768, 1021072448, 1035195023) + W(6, -1122586727, 1036793959, 1049715632, 1035554923)\n\t\t + W(7, -1115152096, -1122121748, 1039652277, 1024299964);\n\tsum2 =\n\t\tW(0, 1029237671, -1133651707, -1114304490, -1114162505) + W(1, -1125875827, -1112015576, 1015895733, 1035088799)\n\t\t+ W(2, 1017509749, -1140172751, 1030543605, -1092617066) + W(3, 1051105475, 1033357967, 1011455075, -1105982664)\n\t\t+ W(4, -1104176053, 1038596873, 1050264307, -1093179067)\n\t\t+ W(5, 1071302855, -1090684841, -1100815852, 1003487558) + W(6, 1032328729, 1037378915, -1104642832, 1049979232)\n\t\t+ W(7, -1110244360, -1085540383, -1135016203, 1015899853);\n\tWS(1058730335, 1038095077);\n\tsum1 = W(0, 1050009523, -1156396202, 1045232946, -1123440788) + W(1, 994853272, 1029074928, -1116532263, 1016043038)\n\t\t + W(2, -1090412329, 1022785342, 990514519, 1051849503) + W(3, 1050259497, 1048747736, 1040337077, 1047238893)\n\t\t + W(4, -1116071407, -1112028282, 1027669243, 1025171300)\n\t\t + W(5, -1091444451, -1091116387, -1095024325, -1085293672)\n\t\t + W(6, -1120619710, 1033123659, -1138222105, 1042856679)\n\t\t + W(7, 1043400402, 1046148791, 1031722640, 1050565349);\n\tsum2 =\n\t\tW(0, 1046272294, -1119023958, -1106071503, -1097641458)\n\t\t+ W(1, -1099339001, -1122591395, -1120322169, -1112624405)\n\t\t+ W(2, 1056160584, 1047372879, 1066704996, 1062851774) + W(3, -1127558738, -1095719050, 1012197993, -1094334166)\n\t\t+ W(4, -1069609928, -1100807597, 1063602974, 1071319304) + W(5, -1123458905, 1049925865, 1037702687, 1046841945)\n\t\t+ W(6, -1086350256, 1012350161, -1093103672, -1165704932)\n\t\t+ W(7, -1099266547, 1039176837, -1104052164, 1043315186);\n\tWS(-1102208382, 1082454872);\n\tsum1 = W(0, -1121527792, 1019782131, -1111677734, 1042764822)\n\t\t + W(1, -1098291428, -1109244559, -1122839755, 1023050790)\n\t\t + W(2, -1097489215, -1109352802, -1089475261, -1094323164)\n\t\t + W(3, 1057233791, 1055571354, 1036609181, 1023873367) + W(4, 1044710709, 1043005718, 1059136208, -1113184692)\n\t\t + W(5, -1102862820, -1113821821, 1016630678, -1122283881)\n\t\t + W(6, 1024559218, 1025756170, -1098383546, 1034230961)\n\t\t + W(7, -1121795355, 1034138424, -1148370726, 1021065311);\n\tsum2 = W(0, 1012975921, 1033684352, -1119837718, 1048900749)\n\t\t + W(1, -1088385914, -1106132930, -1107812043, 1047279942)\n\t\t + W(2, -1113722375, -1113902527, 1034379158, 1065557700)\n\t\t + W(3, 1033601684, -1078602486, 1048231286, -1117907500)\n\t\t + W(4, -1109752074, -1108511603, 1047596894, 1065261424)\n\t\t + W(5, -1110433219, -1113936114, -1106600777, -1110420048)\n\t\t + W(6, 1009270385, 1034062718, -1096952633, 1042274647)\n\t\t + W(7, -1110816087, 1038223706, 1037668398, -1111923151);\n\tWS(1055139903, 1066543323);\n\tsum1 = W(0, -1113216706, 1034160554, -1110997976, -1104052311)\n\t\t + W(1, -1130057219, -1100344024, -1109060119, -1102181302)\n\t\t + W(2, 1025777755, -1106690282, 1025857819, -1108040417) + W(3, 1042814916, 1058801014, 1040801319, 1061190298)\n\t\t + W(4, 1062476912, 1047449287, 1040533578, -1088276389)\n\t\t + W(5, 1043316038, -1096553156, 1003175286, -1109923206)\n\t\t + W(6, -1094834883, -1115394087, -1100641176, -1109281747)\n\t\t + W(7, -1111790927, -1131081926, -1127882001, -1116502963);\n\tsum2 = W(0, 1032900543, 1026043047, 1011969739, 1005946567)\n\t\t + W(1, -1104378201, -1106573410, -1149079854, -1098913457)\n\t\t + W(2, -1093611286, -1143136704, -1129502699, 1065137024)\n\t\t + W(3, 1034934846, 1044311979, -1128312106, -1107526541)\n\t\t + W(4, -1093105706, -1104881087, 1056641171, 1062580590)\n\t\t + W(5, -1137732946, -1102271464, -1106196955, -1097055308)\n\t\t + W(6, -1103368978, 996537094, -1097512177, 1038772124)\n\t\t + W(7, -1108835309, 1035638256, 1028654910, -1144299515);\n\tWS(1037662203, -1095462961);\n\tsum1 = W(0, 1051208476, 1007151360, 1047867778, -1120692693) + W(1, -1102286423, 1029685138, -1117174983, 998066935)\n\t\t + W(2, 1054332722, 1048962332, 1056131053, 1060311124) + W(3, 1053179033, 1057524976, 1045179237, 1053688986)\n\t\t + W(4, -1088537607, -1096098779, -1089718811, -1086623130)\n\t\t + W(5, -1088149909, -1093380227, -1094989189, -1094538289)\n\t\t + W(6, 1009988859, -1120684294, 1043868050, 1008468855)\n\t\t + W(7, 1024446024, 1041242535, -1121112609, 1022948968);\n\tsum2 = W(0, -1075642964, -1078284587, -1077677369, -1086975712)\n\t\t + W(1, 1050575143, -1109971278, 1043550667, 1046375822) + W(2, 1064397427, 1070403917, 1072178178, 1071930150)\n\t\t + W(3, -1093947328, -1119680819, -1134729809, -1094009133)\n\t\t + W(4, 1042055631, 1050515956, -1094922849, -1096417404)\n\t\t + W(5, -1094640520, 1045435393, -1109099138, -1106076462)\n\t\t + W(6, 1049259770, -1100572061, 1038272909, -1110188613)\n\t\t + W(7, 1033007627, -1109186235, 1040318497, 1038207101);\n\tWS(-1091974591, 1028524890);\n\tsum1 = W(0, -1119527298, 1034997099, -1099802012, 1033463662)\n\t\t + W(1, -1090658116, 1044419888, -1099353751, -1110855131)\n\t\t + W(2, 1050666155, -1101120961, 1057798952, -1146674958) + W(3, 1048486316, 1054164791, 1033437822, 1053708795)\n\t\t + W(4, -1104886813, -1100807815, -1099838668, 1021707158)\n\t\t + W(5, 1057612011, -1093871840, 1029138830, -1104286795)\n\t\t + W(6, -1119869997, 1044100139, -1103774309, -1112176434)\n\t\t + W(7, -1094617942, 1036492177, -1113521820, 1028051362);\n\tsum2 =\n\t\tW(0, 1029285075, -1113245689, 1046869988, -1099734421) + W(1, 1045806866, -1099048447, 1040440310, -1129472848)\n\t\t+ W(2, -1114745613, 1037297246, -1113507597, 1057852752) + W(3, 1031538739, 1019950674, 1039903515, -1115367833)\n\t\t+ W(4, 1024121756, 1034295695, -1081105309, 1063764387) + W(5, -1093953622, 1060684479, -1099720743, 1051222485)\n\t\t+ W(6, -1127985632, -1103172653, -1097344586, -1092930743)\n\t\t+ W(7, 1039548141, -1113791115, 1024790472, -1106398082);\n\tWS(1058893599, -1078409713);\n\tsum1 = W(0, -1115244150, 1036724056, -1098555735, 1049246955)\n\t\t + W(1, 1045222582, -1138283737, 1044966206, -1115412967)\n\t\t + W(2, -1102829117, -1100240992, -1094663483, -1084866106)\n\t\t + W(3, -1085064800, -1093243506, -1093950047, -1095580366)\n\t\t + W(4, 1039336887, 1053376406, 1053054383, 1065100884) + W(5, 1054590883, 1056764679, 1053059489, 1050610273)\n\t\t + W(6, -1115623287, -1114512019, 1041993169, 1018575674)\n\t\t + W(7, -1114852275, -1108377677, -1118180448, -1122449691);\n\tsum2 =\n\t\tW(0, -1130929736, 1009552185, -1084383778, 1050909748) + W(1, 1049209322, -1096700837, 1051369678, -1129474226)\n\t\t+ W(2, -1101060123, -1090337753, 1072779570, 1053567468)\n\t\t+ W(3, -1079161361, 1057662166, -1097661058, -1112521942)\n\t\t+ W(4, 1045192083, 1061442923, 1050903982, -1089269841) + W(5, 1029505799, -1094014597, 1046387683, -1105984421)\n\t\t+ W(6, -1105822172, -1103557108, -1106762492, -1117595750)\n\t\t+ W(7, -1111371347, 1025228376, -1138825972, 1030887459);\n\tWS(-1109369595, 1048740969);\n\tsum1 = W(0, 1040995480, 1030414773, -1118646413, 1043594790) + W(1, -1129436350, 1037121811, 1030207412, 1043560049)\n\t\t + W(2, 1051718495, 1050319297, 1059003715, 1046504696) + W(3, -1135436979, 1043825845, 1049475887, 1058279379)\n\t\t + W(4, -1091711555, -1095167863, -1085356599, -1083562713)\n\t\t + W(5, -1096690237, -1098326935, -1120665100, -1098718953)\n\t\t + W(6, -1125552391, 1032958437, 1042985722, 1045509569)\n\t\t + W(7, 1023899916, 1019546753, -1130219052, -1105013544);\n\tsum2 =\n\t\tW(0, -1113177829, 1043809265, -1095416462, 1034071291) + W(1, -1120341831, 1043900974, 1020015593, -1119209873)\n\t\t+ W(2, -1117552581, -1109343151, 1052574118, 1063553374)\n\t\t+ W(3, 1070912061, -1112203792, -1091338378, -1072794661)\n\t\t+ W(4, -1100446453, 1039662186, -1114145263, 1053677817)\n\t\t+ W(5, -1101063801, 1042882834, -1094258913, 1055602011) + W(6, 1041583669, 1009024316, -1118793923, 1018689733)\n\t\t+ W(7, 1031195477, -1105538343, -1114748986, -1109237633);\n\tWS(-1093437503, 1065718162);\n\tsum1 = W(0, 1037550096, -1101135841, 1044878747, -1107014286)\n\t\t + W(1, 1042111087, 1037051057, -1099961615, 1041500301) + W(2, 1049488055, 1042594425, 1049041945, 1066142676)\n\t\t + W(3, -1100146203, 1045825417, 1040663590, -1119554198)\n\t\t + W(4, -1103061781, 1046266118, -1087470164, -1106438298)\n\t\t + W(5, -1111606545, -1091131027, -1133427370, -1103590594)\n\t\t + W(6, -1114711965, -1097873069, 1046063170, -1091362312)\n\t\t + W(7, 1037494709, 1040258368, -1109172298, 1033770775);\n\tsum2 = W(0, -1106488910, 1026201604, 1035711566, 1060425407)\n\t\t + W(1, -1098764525, -1096618367, -1182808622, -1127820908)\n\t\t + W(2, -1123106758, -1113590739, -1084666863, 1061776657)\n\t\t + W(3, 1055047321, -1119175762, -1103500958, 1041613778)\n\t\t + W(4, 1050172947, -1092748399, -1097703384, -1099741350)\n\t\t + W(5, -1120322586, 1050324229, 1025620288, -1105222946)\n\t\t + W(6, -1124712996, 1043391307, -1098783459, 1048423650)\n\t\t + W(7, 1041036039, -1099280352, 1048645442, -1118590758);\n\tWS(1056660607, -1113798601);\n\tsum1 =\n\t\tW(0, -1115305597, -1101671294, 1016801995, 1039904137) + W(1, 1037148876, 1040453028, -1110559226, -1154296528)\n\t\t+ W(2, 1041913228, 1008348404, 1031963795, -1093680051) + W(3, -1089471492, 1034024758, -1111400057, 1031051312)\n\t\t+ W(4, 1012656821, 998498191, -1102006873, 1057450908) + W(5, 1049874551, -1111681498, -1109457443, 1036430914)\n\t\t+ W(6, 1026504084, -1151777337, 1032505286, -1108358078)\n\t\t+ W(7, 1031920291, 1043455038, -1129849213, -1125050675);\n\tsum2 =\n\t\tW(0, 1042939003, -1114796094, 1044529628, -1124781020) + W(1, -1106748864, 1016881133, -1108227590, 1027959261)\n\t\t+ W(2, 1024638457, -1101207597, 1027593065, -1097759574) + W(3, -1130307786, 1033669310, 1022409637, 1019735589)\n\t\t+ W(4, -1123927190, 1042777565, -1098782283, 1059165645)\n\t\t+ W(5, 1062760553, 1017094385, -1160993898, -1125388747) + W(6, 998901155, 1022659417, 1017512357, -1104939928)\n\t\t+ W(7, -1098668376, -1089791762, -1106217568, -1115680109);\n\tWS(1066155712, 1004288134);\n\tsum1 = W(0, 1047132567, 1029697589, 1014062303, 1041631965) + W(1, 991515041, -1123217244, -1154741365, 1030265807)\n\t\t + W(2, 1049267618, 1048612844, 1055750611, 1059093756) + W(3, 1057479944, 1056993158, 1047138005, 1055767146)\n\t\t + W(4, -1089062279, -1092380195, -1088453014, -1084647474)\n\t\t + W(5, -1091963789, -1088742789, -1098495965, -1086886676)\n\t\t + W(6, -1138510971, 1046969501, 1024451359, 1049129552)\n\t\t + W(7, 1040560290, 1043007167, -1122630737, -1122583780);\n\tsum2 =\n\t\tW(0, 1011892235, -1111382628, 1037768402, 1032283234) + W(1, -1114728106, 1009460031, -1112526532, 1030203700)\n\t\t+ W(2, 1040858440, -1103755803, -1125277089, -1084511950)\n\t\t+ W(3, -1090323786, -1159433014, 1053584755, 1052886875)\n\t\t+ W(4, -1127819845, -1109875610, -1096621612, -1071556311)\n\t\t+ W(5, -1071973667, -1099343032, 1076043190, 1079690007) + W(6, 1010964983, -1106716388, 1032593498, 1040462902)\n\t\t+ W(7, -1100404332, 1040394500, 1007208771, 1051792925);\n\tWS(-1086041375, 1049976369);\n\tsum1 = W(0, -1125608345, 1025261033, 1032012444, 1046732297)\n\t\t + W(1, -1114869141, 1036081274, 1036645660, -1119140736)\n\t\t + W(2, -1096855193, -1097190986, -1086237883, -1083643033)\n\t\t + W(3, -1093631755, -1095059844, -1132519191, -1095180224)\n\t\t + W(4, 1037693680, 1051176741, 1059434222, 1062665585) + W(5, 1052924527, 1052562329, 1041010310, 1048775023)\n\t\t + W(6, 1048607039, 1030637974, 1026121224, -1103554484)\n\t\t + W(7, -1110078044, -1109004102, 1035782593, -1118200972);\n\tsum2 = W(0, 1029601330, -1144560396, 1032763954, -1115106220)\n\t\t + W(1, -1111454114, -1121335223, -1109520646, 1021645795)\n\t\t + W(2, -1115199196, 1026958814, 1032369083, -1106065675) + W(3, 1042189754, 1029124674, 1022674491, 1026253022)\n\t\t + W(4, -1096390757, -1100298556, 1076866217, -1108884178)\n\t\t + W(5, -1116766618, 1025985538, -1115268590, 1011072742)\n\t\t + W(6, -1079547524, -1081990625, 1041174181, 1041059708)\n\t\t + W(7, 1024602232, -1127158528, 1007020790, 1003377428);\n\tWS(-1111980027, 1060626277);\n\tsum1 = W(0, 1023621139, 1032179266, 1030954414, 1037158526) + W(1, 1036765152, 1036680203, -1146606447, -1119312598)\n\t\t + W(2, -1102882983, -1092055397, -1089823274, -1095093232)\n\t\t + W(3, -1090725010, -1139402199, -1116432156, -1108873773)\n\t\t + W(4, 1044706422, 1043529367, 1057090380, 1064981515) + W(5, 1047303429, 1042557255, 1028925358, 1041638915)\n\t\t + W(6, 1028429765, -1113080214, -1101761443, -1098683411)\n\t\t + W(7, 1033439719, 1030304674, -1104492078, -1112219839);\n\tsum2 =\n\t\tW(0, -1107703976, 1046455264, -1093472442, 1048924762) + W(1, -1097201227, 1049435664, -1106239872, -1119402461)\n\t\t+ W(2, 1045439570, -1090239140, 1028879562, 1064195571) + W(3, 1016778259, 1027385222, 1028121257, -1105208479)\n\t\t+ W(4, 1032849260, -1096329612, 1030082819, 1036056807) + W(5, 1059898488, -1091675747, 1053658286, -1117889585)\n\t\t+ W(6, -1122224669, 1035962913, -1098806672, 1041148911)\n\t\t+ W(7, -1091828205, 1041687668, -1098243254, -1104565052);\n\tWS(1062681599, 1040842201);\n\tsum1 =\n\t\tW(0, -1108789463, -1115361429, 1048981817, -1092926921) + W(1, 1054602509, 1029602904, -1117967305, 1025443329)\n\t\t+ W(2, -1104300209, 1050445194, -1089127203, 1063952639)\n\t\t+ W(3, 1043197406, -1106041808, 1039191171, -1114238594) + W(4, 1042117608, -1097788769, 1032428200, 1049970971)\n\t\t+ W(5, -1088418847, 1049956321, -1112931212, -1123051255)\n\t\t+ W(6, -1118282400, -1114475276, 1049574381, -1090427073)\n\t\t+ W(7, 1045778638, -1112080775, -1097758566, 1033393295);\n\tsum2 = W(0, 1038735267, -1100048068, -1115453090, -1110884051)\n\t\t + W(1, -1090743949, -1153955669, -1112598570, -1103797208)\n\t\t + W(2, -1126315713, 1043050536, 1053683464, 1058830244)\n\t\t + W(3, -1100540415, 1037942519, -1098889179, 1040830228)\n\t\t + W(4, -1111714958, -1115313021, 1046662525, 1061563017)\n\t\t + W(5, 1052621807, -1104363663, -1118760183, 1007755797)\n\t\t + W(6, -1111656758, -1115683900, -1093358619, -1105966973)\n\t\t + W(7, 1037413595, -1101879362, 1044482581, -1098877089);\n\tWS(1062776447, 1069975051);\n\tsum1 = W(0, -1130308944, -1112835078, -1113144126, -1094805377)\n\t\t + W(1, -1098008538, -1114270939, -1117364667, -1117827459)\n\t\t + W(2, 1036893844, -1114635034, 1050058840, 1071110128) + W(3, 1061455014, 1044746969, 1018226642, 1049407081)\n\t\t + W(4, -1104137265, -1098478453, -1104852259, 1041368142)\n\t\t + W(5, -1095764665, -1109080309, -1103882015, -1120810969)\n\t\t + W(6, -1108240801, 1029922778, -1111877761, -1088740684)\n\t\t + W(7, -1112520550, -1119589855, -1121527653, -1103102129);\n\tsum2 =\n\t\tW(0, 1028834725, -1110297977, 1035091068, 1034973002) + W(1, -1110025415, -1154986018, -1120031976, 1030684381)\n\t\t+ W(2, -1113117380, 1026197871, -1099362318, 1077416661) + W(3, 1050456944, -1112814852, 1027999489, 1016280910)\n\t\t+ W(4, 1037052904, 996515330, 1043940575, -1069860026) + W(5, 969317772, 1021906202, -1115577362, 1013156184)\n\t\t+ W(6, -1113210551, 1032917698, -1106692355, -1103487680)\n\t\t+ W(7, 1034055293, 1006658352, 1018186436, -1124181989);\n\tWS(-1082599007, -1084302409);\n\tsum1 = W(0, -1127095446, 1011517278, -1110892475, 1024933540)\n\t\t + W(1, -1111586789, 1039136849, -1108207315, 1049617952) + W(2, 1056665680, 1052281350, 1058821842, 1061132051)\n\t\t + W(3, 1054434479, 1052720805, 1043783817, -1159632952)\n\t\t + W(4, -1087212124, -1096260148, -1085877656, -1087957451)\n\t\t + W(5, -1089270826, -1102718609, -1106422582, -1106709957)\n\t\t + W(6, 1035858193, -1128228554, 1043137767, 1023709101)\n\t\t + W(7, 1037286635, -1111842501, -1130056576, -1115207149);\n\tsum2 = W(0, 1048459811, 1071226724, 1075494724, 1074401127)\n\t\t + W(1, 1044864951, -1077687291, -1072311776, -1066953112)\n\t\t + W(2, -1095160239, 1065850492, -1121381976, -1099027008)\n\t\t + W(3, 1031151008, 1057399482, 1045213405, -1095971461) + W(4, 1026509768, 1043007163, 1043168485, -1093896652)\n\t\t + W(5, 1012395574, 1019701051, -1109946848, 1027278540)\n\t\t + W(6, -1123792544, -1127547903, 1027169380, -1107011198)\n\t\t + W(7, 1037067951, 1021690579, -1124089088, -1166810856);\n\tWS(-1118215158, -1130722305);\n\tsum1 = W(0, 1039784439, -1119983743, 1027132090, -1101267710)\n\t\t + W(1, -1106141431, -1119840977, -1131926580, -1158357571)\n\t\t + W(2, 1045520358, 1040649785, -1126797149, 1070303194) + W(3, 1059129261, 1056727436, 1040938982, 1050582583)\n\t\t + W(4, -1094865274, -1098235299, -1085881139, -1106608186)\n\t\t + W(5, -1088850304, -1093134907, -1098615277, -1104503154)\n\t\t + W(6, 966095017, -1166742058, 1023429181, -1127173569)\n\t\t + W(7, -1112024885, 1030946302, -1160489077, -1106263629);\n\tsum2 =\n\t\tW(0, -1122933952, 1029904221, -1104768174, 1044174015) + W(1, -1122786276, 1032455763, -1118952582, -1120585334)\n\t\t+ W(2, 1043676402, -1092335308, 1050667883, -1106663265) + W(3, 1035773679, 1033986578, -1123822916, 1030027555)\n\t\t+ W(4, -1122578476, -1096734640, -1067932755, 1078656606)\n\t\t+ W(5, 1056344301, -1106732625, 1033374173, -1116084330)\n\t\t+ W(6, 1034421913, -1121365342, -1103315560, 1049347404)\n\t\t+ W(7, 1027752905, -1114333025, 1025409455, -1129253837);\n\tWS(-1112296443, -1083191171);\n\tsum1 = W(0, 1030599873, -1102688301, 1038739494, -1091052013)\n\t\t + W(1, -1120252367, -1118018759, -1105737735, 1036799090)\n\t\t + W(2, 1049894985, 1052276159, 1055519004, 1061107959) + W(3, 1059731464, 1052059899, 1050382861, 1050879021)\n\t\t + W(4, -1100141489, -1095734081, 1044438853, -1078809864)\n\t\t + W(5, -1100785926, -1095185489, -1092887220, -1113977245)\n\t\t + W(6, -1124642344, -1114229790, 1039505712, -1108354137)\n\t\t + W(7, 1037196526, -1129006466, 1034647259, -1123394945);\n\tsum2 = W(0, -1134366274, 1040286055, -1103185345, -1089934078)\n\t\t + W(1, -1104699884, -1135474394, 1039368980, 984214720) + W(2, 1032198029, -1093721101, 1064064153, 1038410574)\n\t\t + W(3, 1053501328, 1053898256, -1088730122, 1045555557)\n\t\t + W(4, -1102569648, 1059013351, -1076328416, 1075980540)\n\t\t + W(5, -1081344728, -1093863519, 1061819985, -1089334779)\n\t\t + W(6, -1113629492, -1099320981, 1062572765, -1079072621)\n\t\t + W(7, 1057269325, 1039501040, -1089994189, 1050815727);\n\tWS(1051639487, -1077445112);\n\tsum1 = W(0, 1023584208, 1019039018, 1046978951, -1114024277) + W(1, 1042440780, 1036430651, 1019910405, 1017051223)\n\t\t + W(2, -1087680633, -1097242582, -1087958558, -1084584703)\n\t\t + W(3, -1089578188, -1090497932, -1100840226, -1089989738)\n\t\t + W(4, 1058381481, 1049175941, 1059595066, 1058705186) + W(5, 1060807824, 1057261083, 1047705823, 1052092149)\n\t\t + W(6, 1019116206, -1110819225, 1041321753, -1110784681)\n\t\t + W(7, -1120949436, -1111841304, -1108976675, 1037750032);\n\tsum2 = W(0, -1103483317, -1103949071, 1036613850, -1096200772)\n\t\t + W(1, -1094761445, -1090478844, -1091384835, 1024429003)\n\t\t + W(2, 1043027417, 1024633771, 1050158855, -1096718424) + W(3, 1057240079, 1037855330, 1036780676, -1103545669)\n\t\t + W(4, 1043672886, -1105891820, -1113242263, 1053817256) + W(5, 1043447632, 1053166295, 1043680942, 1034776200)\n\t\t + W(6, -1126025102, -1101612494, 1051748473, -1144187697)\n\t\t + W(7, -1129269697, -1114569970, -1102484885, 1044262941);\n\tWS(-1102141694, 1066754929);\n\tsum1 = W(0, 1024767465, 1028037205, -1148374821, 996156698) + W(1, 1034886379, 1011245536, 1017269224, 1023537404)\n\t\t + W(2, -1097150806, -1105574095, -1092607882, -1086231302)\n\t\t + W(3, -1085570014, -1090150659, -1093685286, -1100403588)\n\t\t + W(4, -1121670572, 1021251426, 1053426631, 1064662112) + W(5, 1060264850, 1058905527, 1047037217, 1048736520)\n\t\t + W(6, 1047316983, -1123186307, 1027553675, 1037457517)\n\t\t + W(7, -1103359865, 1031219256, -1108923303, 1039125668);\n\tsum2 = W(0, -1127568330, 1031019669, 1013355589, -1123247753)\n\t\t + W(1, -1131101666, -1126559289, -1128009624, -1122774763)\n\t\t + W(2, 1005444026, -1121000217, -1135062981, -1099801823)\n\t\t + W(3, 1044314830, 1052295626, -1112001042, 1018744598)\n\t\t + W(4, -1099850392, 1052911126, 1040255711, -1120914990)\n\t\t + W(5, 1055431083, -1112663055, 1029993103, -1105142519)\n\t\t + W(6, -1069105992, -1075891845, 1052106082, 1078854269)\n\t\t + W(7, 1061745892, -1097592921, 1033712114, 1037317546);\n\tWS(-1092827839, 1049601702);\n\tsum1 = W(0, -1102748075, 1048973336, -1101661842, 1035794226) + W(1, 1035295380, 951002293, 1028700102, 1019995195)\n\t\t + W(2, -1114726817, -1100496851, 1056141590, -1092935501)\n\t\t + W(3, -1090189951, -1127762491, -1107070641, -1116434785)\n\t\t + W(4, 1043768535, 1037939345, -1092531310, 1048278549)\n\t\t + W(5, 1059458263, -1107678146, 1040739973, -1103464157) + W(6, 1001409895, 1025584388, 1043222609, 1028885900)\n\t\t + W(7, -1097823129, 1046084402, 1018269854, 1033486885);\n\tsum2 = W(0, 1047648616, 1049954711, -1086499077, 1036131868)\n\t\t + W(1, 1021844703, -1144052469, 1036766656, -1114852932)\n\t\t + W(2, -1099866854, -1087014785, 1059941103, 1059724034)\n\t\t + W(3, -1104253425, -1116739540, -1123734224, -1119117496)\n\t\t + W(4, 1040911688, -1127547935, 1006897087, -1147690453)\n\t\t + W(5, -1094365093, 1046092804, -1117733622, 1045874226)\n\t\t + W(6, -1104812914, 1032774583, -1118719608, -1112213150)\n\t\t + W(7, 1020986307, 1037506252, 1020773629, -1120467144);\n\tWS(1062974879, -1132215613);\n\tsum1 = W(0, -1181157822, 1033235448, -1120645311, 1032693326) + W(1, 1014937094, 1012846527, 1029466479, 1027727527)\n\t\t + W(2, -1096960767, -1103300066, -1098273063, -1084817024)\n\t\t + W(3, -1086871647, -1093312183, -1094276984, -1099477807)\n\t\t + W(4, 1047884458, 1024586364, 1040665968, 1065496294) + W(5, 1061273423, 1057013666, 1048826162, 1049029078)\n\t\t + W(6, 1046591191, 1028472621, 1027902609, -1105457745)\n\t\t + W(7, -1099580452, -1121668195, -1123904424, 1033797162);\n\tsum2 =\n\t\tW(0, -1120861164, 1023555157, -1114715157, 1039733942) + W(1, -1111876903, -1121732899, 1028106223, -1136150442)\n\t\t+ W(2, -1114727130, -1127207629, 1049207316, -1100512081)\n\t\t+ W(3, 1044392032, -1113639142, -1107243417, 1035475508) + W(4, 1051943787, 1021361633, -1100379929, 1049204344)\n\t\t+ W(5, 1029680046, 1040523175, -1113800818, 1017564481) + W(6, 1073213517, 1067585393, -1095215585, -1072102567)\n\t\t+ W(7, -1085077901, 1017790060, -1115100698, -1111101803);\n\tWS(1038961915, -1122010239);\n\tsum1 = W(0, 1004620105, -1113106351, -1112775210, -1125534724)\n\t\t + W(1, -1137271196, -1126589322, 1026657556, -1119328748)\n\t\t + W(2, 1048595660, 1052250558, 1058549636, 1061573929) + W(3, 1057522353, 1048822826, 1040718305, 1048641524)\n\t\t + W(4, -1099376311, -1096833644, -1088891129, -1086812373)\n\t\t + W(5, -1093214133, -1095914356, -1105329661, -1103878453)\n\t\t + W(6, -1116246236, 1027857155, 1036452944, 1040782707)\n\t\t + W(7, 1018281129, -1113857108, 1010557432, -1106455448);\n\tsum2 =\n\t\tW(0, -1116580406, 1024927837, -1129828931, -1115420496)\n\t\t+ W(1, 1011185933, -1123989928, -1146345634, -1132229127)\n\t\t+ W(2, 1027562258, -1162615720, 1047581344, -1109513493) + W(3, 1038795182, -1118168090, 1030671240, 1038841827)\n\t\t+ W(4, 1055923683, -1098456431, -1107918233, -1093462217)\n\t\t+ W(5, 1043574176, 1042713369, -1118222006, 1029869485) + W(6, 1077914250, 1064911462, -1076359256, -1072190840)\n\t\t+ W(7, 1023726209, -1114062645, -1119388396, -1111766417);\n\tWS(1058520191, -1103814144);\n\tsum1 = W(0, 1017038583, 1027734728, 1045254802, -1107262661)\n\t\t + W(1, -1105442246, 1031430877, -1126950445, 1024536063)\n\t\t + W(2, -1136595532, 1016280509, -1109207324, 1062837304) + W(3, 1058887264, 1040464732, 1030731221, 1029953906)\n\t\t + W(4, -1118053743, -1128563239, 1044218638, -1096672636)\n\t\t + W(5, -1085861660, -1103880229, -1107144426, -1145128486)\n\t\t + W(6, 1027978638, -1097122909, -1104843131, 1033499055)\n\t\t + W(7, 1025985831, 1030848699, -1131329888, -1109411553);\n\tsum2 = W(0, 1034702970, -1125598974, -1114553387, 1027536136)\n\t\t + W(1, -1115924578, 1035052048, -1132148431, 1025333585)\n\t\t + W(2, -1176551015, -1168898884, 1041527709, -1101298022)\n\t\t + W(3, 1036785061, -1106074654, 1030578400, 1024211757) + W(4, 1007931783, -1090251816, 1067159008, 1043575777)\n\t\t + W(5, 1028484706, -1104273626, -1148595850, -1114791455)\n\t\t + W(6, -1110263367, -1089294892, -1085860022, 1061443693)\n\t\t + W(7, -1099982080, 1042454777, 1027614804, -1123742626);\n\tWS(1061983711, -1098811342);\n\tsum1 = W(0, 1012577103, -1126897281, -1105225996, 1024253613)\n\t\t + W(1, 1053413654, -1137207095, 1042674340, -1109172700) + W(2, 1051270689, 1046420622, 1058683087, 1058369439)\n\t\t + W(3, -1097514912, 1052214131, -1105013139, 1050302029)\n\t\t + W(4, -1108510228, -1106195699, -1088411008, -1089548804)\n\t\t + W(5, -1118840551, -1096732498, -1109015536, -1103000311)\n\t\t + W(6, -1107438075, -1107699151, 1036711743, 1026749110)\n\t\t + W(7, -1116819519, 1024709491, -1140694819, -1154413112);\n\tsum2 = W(0, 1018267361, -1110181012, -1146613180, 1038715850)\n\t\t + W(1, 1024296823, 1036970119, 1022003098, -1124702635) + W(2, 1036503366, 1041828239, 1050199247, -1085432172)\n\t\t + W(3, 1038941240, -1123003584, 1013422114, 1021003447)\n\t\t + W(4, -1126101987, -1116783782, 1071387060, -1080125372)\n\t\t + W(5, -1093021050, -1114155200, -1149124484, -1143100940)\n\t\t + W(6, -1099489904, -1102883314, 1052019906, 1047113133)\n\t\t + W(7, 1035497971, -1112911441, -1119585859, -1131838862);\n\tWS(1061194367, -1092415693);\n\tsum1 = W(0, 1036390333, -1126263470, 1025725222, 1043857157) + W(1, 1035642972, 1044002978, 998479342, 1045699251)\n\t\t + W(2, 1051201914, 1053058480, 1054554894, 1047231542) + W(3, 1057662314, 1050872286, 1045022613, 1049392206)\n\t\t + W(4, -1104881972, -1172862130, -1093268199, -1076465248)\n\t\t + W(5, -1087389459, -1093150623, -1111846627, -1095910796)\n\t\t + W(6, -1115149537, 1030237668, 1021350042, 1036659934) + W(7, 1039247491, 1026362746, 1017611295, 1018350484);\n\tsum2 = W(0, -1129487679, 1042193002, -1108339354, -1095819059)\n\t\t + W(1, 1041127864, -1103499785, 1034257999, -1118637794)\n\t\t + W(2, 1018376667, -1087595144, 1054016721, 1063707892)\n\t\t + W(3, 1036978867, -1103064253, -1103241982, -1112191100)\n\t\t + W(4, -1097777178, -1098446206, -1106280983, 1068295659)\n\t\t + W(5, 1052165187, -1110264861, -1135489703, -1107248782)\n\t\t + W(6, -1117386048, -1106566736, -1108034123, -1104582586)\n\t\t + W(7, -1102127104, 1036459063, -1104779766, 996655259);\n\tWS(-1094699455, 1066131816);\n\tsum1 = W(0, 1049793485, 1029004921, 1050253240, 1043166228) + W(1, 1029407446, 1041612884, 1035949114, 1012128942)\n\t\t + W(2, -1081848423, -1088299640, -1084057276, -1084821317)\n\t\t + W(3, -1084563631, -1104203619, -1099802604, -1096241030)\n\t\t + W(4, 1059460685, 1048637514, 1060796209, 1059873140) + W(5, 1055943200, 1047596309, 1050483936, -1105809528)\n\t\t + W(6, 1042128105, -1139594888, 1026023615, 1020508084)\n\t\t + W(7, -1125172935, 1048504406, -1115227886, 1051471881);\n\tsum2 = W(0, 1060779432, -1118034101, -1104519356, -1119327164)\n\t\t + W(1, -1101970936, -1106905521, 1002331293, -1082144605)\n\t\t + W(2, 1051802488, -1097493973, 1057101737, 1060027297)\n\t\t + W(3, 1044004337, 1057962293, -1098665363, -1086721729)\n\t\t + W(4, -1086062785, 998397725, -1092333837, 1066349798) + W(5, 979464170, -1133317807, 1046794021, 1070824403)\n\t\t + W(6, -1114203174, -1112558489, -1099984065, -1091352583)\n\t\t + W(7, -1094257268, -1102635709, -1094504499, -1114333706);\n\tWS(-1074268304, 1079667699);\n\tsum1 = W(0, -1107189325, 1027760991, -1136873402, -1113641470)\n\t\t + W(1, 1031162561, 1033891144, -1126712892, 1035917755)\n\t\t + W(2, -1101508903, -1090199334, -1090363950, -1087996124)\n\t\t + W(3, -1083961527, -1096484091, -1098094611, -1093567651)\n\t\t + W(4, 1054199089, 1054303683, 1062422475, 1067750847) + W(5, -1113534839, 1052689284, 1031942551, 1045977323)\n\t\t + W(6, 1035260131, -1107632246, 1005391451, -1101800081)\n\t\t + W(7, 1034855959, 1046337921, -1150999418, 1042992013);\n\tsum2 = W(0, -1109104193, -1121805095, 1045986101, 1048674700)\n\t\t + W(1, -1091901802, 1048446997, -1113936425, 1027039508)\n\t\t + W(2, -1100757902, 1045040397, 1080470972, -1080397282)\n\t\t + W(3, -1070026310, 1054845861, -1109557127, -1113850952)\n\t\t + W(4, 1040683096, -1125556022, 1049174250, -1095181876)\n\t\t + W(5, -1122013099, -1110936398, 1038355211, -1103996340)\n\t\t + W(6, -1125509919, 1026278254, -1112163985, 1050380898)\n\t\t + W(7, -1131668233, 1033243862, -1144282357, 1036778147);\n\tWS(-1085238047, -1082053459);\n\tsum1 = W(0, -1106787663, -1138285833, -1108632776, -1094657608)\n\t\t + W(1, -1101713608, 1037328759, -1111697288, -1109379868)\n\t\t + W(2, 1039996894, 1010512412, 1053399812, 1045540841) + W(3, 1051732998, 1044326914, 976543556, 1057105320)\n\t\t + W(4, 1048926451, -1119213276, -1130975030, 1010216242)\n\t\t + W(5, 1034301867, 1025236158, -1128978334, -1109745879)\n\t\t + W(6, -1104330662, -1128637723, -1108017347, -1096910157)\n\t\t + W(7, -1101323868, 1015829447, -1111437732, -1108664266);\n\tsum2 = W(0, -1124623913, 1032956443, 1027185909, -1101336864)\n\t\t + W(1, -1094263361, 1029736763, -1112090109, 1039412150)\n\t\t + W(2, 1025825838, -1119700813, 1032253087, 1046009611)\n\t\t + W(3, 1060071017, -1108021530, -1111711122, -1092338318)\n\t\t + W(4, 1042257288, -1135835500, 1053804277, 1048892371)\n\t\t + W(5, 1036906607, -1101254223, -1115069322, -1114145526)\n\t\t + W(6, 1021162350, -1114452863, -1109212782, -1102267892)\n\t\t + W(7, -1105958464, 1037505372, 996911332, -1125671849);\n\tWS(1060867039, -1136390908);\n\tsum1 = W(0, -1127355032, 1034805910, 1035163860, 1029669941) + W(1, 1042066222, 1021674692, 1040577786, 1021261983)\n\t\t + W(2, -1085412379, -1094311080, -1093352008, -1084691216)\n\t\t + W(3, -1088428116, -1088125293, -1096644095, -1091872390)\n\t\t + W(4, 1049179798, 1049208039, 1060583566, 1063283264) + W(5, 1058522472, 1055147879, 1050065089, 1041474713)\n\t\t + W(6, 1047055468, -1108149971, 1036232649, -1103012671)\n\t\t + W(7, 1024178471, 1026233836, -1126656770, 1049799631);\n\tsum2 =\n\t\tW(0, 1035672114, -1098827199, 1049155846, 1035178389) + W(1, -1107113032, -1144855824, 1035201737, -1127184278)\n\t\t+ W(2, -1063752230, -1085747691, 1077059336, 1075347264) + W(3, 1056308660, 1034654874, -1121418857, 1014935340)\n\t\t+ W(4, -1093487673, 1041803367, 1041184099, -1096808218)\n\t\t+ W(5, -1129382302, -1119639669, -1122522987, 1011408026)\n\t\t+ W(6, 1013645866, 1034418818, -1106855503, 1049524211)\n\t\t+ W(7, -1122362105, 1030856901, 1027103888, -1115004359);\n\tWS(-1090674303, -1100343233);\n\tsum1 = W(0, -1120232797, 1040422273, 1026412864, -1138867958) + W(1, 1033879777, 1033565615, 1019476032, 988102399)\n\t\t + W(2, -1091881416, -1094093465, -1085938046, -1089254334)\n\t\t + W(3, -1089797193, -1085407367, -1095206984, -1105032111)\n\t\t + W(4, 1051419109, 1052500896, 1061270771, 1067891162) + W(5, 1060067146, 1016645247, 1041715172, 1036835111)\n\t\t + W(6, 1036288004, 1023553551, -1112170192, -1115349187)\n\t\t + W(7, -1112030904, 998486818, 1027103050, 1040345019);\n\tsum2 =\n\t\tW(0, 1040618154, -1114130867, -1122148687, 1044229537) + W(1, -1110193301, -1097134960, 1037070268, 1037459780)\n\t\t+ W(2, -1101425729, 1043012943, 1049717343, 1078734719) + W(3, 1058416067, -1066172228, -1087270128, 1051160418)\n\t\t+ W(4, 1012698939, -1135257643, 1047429512, 1020747990) + W(5, 1045573328, -1105653505, -1098650023, 1029335953)\n\t\t+ W(6, -1121139419, 1033653009, 1038119907, -1131387750)\n\t\t+ W(7, -1162837210, -1124290574, -1142454518, -1119987003);\n\tWS(-1083751903, -1076119444);\n\tsum1 = W(0, -1115245576, -1106029427, -1102084379, -1113929101)\n\t\t + W(1, -1115339007, 1029734646, -1110488366, -1147960477)\n\t\t + W(2, 1056842307, 1054460828, 1062160243, 1061549380) + W(3, 1051628466, 1034628298, 1040780998, 1027250487)\n\t\t + W(4, -1093345814, -1096614035, -1087844584, -1088621915)\n\t\t + W(5, -1095344475, 1039622221, 1023285463, 1052549785)\n\t\t + W(6, -1108216057, -1118873130, 1032187759, -1118044066)\n\t\t + W(7, -1125935063, -1114025640, -1103117229, -1101242061);\n\tsum2 = W(0, -1142266798, -1105635988, -1108468488, -1104742183)\n\t\t + W(1, 1004562934, -1111519795, 1009402627, 1007186587) + W(2, 1041896729, -1133541327, 1052249127, 1059101684)\n\t\t + W(3, -1116644500, 1022626513, 1036478091, -1114250343)\n\t\t + W(4, -1109207785, -1119640286, -1132044399, 1057719514)\n\t\t + W(5, 1049160976, 1040987637, -1103527129, -1094402391)\n\t\t + W(6, -1116438034, -1143926222, -1116983273, -1107716245)\n\t\t + W(7, 1036001553, -1093640310, -1115139384, -1102449905);\n\tWS(1032624635, 1033521535);\n\tsum1 = W(0, -1131553039, -1117491096, -1112834618, 1049918570)\n\t\t + W(1, 1045795365, 1016822387, 1035361729, -1113168565)\n\t\t + W(2, -1098906814, -1100587359, -1081513385, -1078593782)\n\t\t + W(3, -1105649745, -1092053629, -1096260814, -1095243062)\n\t\t + W(4, 1051615627, 1047570260, 1060987922, 1043587024) + W(5, 1056209202, 1059398075, 1049440024, 1051600524)\n\t\t + W(6, 1045470610, 1025984961, 1036113314, 1040182861) + W(7, 1012071435, 1032631435, 1023888652, 1034850724);\n\tsum2 = W(0, -1111826236, -1099208280, 1026789677, -1106561040)\n\t\t + W(1, -1093448876, 1046407154, -1102666308, 1042570396)\n\t\t + W(2, -1092384767, 1027875109, 1064661507, 1062273543)\n\t\t + W(3, -1087164405, -1108191451, 1044380270, -1104593420)\n\t\t + W(4, -1095745094, -1100947515, -1112642295, 1068550638)\n\t\t + W(5, -1104229197, -1106740917, -1103404028, -1105841536)\n\t\t + W(6, 1034661269, 1048636172, -1098451609, -1099981129)\n\t\t + W(7, -1118651857, 1049739863, -1095995165, 1048025970);\n\tWS(-1085606847, 1061985400);\n\tsum1 = W(0, -1108997980, -1117164584, 1031768707, -1103105924)\n\t\t + W(1, 1041900981, -1110420181, 1037113665, 1014163116)\n\t\t + W(2, -1089905075, -1114895517, -1095264598, -1077801587)\n\t\t + W(3, -1097956992, -1088999487, -1098379486, -1096151518)\n\t\t + W(4, 1057688104, 1056544190, 1062390314, 1055481056) + W(5, 1062127874, 1051900674, 1048102065, 1057425872)\n\t\t + W(6, 1040581229, -1114811305, -1107526493, -1110202349)\n\t\t + W(7, -1118208771, -1108027100, 1024450541, 1041210774);\n\tsum2 =\n\t\tW(0, 1025785873, 1048912334, -1096464036, 1056133856) + W(1, -1104154812, -1121968309, 1033410161, 1015120151)\n\t\t+ W(2, 1048760593, -1090084783, -1114768213, 1066763200)\n\t\t+ W(3, -1086306359, 1058187354, -1113492694, -1128581905)\n\t\t+ W(4, 1035955606, -1119218892, 1007739746, 1064934573) + W(5, -1089946445, 1050702067, 1025685973, -1102128709)\n\t\t+ W(6, -1126760968, 1008603006, -1094704139, -1080670875)\n\t\t+ W(7, 1031309677, -1125625514, -1109240237, 1039335694);\n\tWS(-1090966143, -1078936607);\n\tsum1 = W(0, -1116393227, -1108278025, 1051625062, -1105522375)\n\t\t + W(1, 1058727904, -1091195697, 1052016408, -1109728971)\n\t\t + W(2, -1086961670, -1108945587, -1086695325, -1081986687)\n\t\t + W(3, -1089148367, -1086453117, -1092689140, -1091172115)\n\t\t + W(4, 1058706816, 1041859343, 1060094467, 1059190367) + W(5, 1061098519, 1055062080, 1056115606, 1058930855)\n\t\t + W(6, -1116819366, 1035952359, 1041797992, -1104043025)\n\t\t + W(7, 1053094890, -1093101306, 1015960496, 1034498693);\n\tsum2 = W(0, 1023528661, -1119417071, -1105978590, 1009798795)\n\t\t + W(1, 1040834561, -1111364082, 1041397121, 1033368796)\n\t\t + W(2, -1118025227, 1050920275, -1112399565, -1098493686)\n\t\t + W(3, 1036263434, -1124489419, 1048582480, -1089345484) + W(4, 1075422545, 1065042273, 1069638520, 1067662601)\n\t\t + W(5, -1093932676, -1079439326, -1078082886, -1070108577)\n\t\t + W(6, -1073269716, -1077701631, -1078616397, -1083676116)\n\t\t + W(7, 1044144047, 1070390370, 1068400636, 1077727906);\n\tWS(-1079921856, 1049308945);\n\tsum1 =\n\t\tW(0, 1030068962, -1133949626, 1050882798, 1018623990) + W(1, -1106924392, -1146454049, -1116987117, 1040905769)\n\t\t+ W(2, -1165865787, -1118082277, 1053008345, -1094507016) + W(3, 1052481994, 1043504665, 1047635255, 1026870489)\n\t\t+ W(4, -1187780005, -1108803021, 1038634079, -1106873963)\n\t\t+ W(5, -1087778738, -1101591143, -1101174683, -1110197734)\n\t\t+ W(6, 1025440517, -1111921110, -1120535059, -1104818073)\n\t\t+ W(7, 1046575523, 1041667424, 1031519031, 1031554658);\n\tsum2 =\n\t\tW(0, -1116556974, -1095066961, -1100395256, 1050308919) + W(1, 1040792410, 1032406727, 1011901446, -1141998384)\n\t\t+ W(2, 1059176005, 1038856572, -1076691076, 1055715442) + W(3, 1046498927, -1123959066, 1028959950, 1032868606)\n\t\t+ W(4, -1096412953, 1050790436, 1058179896, -1097771226) + W(5, 1039711359, -1106160519, 1018212767, 1038360912)\n\t\t+ W(6, -1114011261, -1173649795, 1024138419, 1040413046)\n\t\t+ W(7, -1106323994, 1033840078, -1127468978, -1107910389);\n\tWS(1060842367, -1123947436);\n\tsum1 = W(0, 1024730985, 1023159627, -1105241169, 1017803651) + W(1, 1037913699, 1035962309, 1028045772, 1032728670)\n\t\t + W(2, 1048950736, 1047784339, 1057388094, 1060112037) + W(3, 1062491953, 1057656339, -1114528913, 997860858)\n\t\t + W(4, -1097448124, -1098772880, -1087773444, -1085451727)\n\t\t + W(5, -1088044111, -1089872870, -1102522557, -1103124285)\n\t\t + W(6, -1122548355, 1026072115, 1037590622, 1037652837)\n\t\t + W(7, 1034810634, 1033785172, 1008900343, -1114288296);\n\tsum2 = W(0, 1026131421, -1112740722, 1046858645, 1032928238)\n\t\t + W(1, 1042166107, 1040344552, -1082879617, -1091819295)\n\t\t + W(2, 1001103237, -1121600279, -1108221277, -1097923247)\n\t\t + W(3, 1069212508, 1057336110, -1095628134, -1107037379)\n\t\t + W(4, -1133854939, 1038637096, 1037424280, -1103185020)\n\t\t + W(5, -1120290433, 1019342369, 1039461314, -1122429445)\n\t\t + W(6, -1114822986, -1108393699, 1029862733, -1101308237)\n\t\t + W(7, 1036213344, -1145606165, -1111520861, 1034167562);\n\tWS(1038606587, 1058047160);\n\tsum1 = W(0, 1026865207, 1042118304, 1051307036, 1033639368) + W(1, 1046742309, -1109598961, 1028927539, 1015037525)\n\t\t + W(2, -1095018974, -1093024127, -1082724754, -1100730470)\n\t\t + W(3, 1036658562, 1040951763, -1113143704, -1098528366)\n\t\t + W(4, 1044423619, 1048945010, 1054092644, -1097872036) + W(5, -1091674216, 1033100505, 1030352835, 1047837568)\n\t\t + W(6, -1136300775, -1117800769, 1005722288, 1044405134)\n\t\t + W(7, 1047528601, 1044812414, 1032954286, 1044220906);\n\tsum2 = W(0, 1050657429, -1103301852, 1060573163, -1091436731)\n\t\t + W(1, -1104427284, -1097267636, 1038196249, -1107511544)\n\t\t + W(2, 1045860939, 1052242374, -1100974944, 1066745360)\n\t\t + W(3, -1079344782, -1113016512, -1119497008, -1113648424)\n\t\t + W(4, -1111592920, 1013554208, -1111727364, 1055083328)\n\t\t + W(5, -1098647652, 1034990326, -1110499846, 1042188938)\n\t\t + W(6, -1103122208, -1106328874, 1015168980, -1113723980)\n\t\t + W(7, 1051192034, 1034643320, -1122594772, -1140986496);\n\tWS(-1095257599, 1052962039);\n\tsum1 = W(0, -1106746181, 1031300369, 1046667354, 1037361867)\n\t\t + W(1, 1040829967, -1128966365, 1034540700, -1115420664)\n\t\t + W(2, -1097695335, -1111219488, -1083536631, -1088861218)\n\t\t + W(3, -1107201338, -1115618056, -1117058422, -1138753100)\n\t\t + W(4, 1053309708, 1042046133, 1060606673, 1053570633) + W(5, -1101583222, 1033575580, 1029127944, 1041019129)\n\t\t + W(6, 1036635571, 1032102291, -1110849586, -1103814096)\n\t\t + W(7, -1130665360, 1023220920, 1009452933, 1041468947);\n\tsum2 =\n\t\tW(0, -1137205193, -1121249932, -1137006201, -1101149788)\n\t\t+ W(1, 1034796937, -1115985020, -1140489533, 1026538132) + W(2, -1089705070, 1025195792, 1049206515, 1054529493)\n\t\t+ W(3, 1039074115, 1050074620, -1104546681, -1103055048) + W(4, -1116057142, 1014073009, 1040872535, 1044729510)\n\t\t+ W(5, 1024555690, -1108168105, -1105229574, -1093226929)\n\t\t+ W(6, -1106134583, -1131583764, 1023734245, 1030258377)\n\t\t+ W(7, 1045578999, 1041497164, -1131316168, 1036128894);\n\tWS(1058062751, -1100017341);\n\tsum1 = W(0, -1129599006, 1020928695, -1098371705, -1111175932)\n\t\t + W(1, -1108928286, -1108487635, 1028685770, -1134533769)\n\t\t + W(2, 1055064995, 1054737968, 1061839865, 1057524464) + W(3, 1062722401, 1039434185, 1053936411, 1054765971)\n\t\t + W(4, -1094744478, -1108714620, -1089137095, -1081607655)\n\t\t + W(5, -1111400813, -1089739654, 1037008853, -1094983833)\n\t\t + W(6, -1110864465, 1035506764, -1103907470, -1115102560)\n\t\t + W(7, 1038105413, -1103382940, 1038153674, -1101904010);\n\tsum2 = W(0, 1046625968, -1114205611, -1097342682, -1079666171)\n\t\t + W(1, 1041595755, 977545170, -1106070846, -1145403458) + W(2, 1034733544, -1100522159, 1034693600, 1066071967)\n\t\t + W(3, -1087077400, 1062799024, -1097179722, 1015933409)\n\t\t + W(4, -1147999170, -1093312378, 1057288295, 1059803421)\n\t\t + W(5, -1088579916, 1057064650, -1086854504, 1055355590)\n\t\t + W(6, 1026537136, -1103988998, 1049229753, -1114956972)\n\t\t + W(7, -1104980683, 1050850828, 997711860, -1115357129);\n\tWS(1033636603, -1075190676);\n\tsum1 = W(0, 1030520392, -1125697208, -1114269946, -1109653337)\n\t\t + W(1, -1102211630, 1032435172, -1120127764, 996293820) + W(2, 1051253486, 1043969999, 1058583983, 1064791929)\n\t\t + W(3, 1057642082, 1055881859, 1033241689, 1053053914)\n\t\t + W(4, -1096251285, -1100430004, -1085953223, -1093290764)\n\t\t + W(5, -1088005167, -1098086422, -1102333361, -1119839106)\n\t\t + W(6, -1117233131, -1122877346, 1036037681, -1109909101)\n\t\t + W(7, -1123582788, 1029223000, -1125435099, -1103406294);\n\tsum2 = W(0, -1120200303, 1024626781, 1013431061, -1124733431) + W(1, 1027814217, 999438554, -1116912567, 1007930813)\n\t\t + W(2, -1113787644, 1041562727, -1114475538, -1112371618)\n\t\t + W(3, 1032748777, -1098117165, 1042886038, -1140542509)\n\t\t + W(4, -1109535466, -1106166077, 1029531851, 1051805575)\n\t\t + W(5, 1061661699, -1114245048, 1039886302, -1093997696)\n\t\t + W(6, 1041916719, 1028143351, -1097688999, 1068535590)\n\t\t + W(7, 1074776935, 1029048009, -1076933565, -1072079702);\n\tWS(1051996799, 1040628126);\n\tsum1 = W(0, -1106876926, 1042171100, 1014013938, 1040804174) + W(1, 1038633599, 1024260165, 1032103150, -1111941370)\n\t\t + W(2, -1096999331, -1106536569, -1087433914, -1079279688)\n\t\t + W(3, -1085040172, -1090750082, -1096245875, -1091794355)\n\t\t + W(4, 1064227732, 1056769919, 1057736892, 1052514885) + W(5, 1059334684, 1058371760, 1051111478, 1050507101)\n\t\t + W(6, 1032518006, -1132737450, -1121739327, 1035728257)\n\t\t + W(7, -1115112214, -1126170017, -1129820331, 1036168684);\n\tsum2 =\n\t\tW(0, -1097197656, 1040517176, -1107105879, 1050425804) + W(1, -1108102513, 1044838414, 1026907274, 978890108)\n\t\t+ W(2, -1105938617, -1119182790, 1048788314, 1048225474) + W(3, 1050055380, -1097162220, 1028263310, 1043193320)\n\t\t+ W(4, -1063141508, -1072247475, 1073986693, 1082212097)\n\t\t+ W(5, 1063649950, -1108483496, 1040597170, -1096883524) + W(6, 1047663602, -1106333570, 1017343300, 1014706728)\n\t\t+ W(7, 1023560998, -1105252179, 1016727612, 1025416282);\n\tWS(-1079662656, 1075711984);\n\tsum1 = W(0, -1136749190, -1108214827, -1112256994, -1102094902)\n\t\t + W(1, 1019461885, -1113236619, -1115387518, 1015637672) + W(2, 1054381451, 1049467004, 1060357369, 1064079536)\n\t\t + W(3, 1058102849, 1050217386, 1046694646, 1053154499)\n\t\t + W(4, -1099895821, -1104318006, -1094055613, -1088977984)\n\t\t + W(5, -1094018397, -1093377643, -1102869707, -1097489705)\n\t\t + W(6, -1111920714, -1124862997, -1099490085, -1093653775)\n\t\t + W(7, 1047054555, 1026036560, -1122648846, -1117787456);\n\tsum2 = W(0, 1021596406, 1027700788, 1031902674, 1035450862) + W(1, -1146279384, 1036068426, -1108044351, 1030087008)\n\t\t + W(2, -1120307380, 1049653321, -1100871897, 1054975194)\n\t\t + W(3, -1106853601, 1042197470, 1034125536, -1133477273) + W(4, 1037868882, 1038499992, 1074972319, 1073269037)\n\t\t + W(5, 992333684, 1032586692, -1129244749, 1010404410)\n\t\t + W(6, -1094559059, -1099826066, -1070411479, -1076192259)\n\t\t + W(7, 1024067187, -1107184127, 1032061183, -1104237818);\n\tWS(-1121360374, -1077155152);\n\tsum1 = W(0, -1105583845, 1042009047, -1135496901, 1057317824)\n\t\t + W(1, 1037107234, 1028773828, 1042777544, -1116736729)\n\t\t + W(2, -1092428892, -1091586093, -1087526962, -1088356100)\n\t\t + W(3, -1084718223, -1086275726, -1096882940, -1086839898)\n\t\t + W(4, 1053987635, 1057449542, 1037542524, 1067018703) + W(5, 1053143538, 1051794540, 1049337758, 1050512766)\n\t\t + W(6, 1036329976, 1039912928, -1114441548, 1035631092) + W(7, 1024846769, 1020991498, 1032759069, 1041911145);\n\tsum2 = W(0, -1122349048, 1027223630, -1123059666, -1097496437)\n\t\t + W(1, -1101147358, 1008041239, -1113710228, -1103013196)\n\t\t + W(2, -1108922684, 1050237475, -1093984844, 1061603028)\n\t\t + W(3, 1054912466, -1136134543, 1050990810, 1037079763)\n\t\t + W(4, -1102817435, 1047134367, -1086242189, 1069845393)\n\t\t + W(5, -1091188340, -1107987422, -1126348732, -1097181289)\n\t\t + W(6, 1024154790, -1105600910, 1041276041, -1090292072)\n\t\t + W(7, -1122818012, -1109079234, 1047206075, -1109791787);\n\tWS(-1087087711, 1067831143);\n\tsum1 = W(0, 1034272753, 1043354114, 1046815315, 1041026663)\n\t\t + W(1, -1116058688, -1131457456, -1115558139, 1032034947)\n\t\t + W(2, -1110686621, -1094089577, -1090322161, 1019000899)\n\t\t + W(3, 1048378971, 1054466495, 1045446607, 1043401342) + W(4, 1034360523, 1051348739, 1056352764, 1049291409)\n\t\t + W(5, -1098372646, -1090870248, -1103803571, -1098529593)\n\t\t + W(6, 1006467012, -1097882829, -1098171061, -1099191041)\n\t\t + W(7, 1036956791, 1036945505, -1124941614, 1026141794);\n\tsum2 =\n\t\tW(0, 1046033632, -1114282503, 1044655964, -1106001859) + W(1, -1104436397, -1101664028, 1015764662, 1023732858)\n\t\t+ W(2, -1147554302, 1065651536, 1052996561, -1076523823)\n\t\t+ W(3, -1095873418, 1059971501, 1037179306, -1119149512) + W(4, 1021728539, 1061103542, 1047372498, -1081697027)\n\t\t+ W(5, -1094800655, 1058036758, -1113369666, 1033040332)\n\t\t+ W(6, 1034466187, -1117467216, 1040544990, -1105745303)\n\t\t+ W(7, -1119054372, -1110996319, -1120190386, 1028498617);\n\tWS(1040537598, -1164677141);\n\tsum1 = W(0, 1044447583, 987031402, -1121775302, 1042738997) + W(1, 1038434732, 1049696256, 1024826006, 1044766000)\n\t\t + W(2, 1058921623, 1052904912, 1059494147, 1059765434) + W(3, 1053249925, 1045203303, 1049549231, 1032179929)\n\t\t + W(4, -1079854668, -1089009751, -1082135643, -1085199868)\n\t\t + W(5, -1087718171, -1094593271, -1098502833, -1111725730)\n\t\t + W(6, 1051360885, 1009017491, 1049103971, 1042102879) + W(7, 1037325507, 1033340813, 1040792940, -1103499809);\n\tsum2 = W(0, -1105450770, -1099930216, -1087670985, -1097641768)\n\t\t + W(1, -1093727900, 1034849198, -1089823109, 1026936119)\n\t\t + W(2, -1076904032, -1110661913, 1054929191, 1067640588) + W(3, 1043325457, 1041628489, 1024934811, 1071055811)\n\t\t + W(4, 1034745372, -1104228342, 1055270313, 1058849806)\n\t\t + W(5, 1055379319, 1047258529, -1091022953, -1093861556)\n\t\t + W(6, 1064235564, -1133206564, -1159337186, -1095527236)\n\t\t + W(7, -1097371942, -1123329564, 1053074558, -1079977593);\n\tWS(-1072228928, 1076959210);\n\tsum1 = W(0, 1049440860, -1100954468, 1040518102, 1055014377)\n\t\t + W(1, -1102413547, 1056933930, -1100924366, 1025160513)\n\t\t + W(2, -1102211417, -1090494943, -1089397123, -1085929645)\n\t\t + W(3, -1092416799, -1103710088, -1099959722, -1097219837)\n\t\t + W(4, 1052420434, 1049042513, 1057628335, 1059399711) + W(5, 1055649007, 1056457065, 1043274798, 1043339918)\n\t\t + W(6, 1046258910, -1094165323, -1113742940, -1115570152)\n\t\t + W(7, -1095616949, 1054320058, -1096288332, -1113497047);\n\tsum2 =\n\t\tW(0, 1037249746, -1106259401, -1118512137, 1033553146) + W(1, -1118437421, 1049532353, -1112295163, -1112769969)\n\t\t+ W(2, -1091193116, 1057292562, 1045032769, -1101074553) + W(3, 1047290760, -1085599381, 1045403080, 1036239865)\n\t\t+ W(4, 1058952598, -1089499743, 990544085, 1052938455) + W(5, -1096914685, 1060306657, -1095081062, 1036770528)\n\t\t+ W(6, -1099278743, 1035766214, -1120311473, -1107284433)\n\t\t+ W(7, 1032001159, -1105441959, 1037527897, -1117837555);\n\tWS(-1095248895, -1088416713);\n\tsum1 = W(0, 991086878, 1041397006, -1100414321, -1106522737)\n\t\t + W(1, 1032194452, 1040515607, -1113785099, -1119710941)\n\t\t + W(2, -1112623265, 1023033498, -1095527100, -1085500137)\n\t\t + W(3, -1103431285, -1093888960, 1025813699, -1112974208)\n\t\t + W(4, 1049658160, -1129854724, 1056723856, 1061179113) + W(5, 1050067968, 1055178889, 1027165141, 1044420741)\n\t\t + W(6, 1025280780, 1018002536, -1101036339, -1098081679)\n\t\t + W(7, -1121954805, 1040437430, -1107604207, -1122583614);\n\tsum2 = W(0, -1115281709, 1038308115, -1086190321, -1079410563)\n\t\t + W(1, 1055352031, -1106071111, 1042421121, 999244165) + W(2, 1049351198, -1105447726, 1061131477, 1070791012)\n\t\t + W(3, -1080774986, 1050939464, -1096576742, 1021655353)\n\t\t + W(4, -1101546004, 1044927538, -1105825160, -1124003323)\n\t\t + W(5, 1054621998, -1100497740, 1042910101, -1123561791)\n\t\t + W(6, -1132663474, 1036918381, -1104633062, 1035199903)\n\t\t + W(7, -1119052371, 1038597174, -1126972585, -1141223925);\n\tWS(1057802399, -1081431823);\n\tsum1 = W(0, -1122831751, -1131892376, 1041203877, 1034931072)\n\t\t + W(1, 1020249162, 1023514439, -1183605377, -1102408215)\n\t\t + W(2, -1093480916, -1097592621, -1087992005, -1086955360)\n\t\t + W(3, -1094219074, -1099624791, -1104094712, -1103351679)\n\t\t + W(4, 1050038833, 1050095280, 1058335651, 1062569267) + W(5, 1052617634, 1053253320, 1037479577, 1047799764)\n\t\t + W(6, 1031929377, 1003466633, -1150646211, -1108251076)\n\t\t + W(7, -1123920403, -1110979235, 1022403704, 1031403703);\n\tsum2 =\n\t\tW(0, -1104748298, 1035677532, -1097271446, -1071563129) + W(1, -1073203825, -1105574565, 1074066983, 1076846054)\n\t\t+ W(2, 1032567526, 1015597088, 1042180726, -1131466492) + W(3, -1088097679, 1049167232, -1104411749, 1054919113)\n\t\t+ W(4, 1030425414, -1106402955, 1036072793, 1026492053) + W(5, 1021201077, 1046304011, -1108010622, 1040423027)\n\t\t+ W(6, 1028805714, 1010146816, -1122721452, -1139412188)\n\t\t+ W(7, -1121571686, 1013464552, -1115684312, -1159010626);\n\tWS(1057159391, -1098185256);\n\tsum1 = W(0, -1115997840, -1139848194, -1110900998, 1040272534)\n\t\t + W(1, -1124007614, 1022311680, -1122049771, 1025640163) + W(2, 1062337777, 1059107990, 1058844902, 1060188982)\n\t\t + W(3, 1050305613, 1055455830, 1052112283, 1058488623)\n\t\t + W(4, -1099145229, -1096884471, -1083284577, -1081840204)\n\t\t + W(5, -1086268415, -1088086212, -1093503993, -1095187909)\n\t\t + W(6, -1108105457, 1026934458, -1128707950, 1050661700)\n\t\t + W(7, 1025671020, 1018441343, 1032949738, -1115150240);\n\tsum2 = W(0, 1056249112, -1087901783, 1050240307, -1096100666)\n\t\t + W(1, 1050011361, 1046757851, -1111613200, 1031802636)\n\t\t + W(2, -1063663228, -1065703489, 1050922399, 1074103439) + W(3, 1078895155, 1075028289, 1011769164, 1041242105)\n\t\t + W(4, -1090194820, 1049313091, 1059446328, -1091782161) + W(5, 1051412884, 999915799, -1097222567, 1040180956)\n\t\t + W(6, -1098679170, 1049727089, -1118968312, 1043947681)\n\t\t + W(7, -1103451878, 1046896549, 1036070334, -1120669738);\n\tWS(-1076050352, 1072169512);\n\tsum1 = W(0, -1112010473, -1110549812, 1041474168, -1102358403)\n\t\t + W(1, 1035256808, -1103941101, -1126807163, -1127729580)\n\t\t + W(2, -1127017300, -1096217239, -1101316183, -1098236010)\n\t\t + W(3, -1097462672, 1015309803, -1109990262, -1124828306)\n\t\t + W(4, 1032805651, 1055039585, -1107675851, 1058693100) + W(5, 1050718238, 1047069339, 1040782175, 1033573870)\n\t\t + W(6, -1127012698, 1017026201, 1027743346, -1103052317)\n\t\t + W(7, 1025923518, -1108585145, 1029935559, 1030091394);\n\tsum2 = W(0, -1115222730, -1103808603, -1133607278, 1035011293)\n\t\t + W(1, 1045426354, 1005150868, 1038138903, 1014354189) + W(2, 1013406324, 1044516259, 1056099238, -1093760521)\n\t\t + W(3, -1097063741, 1046105407, -1106358807, 1034790704)\n\t\t + W(4, 1048651312, -1091636530, -1082257366, 1065398243)\n\t\t + W(5, 1052543946, -1105190986, -1143243436, -1124610775)\n\t\t + W(6, -1105744683, 1036643390, 1056116581, -1087652578)\n\t\t + W(7, -1106429625, 1031045850, -1129675875, 1033997397);\n\tWS(1065781680, 1039008007);\n\tsum1 = W(0, 1041247860, -1132228043, -1116017645, 1029031978)\n\t\t + W(1, -1114552992, 1018467582, -1119698444, 1039500994) + W(2, 1052873269, 1052030887, 1057769989, 1065817909)\n\t\t + W(3, 1059292430, 1052683781, 1045381867, 1042767258)\n\t\t + W(4, -1087848896, -1090939837, -1086321043, -1090130600)\n\t\t + W(5, -1093123180, -1089813139, -1093950448, -1088918334)\n\t\t + W(6, -1122380132, 1043969975, -1167945460, 1043124941)\n\t\t + W(7, 1037414446, 1037105136, 1016187596, -1139723011);\n\tsum2 = W(0, 1038177586, 1024852101, 1031995320, 1016571646) + W(1, 1033741319, -1108656521, 1035134998, -1120710323)\n\t\t + W(2, -1105284792, -1131141686, -1123455081, 999573799)\n\t\t + W(3, -1107419527, 1052574782, -1099142208, -1103717942)\n\t\t + W(4, -1114385091, -1105200928, 1057384109, 1073904332)\n\t\t + W(5, 1075963065, -1130292726, -1072886122, -1070457563)\n\t\t + W(6, 1023745983, 1044997454, -1102654886, 1045931554)\n\t\t + W(7, -1113399825, 1041285787, -1101763500, 1044467987);\n\tWS(-1090516543, -1087531312);\n\tsum1 = W(0, -1105337757, -1135375282, -1113059195, -1111479074)\n\t\t + W(1, 1044282546, 1036163039, -1123738614, -1110047807)\n\t\t + W(2, 1040358473, 1025750638, 1034124454, -1082649657)\n\t\t + W(3, -1098312091, -1114570479, -1112260786, 1044483760)\n\t\t + W(4, 1026287071, -1109155234, -1111070925, -1113637434)\n\t\t + W(5, 1056333811, 1044131649, 1049914271, 1039433994) + W(6, -1112133319, 1043065477, 1049735832, 1048811350)\n\t\t + W(7, -1104740686, -1111303053, -1128712224, -1136462731);\n\tsum2 =\n\t\tW(0, -1122757257, 1009904581, -1113467627, -1099518373) + W(1, 1032421699, -1095677862, 1020800146, -1112743661)\n\t\t+ W(2, 1027164873, -1112829049, 1020364514, 1064179702) + W(3, -1092934445, 1039050377, -1106885375, 1022655162)\n\t\t+ W(4, 1002742314, -1115430893, -1098221748, 1059311413)\n\t\t+ W(5, -1139891301, 1041708988, -1124766450, 1032689603)\n\t\t+ W(6, -1111953049, -1116391321, 1025748661, -1098741962)\n\t\t+ W(7, 1036551469, -1119491053, 1025848261, -1122814953);\n\tWS(1059528063, 1057564569);\n\tsum1 = W(0, 993737087, 1023855952, 1051519336, -1100822612) + W(1, 1027584566, -1109486813, -1127107174, 1035631854)\n\t\t + W(2, -1096201122, -1112481934, -1089271861, -1101379550)\n\t\t + W(3, -1129312776, -1101173547, 1031993577, -1097162722)\n\t\t + W(4, 1052073475, 1044928820, 1057871347, -1090210244) + W(5, 1027452795, 1051680014, 1038521522, 1050823828)\n\t\t + W(6, 1036364765, -1119101474, 1026047377, -1095066725)\n\t\t + W(7, 1043887545, 1038809676, -1152581582, 1037595092);\n\tsum2 =\n\t\tW(0, -1106514375, 1034094594, -1112949179, 1009317700) + W(1, -1126355148, 1021633582, 1010987268, -1106252693)\n\t\t+ W(2, -1115270098, 1029678117, -1095879627, 1052560633) + W(3, -1128108776, 1034084538, 1040297892, 1049223604)\n\t\t+ W(4, 1025588625, -1103891997, 1029083209, 1062070608) + W(5, -1100067512, 1035054672, -1117785257, 990783407)\n\t\t+ W(6, -1109616345, 1044342701, -1107320484, -1103446924)\n\t\t+ W(7, -1131810302, -1098743078, -1123491293, -1102218346);\n\tWS(1061977215, -1122204685);\n\tsum1 = W(0, -1124031333, -1109554099, -1105250724, 1036027519)\n\t\t + W(1, 959521497, 1055353398, 1038275624, -1136942561) + W(2, 1053794732, 1053305789, 1058003360, 1059361796)\n\t\t + W(3, 1055117810, 1051669497, 1037705519, 1047158647)\n\t\t + W(4, -1090279300, -1096176108, -1093816822, -1081723655)\n\t\t + W(5, -1090510080, -1097892492, -1101480172, -1098784634)\n\t\t + W(6, 1017895407, 1027213295, 1024566052, 1033714163)\n\t\t + W(7, -1125004641, 1006220452, -1112881733, -1145512357);\n\tsum2 = W(0, -1113155109, 1032430477, -1105712018, 1048044904)\n\t\t + W(1, -1081128362, -1070110178, -1092435520, -1092804751)\n\t\t + W(2, 1028856727, 1021325630, 1050891972, 1070862297) + W(3, 1074403261, 1035516985, -1108990845, -1122256510)\n\t\t + W(4, 993552399, -1128331832, 1042508384, 1042132916) + W(5, 1044319918, -1115800491, 1033559089, -1109033129)\n\t\t + W(6, 1036996819, -1139715524, -1111526035, 1040898786)\n\t\t + W(7, 1025048067, 1038841221, -1119663830, 1007165668);\n\tWS(-1096328959, 1070879408);\n\tsum1 = W(0, 1047483149, -1131726569, 1017405984, 1016192218)\n\t\t + W(1, -1134185032, -1130210629, 1039283496, 1022798351) + W(2, 1056909741, 1050717891, 1049879450, 1064784543)\n\t\t + W(3, 1054175424, 1055866677, 1052923070, 1050331269)\n\t\t + W(4, -1084253114, -1097194674, -1084428714, -1088019878)\n\t\t + W(5, -1087922381, -1096076442, -1098682228, -1089646420)\n\t\t + W(6, 1043610432, -1120381614, 1029856307, 1046790989)\n\t\t + W(7, 1044095416, -1106891777, 1045347898, -1103492015);\n\tsum2 =\n\t\tW(0, -1096731787, 1041094096, 1030029833, -1134738767) + W(1, -1112066554, 1049526473, -1103571503, 1038503381)\n\t\t+ W(2, -1092572599, -1083918511, -1081752188, 1050600846) + W(3, 1060518769, 1056806956, 1052566197, 1040255570)\n\t\t+ W(4, -1072213302, -1081783724, -1088492050, -1098909280)\n\t\t+ W(5, 1054813136, 1066457366, 1061557517, 1074348460) + W(6, 1074300082, 1061218424, 1062246408, 1055931246)\n\t\t+ W(7, 1030722387, -1080408758, -1082314750, -1074863778);\n\tWS(-1093955647, 1022010191);\n\tsum1 = W(0, 1027472455, -1118029508, 1017520774, -1100976252) + W(1, 1048038797, 1019653215, 1015004427, 1006149335)\n\t\t + W(2, 1051129150, 1040858863, 1058284788, 1064764899) + W(3, -1094249656, 1054989120, -1137681219, 1047833420)\n\t\t + W(4, -1126583382, -1110637352, -1083829535, -1092969620)\n\t\t + W(5, -1093269900, -1098669306, -1101321193, -1092663640)\n\t\t + W(6, -1110971745, -1129027011, 1043546956, 1032062845)\n\t\t + W(7, 1049944248, -1114080636, 1039113958, -1120661351);\n\tsum2 = W(0, -1125700855, 1010923567, -1097524591, -1086770251)\n\t\t + W(1, -1119687254, -1136610695, 1034141799, -1146172877)\n\t\t + W(2, -1109340305, -1099241242, -1097784845, 1061340682)\n\t\t + W(3, -1091236020, 1059369820, -1103210716, 1042204527)\n\t\t + W(4, 1041739108, -1121076246, -1122648580, 1059475190)\n\t\t + W(5, -1097965354, 1048517727, 1020884025, -1117941982)\n\t\t + W(6, -1138307987, 1010348245, 1043843262, -1104554020)\n\t\t + W(7, 1042867821, -1105357691, 1021404807, 1026766467);\n\tWS(1057685119, 1067243116);\n\tsum1 = W(0, -1129459555, 1016923756, 1004671913, -1095493364)\n\t\t + W(1, -1098633785, -1112175056, 1046138501, -1131471418)\n\t\t + W(2, -1098308652, -1100618635, -1090418529, -1088191051)\n\t\t + W(3, -1089905135, -1101363479, -1106099897, -1097291652)\n\t\t + W(4, 1053516928, 1049587364, 1057639529, 1065512192) + W(5, 1058720438, 1052631981, 1043712557, 1052947846)\n\t\t + W(6, 1029422892, -1111775882, -1114348966, -1112549294)\n\t\t + W(7, -1103551521, -1111153757, 995391206, 1020473821);\n\tsum2 =\n\t\tW(0, -1131225411, -1130956898, -1103681442, -1077027280) + W(1, -1076028808, 1031803188, -1101294062, 949706042)\n\t\t+ W(2, -1140292462, 1023877693, 1042914798, 1069127322) + W(3, 1071847872, -1103125793, 1043076855, -1132087796)\n\t\t+ W(4, 1018110051, -1137158572, -1224504659, 1043315619)\n\t\t+ W(5, -1120948958, 1043270022, -1113817590, 1015417250)\n\t\t+ W(6, 1018006973, -1128428036, 1020723155, -1147115303) + W(7, 1020554514, -1133954299, 990350747, 1025989218);\n\tWS(-1097928959, -1082976358);\n\tsum1 = W(0, 1027664520, -1123678010, -1106569905, 1052451146)\n\t\t + W(1, -1103556709, 1038567635, -1108799690, 1040222651) + W(2, 1057835343, 1050550727, 1057764410, 1062299789)\n\t\t + W(3, 1049034640, 1057826487, 1041175724, 1060823717)\n\t\t + W(4, -1089326063, -1096462854, -1083721351, -1087127986)\n\t\t + W(5, -1097735566, -1094118206, -1100805265, -1089053734)\n\t\t + W(6, -1108038941, 1032858337, 1021803093, 1042469806)\n\t\t + W(7, -1104920125, 1031016631, -1129264698, -1107162784);\n\tsum2 =\n\t\tW(0, 1059738223, 1048150071, 1052511773, -1080186607) + W(1, -1078381471, -1072132845, -1071450961, -1071397334)\n\t\t+ W(2, -1087082495, -1095900368, -1108343021, 1063110279) + W(3, 1074904245, 1071639576, 1076364217, 1077341373)\n\t\t+ W(4, -1092378156, 1046247330, 1033545850, -1090059649)\n\t\t+ W(5, -1107095292, 1039712953, -1113577164, 1049211915) + W(6, 1034470847, 1025055065, 1045395587, -1094453880)\n\t\t+ W(7, 1053230483, -1103894182, 1032308634, -1120241798);\n\tWS(-1093482751, 1040242403);\n\tsum1 = W(0, -1101135214, -1123956286, -1107524598, -1138012647)\n\t\t + W(1, 1034129455, 1042720691, -1130324184, 998898338) + W(2, 1051279307, 1045008905, 1049489177, -1132973569)\n\t\t + W(3, -1096848358, -1098383795, -1104810279, -1118268600)\n\t\t + W(4, -1160860306, -1106067054, -1101021318, -1113266773)\n\t\t + W(5, 1049504725, 1059206814, 1049756222, 1052043149)\n\t\t + W(6, -1112732162, -1135242283, 1029341500, -1121978915)\n\t\t + W(7, -1098727290, -1102892456, -1104163113, -1099073308);\n\tsum2 = W(0, 1050603120, -1101078445, 1048531671, -1105220793)\n\t\t + W(1, -1091713187, 1034851673, -1122031169, 1020293663)\n\t\t + W(2, 1055811875, -1122671355, 1038805789, 1066111209)\n\t\t + W(3, 1026095418, -1130092003, -1137910742, -1094690648)\n\t\t + W(4, -1086548128, -1087609936, -1088336312, 1071017234)\n\t\t + W(5, -1115602704, -1089969509, -1121274059, 1053616941)\n\t\t + W(6, 1034695967, -1108269543, -1089139562, -1104320030)\n\t\t + W(7, -1100901763, 1049804877, -1103744367, 1054827086);\n\tWS(-1112146683, -1077736475);\n\tsum1 =\n\t\tW(0, -1128590341, -1130792414, -1147973299, -1117834531) + W(1, 1007065251, 1033724609, 1024083798, -1122914526)\n\t\t+ W(2, -1099064529, -1090490649, -1086623314, -1101063739)\n\t\t+ W(3, -1084449173, -1094725676, -1097837640, -1097461352)\n\t\t+ W(4, 1049253908, 1028859267, 1040872136, 1068918685) + W(5, 1059458719, 1057886934, 1044653558, 1048946351)\n\t\t+ W(6, 1039097715, 1017948777, 1025770233, -1115616742) + W(7, -1104116690, -1132647657, 998082042, 1030833130);\n\tsum2 =\n\t\tW(0, 1038545045, -1104316542, -1098913527, 1054073276) + W(1, 990615436, -1111960943, -1127436605, -1131799749)\n\t\t+ W(2, 1044965772, -1073797636, -1069601753, 1079919017)\n\t\t+ W(3, 1065620582, -1103381017, 1039512539, -1105195767) + W(4, 1038508364, -1092377302, 1050236814, 1044931722)\n\t\t+ W(5, 1034922622, 1033398315, -1113162193, 1039327537) + W(6, 1032278560, -1115941315, -1109127211, 1042591612)\n\t\t+ W(7, 997021068, 1042220416, -1138197651, -1121388557);\n\tWS(-1090505151, -1074550453);\n\tsum1 = W(0, -1112838599, 1028498739, 1023419227, -1117182312)\n\t\t + W(1, 1018948122, -1126145258, 1024711581, -1125422420)\n\t\t + W(2, -1106878250, -1103427629, -1088602192, -1088941275)\n\t\t + W(3, -1087514842, -1096920942, -1096615233, -1095073209)\n\t\t + W(4, 1057615003, 1042960070, 1063645564, 1053033883) + W(5, 1058641540, 1043052986, 1050742275, 1053972531)\n\t\t + W(6, -1131143051, 1023192930, -1096958907, 1048242260)\n\t\t + W(7, -1098164287, 1045189988, -1105551137, 1026824959);\n\tsum2 = W(0, 1051549752, 1081443218, 1072492444, 1048388769)\n\t\t + W(1, 1035162847, -1139079606, -1121149576, -1123800689)\n\t\t + W(2, 1021553919, -1111116920, -1073777225, -1067599847)\n\t\t + W(3, -1096587672, 1029232562, -1115288719, 1042218632)\n\t\t + W(4, -1106404197, 1044837835, -1113676512, -1089379201)\n\t\t + W(5, -1109546151, 1030543674, -1122606689, -1125599605)\n\t\t + W(6, 1031994963, -1113046369, 1032624041, 1025956540)\n\t\t + W(7, 1027498280, -1132168419, 1034044071, -1115044631);\n\tWS(1051119487, 1041244378);\n\tsum1 = W(0, -1124974044, 1028120435, 1048876359, 1037118035)\n\t\t + W(1, -1131477080, -1118427428, -1120234265, -1125985859)\n\t\t + W(2, -1137238551, -1113671305, 1036964902, 1061504071) + W(3, 1047204942, 1050660570, 1030267847, 1049717597)\n\t\t + W(4, -1116593698, -1103177170, -1099611151, -1104164974)\n\t\t + W(5, -1081804989, -1114906180, -1098831475, -1103929310)\n\t\t + W(6, -1121323393, 1033078132, -1156053771, -1129960608)\n\t\t + W(7, 1048068278, 1011539382, 1035846233, -1115091743);\n\tsum2 = W(0, 1018090488, -1104952272, -1105226064, -1128161694)\n\t\t + W(1, -1134153828, 1024328280, -1118410723, -1117225997)\n\t\t + W(2, 1027537220, 1048078363, 1055192952, -1102612387)\n\t\t + W(3, -1102761937, -1101688104, 1035228556, 1016223417)\n\t\t + W(4, 1019973834, -1095697091, -1101823824, 1074095781)\n\t\t + W(5, -1074759173, 1063478353, -1092594125, 1041310640)\n\t\t + W(6, -1117503915, 1045164128, -1106818318, -1087428157)\n\t\t + W(7, 1061969021, -1092430375, 1050476000, -1110796930);\n\tWS(1062303263, 1031082743);\n\tsum1 = W(0, -1113216195, -1099215391, 1052151297, 1026092610)\n\t\t + W(1, 1051942565, -1098039588, -1101893697, 1008063218) + W(2, 1050954912, 1012178225, 1065129152, 1047492794)\n\t\t + W(3, 1063700475, 1049517720, 1028060738, 1054989200)\n\t\t + W(4, -1095964628, -1095180416, -1088785601, -1089641431)\n\t\t + W(5, -1089295544, -1091476104, -1102410709, -1096414030)\n\t\t + W(6, -1121789260, 1027015379, 1041954507, -1107401421)\n\t\t + W(7, 1049634587, -1112964196, 1035520455, -1114231491);\n\tsum2 = W(0, 1033145987, -1111827051, -1103256184, -1063595607)\n\t\t + W(1, -1101985731, -1141099147, -1136421288, 1030655939)\n\t\t + W(2, -1175661064, -1152013649, 1050523165, 1084357731)\n\t\t + W(3, 1048919805, 1025442742, -1145624409, -1133270551)\n\t\t + W(4, 1021827842, -1104895942, 1034611383, -1094652398)\n\t\t + W(5, 1029250458, -1102082303, 1021034188, -1121842648)\n\t\t + W(6, -1165845202, -1187919119, -1125020091, 1042933311)\n\t\t + W(7, -1108910008, 1040766920, -1126731425, 1017996705);\n\tWS(1057958943, -1104691893);\n\tsum1 =\n\t\tW(0, -1111014615, -1128240917, -1146251723, -1095236657) + W(1, 1047913107, -1103203951, 1033356080, 1023941889)\n\t\t+ W(2, -1105424217, 1046008396, -1090082375, 1054329938) + W(3, 1003615948, 1013130820, 1044802714, -1101796865)\n\t\t+ W(4, 1044401084, -1100901945, 1057785284, 1040293502) + W(5, -1099597392, 1051440085, -1102604718, 1036253756)\n\t\t+ W(6, -1118336456, 1038452148, -1119525902, -1093887914)\n\t\t+ W(7, 1045607070, -1107674167, -1113361665, 1037874639);\n\tsum2 =\n\t\tW(0, 1010987018, -1105807463, -1102396693, 1054217500) + W(1, -1123211893, 1029628166, -1106898625, 1028744914)\n\t\t+ W(2, 1041119120, -1111572952, -1117220749, -1087890507)\n\t\t+ W(3, 1070205457, -1101117061, -1113015450, -1121743361)\n\t\t+ W(4, -1110188142, 1045029856, 1057260834, -1087358521)\n\t\t+ W(5, -1081682663, 1051101181, 1042553654, -1135525482) + W(6, -1127404253, 1029477872, 1019931869, 1056265374)\n\t\t+ W(7, -1091128546, -1124058781, 1025549544, 992401866);\n\tWS(1063883327, -1171419961);\n\tsum1 = W(0, -1131801844, 1021098616, 1022023532, -1121742227)\n\t\t + W(1, -1090925859, 1024490200, -1102607801, -1123544461)\n\t\t + W(2, 1049833398, -1123871229, 1009731296, 1044941350) + W(3, 1060653970, 1043051923, 1048967870, 1050859794)\n\t\t + W(4, -1102183011, -1097479398, 1056730033, 1041013425)\n\t\t + W(5, -1095529687, -1097251239, -1104750961, -1097963532)\n\t\t + W(6, -1101850371, 1031224740, -1123343997, -1127214008)\n\t\t + W(7, -1107029405, 1042080318, -1107657120, 1009310536);\n\tsum2 = W(0, -1106082604, 1041248381, -1132935321, -1106587714)\n\t\t + W(1, -1104172881, -1118244665, -1115368488, -1139264801)\n\t\t + W(2, 1047581965, -1108094251, -1111186257, 1050591326)\n\t\t + W(3, 1039028256, 1025922877, -1111866155, -1104769894)\n\t\t + W(4, -1097195715, -1105642610, 1042983438, 1048334662)\n\t\t + W(5, 1046273630, -1128737701, 1044426238, -1122157893)\n\t\t + W(6, -1113941985, -1131232309, 1050509566, -1103031697)\n\t\t + W(7, -1127691207, -1115007353, -1112751356, 1031938310);\n\tWS(1064944927, 1037595256);\n\tsum1 = W(0, -1116864018, 1023806679, 1017115436, 1009660557)\n\t\t + W(1, 1028149000, -1109610248, -1148661421, -1102752831)\n\t\t + W(2, -1089228760, -1095304482, -1087165700, -1086682215)\n\t\t + W(3, -1088874517, -1099761351, -1116139780, -1131587330)\n\t\t + W(4, 1063040538, 1057549004, 1060715233, 1064233001) + W(5, 1056983460, 1052917089, 1041500021, 1045020525)\n\t\t + W(6, -1107296590, -1106875789, -1103245163, -1106392275)\n\t\t + W(7, -1132085516, -1107160974, -1129006079, -1152394658);\n\tsum2 =\n\t\tW(0, 1045832950, -1110716731, 1025147898, -1098226948) + W(1, -1099749141, -1098250414, 1042544569, -1089530617)\n\t\t+ W(2, -1084008560, 1049995423, -1089165996, 1066542501) + W(3, 1049362032, 1055260506, -1086997229, 1067285885)\n\t\t+ W(4, -1084775302, -1093173621, 1054478967, 1068786857)\n\t\t+ W(5, 1047038722, -1126019654, -1127724076, -1088213452)\n\t\t+ W(6, 1058474163, -1102301410, -1128684365, 1031931484)\n\t\t+ W(7, -1091779956, -1105326436, 1053449115, -1090548395);\n\tWS(-1082101344, -1089856493);\n\tsum1 = W(0, 1050831902, -1112019073, 1030303546, -1129997454)\n\t\t + W(1, -1110327174, -1117704076, -1112251093, -1131596868)\n\t\t + W(2, -1105691402, 1030717682, 1055521064, 1064695661) + W(3, 1061962758, 1058754169, 1047731210, 1056158989)\n\t\t + W(4, -1101015969, -1098775681, -1097748442, -1085520515)\n\t\t + W(5, -1086646154, -1089610799, -1093958751, -1094349907)\n\t\t + W(6, 1029275441, -1120813832, -1139280937, 965412887)\n\t\t + W(7, 1041358014, -1122362798, 1028938947, 1016935004);\n\tsum2 =\n\t\tW(0, -1065128139, -1076824095, 1067439244, 1079260085) + W(1, 1056740148, -1103928218, -1135208116, 1039164015)\n\t\t+ W(2, -1101130808, 1050826865, 1046966330, 1049869634) + W(3, 1051236860, -1114183173, 1033256035, -1104627926)\n\t\t+ W(4, 1034565987, -1109355365, -1109830496, -1112614302)\n\t\t+ W(5, -1123646153, 1051726295, 1035002893, -1109091637) + W(6, -1119435550, 1023890205, 1012867020, 1015248786)\n\t\t+ W(7, -1122661198, -1136992532, -1119472799, -1136910724);\n\tWS(-1090711679, 1035967541);\n\tsum1 = W(0, -1111795270, 1015715144, -1118064815, -1124564760)\n\t\t + W(1, 1033380937, 1041725555, 1039158191, 1036708611)\n\t\t + W(2, -1104454427, 1029360119, -1084526809, -1083278737)\n\t\t + W(3, -1083950349, -1091233609, -1102432923, -1097260861)\n\t\t + W(4, 1050513973, 1050454265, 1063535365, 1060834888) + W(5, 1050327592, 1054941014, 1040417584, 1042099839)\n\t\t + W(6, 1030482278, -1138269301, -1132452908, 1007072853)\n\t\t + W(7, 1028355007, 1029566323, -1140656289, 1035976950);\n\tsum2 = W(0, 1030795338, -1104698754, -1086482027, -1086674278)\n\t\t + W(1, 1048689193, -1101252049, -1127107620, -1097010897)\n\t\t + W(2, -1099705557, -1088930785, -1087114188, 1063363970)\n\t\t + W(3, 1066258058, 1055138353, -1113111809, 1050900036)\n\t\t + W(4, -1100315818, -1129318753, -1088371087, 1059258270)\n\t\t + W(5, 1052412907, 1035784301, -1107499570, 1046424313) + W(6, -1124401732, 1047822852, 1041847465, 1007827043)\n\t\t + W(7, -1114489829, 1039056173, 1036879119, -1112035485);\n\tWS(-1098505599, -1075865372);\n\tsum1 = W(0, -1119631078, 1024188415, -1125460739, -1113150415)\n\t\t + W(1, -1098117352, 1028789822, -1115205937, -1134520549)\n\t\t + W(2, -1131715643, 1032178901, 1056750314, 1055366257) + W(3, 1063530169, 1038512989, 1036256496, 1042179631)\n\t\t + W(4, -1121509433, -1128987132, -1131145214, -1096447994)\n\t\t + W(5, -1086227497, -1117796833, 1016180195, 1032402616)\n\t\t + W(6, -1113178620, 1024883696, -1114020928, -1102601578)\n\t\t + W(7, -1111953177, -1101470933, -1141768534, -1114797153);\n\tsum2 = W(0, -1098762498, -1112826554, -1099883844, -1090598021)\n\t\t + W(1, 1060690639, -1101866176, 1051055486, -1111565268) + W(2, 1039073687, 1047439072, 1024348972, 1068429254)\n\t\t + W(3, -1078855206, 1052294530, -1095975199, 1034134076) + W(4, 1035541163, 1032611741, 1050751610, 1066295533)\n\t\t + W(5, -1081223881, -1097770507, -1126362074, -1121819739)\n\t\t + W(6, 1030962008, 981436096, 1048715774, -1089341195) + W(7, -1094541311, 1041458546, 1044471119, 1024624177);\n\tWS(1057165023, -1106509195);\n\tsum1 = W(0, -1110663097, 1023353031, 1009641338, -1116674588)\n\t\t + W(1, -1121179137, -1127866586, 1019708412, -1105922998)\n\t\t + W(2, -1090373040, -1094296089, -1087820187, -1090764772)\n\t\t + W(3, -1101809276, -1095695571, -1097119704, -1088811352)\n\t\t + W(4, 1057389257, 1051297995, 1064196683, 1064337073) + W(5, 1058239248, 1053143796, 1049182394, 1042633923)\n\t\t + W(6, 1036322023, -1110472134, -1103525103, -1108191858)\n\t\t + W(7, -1105116828, -1130262917, -1117889432, 1047174317);\n\tsum2 = W(0, -1112942365, 1048482322, -1100072975, -1097118067)\n\t\t + W(1, 991349250, -1108096389, 1053525633, 1000921969) + W(2, -1106822390, -1115190843, 1034045428, 1068163863)\n\t\t + W(3, 1063618710, -1107942623, -1090492700, -1076676559)\n\t\t + W(4, -1102090209, 1042851055, -1103979279, 1056641862)\n\t\t + W(5, -1105663689, 1049912171, -1130278628, -1111476815)\n\t\t + W(6, 1043730009, 1035412483, -1105576965, 1028572696)\n\t\t + W(7, -1113934073, -1105853831, 1039916278, -1106999228);\n\tWS(-1086493375, -1079336981);\n\tsum1 = W(0, 977772865, -1123924042, -1109993624, -1107908519)\n\t\t + W(1, 1036636329, 1038934102, 1034769240, -1099048778)\n\t\t + W(2, -1102983835, -1108602044, 1041059645, -1094902379)\n\t\t + W(3, -1083260999, -1084987377, -1102484540, -1108629750)\n\t\t + W(4, 1026410857, -1098146918, -1106936850, 1061697492) + W(5, 1061962303, 1057432285, 1051050960, 1050989872)\n\t\t + W(6, 1015269519, 1049374456, 1036994068, 1041174790)\n\t\t + W(7, -1103125248, -1125738921, -1130650164, 1040252563);\n\tsum2 = W(0, -1104970914, 1018133697, 1040842491, -1093587851)\n\t\t + W(1, -1093237537, -1102375178, -1099804326, 1054809337)\n\t\t + W(2, 1042634099, -1097448347, 1055662701, 1074010545)\n\t\t + W(3, -1089724369, -1099392752, 1049771835, -1092159031)\n\t\t + W(4, 1052960430, -1108255972, 1062139198, 1064732329)\n\t\t + W(5, -1083390778, 1025575413, -1104347883, -1096888027)\n\t\t + W(6, -1112577728, -1096543501, -1090800341, -1093194079)\n\t\t + W(7, 1015865539, 991452982, -1126119433, 1028159711);\n\tWS(-1088469887, 1068090411);\n\tsum1 = W(0, -1113244581, -1123900274, 1049496346, -1110903326)\n\t\t + W(1, -1119953152, 1031904934, 1034227191, 1025939062) + W(2, 1001301201, 1023861926, -1082959002, 1050701400)\n\t\t + W(3, 1060902689, 1043052181, 1043817559, 1038313117) + W(4, -1115331947, 1035790701, 1057295251, 1048296635)\n\t\t + W(5, -1081663133, -1113327662, -1110964279, 1034951606)\n\t\t + W(6, -1124374314, -1105829923, -1096521435, -1119292644)\n\t\t + W(7, 1048590454, 1027826066, -1106468266, -1117293966);\n\tsum2 =\n\t\tW(0, 1046922708, 1033420508, -1112865289, -1096930035) + W(1, -1101802092, 1017341032, 1036773342, -1107450994)\n\t\t+ W(2, -1106472578, -1114867820, -1087802072, 1058113813)\n\t\t+ W(3, 1050476308, -1103417477, -1105807138, 1033379085) + W(4, 1033443280, -1109208012, 1020845388, 1048730658)\n\t\t+ W(5, 1059721445, -1107242470, -1136542442, -1104249476)\n\t\t+ W(6, -1111979165, 1050643686, -1101832932, -1129026525)\n\t\t+ W(7, -1104558996, -1135034393, 1037376476, 1023773731);\n\tWS(1052578175, -1092643724);\n\tsum1 =\n\t\tW(0, -1106584961, 1030893452, 1033955624, 1037358070) + W(1, 1036710537, -1128189432, -1118327615, -1129060558)\n\t\t+ W(2, -1102735475, -1100779014, -1082492039, -1086815439)\n\t\t+ W(3, -1088009424, -1095075429, -1106908643, -1102841939)\n\t\t+ W(4, 1053304083, 1049737317, 1060101900, 1065824329) + W(5, 1041943502, 1057719155, 1051335460, 1036237087)\n\t\t+ W(6, 993436516, 1037510015, -1101687426, -1103135573) + W(7, 1029815263, 1040440469, -1106074638, 1027836379);\n\tsum2 = W(0, -1115440098, 1029771501, 1018065220, 999202537) + W(1, 1036811205, -1111720654, -1125064265, 1019498859)\n\t\t + W(2, 1015710974, 1033337736, -1094728975, 1039453548) + W(3, 1050012979, 1032576025, -1103861773, 1040788513)\n\t\t + W(4, 1041402597, -1114856806, 1037520917, 1064530169)\n\t\t + W(5, -1094040689, 1073761042, 1063409170, -1090935047)\n\t\t + W(6, -1130229431, 1034787000, -1082769104, -1074584982)\n\t\t + W(7, -1090370130, 1032162938, -1105633547, 1034133532);\n\tWS(-1104397694, 1058392920);\n\tsum1 = W(0, 1012876448, -1126111401, -1142522206, -1115125816)\n\t\t + W(1, -1103048369, 999529969, 1016404519, -1117545451) + W(2, 1051523414, 1050625047, 1043902243, 1063861817)\n\t\t + W(3, 1056801600, 1053396405, 1042081404, 1054067798)\n\t\t + W(4, -1094911217, -1106828476, -1089440467, -1093833780)\n\t\t + W(5, -1087921625, -1107310585, -1104958721, -1097217844)\n\t\t + W(6, 1023486907, 1033392977, -1119682235, 1019625524)\n\t\t + W(7, -1096529922, 1015514383, 1039287934, -1113687714);\n\tsum2 = W(0, -1130009672, 1027809153, -1106384796, 1051460883)\n\t\t + W(1, -1104521112, 1033821004, -1112259960, 1028508475)\n\t\t + W(2, 1013515790, -1106180134, 1042067106, -1094561503)\n\t\t + W(3, 1032257325, -1124940473, -1168427353, -1120291522)\n\t\t + W(4, 1013756514, 1023886448, 1052609397, 1078005003) + W(5, 1072194837, -1094906083, 1046140857, -1140922271)\n\t\t + W(6, -1153587550, 1024050371, -1094102229, -1070026280)\n\t\t + W(7, -1075632186, 1053282219, -1098407638, 1033718481);\n\tWS(1063327007, -1121248448);\n\tsum1 = W(0, 1017612078, 1043030576, 1039059525, -1115811128)\n\t\t + W(1, -1095615210, -1099887459, -1140707177, -1120397682)\n\t\t + W(2, -1113236667, -1096763312, -1091103118, 1053297652)\n\t\t + W(3, 1063340055, 1054079124, 1041492110, -1126620524) + W(4, 1042967269, 1049218219, 1058517677, 1033504868)\n\t\t + W(5, -1082785422, -1088587000, -1101731443, 1029718569)\n\t\t + W(6, 1035231217, -1115130868, -1107367965, 1009543939)\n\t\t + W(7, 1047061435, 1042859328, -1120288724, -1104957341);\n\tsum2 = W(0, 1037909727, -1098298527, -1126569464, -1106955476)\n\t\t + W(1, -1096969233, -1118592354, 1042882430, 1037216424)\n\t\t + W(2, -1119813454, 1048025725, 1041835288, 1067026849)\n\t\t + W(3, -1085288934, 1042571631, -1117602980, -1116313332)\n\t\t + W(4, -1099212072, 1045330821, -1106229244, 1067954224)\n\t\t + W(5, -1095495837, -1108169766, -1164085849, -1100305071)\n\t\t + W(6, 1032936033, -1097673782, -1109675885, -1092590328)\n\t\t + W(7, 1004812688, -1096486003, 1034064234, 1045459772);\n\tWS(-1114652667, 1051933605);\n\tsum1 = W(0, 1026700110, 1037508767, -1128033780, 1034155035)\n\t\t + W(1, -1102462575, 1024543544, -1147042251, 1032374633)\n\t\t + W(2, -1102428549, -1105027032, -1106431647, 1043250735)\n\t\t + W(3, 1059213449, 1038435705, 1038748492, 1016229610) + W(4, 1043087092, 1048715843, 1062796090, -1089603768)\n\t\t + W(5, -1090890112, -1106007014, -1119096106, -1104514210)\n\t\t + W(6, -1109604752, -1113263092, -1098797270, 1023780992)\n\t\t + W(7, -1112475685, -1121524254, 986589794, 1007891224);\n\tsum2 = W(0, -1129141996, -1106880495, 1031191254, -1102244397)\n\t\t + W(1, -1101040753, 1046080919, -1112883155, 1031234782)\n\t\t + W(2, 1043866561, -1096921120, -1123077406, 1064276171)\n\t\t + W(3, 1061828176, -1095750750, 1042185570, -1128566730)\n\t\t + W(4, 1029019378, -1092013580, -1086673510, 1064706574)\n\t\t + W(5, -1113110329, -1091369762, 1042119352, -1105256367)\n\t\t + W(6, 1050935854, -1111274547, -1096956427, -1115781076)\n\t\t + W(7, -1106057540, 1029696990, -1113619581, 1012473722);\n\tWS(1059465279, -1101420399);\n\tsum1 = W(0, 1033088680, -1124176798, 1014063089, 1035053989)\n\t\t + W(1, 1045820204, 1038292302, -1115007182, -1131477704) + W(2, 1043444330, 1000916382, 1057398923, 1034190184)\n\t\t + W(3, -1087528660, 1036787650, 1027988010, 1042732770)\n\t\t + W(4, -1101682761, -1126261266, -1089602004, 1039770557)\n\t\t + W(5, 1057859064, -1106381771, -1104773247, -1102530758)\n\t\t + W(6, -1124073107, -1118729178, 1032573720, -1114558729)\n\t\t + W(7, -1096323421, 1041172764, 1024683157, 1029511616);\n\tsum2 = W(0, -1093261173, -1100338012, 1016590929, -1160318928)\n\t\t + W(1, -1111261089, 1032510827, 1037987285, -1106728517)\n\t\t + W(2, -1081648717, -1096055698, 1049309077, 1060463741)\n\t\t + W(3, -1123677731, 1042247124, 1035681279, 1035240533) + W(4, -1107343332, 1016623505, 1058913944, 1061699617)\n\t\t + W(5, -1095509190, 988275856, -1111758125, 979544481) + W(6, 1020947921, -1121572837, 1035038069, -1121635630)\n\t\t + W(7, -1116667427, -1130213341, 1033159595, -1112486763);\n\tWS(1060076127, 1072958059);\n\tsum1 = W(0, -1103118654, 1043365506, -1115420333, 1031523031)\n\t\t + W(1, 1033412302, 1032254402, 1031863013, -1127560355)\n\t\t + W(2, -1090537599, -1097065432, -1086314390, -1088162978)\n\t\t + W(3, -1089193875, -1091959462, -1111327644, -1086013855)\n\t\t + W(4, 1060753617, 1046496158, 1060760746, 1055888777) + W(5, 1052645932, 1054239287, 1044639698, 1056703661)\n\t\t + W(6, -1129584897, 1025963976, -1106610556, 1040410096)\n\t\t + W(7, -1138875303, 1032279415, 1032182482, 1044337291);\n\tsum2 = W(0, 1034238418, 1026722605, -1123083006, 1044566349)\n\t\t + W(1, -1114043742, 1029836970, -1124457715, -1112207598)\n\t\t + W(2, -1122429687, -1113650971, -1101416602, -1095747837)\n\t\t + W(3, 1044375513, 1032414162, -1132025334, -1112893824) + W(4, 1038471498, 1047703041, 1050567163, 1073798913)\n\t\t + W(5, 1074668356, 1076147895, 1076524889, 1071535287)\n\t\t + W(6, -1105287037, -1106809975, -1099784158, -1077245954)\n\t\t + W(7, -1072322090, -1070521946, -1071353549, -1076180558);\n\tWS(-1114470395, -1114976351);\n\tsum1 = W(0, 1017446070, 1040990896, -1129681934, -1120446036)\n\t\t + W(1, -1097641691, -1110115727, -1110184487, 1033457695) + W(2, 991904560, 1041627584, 1047992216, 1061349282)\n\t\t + W(3, 1061559014, 1055187519, 1045114861, 1047040436)\n\t\t + W(4, 1034584479, -1107221597, -1115356259, -1083497834)\n\t\t + W(5, -1089507216, -1098995485, -1109668803, -1107186297)\n\t\t + W(6, -1110976571, -1099251857, -1111571481, 1039733326)\n\t\t + W(7, 1036247843, -1114440077, -1115117640, -1120899067);\n\tsum2 =\n\t\tW(0, -1093678598, 1002676269, 1055748356, 1044340647) + W(1, -1118111722, -1120084888, 1001595675, -1123642691)\n\t\t+ W(2, -1084434022, 1057422860, 1066493380, -1079318791)\n\t\t+ W(3, -1116089022, 1044705221, -1112694927, 1031220790)\n\t\t+ W(4, 1064533419, 1067683118, -1078621547, -1079939901) + W(5, 1054002901, 1039926847, -1112070298, 1023903081)\n\t\t+ W(6, 1042743345, -1108978134, -1117769694, 1015093293) + W(7, 1049699290, 986467602, -1107171922, 1037662763);\n\tWS(1048785023, 1039045299);\n\tsum1 = W(0, -1104130562, 1043168659, -1117502116, 1029857553)\n\t\t + W(1, 1034838603, 1027207566, 1024393315, -1130533431)\n\t\t + W(2, -1090140327, -1100442863, -1085428843, -1093347651)\n\t\t + W(3, -1089406196, -1093521697, -1120775857, -1086838999)\n\t\t + W(4, 1061197562, 1040570004, 1062309944, 1050495728) + W(5, 1050259320, 1054560318, 1039464338, 1056208688)\n\t\t + W(6, -1133671882, 1032880081, -1102819715, 1038995485)\n\t\t + W(7, -1127149063, 1026681976, 1035433414, 1041402190);\n\tsum2 = W(0, -1118465298, 1011712973, -1128433260, 1029767219) + W(1, 1021354231, 982009542, 1014788797, 1033540398)\n\t\t + W(2, -1142302474, 1025023956, 1041730218, -1097771962)\n\t\t + W(3, -1094677866, -1122047812, 1028525757, 1020814500)\n\t\t + W(4, -1114395216, -1104707163, -1095905892, -1080533844)\n\t\t + W(5, -1075595300, -1072373863, -1072719492, -1078361330)\n\t\t + W(6, 1037219807, 1039062755, 1046574176, 1069124140) + W(7, 1073795377, 1075522683, 1074436097, 1068741752);\n\tWS(1040594174, 1002085105);\n\tsum1 = W(0, 1041861603, -1097746587, 1032164980, 1031577622) + W(1, -1102982955, 1044101411, 1034678964, 1026039088)\n\t\t + W(2, -1113198522, 1055071640, -1088672026, 1050744420)\n\t\t + W(3, 1057599999, -1103363988, 1036351259, 1034848362)\n\t\t + W(4, -1137236930, -1100468781, 1047493466, -1105375081)\n\t\t + W(5, -1087672398, 1050064611, -1102178050, 1033863059)\n\t\t + W(6, 1041085614, -1121524679, -1109849488, 1048884604)\n\t\t + W(7, -1113508732, -1098107838, 1043931332, -1106488144);\n\tsum2 = W(0, -1099743490, 1035577370, -1115293072, -1102421679)\n\t\t + W(1, 1038726510, 1032210717, -1107407193, -1120037205) + W(2, 1011906269, 1026663055, 1057096352, 979639118)\n\t\t + W(3, 1044440375, 1032214892, 1028754425, -1123040177)\n\t\t + W(4, 1037961444, -1152297667, -1095995741, 1050233559)\n\t\t + W(5, 1022991474, -1139108605, -1115369483, -1104470915)\n\t\t + W(6, -1108436276, 991169347, 1045881501, -1097952901)\n\t\t + W(7, -1122343653, 1026937641, -1105994898, 1022469878);\n\tWS(1066613200, -1123971367);\n\tsum1 = W(0, 1021072883, -1125712504, 1041158633, -1106077125) + W(1, 1036847484, 1032267227, 1016782186, 1031886911)\n\t\t + W(2, -1096708150, -1090955664, -1159875842, -1079911082)\n\t\t + W(3, -1093258685, -1103560179, -1089925031, -1106725252)\n\t\t + W(4, 1051074184, 1051398158, 1058934814, 1061682240) + W(5, 1055629981, 1054180539, 1052861897, 1047227273)\n\t\t + W(6, 1026036124, -1108624754, 1040756057, -1090753503)\n\t\t + W(7, -1114271443, 1025501945, -1105228376, 1043536294);\n\tsum2 = W(0, -1120579723, -1104595791, 1060943463, -1081375340)\n\t\t + W(1, 1048074442, 1049316438, -1088959333, 1054216959)\n\t\t + W(2, -1102098813, 1059079365, -1078775742, 1070420847)\n\t\t + W(3, -1106373275, -1084015554, 1065759760, -1087995034)\n\t\t + W(4, -1103583809, 1035649855, 1055196914, 1036446407) + W(5, 1050043459, 1050724789, -1088425301, 1052608338)\n\t\t + W(6, 1039910130, -1110832147, -1115424415, -1092581761)\n\t\t + W(7, -1101688097, -1115969635, 1051846236, -1103333947);\n\tWS(1015488492, -1082266482);\n\tsum1 = W(0, -1115294884, 1041881447, -1116482020, 1028536641)\n\t\t + W(1, 1044897017, -1108243791, 1033207234, 1015505847)\n\t\t + W(2, -1096364772, 1036768790, -1083421327, -1079950554)\n\t\t + W(3, -1088856963, -1096513911, -1104622888, -1096156044)\n\t\t + W(4, 1054950795, 1051075280, 1062057653, 1057564011) + W(5, 1054170231, 1056273768, 1056919206, 1054606378)\n\t\t + W(6, -1109722877, 1018280484, -1105734603, -1124656723)\n\t\t + W(7, -1129161159, -1113027740, -1132093050, 1025701004);\n\tsum2 =\n\t\tW(0, -1103335141, -1087173612, 1045744538, -1106751239) + W(1, -1089877767, 1054342226, 1047940388, -1120076732)\n\t\t+ W(2, -1123809016, -1080484881, 1068142929, 1065979347)\n\t\t+ W(3, 1048007586, -1086806497, -1098712592, -1082944418) + W(4, 1056172663, 1047550056, 1051886373, 1064817240)\n\t\t+ W(5, 1065470183, -1098340366, -1102735881, -1088981287)\n\t\t+ W(6, -1093357581, -1112078382, -1102262951, -1097769156)\n\t\t+ W(7, -1095892093, 1033891425, -1105000175, 1059622670);\n\tWS(-1089551423, -1072840444);\n\tsum1 = W(0, 1041019406, 1022173115, -1113297010, 1015463395) + W(1, -1103473726, 1040814976, 1007312016, 1029778436)\n\t\t + W(2, 1055991358, 1057526040, 1036785718, 1059475300) + W(3, 1056836657, 1050051043, 1050846086, 1053584058)\n\t\t + W(4, -1086576149, -1100702364, -1093552675, -1089572736)\n\t\t + W(5, -1091007140, -1090411145, -1098618125, -1097362556)\n\t\t + W(6, 1027645528, -1141651861, 1016689751, 1031793146)\n\t\t + W(7, -1125097480, 1041821422, 1015074267, -1104623366);\n\tsum2 = W(0, 1069423067, 1072187327, 1072064387, 1072314518) + W(1, 1066704589, 1063804587, 1053139391, 1042659879)\n\t\t + W(2, -1076703167, -1073855626, -1079134619, -1077864031)\n\t\t + W(3, -1081021850, -1081933355, -1094622730, -1099654949)\n\t\t + W(4, 1041694716, -1115348910, -1107764634, -1089838794)\n\t\t + W(5, 1036250076, 1028352388, -1114321992, 1035224325) + W(6, 1032293264, 1008297781, -1120515458, 1037018177)\n\t\t + W(7, -1121141704, 1025803257, -1123317222, 1027779018);\n\tWS(1053893247, -1106302313);\n\tsum1 = W(0, 1031892188, -1110506435, -1127073177, 1047997302)\n\t\t + W(1, 1033243951, -1107646187, -1112186286, -1112631434)\n\t\t + W(2, 1044357278, 1051962248, 1061666784, 1064449402) + W(3, 1041901099, 1053582704, 1037482077, 1050110011)\n\t\t + W(4, -1093335703, -1098499127, -1085429924, -1082436051)\n\t\t + W(5, -1118050391, -1104422127, -1118004236, -1103845867)\n\t\t + W(6, -1124627014, -1121076939, 1038775118, 1042378233)\n\t\t + W(7, -1100759903, -1107823800, -1134911574, -1111029158);\n\tsum2 =\n\t\tW(0, 1045534781, -1136883904, 1027794169, -1091599460) + W(1, -1105954111, -1110353364, 1026306116, -1105327762)\n\t\t+ W(2, -1106914963, -1105365809, -1087950271, 1049402813)\n\t\t+ W(3, 1059435817, 1056244223, -1106437513, 1049633694) + W(4, -1093884354, 1058094665, -1076257974, 1070891205)\n\t\t+ W(5, 1057695328, -1096007662, 1042940020, 1019026622) + W(6, 1048929407, -1099297773, 1057853479, -1101014716)\n\t\t+ W(7, -1088483015, -1116753268, -1107558514, -1111740866);\n\tWS(1043803134, 1031905225);\n\tsum1 = W(0, -1113675573, -1137620096, 1045527725, 1047471777)\n\t\t + W(1, 1025442024, -1101766076, 1041363873, -1104559247) + W(2, 1045344728, 1015450714, 1036603287, 1057861093)\n\t\t + W(3, 1007995990, 1048683192, -1103914745, 1053784172)\n\t\t + W(4, -1093561052, 1039772705, -1087612823, -1131204708)\n\t\t + W(5, -1109713128, -1098589181, -1142310312, -1096789826)\n\t\t + W(6, -1125193272, -1142985628, 1043570724, 1032608022)\n\t\t + W(7, -1125123818, 1017746514, -1137687994, -1120823545);\n\tsum2 = W(0, -1102611800, 1042572795, -1143715563, 1047906835)\n\t\t + W(1, 1034463821, -1097650393, 1044772028, -1105069125)\n\t\t + W(2, 1052608919, -1112317124, 1036000712, 1058925768)\n\t\t + W(3, -1089628524, -1097284017, -1090965565, 1053414419)\n\t\t + W(4, -1092971881, 1050084573, -1099050864, 1062269077)\n\t\t + W(5, -1100033854, -1155008883, 1043620595, -1099181286)\n\t\t + W(6, 1033368250, -1099740129, 1046340985, -1106615878)\n\t\t + W(7, -1143169701, 1034459058, -1102441858, -1145018737);\n\tWS(1065606800, 1041895077);\n\tsum1 = W(0, 1041785011, -1113293285, 1031552121, -1114204019)\n\t\t + W(1, 1014586031, 1032452466, -1103346054, 1025447425) + W(2, 1041397665, 1050236482, 1063682744, 1055253222)\n\t\t + W(3, 1057927896, 1054837340, 1043307490, 1058487624)\n\t\t + W(4, -1108226929, -1089967688, -1092426598, -1085544687)\n\t\t + W(5, -1092878524, -1094102329, -1097746379, -1098262983)\n\t\t + W(6, -1113822832, -1105474774, 1045393909, -1106251932)\n\t\t + W(7, 1018782386, -1135035573, -1114747425, -1119448485);\n\tsum2 = W(0, 1038489223, 1032193624, -1137158564, 1048862753)\n\t\t + W(1, -1107218869, -1112577633, 1034028859, -1110240510)\n\t\t + W(2, -1094743304, -1106563024, 1029053577, -1103121169)\n\t\t + W(3, 1018988618, 1015522148, -1107822714, 1017646246)\n\t\t + W(4, -1079775068, -1075431018, -1075905408, 1061439417)\n\t\t + W(5, 1061842524, 1055667456, 1032002642, 1047594841) + W(6, 1069957645, 1074314813, 1067854461, -1090496129)\n\t\t + W(7, -1083145579, -1093776696, 1038458963, -1100108785);\n\tWS(1050857279, 1035401177);\n\tsum1 = W(0, 1029370009, -1121232094, -1118971861, -1116554354)\n\t\t + W(1, -1102118870, 1035949272, -1118591397, -1155732684)\n\t\t + W(2, 1049972466, 1045749679, 1054737744, 1064433520) + W(3, 1057059356, 1055161550, 1035470985, 1050840570)\n\t\t + W(4, -1100844155, -1097541146, -1089471141, -1088203652)\n\t\t + W(5, -1089223685, -1095333099, -1098430605, -1105548665)\n\t\t + W(6, -1114359850, -1119608387, 1032044074, 1039513726)\n\t\t + W(7, 1028806533, 1039358524, -1114373271, -1113669781);\n\tsum2 =\n\t\tW(0, 1034282103, -1111920318, 1023538768, -1133376386) + W(1, -1119100907, 1014776166, -1117007635, -1121555310)\n\t\t+ W(2, 1040723224, -1118965841, -1128437695, 1038672881) + W(3, 993338648, 1050613235, -1108740075, 1040276790)\n\t\t+ W(4, 1028955705, 1031483971, 1043259383, -1148076972) + W(5, -1084940093, 1050550535, -1098463376, 1054296012)\n\t\t+ W(6, -1104697256, -1123254751, 1034554870, -1078609243)\n\t\t+ W(7, -1075024478, -1100774866, 1069274341, 1072481706);\n\tWS(1059068159, -1095269543);\n\tsum1 = W(0, 1022243158, -1126585055, -1113503115, 1034732162) + W(1, 1029695369, 1045709362, 1005846771, 1049870212)\n\t\t + W(2, 1058751902, 1052633434, 1061437964, 1062365313) + W(3, 1054753811, 1047783152, 1043895001, -1119990530)\n\t\t + W(4, -1083015108, -1095802212, -1083734386, -1087136899)\n\t\t + W(5, -1089074173, -1093733821, -1096742887, -1106170901)\n\t\t + W(6, 1040310153, 1009201364, 1040208083, -1116554445)\n\t\t + W(7, 1044292534, -1141695574, 1042140272, -1106848091);\n\tsum2 = W(0, -1110453349, -1118716929, -1111084235, 1027079271)\n\t\t + W(1, 1058163522, 1060433363, 1058751114, -1077532089) + W(2, 1048158098, -1117235638, 1037169053, 1044450691)\n\t\t + W(3, -1086959067, -1096141012, -1102281652, 1061563184)\n\t\t + W(4, 1064329884, -1122504669, 1037379653, -1106426334)\n\t\t + W(5, -1081956377, -1081432626, -1086790317, 1073667932)\n\t\t + W(6, -1096499673, 1023790996, 1035642078, -1103100998)\n\t\t + W(7, 1059064502, -1109003581, 1048822766, -1089552462);\n\tWS(-1079238176, -1098575359);\n\tsum1 = W(0, -1122061272, 1012614613, 1049213476, -1091368434)\n\t\t + W(1, 1050034455, -1115399887, -1105000541, 1040609063)\n\t\t + W(2, 1040856756, -1098659523, 1050219649, 1046432350)\n\t\t + W(3, -1092787824, 1045840143, -1102913028, -1104981396)\n\t\t + W(4, -1106993315, 1049053518, -1088887964, 1061247706)\n\t\t + W(5, -1113029435, -1096901418, 1045569657, -1106428832)\n\t\t + W(6, -1113276757, -1110111537, 1048270483, -1098550683)\n\t\t + W(7, 1053252708, -1120030007, -1144293604, 1037272948);\n\tsum2 = W(0, 1035271628, 1033447544, -1113618952, -1104023060)\n\t\t + W(1, 1022009109, -1104458884, 1044684178, -1104406640)\n\t\t + W(2, -1096995906, 1032410306, 1053850685, 1054515359)\n\t\t + W(3, -1114408860, 1030897990, -1115683354, -1106540716)\n\t\t + W(4, -1097624644, 1048740225, -1109777102, 1058355960)\n\t\t + W(5, -1139294461, -1116975083, -1099524388, 1036671037)\n\t\t + W(6, 1051183735, -1095652467, 1037584786, -1116173683)\n\t\t + W(7, -1096371453, 1030595307, -1117706649, -1108415342);\n\tWS(1064155455, 1041078114);\n\tsum1 = W(0, -1114884791, 1038026665, 1040569148, -1123095214)\n\t\t + W(1, -1113346810, -1098688777, -1106297864, 1033022404)\n\t\t + W(2, -1133388468, -1103926126, -1088265213, -1088521037)\n\t\t + W(3, -1094483240, 1052099081, 1038941559, 1027852876) + W(4, 1031759625, 1051074474, 1049866386, 1060913876)\n\t\t + W(5, 1044072016, 1034732568, -1138713347, 1019301565)\n\t\t + W(6, -1116707016, -1135572861, -1145284192, -1110455500)\n\t\t + W(7, -1116167073, 1029730485, 1017022612, 1028095637);\n\tsum2 =\n\t\tW(0, 1027468398, -1111732215, -1149402831, -1136133524) + W(1, 1058132410, -1084703700, -1103172541, 1011948492)\n\t\t+ W(2, -1120484835, -1115316427, 1042551085, -1101059653)\n\t\t+ W(3, 1067179636, -1093846517, 1015696434, -1119207903) + W(4, 1033713911, -1113615213, 1015721118, 1005178376)\n\t\t+ W(5, -1112798365, 1036573120, 1035924289, -1106241198)\n\t\t+ W(6, 1037828351, -1102210431, 1027887653, -1105049969)\n\t\t+ W(7, 1033627060, -1112780439, 1025169534, 1034168377);\n\tWS(1056869759, -1097268032);\n\tsum1 = W(0, 1018133293, -1105532941, 1027243330, -1097428310)\n\t\t + W(1, -1099204213, -1133851766, -1138393927, -1118550618)\n\t\t + W(2, 1036411431, 1007771751, -1116024394, 1032024955)\n\t\t + W(3, -1130187397, 1034973653, -1114469768, -1118964077)\n\t\t + W(4, 1039633317, 1034605623, 1050783724, 1010531964) + W(5, 1045069064, 1044277428, 1046520720, 1036629184)\n\t\t + W(6, -1111689725, -1107937040, -1105991139, -1109581452)\n\t\t + W(7, -1103861656, 1044990678, -1106353867, -1155661924);\n\tsum2 =\n\t\tW(0, 1031819015, -1113612713, 1040659447, -1113225510) + W(1, 1023788280, -1115035325, 1009487418, 1023947578)\n\t\t+ W(2, 1040620760, 1045122152, -1122637452, -1080510307)\n\t\t+ W(3, -1103769905, 1050277803, 1041168723, -1112728330)\n\t\t+ W(4, -1130428603, -1113774176, -1093905874, -1073670430)\n\t\t+ W(5, 1040925011, 1074164392, 1056579340, 1044922942) + W(6, -1130628701, -1118722775, 1015363301, -1129641903)\n\t\t+ W(7, 1045479736, 997650792, 1043373785, -1122436477);\n\tWS(1064095487, 1025785067);\n\tsum1 = W(0, 1026371284, -1097495743, 1050378694, 1008396404)\n\t\t + W(1, 1042871873, -1103138663, -1136206974, 1034556564)\n\t\t + W(2, -1106851535, 1042476562, -1104849584, -1085976658)\n\t\t + W(3, -1097042470, -1109264236, 1035073279, -1094929447)\n\t\t + W(4, -1128892272, 1049973404, -1115675316, 1058008769)\n\t\t + W(5, -1098054097, 1052615848, 1037088776, 1045135411) + W(6, 1040514533, -1103190740, 1040022019, 1040395090)\n\t\t + W(7, 1050097558, -1102548473, -1157051795, 1023679636);\n\tsum2 = W(0, -1124722923, -1114618025, 1043439029, 1036363299)\n\t\t + W(1, -1096133271, 1049502378, -1106999272, 1013819494)\n\t\t + W(2, 1033420628, -1100145939, -1115804833, 1057589449)\n\t\t + W(3, 1053618149, -1091358477, 1030436134, -1119548384)\n\t\t + W(4, -1105442746, 1047309531, -1084852425, -1089136554)\n\t\t + W(5, 1028964970, 1056312267, -1100909906, 1043379377) + W(6, 1029168594, 1048079041, -1101613108, 1042227257)\n\t\t + W(7, 1045151454, 1041752672, 1036382707, -1113267324);\n\tWS(1060109055, 1023402244);\n\tsum1 = W(0, 1039025762, -1109278395, -1125210976, -1107337262)\n\t\t + W(1, -1119314274, 1038278743, -1120902815, 1024999351) + W(2, 1051909299, 1054481389, 1061074499, 1069080830)\n\t\t + W(3, 991275263, 1049054227, 1043342663, 1051802331)\n\t\t + W(4, -1098089231, -1093104548, -1087624466, -1092709234)\n\t\t + W(5, -1085745760, -1093068092, -1102438460, -1098889074)\n\t\t + W(6, -1107880995, 1018380380, -1167447218, -1119879878)\n\t\t + W(7, 1030906608, 1028271716, -1122586985, -1107737008);\n\tsum2 = W(0, 995982518, 1033194341, 1038373562, 1040171687) + W(1, -1108098969, 1027047733, -1147696971, 1033796110)\n\t\t + W(2, 1035578813, -1121421677, 1046888388, -1103362299)\n\t\t + W(3, 1050255581, -1096418856, 1042040695, -1116244525)\n\t\t + W(4, -1118279893, -1114972659, 1069469835, 1078927590)\n\t\t + W(5, -1065023683, -1082214759, 1045909115, -1112457727)\n\t\t + W(6, -1115504751, -1108849613, 1041670894, 1050450381)\n\t\t + W(7, -1097423961, -1114805949, 964966831, 1025540676);\n\tWS(-1092049407, -1078216845);\n\tsum1 = W(0, 1019093687, 1030002432, -1100550858, 1055647027)\n\t\t + W(1, -1103872766, 1041444210, -1115845919, 1042339236) + W(2, 1057591089, 1050969332, 1056027116, 1063070242)\n\t\t + W(3, 1039049940, 1057957242, 1034942714, 1059965491)\n\t\t + W(4, -1089127853, -1096074010, -1082843219, -1088645600)\n\t\t + W(5, -1097545633, -1095349663, -1103665506, -1089209262)\n\t\t + W(6, -1109784091, 1043174565, -1126191805, 1049441628)\n\t\t + W(7, -1097650089, 1024042875, -1123963793, -1105758607);\n\tsum2 = W(0, -1086426610, -1096143108, -1089951657, 1062855195)\n\t\t + W(1, 1068897447, 1074016711, 1075026151, 1074160921) + W(2, 1062347208, 1055082976, 1045157118, 1048769854)\n\t\t + W(3, -1073459143, -1078468086, -1071781830, -1072043968)\n\t\t + W(4, 1053593730, -1101252044, -1111940928, 1037201995)\n\t\t + W(5, -1091098547, -1119407664, 1031118734, -1095931446)\n\t\t + W(6, -1108806990, -1138780047, -1099705126, 1058343455)\n\t\t + W(7, -1094950430, 1046274438, -1128975824, 1035271906);\n\tWS(-1092377983, 1032564911);\n\tsum1 = W(0, 1026968586, 1001025293, -1101464865, -1099757657)\n\t\t + W(1, -1099131534, 1021990836, -1124857771, 1016095931)\n\t\t + W(2, 1051240140, -1135919542, 1047585891, 1046337282) + W(3, 1042168181, 1042765483, 1039475666, 1031087233)\n\t\t + W(4, -1140824311, -1114206145, 1035412731, -1093593858)\n\t\t + W(5, 1042300945, -1105010841, -1129901419, -1150842169)\n\t\t + W(6, -1108814006, 1031981930, -1105914151, -1111723206)\n\t\t + W(7, -1114245051, 1047084274, -1110153104, 1021006644);\n\tsum2 = W(0, -1152594313, -1114711758, -1122222477, -1119994373)\n\t\t + W(1, -1117872135, -1136114154, -1118889611, -1120239593)\n\t\t + W(2, -1103837493, -1102219265, 1021928584, 1043085394)\n\t\t + W(3, -1098150014, -1114380427, -1103586212, 999997765)\n\t\t + W(4, -1119502913, 1049238470, 1051353268, 1069806319)\n\t\t + W(5, 1040245198, -1084770114, -1097500544, 1032457879)\n\t\t + W(6, 1035550709, -1111809635, 1038283603, -1113383091)\n\t\t + W(7, 1038911980, -1106271331, -1109409577, -1130668925);\n\tWS(1066805616, -1146277627);\n\tsum1 = W(0, -1135230785, -1149155717, 1034010150, 1042337650) + W(1, -1127867356, 1036367663, 1011804270, 998521116)\n\t\t + W(2, -1097679853, -1106566573, -1092037473, -1085421897)\n\t\t + W(3, -1091217395, -1094061036, -1108406741, -1096997053)\n\t\t + W(4, 1046488473, 1047676826, 1047117051, 1062693860) + W(5, 1049537116, 1056189429, 1017502967, 1049188263)\n\t\t + W(6, 1036204713, -1098488427, -1103697017, 1057957971)\n\t\t + W(7, -1114566390, 1034870184, -1103604141, 1029261884);\n\tsum2 = W(0, -1122819855, 1029215207, -1109976389, 1044451524)\n\t\t + W(1, -1130065951, 1027965847, -1119702735, 1036873692)\n\t\t + W(2, 1035645255, -1111163705, 1026839491, -1095838714)\n\t\t + W(3, -1147512571, -1156411358, -1110332882, -1114357123)\n\t\t + W(4, -1107161682, 1019166485, -1129473215, 1082201538) + W(5, 1052773623, 1033233466, 1034307583, 1001850219)\n\t\t + W(6, 1042480496, -1107159841, -1115971786, -1067229991)\n\t\t + W(7, -1091650896, -1142132409, -1107215185, 1025815163);\n\tWS(1040205182, 1040987841);\n\tsum1 = W(0, 1032709552, 1028035406, -1152624047, 1047238622)\n\t\t + W(1, -1110798127, -1160283945, -1129145589, 1035307633)\n\t\t + W(2, 1050828331, 1054299632, 1000765841, 1064828620) + W(3, 1059217829, 1057730984, 1050797759, 1040620053)\n\t\t + W(4, -1098789018, -1102534446, -1087146945, -1084918512)\n\t\t + W(5, -1080798168, -1094152707, -1154982570, -1104995442)\n\t\t + W(6, -1130845956, -1131566290, 1024089890, 1044521480)\n\t\t + W(7, 1041701723, -1105870556, -1121779940, -1110323595);\n\tsum2 = W(0, -1104834685, -1098615503, -1090508283, -1080862372)\n\t\t + W(1, 1048874616, 1063492499, 1035824034, 1062512173) + W(2, 1039834326, 1050496819, 1045914856, 1070974917)\n\t\t + W(3, -1085801376, -1081343708, 1033985362, -1089072248)\n\t\t + W(4, 1040649104, 1034170750, -1118657109, -1102559609)\n\t\t + W(5, 1041220807, 1047362948, -1099586035, -1130222490)\n\t\t + W(6, -1113573633, -1119108596, -1128160390, -1095002000)\n\t\t + W(7, 1053594264, 1022825140, 1041895669, -1115149866);\n\tWS(-1087487423, 1060332710);\n\tsum1 =\n\t\tW(0, -1105878689, 1042437466, 1040585322, -1121111477) + W(1, -1112195269, -1112892785, -1122925576, 1012646976)\n\t\t+ W(2, -1095746139, -1089004262, -1081828961, -1099866351)\n\t\t+ W(3, -1115422148, 1039314504, -1117471766, -1108492170) + W(4, 1053913286, 1055197099, 1059867107, 1061690846)\n\t\t+ W(5, -1104536871, -1102951638, -1107184778, -1130420108)\n\t\t+ W(6, 1037671952, -1117440135, -1114610404, 1028605502) + W(7, 1040822242, 1041433743, 1048192776, 1029799624);\n\tsum2 = W(0, 1017331955, -1104677463, -1117673238, -1094338757)\n\t\t + W(1, -1119646366, -1104710153, -1107625181, 1022869095)\n\t\t + W(2, -1097747777, 1040900608, -1081336501, 1073518733)\n\t\t + W(3, -1103573743, -1106204508, 1041186571, -1097636016)\n\t\t + W(4, -1097037835, 1016355419, -1089023490, 1068423959) + W(5, 1048344480, 1057220074, 1033091565, 1053959289)\n\t\t + W(6, -1162485367, -1104406873, -1117660642, -1096388411)\n\t\t + W(7, -1093216188, 1028492960, -1092192530, 1049060345);\n\tWS(-1096756863, 1051174382);\n\tsum1 = W(0, 1025372546, -1106905723, -1114360751, 1025624474)\n\t\t + W(1, 1037998160, 1032794399, 1034992970, -1114244794)\n\t\t + W(2, -1115668125, 1039995714, 1043101563, -1089490746)\n\t\t + W(3, -1092891318, -1107085565, -1114405501, -1168885266)\n\t\t + W(4, 1000611497, -1105014230, -1117013085, 1058174613)\n\t\t + W(5, 1045000731, 1035643438, -1121180749, -1120880459)\n\t\t + W(6, 1034391118, 1041916975, 1027806076, -1111998130) + W(7, 1008039732, 1030397185, 1018926829, 1029203969);\n\tsum2 =\n\t\tW(0, -1089960886, -1092452707, 1049541326, 1032119458) + W(1, 1032929374, -1110883627, -1123073435, 1026522309)\n\t\t+ W(2, -1095856011, -1106157919, 1074170001, -1085150802)\n\t\t+ W(3, 1046048366, -1112079347, 1027735021, -1111935169) + W(4, 1007316785, 1041476280, 1050706137, -1083810164)\n\t\t+ W(5, 1043182557, -1129593193, -1214669080, 1009058861)\n\t\t+ W(6, 1036775569, -1107942220, 1021239050, -1132331444)\n\t\t+ W(7, 1036225521, -1113579728, 1009639193, 1022066674);\n\tWS(1063524863, 1010978751);\n\tsum1 = W(0, 1033376264, 1035248130, 1029138555, 1040606570)\n\t\t + W(1, -1146340206, -1122169062, -1113033206, -1115451138)\n\t\t + W(2, -1090913225, -1094935586, -1084407830, -1085174115)\n\t\t + W(3, -1080254739, -1094320024, 1033710501, 955403507) + W(4, 1054337940, 1045510498, 1057961148, 1062831778)\n\t\t + W(5, 1060252175, 1058700983, 1045946247, 1033261261) + W(6, 1034437913, 1040021853, -1141033844, 1032741433)\n\t\t + W(7, -1127614262, -1136275261, 1007782611, 1030604567);\n\tsum2 = W(0, -1096400044, 1043917783, -1123678571, -1090244436)\n\t\t + W(1, 1046901313, 1048870815, 1033884063, 1053211427) + W(2, 1053621644, 1009306318, 1051339656, 1062093709)\n\t\t + W(3, -1080576226, -1106342004, -1098524562, -1124418811)\n\t\t + W(4, 1017015195, 1005897821, -1141989437, 1065539532)\n\t\t + W(5, -1083332175, -1097183812, -1097464341, -1092155120)\n\t\t + W(6, 1037111777, -1106811629, 1047789047, -1093438727)\n\t\t + W(7, 1049955112, 1043219374, 1050393105, 1044056917);\n\tWS(-1085369887, -1080302329);\n\tsum1 = W(0, 1021216124, -1121762938, -1103047566, -1094342263)\n\t\t + W(1, -1105630871, -1107174593, 1025950537, -1146340105)\n\t\t + W(2, -1112260523, -1119192737, 1050211017, 1058411732)\n\t\t + W(3, -1139271463, 1042276856, -1113852108, -1119668597)\n\t\t + W(4, 1035888345, 1049037307, 1061443675, 1044828010)\n\t\t + W(5, -1119204121, -1100915542, -1174284878, -1119790119)\n\t\t + W(6, -1110274640, -1111476420, -1097892613, -1097171068)\n\t\t + W(7, -1112160677, 1026261917, -1110403297, -1132483222);\n\tsum2 =\n\t\tW(0, -1115512925, -1146353705, 1036066439, -1134998124)\n\t\t+ W(1, -1093678923, -1122018103, -1110317749, 1002801625) + W(2, 1035074177, 1040461813, 1042528734, 1058355837)\n\t\t+ W(3, -1081621864, -1089980594, 1049357806, -1101025299)\n\t\t+ W(4, -1191992884, 1043381354, 1059049535, 1058956516) + W(5, -1095612272, 1050844919, -1100731037, 1036998024)\n\t\t+ W(6, -1115656893, -1137020948, 1021899784, -1112812041)\n\t\t+ W(7, 1012903452, -1123282157, -1122890057, 1023124620);\n\tWS(-1106521214, -1077666555);\n\tsum1 = W(0, 1003321829, -1120901013, -1105222370, -1107011833)\n\t\t + W(1, 1029823211, 1000924822, -1127794128, 1027793952) + W(2, 1052142545, 1052094618, 1060439250, 1059969903)\n\t\t + W(3, -1095361591, 1039904896, 1000548911, 1046166153)\n\t\t + W(4, -1102912320, -1105733097, -1085669204, -1113880763)\n\t\t + W(5, 1052882623, -1107186882, -1118745688, -1096551831)\n\t\t + W(6, -1108686032, -1118608535, 1045702647, -1106161276)\n\t\t + W(7, -1103122454, -1106172071, -1113781993, -1132637458);\n\tsum2 = W(0, 1034079401, -1123608512, 999851902, -1128074608)\n\t\t + W(1, -1102099502, -1109589984, -1127758712, 1032460032)\n\t\t + W(2, 1025264110, -1119278092, 1031056700, 1059405503)\n\t\t + W(3, -1123208440, -1081290516, 1015173988, -1121242732)\n\t\t + W(4, -1123371956, -1104246380, 1051208451, 1063218900)\n\t\t + W(5, -1110007228, -1131612640, -1124651080, 1025045004)\n\t\t + W(6, -1116991392, -1156408861, -1098806852, 1038716729)\n\t\t + W(7, -1136590423, 1034885175, 1009682031, -1115963068);\n\tWS(1061862175, -1081928168);\n\tsum1 = W(0, -1105584175, 1024897880, 1038516044, 1040792761)\n\t\t + W(1, 1041867802, -1146323132, 1033649803, -1113939311)\n\t\t + W(2, -1105871745, -1093982770, -1092069365, -1083616743)\n\t\t + W(3, -1089303929, -1089274268, -1106858177, -1096909360)\n\t\t + W(4, 1043886056, 1052657028, 1055074797, 1065026281) + W(5, 1056987882, 1054263413, 1043742846, 1049053899)\n\t\t + W(6, 1027658214, 992865878, -1121064957, -1106374835)\n\t\t + W(7, 1015027694, -1132520748, -1137844354, 1017619030);\n\tsum2 = W(0, 1078367032, 1056220347, -1078889751, -1073546091)\n\t\t + W(1, -1104234997, -1129365336, -1132392998, -1105729449)\n\t\t + W(2, 1027322757, 1044756153, -1096547764, -1101560565)\n\t\t + W(3, 1042443775, 1048890957, -1104280017, 1028418751)\n\t\t + W(4, 1023449836, -1148770222, 1043960988, -1126862726)\n\t\t + W(5, 1029550531, -1133306383, -1130422948, 1042854212)\n\t\t + W(6, -1115583846, 993742973, -1130380138, -1147412718)\n\t\t + W(7, -1115461788, 1019814478, -1143007558, -1123464959);\n\tWS(1052938943, -1103606318);\n\tsum1 = W(0, -1114719934, -1110318513, 1051495307, -1100729633)\n\t\t + W(1, 1058926789, -1090569589, 1050591187, -1120060704)\n\t\t + W(2, -1087051802, -1108424920, -1085940948, -1082198177)\n\t\t + W(3, -1090825863, -1088355266, -1096343413, -1090847836)\n\t\t + W(4, 1058073278, 1044445625, 1060893495, 1058839039) + W(5, 1060585177, 1053564817, 1054456219, 1059253187)\n\t\t + W(6, -1114447856, 1040769086, 1037779432, -1103818980)\n\t\t + W(7, 1053070735, -1091337376, -1131842819, 1026807692);\n\tsum2 = W(0, 1015621136, 1032703681, 1048700747, -1098355550)\n\t\t + W(1, 1047054427, -1097901072, -1126056922, -1165737020)\n\t\t + W(2, 1033006755, -1098289077, -1098808895, 1046984196)\n\t\t + W(3, -1083721832, 1061110777, -1109410901, 1047097145)\n\t\t + W(4, -1072583370, -1084108607, -1081224226, -1081041246)\n\t\t + W(5, 1069053051, 1046858869, 1068664236, 1076043754) + W(6, 1074691924, 1067219112, 1064576163, 1066863963)\n\t\t + W(7, -1084686190, -1086075738, -1079374171, -1071293986);\n\tWS(-1083248351, 1041375270);\n\tsum1 = W(0, 998616699, -1142901727, 1043282847, -1128981712)\n\t\t + W(1, 1049050406, -1110272759, 1045114289, -1170526381)\n\t\t + W(2, -1087439008, -1092067298, -1097778587, -1084179155)\n\t\t + W(3, -1090979219, -1086455104, -1095775369, -1087021556)\n\t\t + W(4, 1054645196, 1052452449, 1050602866, 1058025241) + W(5, 1061357806, 1053431193, 1052134295, 1053157267)\n\t\t + W(6, 1045294540, -1128264947, 1042620067, -1146688137)\n\t\t + W(7, -1127282486, -1125997182, 981342481, 1046767364);\n\tsum2 = W(0, -1076239116, -1079299620, -1079042334, -1083365485)\n\t\t + W(1, 1049726715, 1066758659, 1069675355, 1075688460) + W(2, 1068235144, 1068687973, 1068481951, 1066921525)\n\t\t + W(3, -1106704213, -1080829299, -1077473679, -1073149491)\n\t\t + W(4, 1054062613, 1019509447, 1057377046, -1100834259)\n\t\t + W(5, -1095788298, -1107253929, -1112126912, -1090199615)\n\t\t + W(6, -1114529265, -1116897962, 1041823371, 1032806429)\n\t\t + W(7, -1104989857, -1107915189, 1021289065, 1034867372);\n\tWS(-1089965567, 1041739713);\n\tsum1 = W(0, 1014059625, -1109541748, -1120181702, -1113826001)\n\t\t + W(1, -1099389050, -1107441048, -1110918155, -1129336123)\n\t\t + W(2, 1050606464, 1046384755, 1052952467, 1062759283) + W(3, 1061539071, 1056969105, 1043585729, 1054439728)\n\t\t + W(4, -1097348868, -1098095776, -1098227712, -1097909490)\n\t\t + W(5, -1089710746, -1097990985, -1112431723, -1101291373)\n\t\t + W(6, 1016608410, -1110057610, -1165355548, -1103909923)\n\t\t + W(7, 1018410859, -1097884829, -1109883584, -1118732474);\n\tsum2 = W(0, 1035083591, -1112359157, 1037205500, -1119560270)\n\t\t + W(1, -1130432545, 1033928454, -1111608107, 1027763767)\n\t\t + W(2, -1113211599, 1037267536, -1110383577, 1053336900)\n\t\t + W(3, 1036846600, 1029308948, 1035214305, -1137000642) + W(4, 1032203968, -1129901649, 1050641640, 1062183610)\n\t\t + W(5, 1052549520, 1037218786, -1098666781, 1041216407) + W(6, -1112771443, 999833884, -1113848439, 1048127168)\n\t\t + W(7, -1087091182, -1080175934, -1106600446, -1105808372);\n\tWS(1040803966, -1079223548);\n\tsum1 = W(0, -1103550802, -1113401739, -1105545077, -1095164520)\n\t\t + W(1, -1102562113, -1106149592, -1123094707, -1105989383)\n\t\t + W(2, -1108233168, -1097729981, -1112466052, 1056711305)\n\t\t + W(3, 1033129898, -1100704991, -1106323272, -1109921151)\n\t\t + W(4, -1115946235, 1016715200, 1051122342, 1072346450) + W(5, 1046866637, 1041579689, 1017795558, 1019070562)\n\t\t + W(6, 1021078213, -1123835458, -1103483180, -1092700173)\n\t\t + W(7, -1104392485, 1033532004, -1128003929, -1109398092);\n\tsum2 =\n\t\tW(0, -1132003761, -1126076753, 1028715469, -1094940877) + W(1, -1096054213, 1050064171, -1095828963, 1024912709)\n\t\t+ W(2, -1097131135, -1098724323, -1094337061, 1075670208)\n\t\t+ W(3, -1092647285, -1119763725, -1104609741, -1103386045)\n\t\t+ W(4, 1033952970, -1102131199, 1043946979, 1037045260) + W(5, 1052392413, -1101691459, -1104710657, 1042676905)\n\t\t+ W(6, -1114013558, 1027012993, -1109613274, 1026138301)\n\t\t+ W(7, -1107006741, 1032910718, -1127911473, -1109320626);\n\tWS(-1077711088, -1080462700);\n\tsum1 = W(0, 1016976667, -1143635214, 1050435883, 1025648038)\n\t\t + W(1, 1033190198, -1119077035, -1127874241, -1124293633)\n\t\t + W(2, -1095463505, -1094028818, -1084473735, -1081613943)\n\t\t + W(3, -1092817267, -1089963906, -1112556483, -1096263708)\n\t\t + W(4, 1048382760, 1043759401, 1060944248, 1061061657) + W(5, 1059085444, 1058923652, 1024757337, 1052630131)\n\t\t + W(6, 1033669226, 1023995271, 1038367764, -1104130812) + W(7, 1035230572, -1115548134, 998948881, 1035279350);\n\tsum2 = W(0, -1118714905, -1128906105, -1104617441, -1102497202)\n\t\t + W(1, 1052988680, 1025452854, -1147569173, 1045309195) + W(2, 1038737245, 1033599435, 1047074065, -1081197801)\n\t\t + W(3, 1051590837, 1036478618, 1034730428, -1096538670)\n\t\t + W(4, 1045939428, -1124872105, 1073600723, -1069501955)\n\t\t + W(5, -1078764847, -1078626366, -1094352359, -1097394746)\n\t\t + W(6, -1084863446, -1120736313, 1072627800, 1076529178)\n\t\t + W(7, 1066278053, -1115729701, -1119746081, 1001372341);\n\tWS(-1085605823, 1039908372);\n\tsum1 = W(0, -1110519177, 998302542, -1105109851, 1051114493) + W(1, 1047758692, 1047411644, 1008966514, 1027414133)\n\t\t + W(2, -1101464226, -1097280531, 1050325520, -1093718398)\n\t\t + W(3, -1109283231, -1103804777, -1107759461, -1099881946)\n\t\t + W(4, 1050281295, 1040574050, -1112501642, -1095999987)\n\t\t + W(5, 1052111506, 1013903280, -1131548857, 1037344125) + W(6, -1136474287, 1017687606, 1027599892, 1038451002)\n\t\t + W(7, -1112873934, 1026946257, 1007362713, 1030395745);\n\tsum2 = W(0, -1115357326, -1129481498, 1037423788, -1149109833)\n\t\t + W(1, -1107237807, -1098320683, -1118016391, -1111060805)\n\t\t + W(2, -1098998597, -1104582263, -1098625511, 1036322812)\n\t\t + W(3, 1050926614, 1045914812, 1029306918, 1035368549) + W(4, 1033193484, 1041990652, 1052524895, 1029624616)\n\t\t + W(5, -1102468922, 1016354632, 1029333966, 1036818044)\n\t\t + W(6, -1119934044, -1109942748, 1028176618, 1032249206)\n\t\t + W(7, -1117055607, 1026298641, -1116685452, -1113790705);\n\tWS(1066221936, -1112686252);\n\tsum1 =\n\t\tW(0, -1111426931, 1049363148, -1090113310, 1038796336) + W(1, -1102958241, 1041899238, -1104001476, -1112879133)\n\t\t+ W(2, 1042737360, -1108750629, 1053136109, -1095853365)\n\t\t+ W(3, -1108890233, 1023718298, 1033191264, -1165972390) + W(4, 1039181581, -1105687720, 1051677110, 1031102479)\n\t\t+ W(5, 1058267293, -1089545128, 1047293124, 1010166848) + W(6, -1110677245, 1035534704, -1101864162, 1019901392)\n\t\t+ W(7, -1107302241, 1048841797, -1106653499, 989728967);\n\tsum2 =\n\t\tW(0, 1019579309, -1115216952, -1101014764, 1035949455) + W(1, -1125343389, 1020295703, -1107189524, 1032252124)\n\t\t+ W(2, -1121628281, 1041466962, 1044350744, -1096356807) + W(3, 1019949697, 1011899626, 1020414781, -1108620092)\n\t\t+ W(4, -1104132268, -1110659898, -1092586315, 1067161402)\n\t\t+ W(5, 1044980625, 1028945397, 1024223321, -1106879950)\n\t\t+ W(6, -1133616314, 1046938970, -1089581193, -1097777539)\n\t\t+ W(7, 1025080038, 1042942659, 1000298789, 1034429670);\n\tWS(1065647552, 1042223795);\n\tsum1 = W(0, -1118213891, 1047859212, -1102035956, 1049817209)\n\t\t + W(1, -1136727619, 1018314812, 1048950515, -1111834851)\n\t\t + W(2, -1090185691, -1099254654, -1085546115, -1090115457)\n\t\t + W(3, -1086839140, -1089622500, -1103143659, -1088857895)\n\t\t + W(4, 1054600851, 1056675965, 1052764224, 1060918524) + W(5, 1050058698, 1053194074, 1055030644, 1046059111)\n\t\t + W(6, 1042956769, 1045938459, -1095542592, 1048397149)\n\t\t + W(7, -1107166488, -1115710386, 1046421002, 1019098869);\n\tsum2 = W(0, 1038047795, -1100534663, 1043709757, -1098906327)\n\t\t + W(1, 1054998296, -1097979318, 1042447686, -1135615252)\n\t\t + W(2, 1045715537, -1109612723, -1109559353, -1088589586)\n\t\t + W(3, 1046750383, 1030039799, -1112135838, -1108474833) + W(4, 1062099960, 1074456323, 1074047524, 1061406543)\n\t\t + W(5, -1109444720, -1095255331, -1106577876, -1098188594)\n\t\t + W(6, -1074982428, -1071944747, -1086420775, -1087600981)\n\t\t + W(7, 1058024333, 1040647828, 1042372587, 1051479186);\n\tWS(-1099261566, -1102058551);\n\tsum1 = W(0, 1037460750, -1118752449, 1048855473, 1046116085) + W(1, 1041532007, 1043443965, 1035797482, 1048656673)\n\t\t + W(2, -1099740733, 1038344912, -1097823268, -1077722267)\n\t\t + W(3, -1086845489, -1109540512, -1112472539, 1006300060)\n\t\t + W(4, 1035868896, 1028635221, -1135561696, -1089090112)\n\t\t + W(5, 1054063629, 1036245196, 1039520068, -1115462467) + W(6, 1046250530, 1040547388, 1049218244, 1053686776)\n\t\t + W(7, 1041462458, 1041323791, -1116084210, 1050214602);\n\tsum2 = W(0, -1107023704, -1103130345, 1025081245, 1007138702)\n\t\t + W(1, 1020633935, 1042694232, -1116958023, -1117764771)\n\t\t + W(2, -1099880087, 1049640504, -1099241173, 1060797185)\n\t\t + W(3, -1096100738, 1034621436, -1100840753, 1051814059)\n\t\t + W(4, 1047853298, -1100868353, 1050410790, -1096656068)\n\t\t + W(5, 1053061345, -1092716332, 1057695342, -1092707384)\n\t\t + W(6, -1106650230, 1035820630, -1111373979, 1048085306)\n\t\t + W(7, -1098540289, 1045275377, -1095110662, 1026583068);\n\tWS(-1081437504, -1086037448);\n\tsum1 = W(0, 1002898847, 1034161364, -1097339820, -1102052735)\n\t\t + W(1, -1122224578, -1116847174, -1124219870, -1114337484)\n\t\t + W(2, 1048903167, 1048827465, 1058952469, 1062493730) + W(3, 1056452878, 1052097743, 1046287775, 1051622635)\n\t\t + W(4, -1098037791, -1110924302, -1089826679, -1082951605)\n\t\t + W(5, -1095802941, -1093057352, -1115921615, -1097214606)\n\t\t + W(6, -1124004134, 1038960439, -1109622563, 1046141833)\n\t\t + W(7, 1037494008, -1142221339, 1018754897, -1115514650);\n\tsum2 = W(0, 1026296217, 1046658552, -1092482457, 1048926974)\n\t\t + W(1, -1093986590, 1051240634, 1031417427, -1116201775)\n\t\t + W(2, -1098267531, 1054123387, 1031912087, -1103258874)\n\t\t + W(3, 1064081451, -1081783631, 1052301313, -1136084293)\n\t\t + W(4, 1056065541, -1080723543, 1068312252, -1095327126)\n\t\t + W(5, -1101319294, 1054428583, -1095108256, 1032992382)\n\t\t + W(6, -1107249906, 1049528827, -1094476247, -1114829012)\n\t\t + W(7, -1110151549, -1109929036, 1023898518, -1131461985);\n\tWS(1059931039, 1045326059);\n\tsum1 = W(0, -1105339195, -1116497429, -1104905094, 1048600749)\n\t\t + W(1, 1017781140, 1028510504, -1104151378, 1006123003)\n\t\t + W(2, 1027626820, -1102542884, 1042432944, -1087368655)\n\t\t + W(3, -1090841955, -1098837680, -1135818261, -1102238241)\n\t\t + W(4, 1035394960, 1045819641, 1050447189, 1050459387) + W(5, 1058872902, 1038310627, 1009721182, 1039487803)\n\t\t + W(6, 1020852317, -1110241387, -1120454715, 1028063406)\n\t\t + W(7, -1135766366, 1046575867, -1121800177, -1138241103);\n\tsum2 = W(0, -1108715925, -1125695753, -1106861101, 1037467647)\n\t\t + W(1, 1049447879, -1108013135, 1016159100, 1025122350)\n\t\t + W(2, 1033521028, -1107049318, -1126359337, 1024736242)\n\t\t + W(3, -1096919459, 1030099711, 1038861546, 1027296385) + W(4, -1130002309, 1043711791, 1069432650, 1069236178)\n\t\t + W(5, -1089672176, -1104043463, -1102967963, -1115278753)\n\t\t + W(6, 1043372642, -1096562690, 1055907536, -1077602923)\n\t\t + W(7, -1079492159, 1048192702, 1041544949, 1038199238);\n\tWS(1065273279, -1155200022);\n\tsum1 = W(0, 1032043190, 1042748400, 1044363154, -1101712885) + W(1, 1020290996, 1042545917, 1023679047, 969146311)\n\t\t + W(2, -1110724474, -1113644224, -1103694886, 1049530899)\n\t\t + W(3, 1032343156, -1119655327, -1113927803, 1014066252)\n\t\t + W(4, 1048813356, -1113329098, -1138873982, 1013956115)\n\t\t + W(5, -1088512539, -1118975351, -1112426340, -1102619473)\n\t\t + W(6, -1107914275, 1017813644, -1119126921, 1030506334)\n\t\t + W(7, 1047677002, 1035449518, 1040385292, 1037002750);\n\tsum2 =\n\t\tW(0, -1105379539, -1114326988, -1128505094, -1127815582) + W(1, -1144273240, 1011114412, 1010998384, 1008109660)\n\t\t+ W(2, 1040024171, 1033596237, 1027874005, -1090164335) + W(3, 1026082941, -1098155637, 1010514392, -1110656550)\n\t\t+ W(4, 1054804566, -1100858724, -1108932212, 1015111122) + W(5, 1057491035, -1123558275, 1041639386, 1025837089)\n\t\t+ W(6, 1020126178, 1058095820, -1095228668, -1114002666)\n\t\t+ W(7, -1109234902, -1117423595, -1148517800, 1028462436);\n\tWS(1064822335, -1095840736);\n\tsum1 = W(0, 1049019197, -1114924672, 1006539024, 1027273471) + W(1, 1024001604, 1023329786, 1034076369, 1032078653)\n\t\t + W(2, 1056391992, 1052717533, 1053226600, 1063307800) + W(3, 1051465786, 1056189595, 1051405604, 1049885284)\n\t\t + W(4, -1082098174, -1097259572, -1083318869, -1085358981)\n\t\t + W(5, -1093212548, -1096912972, -1097995110, -1090164049)\n\t\t + W(6, 1047279757, -1158101509, 1028150783, 1048033194)\n\t\t + W(7, 1040827508, -1122795750, 1040247311, -1102713147);\n\tsum2 = W(0, 1044291516, -1105536143, -1123279074, -1102729189)\n\t\t + W(1, 1019015608, -1098099014, 1041233257, -1116414073)\n\t\t + W(2, 1057945825, 1059138923, 1064153610, -1117658388)\n\t\t + W(3, -1082824416, -1088923796, -1114762777, -1093119165)\n\t\t + W(4, 1075245425, 1063262829, 1058517731, 1055818216)\n\t\t + W(5, -1095331241, -1082492094, -1084810008, -1076437009)\n\t\t + W(6, -1075047571, -1084742426, -1087050661, -1094508761)\n\t\t + W(7, -1107921801, 1066223948, 1065694420, 1070896480);\n\tWS(-1090760447, 1052695066);\n\tsum1 = W(0, 1032827391, 1004836815, 1040820154, 1033221771) + W(1, -1142824410, 1019263487, 1033909728, 1030288497)\n\t\t + W(2, -1086160295, -1100507696, -1085279840, -1085951050)\n\t\t + W(3, -1090476887, -1096291378, -1104244158, -1096098979)\n\t\t + W(4, 1058956361, 1050270371, 1061054293, 1060000376) + W(5, 1053225609, 1052048107, 1044967298, -1123372967)\n\t\t + W(6, -1122589400, 1011775197, -1126907788, -1109718672)\n\t\t + W(7, 1031459881, 1014310644, 1002236306, 1050105184);\n\tsum2 = W(0, -1115548553, 1010795990, 1025233265, -1108773712)\n\t\t + W(1, 1028577219, -1123367926, 1027045545, 1016487959)\n\t\t + W(2, -1119133376, 1054475337, -1126101085, -1096206384)\n\t\t + W(3, 1025243447, -1123699076, -1116348436, 1026289255) + W(4, 1034230379, 1049648601, 1031862009, 1056453743)\n\t\t + W(5, -1092511031, 1040231624, 1052333940, -1098871930)\n\t\t + W(6, -1106450540, -1130742967, 1074765700, 1076253468)\n\t\t + W(7, 1067142167, -1082850789, -1074864896, -1066441953);\n\tWS(-1098442559, 1026469881);\n\tsum1 = W(0, -1149983818, -1119522441, -1111872220, -1148708523)\n\t\t + W(1, 1033974589, 1034687077, -1121497336, 1040191316) + W(2, 1050517915, 1049663660, 1057681670, 1054270423)\n\t\t + W(3, 1065584902, 1060962908, 1043551013, 1037520938)\n\t\t + W(4, -1114000872, -1102209381, -1097110004, -1080449641)\n\t\t + W(5, -1089390067, -1088971425, -1096207069, -1098201593)\n\t\t + W(6, -1106643136, -1107005098, -1107624656, 1044397088)\n\t\t + W(7, 1040137492, 1011262833, -1152197144, -1111636393);\n\tsum2 = W(0, -1093666199, 1049995354, -1104373549, -1108191449)\n\t\t + W(1, -1086862321, -1109961150, -1105617480, 1057348983)\n\t\t + W(2, 1067471948, -1083836095, 1067519925, 1075025493)\n\t\t + W(3, -1079149522, -1092122258, -1118106953, -1090446878)\n\t\t + W(4, 1044138823, -1089657247, 1068116530, 1070698122)\n\t\t + W(5, -1077256496, -1092830464, -1104600439, -1095892285)\n\t\t + W(6, -1087858714, 1040673003, -1086283540, -1107890740)\n\t\t + W(7, 1052510667, 1044801958, -1113062539, 1040940184);\n\tWS(-1089367999, -1080592817);\n\tsum1 = W(0, 1050901372, -1142600967, 1043029392, 1042662963) + W(1, -1131715556, 1028335344, 1009439676, 1040529906)\n\t\t + W(2, 1020565079, 1046045566, 1051791856, 1059303201) + W(3, 1060541458, 1057651322, 1050310918, 1061742083)\n\t\t + W(4, -1098563453, -1094642094, -1092783656, -1082254536)\n\t\t + W(5, -1088235102, -1083519131, -1088554180, -1084895582)\n\t\t + W(6, -1123752726, 1032349343, 1017360893, 1040706037) + W(7, 1038984656, 1042767141, 1039511244, 1037250730);\n\tsum2 = W(0, -1086948904, 1044777691, -1085906527, -1107333159)\n\t\t + W(1, -1094251850, -1101622483, 1054103540, -1095334551)\n\t\t + W(2, 1072921984, -1096214776, 1069427540, 1069014322)\n\t\t + W(3, 1068759557, -1095651744, -1080635176, -1071443034)\n\t\t + W(4, -1102597600, -1086612116, 1055370552, 1068187895)\n\t\t + W(5, 1049876941, -1098339283, -1098368915, -1119710681)\n\t\t + W(6, -1081008410, 1053678014, -1094318103, 1040782350)\n\t\t + W(7, -1097053445, 1052418274, -1116179967, 1057760894);\n\tWS(-1072329816, 1074376722);\n\tsum1 = W(0, -1119826815, 1034466519, -1121811611, 1040071236) + W(1, 1034412551, -1125783811, 1025497578, 989295697)\n\t\t + W(2, -1097135645, -1100415357, -1123247055, -1078161261)\n\t\t + W(3, -1086793716, -1092987820, -1117997032, -1097292445)\n\t\t + W(4, 1051061560, 1050212013, 1057003368, 1050094223) + W(5, 1060987117, 1053182609, 1030369595, 1040352158)\n\t\t + W(6, 1001332238, 1009264740, -1119531350, 1047608180)\n\t\t + W(7, -1139666027, 1053959834, -1130537576, 1003451511);\n\tsum2 = W(0, 1010850411, -1119692159, -1110113403, 1041465994)\n\t\t + W(1, 1019542894, 1041361680, -1128076954, 1035827461) + W(2, 1033963983, 1024673399, -1107122545, 1041917938)\n\t\t + W(3, 1031918417, 1016152214, -1119110501, -1108745692)\n\t\t + W(4, 1041326744, -1126975570, 1049177676, 1075051781)\n\t\t + W(5, 1057547658, -1100210466, -1101468559, -1111890885)\n\t\t + W(6, -1110591524, 1039643589, -1098235771, 1061676083)\n\t\t + W(7, -1072022345, -1080793678, 1038326573, -1115279667);\n\tWS(-1089734463, 1065567745);\n\tsum1 = W(0, -1115310942, 1048676446, 1051913151, 1041943745)\n\t\t + W(1, 1032260949, -1123414147, 1025799735, -1118314271)\n\t\t + W(2, -1089748010, 1033541431, -1091844976, -1078026925)\n\t\t + W(3, -1083863979, -1088695462, -1097284573, -1090712276)\n\t\t + W(4, 1053493076, 1047890913, 1060749357, 1057682191) + W(5, 1060855949, 1057895644, 1049355215, 1052101531)\n\t\t + W(6, 1041536229, -1111760907, 1031051700, 1033727319)\n\t\t + W(7, -1117552023, -1123512523, -1134918146, 1037093278);\n\tsum2 = W(0, -1087048499, -1089227831, -1081828818, -1106022394)\n\t\t + W(1, 1057638724, 1053589051, 1030725267, 1050363813) + W(2, 1067110585, -1073947481, -1100054441, 1057992187)\n\t\t + W(3, -1096117153, 1049824990, 1008667589, 1047082764) + W(4, 1062551012, -1107011493, 1044700801, 1053279159)\n\t\t + W(5, 1047077354, -1098858111, 1055551992, -1093863007)\n\t\t + W(6, -1088705293, 1063056164, -1091908804, 1049660447)\n\t\t + W(7, 1041467137, -1112699600, 991046018, -1118599281);\n\tWS(-1079109040, -1085312521);\n\tsum1 = W(0, 1023769582, -1140282322, -1105105824, 1041551140)\n\t\t + W(1, 1030694836, -1111084358, 955351653, -1133450021) + W(2, 1037365911, -1117579705, 1052645482, 1061549365)\n\t\t + W(3, -1092653220, 1050958145, -1113919416, 1047664699)\n\t\t + W(4, -1113299189, 1042794748, -1086336671, -1087637436)\n\t\t + W(5, 1051894263, -1111723928, 1039072513, -1111528112)\n\t\t + W(6, -1127522065, -1098682508, 1041518392, 1049784787)\n\t\t + W(7, -1104535548, -1112540051, 997865134, -1121426302);\n\tsum2 =\n\t\tW(0, -1112127727, 1037755147, -1117076760, -1096944427) + W(1, 920706880, -1126463908, 1025583781, 1016301114)\n\t\t+ W(2, -1182735741, -1116775242, -1110833901, 1050960349)\n\t\t+ W(3, 1057824022, 1025802869, -1117624689, -1106817101) + W(4, 1027967369, -1108084106, 1047419656, 1057406540)\n\t\t+ W(5, -1106635563, 1030718323, -1129307942, -1146210056)\n\t\t+ W(6, -1099828018, -1106208929, -1106621688, -1093670465)\n\t\t+ W(7, 1046907280, -1104727129, 1024731263, -1133403952);\n\tWS(1066445424, -1114782683);\n\tsum1 = W(0, -1105169880, 1037849343, -1111719878, 1053025475)\n\t\t + W(1, -1106443352, -1118185334, -1115180998, -1104379365)\n\t\t + W(2, -1110498524, -1092096849, -1089773556, -1093199580)\n\t\t + W(3, -1085224723, 1017432168, -1097477655, -1120659192)\n\t\t + W(4, 1042140161, 1045982494, 1059787797, 1058443885) + W(5, 1058982105, 1051015495, 1049335790, 1047806371)\n\t\t + W(6, 1033176686, 1027992139, -1104315937, 1034263873)\n\t\t + W(7, -1099213011, 1015617473, -1134277975, -1124174113);\n\tsum2 =\n\t\tW(0, 1035156885, 1010861092, 1053142713, 1050643378) + W(1, -1093995815, -1100307988, -1094190457, -1095534688)\n\t\t+ W(2, -1104443938, -1111353322, -1092519845, 1033492110)\n\t\t+ W(3, 1061622434, 1045835461, 1054276307, -1118030035) + W(4, 1020765936, -1131256669, 1043066295, -1093594884)\n\t\t+ W(5, -1090891830, 1051701313, -1115303200, 1044764145)\n\t\t+ W(6, 1034215267, -1119467871, 1043572605, -1120345789)\n\t\t+ W(7, 1035132204, -1120193257, -1107758441, 1010759898);\n\tWS(1053797695, 1034928741);\n\tsum1 = W(0, -1113709609, -1101985872, -1098832221, -1106547453)\n\t\t + W(1, 1032341932, 1038712045, 1020651977, 1037110646) + W(2, 1027306577, 1036410350, 1048222316, 1049396519)\n\t\t + W(3, -1093507345, -1098128846, -1102358117, -1095739626)\n\t\t + W(4, -1089618673, -1094568298, -1089721378, 1057932790)\n\t\t + W(5, 1051551069, 1042310981, 1032076306, 1049811664) + W(6, 1039738506, 1041675949, 1049870789, 1032602030)\n\t\t + W(7, 1041034929, 1020376402, 1038606871, 1036847389);\n\tsum2 =\n\t\tW(0, -1107569978, 1048834253, 1032955728, 1047116738) + W(1, -1095875849, 1024141754, -1117854930, 1031286951)\n\t\t+ W(2, -1096371488, -1100415470, -1097656368, 1057366407) + W(3, 1049724515, 1047568587, 1025784853, 1040928209)\n\t\t+ W(4, -1091206842, -1140716449, -1099982688, 1067804624)\n\t\t+ W(5, -1107732848, -1101898886, -1104360749, -1099991629)\n\t\t+ W(6, -1113379832, -1098639187, -1102236471, -1112454303)\n\t\t+ W(7, 1037256860, 1039735469, 1034482735, -1122662653);\n\tWS(-1100599294, -1113486107);\n\tsum1 = W(0, 1041832895, -1113994869, -1101582062, -1100675730)\n\t\t + W(1, 1015862616, 1033573462, -1123901241, -1147102474) + W(2, 1058015130, 1043005476, 1065539217, 1054749782)\n\t\t + W(3, 1046936430, 1043027144, -1122192647, 1047923809)\n\t\t + W(4, -1095482492, -1095369841, -1088297536, -1085935041)\n\t\t + W(5, 1054414015, -1096194081, -1118572185, -1106262926)\n\t\t + W(6, -1123207408, -1120610968, 1040056719, -1111595960)\n\t\t + W(7, -1110844045, 1041950395, 1007333963, -1097939280);\n\tsum2 = W(0, 1033496750, -1118187780, 1041080086, -1102935461) + W(1, 1023898015, -1122438380, 1007185073, 999989929)\n\t\t + W(2, -1105017139, 1043450683, -1106458832, 1057933296)\n\t\t + W(3, -1098239652, -1111698692, 1023645924, 1034431733)\n\t\t + W(4, -1118941046, -1142467441, -1096734279, 1063076098)\n\t\t + W(5, -1119844388, 1048742138, -1096898561, -1090457759)\n\t\t + W(6, 1012703263, 1009095593, 1025973118, -1089439993)\n\t\t + W(7, -1124882200, 1004297609, 1046154393, 1048791679);\n\tWS(1058454143, -1086058342);\n\tsum1 = W(0, -1115074879, -1099743710, -1103933280, -1113530407)\n\t\t + W(1, -1124606630, -1115568198, -1123572016, -1118699368)\n\t\t + W(2, 1051341170, 1054019099, 1057240637, -1085932301)\n\t\t + W(3, -1090466976, -1097279225, -1108988935, -1095706385)\n\t\t + W(4, -1123276713, -1112675511, -1095853513, 1048593300)\n\t\t + W(5, 1059272419, 1052135974, 1039376368, 1041536544) + W(6, 1040408770, 1042487060, 1044345774, 1034191179)\n\t\t + W(7, -1105205160, -1111240730, -1135917288, 1043157563);\n\tsum2 = W(0, 1047642666, -1094360366, -1111839157, -1101124559)\n\t\t + W(1, -1119401007, -1114275291, 1010413358, 1018914035)\n\t\t + W(2, -1106684338, -1104496052, -1101578828, 1062389037)\n\t\t + W(3, -1099504899, -1102577927, -1121638606, -1100286365)\n\t\t + W(4, -1097565895, -1137000462, 1017360469, 1056361687)\n\t\t + W(5, 1057357121, -1111580608, 1047557438, -1108198790)\n\t\t + W(6, 1038757740, -1120606628, 1043520604, -1110716481)\n\t\t + W(7, -1121032787, -1174578992, 1020758339, 1031842399);\n\tWS(-1116191222, -1087222261);\n\tsum1 = W(0, 1051378220, 1026061480, 1051132746, -1131139769) + W(1, 1029438530, 1010253799, -1140691900, 1032111196)\n\t\t + W(2, -1092140039, 1041212802, 1028855632, 1054776996) + W(3, 1052461054, 1056191968, 1041996679, 1051463563)\n\t\t + W(4, -1098282527, -1108686318, -1114615088, -1096808426)\n\t\t + W(5, -1090181940, -1089672580, -1095415146, -1084069643)\n\t\t + W(6, -1115126509, 1018050395, 1028919646, 1031880915) + W(7, 1047407636, 1041055121, 1025713945, 1049760258);\n\tsum2 =\n\t\tW(0, -1120688670, 988781159, 1023531678, 1034244658) + W(1, 1038669521, -1125227753, -1122152897, -1123518214)\n\t\t+ W(2, 1075791226, -1079951996, -1080919050, -1078043585) + W(3, 1061514147, 1050383220, 1043495776, 1056154705)\n\t\t+ W(4, 1072772368, -1096143661, -1087274515, -1074830486)\n\t\t+ W(5, -1138433181, -1091737459, 1043710967, 1064633897)\n\t\t+ W(6, 1033088733, -1126178338, 1039982901, -1153355920)\n\t\t+ W(7, 1047086021, -1117938706, 1036258954, -1090859740);\n\tWS(-1086114623, -1084816591);\n\tsum1 = W(0, -1119067590, 1041053515, -1123050946, 1050414506)\n\t\t + W(1, 1017204584, 1033253648, -1109025761, -1142909644)\n\t\t + W(2, 1036163639, -1112478813, 1045609440, -1091176571)\n\t\t + W(3, -1096458464, -1092456237, 1039781304, 1019336538)\n\t\t + W(4, -1106221778, -1114565991, -1102274148, 1041957568)\n\t\t + W(5, -1140250052, 1042499428, 1024592194, -1110741472) + W(6, 1015833809, 1041839788, 1038604869, 1049671879)\n\t\t + W(7, 1016035267, 1004159150, 1019624502, 1038938427);\n\tsum2 =\n\t\tW(0, 1006657945, -1145756082, -1102183527, 1043063832) + W(1, 1048257970, 1030027167, -1129422896, -1120006792)\n\t\t+ W(2, -1115603798, -1129023472, 1024575987, -1070476153) + W(3, 1078068971, 1034687231, 1014471457, 998969122)\n\t\t+ W(4, 1043167348, 1029036192, -1134024937, -1079118960) + W(5, 1058188063, 1026633068, -1138449465, 1035752331)\n\t\t+ W(6, 1032033598, -1122908214, 1013148193, -1117007948)\n\t\t+ W(7, 1026806223, -1106350665, 1037397710, -1119066852);\n\tWS(1058895967, -1115291633);\n\tsum1 = W(0, -1125313920, -1110715998, -1110540830, -1093243535)\n\t\t + W(1, -1098773368, -1114664694, -1108229374, -1128878150)\n\t\t + W(2, -1118075736, 1028840739, 1050429809, 1056177832) + W(3, 1050921353, 1021103494, 1039051533, 1048765371)\n\t\t + W(4, -1101537045, -1106860038, -1109809347, 1062536899)\n\t\t + W(5, 1050429425, 1042267175, -1104944731, 1019165331)\n\t\t + W(6, -1102743433, -1113756805, -1112821659, -1094426092)\n\t\t + W(7, -1112140166, -1105504016, -1123143221, -1113092552);\n\tsum2 =\n\t\tW(0, -1118991740, 1035161218, 1031409558, 1025873763) + W(1, -1130385854, -1109675818, 1035221069, -1106515599)\n\t\t+ W(2, 1049660250, -1092533458, 1052404039, 1059098325) + W(3, 1035329255, 1033133876, -1100849576, 1041079456)\n\t\t+ W(4, -1072802862, -1084844108, 1059153934, 1066715964) + W(5, 1054800035, -1121630224, 1017402854, 1051036492)\n\t\t+ W(6, -1093107290, -1131472334, -1099814906, 1050189246)\n\t\t+ W(7, 1033113369, 1032032260, 999987753, -1109656332);\n\tWS(-1088275071, -1079832501);\n\tsum1 = W(0, -1121609972, 1054795207, -1091175970, 1036185063)\n\t\t + W(1, 1036253081, -1095852779, 1056993046, -1099614386)\n\t\t + W(2, -1140631216, 1001216956, -1109051587, -1108520810)\n\t\t + W(3, -1112588624, -1111932116, 1018114011, -1114447781)\n\t\t + W(4, 1031902612, 1053928586, -1100362195, -1118566269)\n\t\t + W(5, 1050418310, -1106845532, 1057036918, -1106898567)\n\t\t + W(6, -1114449795, 1049117898, -1089874193, 1024185910)\n\t\t + W(7, 1033419200, -1098704820, 1052334541, -1103629998);\n\tsum2 = W(0, 1034198694, 981839325, 1050051875, 1043520387) + W(1, -1099547613, 1020237946, -1112528204, 1032634213)\n\t\t + W(2, -1099753021, 1036479145, -1087878645, -1099082069)\n\t\t + W(3, 1049181233, -1106552091, 1051666481, -1105193718) + W(4, 1052074243, 1033443852, 1061175239, 1044393022)\n\t\t + W(5, 1036533430, -1125692060, -1100952955, 1038429221)\n\t\t + W(6, -1101897553, -1125560160, -1090657055, -1126528836)\n\t\t + W(7, -1113239720, -1111189720, 1038783930, -1110455840);\n\tWS(1055684799, 1057467177);\n\tsum1 = W(0, -1115635180, 1040983065, 1033664034, 1047016048) + W(1, 1040303666, 1031194256, 1036112338, 1031542812)\n\t\t + W(2, -1084593518, -1097583958, -1088354001, -1083875169)\n\t\t + W(3, -1089538899, -1090088564, -1096939300, -1092334596)\n\t\t + W(4, 1057349085, 1048845932, 1059080519, 1057461395) + W(5, 1055847004, 1052697432, 1050363555, 1025617138)\n\t\t + W(6, 1044528285, -1108137881, 1042415046, -1130549589)\n\t\t + W(7, 1025308788, 1040121956, -1124884732, 1051059157);\n\tsum2 = W(0, 1039076253, 1043377438, -1111770710, -1129064764)\n\t\t + W(1, 1041506513, -1117340191, -1113661124, 1006037802)\n\t\t + W(2, 1084724252, 1057352437, -1070809771, -1070013447)\n\t\t + W(3, 1024963427, -1115045950, 1037860995, -1120758055)\n\t\t + W(4, 1055999642, -1108204793, -1115649819, -1084654208)\n\t\t + W(5, 1027889169, 1023558847, -1108774739, 1034794526) + W(6, -1111202323, 982595482, 1026864091, 1008953953)\n\t\t + W(7, 1041107952, -1112891517, -1161342746, 1036271073);\n\tWS(-1089965247, 1033154456);\n\tsum1 =\n\t\tW(0, -1118330000, 1043361746, 1028536899, -1106541856) + W(1, -1103233833, 1037178020, -1122355891, -1148310999)\n\t\t+ W(2, 1037068672, -1091726905, -1106295439, -1087991002)\n\t\t+ W(3, -1094017778, 1026207675, -1102222128, -1106998176) + W(4, 1043453383, 1027410848, 1047994631, 1053447482)\n\t\t+ W(5, 1058853977, 1049286760, 1044913013, 1056026770) + W(6, -1112803845, 1030795409, -1111747193, -1109712917)\n\t\t+ W(7, -1110327970, -1111739348, 1037236782, -1104668925);\n\tsum2 = W(0, -1104081637, -1115350296, -1102551062, 1033477476)\n\t\t + W(1, 1048930937, -1092653578, 1049862570, -1095610208)\n\t\t + W(2, -1104712414, 1065017407, -1101193417, 1054909386)\n\t\t + W(3, -1096226206, -1094950793, 1042131871, -1100838677)\n\t\t + W(4, 1038273275, 1027805677, -1097697554, 1069044481)\n\t\t + W(5, 1051154993, -1097937335, -1115393002, -1090656582)\n\t\t + W(6, -1102746442, 1038124336, 1025981021, -1090398660)\n\t\t + W(7, 1049254524, -1111378843, -1100983150, 1038627466);\n\tWS(1053522367, -1088249107);\n\tsum1 = W(0, 1041083642, -1109062519, 1041255149, -1129341567)\n\t\t + W(1, -1122816004, 1034422596, -1105678140, 1002201935) + W(2, 1049354980, 1050121221, 1062047573, 1050256849)\n\t\t + W(3, 1058306025, 1054029415, 1043380368, 1057986114)\n\t\t + W(4, -1104528935, -1089361286, -1094323010, -1085946707)\n\t\t + W(5, -1092704114, -1096738148, -1095183726, -1098664466)\n\t\t + W(6, -1116245577, -1108913352, 1044478835, -1106612546)\n\t\t + W(7, 1010650184, -1127765836, 1004046811, -1116617606);\n\tsum2 = W(0, -1115691041, -1122196578, -1133382325, -1119943136)\n\t\t + W(1, 1035619338, 1026693101, -1121646682, 1035287249)\n\t\t + W(2, 1047105417, 1040512713, -1115639944, -1093984910)\n\t\t + W(3, -1128164365, -1112542694, 1040561229, -1122951759)\n\t\t + W(4, 1066880006, 1072356775, 1070833917, -1106032356)\n\t\t + W(5, -1084317659, -1103058628, -1106694088, -1109474775)\n\t\t + W(6, -1078420733, -1074089832, -1079250237, 1053171659)\n\t\t + W(7, 1063302165, 1050228647, -1111273903, 1041535222);\n\tWS(1054980735, -1118400611);\n\tsum1 = W(0, 1023857233, -1136534172, -1109579886, 1024279465) + W(1, 1031638446, 1042081899, 1025101580, 1037741818)\n\t\t + W(2, 1056052581, 1054619866, 1062631892, 1063340895) + W(3, 1054891904, 1032051762, 1036582853, 1040187076)\n\t\t + W(4, -1108899938, -1084632317, -1087670245, -1087714282)\n\t\t + W(5, -1089981519, -1091518889, -1100292439, -1096282711)\n\t\t + W(6, -1098911041, 1014993130, 1019079234, 984908360) + W(7, 1040973935, 1034243544, 1038263499, 1035333164);\n\tsum2 = W(0, 1048663857, -1115607290, 1050959246, -1094885185)\n\t\t + W(1, 1032263390, -1094433235, 1034671855, -1100445080)\n\t\t + W(2, -1103126769, -1089284711, -1106476140, 1065597134)\n\t\t + W(3, -1114774312, 1044112203, -1110680696, 1044150663)\n\t\t + W(4, -1090522781, -1135630263, -1116194786, 1068281966)\n\t\t + W(5, -1114594327, 1034641663, -1120338125, 1039802827)\n\t\t + W(6, -1135969141, -1096474341, -1110761886, -1097679100)\n\t\t + W(7, 1030603925, 1025157613, -1121778209, -1101519530);\n\tWS(-1099426814, 1028666567);\n\tsum1 =\n\t\tW(0, 1017347599, -1114817850, -1102332157, 1038414608) + W(1, 1040863441, 1043586729, 1033560385, 1024225691)\n\t\t+ W(2, 1050515008, 1054909169, 1058789976, 1049870885) + W(3, -1096181150, -1094822147, -1110297504, 1035801215)\n\t\t+ W(4, -1097546199, -1091252816, -1088740593, 1026332624)\n\t\t+ W(5, 1050979384, 1046083753, 1043042893, -1106319780) + W(6, -1122852442, 1034424401, 1040697053, -1119196265)\n\t\t+ W(7, -1096850298, -1101867410, -1112505198, 1022200238);\n\tsum2 =\n\t\tW(0, 1032296335, -1113414658, 1032045591, -1096252543) + W(1, 1039836782, -1130462124, 1032505935, 1017080436)\n\t\t+ W(2, -1113854030, 1056314261, 1056282685, -1076472908)\n\t\t+ W(3, 1041975936, 1060789196, -1113045826, -1114544525)\n\t\t+ W(4, -1123218166, 1057288090, 1048444709, -1076465599) + W(5, 1054239999, 1064414385, -1101415652, 1017354944)\n\t\t+ W(6, 1034439881, -1106401889, 1027355020, -1099548772)\n\t\t+ W(7, 1041344971, -1137373456, 1031341874, -1131418272);\n\tWS(1048405758, 1021439377);\n\tsum1 = W(0, -1095783591, 1004365570, -1111296393, -1090472608)\n\t\t + W(1, 1053249340, -1096289768, -1116930177, 1031327257) + W(2, 1056714988, 1053912029, 1060368018, 1058906144)\n\t\t + W(3, 1059710205, 1050004859, 1050104788, 1057263364)\n\t\t + W(4, -1095028931, -1097931508, -1093355890, -1084869763)\n\t\t + W(5, -1111710658, -1089344390, -1098648430, -1095692170)\n\t\t + W(6, -1099026446, 1040281084, 1042667324, -1099317986)\n\t\t + W(7, 1058667863, -1094050929, 1032145973, -1127343131);\n\tsum2 = W(0, -1137650289, -1108324664, -1107068637, 1053004242)\n\t\t + W(1, -1096186406, 1044011702, 1031462490, 1016473473)\n\t\t + W(2, -1102128439, 1038586891, -1102631398, -1096144010)\n\t\t + W(3, 1065778432, -1087564484, 1041037240, -1095964556) + W(4, 1065729447, 1042582877, 1055966210, 1066736444)\n\t\t + W(5, -1077760412, -1109340585, -1088233524, -1079487884)\n\t\t + W(6, -1085103011, -1096095433, -1096657292, -1084794119)\n\t\t + W(7, 1061684194, 1053274132, 1060428365, 1070082531);\n\tWS(-1120621558, -1109747932);\n\tsum1 = W(0, 1041405257, 1034046808, -1118447615, 1031113092) + W(1, -1118172841, 1039149197, 1025628006, 1023987646)\n\t\t + W(2, 1056552380, 1057052863, 1034826244, 1061462741) + W(3, 1057041023, 1051800560, 1051243933, 1054503948)\n\t\t + W(4, -1086075216, -1102283433, -1089852749, -1087896594)\n\t\t + W(5, -1089300195, -1089266110, -1098077639, -1098034299)\n\t\t + W(6, 1021959803, 1009707220, 1002695151, 1030648525) + W(7, 1017359341, 1034838445, 1033512688, -1099231069);\n\tsum2 = W(0, -1072120352, -1071453180, -1069998225, -1071241469)\n\t\t + W(1, -1073669228, -1079882002, -1086087106, -1096258120)\n\t\t + W(2, 1076686179, 1075980741, 1075876198, 1076219984) + W(3, 1072219376, 1071235859, 1056170781, 1057784547)\n\t\t + W(4, -1096491690, 1055107632, -1100816518, 1048961210)\n\t\t + W(5, -1123192163, -1097056656, 1049622318, -1098632303)\n\t\t + W(6, -1109988374, -1125676035, 1033428305, 1018908197)\n\t\t + W(7, 1040773271, -1129279043, 1030403985, -1116156171);\n\tWS(1014286296, 1057122707);\n\tsum1 = W(0, -1100574608, -1134927261, -1096946922, -1115033128)\n\t\t + W(1, -1104533485, -1121259095, -1131995140, -1118839498)\n\t\t + W(2, 1045128364, -1112841149, 1023155519, -1094208427)\n\t\t + W(3, -1099169249, -1097752701, -1111007544, -1093400894)\n\t\t + W(4, 1045637171, 1041785732, 1051848326, 1066937726) + W(5, 1058599142, 1049921902, -1118760834, 1043420320)\n\t\t + W(6, -1113867461, 1021982785, -1106336253, -1099783438)\n\t\t + W(7, -1105189673, -1131816685, -1114789302, -1116552190);\n\tsum2 =\n\t\tW(0, 1049653051, -1094509070, 1050525055, -1103662151) + W(1, 1043452805, -1102028885, -1109754017, -1111709279)\n\t\t+ W(2, -1095117458, 1054995367, 1042728281, 1058124872) + W(3, 1049859565, -1097129382, -1098619851, 1051259496)\n\t\t+ W(4, 1052542945, 1021265631, 1046926465, 1063131010) + W(5, 1029162962, -1116537562, -1092457406, -1078653130)\n\t\t+ W(6, 1018695699, -1101605993, 1044635344, -1104882803)\n\t\t+ W(7, 1042944443, -1110047725, -1107003327, -1114867517);\n\tWS(-1089617919, -1078924764);\n\tsum1 = W(0, 1038586191, -1112517470, 1021690773, -1148410045)\n\t\t + W(1, -1123773533, 1037589846, -1114886949, 1015916580) + W(2, 1054651431, 1043170193, 1058605998, 1062049174)\n\t\t + W(3, 1056236357, 1058401044, 1034515388, 1056139353)\n\t\t + W(4, -1087542485, -1101086846, -1088163691, -1087004528)\n\t\t + W(5, -1089020247, -1089711896, -1095006441, -1089662071)\n\t\t + W(6, 1032587193, -1121720345, 1034793549, -1139319682)\n\t\t + W(7, 1040971627, 1052009144, 1017461287, -1138694970);\n\tsum2 =\n\t\tW(0, 1041183203, -1109901203, 1047303939, -1146453442) + W(1, -1103370030, 1035308463, -1107592095, -1129723226)\n\t\t+ W(2, -1104791361, -1103309504, -1109225788, 1050748307)\n\t\t+ W(3, 1032462009, 1055570013, -1104507532, 1050955773) + W(4, -1113641717, 1018299463, 993644855, 1050538753)\n\t\t+ W(5, 1024125183, 1058013570, 1044744090, -1110543421) + W(6, 1040266660, -1124518657, 1039912380, -1107008276)\n\t\t+ W(7, -1094411631, -1087158984, -1091454514, -1122733934);\n\tWS(-1102088830, 1068463311);\n\tsum1 = W(0, 1007817678, -1114291787, -1106493040, -1121377148)\n\t\t + W(1, -1120569345, 1037434082, -1121570543, 1048479966) + W(2, 1054791531, 1051084317, 1059023407, 1060487316)\n\t\t + W(3, 1053262386, 1049438849, 1043319351, 1037267389)\n\t\t + W(4, -1088166471, -1097682087, -1087032011, -1087032009)\n\t\t + W(5, -1090195409, -1104445288, -1110294871, -1112047510)\n\t\t + W(6, 1034628887, -1130503387, 1042839161, 1025313797)\n\t\t + W(7, 1040112167, -1112558866, -1130274577, -1107488086);\n\tsum2 = W(0, -1092702026, -1078842502, -1073165872, -1075365553)\n\t\t + W(1, -1101579557, 1066341075, 1071992070, 1076187261) + W(2, 1046572938, -1092761370, 1048469719, 1050413401)\n\t\t + W(3, -1110447061, -1104166524, -1123716833, 1056626852)\n\t\t + W(4, -1113806693, 1010298098, -1106037347, 1041503306)\n\t\t + W(5, 1037192623, 1033398310, 1031702363, -1110743783)\n\t\t + W(6, 1023924734, -1134107544, -1114438827, 1017902665)\n\t\t + W(7, 1011674154, -1109271682, 1028552632, -1123830383);\n\tWS(1050299903, -1120086405);\n\tsum1 = W(0, 1001761330, 1051426245, -1097473350, 1050955122)\n\t\t + W(1, -1098718343, -1119699408, 1038117517, -1107622229)\n\t\t + W(2, 1015037916, 1042953374, -1103780307, -1082933123)\n\t\t + W(3, 1055455844, -1145769035, -1132909758, 1039587926)\n\t\t + W(4, 1045981578, -1094503950, 1055197076, -1099126616)\n\t\t + W(5, -1118831961, 1049761702, -1105955296, 1047033256)\n\t\t + W(6, 1032160884, -1131440192, -1100940622, 1056645367)\n\t\t + W(7, -1095742542, 1031622998, 1041481643, -1103124921);\n\tsum2 = W(0, 1033493706, 1004282338, 1032395114, 1035721710)\n\t\t + W(1, -1138557465, -1094630455, 1050323990, -1102984389)\n\t\t + W(2, -1100025935, 1036668146, 1043333590, 1058018229) + W(3, 1035348312, 1040910383, 1034465026, 1044530527)\n\t\t + W(4, -1117747708, -1097774825, -1106149887, -1110236537)\n\t\t + W(5, -1105971349, 1017216296, -1110352462, -1108832665)\n\t\t + W(6, -1131691420, 1042472719, -1122758767, -1106477628)\n\t\t + W(7, 1046834331, -1101697584, 1040100106, -1099114129);\n\tWS(1059761855, -1093333930);\n\tsum1 = W(0, -1114738580, -1114617627, -1102727321, 1053910378)\n\t\t + W(1, -1094270689, -1107452471, -1130455238, -1108958070)\n\t\t + W(2, 1026403632, 1045397583, 1028768699, 1067649611) + W(3, -1104323849, 1042776267, 1036450873, 1044075076)\n\t\t + W(4, -1105736123, -1109519752, -1092041414, -1090720496)\n\t\t + W(5, -1112030179, -1103704317, -1131764742, -1106063752)\n\t\t + W(6, -1114933837, 1044731740, -1111636685, 1058839312)\n\t\t + W(7, -1095377736, 1034877772, 1031929286, -1113359528);\n\tsum2 = W(0, 1033753751, -1102724392, -1104466296, -1083668043)\n\t\t + W(1, 1048180527, -1130490520, -1103926430, 1029490699)\n\t\t + W(2, -1111931472, 1032416705, 1029992729, 1069568682)\n\t\t + W(3, -1114422988, -1133345747, 1038116955, -1129834714)\n\t\t + W(4, 1037689465, -1105246922, 1052475163, -1090236396)\n\t\t + W(5, -1122305941, -1123788932, -1127253836, -1122171294)\n\t\t + W(6, 1023732592, -1126463180, -1118149766, -1106129378)\n\t\t + W(7, 1038071226, -1124715334, -1117123194, 1029091180);\n\tWS(1058247519, 1058950523);\n\tsum1 = W(0, -1149972914, 1038957612, 1039970419, 1008158544) + W(1, 1041515382, 1036144305, 1048236362, -1101573740)\n\t\t + W(2, -1088063023, -1093535488, -1086741707, -1077128706)\n\t\t + W(3, -1087332234, 1032313207, -1113848378, -1089306475)\n\t\t + W(4, 1055543086, 1052729022, 1058924163, 1057693884) + W(5, 1060656868, 1056531259, 1049522521, 1052006205)\n\t\t + W(6, 1037155715, 1026693813, 1030719286, 1032127358)\n\t\t + W(7, 1000958261, -1112386573, -1144612480, 1039554949);\n\tsum2 =\n\t\tW(0, 1037957789, -1128637884, -1110859440, 1052981065) + W(1, 1040710261, -1090346288, -1107045102, -1092015484)\n\t\t+ W(2, 1050553491, 1004874497, -1106433025, 1058989771) + W(3, 1058251934, -1076253449, -1079150504, 1073146781)\n\t\t+ W(4, -1089722328, 1058234547, -1098594890, 1052545864) + W(5, -1106724054, 1032950959, 1055215751, 993278274)\n\t\t+ W(6, 1050994656, -1095571828, 1041665953, -1129708900)\n\t\t+ W(7, -1111634443, 1015279680, 1053553553, -1088813426);\n\tWS(-1079689312, 1054955487);\n\tsum1 = W(0, -1112827293, 1038847520, -1106748654, 1038138418)\n\t\t + W(1, 1035397268, 1020226162, 1030022886, -1108673687)\n\t\t + W(2, -1094091800, -1099397203, -1102151838, -1086663035)\n\t\t + W(3, -1087965823, -1095805620, -1098762192, -1096846716)\n\t\t + W(4, 1053343716, 1057879171, 1023820222, 1057249493) + W(5, 1057985827, 1053821069, 1051466543, 1049463311)\n\t\t + W(6, 1046408387, -1099233409, -1154890390, 1012875058)\n\t\t + W(7, -1109124523, -1126965269, 1036334304, 1027304762);\n\tsum2 = W(0, 1029906557, -1110945783, 1046588193, -1121400966)\n\t\t + W(1, -1106274145, 1040948990, -1114149785, 1030737726)\n\t\t + W(2, -1118908362, -1110004947, -1089040350, -1106443118)\n\t\t + W(3, 1054044230, -1115139995, -1112260837, 1025987216)\n\t\t + W(4, -1075330978, -1081100797, -1089891752, -1103643831)\n\t\t + W(5, -1095873523, -1120742988, -1107023588, 1017833328)\n\t\t + W(6, 1069116571, 1067844910, 1066162938, 1048795077) + W(7, 1049522444, 1042365723, 1011222152, 1031208089);\n\tWS(1045323518, -1099573370);\n\tsum1 = W(0, 1043494028, -1110296205, -1129034139, 1040205415)\n\t\t + W(1, 1019451328, 1037480760, -1144942569, 1019441962) + W(2, 1054678847, 1050638833, 1058657792, 1062545342)\n\t\t + W(3, 1053087270, 1054717567, 1044080591, 1056118375)\n\t\t + W(4, -1087400961, -1098183847, -1085969705, -1082320511)\n\t\t + W(5, -1092792902, -1090230188, -1094581114, -1090342307)\n\t\t + W(6, 1041221965, 1038272854, 1035507984, 1038672050) + W(7, 1018934299, 1028598065, 1032398451, -1135273190);\n\tsum2 =\n\t\tW(0, -1115726367, 1028786141, 1044450180, -1097529180) + W(1, 1047479398, -1105649332, -1127420023, 1035799966)\n\t\t+ W(2, -1100272494, -1113941052, -1104186275, 1042859033)\n\t\t+ W(3, -1097402721, 1051025911, 1025042835, -1139194229) + W(4, 1026681555, -1107020345, 1044693748, 1067055887)\n\t\t+ W(5, 1064288021, 1073649944, 1067916626, 1054550763) + W(6, -1095030133, 1043410282, -1120312046, -1093369648)\n\t\t+ W(7, -1083945294, -1073003592, -1079526678, -1086831079);\n\tWS(-1086660959, -1095040438);\n\tsum1 = W(0, -1137772688, -1103872010, 1033664792, -1114303830)\n\t\t + W(1, 1043631948, -1110960013, -1112201312, 1004207675)\n\t\t + W(2, -1101831491, -1108733164, -1099393082, -1091611870)\n\t\t + W(3, -1111668992, -1092153253, -1104258339, -1111896549)\n\t\t + W(4, 1047762270, 1048734598, 1053294440, 1032897582) + W(5, 1054700448, 1051790266, 1038982672, 1042342295)\n\t\t + W(6, 1026497863, -1112526127, 1036444877, -1105948909)\n\t\t + W(7, 1045765800, -1102627253, 1030853145, 1024477884);\n\tsum2 = W(0, 1047134358, 1032860761, 1058187056, -1089859690)\n\t\t + W(1, -1073724300, -1113017653, -1123513506, 1005834992)\n\t\t + W(2, -1100773581, 1019143260, -1086969962, 1060822499) + W(3, 1074524802, -1127402252, 986153015, 1026902445)\n\t\t + W(4, 1038575217, -1097448906, 1050436365, -1092585260)\n\t\t + W(5, -1097001013, 1052022456, -1101541136, 1040058169)\n\t\t + W(6, -1121016162, 1027754828, -1118814167, 1047705700)\n\t\t + W(7, 992280012, -1115523910, 1026625966, -1115254226);\n\tWS(1065625968, 1033455989);\n\tsum1 = W(0, 1037701789, -1137040283, 1000406064, -1094784938)\n\t\t + W(1, 1050863995, -1103592251, 1032127959, 1038622703)\n\t\t + W(2, -1151616802, -1099349487, 1047711372, -1115632781)\n\t\t + W(3, -1088133648, 1049293870, -1118922740, -1120882929)\n\t\t + W(4, -1102944307, 1053320242, -1098462560, 1053161728)\n\t\t + W(5, 1049613697, -1128175786, 1017489163, -1119810116)\n\t\t + W(6, 1035789757, -1106274637, 1048627484, -1098374228)\n\t\t + W(7, -1120581030, -1114622845, 1038993832, -1165953346);\n\tsum2 =\n\t\tW(0, 1035866397, -1103116216, 1059558286, 1058384307) + W(1, -1096953271, 1042132369, -1111426470, -1128202268)\n\t\t+ W(2, -1099238508, 1047962584, -1082734190, -1088122523)\n\t\t+ W(3, 1056069525, -1106560803, 1038442279, 1028886015) + W(4, 1052038184, -1105248240, 1057669233, -1091086098)\n\t\t+ W(5, -1083280561, 1032403631, -1104452063, -1150402298)\n\t\t+ W(6, -1107491561, 1027069673, -1098068789, 1053762892)\n\t\t+ W(7, 1064349048, -1107462772, 1040922744, 1012204557);\n\tWS(1066439152, -1108830929);\n\tsum1 = W(0, -1102916748, -1108788820, -1097607254, -1099017414)\n\t\t + W(1, -1168846782, -1109193920, -1128476473, -1106724277)\n\t\t + W(2, 1055608939, 1051866141, 1058768962, 1030462560)\n\t\t + W(3, -1113005110, -1109987210, -1109670205, -1105116142)\n\t\t + W(4, -1103898045, -1097938907, -1093577324, -1125603603)\n\t\t + W(5, 1040477611, 1050862423, 1039038758, 1053895221) + W(6, 1013732302, 1035488645, 1043113957, 1027216291)\n\t\t + W(7, -1143171172, -1118580993, -1107320747, -1107171108);\n\tsum2 = W(0, 1050905005, 1051922636, 1052154527, 1005525738)\n\t\t + W(1, 1024591478, -1094205878, -1094330307, -1105421569)\n\t\t + W(2, 1051409035, -1107944278, 1040207956, 1060123319)\n\t\t + W(3, 1032045878, -1096175996, -1086096303, -1081193369)\n\t\t + W(4, -1123874142, -1131839644, -1100926997, 1046139234)\n\t\t + W(5, -1113252250, 1039675350, -1128729660, 1062516858)\n\t\t + W(6, -1099079861, 1035659117, -1109355656, 1029590720)\n\t\t + W(7, 1032543174, 1044310065, -1129395200, 1042520685);\n\tWS(-1094347903, 1040885342);\n\tsum1 = W(0, 1027015666, -1097151811, 1050782150, -1106442815)\n\t\t + W(1, 1051184308, -1091810963, 1034433919, 1042242605)\n\t\t + W(2, -1119901274, 1047615033, -1115052947, 1051587896)\n\t\t + W(3, -1105704339, 1046407197, 1009768300, -1122889273)\n\t\t + W(4, -1109404651, 1051228067, -1096976391, -1096200649)\n\t\t + W(5, -1126487153, 1040585575, -1132445914, -1108464678)\n\t\t + W(6, -1145327523, -1096635113, 1048638245, -1105180361)\n\t\t + W(7, 1051518582, -1092825760, 1038762547, 1040013733);\n\tsum2 =\n\t\tW(0, -1121205117, 1031829824, -1105324964, -1090390675) + W(1, -1110420773, 1018005966, -1113281242, 1032068637)\n\t\t+ W(2, -1124056141, -1109805410, 1045427632, 1059020251)\n\t\t+ W(3, -1107061510, -1118368537, -1115675784, -1113920834)\n\t\t+ W(4, -1106581817, 1007706034, 1046732003, 1057752640) + W(5, -1101115525, -1103994134, 1036673543, 1042522746)\n\t\t+ W(6, 1026565438, 1029970286, 1047283254, -1089850616)\n\t\t+ W(7, 1031976810, 1036394258, -1112565336, -1145818031);\n\tWS(1066366016, -1121083386);\n\tsum1 = W(0, -1127500850, -1122305754, 1025706181, -1104671484)\n\t\t + W(1, 1043832110, -1111488580, -1123271764, 1015742169)\n\t\t + W(2, 1026624689, -1114017662, -1088657475, -1098749979)\n\t\t + W(3, -1085705014, 1037547214, -1112264441, -1105147876)\n\t\t + W(4, 1013565235, 1052467062, -1121688536, 1066224034) + W(5, -1112016562, 1041900405, 1043675185, 1022047173)\n\t\t + W(6, -1127181143, 1035730049, 1045310349, 1026340635)\n\t\t + W(7, -1121566277, -1127673329, 998683632, -1132045794);\n\tsum2 = W(0, -1102951634, 1044058166, 1037657608, -1091261805)\n\t\t + W(1, 1057746121, -1106029228, 1006392595, -1119100020)\n\t\t + W(2, 1043023116, -1093545812, -1093647750, 1070997171)\n\t\t + W(3, -1082044166, 1051593249, -1100798567, 1013819138)\n\t\t + W(4, -1104735391, 1058451408, -1104370519, -1105620254)\n\t\t + W(5, -1091103100, -1096225251, 1052307063, -1121077487)\n\t\t + W(6, 1035018995, -1112978123, 1043811519, 1052846459)\n\t\t + W(7, -1097428497, -1127092852, -1107453736, 1041369362);\n\tWS(1059191103, 1030618557);\n\tsum1 = W(0, 1034200101, 1053678608, -1114145283, 1047695489)\n\t\t + W(1, -1114663316, -1137634576, -1125278731, -1138534517)\n\t\t + W(2, 1032351793, 1049973094, 1058794603, 1053292689) + W(3, 1055818163, 1053263444, 1041016873, 1043320696)\n\t\t + W(4, -1100440271, -1098031908, -1087452589, -1078695803)\n\t\t + W(5, -1125225546, -1094543429, -1116533557, -1104858229)\n\t\t + W(6, -1148363237, 1026486548, -1194991971, 1043453347)\n\t\t + W(7, 1033675947, 966472909, -1115520783, -1119664758);\n\tsum2 = W(0, 1021496216, -1072453458, -1079530578, 1063841069)\n\t\t + W(1, -1095958945, 1042172731, 1015153576, -1132334880)\n\t\t + W(2, -1095812325, -1094113031, 1068683999, 1074699170)\n\t\t + W(3, 1043477830, 1031880682, -1121439437, -1115200049)\n\t\t + W(4, -1116672596, -1112299630, -1135088113, -1126165044)\n\t\t + W(5, -1107446259, -1119142347, 1037216194, 1034903618) + W(6, 1031503244, 1023122856, 1036078566, 1036242384)\n\t\t + W(7, -1100441243, 1009915385, -1114450875, 1017712520);\n\tWS(-1096433855, 1052342409);\n\tsum1 = W(0, -1117693364, 1041070378, -1105417036, 1052133240)\n\t\t + W(1, 1042648272, -1123398616, 1044512510, -1105041790)\n\t\t + W(2, 1042163431, -1095385709, 1060080198, -1090036408)\n\t\t + W(3, -1090327769, 1043184694, -1111854479, 1043408999)\n\t\t + W(4, 1006023611, 1034697390, -1109633387, -1085473397)\n\t\t + W(5, 1057448056, -1105658040, -1104977148, 1041051171)\n\t\t + W(6, -1113444755, 1049542464, -1112382959, 1048891757)\n\t\t + W(7, -1111238376, -1106505885, 1049508979, -1110665802);\n\tsum2 = W(0, 1039259027, -1119373866, -1086821333, 1052826002)\n\t\t + W(1, -1117342490, 1036052293, 1037381955, -1101694007)\n\t\t + W(2, 1043188759, -1082984200, -1077733706, 1067327309)\n\t\t + W(3, -1149070344, 1052358305, -1102382047, 1050777563)\n\t\t + W(4, -1165551167, -1105050294, -1103802686, 1068967257)\n\t\t + W(5, 1054626023, -1101813629, -1103461210, -1106555317)\n\t\t + W(6, -1113326246, 1045229872, -1109909290, 1052700624)\n\t\t + W(7, -1098764713, -1099183932, 1052205497, -1096821402);\n\tWS(1046655614, 1069864308);\n\tsum1 = W(0, 1035633391, 1040943483, 1045417382, 1043913370) + W(1, 1050212129, 1047844019, 1039058852, 1043891960)\n\t\t + W(2, -1106200785, 1031319761, -1120751363, -1093886310)\n\t\t + W(3, -1098821847, -1088130094, -1092291401, -1082722808)\n\t\t + W(4, -1105260712, 1026979270, -1106053451, -1121044950)\n\t\t + W(5, 1042106970, 1049054225, 1041620790, 1042598038) + W(6, 1050507575, 1034433460, 1045765948, 1041581532)\n\t\t + W(7, 1029812249, 1017929306, 1028938706, 1034869942);\n\tsum2 = W(0, -1098805029, -1101136548, -1094351375, -1097728468)\n\t\t + W(1, 1040878916, 1049713965, 1037060075, 1058810464)\n\t\t + W(2, -1082465618, -1084472150, -1085764460, -1140347496)\n\t\t + W(3, -1100091144, 1049328541, 1062808960, 1071144827) + W(4, 1017798412, -1108050411, 1031330790, 1053843229)\n\t\t + W(5, 1043199898, 986797508, -1119994130, -1097822096) + W(6, 1045866690, 1039888035, 1027046574, 1038111290)\n\t\t + W(7, -1100094208, -1104239104, -1098800085, 1017716576);\n\tWS(-1077527440, 1065234224);\n\tsum1 = W(0, 1031059492, 1014606833, 1041495444, 1031584061) + W(1, -1143158030, -1140389945, 1035424519, 1013235228)\n\t\t + W(2, -1088676934, -1098001853, -1087241405, -1083911392)\n\t\t + W(3, -1095088526, -1096536807, -1104484775, -1100223239)\n\t\t + W(4, 1055802445, 1051162632, 1059501583, 1061276187) + W(5, 1050088278, 1049527800, 1042937212, 1037087943)\n\t\t + W(6, -1159469258, 1001612013, -1109463457, -1105280809)\n\t\t + W(7, 1038556792, 986827883, 1030875577, 1047418837);\n\tsum2 =\n\t\tW(0, 1026928347, 1006719462, -1103317527, 1043604137) + W(1, -1106627965, 1034526167, -1117999031, -1134258967)\n\t\t+ W(2, 1019217071, -1098369589, 1041304779, -1134457784)\n\t\t+ W(3, 1048134757, -1118427047, 1029994729, -1113504087)\n\t\t+ W(4, 1027288437, -1099640354, 1050941648, -1112266437) + W(5, 1027462477, 1040843010, -1104465031, 1054764710)\n\t\t+ W(6, -1112677997, -1146387796, -1072403340, -1071428003)\n\t\t+ W(7, -1082446250, 1059493547, 1072461191, 1077848621);\n\tWS(1034219259, -1130863201);\n\tsum1 = W(0, -1122470601, -1125729883, -1119868741, -1092963050)\n\t\t + W(1, -1102984950, 1017182198, -1107264969, -1116589116)\n\t\t + W(2, 1036468120, 1031973022, 1045421587, 1062931954) + W(3, 1062738826, 1050208654, 990945063, 1023027040)\n\t\t + W(4, 1033355302, -1125640547, -1122038588, 1044707408)\n\t\t + W(5, -1104269382, -1106320445, -1110744610, -1098846428)\n\t\t + W(6, -1104067775, -1112351746, -1106594245, -1094830635)\n\t\t + W(7, -1127079049, -1109997276, -1112571199, -1117279521);\n\tsum2 =\n\t\tW(0, -1120041672, 999703935, -1109032994, 1041627711) + W(1, -1111815622, 1029813110, -1110751572, -1114401610)\n\t\t+ W(2, 1041156572, 1029144962, 1037796455, 1046556501) + W(3, 1060385029, 1040466231, -1103822492, -1076222058)\n\t\t+ W(4, -1103868400, 1036670980, 1043292537, 1059414852) + W(5, 1048639871, -1105513272, -1100107078, 1043280503)\n\t\t+ W(6, 1036471018, -1107170022, -1115113192, 1029249656)\n\t\t+ W(7, -1126242312, 1043143286, -1101226736, 1034327293);\n\tWS(-1097041087, -1081891922);\n\tsum1 = W(0, 1045201037, 1042240134, 1049780286, 1039927583)\n\t\t + W(1, -1122695635, -1110484942, -1117417409, 1039840796)\n\t\t + W(2, -1097075376, -1091271089, -1094847921, 1059654550)\n\t\t + W(3, 1056430510, 1057233913, 1041827328, 1050554535) + W(4, -1126257330, 1049467348, 1057610047, -1141428591)\n\t\t + W(5, -1089703504, -1087958744, -1096746586, -1096159486)\n\t\t + W(6, -1115394372, -1097795722, -1097045891, -1103383438)\n\t\t + W(7, 1036098616, 1033721138, 1035539581, -1131932502);\n\tsum2 = W(0, 1012982255, -1101224821, -1109376974, -1116588919)\n\t\t + W(1, -1096183361, -1092858264, -1090462581, -1119652925)\n\t\t + W(2, 1052214657, 1042508745, 1042044290, 1071547407)\n\t\t + W(3, -1089469015, -1090264503, 1039700797, -1083767147)\n\t\t + W(4, -1136022111, -1093748656, 1045672838, 1065241977)\n\t\t + W(5, 1049249478, 1047260540, 1046964814, -1107087862) + W(6, 1032353073, 1020863779, -1113516472, 1040242686)\n\t\t + W(7, -1120964187, -1103746594, -1100885683, 1028764718);\n\tWS(-1088621983, 1079497913);\n\tsum1 = W(0, 1027161409, -1102075462, -1120075900, -1109063205)\n\t\t + W(1, -1104005172, -1136555883, -1112015962, 1033292370)\n\t\t + W(2, 1052712773, 1051824794, 1057942154, 1060662493) + W(3, 1062931830, 1057800198, 1047971474, 1059753504)\n\t\t + W(4, -1102058289, -1098602113, -1096292664, -1082645434)\n\t\t + W(5, -1090788424, -1090185155, -1098101583, -1088742454)\n\t\t + W(6, -1100368317, 1021667349, -1106147487, 1039175801)\n\t\t + W(7, -1129475640, 1036809656, 1009161622, -1143403778);\n\tsum2 =\n\t\tW(0, -1150684740, -1114056841, -1164208415, 1034698244) + W(1, -1134574697, 1043895716, -1101980686, 1050191679)\n\t\t+ W(2, -1095235693, -1115238312, -1080604054, -1071093346)\n\t\t+ W(3, -1083926997, 1068501149, 1079699126, 1056576712)\n\t\t+ W(4, 1044985054, -1127339724, -1106549807, -1080554397)\n\t\t+ W(5, -1104923511, 1052487431, 1054997905, 1029700329) + W(6, 1035589955, -1108218072, 1022130402, -1106288272)\n\t\t+ W(7, 1024268734, 1036117000, -1130803558, 1031345667);\n\tWS(-1087955103, 1023517655);\n\tsum1 = W(0, -1106663590, 1037773274, -1116651838, 1022742037)\n\t\t + W(1, 1040438284, -1117813952, 1032561623, -1102318801)\n\t\t + W(2, -1090071677, -1103425461, -1089596734, -1082614473)\n\t\t + W(3, -1088542372, -1092404165, -1100716355, -1098396937)\n\t\t + W(4, 1062902614, 1055773525, 1059014377, 1060267482) + W(5, 1057943128, 1054561254, 1051603940, 1049819671)\n\t\t + W(6, 1013889298, -1100022495, -1101161913, 1030094516)\n\t\t + W(7, -1120043085, -1116951793, 1035114019, 1026546470);\n\tsum2 = W(0, -1107653444, 1032757863, -1150202006, 1037010009)\n\t\t + W(1, 1026258576, 1041748319, -1131622502, -1112646994)\n\t\t + W(2, -1094858135, 1061839668, 1049735190, -1123088190)\n\t\t + W(3, -1089824138, -1098358767, 1049699018, -1103776938)\n\t\t + W(4, 1084595456, 1074196920, 1067688119, 1070729644) + W(5, 1050587980, 1057889952, -1127981435, 1048602984)\n\t\t + W(6, -1065438414, -1069856939, -1073375528, -1082206819)\n\t\t + W(7, -1086758222, -1097734258, -1106404220, -1098587943);\n\tWS(-1089607615, 1063931357);\n\tsum1 = W(0, -1156148665, 1033042784, 1027235975, -1117005684)\n\t\t + W(1, 1045226606, -1112863441, 1040283212, -1102751384)\n\t\t + W(2, -1089422721, -1099513696, -1086976804, -1083936660)\n\t\t + W(3, -1089259880, -1092850238, -1096473171, -1096124078)\n\t\t + W(4, 1059281720, 1053472432, 1060428066, 1061258678) + W(5, 1055780369, 1057981025, 1051704489, 1054893029)\n\t\t + W(6, 1041177357, -1107985659, -1122980350, -1103260375)\n\t\t + W(7, -1111710595, -1109580750, -1125267169, 1035448166);\n\tsum2 = W(0, 1024298597, 1037699935, 1030404477, -1094400051)\n\t\t + W(1, 1052543759, 1024136176, -1159281410, -1102232478)\n\t\t + W(2, 1074606150, 1048614297, -1085515118, -1071672142)\n\t\t + W(3, -1091215560, -1095087497, 1050441058, 1071366890)\n\t\t + W(4, 1080820206, 1047271097, -1079656120, -1066721483)\n\t\t + W(5, -1078287609, -1096732136, 1057126689, 1074685383)\n\t\t + W(6, 1030125639, -1121834510, -1166463196, -1101580999)\n\t\t + W(7, 1028051862, 1009399200, -1117118368, -1113696211);\n\tWS(-1083901183, 1060981851);\n\tsum1 = W(0, -1106299749, 1039492049, -1113140273, 1055856482)\n\t\t + W(1, -1103186821, -1108369378, -1115937041, -1127954738)\n\t\t + W(2, 1048978486, -1107896957, -1119192025, -1090009641)\n\t\t + W(3, -1088174932, 1034759564, 1008970428, 1027686380)\n\t\t + W(4, 1016862419, -1115539879, -1098481927, 1058119768) + W(5, 1052019064, 1048477348, 1034559233, 1044214632)\n\t\t + W(6, -1121286832, 1049662006, -1106196840, -1149152444)\n\t\t + W(7, -1101797848, -1146708651, 1024756171, -1111878699);\n\tsum2 = W(0, 1030335348, -1110488253, -1096373435, 1042224202)\n\t\t + W(1, 1038378538, -1117770266, 1036930446, -1168276161)\n\t\t + W(2, -1130369060, 1056034410, -1097486091, -1094958491)\n\t\t + W(3, 1057631708, -1114209587, -1105273765, -1115537765)\n\t\t + W(4, -1106797797, 1040331307, 1063611375, -1106971469)\n\t\t + W(5, -1093142933, 1037075531, -1115233817, 1025218793)\n\t\t + W(6, 1006653296, -1094310491, -1113782011, 1042512890)\n\t\t + W(7, -1140559356, -1114686161, -1115373149, 1026640233);\n\tWS(1063762143, -1098158381);\n\tsum1 =\n\t\tW(0, 1027555010, -1113176415, 1044835884, -1094480963) + W(1, 1042205032, 1038186408, -1112247611, 1041241393)\n\t\t+ W(2, -1106988831, 1049655577, -1089572014, 1041189880) + W(3, 1035602487, -1095655321, 995617211, -1102946366)\n\t\t+ W(4, 1031921883, 1032851437, -1106152127, 1057311541) + W(5, -1100163979, 1046700975, 1050763922, -1119959180)\n\t\t+ W(6, 1033567284, -1099137927, 1052671923, -1101762329)\n\t\t+ W(7, -1106014811, 1044902280, -1094051821, 1044480349);\n\tsum2 =\n\t\tW(0, 1010916279, -1108274646, -1108043460, 1049469526) + W(1, 1061284555, -1097521196, 1047936551, -1106103943)\n\t\t+ W(2, 1040615985, 1037755544, -1107213139, -1085933104) + W(3, -1098201753, 1027381238, 1007266289, 1039340208)\n\t\t+ W(4, -1103581164, 1053142923, -1091384808, -1093682556)\n\t\t+ W(5, -1095835641, 1044225612, -1101597200, 1011948943)\n\t\t+ W(6, -1126424725, -1119616718, 1062997316, 1050086980)\n\t\t+ W(7, 1044548392, -1099920539, 1043928239, -1120667237);\n\tWS(1060336095, -1119657045);\n\tsum1 = W(0, 1023788715, -1117126579, -1108875843, 1022815367)\n\t\t + W(1, -1100562722, 1043213137, -1111482971, -1142747249)\n\t\t + W(2, 1048279897, 1044311660, 1062204714, 1060724749) + W(3, 1063043033, 1050929706, 1037241746, 1051192212)\n\t\t + W(4, -1106238784, -1096869700, 1019770348, -1081389759)\n\t\t + W(5, -1084472996, -1097593661, -1106654286, -1102133781)\n\t\t + W(6, -1110161279, -1136931731, -1115905233, 1034904806)\n\t\t + W(7, -1124661292, 1017832853, -1109716592, -1109353889);\n\tsum2 = W(0, 1036664563, -1103288529, -1102134383, 1057556566)\n\t\t + W(1, -1099512639, 1031668335, -1103860103, 1028018661)\n\t\t + W(2, 1009247708, -1126560341, -1067246446, 1067728497)\n\t\t + W(3, 1078180911, -1085231458, 1047956293, -1114058193)\n\t\t + W(4, 1013790140, -1102369678, 1047852878, -1093152080)\n\t\t + W(5, -1110504691, 1042704555, -1132621098, 1030531898) + W(6, 1035577258, 1008412166, 1016094574, 1045655865)\n\t\t + W(7, -1123477495, 1023608957, -1112760821, -1120624893);\n\tWS(1035518203, 1045613832);\n\tsum1 = W(0, 1044215468, -1096085823, -1102751483, 1007706274)\n\t\t + W(1, -1098118842, 1051305356, -1096250919, -1106455273)\n\t\t + W(2, 1057279232, 1043513429, 1057361220, 1061539183) + W(3, 1057962612, 1058710773, 1037420261, 1053125757)\n\t\t + W(4, -1097478568, -1096451901, -1091716958, -1085528932)\n\t\t + W(5, -1093017477, -1091718961, -1100741095, -1097230063)\n\t\t + W(6, 1042423606, -1098498663, 1012832112, 1054368634)\n\t\t + W(7, -1103819295, 1057808613, -1100568821, -1111733504);\n\tsum2 = W(0, -1105709018, 1050542737, -1106108137, 1027983028)\n\t\t + W(1, 1053295819, -1091042532, 1049054259, -1108416827)\n\t\t + W(2, 1058997495, -1084246791, -1103685622, -1106510960)\n\t\t + W(3, -1089515541, 1066680974, -1088412186, 1037143386)\n\t\t + W(4, -1086433444, 1065459234, 1055198365, -1102412567)\n\t\t + W(5, 1057925132, -1080963495, 1056230430, 1049505110) + W(6, 1022365788, -1101303092, 1040995532, 1044759128)\n\t\t + W(7, -1104466949, 1043286350, -1096360229, -1106131860);\n\tWS(-1103921662, 1072713673);\n\tsum1 = W(0, 1042712209, -1130675027, 1041149044, -1108819823)\n\t\t + W(1, -1099465033, -1102885798, -1108891552, -1122152216)\n\t\t + W(2, -1111681022, -1104528338, -1103688784, 1055222237)\n\t\t + W(3, 1063848575, 1053207587, 1051374172, 1044600823) + W(4, 1029885560, 1032835743, 1053127408, -1089836355)\n\t\t + W(5, -1089832742, -1090841456, -1098121506, -1101098252)\n\t\t + W(6, -1123292759, -1124533373, -1101763282, -1143773237)\n\t\t + W(7, 1044926036, 1032528402, 1040294582, 1018003689);\n\tsum2 = W(0, -1116466906, 1032691193, -1110682367, -1134651946)\n\t\t + W(1, 1019799157, 1020309206, 1028255175, -1118897648) + W(2, 1017580326, 1031996320, 1040673767, -1121084452)\n\t\t + W(3, 1012141662, -1123645954, -1125118807, 1005021204)\n\t\t + W(4, -1100144980, 1045143645, 1055366708, -1112456349)\n\t\t + W(5, 1037079065, 1036705771, -1112096331, 1021253254) + W(6, 1018640494, 1067424527, 1071822180, 1057195246)\n\t\t + W(7, -1078565795, -1073530916, -1087156462, 1033125682);\n\tWS(1054959295, 1011151216);\n\tsum1 = W(0, -1124554365, 1028540695, -1107828893, -1135601758)\n\t\t + W(1, -1135515507, 1032466990, -1110097877, 950109203) + W(2, 1043778462, -1104732576, 1063706911, 1052343180)\n\t\t + W(3, 1050410381, -1128754020, 1034222620, 1043960229)\n\t\t + W(4, -1140499785, -1111020475, -1098481604, -1081762405)\n\t\t + W(5, 1053053447, -1112972157, 1023071124, -1120112616)\n\t\t + W(6, -1103855992, -1113072532, -1121738665, 1048654720)\n\t\t + W(7, -1096321673, 1012954617, -1110289546, -1114439871);\n\tsum2 =\n\t\tW(0, -1104841432, 1047690020, -1084375561, -1086552004) + W(1, 1046416693, 1025710892, -1130856953, -1113936449)\n\t\t+ W(2, 1047456971, -1094867354, 1068880529, 1065412328)\n\t\t+ W(3, -1080289298, -1110380578, -1105039836, 1016290713)\n\t\t+ W(4, 1024424907, 1033457856, 1046341732, -1087761187) + W(5, 1062384539, -1103331799, 1024509174, -1126452938)\n\t\t+ W(6, 991739097, -1129013032, -1103560341, 1059009805)\n\t\t+ W(7, -1098849357, 1045332030, -1104241974, 1019994493);\n\tWS(1061669311, 1066543312);\n\tsum1 =\n\t\tW(0, -1120030840, -1111872182, 1046388965, -1109640224) + W(1, 1051640445, -1104742312, 1040612129, 1018742870)\n\t\t+ W(2, -1097490380, 1051889621, -1085299564, 1043197314)\n\t\t+ W(3, -1099578605, -1114905437, 1033952272, -1095793020)\n\t\t+ W(4, 1038501126, -1110528784, 1050043436, 1054292822) + W(5, -1095700775, 1056051928, -1108619674, 1044337364)\n\t\t+ W(6, 1026361650, -1112085217, 1019064063, -1116217609)\n\t\t+ W(7, 1045441021, -1097066005, -1146667493, 1039394788);\n\tsum2 = W(0, 1041249103, 1040922446, 1047169006, -1133026152) + W(1, 1045305983, -1121038685, 1032067159, 986169209)\n\t\t + W(2, -1098300344, -1147221163, -1097103704, 1055827658)\n\t\t + W(3, -1082349433, -1105225178, 1036618956, -1102095468)\n\t\t + W(4, 1041141085, 1014590689, -1094689158, 1056443342)\n\t\t + W(5, 1051958562, 1035590360, -1098250629, -1145857885)\n\t\t + W(6, -1123648820, -1115292810, 1021735499, 1023898168)\n\t\t + W(7, -1153021086, 1038130213, 1035045284, 1030074795);\n\tWS(1066007616, 1040865170);\n\tsum1 = W(0, 1016703369, -1106398093, -1114560988, -1096325697)\n\t\t + W(1, -1094335779, 1023023221, -1113231876, 1022983872)\n\t\t + W(2, -1154003525, 1038441464, -1112021256, 1050813825)\n\t\t + W(3, 1059033474, -1108543232, 1040892233, 1034570898) + W(4, -1104662792, 1031083397, 1052887594, 1061249791)\n\t\t + W(5, -1126656183, -1106571274, -1121820472, -1115038347)\n\t\t + W(6, -1111826720, -1146451379, -1102003526, -1102172436)\n\t\t + W(7, -1104413998, -1109007926, -1112600993, -1123919488);\n\tsum2 = W(0, -1117895883, 1036640719, -1092695525, -1109277526)\n\t\t + W(1, 1054484712, -1102073467, 1047716642, -1115714917)\n\t\t + W(2, -1109314178, -1103775527, -1079308608, -1088245301)\n\t\t + W(3, 1032194306, 1058556412, -1097777200, 1049638324) + W(4, 1043196819, 1047073701, 1032498235, 1071134194)\n\t\t + W(5, -1098274857, -1102222667, 1028797614, -1109885254)\n\t\t + W(6, 1029963629, -1117061975, 1053147047, -1113344034)\n\t\t + W(7, 1027577620, -1104158962, 1019489703, -1106961770);\n\tWS(-1112959995, -1090797387);\n\tsum1 = W(0, 998546749, -1102515009, 1018649191, 1024148768) + W(1, 1036601843, 991750171, -1134314668, 1024106779)\n\t\t + W(2, -1107113888, -1157171375, -1095395659, -1088418302)\n\t\t + W(3, -1108499994, -1092700079, -1100812608, -1106951576)\n\t\t + W(4, 1042251615, 1043372984, 1057847906, 1049085946) + W(5, 1054314562, 1052242560, 1010001228, 1043704436)\n\t\t + W(6, 1034524319, -1109045169, 1025715818, -1107024218)\n\t\t + W(7, 1036766314, -1102346050, 1041369791, -1136260253);\n\tsum2 = W(0, -1097076796, 1000463738, -1083533587, 1064100942)\n\t\t + W(1, 1074997490, 1043707697, 1028507309, -1152835380) + W(2, 1045091130, 1024736081, 1064625577, -1096201033)\n\t\t + W(3, -1071550159, -1106033160, -1118548401, -1111712908)\n\t\t + W(4, 1028367411, 1040206702, -1112850496, -1086258418)\n\t\t + W(5, 1052069491, -1098690685, 1050202273, -1113053149)\n\t\t + W(6, 1016501386, -1122385083, -1104146558, 1050125885)\n\t\t + W(7, -1105686824, 1041978517, -1109567340, 1032203802);\n\tWS(1065286463, -1155116140);\n\tsum1 = W(0, -1127743664, 1036265535, -1118137852, -1121018025)\n\t\t + W(1, 1024160014, 1028265374, 1031461691, -1116217572)\n\t\t + W(2, -1099417962, -1091060822, -1088882712, -1089265061)\n\t\t + W(3, -1088513194, -1090887512, -1097685517, -1096201501)\n\t\t + W(4, 1047837241, 1038987540, 1061626690, 1069311516) + W(5, 1053957977, 1051214117, 1050330231, 1045642342)\n\t\t + W(6, 1035108393, -1121911642, -1119901843, -1100290432)\n\t\t + W(7, -1101311755, 980641778, 1030945477, 1036102670);\n\tsum2 = W(0, 1023964675, 1054178647, -1104607531, -1088748842) + W(1, 1034720649, 1027793575, 1026748348, 1048440611)\n\t\t + W(2, -1104287950, -1098771138, 1030951671, 1062304002)\n\t\t + W(3, 1056993385, -1095484784, -1103591056, -1115722179)\n\t\t + W(4, -1095527688, -1106164282, 1049293814, 1069791349)\n\t\t + W(5, -1106129898, -1093744890, 1040804508, -1102843948)\n\t\t + W(6, -1107378538, -1107123343, -1102317974, -1093097006)\n\t\t + W(7, -1107155572, -1104614583, -1111048704, 1036145149);\n\tWS(-1107864827, -1106183398);\n\tsum1 = W(0, -1106667222, 1032383543, -1104095901, -1105126732)\n\t\t + W(1, -1119082647, -1099092218, -1106477481, -1100466619)\n\t\t + W(2, 1028246417, -1105288567, 1024277645, 1031807228) + W(3, 1024663749, 1059042594, 1038514313, 1061247795)\n\t\t + W(4, 1062610107, 1048732230, 1033194034, -1097352540)\n\t\t + W(5, 1042072353, -1097841594, -1132497297, -1116357250)\n\t\t + W(6, -1094330385, -1113355593, -1100412503, -1110531197)\n\t\t + W(7, -1106817153, -1119219065, -1116226478, -1112377140);\n\tsum2 = W(0, -1124057659, -1107748661, -1106641450, -1106278570)\n\t\t + W(1, -1115427744, 1045306633, -1107251222, 1044220643)\n\t\t + W(2, 1049202878, 1029365940, -1100669682, -1090514146)\n\t\t + W(3, 1050790854, -1101749265, 1044664667, 1051259000)\n\t\t + W(4, 1055877653, 1040631102, -1121942624, -1097531540)\n\t\t + W(5, -1095195500, 1044511371, -1123742683, 1035140356)\n\t\t + W(6, 1043135164, -1120955446, 1048773070, -1096084011)\n\t\t + W(7, 1040842880, -1101432694, -1108344435, -1156279482);\n\tWS(-1107710971, -1103335008);\n\tsum1 =\n\t\tW(0, 1020774038, -1097452822, -1103681302, -1142400543) + W(1, -1130541650, 1035627390, 1026485526, 1026933710)\n\t\t+ W(2, 1057965326, 1052789750, 1061528673, 1059882105) + W(3, 1058381533, 1052101646, 1047827121, 1048909172)\n\t\t+ W(4, -1096736580, -1097416740, -1090723228, -1082070814)\n\t\t+ W(5, -1096313647, -1092903493, -1095953623, -1094072619)\n\t\t+ W(6, -1108312647, 1007270548, 1008435167, 1032878150) + W(7, 1024150455, 1029066731, 1024752368, -1129872006);\n\tsum2 = W(0, -1091198687, -1096592719, -1088722291, 1017819408)\n\t\t + W(1, -1104841225, 1047280108, -1133964792, 1046210234) + W(2, 1051358993, 1056674994, 1050253089, 1057806550)\n\t\t + W(3, -1098514434, -1095745001, -1121773836, -1101840089)\n\t\t + W(4, 1026242284, -1102658445, 1039492851, 1048044980)\n\t\t + W(5, 1047848116, -1114927114, 1009730080, -1115459009)\n\t\t + W(6, 1036983987, -1112372364, -1109827680, 1033031265)\n\t\t + W(7, -1106004699, -1128936304, 1044703642, -1121859563);\n\tWS(1046617982, -1079283690);\n\tsum1 = W(0, -1112235521, -1112371935, 1046025067, -1114138877)\n\t\t + W(1, -1100106092, -1106636112, 1006684852, -1134743124)\n\t\t + W(2, -1103103206, 1005568807, -1082068590, 1053438832)\n\t\t + W(3, 1050481934, -1113851306, -1101804759, -1101795702)\n\t\t + W(4, 1050398983, 1053710959, 1059470764, 1056782757) + W(5, -1084354719, 1044662919, 1028720557, 1040488963)\n\t\t + W(6, 1031782004, -1112406582, -1109731202, -1120370051)\n\t\t + W(7, 1047048563, -1114617505, -1122334215, 1035089325);\n\tsum2 =\n\t\tW(0, -1123583696, 1041752924, -1096033091, 1045050816) + W(1, -1111810372, 1044170848, 1035342189, -1107148363)\n\t\t+ W(2, -1114190125, -1107057915, 1054169171, 1066165326)\n\t\t+ W(3, -1090934807, -1094482563, 1030376713, -1140242036)\n\t\t+ W(4, -1123424510, -1108427412, -1101097272, 1060681517)\n\t\t+ W(5, -1093738003, -1094742214, -1122528198, 1046835784)\n\t\t+ W(6, 1035265901, 1011193218, -1097576107, 1037309084) + W(7, -1094306097, 1047478278, 999245333, -1118953940);\n\tWS(1057107647, -1115492411);\n\tsum1 = W(0, 1043432615, 1017716083, -1115224236, 1034158091) + W(1, 1031606075, 1040917102, -1119339928, 1006053250)\n\t\t + W(2, 1037909322, 1044219192, 1059480955, 1055275264) + W(3, 1062186253, 1051479740, 1036604907, 1049031914)\n\t\t + W(4, -1092726398, -1094557923, -1089724826, -1079486955)\n\t\t + W(5, -1094016652, -1090199321, -1111430132, -1124163213)\n\t\t + W(6, 1042270260, 1036944691, 1049175094, 1036017407)\n\t\t + W(7, -1112299996, 1012181234, 1026270626, -1106538704);\n\tsum2 = W(0, 1018646782, -1107779390, 1048577488, -1094766117)\n\t\t + W(1, 1029078775, -1115207772, 1041354677, -1134027235)\n\t\t + W(2, 1037675363, 1041358579, -1103110037, 1063077105)\n\t\t + W(3, -1094239344, -1097294293, -1106609062, 1005749079)\n\t\t + W(4, 1056993548, -1114299594, -1108103869, 1069120744)\n\t\t + W(5, 1019393926, -1090842684, -1103795001, -1111892981)\n\t\t + W(6, -1095820604, -1106961783, -1113810892, -1094104293)\n\t\t + W(7, -1100654825, 1030620215, 1015746998, 1031888221);\n\tWS(1038408187, -1104646224);\n\tsum1 =\n\t\tW(0, -1100666444, 1032659338, -1096791479, 1050254507) + W(1, -1125163769, 1034716030, -1104041563, 1024265746)\n\t\t+ W(2, 1031841147, -1095811512, 1046629869, -1086582314)\n\t\t+ W(3, -1092033141, -1095590162, 1012740704, -1097384267) + W(4, 1045835257, 1046356758, 1055310447, 1049546009)\n\t\t+ W(5, 1059064223, 1032941357, 1016606100, 1043234370) + W(6, -1121385297, -1115316924, -1109718991, 1043876936)\n\t\t+ W(7, -1115882186, 1051195252, -1110386378, -1121465454);\n\tsum2 =\n\t\tW(0, 1033146053, 1034495435, 1033891153, 1015618236) + W(1, -1102272365, 1026402836, -1126192412, -1130670616)\n\t\t+ W(2, 1033178697, 1013274853, 1044565157, -1083473003) + W(3, 1047899954, 1033829854, 1026659107, -1129244632)\n\t\t+ W(4, -1110558215, -1103797816, -1074394842, -1075035519)\n\t\t+ W(5, 1070896015, -1107786181, 1039466503, 1033633210) + W(6, -1107600367, 1046600596, -1096372667, 1071496075)\n\t\t+ W(7, 1070598351, -1103057086, -1099451771, -1106841766);\n\tWS(1060540543, -1145107984);\n\tsum1 = W(0, 1016949312, 1033700674, 1008485935, 1050394829) + W(1, 1025975118, 1027755062, -1166944971, 1036625882)\n\t\t + W(2, -1111708420, -1115158282, -1112773425, -1105627788)\n\t\t + W(3, -1166436080, 1049090616, -1131929874, 1027903943)\n\t\t + W(4, 999025948, 1037057540, -1111113150, -1105528438)\n\t\t + W(5, -1092533512, -1097657169, -1125616567, -1104970374)\n\t\t + W(6, -1110878953, 1034636061, 1006219749, 1047777444) + W(7, 1034379342, 1023310559, 1042471825, 1029991232);\n\tsum2 =\n\t\tW(0, -1112727972, 1041061913, 1030171918, 1049192765) + W(1, -1097932217, -1108991614, -1128255593, -1128975721)\n\t\t+ W(2, 1028528033, 1047913039, 1058299937, -1088725965) + W(3, 1006741474, 1028842331, -1119404040, 1019613109)\n\t\t+ W(4, 1050127712, -1120606988, -1075312291, 1051042420) + W(5, 1061621025, -1120436768, 1041035795, 1038145345)\n\t\t+ W(6, 1039139414, -1090975722, -1096898908, 1056682084)\n\t\t+ W(7, 1043329296, -1136718330, 1019658885, 1017746289);\n\tWS(1058512095, 1047466767);\n\tsum1 = W(0, 1025672397, 1032743763, 1046625694, 1040236986) + W(1, 1041791363, 1042422310, 1024317081, 1034505416)\n\t\t + W(2, -1102753041, 1015664161, -1102686879, -1099087483)\n\t\t + W(3, -1097904327, -1097334084, -1123206279, -1096407969)\n\t\t + W(4, 1037445664, 1032570339, -1091026739, -1089271035)\n\t\t + W(5, -1100626131, 1051389809, 1041773046, 1050962859) + W(6, 1037433000, 1033220516, 1035056566, 1024398415)\n\t\t + W(7, 1043847942, 1042353123, 1037697617, 1047698739);\n\tsum2 = W(0, -1111694157, -1113457231, 1007020677, -1110494513)\n\t\t + W(1, 1036239980, 1042151096, 1014804229, 1038268008)\n\t\t + W(2, -1097429792, 1040318944, -1109123041, -1087577139)\n\t\t + W(3, -1115766281, 1033854974, 1056323633, 1058473731) + W(4, 1052756319, -1131566802, 1066240251, 1071158756)\n\t\t + W(5, 1055974927, -1085216854, -1076147337, -1078122726)\n\t\t + W(6, -1115035673, -1108486657, 1057627634, 1052796029)\n\t\t + W(7, 1037312144, 1031946717, -1107413695, -1088208012);\n\tWS(-1087119871, 1051442968);\n\tsum1 = W(0, -1106951233, 1026199466, -1111827529, 1034911407)\n\t\t + W(1, -1110066258, 1036906330, -1121489041, -1123695161)\n\t\t + W(2, -1101188351, -1102133666, -1096477343, -1081083296)\n\t\t + W(3, -1093686286, -1089794286, -1102503648, -1096524016)\n\t\t + W(4, 1055191809, 1046522759, 1061746551, 1062137809) + W(5, 1056808794, 1061657374, 1025414769, 1043754020)\n\t\t + W(6, -1118371512, 1024298399, -1102462991, -1118895495)\n\t\t + W(7, -1105243164, 1028468933, 1001909715, 1039027467);\n\tsum2 =\n\t\tW(0, 1036012528, -1136414534, 1028357901, 1018170307) + W(1, 996800246, -1115554829, 1018408279, -1128152611)\n\t\t+ W(2, -1111568121, 1023613585, 1046290638, -1086518431) + W(3, 1032866656, 1040198779, -1115393969, 1031067220)\n\t\t+ W(4, -1125130883, 1037328619, -1077265349, -1068062671)\n\t\t+ W(5, 1083861052, 1057186482, -1101393956, 1024816461) + W(6, 1019317279, -1141870971, -1105362146, 1041918725)\n\t\t+ W(7, 1040576139, -1110577355, 1032099345, -1109411807);\n\tWS(1041081598, -1101063046);\n\tsum1 = W(0, 1038662072, -1105628103, 1046838359, -1112508084)\n\t\t + W(1, -1112561351, 1047812813, -1106996345, 1045311157)\n\t\t + W(2, -1123374599, 1048894326, 1044003395, 1062900743) + W(3, 1058339600, 1041428913, 1044355834, 1013224727)\n\t\t + W(4, 1035193857, -1098151405, -1109376817, -1082115704)\n\t\t + W(5, -1087104856, -1097118497, -1098603955, -1110120844)\n\t\t + W(6, -1104056554, 1009505700, -1107771451, 1039692648)\n\t\t + W(7, 1049374543, -1126547869, 1037690530, -1121969199);\n\tsum2 =\n\t\tW(0, 1034938637, -1110454828, 1044300205, -1094841314) + W(1, 1049263704, -1123904781, 1032882093, 1018550156)\n\t\t+ W(2, -1102665080, 1066739686, 1063593500, -1072571644) + W(3, 1050585763, 1033188794, 1040935597, 992411043)\n\t\t+ W(4, -1083931487, 1057500561, 1069787057, -1073076170) + W(5, 1057940110, 1049962317, -1103057884, 1032437745)\n\t\t+ W(6, -1096043986, 1050111041, 1057117236, -1094917255)\n\t\t+ W(7, 992791419, -1119131193, -1129197337, -1139242755);\n\tWS(1047493374, 1019974383);\n\tsum1 = W(0, 1039818779, 1022499782, -1111466513, -1128872350)\n\t\t + W(1, -1102282821, 1027318580, -1112367361, -1121442618)\n\t\t + W(2, 1024992878, 1056719767, 1056992349, 1066523241) + W(3, 1057279594, 1050310409, 1043633508, 1050332018)\n\t\t + W(4, -1099980259, -1093967742, -1089692488, -1081677329)\n\t\t + W(5, -1104336096, -1095763174, -1147598863, -1103201160)\n\t\t + W(6, -1119405261, 1017537921, -1134657044, 1032226588)\n\t\t + W(7, -1110606353, 1029746358, -1105211995, -1109613299);\n\tsum2 =\n\t\tW(0, -1109381660, 1024006001, 1048332575, 1030946168) + W(1, -1111460550, -1115660792, 1027780517, -1125113546)\n\t\t+ W(2, -1099927212, 1048105027, 1083214625, -1068785948)\n\t\t+ W(3, -1080184440, -1125303858, -1129923962, 972536438) + W(4, 1032613200, 1031703418, 1051352300, -1082836395)\n\t\t+ W(5, 1047472657, 1027323348, 1006215943, -1123338357) + W(6, 1013674604, -1113331152, 1010546556, -1137462284)\n\t\t+ W(7, 1033485356, 1034637753, -1112671380, 1033990282);\n\tWS(1049191295, 1026054180);\n\tsum1 = W(0, 1015431080, -1114491642, -1106844240, 1052544606)\n\t\t + W(1, -1101337172, 1006821496, 1048579163, -1107367092)\n\t\t + W(2, -1104530451, 1045418990, -1091806904, -1092275830)\n\t\t + W(3, 1032037152, -1091613549, -1136631349, -1104046587)\n\t\t + W(4, -1120791464, -1105318659, 1059085476, -1096734436)\n\t\t + W(5, 1055073816, 1054997266, -1117752159, 1054027444) + W(6, 1041795830, -1107859847, 1035107546, 1050727987)\n\t\t + W(7, -1098252244, 1024892180, -1114835508, -1107321874);\n\tsum2 = W(0, 1026733028, -1099170713, -1116840904, -1119731112)\n\t\t + W(1, -1105853851, 1023766170, -1109160117, -1110446049)\n\t\t + W(2, 1045033945, 1052123052, 1011374557, 1034116255) + W(3, 1042679995, -1103542762, 1002727514, -1116987471)\n\t\t + W(4, 1006278578, -1100795787, -1137517037, -1093051584)\n\t\t + W(5, 1032967726, 1030006514, 1010971477, 1032206215) + W(6, 1045459634, 1045732660, 1036547859, 1049735621)\n\t\t + W(7, -1115758581, 1012804929, -1107202197, -1108882618);\n\tWS(1061349183, 1052960956);\n\tsum1 =\n\t\tW(0, -1129777715, -1138324169, 1040354025, -1113069161) + W(1, 1026875928, -1148679486, 1026350741, -1099366619)\n\t\t+ W(2, -1091852750, -1098630008, -1086948121, -1087783598)\n\t\t+ W(3, -1090578505, -1098392878, -1105317245, -1113156712)\n\t\t+ W(4, 1051531432, 1050117038, 1058780391, 1063142264) + W(5, 1054898923, 1055753851, 1035239971, 1049214940)\n\t\t+ W(6, 1028688348, 1001458973, 1026112190, -1101543047) + W(7, 1001807913, -1107707133, 1009551482, 1035358529);\n\tsum2 =\n\t\tW(0, 1030464194, -1114101658, 1031167290, 1076423743) + W(1, 1075592137, -1122765276, -1073082101, -1067763317)\n\t\t+ W(2, 1016786912, -1111442214, 1040962599, 1052649879) + W(3, 1059016603, -1109148248, 1031660172, -1093716078)\n\t\t+ W(4, -1124271380, 1036708968, -1145350210, -1106763968)\n\t\t+ W(5, 1036666460, -1102467968, 1040647493, -1123536642)\n\t\t+ W(6, -1112870762, 1035127660, -1119263136, 1030450749)\n\t\t+ W(7, -1114823676, 1030453841, -1120712732, 1004437586);\n\tWS(1049240575, 1032641532);\n\tsum1 = W(0, 1013730783, -1105480706, -1114036922, -1113879072)\n\t\t + W(1, -1104229785, -1108053747, -1114764169, -1146082265)\n\t\t + W(2, 1058635434, 1033988870, 1060052265, 1060507082) + W(3, 1060417175, 1056801557, 1045744608, 1050162924)\n\t\t + W(4, -1096215015, -1101342144, -1095577996, -1090178495)\n\t\t + W(5, -1088104859, -1096180920, -1096622362, 1035143657)\n\t\t + W(6, -1112522509, -1114702617, 1026538642, -1118644393)\n\t\t + W(7, 1026113715, -1115402364, -1165415829, -1096614130);\n\tsum2 = W(0, -1122276311, 1035291415, -1120194245, 1040446858)\n\t\t + W(1, -1120530587, -1138075205, 1025217366, -1118638617)\n\t\t + W(2, -1070701037, -1088124412, 1066415245, 1074084237)\n\t\t + W(3, 1049852139, -1122804719, 1023048268, -1139513797)\n\t\t + W(4, -1102500792, -1135890037, 1041496354, -1104713726)\n\t\t + W(5, -1121031703, -1103825640, -1123990667, 1028358694)\n\t\t + W(6, -1123484857, -1122878839, 1004310705, 1043449641)\n\t\t + W(7, 1033156545, 1027648711, 1022832518, -1136916673);\n\tWS(1058199967, 1050173679);\n\tsum1 = W(0, 1035142580, 1027370573, -1130262537, 1035504777)\n\t\t + W(1, -1114438555, -1117883815, 1019391016, 1002653538) + W(2, 1049466778, 1058691576, 1039593430, 1068404719)\n\t\t + W(3, 1055172389, 1049428736, 1057860609, 1038434456)\n\t\t + W(4, -1090097411, -1101732588, -1086371009, -1088745136)\n\t\t + W(5, -1085029652, -1087836907, -1099893249, -1090680108)\n\t\t + W(6, -1180331449, 1040649373, -1120260556, 1040680775)\n\t\t + W(7, 1044382793, -1124005336, 1042216563, -1112700144);\n\tsum2 = W(0, -1116884059, 1053572077, -1098664530, 1052736946)\n\t\t + W(1, -1109898534, -1100793752, 1049155169, -1110972354)\n\t\t + W(2, -1098591960, 1057696884, -1094622297, 1068603564)\n\t\t + W(3, -1110319390, -1092295148, 1060435963, -1093610507)\n\t\t + W(4, 1049382153, 1027480579, -1090176467, 1060239128) + W(5, 1035982822, -1110105636, 1048950002, 1038370396)\n\t\t + W(6, -1103314039, -1088718218, -1083506692, -1093271444)\n\t\t + W(7, -1100206230, 1032439700, 1034453968, 1006875670);\n\tWS(-1089372991, 1071972514);\n\tsum1 = W(0, -1138920887, -1111770809, -1102811010, -1115715559)\n\t\t + W(1, 1039086134, -1097310634, 1031148825, 1025838913)\n\t\t + W(2, 1036533027, -1104793556, 1055175791, -1099167419)\n\t\t + W(3, -1087507272, 1049070430, -1119324807, 1003453989)\n\t\t + W(4, -1102318256, 1048489074, -1087761408, 1059252133)\n\t\t + W(5, 1053162297, -1114433380, -1118494745, 1042268638) + W(6, 994211079, -1105180974, 1048668925, 1002658941)\n\t\t + W(7, -1118760057, 1015366427, 1042346841, 1035401151);\n\tsum2 = W(0, 1030112837, -1120976510, 990074782, -1093456890)\n\t\t + W(1, 1037465699, 1026987255, -1141406991, -1139369648) + W(2, 1042265630, 1036120703, 1034066763, 1054439327)\n\t\t + W(3, -1093016348, 1018637880, -1135344000, 1039303764)\n\t\t + W(4, 1026971571, -1114486026, 1060265655, 1048349987)\n\t\t + W(5, -1099844302, 1021593632, -1122669452, -1105461723)\n\t\t + W(6, -1110663804, 1036038820, -1093575269, -1097582212)\n\t\t + W(7, 1034062294, 1015927322, -1131991172, -1112258092);\n\tWS(1064707295, -1106068023);\n\tsum1 = W(0, -1099232505, 1035233224, 1008917721, -1113461090)\n\t\t + W(1, 1030936392, 1004172005, 1027313190, -1115756158)\n\t\t + W(2, -1122722466, -1096714286, -1092366070, -1085444145)\n\t\t + W(3, -1087864449, -1089654074, -1109977746, -1096643772)\n\t\t + W(4, 1050522762, 1050648196, 1057836626, 1065526616) + W(5, 1058128499, 1053303385, 1046037453, 1045431365)\n\t\t + W(6, -1163785122, 1029641572, -1106158547, -1112344246)\n\t\t + W(7, -1120989814, 1023496586, -1132212895, 1026679026);\n\tsum2 = W(0, -1064765544, -1081497441, 1073825520, 1076205171)\n\t\t + W(1, -1119211273, 1027623494, 1025169073, 1044157267) + W(2, -1093639717, 1052279998, 1049786220, 1062543003)\n\t\t + W(3, -1112239696, -1095053933, 1041086677, -1111173396)\n\t\t + W(4, 1043466147, -1106897145, -1111313590, 1028519541)\n\t\t + W(5, -1110796836, 1038884306, -1138045203, -1103601885)\n\t\t + W(6, -1118670633, 1026058867, -1120615525, 1005098917)\n\t\t + W(7, 1002459349, 1024155429, -1139354443, 1031190784);\n\tWS(-1111449083, -1157616163);\n\tsum1 = W(0, -1140902742, -1108906886, -1107746707, -1091492130)\n\t\t + W(1, -1106259270, -1123578095, -1112828291, -1129218172)\n\t\t + W(2, 1050785866, 1041550344, 1063519767, 1070223306) + W(3, 1056548545, 1033679887, 1033485706, 1037279241)\n\t\t + W(4, -1096435822, -1095149714, -1097214657, 1059314470)\n\t\t + W(5, -1091358630, -1102873285, -1098893397, -1105253969)\n\t\t + W(6, -1106580347, -1111739842, -1112949561, -1090511327)\n\t\t + W(7, -1115482851, -1102694659, -1119291392, -1105806553);\n\tsum2 =\n\t\tW(0, 1036877913, -1107073590, -1107699229, 1043855187) + W(1, -1112562117, 1015957137, -1137092650, -1113777301)\n\t\t+ W(2, -1106537131, 1029358898, 1059152956, 1059494373) + W(3, -1100478450, 1042289801, -1117856531, 1034651775)\n\t\t+ W(4, 1030920508, -1148982309, -1101290720, 1057939604)\n\t\t+ W(5, 1054005616, -1078154452, 1052159854, -1095096566)\n\t\t+ W(6, -1107276407, -1158332371, -1104066278, 1057817844)\n\t\t+ W(7, -1089434898, 1041374005, -1109759735, -1112996199);\n\tWS(-1078462192, -1081042006);\n\tsum1 = W(0, 1031777492, 1032754472, 1041664052, -1097597536)\n\t\t + W(1, -1104816664, -1113883983, 1034668408, -1123431127)\n\t\t + W(2, -1099264287, 1043123090, -1089905073, 1061087074) + W(3, 1058804947, 1049386855, 1033759807, 1048603595)\n\t\t + W(4, 1046006998, -1098614104, -1129274543, -1106235787)\n\t\t + W(5, -1084543524, 1054195792, -1107840264, 1024992909) + W(6, 987183826, 1036343655, 1009990171, -1097811109)\n\t\t + W(7, 1031138063, -1097275448, 1026038601, -1120606380);\n\tsum2 =\n\t\tW(0, 1045113399, -1114091637, -1107885511, -1138476145) + W(1, -1105540689, 1035866831, -1106333432, 1027850472)\n\t\t+ W(2, 1042319052, -1104675582, -1091877193, 1051152873) + W(3, -1091823953, 1034466874, 1039480371, 1012452041)\n\t\t+ W(4, -1096815184, -1111655631, -1112520325, 1061790396)\n\t\t+ W(5, 1058061302, -1097657024, 1040922298, -1158709515)\n\t\t+ W(6, -1116743882, -1101972302, 1050965596, 1049921296)\n\t\t+ W(7, -1092103725, 1042351236, -1102843808, -1125733657);\n\tWS(1056694143, -1116016311);\n\tsum1 = W(0, -1113789237, -1100431022, 1050877939, 1018856325)\n\t\t + W(1, 1050520537, -1097203011, -1103919120, -1146363818)\n\t\t + W(2, 1051083644, -1126988186, 1064972735, 1040063173) + W(3, 1063261729, 1049408537, 1026641091, 1053332672)\n\t\t + W(4, -1097139864, -1094809972, -1089357240, -1094444318)\n\t\t + W(5, -1089641983, -1094346349, -1100978845, -1097363714)\n\t\t + W(6, -1123205479, 1034447326, 1036660918, -1108178982)\n\t\t + W(7, 1047968461, -1113292277, 1038849023, -1114302469);\n\tsum2 =\n\t\tW(0, -1117908102, 1013765983, 1045942570, 1086231745) + W(1, 1048993826, -1110131683, 1005670802, -1126497913)\n\t\t+ W(2, 1019359999, -1145413682, -1095749402, -1062836828)\n\t\t+ W(3, -1094656357, 1037693606, -1125761673, 1018172516)\n\t\t+ W(4, -1120905960, 1028148573, 1032861566, -1087097136)\n\t\t+ W(5, -1145044098, 1040390747, -1112982831, 1016402027) + W(6, 1017197102, 1027705717, -1127537989, 1031521084)\n\t\t+ W(7, 1027867224, -1114691836, 1031905995, -1122299754);\n\tWS(1058898623, -1129627348);\n\tsum1 = W(0, -1115961291, -1114910804, -1099814536, 1014875535)\n\t\t + W(1, 1042946610, 1008636276, -1106406626, -1120594878) + W(2, 1024824451, 1028416398, 1053775806, 1049045373)\n\t\t + W(3, -1081844071, 1031972351, 1007262993, 1044145240)\n\t\t + W(4, 1015893437, -1107386562, -1081677098, 1054905786) + W(5, 1057687981, 1045923489, 1043411542, 1016529769)\n\t\t + W(6, -1111982511, 1040362701, 1049488325, 1016424474)\n\t\t + W(7, -1105282974, -1118478155, 1018226304, 1008933435);\n\tsum2 =\n\t\tW(0, -1133545882, 1048887568, -1092588040, 1040041167) + W(1, -1098849827, 1009986974, 1044263399, -1120224962)\n\t\t+ W(2, 1024635319, -1104650552, -1106613727, 1061771033) + W(3, 1059347143, 1020453405, -1100016935, 1003801667)\n\t\t+ W(4, -1123675276, 1009836758, -1090053582, 1063348295)\n\t\t+ W(5, -1095509129, -1091467004, 1034750124, 1013849670)\n\t\t+ W(6, 1049399700, -1109494815, -1105276085, -1099749985)\n\t\t+ W(7, -1094328117, 1040581639, 1041257354, -1116729410);\n\tWS(1051954047, 1053754534);\n\tsum1 = W(0, -1115617616, 1024010640, -1105864485, -1104806436)\n\t\t + W(1, -1109064955, -1116880702, -1125878182, 1017392662)\n\t\t + W(2, 1038078984, 1036755054, 1063482792, 1054877383) + W(3, 1061183100, 1032370277, 1043596932, 1041423460)\n\t\t + W(4, 1012663597, -1111840872, -1094956956, -1088048944)\n\t\t + W(5, -1092794954, -1106496725, -1106933961, 1027390113)\n\t\t + W(6, -1106689047, 1027644834, 1000291764, -1099610254)\n\t\t + W(7, 1030290339, -1110075188, -1134690355, -1125796047);\n\tsum2 =\n\t\tW(0, 1032585330, -1120362784, 1053495069, -1103911013) + W(1, -1152525762, -1128147020, 1012657824, -1104983105)\n\t\t+ W(2, 1041153226, 1038083675, -1085822417, 1062089523) + W(3, -1088542584, 1044421032, -1113855086, 1041652917)\n\t\t+ W(4, -1098242715, -1097998955, -1097864806, 1056336567)\n\t\t+ W(5, 1061326318, 1046053205, 1042938789, -1160964996) + W(6, 1045110917, 1041971655, -1094674500, -1090235355)\n\t\t+ W(7, -1100885631, -1141849761, -1114518568, 1032164357);\n\tWS(1061027871, -1104546242);\n\tsum1 = W(0, -1105616597, 1044372474, 1021564129, 1044930783) + W(1, 1046184033, 1039863327, 1037242932, 1036593932)\n\t\t + W(2, 999947493, -1093243621, -1093936864, -1082760108)\n\t\t + W(3, -1089254915, -1087020314, -1095491356, -1089177610)\n\t\t + W(4, 1020340785, 1054887248, 1050165368, 1059757863) + W(5, 1059995997, 1055330116, 1049586618, 1053764638)\n\t\t + W(6, 1044086916, -1111771647, 1042456335, -1109427891)\n\t\t + W(7, -1109416824, -1114227250, -1119355674, 1025046581);\n\tsum2 =\n\t\tW(0, -1071093827, 1026041138, 1068370917, 1068180608) + W(1, -1099034443, -1126398467, -1114641099, 1032038973)\n\t\t+ W(2, 1060306884, -1087262504, -1080863241, -1104665609)\n\t\t+ W(3, 1065726420, 1036496204, 1052019191, -1112342652) + W(4, 1049935328, -1137957530, 1024099582, -1097098353)\n\t\t+ W(5, -1115701817, 1043337171, -1155572887, 1039831002)\n\t\t+ W(6, -1107356858, 1030953599, 1026067688, -1149593287)\n\t\t+ W(7, 1031805059, -1111590832, -1110320626, -1165279566);\n\tWS(-1085156031, 1045210454);\n\tsum1 =\n\t\tW(0, 1032928297, -1111119484, 1023710638, 1012189550) + W(1, -1119437633, 1039427612, -1114651991, 1039591187)\n\t\t+ W(2, 1062377574, 1050029461, 1062121112, 1061895670) + W(3, 1058328143, 1050106073, 1051812528, 1050020631)\n\t\t+ W(4, -1090582815, -1097825399, -1087364538, -1084850381)\n\t\t+ W(5, -1086721078, -1087870448, -1095972450, -1089842983)\n\t\t+ W(6, -1097791665, 1025846477, 1032229097, 1038427330) + W(7, 1040335420, 1036234257, 1026163704, -1146480404);\n\tsum2 =\n\t\tW(0, -1123647935, 1039341132, 1035983028, -1100132407) + W(1, -1107056231, 1035406254, -1116224056, 1039408558)\n\t\t+ W(2, 1061817512, 1048143772, -1106274437, -1080635557)\n\t\t+ W(3, -1101127944, -1113472410, 1025367216, -1101636583)\n\t\t+ W(4, 1083879676, 1075567701, -1081957201, -1069811820)\n\t\t+ W(5, -1080342730, -1083251742, -1113852980, -1087422720)\n\t\t+ W(6, 1056516802, 1037735150, 1028242764, -1096421593) + W(7, 1035329144, 1030744652, -1094803270, 1049804166);\n\tWS(-1079692512, 1054562755);\n\tsum1 = W(0, -1109749038, -1107273417, -1102577952, 1030213964)\n\t\t + W(1, 1036563817, 1046944740, 1031914983, 1050658577) + W(2, 1042438683, 1049923207, 1044388569, -1113189609)\n\t\t + W(3, -1089184118, -1087748930, -1096053014, -1091524869)\n\t\t + W(4, -1092016161, -1091034933, -1089719139, 1050309800)\n\t\t + W(5, 1048990040, 1053009554, 1048709856, 1049517424) + W(6, 1050333996, 1042543591, 1055304278, 1034159515)\n\t\t + W(7, 1040366472, -1122229091, 1006842402, 1034826102);\n\tsum2 =\n\t\tW(0, 1041125733, -1097603156, -1103003109, -1107000988) + W(1, 1032085636, 1048646468, -1094740103, 1056003520)\n\t\t+ W(2, -1094982607, 1045744428, -1102781952, 1063877853)\n\t\t+ W(3, -1096755169, 1041101455, 1038162032, -1106723297) + W(4, 1055140379, 1049918932, -1106862916, 1066829095)\n\t\t+ W(5, -1090474230, -1081598978, 1049572267, -1085369603) + W(6, 1061130686, 990353951, 1058588396, -1096233798)\n\t\t+ W(7, -1095838692, -1089860215, -1096717844, 1044183141);\n\tWS(-1080283264, 1053171958);\n\tsum1 = W(0, 1045885175, -1113658461, 1034538909, 974135701) + W(1, -1122513036, -1118011958, 998696774, -1108239136)\n\t\t + W(2, 1054395509, 1050045174, 1055879386, 1060600957) + W(3, 1061640838, 1060753746, 1054788217, 1061053402)\n\t\t + W(4, -1083475508, -1095192933, -1085810962, -1084797135)\n\t\t + W(5, -1086057732, -1087204563, -1092652351, -1108529436)\n\t\t + W(6, 1028512496, 1035446876, 1026195253, 1044250612)\n\t\t + W(7, 1037521197, -1117222317, 1038575473, -1101819472);\n\tsum2 = W(0, 1049760823, -1132622893, 1033001558, -1136534149)\n\t\t + W(1, 1043696998, -1092886300, -1098156850, 1058228696) + W(2, 1082611215, 1077078383, 1066257283, 986681348)\n\t\t + W(3, -1084657320, -1069070549, -1072372844, -1074505611)\n\t\t + W(4, -1114287788, 1055018182, -1101461080, -1078537691)\n\t\t + W(5, 1054805894, 1065047159, 1049854091, -1082348593)\n\t\t + W(6, -1130959534, 1035090608, -1112584386, -1090394759)\n\t\t + W(7, 1058031741, 1038822180, 1041633511, -1115499033);\n\tWS(-1073398920, 1057727890);\n\tsum1 =\n\t\tW(0, 1041979362, -1106188342, -1108985859, 1040300287) + W(1, 1044683952, 1046284093, 1044621499, 990388050)\n\t\t+ W(2, 1052994159, 1056847849, 1060197326, 1059196498) + W(3, -1094535618, -1094105983, -1102914751, 1043962286)\n\t\t+ W(4, -1092671491, -1087976920, -1085676269, -1108460501)\n\t\t+ W(5, 1051731585, 1046385743, 1031818215, -1104493131) + W(6, -1110295050, 1033778006, 1040328063, -1114468666)\n\t\t+ W(7, -1102804911, -1098429184, -1104640754, 1033981777);\n\tsum2 = W(0, 1021160276, -1093219342, -1089562294, -1106388958)\n\t\t + W(1, -1099093932, -1180890998, -1090965228, 1057228486)\n\t\t + W(2, -1089430647, -1135654176, -1079796815, 1074674993)\n\t\t + W(3, -1098010580, 1052929457, 1040584224, 1047748991)\n\t\t + W(4, -1102895535, 1044152573, -1095163331, 1074136497)\n\t\t + W(5, -1095203310, -1099885509, 1041387674, -1131585606)\n\t\t + W(6, 1031984432, -1096279754, 1011763192, -1101895278)\n\t\t + W(7, -1117345690, -1095468231, -1107912603, 1045144673);\n\tWS(-1087643711, 1073414034);\n\tsum1 = W(0, 1043421796, -1116796288, 1042590607, -1098636497)\n\t\t + W(1, 1008405302, 1005024220, -1106384411, 1029633907) + W(2, 1043019738, 1056957030, 1048028053, 1065994910)\n\t\t + W(3, 1061262410, 1059267719, 1045820026, 1054563645)\n\t\t + W(4, -1091862260, -1093379129, -1089120888, -1081315117)\n\t\t + W(5, -1088787029, -1093593189, -1108751805, -1106230054)\n\t\t + W(6, 1028452722, -1112484637, 1043084437, -1120978641)\n\t\t + W(7, 1046109207, -1105879924, 1024805700, -1095994501);\n\tsum2 =\n\t\tW(0, 1015257573, -1117575950, 1040590395, 1040031817) + W(1, -1104875608, -1111928738, -1124331304, -1104400845)\n\t\t+ W(2, -1101361376, 1051853927, 1007636882, -1085239439) + W(3, 1029484438, 1055085469, -1104410806, 1055334030)\n\t\t+ W(4, -1151605286, -1126719224, -1099060090, -1069257368)\n\t\t+ W(5, 1078894141, 1065488662, -1097362053, -1099504604)\n\t\t+ W(6, -1114431290, -1122150057, -1123376079, -1122292554)\n\t\t+ W(7, 1045790053, -1105709439, 1046590167, -1096100911);\n\tWS(-1089052703, 1050218486);\n\tsum1 = W(0, 1024924308, -1124263665, -1114112032, -1101857739)\n\t\t + W(1, 1004177297, -1132101549, 1037546120, -1127618735) + W(2, 1032977094, 1048865735, 1032370348, 1057017435)\n\t\t + W(3, -1096925880, -1106597310, -1101706323, -1138126252)\n\t\t + W(4, -1127622480, -1103037451, -1093324152, -1130658874)\n\t\t + W(5, 1049797356, -1147023991, -1148374781, 1041185327)\n\t\t + W(6, 1016061078, 1027347950, 1047024376, -1114101947)\n\t\t + W(7, -1136753151, -1136950735, 1016234194, -1135392976);\n\tsum2 =\n\t\tW(0, -1103127935, 1034551493, -1131095837, 1056852609) + W(1, 1041291951, 1031312786, -1119687326, -1125922018)\n\t\t+ W(2, 1033687244, -1111330163, -1111327049, -1097897810)\n\t\t+ W(3, -1092598078, 1027703970, -1119650108, 1037109557) + W(4, 1044282132, -1132159854, 1043675418, 1038437355)\n\t\t+ W(5, -1085166716, -1122838335, 1030316614, -1115941571)\n\t\t+ W(6, -1115309191, -1101537844, 989659429, -1126658673)\n\t\t+ W(7, -1101159602, 1065573620, 1035948285, 1021015548);\n\tWS(1065854560, -1114586365);\n\tsum1 = W(0, 1025132845, -1132208108, 1043375962, 1036127555) + W(1, 1042813603, 1042302785, 1041475414, 1044294516)\n\t\t + W(2, -1093129789, -1097600366, -1094779500, -1085251325)\n\t\t + W(3, -1085614646, -1083792532, -1088034874, -1081301837)\n\t\t + W(4, 1039292161, 1047014713, 1054220253, 1059484531) + W(5, 1058902029, 1058554289, 1049492791, 1057966909)\n\t\t + W(6, 1052478106, -1114318540, 1045472794, 1040640636)\n\t\t + W(7, 1026772633, 1030110605, -1123458066, 1048041627);\n\tsum2 =\n\t\tW(0, -1082315074, 1044643809, -1098370418, 1032322202) + W(1, -1088636595, 1057109638, -1093539506, 1061431798)\n\t\t+ W(2, -1085719643, 1026206592, 1060376399, 1066420950) + W(3, 1042910065, 1025783712, -1117795056, -1120476284)\n\t\t+ W(4, 1072912386, -1098026838, 1068488422, 1072201946)\n\t\t+ W(5, 1055106268, -1087763572, -1084317601, -1077472196)\n\t\t+ W(6, -1097858732, -1097387905, -1097681385, -1095903963)\n\t\t+ W(7, -1092707091, -1104219349, -1087895305, -1105350768);\n\tWS(-1071370880, 1080498273);\n\tsum1 = W(0, -1117491793, 1039364315, 1035846886, 1023528601)\n\t\t + W(1, -1131889533, -1106314247, 1028375004, 1013100112)\n\t\t + W(2, -1117320376, -1100646881, -1094786920, 1045848824)\n\t\t + W(3, 1057069771, 1055228236, 1020389492, -1127017775) + W(4, 1025681812, 1049740511, 1058631773, -1094741601)\n\t\t + W(5, -1088346742, -1102894479, -1138962992, 995411618)\n\t\t + W(6, -1112958490, -1103504723, -1105396320, 1032469201)\n\t\t + W(7, 1034336534, -1144513794, -1116565942, 1002008579);\n\tsum2 = W(0, -1097850747, -1107398437, -1085613590, 1042292809)\n\t\t + W(1, 1054106205, -1106648125, 1035361236, -1122554235)\n\t\t + W(2, -1108946242, -1114277717, 1063125687, -1084555354)\n\t\t + W(3, 1059764079, 1041901467, -1103098774, -1148617751)\n\t\t + W(4, -1129761151, -1118690429, 1040789135, -1101999238)\n\t\t + W(5, 1051725304, -1128317719, 1022272136, 1025957669) + W(6, 1024320851, 1012636527, 1029278628, 1026191463)\n\t\t + W(7, -1119736004, -1127460399, -1115360404, 997652141);\n\tWS(1058528159, 1053906024);\n\tsum1 = W(0, -1112917396, 1035675727, -1104938189, 1040468760)\n\t\t + W(1, -1105254898, 1020887917, -1113141838, -1149793215)\n\t\t + W(2, -1104256080, -1092229473, -1097223269, -1082484606)\n\t\t + W(3, -1103704557, -1100912091, -1118771074, -1099449368)\n\t\t + W(4, 1023681564, 1058833811, 1051100098, 1061928249) + W(5, 1057519273, 1047691241, 1047329733, 1044776397)\n\t\t + W(6, 1039659283, 1021887717, 1033492802, -1119337706)\n\t\t + W(7, -1099217437, -1127325712, -1114402703, 1024214504);\n\tsum2 = W(0, -1129442596, 1023778714, -1113953277, 1026809294) + W(1, 1035644478, 1034718426, 1016827280, 1038084720)\n\t\t + W(2, 1040644144, 1033307012, 1056896617, -1080168883)\n\t\t + W(3, 1030172798, 1046899220, -1114672577, -1138817753)\n\t\t + W(4, -1106302200, 1056981996, 1082625405, -1064674592)\n\t\t + W(5, -1098216535, -1107268878, -1138831353, -1118740750)\n\t\t + W(6, -1105488042, 1014815489, 1048992482, 1043950232)\n\t\t + W(7, -1120732434, -1121557578, 1026207834, -1122753582);\n\tWS(1050028863, 1057904824);\n\tsum1 = W(0, 1016998719, 1031484924, -1113918453, 1035763396)\n\t\t + W(1, -1100192683, 1046082071, 1023767163, -1109585801)\n\t\t + W(2, -1115527732, -1114471481, -1092713340, -1086973069)\n\t\t + W(3, 1048884339, -1093669960, -1109475380, -1102684193)\n\t\t + W(4, 1049960370, -1097014217, 1059124695, 1055821255) + W(5, 1045748179, 1046233018, 972758359, 1047341446)\n\t\t + W(6, 1033316845, 1045307870, -1113659631, -1113580281)\n\t\t + W(7, -1104759887, 1024760783, 1028768132, -1118597711);\n\tsum2 =\n\t\tW(0, 1042577042, 1035985609, -1132583692, -1108557005) + W(1, 1045882832, 1049978360, -1123148614, 1037998467)\n\t\t+ W(2, 1058174637, 1022451597, -1083350192, -1102051996)\n\t\t+ W(3, -1096734805, 1040525485, -1111555351, 1012738322)\n\t\t+ W(4, -1093234196, 1028288917, -1089654696, 1066585170)\n\t\t+ W(5, -1112976831, -1101233023, 1016281700, 1035922998) + W(6, 1036828005, 1036599280, 1043707159, -1099096459)\n\t\t+ W(7, -1117191962, 1038823523, 1010883764, -1106116243);\n\tWS(1064158815, 1035299335);\n\tsum1 = W(0, -1112803360, 987363362, 1040202935, -1148543050)\n\t\t + W(1, -1119103150, 1016866897, -1120253212, -1136961231)\n\t\t + W(2, 1016610641, -1111853690, -1090418272, -1086418793)\n\t\t + W(3, -1096774480, -1106302329, -1125874772, -1111706212)\n\t\t + W(4, 1043480489, -1116662313, 1043761841, 1062267936) + W(5, 1026731899, 1046949595, 1044534239, 1038415821)\n\t\t + W(6, 1023721675, -1114846141, 1040437218, 1044974085)\n\t\t + W(7, -1112576238, 1035797256, -1118929285, 1017229376);\n\tsum2 = W(0, 982347958, 1032509555, -1111294086, 1034453505) + W(1, -1107492941, 1047671755, -1114281099, 1041657921)\n\t\t + W(2, -1130481715, -1105443060, 1041532435, -1090026061)\n\t\t + W(3, -1115327745, -1099067440, 1007189687, -1106888056)\n\t\t + W(4, 1039697927, -1102232537, 1059036310, 1065332554) + W(5, 1049776291, 1035057967, -1116755236, 1039394631)\n\t\t + W(6, 1029826582, -1106323503, -1087181565, -1095157490)\n\t\t + W(7, 1032022369, -1113855935, -1137758215, -1116441678);\n\tWS(1064590463, 1056702913);\n\tsum1 =\n\t\tW(0, 1029043770, 1053372231, -1096751755, 1042753121) + W(1, -1132040847, -1098166823, 1054745035, -1101919647)\n\t\t+ W(2, -1118119137, 1049750478, -1090400466, -1089893441)\n\t\t+ W(3, 1035942347, -1098407696, 1057009004, -1105867448) + W(4, 1044521535, 1040212560, 1048069253, -1098259842)\n\t\t+ W(5, 1046519145, -1126503113, 1029470901, -1137574860)\n\t\t+ W(6, -1108622774, 1055292354, -1086796959, 1028130891)\n\t\t+ W(7, 1043794349, -1097599727, 1057963224, -1099480944);\n\tsum2 = W(0, -1112469736, -1109993908, -1113626244, -1101975228)\n\t\t + W(1, -1113395603, -1115391866, -1111764318, -1114050909)\n\t\t + W(2, 1047380321, 1048112351, 1039961237, 1053720344) + W(3, 1033059361, -1117206471, 1050486894, 1029031616)\n\t\t + W(4, -1107309008, -1096267194, -1149218892, 1041967405)\n\t\t + W(5, -1105421186, 1041082150, -1097114178, -1116211284)\n\t\t + W(6, -1130012001, 1044766357, 1024449363, -1105185961)\n\t\t + W(7, 1034928166, -1103730760, 1041700935, -1133808950);\n\tWS(1049282175, -1081654589);\n\tsum1 = W(0, 1026879882, -1106636470, 1025593670, -1120434947)\n\t\t + W(1, -1109057316, -1103814142, -1108405355, 1025046173)\n\t\t + W(2, 1056840376, 1051340514, 1059046350, 1060994015) + W(3, 1062254571, 1054415372, 1044610849, 1057281100)\n\t\t + W(4, -1089715922, -1103588481, -1087728227, -1081081863)\n\t\t + W(5, -1089160278, -1110084674, -1097611347, -1102762237)\n\t\t + W(6, 1023576205, 1019713064, 1018583793, -1116831948)\n\t\t + W(7, 1040563949, -1148705741, -1130543166, -1108038889);\n\tsum2 = W(0, 1021240677, -1117500355, -1104166105, -1110155670)\n\t\t + W(1, -1101525323, -1099065181, -1135933351, -1100288377)\n\t\t + W(2, -1112389783, -1154883848, -1102583420, 1061056453)\n\t\t + W(3, -1123615532, 1038434309, 1041908272, -1120914319)\n\t\t + W(4, 1025718250, -1096682611, 1048911763, 1065471868)\n\t\t + W(5, -1149445264, -1090281103, 1042017461, -1131934595)\n\t\t + W(6, -1104779102, 1051908652, -1093040032, 1051220588)\n\t\t + W(7, -1113750073, -1098156535, 1046751376, -1100861861);\n\tWS(1044733566, -1111466942);\n\tsum1 = W(0, 1033634167, -1105078967, -1104340430, -1106426842)\n\t\t + W(1, -1101553619, -1110993602, -1113465444, 1020428386)\n\t\t + W(2, 1060020808, 1041929508, 1062221635, 1060048443) + W(3, 1059584252, 1054717575, 1044713794, 1047352089)\n\t\t + W(4, -1092913556, -1103349137, -1092289734, -1090785767)\n\t\t + W(5, -1094348262, -1097827057, -1098824243, 1041060918)\n\t\t + W(6, -1112663104, -1134753630, -1126194825, -1110397240)\n\t\t + W(7, -1114529117, -1113238887, -1140846474, -1094820883);\n\tsum2 =\n\t\tW(0, 1040248415, -1113076108, 1043824330, -1105221470) + W(1, 1036602392, -1134849104, -1163695359, 1011808464)\n\t\t+ W(2, 1084299283, 1066146464, -1073408210, -1067326117)\n\t\t+ W(3, -1097425816, 1016852200, -1119512248, -1118870508)\n\t\t+ W(4, 1054267917, 1032173778, -1102778436, -1084477148) + W(5, -1149511007, 1040914456, 1026379762, 1011171408)\n\t\t+ W(6, 1002599056, 1029289900, 1027082476, -1116688572) + W(7, 1024010398, -1121212984, 1007530464, 1020903456);\n\tWS(1041204862, 1020998748);\n\tsum1 = W(0, 1041320410, -1111643799, 1033147201, 1033305824)\n\t\t + W(1, -1110534482, 1048653459, -1106102028, -1129433652)\n\t\t + W(2, 1040787048, 1044400490, -1112000574, 1057857240) + W(3, 1058317173, 1013490791, 1040475768, 1032979455)\n\t\t + W(4, -1129649268, -1096018340, 1041936758, -1090212595)\n\t\t + W(5, -1083609992, -1108280561, -1098465902, -1104103124)\n\t\t + W(6, -1136864165, -1123167632, 1014392453, 1043382402)\n\t\t + W(7, 1046901861, 1040774794, -1121200123, -1123801518);\n\tsum2 =\n\t\tW(0, 1033367466, 1036408153, 1049195658, -1116950481) + W(1, -1081345874, 1035726191, -1109751565, 1034565507)\n\t\t+ W(2, -1105739926, 1041467605, -1097896497, 1069287141) + W(3, 1045676499, -1097322898, 1034595972, 1022861151)\n\t\t+ W(4, 1035166617, -1116824529, -1127250349, -1103787577)\n\t\t+ W(5, -1104285546, -1110450029, 1041775082, -1111377560)\n\t\t+ W(6, -1121294834, 1020242785, 1024987646, -1113169844)\n\t\t+ W(7, -1109755223, -1162599282, -1128984227, 1015705141);\n\tWS(1061587071, -1140717261);\n\tsum1 = W(0, -1112565188, 1035683412, 1034588141, -1105710858)\n\t\t + W(1, 1024277837, -1104681461, 1033519565, -1097426768)\n\t\t + W(2, -1082585266, -1091946062, -1086181493, -1084260507)\n\t\t + W(3, -1087521200, -1094344584, -1109665588, -1092361421)\n\t\t + W(4, 1063001355, 1057075562, 1061257307, 1062016535) + W(5, 1059484653, 1051726365, 1053582679, 1050023351)\n\t\t + W(6, 1029148274, -1133150565, -1121255338, 1031972073)\n\t\t + W(7, -1140527211, 1015752222, -1140031633, 1054184694);\n\tsum2 =\n\t\tW(0, 1052095029, 1040595366, -1098987175, -1084153168) + W(1, -1091290481, -1096720628, -1101102486, 1044734380)\n\t\t+ W(2, -1068831962, -1076957703, -1081538085, 1037971476) + W(3, 1070110671, 1069986978, 1074264190, 1070997731)\n\t\t+ W(4, -1076286348, -1081349117, -1088771362, 1057908839)\n\t\t+ W(5, -1114213425, 1063483875, 1068552571, 1075267150) + W(6, 1061242602, 1046002483, 1040290526, -1093902656)\n\t\t+ W(7, -1094367529, -1094489561, -1099236623, -1081182731);\n\tWS(-1071242520, -1095264341);\n\tsum1 = W(0, -1097248122, 1017326143, -1105336241, -1091856432)\n\t\t + W(1, 1051920949, -1097210280, -1122345698, 999615444) + W(2, 1057257956, 1050464317, 1059871125, 1058219580)\n\t\t + W(3, 1056167546, 1051126389, 1047883744, 1055359408)\n\t\t + W(4, -1095464807, -1098731544, -1096805078, -1088025845)\n\t\t + W(5, 1032394345, -1089070234, -1102431837, -1098523426)\n\t\t + W(6, -1098637431, 1039614697, 1034135507, -1098503641)\n\t\t + W(7, 1057766069, -1095933097, 1030493340, -1112287963);\n\tsum2 = W(0, -1132961311, 1034954689, -1131131128, -1105685093)\n\t\t + W(1, 1044104138, -1118659572, -1117347443, -1140373421)\n\t\t + W(2, 1038597560, -1114842936, 1039456110, -1104727669)\n\t\t + W(3, -1085849936, 1053272959, -1117746499, 1049759548)\n\t\t + W(4, -1089057302, -1113751042, -1095192990, -1097910004)\n\t\t + W(5, 1064526735, 1045257331, 1054461586, 1062278408) + W(6, 1055074030, 1048893008, 1046429121, 1057064004)\n\t\t + W(7, -1091871118, -1096323208, -1090448877, -1081803378);\n\tWS(1055746431, 1040288248);\n\tsum1 = W(0, -1154016945, -1117613130, -1108247483, -1114072538)\n\t\t + W(1, -1103530014, -1134724696, -1102903742, 1046496384)\n\t\t + W(2, 1057716289, 1055590360, 1059644857, 1067207252) + W(3, 1062212336, -1104299500, 1049302591, 1054319858)\n\t\t + W(4, -1093759650, -1094487986, -1089867895, -1085229664)\n\t\t + W(5, -1089860607, -1088563377, -1097577389, -1094962569)\n\t\t + W(6, -1122750430, -1117149477, 1031955359, 1016534394)\n\t\t + W(7, 1044969554, -1137442922, 1035178328, -1108831509);\n\tsum2 =\n\t\tW(0, 1041968914, 1026703145, 1033601916, 1035338047) + W(1, -1106207855, -1094112140, -1100978937, -1106593629)\n\t\t+ W(2, 1051752153, -1115260470, 1038625472, 1052354182)\n\t\t+ W(3, -1118891350, -1081023345, -1084581041, 1066756564)\n\t\t+ W(4, -1123800846, 1035127537, 1035458769, 1035609386) + W(5, 1057116581, -1104080857, 1055976243, -1101750238)\n\t\t+ W(6, -1117011966, 1031245794, -1109678904, 1050054059)\n\t\t+ W(7, -1098815779, 1038926653, -1108176195, -1107244818);\n\tWS(-1089881759, 1037957184);\n\tsum1 = W(0, 1000251530, -1117869170, 1029072469, 1031851625)\n\t\t + W(1, 1024508279, -1105582638, -1121710869, -1105403363)\n\t\t + W(2, -1098029886, -1095515176, -1089055515, -1079829205)\n\t\t + W(3, -1094362449, -1105281331, -1112643769, -1102959900)\n\t\t + W(4, -1105974859, 1060224425, 1060210489, 1061092856) + W(5, 1060581840, 1056017638, 1040568609, 1050032516)\n\t\t + W(6, 1041712355, 1040628361, 1042449912, -1119516507)\n\t\t + W(7, -1102207965, -1107063314, -1112932479, -1124065669);\n\tsum2 = W(0, 1051114274, -1105565679, 1055378846, -1098769061)\n\t\t + W(1, -1106275827, -1101598109, -1109849433, -1104426610)\n\t\t + W(2, -1102532150, -1114476854, -1082969540, 1064670328)\n\t\t + W(3, -1102001010, 1044770567, -1114021751, 1049459491)\n\t\t + W(4, -1093533301, 1038543175, -1075201485, 1077554590)\n\t\t + W(5, 1048871628, 1040464379, -1111404687, 1049461049)\n\t\t + W(6, 1042271071, -1112348507, -1087360189, -1100903801)\n\t\t + W(7, -1115312306, 1031777408, -1125205988, -1104546886);\n\tWS(-1089609215, -1090633405);\n\tsum1 = W(0, -1095985139, -1131730646, -1106836118, -1120898567)\n\t\t + W(1, -1122196780, -1108220230, -1113602180, -1111282801)\n\t\t + W(2, 1060468726, -1114989785, -1111340153, -1083229835)\n\t\t + W(3, -1097505195, -1091862496, -1118278055, -1094974325)\n\t\t + W(4, 1029992257, 1035463235, 1053834481, 1057093887) + W(5, 1060127651, 1056095953, 1053644551, 1060964715)\n\t\t + W(6, -1106189340, -1121474072, -1109753904, -1170836447)\n\t\t + W(7, -1099640750, -1106303115, -1102165833, -1114233933);\n\tsum2 = W(0, -1102755055, -1123071369, -1101642458, -1121616776)\n\t\t + W(1, -1123659230, 1034971308, -1114444448, 992820811) + W(2, 1028184991, 1018963304, 1042446539, 1048904011)\n\t\t + W(3, 1022095962, -1102092583, -1115812270, -1115600403)\n\t\t + W(4, 1014375557, 1034540123, -1110958917, 1055634924) + W(5, -1122273513, 1047229966, 1006913192, 1032293939)\n\t\t + W(6, 1018724927, -1154538439, 1030328833, -1104340897)\n\t\t + W(7, -1123674010, -1103087688, -1118183380, -1116477720);\n\tWS(-1089497119, -1083970920);\n\tsum1 = W(0, 1049400081, -1112985379, 1032734776, 1046931016) + W(1, 1032966898, 1026703569, 1023567673, 1020804657)\n\t\t + W(2, 1017038202, 1054102421, 1052273107, 1050677101) + W(3, 1056472798, 1054012759, 1046736000, 1054561791)\n\t\t + W(4, -1096866095, -1092440080, -1090492445, -1077775563)\n\t\t + W(5, -1095500286, -1141821439, -1103091876, -1096856494)\n\t\t + W(6, -1129668560, 1023489999, 1039999326, 1047866250)\n\t\t + W(7, 1031139121, -1128248842, 1037611037, -1102316761);\n\tsum2 = W(0, -1119432539, -1114702364, -1131454616, 1045807900)\n\t\t + W(1, -1107556037, -1138592655, -1120197723, -1116354551)\n\t\t + W(2, -1113150368, -1107904829, 1051795717, 1065572002) + W(3, -1104213250, -1096394963, 991774812, 991245404)\n\t\t + W(4, 1049552369, -1109676099, 1049548364, 1052256292)\n\t\t + W(5, 1058452060, -1077576443, -1102019177, 1049782966)\n\t\t + W(6, -1123950204, 1034167140, 1018171432, 1024318084)\n\t\t + W(7, -1104886632, -1103410805, -1103678409, -1123412946);\n\tWS(-1092399743, 1070790531);\n\tsum1 = W(0, 1031557241, 1024013147, 1045977841, 1049827334) + W(1, 1044712430, 1042539942, 1022243624, 1042631871)\n\t\t + W(2, -1110110152, -1123928476, -1100428029, -1093314535)\n\t\t + W(3, -1098211617, -1120318828, -1110797385, -1103475236)\n\t\t + W(4, -1086332927, -1104003948, -1091187884, -1110202001)\n\t\t + W(5, 1031718940, 1031171411, -1118825252, 1047659449) + W(6, 1040307665, 1029330819, 1054647477, 1048337215)\n\t\t + W(7, 1045074033, 1042256462, 1034920639, 1041342974);\n\tsum2 = W(0, 1035080118, -1111978522, 1043189101, -1107203795)\n\t\t + W(1, 1020874649, 1040978901, -1103963851, 1014904337) + W(2, 1049091174, 1049791001, 1038894820, -1088677682)\n\t\t + W(3, -1074681252, 1032440616, -1139760881, -1132242473)\n\t\t + W(4, 1068767241, 1068692590, 1041587068, -1079138335) + W(5, -1088844169, 1033618204, 1036797334, 1040720920)\n\t\t + W(6, 1056655092, -1120502660, 1054889999, -1094007639)\n\t\t + W(7, -1106617291, 1037089622, -1115116202, 1029103732);\n\tWS(-1076899872, -1090262268);\n\tsum1 = W(0, -1111775583, -1105515965, 1031134981, -1152866339) + W(1, 1022185487, 1031461535, 991487050, 1013082739)\n\t\t + W(2, -1105212520, -1109220950, -1105276619, -1081197371)\n\t\t + W(3, -1085735312, -1090100176, -1106571081, -1094472404)\n\t\t + W(4, 1053805936, 1044900104, 1061229259, 1056451270) + W(5, 1061180827, 1061600458, 1040836429, -1114201801)\n\t\t + W(6, -1130865048, -1124779047, -1108606366, 1012899053)\n\t\t + W(7, -1111684786, 1038272628, -1123743158, 1043636133);\n\tsum2 = W(0, -1092758077, -1099940688, -1096959860, -1093749782)\n\t\t + W(1, 1047974360, -1120633714, 1036248767, -1113388587)\n\t\t + W(2, 1054372816, 1036990346, -1102824961, 1072234824)\n\t\t + W(3, -1091574668, -1098403340, -1097220109, 1024848209)\n\t\t + W(4, 1025999909, 1044094629, -1093700170, 1074465248)\n\t\t + W(5, -1086059593, -1083936129, 1045585843, -1093741871)\n\t\t + W(6, 1025560437, 1015649794, -1134776466, -1118772240)\n\t\t + W(7, -1097328702, 1035273338, -1098634116, 1051989609);\n\tWS(-1097318719, -1106686758);\n\tsum1 = W(0, -1138034233, 1022220430, -1115259277, 1037878284)\n\t\t + W(1, -1109043646, -1118564628, -1132126739, -1123355602)\n\t\t + W(2, 1031803579, -1105675680, 1060345356, 1040095311) + W(3, 1057210483, 1018511203, 1038086620, 1040876381)\n\t\t + W(4, -1107190316, -1110575515, -1091489993, -1082557626)\n\t\t + W(5, 1054616755, -1113047197, 1037558661, 1040895458) + W(6, -1118470609, 1013564641, 1028754310, 1043380040)\n\t\t + W(7, -1126688788, -1103180903, -1105313401, -1110366427);\n\tsum2 = W(0, -1116780480, 1034654933, 1033980194, -1106740681)\n\t\t + W(1, 1037910476, -1110588743, 1033369701, 1006481529) + W(2, 1011610145, -1109786563, 1034290987, 1058839838)\n\t\t + W(3, -1112504437, 1048688059, -1100404580, 1024874106)\n\t\t + W(4, -1126532250, 1049246354, -1098441369, 1055488745)\n\t\t + W(5, -1081564854, -1109313096, 1046210019, -1122526519)\n\t\t + W(6, 1031867194, -1117436106, 1050453777, -1098876833)\n\t\t + W(7, -1101879397, -1105182695, 1033744368, 1042001428);\n\tWS(1061957727, 1058150789);\n\tsum1 = W(0, 1009728708, 1031914819, 1043097483, -1106863550)\n\t\t + W(1, -1097372952, -1108191069, 1032793786, -1129266281)\n\t\t + W(2, -1099288198, -1097230757, -1087266183, 1043273168)\n\t\t + W(3, 1055416522, 1050026271, -1110590381, -1108247452) + W(4, 1046412713, 1055587995, 1056802398, 1049133325)\n\t\t + W(5, -1086687979, -1105368103, -1107437206, 1042988739)\n\t\t + W(6, 1036440691, -1109853493, -1106212891, 1023154886)\n\t\t + W(7, 1047286155, 1036106272, 1024106902, -1120124353);\n\tsum2 = W(0, 1021676194, -1104415808, 1041444786, -1104915444)\n\t\t + W(1, 1042839409, 1025561656, -1111488206, -1119893126)\n\t\t + W(2, 1026925373, 1041631623, 1049347642, -1075706495) + W(3, 1068941883, 1049874161, -1096918949, 1030080935)\n\t\t + W(4, -1130821928, 1047340087, 1055108729, -1078646873)\n\t\t + W(5, 1058328878, 1054741696, -1108156193, -1107876167)\n\t\t + W(6, 1011207236, -1118374396, 1032289888, -1097824639)\n\t\t + W(7, 1041964936, -1122940124, 1033049167, -1131526532);\n\tWS(1058678303, 1013994144);\n\tsum1 = W(0, -1118673511, -1145988558, -1107600786, -1097799452)\n\t\t + W(1, 1050901309, 1025019066, 1034380585, -1117490811) + W(2, 1050426208, 1032382213, 1059103555, 1061451838)\n\t\t + W(3, -1098106458, 1032049821, 1038038624, 1043957152)\n\t\t + W(4, -1111022430, 1019043839, -1086017695, -1090188381)\n\t\t + W(5, 1050664020, -1093177128, -1133222475, -1113568728)\n\t\t + W(6, -1110204509, -1116037137, 1043824660, -1111434373)\n\t\t + W(7, -1123560275, 1043538778, -1104489131, -1110765932);\n\tsum2 = W(0, -1105859137, 1047608842, -1101390223, 1011548907)\n\t\t + W(1, -1098146078, 1047719826, -1099968186, 1028887915)\n\t\t + W(2, 1052524883, -1096529292, -1103682938, 1018027622)\n\t\t + W(3, 1039330573, -1101134187, 1054816538, -1105962981)\n\t\t + W(4, -1116369180, 1033298597, -1095014501, 1063707518)\n\t\t + W(5, 1056731707, -1086128756, 1037701277, -1150004284)\n\t\t + W(6, 1025172812, 1035180205, -1138831970, -1096368530)\n\t\t + W(7, -1094263126, 1061932077, -1095466983, 1016476277);\n\tWS(1063038079, 1033861047);\n\tsum1 = W(0, -1111914898, 1040884807, -1102681756, 1061986003)\n\t\t + W(1, -1095429920, -1109559865, 1034752240, -1104233906)\n\t\t + W(2, 1016779545, 1014390112, -1109833994, -1095449911)\n\t\t + W(3, -1097838100, 1019923216, -1148961393, 1009274926)\n\t\t + W(4, -1107257338, 1045397811, -1096677860, 1065846455) + W(5, 1029008656, 1039008680, 1033037520, 1029851870)\n\t\t + W(6, -1114919788, -1162045399, -1101855164, 1049909751)\n\t\t + W(7, -1097193708, -1113534130, 1007645095, -1103320918);\n\tsum2 = W(0, -1112457849, -1106002020, -1103752624, -1114732591)\n\t\t + W(1, -1102536580, 1029961226, -1114728817, 1038070251)\n\t\t + W(2, -1117177515, 1017665294, -1098231154, 1062239338)\n\t\t + W(3, -1097906884, -1101585142, 1037597321, -1112453861)\n\t\t + W(4, 1031942991, 1033022206, -1133545004, 1061426536)\n\t\t + W(5, -1109528685, 1032626487, -1114069131, 1032988844)\n\t\t + W(6, -1106095669, 1041685053, -1095196752, 1046863079)\n\t\t + W(7, -1105989872, -1120505375, 1028074076, -1124888510);\n\tWS(1060691839, -1121680521);\n\tsum1 = W(0, -1112633460, 1034282296, 1016470792, -1124091490)\n\t\t + W(1, 1036530779, -1110508885, 1036991882, -1133939630)\n\t\t + W(2, -1105323108, -1097943963, -1091137362, -1083253895)\n\t\t + W(3, -1090987401, -1090137469, -1098291034, -1093525810)\n\t\t + W(4, 1045243383, -1117038833, 1060606770, 1065759511) + W(5, 1062311590, 1056765570, 1054157412, 1057599172)\n\t\t + W(6, -1113361469, -1109479713, -1110311799, -1102522287)\n\t\t + W(7, -1114082482, -1104777690, 1016563642, -1167556095);\n\tsum2 = W(0, -1097189010, 1041454563, -1110771302, 1043926258)\n\t\t + W(1, -1109373654, -1109768355, -1114304258, 1043669875)\n\t\t + W(2, 1057901747, 1039698409, -1122301550, -1125642190)\n\t\t + W(3, -1108285138, 1020817735, 1040279727, -1101494695)\n\t\t + W(4, -1086723052, -1087530727, -1094374456, 1064818137)\n\t\t + W(5, 1036021291, -1109979249, 1055924705, 1040712355)\n\t\t + W(6, -1086497310, -1090377488, -1110538585, 1061014784)\n\t\t + W(7, 1034378960, 1044647130, 1013465199, 1050381101);\n\tWS(-1087684831, -1094525449);\n\tsum1 = W(0, 1038107891, -1121734275, 1035814365, -1107604308)\n\t\t + W(1, 1038052214, -1101928869, -1104767443, -1127021124)\n\t\t + W(2, -1093934649, -1096975274, -1093954738, -1090018791)\n\t\t + W(3, -1088075930, -1090123804, -1106254226, -1100235009)\n\t\t + W(4, 1052573184, 1049163549, 1040479417, 1066601083) + W(5, 1058232216, 1057618495, 1040796439, 1051666987)\n\t\t + W(6, 1038198313, -1113930844, 1035537105, -1102439448)\n\t\t + W(7, -1113118893, -1148589172, -1146582942, 1033628463);\n\tsum2 = W(0, -1102391770, 1032495868, -1140349122, 1051494072)\n\t\t + W(1, -1080481573, -1072283498, -1085993190, -1091499210)\n\t\t + W(2, 1038892506, 1032348345, 1055934176, 1066287204) + W(3, 1070533091, 1056179234, -1098172645, 1038613315)\n\t\t + W(4, -1109920182, 1035913564, 1043439866, 1049172795)\n\t\t + W(5, 1048700512, -1122911277, 1042548330, -1103404378)\n\t\t + W(6, 1034045130, -1111661823, -1148365864, 1035742233)\n\t\t + W(7, 1024670194, 1043482108, -1117726050, 1024343165);\n\tWS(-1095407551, -1073547033);\n\tsum1 = W(0, -1103915126, -1101976843, 1024335748, -1108044768)\n\t\t + W(1, 1050893513, -1095324014, -1107189281, -1114975198)\n\t\t + W(2, 1043640456, 1041775803, 1061599658, 1057524528) + W(3, 1060862745, 1028413803, 1044362232, 1051352312)\n\t\t + W(4, -1106314263, -1098551608, -1096990689, -1095708126)\n\t\t + W(5, -1102020840, -1092797676, -1110398586, -1097969466)\n\t\t + W(6, -1099126911, 1023142916, -1110220795, -1106562202)\n\t\t + W(7, 1056016670, -1099653918, 1031215069, -1138223071);\n\tsum2 = W(0, -1112168075, -1111493200, -1123529566, 1022286331)\n\t\t + W(1, -1103466952, 1035493883, -1113566520, -1106265315)\n\t\t + W(2, 1034632723, -1122920764, 1009053647, 1049936313)\n\t\t + W(3, 1051909492, -1099948229, 1029419308, -1107051081)\n\t\t + W(4, 1034960798, 1040740621, -1105159128, 1057592446) + W(5, -1126339526, 1041517424, 1016655048, 1024151142)\n\t\t + W(6, -1112860057, -1108202591, -1115675116, -1112708946)\n\t\t + W(7, -1146770753, -1116950762, -1115594520, -1103163741);\n\tWS(1063407871, 1051042354);\n\tsum1 = W(0, 1005154604, -1120529264, -1106161584, -1130858780)\n\t\t + W(1, -1114354154, -1127255711, 1023693521, -1115504868)\n\t\t + W(2, 1049807310, 1052429035, 1057743574, 1063894449) + W(3, 1058090310, 1052514789, 1044231916, 1049931918)\n\t\t + W(4, -1113122997, -1100831547, -1088929544, -1086654500)\n\t\t + W(5, -1089886688, -1092092086, -1106897472, -1097639884)\n\t\t + W(6, -1107282310, 1042685852, -1113923042, -1129272494)\n\t\t + W(7, -1164896285, -1131567786, -1131959253, -1115987013);\n\tsum2 =\n\t\tW(0, -1113031572, 1030565628, -1127702936, 992883874) + W(1, 1014952720, 990495554, 1018238740, 1023316920)\n\t\t+ W(2, 1043434467, -1108784254, -1111949688, 1036810375)\n\t\t+ W(3, -1111107284, 1042918247, -1120169364, -1112993936)\n\t\t+ W(4, -1088941888, 1056568736, 1036016830, 1060861120) + W(5, 1023742716, -1098281783, 1022041004, -1112517088)\n\t\t+ W(6, -1067187434, -1079041185, 1074040966, 1075709893) + W(7, -1099161149, 992814626, 1039733673, 1028892682);\n\tWS(1053166591, -1107822593);\n\tsum1 = W(0, 1033874440, 1022746982, 1035703758, 1019810386) + W(1, 1044260196, 1042374543, 1040749291, 1041374685)\n\t\t + W(2, -1120335240, 1031831786, 1052124034, 1048792350)\n\t\t + W(3, -1095582904, -1088629918, -1097950065, -1085974448)\n\t\t + W(4, -1105709561, -1108379508, -1093762507, 1046826502)\n\t\t + W(5, 1053612659, 1045805451, 1037463342, 1042845918) + W(6, 1042509273, 1008295657, 1044631286, -1124953572)\n\t\t + W(7, -1112928126, -1113071488, -1120529605, -1132054272);\n\tsum2 = W(0, 1010990056, 1039106059, -1102786881, -1114641521)\n\t\t + W(1, -1133768253, -1101476912, -1103607882, -1113060394)\n\t\t + W(2, -1096561981, -1097601992, 1031463124, 1058004743)\n\t\t + W(3, 1042505523, 1041182740, -1105959219, -1099775079) + W(4, 1040308359, 1052717590, 1058176412, 1045709336)\n\t\t + W(5, 1034355291, -1096768246, 1033275384, -1105804625)\n\t\t + W(6, -1119485380, -1115258493, -1101721469, -1138490792)\n\t\t + W(7, -1101570252, 1029590734, 1037679123, 1036565969);\n\tWS(1028916214, 1067075549);\n\tsum1 =\n\t\tW(0, 1039584518, -1119264713, 1016298993, -1105861885) + W(1, -1113980813, 1020015061, -1134777055, 1032661512)\n\t\t+ W(2, -1148995491, -1109885152, 1055889168, 1067421167) + W(3, 1059632007, 1055091716, 1045130509, 1052375930)\n\t\t+ W(4, -1098323934, -1096386895, -1096985498, -1085982162)\n\t\t+ W(5, -1087532161, -1088331431, -1095878225, -1104015130)\n\t\t+ W(6, 1026160863, 1022848653, -1150434165, 1034469007) + W(7, 1044152506, 1024761132, 1032543553, -1104676378);\n\tsum2 = W(0, -1120016029, -1096222017, -1119382227, -1092715875)\n\t\t + W(1, -1110818689, 1049876716, -1103484103, 1032841990)\n\t\t + W(2, -1101422768, -1103630239, 1040689805, 1064582511)\n\t\t + W(3, 1043406218, -1089499537, 1029271710, -1117522613)\n\t\t + W(4, -1104653664, -1105545071, -1120927281, 1058022283)\n\t\t + W(5, 1060808344, -1107109410, -1107008053, -1105419897)\n\t\t + W(6, -1122344899, 1042131820, -1120071349, -1101606830)\n\t\t + W(7, -1096987934, 1051590178, -1099435532, 1050342947);\n\tWS(1047020030, 1040511430);\n\tsum1 = W(0, -1108637223, 1033110649, 1044090139, 1043424750)\n\t\t + W(1, 1036624046, -1120308481, 1033721201, -1106849700)\n\t\t + W(2, -1092384755, -1090443530, -1085982557, -1080046633)\n\t\t + W(3, -1083957593, -1096279270, -1149642107, -1100324533)\n\t\t + W(4, 1057603229, 1053549631, 1061618217, 1047924234) + W(5, 1053999549, 1057048888, 1057845673, 1052833857)\n\t\t + W(6, 1031927268, -1122999800, 1026366340, 1032840448) + W(7, 1015929108, 1020572028, 994286645, 1039624063);\n\tsum2 = W(0, 1035208568, 1043030610, -1107699159, 1044796248)\n\t\t + W(1, 1034655700, -1103668262, 1045164876, -1095424772)\n\t\t + W(2, -1124082321, 1008382386, -1107061123, 1049576136)\n\t\t + W(3, 1051573865, 1048541752, -1093669891, -1134934914)\n\t\t + W(4, -1093736918, 1050323039, -1114950423, 1074526989)\n\t\t + W(5, 1073198167, -1080621030, -1074078238, -1079139349)\n\t\t + W(6, 1048736861, -1118377912, -1106119918, -1111443567)\n\t\t + W(7, -1132389881, 1034733436, 1034120076, 1029501600);\n\tWS(-1080108544, 1072234904);\n\tsum1 =\n\t\tW(0, -1115070415, -1130610603, -1098588213, 1057466749) + W(1, -1104374087, 1029557602, 1018553236, 1001112594)\n\t\t+ W(2, 1027588151, 1029085890, 1032775046, -1089931562) + W(3, -1123371019, -1094030554, 1034779836, 999211181)\n\t\t+ W(4, 1031137458, -1104252646, 1056995037, -1083673968) + W(5, 1052314097, 1050628415, 1033643941, 1036988180)\n\t\t+ W(6, 1018404227, 1044293186, 1028038521, 1050777268) + W(7, -1093125043, 1046325824, -1108340394, 1020739741);\n\tsum2 = W(0, -1115557063, -1118678156, 1045099863, -1102856438)\n\t\t + W(1, 1035209289, 1035167397, -1117208818, -1120387027)\n\t\t + W(2, 1043108929, 1033401680, 1036186051, -1124450766)\n\t\t + W(3, -1112637977, -1114646959, 1012643139, -1132473655)\n\t\t + W(4, -1138826120, -1093193803, -1079584214, 1068262877)\n\t\t + W(5, -1121148137, 1041792105, -1138286224, 1032348301)\n\t\t + W(6, -1108049897, -1109597407, 1013268663, 1049634970)\n\t\t + W(7, 1046161245, -1111895568, -1127251156, -1116707942);\n\tWS(1061770399, 1033097145);\n\tsum1 = W(0, -1127803310, -1108446526, 1046619869, -1102069216)\n\t\t + W(1, -1115166002, -1107462472, -1113123881, -1109525661)\n\t\t + W(2, -1100493560, -1122290538, -1090144134, -1124504076)\n\t\t + W(3, -1096124978, -1113245389, -1115437168, -1114380655)\n\t\t + W(4, 1049484359, 1040952192, 1049567736, 1060283011) + W(5, 1036170309, 1049188012, 1004781969, 1043620172)\n\t\t + W(6, -1117956049, -1101349332, 1015706547, 1051006353)\n\t\t + W(7, 1027971186, -1105896346, 1011773295, -1118021614);\n\tsum2 =\n\t\tW(0, -1115090363, -1146121477, 1029869322, 1039239074) + W(1, -1123366919, -1123569769, -1115297931, 1022224092)\n\t\t+ W(2, 1035607607, 1032878473, 1020296178, -1094567498) + W(3, -1133024223, -1111505684, 1036037468, 1025152664)\n\t\t+ W(4, 1036976780, 1008730983, 1050702114, 1060438996) + W(5, -1092544833, -1088372125, -1119747923, 1015952550)\n\t\t+ W(6, -1102631851, -1105868946, -1106613659, 1056742871)\n\t\t+ W(7, 1056526109, -1103439045, -1114092237, -1109382916);\n\tWS(1063262431, 1041246684);\n\tsum1 =\n\t\tW(0, -1095604910, 1035931377, -1116408259, -1113418944) + W(1, 1035543059, -1109446615, 1041501409, -1111045021)\n\t\t+ W(2, -1094141452, -1103734011, -1088213584, -1084116356)\n\t\t+ W(3, -1088057339, -1084926720, -1095142868, -1085134126)\n\t\t+ W(4, 1054301899, 1050116188, 1059695011, 1063045487) + W(5, 1060587189, 1062081288, 1055163174, 1061043357)\n\t\t+ W(6, 1050361575, 1015464930, -1130477940, 1005018697) + W(7, -1114430457, -1112900435, 968128030, 1012274924);\n\tsum2 = W(0, -1088652568, -1101936220, -1091191468, -1102444501)\n\t\t + W(1, -1123800532, -1111069004, -1088813372, 1050243792)\n\t\t + W(2, 1079171932, 1073764649, 1074855165, -1113430470)\n\t\t + W(3, -1095064501, -1078839186, -1078450334, -1071519758)\n\t\t + W(4, 1068650823, 1062997529, 1053027607, 1039600983)\n\t\t + W(5, -1105207914, -1082346847, -1088354544, -1081653443)\n\t\t + W(6, -1089634291, -1106083041, -1102140198, -1123235056)\n\t\t + W(7, 1028735871, 1056073450, -1114344542, 1060600412);\n\tWS(-1071343712, -1080188504);\n\tsum1 = W(0, 1048814204, -1112944093, 1038698214, -1110388460)\n\t\t + W(1, -1102353903, -1113346827, -1115354285, -1172877482)\n\t\t + W(2, 1024112567, 992179242, 1035991718, 1065540811) + W(3, 1062800155, 1057270438, 1047814390, 1055244391)\n\t\t + W(4, -1101821021, -1105846854, -1110088095, -1086620536)\n\t\t + W(5, -1085891530, -1092189183, -1094362793, -1096652125)\n\t\t + W(6, -1155239198, -1115614373, -1117961066, 1022833410)\n\t\t + W(7, 1037955557, -1130491710, 1026576596, 1021561214);\n\tsum2 = W(0, 1077488778, 1067869852, -1080283979, -1070445594)\n\t\t + W(1, -1085461181, -1113067149, -1135625536, -1105631704)\n\t\t + W(2, 1057844910, 1017329883, -1112258962, 1038200220) + W(3, 1045877800, 1016515143, 1029029881, 1026840239)\n\t\t + W(4, -1110901413, -1123912240, 1048616910, -1103189448)\n\t\t + W(5, 1033584054, -1113680120, 1006246833, 1028070058)\n\t\t + W(6, -1157420388, 1016773013, -1127671945, 1027002057)\n\t\t + W(7, -1139116556, -1108492850, 1033508697, -1122607860);\n\tWS(-1114300667, -1123436789);\n\tsum1 = W(0, 1048745214, -1106612992, 1040619730, -1101020989)\n\t\t + W(1, -1120049178, -1129452308, -1112058252, 1040777596)\n\t\t + W(2, 1024457460, 1049280824, 1061265254, 1066754197) + W(3, 1060475010, 1056957204, 1052291799, 1051532558)\n\t\t + W(4, -1084727981, -1099711469, -1091611130, -1090437274)\n\t\t + W(5, -1087975654, -1087165059, -1095257281, -1091858685)\n\t\t + W(6, -1124831645, -1120312678, 991636461, -1115033343)\n\t\t + W(7, 1037659252, 1036876438, 1024723233, -1128167880);\n\tsum2 = W(0, -1102675226, 1045758589, -1106608364, 1037856863)\n\t\t + W(1, -1121700495, 1038509645, 1041300787, 1013024414) + W(2, -1096018291, 1033992894, 1053924217, 1023354017)\n\t\t + W(3, 1045521037, -1112080608, 1019757091, -1111416466)\n\t\t + W(4, -1064870457, -1078407710, 1074354229, 1077566439)\n\t\t + W(5, 1055978728, -1100523264, 1032114149, -1096094745)\n\t\t + W(6, 1050758265, -1091427154, 1044800412, -1122690967)\n\t\t + W(7, 1037435194, -1101170582, 1048475585, 1031501486);\n\tWS(-1081349952, -1073531246);\n\tsum1 = W(0, -1130396178, -1123247001, 1049234666, -1123595694)\n\t\t + W(1, 1044575749, -1118849787, 1027091408, 1015989072)\n\t\t + W(2, -1092471918, -1094799967, -1087091570, -1083589055)\n\t\t + W(3, -1090515766, -1088301188, -1100895532, -1095518837)\n\t\t + W(4, 1052933181, 1040552427, 1062313536, 1056428784) + W(5, 1060166366, 1052569014, 956727337, 1057005798)\n\t\t + W(6, -1120779255, 1032899791, 1048808240, 1047688662)\n\t\t + W(7, 1025076592, -1104574961, -1114767697, 1028829344);\n\tsum2 = W(0, 1036727690, 1038605852, 1000461252, -1108807283) + W(1, -1118764382, 1040753555, 1025474323, 1026410269)\n\t\t + W(2, -1101780564, 1036224480, 1043313873, 1058417373)\n\t\t + W(3, -1110550387, 1041024731, 1032765623, -1114514162) + W(4, 1047063866, 1003722492, 1071364196, 1075919102)\n\t\t + W(5, 1031984760, 1052825370, -1104266299, 1049040777)\n\t\t + W(6, -1095151348, -1101329253, -1071443435, -1072909475)\n\t\t + W(7, -1137970650, -1094681513, -1130737363, -1100563228);\n\tWS(-1087415039, 1075227720);\n\tsum1 =\n\t\tW(0, 1014202565, -1121306305, -1115466670, 1055732347) + W(1, -1088701572, 1045428619, -1106855619, -1113272762)\n\t\t+ W(2, 1030200505, -1093044977, 1052765481, -1086016434)\n\t\t+ W(3, -1108244135, 1044242725, -1102530383, 1042147022)\n\t\t+ W(4, 1042588557, 1045750086, -1099185023, -1102841730) + W(5, 1060432915, 1001272287, 1047811955, 1043051755)\n\t\t+ W(6, 1032642210, 1039690838, -1099716881, 1054066516) + W(7, -1089156724, 1045967960, 994787170, -1114980876);\n\tsum2 = W(0, 1034817173, -1106843150, 1035283571, -1117324330)\n\t\t + W(1, -1106783723, 1033652183, -1105003316, -1109219720)\n\t\t + W(2, 1033088277, -1115275500, -1108330169, 1059951304)\n\t\t + W(3, -1114610359, -1130129964, -1100855920, 1017452836)\n\t\t + W(4, -1105460751, 1042281307, -1117933953, 1055263105) + W(5, 1036736577, 1034893511, 1040893249, 1026860110)\n\t\t + W(6, -1119967238, -1122100142, -1118763227, 1033190213)\n\t\t + W(7, -1099584511, -1097591398, 1043864443, -1097701018);\n\tWS(1061885343, -1093433134);\n\tsum1 =\n\t\tW(0, -1119074171, 1040591342, 1024365415, -1112185530) + W(1, -1102861510, 1047951017, 1033079635, 1030794670)\n\t\t+ W(2, -1116612499, -1106037336, -1090085717, -1110885309)\n\t\t+ W(3, 1058148680, -1098920364, -1104145445, -1102965524)\n\t\t+ W(4, 1043937396, 1035985530, 1054530437, -1105284753) + W(5, -1085809524, 1042740717, -1143903027, 1048819605)\n\t\t+ W(6, 1026065358, 1035233146, 1023445318, 1041032751) + W(7, 1043298226, 1028431483, 1030877520, -1110782149);\n\tsum2 = W(0, -1120425303, 1041777983, 1008642595, 1038578170)\n\t\t + W(1, -1103931105, -1144970974, -1139607395, -1105571910)\n\t\t + W(2, -1115506247, -1109249837, 1051302633, 1062460419)\n\t\t + W(3, 1046700430, -1110379832, -1121481149, -1125592805)\n\t\t + W(4, -1089905659, -1082926483, 976609774, 1062992305) + W(5, 1016533657, 1046952726, -1128426413, 1044012895)\n\t\t + W(6, -1106986872, -1093100415, -1100742938, -1121360027)\n\t\t + W(7, 1026171953, -1123505732, 1047068010, -1108759193);\n\tWS(1057387711, 1071476886);\n\tsum1 = W(0, 1029774760, 1046876472, 1049447728, -1104814472) + W(1, 1047761369, -1107998911, 1035672969, 1025453339)\n\t\t + W(2, -1088145158, -1090879061, -1087750555, -1081209882)\n\t\t + W(3, -1102041597, -1088704948, -1101378696, -1090772220)\n\t\t + W(4, 1058722665, 1046940920, 1062289140, 1060559271) + W(5, 1057163193, 1046238393, 1049034574, 1051154538)\n\t\t + W(6, 1026644842, -1124024690, 1034805113, -1101227374)\n\t\t + W(7, 1041428045, -1112057972, -1123650077, 1045125730);\n\tsum2 = W(0, -1079574021, -1076424748, -1084651933, -1079383446)\n\t\t + W(1, -1094010079, -1105513599, -1094989946, -1083946107)\n\t\t + W(2, 1066168402, 1072246945, 1055648588, 1069722149) + W(3, -1105729737, 1052366950, 1046266897, 1064021500)\n\t\t + W(4, -1106633910, 1039775524, -1122282375, 1050613020)\n\t\t + W(5, -1112550614, 1046757765, 1041413657, -1117589808)\n\t\t + W(6, 1033041398, 1025560740, 1042767844, -1122422479)\n\t\t + W(7, 1029478726, 1029747528, -1132333344, -1110924549);\n\tWS(-1088291167, -1076464582);\n\tsum1 = W(0, 1038365083, 1013092187, 1049005176, -1096083994) + W(1, 1046666973, 1029385568, -1130846211, 1035921309)\n\t\t + W(2, 1048475643, 1039614653, -1105893787, -1090164821) + W(3, 1048630844, 1052597003, 1030762351, 1049653618)\n\t\t + W(4, -1115380053, -1115741870, -1115211424, -1106465144)\n\t\t + W(5, -1092124773, -1097273638, -1104199584, -1098780292)\n\t\t + W(6, -1113517956, -1118168192, 1038779144, -1103584918)\n\t\t + W(7, 1051487172, 1036949051, 1029432699, 1041505439);\n\tsum2 = W(0, -1102442432, 1042447103, 1009200726, -1140140535)\n\t\t + W(1, 1018235219, 1038566242, -1105836948, -1119461411)\n\t\t + W(2, -1119046775, -1103497340, -1108371687, 1063726871)\n\t\t + W(3, 1023996549, -1100556235, -1134905751, -1115426548)\n\t\t + W(4, 1038119755, -1117033259, -1111757198, 1053430514)\n\t\t + W(5, -1097582390, -1130738637, 1027482933, 1038939472)\n\t\t + W(6, -1116688635, -1109692823, -1136365839, -1103585210)\n\t\t + W(7, 1035998106, -1122627505, -1113769016, -1131103707);\n\tWS(1063535295, -1106643391);\n\tsum1 = W(0, 998897947, -1114069468, 1030590255, -1120649212)\n\t\t + W(1, -1112623985, -1135800742, -1126057998, -1118923687)\n\t\t + W(2, 1049160779, 1050551697, 1037435628, 1059662980) + W(3, 1051258674, 1051146291, 1042046535, 1051522915)\n\t\t + W(4, -1095715331, -1114097198, -1091439068, -1098500149)\n\t\t + W(5, -1093374928, -1112852607, -1104302276, -1098602138)\n\t\t + W(6, 1022592892, 1035333911, -1105875754, 1036951763)\n\t\t + W(7, -1097348874, 1021555078, 1032877804, -1118947123);\n\tsum2 = W(0, 1020791040, -1119848331, 1028098574, 1024075228)\n\t\t + W(1, 1036335573, -1114214294, 1028067710, -1123998545)\n\t\t + W(2, 1023004440, 1035188360, 1036866165, -1081188844) + W(3, 1036267331, 1020492762, 1026996488, 1028180222)\n\t\t + W(4, -1131522740, 1010552055, -1087402238, -1063807577)\n\t\t + W(5, -1074297638, 1044255896, -1109527927, -1125487816)\n\t\t + W(6, -1130592194, -1114014595, 1057774258, 1085749988)\n\t\t + W(7, 1072260443, -1101071935, 1041502854, -1121770211);\n\tWS(1065370528, -1140007425);\n\tsum1 = W(0, -1119191691, -1123119348, 1043193134, -1144777506)\n\t\t + W(1, 1048874737, -1114692372, 1047204584, 1028382351)\n\t\t + W(2, -1089109360, -1093467562, -1104035088, -1082641845)\n\t\t + W(3, -1090665335, -1085597050, -1097312497, -1084438004)\n\t\t + W(4, 1051697742, 1051845168, 1049231373, 1058881533) + W(5, 1060727795, 1053776045, 1050811579, 1054559607)\n\t\t + W(6, 1048704645, -1120571445, 1047054964, -1128753754)\n\t\t + W(7, -1122636375, -1135014444, 962936920, 1047044271);\n\tsum2 = W(0, 1072219394, 1068804680, 1068134846, 1066171639)\n\t\t + W(1, -1095987744, -1080918851, -1077110574, -1071545857)\n\t\t + W(2, -1078126224, -1079031251, -1078951161, -1087436811)\n\t\t + W(3, 1039512383, 1067164113, 1069504242, 1075315134)\n\t\t + W(4, -1093298188, -1110022070, -1084926454, -1107767815)\n\t\t + W(5, 1055586357, 1031793821, 1041030661, 1055897321) + W(6, 1011861728, 1040923692, -1105857084, -1121892273)\n\t\t + W(7, 1026590003, 1040751494, -1123439499, -1109554506);\n\tWS(-1089696543, -1143233957);\n\tsum1 =\n\t\tW(0, -1115482013, 1045323653, -1096516931, 1035013745) + W(1, -1162367211, 1054106403, -1107204469, 1036179510)\n\t\t+ W(2, -1129127938, -1098483714, 1045383939, -1091150045)\n\t\t+ W(3, 1043411549, -1086835476, 1048447553, -1103773800)\n\t\t+ W(4, 1041381507, -1110243009, 1059582003, -1106321908) + W(5, 1034020454, 1026676964, 1034191370, -1159158363)\n\t\t+ W(6, -1122467892, 1049605572, -1090424421, 1043667267)\n\t\t+ W(7, -1109629626, 1048548650, -1105600748, 1035568493);\n\tsum2 = W(0, -1134008573, -1125596513, 1011008945, 1051842604)\n\t\t + W(1, -1125276577, -1118729604, -1111959837, -1117720498)\n\t\t + W(2, 1032064725, -1121806942, 1045441656, 1065460002)\n\t\t + W(3, -1114964420, -1130705389, -1121883022, 1034360078)\n\t\t + W(4, -1117795542, 1035355315, 1024667789, -1089961367)\n\t\t + W(5, -1081892598, 1026896379, 1020053498, 1023648883) + W(6, -1113496357, 998755498, -1119910472, 1041632626)\n\t\t + W(7, 1035390555, 1032979221, -1129745921, -1115672512);\n\tWS(1065278079, -1120402802);\n\tsum1 = W(0, 1031924074, -1115548942, -1106896516, -1112658654)\n\t\t + W(1, -1103991244, -1121670257, -1115583119, 1031270934)\n\t\t + W(2, 1052390115, 1049303261, 1045251552, 1060948388) + W(3, 1062622505, 1054395391, 1045812503, 1048618059)\n\t\t + W(4, -1097070063, -1099757447, 1040981136, -1081623390)\n\t\t + W(5, -1085365853, -1096062708, -1101077740, -1099232531)\n\t\t + W(6, -1116671142, -1118597165, 1041336272, 1043338841)\n\t\t + W(7, -1145407604, 1032773481, -1123616408, -1127437558);\n\tsum2 =\n\t\tW(0, -1114021356, 1032565152, 1056835748, -1085160508) + W(1, 1058685385, -1086618535, 1047242231, 1032715041)\n\t\t+ W(2, -1110767736, -1122384971, -1085457975, 1068814369)\n\t\t+ W(3, -1085213012, 1063574785, -1144776155, -1097434793)\n\t\t+ W(4, -1100377718, 1041858293, -1085697040, 1060746614)\n\t\t+ W(5, 1057245366, -1094120608, -1093482365, 1056356490) + W(6, 1034493514, 1019779384, 1016590225, -1097525969)\n\t\t+ W(7, 1043875459, -1097974912, 1054776673, -1096653037);\n\tWS(1055688959, -1109584743);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[525];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define temp_tex(pos) (float(texture(temp, pos).x))\nstatic const float2 temp_size = float2(GetInputSize().x * 1, GetInputSize().y * 2);\nstatic const float2 temp_pt = float2(1.0 / (temp_size.x), 1.0 / (temp_size.y));\n\n#define HOOKED_tex(pos) temp_tex(pos)\n#define HOOKED_size temp_size\n#define HOOKED_pt temp_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 525; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (1)) + 0.5, float(group_base.y + y - (3)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[8];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 6];\n\tsamples[1][3] = inp[local_pos + 7];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 19];\n\tsamples[3][1] = inp[local_pos + 20];\n\tsamples[3][2] = inp[local_pos + 21];\n\tsamples[3][3] = inp[local_pos + 22];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 32];\n\tsamples[4][3] = inp[local_pos + 33];\n\tsamples[5][0] = inp[local_pos + 34];\n\tsamples[5][1] = inp[local_pos + 35];\n\tsamples[5][2] = inp[local_pos + 36];\n\tsamples[5][3] = inp[local_pos + 37];\n\tsamples[6][0] = inp[local_pos + 45];\n\tsamples[6][1] = inp[local_pos + 46];\n\tsamples[6][2] = inp[local_pos + 47];\n\tsamples[6][3] = inp[local_pos + 48];\n\tsamples[7][0] = inp[local_pos + 49];\n\tsamples[7][1] = inp[local_pos + 50];\n\tsamples[7][2] = inp[local_pos + 51];\n\tsamples[7][3] = inp[local_pos + 52];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 18];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(2, 1);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1) + ivec2(1, 0), ret);\n}\n"
  },
  {
    "path": "src/Effects/NNEDI3/NNEDI3_nns256_win8x6.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: nnedi3.py --nns 256 --win 8x6 --use-compute-shader --use-magpie\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME NNEDI3_256_6\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 1 * 2\n//!HEIGHT INPUT_HEIGHT * 2 * 1\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH * 1\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D temp;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_temp;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC NNEDI3 (double_y, nns256, win8x6)\n//!IN INPUT\n//!OUT temp\n//!BLOCK_SIZE 32, 16\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[12]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 12; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 48.0;\n\tfloat mstd1 = sumsq / 48.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, -1118812211, -1118354985, -1108702207, -1107177196)\n\t\t + W(1, -1116025261, -1113369587, -1126504964, -1117760744)\n\t\t + W(2, -1127312137, 1040658850, -1105559165, 1024463101)\n\t\t + W(3, -1120674615, -1117458482, -1124477727, 1041726453)\n\t\t + W(4, -1102924251, -1120327001, 1037346316, -1097807929)\n\t\t + W(5, 1051925971, 1061593601, -1098269094, 1015141868)\n\t\t + W(6, -1120777358, -1114916026, 1042061230, 1053108884)\n\t\t + W(7, -1109857889, -1129934237, -1137814218, -1101147334)\n\t\t + W(8, 1032645830, 1029100907, -1121960158, -1114359336) + W(9, -1128256674, 978731342, 1026597474, 1023094846)\n\t\t + W(10, -1133406593, 1018102856, -1118580651, -1112914505)\n\t\t + W(11, 1040041685, 1010634196, -1137769344, -1124738995);\n\tsum2 =\n\t\tW(0, 1012167794, 1034293816, 1040949842, -1073125242) + W(1, -1098861131, 1034317546, 975711915, -1103749327)\n\t\t+ W(2, -1105000392, -1097051670, 1026609280, -1107080190)\n\t\t+ W(3, 1007876102, 1042152488, -1113573827, 1048636347) + W(4, -1103172582, 1037196612, -1112492311, 1032768248)\n\t\t+ W(5, 1065119806, 1064777150, 1028248806, -1106667446) + W(6, 1037438381, 1026775674, 1049707133, 1035198208)\n\t\t+ W(7, 1042916747, 1024046979, -1104922990, -1112883791)\n\t\t+ W(8, -1118855570, 1049268872, -1108803486, -1112062411)\n\t\t+ W(9, 1035896848, 1009005510, 1019305156, -1110039318) + W(10, 1037762592, 1031133421, -1129478003, 1029694272)\n\t\t+ W(11, -1105233202, 1045598091, 1002108025, -1116379320);\n\tWS(1002542528, -1081598301);\n\tsum1 =\n\t\tW(0, -1123106403, 1018532849, 1058293919, -1096563748) + W(1, 1033211315, -1104454821, 1003194766, 1031358712)\n\t\t+ W(2, 1048723343, -1102943230, 1043311017, 1033034550)\n\t\t+ W(3, -1115291860, -1100442248, 1060312385, -1084853826)\n\t\t+ W(4, -1122032382, -1105126162, -1120609928, -1102109750)\n\t\t+ W(5, 1065191364, -1082116255, 1048832547, -1093430837)\n\t\t+ W(6, 1033033375, -1124327881, 1057579241, -1090047916) + W(7, 1045565001, 1033480943, -1104418325, 1022719310)\n\t\t+ W(8, 1055391647, -1090520747, 1034840623, -1104668395) + W(9, 1031657633, 1042404749, 1048926634, -1115672903)\n\t\t+ W(10, 1040065984, 1041617645, -1140694509, -1173350542)\n\t\t+ W(11, 1057234642, -1088607906, 1034960904, -1100859732);\n\tsum2 =\n\t\tW(0, -1118979564, 1038135851, 1040555036, 1046730291) + W(1, -1098841046, 1010901456, -1136455954, -1098903542)\n\t\t+ W(2, -1113356687, -1091503884, 1033064908, -1105119573) + W(3, 1031647880, 1043936541, 1041172918, 1053446821)\n\t\t+ W(4, -1105844234, 1050988870, -1098733088, -1095471090)\n\t\t+ W(5, 1058853402, 1057969905, -1107613268, -1096003667)\n\t\t+ W(6, 1032618663, -1114646115, -1111675314, 1026777488)\n\t\t+ W(7, -1104403193, 1040941647, -1115252794, 1050331000)\n\t\t+ W(8, 1042547849, 1032649026, -1109177822, -1135105484)\n\t\t+ W(9, -1105564107, -1107943513, -1102521857, -1097022326)\n\t\t+ W(10, -1106932655, -1111654963, 1028338874, 1030299514)\n\t\t+ W(11, 1048036907, 1045220138, -1104926499, 1015146572);\n\tWS(-1089089900, 1057806976);\n\tsum1 =\n\t\tW(0, -1107295812, 1034138799, -1095422036, 1050726826) + W(1, 1041715821, -1107540610, -1127595840, 1025412102)\n\t\t+ W(2, -1098433268, -1189029283, -1122343505, -1114195981)\n\t\t+ W(3, -1123024597, 1036945929, -1092642698, 1055732365)\n\t\t+ W(4, -1122551116, 1004508092, -1107414907, 1043589025)\n\t\t+ W(5, -1086058047, 1066834483, 1012137296, -1123010964) + W(6, 1016079705, 1048626936, -1087422851, 1060391966)\n\t\t+ W(7, -1112593208, 1021997657, -1114511976, 1026901142)\n\t\t+ W(8, -1090938821, 1050840209, 1032081267, -1116540066)\n\t\t+ W(9, -1121404144, -1122208804, -1099844512, 1046023279)\n\t\t+ W(10, 1025525231, -1117735535, -1120167114, -1132433569)\n\t\t+ W(11, -1092394401, 1054523402, 1034856335, -1140325311);\n\tsum2 =\n\t\tW(0, -1100068589, 1045053907, 1035618626, 1049401249) + W(1, 1036897142, -1103084156, 1040406565, -1112537807)\n\t\t+ W(2, -1097933278, -1091711434, 1040848725, 1039746012)\n\t\t+ W(3, -1105732125, 1034765996, -1099579155, 1056573344)\n\t\t+ W(4, -1089717374, 1030295740, -1129255625, -1096936254)\n\t\t+ W(5, 1047111871, 1055190008, 1050298277, -1110783667) + W(6, -1110986904, -1098576495, 1056019034, 1058665437)\n\t\t+ W(7, -1089302244, 1041764164, 1041854514, -1119869595)\n\t\t+ W(8, -1119227686, -1092612461, 1058580142, -1100808273)\n\t\t+ W(9, -1108063740, -1108123574, 1029490732, -1121089271)\n\t\t+ W(10, -1127874601, 1022690203, 1040297872, -1106886121)\n\t\t+ W(11, 996712344, -1113107096, -1110437244, 1034569294);\n\tWS(1049963735, -1124746024);\n\tsum1 = W(0, 1006389467, 1034213253, 1058411598, -1089111694) + W(1, -1120169982, 1033778855, 991131306, -1110639240)\n\t\t + W(2, 1049374726, -1111102680, 1039576302, -1134195605)\n\t\t + W(3, -1124991168, -1124116580, 1060442825, -1086690096)\n\t\t + W(4, 1018630958, -1122058050, 1036315168, -1106688436)\n\t\t + W(5, 1064243752, -1080857842, 1032153615, 1024033695)\n\t\t + W(6, -1114080443, 1016950458, 1058630778, -1086343400) + W(7, 1034713638, 1016006830, 1034164414, 1034354600)\n\t\t + W(8, 1057235431, -1086990857, 1036089759, 1017381585)\n\t\t + W(9, -1168983685, -1118357326, 1051622657, -1099687954)\n\t\t + W(10, 1035150121, 1027377121, 1034869786, 1046100667)\n\t\t + W(11, 1028310995, -1090257402, -1126482082, -1130216101);\n\tsum2 = W(0, -1114775505, -1111353121, 1051023520, 1077280281)\n\t\t + W(1, 1042396970, -1100155636, 1022693528, 1040828458) + W(2, 1041444385, 1083159907, 1039028690, 1038899070)\n\t\t + W(3, 1033686534, -1108626677, -1101109690, -1090827263)\n\t\t + W(4, -1129576724, -1108327399, -1159675846, -1179590680)\n\t\t + W(5, -1089609004, -1064966677, -1146898193, -1128357112)\n\t\t + W(6, -1112709023, 1041114289, -1101828769, -1073695373)\n\t\t + W(7, -1117377551, 1026559236, 1033838002, 1028829848) + W(8, 1037546580, -1090323484, 1046069066, 1017563688)\n\t\t + W(9, -1125624388, -1108121837, 1033655640, 1042738654)\n\t\t + W(10, -1098820901, -1149039617, 1032684170, 1037026782)\n\t\t + W(11, -1104771455, -1104201752, 1049907200, -1119733667);\n\tWS(-1082925548, -1131273240);\n\tsum1 =\n\t\tW(0, -1130676005, 1028984921, -1090453298, 1056020338) + W(1, 1036092472, 1031745797, 1024417890, 1026031368)\n\t\t+ W(2, -1094705109, 1048479050, 1026370227, 1023514525) + W(3, -1127912110, 1046418962, -1088411833, 1054709085)\n\t\t+ W(4, 1040943828, -1139610597, -1123681912, 1048544370) + W(5, -1080625999, 1056570469, 1016526011, 1039178347)\n\t\t+ W(6, -1128802908, 1032747842, -1078821070, 1060414079)\n\t\t+ W(7, -1134933227, -1115579031, 1009745483, -1115143804)\n\t\t+ W(8, -1093720869, 1058018725, -1146727344, 1033865376) + W(9, 1030244593, 1035809011, -1115224705, 1048613352)\n\t\t+ W(10, -1126383553, -1123856496, -1124372951, 1012870858)\n\t\t+ W(11, -1099806226, 1053689379, 1034696072, 1032018765);\n\tsum2 = W(0, -1117505397, -1114926763, 1048798551, -1102904639)\n\t\t + W(1, 1025448640, -1112830121, -1126832117, -1140231915)\n\t\t + W(2, -1146496262, -1113101086, -1129185935, -1125809392)\n\t\t + W(3, -1116692107, -1125548157, 1045683415, -1125191934)\n\t\t + W(4, 1034411663, -1121525964, -1107644007, -1125354742)\n\t\t + W(5, 1053833339, 1000279686, -1120274227, -1113082203)\n\t\t + W(6, -1117458583, 1042669208, 1057710126, -1104919217)\n\t\t + W(7, 1041220979, -1111650191, -1123105101, 1027773818)\n\t\t + W(8, 1032098567, -1107525999, 1022009255, 1035574395)\n\t\t + W(9, -1117032217, -1115355410, -1100115369, 1032507221)\n\t\t + W(10, 1021108475, -1112638630, 1004815486, -1119603373)\n\t\t + W(11, -1110288078, -1103622420, 1039592007, -1117835672);\n\tWS(-1089340204, 1064822548);\n\tsum1 =\n\t\tW(0, 1024560260, 1040632746, 1042654740, -1106019185) + W(1, -1121721479, 1037194524, 1017532199, -1123651609)\n\t\t+ W(2, 1053882699, -1094337163, 1033472482, 1028050126) + W(3, 1036465700, 998268921, 1058440180, -1083627654)\n\t\t+ W(4, -1112650528, 993325743, 1032538389, -1115892569) + W(5, 1062655475, -1081203240, 1042941034, 1013010462)\n\t\t+ W(6, 1031720480, -1109887627, 1057084090, -1087921069) + W(7, 1046201917, 1035154240, 1035008482, 1033415588)\n\t\t+ W(8, 1054084900, -1086686700, 1038013786, 1021897635) + W(9, 1020865894, -1112010572, 1046711885, -1098821294)\n\t\t+ W(10, 1039144481, 1027972046, 1041385023, 1043778521)\n\t\t+ W(11, 1050203279, -1083224116, 1043447032, -1131974615);\n\tsum2 = W(0, -1108565409, 1034353453, -1088688588, 1053209723)\n\t\t + W(1, 1049996954, -1107721619, 1041490776, 1018486577)\n\t\t + W(2, -1105841420, -1092734414, 1039814215, -1122233136)\n\t\t + W(3, -1103680498, -1113519263, 1037914109, -1094792328)\n\t\t + W(4, 1034343810, -1116717915, -1113858207, 1052082200) + W(5, 1062919581, 1049986423, 1012724150, 1040029087)\n\t\t + W(6, 1018958125, -1097140178, -1095558118, -1107726366)\n\t\t + W(7, -1098318745, 1007719490, -1139146344, 1046768714)\n\t\t + W(8, 1049328132, 1044527939, 1024888668, -1100531711) + W(9, 1024460115, -1098207895, 1041960027, 1046336394)\n\t\t + W(10, -1106186917, 1037888927, -1111959213, -1128703602)\n\t\t + W(11, 1035231667, -1110040773, 1036710347, -1102670680);\n\tWS(-1083458668, -1076208878);\n\tsum1 = W(0, 1028803476, 1040683401, 1046406904, -1098733730)\n\t\t + W(1, 1004468631, 1030855367, -1119221604, -1097616301)\n\t\t + W(2, 1051879501, -1093169213, -1110693690, -1111140815)\n\t\t + W(3, -1136427363, 1042493937, 1058517387, -1088547874)\n\t\t + W(4, 1024040880, -1127640694, 1033962333, -1106128994)\n\t\t + W(5, 1062475632, -1086787145, 1045297574, -1108587948)\n\t\t + W(6, -1108948664, -1096558041, 1061490456, -1088927588)\n\t\t + W(7, 1028806548, -1104411844, 1041264181, 1044433886) + W(8, 1053313566, 1035939910, 1038834422, 1040762412)\n\t\t + W(9, -1108358441, -1097860853, 1049919352, -1096390160)\n\t\t + W(10, -1095128350, -1118015030, 1032628870, -1123751924)\n\t\t + W(11, 1054299289, -1130402734, -1106314264, -1165494119);\n\tsum2 = W(0, 1016611708, 1016478676, -1110195557, -1101004152)\n\t\t + W(1, 1040169462, -1128480930, 1037888148, 1037533502) + W(2, 1036667983, 1029018929, 1051795874, -1116498505)\n\t\t + W(3, -1105282980, 1012928145, -1126800264, -1092116144)\n\t\t + W(4, 1041335879, -1105668811, 1016374797, 1042320298)\n\t\t + W(5, -1123884642, 1048907311, 1052196876, -1110762465)\n\t\t + W(6, -1146676672, -1119445205, -1097480948, 1063932318)\n\t\t + W(7, -1105880602, -1096424000, -1118267731, -1133007186)\n\t\t + W(8, -1111241984, 1045206632, -1088285853, 1016609657)\n\t\t + W(9, -1130451858, -1123652878, 1039970164, 1051255124)\n\t\t + W(10, -1095104183, 1029046774, 1032410610, -1114217777)\n\t\t + W(11, 1039354964, 1032089604, -1090379026, 1046489649);\n\tWS(-1104670894, -1131977046);\n\tsum1 =\n\t\tW(0, -1112648188, -1127207577, 1054983097, -1088875575) + W(1, 1031188251, -1103988635, -1122872327, 1044660591)\n\t\t+ W(2, 1050049705, -1112061830, 1037435556, 1027063042) + W(3, 1034658686, -1159198685, 1055452918, -1088327234)\n\t\t+ W(4, 1047857485, -1117747167, -1105196647, -1091967838)\n\t\t+ W(5, 1062208630, -1080890076, 1027642075, -1097581231) + W(6, 1040705957, 1050515731, 1055187309, -1103107959)\n\t\t+ W(7, 1054501223, 1026629396, -1105551222, -1105182655)\n\t\t+ W(8, 1051606290, -1088400827, -1109004816, -1115427963)\n\t\t+ W(9, -1121117111, -1127322710, 1047450666, -1103254713)\n\t\t+ W(10, 1042878098, -1119280070, 1017793890, 1049557794)\n\t\t+ W(11, 1052382814, -1097595959, 1041414585, -1121163375);\n\tsum2 =\n\t\tW(0, 1016354951, 1027513536, -1143898815, -1120711631) + W(1, -1121835937, 1011202413, -1117974191, 1035918257)\n\t\t+ W(2, 1029824032, 1038928177, -1110582057, 1027020738) + W(3, 1039379806, 1037237024, -1103985849, -1101088822)\n\t\t+ W(4, 1009730353, -1113735870, 1055799129, -1144611727)\n\t\t+ W(5, -1097216592, -1097673825, 1040607236, 1044957698)\n\t\t+ W(6, 1043516685, 1028380863, -1106760625, -1124050651)\n\t\t+ W(7, -1115312251, -1114960631, 1037116388, 1042440009)\n\t\t+ W(8, -1103814691, -1105579212, 1038947942, 1027787831)\n\t\t+ W(9, 1033575170, -1106882882, -1123395355, 1026359109)\n\t\t+ W(10, -1135830635, -1133116095, -1131729016, 1025801393)\n\t\t+ W(11, -1136138683, 1011024469, -1112603972, 1008198659);\n\tWS(-1096559831, 1037484900);\n\tsum1 =\n\t\tW(0, 1028249855, 1038422322, 1057397273, -1091437192) + W(1, -1101563608, 1033785689, -1134487991, 1027879764)\n\t\t+ W(2, 1048869250, -1098773026, 1029769503, 1031362249) + W(3, 1034313250, 1029515489, 1056640275, -1086850776)\n\t\t+ W(4, -1127965876, -1173649736, 1016173128, -1112460521)\n\t\t+ W(5, 1065757625, -1083502823, -1131269971, -1128247556)\n\t\t+ W(6, 1027417370, -1107825326, 1058322735, -1083394976) + W(7, 1044386388, 1035484541, 1028347039, -1123304579)\n\t\t+ W(8, 1054334819, -1089694535, -1107441417, -1132373103)\n\t\t+ W(9, 1000575210, 1030471249, 1052511918, -1098313541) + W(10, 1031752252, 1034873120, 1035635068, -1120703806)\n\t\t+ W(11, 1052376319, -1102551488, -1098473097, -1142130892);\n\tsum2 = W(0, -1112511339, -1073555081, 1076402541, -1104998932)\n\t\t + W(1, -1101584674, 1037626737, 1040888051, -1070793862)\n\t\t + W(2, 1075658117, 1054215981, -1115233903, 1015165170) + W(3, 1033770332, -1069228230, 1075655149, 1042820552)\n\t\t + W(4, 1010151672, 1023929473, 1027239578, -1071158503) + W(5, 1077820889, 1046227202, 1035248614, 1033175695)\n\t\t + W(6, -1109060021, -1080567434, 1045918702, -1095422364)\n\t\t + W(7, 1038949494, 1025525751, -1135961020, 1047598893)\n\t\t + W(8, -1118850699, -1101978428, 1049027220, 1032251645) + W(9, -1113507810, 948656059, 1035044244, 1045389579)\n\t\t + W(10, 1028467783, -1117328038, -1110941727, -1129804625)\n\t\t + W(11, 1026016583, -1103164541, -1118124613, 1042587545);\n\tWS(-1081931126, 1073966570);\n\tsum1 =\n\t\tW(0, -1121849711, 1035175459, -1121951547, 1027761070) + W(1, 1025905706, -1114686833, -1146361331, -1097410109)\n\t\t+ W(2, 1026127169, 1045225025, 1037511592, -1113648733) + W(3, 1017322599, 1043585907, -1144746721, -1106255910)\n\t\t+ W(4, 1043091875, 1017686828, -1106692309, -1120101763)\n\t\t+ W(5, -1091000962, 1065386286, -1111228857, -1108319001)\n\t\t+ W(6, 1025148299, 1050307440, -1079735571, 1061827739) + W(7, -1120837551, 1018597782, -1106210884, 1038219466)\n\t\t+ W(8, -1091953433, 1056380469, -1102991437, -1147707682)\n\t\t+ W(9, 1006422511, 1023773090, -1096168868, 1049682211)\n\t\t+ W(10, 1003336935, -1110127893, -1115138804, -1132131774)\n\t\t+ W(11, -1102445962, 1046599772, 1040799505, 1028136822);\n\tsum2 =\n\t\tW(0, -1106398945, 1035173169, -1101335301, 1053305068) + W(1, -1121291886, -1109509581, 1034732755, -1090565718)\n\t\t+ W(2, 1056357842, 1050400788, -1115544374, -1107192051)\n\t\t+ W(3, -1136096426, 1037348813, -1122254044, 1036743473)\n\t\t+ W(4, -1105444760, 1016457143, -1116038033, -1089313148)\n\t\t+ W(5, 1066071262, 1057700465, -1086616818, 1022772267) + W(6, 1044672515, 1037418911, -1095175639, -1084949846)\n\t\t+ W(7, 1050477957, 1033704361, -1100200943, 1045738761) + W(8, -1132458755, 1003355997, -1102270714, 1035291569)\n\t\t+ W(9, 1037208365, -1130864309, 1007521414, 1030076164)\n\t\t+ W(10, 1045722667, -1111299866, 1025870712, -1117649125)\n\t\t+ W(11, 1025322164, -1106413087, 999303933, 1024551876);\n\tWS(1052508503, 1065718149);\n\tsum1 = W(0, 1042149474, 962035242, 1048663227, -1097510801) + W(1, 1028239019, 1038442493, -1109127212, -1098223900)\n\t\t + W(2, 1043423478, -1096660204, -1104342914, -1109357577)\n\t\t + W(3, 1041796883, 1027445007, 1055339346, -1087758861) + W(4, 1027971236, 1040109559, 1033122295, -1108112926)\n\t\t + W(5, 1061167739, -1089406218, 1037128774, 1025450507)\n\t\t + W(6, -1120120612, -1098175173, 1054196775, -1094841886)\n\t\t + W(7, -1105773058, -1123303012, 1045736850, 1043181559)\n\t\t + W(8, 1055761732, -1105769888, 1042761157, 1044237597)\n\t\t + W(9, -1110374755, -1100319159, 1041284046, -1103555357)\n\t\t + W(10, -1101757237, -1111907879, 1038133568, -1102543586)\n\t\t + W(11, 1051299336, -1120191499, -1105847257, 1039590240);\n\tsum2 =\n\t\tW(0, -1109097964, 1037136687, 1031673749, -1125393555) + W(1, 1019467600, 1025995330, 1021868522, -1116667451)\n\t\t+ W(2, -1094712046, 1041352693, -1104433838, 1008084051) + W(3, 1007318978, -1107845433, 1038331125, 1034962829)\n\t\t+ W(4, -1122570447, 1039892459, 1032613655, -1109068920)\n\t\t+ W(5, 1040720319, -1112580519, -1121851072, 1025598855)\n\t\t+ W(6, 1002517286, 1016069779, -1111158812, -1106409067)\n\t\t+ W(7, -1113430896, 1045465420, -1126879582, -1103760436)\n\t\t+ W(8, 1056111085, -1106729155, 1049773824, -1110468674)\n\t\t+ W(9, 1031113174, 1030143702, -1106358629, -1106975050)\n\t\t+ W(10, 1036295980, 1020538422, -1114937810, -1118059752)\n\t\t+ W(11, -1121843086, 1047380650, -1122235886, -1113447212);\n\tWS(1056997868, 1008833773);\n\tsum1 =\n\t\tW(0, -1118496039, 1006806901, 1039826714, -1123143270) + W(1, 1006039247, 1017005492, 1036420187, -1130107576)\n\t\t+ W(2, -1123687353, -1104570591, 1032886196, -1125702370)\n\t\t+ W(3, -1113594582, -1115019369, 1053157409, -1093231896)\n\t\t+ W(4, -1105180689, 1028719950, 1034344230, 1045363911) + W(5, 1059756929, -1095316624, -1102708199, 1009228202)\n\t\t+ W(6, 1038393121, -1090717022, 1058230383, -1095564524)\n\t\t+ W(7, 1035814292, -1119964195, -1109888100, 1037930126)\n\t\t+ W(8, 1045739824, -1098051412, -1129186168, 1033820442)\n\t\t+ W(9, 1032434307, -1110427933, 1042446790, -1101398261)\n\t\t+ W(10, 1025625861, 1028568173, -1131937728, -1112104883)\n\t\t+ W(11, 1052782212, -1104229594, -1112516090, -1136905401);\n\tsum2 =\n\t\tW(0, 1034320453, -1118604595, 1025235375, 1028595208) + W(1, 1002638229, -1116609216, -1112051735, -1109468006)\n\t\t+ W(2, -1107232926, 1046387359, -1105038970, 1005965131) + W(3, 1043966073, -1106879339, 1049289065, 1044354198)\n\t\t+ W(4, 1045499601, -1111658272, 1033608293, -1088213587)\n\t\t+ W(5, 1067079268, -1087106166, 1035867996, -1132447732)\n\t\t+ W(6, -1092579307, 1064370547, -1088486363, -1108961766)\n\t\t+ W(7, -1096457250, 1042442572, 1051236380, -1095838484)\n\t\t+ W(8, 1044420987, -1104528882, 1028839698, -1134350406)\n\t\t+ W(9, -1102939053, 1043763107, -1107783352, 1035658672)\n\t\t+ W(10, -1122532695, -1131375963, 1027336318, 1016664388)\n\t\t+ W(11, -1116658227, 1023955051, -1126291119, -1135660575);\n\tWS(1064849644, -1092967401);\n\tsum1 =\n\t\tW(0, 1041078624, 1033930742, 1053270962, -1091277968) + W(1, -1115974645, -1124489961, -1103081652, 1034184171)\n\t\t+ W(2, 1058076017, -1091900963, -1101902009, 1046377811)\n\t\t+ W(3, 1045204674, -1098756264, 1059044453, -1097334921)\n\t\t+ W(4, 1038364767, -1096742869, -1126422222, 1038407355) + W(5, 1061713418, -1078564449, 1031099397, 1034335299)\n\t\t+ W(6, -1107755791, -1103118957, 1064682577, -1099822850)\n\t\t+ W(7, 1025967234, 1015202107, 1049230600, -1103625882) + W(8, 1047988615, -1091654943, 1010917525, -1098744549)\n\t\t+ W(9, -1101861336, 1035198826, 1055582710, -1096942230)\n\t\t+ W(10, 1021900159, 1047801952, 1041473799, -1102710964)\n\t\t+ W(11, 1058355518, -1098047297, -1106099948, -1101582418);\n\tsum2 =\n\t\tW(0, 1034970587, 1039267337, -1109640195, -1085205368) + W(1, 1065312771, -1111782462, -1105865147, 1026053125)\n\t\t+ W(2, 1027743203, -1076908464, 1068235631, 1029167111) + W(3, 1024111791, 1040193826, 1042644379, -1072741915)\n\t\t+ W(4, 1074530244, 1035172075, 1018431373, 1037956157) + W(5, -1088412806, -1079896887, 1069229068, 1048206286)\n\t\t+ W(6, -1107243650, -1106797747, -1104275404, 1057561219)\n\t\t+ W(7, -1110308581, -1092973955, 1038385161, 1031902437) + W(8, 1031274183, 1052902509, 1045193510, -1105822229)\n\t\t+ W(9, -1114574492, -1114137980, -1115379021, -1103620900)\n\t\t+ W(10, -1167188013, -1102796809, -1129893537, -1128932411)\n\t\t+ W(11, 1040558376, 1054347378, -1099424233, -1106619819);\n\tWS(-1085552428, 1044647857);\n\tsum1 =\n\t\tW(0, -1130568573, -1120131932, -1097293585, 1052681344) + W(1, -1115182247, 1016796643, -1111247047, 1046596325)\n\t\t+ W(2, -1095715202, 1050957098, -1125685565, -1123522377)\n\t\t+ W(3, 1001536536, 1026932885, -1090361246, 1059711152) + W(4, -1097304503, 1028362085, -1104704953, 1049575094)\n\t\t+ W(5, -1085535724, 1060788917, -1122898434, -1112833505)\n\t\t+ W(6, 1029690778, 1042872064, -1105723034, 1048249845)\n\t\t+ W(7, -1115360055, 1008149481, -1104108900, -1127841478)\n\t\t+ W(8, -1113844876, -1106926654, 1050188162, -1111804152)\n\t\t+ W(9, 1012447989, -1114289465, -1127895515, 1034645781)\n\t\t+ W(10, -1110595670, 1032897312, -1107166286, -1110288351)\n\t\t+ W(11, 1028149942, 1043016176, 1041406167, -1119471349);\n\tsum2 =\n\t\tW(0, 1049638564, -1122573304, -1097365817, -1120650912) + W(1, 1039129637, -1114566411, 1012096208, -1169058693)\n\t\t+ W(2, -1118822370, 1032693677, 1036528332, -1119534724)\n\t\t+ W(3, 1055008508, -1092917400, -1124083512, -1127709292)\n\t\t+ W(4, -1113518885, 1015256750, 1058022553, -1080721407) + W(5, 1056959548, 1044260765, -1122124802, 1042163670)\n\t\t+ W(6, 1059601221, -1081684685, 1056508637, -1099806388)\n\t\t+ W(7, 1019567420, -1110975736, 1065544846, -1080284825) + W(8, 1051359763, 1042746095, -1101554026, 1032382474)\n\t\t+ W(9, 1035938200, -1096574070, 1044088441, 1033735876)\n\t\t+ W(10, 1041548497, -1110809702, 1043980555, -1098850345)\n\t\t+ W(11, 1031681402, -1121369890, -1108142320, 1022534793);\n\tWS(1049904727, -1085461498);\n\tsum1 =\n\t\tW(0, -1114441151, 1047758995, -1092338425, 1054893264) + W(1, -1095327506, 1042581180, 1032673159, -1122472531)\n\t\t+ W(2, -1101190388, 1042608805, -1108884127, -1119554504)\n\t\t+ W(3, 1027012354, 1048177385, -1096531431, 1050188989) + W(4, -1104987150, 1041262473, 1041600521, -1116753522)\n\t\t+ W(5, 1059669870, -1088410395, -1123782065, -1120686401)\n\t\t+ W(6, 1035856141, -1105032264, 1063099682, -1084283112)\n\t\t+ W(7, 1042263123, -1117364890, 1033107055, -1109908945)\n\t\t+ W(8, 1058897901, -1088007491, 1042892731, -1107384925)\n\t\t+ W(9, 1031163069, -1104848436, 1049115478, -1096369309)\n\t\t+ W(10, 1029697804, -1138499405, -1139856090, -1111353615)\n\t\t+ W(11, 1055941567, -1096366496, 1047202227, -1100444021);\n\tsum2 =\n\t\tW(0, -1101934313, 1068410613, 1053392914, 1045964051) + W(1, -1109754454, -1118726053, -1127864237, 1066297935)\n\t\t+ W(2, 1047339448, -1107136628, 1023924243, 1029832629) + W(3, -1112463889, 1052441146, -1111508378, 1035674775)\n\t\t+ W(4, -1121555471, -1111696115, 1047304216, -1077079694)\n\t\t+ W(5, 1044634164, 1046050296, -1111827987, 1036477638)\n\t\t+ W(6, -1097499627, -1082290320, -1086326188, -1113442140)\n\t\t+ W(7, 1006763480, -1119582249, 1041678537, -1095668928) + W(8, 1053023843, -1135364198, 1034831467, 1024856185)\n\t\t+ W(9, -1128505773, -1097722710, 1050833435, 1028981469)\n\t\t+ W(10, -1128234727, -1112331027, 1039199998, -1096167330)\n\t\t+ W(11, -1112581958, 1028034745, 1032814306, 1017921306);\n\tWS(-1087326956, 1033622098);\n\tsum1 = W(0, -1113899675, 1045896801, 1041409216, -1108955706)\n\t\t + W(1, -1104543128, 1041055226, 1035193378, -1161971013)\n\t\t + W(2, -1108871427, 1048600721, -1114333163, -1106692192)\n\t\t + W(3, 1030557818, 1045303135, -1104804773, -1094955846)\n\t\t + W(4, 1045266364, 1039063182, -1119324954, -1095480777)\n\t\t + W(5, 1041468886, 1051943793, -1096626659, -1112593372)\n\t\t + W(6, 1042470612, -1110770003, -1098059200, 1025944442)\n\t\t + W(7, 1048775867, -1107180444, -1117399605, -1109576477)\n\t\t + W(8, 1052050234, -1097508910, 1043056710, 1041486173) + W(9, 1021883592, -1100233714, 1041862393, 1030612641)\n\t\t + W(10, -1122051827, -1114362202, 1035419591, -1122013269)\n\t\t + W(11, 1017834329, -1106071902, 1042839849, -1121041260);\n\tsum2 =\n\t\tW(0, 1008283263, -1111634453, -1112224655, -1121896666) + W(1, 1031996897, -1106176579, -1114415273, 1032259795)\n\t\t+ W(2, 1046234660, 1020399084, -1105304684, 1027107696)\n\t\t+ W(3, -1114655921, -1123951654, 1039099048, -1139717487)\n\t\t+ W(4, 1017260660, -1106922258, 1036167174, -1116061542) + W(5, 1049934438, 1050902690, -1102142181, 1022104088)\n\t\t+ W(6, -1111159985, 1039368345, 1003410015, 1039007446) + W(7, 1003551903, -1122048418, 1033204129, -1102899145)\n\t\t+ W(8, -1113540553, 1039510238, -1114854307, -1135188919)\n\t\t+ W(9, -1122340118, 1024476440, -1117681522, 1032062517)\n\t\t+ W(10, 992233789, -1128403972, -1127458940, -1118949310)\n\t\t+ W(11, -1122317014, 1033150391, -1113963477, -1125862176);\n\tWS(1068173014, -1111006676);\n\tsum1 =\n\t\tW(0, 1031049568, -1103201566, 1048004603, -1100468360) + W(1, 1046039773, 1012485196, -1115395480, -1112513259)\n\t\t+ W(2, -1117860850, -1173290307, -1123264224, -1127850837)\n\t\t+ W(3, 1019703498, -1112438249, -1104427535, 1042677725) + W(4, 1030284012, 1029876039, -1113567107, 1042819653)\n\t\t+ W(5, -1083606526, 1064316383, -1122621123, 1036820754) + W(6, 1015808760, 1048780036, -1083053360, 1063571221)\n\t\t+ W(7, -1094902185, 1035184606, -1109811912, 1039150546)\n\t\t+ W(8, -1090564527, 1060600586, -1103353426, 1024997805) + W(9, 1027899359, 1034094633, -1092330682, 1050639762)\n\t\t+ W(10, -1106486660, -1149057999, -1103105894, 1040353932)\n\t\t+ W(11, -1095220995, 1054475004, 1034806311, -1123061719);\n\tsum2 =\n\t\tW(0, 1014853092, -1122580470, -1120994367, 1047459793) + W(1, 1064875701, -1132455031, -1120466254, -1114547761)\n\t\t+ W(2, 1038991680, 1047680543, 1054395623, 1011283964) + W(3, 1027909890, 1030745116, 1034511499, -1098401240)\n\t\t+ W(4, 1045153300, -1108441710, -1117512854, -1119656010)\n\t\t+ W(5, 1041066172, -1121088174, -1085223893, 1018552602) + W(6, 1026011110, 1035574738, -1109149586, 1045982327)\n\t\t+ W(7, -1084582209, -1106692167, -1110873488, -1120221385)\n\t\t+ W(8, 1024235728, 1024310650, -1099510820, 1026658994) + W(9, 1036041188, 1020780404, -1112980367, -1122000913)\n\t\t+ W(10, 1029465320, 1023023932, -1115497806, -1122615179)\n\t\t+ W(11, 1020521688, 1042402937, -1105747852, 1004613671);\n\tWS(-1095915991, 979918868);\n\tsum1 =\n\t\tW(0, -1115463727, 1032823819, 1026707497, -1119898332) + W(1, 1026568544, -1121143952, -1137886897, 1037523161)\n\t\t+ W(2, -1131549790, 1035412665, -1108324895, -1129452238)\n\t\t+ W(3, 1011021190, 1029800132, -1108429845, -1136100063)\n\t\t+ W(4, -1138504034, -1120493188, 1011860489, 1043477300)\n\t\t+ W(5, -1100874368, -1112838682, 1047390560, -1147670274)\n\t\t+ W(6, -1129491953, -1105888052, 1047336484, -1098267600)\n\t\t+ W(7, 1036689246, 1028096953, 1007409140, -1114264129) + W(8, 1049886943, -1097768883, 1037432366, -1134502280)\n\t\t+ W(9, -1124741815, 1021218335, 1042964547, -1106237874)\n\t\t+ W(10, 996441389, -1157333673, -1122228982, 1030459197)\n\t\t+ W(11, 1038061098, -1108915952, -1121991146, -1177453050);\n\tsum2 = W(0, -1121902268, 1020062213, 1034601005, -1096503308)\n\t\t + W(1, 1050858947, -1108630019, -1128394666, -1143339877)\n\t\t + W(2, -1111450467, 1052764693, -1099720262, -1130142915)\n\t\t + W(3, 1039974898, -1102502778, 1034366199, -1095299550)\n\t\t + W(4, 1055940597, -1105816149, -1114856664, 1034423857)\n\t\t + W(5, -1093114037, 1060522961, -1087523263, 1037139152) + W(6, 1032116923, 1030950002, 1027196884, 1057088106)\n\t\t + W(7, -1085850393, 1054601799, -1115163450, 1038088024)\n\t\t + W(8, 1036157347, -1104371255, -1107617878, 1043807995)\n\t\t + W(9, -1112859101, 1036537682, -1130356560, 1031719642)\n\t\t + W(10, -1119144319, -1122652165, -1128925353, 1019282123)\n\t\t + W(11, 1032717961, -1110891365, 1017512699, 1025497552);\n\tWS(1066530838, 1025703389);\n\tsum1 =\n\t\tW(0, -1120765920, -1132051981, -1129191897, 1042371592) + W(1, 1007708012, -1116932051, 1009297086, -1139418709)\n\t\t+ W(2, 1032587897, -1118415861, -1122811552, -1134432681)\n\t\t+ W(3, -1122351141, -1109474502, 1057153612, -1120712699)\n\t\t+ W(4, -1105657359, -1127344014, 1015487755, -1098776251)\n\t\t+ W(5, 1049522345, -1099055070, -1099127683, 1026629028) + W(6, 1015844344, -1109199593, 1041525985, 1049700744)\n\t\t+ W(7, -1111888320, -1119906716, -1127613121, -1123764613)\n\t\t+ W(8, -1109817213, 1050593755, -1113004743, -1136900213)\n\t\t+ W(9, -1133586812, -1121408403, 1010121533, 1036084166)\n\t\t+ W(10, 984437698, -1118848634, -1124468594, -1145136640)\n\t\t+ W(11, -1107128582, 1038803505, 1036904923, -1123829719);\n\tsum2 = W(0, -1117430114, 1041261247, 1033806419, -1126022952)\n\t\t + W(1, -1155381873, -1125967712, 1039120940, -1107749198)\n\t\t + W(2, -1097831330, 1041137317, -1127685702, -1116954634)\n\t\t + W(3, -1106133189, -1099018179, 1064523288, 1057416214)\n\t\t + W(4, -1099691831, 1032736142, 1026507473, -1131506304)\n\t\t + W(5, 1045711847, -1092069746, 1026250214, -1120045450)\n\t\t + W(6, 1031550625, -1123617030, -1088977338, 1059767697)\n\t\t + W(7, -1098651966, 1021746164, -1142215401, -1123190888)\n\t\t + W(8, 1052831473, -1088761837, -1118397760, 1028302350)\n\t\t + W(9, 1026312489, -1112954810, -1133526188, 1033531722)\n\t\t + W(10, -1130823120, 990513889, -1139250704, -1137414048)\n\t\t + W(11, -1122137188, -1110686692, 1029280576, -1115066264);\n\tWS(1066680246, 1040921440);\n\tsum1 = W(0, -1119730500, -1110280861, -1092083138, 1053565584)\n\t\t + W(1, -1110918026, 1029997623, 1034101258, 1011417444)\n\t\t + W(2, 1031601302, 1054599907, -1143895330, -1113777127)\n\t\t + W(3, -1132236433, 1027753539, -1090607216, 1058261942)\n\t\t + W(4, -1111808624, 1039976245, -1104735450, 1038200908)\n\t\t + W(5, -1078665075, 1061430978, -1099071584, -1112447940)\n\t\t + W(6, 1035235184, 1035268043, -1096046953, 1061610294)\n\t\t + W(7, -1106320677, 1023744576, -1111591250, -1121734057)\n\t\t + W(8, -1093429316, 1056142824, -1105323662, -1145165385)\n\t\t + W(9, 1024518355, 1032771355, -1094352558, 1053165350)\n\t\t + W(10, -1138833863, -1113453535, -1121802685, -1126371080)\n\t\t + W(11, -1102572591, 1055282545, 1035738553, 1031263347);\n\tsum2 = W(0, 1033717276, 1028210443, 1046091050, -1119519632)\n\t\t + W(1, 1050909876, -1117678961, -1129082210, -1130739278)\n\t\t + W(2, -1085374293, 1026401017, -1110182528, 1042909501)\n\t\t + W(3, -1111396517, -1117565460, 1033058760, -1106338078)\n\t\t + W(4, -1149282827, -1099518378, 1053521042, -1113906791)\n\t\t + W(5, 1062822204, 1066908993, -1081393742, 1044082334)\n\t\t + W(6, -1096499765, -1106119849, -1089123399, 1034907371)\n\t\t + W(7, -1094008056, -1097984366, 1041638909, 1044690885) + W(8, 1003636411, 1054286387, 1035142168, 1040282994)\n\t\t + W(9, -1115028859, 1000486481, 1048601259, -1096894542)\n\t\t + W(10, 1020535023, -1109925208, -1143837439, 1015998178)\n\t\t + W(11, -1103883056, 1041460877, 1028271260, 1021313035);\n\tWS(-1111691100, -1070453585);\n\tsum1 =\n\t\tW(0, 1040350706, 1032181048, 1054597571, -1090063653) + W(1, -1105977411, -1114266718, -1107702492, 1006352113)\n\t\t+ W(2, 1056547603, -1111618639, 1011306277, 1034245578) + W(3, 1045915011, -1101176752, 1059824936, -1087007388)\n\t\t+ W(4, 1037450066, -1130610528, -1103582444, -1098104500)\n\t\t+ W(5, 1062411659, -1079908657, -1113612402, -1111998342)\n\t\t+ W(6, 1036820082, -1111995209, 1062112057, -1098160558) + W(7, 1043358554, 1021846218, 1030081641, -1105752467)\n\t\t+ W(8, 1042786985, -1094958736, -1108376090, 1026051990)\n\t\t+ W(9, -1112926972, -1111976126, 1050598527, -1104521261)\n\t\t+ W(10, 1024420791, 1032139296, 1034445457, 1025879721)\n\t\t+ W(11, 1058122296, -1107753094, -1098378691, 1018599200);\n\tsum2 = W(0, -1102183736, 1044690091, 1025447267, -1103679886)\n\t\t + W(1, 1034791609, -1120655593, 1045283790, -1117083441)\n\t\t + W(2, 1036724432, -1096666126, 1043810354, -1109094473)\n\t\t + W(3, -1099060082, -1109435037, -1100626978, 935783211)\n\t\t + W(4, -1097803022, 1029730663, 1029589699, 1005932683) + W(5, 1066859805, 1061824774, 1034749891, 1023292171)\n\t\t + W(6, -1103326288, -1109954065, -1114206859, -1098480165)\n\t\t + W(7, -1094988176, -1109570093, -1146696619, -1130369043)\n\t\t + W(8, 1024539831, -1113161303, 1050252440, 1012313206)\n\t\t + W(9, -1123727405, -1115538567, -1123732285, -1109149493)\n\t\t + W(10, 1029732207, -1106431920, -1106785078, 1039027144)\n\t\t + W(11, 1040901138, -1129688427, -1105144948, 1015686163);\n\tWS(-1105638574, -1077878805);\n\tsum1 = W(0, -1112101313, 1043313362, -1104398291, 1034529536)\n\t\t + W(1, -1120033234, 1017824488, 1025565072, 1041884710)\n\t\t + W(2, -1093904634, 1043314021, -1106696920, 1028280843)\n\t\t + W(3, -1118212870, 1045058176, -1086702118, 1058479092)\n\t\t + W(4, -1128822905, 1038132788, 1034991091, -1099609869)\n\t\t + W(5, 1055637093, 1049084915, -1126325576, -1136921361)\n\t\t + W(6, 1037618766, -1100255017, 1061981800, -1082434966)\n\t\t + W(7, 1050170340, -1125947450, 1033034081, -1097107341)\n\t\t + W(8, 1053455331, -1087005060, 1046293466, -1124008918)\n\t\t + W(9, 1023523536, -1104696333, 1048950646, -1098585534)\n\t\t + W(10, 1042248226, -1126565485, -1143864013, -1128917761)\n\t\t + W(11, 1037339676, -1105402705, 1032623999, -1114937252);\n\tsum2 =\n\t\tW(0, 1040832216, -1125419559, -1166596642, -1076839498) + W(1, -1085872442, 1038631745, 1042032808, -1103788280)\n\t\t+ W(2, 1045241846, -1091833274, -1105795498, 1037000995) + W(3, 1039550307, 1043848052, 1051795538, 1035730071)\n\t\t+ W(4, -1094587067, -1115278352, 1029252447, -1099123277)\n\t\t+ W(5, 1068949095, 1070654393, 1007431650, -1103746979) + W(6, 1040592387, 1047689572, -1094163017, -1096947569)\n\t\t+ W(7, -1089767553, 1041143367, -1111709033, -1102650535)\n\t\t+ W(8, -1111700665, 1050259859, 1041510738, 1025070825) + W(9, 1050208698, -1105352144, -1117027793, 1051072204)\n\t\t+ W(10, -1100476212, -1116523862, -1091595987, 1033340873)\n\t\t+ W(11, 1027304955, 1048679723, 1057584085, -1093749689);\n\tWS(-1095944791, 1081861902);\n\tsum1 =\n\t\tW(0, -1129669743, 1034635115, 1057433596, -1090131839) + W(1, -1120322428, 1008560041, -1116664839, -1122706061)\n\t\t+ W(2, 1048908041, -1093164666, 1030509816, 1023557506) + W(3, -1148272609, 1033259121, 1058166921, -1087001587)\n\t\t+ W(4, 1035303897, 1013701241, -1121494877, -1124251544)\n\t\t+ W(5, 1058746094, -1083481847, 1044900399, -1117995899)\n\t\t+ W(6, -1115602986, -1126517523, 1055593874, -1085306808)\n\t\t+ W(7, 1041073282, -1116643091, 1028329496, -1128061368) + W(8, 1057488289, -1091485686, 1023593721, 1023656437)\n\t\t+ W(9, -1123378150, -1130313237, 1049860117, -1102755929)\n\t\t+ W(10, 1034451003, -1164007844, 1027525168, -1119991479)\n\t\t+ W(11, 1061071735, -1105495231, -1102595129, 1024551167);\n\tsum2 = W(0, 1029670841, 999172620, 1042251423, -1105031588) + W(1, 1027957701, 1026093121, -1115575058, -1099435099)\n\t\t + W(2, 1041110640, -1120449287, 1035596553, -1156632055)\n\t\t + W(3, 1042858197, -1139359478, 1058527193, 1010020318)\n\t\t + W(4, 1019832195, -1126960339, -1101600217, 1027943101)\n\t\t + W(5, 1075961547, -1109667225, 1011086126, 1010028142) + W(6, -1117748556, 1048715384, 1073424302, 1057314889)\n\t\t + W(7, 1033526397, 1037810339, 1035438169, -1098854617) + W(8, -1086643829, 1037113027, 975610078, -1115077778)\n\t\t + W(9, -1114535210, 1036336651, -1080060710, -1123725073)\n\t\t + W(10, 1012557694, -1133987070, 1032334939, 1041563473)\n\t\t + W(11, -1067239867, -1100548924, -1095465488, 1036754195);\n\tWS(-1085172076, 1069147958);\n\tsum1 = W(0, 1025703205, 1027233863, 1026640114, 1029190628)\n\t\t + W(1, -1111659152, -1139375968, -1141293989, -1106615031)\n\t\t + W(2, 1042354526, -1106775167, -1115892869, 1028377583)\n\t\t + W(3, 1041286826, -1115436126, 1053740861, -1106293072)\n\t\t + W(4, 1035182992, -1156734143, -1119005195, -1112858253)\n\t\t + W(5, 1054852793, -1089581852, 1027435128, -1121669673)\n\t\t + W(6, 1026450561, 1042609938, -1119314307, -1098775605)\n\t\t + W(7, -1137028117, 1034668065, -1117134469, -1122683754)\n\t\t + W(8, 1026745790, -1108063055, 1038436612, -1119291218)\n\t\t + W(9, -1120895076, 1044686038, -1108709290, 1015550627)\n\t\t + W(10, -1112739478, 1027259179, 1025414366, -1117169125)\n\t\t + W(11, 1023400633, -1125318352, 1031194923, -1118201212);\n\tsum2 = W(0, -1154464437, 1027039233, 1008089899, -1117609897)\n\t\t + W(1, -1118717800, 1027401421, 1004660066, -1115032564)\n\t\t + W(2, 1041471507, 1033488023, 1033628240, -1112728150) + W(3, 1011666487, -1147080182, 1053281755, 1082321679)\n\t\t + W(4, 1046901100, 1012824907, 1016373458, 975139636) + W(5, -1081313755, -1065846603, 1050032460, -1108305112)\n\t\t + W(6, -1117096132, 1025013868, -1118862913, -1122974098)\n\t\t + W(7, -1106934499, 1038621352, 1027534293, -1117310194)\n\t\t + W(8, 1040077608, -1130639872, -1137731251, -1137500513)\n\t\t + W(9, -1118720211, 1025607183, -1134922624, -1143672974)\n\t\t + W(10, -1177023016, -1129758225, 1024315262, -1145025250)\n\t\t + W(11, 993302909, -1114202318, 1017914834, 1025570630);\n\tWS(1065820150, -1112682631);\n\tsum1 =\n\t\tW(0, -1105640672, -1140735040, -1096706537, 1051064512)\n\t\t+ W(1, -1114855500, -1128129890, -1136938293, 1045425461)\n\t\t+ W(2, -1095619178, 1046810501, 1041816072, -1108472292) + W(3, 1007936778, 1012508339, -1101065539, 1057299292)\n\t\t+ W(4, 1015987827, 1036938130, -1099447769, 1052020966) + W(5, -1083835034, 1054321083, 1049485320, -1101761488)\n\t\t+ W(6, 1033964109, -1110876672, -1127256032, 1044289505)\n\t\t+ W(7, -1106506396, 1035708141, -1110772895, 1038536521)\n\t\t+ W(8, -1101414038, 1042038046, 1031650401, -1113134674)\n\t\t+ W(9, -1107676126, 1034428376, -1102412811, 1050440565) + W(10, -1098866309, 1031811610, 948858222, 1041035251)\n\t\t+ W(11, -1104437005, -1126355329, 1044647659, -1119496853);\n\tsum2 =\n\t\tW(0, -1116689599, -1104060794, 1023887631, 1047625619) + W(1, -1104647113, 1032108768, 1033662400, 1047714485)\n\t\t+ W(2, -1101000300, -1113896185, 1049921725, -1114038586)\n\t\t+ W(3, -1110264521, -1106889746, -1123902349, 1058674488)\n\t\t+ W(4, -1100964722, -1134500667, -1113832562, 1055059659)\n\t\t+ W(5, 1047334183, -1105663288, 1060005487, -1105023935)\n\t\t+ W(6, 1034493072, -1089308922, 1060541265, -1079751447) + W(7, -1088726381, 1046968990, 1024644211, 1027816870)\n\t\t+ W(8, -1145174230, 1040502911, 1026206299, -1116742649)\n\t\t+ W(9, -1105470304, 1032487381, -1099777158, 1059286709)\n\t\t+ W(10, -1093081927, 1042150309, 1030330543, 1043118546)\n\t\t+ W(11, -1100795602, -1110882655, 1033716355, -1127164330);\n\tWS(1051219671, 1032040132);\n\tsum1 =\n\t\tW(0, 1024246061, -1110293770, -1098745559, 1035978230) + W(1, 1050231066, -1111943280, 1029213629, -1111062337)\n\t\t+ W(2, -1104763504, 1041701281, -1106571859, 1016965359)\n\t\t+ W(3, -1142580623, 1026027124, -1097349705, 1051781481) + W(4, 1040668770, 1026054164, 1007533386, 1035026513)\n\t\t+ W(5, -1082429923, 1065410260, -1111350032, 1035026168)\n\t\t+ W(6, -1132388626, 1036422600, -1083869189, 1060856625) + W(7, -1113287631, 987392292, 1016678619, 1011246152)\n\t\t+ W(8, -1095610025, 1057796630, -1122887388, 1019565189) + W(9, 998523489, -1173422083, -1095350964, 1045145830)\n\t\t+ W(10, -1109374678, -1110518465, 1023830470, -1130424090)\n\t\t+ W(11, -1094623957, 1055180598, 1007169387, 1026555204);\n\tsum2 =\n\t\tW(0, -1123481859, -1131096266, -1107023625, 1040776673) + W(1, -1073406322, 1074128739, 1024186334, -1121050215)\n\t\t+ W(2, 1040345453, -1129271163, -1080765061, 1066657253)\n\t\t+ W(3, -1181265672, 1023491721, -1110082893, 1044851152)\n\t\t+ W(4, -1077100552, 1068015119, -1136581772, -1115413373)\n\t\t+ W(5, -1116173932, -1097567007, -1085034176, 1066670217) + W(6, 1007273042, 1036272276, 1041634800, 1051516690)\n\t\t+ W(7, -1104398720, -1111857710, -1130526339, -1110187157)\n\t\t+ W(8, 1028205855, -1106625929, 1019889879, 1026394385) + W(9, -1134191606, -1123342647, 1036476425, 1035231370)\n\t\t+ W(10, -1115096299, 990445793, 1035801320, -1125507188)\n\t\t+ W(11, -1124495703, 1007786534, -1105128420, 1030299973);\n\tWS(-1124324720, 1038677119);\n\tsum1 = W(0, 1008341069, 1038389179, 1056361124, -1081451931) + W(1, 1047683325, -1130646284, 1031967089, 993181316)\n\t\t + W(2, 1050863173, -1096246661, 1035916906, -1134539381)\n\t\t + W(3, 1023486232, -1145165264, 1054230472, -1086637900) + W(4, 1027831167, 986748732, 1037528348, 991007864)\n\t\t + W(5, 1063082151, -1088130503, 1026128198, 1003368116)\n\t\t + W(6, -1122921519, 1024190949, 1050043692, -1092787999)\n\t\t + W(7, 1020947750, -1115252008, 1029849459, 1044031254) + W(8, 1049660054, -1099337955, 1025351359, 1036720064)\n\t\t + W(9, -1114006089, -1123515526, 1043779649, -1095996120)\n\t\t + W(10, 1037985981, -1116396881, 1035528454, 1052524910)\n\t\t + W(11, -1097977265, -1102904005, -1114005272, 1029521402);\n\tsum2 = W(0, 1042203848, -1089098687, 1035967917, 1068788369)\n\t\t + W(1, -1095505730, 1025788011, -1133163156, -1098025067)\n\t\t + W(2, 1052777785, -1096461215, -1097973178, -1111191248)\n\t\t + W(3, -1108707706, 1036383110, 1043356562, -1090569807)\n\t\t + W(4, -1127034898, 1023876171, 1027923803, 1058285406) + W(5, 1046924897, -1088764217, 1056967609, 1046203397)\n\t\t + W(6, -1098359820, 1062333205, -1080913711, -1095261121)\n\t\t + W(7, 1040836988, -1107189985, 1043843260, 1048839159)\n\t\t + W(8, -1088408400, -1098396864, 1046078649, -1113219498)\n\t\t + W(9, 1021888231, 1058743586, -1097507024, -1093746709)\n\t\t + W(10, -1111389506, -1110869404, 1023965418, -1078465930)\n\t\t + W(11, 1067915456, 1064748817, -1099047850, 1040158004);\n\tWS(-1080347734, -1094728165);\n\tsum1 =\n\t\tW(0, -1115633753, 1036436624, -1113632799, 1018734050) + W(1, -1104273977, 1022550473, -1128052610, 1031912915)\n\t\t+ W(2, -1104119121, -1104173746, -1115038313, -1128796792)\n\t\t+ W(3, 996364134, 1038598142, -1095896866, 1042956529) + W(4, -1098511458, 1027191321, 1027254679, -1114408211)\n\t\t+ W(5, 1064358521, 1051156401, 1006576423, -1123707765) + W(6, 1027401421, -1097652239, 1061684826, -1087880029)\n\t\t+ W(7, 1037804713, -1125317723, -1125749028, -1109729611)\n\t\t+ W(8, 1051089073, -1093838037, 1039011098, -1116369959)\n\t\t+ W(9, -1143663749, -1111208674, 1044518984, -1100689848)\n\t\t+ W(10, -1157246715, -1130384675, 1017291157, -1118442418)\n\t\t+ W(11, 1048577269, -1104163629, -1145301883, -1113863292);\n\tsum2 = W(0, -1137561210, 1000810292, -1109671087, -1098257975)\n\t\t + W(1, -1113334223, 1010643898, 1008161562, 1017087401)\n\t\t + W(2, -1143663956, -1088410023, 1033424863, -1122425914)\n\t\t + W(3, -1138249722, -1104015266, -1100429296, -1110483119)\n\t\t + W(4, -1113376685, -1120544050, 1032804591, 1045940061) + W(5, 1064636422, 1065774501, 1041401738, 1015219657)\n\t\t + W(6, -1118405314, -1112933693, 1041071232, -1111449957)\n\t\t + W(7, -1107119710, 1028103016, -1149548391, 1040845572)\n\t\t + W(8, -1095622064, -1114533177, 1041680128, -1125778629)\n\t\t + W(9, -1140666666, -1131915309, -1113635957, -1105461804)\n\t\t + W(10, -1114424843, -1127495397, -1121723310, -1125770861)\n\t\t + W(11, -1156294183, -1154727079, -1143304660, -1128411685);\n\tWS(1062796012, -1081433938);\n\tsum1 =\n\t\tW(0, -1140258862, 1047697940, 1041493798, -1090901033) + W(1, 1032453887, 1008978681, 1019305782, -1137205890)\n\t\t+ W(2, 1051824452, -1095124244, 1034552166, 1031420374) + W(3, 1017521696, 1040574503, 1048941321, -1090555023)\n\t\t+ W(4, 1032035723, -1124609380, -1128637410, -1131514496)\n\t\t+ W(5, 1061551411, -1084025976, 1036871279, 1025475023) + W(6, 1030042599, -1115750349, 1058760695, -1089279069)\n\t\t+ W(7, 1041251643, 1016399695, -1140240046, -1114177400) + W(8, 1056942277, -1089170928, 1032547975, 1024887097)\n\t\t+ W(9, 1023786378, -1119424318, 1045023263, -1099538126)\n\t\t+ W(10, -1117686145, 1002611913, 1027083972, 1025144619)\n\t\t+ W(11, 1056967544, -1087239225, 1027338481, 1012109898);\n\tsum2 = W(0, 1004838046, 1036867068, 1023348885, -1120560082) + W(1, 1032448279, 1025411331, 1009005547, -1112484311)\n\t\t + W(2, -1113333873, 1019969949, -1115333043, -1123665230)\n\t\t + W(3, 1023830295, 1034701810, -1115269491, -1089366478)\n\t\t + W(4, 1028612787, 1024216939, -1121204348, -1131856601)\n\t\t + W(5, -1084820204, -1067115412, -1132671203, 1034346460)\n\t\t + W(6, 1026709605, 1008859907, -1095888786, -1071017431)\n\t\t + W(7, -1112864526, -1116027280, -1145957446, -1129570235)\n\t\t + W(8, 1052224270, 1066362408, 1045423025, -1133553563) + W(9, 1024434367, -1120209470, 1043852487, 1084005284)\n\t\t + W(10, 1025066805, 1032270816, -1122812157, 1023686531)\n\t\t + W(11, 1047863595, 1063525936, 1043035962, -1105823812);\n\tWS(-1103681710, -1114530079);\n\tsum1 =\n\t\tW(0, 1025861737, -1130912909, -1110124091, 1040844938) + W(1, -1105267215, 1021540535, 1029506744, -1104283663)\n\t\t+ W(2, -1117715067, 1046218351, -1121870249, 1032871129)\n\t\t+ W(3, 1032236919, -1132593150, 1039686571, -1098764800)\n\t\t+ W(4, 1038793978, -1120294159, 1035998951, -1102933559)\n\t\t+ W(5, -1097542514, 1059317136, -1096018272, 1036773558)\n\t\t+ W(6, -1111043394, 1040041573, -1088677703, 1057765873) + W(7, -1105386706, -1111111618, 1007410083, 992747222)\n\t\t+ W(8, -1112367617, 1054923388, -1101946581, 1031187710)\n\t\t+ W(9, -1126534927, 1034020670, -1105036246, 1029185429)\n\t\t+ W(10, -1122605111, -1138057273, -1123346113, -1119406504)\n\t\t+ W(11, 1035634224, 1040434219, -1143951794, 1023823648);\n\tsum2 =\n\t\tW(0, -1133865733, 1041378526, -1102114760, 1040042063) + W(1, 1036263014, -1111718847, -1114357788, 1025611699)\n\t\t+ W(2, 1041852494, -1102827642, 1023561916, -1109687464)\n\t\t+ W(3, -1113774565, 1057780422, -1090351620, 1041105879)\n\t\t+ W(4, -1107817782, 1041802453, -1094909862, -1134317911)\n\t\t+ W(5, 1058263821, -1094128428, 1049906607, -1106696300)\n\t\t+ W(6, 1041934157, -1084534604, 1059786982, -1121888905)\n\t\t+ W(7, -1106476521, 1023851848, 1048238594, -1105040821) + W(8, -1114163954, 1038597269, 1034361268, 1032032810)\n\t\t+ W(9, 1041091101, -1096429323, 1034035361, -1139774900)\n\t\t+ W(10, 1016844568, -1111010993, 1042608690, -1128928913)\n\t\t+ W(11, -1102786592, 1035391793, 1014428216, 1031652841);\n\tWS(1059372396, -1131086843);\n\tsum1 = W(0, -1116770958, 1038224730, -1145642197, 1033085351)\n\t\t + W(1, -1114157744, -1129272066, -1133338231, -1110641250)\n\t\t + W(2, 1044958408, -1100693257, 1030339791, 1026076824) + W(3, -1109423369, 1048611339, 1054215533, 1024247225)\n\t\t + W(4, -1106016522, -1113286331, -1142676381, 1026922691)\n\t\t + W(5, 1059821143, -1085100606, 1039898225, -1126911267)\n\t\t + W(6, -1119417706, 1012241985, 1063416476, -1082741615)\n\t\t + W(7, 1046979692, -1119319754, 1016864285, 1033593306)\n\t\t + W(8, -1109435540, -1105005730, -1157274234, -1131274519)\n\t\t + W(9, -1134266292, -1108924145, 1051611888, -1096553463)\n\t\t + W(10, 1033932042, 1018258200, 1026073927, 1029871326)\n\t\t + W(11, 1046037553, -1091104802, 1022970360, -1118999381);\n\tsum2 = W(0, -1117639690, 1032542252, 1049036492, -1106428174)\n\t\t + W(1, -1100598545, -1124515281, -1126294727, -1105983103)\n\t\t + W(2, 1053585046, -1090074420, -1101677356, 1042350020)\n\t\t + W(3, -1135696947, -1105990346, 1063294224, 1074893281)\n\t\t + W(4, -1088449090, -1128187082, 996342293, -1101410582)\n\t\t + W(5, -1084067012, -1121077701, 1052666358, -1118105649)\n\t\t + W(6, 1025603183, 1031145839, 1030876063, -1079475296) + W(7, 1049420880, 1033189178, -1120264553, 1029472991)\n\t\t + W(8, -1090564487, 1059480413, -1099961793, 1012743453)\n\t\t + W(9, 1034416033, -1125334020, 1047874805, -1099339963)\n\t\t + W(10, 1047783255, 1016211057, 1029227505, 1016716795)\n\t\t + W(11, -1103677712, -1097572114, -1106211131, 1026065323);\n\tWS(998487488, 1024735998);\n\tsum1 =\n\t\tW(0, 1034787125, -1096711418, -1093645783, 1058035879) + W(1, -1113381667, 1020339515, 1033987197, 1049342972)\n\t\t+ W(2, -1089249828, 1055719968, 1033680357, 1037116250)\n\t\t+ W(3, -1118966639, -1099717199, -1085775960, 1060189357)\n\t\t+ W(4, -1108537011, -1109989161, -1138173503, 1051641300)\n\t\t+ W(5, -1083720757, 1061848612, -1102783527, 1046511483) + W(6, 1022076300, 1049184050, -1086133195, 1062875388)\n\t\t+ W(7, -1129404117, 1032957443, -1112157509, 1032130968)\n\t\t+ W(8, -1087092580, 1007190411, -1110331987, 1011591327) + W(9, 1034213589, 1048086279, -1098046771, 1051240059)\n\t\t+ W(10, 1030325168, 1039628088, -1125240838, 1039987293)\n\t\t+ W(11, -1087792286, 1039984791, 1051616838, -1135236550);\n\tsum2 = W(0, 1001577162, 1048277958, -1094388043, -1079852425) + W(1, 1055450674, 1040994203, 1041063142, 1048804575)\n\t\t + W(2, 1061039504, -1095199392, 1054780006, 1035580564)\n\t\t + W(3, -1112011211, 1037383696, 1055288082, -1077655189)\n\t\t + W(4, 1058201467, -1111912036, 1039747614, 1042988518)\n\t\t + W(5, -1084834029, -1103423898, 1071463850, -1100510960)\n\t\t + W(6, -1137882877, -1097597287, -1087507005, 1064308251)\n\t\t + W(7, 1058560116, -1097442490, -1105672858, -1099442373)\n\t\t + W(8, 1044806256, 1065240337, -1080251704, -1090250140)\n\t\t + W(9, 1031849538, -1108394523, -1093629181, 1071708239)\n\t\t + W(10, -1090257183, 1028605291, -1108158369, -1155656404)\n\t\t + W(11, 1059993792, 1061107030, -1073879137, -1106111844);\n\tWS(-1077135094, 1050907162);\n\tsum1 =\n\t\tW(0, -1132921461, -1117094275, -1098008869, 1043699095)\n\t\t+ W(1, -1112620946, -1122422352, -1127648729, 1033699545)\n\t\t+ W(2, -1094355462, 1055483630, 1042990903, 1034045812) + W(3, -1124984131, 1030394994, -1089194394, 1053279460)\n\t\t+ W(4, 1047326318, 1011377167, -1118007170, 1045491604) + W(5, -1081313730, 1065160347, -1121246728, 1042128328)\n\t\t+ W(6, -1117294457, 1039295895, -1088142214, 1056280352)\n\t\t+ W(7, -1110840279, -1103632934, -1126452986, 1040542752)\n\t\t+ W(8, -1094044967, 1058021117, -1106681402, 1039870541)\n\t\t+ W(9, -1124706520, 1018438944, -1098093746, 1041063570)\n\t\t+ W(10, -1128181366, -1109127577, -1119126518, 1035722382)\n\t\t+ W(11, -1094059515, 1050783700, 1018820533, 1037083890);\n\tsum2 = W(0, 1003021837, -1110495495, 1016902499, -1116948709)\n\t\t + W(1, 1029108513, -1113320609, 1029225785, 1032075003) + W(2, 993748010, 1041772340, -1097222635, 1042534143)\n\t\t + W(3, -1123823650, -1122423961, 1028513681, 1083263801)\n\t\t + W(4, -1063916786, 1039031010, 1023947681, 1043723635)\n\t\t + W(5, -1096435650, 1074788880, -1074844879, -1104645285)\n\t\t + W(6, -1119691195, -1138212418, -1120166015, 1038793960)\n\t\t + W(7, -1115182489, -1124877446, 1024608678, 1017994477)\n\t\t + W(8, -1119557273, 1017310535, 1021770517, -1131419477)\n\t\t + W(9, -1125446899, -1115371525, 1032720188, 1032034162)\n\t\t + W(10, 1014563122, -1119401015, 1034042378, 1002413729)\n\t\t + W(11, -1115060009, -1118011761, 1027576529, 999290841);\n\tWS(1048452526, 1015184705);\n\tsum1 = W(0, -1138645804, -1110581160, -1106270342, 1048623137)\n\t\t + W(1, 1006760678, -1113210911, 1032256237, 1049910352) + W(2, -1113826958, 1036222192, 1042522323, 1029873877)\n\t\t + W(3, -1114005032, -1103860667, -1097372109, 1057099626)\n\t\t + W(4, -1101854594, -1111141177, 1026512560, -1098570768)\n\t\t + W(5, -1087095027, 1061337654, -1106501979, 1024448974)\n\t\t + W(6, -1140244890, -1119844941, -1095003728, 1054485156)\n\t\t + W(7, -1115808507, -1125584845, -1131077462, 1040825100)\n\t\t + W(8, -1095439444, 1049129464, 1027903818, -1111469876)\n\t\t + W(9, 1024452554, 1017183931, -1128526324, 1044366494)\n\t\t + W(10, -1153767820, 1027351533, -1122466948, -1119780203)\n\t\t + W(11, -1106181921, 1040163591, 1034550428, -1117633442);\n\tsum2 =\n\t\tW(0, -1117856953, 1034706164, 999139177, -1115089108) + W(1, 970725323, 1017499348, 1002437005, -1114697961)\n\t\t+ W(2, 1016679180, 1009230224, 1019562884, -1131336757) + W(3, -1122373390, -1110151254, 1034965747, 1007700984)\n\t\t+ W(4, -1131774725, 1031482891, 1023823647, -1078943314)\n\t\t+ W(5, 1069645782, -1105149666, 1038179083, -1120925641)\n\t\t+ W(6, -1131092262, -1111296752, 1026082346, 1033262730) + W(7, 1014219446, 1015408436, -1119824143, 1008147760)\n\t\t+ W(8, 1005900489, -1142960238, -1130072184, 1001625665)\n\t\t+ W(9, -1129026789, 1015792571, -1134452913, 1015281188)\n\t\t+ W(10, 1012295392, -1137039581, -1118651901, 1029244251)\n\t\t+ W(11, -1121319377, 1026230788, -1122304449, 1019807852);\n\tWS(1061396972, -1097419696);\n\tsum1 =\n\t\tW(0, 1040610541, -1110826049, -1087862644, -1108888122) + W(1, 1051684947, -1117156776, -1116833412, 1042368898)\n\t\t+ W(2, 1000165941, 1058527541, -1102910221, -1135746300)\n\t\t+ W(3, 1015657075, -1113808270, -1108964145, 1056284429) + W(4, 1041698836, 1026275932, -1126977972, 1036447253)\n\t\t+ W(5, -1085843362, 1053927177, -1107922836, 1041042462) + W(6, 1033993320, 1043284110, -1088558114, 1062174380)\n\t\t+ W(7, 991752527, -1137078595, -1125945514, 1048078310) + W(8, -1086794197, 1055390198, -1112253878, 1035139905)\n\t\t+ W(9, 1028019732, 1028739112, -1087573386, 1042115560)\n\t\t+ W(10, 1039363202, -1118906322, -1120964750, 1052576556)\n\t\t+ W(11, -1079810761, 1051035743, 1047360574, 1038370422);\n\tsum2 = W(0, -1104315228, -1103350409, -1094844926, 1062539510)\n\t\t + W(1, -1096027281, 1014020953, -1117475550, 1024254038)\n\t\t + W(2, -1091235931, -1112967686, 1042482062, -1119186298)\n\t\t + W(3, 1019617669, -1116633366, -1089312569, 1056743222)\n\t\t + W(4, -1129394013, 1028745390, -1096755788, 1042486592)\n\t\t + W(5, -1104902685, 1052266072, 1051055108, -1093268483) + W(6, 1043056626, 1038440719, 1045881224, 1037341407)\n\t\t + W(7, 1044017054, 1054988226, -1097959989, -1097184876)\n\t\t + W(8, -1101957876, 1012499609, -1101861122, -1102938164)\n\t\t + W(9, 1038305467, -1107570984, 1058820589, 1048266302)\n\t\t + W(10, -1105903455, 1026503526, -1121707278, -1092525975)\n\t\t + W(11, 1058872796, -1099676541, 1041661910, -1135013257);\n\tWS(-1084431788, -1073850193);\n\tsum1 = W(0, -1121456839, -1130755883, -1131651239, 1035028387)\n\t\t + W(1, 1035837265, -1139076328, 1023326765, -1119027356)\n\t\t + W(2, -1113039213, 1052115068, 1031790055, -1110649673)\n\t\t + W(3, -1111055334, 1007276024, 1041028837, -1087869490)\n\t\t + W(4, 1043959725, -1126605404, -1131954777, 1032958718)\n\t\t + W(5, -1121014635, 1031197854, -1151139494, 1037205893)\n\t\t + W(6, -1127100870, 1051511197, -1080291009, 1064028192)\n\t\t + W(7, -1097929447, 1022476742, -1115233108, 1038479638)\n\t\t + W(8, -1101242168, 1046762496, 1016490449, 1029406204) + W(9, 1032290155, 1033362061, -1095204295, 1048797598)\n\t\t + W(10, 974160200, -1117985767, -1113154576, -1118671783)\n\t\t + W(11, -1109590335, 1048241682, 1033898418, 1016018525);\n\tsum2 = W(0, 975878233, 1035912472, 1033266404, -1098777501) + W(1, -1115369638, 1024165887, 1027199947, 1026239811)\n\t\t + W(2, -1101163205, -1120465270, 1047867282, -1114558090)\n\t\t + W(3, 1032202892, -1109490583, -1092678923, 1026269275)\n\t\t + W(4, 1048647954, -1127793863, 1011577542, -1099491895)\n\t\t + W(5, 1052721602, 1058060839, 1026065727, -1110013405) + W(6, 989447596, 1027909011, -1115079323, 1022663675)\n\t\t + W(7, -1107120056, -1115589183, -1126785583, -1142596491)\n\t\t + W(8, 1042994318, -1109244590, -1139333782, 1028177183)\n\t\t + W(9, -1112180928, 1032601180, -1117880304, -1139999774)\n\t\t + W(10, -1113232790, -1119188249, 1027448187, 1030066347)\n\t\t + W(11, 999387083, -1113199846, -1128307819, 1010561254);\n\tWS(1060891500, 1063998119);\n\tsum1 =\n\t\tW(0, 1009319059, 1034817251, 1060685055, -1082111981) + W(1, -1146641530, 1021753903, 1021371624, -1123888698)\n\t\t+ W(2, 1050963407, -1089953728, 1042831681, -1158245846) + W(3, 1020060242, 1007070174, 1059880676, -1083685732)\n\t\t+ W(4, 1044491976, 1024323659, 1034805925, 1031377177) + W(5, 1058492133, -1080402290, 1049293617, 974645755)\n\t\t+ W(6, -1119463744, 1035958587, 1057972187, -1087669949) + W(7, 1044279073, 1017781825, 1029917861, 1040845210)\n\t\t+ W(8, 1045390927, -1092052092, 1030870792, 1029410098) + W(9, 1022228167, -1119265271, 1050698442, -1101265316)\n\t\t+ W(10, 1040824939, 1009963113, 1028919037, 1041595485)\n\t\t+ W(11, 1042995863, -1093474029, -1117179330, 1033823734);\n\tsum2 =\n\t\tW(0, 1043252027, 1031085111, -1089976691, 1015926083) + W(1, 1075090314, -1090475122, 1039685669, -1103588836)\n\t\t+ W(2, -1136546874, 1047286193, 1055918010, 1041438201) + W(3, 1021402919, -1094345084, -1106220008, 1049855126)\n\t\t+ W(4, -1100279282, -1097421747, 1043798699, -1097680472)\n\t\t+ W(5, 1053086422, -1093227067, -1086978538, 1055157984)\n\t\t+ W(6, -1106121381, -1098140010, 1041831351, 1030378489)\n\t\t+ W(7, -1081018505, 1047503463, -1107286980, -1117022930)\n\t\t+ W(8, 1053158416, 1047431201, -1090494906, 1040447738)\n\t\t+ W(9, -1116219530, -1111854401, 1043898913, -1088912308)\n\t\t+ W(10, 1049023531, 1013873926, -1105216890, -1165267820)\n\t\t+ W(11, 1065796563, 1047204695, -1076607098, 1060337257);\n\tWS(-1071907259, -1110912590);\n\tsum1 = W(0, -1125193009, 1047025832, -1082520498, 1060301769)\n\t\t + W(1, 1034040338, 1027334603, -1128862543, 1037187527) + W(2, -1091004805, 1051495910, 999732421, 1007930762)\n\t\t + W(3, -1134196340, 1045585380, -1082717575, 1059488668) + W(4, 1034460834, 1012148988, 1030754750, 1046461539)\n\t\t + W(5, -1081098270, 1059029683, 1039737374, -1153534395)\n\t\t + W(6, -1115532794, 1034859053, -1085641231, 1058265227) + W(7, 1026869576, 1008981841, 1035978988, 1044478211)\n\t\t + W(8, -1094770022, 1047385124, 1035505465, -1141674924)\n\t\t + W(9, -1122396199, 1038023446, -1100806498, 1051401113)\n\t\t + W(10, -1108119003, -1131397284, 1030566929, -1115297724)\n\t\t + W(11, -1096364930, 1030610907, 1049444580, 1004145403);\n\tsum2 = W(0, -1094095783, 1071341959, -1106266089, -1079612356)\n\t\t + W(1, -1096220802, 1053270877, 1046265071, 1041114835)\n\t\t + W(2, -1087794787, -1090342602, -1119797941, -1103321092)\n\t\t + W(3, -1105766507, -1093757522, 1036032273, -1097206613)\n\t\t + W(4, -1100480279, 1044676561, 1052972269, -1096593198)\n\t\t + W(5, 1065807667, 1072329002, -1091841958, -1113258696)\n\t\t + W(6, -1118583019, -1091593516, -1120668367, 1052074546)\n\t\t + W(7, -1107977625, 1022355226, 1048411623, -1091154406)\n\t\t + W(8, -1098744738, 1035089459, 1049018868, -1099949977)\n\t\t + W(9, -1102184915, 1057911473, -1101075731, 1053464489)\n\t\t + W(10, -1101117382, 1048742227, 1063609884, -1073590228)\n\t\t + W(11, 1041493985, 1066861510, -1098841365, -1096064815);\n\tWS(-1073583387, -1097642521);\n\tsum1 = W(0, -1113793830, 1040986278, -1123577624, 1026212810)\n\t\t + W(1, 1031641306, -1117606078, 1025630043, 1018743169) + W(2, 1051202676, -1107655120, 1015332695, 1026666645)\n\t\t + W(3, 999171711, 1043520539, -1085714085, 1058537807) + W(4, -1102186706, 999394704, -1113970392, -1126196031)\n\t\t + W(5, -1137921726, -1102760649, 1042214156, -1098706922)\n\t\t + W(6, 1041107242, -1117788829, 1058609607, -1084066799)\n\t\t + W(7, 1050734989, 1028174279, -1126372055, 1023908016)\n\t\t + W(8, -1120709796, 1038867522, -1104026556, -1105230460)\n\t\t + W(9, 1019259188, 999617264, 1049515695, -1105494638) + W(10, 1038371877, -1131430066, -1141619744, 997975216)\n\t\t + W(11, 1048163249, -1113662887, -1118473257, -1117999154);\n\tsum2 =\n\t\tW(0, 1020465344, -1114187457, 1042661620, -1108558660) + W(1, 1022323488, 1024517966, -1122047285, 1035498840)\n\t\t+ W(2, -1112200610, 990338200, 1037081003, -1114108748) + W(3, -1132946638, 990134284, 1050532943, -1098817485)\n\t\t+ W(4, -1116108394, 1033071181, 1029560286, -1105572872) + W(5, 1053825241, 1046181371, -1112231866, 1024966834)\n\t\t+ W(6, -1137208000, -1125836673, 1035380426, 1052951690)\n\t\t+ W(7, -1098433232, 1018142458, 1032274109, -1107008827)\n\t\t+ W(8, 1041934457, -1099854916, -1115059895, -1114933005)\n\t\t+ W(9, 996568996, -1143550666, -1132156656, -1101729420)\n\t\t+ W(10, -1106305341, 1025004711, -1139618609, -1133886920)\n\t\t+ W(11, -1115627477, -1120597401, -1145950712, -1129654551);\n\tWS(1066138518, -1093674260);\n\tsum1 =\n\t\tW(0, 1029114768, -1096639483, 1057895286, -1095967018) + W(1, 1030209323, -1115838467, 1016625343, -1107076945)\n\t\t+ W(2, 1046373881, -1098130813, 1027610352, 1036809869) + W(3, 1023256234, -1097327813, 1060592282, -1090692519)\n\t\t+ W(4, 1010824623, -1116997111, -1135602902, -1112968866)\n\t\t+ W(5, 1048700903, -1096019117, -1147523994, 1034515722)\n\t\t+ W(6, -1154917052, 1039946769, -1102042589, 1052511498)\n\t\t+ W(7, -1107963320, 1025259308, -1126509217, -1145778087)\n\t\t+ W(8, -1102212410, 1050590801, -1106421308, 1031910367)\n\t\t+ W(9, -1119361423, 1040195377, -1110743776, 1037092318)\n\t\t+ W(10, -1114290095, 1015369596, -1120895465, 1035798312)\n\t\t+ W(11, -1096085673, 1054517602, -1103975991, 1032370884);\n\tsum2 =\n\t\tW(0, 1020680083, -1098235374, 1040052819, 1039185699) + W(1, -1105651771, 999965284, 1026207298, -1129289080)\n\t\t+ W(2, 1000882372, 1041518935, -1108930987, 1025606660) + W(3, -1114338038, 1035819795, -1104532064, 1060121453)\n\t\t+ W(4, -1132043948, -1127194998, 1034412140, 1034843888)\n\t\t+ W(5, -1096717996, -1098039050, 1059664416, -1123799241)\n\t\t+ W(6, -1119552802, 1030579314, 1025849568, -1085068698) + W(7, 1064006582, 1020099573, -1132183796, 1031435954)\n\t\t+ W(8, -1126927262, -1105751584, -1108966794, -1130436386)\n\t\t+ W(9, 1014438782, -1118921036, 1034356940, 1039772175)\n\t\t+ W(10, -1090790505, 1040432622, 1026463590, -1110299389)\n\t\t+ W(11, 1043556407, 1060018227, -1083675102, -1098649260);\n\tWS(-1098394199, 1021768394);\n\tsum1 =\n\t\tW(0, -1106976773, 1047476460, 1035645360, -1107202165) + W(1, -1121988294, 1008308247, 1030592418, -1106379994)\n\t\t+ W(2, 1042879449, -1121922344, 986778214, -1140215924) + W(3, -1109895628, 1041629170, 1052123789, -1091385002)\n\t\t+ W(4, 1042582852, -1120193402, 1031813276, -1108680996)\n\t\t+ W(5, 1053022447, -1090269731, 1042227034, -1127396653)\n\t\t+ W(6, -1114022359, 1028771909, -1107385030, -1107044710)\n\t\t+ W(7, 1044112989, 973525940, -1124672038, -1123109432)\n\t\t+ W(8, 1044862779, -1127679127, -1115617842, -1139398721) + W(9, 980431986, 1035760915, 1023833154, -1107740288)\n\t\t+ W(10, 1030134009, 1014367554, -1118216524, 1039049769)\n\t\t+ W(11, 1040198899, -1099192133, 1025832513, -1116507498);\n\tsum2 = W(0, -1098169790, 1055345266, -1106123518, 1039932359) + W(1, -1111072353, 1012808524, 968544056, 1027898732)\n\t\t + W(2, 1021773530, 1036378047, -1123343911, -1132858861)\n\t\t + W(3, -1162122654, 1053687424, -1089212318, 1035540057)\n\t\t + W(4, -1111121590, 1037852727, 1056997121, -1077105818)\n\t\t + W(5, 1068095045, -1098361429, 1044527270, -1103837325)\n\t\t + W(6, 1029158812, 1039110353, -1090252350, 1000425352)\n\t\t + W(7, -1115281069, 1036594354, -1112228820, 1037144043)\n\t\t + W(8, -1124556656, 1050038066, -1114307158, -1134065606)\n\t\t + W(9, 1026696161, 1022799116, -1130232224, -1118055459)\n\t\t + W(10, -1116705210, 1032061348, -1112296199, 1042942743)\n\t\t + W(11, -1104975561, 1040445489, 1023167430, -1114916168);\n\tWS(1064984812, 1025677564);\n\tsum1 =\n\t\tW(0, 1043884023, -1096329284, -1084712758, 1057726586) + W(1, 1043356655, 1012739123, 1030924649, 1033742216)\n\t\t+ W(2, -1103101243, 1046959260, 1018532660, -1131015624)\n\t\t+ W(3, 1038396303, -1101734196, -1087209573, 1057188432) + W(4, 1046520365, 1002161670, 1036152448, -1105624932)\n\t\t+ W(5, -1086845720, 1061206275, -1114153679, 1044816791) + W(6, 1017544939, 1017123640, -1084903475, 1060371326)\n\t\t+ W(7, -1111584053, 1024962678, 1042241831, -1108991823) + W(8, -1087299343, 1055419738, 1028245989, 1043667629)\n\t\t+ W(9, -1121467129, 1037154774, -1108220133, 1041931586)\n\t\t+ W(10, 994164350, -1114955616, 1047065797, -1096026219)\n\t\t+ W(11, -1087523701, 1055087388, 1051664559, 1040331724);\n\tsum2 =\n\t\tW(0, 1043159502, -1104158106, -1085409392, 1067096435) + W(1, -1090972778, -1098664617, -1105699647, 1050222709)\n\t\t+ W(2, -1090385012, -1106627676, -1102151020, 1050757442)\n\t\t+ W(3, 1038273264, 1025130152, -1106188919, 1052171093) + W(4, -1086083449, 1039140273, 1032147900, 1032288328)\n\t\t+ W(5, 1061149199, 1075677902, -1070862987, 1030992941) + W(6, 1048938986, -1103450106, 1050752016, 1075039778)\n\t\t+ W(7, -1070168511, 1040257314, -1106879197, -1110143950)\n\t\t+ W(8, 1049612036, 1073503496, -1072257998, 1041175752) + W(9, -1128156680, -1098742781, 1057886527, 1075355126)\n\t\t+ W(10, -1070483864, 1030488248, 1049056829, -1091104362)\n\t\t+ W(11, -1095713225, 1082426924, -1070643407, -1098188298);\n\tWS(-1072457547, -1104871915);\n\tsum1 = W(0, 1018087532, -1138749297, -1129333765, 983826087) + W(1, 1026100589, 1007352484, 1014551830, 1036550950)\n\t\t + W(2, -1131367952, 1050222745, -1118152278, -1123482688)\n\t\t + W(3, -1143311830, 1001512248, -1083142279, 1055877542)\n\t\t + W(4, -1106883828, 1034580622, 1031881454, -1098112129)\n\t\t + W(5, 1014989673, 1020808474, 1016760626, -1109491581)\n\t\t + W(6, 1033102921, -1104222042, 1059974718, -1086706094)\n\t\t + W(7, 1045231050, -1122062610, 1020957612, -1104597767)\n\t\t + W(8, 1057969217, -1096646942, 1040528910, -1114916930)\n\t\t + W(9, -1158925470, -1125431314, 1048954301, -1105443081)\n\t\t + W(10, 1027306868, -1147978606, 1015585054, 1042534317)\n\t\t + W(11, 1043242379, -1106542638, -1120756612, -1122581117);\n\tsum2 =\n\t\tW(0, -1120473304, 1034530006, -1151412702, -1124099243) + W(1, 1026058392, -1131120105, -1112539216, 1032795060)\n\t\t+ W(2, 1009244103, -1115907580, -1114805763, 1025202928) + W(3, -1132295147, 1046686841, 1037608248, 1020085733)\n\t\t+ W(4, -1120554932, 998829429, -1099708049, 1054832981) + W(5, 1050403530, 1033863239, -1154011810, -1131382687)\n\t\t+ W(6, -1120301365, -1109933894, 1051005406, -1107650300)\n\t\t+ W(7, 1036477609, 1020773937, -1106531527, -1089566811)\n\t\t+ W(8, -1106362502, 1030750625, -1122049677, -1143352615)\n\t\t+ W(9, -1119309605, 1004612697, -1114169666, -1130967605)\n\t\t+ W(10, 1028389062, -1142800679, -1165429700, -1105741108)\n\t\t+ W(11, 1026755208, -1146151019, 1026996282, 1016610669);\n\tWS(1057548396, -1118860492);\n\tsum1 = W(0, 1024314991, 1024521628, 1019907062, -1109277847) + W(1, 1042186208, -1127185475, 1015464700, 1035643506)\n\t\t + W(2, 1035362560, 1033181378, 1019936830, 1015346289) + W(3, 1033090170, 1022826491, -1102305323, 1038789717)\n\t\t + W(4, 1047455161, 1015056043, 1024068436, 1044765945) + W(5, -1077384746, -1093016121, 1050623422, 1035221881)\n\t\t + W(6, 1023937802, 1040253828, -1095947197, 1047039772) + W(7, 1039235079, 1019339797, 1007695803, 1032416458)\n\t\t + W(8, -1110302756, 1032628147, 1012944520, 1030260028) + W(9, 1026830221, 1031527745, -1110046895, 1032291149)\n\t\t + W(10, 1025595072, -1124358344, -1142835770, 1041535598)\n\t\t + W(11, -1106773417, 1038601945, 1031404576, 1039118899);\n\tsum2 =\n\t\tW(0, 1028948662, -1119520873, 1040692087, -1099276378) + W(1, 1042585669, -1108959122, -1108748842, 1035535229)\n\t\t+ W(2, -1128105382, -1125068566, -1119570187, -1105777938)\n\t\t+ W(3, 1035054379, 1034598190, -1105801492, 1046560183) + W(4, -1104135640, 1040780747, -1114955281, 1040844095)\n\t\t+ W(5, 1058969109, 1035247795, -1104363062, -1115696651)\n\t\t+ W(6, -1123628391, 1017632867, -1140061979, 1037021603)\n\t\t+ W(7, -1119904127, -1122498951, 1033670708, 1028317650)\n\t\t+ W(8, -1098716294, 1041621971, -1109815486, 1039115990)\n\t\t+ W(9, -1113438145, -1152158269, -1100355456, 1042440154)\n\t\t+ W(10, 1033417138, -1102421790, 1009774019, 1033306906)\n\t\t+ W(11, -1097137530, 1045186907, -1096381982, 1043903068);\n\tWS(-1111617372, -1089239798);\n\tsum1 =\n\t\tW(0, -1120946745, -1109363280, 1036859267, -1107333692) + W(1, -1131126919, 1028471724, 1043411666, -1105933140)\n\t\t+ W(2, -1100282243, 1036658471, 1046725686, -1102252305)\n\t\t+ W(3, -1105344783, -1122482989, 1033736099, -1096910672)\n\t\t+ W(4, -1138971218, 1048148056, 1034980559, -1097138762)\n\t\t+ W(5, 1040067055, 1063625005, -1100591479, -1115573502) + W(6, 1035032490, 1028445691, -1085774908, 1059841631)\n\t\t+ W(7, -1101046354, 1018704810, -1102176538, 1038047807) + W(8, 985367106, 1050659758, -1099856795, 1038410359)\n\t\t+ W(9, 1042691462, -1104930291, -1095561837, 1056206133)\n\t\t+ W(10, -1114722211, -1104725204, -1106084756, 1036625252)\n\t\t+ W(11, -1105930796, 1039222942, 1033845467, 1032806392);\n\tsum2 =\n\t\tW(0, 1032901751, -1102980188, -1097455677, 1019096213) + W(1, 1032175116, -1112661460, -1107914664, 1034775565)\n\t\t+ W(2, -1079544271, -1123759676, -1101940532, 1048109574)\n\t\t+ W(3, 1029069579, -1107463876, -1107584024, 1039965269) + W(4, 1028816201, -1102645998, 987500422, -1115674720)\n\t\t+ W(5, 1066142773, 1060530292, 1036298034, 1048822254) + W(6, -1107918292, -1122769714, 1049477386, 1039765158)\n\t\t+ W(7, -1100641824, -1106440053, 1041931397, 1028640927)\n\t\t+ W(8, -1110827944, -1133849713, 1041944181, -1113520406)\n\t\t+ W(9, -1106970712, -1133982193, 1040943686, -1110406142)\n\t\t+ W(10, -1113302080, 1032469881, 1026585516, -1112107626)\n\t\t+ W(11, 1033119735, -1129682772, 1007346649, -1114426196);\n\tWS(1055684951, -1075449937);\n\tsum1 = W(0, 1025203701, 1021145317, -1089325052, 1050955910) + W(1, 1044060206, 1023449767, -1109225282, 1041132226)\n\t\t + W(2, -1098148265, 1048074946, -1122722677, -1117792831)\n\t\t + W(3, -1105594014, 1045336591, -1089314051, 1059061644)\n\t\t + W(4, -1138312640, 1024771419, -1102495686, 1048290762)\n\t\t + W(5, -1085251962, 1063401377, -1135340574, 1034487612)\n\t\t + W(6, -1115277256, 1046212734, -1086898788, 1058388246)\n\t\t + W(7, -1108206354, -1122363216, -1131312361, 1033816821)\n\t\t + W(8, -1089905605, 1057949871, 1012872015, 1023079171) + W(9, 1003392922, 1042625602, -1090587428, 1049257380)\n\t\t + W(10, 1013091209, -1119440554, -1119401549, 1032304674)\n\t\t + W(11, -1086086859, 1056447675, 1030899626, 1029355212);\n\tsum2 =\n\t\tW(0, 1061277558, -1075680192, 1064394375, 1041412946) + W(1, -1097187807, 1043650757, 1070915797, -1078675502)\n\t\t+ W(2, -1099840736, 1036217426, 1041322393, -1128025338)\n\t\t+ W(3, 1077465728, -1072669743, -1080083122, 1053075748)\n\t\t+ W(4, -1098777830, -1113957037, 1077005703, -1071891757)\n\t\t+ W(5, -1110541808, 1035413026, -1105806062, 1028555409)\n\t\t+ W(6, 1067272551, -1079654744, 1034295344, -1098463344) + W(7, 1042040059, 1035679275, 1035834095, -1094224921)\n\t\t+ W(8, 1034313258, 1050839735, -1099205009, -1113787473)\n\t\t+ W(9, -1140563054, -1124876273, 1044374977, 1012713199)\n\t\t+ W(10, 1043077130, 1015942004, -1101597023, -1106967769)\n\t\t+ W(11, 1056268760, 1033733408, -1097742853, 1036121231);\n\tWS(-1084991020, -1093321377);\n\tsum1 =\n\t\tW(0, -1124603198, 1041431403, 1058092855, -1087194206) + W(1, 1031898965, 1027465426, 1020905181, -1106261797)\n\t\t+ W(2, 1050746614, -1093664550, 1020373118, 1019387090) + W(3, 1034567442, 1012534679, 1060858482, -1086211050)\n\t\t+ W(4, 1037199077, 942151344, 1033810210, -1100435893) + W(5, 1063338984, -1081371861, 1028138434, -1130539845)\n\t\t+ W(6, 1026468027, -1113177704, 1057782107, -1091610836) + W(7, 1041359812, 1019123574, 1034346016, 1029015460)\n\t\t+ W(8, 1050350895, -1090363161, 1026545296, 1032894586) + W(9, 1012576759, -1109083497, 1047981412, -1099126963)\n\t\t+ W(10, 1017607178, 1018549369, 1040898454, 1045957208)\n\t\t+ W(11, 1051078083, -1088769118, -1114891854, 1024075622);\n\tsum2 =\n\t\tW(0, 1049096145, -1096421724, -1104462777, 1019605429) + W(1, -1107039596, 1039363330, 1050639335, -1100344181)\n\t\t+ W(2, 1044471716, 1054069324, -1112798845, -1113551308)\n\t\t+ W(3, 1060252300, -1085369111, -1101216805, -1124780213) + W(4, 1041817400, 999612981, 1068716746, -1076762820)\n\t\t+ W(5, 1050347336, 1025609425, -1099054195, 1018249637) + W(6, 1070836883, -1073687271, 1052234046, -1096692411)\n\t\t+ W(7, 1029953841, 1028531297, 1071114171, -1075542147) + W(8, 1009296899, 1043747806, 1030832137, -1109453871)\n\t\t+ W(9, 1069477538, -1076870984, 1047758574, 1026561745)\n\t\t+ W(10, -1135279155, 1027426027, 1068968491, -1078719402)\n\t\t+ W(11, -1114781860, 1035243068, -1140937749, -1125031723);\n\tWS(-1082530796, 1061926473);\n\tsum1 = W(0, -1111745736, -1107298323, 1048819916, 1033356744)\n\t\t + W(1, 1034157517, -1119982339, 1030277984, -1127531019)\n\t\t + W(2, 1039611697, -1113172467, -1127895905, 1009757802)\n\t\t + W(3, -1123296661, -1109831840, 1058045501, 1035918242)\n\t\t + W(4, -1146238814, -1125062126, 1039021467, -1118701125)\n\t\t + W(5, -1099048749, -1088898044, -1099659681, 1039341706)\n\t\t + W(6, -1130604760, -1101933527, 1052265202, -1125679275)\n\t\t + W(7, 1032846000, -1111731430, 1012520514, -1114851579) + W(8, 1034215157, 1029808585, 1005542493, 1016627083)\n\t\t + W(9, -1112767704, 1016124742, 1037161440, -1110952702)\n\t\t + W(10, 1024904046, -1137100912, 1017586258, -1131932512)\n\t\t + W(11, 1010862879, 1040689749, -1114167271, -1130467695);\n\tsum2 = W(0, -1123675689, 1027790609, -1107220732, -1138688370)\n\t\t + W(1, -1114685917, -1131813881, 1025856461, -1115257125)\n\t\t + W(2, -1103597907, 1036222096, -1104487390, -1138958066)\n\t\t + W(3, -1129839981, 1041635489, -1083432255, -1099581339)\n\t\t + W(4, -1113019592, 1015980625, 1039506778, -1087170514)\n\t\t + W(5, 1074899174, 1052206445, -1103205528, 1015820001)\n\t\t + W(6, -1111122039, 1054414527, -1087814585, 1033877978)\n\t\t + W(7, -1114160943, 1023501105, -1108253250, 1040911707)\n\t\t + W(8, -1119836905, 1035305654, -1128600489, -1135082354)\n\t\t + W(9, 1042547871, -1107819629, -1108795814, 1040418607)\n\t\t + W(10, -1113593105, 1028405761, 1023517501, -1119501461)\n\t\t + W(11, -1120345851, 974999585, -1136105250, 1023691837);\n\tWS(1064809580, 1026007555);\n\tsum1 = W(0, -1117346201, -1139810490, 1018638922, 1046259126)\n\t\t + W(1, -1110265860, -1107316166, 1012678303, -1117193870)\n\t\t + W(2, 1041509643, -1116046893, -1107022182, 1042684025)\n\t\t + W(3, -1112794575, 1032058104, -1089321581, 1058768682)\n\t\t + W(4, 1049529906, -1107194416, 1024755966, -1127734554)\n\t\t + W(5, -1106321711, 1057441571, -1097674775, -1115653262)\n\t\t + W(6, -1119597108, 1040786347, 1042250009, -1088983804)\n\t\t + W(7, 1052962187, -1115453338, -1109792204, -1106953519)\n\t\t + W(8, -1136225478, 1052663642, -1105006210, -1104239151)\n\t\t + W(9, 1039580268, -1120656619, -1140389406, 1033398978)\n\t\t + W(10, -1138416249, 1026892022, -1109340249, -1123630216)\n\t\t + W(11, 1031754384, 1030125211, -1114619763, -1113265368);\n\tsum2 = W(0, 1002173025, -1126476274, 993251281, 1035289805) + W(1, 1026092616, -1119256919, 1022454821, -1112202702)\n\t\t + W(2, 1027055467, -1110248161, -1106697397, 1035602798)\n\t\t + W(3, -1114052781, 1040267060, -1106967376, 1050537246)\n\t\t + W(4, 1051631259, -1119463370, 1026488668, -1105276944)\n\t\t + W(5, 1037292044, -1103163514, -1119693560, -1109176262)\n\t\t + W(6, 1024785122, 1041996701, 1032247852, 1036995069) + W(7, 1026699348, -1123291766, -1114947733, 1024974628)\n\t\t + W(8, -1103384730, 1044720036, -1113586574, -1103668424)\n\t\t + W(9, 1041552522, -1106672600, 1024347316, -1136575544)\n\t\t + W(10, 1012871948, -1104716490, -1114686018, 1014734543)\n\t\t + W(11, 1038837578, 1011597497, -1113050536, -1124038001);\n\tWS(1065652022, 1032044813);\n\tsum1 =\n\t\tW(0, 1008146233, 1024151812, -1109382253, 1046726755) + W(1, -1118504831, -1145994760, -1138253430, 1033154018)\n\t\t+ W(2, -1111423088, -1114751985, 1030270670, 1011776865)\n\t\t+ W(3, -1111490857, 1037025524, -1089787453, 1060185520)\n\t\t+ W(4, -1108385813, 1031075253, 1034343482, -1098142828)\n\t\t+ W(5, 1056996567, -1102691401, 1034117937, -1115595081)\n\t\t+ W(6, 1027957290, -1093711910, 1064926206, -1084615165) + W(7, 1042611828, -1141498448, 1037589943, 1019326054)\n\t\t+ W(8, 1020462798, -1096112169, 999245356, 1030480467) + W(9, 1035138662, -1137243780, 1028825917, -1123985530)\n\t\t+ W(10, -1106962907, 1020535720, -1130048270, 1033030167)\n\t\t+ W(11, 1017317515, -1105819364, -1131349303, -1161641125);\n\tsum2 = W(0, 1006780909, 1018874621, -1118402441, -1125742470)\n\t\t + W(1, 1022906649, 1002124531, 1032029355, -1106542042)\n\t\t + W(2, -1123089851, 1042324218, 1032351097, -1127943559)\n\t\t + W(3, 928839112, -1114343998, -1111882995, -1150379126)\n\t\t + W(4, 1030201786, -1112138839, -1118040285, -1106692361)\n\t\t + W(5, 1057618964, 1059562898, -1096401122, 1036092239)\n\t\t + W(6, -1112805367, 1043467647, -1114692462, -1124030112)\n\t\t + W(7, -1101041619, -1119061832, -1105940221, 1041450718)\n\t\t + W(8, 1035656455, -1096899429, -1105376866, 1038704957)\n\t\t + W(9, 1025941308, 1036583459, -1122657152, -1115452253)\n\t\t + W(10, 1025207396, -1115257437, 1031169874, -1106475204)\n\t\t + W(11, -1181112366, -1108009053, -1117532473, 1040262599);\n\tWS(1060219372, -1086892801);\n\tsum1 =\n\t\tW(0, -1103145773, 1039153858, 1051640744, -1098525574) + W(1, -1104573181, 1018968139, 1041685441, -1139059104)\n\t\t+ W(2, -1111094658, -1114399172, 1034492410, -1114173214)\n\t\t+ W(3, -1114046300, -1139626983, 1060139625, -1105262039)\n\t\t+ W(4, -1112320535, -1114750605, -1105288038, 1051743245)\n\t\t+ W(5, 1048845947, -1084251893, 1048366229, -1119683574) + W(6, 1036049319, 1005204005, 1056234019, -1132035760)\n\t\t+ W(7, 1045757805, -1113866359, -1105447101, -1096900831)\n\t\t+ W(8, 1058595229, -1097183901, -1102598303, -1132035040)\n\t\t+ W(9, -1153064218, 1006778518, 1030114274, -1095492788)\n\t\t+ W(10, 1044243314, 1021887633, 1037687846, -1097346218)\n\t\t+ W(11, 1052830405, -1105878061, -1114955456, -1107291810);\n\tsum2 =\n\t\tW(0, -1116149857, 1025241726, -1099180395, 1043244905) + W(1, -1108018378, 1036684654, -1115656995, 1004099725)\n\t\t+ W(2, -1094029030, 1042198638, 1030698655, -1113978987) + W(3, 1030898684, 1025926274, 1029208805, 1050305603)\n\t\t+ W(4, -1105752531, 1030311314, -1101937257, 1029996270)\n\t\t+ W(5, -1093188603, 1051892024, 1032179392, -1143836228) + W(6, -1172884346, 1015423640, 1043486640, 1010118001)\n\t\t+ W(7, 1042453668, -1107174775, -1108962642, -1098527410)\n\t\t+ W(8, 1057927618, -1111697287, -1110311603, 1032971351)\n\t\t+ W(9, -1122887710, -1102965987, 1033678913, -1106879588)\n\t\t+ W(10, 1043859461, -1114814873, 1035380843, -1099100919)\n\t\t+ W(11, 1054675670, -1115267941, -1124505249, -1114563702);\n\tWS(1054285911, 1050558006);\n\tsum1 =\n\t\tW(0, -1123510162, 1038924416, -1103298920, 1049975562) + W(1, -1107117058, -1132690963, -1131523010, 1041880394)\n\t\t+ W(2, -1093800836, 1050884477, -1103773453, 1013663344)\n\t\t+ W(3, -1131464621, 1042834130, -1095165898, 1056805171) + W(4, -1101616339, 1008580322, 1019709806, 1022473868)\n\t\t+ W(5, 1057683379, -1101108530, -1121085405, -1112183179)\n\t\t+ W(6, 1029482925, -1100861061, 1065493943, -1084744157)\n\t\t+ W(7, 1044641696, -1107880231, 1019519396, -1099456110)\n\t\t+ W(8, 1059660975, -1084827161, 1037612741, -1118057053)\n\t\t+ W(9, 1008876867, -1103795177, 1052993120, -1096422344) + W(10, 1041661496, -1120002940, 990268585, 1023983666)\n\t\t+ W(11, 1049686449, -1102767109, -1112995616, -1125681410);\n\tsum2 = W(0, -1122499415, -1115660402, 1019721643, 1052675919)\n\t\t + W(1, -1134010714, -1107636671, -1135750526, -1103885919)\n\t\t + W(2, -1163427536, -1111228057, -1097257542, 1043515230)\n\t\t + W(3, 1025808744, -1107570715, 1050733408, 1050715774)\n\t\t + W(4, -1097200131, -1113330231, 1004729468, -1109043837)\n\t\t + W(5, 1068391994, 1068640266, -1098019427, 1035061875)\n\t\t + W(6, 1038371609, -1101018403, -1088555463, -1109791041)\n\t\t + W(7, -1104872484, 1015805682, 1025309219, -1106866200)\n\t\t + W(8, 1029079067, -1082318320, -1103711089, -1134559274)\n\t\t + W(9, 1037233345, -1100735475, 1034253450, 1048468038)\n\t\t + W(10, -1096395820, 1043601518, -1107252608, 1049544712)\n\t\t + W(11, -1147071004, -1092391889, 1032346912, -1139706642);\n\tWS(-1090663639, -1077388844);\n\tsum1 =\n\t\tW(0, 1018174482, -1118693311, -1093711755, 1049109025) + W(1, 1040639418, 1010315758, -1160081154, 1029100670)\n\t\t+ W(2, -1098783931, 1046071575, 1021012498, -1115518041)\n\t\t+ W(3, -1125628059, -1120731528, -1088582516, 1052420297)\n\t\t+ W(4, -1106387497, -1181480889, -1132569784, -1106887239)\n\t\t+ W(5, -1095941442, 1068562223, 986381179, 1034527238) + W(6, -1117916196, -1106415899, -1087125152, 1064382514)\n\t\t+ W(7, -1096200966, 974332196, -1117849353, -1097169074)\n\t\t+ W(8, -1094690684, 1058209900, -1116837948, 1015836076)\n\t\t+ W(9, 1021610031, -1146324700, -1097735927, 1048904111)\n\t\t+ W(10, 1025702951, -1123641014, -1122253105, -1168966176)\n\t\t+ W(11, -1093052224, 1056110513, -1121509238, 1025570188);\n\tsum2 = W(0, 1034436941, -1094381136, 1032181918, 1038416019)\n\t\t + W(1, -1157362266, 1040127243, -1113720588, 1042206203)\n\t\t + W(2, 998633097, -1112936962, 1041189037, -1108577062) + W(3, 1024698569, -1096498964, 1057336919, 1044225483)\n\t\t + W(4, -1114037642, -1122557473, -1106229774, -1082651758)\n\t\t + W(5, 1076874404, 1035551973, 1029476436, 1033287923) + W(6, 1036635696, -1065300211, 1081990850, 1041430251)\n\t\t + W(7, 1035032611, 1024588020, 1046234567, -1070759890) + W(8, 1049370102, 1045207615, 1036601034, 1015731519)\n\t\t + W(9, 1052080385, -1090746117, -1114040834, 1038285588)\n\t\t + W(10, -1115422836, -1155116306, 1034351318, -1089089289)\n\t\t + W(11, 1035723536, -1119691531, -1130950394, 1031958369);\n\tWS(-1080363926, -1071486509);\n\tsum1 = W(0, 1035667824, -1117755862, 1058850627, -1089812638)\n\t\t + W(1, -1119781738, 1033333673, -1106562756, -1102851061)\n\t\t + W(2, 1044522508, -1098855847, -1124105919, -1122920906)\n\t\t + W(3, 1048836261, 1026770536, 1060900423, -1094273901)\n\t\t + W(4, -1136163052, 1034167779, -1099668353, -1096598034)\n\t\t + W(5, 1062774732, -1081351512, 1019768789, -1100720585)\n\t\t + W(6, 1041756943, -1111989629, 1060314417, -1091724133)\n\t\t + W(7, 1036217472, 1023569595, 1034350288, -1117155588) + W(8, 1058954340, -1097309107, 1034476769, 1037864032)\n\t\t + W(9, -1111757455, -1106686285, 1047827972, -1089979637)\n\t\t + W(10, 1034808863, -1108224543, 1036008540, -1110305168)\n\t\t + W(11, 1058323473, -1097705308, -1112569431, 997120104);\n\tsum2 =\n\t\tW(0, -1130221439, 1026473921, -1098631230, 1059210683) + W(1, 991949852, -1088875775, 1039521143, 1040027805)\n\t\t+ W(2, 1049962270, 1037922688, -1128609979, 1043008084)\n\t\t+ W(3, -1106623296, -1103850305, -1102633929, 1032319554)\n\t\t+ W(4, 1032322677, -1081254616, 1040812416, 1044422007) + W(5, 1053913409, 1075309200, -1093367457, -1078110278)\n\t\t+ W(6, -1108121630, 1033782288, 1041179127, 1051007822)\n\t\t+ W(7, -1128820939, -1087823621, 1011405671, -1112409330)\n\t\t+ W(8, -1118313372, -1114991064, 1042490244, -1085620101) + W(9, 1024610419, 1042204829, 1033589003, 1064519547)\n\t\t+ W(10, -1108707286, 1038944538, -1120568012, 1007920671)\n\t\t+ W(11, -1105557487, 1041664007, -1108726636, -1097283302);\n\tWS(-1085146860, -1078432897);\n\tsum1 =\n\t\tW(0, 1000247468, -1149696569, 1046594056, -1105608437) + W(1, 1029982264, -1128935441, 1037132754, -1105005939)\n\t\t+ W(2, 1049101493, -1092242085, 1035020227, -1114749360) + W(3, -1107087079, 1047641075, 1036712721, 1034057408)\n\t\t+ W(4, 1000135432, 1041253327, 1043827999, -1094624073)\n\t\t+ W(5, 1056540903, -1091288646, -1097712673, -1098691603)\n\t\t+ W(6, -1105171356, 1038438012, 1056427897, -1092984875) + W(7, 1048401189, 1031740017, 1034542459, -1098392071)\n\t\t+ W(8, 1052522438, -1099696227, -1113847620, -1124493285)\n\t\t+ W(9, -1139389265, 1037791108, 1039493090, -1123704450)\n\t\t+ W(10, 1041969240, 1035876258, 1019250012, -1111893867)\n\t\t+ W(11, 1053002294, -1096292923, -1109486882, -1117863020);\n\tsum2 =\n\t\tW(0, 981650725, 1022634928, -1122722467, -1134931805) + W(1, -1114801830, 1035155349, -1123188651, -1141995321)\n\t\t+ W(2, 1043118137, 1038372119, -1108690895, -1113558499)\n\t\t+ W(3, -1132394336, -1159373413, -1111962066, -1088039805)\n\t\t+ W(4, 1059960197, -1123558064, 1019312288, 1040593594)\n\t\t+ W(5, -1085264893, -1062981933, 1086226578, -1122982849)\n\t\t+ W(6, 1007032529, -1125839148, 1035586791, -1088420516) + W(7, 1052041256, 1041973847, 1019035800, -1144628769)\n\t\t+ W(8, 1030456162, 1033594923, -1121903247, -1112866008)\n\t\t+ W(9, -1139057577, -1130558040, 1025167346, -1132235322) + W(10, -1127116104, 999416881, 994405618, 996479090)\n\t\t+ W(11, -1121727683, -1141102409, 1010205301, 1015327588);\n\tWS(1065314092, 1028007882);\n\tsum1 =\n\t\tW(0, 1031315399, -1118910333, -1110071882, 1027958726) + W(1, -1132049297, 1030345978, 1009229913, 1044274103)\n\t\t+ W(2, -1091088835, 1049048403, -1098774521, 1015648546)\n\t\t+ W(3, -1129846167, 1040482617, -1081937298, 1058342964) + W(4, -1097400260, 1033820695, 1030512684, 1028502523)\n\t\t+ W(5, 1057125791, 1041882615, -1128387300, -1123750794)\n\t\t+ W(6, 1027211107, -1098008831, 1063505604, -1081007746)\n\t\t+ W(7, 1042307230, -1119357859, 1024491495, -1114626726)\n\t\t+ W(8, 1056913060, -1094994912, 1046624506, -1108219417)\n\t\t+ W(9, -1133667543, 1030034106, 1045615294, -1103714125) + W(10, 1018202602, 1021380405, 1020076159, 1035646611)\n\t\t+ W(11, 1046315392, -1120947018, -1116178789, -1113806211);\n\tsum2 =\n\t\tW(0, -1105494348, 1051114204, -1106549278, -1106413411) + W(1, 1026636954, -1101805730, 1042860341, -1095282678)\n\t\t+ W(2, -1095274416, -1115620988, 1032482885, -1123651604)\n\t\t+ W(3, 1034523914, -1099570184, -1097084890, -1100406176)\n\t\t+ W(4, -1103782738, 1033985372, 1032509803, -1092355888) + W(5, 1068351366, 1061966336, -1111829172, 1041181693)\n\t\t+ W(6, 1037500440, -1093487707, 1045336627, 1064976080)\n\t\t+ W(7, -1099957245, -1105149847, -1136462181, -1101634066)\n\t\t+ W(8, -1093371043, -1095768559, 1011878641, 1041978329) + W(9, -1115571726, 1038218158, 1025607496, 1051011462)\n\t\t+ W(10, -1122142689, -1106959075, 1030953968, -1144657738)\n\t\t+ W(11, -1098135458, -1103066203, 1046841453, 1034424520);\n\tWS(-1100053422, 1042143034);\n\tsum1 =\n\t\tW(0, -1121193300, 1038907933, 1037214192, -1104157285) + W(1, 1003265009, 927491180, 1027006179, -1101648146)\n\t\t+ W(2, 1052804861, -1116788520, -1105088109, 1036085839)\n\t\t+ W(3, -1116784408, 1051061595, -1092953078, -1115727182)\n\t\t+ W(4, 1044603252, -1112320669, -1124403186, -1096312949)\n\t\t+ W(5, 1063691363, -1094770533, -1110178331, -1132796507)\n\t\t+ W(6, 1032959000, 1021329739, 1057610578, -1085255924) + W(7, 1042273837, -1129217311, 1036096698, -1104405590)\n\t\t+ W(8, 1046101531, 1032460934, -1099699080, 1029210945) + W(9, -1106874909, 1032316755, 1033832353, -1101777344)\n\t\t+ W(10, 1042741769, -1111566277, -1140087089, 1026338531)\n\t\t+ W(11, 1044117027, -1123976854, -1110400285, 1023324661);\n\tsum2 =\n\t\tW(0, -1141740532, -1127364827, 1016858659, 1019476887) + W(1, 1027610232, -1114104878, -1141563308, -1115378106)\n\t\t+ W(2, 1014774982, 1033910688, -1098709711, 1038463125)\n\t\t+ W(3, -1146742484, -1097895309, 1061549017, -1098904537)\n\t\t+ W(4, 1048121474, 1009723338, 1037326381, -1089066292)\n\t\t+ W(5, -1086943216, -1087533486, 1044386108, -1128378528)\n\t\t+ W(6, -1100634945, 1074712949, -1081904953, 1051894188)\n\t\t+ W(7, 1035948687, -1114075451, -1112991637, 1036278807) + W(8, 1016249563, -1105464222, 1034738839, 1023041183)\n\t\t+ W(9, 998071241, 1023404119, -1104500239, 1039001405) + W(10, -1111082062, 1028418264, 1028661660, 1032269699)\n\t\t+ W(11, -1118089334, 1002948788, 1032376859, -1116656881);\n\tWS(1064553004, -1122811923);\n\tsum1 =\n\t\tW(0, -1129171987, 1031404000, 1045766677, -1102182210) + W(1, 1024429036, -1144455651, 1032276908, -1105326008)\n\t\t+ W(2, 1049463355, -1094389820, 1026361994, -1121595412) + W(3, -1113233767, 1049333812, 1036005443, 974120215)\n\t\t+ W(4, 1035186995, 1034062296, 1041762428, -1095271692)\n\t\t+ W(5, 1059787495, -1088583546, -1095666629, -1100003363)\n\t\t+ W(6, -1110071667, 1021654775, 1057980603, -1092394330) + W(7, 1048809333, 1024774373, 1027123610, -1101813124)\n\t\t+ W(8, 1052117804, -1097358280, -1132328890, -1125809241)\n\t\t+ W(9, -1123823416, 1034262350, 1041561742, -1111517243)\n\t\t+ W(10, 1043990330, 1035275874, 1026480898, -1114787413)\n\t\t+ W(11, 1051913520, -1097569834, -1107060706, -1116630377);\n\tsum2 =\n\t\tW(0, 1027128731, -1118374135, 1034513610, -1123174378) + W(1, 1026835315, -1114420605, -1153474964, 1014938475)\n\t\t+ W(2, -1107487108, -1123472496, 1026726549, 1026647445) + W(3, 1032141903, -1106631533, 1042187602, 1054134699)\n\t\t+ W(4, -1092438474, 1008281595, -1114194268, 1049333862)\n\t\t+ W(5, -1091768288, 1082046784, -1066065893, 1032174407) + W(6, 1010972171, -1117272233, 1029258819, 1048672371)\n\t\t+ W(7, -1108402828, -1107223380, -1128303982, 1026850075)\n\t\t+ W(8, -1112584656, 1015595275, -1129520676, 1020663133)\n\t\t+ W(9, 1020076945, -1130317298, 1019094573, -1143083862)\n\t\t+ W(10, 1012988295, 1016020771, -1125252319, 1023253865)\n\t\t+ W(11, 1030375545, -1112246350, 1033146096, -1120189048);\n\tWS(1066855734, -1119441794);\n\tsum1 =\n\t\tW(0, -1127562022, 1039804281, -1090674092, 1057948125) + W(1, -1113289318, 1040603681, -1123770274, -1106380690)\n\t\t+ W(2, -1096623933, 1041520634, -1102744925, -1104646487)\n\t\t+ W(3, -1115364812, 1049486942, -1088928155, 1058254390)\n\t\t+ W(4, -1126493725, 1030330554, -1108591004, 1052921753)\n\t\t+ W(5, -1086271011, 1066610309, -1125400685, 1047144630)\n\t\t+ W(6, -1109630903, 1002857256, -1088126629, 1047590014)\n\t\t+ W(7, -1097419497, -1118729135, 1012450637, 1049080999) + W(8, -1098448030, 1058670697, 1027654745, 1040353710)\n\t\t+ W(9, -1111453929, -1123146086, -1095526376, 1020669183)\n\t\t+ W(10, -1103558716, -1110153949, -1112819014, 1045715313)\n\t\t+ W(11, -1090620137, 1057080301, -1122765265, 1038000005);\n\tsum2 =\n\t\tW(0, 1029773001, 1045848843, -1100354950, 1042255280) + W(1, 1031741567, -1106457511, -1098400772, -1098127734)\n\t\t+ W(2, 985414438, -1114969170, -1101857955, -1121665039) + W(3, 1049403575, 1040542896, -1094506611, 1044461531)\n\t\t+ W(4, 1033605854, -1106685198, -1106957817, -1113384065)\n\t\t+ W(5, 1065317808, 1063282493, -1099888837, -1090380876)\n\t\t+ W(6, 1040180418, -1098054809, -1102424534, -1111953320)\n\t\t+ W(7, -1148110913, -1097784009, -1125940042, 1051521525)\n\t\t+ W(8, 1038107076, 1052337139, -1125555808, 1010307405)\n\t\t+ W(9, -1121768997, -1098090743, 1030043463, -1098581045)\n\t\t+ W(10, 1034608926, -1105861523, 1035657430, 1035815778)\n\t\t+ W(11, -1104826760, 1052586351, -1105779304, -1121200133);\n\tWS(1024108216, 1053619151);\n\tsum1 =\n\t\tW(0, -1110237276, -1117217830, 1029541828, -1116974327) + W(1, 1028000106, 997960357, 1036125123, -1104025987)\n\t\t+ W(2, 1035829669, 1029841740, -1125285423, -1115997186)\n\t\t+ W(3, -1105593599, 1053313098, 1040682969, -1093167724)\n\t\t+ W(4, 1031701731, 1020700860, -1116690717, -1107833238) + W(5, 1058976450, 1049118258, -1094097902, 1017239158)\n\t\t+ W(6, -1138403916, -1112296045, -1104638900, -1102593951)\n\t\t+ W(7, 1055269059, -1122615091, -1118424632, -1108171422)\n\t\t+ W(8, 1053496066, -1123704112, -1100830255, 1029941429) + W(9, -1118568038, 1025019530, 997886569, -1107943218)\n\t\t+ W(10, 1036129823, -1111217181, -1117554448, -1113883668)\n\t\t+ W(11, 1047703644, -1108512765, -1109656827, 1020926429);\n\tsum2 = W(0, -1119993039, -1109450011, 1040401784, -1106582025)\n\t\t + W(1, 1033614749, -1147493015, 1038893624, -1096262037)\n\t\t + W(2, 1053717996, -1117988753, 1000703247, -1114388777)\n\t\t + W(3, -1105602869, 1055566572, 1043380434, -1092886002)\n\t\t + W(4, 1034388956, 1043473668, -1106354535, -1158461197)\n\t\t + W(5, -1105416337, 1072933379, -1081255560, 1043342555)\n\t\t + W(6, 1032998629, -1117939535, -1087999087, -1083385663)\n\t\t + W(7, 1066426555, -1094544057, 998835515, -1108137959) + W(8, 1027244587, 1045359897, -1093783038, 1045623937)\n\t\t + W(9, -1119543359, 1037096144, -1117843291, -1101171319)\n\t\t + W(10, 1051461624, -1102892249, 1026155597, -1114868339)\n\t\t + W(11, 1031605777, 1022787365, -1100938466, 1041102940);\n\tWS(1062840044, 1036517115);\n\tsum1 =\n\t\tW(0, 1027882709, 1024218619, -1088734638, 1057788973) + W(1, 1032695796, -1105941698, -1102360361, -1119309706)\n\t\t+ W(2, 1031157223, 1045291130, -1107257205, 1032367183) + W(3, 1037386637, 1051294017, -1082181941, 1057574554)\n\t\t+ W(4, 1039133128, 1015412087, 1026327034, -1105387538) + W(5, -1087289600, 1064725383, 1024151288, -1102302982)\n\t\t+ W(6, -1102333276, 1045232110, -1089919726, 1056789371) + W(7, -1131902346, 1046746652, 1042539613, 1042423170)\n\t\t+ W(8, -1088061047, 1052153154, 1045762482, -1110282969)\n\t\t+ W(9, -1113170154, -1107171938, -1126992520, -1124580994)\n\t\t+ W(10, -1130270357, -1116552186, -1117867630, 1042893141)\n\t\t+ W(11, -1098512042, -1109192172, 1047580087, 1032060742);\n\tsum2 = W(0, -1128425377, -1106124336, -1106789449, -1116881359)\n\t\t + W(1, -1108203604, -1154187588, 1027402769, -1123408727)\n\t\t + W(2, 1046361983, 1040877836, 1041799035, 1037669599) + W(3, -1122701285, 1035952055, 1033758045, -1092736894)\n\t\t + W(4, -1110885432, -1106801609, 1029460017, -1106291502)\n\t\t + W(5, -1092942672, -1089281400, 1058715791, 1044648045)\n\t\t + W(6, -1128656941, 1034330078, 1022825967, 1067937621)\n\t\t + W(7, 1060265099, -1104725901, 1015114546, -1137130753)\n\t\t + W(8, 1043050798, 1057367901, -1090127289, -1099584998)\n\t\t + W(9, -1131912907, -1151273092, 1026393205, -1100743964)\n\t\t + W(10, -1100147508, -1114467924, 1012677721, -1141059698)\n\t\t + W(11, -1114857397, -1116376233, -1085394823, 1048436512);\n\tWS(-1090906199, 1032077706);\n\tsum1 =\n\t\tW(0, -1133027020, -1114971356, 1042474992, -1109782777) + W(1, 1040233361, -1113511763, -1121893314, 1044790618)\n\t\t+ W(2, -1113284386, 1033127972, -1105262125, 1025873725)\n\t\t+ W(3, 1023318639, -1123234602, 1041326284, -1090554926) + W(4, 1034823031, 1011115622, 1029445080, 1040694938)\n\t\t+ W(5, -1105269270, 1053731809, -1109230339, -1129412204)\n\t\t+ W(6, 1001128051, 1035215242, -1090300845, 1054234875) + W(7, -1098565414, 1038160135, 1034316233, -1102125462)\n\t\t+ W(8, 1049843289, -1098556565, 1042417542, 1018477632)\n\t\t+ W(9, -1103958128, 1043268297, -1131346756, -1121911775)\n\t\t+ W(10, 1026215817, 1009497794, 1035906358, -1122145747)\n\t\t+ W(11, 1025511402, -1113919963, -1122686272, 998364239);\n\tsum2 = W(0, 1010874613, 1030375188, -1115235366, 1049471257)\n\t\t + W(1, -1100352469, 1040126787, 1031993168, -1098558104)\n\t\t + W(2, 1051363302, -1094785947, 1040320218, -1131978284)\n\t\t + W(3, -1110586713, -1116546039, 1056517150, 1031272431)\n\t\t + W(4, -1111763071, -1124433226, 1035954309, -1089737673)\n\t\t + W(5, 1057138262, -1102658594, 1043402933, 1027656919)\n\t\t + W(6, 1034349301, -1094899703, -1098486858, -1112892354)\n\t\t + W(7, 1057577914, -1092308561, -1122071401, 1053685859)\n\t\t + W(8, -1093546729, 1046184196, 1039716432, -1116345243)\n\t\t + W(9, -1140127141, -1108774266, 1034072089, -1109252950)\n\t\t + W(10, -1122970680, 1016915650, 1029284667, -1124583674)\n\t\t + W(11, -1122424073, 1037904141, 958822899, -1140678181);\n\tWS(1065971990, -1117349785);\n\tsum1 =\n\t\tW(0, 1041698888, -1103591502, -1130045402, 1049080916) + W(1, 1009208654, 1021475879, -1112126136, 1043874709)\n\t\t+ W(2, 1044992637, 1047240445, -1121869537, -1134810027)\n\t\t+ W(3, 1034826515, -1101299034, -1083999976, 1060703412)\n\t\t+ W(4, -1123043996, -1144695867, -1129568652, -1186542860)\n\t\t+ W(5, -1081978560, 1061790267, 1028920692, 1017436104) + W(6, -1109843230, 1041410157, -1085461041, 1058214583)\n\t\t+ W(7, -1105683576, -1131209785, 1024013025, -1159955630)\n\t\t+ W(8, -1090063736, 1059365054, 1011681824, -1139574520) + W(9, 1009653886, 1030113747, -1097631850, 1049303674)\n\t\t+ W(10, -1125202109, 1000157667, -1137279078, -1120752640)\n\t\t+ W(11, -1094129699, 1052607100, 1021258909, 1022839599);\n\tsum2 = W(0, -1117014919, -1073720352, -1104300581, 1055286111)\n\t\t + W(1, -1105567211, -1108683793, -1130364155, -1086725672)\n\t\t + W(2, -1091483554, -1109695767, 1032269150, 1033653176)\n\t\t + W(3, -1106662873, 1069712606, 1061376514, -1114136197)\n\t\t + W(4, -1138351682, -1115525434, -1114007102, 1062079613)\n\t\t + W(5, 1060429625, 1052661025, 1018497014, 1043366723)\n\t\t + W(6, 1049348603, -1102930718, -1098979910, -1131131469)\n\t\t + W(7, 1032920333, -1107942477, -1111037227, 1020707077)\n\t\t + W(8, -1091915359, 1050631696, -1117367449, -1139459182)\n\t\t + W(9, 1016435713, -1114426132, 1043583392, -1112682766)\n\t\t + W(10, -1122101547, -1122885189, 1035610526, 1034066723)\n\t\t + W(11, -1091474650, -1112601210, 1039950258, 1026792554);\n\tWS(-1087438700, -1079683283);\n\tsum1 =\n\t\tW(0, 1017584527, -1111085935, -1097724786, 1052950249) + W(1, -1112145065, 1032156829, -1126645293, -1110290014)\n\t\t+ W(2, -1098381907, 1053593812, -1106211842, -1129163939)\n\t\t+ W(3, 1024510860, 1033919541, -1083731542, 1063649365) + W(4, 1003633557, -1118260846, -1126938201, 1049726143)\n\t\t+ W(5, -1081500983, 1059087538, 1023563130, -1120786763) + W(6, 1025818403, 1042036038, -1097215121, 1052548297)\n\t\t+ W(7, 1019377518, -1116189667, -1163276521, -1114444262)\n\t\t+ W(8, -1091706404, 1057898452, -1104008328, 1023503580) + W(9, 1040771729, 1029908410, -1097070911, 1045403069)\n\t\t+ W(10, -1115067299, -1112674412, -1160528892, 1035428627)\n\t\t+ W(11, -1097940968, 1052829673, 1032435766, 1015355644);\n\tsum2 =\n\t\tW(0, 1027460995, -1139353737, -1116062036, -1105887481)\n\t\t+ W(1, 1043084390, -1112909236, -1126036613, -1172793556)\n\t\t+ W(2, 1041340702, 1031879973, -1108443334, -1144584219) + W(3, 1029366028, 1021322407, 1050063273, -1101108606)\n\t\t+ W(4, 1031078409, -1116288208, -1129309981, -1097919394)\n\t\t+ W(5, 1055277098, 1009470709, 1041616760, -1099143154) + W(6, 1020875062, -1121912528, -1106551211, 1047064096)\n\t\t+ W(7, -1107655532, -1100042276, 988377354, 1034370211) + W(8, 1041415105, 1034815104, 1018545561, -1108610892)\n\t\t+ W(9, -1109676838, -1137199485, -1128558209, 1034836242)\n\t\t+ W(10, 1014245687, -1111876576, 1030688918, -1107628664)\n\t\t+ W(11, -1134721053, 1049845283, -1104117922, -1123449114);\n\tWS(1044595630, -1081949232);\n\tsum1 =\n\t\tW(0, 1039675598, -1112185757, -1088266627, -1103352647) + W(1, 1051863744, -1115854735, -1114551286, 1041771076)\n\t\t+ W(2, -1144202605, 1058269731, -1102436935, -1130126796)\n\t\t+ W(3, 1008233858, -1113654239, -1106609306, 1055957016) + W(4, 1041931682, 1017898629, -1121252161, 1036138408)\n\t\t+ W(5, -1087961804, 1060473075, -1105147684, 1041818984) + W(6, 1033942172, 1043328887, -1087619944, 1062639593)\n\t\t+ W(7, 1002098271, -1130413359, -1122512668, 1047911808)\n\t\t+ W(8, -1086197995, 1055667963, -1111264410, 1032948860) + W(9, 1026205083, 1028532559, -1087181441, 1042300482)\n\t\t+ W(10, 1038991809, -1115140949, -1118876117, 1051948425)\n\t\t+ W(11, -1079365891, 1051816684, 1047648830, 1035539513);\n\tsum2 =\n\t\tW(0, 1050752765, -1087877559, -1089125923, 1063798323) + W(1, 1013490077, -1098786735, -1102559074, 1042152886)\n\t\t+ W(2, 1035361880, 1052128007, -1090156566, 1029952535) + W(3, 1004621594, -1095393630, 1058416370, 1062325475)\n\t\t+ W(4, -1094287538, -1116454071, -1106905815, -1106434273)\n\t\t+ W(5, 1058355794, -1120474523, -1101206197, 1025568531) + W(6, 1038134564, -1099723068, 1056388755, 1051681161)\n\t\t+ W(7, -1100293430, 1009033997, -1114858390, 1036662936) + W(8, 1040360076, -1096401119, -1104699402, 997069429)\n\t\t+ W(9, 999530010, -1101776331, -1106345832, -1106373450)\n\t\t+ W(10, 1048788631, -1117506479, -1104442024, 1054232067)\n\t\t+ W(11, 1034476952, -1089943559, -1113690608, 1019208527);\n\tWS(-1082323244, 1081334754);\n\tsum1 =\n\t\tW(0, 1017652669, -1114671162, 1045686283, -1100397239) + W(1, 1040334760, -1120290385, 1026074030, -1101582293)\n\t\t+ W(2, 1051997878, -1097273854, 1036251335, 1010893986) + W(3, 1026308835, -1102225205, 1056290627, -1091487775)\n\t\t+ W(4, 1044247257, -1114193219, -1139023631, -1128122150)\n\t\t+ W(5, -1109179969, 1033600923, 1034603313, 1015477828) + W(6, -1124784756, 1047028384, -1088067773, 1058585755)\n\t\t+ W(7, -1098471302, 1027532986, -1157466090, 1041367009)\n\t\t+ W(8, -1090935975, 1058457225, -1104671877, 1028455628)\n\t\t+ W(9, -1151223253, 1037350457, -1100014755, 1047302995)\n\t\t+ W(10, -1113240670, 1023216600, -1123067319, 1018518877)\n\t\t+ W(11, -1100605637, 1040259816, 1007040336, -1167442276);\n\tsum2 = W(0, 1021161720, 1034310052, 1028060302, -1111691904)\n\t\t + W(1, -1117456161, -1120681063, -1130912565, -1120070653)\n\t\t + W(2, 1057895756, 1060473449, -1103940220, 1030806761) + W(3, -1130074229, 1013066141, 1050008660, 1048707954)\n\t\t + W(4, 1041027109, -1131293055, -1117040706, -1097167140)\n\t\t + W(5, -1077198236, -1071981659, -1101172514, 1009545637)\n\t\t + W(6, 1025588007, -1126989997, 1036249174, 1055589119) + W(7, 1014637039, 1035622377, 1012731209, 1035986228)\n\t\t + W(8, 1061480822, 1068029984, 1014223793, -1130249456) + W(9, -1117264939, 979500482, 1036420478, 1025639810)\n\t\t + W(10, 1027808652, -1120874755, 1035821810, -1131150309)\n\t\t + W(11, -1114248001, -1104930835, -1128414380, 1036288471);\n\tWS(1053726551, 1012659382);\n\tsum1 = W(0, 1032083097, -1106638998, -1098702088, 1047871676) + W(1, 998886703, 1022035144, -1115995457, 1034541187)\n\t\t + W(2, -1098027112, 1032148771, 1042659740, -1112198366)\n\t\t + W(3, 1025061558, -1115280977, -1088652495, 1060231518)\n\t\t + W(4, -1106688851, 1034668492, -1122031383, -1104507249)\n\t\t + W(5, -1092902123, 1065996118, -1104094145, 1024148149)\n\t\t + W(6, 1038196358, -1114143426, -1085882325, 1058126194)\n\t\t + W(7, -1102012910, 1010989620, -1115071689, 1029764374)\n\t\t + W(8, -1097451113, 1059563219, -1121352461, 1012420282)\n\t\t + W(9, -1130575936, 1031225348, -1098237300, 1035470703)\n\t\t + W(10, -1128714910, -1123786037, -1113099877, -1102798468)\n\t\t + W(11, -1111014420, 1054581342, 1000597622, 1024134712);\n\tsum2 = W(0, -1124504165, 1043258069, -1119272862, -1120765402)\n\t\t + W(1, -1132584009, -1130103221, 1044199209, -1105860909)\n\t\t + W(2, -1096303760, 1027333462, -1112573193, 1030769098)\n\t\t + W(3, -1105768285, -1149580326, 1030851358, -1110802573)\n\t\t + W(4, 1028533186, -1111917317, 1030597508, 1054859448) + W(5, 1057797022, 1040041196, 1035436142, 1033418125)\n\t\t + W(6, -1097181409, 1065166573, 1062380695, 1017534493)\n\t\t + W(7, -1141430739, -1140263257, 1040834484, 1012576825)\n\t\t + W(8, -1116955554, -1108797661, 1032147286, -1126074797)\n\t\t + W(9, -1106395293, -1091772000, -1113754765, 1042765191)\n\t\t + W(10, -1113752657, 1020067757, 1038991009, -1077787203)\n\t\t + W(11, -1098893101, -1110880129, -1120959090, -1136443945);\n\tWS(-1091585367, -1096979755);\n\tsum1 =\n\t\tW(0, -1125210148, -1104771642, -1104387016, 1039960904) + W(1, 1043768271, -1127914889, -1121704545, 1041680018)\n\t\t+ W(2, -1093500244, 1056326757, -1114046313, -1113011982)\n\t\t+ W(3, -1120024086, 1043362647, -1085845307, 1060708396)\n\t\t+ W(4, 1022927067, -1140249314, -1106223422, 1048656073)\n\t\t+ W(5, -1086139981, 1060053831, -1105827043, -1132509525) + W(6, 1027649645, 1038801018, 971788283, -1115241635)\n\t\t+ W(7, -1120254754, 1027284814, -1106879908, -1103521718)\n\t\t+ W(8, -1124812374, 1040958787, 1038747748, 1026834103) + W(9, 1033259600, -1106174833, 1011346436, 995843043)\n\t\t+ W(10, -1118768800, -1115807705, -1108105765, 1031226898)\n\t\t+ W(11, -1119913673, 1040930453, 1040461604, 1029803545);\n\tsum2 = W(0, 1007158722, 1004004293, -1123076619, -1109929145)\n\t\t + W(1, -1104848259, 1045822378, -1117465525, 1030693613)\n\t\t + W(2, 1034532408, -1107544976, -1095482533, -1130708853)\n\t\t + W(3, 1020157105, 1007550482, -1101572236, -1110988335)\n\t\t + W(4, -1085485924, 1036333634, -1115575087, 1032793866)\n\t\t + W(5, 1059720067, 1067665797, -1090269083, -1111111456)\n\t\t + W(6, 1029731993, -1104867994, -1112732963, 1048427228)\n\t\t + W(7, -1135504754, -1105802165, -1115951245, -1111503366)\n\t\t + W(8, -1098900155, 1058832170, 1037004208, -1115747431)\n\t\t + W(9, 1042169362, -1101768383, -1132362761, 1029991341)\n\t\t + W(10, -1108400441, -1132122165, -1111020797, 1042858280)\n\t\t + W(11, -1101011815, 1043396912, 1041064016, -1126685993);\n\tWS(1050761175, 1067771859);\n\tsum1 =\n\t\tW(0, 1007679755, -1103008542, -1117542415, 1040506400) + W(1, -1107587308, -1123566389, 1016344868, 1051881455)\n\t\t+ W(2, -1099208581, 1050438683, -1138473483, 1035136294)\n\t\t+ W(3, -1111212068, -1113694143, -1094852820, 1036449755)\n\t\t+ W(4, -1102372368, -1110750261, 1035369236, 1057165115) + W(5, -1086714990, 1067282489, 1045850761, 1047098321)\n\t\t+ W(6, -1114152399, 1030154052, -1087862176, 1049754336)\n\t\t+ W(7, -1112794889, -1108921199, 1027679203, -1119705863)\n\t\t+ W(8, -1098820035, 1030273979, -1111030523, -1158006009)\n\t\t+ W(9, 1024513697, 1037582923, -1101037788, 1048082428)\n\t\t+ W(10, -1114576136, 1025557440, 1023429051, -1106945041)\n\t\t+ W(11, -1098056967, 1020854026, 1000524418, 1029171882);\n\tsum2 =\n\t\tW(0, -1108377721, 1042939389, -1118508723, -1101760284) + W(1, 1037932369, -1111488356, 1043256577, -1092756549)\n\t\t+ W(2, -1136988785, 1050996294, -1104406221, 1040203060)\n\t\t+ W(3, -1098471532, -1140040329, -1099870420, -1098704018)\n\t\t+ W(4, 1015984185, -1103619810, 1048495965, -1094992475) + W(5, 1064902851, 1062859454, -1098855018, 1045571731)\n\t\t+ W(6, -1103576309, 1017276157, 1045749581, -1089477514) + W(7, 1025174042, 1025902034, 1036658009, -1104050853)\n\t\t+ W(8, 1045838269, -1157061765, -1121418697, -1107737652)\n\t\t+ W(9, -1107738492, 1032200565, -1110226959, 1046491511)\n\t\t+ W(10, -1106492592, 1044444185, 1030436882, -1104348148)\n\t\t+ W(11, 1042649061, -1106567852, 1027657606, -1105647758);\n\tWS(1057448172, 1069108917);\n\tsum1 =\n\t\tW(0, 1025232554, -1116799928, -1100727837, 1055215485)\n\t\t+ W(1, -1106508548, -1139419762, -1128422002, -1123655391)\n\t\t+ W(2, 1037047614, -1104723136, 1040448906, 1006660815) + W(3, 1032607415, -1111298160, -1102160962, 1056783106)\n\t\t+ W(4, -1103004521, 1016236833, -1106129908, -1119092894)\n\t\t+ W(5, 1036246919, -1165535249, 1040745899, -1123853933)\n\t\t+ W(6, -1141856298, 1044964179, -1088316592, 1049606186)\n\t\t+ W(7, -1132962087, 1016605067, 1015221011, -1128617181)\n\t\t+ W(8, -1116622467, 1044617768, -1103456342, -1160895193)\n\t\t+ W(9, 1010040610, -1116425884, 1027658969, -1132120236) + W(10, 1037741920, 1018376479, 1026592994, 1015937075)\n\t\t+ W(11, -1102536008, 1042573835, -1118303623, -1120915345);\n\tsum2 =\n\t\tW(0, -1128749003, 1042697161, -1101835107, 1038607216) + W(1, -1108371617, 1031384482, -1091479855, 1061865996)\n\t\t+ W(2, -1097573200, 1026943422, -1114744392, 1026017402)\n\t\t+ W(3, -1124909389, 1067634595, -1083343720, -1110364223)\n\t\t+ W(4, 1035072621, 1036186174, 1030767422, -1111988197)\n\t\t+ W(5, -1090130192, -1089515454, 1054823097, -1104718688)\n\t\t+ W(6, 1028475536, -1102439466, 1055493018, -1090714326)\n\t\t+ W(7, 1059932372, 1024781950, -1118686225, -1117920963)\n\t\t+ W(8, 1027292464, -1101900071, 1031097460, -1110105890) + W(9, -1133507353, 1022976741, 1030733458, 1033968573)\n\t\t+ W(10, -1132241300, 1040128898, 1003197653, 1008285339)\n\t\t+ W(11, 1002427213, 1033064671, -1101772178, 1026666744);\n\tWS(1065065708, -1125796377);\n\tsum1 =\n\t\tW(0, -1112144555, -1106943759, 1017193539, 1048634147) + W(1, -1127916040, -1132404112, 1029634469, 1025116330)\n\t\t+ W(2, -1112668180, 1027133034, 1026809557, 1004217594)\n\t\t+ W(3, -1112840237, -1105630541, -1112954809, 1055950575)\n\t\t+ W(4, -1112907992, -1111964638, 1034269757, -1106751530)\n\t\t+ W(5, -1096457447, 1060800975, -1093799807, 1038388364)\n\t\t+ W(6, -1122801969, 1023923175, -1094266089, 1051425450)\n\t\t+ W(7, -1103940357, -1132895812, -1133240789, 1041797158)\n\t\t+ W(8, -1096385878, 1041695411, 1039766276, 1013909417) + W(9, 1016754760, -1113089188, -1106190977, 1044103184)\n\t\t+ W(10, -1130590086, 1032062573, -1119164014, -1130226634)\n\t\t+ W(11, -1114305030, 1036967948, 1008751883, 992673732);\n\tsum2 = W(0, 1043431555, -1098806978, 1024222598, -1105154239) + W(1, 1031236307, 953732840, -1109692118, 1046643695)\n\t\t + W(2, 1045861043, 1054740901, 1035789437, -1115663935)\n\t\t + W(3, 1036275465, -1097975189, -1101643320, -1083291725)\n\t\t + W(4, 1007109846, 1042301531, -1111890182, 1048664613) + W(5, 1058544270, 1068703829, -1081353417, 1035678115)\n\t\t + W(6, -1102288351, 1049750262, -1098883379, -1080748028)\n\t\t + W(7, 1031821902, -1120166561, 1045724738, -1098934938)\n\t\t + W(8, 1049188212, 1058055770, -1100833476, 1047454611)\n\t\t + W(9, -1109691788, 1032869755, -1107029975, -1100454574)\n\t\t + W(10, 1051695731, -1096856793, 1007408138, -1111259526)\n\t\t + W(11, 1048185689, -1148294292, -1114785167, 1041528279);\n\tWS(1061652844, 1044003957);\n\tsum1 =\n\t\tW(0, -1118715405, 1022617806, 1044034950, -1101088515) + W(1, 1019688911, -1131961856, 1029075868, 1045689305)\n\t\t+ W(2, 1030904095, -1103346936, 1045834099, -1110934572)\n\t\t+ W(3, -1115471369, -1094261862, 1059625182, -1096538237)\n\t\t+ W(4, -1102841294, 1036052922, 1032954233, 1027529537) + W(5, 1057470859, -1086691558, 1041319556, -1148682371)\n\t\t+ W(6, 998963525, -1099266912, 1062131070, -1094363880) + W(7, -1166277444, 1017830866, -1111723799, 1045678528)\n\t\t+ W(8, -1098407445, -1105378993, 1028040508, -1109411965)\n\t\t+ W(9, 1036011862, -1119248992, 1047156095, -1123294521)\n\t\t+ W(10, -1135804811, 1030886475, -1152687195, -1108410990)\n\t\t+ W(11, 1037164834, 1016045215, -1106724595, -1123601124);\n\tsum2 = W(0, -1123087716, -1115107680, 1039737456, 1045652727)\n\t\t + W(1, -1106100707, -1128513463, -1122327585, -1105390433)\n\t\t + W(2, -1106584843, -1139899009, -1102201417, -1114704327)\n\t\t + W(3, 1034911826, 1034185422, 987338697, 1060423005) + W(4, -1111505321, 1009548801, -1115300382, 1042081129)\n\t\t + W(5, -1094697399, -1103292099, -1094374885, 1026056400)\n\t\t + W(6, -1147444258, 1036682846, 1048628369, -1079464406)\n\t\t + W(7, 1066067653, -1112497116, 1031538244, 1043195731)\n\t\t + W(8, -1100913302, -1102260713, 1062702469, -1107096307)\n\t\t + W(9, -1122824244, -1112377777, 1041194171, -1101961861)\n\t\t + W(10, 1013733313, -1125635761, 1026384688, 1024479380)\n\t\t + W(11, 1036768370, -1106123677, 1034543612, 1037241080);\n\tWS(1061983340, -1091535279);\n\tsum1 = W(0, -1154828523, -1133965299, 1043906007, -1118138894)\n\t\t + W(1, -1109842717, 1025343169, 1027504414, -1128653831)\n\t\t + W(2, 1027190112, -1097538828, 1037523079, -1121887129)\n\t\t + W(3, -1131271078, -1114200663, 1061948198, 1027560685)\n\t\t + W(4, -1106988467, 1023298667, -1120408436, -1129743238)\n\t\t + W(5, 1054216086, -1081158944, 1048594270, -1108007945)\n\t\t + W(6, -1131629652, -1117839504, 1062537731, -1089869577)\n\t\t + W(7, -1121464863, 1034422373, -1122568783, 1035797658)\n\t\t + W(8, 1028696552, -1097887897, 1028427349, -1120763036)\n\t\t + W(9, -1165314478, -1115205249, 1045640431, -1111951485)\n\t\t + W(10, -1121440284, 1008081777, 995201141, 1019503421)\n\t\t + W(11, 1044774081, -1105384996, -1119142300, -1122356070);\n\tsum2 = W(0, 995087446, 1036608468, 965233164, 1033021468) + W(1, -1114419070, 1033025046, 1030495116, -1099055008)\n\t\t + W(2, -1104807397, -1107407110, 1033869233, -1119280070)\n\t\t + W(3, 1007114937, -1115487063, -1070882050, 1038417178)\n\t\t + W(4, -1103406865, 1028798922, -1121939088, 1057848194)\n\t\t + W(5, 1075270016, -1094462735, 1051754977, -1120762821)\n\t\t + W(6, -1109334595, -1106051731, 1059573542, 1039375650)\n\t\t + W(7, -1104596666, 1018124826, 1012755199, 1015526929) + W(8, -1102771000, -1124510890, 1028405316, 976567206)\n\t\t + W(9, 1031009559, -1118519790, 1023903156, 1016192349)\n\t\t + W(10, -1111745826, 1015800189, -1123906524, 1024955281)\n\t\t + W(11, -1159976683, 1023974018, 955743793, -1129936862);\n\tWS(1062927532, 1035014202);\n\tsum1 =\n\t\tW(0, 1039522007, -1114736246, 1037103646, -1104897563) + W(1, 1044380938, -1121785378, 1034505951, -1109500450)\n\t\t+ W(2, 1048942600, -1092956200, 1044086236, 1027254073) + W(3, 1040732909, 1011271190, 1053278895, -1091146839)\n\t\t+ W(4, 1044239087, -1145709740, 1002357921, 1044028441) + W(5, -1097469770, -1093973369, 1042916452, 981579331)\n\t\t+ W(6, 1016035605, 1050061010, -1085392865, 1051214559) + W(7, -1112456671, 1035761861, -1122944943, 1042353405)\n\t\t+ W(8, -1094832633, 1050975197, -1111813313, 1033165606) + W(9, 999726956, 1036129025, -1103977959, 1043068615)\n\t\t+ W(10, -1112116510, 1025151372, -1140151454, 1041525964)\n\t\t+ W(11, -1111797875, -1126246883, -1110444494, 1033358643);\n\tsum2 =\n\t\tW(0, 1038528863, -1084044031, -1082440456, 1050939225) + W(1, 1053868195, -1113963371, 1036214533, -1091834288)\n\t\t+ W(2, -1077502553, -1095085693, 1028074081, -1114781385)\n\t\t+ W(3, 1049223347, -1110305241, 1049812579, 1050231565) + W(4, 1046376147, 1035810200, -1113699843, 1042795689)\n\t\t+ W(5, 1068178608, 1060273714, -1132635925, -1160679206)\n\t\t+ W(6, 1041716852, 1050774414, -1092073446, -1115682722)\n\t\t+ W(7, -1098688235, 1036026944, -1100571883, 1043118649) + W(8, 1047476754, -1105112612, 1017697398, 1016345266)\n\t\t+ W(9, 1017295180, 1047177880, 1034666293, 1050691511) + W(10, -1092800689, 1040315316, -1101978327, 1050263507)\n\t\t+ W(11, 1054410728, -1101197699, -1104788145, -1112282035);\n\tWS(-1086906028, 1058773265);\n\tsum1 = W(0, -1132629757, 1044191380, 1032367334, -1096691584)\n\t\t + W(1, -1152318558, -1109034905, 997844200, 1043197109) + W(2, 1050808506, -1095732027, 1042781664, 1031594505)\n\t\t + W(3, 965362145, -1125429564, 1058285756, -1086608026)\n\t\t + W(4, 1034636741, -1119832870, -1106996409, 1033453658)\n\t\t + W(5, 1062016570, -1081591954, 1043388193, -1106441585)\n\t\t + W(6, -1153797548, -1118095697, 1044397873, 1041881517)\n\t\t + W(7, 1045470808, -1149103576, -1120050655, -1121403972)\n\t\t + W(8, 1043993638, -1096430215, -1115428219, -1113585524)\n\t\t + W(9, -1122322046, -1119804562, 1042486572, 1002316636)\n\t\t + W(10, 1018594522, -1135705587, 1015091632, 1026125167)\n\t\t + W(11, 1047754366, -1099777504, 1024196285, -1122333654);\n\tsum2 =\n\t\tW(0, 1048104076, -1096548381, -1107021820, 1018456960) + W(1, -1136070657, -1112321878, 1038532068, -1086001730)\n\t\t+ W(2, -1131935456, 1007620609, 1040453646, 1033875386) + W(3, -1129915388, -1083843015, 1060056432, 1033171254)\n\t\t+ W(4, -1111662792, -1117768272, -1101156186, 1035944594)\n\t\t+ W(5, 1066609131, 1050949241, -1110531416, 1032538050)\n\t\t+ W(6, -1128179824, -1102068111, 1027352212, -1107874139)\n\t\t+ W(7, -1104445548, -1114035189, -1128045264, 1044127780)\n\t\t+ W(8, 1048571914, -1104179329, -1127646596, 1032855260)\n\t\t+ W(9, -1131782160, -1114990278, -1120175088, 1038875644)\n\t\t+ W(10, -1110249452, -1144805954, -1109473444, 1041203218)\n\t\t+ W(11, 1038985844, -1112054433, 1034344442, -1130080864);\n\tWS(1046014126, 1065769758);\n\tsum1 =\n\t\tW(0, 1012096182, -1121314108, -1091239207, 1052142286) + W(1, 1042130570, 1019346753, -1112076254, 1039437825)\n\t\t+ W(2, -1094624040, 1048611696, -1109865911, -1152131961)\n\t\t+ W(3, -1100987245, 1043473803, -1091961473, 1060125676)\n\t\t+ W(4, -1128757714, -1123465492, -1106802021, 1045721640)\n\t\t+ W(5, -1088552177, 1062377804, -1119711185, 1039063160)\n\t\t+ W(6, -1106286530, 1049347084, -1089539427, 1053897896)\n\t\t+ W(7, -1128945819, -1114302645, -1129503003, -1109380841)\n\t\t+ W(8, -1091526873, 1057150062, -1119080717, 1015225093) + W(9, 1021132153, 1049245244, -1091375076, 1048631067)\n\t\t+ W(10, 1034078686, -1135518836, -1112401299, -1120677869)\n\t\t+ W(11, -1088888106, 1057709495, -1122337355, 1014030866);\n\tsum2 =\n\t\tW(0, -1089976447, 1064913799, -1094573985, -1109226965) + W(1, 1030445629, -1115506338, -1078304891, 1068350548)\n\t\t+ W(2, 1019506715, -1120561974, 1021062218, 1018259030) + W(3, -1071851632, 1070575185, 1065710309, 1002672995)\n\t\t+ W(4, -1127826384, 1012290398, -1070679577, 1072673707) + W(5, 1065504629, -1098180006, 1031139735, 995896746)\n\t\t+ W(6, -1081022179, 1063744071, 1056839493, -1117214353)\n\t\t+ W(7, -1112765526, 1010152224, -1113339548, -1128451504)\n\t\t+ W(8, -1124929726, -1111255228, 1037321868, -1118014213)\n\t\t+ W(9, 1011136331, 1040942179, -1106886716, 1028658493) + W(10, -1127063938, 967860273, 1035458322, -1115281660)\n\t\t+ W(11, -1111465381, 1033265670, 1001938923, -1119523230);\n\tWS(-1096468055, 1053785380);\n\tsum1 = W(0, -1110473361, -1116957735, 1034879511, 1017136705)\n\t\t + W(1, -1116669644, -1118632404, 1020813409, -1114360891)\n\t\t + W(2, -1114475674, -1111337627, -1135792006, -1120549867)\n\t\t + W(3, -1111899059, -1123200592, -1109008383, 1028379180)\n\t\t + W(4, -1105125143, -1162426624, 1027946631, -1090968927)\n\t\t + W(5, 1066746382, 1051825655, -1094808947, -1173354793)\n\t\t + W(6, 1003556839, -1107232681, 1064704330, -1094442401)\n\t\t + W(7, -1116312257, -1119514205, -1143096715, -1117882342)\n\t\t + W(8, 1046069775, -1129057075, -1106172505, -1113957025)\n\t\t + W(9, 996386562, -1118523124, 1042611044, -1114700263)\n\t\t + W(10, -1135525501, -1130080208, -1123588698, -1105979736)\n\t\t + W(11, 1040361862, 1022269000, -1106276184, -1123525720);\n\tsum2 =\n\t\tW(0, -1127419095, -1122531649, -1111543417, 1043407189) + W(1, 1013519927, -1134679399, -1140125367, 1025350612)\n\t\t+ W(2, -1108347637, 1028851928, -1117946771, 991440379) + W(3, 1028088432, -1123116186, -1101718819, 1048774619)\n\t\t+ W(4, 1041147594, -1127107007, -1126099139, 1020760995)\n\t\t+ W(5, 1056423339, -1086358248, -1112971994, -1115422093)\n\t\t+ W(6, -1114986450, 1019570567, 1073762237, -1076137651) + W(7, -1118107520, 1037345920, 1024738032, 1039021380)\n\t\t+ W(8, -1100544782, 1044261707, 1015761083, -1103403994)\n\t\t+ W(9, -1114843176, 1018690059, 1049061203, -1099227611)\n\t\t+ W(10, -1111772147, 1042824177, 1023949256, -1119198021)\n\t\t+ W(11, 1026425060, -1123270518, 1027419728, -1129333383);\n\tWS(-1089097708, -1091261619);\n\tsum1 = W(0, -1127316247, 1003986316, -1111263852, 1044425283)\n\t\t + W(1, 1033605983, -1116984894, -1113526029, -1120011361)\n\t\t + W(2, -1112997295, 1047767320, -1118942860, -1121673366)\n\t\t + W(3, -1118797136, 1046355762, -1081822066, 1061869832)\n\t\t + W(4, -1110810403, 1027944882, -1123552881, -1103137072)\n\t\t + W(5, -1100403388, 1058200050, 1009152314, -1124559262)\n\t\t + W(6, -1123795687, -1103576251, 1053114278, -1092855018)\n\t\t + W(7, 1046189751, -1131347855, 1015138359, 1032220600)\n\t\t + W(8, -1138618770, -1160534136, 1031283151, -1118591413)\n\t\t + W(9, -1129675572, -1120446878, 1007314666, 1034662460)\n\t\t + W(10, 1016196275, -1131488026, -1126584008, 1027028747)\n\t\t + W(11, -1123471427, 1018063772, -1128724178, -1122517738);\n\tsum2 =\n\t\tW(0, -1151923233, 1040701127, -1110923755, -1103532415) + W(1, 1041909162, -1121169096, 1026311687, -1109901381)\n\t\t+ W(2, 1024679085, 1016651554, 1036375055, -1135341024) + W(3, 1025121279, 1034378939, -1080291839, -1082840291)\n\t\t+ W(4, -1110170843, 1041541680, -1123775834, -1092342947)\n\t\t+ W(5, 1071256357, 1066054209, -1090243220, -1128413506) + W(6, 1033596173, -1096202739, 1042190483, 1056834874)\n\t\t+ W(7, -1097275958, 1043004954, -1105542037, 1051958537)\n\t\t+ W(8, -1103925783, -1199035157, 1038401459, -1097944284)\n\t\t+ W(9, 1035290939, -1098166743, 1046386099, 1035522294)\n\t\t+ W(10, -1113079432, 1042529081, -1108107550, 1047977685)\n\t\t+ W(11, -1114731953, 1030555165, 1015019440, -1099750845);\n\tWS(1061142188, 1045552914);\n\tsum1 =\n\t\tW(0, 1022384747, 1020461367, 1058732728, -1095805239) + W(1, -1101590238, 1033080372, 1019603337, -1114371061)\n\t\t+ W(2, 1054684529, -1098135841, -1123665301, 1031766591) + W(3, 992843677, -1137489184, 1060634392, -1085459239)\n\t\t+ W(4, 1027392977, -1123755612, 1025369499, -1128616851)\n\t\t+ W(5, 1056292747, -1081060320, -1124699057, -1116775033)\n\t\t+ W(6, -1149984013, -1114859644, 1061516204, -1083596540)\n\t\t+ W(7, 1038698931, 1034158665, 1030794181, -1134916072)\n\t\t+ W(8, 1058073341, -1097701630, -1106352164, -1134014242)\n\t\t+ W(9, -1123167236, -1114858116, 1052882077, 1026645922) + W(10, 1006025241, 1037240581, 1034453383, 1009189588)\n\t\t+ W(11, 1050605022, -1099032542, -1100750969, -1122655396);\n\tsum2 = W(0, 1041010686, 1045355628, -1091459780, -1092997038)\n\t\t + W(1, 1025085151, 1019331790, -1100296712, -1110840017)\n\t\t + W(2, -1109934927, -1109499465, -1110570114, -1115246837)\n\t\t + W(3, 1042377248, 1028443719, -1120459763, 1023984711)\n\t\t + W(4, -1120816159, 1025130703, -1124701214, -1097271182)\n\t\t + W(5, 1068946970, 1068602839, -1090645327, 1036287199) + W(6, 1002573079, -1108318217, 1048538630, 1049236461)\n\t\t + W(7, 1036483715, 1028224647, 1026372231, 1034868187)\n\t\t + W(8, -1095496747, -1112347607, -1110453128, -1106754238)\n\t\t + W(9, -1107309152, 1032249619, -1112114883, -1088682480)\n\t\t + W(10, -1121128467, 1040581836, 1022594646, 1034940919)\n\t\t + W(11, -1096153349, 1036467963, -1105549173, -1106253388);\n\tWS(-1090464684, 1058848194);\n\tsum1 = W(0, 1038070654, 1035807069, 1059156269, -1091590511)\n\t\t + W(1, 1049775661, -1111666744, -1104784595, -1106022588)\n\t\t + W(2, 1027584334, -1104101108, -1100086527, -1128618637)\n\t\t + W(3, -1140651524, -1107342224, 1060192817, -1084437581)\n\t\t + W(4, 1050662239, -1128690758, 1048797564, -1112865880)\n\t\t + W(5, 1062566262, -1088742755, 1037690576, -1097281200)\n\t\t + W(6, -1115845272, -1102596230, 1060113046, -1087393870)\n\t\t + W(7, 1050391262, 1024450616, -1115304422, -1117573217)\n\t\t + W(8, 1043041013, -1095911543, -1117869728, -1151911514)\n\t\t + W(9, 1022142646, 1011767229, 1054886405, -1102839322)\n\t\t + W(10, 1042443855, -1131868338, 1026901973, -1105151431)\n\t\t + W(11, 1057383999, -1088896680, 1039830925, -1104457275);\n\tsum2 =\n\t\tW(0, -1106952896, -1173421195, -1113206734, -1136957987)\n\t\t+ W(1, -1152575873, -1112584615, 1050458431, -1100970530)\n\t\t+ W(2, 1037511626, 1029901269, -1116273053, 1045345833)\n\t\t+ W(3, -1084179073, -1117103305, 1063723378, -1106205415)\n\t\t+ W(4, 1039247706, 1031320371, -1068828969, 1049093414) + W(5, 1078393261, -1105390455, 1034474614, -1099252776)\n\t\t+ W(6, -1082769727, 1015202727, 1065452472, -1128426057) + W(7, 1032907306, 1035573879, 1054525389, -1093960872)\n\t\t+ W(8, -1106048166, 993579659, -1100143257, 1040309898) + W(9, -1098029126, 1043872404, 1031385535, -1114758982)\n\t\t+ W(10, -1155923695, -1124055116, 1038352192, -1107157710)\n\t\t+ W(11, 1030855073, 1034755506, 1034533524, -1124561432);\n\tWS(-1106782638, -1120193880);\n\tsum1 = W(0, 1020741911, -1116040418, 1053259451, -1112821605)\n\t\t + W(1, -1101282812, -1111424287, 1021367862, -1121939617)\n\t\t + W(2, 1050945756, -1100446872, 1049499553, -1129092267)\n\t\t + W(3, 1038644232, -1109539853, 1055524943, -1091353929)\n\t\t + W(4, -1100504250, 1016236516, -1126436322, -1098608828)\n\t\t + W(5, 1065255335, -1085596156, -1101475552, 1033532871)\n\t\t + W(6, 1043522250, -1101880327, 1061719830, -1096552606) + W(7, 1025835692, 1022700239, -1112066734, 993980163)\n\t\t + W(8, 1048874997, -1090468372, -1114054607, -1114668904)\n\t\t + W(9, 1018349205, -1115252655, 1051405991, -1106280862)\n\t\t + W(10, 1027947689, -1147278953, 1033129938, -1133833389)\n\t\t + W(11, 1042923217, -1102788916, -1104899626, 1028803059);\n\tsum2 =\n\t\tW(0, -1113068388, -1115580494, 1039529972, -1091718951) + W(1, -1076395174, 1046645532, 1036673453, 1024834555)\n\t\t+ W(2, -1098466798, 1052150318, -1080701891, -1104586573)\n\t\t+ W(3, -1118880240, -1115483686, 1043501593, 1043613567) + W(4, 1068474066, 1009076111, 1028813378, -1117546792)\n\t\t+ W(5, -1115055672, 1062484975, 1066750300, -1093753132)\n\t\t+ W(6, -1107832014, 1043490929, -1117282076, 1045088246)\n\t\t+ W(7, -1097140180, 1036864955, 1027909744, -1105092918) + W(8, 1042504898, -1094456673, 1049333443, 1022104546)\n\t\t+ W(9, -1122240512, 1040415904, -1107365158, 1030923561)\n\t\t+ W(10, -1109881554, 1033514298, 1011592783, -1119502452)\n\t\t+ W(11, -1112704202, -1123953380, 1043999999, -1115391680);\n\tWS(-1093231703, 1042706757);\n\tsum1 =\n\t\tW(0, 1032826937, 1040624182, 1058499572, -1084803183) + W(1, -1104136529, 1041579305, 1026075841, 1000558899)\n\t\t+ W(2, 1052553144, -1099119122, 1025447538, 1031885534) + W(3, 1032961819, -1110755278, 1061343357, -1083389465)\n\t\t+ W(4, -1114092422, 1032264780, 1036684171, -1127770315)\n\t\t+ W(5, 1062021249, -1081334022, -1112317122, 1018739433)\n\t\t+ W(6, 1034757510, -1106938311, 1060752603, -1087386813) + W(7, -1132554758, 1031902455, 1036416025, 1019575916)\n\t\t+ W(8, 1057695045, -1090036539, -1109030926, 1037874311)\n\t\t+ W(9, 1015758976, -1114624210, 1051786740, -1098198604) + W(10, 1012060669, 1027119072, 1040004261, 1042264396)\n\t\t+ W(11, 1058906011, -1088285503, -1096739300, 1035404188);\n\tsum2 =\n\t\tW(0, -1134545280, 1057942802, -1072425931, -1067197419) + W(1, 1049446840, 1074141781, -1101426979, 1047102485)\n\t\t+ W(2, -1084592242, -1071603316, 1042726179, 1060445087)\n\t\t+ W(3, 1012752443, 1055001204, -1079302223, -1077093049) + W(4, 1050812050, 1060645469, 1036306510, -1096203167)\n\t\t+ W(5, -1123894686, -1098326846, -1129334697, 1037955576)\n\t\t+ W(6, 1034320105, -1114902087, 1062181631, 1072541263)\n\t\t+ W(7, -1097319760, -1094473234, -1111393843, -1096420171)\n\t\t+ W(8, 1062084093, 1067609499, -1093274589, -1087350702) + W(9, 1046638158, -1101073471, 1064536824, 1073214169)\n\t\t+ W(10, 1001153868, -1085693573, -1108867307, -1091559913)\n\t\t+ W(11, 1073505700, 1078744623, -1094526709, -1077663090);\n\tWS(-1075107862, 1049521772);\n\tsum1 = W(0, 1027861131, 1045206278, -1086495609, 1051717721) + W(1, 1033503081, 1031434621, 987763517, 1041173528)\n\t\t + W(2, -1097093508, 1049572700, -1116084523, -1144572069)\n\t\t + W(3, -1129668766, 1032319275, -1086275954, 1055584810)\n\t\t + W(4, 1009361560, -1140119493, 1033675992, 1040210256) + W(5, -1081944455, 1064397290, 995768539, 1027980366)\n\t\t + W(6, 1016072268, 1041485791, -1082045908, 1059363461) + W(7, -1112276757, -1129633421, 992091051, 1044520444)\n\t\t + W(8, -1096923684, 1055988184, -1112468587, 1024276072)\n\t\t + W(9, 1026084697, 1042655839, -1093981119, 1051323143)\n\t\t + W(10, 1005879363, 1000619058, -1120420163, -1112688453)\n\t\t + W(11, -1094413520, 1050124978, 1033578820, 1025196738);\n\tsum2 =\n\t\tW(0, 1033523983, -1091543751, 1048034710, 1051542012) + W(1, 1024239879, 1041022978, -1107297920, -1125142534)\n\t\t+ W(2, 1031510683, -1103344470, -1117305947, -1121264057)\n\t\t+ W(3, -1109353447, -1100365589, 995045613, -1120961303)\n\t\t+ W(4, -1099173366, -1115033235, -1097553497, -1121112319)\n\t\t+ W(5, 1061520608, 1061214811, 1044020024, 1053722991) + W(6, -1102290887, -1119424675, 1042981818, -1094266425)\n\t\t+ W(7, -1093433218, -1097363289, 987526362, -1094244068) + W(8, -1103162896, 1043830132, 1046119446, 1047286054)\n\t\t+ W(9, 1022298470, 1033606211, 1052169844, 1041952964) + W(10, 1043499670, -1106943326, 944749371, -1100627225)\n\t\t+ W(11, -1098189213, 1041818078, -1096785580, 1031561067);\n\tWS(-1097146583, -1102489480);\n\tsum1 = W(0, -1121239074, -1102624204, 1041928668, 1043173384)\n\t\t + W(1, -1118777253, 1016656554, 1035066361, 1033907292) + W(2, -1096659727, 1051162503, -1108685857, 995611334)\n\t\t + W(3, -1110655283, -1104909116, -1123609439, 1057278053)\n\t\t + W(4, -1102566959, 1009112868, 1032257412, -1109600459)\n\t\t + W(5, -1091326393, 1050132159, -1100309385, 1037330963)\n\t\t + W(6, 1020382076, -1113387282, -1105975127, 1049365769)\n\t\t + W(7, -1101876333, -1111738159, 1014217354, -1114213060)\n\t\t + W(8, -1098203983, 1049080395, 1040792061, 1033561904) + W(9, 1032256145, -1114763275, 1045101428, 1033542535)\n\t\t + W(10, -1121020400, -1149295615, -1120529307, -1123950514)\n\t\t + W(11, -1093952115, 1055699093, 1035959564, -1122689753);\n\tsum2 =\n\t\tW(0, 1030001048, 1039849292, -1106927121, 1046837828) + W(1, -1131959957, -1116147800, -1107119695, -1106305989)\n\t\t+ W(2, 1060202814, -1095733546, 1012779430, -1124391765) + W(3, 1023713698, 1019090837, -1104587624, 1043085465)\n\t\t+ W(4, 1026454649, 1028873647, -1115026335, 1035696383) + W(5, 1057308499, 1053508746, 1038120705, -1104339358)\n\t\t+ W(6, 1024715164, 1036481868, 1047684818, 1034862818) + W(7, 1037173687, 1045294658, -1112691697, 1023388499)\n\t\t+ W(8, -1112160637, 1046794790, -1101425448, -1119391248)\n\t\t+ W(9, 1024758511, -1146519572, -1093257675, -1094465043)\n\t\t+ W(10, 1036335613, -1156574008, -1147275412, -1112564365)\n\t\t+ W(11, 1041456307, -1083960309, -1094791365, 1012709310);\n\tWS(1057303084, -1084740383);\n\tsum1 =\n\t\tW(0, 1025949163, -1105987664, 1034968156, -1097863693) + W(1, 1046214631, -1130932027, 1023904890, -1104417576)\n\t\t+ W(2, 1048292239, -1093717272, 1042713619, -1126920426)\n\t\t+ W(3, 1033327896, -1097440039, 1057303604, -1088500414) + W(4, 1043920086, 1012093510, 1022060320, -1106403568)\n\t\t+ W(5, -1134851644, 1058205452, 1041892896, 1040636140) + W(6, -1131905805, 1043670267, -1082452830, 1059877080)\n\t\t+ W(7, -1101986947, 1028551783, -1114170862, 1041763972)\n\t\t+ W(8, -1089247692, 1058731430, -1107457363, 1041063330) + W(9, 1021513971, 1037885311, -1093401571, 1046703382)\n\t\t+ W(10, -1110573172, -1143718184, -1109381346, 1019385429)\n\t\t+ W(11, -1097845612, 1049842950, 1031126152, 1016340900);\n\tsum2 =\n\t\tW(0, -1097593869, -1100989715, 1026566131, 1061153405) + W(1, 1050695083, -1095509343, 1040446621, 1036240143)\n\t\t+ W(2, -1100851860, 1047874592, -1096668864, 1040237386)\n\t\t+ W(3, -1107347821, -1105186205, 1046892012, -1103469514)\n\t\t+ W(4, -1104864053, -1114614656, 1036994425, -1119554977)\n\t\t+ W(5, 1069594194, 1074408805, -1103368475, 1040210470) + W(6, 989701019, 1048367016, -1107809286, -1110319007)\n\t\t+ W(7, -1100341899, -1105386934, 1043906150, -1095197585)\n\t\t+ W(8, 1031148367, -1079941721, -1084422687, 1031716423) + W(9, 1040271244, -1102913875, 1038853877, 1042791078)\n\t\t+ W(10, -1093040701, 1036206107, 1016581730, 1041272891)\n\t\t+ W(11, -1105136265, -1086296266, -1099178193, 1042594729);\n\tWS(-1085311468, 1078025451);\n\tsum1 =\n\t\tW(0, -1114246985, 1033236492, -1126048573, 1051596674) + W(1, -1110129580, -1109388771, -1123523234, 1042717314)\n\t\t+ W(2, -1100167817, 1050764301, -1101525701, 1021849401)\n\t\t+ W(3, -1123774423, 1046675224, -1090923842, 1057423711) + W(4, -1102550347, 1031509177, 1017942127, 1030027079)\n\t\t+ W(5, 1002547123, -1138337956, -1117387765, -1126623147)\n\t\t+ W(6, 1018695644, -1107516674, 1061445386, -1085962671)\n\t\t+ W(7, 1045061525, -1118825262, -1134274761, -1105985470)\n\t\t+ W(8, 1051174149, -1101362115, 1037275627, -1107617348) + W(9, 973249598, -1118366597, 1032724353, -1098415672)\n\t\t+ W(10, 1033244340, -1124427728, 1032511109, -1108369993)\n\t\t+ W(11, 1047097650, -1105953621, 1025818592, -1115961017);\n\tsum2 =\n\t\tW(0, -1123353384, -1131031713, 1029311455, 1047725718) + W(1, 1051601031, -1113968956, 1030359787, -1114557735)\n\t\t+ W(2, -1123787418, 1042470619, -1121374979, 1045218010)\n\t\t+ W(3, 1024787123, -1125418898, -1099438470, -1106551206)\n\t\t+ W(4, 1049816965, 1044805763, 1015567503, -1132430472) + W(5, 1049323738, -1097880179, -1088308991, 1039658119)\n\t\t+ W(6, -1115408082, 1029672716, 1042547290, -1089568094)\n\t\t+ W(7, -1098255621, 1042126156, 1026077135, -1118070691)\n\t\t+ W(8, 1050505809, -1166364565, 1026888229, -1115384233)\n\t\t+ W(9, -1137211259, -1125125186, -1110579463, -1115324497)\n\t\t+ W(10, -1112338809, 1043221816, 1015951538, -1135395683)\n\t\t+ W(11, 1040847724, 1028809582, -1102185033, 1014731468);\n\tWS(1060142060, 1042832150);\n\tsum1 =\n\t\tW(0, 1031397804, 1036648197, 1052129567, -1093104885) + W(1, -1125587404, 1030014814, -1121488955, -1142445829)\n\t\t+ W(2, 1051097024, -1094159296, -1138833071, 1024131190)\n\t\t+ W(3, 1033996248, -1117943062, 1054892021, -1086111346) + W(4, 1028704007, 1024270930, 1018827426, -1111782928)\n\t\t+ W(5, 1065668620, -1081757070, 1032794495, -1123778927)\n\t\t+ W(6, -1131717262, -1108508447, 1059881804, -1087336873)\n\t\t+ W(7, 1047817147, 1022586319, 1033609702, -1106903604)\n\t\t+ W(8, 1058770516, -1090845580, -1104469332, -1125662417)\n\t\t+ W(9, 1010765225, 1015606653, 1050176059, -1100487494) + W(10, 1038701961, 1032196289, 1029196868, -1115637854)\n\t\t+ W(11, 1054801908, -1126749404, -1091639031, 1019613157);\n\tsum2 =\n\t\tW(0, 1016709191, 1043282989, -1105914972, -1104055195) + W(1, -1113893232, 1031619176, 1013621039, -1105412866)\n\t\t+ W(2, 1048947993, 1038685325, -1143937773, -1128320153)\n\t\t+ W(3, -1134054043, 1034830675, -1104630078, -1084033248)\n\t\t+ W(4, -1103493551, 990218298, 1033829499, -1123744731)\n\t\t+ W(5, -1088942993, -1072142874, -1098435347, 1026126526)\n\t\t+ W(6, -1133247239, -1107183956, -1093767876, 1073971039)\n\t\t+ W(7, 1052470850, 1042783259, 1014723479, -1110083630) + W(8, 1055362845, 1076386430, -1104225446, -1103699955)\n\t\t+ W(9, 1025542948, -1115844306, -1111303066, -1098251720)\n\t\t+ W(10, 1051939911, -1123473137, -1113297030, -1097083153)\n\t\t+ W(11, 1064727508, -1090433741, -1091328171, 1025388740);\n\tWS(-1086199532, 1054743650);\n\tsum1 = W(0, 1034444474, 1032011277, 1048862696, -1097849454) + W(1, 1006964268, 1027368614, 1027498242, -1095519909)\n\t\t + W(2, 1053262121, -1090625833, 1040908045, -1113781807)\n\t\t + W(3, 1040848158, -1107222607, 1061389071, -1084999869)\n\t\t + W(4, 1038795271, -1118338586, 1023783640, -1152811127)\n\t\t + W(5, 1030342167, -1113365765, 1038235355, -1108967739) + W(6, 999869046, 1044283945, -1084989084, 1060145155)\n\t\t + W(7, -1104327823, 1006059384, -1115850147, 1044573214)\n\t\t + W(8, -1095010778, 1054594461, -1101807134, 1028815960)\n\t\t + W(9, 1025498402, 1036275699, -1106712265, 1045643928)\n\t\t + W(10, -1122717633, -1124545277, -1134397103, -1123084051)\n\t\t + W(11, 1032418005, 1033574715, 1015954881, -1135640905);\n\tsum2 =\n\t\tW(0, -1098769930, 1042608106, -1101852353, -1093087039) + W(1, -1139600545, 1036192806, 1041383757, -1089209738)\n\t\t+ W(2, -1121408570, 1038811718, -1093098827, -1121276186)\n\t\t+ W(3, 1031909130, -1102323575, -1108783974, -1089123880)\n\t\t+ W(4, -1121335963, 1045867083, 1040055926, -1105226719) + W(5, 1065973699, 1069194195, -1098519743, 1023817866)\n\t\t+ W(6, -1112037460, -1124786133, 1049738412, 1026907074)\n\t\t+ W(7, -1089198426, 1042688929, 1040275414, -1117623756)\n\t\t+ W(8, 1057999228, -1106112227, -1101165651, -1122635193)\n\t\t+ W(9, -1111784639, -1131302943, -1111524780, 1020629449)\n\t\t+ W(10, -1109243346, 1041146873, -1113621249, 1048083051)\n\t\t+ W(11, 1025491254, -1107530612, 1048264427, -1095495518);\n\tWS(-1090983255, -1089207473);\n\tsum1 =\n\t\tW(0, 1011536056, -1126565928, 1055178415, -1101680475) + W(1, -1102945718, 1026884961, 1031895551, -1113602338)\n\t\t+ W(2, 1054038520, -1097154360, -1121652462, 990918528)\n\t\t+ W(3, -1113368985, -1111099810, 1055473117, -1089575247) + W(4, 994604183, 1022227241, 1041335941, -1099647257)\n\t\t+ W(5, 1064470249, -1084973552, -1121284913, -1151944468)\n\t\t+ W(6, -1112820133, -1102367072, 1063942234, -1086493203)\n\t\t+ W(7, 1041044307, -1119623498, 1033755607, 1030939267) + W(8, 1050197537, -1097159533, -1111487017, 1029397803)\n\t\t+ W(9, -1120463213, -1111909392, 1058279198, -1096914715)\n\t\t+ W(10, 1017418960, -1127714823, 1029129223, 1034973975)\n\t\t+ W(11, 1042393881, -1096995926, -1111098786, 1024652821);\n\tsum2 = W(0, 1008868714, -1138668162, 988655570, -1108603395) + W(1, 1033342078, 1018452757, 1000134020, 1023930211)\n\t\t + W(2, -1099344177, 1041622837, 1025638720, -1115444075)\n\t\t + W(3, -1131179173, -1108628571, -1064898888, -1131013053)\n\t\t + W(4, -1133763810, 1023801183, 1026383992, -1114490385)\n\t\t + W(5, -1066369231, -1087427617, 1033730604, -1118168395)\n\t\t + W(6, -1108980541, 1047990867, 1075540559, -1095163420)\n\t\t + W(7, -1117896039, 1033324797, 1033178726, 1030525898) + W(8, 1086324754, 1057379348, 1031531103, -1116567631)\n\t\t + W(9, -1113100227, -1131668265, 1049763634, 1040828448)\n\t\t + W(10, -1119632759, 1028372534, 1025874080, -1138114226)\n\t\t + W(11, -1100090533, -1109206595, 1025251971, -1128577333);\n\tWS(-1109283164, -1114463829);\n\tsum1 = W(0, 1026307305, 1048505142, 1056046207, -1087851802) + W(1, -1097387850, 1043738183, 1010065376, 1006853751)\n\t\t + W(2, 1051849183, -1096622464, 1034233556, 1033008793)\n\t\t + W(3, 1036887575, -1122796048, 1060373686, -1086026376)\n\t\t + W(4, -1106692609, 1030721871, 1032762791, -1121781501)\n\t\t + W(5, 1062361681, -1080983673, -1116217316, 1031320492)\n\t\t + W(6, 1038442146, -1106474773, 1060935143, -1086759863)\n\t\t + W(7, -1136008963, 1024808165, 1036926348, -1140109366)\n\t\t + W(8, 1058739944, -1088322398, -1111740214, 1037732587)\n\t\t + W(9, 983730417, -1113784606, 1052729243, -1098544579) + W(10, 973353381, 1028455576, 1042339968, 1033209828)\n\t\t + W(11, 1060958338, -1085562739, -1098996574, 1032429188);\n\tsum2 = W(0, 1033103311, -1088826877, 1076551262, 1082157528)\n\t\t + W(1, -1088761642, -1073488400, 1036675590, -1093870598)\n\t\t + W(2, 1064863709, 1075036637, 1044533603, -1083381518) + W(3, 1035316039, -1096260803, 1066303868, 1074566779)\n\t\t + W(4, -1088656095, -1087052440, -1139597621, 1038770367)\n\t\t + W(5, 1054257493, 1054121358, -1096732938, 1034260530)\n\t\t + W(6, -1104037187, -1120383141, -1086745184, -1075712309)\n\t\t + W(7, 1026461691, 1055295113, 1036924272, 1054470917) + W(8, -1080791393, -1075955022, 1058516172, 1062460380)\n\t\t + W(9, -1111374359, 1048854624, -1081541832, -1073360354)\n\t\t + W(10, 1036676016, 1061463967, 1033604811, 1052968175)\n\t\t + W(11, -1074269835, -1068055688, 1036957577, 1072405502);\n\tWS(-1073690779, -1087724268);\n\tsum1 = W(0, 1020006630, 1040645890, 1037569760, 1040537741) + W(1, -1102207443, 1011752087, 944113971, 1024788392)\n\t\t + W(2, 1033313762, 1022063376, -1117962707, 1010250996) + W(3, 1028328440, 1048604230, 1026748704, 1037819609)\n\t\t + W(4, 1018608989, 1035208397, 1026519064, -1124203663)\n\t\t + W(5, -1097395091, -1081034849, 1030158086, -1107990331)\n\t\t + W(6, 1023877839, 1026558293, 1058432566, -1089181115) + W(7, 1048090929, 1030700463, 1026744019, -1108217132)\n\t\t + W(8, 1052406658, -1095782133, 1028902900, -1115106384)\n\t\t + W(9, -1116930962, 1024907750, 1046357449, -1103915032)\n\t\t + W(10, 1040820950, 1006665970, 1037411798, -1124509669)\n\t\t + W(11, 1052615509, -1095058991, 1037074644, -1120315546);\n\tsum2 =\n\t\tW(0, 1036147454, 991782552, -1100036784, -1102354425) + W(1, -1132125723, 1037581214, -1115074830, 1025479068)\n\t\t+ W(2, -1096384442, 1031211776, -1114551496, -1107514244)\n\t\t+ W(3, -1143660011, -1111873890, 1042154750, -1098733186)\n\t\t+ W(4, -1120425773, 1036528495, -1109526737, 1054093522) + W(5, 1036720443, 1061883500, 1042458762, -1113752408)\n\t\t+ W(6, -1113309480, 1016478163, 1015496998, 1040999099) + W(7, -1118319659, -1131440878, 1006285882, 1035621794)\n\t\t+ W(8, -1111840809, -1099055155, 1021928735, 1009305230)\n\t\t+ W(9, -1115649745, 1027286665, 1028637267, -1117281017)\n\t\t+ W(10, -1113807339, -1115311515, 1026243607, -1108696429)\n\t\t+ W(11, 1024623035, -1120753705, 1033776741, -1117838632);\n\tWS(1053167575, 1034582410);\n\tsum1 =\n\t\tW(0, 1023109013, -1135820801, -1107146278, 1042183330) + W(1, -1106326923, 1038375967, -1105499654, 1041430288)\n\t\t+ W(2, 1045138183, 1015167422, 1048594337, -1103059717) + W(3, 1047073940, -1099071824, 1006706653, -1110119411)\n\t\t+ W(4, -1101264321, 1036901240, -1103829756, 1051022760)\n\t\t+ W(5, -1098544246, -1114407921, 1042439875, 1019390619)\n\t\t+ W(6, -1134567319, -1103780951, 1035133548, 1029794991)\n\t\t+ W(7, -1115149997, -1122256838, 1029509866, 1038026111)\n\t\t+ W(8, -1101742889, 1025810371, -1124355817, 1039002364)\n\t\t+ W(9, -1107075490, -1144576488, 1040882462, 1020673517)\n\t\t+ W(10, -1133994400, -1113322768, 1028951523, 1034415069)\n\t\t+ W(11, -1110494113, -1144644710, 1017843520, 1025775953);\n\tsum2 = W(0, 1007469645, -1127684796, 1026289720, -1134400734)\n\t\t + W(1, -1121586613, 1012304630, 1024932078, -1122451669)\n\t\t + W(2, 1029479215, -1114161855, 1018968072, 1018258842) + W(3, -1123529450, 934668744, 1048216767, -1092503803)\n\t\t + W(4, 1055026065, -1105610792, -1106895484, 1046133075)\n\t\t + W(5, -1101979386, -1118826374, 1057475450, -1091642753)\n\t\t + W(6, -1154152567, 1050482770, -1086100405, 1054881826)\n\t\t + W(7, 1057991283, -1094138317, 1026396887, -1100501045)\n\t\t + W(8, -1104578417, 1054831843, 1037697257, -1097381938)\n\t\t + W(9, 1034932657, -1112663810, -1110628430, 1037309396)\n\t\t + W(10, 1041220013, -1108645190, -1118589447, -1145059796)\n\t\t + W(11, -1120799353, 1034243151, 1035239909, -1109776821);\n\tWS(1065106092, 1009251236);\n\tsum1 = W(0, -1127594260, -1119086128, -1106710454, 1041658930) + W(1, 1028936149, 999711717, 1015119794, 1041681344)\n\t\t + W(2, -1108480942, 1053952044, -1098626929, -1128362792)\n\t\t + W(3, -1105935716, 1038033220, -1085761952, 1059673337)\n\t\t + W(4, -1106493133, 1030156593, 1030756271, -1103164984)\n\t\t + W(5, 1048660750, 1035410928, 1042075767, -1105711219)\n\t\t + W(6, 1015463627, -1097628571, 1062385221, -1083076739)\n\t\t + W(7, 1048795361, -1109139763, 1033714469, -1096661826)\n\t\t + W(8, 1057312254, -1097132616, 1042769246, -1109546740)\n\t\t + W(9, -1121831017, -1162082196, 1045270286, -1100422942)\n\t\t + W(10, 1033263484, -1128821631, 1032817313, 1037645501)\n\t\t + W(11, 1038003425, -1134248242, -1109564844, -1113038632);\n\tsum2 =\n\t\tW(0, 1026504012, -1111982251, -1115575890, 1025515301) + W(1, 1038047283, -1121134093, -1115537349, -1109318355)\n\t\t+ W(2, 1037274256, 1036029355, -1140512157, -1118959675)\n\t\t+ W(3, 1004448402, -1126991046, 1032461625, -1105715099) + W(4, 1031934837, 966777949, -1120289237, -1114485349)\n\t\t+ W(5, 1046084064, 1035923056, -1127252256, 1001443794) + W(6, -1116193727, 1031030421, -1104386736, 1039615788)\n\t\t+ W(7, 1008094609, -1126229172, 1023273402, 1036795295) + W(8, 1033981186, 1034803763, -1108137243, 999509622)\n\t\t+ W(9, -1106169890, 1038895038, 1034486696, -1111316562)\n\t\t+ W(10, 1013721630, -1115420717, -1116296115, 1037382021)\n\t\t+ W(11, 1014573341, -1126611440, -1109430807, -1121268263);\n\tWS(1058235500, 1054922309);\n\tsum1 = W(0, -1126843838, -1110452882, -1096439037, 1054965252)\n\t\t + W(1, -1126708475, -1113819273, -1115091447, 1026999796)\n\t\t + W(2, -1109530936, 1035486938, 1040994960, -1112039092)\n\t\t + W(3, 1037063794, 1027596138, -1126567064, 1052521111) + W(4, 1048136923, 1029145158, -1097782353, 1043595317)\n\t\t + W(5, -1080972858, 1054616871, -1135709192, -1103625129)\n\t\t + W(6, 1017345397, 1026915457, -1087153329, 1059777872)\n\t\t + W(7, -1117730271, -1113712109, -1106496120, 1051692426)\n\t\t + W(8, -1092439359, 1055199219, 1025849689, -1133876016)\n\t\t + W(9, -1124168315, 1033470169, -1096481402, 1049045985)\n\t\t + W(10, -1109862614, -1120397392, -1111050604, 1047889704)\n\t\t + W(11, -1101856358, 1042302776, 1048178521, 1018059916);\n\tsum2 =\n\t\tW(0, 1032658614, -1104671284, 1033357456, -1107649550) + W(1, -1107785448, 1014985523, 1026047005, 1026757765)\n\t\t+ W(2, -1146410551, -1093450531, 1045006287, -1108588814)\n\t\t+ W(3, 1016793814, -1106565422, -1129670058, 1029536101) + W(4, 1032863350, -1114405495, 979115576, 1040092458)\n\t\t+ W(5, 1049738304, 1048902638, 1031141497, 1032866808) + W(6, 1025048255, -1118382609, 1047130549, 1043845633)\n\t\t+ W(7, 1024835039, -1128051766, -1120340424, 1024555245) + W(8, -1099524683, 1031379649, 1016575718, 1011865867)\n\t\t+ W(9, -1124528004, -1115048442, -1114147283, 1015256822)\n\t\t+ W(10, -1115840886, 1016407002, -1113479651, -1102456829)\n\t\t+ W(11, -1143577495, 1032535412, -1140327483, -1121997281);\n\tWS(1050344663, 1040331465);\n\tsum1 =\n\t\tW(0, -1119034750, -1123846924, 1038870821, 1016005498) + W(1, -1113185550, -1180899430, 1027008397, 1032620906)\n\t\t+ W(2, -1145305726, -1104369525, 1047408652, -1117862216)\n\t\t+ W(3, -1123135107, -1107606109, 1045963311, -1101093248)\n\t\t+ W(4, -1106188838, 1031141157, 1034001074, -1113228665) + W(5, 1055978044, -1091899011, 1019406818, 1025902913)\n\t\t+ W(6, -1165785906, -1104523524, 1061494191, -1089807144)\n\t\t+ W(7, -1133495032, 995937181, -1109811775, 1044228977) + W(8, 994921841, -1100340494, 1039673315, -1126170822)\n\t\t+ W(9, 1012082163, -1136436803, 1043858443, -1113047285)\n\t\t+ W(10, 1003314783, -1155810234, 1021442477, 1015486907)\n\t\t+ W(11, 1032566715, -1121306753, -1110918342, 1012720916);\n\tsum2 = W(0, 1017323653, 1006857268, 1027026905, -1096858156) + W(1, 1057582691, -1108630874, 983063098, 1027629321)\n\t\t + W(2, 1041250623, -1096058068, 1069736593, -1103954988)\n\t\t + W(3, -1124332548, 1040636195, -1098379711, -1081757810)\n\t\t + W(4, -1098564102, 1039138402, -1136855038, 1050922570)\n\t\t + W(5, -1095854749, 1046692173, -1092586095, 1040290673)\n\t\t + W(6, 1038193266, -1107256285, -1124475180, 1055388353)\n\t\t + W(7, -1101296593, 1026430908, -1115428487, 1024268384)\n\t\t + W(8, -1107079153, 1044471504, -1099842491, -1135051275)\n\t\t + W(9, 1037749325, -1105738834, 1035306909, 1018283467)\n\t\t + W(10, -1130236866, -1127494735, -1162541650, -1112368096)\n\t\t + W(11, 1041041721, 1034757871, -1116072515, -1128054004);\n\tWS(1064629676, -1098084920);\n\tsum1 =\n\t\tW(0, 1033302207, 1017516913, 1037844037, 1004101612) + W(1, -1100831258, 1023773169, 1017176603, 986968687)\n\t\t+ W(2, 1048067236, -1094217842, 1032944847, 1036346276) + W(3, 1043155505, -1093133598, 1059745345, -1107275372)\n\t\t+ W(4, -1118901210, -1109611315, 1036523218, -1136867787)\n\t\t+ W(5, 1054752956, -1083111259, -1111571193, 1036061697)\n\t\t+ W(6, -1135635048, -1099849236, 1054803234, 1036740290)\n\t\t+ W(7, -1104247276, -1130856180, 1036902751, -1112073298)\n\t\t+ W(8, 1049105955, -1089373007, 1044914424, -1178541510) + W(9, -1154473427, 1015173986, 1045303547, 1007182507)\n\t\t+ W(10, 1032262742, 1028817260, 1031815708, -1108314079)\n\t\t+ W(11, 1049045791, -1096296960, 1028425028, -1121119813);\n\tsum2 = W(0, 1031116538, -1106561538, 1041324255, -1097318271) + W(1, 1038093550, 1003684433, 1018758860, 1041892626)\n\t\t + W(2, -1122918288, 1050772655, -1113042451, 1005733025)\n\t\t + W(3, -1093507837, 1060901401, -1090730175, -1089173269)\n\t\t + W(4, -1103574570, 1036702490, -1142239225, -1094547881)\n\t\t + W(5, 1059998586, 1050575163, -1096117806, 1007559836)\n\t\t + W(6, 1008547208, 1048344650, -1105692057, -1105982083)\n\t\t + W(7, 1045224094, -1111284039, -1115133937, -1106548880)\n\t\t + W(8, -1107738784, 1062167006, -1093777588, 1032209739)\n\t\t + W(9, 1037272918, 1031802380, -1109731964, -1115007264)\n\t\t + W(10, 1040225760, -1119496571, -1116833334, 1032935937)\n\t\t + W(11, -1105354579, 1051274636, -1097190188, 1039213738);\n\tWS(1059570988, -1104849743);\n\tsum1 = W(0, 1015935639, -1105217736, -1100062838, 1055580097)\n\t\t + W(1, -1114680436, 1027695934, -1114327981, -1117057793)\n\t\t + W(2, -1095539196, 1051203348, -1104422643, -1122995670)\n\t\t + W(3, 1032097032, 1045549308, -1097913193, 1057098153) + W(4, 1035503236, 1026067698, -1100671580, 994695167)\n\t\t + W(5, -1081463016, 1065307314, -1100709080, -1115820943)\n\t\t + W(6, -1118415719, 1019924475, -1088685699, 1060408535)\n\t\t + W(7, -1100882497, -1121911751, -1146837726, 1044124420)\n\t\t + W(8, -1103538521, 1060044676, -1127513406, 1040976712)\n\t\t + W(9, -1128662677, -1133264506, -1090424260, 1048658511)\n\t\t + W(10, -1106885414, -1109730008, -1106017873, 1026902699)\n\t\t + W(11, -1096642336, 1058793797, -1112552037, 1032897105);\n\tsum2 =\n\t\tW(0, -1101738300, -1102635520, 1049960021, -1107186076) + W(1, 1031463651, -1109595133, 1026251680, 1042860418)\n\t\t+ W(2, 1045813894, 1037904592, 1043360780, 1032162510) + W(3, -1096487254, -1118004862, 1012147620, -1101520598)\n\t\t+ W(4, -1099464580, -1144663840, -1097132336, -1097577131)\n\t\t+ W(5, 1062244087, 1050699569, 1042220045, 1017587638) + W(6, -1103125896, 1034939290, 1030928730, -1118944274)\n\t\t+ W(7, -1129575892, -1122088198, -1098301296, -1107323885)\n\t\t+ W(8, 1018590462, 996952385, -1143727552, -1112243029) + W(9, -1145491968, 1046219299, 1042676852, -1132230456)\n\t\t+ W(10, 1038679603, 1028948530, -1102991820, -1101571742)\n\t\t+ W(11, 1048890187, -1120981264, 1022002534, -1108091801);\n\tWS(-1095386967, -1111219145);\n\tsum1 =\n\t\tW(0, 989878260, 1046105185, 1042696371, -1089927208) + W(1, -1127509006, 1030962098, -1130549149, -1114353482)\n\t\t+ W(2, 1044731284, -1092958347, 1029760895, 1015099027) + W(3, 1027494660, -1126247292, 1059356463, -1090136954)\n\t\t+ W(4, -1123276603, 1002268463, 1027516453, -1101798869)\n\t\t+ W(5, 1066759339, -1086407791, -1134143337, 1008759050)\n\t\t+ W(6, -1138329195, -1109199416, 1060963410, -1086208082)\n\t\t+ W(7, 1037957160, 1030926587, 1029536895, -1149170463) + W(8, 1056388995, -1087382795, 1028489291, 1024487352)\n\t\t+ W(9, 1016226972, -1110945897, 1052477254, -1099705531) + W(10, 1033794703, 1027177352, 1031794584, 1041043200)\n\t\t+ W(11, 1048385630, -1090430272, -1116367629, -1155852515);\n\tsum2 = W(0, 1037152773, -1107393101, -1107499267, -1071982339)\n\t\t + W(1, 1050177526, 1034063245, -1155239869, -1118272906)\n\t\t + W(2, -1123365743, -1066777138, -1099174901, -1111285661)\n\t\t + W(3, -1110337901, -1121008946, 1053226346, 1065602467)\n\t\t + W(4, -1114100047, -1111810642, 1031799544, 1040803769)\n\t\t + W(5, -1091451910, 1078719649, 1051522302, 1032887971) + W(6, -1115579003, 1040826838, 1036591998, 1072207876)\n\t\t + W(7, -1112448128, -1105619991, 1027082675, -1129277077) + W(8, 984589146, 1012365693, 1036247818, 1027337883)\n\t\t + W(9, -1125050611, 1044810576, -1111221822, -1114663567)\n\t\t + W(10, 1024897040, -1128259763, 1027786160, -1128372019)\n\t\t + W(11, -1115106721, 1027240586, 1010421237, -1110086921);\n\tWS(-1090330604, -1095913405);\n\tsum1 =\n\t\tW(0, 1020138108, -1155846064, -1089580553, 1060107168) + W(1, 1026904097, -1129005794, -1123891981, -1158857313)\n\t\t+ W(2, -1099259748, 1041623909, 1034391623, 1027969480) + W(3, 1027835331, 1042832881, -1086143680, 1061453552)\n\t\t+ W(4, -1115844409, -1126805065, -1104251929, 1026174194)\n\t\t+ W(5, -1083565678, 1065434151, -1108664129, 1015124739) + W(6, 1036891437, 1041459232, -1087459168, 1058328348)\n\t\t+ W(7, -1103857816, -1133565543, -1115340623, -1107002233)\n\t\t+ W(8, -1094838563, 1058061687, -1108388469, 1018898230) + W(9, 1034060158, 1043482052, -1096454718, 1046178603)\n\t\t+ W(10, -1124051644, -1128371111, -1111402939, -1101325435)\n\t\t+ W(11, -1097944271, 1056232524, -1124315511, 1016813002);\n\tsum2 = W(0, -1123501879, 1032645553, 1031823713, 1073269342) + W(1, 1039470942, -1134706270, 994818552, -1106534525)\n\t\t + W(2, 1055123028, 1086127434, -1106004733, -1108902493)\n\t\t + W(3, 1024190209, 1041404870, 1003420836, -1097366650)\n\t\t + W(4, 1048036108, -1131894299, 1026428551, -1104982451)\n\t\t + W(5, -1080276792, -1064048639, 1029604730, 1040747994)\n\t\t + W(6, -1113685733, 1042593674, -1127504591, -1073275019)\n\t\t + W(7, -1102930579, -1114192145, 1033345966, -1115833227)\n\t\t + W(8, 1051480126, -1090368136, -1127043711, 1028687353)\n\t\t + W(9, -1113104927, 1034301013, -1116624943, 1039074558)\n\t\t + W(10, 1016207563, -1110363669, 1032770548, 1019409377)\n\t\t + W(11, 1017007809, -1104405577, 1023925896, 1028902826);\n\tWS(-1090401964, -1152005757);\n\tsum1 = W(0, -1107975723, -1110378885, -1108756369, 1036253290)\n\t\t + W(1, -1114963960, -1113670180, 1027213860, -1114833045)\n\t\t + W(2, -1095679285, -1126602324, 1031108853, -1122691487)\n\t\t + W(3, -1098681011, -1110030634, -1106296032, 1055690689)\n\t\t + W(4, -1100045596, -1107558750, 1041527967, -1088517567)\n\t\t + W(5, 1070380432, 1071039479, -1089232274, 1041737494)\n\t\t + W(6, -1104614908, -1108968043, -1108442736, 1052643167)\n\t\t + W(7, -1099409217, -1114805320, -1117487349, -1117626874)\n\t\t + W(8, -1098750614, 1027420045, -1149243844, -1114809497)\n\t\t + W(9, -1139447119, 1013150495, -1103582017, 1037720897)\n\t\t + W(10, -1112117145, -1129003237, -1114124023, -1107640642)\n\t\t + W(11, -1109258534, 1028231256, 1004205268, -1115685308);\n\tsum2 =\n\t\tW(0, 1032241318, -1104603794, -1110024851, 1040884292) + W(1, -1102517567, 1041491703, -1099535875, 1042476400)\n\t\t+ W(2, 1036274242, -1098717699, 1017815860, -1106264274)\n\t\t+ W(3, 1055385702, -1090035137, -1088795135, 1054345172)\n\t\t+ W(4, -1094964358, 1050847172, -1088862448, 1058560544) + W(5, 1070638870, 1049287225, 1049908300, -1097728340)\n\t\t+ W(6, 1049303281, -1088861159, -1093985609, 1045145516)\n\t\t+ W(7, -1104972980, -1120926078, -1109469239, 1052772694)\n\t\t+ W(8, -1106832655, 1028821082, -1121780800, 1040141480)\n\t\t+ W(9, -1107728961, -1098593341, 1040915158, -1095210561)\n\t\t+ W(10, 1046695263, -1097969166, -1128383244, 1040732759)\n\t\t+ W(11, -1094544594, 1053404675, -1097835418, 1042680505);\n\tWS(-1070853435, -1079594702);\n\tsum1 = W(0, 1031368074, 1015638464, -1114370347, -1115839497)\n\t\t + W(1, -1115223191, 1032466078, -1129832370, 1041167744)\n\t\t + W(2, -1117069532, -1102391672, 1027397066, 1017764904)\n\t\t + W(3, 1034753191, 1035847262, -1123068615, -1103157041)\n\t\t + W(4, -1112317379, 1032880216, 1015854174, -1103546680)\n\t\t + W(5, 1064504443, -1091637800, -1115479934, -1129698458)\n\t\t + W(6, 1034404179, -1113675090, 1061831318, -1080200908) + W(7, 1034003429, 1015162251, 1016952500, 1024462894)\n\t\t + W(8, 1053421228, -1096184888, 1024063661, -1140051844)\n\t\t + W(9, -1121119193, 1024493276, 1039689052, -1127920108)\n\t\t + W(10, 1021986479, -1133040549, 1030231874, -1128491667)\n\t\t + W(11, 1047845552, -1114780422, -1108195108, -1121925385);\n\tsum2 =\n\t\tW(0, -1106137478, -1112484873, 1057355655, 1035747177) + W(1, -1121112608, -1111886750, 1043473407, -1102332364)\n\t\t+ W(2, -1095817987, -1115086293, -1132505032, 1028632460)\n\t\t+ W(3, -1106937584, -1092913054, 1065744344, 1023360745)\n\t\t+ W(4, -1113186427, -1106034045, 1026389244, -1107744995)\n\t\t+ W(5, 1065853704, 1072123343, -1092294539, 1034294011)\n\t\t+ W(6, -1112665680, -1097742336, -1081387458, -1079419356)\n\t\t+ W(7, -1121542644, 1024287965, 1037682857, 1043622402) + W(8, -1127502696, -1106562006, 1037780507, 1025382780)\n\t\t+ W(9, -1122471729, 1020098037, -1107102958, -1106082519)\n\t\t+ W(10, 1042075138, 1002478149, -1132137458, 1022975237)\n\t\t+ W(11, -1141866869, -1126279403, 1036152561, -1184105122);\n\tWS(1049779927, -1112776705);\n\tsum1 =\n\t\tW(0, 1028071903, -1118237477, -1102803275, 1029391902) + W(1, 1034486619, -1146402448, -1114011991, 1043483133)\n\t\t+ W(2, -1098367878, -1104983021, 1030141823, 1024272361) + W(3, 1029458468, 1007633232, -1088820906, 1052808064)\n\t\t+ W(4, 1041927295, -1136262168, -1119065733, 1035764138)\n\t\t+ W(5, -1094340312, 1066199650, 1028311666, -1116603171)\n\t\t+ W(6, -1132325110, 1035328577, -1080604425, 1053987355) + W(7, -1120802495, 1022508086, 1021654911, 1034435922)\n\t\t+ W(8, -1090240908, 1056392483, 1033716813, -1120600656)\n\t\t+ W(9, -1140102008, -1138188744, -1148292210, 1036299814)\n\t\t+ W(10, -1137351220, -1178578023, -1114327724, -1122000063)\n\t\t+ W(11, -1113705707, 1048826612, 1019304377, 1020743116);\n\tsum2 =\n\t\tW(0, 1032570045, 1038214390, -1105258373, 1049712324) + W(1, -1104412018, -1123221706, -1105084280, 1026252154)\n\t\t+ W(2, 1013797397, -1092505394, -1106628914, 1042796766) + W(3, 1038138439, 1040403525, -1089116471, 1060934721)\n\t\t+ W(4, -1095609080, 997194667, -1106537061, -1094267982) + W(5, 1076181184, 1059180753, -1100140938, 1031304969)\n\t\t+ W(6, 1040196930, -1111441511, -1077048432, -1094660144)\n\t\t+ W(7, -1105239307, 1025898916, -1115643975, -1113353460)\n\t\t+ W(8, 1025617857, -1116351798, 1035183993, -1113508292)\n\t\t+ W(9, 1030892929, 1041615042, -1099622062, -1112051433)\n\t\t+ W(10, -1108612586, 1036578837, -1115802712, 1045634969)\n\t\t+ W(11, 1030853641, 1036834683, -1126459673, -1114596985);\n\tWS(1046079918, -1101410372);\n\tsum1 =\n\t\tW(0, -1119247786, -1128322399, 1042510685, 1040172212) + W(1, -1102544268, -1115138862, 1028420729, 1041896248)\n\t\t+ W(2, 1041276767, 1029165630, 1023180436, 1035447066) + W(3, -1112243383, -1105916230, 1052547749, -1093769957)\n\t\t+ W(4, -1094151845, -1116787216, 992275696, 1048641796) + W(5, 1049660162, -1086983984, 1051181214, -1126725978)\n\t\t+ W(6, -1122025413, -1106854731, 1058242473, -1090223605)\n\t\t+ W(7, 1034028133, 1020616971, -1106451742, 1031954663) + W(8, 1042746961, -1101840568, 1035662026, -1106918309)\n\t\t+ W(9, 1031954516, 1008473970, 1045913078, -1131429676)\n\t\t+ W(10, -1136064862, 1031591591, -1132155589, -1111364501)\n\t\t+ W(11, 1038481040, 1034663574, -1123376855, -1113758304);\n\tsum2 = W(0, -1141998719, -1109775790, 1044487768, -1123003936)\n\t\t + W(1, -1128896096, -1116651188, -1145824639, -1114337335)\n\t\t + W(2, 1032184652, -1105393491, -1105870753, 1028260552)\n\t\t + W(3, 1031031156, 1035421278, -1118695686, 1043275908)\n\t\t + W(4, -1123077850, -1117301622, 1020781312, -1094152732)\n\t\t + W(5, 1023745864, 1060925239, -1116720242, -1118185274) + W(6, 1022361784, 1019796096, 1018742928, 1035441608)\n\t\t + W(7, 1005384511, -1111756371, 1035727822, -1109500163)\n\t\t + W(8, 1044822196, -1129786704, -1106753069, 1028382728)\n\t\t + W(9, -1106658345, -1126048860, 1018234504, -1154747838)\n\t\t + W(10, -1109895735, -1112885074, 1018984000, -1133379360)\n\t\t + W(11, 1040264262, -1114483694, -1115363912, 1013789936);\n\tWS(1065850966, 1065849900);\n\tsum1 =\n\t\tW(0, -1148044715, 1023026535, -1096615656, 1051437895) + W(1, 1037565454, 1009078433, 1016251913, 1037817733)\n\t\t+ W(2, -1090259708, 1044690723, 1031445334, -1134993406)\n\t\t+ W(3, -1121600570, 1025496281, -1086496425, 1060547800)\n\t\t+ W(4, -1123828273, -1122338716, -1122606683, 1030608138)\n\t\t+ W(5, -1089114938, 1067874188, -1103278290, 961099943) + W(6, -1119487441, 1035148220, -1087399018, 1061971613)\n\t\t+ W(7, -1103477215, -1115158089, -1123929445, 1038603949)\n\t\t+ W(8, -1089721837, 1051923078, 1017932657, -1152593000) + W(9, 1022387720, 1040789578, -1091666965, 1020371139)\n\t\t+ W(10, 1017045638, 1017681054, -1113618935, 1029056085)\n\t\t+ W(11, -1090055623, 1050691807, 1041207209, 1032486406);\n\tsum2 = W(0, 1035054009, 1029203106, -1095822387, -1096883389)\n\t\t + W(1, -1106861506, 1003858895, -1100085534, 1055497340)\n\t\t + W(2, -1094806083, 1022251406, 1025821768, -1141198631)\n\t\t + W(3, 1050236106, -1099101530, -1112580467, -1105263591)\n\t\t + W(4, -1099047212, 1038164225, -1106312974, -1091493710)\n\t\t + W(5, 1065636371, 1066985993, -1090221894, 1007864647) + W(6, 1040394388, 1035688516, 1057422694, 1050729384)\n\t\t + W(7, 1040303734, -1131632326, -1111006317, -1100130836)\n\t\t + W(8, 1038056034, -1113669663, -1095697855, 1034223408)\n\t\t + W(9, -1122528690, 1051271785, -1090043318, -1109365057)\n\t\t + W(10, -1132012078, 1022279531, -1120327060, 1037370697)\n\t\t + W(11, -1101753600, -1098907474, 1042447412, -1111449439);\n\tWS(-1097113303, -1098536273);\n\tsum1 =\n\t\tW(0, -1128711506, 1026190055, -1089449919, 1051085133) + W(1, 1039600836, 1017357112, 1001100740, -1129782332)\n\t\t+ W(2, -1090119792, 1054274400, 1006971045, -1151099700)\n\t\t+ W(3, -1116245678, 1036959597, -1089233276, 1059231684) + W(4, 1035061810, 1008174399, -1123204686, 1010531062)\n\t\t+ W(5, -1088111001, 1068549146, -1106500579, 1027830380)\n\t\t+ W(6, -1122390725, 1040533155, -1083999320, 1060528017) + W(7, -1110173729, -1118330949, 973480529, 1032146359)\n\t\t+ W(8, -1100399617, 1051645044, -1118570949, -1138008953)\n\t\t+ W(9, -1135175840, 1016950072, -1096337083, 1021720363)\n\t\t+ W(10, -1105366950, -1113983621, -1112078369, -1115082484)\n\t\t+ W(11, -1098983064, 1056811397, -1163217111, -1114515356);\n\tsum2 = W(0, -1126544110, 1057867675, -1084782762, -1101472514)\n\t\t + W(1, 1046930113, 1047938716, -1106788080, 1045040387)\n\t\t + W(2, -1103936041, -1095964817, 1060484868, -1116398073)\n\t\t + W(3, -1123763395, -1116688865, -1096694543, 1033632512)\n\t\t + W(4, -1098897900, 1033301960, 1031886252, 1008770068) + W(5, 1065118928, 1070094219, 1055777327, -1112910333)\n\t\t + W(6, 1019879781, -1111977015, -1120781351, -1093909441)\n\t\t + W(7, -1105350592, -1132175940, -1106896864, -1104133845)\n\t\t + W(8, -1094413904, -1091348732, -1098592917, 1028498658)\n\t\t + W(9, 1025236903, -1123575137, 1055216743, -1087869152)\n\t\t + W(10, 1032159773, -1111429301, -1103198659, -1095297610)\n\t\t + W(11, 1063595180, -1101379604, -1090856164, -1148399072);\n\tWS(-1088872108, 1052196610);\n\tsum1 = W(0, -1115772244, -1114837443, 1040729928, 999143576)\n\t\t + W(1, 1035543595, -1109636323, 1026268067, -1111544357)\n\t\t + W(2, -1129315660, 1051137549, -1115388138, -1138847608)\n\t\t + W(3, 1022683057, -1104977249, 1050293045, 1050616762)\n\t\t + W(4, -1110255664, -1148093909, -1119255225, -1110507588)\n\t\t + W(5, -1115663356, -1123488747, -1102766242, -1113579532)\n\t\t + W(6, -1126845407, -1124752108, 1055556797, -1107532492)\n\t\t + W(7, -1115121626, 1031428336, 1018606696, -1106979958)\n\t\t + W(8, 1038400791, -1115698508, -1111362474, -1123058305)\n\t\t + W(9, -1122729971, -1118779367, 1043464385, -1106851872)\n\t\t + W(10, -1114761165, 1024891874, -1119390253, 1032957370)\n\t\t + W(11, 1010467373, 1013947482, -1127308771, -1117161611);\n\tsum2 =\n\t\tW(0, 1021571414, -1136485425, 1033792089, 1044650880) + W(1, -1111938281, -1111133361, 1005045849, -1108696907)\n\t\t+ W(2, 1026572719, 1068805535, 1042295210, 1015874538) + W(3, 1032761087, 1015124882, -1097148617, 1072674603)\n\t\t+ W(4, 1053858128, -1115667125, -1131955840, -1109877489)\n\t\t+ W(5, -1072841573, -1073632622, -1114078156, 1025743417) + W(6, 1002892889, 1050593712, 1051731235, 1040667946)\n\t\t+ W(7, 986622244, 1029743517, -1113636159, -1105061066)\n\t\t+ W(8, 1040799594, -1114163718, -1105514756, -1150165522) + W(9, 1017257782, 1027289415, 1025178361, 1033059623)\n\t\t+ W(10, -1131411966, 1028606721, -1116947723, 1035889263)\n\t\t+ W(11, 1033387155, -1113785952, 1024784261, -1131685126);\n\tWS(1059574956, -1147706177);\n\tsum1 =\n\t\tW(0, -1126851274, -1107330821, 1039522745, -1101979721) + W(1, 1039509326, -1113513772, 1032992154, -1114850125)\n\t\t+ W(2, 1036915515, -1103811902, 1037543219, -1122830319) + W(3, 990365335, -1111585801, 1058476188, -1091594576)\n\t\t+ W(4, 1044635632, -1115799180, 1021792788, 1025219833) + W(5, 1057257569, -1102147871, 1015035920, 999411009)\n\t\t+ W(6, 1014654722, 1042448198, -1130368142, 1049911159) + W(7, -1098033363, 1008106627, 1023708133, 1041111834)\n\t\t+ W(8, -1087441640, 1046832311, -1103709614, 1030688938) + W(9, 1021433863, 1028566264, -1103664757, 1042912388)\n\t\t+ W(10, -1112635561, 998865060, 1024270494, 1025900485)\n\t\t+ W(11, -1101532519, 1034347764, -1106561201, 1033251158);\n\tsum2 = W(0, 1030668111, -1100054904, -1106823977, 1038847176)\n\t\t + W(1, 1045749759, -1139922314, -1138525905, -1127093272)\n\t\t + W(2, -1118630721, 1023505668, -1100949461, -1137789612)\n\t\t + W(3, -1118095530, -1104427366, -1104404781, 1055088734)\n\t\t + W(4, -1106737563, 1025350194, 1046358820, -1094333916)\n\t\t + W(5, 1066330506, 1059364463, -1115593085, -1118124817)\n\t\t + W(6, 1026007575, -1098434999, 1032956568, -1109156363)\n\t\t + W(7, -1105827255, 1044080198, 1036395993, -1114547879)\n\t\t + W(8, -1089680445, -1102029714, 1014767972, -1111415597)\n\t\t + W(9, 1044323398, -1098255510, -1118009606, 1019564502)\n\t\t + W(10, -1114455410, 1034872747, -1102154889, 1043811931)\n\t\t + W(11, -1104253130, 1042217401, 1033201092, -1116871429);\n\tWS(1056332375, 1037816258);\n\tsum1 = W(0, -1121656782, -1103168373, -1119737691, 1044637987)\n\t\t + W(1, 1028439953, -1147698697, -1121854558, -1112652978)\n\t\t + W(2, -1116096096, 1045017865, -1108613751, 1015231409) + W(3, 988019291, 1032694229, -1099471067, 1051843657)\n\t\t + W(4, -1124711667, -1126623722, 1027294260, 1032971073)\n\t\t + W(5, -1088930875, 1058468850, -1105155884, 1025720722)\n\t\t + W(6, -1141230927, 1036051832, -1088040995, 1059943427)\n\t\t + W(7, -1110648631, -1125643860, -1146196851, 1029047507)\n\t\t + W(8, -1094038173, 1054278049, 1023373473, 1025459107)\n\t\t + W(9, -1124586778, -1138159876, -1105369135, 1040438911)\n\t\t + W(10, -1109090662, -1140770656, -1119789479, -1116156558)\n\t\t + W(11, -1100717841, 1052440082, -1121068380, 1033302707);\n\tsum2 =\n\t\tW(0, 1037403217, -1101035659, 1032316963, -1116665707) + W(1, -1159849898, 1025618366, 1056969468, -1090106390)\n\t\t+ W(2, 1038083410, -1119459300, 1009385423, -1128266716) + W(3, 1057593955, -1080354518, 1060881997, 1028006921)\n\t\t+ W(4, 1038355181, -1107076145, 1065979451, -1077736273)\n\t\t+ W(5, 1057826659, -1093367622, -1108823981, 1040978108) + W(6, 1052219437, -1095104394, 1040943565, 1050471411)\n\t\t+ W(7, 1028403474, -1107763897, 1048107842, -1110113632)\n\t\t+ W(8, -1093495590, -1098889696, 1041580846, 1031803963) + W(9, 1012201018, 1035332836, 1023246776, 1037291810)\n\t\t+ W(10, -1108503511, 1028340263, 1034400525, 1036232380)\n\t\t+ W(11, -1105354500, -1172133380, 1023204972, -1124125618);\n\tWS(1057728492, -1114894260);\n\tsum1 =\n\t\tW(0, -1113553553, -1137973853, 1030725486, 1027451936) + W(1, 1024408310, -1122023828, -1129994721, 1032124939)\n\t\t+ W(2, 1023297510, 1039175515, -1104644784, 1015759447) + W(3, -1116323110, 1038491142, 1042012404, -1096381204)\n\t\t+ W(4, -1098358292, -1129065232, 1032700067, 1042214629) + W(5, 1063322480, 1002639809, -1097199096, 1025211173)\n\t\t+ W(6, 1022553594, -1102850457, 1049455560, -1095884801)\n\t\t+ W(7, 1038368473, -1119912573, -1174372438, -1103814977)\n\t\t+ W(8, 1038337085, -1099447670, 1041557913, -1120935138)\n\t\t+ W(9, 1025649872, -1108835354, 1036180712, -1107257155)\n\t\t+ W(10, -1143485305, 1022194670, -1204938694, -1117610625)\n\t\t+ W(11, 1041170774, -1110131186, -1139346043, -1131327617);\n\tsum2 = W(0, -1132724746, -1136277690, -1115335750, -1142062564)\n\t\t + W(1, -1111737990, 1021138001, -1125894137, 1023794749)\n\t\t + W(2, 1019650853, -1102896527, 1036465851, -1117376889)\n\t\t + W(3, 1008401986, 1034921985, -1111489002, -1095970428)\n\t\t + W(4, -1093339450, 1036367329, -1123753553, -1135255538)\n\t\t + W(5, 1065003137, 1052274635, -1130345777, -1114642052)\n\t\t + W(6, 1028568703, -1095862669, 1042205114, 1050282098) + W(7, 961646223, 983274770, -1129573217, -1103833757)\n\t\t + W(8, -1104966989, 1039075981, -1123958953, -1121876761)\n\t\t + W(9, -1115138968, 989975657, 1028245440, -1124502561)\n\t\t + W(10, 975314596, -1131382405, -1129237393, -1117578737)\n\t\t + W(11, -1137003202, 1029353869, 981021860, -1129104973);\n\tWS(1064957100, -1084259623);\n\tsum1 =\n\t\tW(0, -1147443767, 1048172674, 1050085746, -1087174820) + W(1, -1110620477, 1041967934, 1002237105, 1022388856)\n\t\t+ W(2, 1049301459, -1096483251, -1130736462, 1032395752)\n\t\t+ W(3, 1042679235, -1111985505, 1061123934, -1084863818) + W(4, 1036594273, 1029284270, 1025036588, -1105536623)\n\t\t+ W(5, 1059891343, -1085360136, -1096717087, 1027822410)\n\t\t+ W(6, 1039980881, -1111204540, 1063082922, -1087496217) + W(7, 1049051417, 1038157169, 1039876787, -1118973740)\n\t\t+ W(8, 1059164422, -1085023864, -1098175193, 1033526682)\n\t\t+ W(9, -1122119878, -1115201293, 1050147791, -1099749261)\n\t\t+ W(10, 1038851310, 1035926782, 1046679440, 1036937851)\n\t\t+ W(11, 1052477312, -1093770425, -1094492881, 1040430103);\n\tsum2 =\n\t\tW(0, 1043574668, -1079200674, 1070660923, 1052128984) + W(1, -1102512316, -1114631788, -1110691764, -1088609636)\n\t\t+ W(2, 1057860954, 1049301959, -1119415890, -1111966430)\n\t\t+ W(3, -1103083598, -1104512784, -1107138551, -1106877192)\n\t\t+ W(4, -1099577256, 1025811761, -1104224219, 1072315297)\n\t\t+ W(5, -1092267131, -1082025998, 1048136354, -1120067756)\n\t\t+ W(6, -1111324648, 1071717488, -1073631870, -1098154139)\n\t\t+ W(7, -1101281480, -1097839567, 1045365848, 1074062948) + W(8, -1072626825, 1060924493, 1049098296, 1046934152)\n\t\t+ W(9, -1123650350, 1072927288, -1076777698, 1055782129)\n\t\t+ W(10, 1053482338, -1142912019, 1040472402, 1075518858)\n\t\t+ W(11, -1068851440, -1085268633, 1045375219, -1113956244);\n\tWS(-1075237718, 1059347685);\n\tsum1 =\n\t\tW(0, 1021242911, 1049968737, -1123217820, -1100043508) + W(1, -1123750750, 1039650209, 1033512399, -1159856274)\n\t\t+ W(2, 1052611492, -1096977477, 1035058824, -1164938034) + W(3, 1029870036, 1035044013, 1055398719, -1086974821)\n\t\t+ W(4, -1111424357, 1031585078, 1022930282, -1122614884)\n\t\t+ W(5, 1061884279, -1081627821, 1035852049, -1146263191)\n\t\t+ W(6, 1032776022, -1113136009, 1059035017, -1085989237) + W(7, 1046594056, 1040828171, 1018371807, -1134430929)\n\t\t+ W(8, 1058365139, -1083853344, 1040835864, -1113397210)\n\t\t+ W(9, 1019954077, -1114025505, 1054270736, -1094951367) + W(10, 1036293471, 1041271429, 1033340372, 1040742208)\n\t\t+ W(11, 1057072208, -1082038839, 1043435581, -1112152131);\n\tsum2 =\n\t\tW(0, -1109418256, -1082007392, 1074622373, -1087167323) + W(1, -1079889153, 1054843717, 1045686709, -1092895857)\n\t\t+ W(2, 1045059925, -1090791673, 1052961109, -1111299754) + W(3, 1025535098, -1097230803, 1022527077, 1061750517)\n\t\t+ W(4, -1094791227, -1097908774, 1041368995, -1087580936)\n\t\t+ W(5, 1072979117, 1066822104, -1121141584, 1039933817) + W(6, 1025255906, -1090709237, 1059630355, -1104688853)\n\t\t+ W(7, -1114952578, -1109459004, 1045341483, 1030380818)\n\t\t+ W(8, -1082271661, -1098772696, 1048788253, 1032974905)\n\t\t+ W(9, -1131647237, -1098811123, -1098333373, -1097425000)\n\t\t+ W(10, -1109808864, 1041274025, 1050563248, -1122444474)\n\t\t+ W(11, -1080249300, 1035536875, 1062091865, -1101634861);\n\tWS(-1073405707, 1071333561);\n\tsum1 =\n\t\tW(0, 1032445482, -1107154225, -1086616986, 1053035442) + W(1, 1037191452, 1005358651, -1114759602, 1043648434)\n\t\t+ W(2, -1097373989, 1049497533, -1113096234, -1140703610)\n\t\t+ W(3, 1009365348, 1025826187, -1088696011, 1058380737) + W(4, 1042579156, -1147371482, -1116673978, 1050217769)\n\t\t+ W(5, -1084271170, 1057270871, 1027100008, 1008260703) + W(6, -1140494528, 1045274198, -1086550017, 1060414079)\n\t\t+ W(7, -1122447285, -1128134433, -1138343378, 1041826370)\n\t\t+ W(8, -1088202787, 1054213138, 1033632004, -1146407565)\n\t\t+ W(9, -1164102249, 1037855412, -1096484208, 1049814032)\n\t\t+ W(10, -1117413058, -1132301012, -1128324122, 1036590066)\n\t\t+ W(11, -1090407429, 1044502774, 1049279047, 1030979244);\n\tsum2 =\n\t\tW(0, -1104849756, 1044778147, 1087011564, 1051692028) + W(1, -1115275477, 1024288807, -1130309268, 1042344095)\n\t\t+ W(2, 1065552014, 1050304642, 1012814276, -1122813731)\n\t\t+ W(3, 1032168017, -1115874267, -1071484991, -1095624232) + W(4, 1034711867, 1018071134, 1006608216, 1016899230)\n\t\t+ W(5, -1064792716, -1080996320, 1012706900, -1113948677)\n\t\t+ W(6, 1025939811, 1015318926, -1108487910, 1038353709) + W(7, 1031018877, 1039145567, -1116205504, 1017541078)\n\t\t+ W(8, -1111002668, 1015541566, 1017981722, -1121567210)\n\t\t+ W(9, -1134020588, 1025032291, 1026184365, -1115175630)\n\t\t+ W(10, 1016059306, -1161414849, 1015836550, -1134707560)\n\t\t+ W(11, -1105554232, 1035428553, 1030487759, 957459976);\n\tWS(-1093094231, 1019545057);\n\tsum1 =\n\t\tW(0, -1147370279, 1024662611, 1045730364, -1100871081) + W(1, -1113292876, -1115285964, -1111661690, 1043371102)\n\t\t+ W(2, 1007712219, -1103400446, -1125293706, 1035921815)\n\t\t+ W(3, 1036370005, -1098598749, 1063151515, -1086049630)\n\t\t+ W(4, 1038700136, -1106696483, -1130128916, -1121967929)\n\t\t+ W(5, 1048771569, -1094208743, 1042591246, 1031896756) + W(6, -1138886402, 1034324947, -1102866212, 1057052051)\n\t\t+ W(7, -1109292474, -1117085921, -1114353490, 1030255498)\n\t\t+ W(8, 1043747359, -1103168823, 1040829042, -1117982022)\n\t\t+ W(9, -1139052495, 1020719663, 1042970997, -1114366281) + W(10, -1113681601, 986496271, -1123566046, 983686292)\n\t\t+ W(11, 1044423271, -1105757546, -1119014482, -1116127556);\n\tsum2 =\n\t\tW(0, 1017737448, -1113949677, -1109074925, -1106456753) + W(1, 1033894674, 1002006465, -1112488549, 1043174240)\n\t\t+ W(2, -1099690943, 1036040708, -1136025401, -1127095326) + W(3, 1041909593, -1095542187, 1055357640, 990810979)\n\t\t+ W(4, 1036060652, -1106928479, -1119128646, -1123930650)\n\t\t+ W(5, 1063813292, 1064786485, -1095508468, 1041202855) + W(6, 995222883, 1011641777, 1029075282, -1080550900)\n\t\t+ W(7, -1096849813, 1028541984, -1138532089, 1043431269)\n\t\t+ W(8, -1111808055, -1099317256, 1042059844, 1013308785)\n\t\t+ W(9, -1122958336, -1133447353, -1121958092, -1111251400)\n\t\t+ W(10, 1031456264, -1130037494, 1002378369, 1011720393)\n\t\t+ W(11, -1111615901, -1122017034, 1041840135, 1011740497);\n\tWS(1065464534, 1066200435);\n\tsum1 = W(0, -1120929867, -1114034816, -1093428139, 1053507241)\n\t\t + W(1, 1039630850, 1039737375, 1037468205, -1098649416)\n\t\t + W(2, -1095417420, 1053719708, -1117479019, -1104296205)\n\t\t + W(3, -1104046500, 1044270480, -1095455089, 1059517274)\n\t\t + W(4, -1116571174, 1034668025, -1118049328, 1030873567)\n\t\t + W(5, -1078956988, 1062996894, 1037682987, 1027940302) + W(6, 1026495526, 1027018036, -1097112752, 1062358792)\n\t\t + W(7, -1100052716, -1105628906, -1102710553, 1029661039)\n\t\t + W(8, -1090364038, 1051059848, -1134398359, 1047874257) + W(9, 1047356358, 992085460, -1098761015, 1053033759)\n\t\t + W(10, -1124964177, -1105711476, -1104379061, 1014898857)\n\t\t + W(11, -1089997432, 1058137077, -1119205176, 1036556777);\n\tsum2 =\n\t\tW(0, 1052570920, -1079960756, 1059860803, 1024102895) + W(1, -1109439044, 1028585912, -1096757231, -1072214843)\n\t\t+ W(2, 1077140634, 1045135233, -1135125103, 1026412089) + W(3, 1032706704, -1067716640, 1078085184, 1007395147)\n\t\t+ W(4, 1039504993, 999691338, 1048916325, -1071149720) + W(5, 1074719494, 1048879105, -1119420973, 1031274943)\n\t\t+ W(6, 1032567852, -1113086642, -1126012658, -1105291454)\n\t\t+ W(7, 1042487387, -1115876939, 1027784571, 1026889523) + W(8, 1023965646, -1125605772, -1107726802, 1031655696)\n\t\t+ W(9, -1123035498, -1102782368, 1033915049, 1036400237)\n\t\t+ W(10, 1040624471, -1118021143, 1032789056, -1113248449)\n\t\t+ W(11, -1131155204, -1120868355, -1123377002, 1033633154);\n\tWS(-1088460652, -1077196042);\n\tsum1 =\n\t\tW(0, -1106714405, -1126618358, -1100538888, 1061836401) + W(1, -1105561066, 1017778831, 1012745873, -1104692362)\n\t\t+ W(2, -1105672234, 1049398341, -1107347643, -1107815087)\n\t\t+ W(3, -1106817926, -1128320455, -1096420642, 1063373516)\n\t\t+ W(4, -1095103574, 1021813111, 1014233321, -1113350277)\n\t\t+ W(5, 1032760733, 1062672955, -1104500106, -1130991024) + W(6, -1139695810, -1104636978, 980853696, 1040237156)\n\t\t+ W(7, -1136108756, 1015562593, -1112340330, -1111992333)\n\t\t+ W(8, -1098221750, 1049303442, -1098848505, -1124042178)\n\t\t+ W(9, -1112616426, -1112151140, 1032069058, -1115352833)\n\t\t+ W(10, 1028357771, -1117430379, 1014140598, -1103199781)\n\t\t+ W(11, -1124202648, 1047738902, -1108236605, 1024298444);\n\tsum2 =\n\t\tW(0, 1042942941, -1095373315, 1047404354, 1041600542) + W(1, 1029337611, -1116792463, -1103739979, 1042549384)\n\t\t+ W(2, -1104635751, 1049880149, -1113660916, 1033409028)\n\t\t+ W(3, 1021675082, -1100136800, -1156628070, 1042313351)\n\t\t+ W(4, -1103511888, -1100575516, 1031504716, 1032277385) + W(5, 1056265483, -1095000083, 1052284225, 1042607543)\n\t\t+ W(6, -1103784377, 1051314558, -1086627236, 1058671506)\n\t\t+ W(7, -1098025422, -1102539848, 1021140017, -1097536524)\n\t\t+ W(8, 1056610233, -1087499329, 1053296214, -1123811627) + W(9, 1032312275, 1033748340, -1097748456, 1053303874)\n\t\t+ W(10, -1097031052, 1034071897, -1113021145, 1006926454)\n\t\t+ W(11, 1032415346, -1106742186, 1040224097, -1116904421);\n\tWS(-1090190636, 1052333694);\n\tsum1 = W(0, -1118008162, 1046164882, -1087764995, 1050774996) + W(1, -1132114980, 992812356, 1017370722, 1025512151)\n\t\t + W(2, -1107299674, -1113611419, -1133738119, -1143374172)\n\t\t + W(3, 1028313190, 1039176172, -1107276920, 1042980645) + W(4, 1016759930, 1031741320, 1032465571, -1140639831)\n\t\t + W(5, 1054861041, -1104478910, 1039228938, 991966796) + W(6, 1021024634, -1114523818, 1048774281, -1116066086)\n\t\t + W(7, 1029146129, -1131726971, 1022145795, -1123803590)\n\t\t + W(8, 1052546887, -1088290914, 1046828701, -1135053738)\n\t\t + W(9, 974396430, -1114987978, 1033108808, -1101829203)\n\t\t + W(10, 1025239231, -1135839572, 1023704762, -1150325779)\n\t\t + W(11, 1052242867, -1082760046, 1050382392, -1117633184);\n\tsum2 = W(0, -1112927492, -1126311221, -1124129707, -1089259297)\n\t\t + W(1, -1121960162, -1127721129, 1000278501, -1112124316)\n\t\t + W(2, 1030656727, -1136644755, -1119195008, -1143597573)\n\t\t + W(3, -1115114722, -1096516945, 1062718459, -1089907054)\n\t\t + W(4, -1113085858, 1010259715, 1038568093, -1095439368)\n\t\t + W(5, 1069168233, 1066488720, -1108783853, 1016497897)\n\t\t + W(6, -1107752992, 1035770391, -1092856910, 1057602472)\n\t\t + W(7, -1101947316, -1142073349, 1036864823, -1173738153)\n\t\t + W(8, -1097729376, -1119016562, -1105922885, 1034450025)\n\t\t + W(9, -1111435217, -1127749525, -1108466839, 1028769031)\n\t\t + W(10, -1119106133, -1113345821, 999311589, -1118042174)\n\t\t + W(11, -1106807928, -1101412503, -1119408565, -1121786357);\n\tWS(1050584535, 1068150000);\n\tsum1 =\n\t\tW(0, -1115260532, 1034938395, 1038987194, -1117589351) + W(1, -1115913835, 1013034091, 1010165469, -1115625742)\n\t\t+ W(2, 1047833470, -1104527215, -1116485512, 1026352434)\n\t\t+ W(3, -1112895478, 1043729220, -1102791097, 1041775364) + W(4, 1035117570, -1123123343, 1003680362, 1046586119)\n\t\t+ W(5, 1053057826, -1092950416, 1032942189, -1126776150)\n\t\t+ W(6, 1038151522, -1096382429, 1060286702, -1085160955)\n\t\t+ W(7, 1051158381, -1118268740, -1113655284, 1036369142) + W(8, 1031810112, -1099697720, -1109351189, 992197073)\n\t\t+ W(9, -1132334157, -1110737789, 1033665067, -1112334730)\n\t\t+ W(10, 1035094123, 1007592182, -1116596385, 1020311663)\n\t\t+ W(11, 1045919272, -1112800213, -1113211075, -1128843070);\n\tsum2 = W(0, 1027450901, -1130117632, -1112751331, 1023748039) + W(1, -1129067048, 1020055214, 999052617, 1037992777)\n\t\t + W(2, 1031860941, -1148181737, 1031574877, -1123191999)\n\t\t + W(3, 998486633, 1035832253, -1100828230, -1107268336)\n\t\t + W(4, -1108371420, -1176849298, -1098069390, 1058826704)\n\t\t + W(5, 1066377631, 1031601953, -1110435251, 992240434) + W(6, 1050271656, -1075559944, 1059983898, -1105105514)\n\t\t + W(7, -1111123861, 1022099846, -1144500281, 1051052067)\n\t\t + W(8, -1089703828, 1006070601, -1135053221, -1122685646)\n\t\t + W(9, 1034115809, -1104035684, 1037142243, 1031181077)\n\t\t + W(10, 1013422629, -1154287506, -1111215245, 1041076323)\n\t\t + W(11, -1116488683, -1123703892, 994427506, 1025316569);\n\tWS(1065940278, 1034622363);\n\tsum1 =\n\t\tW(0, -1130882111, 1042781009, 1048563851, -1106282856) + W(1, 991352096, -1132163876, 1018945629, -1105035701)\n\t\t+ W(2, 1039562393, -1093168999, -1128564863, -1146137419)\n\t\t+ W(3, 1038546130, 1037583679, 1050832116, -1106056839) + W(4, 1040441019, 1034240611, -1109081570, -1089961211)\n\t\t+ W(5, 1065150616, -1081267407, -1125259845, -1103163033)\n\t\t+ W(6, -1116833467, -1106689964, 1063013875, -1093571617) + W(7, 1037655800, 1014989293, 1027338207, 1025705412)\n\t\t+ W(8, 1053064399, -1098826451, 1032573560, -1132178841)\n\t\t+ W(9, -1118439678, -1110899849, 1043578884, -1098971955)\n\t\t+ W(10, -1126802554, -1140385876, 1023675896, 1000818681)\n\t\t+ W(11, 1052844651, -1103816344, -1174556270, -1124029942);\n\tsum2 = W(0, 1042045232, 1025081894, -1120251562, -1098032480)\n\t\t + W(1, -1122897683, -1131598407, -1100582068, 1047796551)\n\t\t + W(2, -1130142714, 1051286467, -1114446743, 1028094206)\n\t\t + W(3, 1051353130, -1135649915, -1091982339, -1088973774)\n\t\t + W(4, 1048662352, -1114986235, -1098661297, -1083821047)\n\t\t + W(5, 1066411068, 1066192686, -1098476628, 1035402858)\n\t\t + W(6, 1033093932, -1113123121, -1108263063, -1096817778)\n\t\t + W(7, 1043244089, -1113670703, 1041505758, -1102707738)\n\t\t + W(8, -1116829613, -1124748705, -1105512115, 1040252082)\n\t\t + W(9, -1111611431, 1042774566, 1029093314, -1115318079)\n\t\t + W(10, 1039955893, -1113507172, 1036803556, -1119704488)\n\t\t + W(11, -1105374597, 1039210409, -1115075522, -1136180467);\n\tWS(1056991468, -1087030746);\n\tsum1 =\n\t\tW(0, -1123211458, -1104816506, -1105628499, 1049039296)\n\t\t+ W(1, -1110865210, -1119944116, 1040392564, -1123900599) + W(2, 1035944426, 1031104918, 1038992913, 1019968535)\n\t\t+ W(3, -1107179074, -1097679367, -1092912076, 1058030045)\n\t\t+ W(4, -1092536332, -1113705364, 1032323379, 1050060447) + W(5, 1043269081, 1044634502, 1052766173, 1024115141)\n\t\t+ W(6, -1112698351, -1113372906, -1098944114, 1032247835)\n\t\t+ W(7, -1101773536, 1016666555, -1113154609, -1118981766)\n\t\t+ W(8, -1111852653, 1043769326, -1111088882, -1113641643) + W(9, 1035059984, 1036804874, 1030188977, 1035537687)\n\t\t+ W(10, 1017337855, 1034739876, -1117349658, -1117759553)\n\t\t+ W(11, -1099907470, 1048904265, -1120093295, -1119368937);\n\tsum2 = W(0, 1038207100, -1100024892, 1019998746, -1116235844)\n\t\t + W(1, 1028590129, -1132429552, 1055370704, -1091918952)\n\t\t + W(2, -1108168198, 1051323790, 1017416940, -1131674494)\n\t\t + W(3, 1017023961, -1082116017, 1065911065, -1096201210)\n\t\t + W(4, 1032160655, -1107738152, -1102268135, -1125190319)\n\t\t + W(5, 1060923636, -1094794141, 1048662690, -1115273448)\n\t\t + W(6, -1122475964, 1048656820, -1095962080, 1023749917)\n\t\t + W(7, 1005611185, -1120617509, 1023693826, -1118701724)\n\t\t + W(8, 1025593786, -1112111831, -1121410776, 1032669658) + W(9, 1033230771, 1009208157, 1022143062, 1028403793)\n\t\t + W(10, -1131420642, 1007544955, -1120372849, 1017593165)\n\t\t + W(11, -1123799386, -1116942925, 1018425448, 990755743);\n\tWS(1065408790, 1036624080);\n\tsum1 =\n\t\tW(0, 1031689276, -1095782030, 1040908418, 1044865119) + W(1, 1010781241, -1124793181, -1118902603, 1036811736)\n\t\t+ W(2, -1099523235, 1048657234, -1114118270, -1132122507)\n\t\t+ W(3, -1130392064, -1106389326, -1100633526, 1056569877)\n\t\t+ W(4, -1105362262, 1010247305, -1130349122, -1116251760)\n\t\t+ W(5, -1088986706, 1059819669, -1109527143, 1021657598)\n\t\t+ W(6, -1124855342, 1016267643, -1097124896, 1057017186)\n\t\t+ W(7, -1101014271, -1147394236, -1120117724, -1116551776)\n\t\t+ W(8, -1093812931, 1059687187, -1105256235, 1019294354) + W(9, 1032115325, 1029730958, -1102530619, 1046000250)\n\t\t+ W(10, 1028862634, -1131137795, -1114562026, -1110739566)\n\t\t+ W(11, -1093706094, 1058243684, -1118348593, 1010280523);\n\tsum2 = W(0, 1008018405, 1028827850, 1048442625, 1022982076) + W(1, 1015261982, 1023643398, -1131603511, -1115409151)\n\t\t + W(2, -1128423353, 976919119, -1110305290, -1142661114)\n\t\t + W(3, 988821927, 1044469435, -1144038842, -1106419532)\n\t\t + W(4, 1025710382, 1024565032, -1126539767, -1105522597)\n\t\t + W(5, -1080807551, -1069309764, -1128896061, -1156968388)\n\t\t + W(6, 1029044494, 1031515550, -1100063920, -1077869698)\n\t\t + W(7, 1034212953, -1108906576, -1154431236, 1029512486) + W(8, 1047735839, 1057375362, 1047372093, 1040986767)\n\t\t + W(9, -1144594818, -1118759177, 1049631559, 1074645104)\n\t\t + W(10, -1121013958, -1109343217, -1134541747, 1017115388)\n\t\t + W(11, 1040817807, 1074183528, 1028992794, 1013497529);\n\tWS(-1134496480, -1135409208);\n\tsum1 =\n\t\tW(0, 1012816882, -1118561391, -1172095542, 1042727039) + W(1, -1101252924, 1038725048, -1131032216, 1023949458)\n\t\t+ W(2, -1135187513, -1111514505, 940438235, -1118209095) + W(3, 1015795842, 1025102291, -1122643706, 1044113108)\n\t\t+ W(4, -1099247502, 1039141810, 1017081284, -1098855254)\n\t\t+ W(5, 1062211658, -1088869665, 1037442288, -1110868352)\n\t\t+ W(6, 1032335660, -1109465919, 1053298610, -1090758606)\n\t\t+ W(7, 1036453998, -1124785329, -1114842158, 1018180354)\n\t\t+ W(8, 1055550179, -1097017583, 1038283500, -1123999226)\n\t\t+ W(9, -1121133019, 1039697400, -1104417019, 1024023145)\n\t\t+ W(10, -1127849669, 984058180, 1020892138, -1121622748)\n\t\t+ W(11, 1042088653, -1131309822, -1111728213, 985363057);\n\tsum2 =\n\t\tW(0, 1027844464, -1123756397, -1109401613, -1123223808) + W(1, 1035039619, -1128717516, -1120185020, 1023474305)\n\t\t+ W(2, 1009596088, 1048386893, -1119575836, -1197272208)\n\t\t+ W(3, 1033301171, -1120807818, -1105464515, -1117881742)\n\t\t+ W(4, 1029989604, -1129559846, -1142892826, 1045181163)\n\t\t+ W(5, -1069578385, -1079085438, 1032607110, 1013531724) + W(6, -1130897478, 1050514681, 1080182479, 1057107198)\n\t\t+ W(7, -1113328530, 1001587842, -1112219415, -1148494098)\n\t\t+ W(8, 1033916695, -1155326684, -1143648562, -1126181730)\n\t\t+ W(9, 1008317678, -1124897908, -1111316356, 1015620530)\n\t\t+ W(10, 1010222764, 1011089790, -1123809910, -1112292483)\n\t\t+ W(11, 1038900121, -1138311341, -1144599918, -1129634008);\n\tWS(1063953772, 1006246735);\n\tsum1 = W(0, -1129265445, 1023929568, 1050480356, -1094701786)\n\t\t + W(1, 1037312131, 1034664643, -1103221880, -1113408580)\n\t\t + W(2, 1053092565, -1092563365, -1114954585, 1012249970)\n\t\t + W(3, -1129858606, -1152025615, 1054804888, -1099755687)\n\t\t + W(4, 1041973195, 1007014628, -1113052252, -1124775629)\n\t\t + W(5, 1058637767, -1081976315, 1043978961, 1034276907) + W(6, 970168057, -1116248388, 1061520345, -1085039957)\n\t\t + W(7, -1109284733, -1121545966, 1035503657, -1112901548)\n\t\t + W(8, 1052655373, -1106127939, 1037644971, 1031841028)\n\t\t + W(9, -1114702297, -1114551939, 1043614208, -1104465584)\n\t\t + W(10, 1036504960, -1122618723, 1026538155, 1012918985)\n\t\t + W(11, 1053852345, -1094975651, -1153236991, 1015394179);\n\tsum2 = W(0, -1108119214, -1098605940, 1035846227, 1036002502)\n\t\t + W(1, -1110269476, -1115932080, -1096454441, 1047215192)\n\t\t + W(2, -1114546522, 1051355228, 1034086715, 1019597651)\n\t\t + W(3, -1110533412, -1103381544, 1042040175, -1102267339)\n\t\t + W(4, -1102892813, -1130886478, -1119694402, -1128298432)\n\t\t + W(5, 1054173861, 1055154953, 1033662351, -1108620470)\n\t\t + W(6, -1127729168, -1115663656, -1103681801, 1052945690)\n\t\t + W(7, 1018137856, 1033484697, -1110958880, -1114162078)\n\t\t + W(8, 1035812038, -1097546689, -1135158408, -1106956606)\n\t\t + W(9, 1023031785, 1023974294, 1020649501, 1033369183) + W(10, 998437331, 1029836288, -1130979192, -1102917557)\n\t\t + W(11, 1043843622, 1033695483, -1106336801, 1026224246);\n\tWS(1049960663, -1098656338);\n\tsum1 =\n\t\tW(0, -1129270334, -1097905355, -1106458043, 1053746044) + W(1, -1153859324, -1120671826, 1010743226, 1038429850)\n\t\t+ W(2, -1094238830, 1050579558, 1008020477, 1036488405) + W(3, -1116543140, 1026505899, -1084542826, 1060156652)\n\t\t+ W(4, -1101873487, 1033306211, 1036165346, -1111354490)\n\t\t+ W(5, -1093117384, 1065413702, -1122984978, 1035776465)\n\t\t+ W(6, 1026370235, 1012909508, -1096055524, -1110641506) + W(7, -1132001470, 1015184758, 1026933359, 1034045586)\n\t\t+ W(8, -1093158415, -1140159326, 1048347588, -1115507932)\n\t\t+ W(9, 1009750007, -1139624135, -1113672231, -1153271990)\n\t\t+ W(10, 1027525597, 1024719161, -1164389112, 1033987231)\n\t\t+ W(11, -1098353419, 1046556600, -1124973593, 1037016731);\n\tsum2 =\n\t\tW(0, 1007202997, -1107138382, -1101985157, -1105521455) + W(1, 998286218, -1135144653, 1038605814, -1092409649)\n\t\t+ W(2, -1111080585, 1031799434, -1127152184, -1138707909)\n\t\t+ W(3, -1111184485, -1086536233, 1058778058, -1102287591)\n\t\t+ W(4, 1043783051, 1018462794, -1097778206, 1033842165) + W(5, 1062592323, 1054124413, -1107786643, -1134709509)\n\t\t+ W(6, -1107862779, 1050500010, -1115904936, -1121603522)\n\t\t+ W(7, -1104929125, 1016336685, -1126800416, -1107791267)\n\t\t+ W(8, 1050870644, 1039372702, -1103666737, 1035379787) + W(9, -1122928880, 1035028069, -1115500703, 1030823202)\n\t\t+ W(10, -1123649878, -1120475406, -1117103670, 1024236113)\n\t\t+ W(11, -1137706913, 1012044041, 1042413442, -1119073178);\n\tWS(1045571246, -1101396513);\n\tsum1 =\n\t\tW(0, 1027156266, -1105879340, -1095381975, 1052608133) + W(1, 1036979366, -1116386461, -1135540454, 1031079263)\n\t\t+ W(2, -1094890856, 1052732944, -1110160581, -1124519785)\n\t\t+ W(3, -1123739311, 1036462891, -1086841044, 1059410250)\n\t\t+ W(4, 1033495803, -1113888968, -1123826896, 1048275928) + W(5, -1081913239, 1057453824, 986236332, 1015417435)\n\t\t+ W(6, -1110505155, 1040289247, -1087831711, 1053535332)\n\t\t+ W(7, -1121128186, -1106215130, -1138173481, 1033674439)\n\t\t+ W(8, -1095054872, 1059217778, -1117509614, 1025380519) + W(9, 1019384210, 1035302207, -1100616678, 1056369955)\n\t\t+ W(10, 1002559041, -1132265864, -1138775820, -1109766005)\n\t\t+ W(11, -1096527684, 1057086003, 1031959012, 1009437253);\n\tsum2 =\n\t\tW(0, 1023702857, 1025579445, -1107828603, 1030949885) + W(1, 1030056541, -1138881396, -1116086512, 1041684936)\n\t\t+ W(2, -1100190580, -1127701406, -1101693823, 1031874044) + W(3, 1027064225, 991232624, -1127488618, 1063977916)\n\t\t+ W(4, 1026840857, -1115029594, 1024261913, 1049263730) + W(5, -1121382305, 1081524863, 1032271344, -1124133978)\n\t\t+ W(6, -1115739014, 994389040, 1049530396, 1074557390) + W(7, 1041139218, 1015337722, 1023117658, -1121855219)\n\t\t+ W(8, 1041567276, -1078514947, 1024600809, -1113125346)\n\t\t+ W(9, 1011341860, -1121905805, -1097196557, -1067412604)\n\t\t+ W(10, -1110332083, -1157524144, 1016675050, -1114246345)\n\t\t+ W(11, -1125328530, -1072747255, 1045882874, 1009384836);\n\tWS(-1091844311, 1066789497);\n\tsum1 = W(0, -1126657090, -1121934839, 1053346558, -1094816004)\n\t\t + W(1, -1134360567, -1196074864, -1118280816, -1104655157)\n\t\t + W(2, -1150447404, -1096277599, 1026981217, 1030410603)\n\t\t + W(3, 1035276339, 1036892560, 1061301148, -1095276499) + W(4, 1035239934, -1117233544, 1034822275, 1041291861)\n\t\t + W(5, 1054539137, -1085328499, -1132053288, 1032377106)\n\t\t + W(6, -1122398524, 1016354085, 1061579109, -1094948141)\n\t\t + W(7, 1041572288, -1113536398, 1027512241, -1100932977)\n\t\t + W(8, 1052329175, -1090319102, -1138204721, 1028691858)\n\t\t + W(9, -1105911320, -1113195754, 1010492736, -1109759879)\n\t\t + W(10, 1026669711, 1016723124, 1036073133, -1137558275)\n\t\t + W(11, 1052092547, -1096198988, -1122862318, 1004385343);\n\tsum2 =\n\t\tW(0, -1130924015, 1022730742, -1156842543, 1039023607) + W(1, -1147026848, 1024455841, 976327856, -1107671502)\n\t\t+ W(2, 1030703882, -1100688592, -1113451109, 1015244616) + W(3, 1006816288, -1102494949, 1050591037, 1039287442)\n\t\t+ W(4, 1030233046, -1121583866, 1032746467, -1063244855) + W(5, 1084548157, -1091568120, 1034384724, 1032201434)\n\t\t+ W(6, -1109752024, -1117144683, 1041535529, 1042495948)\n\t\t+ W(7, 1024850879, -1112832588, 1030725620, -1118200508) + W(8, 1030607420, -1100624377, 1037336210, 984232072)\n\t\t+ W(9, -1118656485, 1023153636, -1117378226, 1033109796)\n\t\t+ W(10, -1123040622, 1003511712, 1013150272, 1019358625)\n\t\t+ W(11, 1000111712, -1135441064, 1025293966, -1124806470);\n\tWS(1062375148, 982896070);\n\tsum1 =\n\t\tW(0, 1041356906, -1092346958, -1098857839, 1052252533) + W(1, 1050501706, -1165233042, -1141741512, 1042371688)\n\t\t+ W(2, -1100631199, 1048733184, -1126563284, -1134397903)\n\t\t+ W(3, -1123251246, -1107640316, -1093348349, 1057292943)\n\t\t+ W(4, 1043133649, 1008063554, -1121772047, 1037798623) + W(5, -1081710855, 1063732968, -1111246422, 1032268279)\n\t\t+ W(6, -1138991637, 1035668286, -1084667272, 1061645578) + W(7, -1112114769, 988108978, -1156317853, 1026956462)\n\t\t+ W(8, -1088318752, 1059891330, -1106214611, 1037368483)\n\t\t+ W(9, -1161666833, 1016120313, -1093940123, 1051947731)\n\t\t+ W(10, -1109426316, -1138661789, 1011726474, -1115727625)\n\t\t+ W(11, -1084607638, 1059995535, -1190508359, 1040598420);\n\tsum2 = W(0, -1087149149, -1081699534, 1075074133, 1074122230)\n\t\t + W(1, 972078363, -1097056662, -1111774062, 1035582541) + W(2, 1078981756, 1067224402, -1092574897, 1045566397)\n\t\t + W(3, -1122195827, -1087576154, 1080077903, 1066418532)\n\t\t + W(4, -1094572008, 1049096521, 1039123010, -1082404199)\n\t\t + W(5, -1086433828, -1082120864, -1101495601, -1109136155)\n\t\t + W(6, 1035630599, -1111170675, -1073636555, -1078722695)\n\t\t + W(7, -1124013413, 1034655424, 1055099903, -1119441337)\n\t\t + W(8, -1080599553, -1083892454, 1051613332, 1023040696)\n\t\t + W(9, 1042757145, -1097950160, -1080969229, 1038753292)\n\t\t + W(10, 1020974546, 1027077203, 1060125526, -1098859385)\n\t\t + W(11, -1075310961, -1085615144, 1056506110, -1129411423);\n\tWS(-1073733835, -1077508759);\n\tsum1 =\n\t\tW(0, 1004911573, 1043185540, 1056421033, -1084678800) + W(1, 1025064353, 1009545653, 999004239, -1120942224)\n\t\t+ W(2, 1054442442, -1094509130, 1020812405, 1022285001) + W(3, 1008908284, -1136904037, 1059517190, -1087084867)\n\t\t+ W(4, -1149079216, -1118599969, 1032559088, -1114184455)\n\t\t+ W(5, 1066321721, -1089134469, -1127746091, 1007063543)\n\t\t+ W(6, -1123346838, -1112686066, 1063474337, -1088382556)\n\t\t+ W(7, 1027145139, -1149726053, 1021646261, 1032555200) + W(8, 1052962698, -1089853747, -1126936380, 1015641511)\n\t\t+ W(9, -1114632613, 1005792618, 1044159722, -1092765869) + W(10, 1027348136, 1023282088, 1036339578, 1040940927)\n\t\t+ W(11, 992460573, -1093589176, -1126618160, 981480241);\n\tsum2 =\n\t\tW(0, 1016441223, 1040812131, -1091551076, -1083270432) + W(1, 1054198423, 1001473573, -1123853806, -1136381199)\n\t\t+ W(2, 1020713637, -1123741604, -1108424657, -1110846033)\n\t\t+ W(3, 1034027700, -1121560396, -1092123318, 1057043619)\n\t\t+ W(4, -1115262538, 1008724259, 1016212045, -1100123577)\n\t\t+ W(5, 1069362941, 1065772322, -1092584961, -1120589670) + W(6, 1025170155, -1100550013, 1050653373, 1058297195)\n\t\t+ W(7, -1121642970, 1040111989, 1030169991, -1105283667)\n\t\t+ W(8, 1020763615, -1091989226, 1029919048, -1104422780)\n\t\t+ W(9, 1024326153, 1029487024, -1121149602, -1092470882)\n\t\t+ W(10, 1039520200, 1027795061, 1020004331, -1102325825)\n\t\t+ W(11, -1094990109, -1106605421, 1026718342, -1115881428);\n\tWS(-1083424620, -1083774644);\n\tsum1 =\n\t\tW(0, 1025997707, -1107578509, -1116799831, 1051882641) + W(1, -1114213177, -1140244728, 995558823, -1112668224)\n\t\t+ W(2, -1098861996, 1045883512, -1127946135, -1116793621)\n\t\t+ W(3, -1132669247, -1109754213, -1099316274, 1060321715)\n\t\t+ W(4, -1106758402, -1131243108, 1015677409, 1048694360)\n\t\t+ W(5, -1079768279, 1059777970, 1040276008, -1129876893)\n\t\t+ W(6, -1113673299, -1099923633, -1093459346, 1064776049)\n\t\t+ W(7, -1108196294, -1167573435, -1146244698, 1044345284)\n\t\t+ W(8, -1098475085, 1036566882, 1008462282, 1020492609) + W(9, 1028038186, -1117921566, -1113981277, 1042756750)\n\t\t+ W(10, -1117078569, 1015090721, -1119640804, 1030760459)\n\t\t+ W(11, -1105585281, 1033934183, -1130472177, -1176961296);\n\tsum2 =\n\t\tW(0, -1120400279, -1120118931, -1114073896, 1044457775) + W(1, 1036833596, -1137956564, 1006239848, -1112851025)\n\t\t+ W(2, 1016448074, -1095953339, -1112980685, -1122147671)\n\t\t+ W(3, 1033967902, -1101370370, 1047917593, 1065044078) + W(4, -1119396143, 987310366, -1138878316, 1037781128)\n\t\t+ W(5, -1113781647, 1069276419, -1110041421, -1187381491)\n\t\t+ W(6, 1012842788, -1100258045, 1045546113, -1075186216)\n\t\t+ W(7, -1132903556, -1131003226, -1135736068, 1002346920)\n\t\t+ W(8, -1114666278, 1035717470, -1120766465, 1029533357)\n\t\t+ W(9, 1028356101, -1112182778, 1002645288, -1097061266) + W(10, 1015304410, 1003776904, -1120658117, 995892591)\n\t\t+ W(11, -1115876966, 1049663208, -1123504973, -1150885167);\n\tWS(1055938007, -1113494123);\n\tsum1 =\n\t\tW(0, 1002908945, 1028210664, -1133494457, -1135464580) + W(1, 1008466835, -1131269290, 1005413771, -1117675639)\n\t\t+ W(2, 1035958810, -1095959351, 1040264713, 1035203030) + W(3, 1025040167, 1040926954, 1041989700, -1087581816)\n\t\t+ W(4, 1048292991, -1116685065, 1016082831, -1118443670)\n\t\t+ W(5, -1101702418, -1121242873, 1034336763, -1117662885)\n\t\t+ W(6, -1114102015, 1040854289, -1098047787, 1048632765) + W(7, 1043249233, -1132796663, 1024456642, 1046508410)\n\t\t+ W(8, -1093641223, 1052220147, -1183964258, -1144182458)\n\t\t+ W(9, -1121270129, 1019764906, -1111985289, 1025236686)\n\t\t+ W(10, 1036425152, -1137681823, 1006080470, 1029150738)\n\t\t+ W(11, -1102768646, 1042463785, -1131127167, 1031884341);\n\tsum2 =\n\t\tW(0, -1148833389, -1103329032, 1039527980, 1036545465) + W(1, -1140514638, -1111163586, 1034952858, -1114547380)\n\t\t+ W(2, 1019372679, -1111710878, 1042452640, 1025974311) + W(3, -1131645803, -1099667252, 1017530647, 1040867364)\n\t\t+ W(4, 1048394746, -1102843950, 1044582101, 1046239383) + W(5, -1095619156, 1074171367, 1046568773, 1030125627)\n\t\t+ W(6, -1100126968, 1038848953, 1053527025, -1072583834) + W(7, -1104419698, 1045672947, 1041029558, 1023994452)\n\t\t+ W(8, -1122648352, -1089175055, -1095650184, 1033990232)\n\t\t+ W(9, -1101188496, 1040593566, 1048348234, -1110512168)\n\t\t+ W(10, -1113024814, 1039972451, 1038559400, -1104909140)\n\t\t+ W(11, 1034383711, 1048723535, -1105559093, -1123744674);\n\tWS(1054254551, 1014537956);\n\tsum1 =\n\t\tW(0, -1121039367, 1035774671, -1112598570, -1132150029) + W(1, -1109088445, 1040615567, 1018675757, -1130008697)\n\t\t+ W(2, 1008273253, -1122251932, -1109769252, 1003469451) + W(3, 1022410264, 1030747950, -1093495169, 1041075666)\n\t\t+ W(4, -1103842329, 1040565356, 1028321069, -1107714718)\n\t\t+ W(5, 1061840455, -1100441032, -1105690119, -1126038165)\n\t\t+ W(6, 1032078897, -1097508911, 1062686448, -1084814013)\n\t\t+ W(7, 1049125597, -1115375938, 1035879540, -1100889147)\n\t\t+ W(8, 1058139578, -1090418276, 1045096257, -1105705223) + W(9, 998902321, -1111836109, 1050284599, -1098262366)\n\t\t+ W(10, 1018266794, 1030169589, 1035017184, -1112194220)\n\t\t+ W(11, 1050365160, -1104639554, -1137878196, -1123088958);\n\tsum2 =\n\t\tW(0, 1011204314, -1130282463, -1119643322, 1040567914) + W(1, 1058038651, -1092395975, -1151906447, 1008292026)\n\t\t+ W(2, 1036989282, -1093705400, 1048788001, 1041384381) + W(3, -1132982086, -1113509623, 1023195387, 1046529995)\n\t\t+ W(4, 1069827352, -1082188469, 1015334447, -1118416042) + W(5, 1031871454, 1053486166, 1061661513, -1087135929)\n\t\t+ W(6, -1126682819, 1010705513, 1036745108, 1053627848) + W(7, -1076895592, 1050130047, 1031867988, 1015562377)\n\t\t+ W(8, -1105750465, -1097180463, -1083563182, 1062283738)\n\t\t+ W(9, -1118412630, 1033032763, 1024841875, 1042871577)\n\t\t+ W(10, -1102862368, -1108358221, 1019402007, -1171211484)\n\t\t+ W(11, -1132045005, -1098551422, -1093245544, 1058279550);\n\tWS(1057163500, -1105993220);\n\tsum1 =\n\t\tW(0, -1117201821, -1127293622, 1046510122, -1119279260) + W(1, -1111026820, 1018908832, -1121502764, 1045431725)\n\t\t+ W(2, -1097880614, 1032698105, 1044535287, -1110256660)\n\t\t+ W(3, 1035599249, -1100979748, 1061106926, -1097882833)\n\t\t+ W(4, -1095331735, 1024080836, -1105708961, 1049617722)\n\t\t+ W(5, -1099817760, -1088567265, 1053288920, -1117593824)\n\t\t+ W(6, 1039647740, -1110465655, -1119635500, 1058361641)\n\t\t+ W(7, -1096979757, 1027464313, -1100922079, 1042176840)\n\t\t+ W(8, -1109566363, -1097567811, 1050620014, -1113789929)\n\t\t+ W(9, 1009912816, 1018827936, -1147860066, 1036626725) + W(10, 999121112, -1159432152, -1136735831, 1001114727)\n\t\t+ W(11, 1037588842, -1111863248, 1037098289, 1012647057);\n\tsum2 = W(0, 1032576295, -1107895050, 1016729470, 1038099246)\n\t\t + W(1, -1122727069, -1114110583, -1123342042, 1039805910)\n\t\t + W(2, -1102939450, -1120156902, -1128970625, -1124467804)\n\t\t + W(3, -1102694716, 1052615154, 1050355566, -1100691281)\n\t\t + W(4, 1046407453, -1110408836, -1132748357, 1027679479) + W(5, 1057040101, -1098318717, 997134844, 1035923921)\n\t\t + W(6, -1114775905, -1183264704, 1041423933, 1028185223)\n\t\t + W(7, -1094682594, 1040728790, 1033817148, -1127944484)\n\t\t + W(8, -1098800812, 1043085543, 1023808656, -1104134547) + W(9, 942234367, 1017960690, 1027447559, -1113846578)\n\t\t + W(10, 1033077879, -1111084310, -1109637447, -1117652574)\n\t\t + W(11, -1113353192, 1025700351, -1136470782, 1024627457);\n\tWS(1069430838, -1077807532);\n\tsum1 = W(0, -1123171840, 926704291, 1028287308, 1024652287)\n\t\t + W(1, -1121358347, -1124249574, -1123870031, 1035074891)\n\t\t + W(2, 1030377682, -1104443381, -1137933441, -1123723658)\n\t\t + W(3, 1012978707, -1102713036, 1060355037, 1049114747)\n\t\t + W(4, -1102473935, -1124350158, 1026708965, -1094582899)\n\t\t + W(5, 1064667974, 1049334299, -1095444677, -1155502135)\n\t\t + W(6, 1032241614, -1104095024, 1044883747, -1097738289)\n\t\t + W(7, -1112982200, 996719039, -1110089696, -1131766218)\n\t\t + W(8, 1023923417, -1112895132, -1115022670, -1114119663)\n\t\t + W(9, 1013657340, -1123449267, 1023074654, -1133494194)\n\t\t + W(10, -1123735342, -1129702439, -1120091289, -1126388352)\n\t\t + W(11, -1134219998, -1105084689, -1125652635, -1115595936);\n\tsum2 =\n\t\tW(0, -1176390445, -1120278537, -1122813389, 1041053822) + W(1, 1022193201, -1120846771, 1032791968, -1112747779)\n\t\t+ W(2, -1119517685, 1042596904, -1132233097, -1150821318)\n\t\t+ W(3, -1107216374, 1039675898, 1061000499, 1032712030) + W(4, 1037891533, -1120324549, 1039748018, 1025598156)\n\t\t+ W(5, 1059349510, 1055783944, 1009116037, 1006903493) + W(6, -1104895086, 1049256042, -1087513873, -1099074048)\n\t\t+ W(7, -1107732985, -1117395279, 1038133354, -1105015824)\n\t\t+ W(8, 1030867610, -1084050573, -1101549778, 1034659541)\n\t\t+ W(9, -1123666927, 1024448666, -1108606159, 1040697602)\n\t\t+ W(10, 1022775251, -1115429715, 1013658503, -1110290749)\n\t\t+ W(11, 1029186614, -1106116496, -1106656496, 1028618234);\n\tWS(-1107817820, -1083770194);\n\tsum1 =\n\t\tW(0, 1033900161, -1103638846, -1091016130, 1053216608) + W(1, 1041711845, 1032252891, -1129878691, 1019165999)\n\t\t+ W(2, -1105602789, 1056291523, -1114138529, 1005244003)\n\t\t+ W(3, -1129439246, 1023785569, -1097747004, 1057499003)\n\t\t+ W(4, -1107402783, -1129556050, -1131338575, 1041664750)\n\t\t+ W(5, -1076846267, 1059566574, 1043057225, 1037921123) + W(6, 1015365308, 1007653393, -1089110318, 1057822998)\n\t\t+ W(7, -1097881621, -1126092988, -1128788741, 1026305479)\n\t\t+ W(8, -1101714279, 1057215924, -1104471663, 1041959808) + W(9, 1034359265, 1029035509, -1095981534, 1051239662)\n\t\t+ W(10, 1029122288, 1025745172, 1024049691, -1111132977)\n\t\t+ W(11, -1089968180, 1055184137, 1032118072, 1027268745);\n\tsum2 = W(0, -1108694073, 1017327589, 1040440313, 1037365040)\n\t\t + W(1, -1097181356, -1123414724, 1045019344, 1034893158)\n\t\t + W(2, 1020539438, 1043169414, 1044490295, -1142407924)\n\t\t + W(3, -1102469381, -1100848825, -1091152854, -1179472005)\n\t\t + W(4, -1098856738, -1124070306, 1037993179, -1146521528)\n\t\t + W(5, 1062010427, 1059039676, -1105305386, -1103656828)\n\t\t + W(6, -1102369829, -1136622056, 1017850914, 1038217042)\n\t\t + W(7, -1109601321, 1025666621, 1036817135, -1122158468)\n\t\t + W(8, -1095264144, -1119445175, -1098482637, -1105116469)\n\t\t + W(9, -1116848662, 1036214504, 1045324437, 1048192551)\n\t\t + W(10, 1034613852, 1027457629, -1123721670, -1109074807)\n\t\t + W(11, 1047380031, -1115655698, -1105047780, -1121369495);\n\tWS(-1121449656, -1084978473);\n\tsum1 = W(0, 1045775831, -1099605930, -1086366198, 1054843763) + W(1, 1044622847, 1025802254, 1021114964, 1028648016)\n\t\t + W(2, -1100836955, 1049277222, -1121703995, -1116658981)\n\t\t + W(3, 1036495664, -1113195701, -1085601027, 1059006957)\n\t\t + W(4, 1039106531, -1138285574, 1032769888, -1106810756)\n\t\t + W(5, -1088747404, 1062277595, -1122091582, 1043922200)\n\t\t + W(6, -1134400474, 1033523886, -1083936243, 1060137529)\n\t\t + W(7, -1102614275, 1020367213, 1043049231, -1109837568)\n\t\t + W(8, -1087596695, 1057384673, 1011169881, 1042132230)\n\t\t + W(9, -1112792957, 1039225431, -1102874546, 1045407794)\n\t\t + W(10, -1118753961, -1132370673, 1043659613, -1097941829)\n\t\t + W(11, -1088234269, 1055835664, 1048366450, 1039326553);\n\tsum2 =\n\t\tW(0, 1027272459, -1105747151, 1058588727, 1050147388) + W(1, -1089616072, 1040922163, -1122536322, -1103046200)\n\t\t+ W(2, 1025881493, 1054947781, -1098050255, -1157391810) + W(3, -1115599503, 1043039962, 1025318337, 1058930692)\n\t\t+ W(4, 1020160348, -1097372724, -1109953333, 1029006014)\n\t\t+ W(5, -1079698237, -1072349877, 1078384354, 1029236731)\n\t\t+ W(6, -1101108438, 1049577028, -1116019666, -1069493839)\n\t\t+ W(7, 1078006681, -1111844849, -1160853572, 1035298821)\n\t\t+ W(8, 1050247454, -1072151832, 1075828182, -1095907204)\n\t\t+ W(9, -1125199072, 1043042004, -1104971590, -1072978341)\n\t\t+ W(10, 1074567753, 1046502148, -1105305527, 1053260045)\n\t\t+ W(11, -1094505007, -1072202568, 1072013431, 1037030073);\n\tWS(-1076413686, 1050217089);\n\tsum1 = W(0, 1037264211, -1103937453, 1032015257, 1043075881)\n\t\t + W(1, -1122840185, -1144808135, -1140703701, 981259974)\n\t\t + W(2, 1015092336, -1110472573, -1115654547, -1126940256)\n\t\t + W(3, 1010880426, -1126374874, -1117441203, -1140207123)\n\t\t + W(4, -1121072785, -1127053849, -1119658251, 1042459879)\n\t\t + W(5, -1095655209, 1058975156, 1016890098, 1040888602)\n\t\t + W(6, -1116247362, -1115463620, -1089060935, 1059127610)\n\t\t + W(7, -1095200233, 1021095812, 1031154598, 1040532067) + W(8, -1097693400, 1049753500, 1024224509, 990976051)\n\t\t + W(9, -1125273098, -1110800684, -1116339093, 1026525586)\n\t\t + W(10, -1116764924, -1118091276, -1131976189, 1020764716)\n\t\t + W(11, -1115082479, 1038259412, 1027865572, 1016317274);\n\tsum2 = W(0, 1057721492, -1087030854, -1098169441, 976966634) + W(1, 1023517212, 1010046217, 1028643349, -1118716844)\n\t\t + W(2, 1050324940, 1023362490, -1141117066, 1027499437)\n\t\t + W(3, 1060288138, -1080168014, 1016748144, -1115171624)\n\t\t + W(4, 1023617033, -1115470708, 1059252612, -1080273709)\n\t\t + W(5, -1095791676, 1047291739, -1099550108, 1034407868)\n\t\t + W(6, -1088865108, 1065839894, 1025332663, -1136639192)\n\t\t + W(7, 1041241265, -1116997486, -1086775589, 1065802380)\n\t\t + W(8, 1048744751, -1124716700, 1003901823, -1138422172)\n\t\t + W(9, -1123025940, 1052992874, -1103675095, 1045176631)\n\t\t + W(10, -1105682362, 1028187249, -1093527126, 1051057083)\n\t\t + W(11, 1047968677, -1122660154, 1020688386, -1121332252);\n\tWS(1066004950, -1130673709);\n\tsum1 =\n\t\tW(0, -1116101174, 1031654568, -1088044468, 1052873383) + W(1, 1041536990, -1136500130, -1143212072, -1115365365)\n\t\t+ W(2, -1112634148, 1046315731, 1018103788, -1125315968)\n\t\t+ W(3, -1110468285, 1037471350, -1095270314, 1053790292)\n\t\t+ W(4, 1044233532, -1143909091, -1115338446, 1044807147)\n\t\t+ W(5, -1086079158, 1057379349, -1114923292, 1020745202)\n\t\t+ W(6, -1108483849, 1036857292, -1084922887, 1062574892) + W(7, -1111082699, 1016815907, 1016794668, 1049500535)\n\t\t+ W(8, -1089120237, 1059566963, -1112535089, -1120057699)\n\t\t+ W(9, -1129241385, -1116011560, -1096691029, 1043154809)\n\t\t+ W(10, 1013224078, 1009076749, 1013476922, 1018991691)\n\t\t+ W(11, -1092328502, 1052540519, 1045681849, -1111113254);\n\tsum2 = W(0, 1049010278, 1059657103, -1081123115, -1096253478)\n\t\t + W(1, 1022187211, 1042763848, 1037489391, -1120407882)\n\t\t + W(2, -1091075041, 1044030983, -1110198086, -1123055347)\n\t\t + W(3, -1120558834, 1065561208, -1094693777, -1088412254)\n\t\t + W(4, 1026065263, 1010460099, -1115441721, 1065354919) + W(5, -1086070082, -1088804298, 979808314, 1037997843)\n\t\t + W(6, -1107156556, 1033902725, 1048072918, 1059822273) + W(7, 1015305348, -1106407542, 992841734, -1090673211)\n\t\t + W(8, 1058489027, 1048768363, -1103664360, -1127526979)\n\t\t + W(9, 1011333881, -1082019922, 1067731839, -1110539158)\n\t\t + W(10, -1102578162, 1046102351, 1042878013, -1076779646)\n\t\t + W(11, 1065573397, 1056386736, 1041735451, -1098151359);\n\tWS(1047691950, 1051513987);\n\tsum1 =\n\t\tW(0, 1022367675, -1106171493, 1047705594, -1115678670) + W(1, -1110486184, -1119968336, 1023115866, -1148261013)\n\t\t+ W(2, -1138130365, 1039875161, 1038987295, -1146539325)\n\t\t+ W(3, 1025923810, -1110614526, -1138856554, -1098498099)\n\t\t+ W(4, -1111291916, 1031736900, -1121417283, 1048684730)\n\t\t+ W(5, -1092459648, 1059839847, 1037143648, -1113038256)\n\t\t+ W(6, -1135269348, 1043654816, -1088007377, 1055365231) + W(7, -1116325726, 999460043, -1123344254, 1037977761)\n\t\t+ W(8, -1117423671, -1110502987, 1038170008, -1124410005)\n\t\t+ W(9, -1153116613, 1018209505, -1145599589, -1108540005)\n\t\t+ W(10, 1024662707, -1170140361, -1140725337, 1012206837)\n\t\t+ W(11, -1130685354, 1013205632, -1106962771, 1022378313);\n\tsum2 =\n\t\tW(0, -1153456458, 1034638423, 1026219462, -1118314715) + W(1, -1119545213, 1020158000, -1134949160, -1132037434)\n\t\t+ W(2, -1110235102, 1026400860, 1033998497, -1129681397) + W(3, 976205336, 1047224115, 1041432515, -1098555575)\n\t\t+ W(4, 1038320636, 1034767622, -1107040555, -1111241686)\n\t\t+ W(5, -1098519781, 1048945857, 1042089138, -1100590807) + W(6, 1031938263, -1102088763, 1016119332, 1066956313)\n\t\t+ W(7, -1089428981, -1131704894, -1148458760, -1109506803)\n\t\t+ W(8, 1045200456, 1038098069, -1088147582, 1033722488) + W(9, -1128058621, -1119972538, 1026438298, 1020127420)\n\t\t+ W(10, -1103340362, 1036980701, 1018102832, -1122339703)\n\t\t+ W(11, 1012163112, 1026446934, -1114149729, -1126638758);\n\tWS(1065730166, 1060778308);\n\tsum1 = W(0, -1109508860, -1157499671, 1041425921, 999270323)\n\t\t + W(1, 1009856488, -1122732458, -1155017835, -1122491724)\n\t\t + W(2, 1039607429, -1108915110, 1019270959, 1019165315)\n\t\t + W(3, -1113193022, -1101845990, 1059840031, -1093896302)\n\t\t + W(4, 1048952862, -1112299503, 1018445113, -1123710636)\n\t\t + W(5, -1103201623, 1034241095, -1124851701, 1031136123)\n\t\t + W(6, -1116526739, 1037579925, -1086536234, 1065443257)\n\t\t + W(7, -1100984082, -1130156262, 1027367671, -1109701838)\n\t\t + W(8, -1119532176, -1115473720, 1042597895, -1112137490)\n\t\t + W(9, -1113248331, 1024052458, -1131587533, 1023021127)\n\t\t + W(10, 988759974, 1035869970, -1116098736, -1155438706)\n\t\t + W(11, -1135484603, -1169161851, -1109972554, 1026435614);\n\tsum2 = W(0, -1117967445, 1023936292, 1048994422, 1036573845) + W(1, 1025878262, -1136777476, 1040648348, 1027011316)\n\t\t + W(2, -1081925843, -1090561506, -1121546197, 1000734832)\n\t\t + W(3, -1112630617, -1104815876, 1069895227, 1061477130)\n\t\t + W(4, 1006994724, -1120512530, 1042642774, 1032485416)\n\t\t + W(5, -1079286264, -1076993331, 1017402756, 1043800887)\n\t\t + W(6, -1134880336, -1097739621, 1067803238, 1074358700)\n\t\t + W(7, -1094759274, -1115175264, -1108734545, 1008252288)\n\t\t + W(8, -1093635474, -1082750513, -1124517798, -1106635673)\n\t\t + W(9, 1042723069, 1027781874, 1039731885, -1152591489)\n\t\t + W(10, -1128233335, 1050798200, -1110919553, 1017816544)\n\t\t + W(11, -1113045602, 1040942069, 1015619872, -1104563368);\n\tWS(1051081815, 1004177576);\n\tsum1 = W(0, -1127006616, 1047378036, 1040477302, -1095193921) + W(1, 984028115, 1015654525, 1009183853, -1123222753)\n\t\t + W(2, -1133548407, -1099314072, 1033152150, 1000220336)\n\t\t + W(3, 1030806032, 1030530563, 1061394914, -1084986498)\n\t\t + W(4, -1134209438, 1016832613, 1035550201, -1112167248)\n\t\t + W(5, 1067589976, -1091645900, -1104155199, 1007541309)\n\t\t + W(6, -1148492092, -1102096100, 1061693295, -1092420382)\n\t\t + W(7, -1126214664, 1020442767, 1031890286, -1119963793)\n\t\t + W(8, 1056018877, -1084371172, -1117645071, 1016050244)\n\t\t + W(9, -1122950699, -1117414047, 1051876647, -1100397982)\n\t\t + W(10, -1115478541, 1015156587, 1033051522, -1118879820)\n\t\t + W(11, 1054656608, -1096248194, -1098736399, -1120116135);\n\tsum2 =\n\t\tW(0, 1038737431, -1086393652, -1122890851, 1062117952) + W(1, 1031555324, -1105710539, -1107492679, 1061143042)\n\t\t+ W(2, -1087802869, -1089713201, 1047951996, 1021198999) + W(3, 1048033211, -1086071985, 1050554685, 1059347527)\n\t\t+ W(4, 1026779363, -1103176732, -1120313369, 1050160290) + W(5, 1074235084, 1068761695, -1098359769, 1024031768)\n\t\t+ W(6, 1015799927, 1036302581, -1097102610, 1051722018)\n\t\t+ W(7, 1043634021, -1105088271, -1127256174, -1118303985)\n\t\t+ W(8, -1080828834, -1090432670, -1093586557, 1023611974)\n\t\t+ W(9, -1108431753, 1030572627, 1051308486, -1096060997)\n\t\t+ W(10, -1093678452, -1113357802, 1025558434, 1049210573)\n\t\t+ W(11, -1086660156, -1089293346, -1099341241, 1042868230);\n\tWS(-1081907798, -1114644056);\n\tsum1 = W(0, 1023775725, -1099395677, 1055907631, -1100928459)\n\t\t + W(1, -1119324179, -1109439504, -1170980595, -1134709766)\n\t\t + W(2, 1050593936, -1112754945, 1032148262, 1017060589)\n\t\t + W(3, 1026005873, -1099241994, 1058604967, -1087793848)\n\t\t + W(4, 1009969504, -1128826918, -1126334628, -1120114113)\n\t\t + W(5, 1054687330, -1087665246, 1038203192, -1138112959)\n\t\t + W(6, -1135823392, 1034531271, 1038229186, -1104299004)\n\t\t + W(7, 1028440637, 1038462084, -1129163353, -1108351113) + W(8, 1034921283, 1040795209, -1104169898, 999099597)\n\t\t + W(9, -1151688884, 1019473342, 1018134455, 1040889398)\n\t\t + W(10, -1106565731, 1007377992, -1129940170, -1110039318)\n\t\t + W(11, -1120708196, 1054318790, -1107725509, 1027667523);\n\tsum2 = W(0, -1119441358, -1109792567, -1127769135, -1107196821)\n\t\t + W(1, 1030789742, -1113410550, -1129970231, -1120391232) + W(2, 1050978947, 992017798, 1040616080, 1030775978)\n\t\t + W(3, 1013923693, -1103233485, 1033489482, -1095646457)\n\t\t + W(4, 1038693473, -1115392393, -1135011770, -1103316489)\n\t\t + W(5, 1054134565, 1049668759, -1124339641, -1108882435)\n\t\t + W(6, 1015830944, -1104701758, 1049300223, 1056508485) + W(7, 1043974386, -1145057435, -1115083307, 961266788)\n\t\t + W(8, -1110832497, 1047186396, -1086696217, -1118394614)\n\t\t + W(9, 1009913072, -1120471806, 1049274561, -1110580647)\n\t\t + W(10, -1110322035, 1032794842, -1117182320, 1032096200)\n\t\t + W(11, -1124368769, -1109467751, -1103392519, 1029776437);\n\tWS(1054547415, -1080700728);\n\tsum1 = W(0, -1118959255, -1106813137, -1136179854, 1049136707)\n\t\t + W(1, -1121699838, -1110798213, 1000886579, 1020745112)\n\t\t + W(2, 1042266506, -1113159542, -1135369949, -1133353861)\n\t\t + W(3, -1108938574, 1000629071, -1114102394, -1117329322)\n\t\t + W(4, -1098171678, -1132246652, 1035589374, -1089948699)\n\t\t + W(5, 1058763908, 1057279043, -1102488395, -1116069530)\n\t\t + W(6, -1115953331, -1104374042, 1043996152, 1058534976)\n\t\t + W(7, -1118338951, 1023843187, -1120209015, -1115354302)\n\t\t + W(8, 1034434840, 1042941412, -1123101368, -1110056358)\n\t\t + W(9, -1130255148, -1115551813, 1030595334, 1024662339)\n\t\t + W(10, -1111680098, -1125104281, -1114831416, -1107411355)\n\t\t + W(11, 1037557447, -1115931546, -1111356186, -1113468791);\n\tsum2 =\n\t\tW(0, -1104438281, 1010047952, 1041416137, -1126834256) + W(1, -1137643420, -1141914640, 1006975884, 1033813267)\n\t\t+ W(2, -1103312430, -1117623020, -1119875938, -1142859168)\n\t\t+ W(3, -1114845259, -1104617278, 1059878226, -1091497753)\n\t\t+ W(4, 1032827109, -1115736166, -1121830816, 1016682467) + W(5, 1030331467, 1058017528, -1098691452, 1030249718)\n\t\t+ W(6, 1035922248, -1119230330, 1042445877, 1016098448) + W(7, 1038105687, -1111253212, -1109021584, 1016925125)\n\t\t+ W(8, -1127060444, 1041560361, -1110812698, -1153808400)\n\t\t+ W(9, 1024387710, 1031893944, -1106783001, -1112957506)\n\t\t+ W(10, 1032692112, -1114320479, -1116080890, 1028042677)\n\t\t+ W(11, -1113418625, 1032681483, -1112120334, -1122393388);\n\tWS(1052913623, 1049378679);\n\tsum1 =\n\t\tW(0, -1122838827, 1042960148, -1086626395, 1057292387) + W(1, 1037967453, -1155224026, -1140317417, -1131398976)\n\t\t+ W(2, -1096052024, 1051976144, -1115050310, 1021209962)\n\t\t+ W(3, -1125024735, 1047376245, -1085621156, 1057250406)\n\t\t+ W(4, 1033197251, -1137632582, -1119624720, -1142164473)\n\t\t+ W(5, -1082562971, 1065554348, -1105683981, 1041116332)\n\t\t+ W(6, -1114511683, 1052155164, -1087926293, 1052193006) + W(7, 1022767638, -1114068531, 1000517975, 1026436976)\n\t\t+ W(8, -1091398264, 1054127476, 1031945184, 1019309136) + W(9, 980913767, 1040745327, -1096441475, 1052669955)\n\t\t+ W(10, -1117629257, -1119607996, -1118732996, 1037554661)\n\t\t+ W(11, -1088065070, 1051850318, 1041425290, 1029050594);\n\tsum2 =\n\t\tW(0, -1128729473, -1113890565, 1030681183, -1116238263) + W(1, 1054381777, -1088819879, 1026695603, -1113695617)\n\t\t+ W(2, 1046246583, 1032966985, 1060417287, -1094452995) + W(3, -1122814467, 1012493154, -1119541727, 1063042504)\n\t\t+ W(4, 1065151040, -1073258706, 1038041001, 1007226362) + W(5, -1105895610, 1066720275, 1069419683, -1071852139)\n\t\t+ W(6, -1114364242, 1022932917, 1013035938, 1061802664) + W(7, 1070184946, -1071972143, 1029245131, -1121347205)\n\t\t+ W(8, -1109256305, 1054635319, 1067716376, -1076852924) + W(9, -1114309631, 1028217359, 1037707015, 1034508407)\n\t\t+ W(10, 1063333907, -1084913408, -1131614889, 1005475605)\n\t\t+ W(11, 1018572933, -1114817272, 1057796391, -1086618913);\n\tWS(-1080205366, 1054586731);\n\tsum1 =\n\t\tW(0, 1028285119, -1104231365, -1105384067, 1018315643) + W(1, 1050517144, -1107795033, 1034516295, -1118125300)\n\t\t+ W(2, -1098317298, 1050987674, -1103331232, 1030553289)\n\t\t+ W(3, -1114270114, -1122896269, -1102251495, 1045079495)\n\t\t+ W(4, 1044797187, -1134423957, 1028158052, 1031422323) + W(5, -1084181862, 1065887519, -1106919576, 1039594145)\n\t\t+ W(6, -1122816794, 1042423964, -1083878719, 1058366107)\n\t\t+ W(7, -1136969466, -1127143669, 1015275709, -1113275778)\n\t\t+ W(8, -1102645126, 1055927247, -1127822612, 1007528111) + W(9, 1008209269, 1035567225, -1094749758, 1042520123)\n\t\t+ W(10, -1111681950, -1112108944, 1026827799, -1113291743)\n\t\t+ W(11, -1095155767, 1054820368, 1023800268, 1010334934);\n\tsum2 = W(0, 1018519238, 999332143, 1041061518, 1033756160) + W(1, 1071473984, -1074851124, 1015687849, 1021267259)\n\t\t + W(2, -1105547391, 1042746528, 1066765865, -1079967238)\n\t\t + W(3, -1123243110, 1021268373, 1034089943, 1026544409)\n\t\t + W(4, 1067795051, -1079279124, -1154321191, 1001850235)\n\t\t + W(5, -1097359239, 1057524548, 1059938647, -1081222132)\n\t\t + W(6, -1147705571, -1122367554, 1024181853, -1128118669)\n\t\t + W(7, -1126584943, 1036308208, -1137574530, -1149097003) + W(8, 964634475, 1033087855, -1109247299, 995399503)\n\t\t + W(9, 1025499637, 1028798873, -1139074510, -1129467393)\n\t\t + W(10, 1002507759, 1006964374, -1123293958, -1120881342)\n\t\t + W(11, 1038775557, -1131901697, -1137941026, -1131371017);\n\tWS(1032292188, -1145187004);\n\tsum1 =\n\t\tW(0, -1121091224, 1026282854, -1110430066, 1041424886) + W(1, -1163709786, -1130362518, -1124591439, 1032165735)\n\t\t+ W(2, -1099744666, 1053335502, -1097458647, 1026340962)\n\t\t+ W(3, -1121198813, 1048823572, -1088767505, 1045555550) + W(4, 1040806261, 1020242430, 1009701366, -1113803654)\n\t\t+ W(5, -1109489438, 1044961340, 1038271382, -1136150382)\n\t\t+ W(6, 1007646671, -1119045850, 1041537816, -1098280566)\n\t\t+ W(7, 1040783354, -1117600916, 1026658136, -1092992668) + W(8, 1047050636, 1043075732, 1037260307, 997023189)\n\t\t+ W(9, 1020346030, 1019935126, -1121506375, -1107270401)\n\t\t+ W(10, 1000329008, -1124456788, -1122546321, -1119672872)\n\t\t+ W(11, -1110555528, 1047792295, -1120965766, 1026784415);\n\tsum2 =\n\t\tW(0, -1120115102, 1027036707, 1028744443, 1037973272) + W(1, -1111409649, -1114092190, 1024423113, -1119221834)\n\t\t+ W(2, -1122478763, 1049287438, -1096539764, 1034186497) + W(3, -1131404107, 1034928052, 1034534080, 1047707985)\n\t\t+ W(4, 1032305459, -1111870688, -1162462122, -1115806512)\n\t\t+ W(5, -1117650486, 1065549495, 1059270295, -1104163224)\n\t\t+ W(6, -1116017912, -1133321326, -1108495610, -1079218451)\n\t\t+ W(7, 1053073262, -1116841516, 1035047655, -1101382306)\n\t\t+ W(8, -1105332910, -1101676179, -1108544028, 1038206879)\n\t\t+ W(9, -1146105278, 1029706393, 1038914207, -1109811124)\n\t\t+ W(10, -1125217018, 1004549098, 1011265421, 1023154260)\n\t\t+ W(11, -1113944011, -1116861489, 1023662974, 1021319568);\n\tWS(1065238444, 1029810764);\n\tsum1 = W(0, -1117664959, 1035631050, -1105662947, 1044376095)\n\t\t + W(1, -1180059800, -1144996235, 1033625479, 998132025) + W(2, -1110409480, 1041425605, 1029921727, 1002652741)\n\t\t + W(3, -1121511107, 1046740798, -1115600622, -1117226857) + W(4, 1047596134, 986508455, 1026353828, 1049143094)\n\t\t + W(5, -1117398499, -1088462543, 1050498082, 1031133314)\n\t\t + W(6, -1154871713, 1044265580, -1101622768, -1090821428)\n\t\t + W(7, 1032067983, -1119889178, 980940712, 1037075730)\n\t\t + W(8, -1109487884, -1099167518, -1134957959, 1038687768)\n\t\t + W(9, 1018182811, 1028486865, -1112099063, 1039936213)\n\t\t + W(10, 1021107193, -1122286680, 1025470327, -1128624253)\n\t\t + W(11, -1120941494, -1117520833, 1019194744, 1032539083);\n\tsum2 =\n\t\tW(0, 1027136813, -1109237812, -1131106290, 1028116649) + W(1, -1115313320, -1132573667, -1126103938, 1029641913)\n\t\t+ W(2, 1047599733, 1041211299, -1119521049, 1022404146)\n\t\t+ W(3, -1134438995, -1108335880, -1097134429, -1092284431)\n\t\t+ W(4, -1100904528, 1016921434, 1023841561, 1016569578) + W(5, -1076957808, -1103461794, 1040752059, 1027441157)\n\t\t+ W(6, 1003327910, 1032415828, 1044824498, 1073063564) + W(7, 1045381268, -1106952976, -1130954514, 999116870)\n\t\t+ W(8, 1037851390, -1111597872, -1112786376, 1036890340)\n\t\t+ W(9, -1135210803, 1003972614, -1123469057, 1033926584)\n\t\t+ W(10, 1034574746, -1110049884, 994333964, -1138234067)\n\t\t+ W(11, 1043898273, -1115472968, -1137298819, -1139674515);\n\tWS(-1111543132, 1053084187);\n\tsum1 = W(0, 1033211657, 1029336727, 1056808676, -1089574549)\n\t\t + W(1, -1112225370, 1035575202, -1116548448, -1100473306)\n\t\t + W(2, 1042013257, -1097689349, 999357322, -1114691470) + W(3, 1043994373, 1036113196, 1061342772, -1087296749)\n\t\t + W(4, 1042186215, 1040681774, -1112421659, -1100606697)\n\t\t + W(5, 1060655799, -1082434496, -1100755553, 1045312421)\n\t\t + W(6, 1033458902, -1117467379, 1059165410, -1087667391) + W(7, 1042539448, 1039236406, 1042588164, 1024205686)\n\t\t + W(8, 1057924951, -1091727169, 1041805473, 1042949980)\n\t\t + W(9, -1106715184, -1098518156, 1042727104, -1095816456)\n\t\t + W(10, -1105873704, -1113675407, 1042106754, 1010302211)\n\t\t + W(11, 1057649845, -1093601226, -1114265639, 1035739628);\n\tsum2 =\n\t\tW(0, 1036389819, 1006854517, 1049279774, -1104547241) + W(1, -1140479293, 1032391465, -1106855677, -1114095075)\n\t\t+ W(2, -1106885840, -1120692701, -1096936463, -1098591621)\n\t\t+ W(3, 1031620401, 1044374087, 1052305677, 1045612807) + W(4, 1051540981, -1115708783, -1109245550, -1105124479)\n\t\t+ W(5, 1054861276, 1058901209, -1092919117, -1081363743) + W(6, 997072274, -1105277948, 1057655059, 1054428932)\n\t\t+ W(7, -1129490106, -1090444858, -1132619277, 1043212463) + W(8, 1046093411, 1034709627, 1034565381, 1017473602)\n\t\t+ W(9, -1096737767, -1104242691, -1094755169, 1054770354)\n\t\t+ W(10, -1092959620, -1098730750, 1049991282, -1113287926)\n\t\t+ W(11, 1057224822, -1094426804, 1030915645, 1044114915);\n\tWS(-1084020140, 1068126260);\n\tsum1 = W(0, 1006295077, -1156074282, 1049019906, -1097931528)\n\t\t + W(1, -1117241095, -1123621559, -1137936208, -1103771606)\n\t\t + W(2, 1049395923, -1091558419, 1040511881, 1023627215)\n\t\t + W(3, 1034316741, -1104490636, 1061237576, -1086810430)\n\t\t + W(4, 1040083512, -1108467318, -1149620895, 1038480604)\n\t\t + W(5, 1033598516, -1099102215, 1044377854, -1115694024)\n\t\t + W(6, -1141477121, 1018703789, -1094713154, 1059440745)\n\t\t + W(7, 1044961993, -1120119968, -1110713826, 1041233006)\n\t\t + W(8, -1098857908, 1018408058, -1146014215, -1145494414)\n\t\t + W(9, -1119964867, 1031629367, 1023717620, -1122483505)\n\t\t + W(10, 1038059949, -1122997930, -1159113641, 1005339683)\n\t\t + W(11, 1036793310, -1108866660, -1129764324, 1007729326);\n\tsum2 =\n\t\tW(0, 1015277664, 1025130698, 1027591084, -1117062871) + W(1, -1101670769, 1019605180, -1114453597, -1134749664)\n\t\t+ W(2, 1033917561, -1115087054, -1114105716, -1131991228)\n\t\t+ W(3, 1036987011, 1032879133, -1126832950, 1055956188)\n\t\t+ W(4, -1097729634, -1104354242, -1112547401, -1134874844)\n\t\t+ W(5, -1114337945, -1108159193, -1123425664, -1097147867)\n\t\t+ W(6, 1038859445, -1112115766, 1026538526, 1052262112) + W(7, 1058230624, -1101321392, -1116674795, 1018163604)\n\t\t+ W(8, -1114930086, 1032023389, 1047994902, -1100180330) + W(9, 983557058, -1128408082, 968847366, -1105383385)\n\t\t+ W(10, 1046456588, -1106875572, -1127718668, 1003243264)\n\t\t+ W(11, -1132712652, -1120777676, 1042953566, 1009596296);\n\tWS(1044178094, -1112419455);\n\tsum1 =\n\t\tW(0, -1131480425, 1028145051, 1050373320, -1113746394) + W(1, -1097767254, 1005496122, 1014469647, -1106904202)\n\t\t+ W(2, 1050878345, -1101407218, 1036986154, 1009224698) + W(3, 1033460669, -1114114798, 1059597501, -1089975999)\n\t\t+ W(4, -1106579916, 1010606701, -1111970637, -1103921210)\n\t\t+ W(5, 1061375910, -1083033439, 1025899544, -1155279741)\n\t\t+ W(6, 1018155424, -1104772954, 1062331213, -1089702156) + W(7, 1034746546, 1027233072, 1028778773, -1105642670)\n\t\t+ W(8, 1054878354, -1100724747, 1032512190, 1015772371)\n\t\t+ W(9, -1120733619, -1122369255, 1050980308, -1095744476)\n\t\t+ W(10, -1113254377, -1131981388, 1036392279, -1105836421)\n\t\t+ W(11, 1057064179, -1096031599, -1120232930, -1140419566);\n\tsum2 =\n\t\tW(0, 1044058702, -1120335698, 1041124235, 1021344157) + W(1, -1087803383, 1057976488, -1105410550, 1016883675)\n\t\t+ W(2, 1035757794, -1104385836, -1085495757, 1058928386) + W(3, 1033398047, 1032351899, -1105578788, 1068114101)\n\t\t+ W(4, -1081571635, 1051244378, -1119512188, -1103364509)\n\t\t+ W(5, -1105098443, 1052569394, -1086748155, 1048853947)\n\t\t+ W(6, -1121578506, -1123961512, 1037191880, 1027075889)\n\t\t+ W(7, 1031589750, -1130402783, -1129503263, 1043612533)\n\t\t+ W(8, 1025665274, -1095293941, 1048618044, -1124003088)\n\t\t+ W(9, 1005093795, -1110855577, 1024086018, -1113226379)\n\t\t+ W(10, -1121765158, 1010599720, -1116781712, 1044044613)\n\t\t+ W(11, 1023695645, -1106316439, 1039073287, -1120128288);\n\tWS(-1095246679, -1087513362);\n\tsum1 = W(0, 1027634667, 1005582218, 1054139855, -1093682933) + W(1, 1002440559, -1142612208, 998672596, 1034119552)\n\t\t + W(2, 1049059024, -1099832192, 1040529483, 1024339285)\n\t\t + W(3, -1149130110, -1098084154, 1052649123, -1089047862)\n\t\t + W(4, -1122861959, 1025618962, 1026870673, -1141537276)\n\t\t + W(5, 1065515488, -1088853800, -1126585773, 1014930618)\n\t\t + W(6, 1006905115, -1098155038, 1064339388, -1084571535)\n\t\t + W(7, -1099945809, -1117714471, 1027369115, -1115874224)\n\t\t + W(8, 1053781857, -1097071228, -1105399392, -1136815962)\n\t\t + W(9, -1156874400, -1130796284, 1050040635, -1107001190)\n\t\t + W(10, 1023818537, 1018962754, 1027010724, -1110211381)\n\t\t + W(11, 1056042372, -1095503614, -1117200441, 1028298602);\n\tsum2 =\n\t\tW(0, 1021849900, 1041438934, -1128850825, 1035803991) + W(1, -1100551265, 1028120411, -1131412357, -1119369172)\n\t\t+ W(2, 1021256857, -1111021944, 1042971908, -1109090883) + W(3, -1118206650, 1040592619, 1046750596, 1038923952)\n\t\t+ W(4, -1109478151, 1026074630, -1125196517, -1114002177)\n\t\t+ W(5, 1025252531, 1072474004, -1083937830, -1100770381) + W(6, 1035111533, 1032710077, 1048692472, 1077302109)\n\t\t+ W(7, -1067064389, 1049109423, -1144348946, 1044882286)\n\t\t+ W(8, -1128830461, -1095554578, -1084038225, 1041329596)\n\t\t+ W(9, 1021086832, -1106944856, 1032666924, 1044371493) + W(10, -1106119426, 1033664959, 1020034266, 1034465258)\n\t\t+ W(11, 1034167215, -1126088605, -1103479472, -1114595648);\n\tWS(-1086863724, -1072185677);\n\tsum1 =\n\t\tW(0, 1028385114, 999422396, 1054099261, -1096116227) + W(1, -1144842721, -1139590961, -1117432553, -1108936247)\n\t\t+ W(2, 1053618221, -1097427086, 1026659130, 1021035463) + W(3, 1039695343, -1104614655, 1060257868, -1085349189)\n\t\t+ W(4, 1037424170, -1123772160, -1109809663, -1104994067)\n\t\t+ W(5, 1062802560, -1083398775, 1038629270, -1103266023)\n\t\t+ W(6, 1021420394, -1154652341, 1056152893, -1099176000)\n\t\t+ W(7, 1048207210, 1017905387, -1123921882, -1146863602)\n\t\t+ W(8, 1045520765, -1110026089, -1118540449, -1111374457)\n\t\t+ W(9, -1130768465, -1114930982, 1044268562, -1104661441)\n\t\t+ W(10, -1129199023, 997564786, 1022384484, 1034006493)\n\t\t+ W(11, 1050379178, -1115290030, -1101129750, -1108736604);\n\tsum2 =\n\t\tW(0, -1122660132, 1040406414, 1007232002, -1096101684) + W(1, -1114861255, 1041847394, 1028330563, 1017997140)\n\t\t+ W(2, 1025921746, 1022732374, 1041150821, -1105481885) + W(3, -1115262781, 1025264396, 1043786284, -1102241564)\n\t\t+ W(4, -1094431556, 1055232297, 1045687787, -1103384157) + W(5, 1040909479, 1055010544, -1078483413, 1061241514)\n\t\t+ W(6, -1108704409, -1151694751, -1108714653, 1057419270) + W(7, -1079156700, 1063042984, 1029063313, 986929807)\n\t\t+ W(8, 1043690826, -1126901852, -1078269109, 1067726336)\n\t\t+ W(9, -1116092784, 1026201848, -1119932664, 1047767958)\n\t\t+ W(10, -1092610189, 1054314043, 1013546756, -1115691336)\n\t\t+ W(11, 1038266954, -1115096031, -1098859524, 1052159629);\n\tWS(-1100931758, -1079897221);\n\tsum1 =\n\t\tW(0, 1002503979, -1105750735, -1109125113, 1042140489) + W(1, -1126416416, -1119888216, 1034941050, 1038153885)\n\t\t+ W(2, 1017797614, 1051948423, 1024057510, 1035399096) + W(3, -1106318298, -1105238364, -1095922988, 1034322060)\n\t\t+ W(4, -1103862864, -1104877795, 1040768819, 1049149819) + W(5, -1090093369, 1059094088, 1040510958, 1042879258)\n\t\t+ W(6, -1115730241, 1028324215, -1091054939, 1049017573)\n\t\t+ W(7, -1112163155, -1120272065, -1141069099, -1106412131)\n\t\t+ W(8, -1102230944, 1050624300, -1106256757, -1112985689)\n\t\t+ W(9, 1027555620, 1039911116, -1127686569, 1045992036)\n\t\t+ W(10, 1017980086, 1033961137, -1123362142, -1114353739)\n\t\t+ W(11, -1097766172, 1043140938, 1018029782, -1117933580);\n\tsum2 =\n\t\tW(0, -1118098210, 1039272612, 1033865352, -1107428188) + W(1, 1041731770, -1138511840, -1106915273, -1120265428)\n\t\t+ W(2, 1043187452, -1111026913, -1108614463, -1129236656)\n\t\t+ W(3, 1038839398, 1047577900, -1107536005, 1034998667)\n\t\t+ W(4, -1104254290, 1049639209, -1115506453, -1112696018)\n\t\t+ W(5, -1090204449, 1068488571, -1073443109, 1065503173) + W(6, 1032442192, -1123012045, 982996928, -1096446249)\n\t\t+ W(7, 1040126834, 1035312463, 1016491198, -1123570623) + W(8, 1042935567, 1013219076, 1041050172, -1104804103)\n\t\t+ W(9, 996494424, -1121836120, -1120793710, -1101384300) + W(10, 998034192, 1040382819, -1145352236, 1026228225)\n\t\t+ W(11, 1030161309, 1023915500, 1038049010, -1106858818);\n\tWS(1060652716, -1122012062);\n\tsum1 =\n\t\tW(0, -1136700086, -1113850590, -1093156519, 1056384406) + W(1, -1101587139, 1021600449, -1120727741, 1022556549)\n\t\t+ W(2, -1098011208, 1052398904, -1106430355, -1114714908)\n\t\t+ W(3, -1136846536, 1030968440, -1100004083, 1062519968)\n\t\t+ W(4, -1132405458, 1016310696, -1102129381, 1036351121)\n\t\t+ W(5, -1079676696, 1061355096, -1107897312, -1113036024)\n\t\t+ W(6, 1035874533, 1049961616, -1097573322, 1059521337) + W(7, 1048756772, 1022545811, -1111246103, -1119797202)\n\t\t+ W(8, -1087704492, 1052440101, -1109566980, 956768943) + W(9, 1019584793, 1037896960, -1096988084, 1048869443)\n\t\t+ W(10, 1020055223, -1121983087, -1111739075, 1033695743)\n\t\t+ W(11, -1092447605, 1048091420, 1043876621, 1018273385);\n\tsum2 = W(0, -1134928360, 1033535752, -1108867200, 1056652859)\n\t\t + W(1, -1094974673, 1034782854, 1028726521, -1102458559)\n\t\t + W(2, 1031241917, 1048810536, -1100509489, -1123876292)\n\t\t + W(3, -1102649789, -1114678181, 1028753942, 1051021341)\n\t\t + W(4, -1100441695, -1100025719, 1041988393, 1050124192) + W(5, 1056497468, 1036208495, 1034323322, 1037384204)\n\t\t + W(6, -1105797881, -1102215651, -1090602802, -1099717915)\n\t\t + W(7, -1115767916, -1098766868, -1125378124, 1032107719)\n\t\t + W(8, 1057082230, -1114740583, 1041259997, 1024245049) + W(9, 1034345705, 1014416128, 1023046526, 1002570703)\n\t\t + W(10, -1122784508, -1114560124, -1134413224, -1119150822)\n\t\t + W(11, 1025484112, -1101875417, 1037850051, -1112409616);\n\tWS(-1104650926, -1097620835);\n\tsum1 =\n\t\tW(0, -1121602225, 1025795527, 1046345311, -1105175020) + W(1, -1160491701, 1000929055, 1021304961, -1105437010)\n\t\t+ W(2, -1108985665, 1045711217, -1117138161, -1145522137)\n\t\t+ W(3, -1132438763, 1039870965, 1041625463, -1093274991)\n\t\t+ W(4, 1040158758, -1117941464, 1033606955, -1097752993)\n\t\t+ W(5, -1144407721, 1062570208, 1049985633, -1122762228)\n\t\t+ W(6, -1119908749, 1037504305, -1100934531, -1099088029)\n\t\t+ W(7, 1037586881, -1109694278, 1032325913, -1109081755) + W(8, 1047145475, -1097698093, 1004919651, 1026835862)\n\t\t+ W(9, -1112547088, -1121171172, -1119544288, -1136783989)\n\t\t+ W(10, -1124949278, 1024727664, 1011690407, -1116159153)\n\t\t+ W(11, 1036418740, -1106563213, 999804916, -1126831120);\n\tsum2 =\n\t\tW(0, -1103930431, -1122873970, 1048581640, -1139346648) + W(1, 1030984702, -1115391660, 1043997541, -1100601593)\n\t\t+ W(2, -1108032519, 1042591516, -1123657132, -1107477718)\n\t\t+ W(3, -1102154605, -1174042309, 1029742536, 1045200151)\n\t\t+ W(4, -1106767363, 1032437784, 1046282803, -1084779372) + W(5, 1068068442, 1052027066, -1086671314, 1025856678)\n\t\t+ W(6, -1106269056, -1114322527, 1051594943, -1098651742)\n\t\t+ W(7, 1024653780, 1036550683, -1116052960, 1046060831)\n\t\t+ W(8, -1119470820, -1115540046, -1127107345, -1121355040)\n\t\t+ W(9, 993204113, -1115511338, -1138871916, 1021777728)\n\t\t+ W(10, -1163609763, -1115373797, -1113135778, 1041954938)\n\t\t+ W(11, 1020181836, -1107159950, -1134598872, -1122730046);\n\tWS(1066180726, 1071088208);\n\tsum1 =\n\t\tW(0, 1019239309, -1125280121, -1096761986, 1046613601) + W(1, -1107071425, 1022045682, -1139409238, 1001471451)\n\t\t+ W(2, 1012641888, -1137946220, 1047813898, 1006921793)\n\t\t+ W(3, 1016498838, -1110062156, -1103040193, -1089511315)\n\t\t+ W(4, 1045045936, 1010038708, -1117575980, 1036666525) + W(5, -1098591157, 1064065326, 1024305865, 1025055882)\n\t\t+ W(6, 1000209679, 1049354787, -1079760364, 1058946251) + W(7, -1110782371, 990559266, -1113394675, 1048739493)\n\t\t+ W(8, -1090655988, 1056455200, 1013890551, 1028621651) + W(9, 1030691589, -1119525817, -1102803453, 1048597558)\n\t\t+ W(10, 981956228, -1118324476, -1133365628, -1103045922)\n\t\t+ W(11, -1099636767, 1050574049, 1043476657, -1146495466);\n\tsum2 = W(0, -1132513434, 1043448685, -1099364915, -1092624350)\n\t\t + W(1, 1056566992, -1119372495, -1110784932, -1133524329)\n\t\t + W(2, 1037755510, 1047633966, -1103089496, -1105722911)\n\t\t + W(3, 1015163300, -1107748756, -1102119678, -1120785461)\n\t\t + W(4, 1032253510, -1123661455, 1015068960, 1038994810)\n\t\t + W(5, 1041992963, 1052941265, -1122308723, -1115405106)\n\t\t + W(6, 1033174530, -1104237963, 1059473601, -1112171819)\n\t\t + W(7, 1028984470, -1126727948, -1135254713, -1120882016)\n\t\t + W(8, 1015880446, -1149514732, -1121912217, 1038410412)\n\t\t + W(9, 1032888151, -1105704866, 1034086136, -1106883398)\n\t\t + W(10, 1037486360, -1113287020, -1132281738, 1042278645)\n\t\t + W(11, -1087682569, 1032085587, -1121651695, 1025242322);\n\tWS(1036385628, 1044378228);\n\tsum1 =\n\t\tW(0, -1125923878, -1119989961, -1113894352, 1034400041) + W(1, 1040468885, -1119159494, -1122454178, 1024777096)\n\t\t+ W(2, -1109744594, 1050462805, -1118152051, -1136375156)\n\t\t+ W(3, -1106272614, 1045742974, -1081686591, 1057689729)\n\t\t+ W(4, -1112362495, 1016953331, 1034604284, -1106270482) + W(5, 1049041391, 1056885773, -1111838475, 1033159371)\n\t\t+ W(6, -1112814039, -1097223397, 1058546239, -1082103097)\n\t\t+ W(7, 1051410218, -1127987422, 1030894675, -1112273196) + W(8, 1043400251, -1111542214, 1042722054, 1008300000)\n\t\t+ W(9, -1123079474, -1131680651, 1024933634, 1032256832)\n\t\t+ W(10, -1104716944, 1020481857, -1130721815, 974203052)\n\t\t+ W(11, -1127331477, 1030325078, 1028514056, -1122308858);\n\tsum2 = W(0, -1126857538, -1124098806, 1017023528, -1105780084)\n\t\t + W(1, -1128747572, -1133097491, -1118763531, -1105376950)\n\t\t + W(2, -1096176503, -1094874635, -1140350635, 1036694112)\n\t\t + W(3, 1031801448, 1037674477, 1067983244, 1071605005)\n\t\t + W(4, -1109792866, -1111308161, 1032593429, -1110580495)\n\t\t + W(5, -1078904043, -1075832971, -1097243929, 1036064001)\n\t\t + W(6, 1004108563, -1116861031, 1060638644, 1065456263) + W(7, 1040323331, 1039332997, -1119835024, 1039467599)\n\t\t + W(8, -1111109918, -1112838992, -1114824160, -1103055030)\n\t\t + W(9, 1016299757, -1109178305, -1098624444, -1104548941)\n\t\t + W(10, 1033955221, 1027541135, -1169697445, 1033383777)\n\t\t + W(11, 1040587540, 1006549790, -1127435882, 1022453269);\n\tWS(1044586414, 987793058);\n\tsum1 = W(0, 981244734, -1094962922, 1056192743, -1106851755)\n\t\t + W(1, -1119312576, -1109764848, 1029861564, -1105742952)\n\t\t + W(2, 1054313512, -1099782448, 1027895469, 1032524411)\n\t\t + W(3, -1127551587, -1103252055, 1058042871, -1098041547)\n\t\t + W(4, 1019737521, -1110892330, 1008852553, -1106380176)\n\t\t + W(5, 1048369556, -1096188128, -1121596880, 1024237680)\n\t\t + W(6, -1110264932, 1039776063, -1104749720, 1052995119)\n\t\t + W(7, -1106765091, -1120426409, -1120415085, 1036900841)\n\t\t + W(8, -1097596121, 1058305414, -1098125906, 1026360866)\n\t\t + W(9, -1128191927, 1025145152, -1105335335, 1045503990)\n\t\t + W(10, -1106717007, -1151171624, -1111219811, 1028803677)\n\t\t + W(11, -1103570473, 1055249646, -1101993823, 1031597860);\n\tsum2 =\n\t\tW(0, -1170894487, 1038321486, 1053283699, -1093894288) + W(1, -1100030896, 1046510222, -1116947191, 1032730216)\n\t\t+ W(2, -1102463031, -1109920837, 1047091130, -1098101478)\n\t\t+ W(3, 1031282910, 1034140662, 1044178467, -1089191295)\n\t\t+ W(4, -1097946325, 1046381950, -1112734885, -1104751545)\n\t\t+ W(5, 1054507486, 1065532097, -1095028025, -1113780206)\n\t\t+ W(6, 1042944653, -1102906173, -1128523954, -1115680584)\n\t\t+ W(7, -1094781909, 1020709100, -1112368696, -1115060896)\n\t\t+ W(8, 1038784522, 1029167633, 1050920778, -1114933696) + W(9, 1023647443, -1124833342, -1109068581, 1021288403)\n\t\t+ W(10, -1113980416, -1114621382, -1149951158, -1103764076)\n\t\t+ W(11, -1105151256, 1048070264, 1052479172, -1120673083);\n\tWS(-1114317660, -1079530866);\n\tsum1 =\n\t\tW(0, 1005492722, -1115918380, -1124407701, -1116105277) + W(1, 1041270838, -1125596386, 1045601427, -1100871485)\n\t\t+ W(2, 1040297908, -1115200394, 1034785295, 1024917256)\n\t\t+ W(3, -1125684614, -1122621547, -1098312611, -1103806788)\n\t\t+ W(4, 1049040249, 1026343653, 1040691817, -1094477942) + W(5, 1054673340, -1097950923, -1103823208, 1033886401)\n\t\t+ W(6, -1138701159, 1044150368, 1041833209, -1088150296)\n\t\t+ W(7, -1129519613, 1039772509, -1122106750, 1041157065)\n\t\t+ W(8, -1120050519, 1040435582, -1121264402, 1028146611) + W(9, 1010492340, 1039210328, -1116922669, 1025767275)\n\t\t+ W(10, -1133614768, 1030520276, -1132247342, 1037992735)\n\t\t+ W(11, 1025359158, 1032362656, -1107139719, 1032249339);\n\tsum2 = W(0, -1155531695, 1035594747, -1111112193, -1101564588)\n\t\t + W(1, -1116834132, -1130931838, -1116868484, -1130123766)\n\t\t + W(2, 1034328851, -1113096514, -1115452418, -1123313694)\n\t\t + W(3, -1135508412, -1121397012, 1033705026, 1029679690)\n\t\t + W(4, -1152418495, 1018386998, -1106991844, -1115576312)\n\t\t + W(5, 1050004218, 1048453590, 1029930774, -1127714868)\n\t\t + W(6, -1135674828, -1126221532, -1117911568, 1050922209)\n\t\t + W(7, 1007646710, -1121358676, 1001487940, -1107263445)\n\t\t + W(8, -1123887534, 1043692754, -1114385718, 1023927325)\n\t\t + W(9, -1119877490, -1121744498, 1017446183, 1034884616)\n\t\t + W(10, -1122169416, -1115969900, -1131775200, -1125291430)\n\t\t + W(11, -1110635219, 1032206024, 1016330315, -1122013064);\n\tWS(1066254326, -1103165682);\n\tsum1 =\n\t\tW(0, 1032736195, -1107990998, 1040177417, -1102376817) + W(1, 1034252186, 1019040113, 1027879829, -1114107453)\n\t\t+ W(2, -1121888407, 1024426522, -1134855959, 1012754494)\n\t\t+ W(3, 1031762634, -1103287009, 1058340070, -1086180914)\n\t\t+ W(4, 1048880356, -1128188760, -1123062443, 1041209406)\n\t\t+ W(5, -1097968365, 1045901207, -1117801777, -1116847305)\n\t\t+ W(6, 1004281096, 1039171204, -1082040497, 1060563077)\n\t\t+ W(7, -1108119503, -1149008906, -1148973229, -1113506869)\n\t\t+ W(8, 1042461256, 1045252895, 1021862138, -1140572507) + W(9, -1119568276, 1029657432, -1110264442, 1035749465)\n\t\t+ W(10, 1017288487, 1021245074, -1130151676, 1042306865)\n\t\t+ W(11, -1106785311, 1042341554, -1125959462, 1010461490);\n\tsum2 = W(0, 1021177914, -1111267114, 1038432054, -1105822865)\n\t\t + W(1, 1037666445, -1122267795, -1124089023, 1044764288)\n\t\t + W(2, -1106310853, -1100663157, 1039738660, -1121288215)\n\t\t + W(3, 1026640236, 1026571855, -1115065858, -1088005063)\n\t\t + W(4, -1097556837, 1045614354, 1019818775, -1103902938)\n\t\t + W(5, 1063205014, 1066152263, -1094681119, -1112191805)\n\t\t + W(6, 1019369915, -1139759728, 1054784388, -1093573252)\n\t\t + W(7, -1095778937, 1041592438, -1106530127, 1046869720)\n\t\t + W(8, -1096246655, -1098236584, 1051664274, -1110480242)\n\t\t + W(9, 1038187852, -1116925721, -1115197568, 1033917272)\n\t\t + W(10, -1104072801, 1015983837, 1030498751, -1107211067)\n\t\t + W(11, 1035488589, -1107121631, 1038730556, 1022742082);\n\tWS(1062838508, -1098141683);\n\tsum1 =\n\t\tW(0, -1134697126, -1129876167, -1116304310, -1099161722) + W(1, 1038618718, 1030514076, 1033720508, 1021336509)\n\t\t+ W(2, -1104597903, 1019102333, 1045312786, -1118743028)\n\t\t+ W(3, -1121504814, 1014720225, -1101916102, 1049624810)\n\t\t+ W(4, 1036131058, -1134396481, -1119656591, 1046652247) + W(5, -1082370571, 1058084844, 1029119981, 1009920435)\n\t\t+ W(6, 950602286, 1047400131, -1091801796, 1053105145) + W(7, -1119759594, -1132133195, -1114868293, 1033072079)\n\t\t+ W(8, -1096699752, 1050650780, -1119884597, -1133963803)\n\t\t+ W(9, 1034808260, -1139606129, -1121911577, 1034036747) + W(10, 1024218735, 990998386, -1113093265, 1026913289)\n\t\t+ W(11, -1098146380, 1048726310, 1017329950, -1121758433);\n\tsum2 =\n\t\tW(0, -1120814392, 1026947049, -1124609851, 1029294693) + W(1, -1089366560, 1054044776, 1018600110, -1114533760)\n\t\t+ W(2, 1043306429, -1096357662, -1078857162, -1109773692)\n\t\t+ W(3, 1027325255, -1112504706, 1030055965, 1075131584)\n\t\t+ W(4, -1106088729, -1105806639, -1124538308, -1107191892)\n\t\t+ W(5, -1090928488, -1118772404, 1060040329, -1102685120)\n\t\t+ W(6, -1127260613, 1023329910, 1046523168, -1092017575)\n\t\t+ W(7, 1045316672, -1119137158, 1007599328, -1124222597) + W(8, 1015958190, -1113584525, 1047822624, 1032716843)\n\t\t+ W(9, -1128821133, 1024046209, 1022187138, -1109468012)\n\t\t+ W(10, 1021757630, -1120065319, -1125977712, 1019591350)\n\t\t+ W(11, -1115445424, -1105922548, 1038940063, 1016647840);\n\tWS(1054286935, 1054427377);\n\tsum1 =\n\t\tW(0, -1139016422, 1031868724, -1103470657, 1027450488) + W(1, 1036611766, -1113202838, 1015966225, 1024526894)\n\t\t+ W(2, -1100637795, 1046711412, -1105992614, 1036202402)\n\t\t+ W(3, 1034481375, -1107528289, 1043922306, -1098573729)\n\t\t+ W(4, 1045477269, -1121078688, 1029692191, -1123790766)\n\t\t+ W(5, -1096987004, 1036148808, -1138151730, 1006910195)\n\t\t+ W(6, -1118014037, 1033739398, -1103397016, 1053311986)\n\t\t+ W(7, -1103945702, 1033532379, 1037138557, -1101429240) + W(8, 1045510949, 1016118627, 1013880803, -1135069562)\n\t\t+ W(9, -1107878452, 1035472806, -1113746932, -1127637067)\n\t\t+ W(10, 1041047838, -1112788047, 996243233, -1114181077)\n\t\t+ W(11, 998962565, 1041113135, -1118755335, 1020627009);\n\tsum2 = W(0, 998302909, -1114977231, -1111023634, 1036510752) + W(1, 1004185429, 1033017445, 1020343611, 1031676937)\n\t\t + W(2, -1115901635, -1117993552, 1041465226, -1113757911)\n\t\t + W(3, 1029585253, -1113383024, -1091081120, -1099268355)\n\t\t + W(4, -1113451820, 1021941233, 1014080934, 1053648356)\n\t\t + W(5, -1095412525, -1083342245, -1115471327, -1161911507)\n\t\t + W(6, -1135780688, 1044096370, 1066870285, 1034064765)\n\t\t + W(7, -1118193886, -1120710156, -1115911996, 1042686855)\n\t\t + W(8, -1137657706, 1037488276, 1023464409, 1018751107) + W(9, 1018594371, -1108781434, 1043350243, 1014772326)\n\t\t + W(10, -1138084208, -1148724493, -1117868456, 1037265024)\n\t\t + W(11, -1126645268, -1113946823, 1032826620, 967002060);\n\tWS(1069042774, 1023813606);\n\tsum1 =\n\t\tW(0, -1120569815, 1029846837, -1087916882, 1052864835) + W(1, 1037940281, -1130288148, 982627530, -1113747494)\n\t\t+ W(2, -1109565588, 1048856613, 1011966045, -1136915076)\n\t\t+ W(3, -1113058670, 1033076468, -1095056850, 1056781822)\n\t\t+ W(4, 1041407837, -1140629239, -1122018428, 1039673254)\n\t\t+ W(5, -1085384902, 1059308179, -1107102153, 1027021082)\n\t\t+ W(6, -1110295833, 1038190732, -1083727323, 1063669175) + W(7, -1111254596, 1007651659, 1021479086, 1046432919)\n\t\t+ W(8, -1089999723, 1059014405, -1110936865, -1128736648)\n\t\t+ W(9, 1001627822, -1134594983, -1094559921, 1044534497)\n\t\t+ W(10, 1025983877, -1139332738, 1013049407, 1016231853)\n\t\t+ W(11, -1094610970, 1048044230, 1046858383, -1114487747);\n\tsum2 =\n\t\tW(0, -1097118790, -1088323667, 1067177084, 1049654149) + W(1, -1120538318, -1108580354, -1115645027, 1030684990)\n\t\t+ W(2, 1056476304, -1101283859, 1040556965, -1124995735)\n\t\t+ W(3, -1109249259, -1081609065, 1058423359, 1057270411)\n\t\t+ W(4, -1122455315, 1017763415, 1042765123, -1082143899)\n\t\t+ W(5, 1061996602, 1055747315, -1120372038, -1114753052)\n\t\t+ W(6, 1015795842, -1102809807, 1006287482, -1087207348) + W(7, -1106540179, 1040354664, 1028792702, 1059694558)\n\t\t+ W(8, -1085597397, -1106003210, 1042932361, 1033427208)\n\t\t+ W(9, -1116071919, 1064574838, -1080103447, 1023804763)\n\t\t+ W(10, 1048665861, -1098395984, -1105083736, 1072110122)\n\t\t+ W(11, -1081832849, -1090423898, -1101912272, 1049644025);\n\tWS(1046279854, -1100682627);\n\tsum1 = W(0, -1155754074, -1109896894, -1107576521, 1035511522)\n\t\t + W(1, 1002805634, -1116898232, -1110611178, -1114421037)\n\t\t + W(2, 1030120983, -1124410677, -1114543731, 1008443967)\n\t\t + W(3, 1022309140, -1131162933, -1094043528, 1038811574)\n\t\t + W(4, 1039227081, -1122237996, -1118509483, 1027993210)\n\t\t + W(5, 1062355587, 1059809630, -1113128332, -1141634631)\n\t\t + W(6, -1109973457, 1040243222, -1094900881, 1038778317)\n\t\t + W(7, -1105636701, 1021837827, 1022155595, -1117693450)\n\t\t + W(8, -1110047247, 1046487839, -1109843880, -1132048229)\n\t\t + W(9, -1107208537, 1019138289, -1110631994, -1127423844)\n\t\t + W(10, 1004796827, -1123472091, -1117715774, 996768085)\n\t\t + W(11, -1107567326, 1039784548, -1112311954, -1128081977);\n\tsum2 = W(0, -1155805362, -1107499970, 1022847832, 1035480223)\n\t\t + W(1, -1120962569, -1110725720, -1111094572, -1112866732)\n\t\t + W(2, 1044264749, -1148903065, -1114470280, 1021130376)\n\t\t + W(3, 1028160711, -1106540686, -1155674450, 1040150233)\n\t\t + W(4, 1010774604, -1120260095, -1123681391, -1140638716)\n\t\t + W(5, 1057429467, 1045538131, 1016428102, 1009992044) + W(6, -1116453985, 1031083122, -1106158641, 1031696457)\n\t\t + W(7, -1120179561, 1026515918, -1119301235, -1139408516)\n\t\t + W(8, 1025824831, 1041846065, -1118124541, -1114275912)\n\t\t + W(9, -1108559318, 1034592379, -1111164410, -1120456085)\n\t\t + W(10, 999266665, 1011855672, -1115385578, -1116565509)\n\t\t + W(11, -1121519923, -1129601606, -1119709653, -1115407958);\n\tWS(1068834358, -1130516755);\n\tsum1 =\n\t\tW(0, -1110020716, 1034114243, 1048068617, -1102038774) + W(1, 1031998965, -1110620517, 1043574522, -1095778974)\n\t\t+ W(2, 1048936405, 1035735542, -1100504766, 1038840817) + W(3, -1110718798, 1047457188, 1038642250, -1105529591)\n\t\t+ W(4, 1047377413, -1109142655, -1129582842, -1108460854)\n\t\t+ W(5, -1114164062, -1096174934, -1130108598, 1023990363)\n\t\t+ W(6, -1114402010, 1054126843, -1110583455, -1112126358)\n\t\t+ W(7, 1044906670, -1122044916, 1034180284, -1096959660) + W(8, 1049433806, 1043709316, -1095231947, 1040978881)\n\t\t+ W(9, 1025857751, 1033414773, -1136840220, -1123546692)\n\t\t+ W(10, -1130058411, -1131191403, -1111247176, 1039130852)\n\t\t+ W(11, -1119539023, -1112879245, 1035429307, -1115530151);\n\tsum2 = W(0, 970017593, -1108165952, 1047729556, -1102798485)\n\t\t + W(1, -1142827268, 1029593938, -1125442959, 1040753488)\n\t\t + W(2, 1000227776, -1088611471, 1049645408, -1108133201)\n\t\t + W(3, -1107196630, 1033984686, 1038319755, -1087549565)\n\t\t + W(4, -1127043239, -1114349374, -1108273260, 1051322703)\n\t\t + W(5, 1055231112, 1062180091, -1103837458, 1035145460)\n\t\t + W(6, -1130992285, -1113564209, -1094436986, 1046553690)\n\t\t + W(7, -1107399737, -1114342182, -1132402709, 1041587650)\n\t\t + W(8, 986706110, -1113546876, 1048231400, -1146643074)\n\t\t + W(9, 1017358256, -1116630320, -1124437274, -1120036494)\n\t\t + W(10, -1124561928, -1126967424, 988670622, -1122802752)\n\t\t + W(11, -1132214419, 1032902155, -1145381770, 1014303584);\n\tWS(1067517750, 1033639701);\n\tsum1 =\n\t\tW(0, 1025509678, -1102897085, 1023511162, 1037697110) + W(1, 1039047450, -1138182274, -1130341242, -1132678155)\n\t\t+ W(2, -1096924480, 1040728225, -1108434135, -1138791135)\n\t\t+ W(3, -1120272434, -1151042791, -1094474081, 1056422164) + W(4, 1032921189, 1010850641, 1018375590, 1013105800)\n\t\t+ W(5, -1086033191, 1062857884, -1122589009, 1034477848)\n\t\t+ W(6, -1116961737, 1041000592, -1085852953, 1058773976)\n\t\t+ W(7, -1100255843, -1112868181, 1026047982, 1032243033)\n\t\t+ W(8, -1093123217, 1063905370, -1106044526, 1026848855) + W(9, 1025041660, 1034904976, -1093479580, 1050274619)\n\t\t+ W(10, -1112977566, -1122948276, -1113724179, -1123793645)\n\t\t+ W(11, -1091335173, 1057695471, -1136654701, 1007925107);\n\tsum2 =\n\t\tW(0, -1101843642, -1101718380, 1046322966, 1051125372) + W(1, -1084762721, 1050651985, 1047092496, -1110599661)\n\t\t+ W(2, 1053918698, -1092942861, 1058235489, -1101055683)\n\t\t+ W(3, 1032746990, -1127672356, -1100340247, 1040369276)\n\t\t+ W(4, -1090389206, 1050412863, -1098074183, -1096713677)\n\t\t+ W(5, 1069438643, 1074732797, -1088693676, -1103557505) + W(6, 1053786699, -1104014372, 1025809994, 1050011098)\n\t\t+ W(7, 1053232821, 1052371166, -1096910060, 1035860070) + W(8, -1083706115, -1080423025, 999981171, -1099152238)\n\t\t+ W(9, 1043846267, -1097849415, 1048729218, -1117530220)\n\t\t+ W(10, -1097505133, 1041618808, 1023876031, 1051096852)\n\t\t+ W(11, -1081917128, -1091623712, 1050919626, -1123531943);\n\tWS(-1098378327, -1087753140);\n\tsum1 =\n\t\tW(0, -1149815841, -1123262056, -1110243207, 1053738584) + W(1, -1096838314, 1031741109, 1013838405, -1131552366)\n\t\t+ W(2, 997589309, 1025605911, 967065877, -1135340592) + W(3, 1021155853, -1114416842, -1104972312, 1049179692)\n\t\t+ W(4, -1108406847, 1029594857, 1025974631, -1103162646)\n\t\t+ W(5, 1042062186, -1094476095, -1130981226, -1145022506)\n\t\t+ W(6, 1017740987, -1099404299, 1057054155, -1093068705) + W(7, 1023051300, 1005012974, 1020943940, -1100518162)\n\t\t+ W(8, 1059648114, -1101042271, 1010424693, -1112923496)\n\t\t+ W(9, -1137239299, -1111541722, 1047878460, -1111532695)\n\t\t+ W(10, -1117167136, 1030823984, 1031952605, -1098489580)\n\t\t+ W(11, 1061110492, -1100382705, 989087216, -1113821120);\n\tsum2 =\n\t\tW(0, 1034695587, 1032463913, -1087773887, 1051055536) + W(1, -1103774157, 1028563957, -1111830177, 1031752431)\n\t\t+ W(2, -1104893727, 1010301739, 1003908630, -1111301343)\n\t\t+ W(3, 1017885202, -1103205904, -1114987001, 1045597173)\n\t\t+ W(4, -1107230114, 1042437558, -1116805918, 1045285117) + W(5, 1061301409, 1065451004, 999416278, -1106181364)\n\t\t+ W(6, 1039973913, -1092035876, 1053784665, 1036331211) + W(7, -1118216068, 1014136811, -1113376464, 1044034906)\n\t\t+ W(8, -1096259933, -1101789830, 1047293827, -1127455968)\n\t\t+ W(9, 1024357631, -1097056010, 1015259894, -1105822235)\n\t\t+ W(10, -1119063058, -1137717779, -1109344122, 1034392181)\n\t\t+ W(11, -1095057905, -1098597360, -1139528651, 1017174230);\n\tWS(1051991511, -1090129628);\n\tsum1 =\n\t\tW(0, -1119709994, 1035475128, 1044364174, -1099369674) + W(1, 1024914253, -1122358045, 1028979258, -1103260128)\n\t\t+ W(2, 1048862488, -1107028176, 1037758213, -1142000036)\n\t\t+ W(3, 1025569135, -1099928080, 1054464119, -1092954947) + W(4, 1045752341, -1110227337, 1025156752, 1041023848)\n\t\t+ W(5, -1103260308, 1048877896, 992983000, 1023847918) + W(6, -1113846787, 1030722332, -1090331224, 1036105176)\n\t\t+ W(7, -1115078629, 1018698636, 1032797781, 1040845476) + W(8, 1039529634, -1113372113, 1027244574, -1139349278)\n\t\t+ W(9, -1137003429, 1015665914, 1015668019, -1104520406)\n\t\t+ W(10, 1039091960, -1131269376, -1126457798, 1032471277)\n\t\t+ W(11, 1036006161, -1111431094, -1113568276, 1004297100);\n\tsum2 =\n\t\tW(0, 1043798657, -1098470129, -1126555274, 1029962999) + W(1, 1028782608, -1131048284, -1117698064, -1096590117)\n\t\t+ W(2, 1047971790, 1037727050, -1161955740, 1022180969) + W(3, -1102458928, -1084690772, 1067678357, 1008201251)\n\t\t+ W(4, -1103096568, -1120783295, -1101130902, 1065791971)\n\t\t+ W(5, -1099131342, -1083609361, 1051059538, 1014843769) + W(6, 1025730631, -1123809426, 1036453804, 1031198846)\n\t\t+ W(7, -1106261335, 1020274026, 1026623851, 1019910088)\n\t\t+ W(8, -1117295572, -1113754273, 1041141064, -1111232000) + W(9, 995294154, 990258218, -1116170672, 1030505142)\n\t\t+ W(10, 1028328942, -1127235720, 1012466631, -1124630920)\n\t\t+ W(11, 1010360391, -1136369090, -1119361560, 1001879503);\n\tWS(1062559660, 1025273829);\n\tsum1 =\n\t\tW(0, 1017067222, -1098241838, -1088364567, 1060515311) + W(1, -1113064427, 1036248943, 1004255955, 1041017424)\n\t\t+ W(2, -1088941672, 1050253504, -1115329590, -1133026900)\n\t\t+ W(3, 1019590495, -1136327879, -1087512143, 1064814036)\n\t\t+ W(4, -1113817187, 1008140615, -1109975080, 1032386976)\n\t\t+ W(5, -1083706517, 1061681108, -1146803505, 1028690158) + W(6, 1028071367, 1031451349, -1089169701, 1061080357)\n\t\t+ W(7, -1112935650, 1010963867, 1004648665, -1112687016) + W(8, -1092690193, 1052988124, 1031379878, 1030651112)\n\t\t+ W(9, -1129853588, 1040197151, -1100415991, 1048643203)\n\t\t+ W(10, -1112391860, -1133141907, 999516190, -1105242363)\n\t\t+ W(11, -1093365052, 1050105214, 1051227835, -1139571464);\n\tsum2 =\n\t\tW(0, 1058977722, -1088438618, -1070888183, -1080154822) + W(1, 1057028315, 1020668753, -1123128465, -1084402469)\n\t\t+ W(2, -1068917363, -1109667848, -1133954517, -1117456198)\n\t\t+ W(3, 1051128320, -1097793743, -1079680807, -1080832517)\n\t\t+ W(4, 1057005952, 1031920962, 1025585093, -1092491618) + W(5, 1078112044, 1058335327, -1089499329, 1039195999)\n\t\t+ W(6, 1043020026, -1090336452, 1082393215, 1067339759) + W(7, 1038175360, 1046190750, -1090331128, -1094761348)\n\t\t+ W(8, 1070728174, 1057746923, -1096630558, -1139309423)\n\t\t+ W(9, 1037612985, 1032815200, -1090225897, -1122043266)\n\t\t+ W(10, 1051816122, -1116527206, -1101815127, -1080227574)\n\t\t+ W(11, 1066541275, 1067785018, -1086032969, 1046599598);\n\tWS(-1077531606, -1068627295);\n\tsum1 =\n\t\tW(0, -1124767318, -1113367136, -1095446127, 1055377197) + W(1, -1111814927, -1126382267, 1034866077, 1048375560)\n\t\t+ W(2, -1099058463, 1047513184, 1045191539, 1025894069)\n\t\t+ W(3, -1101653116, -1104403272, -1090535733, 1058086815)\n\t\t+ W(4, -1094831865, -1117513042, -1130761376, 1049955828)\n\t\t+ W(5, -1087242437, 1061174628, 1048150628, 1008100281) + W(6, -1106412978, 1036710310, -1088900579, 1057172304)\n\t\t+ W(7, -1103308083, 999030326, -1121310187, -1108970480)\n\t\t+ W(8, -1096168584, 1056094244, -1102502166, -1115104524)\n\t\t+ W(9, 1040285922, 1049541454, -1097928011, 1047121222)\n\t\t+ W(10, 1043510842, 1032672660, -1107982930, -1107579101)\n\t\t+ W(11, -1095682732, 1054731422, -1103869114, 1025118882);\n\tsum2 =\n\t\tW(0, -1118325221, 1021086937, 1043003051, -1131106753) + W(1, -1122810381, 1007248641, -1109912068, -1119472758)\n\t\t+ W(2, 1026424546, 1030452362, -1109242129, 1007569065) + W(3, 1055626857, 1051951524, -1092928023, -1103671831)\n\t\t+ W(4, 1034708821, -1112697430, 1073210842, 1028908234) + W(5, -1081037490, -1079815727, 1035695099, 1034566233)\n\t\t+ W(6, 1050117205, 1044779683, -1093398148, -1105002867)\n\t\t+ W(7, 1037167425, -1131640977, -1108710534, 1039597247) + W(8, 1044106321, 1032627417, -1112762482, 1020894429)\n\t\t+ W(9, 1007734945, -1130127373, -1119182686, -1108845723)\n\t\t+ W(10, -1120996683, -1144614067, 1005945059, 1026547602)\n\t\t+ W(11, 1019051617, 1023992222, 999154803, 1009135009);\n\tWS(1027136184, 1037475189);\n\tsum1 =\n\t\tW(0, 1032095571, -1116112165, -1115063802, 1049018533) + W(1, -1119314641, -1107767341, -1100957374, 1049686375)\n\t\t+ W(2, 1038845436, -1106083983, -1120251015, 1047825580) + W(3, 1042581547, 1028374302, -1088748902, 1046087792)\n\t\t+ W(4, 1034473457, -1104556803, 1008293424, -1096656387) + W(5, 1053200569, 1044615055, -1099043646, 1041068763)\n\t\t+ W(6, -1125080965, 1033692244, 1024446429, -1090279185) + W(7, 1029265287, 1035958465, 1046313162, -1105885187)\n\t\t+ W(8, -1103807360, 1052904956, 1033985068, -1106489925)\n\t\t+ W(9, -1104233593, -1122471385, 1048125173, -1106111045)\n\t\t+ W(10, -1106885357, 1037737330, 1032243376, -1122778646)\n\t\t+ W(11, -1114896431, -1113201013, 1045413959, -1123269230);\n\tsum2 = W(0, -1109957285, 1028061230, 1045893852, -1110812851)\n\t\t + W(1, -1108048047, 1027149256, 1046942588, -1090820835)\n\t\t + W(2, 1047577084, 1048459161, -1114577527, -1106934834)\n\t\t + W(3, -1108558913, -1168618571, -1096957845, 1058947879)\n\t\t + W(4, -1104353646, -1104794282, 1035311457, 1053631926)\n\t\t + W(5, -1097789717, 1028951753, 1041621301, -1139749789)\n\t\t + W(6, -1103268017, -1140171429, 1058472778, -1086199154)\n\t\t + W(7, 1047742834, -1105608688, 1020819182, 1024395745) + W(8, 1010859305, 1018177816, -1101676043, 1051639728)\n\t\t + W(9, 1017489970, 1034074787, -1118924631, -1119421881)\n\t\t + W(10, 1030918112, -1105627073, -1119040125, -1111153127)\n\t\t + W(11, -1134098557, 1029986143, -1110045381, 1035525353);\n\tWS(1059085676, -1120419895);\n\tsum1 =\n\t\tW(0, -1123531970, 1010567522, -1140828475, 1031892193) + W(1, -1126417758, 1013434325, 1015920803, 1041225150)\n\t\t+ W(2, 1042370229, -1105839574, 1021017477, -1117671948)\n\t\t+ W(3, -1129458830, 1048968044, -1081896608, 1052692461)\n\t\t+ W(4, -1106306215, 1033141013, 1003238718, -1107069702)\n\t\t+ W(5, 1061545382, -1113798029, 1033163859, -1110196995)\n\t\t+ W(6, 1024388894, -1107554082, 1057779808, -1080962214) + W(7, 1051334024, 998455538, 1019022757, -1131681870)\n\t\t+ W(8, 1048429719, 1023517883, 974463598, -1104852314) + W(9, -1122285937, -1110859547, 1046207852, -1107360247)\n\t\t+ W(10, -1137698561, -1130795454, 1029064795, 1018058500)\n\t\t+ W(11, 1043188126, -1109838114, -1182091254, -1115208005);\n\tsum2 = W(0, -1115293356, 1051048471, -1116254969, -1108089569)\n\t\t + W(1, -1110389222, 1032305896, -1104270657, 1028093784)\n\t\t + W(2, 1055158904, -1104160418, 1040482382, -1109483288)\n\t\t + W(3, 995357221, -1111420185, -1108447426, -1113016550)\n\t\t + W(4, -1105273681, 1033267880, -1140125409, -1087783718)\n\t\t + W(5, 1057721666, 1060085251, -1106428297, -1106001572)\n\t\t + W(6, 1041981586, 1031459460, -1086769840, 1041174723) + W(7, 1046452617, -1115354420, 1016190873, 1035133120)\n\t\t + W(8, -1119040585, -1119561801, 1045849559, -1127947625)\n\t\t + W(9, -1140513641, 1028088400, -1121069799, -1114345654)\n\t\t + W(10, 1044224673, -1119205024, -1115228320, 1019234873)\n\t\t + W(11, 1043934745, -1097229960, -1114369945, 1033437588);\n\tWS(1063842732, 1069263660);\n\tsum1 = W(0, -1134238373, -1122877239, 1055968823, -1099884346)\n\t\t + W(1, -1101209335, 1027783644, 1031532473, -1122091454)\n\t\t + W(2, 1052972391, -1097152888, -1119905385, 1025876211)\n\t\t + W(3, -1118861678, -1114405937, 1057777668, -1088480739)\n\t\t + W(4, 1025124405, -1133551424, 1031846503, -1102409375)\n\t\t + W(5, 1062381841, -1081966868, -1166909210, -1124858713)\n\t\t + W(6, -1118980549, -1105793535, 1065218890, -1086950263)\n\t\t + W(7, 1045788186, -1146513705, 1032122901, -1113900631)\n\t\t + W(8, 1051224528, -1107218856, -1105943487, -1136389690)\n\t\t + W(9, -1119645672, -1129606328, 1055096307, -1097976619)\n\t\t + W(10, 1011470685, -1153551023, 1033668289, -1133229476)\n\t\t + W(11, 1043160456, -1106065147, -1107257190, 1024085520);\n\tsum2 =\n\t\tW(0, 1008982555, 1017497319, -1114050188, 1044555710) + W(1, -1115112254, -1121509319, -1122047761, -1119731325)\n\t\t+ W(2, 1048705804, -1104624717, -1113283108, 1042591944)\n\t\t+ W(3, -1134583037, -1110768789, 1082656561, 1041907901)\n\t\t+ W(4, 1041138312, -1111081434, -1137222855, 1050149080) + W(5, 1079097716, -1088882238, 1033378952, 1018241317)\n\t\t+ W(6, -1140752305, 1041298195, -1069364548, 1050137131)\n\t\t+ W(7, 1048604087, -1128224049, 1029699842, -1094516021)\n\t\t+ W(8, -1064571216, -1099205492, -1105508475, 1008906239)\n\t\t+ W(9, -1114302140, 1037679865, -1105564781, -1109039739)\n\t\t+ W(10, 1026612451, -1118064246, 1026101716, 1029205125)\n\t\t+ W(11, -1121859551, 1040352044, -1131493091, 1024193619);\n\tWS(-1129102704, 1046511454);\n\tsum1 =\n\t\tW(0, -1120255189, 1003871004, -1098175836, 1060542285) + W(1, -1104614392, -1115237700, 992833099, 1029362986)\n\t\t+ W(2, -1113473140, 1049212165, -1118651222, 1012659838) + W(3, -1134582632, 988783847, -1095364566, 1059935407)\n\t\t+ W(4, -1098721330, 1026034940, -1138794987, 1011030567)\n\t\t+ W(5, -1091886143, 1049733902, -1109648580, -1116104473)\n\t\t+ W(6, -1157138191, -1118838023, 1040190185, -1115543549)\n\t\t+ W(7, -1121023765, 1036784617, -1129425099, -1111313565)\n\t\t+ W(8, -1149570791, 1041064643, -1105481630, -1112251695)\n\t\t+ W(9, 1016407976, -1115457860, 1037653026, -1119854466)\n\t\t+ W(10, 1031662787, 1023835049, -1133147960, -1106432157)\n\t\t+ W(11, 1038304902, 1029519512, -1111089569, -1170197274);\n\tsum2 = W(0, 1039353726, 1022956598, -1093991321, -1088722171)\n\t\t + W(1, 1039854738, -1125147089, -1104263814, 1036699032)\n\t\t + W(2, -1154678850, -1088770012, -1104468959, -1123571799)\n\t\t + W(3, 1027240563, -1120983737, -1089878099, -1101846939)\n\t\t + W(4, -1096446657, 1036003207, 1028285409, -1106986979)\n\t\t + W(5, 1067214284, 1070132546, 1029156699, -1117321918) + W(6, 1032871415, -1095425364, 1047639440, 1045480826)\n\t\t + W(7, -1098508409, 1027342659, -1151417050, -1136397826)\n\t\t + W(8, 1051464555, -1099095249, 1024325599, -1150420266)\n\t\t + W(9, 1027668005, -1108376211, -1104038071, 1043597107)\n\t\t + W(10, -1148394393, -1138411071, 1023556565, -1098325150)\n\t\t + W(11, 1061372327, -1086577064, 1034968116, 1031516803);\n\tWS(1056411607, -1109579684);\n\tsum1 =\n\t\tW(0, -1129654332, 1040494825, 1053570965, -1089114662) + W(1, -1099475130, 1041782836, 1027988397, 1031736403)\n\t\t+ W(2, 1051564806, -1091392278, 1018661052, 1032323860) + W(3, 1041758889, -1118623100, 1061336939, -1087917688)\n\t\t+ W(4, 1034322317, 1035039650, 1027974595, -1104250813) + W(5, 1057393436, -1081469355, -1094207710, 1010041732)\n\t\t+ W(6, 1038643645, 1023561152, 1065029703, -1091410052) + W(7, 1052271760, 1041287822, 1038422303, -1115303377)\n\t\t+ W(8, 1052932495, -1085011849, -1096091282, 1020820966)\n\t\t+ W(9, -1115801276, -1111435064, 1051403778, -1108233957)\n\t\t+ W(10, 1036087894, 1036272138, 1047822542, 1037517815)\n\t\t+ W(11, 1056446507, -1089621406, -1095410877, 1043391417);\n\tsum2 =\n\t\tW(0, -1114696922, 1063327246, -1085101471, -1089121793) + W(1, 1049274948, 1041765085, 1043151870, 1054945342)\n\t\t+ W(2, -1091433742, -1108711949, 1036153834, -1114908726)\n\t\t+ W(3, -1098855398, -1111180476, 1044429796, -1096795753)\n\t\t+ W(4, 1047012469, 1017938665, 1045725515, -1078968963) + W(5, 1071264665, 1049748951, 1043607695, -1113887753)\n\t\t+ W(6, 1041130784, -1075182266, 1068966947, 1041099170) + W(7, 1008700501, 1052357470, -1093166728, -1073598210)\n\t\t+ W(8, 1074573142, -1107925652, -1106854972, -1097732836)\n\t\t+ W(9, 1048010869, -1072729035, 1072575447, -1087601324)\n\t\t+ W(10, -1100708600, 1035577978, -1097485062, -1069127579)\n\t\t+ W(11, 1082548410, 1057234494, -1095686167, -1117196119);\n\tWS(-1075355670, -1094395357);\n\tsum1 =\n\t\tW(0, -1145694380, 1013276974, 1022872131, -1102394069) + W(1, -1132601278, 1032373060, 1031927794, 1019602069)\n\t\t+ W(2, 1012968093, -1105184299, -1113047243, -1123577887)\n\t\t+ W(3, -1126751284, 1034056645, 1064151904, -1089968245)\n\t\t+ W(4, -1112578984, 1012023536, -1107635165, 1046251906)\n\t\t+ W(5, 1059501808, -1079531190, 1045395638, -1121043161) + W(6, 1035883256, -1107984424, 1052823861, 1040654683)\n\t\t+ W(7, 1035604635, -1136193989, -1117999477, -1101824103)\n\t\t+ W(8, 1052884390, -1097950850, -1102570614, -1124087697)\n\t\t+ W(9, 1025403748, -1117853800, 1040309473, 1021798787)\n\t\t+ W(10, 1016601958, 1014648876, -1135056568, -1113050587)\n\t\t+ W(11, 1051481338, -1099617206, -1117559395, 1015049529);\n\tsum2 = W(0, 1040559153, 1024400373, -1112035522, -1102969122)\n\t\t + W(1, 1035694118, 1008704054, -1099966915, 1050797480)\n\t\t + W(2, -1095559069, 1048535090, -1109162397, 1035803260)\n\t\t + W(3, 1051040838, -1098907063, -1091507667, -1081423354)\n\t\t + W(4, 1049424016, 1032276403, -1122400566, -1088192853)\n\t\t + W(5, 1063399780, 1065515124, -1098794388, -1104133833)\n\t\t + W(6, -1103745056, -1132746540, 1064106398, -1104928579)\n\t\t + W(7, -1097345189, 1042270874, -1127876766, 1040989775)\n\t\t + W(8, -1101527709, 1047332946, -1105732065, -1109516912)\n\t\t + W(9, -1118336076, 999475557, 1025976147, -1171911780)\n\t\t + W(10, -1107661001, 1033064723, -1122216569, 1024449813)\n\t\t + W(11, -1118033876, 1047796018, 1036172042, -1106418589);\n\tWS(1045480366, -1089018411);\n\tsum1 = W(0, 956510844, -1147321796, -1098659472, 1046172476) + W(1, -1117032824, 1012429717, 998930446, -1119371847)\n\t\t + W(2, -1114996930, 1016456206, 1032232105, 992745416) + W(3, -1129843310, 1033743797, -1084286683, 1060852743)\n\t\t + W(4, 1034928007, -1120189081, -1113698796, 1047477674)\n\t\t + W(5, -1080535200, 1065762350, 1036591131, -1130833259) + W(6, 1001814128, 993727556, -1100569285, 1055209670)\n\t\t + W(7, 1034876769, -1112309127, -1126854725, 1019312750)\n\t\t + W(8, -1095107249, 1054147605, -1103835661, -1162991986)\n\t\t + W(9, 1033942209, 991522899, -1106428344, 1040201800)\n\t\t + W(10, -1110790848, 1019870324, -1127622934, -1124727396)\n\t\t + W(11, -1102902186, 1049320503, -1117790432, -1166423644);\n\tsum2 =\n\t\tW(0, -1135134951, 1034251754, -1112699779, 1028246411) + W(1, 1024730233, -1141862453, -1138029383, -1112450391)\n\t\t+ W(2, 1048844919, -1097747276, 1036047504, -1116303285) + W(3, 1039247354, 1048129179, -1081251706, 1030988939)\n\t\t+ W(4, 1032907358, 1032058431, -1105815405, 1013788103)\n\t\t+ W(5, -1102377508, -1085286825, -1098604264, 1026446373)\n\t\t+ W(6, 1043479193, -1107279344, 1074756442, 1066704374)\n\t\t+ W(7, -1121203556, -1115422697, -1108579602, -1098532570)\n\t\t+ W(8, -1079912447, 1048531717, -1097926469, 1017067577) + W(9, 1036464698, -1125069222, 1051417558, 1025432715)\n\t\t+ W(10, 1037541288, -1110631868, -1114044136, -1106884027)\n\t\t+ W(11, -1113485350, 1037742006, -1114746618, 1026757097);\n\tWS(-1129198960, -1098545020);\n\tsum1 =\n\t\tW(0, 1016631370, -1103774667, -1097986678, 1055978916) + W(1, 998946812, -1113370572, -1109829274, 1046260982)\n\t\t+ W(2, -1103302894, 1038066845, 1013747092, 1026014767) + W(3, 1027654249, 1041444949, -1085753764, 1057520791)\n\t\t+ W(4, 1033950432, -1133701934, -1135763497, 1029491033)\n\t\t+ W(5, -1087937321, 1064242364, -1108378356, -1124979408)\n\t\t+ W(6, 1022371969, 1033440347, -1100503343, 1043702710) + W(7, -1149232679, 1034434352, -1109147378, 1047095266)\n\t\t+ W(8, -1092825640, -1106434743, 1039795292, -1123636138)\n\t\t+ W(9, -1124465415, -1135425502, -1114972810, 1042256612)\n\t\t+ W(10, -1134578155, -1133096682, 1000105708, 1031236725)\n\t\t+ W(11, -1092048676, 1048160666, 1047273267, -1110866582);\n\tsum2 =\n\t\tW(0, 1008784866, -1101060946, 1045200185, 1046672822) + W(1, -1118279822, 994298612, -1111810524, 1041574978)\n\t\t+ W(2, -1109901275, -1123470329, -1113194466, -1124039764)\n\t\t+ W(3, -1123287968, -1113715041, -1111729623, 1052382391)\n\t\t+ W(4, -1105523541, 1016737108, 1035375858, 1009783259) + W(5, -1099551228, 1057574679, -1090683445, 1025528776)\n\t\t+ W(6, -1131156064, -1117592464, 1028611861, 1037781521) + W(7, -1089242363, 1044936991, 1014562100, 1037249766)\n\t\t+ W(8, -1126723736, -1088911756, 1057541056, 1038965019)\n\t\t+ W(9, 1013976797, -1112331585, 1048583824, -1105025107)\n\t\t+ W(10, 1046019340, -1100984465, 1025684805, -1116058888)\n\t\t+ W(11, -1123970907, -1098796399, 1058673062, -1111874598);\n\tWS(1055927127, 1032414456);\n\tsum1 = W(0, 1026777470, -1105922759, 1039415013, -1114467391)\n\t\t + W(1, 1040445212, -1109775801, -1114645447, 1038629978)\n\t\t + W(2, -1109541160, 1049649890, -1118657663, 1029983880)\n\t\t + W(3, -1107741345, -1118870909, -1121580331, -1099187900)\n\t\t + W(4, 1040802710, -1103039897, 1034928754, 1048976902) + W(5, 1035267569, -1110167275, 1050521172, 1032803169)\n\t\t + W(6, -1106080726, 1031310464, -1092363639, 1044706191)\n\t\t + W(7, -1122260014, -1106266495, 1036990351, -1116578243)\n\t\t + W(8, 1052806443, -1098780639, 1045812872, -1117906236)\n\t\t + W(9, -1132545269, -1121324945, -1105847083, 1042096283)\n\t\t + W(10, -1112784326, 1031828590, -1115024108, 1028926430)\n\t\t + W(11, -1107491323, 1026721601, 1028974308, -1113700371);\n\tsum2 =\n\t\tW(0, 1046339838, -1095477634, 1041080449, -1106007640) + W(1, 1022253579, -1124447256, -1116647554, 1046850624)\n\t\t+ W(2, -1097525459, 1046513622, -1109703351, 1043170037) + W(3, 1008329020, 1046890022, -1087064144, 1055899106)\n\t\t+ W(4, 1048733947, -1100004355, 1019769686, -1090363791)\n\t\t+ W(5, 1051375999, -1097018549, 1049672544, -1097807314)\n\t\t+ W(6, -1108633040, 1015468535, 1042338708, -1122727333)\n\t\t+ W(7, 1051464963, -1129042543, 1035617664, -1092874283)\n\t\t+ W(8, 1061754259, -1100515622, 1025134369, -1112390214)\n\t\t+ W(9, 1033551944, -1110478242, -1118600243, 1043707610)\n\t\t+ W(10, -1099218588, 1040819075, -1127469148, 1032940188)\n\t\t+ W(11, -1108757958, 1042447169, -1108633308, -1120359161);\n\tWS(1063732396, 1030954530);\n\tsum1 =\n\t\tW(0, 1032126752, 1036299263, 1040042182, -1085959612) + W(1, 1040218780, 1017251428, 976782235, -1151769923)\n\t\t+ W(2, -1126287138, -1100277765, 1040546448, -1135394341)\n\t\t+ W(3, 1026279044, 1034233519, 1024363996, -1112294345) + W(4, 1044348191, -1164354746, -1118035684, 1048463661)\n\t\t+ W(5, -1092651532, -1099766629, 1048686290, 1013744650) + W(6, 1028715099, 1036782808, -1113174091, 1035866674)\n\t\t+ W(7, 1009750781, -1137751148, -1121995199, 1036166050) + W(8, -1102126950, 1049742039, -1118854702, 972654113)\n\t\t+ W(9, 1032435871, 1020132772, -1118937966, -1116277291)\n\t\t+ W(10, 1040779899, -1123833085, -1124714096, 1046021200)\n\t\t+ W(11, -1096484767, 1041160144, 1026126509, 1032085003);\n\tsum2 =\n\t\tW(0, 1023560328, -1114346246, 1055635447, 1080093571) + W(1, 1053265582, -1109086292, 1005726416, 1027252420)\n\t\t+ W(2, 1058379047, 1066361916, 1041698127, 1032891532)\n\t\t+ W(3, -1116687692, -1128267680, -1093219742, -1079490865)\n\t\t+ W(4, 1044641580, -1142986448, -1115408842, -1102003721)\n\t\t+ W(5, -1075825777, -1069273193, -1103412699, 1040229437)\n\t\t+ W(6, 1041728877, 1038357336, -1122468504, 1048667285) + W(7, -1104322529, 1008854368, -1105589301, 1012806192)\n\t\t+ W(8, 1043596623, 1040586029, -1123753164, -1116993440) + W(9, 1038558105, 1025579970, -1110943172, 1032482622)\n\t\t+ W(10, -1134749344, -1125346072, -1113100068, 1032847335)\n\t\t+ W(11, 1037773232, -1123027612, 1003892288, 1027065900);\n\tWS(-1091386327, 1040820769);\n\tsum1 = W(0, -1133727678, -1113530145, 1024243708, 1033777591)\n\t\t + W(1, 1009482248, -1122301794, 1015097725, -1145488419)\n\t\t + W(2, -1111308865, 1043618337, -1113425624, 1016257779)\n\t\t + W(3, -1138479056, 1016526204, -1103657483, 1057905859)\n\t\t + W(4, -1104459527, 1026855702, -1114059050, 1038143634)\n\t\t + W(5, -1091368514, 1056300329, -1103801765, -1136938187)\n\t\t + W(6, 1024901707, -1118547201, -1102986721, 1019703993)\n\t\t + W(7, 1043076580, -1118577003, -1122041679, 1031893970)\n\t\t + W(8, -1104061090, 1024793576, 1039830345, -1111999542)\n\t\t + W(9, 1013224377, -1120867010, 1020963773, -1114932462)\n\t\t + W(10, 1042855834, -1119434421, -1123564392, 1007161468)\n\t\t + W(11, -1118947879, 1024563890, -1129826522, 1018984621);\n\tsum2 =\n\t\tW(0, -1118014300, -1107425211, 988341556, -1122432623) + W(1, 1031639360, -1122715046, -1121259996, 1034914627)\n\t\t+ W(2, 1058886039, 1043257251, -1110426684, 1030027284) + W(3, -1118480989, 1057124947, 1080471640, 1049657622)\n\t\t+ W(4, 981320073, 1022014335, -1120519112, 1041680563) + W(5, -1067455811, -1080970083, -1105451271, 1012008135)\n\t\t+ W(6, 1034237400, -1110358856, -1105716188, -1091987171)\n\t\t+ W(7, 1044181951, -1121988626, 1031820662, -1114315301)\n\t\t+ W(8, -1113532913, 1051213388, -1110623014, 1009779611)\n\t\t+ W(9, -1116062192, 1010762999, 1033223294, -1109593637) + W(10, 1038375349, -1113750985, 1029964608, 974005161)\n\t\t+ W(11, -1106855886, 1037720533, 999181553, 1028099986);\n\tWS(1067317974, -1128063738);\n\tsum1 =\n\t\tW(0, -1112292702, 1047000343, -1088068429, 1048838463) + W(1, -1121751190, 1027999791, 1030230219, 1008892739)\n\t\t+ W(2, -1130941083, -1108932456, 1013016624, 1017454988) + W(3, 1023947008, 1038318737, -1122235065, 1034700890)\n\t\t+ W(4, -1165199081, 1031463650, 1037678225, -1110797816) + W(5, 1055157388, -1096039434, 1039874719, 1025959551)\n\t\t+ W(6, 1016840879, -1118959774, 1048428783, -1113377160) + W(7, 1031603132, 1018062255, 1032095758, -1114918032)\n\t\t+ W(8, 1052878187, -1088738347, 1045859362, -1143147336)\n\t\t+ W(9, 1018620213, -1114992535, 1036886165, -1100769370) + W(10, 1028131502, 1018649043, 1023530868, 1004226268)\n\t\t+ W(11, 1052393190, -1082056652, 1050791676, -1115371169);\n\tsum2 = W(0, 1017164622, -1091622621, 1072454217, 1067262657) + W(1, -1098954881, 1035940089, 1004731920, 1038964407)\n\t\t + W(2, -1113390241, -1112910469, 1038887363, -1108193245)\n\t\t + W(3, 1046790460, 1049069382, -1080520963, 1044434118) + W(4, 1033204278, 1032575148, -1106036842, 1047078409)\n\t\t + W(5, -1071223185, -1073367678, -1106847320, -1127548642)\n\t\t + W(6, 1036535757, -1107481011, 1059476479, -1099641871)\n\t\t + W(7, 967303234, 1015223408, -1103678216, -1098544714) + W(8, 1061994978, 1029437169, 1030771421, -1109007913)\n\t\t + W(9, 1025471738, 1040369699, 1053016271, 1051233508)\n\t\t + W(10, -1123160801, 1042599225, -1122761780, -1107095641)\n\t\t + W(11, 1054597152, 1062276141, -1113404397, -1116480773);\n\tWS(-1095745367, -1102532016);\n\tsum1 =\n\t\tW(0, -1117700567, -1131139906, -1104729417, 1031266390)\n\t\t+ W(1, 1034962037, -1123836106, -1125050061, -1115476726)\n\t\t+ W(2, 1049785973, 1034862742, -1108925228, 1021444802) + W(3, -1104292247, 1044141479, -1096094522, 1043929817)\n\t\t+ W(4, -1121682994, -1112024639, 1032821374, 1043020835) + W(5, -1103984511, 1025371182, 1003529681, 1036065165)\n\t\t+ W(6, -1106685309, 1033588284, -1135965844, 1048857569)\n\t\t+ W(7, -1108409524, -1114922921, 1026094807, 1027591436) + W(8, -1092452582, 1049600882, 1029191534, 1028793076)\n\t\t+ W(9, -1109617979, 1031476842, 1035377859, -1127826823)\n\t\t+ W(10, -1105178749, 1025559229, 1025256272, -1109574827)\n\t\t+ W(11, -1108767399, 1045422790, -1147768356, 1027631502);\n\tsum2 =\n\t\tW(0, -1102917712, 1050493331, -1104683957, 1038417192) + W(1, 1032679083, -1124032472, -1090566997, 1058641835)\n\t\t+ W(2, -1106617401, -1131983160, -1117134944, -1142618034)\n\t\t+ W(3, -1083236080, 1072277942, -1083529216, 1026745412) + W(4, 1030312114, 1033461689, -1084121809, 1066117726)\n\t\t+ W(5, -1110147426, -1097349120, 1045086676, -1107466492)\n\t\t+ W(6, -1092542987, 1055792221, 1053260074, -1092834676)\n\t\t+ W(7, -1115504874, 1040055828, -1098664696, 1016159325)\n\t\t+ W(8, 1047496584, 1048447149, -1103742512, -1111688997)\n\t\t+ W(9, -1115432352, -1123932559, 1040670728, -1110071086)\n\t\t+ W(10, 1018575153, 1025562022, -1109069600, -1107091755)\n\t\t+ W(11, 1041712051, 1019306140, 1023956348, 995416610);\n\tWS(1064673964, 1027541745);\n\tsum1 =\n\t\tW(0, 1040862122, 1042078126, 1060076351, -1092017101) + W(1, 1050924251, -1113513485, -1105951646, -1104573695)\n\t\t+ W(2, 1032906140, -1098380055, -1103234546, -1122608113)\n\t\t+ W(3, -1159900529, -1104241265, 1059885441, -1084208856)\n\t\t+ W(4, 1045405901, -1114509959, 1047048323, -1111978190)\n\t\t+ W(5, 1064315273, -1089015252, 1048739529, -1097330869)\n\t\t+ W(6, -1123048515, -1096920009, 1059865934, -1085419935)\n\t\t+ W(7, 1043557114, -1130206982, -1115789415, 1032018046) + W(8, 1050382000, -1095947620, 1032498465, 1009712656)\n\t\t+ W(9, 1032172675, 1022298419, 1053685923, -1104053605) + W(10, 1042167691, 1011282770, 1028373376, -1099040790)\n\t\t+ W(11, 1058530774, -1087017843, 1037400788, -1099616447);\n\tsum2 = W(0, 1039738446, -1137481092, 1036746190, 998253152) + W(1, 1035100433, 1029249908, -1096514001, 1050849818)\n\t\t + W(2, -1109747727, -1102987618, -1144728624, -1103405950)\n\t\t + W(3, 1067583917, 1017170018, -1078331016, 1044897487)\n\t\t + W(4, -1108804343, -1113657787, 1083413745, 1041988969)\n\t\t + W(5, -1066189939, -1088427847, 1030429056, 1049519441)\n\t\t + W(6, 1067818743, -1115429835, -1077977055, -1125950758)\n\t\t + W(7, -1124211336, -1105416150, -1089267428, 1054896719)\n\t\t + W(8, 1050059376, -1108032139, 1045807183, -1104699523)\n\t\t + W(9, 1050540062, -1108022123, -1119460484, 1038480975)\n\t\t + W(10, -1164441214, 1036658641, -1102208699, 1042362507)\n\t\t + W(11, -1140654200, -1098634922, -1138500556, -1135144148);\n\tWS(-1084384556, -1100810808);\n\tsum1 =\n\t\tW(0, 1032390692, -1101205955, -1095424763, 1056723089) + W(1, -1103994552, -1113631133, 1033258828, -1114756638)\n\t\t+ W(2, -1115332589, 1044941511, -1103092466, 1038921097) + W(3, 1036208454, 1034225747, -1089988048, 1059213081)\n\t\t+ W(4, 1016698694, 1041433148, -1153131217, -1123281148)\n\t\t+ W(5, -1080799329, 1058219330, -1102604175, 1029458059) + W(6, 1035878930, 1052764669, -1086451675, 1065718984)\n\t\t+ W(7, 1010056863, 1046701849, -1113170436, -1110681734)\n\t\t+ W(8, -1089641270, 1051546784, -1105901266, -1114617106)\n\t\t+ W(9, 1034716867, -1132636906, -1111992667, 1048907447)\n\t\t+ W(10, -1104305197, 1022756491, 1008810370, 1010363102)\n\t\t+ W(11, -1089944572, 1051751177, 1025009925, 1042675492);\n\tsum2 =\n\t\tW(0, 1003892755, -1106845972, -1130802613, 1042856976) + W(1, -1090921483, 1035865477, -1123544386, 1040443741)\n\t\t+ W(2, -1099129814, 1046395618, -1117156960, -1128022157) + W(3, 1040199158, 1041556166, 1034864555, 1049252005)\n\t\t+ W(4, -1101642940, 1029291710, -1099919704, -1098641213)\n\t\t+ W(5, 1044973210, 1051151809, -1094482604, 1033022953) + W(6, 1046124074, 1043027552, 1046986152, -1120255910)\n\t\t+ W(7, 1049495257, 1028643166, -1114201767, -1102894487)\n\t\t+ W(8, 1040886200, -1098031952, -1113386876, 1031856421)\n\t\t+ W(9, -1137485313, 1031291554, -1097152858, -1103612985)\n\t\t+ W(10, -1132183417, -1106468948, 1018916205, 1029095170)\n\t\t+ W(11, 1035815457, 1034278467, 1026205590, 1020718685);\n\tWS(-1097545175, -1081485407);\n\tsum1 = W(0, 1036015463, 1034150438, 1057909318, -1085934785) + W(1, 1035924004, 1033963168, 1036906638, -1107749409)\n\t\t + W(2, 1041348600, -1091465804, -1120240750, -1115496908)\n\t\t + W(3, 1033438601, 1025404544, 1058891216, -1088212159)\n\t\t + W(4, 1040930578, 1023737332, -1148467606, -1130068931)\n\t\t + W(5, 1062920275, -1085185870, 1044931644, 1034996968)\n\t\t + W(6, -1116883369, -1110996648, 1058446394, -1083820335)\n\t\t + W(7, -1110014855, -1109644005, 1043481795, -1129433572)\n\t\t + W(8, 1057530498, -1097522985, 1046628778, 1044774695)\n\t\t + W(9, -1107248831, -1112307200, 1041812911, -1098817647)\n\t\t + W(10, -1112689630, -1109394217, 1035852867, -1133343797)\n\t\t + W(11, 1058924580, -1088845017, 1031062731, 991839047);\n\tsum2 =\n\t\tW(0, -1085422352, -1096165509, 1057773529, -1090487063) + W(1, 1044955346, 1048850208, -1073537081, -1097506962)\n\t\t+ W(2, 1050305732, 1042351306, -1096519547, -1098077313) + W(3, -1090145600, 1035648589, 1070820271, 1042246902)\n\t\t+ W(4, 1012707558, 1040847724, -1103264022, 1037776879) + W(5, 1064009122, 1057815879, 1035447241, 1039355809)\n\t\t+ W(6, -1098060014, -1106454260, -1102687355, 1056492080)\n\t\t+ W(7, -1098251612, -1128314591, 1039561049, -1132410675)\n\t\t+ W(8, 1037201191, -1132940238, 1055262754, 1034334977)\n\t\t+ W(9, -1111561066, -1095706003, -1106323076, 1047053654)\n\t\t+ W(10, -1098685023, -1107078913, -1097648243, -1093619532)\n\t\t+ W(11, 1065891070, -1104795343, 1017091667, 1044351754);\n\tWS(-1079771574, 1075069839);\n\tsum1 = W(0, 1032166989, -1118529175, 1055702741, -1092970539)\n\t\t + W(1, -1117950828, -1113551430, -1111167476, 1021133405)\n\t\t + W(2, 1048648437, -1092445782, 1033539229, -1142239002)\n\t\t + W(3, -1123178206, -1093562003, 1062276827, -1088433116)\n\t\t + W(4, -1104828877, -1110397888, 1032734815, -1104246611)\n\t\t + W(5, 1071187580, -1118830448, -1114529494, -1119974813)\n\t\t + W(6, 1029165557, -1098100446, 1061220800, -1097110780)\n\t\t + W(7, -1112849365, -1139975764, -1112820125, -1114628655)\n\t\t + W(8, 1049405702, -1093425874, 1023590922, -1111568211)\n\t\t + W(9, -1135576864, -1133453360, 1042497282, -1109854691)\n\t\t + W(10, 992807281, 974859957, -1114861753, -1119446905)\n\t\t + W(11, 1051379002, -1094782027, -1104282614, -1107804608);\n\tsum2 =\n\t\tW(0, -1108373663, 1058265898, -1105791278, -1097633487) + W(1, 1040059628, 1041333883, 1008476139, -1092753943)\n\t\t+ W(2, -1098184263, 1036219103, -1096394805, -1106791026)\n\t\t+ W(3, -1104454680, 1052155727, -1106622092, 1039768739) + W(4, 1043022076, 1034264586, 1048684757, -1094584251)\n\t\t+ W(5, 1051207789, 1059813061, -1089567461, 1043988712) + W(6, -1093428939, 1044002260, 1040647411, 1037804238)\n\t\t+ W(7, 1053976656, -1094438691, 1053127551, 1027921055) + W(8, -1092246791, 1058749571, -1109099791, 1046191998)\n\t\t+ W(9, -1096653504, -1109762731, 1028193495, -1091622541)\n\t\t+ W(10, -1128546349, -1105323978, 1052320010, -1093142139)\n\t\t+ W(11, -1102532444, 1056925595, -1105143398, 1027895571);\n\tWS(-1080085654, 1070612946);\n\tsum1 =\n\t\tW(0, 1024243697, -1111019203, -1099863023, 1051294614) + W(1, 1018553499, 1001929499, -1118763904, 1017624971)\n\t\t+ W(2, -1093242824, 1049086721, -1110032568, -1129474933)\n\t\t+ W(3, -1129448298, 998267115, -1096657110, 1054244159)\n\t\t+ W(4, -1107816470, -1103030358, -1125372076, 1049904509)\n\t\t+ W(5, -1083526619, 1063525996, 1050014740, 1034265690) + W(6, -1130529432, 1044325341, -1084273056, 1060516258)\n\t\t+ W(7, -1120428313, 1028809164, -1113325424, 1036368923)\n\t\t+ W(8, -1089131829, 1052725165, 1042939778, -1137068591) + W(9, 1028582463, 1022422215, -1100657096, 1045179095)\n\t\t+ W(10, -1105723916, 995816851, -1115811081, 1029887376)\n\t\t+ W(11, -1095229037, 1047234173, 1034815359, 1023513072);\n\tsum2 =\n\t\tW(0, 1027629060, -1114994936, 1044032624, -1120685804) + W(1, 1028515824, -1128032940, 1025235210, 1042086314)\n\t\t+ W(2, -1110089750, 1041443307, -1109301707, 1028557604)\n\t\t+ W(3, -1125103522, -1109536432, 1027377576, 1041551160)\n\t\t+ W(4, 1038947979, -1095260923, -1130467636, 1043514454) + W(5, 1040857173, 1078385077, -1069674168, 1041445431)\n\t\t+ W(6, 1000499297, -1116030212, 1049094807, 1071531230) + W(7, -1072009528, 1044521776, 1020465580, 1034381305)\n\t\t+ W(8, -1102199059, -1097624207, 1042363648, -1111317304)\n\t\t+ W(9, -1138182160, -1133867384, 1040209410, 1042950964)\n\t\t+ W(10, -1100125727, 1026231984, 1014590712, 1032991925)\n\t\t+ W(11, -1107097337, -1110894461, 1020171064, -1115643044);\n\tWS(-1094677847, 1071331518);\n\tsum1 =\n\t\tW(0, -1108370254, 1050522446, -1090412394, 1059909490) + W(1, -1131659964, 1045668787, 1027561514, -1102155388)\n\t\t+ W(2, -1096900614, 1033926552, -1108396174, -1099365497)\n\t\t+ W(3, -1098732332, 1051883284, -1088235704, 1060113893)\n\t\t+ W(4, -1104366446, 1036562753, -1118400576, 1052444946) + W(5, -1081990504, 1065971548, 1016076284, 1045429432)\n\t\t+ W(6, -1098654343, 1048632224, -1083209683, 1057796766) + W(7, -1094058291, 1027649399, 1020701942, 1036179296)\n\t\t+ W(8, -1095695623, 1055081266, 1044926426, -1115499084)\n\t\t+ W(9, -1114608461, 1043748547, -1096819473, 1048355474)\n\t\t+ W(10, -1102235562, 1020598162, -1102267173, 1046936641)\n\t\t+ W(11, -1088405429, 1057781222, -1122894705, 1041162909);\n\tsum2 = W(0, -1102306900, 1042298222, 1021581591, -1097774924) + W(1, 1051289508, 1044651623, 1039340517, 1011988276)\n\t\t + W(2, -1091773202, -1083547573, 1050176620, 1060043835)\n\t\t + W(3, 1036459319, -1104503945, -1086047943, -1076320925)\n\t\t + W(4, 1066124397, 1072230275, 1032447827, -1099734245)\n\t\t + W(5, -1071833762, -1070847208, 1069182349, 1080482397)\n\t\t + W(6, -1099327251, 1032726509, -1087097517, -1079468544)\n\t\t + W(7, 1058492703, 1067612874, 1052797014, 1032685073) + W(8, -1094401898, -1084551630, 1061745990, 1060905071)\n\t\t + W(9, -1122082449, 1045894449, -1089730964, -1096261152)\n\t\t + W(10, 1029975482, 1035766217, -1098452307, 1031495568)\n\t\t + W(11, -1094627244, -1097740674, 1062784611, 1036170953);\n\tWS(-1075403638, -1098484659);\n\tsum1 =\n\t\tW(0, 1008218969, -1141902179, 1045612697, -1098198307) + W(1, -1115216112, 1014117412, 1031048294, 1016567255)\n\t\t+ W(2, 1051272109, -1097302541, 1045061466, 1032424528)\n\t\t+ W(3, -1123131291, -1102849342, 1045999461, -1089514713)\n\t\t+ W(4, -1110301017, -1117285565, 1045188911, 1018204181) + W(5, 1067242878, -1083074125, 1055219615, 1039741805)\n\t\t+ W(6, -1123984690, -1097928441, 1057827361, -1090995143)\n\t\t+ W(7, 1042127630, -1138318152, 1016373997, -1102752375) + W(8, 1039307800, -1089521325, 1018247819, 990571063)\n\t\t+ W(9, 1038284987, -1119205801, 1052680217, -1111274305) + W(10, 1043301703, 1035406958, 993498863, -1111653947)\n\t\t+ W(11, 1048974634, -1089001074, -1112012330, 991913685);\n\tsum2 = W(0, 1032878555, -1136655860, 1031615749, -1113247036)\n\t\t + W(1, -1102324444, 1033821831, -1123900432, 1023477569)\n\t\t + W(2, 1032172309, 1040892014, 1041677780, -1122117887) + W(3, 1029453781, 993352402, -1101515073, -1093800370)\n\t\t + W(4, -1099560811, -1111754290, -1120535472, 1007422372)\n\t\t + W(5, 1063516373, 1059067488, -1101931537, -1118366060)\n\t\t + W(6, 1040510410, -1110556919, -1114866186, 1049733424)\n\t\t + W(7, -1091691569, -1131546954, -1109544472, -1138628828)\n\t\t + W(8, -1101753271, -1112478460, -1137342172, 1043560141)\n\t\t + W(9, 1036988619, -1137184004, 1046060209, -1128679382)\n\t\t + W(10, -1112686045, -1110783375, -1113659102, 1035524869)\n\t\t + W(11, -1110546008, -1106958218, 999359657, 1026284797);\n\tWS(1018938736, 1060529869);\n\tsum1 =\n\t\tW(0, -1114076530, 1037607357, 1045714156, -1166977277) + W(1, -1102825464, 1003359422, 1008598737, -1120766810)\n\t\t+ W(2, 1044442542, 1024586298, 985048227, 1019680094) + W(3, 1029696041, -1113865353, 1057228923, -1084710912)\n\t\t+ W(4, 1048654858, -1122235660, -1118730378, 1019917938) + W(5, 1049628033, 1048848151, -1109196652, 1032134772)\n\t\t+ W(6, 1036159584, 1041300082, -1081803320, 1052825757) + W(7, -1101625253, 1023446241, 1012443924, -1119787914)\n\t\t+ W(8, 1042784239, -1110703311, 1021290536, 1025035938) + W(9, 1034257674, -1102751430, 1016494120, -1108049641)\n\t\t+ W(10, 1039349129, -1122160707, -1133449206, 1018668169)\n\t\t+ W(11, 1031639516, -1111061268, 1018121541, 1028394476);\n\tsum2 = W(0, -1146778654, 1033337426, -1101837401, 1023259685)\n\t\t + W(1, -1165315756, 1017616818, 1009999826, -1117028555)\n\t\t + W(2, -1107426057, -1113617305, 1042598704, -1119841713)\n\t\t + W(3, 1042445717, -1092512747, -1106280442, 1063964069)\n\t\t + W(4, -1101414619, 1033400884, 1027431889, -1100415596)\n\t\t + W(5, 1063146362, 1058459732, -1136881638, -1110929163)\n\t\t + W(6, -1118789096, -1100913756, -1086144449, -1101061454)\n\t\t + W(7, -1099212326, 1043348599, 1034933139, 1031653672)\n\t\t + W(8, -1121957589, -1139753565, 1035181957, -1110261015)\n\t\t + W(9, -1102516465, 1049736808, -1104136456, 1034026738)\n\t\t + W(10, 1031514566, -1119239229, 1039233552, -1123203031)\n\t\t + W(11, -1123128270, -1143324392, -1103321885, 1032933914);\n\tWS(1057790316, -1113005641);\n\tsum1 = W(0, -1123468520, 1034968039, -1107161453, 1035442035)\n\t\t + W(1, -1107573447, 1040623159, 1016842734, -1180462681)\n\t\t + W(2, -1109372445, -1126387193, -1110219956, 1001956750)\n\t\t + W(3, 1017823704, -1141354132, -1097660717, 1045333479)\n\t\t + W(4, -1111689634, 1034883047, 1031334797, -1111663246)\n\t\t + W(5, 1060769665, -1097006056, 1016331253, -1121213099)\n\t\t + W(6, 1029517379, -1096962432, 1062816796, -1085875335) + W(7, 1042106418, 999707420, 1032276500, -1102337515)\n\t\t + W(8, 1057344992, -1087615930, 1042154624, -1110655190)\n\t\t + W(9, 1024531558, -1112383277, 1050585827, -1099229077)\n\t\t + W(10, 1021430571, 1027213229, 1032934320, -1115337892)\n\t\t + W(11, 1048852876, -1104188731, 1007994773, -1125102461);\n\tsum2 =\n\t\tW(0, 1027505374, 1006384241, 1038217397, -1102596332) + W(1, -1088198084, 1054112069, -1119743709, 1032385395)\n\t\t+ W(2, -1124784904, 1055108824, -1101781911, -1110486748)\n\t\t+ W(3, 1022357321, -1110226975, 1036163691, -1095998103)\n\t\t+ W(4, -1077861124, 1063443275, -1129702556, 1009992786)\n\t\t+ W(5, 1038388564, -1096068823, -1082211809, 1060625206)\n\t\t+ W(6, 1025908250, -1117540770, -1107551412, 1027585837)\n\t\t+ W(7, 1067639721, -1095993202, -1116658238, 1015280579) + W(8, 1043662427, 1052401764, 1063419774, -1084462256)\n\t\t+ W(9, 1007287620, 1013929491, -1110875284, -1112465838)\n\t\t+ W(10, 1041946916, 1040943353, -1132286080, -1123806249)\n\t\t+ W(11, 1032548500, 1049275421, 1054953848, -1088060635);\n\tWS(1057314092, 1031126097);\n\tsum1 = W(0, -1113264897, 1047286031, 1051515170, -1091122512)\n\t\t + W(1, 1035529026, -1125355113, 1042921300, 1038748523) + W(2, 1044373061, -1119263830, 1016709539, 1029610636)\n\t\t + W(3, -1118216326, 1040626286, 1057172805, -1081529962) + W(4, 1043973191, 1029771624, 1036778483, 1048990343)\n\t\t + W(5, -1111196723, -1076778621, 1049229393, -1112976162)\n\t\t + W(6, 1035020911, 1036098930, 1053560288, -1085296972) + W(7, 1046938632, 1041831703, -1108928881, 1042428894)\n\t\t + W(8, 1053915059, -1112351005, -1123285785, -1103970660)\n\t\t + W(9, 1036290288, 1016422504, 1044112316, -1100809115) + W(10, 1035877806, 1044125996, 1012907241, 1041504752)\n\t\t + W(11, 1048512334, -1107245185, -1123727583, -1123672296);\n\tsum2 =\n\t\tW(0, -1110279027, -1116888772, 1033554595, -1108669327) + W(1, 1015808739, 1027314221, 1044898087, -1115916604)\n\t\t+ W(2, -1111117443, 1045218355, -1106102431, -1116221606)\n\t\t+ W(3, -1096945908, -1107202311, 1035778723, -1103416606) + W(4, 1041666953, 1024714919, 1039092196, 1045884385)\n\t\t+ W(5, -1113256321, 1065794034, -1107247823, -1098987808)\n\t\t+ W(6, -1113241071, -1103988696, -1115920774, -1090569433)\n\t\t+ W(7, 1049716916, 1049758114, -1099008684, 1049112986)\n\t\t+ W(8, -1139004677, 1055599565, -1106016659, -1091770239)\n\t\t+ W(9, 1044106833, -1123386226, -1112080343, -1099737884)\n\t\t+ W(10, 1031391070, 1053158291, -1103116396, -1134049769)\n\t\t+ W(11, -1114347803, 1044073709, -1108799013, -1105054228);\n\tWS(-1078536214, 1004530797);\n\tsum1 = W(0, 1027375859, -1101920227, 1025777344, 1044389645) + W(1, -1110651587, 1018050380, 1017444741, 1031432968)\n\t\t + W(2, -1103056081, 1048716617, -1137653198, -1125959547)\n\t\t + W(3, -1120029560, -1106564803, -1107107772, 1051154454)\n\t\t + W(4, -1107166356, 1019570356, 1000019140, 1048371434)\n\t\t + W(5, -1082038651, 1066595410, -1130046381, -1125449965)\n\t\t + W(6, -1114543207, -1118108517, -1087843395, 1055824714)\n\t\t + W(7, -1105265945, 1033235496, 1013557197, 1042631950)\n\t\t + W(8, -1090887738, 1054676989, 1030116559, -1126792065)\n\t\t + W(9, -1122136338, 1018155212, -1103973545, 1041035048)\n\t\t + W(10, 1023828021, -1122035417, -1148145247, 1016114854)\n\t\t + W(11, -1102912795, 1016296812, 1040191506, -1142050258);\n\tsum2 =\n\t\tW(0, 1027035378, 1026113022, -1111907604, -1117578886) + W(1, -1140538653, 1018825264, -1132701065, 1034348094)\n\t\t+ W(2, 1044772326, 987582920, -1136739637, 1015195718) + W(3, -1114259972, 1019537869, -1115459713, -1091701771)\n\t\t+ W(4, -1106970806, 1029368182, 1024730711, -1139897757)\n\t\t+ W(5, -1083470341, -1064559027, 1035917626, -1129456736) + W(6, 986229224, -1140805741, 1024256637, 1083026821)\n\t\t+ W(7, 1051507274, 1025912688, 1013886009, -1118691470) + W(8, 1050967575, 1062853848, 1035548789, -1107265712)\n\t\t+ W(9, -1129435432, 1009541569, 1013091981, -1097816209)\n\t\t+ W(10, 1030786995, 1031335734, -1141056234, -1129312440)\n\t\t+ W(11, 1028089297, 1036032976, -1102804079, -1115863996);\n\tWS(1053759831, 1032374114);\n\tsum1 =\n\t\tW(0, 972229904, -1121671930, 1054724605, -1092393035) + W(1, 1018308729, -1129466650, -1109228149, -1112583528)\n\t\t+ W(2, -1112974870, -1101934908, 1027590122, 1029939172) + W(3, 1034978575, 1034149296, 1061211455, -1092299422)\n\t\t+ W(4, 1034030567, -1113423424, 1041049216, 1029443406) + W(5, 1048871720, -1093922438, -1111847647, 1038901743)\n\t\t+ W(6, -1120680758, 1029497788, 1059772533, -1094240300)\n\t\t+ W(7, 1041914031, -1106909549, 1029299866, -1098177536)\n\t\t+ W(8, 1052523382, -1091878482, -1113968603, 1040006220)\n\t\t+ W(9, -1104501302, -1147362406, -1143596105, -1112394307)\n\t\t+ W(10, 1028043992, -1140269215, 1034604409, -1129221556)\n\t\t+ W(11, 1050895314, -1097371836, -1126204095, 998375305);\n\tsum2 =\n\t\tW(0, -1150066816, -1150466984, 1023864952, -1110066210) + W(1, 1023825317, -1124858867, -1122485893, 1032358015)\n\t\t+ W(2, -1120268940, 1042589181, 1027888694, -1130877326)\n\t\t+ W(3, -1114773240, 1050624105, -1092046440, 1028033997)\n\t\t+ W(4, -1151325172, -1135440218, 1024800634, 1086980496)\n\t\t+ W(5, -1062089081, -1086968029, 1038366470, -1140173368) + W(6, 996682648, 1049846439, -1092228228, 1024724796)\n\t\t+ W(7, -1121152696, 1022098295, -1123997738, -1116390866)\n\t\t+ W(8, 1022750294, 1041929871, -1118357792, 1017805328) + W(9, 1019128023, 1016213345, 1015347232, -1114433107)\n\t\t+ W(10, 1031614438, -1119866592, -1127165963, -1127449775)\n\t\t+ W(11, 1000268865, -1139900476, -1136800730, 1025894920);\n\tWS(1063005484, 1009613411);\n\tsum1 = W(0, 1023879031, -1099686359, 1052137768, 1046007565)\n\t\t + W(1, -1104853008, 1005501772, -1116658758, -1121736524)\n\t\t + W(2, 1047373394, -1096622041, 1032552475, -1119708225)\n\t\t + W(3, 1016433014, -1101192360, 1060630207, -1088767007)\n\t\t + W(4, -1107092245, -1118541917, 1020845368, -1114633573)\n\t\t + W(5, 1066103327, -1084203279, 1041296218, -1116191290)\n\t\t + W(6, 1014732617, -1095872969, 1062822060, -1090088910)\n\t\t + W(7, 1027255591, 1022596005, -1133265115, -1106126199)\n\t\t + W(8, 1059882369, -1090037515, -1131360500, -1115075910)\n\t\t + W(9, -1123204757, -1114430117, 1050777829, -1103091289)\n\t\t + W(10, -1122457924, 1022253604, 1010953149, -1135381594)\n\t\t + W(11, 1058652475, -1092699671, -1108476770, -1114779071);\n\tsum2 =\n\t\tW(0, 1018912922, 1027578843, 1033809184, -1094114890) + W(1, -1100264522, -1107937173, -1115513506, -1122957333)\n\t\t+ W(2, -1107632498, 1001948858, 1024979575, 996744179) + W(3, 1035927400, 1036987406, -1102289594, 1056054406)\n\t\t+ W(4, -1110397259, -1110541201, -1104590179, -1100032664)\n\t\t+ W(5, 1055409420, 1048553428, -1121465059, -1114033403) + W(6, 1040736265, -1110179624, 1055289786, 1051787669)\n\t\t+ W(7, -1147035242, 1041331760, -1107721632, -1125426330)\n\t\t+ W(8, -1112721987, -1094744691, 1045301422, -1113161109)\n\t\t+ W(9, 1025188211, -1103038285, 1036015348, 1032878358)\n\t\t+ W(10, -1131004626, -1108457170, -1112944230, 1043904940)\n\t\t+ W(11, -1110109848, -1118996080, -1124556646, 1028913131);\n\tWS(-1088267692, 1058858468);\n\tsum1 = W(0, -1112379634, 1030761249, 1050799110, -1099191401)\n\t\t + W(1, 1033839199, -1111715307, 1029162995, 1004146884) + W(2, 1045209037, -1095201623, 981108966, 1002675052)\n\t\t + W(3, -1140270752, -1122297718, 1060358148, -1091143388)\n\t\t + W(4, 1043211072, -1120236170, -1141342278, 1040340278)\n\t\t + W(5, 1057423488, -1083233902, 1032118859, -1118812007)\n\t\t + W(6, -1155361775, 1036240851, 1058630580, -1098879351)\n\t\t + W(7, 1032700466, 1017441470, -1113272402, -1129581456)\n\t\t + W(8, 1044230767, -1096101987, 1030417559, -1148456452)\n\t\t + W(9, -1140210569, 1042224566, -1104611845, -1122560784)\n\t\t + W(10, -1140846885, -1124250818, 1015213304, 994119730)\n\t\t + W(11, -1109863885, -1109785875, 1009738084, -1131671893);\n\tsum2 =\n\t\tW(0, -1113443438, 1021821461, -1122246023, -1146734500) + W(1, -1128559783, -1125128801, 1023812788, 1044300514)\n\t\t+ W(2, -1104002403, 1024116650, -1115812447, -1134793082)\n\t\t+ W(3, -1131593767, -1104994806, 1038382254, 1049088332)\n\t\t+ W(4, -1105739887, -1131329759, -1112801638, 1060658961)\n\t\t+ W(5, -1099826888, -1089766136, 1025686404, 1034755166) + W(6, -1105757720, 1044687616, 1066144433, 1042354562)\n\t\t+ W(7, -1117250635, -1114066084, -1107427633, -1087213560)\n\t\t+ W(8, 1057721748, -1129092349, 1035306954, 1031417186)\n\t\t+ W(9, -1107137147, -1093064102, -1097329958, 1044181933)\n\t\t+ W(10, -1106719387, -1117543346, 1049954034, -1093773442)\n\t\t+ W(11, 1039897892, -1105235988, 1040800736, -1128306605);\n\tWS(1042978478, 1051058289);\n\tsum1 =\n\t\tW(0, -1105382966, 1032357083, -1099095273, 1056839899) + W(1, -1122236410, 1024938700, 1035278676, 1023966158)\n\t\t+ W(2, -1110890773, 1050844654, 1019140850, -1122653091)\n\t\t+ W(3, -1102112151, -1113794846, -1087097191, 1060126757)\n\t\t+ W(4, -1107056589, -1122892351, -1102711504, 1052488610)\n\t\t+ W(5, -1081382120, 1063120271, -1150461374, -1119829084)\n\t\t+ W(6, -1113404858, 1046698475, -1086454106, 1060142827)\n\t\t+ W(7, -1103751812, 1007453138, -1111458068, 1025992701)\n\t\t+ W(8, -1097860134, 1054395618, -1120625160, -1106500335)\n\t\t+ W(9, 1038103836, 1042579843, -1105233954, 1048420817) + W(10, 1025690583, 1032216339, -1101215220, 1026938905)\n\t\t+ W(11, -1091436978, 1056719627, -1112415123, 1010325087);\n\tsum2 =\n\t\tW(0, 986675002, -1098687074, 995475005, -1115454695) + W(1, -1110655697, 1018060844, -1112567440, 1041166801)\n\t\t+ W(2, -1097111455, -1132868679, -1114152579, -1101427932)\n\t\t+ W(3, 1033516168, -1099338776, 1062728692, -1120015952) + W(4, 1023628514, 1045275251, -1097585273, 1019263552)\n\t\t+ W(5, 1066654492, 1054175336, -1097107880, -1098419362) + W(6, 1031672616, -1108963639, 1034345380, 1038275134)\n\t\t+ W(7, -1118909665, 1049612882, 1029453516, -1104454378)\n\t\t+ W(8, -1124466258, -1096244103, 1049130538, -1100742770)\n\t\t+ W(9, -1106591291, -1109440188, -1092068145, 1039104546)\n\t\t+ W(10, -1093717692, 1000911598, 981423732, 1024870634)\n\t\t+ W(11, 1048117247, -1119846616, 1042494451, -1140045927);\n\tWS(-1097071959, 1072623846);\n\tsum1 =\n\t\tW(0, 1026094363, 1010541764, -1087379998, 1028105114) + W(1, 1046169702, -1135291959, -1114366565, 1023927408)\n\t\t+ W(2, -1100421531, 1051865478, -1105971271, -1125008010)\n\t\t+ W(3, 1026372640, 1034504814, -1091057687, 1057630379) + W(4, 1041980470, 1012391943, -1127140609, 1038480008)\n\t\t+ W(5, -1086095524, 1064048287, -1104375598, 1011497593) + W(6, 1020533357, 1046400295, -1083615449, 1061319210)\n\t\t+ W(7, -1113258549, -1126436590, -1164090721, 1040252248)\n\t\t+ W(8, -1089701071, 1056141130, -1149976804, 1008261592)\n\t\t+ W(9, -1143600974, 1040642843, -1093225865, 1049626241)\n\t\t+ W(10, -1120849689, -1126913777, 993477434, 1032065949)\n\t\t+ W(11, -1090227881, 1047950199, 1048635489, 1026040178);\n\tsum2 =\n\t\tW(0, 1012042818, 1045767812, -1063490706, -1101778611) + W(1, -1112785819, 1012780879, 1021360395, -1098807230)\n\t\t+ W(2, -1081789373, -1114664520, 1033999610, 1021391529) + W(3, -1107209227, 1044720012, 1074390906, 1049922132)\n\t\t+ W(4, -1110057121, -1130294258, 1027378250, 1042281858) + W(5, 1079115935, -1094869567, 1045861970, 1031106226)\n\t\t+ W(6, -1105921842, 1016599978, 1058048856, -1118592797)\n\t\t+ W(7, 1034050759, -1122317121, 1041772128, -1127223374)\n\t\t+ W(8, -1108782236, -1121088549, -1129798306, 1025125464)\n\t\t+ W(9, -1127367716, -1115783877, -1128008216, -1137516645)\n\t\t+ W(10, 1033434514, -1149825053, -1127019644, 1027816090)\n\t\t+ W(11, 1032186898, -1111496361, -1136389257, 1031888403);\n\tWS(-1103312814, -1092017335);\n\tsum1 = W(0, -1127703091, -1101144796, 1054306333, -1126801713)\n\t\t + W(1, 1023075088, 989243788, 1018146514, -1115460311) + W(2, 1039997174, 1026063214, 1027296474, -1122138660)\n\t\t + W(3, -1121799134, -1106383343, 1024945271, -1131110905)\n\t\t + W(4, -1132250026, 1032388672, 1017072510, -1133230391)\n\t\t + W(5, -1088288960, 1059941407, -1113425894, 982272924)\n\t\t + W(6, -1131539818, 1034901054, -1088630417, 1061737047)\n\t\t + W(7, -1097522374, 1021266411, -1112727125, 1027622014)\n\t\t + W(8, -1096972398, 1057455253, -1097018828, -1135487483)\n\t\t + W(9, 1017229265, 1018005017, -1101045202, 1048616129)\n\t\t + W(10, -1112216732, -1117699788, -1109754009, 1034197373)\n\t\t + W(11, -1098488314, 1051714580, -1142469689, 995701513);\n\tsum2 = W(0, 1015133861, -1105189044, -1093732269, -1094162786)\n\t\t + W(1, -1109540616, 1030009493, 1037113072, -1115931822)\n\t\t + W(2, -1102686481, -1113599737, 1040400825, -1114813207)\n\t\t + W(3, -1114822552, -1098364789, 1041653115, 1041635421)\n\t\t + W(4, -1118060506, 1027616765, 1028491873, -1113527921)\n\t\t + W(5, 1065997875, 1064813540, -1123044799, -1116517245)\n\t\t + W(6, -1105557810, 1024139573, -1130473293, 1037786550)\n\t\t + W(7, -1105450383, 1021543889, 1038591890, -1112247318)\n\t\t + W(8, -1098512761, 1036196676, -1106060901, 1005718790)\n\t\t + W(9, -1105949948, 1007564387, -1125828389, -1114108758)\n\t\t + W(10, -1118151575, -1122858549, 1032708826, -1120342494)\n\t\t + W(11, -1125733097, -1132225813, 1010062515, 1029912177);\n\tWS(1054094679, 1053313313);\n\tsum1 =\n\t\tW(0, -1133457438, -1123263126, 1046955525, -1124016519)\n\t\t+ W(1, 1039131745, -1120644986, -1120986711, -1130558777)\n\t\t+ W(2, 1034791245, 1044418743, -1102726978, 1007447622) + W(3, 1034987238, -1097984725, 1059693200, -1102062065)\n\t\t+ W(4, -1136653836, -1119688622, 1028444909, -1096198619)\n\t\t+ W(5, 1056744813, -1098120268, -1097784815, -1150742701)\n\t\t+ W(6, 1035642130, 1007426149, -1111414009, -1111514230) + W(7, -1121981368, 1028941155, 1018062863, 1002886242)\n\t\t+ W(8, 1030506913, -1104691680, 1038384226, -1124505481)\n\t\t+ W(9, 1034710931, -1123562906, -1113706235, 1011520719)\n\t\t+ W(10, -1114621003, 1028268649, -1149170946, 1018181775)\n\t\t+ W(11, 1033357311, -1107703301, 1012043028, 1016894461);\n\tsum2 =\n\t\tW(0, 988916677, 1035831303, -1110571087, 1034464782) + W(1, -1106828560, -1178538002, -1137939637, -1140903881)\n\t\t+ W(2, 1038296707, -1090860425, 1044389789, 1041756630)\n\t\t+ W(3, -1123566910, -1103092742, -1107155945, 1056968489)\n\t\t+ W(4, -1079651989, 1029915845, 1028209713, -1131746560)\n\t\t+ W(5, -1117714466, 1064742714, 1050942503, -1106236653)\n\t\t+ W(6, -1123858844, -1101579019, 1038803820, 1040557782) + W(7, 1043224862, -1110415601, 1036944358, 1038814302)\n\t\t+ W(8, -1103151768, -1120375726, -1130430804, 1019097405)\n\t\t+ W(9, -1119538750, -1130948272, 1032643961, -1111036663)\n\t\t+ W(10, 1041889175, -1132733633, -1142606817, 1038676356)\n\t\t+ W(11, -1111989951, -1122089622, 1014857001, -1140337549);\n\tWS(1060301740, -1107262085);\n\tsum1 = W(0, 980901136, 1034782831, -1105836176, 1036556474) + W(1, -1123655719, -1123449511, 1027361860, 1047173818)\n\t\t + W(2, -1090641081, 1050207945, -1104237805, 1032390687)\n\t\t + W(3, -1140723427, 1039236098, -1089836727, 1053103024)\n\t\t + W(4, -1097134658, 1023266998, 1026764890, -1167399456)\n\t\t + W(5, 1057068694, 1041462691, -1168491986, -1128069487)\n\t\t + W(6, 1040866884, -1096504911, 1061579759, -1084387656)\n\t\t + W(7, 1041789973, -1111341496, 1025665684, -1107799148)\n\t\t + W(8, 1058017849, -1086651203, 1041962562, -1121577073)\n\t\t + W(9, 1033047081, -1104388354, 1050545524, -1099258584)\n\t\t + W(10, 1042093191, -1128080260, -1120424813, 1042507977)\n\t\t + W(11, 1043225643, -1106352190, -1107448273, -1118302731);\n\tsum2 = W(0, -1120672932, 1046006360, -1112452525, -1103760793)\n\t\t + W(1, -1135937657, 1037670355, 1020434122, -1097339905)\n\t\t + W(2, 1059308780, 1054394959, 1038148088, -1114765629) + W(3, 1029602171, -1114812458, 1040180724, 1058139034)\n\t\t + W(4, -1103543044, -1120562291, 986372169, -1107596062)\n\t\t + W(5, -1073685765, -1075031098, -1098429000, -1131755817)\n\t\t + W(6, 1039121856, 1036462865, 1068230783, 1055263295) + W(7, 1051067274, 1034635900, -1113202257, 1042494496)\n\t\t + W(8, 1060720662, 1065727212, -1106499347, 1010504894)\n\t\t + W(9, -1139183469, -1097212089, -1116372590, -1106882983)\n\t\t + W(10, -1127997619, -1127537321, 1010867474, -1111658779)\n\t\t + W(11, -1096232759, -1102585430, 998537328, -1141626877);\n\tWS(-1096709719, -1109932402);\n\tsum1 = W(0, 1015250582, -1143431239, 1041217222, 1009444904)\n\t\t + W(1, -1127867147, -1115442975, -1109965037, 1015070528)\n\t\t + W(2, 1044707911, -1099789672, 1028928427, 1033219242) + W(3, 1037158888, -1094706154, 1032459556, 1049449359)\n\t\t + W(4, 1015515213, -1119289842, -1115453048, 1051852512)\n\t\t + W(5, -1103734188, -1091866852, 1049692098, -1140261177)\n\t\t + W(6, 1032345875, -1107272167, -1116721265, 1042112892)\n\t\t + W(7, -1094357813, 1041543818, -1113173429, 1039101648)\n\t\t + W(8, -1100636937, 1051337808, 1036490203, -1107580668) + W(9, 1033146133, -1112986991, 980311674, 1011811037)\n\t\t + W(10, -1118660177, 1027230184, -1109546082, 1034073405)\n\t\t + W(11, 1017051268, 1035868647, 1019523665, -1121586498);\n\tsum2 = W(0, -1129366500, -1111869912, -1114572049, 1047691494)\n\t\t + W(1, 1024096486, -1112777200, 1029756683, 1029022998) + W(2, 1041454921, 1051011830, -1094989992, 1033382685)\n\t\t + W(3, -1113040482, 1046043365, 1063827282, -1075590857)\n\t\t + W(4, -1094007689, 1046068934, 1041050942, 1028636589) + W(5, -1088878874, 1052419847, 1049374228, 1022134325)\n\t\t + W(6, 1019865458, -1100561355, -1120053198, 1053136256)\n\t\t + W(7, 1051405216, -1104418826, -1130192114, -1118786886)\n\t\t + W(8, 1037601458, -1142379802, -1105102628, 1039472389)\n\t\t + W(9, 1021094310, -1136660469, -1121128994, -1115896886)\n\t\t + W(10, 1030093181, -1173694926, 1011878989, -1113939693)\n\t\t + W(11, 1024511741, 1033422229, 1038213156, -1122209396);\n\tWS(1065853238, 1014077745);\n\tsum1 =\n\t\tW(0, -1141216588, -1117433015, -1094201799, 1050233869) + W(1, 1044254087, -1138617969, 1026623353, -1129058045)\n\t\t+ W(2, -1096460535, 1049952264, 1008011942, 1022594791) + W(3, -1128763228, 1039902504, -1083943142, 1051933059)\n\t\t+ W(4, 1048823509, -1141149825, 1020370461, 1043759351) + W(5, -1077503527, 1055071872, 1025148605, 1032777398)\n\t\t+ W(6, 1026101893, 1050608829, -1089716396, 1055823041) + W(7, 1040921250, -1117303781, -1118113002, 1042454284)\n\t\t+ W(8, -1098731144, 1057515106, -1120507502, 1030831063) + W(9, 1032019108, 1027449020, -1095714819, 1050055875)\n\t\t+ W(10, -1149099066, -1131034510, -1113706417, 965645460)\n\t\t+ W(11, -1094767340, 1054942629, 1040832262, 1023411184);\n\tsum2 = W(0, 1024492456, -1107369605, -1114418679, -1102696165)\n\t\t + W(1, -1133142225, -1122518916, -1126703609, 1040389587)\n\t\t + W(2, 1038677226, -1115181151, -1114014523, 1026327736)\n\t\t + W(3, 1029353704, -1109233879, 1043636997, -1104069114)\n\t\t + W(4, -1122395696, 1035228514, 1036516578, -1095300447)\n\t\t + W(5, 1063429366, 1063594124, -1091978649, 1023044321)\n\t\t + W(6, 1032071462, -1104963978, -1101740776, -1098164193)\n\t\t + W(7, 1053626887, -1116601496, -1107363712, -1106122650)\n\t\t + W(8, -1097459892, 1040620147, -1097146692, -1130578705)\n\t\t + W(9, 1044306067, -1143085570, 1035238854, -1106357294)\n\t\t + W(10, 1040976159, 1026795860, -1105180142, 1043865859)\n\t\t + W(11, -1116890590, -1127904241, -1120794976, -1127926993);\n\tWS(-1088917996, 1063906509);\n\tsum1 =\n\t\tW(0, -1110920777, 1044506738, 1047786311, -1095080042) + W(1, -1134941681, 1033765698, 1042151912, -1103723194)\n\t\t+ W(2, 1032125650, -1113114611, 1025189266, -1104090263)\n\t\t+ W(3, -1101936374, 1033303784, 1061302810, -1088574755) + W(4, -1115794445, 1041151454, 1005195703, 1049511025)\n\t\t+ W(5, 1034065915, -1080208865, 1048946939, -1113407178) + W(6, 1032265367, -1113286290, 1048810800, 1049193686)\n\t\t+ W(7, -1126346531, -1109067703, -1103459368, 1043019742)\n\t\t+ W(8, 1054491533, -1121283466, -1103486336, 1044875416)\n\t\t+ W(9, 1041691572, -1128222025, -1112859072, 1024774526)\n\t\t+ W(10, 1015955599, -1121559327, -1129700693, -1114181825)\n\t\t+ W(11, 1049358361, -1147499681, -1097425800, 1029016425);\n\tsum2 =\n\t\tW(0, -1103461552, -1127991186, -1120190757, -1108916090) + W(1, 1012492564, 1029245469, 1050674327, -1116051994)\n\t\t+ W(2, -1113530372, -1124692174, 1042343963, -1115385529)\n\t\t+ W(3, -1104590141, -1131508502, 1055990720, -1121470095) + W(4, 1032226081, 1026603353, 1015549042, 1050173609)\n\t\t+ W(5, 1072931527, 1046026095, 1048814953, 1024686773) + W(6, 1036919049, -1105608002, -1095048932, 1050729023)\n\t\t+ W(7, -1098673970, -1108452621, -1098769683, 1039941075)\n\t\t+ W(8, -1078020039, -1084802111, -1101605152, 1046452703)\n\t\t+ W(9, 1046313441, -1101603735, -1101033642, 1047911325)\n\t\t+ W(10, -1113534935, -1112756717, -1112862464, 1031505597)\n\t\t+ W(11, 1010804308, 1034713295, 1017021378, -1119772659);\n\tWS(-1128039792, 1065254279);\n\tsum1 = W(0, 949814928, -1114341117, -1094482850, 1052398616) + W(1, 1027872723, -1155305313, 1027171091, 1031806764)\n\t\t + W(2, -1095186291, 1051880795, -1139824782, 1022544667)\n\t\t + W(3, -1129242384, 1033646238, -1085842430, 1058904806)\n\t\t + W(4, 1010706555, -1121892394, 1031101353, 1018879791)\n\t\t + W(5, -1092086861, 1068407459, -1098849364, 1040052675)\n\t\t + W(6, -1120975327, 1042055949, -1084252337, 1055432619)\n\t\t + W(7, -1121195299, -1127339326, 1003634843, 1033681236) + W(8, -1089087466, 1036562814, 1023772639, 993927654)\n\t\t + W(9, -1144006416, 1023909046, -1099056317, 1039311896)\n\t\t + W(10, -1126801378, -1123991661, -1123053628, 1027677731)\n\t\t + W(11, -1095496311, 1050962337, 1038931216, 1005742098);\n\tsum2 =\n\t\tW(0, -1120833032, -1124763415, -1118777010, 1030229073) + W(1, 1028911958, -1123843510, 1034915193, -1113475142)\n\t\t+ W(2, 1010824003, -1105412742, -1133618203, 1030755234) + W(3, -1115307960, 1025322201, 1064953874, 1042572184)\n\t\t+ W(4, 1022077590, -1135426163, 967112657, 1059271888) + W(5, 1082807588, -1098383492, 1048790378, -1113939962)\n\t\t+ W(6, 1023925021, -1102912552, -1080316189, 1054443836)\n\t\t+ W(7, -1103923621, 1038571089, -1107476032, -1118552210)\n\t\t+ W(8, -1064631277, -1098098835, 1029953956, -1109596012)\n\t\t+ W(9, 1033449936, -1103660545, -1110193476, -1121091158)\n\t\t+ W(10, -1106218101, 1035405992, -1132191993, 1033898849)\n\t\t+ W(11, 1039205719, 1028111985, 1036034024, -1126376787);\n\tWS(-1100484014, -1082813103);\n\tsum1 =\n\t\tW(0, -1123138350, 1037916588, -1092840871, 1048819422) + W(1, 1042234192, -1212876940, -1124738939, -1123209507)\n\t\t+ W(2, -1095165544, 1053647432, -1117914254, 1018206961) + W(3, 991988525, 1049386547, -1086369653, 1054472273)\n\t\t+ W(4, 1039202605, -1120915541, -1115403050, 1038702225)\n\t\t+ W(5, -1082690349, 1063735148, -1121098737, 1024686130) + W(6, 1032429349, 1052139678, -1080932794, 1057734851)\n\t\t+ W(7, -1124146173, 1015928020, -1113715255, -1114440425)\n\t\t+ W(8, -1104541586, 1057909982, -1120991811, -1138122766)\n\t\t+ W(9, 1024280877, 1033284897, -1091044852, 1048946363)\n\t\t+ W(10, -1116174764, 1018911880, 1024090791, -1105213156)\n\t\t+ W(11, -1098590565, 1057027323, -1140316975, 1023234987);\n\tsum2 =\n\t\tW(0, 1017320792, -1151813795, -1114719136, -1127138406) + W(1, 1024237362, 1038691322, -1115193567, -1117132961)\n\t\t+ W(2, -1104426322, 1035777956, -1122656452, -1114810881)\n\t\t+ W(3, 1033153774, 1023133248, -1094043595, 1044557822)\n\t\t+ W(4, 1043828952, -1134215421, -1109723345, -1096979800)\n\t\t+ W(5, -1067432541, -1081748159, -1105451925, 1025666138)\n\t\t+ W(6, 1038092476, 1051436512, -1094705611, -1094662263)\n\t\t+ W(7, -1118217110, 1023161212, -1111785287, -1136600857)\n\t\t+ W(8, 1084038773, 1059186895, -1118750811, -1141123106) + W(9, -1119671739, 1043953938, 1051561136, 1023890070)\n\t\t+ W(10, 1026839182, 1009024009, -1109901657, 1038440342)\n\t\t+ W(11, -1097692319, 1021470996, -1114305884, -1122422926);\n\tWS(-1090600151, 1059961608);\n\tsum1 =\n\t\tW(0, 1026132748, 1003856660, -1086859502, 1051724689) + W(1, 1051693682, 1032934656, -1119499740, 1023957057)\n\t\t+ W(2, -1105095800, 1035359281, 1030063117, -1123043606) + W(3, 1009974340, 1043713207, -1089372619, 1059175635)\n\t\t+ W(4, 1040699442, 1034542394, -1113885561, 977342510) + W(5, -1080432315, 1059908410, -1106762114, 1018557983)\n\t\t+ W(6, 1031101992, 1051525550, -1084623068, 1060487798) + W(7, -1114853678, 1019132432, -1111559238, 1025363409)\n\t\t+ W(8, -1086083942, 1059822844, -1116041416, 1031213982) + W(9, 1038517558, 1031878320, -1090836983, 1051599439)\n\t\t+ W(10, -1130086580, -1150140386, -1109274083, -1114083846)\n\t\t+ W(11, -1097114792, 1057278953, 1040974422, -1138998830);\n\tsum2 =\n\t\tW(0, 992923986, -1099561897, -1105536701, 1079165891) + W(1, -1067147152, -1122782084, -1162949315, -1123994385)\n\t\t+ W(2, -1114799541, 1071631223, -1073660425, -1122543983)\n\t\t+ W(3, 1026898877, -1116860796, 1049791100, 1068780303)\n\t\t+ W(4, -1081838471, -1095462698, -1114052913, 1033030662)\n\t\t+ W(5, 1035377948, 1075632919, -1083671230, -1097530520)\n\t\t+ W(6, -1129262506, 1024241717, -1088177074, -1093777203)\n\t\t+ W(7, 1057542893, -1107750254, 1033577774, 1027801571) + W(8, 1049717575, -1083766160, 1057183721, 1032284006)\n\t\t+ W(9, -1129225578, 1041458479, 1043978030, 1029517847) + W(10, -1103299573, 1025982179, 1036380420, 1050404867)\n\t\t+ W(11, -1091169113, -1083354335, 1061807320, 1016984746);\n\tWS(-1077101366, 1062204989);\n\tsum1 =\n\t\tW(0, 1030791972, 1034919675, -1119759728, -1099266697) + W(1, 1044609922, -1131275309, 1033145401, -1109323772)\n\t\t+ W(2, 1033209467, 1032826652, -1108657922, -1142019948)\n\t\t+ W(3, 1041963978, -1109601924, 1053457281, -1084468746) + W(4, 1049423472, 1005679697, 974201395, -1098302775)\n\t\t+ W(5, 1054965265, -1116769210, 1034832195, -1125973710)\n\t\t+ W(6, -1122207423, 1049858413, -1085314770, 1055247733) + W(7, -1104833109, 1038354000, 987140211, -1163737350)\n\t\t+ W(8, -1111164798, 1051122507, -1113738245, 1030630601)\n\t\t+ W(9, 1038549201, -1104961646, -1103072597, 1043488164)\n\t\t+ W(10, -1121147841, -1132893044, -1110991006, 1022472166)\n\t\t+ W(11, -1115893275, 1036206931, -1131086146, 1033991117);\n\tsum2 =\n\t\tW(0, -1128313262, 1013333880, 1041733323, 1023499747) + W(1, -1111312052, 1026149469, -1111995834, 1035550861)\n\t\t+ W(2, 1024909109, -1107108555, 1015145454, -1188980193) + W(3, -1111474816, 1047569009, 1049082846, 1042800306)\n\t\t+ W(4, 1017141780, -1123639612, -1108547758, 1036006103)\n\t\t+ W(5, -1093864056, -1137016284, 1013541080, -1132476264)\n\t\t+ W(6, -1123519406, -1104835579, 1049905793, 1032249988) + W(7, 1034012446, 987971164, -1107039325, -1119199538)\n\t\t+ W(8, 1005924363, -1146750815, -1119513572, -1118671040)\n\t\t+ W(9, -1122872424, -1113807123, -1107099901, 1024429363)\n\t\t+ W(10, 1036805530, -1119021692, 1034342977, -1111926114)\n\t\t+ W(11, -1117079308, 1029021112, 1021769214, 1010774610);\n\tWS(1062330988, -1108933484);\n\tsum1 = W(0, -1130422235, -1127744279, -1103583502, -1112967222)\n\t\t + W(1, 1030687296, 1027221408, 1014897395, 1022571909) + W(2, -1095189640, 1057599524, 1033146447, -1115561596)\n\t\t + W(3, 1027643186, -1103670303, -1097916197, 1050533350)\n\t\t + W(4, 1045948242, 1024802772, -1143835797, -1110385841)\n\t\t + W(5, -1083565633, 1066390108, -1104991248, 1027456689)\n\t\t + W(6, 1008148004, 1042533684, -1085814590, 1059916677)\n\t\t + W(7, -1098839314, -1125614226, -1128962907, -1104774725)\n\t\t + W(8, -1117452294, 1050496965, -1114792086, 1027191883)\n\t\t + W(9, 1015454424, -1116892960, -1099231943, 1049304867)\n\t\t + W(10, -1127702342, -1115468561, -1140840472, -1113171223)\n\t\t + W(11, -1103031657, 1049771574, 1032045679, 1026854932);\n\tsum2 =\n\t\tW(0, 1032895988, 1032830726, -1115406541, -1088204952) + W(1, -1092446016, 1031989945, -1117467777, -1111744013)\n\t\t+ W(2, 1060942494, 1054289941, -1123665301, -1104702594) + W(3, 1028545567, 1005059811, 1047355779, 1071613570)\n\t\t+ W(4, 1060958044, 1046230999, -1111764526, 984631841) + W(5, -1080183554, -1077634808, 1046926373, -1100189171)\n\t\t+ W(6, 1041090350, 1049595248, -1134532596, -1093147012)\n\t\t+ W(7, -1113920155, 1034621337, -1115412116, -1107906030)\n\t\t+ W(8, 1035977506, 1042083474, -1097187857, -1132922134)\n\t\t+ W(9, -1125773241, -1128022386, 1020817981, 1037668146)\n\t\t+ W(10, -1142970826, -1117116166, 1023304410, 1041765137)\n\t\t+ W(11, 998580490, 1032116542, -1125184917, 1022449461);\n\tWS(-1109331804, 1042368707);\n\tsum1 =\n\t\tW(0, -1127022377, 1017844485, 1059385318, -1100795701) + W(1, -1111987554, 1016900750, 1024616740, -1131144083)\n\t\t+ W(2, 1050963589, -1097056965, 1029893237, 1023074109)\n\t\t+ W(3, -1123466393, -1107976561, 1060165431, -1085607547)\n\t\t+ W(4, 1029216560, -1112887422, -1123208698, -1113085828) + W(5, 1059271336, -1083778221, 1039937652, 998408382)\n\t\t+ W(6, -1123129456, -1114039899, 1060839292, -1087428756)\n\t\t+ W(7, 1032072458, -1132276000, 1019270569, -1111910285)\n\t\t+ W(8, 1056907678, -1094957746, -1114977786, 1030127674) + W(9, 981412042, -1118232839, 1049849056, -1097540376)\n\t\t+ W(10, 1024925794, 1027413302, -1140654132, 1022571624)\n\t\t+ W(11, 1053487153, -1103251894, -1099334072, 1016237783);\n\tsum2 =\n\t\tW(0, 1032849952, 1026055449, -1062565523, -1095655110) + W(1, -1117249787, 1033345650, -1124884727, -1115329827)\n\t\t+ W(2, -1069645041, 1045607629, -1117682124, -1126204236)\n\t\t+ W(3, -1113876395, 1027815845, 1071954840, 1038549538) + W(4, 1041120073, -1111681252, -1129227720, 1037903820)\n\t\t+ W(5, 1082661778, -1099195860, 1049745271, 1027383795) + W(6, -1120368220, 1033732250, 1074466947, 1038448988)\n\t\t+ W(7, -1117133911, 1003632367, 1017198470, -1135699996)\n\t\t+ W(8, 1029601901, -1098438651, 1028175479, -1122462785) + W(9, -1139825528, 999495607, 1010255452, -1108984513)\n\t\t+ W(10, 1021673198, 1028818665, -1146042855, -1129930944)\n\t\t+ W(11, 1032971494, 1036170224, -1119888169, 1008778484);\n\tWS(-1115348316, 1054745777);\n\tsum1 =\n\t\tW(0, -1137232980, 1036166838, 1049991788, -1091675395) + W(1, 1017816583, 1029575560, 1010567825, 1015838740)\n\t\t+ W(2, 1049110157, -1096298109, 1034100235, 1027659359) + W(3, 1027515738, -1156212270, 1058008076, -1087264777)\n\t\t+ W(4, 1034455816, 1022248439, -1129778165, -1111605669) + W(5, 1064241460, -1084812083, 1015442096, 1022178737)\n\t\t+ W(6, 1031078129, -1105267814, 1060214194, -1090012802)\n\t\t+ W(7, 1038960299, 1027280241, -1163675813, -1129353779) + W(8, 1054590870, -1089909917, 1024747424, 1032358751)\n\t\t+ W(9, 1021335208, -1109102196, 1041116785, -1099321920)\n\t\t+ W(10, -1128935590, -1140454872, 1015357019, 1044530957)\n\t\t+ W(11, 1051902330, -1087098097, 1001621141, 1023518060);\n\tsum2 =\n\t\tW(0, -1165172934, 1029679520, -1126280148, -1133513625) + W(1, 1007295249, -1112190701, 1024206556, 1020162972)\n\t\t+ W(2, -1122180110, 1032751166, -1123729058, 1031911051) + W(3, -1116697030, 1034059275, 997668227, 1058808820)\n\t\t+ W(4, -1106696521, -1130859572, 1027518769, 1040171419)\n\t\t+ W(5, -1097026624, 1078058683, 1051253388, -1110596693) + W(6, -1114129087, 1027996817, 1034726751, 1074823993)\n\t\t+ W(7, -1129919188, 1030310076, 1038375004, -1110434123)\n\t\t+ W(8, 1040744343, -1082346775, -1130957332, 1020514684)\n\t\t+ W(9, -1112102389, 1034335827, -1102815825, -1066028315)\n\t\t+ W(10, -1106067749, -1120038362, 1033334280, -1129105068)\n\t\t+ W(11, -1107441727, -1081349721, 1046963831, -1140190249);\n\tWS(-1106429870, -1094013011);\n\tsum1 =\n\t\tW(0, -1180060253, 1032914805, 1051659804, -1083977393) + W(1, 1044666432, -1143253052, 1010730896, -1122572746)\n\t\t+ W(2, 1041447962, -1096070845, 1042077981, -1112889935) + W(3, 1021824818, 1007289698, 1049003466, -1090427610)\n\t\t+ W(4, 1040702780, 1019043703, -1126648308, 1032028260) + W(5, 1055000463, -1110426966, 1039434940, -1121648024)\n\t\t+ W(6, -1129917792, 1028442598, 1028832887, -1154202266)\n\t\t+ W(7, -1143541158, -1121855216, -1130361130, 1044381070)\n\t\t+ W(8, -1108621431, 1047276227, -1126798128, 1025638626)\n\t\t+ W(9, -1120274467, 997655159, -1127588999, -1106909952)\n\t\t+ W(10, 1034262401, -1112957869, -1140710069, 1048974915)\n\t\t+ W(11, -1092428073, 1037115308, -1116914978, 1027653084);\n\tsum2 = W(0, -1113021585, 1044056205, -1096040530, -1099894114)\n\t\t + W(1, -1101136816, -1129192316, 1027309129, 1042644451)\n\t\t + W(2, -1098848264, -1100852865, 1051352325, -1127314210)\n\t\t + W(3, 1040557912, -1130917417, -1086782093, 1055980834)\n\t\t + W(4, -1094431966, 1001033976, -1105312463, -1097839840)\n\t\t + W(5, 1066533545, 1060955207, -1105883820, 1028457481) + W(6, 1045635393, -1093830389, 1047866369, 1049480207)\n\t\t + W(7, -1100511063, -1109915970, -1102513438, -1101732547)\n\t\t + W(8, 1049511378, -1136131482, -1095199310, 1041484506)\n\t\t + W(9, 1027399099, -1116545436, 1054444603, -1099150452)\n\t\t + W(10, 1057783348, -1111537389, -1114789238, 1035602021)\n\t\t + W(11, 1045074348, -1089010378, -1105061215, 1038428609);\n\tWS(1043891118, 1068855714);\n\tsum1 = W(0, 1034864935, -1116934668, -1092449819, 1054927906)\n\t\t + W(1, 1034556804, -1137767170, -1115119790, -1132968331)\n\t\t + W(2, -1094480060, 1036212657, -1105343195, -1110944332)\n\t\t + W(3, 1021640868, 1038582262, -1087769325, 1059302628) + W(4, 1039390277, 1007166673, -1116826163, 1007221512)\n\t\t + W(5, -1085866861, 1065404307, -1118670257, 1000130184)\n\t\t + W(6, -1131811026, 1042862352, -1087019235, 1060871017)\n\t\t + W(7, -1097654326, -1149095244, 1023733166, 1036137865)\n\t\t + W(8, -1090795981, 1058788692, -1110180471, 1038210141)\n\t\t + W(9, -1143217636, -1140157826, -1096174840, 1054585007)\n\t\t + W(10, -1103987387, -1123846591, -1132040205, -1132089051)\n\t\t + W(11, -1088777568, 1058320673, 1039274926, 1033742658);\n\tsum2 =\n\t\tW(0, -1109312558, 1043524956, -1128190925, -1098627702) + W(1, 1046310591, -1109532722, 1016877071, 1022447527)\n\t\t+ W(2, -1112207078, -1106898612, 1038513036, 1007593597)\n\t\t+ W(3, -1119267190, 1041115214, -1098728904, -1125515089)\n\t\t+ W(4, 1034661588, -1120394532, 1012463989, -1113751024)\n\t\t+ W(5, -1096567460, 1069702771, -1085518745, -1104054586)\n\t\t+ W(6, -1126846961, 1044302697, -1103900959, 1067943590)\n\t\t+ W(7, -1080776989, -1120974914, -1130793473, 1017381631)\n\t\t+ W(8, 1042180588, 1068665203, -1076263106, 1042247803) + W(9, 1028514185, -1118188819, -1098746809, 1066385707)\n\t\t+ W(10, -1082060374, 1009589981, 987754923, 1030898373)\n\t\t+ W(11, 1045698067, 1053793920, -1093259035, -1114854661);\n\tWS(-1087649964, 1019782291);\n\tsum1 =\n\t\tW(0, -1120416323, 1030168161, 1040415828, -1105270513) + W(1, 1024428446, -1138699736, -1143853715, -1112895868)\n\t\t+ W(2, 1040272853, 1031966316, -1115504066, -1138905653) + W(3, 997344379, 1041161399, -1108639376, -1088122706)\n\t\t+ W(4, 1050439898, 986611002, -1117444008, -1109107148)\n\t\t+ W(5, 1066099001, -1107599501, -1101667648, -1107645603)\n\t\t+ W(6, 1021907901, 1047711365, 1016783474, -1089416651) + W(7, 1046888529, 998160367, -1121005123, -1121138472)\n\t\t+ W(8, 1034911086, -1111272734, 1033038819, -1138080961) + W(9, 1024251314, 1000308143, 1025062450, -1107120316)\n\t\t+ W(10, -1142414472, 1016114481, -1131127160, 1016698342)\n\t\t+ W(11, 1039033917, -1102333873, 1024070769, -1128756052);\n\tsum2 = W(0, -1107127477, 1040784536, -1117663793, -1112675945)\n\t\t + W(1, 1039537683, 1025325994, 1033768126, -1100939724) + W(2, 1017594321, 1057262150, -1092150404, 1019337948)\n\t\t + W(3, 1023416069, -1105075327, -1107862291, -1072566694)\n\t\t + W(4, 1066290117, -1099590626, -1125558334, 1031863699)\n\t\t + W(5, -1098589794, 1078638992, -1077578123, 1051733383)\n\t\t + W(6, 1043030557, -1103416126, 1051532765, -1086195181)\n\t\t + W(7, 1053259006, -1119314417, -1118774605, -1104742149)\n\t\t + W(8, 1047503953, -1109470897, 1050584179, -1100419866)\n\t\t + W(9, -1151915405, 1042707477, -1106456825, 1041105499)\n\t\t + W(10, -1103867215, 1038050610, 1000627574, -1121719211)\n\t\t + W(11, 1014542959, -1106760943, 1033290657, 1002291590);\n\tWS(1061891500, 1029739432);\n\tsum1 = W(0, -1120639769, -1106216192, -1113834067, 1044238166)\n\t\t + W(1, -1114217922, -1131739160, -1135804195, 1006283635)\n\t\t + W(2, -1103570763, 991333090, -1139025510, -1118882723)\n\t\t + W(3, -1111424495, -1105829118, -1096510251, 1059958553)\n\t\t + W(4, -1105864021, -1144807936, 1029738303, -1090566706)\n\t\t + W(5, 1051808376, 1070740438, -1094764771, 1034612526)\n\t\t + W(6, -1117498485, -1116262763, -1092264601, 1055146526)\n\t\t + W(7, -1102695282, -1134494805, -1118615961, 1034396863)\n\t\t + W(8, -1100309453, 1034609097, -1115698885, 1017541191)\n\t\t + W(9, -1125527056, 1019261400, -1103214946, 1035571491)\n\t\t + W(10, -1137185181, -1114134173, -1118385394, -1120846617)\n\t\t + W(11, -1103884676, 1043753671, -1118241703, 1003240643);\n\tsum2 = W(0, -1121600381, 1026550907, 1038640235, -1118247849)\n\t\t + W(1, -1129506938, -1121040584, 1006302792, -1138054916)\n\t\t + W(2, -1115693397, 1032667651, -1150824496, 1022873234)\n\t\t + W(3, -1119262688, 1026195583, 1049140618, -1131891756)\n\t\t + W(4, 1032667233, -1116879102, 1002488024, -1109251816)\n\t\t + W(5, -1070322023, 1075955836, 1037796079, -1123674716) + W(6, 1029037035, 989985520, 1050244555, -1093462820)\n\t\t + W(7, 1041966968, 1023067742, 1026568605, -1119850715)\n\t\t + W(8, -1111337441, 1039467523, -1119306593, -1115823182)\n\t\t + W(9, -1136033516, 1023268674, 1034795019, -1123631905)\n\t\t + W(10, 1011205316, 1030765775, 1023468893, -1113487368)\n\t\t + W(11, 1032357843, -1111383976, -1140765060, -1117038411);\n\tWS(-1084563692, -1094583093);\n\tsum1 =\n\t\tW(0, 1022703229, 1012279186, 1016172182, -1118740542) + W(1, 1030161881, -1118949361, -1162852794, -1124105959)\n\t\t+ W(2, 1043937588, 1029178707, -1113029519, 1029291849) + W(3, -1132568844, 1040618577, -1096721723, 1047241030)\n\t\t+ W(4, -1110742685, 1002005802, 1021772616, -1104495965) + W(5, 975997096, 1058138797, -1095587800, 1026228226)\n\t\t+ W(6, 1024085850, -1108936808, -1105257082, -1098942649)\n\t\t+ W(7, 1044167852, -1121437018, 996545514, -1134036365) + W(8, -1119752408, 1033384955, 1030217107, -1128298663)\n\t\t+ W(9, 1026223997, -1117471057, 1035927703, -1119041259)\n\t\t+ W(10, 1033396614, -1127843472, -1146052282, -1121618798)\n\t\t+ W(11, 1030206390, -1135741956, -1114495566, 1024441958);\n\tsum2 = W(0, 1025430445, -1154040649, -1116838887, 1050769250)\n\t\t + W(1, -1101164186, 1025324860, 1022296570, 1041313314)\n\t\t + W(2, -1089338077, -1110563158, 1049390351, -1110459458)\n\t\t + W(3, 1036981025, -1095051054, -1080092115, 1047738904)\n\t\t + W(4, -1105225557, -1123670947, -1113204042, 1045521896)\n\t\t + W(5, 1068042633, -1105725339, 1058198082, -1102419914)\n\t\t + W(6, 1015494893, -1140159290, -1123762249, 1046459196)\n\t\t + W(7, -1097909404, 1036400862, -1113488118, 1036274902)\n\t\t + W(8, 1036460009, -1099991734, 1042800199, -1121611661)\n\t\t + W(9, -1127432409, 1033705522, -1115504399, 1035671600)\n\t\t + W(10, -1112380024, 1029427990, -1122316989, 1014652738)\n\t\t + W(11, 1034428960, -1109634740, 1019626217, -1122111247);\n\tWS(1070570422, -1118483066);\n\tsum1 =\n\t\tW(0, 1018165832, -1110069429, -1099959964, 1060331110) + W(1, -1162935118, -1139421786, -1132852684, 1031499417)\n\t\t+ W(2, -1099020957, 1050128623, 1032275410, 1009522871) + W(3, -1139725729, 1040072889, -1084885570, 1059366093)\n\t\t+ W(4, 1019497086, -1140197674, -1109730565, 1042906054) + W(5, -1081528768, 1062372980, 996066926, -1117746023)\n\t\t+ W(6, 1028156415, 1042919301, -1083523477, 1058454089)\n\t\t+ W(7, -1118811556, -1128372287, -1118139972, -1168228894)\n\t\t+ W(8, -1091258848, 1058887102, -1112630512, 1014662756) + W(9, 1024357779, 1039947243, -1095225642, 1048717802)\n\t\t+ W(10, -1117991970, -1119179525, -1122455036, -1103975241)\n\t\t+ W(11, -1094692227, 1057283318, 998336395, 1028666043);\n\tsum2 =\n\t\tW(0, 1041833519, -1105638218, -1090712556, -1068172350) + W(1, 1053466473, 1031038629, -1108615966, 1028972955)\n\t\t+ W(2, 1051586707, -1062545743, -1089644697, -1109024185)\n\t\t+ W(3, -1125372171, 1029956673, 1040982790, 1058445980) + W(4, 1044082250, -1115541422, -1161988394, 1048735800)\n\t\t+ W(5, -1113315600, 1081890452, 1021891615, -1110157560) + W(6, -1113215633, 1034458457, 1025381303, 1078990875)\n\t\t+ W(7, 1047100697, 1034093689, 1034531971, 1025753183) + W(8, -1116357686, 1057946443, -1138523317, -1121128958)\n\t\t+ W(9, -1118383435, 1036634769, -1096961046, -1129266047)\n\t\t+ W(10, -1118643722, -1164400298, 1028261725, 1000882603)\n\t\t+ W(11, 1047278155, 1020805991, 1003167691, 1023430939);\n\tWS(-1086946092, 1067745931);\n\tsum1 =\n\t\tW(0, -1129718754, 1043160110, 1057051220, -1086793423) + W(1, 1029510552, 1019782728, 1029399808, -1107060738)\n\t\t+ W(2, 1052187432, -1093519641, 1041235060, 1028876859) + W(3, 1034551451, 1035261538, 1056679450, -1086890615)\n\t\t+ W(4, 1027399596, -1121687640, 1031195606, -1095383669)\n\t\t+ W(5, 1065908691, -1082115172, 1028581668, -1151056709)\n\t\t+ W(6, 1040134022, -1133919947, 1053194351, -1091092163) + W(7, 1039541441, 985161115, 1033121193, -1122710934)\n\t\t+ W(8, 1055695833, -1087806651, 1022886169, 1032179179) + W(9, 1023151712, -1107305618, 1050664148, -1106762967)\n\t\t+ W(10, 1035840335, -1137650955, 1042343314, 1042006276)\n\t\t+ W(11, 1051480109, -1086763775, -1123269599, 1023858088);\n\tsum2 =\n\t\tW(0, -1092038506, 1049598436, 1043882093, 1042320103) + W(1, -1131832297, -1121740952, -1100127293, 1048639033)\n\t\t+ W(2, 1037661877, -1103044471, 1002123811, 1029198842) + W(3, -1076970891, 1064718435, 1059313512, 1034035103)\n\t\t+ W(4, -1103733932, -1115216799, -1074419095, 1072396257)\n\t\t+ W(5, 1057486689, -1104719409, 1041582287, 1010136401) + W(6, -1072137471, 1071503744, 1051417643, -1111075093)\n\t\t+ W(7, -1115120295, -1128000009, -1071882845, 1074270589)\n\t\t+ W(8, 1058040444, 1044428409, -1139439905, 1024386386) + W(9, -1075499422, 1071966648, 1034550731, -1105998171)\n\t\t+ W(10, 1008560441, -1120184167, -1077760287, 1067893220)\n\t\t+ W(11, -1109701446, 1040427981, -1112073274, 1030441594);\n\tWS(-1081254198, -1103496580);\n\tsum1 = W(0, -1115414444, -1146587219, -1093427101, 1048836291)\n\t\t + W(1, 1038644661, 1040942563, 1041339642, -1098606506)\n\t\t + W(2, -1097683981, 1057498447, -1144521152, -1102869832)\n\t\t + W(3, -1098407452, 1050459360, -1091994231, 1058816906)\n\t\t + W(4, -1117884339, 1036627839, -1130637434, 1042214179)\n\t\t + W(5, -1078168847, 1061921355, 1040740783, -1165859686)\n\t\t + W(6, 1020760807, -1117423418, -1095228700, 1063391143)\n\t\t + W(7, -1099277734, -1107645994, -1101995566, 1034598934)\n\t\t + W(8, -1092752622, 1049596874, -1125383814, 1047950513)\n\t\t + W(9, 1047565230, -1122745995, -1097351785, 1055225025)\n\t\t + W(10, -1125503451, -1104517417, -1100079212, 1024450296)\n\t\t + W(11, -1094816186, 1057483350, -1112883619, 1038686359);\n\tsum2 =\n\t\tW(0, -1101463653, 1057761413, -1092703936, -1109493923) + W(1, 1041760680, 1014720459, 1049429767, 1067192921)\n\t\t+ W(2, -1078098525, -1139460835, 1028945771, -1117756514)\n\t\t+ W(3, -1128244554, 1075421514, -1071536845, 1039603395)\n\t\t+ W(4, -1114414573, 1016362862, -1113723320, 1075836777)\n\t\t+ W(5, -1077415283, -1087182285, 1045554670, -1118637934)\n\t\t+ W(6, -1100253783, -1088665878, 1059548308, 1034610843)\n\t\t+ W(7, -1106673179, -1125369728, -1100739127, 1016894214)\n\t\t+ W(8, 1051692516, -1117875445, 1032645955, 1027339291) + W(9, 1041910404, -1116933337, -1101242161, 1013931579)\n\t\t+ W(10, -1122014712, 1013909643, -1105778187, -1111337535)\n\t\t+ W(11, 1048285068, 1038460759, -1113595007, -1124961818);\n\tWS(-1089093868, 1047195432);\n\tsum1 = W(0, -1139038025, -1108646892, 1042227448, -1116853265)\n\t\t + W(1, 1032512066, 1015754506, -1146634508, -1102493258)\n\t\t + W(2, 1050027260, -1113152371, 1037772585, -1111624526)\n\t\t + W(3, -1107247574, -1102675263, 1055627170, -1102292967)\n\t\t + W(4, 1040310103, -1122052409, -1111039036, 1027299238)\n\t\t + W(5, -1094097439, 1059178599, -1120135685, -1123630421)\n\t\t + W(6, -1111569431, 1043334313, -1086063146, 1064850945)\n\t\t + W(7, -1097054397, 1035574535, -1131070116, 1035038251)\n\t\t + W(8, -1091453053, 1055758905, -1107670363, -1126001639)\n\t\t + W(9, -1123633457, -1130835530, -1104540112, 1047069456)\n\t\t + W(10, -1109953256, 1015067608, -1125658710, 1006218639)\n\t\t + W(11, -1100496626, 1028822677, 1033685440, 906381938);\n\tsum2 = W(0, -1103632983, 1051248459, 1050224986, -1112111441)\n\t\t + W(1, -1114055425, -1111599379, 1043805370, -1102825598)\n\t\t + W(2, -1106748849, -1107415409, -1113209339, 1037386114)\n\t\t + W(3, -1100282419, -1110573499, -1142028319, 1047715488)\n\t\t + W(4, -1106125891, -1107474855, 1043204826, 1027245233) + W(5, 1068200484, 1064575785, 1034756297, 1042201726)\n\t\t + W(6, -1107284068, -1115422824, -1110893073, -1116519441)\n\t\t + W(7, -1121811913, -1115818225, 1032596944, -1088944566)\n\t\t + W(8, -1082511144, -1166081973, 1036646608, 1036836551)\n\t\t + W(9, -1115324019, -1119815045, -1101546175, 1033478296)\n\t\t + W(10, -1139772871, -1107371535, 1038389706, -1103855212)\n\t\t + W(11, -1099926119, -1112155627, 1042197713, 1026011708);\n\tWS(-1121781432, -1075996235);\n\tsum1 =\n\t\tW(0, -1139185884, -1104344139, 1055178280, 1023675446) + W(1, -1115352921, -1116105386, 1017932812, -1106763371)\n\t\t+ W(2, 1050633065, -1102467779, -1113788396, -1134059780)\n\t\t+ W(3, 1031934942, -1097501556, 1061458986, -1098857564) + W(4, 987917899, -1113912527, 986151814, -1122902443)\n\t\t+ W(5, 1056941803, -1087567683, 1038547421, -1136836585)\n\t\t+ W(6, -1164665422, -1153685131, 1057254916, -1091469811)\n\t\t+ W(7, -1108760371, 1007170123, 1000199096, -1127990679)\n\t\t+ W(8, 1045616484, -1104204108, 1011665321, -1128021832) + W(9, 1007298263, 1001735501, 1030315686, -1129857478)\n\t\t+ W(10, -1121847517, -1154396360, -1140438078, -1113474827)\n\t\t+ W(11, 1046908556, -1103515070, -1118109260, -1121041198);\n\tsum2 =\n\t\tW(0, -1168649543, -1097479461, 1049098480, 1042706476) + W(1, 1041988609, -1106980555, -1129109975, -1104465921)\n\t\t+ W(2, 1049155382, -1102354715, -1112820525, -1122042062)\n\t\t+ W(3, 1016893178, -1103938775, 1057022497, 1043506300)\n\t\t+ W(4, 1047765539, -1105649317, -1132018102, -1118749694)\n\t\t+ W(5, -1098731951, -1097087336, 1046909100, 1031531696)\n\t\t+ W(6, -1117453381, -1115486085, -1119719509, 1057524747)\n\t\t+ W(7, -1100642605, -1114531186, 1023462612, 976518647) + W(8, -1106384437, 1036026738, -1121071990, 1040948740)\n\t\t+ W(9, -1106957470, 1025546665, -1098317799, 1045328977)\n\t\t+ W(10, -1106523641, -1113359258, -1115823387, 1034975399)\n\t\t+ W(11, -1105263623, 1035074429, 1003192501, 1033488186);\n\tWS(1058868844, 1053114578);\n\tsum1 =\n\t\tW(0, 1019520880, 1047026923, 1040716289, -1095841007) + W(1, 1020793813, 1026453035, -1122446279, -1120049453)\n\t\t+ W(2, 1048040834, -1093651986, 1039005404, -1117418946) + W(3, 1037061470, 994701546, 1059285152, -1089525095)\n\t\t+ W(4, 1046415125, 1019785277, 1025396381, -1104790763) + W(5, 1063349990, -1081113852, 1040363303, -1114838686)\n\t\t+ W(6, 1029402067, -1104820950, 1062179110, -1086213616) + W(7, 1045703966, 1030676884, 1031841884, 1021084025)\n\t\t+ W(8, 1056787146, -1087503095, 1041196477, 1024749253)\n\t\t+ W(9, -1120186199, -1105237507, 1046529242, -1091401861) + W(10, 999605293, 1004229292, 1033549944, 1009185118)\n\t\t+ W(11, 1057448647, -1088312360, 1036113571, 1022861598);\n\tsum2 =\n\t\tW(0, 1050427341, -1089070569, 1053219089, 1067490860) + W(1, -1080930470, 1058659628, -1106859908, -1111523090)\n\t\t+ W(2, 1052246278, -1093125710, -1078811541, 1066232343) + W(3, 1035861035, 1043538575, 1059060280, -1078649576)\n\t\t+ W(4, -1074777053, 1073277874, -1112488680, -1097196972)\n\t\t+ W(5, -1088179143, -1087268097, -1075643449, 1065823003) + W(6, 1032409135, 1036654054, 1017346040, 1059384755)\n\t\t+ W(7, -1124572738, 1062269032, -1122621450, -1133854060) + W(8, 1043005089, 1062938540, 1049929252, 1043425453)\n\t\t+ W(9, -1104767713, -1130574088, -1092034159, -1093321870)\n\t\t+ W(10, -1112625720, -1092663388, 1046587865, -1093068011)\n\t\t+ W(11, 1052143300, 1059539225, 1059287102, -1098215774);\n\tWS(-1074642550, 1059001037);\n\tsum1 =\n\t\tW(0, 1033877849, -1105864948, 1040506928, -1096349630) + W(1, 1046552293, -1110243859, -1114814273, -1133959838)\n\t\t+ W(2, -1108476642, 1023714759, -1108357401, -1127057913)\n\t\t+ W(3, 1017602926, -1106724665, -1098100854, 1055335876)\n\t\t+ W(4, 1032280783, -1147216585, -1122785432, 1042832010)\n\t\t+ W(5, -1084427489, 1065396984, -1132282059, 1033899323)\n\t\t+ W(6, -1119942606, 1046400581, -1083890617, 1062559324)\n\t\t+ W(7, -1113686945, 1032718711, -1121541554, 1036804396)\n\t\t+ W(8, -1088670813, 1061684023, -1104721044, 1025273824) + W(9, 1004629641, 1032924291, -1090515058, 1051195620)\n\t\t+ W(10, -1110306392, -1122497752, -1103073299, 1039804561)\n\t\t+ W(11, -1095458045, 1054342111, 1031943308, -1121848889);\n\tsum2 =\n\t\tW(0, 1024273115, 1021686194, 1043888107, -1108335658) + W(1, -1077891718, -1110849641, -1131612410, 1025348247)\n\t\t+ W(2, -1101286924, -1122239076, -1091711743, -1111108183)\n\t\t+ W(3, -1107407950, -1105777061, 1048538591, 1046097166) + W(4, -1097181377, 1033944270, 1041256788, 1042238427)\n\t\t+ W(5, -1090332406, 1036931728, 1065426853, -1111979954)\n\t\t+ W(6, -1117121277, -1126779625, 1053208564, 1040874893) + W(7, 1063431633, 1039617071, 1031505312, -1118046720)\n\t\t+ W(8, 1043322093, 1040745205, 1040529954, -1105370761)\n\t\t+ W(9, -1110072407, -1118330488, -1135252559, 1050743072)\n\t\t+ W(10, -1097546746, -1122096807, 1016793154, 1027338756)\n\t\t+ W(11, -1116082242, -1096125238, 1050690616, -1122718137);\n\tWS(-1088674604, -1128666815);\n\tsum1 =\n\t\tW(0, -1123914807, -1112902532, 1031043843, 1051063687) + W(1, -1094561666, 1018478931, 1016031116, -1154837176)\n\t\t+ W(2, 1033184452, -1131397783, 1025159063, -1134237698) + W(3, 1014718188, -1114821559, 1015481863, 1027540319)\n\t\t+ W(4, -1102063788, 1024172061, 1024027612, -1098901213)\n\t\t+ W(5, 1054517603, -1102428675, -1104802482, -1126359028)\n\t\t+ W(6, -1145356432, -1103324234, 1051928805, -1094753613)\n\t\t+ W(7, 1021380397, -1133861065, 1024193015, -1099251759)\n\t\t+ W(8, 1059978813, -1100081596, -1111732847, -1114031158)\n\t\t+ W(9, -1124389866, -1119376425, 1047372601, -1110958225)\n\t\t+ W(10, -1154253637, 1028470484, 1032770888, -1101826270)\n\t\t+ W(11, 1062901239, -1101878062, -1113334654, -1114369951);\n\tsum2 =\n\t\tW(0, -1125911137, -1108931889, 1017628143, 1050970701) + W(1, 1035307535, -1132880011, 1012595671, -1114639139)\n\t\t+ W(2, 1032292317, -1128469007, -1112594616, 1026392505) + W(3, 999266341, 1007405169, -1114156858, -1110785518)\n\t\t+ W(4, 1028698628, -1126668834, 1044288444, -1110292957)\n\t\t+ W(5, -1067836662, -1074929312, -1112320536, 1035975658)\n\t\t+ W(6, -1101165077, 1050109344, -1072172899, -1105301985)\n\t\t+ W(7, 1032862316, -1115294669, 1041147790, 1041510968) + W(8, 1037860217, 1044362436, -1133865234, -1122721591)\n\t\t+ W(9, -1113177198, 1029583838, 1074693740, 1048694785) + W(10, -1121233078, 1027549527, 1025832748, 1046353900)\n\t\t+ W(11, 1081403750, 1057358913, 1015908463, -1114367420);\n\tWS(-1092184279, -1114774309);\n\tsum1 =\n\t\tW(0, -1112548452, 1035183681, -1114927434, 1044352162) + W(1, 979364527, -1115173597, -1120800919, 1038305887)\n\t\t+ W(2, -1101125062, 1039166894, -1131609361, -1182492945)\n\t\t+ W(3, -1114639366, 1043708422, -1087724142, 1063427286) + W(4, -1093459700, 1021495134, 1008341430, 1037535198)\n\t\t+ W(5, -1103312811, 1034792975, 1048665209, -1113251558)\n\t\t+ W(6, 1009522319, -1098020135, 1062809460, -1088121787)\n\t\t+ W(7, 1043037714, -1113757330, -1120506536, 1029108045)\n\t\t+ W(8, -1118967585, -1115071968, 1023205859, -1113409875)\n\t\t+ W(9, 1034801619, -1128765878, 1002077113, -1114196826)\n\t\t+ W(10, 1033949151, -1123554950, 1022706306, -1106461058)\n\t\t+ W(11, 1043448960, -1129024277, -1126884683, -1115469664);\n\tsum2 =\n\t\tW(0, -1130731300, -1113218164, 1024876637, -1112264614) + W(1, -1099018413, 1026854381, -1146462793, 1028824397)\n\t\t+ W(2, -1129593633, -1113338336, -1111675537, -1102804304)\n\t\t+ W(3, -1114036842, 1013989596, 1044891209, 1058622224) + W(4, -1088855347, -1102462733, 1017173194, 1034818358)\n\t\t+ W(5, -1101530532, -1105838439, 1059579881, -1108694945)\n\t\t+ W(6, 1027612469, -1104368005, 1049606516, 1050794194) + W(7, 1042736448, -1114432119, -1121343755, 1040334859)\n\t\t+ W(8, -1097048862, -1102338893, 1043492825, 1019755962) + W(9, 1027895615, -1123082454, 1042764886, 1040822444)\n\t\t+ W(10, -1121501222, -1122392540, -1154268081, -1123775916)\n\t\t+ W(11, -1113704648, -1122592353, 1034905054, -1119817837);\n\tWS(1061153836, -1122742154);\n\tsum1 = W(0, 1027853554, -1109089440, -1102650256, 1051082942)\n\t\t + W(1, 1027843188, -1131011401, -1115291137, 1043116226)\n\t\t + W(2, -1115210274, 1047414994, -1112215273, -1119605372)\n\t\t + W(3, -1171221910, -1138258466, -1112757431, 1055597733)\n\t\t + W(4, 1034632359, -1126942769, -1112977164, 1050791197)\n\t\t + W(5, -1077890273, 1055540065, 1042514461, -1126698730)\n\t\t + W(6, -1121554637, 1034471002, -1082648980, 1061271560) + W(7, -1131618020, 998349933, 1022714404, 1041098678)\n\t\t + W(8, -1093251577, 1053866013, 1046515591, 1025132479)\n\t\t + W(9, -1157881362, -1134239506, -1097764996, 1044732088)\n\t\t + W(10, 1036747322, -1120958927, -1123187178, 1034237593)\n\t\t + W(11, -1092621429, 1032996986, 1043087924, 984532249);\n\tsum2 =\n\t\tW(0, 1031101174, -1102026314, 1042272104, -1126868316) + W(1, 1028240358, 1023923290, -1132731961, 1038074007)\n\t\t+ W(2, -1090146581, 1042331882, 1036936531, -1128194324) + W(3, 1022986308, -1092900468, 1028046198, 1039425711)\n\t\t+ W(4, -1122656394, -1114483483, 1017601076, 1030590838) + W(5, 1054179894, 1068886648, 1039233571, -1108833787)\n\t\t+ W(6, -1126674740, 1001758673, -1096188072, 1049555295) + W(7, -1086618714, 1026905222, 1022398052, 1001713969)\n\t\t+ W(8, 1035923987, -1096410864, -1090080092, 1029729918)\n\t\t+ W(9, 1013813081, -1140283033, -1106500726, 1036573795)\n\t\t+ W(10, -1110072380, 1035325123, 1010235161, -1138091097)\n\t\t+ W(11, 1036670019, -1105222854, -1134061337, 1035525391);\n\tWS(-1098883799, 1037141561);\n\tsum1 = W(0, -1114839991, 1039141586, -1110021469, 1020247259) + W(1, 1030453625, 1040211480, 1029657918, 1034970850)\n\t\t + W(2, -1090767256, 1029681923, -1119339247, -1126798193)\n\t\t + W(3, -1116594483, 1048999812, -1089859629, 1058872566)\n\t\t + W(4, -1104869706, 1041448405, 1034543274, 1026227619)\n\t\t + W(5, 1007604554, -1100094273, -1106749124, -1123771570)\n\t\t + W(6, 1026816074, -1103366664, 1063309440, -1090400131)\n\t\t + W(7, 1040832320, 1006844457, -1140770618, -1115755155)\n\t\t + W(8, 1050338841, -1090199858, 1023759014, -1131945671)\n\t\t + W(9, 1035386535, -1109617409, 1049028980, -1104209655)\n\t\t + W(10, 1040157646, -1115455274, 1007197468, -1117505278)\n\t\t + W(11, 1050252341, -1101914812, 1034144506, -1106217213);\n\tsum2 = W(0, 1003211606, -1120528483, -1156174412, -1122088448)\n\t\t + W(1, 1034591096, 1008615371, -1137674963, -1120827669)\n\t\t + W(2, -1165578649, 1021421814, 1046263423, -1109822394)\n\t\t + W(3, -1151639180, -1113012012, 1045965141, -1108742643)\n\t\t + W(4, 1043768035, -1107512724, -1126381316, -1125167698)\n\t\t + W(5, -1143882022, 1025314463, 1048434617, -1102660599)\n\t\t + W(6, -1125497686, -1133545211, -1157195276, 1048741047)\n\t\t + W(7, -1100558843, -1103528899, -1120928387, 1042115577)\n\t\t + W(8, -1139515595, 1042307479, -1111490489, -1116374767)\n\t\t + W(9, 1024650751, -1111755343, 1024020315, 1028526161)\n\t\t + W(10, -1106766859, 1031989982, -1121709003, 1034768106)\n\t\t + W(11, -1128894336, 1033940928, -1105393784, -1146160726);\n\tWS(1056068055, 1054753321);\n\tsum1 = W(0, -1151415881, 1039080395, 1057552055, -1089028090)\n\t\t + W(1, -1115248008, 1035025164, -1148496799, -1110003853)\n\t\t + W(2, 1043835198, 1042243518, 1050869997, 1014222010) + W(3, 1010657956, 1010453293, 1059020393, -1089501818)\n\t\t + W(4, 1038857744, 1019596694, 1024019466, 1036235820) + W(5, 1056043521, -1077848098, 1040563886, -1121658024)\n\t\t + W(6, -1130137728, 1020552269, 1059247988, -1085601017)\n\t\t + W(7, 1031869090, -1123056704, 1008503186, 1036573197) + W(8, 1054798584, -1088101382, 1014726271, 1035081577)\n\t\t + W(9, -1132133255, -1115513116, 1050516586, -1102383812)\n\t\t + W(10, 1037313809, -1137744617, 1035499631, 1040242409)\n\t\t + W(11, 1047345767, -1092379525, -1116861746, 1008326318);\n\tsum2 =\n\t\tW(0, 1028355794, -1096807405, 1040605863, 1067941768) + W(1, -1077104108, 1052817152, -1106782132, 1053669968)\n\t\t+ W(2, -1138391825, -1075220438, -1095467240, -1103015841)\n\t\t+ W(3, 1035193429, -1113415499, 1054131819, -1088459045) + W(4, -1094157882, 1049259157, 1019490884, 1045145961)\n\t\t+ W(5, -1117197986, 1059082808, 1063065831, -1103440804) + W(6, -1103311494, 1033457423, 1014178849, 1050105229)\n\t\t+ W(7, 1061761756, -1095094287, 1051099266, -1105194567)\n\t\t+ W(8, 1043284247, -1121773074, 1042603721, -1122898552)\n\t\t+ W(9, -1107701072, -1111393110, 1045435457, -1120483817)\n\t\t+ W(10, -1116379229, -1109769641, 1017055868, 995616995)\n\t\t+ W(11, -1110630971, 1023829774, 1044996767, 1018464332);\n\tWS(-1081368566, -1084412265);\n\tsum1 =\n\t\tW(0, 1027068306, -1116002144, 1048181720, -1097381330) + W(1, -1110979184, 1021378954, 1015688387, -1139602460)\n\t\t+ W(2, 1048418201, -1109028275, 1018111780, 1036715310) + W(3, 1033201483, -1116483849, 1059204754, -1086309497)\n\t\t+ W(4, -1126061147, -1118145977, 1018141039, -1108067395)\n\t\t+ W(5, 1059054739, -1080843359, 1023153354, 1024269909) + W(6, 1032237687, -1114781410, 1060863016, 1035809139)\n\t\t+ W(7, 1043786804, 1014428471, 1022250212, -1101031910) + W(8, 1054995541, -1090938969, -1102361409, 1015803518)\n\t\t+ W(9, 1019999841, -1110135922, 1048891912, -1097995920)\n\t\t+ W(10, 1017536656, 1027639288, 1019305877, -1115253585)\n\t\t+ W(11, 1054003721, -1098655035, -1110370680, 1026153225);\n\tsum2 =\n\t\tW(0, -1105480981, 1050460434, -1098849709, 1048076097) + W(1, 1035320005, -1105501338, 1035973965, -1096496755)\n\t\t+ W(2, 1051612828, -1090117310, 1047120319, -1108725217) + W(3, 1037165381, 1049140757, -1090898849, 1053634690)\n\t\t+ W(4, 1021130333, 1039969785, -1106311589, 1006710678) + W(5, 1040931379, 1066845841, -1083953982, 1046728781)\n\t\t+ W(6, 1052000177, -1091756558, 1058463605, -1077185739) + W(7, 1057459457, 1038345201, -1104974154, 1044207757)\n\t\t+ W(8, -1090778289, 1058534342, -1091684787, -1141278071)\n\t\t+ W(9, -1120302417, 1032159893, 1039812947, -1102438650)\n\t\t+ W(10, 1041032826, 1040363142, 1040627526, -1100748342)\n\t\t+ W(11, 1045155050, -1096398368, 1045504944, -1109297232);\n\tWS(1040286894, 1035975353);\n\tsum1 = W(0, -1171293815, 1034319831, 1059664710, -1091927835)\n\t\t + W(1, -1116625676, 1013574450, 1023182418, -1127987806)\n\t\t + W(2, 1048633701, -1097464070, 1029070026, 1012611215) + W(3, 996039142, -1102399280, 1062256902, -1087363556)\n\t\t + W(4, 1016696459, -1115123712, -1137235964, -1105596260)\n\t\t + W(5, 1059153168, -1086480503, 1000027879, 1006568169)\n\t\t + W(6, -1135192533, -1103790599, 1061115073, -1089057879)\n\t\t + W(7, 1028964506, -1134032598, 1025821242, -1108335719)\n\t\t + W(8, 1056014846, -1099300213, -1108586113, 1032814547)\n\t\t + W(9, -1128818097, -1114500598, 1050028641, -1097571161)\n\t\t + W(10, 1032749254, 1020632239, 1020463141, -1129600787)\n\t\t + W(11, 1052737098, -1112421262, -1096430155, 1016193698);\n\tsum2 = W(0, -1115556642, 1037372428, 1085969060, 1051814466)\n\t\t + W(1, 1011471282, -1114698318, -1130243023, 1030557532) + W(2, 1077581449, 1043810263, 1030366783, 1034280644)\n\t\t + W(3, 1032034792, 1049080310, -1074326256, -1103611514)\n\t\t + W(4, -1109496698, -1140286158, -1126476135, -1112452010)\n\t\t + W(5, -1064530882, -1081646826, -1129814679, 1022645135)\n\t\t + W(6, 1032996496, -1108874582, -1074476109, 1033029539)\n\t\t + W(7, 1035377868, -1126128243, -1138592966, -1125709403)\n\t\t + W(8, -1104386166, 993676602, 1007963430, 1013431542) + W(9, -1121911846, -1147299853, 1029772508, 1034388196)\n\t\t + W(10, 1005762565, -1114714998, 1029413614, -1125845903)\n\t\t + W(11, -1109306490, 1000946837, 1024214725, 1024966722);\n\tWS(-1128144240, -1105727419);\n\tsum1 = W(0, 1008177348, 1038442911, 1034971295, 1037111480) + W(1, -1119737674, 1019898055, 1008158465, 1030921926)\n\t\t + W(2, -1108323937, 1020025483, 1015575522, 1036155997) + W(3, 1025380533, -1116236765, 1041262911, 1039711206)\n\t\t + W(4, -1096558626, 1023258159, 1041196118, -1091904121)\n\t\t + W(5, -1116818069, -1090328900, -1106145913, 1038413850)\n\t\t + W(6, -1123971020, -1110541401, -1118195565, 1053066642)\n\t\t + W(7, -1107602136, -1123851725, 1038005880, -1155490648)\n\t\t + W(8, 1050488689, -1108534613, 1033678004, 1027658998)\n\t\t + W(9, -1110790464, -1118346788, 1005836543, 1032777199)\n\t\t + W(10, 1034582855, -1118860082, 1022532691, -1132141153)\n\t\t + W(11, 1035288564, 1043217853, -1110557919, -1161170171);\n\tsum2 =\n\t\tW(0, -1128930637, -1132037027, 1018701611, -1110976033) + W(1, -1129623857, 1029665439, 1013105493, -1110061572)\n\t\t+ W(2, 1028677045, -1113315034, -1136221161, -1120215489)\n\t\t+ W(3, 1027020519, 1023565141, -1097696705, -1136487341)\n\t\t+ W(4, 1045236380, 1025952555, -1111106512, -1118411413)\n\t\t+ W(5, 1051172043, 1064921249, -1100340880, -1120959951)\n\t\t+ W(6, 1033707008, -1104848450, 1036460110, -1097426277) + W(7, 1026225447, 1006240491, -1108465338, 1001195043)\n\t\t+ W(8, -1134254189, 1028959819, 1033145987, -1118442072)\n\t\t+ W(9, -1130609759, -1113096913, 1035127174, -1113952185)\n\t\t+ W(10, -1105387359, -1137489821, -1112986298, -1123693871)\n\t\t+ W(11, 1021784635, -1139702593, 1025786651, -1119362634);\n\tWS(1066786198, 1018352061);\n\tsum1 =\n\t\tW(0, 1037807432, 1042991174, 1056116676, -1089303485) + W(1, -1115182496, 1044944769, -1147124480, -1118935590)\n\t\t+ W(2, 1053008404, -1093203077, 1032850856, 1019595829) + W(3, 1032919115, -1102401423, 1058826232, -1091158043)\n\t\t+ W(4, -1118679276, 1030098999, 1043153405, -1111703874) + W(5, 1052869895, -1077398372, -1112497438, 990101824)\n\t\t+ W(6, 1024885356, -1105747115, 1063596395, -1088790919) + W(7, 1041854800, 1037575334, 1040525108, -1109427003)\n\t\t+ W(8, 1052412861, -1096537905, -1158252416, 1022825908) + W(9, 1034093744, 1036876386, 1055303296, -1092801624)\n\t\t+ W(10, 1029739551, 1042956152, 1041644314, -1113217832)\n\t\t+ W(11, 1055747689, -1095292522, -1097656684, 1027108728);\n\tsum2 = W(0, 1036031230, -1102747382, 1040389106, 1027629590)\n\t\t + W(1, 1033840740, -1113736580, -1120880520, 1035081854) + W(2, 999021742, 1048871361, 1037408166, 1036561850)\n\t\t + W(3, -1118383086, -1081312733, 1046511529, -1102228261)\n\t\t + W(4, -1111365044, -1105995296, -1112120068, -1097589576)\n\t\t + W(5, 1061513306, 1059108854, 1017984327, 1037901466) + W(6, 1044452135, -1136989239, -1098672489, 1030279668)\n\t\t + W(7, 1032578550, 1024281094, -1113902667, -1101386787)\n\t\t + W(8, 1028645652, -1090327880, -1098256610, 1003868670) + W(9, 1036248196, 1038098664, 1037598188, 1046091275)\n\t\t + W(10, 1055272900, 1035521712, -1175016923, -1106083613)\n\t\t + W(11, 1027306194, -1110606753, -1100293962, -1114802202);\n\tWS(-1088826540, -1072617048);\n\tsum1 =\n\t\tW(0, 986338164, 1037920241, 1051799989, -1096657083) + W(1, -1131268440, -1122826702, 1023136598, -1108211448)\n\t\t+ W(2, 1051897846, -1097067830, -1134063855, 1022858827)\n\t\t+ W(3, -1127817408, -1117329516, 1060040519, -1085267217)\n\t\t+ W(4, 1034398076, 1016624516, 1038855104, -1098615294) + W(5, 1068445460, -1091986338, -1104903024, 1025833567)\n\t\t+ W(6, -1112014844, -1156351446, 1041659186, -1085224562)\n\t\t+ W(7, 1041222927, -1148095931, 1032100206, -1125030464)\n\t\t+ W(8, 1049473503, -1095210946, -1123500579, 1018816617)\n\t\t+ W(9, -1114071293, 1025960366, 1046320643, -1103740786)\n\t\t+ W(10, 1021522163, 1004333185, 1031252724, -1128205111)\n\t\t+ W(11, 1053193450, -1098483636, -1110505437, -1135786218);\n\tsum2 =\n\t\tW(0, 1025188267, -1139275200, 1040515214, -1131755519) + W(1, -1105181237, 1030566925, -1121532154, 1033600964)\n\t\t+ W(2, -1111129732, -1105820182, 1041295374, -1137053008)\n\t\t+ W(3, 1037371296, -1123953755, 1035395064, 1067277095)\n\t\t+ W(4, -1104867399, -1131759093, -1111771837, 1046721727)\n\t\t+ W(5, -1119362505, 1075696256, 1058324165, 1026363312) + W(6, 1040037716, -1098628025, 1046868281, -1070220409)\n\t\t+ W(7, -1095490474, -1118056117, -1106548534, 1040338433)\n\t\t+ W(8, -1095083293, -1079865944, 1030948623, 1018203389) + W(9, 1039102739, -1109104289, 1045077862, 1049591033)\n\t\t+ W(10, -1107729189, -1128931569, -1109851481, 1042987802)\n\t\t+ W(11, -1121821072, -1113640498, 1039251361, -1123620784);\n\tWS(-1126600048, -1081356549);\n\tsum1 = W(0, -1127841038, -1133929050, -1098403026, 1044657313)\n\t\t + W(1, -1112364357, -1126110067, -1121393942, 1032965854)\n\t\t + W(2, -1092154099, 1056638003, 1040562850, 1036225512)\n\t\t + W(3, -1127713943, 1033968271, -1092503722, 1049224359)\n\t\t + W(4, 1040769245, -1129561307, -1112866678, 1043820719)\n\t\t + W(5, -1081570623, 1066854747, -1105175211, 1047740947)\n\t\t + W(6, -1130256197, 1042942538, -1086843241, 1055316562)\n\t\t + W(7, -1123699911, -1102743497, -1113126004, 1043379215)\n\t\t + W(8, -1092479684, 1058087872, -1108064855, 1041161205)\n\t\t + W(9, -1135790871, 1027795642, -1097678271, 1032418298)\n\t\t + W(10, -1138101411, -1106598351, -1114110304, 1034600139)\n\t\t + W(11, -1094287464, 1051778533, 999504676, 1039116783);\n\tsum2 =\n\t\tW(0, 1002695390, 1041236493, -1107205869, -1110230321) + W(1, 1025661924, 1013006047, -1122258341, 1024135109)\n\t\t+ W(2, -1167041196, -1120190201, 1051920007, -1101224590)\n\t\t+ W(3, -1122292123, 1018577975, 1048984334, -1063745707) + W(4, 1083223141, 1033459361, -1120933435, 1034742596)\n\t\t+ W(5, -1085659967, -1070580481, 1079255156, 1037086181) + W(6, 1032169765, -1148289286, 1041640777, 1042707591)\n\t\t+ W(7, -1110361303, -1105447820, -1117894001, -1155671947)\n\t\t+ W(8, -1108030745, 1049556353, -1097500712, 1029970779)\n\t\t+ W(9, 1003179774, 1027950533, -1123201389, -1106095214)\n\t\t+ W(10, 1030518681, 1006793819, -1138289315, -1116290259)\n\t\t+ W(11, -1139220243, 1050855401, -1105964729, -1115669085);\n\tWS(1044741550, -1111040261);\n\tsum1 =\n\t\tW(0, -1123328853, -1129171790, -1119860449, 1045626213) + W(1, -1104602741, 1022127887, -1102049737, 1051367713)\n\t\t+ W(2, -1091471693, 1046305018, 1044417333, -1107859535) + W(3, 1040528310, -1097130129, 1035652177, 1049556145)\n\t\t+ W(4, -1091825946, 1033350174, -1104112191, 1051950321)\n\t\t+ W(5, -1092522751, 1053940037, 1049099055, -1124872112) + W(6, 1024305776, 1039437043, -1095677118, 1055561708)\n\t\t+ W(7, -1104689389, -1115808049, -1101315365, 1045396986)\n\t\t+ W(8, -1130673884, -1095468986, 1055485165, -1115536169)\n\t\t+ W(9, 1021709031, -1108128612, -1112716514, 1044018368)\n\t\t+ W(10, -1103796617, 1029190802, -1111623399, -1165073551)\n\t\t+ W(11, -1121220876, 1026385047, 1036376309, -1122289340);\n\tsum2 =\n\t\tW(0, -1104033148, 1039328248, 1040757730, 1023457753) + W(1, -1105261590, 1019934334, -1105436527, 1038128967)\n\t\t+ W(2, 1010939044, -1118329847, 1011822306, 998732076) + W(3, -1109964889, 1010051700, 1051778220, -1098103909)\n\t\t+ W(4, 1019752394, -1151355224, -1097126651, 1057153562)\n\t\t+ W(5, 1035481326, -1094975289, 1037637839, -1112777586)\n\t\t+ W(6, -1098141643, 1057745438, -1094952202, 1048659070) + W(7, 1023965510, 1012075272, -1090250993, 1060383381)\n\t\t+ W(8, -1102222701, -1098057265, 1049957743, -1134551782)\n\t\t+ W(9, -1116302593, 1035812245, -1133841678, -1123621243)\n\t\t+ W(10, -1104798795, 1031321862, -1118233874, 1044677482)\n\t\t+ W(11, -1105877607, -1160321672, 1036758948, -1124061226);\n\tWS(1065794902, 1053657215);\n\tsum1 =\n\t\tW(0, -1121908120, 1038333639, 1027457764, -1123855831) + W(1, -1123864939, 1004753494, 1018314063, 1031009517)\n\t\t+ W(2, -1106391546, 1034446294, -1121443224, 1015085764) + W(3, 1015310777, 1039118671, -1097318831, 1039330595)\n\t\t+ W(4, 1026117491, -1152877546, -1124873339, 1034311430)\n\t\t+ W(5, -1141167585, -1090069831, 1040632671, -1119728987)\n\t\t+ W(6, 1031572020, 1041290230, 1054548019, -1096859758)\n\t\t+ W(7, 1028976296, -1155937596, -1147984576, -1120195837)\n\t\t+ W(8, 1053489270, -1090834490, 1043686014, -1132243578)\n\t\t+ W(9, 1024640407, -1119856235, 1041008530, -1105884449) + W(10, 1007855863, 999100652, 1026486289, -1114392412)\n\t\t+ W(11, 1038700424, -1105777031, 1023881277, -1148206328);\n\tsum2 =\n\t\tW(0, -1111593455, 1035072504, 1043803228, 1033408259) + W(1, -1104275307, 998670368, 1026283313, 1028902500)\n\t\t+ W(2, -1108682745, -1102620143, 1005020832, 1032181798) + W(3, -1106910582, 1047373071, 1040261276, 1048908013)\n\t\t+ W(4, -1100960524, 1023771046, -1123416451, 1053329938) + W(5, 1067600226, -1090850305, 1050480903, 1032569956)\n\t\t+ W(6, 1050577288, -1092564654, -1072392505, 1062297118)\n\t\t+ W(7, -1138210428, -1112013629, -1128641646, -1100521328)\n\t\t+ W(8, -1113219589, 1017836657, -1168415746, 1023611526) + W(9, 1047088729, -1096962366, 1049469167, 1033530157)\n\t\t+ W(10, 1025688819, -1112880371, -1113858977, 1017970524)\n\t\t+ W(11, 1037790473, -1125952722, -1131011166, 1021270423);\n\tWS(1062391596, 1012575503);\n\tsum1 =\n\t\tW(0, 1031343933, -1118754907, -1124966418, -1110681406) + W(1, 1044511208, -1105353116, -1104891955, 1040079801)\n\t\t+ W(2, 1034244551, -1097175282, 1039695694, 1041572194) + W(3, 1032025473, -1098309187, -1115351741, 1051954479)\n\t\t+ W(4, 1024690888, -1106768761, 1018981700, 1047266492) + W(5, -1082667844, 1046130725, 1049723012, -1111177056)\n\t\t+ W(6, -1107154694, 1041578200, 1034155267, 1051147223) + W(7, -1103478091, 1041859398, 1037332142, -1102249736)\n\t\t+ W(8, -1116669206, 1052085167, 1031631968, -1100878141)\n\t\t+ W(9, -1113508494, 1040475388, -1108675062, 1003822408)\n\t\t+ W(10, 1001356052, 1037747241, -1120166325, -1099931343)\n\t\t+ W(11, 1037232762, 1045069376, -1120670778, -1115735812);\n\tsum2 = W(0, 1033523600, 984378304, 1029410276, 1013286288) + W(1, -1149511552, -1114072340, -1111554425, 1035520350)\n\t\t + W(2, 1027721316, -1092144316, 1040549613, 1027894332)\n\t\t + W(3, -1129275556, -1139357832, -1120989222, 1051778774)\n\t\t + W(4, -1101613332, -1138380800, -1122087690, 1042336361)\n\t\t + W(5, 1063527919, 1062226267, 1044728263, -1113445964)\n\t\t + W(6, -1124036306, -1098127108, -1086537602, -1106529787)\n\t\t + W(7, -1102568312, 1042436209, 1037981702, -1108770624)\n\t\t + W(8, -1087308230, 1023869712, 1043627655, -1103441850)\n\t\t + W(9, -1119955572, 1031985496, 1038170956, -1106223749)\n\t\t + W(10, -1109791564, 1038090706, -1122349214, 1030270440)\n\t\t + W(11, 1040810725, -1113965912, 1025118636, -1120264936);\n\tWS(1061969900, 1065420380);\n\tsum1 = W(0, 1002358108, 1041410250, 1005238718, -1098164717)\n\t\t + W(1, -1127598604, 1013481849, -1132400117, 1024825568)\n\t\t + W(2, 1055004288, -1093641048, 1037205414, -1128588267)\n\t\t + W(3, 1036273784, -1111416381, 1058195604, -1089452644)\n\t\t + W(4, -1122200151, 995531041, -1121891281, -1112279056)\n\t\t + W(5, 1065721300, -1081575699, 1041630292, -1118185583)\n\t\t + W(6, 1031471239, -1100377015, 1058645356, -1095897092)\n\t\t + W(7, -1115380038, 1031870564, 1014037550, -1110955448)\n\t\t + W(8, 1050103969, -1095327860, 1033148051, -1125213521)\n\t\t + W(9, 1015146068, -1140842745, 1047622119, -1122283864)\n\t\t + W(10, -1112032609, 1031659065, 1021231496, -1109508230)\n\t\t + W(11, 1050895308, -1101391147, -1107652840, -1167265945);\n\tsum2 = W(0, 1037378832, -1097408481, -1089422359, -1134521568)\n\t\t + W(1, 1024014288, -1156999910, -1105869799, 1040337956)\n\t\t + W(2, 1064628576, 1048269110, -1113808990, -1121898726) + W(3, 1034348880, 1050274911, 1078490638, 1055313899)\n\t\t + W(4, 1025241947, 1025759300, 1010791317, -1124897054)\n\t\t + W(5, -1067190452, -1081189141, -1100728789, 1010618498)\n\t\t + W(6, 1020451237, -1105197585, 1026583828, 1051135592) + W(7, 1047164907, 981635389, 1025476671, -1107003535)\n\t\t + W(8, 1034175619, 1043712009, -1112306567, -1142752483)\n\t\t + W(9, -1121382126, -1131733180, 1030289482, -1114815155)\n\t\t + W(10, 1025919494, -1158764013, -1144944739, -1128932040)\n\t\t + W(11, 1035014695, -1125325948, -1116208218, 1029088384);\n\tWS(1048733783, 1027643848);\n\tsum1 =\n\t\tW(0, -1133845785, 1036515120, -1088559253, 1057953132) + W(1, 1034283684, -1114935677, -1133175894, 1023561851)\n\t\t+ W(2, -1093510507, 1049915371, -1130587597, 1012777537)\n\t\t+ W(3, -1135183403, 1042717327, -1088396394, 1060634166)\n\t\t+ W(4, -1127730531, -1122593837, -1116789548, 1030082171)\n\t\t+ W(5, -1080791005, 1063183646, -1114509469, 1031486794)\n\t\t+ W(6, -1148511502, 1048693393, -1089662985, 1058925305)\n\t\t+ W(7, -1138682841, -1116148770, -1134260761, 1034425221)\n\t\t+ W(8, -1090323862, 1044704560, 1038705162, -1166921432) + W(9, 1018609610, 1039337356, -1100061261, 1042697693)\n\t\t+ W(10, 1015444552, -1126426832, -1123833247, 1027869798)\n\t\t+ W(11, -1089888600, 1047384498, 1049640472, 1023971661);\n\tsum2 =\n\t\tW(0, 994989105, 1037891939, -1173716290, -1100065758) + W(1, -1120127409, 1036146011, -1144072856, -1103317800)\n\t\t+ W(2, 1052666546, -1122814128, -1094230404, 1054652553)\n\t\t+ W(3, -1122509885, 1037436931, 1001371192, -1129250144)\n\t\t+ W(4, -1083084807, 1061875701, 1026939205, -1127785128) + W(5, 1040815920, 1058553182, -1075758811, 1067689129)\n\t\t+ W(6, 1028398855, -1103788534, -1100616833, 1055924851)\n\t\t+ W(7, -1074914963, 1068744910, -1120878413, 1034163445) + W(8, 1020001090, 1053725018, -1075891465, 1067320464)\n\t\t+ W(9, 1025208177, -1127272012, -1134790452, 1036740791)\n\t\t+ W(10, -1081737398, 1065190583, -1113678678, 1026044831)\n\t\t+ W(11, 1043708121, -1123998093, -1084193900, 1062426867);\n\tWS(-1084457324, 1066101859);\n\tsum1 = W(0, -1146837948, -1111022815, -1115296098, 1042035070)\n\t\t + W(1, 1030912362, -1121095658, 1016102797, -1125864729)\n\t\t + W(2, 1038645029, 1047347075, -1106508822, -1128702979)\n\t\t + W(3, -1115430590, 1047559389, -1083544605, 1059438663)\n\t\t + W(4, -1104927285, 1022709564, -1115904029, 1034715654)\n\t\t + W(5, 1037951214, 1052960194, -1167432352, -1129984885)\n\t\t + W(6, -1139281484, -1103064096, 1057869073, -1083491782)\n\t\t + W(7, 1045723406, -1123913107, -1117556663, -1108958078)\n\t\t + W(8, -1109939240, 1046468604, 1012598283, -1123056725)\n\t\t + W(9, 1034492603, -1131712724, -1123954086, -1121536740)\n\t\t + W(10, 1019381994, 1026960983, -1124011056, -1131623214)\n\t\t + W(11, -1123535023, 1043250206, -1110102674, -1128824061);\n\tsum2 =\n\t\tW(0, -1125705477, -1127395739, -1105227463, 1036906007) + W(1, 1026846896, 989272222, -1127756609, 1044805550)\n\t\t+ W(2, 1015549291, -1109261657, 1037043129, -1106679057) + W(3, 993770127, -1097909373, 1049252886, -1102191244)\n\t\t+ W(4, -1097396928, 1042524140, 1034569455, -1177736375) + W(5, 1058826852, 1061852121, -1116961215, 1013800282)\n\t\t+ W(6, 1010458600, -1116962018, -1119951878, -1086841826)\n\t\t+ W(7, -1103314123, 1033157194, -1119844207, 1043096893)\n\t\t+ W(8, -1094678765, -1128420796, 1038664018, -1128652243)\n\t\t+ W(9, -1122090273, 1035619005, -1119199398, 1021651597)\n\t\t+ W(10, 1035622840, -1124905499, 1019369801, -1112228363)\n\t\t+ W(11, -1109645851, 1038741216, 1019677755, -1126258736);\n\tWS(1067036470, -1087655195);\n\tsum1 =\n\t\tW(0, -1143851962, 1018554747, 1050955184, -1110423387) + W(1, -1106360251, 1025799530, 1026890311, -1120379564)\n\t\t+ W(2, 1053786273, -1098337218, 1040602294, -1118031105)\n\t\t+ W(3, -1106604063, -1114993347, 1042552729, -1090196611)\n\t\t+ W(4, -1134551499, -1119796702, 1016195769, 1022258327)\n\t\t+ W(5, 1063572966, -1083965137, 1045568787, -1110210301) + W(6, -1138731339, 981655329, 1058367344, -1084059678)\n\t\t+ W(7, 1046272662, -1132188582, 1037080924, 1045778247) + W(8, 1055564522, -1090231591, 1028646847, -1117810092)\n\t\t+ W(9, -1121217270, 1025121994, 1047575674, -1096786628) + W(10, 1026932869, 1021012754, 1029907824, 1023696087)\n\t\t+ W(11, 1048845230, -1095677575, 1027665749, -1118338222);\n\tsum2 =\n\t\tW(0, -1113854255, -1108417433, 1042382895, 1025435556) + W(1, -1108154666, 1042045079, 1028862084, 1033605964)\n\t\t+ W(2, 1032534216, 1033584957, 1046901615, -1105415159) + W(3, -1104900936, -1109151867, 1017793091, 1033281558)\n\t\t+ W(4, -1111336587, 1039313065, -1104116954, -1102487521)\n\t\t+ W(5, 1067799294, -1099286824, 1036137805, 1005958605) + W(6, -1114719178, -1071728118, 1077900204, 1056033422)\n\t\t+ W(7, 1024983956, 1020191839, 1040474278, -1073652757) + W(8, 1051278318, -1113833767, 1034492621, -1114752489)\n\t\t+ W(9, 1048817634, -1090221130, 1048299521, 1011833167)\n\t\t+ W(10, 1033542750, 1024757388, -1122519186, -1102125815)\n\t\t+ W(11, -1105402373, -1107682623, -1127962013, 1032711916);\n\tWS(-1087701164, 1071308133);\n\tsum1 =\n\t\tW(0, 1040776942, -1100025248, 1040244657, 1047131214) + W(1, -1116520012, -1152028354, -1112915908, 1039729431)\n\t\t+ W(2, -1108101926, -1104971284, -1123736282, -1120800451)\n\t\t+ W(3, 1032135583, -1111499300, -1107965963, 1036283892)\n\t\t+ W(4, -1105297773, 1024489952, -1109010607, 1047911115) + W(5, -1095250332, 1057920197, 1040789767, 1038925278)\n\t\t+ W(6, -1125896234, -1096854047, -1097276733, 1057601759)\n\t\t+ W(7, -1089523085, 1034463851, 1033070381, 1047586960) + W(8, -1104060437, 1046835436, 1046328829, -1130324381)\n\t\t+ W(9, 1001383873, -1100475875, -1129328465, 1017446731)\n\t\t+ W(10, -1107686492, -1112186573, -1127540900, 1025720505)\n\t\t+ W(11, -1115131352, 1041767855, 1031878575, 1015088161);\n\tsum2 =\n\t\tW(0, -1089646175, 1060062242, 1050551269, 1017421696) + W(1, -1124178965, 1023971829, -1112379036, 1018139178)\n\t\t+ W(2, -1096611550, 1040955729, -1115297526, -1112174927)\n\t\t+ W(3, -1087427677, 1066898400, -1116330565, 1035645225)\n\t\t+ W(4, -1111832492, 1035838465, -1088789602, 1066001716) + W(5, 1056235229, 1040223965, 1027731712, -1128027042)\n\t\t+ W(6, 1059010203, -1079880526, -1118197619, -1114176344)\n\t\t+ W(7, -1106279788, 1015547306, 1060985431, -1081253059)\n\t\t+ W(8, -1102574794, 1044677785, -1130074994, 1033729011)\n\t\t+ W(9, -1139584980, -1095878540, 1039647840, -1100382074)\n\t\t+ W(10, 1040262609, -1110899873, 1054225000, -1095013927)\n\t\t+ W(11, -1099698701, 1035015292, -1124507789, 1032866060);\n\tWS(1063980716, -1121784884);\n\tsum1 =\n\t\tW(0, 1027357276, 1046480497, -1094692773, 1050884987) + W(1, 1046796692, 1025153935, -1104528667, -1121849329)\n\t\t+ W(2, -1090457523, 1048987838, -1098583576, -1107151594)\n\t\t+ W(3, -1122859745, 1049050976, -1090130146, 1057733925) + W(4, 1037378828, 1016110982, -1107033792, 1046903620)\n\t\t+ W(5, -1084796508, 1061180023, 1034725880, 1023598816)\n\t\t+ W(6, -1105809438, -1128776604, -1089370535, 1054317580)\n\t\t+ W(7, -1096435840, -1114135692, 1033196814, 1050194992) + W(8, -1105629197, 1055134019, 1049629536, 1040596522)\n\t\t+ W(9, -1111338526, -1112079704, -1093813713, 1046804578)\n\t\t+ W(10, -1097780651, -1113598601, -1111105883, 1037688238)\n\t\t+ W(11, -1094775914, 1057027842, 1038664949, -1127372967);\n\tsum2 =\n\t\tW(0, 1041589168, -1098133521, 1031854878, -1105720063) + W(1, 1035016760, -1121214780, 1024315846, -1106371173)\n\t\t+ W(2, 1051327081, 1023684981, -1128261352, 1011090873)\n\t\t+ W(3, 1043663909, -1106740015, -1108849860, -1124767392)\n\t\t+ W(4, 1035542785, 1029549000, 1040621380, -1107177437)\n\t\t+ W(5, -1106409587, -1127108094, -1111599720, 1034668152)\n\t\t+ W(6, 1040212968, -1111131552, -1120392794, -1102248051)\n\t\t+ W(7, 1051247500, -1136161665, 1033384296, 1040430896) + W(8, -1093765703, 1050935529, -1102687331, 1018485311)\n\t\t+ W(9, 1014426993, 1032409853, -1107120761, 1033359350) + W(10, 1037002974, -1126387868, 1022694293, 1003633577)\n\t\t+ W(11, -1104283048, -1128561530, 1026574958, 998242826);\n\tWS(1047153326, -1105960410);\n\tsum1 = W(0, 1032318440, -1105871782, -1111485966, 1043448020)\n\t\t + W(1, -1110710801, 1019497606, -1133035902, 1024269605)\n\t\t + W(2, -1098984649, 1044051929, 1028564080, 1019882933) + W(3, 1023033002, -1110369667, 1050315790, 1059563250)\n\t\t + W(4, -1113831750, -1118335287, -1111741083, 1047130673)\n\t\t + W(5, -1080272088, 1053459949, 1024144723, 1018957863) + W(6, 1009988015, 1043587009, -1086889743, 1061038806)\n\t\t + W(7, -1117616080, -1122250988, -1126171361, -1113373146)\n\t\t + W(8, -1098309317, 1044456898, -1145766181, -1124691083)\n\t\t + W(9, -1183551252, 1035984354, -1105786176, 1048086975)\n\t\t + W(10, -1114741783, -1123242346, -1118067977, -1111622952)\n\t\t + W(11, -1106267538, 1037611273, 1040212689, -1150984053);\n\tsum2 = W(0, -1132142402, -1109262360, 1044069954, -1111364284)\n\t\t + W(1, 1031679549, 1018817977, 1019405455, 1034679642)\n\t\t + W(2, -1104355470, -1108806456, -1097044621, 1034241557)\n\t\t + W(3, 1022592575, -1099677890, -1119884477, -1066728208) + W(4, 1043056057, 988348592, 1002713172, 1048612806)\n\t\t + W(5, -1094376769, 1079847520, 1057366851, -1114461524) + W(6, 993592760, 1036415285, -1110824904, 1060715429)\n\t\t + W(7, -1104696735, -1107038514, -1120241477, -1118742739)\n\t\t + W(8, 1031998111, -1103911380, 993276152, 1036085605) + W(9, 1024283135, -1125545553, -1128336378, 1028262793)\n\t\t + W(10, 1012785110, -1128734189, -1139068036, -1129249399)\n\t\t + W(11, 1030577347, -1127589036, -1133646774, -1182233281);\n\tWS(1056964652, 1042968547);\n\tsum1 =\n\t\tW(0, 1026864302, 1044356666, -1111481597, -1091567350) + W(1, 1041608192, 1008927875, -1136392949, 1026146499)\n\t\t+ W(2, 1051097712, -1098882624, 1029687022, -1130908784) + W(3, 1024389106, 1030265493, 1040695131, -1090350559)\n\t\t+ W(4, 1042991030, -1127664937, -1126999334, 1038248593)\n\t\t+ W(5, 1052760426, -1081953599, 1043333208, -1121268145)\n\t\t+ W(6, 1026043785, -1126651679, 1056669112, -1095456258) + W(7, 1044232931, 952128323, -1130628252, -1146035092)\n\t\t+ W(8, 1038264227, -1102468122, 1038520784, -1146879000) + W(9, 1000688741, 986691602, 1027446877, -1109487565)\n\t\t+ W(10, 1033386798, -1137895230, 1002882868, 1033146167)\n\t\t+ W(11, 1040116499, -1110909592, 1040618297, 1023066122);\n\tsum2 =\n\t\tW(0, -1155037894, -1109445776, -1106399184, 1052866656) + W(1, 1046069094, 1012439553, -1117766868, -1132308185)\n\t\t+ W(2, 1041934367, -1111172948, 1042904039, -1108172404)\n\t\t+ W(3, 1042293027, -1101307898, -1137539889, 1058738313) + W(4, 1045435531, -1110297962, 1004126723, 995397702)\n\t\t+ W(5, 1035303811, 1064268129, 1051607279, -1110625272) + W(6, -1123150924, 1014206993, -1091518060, 1052685347)\n\t\t+ W(7, -1098813712, -1107185126, 1015608713, 1046458351)\n\t\t+ W(8, -1124849601, -1090299347, -1150133894, 1045339946)\n\t\t+ W(9, -1135323377, -1120597884, 1043824666, -1087905074)\n\t\t+ W(10, 1037110006, -1122419536, 1030487760, 1026431488)\n\t\t+ W(11, 1061366644, -1075431372, -1089430426, 1049588119);\n\tWS(-1096061015, 1045980634);\n\tsum1 =\n\t\tW(0, -1136709393, 1047345176, -1089944925, -1113534082) + W(1, 1020871950, 1032683291, 1028828435, 1016418418)\n\t\t+ W(2, -1096285771, 1049565603, 1021274185, 1018404508) + W(3, 997001355, 1049157941, -1094897728, -1113216951)\n\t\t+ W(4, 1042276288, 1027484139, 1022855123, 1032879612) + W(5, -1097979037, -1094660427, 1039512084, -1119890439)\n\t\t+ W(6, -1128346047, 1042754713, 1014307589, 1031601097) + W(7, 1028680388, 1030972704, 1031977874, 1032419332)\n\t\t+ W(8, 1040846151, -1095562472, 1044068336, -1125789619) + W(9, 984865373, -1124110958, 1042092045, -1109834744)\n\t\t+ W(10, -1140756488, 1031142826, 1040707047, 1040469689)\n\t\t+ W(11, 1041011167, -1093905225, 1048548616, -1123584299);\n\tsum2 =\n\t\tW(0, -1114682679, 1055059251, 1064739409, -1095220576) + W(1, -1100660553, 1038444345, -1115477579, 1024869090)\n\t\t+ W(2, 1031266096, -1113806527, -1105830101, -1132048253)\n\t\t+ W(3, -1100789101, 1055732865, 1030176534, 1040530242)\n\t\t+ W(4, -1096186716, 1040636888, -1113658391, -1122542034)\n\t\t+ W(5, 1067742275, 1036337974, -1103152959, 1015520805)\n\t\t+ W(6, -1110942733, -1120682294, 1062911121, -1087169731)\n\t\t+ W(7, 1035448471, 1032588114, 1044868728, -1107016239) + W(8, -1081471397, 1042181045, 1052603278, -1102136445)\n\t\t+ W(9, 1028313432, -1152832742, -1080677577, 1042749891)\n\t\t+ W(10, 1033558186, -1134141481, 1046472362, -1087243594)\n\t\t+ W(11, -1077241450, 1067213860, 1052345796, -1112398105);\n\tWS(-1086603372, 1061480206);\n\tsum1 =\n\t\tW(0, 1025472273, 1022341006, 1006839158, -1102342404) + W(1, 1042514621, -1114893026, -1143591172, 1027469190)\n\t\t+ W(2, -1128153798, -1124925900, 1043263108, -1114252238)\n\t\t+ W(3, -1124123051, -1141108008, 1051787090, -1093885235)\n\t\t+ W(4, 1027880941, -1121794488, -1110008795, 1042054049)\n\t\t+ W(5, -1090097115, 1058414043, -1105821275, 1039892842)\n\t\t+ W(6, -1124248793, 1051331968, -1081435553, 1063214861)\n\t\t+ W(7, -1094479791, 1028544109, -1127491490, 1044174205)\n\t\t+ W(8, -1089913687, 1057428893, -1099759469, 1041669328) + W(9, 1014214528, 1044005681, -1092574472, 1052102264)\n\t\t+ W(10, -1112069887, 977928239, -1120184170, -1155225358)\n\t\t+ W(11, -1096696337, 1048742922, 1035771431, 1039400116);\n\tsum2 =\n\t\tW(0, 1037224808, 1025638319, -1093017633, -1143762368) + W(1, -1119609796, 995865588, -1109009263, 1049599085)\n\t\t+ W(2, 1039705537, -1112746506, -1119534458, 1021427773)\n\t\t+ W(3, -1120793535, -1142324554, 1040559103, -1099136162)\n\t\t+ W(4, -1123476586, 988834049, -1110258597, 1028269513) + W(5, 1053657173, 1056581815, -1104556193, -1122952792)\n\t\t+ W(6, -1112240446, -1132053081, -1120149375, -1118127758)\n\t\t+ W(7, 1044376501, -1114993482, -1151274598, -1119573384)\n\t\t+ W(8, 1043501160, -1147801478, -1107739102, 1029987722)\n\t\t+ W(9, -1120536233, 1010517574, -1121251494, -1130373692)\n\t\t+ W(10, 1033895801, -1106681926, -1103902982, 1008384356)\n\t\t+ W(11, 1035850418, 1032229723, -1122521676, -1116132116);\n\tWS(1037058908, -1087106898);\n\tsum1 = W(0, 1032385376, 1026637522, -1098495714, 1041048768) + W(1, 1039729665, 1017191910, 1028077583, -1129390954)\n\t\t + W(2, -1107088868, 1041268325, -1126519617, -1132138900)\n\t\t + W(3, 1014613011, 1048467894, -1108180359, 1045140885) + W(4, 1040649531, 1035348883, -1151370839, 1048758199)\n\t\t + W(5, -1093334653, -1080472255, -1114665834, 997380151)\n\t\t + W(6, -1139761263, 1043852440, -1108393155, 1045570315)\n\t\t + W(7, -1125126080, 1031307292, 1027279360, 1034990442) + W(8, -1097414435, 1045361342, 1035082182, 1030937245)\n\t\t + W(9, 1022565566, 1017011558, -1111470776, 1028923180)\n\t\t + W(10, 1023808326, -1138594135, 1031834108, 1036138504)\n\t\t + W(11, -1104527470, 1036330497, 1027790590, 1036519916);\n\tsum2 = W(0, -1111516802, -1131222514, -1097346809, 1049467820)\n\t\t + W(1, -1118099733, -1111393075, 1036231024, -1098228691)\n\t\t + W(2, -1128682274, 1020406578, -1102087439, 1039222222)\n\t\t + W(3, -1130951686, 1034905648, -1113861539, 1024259929)\n\t\t + W(4, 1049541587, -1113826501, 1031916934, -1090487171)\n\t\t + W(5, 1052765954, 1061096371, -1108988196, 1025340241)\n\t\t + W(6, -1130989326, 1032129266, -1108538807, -1104129123)\n\t\t + W(7, 1033200380, 1029417921, -1129631002, 1035677128)\n\t\t + W(8, -1122282521, -1108918961, 1042713844, -1111528334)\n\t\t + W(9, -1123615369, -1103168970, 1038239484, -1114584358)\n\t\t + W(10, -1097598443, 1034012496, -1119469958, 1049196148)\n\t\t + W(11, -1116187122, -1129232626, 1018354634, 1029857705);\n\tWS(1054906071, -1091145324);\n\tsum1 = W(0, 1029398237, -1120406171, 1051536197, -1115196942)\n\t\t + W(1, -1136290815, -1126429728, -1140775857, -1106052861)\n\t\t + W(2, 1046952684, -1109008729, 1034481647, 1032555988)\n\t\t + W(3, -1128656451, -1099422950, 1057886666, -1097962977)\n\t\t + W(4, -1114344740, 1015919623, 1004160018, 1032725545)\n\t\t + W(5, -1085942396, -1130426984, 1050651652, -1108426832)\n\t\t + W(6, -1130732913, -1097841652, -1098611557, 1048146402)\n\t\t + W(7, -1102043591, 1040987294, 1029686973, 1037934865)\n\t\t + W(8, 1042440654, 1034532491, -1133864753, -1107032303)\n\t\t + W(9, 1021855224, 1036573848, 1035129734, -1122054089)\n\t\t + W(10, -1124817654, 1044439941, -1128798955, -1157619404)\n\t\t + W(11, 1032622058, 1027356128, -1126847669, -1115113714);\n\tsum2 = W(0, -1113802973, 1027581315, -1110955855, 1047020911)\n\t\t + W(1, -1105727831, 1022816774, -1116219822, -1112877584)\n\t\t + W(2, -1127685514, 1021259086, -1118276653, -1129541322)\n\t\t + W(3, 1020553430, -1110295429, -1097495000, 1057623683)\n\t\t + W(4, -1110729082, 997980814, -1109755343, 1027296115) + W(5, 1025841055, 1053623791, -1104267868, 1016281450)\n\t\t + W(6, -1131329246, -1126007358, -1104102640, 1057318729)\n\t\t + W(7, -1106795812, -1105649969, -1112950186, 1035099341)\n\t\t + W(8, -1110724235, 1040083835, -1119773745, 1031563375)\n\t\t + W(9, -1113313093, -1130784978, -1165405916, 1048620928)\n\t\t + W(10, -1128480210, -1111917112, -1116367256, 1035863861)\n\t\t + W(11, -1097352168, 1039940909, -1110646461, 1032754595);\n\tWS(1063926444, -1083200389);\n\tsum1 =\n\t\tW(0, -1110900111, 1049653262, -1089993663, 1052688460) + W(1, -1098055945, 1042131972, 1015785179, -1116391059)\n\t\t+ W(2, -1106495964, 1038385529, -1108169455, -1121748392)\n\t\t+ W(3, -1132926346, 1048988121, -1104923071, 1045396422)\n\t\t+ W(4, -1110654965, 1039495970, 1034778082, -1111931241)\n\t\t+ W(5, 1061854120, -1089207439, -1111176153, -1117097761)\n\t\t+ W(6, 1029162938, 1002973694, 1062129309, -1085048198) + W(7, 1042255343, -1120523578, 1024169214, -1107911937)\n\t\t+ W(8, 1059656227, -1087799869, 1043917388, -1106362715)\n\t\t+ W(9, 1031086749, -1104277444, 1047872627, -1096506545)\n\t\t+ W(10, 1012240783, 1011366638, -1116484151, -1114837807)\n\t\t+ W(11, 1055218483, -1096830980, 1049045741, -1098874335);\n\tsum2 = W(0, 1031260311, -1079593190, -1121246507, -1113337443)\n\t\t + W(1, 985022717, 1032096214, 1008713252, -1080879443) + W(2, 1035854140, 1043424734, -1123981203, -1130846658)\n\t\t + W(3, -1110413739, -1099919153, 1040572163, -1112705599)\n\t\t + W(4, 1028350097, -1119780465, -1108083749, 1067198745)\n\t\t + W(5, -1111993270, -1102589461, 1035118406, 1007072124) + W(6, 1024382525, 1061544601, 1060638292, 1044789771)\n\t\t + W(7, -1119559917, -1132931022, -1107516795, 1037733964)\n\t\t + W(8, -1122943484, 1040341398, -1123835438, -1131952682)\n\t\t + W(9, 1032742989, 1034769578, -1098923291, -1116338100)\n\t\t + W(10, 1021760610, 1028149723, -1107429215, 1037726418)\n\t\t + W(11, 1034609836, 1030676197, -1114867192, -1115680064);\n\tWS(-1091090263, 1040227933);\n\tsum1 =\n\t\tW(0, -1123880467, -1113261184, 1033284496, 1044923332) + W(1, -1105999782, -1135767575, -1114808049, 1027485320)\n\t\t+ W(2, 1019377225, -1098653061, 1042536309, -1127683258)\n\t\t+ W(3, 1014154590, -1101480756, -1102787036, 1059927492) + W(4, -1095990282, 1037484605, 1032220316, 1043855170)\n\t\t+ W(5, -1094753319, 1040011797, 1044858269, -1120454550)\n\t\t+ W(6, 1018131933, -1088775234, 1065098078, -1099661886)\n\t\t+ W(7, -1091964998, 1029352975, -1121223347, 1021676847)\n\t\t+ W(8, -1107869654, -1151140018, 1045062557, -1109078132)\n\t\t+ W(9, -1128795491, 1031227206, 1045897152, -1113799968)\n\t\t+ W(10, -1109510984, 1027724204, 1008528046, 1026364723)\n\t\t+ W(11, 1025551690, -1125551659, 1023695008, 1006311503);\n\tsum2 =\n\t\tW(0, -1123304381, -1135928985, 1039889929, -1113522433) + W(1, -1108136941, 1038356153, 1011470018, -1131363804)\n\t\t+ W(2, 1045400660, -1100907702, 1038781261, -1139124254)\n\t\t+ W(3, -1116901758, 1044779190, -1100997480, -1104972678)\n\t\t+ W(4, 1052809383, -1105005165, 1029761957, -1101932196) + W(5, 1055172736, 1058841413, -1093286229, 1040780481)\n\t\t+ W(6, -1135722528, -1097334030, -1087140500, 1039800739)\n\t\t+ W(7, 1034962749, -1105451984, -1111769341, 994986369) + W(8, 1054550160, -1122473050, -1105965260, 1042887374)\n\t\t+ W(9, -1107033568, 1042173475, -1110305303, -1109069053)\n\t\t+ W(10, 1038676003, -1114167820, 1032808415, 1025113569)\n\t\t+ W(11, -1115908038, 1032761157, -1155418681, -1152192529);\n\tWS(1063982124, 1031276218);\n\tsum1 =\n\t\tW(0, 1041442545, 1031361481, 1056936890, -1090353464) + W(1, -1122143798, 1007942615, -1103090149, 1026538936)\n\t\t+ W(2, 1055470587, -1090262005, -1101092681, 1040474995)\n\t\t+ W(3, 1042807746, -1101400314, 1060963845, -1096383728) + W(4, 1031723710, -1103896066, 1024468200, 1034898060)\n\t\t+ W(5, 1061353486, -1078114170, -1122232454, 1027975174)\n\t\t+ W(6, -1106882536, -1103132501, 1063510555, -1106902698)\n\t\t+ W(7, 1043143621, 1030475455, 1049721332, -1112916420)\n\t\t+ W(8, 1048946651, -1088793180, -1172995470, -1101011290)\n\t\t+ W(9, -1101888878, -1139074135, 1054541302, -1098771630)\n\t\t+ W(10, 1032268200, 1044176219, 1042454319, -1110788513)\n\t\t+ W(11, 1058321972, -1093460753, -1104729748, -1108198577);\n\tsum2 =\n\t\tW(0, 1015674059, -1109357907, 1031332447, 1066992274) + W(1, -1074609058, 1048304191, 1034996578, 1024785272)\n\t\t+ W(2, 1048659656, 1076858856, -1070866381, 1030261153) + W(3, 1026624942, -1129998179, -1108514478, 1078632808)\n\t\t+ W(4, -1068251573, -1098508369, -1128049054, -1120348186)\n\t\t+ W(5, 1052415888, 1073772904, -1076608801, -1108782845) + W(6, 999367802, 1048014132, -1105319294, -1105884909)\n\t\t+ W(7, -1103939197, 1048310856, 1021382702, -1105300006)\n\t\t+ W(8, -1117149322, 1038594495, -1109221944, 1031934850) + W(9, -1124407536, 1046166047, 1010482847, 1038514249)\n\t\t+ W(10, -1098022157, 1046147873, 1029480964, -1116382211)\n\t\t+ W(11, -1154249511, -1098756758, -1125235504, 1038709270);\n\tWS(-1084008748, -1076428689);\n\tsum1 =\n\t\tW(0, 995293936, -1119372516, -1088304948, 1059786207) + W(1, -1137964103, 1013109895, -1162911689, 1036299874)\n\t\t+ W(2, -1097059736, 1051547992, -1125552990, 1006687204)\n\t\t+ W(3, -1138016718, 1017340780, -1085861109, 1060565598)\n\t\t+ W(4, -1116363658, 1002349741, -1132274729, 1041960361)\n\t\t+ W(5, -1081600491, 1064118968, -1116908178, 1007519945)\n\t\t+ W(6, -1145295444, 1044385332, -1083799507, 1058261310) + W(7, -1119006543, 994300076, -1131268254, 1034368866)\n\t\t+ W(8, -1090459925, 1050466917, 1026422690, -1119097260)\n\t\t+ W(9, -1201649403, 1043013720, -1104403080, 1049921019)\n\t\t+ W(10, -1131911306, -1123993357, -1135278623, -1103541652)\n\t\t+ W(11, -1103180426, 1042671596, 1051353751, 1023041036);\n\tsum2 =\n\t\tW(0, 1033856632, -1090933982, 1068958128, 1067844920) + W(1, -1095515318, -1124923033, 1041148647, -1094617784)\n\t\t+ W(2, 1066199400, -1102124443, -1122244574, 1042779533)\n\t\t+ W(3, -1094518814, -1122277735, 1055138982, 1051248434) + W(4, 1036900546, -1103088355, 1045521814, 1062250596)\n\t\t+ W(5, -1070105649, -1078683071, 1046136146, -1114411292)\n\t\t+ W(6, -1128266986, 1027053741, -1070096660, -1079091570)\n\t\t+ W(7, 1021983978, -1114099181, 1033117136, 1050179515) + W(8, -1082392713, -1089309992, 1045719314, 1023274434)\n\t\t+ W(9, -1173165821, 1033890948, 1067349236, 1047411220)\n\t\t+ W(10, 1050937215, -1124200313, 1041230368, -1086799133)\n\t\t+ W(11, 1076979077, 1070525583, -1091587052, 1042022635);\n\tWS(-1081223670, 1021288719);\n\tsum1 =\n\t\tW(0, 1011016529, 1035837139, 1042651768, -1098433890) + W(1, -1129696110, 995272815, -1123721507, 1032041909)\n\t\t+ W(2, 1036928499, -1100608474, 1024607124, 1027549342) + W(3, 1017381041, -1108640782, 1055254255, -1094722148)\n\t\t+ W(4, -1131079071, -1116321147, 1017648243, 1024313608) + W(5, 1061777248, -1083909329, 1047474926, 1017435439)\n\t\t+ W(6, 1028006000, -1105590117, 1061429156, -1087617676)\n\t\t+ W(7, 1036831026, -1122084432, -1122128468, -1108791100)\n\t\t+ W(8, 1052534382, -1091388554, 1033276873, -1139273509)\n\t\t+ W(9, 1009660876, -1128783630, 1049990152, -1104773376)\n\t\t+ W(10, -1150770463, 1024807730, 1007983923, -1116825572)\n\t\t+ W(11, 1053483289, -1093454083, 1005912461, -1125665142);\n\tsum2 =\n\t\tW(0, 1057380038, -1088994983, 1016685185, 998662038) + W(1, 1040844632, 1027712021, 1057597982, -1085734595)\n\t\t+ W(2, 983594263, 1031174835, -1116219635, -1109851055) + W(3, 1069621581, -1072283812, 1066773393, -1099503122)\n\t\t+ W(4, -1134907857, 1037507283, 1060801069, -1079782207)\n\t\t+ W(5, 1060848632, -1097910780, 1027931069, -1116080368) + W(6, 1060050844, -1081640783, 1043641192, 1038323247)\n\t\t+ W(7, -1111695032, -1123552119, 1041938366, 1046270010) + W(8, -1105013658, 1026094487, 1047921746, 1028446195)\n\t\t+ W(9, -1122435905, -1113922524, -1104981345, 1036576275)\n\t\t+ W(10, -1114519002, -1108250726, 1024344515, 1043446590)\n\t\t+ W(11, -1105295106, -1145544806, 1032973176, 1031771441);\n\tWS(-1120405176, 1052288640);\n\tsum1 =\n\t\tW(0, -1136485047, 1040656325, 1051431647, -1114886102) + W(1, -1113721480, -1115542032, -1120969533, 1013423883)\n\t\t+ W(2, 1042796768, -1092939904, 1039390695, -1165530871)\n\t\t+ W(3, 1032711321, -1108004548, 1062809491, -1083705303) + W(4, 1026161897, 1020434857, 1027237267, -1107763377)\n\t\t+ W(5, 1060861813, -1089040632, -1116341945, 1024821617) + W(6, 1021305874, 1022040031, 1027813500, 1039332409)\n\t\t+ W(7, -1108229347, 1031183209, -1146847086, 1040265357)\n\t\t+ W(8, -1107918083, -1098943929, 1035322940, 1019272038)\n\t\t+ W(9, -1133175986, 1031093856, 1039657966, -1112315213)\n\t\t+ W(10, -1115465454, 1024346473, 1039673939, -1100629595)\n\t\t+ W(11, 1043412169, -1104541036, -1114748782, 1012723731);\n\tsum2 = W(0, 1032873736, -1128467212, -1098460251, 1024553592)\n\t\t + W(1, 1047433570, -1128334191, -1106233681, -1131275971)\n\t\t + W(2, 1035809416, -1114616785, 1026776904, -1107845863)\n\t\t + W(3, 1036788040, -1113770947, -1078975662, -1092555656)\n\t\t + W(4, -1132131619, 1043173677, 1009987037, -1088748320)\n\t\t + W(5, 1062703231, 1067981395, -1104531393, -1111351589)\n\t\t + W(6, -1117147579, -1097209973, 1059662245, 1058574054) + W(7, -1106248497, 991598885, 1018109057, 1040210251)\n\t\t + W(8, -1110493560, -1103422592, -1125640736, -1107997815)\n\t\t + W(9, -1114508674, -1099376356, 1052516052, 1038056552)\n\t\t + W(10, -1107638185, 1023829740, -1106556966, 1050939532)\n\t\t + W(11, 992650581, 1026754378, -1107493388, -1106870741);\n\tWS(1050656983, 1072047790);\n\tsum1 =\n\t\tW(0, -1128713579, 1048792739, 1050333168, -1097949975) + W(1, -1101689274, -1127716817, 1026709637, 1034799517)\n\t\t+ W(2, 1050171449, -1104033571, 1036522731, 1037025856) + W(3, 1023201012, 1014670385, 1053203577, -1085647978)\n\t\t+ W(4, -1115538280, -1116963676, 1030859291, -1116111658)\n\t\t+ W(5, 1064066450, -1080119690, 1043957990, -1112813084) + W(6, 1041237492, 1025355287, 1060032700, -1088145917)\n\t\t+ W(7, 1037919995, 1036783049, -1152997210, -1112906461)\n\t\t+ W(8, 1050694506, -1088560507, -1120212113, -1113565993)\n\t\t+ W(9, -1155686725, 1036463444, 1053095469, -1105136840) + W(10, 1035379762, 1035776666, 1040488948, 1002270506)\n\t\t+ W(11, 1046913707, -1093840327, -1108210918, -1122514141);\n\tsum2 = W(0, 1032121925, 1067037293, -1074821338, -1094551116)\n\t\t + W(1, 1045030197, -1115959604, -1105031648, 1072414374)\n\t\t + W(2, -1081225596, 1050387420, 1035683027, -1117669800)\n\t\t + W(3, -1130820039, 1072723545, -1069168235, 1050306407)\n\t\t + W(4, 1054464199, -1109697271, -1105961083, 1076922042)\n\t\t + W(5, -1068908234, -1080768789, -1129129027, -1106200850)\n\t\t + W(6, 1040237041, 1072846596, 1068735095, -1110799161)\n\t\t + W(7, -1109242003, 1041008693, -1091675607, -1079373087)\n\t\t + W(8, 1050158994, 1048692149, -1102086715, -1107790175) + W(9, 1052906990, 1048404715, 1043049709, 1039557097)\n\t\t + W(10, 1050068036, 1019897614, -1119953618, -1090018360)\n\t\t + W(11, 1036354441, -1114340558, -1106557101, 1034398799);\n\tWS(-1081468886, 1041730784);\n\tsum1 =\n\t\tW(0, -1114247594, 1021500053, 1028761377, 1044129269) + W(1, -1131183895, -1121682823, 999910687, 1042624634)\n\t\t+ W(2, 1005300019, 1053438789, -1096850135, 1029411807) + W(3, -1112649805, 1043096639, -1100727404, 1055682820)\n\t\t+ W(4, -1106832988, 1022343799, 1022168820, 1034747044) + W(5, 1035906940, -1086991443, 1038040260, -1113521452)\n\t\t+ W(6, 1009392321, -1103886814, 1062898916, -1084075064)\n\t\t+ W(7, 1044548897, -1110992968, 1025791509, -1101453262)\n\t\t+ W(8, 1054732110, -1098009154, 1037861846, -1110478453)\n\t\t+ W(9, -1115410306, 1026735815, 1042621601, -1097832968)\n\t\t+ W(10, 1022910341, -1125653940, 1020540891, 1034256626)\n\t\t+ W(11, 1041116931, -1117544535, -1121491970, -1112646442);\n\tsum2 = W(0, -1109856908, 1025315462, -1111613060, -1108093549)\n\t\t + W(1, 1041489120, -1114414815, 995541592, 1040254152) + W(2, 997512408, -1085520225, -1094645099, 1040714423)\n\t\t + W(3, -1107331629, 1035675473, -1115826672, -1103361463)\n\t\t + W(4, -1102705141, -1125997775, 1043476326, 1026228130)\n\t\t + W(5, 1067108106, 1059978555, -1121534122, 1032256197)\n\t\t + W(6, -1104942022, -1101803200, 1053887552, -1094292172)\n\t\t + W(7, 1039802977, -1130615251, 1039471517, -1123010638)\n\t\t + W(8, -1104388416, -1120534147, 1017265579, -1129091643)\n\t\t + W(9, -1114856041, 1040268905, -1120685867, -1108094032)\n\t\t + W(10, 1040793483, -1108206349, 1022399907, 1028920354)\n\t\t + W(11, -1103458923, 1040596394, -1107135380, 1027593934);\n\tWS(1054796503, -1111794816);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[507];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { temp[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 13 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 507; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 13, y = (uint)id % 13;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (3)) + 0.5, float(group_base.y + y - (2)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[12];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 13];\n\tsamples[1][3] = inp[local_pos + 14];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 26];\n\tsamples[3][1] = inp[local_pos + 27];\n\tsamples[3][2] = inp[local_pos + 28];\n\tsamples[3][3] = inp[local_pos + 29];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 39];\n\tsamples[4][3] = inp[local_pos + 40];\n\tsamples[5][0] = inp[local_pos + 41];\n\tsamples[5][1] = inp[local_pos + 42];\n\tsamples[5][2] = inp[local_pos + 43];\n\tsamples[5][3] = inp[local_pos + 44];\n\tsamples[6][0] = inp[local_pos + 52];\n\tsamples[6][1] = inp[local_pos + 53];\n\tsamples[6][2] = inp[local_pos + 54];\n\tsamples[6][3] = inp[local_pos + 55];\n\tsamples[7][0] = inp[local_pos + 56];\n\tsamples[7][1] = inp[local_pos + 57];\n\tsamples[7][2] = inp[local_pos + 65];\n\tsamples[7][3] = inp[local_pos + 66];\n\tsamples[8][0] = inp[local_pos + 67];\n\tsamples[8][1] = inp[local_pos + 68];\n\tsamples[8][2] = inp[local_pos + 69];\n\tsamples[8][3] = inp[local_pos + 70];\n\tsamples[9][0] = inp[local_pos + 78];\n\tsamples[9][1] = inp[local_pos + 79];\n\tsamples[9][2] = inp[local_pos + 80];\n\tsamples[9][3] = inp[local_pos + 81];\n\tsamples[10][0] = inp[local_pos + 82];\n\tsamples[10][1] = inp[local_pos + 83];\n\tsamples[10][2] = inp[local_pos + 91];\n\tsamples[10][3] = inp[local_pos + 92];\n\tsamples[11][0] = inp[local_pos + 93];\n\tsamples[11][1] = inp[local_pos + 94];\n\tsamples[11][2] = inp[local_pos + 95];\n\tsamples[11][3] = inp[local_pos + 96];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 41];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(1, 2);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2) + ivec2(0, 1), ret);\n}\n//!PASS 2\n//!DESC NNEDI3 (double_x, nns256, win8x6)\n//!IN INPUT, temp\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 8\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[12]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 12; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 48.0;\n\tfloat mstd1 = sumsq / 48.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, -1118812211, -1126504964, -1120674615, 1037346316)\n\t\t + W(1, -1120777358, -1137814218, -1128256674, -1118580651)\n\t\t + W(2, -1118354985, -1117760744, -1117458482, -1097807929)\n\t\t + W(3, -1114916026, -1101147334, 978731342, -1112914505)\n\t\t + W(4, -1108702207, -1127312137, -1124477727, 1051925971)\n\t\t + W(5, 1042061230, 1032645830, 1026597474, 1040041685) + W(6, -1107177196, 1040658850, 1041726453, 1061593601)\n\t\t + W(7, 1053108884, 1029100907, 1023094846, 1010634196)\n\t\t + W(8, -1116025261, -1105559165, -1102924251, -1098269094)\n\t\t + W(9, -1109857889, -1121960158, -1133406593, -1137769344)\n\t\t + W(10, -1113369587, 1024463101, -1120327001, 1015141868)\n\t\t + W(11, -1129934237, -1114359336, 1018102856, -1124738995);\n\tsum2 =\n\t\tW(0, 1012167794, 975711915, 1007876102, -1112492311) + W(1, 1037438381, -1104922990, 1035896848, -1129478003)\n\t\t+ W(2, 1034293816, -1103749327, 1042152488, 1032768248) + W(3, 1026775674, -1112883791, 1009005510, 1029694272)\n\t\t+ W(4, 1040949842, -1105000392, -1113573827, 1065119806)\n\t\t+ W(5, 1049707133, -1118855570, 1019305156, -1105233202)\n\t\t+ W(6, -1073125242, -1097051670, 1048636347, 1064777150) + W(7, 1035198208, 1049268872, -1110039318, 1045598091)\n\t\t+ W(8, -1098861131, 1026609280, -1103172582, 1028248806) + W(9, 1042916747, -1108803486, 1037762592, 1002108025)\n\t\t+ W(10, 1034317546, -1107080190, 1037196612, -1106667446)\n\t\t+ W(11, 1024046979, -1112062411, 1031133421, -1116379320);\n\tWS(1002542528, -1081598301);\n\tsum1 = W(0, -1123106403, 1003194766, -1115291860, -1120609928)\n\t\t + W(1, 1033033375, -1104418325, 1031657633, -1140694509)\n\t\t + W(2, 1018532849, 1031358712, -1100442248, -1102109750)\n\t\t + W(3, -1124327881, 1022719310, 1042404749, -1173350542) + W(4, 1058293919, 1048723343, 1060312385, 1065191364)\n\t\t + W(5, 1057579241, 1055391647, 1048926634, 1057234642)\n\t\t + W(6, -1096563748, -1102943230, -1084853826, -1082116255)\n\t\t + W(7, -1090047916, -1090520747, -1115672903, -1088607906)\n\t\t + W(8, 1033211315, 1043311017, -1122032382, 1048832547) + W(9, 1045565001, 1034840623, 1040065984, 1034960904)\n\t\t + W(10, -1104454821, 1033034550, -1105126162, -1093430837)\n\t\t + W(11, 1033480943, -1104668395, 1041617645, -1100859732);\n\tsum2 =\n\t\tW(0, -1118979564, -1136455954, 1031647880, -1098733088) + W(1, 1032618663, -1115252794, -1105564107, 1028338874)\n\t\t+ W(2, 1038135851, -1098903542, 1043936541, -1095471090)\n\t\t+ W(3, -1114646115, 1050331000, -1107943513, 1030299514) + W(4, 1040555036, -1113356687, 1041172918, 1058853402)\n\t\t+ W(5, -1111675314, 1042547849, -1102521857, 1048036907) + W(6, 1046730291, -1091503884, 1053446821, 1057969905)\n\t\t+ W(7, 1026777488, 1032649026, -1097022326, 1045220138)\n\t\t+ W(8, -1098841046, 1033064908, -1105844234, -1107613268)\n\t\t+ W(9, -1104403193, -1109177822, -1106932655, -1104926499)\n\t\t+ W(10, 1010901456, -1105119573, 1050988870, -1096003667)\n\t\t+ W(11, 1040941647, -1135105484, -1111654963, 1015146572);\n\tWS(-1089089900, 1057806976);\n\tsum1 = W(0, -1107295812, -1127595840, -1123024597, -1107414907)\n\t\t + W(1, 1016079705, -1114511976, -1121404144, -1120167114)\n\t\t + W(2, 1034138799, 1025412102, 1036945929, 1043589025) + W(3, 1048626936, 1026901142, -1122208804, -1132433569)\n\t\t + W(4, -1095422036, -1098433268, -1092642698, -1086058047)\n\t\t + W(5, -1087422851, -1090938821, -1099844512, -1092394401)\n\t\t + W(6, 1050726826, -1189029283, 1055732365, 1066834483) + W(7, 1060391966, 1050840209, 1046023279, 1054523402)\n\t\t + W(8, 1041715821, -1122343505, -1122551116, 1012137296)\n\t\t + W(9, -1112593208, 1032081267, 1025525231, 1034856335)\n\t\t + W(10, -1107540610, -1114195981, 1004508092, -1123010964)\n\t\t + W(11, 1021997657, -1116540066, -1117735535, -1140325311);\n\tsum2 = W(0, -1100068589, 1040406565, -1105732125, -1129255625)\n\t\t + W(1, -1110986904, 1041854514, -1108063740, 1040297872)\n\t\t + W(2, 1045053907, -1112537807, 1034765996, -1096936254)\n\t\t + W(3, -1098576495, -1119869595, -1108123574, -1106886121)\n\t\t + W(4, 1035618626, -1097933278, -1099579155, 1047111871) + W(5, 1056019034, -1119227686, 1029490732, 996712344)\n\t\t + W(6, 1049401249, -1091711434, 1056573344, 1055190008)\n\t\t + W(7, 1058665437, -1092612461, -1121089271, -1113107096)\n\t\t + W(8, 1036897142, 1040848725, -1089717374, 1050298277)\n\t\t + W(9, -1089302244, 1058580142, -1127874601, -1110437244)\n\t\t + W(10, -1103084156, 1039746012, 1030295740, -1110783667)\n\t\t + W(11, 1041764164, -1100808273, 1022690203, 1034569294);\n\tWS(1049963735, -1124746024);\n\tsum1 = W(0, 1006389467, 991131306, -1124991168, 1036315168) + W(1, -1114080443, 1034164414, -1168983685, 1034869786)\n\t\t + W(2, 1034213253, -1110639240, -1124116580, -1106688436)\n\t\t + W(3, 1016950458, 1034354600, -1118357326, 1046100667) + W(4, 1058411598, 1049374726, 1060442825, 1064243752)\n\t\t + W(5, 1058630778, 1057235431, 1051622657, 1028310995)\n\t\t + W(6, -1089111694, -1111102680, -1086690096, -1080857842)\n\t\t + W(7, -1086343400, -1086990857, -1099687954, -1090257402)\n\t\t + W(8, -1120169982, 1039576302, 1018630958, 1032153615) + W(9, 1034713638, 1036089759, 1035150121, -1126482082)\n\t\t + W(10, 1033778855, -1134195605, -1122058050, 1024033695)\n\t\t + W(11, 1016006830, 1017381585, 1027377121, -1130216101);\n\tsum2 =\n\t\tW(0, -1114775505, 1022693528, 1033686534, -1159675846) + W(1, -1112709023, 1033838002, -1125624388, 1032684170)\n\t\t+ W(2, -1111353121, 1040828458, -1108626677, -1179590680)\n\t\t+ W(3, 1041114289, 1028829848, -1108121837, 1037026782) + W(4, 1051023520, 1041444385, -1101109690, -1089609004)\n\t\t+ W(5, -1101828769, 1037546580, 1033655640, -1104771455)\n\t\t+ W(6, 1077280281, 1083159907, -1090827263, -1064966677)\n\t\t+ W(7, -1073695373, -1090323484, 1042738654, -1104201752)\n\t\t+ W(8, 1042396970, 1039028690, -1129576724, -1146898193)\n\t\t+ W(9, -1117377551, 1046069066, -1098820901, 1049907200)\n\t\t+ W(10, -1100155636, 1038899070, -1108327399, -1128357112)\n\t\t+ W(11, 1026559236, 1017563688, -1149039617, -1119733667);\n\tWS(-1082925548, -1131273240);\n\tsum1 =\n\t\tW(0, -1130676005, 1024417890, -1127912110, -1123681912) + W(1, -1128802908, 1009745483, 1030244593, -1124372951)\n\t\t+ W(2, 1028984921, 1026031368, 1046418962, 1048544370) + W(3, 1032747842, -1115143804, 1035809011, 1012870858)\n\t\t+ W(4, -1090453298, -1094705109, -1088411833, -1080625999)\n\t\t+ W(5, -1078821070, -1093720869, -1115224705, -1099806226)\n\t\t+ W(6, 1056020338, 1048479050, 1054709085, 1056570469) + W(7, 1060414079, 1058018725, 1048613352, 1053689379)\n\t\t+ W(8, 1036092472, 1026370227, 1040943828, 1016526011) + W(9, -1134933227, -1146727344, -1126383553, 1034696072)\n\t\t+ W(10, 1031745797, 1023514525, -1139610597, 1039178347)\n\t\t+ W(11, -1115579031, 1033865376, -1123856496, 1032018765);\n\tsum2 = W(0, -1117505397, -1126832117, -1116692107, -1107644007)\n\t\t + W(1, -1117458583, -1123105101, -1117032217, 1004815486)\n\t\t + W(2, -1114926763, -1140231915, -1125548157, -1125354742)\n\t\t + W(3, 1042669208, 1027773818, -1115355410, -1119603373)\n\t\t + W(4, 1048798551, -1146496262, 1045683415, 1053833339)\n\t\t + W(5, 1057710126, 1032098567, -1100115369, -1110288078)\n\t\t + W(6, -1102904639, -1113101086, -1125191934, 1000279686)\n\t\t + W(7, -1104919217, -1107525999, 1032507221, -1103622420)\n\t\t + W(8, 1025448640, -1129185935, 1034411663, -1120274227) + W(9, 1041220979, 1022009255, 1021108475, 1039592007)\n\t\t + W(10, -1112830121, -1125809392, -1121525964, -1113082203)\n\t\t + W(11, -1111650191, 1035574395, -1112638630, -1117835672);\n\tWS(-1089340204, 1064822548);\n\tsum1 =\n\t\tW(0, 1024560260, 1017532199, 1036465700, 1032538389) + W(1, 1031720480, 1035008482, 1020865894, 1041385023)\n\t\t+ W(2, 1040632746, -1123651609, 998268921, -1115892569) + W(3, -1109887627, 1033415588, -1112010572, 1043778521)\n\t\t+ W(4, 1042654740, 1053882699, 1058440180, 1062655475) + W(5, 1057084090, 1054084900, 1046711885, 1050203279)\n\t\t+ W(6, -1106019185, -1094337163, -1083627654, -1081203240)\n\t\t+ W(7, -1087921069, -1086686700, -1098821294, -1083224116)\n\t\t+ W(8, -1121721479, 1033472482, -1112650528, 1042941034) + W(9, 1046201917, 1038013786, 1039144481, 1043447032)\n\t\t+ W(10, 1037194524, 1028050126, 993325743, 1013010462) + W(11, 1035154240, 1021897635, 1027972046, -1131974615);\n\tsum2 =\n\t\tW(0, -1108565409, 1041490776, -1103680498, -1113858207) + W(1, 1018958125, -1139146344, 1024460115, -1111959213)\n\t\t+ W(2, 1034353453, 1018486577, -1113519263, 1052082200)\n\t\t+ W(3, -1097140178, 1046768714, -1098207895, -1128703602)\n\t\t+ W(4, -1088688588, -1105841420, 1037914109, 1062919581) + W(5, -1095558118, 1049328132, 1041960027, 1035231667)\n\t\t+ W(6, 1053209723, -1092734414, -1094792328, 1049986423)\n\t\t+ W(7, -1107726366, 1044527939, 1046336394, -1110040773) + W(8, 1049996954, 1039814215, 1034343810, 1012724150)\n\t\t+ W(9, -1098318745, 1024888668, -1106186917, 1036710347)\n\t\t+ W(10, -1107721619, -1122233136, -1116717915, 1040029087)\n\t\t+ W(11, 1007719490, -1100531711, 1037888927, -1102670680);\n\tWS(-1083458668, -1076208878);\n\tsum1 =\n\t\tW(0, 1028803476, -1119221604, -1136427363, 1033962333) + W(1, -1108948664, 1041264181, -1108358441, 1032628870)\n\t\t+ W(2, 1040683401, -1097616301, 1042493937, -1106128994)\n\t\t+ W(3, -1096558041, 1044433886, -1097860853, -1123751924) + W(4, 1046406904, 1051879501, 1058517387, 1062475632)\n\t\t+ W(5, 1061490456, 1053313566, 1049919352, 1054299289)\n\t\t+ W(6, -1098733730, -1093169213, -1088547874, -1086787145)\n\t\t+ W(7, -1088927588, 1035939910, -1096390160, -1130402734)\n\t\t+ W(8, 1004468631, -1110693690, 1024040880, 1045297574) + W(9, 1028806548, 1038834422, -1095128350, -1106314264)\n\t\t+ W(10, 1030855367, -1111140815, -1127640694, -1108587948)\n\t\t+ W(11, -1104411844, 1040762412, -1118015030, -1165494119);\n\tsum2 = W(0, 1016611708, 1037888148, -1105282980, 1016374797)\n\t\t + W(1, -1146676672, -1118267731, -1130451858, 1032410610)\n\t\t + W(2, 1016478676, 1037533502, 1012928145, 1042320298)\n\t\t + W(3, -1119445205, -1133007186, -1123652878, -1114217777)\n\t\t + W(4, -1110195557, 1036667983, -1126800264, -1123884642)\n\t\t + W(5, -1097480948, -1111241984, 1039970164, 1039354964)\n\t\t + W(6, -1101004152, 1029018929, -1092116144, 1048907311) + W(7, 1063932318, 1045206632, 1051255124, 1032089604)\n\t\t + W(8, 1040169462, 1051795874, 1041335879, 1052196876)\n\t\t + W(9, -1105880602, -1088285853, -1095104183, -1090379026)\n\t\t + W(10, -1128480930, -1116498505, -1105668811, -1110762465)\n\t\t + W(11, -1096424000, 1016609657, 1029046774, 1046489649);\n\tWS(-1104670894, -1131977046);\n\tsum1 = W(0, -1112648188, -1122872327, 1034658686, -1105196647)\n\t\t + W(1, 1040705957, -1105551222, -1121117111, 1017793890)\n\t\t + W(2, -1127207577, 1044660591, -1159198685, -1091967838)\n\t\t + W(3, 1050515731, -1105182655, -1127322710, 1049557794) + W(4, 1054983097, 1050049705, 1055452918, 1062208630)\n\t\t + W(5, 1055187309, 1051606290, 1047450666, 1052382814)\n\t\t + W(6, -1088875575, -1112061830, -1088327234, -1080890076)\n\t\t + W(7, -1103107959, -1088400827, -1103254713, -1097595959)\n\t\t + W(8, 1031188251, 1037435556, 1047857485, 1027642075) + W(9, 1054501223, -1109004816, 1042878098, 1041414585)\n\t\t + W(10, -1103988635, 1027063042, -1117747167, -1097581231)\n\t\t + W(11, 1026629396, -1115427963, -1119280070, -1121163375);\n\tsum2 = W(0, 1016354951, -1117974191, 1039379806, 1055799129) + W(1, 1043516685, 1037116388, 1033575170, -1131729016)\n\t\t + W(2, 1027513536, 1035918257, 1037237024, -1144611727) + W(3, 1028380863, 1042440009, -1106882882, 1025801393)\n\t\t + W(4, -1143898815, 1029824032, -1103985849, -1097216592)\n\t\t + W(5, -1106760625, -1103814691, -1123395355, -1136138683)\n\t\t + W(6, -1120711631, 1038928177, -1101088822, -1097673825)\n\t\t + W(7, -1124050651, -1105579212, 1026359109, 1011024469)\n\t\t + W(8, -1121835937, -1110582057, 1009730353, 1040607236)\n\t\t + W(9, -1115312251, 1038947942, -1135830635, -1112603972)\n\t\t + W(10, 1011202413, 1027020738, -1113735870, 1044957698)\n\t\t + W(11, -1114960631, 1027787831, -1133116095, 1008198659);\n\tWS(-1096559831, 1037484900);\n\tsum1 = W(0, 1028249855, -1134487991, 1034313250, 1016173128) + W(1, 1027417370, 1028347039, 1000575210, 1035635068)\n\t\t + W(2, 1038422322, 1027879764, 1029515489, -1112460521)\n\t\t + W(3, -1107825326, -1123304579, 1030471249, -1120703806)\n\t\t + W(4, 1057397273, 1048869250, 1056640275, 1065757625) + W(5, 1058322735, 1054334819, 1052511918, 1052376319)\n\t\t + W(6, -1091437192, -1098773026, -1086850776, -1083502823)\n\t\t + W(7, -1083394976, -1089694535, -1098313541, -1102551488)\n\t\t + W(8, -1101563608, 1029769503, -1127965876, -1131269971)\n\t\t + W(9, 1044386388, -1107441417, 1031752252, -1098473097)\n\t\t + W(10, 1033785689, 1031362249, -1173649736, -1128247556)\n\t\t + W(11, 1035484541, -1132373103, 1034873120, -1142130892);\n\tsum2 = W(0, -1112511339, 1040888051, 1033770332, 1027239578)\n\t\t + W(1, -1109060021, -1135961020, -1113507810, -1110941727)\n\t\t + W(2, -1073555081, -1070793862, -1069228230, -1071158503)\n\t\t + W(3, -1080567434, 1047598893, 948656059, -1129804625) + W(4, 1076402541, 1075658117, 1075655149, 1077820889)\n\t\t + W(5, 1045918702, -1118850699, 1035044244, 1026016583) + W(6, -1104998932, 1054215981, 1042820552, 1046227202)\n\t\t + W(7, -1095422364, -1101978428, 1045389579, -1103164541)\n\t\t + W(8, -1101584674, -1115233903, 1010151672, 1035248614)\n\t\t + W(9, 1038949494, 1049027220, 1028467783, -1118124613) + W(10, 1037626737, 1015165170, 1023929473, 1033175695)\n\t\t + W(11, 1025525751, 1032251645, -1117328038, 1042587545);\n\tWS(-1081931126, 1073966570);\n\tsum1 =\n\t\tW(0, -1121849711, -1146361331, 1017322599, -1106692309) + W(1, 1025148299, -1106210884, 1006422511, -1115138804)\n\t\t+ W(2, 1035175459, -1097410109, 1043585907, -1120101763) + W(3, 1050307440, 1038219466, 1023773090, -1132131774)\n\t\t+ W(4, -1121951547, 1026127169, -1144746721, -1091000962)\n\t\t+ W(5, -1079735571, -1091953433, -1096168868, -1102445962)\n\t\t+ W(6, 1027761070, 1045225025, -1106255910, 1065386286) + W(7, 1061827739, 1056380469, 1049682211, 1046599772)\n\t\t+ W(8, 1025905706, 1037511592, 1043091875, -1111228857) + W(9, -1120837551, -1102991437, 1003336935, 1040799505)\n\t\t+ W(10, -1114686833, -1113648733, 1017686828, -1108319001)\n\t\t+ W(11, 1018597782, -1147707682, -1110127893, 1028136822);\n\tsum2 =\n\t\tW(0, -1106398945, 1034732755, -1136096426, -1116038033) + W(1, 1044672515, -1100200943, 1037208365, 1025870712)\n\t\t+ W(2, 1035173169, -1090565718, 1037348813, -1089313148)\n\t\t+ W(3, 1037418911, 1045738761, -1130864309, -1117649125)\n\t\t+ W(4, -1101335301, 1056357842, -1122254044, 1066071262)\n\t\t+ W(5, -1095175639, -1132458755, 1007521414, 1025322164) + W(6, 1053305068, 1050400788, 1036743473, 1057700465)\n\t\t+ W(7, -1084949846, 1003355997, 1030076164, -1106413087)\n\t\t+ W(8, -1121291886, -1115544374, -1105444760, -1086616818)\n\t\t+ W(9, 1050477957, -1102270714, 1045722667, 999303933) + W(10, -1109509581, -1107192051, 1016457143, 1022772267)\n\t\t+ W(11, 1033704361, 1035291569, -1111299866, 1024551876);\n\tWS(1052508503, 1065718149);\n\tsum1 = W(0, 1042149474, -1109127212, 1041796883, 1033122295)\n\t\t + W(1, -1120120612, 1045736850, -1110374755, 1038133568)\n\t\t + W(2, 962035242, -1098223900, 1027445007, -1108112926)\n\t\t + W(3, -1098175173, 1043181559, -1100319159, -1102543586)\n\t\t + W(4, 1048663227, 1043423478, 1055339346, 1061167739) + W(5, 1054196775, 1055761732, 1041284046, 1051299336)\n\t\t + W(6, -1097510801, -1096660204, -1087758861, -1089406218)\n\t\t + W(7, -1094841886, -1105769888, -1103555357, -1120191499)\n\t\t + W(8, 1028239019, -1104342914, 1027971236, 1037128774)\n\t\t + W(9, -1105773058, 1042761157, -1101757237, -1105847257)\n\t\t + W(10, 1038442493, -1109357577, 1040109559, 1025450507)\n\t\t + W(11, -1123303012, 1044237597, -1111907879, 1039590240);\n\tsum2 =\n\t\tW(0, -1109097964, 1021868522, 1007318978, 1032613655) + W(1, 1002517286, -1126879582, 1031113174, -1114937810)\n\t\t+ W(2, 1037136687, -1116667451, -1107845433, -1109068920)\n\t\t+ W(3, 1016069779, -1103760436, 1030143702, -1118059752) + W(4, 1031673749, -1094712046, 1038331125, 1040720319)\n\t\t+ W(5, -1111158812, 1056111085, -1106358629, -1121843086)\n\t\t+ W(6, -1125393555, 1041352693, 1034962829, -1112580519)\n\t\t+ W(7, -1106409067, -1106729155, -1106975050, 1047380650)\n\t\t+ W(8, 1019467600, -1104433838, -1122570447, -1121851072)\n\t\t+ W(9, -1113430896, 1049773824, 1036295980, -1122235886) + W(10, 1025995330, 1008084051, 1039892459, 1025598855)\n\t\t+ W(11, 1045465420, -1110468674, 1020538422, -1113447212);\n\tWS(1056997868, 1008833773);\n\tsum1 = W(0, -1118496039, 1036420187, -1113594582, 1034344230)\n\t\t + W(1, 1038393121, -1109888100, 1032434307, -1131937728)\n\t\t + W(2, 1006806901, -1130107576, -1115019369, 1045363911)\n\t\t + W(3, -1090717022, 1037930126, -1110427933, -1112104883)\n\t\t + W(4, 1039826714, -1123687353, 1053157409, 1059756929) + W(5, 1058230383, 1045739824, 1042446790, 1052782212)\n\t\t + W(6, -1123143270, -1104570591, -1093231896, -1095316624)\n\t\t + W(7, -1095564524, -1098051412, -1101398261, -1104229594)\n\t\t + W(8, 1006039247, 1032886196, -1105180689, -1102708199)\n\t\t + W(9, 1035814292, -1129186168, 1025625861, -1112516090)\n\t\t + W(10, 1017005492, -1125702370, 1028719950, 1009228202)\n\t\t + W(11, -1119964195, 1033820442, 1028568173, -1136905401);\n\tsum2 =\n\t\tW(0, 1034320453, -1112051735, 1043966073, 1033608293) + W(1, -1092579307, 1051236380, -1102939053, 1027336318)\n\t\t+ W(2, -1118604595, -1109468006, -1106879339, -1088213587)\n\t\t+ W(3, 1064370547, -1095838484, 1043763107, 1016664388) + W(4, 1025235375, -1107232926, 1049289065, 1067079268)\n\t\t+ W(5, -1088486363, 1044420987, -1107783352, -1116658227)\n\t\t+ W(6, 1028595208, 1046387359, 1044354198, -1087106166) + W(7, -1108961766, -1104528882, 1035658672, 1023955051)\n\t\t+ W(8, 1002638229, -1105038970, 1045499601, 1035867996)\n\t\t+ W(9, -1096457250, 1028839698, -1122532695, -1126291119)\n\t\t+ W(10, -1116609216, 1005965131, -1111658272, -1132447732)\n\t\t+ W(11, 1042442572, -1134350406, -1131375963, -1135660575);\n\tWS(1064849644, -1092967401);\n\tsum1 =\n\t\tW(0, 1041078624, -1103081652, 1045204674, -1126422222) + W(1, -1107755791, 1049230600, -1101861336, 1041473799)\n\t\t+ W(2, 1033930742, 1034184171, -1098756264, 1038407355)\n\t\t+ W(3, -1103118957, -1103625882, 1035198826, -1102710964) + W(4, 1053270962, 1058076017, 1059044453, 1061713418)\n\t\t+ W(5, 1064682577, 1047988615, 1055582710, 1058355518)\n\t\t+ W(6, -1091277968, -1091900963, -1097334921, -1078564449)\n\t\t+ W(7, -1099822850, -1091654943, -1096942230, -1098047297)\n\t\t+ W(8, -1115974645, -1101902009, 1038364767, 1031099397) + W(9, 1025967234, 1010917525, 1021900159, -1106099948)\n\t\t+ W(10, -1124489961, 1046377811, -1096742869, 1034335299)\n\t\t+ W(11, 1015202107, -1098744549, 1047801952, -1101582418);\n\tsum2 =\n\t\tW(0, 1034970587, -1105865147, 1024111791, 1018431373) + W(1, -1107243650, 1038385161, -1114574492, -1129893537)\n\t\t+ W(2, 1039267337, 1026053125, 1040193826, 1037956157) + W(3, -1106797747, 1031902437, -1114137980, -1128932411)\n\t\t+ W(4, -1109640195, 1027743203, 1042644379, -1088412806)\n\t\t+ W(5, -1104275404, 1031274183, -1115379021, 1040558376)\n\t\t+ W(6, -1085205368, -1076908464, -1072741915, -1079896887)\n\t\t+ W(7, 1057561219, 1052902509, -1103620900, 1054347378) + W(8, 1065312771, 1068235631, 1074530244, 1069229068)\n\t\t+ W(9, -1110308581, 1045193510, -1167188013, -1099424233)\n\t\t+ W(10, -1111782462, 1029167111, 1035172075, 1048206286)\n\t\t+ W(11, -1092973955, -1105822229, -1102796809, -1106619819);\n\tWS(-1085552428, 1044647857);\n\tsum1 = W(0, -1130568573, -1111247047, 1001536536, -1104704953)\n\t\t + W(1, 1029690778, -1104108900, 1012447989, -1107166286)\n\t\t + W(2, -1120131932, 1046596325, 1026932885, 1049575094)\n\t\t + W(3, 1042872064, -1127841478, -1114289465, -1110288351)\n\t\t + W(4, -1097293585, -1095715202, -1090361246, -1085535724)\n\t\t + W(5, -1105723034, -1113844876, -1127895515, 1028149942)\n\t\t + W(6, 1052681344, 1050957098, 1059711152, 1060788917) + W(7, 1048249845, -1106926654, 1034645781, 1043016176)\n\t\t + W(8, -1115182247, -1125685565, -1097304503, -1122898434)\n\t\t + W(9, -1115360055, 1050188162, -1110595670, 1041406167)\n\t\t + W(10, 1016796643, -1123522377, 1028362085, -1112833505)\n\t\t + W(11, 1008149481, -1111804152, 1032897312, -1119471349);\n\tsum2 = W(0, 1049638564, 1012096208, 1055008508, 1058022553) + W(1, 1059601221, 1065544846, 1035938200, 1043980555)\n\t\t + W(2, -1122573304, -1169058693, -1092917400, -1080721407)\n\t\t + W(3, -1081684685, -1080284825, -1096574070, -1098850345)\n\t\t + W(4, -1097365817, -1118822370, -1124083512, 1056959548)\n\t\t + W(5, 1056508637, 1051359763, 1044088441, 1031681402) + W(6, -1120650912, 1032693677, -1127709292, 1044260765)\n\t\t + W(7, -1099806388, 1042746095, 1033735876, -1121369890)\n\t\t + W(8, 1039129637, 1036528332, -1113518885, -1122124802)\n\t\t + W(9, 1019567420, -1101554026, 1041548497, -1108142320)\n\t\t + W(10, -1114566411, -1119534724, 1015256750, 1042163670)\n\t\t + W(11, -1110975736, 1032382474, -1110809702, 1022534793);\n\tWS(1049904727, -1085461498);\n\tsum1 = W(0, -1114441151, 1032673159, 1027012354, 1041600521) + W(1, 1035856141, 1033107055, 1031163069, -1139856090)\n\t\t + W(2, 1047758995, -1122472531, 1048177385, -1116753522)\n\t\t + W(3, -1105032264, -1109908945, -1104848436, -1111353615)\n\t\t + W(4, -1092338425, -1101190388, -1096531431, 1059669870)\n\t\t + W(5, 1063099682, 1058897901, 1049115478, 1055941567) + W(6, 1054893264, 1042608805, 1050188989, -1088410395)\n\t\t + W(7, -1084283112, -1088007491, -1096369309, -1096366496)\n\t\t + W(8, -1095327506, -1108884127, -1104987150, -1123782065)\n\t\t + W(9, 1042263123, 1042892731, 1029697804, 1047202227)\n\t\t + W(10, 1042581180, -1119554504, 1041262473, -1120686401)\n\t\t + W(11, -1117364890, -1107384925, -1138499405, -1100444021);\n\tsum2 =\n\t\tW(0, -1101934313, -1127864237, -1112463889, 1047304216) + W(1, -1097499627, 1041678537, -1128505773, 1039199998)\n\t\t+ W(2, 1068410613, 1066297935, 1052441146, -1077079694)\n\t\t+ W(3, -1082290320, -1095668928, -1097722710, -1096167330)\n\t\t+ W(4, 1053392914, 1047339448, -1111508378, 1044634164) + W(5, -1086326188, 1053023843, 1050833435, -1112581958)\n\t\t+ W(6, 1045964051, -1107136628, 1035674775, 1046050296) + W(7, -1113442140, -1135364198, 1028981469, 1028034745)\n\t\t+ W(8, -1109754454, 1023924243, -1121555471, -1111827987)\n\t\t+ W(9, 1006763480, 1034831467, -1128234727, 1032814306)\n\t\t+ W(10, -1118726053, 1029832629, -1111696115, 1036477638)\n\t\t+ W(11, -1119582249, 1024856185, -1112331027, 1017921306);\n\tWS(-1087326956, 1033622098);\n\tsum1 =\n\t\tW(0, -1113899675, 1035193378, 1030557818, -1119324954) + W(1, 1042470612, -1117399605, 1021883592, 1035419591)\n\t\t+ W(2, 1045896801, -1161971013, 1045303135, -1095480777)\n\t\t+ W(3, -1110770003, -1109576477, -1100233714, -1122013269)\n\t\t+ W(4, 1041409216, -1108871427, -1104804773, 1041468886) + W(5, -1098059200, 1052050234, 1041862393, 1017834329)\n\t\t+ W(6, -1108955706, 1048600721, -1094955846, 1051943793)\n\t\t+ W(7, 1025944442, -1097508910, 1030612641, -1106071902)\n\t\t+ W(8, -1104543128, -1114333163, 1045266364, -1096626659)\n\t\t+ W(9, 1048775867, 1043056710, -1122051827, 1042839849)\n\t\t+ W(10, 1041055226, -1106692192, 1039063182, -1112593372)\n\t\t+ W(11, -1107180444, 1041486173, -1114362202, -1121041260);\n\tsum2 =\n\t\tW(0, 1008283263, -1114415273, -1114655921, 1036167174) + W(1, -1111159985, 1033204129, -1122340118, -1127458940)\n\t\t+ W(2, -1111634453, 1032259795, -1123951654, -1116061542)\n\t\t+ W(3, 1039368345, -1102899145, 1024476440, -1118949310) + W(4, -1112224655, 1046234660, 1039099048, 1049934438)\n\t\t+ W(5, 1003410015, -1113540553, -1117681522, -1122317014)\n\t\t+ W(6, -1121896666, 1020399084, -1139717487, 1050902690) + W(7, 1039007446, 1039510238, 1032062517, 1033150391)\n\t\t+ W(8, 1031996897, -1105304684, 1017260660, -1102142181) + W(9, 1003551903, -1114854307, 992233789, -1113963477)\n\t\t+ W(10, -1106176579, 1027107696, -1106922258, 1022104088)\n\t\t+ W(11, -1122048418, -1135188919, -1128403972, -1125862176);\n\tWS(1068173014, -1111006676);\n\tsum1 =\n\t\tW(0, 1031049568, -1115395480, 1019703498, -1113567107) + W(1, 1015808760, -1109811912, 1027899359, -1103105894)\n\t\t+ W(2, -1103201566, -1112513259, -1112438249, 1042819653) + W(3, 1048780036, 1039150546, 1034094633, 1040353932)\n\t\t+ W(4, 1048004603, -1117860850, -1104427535, -1083606526)\n\t\t+ W(5, -1083053360, -1090564527, -1092330682, -1095220995)\n\t\t+ W(6, -1100468360, -1173290307, 1042677725, 1064316383) + W(7, 1063571221, 1060600586, 1050639762, 1054475004)\n\t\t+ W(8, 1046039773, -1123264224, 1030284012, -1122621123)\n\t\t+ W(9, -1094902185, -1103353426, -1106486660, 1034806311)\n\t\t+ W(10, 1012485196, -1127850837, 1029876039, 1036820754)\n\t\t+ W(11, 1035184606, 1024997805, -1149057999, -1123061719);\n\tsum2 =\n\t\tW(0, 1014853092, -1120466254, 1027909890, -1117512854) + W(1, 1026011110, -1110873488, 1036041188, -1115497806)\n\t\t+ W(2, -1122580470, -1114547761, 1030745116, -1119656010)\n\t\t+ W(3, 1035574738, -1120221385, 1020780404, -1122615179) + W(4, -1120994367, 1038991680, 1034511499, 1041066172)\n\t\t+ W(5, -1109149586, 1024235728, -1112980367, 1020521688)\n\t\t+ W(6, 1047459793, 1047680543, -1098401240, -1121088174) + W(7, 1045982327, 1024310650, -1122000913, 1042402937)\n\t\t+ W(8, 1064875701, 1054395623, 1045153300, -1085223893)\n\t\t+ W(9, -1084582209, -1099510820, 1029465320, -1105747852)\n\t\t+ W(10, -1132455031, 1011283964, -1108441710, 1018552602)\n\t\t+ W(11, -1106692167, 1026658994, 1023023932, 1004613671);\n\tWS(-1095915991, 979918868);\n\tsum1 =\n\t\tW(0, -1115463727, -1137886897, 1011021190, 1011860489) + W(1, -1129491953, 1007409140, -1124741815, -1122228982)\n\t\t+ W(2, 1032823819, 1037523161, 1029800132, 1043477300) + W(3, -1105888052, -1114264129, 1021218335, 1030459197)\n\t\t+ W(4, 1026707497, -1131549790, -1108429845, -1100874368) + W(5, 1047336484, 1049886943, 1042964547, 1038061098)\n\t\t+ W(6, -1119898332, 1035412665, -1136100063, -1112838682)\n\t\t+ W(7, -1098267600, -1097768883, -1106237874, -1108915952)\n\t\t+ W(8, 1026568544, -1108324895, -1138504034, 1047390560) + W(9, 1036689246, 1037432366, 996441389, -1121991146)\n\t\t+ W(10, -1121143952, -1129452238, -1120493188, -1147670274)\n\t\t+ W(11, 1028096953, -1134502280, -1157333673, -1177453050);\n\tsum2 = W(0, -1121902268, -1128394666, 1039974898, -1114856664)\n\t\t + W(1, 1032116923, -1115163450, -1112859101, -1128925353)\n\t\t + W(2, 1020062213, -1143339877, -1102502778, 1034423857) + W(3, 1030950002, 1038088024, 1036537682, 1019282123)\n\t\t + W(4, 1034601005, -1111450467, 1034366199, -1093114037)\n\t\t + W(5, 1027196884, 1036157347, -1130356560, 1032717961)\n\t\t + W(6, -1096503308, 1052764693, -1095299550, 1060522961)\n\t\t + W(7, 1057088106, -1104371255, 1031719642, -1110891365)\n\t\t + W(8, 1050858947, -1099720262, 1055940597, -1087523263)\n\t\t + W(9, -1085850393, -1107617878, -1119144319, 1017512699)\n\t\t + W(10, -1108630019, -1130142915, -1105816149, 1037139152)\n\t\t + W(11, 1054601799, 1043807995, -1122652165, 1025497552);\n\tWS(1066530838, 1025703389);\n\tsum1 =\n\t\tW(0, -1120765920, 1009297086, -1122351141, 1015487755) + W(1, 1015844344, -1127613121, -1133586812, -1124468594)\n\t\t+ W(2, -1132051981, -1139418709, -1109474502, -1098776251)\n\t\t+ W(3, -1109199593, -1123764613, -1121408403, -1145136640)\n\t\t+ W(4, -1129191897, 1032587897, 1057153612, 1049522345) + W(5, 1041525985, -1109817213, 1010121533, -1107128582)\n\t\t+ W(6, 1042371592, -1118415861, -1120712699, -1099055070) + W(7, 1049700744, 1050593755, 1036084166, 1038803505)\n\t\t+ W(8, 1007708012, -1122811552, -1105657359, -1099127683)\n\t\t+ W(9, -1111888320, -1113004743, 984437698, 1036904923)\n\t\t+ W(10, -1116932051, -1134432681, -1127344014, 1026629028)\n\t\t+ W(11, -1119906716, -1136900213, -1118848634, -1123829719);\n\tsum2 = W(0, -1117430114, 1039120940, -1106133189, 1026507473)\n\t\t + W(1, 1031550625, -1142215401, 1026312489, -1139250704)\n\t\t + W(2, 1041261247, -1107749198, -1099018179, -1131506304)\n\t\t + W(3, -1123617030, -1123190888, -1112954810, -1137414048)\n\t\t + W(4, 1033806419, -1097831330, 1064523288, 1045711847)\n\t\t + W(5, -1088977338, 1052831473, -1133526188, -1122137188)\n\t\t + W(6, -1126022952, 1041137317, 1057416214, -1092069746)\n\t\t + W(7, 1059767697, -1088761837, 1033531722, -1110686692)\n\t\t + W(8, -1155381873, -1127685702, -1099691831, 1026250214)\n\t\t + W(9, -1098651966, -1118397760, -1130823120, 1029280576)\n\t\t + W(10, -1125967712, -1116954634, 1032736142, -1120045450)\n\t\t + W(11, 1021746164, 1028302350, 990513889, -1115066264);\n\tWS(1066680246, 1040921440);\n\tsum1 =\n\t\tW(0, -1119730500, 1034101258, -1132236433, -1104735450) + W(1, 1035235184, -1111591250, 1024518355, -1121802685)\n\t\t+ W(2, -1110280861, 1011417444, 1027753539, 1038200908) + W(3, 1035268043, -1121734057, 1032771355, -1126371080)\n\t\t+ W(4, -1092083138, 1031601302, -1090607216, -1078665075)\n\t\t+ W(5, -1096046953, -1093429316, -1094352558, -1102572591)\n\t\t+ W(6, 1053565584, 1054599907, 1058261942, 1061430978) + W(7, 1061610294, 1056142824, 1053165350, 1055282545)\n\t\t+ W(8, -1110918026, -1143895330, -1111808624, -1099071584)\n\t\t+ W(9, -1106320677, -1105323662, -1138833863, 1035738553)\n\t\t+ W(10, 1029997623, -1113777127, 1039976245, -1112447940)\n\t\t+ W(11, 1023744576, -1145165385, -1113453535, 1031263347);\n\tsum2 =\n\t\tW(0, 1033717276, -1129082210, -1111396517, 1053521042) + W(1, -1096499765, 1041638909, -1115028859, -1143837439)\n\t\t+ W(2, 1028210443, -1130739278, -1117565460, -1113906791)\n\t\t+ W(3, -1106119849, 1044690885, 1000486481, 1015998178) + W(4, 1046091050, -1085374293, 1033058760, 1062822204)\n\t\t+ W(5, -1089123399, 1003636411, 1048601259, -1103883056)\n\t\t+ W(6, -1119519632, 1026401017, -1106338078, 1066908993) + W(7, 1034907371, 1054286387, -1096894542, 1041460877)\n\t\t+ W(8, 1050909876, -1110182528, -1149282827, -1081393742)\n\t\t+ W(9, -1094008056, 1035142168, 1020535023, 1028271260)\n\t\t+ W(10, -1117678961, 1042909501, -1099518378, 1044082334)\n\t\t+ W(11, -1097984366, 1040282994, -1109925208, 1021313035);\n\tWS(-1111691100, -1070453585);\n\tsum1 = W(0, 1040350706, -1107702492, 1045915011, -1103582444)\n\t\t + W(1, 1036820082, 1030081641, -1112926972, 1034445457)\n\t\t + W(2, 1032181048, 1006352113, -1101176752, -1098104500)\n\t\t + W(3, -1111995209, -1105752467, -1111976126, 1025879721)\n\t\t + W(4, 1054597571, 1056547603, 1059824936, 1062411659) + W(5, 1062112057, 1042786985, 1050598527, 1058122296)\n\t\t + W(6, -1090063653, -1111618639, -1087007388, -1079908657)\n\t\t + W(7, -1098160558, -1094958736, -1104521261, -1107753094)\n\t\t + W(8, -1105977411, 1011306277, 1037450066, -1113612402)\n\t\t + W(9, 1043358554, -1108376090, 1024420791, -1098378691)\n\t\t + W(10, -1114266718, 1034245578, -1130610528, -1111998342)\n\t\t + W(11, 1021846218, 1026051990, 1032139296, 1018599200);\n\tsum2 =\n\t\tW(0, -1102183736, 1045283790, -1099060082, 1029589699)\n\t\t+ W(1, -1103326288, -1146696619, -1123727405, -1106785078)\n\t\t+ W(2, 1044690091, -1117083441, -1109435037, 1005932683)\n\t\t+ W(3, -1109954065, -1130369043, -1115538567, 1039027144)\n\t\t+ W(4, 1025447267, 1036724432, -1100626978, 1066859805) + W(5, -1114206859, 1024539831, -1123732285, 1040901138)\n\t\t+ W(6, -1103679886, -1096666126, 935783211, 1061824774)\n\t\t+ W(7, -1098480165, -1113161303, -1109149493, -1129688427)\n\t\t+ W(8, 1034791609, 1043810354, -1097803022, 1034749891) + W(9, -1094988176, 1050252440, 1029732207, -1105144948)\n\t\t+ W(10, -1120655593, -1109094473, 1029730663, 1023292171)\n\t\t+ W(11, -1109570093, 1012313206, -1106431920, 1015686163);\n\tWS(-1105638574, -1077878805);\n\tsum1 = W(0, -1112101313, 1025565072, -1118212870, 1034991091)\n\t\t + W(1, 1037618766, 1033034081, 1023523536, -1143864013) + W(2, 1043313362, 1041884710, 1045058176, -1099609869)\n\t\t + W(3, -1100255017, -1097107341, -1104696333, -1128917761)\n\t\t + W(4, -1104398291, -1093904634, -1086702118, 1055637093)\n\t\t + W(5, 1061981800, 1053455331, 1048950646, 1037339676) + W(6, 1034529536, 1043314021, 1058479092, 1049084915)\n\t\t + W(7, -1082434966, -1087005060, -1098585534, -1105402705)\n\t\t + W(8, -1120033234, -1106696920, -1128822905, -1126325576)\n\t\t + W(9, 1050170340, 1046293466, 1042248226, 1032623999) + W(10, 1017824488, 1028280843, 1038132788, -1136921361)\n\t\t + W(11, -1125947450, -1124008918, -1126565485, -1114937252);\n\tsum2 =\n\t\tW(0, 1040832216, 1042032808, 1039550307, 1029252447) + W(1, 1040592387, -1111709033, 1050208698, -1091595987)\n\t\t+ W(2, -1125419559, -1103788280, 1043848052, -1099123277)\n\t\t+ W(3, 1047689572, -1102650535, -1105352144, 1033340873) + W(4, -1166596642, 1045241846, 1051795538, 1068949095)\n\t\t+ W(5, -1094163017, -1111700665, -1117027793, 1027304955)\n\t\t+ W(6, -1076839498, -1091833274, 1035730071, 1070654393) + W(7, -1096947569, 1050259859, 1051072204, 1048679723)\n\t\t+ W(8, -1085872442, -1105795498, -1094587067, 1007431650)\n\t\t+ W(9, -1089767553, 1041510738, -1100476212, 1057584085)\n\t\t+ W(10, 1038631745, 1037000995, -1115278352, -1103746979)\n\t\t+ W(11, 1041143367, 1025070825, -1116523862, -1093749689);\n\tWS(-1095944791, 1081861902);\n\tsum1 = W(0, -1129669743, -1116664839, -1148272609, -1121494877)\n\t\t + W(1, -1115602986, 1028329496, -1123378150, 1027525168)\n\t\t + W(2, 1034635115, -1122706061, 1033259121, -1124251544)\n\t\t + W(3, -1126517523, -1128061368, -1130313237, -1119991479)\n\t\t + W(4, 1057433596, 1048908041, 1058166921, 1058746094) + W(5, 1055593874, 1057488289, 1049860117, 1061071735)\n\t\t + W(6, -1090131839, -1093164666, -1087001587, -1083481847)\n\t\t + W(7, -1085306808, -1091485686, -1102755929, -1105495231)\n\t\t + W(8, -1120322428, 1030509816, 1035303897, 1044900399) + W(9, 1041073282, 1023593721, 1034451003, -1102595129)\n\t\t + W(10, 1008560041, 1023557506, 1013701241, -1117995899)\n\t\t + W(11, -1116643091, 1023656437, -1164007844, 1024551167);\n\tsum2 =\n\t\tW(0, 1029670841, -1115575058, 1042858197, -1101600217) + W(1, -1117748556, 1035438169, -1114535210, 1032334939)\n\t\t+ W(2, 999172620, -1099435099, -1139359478, 1027943101) + W(3, 1048715384, -1098854617, 1036336651, 1041563473)\n\t\t+ W(4, 1042251423, 1041110640, 1058527193, 1075961547) + W(5, 1073424302, -1086643829, -1080060710, -1067239867)\n\t\t+ W(6, -1105031588, -1120449287, 1010020318, -1109667225)\n\t\t+ W(7, 1057314889, 1037113027, -1123725073, -1100548924) + W(8, 1027957701, 1035596553, 1019832195, 1011086126)\n\t\t+ W(9, 1033526397, 975610078, 1012557694, -1095465488) + W(10, 1026093121, -1156632055, -1126960339, 1010028142)\n\t\t+ W(11, 1037810339, -1115077778, -1133987070, 1036754195);\n\tWS(-1085172076, 1069147958);\n\tsum1 = W(0, 1025703205, -1141293989, 1041286826, -1119005195)\n\t\t + W(1, 1026450561, -1117134469, -1120895076, 1025414366)\n\t\t + W(2, 1027233863, -1106615031, -1115436126, -1112858253)\n\t\t + W(3, 1042609938, -1122683754, 1044686038, -1117169125) + W(4, 1026640114, 1042354526, 1053740861, 1054852793)\n\t\t + W(5, -1119314307, 1026745790, -1108709290, 1023400633)\n\t\t + W(6, 1029190628, -1106775167, -1106293072, -1089581852)\n\t\t + W(7, -1098775605, -1108063055, 1015550627, -1125318352)\n\t\t + W(8, -1111659152, -1115892869, 1035182992, 1027435128)\n\t\t + W(9, -1137028117, 1038436612, -1112739478, 1031194923)\n\t\t + W(10, -1139375968, 1028377583, -1156734143, -1121669673)\n\t\t + W(11, 1034668065, -1119291218, 1027259179, -1118201212);\n\tsum2 =\n\t\tW(0, -1154464437, 1004660066, 1011666487, 1016373458) + W(1, -1117096132, 1027534293, -1118720211, 1024315262)\n\t\t+ W(2, 1027039233, -1115032564, -1147080182, 975139636) + W(3, 1025013868, -1117310194, 1025607183, -1145025250)\n\t\t+ W(4, 1008089899, 1041471507, 1053281755, -1081313755) + W(5, -1118862913, 1040077608, -1134922624, 993302909)\n\t\t+ W(6, -1117609897, 1033488023, 1082321679, -1065846603)\n\t\t+ W(7, -1122974098, -1130639872, -1143672974, -1114202318)\n\t\t+ W(8, -1118717800, 1033628240, 1046901100, 1050032460)\n\t\t+ W(9, -1106934499, -1137731251, -1177023016, 1017914834)\n\t\t+ W(10, 1027401421, -1112728150, 1012824907, -1108305112)\n\t\t+ W(11, 1038621352, -1137500513, -1129758225, 1025570630);\n\tWS(1065820150, -1112682631);\n\tsum1 =\n\t\tW(0, -1105640672, -1136938293, 1007936778, -1099447769) + W(1, 1033964109, -1110772895, -1107676126, 948858222)\n\t\t+ W(2, -1140735040, 1045425461, 1012508339, 1052020966) + W(3, -1110876672, 1038536521, 1034428376, 1041035251)\n\t\t+ W(4, -1096706537, -1095619178, -1101065539, -1083835034)\n\t\t+ W(5, -1127256032, -1101414038, -1102412811, -1104437005)\n\t\t+ W(6, 1051064512, 1046810501, 1057299292, 1054321083) + W(7, 1044289505, 1042038046, 1050440565, -1126355329)\n\t\t+ W(8, -1114855500, 1041816072, 1015987827, 1049485320) + W(9, -1106506396, 1031650401, -1098866309, 1044647659)\n\t\t+ W(10, -1128129890, -1108472292, 1036938130, -1101761488)\n\t\t+ W(11, 1035708141, -1113134674, 1031811610, -1119496853);\n\tsum2 =\n\t\tW(0, -1116689599, 1033662400, -1110264521, -1113832562) + W(1, 1034493072, 1024644211, -1105470304, 1030330543)\n\t\t+ W(2, -1104060794, 1047714485, -1106889746, 1055059659) + W(3, -1089308922, 1027816870, 1032487381, 1043118546)\n\t\t+ W(4, 1023887631, -1101000300, -1123902349, 1047334183)\n\t\t+ W(5, 1060541265, -1145174230, -1099777158, -1100795602)\n\t\t+ W(6, 1047625619, -1113896185, 1058674488, -1105663288)\n\t\t+ W(7, -1079751447, 1040502911, 1059286709, -1110882655)\n\t\t+ W(8, -1104647113, 1049921725, -1100964722, 1060005487)\n\t\t+ W(9, -1088726381, 1026206299, -1093081927, 1033716355)\n\t\t+ W(10, 1032108768, -1114038586, -1134500667, -1105023935)\n\t\t+ W(11, 1046968990, -1116742649, 1042150309, -1127164330);\n\tWS(1051219671, 1032040132);\n\tsum1 = W(0, 1024246061, 1029213629, -1142580623, 1007533386) + W(1, -1132388626, 1016678619, 998523489, 1023830470)\n\t\t + W(2, -1110293770, -1111062337, 1026027124, 1035026513)\n\t\t + W(3, 1036422600, 1011246152, -1173422083, -1130424090)\n\t\t + W(4, -1098745559, -1104763504, -1097349705, -1082429923)\n\t\t + W(5, -1083869189, -1095610025, -1095350964, -1094623957)\n\t\t + W(6, 1035978230, 1041701281, 1051781481, 1065410260) + W(7, 1060856625, 1057796630, 1045145830, 1055180598)\n\t\t + W(8, 1050231066, -1106571859, 1040668770, -1111350032)\n\t\t + W(9, -1113287631, -1122887388, -1109374678, 1007169387)\n\t\t + W(10, -1111943280, 1016965359, 1026054164, 1035026168)\n\t\t + W(11, 987392292, 1019565189, -1110518465, 1026555204);\n\tsum2 =\n\t\tW(0, -1123481859, 1024186334, -1181265672, -1136581772) + W(1, 1007273042, -1130526339, -1134191606, 1035801320)\n\t\t+ W(2, -1131096266, -1121050215, 1023491721, -1115413373)\n\t\t+ W(3, 1036272276, -1110187157, -1123342647, -1125507188)\n\t\t+ W(4, -1107023625, 1040345453, -1110082893, -1116173932)\n\t\t+ W(5, 1041634800, 1028205855, 1036476425, -1124495703) + W(6, 1040776673, -1129271163, 1044851152, -1097567007)\n\t\t+ W(7, 1051516690, -1106625929, 1035231370, 1007786534)\n\t\t+ W(8, -1073406322, -1080765061, -1077100552, -1085034176)\n\t\t+ W(9, -1104398720, 1019889879, -1115096299, -1105128420)\n\t\t+ W(10, 1074128739, 1066657253, 1068015119, 1066670217) + W(11, -1111857710, 1026394385, 990445793, 1030299973);\n\tWS(-1124324720, 1038677119);\n\tsum1 = W(0, 1008341069, 1031967089, 1023486232, 1037528348) + W(1, -1122921519, 1029849459, -1114006089, 1035528454)\n\t\t + W(2, 1038389179, 993181316, -1145165264, 991007864) + W(3, 1024190949, 1044031254, -1123515526, 1052524910)\n\t\t + W(4, 1056361124, 1050863173, 1054230472, 1063082151) + W(5, 1050043692, 1049660054, 1043779649, -1097977265)\n\t\t + W(6, -1081451931, -1096246661, -1086637900, -1088130503)\n\t\t + W(7, -1092787999, -1099337955, -1095996120, -1102904005)\n\t\t + W(8, 1047683325, 1035916906, 1027831167, 1026128198) + W(9, 1020947750, 1025351359, 1037985981, -1114005272)\n\t\t + W(10, -1130646284, -1134539381, 986748732, 1003368116)\n\t\t + W(11, -1115252008, 1036720064, -1116396881, 1029521402);\n\tsum2 =\n\t\tW(0, 1042203848, -1133163156, -1108707706, 1027923803) + W(1, -1098359820, 1043843260, 1021888231, 1023965418)\n\t\t+ W(2, -1089098687, -1098025067, 1036383110, 1058285406) + W(3, 1062333205, 1048839159, 1058743586, -1078465930)\n\t\t+ W(4, 1035967917, 1052777785, 1043356562, 1046924897) + W(5, -1080913711, -1088408400, -1097507024, 1067915456)\n\t\t+ W(6, 1068788369, -1096461215, -1090569807, -1088764217)\n\t\t+ W(7, -1095261121, -1098396864, -1093746709, 1064748817)\n\t\t+ W(8, -1095505730, -1097973178, -1127034898, 1056967609)\n\t\t+ W(9, 1040836988, 1046078649, -1111389506, -1099047850)\n\t\t+ W(10, 1025788011, -1111191248, 1023876171, 1046203397)\n\t\t+ W(11, -1107189985, -1113219498, -1110869404, 1040158004);\n\tWS(-1080347734, -1094728165);\n\tsum1 = W(0, -1115633753, -1128052610, 996364134, 1027254679)\n\t\t + W(1, 1027401421, -1125749028, -1143663749, 1017291157)\n\t\t + W(2, 1036436624, 1031912915, 1038598142, -1114408211)\n\t\t + W(3, -1097652239, -1109729611, -1111208674, -1118442418)\n\t\t + W(4, -1113632799, -1104119121, -1095896866, 1064358521)\n\t\t + W(5, 1061684826, 1051089073, 1044518984, 1048577269) + W(6, 1018734050, -1104173746, 1042956529, 1051156401)\n\t\t + W(7, -1087880029, -1093838037, -1100689848, -1104163629)\n\t\t + W(8, -1104273977, -1115038313, -1098511458, 1006576423)\n\t\t + W(9, 1037804713, 1039011098, -1157246715, -1145301883)\n\t\t + W(10, 1022550473, -1128796792, 1027191321, -1123707765)\n\t\t + W(11, -1125317723, -1116369959, -1130384675, -1113863292);\n\tsum2 = W(0, -1137561210, 1008161562, -1138249722, 1032804591)\n\t\t + W(1, -1118405314, -1149548391, -1140666666, -1121723310)\n\t\t + W(2, 1000810292, 1017087401, -1104015266, 1045940061)\n\t\t + W(3, -1112933693, 1040845572, -1131915309, -1125770861)\n\t\t + W(4, -1109671087, -1143663956, -1100429296, 1064636422)\n\t\t + W(5, 1041071232, -1095622064, -1113635957, -1156294183)\n\t\t + W(6, -1098257975, -1088410023, -1110483119, 1065774501)\n\t\t + W(7, -1111449957, -1114533177, -1105461804, -1154727079)\n\t\t + W(8, -1113334223, 1033424863, -1113376685, 1041401738)\n\t\t + W(9, -1107119710, 1041680128, -1114424843, -1143304660)\n\t\t + W(10, 1010643898, -1122425914, -1120544050, 1015219657)\n\t\t + W(11, 1028103016, -1125778629, -1127495397, -1128411685);\n\tWS(1062796012, -1081433938);\n\tsum1 = W(0, -1140258862, 1019305782, 1017521696, -1128637410)\n\t\t + W(1, 1030042599, -1140240046, 1023786378, 1027083972)\n\t\t + W(2, 1047697940, -1137205890, 1040574503, -1131514496)\n\t\t + W(3, -1115750349, -1114177400, -1119424318, 1025144619)\n\t\t + W(4, 1041493798, 1051824452, 1048941321, 1061551411) + W(5, 1058760695, 1056942277, 1045023263, 1056967544)\n\t\t + W(6, -1090901033, -1095124244, -1090555023, -1084025976)\n\t\t + W(7, -1089279069, -1089170928, -1099538126, -1087239225)\n\t\t + W(8, 1032453887, 1034552166, 1032035723, 1036871279) + W(9, 1041251643, 1032547975, -1117686145, 1027338481)\n\t\t + W(10, 1008978681, 1031420374, -1124609380, 1025475023)\n\t\t + W(11, 1016399695, 1024887097, 1002611913, 1012109898);\n\tsum2 =\n\t\tW(0, 1004838046, 1009005547, 1023830295, -1121204348) + W(1, 1026709605, -1145957446, 1024434367, -1122812157)\n\t\t+ W(2, 1036867068, -1112484311, 1034701810, -1131856601)\n\t\t+ W(3, 1008859907, -1129570235, -1120209470, 1023686531)\n\t\t+ W(4, 1023348885, -1113333873, -1115269491, -1084820204)\n\t\t+ W(5, -1095888786, 1052224270, 1043852487, 1047863595)\n\t\t+ W(6, -1120560082, 1019969949, -1089366478, -1067115412)\n\t\t+ W(7, -1071017431, 1066362408, 1084005284, 1063525936) + W(8, 1032448279, -1115333043, 1028612787, -1132671203)\n\t\t+ W(9, -1112864526, 1045423025, 1025066805, 1043035962) + W(10, 1025411331, -1123665230, 1024216939, 1034346460)\n\t\t+ W(11, -1116027280, -1133553563, 1032270816, -1105823812);\n\tWS(-1103681710, -1114530079);\n\tsum1 =\n\t\tW(0, 1025861737, 1029506744, 1032236919, 1035998951) + W(1, -1111043394, 1007410083, -1126534927, -1123346113)\n\t\t+ W(2, -1130912909, -1104283663, -1132593150, -1102933559)\n\t\t+ W(3, 1040041573, 992747222, 1034020670, -1119406504) + W(4, -1110124091, -1117715067, 1039686571, -1097542514)\n\t\t+ W(5, -1088677703, -1112367617, -1105036246, 1035634224)\n\t\t+ W(6, 1040844938, 1046218351, -1098764800, 1059317136) + W(7, 1057765873, 1054923388, 1029185429, 1040434219)\n\t\t+ W(8, -1105267215, -1121870249, 1038793978, -1096018272)\n\t\t+ W(9, -1105386706, -1101946581, -1122605111, -1143951794)\n\t\t+ W(10, 1021540535, 1032871129, -1120294159, 1036773558)\n\t\t+ W(11, -1111111618, 1031187710, -1138057273, 1023823648);\n\tsum2 = W(0, -1133865733, -1114357788, -1113774565, -1094909862)\n\t\t + W(1, 1041934157, 1048238594, 1041091101, 1042608690) + W(2, 1041378526, 1025611699, 1057780422, -1134317911)\n\t\t + W(3, -1084534604, -1105040821, -1096429323, -1128928913)\n\t\t + W(4, -1102114760, 1041852494, -1090351620, 1058263821)\n\t\t + W(5, 1059786982, -1114163954, 1034035361, -1102786592)\n\t\t + W(6, 1040042063, -1102827642, 1041105879, -1094128428)\n\t\t + W(7, -1121888905, 1038597269, -1139774900, 1035391793)\n\t\t + W(8, 1036263014, 1023561916, -1107817782, 1049906607) + W(9, -1106476521, 1034361268, 1016844568, 1014428216)\n\t\t + W(10, -1111718847, -1109687464, 1041802453, -1106696300)\n\t\t + W(11, 1023851848, 1032032810, -1111010993, 1031652841);\n\tWS(1059372396, -1131086843);\n\tsum1 =\n\t\tW(0, -1116770958, -1133338231, -1109423369, -1142676381)\n\t\t+ W(1, -1119417706, 1016864285, -1134266292, 1026073927) + W(2, 1038224730, -1110641250, 1048611339, 1026922691)\n\t\t+ W(3, 1012241985, 1033593306, -1108924145, 1029871326) + W(4, -1145642197, 1044958408, 1054215533, 1059821143)\n\t\t+ W(5, 1063416476, -1109435540, 1051611888, 1046037553) + W(6, 1033085351, -1100693257, 1024247225, -1085100606)\n\t\t+ W(7, -1082741615, -1105005730, -1096553463, -1091104802)\n\t\t+ W(8, -1114157744, 1030339791, -1106016522, 1039898225) + W(9, 1046979692, -1157274234, 1033932042, 1022970360)\n\t\t+ W(10, -1129272066, 1026076824, -1113286331, -1126911267)\n\t\t+ W(11, -1119319754, -1131274519, 1018258200, -1118999381);\n\tsum2 = W(0, -1117639690, -1126294727, -1135696947, 996342293)\n\t\t + W(1, 1025603183, -1120264553, 1034416033, 1029227505)\n\t\t + W(2, 1032542252, -1105983103, -1105990346, -1101410582)\n\t\t + W(3, 1031145839, 1029472991, -1125334020, 1016716795) + W(4, 1049036492, 1053585046, 1063294224, -1084067012)\n\t\t + W(5, 1030876063, -1090564487, 1047874805, -1103677712)\n\t\t + W(6, -1106428174, -1090074420, 1074893281, -1121077701)\n\t\t + W(7, -1079475296, 1059480413, -1099339963, -1097572114)\n\t\t + W(8, -1100598545, -1101677356, -1088449090, 1052666358)\n\t\t + W(9, 1049420880, -1099961793, 1047783255, -1106211131)\n\t\t + W(10, -1124515281, 1042350020, -1128187082, -1118105649)\n\t\t + W(11, 1033189178, 1012743453, 1016211057, 1026065323);\n\tWS(998487488, 1024735998);\n\tsum1 = W(0, 1034787125, 1033987197, -1118966639, -1138173503)\n\t\t + W(1, 1022076300, -1112157509, 1034213589, -1125240838)\n\t\t + W(2, -1096711418, 1049342972, -1099717199, 1051641300) + W(3, 1049184050, 1032130968, 1048086279, 1039987293)\n\t\t + W(4, -1093645783, -1089249828, -1085775960, -1083720757)\n\t\t + W(5, -1086133195, -1087092580, -1098046771, -1087792286)\n\t\t + W(6, 1058035879, 1055719968, 1060189357, 1061848612) + W(7, 1062875388, 1007190411, 1051240059, 1039984791)\n\t\t + W(8, -1113381667, 1033680357, -1108537011, -1102783527)\n\t\t + W(9, -1129404117, -1110331987, 1030325168, 1051616838)\n\t\t + W(10, 1020339515, 1037116250, -1109989161, 1046511483)\n\t\t + W(11, 1032957443, 1011591327, 1039628088, -1135236550);\n\tsum2 = W(0, 1001577162, 1041063142, -1112011211, 1039747614)\n\t\t + W(1, -1137882877, -1105672858, 1031849538, -1108158369)\n\t\t + W(2, 1048277958, 1048804575, 1037383696, 1042988518)\n\t\t + W(3, -1097597287, -1099442373, -1108394523, -1155656404)\n\t\t + W(4, -1094388043, 1061039504, 1055288082, -1084834029)\n\t\t + W(5, -1087507005, 1044806256, -1093629181, 1059993792)\n\t\t + W(6, -1079852425, -1095199392, -1077655189, -1103423898)\n\t\t + W(7, 1064308251, 1065240337, 1071708239, 1061107030) + W(8, 1055450674, 1054780006, 1058201467, 1071463850)\n\t\t + W(9, 1058560116, -1080251704, -1090257183, -1073879137)\n\t\t + W(10, 1040994203, 1035580564, -1111912036, -1100510960)\n\t\t + W(11, -1097442490, -1090250140, 1028605291, -1106111844);\n\tWS(-1077135094, 1050907162);\n\tsum1 = W(0, -1132921461, -1127648729, -1124984131, -1118007170)\n\t\t + W(1, -1117294457, -1126452986, -1124706520, -1119126518)\n\t\t + W(2, -1117094275, 1033699545, 1030394994, 1045491604) + W(3, 1039295895, 1040542752, 1018438944, 1035722382)\n\t\t + W(4, -1098008869, -1094355462, -1089194394, -1081313730)\n\t\t + W(5, -1088142214, -1094044967, -1098093746, -1094059515)\n\t\t + W(6, 1043699095, 1055483630, 1053279460, 1065160347) + W(7, 1056280352, 1058021117, 1041063570, 1050783700)\n\t\t + W(8, -1112620946, 1042990903, 1047326318, -1121246728)\n\t\t + W(9, -1110840279, -1106681402, -1128181366, 1018820533)\n\t\t + W(10, -1122422352, 1034045812, 1011377167, 1042128328)\n\t\t + W(11, -1103632934, 1039870541, -1109127577, 1037083890);\n\tsum2 = W(0, 1003021837, 1029225785, -1123823650, 1023947681)\n\t\t + W(1, -1119691195, 1024608678, -1125446899, 1034042378)\n\t\t + W(2, -1110495495, 1032075003, -1122423961, 1043723635)\n\t\t + W(3, -1138212418, 1017994477, -1115371525, 1002413729) + W(4, 1016902499, 993748010, 1028513681, -1096435650)\n\t\t + W(5, -1120166015, -1119557273, 1032720188, -1115060009)\n\t\t + W(6, -1116948709, 1041772340, 1083263801, 1074788880) + W(7, 1038793960, 1017310535, 1032034162, -1118011761)\n\t\t + W(8, 1029108513, -1097222635, -1063916786, -1074844879)\n\t\t + W(9, -1115182489, 1021770517, 1014563122, 1027576529)\n\t\t + W(10, -1113320609, 1042534143, 1039031010, -1104645285)\n\t\t + W(11, -1124877446, -1131419477, -1119401015, 999290841);\n\tWS(1048452526, 1015184705);\n\tsum1 = W(0, -1138645804, 1032256237, -1114005032, 1026512560)\n\t\t + W(1, -1140244890, -1131077462, 1024452554, -1122466948)\n\t\t + W(2, -1110581160, 1049910352, -1103860667, -1098570768)\n\t\t + W(3, -1119844941, 1040825100, 1017183931, -1119780203)\n\t\t + W(4, -1106270342, -1113826958, -1097372109, -1087095027)\n\t\t + W(5, -1095003728, -1095439444, -1128526324, -1106181921)\n\t\t + W(6, 1048623137, 1036222192, 1057099626, 1061337654) + W(7, 1054485156, 1049129464, 1044366494, 1040163591)\n\t\t + W(8, 1006760678, 1042522323, -1101854594, -1106501979)\n\t\t + W(9, -1115808507, 1027903818, -1153767820, 1034550428)\n\t\t + W(10, -1113210911, 1029873877, -1111141177, 1024448974)\n\t\t + W(11, -1125584845, -1111469876, 1027351533, -1117633442);\n\tsum2 = W(0, -1117856953, 1002437005, -1122373390, 1023823647)\n\t\t + W(1, -1131092262, -1119824143, -1129026789, -1118651901)\n\t\t + W(2, 1034706164, -1114697961, -1110151254, -1078943314)\n\t\t + W(3, -1111296752, 1008147760, 1015792571, 1029244251) + W(4, 999139177, 1016679180, 1034965747, 1069645782)\n\t\t + W(5, 1026082346, 1005900489, -1134452913, -1121319377)\n\t\t + W(6, -1115089108, 1009230224, 1007700984, -1105149666)\n\t\t + W(7, 1033262730, -1142960238, 1015281188, 1026230788) + W(8, 970725323, 1019562884, -1131774725, 1038179083)\n\t\t + W(9, 1014219446, -1130072184, 1012295392, -1122304449)\n\t\t + W(10, 1017499348, -1131336757, 1031482891, -1120925641)\n\t\t + W(11, 1015408436, 1001625665, -1137039581, 1019807852);\n\tWS(1061396972, -1097419696);\n\tsum1 = W(0, 1040610541, -1116833412, 1015657075, -1126977972)\n\t\t + W(1, 1033993320, -1125945514, 1028019732, -1120964750)\n\t\t + W(2, -1110826049, 1042368898, -1113808270, 1036447253) + W(3, 1043284110, 1048078310, 1028739112, 1052576556)\n\t\t + W(4, -1087862644, 1000165941, -1108964145, -1085843362)\n\t\t + W(5, -1088558114, -1086794197, -1087573386, -1079810761)\n\t\t + W(6, -1108888122, 1058527541, 1056284429, 1053927177) + W(7, 1062174380, 1055390198, 1042115560, 1051035743)\n\t\t + W(8, 1051684947, -1102910221, 1041698836, -1107922836) + W(9, 991752527, -1112253878, 1039363202, 1047360574)\n\t\t + W(10, -1117156776, -1135746300, 1026275932, 1041042462)\n\t\t + W(11, -1137078595, 1035139905, -1118906322, 1038370422);\n\tsum2 =\n\t\tW(0, -1104315228, -1117475550, 1019617669, -1096755788) + W(1, 1043056626, -1097959989, 1038305467, -1121707278)\n\t\t+ W(2, -1103350409, 1024254038, -1116633366, 1042486592)\n\t\t+ W(3, 1038440719, -1097184876, -1107570984, -1092525975)\n\t\t+ W(4, -1094844926, -1091235931, -1089312569, -1104902685)\n\t\t+ W(5, 1045881224, -1101957876, 1058820589, 1058872796) + W(6, 1062539510, -1112967686, 1056743222, 1052266072)\n\t\t+ W(7, 1037341407, 1012499609, 1048266302, -1099676541) + W(8, -1096027281, 1042482062, -1129394013, 1051055108)\n\t\t+ W(9, 1044017054, -1101861122, -1105903455, 1041661910)\n\t\t+ W(10, 1014020953, -1119186298, 1028745390, -1093268483)\n\t\t+ W(11, 1054988226, -1102938164, 1026503526, -1135013257);\n\tWS(-1084431788, -1073850193);\n\tsum1 = W(0, -1121456839, 1023326765, -1111055334, -1131954777)\n\t\t + W(1, -1127100870, -1115233108, 1032290155, -1113154576)\n\t\t + W(2, -1130755883, -1119027356, 1007276024, 1032958718)\n\t\t + W(3, 1051511197, 1038479638, 1033362061, -1118671783)\n\t\t + W(4, -1131651239, -1113039213, 1041028837, -1121014635)\n\t\t + W(5, -1080291009, -1101242168, -1095204295, -1109590335)\n\t\t + W(6, 1035028387, 1052115068, -1087869490, 1031197854) + W(7, 1064028192, 1046762496, 1048797598, 1048241682)\n\t\t + W(8, 1035837265, 1031790055, 1043959725, -1151139494) + W(9, -1097929447, 1016490449, 974160200, 1033898418)\n\t\t + W(10, -1139076328, -1110649673, -1126605404, 1037205893)\n\t\t + W(11, 1022476742, 1029406204, -1117985767, 1016018525);\n\tsum2 =\n\t\tW(0, 975878233, 1027199947, 1032202892, 1011577542) + W(1, 989447596, -1126785583, -1112180928, 1027448187)\n\t\t+ W(2, 1035912472, 1026239811, -1109490583, -1099491895) + W(3, 1027909011, -1142596491, 1032601180, 1030066347)\n\t\t+ W(4, 1033266404, -1101163205, -1092678923, 1052721602) + W(5, -1115079323, 1042994318, -1117880304, 999387083)\n\t\t+ W(6, -1098777501, -1120465270, 1026269275, 1058060839)\n\t\t+ W(7, 1022663675, -1109244590, -1139999774, -1113199846)\n\t\t+ W(8, -1115369638, 1047867282, 1048647954, 1026065727)\n\t\t+ W(9, -1107120056, -1139333782, -1113232790, -1128307819)\n\t\t+ W(10, 1024165887, -1114558090, -1127793863, -1110013405)\n\t\t+ W(11, -1115589183, 1028177183, -1119188249, 1010561254);\n\tWS(1060891500, 1063998119);\n\tsum1 = W(0, 1009319059, 1021371624, 1020060242, 1034805925) + W(1, -1119463744, 1029917861, 1022228167, 1028919037)\n\t\t + W(2, 1034817251, -1123888698, 1007070174, 1031377177) + W(3, 1035958587, 1040845210, -1119265271, 1041595485)\n\t\t + W(4, 1060685055, 1050963407, 1059880676, 1058492133) + W(5, 1057972187, 1045390927, 1050698442, 1042995863)\n\t\t + W(6, -1082111981, -1089953728, -1083685732, -1080402290)\n\t\t + W(7, -1087669949, -1092052092, -1101265316, -1093474029)\n\t\t + W(8, -1146641530, 1042831681, 1044491976, 1049293617) + W(9, 1044279073, 1030870792, 1040824939, -1117179330)\n\t\t + W(10, 1021753903, -1158245846, 1024323659, 974645755)\n\t\t + W(11, 1017781825, 1029410098, 1009963113, 1033823734);\n\tsum2 =\n\t\tW(0, 1043252027, 1039685669, 1021402919, 1043798699) + W(1, -1106121381, -1107286980, -1116219530, -1105216890)\n\t\t+ W(2, 1031085111, -1103588836, -1094345084, -1097680472)\n\t\t+ W(3, -1098140010, -1117022930, -1111854401, -1165267820)\n\t\t+ W(4, -1089976691, -1136546874, -1106220008, 1053086422) + W(5, 1041831351, 1053158416, 1043898913, 1065796563)\n\t\t+ W(6, 1015926083, 1047286193, 1049855126, -1093227067) + W(7, 1030378489, 1047431201, -1088912308, 1047204695)\n\t\t+ W(8, 1075090314, 1055918010, -1100279282, -1086978538)\n\t\t+ W(9, -1081018505, -1090494906, 1049023531, -1076607098)\n\t\t+ W(10, -1090475122, 1041438201, -1097421747, 1055157984)\n\t\t+ W(11, 1047503463, 1040447738, 1013873926, 1060337257);\n\tWS(-1071907259, -1110912590);\n\tsum1 = W(0, -1125193009, -1128862543, -1134196340, 1030754750)\n\t\t + W(1, -1115532794, 1035978988, -1122396199, 1030566929) + W(2, 1047025832, 1037187527, 1045585380, 1046461539)\n\t\t + W(3, 1034859053, 1044478211, 1038023446, -1115297724)\n\t\t + W(4, -1082520498, -1091004805, -1082717575, -1081098270)\n\t\t + W(5, -1085641231, -1094770022, -1100806498, -1096364930)\n\t\t + W(6, 1060301769, 1051495910, 1059488668, 1059029683) + W(7, 1058265227, 1047385124, 1051401113, 1030610907)\n\t\t + W(8, 1034040338, 999732421, 1034460834, 1039737374) + W(9, 1026869576, 1035505465, -1108119003, 1049444580)\n\t\t + W(10, 1027334603, 1007930762, 1012148988, -1153534395)\n\t\t + W(11, 1008981841, -1141674924, -1131397284, 1004145403);\n\tsum2 =\n\t\tW(0, -1094095783, 1046265071, -1105766507, 1052972269) + W(1, -1118583019, 1048411623, -1102184915, 1063609884)\n\t\t+ W(2, 1071341959, 1041114835, -1093757522, -1096593198)\n\t\t+ W(3, -1091593516, -1091154406, 1057911473, -1073590228)\n\t\t+ W(4, -1106266089, -1087794787, 1036032273, 1065807667)\n\t\t+ W(5, -1120668367, -1098744738, -1101075731, 1041493985)\n\t\t+ W(6, -1079612356, -1090342602, -1097206613, 1072329002) + W(7, 1052074546, 1035089459, 1053464489, 1066861510)\n\t\t+ W(8, -1096220802, -1119797941, -1100480279, -1091841958)\n\t\t+ W(9, -1107977625, 1049018868, -1101117382, -1098841365)\n\t\t+ W(10, 1053270877, -1103321092, 1044676561, -1113258696)\n\t\t+ W(11, 1022355226, -1099949977, 1048742227, -1096064815);\n\tWS(-1073583387, -1097642521);\n\tsum1 =\n\t\tW(0, -1113793830, 1025630043, 999171711, -1113970392) + W(1, 1041107242, -1126372055, 1019259188, -1141619744)\n\t\t+ W(2, 1040986278, 1018743169, 1043520539, -1126196031) + W(3, -1117788829, 1023908016, 999617264, 997975216)\n\t\t+ W(4, -1123577624, 1051202676, -1085714085, -1137921726)\n\t\t+ W(5, 1058609607, -1120709796, 1049515695, 1048163249) + W(6, 1026212810, -1107655120, 1058537807, -1102760649)\n\t\t+ W(7, -1084066799, 1038867522, -1105494638, -1113662887)\n\t\t+ W(8, 1031641306, 1015332695, -1102186706, 1042214156) + W(9, 1050734989, -1104026556, 1038371877, -1118473257)\n\t\t+ W(10, -1117606078, 1026666645, 999394704, -1098706922)\n\t\t+ W(11, 1028174279, -1105230460, -1131430066, -1117999154);\n\tsum2 = W(0, 1020465344, -1122047285, -1132946638, 1029560286)\n\t\t + W(1, -1137208000, 1032274109, 996568996, -1139618609) + W(2, -1114187457, 1035498840, 990134284, -1105572872)\n\t\t + W(3, -1125836673, -1107008827, -1143550666, -1133886920)\n\t\t + W(4, 1042661620, -1112200610, 1050532943, 1053825241)\n\t\t + W(5, 1035380426, 1041934457, -1132156656, -1115627477)\n\t\t + W(6, -1108558660, 990338200, -1098817485, 1046181371)\n\t\t + W(7, 1052951690, -1099854916, -1101729420, -1120597401)\n\t\t + W(8, 1022323488, 1037081003, -1116108394, -1112231866)\n\t\t + W(9, -1098433232, -1115059895, -1106305341, -1145950712)\n\t\t + W(10, 1024517966, -1114108748, 1033071181, 1024966834)\n\t\t + W(11, 1018142458, -1114933005, 1025004711, -1129654551);\n\tWS(1066138518, -1093674260);\n\tsum1 = W(0, 1029114768, 1016625343, 1023256234, -1135602902)\n\t\t + W(1, -1154917052, -1126509217, -1119361423, -1120895465)\n\t\t + W(2, -1096639483, -1107076945, -1097327813, -1112968866)\n\t\t + W(3, 1039946769, -1145778087, 1040195377, 1035798312) + W(4, 1057895286, 1046373881, 1060592282, 1048700903)\n\t\t + W(5, -1102042589, -1102212410, -1110743776, -1096085673)\n\t\t + W(6, -1095967018, -1098130813, -1090692519, -1096019117)\n\t\t + W(7, 1052511498, 1050590801, 1037092318, 1054517602) + W(8, 1030209323, 1027610352, 1010824623, -1147523994)\n\t\t + W(9, -1107963320, -1106421308, -1114290095, -1103975991)\n\t\t + W(10, -1115838467, 1036809869, -1116997111, 1034515722)\n\t\t + W(11, 1025259308, 1031910367, 1015369596, 1032370884);\n\tsum2 =\n\t\tW(0, 1020680083, 1026207298, -1114338038, 1034412140) + W(1, -1119552802, -1132183796, 1014438782, 1026463590)\n\t\t+ W(2, -1098235374, -1129289080, 1035819795, 1034843888)\n\t\t+ W(3, 1030579314, 1031435954, -1118921036, -1110299389)\n\t\t+ W(4, 1040052819, 1000882372, -1104532064, -1096717996) + W(5, 1025849568, -1126927262, 1034356940, 1043556407)\n\t\t+ W(6, 1039185699, 1041518935, 1060121453, -1098039050) + W(7, -1085068698, -1105751584, 1039772175, 1060018227)\n\t\t+ W(8, -1105651771, -1108930987, -1132043948, 1059664416)\n\t\t+ W(9, 1064006582, -1108966794, -1090790505, -1083675102)\n\t\t+ W(10, 999965284, 1025606660, -1127194998, -1123799241)\n\t\t+ W(11, 1020099573, -1130436386, 1040432622, -1098649260);\n\tWS(-1098394199, 1021768394);\n\tsum1 =\n\t\tW(0, -1106976773, 1030592418, -1109895628, 1031813276) + W(1, -1114022359, -1124672038, 980431986, -1118216524)\n\t\t+ W(2, 1047476460, -1106379994, 1041629170, -1108680996) + W(3, 1028771909, -1123109432, 1035760915, 1039049769)\n\t\t+ W(4, 1035645360, 1042879449, 1052123789, 1053022447) + W(5, -1107385030, 1044862779, 1023833154, 1040198899)\n\t\t+ W(6, -1107202165, -1121922344, -1091385002, -1090269731)\n\t\t+ W(7, -1107044710, -1127679127, -1107740288, -1099192133)\n\t\t+ W(8, -1121988294, 986778214, 1042582852, 1042227034) + W(9, 1044112989, -1115617842, 1030134009, 1025832513)\n\t\t+ W(10, 1008308247, -1140215924, -1120193402, -1127396653)\n\t\t+ W(11, 973525940, -1139398721, 1014367554, -1116507498);\n\tsum2 = W(0, -1098169790, 968544056, -1162122654, 1056997121)\n\t\t + W(1, 1029158812, -1112228820, 1026696161, -1112296199)\n\t\t + W(2, 1055345266, 1027898732, 1053687424, -1077105818) + W(3, 1039110353, 1037144043, 1022799116, 1042942743)\n\t\t + W(4, -1106123518, 1021773530, -1089212318, 1068095045)\n\t\t + W(5, -1090252350, -1124556656, -1130232224, -1104975561)\n\t\t + W(6, 1039932359, 1036378047, 1035540057, -1098361429) + W(7, 1000425352, 1050038066, -1118055459, 1040445489)\n\t\t + W(8, -1111072353, -1123343911, -1111121590, 1044527270)\n\t\t + W(9, -1115281069, -1114307158, -1116705210, 1023167430)\n\t\t + W(10, 1012808524, -1132858861, 1037852727, -1103837325)\n\t\t + W(11, 1036594354, -1134065606, 1032061348, -1114916168);\n\tWS(1064984812, 1025677564);\n\tsum1 = W(0, 1043884023, 1030924649, 1038396303, 1036152448) + W(1, 1017544939, 1042241831, -1121467129, 1047065797)\n\t\t + W(2, -1096329284, 1033742216, -1101734196, -1105624932)\n\t\t + W(3, 1017123640, -1108991823, 1037154774, -1096026219)\n\t\t + W(4, -1084712758, -1103101243, -1087209573, -1086845720)\n\t\t + W(5, -1084903475, -1087299343, -1108220133, -1087523701)\n\t\t + W(6, 1057726586, 1046959260, 1057188432, 1061206275) + W(7, 1060371326, 1055419738, 1041931586, 1055087388)\n\t\t + W(8, 1043356655, 1018532660, 1046520365, -1114153679) + W(9, -1111584053, 1028245989, 994164350, 1051664559)\n\t\t + W(10, 1012739123, -1131015624, 1002161670, 1044816791)\n\t\t + W(11, 1024962678, 1043667629, -1114955616, 1040331724);\n\tsum2 = W(0, 1043159502, -1105699647, 1038273264, 1032147900)\n\t\t + W(1, 1048938986, -1106879197, -1128156680, 1049056829)\n\t\t + W(2, -1104158106, 1050222709, 1025130152, 1032288328)\n\t\t + W(3, -1103450106, -1110143950, -1098742781, -1091104362)\n\t\t + W(4, -1085409392, -1090385012, -1106188919, 1061149199)\n\t\t + W(5, 1050752016, 1049612036, 1057886527, -1095713225) + W(6, 1067096435, -1106627676, 1052171093, 1075677902)\n\t\t + W(7, 1075039778, 1073503496, 1075355126, 1082426924)\n\t\t + W(8, -1090972778, -1102151020, -1086083449, -1070862987)\n\t\t + W(9, -1070168511, -1072257998, -1070483864, -1070643407)\n\t\t + W(10, -1098664617, 1050757442, 1039140273, 1030992941)\n\t\t + W(11, 1040257314, 1041175752, 1030488248, -1098188298);\n\tWS(-1072457547, -1104871915);\n\tsum1 =\n\t\tW(0, 1018087532, 1014551830, -1143311830, 1031881454) + W(1, 1033102921, 1020957612, -1158925470, 1015585054)\n\t\t+ W(2, -1138749297, 1036550950, 1001512248, -1098112129)\n\t\t+ W(3, -1104222042, -1104597767, -1125431314, 1042534317)\n\t\t+ W(4, -1129333765, -1131367952, -1083142279, 1014989673) + W(5, 1059974718, 1057969217, 1048954301, 1043242379)\n\t\t+ W(6, 983826087, 1050222745, 1055877542, 1020808474) + W(7, -1086706094, -1096646942, -1105443081, -1106542638)\n\t\t+ W(8, 1026100589, -1118152278, -1106883828, 1016760626) + W(9, 1045231050, 1040528910, 1027306868, -1120756612)\n\t\t+ W(10, 1007352484, -1123482688, 1034580622, -1109491581)\n\t\t+ W(11, -1122062610, -1114916930, -1147978606, -1122581117);\n\tsum2 =\n\t\tW(0, -1120473304, -1112539216, -1132295147, -1099708049)\n\t\t+ W(1, -1120301365, -1106531527, -1119309605, -1165429700)\n\t\t+ W(2, 1034530006, 1032795060, 1046686841, 1054832981) + W(3, -1109933894, -1089566811, 1004612697, -1105741108)\n\t\t+ W(4, -1151412702, 1009244103, 1037608248, 1050403530) + W(5, 1051005406, -1106362502, -1114169666, 1026755208)\n\t\t+ W(6, -1124099243, -1115907580, 1020085733, 1033863239)\n\t\t+ W(7, -1107650300, 1030750625, -1130967605, -1146151019)\n\t\t+ W(8, 1026058392, -1114805763, -1120554932, -1154011810)\n\t\t+ W(9, 1036477609, -1122049677, 1028389062, 1026996282) + W(10, -1131120105, 1025202928, 998829429, -1131382687)\n\t\t+ W(11, 1020773937, -1143352615, -1142800679, 1016610669);\n\tWS(1057548396, -1118860492);\n\tsum1 = W(0, 1024314991, 1015464700, 1033090170, 1024068436) + W(1, 1023937802, 1007695803, 1026830221, -1142835770)\n\t\t + W(2, 1024521628, 1035643506, 1022826491, 1044765945) + W(3, 1040253828, 1032416458, 1031527745, 1041535598)\n\t\t + W(4, 1019907062, 1035362560, -1102305323, -1077384746)\n\t\t + W(5, -1095947197, -1110302756, -1110046895, -1106773417)\n\t\t + W(6, -1109277847, 1033181378, 1038789717, -1093016121) + W(7, 1047039772, 1032628147, 1032291149, 1038601945)\n\t\t + W(8, 1042186208, 1019936830, 1047455161, 1050623422) + W(9, 1039235079, 1012944520, 1025595072, 1031404576)\n\t\t + W(10, -1127185475, 1015346289, 1015056043, 1035221881)\n\t\t + W(11, 1019339797, 1030260028, -1124358344, 1039118899);\n\tsum2 = W(0, 1028948662, -1108748842, 1035054379, -1114955281)\n\t\t + W(1, -1123628391, 1033670708, -1113438145, 1009774019)\n\t\t + W(2, -1119520873, 1035535229, 1034598190, 1040844095) + W(3, 1017632867, 1028317650, -1152158269, 1033306906)\n\t\t + W(4, 1040692087, -1128105382, -1105801492, 1058969109)\n\t\t + W(5, -1140061979, -1098716294, -1100355456, -1097137530)\n\t\t + W(6, -1099276378, -1125068566, 1046560183, 1035247795) + W(7, 1037021603, 1041621971, 1042440154, 1045186907)\n\t\t + W(8, 1042585669, -1119570187, -1104135640, -1104363062)\n\t\t + W(9, -1119904127, -1109815486, 1033417138, -1096381982)\n\t\t + W(10, -1108959122, -1105777938, 1040780747, -1115696651)\n\t\t + W(11, -1122498951, 1039115990, -1102421790, 1043903068);\n\tWS(-1111617372, -1089239798);\n\tsum1 = W(0, -1120946745, 1043411666, -1105344783, 1034980559)\n\t\t + W(1, 1035032490, -1102176538, 1042691462, -1106084756)\n\t\t + W(2, -1109363280, -1105933140, -1122482989, -1097138762)\n\t\t + W(3, 1028445691, 1038047807, -1104930291, 1036625252) + W(4, 1036859267, -1100282243, 1033736099, 1040067055)\n\t\t + W(5, -1085774908, 985367106, -1095561837, -1105930796)\n\t\t + W(6, -1107333692, 1036658471, -1096910672, 1063625005) + W(7, 1059841631, 1050659758, 1056206133, 1039222942)\n\t\t + W(8, -1131126919, 1046725686, -1138971218, -1100591479)\n\t\t + W(9, -1101046354, -1099856795, -1114722211, 1033845467)\n\t\t + W(10, 1028471724, -1102252305, 1048148056, -1115573502)\n\t\t + W(11, 1018704810, 1038410359, -1104725204, 1032806392);\n\tsum2 = W(0, 1032901751, -1107914664, 1029069579, 987500422) + W(1, -1107918292, 1041931397, -1106970712, 1026585516)\n\t\t + W(2, -1102980188, 1034775565, -1107463876, -1115674720)\n\t\t + W(3, -1122769714, 1028640927, -1133982193, -1112107626)\n\t\t + W(4, -1097455677, -1079544271, -1107584024, 1066142773)\n\t\t + W(5, 1049477386, -1110827944, 1040943686, 1033119735) + W(6, 1019096213, -1123759676, 1039965269, 1060530292)\n\t\t + W(7, 1039765158, -1133849713, -1110406142, -1129682772)\n\t\t + W(8, 1032175116, -1101940532, 1028816201, 1036298034)\n\t\t + W(9, -1100641824, 1041944181, -1113302080, 1007346649)\n\t\t + W(10, -1112661460, 1048109574, -1102645998, 1048822254)\n\t\t + W(11, -1106440053, -1113520406, 1032469881, -1114426196);\n\tWS(1055684951, -1075449937);\n\tsum1 = W(0, 1025203701, -1109225282, -1105594014, -1102495686)\n\t\t + W(1, -1115277256, -1131312361, 1003392922, -1119401549)\n\t\t + W(2, 1021145317, 1041132226, 1045336591, 1048290762) + W(3, 1046212734, 1033816821, 1042625602, 1032304674)\n\t\t + W(4, -1089325052, -1098148265, -1089314051, -1085251962)\n\t\t + W(5, -1086898788, -1089905605, -1090587428, -1086086859)\n\t\t + W(6, 1050955910, 1048074946, 1059061644, 1063401377) + W(7, 1058388246, 1057949871, 1049257380, 1056447675)\n\t\t + W(8, 1044060206, -1122722677, -1138312640, -1135340574)\n\t\t + W(9, -1108206354, 1012872015, 1013091209, 1030899626)\n\t\t + W(10, 1023449767, -1117792831, 1024771419, 1034487612)\n\t\t + W(11, -1122363216, 1023079171, -1119440554, 1029355212);\n\tsum2 = W(0, 1061277558, 1070915797, 1077465728, 1077005703) + W(1, 1067272551, 1035834095, -1140563054, -1101597023)\n\t\t + W(2, -1075680192, -1078675502, -1072669743, -1071891757)\n\t\t + W(3, -1079654744, -1094224921, -1124876273, -1106967769)\n\t\t + W(4, 1064394375, -1099840736, -1080083122, -1110541808)\n\t\t + W(5, 1034295344, 1034313258, 1044374977, 1056268760) + W(6, 1041412946, 1036217426, 1053075748, 1035413026)\n\t\t + W(7, -1098463344, 1050839735, 1012713199, 1033733408)\n\t\t + W(8, -1097187807, 1041322393, -1098777830, -1105806062)\n\t\t + W(9, 1042040059, -1099205009, 1043077130, -1097742853)\n\t\t + W(10, 1043650757, -1128025338, -1113957037, 1028555409)\n\t\t + W(11, 1035679275, -1113787473, 1015942004, 1036121231);\n\tWS(-1084991020, -1093321377);\n\tsum1 = W(0, -1124603198, 1020905181, 1034567442, 1033810210) + W(1, 1026468027, 1034346016, 1012576759, 1040898454)\n\t\t + W(2, 1041431403, -1106261797, 1012534679, -1100435893)\n\t\t + W(3, -1113177704, 1029015460, -1109083497, 1045957208) + W(4, 1058092855, 1050746614, 1060858482, 1063338984)\n\t\t + W(5, 1057782107, 1050350895, 1047981412, 1051078083)\n\t\t + W(6, -1087194206, -1093664550, -1086211050, -1081371861)\n\t\t + W(7, -1091610836, -1090363161, -1099126963, -1088769118)\n\t\t + W(8, 1031898965, 1020373118, 1037199077, 1028138434) + W(9, 1041359812, 1026545296, 1017607178, -1114891854)\n\t\t + W(10, 1027465426, 1019387090, 942151344, -1130539845)\n\t\t + W(11, 1019123574, 1032894586, 1018549369, 1024075622);\n\tsum2 =\n\t\tW(0, 1049096145, 1050639335, 1060252300, 1068716746) + W(1, 1070836883, 1071114171, 1069477538, 1068968491)\n\t\t+ W(2, -1096421724, -1100344181, -1085369111, -1076762820)\n\t\t+ W(3, -1073687271, -1075542147, -1076870984, -1078719402)\n\t\t+ W(4, -1104462777, 1044471716, -1101216805, 1050347336) + W(5, 1052234046, 1009296899, 1047758574, -1114781860)\n\t\t+ W(6, 1019605429, 1054069324, -1124780213, 1025609425) + W(7, -1096692411, 1043747806, 1026561745, 1035243068)\n\t\t+ W(8, -1107039596, -1112798845, 1041817400, -1099054195)\n\t\t+ W(9, 1029953841, 1030832137, -1135279155, -1140937749) + W(10, 1039363330, -1113551308, 999612981, 1018249637)\n\t\t+ W(11, 1028531297, -1109453871, 1027426027, -1125031723);\n\tWS(-1082530796, 1061926473);\n\tsum1 = W(0, -1111745736, 1030277984, -1123296661, 1039021467)\n\t\t + W(1, -1130604760, 1012520514, -1112767704, 1017586258)\n\t\t + W(2, -1107298323, -1127531019, -1109831840, -1118701125)\n\t\t + W(3, -1101933527, -1114851579, 1016124742, -1131932512)\n\t\t + W(4, 1048819916, 1039611697, 1058045501, -1099048749) + W(5, 1052265202, 1034215157, 1037161440, 1010862879)\n\t\t + W(6, 1033356744, -1113172467, 1035918242, -1088898044)\n\t\t + W(7, -1125679275, 1029808585, -1110952702, 1040689749)\n\t\t + W(8, 1034157517, -1127895905, -1146238814, -1099659681)\n\t\t + W(9, 1032846000, 1005542493, 1024904046, -1114167271)\n\t\t + W(10, -1119982339, 1009757802, -1125062126, 1039341706)\n\t\t + W(11, -1111731430, 1016627083, -1137100912, -1130467695);\n\tsum2 = W(0, -1123675689, 1025856461, -1129839981, 1039506778)\n\t\t + W(1, -1111122039, -1108253250, 1042547871, 1023517501)\n\t\t + W(2, 1027790609, -1115257125, 1041635489, -1087170514)\n\t\t + W(3, 1054414527, 1040911707, -1107819629, -1119501461)\n\t\t + W(4, -1107220732, -1103597907, -1083432255, 1074899174)\n\t\t + W(5, -1087814585, -1119836905, -1108795814, -1120345851)\n\t\t + W(6, -1138688370, 1036222096, -1099581339, 1052206445) + W(7, 1033877978, 1035305654, 1040418607, 974999585)\n\t\t + W(8, -1114685917, -1104487390, -1113019592, -1103205528)\n\t\t + W(9, -1114160943, -1128600489, -1113593105, -1136105250)\n\t\t + W(10, -1131813881, -1138958066, 1015980625, 1015820001)\n\t\t + W(11, 1023501105, -1135082354, 1028405761, 1023691837);\n\tWS(1064809580, 1026007555);\n\tsum1 = W(0, -1117346201, 1012678303, -1112794575, 1024755966)\n\t\t + W(1, -1119597108, -1109792204, 1039580268, -1109340249)\n\t\t + W(2, -1139810490, -1117193870, 1032058104, -1127734554)\n\t\t + W(3, 1040786347, -1106953519, -1120656619, -1123630216)\n\t\t + W(4, 1018638922, 1041509643, -1089321581, -1106321711)\n\t\t + W(5, 1042250009, -1136225478, -1140389406, 1031754384)\n\t\t + W(6, 1046259126, -1116046893, 1058768682, 1057441571) + W(7, -1088983804, 1052663642, 1033398978, 1030125211)\n\t\t + W(8, -1110265860, -1107022182, 1049529906, -1097674775)\n\t\t + W(9, 1052962187, -1105006210, -1138416249, -1114619763)\n\t\t + W(10, -1107316166, 1042684025, -1107194416, -1115653262)\n\t\t + W(11, -1115453338, -1104239151, 1026892022, -1113265368);\n\tsum2 =\n\t\tW(0, 1002173025, 1022454821, -1114052781, 1026488668) + W(1, 1024785122, -1114947733, 1041552522, -1114686018)\n\t\t+ W(2, -1126476274, -1112202702, 1040267060, -1105276944)\n\t\t+ W(3, 1041996701, 1024974628, -1106672600, 1014734543) + W(4, 993251281, 1027055467, -1106967376, 1037292044)\n\t\t+ W(5, 1032247852, -1103384730, 1024347316, 1038837578) + W(6, 1035289805, -1110248161, 1050537246, -1103163514)\n\t\t+ W(7, 1036995069, 1044720036, -1136575544, 1011597497) + W(8, 1026092616, -1106697397, 1051631259, -1119693560)\n\t\t+ W(9, 1026699348, -1113586574, 1012871948, -1113050536)\n\t\t+ W(10, -1119256919, 1035602798, -1119463370, -1109176262)\n\t\t+ W(11, -1123291766, -1103668424, -1104716490, -1124038001);\n\tWS(1065652022, 1032044813);\n\tsum1 =\n\t\tW(0, 1008146233, -1138253430, -1111490857, 1034343482) + W(1, 1027957290, 1037589943, 1035138662, -1130048270)\n\t\t+ W(2, 1024151812, 1033154018, 1037025524, -1098142828) + W(3, -1093711910, 1019326054, -1137243780, 1033030167)\n\t\t+ W(4, -1109382253, -1111423088, -1089787453, 1056996567) + W(5, 1064926206, 1020462798, 1028825917, 1017317515)\n\t\t+ W(6, 1046726755, -1114751985, 1060185520, -1102691401)\n\t\t+ W(7, -1084615165, -1096112169, -1123985530, -1105819364)\n\t\t+ W(8, -1118504831, 1030270670, -1108385813, 1034117937) + W(9, 1042611828, 999245356, -1106962907, -1131349303)\n\t\t+ W(10, -1145994760, 1011776865, 1031075253, -1115595081)\n\t\t+ W(11, -1141498448, 1030480467, 1020535720, -1161641125);\n\tsum2 = W(0, 1006780909, 1032029355, 928839112, -1118040285) + W(1, -1112805367, -1105940221, 1025941308, 1031169874)\n\t\t + W(2, 1018874621, -1106542042, -1114343998, -1106692361)\n\t\t + W(3, 1043467647, 1041450718, 1036583459, -1106475204)\n\t\t + W(4, -1118402441, -1123089851, -1111882995, 1057618964)\n\t\t + W(5, -1114692462, 1035656455, -1122657152, -1181112366)\n\t\t + W(6, -1125742470, 1042324218, -1150379126, 1059562898)\n\t\t + W(7, -1124030112, -1096899429, -1115452253, -1108009053)\n\t\t + W(8, 1022906649, 1032351097, 1030201786, -1096401122)\n\t\t + W(9, -1101041619, -1105376866, 1025207396, -1117532473)\n\t\t + W(10, 1002124531, -1127943559, -1112138839, 1036092239)\n\t\t + W(11, -1119061832, 1038704957, -1115257437, 1040262599);\n\tWS(1060219372, -1086892801);\n\tsum1 = W(0, -1103145773, 1041685441, -1114046300, -1105288038)\n\t\t + W(1, 1036049319, -1105447101, -1153064218, 1037687846)\n\t\t + W(2, 1039153858, -1139059104, -1139626983, 1051743245)\n\t\t + W(3, 1005204005, -1096900831, 1006778518, -1097346218)\n\t\t + W(4, 1051640744, -1111094658, 1060139625, 1048845947) + W(5, 1056234019, 1058595229, 1030114274, 1052830405)\n\t\t + W(6, -1098525574, -1114399172, -1105262039, -1084251893)\n\t\t + W(7, -1132035760, -1097183901, -1095492788, -1105878061)\n\t\t + W(8, -1104573181, 1034492410, -1112320535, 1048366229)\n\t\t + W(9, 1045757805, -1102598303, 1044243314, -1114955456)\n\t\t + W(10, 1018968139, -1114173214, -1114750605, -1119683574)\n\t\t + W(11, -1113866359, -1132035040, 1021887633, -1107291810);\n\tsum2 =\n\t\tW(0, -1116149857, -1115656995, 1030898684, -1101937257)\n\t\t+ W(1, -1172884346, -1108962642, -1122887710, 1035380843) + W(2, 1025241726, 1004099725, 1025926274, 1029996270)\n\t\t+ W(3, 1015423640, -1098527410, -1102965987, -1099100919)\n\t\t+ W(4, -1099180395, -1094029030, 1029208805, -1093188603) + W(5, 1043486640, 1057927618, 1033678913, 1054675670)\n\t\t+ W(6, 1043244905, 1042198638, 1050305603, 1051892024) + W(7, 1010118001, -1111697287, -1106879588, -1115267941)\n\t\t+ W(8, -1108018378, 1030698655, -1105752531, 1032179392)\n\t\t+ W(9, 1042453668, -1110311603, 1043859461, -1124505249)\n\t\t+ W(10, 1036684654, -1113978987, 1030311314, -1143836228)\n\t\t+ W(11, -1107174775, 1032971351, -1114814873, -1114563702);\n\tWS(1054285911, 1050558006);\n\tsum1 = W(0, -1123510162, -1131523010, -1131464621, 1019709806) + W(1, 1029482925, 1019519396, 1008876867, 990268585)\n\t\t + W(2, 1038924416, 1041880394, 1042834130, 1022473868)\n\t\t + W(3, -1100861061, -1099456110, -1103795177, 1023983666)\n\t\t + W(4, -1103298920, -1093800836, -1095165898, 1057683379)\n\t\t + W(5, 1065493943, 1059660975, 1052993120, 1049686449) + W(6, 1049975562, 1050884477, 1056805171, -1101108530)\n\t\t + W(7, -1084744157, -1084827161, -1096422344, -1102767109)\n\t\t + W(8, -1107117058, -1103773453, -1101616339, -1121085405)\n\t\t + W(9, 1044641696, 1037612741, 1041661496, -1112995616)\n\t\t + W(10, -1132690963, 1013663344, 1008580322, -1112183179)\n\t\t + W(11, -1107880231, -1118057053, -1120002940, -1125681410);\n\tsum2 =\n\t\tW(0, -1122499415, -1135750526, 1025808744, 1004729468) + W(1, 1038371609, 1025309219, 1037233345, -1107252608)\n\t\t+ W(2, -1115660402, -1103885919, -1107570715, -1109043837)\n\t\t+ W(3, -1101018403, -1106866200, -1100735475, 1049544712)\n\t\t+ W(4, 1019721643, -1163427536, 1050733408, 1068391994) + W(5, -1088555463, 1029079067, 1034253450, -1147071004)\n\t\t+ W(6, 1052675919, -1111228057, 1050715774, 1068640266)\n\t\t+ W(7, -1109791041, -1082318320, 1048468038, -1092391889)\n\t\t+ W(8, -1134010714, -1097257542, -1097200131, -1098019427)\n\t\t+ W(9, -1104872484, -1103711089, -1096395820, 1032346912)\n\t\t+ W(10, -1107636671, 1043515230, -1113330231, 1035061875)\n\t\t+ W(11, 1015805682, -1134559274, 1043601518, -1139706642);\n\tWS(-1090663639, -1077388844);\n\tsum1 = W(0, 1018174482, -1160081154, -1125628059, -1132569784)\n\t\t + W(1, -1117916196, -1117849353, 1021610031, -1122253105)\n\t\t + W(2, -1118693311, 1029100670, -1120731528, -1106887239)\n\t\t + W(3, -1106415899, -1097169074, -1146324700, -1168966176)\n\t\t + W(4, -1093711755, -1098783931, -1088582516, -1095941442)\n\t\t + W(5, -1087125152, -1094690684, -1097735927, -1093052224)\n\t\t + W(6, 1049109025, 1046071575, 1052420297, 1068562223) + W(7, 1064382514, 1058209900, 1048904111, 1056110513)\n\t\t + W(8, 1040639418, 1021012498, -1106387497, 986381179)\n\t\t + W(9, -1096200966, -1116837948, 1025702951, -1121509238)\n\t\t + W(10, 1010315758, -1115518041, -1181480889, 1034527238)\n\t\t + W(11, 974332196, 1015836076, -1123641014, 1025570188);\n\tsum2 = W(0, 1034436941, -1113720588, 1024698569, -1106229774) + W(1, 1036635696, 1046234567, 1052080385, 1034351318)\n\t\t + W(2, -1094381136, 1042206203, -1096498964, -1082651758)\n\t\t + W(3, -1065300211, -1070759890, -1090746117, -1089089289)\n\t\t + W(4, 1032181918, 998633097, 1057336919, 1076874404) + W(5, 1081990850, 1049370102, -1114040834, 1035723536)\n\t\t + W(6, 1038416019, -1112936962, 1044225483, 1035551973) + W(7, 1041430251, 1045207615, 1038285588, -1119691531)\n\t\t + W(8, -1157362266, 1041189037, -1114037642, 1029476436)\n\t\t + W(9, 1035032611, 1036601034, -1115422836, -1130950394)\n\t\t + W(10, 1040127243, -1108577062, -1122557473, 1033287923)\n\t\t + W(11, 1024588020, 1015731519, -1155116306, 1031958369);\n\tWS(-1080363926, -1071486509);\n\tsum1 = W(0, 1035667824, -1106562756, 1048836261, -1099668353)\n\t\t + W(1, 1041756943, 1034350288, -1111757455, 1036008540)\n\t\t + W(2, -1117755862, -1102851061, 1026770536, -1096598034)\n\t\t + W(3, -1111989629, -1117155588, -1106686285, -1110305168)\n\t\t + W(4, 1058850627, 1044522508, 1060900423, 1062774732) + W(5, 1060314417, 1058954340, 1047827972, 1058323473)\n\t\t + W(6, -1089812638, -1098855847, -1094273901, -1081351512)\n\t\t + W(7, -1091724133, -1097309107, -1089979637, -1097705308)\n\t\t + W(8, -1119781738, -1124105919, -1136163052, 1019768789)\n\t\t + W(9, 1036217472, 1034476769, 1034808863, -1112569431)\n\t\t + W(10, 1033333673, -1122920906, 1034167779, -1100720585)\n\t\t + W(11, 1023569595, 1037864032, -1108224543, 997120104);\n\tsum2 = W(0, -1130221439, 1039521143, -1106623296, 1040812416)\n\t\t + W(1, -1108121630, 1011405671, 1024610419, -1120568012)\n\t\t + W(2, 1026473921, 1040027805, -1103850305, 1044422007) + W(3, 1033782288, -1112409330, 1042204829, 1007920671)\n\t\t + W(4, -1098631230, 1049962270, -1102633929, 1053913409)\n\t\t + W(5, 1041179127, -1118313372, 1033589003, -1105557487) + W(6, 1059210683, 1037922688, 1032319554, 1075309200)\n\t\t + W(7, 1051007822, -1114991064, 1064519547, 1041664007) + W(8, 991949852, -1128609979, 1032322677, -1093367457)\n\t\t + W(9, -1128820939, 1042490244, -1108707286, -1108726636)\n\t\t + W(10, -1088875775, 1043008084, -1081254616, -1078110278)\n\t\t + W(11, -1087823621, -1085620101, 1038944538, -1097283302);\n\tWS(-1085146860, -1078432897);\n\tsum1 =\n\t\tW(0, 1000247468, 1037132754, -1107087079, 1043827999) + W(1, -1105171356, 1034542459, -1139389265, 1019250012)\n\t\t+ W(2, -1149696569, -1105005939, 1047641075, -1094624073)\n\t\t+ W(3, 1038438012, -1098392071, 1037791108, -1111893867) + W(4, 1046594056, 1049101493, 1036712721, 1056540903)\n\t\t+ W(5, 1056427897, 1052522438, 1039493090, 1053002294) + W(6, -1105608437, -1092242085, 1034057408, -1091288646)\n\t\t+ W(7, -1092984875, -1099696227, -1123704450, -1096292923)\n\t\t+ W(8, 1029982264, 1035020227, 1000135432, -1097712673) + W(9, 1048401189, -1113847620, 1041969240, -1109486882)\n\t\t+ W(10, -1128935441, -1114749360, 1041253327, -1098691603)\n\t\t+ W(11, 1031740017, -1124493285, 1035876258, -1117863020);\n\tsum2 = W(0, 981650725, -1123188651, -1132394336, 1019312288) + W(1, 1007032529, 1019035800, -1139057577, 994405618)\n\t\t + W(2, 1022634928, -1141995321, -1159373413, 1040593594)\n\t\t + W(3, -1125839148, -1144628769, -1130558040, 996479090)\n\t\t + W(4, -1122722467, 1043118137, -1111962066, -1085264893)\n\t\t + W(5, 1035586791, 1030456162, 1025167346, -1121727683)\n\t\t + W(6, -1134931805, 1038372119, -1088039805, -1062981933)\n\t\t + W(7, -1088420516, 1033594923, -1132235322, -1141102409)\n\t\t + W(8, -1114801830, -1108690895, 1059960197, 1086226578)\n\t\t + W(9, 1052041256, -1121903247, -1127116104, 1010205301)\n\t\t + W(10, 1035155349, -1113558499, -1123558064, -1122982849)\n\t\t + W(11, 1041973847, -1112866008, 999416881, 1015327588);\n\tWS(1065314092, 1028007882);\n\tsum1 =\n\t\tW(0, 1031315399, 1009229913, -1129846167, 1030512684) + W(1, 1027211107, 1024491495, -1133667543, 1020076159)\n\t\t+ W(2, -1118910333, 1044274103, 1040482617, 1028502523) + W(3, -1098008831, -1114626726, 1030034106, 1035646611)\n\t\t+ W(4, -1110071882, -1091088835, -1081937298, 1057125791) + W(5, 1063505604, 1056913060, 1045615294, 1046315392)\n\t\t+ W(6, 1027958726, 1049048403, 1058342964, 1041882615)\n\t\t+ W(7, -1081007746, -1094994912, -1103714125, -1120947018)\n\t\t+ W(8, -1132049297, -1098774521, -1097400260, -1128387300)\n\t\t+ W(9, 1042307230, 1046624506, 1018202602, -1116178789) + W(10, 1030345978, 1015648546, 1033820695, -1123750794)\n\t\t+ W(11, -1119357859, -1108219417, 1021380405, -1113806211);\n\tsum2 = W(0, -1105494348, 1042860341, 1034523914, 1032509803)\n\t\t + W(1, 1037500440, -1136462181, -1115571726, 1030953968)\n\t\t + W(2, 1051114204, -1095282678, -1099570184, -1092355888)\n\t\t + W(3, -1093487707, -1101634066, 1038218158, -1144657738)\n\t\t + W(4, -1106549278, -1095274416, -1097084890, 1068351366)\n\t\t + W(5, 1045336627, -1093371043, 1025607496, -1098135458)\n\t\t + W(6, -1106413411, -1115620988, -1100406176, 1061966336)\n\t\t + W(7, 1064976080, -1095768559, 1051011462, -1103066203)\n\t\t + W(8, 1026636954, 1032482885, -1103782738, -1111829172)\n\t\t + W(9, -1099957245, 1011878641, -1122142689, 1046841453)\n\t\t + W(10, -1101805730, -1123651604, 1033985372, 1041181693)\n\t\t + W(11, -1105149847, 1041978329, -1106959075, 1034424520);\n\tWS(-1100053422, 1042143034);\n\tsum1 =\n\t\tW(0, -1121193300, 1027006179, -1116784408, -1124403186) + W(1, 1032959000, 1036096698, -1106874909, -1140087089)\n\t\t+ W(2, 1038907933, -1101648146, 1051061595, -1096312949) + W(3, 1021329739, -1104405590, 1032316755, 1026338531)\n\t\t+ W(4, 1037214192, 1052804861, -1092953078, 1063691363) + W(5, 1057610578, 1046101531, 1033832353, 1044117027)\n\t\t+ W(6, -1104157285, -1116788520, -1115727182, -1094770533)\n\t\t+ W(7, -1085255924, 1032460934, -1101777344, -1123976854)\n\t\t+ W(8, 1003265009, -1105088109, 1044603252, -1110178331)\n\t\t+ W(9, 1042273837, -1099699080, 1042741769, -1110400285)\n\t\t+ W(10, 927491180, 1036085839, -1112320669, -1132796507)\n\t\t+ W(11, -1129217311, 1029210945, -1111566277, 1023324661);\n\tsum2 =\n\t\tW(0, -1141740532, -1141563308, -1146742484, 1037326381) + W(1, -1100634945, -1112991637, 998071241, 1028661660)\n\t\t+ W(2, -1127364827, -1115378106, -1097895309, -1089066292)\n\t\t+ W(3, 1074712949, 1036278807, 1023404119, 1032269699) + W(4, 1016858659, 1014774982, 1061549017, -1086943216)\n\t\t+ W(5, -1081904953, 1016249563, -1104500239, -1118089334)\n\t\t+ W(6, 1019476887, 1033910688, -1098904537, -1087533486) + W(7, 1051894188, -1105464222, 1039001405, 1002948788)\n\t\t+ W(8, 1027610232, -1098709711, 1048121474, 1044386108) + W(9, 1035948687, 1034738839, -1111082062, 1032376859)\n\t\t+ W(10, -1114104878, 1038463125, 1009723338, -1128378528)\n\t\t+ W(11, -1114075451, 1023041183, 1028418264, -1116656881);\n\tWS(1064553004, -1122811923);\n\tsum1 =\n\t\tW(0, -1129171987, 1032276908, -1113233767, 1041762428) + W(1, -1110071667, 1027123610, -1123823416, 1026480898)\n\t\t+ W(2, 1031404000, -1105326008, 1049333812, -1095271692)\n\t\t+ W(3, 1021654775, -1101813124, 1034262350, -1114787413) + W(4, 1045766677, 1049463355, 1036005443, 1059787495)\n\t\t+ W(5, 1057980603, 1052117804, 1041561742, 1051913520) + W(6, -1102182210, -1094389820, 974120215, -1088583546)\n\t\t+ W(7, -1092394330, -1097358280, -1111517243, -1097569834)\n\t\t+ W(8, 1024429036, 1026361994, 1035186995, -1095666629) + W(9, 1048809333, -1132328890, 1043990330, -1107060706)\n\t\t+ W(10, -1144455651, -1121595412, 1034062296, -1100003363)\n\t\t+ W(11, 1024774373, -1125809241, 1035275874, -1116630377);\n\tsum2 =\n\t\tW(0, 1027128731, -1153474964, 1032141903, -1114194268) + W(1, 1010972171, -1128303982, 1020076945, -1125252319)\n\t\t+ W(2, -1118374135, 1014938475, -1106631533, 1049333862)\n\t\t+ W(3, -1117272233, 1026850075, -1130317298, 1023253865)\n\t\t+ W(4, 1034513610, -1107487108, 1042187602, -1091768288) + W(5, 1029258819, -1112584656, 1019094573, 1030375545)\n\t\t+ W(6, -1123174378, -1123472496, 1054134699, 1082046784)\n\t\t+ W(7, 1048672371, 1015595275, -1143083862, -1112246350)\n\t\t+ W(8, 1026835315, 1026726549, -1092438474, -1066065893)\n\t\t+ W(9, -1108402828, -1129520676, 1012988295, 1033146096)\n\t\t+ W(10, -1114420605, 1026647445, 1008281595, 1032174407)\n\t\t+ W(11, -1107223380, 1020663133, 1016020771, -1120189048);\n\tWS(1066855734, -1119441794);\n\tsum1 = W(0, -1127562022, -1123770274, -1115364812, -1108591004)\n\t\t + W(1, -1109630903, 1012450637, -1111453929, -1112819014)\n\t\t + W(2, 1039804281, -1106380690, 1049486942, 1052921753) + W(3, 1002857256, 1049080999, -1123146086, 1045715313)\n\t\t + W(4, -1090674092, -1096623933, -1088928155, -1086271011)\n\t\t + W(5, -1088126629, -1098448030, -1095526376, -1090620137)\n\t\t + W(6, 1057948125, 1041520634, 1058254390, 1066610309) + W(7, 1047590014, 1058670697, 1020669183, 1057080301)\n\t\t + W(8, -1113289318, -1102744925, -1126493725, -1125400685)\n\t\t + W(9, -1097419497, 1027654745, -1103558716, -1122765265)\n\t\t + W(10, 1040603681, -1104646487, 1030330554, 1047144630)\n\t\t + W(11, -1118729135, 1040353710, -1110153949, 1038000005);\n\tsum2 =\n\t\tW(0, 1029773001, -1098400772, 1049403575, -1106957817) + W(1, 1040180418, -1125940042, -1121768997, 1035657430)\n\t\t+ W(2, 1045848843, -1098127734, 1040542896, -1113384065)\n\t\t+ W(3, -1098054809, 1051521525, -1098090743, 1035815778) + W(4, -1100354950, 985414438, -1094506611, 1065317808)\n\t\t+ W(5, -1102424534, 1038107076, 1030043463, -1104826760) + W(6, 1042255280, -1114969170, 1044461531, 1063282493)\n\t\t+ W(7, -1111953320, 1052337139, -1098581045, 1052586351)\n\t\t+ W(8, 1031741567, -1101857955, 1033605854, -1099888837)\n\t\t+ W(9, -1148110913, -1125555808, 1034608926, -1105779304)\n\t\t+ W(10, -1106457511, -1121665039, -1106685198, -1090380876)\n\t\t+ W(11, -1097784009, 1010307405, -1105861523, -1121200133);\n\tWS(1024108216, 1053619151);\n\tsum1 =\n\t\tW(0, -1110237276, 1036125123, -1105593599, -1116690717)\n\t\t+ W(1, -1138403916, -1118424632, -1118568038, -1117554448)\n\t\t+ W(2, -1117217830, -1104025987, 1053313098, -1107833238)\n\t\t+ W(3, -1112296045, -1108171422, 1025019530, -1113883668) + W(4, 1029541828, 1035829669, 1040682969, 1058976450)\n\t\t+ W(5, -1104638900, 1053496066, 997886569, 1047703644) + W(6, -1116974327, 1029841740, -1093167724, 1049118258)\n\t\t+ W(7, -1102593951, -1123704112, -1107943218, -1108512765)\n\t\t+ W(8, 1028000106, -1125285423, 1031701731, -1094097902)\n\t\t+ W(9, 1055269059, -1100830255, 1036129823, -1109656827) + W(10, 997960357, -1115997186, 1020700860, 1017239158)\n\t\t+ W(11, -1122615091, 1029941429, -1111217181, 1020926429);\n\tsum2 =\n\t\tW(0, -1119993039, 1038893624, -1105602869, -1106354535) + W(1, 1032998629, 998835515, -1119543359, 1026155597)\n\t\t+ W(2, -1109450011, -1096262037, 1055566572, -1158461197)\n\t\t+ W(3, -1117939535, -1108137959, 1037096144, -1114868339)\n\t\t+ W(4, 1040401784, 1053717996, 1043380434, -1105416337) + W(5, -1087999087, 1027244587, -1117843291, 1031605777)\n\t\t+ W(6, -1106582025, -1117988753, -1092886002, 1072933379)\n\t\t+ W(7, -1083385663, 1045359897, -1101171319, 1022787365) + W(8, 1033614749, 1000703247, 1034388956, -1081255560)\n\t\t+ W(9, 1066426555, -1093783038, 1051461624, -1100938466)\n\t\t+ W(10, -1147493015, -1114388777, 1043473668, 1043342555)\n\t\t+ W(11, -1094544057, 1045623937, -1102892249, 1041102940);\n\tWS(1062840044, 1036517115);\n\tsum1 =\n\t\tW(0, 1027882709, -1102360361, 1037386637, 1026327034) + W(1, -1102333276, 1042539613, -1113170154, -1117867630)\n\t\t+ W(2, 1024218619, -1119309706, 1051294017, -1105387538) + W(3, 1045232110, 1042423170, -1107171938, 1042893141)\n\t\t+ W(4, -1088734638, 1031157223, -1082181941, -1087289600)\n\t\t+ W(5, -1089919726, -1088061047, -1126992520, -1098512042)\n\t\t+ W(6, 1057788973, 1045291130, 1057574554, 1064725383) + W(7, 1056789371, 1052153154, -1124580994, -1109192172)\n\t\t+ W(8, 1032695796, -1107257205, 1039133128, 1024151288) + W(9, -1131902346, 1045762482, -1130270357, 1047580087)\n\t\t+ W(10, -1105941698, 1032367183, 1015412087, -1102302982)\n\t\t+ W(11, 1046746652, -1110282969, -1116552186, 1032060742);\n\tsum2 =\n\t\tW(0, -1128425377, 1027402769, -1122701285, 1029460017) + W(1, -1128656941, 1015114546, -1131912907, 1012677721)\n\t\t+ W(2, -1106124336, -1123408727, 1035952055, -1106291502)\n\t\t+ W(3, 1034330078, -1137130753, -1151273092, -1141059698)\n\t\t+ W(4, -1106789449, 1046361983, 1033758045, -1092942672) + W(5, 1022825967, 1043050798, 1026393205, -1114857397)\n\t\t+ W(6, -1116881359, 1040877836, -1092736894, -1089281400)\n\t\t+ W(7, 1067937621, 1057367901, -1100743964, -1116376233)\n\t\t+ W(8, -1108203604, 1041799035, -1110885432, 1058715791)\n\t\t+ W(9, 1060265099, -1090127289, -1100147508, -1085394823)\n\t\t+ W(10, -1154187588, 1037669599, -1106801609, 1044648045)\n\t\t+ W(11, -1104725901, -1099584998, -1114467924, 1048436512);\n\tWS(-1090906199, 1032077706);\n\tsum1 = W(0, -1133027020, -1121893314, 1023318639, 1029445080)\n\t\t + W(1, 1001128051, 1034316233, -1103958128, 1035906358)\n\t\t + W(2, -1114971356, 1044790618, -1123234602, 1040694938)\n\t\t + W(3, 1035215242, -1102125462, 1043268297, -1122145747)\n\t\t + W(4, 1042474992, -1113284386, 1041326284, -1105269270)\n\t\t + W(5, -1090300845, 1049843289, -1131346756, 1025511402)\n\t\t + W(6, -1109782777, 1033127972, -1090554926, 1053731809)\n\t\t + W(7, 1054234875, -1098556565, -1121911775, -1113919963)\n\t\t + W(8, 1040233361, -1105262125, 1034823031, -1109230339)\n\t\t + W(9, -1098565414, 1042417542, 1026215817, -1122686272)\n\t\t + W(10, -1113511763, 1025873725, 1011115622, -1129412204)\n\t\t + W(11, 1038160135, 1018477632, 1009497794, 998364239);\n\tsum2 = W(0, 1010874613, 1031993168, -1110586713, 1035954309)\n\t\t + W(1, 1034349301, -1122071401, -1140127141, 1029284667)\n\t\t + W(2, 1030375188, -1098558104, -1116546039, -1089737673)\n\t\t + W(3, -1094899703, 1053685859, -1108774266, -1124583674)\n\t\t + W(4, -1115235366, 1051363302, 1056517150, 1057138262)\n\t\t + W(5, -1098486858, -1093546729, 1034072089, -1122424073)\n\t\t + W(6, 1049471257, -1094785947, 1031272431, -1102658594)\n\t\t + W(7, -1112892354, 1046184196, -1109252950, 1037904141)\n\t\t + W(8, -1100352469, 1040320218, -1111763071, 1043402933) + W(9, 1057577914, 1039716432, -1122970680, 958822899)\n\t\t + W(10, 1040126787, -1131978284, -1124433226, 1027656919)\n\t\t + W(11, -1092308561, -1116345243, 1016915650, -1140678181);\n\tWS(1065971990, -1117349785);\n\tsum1 = W(0, 1041698888, -1112126136, 1034826515, -1129568652)\n\t\t + W(1, -1109843230, 1024013025, 1009653886, -1137279078)\n\t\t + W(2, -1103591502, 1043874709, -1101299034, -1186542860)\n\t\t + W(3, 1041410157, -1159955630, 1030113747, -1120752640)\n\t\t + W(4, -1130045402, 1044992637, -1083999976, -1081978560)\n\t\t + W(5, -1085461041, -1090063736, -1097631850, -1094129699)\n\t\t + W(6, 1049080916, 1047240445, 1060703412, 1061790267) + W(7, 1058214583, 1059365054, 1049303674, 1052607100)\n\t\t + W(8, 1009208654, -1121869537, -1123043996, 1028920692)\n\t\t + W(9, -1105683576, 1011681824, -1125202109, 1021258909)\n\t\t + W(10, 1021475879, -1134810027, -1144695867, 1017436104)\n\t\t + W(11, -1131209785, -1139574520, 1000157667, 1022839599);\n\tsum2 = W(0, -1117014919, -1130364155, -1106662873, -1114007102)\n\t\t + W(1, 1049348603, -1111037227, 1016435713, 1035610526)\n\t\t + W(2, -1073720352, -1086725672, 1069712606, 1062079613)\n\t\t + W(3, -1102930718, 1020707077, -1114426132, 1034066723)\n\t\t + W(4, -1104300581, -1091483554, 1061376514, 1060429625)\n\t\t + W(5, -1098979910, -1091915359, 1043583392, -1091474650)\n\t\t + W(6, 1055286111, -1109695767, -1114136197, 1052661025)\n\t\t + W(7, -1131131469, 1050631696, -1112682766, -1112601210)\n\t\t + W(8, -1105567211, 1032269150, -1138351682, 1018497014)\n\t\t + W(9, 1032920333, -1117367449, -1122101547, 1039950258)\n\t\t + W(10, -1108683793, 1033653176, -1115525434, 1043366723)\n\t\t + W(11, -1107942477, -1139459182, -1122885189, 1026792554);\n\tWS(-1087438700, -1079683283);\n\tsum1 =\n\t\tW(0, 1017584527, -1126645293, 1024510860, -1126938201) + W(1, 1025818403, -1163276521, 1040771729, -1160528892)\n\t\t+ W(2, -1111085935, -1110290014, 1033919541, 1049726143) + W(3, 1042036038, -1114444262, 1029908410, 1035428627)\n\t\t+ W(4, -1097724786, -1098381907, -1083731542, -1081500983)\n\t\t+ W(5, -1097215121, -1091706404, -1097070911, -1097940968)\n\t\t+ W(6, 1052950249, 1053593812, 1063649365, 1059087538) + W(7, 1052548297, 1057898452, 1045403069, 1052829673)\n\t\t+ W(8, -1112145065, -1106211842, 1003633557, 1023563130)\n\t\t+ W(9, 1019377518, -1104008328, -1115067299, 1032435766)\n\t\t+ W(10, 1032156829, -1129163939, -1118260846, -1120786763)\n\t\t+ W(11, -1116189667, 1023503580, -1112674412, 1015355644);\n\tsum2 = W(0, 1027460995, -1126036613, 1029366028, -1129309981) + W(1, 1020875062, 988377354, -1109676838, 1030688918)\n\t\t + W(2, -1139353737, -1172793556, 1021322407, -1097919394)\n\t\t + W(3, -1121912528, 1034370211, -1137199485, -1107628664)\n\t\t + W(4, -1116062036, 1041340702, 1050063273, 1055277098)\n\t\t + W(5, -1106551211, 1041415105, -1128558209, -1134721053)\n\t\t + W(6, -1105887481, 1031879973, -1101108606, 1009470709) + W(7, 1047064096, 1034815104, 1034836242, 1049845283)\n\t\t + W(8, 1043084390, -1108443334, 1031078409, 1041616760)\n\t\t + W(9, -1107655532, 1018545561, 1014245687, -1104117922)\n\t\t + W(10, -1112909236, -1144584219, -1116288208, -1099143154)\n\t\t + W(11, -1100042276, -1108610892, -1111876576, -1123449114);\n\tWS(1044595630, -1081949232);\n\tsum1 =\n\t\tW(0, 1039675598, -1114551286, 1008233858, -1121252161) + W(1, 1033942172, -1122512668, 1026205083, -1118876117)\n\t\t+ W(2, -1112185757, 1041771076, -1113654239, 1036138408) + W(3, 1043328887, 1047911808, 1028532559, 1051948425)\n\t\t+ W(4, -1088266627, -1144202605, -1106609306, -1087961804)\n\t\t+ W(5, -1087619944, -1086197995, -1087181441, -1079365891)\n\t\t+ W(6, -1103352647, 1058269731, 1055957016, 1060473075) + W(7, 1062639593, 1055667963, 1042300482, 1051816684)\n\t\t+ W(8, 1051863744, -1102436935, 1041931682, -1105147684) + W(9, 1002098271, -1111264410, 1038991809, 1047648830)\n\t\t+ W(10, -1115854735, -1130126796, 1017898629, 1041818984)\n\t\t+ W(11, -1130413359, 1032948860, -1115140949, 1035539513);\n\tsum2 =\n\t\tW(0, 1050752765, -1102559074, 1004621594, -1106905815) + W(1, 1038134564, -1114858390, 999530010, -1104442024)\n\t\t+ W(2, -1087877559, 1042152886, -1095393630, -1106434273)\n\t\t+ W(3, -1099723068, 1036662936, -1101776331, 1054232067) + W(4, -1089125923, 1035361880, 1058416370, 1058355794)\n\t\t+ W(5, 1056388755, 1040360076, -1106345832, 1034476952) + W(6, 1063798323, 1052128007, 1062325475, -1120474523)\n\t\t+ W(7, 1051681161, -1096401119, -1106373450, -1089943559)\n\t\t+ W(8, 1013490077, -1090156566, -1094287538, -1101206197)\n\t\t+ W(9, -1100293430, -1104699402, 1048788631, -1113690608)\n\t\t+ W(10, -1098786735, 1029952535, -1116454071, 1025568531)\n\t\t+ W(11, 1009033997, 997069429, -1117506479, 1019208527);\n\tWS(-1082323244, 1081334754);\n\tsum1 =\n\t\tW(0, 1017652669, 1026074030, 1026308835, -1139023631) + W(1, -1124784756, -1157466090, -1151223253, -1123067319)\n\t\t+ W(2, -1114671162, -1101582293, -1102225205, -1128122150)\n\t\t+ W(3, 1047028384, 1041367009, 1037350457, 1018518877) + W(4, 1045686283, 1051997878, 1056290627, -1109179969)\n\t\t+ W(5, -1088067773, -1090935975, -1100014755, -1100605637)\n\t\t+ W(6, -1100397239, -1097273854, -1091487775, 1033600923) + W(7, 1058585755, 1058457225, 1047302995, 1040259816)\n\t\t+ W(8, 1040334760, 1036251335, 1044247257, 1034603313) + W(9, -1098471302, -1104671877, -1113240670, 1007040336)\n\t\t+ W(10, -1120290385, 1010893986, -1114193219, 1015477828)\n\t\t+ W(11, 1027532986, 1028455628, 1023216600, -1167442276);\n\tsum2 =\n\t\tW(0, 1021161720, -1130912565, -1130074229, -1117040706) + W(1, 1025588007, 1012731209, -1117264939, 1035821810)\n\t\t+ W(2, 1034310052, -1120070653, 1013066141, -1097167140) + W(3, -1126989997, 1035986228, 979500482, -1131150309)\n\t\t+ W(4, 1028060302, 1057895756, 1050008660, -1077198236) + W(5, 1036249174, 1061480822, 1036420478, -1114248001)\n\t\t+ W(6, -1111691904, 1060473449, 1048707954, -1071981659) + W(7, 1055589119, 1068029984, 1025639810, -1104930835)\n\t\t+ W(8, -1117456161, -1103940220, 1041027109, -1101172514)\n\t\t+ W(9, 1014637039, 1014223793, 1027808652, -1128414380)\n\t\t+ W(10, -1120681063, 1030806761, -1131293055, 1009545637)\n\t\t+ W(11, 1035622377, -1130249456, -1120874755, 1036288471);\n\tWS(1053726551, 1012659382);\n\tsum1 = W(0, 1032083097, -1115995457, 1025061558, -1122031383)\n\t\t + W(1, 1038196358, -1115071689, -1130575936, -1113099877)\n\t\t + W(2, -1106638998, 1034541187, -1115280977, -1104507249)\n\t\t + W(3, -1114143426, 1029764374, 1031225348, -1102798468)\n\t\t + W(4, -1098702088, -1098027112, -1088652495, -1092902123)\n\t\t + W(5, -1085882325, -1097451113, -1098237300, -1111014420)\n\t\t + W(6, 1047871676, 1032148771, 1060231518, 1065996118) + W(7, 1058126194, 1059563219, 1035470703, 1054581342)\n\t\t + W(8, 998886703, 1042659740, -1106688851, -1104094145)\n\t\t + W(9, -1102012910, -1121352461, -1128714910, 1000597622)\n\t\t + W(10, 1022035144, -1112198366, 1034668492, 1024148149)\n\t\t + W(11, 1010989620, 1012420282, -1123786037, 1024134712);\n\tsum2 = W(0, -1124504165, 1044199209, -1105768285, 1030597508)\n\t\t + W(1, -1097181409, 1040834484, -1106395293, 1038991009)\n\t\t + W(2, 1043258069, -1105860909, -1149580326, 1054859448)\n\t\t + W(3, 1065166573, 1012576825, -1091772000, -1077787203)\n\t\t + W(4, -1119272862, -1096303760, 1030851358, 1057797022)\n\t\t + W(5, 1062380695, -1116955554, -1113754765, -1098893101)\n\t\t + W(6, -1120765402, 1027333462, -1110802573, 1040041196)\n\t\t + W(7, 1017534493, -1108797661, 1042765191, -1110880129)\n\t\t + W(8, -1132584009, -1112573193, 1028533186, 1035436142)\n\t\t + W(9, -1141430739, 1032147286, -1113752657, -1120959090)\n\t\t + W(10, -1130103221, 1030769098, -1111917317, 1033418125)\n\t\t + W(11, -1140263257, -1126074797, 1020067757, -1136443945);\n\tWS(-1091585367, -1096979755);\n\tsum1 = W(0, -1125210148, -1121704545, -1120024086, -1106223422)\n\t\t + W(1, 1027649645, -1106879908, 1033259600, -1108105765)\n\t\t + W(2, -1104771642, 1041680018, 1043362647, 1048656073)\n\t\t + W(3, 1038801018, -1103521718, -1106174833, 1031226898)\n\t\t + W(4, -1104387016, -1093500244, -1085845307, -1086139981)\n\t\t + W(5, 971788283, -1124812374, 1011346436, -1119913673) + W(6, 1039960904, 1056326757, 1060708396, 1060053831)\n\t\t + W(7, -1115241635, 1040958787, 995843043, 1040930453) + W(8, 1043768271, -1114046313, 1022927067, -1105827043)\n\t\t + W(9, -1120254754, 1038747748, -1118768800, 1040461604)\n\t\t + W(10, -1127914889, -1113011982, -1140249314, -1132509525)\n\t\t + W(11, 1027284814, 1026834103, -1115807705, 1029803545);\n\tsum2 =\n\t\tW(0, 1007158722, -1117465525, 1020157105, -1115575087) + W(1, 1029731993, -1115951245, 1042169362, -1111020797)\n\t\t+ W(2, 1004004293, 1030693613, 1007550482, 1032793866) + W(3, -1104867994, -1111503366, -1101768383, 1042858280)\n\t\t+ W(4, -1123076619, 1034532408, -1101572236, 1059720067)\n\t\t+ W(5, -1112732963, -1098900155, -1132362761, -1101011815)\n\t\t+ W(6, -1109929145, -1107544976, -1110988335, 1067665797) + W(7, 1048427228, 1058832170, 1029991341, 1043396912)\n\t\t+ W(8, -1104848259, -1095482533, -1085485924, -1090269083)\n\t\t+ W(9, -1135504754, 1037004208, -1108400441, 1041064016)\n\t\t+ W(10, 1045822378, -1130708853, 1036333634, -1111111456)\n\t\t+ W(11, -1105802165, -1115747431, -1132122165, -1126685993);\n\tWS(1050761175, 1067771859);\n\tsum1 = W(0, 1007679755, 1016344868, -1111212068, 1035369236) + W(1, -1114152399, 1027679203, 1024513697, 1023429051)\n\t\t + W(2, -1103008542, 1051881455, -1113694143, 1057165115)\n\t\t + W(3, 1030154052, -1119705863, 1037582923, -1106945041)\n\t\t + W(4, -1117542415, -1099208581, -1094852820, -1086714990)\n\t\t + W(5, -1087862176, -1098820035, -1101037788, -1098056967)\n\t\t + W(6, 1040506400, 1050438683, 1036449755, 1067282489) + W(7, 1049754336, 1030273979, 1048082428, 1020854026)\n\t\t + W(8, -1107587308, -1138473483, -1102372368, 1045850761)\n\t\t + W(9, -1112794889, -1111030523, -1114576136, 1000524418)\n\t\t + W(10, -1123566389, 1035136294, -1110750261, 1047098321)\n\t\t + W(11, -1108921199, -1158006009, 1025557440, 1029171882);\n\tsum2 =\n\t\tW(0, -1108377721, 1043256577, -1098471532, 1048495965) + W(1, -1103576309, 1036658009, -1107738492, 1030436882)\n\t\t+ W(2, 1042939389, -1092756549, -1140040329, -1094992475)\n\t\t+ W(3, 1017276157, -1104050853, 1032200565, -1104348148)\n\t\t+ W(4, -1118508723, -1136988785, -1099870420, 1064902851)\n\t\t+ W(5, 1045749581, 1045838269, -1110226959, 1042649061) + W(6, -1101760284, 1050996294, -1098704018, 1062859454)\n\t\t+ W(7, -1089477514, -1157061765, 1046491511, -1106567852)\n\t\t+ W(8, 1037932369, -1104406221, 1015984185, -1098855018)\n\t\t+ W(9, 1025174042, -1121418697, -1106492592, 1027657606)\n\t\t+ W(10, -1111488356, 1040203060, -1103619810, 1045571731)\n\t\t+ W(11, 1025902034, -1107737652, 1044444185, -1105647758);\n\tWS(1057448172, 1069108917);\n\tsum1 =\n\t\tW(0, 1025232554, -1128422002, 1032607415, -1106129908) + W(1, -1141856298, 1015221011, 1010040610, 1026592994)\n\t\t+ W(2, -1116799928, -1123655391, -1111298160, -1119092894)\n\t\t+ W(3, 1044964179, -1128617181, -1116425884, 1015937075)\n\t\t+ W(4, -1100727837, 1037047614, -1102160962, 1036246919)\n\t\t+ W(5, -1088316592, -1116622467, 1027658969, -1102536008)\n\t\t+ W(6, 1055215485, -1104723136, 1056783106, -1165535249) + W(7, 1049606186, 1044617768, -1132120236, 1042573835)\n\t\t+ W(8, -1106508548, 1040448906, -1103004521, 1040745899)\n\t\t+ W(9, -1132962087, -1103456342, 1037741920, -1118303623)\n\t\t+ W(10, -1139419762, 1006660815, 1016236833, -1123853933)\n\t\t+ W(11, 1016605067, -1160895193, 1018376479, -1120915345);\n\tsum2 =\n\t\tW(0, -1128749003, -1091479855, -1124909389, 1030767422) + W(1, 1028475536, -1118686225, -1133507353, 1003197653)\n\t\t+ W(2, 1042697161, 1061865996, 1067634595, -1111988197) + W(3, -1102439466, -1117920963, 1022976741, 1008285339)\n\t\t+ W(4, -1101835107, -1097573200, -1083343720, -1090130192)\n\t\t+ W(5, 1055493018, 1027292464, 1030733458, 1002427213) + W(6, 1038607216, 1026943422, -1110364223, -1089515454)\n\t\t+ W(7, -1090714326, -1101900071, 1033968573, 1033064671)\n\t\t+ W(8, -1108371617, -1114744392, 1035072621, 1054823097)\n\t\t+ W(9, 1059932372, 1031097460, -1132241300, -1101772178)\n\t\t+ W(10, 1031384482, 1026017402, 1036186174, -1104718688)\n\t\t+ W(11, 1024781950, -1110105890, 1040128898, 1026666744);\n\tWS(1065065708, -1125796377);\n\tsum1 = W(0, -1112144555, 1029634469, -1112840237, 1034269757)\n\t\t + W(1, -1122801969, -1133240789, 1016754760, -1119164014)\n\t\t + W(2, -1106943759, 1025116330, -1105630541, -1106751530)\n\t\t + W(3, 1023923175, 1041797158, -1113089188, -1130226634)\n\t\t + W(4, 1017193539, -1112668180, -1112954809, -1096457447)\n\t\t + W(5, -1094266089, -1096385878, -1106190977, -1114305030)\n\t\t + W(6, 1048634147, 1027133034, 1055950575, 1060800975) + W(7, 1051425450, 1041695411, 1044103184, 1036967948)\n\t\t + W(8, -1127916040, 1026809557, -1112907992, -1093799807)\n\t\t + W(9, -1103940357, 1039766276, -1130590086, 1008751883)\n\t\t + W(10, -1132404112, 1004217594, -1111964638, 1038388364)\n\t\t + W(11, -1132895812, 1013909417, 1032062573, 992673732);\n\tsum2 =\n\t\tW(0, 1043431555, -1109692118, 1036275465, -1111890182) + W(1, -1102288351, 1045724738, -1109691788, 1007408138)\n\t\t+ W(2, -1098806978, 1046643695, -1097975189, 1048664613)\n\t\t+ W(3, 1049750262, -1098934938, 1032869755, -1111259526) + W(4, 1024222598, 1045861043, -1101643320, 1058544270)\n\t\t+ W(5, -1098883379, 1049188212, -1107029975, 1048185689)\n\t\t+ W(6, -1105154239, 1054740901, -1083291725, 1068703829)\n\t\t+ W(7, -1080748028, 1058055770, -1100454574, -1148294292)\n\t\t+ W(8, 1031236307, 1035789437, 1007109846, -1081353417) + W(9, 1031821902, -1100833476, 1051695731, -1114785167)\n\t\t+ W(10, 953732840, -1115663935, 1042301531, 1035678115)\n\t\t+ W(11, -1120166561, 1047454611, -1096856793, 1041528279);\n\tWS(1061652844, 1044003957);\n\tsum1 = W(0, -1118715405, 1029075868, -1115471369, 1032954233)\n\t\t + W(1, 998963525, -1111723799, 1036011862, -1152687195) + W(2, 1022617806, 1045689305, -1094261862, 1027529537)\n\t\t + W(3, -1099266912, 1045678528, -1119248992, -1108410990)\n\t\t + W(4, 1044034950, 1030904095, 1059625182, 1057470859) + W(5, 1062131070, -1098407445, 1047156095, 1037164834)\n\t\t + W(6, -1101088515, -1103346936, -1096538237, -1086691558)\n\t\t + W(7, -1094363880, -1105378993, -1123294521, 1016045215)\n\t\t + W(8, 1019688911, 1045834099, -1102841294, 1041319556)\n\t\t + W(9, -1166277444, 1028040508, -1135804811, -1106724595)\n\t\t + W(10, -1131961856, -1110934572, 1036052922, -1148682371)\n\t\t + W(11, 1017830866, -1109411965, 1030886475, -1123601124);\n\tsum2 =\n\t\tW(0, -1123087716, -1122327585, 1034911826, -1115300382) + W(1, -1147444258, 1031538244, -1122824244, 1026384688)\n\t\t+ W(2, -1115107680, -1105390433, 1034185422, 1042081129) + W(3, 1036682846, 1043195731, -1112377777, 1024479380)\n\t\t+ W(4, 1039737456, -1106584843, 987338697, -1094697399) + W(5, 1048628369, -1100913302, 1041194171, 1036768370)\n\t\t+ W(6, 1045652727, -1139899009, 1060423005, -1103292099)\n\t\t+ W(7, -1079464406, -1102260713, -1101961861, -1106123677)\n\t\t+ W(8, -1106100707, -1102201417, -1111505321, -1094374885)\n\t\t+ W(9, 1066067653, 1062702469, 1013733313, 1034543612) + W(10, -1128513463, -1114704327, 1009548801, 1026056400)\n\t\t+ W(11, -1112497116, -1107096307, -1125635761, 1037241080);\n\tWS(1061983340, -1091535279);\n\tsum1 =\n\t\tW(0, -1154828523, 1027504414, -1131271078, -1120408436) + W(1, -1131629652, -1122568783, -1165314478, 995201141)\n\t\t+ W(2, -1133965299, -1128653831, -1114200663, -1129743238)\n\t\t+ W(3, -1117839504, 1035797658, -1115205249, 1019503421) + W(4, 1043906007, 1027190112, 1061948198, 1054216086)\n\t\t+ W(5, 1062537731, 1028696552, 1045640431, 1044774081) + W(6, -1118138894, -1097538828, 1027560685, -1081158944)\n\t\t+ W(7, -1089869577, -1097887897, -1111951485, -1105384996)\n\t\t+ W(8, -1109842717, 1037523079, -1106988467, 1048594270)\n\t\t+ W(9, -1121464863, 1028427349, -1121440284, -1119142300)\n\t\t+ W(10, 1025343169, -1121887129, 1023298667, -1108007945)\n\t\t+ W(11, 1034422373, -1120763036, 1008081777, -1122356070);\n\tsum2 =\n\t\tW(0, 995087446, 1030495116, 1007114937, -1121939088) + W(1, -1109334595, 1012755199, 1031009559, -1123906524)\n\t\t+ W(2, 1036608468, -1099055008, -1115487063, 1057848194)\n\t\t+ W(3, -1106051731, 1015526929, -1118519790, 1024955281) + W(4, 965233164, -1104807397, -1070882050, 1075270016)\n\t\t+ W(5, 1059573542, -1102771000, 1023903156, -1159976683)\n\t\t+ W(6, 1033021468, -1107407110, 1038417178, -1094462735) + W(7, 1039375650, -1124510890, 1016192349, 1023974018)\n\t\t+ W(8, -1114419070, 1033869233, -1103406865, 1051754977) + W(9, -1104596666, 1028405316, -1111745826, 955743793)\n\t\t+ W(10, 1033025046, -1119280070, 1028798922, -1120762821)\n\t\t+ W(11, 1018124826, 976567206, 1015800189, -1129936862);\n\tWS(1062927532, 1035014202);\n\tsum1 = W(0, 1039522007, 1034505951, 1040732909, 1002357921) + W(1, 1016035605, -1122944943, 999726956, -1140151454)\n\t\t + W(2, -1114736246, -1109500450, 1011271190, 1044028441) + W(3, 1050061010, 1042353405, 1036129025, 1041525964)\n\t\t + W(4, 1037103646, 1048942600, 1053278895, -1097469770)\n\t\t + W(5, -1085392865, -1094832633, -1103977959, -1111797875)\n\t\t + W(6, -1104897563, -1092956200, -1091146839, -1093973369)\n\t\t + W(7, 1051214559, 1050975197, 1043068615, -1126246883) + W(8, 1044380938, 1044086236, 1044239087, 1042916452)\n\t\t + W(9, -1112456671, -1111813313, -1112116510, -1110444494)\n\t\t + W(10, -1121785378, 1027254073, -1145709740, 981579331)\n\t\t + W(11, 1035761861, 1033165606, 1025151372, 1033358643);\n\tsum2 = W(0, 1038528863, 1036214533, 1049223347, -1113699843)\n\t\t + W(1, 1041716852, -1100571883, 1017295180, -1101978327)\n\t\t + W(2, -1084044031, -1091834288, -1110305241, 1042795689)\n\t\t + W(3, 1050774414, 1043118649, 1047177880, 1050263507) + W(4, -1082440456, -1077502553, 1049812579, 1068178608)\n\t\t + W(5, -1092073446, 1047476754, 1034666293, 1054410728) + W(6, 1050939225, -1095085693, 1050231565, 1060273714)\n\t\t + W(7, -1115682722, -1105112612, 1050691511, -1101197699)\n\t\t + W(8, 1053868195, 1028074081, 1046376147, -1132635925)\n\t\t + W(9, -1098688235, 1017697398, -1092800689, -1104788145)\n\t\t + W(10, -1113963371, -1114781385, 1035810200, -1160679206)\n\t\t + W(11, 1036026944, 1016345266, 1040315316, -1112282035);\n\tWS(-1086906028, 1058773265);\n\tsum1 = W(0, -1132629757, 997844200, 965362145, -1106996409)\n\t\t + W(1, -1153797548, -1120050655, -1122322046, 1015091632)\n\t\t + W(2, 1044191380, 1043197109, -1125429564, 1033453658)\n\t\t + W(3, -1118095697, -1121403972, -1119804562, 1026125167)\n\t\t + W(4, 1032367334, 1050808506, 1058285756, 1062016570) + W(5, 1044397873, 1043993638, 1042486572, 1047754366)\n\t\t + W(6, -1096691584, -1095732027, -1086608026, -1081591954)\n\t\t + W(7, 1041881517, -1096430215, 1002316636, -1099777504)\n\t\t + W(8, -1152318558, 1042781664, 1034636741, 1043388193) + W(9, 1045470808, -1115428219, 1018594522, 1024196285)\n\t\t + W(10, -1109034905, 1031594505, -1119832870, -1106441585)\n\t\t + W(11, -1149103576, -1113585524, -1135705587, -1122333654);\n\tsum2 = W(0, 1048104076, 1038532068, -1129915388, -1101156186)\n\t\t + W(1, -1128179824, -1128045264, -1131782160, -1109473444)\n\t\t + W(2, -1096548381, -1086001730, -1083843015, 1035944594)\n\t\t + W(3, -1102068111, 1044127780, -1114990278, 1041203218)\n\t\t + W(4, -1107021820, -1131935456, 1060056432, 1066609131)\n\t\t + W(5, 1027352212, 1048571914, -1120175088, 1038985844) + W(6, 1018456960, 1007620609, 1033171254, 1050949241)\n\t\t + W(7, -1107874139, -1104179329, 1038875644, -1112054433)\n\t\t + W(8, -1136070657, 1040453646, -1111662792, -1110531416)\n\t\t + W(9, -1104445548, -1127646596, -1110249452, 1034344442)\n\t\t + W(10, -1112321878, 1033875386, -1117768272, 1032538050)\n\t\t + W(11, -1114035189, 1032855260, -1144805954, -1130080864);\n\tWS(1046014126, 1065769758);\n\tsum1 = W(0, 1012096182, -1112076254, -1100987245, -1106802021)\n\t\t + W(1, -1106286530, -1129503003, 1021132153, -1112401299)\n\t\t + W(2, -1121314108, 1039437825, 1043473803, 1045721640)\n\t\t + W(3, 1049347084, -1109380841, 1049245244, -1120677869)\n\t\t + W(4, -1091239207, -1094624040, -1091961473, -1088552177)\n\t\t + W(5, -1089539427, -1091526873, -1091375076, -1088888106)\n\t\t + W(6, 1052142286, 1048611696, 1060125676, 1062377804) + W(7, 1053897896, 1057150062, 1048631067, 1057709495)\n\t\t + W(8, 1042130570, -1109865911, -1128757714, -1119711185)\n\t\t + W(9, -1128945819, -1119080717, 1034078686, -1122337355)\n\t\t + W(10, 1019346753, -1152131961, -1123465492, 1039063160)\n\t\t + W(11, -1114302645, 1015225093, -1135518836, 1014030866);\n\tsum2 =\n\t\tW(0, -1089976447, -1078304891, -1071851632, -1070679577)\n\t\t+ W(1, -1081022179, -1113339548, 1011136331, 1035458322) + W(2, 1064913799, 1068350548, 1070575185, 1072673707)\n\t\t+ W(3, 1063744071, -1128451504, 1040942179, -1115281660) + W(4, -1094573985, 1019506715, 1065710309, 1065504629)\n\t\t+ W(5, 1056839493, -1124929726, -1106886716, -1111465381)\n\t\t+ W(6, -1109226965, -1120561974, 1002672995, -1098180006)\n\t\t+ W(7, -1117214353, -1111255228, 1028658493, 1033265670) + W(8, 1030445629, 1021062218, -1127826384, 1031139735)\n\t\t+ W(9, -1112765526, 1037321868, -1127063938, 1001938923) + W(10, -1115506338, 1018259030, 1012290398, 995896746)\n\t\t+ W(11, 1010152224, -1118014213, 967860273, -1119523230);\n\tWS(-1096468055, 1053785380);\n\tsum1 = W(0, -1110473361, 1020813409, -1111899059, 1027946631)\n\t\t + W(1, 1003556839, -1143096715, 996386562, -1123588698)\n\t\t + W(2, -1116957735, -1114360891, -1123200592, -1090968927)\n\t\t + W(3, -1107232681, -1117882342, -1118523124, -1105979736)\n\t\t + W(4, 1034879511, -1114475674, -1109008383, 1066746382) + W(5, 1064704330, 1046069775, 1042611044, 1040361862)\n\t\t + W(6, 1017136705, -1111337627, 1028379180, 1051825655)\n\t\t + W(7, -1094442401, -1129057075, -1114700263, 1022269000)\n\t\t + W(8, -1116669644, -1135792006, -1105125143, -1094808947)\n\t\t + W(9, -1116312257, -1106172505, -1135525501, -1106276184)\n\t\t + W(10, -1118632404, -1120549867, -1162426624, -1173354793)\n\t\t + W(11, -1119514205, -1113957025, -1130080208, -1123525720);\n\tsum2 =\n\t\tW(0, -1127419095, -1140125367, 1028088432, -1126099139) + W(1, -1114986450, 1024738032, -1114843176, 1023949256)\n\t\t+ W(2, -1122531649, 1025350612, -1123116186, 1020760995) + W(3, 1019570567, 1039021380, 1018690059, -1119198021)\n\t\t+ W(4, -1111543417, -1108347637, -1101718819, 1056423339)\n\t\t+ W(5, 1073762237, -1100544782, 1049061203, 1026425060) + W(6, 1043407189, 1028851928, 1048774619, -1086358248)\n\t\t+ W(7, -1076137651, 1044261707, -1099227611, -1123270518)\n\t\t+ W(8, 1013519927, -1117946771, 1041147594, -1112971994)\n\t\t+ W(9, -1118107520, 1015761083, -1111772147, 1027419728)\n\t\t+ W(10, -1134679399, 991440379, -1127107007, -1115422093)\n\t\t+ W(11, 1037345920, -1103403994, 1042824177, -1129333383);\n\tWS(-1089097708, -1091261619);\n\tsum1 = W(0, -1127316247, -1113526029, -1118797136, -1123552881)\n\t\t + W(1, -1123795687, 1015138359, -1129675572, -1126584008)\n\t\t + W(2, 1003986316, -1120011361, 1046355762, -1103137072)\n\t\t + W(3, -1103576251, 1032220600, -1120446878, 1027028747)\n\t\t + W(4, -1111263852, -1112997295, -1081822066, -1100403388)\n\t\t + W(5, 1053114278, -1138618770, 1007314666, -1123471427) + W(6, 1044425283, 1047767320, 1061869832, 1058200050)\n\t\t + W(7, -1092855018, -1160534136, 1034662460, 1018063772)\n\t\t + W(8, 1033605983, -1118942860, -1110810403, 1009152314)\n\t\t + W(9, 1046189751, 1031283151, 1016196275, -1128724178)\n\t\t + W(10, -1116984894, -1121673366, 1027944882, -1124559262)\n\t\t + W(11, -1131347855, -1118591413, -1131488026, -1122517738);\n\tsum2 =\n\t\tW(0, -1151923233, 1026311687, 1025121279, -1123775834) + W(1, 1033596173, -1105542037, 1035290939, -1108107550)\n\t\t+ W(2, 1040701127, -1109901381, 1034378939, -1092342947)\n\t\t+ W(3, -1096202739, 1051958537, -1098166743, 1047977685)\n\t\t+ W(4, -1110923755, 1024679085, -1080291839, 1071256357)\n\t\t+ W(5, 1042190483, -1103925783, 1046386099, -1114731953)\n\t\t+ W(6, -1103532415, 1016651554, -1082840291, 1066054209) + W(7, 1056834874, -1199035157, 1035522294, 1030555165)\n\t\t+ W(8, 1041909162, 1036375055, -1110170843, -1090243220)\n\t\t+ W(9, -1097275958, 1038401459, -1113079432, 1015019440)\n\t\t+ W(10, -1121169096, -1135341024, 1041541680, -1128413506)\n\t\t+ W(11, 1043004954, -1097944284, 1042529081, -1099750845);\n\tWS(1061142188, 1045552914);\n\tsum1 = W(0, 1022384747, 1019603337, 992843677, 1025369499) + W(1, -1149984013, 1030794181, -1123167236, 1034453383)\n\t\t + W(2, 1020461367, -1114371061, -1137489184, -1128616851)\n\t\t + W(3, -1114859644, -1134916072, -1114858116, 1009189588)\n\t\t + W(4, 1058732728, 1054684529, 1060634392, 1056292747) + W(5, 1061516204, 1058073341, 1052882077, 1050605022)\n\t\t + W(6, -1095805239, -1098135841, -1085459239, -1081060320)\n\t\t + W(7, -1083596540, -1097701630, 1026645922, -1099032542)\n\t\t + W(8, -1101590238, -1123665301, 1027392977, -1124699057)\n\t\t + W(9, 1038698931, -1106352164, 1006025241, -1100750969)\n\t\t + W(10, 1033080372, 1031766591, -1123755612, -1116775033)\n\t\t + W(11, 1034158665, -1134014242, 1037240581, -1122655396);\n\tsum2 =\n\t\tW(0, 1041010686, -1100296712, 1042377248, -1124701214) + W(1, 1002573079, 1026372231, -1107309152, 1022594646)\n\t\t+ W(2, 1045355628, -1110840017, 1028443719, -1097271182) + W(3, -1108318217, 1034868187, 1032249619, 1034940919)\n\t\t+ W(4, -1091459780, -1109934927, -1120459763, 1068946970)\n\t\t+ W(5, 1048538630, -1095496747, -1112114883, -1096153349)\n\t\t+ W(6, -1092997038, -1109499465, 1023984711, 1068602839)\n\t\t+ W(7, 1049236461, -1112347607, -1088682480, 1036467963)\n\t\t+ W(8, 1025085151, -1110570114, -1120816159, -1090645327)\n\t\t+ W(9, 1036483715, -1110453128, -1121128467, -1105549173)\n\t\t+ W(10, 1019331790, -1115246837, 1025130703, 1036287199)\n\t\t+ W(11, 1028224647, -1106754238, 1040581836, -1106253388);\n\tWS(-1090464684, 1058848194);\n\tsum1 = W(0, 1038070654, -1104784595, -1140651524, 1048797564)\n\t\t + W(1, -1115845272, -1115304422, 1022142646, 1026901973)\n\t\t + W(2, 1035807069, -1106022588, -1107342224, -1112865880)\n\t\t + W(3, -1102596230, -1117573217, 1011767229, -1105151431)\n\t\t + W(4, 1059156269, 1027584334, 1060192817, 1062566262) + W(5, 1060113046, 1043041013, 1054886405, 1057383999)\n\t\t + W(6, -1091590511, -1104101108, -1084437581, -1088742755)\n\t\t + W(7, -1087393870, -1095911543, -1102839322, -1088896680)\n\t\t + W(8, 1049775661, -1100086527, 1050662239, 1037690576) + W(9, 1050391262, -1117869728, 1042443855, 1039830925)\n\t\t + W(10, -1111666744, -1128618637, -1128690758, -1097281200)\n\t\t + W(11, 1024450616, -1151911514, -1131868338, -1104457275);\n\tsum2 =\n\t\tW(0, -1106952896, 1050458431, -1084179073, -1068828969) + W(1, -1082769727, 1054525389, -1098029126, 1038352192)\n\t\t+ W(2, -1173421195, -1100970530, -1117103305, 1049093414)\n\t\t+ W(3, 1015202727, -1093960872, 1043872404, -1107157710) + W(4, -1113206734, 1037511626, 1063723378, 1078393261)\n\t\t+ W(5, 1065452472, -1106048166, 1031385535, 1030855073)\n\t\t+ W(6, -1136957987, 1029901269, -1106205415, -1105390455)\n\t\t+ W(7, -1128426057, 993579659, -1114758982, 1034755506) + W(8, -1152575873, -1116273053, 1039247706, 1034474614)\n\t\t+ W(9, 1032907306, -1100143257, -1155923695, 1034533524)\n\t\t+ W(10, -1112584615, 1045345833, 1031320371, -1099252776)\n\t\t+ W(11, 1035573879, 1040309898, -1124055116, -1124561432);\n\tWS(-1106782638, -1120193880);\n\tsum1 = W(0, 1020741911, 1021367862, 1038644232, -1126436322) + W(1, 1043522250, -1112066734, 1018349205, 1033129938)\n\t\t + W(2, -1116040418, -1121939617, -1109539853, -1098608828)\n\t\t + W(3, -1101880327, 993980163, -1115252655, -1133833389) + W(4, 1053259451, 1050945756, 1055524943, 1065255335)\n\t\t + W(5, 1061719830, 1048874997, 1051405991, 1042923217)\n\t\t + W(6, -1112821605, -1100446872, -1091353929, -1085596156)\n\t\t + W(7, -1096552606, -1090468372, -1106280862, -1102788916)\n\t\t + W(8, -1101282812, 1049499553, -1100504250, -1101475552)\n\t\t + W(9, 1025835692, -1114054607, 1027947689, -1104899626)\n\t\t + W(10, -1111424287, -1129092267, 1016236516, 1033532871)\n\t\t + W(11, 1022700239, -1114668904, -1147278953, 1028803059);\n\tsum2 =\n\t\tW(0, -1113068388, 1036673453, -1118880240, 1028813378) + W(1, -1107832014, 1027909744, -1122240512, 1011592783)\n\t\t+ W(2, -1115580494, 1024834555, -1115483686, -1117546792)\n\t\t+ W(3, 1043490929, -1105092918, 1040415904, -1119502452)\n\t\t+ W(4, 1039529972, -1098466798, 1043501593, -1115055672)\n\t\t+ W(5, -1117282076, 1042504898, -1107365158, -1112704202)\n\t\t+ W(6, -1091718951, 1052150318, 1043613567, 1062484975) + W(7, 1045088246, -1094456673, 1030923561, -1123953380)\n\t\t+ W(8, -1076395174, -1080701891, 1068474066, 1066750300)\n\t\t+ W(9, -1097140180, 1049333443, -1109881554, 1043999999)\n\t\t+ W(10, 1046645532, -1104586573, 1009076111, -1093753132)\n\t\t+ W(11, 1036864955, 1022104546, 1033514298, -1115391680);\n\tWS(-1093231703, 1042706757);\n\tsum1 = W(0, 1032826937, 1026075841, 1032961819, 1036684171) + W(1, 1034757510, 1036416025, 1015758976, 1040004261)\n\t\t + W(2, 1040624182, 1000558899, -1110755278, -1127770315)\n\t\t + W(3, -1106938311, 1019575916, -1114624210, 1042264396) + W(4, 1058499572, 1052553144, 1061343357, 1062021249)\n\t\t + W(5, 1060752603, 1057695045, 1051786740, 1058906011)\n\t\t + W(6, -1084803183, -1099119122, -1083389465, -1081334022)\n\t\t + W(7, -1087386813, -1090036539, -1098198604, -1088285503)\n\t\t + W(8, -1104136529, 1025447538, -1114092422, -1112317122)\n\t\t + W(9, -1132554758, -1109030926, 1012060669, -1096739300)\n\t\t + W(10, 1041579305, 1031885534, 1032264780, 1018739433)\n\t\t + W(11, 1031902455, 1037874311, 1027119072, 1035404188);\n\tsum2 = W(0, -1134545280, -1101426979, 1012752443, 1036306510)\n\t\t + W(1, 1034320105, -1111393843, 1046638158, -1108867307)\n\t\t + W(2, 1057942802, 1047102485, 1055001204, -1096203167)\n\t\t + W(3, -1114902087, -1096420171, -1101073471, -1091559913)\n\t\t + W(4, -1072425931, -1084592242, -1079302223, -1123894686)\n\t\t + W(5, 1062181631, 1062084093, 1064536824, 1073505700)\n\t\t + W(6, -1067197419, -1071603316, -1077093049, -1098326846)\n\t\t + W(7, 1072541263, 1067609499, 1073214169, 1078744623) + W(8, 1049446840, 1042726179, 1050812050, -1129334697)\n\t\t + W(9, -1097319760, -1093274589, 1001153868, -1094526709)\n\t\t + W(10, 1074141781, 1060445087, 1060645469, 1037955576)\n\t\t + W(11, -1094473234, -1087350702, -1085693573, -1077663090);\n\tWS(-1075107862, 1049521772);\n\tsum1 = W(0, 1027861131, 987763517, -1129668766, 1033675992) + W(1, 1016072268, 992091051, 1026084697, -1120420163)\n\t\t + W(2, 1045206278, 1041173528, 1032319275, 1040210256) + W(3, 1041485791, 1044520444, 1042655839, -1112688453)\n\t\t + W(4, -1086495609, -1097093508, -1086275954, -1081944455)\n\t\t + W(5, -1082045908, -1096923684, -1093981119, -1094413520)\n\t\t + W(6, 1051717721, 1049572700, 1055584810, 1064397290) + W(7, 1059363461, 1055988184, 1051323143, 1050124978)\n\t\t + W(8, 1033503081, -1116084523, 1009361560, 995768539) + W(9, -1112276757, -1112468587, 1005879363, 1033578820)\n\t\t + W(10, 1031434621, -1144572069, -1140119493, 1027980366)\n\t\t + W(11, -1129633421, 1024276072, 1000619058, 1025196738);\n\tsum2 = W(0, 1033523983, -1107297920, -1109353447, -1097553497) + W(1, -1102290887, 987526362, 1022298470, 944749371)\n\t\t + W(2, -1091543751, -1125142534, -1100365589, -1121112319)\n\t\t + W(3, -1119424675, -1094244068, 1033606211, -1100627225) + W(4, 1048034710, 1031510683, 995045613, 1061520608)\n\t\t + W(5, 1042981818, -1103162896, 1052169844, -1098189213)\n\t\t + W(6, 1051542012, -1103344470, -1120961303, 1061214811)\n\t\t + W(7, -1094266425, 1043830132, 1041952964, 1041818078)\n\t\t + W(8, 1024239879, -1117305947, -1099173366, 1044020024)\n\t\t + W(9, -1093433218, 1046119446, 1043499670, -1096785580)\n\t\t + W(10, 1041022978, -1121264057, -1115033235, 1053722991)\n\t\t + W(11, -1097363289, 1047286054, -1106943326, 1031561067);\n\tWS(-1097146583, -1102489480);\n\tsum1 = W(0, -1121239074, 1035066361, -1110655283, 1032257412)\n\t\t + W(1, 1020382076, 1014217354, 1032256145, -1120529307)\n\t\t + W(2, -1102624204, 1033907292, -1104909116, -1109600459)\n\t\t + W(3, -1113387282, -1114213060, -1114763275, -1123950514)\n\t\t + W(4, 1041928668, -1096659727, -1123609439, -1091326393)\n\t\t + W(5, -1105975127, -1098203983, 1045101428, -1093952115)\n\t\t + W(6, 1043173384, 1051162503, 1057278053, 1050132159) + W(7, 1049365769, 1049080395, 1033542535, 1055699093)\n\t\t + W(8, -1118777253, -1108685857, -1102566959, -1100309385)\n\t\t + W(9, -1101876333, 1040792061, -1121020400, 1035959564) + W(10, 1016656554, 995611334, 1009112868, 1037330963)\n\t\t + W(11, -1111738159, 1033561904, -1149295615, -1122689753);\n\tsum2 =\n\t\tW(0, 1030001048, -1107119695, 1023713698, -1115026335) + W(1, 1024715164, -1112691697, 1024758511, -1147275412)\n\t\t+ W(2, 1039849292, -1106305989, 1019090837, 1035696383) + W(3, 1036481868, 1023388499, -1146519572, -1112564365)\n\t\t+ W(4, -1106927121, 1060202814, -1104587624, 1057308499)\n\t\t+ W(5, 1047684818, -1112160637, -1093257675, 1041456307) + W(6, 1046837828, -1095733546, 1043085465, 1053508746)\n\t\t+ W(7, 1034862818, 1046794790, -1094465043, -1083960309) + W(8, -1131959957, 1012779430, 1026454649, 1038120705)\n\t\t+ W(9, 1037173687, -1101425448, 1036335613, -1094791365)\n\t\t+ W(10, -1116147800, -1124391765, 1028873647, -1104339358)\n\t\t+ W(11, 1045294658, -1119391248, -1156574008, 1012709310);\n\tWS(1057303084, -1084740383);\n\tsum1 =\n\t\tW(0, 1025949163, 1023904890, 1033327896, 1022060320) + W(1, -1131905805, -1114170862, 1021513971, -1109381346)\n\t\t+ W(2, -1105987664, -1104417576, -1097440039, -1106403568)\n\t\t+ W(3, 1043670267, 1041763972, 1037885311, 1019385429) + W(4, 1034968156, 1048292239, 1057303604, -1134851644)\n\t\t+ W(5, -1082452830, -1089247692, -1093401571, -1097845612)\n\t\t+ W(6, -1097863693, -1093717272, -1088500414, 1058205452) + W(7, 1059877080, 1058731430, 1046703382, 1049842950)\n\t\t+ W(8, 1046214631, 1042713619, 1043920086, 1041892896) + W(9, -1101986947, -1107457363, -1110573172, 1031126152)\n\t\t+ W(10, -1130932027, -1126920426, 1012093510, 1040636140)\n\t\t+ W(11, 1028551783, 1041063330, -1143718184, 1016340900);\n\tsum2 =\n\t\tW(0, -1097593869, 1040446621, -1107347821, 1036994425) + W(1, 989701019, 1043906150, 1040271244, 1016581730)\n\t\t+ W(2, -1100989715, 1036240143, -1105186205, -1119554977)\n\t\t+ W(3, 1048367016, -1095197585, -1102913875, 1041272891) + W(4, 1026566131, -1100851860, 1046892012, 1069594194)\n\t\t+ W(5, -1107809286, 1031148367, 1038853877, -1105136265) + W(6, 1061153405, 1047874592, -1103469514, 1074408805)\n\t\t+ W(7, -1110319007, -1079941721, 1042791078, -1086296266)\n\t\t+ W(8, 1050695083, -1096668864, -1104864053, -1103368475)\n\t\t+ W(9, -1100341899, -1084422687, -1093040701, -1099178193)\n\t\t+ W(10, -1095509343, 1040237386, -1114614656, 1040210470)\n\t\t+ W(11, -1105386934, 1031716423, 1036206107, 1042594729);\n\tWS(-1085311468, 1078025451);\n\tsum1 = W(0, -1114246985, -1123523234, -1123774423, 1017942127)\n\t\t + W(1, 1018695644, -1134274761, 973249598, 1032511109) + W(2, 1033236492, 1042717314, 1046675224, 1030027079)\n\t\t + W(3, -1107516674, -1105985470, -1118366597, -1108369993)\n\t\t + W(4, -1126048573, -1100167817, -1090923842, 1002547123)\n\t\t + W(5, 1061445386, 1051174149, 1032724353, 1047097650) + W(6, 1051596674, 1050764301, 1057423711, -1138337956)\n\t\t + W(7, -1085962671, -1101362115, -1098415672, -1105953621)\n\t\t + W(8, -1110129580, -1101525701, -1102550347, -1117387765)\n\t\t + W(9, 1045061525, 1037275627, 1033244340, 1025818592)\n\t\t + W(10, -1109388771, 1021849401, 1031509177, -1126623147)\n\t\t + W(11, -1118825262, -1107617348, -1124427728, -1115961017);\n\tsum2 =\n\t\tW(0, -1123353384, 1030359787, 1024787123, 1015567503) + W(1, -1115408082, 1026077135, -1137211259, 1015951538)\n\t\t+ W(2, -1131031713, -1114557735, -1125418898, -1132430472)\n\t\t+ W(3, 1029672716, -1118070691, -1125125186, -1135395683)\n\t\t+ W(4, 1029311455, -1123787418, -1099438470, 1049323738) + W(5, 1042547290, 1050505809, -1110579463, 1040847724)\n\t\t+ W(6, 1047725718, 1042470619, -1106551206, -1097880179)\n\t\t+ W(7, -1089568094, -1166364565, -1115324497, 1028809582)\n\t\t+ W(8, 1051601031, -1121374979, 1049816965, -1088308991)\n\t\t+ W(9, -1098255621, 1026888229, -1112338809, -1102185033)\n\t\t+ W(10, -1113968956, 1045218010, 1044805763, 1039658119)\n\t\t+ W(11, 1042126156, -1115384233, 1043221816, 1014731468);\n\tWS(1060142060, 1042832150);\n\tsum1 = W(0, 1031397804, -1121488955, 1033996248, 1018827426) + W(1, -1131717262, 1033609702, 1010765225, 1029196868)\n\t\t + W(2, 1036648197, -1142445829, -1117943062, -1111782928)\n\t\t + W(3, -1108508447, -1106903604, 1015606653, -1115637854)\n\t\t + W(4, 1052129567, 1051097024, 1054892021, 1065668620) + W(5, 1059881804, 1058770516, 1050176059, 1054801908)\n\t\t + W(6, -1093104885, -1094159296, -1086111346, -1081757070)\n\t\t + W(7, -1087336873, -1090845580, -1100487494, -1126749404)\n\t\t + W(8, -1125587404, -1138833071, 1028704007, 1032794495)\n\t\t + W(9, 1047817147, -1104469332, 1038701961, -1091639031)\n\t\t + W(10, 1030014814, 1024131190, 1024270930, -1123778927)\n\t\t + W(11, 1022586319, -1125662417, 1032196289, 1019613157);\n\tsum2 =\n\t\tW(0, 1016709191, 1013621039, -1134054043, 1033829499) + W(1, -1133247239, 1014723479, 1025542948, -1113297030)\n\t\t+ W(2, 1043282989, -1105412866, 1034830675, -1123744731)\n\t\t+ W(3, -1107183956, -1110083630, -1115844306, -1097083153)\n\t\t+ W(4, -1105914972, 1048947993, -1104630078, -1088942993)\n\t\t+ W(5, -1093767876, 1055362845, -1111303066, 1064727508)\n\t\t+ W(6, -1104055195, 1038685325, -1084033248, -1072142874)\n\t\t+ W(7, 1073971039, 1076386430, -1098251720, -1090433741)\n\t\t+ W(8, -1113893232, -1143937773, -1103493551, -1098435347)\n\t\t+ W(9, 1052470850, -1104225446, 1051939911, -1091328171) + W(10, 1031619176, -1128320153, 990218298, 1026126526)\n\t\t+ W(11, 1042783259, -1103699955, -1123473137, 1025388740);\n\tWS(-1086199532, 1054743650);\n\tsum1 = W(0, 1034444474, 1027498242, 1040848158, 1023783640) + W(1, 999869046, -1115850147, 1025498402, -1134397103)\n\t\t + W(2, 1032011277, -1095519909, -1107222607, -1152811127)\n\t\t + W(3, 1044283945, 1044573214, 1036275699, -1123084051) + W(4, 1048862696, 1053262121, 1061389071, 1030342167)\n\t\t + W(5, -1084989084, -1095010778, -1106712265, 1032418005)\n\t\t + W(6, -1097849454, -1090625833, -1084999869, -1113365765)\n\t\t + W(7, 1060145155, 1054594461, 1045643928, 1033574715) + W(8, 1006964268, 1040908045, 1038795271, 1038235355)\n\t\t + W(9, -1104327823, -1101807134, -1122717633, 1015954881)\n\t\t + W(10, 1027368614, -1113781807, -1118338586, -1108967739)\n\t\t + W(11, 1006059384, 1028815960, -1124545277, -1135640905);\n\tsum2 =\n\t\tW(0, -1098769930, 1041383757, 1031909130, 1040055926) + W(1, -1112037460, 1040275414, -1111784639, -1113621249)\n\t\t+ W(2, 1042608106, -1089209738, -1102323575, -1105226719)\n\t\t+ W(3, -1124786133, -1117623756, -1131302943, 1048083051)\n\t\t+ W(4, -1101852353, -1121408570, -1108783974, 1065973699)\n\t\t+ W(5, 1049738412, 1057999228, -1111524780, 1025491254) + W(6, -1093087039, 1038811718, -1089123880, 1069194195)\n\t\t+ W(7, 1026907074, -1106112227, 1020629449, -1107530612)\n\t\t+ W(8, -1139600545, -1093098827, -1121335963, -1098519743)\n\t\t+ W(9, -1089198426, -1101165651, -1109243346, 1048264427)\n\t\t+ W(10, 1036192806, -1121276186, 1045867083, 1023817866)\n\t\t+ W(11, 1042688929, -1122635193, 1041146873, -1095495518);\n\tWS(-1090983255, -1089207473);\n\tsum1 =\n\t\tW(0, 1011536056, 1031895551, -1113368985, 1041335941) + W(1, -1112820133, 1033755607, -1120463213, 1029129223)\n\t\t+ W(2, -1126565928, -1113602338, -1111099810, -1099647257)\n\t\t+ W(3, -1102367072, 1030939267, -1111909392, 1034973975) + W(4, 1055178415, 1054038520, 1055473117, 1064470249)\n\t\t+ W(5, 1063942234, 1050197537, 1058279198, 1042393881)\n\t\t+ W(6, -1101680475, -1097154360, -1089575247, -1084973552)\n\t\t+ W(7, -1086493203, -1097159533, -1096914715, -1096995926)\n\t\t+ W(8, -1102945718, -1121652462, 994604183, -1121284913)\n\t\t+ W(9, 1041044307, -1111487017, 1017418960, -1111098786) + W(10, 1026884961, 990918528, 1022227241, -1151944468)\n\t\t+ W(11, -1119623498, 1029397803, -1127714823, 1024652821);\n\tsum2 =\n\t\tW(0, 1008868714, 1000134020, -1131179173, 1026383992) + W(1, -1108980541, 1033178726, -1113100227, 1025874080)\n\t\t+ W(2, -1138668162, 1023930211, -1108628571, -1114490385)\n\t\t+ W(3, 1047990867, 1030525898, -1131668265, -1138114226)\n\t\t+ W(4, 988655570, -1099344177, -1064898888, -1066369231) + W(5, 1075540559, 1086324754, 1049763634, -1100090533)\n\t\t+ W(6, -1108603395, 1041622837, -1131013053, -1087427617)\n\t\t+ W(7, -1095163420, 1057379348, 1040828448, -1109206595) + W(8, 1033342078, 1025638720, -1133763810, 1033730604)\n\t\t+ W(9, -1117896039, 1031531103, -1119632759, 1025251971)\n\t\t+ W(10, 1018452757, -1115444075, 1023801183, -1118168395)\n\t\t+ W(11, 1033324797, -1116567631, 1028372534, -1128577333);\n\tWS(-1109283164, -1114463829);\n\tsum1 = W(0, 1026307305, 1010065376, 1036887575, 1032762791) + W(1, 1038442146, 1036926348, 983730417, 1042339968)\n\t\t + W(2, 1048505142, 1006853751, -1122796048, -1121781501)\n\t\t + W(3, -1106474773, -1140109366, -1113784606, 1033209828)\n\t\t + W(4, 1056046207, 1051849183, 1060373686, 1062361681) + W(5, 1060935143, 1058739944, 1052729243, 1060958338)\n\t\t + W(6, -1087851802, -1096622464, -1086026376, -1080983673)\n\t\t + W(7, -1086759863, -1088322398, -1098544579, -1085562739)\n\t\t + W(8, -1097387850, 1034233556, -1106692609, -1116217316)\n\t\t + W(9, -1136008963, -1111740214, 973353381, -1098996574)\n\t\t + W(10, 1043738183, 1033008793, 1030721871, 1031320492)\n\t\t + W(11, 1024808165, 1037732587, 1028455576, 1032429188);\n\tsum2 =\n\t\tW(0, 1033103311, 1036675590, 1035316039, -1139597621) + W(1, -1104037187, 1036924272, -1111374359, 1033604811)\n\t\t+ W(2, -1088826877, -1093870598, -1096260803, 1038770367)\n\t\t+ W(3, -1120383141, 1054470917, 1048854624, 1052968175) + W(4, 1076551262, 1064863709, 1066303868, 1054257493)\n\t\t+ W(5, -1086745184, -1080791393, -1081541832, -1074269835)\n\t\t+ W(6, 1082157528, 1075036637, 1074566779, 1054121358)\n\t\t+ W(7, -1075712309, -1075955022, -1073360354, -1068055688)\n\t\t+ W(8, -1088761642, 1044533603, -1088656095, -1096732938) + W(9, 1026461691, 1058516172, 1036676016, 1036957577)\n\t\t+ W(10, -1073488400, -1083381518, -1087052440, 1034260530)\n\t\t+ W(11, 1055295113, 1062460380, 1061463967, 1072405502);\n\tWS(-1073690779, -1087724268);\n\tsum1 = W(0, 1020006630, 944113971, 1028328440, 1026519064) + W(1, 1023877839, 1026744019, -1116930962, 1037411798)\n\t\t + W(2, 1040645890, 1024788392, 1048604230, -1124203663)\n\t\t + W(3, 1026558293, -1108217132, 1024907750, -1124509669)\n\t\t + W(4, 1037569760, 1033313762, 1026748704, -1097395091) + W(5, 1058432566, 1052406658, 1046357449, 1052615509)\n\t\t + W(6, 1040537741, 1022063376, 1037819609, -1081034849)\n\t\t + W(7, -1089181115, -1095782133, -1103915032, -1095058991)\n\t\t + W(8, -1102207443, -1117962707, 1018608989, 1030158086) + W(9, 1048090929, 1028902900, 1040820950, 1037074644)\n\t\t + W(10, 1011752087, 1010250996, 1035208397, -1107990331)\n\t\t + W(11, 1030700463, -1115106384, 1006665970, -1120315546);\n\tsum2 =\n\t\tW(0, 1036147454, -1115074830, -1143660011, -1109526737) + W(1, -1113309480, 1006285882, -1115649745, 1026243607)\n\t\t+ W(2, 991782552, 1025479068, -1111873890, 1054093522) + W(3, 1016478163, 1035621794, 1027286665, -1108696429)\n\t\t+ W(4, -1100036784, -1096384442, 1042154750, 1036720443) + W(5, 1015496998, -1111840809, 1028637267, 1024623035)\n\t\t+ W(6, -1102354425, 1031211776, -1098733186, 1061883500)\n\t\t+ W(7, 1040999099, -1099055155, -1117281017, -1120753705)\n\t\t+ W(8, -1132125723, -1114551496, -1120425773, 1042458762)\n\t\t+ W(9, -1118319659, 1021928735, -1113807339, 1033776741)\n\t\t+ W(10, 1037581214, -1107514244, 1036528495, -1113752408)\n\t\t+ W(11, -1131440878, 1009305230, -1115311515, -1117838632);\n\tWS(1053167575, 1034582410);\n\tsum1 =\n\t\tW(0, 1023109013, -1105499654, 1047073940, -1103829756) + W(1, -1134567319, 1029509866, -1107075490, 1028951523)\n\t\t+ W(2, -1135820801, 1041430288, -1099071824, 1051022760)\n\t\t+ W(3, -1103780951, 1038026111, -1144576488, 1034415069)\n\t\t+ W(4, -1107146278, 1045138183, 1006706653, -1098544246)\n\t\t+ W(5, 1035133548, -1101742889, 1040882462, -1110494113)\n\t\t+ W(6, 1042183330, 1015167422, -1110119411, -1114407921) + W(7, 1029794991, 1025810371, 1020673517, -1144644710)\n\t\t+ W(8, -1106326923, 1048594337, -1101264321, 1042439875)\n\t\t+ W(9, -1115149997, -1124355817, -1133994400, 1017843520)\n\t\t+ W(10, 1038375967, -1103059717, 1036901240, 1019390619)\n\t\t+ W(11, -1122256838, 1039002364, -1113322768, 1025775953);\n\tsum2 =\n\t\tW(0, 1007469645, 1024932078, -1123529450, -1106895484) + W(1, -1154152567, 1026396887, 1034932657, -1118589447)\n\t\t+ W(2, -1127684796, -1122451669, 934668744, 1046133075)\n\t\t+ W(3, 1050482770, -1100501045, -1112663810, -1145059796)\n\t\t+ W(4, 1026289720, 1029479215, 1048216767, -1101979386)\n\t\t+ W(5, -1086100405, -1104578417, -1110628430, -1120799353)\n\t\t+ W(6, -1134400734, -1114161855, -1092503803, -1118826374)\n\t\t+ W(7, 1054881826, 1054831843, 1037309396, 1034243151) + W(8, -1121586613, 1018968072, 1055026065, 1057475450)\n\t\t+ W(9, 1057991283, 1037697257, 1041220013, 1035239909) + W(10, 1012304630, 1018258842, -1105610792, -1091642753)\n\t\t+ W(11, -1094138317, -1097381938, -1108645190, -1109776821);\n\tWS(1065106092, 1009251236);\n\tsum1 =\n\t\tW(0, -1127594260, 1015119794, -1105935716, 1030756271) + W(1, 1015463627, 1033714469, -1121831017, 1032817313)\n\t\t+ W(2, -1119086128, 1041681344, 1038033220, -1103164984)\n\t\t+ W(3, -1097628571, -1096661826, -1162082196, 1037645501)\n\t\t+ W(4, -1106710454, -1108480942, -1085761952, 1048660750) + W(5, 1062385221, 1057312254, 1045270286, 1038003425)\n\t\t+ W(6, 1041658930, 1053952044, 1059673337, 1035410928)\n\t\t+ W(7, -1083076739, -1097132616, -1100422942, -1134248242)\n\t\t+ W(8, 1028936149, -1098626929, -1106493133, 1042075767) + W(9, 1048795361, 1042769246, 1033263484, -1109564844)\n\t\t+ W(10, 999711717, -1128362792, 1030156593, -1105711219)\n\t\t+ W(11, -1109139763, -1109546740, -1128821631, -1113038632);\n\tsum2 = W(0, 1026504012, -1115537349, 1004448402, -1120289237)\n\t\t + W(1, -1116193727, 1023273402, -1106169890, -1116296115)\n\t\t + W(2, -1111982251, -1109318355, -1126991046, -1114485349)\n\t\t + W(3, 1031030421, 1036795295, 1038895038, 1037382021) + W(4, -1115575890, 1037274256, 1032461625, 1046084064)\n\t\t + W(5, -1104386736, 1033981186, 1034486696, 1014573341) + W(6, 1025515301, 1036029355, -1105715099, 1035923056)\n\t\t + W(7, 1039615788, 1034803763, -1111316562, -1126611440)\n\t\t + W(8, 1038047283, -1140512157, 1031934837, -1127252256)\n\t\t + W(9, 1008094609, -1108137243, 1013721630, -1109430807)\n\t\t + W(10, -1121134093, -1118959675, 966777949, 1001443794)\n\t\t + W(11, -1126229172, 999509622, -1115420717, -1121268263);\n\tWS(1058235500, 1054922309);\n\tsum1 = W(0, -1126843838, -1115091447, 1037063794, -1097782353)\n\t\t + W(1, 1017345397, -1106496120, -1124168315, -1111050604)\n\t\t + W(2, -1110452882, 1026999796, 1027596138, 1043595317) + W(3, 1026915457, 1051692426, 1033470169, 1047889704)\n\t\t + W(4, -1096439037, -1109530936, -1126567064, -1080972858)\n\t\t + W(5, -1087153329, -1092439359, -1096481402, -1101856358)\n\t\t + W(6, 1054965252, 1035486938, 1052521111, 1054616871) + W(7, 1059777872, 1055199219, 1049045985, 1042302776)\n\t\t + W(8, -1126708475, 1040994960, 1048136923, -1135709192)\n\t\t + W(9, -1117730271, 1025849689, -1109862614, 1048178521)\n\t\t + W(10, -1113819273, -1112039092, 1029145158, -1103625129)\n\t\t + W(11, -1113712109, -1133876016, -1120397392, 1018059916);\n\tsum2 = W(0, 1032658614, 1026047005, 1016793814, 979115576) + W(1, 1025048255, -1120340424, -1124528004, -1113479651)\n\t\t + W(2, -1104671284, 1026757765, -1106565422, 1040092458)\n\t\t + W(3, -1118382609, 1024555245, -1115048442, -1102456829)\n\t\t + W(4, 1033357456, -1146410551, -1129670058, 1049738304)\n\t\t + W(5, 1047130549, -1099524683, -1114147283, -1143577495)\n\t\t + W(6, -1107649550, -1093450531, 1029536101, 1048902638) + W(7, 1043845633, 1031379649, 1015256822, 1032535412)\n\t\t + W(8, -1107785448, 1045006287, 1032863350, 1031141497)\n\t\t + W(9, 1024835039, 1016575718, -1115840886, -1140327483)\n\t\t + W(10, 1014985523, -1108588814, -1114405495, 1032866808)\n\t\t + W(11, -1128051766, 1011865867, 1016407002, -1121997281);\n\tWS(1050344663, 1040331465);\n\tsum1 =\n\t\tW(0, -1119034750, 1027008397, -1123135107, 1034001074) + W(1, -1165785906, -1109811775, 1012082163, 1021442477)\n\t\t+ W(2, -1123846924, 1032620906, -1107606109, -1113228665)\n\t\t+ W(3, -1104523524, 1044228977, -1136436803, 1015486907) + W(4, 1038870821, -1145305726, 1045963311, 1055978044)\n\t\t+ W(5, 1061494191, 994921841, 1043858443, 1032566715) + W(6, 1016005498, -1104369525, -1101093248, -1091899011)\n\t\t+ W(7, -1089807144, -1100340494, -1113047285, -1121306753)\n\t\t+ W(8, -1113185550, 1047408652, -1106188838, 1019406818)\n\t\t+ W(9, -1133495032, 1039673315, 1003314783, -1110918342)\n\t\t+ W(10, -1180899430, -1117862216, 1031141157, 1025902913)\n\t\t+ W(11, 995937181, -1126170822, -1155810234, 1012720916);\n\tsum2 = W(0, 1017323653, 983063098, -1124332548, -1136855038)\n\t\t + W(1, 1038193266, -1115428487, 1037749325, -1162541650) + W(2, 1006857268, 1027629321, 1040636195, 1050922570)\n\t\t + W(3, -1107256285, 1024268384, -1105738834, -1112368096)\n\t\t + W(4, 1027026905, 1041250623, -1098379711, -1095854749)\n\t\t + W(5, -1124475180, -1107079153, 1035306909, 1041041721)\n\t\t + W(6, -1096858156, -1096058068, -1081757810, 1046692173)\n\t\t + W(7, 1055388353, 1044471504, 1018283467, 1034757871) + W(8, 1057582691, 1069736593, -1098564102, -1092586095)\n\t\t + W(9, -1101296593, -1099842491, -1130236866, -1116072515)\n\t\t + W(10, -1108630874, -1103954988, 1039138402, 1040290673)\n\t\t + W(11, 1026430908, -1135051275, -1127494735, -1128054004);\n\tWS(1064629676, -1098084920);\n\tsum1 =\n\t\tW(0, 1033302207, 1017176603, 1043155505, 1036523218) + W(1, -1135635048, 1036902751, -1154473427, 1031815708)\n\t\t+ W(2, 1017516913, 986968687, -1093133598, -1136867787)\n\t\t+ W(3, -1099849236, -1112073298, 1015173986, -1108314079) + W(4, 1037844037, 1048067236, 1059745345, 1054752956)\n\t\t+ W(5, 1054803234, 1049105955, 1045303547, 1049045791) + W(6, 1004101612, -1094217842, -1107275372, -1083111259)\n\t\t+ W(7, 1036740290, -1089373007, 1007182507, -1096296960)\n\t\t+ W(8, -1100831258, 1032944847, -1118901210, -1111571193)\n\t\t+ W(9, -1104247276, 1044914424, 1032262742, 1028425028) + W(10, 1023773169, 1036346276, -1109611315, 1036061697)\n\t\t+ W(11, -1130856180, -1178541510, 1028817260, -1121119813);\n\tsum2 =\n\t\tW(0, 1031116538, 1018758860, -1093507837, -1142239225) + W(1, 1008547208, -1115133937, 1037272918, -1116833334)\n\t\t+ W(2, -1106561538, 1041892626, 1060901401, -1094547881) + W(3, 1048344650, -1106548880, 1031802380, 1032935937)\n\t\t+ W(4, 1041324255, -1122918288, -1090730175, 1059998586)\n\t\t+ W(5, -1105692057, -1107738784, -1109731964, -1105354579)\n\t\t+ W(6, -1097318271, 1050772655, -1089173269, 1050575163)\n\t\t+ W(7, -1105982083, 1062167006, -1115007264, 1051274636)\n\t\t+ W(8, 1038093550, -1113042451, -1103574570, -1096117806)\n\t\t+ W(9, 1045224094, -1093777588, 1040225760, -1097190188) + W(10, 1003684433, 1005733025, 1036702490, 1007559836)\n\t\t+ W(11, -1111284039, 1032209739, -1119496571, 1039213738);\n\tWS(1059570988, -1104849743);\n\tsum1 = W(0, 1015935639, -1114327981, 1032097032, -1100671580)\n\t\t + W(1, -1118415719, -1146837726, -1128662677, -1106017873)\n\t\t + W(2, -1105217736, -1117057793, 1045549308, 994695167) + W(3, 1019924475, 1044124420, -1133264506, 1026902699)\n\t\t + W(4, -1100062838, -1095539196, -1097913193, -1081463016)\n\t\t + W(5, -1088685699, -1103538521, -1090424260, -1096642336)\n\t\t + W(6, 1055580097, 1051203348, 1057098153, 1065307314) + W(7, 1060408535, 1060044676, 1048658511, 1058793797)\n\t\t + W(8, -1114680436, -1104422643, 1035503236, -1100709080)\n\t\t + W(9, -1100882497, -1127513406, -1106885414, -1112552037)\n\t\t + W(10, 1027695934, -1122995670, 1026067698, -1115820943)\n\t\t + W(11, -1121911751, 1040976712, -1109730008, 1032897105);\n\tsum2 = W(0, -1101738300, 1026251680, -1096487254, -1097132336)\n\t\t + W(1, -1103125896, -1098301296, -1145491968, -1102991820)\n\t\t + W(2, -1102635520, 1042860418, -1118004862, -1097577131)\n\t\t + W(3, 1034939290, -1107323885, 1046219299, -1101571742) + W(4, 1049960021, 1045813894, 1012147620, 1062244087)\n\t\t + W(5, 1030928730, 1018590462, 1042676852, 1048890187) + W(6, -1107186076, 1037904592, -1101520598, 1050699569)\n\t\t + W(7, -1118944274, 996952385, -1132230456, -1120981264)\n\t\t + W(8, 1031463651, 1043360780, -1099464580, 1042220045)\n\t\t + W(9, -1129575892, -1143727552, 1038679603, 1022002534)\n\t\t + W(10, -1109595133, 1032162510, -1144663840, 1017587638)\n\t\t + W(11, -1122088198, -1112243029, 1028948530, -1108091801);\n\tWS(-1095386967, -1111219145);\n\tsum1 = W(0, 989878260, -1130549149, 1027494660, 1027516453) + W(1, -1138329195, 1029536895, 1016226972, 1031794584)\n\t\t + W(2, 1046105185, -1114353482, -1126247292, -1101798869)\n\t\t + W(3, -1109199416, -1149170463, -1110945897, 1041043200)\n\t\t + W(4, 1042696371, 1044731284, 1059356463, 1066759339) + W(5, 1060963410, 1056388995, 1052477254, 1048385630)\n\t\t + W(6, -1089927208, -1092958347, -1090136954, -1086407791)\n\t\t + W(7, -1086208082, -1087382795, -1099705531, -1090430272)\n\t\t + W(8, -1127509006, 1029760895, -1123276603, -1134143337)\n\t\t + W(9, 1037957160, 1028489291, 1033794703, -1116367629) + W(10, 1030962098, 1015099027, 1002268463, 1008759050)\n\t\t + W(11, 1030926587, 1024487352, 1027177352, -1155852515);\n\tsum2 =\n\t\tW(0, 1037152773, -1155239869, -1110337901, 1031799544) + W(1, -1115579003, 1027082675, -1125050611, 1027786160)\n\t\t+ W(2, -1107393101, -1118272906, -1121008946, 1040803769)\n\t\t+ W(3, 1040826838, -1129277077, 1044810576, -1128372019)\n\t\t+ W(4, -1107499267, -1123365743, 1053226346, -1091451910)\n\t\t+ W(5, 1036591998, 984589146, -1111221822, -1115106721) + W(6, -1071982339, -1066777138, 1065602467, 1078719649)\n\t\t+ W(7, 1072207876, 1012365693, -1114663567, 1027240586) + W(8, 1050177526, -1099174901, -1114100047, 1051522302)\n\t\t+ W(9, -1112448128, 1036247818, 1024897040, 1010421237)\n\t\t+ W(10, 1034063245, -1111285661, -1111810642, 1032887971)\n\t\t+ W(11, -1105619991, 1027337883, -1128259763, -1110086921);\n\tWS(-1090330604, -1095913405);\n\tsum1 = W(0, 1020138108, -1123891981, 1027835331, -1104251929)\n\t\t + W(1, 1036891437, -1115340623, 1034060158, -1111402939)\n\t\t + W(2, -1155846064, -1158857313, 1042832881, 1026174194)\n\t\t + W(3, 1041459232, -1107002233, 1043482052, -1101325435)\n\t\t + W(4, -1089580553, -1099259748, -1086143680, -1083565678)\n\t\t + W(5, -1087459168, -1094838563, -1096454718, -1097944271)\n\t\t + W(6, 1060107168, 1041623909, 1061453552, 1065434151) + W(7, 1058328348, 1058061687, 1046178603, 1056232524)\n\t\t + W(8, 1026904097, 1034391623, -1115844409, -1108664129)\n\t\t + W(9, -1103857816, -1108388469, -1124051644, -1124315511)\n\t\t + W(10, -1129005794, 1027969480, -1126805065, 1015124739)\n\t\t + W(11, -1133565543, 1018898230, -1128371111, 1016813002);\n\tsum2 =\n\t\tW(0, -1123501879, 994818552, 1024190209, 1026428551) + W(1, -1113685733, 1033345966, -1113104927, 1032770548)\n\t\t+ W(2, 1032645553, -1106534525, 1041404870, -1104982451) + W(3, 1042593674, -1115833227, 1034301013, 1019409377)\n\t\t+ W(4, 1031823713, 1055123028, 1003420836, -1080276792) + W(5, -1127504591, 1051480126, -1116624943, 1017007809)\n\t\t+ W(6, 1073269342, 1086127434, -1097366650, -1064048639)\n\t\t+ W(7, -1073275019, -1090368136, 1039074558, -1104405577)\n\t\t+ W(8, 1039470942, -1106004733, 1048036108, 1029604730) + W(9, -1102930579, -1127043711, 1016207563, 1023925896)\n\t\t+ W(10, -1134706270, -1108902493, -1131894299, 1040747994)\n\t\t+ W(11, -1114192145, 1028687353, -1110363669, 1028902826);\n\tWS(-1090401964, -1152005757);\n\tsum1 = W(0, -1107975723, 1027213860, -1098681011, 1041527967)\n\t\t + W(1, -1104614908, -1117487349, -1139447119, -1114124023)\n\t\t + W(2, -1110378885, -1114833045, -1110030634, -1088517567)\n\t\t + W(3, -1108968043, -1117626874, 1013150495, -1107640642)\n\t\t + W(4, -1108756369, -1095679285, -1106296032, 1070380432)\n\t\t + W(5, -1108442736, -1098750614, -1103582017, -1109258534)\n\t\t + W(6, 1036253290, -1126602324, 1055690689, 1071039479) + W(7, 1052643167, 1027420045, 1037720897, 1028231256)\n\t\t + W(8, -1114963960, 1031108853, -1100045596, -1089232274)\n\t\t + W(9, -1099409217, -1149243844, -1112117145, 1004205268)\n\t\t + W(10, -1113670180, -1122691487, -1107558750, 1041737494)\n\t\t + W(11, -1114805320, -1114809497, -1129003237, -1115685308);\n\tsum2 = W(0, 1032241318, -1099535875, 1055385702, -1088862448)\n\t\t + W(1, 1049303281, -1109469239, -1107728961, -1128383244)\n\t\t + W(2, -1104603794, 1042476400, -1090035137, 1058560544)\n\t\t + W(3, -1088861159, 1052772694, -1098593341, 1040732759)\n\t\t + W(4, -1110024851, 1036274242, -1088795135, 1070638870)\n\t\t + W(5, -1093985609, -1106832655, 1040915158, -1094544594)\n\t\t + W(6, 1040884292, -1098717699, 1054345172, 1049287225) + W(7, 1045145516, 1028821082, -1095210561, 1053404675)\n\t\t + W(8, -1102517567, 1017815860, -1094964358, 1049908300)\n\t\t + W(9, -1104972980, -1121780800, 1046695263, -1097835418)\n\t\t + W(10, 1041491703, -1106264274, 1050847172, -1097728340)\n\t\t + W(11, -1120926078, 1040141480, -1097969166, 1042680505);\n\tWS(-1070853435, -1079594702);\n\tsum1 =\n\t\tW(0, 1031368074, -1129832370, 1034753191, 1015854174) + W(1, 1034404179, 1016952500, -1121119193, 1030231874)\n\t\t+ W(2, 1015638464, 1041167744, 1035847262, -1103546680) + W(3, -1113675090, 1024462894, 1024493276, -1128491667)\n\t\t+ W(4, -1114370347, -1117069532, -1123068615, 1064504443) + W(5, 1061831318, 1053421228, 1039689052, 1047845552)\n\t\t+ W(6, -1115839497, -1102391672, -1103157041, -1091637800)\n\t\t+ W(7, -1080200908, -1096184888, -1127920108, -1114780422)\n\t\t+ W(8, -1115223191, 1027397066, -1112317379, -1115479934)\n\t\t+ W(9, 1034003429, 1024063661, 1021986479, -1108195108) + W(10, 1032466078, 1017764904, 1032880216, -1129698458)\n\t\t+ W(11, 1015162251, -1140051844, -1133040549, -1121925385);\n\tsum2 = W(0, -1106137478, 1043473407, -1106937584, 1026389244)\n\t\t + W(1, -1112665680, 1037682857, -1122471729, -1132137458)\n\t\t + W(2, -1112484873, -1102332364, -1092913054, -1107744995)\n\t\t + W(3, -1097742336, 1043622402, 1020098037, 1022975237) + W(4, 1057355655, -1095817987, 1065744344, 1065853704)\n\t\t + W(5, -1081387458, -1127502696, -1107102958, -1141866869)\n\t\t + W(6, 1035747177, -1115086293, 1023360745, 1072123343)\n\t\t + W(7, -1079419356, -1106562006, -1106082519, -1126279403)\n\t\t + W(8, -1121112608, -1132505032, -1113186427, -1092294539)\n\t\t + W(9, -1121542644, 1037780507, 1042075138, 1036152561)\n\t\t + W(10, -1111886750, 1028632460, -1106034045, 1034294011)\n\t\t + W(11, 1024287965, 1025382780, 1002478149, -1184105122);\n\tWS(1049779927, -1112776705);\n\tsum1 =\n\t\tW(0, 1028071903, -1114011991, 1029458468, -1119065733) + W(1, -1132325110, 1021654911, -1140102008, -1114327724)\n\t\t+ W(2, -1118237477, 1043483133, 1007633232, 1035764138) + W(3, 1035328577, 1034435922, -1138188744, -1122000063)\n\t\t+ W(4, -1102803275, -1098367878, -1088820906, -1094340312)\n\t\t+ W(5, -1080604425, -1090240908, -1148292210, -1113705707)\n\t\t+ W(6, 1029391902, -1104983021, 1052808064, 1066199650) + W(7, 1053987355, 1056392483, 1036299814, 1048826612)\n\t\t+ W(8, 1034486619, 1030141823, 1041927295, 1028311666) + W(9, -1120802495, 1033716813, -1137351220, 1019304377)\n\t\t+ W(10, -1146402448, 1024272361, -1136262168, -1116603171)\n\t\t+ W(11, 1022508086, -1120600656, -1178578023, 1020743116);\n\tsum2 =\n\t\tW(0, 1032570045, -1105084280, 1038138439, -1106537061) + W(1, 1040196930, -1115643975, 1030892929, -1115802712)\n\t\t+ W(2, 1038214390, 1026252154, 1040403525, -1094267982) + W(3, -1111441511, -1113353460, 1041615042, 1045634969)\n\t\t+ W(4, -1105258373, 1013797397, -1089116471, 1076181184)\n\t\t+ W(5, -1077048432, 1025617857, -1099622062, 1030853641) + W(6, 1049712324, -1092505394, 1060934721, 1059180753)\n\t\t+ W(7, -1094660144, -1116351798, -1112051433, 1036834683)\n\t\t+ W(8, -1104412018, -1106628914, -1095609080, -1100140938)\n\t\t+ W(9, -1105239307, 1035183993, -1108612586, -1126459673)\n\t\t+ W(10, -1123221706, 1042796766, 997194667, 1031304969)\n\t\t+ W(11, 1025898916, -1113508292, 1036578837, -1114596985);\n\tWS(1046079918, -1101410372);\n\tsum1 = W(0, -1119247786, 1028420729, -1112243383, 992275696)\n\t\t + W(1, -1122025413, -1106451742, 1031954516, -1132155589)\n\t\t + W(2, -1128322399, 1041896248, -1105916230, 1048641796)\n\t\t + W(3, -1106854731, 1031954663, 1008473970, -1111364501) + W(4, 1042510685, 1041276767, 1052547749, 1049660162)\n\t\t + W(5, 1058242473, 1042746961, 1045913078, 1038481040) + W(6, 1040172212, 1029165630, -1093769957, -1086983984)\n\t\t + W(7, -1090223605, -1101840568, -1131429676, 1034663574)\n\t\t + W(8, -1102544268, 1023180436, -1094151845, 1051181214)\n\t\t + W(9, 1034028133, 1035662026, -1136064862, -1123376855)\n\t\t + W(10, -1115138862, 1035447066, -1116787216, -1126725978)\n\t\t + W(11, 1020616971, -1106918309, 1031591591, -1113758304);\n\tsum2 = W(0, -1141998719, -1145824639, 1031031156, 1020781312)\n\t\t + W(1, 1022361784, 1035727822, -1106658345, 1018984000)\n\t\t + W(2, -1109775790, -1114337335, 1035421278, -1094152732)\n\t\t + W(3, 1019796096, -1109500163, -1126048860, -1133379360)\n\t\t + W(4, 1044487768, 1032184652, -1118695686, 1023745864) + W(5, 1018742928, 1044822196, 1018234504, 1040264262)\n\t\t + W(6, -1123003936, -1105393491, 1043275908, 1060925239)\n\t\t + W(7, 1035441608, -1129786704, -1154747838, -1114483694)\n\t\t + W(8, -1128896096, -1105870753, -1123077850, -1116720242)\n\t\t + W(9, 1005384511, -1106753069, -1109895735, -1115363912)\n\t\t + W(10, -1116651188, 1028260552, -1117301622, -1118185274)\n\t\t + W(11, -1111756371, 1028382728, -1112885074, 1013789936);\n\tWS(1065850966, 1065849900);\n\tsum1 = W(0, -1148044715, 1016251913, -1121600570, -1122606683)\n\t\t + W(1, -1119487441, -1123929445, 1022387720, -1113618935)\n\t\t + W(2, 1023026535, 1037817733, 1025496281, 1030608138) + W(3, 1035148220, 1038603949, 1040789578, 1029056085)\n\t\t + W(4, -1096615656, -1090259708, -1086496425, -1089114938)\n\t\t + W(5, -1087399018, -1089721837, -1091666965, -1090055623)\n\t\t + W(6, 1051437895, 1044690723, 1060547800, 1067874188) + W(7, 1061971613, 1051923078, 1020371139, 1050691807)\n\t\t + W(8, 1037565454, 1031445334, -1123828273, -1103278290)\n\t\t + W(9, -1103477215, 1017932657, 1017045638, 1041207209)\n\t\t + W(10, 1009078433, -1134993406, -1122338716, 961099943)\n\t\t + W(11, -1115158089, -1152593000, 1017681054, 1032486406);\n\tsum2 =\n\t\tW(0, 1035054009, -1100085534, 1050236106, -1106312974) + W(1, 1040394388, -1111006317, -1122528690, -1120327060)\n\t\t+ W(2, 1029203106, 1055497340, -1099101530, -1091493710) + W(3, 1035688516, -1100130836, 1051271785, 1037370697)\n\t\t+ W(4, -1095822387, -1094806083, -1112580467, 1065636371)\n\t\t+ W(5, 1057422694, 1038056034, -1090043318, -1101753600)\n\t\t+ W(6, -1096883389, 1022251406, -1105263591, 1066985993)\n\t\t+ W(7, 1050729384, -1113669663, -1109365057, -1098907474)\n\t\t+ W(8, -1106861506, 1025821768, -1099047212, -1090221894)\n\t\t+ W(9, 1040303734, -1095697855, -1132012078, 1042447412)\n\t\t+ W(10, 1003858895, -1141198631, 1038164225, 1007864647)\n\t\t+ W(11, -1131632326, 1034223408, 1022279531, -1111449439);\n\tWS(-1097113303, -1098536273);\n\tsum1 = W(0, -1128711506, 1001100740, -1116245678, -1123204686)\n\t\t + W(1, -1122390725, 973480529, -1135175840, -1112078369)\n\t\t + W(2, 1026190055, -1129782332, 1036959597, 1010531062) + W(3, 1040533155, 1032146359, 1016950072, -1115082484)\n\t\t + W(4, -1089449919, -1090119792, -1089233276, -1088111001)\n\t\t + W(5, -1083999320, -1100399617, -1096337083, -1098983064)\n\t\t + W(6, 1051085133, 1054274400, 1059231684, 1068549146) + W(7, 1060528017, 1051645044, 1021720363, 1056811397)\n\t\t + W(8, 1039600836, 1006971045, 1035061810, -1106500579)\n\t\t + W(9, -1110173729, -1118570949, -1105366950, -1163217111)\n\t\t + W(10, 1017357112, -1151099700, 1008174399, 1027830380)\n\t\t + W(11, -1118330949, -1138008953, -1113983621, -1114515356);\n\tsum2 = W(0, -1126544110, -1106788080, -1123763395, 1031886252)\n\t\t + W(1, 1019879781, -1106896864, 1025236903, -1103198659)\n\t\t + W(2, 1057867675, 1045040387, -1116688865, 1008770068)\n\t\t + W(3, -1111977015, -1104133845, -1123575137, -1095297610)\n\t\t + W(4, -1084782762, -1103936041, -1096694543, 1065118928)\n\t\t + W(5, -1120781351, -1094413904, 1055216743, 1063595180)\n\t\t + W(6, -1101472514, -1095964817, 1033632512, 1070094219)\n\t\t + W(7, -1093909441, -1091348732, -1087869152, -1101379604)\n\t\t + W(8, 1046930113, 1060484868, -1098897900, 1055777327)\n\t\t + W(9, -1105350592, -1098592917, 1032159773, -1090856164)\n\t\t + W(10, 1047938716, -1116398073, 1033301960, -1112910333)\n\t\t + W(11, -1132175940, 1028498658, -1111429301, -1148399072);\n\tWS(-1088872108, 1052196610);\n\tsum1 =\n\t\tW(0, -1115772244, 1026268067, 1022683057, -1119255225) + W(1, -1126845407, 1018606696, -1122729971, -1119390253)\n\t\t+ W(2, -1114837443, -1111544357, -1104977249, -1110507588)\n\t\t+ W(3, -1124752108, -1106979958, -1118779367, 1032957370)\n\t\t+ W(4, 1040729928, -1129315660, 1050293045, -1115663356) + W(5, 1055556797, 1038400791, 1043464385, 1010467373)\n\t\t+ W(6, 999143576, 1051137549, 1050616762, -1123488747) + W(7, -1107532492, -1115698508, -1106851872, 1013947482)\n\t\t+ W(8, 1035543595, -1115388138, -1110255664, -1102766242)\n\t\t+ W(9, -1115121626, -1111362474, -1114761165, -1127308771)\n\t\t+ W(10, -1109636323, -1138847608, -1148093909, -1113579532)\n\t\t+ W(11, 1031428336, -1123058305, 1024891874, -1117161611);\n\tsum2 =\n\t\tW(0, 1021571414, 1005045849, 1032761087, -1131955840) + W(1, 1002892889, -1113636159, 1017257782, -1116947723)\n\t\t+ W(2, -1136485425, -1108696907, 1015124882, -1109877489)\n\t\t+ W(3, 1050593712, -1105061066, 1027289415, 1035889263) + W(4, 1033792089, 1026572719, -1097148617, -1072841573)\n\t\t+ W(5, 1051731235, 1040799594, 1025178361, 1033387155) + W(6, 1044650880, 1068805535, 1072674603, -1073632622)\n\t\t+ W(7, 1040667946, -1114163718, 1033059623, -1113785952)\n\t\t+ W(8, -1111938281, 1042295210, 1053858128, -1114078156) + W(9, 986622244, -1105514756, -1131411966, 1024784261)\n\t\t+ W(10, -1111133361, 1015874538, -1115667125, 1025743417)\n\t\t+ W(11, 1029743517, -1150165522, 1028606721, -1131685126);\n\tWS(1059574956, -1147706177);\n\tsum1 = W(0, -1126851274, 1032992154, 990365335, 1021792788) + W(1, 1014654722, 1023708133, 1021433863, 1024270494)\n\t\t + W(2, -1107330821, -1114850125, -1111585801, 1025219833)\n\t\t + W(3, 1042448198, 1041111834, 1028566264, 1025900485) + W(4, 1039522745, 1036915515, 1058476188, 1057257569)\n\t\t + W(5, -1130368142, -1087441640, -1103664757, -1101532519)\n\t\t + W(6, -1101979721, -1103811902, -1091594576, -1102147871)\n\t\t + W(7, 1049911159, 1046832311, 1042912388, 1034347764) + W(8, 1039509326, 1037543219, 1044635632, 1015035920)\n\t\t + W(9, -1098033363, -1103709614, -1112635561, -1106561201)\n\t\t + W(10, -1113513772, -1122830319, -1115799180, 999411009)\n\t\t + W(11, 1008106627, 1030688938, 998865060, 1033251158);\n\tsum2 = W(0, 1030668111, -1138525905, -1118095530, 1046358820)\n\t\t + W(1, 1026007575, 1036395993, 1044323398, -1102154889)\n\t\t + W(2, -1100054904, -1127093272, -1104427366, -1094333916)\n\t\t + W(3, -1098434999, -1114547879, -1098255510, 1043811931)\n\t\t + W(4, -1106823977, -1118630721, -1104404781, 1066330506)\n\t\t + W(5, 1032956568, -1089680445, -1118009606, -1104253130)\n\t\t + W(6, 1038847176, 1023505668, 1055088734, 1059364463) + W(7, -1109156363, -1102029714, 1019564502, 1042217401)\n\t\t + W(8, 1045749759, -1100949461, -1106737563, -1115593085)\n\t\t + W(9, -1105827255, 1014767972, -1114455410, 1033201092)\n\t\t + W(10, -1139922314, -1137789612, 1025350194, -1118124817)\n\t\t + W(11, 1044080198, -1111415597, 1034872747, -1116871429);\n\tWS(1056332375, 1037816258);\n\tsum1 = W(0, -1121656782, -1121854558, 988019291, 1027294260)\n\t\t + W(1, -1141230927, -1146196851, -1124586778, -1119789479)\n\t\t + W(2, -1103168373, -1112652978, 1032694229, 1032971073)\n\t\t + W(3, 1036051832, 1029047507, -1138159876, -1116156558)\n\t\t + W(4, -1119737691, -1116096096, -1099471067, -1088930875)\n\t\t + W(5, -1088040995, -1094038173, -1105369135, -1100717841)\n\t\t + W(6, 1044637987, 1045017865, 1051843657, 1058468850) + W(7, 1059943427, 1054278049, 1040438911, 1052440082)\n\t\t + W(8, 1028439953, -1108613751, -1124711667, -1105155884)\n\t\t + W(9, -1110648631, 1023373473, -1109090662, -1121068380)\n\t\t + W(10, -1147698697, 1015231409, -1126623722, 1025720722)\n\t\t + W(11, -1125643860, 1025459107, -1140770656, 1033302707);\n\tsum2 = W(0, 1037403217, 1056969468, 1057593955, 1065979451) + W(1, 1052219437, 1048107842, 1012201018, 1034400525)\n\t\t + W(2, -1101035659, -1090106390, -1080354518, -1077736273)\n\t\t + W(3, -1095104394, -1110113632, 1035332836, 1036232380) + W(4, 1032316963, 1038083410, 1060881997, 1057826659)\n\t\t + W(5, 1040943565, -1093495590, 1023246776, -1105354500)\n\t\t + W(6, -1116665707, -1119459300, 1028006921, -1093367622)\n\t\t + W(7, 1050471411, -1098889696, 1037291810, -1172133380)\n\t\t + W(8, -1159849898, 1009385423, 1038355181, -1108823981)\n\t\t + W(9, 1028403474, 1041580846, -1108503511, 1023204972)\n\t\t + W(10, 1025618366, -1128266716, -1107076145, 1040978108)\n\t\t + W(11, -1107763897, 1031803963, 1028340263, -1124125618);\n\tWS(1057728492, -1114894260);\n\tsum1 = W(0, -1113553553, -1129994721, -1116323110, 1032700067)\n\t\t + W(1, 1022553594, -1174372438, 1025649872, -1204938694)\n\t\t + W(2, -1137973853, 1032124939, 1038491142, 1042214629)\n\t\t + W(3, -1102850457, -1103814977, -1108835354, -1117610625)\n\t\t + W(4, 1030725486, 1023297510, 1042012404, 1063322480) + W(5, 1049455560, 1038337085, 1036180712, 1041170774)\n\t\t + W(6, 1027451936, 1039175515, -1096381204, 1002639809)\n\t\t + W(7, -1095884801, -1099447670, -1107257155, -1110131186)\n\t\t + W(8, 1024408310, -1104644784, -1098358292, -1097199096)\n\t\t + W(9, 1038368473, 1041557913, -1143485305, -1139346043)\n\t\t + W(10, -1122023828, 1015759447, -1129065232, 1025211173)\n\t\t + W(11, -1119912573, -1120935138, 1022194670, -1131327617);\n\tsum2 = W(0, -1132724746, -1125894137, 1008401986, -1123753553)\n\t\t + W(1, 1028568703, -1129573217, -1115138968, -1129237393)\n\t\t + W(2, -1136277690, 1023794749, 1034921985, -1135255538)\n\t\t + W(3, -1095862669, -1103833757, 989975657, -1117578737)\n\t\t + W(4, -1115335750, 1019650853, -1111489002, 1065003137)\n\t\t + W(5, 1042205114, -1104966989, 1028245440, -1137003202)\n\t\t + W(6, -1142062564, -1102896527, -1095970428, 1052274635)\n\t\t + W(7, 1050282098, 1039075981, -1124502561, 1029353869)\n\t\t + W(8, -1111737990, 1036465851, -1093339450, -1130345777) + W(9, 961646223, -1123958953, 975314596, 981021860)\n\t\t + W(10, 1021138001, -1117376889, 1036367329, -1114642052)\n\t\t + W(11, 983274770, -1121876761, -1131382405, -1129104973);\n\tWS(1064957100, -1084259623);\n\tsum1 = W(0, -1147443767, 1002237105, 1042679235, 1025036588) + W(1, 1039980881, 1039876787, -1122119878, 1046679440)\n\t\t + W(2, 1048172674, 1022388856, -1111985505, -1105536623)\n\t\t + W(3, -1111204540, -1118973740, -1115201293, 1036937851)\n\t\t + W(4, 1050085746, 1049301459, 1061123934, 1059891343) + W(5, 1063082922, 1059164422, 1050147791, 1052477312)\n\t\t + W(6, -1087174820, -1096483251, -1084863818, -1085360136)\n\t\t + W(7, -1087496217, -1085023864, -1099749261, -1093770425)\n\t\t + W(8, -1110620477, -1130736462, 1036594273, -1096717087)\n\t\t + W(9, 1049051417, -1098175193, 1038851310, -1094492881)\n\t\t + W(10, 1041967934, 1032395752, 1029284270, 1027822410)\n\t\t + W(11, 1038157169, 1033526682, 1035926782, 1040430103);\n\tsum2 = W(0, 1043574668, -1110691764, -1103083598, -1104224219)\n\t\t + W(1, -1111324648, 1045365848, -1123650350, 1040472402)\n\t\t + W(2, -1079200674, -1088609636, -1104512784, 1072315297)\n\t\t + W(3, 1071717488, 1074062948, 1072927288, 1075518858) + W(4, 1070660923, 1057860954, -1107138551, -1092267131)\n\t\t + W(5, -1073631870, -1072626825, -1076777698, -1068851440)\n\t\t + W(6, 1052128984, 1049301959, -1106877192, -1082025998)\n\t\t + W(7, -1098154139, 1060924493, 1055782129, -1085268633)\n\t\t + W(8, -1102512316, -1119415890, -1099577256, 1048136354)\n\t\t + W(9, -1101281480, 1049098296, 1053482338, 1045375219)\n\t\t + W(10, -1114631788, -1111966430, 1025811761, -1120067756)\n\t\t + W(11, -1097839567, 1046934152, -1142912019, -1113956244);\n\tWS(-1075237718, 1059347685);\n\tsum1 = W(0, 1021242911, 1033512399, 1029870036, 1022930282) + W(1, 1032776022, 1018371807, 1019954077, 1033340372)\n\t\t + W(2, 1049968737, -1159856274, 1035044013, -1122614884)\n\t\t + W(3, -1113136009, -1134430929, -1114025505, 1040742208)\n\t\t + W(4, -1123217820, 1052611492, 1055398719, 1061884279) + W(5, 1059035017, 1058365139, 1054270736, 1057072208)\n\t\t + W(6, -1100043508, -1096977477, -1086974821, -1081627821)\n\t\t + W(7, -1085989237, -1083853344, -1094951367, -1082038839)\n\t\t + W(8, -1123750750, 1035058824, -1111424357, 1035852049) + W(9, 1046594056, 1040835864, 1036293471, 1043435581)\n\t\t + W(10, 1039650209, -1164938034, 1031585078, -1146263191)\n\t\t + W(11, 1040828171, -1113397210, 1041271429, -1112152131);\n\tsum2 = W(0, -1109418256, 1045686709, 1025535098, 1041368995) + W(1, 1025255906, 1045341483, -1131647237, 1050563248)\n\t\t + W(2, -1082007392, -1092895857, -1097230803, -1087580936)\n\t\t + W(3, -1090709237, 1030380818, -1098811123, -1122444474)\n\t\t + W(4, 1074622373, 1045059925, 1022527077, 1072979117)\n\t\t + W(5, 1059630355, -1082271661, -1098333373, -1080249300)\n\t\t + W(6, -1087167323, -1090791673, 1061750517, 1066822104)\n\t\t + W(7, -1104688853, -1098772696, -1097425000, 1035536875)\n\t\t + W(8, -1079889153, 1052961109, -1094791227, -1121141584)\n\t\t + W(9, -1114952578, 1048788253, -1109808864, 1062091865)\n\t\t + W(10, 1054843717, -1111299754, -1097908774, 1039933817)\n\t\t + W(11, -1109459004, 1032974905, 1041274025, -1101634861);\n\tWS(-1073405707, 1071333561);\n\tsum1 = W(0, 1032445482, -1114759602, 1009365348, -1116673978)\n\t\t + W(1, -1140494528, -1138343378, -1164102249, -1128324122)\n\t\t + W(2, -1107154225, 1043648434, 1025826187, 1050217769) + W(3, 1045274198, 1041826370, 1037855412, 1036590066)\n\t\t + W(4, -1086616986, -1097373989, -1088696011, -1084271170)\n\t\t + W(5, -1086550017, -1088202787, -1096484208, -1090407429)\n\t\t + W(6, 1053035442, 1049497533, 1058380737, 1057270871) + W(7, 1060414079, 1054213138, 1049814032, 1044502774)\n\t\t + W(8, 1037191452, -1113096234, 1042579156, 1027100008)\n\t\t + W(9, -1122447285, 1033632004, -1117413058, 1049279047)\n\t\t + W(10, 1005358651, -1140703610, -1147371482, 1008260703)\n\t\t + W(11, -1128134433, -1146407565, -1132301012, 1030979244);\n\tsum2 =\n\t\tW(0, -1104849756, -1130309268, 1032168017, 1006608216) + W(1, 1025939811, -1116205504, -1134020588, 1015836550)\n\t\t+ W(2, 1044778147, 1042344095, -1115874267, 1016899230) + W(3, 1015318926, 1017541078, 1025032291, -1134707560)\n\t\t+ W(4, 1087011564, 1065552014, -1071484991, -1064792716)\n\t\t+ W(5, -1108487910, -1111002668, 1026184365, -1105554232)\n\t\t+ W(6, 1051692028, 1050304642, -1095624232, -1080996320) + W(7, 1038353709, 1015541566, -1115175630, 1035428553)\n\t\t+ W(8, -1115275477, 1012814276, 1034711867, 1012706900) + W(9, 1031018877, 1017981722, 1016059306, 1030487759)\n\t\t+ W(10, 1024288807, -1122813731, 1018071134, -1113948677)\n\t\t+ W(11, 1039145567, -1121567210, -1161414849, 957459976);\n\tWS(-1093094231, 1019545057);\n\tsum1 = W(0, -1147370279, -1111661690, 1036370005, -1130128916)\n\t\t + W(1, -1138886402, -1114353490, -1139052495, -1123566046)\n\t\t + W(2, 1024662611, 1043371102, -1098598749, -1121967929) + W(3, 1034324947, 1030255498, 1020719663, 983686292)\n\t\t + W(4, 1045730364, 1007712219, 1063151515, 1048771569) + W(5, -1102866212, 1043747359, 1042970997, 1044423271)\n\t\t + W(6, -1100871081, -1103400446, -1086049630, -1094208743)\n\t\t + W(7, 1057052051, -1103168823, -1114366281, -1105757546)\n\t\t + W(8, -1113292876, -1125293706, 1038700136, 1042591246)\n\t\t + W(9, -1109292474, 1040829042, -1113681601, -1119014482)\n\t\t + W(10, -1115285964, 1035921815, -1106696483, 1031896756)\n\t\t + W(11, -1117085921, -1117982022, 986496271, -1116127556);\n\tsum2 =\n\t\tW(0, 1017737448, -1112488549, 1041909593, -1119128646) + W(1, 995222883, -1138532089, -1122958336, 1002378369)\n\t\t+ W(2, -1113949677, 1043174240, -1095542187, -1123930650)\n\t\t+ W(3, 1011641777, 1043431269, -1133447353, 1011720393) + W(4, -1109074925, -1099690943, 1055357640, 1063813292)\n\t\t+ W(5, 1029075282, -1111808055, -1121958092, -1111615901) + W(6, -1106456753, 1036040708, 990810979, 1064786485)\n\t\t+ W(7, -1080550900, -1099317256, -1111251400, -1122017034)\n\t\t+ W(8, 1033894674, -1136025401, 1036060652, -1095508468) + W(9, -1096849813, 1042059844, 1031456264, 1041840135)\n\t\t+ W(10, 1002006465, -1127095326, -1106928479, 1041202855)\n\t\t+ W(11, 1028541984, 1013308785, -1130037494, 1011740497);\n\tWS(1065464534, 1066200435);\n\tsum1 = W(0, -1120929867, 1037468205, -1104046500, -1118049328)\n\t\t + W(1, 1026495526, -1102710553, 1047356358, -1104379061)\n\t\t + W(2, -1114034816, -1098649416, 1044270480, 1030873567) + W(3, 1027018036, 1029661039, 992085460, 1014898857)\n\t\t + W(4, -1093428139, -1095417420, -1095455089, -1078956988)\n\t\t + W(5, -1097112752, -1090364038, -1098761015, -1089997432)\n\t\t + W(6, 1053507241, 1053719708, 1059517274, 1062996894) + W(7, 1062358792, 1051059848, 1053033759, 1058137077)\n\t\t + W(8, 1039630850, -1117479019, -1116571174, 1037682987)\n\t\t + W(9, -1100052716, -1134398359, -1124964177, -1119205176)\n\t\t + W(10, 1039737375, -1104296205, 1034668025, 1027940302)\n\t\t + W(11, -1105628906, 1047874257, -1105711476, 1036556777);\n\tsum2 = W(0, 1052570920, -1096757231, 1032706704, 1048916325) + W(1, 1032567852, 1027784571, -1123035498, 1032789056)\n\t\t + W(2, -1079960756, -1072214843, -1067716640, -1071149720)\n\t\t + W(3, -1113086642, 1026889523, -1102782368, -1113248449)\n\t\t + W(4, 1059860803, 1077140634, 1078085184, 1074719494) + W(5, -1126012658, 1023965646, 1033915049, -1131155204)\n\t\t + W(6, 1024102895, 1045135233, 1007395147, 1048879105)\n\t\t + W(7, -1105291454, -1125605772, 1036400237, -1120868355)\n\t\t + W(8, -1109439044, -1135125103, 1039504993, -1119420973)\n\t\t + W(9, 1042487387, -1107726802, 1040624471, -1123377002) + W(10, 1028585912, 1026412089, 999691338, 1031274943)\n\t\t + W(11, -1115876939, 1031655696, -1118021143, 1033633154);\n\tWS(-1088460652, -1077196042);\n\tsum1 = W(0, -1106714405, 1012745873, -1106817926, 1014233321)\n\t\t + W(1, -1139695810, -1112340330, -1112616426, 1014140598)\n\t\t + W(2, -1126618358, -1104692362, -1128320455, -1113350277)\n\t\t + W(3, -1104636978, -1111992333, -1112151140, -1103199781)\n\t\t + W(4, -1100538888, -1105672234, -1096420642, 1032760733)\n\t\t + W(5, 980853696, -1098221750, 1032069058, -1124202648) + W(6, 1061836401, 1049398341, 1063373516, 1062672955)\n\t\t + W(7, 1040237156, 1049303442, -1115352833, 1047738902)\n\t\t + W(8, -1105561066, -1107347643, -1095103574, -1104500106)\n\t\t + W(9, -1136108756, -1098848505, 1028357771, -1108236605)\n\t\t + W(10, 1017778831, -1107815087, 1021813111, -1130991024)\n\t\t + W(11, 1015562593, -1124042178, -1117430379, 1024298444);\n\tsum2 =\n\t\tW(0, 1042942941, -1103739979, 1021675082, 1031504716) + W(1, -1103784377, 1021140017, 1032312275, -1113021145)\n\t\t+ W(2, -1095373315, 1042549384, -1100136800, 1032277385) + W(3, 1051314558, -1097536524, 1033748340, 1006926454)\n\t\t+ W(4, 1047404354, -1104635751, -1156628070, 1056265483)\n\t\t+ W(5, -1086627236, 1056610233, -1097748456, 1032415346) + W(6, 1041600542, 1049880149, 1042313351, -1095000083)\n\t\t+ W(7, 1058671506, -1087499329, 1053303874, -1106742186)\n\t\t+ W(8, 1029337611, -1113660916, -1103511888, 1052284225)\n\t\t+ W(9, -1098025422, 1053296214, -1097031052, 1040224097)\n\t\t+ W(10, -1116792463, 1033409028, -1100575516, 1042607543)\n\t\t+ W(11, -1102539848, -1123811627, 1034071897, -1116904421);\n\tWS(-1090190636, 1052333694);\n\tsum1 = W(0, -1118008162, 1017370722, 1028313190, 1032465571) + W(1, 1021024634, 1022145795, 974396430, 1023704762)\n\t\t + W(2, 1046164882, 1025512151, 1039176172, -1140639831)\n\t\t + W(3, -1114523818, -1123803590, -1114987978, -1150325779)\n\t\t + W(4, -1087764995, -1107299674, -1107276920, 1054861041)\n\t\t + W(5, 1048774281, 1052546887, 1033108808, 1052242867) + W(6, 1050774996, -1113611419, 1042980645, -1104478910)\n\t\t + W(7, -1116066086, -1088290914, -1101829203, -1082760046)\n\t\t + W(8, -1132114980, -1133738119, 1016759930, 1039228938) + W(9, 1029146129, 1046828701, 1025239231, 1050382392)\n\t\t + W(10, 992812356, -1143374172, 1031741320, 991966796)\n\t\t + W(11, -1131726971, -1135053738, -1135839572, -1117633184);\n\tsum2 = W(0, -1112927492, 1000278501, -1115114722, 1038568093)\n\t\t + W(1, -1107752992, 1036864823, -1111435217, 999311589)\n\t\t + W(2, -1126311221, -1112124316, -1096516945, -1095439368)\n\t\t + W(3, 1035770391, -1173738153, -1127749525, -1118042174)\n\t\t + W(4, -1124129707, 1030656727, 1062718459, 1069168233)\n\t\t + W(5, -1092856910, -1097729376, -1108466839, -1106807928)\n\t\t + W(6, -1089259297, -1136644755, -1089907054, 1066488720)\n\t\t + W(7, 1057602472, -1119016562, 1028769031, -1101412503)\n\t\t + W(8, -1121960162, -1119195008, -1113085858, -1108783853)\n\t\t + W(9, -1101947316, -1105922885, -1119106133, -1119408565)\n\t\t + W(10, -1127721129, -1143597573, 1010259715, 1016497897)\n\t\t + W(11, -1142073349, 1034450025, -1113345821, -1121786357);\n\tWS(1050584535, 1068150000);\n\tsum1 =\n\t\tW(0, -1115260532, 1010165469, -1112895478, 1003680362) + W(1, 1038151522, -1113655284, -1132334157, -1116596385)\n\t\t+ W(2, 1034938395, -1115625742, 1043729220, 1046586119) + W(3, -1096382429, 1036369142, -1110737789, 1020311663)\n\t\t+ W(4, 1038987194, 1047833470, -1102791097, 1053057826) + W(5, 1060286702, 1031810112, 1033665067, 1045919272)\n\t\t+ W(6, -1117589351, -1104527215, 1041775364, -1092950416)\n\t\t+ W(7, -1085160955, -1099697720, -1112334730, -1112800213)\n\t\t+ W(8, -1115913835, -1116485512, 1035117570, 1032942189)\n\t\t+ W(9, 1051158381, -1109351189, 1035094123, -1113211075)\n\t\t+ W(10, 1013034091, 1026352434, -1123123343, -1126776150)\n\t\t+ W(11, -1118268740, 992197073, 1007592182, -1128843070);\n\tsum2 =\n\t\tW(0, 1027450901, 999052617, 998486633, -1098069390) + W(1, 1050271656, -1144500281, 1034115809, -1111215245)\n\t\t+ W(2, -1130117632, 1037992777, 1035832253, 1058826704) + W(3, -1075559944, 1051052067, -1104035684, 1041076323)\n\t\t+ W(4, -1112751331, 1031860941, -1100828230, 1066377631)\n\t\t+ W(5, 1059983898, -1089703828, 1037142243, -1116488683)\n\t\t+ W(6, 1023748039, -1148181737, -1107268336, 1031601953)\n\t\t+ W(7, -1105105514, 1006070601, 1031181077, -1123703892)\n\t\t+ W(8, -1129067048, 1031574877, -1108371420, -1110435251)\n\t\t+ W(9, -1111123861, -1135053221, 1013422629, 994427506) + W(10, 1020055214, -1123191999, -1176849298, 992240434)\n\t\t+ W(11, 1022099846, -1122685646, -1154287506, 1025316569);\n\tWS(1065940278, 1034622363);\n\tsum1 =\n\t\tW(0, -1130882111, 1018945629, 1038546130, -1109081570) + W(1, -1116833467, 1027338207, -1118439678, 1023675896)\n\t\t+ W(2, 1042781009, -1105035701, 1037583679, -1089961211)\n\t\t+ W(3, -1106689964, 1025705412, -1110899849, 1000818681) + W(4, 1048563851, 1039562393, 1050832116, 1065150616)\n\t\t+ W(5, 1063013875, 1053064399, 1043578884, 1052844651)\n\t\t+ W(6, -1106282856, -1093168999, -1106056839, -1081267407)\n\t\t+ W(7, -1093571617, -1098826451, -1098971955, -1103816344)\n\t\t+ W(8, 991352096, -1128564863, 1040441019, -1125259845) + W(9, 1037655800, 1032573560, -1126802554, -1174556270)\n\t\t+ W(10, -1132163876, -1146137419, 1034240611, -1103163033)\n\t\t+ W(11, 1014989293, -1132178841, -1140385876, -1124029942);\n\tsum2 = W(0, 1042045232, -1100582068, 1051353130, -1098661297)\n\t\t + W(1, 1033093932, 1041505758, -1111611431, 1036803556)\n\t\t + W(2, 1025081894, 1047796551, -1135649915, -1083821047)\n\t\t + W(3, -1113123121, -1102707738, 1042774566, -1119704488)\n\t\t + W(4, -1120251562, -1130142714, -1091982339, 1066411068)\n\t\t + W(5, -1108263063, -1116829613, 1029093314, -1105374597)\n\t\t + W(6, -1098032480, 1051286467, -1088973774, 1066192686)\n\t\t + W(7, -1096817778, -1124748705, -1115318079, 1039210409)\n\t\t + W(8, -1122897683, -1114446743, 1048662352, -1098476628)\n\t\t + W(9, 1043244089, -1105512115, 1039955893, -1115075522)\n\t\t + W(10, -1131598407, 1028094206, -1114986235, 1035402858)\n\t\t + W(11, -1113670703, 1040252082, -1113507172, -1136180467);\n\tWS(1056991468, -1087030746);\n\tsum1 =\n\t\tW(0, -1123211458, 1040392564, -1107179074, 1032323379) + W(1, -1112698351, -1113154609, 1035059984, -1117349658)\n\t\t+ W(2, -1104816506, -1123900599, -1097679367, 1050060447)\n\t\t+ W(3, -1113372906, -1118981766, 1036804874, -1117759553)\n\t\t+ W(4, -1105628499, 1035944426, -1092912076, 1043269081)\n\t\t+ W(5, -1098944114, -1111852653, 1030188977, -1099907470) + W(6, 1049039296, 1031104918, 1058030045, 1044634502)\n\t\t+ W(7, 1032247835, 1043769326, 1035537687, 1048904265) + W(8, -1110865210, 1038992913, -1092536332, 1052766173)\n\t\t+ W(9, -1101773536, -1111088882, 1017337855, -1120093295)\n\t\t+ W(10, -1119944116, 1019968535, -1113705364, 1024115141)\n\t\t+ W(11, 1016666555, -1113641643, 1034739876, -1119368937);\n\tsum2 = W(0, 1038207100, 1055370704, 1017023961, -1102268135)\n\t\t + W(1, -1122475964, 1023693826, 1033230771, -1120372849)\n\t\t + W(2, -1100024892, -1091918952, -1082116017, -1125190319)\n\t\t + W(3, 1048656820, -1118701724, 1009208157, 1017593165) + W(4, 1019998746, -1108168198, 1065911065, 1060923636)\n\t\t + W(5, -1095962080, 1025593786, 1022143062, -1123799386)\n\t\t + W(6, -1116235844, 1051323790, -1096201210, -1094794141)\n\t\t + W(7, 1023749917, -1112111831, 1028403793, -1116942925) + W(8, 1028590129, 1017416940, 1032160655, 1048662690)\n\t\t + W(9, 1005611185, -1121410776, -1131420642, 1018425448)\n\t\t + W(10, -1132429552, -1131674494, -1107738152, -1115273448)\n\t\t + W(11, -1120617509, 1032669658, 1007544955, 990755743);\n\tWS(1065408790, 1036624080);\n\tsum1 = W(0, 1031689276, -1118902603, -1130392064, -1130349122)\n\t\t + W(1, -1124855342, -1120117724, 1032115325, -1114562026)\n\t\t + W(2, -1095782030, 1036811736, -1106389326, -1116251760)\n\t\t + W(3, 1016267643, -1116551776, 1029730958, -1110739566)\n\t\t + W(4, 1040908418, -1099523235, -1100633526, -1088986706)\n\t\t + W(5, -1097124896, -1093812931, -1102530619, -1093706094)\n\t\t + W(6, 1044865119, 1048657234, 1056569877, 1059819669) + W(7, 1057017186, 1059687187, 1046000250, 1058243684)\n\t\t + W(8, 1010781241, -1114118270, -1105362262, -1109527143)\n\t\t + W(9, -1101014271, -1105256235, 1028862634, -1118348593)\n\t\t + W(10, -1124793181, -1132122507, 1010247305, 1021657598)\n\t\t + W(11, -1147394236, 1019294354, -1131137795, 1010280523);\n\tsum2 =\n\t\tW(0, 1008018405, -1131603511, 988821927, -1126539767) + W(1, 1029044494, -1154431236, -1144594818, -1134541747)\n\t\t+ W(2, 1028827850, -1115409151, 1044469435, -1105522597) + W(3, 1031515550, 1029512486, -1118759177, 1017115388)\n\t\t+ W(4, 1048442625, -1128423353, -1144038842, -1080807551)\n\t\t+ W(5, -1100063920, 1047735839, 1049631559, 1040817807) + W(6, 1022982076, 976919119, -1106419532, -1069309764)\n\t\t+ W(7, -1077869698, 1057375362, 1074645104, 1074183528) + W(8, 1015261982, -1110305290, 1025710382, -1128896061)\n\t\t+ W(9, 1034212953, 1047372093, -1121013958, 1028992794)\n\t\t+ W(10, 1023643398, -1142661114, 1024565032, -1156968388)\n\t\t+ W(11, -1108906576, 1040986767, -1109343217, 1013497529);\n\tWS(-1134496480, -1135409208);\n\tsum1 =\n\t\tW(0, 1012816882, -1131032216, 1015795842, 1017081284) + W(1, 1032335660, -1114842158, -1121133019, 1020892138)\n\t\t+ W(2, -1118561391, 1023949458, 1025102291, -1098855254)\n\t\t+ W(3, -1109465919, 1018180354, 1039697400, -1121622748)\n\t\t+ W(4, -1172095542, -1135187513, -1122643706, 1062211658)\n\t\t+ W(5, 1053298610, 1055550179, -1104417019, 1042088653) + W(6, 1042727039, -1111514505, 1044113108, -1088869665)\n\t\t+ W(7, -1090758606, -1097017583, 1024023145, -1131309822)\n\t\t+ W(8, -1101252924, 940438235, -1099247502, 1037442288) + W(9, 1036453998, 1038283500, -1127849669, -1111728213)\n\t\t+ W(10, 1038725048, -1118209095, 1039141810, -1110868352)\n\t\t+ W(11, -1124785329, -1123999226, 984058180, 985363057);\n\tsum2 =\n\t\tW(0, 1027844464, -1120185020, 1033301171, -1142892826) + W(1, -1130897478, -1112219415, 1008317678, -1123809910)\n\t\t+ W(2, -1123756397, 1023474305, -1120807818, 1045181163)\n\t\t+ W(3, 1050514681, -1148494098, -1124897908, -1112292483)\n\t\t+ W(4, -1109401613, 1009596088, -1105464515, -1069578385)\n\t\t+ W(5, 1080182479, 1033916695, -1111316356, 1038900121)\n\t\t+ W(6, -1123223808, 1048386893, -1117881742, -1079085438)\n\t\t+ W(7, 1057107198, -1155326684, 1015620530, -1138311341) + W(8, 1035039619, -1119575836, 1029989604, 1032607110)\n\t\t+ W(9, -1113328530, -1143648562, 1010222764, -1144599918)\n\t\t+ W(10, -1128717516, -1197272208, -1129559846, 1013531724)\n\t\t+ W(11, 1001587842, -1126181730, 1011089790, -1129634008);\n\tWS(1063953772, 1006246735);\n\tsum1 =\n\t\tW(0, -1129265445, -1103221880, -1129858606, -1113052252) + W(1, 970168057, 1035503657, -1114702297, 1026538155)\n\t\t+ W(2, 1023929568, -1113408580, -1152025615, -1124775629)\n\t\t+ W(3, -1116248388, -1112901548, -1114551939, 1012918985) + W(4, 1050480356, 1053092565, 1054804888, 1058637767)\n\t\t+ W(5, 1061520345, 1052655373, 1043614208, 1053852345)\n\t\t+ W(6, -1094701786, -1092563365, -1099755687, -1081976315)\n\t\t+ W(7, -1085039957, -1106127939, -1104465584, -1094975651)\n\t\t+ W(8, 1037312131, -1114954585, 1041973195, 1043978961) + W(9, -1109284733, 1037644971, 1036504960, -1153236991)\n\t\t+ W(10, 1034664643, 1012249970, 1007014628, 1034276907)\n\t\t+ W(11, -1121545966, 1031841028, -1122618723, 1015394179);\n\tsum2 = W(0, -1108119214, -1096454441, -1110533412, -1119694402)\n\t\t + W(1, -1127729168, -1110958880, 1023031785, -1130979192)\n\t\t + W(2, -1098605940, 1047215192, -1103381544, -1128298432)\n\t\t + W(3, -1115663656, -1114162078, 1023974294, -1102917557)\n\t\t + W(4, 1035846227, -1114546522, 1042040175, 1054173861) + W(5, -1103681801, 1035812038, 1020649501, 1043843622)\n\t\t + W(6, 1036002502, 1051355228, -1102267339, 1055154953) + W(7, 1052945690, -1097546689, 1033369183, 1033695483)\n\t\t + W(8, -1110269476, 1034086715, -1102892813, 1033662351)\n\t\t + W(9, 1018137856, -1135158408, 998437331, -1106336801)\n\t\t + W(10, -1115932080, 1019597651, -1130886478, -1108620470)\n\t\t + W(11, 1033484697, -1106956606, 1029836288, 1026224246);\n\tWS(1049960663, -1098656338);\n\tsum1 =\n\t\tW(0, -1129270334, 1010743226, -1116543140, 1036165346) + W(1, 1026370235, 1026933359, 1009750007, -1164389112)\n\t\t+ W(2, -1097905355, 1038429850, 1026505899, -1111354490) + W(3, 1012909508, 1034045586, -1139624135, 1033987231)\n\t\t+ W(4, -1106458043, -1094238830, -1084542826, -1093117384)\n\t\t+ W(5, -1096055524, -1093158415, -1113672231, -1098353419)\n\t\t+ W(6, 1053746044, 1050579558, 1060156652, 1065413702) + W(7, -1110641506, -1140159326, -1153271990, 1046556600)\n\t\t+ W(8, -1153859324, 1008020477, -1101873487, -1122984978)\n\t\t+ W(9, -1132001470, 1048347588, 1027525597, -1124973593)\n\t\t+ W(10, -1120671826, 1036488405, 1033306211, 1035776465)\n\t\t+ W(11, 1015184758, -1115507932, 1024719161, 1037016731);\n\tsum2 = W(0, 1007202997, 1038605814, -1111184485, -1097778206)\n\t\t + W(1, -1107862779, -1126800416, -1122928880, -1117103670)\n\t\t + W(2, -1107138382, -1092409649, -1086536233, 1033842165)\n\t\t + W(3, 1050500010, -1107791267, 1035028069, 1024236113)\n\t\t + W(4, -1101985157, -1111080585, 1058778058, 1062592323)\n\t\t + W(5, -1115904936, 1050870644, -1115500703, -1137706913)\n\t\t + W(6, -1105521455, 1031799434, -1102287591, 1054124413)\n\t\t + W(7, -1121603522, 1039372702, 1030823202, 1012044041) + W(8, 998286218, -1127152184, 1043783051, -1107786643)\n\t\t + W(9, -1104929125, -1103666737, -1123649878, 1042413442)\n\t\t + W(10, -1135144653, -1138707909, 1018462794, -1134709509)\n\t\t + W(11, 1016336685, 1035379787, -1120475406, -1119073178);\n\tWS(1045571246, -1101396513);\n\tsum1 = W(0, 1027156266, -1135540454, -1123739311, -1123826896)\n\t\t + W(1, -1110505155, -1138173481, 1019384210, -1138775820)\n\t\t + W(2, -1105879340, 1031079263, 1036462891, 1048275928) + W(3, 1040289247, 1033674439, 1035302207, -1109766005)\n\t\t + W(4, -1095381975, -1094890856, -1086841044, -1081913239)\n\t\t + W(5, -1087831711, -1095054872, -1100616678, -1096527684)\n\t\t + W(6, 1052608133, 1052732944, 1059410250, 1057453824) + W(7, 1053535332, 1059217778, 1056369955, 1057086003)\n\t\t + W(8, 1036979366, -1110160581, 1033495803, 986236332) + W(9, -1121128186, -1117509614, 1002559041, 1031959012)\n\t\t + W(10, -1116386461, -1124519785, -1113888968, 1015417435)\n\t\t + W(11, -1106215130, 1025380519, -1132265864, 1009437253);\n\tsum2 = W(0, 1023702857, -1116086512, 1027064225, 1024261913) + W(1, -1115739014, 1023117658, 1011341860, 1016675050)\n\t\t + W(2, 1025579445, 1041684936, 991232624, 1049263730) + W(3, 994389040, -1121855219, -1121905805, -1114246345)\n\t\t + W(4, -1107828603, -1100190580, -1127488618, -1121382305)\n\t\t + W(5, 1049530396, 1041567276, -1097196557, -1125328530)\n\t\t + W(6, 1030949885, -1127701406, 1063977916, 1081524863)\n\t\t + W(7, 1074557390, -1078514947, -1067412604, -1072747255)\n\t\t + W(8, 1030056541, -1101693823, 1026840857, 1032271344) + W(9, 1041139218, 1024600809, -1110332083, 1045882874)\n\t\t + W(10, -1138881396, 1031874044, -1115029594, -1124133978)\n\t\t + W(11, 1015337722, -1113125346, -1157524144, 1009384836);\n\tWS(-1091844311, 1066789497);\n\tsum1 = W(0, -1126657090, -1118280816, 1035276339, 1034822275)\n\t\t + W(1, -1122398524, 1027512241, -1105911320, 1036073133)\n\t\t + W(2, -1121934839, -1104655157, 1036892560, 1041291861)\n\t\t + W(3, 1016354085, -1100932977, -1113195754, -1137558275)\n\t\t + W(4, 1053346558, -1150447404, 1061301148, 1054539137) + W(5, 1061579109, 1052329175, 1010492736, 1052092547)\n\t\t + W(6, -1094816004, -1096277599, -1095276499, -1085328499)\n\t\t + W(7, -1094948141, -1090319102, -1109759879, -1096198988)\n\t\t + W(8, -1134360567, 1026981217, 1035239934, -1132053288)\n\t\t + W(9, 1041572288, -1138204721, 1026669711, -1122862318)\n\t\t + W(10, -1196074864, 1030410603, -1117233544, 1032377106)\n\t\t + W(11, -1113536398, 1028691858, 1016723124, 1004385343);\n\tsum2 =\n\t\tW(0, -1130924015, 976327856, 1006816288, 1032746467) + W(1, -1109752024, 1030725620, -1118656485, 1013150272)\n\t\t+ W(2, 1022730742, -1107671502, -1102494949, -1063244855)\n\t\t+ W(3, -1117144683, -1118200508, 1023153636, 1019358625) + W(4, -1156842543, 1030703882, 1050591037, 1084548157)\n\t\t+ W(5, 1041535529, 1030607420, -1117378226, 1000111712) + W(6, 1039023607, -1100688592, 1039287442, -1091568120)\n\t\t+ W(7, 1042495948, -1100624377, 1033109796, -1135441064)\n\t\t+ W(8, -1147026848, -1113451109, 1030233046, 1034384724) + W(9, 1024850879, 1037336210, -1123040622, 1025293966)\n\t\t+ W(10, 1024455841, 1015244616, -1121583866, 1032201434)\n\t\t+ W(11, -1112832588, 984232072, 1003511712, -1124806470);\n\tWS(1062375148, 982896070);\n\tsum1 = W(0, 1041356906, -1141741512, -1123251246, -1121772047)\n\t\t + W(1, -1138991637, -1156317853, -1161666833, 1011726474)\n\t\t + W(2, -1092346958, 1042371688, -1107640316, 1037798623)\n\t\t + W(3, 1035668286, 1026956462, 1016120313, -1115727625)\n\t\t + W(4, -1098857839, -1100631199, -1093348349, -1081710855)\n\t\t + W(5, -1084667272, -1088318752, -1093940123, -1084607638)\n\t\t + W(6, 1052252533, 1048733184, 1057292943, 1063732968) + W(7, 1061645578, 1059891330, 1051947731, 1059995535)\n\t\t + W(8, 1050501706, -1126563284, 1043133649, -1111246422)\n\t\t + W(9, -1112114769, -1106214611, -1109426316, -1190508359)\n\t\t + W(10, -1165233042, -1134397903, 1008063554, 1032268279)\n\t\t + W(11, 988108978, 1037368483, -1138661789, 1040598420);\n\tsum2 =\n\t\tW(0, -1087149149, -1111774062, -1122195827, 1039123010) + W(1, 1035630599, 1055099903, 1042757145, 1060125526)\n\t\t+ W(2, -1081699534, 1035582541, -1087576154, -1082404199)\n\t\t+ W(3, -1111170675, -1119441337, -1097950160, -1098859385)\n\t\t+ W(4, 1075074133, 1078981756, 1080077903, -1086433828)\n\t\t+ W(5, -1073636555, -1080599553, -1080969229, -1075310961)\n\t\t+ W(6, 1074122230, 1067224402, 1066418532, -1082120864)\n\t\t+ W(7, -1078722695, -1083892454, 1038753292, -1085615144)\n\t\t+ W(8, 972078363, -1092574897, -1094572008, -1101495601) + W(9, -1124013413, 1051613332, 1020974546, 1056506110)\n\t\t+ W(10, -1097056662, 1045566397, 1049096521, -1109136155)\n\t\t+ W(11, 1034655424, 1023040696, 1027077203, -1129411423);\n\tWS(-1073733835, -1077508759);\n\tsum1 = W(0, 1004911573, 999004239, 1008908284, 1032559088) + W(1, -1123346838, 1021646261, -1114632613, 1036339578)\n\t\t + W(2, 1043185540, -1120942224, -1136904037, -1114184455)\n\t\t + W(3, -1112686066, 1032555200, 1005792618, 1040940927) + W(4, 1056421033, 1054442442, 1059517190, 1066321721)\n\t\t + W(5, 1063474337, 1052962698, 1044159722, 992460573)\n\t\t + W(6, -1084678800, -1094509130, -1087084867, -1089134469)\n\t\t + W(7, -1088382556, -1089853747, -1092765869, -1093589176)\n\t\t + W(8, 1025064353, 1020812405, -1149079216, -1127746091)\n\t\t + W(9, 1027145139, -1126936380, 1027348136, -1126618160)\n\t\t + W(10, 1009545653, 1022285001, -1118599969, 1007063543)\n\t\t + W(11, -1149726053, 1015641511, 1023282088, 981480241);\n\tsum2 = W(0, 1016441223, -1123853806, 1034027700, 1016212045) + W(1, 1025170155, 1030169991, 1024326153, 1020004331)\n\t\t + W(2, 1040812131, -1136381199, -1121560396, -1100123577)\n\t\t + W(3, -1100550013, -1105283667, 1029487024, -1102325825)\n\t\t + W(4, -1091551076, 1020713637, -1092123318, 1069362941)\n\t\t + W(5, 1050653373, 1020763615, -1121149602, -1094990109)\n\t\t + W(6, -1083270432, -1123741604, 1057043619, 1065772322)\n\t\t + W(7, 1058297195, -1091989226, -1092470882, -1106605421)\n\t\t + W(8, 1054198423, -1108424657, -1115262538, -1092584961)\n\t\t + W(9, -1121642970, 1029919048, 1039520200, 1026718342)\n\t\t + W(10, 1001473573, -1110846033, 1008724259, -1120589670)\n\t\t + W(11, 1040111989, -1104422780, 1027795061, -1115881428);\n\tWS(-1083424620, -1083774644);\n\tsum1 = W(0, 1025997707, 995558823, -1132669247, 1015677409)\n\t\t + W(1, -1113673299, -1146244698, 1028038186, -1119640804)\n\t\t + W(2, -1107578509, -1112668224, -1109754213, 1048694360)\n\t\t + W(3, -1099923633, 1044345284, -1117921566, 1030760459)\n\t\t + W(4, -1116799831, -1098861996, -1099316274, -1079768279)\n\t\t + W(5, -1093459346, -1098475085, -1113981277, -1105585281)\n\t\t + W(6, 1051882641, 1045883512, 1060321715, 1059777970) + W(7, 1064776049, 1036566882, 1042756750, 1033934183)\n\t\t + W(8, -1114213177, -1127946135, -1106758402, 1040276008)\n\t\t + W(9, -1108196294, 1008462282, -1117078569, -1130472177)\n\t\t + W(10, -1140244728, -1116793621, -1131243108, -1129876893)\n\t\t + W(11, -1167573435, 1020492609, 1015090721, -1176961296);\n\tsum2 =\n\t\tW(0, -1120400279, 1006239848, 1033967902, -1138878316) + W(1, 1012842788, -1135736068, 1028356101, -1120658117)\n\t\t+ W(2, -1120118931, -1112851025, -1101370370, 1037781128)\n\t\t+ W(3, -1100258045, 1002346920, -1112182778, 995892591) + W(4, -1114073896, 1016448074, 1047917593, -1113781647)\n\t\t+ W(5, 1045546113, -1114666278, 1002645288, -1115876966) + W(6, 1044457775, -1095953339, 1065044078, 1069276419)\n\t\t+ W(7, -1075186216, 1035717470, -1097061266, 1049663208)\n\t\t+ W(8, 1036833596, -1112980685, -1119396143, -1110041421)\n\t\t+ W(9, -1132903556, -1120766465, 1015304410, -1123504973)\n\t\t+ W(10, -1137956564, -1122147671, 987310366, -1187381491)\n\t\t+ W(11, -1131003226, 1029533357, 1003776904, -1150885167);\n\tWS(1055938007, -1113494123);\n\tsum1 = W(0, 1002908945, 1005413771, 1025040167, 1016082831) + W(1, -1114102015, 1024456642, -1121270129, 1006080470)\n\t\t + W(2, 1028210664, -1117675639, 1040926954, -1118443670) + W(3, 1040854289, 1046508410, 1019764906, 1029150738)\n\t\t + W(4, -1133494457, 1035958810, 1041989700, -1101702418)\n\t\t + W(5, -1098047787, -1093641223, -1111985289, -1102768646)\n\t\t + W(6, -1135464580, -1095959351, -1087581816, -1121242873)\n\t\t + W(7, 1048632765, 1052220147, 1025236686, 1042463785) + W(8, 1008466835, 1040264713, 1048292991, 1034336763)\n\t\t + W(9, 1043249233, -1183964258, 1036425152, -1131127167)\n\t\t + W(10, -1131269290, 1035203030, -1116685065, -1117662885)\n\t\t + W(11, -1132796663, -1144182458, -1137681823, 1031884341);\n\tsum2 = W(0, -1148833389, 1034952858, -1131645803, 1044582101)\n\t\t + W(1, -1100126968, 1041029558, -1101188496, 1038559400)\n\t\t + W(2, -1103329032, -1114547380, -1099667252, 1046239383)\n\t\t + W(3, 1038848953, 1023994452, 1040593566, -1104909140) + W(4, 1039527980, 1019372679, 1017530647, -1095619156)\n\t\t + W(5, 1053527025, -1122648352, 1048348234, 1034383711) + W(6, 1036545465, -1111710878, 1040867364, 1074171367)\n\t\t + W(7, -1072583834, -1089175055, -1110512168, 1048723535)\n\t\t + W(8, -1140514638, 1042452640, 1048394746, 1046568773)\n\t\t + W(9, -1104419698, -1095650184, -1113024814, -1105559093)\n\t\t + W(10, -1111163586, 1025974311, -1102843950, 1030125627)\n\t\t + W(11, 1045672947, 1033990232, 1039972451, -1123744674);\n\tWS(1054254551, 1014537956);\n\tsum1 = W(0, -1121039367, 1018675757, 1022410264, 1028321069) + W(1, 1032078897, 1035879540, 998902321, 1035017184)\n\t\t + W(2, 1035774671, -1130008697, 1030747950, -1107714718)\n\t\t + W(3, -1097508911, -1100889147, -1111836109, -1112194220)\n\t\t + W(4, -1112598570, 1008273253, -1093495169, 1061840455) + W(5, 1062686448, 1058139578, 1050284599, 1050365160)\n\t\t + W(6, -1132150029, -1122251932, 1041075666, -1100441032)\n\t\t + W(7, -1084814013, -1090418276, -1098262366, -1104639554)\n\t\t + W(8, -1109088445, -1109769252, -1103842329, -1105690119)\n\t\t + W(9, 1049125597, 1045096257, 1018266794, -1137878196)\n\t\t + W(10, 1040615567, 1003469451, 1040565356, -1126038165)\n\t\t + W(11, -1115375938, -1105705223, 1030169589, -1123088958);\n\tsum2 =\n\t\tW(0, 1011204314, -1151906447, -1132982086, 1015334447) + W(1, -1126682819, 1031867988, -1118412630, 1019402007)\n\t\t+ W(2, -1130282463, 1008292026, -1113509623, -1118416042)\n\t\t+ W(3, 1010705513, 1015562377, 1033032763, -1171211484) + W(4, -1119643322, 1036989282, 1023195387, 1031871454)\n\t\t+ W(5, 1036745108, -1105750465, 1024841875, -1132045005) + W(6, 1040567914, -1093705400, 1046529995, 1053486166)\n\t\t+ W(7, 1053627848, -1097180463, 1042871577, -1098551422) + W(8, 1058038651, 1048788001, 1069827352, 1061661513)\n\t\t+ W(9, -1076895592, -1083563182, -1102862368, -1093245544)\n\t\t+ W(10, -1092395975, 1041384381, -1082188469, -1087135929)\n\t\t+ W(11, 1050130047, 1062283738, -1108358221, 1058279550);\n\tWS(1057163500, -1105993220);\n\tsum1 =\n\t\tW(0, -1117201821, -1121502764, 1035599249, -1105708961) + W(1, 1039647740, -1100922079, 1009912816, -1136735831)\n\t\t+ W(2, -1127293622, 1045431725, -1100979748, 1049617722) + W(3, -1110465655, 1042176840, 1018827936, 1001114727)\n\t\t+ W(4, 1046510122, -1097880614, 1061106926, -1099817760)\n\t\t+ W(5, -1119635500, -1109566363, -1147860066, 1037588842)\n\t\t+ W(6, -1119279260, 1032698105, -1097882833, -1088567265)\n\t\t+ W(7, 1058361641, -1097567811, 1036626725, -1111863248)\n\t\t+ W(8, -1111026820, 1044535287, -1095331735, 1053288920) + W(9, -1096979757, 1050620014, 999121112, 1037098289)\n\t\t+ W(10, 1018908832, -1110256660, 1024080836, -1117593824)\n\t\t+ W(11, 1027464313, -1113789929, -1159432152, 1012647057);\n\tsum2 = W(0, 1032576295, -1123342042, -1102694716, -1132748357)\n\t\t + W(1, -1114775905, 1033817148, 942234367, -1109637447) + W(2, -1107895050, 1039805910, 1052615154, 1027679479)\n\t\t + W(3, -1183264704, -1127944484, 1017960690, -1117652574)\n\t\t + W(4, 1016729470, -1102939450, 1050355566, 1057040101)\n\t\t + W(5, 1041423933, -1098800812, 1027447559, -1113353192)\n\t\t + W(6, 1038099246, -1120156902, -1100691281, -1098318717)\n\t\t + W(7, 1028185223, 1043085543, -1113846578, 1025700351) + W(8, -1122727069, -1128970625, 1046407453, 997134844)\n\t\t + W(9, -1094682594, 1023808656, 1033077879, -1136470782)\n\t\t + W(10, -1114110583, -1124467804, -1110408836, 1035923921)\n\t\t + W(11, 1040728790, -1104134547, -1111084310, 1024627457);\n\tWS(1069430838, -1077807532);\n\tsum1 = W(0, -1123171840, -1123870031, 1012978707, 1026708965)\n\t\t + W(1, 1032241614, -1110089696, 1013657340, -1120091289)\n\t\t + W(2, 926704291, 1035074891, -1102713036, -1094582899)\n\t\t + W(3, -1104095024, -1131766218, -1123449267, -1126388352)\n\t\t + W(4, 1028287308, 1030377682, 1060355037, 1064667974) + W(5, 1044883747, 1023923417, 1023074654, -1134219998)\n\t\t + W(6, 1024652287, -1104443381, 1049114747, 1049334299)\n\t\t + W(7, -1097738289, -1112895132, -1133494194, -1105084689)\n\t\t + W(8, -1121358347, -1137933441, -1102473935, -1095444677)\n\t\t + W(9, -1112982200, -1115022670, -1123735342, -1125652635)\n\t\t + W(10, -1124249574, -1123723658, -1124350158, -1155502135)\n\t\t + W(11, 996719039, -1114119663, -1129702439, -1115595936);\n\tsum2 = W(0, -1176390445, 1032791968, -1107216374, 1039748018)\n\t\t + W(1, -1104895086, 1038133354, -1123666927, 1013658503)\n\t\t + W(2, -1120278537, -1112747779, 1039675898, 1025598156)\n\t\t + W(3, 1049256042, -1105015824, 1024448666, -1110290749)\n\t\t + W(4, -1122813389, -1119517685, 1061000499, 1059349510)\n\t\t + W(5, -1087513873, 1030867610, -1108606159, 1029186614) + W(6, 1041053822, 1042596904, 1032712030, 1055783944)\n\t\t + W(7, -1099074048, -1084050573, 1040697602, -1106116496)\n\t\t + W(8, 1022193201, -1132233097, 1037891533, 1009116037)\n\t\t + W(9, -1107732985, -1101549778, 1022775251, -1106656496)\n\t\t + W(10, -1120846771, -1150821318, -1120324549, 1006903493)\n\t\t + W(11, -1117395279, 1034659541, -1115429715, 1028618234);\n\tWS(-1107817820, -1083770194);\n\tsum1 = W(0, 1033900161, -1129878691, -1129439246, -1131338575)\n\t\t + W(1, 1015365308, -1128788741, 1034359265, 1024049691) + W(2, -1103638846, 1019165999, 1023785569, 1041664750)\n\t\t + W(3, 1007653393, 1026305479, 1029035509, -1111132977)\n\t\t + W(4, -1091016130, -1105602789, -1097747004, -1076846267)\n\t\t + W(5, -1089110318, -1101714279, -1095981534, -1089968180)\n\t\t + W(6, 1053216608, 1056291523, 1057499003, 1059566574) + W(7, 1057822998, 1057215924, 1051239662, 1055184137)\n\t\t + W(8, 1041711845, -1114138529, -1107402783, 1043057225)\n\t\t + W(9, -1097881621, -1104471663, 1029122288, 1032118072)\n\t\t + W(10, 1032252891, 1005244003, -1129556050, 1037921123)\n\t\t + W(11, -1126092988, 1041959808, 1025745172, 1027268745);\n\tsum2 =\n\t\tW(0, -1108694073, 1045019344, -1102469381, 1037993179) + W(1, -1102369829, 1036817135, -1116848662, -1123721670)\n\t\t+ W(2, 1017327589, 1034893158, -1100848825, -1146521528)\n\t\t+ W(3, -1136622056, -1122158468, 1036214504, -1109074807)\n\t\t+ W(4, 1040440313, 1020539438, -1091152854, 1062010427) + W(5, 1017850914, -1095264144, 1045324437, 1047380031)\n\t\t+ W(6, 1037365040, 1043169414, -1179472005, 1059039676) + W(7, 1038217042, -1119445175, 1048192551, -1115655698)\n\t\t+ W(8, -1097181356, 1044490295, -1098856738, -1105305386)\n\t\t+ W(9, -1109601321, -1098482637, 1034613852, -1105047780)\n\t\t+ W(10, -1123414724, -1142407924, -1124070306, -1103656828)\n\t\t+ W(11, 1025666621, -1105116469, 1027457629, -1121369495);\n\tWS(-1121449656, -1084978473);\n\tsum1 = W(0, 1045775831, 1021114964, 1036495664, 1032769888) + W(1, -1134400474, 1043049231, -1112792957, 1043659613)\n\t\t + W(2, -1099605930, 1028648016, -1113195701, -1106810756)\n\t\t + W(3, 1033523886, -1109837568, 1039225431, -1097941829)\n\t\t + W(4, -1086366198, -1100836955, -1085601027, -1088747404)\n\t\t + W(5, -1083936243, -1087596695, -1102874546, -1088234269)\n\t\t + W(6, 1054843763, 1049277222, 1059006957, 1062277595) + W(7, 1060137529, 1057384673, 1045407794, 1055835664)\n\t\t + W(8, 1044622847, -1121703995, 1039106531, -1122091582)\n\t\t + W(9, -1102614275, 1011169881, -1118753961, 1048366450)\n\t\t + W(10, 1025802254, -1116658981, -1138285574, 1043922200)\n\t\t + W(11, 1020367213, 1042132230, -1132370673, 1039326553);\n\tsum2 = W(0, 1027272459, -1122536322, -1115599503, -1109953333)\n\t\t + W(1, -1101108438, -1160853572, -1125199072, -1105305527)\n\t\t + W(2, -1105747151, -1103046200, 1043039962, 1029006014) + W(3, 1049577028, 1035298821, 1043042004, 1053260045)\n\t\t + W(4, 1058588727, 1025881493, 1025318337, -1079698237)\n\t\t + W(5, -1116019666, 1050247454, -1104971590, -1094505007)\n\t\t + W(6, 1050147388, 1054947781, 1058930692, -1072349877)\n\t\t + W(7, -1069493839, -1072151832, -1072978341, -1072202568)\n\t\t + W(8, -1089616072, -1098050255, 1020160348, 1078384354) + W(9, 1078006681, 1075828182, 1074567753, 1072013431)\n\t\t + W(10, 1040922163, -1157391810, -1097372724, 1029236731)\n\t\t + W(11, -1111844849, -1095907204, 1046502148, 1037030073);\n\tWS(-1076413686, 1050217089);\n\tsum1 =\n\t\tW(0, 1037264211, -1140703701, 1010880426, -1119658251) + W(1, -1116247362, 1031154598, -1125273098, -1131976189)\n\t\t+ W(2, -1103937453, 981259974, -1126374874, 1042459879) + W(3, -1115463620, 1040532067, -1110800684, 1020764716)\n\t\t+ W(4, 1032015257, 1015092336, -1117441203, -1095655209)\n\t\t+ W(5, -1089060935, -1097693400, -1116339093, -1115082479)\n\t\t+ W(6, 1043075881, -1110472573, -1140207123, 1058975156) + W(7, 1059127610, 1049753500, 1026525586, 1038259412)\n\t\t+ W(8, -1122840185, -1115654547, -1121072785, 1016890098)\n\t\t+ W(9, -1095200233, 1024224509, -1116764924, 1027865572)\n\t\t+ W(10, -1144808135, -1126940256, -1127053849, 1040888602)\n\t\t+ W(11, 1021095812, 990976051, -1118091276, 1016317274);\n\tsum2 =\n\t\tW(0, 1057721492, 1028643349, 1060288138, 1059252612) + W(1, -1088865108, -1086775589, -1123025940, -1093527126)\n\t\t+ W(2, -1087030854, -1118716844, -1080168014, -1080273709)\n\t\t+ W(3, 1065839894, 1065802380, 1052992874, 1051057083) + W(4, -1098169441, 1050324940, 1016748144, -1095791676)\n\t\t+ W(5, 1025332663, 1048744751, -1103675095, 1047968677) + W(6, 976966634, 1023362490, -1115171624, 1047291739)\n\t\t+ W(7, -1136639192, -1124716700, 1045176631, -1122660154)\n\t\t+ W(8, 1023517212, -1141117066, 1023617033, -1099550108) + W(9, 1041241265, 1003901823, -1105682362, 1020688386)\n\t\t+ W(10, 1010046217, 1027499437, -1115470708, 1034407868)\n\t\t+ W(11, -1116997486, -1138422172, 1028187249, -1121332252);\n\tWS(1066004950, -1130673709);\n\tsum1 = W(0, -1116101174, -1143212072, -1110468285, -1115338446)\n\t\t + W(1, -1108483849, 1016794668, -1129241385, 1013476922)\n\t\t + W(2, 1031654568, -1115365365, 1037471350, 1044807147) + W(3, 1036857292, 1049500535, -1116011560, 1018991691)\n\t\t + W(4, -1088044468, -1112634148, -1095270314, -1086079158)\n\t\t + W(5, -1084922887, -1089120237, -1096691029, -1092328502)\n\t\t + W(6, 1052873383, 1046315731, 1053790292, 1057379349) + W(7, 1062574892, 1059566963, 1043154809, 1052540519)\n\t\t + W(8, 1041536990, 1018103788, 1044233532, -1114923292)\n\t\t + W(9, -1111082699, -1112535089, 1013224078, 1045681849)\n\t\t + W(10, -1136500130, -1125315968, -1143909091, 1020745202)\n\t\t + W(11, 1016815907, -1120057699, 1009076749, -1111113254);\n\tsum2 = W(0, 1049010278, 1037489391, -1120558834, -1115441721) + W(1, -1107156556, 992841734, 1011333881, 1042878013)\n\t\t + W(2, 1059657103, -1120407882, 1065561208, 1065354919)\n\t\t + W(3, 1033902725, -1090673211, -1082019922, -1076779646)\n\t\t + W(4, -1081123115, -1091075041, -1094693777, -1086070082)\n\t\t + W(5, 1048072918, 1058489027, 1067731839, 1065573397)\n\t\t + W(6, -1096253478, 1044030983, -1088412254, -1088804298)\n\t\t + W(7, 1059822273, 1048768363, -1110539158, 1056386736) + W(8, 1022187211, -1110198086, 1026065263, 979808314)\n\t\t + W(9, 1015305348, -1103664360, -1102578162, 1041735451)\n\t\t + W(10, 1042763848, -1123055347, 1010460099, 1037997843)\n\t\t + W(11, -1106407542, -1127526979, 1046102351, -1098151359);\n\tWS(1047691950, 1051513987);\n\tsum1 =\n\t\tW(0, 1022367675, 1023115866, 1025923810, -1121417283) + W(1, -1135269348, -1123344254, -1153116613, -1140725337)\n\t\t+ W(2, -1106171493, -1148261013, -1110614526, 1048684730) + W(3, 1043654816, 1037977761, 1018209505, 1012206837)\n\t\t+ W(4, 1047705594, -1138130365, -1138856554, -1092459648)\n\t\t+ W(5, -1088007377, -1117423671, -1145599589, -1130685354)\n\t\t+ W(6, -1115678670, 1039875161, -1098498099, 1059839847)\n\t\t+ W(7, 1055365231, -1110502987, -1108540005, 1013205632)\n\t\t+ W(8, -1110486184, 1038987295, -1111291916, 1037143648)\n\t\t+ W(9, -1116325726, 1038170008, 1024662707, -1106962771)\n\t\t+ W(10, -1119968336, -1146539325, 1031736900, -1113038256)\n\t\t+ W(11, 999460043, -1124410005, -1170140361, 1022378313);\n\tsum2 = W(0, -1153456458, -1134949160, 976205336, -1107040555)\n\t\t + W(1, 1031938263, -1148458760, -1128058621, 1018102832)\n\t\t + W(2, 1034638423, -1132037434, 1047224115, -1111241686)\n\t\t + W(3, -1102088763, -1109506803, -1119972538, -1122339703)\n\t\t + W(4, 1026219462, -1110235102, 1041432515, -1098519781) + W(5, 1016119332, 1045200456, 1026438298, 1012163112)\n\t\t + W(6, -1118314715, 1026400860, -1098555575, 1048945857) + W(7, 1066956313, 1038098069, 1020127420, 1026446934)\n\t\t + W(8, -1119545213, 1033998497, 1038320636, 1042089138)\n\t\t + W(9, -1089428981, -1088147582, -1103340362, -1114149729)\n\t\t + W(10, 1020158000, -1129681397, 1034767622, -1100590807)\n\t\t + W(11, -1131704894, 1033722488, 1036980701, -1126638758);\n\tWS(1065730166, 1060778308);\n\tsum1 =\n\t\tW(0, -1109508860, -1155017835, -1113193022, 1018445113)\n\t\t+ W(1, -1116526739, 1027367671, -1113248331, -1116098736)\n\t\t+ W(2, -1157499671, -1122491724, -1101845990, -1123710636)\n\t\t+ W(3, 1037579925, -1109701838, 1024052458, -1155438706) + W(4, 1041425921, 1039607429, 1059840031, -1103201623)\n\t\t+ W(5, -1086536234, -1119532176, -1131587533, -1135484603)\n\t\t+ W(6, 999270323, -1108915110, -1093896302, 1034241095) + W(7, 1065443257, -1115473720, 1023021127, -1169161851)\n\t\t+ W(8, 1009856488, 1019270959, 1048952862, -1124851701) + W(9, -1100984082, 1042597895, 988759974, -1109972554)\n\t\t+ W(10, -1122732458, 1019165315, -1112299503, 1031136123)\n\t\t+ W(11, -1130156262, -1112137490, 1035869970, 1026435614);\n\tsum2 =\n\t\tW(0, -1117967445, 1040648348, -1112630617, 1042642774) + W(1, -1134880336, -1108734545, 1042723069, -1110919553)\n\t\t+ W(2, 1023936292, 1027011316, -1104815876, 1032485416) + W(3, -1097739621, 1008252288, 1027781874, 1017816544)\n\t\t+ W(4, 1048994422, -1081925843, 1069895227, -1079286264)\n\t\t+ W(5, 1067803238, -1093635474, 1039731885, -1113045602)\n\t\t+ W(6, 1036573845, -1090561506, 1061477130, -1076993331)\n\t\t+ W(7, 1074358700, -1082750513, -1152591489, 1040942069) + W(8, 1025878262, -1121546197, 1006994724, 1017402756)\n\t\t+ W(9, -1094759274, -1124517798, -1128233335, 1015619872)\n\t\t+ W(10, -1136777476, 1000734832, -1120512530, 1043800887)\n\t\t+ W(11, -1115175264, -1106635673, 1050798200, -1104563368);\n\tWS(1051081815, 1004177576);\n\tsum1 = W(0, -1127006616, 1009183853, 1030806032, 1035550201)\n\t\t + W(1, -1148492092, 1031890286, -1122950699, 1033051522)\n\t\t + W(2, 1047378036, -1123222753, 1030530563, -1112167248)\n\t\t + W(3, -1102096100, -1119963793, -1117414047, -1118879820)\n\t\t + W(4, 1040477302, -1133548407, 1061394914, 1067589976) + W(5, 1061693295, 1056018877, 1051876647, 1054656608)\n\t\t + W(6, -1095193921, -1099314072, -1084986498, -1091645900)\n\t\t + W(7, -1092420382, -1084371172, -1100397982, -1096248194)\n\t\t + W(8, 984028115, 1033152150, -1134209438, -1104155199)\n\t\t + W(9, -1126214664, -1117645071, -1115478541, -1098736399)\n\t\t + W(10, 1015654525, 1000220336, 1016832613, 1007541309)\n\t\t + W(11, 1020442767, 1016050244, 1015156587, -1120116135);\n\tsum2 =\n\t\tW(0, 1038737431, -1107492679, 1048033211, -1120313369) + W(1, 1015799927, -1127256174, -1108431753, 1025558434)\n\t\t+ W(2, -1086393652, 1061143042, -1086071985, 1050160290) + W(3, 1036302581, -1118303985, 1030572627, 1049210573)\n\t\t+ W(4, -1122890851, -1087802869, 1050554685, 1074235084)\n\t\t+ W(5, -1097102610, -1080828834, 1051308486, -1086660156)\n\t\t+ W(6, 1062117952, -1089713201, 1059347527, 1068761695)\n\t\t+ W(7, 1051722018, -1090432670, -1096060997, -1089293346)\n\t\t+ W(8, 1031555324, 1047951996, 1026779363, -1098359769)\n\t\t+ W(9, 1043634021, -1093586557, -1093678452, -1099341241)\n\t\t+ W(10, -1105710539, 1021198999, -1103176732, 1024031768)\n\t\t+ W(11, -1105088271, 1023611974, -1113357802, 1042868230);\n\tWS(-1081907798, -1114644056);\n\tsum1 = W(0, 1023775725, -1170980595, 1026005873, -1126334628)\n\t\t + W(1, -1135823392, -1129163353, -1151688884, -1129940170)\n\t\t + W(2, -1099395677, -1134709766, -1099241994, -1120114113)\n\t\t + W(3, 1034531271, -1108351113, 1019473342, -1110039318) + W(4, 1055907631, 1050593936, 1058604967, 1054687330)\n\t\t + W(5, 1038229186, 1034921283, 1018134455, -1120708196)\n\t\t + W(6, -1100928459, -1112754945, -1087793848, -1087665246)\n\t\t + W(7, -1104299004, 1040795209, 1040889398, 1054318790) + W(8, -1119324179, 1032148262, 1009969504, 1038203192)\n\t\t + W(9, 1028440637, -1104169898, -1106565731, -1107725509)\n\t\t + W(10, -1109439504, 1017060589, -1128826918, -1138112959)\n\t\t + W(11, 1038462084, 999099597, 1007377992, 1027667523);\n\tsum2 =\n\t\tW(0, -1119441358, -1129970231, 1013923693, -1135011770) + W(1, 1015830944, -1115083307, 1009913072, -1117182320)\n\t\t+ W(2, -1109792567, -1120391232, -1103233485, -1103316489)\n\t\t+ W(3, -1104701758, 961266788, -1120471806, 1032096200) + W(4, -1127769135, 1050978947, 1033489482, 1054134565)\n\t\t+ W(5, 1049300223, -1110832497, 1049274561, -1124368769) + W(6, -1107196821, 992017798, -1095646457, 1049668759)\n\t\t+ W(7, 1056508485, 1047186396, -1110580647, -1109467751) + W(8, 1030789742, 1040616080, 1038693473, -1124339641)\n\t\t+ W(9, 1043974386, -1086696217, -1110322035, -1103392519)\n\t\t+ W(10, -1113410550, 1030775978, -1115392393, -1108882435)\n\t\t+ W(11, -1145057435, -1118394614, 1032794842, 1029776437);\n\tWS(1054547415, -1080700728);\n\tsum1 = W(0, -1118959255, 1000886579, -1108938574, 1035589374)\n\t\t + W(1, -1115953331, -1120209015, -1130255148, -1114831416)\n\t\t + W(2, -1106813137, 1020745112, 1000629071, -1089948699)\n\t\t + W(3, -1104374042, -1115354302, -1115551813, -1107411355)\n\t\t + W(4, -1136179854, 1042266506, -1114102394, 1058763908) + W(5, 1043996152, 1034434840, 1030595334, 1037557447)\n\t\t + W(6, 1049136707, -1113159542, -1117329322, 1057279043)\n\t\t + W(7, 1058534976, 1042941412, 1024662339, -1115931546)\n\t\t + W(8, -1121699838, -1135369949, -1098171678, -1102488395)\n\t\t + W(9, -1118338951, -1123101368, -1111680098, -1111356186)\n\t\t + W(10, -1110798213, -1133353861, -1132246652, -1116069530)\n\t\t + W(11, 1023843187, -1110056358, -1125104281, -1113468791);\n\tsum2 = W(0, -1104438281, 1006975884, -1114845259, -1121830816)\n\t\t + W(1, 1035922248, -1109021584, 1024387710, -1116080890)\n\t\t + W(2, 1010047952, 1033813267, -1104617278, 1016682467) + W(3, -1119230330, 1016925125, 1031893944, 1028042677)\n\t\t + W(4, 1041416137, -1103312430, 1059878226, 1030331467)\n\t\t + W(5, 1042445877, -1127060444, -1106783001, -1113418625)\n\t\t + W(6, -1126834256, -1117623020, -1091497753, 1058017528)\n\t\t + W(7, 1016098448, 1041560361, -1112957506, 1032681483)\n\t\t + W(8, -1137643420, -1119875938, 1032827109, -1098691452)\n\t\t + W(9, 1038105687, -1110812698, 1032692112, -1112120334)\n\t\t + W(10, -1141914640, -1142859168, -1115736166, 1030249718)\n\t\t + W(11, -1111253212, -1153808400, -1114320479, -1122393388);\n\tWS(1052913623, 1049378679);\n\tsum1 =\n\t\tW(0, -1122838827, -1140317417, -1125024735, -1119624720) + W(1, -1114511683, 1000517975, 980913767, -1118732996)\n\t\t+ W(2, 1042960148, -1131398976, 1047376245, -1142164473) + W(3, 1052155164, 1026436976, 1040745327, 1037554661)\n\t\t+ W(4, -1086626395, -1096052024, -1085621156, -1082562971)\n\t\t+ W(5, -1087926293, -1091398264, -1096441475, -1088065070)\n\t\t+ W(6, 1057292387, 1051976144, 1057250406, 1065554348) + W(7, 1052193006, 1054127476, 1052669955, 1051850318)\n\t\t+ W(8, 1037967453, -1115050310, 1033197251, -1105683981) + W(9, 1022767638, 1031945184, -1117629257, 1041425290)\n\t\t+ W(10, -1155224026, 1021209962, -1137632582, 1041116332)\n\t\t+ W(11, -1114068531, 1019309136, -1119607996, 1029050594);\n\tsum2 =\n\t\tW(0, -1128729473, 1026695603, -1122814467, 1038041001) + W(1, -1114364242, 1029245131, -1114309631, -1131614889)\n\t\t+ W(2, -1113890565, -1113695617, 1012493154, 1007226362) + W(3, 1022932917, -1121347205, 1028217359, 1005475605)\n\t\t+ W(4, 1030681183, 1046246583, -1119541727, -1105895610) + W(5, 1013035938, -1109256305, 1037707015, 1018572933)\n\t\t+ W(6, -1116238263, 1032966985, 1063042504, 1066720275) + W(7, 1061802664, 1054635319, 1034508407, -1114817272)\n\t\t+ W(8, 1054381777, 1060417287, 1065151040, 1069419683) + W(9, 1070184946, 1067716376, 1063333907, 1057796391)\n\t\t+ W(10, -1088819879, -1094452995, -1073258706, -1071852139)\n\t\t+ W(11, -1071972143, -1076852924, -1084913408, -1086618913);\n\tWS(-1080205366, 1054586731);\n\tsum1 = W(0, 1028285119, 1034516295, -1114270114, 1028158052) + W(1, -1122816794, 1015275709, 1008209269, 1026827799)\n\t\t + W(2, -1104231365, -1118125300, -1122896269, 1031422323)\n\t\t + W(3, 1042423964, -1113275778, 1035567225, -1113291743)\n\t\t + W(4, -1105384067, -1098317298, -1102251495, -1084181862)\n\t\t + W(5, -1083878719, -1102645126, -1094749758, -1095155767)\n\t\t + W(6, 1018315643, 1050987674, 1045079495, 1065887519) + W(7, 1058366107, 1055927247, 1042520123, 1054820368)\n\t\t + W(8, 1050517144, -1103331232, 1044797187, -1106919576)\n\t\t + W(9, -1136969466, -1127822612, -1111681950, 1023800268)\n\t\t + W(10, -1107795033, 1030553289, -1134423957, 1039594145)\n\t\t + W(11, -1127143669, 1007528111, -1112108944, 1010334934);\n\tsum2 =\n\t\tW(0, 1018519238, 1015687849, -1123243110, -1154321191) + W(1, -1147705571, -1137574530, 1025499637, -1123293958)\n\t\t+ W(2, 999332143, 1021267259, 1021268373, 1001850235) + W(3, -1122367554, -1149097003, 1028798873, -1120881342)\n\t\t+ W(4, 1041061518, -1105547391, 1034089943, -1097359239) + W(5, 1024181853, 964634475, -1139074510, 1038775557)\n\t\t+ W(6, 1033756160, 1042746528, 1026544409, 1057524548) + W(7, -1128118669, 1033087855, -1129467393, -1131901697)\n\t\t+ W(8, 1071473984, 1066765865, 1067795051, 1059938647) + W(9, -1126584943, -1109247299, 1002507759, -1137941026)\n\t\t+ W(10, -1074851124, -1079967238, -1079279124, -1081222132)\n\t\t+ W(11, 1036308208, 995399503, 1006964374, -1131371017);\n\tWS(1032292188, -1145187004);\n\tsum1 = W(0, -1121091224, -1124591439, -1121198813, 1009701366)\n\t\t + W(1, 1007646671, 1026658136, 1020346030, -1122546321) + W(2, 1026282854, 1032165735, 1048823572, -1113803654)\n\t\t + W(3, -1119045850, -1092992668, 1019935126, -1119672872)\n\t\t + W(4, -1110430066, -1099744666, -1088767505, -1109489438)\n\t\t + W(5, 1041537816, 1047050636, -1121506375, -1110555528) + W(6, 1041424886, 1053335502, 1045555550, 1044961340)\n\t\t + W(7, -1098280566, 1043075732, -1107270401, 1047792295)\n\t\t + W(8, -1163709786, -1097458647, 1040806261, 1038271382)\n\t\t + W(9, 1040783354, 1037260307, 1000329008, -1120965766)\n\t\t + W(10, -1130362518, 1026340962, 1020242430, -1136150382)\n\t\t + W(11, -1117600916, 997023189, -1124456788, 1026784415);\n\tsum2 =\n\t\tW(0, -1120115102, 1024423113, -1131404107, -1162462122) + W(1, -1116017912, 1035047655, -1146105278, 1011265421)\n\t\t+ W(2, 1027036707, -1119221834, 1034928052, -1115806512)\n\t\t+ W(3, -1133321326, -1101382306, 1029706393, 1023154260)\n\t\t+ W(4, 1028744443, -1122478763, 1034534080, -1117650486)\n\t\t+ W(5, -1108495610, -1105332910, 1038914207, -1113944011) + W(6, 1037973272, 1049287438, 1047707985, 1065549495)\n\t\t+ W(7, -1079218451, -1101676179, -1109811124, -1116861489)\n\t\t+ W(8, -1111409649, -1096539764, 1032305459, 1059270295)\n\t\t+ W(9, 1053073262, -1108544028, -1125217018, 1023662974)\n\t\t+ W(10, -1114092190, 1034186497, -1111870688, -1104163224)\n\t\t+ W(11, -1116841516, 1038206879, 1004549098, 1021319568);\n\tWS(1065238444, 1029810764);\n\tsum1 = W(0, -1117664959, 1033625479, -1121511107, 1026353828) + W(1, -1154871713, 980940712, 1018182811, 1025470327)\n\t\t + W(2, 1035631050, 998132025, 1046740798, 1049143094) + W(3, 1044265580, 1037075730, 1028486865, -1128624253)\n\t\t + W(4, -1105662947, -1110409480, -1115600622, -1117398499)\n\t\t + W(5, -1101622768, -1109487884, -1112099063, -1120941494)\n\t\t + W(6, 1044376095, 1041425605, -1117226857, -1088462543)\n\t\t + W(7, -1090821428, -1099167518, 1039936213, -1117520833)\n\t\t + W(8, -1180059800, 1029921727, 1047596134, 1050498082) + W(9, 1032067983, -1134957959, 1021107193, 1019194744)\n\t\t + W(10, -1144996235, 1002652741, 986508455, 1031133314)\n\t\t + W(11, -1119889178, 1038687768, -1122286680, 1032539083);\n\tsum2 =\n\t\tW(0, 1027136813, -1126103938, -1134438995, 1023841561) + W(1, 1003327910, -1130954514, -1135210803, 994333964)\n\t\t+ W(2, -1109237812, 1029641913, -1108335880, 1016569578) + W(3, 1032415828, 999116870, 1003972614, -1138234067)\n\t\t+ W(4, -1131106290, 1047599733, -1097134429, -1076957808)\n\t\t+ W(5, 1044824498, 1037851390, -1123469057, 1043898273) + W(6, 1028116649, 1041211299, -1092284431, -1103461794)\n\t\t+ W(7, 1073063564, -1111597872, 1033926584, -1115472968)\n\t\t+ W(8, -1115313320, -1119521049, -1100904528, 1040752059)\n\t\t+ W(9, 1045381268, -1112786376, 1034574746, -1137298819)\n\t\t+ W(10, -1132573667, 1022404146, 1016921434, 1027441157)\n\t\t+ W(11, -1106952976, 1036890340, -1110049884, -1139674515);\n\tWS(-1111543132, 1053084187);\n\tsum1 =\n\t\tW(0, 1033211657, -1116548448, 1043994373, -1112421659) + W(1, 1033458902, 1042588164, -1106715184, 1042106754)\n\t\t+ W(2, 1029336727, -1100473306, 1036113196, -1100606697)\n\t\t+ W(3, -1117467379, 1024205686, -1098518156, 1010302211) + W(4, 1056808676, 1042013257, 1061342772, 1060655799)\n\t\t+ W(5, 1059165410, 1057924951, 1042727104, 1057649845)\n\t\t+ W(6, -1089574549, -1097689349, -1087296749, -1082434496)\n\t\t+ W(7, -1087667391, -1091727169, -1095816456, -1093601226)\n\t\t+ W(8, -1112225370, 999357322, 1042186215, -1100755553) + W(9, 1042539448, 1041805473, -1105873704, -1114265639)\n\t\t+ W(10, 1035575202, -1114691470, 1040681774, 1045312421)\n\t\t+ W(11, 1039236406, 1042949980, -1113675407, 1035739628);\n\tsum2 =\n\t\tW(0, 1036389819, -1106855677, 1031620401, -1109245550) + W(1, 997072274, -1132619277, -1096737767, 1049991282)\n\t\t+ W(2, 1006854517, -1114095075, 1044374087, -1105124479)\n\t\t+ W(3, -1105277948, 1043212463, -1104242691, -1113287926)\n\t\t+ W(4, 1049279774, -1106885840, 1052305677, 1054861276) + W(5, 1057655059, 1046093411, -1094755169, 1057224822)\n\t\t+ W(6, -1104547241, -1120692701, 1045612807, 1058901209) + W(7, 1054428932, 1034709627, 1054770354, -1094426804)\n\t\t+ W(8, -1140479293, -1096936463, 1051540981, -1092919117)\n\t\t+ W(9, -1129490106, 1034565381, -1092959620, 1030915645)\n\t\t+ W(10, 1032391465, -1098591621, -1115708783, -1081363743)\n\t\t+ W(11, -1090444858, 1017473602, -1098730750, 1044114915);\n\tWS(-1084020140, 1068126260);\n\tsum1 =\n\t\tW(0, 1006295077, -1137936208, 1034316741, -1149620895)\n\t\t+ W(1, -1141477121, -1110713826, -1119964867, -1159113641)\n\t\t+ W(2, -1156074282, -1103771606, -1104490636, 1038480604) + W(3, 1018703789, 1041233006, 1031629367, 1005339683)\n\t\t+ W(4, 1049019906, 1049395923, 1061237576, 1033598516) + W(5, -1094713154, -1098857908, 1023717620, 1036793310)\n\t\t+ W(6, -1097931528, -1091558419, -1086810430, -1099102215)\n\t\t+ W(7, 1059440745, 1018408058, -1122483505, -1108866660) + W(8, -1117241095, 1040511881, 1040083512, 1044377854)\n\t\t+ W(9, 1044961993, -1146014215, 1038059949, -1129764324)\n\t\t+ W(10, -1123621559, 1023627215, -1108467318, -1115694024)\n\t\t+ W(11, -1120119968, -1145494414, -1122997930, 1007729326);\n\tsum2 =\n\t\tW(0, 1015277664, -1114453597, 1036987011, -1112547401) + W(1, 1038859445, -1116674795, 983557058, -1127718668)\n\t\t+ W(2, 1025130698, -1134749664, 1032879133, -1134874844)\n\t\t+ W(3, -1112115766, 1018163604, -1128408082, 1003243264)\n\t\t+ W(4, 1027591084, 1033917561, -1126832950, -1114337945) + W(5, 1026538526, -1114930086, 968847366, -1132712652)\n\t\t+ W(6, -1117062871, -1115087054, 1055956188, -1108159193)\n\t\t+ W(7, 1052262112, 1032023389, -1105383385, -1120777676)\n\t\t+ W(8, -1101670769, -1114105716, -1097729634, -1123425664)\n\t\t+ W(9, 1058230624, 1047994902, 1046456588, 1042953566)\n\t\t+ W(10, 1019605180, -1131991228, -1104354242, -1097147867)\n\t\t+ W(11, -1101321392, -1100180330, -1106875572, 1009596296);\n\tWS(1044178094, -1112419455);\n\tsum1 = W(0, -1131480425, 1014469647, 1033460669, -1111970637)\n\t\t + W(1, 1018155424, 1028778773, -1120733619, 1036392279)\n\t\t + W(2, 1028145051, -1106904202, -1114114798, -1103921210)\n\t\t + W(3, -1104772954, -1105642670, -1122369255, -1105836421)\n\t\t + W(4, 1050373320, 1050878345, 1059597501, 1061375910) + W(5, 1062331213, 1054878354, 1050980308, 1057064179)\n\t\t + W(6, -1113746394, -1101407218, -1089975999, -1083033439)\n\t\t + W(7, -1089702156, -1100724747, -1095744476, -1096031599)\n\t\t + W(8, -1097767254, 1036986154, -1106579916, 1025899544)\n\t\t + W(9, 1034746546, 1032512190, -1113254377, -1120232930)\n\t\t + W(10, 1005496122, 1009224698, 1010606701, -1155279741)\n\t\t + W(11, 1027233072, 1015772371, -1131981388, -1140419566);\n\tsum2 = W(0, 1044058702, -1105410550, 1033398047, -1119512188)\n\t\t + W(1, -1121578506, -1129503263, 1005093795, -1116781712)\n\t\t + W(2, -1120335698, 1016883675, 1032351899, -1103364509)\n\t\t + W(3, -1123961512, 1043612533, -1110855577, 1044044613)\n\t\t + W(4, 1041124235, 1035757794, -1105578788, -1105098443) + W(5, 1037191880, 1025665274, 1024086018, 1023695645)\n\t\t + W(6, 1021344157, -1104385836, 1068114101, 1052569394)\n\t\t + W(7, 1027075889, -1095293941, -1113226379, -1106316439)\n\t\t + W(8, -1087803383, -1085495757, -1081571635, -1086748155)\n\t\t + W(9, 1031589750, 1048618044, -1121765158, 1039073287) + W(10, 1057976488, 1058928386, 1051244378, 1048853947)\n\t\t + W(11, -1130402783, -1124003088, 1010599720, -1120128288);\n\tWS(-1095246679, -1087513362);\n\tsum1 = W(0, 1027634667, 998672596, -1149130110, 1026870673) + W(1, 1006905115, 1027369115, -1156874400, 1027010724)\n\t\t + W(2, 1005582218, 1034119552, -1098084154, -1141537276)\n\t\t + W(3, -1098155038, -1115874224, -1130796284, -1110211381)\n\t\t + W(4, 1054139855, 1049059024, 1052649123, 1065515488) + W(5, 1064339388, 1053781857, 1050040635, 1056042372)\n\t\t + W(6, -1093682933, -1099832192, -1089047862, -1088853800)\n\t\t + W(7, -1084571535, -1097071228, -1107001190, -1095503614)\n\t\t + W(8, 1002440559, 1040529483, -1122861959, -1126585773)\n\t\t + W(9, -1099945809, -1105399392, 1023818537, -1117200441)\n\t\t + W(10, -1142612208, 1024339285, 1025618962, 1014930618)\n\t\t + W(11, -1117714471, -1136815962, 1018962754, 1028298602);\n\tsum2 =\n\t\tW(0, 1021849900, -1131412357, -1118206650, -1125196517) + W(1, 1035111533, -1144348946, 1021086832, 1020034266)\n\t\t+ W(2, 1041438934, -1119369172, 1040592619, -1114002177) + W(3, 1032710077, 1044882286, -1106944856, 1034465258)\n\t\t+ W(4, -1128850825, 1021256857, 1046750596, 1025252531) + W(5, 1048692472, -1128830461, 1032666924, 1034167215)\n\t\t+ W(6, 1035803991, -1111021944, 1038923952, 1072474004) + W(7, 1077302109, -1095554578, 1044371493, -1126088605)\n\t\t+ W(8, -1100551265, 1042971908, -1109478151, -1083937830)\n\t\t+ W(9, -1067064389, -1084038225, -1106119426, -1103479472)\n\t\t+ W(10, 1028120411, -1109090883, 1026074630, -1100770381)\n\t\t+ W(11, 1049109423, 1041329596, 1033664959, -1114595648);\n\tWS(-1086863724, -1072185677);\n\tsum1 = W(0, 1028385114, -1117432553, 1039695343, -1109809663)\n\t\t + W(1, 1021420394, -1123921882, -1130768465, 1022384484)\n\t\t + W(2, 999422396, -1108936247, -1104614655, -1104994067)\n\t\t + W(3, -1154652341, -1146863602, -1114930982, 1034006493)\n\t\t + W(4, 1054099261, 1053618221, 1060257868, 1062802560) + W(5, 1056152893, 1045520765, 1044268562, 1050379178)\n\t\t + W(6, -1096116227, -1097427086, -1085349189, -1083398775)\n\t\t + W(7, -1099176000, -1110026089, -1104661441, -1115290030)\n\t\t + W(8, -1144842721, 1026659130, 1037424170, 1038629270)\n\t\t + W(9, 1048207210, -1118540449, -1129199023, -1101129750)\n\t\t + W(10, -1139590961, 1021035463, -1123772160, -1103266023)\n\t\t + W(11, 1017905387, -1111374457, 997564786, -1108736604);\n\tsum2 = W(0, -1122660132, 1028330563, -1115262781, 1045687787)\n\t\t + W(1, -1108704409, 1029063313, -1116092784, 1013546756)\n\t\t + W(2, 1040406414, 1017997140, 1025264396, -1103384157) + W(3, -1151694751, 986929807, 1026201848, -1115691336)\n\t\t + W(4, 1007232002, 1025921746, 1043786284, 1040909479) + W(5, -1108714653, 1043690826, -1119932664, 1038266954)\n\t\t + W(6, -1096101684, 1022732374, -1102241564, 1055010544)\n\t\t + W(7, 1057419270, -1126901852, 1047767958, -1115096031)\n\t\t + W(8, -1114861255, 1041150821, -1094431556, -1078483413)\n\t\t + W(9, -1079156700, -1078269109, -1092610189, -1098859524)\n\t\t + W(10, 1041847394, -1105481885, 1055232297, 1061241514)\n\t\t + W(11, 1063042984, 1067726336, 1054314043, 1052159629);\n\tWS(-1100931758, -1079897221);\n\tsum1 = W(0, 1002503979, 1034941050, -1106318298, 1040768819)\n\t\t + W(1, -1115730241, -1141069099, 1027555620, -1123362142)\n\t\t + W(2, -1105750735, 1038153885, -1105238364, 1049149819)\n\t\t + W(3, 1028324215, -1106412131, 1039911116, -1114353739)\n\t\t + W(4, -1109125113, 1017797614, -1095922988, -1090093369)\n\t\t + W(5, -1091054939, -1102230944, -1127686569, -1097766172)\n\t\t + W(6, 1042140489, 1051948423, 1034322060, 1059094088) + W(7, 1049017573, 1050624300, 1045992036, 1043140938)\n\t\t + W(8, -1126416416, 1024057510, -1103862864, 1040510958)\n\t\t + W(9, -1112163155, -1106256757, 1017980086, 1018029782)\n\t\t + W(10, -1119888216, 1035399096, -1104877795, 1042879258)\n\t\t + W(11, -1120272065, -1112985689, 1033961137, -1117933580);\n\tsum2 = W(0, -1118098210, -1106915273, 1038839398, -1115506453)\n\t\t + W(1, 1032442192, 1016491198, 996494424, -1145352236) + W(2, 1039272612, -1120265428, 1047577900, -1112696018)\n\t\t + W(3, -1123012045, -1123570623, -1121836120, 1026228225)\n\t\t + W(4, 1033865352, 1043187452, -1107536005, -1090204449) + W(5, 982996928, 1042935567, -1120793710, 1030161309)\n\t\t + W(6, -1107428188, -1111026913, 1034998667, 1068488571)\n\t\t + W(7, -1096446249, 1013219076, -1101384300, 1023915500)\n\t\t + W(8, 1041731770, -1108614463, -1104254290, -1073443109) + W(9, 1040126834, 1041050172, 998034192, 1038049010)\n\t\t + W(10, -1138511840, -1129236656, 1049639209, 1065503173)\n\t\t + W(11, 1035312463, -1104804103, 1040382819, -1106858818);\n\tWS(1060652716, -1122012062);\n\tsum1 = W(0, -1136700086, -1120727741, -1136846536, -1102129381)\n\t\t + W(1, 1035874533, -1111246103, 1019584793, -1111739075)\n\t\t + W(2, -1113850590, 1022556549, 1030968440, 1036351121) + W(3, 1049961616, -1119797202, 1037896960, 1033695743)\n\t\t + W(4, -1093156519, -1098011208, -1100004083, -1079676696)\n\t\t + W(5, -1097573322, -1087704492, -1096988084, -1092447605)\n\t\t + W(6, 1056384406, 1052398904, 1062519968, 1061355096) + W(7, 1059521337, 1052440101, 1048869443, 1048091420)\n\t\t + W(8, -1101587139, -1106430355, -1132405458, -1107897312)\n\t\t + W(9, 1048756772, -1109566980, 1020055223, 1043876621)\n\t\t + W(10, 1021600449, -1114714908, 1016310696, -1113036024)\n\t\t + W(11, 1022545811, 956768943, -1121983087, 1018273385);\n\tsum2 =\n\t\tW(0, -1134928360, 1028726521, -1102649789, 1041988393) + W(1, -1105797881, -1125378124, 1034345705, -1134413224)\n\t\t+ W(2, 1033535752, -1102458559, -1114678181, 1050124192)\n\t\t+ W(3, -1102215651, 1032107719, 1014416128, -1119150822) + W(4, -1108867200, 1031241917, 1028753942, 1056497468)\n\t\t+ W(5, -1090602802, 1057082230, 1023046526, 1025484112) + W(6, 1056652859, 1048810536, 1051021341, 1036208495)\n\t\t+ W(7, -1099717915, -1114740583, 1002570703, -1101875417)\n\t\t+ W(8, -1094974673, -1100509489, -1100441695, 1034323322)\n\t\t+ W(9, -1115767916, 1041259997, -1122784508, 1037850051)\n\t\t+ W(10, 1034782854, -1123876292, -1100025719, 1037384204)\n\t\t+ W(11, -1098766868, 1024245049, -1114560124, -1112409616);\n\tWS(-1104650926, -1097620835);\n\tsum1 = W(0, -1121602225, 1021304961, -1132438763, 1033606955)\n\t\t + W(1, -1119908749, 1032325913, -1112547088, 1011690407)\n\t\t + W(2, 1025795527, -1105437010, 1039870965, -1097752993)\n\t\t + W(3, 1037504305, -1109081755, -1121171172, -1116159153)\n\t\t + W(4, 1046345311, -1108985665, 1041625463, -1144407721)\n\t\t + W(5, -1100934531, 1047145475, -1119544288, 1036418740)\n\t\t + W(6, -1105175020, 1045711217, -1093274991, 1062570208)\n\t\t + W(7, -1099088029, -1097698093, -1136783989, -1106563213)\n\t\t + W(8, -1160491701, -1117138161, 1040158758, 1049985633) + W(9, 1037586881, 1004919651, -1124949278, 999804916)\n\t\t + W(10, 1000929055, -1145522137, -1117941464, -1122762228)\n\t\t + W(11, -1109694278, 1026835862, 1024727664, -1126831120);\n\tsum2 =\n\t\tW(0, -1103930431, 1043997541, -1102154605, 1046282803) + W(1, -1106269056, -1116052960, 993204113, -1113135778)\n\t\t+ W(2, -1122873970, -1100601593, -1174042309, -1084779372)\n\t\t+ W(3, -1114322527, 1046060831, -1115511338, 1041954938) + W(4, 1048581640, -1108032519, 1029742536, 1068068442)\n\t\t+ W(5, 1051594943, -1119470820, -1138871916, 1020181836) + W(6, -1139346648, 1042591516, 1045200151, 1052027066)\n\t\t+ W(7, -1098651742, -1115540046, 1021777728, -1107159950)\n\t\t+ W(8, 1030984702, -1123657132, -1106767363, -1086671314)\n\t\t+ W(9, 1024653780, -1127107345, -1163609763, -1134598872)\n\t\t+ W(10, -1115391660, -1107477718, 1032437784, 1025856678)\n\t\t+ W(11, 1036550683, -1121355040, -1115373797, -1122730046);\n\tWS(1066180726, 1071088208);\n\tsum1 = W(0, 1019239309, -1139409238, 1016498838, -1117575980)\n\t\t + W(1, 1000209679, -1113394675, 1030691589, -1133365628)\n\t\t + W(2, -1125280121, 1001471451, -1110062156, 1036666525)\n\t\t + W(3, 1049354787, 1048739493, -1119525817, -1103045922)\n\t\t + W(4, -1096761986, 1012641888, -1103040193, -1098591157)\n\t\t + W(5, -1079760364, -1090655988, -1102803453, -1099636767)\n\t\t + W(6, 1046613601, -1137946220, -1089511315, 1064065326) + W(7, 1058946251, 1056455200, 1048597558, 1050574049)\n\t\t + W(8, -1107071425, 1047813898, 1045045936, 1024305865) + W(9, -1110782371, 1013890551, 981956228, 1043476657)\n\t\t + W(10, 1022045682, 1006921793, 1010038708, 1025055882)\n\t\t + W(11, 990559266, 1028621651, -1118324476, -1146495466);\n\tsum2 =\n\t\tW(0, -1132513434, -1110784932, 1015163300, 1015068960) + W(1, 1033174530, -1135254713, 1032888151, -1132281738)\n\t\t+ W(2, 1043448685, -1133524329, -1107748756, 1038994810)\n\t\t+ W(3, -1104237963, -1120882016, -1105704866, 1042278645)\n\t\t+ W(4, -1099364915, 1037755510, -1102119678, 1041992963) + W(5, 1059473601, 1015880446, 1034086136, -1087682569)\n\t\t+ W(6, -1092624350, 1047633966, -1120785461, 1052941265)\n\t\t+ W(7, -1112171819, -1149514732, -1106883398, 1032085587)\n\t\t+ W(8, 1056566992, -1103089496, 1032253510, -1122308723)\n\t\t+ W(9, 1028984470, -1121912217, 1037486360, -1121651695)\n\t\t+ W(10, -1119372495, -1105722911, -1123661455, -1115405106)\n\t\t+ W(11, -1126727948, 1038410412, -1113287020, 1025242322);\n\tWS(1036385628, 1044378228);\n\tsum1 = W(0, -1125923878, -1122454178, -1106272614, 1034604284)\n\t\t + W(1, -1112814039, 1030894675, -1123079474, -1130721815)\n\t\t + W(2, -1119989961, 1024777096, 1045742974, -1106270482)\n\t\t + W(3, -1097223397, -1112273196, -1131680651, 974203052)\n\t\t + W(4, -1113894352, -1109744594, -1081686591, 1049041391)\n\t\t + W(5, 1058546239, 1043400251, 1024933634, -1127331477) + W(6, 1034400041, 1050462805, 1057689729, 1056885773)\n\t\t + W(7, -1082103097, -1111542214, 1032256832, 1030325078)\n\t\t + W(8, 1040468885, -1118152051, -1112362495, -1111838475)\n\t\t + W(9, 1051410218, 1042722054, -1104716944, 1028514056)\n\t\t + W(10, -1119159494, -1136375156, 1016953331, 1033159371)\n\t\t + W(11, -1127987422, 1008300000, 1020481857, -1122308858);\n\tsum2 = W(0, -1126857538, -1118763531, 1031801448, 1032593429)\n\t\t + W(1, 1004108563, -1119835024, 1016299757, -1169697445)\n\t\t + W(2, -1124098806, -1105376950, 1037674477, -1110580495)\n\t\t + W(3, -1116861031, 1039467599, -1109178305, 1033383777)\n\t\t + W(4, 1017023528, -1096176503, 1067983244, -1078904043)\n\t\t + W(5, 1060638644, -1111109918, -1098624444, 1040587540)\n\t\t + W(6, -1105780084, -1094874635, 1071605005, -1075832971)\n\t\t + W(7, 1065456263, -1112838992, -1104548941, 1006549790)\n\t\t + W(8, -1128747572, -1140350635, -1109792866, -1097243929)\n\t\t + W(9, 1040323331, -1114824160, 1033955221, -1127435882)\n\t\t + W(10, -1133097491, 1036694112, -1111308161, 1036064001)\n\t\t + W(11, 1039332997, -1103055030, 1027541135, 1022453269);\n\tWS(1044586414, 987793058);\n\tsum1 = W(0, 981244734, 1029861564, -1127551587, 1008852553)\n\t\t + W(1, -1110264932, -1120415085, -1128191927, -1111219811)\n\t\t + W(2, -1094962922, -1105742952, -1103252055, -1106380176)\n\t\t + W(3, 1039776063, 1036900841, 1025145152, 1028803677) + W(4, 1056192743, 1054313512, 1058042871, 1048369556)\n\t\t + W(5, -1104749720, -1097596121, -1105335335, -1103570473)\n\t\t + W(6, -1106851755, -1099782448, -1098041547, -1096188128)\n\t\t + W(7, 1052995119, 1058305414, 1045503990, 1055249646) + W(8, -1119312576, 1027895469, 1019737521, -1121596880)\n\t\t + W(9, -1106765091, -1098125906, -1106717007, -1101993823)\n\t\t + W(10, -1109764848, 1032524411, -1110892330, 1024237680)\n\t\t + W(11, -1120426409, 1026360866, -1151171624, 1031597860);\n\tsum2 = W(0, -1170894487, -1116947191, 1031282910, -1112734885)\n\t\t + W(1, 1042944653, -1112368696, 1023647443, -1149951158)\n\t\t + W(2, 1038321486, 1032730216, 1034140662, -1104751545)\n\t\t + W(3, -1102906173, -1115060896, -1124833342, -1103764076)\n\t\t + W(4, 1053283699, -1102463031, 1044178467, 1054507486)\n\t\t + W(5, -1128523954, 1038784522, -1109068581, -1105151256)\n\t\t + W(6, -1093894288, -1109920837, -1089191295, 1065532097)\n\t\t + W(7, -1115680584, 1029167633, 1021288403, 1048070264)\n\t\t + W(8, -1100030896, 1047091130, -1097946325, -1095028025)\n\t\t + W(9, -1094781909, 1050920778, -1113980416, 1052479172)\n\t\t + W(10, 1046510222, -1098101478, 1046381950, -1113780206)\n\t\t + W(11, 1020709100, -1114933696, -1114621382, -1120673083);\n\tWS(-1114317660, -1079530866);\n\tsum1 = W(0, 1005492722, 1045601427, -1125684614, 1040691817)\n\t\t + W(1, -1138701159, -1122106750, 1010492340, -1132247342)\n\t\t + W(2, -1115918380, -1100871485, -1122621547, -1094477942)\n\t\t + W(3, 1044150368, 1041157065, 1039210328, 1037992735) + W(4, -1124407701, 1040297908, -1098312611, 1054673340)\n\t\t + W(5, 1041833209, -1120050519, -1116922669, 1025359158)\n\t\t + W(6, -1116105277, -1115200394, -1103806788, -1097950923)\n\t\t + W(7, -1088150296, 1040435582, 1025767275, 1032362656) + W(8, 1041270838, 1034785295, 1049040249, -1103823208)\n\t\t + W(9, -1129519613, -1121264402, -1133614768, -1107139719)\n\t\t + W(10, -1125596386, 1024917256, 1026343653, 1033886401)\n\t\t + W(11, 1039772509, 1028146611, 1030520276, 1032249339);\n\tsum2 = W(0, -1155531695, -1116868484, -1135508412, -1106991844)\n\t\t + W(1, -1135674828, 1001487940, -1119877490, -1131775200)\n\t\t + W(2, 1035594747, -1130123766, -1121397012, -1115576312)\n\t\t + W(3, -1126221532, -1107263445, -1121744498, -1125291430)\n\t\t + W(4, -1111112193, 1034328851, 1033705026, 1050004218)\n\t\t + W(5, -1117911568, -1123887534, 1017446183, -1110635219)\n\t\t + W(6, -1101564588, -1113096514, 1029679690, 1048453590) + W(7, 1050922209, 1043692754, 1034884616, 1032206024)\n\t\t + W(8, -1116834132, -1115452418, -1152418495, 1029930774)\n\t\t + W(9, 1007646710, -1114385718, -1122169416, 1016330315)\n\t\t + W(10, -1130931838, -1123313694, 1018386998, -1127714868)\n\t\t + W(11, -1121358676, 1023927325, -1115969900, -1122013064);\n\tWS(1066254326, -1103165682);\n\tsum1 =\n\t\tW(0, 1032736195, 1027879829, 1031762634, -1123062443) + W(1, 1004281096, -1148973229, -1119568276, -1130151676)\n\t\t+ W(2, -1107990998, -1114107453, -1103287009, 1041209406)\n\t\t+ W(3, 1039171204, -1113506869, 1029657432, 1042306865) + W(4, 1040177417, -1121888407, 1058340070, -1097968365)\n\t\t+ W(5, -1082040497, 1042461256, -1110264442, -1106785311)\n\t\t+ W(6, -1102376817, 1024426522, -1086180914, 1045901207) + W(7, 1060563077, 1045252895, 1035749465, 1042341554)\n\t\t+ W(8, 1034252186, -1134855959, 1048880356, -1117801777)\n\t\t+ W(9, -1108119503, 1021862138, 1017288487, -1125959462)\n\t\t+ W(10, 1019040113, 1012754494, -1128188760, -1116847305)\n\t\t+ W(11, -1149008906, -1140572507, 1021245074, 1010461490);\n\tsum2 = W(0, 1021177914, -1124089023, 1026640236, 1019818775) + W(1, 1019369915, -1106530127, 1038187852, 1030498751)\n\t\t + W(2, -1111267114, 1044764288, 1026571855, -1103902938)\n\t\t + W(3, -1139759728, 1046869720, -1116925721, -1107211067)\n\t\t + W(4, 1038432054, -1106310853, -1115065858, 1063205014)\n\t\t + W(5, 1054784388, -1096246655, -1115197568, 1035488589)\n\t\t + W(6, -1105822865, -1100663157, -1088005063, 1066152263)\n\t\t + W(7, -1093573252, -1098236584, 1033917272, -1107121631)\n\t\t + W(8, 1037666445, 1039738660, -1097556837, -1094681119)\n\t\t + W(9, -1095778937, 1051664274, -1104072801, 1038730556)\n\t\t + W(10, -1122267795, -1121288215, 1045614354, -1112191805)\n\t\t + W(11, 1041592438, -1110480242, 1015983837, 1022742082);\n\tWS(1062838508, -1098141683);\n\tsum1 = W(0, -1134697126, 1033720508, -1121504814, -1119656591)\n\t\t + W(1, 950602286, -1114868293, 1034808260, -1113093265) + W(2, -1129876167, 1021336509, 1014720225, 1046652247)\n\t\t + W(3, 1047400131, 1033072079, -1139606129, 1026913289)\n\t\t + W(4, -1116304310, -1104597903, -1101916102, -1082370571)\n\t\t + W(5, -1091801796, -1096699752, -1121911577, -1098146380)\n\t\t + W(6, -1099161722, 1019102333, 1049624810, 1058084844) + W(7, 1053105145, 1050650780, 1034036747, 1048726310)\n\t\t + W(8, 1038618718, 1045312786, 1036131058, 1029119981) + W(9, -1119759594, -1119884597, 1024218735, 1017329950)\n\t\t + W(10, 1030514076, -1118743028, -1134396481, 1009920435)\n\t\t + W(11, -1132133195, -1133963803, 990998386, -1121758433);\n\tsum2 =\n\t\tW(0, -1120814392, 1018600110, 1027325255, -1124538308) + W(1, -1127260613, 1007599328, -1128821133, -1125977712)\n\t\t+ W(2, 1026947049, -1114533760, -1112504706, -1107191892)\n\t\t+ W(3, 1023329910, -1124222597, 1024046209, 1019591350) + W(4, -1124609851, 1043306429, 1030055965, -1090928488)\n\t\t+ W(5, 1046523168, 1015958190, 1022187138, -1115445424) + W(6, 1029294693, -1096357662, 1075131584, -1118772404)\n\t\t+ W(7, -1092017575, -1113584525, -1109468012, -1105922548)\n\t\t+ W(8, -1089366560, -1078857162, -1106088729, 1060040329) + W(9, 1045316672, 1047822624, 1021757630, 1038940063)\n\t\t+ W(10, 1054044776, -1109773692, -1105806639, -1102685120)\n\t\t+ W(11, -1119137158, 1032716843, -1120065319, 1016647840);\n\tWS(1054286935, 1054427377);\n\tsum1 = W(0, -1139016422, 1015966225, 1034481375, 1029692191) + W(1, -1118014037, 1037138557, -1107878452, 996243233)\n\t\t + W(2, 1031868724, 1024526894, -1107528289, -1123790766)\n\t\t + W(3, 1033739398, -1101429240, 1035472806, -1114181077)\n\t\t + W(4, -1103470657, -1100637795, 1043922306, -1096987004)\n\t\t + W(5, -1103397016, 1045510949, -1113746932, 998962565) + W(6, 1027450488, 1046711412, -1098573729, 1036148808)\n\t\t + W(7, 1053311986, 1016118627, -1127637067, 1041113135)\n\t\t + W(8, 1036611766, -1105992614, 1045477269, -1138151730)\n\t\t + W(9, -1103945702, 1013880803, 1041047838, -1118755335)\n\t\t + W(10, -1113202838, 1036202402, -1121078688, 1006910195)\n\t\t + W(11, 1033532379, -1135069562, -1112788047, 1020627009);\n\tsum2 =\n\t\tW(0, 998302909, 1020343611, 1029585253, 1014080934) + W(1, -1135780688, -1115911996, 1018594371, -1117868456)\n\t\t+ W(2, -1114977231, 1031676937, -1113383024, 1053648356) + W(3, 1044096370, 1042686855, -1108781434, 1037265024)\n\t\t+ W(4, -1111023634, -1115901635, -1091081120, -1095412525)\n\t\t+ W(5, 1066870285, -1137657706, 1043350243, -1126645268)\n\t\t+ W(6, 1036510752, -1117993552, -1099268355, -1083342245)\n\t\t+ W(7, 1034064765, 1037488276, 1014772326, -1113946823) + W(8, 1004185429, 1041465226, -1113451820, -1115471327)\n\t\t+ W(9, -1118193886, 1023464409, -1138084208, 1032826620)\n\t\t+ W(10, 1033017445, -1113757911, 1021941233, -1161911507)\n\t\t+ W(11, -1120710156, 1018751107, -1148724493, 967002060);\n\tWS(1069042774, 1023813606);\n\tsum1 =\n\t\tW(0, -1120569815, 982627530, -1113058670, -1122018428) + W(1, -1110295833, 1021479086, 1001627822, 1013049407)\n\t\t+ W(2, 1029846837, -1113747494, 1033076468, 1039673254) + W(3, 1038190732, 1046432919, -1134594983, 1016231853)\n\t\t+ W(4, -1087916882, -1109565588, -1095056850, -1085384902)\n\t\t+ W(5, -1083727323, -1089999723, -1094559921, -1094610970)\n\t\t+ W(6, 1052864835, 1048856613, 1056781822, 1059308179) + W(7, 1063669175, 1059014405, 1044534497, 1048044230)\n\t\t+ W(8, 1037940281, 1011966045, 1041407837, -1107102153) + W(9, -1111254596, -1110936865, 1025983877, 1046858383)\n\t\t+ W(10, -1130288148, -1136915076, -1140629239, 1027021082)\n\t\t+ W(11, 1007651659, -1128736648, -1139332738, -1114487747);\n\tsum2 = W(0, -1097118790, -1115645027, -1109249259, 1042765123)\n\t\t + W(1, 1015795842, 1028792702, -1116071919, -1105083736)\n\t\t + W(2, -1088323667, 1030684990, -1081609065, -1082143899)\n\t\t + W(3, -1102809807, 1059694558, 1064574838, 1072110122) + W(4, 1067177084, 1056476304, 1058423359, 1061996602)\n\t\t + W(5, 1006287482, -1085597397, -1080103447, -1081832849)\n\t\t + W(6, 1049654149, -1101283859, 1057270411, 1055747315)\n\t\t + W(7, -1087207348, -1106003210, 1023804763, -1090423898)\n\t\t + W(8, -1120538318, 1040556965, -1122455315, -1120372038)\n\t\t + W(9, -1106540179, 1042932361, 1048665861, -1101912272)\n\t\t + W(10, -1108580354, -1124995735, 1017763415, -1114753052)\n\t\t + W(11, 1040354664, 1033427208, -1098395984, 1049644025);\n\tWS(1046279854, -1100682627);\n\tsum1 = W(0, -1155754074, -1110611178, 1022309140, -1118509483)\n\t\t + W(1, -1109973457, 1022155595, -1107208537, -1117715774)\n\t\t + W(2, -1109896894, -1114421037, -1131162933, 1027993210)\n\t\t + W(3, 1040243222, -1117693450, 1019138289, 996768085) + W(4, -1107576521, 1030120983, -1094043528, 1062355587)\n\t\t + W(5, -1094900881, -1110047247, -1110631994, -1107567326)\n\t\t + W(6, 1035511522, -1124410677, 1038811574, 1059809630) + W(7, 1038778317, 1046487839, -1127423844, 1039784548)\n\t\t + W(8, 1002805634, -1114543731, 1039227081, -1113128332)\n\t\t + W(9, -1105636701, -1109843880, 1004796827, -1112311954)\n\t\t + W(10, -1116898232, 1008443967, -1122237996, -1141634631)\n\t\t + W(11, 1021837827, -1132048229, -1123472091, -1128081977);\n\tsum2 =\n\t\tW(0, -1155805362, -1111094572, 1028160711, -1123681391)\n\t\t+ W(1, -1116453985, -1119301235, -1108559318, -1115385578)\n\t\t+ W(2, -1107499970, -1112866732, -1106540686, -1140638716)\n\t\t+ W(3, 1031083122, -1139408516, 1034592379, -1116565509) + W(4, 1022847832, 1044264749, -1155674450, 1057429467)\n\t\t+ W(5, -1106158641, 1025824831, -1111164410, -1121519923)\n\t\t+ W(6, 1035480223, -1148903065, 1040150233, 1045538131) + W(7, 1031696457, 1041846065, -1120456085, -1129601606)\n\t\t+ W(8, -1120962569, -1114470280, 1010774604, 1016428102)\n\t\t+ W(9, -1120179561, -1118124541, 999266665, -1119709653)\n\t\t+ W(10, -1110725720, 1021130376, -1120260095, 1009992044)\n\t\t+ W(11, 1026515918, -1114275912, 1011855672, -1115407958);\n\tWS(1068834358, -1130516755);\n\tsum1 = W(0, -1110020716, 1043574522, -1110718798, -1129582842)\n\t\t + W(1, -1114402010, 1034180284, 1025857751, -1111247176)\n\t\t + W(2, 1034114243, -1095778974, 1047457188, -1108460854)\n\t\t + W(3, 1054126843, -1096959660, 1033414773, 1039130852) + W(4, 1048068617, 1048936405, 1038642250, -1114164062)\n\t\t + W(5, -1110583455, 1049433806, -1136840220, -1119539023)\n\t\t + W(6, -1102038774, 1035735542, -1105529591, -1096174934)\n\t\t + W(7, -1112126358, 1043709316, -1123546692, -1112879245)\n\t\t + W(8, 1031998965, -1100504766, 1047377413, -1130108598)\n\t\t + W(9, 1044906670, -1095231947, -1130058411, 1035429307)\n\t\t + W(10, -1110620517, 1038840817, -1109142655, 1023990363)\n\t\t + W(11, -1122044916, 1040978881, -1131191403, -1115530151);\n\tsum2 = W(0, 970017593, -1125442959, -1107196630, -1108273260)\n\t\t + W(1, -1130992285, -1132402709, 1017358256, 988670622) + W(2, -1108165952, 1040753488, 1033984686, 1051322703)\n\t\t + W(3, -1113564209, 1041587650, -1116630320, -1122802752)\n\t\t + W(4, 1047729556, 1000227776, 1038319755, 1055231112) + W(5, -1094436986, 986706110, -1124437274, -1132214419)\n\t\t + W(6, -1102798485, -1088611471, -1087549565, 1062180091)\n\t\t + W(7, 1046553690, -1113546876, -1120036494, 1032902155)\n\t\t + W(8, -1142827268, 1049645408, -1127043239, -1103837458)\n\t\t + W(9, -1107399737, 1048231400, -1124561928, -1145381770)\n\t\t + W(10, 1029593938, -1108133201, -1114349374, 1035145460)\n\t\t + W(11, -1114342182, -1146643074, -1126967424, 1014303584);\n\tWS(1067517750, 1033639701);\n\tsum1 = W(0, 1025509678, -1130341242, -1120272434, 1018375590)\n\t\t + W(1, -1116961737, 1026047982, 1025041660, -1113724179)\n\t\t + W(2, -1102897085, -1132678155, -1151042791, 1013105800)\n\t\t + W(3, 1041000592, 1032243033, 1034904976, -1123793645)\n\t\t + W(4, 1023511162, -1096924480, -1094474081, -1086033191)\n\t\t + W(5, -1085852953, -1093123217, -1093479580, -1091335173)\n\t\t + W(6, 1037697110, 1040728225, 1056422164, 1062857884) + W(7, 1058773976, 1063905370, 1050274619, 1057695471)\n\t\t + W(8, 1039047450, -1108434135, 1032921189, -1122589009)\n\t\t + W(9, -1100255843, -1106044526, -1112977566, -1136654701)\n\t\t + W(10, -1138182274, -1138791135, 1010850641, 1034477848)\n\t\t + W(11, -1112868181, 1026848855, -1122948276, 1007925107);\n\tsum2 =\n\t\tW(0, -1101843642, 1047092496, 1032746990, -1098074183) + W(1, 1053786699, -1096910060, 1043846267, 1023876031)\n\t\t+ W(2, -1101718380, -1110599661, -1127672356, -1096713677)\n\t\t+ W(3, -1104014372, 1035860070, -1097849415, 1051096852) + W(4, 1046322966, 1053918698, -1100340247, 1069438643)\n\t\t+ W(5, 1025809994, -1083706115, 1048729218, -1081917128) + W(6, 1051125372, -1092942861, 1040369276, 1074732797)\n\t\t+ W(7, 1050011098, -1080423025, -1117530220, -1091623712)\n\t\t+ W(8, -1084762721, 1058235489, -1090389206, -1088693676) + W(9, 1053232821, 999981171, -1097505133, 1050919626)\n\t\t+ W(10, 1050651985, -1101055683, 1050412863, -1103557505)\n\t\t+ W(11, 1052371166, -1099152238, 1041618808, -1123531943);\n\tWS(-1098378327, -1087753140);\n\tsum1 = W(0, -1149815841, 1013838405, 1021155853, 1025974631) + W(1, 1017740987, 1020943940, -1137239299, 1031952605)\n\t\t + W(2, -1123262056, -1131552366, -1114416842, -1103162646)\n\t\t + W(3, -1099404299, -1100518162, -1111541722, -1098489580)\n\t\t + W(4, -1110243207, 997589309, -1104972312, 1042062186) + W(5, 1057054155, 1059648114, 1047878460, 1061110492)\n\t\t + W(6, 1053738584, 1025605911, 1049179692, -1094476095)\n\t\t + W(7, -1093068705, -1101042271, -1111532695, -1100382705)\n\t\t + W(8, -1096838314, 967065877, -1108406847, -1130981226) + W(9, 1023051300, 1010424693, -1117167136, 989087216)\n\t\t + W(10, 1031741109, -1135340592, 1029594857, -1145022506)\n\t\t + W(11, 1005012974, -1112923496, 1030823984, -1113821120);\n\tsum2 =\n\t\tW(0, 1034695587, -1111830177, 1017885202, -1116805918) + W(1, 1039973913, -1113376464, 1024357631, -1109344122)\n\t\t+ W(2, 1032463913, 1031752431, -1103205904, 1045285117) + W(3, -1092035876, 1044034906, -1097056010, 1034392181)\n\t\t+ W(4, -1087773887, -1104893727, -1114987001, 1061301409)\n\t\t+ W(5, 1053784665, -1096259933, 1015259894, -1095057905) + W(6, 1051055536, 1010301739, 1045597173, 1065451004)\n\t\t+ W(7, 1036331211, -1101789830, -1105822235, -1098597360)\n\t\t+ W(8, -1103774157, 1003908630, -1107230114, 999416278)\n\t\t+ W(9, -1118216068, 1047293827, -1119063058, -1139528651)\n\t\t+ W(10, 1028563957, -1111301343, 1042437558, -1106181364)\n\t\t+ W(11, 1014136811, -1127455968, -1137717779, 1017174230);\n\tWS(1051991511, -1090129628);\n\tsum1 = W(0, -1119709994, 1028979258, 1025569135, 1025156752)\n\t\t + W(1, -1113846787, 1032797781, -1137003429, -1126457798)\n\t\t + W(2, 1035475128, -1103260128, -1099928080, 1041023848) + W(3, 1030722332, 1040845476, 1015665914, 1032471277)\n\t\t + W(4, 1044364174, 1048862488, 1054464119, -1103260308) + W(5, -1090331224, 1039529634, 1015668019, 1036006161)\n\t\t + W(6, -1099369674, -1107028176, -1092954947, 1048877896)\n\t\t + W(7, 1036105176, -1113372113, -1104520406, -1111431094) + W(8, 1024914253, 1037758213, 1045752341, 992983000)\n\t\t + W(9, -1115078629, 1027244574, 1039091960, -1113568276)\n\t\t + W(10, -1122358045, -1142000036, -1110227337, 1023847918)\n\t\t + W(11, 1018698636, -1139349278, -1131269376, 1004297100);\n\tsum2 =\n\t\tW(0, 1043798657, -1117698064, -1102458928, -1101130902) + W(1, 1025730631, 1026623851, 995294154, 1012466631)\n\t\t+ W(2, -1098470129, -1096590117, -1084690772, 1065791971)\n\t\t+ W(3, -1123809426, 1019910088, 990258218, -1124630920) + W(4, -1126555274, 1047971790, 1067678357, -1099131342)\n\t\t+ W(5, 1036453804, -1117295572, -1116170672, 1010360391) + W(6, 1029962999, 1037727050, 1008201251, -1083609361)\n\t\t+ W(7, 1031198846, -1113754273, 1030505142, -1136369090)\n\t\t+ W(8, 1028782608, -1161955740, -1103096568, 1051059538)\n\t\t+ W(9, -1106261335, 1041141064, 1028328942, -1119361560)\n\t\t+ W(10, -1131048284, 1022180969, -1120783295, 1014843769)\n\t\t+ W(11, 1020274026, -1111232000, -1127235720, 1001879503);\n\tWS(1062559660, 1025273829);\n\tsum1 = W(0, 1017067222, 1004255955, 1019590495, -1109975080) + W(1, 1028071367, 1004648665, -1129853588, 999516190)\n\t\t + W(2, -1098241838, 1041017424, -1136327879, 1032386976)\n\t\t + W(3, 1031451349, -1112687016, 1040197151, -1105242363)\n\t\t + W(4, -1088364567, -1088941672, -1087512143, -1083706517)\n\t\t + W(5, -1089169701, -1092690193, -1100415991, -1093365052)\n\t\t + W(6, 1060515311, 1050253504, 1064814036, 1061681108) + W(7, 1061080357, 1052988124, 1048643203, 1050105214)\n\t\t + W(8, -1113064427, -1115329590, -1113817187, -1146803505)\n\t\t + W(9, -1112935650, 1031379878, -1112391860, 1051227835)\n\t\t + W(10, 1036248943, -1133026900, 1008140615, 1028690158)\n\t\t + W(11, 1010963867, 1030651112, -1133141907, -1139571464);\n\tsum2 =\n\t\tW(0, 1058977722, -1123128465, 1051128320, 1025585093) + W(1, 1043020026, -1090331128, 1037612985, -1101815127)\n\t\t+ W(2, -1088438618, -1084402469, -1097793743, -1092491618)\n\t\t+ W(3, -1090336452, -1094761348, 1032815200, -1080227574)\n\t\t+ W(4, -1070888183, -1068917363, -1079680807, 1078112044)\n\t\t+ W(5, 1082393215, 1070728174, -1090225897, 1066541275)\n\t\t+ W(6, -1080154822, -1109667848, -1080832517, 1058335327)\n\t\t+ W(7, 1067339759, 1057746923, -1122043266, 1067785018) + W(8, 1057028315, -1133954517, 1057005952, -1089499329)\n\t\t+ W(9, 1038175360, -1096630558, 1051816122, -1086032969)\n\t\t+ W(10, 1020668753, -1117456198, 1031920962, 1039195999)\n\t\t+ W(11, 1046190750, -1139309423, -1116527206, 1046599598);\n\tWS(-1077531606, -1068627295);\n\tsum1 = W(0, -1124767318, 1034866077, -1101653116, -1130761376)\n\t\t + W(1, -1106412978, -1121310187, 1040285922, -1107982930)\n\t\t + W(2, -1113367136, 1048375560, -1104403272, 1049955828)\n\t\t + W(3, 1036710310, -1108970480, 1049541454, -1107579101)\n\t\t + W(4, -1095446127, -1099058463, -1090535733, -1087242437)\n\t\t + W(5, -1088900579, -1096168584, -1097928011, -1095682732)\n\t\t + W(6, 1055377197, 1047513184, 1058086815, 1061174628) + W(7, 1057172304, 1056094244, 1047121222, 1054731422)\n\t\t + W(8, -1111814927, 1045191539, -1094831865, 1048150628)\n\t\t + W(9, -1103308083, -1102502166, 1043510842, -1103869114)\n\t\t + W(10, -1126382267, 1025894069, -1117513042, 1008100281)\n\t\t + W(11, 999030326, -1115104524, 1032672660, 1025118882);\n\tsum2 =\n\t\tW(0, -1118325221, -1109912068, 1055626857, 1073210842) + W(1, 1050117205, -1108710534, 1007734945, 1005945059)\n\t\t+ W(2, 1021086937, -1119472758, 1051951524, 1028908234) + W(3, 1044779683, 1039597247, -1130127373, 1026547602)\n\t\t+ W(4, 1043003051, 1026424546, -1092928023, -1081037490)\n\t\t+ W(5, -1093398148, 1044106321, -1119182686, 1019051617)\n\t\t+ W(6, -1131106753, 1030452362, -1103671831, -1079815727)\n\t\t+ W(7, -1105002867, 1032627417, -1108845723, 1023992222)\n\t\t+ W(8, -1122810381, -1109242129, 1034708821, 1035695099) + W(9, 1037167425, -1112762482, -1120996683, 999154803)\n\t\t+ W(10, 1007248641, 1007569065, -1112697430, 1034566233)\n\t\t+ W(11, -1131640977, 1020894429, -1144614067, 1009135009);\n\tWS(1027136184, 1037475189);\n\tsum1 =\n\t\tW(0, 1032095571, -1100957374, 1042581547, 1008293424) + W(1, -1125080965, 1046313162, -1104233593, 1032243376)\n\t\t+ W(2, -1116112165, 1049686375, 1028374302, -1096656387)\n\t\t+ W(3, 1033692244, -1105885187, -1122471385, -1122778646)\n\t\t+ W(4, -1115063802, 1038845436, -1088748902, 1053200569)\n\t\t+ W(5, 1024446429, -1103807360, 1048125173, -1114896431) + W(6, 1049018533, -1106083983, 1046087792, 1044615055)\n\t\t+ W(7, -1090279185, 1052904956, -1106111045, -1113201013)\n\t\t+ W(8, -1119314641, -1120251015, 1034473457, -1099043646)\n\t\t+ W(9, 1029265287, 1033985068, -1106885357, 1045413959)\n\t\t+ W(10, -1107767341, 1047825580, -1104556803, 1041068763)\n\t\t+ W(11, 1035958465, -1106489925, 1037737330, -1123269230);\n\tsum2 =\n\t\tW(0, -1109957285, 1046942588, -1108558913, 1035311457) + W(1, -1103268017, 1020819182, 1017489970, -1119040125)\n\t\t+ W(2, 1028061230, -1090820835, -1168618571, 1053631926)\n\t\t+ W(3, -1140171429, 1024395745, 1034074787, -1111153127)\n\t\t+ W(4, 1045893852, 1047577084, -1096957845, -1097789717)\n\t\t+ W(5, 1058472778, 1010859305, -1118924631, -1134098557) + W(6, -1110812851, 1048459161, 1058947879, 1028951753)\n\t\t+ W(7, -1086199154, 1018177816, -1119421881, 1029986143)\n\t\t+ W(8, -1108048047, -1114577527, -1104353646, 1041621301)\n\t\t+ W(9, 1047742834, -1101676043, 1030918112, -1110045381)\n\t\t+ W(10, 1027149256, -1106934834, -1104794282, -1139749789)\n\t\t+ W(11, -1105608688, 1051639728, -1105627073, 1035525353);\n\tWS(1059085676, -1120419895);\n\tsum1 = W(0, -1123531970, 1015920803, -1129458830, 1003238718)\n\t\t + W(1, 1024388894, 1019022757, -1122285937, 1029064795) + W(2, 1010567522, 1041225150, 1048968044, -1107069702)\n\t\t + W(3, -1107554082, -1131681870, -1110859547, 1018058500)\n\t\t + W(4, -1140828475, 1042370229, -1081896608, 1061545382) + W(5, 1057779808, 1048429719, 1046207852, 1043188126)\n\t\t + W(6, 1031892193, -1105839574, 1052692461, -1113798029)\n\t\t + W(7, -1080962214, 1023517883, -1107360247, -1109838114)\n\t\t + W(8, -1126417758, 1021017477, -1106306215, 1033163859)\n\t\t + W(9, 1051334024, 974463598, -1137698561, -1182091254)\n\t\t + W(10, 1013434325, -1117671948, 1033141013, -1110196995)\n\t\t + W(11, 998455538, -1104852314, -1130795454, -1115208005);\n\tsum2 = W(0, -1115293356, -1104270657, 995357221, -1140125409)\n\t\t + W(1, 1041981586, 1016190873, -1140513641, -1115228320)\n\t\t + W(2, 1051048471, 1028093784, -1111420185, -1087783718) + W(3, 1031459460, 1035133120, 1028088400, 1019234873)\n\t\t + W(4, -1116254969, 1055158904, -1108447426, 1057721666)\n\t\t + W(5, -1086769840, -1119040585, -1121069799, 1043934745)\n\t\t + W(6, -1108089569, -1104160418, -1113016550, 1060085251)\n\t\t + W(7, 1041174723, -1119561801, -1114345654, -1097229960)\n\t\t + W(8, -1110389222, 1040482382, -1105273681, -1106428297)\n\t\t + W(9, 1046452617, 1045849559, 1044224673, -1114369945)\n\t\t + W(10, 1032305896, -1109483288, 1033267880, -1106001572)\n\t\t + W(11, -1115354420, -1127947625, -1119205024, 1033437588);\n\tWS(1063842732, 1069263660);\n\tsum1 = W(0, -1134238373, 1031532473, -1118861678, 1031846503)\n\t\t + W(1, -1118980549, 1032122901, -1119645672, 1033668289)\n\t\t + W(2, -1122877239, -1122091454, -1114405937, -1102409375)\n\t\t + W(3, -1105793535, -1113900631, -1129606328, -1133229476)\n\t\t + W(4, 1055968823, 1052972391, 1057777668, 1062381841) + W(5, 1065218890, 1051224528, 1055096307, 1043160456)\n\t\t + W(6, -1099884346, -1097152888, -1088480739, -1081966868)\n\t\t + W(7, -1086950263, -1107218856, -1097976619, -1106065147)\n\t\t + W(8, -1101209335, -1119905385, 1025124405, -1166909210)\n\t\t + W(9, 1045788186, -1105943487, 1011470685, -1107257190)\n\t\t + W(10, 1027783644, 1025876211, -1133551424, -1124858713)\n\t\t + W(11, -1146513705, -1136389690, -1153551023, 1024085520);\n\tsum2 = W(0, 1008982555, -1122047761, -1134583037, -1137222855)\n\t\t + W(1, -1140752305, 1029699842, -1114302140, 1026101716)\n\t\t + W(2, 1017497319, -1119731325, -1110768789, 1050149080)\n\t\t + W(3, 1041298195, -1094516021, 1037679865, 1029205125) + W(4, -1114050188, 1048705804, 1082656561, 1079097716)\n\t\t + W(5, -1069364548, -1064571216, -1105564781, -1121859551)\n\t\t + W(6, 1044555710, -1104624717, 1041907901, -1088882238)\n\t\t + W(7, 1050137131, -1099205492, -1109039739, 1040352044)\n\t\t + W(8, -1115112254, -1113283108, 1041138312, 1033378952)\n\t\t + W(9, 1048604087, -1105508475, 1026612451, -1131493091)\n\t\t + W(10, -1121509319, 1042591944, -1111081434, 1018241317)\n\t\t + W(11, -1128224049, 1008906239, -1118064246, 1024193619);\n\tWS(-1129102704, 1046511454);\n\tsum1 = W(0, -1120255189, 992833099, -1134582632, -1138794987)\n\t\t + W(1, -1157138191, -1129425099, 1016407976, -1133147960) + W(2, 1003871004, 1029362986, 988783847, 1011030567)\n\t\t + W(3, -1118838023, -1111313565, -1115457860, -1106432157)\n\t\t + W(4, -1098175836, -1113473140, -1095364566, -1091886143)\n\t\t + W(5, 1040190185, -1149570791, 1037653026, 1038304902) + W(6, 1060542285, 1049212165, 1059935407, 1049733902)\n\t\t + W(7, -1115543549, 1041064643, -1119854466, 1029519512)\n\t\t + W(8, -1104614392, -1118651222, -1098721330, -1109648580)\n\t\t + W(9, -1121023765, -1105481630, 1031662787, -1111089569)\n\t\t + W(10, -1115237700, 1012659838, 1026034940, -1116104473)\n\t\t + W(11, 1036784617, -1112251695, 1023835049, -1170197274);\n\tsum2 = W(0, 1039353726, -1104263814, 1027240563, 1028285409) + W(1, 1032871415, -1151417050, 1027668005, 1023556565)\n\t\t + W(2, 1022956598, 1036699032, -1120983737, -1106986979)\n\t\t + W(3, -1095425364, -1136397826, -1108376211, -1098325150)\n\t\t + W(4, -1093991321, -1154678850, -1089878099, 1067214284)\n\t\t + W(5, 1047639440, 1051464555, -1104038071, 1061372327)\n\t\t + W(6, -1088722171, -1088770012, -1101846939, 1070132546)\n\t\t + W(7, 1045480826, -1099095249, 1043597107, -1086577064)\n\t\t + W(8, 1039854738, -1104468959, -1096446657, 1029156699)\n\t\t + W(9, -1098508409, 1024325599, -1148394393, 1034968116)\n\t\t + W(10, -1125147089, -1123571799, 1036003207, -1117321918)\n\t\t + W(11, 1027342659, -1150420266, -1138411071, 1031516803);\n\tWS(1056411607, -1109579684);\n\tsum1 = W(0, -1129654332, 1027988397, 1041758889, 1027974595) + W(1, 1038643645, 1038422303, -1115801276, 1047822542)\n\t\t + W(2, 1040494825, 1031736403, -1118623100, -1104250813)\n\t\t + W(3, 1023561152, -1115303377, -1111435064, 1037517815) + W(4, 1053570965, 1051564806, 1061336939, 1057393436)\n\t\t + W(5, 1065029703, 1052932495, 1051403778, 1056446507)\n\t\t + W(6, -1089114662, -1091392278, -1087917688, -1081469355)\n\t\t + W(7, -1091410052, -1085011849, -1108233957, -1089621406)\n\t\t + W(8, -1099475130, 1018661052, 1034322317, -1094207710)\n\t\t + W(9, 1052271760, -1096091282, 1036087894, -1095410877)\n\t\t + W(10, 1041782836, 1032323860, 1035039650, 1010041732)\n\t\t + W(11, 1041287822, 1020820966, 1036272138, 1043391417);\n\tsum2 = W(0, -1114696922, 1043151870, -1098855398, 1045725515)\n\t\t + W(1, 1041130784, -1093166728, 1048010869, -1097485062)\n\t\t + W(2, 1063327246, 1054945342, -1111180476, -1078968963)\n\t\t + W(3, -1075182266, -1073598210, -1072729035, -1069127579)\n\t\t + W(4, -1085101471, -1091433742, 1044429796, 1071264665) + W(5, 1068966947, 1074573142, 1072575447, 1082548410)\n\t\t + W(6, -1089121793, -1108711949, -1096795753, 1049748951)\n\t\t + W(7, 1041099170, -1107925652, -1087601324, 1057234494) + W(8, 1049274948, 1036153834, 1047012469, 1043607695)\n\t\t + W(9, 1008700501, -1106854972, -1100708600, -1095686167)\n\t\t + W(10, 1041765085, -1114908726, 1017938665, -1113887753)\n\t\t + W(11, 1052357470, -1097732836, 1035577978, -1117196119);\n\tWS(-1075355670, -1094395357);\n\tsum1 = W(0, -1145694380, 1031927794, -1126751284, -1107635165)\n\t\t + W(1, 1035883256, -1117999477, 1025403748, -1135056568) + W(2, 1013276974, 1019602069, 1034056645, 1046251906)\n\t\t + W(3, -1107984424, -1101824103, -1117853800, -1113050587)\n\t\t + W(4, 1022872131, 1012968093, 1064151904, 1059501808) + W(5, 1052823861, 1052884390, 1040309473, 1051481338)\n\t\t + W(6, -1102394069, -1105184299, -1089968245, -1079531190)\n\t\t + W(7, 1040654683, -1097950850, 1021798787, -1099617206)\n\t\t + W(8, -1132601278, -1113047243, -1112578984, 1045395638)\n\t\t + W(9, 1035604635, -1102570614, 1016601958, -1117559395)\n\t\t + W(10, 1032373060, -1123577887, 1012023536, -1121043161)\n\t\t + W(11, -1136193989, -1124087697, 1014648876, 1015049529);\n\tsum2 = W(0, 1040559153, -1099966915, 1051040838, -1122400566)\n\t\t + W(1, -1103745056, -1127876766, -1118336076, -1122216569)\n\t\t + W(2, 1024400373, 1050797480, -1098907063, -1088192853) + W(3, -1132746540, 1040989775, 999475557, 1024449813)\n\t\t + W(4, -1112035522, -1095559069, -1091507667, 1063399780)\n\t\t + W(5, 1064106398, -1101527709, 1025976147, -1118033876)\n\t\t + W(6, -1102969122, 1048535090, -1081423354, 1065515124)\n\t\t + W(7, -1104928579, 1047332946, -1171911780, 1047796018)\n\t\t + W(8, 1035694118, -1109162397, 1049424016, -1098794388)\n\t\t + W(9, -1097345189, -1105732065, -1107661001, 1036172042)\n\t\t + W(10, 1008704054, 1035803260, 1032276403, -1104133833)\n\t\t + W(11, 1042270874, -1109516912, 1033064723, -1106418589);\n\tWS(1045480366, -1089018411);\n\tsum1 = W(0, 956510844, 998930446, -1129843310, -1113698796) + W(1, 1001814128, -1126854725, 1033942209, -1127622934)\n\t\t + W(2, -1147321796, -1119371847, 1033743797, 1047477674) + W(3, 993727556, 1019312750, 991522899, -1124727396)\n\t\t + W(4, -1098659472, -1114996930, -1084286683, -1080535200)\n\t\t + W(5, -1100569285, -1095107249, -1106428344, -1102902186)\n\t\t + W(6, 1046172476, 1016456206, 1060852743, 1065762350) + W(7, 1055209670, 1054147605, 1040201800, 1049320503)\n\t\t + W(8, -1117032824, 1032232105, 1034928007, 1036591131)\n\t\t + W(9, 1034876769, -1103835661, -1110790848, -1117790432)\n\t\t + W(10, 1012429717, 992745416, -1120189081, -1130833259)\n\t\t + W(11, -1112309127, -1162991986, 1019870324, -1166423644);\n\tsum2 = W(0, -1135134951, -1138029383, 1039247354, -1105815405)\n\t\t + W(1, 1043479193, -1108579602, 1036464698, -1114044136)\n\t\t + W(2, 1034251754, -1112450391, 1048129179, 1013788103)\n\t\t + W(3, -1107279344, -1098532570, -1125069222, -1106884027)\n\t\t + W(4, -1112699779, 1048844919, -1081251706, -1102377508)\n\t\t + W(5, 1074756442, -1079912447, 1051417558, -1113485350)\n\t\t + W(6, 1028246411, -1097747276, 1030988939, -1085286825) + W(7, 1066704374, 1048531717, 1025432715, 1037742006)\n\t\t + W(8, 1024730233, 1036047504, 1032907358, -1098604264)\n\t\t + W(9, -1121203556, -1097926469, 1037541288, -1114746618)\n\t\t + W(10, -1141862453, -1116303285, 1032058431, 1026446373)\n\t\t + W(11, -1115422697, 1017067577, -1110631868, 1026757097);\n\tWS(-1129198960, -1098545020);\n\tsum1 = W(0, 1016631370, -1109829274, 1027654249, -1135763497)\n\t\t + W(1, 1022371969, -1109147378, -1124465415, 1000105708)\n\t\t + W(2, -1103774667, 1046260982, 1041444949, 1029491033) + W(3, 1033440347, 1047095266, -1135425502, 1031236725)\n\t\t + W(4, -1097986678, -1103302894, -1085753764, -1087937321)\n\t\t + W(5, -1100503343, -1092825640, -1114972810, -1092048676)\n\t\t + W(6, 1055978916, 1038066845, 1057520791, 1064242364) + W(7, 1043702710, -1106434743, 1042256612, 1048160666)\n\t\t + W(8, 998946812, 1013747092, 1033950432, -1108378356) + W(9, -1149232679, 1039795292, -1134578155, 1047273267)\n\t\t + W(10, -1113370572, 1026014767, -1133701934, -1124979408)\n\t\t + W(11, 1034434352, -1123636138, -1133096682, -1110866582);\n\tsum2 =\n\t\tW(0, 1008784866, -1111810524, -1123287968, 1035375858) + W(1, -1131156064, 1014562100, 1013976797, 1025684805)\n\t\t+ W(2, -1101060946, 1041574978, -1113715041, 1009783259)\n\t\t+ W(3, -1117592464, 1037249766, -1112331585, -1116058888)\n\t\t+ W(4, 1045200185, -1109901275, -1111729623, -1099551228)\n\t\t+ W(5, 1028611861, -1126723736, 1048583824, -1123970907) + W(6, 1046672822, -1123470329, 1052382391, 1057574679)\n\t\t+ W(7, 1037781521, -1088911756, -1105025107, -1098796399)\n\t\t+ W(8, -1118279822, -1113194466, -1105523541, -1090683445)\n\t\t+ W(9, -1089242363, 1057541056, 1046019340, 1058673062) + W(10, 994298612, -1124039764, 1016737108, 1025528776)\n\t\t+ W(11, 1044936991, 1038965019, -1100984465, -1111874598);\n\tWS(1055927127, 1032414456);\n\tsum1 = W(0, 1026777470, -1114645447, -1107741345, 1034928754)\n\t\t + W(1, -1106080726, 1036990351, -1132545269, -1115024108)\n\t\t + W(2, -1105922759, 1038629978, -1118870909, 1048976902)\n\t\t + W(3, 1031310464, -1116578243, -1121324945, 1028926430)\n\t\t + W(4, 1039415013, -1109541160, -1121580331, 1035267569)\n\t\t + W(5, -1092363639, 1052806443, -1105847083, -1107491323)\n\t\t + W(6, -1114467391, 1049649890, -1099187900, -1110167275)\n\t\t + W(7, 1044706191, -1098780639, 1042096283, 1026721601) + W(8, 1040445212, -1118657663, 1040802710, 1050521172)\n\t\t + W(9, -1122260014, 1045812872, -1112784326, 1028974308)\n\t\t + W(10, -1109775801, 1029983880, -1103039897, 1032803169)\n\t\t + W(11, -1106266495, -1117906236, 1031828590, -1113700371);\n\tsum2 =\n\t\tW(0, 1046339838, -1116647554, 1008329020, 1019769686) + W(1, -1108633040, 1035617664, 1033551944, -1127469148)\n\t\t+ W(2, -1095477634, 1046850624, 1046890022, -1090363791)\n\t\t+ W(3, 1015468535, -1092874283, -1110478242, 1032940188)\n\t\t+ W(4, 1041080449, -1097525459, -1087064144, 1051375999)\n\t\t+ W(5, 1042338708, 1061754259, -1118600243, -1108757958)\n\t\t+ W(6, -1106007640, 1046513622, 1055899106, -1097018549)\n\t\t+ W(7, -1122727333, -1100515622, 1043707610, 1042447169) + W(8, 1022253579, -1109703351, 1048733947, 1049672544)\n\t\t+ W(9, 1051464963, 1025134369, -1099218588, -1108633308)\n\t\t+ W(10, -1124447256, 1043170037, -1100004355, -1097807314)\n\t\t+ W(11, -1129042543, -1112390214, 1040819075, -1120359161);\n\tWS(1063732396, 1030954530);\n\tsum1 = W(0, 1032126752, 976782235, 1026279044, -1118035684) + W(1, 1028715099, -1121995199, 1032435871, -1124714096)\n\t\t + W(2, 1036299263, -1151769923, 1034233519, 1048463661) + W(3, 1036782808, 1036166050, 1020132772, 1046021200)\n\t\t + W(4, 1040042182, -1126287138, 1024363996, -1092651532)\n\t\t + W(5, -1113174091, -1102126950, -1118937966, -1096484767)\n\t\t + W(6, -1085959612, -1100277765, -1112294345, -1099766629)\n\t\t + W(7, 1035866674, 1049742039, -1116277291, 1041160144) + W(8, 1040218780, 1040546448, 1044348191, 1048686290)\n\t\t + W(9, 1009750781, -1118854702, 1040779899, 1026126509)\n\t\t + W(10, 1017251428, -1135394341, -1164354746, 1013744650)\n\t\t + W(11, -1137751148, 972654113, -1123833085, 1032085003);\n\tsum2 = W(0, 1023560328, 1005726416, -1116687692, -1115408842)\n\t\t + W(1, 1041728877, -1105589301, 1038558105, -1113100068)\n\t\t + W(2, -1114346246, 1027252420, -1128267680, -1102003721)\n\t\t + W(3, 1038357336, 1012806192, 1025579970, 1032847335) + W(4, 1055635447, 1058379047, -1093219742, -1075825777)\n\t\t + W(5, -1122468504, 1043596623, -1110943172, 1037773232)\n\t\t + W(6, 1080093571, 1066361916, -1079490865, -1069273193)\n\t\t + W(7, 1048667285, 1040586029, 1032482622, -1123027612) + W(8, 1053265582, 1041698127, 1044641580, -1103412699)\n\t\t + W(9, -1104322529, -1123753164, -1134749344, 1003892288)\n\t\t + W(10, -1109086292, 1032891532, -1142986448, 1040229437)\n\t\t + W(11, 1008854368, -1116993440, -1125346072, 1027065900);\n\tWS(-1091386327, 1040820769);\n\tsum1 = W(0, -1133727678, 1015097725, -1138479056, -1114059050)\n\t\t + W(1, 1024901707, -1122041679, 1013224377, -1123564392)\n\t\t + W(2, -1113530145, -1145488419, 1016526204, 1038143634)\n\t\t + W(3, -1118547201, 1031893970, -1120867010, 1007161468)\n\t\t + W(4, 1024243708, -1111308865, -1103657483, -1091368514)\n\t\t + W(5, -1102986721, -1104061090, 1020963773, -1118947879)\n\t\t + W(6, 1033777591, 1043618337, 1057905859, 1056300329) + W(7, 1019703993, 1024793576, -1114932462, 1024563890)\n\t\t + W(8, 1009482248, -1113425624, -1104459527, -1103801765)\n\t\t + W(9, 1043076580, 1039830345, 1042855834, -1129826522)\n\t\t + W(10, -1122301794, 1016257779, 1026855702, -1136938187)\n\t\t + W(11, -1118577003, -1111999542, -1119434421, 1018984621);\n\tsum2 =\n\t\tW(0, -1118014300, -1121259996, -1118480989, -1120519112) + W(1, 1034237400, 1031820662, -1116062192, 1029964608)\n\t\t+ W(2, -1107425211, 1034914627, 1057124947, 1041680563) + W(3, -1110358856, -1114315301, 1010762999, 974005161)\n\t\t+ W(4, 988341556, 1058886039, 1080471640, -1067455811) + W(5, -1105716188, -1113532913, 1033223294, -1106855886)\n\t\t+ W(6, -1122432623, 1043257251, 1049657622, -1080970083)\n\t\t+ W(7, -1091987171, 1051213388, -1109593637, 1037720533) + W(8, 1031639360, -1110426684, 981320073, -1105451271)\n\t\t+ W(9, 1044181951, -1110623014, 1038375349, 999181553) + W(10, -1122715046, 1030027284, 1022014335, 1012008135)\n\t\t+ W(11, -1121988626, 1009779611, -1113750985, 1028099986);\n\tWS(1067317974, -1128063738);\n\tsum1 = W(0, -1112292702, 1030230219, 1023947008, 1037678225) + W(1, 1016840879, 1032095758, 1018620213, 1023530868)\n\t\t + W(2, 1047000343, 1008892739, 1038318737, -1110797816)\n\t\t + W(3, -1118959774, -1114918032, -1114992535, 1004226268)\n\t\t + W(4, -1088068429, -1130941083, -1122235065, 1055157388)\n\t\t + W(5, 1048428783, 1052878187, 1036886165, 1052393190) + W(6, 1048838463, -1108932456, 1034700890, -1096039434)\n\t\t + W(7, -1113377160, -1088738347, -1100769370, -1082056652)\n\t\t + W(8, -1121751190, 1013016624, -1165199081, 1039874719) + W(9, 1031603132, 1045859362, 1028131502, 1050791676)\n\t\t + W(10, 1027999791, 1017454988, 1031463650, 1025959551)\n\t\t + W(11, 1018062255, -1143147336, 1018649043, -1115371169);\n\tsum2 =\n\t\tW(0, 1017164622, 1004731920, 1046790460, -1106036842) + W(1, 1036535757, -1103678216, 1025471738, -1122761780)\n\t\t+ W(2, -1091622621, 1038964407, 1049069382, 1047078409)\n\t\t+ W(3, -1107481011, -1098544714, 1040369699, -1107095641)\n\t\t+ W(4, 1072454217, -1113390241, -1080520963, -1071223185) + W(5, 1059476479, 1061994978, 1053016271, 1054597152)\n\t\t+ W(6, 1067262657, -1112910469, 1044434118, -1073367678) + W(7, -1099641871, 1029437169, 1051233508, 1062276141)\n\t\t+ W(8, -1098954881, 1038887363, 1033204278, -1106847320) + W(9, 967303234, 1030771421, -1123160801, -1113404397)\n\t\t+ W(10, 1035940089, -1108193245, 1032575148, -1127548642)\n\t\t+ W(11, 1015223408, -1109007913, 1042599225, -1116480773);\n\tWS(-1095745367, -1102532016);\n\tsum1 =\n\t\tW(0, -1117700567, -1125050061, -1104292247, 1032821374) + W(1, -1106685309, 1026094807, -1109617979, 1025256272)\n\t\t+ W(2, -1131139906, -1115476726, 1044141479, 1043020835) + W(3, 1033588284, 1027591436, 1031476842, -1109574827)\n\t\t+ W(4, -1104729417, 1049785973, -1096094522, -1103984511)\n\t\t+ W(5, -1135965844, -1092452582, 1035377859, -1108767399) + W(6, 1031266390, 1034862742, 1043929817, 1025371182)\n\t\t+ W(7, 1048857569, 1049600882, -1127826823, 1045422790) + W(8, 1034962037, -1108925228, -1121682994, 1003529681)\n\t\t+ W(9, -1108409524, 1029191534, -1105178749, -1147768356)\n\t\t+ W(10, -1123836106, 1021444802, -1112024639, 1036065165)\n\t\t+ W(11, -1114922921, 1028793076, 1025559229, 1027631502);\n\tsum2 = W(0, -1102917712, -1090566997, -1083236080, -1084121809)\n\t\t + W(1, -1092542987, -1098664696, -1115432352, -1109069600)\n\t\t + W(2, 1050493331, 1058641835, 1072277942, 1066117726) + W(3, 1055792221, 1016159325, -1123932559, -1107091755)\n\t\t + W(4, -1104683957, -1106617401, -1083529216, -1110147426)\n\t\t + W(5, 1053260074, 1047496584, 1040670728, 1041712051) + W(6, 1038417192, -1131983160, 1026745412, -1097349120)\n\t\t + W(7, -1092834676, 1048447149, -1110071086, 1019306140)\n\t\t + W(8, 1032679083, -1117134944, 1030312114, 1045086676)\n\t\t + W(9, -1115504874, -1103742512, 1018575153, 1023956348)\n\t\t + W(10, -1124032472, -1142618034, 1033461689, -1107466492)\n\t\t + W(11, 1040055828, -1111688997, 1025562022, 995416610);\n\tWS(1064673964, 1027541745);\n\tsum1 = W(0, 1040862122, -1105951646, -1159900529, 1047048323)\n\t\t + W(1, -1123048515, -1115789415, 1032172675, 1028373376)\n\t\t + W(2, 1042078126, -1104573695, -1104241265, -1111978190)\n\t\t + W(3, -1096920009, 1032018046, 1022298419, -1099040790) + W(4, 1060076351, 1032906140, 1059885441, 1064315273)\n\t\t + W(5, 1059865934, 1050382000, 1053685923, 1058530774)\n\t\t + W(6, -1092017101, -1098380055, -1084208856, -1089015252)\n\t\t + W(7, -1085419935, -1095947620, -1104053605, -1087017843)\n\t\t + W(8, 1050924251, -1103234546, 1045405901, 1048739529) + W(9, 1043557114, 1032498465, 1042167691, 1037400788)\n\t\t + W(10, -1113513485, -1122608113, -1114509959, -1097330869)\n\t\t + W(11, -1130206982, 1009712656, 1011282770, -1099616447);\n\tsum2 =\n\t\tW(0, 1039738446, -1096514001, 1067583917, 1083413745) + W(1, 1067818743, -1089267428, 1050540062, -1102208699)\n\t\t+ W(2, -1137481092, 1050849818, 1017170018, 1041988969) + W(3, -1115429835, 1054896719, -1108022123, 1042362507)\n\t\t+ W(4, 1036746190, -1109747727, -1078331016, -1066189939)\n\t\t+ W(5, -1077977055, 1050059376, -1119460484, -1140654200)\n\t\t+ W(6, 998253152, -1102987618, 1044897487, -1088427847)\n\t\t+ W(7, -1125950758, -1108032139, 1038480975, -1098634922)\n\t\t+ W(8, 1035100433, -1144728624, -1108804343, 1030429056)\n\t\t+ W(9, -1124211336, 1045807183, -1164441214, -1138500556)\n\t\t+ W(10, 1029249908, -1103405950, -1113657787, 1049519441)\n\t\t+ W(11, -1105416150, -1104699523, 1036658641, -1135144148);\n\tWS(-1084384556, -1100810808);\n\tsum1 = W(0, 1032390692, 1033258828, 1036208454, -1153131217) + W(1, 1035878930, -1113170436, 1034716867, 1008810370)\n\t\t + W(2, -1101205955, -1114756638, 1034225747, -1123281148)\n\t\t + W(3, 1052764669, -1110681734, -1132636906, 1010363102)\n\t\t + W(4, -1095424763, -1115332589, -1089988048, -1080799329)\n\t\t + W(5, -1086451675, -1089641270, -1111992667, -1089944572)\n\t\t + W(6, 1056723089, 1044941511, 1059213081, 1058219330) + W(7, 1065718984, 1051546784, 1048907447, 1051751177)\n\t\t + W(8, -1103994552, -1103092466, 1016698694, -1102604175)\n\t\t + W(9, 1010056863, -1105901266, -1104305197, 1025009925)\n\t\t + W(10, -1113631133, 1038921097, 1041433148, 1029458059)\n\t\t + W(11, 1046701849, -1114617106, 1022756491, 1042675492);\n\tsum2 =\n\t\tW(0, 1003892755, -1123544386, 1040199158, -1099919704) + W(1, 1046124074, -1114201767, -1137485313, 1018916205)\n\t\t+ W(2, -1106845972, 1040443741, 1041556166, -1098641213) + W(3, 1043027552, -1102894487, 1031291554, 1029095170)\n\t\t+ W(4, -1130802613, -1099129814, 1034864555, 1044973210) + W(5, 1046986152, 1040886200, -1097152858, 1035815457)\n\t\t+ W(6, 1042856976, 1046395618, 1049252005, 1051151809) + W(7, -1120255910, -1098031952, -1103612985, 1034278467)\n\t\t+ W(8, -1090921483, -1117156960, -1101642940, -1094482604)\n\t\t+ W(9, 1049495257, -1113386876, -1132183417, 1026205590)\n\t\t+ W(10, 1035865477, -1128022157, 1029291710, 1033022953)\n\t\t+ W(11, 1028643166, 1031856421, -1106468948, 1020718685);\n\tWS(-1097545175, -1081485407);\n\tsum1 =\n\t\tW(0, 1036015463, 1036906638, 1033438601, -1148467606) + W(1, -1116883369, 1043481795, -1107248831, 1035852867)\n\t\t+ W(2, 1034150438, -1107749409, 1025404544, -1130068931)\n\t\t+ W(3, -1110996648, -1129433572, -1112307200, -1133343797)\n\t\t+ W(4, 1057909318, 1041348600, 1058891216, 1062920275) + W(5, 1058446394, 1057530498, 1041812911, 1058924580)\n\t\t+ W(6, -1085934785, -1091465804, -1088212159, -1085185870)\n\t\t+ W(7, -1083820335, -1097522985, -1098817647, -1088845017)\n\t\t+ W(8, 1035924004, -1120240750, 1040930578, 1044931644) + W(9, -1110014855, 1046628778, -1112689630, 1031062731)\n\t\t+ W(10, 1033963168, -1115496908, 1023737332, 1034996968)\n\t\t+ W(11, -1109644005, 1044774695, -1109394217, 991839047);\n\tsum2 =\n\t\tW(0, -1085422352, -1073537081, -1090145600, -1103264022)\n\t\t+ W(1, -1098060014, 1039561049, -1111561066, -1097648243)\n\t\t+ W(2, -1096165509, -1097506962, 1035648589, 1037776879)\n\t\t+ W(3, -1106454260, -1132410675, -1095706003, -1093619532)\n\t\t+ W(4, 1057773529, 1050305732, 1070820271, 1064009122) + W(5, -1102687355, 1037201191, -1106323076, 1065891070)\n\t\t+ W(6, -1090487063, 1042351306, 1042246902, 1057815879) + W(7, 1056492080, -1132940238, 1047053654, -1104795343)\n\t\t+ W(8, 1044955346, -1096519547, 1012707558, 1035447241) + W(9, -1098251612, 1055262754, -1098685023, 1017091667)\n\t\t+ W(10, 1048850208, -1098077313, 1040847724, 1039355809)\n\t\t+ W(11, -1128314591, 1034334977, -1107078913, 1044351754);\n\tWS(-1079771574, 1075069839);\n\tsum1 = W(0, 1032166989, -1111167476, -1123178206, 1032734815)\n\t\t + W(1, 1029165557, -1112820125, -1135576864, -1114861753)\n\t\t + W(2, -1118529175, 1021133405, -1093562003, -1104246611)\n\t\t + W(3, -1098100446, -1114628655, -1133453360, -1119446905)\n\t\t + W(4, 1055702741, 1048648437, 1062276827, 1071187580) + W(5, 1061220800, 1049405702, 1042497282, 1051379002)\n\t\t + W(6, -1092970539, -1092445782, -1088433116, -1118830448)\n\t\t + W(7, -1097110780, -1093425874, -1109854691, -1094782027)\n\t\t + W(8, -1117950828, 1033539229, -1104828877, -1114529494)\n\t\t + W(9, -1112849365, 1023590922, 992807281, -1104282614)\n\t\t + W(10, -1113551430, -1142239002, -1110397888, -1119974813)\n\t\t + W(11, -1139975764, -1111568211, 974859957, -1107804608);\n\tsum2 =\n\t\tW(0, -1108373663, 1008476139, -1104454680, 1048684757) + W(1, -1093428939, 1053127551, -1096653504, 1052320010)\n\t\t+ W(2, 1058265898, -1092753943, 1052155727, -1094584251)\n\t\t+ W(3, 1044002260, 1027921055, -1109762731, -1093142139)\n\t\t+ W(4, -1105791278, -1098184263, -1106622092, 1051207789)\n\t\t+ W(5, 1040647411, -1092246791, 1028193495, -1102532444) + W(6, -1097633487, 1036219103, 1039768739, 1059813061)\n\t\t+ W(7, 1037804238, 1058749571, -1091622541, 1056925595) + W(8, 1040059628, -1096394805, 1043022076, -1089567461)\n\t\t+ W(9, 1053976656, -1109099791, -1128546349, -1105143398)\n\t\t+ W(10, 1041333883, -1106791026, 1034264586, 1043988712)\n\t\t+ W(11, -1094438691, 1046191998, -1105323978, 1027895571);\n\tWS(-1080085654, 1070612946);\n\tsum1 = W(0, 1024243697, -1118763904, -1129448298, -1125372076)\n\t\t + W(1, -1130529432, -1113325424, 1028582463, -1115811081)\n\t\t + W(2, -1111019203, 1017624971, 998267115, 1049904509) + W(3, 1044325341, 1036368923, 1022422215, 1029887376)\n\t\t + W(4, -1099863023, -1093242824, -1096657110, -1083526619)\n\t\t + W(5, -1084273056, -1089131829, -1100657096, -1095229037)\n\t\t + W(6, 1051294614, 1049086721, 1054244159, 1063525996) + W(7, 1060516258, 1052725165, 1045179095, 1047234173)\n\t\t + W(8, 1018553499, -1110032568, -1107816470, 1050014740)\n\t\t + W(9, -1120428313, 1042939778, -1105723916, 1034815359)\n\t\t + W(10, 1001929499, -1129474933, -1103030358, 1034265690)\n\t\t + W(11, 1028809164, -1137068591, 995816851, 1023513072);\n\tsum2 =\n\t\tW(0, 1027629060, 1025235210, -1125103522, -1130467636) + W(1, 1000499297, 1020465580, -1138182160, 1014590712)\n\t\t+ W(2, -1114994936, 1042086314, -1109536432, 1043514454)\n\t\t+ W(3, -1116030212, 1034381305, -1133867384, 1032991925) + W(4, 1044032624, -1110089750, 1027377576, 1040857173)\n\t\t+ W(5, 1049094807, -1102199059, 1040209410, -1107097337) + W(6, -1120685804, 1041443307, 1041551160, 1078385077)\n\t\t+ W(7, 1071531230, -1097624207, 1042950964, -1110894461)\n\t\t+ W(8, 1028515824, -1109301707, 1038947979, -1069674168)\n\t\t+ W(9, -1072009528, 1042363648, -1100125727, 1020171064)\n\t\t+ W(10, -1128032940, 1028557604, -1095260923, 1041445431)\n\t\t+ W(11, 1044521776, -1111317304, 1026231984, -1115643044);\n\tWS(-1094677847, 1071331518);\n\tsum1 = W(0, -1108370254, 1027561514, -1098732332, -1118400576)\n\t\t + W(1, -1098654343, 1020701942, -1114608461, -1102267173)\n\t\t + W(2, 1050522446, -1102155388, 1051883284, 1052444946) + W(3, 1048632224, 1036179296, 1043748547, 1046936641)\n\t\t + W(4, -1090412394, -1096900614, -1088235704, -1081990504)\n\t\t + W(5, -1083209683, -1095695623, -1096819473, -1088405429)\n\t\t + W(6, 1059909490, 1033926552, 1060113893, 1065971548) + W(7, 1057796766, 1055081266, 1048355474, 1057781222)\n\t\t + W(8, -1131659964, -1108396174, -1104366446, 1016076284)\n\t\t + W(9, -1094058291, 1044926426, -1102235562, -1122894705)\n\t\t + W(10, 1045668787, -1099365497, 1036562753, 1045429432)\n\t\t + W(11, 1027649399, -1115499084, 1020598162, 1041162909);\n\tsum2 =\n\t\tW(0, -1102306900, 1039340517, 1036459319, 1032447827) + W(1, -1099327251, 1052797014, -1122082449, -1098452307)\n\t\t+ W(2, 1042298222, 1011988276, -1104503945, -1099734245) + W(3, 1032726509, 1032685073, 1045894449, 1031495568)\n\t\t+ W(4, 1021581591, -1091773202, -1086047943, -1071833762)\n\t\t+ W(5, -1087097517, -1094401898, -1089730964, -1094627244)\n\t\t+ W(6, -1097774924, -1083547573, -1076320925, -1070847208)\n\t\t+ W(7, -1079468544, -1084551630, -1096261152, -1097740674)\n\t\t+ W(8, 1051289508, 1050176620, 1066124397, 1069182349) + W(9, 1058492703, 1061745990, 1029975482, 1062784611)\n\t\t+ W(10, 1044651623, 1060043835, 1072230275, 1080482397) + W(11, 1067612874, 1060905071, 1035766217, 1036170953);\n\tWS(-1075403638, -1098484659);\n\tsum1 =\n\t\tW(0, 1008218969, 1031048294, -1123131291, 1045188911) + W(1, -1123984690, 1016373997, 1038284987, 993498863)\n\t\t+ W(2, -1141902179, 1016567255, -1102849342, 1018204181)\n\t\t+ W(3, -1097928441, -1102752375, -1119205801, -1111653947)\n\t\t+ W(4, 1045612697, 1051272109, 1045999461, 1067242878) + W(5, 1057827361, 1039307800, 1052680217, 1048974634)\n\t\t+ W(6, -1098198307, -1097302541, -1089514713, -1083074125)\n\t\t+ W(7, -1090995143, -1089521325, -1111274305, -1089001074)\n\t\t+ W(8, -1115216112, 1045061466, -1110301017, 1055219615) + W(9, 1042127630, 1018247819, 1043301703, -1112012330)\n\t\t+ W(10, 1014117412, 1032424528, -1117285565, 1039741805) + W(11, -1138318152, 990571063, 1035406958, 991913685);\n\tsum2 = W(0, 1032878555, -1123900432, 1029453781, -1120535472)\n\t\t + W(1, 1040510410, -1109544472, 1036988619, -1113659102) + W(2, -1136655860, 1023477569, 993352402, 1007422372)\n\t\t + W(3, -1110556919, -1138628828, -1137184004, 1035524869)\n\t\t + W(4, 1031615749, 1032172309, -1101515073, 1063516373)\n\t\t + W(5, -1114866186, -1101753271, 1046060209, -1110546008)\n\t\t + W(6, -1113247036, 1040892014, -1093800370, 1059067488)\n\t\t + W(7, 1049733424, -1112478460, -1128679382, -1106958218)\n\t\t + W(8, -1102324444, 1041677780, -1099560811, -1101931537)\n\t\t + W(9, -1091691569, -1137342172, -1112686045, 999359657)\n\t\t + W(10, 1033821831, -1122117887, -1111754290, -1118366060)\n\t\t + W(11, -1131546954, 1043560141, -1110783375, 1026284797);\n\tWS(1018938736, 1060529869);\n\tsum1 =\n\t\tW(0, -1114076530, 1008598737, 1029696041, -1118730378) + W(1, 1036159584, 1012443924, 1034257674, -1133449206)\n\t\t+ W(2, 1037607357, -1120766810, -1113865353, 1019917938)\n\t\t+ W(3, 1041300082, -1119787914, -1102751430, 1018668169) + W(4, 1045714156, 1044442542, 1057228923, 1049628033)\n\t\t+ W(5, -1081803320, 1042784239, 1016494120, 1031639516) + W(6, -1166977277, 1024586298, -1084710912, 1048848151)\n\t\t+ W(7, 1052825757, -1110703311, -1108049641, -1111061268)\n\t\t+ W(8, -1102825464, 985048227, 1048654858, -1109196652) + W(9, -1101625253, 1021290536, 1039349129, 1018121541)\n\t\t+ W(10, 1003359422, 1019680094, -1122235660, 1032134772)\n\t\t+ W(11, 1023446241, 1025035938, -1122160707, 1028394476);\n\tsum2 = W(0, -1146778654, 1009999826, 1042445717, 1027431889)\n\t\t + W(1, -1118789096, 1034933139, -1102516465, 1039233552)\n\t\t + W(2, 1033337426, -1117028555, -1092512747, -1100415596)\n\t\t + W(3, -1100913756, 1031653672, 1049736808, -1123203031)\n\t\t + W(4, -1101837401, -1107426057, -1106280442, 1063146362)\n\t\t + W(5, -1086144449, -1121957589, -1104136456, -1123128270)\n\t\t + W(6, 1023259685, -1113617305, 1063964069, 1058459732)\n\t\t + W(7, -1101061454, -1139753565, 1034026738, -1143324392)\n\t\t + W(8, -1165315756, 1042598704, -1101414619, -1136881638)\n\t\t + W(9, -1099212326, 1035181957, 1031514566, -1103321885)\n\t\t + W(10, 1017616818, -1119841713, 1033400884, -1110929163)\n\t\t + W(11, 1043348599, -1110261015, -1119239229, 1032933914);\n\tWS(1057790316, -1113005641);\n\tsum1 = W(0, -1123468520, 1016842734, 1017823704, 1031334797) + W(1, 1029517379, 1032276500, 1024531558, 1032934320)\n\t\t + W(2, 1034968039, -1180462681, -1141354132, -1111663246)\n\t\t + W(3, -1096962432, -1102337515, -1112383277, -1115337892)\n\t\t + W(4, -1107161453, -1109372445, -1097660717, 1060769665)\n\t\t + W(5, 1062816796, 1057344992, 1050585827, 1048852876) + W(6, 1035442035, -1126387193, 1045333479, -1097006056)\n\t\t + W(7, -1085875335, -1087615930, -1099229077, -1104188731)\n\t\t + W(8, -1107573447, -1110219956, -1111689634, 1016331253)\n\t\t + W(9, 1042106418, 1042154624, 1021430571, 1007994773) + W(10, 1040623159, 1001956750, 1034883047, -1121213099)\n\t\t + W(11, 999707420, -1110655190, 1027213229, -1125102461);\n\tsum2 =\n\t\tW(0, 1027505374, -1119743709, 1022357321, -1129702556) + W(1, 1025908250, -1116658238, 1007287620, -1132286080)\n\t\t+ W(2, 1006384241, 1032385395, -1110226975, 1009992786) + W(3, -1117540770, 1015280579, 1013929491, -1123806249)\n\t\t+ W(4, 1038217397, -1124784904, 1036163691, 1038388564) + W(5, -1107551412, 1043662427, -1110875284, 1032548500)\n\t\t+ W(6, -1102596332, 1055108824, -1095998103, -1096068823)\n\t\t+ W(7, 1027585837, 1052401764, -1112465838, 1049275421)\n\t\t+ W(8, -1088198084, -1101781911, -1077861124, -1082211809)\n\t\t+ W(9, 1067639721, 1063419774, 1041946916, 1054953848) + W(10, 1054112069, -1110486748, 1063443275, 1060625206)\n\t\t+ W(11, -1095993202, -1084462256, 1040943353, -1088060635);\n\tWS(1057314092, 1031126097);\n\tsum1 = W(0, -1113264897, 1042921300, -1118216326, 1036778483)\n\t\t + W(1, 1035020911, -1108928881, 1036290288, 1012907241) + W(2, 1047286031, 1038748523, 1040626286, 1048990343)\n\t\t + W(3, 1036098930, 1042428894, 1016422504, 1041504752) + W(4, 1051515170, 1044373061, 1057172805, -1111196723)\n\t\t + W(5, 1053560288, 1053915059, 1044112316, 1048512334)\n\t\t + W(6, -1091122512, -1119263830, -1081529962, -1076778621)\n\t\t + W(7, -1085296972, -1112351005, -1100809115, -1107245185)\n\t\t + W(8, 1035529026, 1016709539, 1043973191, 1049229393) + W(9, 1046938632, -1123285785, 1035877806, -1123727583)\n\t\t + W(10, -1125355113, 1029610636, 1029771624, -1112976162)\n\t\t + W(11, 1041831703, -1103970660, 1044125996, -1123672296);\n\tsum2 = W(0, -1110279027, 1044898087, -1096945908, 1039092196)\n\t\t + W(1, -1113241071, -1099008684, 1044106833, -1103116396)\n\t\t + W(2, -1116888772, -1115916604, -1107202311, 1045884385)\n\t\t + W(3, -1103988696, 1049112986, -1123386226, -1134049769)\n\t\t + W(4, 1033554595, -1111117443, 1035778723, -1113256321)\n\t\t + W(5, -1115920774, -1139004677, -1112080343, -1114347803)\n\t\t + W(6, -1108669327, 1045218355, -1103416606, 1065794034)\n\t\t + W(7, -1090569433, 1055599565, -1099737884, 1044073709)\n\t\t + W(8, 1015808739, -1106102431, 1041666953, -1107247823)\n\t\t + W(9, 1049716916, -1106016659, 1031391070, -1108799013)\n\t\t + W(10, 1027314221, -1116221606, 1024714919, -1098987808)\n\t\t + W(11, 1049758114, -1091770239, 1053158291, -1105054228);\n\tWS(-1078536214, 1004530797);\n\tsum1 =\n\t\tW(0, 1027375859, 1017444741, -1120029560, 1000019140) + W(1, -1114543207, 1013557197, -1122136338, -1148145247)\n\t\t+ W(2, -1101920227, 1031432968, -1106564803, 1048371434) + W(3, -1118108517, 1042631950, 1018155212, 1016114854)\n\t\t+ W(4, 1025777344, -1103056081, -1107107772, -1082038651)\n\t\t+ W(5, -1087843395, -1090887738, -1103973545, -1102912795)\n\t\t+ W(6, 1044389645, 1048716617, 1051154454, 1066595410) + W(7, 1055824714, 1054676989, 1041035048, 1016296812)\n\t\t+ W(8, -1110651587, -1137653198, -1107166356, -1130046381)\n\t\t+ W(9, -1105265945, 1030116559, 1023828021, 1040191506)\n\t\t+ W(10, 1018050380, -1125959547, 1019570356, -1125449965)\n\t\t+ W(11, 1033235496, -1126792065, -1122035417, -1142050258);\n\tsum2 =\n\t\tW(0, 1027035378, -1132701065, -1114259972, 1024730711) + W(1, 986229224, 1013886009, -1129435432, -1141056234)\n\t\t+ W(2, 1026113022, 1034348094, 1019537869, -1139897757)\n\t\t+ W(3, -1140805741, -1118691470, 1009541569, -1129312440)\n\t\t+ W(4, -1111907604, 1044772326, -1115459713, -1083470341) + W(5, 1024256637, 1050967575, 1013091981, 1028089297)\n\t\t+ W(6, -1117578886, 987582920, -1091701771, -1064559027) + W(7, 1083026821, 1062853848, -1097816209, 1036032976)\n\t\t+ W(8, -1140538653, -1136739637, -1106970806, 1035917626)\n\t\t+ W(9, 1051507274, 1035548789, 1030786995, -1102804079) + W(10, 1018825264, 1015195718, 1029368182, -1129456736)\n\t\t+ W(11, 1025912688, -1107265712, 1031335734, -1115863996);\n\tWS(1053759831, 1032374114);\n\tsum1 = W(0, 972229904, -1109228149, 1034978575, 1041049216) + W(1, -1120680758, 1029299866, -1104501302, 1034604409)\n\t\t + W(2, -1121671930, -1112583528, 1034149296, 1029443406)\n\t\t + W(3, 1029497788, -1098177536, -1147362406, -1129221556)\n\t\t + W(4, 1054724605, -1112974870, 1061211455, 1048871720) + W(5, 1059772533, 1052523382, -1143596105, 1050895314)\n\t\t + W(6, -1092393035, -1101934908, -1092299422, -1093922438)\n\t\t + W(7, -1094240300, -1091878482, -1112394307, -1097371836)\n\t\t + W(8, 1018308729, 1027590122, 1034030567, -1111847647)\n\t\t + W(9, 1041914031, -1113968603, 1028043992, -1126204095)\n\t\t + W(10, -1129466650, 1029939172, -1113423424, 1038901743)\n\t\t + W(11, -1106909549, 1040006220, -1140269215, 998375305);\n\tsum2 =\n\t\tW(0, -1150066816, -1122485893, -1114773240, 1024800634) + W(1, 996682648, -1123997738, 1019128023, -1127165963)\n\t\t+ W(2, -1150466984, 1032358015, 1050624105, 1086980496) + W(3, 1049846439, -1116390866, 1016213345, -1127449775)\n\t\t+ W(4, 1023864952, -1120268940, -1092046440, -1062089081)\n\t\t+ W(5, -1092228228, 1022750294, 1015347232, 1000268865) + W(6, -1110066210, 1042589181, 1028033997, -1086968029)\n\t\t+ W(7, 1024724796, 1041929871, -1114433107, -1139900476) + W(8, 1023825317, 1027888694, -1151325172, 1038366470)\n\t\t+ W(9, -1121152696, -1118357792, 1031614438, -1136800730)\n\t\t+ W(10, -1124858867, -1130877326, -1135440218, -1140173368)\n\t\t+ W(11, 1022098295, 1017805328, -1119866592, 1025894920);\n\tWS(1063005484, 1009613411);\n\tsum1 = W(0, 1023879031, -1116658758, 1016433014, 1020845368)\n\t\t + W(1, 1014732617, -1133265115, -1123204757, 1010953149)\n\t\t + W(2, -1099686359, -1121736524, -1101192360, -1114633573)\n\t\t + W(3, -1095872969, -1106126199, -1114430117, -1135381594)\n\t\t + W(4, 1052137768, 1047373394, 1060630207, 1066103327) + W(5, 1062822060, 1059882369, 1050777829, 1058652475)\n\t\t + W(6, 1046007565, -1096622041, -1088767007, -1084203279)\n\t\t + W(7, -1090088910, -1090037515, -1103091289, -1092699671)\n\t\t + W(8, -1104853008, 1032552475, -1107092245, 1041296218)\n\t\t + W(9, 1027255591, -1131360500, -1122457924, -1108476770)\n\t\t + W(10, 1005501772, -1119708225, -1118541917, -1116191290)\n\t\t + W(11, 1022596005, -1115075910, 1022253604, -1114779071);\n\tsum2 =\n\t\tW(0, 1018912922, -1115513506, 1035927400, -1104590179) + W(1, 1040736265, -1107721632, 1025188211, -1112944230)\n\t\t+ W(2, 1027578843, -1122957333, 1036987406, -1100032664)\n\t\t+ W(3, -1110179624, -1125426330, -1103038285, 1043904940)\n\t\t+ W(4, 1033809184, -1107632498, -1102289594, 1055409420)\n\t\t+ W(5, 1055289786, -1112721987, 1036015348, -1110109848) + W(6, -1094114890, 1001948858, 1056054406, 1048553428)\n\t\t+ W(7, 1051787669, -1094744691, 1032878358, -1118996080)\n\t\t+ W(8, -1100264522, 1024979575, -1110397259, -1121465059)\n\t\t+ W(9, -1147035242, 1045301422, -1131004626, -1124556646)\n\t\t+ W(10, -1107937173, 996744179, -1110541201, -1114033403)\n\t\t+ W(11, 1041331760, -1113161109, -1108457170, 1028913131);\n\tWS(-1088267692, 1058858468);\n\tsum1 = W(0, -1112379634, 1029162995, -1140270752, -1141342278)\n\t\t + W(1, -1155361775, -1113272402, -1140210569, 1015213304)\n\t\t + W(2, 1030761249, 1004146884, -1122297718, 1040340278) + W(3, 1036240851, -1129581456, 1042224566, 994119730)\n\t\t + W(4, 1050799110, 1045209037, 1060358148, 1057423488) + W(5, 1058630580, 1044230767, -1104611845, -1109863885)\n\t\t + W(6, -1099191401, -1095201623, -1091143388, -1083233902)\n\t\t + W(7, -1098879351, -1096101987, -1122560784, -1109785875)\n\t\t + W(8, 1033839199, 981108966, 1043211072, 1032118859) + W(9, 1032700466, 1030417559, -1140846885, 1009738084)\n\t\t + W(10, -1111715307, 1002675052, -1120236170, -1118812007)\n\t\t + W(11, 1017441470, -1148456452, -1124250818, -1131671893);\n\tsum2 = W(0, -1113443438, 1023812788, -1131593767, -1112801638)\n\t\t + W(1, -1105757720, -1107427633, -1107137147, 1049954034)\n\t\t + W(2, 1021821461, 1044300514, -1104994806, 1060658961)\n\t\t + W(3, 1044687616, -1087213560, -1093064102, -1093773442)\n\t\t + W(4, -1122246023, -1104002403, 1038382254, -1099826888)\n\t\t + W(5, 1066144433, 1057721748, -1097329958, 1039897892)\n\t\t + W(6, -1146734500, 1024116650, 1049088332, -1089766136)\n\t\t + W(7, 1042354562, -1129092349, 1044181933, -1105235988)\n\t\t + W(8, -1128559783, -1115812447, -1105739887, 1025686404)\n\t\t + W(9, -1117250635, 1035306954, -1106719387, 1040800736)\n\t\t + W(10, -1125128801, -1134793082, -1131329759, 1034755166)\n\t\t + W(11, -1114066084, 1031417186, -1117543346, -1128306605);\n\tWS(1042978478, 1051058289);\n\tsum1 = W(0, -1105382966, 1035278676, -1102112151, -1102711504)\n\t\t + W(1, -1113404858, -1111458068, 1038103836, -1101215220)\n\t\t + W(2, 1032357083, 1023966158, -1113794846, 1052488610) + W(3, 1046698475, 1025992701, 1042579843, 1026938905)\n\t\t + W(4, -1099095273, -1110890773, -1087097191, -1081382120)\n\t\t + W(5, -1086454106, -1097860134, -1105233954, -1091436978)\n\t\t + W(6, 1056839899, 1050844654, 1060126757, 1063120271) + W(7, 1060142827, 1054395618, 1048420817, 1056719627)\n\t\t + W(8, -1122236410, 1019140850, -1107056589, -1150461374)\n\t\t + W(9, -1103751812, -1120625160, 1025690583, -1112415123)\n\t\t + W(10, 1024938700, -1122653091, -1122892351, -1119829084)\n\t\t + W(11, 1007453138, -1106500335, 1032216339, 1010325087);\n\tsum2 = W(0, 986675002, -1112567440, 1033516168, -1097585273) + W(1, 1031672616, 1029453516, -1106591291, 981423732)\n\t\t + W(2, -1098687074, 1041166801, -1099338776, 1019263552)\n\t\t + W(3, -1108963639, -1104454378, -1109440188, 1024870634)\n\t\t + W(4, 995475005, -1097111455, 1062728692, 1066654492) + W(5, 1034345380, -1124466258, -1092068145, 1048117247)\n\t\t + W(6, -1115454695, -1132868679, -1120015952, 1054175336)\n\t\t + W(7, 1038275134, -1096244103, 1039104546, -1119846616)\n\t\t + W(8, -1110655697, -1114152579, 1023628514, -1097107880)\n\t\t + W(9, -1118909665, 1049130538, -1093717692, 1042494451)\n\t\t + W(10, 1018060844, -1101427932, 1045275251, -1098419362)\n\t\t + W(11, 1049612882, -1100742770, 1000911598, -1140045927);\n\tWS(-1097071959, 1072623846);\n\tsum1 = W(0, 1026094363, -1114366565, 1026372640, -1127140609)\n\t\t + W(1, 1020533357, -1164090721, -1143600974, 993477434) + W(2, 1010541764, 1023927408, 1034504814, 1038480008)\n\t\t + W(3, 1046400295, 1040252248, 1040642843, 1032065949)\n\t\t + W(4, -1087379998, -1100421531, -1091057687, -1086095524)\n\t\t + W(5, -1083615449, -1089701071, -1093225865, -1090227881)\n\t\t + W(6, 1028105114, 1051865478, 1057630379, 1064048287) + W(7, 1061319210, 1056141130, 1049626241, 1047950199)\n\t\t + W(8, 1046169702, -1105971271, 1041980470, -1104375598)\n\t\t + W(9, -1113258549, -1149976804, -1120849689, 1048635489)\n\t\t + W(10, -1135291959, -1125008010, 1012391943, 1011497593)\n\t\t + W(11, -1126436590, 1008261592, -1126913777, 1026040178);\n\tsum2 =\n\t\tW(0, 1012042818, 1021360395, -1107209227, 1027378250) + W(1, -1105921842, 1041772128, -1127367716, -1127019644)\n\t\t+ W(2, 1045767812, -1098807230, 1044720012, 1042281858) + W(3, 1016599978, -1127223374, -1115783877, 1027816090)\n\t\t+ W(4, -1063490706, -1081789373, 1074390906, 1079115935)\n\t\t+ W(5, 1058048856, -1108782236, -1128008216, 1032186898)\n\t\t+ W(6, -1101778611, -1114664520, 1049922132, -1094869567)\n\t\t+ W(7, -1118592797, -1121088549, -1137516645, -1111496361)\n\t\t+ W(8, -1112785819, 1033999610, -1110057121, 1045861970)\n\t\t+ W(9, 1034050759, -1129798306, 1033434514, -1136389257)\n\t\t+ W(10, 1012780879, 1021391529, -1130294258, 1031106226)\n\t\t+ W(11, -1122317121, 1025125464, -1149825053, 1031888403);\n\tWS(-1103312814, -1092017335);\n\tsum1 =\n\t\tW(0, -1127703091, 1018146514, -1121799134, 1017072510) + W(1, -1131539818, -1112727125, 1017229265, -1109754009)\n\t\t+ W(2, -1101144796, -1115460311, -1106383343, -1133230391)\n\t\t+ W(3, 1034901054, 1027622014, 1018005017, 1034197373) + W(4, 1054306333, 1039997174, 1024945271, -1088288960)\n\t\t+ W(5, -1088630417, -1096972398, -1101045202, -1098488314)\n\t\t+ W(6, -1126801713, 1026063214, -1131110905, 1059941407) + W(7, 1061737047, 1057455253, 1048616129, 1051714580)\n\t\t+ W(8, 1023075088, 1027296474, -1132250026, -1113425894)\n\t\t+ W(9, -1097522374, -1097018828, -1112216732, -1142469689)\n\t\t+ W(10, 989243788, -1122138660, 1032388672, 982272924) + W(11, 1021266411, -1135487483, -1117699788, 995701513);\n\tsum2 = W(0, 1015133861, 1037113072, -1114822552, 1028491873)\n\t\t + W(1, -1105557810, 1038591890, -1105949948, 1032708826)\n\t\t + W(2, -1105189044, -1115931822, -1098364789, -1113527921)\n\t\t + W(3, 1024139573, -1112247318, 1007564387, -1120342494)\n\t\t + W(4, -1093732269, -1102686481, 1041653115, 1065997875)\n\t\t + W(5, -1130473293, -1098512761, -1125828389, -1125733097)\n\t\t + W(6, -1094162786, -1113599737, 1041635421, 1064813540)\n\t\t + W(7, 1037786550, 1036196676, -1114108758, -1132225813)\n\t\t + W(8, -1109540616, 1040400825, -1118060506, -1123044799)\n\t\t + W(9, -1105450383, -1106060901, -1118151575, 1010062515)\n\t\t + W(10, 1030009493, -1114813207, 1027616765, -1116517245)\n\t\t + W(11, 1021543889, 1005718790, -1122858549, 1029912177);\n\tWS(1054094679, 1053313313);\n\tsum1 = W(0, -1133457438, -1120986711, 1034987238, 1028444909)\n\t\t + W(1, 1035642130, 1018062863, 1034710931, -1149170946)\n\t\t + W(2, -1123263126, -1130558777, -1097984725, -1096198619)\n\t\t + W(3, 1007426149, 1002886242, -1123562906, 1018181775) + W(4, 1046955525, 1034791245, 1059693200, 1056744813)\n\t\t + W(5, -1111414009, 1030506913, -1113706235, 1033357311)\n\t\t + W(6, -1124016519, 1044418743, -1102062065, -1098120268)\n\t\t + W(7, -1111514230, -1104691680, 1011520719, -1107703301)\n\t\t + W(8, 1039131745, -1102726978, -1136653836, -1097784815)\n\t\t + W(9, -1121981368, 1038384226, -1114621003, 1012043028)\n\t\t + W(10, -1120644986, 1007447622, -1119688622, -1150742701)\n\t\t + W(11, 1028941155, -1124505481, 1028268649, 1016894461);\n\tsum2 =\n\t\tW(0, 988916677, -1137939637, -1123566910, 1028209713) + W(1, -1123858844, 1036944358, -1119538750, -1142606817)\n\t\t+ W(2, 1035831303, -1140903881, -1103092742, -1131746560)\n\t\t+ W(3, -1101579019, 1038814302, -1130948272, 1038676356)\n\t\t+ W(4, -1110571087, 1038296707, -1107155945, -1117714466)\n\t\t+ W(5, 1038803820, -1103151768, 1032643961, -1111989951) + W(6, 1034464782, -1090860425, 1056968489, 1064742714)\n\t\t+ W(7, 1040557782, -1120375726, -1111036663, -1122089622)\n\t\t+ W(8, -1106828560, 1044389789, -1079651989, 1050942503) + W(9, 1043224862, -1130430804, 1041889175, 1014857001)\n\t\t+ W(10, -1178538002, 1041756630, 1029915845, -1106236653)\n\t\t+ W(11, -1110415601, 1019097405, -1132733633, -1140337549);\n\tWS(1060301740, -1107262085);\n\tsum1 = W(0, 980901136, 1027361860, -1140723427, 1026764890) + W(1, 1040866884, 1025665684, 1033047081, -1120424813)\n\t\t + W(2, 1034782831, 1047173818, 1039236098, -1167399456)\n\t\t + W(3, -1096504911, -1107799148, -1104388354, 1042507977)\n\t\t + W(4, -1105836176, -1090641081, -1089836727, 1057068694)\n\t\t + W(5, 1061579759, 1058017849, 1050545524, 1043225643) + W(6, 1036556474, 1050207945, 1053103024, 1041462691)\n\t\t + W(7, -1084387656, -1086651203, -1099258584, -1106352190)\n\t\t + W(8, -1123655719, -1104237805, -1097134658, -1168491986)\n\t\t + W(9, 1041789973, 1041962562, 1042093191, -1107448273)\n\t\t + W(10, -1123449511, 1032390687, 1023266998, -1128069487)\n\t\t + W(11, -1111341496, -1121577073, -1128080260, -1118302731);\n\tsum2 = W(0, -1120672932, 1020434122, 1029602171, 986372169) + W(1, 1039121856, -1113202257, -1139183469, 1010867474)\n\t\t + W(2, 1046006360, -1097339905, -1114812458, -1107596062)\n\t\t + W(3, 1036462865, 1042494496, -1097212089, -1111658779)\n\t\t + W(4, -1112452525, 1059308780, 1040180724, -1073685765)\n\t\t + W(5, 1068230783, 1060720662, -1116372590, -1096232759)\n\t\t + W(6, -1103760793, 1054394959, 1058139034, -1075031098)\n\t\t + W(7, 1055263295, 1065727212, -1106882983, -1102585430)\n\t\t + W(8, -1135937657, 1038148088, -1103543044, -1098429000)\n\t\t + W(9, 1051067274, -1106499347, -1127997619, 998537328)\n\t\t + W(10, 1037670355, -1114765629, -1120562291, -1131755817)\n\t\t + W(11, 1034635900, 1010504894, -1127537321, -1141626877);\n\tWS(-1096709719, -1109932402);\n\tsum1 =\n\t\tW(0, 1015250582, -1109965037, 1037158888, -1115453048) + W(1, 1032345875, -1113173429, 1033146133, -1109546082)\n\t\t+ W(2, -1143431239, 1015070528, -1094706154, 1051852512)\n\t\t+ W(3, -1107272167, 1039101648, -1112986991, 1034073405) + W(4, 1041217222, 1044707911, 1032459556, -1103734188)\n\t\t+ W(5, -1116721265, -1100636937, 980311674, 1017051268) + W(6, 1009444904, -1099789672, 1049449359, -1091866852)\n\t\t+ W(7, 1042112892, 1051337808, 1011811037, 1035868647) + W(8, -1127867147, 1028928427, 1015515213, 1049692098)\n\t\t+ W(9, -1094357813, 1036490203, -1118660177, 1019523665)\n\t\t+ W(10, -1115442975, 1033219242, -1119289842, -1140261177)\n\t\t+ W(11, 1041543818, -1107580668, 1027230184, -1121586498);\n\tsum2 =\n\t\tW(0, -1129366500, 1029756683, -1113040482, 1041050942) + W(1, 1019865458, -1130192114, 1021094310, 1011878989)\n\t\t+ W(2, -1111869912, 1029022998, 1046043365, 1028636589)\n\t\t+ W(3, -1100561355, -1118786886, -1136660469, -1113939693)\n\t\t+ W(4, -1114572049, 1041454921, 1063827282, -1088878874)\n\t\t+ W(5, -1120053198, 1037601458, -1121128994, 1024511741) + W(6, 1047691494, 1051011830, -1075590857, 1052419847)\n\t\t+ W(7, 1053136256, -1142379802, -1115896886, 1033422229)\n\t\t+ W(8, 1024096486, -1094989992, -1094007689, 1049374228) + W(9, 1051405216, -1105102628, 1030093181, 1038213156)\n\t\t+ W(10, -1112777200, 1033382685, 1046068934, 1022134325)\n\t\t+ W(11, -1104418826, 1039472389, -1173694926, -1122209396);\n\tWS(1065853238, 1014077745);\n\tsum1 = W(0, -1141216588, 1026623353, -1128763228, 1020370461)\n\t\t + W(1, 1026101893, -1118113002, 1032019108, -1113706417)\n\t\t + W(2, -1117433015, -1129058045, 1039902504, 1043759351) + W(3, 1050608829, 1042454284, 1027449020, 965645460)\n\t\t + W(4, -1094201799, -1096460535, -1083943142, -1077503527)\n\t\t + W(5, -1089716396, -1098731144, -1095714819, -1094767340)\n\t\t + W(6, 1050233869, 1049952264, 1051933059, 1055071872) + W(7, 1055823041, 1057515106, 1050055875, 1054942629)\n\t\t + W(8, 1044254087, 1008011942, 1048823509, 1025148605) + W(9, 1040921250, -1120507502, -1149099066, 1040832262)\n\t\t + W(10, -1138617969, 1022594791, -1141149825, 1032777398)\n\t\t + W(11, -1117303781, 1030831063, -1131034510, 1023411184);\n\tsum2 = W(0, 1024492456, -1126703609, 1029353704, 1036516578)\n\t\t + W(1, 1032071462, -1107363712, 1044306067, -1105180142)\n\t\t + W(2, -1107369605, 1040389587, -1109233879, -1095300447)\n\t\t + W(3, -1104963978, -1106122650, -1143085570, 1043865859)\n\t\t + W(4, -1114418679, 1038677226, 1043636997, 1063429366)\n\t\t + W(5, -1101740776, -1097459892, 1035238854, -1116890590)\n\t\t + W(6, -1102696165, -1115181151, -1104069114, 1063594124)\n\t\t + W(7, -1098164193, 1040620147, -1106357294, -1127904241)\n\t\t + W(8, -1133142225, -1114014523, -1122395696, -1091978649)\n\t\t + W(9, 1053626887, -1097146692, 1040976159, -1120794976)\n\t\t + W(10, -1122518916, 1026327736, 1035228514, 1023044321)\n\t\t + W(11, -1116601496, -1130578705, 1026795860, -1127926993);\n\tWS(-1088917996, 1063906509);\n\tsum1 = W(0, -1110920777, 1042151912, -1101936374, 1005195703)\n\t\t + W(1, 1032265367, -1103459368, 1041691572, -1129700693)\n\t\t + W(2, 1044506738, -1103723194, 1033303784, 1049511025)\n\t\t + W(3, -1113286290, 1043019742, -1128222025, -1114181825)\n\t\t + W(4, 1047786311, 1032125650, 1061302810, 1034065915) + W(5, 1048810800, 1054491533, -1112859072, 1049358361)\n\t\t + W(6, -1095080042, -1113114611, -1088574755, -1080208865)\n\t\t + W(7, 1049193686, -1121283466, 1024774526, -1147499681)\n\t\t + W(8, -1134941681, 1025189266, -1115794445, 1048946939)\n\t\t + W(9, -1126346531, -1103486336, 1015955599, -1097425800)\n\t\t + W(10, 1033765698, -1104090263, 1041151454, -1113407178)\n\t\t + W(11, -1109067703, 1044875416, -1121559327, 1029016425);\n\tsum2 = W(0, -1103461552, 1050674327, -1104590141, 1015549042)\n\t\t + W(1, 1036919049, -1098769683, 1046313441, -1112862464)\n\t\t + W(2, -1127991186, -1116051994, -1131508502, 1050173609)\n\t\t + W(3, -1105608002, 1039941075, -1101603735, 1031505597)\n\t\t + W(4, -1120190757, -1113530372, 1055990720, 1072931527)\n\t\t + W(5, -1095048932, -1078020039, -1101033642, 1010804308)\n\t\t + W(6, -1108916090, -1124692174, -1121470095, 1046026095)\n\t\t + W(7, 1050729023, -1084802111, 1047911325, 1034713295) + W(8, 1012492564, 1042343963, 1032226081, 1048814953)\n\t\t + W(9, -1098673970, -1101605152, -1113534935, 1017021378)\n\t\t + W(10, 1029245469, -1115385529, 1026603353, 1024686773)\n\t\t + W(11, -1108452621, 1046452703, -1112756717, -1119772659);\n\tWS(-1128039792, 1065254279);\n\tsum1 = W(0, 949814928, 1027171091, -1129242384, 1031101353)\n\t\t + W(1, -1120975327, 1003634843, -1144006416, -1123053628)\n\t\t + W(2, -1114341117, 1031806764, 1033646238, 1018879791) + W(3, 1042055949, 1033681236, 1023909046, 1027677731)\n\t\t + W(4, -1094482850, -1095186291, -1085842430, -1092086861)\n\t\t + W(5, -1084252337, -1089087466, -1099056317, -1095496311)\n\t\t + W(6, 1052398616, 1051880795, 1058904806, 1068407459) + W(7, 1055432619, 1036562814, 1039311896, 1050962337)\n\t\t + W(8, 1027872723, -1139824782, 1010706555, -1098849364)\n\t\t + W(9, -1121195299, 1023772639, -1126801378, 1038931216)\n\t\t + W(10, -1155305313, 1022544667, -1121892394, 1040052675)\n\t\t + W(11, -1127339326, 993927654, -1123991661, 1005742098);\n\tsum2 =\n\t\tW(0, -1120833032, 1034915193, -1115307960, 967112657) + W(1, 1023925021, -1107476032, 1033449936, -1132191993)\n\t\t+ W(2, -1124763415, -1113475142, 1025322201, 1059271888)\n\t\t+ W(3, -1102912552, -1118552210, -1103660545, 1033898849)\n\t\t+ W(4, -1118777010, 1010824003, 1064953874, 1082807588)\n\t\t+ W(5, -1080316189, -1064631277, -1110193476, 1039205719)\n\t\t+ W(6, 1030229073, -1105412742, 1042572184, -1098383492)\n\t\t+ W(7, 1054443836, -1098098835, -1121091158, 1028111985) + W(8, 1028911958, -1133618203, 1022077590, 1048790378)\n\t\t+ W(9, -1103923621, 1029953956, -1106218101, 1036034024)\n\t\t+ W(10, -1123843510, 1030755234, -1135426163, -1113939962)\n\t\t+ W(11, 1038571089, -1109596012, 1035405992, -1126376787);\n\tWS(-1100484014, -1082813103);\n\tsum1 = W(0, -1123138350, -1124738939, 991988525, -1115403050)\n\t\t + W(1, 1032429349, -1113715255, 1024280877, 1024090791) + W(2, 1037916588, -1123209507, 1049386547, 1038702225)\n\t\t + W(3, 1052139678, -1114440425, 1033284897, -1105213156)\n\t\t + W(4, -1092840871, -1095165544, -1086369653, -1082690349)\n\t\t + W(5, -1080932794, -1104541586, -1091044852, -1098590565)\n\t\t + W(6, 1048819422, 1053647432, 1054472273, 1063735148) + W(7, 1057734851, 1057909982, 1048946363, 1057027323)\n\t\t + W(8, 1042234192, -1117914254, 1039202605, -1121098737)\n\t\t + W(9, -1124146173, -1120991811, -1116174764, -1140316975)\n\t\t + W(10, -1212876940, 1018206961, -1120915541, 1024686130)\n\t\t + W(11, 1015928020, -1138122766, 1018911880, 1023234987);\n\tsum2 =\n\t\tW(0, 1017320792, -1115193567, 1033153774, -1109723345) + W(1, 1038092476, -1111785287, -1119671739, -1109901657)\n\t\t+ W(2, -1151813795, -1117132961, 1023133248, -1096979800)\n\t\t+ W(3, 1051436512, -1136600857, 1043953938, 1038440342)\n\t\t+ W(4, -1114719136, -1104426322, -1094043595, -1067432541)\n\t\t+ W(5, -1094705611, 1084038773, 1051561136, -1097692319)\n\t\t+ W(6, -1127138406, 1035777956, 1044557822, -1081748159) + W(7, -1094662263, 1059186895, 1023890070, 1021470996)\n\t\t+ W(8, 1024237362, -1122656452, 1043828952, -1105451925)\n\t\t+ W(9, -1118217110, -1118750811, 1026839182, -1114305884)\n\t\t+ W(10, 1038691322, -1114810881, -1134215421, 1025666138)\n\t\t+ W(11, 1023161212, -1141123106, 1009024009, -1122422926);\n\tWS(-1090600151, 1059961608);\n\tsum1 = W(0, 1026132748, -1119499740, 1009974340, -1113885561)\n\t\t + W(1, 1031101992, -1111559238, 1038517558, -1109274083) + W(2, 1003856660, 1023957057, 1043713207, 977342510)\n\t\t + W(3, 1051525550, 1025363409, 1031878320, -1114083846)\n\t\t + W(4, -1086859502, -1105095800, -1089372619, -1080432315)\n\t\t + W(5, -1084623068, -1086083942, -1090836983, -1097114792)\n\t\t + W(6, 1051724689, 1035359281, 1059175635, 1059908410) + W(7, 1060487798, 1059822844, 1051599439, 1057278953)\n\t\t + W(8, 1051693682, 1030063117, 1040699442, -1106762114)\n\t\t + W(9, -1114853678, -1116041416, -1130086580, 1040974422)\n\t\t + W(10, 1032934656, -1123043606, 1034542394, 1018557983)\n\t\t + W(11, 1019132432, 1031213982, -1150140386, -1138998830);\n\tsum2 = W(0, 992923986, -1162949315, 1026898877, -1114052913)\n\t\t + W(1, -1129262506, 1033577774, -1129225578, 1036380420)\n\t\t + W(2, -1099561897, -1123994385, -1116860796, 1033030662)\n\t\t + W(3, 1024241717, 1027801571, 1041458479, 1050404867) + W(4, -1105536701, -1114799541, 1049791100, 1035377948)\n\t\t + W(5, -1088177074, 1049717575, 1043978030, -1091169113) + W(6, 1079165891, 1071631223, 1068780303, 1075632919)\n\t\t + W(7, -1093777203, -1083766160, 1029517847, -1083354335)\n\t\t + W(8, -1067147152, -1073660425, -1081838471, -1083671230)\n\t\t + W(9, 1057542893, 1057183721, -1103299573, 1061807320)\n\t\t + W(10, -1122782084, -1122543983, -1095462698, -1097530520)\n\t\t + W(11, -1107750254, 1032284006, 1025982179, 1016984746);\n\tWS(-1077101366, 1062204989);\n\tsum1 = W(0, 1030791972, 1033145401, 1041963978, 974201395) + W(1, -1122207423, 987140211, 1038549201, -1110991006)\n\t\t + W(2, 1034919675, -1109323772, -1109601924, -1098302775)\n\t\t + W(3, 1049858413, -1163737350, -1104961646, 1022472166)\n\t\t + W(4, -1119759728, 1033209467, 1053457281, 1054965265)\n\t\t + W(5, -1085314770, -1111164798, -1103072597, -1115893275)\n\t\t + W(6, -1099266697, 1032826652, -1084468746, -1116769210)\n\t\t + W(7, 1055247733, 1051122507, 1043488164, 1036206931) + W(8, 1044609922, -1108657922, 1049423472, 1034832195)\n\t\t + W(9, -1104833109, -1113738245, -1121147841, -1131086146)\n\t\t + W(10, -1131275309, -1142019948, 1005679697, -1125973710)\n\t\t + W(11, 1038354000, 1030630601, -1132893044, 1033991117);\n\tsum2 =\n\t\tW(0, -1128313262, -1111995834, -1111474816, -1108547758)\n\t\t+ W(1, -1123519406, -1107039325, -1122872424, 1034342977) + W(2, 1013333880, 1035550861, 1047569009, 1036006103)\n\t\t+ W(3, -1104835579, -1119199538, -1113807123, -1111926114)\n\t\t+ W(4, 1041733323, 1024909109, 1049082846, -1093864056) + W(5, 1049905793, 1005924363, -1107099901, -1117079308)\n\t\t+ W(6, 1023499747, -1107108555, 1042800306, -1137016284) + W(7, 1032249988, -1146750815, 1024429363, 1029021112)\n\t\t+ W(8, -1111312052, 1015145454, 1017141780, 1013541080) + W(9, 1034012446, -1119513572, 1036805530, 1021769214)\n\t\t+ W(10, 1026149469, -1188980193, -1123639612, -1132476264)\n\t\t+ W(11, 987971164, -1118671040, -1119021692, 1010774610);\n\tWS(1062330988, -1108933484);\n\tsum1 = W(0, -1130422235, 1014897395, 1027643186, -1143835797)\n\t\t + W(1, 1008148004, -1128962907, 1015454424, -1140840472)\n\t\t + W(2, -1127744279, 1022571909, -1103670303, -1110385841)\n\t\t + W(3, 1042533684, -1104774725, -1116892960, -1113171223)\n\t\t + W(4, -1103583502, -1095189640, -1097916197, -1083565633)\n\t\t + W(5, -1085814590, -1117452294, -1099231943, -1103031657)\n\t\t + W(6, -1112967222, 1057599524, 1050533350, 1066390108) + W(7, 1059916677, 1050496965, 1049304867, 1049771574)\n\t\t + W(8, 1030687296, 1033146447, 1045948242, -1104991248)\n\t\t + W(9, -1098839314, -1114792086, -1127702342, 1032045679)\n\t\t + W(10, 1027221408, -1115561596, 1024802772, 1027456689)\n\t\t + W(11, -1125614226, 1027191883, -1115468561, 1026854932);\n\tsum2 =\n\t\tW(0, 1032895988, -1117467777, 1028545567, -1111764526) + W(1, 1041090350, -1115412116, -1125773241, 1023304410)\n\t\t+ W(2, 1032830726, -1111744013, 1005059811, 984631841) + W(3, 1049595248, -1107906030, -1128022386, 1041765137)\n\t\t+ W(4, -1115406541, 1060942494, 1047355779, -1080183554) + W(5, -1134532596, 1035977506, 1020817981, 998580490)\n\t\t+ W(6, -1088204952, 1054289941, 1071613570, -1077634808) + W(7, -1093147012, 1042083474, 1037668146, 1032116542)\n\t\t+ W(8, -1092446016, -1123665301, 1060958044, 1046926373)\n\t\t+ W(9, -1113920155, -1097187857, -1142970826, -1125184917)\n\t\t+ W(10, 1031989945, -1104702594, 1046230999, -1100189171)\n\t\t+ W(11, 1034621337, -1132922134, -1117116166, 1022449461);\n\tWS(-1109331804, 1042368707);\n\tsum1 =\n\t\tW(0, -1127022377, 1024616740, -1123466393, -1123208698) + W(1, -1123129456, 1019270569, 981412042, -1140654132)\n\t\t+ W(2, 1017844485, -1131144083, -1107976561, -1113085828)\n\t\t+ W(3, -1114039899, -1111910285, -1118232839, 1022571624) + W(4, 1059385318, 1050963589, 1060165431, 1059271336)\n\t\t+ W(5, 1060839292, 1056907678, 1049849056, 1053487153)\n\t\t+ W(6, -1100795701, -1097056965, -1085607547, -1083778221)\n\t\t+ W(7, -1087428756, -1094957746, -1097540376, -1103251894)\n\t\t+ W(8, -1111987554, 1029893237, 1029216560, 1039937652) + W(9, 1032072458, -1114977786, 1024925794, -1099334072)\n\t\t+ W(10, 1016900750, 1023074109, -1112887422, 998408382)\n\t\t+ W(11, -1132276000, 1030127674, 1027413302, 1016237783);\n\tsum2 = W(0, 1032849952, -1124884727, -1113876395, -1129227720)\n\t\t + W(1, -1120368220, 1017198470, -1139825528, -1146042855)\n\t\t + W(2, 1026055449, -1115329827, 1027815845, 1037903820) + W(3, 1033732250, -1135699996, 999495607, -1129930944)\n\t\t + W(4, -1062565523, -1069645041, 1071954840, 1082661778) + W(5, 1074466947, 1029601901, 1010255452, 1032971494)\n\t\t + W(6, -1095655110, 1045607629, 1038549538, -1099195860)\n\t\t + W(7, 1038448988, -1098438651, -1108984513, 1036170224)\n\t\t + W(8, -1117249787, -1117682124, 1041120073, 1049745271)\n\t\t + W(9, -1117133911, 1028175479, 1021673198, -1119888169)\n\t\t + W(10, 1033345650, -1126204236, -1111681252, 1027383795)\n\t\t + W(11, 1003632367, -1122462785, 1028818665, 1008778484);\n\tWS(-1115348316, 1054745777);\n\tsum1 = W(0, -1137232980, 1010567825, 1027515738, -1129778165)\n\t\t + W(1, 1031078129, -1163675813, 1021335208, 1015357019)\n\t\t + W(2, 1036166838, 1015838740, -1156212270, -1111605669)\n\t\t + W(3, -1105267814, -1129353779, -1109102196, 1044530957)\n\t\t + W(4, 1049991788, 1049110157, 1058008076, 1064241460) + W(5, 1060214194, 1054590870, 1041116785, 1051902330)\n\t\t + W(6, -1091675395, -1096298109, -1087264777, -1084812083)\n\t\t + W(7, -1090012802, -1089909917, -1099321920, -1087098097)\n\t\t + W(8, 1017816583, 1034100235, 1034455816, 1015442096) + W(9, 1038960299, 1024747424, -1128935590, 1001621141)\n\t\t + W(10, 1029575560, 1027659359, 1022248439, 1022178737)\n\t\t + W(11, 1027280241, 1032358751, -1140454872, 1023518060);\n\tsum2 =\n\t\tW(0, -1165172934, 1024206556, -1116697030, 1027518769) + W(1, -1114129087, 1038375004, -1112102389, 1033334280)\n\t\t+ W(2, 1029679520, 1020162972, 1034059275, 1040171419) + W(3, 1027996817, -1110434123, 1034335827, -1129105068)\n\t\t+ W(4, -1126280148, -1122180110, 997668227, -1097026624)\n\t\t+ W(5, 1034726751, 1040744343, -1102815825, -1107441727) + W(6, -1133513625, 1032751166, 1058808820, 1078058683)\n\t\t+ W(7, 1074823993, -1082346775, -1066028315, -1081349721)\n\t\t+ W(8, 1007295249, -1123729058, -1106696521, 1051253388)\n\t\t+ W(9, -1129919188, -1130957332, -1106067749, 1046963831)\n\t\t+ W(10, -1112190701, 1031911051, -1130859572, -1110596693)\n\t\t+ W(11, 1030310076, 1020514684, -1120038362, -1140190249);\n\tWS(-1106429870, -1094013011);\n\tsum1 = W(0, -1180060253, 1010730896, 1021824818, -1126648308)\n\t\t + W(1, -1129917792, -1130361130, -1120274467, -1140710069)\n\t\t + W(2, 1032914805, -1122572746, 1007289698, 1032028260) + W(3, 1028442598, 1044381070, 997655159, 1048974915)\n\t\t + W(4, 1051659804, 1041447962, 1049003466, 1055000463)\n\t\t + W(5, 1028832887, -1108621431, -1127588999, -1092428073)\n\t\t + W(6, -1083977393, -1096070845, -1090427610, -1110426966)\n\t\t + W(7, -1154202266, 1047276227, -1106909952, 1037115308) + W(8, 1044666432, 1042077981, 1040702780, 1039434940)\n\t\t + W(9, -1143541158, -1126798128, 1034262401, -1116914978)\n\t\t + W(10, -1143253052, -1112889935, 1019043703, -1121648024)\n\t\t + W(11, -1121855216, 1025638626, -1112957869, 1027653084);\n\tsum2 = W(0, -1113021585, 1027309129, 1040557912, -1105312463)\n\t\t + W(1, 1045635393, -1102513438, 1027399099, -1114789238)\n\t\t + W(2, 1044056205, 1042644451, -1130917417, -1097839840)\n\t\t + W(3, -1093830389, -1101732547, -1116545436, 1035602021)\n\t\t + W(4, -1096040530, -1098848264, -1086782093, 1066533545)\n\t\t + W(5, 1047866369, 1049511378, 1054444603, 1045074348) + W(6, -1099894114, -1100852865, 1055980834, 1060955207)\n\t\t + W(7, 1049480207, -1136131482, -1099150452, -1089010378)\n\t\t + W(8, -1101136816, 1051352325, -1094431966, -1105883820)\n\t\t + W(9, -1100511063, -1095199310, 1057783348, -1105061215)\n\t\t + W(10, -1129192316, -1127314210, 1001033976, 1028457481)\n\t\t + W(11, -1109915970, 1041484506, -1111537389, 1038428609);\n\tWS(1043891118, 1068855714);\n\tsum1 = W(0, 1034864935, -1115119790, 1021640868, -1116826163)\n\t\t + W(1, -1131811026, 1023733166, -1143217636, -1132040205)\n\t\t + W(2, -1116934668, -1132968331, 1038582262, 1007221512)\n\t\t + W(3, 1042862352, 1036137865, -1140157826, -1132089051)\n\t\t + W(4, -1092449819, -1094480060, -1087769325, -1085866861)\n\t\t + W(5, -1087019235, -1090795981, -1096174840, -1088777568)\n\t\t + W(6, 1054927906, 1036212657, 1059302628, 1065404307) + W(7, 1060871017, 1058788692, 1054585007, 1058320673)\n\t\t + W(8, 1034556804, -1105343195, 1039390277, -1118670257)\n\t\t + W(9, -1097654326, -1110180471, -1103987387, 1039274926)\n\t\t + W(10, -1137767170, -1110944332, 1007166673, 1000130184)\n\t\t + W(11, -1149095244, 1038210141, -1123846591, 1033742658);\n\tsum2 = W(0, -1109312558, 1016877071, -1119267190, 1012463989)\n\t\t + W(1, -1126846961, -1130793473, 1028514185, 987754923) + W(2, 1043524956, 1022447527, 1041115214, -1113751024)\n\t\t + W(3, 1044302697, 1017381631, -1118188819, 1030898373)\n\t\t + W(4, -1128190925, -1112207078, -1098728904, -1096567460)\n\t\t + W(5, -1103900959, 1042180588, -1098746809, 1045698067)\n\t\t + W(6, -1098627702, -1106898612, -1125515089, 1069702771)\n\t\t + W(7, 1067943590, 1068665203, 1066385707, 1053793920) + W(8, 1046310591, 1038513036, 1034661588, -1085518745)\n\t\t + W(9, -1080776989, -1076263106, -1082060374, -1093259035)\n\t\t + W(10, -1109532722, 1007593597, -1120394532, -1104054586)\n\t\t + W(11, -1120974914, 1042247803, 1009589981, -1114854661);\n\tWS(-1087649964, 1019782291);\n\tsum1 =\n\t\tW(0, -1120416323, -1143853715, 997344379, -1117444008) + W(1, 1021907901, -1121005123, 1024251314, -1131127160)\n\t\t+ W(2, 1030168161, -1112895868, 1041161399, -1109107148) + W(3, 1047711365, -1121138472, 1000308143, 1016698342)\n\t\t+ W(4, 1040415828, 1040272853, -1108639376, 1066099001) + W(5, 1016783474, 1034911086, 1025062450, 1039033917)\n\t\t+ W(6, -1105270513, 1031966316, -1088122706, -1107599501)\n\t\t+ W(7, -1089416651, -1111272734, -1107120316, -1102333873)\n\t\t+ W(8, 1024428446, -1115504066, 1050439898, -1101667648) + W(9, 1046888529, 1033038819, -1142414472, 1024070769)\n\t\t+ W(10, -1138699736, -1138905653, 986611002, -1107645603)\n\t\t+ W(11, 998160367, -1138080961, 1016114481, -1128756052);\n\tsum2 =\n\t\tW(0, -1107127477, 1033768126, 1023416069, -1125558334) + W(1, 1043030557, -1118774605, -1151915405, 1000627574)\n\t\t+ W(2, 1040784536, -1100939724, -1105075327, 1031863699)\n\t\t+ W(3, -1103416126, -1104742149, 1042707477, -1121719211)\n\t\t+ W(4, -1117663793, 1017594321, -1107862291, -1098589794)\n\t\t+ W(5, 1051532765, 1047503953, -1106456825, 1014542959) + W(6, -1112675945, 1057262150, -1072566694, 1078638992)\n\t\t+ W(7, -1086195181, -1109470897, 1041105499, -1106760943)\n\t\t+ W(8, 1039537683, -1092150404, 1066290117, -1077578123) + W(9, 1053259006, 1050584179, -1103867215, 1033290657)\n\t\t+ W(10, 1025325994, 1019337948, -1099590626, 1051733383)\n\t\t+ W(11, -1119314417, -1100419866, 1038050610, 1002291590);\n\tWS(1061891500, 1029739432);\n\tsum1 = W(0, -1120639769, -1135804195, -1111424495, 1029738303)\n\t\t + W(1, -1117498485, -1118615961, -1125527056, -1118385394)\n\t\t + W(2, -1106216192, 1006283635, -1105829118, -1090566706)\n\t\t + W(3, -1116262763, 1034396863, 1019261400, -1120846617)\n\t\t + W(4, -1113834067, -1103570763, -1096510251, 1051808376)\n\t\t + W(5, -1092264601, -1100309453, -1103214946, -1103884676)\n\t\t + W(6, 1044238166, 991333090, 1059958553, 1070740438) + W(7, 1055146526, 1034609097, 1035571491, 1043753671)\n\t\t + W(8, -1114217922, -1139025510, -1105864021, -1094764771)\n\t\t + W(9, -1102695282, -1115698885, -1137185181, -1118241703)\n\t\t + W(10, -1131739160, -1118882723, -1144807936, 1034612526)\n\t\t + W(11, -1134494805, 1017541191, -1114134173, 1003240643);\n\tsum2 =\n\t\tW(0, -1121600381, 1006302792, -1119262688, 1002488024) + W(1, 1029037035, 1026568605, -1136033516, 1023468893)\n\t\t+ W(2, 1026550907, -1138054916, 1026195583, -1109251816) + W(3, 989985520, -1119850715, 1023268674, -1113487368)\n\t\t+ W(4, 1038640235, -1115693397, 1049140618, -1070322023) + W(5, 1050244555, -1111337441, 1034795019, 1032357843)\n\t\t+ W(6, -1118247849, 1032667651, -1131891756, 1075955836)\n\t\t+ W(7, -1093462820, 1039467523, -1123631905, -1111383976)\n\t\t+ W(8, -1129506938, -1150824496, 1032667233, 1037796079)\n\t\t+ W(9, 1041966968, -1119306593, 1011205316, -1140765060)\n\t\t+ W(10, -1121040584, 1022873234, -1116879102, -1123674716)\n\t\t+ W(11, 1023067742, -1115823182, 1030765775, -1117038411);\n\tWS(-1084563692, -1094583093);\n\tsum1 = W(0, 1022703229, -1162852794, -1132568844, 1021772616) + W(1, 1024085850, 996545514, 1026223997, -1146052282)\n\t\t + W(2, 1012279186, -1124105959, 1040618577, -1104495965)\n\t\t + W(3, -1108936808, -1134036365, -1117471057, -1121618798)\n\t\t + W(4, 1016172182, 1043937588, -1096721723, 975997096) + W(5, -1105257082, -1119752408, 1035927703, 1030206390)\n\t\t + W(6, -1118740542, 1029178707, 1047241030, 1058138797)\n\t\t + W(7, -1098942649, 1033384955, -1119041259, -1135741956)\n\t\t + W(8, 1030161881, -1113029519, -1110742685, -1095587800)\n\t\t + W(9, 1044167852, 1030217107, 1033396614, -1114495566)\n\t\t + W(10, -1118949361, 1029291849, 1002005802, 1026228226)\n\t\t + W(11, -1121437018, -1128298663, -1127843472, 1024441958);\n\tsum2 =\n\t\tW(0, 1025430445, 1022296570, 1036981025, -1113204042) + W(1, 1015494893, -1113488118, -1127432409, -1122316989)\n\t\t+ W(2, -1154040649, 1041313314, -1095051054, 1045521896) + W(3, -1140159290, 1036274902, 1033705522, 1014652738)\n\t\t+ W(4, -1116838887, -1089338077, -1080092115, 1068042633)\n\t\t+ W(5, -1123762249, 1036460009, -1115504399, 1034428960)\n\t\t+ W(6, 1050769250, -1110563158, 1047738904, -1105725339)\n\t\t+ W(7, 1046459196, -1099991734, 1035671600, -1109634740)\n\t\t+ W(8, -1101164186, 1049390351, -1105225557, 1058198082)\n\t\t+ W(9, -1097909404, 1042800199, -1112380024, 1019626217)\n\t\t+ W(10, 1025324860, -1110459458, -1123670947, -1102419914)\n\t\t+ W(11, 1036400862, -1121611661, 1029427990, -1122111247);\n\tWS(1070570422, -1118483066);\n\tsum1 =\n\t\tW(0, 1018165832, -1132852684, -1139725729, -1109730565) + W(1, 1028156415, -1118139972, 1024357779, -1122455036)\n\t\t+ W(2, -1110069429, 1031499417, 1040072889, 1042906054) + W(3, 1042919301, -1168228894, 1039947243, -1103975241)\n\t\t+ W(4, -1099959964, -1099020957, -1084885570, -1081528768)\n\t\t+ W(5, -1083523477, -1091258848, -1095225642, -1094692227)\n\t\t+ W(6, 1060331110, 1050128623, 1059366093, 1062372980) + W(7, 1058454089, 1058887102, 1048717802, 1057283318)\n\t\t+ W(8, -1162935118, 1032275410, 1019497086, 996066926) + W(9, -1118811556, -1112630512, -1117991970, 998336395)\n\t\t+ W(10, -1139421786, 1009522871, -1140197674, -1117746023)\n\t\t+ W(11, -1128372287, 1014662756, -1119179525, 1028666043);\n\tsum2 =\n\t\tW(0, 1041833519, -1108615966, -1125372171, -1161988394) + W(1, -1113215633, 1034531971, -1118383435, 1028261725)\n\t\t+ W(2, -1105638218, 1028972955, 1029956673, 1048735800) + W(3, 1034458457, 1025753183, 1036634769, 1000882603)\n\t\t+ W(4, -1090712556, 1051586707, 1040982790, -1113315600)\n\t\t+ W(5, 1025381303, -1116357686, -1096961046, 1047278155)\n\t\t+ W(6, -1068172350, -1062545743, 1058445980, 1081890452) + W(7, 1078990875, 1057946443, -1129266047, 1020805991)\n\t\t+ W(8, 1053466473, -1089644697, 1044082250, 1021891615) + W(9, 1047100697, -1138523317, -1118643722, 1003167691)\n\t\t+ W(10, 1031038629, -1109024185, -1115541422, -1110157560)\n\t\t+ W(11, 1034093689, -1121128958, -1164400298, 1023430939);\n\tWS(-1086946092, 1067745931);\n\tsum1 = W(0, -1129718754, 1029399808, 1034551451, 1031195606) + W(1, 1040134022, 1033121193, 1023151712, 1042343314)\n\t\t + W(2, 1043160110, -1107060738, 1035261538, -1095383669)\n\t\t + W(3, -1133919947, -1122710934, -1107305618, 1042006276)\n\t\t + W(4, 1057051220, 1052187432, 1056679450, 1065908691) + W(5, 1053194351, 1055695833, 1050664148, 1051480109)\n\t\t + W(6, -1086793423, -1093519641, -1086890615, -1082115172)\n\t\t + W(7, -1091092163, -1087806651, -1106762967, -1086763775)\n\t\t + W(8, 1029510552, 1041235060, 1027399596, 1028581668) + W(9, 1039541441, 1022886169, 1035840335, -1123269599)\n\t\t + W(10, 1019782728, 1028876859, -1121687640, -1151056709)\n\t\t + W(11, 985161115, 1032179179, -1137650955, 1023858088);\n\tsum2 = W(0, -1092038506, -1100127293, -1076970891, -1074419095)\n\t\t + W(1, -1072137471, -1071882845, -1075499422, -1077760287)\n\t\t + W(2, 1049598436, 1048639033, 1064718435, 1072396257) + W(3, 1071503744, 1074270589, 1071966648, 1067893220)\n\t\t + W(4, 1043882093, 1037661877, 1059313512, 1057486689) + W(5, 1051417643, 1058040444, 1034550731, -1109701446)\n\t\t + W(6, 1042320103, -1103044471, 1034035103, -1104719409)\n\t\t + W(7, -1111075093, 1044428409, -1105998171, 1040427981)\n\t\t + W(8, -1131832297, 1002123811, -1103733932, 1041582287)\n\t\t + W(9, -1115120295, -1139439905, 1008560441, -1112073274)\n\t\t + W(10, -1121740952, 1029198842, -1115216799, 1010136401)\n\t\t + W(11, -1128000009, 1024386386, -1120184167, 1030441594);\n\tWS(-1081254198, -1103496580);\n\tsum1 = W(0, -1115414444, 1041339642, -1098407452, -1130637434)\n\t\t + W(1, 1020760807, -1101995566, 1047565230, -1100079212)\n\t\t + W(2, -1146587219, -1098606506, 1050459360, 1042214179)\n\t\t + W(3, -1117423418, 1034598934, -1122745995, 1024450296)\n\t\t + W(4, -1093427101, -1097683981, -1091994231, -1078168847)\n\t\t + W(5, -1095228700, -1092752622, -1097351785, -1094816186)\n\t\t + W(6, 1048836291, 1057498447, 1058816906, 1061921355) + W(7, 1063391143, 1049596874, 1055225025, 1057483350)\n\t\t + W(8, 1038644661, -1144521152, -1117884339, 1040740783)\n\t\t + W(9, -1099277734, -1125383814, -1125503451, -1112883619)\n\t\t + W(10, 1040942563, -1102869832, 1036627839, -1165859686)\n\t\t + W(11, -1107645994, 1047950513, -1104517417, 1038686359);\n\tsum2 = W(0, -1101463653, 1049429767, -1128244554, -1113723320)\n\t\t + W(1, -1100253783, -1100739127, 1041910404, -1105778187)\n\t\t + W(2, 1057761413, 1067192921, 1075421514, 1075836777)\n\t\t + W(3, -1088665878, 1016894214, -1116933337, -1111337535)\n\t\t + W(4, -1092703936, -1078098525, -1071536845, -1077415283)\n\t\t + W(5, 1059548308, 1051692516, -1101242161, 1048285068)\n\t\t + W(6, -1109493923, -1139460835, 1039603395, -1087182285)\n\t\t + W(7, 1034610843, -1117875445, 1013931579, 1038460759) + W(8, 1041760680, 1028945771, -1114414573, 1045554670)\n\t\t + W(9, -1106673179, 1032645955, -1122014712, -1113595007)\n\t\t + W(10, 1014720459, -1117756514, 1016362862, -1118637934)\n\t\t + W(11, -1125369728, 1027339291, 1013909643, -1124961818);\n\tWS(-1089093868, 1047195432);\n\tsum1 = W(0, -1139038025, -1146634508, -1107247574, -1111039036)\n\t\t + W(1, -1111569431, -1131070116, -1123633457, -1125658710)\n\t\t + W(2, -1108646892, -1102493258, -1102675263, 1027299238)\n\t\t + W(3, 1043334313, 1035038251, -1130835530, 1006218639) + W(4, 1042227448, 1050027260, 1055627170, -1094097439)\n\t\t + W(5, -1086063146, -1091453053, -1104540112, -1100496626)\n\t\t + W(6, -1116853265, -1113152371, -1102292967, 1059178599)\n\t\t + W(7, 1064850945, 1055758905, 1047069456, 1028822677) + W(8, 1032512066, 1037772585, 1040310103, -1120135685)\n\t\t + W(9, -1097054397, -1107670363, -1109953256, 1033685440)\n\t\t + W(10, 1015754506, -1111624526, -1122052409, -1123630421)\n\t\t + W(11, 1035574535, -1126001639, 1015067608, 906381938);\n\tsum2 = W(0, -1103632983, 1043805370, -1100282419, 1043204826)\n\t\t + W(1, -1107284068, 1032596944, -1115324019, 1038389706)\n\t\t + W(2, 1051248459, -1102825598, -1110573499, 1027245233)\n\t\t + W(3, -1115422824, -1088944566, -1119815045, -1103855212)\n\t\t + W(4, 1050224986, -1106748849, -1142028319, 1068200484)\n\t\t + W(5, -1110893073, -1082511144, -1101546175, -1099926119)\n\t\t + W(6, -1112111441, -1107415409, 1047715488, 1064575785)\n\t\t + W(7, -1116519441, -1166081973, 1033478296, -1112155627)\n\t\t + W(8, -1114055425, -1113209339, -1106125891, 1034756297)\n\t\t + W(9, -1121811913, 1036646608, -1139772871, 1042197713)\n\t\t + W(10, -1111599379, 1037386114, -1107474855, 1042201726)\n\t\t + W(11, -1115818225, 1036836551, -1107371535, 1026011708);\n\tWS(-1121781432, -1075996235);\n\tsum1 = W(0, -1139185884, 1017932812, 1031934942, 986151814) + W(1, -1164665422, 1000199096, 1007298263, -1140438078)\n\t\t + W(2, -1104344139, -1106763371, -1097501556, -1122902443)\n\t\t + W(3, -1153685131, -1127990679, 1001735501, -1113474827)\n\t\t + W(4, 1055178280, 1050633065, 1061458986, 1056941803) + W(5, 1057254916, 1045616484, 1030315686, 1046908556)\n\t\t + W(6, 1023675446, -1102467779, -1098857564, -1087567683)\n\t\t + W(7, -1091469811, -1104204108, -1129857478, -1103515070)\n\t\t + W(8, -1115352921, -1113788396, 987917899, 1038547421)\n\t\t + W(9, -1108760371, 1011665321, -1121847517, -1118109260)\n\t\t + W(10, -1116105386, -1134059780, -1113912527, -1136836585)\n\t\t + W(11, 1007170123, -1128021832, -1154396360, -1121041198);\n\tsum2 = W(0, -1168649543, -1129109975, 1016893178, -1132018102)\n\t\t + W(1, -1117453381, 1023462612, -1106957470, -1115823387)\n\t\t + W(2, -1097479461, -1104465921, -1103938775, -1118749694)\n\t\t + W(3, -1115486085, 976518647, 1025546665, 1034975399) + W(4, 1049098480, 1049155382, 1057022497, -1098731951)\n\t\t + W(5, -1119719509, -1106384437, -1098317799, -1105263623)\n\t\t + W(6, 1042706476, -1102354715, 1043506300, -1097087336) + W(7, 1057524747, 1036026738, 1045328977, 1035074429)\n\t\t + W(8, 1041988609, -1112820525, 1047765539, 1046909100)\n\t\t + W(9, -1100642605, -1121071990, -1106523641, 1003192501)\n\t\t + W(10, -1106980555, -1122042062, -1105649317, 1031531696)\n\t\t + W(11, -1114531186, 1040948740, -1113359258, 1033488186);\n\tWS(1058868844, 1053114578);\n\tsum1 = W(0, 1019520880, -1122446279, 1037061470, 1025396381) + W(1, 1029402067, 1031841884, -1120186199, 1033549944)\n\t\t + W(2, 1047026923, -1120049453, 994701546, -1104790763)\n\t\t + W(3, -1104820950, 1021084025, -1105237507, 1009185118) + W(4, 1040716289, 1048040834, 1059285152, 1063349990)\n\t\t + W(5, 1062179110, 1056787146, 1046529242, 1057448647)\n\t\t + W(6, -1095841007, -1093651986, -1089525095, -1081113852)\n\t\t + W(7, -1086213616, -1087503095, -1091401861, -1088312360)\n\t\t + W(8, 1020793813, 1039005404, 1046415125, 1040363303) + W(9, 1045703966, 1041196477, 999605293, 1036113571)\n\t\t + W(10, 1026453035, -1117418946, 1019785277, -1114838686)\n\t\t + W(11, 1030676884, 1024749253, 1004229292, 1022861598);\n\tsum2 =\n\t\tW(0, 1050427341, -1106859908, 1035861035, -1112488680) + W(1, 1032409135, -1122621450, -1104767713, 1046587865)\n\t\t+ W(2, -1089070569, -1111523090, 1043538575, -1097196972)\n\t\t+ W(3, 1036654054, -1133854060, -1130574088, -1093068011)\n\t\t+ W(4, 1053219089, 1052246278, 1059060280, -1088179143) + W(5, 1017346040, 1043005089, -1092034159, 1052143300)\n\t\t+ W(6, 1067490860, -1093125710, -1078649576, -1087268097)\n\t\t+ W(7, 1059384755, 1062938540, -1093321870, 1059539225)\n\t\t+ W(8, -1080930470, -1078811541, -1074777053, -1075643449)\n\t\t+ W(9, -1124572738, 1049929252, -1112625720, 1059287102) + W(10, 1058659628, 1066232343, 1073277874, 1065823003)\n\t\t+ W(11, 1062269032, 1043425453, -1092663388, -1098215774);\n\tWS(-1074642550, 1059001037);\n\tsum1 =\n\t\tW(0, 1033877849, -1114814273, 1017602926, -1122785432) + W(1, -1119942606, -1121541554, 1004629641, -1103073299)\n\t\t+ W(2, -1105864948, -1133959838, -1106724665, 1042832010) + W(3, 1046400581, 1036804396, 1032924291, 1039804561)\n\t\t+ W(4, 1040506928, -1108476642, -1098100854, -1084427489)\n\t\t+ W(5, -1083890617, -1088670813, -1090515058, -1095458045)\n\t\t+ W(6, -1096349630, 1023714759, 1055335876, 1065396984) + W(7, 1062559324, 1061684023, 1051195620, 1054342111)\n\t\t+ W(8, 1046552293, -1108357401, 1032280783, -1132282059)\n\t\t+ W(9, -1113686945, -1104721044, -1110306392, 1031943308)\n\t\t+ W(10, -1110243859, -1127057913, -1147216585, 1033899323)\n\t\t+ W(11, 1032718711, 1025273824, -1122497752, -1121848889);\n\tsum2 =\n\t\tW(0, 1024273115, -1131612410, -1107407950, 1041256788) + W(1, -1117121277, 1031505312, -1110072407, 1016793154)\n\t\t+ W(2, 1021686194, 1025348247, -1105777061, 1042238427)\n\t\t+ W(3, -1126779625, -1118046720, -1118330488, 1027338756)\n\t\t+ W(4, 1043888107, -1101286924, 1048538591, -1090332406)\n\t\t+ W(5, 1053208564, 1043322093, -1135252559, -1116082242)\n\t\t+ W(6, -1108335658, -1122239076, 1046097166, 1036931728) + W(7, 1040874893, 1040745205, 1050743072, -1096125238)\n\t\t+ W(8, -1077891718, -1091711743, -1097181377, 1065426853)\n\t\t+ W(9, 1063431633, 1040529954, -1097546746, 1050690616)\n\t\t+ W(10, -1110849641, -1111108183, 1033944270, -1111979954)\n\t\t+ W(11, 1039617071, -1105370761, -1122096807, -1122718137);\n\tWS(-1088674604, -1128666815);\n\tsum1 = W(0, -1123914807, 1016031116, 1014718188, 1024027612)\n\t\t + W(1, -1145356432, 1024193015, -1124389866, 1032770888)\n\t\t + W(2, -1112902532, -1154837176, -1114821559, -1098901213)\n\t\t + W(3, -1103324234, -1099251759, -1119376425, -1101826270)\n\t\t + W(4, 1031043843, 1033184452, 1015481863, 1054517603) + W(5, 1051928805, 1059978813, 1047372601, 1062901239)\n\t\t + W(6, 1051063687, -1131397783, 1027540319, -1102428675)\n\t\t + W(7, -1094753613, -1100081596, -1110958225, -1101878062)\n\t\t + W(8, -1094561666, 1025159063, -1102063788, -1104802482)\n\t\t + W(9, 1021380397, -1111732847, -1154253637, -1113334654)\n\t\t + W(10, 1018478931, -1134237698, 1024172061, -1126359028)\n\t\t + W(11, -1133861065, -1114031158, 1028470484, -1114369951);\n\tsum2 =\n\t\tW(0, -1125911137, 1012595671, 999266341, 1044288444) + W(1, -1101165077, 1041147790, -1113177198, 1025832748)\n\t\t+ W(2, -1108931889, -1114639139, 1007405169, -1110292957) + W(3, 1050109344, 1041510968, 1029583838, 1046353900)\n\t\t+ W(4, 1017628143, 1032292317, -1114156858, -1067836662) + W(5, -1072172899, 1037860217, 1074693740, 1081403750)\n\t\t+ W(6, 1050970701, -1128469007, -1110785518, -1074929312)\n\t\t+ W(7, -1105301985, 1044362436, 1048694785, 1057358913) + W(8, 1035307535, -1112594616, 1028698628, -1112320536)\n\t\t+ W(9, 1032862316, -1133865234, -1121233078, 1015908463)\n\t\t+ W(10, -1132880011, 1026392505, -1126668834, 1035975658)\n\t\t+ W(11, -1115294669, -1122721591, 1027549527, -1114367420);\n\tWS(-1092184279, -1114774309);\n\tsum1 = W(0, -1112548452, -1120800919, -1114639366, 1008341430)\n\t\t + W(1, 1009522319, -1120506536, 1034801619, 1022706306) + W(2, 1035183681, 1038305887, 1043708422, 1037535198)\n\t\t + W(3, -1098020135, 1029108045, -1128765878, -1106461058)\n\t\t + W(4, -1114927434, -1101125062, -1087724142, -1103312811)\n\t\t + W(5, 1062809460, -1118967585, 1002077113, 1043448960) + W(6, 1044352162, 1039166894, 1063427286, 1034792975)\n\t\t + W(7, -1088121787, -1115071968, -1114196826, -1129024277)\n\t\t + W(8, 979364527, -1131609361, -1093459700, 1048665209) + W(9, 1043037714, 1023205859, 1033949151, -1126884683)\n\t\t + W(10, -1115173597, -1182492945, 1021495134, -1113251558)\n\t\t + W(11, -1113757330, -1113409875, -1123554950, -1115469664);\n\tsum2 = W(0, -1130731300, -1146462793, -1114036842, 1017173194)\n\t\t + W(1, 1027612469, -1121343755, 1027895615, -1154268081)\n\t\t + W(2, -1113218164, 1028824397, 1013989596, 1034818358)\n\t\t + W(3, -1104368005, 1040334859, -1123082454, -1123775916)\n\t\t + W(4, 1024876637, -1129593633, 1044891209, -1101530532)\n\t\t + W(5, 1049606516, -1097048862, 1042764886, -1113704648)\n\t\t + W(6, -1112264614, -1113338336, 1058622224, -1105838439)\n\t\t + W(7, 1050794194, -1102338893, 1040822444, -1122592353)\n\t\t + W(8, -1099018413, -1111675537, -1088855347, 1059579881)\n\t\t + W(9, 1042736448, 1043492825, -1121501222, 1034905054)\n\t\t + W(10, 1026854381, -1102804304, -1102462733, -1108694945)\n\t\t + W(11, -1114432119, 1019755962, -1122392540, -1119817837);\n\tWS(1061153836, -1122742154);\n\tsum1 = W(0, 1027853554, -1115291137, -1171221910, -1112977164)\n\t\t + W(1, -1121554637, 1022714404, -1157881362, -1123187178)\n\t\t + W(2, -1109089440, 1043116226, -1138258466, 1050791197)\n\t\t + W(3, 1034471002, 1041098678, -1134239506, 1034237593)\n\t\t + W(4, -1102650256, -1115210274, -1112757431, -1077890273)\n\t\t + W(5, -1082648980, -1093251577, -1097764996, -1092621429)\n\t\t + W(6, 1051082942, 1047414994, 1055597733, 1055540065) + W(7, 1061271560, 1053866013, 1044732088, 1032996986)\n\t\t + W(8, 1027843188, -1112215273, 1034632359, 1042514461) + W(9, -1131618020, 1046515591, 1036747322, 1043087924)\n\t\t + W(10, -1131011401, -1119605372, -1126942769, -1126698730)\n\t\t + W(11, 998349933, 1025132479, -1120958927, 984532249);\n\tsum2 =\n\t\tW(0, 1031101174, -1132731961, 1022986308, 1017601076) + W(1, -1126674740, 1022398052, 1013813081, 1010235161)\n\t\t+ W(2, -1102026314, 1038074007, -1092900468, 1030590838)\n\t\t+ W(3, 1001758673, 1001713969, -1140283033, -1138091097) + W(4, 1042272104, -1090146581, 1028046198, 1054179894)\n\t\t+ W(5, -1096188072, 1035923987, -1106500726, 1036670019) + W(6, -1126868316, 1042331882, 1039425711, 1068886648)\n\t\t+ W(7, 1049555295, -1096410864, 1036573795, -1105222854) + W(8, 1028240358, 1036936531, -1122656394, 1039233571)\n\t\t+ W(9, -1086618714, -1090080092, -1110072380, -1134061337)\n\t\t+ W(10, 1023923290, -1128194324, -1114483483, -1108833787)\n\t\t+ W(11, 1026905222, 1029729918, 1035325123, 1035525391);\n\tWS(-1098883799, 1037141561);\n\tsum1 = W(0, -1114839991, 1029657918, -1116594483, 1034543274)\n\t\t + W(1, 1026816074, -1140770618, 1035386535, 1007197468) + W(2, 1039141586, 1034970850, 1048999812, 1026227619)\n\t\t + W(3, -1103366664, -1115755155, -1109617409, -1117505278)\n\t\t + W(4, -1110021469, -1090767256, -1089859629, 1007604554)\n\t\t + W(5, 1063309440, 1050338841, 1049028980, 1050252341) + W(6, 1020247259, 1029681923, 1058872566, -1100094273)\n\t\t + W(7, -1090400131, -1090199858, -1104209655, -1101914812)\n\t\t + W(8, 1030453625, -1119339247, -1104869706, -1106749124)\n\t\t + W(9, 1040832320, 1023759014, 1040157646, 1034144506)\n\t\t + W(10, 1040211480, -1126798193, 1041448405, -1123771570)\n\t\t + W(11, 1006844457, -1131945671, -1115455274, -1106217213);\n\tsum2 = W(0, 1003211606, -1137674963, -1151639180, -1126381316)\n\t\t + W(1, -1125497686, -1120928387, 1024650751, -1121709003)\n\t\t + W(2, -1120528483, -1120827669, -1113012012, -1125167698)\n\t\t + W(3, -1133545211, 1042115577, -1111755343, 1034768106)\n\t\t + W(4, -1156174412, -1165578649, 1045965141, -1143882022)\n\t\t + W(5, -1157195276, -1139515595, 1024020315, -1128894336)\n\t\t + W(6, -1122088448, 1021421814, -1108742643, 1025314463) + W(7, 1048741047, 1042307479, 1028526161, 1033940928)\n\t\t + W(8, 1034591096, 1046263423, 1043768035, 1048434617)\n\t\t + W(9, -1100558843, -1111490489, -1106766859, -1105393784)\n\t\t + W(10, 1008615371, -1109822394, -1107512724, -1102660599)\n\t\t + W(11, -1103528899, -1116374767, 1031989982, -1146160726);\n\tWS(1056068055, 1054753321);\n\tsum1 = W(0, -1151415881, -1148496799, 1010657956, 1024019466)\n\t\t + W(1, -1130137728, 1008503186, -1132133255, 1035499631)\n\t\t + W(2, 1039080395, -1110003853, 1010453293, 1036235820) + W(3, 1020552269, 1036573197, -1115513116, 1040242409)\n\t\t + W(4, 1057552055, 1043835198, 1059020393, 1056043521) + W(5, 1059247988, 1054798584, 1050516586, 1047345767)\n\t\t + W(6, -1089028090, 1042243518, -1089501818, -1077848098)\n\t\t + W(7, -1085601017, -1088101382, -1102383812, -1092379525)\n\t\t + W(8, -1115248008, 1050869997, 1038857744, 1040563886) + W(9, 1031869090, 1014726271, 1037313809, -1116861746)\n\t\t + W(10, 1035025164, 1014222010, 1019596694, -1121658024)\n\t\t + W(11, -1123056704, 1035081577, -1137744617, 1008326318);\n\tsum2 =\n\t\tW(0, 1028355794, -1106782132, 1035193429, 1019490884) + W(1, -1103311494, 1051099266, -1107701072, 1017055868)\n\t\t+ W(2, -1096807405, 1053669968, -1113415499, 1045145961) + W(3, 1033457423, -1105194567, -1111393110, 995616995)\n\t\t+ W(4, 1040605863, -1138391825, 1054131819, -1117197986) + W(5, 1014178849, 1043284247, 1045435457, -1110630971)\n\t\t+ W(6, 1067941768, -1075220438, -1088459045, 1059082808)\n\t\t+ W(7, 1050105229, -1121773074, -1120483817, 1023829774)\n\t\t+ W(8, -1077104108, -1095467240, -1094157882, 1063065831)\n\t\t+ W(9, 1061761756, 1042603721, -1116379229, 1044996767)\n\t\t+ W(10, 1052817152, -1103015841, 1049259157, -1103440804)\n\t\t+ W(11, -1095094287, -1122898552, -1109769641, 1018464332);\n\tWS(-1081368566, -1084412265);\n\tsum1 = W(0, 1027068306, 1015688387, 1033201483, 1018141039) + W(1, 1032237687, 1022250212, 1019999841, 1019305877)\n\t\t + W(2, -1116002144, -1139602460, -1116483849, -1108067395)\n\t\t + W(3, -1114781410, -1101031910, -1110135922, -1115253585)\n\t\t + W(4, 1048181720, 1048418201, 1059204754, 1059054739) + W(5, 1060863016, 1054995541, 1048891912, 1054003721)\n\t\t + W(6, -1097381330, -1109028275, -1086309497, -1080843359)\n\t\t + W(7, 1035809139, -1090938969, -1097995920, -1098655035)\n\t\t + W(8, -1110979184, 1018111780, -1126061147, 1023153354)\n\t\t + W(9, 1043786804, -1102361409, 1017536656, -1110370680)\n\t\t + W(10, 1021378954, 1036715310, -1118145977, 1024269909)\n\t\t + W(11, 1014428471, 1015803518, 1027639288, 1026153225);\n\tsum2 =\n\t\tW(0, -1105480981, 1035973965, 1037165381, -1106311589) + W(1, 1052000177, -1104974154, -1120302417, 1040627526)\n\t\t+ W(2, 1050460434, -1096496755, 1049140757, 1006710678) + W(3, -1091756558, 1044207757, 1032159893, -1100748342)\n\t\t+ W(4, -1098849709, 1051612828, -1090898849, 1040931379) + W(5, 1058463605, -1090778289, 1039812947, 1045155050)\n\t\t+ W(6, 1048076097, -1090117310, 1053634690, 1066845841)\n\t\t+ W(7, -1077185739, 1058534342, -1102438650, -1096398368)\n\t\t+ W(8, 1035320005, 1047120319, 1021130333, -1083953982) + W(9, 1057459457, -1091684787, 1041032826, 1045504944)\n\t\t+ W(10, -1105501338, -1108725217, 1039969785, 1046728781)\n\t\t+ W(11, 1038345201, -1141278071, 1040363142, -1109297232);\n\tWS(1040286894, 1035975353);\n\tsum1 =\n\t\tW(0, -1171293815, 1023182418, 996039142, -1137235964) + W(1, -1135192533, 1025821242, -1128818097, 1020463141)\n\t\t+ W(2, 1034319831, -1127987806, -1102399280, -1105596260)\n\t\t+ W(3, -1103790599, -1108335719, -1114500598, -1129600787)\n\t\t+ W(4, 1059664710, 1048633701, 1062256902, 1059153168) + W(5, 1061115073, 1056014846, 1050028641, 1052737098)\n\t\t+ W(6, -1091927835, -1097464070, -1087363556, -1086480503)\n\t\t+ W(7, -1089057879, -1099300213, -1097571161, -1112421262)\n\t\t+ W(8, -1116625676, 1029070026, 1016696459, 1000027879) + W(9, 1028964506, -1108586113, 1032749254, -1096430155)\n\t\t+ W(10, 1013574450, 1012611215, -1115123712, 1006568169)\n\t\t+ W(11, -1134032598, 1032814547, 1020632239, 1016193698);\n\tsum2 = W(0, -1115556642, -1130243023, 1032034792, -1126476135)\n\t\t + W(1, 1032996496, -1138592966, -1121911846, 1029413614)\n\t\t + W(2, 1037372428, 1030557532, 1049080310, -1112452010)\n\t\t + W(3, -1108874582, -1125709403, -1147299853, -1125845903)\n\t\t + W(4, 1085969060, 1077581449, -1074326256, -1064530882)\n\t\t + W(5, -1074476109, -1104386166, 1029772508, -1109306490)\n\t\t + W(6, 1051814466, 1043810263, -1103611514, -1081646826) + W(7, 1033029539, 993676602, 1034388196, 1000946837)\n\t\t + W(8, 1011471282, 1030366783, -1109496698, -1129814679) + W(9, 1035377868, 1007963430, 1005762565, 1024214725)\n\t\t + W(10, -1114698318, 1034280644, -1140286158, 1022645135)\n\t\t + W(11, -1126128243, 1013431542, -1114714998, 1024966722);\n\tWS(-1128144240, -1105727419);\n\tsum1 =\n\t\tW(0, 1008177348, 1008158465, 1025380533, 1041196118) + W(1, -1123971020, 1038005880, -1110790464, 1022532691)\n\t\t+ W(2, 1038442911, 1030921926, -1116236765, -1091904121)\n\t\t+ W(3, -1110541401, -1155490648, -1118346788, -1132141153)\n\t\t+ W(4, 1034971295, -1108323937, 1041262911, -1116818069) + W(5, -1118195565, 1050488689, 1005836543, 1035288564)\n\t\t+ W(6, 1037111480, 1020025483, 1039711206, -1090328900) + W(7, 1053066642, -1108534613, 1032777199, 1043217853)\n\t\t+ W(8, -1119737674, 1015575522, -1096558626, -1106145913)\n\t\t+ W(9, -1107602136, 1033678004, 1034582855, -1110557919) + W(10, 1019898055, 1036155997, 1023258159, 1038413850)\n\t\t+ W(11, -1123851725, 1027658998, -1118860082, -1161170171);\n\tsum2 = W(0, -1128930637, 1013105493, 1027020519, -1111106512)\n\t\t + W(1, 1033707008, -1108465338, -1130609759, -1112986298)\n\t\t + W(2, -1132037027, -1110061572, 1023565141, -1118411413)\n\t\t + W(3, -1104848450, 1001195043, -1113096913, -1123693871)\n\t\t + W(4, 1018701611, 1028677045, -1097696705, 1051172043) + W(5, 1036460110, -1134254189, 1035127174, 1021784635)\n\t\t + W(6, -1110976033, -1113315034, -1136487341, 1064921249)\n\t\t + W(7, -1097426277, 1028959819, -1113952185, -1139702593)\n\t\t + W(8, -1129623857, -1136221161, 1045236380, -1100340880)\n\t\t + W(9, 1026225447, 1033145987, -1105387359, 1025786651)\n\t\t + W(10, 1029665439, -1120215489, 1025952555, -1120959951)\n\t\t + W(11, 1006240491, -1118442072, -1137489821, -1119362634);\n\tWS(1066786198, 1018352061);\n\tsum1 = W(0, 1037807432, -1147124480, 1032919115, 1043153405) + W(1, 1024885356, 1040525108, 1034093744, 1041644314)\n\t\t + W(2, 1042991174, -1118935590, -1102401423, -1111703874)\n\t\t + W(3, -1105747115, -1109427003, 1036876386, -1113217832)\n\t\t + W(4, 1056116676, 1053008404, 1058826232, 1052869895) + W(5, 1063596395, 1052412861, 1055303296, 1055747689)\n\t\t + W(6, -1089303485, -1093203077, -1091158043, -1077398372)\n\t\t + W(7, -1088790919, -1096537905, -1092801624, -1095292522)\n\t\t + W(8, -1115182496, 1032850856, -1118679276, -1112497438)\n\t\t + W(9, 1041854800, -1158252416, 1029739551, -1097656684) + W(10, 1044944769, 1019595829, 1030098999, 990101824)\n\t\t + W(11, 1037575334, 1022825908, 1042956152, 1027108728);\n\tsum2 =\n\t\tW(0, 1036031230, -1120880520, -1118383086, -1112120068) + W(1, 1044452135, -1113902667, 1036248196, -1175016923)\n\t\t+ W(2, -1102747382, 1035081854, -1081312733, -1097589576)\n\t\t+ W(3, -1136989239, -1101386787, 1038098664, -1106083613) + W(4, 1040389106, 999021742, 1046511529, 1061513306)\n\t\t+ W(5, -1098672489, 1028645652, 1037598188, 1027306194) + W(6, 1027629590, 1048871361, -1102228261, 1059108854)\n\t\t+ W(7, 1030279668, -1090327880, 1046091275, -1110606753) + W(8, 1033840740, 1037408166, -1111365044, 1017984327)\n\t\t+ W(9, 1032578550, -1098256610, 1055272900, -1100293962)\n\t\t+ W(10, -1113736580, 1036561850, -1105995296, 1037901466)\n\t\t+ W(11, 1024281094, 1003868670, 1035521712, -1114802202);\n\tWS(-1088826540, -1072617048);\n\tsum1 = W(0, 986338164, 1023136598, -1127817408, 1038855104) + W(1, -1112014844, 1032100206, -1114071293, 1031252724)\n\t\t + W(2, 1037920241, -1108211448, -1117329516, -1098615294)\n\t\t + W(3, -1156351446, -1125030464, 1025960366, -1128205111)\n\t\t + W(4, 1051799989, 1051897846, 1060040519, 1068445460) + W(5, 1041659186, 1049473503, 1046320643, 1053193450)\n\t\t + W(6, -1096657083, -1097067830, -1085267217, -1091986338)\n\t\t + W(7, -1085224562, -1095210946, -1103740786, -1098483636)\n\t\t + W(8, -1131268440, -1134063855, 1034398076, -1104903024)\n\t\t + W(9, 1041222927, -1123500579, 1021522163, -1110505437)\n\t\t + W(10, -1122826702, 1022858827, 1016624516, 1025833567)\n\t\t + W(11, -1148095931, 1018816617, 1004333185, -1135786218);\n\tsum2 = W(0, 1025188267, -1121532154, 1037371296, -1111771837)\n\t\t + W(1, 1040037716, -1106548534, 1039102739, -1109851481)\n\t\t + W(2, -1139275200, 1033600964, -1123953755, 1046721727)\n\t\t + W(3, -1098628025, 1040338433, -1109104289, 1042987802)\n\t\t + W(4, 1040515214, -1111129732, 1035395064, -1119362505)\n\t\t + W(5, 1046868281, -1095083293, 1045077862, -1121821072)\n\t\t + W(6, -1131755519, -1105820182, 1067277095, 1075696256)\n\t\t + W(7, -1070220409, -1079865944, 1049591033, -1113640498)\n\t\t + W(8, -1105181237, 1041295374, -1104867399, 1058324165)\n\t\t + W(9, -1095490474, 1030948623, -1107729189, 1039251361)\n\t\t + W(10, 1030566925, -1137053008, -1131759093, 1026363312)\n\t\t + W(11, -1118056117, 1018203389, -1128931569, -1123620784);\n\tWS(-1126600048, -1081356549);\n\tsum1 = W(0, -1127841038, -1121393942, -1127713943, -1112866678)\n\t\t + W(1, -1130256197, -1113126004, -1135790871, -1114110304)\n\t\t + W(2, -1133929050, 1032965854, 1033968271, 1043820719) + W(3, 1042942538, 1043379215, 1027795642, 1034600139)\n\t\t + W(4, -1098403026, -1092154099, -1092503722, -1081570623)\n\t\t + W(5, -1086843241, -1092479684, -1097678271, -1094287464)\n\t\t + W(6, 1044657313, 1056638003, 1049224359, 1066854747) + W(7, 1055316562, 1058087872, 1032418298, 1051778533)\n\t\t + W(8, -1112364357, 1040562850, 1040769245, -1105175211)\n\t\t + W(9, -1123699911, -1108064855, -1138101411, 999504676)\n\t\t + W(10, -1126110067, 1036225512, -1129561307, 1047740947)\n\t\t + W(11, -1102743497, 1041161205, -1106598351, 1039116783);\n\tsum2 = W(0, 1002695390, -1122258341, -1122292123, -1120933435)\n\t\t + W(1, 1032169765, -1117894001, 1003179774, -1138289315) + W(2, 1041236493, 1024135109, 1018577975, 1034742596)\n\t\t + W(3, -1148289286, -1155671947, 1027950533, -1116290259)\n\t\t + W(4, -1107205869, -1167041196, 1048984334, -1085659967)\n\t\t + W(5, 1041640777, -1108030745, -1123201389, -1139220243)\n\t\t + W(6, -1110230321, -1120190201, -1063745707, -1070580481)\n\t\t + W(7, 1042707591, 1049556353, -1106095214, 1050855401) + W(8, 1025661924, 1051920007, 1083223141, 1079255156)\n\t\t + W(9, -1110361303, -1097500712, 1030518681, -1105964729)\n\t\t + W(10, 1013006047, -1101224590, 1033459361, 1037086181)\n\t\t + W(11, -1105447820, 1029970779, 1006793819, -1115669085);\n\tWS(1044741550, -1111040261);\n\tsum1 = W(0, -1123328853, -1102049737, 1040528310, -1104112191)\n\t\t + W(1, 1024305776, -1101315365, 1021709031, -1111623399)\n\t\t + W(2, -1129171790, 1051367713, -1097130129, 1051950321)\n\t\t + W(3, 1039437043, 1045396986, -1108128612, -1165073551)\n\t\t + W(4, -1119860449, -1091471693, 1035652177, -1092522751)\n\t\t + W(5, -1095677118, -1130673884, -1112716514, -1121220876)\n\t\t + W(6, 1045626213, 1046305018, 1049556145, 1053940037) + W(7, 1055561708, -1095468986, 1044018368, 1026385047)\n\t\t + W(8, -1104602741, 1044417333, -1091825946, 1049099055)\n\t\t + W(9, -1104689389, 1055485165, -1103796617, 1036376309)\n\t\t + W(10, 1022127887, -1107859535, 1033350174, -1124872112)\n\t\t + W(11, -1115808049, -1115536169, 1029190802, -1122289340);\n\tsum2 = W(0, -1104033148, -1105436527, -1109964889, -1097126651)\n\t\t + W(1, -1098141643, -1090250993, -1116302593, -1118233874)\n\t\t + W(2, 1039328248, 1038128967, 1010051700, 1057153562) + W(3, 1057745438, 1060383381, 1035812245, 1044677482)\n\t\t + W(4, 1040757730, 1010939044, 1051778220, 1035481326)\n\t\t + W(5, -1094952202, -1102222701, -1133841678, -1105877607)\n\t\t + W(6, 1023457753, -1118329847, -1098103909, -1094975289)\n\t\t + W(7, 1048659070, -1098057265, -1123621243, -1160321672)\n\t\t + W(8, -1105261590, 1011822306, 1019752394, 1037637839) + W(9, 1023965510, 1049957743, -1104798795, 1036758948)\n\t\t + W(10, 1019934334, 998732076, -1151355224, -1112777586)\n\t\t + W(11, 1012075272, -1134551782, 1031321862, -1124061226);\n\tWS(1065794902, 1053657215);\n\tsum1 = W(0, -1121908120, 1018314063, 1015310777, -1124873339)\n\t\t + W(1, 1031572020, -1147984576, 1024640407, 1026486289) + W(2, 1038333639, 1031009517, 1039118671, 1034311430)\n\t\t + W(3, 1041290230, -1120195837, -1119856235, -1114392412)\n\t\t + W(4, 1027457764, -1106391546, -1097318831, -1141167585)\n\t\t + W(5, 1054548019, 1053489270, 1041008530, 1038700424) + W(6, -1123855831, 1034446294, 1039330595, -1090069831)\n\t\t + W(7, -1096859758, -1090834490, -1105884449, -1105777031)\n\t\t + W(8, -1123864939, -1121443224, 1026117491, 1040632671) + W(9, 1028976296, 1043686014, 1007855863, 1023881277)\n\t\t + W(10, 1004753494, 1015085764, -1152877546, -1119728987)\n\t\t + W(11, -1155937596, -1132243578, 999100652, -1148206328);\n\tsum2 =\n\t\tW(0, -1111593455, 1026283313, -1106910582, -1123416451) + W(1, 1050577288, -1128641646, 1047088729, -1113858977)\n\t\t+ W(2, 1035072504, 1028902500, 1047373071, 1053329938) + W(3, -1092564654, -1100521328, -1096962366, 1017970524)\n\t\t+ W(4, 1043803228, -1108682745, 1040261276, 1067600226) + W(5, -1072392505, -1113219589, 1049469167, 1037790473)\n\t\t+ W(6, 1033408259, -1102620143, 1048908013, -1090850305) + W(7, 1062297118, 1017836657, 1033530157, -1125952722)\n\t\t+ W(8, -1104275307, 1005020832, -1100960524, 1050480903)\n\t\t+ W(9, -1138210428, -1168415746, 1025688819, -1131011166) + W(10, 998670368, 1032181798, 1023771046, 1032569956)\n\t\t+ W(11, -1112013629, 1023611526, -1112880371, 1021270423);\n\tWS(1062391596, 1012575503);\n\tsum1 = W(0, 1031343933, -1104891955, 1032025473, 1018981700)\n\t\t + W(1, -1107154694, 1037332142, -1113508494, -1120166325)\n\t\t + W(2, -1118754907, 1040079801, -1098309187, 1047266492)\n\t\t + W(3, 1041578200, -1102249736, 1040475388, -1099931343)\n\t\t + W(4, -1124966418, 1034244551, -1115351741, -1082667844)\n\t\t + W(5, 1034155267, -1116669206, -1108675062, 1037232762)\n\t\t + W(6, -1110681406, -1097175282, 1051954479, 1046130725) + W(7, 1051147223, 1052085167, 1003822408, 1045069376)\n\t\t + W(8, 1044511208, 1039695694, 1024690888, 1049723012) + W(9, -1103478091, 1031631968, 1001356052, -1120670778)\n\t\t + W(10, -1105353116, 1041572194, -1106768761, -1111177056)\n\t\t + W(11, 1041859398, -1100878141, 1037747241, -1115735812);\n\tsum2 =\n\t\tW(0, 1033523600, -1111554425, -1129275556, -1122087690)\n\t\t+ W(1, -1124036306, 1037981702, -1119955572, -1122349214) + W(2, 984378304, 1035520350, -1139357832, 1042336361)\n\t\t+ W(3, -1098127108, -1108770624, 1031985496, 1030270440) + W(4, 1029410276, 1027721316, -1120989222, 1063527919)\n\t\t+ W(5, -1086537602, -1087308230, 1038170956, 1040810725) + W(6, 1013286288, -1092144316, 1051778774, 1062226267)\n\t\t+ W(7, -1106529787, 1023869712, -1106223749, -1113965912)\n\t\t+ W(8, -1149511552, 1040549613, -1101613332, 1044728263)\n\t\t+ W(9, -1102568312, 1043627655, -1109791564, 1025118636)\n\t\t+ W(10, -1114072340, 1027894332, -1138380800, -1113445964)\n\t\t+ W(11, 1042436209, -1103441850, 1038090706, -1120264936);\n\tWS(1061969900, 1065420380);\n\tsum1 = W(0, 1002358108, -1132400117, 1036273784, -1121891281) + W(1, 1031471239, 1014037550, 1015146068, 1021231496)\n\t\t + W(2, 1041410250, 1024825568, -1111416381, -1112279056)\n\t\t + W(3, -1100377015, -1110955448, -1140842745, -1109508230)\n\t\t + W(4, 1005238718, 1055004288, 1058195604, 1065721300) + W(5, 1058645356, 1050103969, 1047622119, 1050895308)\n\t\t + W(6, -1098164717, -1093641048, -1089452644, -1081575699)\n\t\t + W(7, -1095897092, -1095327860, -1122283864, -1101391147)\n\t\t + W(8, -1127598604, 1037205414, -1122200151, 1041630292)\n\t\t + W(9, -1115380038, 1033148051, -1112032609, -1107652840)\n\t\t + W(10, 1013481849, -1128588267, 995531041, -1118185583)\n\t\t + W(11, 1031870564, -1125213521, 1031659065, -1167265945);\n\tsum2 = W(0, 1037378832, -1105869799, 1034348880, 1010791317)\n\t\t + W(1, 1020451237, 1025476671, -1121382126, -1144944739)\n\t\t + W(2, -1097408481, 1040337956, 1050274911, -1124897054)\n\t\t + W(3, -1105197585, -1107003535, -1131733180, -1128932040)\n\t\t + W(4, -1089422359, 1064628576, 1078490638, -1067190452) + W(5, 1026583828, 1034175619, 1030289482, 1035014695)\n\t\t + W(6, -1134521568, 1048269110, 1055313899, -1081189141)\n\t\t + W(7, 1051135592, 1043712009, -1114815155, -1125325948)\n\t\t + W(8, 1024014288, -1113808990, 1025241947, -1100728789)\n\t\t + W(9, 1047164907, -1112306567, 1025919494, -1116208218)\n\t\t + W(10, -1156999910, -1121898726, 1025759300, 1010618498)\n\t\t + W(11, 981635389, -1142752483, -1158764013, 1029088384);\n\tWS(1048733783, 1027643848);\n\tsum1 = W(0, -1133845785, -1133175894, -1135183403, -1116789548)\n\t\t + W(1, -1148511502, -1134260761, 1018609610, -1123833247)\n\t\t + W(2, 1036515120, 1023561851, 1042717327, 1030082171) + W(3, 1048693393, 1034425221, 1039337356, 1027869798)\n\t\t + W(4, -1088559253, -1093510507, -1088396394, -1080791005)\n\t\t + W(5, -1089662985, -1090323862, -1100061261, -1089888600)\n\t\t + W(6, 1057953132, 1049915371, 1060634166, 1063183646) + W(7, 1058925305, 1044704560, 1042697693, 1047384498)\n\t\t + W(8, 1034283684, -1130587597, -1127730531, -1114509469)\n\t\t + W(9, -1138682841, 1038705162, 1015444552, 1049640472)\n\t\t + W(10, -1114935677, 1012777537, -1122593837, 1031486794)\n\t\t + W(11, -1116148770, -1166921432, -1126426832, 1023971661);\n\tsum2 =\n\t\tW(0, 994989105, -1144072856, -1122509885, 1026939205) + W(1, 1028398855, -1120878413, 1025208177, -1113678678)\n\t\t+ W(2, 1037891939, -1103317800, 1037436931, -1127785128)\n\t\t+ W(3, -1103788534, 1034163445, -1127272012, 1026044831) + W(4, -1173716290, 1052666546, 1001371192, 1040815920)\n\t\t+ W(5, -1100616833, 1020001090, -1134790452, 1043708121)\n\t\t+ W(6, -1100065758, -1122814128, -1129250144, 1058553182)\n\t\t+ W(7, 1055924851, 1053725018, 1036740791, -1123998093)\n\t\t+ W(8, -1120127409, -1094230404, -1083084807, -1075758811)\n\t\t+ W(9, -1074914963, -1075891465, -1081737398, -1084193900)\n\t\t+ W(10, 1036146011, 1054652553, 1061875701, 1067689129) + W(11, 1068744910, 1067320464, 1065190583, 1062426867);\n\tWS(-1084457324, 1066101859);\n\tsum1 = W(0, -1146837948, 1016102797, -1115430590, -1115904029)\n\t\t + W(1, -1139281484, -1117556663, 1034492603, -1124011056)\n\t\t + W(2, -1111022815, -1125864729, 1047559389, 1034715654)\n\t\t + W(3, -1103064096, -1108958078, -1131712724, -1131623214)\n\t\t + W(4, -1115296098, 1038645029, -1083544605, 1037951214)\n\t\t + W(5, 1057869073, -1109939240, -1123954086, -1123535023)\n\t\t + W(6, 1042035070, 1047347075, 1059438663, 1052960194) + W(7, -1083491782, 1046468604, -1121536740, 1043250206)\n\t\t + W(8, 1030912362, -1106508822, -1104927285, -1167432352)\n\t\t + W(9, 1045723406, 1012598283, 1019381994, -1110102674)\n\t\t + W(10, -1121095658, -1128702979, 1022709564, -1129984885)\n\t\t + W(11, -1123913107, -1123056725, 1026960983, -1128824061);\n\tsum2 =\n\t\tW(0, -1125705477, -1127756609, 993770127, 1034569455) + W(1, 1010458600, -1119844207, -1122090273, 1019369801)\n\t\t+ W(2, -1127395739, 1044805550, -1097909373, -1177736375)\n\t\t+ W(3, -1116962018, 1043096893, 1035619005, -1112228363) + W(4, -1105227463, 1015549291, 1049252886, 1058826852)\n\t\t+ W(5, -1119951878, -1094678765, -1119199398, -1109645851)\n\t\t+ W(6, 1036906007, -1109261657, -1102191244, 1061852121)\n\t\t+ W(7, -1086841826, -1128420796, 1021651597, 1038741216)\n\t\t+ W(8, 1026846896, 1037043129, -1097396928, -1116961215) + W(9, -1103314123, 1038664018, 1035622840, 1019677755)\n\t\t+ W(10, 989272222, -1106679057, 1042524140, 1013800282)\n\t\t+ W(11, 1033157194, -1128652243, -1124905499, -1126258736);\n\tWS(1067036470, -1087655195);\n\tsum1 = W(0, -1143851962, 1026890311, -1106604063, 1016195769)\n\t\t + W(1, -1138731339, 1037080924, -1121217270, 1029907824)\n\t\t + W(2, 1018554747, -1120379564, -1114993347, 1022258327) + W(3, 981655329, 1045778247, 1025121994, 1023696087)\n\t\t + W(4, 1050955184, 1053786273, 1042552729, 1063572966) + W(5, 1058367344, 1055564522, 1047575674, 1048845230)\n\t\t + W(6, -1110423387, -1098337218, -1090196611, -1083965137)\n\t\t + W(7, -1084059678, -1090231591, -1096786628, -1095677575)\n\t\t + W(8, -1106360251, 1040602294, -1134551499, 1045568787) + W(9, 1046272662, 1028646847, 1026932869, 1027665749)\n\t\t + W(10, 1025799530, -1118031105, -1119796702, -1110210301)\n\t\t + W(11, -1132188582, -1117810092, 1021012754, -1118338222);\n\tsum2 =\n\t\tW(0, -1113854255, 1028862084, -1104900936, -1104116954) + W(1, -1114719178, 1040474278, 1048817634, -1122519186)\n\t\t+ W(2, -1108417433, 1033605964, -1109151867, -1102487521)\n\t\t+ W(3, -1071728118, -1073652757, -1090221130, -1102125815)\n\t\t+ W(4, 1042382895, 1032534216, 1017793091, 1067799294) + W(5, 1077900204, 1051278318, 1048299521, -1105402373)\n\t\t+ W(6, 1025435556, 1033584957, 1033281558, -1099286824) + W(7, 1056033422, -1113833767, 1011833167, -1107682623)\n\t\t+ W(8, -1108154666, 1046901615, -1111336587, 1036137805) + W(9, 1024983956, 1034492621, 1033542750, -1127962013)\n\t\t+ W(10, 1042045079, -1105415159, 1039313065, 1005958605)\n\t\t+ W(11, 1020191839, -1114752489, 1024757388, 1032711916);\n\tWS(-1087701164, 1071308133);\n\tsum1 = W(0, 1040776942, -1112915908, 1032135583, -1109010607)\n\t\t + W(1, -1125896234, 1033070381, 1001383873, -1127540900)\n\t\t + W(2, -1100025248, 1039729431, -1111499300, 1047911115)\n\t\t + W(3, -1096854047, 1047586960, -1100475875, 1025720505)\n\t\t + W(4, 1040244657, -1108101926, -1107965963, -1095250332)\n\t\t + W(5, -1097276733, -1104060437, -1129328465, -1115131352)\n\t\t + W(6, 1047131214, -1104971284, 1036283892, 1057920197) + W(7, 1057601759, 1046835436, 1017446731, 1041767855)\n\t\t + W(8, -1116520012, -1123736282, -1105297773, 1040789767)\n\t\t + W(9, -1089523085, 1046328829, -1107686492, 1031878575)\n\t\t + W(10, -1152028354, -1120800451, 1024489952, 1038925278)\n\t\t + W(11, 1034463851, -1130324381, -1112186573, 1015088161);\n\tsum2 = W(0, -1089646175, -1112379036, -1087427677, -1088789602)\n\t\t + W(1, 1059010203, 1060985431, -1139584980, 1054225000) + W(2, 1060062242, 1018139178, 1066898400, 1066001716)\n\t\t + W(3, -1079880526, -1081253059, -1095878540, -1095013927)\n\t\t + W(4, 1050551269, -1096611550, -1116330565, 1056235229)\n\t\t + W(5, -1118197619, -1102574794, 1039647840, -1099698701)\n\t\t + W(6, 1017421696, 1040955729, 1035645225, 1040223965) + W(7, -1114176344, 1044677785, -1100382074, 1035015292)\n\t\t + W(8, -1124178965, -1115297526, -1111832492, 1027731712)\n\t\t + W(9, -1106279788, -1130074994, 1040262609, -1124507789)\n\t\t + W(10, 1023971829, -1112174927, 1035838465, -1128027042)\n\t\t + W(11, 1015547306, 1033729011, -1110899873, 1032866060);\n\tWS(1063980716, -1121784884);\n\tsum1 =\n\t\tW(0, 1027357276, -1104528667, -1122859745, -1107033792)\n\t\t+ W(1, -1105809438, 1033196814, -1111338526, -1111105883)\n\t\t+ W(2, 1046480497, -1121849329, 1049050976, 1046903620) + W(3, -1128776604, 1050194992, -1112079704, 1037688238)\n\t\t+ W(4, -1094692773, -1090457523, -1090130146, -1084796508)\n\t\t+ W(5, -1089370535, -1105629197, -1093813713, -1094775914)\n\t\t+ W(6, 1050884987, 1048987838, 1057733925, 1061180023) + W(7, 1054317580, 1055134019, 1046804578, 1057027842)\n\t\t+ W(8, 1046796692, -1098583576, 1037378828, 1034725880) + W(9, -1096435840, 1049629536, -1097780651, 1038664949)\n\t\t+ W(10, 1025153935, -1107151594, 1016110982, 1023598816)\n\t\t+ W(11, -1114135692, 1040596522, -1113598601, -1127372967);\n\tsum2 =\n\t\tW(0, 1041589168, 1024315846, 1043663909, 1040621380) + W(1, 1040212968, 1033384296, 1014426993, 1022694293)\n\t\t+ W(2, -1098133521, -1106371173, -1106740015, -1107177437)\n\t\t+ W(3, -1111131552, 1040430896, 1032409853, 1003633577) + W(4, 1031854878, 1051327081, -1108849860, -1106409587)\n\t\t+ W(5, -1120392794, -1093765703, -1107120761, -1104283048)\n\t\t+ W(6, -1105720063, 1023684981, -1124767392, -1127108094)\n\t\t+ W(7, -1102248051, 1050935529, 1033359350, -1128561530)\n\t\t+ W(8, 1035016760, -1128261352, 1035542785, -1111599720) + W(9, 1051247500, -1102687331, 1037002974, 1026574958)\n\t\t+ W(10, -1121214780, 1011090873, 1029549000, 1034668152)\n\t\t+ W(11, -1136161665, 1018485311, -1126387868, 998242826);\n\tWS(1047153326, -1105960410);\n\tsum1 = W(0, 1032318440, -1133035902, 1023033002, -1111741083)\n\t\t + W(1, 1009988015, -1126171361, -1183551252, -1118067977)\n\t\t + W(2, -1105871782, 1024269605, -1110369667, 1047130673)\n\t\t + W(3, 1043587009, -1113373146, 1035984354, -1111622952)\n\t\t + W(4, -1111485966, -1098984649, 1050315790, -1080272088)\n\t\t + W(5, -1086889743, -1098309317, -1105786176, -1106267538)\n\t\t + W(6, 1043448020, 1044051929, 1059563250, 1053459949) + W(7, 1061038806, 1044456898, 1048086975, 1037611273)\n\t\t + W(8, -1110710801, 1028564080, -1113831750, 1024144723)\n\t\t + W(9, -1117616080, -1145766181, -1114741783, 1040212689)\n\t\t + W(10, 1019497606, 1019882933, -1118335287, 1018957863)\n\t\t + W(11, -1122250988, -1124691083, -1123242346, -1150984053);\n\tsum2 = W(0, -1132142402, 1019405455, 1022592575, 1002713172) + W(1, 993592760, -1120241477, 1024283135, -1139068036)\n\t\t + W(2, -1109262360, 1034679642, -1099677890, 1048612806)\n\t\t + W(3, 1036415285, -1118742739, -1125545553, -1129249399)\n\t\t + W(4, 1044069954, -1104355470, -1119884477, -1094376769)\n\t\t + W(5, -1110824904, 1031998111, -1128336378, 1030577347)\n\t\t + W(6, -1111364284, -1108806456, -1066728208, 1079847520)\n\t\t + W(7, 1060715429, -1103911380, 1028262793, -1127589036)\n\t\t + W(8, 1031679549, -1097044621, 1043056057, 1057366851) + W(9, -1104696735, 993276152, 1012785110, -1133646774)\n\t\t + W(10, 1018817977, 1034241557, 988348592, -1114461524)\n\t\t + W(11, -1107038514, 1036085605, -1128734189, -1182233281);\n\tWS(1056964652, 1042968547);\n\tsum1 = W(0, 1026864302, -1136392949, 1024389106, -1126999334)\n\t\t + W(1, 1026043785, -1130628252, 1000688741, 1002882868) + W(2, 1044356666, 1026146499, 1030265493, 1038248593)\n\t\t + W(3, -1126651679, -1146035092, 986691602, 1033146167) + W(4, -1111481597, 1051097712, 1040695131, 1052760426)\n\t\t + W(5, 1056669112, 1038264227, 1027446877, 1040116499)\n\t\t + W(6, -1091567350, -1098882624, -1090350559, -1081953599)\n\t\t + W(7, -1095456258, -1102468122, -1109487565, -1110909592)\n\t\t + W(8, 1041608192, 1029687022, 1042991030, 1043333208) + W(9, 1044232931, 1038520784, 1033386798, 1040618297)\n\t\t + W(10, 1008927875, -1130908784, -1127664937, -1121268145)\n\t\t + W(11, 952128323, -1146879000, -1137895230, 1023066122);\n\tsum2 =\n\t\tW(0, -1155037894, -1117766868, 1042293027, 1004126723) + W(1, -1123150924, 1015608713, -1135323377, 1030487760)\n\t\t+ W(2, -1109445776, -1132308185, -1101307898, 995397702) + W(3, 1014206993, 1046458351, -1120597884, 1026431488)\n\t\t+ W(4, -1106399184, 1041934367, -1137539889, 1035303811)\n\t\t+ W(5, -1091518060, -1124849601, 1043824666, 1061366644) + W(6, 1052866656, -1111172948, 1058738313, 1064268129)\n\t\t+ W(7, 1052685347, -1090299347, -1087905074, -1075431372) + W(8, 1046069094, 1042904039, 1045435531, 1051607279)\n\t\t+ W(9, -1098813712, -1150133894, 1037110006, -1089430426)\n\t\t+ W(10, 1012439553, -1108172404, -1110297962, -1110625272)\n\t\t+ W(11, -1107185126, 1045339946, -1122419536, 1049588119);\n\tWS(-1096061015, 1045980634);\n\tsum1 =\n\t\tW(0, -1136709393, 1028828435, 997001355, 1022855123) + W(1, -1128346047, 1031977874, 984865373, 1040707047)\n\t\t+ W(2, 1047345176, 1016418418, 1049157941, 1032879612) + W(3, 1042754713, 1032419332, -1124110958, 1040469689)\n\t\t+ W(4, -1089944925, -1096285771, -1094897728, -1097979037)\n\t\t+ W(5, 1014307589, 1040846151, 1042092045, 1041011167) + W(6, -1113534082, 1049565603, -1113216951, -1094660427)\n\t\t+ W(7, 1031601097, -1095562472, -1109834744, -1093905225) + W(8, 1020871950, 1021274185, 1042276288, 1039512084)\n\t\t+ W(9, 1028680388, 1044068336, -1140756488, 1048548616) + W(10, 1032683291, 1018404508, 1027484139, -1119890439)\n\t\t+ W(11, 1030972704, -1125789619, 1031142826, -1123584299);\n\tsum2 =\n\t\tW(0, -1114682679, -1115477579, -1100789101, -1113658391) + W(1, -1110942733, 1044868728, 1028313432, 1046472362)\n\t\t+ W(2, 1055059251, 1024869090, 1055732865, -1122542034)\n\t\t+ W(3, -1120682294, -1107016239, -1152832742, -1087243594)\n\t\t+ W(4, 1064739409, 1031266096, 1030176534, 1067742275) + W(5, 1062911121, -1081471397, -1080677577, -1077241450)\n\t\t+ W(6, -1095220576, -1113806527, 1040530242, 1036337974) + W(7, -1087169731, 1042181045, 1042749891, 1067213860)\n\t\t+ W(8, -1100660553, -1105830101, -1096186716, -1103152959)\n\t\t+ W(9, 1035448471, 1052603278, 1033558186, 1052345796) + W(10, 1038444345, -1132048253, 1040636888, 1015520805)\n\t\t+ W(11, 1032588114, -1102136445, -1134141481, -1112398105);\n\tWS(-1086603372, 1061480206);\n\tsum1 = W(0, 1025472273, -1143591172, -1124123051, -1110008795)\n\t\t + W(1, -1124248793, -1127491490, 1014214528, -1120184170)\n\t\t + W(2, 1022341006, 1027469190, -1141108008, 1042054049) + W(3, 1051331968, 1044174205, 1044005681, -1155225358)\n\t\t + W(4, 1006839158, -1128153798, 1051787090, -1090097115)\n\t\t + W(5, -1081435553, -1089913687, -1092574472, -1096696337)\n\t\t + W(6, -1102342404, -1124925900, -1093885235, 1058414043)\n\t\t + W(7, 1063214861, 1057428893, 1052102264, 1048742922) + W(8, 1042514621, 1043263108, 1027880941, -1105821275)\n\t\t + W(9, -1094479791, -1099759469, -1112069887, 1035771431)\n\t\t + W(10, -1114893026, -1114252238, -1121794488, 1039892842)\n\t\t + W(11, 1028544109, 1041669328, 977928239, 1039400116);\n\tsum2 =\n\t\tW(0, 1037224808, -1109009263, -1120793535, -1110258597)\n\t\t+ W(1, -1112240446, -1151274598, -1120536233, -1103902982)\n\t\t+ W(2, 1025638319, 1049599085, -1142324554, 1028269513) + W(3, -1132053081, -1119573384, 1010517574, 1008384356)\n\t\t+ W(4, -1093017633, 1039705537, 1040559103, 1053657173) + W(5, -1120149375, 1043501160, -1121251494, 1035850418)\n\t\t+ W(6, -1143762368, -1112746506, -1099136162, 1056581815)\n\t\t+ W(7, -1118127758, -1147801478, -1130373692, 1032229723)\n\t\t+ W(8, -1119609796, -1119534458, -1123476586, -1104556193)\n\t\t+ W(9, 1044376501, -1107739102, 1033895801, -1122521676) + W(10, 995865588, 1021427773, 988834049, -1122952792)\n\t\t+ W(11, -1114993482, 1029987722, -1106681926, -1116132116);\n\tWS(1037058908, -1087106898);\n\tsum1 = W(0, 1032385376, 1028077583, 1014613011, -1151370839) + W(1, -1139761263, 1027279360, 1022565566, 1031834108)\n\t\t + W(2, 1026637522, -1129390954, 1048467894, 1048758199) + W(3, 1043852440, 1034990442, 1017011558, 1036138504)\n\t\t + W(4, -1098495714, -1107088868, -1108180359, -1093334653)\n\t\t + W(5, -1108393155, -1097414435, -1111470776, -1104527470)\n\t\t + W(6, 1041048768, 1041268325, 1045140885, -1080472255) + W(7, 1045570315, 1045361342, 1028923180, 1036330497)\n\t\t + W(8, 1039729665, -1126519617, 1040649531, -1114665834)\n\t\t + W(9, -1125126080, 1035082182, 1023808326, 1027790590) + W(10, 1017191910, -1132138900, 1035348883, 997380151)\n\t\t + W(11, 1031307292, 1030937245, -1138594135, 1036519916);\n\tsum2 = W(0, -1111516802, 1036231024, -1130951686, 1031916934)\n\t\t + W(1, -1130989326, -1129631002, -1123615369, -1119469958)\n\t\t + W(2, -1131222514, -1098228691, 1034905648, -1090487171)\n\t\t + W(3, 1032129266, 1035677128, -1103168970, 1049196148)\n\t\t + W(4, -1097346809, -1128682274, -1113861539, 1052765954)\n\t\t + W(5, -1108538807, -1122282521, 1038239484, -1116187122)\n\t\t + W(6, 1049467820, 1020406578, 1024259929, 1061096371)\n\t\t + W(7, -1104129123, -1108918961, -1114584358, -1129232626)\n\t\t + W(8, -1118099733, -1102087439, 1049541587, -1108988196)\n\t\t + W(9, 1033200380, 1042713844, -1097598443, 1018354634)\n\t\t + W(10, -1111393075, 1039222222, -1113826501, 1025340241)\n\t\t + W(11, 1029417921, -1111528334, 1034012496, 1029857705);\n\tWS(1054906071, -1091145324);\n\tsum1 =\n\t\tW(0, 1029398237, -1140775857, -1128656451, 1004160018) + W(1, -1130732913, 1029686973, 1021855224, -1128798955)\n\t\t+ W(2, -1120406171, -1106052861, -1099422950, 1032725545)\n\t\t+ W(3, -1097841652, 1037934865, 1036573848, -1157619404) + W(4, 1051536197, 1046952684, 1057886666, -1085942396)\n\t\t+ W(5, -1098611557, 1042440654, 1035129734, 1032622058)\n\t\t+ W(6, -1115196942, -1109008729, -1097962977, -1130426984)\n\t\t+ W(7, 1048146402, 1034532491, -1122054089, 1027356128) + W(8, -1136290815, 1034481647, -1114344740, 1050651652)\n\t\t+ W(9, -1102043591, -1133864753, -1124817654, -1126847669)\n\t\t+ W(10, -1126429728, 1032555988, 1015919623, -1108426832)\n\t\t+ W(11, 1040987294, -1107032303, 1044439941, -1115113714);\n\tsum2 = W(0, -1113802973, -1116219822, 1020553430, -1109755343)\n\t\t + W(1, -1131329246, -1112950186, -1113313093, -1116367256)\n\t\t + W(2, 1027581315, -1112877584, -1110295429, 1027296115)\n\t\t + W(3, -1126007358, 1035099341, -1130784978, 1035863861)\n\t\t + W(4, -1110955855, -1127685514, -1097495000, 1025841055)\n\t\t + W(5, -1104102640, -1110724235, -1165405916, -1097352168)\n\t\t + W(6, 1047020911, 1021259086, 1057623683, 1053623791) + W(7, 1057318729, 1040083835, 1048620928, 1039940909)\n\t\t + W(8, -1105727831, -1118276653, -1110729082, -1104267868)\n\t\t + W(9, -1106795812, -1119773745, -1128480210, -1110646461)\n\t\t + W(10, 1022816774, -1129541322, 997980814, 1016281450)\n\t\t + W(11, -1105649969, 1031563375, -1111917112, 1032754595);\n\tWS(1063926444, -1083200389);\n\tsum1 =\n\t\tW(0, -1110900111, 1015785179, -1132926346, 1034778082) + W(1, 1029162938, 1024169214, 1031086749, -1116484151)\n\t\t+ W(2, 1049653262, -1116391059, 1048988121, -1111931241)\n\t\t+ W(3, 1002973694, -1107911937, -1104277444, -1114837807)\n\t\t+ W(4, -1089993663, -1106495964, -1104923071, 1061854120) + W(5, 1062129309, 1059656227, 1047872627, 1055218483)\n\t\t+ W(6, 1052688460, 1038385529, 1045396422, -1089207439)\n\t\t+ W(7, -1085048198, -1087799869, -1096506545, -1096830980)\n\t\t+ W(8, -1098055945, -1108169455, -1110654965, -1111176153)\n\t\t+ W(9, 1042255343, 1043917388, 1012240783, 1049045741) + W(10, 1042131972, -1121748392, 1039495970, -1117097761)\n\t\t+ W(11, -1120523578, -1106362715, 1011366638, -1098874335);\n\tsum2 = W(0, 1031260311, 1008713252, -1110413739, -1108083749)\n\t\t + W(1, 1024382525, -1107516795, 1032742989, -1107429215)\n\t\t + W(2, -1079593190, -1080879443, -1099919153, 1067198745)\n\t\t + W(3, 1061544601, 1037733964, 1034769578, 1037726418) + W(4, -1121246507, 1035854140, 1040572163, -1111993270)\n\t\t + W(5, 1060638292, -1122943484, -1098923291, 1034609836)\n\t\t + W(6, -1113337443, 1043424734, -1112705599, -1102589461)\n\t\t + W(7, 1044789771, 1040341398, -1116338100, 1030676197) + W(8, 985022717, -1123981203, 1028350097, 1035118406)\n\t\t + W(9, -1119559917, -1123835438, 1021760610, -1114867192)\n\t\t + W(10, 1032096214, -1130846658, -1119780465, 1007072124)\n\t\t + W(11, -1132931022, -1131952682, 1028149723, -1115680064);\n\tWS(-1091090263, 1040227933);\n\tsum1 =\n\t\tW(0, -1123880467, -1114808049, 1014154590, 1032220316) + W(1, 1018131933, -1121223347, -1128795491, 1008528046)\n\t\t+ W(2, -1113261184, 1027485320, -1101480756, 1043855170) + W(3, -1088775234, 1021676847, 1031227206, 1026364723)\n\t\t+ W(4, 1033284496, 1019377225, -1102787036, -1094753319) + W(5, 1065098078, -1107869654, 1045897152, 1025551690)\n\t\t+ W(6, 1044923332, -1098653061, 1059927492, 1040011797)\n\t\t+ W(7, -1099661886, -1151140018, -1113799968, -1125551659)\n\t\t+ W(8, -1105999782, 1042536309, -1095990282, 1044858269)\n\t\t+ W(9, -1091964998, 1045062557, -1109510984, 1023695008)\n\t\t+ W(10, -1135767575, -1127683258, 1037484605, -1120454550)\n\t\t+ W(11, 1029352975, -1109078132, 1027724204, 1006311503);\n\tsum2 = W(0, -1123304381, 1011470018, -1116901758, 1029761957)\n\t\t + W(1, -1135722528, -1111769341, -1107033568, 1032808415)\n\t\t + W(2, -1135928985, -1131363804, 1044779190, -1101932196)\n\t\t + W(3, -1097334030, 994986369, 1042173475, 1025113569) + W(4, 1039889929, 1045400660, -1100997480, 1055172736)\n\t\t + W(5, -1087140500, 1054550160, -1110305303, -1115908038)\n\t\t + W(6, -1113522433, -1100907702, -1104972678, 1058841413)\n\t\t + W(7, 1039800739, -1122473050, -1109069053, 1032761157)\n\t\t + W(8, -1108136941, 1038781261, 1052809383, -1093286229)\n\t\t + W(9, 1034962749, -1105965260, 1038676003, -1155418681)\n\t\t + W(10, 1038356153, -1139124254, -1105005165, 1040780481)\n\t\t + W(11, -1105451984, 1042887374, -1114167820, -1152192529);\n\tWS(1063982124, 1031276218);\n\tsum1 = W(0, 1041442545, -1103090149, 1042807746, 1024468200)\n\t\t + W(1, -1106882536, 1049721332, -1101888878, 1042454319)\n\t\t + W(2, 1031361481, 1026538936, -1101400314, 1034898060)\n\t\t + W(3, -1103132501, -1112916420, -1139074135, -1110788513)\n\t\t + W(4, 1056936890, 1055470587, 1060963845, 1061353486) + W(5, 1063510555, 1048946651, 1054541302, 1058321972)\n\t\t + W(6, -1090353464, -1090262005, -1096383728, -1078114170)\n\t\t + W(7, -1106902698, -1088793180, -1098771630, -1093460753)\n\t\t + W(8, -1122143798, -1101092681, 1031723710, -1122232454)\n\t\t + W(9, 1043143621, -1172995470, 1032268200, -1104729748)\n\t\t + W(10, 1007942615, 1040474995, -1103896066, 1027975174)\n\t\t + W(11, 1030475455, -1101011290, 1044176219, -1108198577);\n\tsum2 = W(0, 1015674059, 1034996578, 1026624942, -1128049054) + W(1, 999367802, 1021382702, -1124407536, 1029480964)\n\t\t + W(2, -1109357907, 1024785272, -1129998179, -1120348186)\n\t\t + W(3, 1048014132, -1105300006, 1046166047, -1116382211)\n\t\t + W(4, 1031332447, 1048659656, -1108514478, 1052415888)\n\t\t + W(5, -1105319294, -1117149322, 1010482847, -1154249511)\n\t\t + W(6, 1066992274, 1076858856, 1078632808, 1073772904) + W(7, -1105884909, 1038594495, 1038514249, -1098756758)\n\t\t + W(8, -1074609058, -1070866381, -1068251573, -1076608801)\n\t\t + W(9, -1103939197, -1109221944, -1098022157, -1125235504)\n\t\t + W(10, 1048304191, 1030261153, -1098508369, -1108782845)\n\t\t + W(11, 1048310856, 1031934850, 1046147873, 1038709270);\n\tWS(-1084008748, -1076428689);\n\tsum1 = W(0, 995293936, -1162911689, -1138016718, -1132274729)\n\t\t + W(1, -1145295444, -1131268254, -1201649403, -1135278623)\n\t\t + W(2, -1119372516, 1036299874, 1017340780, 1041960361) + W(3, 1044385332, 1034368866, 1043013720, -1103541652)\n\t\t + W(4, -1088304948, -1097059736, -1085861109, -1081600491)\n\t\t + W(5, -1083799507, -1090459925, -1104403080, -1103180426)\n\t\t + W(6, 1059786207, 1051547992, 1060565598, 1064118968) + W(7, 1058261310, 1050466917, 1049921019, 1042671596)\n\t\t + W(8, -1137964103, -1125552990, -1116363658, -1116908178)\n\t\t + W(9, -1119006543, 1026422690, -1131911306, 1051353751)\n\t\t + W(10, 1013109895, 1006687204, 1002349741, 1007519945)\n\t\t + W(11, 994300076, -1119097260, -1123993357, 1023041036);\n\tsum2 =\n\t\tW(0, 1033856632, 1041148647, -1094518814, 1045521814) + W(1, -1128266986, 1033117136, -1173165821, 1041230368)\n\t\t+ W(2, -1090933982, -1094617784, -1122277735, 1062250596)\n\t\t+ W(3, 1027053741, 1050179515, 1033890948, -1086799133) + W(4, 1068958128, 1066199400, 1055138982, -1070105649)\n\t\t+ W(5, -1070096660, -1082392713, 1067349236, 1076979077)\n\t\t+ W(6, 1067844920, -1102124443, 1051248434, -1078683071)\n\t\t+ W(7, -1079091570, -1089309992, 1047411220, 1070525583)\n\t\t+ W(8, -1095515318, -1122244574, 1036900546, 1046136146) + W(9, 1021983978, 1045719314, 1050937215, -1091587052)\n\t\t+ W(10, -1124923033, 1042779533, -1103088355, -1114411292)\n\t\t+ W(11, -1114099181, 1023274434, -1124200313, 1042022635);\n\tWS(-1081223670, 1021288719);\n\tsum1 = W(0, 1011016529, -1123721507, 1017381041, 1017648243) + W(1, 1028006000, -1122128468, 1009660876, 1007983923)\n\t\t + W(2, 1035837139, 1032041909, -1108640782, 1024313608)\n\t\t + W(3, -1105590117, -1108791100, -1128783630, -1116825572)\n\t\t + W(4, 1042651768, 1036928499, 1055254255, 1061777248) + W(5, 1061429156, 1052534382, 1049990152, 1053483289)\n\t\t + W(6, -1098433890, -1100608474, -1094722148, -1083909329)\n\t\t + W(7, -1087617676, -1091388554, -1104773376, -1093454083)\n\t\t + W(8, -1129696110, 1024607124, -1131079071, 1047474926)\n\t\t + W(9, 1036831026, 1033276873, -1150770463, 1005912461) + W(10, 995272815, 1027549342, -1116321147, 1017435439)\n\t\t + W(11, -1122084432, -1139273509, 1024807730, -1125665142);\n\tsum2 = W(0, 1057380038, 1057597982, 1069621581, 1060801069) + W(1, 1060050844, 1041938366, -1122435905, 1024344515)\n\t\t + W(2, -1088994983, -1085734595, -1072283812, -1079782207)\n\t\t + W(3, -1081640783, 1046270010, -1113922524, 1043446590) + W(4, 1016685185, 983594263, 1066773393, 1060848632)\n\t\t + W(5, 1043641192, -1105013658, -1104981345, -1105295106)\n\t\t + W(6, 998662038, 1031174835, -1099503122, -1097910780) + W(7, 1038323247, 1026094487, 1036576275, -1145544806)\n\t\t + W(8, 1040844632, -1116219635, -1134907857, 1027931069)\n\t\t + W(9, -1111695032, 1047921746, -1114519002, 1032973176)\n\t\t + W(10, 1027712021, -1109851055, 1037507283, -1116080368)\n\t\t + W(11, -1123552119, 1028446195, -1108250726, 1031771441);\n\tWS(-1120405176, 1052288640);\n\tsum1 =\n\t\tW(0, -1136485047, -1120969533, 1032711321, 1027237267) + W(1, 1021305874, -1146847086, -1133175986, 1039673939)\n\t\t+ W(2, 1040656325, 1013423883, -1108004548, -1107763377) + W(3, 1022040031, 1040265357, 1031093856, -1100629595)\n\t\t+ W(4, 1051431647, 1042796768, 1062809491, 1060861813) + W(5, 1027813500, -1107918083, 1039657966, 1043412169)\n\t\t+ W(6, -1114886102, -1092939904, -1083705303, -1089040632)\n\t\t+ W(7, 1039332409, -1098943929, -1112315213, -1104541036)\n\t\t+ W(8, -1113721480, 1039390695, 1026161897, -1116341945)\n\t\t+ W(9, -1108229347, 1035322940, -1115465454, -1114748782)\n\t\t+ W(10, -1115542032, -1165530871, 1020434857, 1024821617)\n\t\t+ W(11, 1031183209, 1019272038, 1024346473, 1012723731);\n\tsum2 =\n\t\tW(0, 1032873736, -1106233681, 1036788040, 1009987037) + W(1, -1117147579, 1018109057, -1114508674, -1106556966)\n\t\t+ W(2, -1128467212, -1131275971, -1113770947, -1088748320)\n\t\t+ W(3, -1097209973, 1040210251, -1099376356, 1050939532)\n\t\t+ W(4, -1098460251, 1035809416, -1078975662, 1062703231) + W(5, 1059662245, -1110493560, 1052516052, 992650581)\n\t\t+ W(6, 1024553592, -1114616785, -1092555656, 1067981395) + W(7, 1058574054, -1103422592, 1038056552, 1026754378)\n\t\t+ W(8, 1047433570, 1026776904, -1132131619, -1104531393)\n\t\t+ W(9, -1106248497, -1125640736, -1107638185, -1107493388)\n\t\t+ W(10, -1128334191, -1107845863, 1043173677, -1111351589)\n\t\t+ W(11, 991598885, -1107997815, 1023829740, -1106870741);\n\tWS(1050656983, 1072047790);\n\tsum1 = W(0, -1128713579, 1026709637, 1023201012, 1030859291)\n\t\t + W(1, 1041237492, -1152997210, -1155686725, 1040488948)\n\t\t + W(2, 1048792739, 1034799517, 1014670385, -1116111658) + W(3, 1025355287, -1112906461, 1036463444, 1002270506)\n\t\t + W(4, 1050333168, 1050171449, 1053203577, 1064066450) + W(5, 1060032700, 1050694506, 1053095469, 1046913707)\n\t\t + W(6, -1097949975, -1104033571, -1085647978, -1080119690)\n\t\t + W(7, -1088145917, -1088560507, -1105136840, -1093840327)\n\t\t + W(8, -1101689274, 1036522731, -1115538280, 1043957990)\n\t\t + W(9, 1037919995, -1120212113, 1035379762, -1108210918)\n\t\t + W(10, -1127716817, 1037025856, -1116963676, -1112813084)\n\t\t + W(11, 1036783049, -1113565993, 1035776666, -1122514141);\n\tsum2 =\n\t\tW(0, 1032121925, -1105031648, -1130820039, -1105961083) + W(1, 1040237041, -1091675607, 1052906990, -1119953618)\n\t\t+ W(2, 1067037293, 1072414374, 1072723545, 1076922042) + W(3, 1072846596, -1079373087, 1048404715, -1090018360)\n\t\t+ W(4, -1074821338, -1081225596, -1069168235, -1068908234)\n\t\t+ W(5, 1068735095, 1050158994, 1043049709, 1036354441) + W(6, -1094551116, 1050387420, 1050306407, -1080768789)\n\t\t+ W(7, -1110799161, 1048692149, 1039557097, -1114340558) + W(8, 1045030197, 1035683027, 1054464199, -1129129027)\n\t\t+ W(9, -1109242003, -1102086715, 1050068036, -1106557101)\n\t\t+ W(10, -1115959604, -1117669800, -1109697271, -1106200850)\n\t\t+ W(11, 1041008693, -1107790175, 1019897614, 1034398799);\n\tWS(-1081468886, 1041730784);\n\tsum1 = W(0, -1114247594, 999910687, -1112649805, 1022168820) + W(1, 1009392321, 1025791509, -1115410306, 1020540891)\n\t\t + W(2, 1021500053, 1042624634, 1043096639, 1034747044) + W(3, -1103886814, -1101453262, 1026735815, 1034256626)\n\t\t + W(4, 1028761377, 1005300019, -1100727404, 1035906940) + W(5, 1062898916, 1054732110, 1042621601, 1041116931)\n\t\t + W(6, 1044129269, 1053438789, 1055682820, -1086991443)\n\t\t + W(7, -1084075064, -1098009154, -1097832968, -1117544535)\n\t\t + W(8, -1131183895, -1096850135, -1106832988, 1038040260)\n\t\t + W(9, 1044548897, 1037861846, 1022910341, -1121491970)\n\t\t + W(10, -1121682823, 1029411807, 1022343799, -1113521452)\n\t\t + W(11, -1110992968, -1110478453, -1125653940, -1112646442);\n\tsum2 = W(0, -1109856908, 995541592, -1107331629, 1043476326)\n\t\t + W(1, -1104942022, 1039471517, -1114856041, 1022399907) + W(2, 1025315462, 1040254152, 1035675473, 1026228130)\n\t\t + W(3, -1101803200, -1123010638, 1040268905, 1028920354)\n\t\t + W(4, -1111613060, 997512408, -1115826672, 1067108106)\n\t\t + W(5, 1053887552, -1104388416, -1120685867, -1103458923)\n\t\t + W(6, -1108093549, -1085520225, -1103361463, 1059978555)\n\t\t + W(7, -1094292172, -1120534147, -1108094032, 1040596394)\n\t\t + W(8, 1041489120, -1094645099, -1102705141, -1121534122)\n\t\t + W(9, 1039802977, 1017265579, 1040793483, -1107135380)\n\t\t + W(10, -1114414815, 1040714423, -1125997775, 1032256197)\n\t\t + W(11, -1130615251, -1129091643, -1108206349, 1027593934);\n\tWS(1054796503, -1111794816);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[555];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define temp_tex(pos) (float(texture(temp, pos).x))\nstatic const float2 temp_size = float2(GetInputSize().x * 1, GetInputSize().y * 2);\nstatic const float2 temp_pt = float2(1.0 / (temp_size.x), 1.0 / (temp_size.y));\n\n#define HOOKED_tex(pos) temp_tex(pos)\n#define HOOKED_size temp_size\n#define HOOKED_pt temp_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 555; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (2)) + 0.5, float(group_base.y + y - (3)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[12];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 6];\n\tsamples[1][3] = inp[local_pos + 7];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 19];\n\tsamples[3][1] = inp[local_pos + 20];\n\tsamples[3][2] = inp[local_pos + 21];\n\tsamples[3][3] = inp[local_pos + 22];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 32];\n\tsamples[4][3] = inp[local_pos + 33];\n\tsamples[5][0] = inp[local_pos + 34];\n\tsamples[5][1] = inp[local_pos + 35];\n\tsamples[5][2] = inp[local_pos + 36];\n\tsamples[5][3] = inp[local_pos + 37];\n\tsamples[6][0] = inp[local_pos + 45];\n\tsamples[6][1] = inp[local_pos + 46];\n\tsamples[6][2] = inp[local_pos + 47];\n\tsamples[6][3] = inp[local_pos + 48];\n\tsamples[7][0] = inp[local_pos + 49];\n\tsamples[7][1] = inp[local_pos + 50];\n\tsamples[7][2] = inp[local_pos + 51];\n\tsamples[7][3] = inp[local_pos + 52];\n\tsamples[8][0] = inp[local_pos + 60];\n\tsamples[8][1] = inp[local_pos + 61];\n\tsamples[8][2] = inp[local_pos + 62];\n\tsamples[8][3] = inp[local_pos + 63];\n\tsamples[9][0] = inp[local_pos + 64];\n\tsamples[9][1] = inp[local_pos + 65];\n\tsamples[9][2] = inp[local_pos + 66];\n\tsamples[9][3] = inp[local_pos + 67];\n\tsamples[10][0] = inp[local_pos + 75];\n\tsamples[10][1] = inp[local_pos + 76];\n\tsamples[10][2] = inp[local_pos + 77];\n\tsamples[10][3] = inp[local_pos + 78];\n\tsamples[11][0] = inp[local_pos + 79];\n\tsamples[11][1] = inp[local_pos + 80];\n\tsamples[11][2] = inp[local_pos + 81];\n\tsamples[11][3] = inp[local_pos + 82];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 33];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(2, 1);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1) + ivec2(1, 0), ret);\n}\n"
  },
  {
    "path": "src/Effects/NNEDI3/NNEDI3_nns32_win8x4.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: nnedi3.py --nns 32 --win 8x4 --use-compute-shader --use-magpie\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME NNEDI3_032_4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 1 * 2\n//!HEIGHT INPUT_HEIGHT * 2 * 1\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH * 1\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D temp;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_temp;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC NNEDI3 (double_y, nns32, win8x4)\n//!IN INPUT\n//!OUT temp\n//!BLOCK_SIZE 32, 16\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[8]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 8; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 32.0;\n\tfloat mstd1 = sumsq / 32.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, 1036208225, -1091571194, 1048590727, 1032174663) + W(1, 1039469975, -1095740683, 1028885330, 1026075554)\n\t\t + W(2, 1027560868, -1097328754, 1039928979, 1023201972) + W(3, 1039536921, 1025116802, 1017576356, 1042058704)\n\t\t + W(4, -1144450173, 1043923973, -1098962113, 1033278580)\n\t\t + W(5, 1035622988, 1049700439, -1090255529, 1046104373) + W(6, 1024461970, 1024545936, -1100301043, 1035224848)\n\t\t + W(7, 1029776426, 1047463785, -1090407950, 1043393326);\n\tsum2 =\n\t\tW(0, -1098253927, 1055965966, 1006679350, -1096709168) + W(1, -1166389754, -1101782718, 983512221, -1105895383)\n\t\t+ W(2, -1106582410, 1045236553, -1097283179, 1040768379)\n\t\t+ W(3, 1034460863, -1132225959, -1090237017, 1030302550) + W(4, 1027738130, 1057568628, 1036184228, -1111760224)\n\t\t+ W(5, -1113669665, 1055278331, -1133967067, 1033275358)\n\t\t+ W(6, 1016925525, -1127810369, 1022264595, -1104949250)\n\t\t+ W(7, -1129223232, -1108092808, 1009711002, 1045297871);\n\tWS(-1080723616, -1076327864);\n\tsum1 =\n\t\tW(0, 1017315691, -1106293281, 1041272315, -1113397025) + W(1, -1140602116, 1024505865, -1129176587, 1022464939)\n\t\t+ W(2, 1037257964, -1101486193, 1040932726, 1024865293) + W(3, -1107192473, 1027220277, -1098639185, 1043879330)\n\t\t+ W(4, 1022003974, 1032001763, 1032224091, -1118929755) + W(5, 1022805527, -1106692027, 1038889695, -1123579783)\n\t\t+ W(6, 1021604747, 1020788295, 1019749115, -1117432531) + W(7, 1014959990, -1109388172, 1036681163, 998707020);\n\tsum2 = W(0, 1015755803, -1127131649, -1137718334, 1033341381)\n\t\t + W(1, -1140061902, 1016927815, -1129880851, 1024947773)\n\t\t + W(2, -1129835189, -1112279061, -1089663810, 1058036499)\n\t\t + W(3, 1032555441, -1095938931, -1069364926, 1079454606)\n\t\t + W(4, -1138877514, -1116204914, -1092530653, 1053318688)\n\t\t + W(5, -1123339814, 1009679614, -1148409052, 1022404175)\n\t\t + W(6, 1016646759, -1153656135, -1122312216, 1028043253)\n\t\t + W(7, -1165772366, -1146249364, 1018619187, 1025789685);\n\tWS(1058954560, 1004956589);\n\tsum1 =\n\t\tW(0, -1128607008, -1102342440, 1027139080, 1038455278) + W(1, 1038458494, -1105082889, -1147341058, -1156235011)\n\t\t+ W(2, 1047693245, -1085974686, 1057887999, -1103441674) + W(3, 1026348672, 1047296084, -1100046248, 1029167261)\n\t\t+ W(4, -1108459679, 1058722958, -1087115665, 1033885827)\n\t\t+ W(5, -1116524774, -1135229473, 1043502422, 1027001826) + W(6, 1024592800, 1019546620, 1020243248, -1124163292)\n\t\t+ W(7, -1117551096, -1122816147, 1043995308, 1023459588);\n\tsum2 =\n\t\tW(0, 1039897191, 1032715073, -1104821098, -1103487249) + W(1, -1116902056, 1035295215, -1120385367, -1118716257)\n\t\t+ W(2, -1115617116, 1051413477, 1060018690, -1091510775)\n\t\t+ W(3, -1116419565, -1089611288, -1132652148, 1048354743)\n\t\t+ W(4, -1121428266, 1039274043, 1008252604, 1040404198) + W(5, 1003022729, -1102315300, -1117381948, 1037629937)\n\t\t+ W(6, 1032782009, 1012620980, -1113601670, 1035102099)\n\t\t+ W(7, -1161229156, 1023483611, -1116040249, -1132320852);\n\tWS(-1088253760, -1127575790);\n\tsum1 = W(0, 1038728366, -1156102863, 1036225546, 1011512228) + W(1, 1033404580, 1042126700, -1111684630, 1043566527)\n\t\t + W(2, 1036121471, -1099951467, 1050604224, 1032168346)\n\t\t + W(3, 1045370723, -1083618166, -1088174091, 1050156122) + W(4, 994877095, 1040753147, -1098202972, 1037663513)\n\t\t + W(5, 1036217881, -1099186053, 1039701042, 1034991255) + W(6, 1012008372, 1033329669, 1015138122, 1030253051)\n\t\t + W(7, 1040247041, -1099351704, 1032444126, 1041638884);\n\tsum2 =\n\t\tW(0, 1030438042, -1147399085, -1093920639, -1109485523) + W(1, 1009286759, 1025260806, -1086940227, -1143426189)\n\t\t+ W(2, 1027607240, 1032031341, -1090745109, -1114490725) + W(3, 1019667875, 1065802217, 1049694895, -1135657207)\n\t\t+ W(4, -1113200383, 1046766533, -1117099650, 1032826151) + W(5, 1032828373, -1110418147, 1041550488, 1024844082)\n\t\t+ W(6, -1125602091, -1137630919, -1114583845, 993352218)\n\t\t+ W(7, 1008172775, -1119451994, 1034586333, -1137428855);\n\tWS(-1079364256, 1057874888);\n\tsum1 = W(0, 1038744583, 1023431711, -1097930673, 1027252187) + W(1, 1028964378, 1034807569, -1105253352, 1030066159)\n\t\t + W(2, 1038770168, 1043817591, -1095573950, 1037737491)\n\t\t + W(3, 1044691424, -1093522810, -1085514994, 1045101529)\n\t\t + W(4, 1039465822, 1033837359, -1111615463, 1019830473) + W(5, 1031872786, 1026052487, 1038514603, 1014931844)\n\t\t + W(6, 1031706975, 1024735357, 1029114647, 1030853165) + W(7, 1026510455, 1032349913, 1036441879, 1025856707);\n\tsum2 = W(0, -1110129969, 1023276596, 1028080466, -1115008651)\n\t\t + W(1, -1122608874, 1020476676, -1106237621, -1145788944)\n\t\t + W(2, -1109784187, 1055608478, -1110801543, -1135649000)\n\t\t + W(3, 1036903789, 1056514262, -1099727798, 1034305529) + W(4, 1016388156, -1122102418, 1033517697, 1019861916)\n\t\t + W(5, -1134147112, 1032271709, -1114242709, -1104837577)\n\t\t + W(6, 1025386706, -1109100200, -1110189468, 1027443202)\n\t\t + W(7, -1114085729, 1030585586, -1128034084, -1105665752);\n\tWS(-1091483264, -1079194671);\n\tsum1 = W(0, -1131351604, -1116837930, -1139989065, 1024497830)\n\t\t + W(1, -1113984995, 1032278999, 987288903, -1120582522)\n\t\t + W(2, 1021186040, -1099425098, 1055014512, -1105371085)\n\t\t + W(3, -1116327562, 1045060919, 1046630795, -1115581427)\n\t\t + W(4, -1132080655, 1054575181, -1092379987, 1026057008)\n\t\t + W(5, -1206829265, -1113261897, 1027226210, -1110689206)\n\t\t + W(6, 1023600234, -1130307600, -1122295330, -1130576880)\n\t\t + W(7, -1126861572, -1115285054, 1003385298, -1136751161);\n\tsum2 = W(0, -1129629424, 1004745569, 1012138921, 1021845392) + W(1, 1028468886, -1114381934, 1032075412, 1000184001)\n\t\t + W(2, -1120636360, 1032177433, -1114041388, 1017905952)\n\t\t + W(3, -1136732761, 1051604488, -1122709320, -1141636449)\n\t\t + W(4, 1036262769, -1115452378, -1105925279, -1138562729)\n\t\t + W(5, 1022425868, 1026786204, -1102674451, 1006971361)\n\t\t + W(6, 1019955588, -1123076816, 1002766561, -1146151969)\n\t\t + W(7, -1123045172, -1139760465, -1135173233, -1127921184);\n\tWS(1067689632, -1150117831);\n\tsum1 =\n\t\tW(0, -1109849008, 1047555836, 1035630764, -1099893915) + W(1, -1130553174, 1029999475, -1114674616, -1113991840)\n\t\t+ W(2, -1123520321, 1050420518, 1040630545, -1107722684)\n\t\t+ W(3, 1036413160, -1116179871, -1098283742, -1150636351) + W(4, 1029117869, 1035246488, 1031697439, 1041501593)\n\t\t+ W(5, -1127374955, -1104890550, -1116392999, 1019029347)\n\t\t+ W(6, -1140464318, 1020611803, -1125473743, 1031847583)\n\t\t+ W(7, 1027561031, -1113066609, -1114557056, 1006720846);\n\tsum2 = W(0, 1032302578, 1032483043, 1055539881, -1089061083)\n\t\t + W(1, -1114467512, 1037446674, 1053856893, -1095432519)\n\t\t + W(2, 1035589071, -1114962225, 1060021172, -1087688027)\n\t\t + W(3, -1140727686, -1107033941, 1044678306, -1119624965)\n\t\t + W(4, 1028178655, 1017647091, -1086216329, 1060967891)\n\t\t + W(5, -1123814512, -1102520792, -1096729370, 1056004093)\n\t\t + W(6, -1131958732, 1028700703, -1098594526, 1046082925)\n\t\t + W(7, -1114865396, -1106445462, -1103816765, 1049601918);\n\tWS(1053174400, -1151490459);\n\tsum1 =\n\t\tW(0, -1122069115, 1032070534, -1106451229, 1016988943) + W(1, -1147738936, -1116405775, 1015337751, -1131178679)\n\t\t+ W(2, 1027718109, 1043517586, -1118269791, 1030116243) + W(3, 1032697654, -1108806494, -1117317899, 1014470144)\n\t\t+ W(4, 1025368761, 1041596435, 1044803791, -1112007328) + W(5, -1112696969, 1030488179, -1098708424, 1036691591)\n\t\t+ W(6, 1007532846, -1145227340, 1024445699, -1121635481)\n\t\t+ W(7, -1121758051, 1032005679, -1105947015, 1025294511);\n\tsum2 = W(0, 1030975148, -1130068082, -1128045540, 1009416079)\n\t\t + W(1, 1021517080, -1126516206, 1010660367, 1014043007)\n\t\t + W(2, 1055956931, -1091517508, -1115164896, -1124472846)\n\t\t + W(3, 1077778659, -1071480833, -1096786527, 1028586964)\n\t\t + W(4, 1057214094, -1089646275, -1109767888, 1004868686)\n\t\t + W(5, 1029844584, -1129174056, 1010452735, -1122799750)\n\t\t + W(6, 1029913248, -1116251741, -1130073888, 1023899390)\n\t\t + W(7, 1021753404, 998387790, -1161269496, -1126055830);\n\tWS(1064255296, 1017910760);\n\tsum1 = W(0, 1034554881, 1054734130, -1098111935, -1127407003)\n\t\t + W(1, -1112041607, 1053450179, 1024002066, -1117294562)\n\t\t + W(2, -1108750194, 1051103338, -1095577677, 1016696883)\n\t\t + W(3, -1098306542, 1044871248, 1046694116, -1097130662)\n\t\t + W(4, -1140839485, -1103441076, -1111281057, 983357671)\n\t\t + W(5, -1117661336, 1027829882, 1048629833, -1104687573)\n\t\t + W(6, -1142577806, -1122634224, 1032310597, -1118108640)\n\t\t + W(7, -1131295699, 1024857124, 1048835924, -1098281839);\n\tsum2 = W(0, -1120767464, 1053966016, 1035968374, -1147532546)\n\t\t + W(1, 1032914397, 1073793292, 1040357442, -1129131123)\n\t\t + W(2, -1109760249, 1060302091, -1122023462, -1130362887)\n\t\t + W(3, 1040094052, -1072585870, -1086238928, -1116834009)\n\t\t + W(4, 1016200567, -1094220304, -1172011891, 1036030945)\n\t\t + W(5, 1009241688, -1113143087, 1043210576, 1015923256) + W(6, -1122384418, 1028063795, 1025380203, 1017132829)\n\t\t + W(7, 1032959032, -1104349617, -1119727737, 1019714285);\n\tWS(-1096343168, -1126236522);\n\tsum1 = W(0, 1030703603, -1108689250, 1038321302, -1121378303)\n\t\t + W(1, 1007810299, -1119306439, 1031818658, -1127608870)\n\t\t + W(2, 1040041675, -1096469888, 1053153171, -1126859158)\n\t\t + W(3, 1047119465, -1085509191, -1089344732, 1045457184)\n\t\t + W(4, -1113575360, 1056154112, 1045446045, -1144694086) + W(5, -1132527909, 1020253526, 999324634, 1029954693)\n\t\t + W(6, -1134236941, 1041829816, -1115315934, 1019451938)\n\t\t + W(7, 1009418349, 1033231243, -1107897834, 1026209383);\n\tsum2 = W(0, 983284602, 1020456556, -1131636264, 1015204808) + W(1, 1016178696, -1144975071, -1131007184, 1022946788)\n\t\t + W(2, 1029794920, -1114118472, 997214653, 998054973) + W(3, 1029986296, 1041996066, 1053737341, 1023304596)\n\t\t + W(4, -1109420788, -1139464095, -1097949071, 1029400914)\n\t\t + W(5, -1131549160, -1114876306, -1113647896, 1024576522)\n\t\t + W(6, -1118046352, 1015095008, -1115559594, -1124860928)\n\t\t + W(7, -1117716768, 983229178, -1141234271, -1131778280);\n\tWS(1054415488, 1031748714);\n\tsum1 = W(0, 1032036500, 1016814449, -1098109636, 1018567785)\n\t\t + W(1, -1106849745, 1048190511, -1110288412, -1119790601)\n\t\t + W(2, 1032905605, 1025341687, -1090213441, 1041909072) + W(3, 998976710, 1051815981, 1042721902, 1029877301)\n\t\t + W(4, 1035586875, -1102465150, -1117518441, 1033626399)\n\t\t + W(5, 1024707071, -1113968464, 1046144796, -1106536335)\n\t\t + W(6, -1137244643, -1127337837, -1117570737, 1018599181)\n\t\t + W(7, 1040319748, -1115415046, -1135047459, -1122513053);\n\tsum2 =\n\t\tW(0, 990440998, -1103416430, -1120602807, 1034530622) + W(1, -1138393335, -1121991569, 1037302636, -1117267403)\n\t\t+ W(2, -1115155620, -1128966950, -1098451061, 1032576586)\n\t\t+ W(3, 1002996807, -1100463136, 1060125031, -1114490937)\n\t\t+ W(4, -1122715509, -1095499559, 1057202890, -1120765719)\n\t\t+ W(5, -1107496177, 1010012987, 1038403096, -1126507430) + W(6, -1109700727, 1000571127, 1011003397, 1027555951)\n\t\t+ W(7, -1100731818, 1048400711, 1041385707, -1105804206);\n\tWS(1057399616, 1074070393);\n\tsum1 =\n\t\tW(0, -1116946950, 1049855515, -1097294408, 1045229301) + W(1, -1167692925, 1048650971, -1103643414, 1041758026)\n\t\t+ W(2, 1025124136, 1035712138, -1094845877, 1045455640) + W(3, 1027460150, -1096264273, -1106323062, 1036926493)\n\t\t+ W(4, 1033233658, -1093603523, 1045414146, 1036007790) + W(5, 1043057687, -1089515076, 1057610273, -1123310040)\n\t\t+ W(6, 1031827147, -1102565613, 1043872372, 1012034194) + W(7, 1036180887, -1089497938, 1048651645, 1034964477);\n\tsum2 = W(0, -1099019906, -1135117191, 1053230727, -1102919364)\n\t\t + W(1, 1016280180, -1104821294, -1108236474, 1021862852)\n\t\t + W(2, -1104956478, 1031344902, 1044240449, -1102746088)\n\t\t + W(3, -1160553787, 1057285857, 1060881655, -1121198562)\n\t\t + W(4, -1115190705, -1108143797, -1141578351, -1107568696)\n\t\t + W(5, 1040551613, -1096822242, -1110487530, 1027740054)\n\t\t + W(6, -1110901592, -1121444630, 1033167055, -1115478973)\n\t\t + W(7, 1043284947, -1108844527, -1097266933, 1039050835);\n\tWS(-1079272096, -1088198283);\n\tsum1 = W(0, -1150549691, -1112293630, 1038263474, -1117531256)\n\t\t + W(1, -1136809437, -1147892734, -1131332343, 1024124492)\n\t\t + W(2, 1035238887, -1101200910, 1042949876, 1022854919)\n\t\t + W(3, -1114730926, -1153686203, -1109365886, 1038223988)\n\t\t + W(4, 1013948517, 1033312670, -1123815596, -1137128325)\n\t\t + W(5, 1024493634, -1111552818, 1033656538, -1131368443) + W(6, 1014747375, 993656219, 999554974, -1123012682)\n\t\t + W(7, 1007675727, -1115285591, 1031561484, 983503863);\n\tsum2 =\n\t\tW(0, -1130912341, -1131869901, 1021624533, -1116201618) + W(1, 933663296, 973137042, 1031913949, -1114826138)\n\t\t+ W(2, 1024898014, 1022547165, 1049231168, -1097351564) + W(3, 1026863962, -1103034755, 1074345895, -1074065991)\n\t\t+ W(4, 1006981209, 1032168251, 1046910286, -1101411998) + W(5, 1015250909, -1122671508, 1033396431, -1116799454)\n\t\t+ W(6, -1128875465, 1002623282, 1015118461, -1122428830)\n\t\t+ W(7, -1163156681, -1124284861, 987851849, -1131138133);\n\tWS(1066898592, -1135257599);\n\tsum1 = W(0, -1110180874, 1039457202, -1099722419, 1033603984)\n\t\t + W(1, -1104421608, 1036077428, -1109956850, 1025966004)\n\t\t + W(2, -1108282395, 1042328969, -1108344348, 1027866348)\n\t\t + W(3, -1109212258, 1047234565, 1050666829, -1127852161)\n\t\t + W(4, -1112266449, -1102031401, 1052651555, -1117920074)\n\t\t + W(5, -1104815307, -1101771699, 1056795268, -1103088922)\n\t\t + W(6, -1117810340, -1107974833, 1044347095, -1114797145)\n\t\t + W(7, -1107536862, -1105991798, 1052879183, -1109126692);\n\tsum2 = W(0, -1109573955, 1053252716, -1111963093, -1104024699)\n\t\t + W(1, -1130272686, -1099761318, 1023415227, -1113318439)\n\t\t + W(2, -1112628352, 1053124236, 1036225124, -1113101390)\n\t\t + W(3, -1135365682, 1015950468, -1098416341, 989675628) + W(4, -1127976571, 1055173972, 984548524, -1113626094)\n\t\t + W(5, -1109041460, 1056516595, -1099834172, 1021900236)\n\t\t + W(6, -1141484375, -1111992284, -1115296758, -1121224929)\n\t\t + W(7, -1124075328, -1111067004, -1123095583, 1035158074);\n\tWS(-1080514464, 1071098312);\n\tsum1 =\n\t\tW(0, 1029423638, -1104998922, 1034143047, -1121480226) + W(1, 1032590577, -1109637973, 1035675859, -1116754806)\n\t\t+ W(2, 1026820152, -1100165641, 1041959039, -1119258414) + W(3, 1032314563, 1052963835, 1044386890, -1124675269)\n\t\t+ W(4, -1121041060, 1049180397, -1094089003, -1141724766)\n\t\t+ W(5, -1118573868, 1051364482, -1091683740, 1026232616)\n\t\t+ W(6, -1120807462, 1040988017, -1104568584, -1142663074)\n\t\t+ W(7, -1138006521, 1046351030, -1100071438, -1128189972);\n\tsum2 = W(0, -1103917515, 1047440331, 1045127249, -1101094893)\n\t\t + W(1, 1015651007, -1161898742, -1107946310, 1034127906)\n\t\t + W(2, -1110033797, 1037971494, 1032097498, -1105034150)\n\t\t + W(3, -1102760582, 1064882055, 1062501861, -1105985747)\n\t\t + W(4, -1111112749, -1094052244, -1097807648, 952358760)\n\t\t + W(5, 1038662254, -1095531648, -1103513552, 1029080884)\n\t\t + W(6, -1114159185, 1028288648, 1000704926, -1115269879)\n\t\t + W(7, 1037944898, -1103088589, -1103412727, 1036625418);\n\tWS(1048356096, 1025975827);\n\tsum1 = W(0, -1127785256, 1042988217, -1143337570, -1113788528)\n\t\t + W(1, -1122099232, 1042373466, -1109964850, 985728647) + W(2, -1101696686, 1057753530, -1091154007, 981326605)\n\t\t + W(3, 1026577988, 1024353684, 1027827940, 1025248769) + W(4, 1038799529, -1089144738, 1052285203, 1031883373)\n\t\t + W(5, 1035389109, -1100403603, -1125657656, 1042938314)\n\t\t + W(6, 1026796836, -1117105634, -1109515886, 1041478413)\n\t\t + W(7, 1026531900, -1118224663, -1110632314, 1024598728);\n\tsum2 = W(0, 1012220951, -1127410563, -1133847817, -1150652997)\n\t\t + W(1, -1116521159, -1105350472, 1023881724, -1121646209)\n\t\t + W(2, -1112142878, 1052174871, 1044599155, -1123898264)\n\t\t + W(3, 1029633040, -1097063130, -1106094805, 1019540966)\n\t\t + W(4, -1134401830, -1157154125, 1059986787, -1101447493)\n\t\t + W(5, -1123437332, 1029744370, -1111846084, -1113752268)\n\t\t + W(6, -1127274631, -1133421881, 1028497368, -1115689394)\n\t\t + W(7, -1127142758, 1031896001, -1111750394, -1144497399);\n\tWS(1047538944, -1094881626);\n\tsum1 =\n\t\tW(0, -1131292909, 1026526343, -1137367995, -1137761291) + W(1, -1116924690, 1015768341, 1040643394, -1105713526)\n\t\t+ W(2, -1112297452, 1061821276, -1088680894, 1031500559)\n\t\t+ W(3, 1021777101, 1006944475, -1090839121, -1122499811)\n\t\t+ W(4, 1043477817, -1091685625, 1059324523, -1107169411)\n\t\t+ W(5, -1116873677, 1042550748, -1162815447, -1119456201)\n\t\t+ W(6, -1148100662, -1112344306, 1036475455, 998501030) + W(7, -1142312694, 1025260793, 1009991259, 1032218389);\n\tsum2 = W(0, 1018368946, -1112001321, -1120361628, -1136144308)\n\t\t + W(1, 1027383442, -1114299623, -1113414147, 995591994)\n\t\t + W(2, 1026347909, -1159080892, -1114902877, -1130300135)\n\t\t + W(3, -1120907217, 1048017951, 1047229175, -1113455406)\n\t\t + W(4, -1113638165, 1043117803, 1034197636, -1104824263)\n\t\t + W(5, 1015876554, -1117678872, -1153448320, -1135559770)\n\t\t + W(6, -1121952605, 1016312397, 1030999359, -1116260909)\n\t\t + W(7, -1157376536, -1122492527, -1146986041, 1024817261);\n\tWS(1059019584, -1093542352);\n\tsum1 =\n\t\tW(0, -1118590060, 1030085820, 1044414089, -1139295455) + W(1, 1036739212, -1117660736, 1037660574, 1017695255)\n\t\t+ W(2, -1117950862, 1053611807, 1035930184, -1132182919)\n\t\t+ W(3, 1044992135, -1088498407, -1087395836, 1041445842)\n\t\t+ W(4, 1031932973, -1106481599, 1044296603, -1162575911)\n\t\t+ W(5, -1157350427, 1041316489, -1101366685, 1028651518) + W(6, 1018600951, 1033416637, -1113146202, 1029799946)\n\t\t+ W(7, -1135788111, 1042914684, -1105147443, 1024137952);\n\tsum2 = W(0, -1139124704, -1098733365, -1134878408, 1017748092)\n\t\t + W(1, -1129149604, -1096002059, -1139933424, -1120672660)\n\t\t + W(2, -1112674264, -1099326395, 1006823136, 1007868832) + W(3, 1041796064, 1042574015, 1054885382, 1038924927)\n\t\t + W(4, 1023328190, 993486752, 1040771663, -1118903044) + W(5, 983636161, 1013026008, 1012616072, -1117420588)\n\t\t + W(6, -1131439188, -1121650464, -1119789204, 1032346590)\n\t\t + W(7, 968306692, 1025526661, 1007743024, 1016029412);\n\tWS(1034201600, 1032755867);\n\tsum1 = W(0, -1153568391, -1096012775, 1054286804, -1151613767)\n\t\t + W(1, 1027758260, -1105013167, 1040809774, -1113241540)\n\t\t + W(2, -1120836106, -1096428191, 1052819554, -1109787424)\n\t\t + W(3, -1106713574, 1052356477, 1045456334, -1103823871)\n\t\t + W(4, -1110497539, 1040996254, -1104715738, -1140335480)\n\t\t + W(5, -1113115007, 1046162344, -1106901340, -1136669162)\n\t\t + W(6, -1129181937, 1026611286, -1119554608, -1129950605)\n\t\t + W(7, -1106649828, 1046578147, -1111616164, 1018423993);\n\tsum2 =\n\t\tW(0, -1116195452, 1046553581, 1060291180, -1133268119) + W(1, -1114916062, 1044137813, 1067697792, 1023665145)\n\t\t+ W(2, 1015539387, 1039450853, 1056432615, 1037512606) + W(3, 1031939547, -1081686100, -1075409426, 1033868463)\n\t\t+ W(4, 1004500534, -1106570618, -1100622921, 1015733077) + W(5, 1002967134, 1023858175, 1018449047, -1120650920)\n\t\t+ W(6, -1116253852, 1032662783, 1002080710, 1016550645) + W(7, 1037899637, 1018521363, -1106597825, 1008358731);\n\tWS(-1092032128, -1114982082);\n\tsum1 = W(0, 1022785838, -1092594901, 1053421570, -1131318086)\n\t\t + W(1, 1030256707, -1096516325, 1038780564, -1117764855)\n\t\t + W(2, 1019093490, -1091986421, 1047196191, -1114799192)\n\t\t + W(3, -1129380878, 1046024022, 1055287349, -1136363407)\n\t\t + W(4, -1136259347, -1122621159, -1127922606, -1144800614)\n\t\t + W(5, -1112386231, 1047446468, -1103792760, 1031400745)\n\t\t + W(6, -1119087591, 983613607, -1127804734, -1141783466)\n\t\t + W(7, -1105547264, 1044817638, -1107803612, 1035179430);\n\tsum2 = W(0, 1041280609, -1101864626, -1094055741, 1033694830)\n\t\t + W(1, -1122718101, -1105911709, -1103824921, -1107222411)\n\t\t + W(2, 1032208518, -1098031958, -1096453130, -1124818562)\n\t\t + W(3, -1105883428, 1058683727, 1064792422, -1108861898)\n\t\t + W(4, 1032385022, -1120084233, 1036982526, -1126293810)\n\t\t + W(5, -1105712369, 1049511237, 1028614917, -1108778587)\n\t\t + W(6, 1026423073, -1101782173, 1024411853, 1022233154)\n\t\t + W(7, -1100029914, 1048360263, 1045846387, -1104838815);\n\tWS(-1109129728, 1010433912);\n\tsum1 = W(0, -1117250164, -1096823624, 1040646763, 1019407999)\n\t\t + W(1, 1006908285, -1105899410, 1019351431, -1137630799)\n\t\t + W(2, -1122855062, -1092542200, 1052048931, -1109418342)\n\t\t + W(3, -1107144297, 1057728383, 1064635860, -1105008732)\n\t\t + W(4, -1106683568, 1037050434, -1117087348, -1114857797)\n\t\t + W(5, -1123315850, 1026000812, -1107858814, 1029923270)\n\t\t + W(6, -1130212999, -1117617698, -1107016783, -1137382471)\n\t\t + W(7, -1125685047, -1122267030, -1100117973, 1034575732);\n\tsum2 = W(0, -1153548328, -1138461074, -1109953492, 970383811)\n\t\t + W(1, -1146428548, 1040260969, -1109276610, 1016706951)\n\t\t + W(2, -1122720334, 1050908092, -1119113122, -1113772244)\n\t\t + W(3, -1131960189, 1057542522, -1109440842, -1149783528)\n\t\t + W(4, -1105417557, 1046314824, 1008998438, -1111645386)\n\t\t + W(5, -1140382642, -1105004761, -1140136790, -1114961145)\n\t\t + W(6, -1130524097, 1024281381, -1119699464, -1128062487)\n\t\t + W(7, 1025793768, -1110366356, -1135544654, -1113390177);\n\tWS(1028043776, 1066748487);\n\tsum1 =\n\t\tW(0, 1020869188, 1042153037, -1114798157, -1111756535) + W(1, 1029235758, -1142684082, -1109061593, 1025123714)\n\t\t+ W(2, -1130366216, 1055996350, -1084468040, 1039957533) + W(3, 1035504777, 1053860476, 1054127718, 1020063133)\n\t\t+ W(4, 1043701316, -1085695847, 1050138268, 1020852591) + W(5, 1028701624, -1103910983, -1111428405, 1027291444)\n\t\t+ W(6, -1140377801, -1112356264, -1142788434, 1023500800)\n\t\t+ W(7, -1122144394, -1125763849, -1122964802, -1137256281);\n\tsum2 =\n\t\tW(0, -1124029698, -1129530165, -1125964837, 1021970837) + W(1, 924100096, -1119644642, 1007880106, -1133743274)\n\t\t+ W(2, -1114278109, -1119677450, 1030663674, -1118803866)\n\t\t+ W(3, -1110737625, 1050522694, 1051750384, -1114387111) + W(4, -1113250169, 1031715210, -1120664914, 999385235)\n\t\t+ W(5, -1121059730, -1121636434, -1117515026, 1025411170)\n\t\t+ W(6, 998717971, -1145009875, -1122454562, 1019195093)\n\t\t+ W(7, -1125884533, -1119348450, 1010693450, -1127692741);\n\tWS(1060837696, -1133947077);\n\tsum1 =\n\t\tW(0, -1111653883, 1043511426, 1035524535, -1102491073) + W(1, 1028161858, -1107876293, 1015032078, -1120891991)\n\t\t+ W(2, 1026751705, 1032976162, 1051427819, -1107214884)\n\t\t+ W(3, 1035200691, -1100826286, -1104551490, -1125941943) + W(4, 1000443428, 1046154066, 1014718172, 1038586510)\n\t\t+ W(5, -1124636570, -1109841015, -1105048272, 1029969865)\n\t\t+ W(6, -1153569903, 1028652293, -1150803951, 1023653077)\n\t\t+ W(7, 1010162044, -1123706233, -1122173975, 990755503);\n\tsum2 =\n\t\tW(0, -1109148006, -1124907300, -1092637531, 1058387135) + W(1, 1027230711, -1130116966, -1092832201, 1052271642)\n\t\t+ W(2, -1141349815, -1099589874, -1085994041, 1062146597)\n\t\t+ W(3, -1115012616, 1033368851, 1040685020, 1019043320) + W(4, 1025861327, -1097709653, 1063174823, -1085821967)\n\t\t+ W(5, -1129789352, 1048790586, 1056989663, -1089224415)\n\t\t+ W(6, 1018453676, -1111271581, 1049450817, -1100831168)\n\t\t+ W(7, 1031045509, 1042673858, 1044673285, -1096709646);\n\tWS(1052991104, 1024635730);\n\tsum1 =\n\t\tW(0, 1035832004, 1054985227, -1101014640, -1119430356) + W(1, -1113667962, 1053766219, 1027437528, -1121298600)\n\t\t+ W(2, -1115665493, 1046292645, -1097461637, 1029858016)\n\t\t+ W(3, -1099876558, -1128304655, -1148766910, -1098528437)\n\t\t+ W(4, -1124670698, -1115760280, -1103841730, 1026860541)\n\t\t+ W(5, -1123144798, 1032906080, 1048476772, -1107490221)\n\t\t+ W(6, -1141396670, 1011324759, 1034147624, -1114702739) + W(7, 991927035, 1032830229, 1048946541, -1098098175);\n\tsum2 = W(0, 1023525971, -1101540780, -1109590196, -1124206084)\n\t\t + W(1, -1123155104, -1081244300, -1107189914, 989815561) + W(2, 1037524511, -1094597742, 1026840221, 979200786)\n\t\t + W(3, -1119336486, 1068940029, 1038949441, 1039597181)\n\t\t + W(4, -1120201684, 1051860638, 1014639773, -1126284432)\n\t\t + W(5, -1140931614, 998725346, -1110977051, -1128575576)\n\t\t + W(6, 1025256785, 1002156586, -1117345859, -1123250336)\n\t\t + W(7, -1116496860, 1038812729, 1033886084, -1117282785);\n\tWS(-1106197760, -1107941957);\n\tsum1 =\n\t\tW(0, -1126741205, 958134964, 1042417753, -1131232109) + W(1, 992223587, -1096404880, -1114006205, -1156891819)\n\t\t+ W(2, -1103296147, 1050569383, 1053212362, -1104768673)\n\t\t+ W(3, -1096167611, -1089676235, -1101748223, -1105076618)\n\t\t+ W(4, -1103227950, 1032016157, 1057274419, -1101041056) + W(5, 1041994672, 1020956357, 1042030605, -1124618361)\n\t\t+ W(6, -1124973941, -1180953690, 1049652990, -1114495652)\n\t\t+ W(7, 1027666259, 1043412107, 1052224033, -1117167007);\n\tsum2 =\n\t\tW(0, -1114619118, 1033666378, 1015708744, 1027002418) + W(1, -1149001791, 1045400432, -1103940412, -1125963088)\n\t\t+ W(2, -1110825372, 924614016, -1107881456, -1103385448)\n\t\t+ W(3, -1090736686, 1063026008, 1059931802, -1091159350)\n\t\t+ W(4, -1106216772, -1114127208, -1107266078, -1139192735)\n\t\t+ W(5, 1027272732, -1108719036, 1024735270, -1125128312) + W(6, 1033544093, 1032301903, -1134995311, 1019689496)\n\t\t+ W(7, -1120615480, -1114760302, 1034226031, 1032462491);\n\tWS(-1076602784, -1079939509);\n\tsum1 = W(0, 1033209209, -1103738752, 1025390185, 1002177000)\n\t\t + W(1, -1124683769, -1119780485, 1041533536, -1112424745)\n\t\t + W(2, 1015980198, -1096323000, 1052087227, -1104846498)\n\t\t + W(3, -1141354248, 1042233324, 1039917313, -1113895617)\n\t\t + W(4, -1106007132, 1054450248, -1105614956, -1119444855)\n\t\t + W(5, -1114123684, 1052850909, -1098158311, -1112376802)\n\t\t + W(6, -1121157953, 1043529432, -1107965437, 1021969694)\n\t\t + W(7, 1019464370, 1045060053, -1103437636, -1109951699);\n\tsum2 =\n\t\tW(0, 1032197744, -1106233686, -1119285117, 1036373860) + W(1, -1119329897, -1117977933, 1035649904, -1113988579)\n\t\t+ W(2, 1026978731, -1119744119, 1046616172, -1150690390)\n\t\t+ W(3, 1042368013, -1074309068, -1080074847, -1148379867) + W(4, 1034747948, 1068607081, 1045039448, 1031972703)\n\t\t+ W(5, -1109569271, 1064708176, 1043980108, -1113275705) + W(6, 1037031349, -1119111329, 1029320825, 1015848847)\n\t\t+ W(7, -1111213511, 1041980892, 1028259198, 1008019670);\n\tWS(-1093673600, -1131421273);\n\tsum1 =\n\t\tW(0, -1121371719, -1114120908, 1035660544, 1009001293) + W(1, -1126420325, -1110871822, 1021798446, 1008740253)\n\t\t+ W(2, 1033366837, -1087025669, 1058317703, -1120291359) + W(3, 1021303790, -1118558279, 1042294182, 1022689127)\n\t\t+ W(4, -1117842165, 1056872571, -1088792724, 1031810222)\n\t\t+ W(5, 1011797877, 1032969664, -1114500968, -1148303562)\n\t\t+ W(6, 1021502382, 1037611499, -1111697864, -1137856917)\n\t\t+ W(7, -1131840478, 1040800018, 1017988942, -1121301883);\n\tsum2 = W(0, -1145039688, -1114206314, -1116540509, 1020565626)\n\t\t + W(1, -1129835426, -1119983153, -1113040628, 1000979816)\n\t\t + W(2, -1119915157, -1121785409, -1118504757, 989230112)\n\t\t + W(3, -1110668832, 1051729955, 1051989643, -1112437186)\n\t\t + W(4, -1111519800, 1012089860, 1039755978, -1112214518)\n\t\t + W(5, 1002833896, -1118223897, 1025479957, 1015165050)\n\t\t + W(6, -1127947266, -1130809610, -1158783904, -1128941978)\n\t\t + W(7, 1006052904, -1123764449, -1127132522, 1025956493);\n\tWS(1065682080, -1111828541);\n\tsum1 =\n\t\tW(0, 1015869752, -1145885026, 1022264616, -1126764880) + W(1, 1017604463, -1115077208, 1021224792, 1032942526)\n\t\t+ W(2, -1112250175, 1052074397, -1089954536, 1040282413) + W(3, 1024786188, -1121697500, 1047440331, 1035803452)\n\t\t+ W(4, 1036568133, -1086889687, 1049268572, -1125683619) + W(5, 1002255762, 1045248549, -1109225970, 1031850711)\n\t\t+ W(6, -1131800664, -1130857684, -1123514660, -1141787602)\n\t\t+ W(7, 982208647, 1037568127, -1113425822, 1017131424);\n\tsum2 = W(0, -1122978131, 1016858600, 1028741871, 993636865) + W(1, 1016040732, 968811648, 1021399769, -1144040913)\n\t\t + W(2, -1114060649, 1029169324, 1032336595, -1118019503)\n\t\t + W(3, -1125004872, 1051074882, 1031746308, -1109484363)\n\t\t + W(4, 1029971540, 1006053609, -1103346234, -1124468225)\n\t\t + W(5, 1026938249, -1154135582, -1113140779, 1013417282)\n\t\t + W(6, 1017189437, -1115290499, -1141169189, -1169769501)\n\t\t + W(7, -1124460348, -1140773838, -1122277912, -1139883250);\n\tWS(1068575136, 1057679145);\n\tsum1 =\n\t\tW(0, -1106541599, 1049880682, -1093397815, 1052783569) + W(1, 1008215334, 1049251178, -1111487207, 1042509671)\n\t\t+ W(2, 989927934, 1026486412, -1092992340, 1051194971) + W(3, 1042310507, -1095539136, -1103138323, 1040579493)\n\t\t+ W(4, 1018512183, -1094672658, 1043830943, 1038856114) + W(5, 1040070410, -1089191083, 1057944056, -1114567880)\n\t\t+ W(6, 1014261304, -1100618939, 1044894993, 1025292508) + W(7, 1041475113, -1087252724, 1049811244, 1038361721);\n\tsum2 =\n\t\tW(0, -1114445084, 1053593458, 1057823779, -1150175899) + W(1, -1136765855, 1055007475, 1054334485, -1141017037)\n\t\t+ W(2, 1039574032, -1105638736, -1096181786, 1042094581)\n\t\t+ W(3, -1113238946, -1078800745, -1078443122, -1134493359)\n\t\t+ W(4, 1030357662, -1104375874, 1049857835, 1020483059) + W(5, -1106803932, 1059224194, 1058193036, -1099695416)\n\t\t+ W(6, 964162478, 1050059734, 1043677394, -1118569338) + W(7, -1113028634, 1035501186, 1029634285, -1110238952);\n\tWS(-1069843280, 1043992756);\n\tsum1 =\n\t\tW(0, -1124948267, 1027695014, -1108770183, 1008956039) + W(1, -1135429253, -1119099178, 1017935435, -1129507307)\n\t\t+ W(2, 1025550072, 1044103833, -1112757821, 1030807982) + W(3, 1025838726, -1113789227, -1130965835, 1014849865)\n\t\t+ W(4, 1019242118, 1039477491, 1042243413, -1114625158) + W(5, -1116233196, 1024839950, -1101790135, 1035190516)\n\t\t+ W(6, 998797102, -1142719774, 1012540023, -1127852007)\n\t\t+ W(7, -1130610171, 1028120504, -1106167085, 1023573770);\n\tsum2 =\n\t\tW(0, -1114838118, 1026300352, 1004928481, -1130791968) + W(1, -1121247640, 1028491168, -1130258048, -1127851536)\n\t\t+ W(2, -1095359738, 1053083344, 1024432884, 1025789396) + W(3, -1072953064, 1074653957, -1102013621, 1030571860)\n\t\t+ W(4, -1093135708, 1056568596, 1030571276, 984097412) + W(5, -1115141896, 1033233928, -1116002270, 1025870428)\n\t\t+ W(6, -1116140314, 1030713448, 1015669456, -1120604784)\n\t\t+ W(7, -1127503160, 1023653964, -1129660856, 1016702232);\n\tWS(1066802848, -1129257078);\n\tsum1 = W(0, 1015630667, 1033473243, -1104672775, -1114728473)\n\t\t + W(1, -1118978065, -1155453851, -1122431286, -1121467910)\n\t\t + W(2, -1113784260, 1035395194, -1115117829, -1105320751)\n\t\t + W(3, -1101616805, 1065736411, 1061324843, -1095556296)\n\t\t + W(4, -1108037466, 1045542397, -1100789945, -1104703871)\n\t\t + W(5, -1114908350, 1040181775, -1114134583, -1109993148)\n\t\t + W(6, -1114956027, -1177594330, -1124148059, -1111474306)\n\t\t + W(7, -1111947911, 1036229652, -1138173719, -1106051686);\n\tsum2 = W(0, -1109560646, -1155123513, 1035199782, -1115008786)\n\t\t + W(1, -1134031950, -1108713026, -1107664082, 1019412439)\n\t\t + W(2, -1107125821, 1038996664, 1043157052, -1123597732) + W(3, 1017238679, 1026897780, 1051508948, 1016515095)\n\t\t + W(4, 1024343484, -1107646918, 1055083262, -1106563795)\n\t\t + W(5, -1127256871, -1107869542, 998755997, -1116358964)\n\t\t + W(6, 1004378333, -1112902766, -1159444594, -1117600772)\n\t\t + W(7, -1129735047, -1145442397, 1012570830, -1110777694);\n\tWS(-1093453440, 1062530498);\n\tsum1 = W(0, -1124930739, -1115495349, 1025637074, 1023868966)\n\t\t + W(1, 1018166794, -1109318263, 1039727605, 1023563962) + W(2, -1109529502, 1024699176, 931786146, -1131885027)\n\t\t + W(3, -1114300581, 1040214918, 1052285453, -1104984446)\n\t\t + W(4, 1025096231, -1105577322, 1009762919, -1110072888)\n\t\t + W(5, 1023247327, 1043329716, -1105534248, -1137647791) + W(6, 998443854, -1123543752, 988548151, -1123805240)\n\t\t + W(7, -1125424515, 1034740398, -1116356474, 1018092315);\n\tsum2 =\n\t\tW(0, -1116378324, 1018118074, 1027066059, -1110082211) + W(1, -1110334365, -1135013993, 1002595554, -1111471528)\n\t\t+ W(2, -1139723269, -1117515615, 1053899571, -1114430561)\n\t\t+ W(3, -1134041225, -1097345050, 1043336959, 1040454031) + W(4, -1147091114, 1039717826, 1040668505, 1033656482)\n\t\t+ W(5, -1112237914, -1107830137, 1010598309, -1117546906)\n\t\t+ W(6, -1123080609, 1032288465, 1016807738, -1115822981)\n\t\t+ W(7, -1131603942, 978891919, 1026333875, -1119917138);\n\tWS(1067735712, -1080534052);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[429];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { temp[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 11 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 429; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 11, y = (uint)id % 11;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (3)) + 0.5, float(group_base.y + y - (1)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[8];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 11];\n\tsamples[1][1] = inp[local_pos + 12];\n\tsamples[1][2] = inp[local_pos + 13];\n\tsamples[1][3] = inp[local_pos + 14];\n\tsamples[2][0] = inp[local_pos + 22];\n\tsamples[2][1] = inp[local_pos + 23];\n\tsamples[2][2] = inp[local_pos + 24];\n\tsamples[2][3] = inp[local_pos + 25];\n\tsamples[3][0] = inp[local_pos + 33];\n\tsamples[3][1] = inp[local_pos + 34];\n\tsamples[3][2] = inp[local_pos + 35];\n\tsamples[3][3] = inp[local_pos + 36];\n\tsamples[4][0] = inp[local_pos + 44];\n\tsamples[4][1] = inp[local_pos + 45];\n\tsamples[4][2] = inp[local_pos + 46];\n\tsamples[4][3] = inp[local_pos + 47];\n\tsamples[5][0] = inp[local_pos + 55];\n\tsamples[5][1] = inp[local_pos + 56];\n\tsamples[5][2] = inp[local_pos + 57];\n\tsamples[5][3] = inp[local_pos + 58];\n\tsamples[6][0] = inp[local_pos + 66];\n\tsamples[6][1] = inp[local_pos + 67];\n\tsamples[6][2] = inp[local_pos + 68];\n\tsamples[6][3] = inp[local_pos + 69];\n\tsamples[7][0] = inp[local_pos + 77];\n\tsamples[7][1] = inp[local_pos + 78];\n\tsamples[7][2] = inp[local_pos + 79];\n\tsamples[7][3] = inp[local_pos + 80];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 34];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(1, 2);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2) + ivec2(0, 1), ret);\n}\n//!PASS 2\n//!DESC NNEDI3 (double_x, nns32, win8x4)\n//!IN INPUT, temp\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 8\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[8]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 8; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 32.0;\n\tfloat mstd1 = sumsq / 32.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, 1036208225, 1039469975, 1027560868, 1039536921) + W(1, -1144450173, 1035622988, 1024461970, 1029776426)\n\t\t + W(2, -1091571194, -1095740683, -1097328754, 1025116802)\n\t\t + W(3, 1043923973, 1049700439, 1024545936, 1047463785) + W(4, 1048590727, 1028885330, 1039928979, 1017576356)\n\t\t + W(5, -1098962113, -1090255529, -1100301043, -1090407950)\n\t\t + W(6, 1032174663, 1026075554, 1023201972, 1042058704) + W(7, 1033278580, 1046104373, 1035224848, 1043393326);\n\tsum2 =\n\t\tW(0, -1098253927, -1166389754, -1106582410, 1034460863) + W(1, 1027738130, -1113669665, 1016925525, -1129223232)\n\t\t+ W(2, 1055965966, -1101782718, 1045236553, -1132225959)\n\t\t+ W(3, 1057568628, 1055278331, -1127810369, -1108092808) + W(4, 1006679350, 983512221, -1097283179, -1090237017)\n\t\t+ W(5, 1036184228, -1133967067, 1022264595, 1009711002) + W(6, -1096709168, -1105895383, 1040768379, 1030302550)\n\t\t+ W(7, -1111760224, 1033275358, -1104949250, 1045297871);\n\tWS(-1080723616, -1076327864);\n\tsum1 = W(0, 1017315691, -1140602116, 1037257964, -1107192473) + W(1, 1022003974, 1022805527, 1021604747, 1014959990)\n\t\t + W(2, -1106293281, 1024505865, -1101486193, 1027220277)\n\t\t + W(3, 1032001763, -1106692027, 1020788295, -1109388172)\n\t\t + W(4, 1041272315, -1129176587, 1040932726, -1098639185) + W(5, 1032224091, 1038889695, 1019749115, 1036681163)\n\t\t + W(6, -1113397025, 1022464939, 1024865293, 1043879330)\n\t\t + W(7, -1118929755, -1123579783, -1117432531, 998707020);\n\tsum2 = W(0, 1015755803, -1140061902, -1129835189, 1032555441)\n\t\t + W(1, -1138877514, -1123339814, 1016646759, -1165772366)\n\t\t + W(2, -1127131649, 1016927815, -1112279061, -1095938931)\n\t\t + W(3, -1116204914, 1009679614, -1153656135, -1146249364)\n\t\t + W(4, -1137718334, -1129880851, -1089663810, -1069364926)\n\t\t + W(5, -1092530653, -1148409052, -1122312216, 1018619187)\n\t\t + W(6, 1033341381, 1024947773, 1058036499, 1079454606) + W(7, 1053318688, 1022404175, 1028043253, 1025789685);\n\tWS(1058954560, 1004956589);\n\tsum1 =\n\t\tW(0, -1128607008, 1038458494, 1047693245, 1026348672) + W(1, -1108459679, -1116524774, 1024592800, -1117551096)\n\t\t+ W(2, -1102342440, -1105082889, -1085974686, 1047296084)\n\t\t+ W(3, 1058722958, -1135229473, 1019546620, -1122816147)\n\t\t+ W(4, 1027139080, -1147341058, 1057887999, -1100046248) + W(5, -1087115665, 1043502422, 1020243248, 1043995308)\n\t\t+ W(6, 1038455278, -1156235011, -1103441674, 1029167261)\n\t\t+ W(7, 1033885827, 1027001826, -1124163292, 1023459588);\n\tsum2 = W(0, 1039897191, -1116902056, -1115617116, -1116419565)\n\t\t + W(1, -1121428266, 1003022729, 1032782009, -1161229156)\n\t\t + W(2, 1032715073, 1035295215, 1051413477, -1089611288) + W(3, 1039274043, -1102315300, 1012620980, 1023483611)\n\t\t + W(4, -1104821098, -1120385367, 1060018690, -1132652148)\n\t\t + W(5, 1008252604, -1117381948, -1113601670, -1116040249)\n\t\t + W(6, -1103487249, -1118716257, -1091510775, 1048354743)\n\t\t + W(7, 1040404198, 1037629937, 1035102099, -1132320852);\n\tWS(-1088253760, -1127575790);\n\tsum1 = W(0, 1038728366, 1033404580, 1036121471, 1045370723) + W(1, 994877095, 1036217881, 1012008372, 1040247041)\n\t\t + W(2, -1156102863, 1042126700, -1099951467, -1083618166)\n\t\t + W(3, 1040753147, -1099186053, 1033329669, -1099351704)\n\t\t + W(4, 1036225546, -1111684630, 1050604224, -1088174091)\n\t\t + W(5, -1098202972, 1039701042, 1015138122, 1032444126) + W(6, 1011512228, 1043566527, 1032168346, 1050156122)\n\t\t + W(7, 1037663513, 1034991255, 1030253051, 1041638884);\n\tsum2 = W(0, 1030438042, 1009286759, 1027607240, 1019667875) + W(1, -1113200383, 1032828373, -1125602091, 1008172775)\n\t\t + W(2, -1147399085, 1025260806, 1032031341, 1065802217)\n\t\t + W(3, 1046766533, -1110418147, -1137630919, -1119451994)\n\t\t + W(4, -1093920639, -1086940227, -1090745109, 1049694895)\n\t\t + W(5, -1117099650, 1041550488, -1114583845, 1034586333)\n\t\t + W(6, -1109485523, -1143426189, -1114490725, -1135657207)\n\t\t + W(7, 1032826151, 1024844082, 993352218, -1137428855);\n\tWS(-1079364256, 1057874888);\n\tsum1 = W(0, 1038744583, 1028964378, 1038770168, 1044691424) + W(1, 1039465822, 1031872786, 1031706975, 1026510455)\n\t\t + W(2, 1023431711, 1034807569, 1043817591, -1093522810) + W(3, 1033837359, 1026052487, 1024735357, 1032349913)\n\t\t + W(4, -1097930673, -1105253352, -1095573950, -1085514994)\n\t\t + W(5, -1111615463, 1038514603, 1029114647, 1036441879) + W(6, 1027252187, 1030066159, 1037737491, 1045101529)\n\t\t + W(7, 1019830473, 1014931844, 1030853165, 1025856707);\n\tsum2 = W(0, -1110129969, -1122608874, -1109784187, 1036903789)\n\t\t + W(1, 1016388156, -1134147112, 1025386706, -1114085729) + W(2, 1023276596, 1020476676, 1055608478, 1056514262)\n\t\t + W(3, -1122102418, 1032271709, -1109100200, 1030585586)\n\t\t + W(4, 1028080466, -1106237621, -1110801543, -1099727798)\n\t\t + W(5, 1033517697, -1114242709, -1110189468, -1128034084)\n\t\t + W(6, -1115008651, -1145788944, -1135649000, 1034305529)\n\t\t + W(7, 1019861916, -1104837577, 1027443202, -1105665752);\n\tWS(-1091483264, -1079194671);\n\tsum1 = W(0, -1131351604, -1113984995, 1021186040, -1116327562)\n\t\t + W(1, -1132080655, -1206829265, 1023600234, -1126861572)\n\t\t + W(2, -1116837930, 1032278999, -1099425098, 1045060919)\n\t\t + W(3, 1054575181, -1113261897, -1130307600, -1115285054)\n\t\t + W(4, -1139989065, 987288903, 1055014512, 1046630795) + W(5, -1092379987, 1027226210, -1122295330, 1003385298)\n\t\t + W(6, 1024497830, -1120582522, -1105371085, -1115581427)\n\t\t + W(7, 1026057008, -1110689206, -1130576880, -1136751161);\n\tsum2 = W(0, -1129629424, 1028468886, -1120636360, -1136732761)\n\t\t + W(1, 1036262769, 1022425868, 1019955588, -1123045172) + W(2, 1004745569, -1114381934, 1032177433, 1051604488)\n\t\t + W(3, -1115452378, 1026786204, -1123076816, -1139760465)\n\t\t + W(4, 1012138921, 1032075412, -1114041388, -1122709320)\n\t\t + W(5, -1105925279, -1102674451, 1002766561, -1135173233)\n\t\t + W(6, 1021845392, 1000184001, 1017905952, -1141636449)\n\t\t + W(7, -1138562729, 1006971361, -1146151969, -1127921184);\n\tWS(1067689632, -1150117831);\n\tsum1 =\n\t\tW(0, -1109849008, -1130553174, -1123520321, 1036413160) + W(1, 1029117869, -1127374955, -1140464318, 1027561031)\n\t\t+ W(2, 1047555836, 1029999475, 1050420518, -1116179871) + W(3, 1035246488, -1104890550, 1020611803, -1113066609)\n\t\t+ W(4, 1035630764, -1114674616, 1040630545, -1098283742)\n\t\t+ W(5, 1031697439, -1116392999, -1125473743, -1114557056)\n\t\t+ W(6, -1099893915, -1113991840, -1107722684, -1150636351)\n\t\t+ W(7, 1041501593, 1019029347, 1031847583, 1006720846);\n\tsum2 = W(0, 1032302578, -1114467512, 1035589071, -1140727686)\n\t\t + W(1, 1028178655, -1123814512, -1131958732, -1114865396)\n\t\t + W(2, 1032483043, 1037446674, -1114962225, -1107033941)\n\t\t + W(3, 1017647091, -1102520792, 1028700703, -1106445462) + W(4, 1055539881, 1053856893, 1060021172, 1044678306)\n\t\t + W(5, -1086216329, -1096729370, -1098594526, -1103816765)\n\t\t + W(6, -1089061083, -1095432519, -1087688027, -1119624965)\n\t\t + W(7, 1060967891, 1056004093, 1046082925, 1049601918);\n\tWS(1053174400, -1151490459);\n\tsum1 =\n\t\tW(0, -1122069115, -1147738936, 1027718109, 1032697654) + W(1, 1025368761, -1112696969, 1007532846, -1121758051)\n\t\t+ W(2, 1032070534, -1116405775, 1043517586, -1108806494) + W(3, 1041596435, 1030488179, -1145227340, 1032005679)\n\t\t+ W(4, -1106451229, 1015337751, -1118269791, -1117317899)\n\t\t+ W(5, 1044803791, -1098708424, 1024445699, -1105947015) + W(6, 1016988943, -1131178679, 1030116243, 1014470144)\n\t\t+ W(7, -1112007328, 1036691591, -1121635481, 1025294511);\n\tsum2 = W(0, 1030975148, 1021517080, 1055956931, 1077778659) + W(1, 1057214094, 1029844584, 1029913248, 1021753404)\n\t\t + W(2, -1130068082, -1126516206, -1091517508, -1071480833)\n\t\t + W(3, -1089646275, -1129174056, -1116251741, 998387790)\n\t\t + W(4, -1128045540, 1010660367, -1115164896, -1096786527)\n\t\t + W(5, -1109767888, 1010452735, -1130073888, -1161269496)\n\t\t + W(6, 1009416079, 1014043007, -1124472846, 1028586964)\n\t\t + W(7, 1004868686, -1122799750, 1023899390, -1126055830);\n\tWS(1064255296, 1017910760);\n\tsum1 = W(0, 1034554881, -1112041607, -1108750194, -1098306542)\n\t\t + W(1, -1140839485, -1117661336, -1142577806, -1131295699)\n\t\t + W(2, 1054734130, 1053450179, 1051103338, 1044871248) + W(3, -1103441076, 1027829882, -1122634224, 1024857124)\n\t\t + W(4, -1098111935, 1024002066, -1095577677, 1046694116)\n\t\t + W(5, -1111281057, 1048629833, 1032310597, 1048835924)\n\t\t + W(6, -1127407003, -1117294562, 1016696883, -1097130662)\n\t\t + W(7, 983357671, -1104687573, -1118108640, -1098281839);\n\tsum2 = W(0, -1120767464, 1032914397, -1109760249, 1040094052)\n\t\t + W(1, 1016200567, 1009241688, -1122384418, 1032959032) + W(2, 1053966016, 1073793292, 1060302091, -1072585870)\n\t\t + W(3, -1094220304, -1113143087, 1028063795, -1104349617)\n\t\t + W(4, 1035968374, 1040357442, -1122023462, -1086238928)\n\t\t + W(5, -1172011891, 1043210576, 1025380203, -1119727737)\n\t\t + W(6, -1147532546, -1129131123, -1130362887, -1116834009)\n\t\t + W(7, 1036030945, 1015923256, 1017132829, 1019714285);\n\tWS(-1096343168, -1126236522);\n\tsum1 = W(0, 1030703603, 1007810299, 1040041675, 1047119465)\n\t\t + W(1, -1113575360, -1132527909, -1134236941, 1009418349)\n\t\t + W(2, -1108689250, -1119306439, -1096469888, -1085509191)\n\t\t + W(3, 1056154112, 1020253526, 1041829816, 1033231243) + W(4, 1038321302, 1031818658, 1053153171, -1089344732)\n\t\t + W(5, 1045446045, 999324634, -1115315934, -1107897834)\n\t\t + W(6, -1121378303, -1127608870, -1126859158, 1045457184)\n\t\t + W(7, -1144694086, 1029954693, 1019451938, 1026209383);\n\tsum2 = W(0, 983284602, 1016178696, 1029794920, 1029986296)\n\t\t + W(1, -1109420788, -1131549160, -1118046352, -1117716768)\n\t\t + W(2, 1020456556, -1144975071, -1114118472, 1041996066)\n\t\t + W(3, -1139464095, -1114876306, 1015095008, 983229178) + W(4, -1131636264, -1131007184, 997214653, 1053737341)\n\t\t + W(5, -1097949071, -1113647896, -1115559594, -1141234271)\n\t\t + W(6, 1015204808, 1022946788, 998054973, 1023304596) + W(7, 1029400914, 1024576522, -1124860928, -1131778280);\n\tWS(1054415488, 1031748714);\n\tsum1 = W(0, 1032036500, -1106849745, 1032905605, 998976710) + W(1, 1035586875, 1024707071, -1137244643, 1040319748)\n\t\t + W(2, 1016814449, 1048190511, 1025341687, 1051815981)\n\t\t + W(3, -1102465150, -1113968464, -1127337837, -1115415046)\n\t\t + W(4, -1098109636, -1110288412, -1090213441, 1042721902)\n\t\t + W(5, -1117518441, 1046144796, -1117570737, -1135047459)\n\t\t + W(6, 1018567785, -1119790601, 1041909072, 1029877301)\n\t\t + W(7, 1033626399, -1106536335, 1018599181, -1122513053);\n\tsum2 =\n\t\tW(0, 990440998, -1138393335, -1115155620, 1002996807) + W(1, -1122715509, -1107496177, -1109700727, -1100731818)\n\t\t+ W(2, -1103416430, -1121991569, -1128966950, -1100463136)\n\t\t+ W(3, -1095499559, 1010012987, 1000571127, 1048400711) + W(4, -1120602807, 1037302636, -1098451061, 1060125031)\n\t\t+ W(5, 1057202890, 1038403096, 1011003397, 1041385707) + W(6, 1034530622, -1117267403, 1032576586, -1114490937)\n\t\t+ W(7, -1120765719, -1126507430, 1027555951, -1105804206);\n\tWS(1057399616, 1074070393);\n\tsum1 = W(0, -1116946950, -1167692925, 1025124136, 1027460150) + W(1, 1033233658, 1043057687, 1031827147, 1036180887)\n\t\t + W(2, 1049855515, 1048650971, 1035712138, -1096264273)\n\t\t + W(3, -1093603523, -1089515076, -1102565613, -1089497938)\n\t\t + W(4, -1097294408, -1103643414, -1094845877, -1106323062)\n\t\t + W(5, 1045414146, 1057610273, 1043872372, 1048651645) + W(6, 1045229301, 1041758026, 1045455640, 1036926493)\n\t\t + W(7, 1036007790, -1123310040, 1012034194, 1034964477);\n\tsum2 = W(0, -1099019906, 1016280180, -1104956478, -1160553787)\n\t\t + W(1, -1115190705, 1040551613, -1110901592, 1043284947)\n\t\t + W(2, -1135117191, -1104821294, 1031344902, 1057285857)\n\t\t + W(3, -1108143797, -1096822242, -1121444630, -1108844527)\n\t\t + W(4, 1053230727, -1108236474, 1044240449, 1060881655)\n\t\t + W(5, -1141578351, -1110487530, 1033167055, -1097266933)\n\t\t + W(6, -1102919364, 1021862852, -1102746088, -1121198562)\n\t\t + W(7, -1107568696, 1027740054, -1115478973, 1039050835);\n\tWS(-1079272096, -1088198283);\n\tsum1 =\n\t\tW(0, -1150549691, -1136809437, 1035238887, -1114730926) + W(1, 1013948517, 1024493634, 1014747375, 1007675727)\n\t\t+ W(2, -1112293630, -1147892734, -1101200910, -1153686203)\n\t\t+ W(3, 1033312670, -1111552818, 993656219, -1115285591) + W(4, 1038263474, -1131332343, 1042949876, -1109365886)\n\t\t+ W(5, -1123815596, 1033656538, 999554974, 1031561484) + W(6, -1117531256, 1024124492, 1022854919, 1038223988)\n\t\t+ W(7, -1137128325, -1131368443, -1123012682, 983503863);\n\tsum2 = W(0, -1130912341, 933663296, 1024898014, 1026863962) + W(1, 1006981209, 1015250909, -1128875465, -1163156681)\n\t\t + W(2, -1131869901, 973137042, 1022547165, -1103034755)\n\t\t + W(3, 1032168251, -1122671508, 1002623282, -1124284861) + W(4, 1021624533, 1031913949, 1049231168, 1074345895)\n\t\t + W(5, 1046910286, 1033396431, 1015118461, 987851849)\n\t\t + W(6, -1116201618, -1114826138, -1097351564, -1074065991)\n\t\t + W(7, -1101411998, -1116799454, -1122428830, -1131138133);\n\tWS(1066898592, -1135257599);\n\tsum1 = W(0, -1110180874, -1104421608, -1108282395, -1109212258)\n\t\t + W(1, -1112266449, -1104815307, -1117810340, -1107536862)\n\t\t + W(2, 1039457202, 1036077428, 1042328969, 1047234565)\n\t\t + W(3, -1102031401, -1101771699, -1107974833, -1105991798)\n\t\t + W(4, -1099722419, -1109956850, -1108344348, 1050666829)\n\t\t + W(5, 1052651555, 1056795268, 1044347095, 1052879183) + W(6, 1033603984, 1025966004, 1027866348, -1127852161)\n\t\t + W(7, -1117920074, -1103088922, -1114797145, -1109126692);\n\tsum2 = W(0, -1109573955, -1130272686, -1112628352, -1135365682)\n\t\t + W(1, -1127976571, -1109041460, -1141484375, -1124075328)\n\t\t + W(2, 1053252716, -1099761318, 1053124236, 1015950468)\n\t\t + W(3, 1055173972, 1056516595, -1111992284, -1111067004)\n\t\t + W(4, -1111963093, 1023415227, 1036225124, -1098416341)\n\t\t + W(5, 984548524, -1099834172, -1115296758, -1123095583)\n\t\t + W(6, -1104024699, -1113318439, -1113101390, 989675628)\n\t\t + W(7, -1113626094, 1021900236, -1121224929, 1035158074);\n\tWS(-1080514464, 1071098312);\n\tsum1 = W(0, 1029423638, 1032590577, 1026820152, 1032314563)\n\t\t + W(1, -1121041060, -1118573868, -1120807462, -1138006521)\n\t\t + W(2, -1104998922, -1109637973, -1100165641, 1052963835)\n\t\t + W(3, 1049180397, 1051364482, 1040988017, 1046351030) + W(4, 1034143047, 1035675859, 1041959039, 1044386890)\n\t\t + W(5, -1094089003, -1091683740, -1104568584, -1100071438)\n\t\t + W(6, -1121480226, -1116754806, -1119258414, -1124675269)\n\t\t + W(7, -1141724766, 1026232616, -1142663074, -1128189972);\n\tsum2 = W(0, -1103917515, 1015651007, -1110033797, -1102760582)\n\t\t + W(1, -1111112749, 1038662254, -1114159185, 1037944898)\n\t\t + W(2, 1047440331, -1161898742, 1037971494, 1064882055)\n\t\t + W(3, -1094052244, -1095531648, 1028288648, -1103088589)\n\t\t + W(4, 1045127249, -1107946310, 1032097498, 1062501861)\n\t\t + W(5, -1097807648, -1103513552, 1000704926, -1103412727)\n\t\t + W(6, -1101094893, 1034127906, -1105034150, -1105985747)\n\t\t + W(7, 952358760, 1029080884, -1115269879, 1036625418);\n\tWS(1048356096, 1025975827);\n\tsum1 = W(0, -1127785256, -1122099232, -1101696686, 1026577988)\n\t\t + W(1, 1038799529, 1035389109, 1026796836, 1026531900) + W(2, 1042988217, 1042373466, 1057753530, 1024353684)\n\t\t + W(3, -1089144738, -1100403603, -1117105634, -1118224663)\n\t\t + W(4, -1143337570, -1109964850, -1091154007, 1027827940)\n\t\t + W(5, 1052285203, -1125657656, -1109515886, -1110632314) + W(6, -1113788528, 985728647, 981326605, 1025248769)\n\t\t + W(7, 1031883373, 1042938314, 1041478413, 1024598728);\n\tsum2 = W(0, 1012220951, -1116521159, -1112142878, 1029633040)\n\t\t + W(1, -1134401830, -1123437332, -1127274631, -1127142758)\n\t\t + W(2, -1127410563, -1105350472, 1052174871, -1097063130)\n\t\t + W(3, -1157154125, 1029744370, -1133421881, 1031896001)\n\t\t + W(4, -1133847817, 1023881724, 1044599155, -1106094805)\n\t\t + W(5, 1059986787, -1111846084, 1028497368, -1111750394)\n\t\t + W(6, -1150652997, -1121646209, -1123898264, 1019540966)\n\t\t + W(7, -1101447493, -1113752268, -1115689394, -1144497399);\n\tWS(1047538944, -1094881626);\n\tsum1 = W(0, -1131292909, -1116924690, -1112297452, 1021777101)\n\t\t + W(1, 1043477817, -1116873677, -1148100662, -1142312694)\n\t\t + W(2, 1026526343, 1015768341, 1061821276, 1006944475) + W(3, -1091685625, 1042550748, -1112344306, 1025260793)\n\t\t + W(4, -1137367995, 1040643394, -1088680894, -1090839121)\n\t\t + W(5, 1059324523, -1162815447, 1036475455, 1009991259)\n\t\t + W(6, -1137761291, -1105713526, 1031500559, -1122499811)\n\t\t + W(7, -1107169411, -1119456201, 998501030, 1032218389);\n\tsum2 = W(0, 1018368946, 1027383442, 1026347909, -1120907217)\n\t\t + W(1, -1113638165, 1015876554, -1121952605, -1157376536)\n\t\t + W(2, -1112001321, -1114299623, -1159080892, 1048017951)\n\t\t + W(3, 1043117803, -1117678872, 1016312397, -1122492527)\n\t\t + W(4, -1120361628, -1113414147, -1114902877, 1047229175)\n\t\t + W(5, 1034197636, -1153448320, 1030999359, -1146986041)\n\t\t + W(6, -1136144308, 995591994, -1130300135, -1113455406)\n\t\t + W(7, -1104824263, -1135559770, -1116260909, 1024817261);\n\tWS(1059019584, -1093542352);\n\tsum1 = W(0, -1118590060, 1036739212, -1117950862, 1044992135)\n\t\t + W(1, 1031932973, -1157350427, 1018600951, -1135788111)\n\t\t + W(2, 1030085820, -1117660736, 1053611807, -1088498407)\n\t\t + W(3, -1106481599, 1041316489, 1033416637, 1042914684) + W(4, 1044414089, 1037660574, 1035930184, -1087395836)\n\t\t + W(5, 1044296603, -1101366685, -1113146202, -1105147443)\n\t\t + W(6, -1139295455, 1017695255, -1132182919, 1041445842)\n\t\t + W(7, -1162575911, 1028651518, 1029799946, 1024137952);\n\tsum2 = W(0, -1139124704, -1129149604, -1112674264, 1041796064) + W(1, 1023328190, 983636161, -1131439188, 968306692)\n\t\t + W(2, -1098733365, -1096002059, -1099326395, 1042574015)\n\t\t + W(3, 993486752, 1013026008, -1121650464, 1025526661) + W(4, -1134878408, -1139933424, 1006823136, 1054885382)\n\t\t + W(5, 1040771663, 1012616072, -1119789204, 1007743024) + W(6, 1017748092, -1120672660, 1007868832, 1038924927)\n\t\t + W(7, -1118903044, -1117420588, 1032346590, 1016029412);\n\tWS(1034201600, 1032755867);\n\tsum1 = W(0, -1153568391, 1027758260, -1120836106, -1106713574)\n\t\t + W(1, -1110497539, -1113115007, -1129181937, -1106649828)\n\t\t + W(2, -1096012775, -1105013167, -1096428191, 1052356477)\n\t\t + W(3, 1040996254, 1046162344, 1026611286, 1046578147) + W(4, 1054286804, 1040809774, 1052819554, 1045456334)\n\t\t + W(5, -1104715738, -1106901340, -1119554608, -1111616164)\n\t\t + W(6, -1151613767, -1113241540, -1109787424, -1103823871)\n\t\t + W(7, -1140335480, -1136669162, -1129950605, 1018423993);\n\tsum2 =\n\t\tW(0, -1116195452, -1114916062, 1015539387, 1031939547) + W(1, 1004500534, 1002967134, -1116253852, 1037899637)\n\t\t+ W(2, 1046553581, 1044137813, 1039450853, -1081686100) + W(3, -1106570618, 1023858175, 1032662783, 1018521363)\n\t\t+ W(4, 1060291180, 1067697792, 1056432615, -1075409426) + W(5, -1100622921, 1018449047, 1002080710, -1106597825)\n\t\t+ W(6, -1133268119, 1023665145, 1037512606, 1033868463) + W(7, 1015733077, -1120650920, 1016550645, 1008358731);\n\tWS(-1092032128, -1114982082);\n\tsum1 = W(0, 1022785838, 1030256707, 1019093490, -1129380878)\n\t\t + W(1, -1136259347, -1112386231, -1119087591, -1105547264)\n\t\t + W(2, -1092594901, -1096516325, -1091986421, 1046024022)\n\t\t + W(3, -1122621159, 1047446468, 983613607, 1044817638) + W(4, 1053421570, 1038780564, 1047196191, 1055287349)\n\t\t + W(5, -1127922606, -1103792760, -1127804734, -1107803612)\n\t\t + W(6, -1131318086, -1117764855, -1114799192, -1136363407)\n\t\t + W(7, -1144800614, 1031400745, -1141783466, 1035179430);\n\tsum2 =\n\t\tW(0, 1041280609, -1122718101, 1032208518, -1105883428) + W(1, 1032385022, -1105712369, 1026423073, -1100029914)\n\t\t+ W(2, -1101864626, -1105911709, -1098031958, 1058683727)\n\t\t+ W(3, -1120084233, 1049511237, -1101782173, 1048360263)\n\t\t+ W(4, -1094055741, -1103824921, -1096453130, 1064792422) + W(5, 1036982526, 1028614917, 1024411853, 1045846387)\n\t\t+ W(6, 1033694830, -1107222411, -1124818562, -1108861898)\n\t\t+ W(7, -1126293810, -1108778587, 1022233154, -1104838815);\n\tWS(-1109129728, 1010433912);\n\tsum1 = W(0, -1117250164, 1006908285, -1122855062, -1107144297)\n\t\t + W(1, -1106683568, -1123315850, -1130212999, -1125685047)\n\t\t + W(2, -1096823624, -1105899410, -1092542200, 1057728383)\n\t\t + W(3, 1037050434, 1026000812, -1117617698, -1122267030) + W(4, 1040646763, 1019351431, 1052048931, 1064635860)\n\t\t + W(5, -1117087348, -1107858814, -1107016783, -1100117973)\n\t\t + W(6, 1019407999, -1137630799, -1109418342, -1105008732)\n\t\t + W(7, -1114857797, 1029923270, -1137382471, 1034575732);\n\tsum2 = W(0, -1153548328, -1146428548, -1122720334, -1131960189)\n\t\t + W(1, -1105417557, -1140382642, -1130524097, 1025793768)\n\t\t + W(2, -1138461074, 1040260969, 1050908092, 1057542522)\n\t\t + W(3, 1046314824, -1105004761, 1024281381, -1110366356)\n\t\t + W(4, -1109953492, -1109276610, -1119113122, -1109440842)\n\t\t + W(5, 1008998438, -1140136790, -1119699464, -1135544654)\n\t\t + W(6, 970383811, 1016706951, -1113772244, -1149783528)\n\t\t + W(7, -1111645386, -1114961145, -1128062487, -1113390177);\n\tWS(1028043776, 1066748487);\n\tsum1 =\n\t\tW(0, 1020869188, 1029235758, -1130366216, 1035504777) + W(1, 1043701316, 1028701624, -1140377801, -1122144394)\n\t\t+ W(2, 1042153037, -1142684082, 1055996350, 1053860476)\n\t\t+ W(3, -1085695847, -1103910983, -1112356264, -1125763849)\n\t\t+ W(4, -1114798157, -1109061593, -1084468040, 1054127718)\n\t\t+ W(5, 1050138268, -1111428405, -1142788434, -1122964802)\n\t\t+ W(6, -1111756535, 1025123714, 1039957533, 1020063133) + W(7, 1020852591, 1027291444, 1023500800, -1137256281);\n\tsum2 = W(0, -1124029698, 924100096, -1114278109, -1110737625)\n\t\t + W(1, -1113250169, -1121059730, 998717971, -1125884533)\n\t\t + W(2, -1129530165, -1119644642, -1119677450, 1050522694)\n\t\t + W(3, 1031715210, -1121636434, -1145009875, -1119348450)\n\t\t + W(4, -1125964837, 1007880106, 1030663674, 1051750384)\n\t\t + W(5, -1120664914, -1117515026, -1122454562, 1010693450)\n\t\t + W(6, 1021970837, -1133743274, -1118803866, -1114387111)\n\t\t + W(7, 999385235, 1025411170, 1019195093, -1127692741);\n\tWS(1060837696, -1133947077);\n\tsum1 =\n\t\tW(0, -1111653883, 1028161858, 1026751705, 1035200691) + W(1, 1000443428, -1124636570, -1153569903, 1010162044)\n\t\t+ W(2, 1043511426, -1107876293, 1032976162, -1100826286)\n\t\t+ W(3, 1046154066, -1109841015, 1028652293, -1123706233) + W(4, 1035524535, 1015032078, 1051427819, -1104551490)\n\t\t+ W(5, 1014718172, -1105048272, -1150803951, -1122173975)\n\t\t+ W(6, -1102491073, -1120891991, -1107214884, -1125941943)\n\t\t+ W(7, 1038586510, 1029969865, 1023653077, 990755503);\n\tsum2 = W(0, -1109148006, 1027230711, -1141349815, -1115012616)\n\t\t + W(1, 1025861327, -1129789352, 1018453676, 1031045509)\n\t\t + W(2, -1124907300, -1130116966, -1099589874, 1033368851)\n\t\t + W(3, -1097709653, 1048790586, -1111271581, 1042673858)\n\t\t + W(4, -1092637531, -1092832201, -1085994041, 1040685020)\n\t\t + W(5, 1063174823, 1056989663, 1049450817, 1044673285) + W(6, 1058387135, 1052271642, 1062146597, 1019043320)\n\t\t + W(7, -1085821967, -1089224415, -1100831168, -1096709646);\n\tWS(1052991104, 1024635730);\n\tsum1 = W(0, 1035832004, -1113667962, -1115665493, -1099876558)\n\t\t + W(1, -1124670698, -1123144798, -1141396670, 991927035)\n\t\t + W(2, 1054985227, 1053766219, 1046292645, -1128304655) + W(3, -1115760280, 1032906080, 1011324759, 1032830229)\n\t\t + W(4, -1101014640, 1027437528, -1097461637, -1148766910)\n\t\t + W(5, -1103841730, 1048476772, 1034147624, 1048946541)\n\t\t + W(6, -1119430356, -1121298600, 1029858016, -1098528437)\n\t\t + W(7, 1026860541, -1107490221, -1114702739, -1098098175);\n\tsum2 = W(0, 1023525971, -1123155104, 1037524511, -1119336486)\n\t\t + W(1, -1120201684, -1140931614, 1025256785, -1116496860)\n\t\t + W(2, -1101540780, -1081244300, -1094597742, 1068940029) + W(3, 1051860638, 998725346, 1002156586, 1038812729)\n\t\t + W(4, -1109590196, -1107189914, 1026840221, 1038949441)\n\t\t + W(5, 1014639773, -1110977051, -1117345859, 1033886084) + W(6, -1124206084, 989815561, 979200786, 1039597181)\n\t\t + W(7, -1126284432, -1128575576, -1123250336, -1117282785);\n\tWS(-1106197760, -1107941957);\n\tsum1 = W(0, -1126741205, 992223587, -1103296147, -1096167611)\n\t\t + W(1, -1103227950, 1041994672, -1124973941, 1027666259)\n\t\t + W(2, 958134964, -1096404880, 1050569383, -1089676235) + W(3, 1032016157, 1020956357, -1180953690, 1043412107)\n\t\t + W(4, 1042417753, -1114006205, 1053212362, -1101748223) + W(5, 1057274419, 1042030605, 1049652990, 1052224033)\n\t\t + W(6, -1131232109, -1156891819, -1104768673, -1105076618)\n\t\t + W(7, -1101041056, -1124618361, -1114495652, -1117167007);\n\tsum2 = W(0, -1114619118, -1149001791, -1110825372, -1090736686)\n\t\t + W(1, -1106216772, 1027272732, 1033544093, -1120615480) + W(2, 1033666378, 1045400432, 924614016, 1063026008)\n\t\t + W(3, -1114127208, -1108719036, 1032301903, -1114760302)\n\t\t + W(4, 1015708744, -1103940412, -1107881456, 1059931802)\n\t\t + W(5, -1107266078, 1024735270, -1134995311, 1034226031)\n\t\t + W(6, 1027002418, -1125963088, -1103385448, -1091159350)\n\t\t + W(7, -1139192735, -1125128312, 1019689496, 1032462491);\n\tWS(-1076602784, -1079939509);\n\tsum1 = W(0, 1033209209, -1124683769, 1015980198, -1141354248)\n\t\t + W(1, -1106007132, -1114123684, -1121157953, 1019464370)\n\t\t + W(2, -1103738752, -1119780485, -1096323000, 1042233324)\n\t\t + W(3, 1054450248, 1052850909, 1043529432, 1045060053) + W(4, 1025390185, 1041533536, 1052087227, 1039917313)\n\t\t + W(5, -1105614956, -1098158311, -1107965437, -1103437636)\n\t\t + W(6, 1002177000, -1112424745, -1104846498, -1113895617)\n\t\t + W(7, -1119444855, -1112376802, 1021969694, -1109951699);\n\tsum2 =\n\t\tW(0, 1032197744, -1119329897, 1026978731, 1042368013) + W(1, 1034747948, -1109569271, 1037031349, -1111213511)\n\t\t+ W(2, -1106233686, -1117977933, -1119744119, -1074309068)\n\t\t+ W(3, 1068607081, 1064708176, -1119111329, 1041980892) + W(4, -1119285117, 1035649904, 1046616172, -1080074847)\n\t\t+ W(5, 1045039448, 1043980108, 1029320825, 1028259198) + W(6, 1036373860, -1113988579, -1150690390, -1148379867)\n\t\t+ W(7, 1031972703, -1113275705, 1015848847, 1008019670);\n\tWS(-1093673600, -1131421273);\n\tsum1 = W(0, -1121371719, -1126420325, 1033366837, 1021303790)\n\t\t + W(1, -1117842165, 1011797877, 1021502382, -1131840478)\n\t\t + W(2, -1114120908, -1110871822, -1087025669, -1118558279)\n\t\t + W(3, 1056872571, 1032969664, 1037611499, 1040800018) + W(4, 1035660544, 1021798446, 1058317703, 1042294182)\n\t\t + W(5, -1088792724, -1114500968, -1111697864, 1017988942)\n\t\t + W(6, 1009001293, 1008740253, -1120291359, 1022689127)\n\t\t + W(7, 1031810222, -1148303562, -1137856917, -1121301883);\n\tsum2 = W(0, -1145039688, -1129835426, -1119915157, -1110668832)\n\t\t + W(1, -1111519800, 1002833896, -1127947266, 1006052904)\n\t\t + W(2, -1114206314, -1119983153, -1121785409, 1051729955)\n\t\t + W(3, 1012089860, -1118223897, -1130809610, -1123764449)\n\t\t + W(4, -1116540509, -1113040628, -1118504757, 1051989643)\n\t\t + W(5, 1039755978, 1025479957, -1158783904, -1127132522) + W(6, 1020565626, 1000979816, 989230112, -1112437186)\n\t\t + W(7, -1112214518, 1015165050, -1128941978, 1025956493);\n\tWS(1065682080, -1111828541);\n\tsum1 = W(0, 1015869752, 1017604463, -1112250175, 1024786188) + W(1, 1036568133, 1002255762, -1131800664, 982208647)\n\t\t + W(2, -1145885026, -1115077208, 1052074397, -1121697500)\n\t\t + W(3, -1086889687, 1045248549, -1130857684, 1037568127)\n\t\t + W(4, 1022264616, 1021224792, -1089954536, 1047440331)\n\t\t + W(5, 1049268572, -1109225970, -1123514660, -1113425822)\n\t\t + W(6, -1126764880, 1032942526, 1040282413, 1035803452)\n\t\t + W(7, -1125683619, 1031850711, -1141787602, 1017131424);\n\tsum2 = W(0, -1122978131, 1016040732, -1114060649, -1125004872)\n\t\t + W(1, 1029971540, 1026938249, 1017189437, -1124460348) + W(2, 1016858600, 968811648, 1029169324, 1051074882)\n\t\t + W(3, 1006053609, -1154135582, -1115290499, -1140773838)\n\t\t + W(4, 1028741871, 1021399769, 1032336595, 1031746308)\n\t\t + W(5, -1103346234, -1113140779, -1141169189, -1122277912)\n\t\t + W(6, 993636865, -1144040913, -1118019503, -1109484363)\n\t\t + W(7, -1124468225, 1013417282, -1169769501, -1139883250);\n\tWS(1068575136, 1057679145);\n\tsum1 = W(0, -1106541599, 1008215334, 989927934, 1042310507) + W(1, 1018512183, 1040070410, 1014261304, 1041475113)\n\t\t + W(2, 1049880682, 1049251178, 1026486412, -1095539136)\n\t\t + W(3, -1094672658, -1089191083, -1100618939, -1087252724)\n\t\t + W(4, -1093397815, -1111487207, -1092992340, -1103138323)\n\t\t + W(5, 1043830943, 1057944056, 1044894993, 1049811244) + W(6, 1052783569, 1042509671, 1051194971, 1040579493)\n\t\t + W(7, 1038856114, -1114567880, 1025292508, 1038361721);\n\tsum2 =\n\t\tW(0, -1114445084, -1136765855, 1039574032, -1113238946) + W(1, 1030357662, -1106803932, 964162478, -1113028634)\n\t\t+ W(2, 1053593458, 1055007475, -1105638736, -1078800745) + W(3, -1104375874, 1059224194, 1050059734, 1035501186)\n\t\t+ W(4, 1057823779, 1054334485, -1096181786, -1078443122) + W(5, 1049857835, 1058193036, 1043677394, 1029634285)\n\t\t+ W(6, -1150175899, -1141017037, 1042094581, -1134493359)\n\t\t+ W(7, 1020483059, -1099695416, -1118569338, -1110238952);\n\tWS(-1069843280, 1043992756);\n\tsum1 =\n\t\tW(0, -1124948267, -1135429253, 1025550072, 1025838726) + W(1, 1019242118, -1116233196, 998797102, -1130610171)\n\t\t+ W(2, 1027695014, -1119099178, 1044103833, -1113789227) + W(3, 1039477491, 1024839950, -1142719774, 1028120504)\n\t\t+ W(4, -1108770183, 1017935435, -1112757821, -1130965835)\n\t\t+ W(5, 1042243413, -1101790135, 1012540023, -1106167085) + W(6, 1008956039, -1129507307, 1030807982, 1014849865)\n\t\t+ W(7, -1114625158, 1035190516, -1127852007, 1023573770);\n\tsum2 = W(0, -1114838118, -1121247640, -1095359738, -1072953064)\n\t\t + W(1, -1093135708, -1115141896, -1116140314, -1127503160)\n\t\t + W(2, 1026300352, 1028491168, 1053083344, 1074653957) + W(3, 1056568596, 1033233928, 1030713448, 1023653964)\n\t\t + W(4, 1004928481, -1130258048, 1024432884, -1102013621)\n\t\t + W(5, 1030571276, -1116002270, 1015669456, -1129660856)\n\t\t + W(6, -1130791968, -1127851536, 1025789396, 1030571860)\n\t\t + W(7, 984097412, 1025870428, -1120604784, 1016702232);\n\tWS(1066802848, -1129257078);\n\tsum1 = W(0, 1015630667, -1118978065, -1113784260, -1101616805)\n\t\t + W(1, -1108037466, -1114908350, -1114956027, -1111947911)\n\t\t + W(2, 1033473243, -1155453851, 1035395194, 1065736411) + W(3, 1045542397, 1040181775, -1177594330, 1036229652)\n\t\t + W(4, -1104672775, -1122431286, -1115117829, 1061324843)\n\t\t + W(5, -1100789945, -1114134583, -1124148059, -1138173719)\n\t\t + W(6, -1114728473, -1121467910, -1105320751, -1095556296)\n\t\t + W(7, -1104703871, -1109993148, -1111474306, -1106051686);\n\tsum2 = W(0, -1109560646, -1134031950, -1107125821, 1017238679)\n\t\t + W(1, 1024343484, -1127256871, 1004378333, -1129735047)\n\t\t + W(2, -1155123513, -1108713026, 1038996664, 1026897780)\n\t\t + W(3, -1107646918, -1107869542, -1112902766, -1145442397)\n\t\t + W(4, 1035199782, -1107664082, 1043157052, 1051508948) + W(5, 1055083262, 998755997, -1159444594, 1012570830)\n\t\t + W(6, -1115008786, 1019412439, -1123597732, 1016515095)\n\t\t + W(7, -1106563795, -1116358964, -1117600772, -1110777694);\n\tWS(-1093453440, 1062530498);\n\tsum1 = W(0, -1124930739, 1018166794, -1109529502, -1114300581)\n\t\t + W(1, 1025096231, 1023247327, 998443854, -1125424515) + W(2, -1115495349, -1109318263, 1024699176, 1040214918)\n\t\t + W(3, -1105577322, 1043329716, -1123543752, 1034740398) + W(4, 1025637074, 1039727605, 931786146, 1052285453)\n\t\t + W(5, 1009762919, -1105534248, 988548151, -1116356474)\n\t\t + W(6, 1023868966, 1023563962, -1131885027, -1104984446)\n\t\t + W(7, -1110072888, -1137647791, -1123805240, 1018092315);\n\tsum2 = W(0, -1116378324, -1110334365, -1139723269, -1134041225)\n\t\t + W(1, -1147091114, -1112237914, -1123080609, -1131603942)\n\t\t + W(2, 1018118074, -1135013993, -1117515615, -1097345050)\n\t\t + W(3, 1039717826, -1107830137, 1032288465, 978891919) + W(4, 1027066059, 1002595554, 1053899571, 1043336959)\n\t\t + W(5, 1040668505, 1010598309, 1016807738, 1026333875)\n\t\t + W(6, -1110082211, -1111471528, -1114430561, 1040454031)\n\t\t + W(7, 1033656482, -1117546906, -1115822981, -1119917138);\n\tWS(1067735712, -1080534052);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[525];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define temp_tex(pos) (float(texture(temp, pos).x))\nstatic const float2 temp_size = float2(GetInputSize().x * 1, GetInputSize().y * 2);\nstatic const float2 temp_pt = float2(1.0 / (temp_size.x), 1.0 / (temp_size.y));\n\n#define HOOKED_tex(pos) temp_tex(pos)\n#define HOOKED_size temp_size\n#define HOOKED_pt temp_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 525; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (1)) + 0.5, float(group_base.y + y - (3)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[8];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 6];\n\tsamples[1][3] = inp[local_pos + 7];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 19];\n\tsamples[3][1] = inp[local_pos + 20];\n\tsamples[3][2] = inp[local_pos + 21];\n\tsamples[3][3] = inp[local_pos + 22];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 32];\n\tsamples[4][3] = inp[local_pos + 33];\n\tsamples[5][0] = inp[local_pos + 34];\n\tsamples[5][1] = inp[local_pos + 35];\n\tsamples[5][2] = inp[local_pos + 36];\n\tsamples[5][3] = inp[local_pos + 37];\n\tsamples[6][0] = inp[local_pos + 45];\n\tsamples[6][1] = inp[local_pos + 46];\n\tsamples[6][2] = inp[local_pos + 47];\n\tsamples[6][3] = inp[local_pos + 48];\n\tsamples[7][0] = inp[local_pos + 49];\n\tsamples[7][1] = inp[local_pos + 50];\n\tsamples[7][2] = inp[local_pos + 51];\n\tsamples[7][3] = inp[local_pos + 52];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 18];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(2, 1);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1) + ivec2(1, 0), ret);\n}\n"
  },
  {
    "path": "src/Effects/NNEDI3/NNEDI3_nns32_win8x6.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: nnedi3.py --nns 32 --win 8x6 --use-compute-shader --use-magpie\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME NNEDI3_032_6\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 1 * 2\n//!HEIGHT INPUT_HEIGHT * 2 * 1\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH * 1\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D temp;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_temp;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC NNEDI3 (double_y, nns32, win8x6)\n//!IN INPUT\n//!OUT temp\n//!BLOCK_SIZE 32, 16\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[12]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 12; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 48.0;\n\tfloat mstd1 = sumsq / 48.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, -1120567290, 994153301, -1139074345, 1021572063)\n\t\t + W(1, -1117468940, -1119615974, -1132374181, 1016607238)\n\t\t + W(2, 992947237, -1137843051, -1125619459, 1000210819)\n\t\t + W(3, -1132591953, -1122316900, 1053527378, -1096186409)\n\t\t + W(4, -1144213939, -1121684346, -1125130389, -1146864427)\n\t\t + W(5, 1046512564, 1056444330, -1138699933, -1129869365)\n\t\t + W(6, -1117911182, 1031756856, -1093298645, 1051252577) + W(7, 1023905988, 979248533, -1119806663, 1024055745)\n\t\t + W(8, -1112059294, -1109040755, 1033651817, -1119537890)\n\t\t + W(9, -1121091407, 1003125923, -1120338466, -1148456803)\n\t\t + W(10, -1133630411, -1141776739, -1126690796, 1029429758)\n\t\t + W(11, -1110173889, -1113641375, 1032546877, -1127458445);\n\tsum2 =\n\t\tW(0, -1126549409, 1022573468, -1140490164, -1114833146) + W(1, 1021805248, 1003196031, -1119263575, -1114028928)\n\t\t+ W(2, -1119708173, 1024108770, -1146392599, -1113990054)\n\t\t+ W(3, 1019494412, -1116443736, 1032492771, 1037187519) + W(4, 1026983682, 1006796332, -1124834267, -1099458226)\n\t\t+ W(5, 1055169273, 1055452063, -1095922228, -1126677517) + W(6, 1007192676, 1017309436, 1044169825, -1106256028)\n\t\t+ W(7, -1122158651, 1022777176, -1122284082, -1118444706)\n\t\t+ W(8, 1039787167, -1112035826, -1118290710, -1130573089)\n\t\t+ W(9, -1127647730, -1121042004, -1145097543, -1125070906)\n\t\t+ W(10, -1129575364, -1123455912, 1010488320, -1109973330)\n\t\t+ W(11, 1044065299, -1121131548, -1121253833, 1019346120);\n\tWS(1060265584, 1063714812);\n\tsum1 = W(0, 1021450242, -1128788280, -1111111528, 1039397963)\n\t\t + W(1, -1131322533, 1011253684, -1123065753, 1022311347) + W(2, 999728711, -1108349889, 1022720848, 974355898)\n\t\t + W(3, -1137050988, 1028928107, -1119265827, 1026074151)\n\t\t + W(4, 1019796282, -1136338948, 1021294882, -1140362288)\n\t\t + W(5, -1137639751, -1102959280, 1043907075, 1025863841)\n\t\t + W(6, -1118036885, 1024570351, -1101623708, 1041760911)\n\t\t + W(7, -1151514983, -1136816500, 1009531192, 1035626828)\n\t\t + W(8, -1106406289, 1036057270, -1132552740, 1027651305)\n\t\t + W(9, -1118665549, 1025121435, -1128138578, 1017790822)\n\t\t + W(10, -1124857459, -1139070668, 992320459, 1029327365)\n\t\t + W(11, -1106167682, 1037788386, -1134343810, 1024478285);\n\tsum2 = W(0, 1023758242, -1130878336, -1120671625, 1027498838)\n\t\t + W(1, -1144315403, -1131041230, -1124053764, 1017938673)\n\t\t + W(2, -1145138723, 1027873020, -1122179044, -1127336921)\n\t\t + W(3, 1000956747, 1028583936, 1005174931, 1053869854) + W(4, -1093535895, 1009416925, -1122894214, 1031015106)\n\t\t + W(5, -1104963408, 1073183850, -1074622268, 1033668418) + W(6, 999883691, 994031846, 1001047899, 1053107786)\n\t\t + W(7, -1094361386, 990806038, 1004424067, 999096115) + W(8, -1126082311, 1035733703, -1114468554, 992895974)\n\t\t + W(9, -1150041590, -1134395125, 1002728051, 1022225293)\n\t\t + W(10, -1123867271, -1131337021, 1009546537, 1005722235)\n\t\t + W(11, -1135618057, 1023923178, -1126165581, -1138321549);\n\tWS(1067199072, 981674447);\n\tsum1 =\n\t\tW(0, -1113726457, -1105288827, 1040785760, 1032552483) + W(1, -1124907206, -1139898486, 1018794771, -1113372949)\n\t\t+ W(2, -1099180638, 1040483381, -1114167068, -1127069135)\n\t\t+ W(3, -1115871564, -1095136821, 1050678235, 1054762461)\n\t\t+ W(4, -1107257499, -1118671794, 1008735750, -1102105679)\n\t\t+ W(5, 1052734745, 1065065389, -1097429016, 1035770473) + W(6, -1125817867, -1103744656, 1044281884, 1044820043)\n\t\t+ W(7, -1104994292, -1122788302, -1125149117, -1108798620)\n\t\t+ W(8, 1033282170, -1097094388, 1027211226, -1125646899)\n\t\t+ W(9, 1001830321, -1137689902, -1121192922, 1010644366)\n\t\t+ W(10, -1114303237, -1123221796, 1016463803, -1099284685)\n\t\t+ W(11, 1032013917, -1124668651, 1015961570, -1114483455);\n\tsum2 =\n\t\tW(0, -1124538541, 1021627528, -1127440395, 1027300307) + W(1, 1020622605, -1130074937, -1139313841, 989560618)\n\t\t+ W(2, 1028695072, 1011050585, 999023778, 1015498074) + W(3, -1119374292, 1014774531, -1102978428, 1052523334)\n\t\t+ W(4, -1119874204, -1126569197, 1010830983, 1026431506)\n\t\t+ W(5, -1087762234, 1053318756, 1038687085, -1128231773)\n\t\t+ W(6, 1020827626, -1118520012, 1027251929, -1113197028) + W(7, 1029469191, 1018969905, -1125616841, 1018739126)\n\t\t+ W(8, -1109480314, 1034265115, -1125820221, -1123965604)\n\t\t+ W(9, 1008596323, 1014458179, 1023848922, -1134832277)\n\t\t+ W(10, -1159659466, 1024095771, -1136528497, -1129452021)\n\t\t+ W(11, -1132845253, 1022117249, -1150305989, -1130502215);\n\tWS(-1082327904, -1101742629);\n\tsum1 =\n\t\tW(0, -1128942355, 994965062, -1116531225, 1027052286) + W(1, -1127603958, 1021969515, 1007179909, -1124051394)\n\t\t+ W(2, 1022855203, -1119991818, 1015495233, -1129777663)\n\t\t+ W(3, -1172666584, 1029361427, 1044526075, -1110346311) + W(4, 1026992677, 1017142675, -1115398989, 1047686461)\n\t\t+ W(5, -1095192109, -1106285700, 1037065627, -1113404469)\n\t\t+ W(6, -1145393643, 1028067431, -1123739865, 1043850022)\n\t\t+ W(7, -1119388383, -1130059467, -1126910957, 1025118144)\n\t\t+ W(8, -1116394763, 1030498357, 1013662917, 1016457699)\n\t\t+ W(9, -1153678686, -1121058723, -1123838961, 1032721886)\n\t\t+ W(10, -1119902562, -1131255799, -1127439210, 1018201755)\n\t\t+ W(11, -1120454737, 1034890279, 1021249778, 1017348651);\n\tsum2 =\n\t\tW(0, 1014279427, -1130890464, -1129394348, 1014973315) + W(1, -1152876382, 1004833335, -1131491186, -1137235679)\n\t\t+ W(2, 1024729347, -1130557096, -1150339726, -1141673719)\n\t\t+ W(3, 1026571161, -1097554196, 1048952496, 1014221291) + W(4, 1016692910, -1159625756, 1042930837, -1073378768)\n\t\t+ W(5, 1073588633, -1105375875, 1035354953, -1124590261) + W(6, 1025279833, -1092458255, 1053816664, 1016092170)\n\t\t+ W(7, -1129170378, 989537980, 993445038, -1130245298) + W(8, 1029166823, -1119905200, 1027382919, -1138326931)\n\t\t+ W(9, -1133457551, -1120075373, 1030737081, -1147013927)\n\t\t+ W(10, -1124802440, 1017200998, 1014707171, -1135266971)\n\t\t+ W(11, -1151431678, -1161525308, 979085751, 1009604643);\n\tWS(1067891072, -1132872541);\n\tsum1 =\n\t\tW(0, 1025237873, -1122834636, -1117007553, -1114151507) + W(1, 1031366707, 984935338, 1014334757, 1020114356)\n\t\t+ W(2, -1118569017, 976917621, 1039451348, -1152616053) + W(3, 1030238795, -1105197551, 1049984500, -1088419628)\n\t\t+ W(4, 1049092386, -1123762161, 1029025473, -1121917372)\n\t\t+ W(5, -1114461425, 1051488823, 1008484089, -1145922699) + W(6, 1007260181, 1038150728, -1084792932, 1053317187)\n\t\t+ W(7, -1122288663, 1012164149, -1121222990, 1024596920) + W(8, 1039495098, 987986858, -1131993235, 1000937675)\n\t\t+ W(9, 988616634, 1024170379, -1124531763, 1026119523) + W(10, 1022258228, 1011615629, -1123834925, 1015271403)\n\t\t+ W(11, 1027254009, 993078101, 999667975, 1004174827);\n\tsum2 = W(0, -1144599930, -1116760996, 1032730282, 1032901632)\n\t\t + W(1, 985378521, -1129170670, -1136232721, 1019759527)\n\t\t + W(2, -1125055029, 1027655943, 1005941018, -1131155477)\n\t\t + W(3, -1137221455, -1111064134, 1047170030, -1115058011)\n\t\t + W(4, -1129460922, -1129924333, -1128645029, 1041961890)\n\t\t + W(5, 1050767412, -1130649513, 1019394239, 1022276751)\n\t\t + W(6, -1151231836, 1036336113, -1093680614, -1116185015)\n\t\t + W(7, -1115704458, -1148456898, -1156748756, 1033905549)\n\t\t + W(8, -1120368706, -1105887613, 1024734935, 1015791177)\n\t\t + W(9, -1160295481, 1022489781, -1115425401, 1012694293)\n\t\t + W(10, -1147415538, -1140100033, 1020235585, -1122711401)\n\t\t + W(11, -1132924343, -1122854992, 1018590227, 1012472897);\n\tWS(1059709408, 1024973287);\n\tsum1 =\n\t\tW(0, -1126012593, 996494647, -1119189544, 1028092109) + W(1, -1124577204, 1023428420, 1004611460, -1122880609)\n\t\t+ W(2, 1030391200, -1114579692, 1016065247, -1127475101)\n\t\t+ W(3, -1134152138, 1020165829, 1046947367, -1111968183) + W(4, 1002304420, 1021721777, -1114032340, 1049657976)\n\t\t+ W(5, -1094041084, -1106474499, 1040268033, -1114564220)\n\t\t+ W(6, -1131432537, 1014735450, 1018380112, 1044458845)\n\t\t+ W(7, -1114168306, -1128430825, -1126017195, 1032225804)\n\t\t+ W(8, -1112475533, 1030371012, 1023640576, 1019190017) + W(9, 991561039, -1115613273, -1123292160, 1033263557)\n\t\t+ W(10, -1119951545, -1127717781, -1124178504, 1022764985)\n\t\t+ W(11, -1122300512, 1034006830, 1017080432, 1017178441);\n\tsum2 =\n\t\tW(0, -1125800395, 1024962708, 1023886172, -1122338700) + W(1, -1171853367, 973576887, 1011909323, -1143341847)\n\t\t+ W(2, -1144213999, 1018807292, 1000330119, 984068764) + W(3, -1116511680, 1052819438, -1097320166, -1115186882)\n\t\t+ W(4, -1140479659, 1001426319, -1103527255, 1076690943)\n\t\t+ W(5, -1072687587, -1098249874, 1023038428, 1007326739)\n\t\t+ W(6, -1120293374, 1057154431, -1091630497, -1117298851)\n\t\t+ W(7, 1029135274, -1135413483, -1148349175, 990717342) + W(8, 1012280135, 1010582795, -1122270538, 1008233815)\n\t\t+ W(9, 1015270352, 1025045202, -1118805022, 990164302) + W(10, 1020995472, -1129534965, -1125483347, 1023577182)\n\t\t+ W(11, 1016249338, -1125194137, 1003973863, -1140102471);\n\tWS(1066253200, 1009489111);\n\tsum1 =\n\t\tW(0, -1121073890, -1102592607, 1041243549, 1033075644) + W(1, -1123366116, -1130535196, 1024085178, -1107707469)\n\t\t+ W(2, 1026388586, -1107162241, 1004872905, -1145989825)\n\t\t+ W(3, -1130104696, -1106598971, -1121496677, 1050587318)\n\t\t+ W(4, -1113976447, -1120961954, 1023275236, -1116780301)\n\t\t+ W(5, 1049328440, 1057262167, -1116780079, 1023066500) + W(6, -1128214764, -1111680448, 1018012708, 1027096831)\n\t\t+ W(7, -1113850464, -1121521086, -1135799996, 1032050668)\n\t\t+ W(8, -1096674093, 1040843700, 1015552212, 1008378152)\n\t\t+ W(9, -1141685621, -1131519352, -1122519370, 1028580820)\n\t\t+ W(10, -1123000331, -1124335656, -1121776782, 1028096678)\n\t\t+ W(11, -1101864235, -1117086438, 1040749648, -1135644600);\n\tsum2 =\n\t\tW(0, 1013104936, -1106333857, 1041445982, -1143812784)\n\t\t+ W(1, -1111423698, -1153458272, -1117172679, -1121647283)\n\t\t+ W(2, 1046293466, -1098323478, 1025469214, -1123006845) + W(3, -1127525498, 1031691189, 1054977467, 1032669672)\n\t\t+ W(4, -1110723238, 1018478818, -1135146700, 1030458550) + W(5, 1051999059, 1016608418, 1041509878, -1111394764)\n\t\t+ W(6, -1122718205, -1111791784, 1044523088, -1093831562)\n\t\t+ W(7, 1024902469, -1127833490, 1027187072, 1009508096)\n\t\t+ W(8, -1099681845, 1044831040, -1110045970, -1140396324)\n\t\t+ W(9, -1119344027, -1127767754, -1185033988, -1117227205)\n\t\t+ W(10, -1129401382, -1129041118, -1128814570, 1037784205)\n\t\t+ W(11, -1107269301, -1118967703, -1121987113, 1021194206);\n\tWS(1055988095, 1068562120);\n\tsum1 = W(0, 1025054956, 1041692938, 1040251631, -1141880069)\n\t\t + W(1, -1113980711, 1011769695, -1130996743, 1036197410) + W(2, 1032351834, 1043619883, 1002392085, 1020511427)\n\t\t + W(3, 1024941510, 1042434277, -1100356972, 1026325313) + W(4, 1040781794, -1124414423, 1026193148, 1039706891)\n\t\t + W(5, -1093055992, -1087193164, 1032223740, -1163338101)\n\t\t + W(6, 1035977616, 1036807045, 1047058383, -1087410536) + W(7, 1047196369, 1015241743, 1028839961, 1029783554)\n\t\t + W(8, 1043491547, -1097265155, 1027612260, -1129538215)\n\t\t + W(9, 1016648336, 1019008523, 1044781893, -1104034167) + W(10, 1036828166, 1018634427, 1025665319, 1026886128)\n\t\t + W(11, 1048991774, -1099060796, -1113322870, -1180507092);\n\tsum2 = W(0, -1109623534, -1098330057, 1051762285, -1105318233)\n\t\t + W(1, -1120494292, 1036873688, -1119308996, -1121926087)\n\t\t + W(2, 1045894429, -1111281216, 1002875661, -1152598618)\n\t\t + W(3, -1108667787, 1031129408, 1029096148, -1116694436)\n\t\t + W(4, 1042501069, -1117793653, -1107757858, -1111457821)\n\t\t + W(5, 1060518836, -1103134861, -1104320409, 1023528108)\n\t\t + W(6, -1126585969, -1091241820, 1065480819, 1017373783)\n\t\t + W(7, 1041202422, -1117516356, -1144042093, -1092220222)\n\t\t + W(8, -1120268316, 1034184394, -1131983911, -1123122827)\n\t\t + W(9, 1004201965, -1112242725, 1035423856, -1129342463)\n\t\t + W(10, 1023586732, -1131565835, 1024608852, -1104308532)\n\t\t + W(11, -1105721536, -1134873838, 1017105251, 1015347387);\n\tWS(-1073915832, -1098883962);\n\tsum1 = W(0, 1030932360, 1024626915, -1098288699, -1130380922)\n\t\t + W(1, 1033018229, 1021355752, -1131602112, 1032898976)\n\t\t + W(2, -1117814224, -1103847418, 1040490540, -1120290302)\n\t\t + W(3, -1125999684, -1122370130, 1056014501, -1096397881)\n\t\t + W(4, 1031863906, -1131922448, 1018154928, 1011274315)\n\t\t + W(5, -1106175819, -1105327485, 1044317365, -1139369119)\n\t\t + W(6, -1122265980, -1113904235, -1097956311, 1059753579)\n\t\t + W(7, -1098424101, -1121102372, -1122315861, 1029902191)\n\t\t + W(8, -1115232133, 1040451325, -1122968848, 1033247800)\n\t\t + W(9, 1018577993, -1115348785, -1126206816, 1039068637)\n\t\t + W(10, -1136273729, -1121007738, -1120663220, -1111387910)\n\t\t + W(11, 1017122848, 1042824131, 1021433455, -1143567007);\n\tsum2 =\n\t\tW(0, -1118315643, 1046909717, -1100980148, -1129801877) + W(1, -1122172234, 1010610423, -1126395193, 1025514844)\n\t\t+ W(2, -1112473945, 1030594060, -1111527676, -1135186433)\n\t\t+ W(3, 1014636591, 1026986728, 1040985677, -1101816290) + W(4, 1023795758, 1030475382, -1138413531, -1112879553)\n\t\t+ W(5, 1027746798, -1094641835, 1027030278, -1121095046) + W(6, 1013622247, -1122377333, 1051150943, 1041324898)\n\t\t+ W(7, -1113671456, 1015864126, -1129252552, -1114813410)\n\t\t+ W(8, 1057006779, -1106485598, -1133454616, 999966259)\n\t\t+ W(9, -1122713894, -1144089687, -1138866101, -1115757412)\n\t\t+ W(10, 1001347783, -1127643580, -1131632742, -1140190295)\n\t\t+ W(11, 1035155819, 1016695560, -1139893847, -1124292419);\n\tWS(1058139200, 1067005003);\n\tsum1 = W(0, -1131277347, -1103206155, 1015263811, 1048238354)\n\t\t + W(1, -1106607621, -1122297405, -1128484819, -1112832909)\n\t\t + W(2, -1111332237, 1044526364, -1104751670, -1124214159)\n\t\t + W(3, 1014594990, -1108301118, 1004409248, 1056580635)\n\t\t + W(4, -1107635783, 1017238947, -1112913457, -1111811582)\n\t\t + W(5, 1031432468, -1114379264, -1107787999, -1110162105)\n\t\t + W(6, 1028891109, -1113179152, 1057408386, 1025802539)\n\t\t + W(7, 1020725062, 1002560364, -1118434446, -1100757638)\n\t\t + W(8, 1053177162, -1104236495, -1114959053, -1113724157)\n\t\t + W(9, -1125459884, -1116265771, 1035803645, -1124751623)\n\t\t + W(10, -1129296244, -1123244163, -1151139539, -1119227733)\n\t\t + W(11, 1052437131, -1121289813, -1120069105, -1115210511);\n\tsum2 =\n\t\tW(0, -1121057595, 1023292260, -1111891368, 1035766063) + W(1, 1032208606, -1122161823, 1016432775, -1124268922)\n\t\t+ W(2, 1029388268, -1118389960, -1122510207, 1028529468)\n\t\t+ W(3, -1112629457, -1116199054, -1123843875, 1033023394)\n\t\t+ W(4, -1113138713, -1118001871, 1031151061, -1110795130) + W(5, 1054055516, 1054507013, 1019595258, 1026811027)\n\t\t+ W(6, -1126819952, -1103006120, 1020478730, -1104664187)\n\t\t+ W(7, -1114598707, -1116707921, 1021228732, -1134369449)\n\t\t+ W(8, -1135412321, -1121918429, 1023542227, 1018790016) + W(9, 1009585899, -1120667087, 993043492, 982538191)\n\t\t+ W(10, 993709924, -1146185904, -1127402608, 1016333862)\n\t\t+ W(11, 996548072, -1108029597, -1129671373, -1152045912);\n\tWS(-1091835967, 1038509097);\n\tsum1 = W(0, 1002958335, 1041562959, -1124369824, -1093861855)\n\t\t + W(1, 1039801017, -1132073944, 1031236696, 1038000620) + W(2, 1029288008, -1100002304, 1038306915, 1032364667)\n\t\t + W(3, -1122124314, 1042029266, -1104824881, -1087002164)\n\t\t + W(4, 1037725118, -1122032128, 1034973544, 1034473413) + W(5, 1049571184, 1052741396, 1041619283, 1036587856)\n\t\t + W(6, -1120202292, 1040514695, -1089024373, 1044570703)\n\t\t + W(7, 1031782758, -1138629744, 1015820538, 1042048878) + W(8, -1089426268, 1042398171, 1038671876, 1010685600)\n\t\t + W(9, 1033636218, 1029242778, -1107643796, 1023923250)\n\t\t + W(10, 1025678032, 1027566834, -1121967836, 1042898689)\n\t\t + W(11, -1091407169, 1030369604, 1043274836, -1153060031);\n\tsum2 = W(0, 1016791821, -1110538641, -1114409767, 1045544748)\n\t\t + W(1, -1111278622, -1127655665, 1013192458, 1023566599)\n\t\t + W(2, -1113846927, 1029704719, -1125617069, 1012727082)\n\t\t + W(3, -1123883287, 1000152052, -1109610416, 1034122997)\n\t\t + W(4, -1110039103, -1131212885, 1015528749, -1112636904)\n\t\t + W(5, 1054155729, 1054056541, -1108588248, 1000573476)\n\t\t + W(6, -1131825297, -1116367667, -1109117303, 1030522539)\n\t\t + W(7, -1132906850, -1123699129, -1132736674, -1130121037)\n\t\t + W(8, 1016394661, -1116026974, -1135451026, -1126704253)\n\t\t + W(9, 1019880949, -1114305335, 1030290683, 992430312) + W(10, -1134728538, 988228497, -1117749640, 1033496981)\n\t\t + W(11, -1157815185, -1107824982, 1016739853, -1123545619);\n\tWS(-1089794384, 1053743764);\n\tsum1 =\n\t\tW(0, 977181200, -1124062435, 1045792382, -1096122984) + W(1, 1035356461, -1146772642, 1022034304, -1123589329)\n\t\t+ W(2, 1045687772, -1100185218, 1029423919, 1022712508) + W(3, 999195154, 1008939465, 1043214811, -1089534650)\n\t\t+ W(4, 1037071922, 986801416, -1173982736, 967031199) + W(5, 1051096635, -1128424615, -1130937578, 1009586465)\n\t\t+ W(6, -1131079992, 1031201254, -1106608558, 1022835035) + W(7, 1033635179, 1012941585, -1117753925, 1038421055)\n\t\t+ W(8, -1104815387, 1033659882, -1112564552, 1008485953) + W(9, 1011212627, 1023184516, 975115280, 1025453978)\n\t\t+ W(10, -1148354182, 1023442138, -1131210280, 1042888267)\n\t\t+ W(11, -1113606040, -1114474998, -1115626236, 1020831720);\n\tsum2 =\n\t\tW(0, 1025756371, 1038582018, -1095235720, -1097242729) + W(1, 1048188946, -1145714840, -1152866061, -1136865390)\n\t\t+ W(2, 1027392563, -1108446917, 1009460859, 1022755591) + W(3, 1022411083, 1028991375, -1094985700, -1092586393)\n\t\t+ W(4, 1013992713, 1033471029, 1021941035, -1102180290) + W(5, 1062263751, 1055770556, -1098658877, 1018658879)\n\t\t+ W(6, 1018807869, -1127151005, 1023141397, 1024429444)\n\t\t+ W(7, -1162587434, 1032105067, -1162131898, -1103213990)\n\t\t+ W(8, 1032099771, 1045256871, -1104388978, -1135748387)\n\t\t+ W(9, 1030478695, -1148467374, -1139645537, -1115314196)\n\t\t+ W(10, 1033707193, 1008760659, -1117519259, -1101731450)\n\t\t+ W(11, 1050734432, 1044538365, -1097902791, 1019361371);\n\tWS(-1092258911, -1089815334);\n\tsum1 = W(0, -1139634407, 1045821685, -1119357002, 1034361159)\n\t\t + W(1, -1137425069, -1130196683, -1147044493, 1034203057)\n\t\t + W(2, 1015718019, 1051668019, -1115826689, 1023465264) + W(3, 1017866535, 1044613801, -1104936487, 1032636456)\n\t\t + W(4, 1035725147, 1015877619, -1130890003, 1035729090)\n\t\t + W(5, -1090722234, -1086460492, 1010439579, -1117806874)\n\t\t + W(6, 1027130446, 1029847032, 1052628837, -1094763749) + W(7, 1043916211, 1025832214, 1016637069, -1102281888)\n\t\t + W(8, 1057948020, -1095562645, -1114240161, -1123952546)\n\t\t + W(9, 1016500860, -1131657511, 1044884520, -1106362539)\n\t\t + W(10, 1035145793, 1029577644, 1026913637, -1121093118)\n\t\t + W(11, 1053191568, -1098187032, -1102258214, 1011300119);\n\tsum2 =\n\t\tW(0, -1128703433, -1113670137, 1038503213, 1040684472) + W(1, -1099552212, 993905065, 1012757410, 1024378351)\n\t\t+ W(2, -1102109659, -1100043210, 1026887817, 1003273444) + W(3, 1007787634, -1111552612, 1041322248, 1041989415)\n\t\t+ W(4, -1104965070, -1144755940, 1023396449, -1131966925)\n\t\t+ W(5, 1061982310, 1066879681, -1107386978, 1019447753)\n\t\t+ W(6, 1017560605, -1114649634, -1104769108, -1101238360)\n\t\t+ W(7, -1104448348, 1019550873, 1012244530, 1040107467) + W(8, -1098175974, -1089047102, 1016563929, 1024790159)\n\t\t+ W(9, -1143125556, -1122758108, 1026757617, 1023979343)\n\t\t+ W(10, -1107880053, -1138003290, 1024938353, 1032092801)\n\t\t+ W(11, -1105089779, -1100231891, 1036400101, 1014825186);\n\tWS(-1086002512, -1084928660);\n\tsum1 =\n\t\tW(0, -1131929465, -1115340892, 1050776738, -1103148388)\n\t\t+ W(1, -1143173743, -1130358353, 1017039401, -1113717074)\n\t\t+ W(2, 1042912513, 1010821235, -1128281895, -1122997746)\n\t\t+ W(3, 1020173741, -1102662114, 1053707114, -1104889757)\n\t\t+ W(4, -1111952748, -1139775729, -1134499377, -1097984585)\n\t\t+ W(5, 1055825787, 1049797700, -1098746549, -1117617116) + W(6, -1129468257, 999020755, -1108349590, 1042555580)\n\t\t+ W(7, -1106170922, 1014563169, -1138890277, -1114393442)\n\t\t+ W(8, 1033511359, 1041826234, -1103706929, 1010736529) + W(9, -1132813939, 1028151894, -1108075378, 1032548919)\n\t\t+ W(10, -1127274842, -1137959865, -1143488833, -1132982017)\n\t\t+ W(11, -1138015505, 1041074464, -1110410462, -1123442568);\n\tsum2 =\n\t\tW(0, 1000102260, -1118205558, 1051204856, 1041999613) + W(1, -1135930364, 1019347314, -1126633986, 1029900308)\n\t\t+ W(2, 1063980475, 1037162912, -1134402620, -1137379540)\n\t\t+ W(3, -1144291760, -1140439712, 1066576503, -1167793729)\n\t\t+ W(4, 1020225891, 1012525172, -1119827470, 1041420529)\n\t\t+ W(5, -1075398805, -1085093765, -1133429672, -1123883092)\n\t\t+ W(6, 1016232493, 979974721, -1098954833, 1017117707) + W(7, 1028764817, -1139078108, 1023762781, 1006017080)\n\t\t+ W(8, -1114660078, 1033481679, 1018587503, 990744512) + W(9, -1141218312, -1137204884, 1021034547, -1137323924)\n\t\t+ W(10, -1132685152, -1137103964, 1025293286, 1002898232)\n\t\t+ W(11, -1117648930, 1002077480, 1026769102, 1022792204);\n\tWS(-1084377664, 1027078466);\n\tsum1 =\n\t\tW(0, 1028609881, 1023875764, -1113303893, 1031700430) + W(1, -1138486380, 1025866053, -1129675619, 1032239673)\n\t\t+ W(2, -1114746833, 1026119482, -1122216064, 1016759071) + W(3, 1022038247, 1043647401, -1084547118, 1051850662)\n\t\t+ W(4, -1132199979, 1032834541, 1010908070, 1024809124) + W(5, -1156932707, -1104988345, 1033025459, 1029398137)\n\t\t+ W(6, 1026611885, -1131519215, 1050946557, -1083734174) + W(7, 1043104191, 1007914454, 1030113110, -1128260416)\n\t\t+ W(8, 1047159719, 1027361605, 1018468419, 1021351811) + W(9, -1132403564, 1026951667, 1020650755, -1111325382)\n\t\t+ W(10, 1014159432, 1014779182, 1031201461, -1115829469)\n\t\t+ W(11, 1037768177, 1042797655, -1108759836, 1018395723);\n\tsum2 = W(0, -1123315648, 1034590473, 1026150549, 1030314237)\n\t\t + W(1, -1113579452, 1014056813, -1139192721, -1139997869)\n\t\t + W(2, 969235347, -1112534256, -1158492453, -1132289868)\n\t\t + W(3, -1123875414, -1115134908, 1042477897, 1037120039)\n\t\t + W(4, -1098184684, 1018097190, 1030816333, 1008365317) + W(5, 1046059603, 1027803789, 1032895251, 1032146261)\n\t\t + W(6, -1123326315, -1110803030, -1155992274, -1102080708)\n\t\t + W(7, -1126452160, -1114996104, 1016532474, 1028786615)\n\t\t + W(8, -1122978967, -1135183209, 1047700729, 1011346781)\n\t\t + W(9, -1130303816, 1004595129, -1119026545, -1120008811)\n\t\t + W(10, 999072441, -1115756663, -1131093304, 1015409534)\n\t\t + W(11, -1111529432, -1109468455, 1047312851, -1122411639);\n\tWS(1043014014, -1087744322);\n\tsum1 =\n\t\tW(0, 1027952711, -1123526530, 1008337244, 1035059438) + W(1, -1116610857, 1026995059, 1020523582, -1138321214)\n\t\t+ W(2, 1022379422, -1120526792, 1037330895, -1156487121)\n\t\t+ W(3, 1002118409, -1110182129, 1057818171, -1086364127) + W(4, 1040407761, 1009757724, 1021435438, 1032339433)\n\t\t+ W(5, -1110004232, -1118604170, 1040846837, -1153254001)\n\t\t+ W(6, -1138414444, 1035386835, -1083267015, 1057062103)\n\t\t+ W(7, -1107059287, 1021783366, 1003104545, -1137297015) + W(8, 1007303460, 1036507098, -1128420830, 1034169880)\n\t\t+ W(9, 1021955143, -1119534945, -1115695919, 1038869533)\n\t\t+ W(10, 1017909759, -1138765796, 1013303243, -1108462406)\n\t\t+ W(11, 1036022088, 1036993862, -1142792885, 1027514579);\n\tsum2 =\n\t\tW(0, -1129567658, -1117738234, 1034622765, 1030957051) + W(1, 1029443337, -1132249217, -1156092221, -1131091573)\n\t\t+ W(2, -1128107850, -1118479197, 1005860107, 969559787) + W(3, -1123579911, -1115037144, 1017778197, 1041246295)\n\t\t+ W(4, -1110926783, -1132354551, 1008715269, -1115010115)\n\t\t+ W(5, 1050631618, 1054490255, -1157251077, 1024782459)\n\t\t+ W(6, -1125160256, -1101087826, 1045062017, -1117275788) + W(7, -1108959270, 998415619, 1026524337, 1015586863)\n\t\t+ W(8, -1095615964, 1025836507, 1020928095, 1012990901) + W(9, -1137738801, -1113332277, 1020345131, 1027688491)\n\t\t+ W(10, -1122972204, -1161032699, 1017463077, 1019720419)\n\t\t+ W(11, -1101223712, -1120912313, 983922363, 1011300789);\n\tWS(1054959103, -1083836992);\n\tsum1 =\n\t\tW(0, -1144415487, 1023853723, -1123173616, -1121737045)\n\t\t+ W(1, -1124541667, 1017937944, -1132171248, -1118146184)\n\t\t+ W(2, 1018672592, -1123041056, -1120856711, -1131928876)\n\t\t+ W(3, -1133053416, 1039313221, -1090265426, -1161038260) + W(4, 1034290206, 1027902624, 980216825, -1107434917)\n\t\t+ W(5, 1057912142, 1053211380, -1109871174, -1129566080) + W(6, 1018609320, 1027331294, 1044087220, -1089253699)\n\t\t+ W(7, 1040602782, -1121689404, 1017404666, -1111685883) + W(8, 1046306952, 1036559366, -1113560292, 1010241568)\n\t\t+ W(9, -1127349353, -1129432820, -1133031712, -1110305609)\n\t\t+ W(10, -1148202051, -1124796708, -1154920122, -1126004808)\n\t\t+ W(11, 1039769364, 1035028498, -1109624712, -1127304152);\n\tsum2 = W(0, 1018338338, -1110884586, -1136808221, 1026570078)\n\t\t + W(1, -1136194357, -1120452457, -1139755941, -1129406227)\n\t\t + W(2, -1118232763, 1021052542, 1020321772, 1004896115)\n\t\t + W(3, 1025801614, -1108237236, -1115176435, -1114736489)\n\t\t + W(4, 1048907220, -1119060361, -1122001203, 1037408540)\n\t\t + W(5, -1113269344, 1041519115, 1046652366, -1107310106)\n\t\t + W(6, 1010171613, 1040327756, -1105808410, 1047951095)\n\t\t + W(7, 1035402835, 1033649944, -1132321439, -1123391437)\n\t\t + W(8, -1110685464, -1115014721, -1111631696, -1126977687)\n\t\t + W(9, 1016232007, -1129086463, -1168436052, -1113536502)\n\t\t + W(10, 1026410761, 1026056519, 1013259501, -1132299663)\n\t\t + W(11, 1021765462, -1123780081, -1102273277, 1027695361);\n\tWS(1057903600, 1067139767);\n\tsum1 = W(0, -1130009103, -1107061793, 1043136838, -1102099951)\n\t\t + W(1, -1115498357, -1123992244, 1012511358, -1111029392)\n\t\t + W(2, 1028125200, 992918145, -1117969679, -1145160172)\n\t\t + W(3, -1137761926, -1104154592, 1051222763, -1106189879)\n\t\t + W(4, -1104467697, -1125356943, -1124300975, -1103367501)\n\t\t + W(5, 1060113955, 1050079197, -1108729546, -1117739880) + W(6, 1008012526, 1009980758, 1024983063, 1048697267)\n\t\t + W(7, -1111781863, -1165450354, -1117250069, -1113394087)\n\t\t + W(8, 1016245011, 1034440698, -1104780916, -1114615608)\n\t\t + W(9, -1162310274, 1026647906, -1117690736, 1041096574)\n\t\t + W(10, -1117169584, -1139440358, -1115259538, -1114684710)\n\t\t + W(11, 1025498192, 1041574755, -1120787335, -1118506516);\n\tsum2 = W(0, 1011962608, 1038855085, -1122245118, -1126451804)\n\t\t + W(1, -1106947014, 1026864717, -1120699406, -1131692032)\n\t\t + W(2, -1112627842, -1110442893, 1008646548, -1123527836)\n\t\t + W(3, 1007214128, 1038467393, -1122221782, 1042136464) + W(4, -1113116412, 999106843, 1026799984, -1112343444)\n\t\t + W(5, -1106597578, 1054959792, -1109079281, 1011333214)\n\t\t + W(6, -1145867047, -1113849522, 1026356645, 1031831390)\n\t\t + W(7, -1109881757, -1117815384, 1029224075, -1138735380)\n\t\t + W(8, -1114988845, 1046305460, -1109725169, 1032922020)\n\t\t + W(9, -1116434980, -1120001434, 1020413259, 1008343524)\n\t\t + W(10, -1123390380, -1119479700, 1022659583, -1118784264)\n\t\t + W(11, -1123194990, 1047204017, -1114571313, 1000599735);\n\tWS(-1101058110, 1058505899);\n\tsum1 = W(0, 1008909245, -1123852394, 1037579744, 1024016996)\n\t\t + W(1, -1121096497, 1022516663, 1015324303, -1112299044)\n\t\t + W(2, 992056181, -1124723744, -1131134189, -1130344395)\n\t\t + W(3, -1151491221, -1128516275, -1098678002, 1056678303)\n\t\t + W(4, -1109419958, 1021039583, -1139701245, -1102217815)\n\t\t + W(5, 1045087960, 1021619781, -1098726544, -1132041247)\n\t\t + W(6, 1009250957, -1104833467, 1058072040, -1095085849)\n\t\t + W(7, -1109643932, -1140161581, 1031005836, -1113648843)\n\t\t + W(8, 1036986521, 1041104615, -1121889031, 1026848535)\n\t\t + W(9, -1131857944, -1119585353, 1024521495, -1129179587)\n\t\t + W(10, -1127292144, -1125244995, 1009310828, -1121962739)\n\t\t + W(11, 1032839164, 1025292595, 1017031326, 1005622747);\n\tsum2 = W(0, 992821683, 1023078017, 1023704638, -1112719649) + W(1, 1027637582, 1021903376, 1017011277, -1140746852)\n\t\t + W(2, -1139829185, 1034266306, -1119668356, 1016759855) + W(3, 1011814063, 959773689, -1107874815, 1032357888)\n\t\t + W(4, -1113625790, 1034398452, 999390943, -1112338116)\n\t\t + W(5, -1113377165, 1057654961, -1086342498, 1051594315)\n\t\t + W(6, -1121326865, 1035095219, -1108229047, 1012152366)\n\t\t + W(7, -1101720659, 1035110699, -1128713872, 1024063493)\n\t\t + W(8, 1033653422, -1122811174, -1136544465, 1031049449)\n\t\t + W(9, -1144442308, 1023948090, -1133039950, 1020168485)\n\t\t + W(10, -1121720102, 1018271190, -1138094133, 1032024680)\n\t\t + W(11, -1140161389, -1113617432, 1019370668, 1021410443);\n\tWS(-1098338111, 1023498750);\n\tsum1 =\n\t\tW(0, -1138701849, -1121510465, 1040383254, 1010706669) + W(1, -1149170878, 1021863397, 1022617405, -1112416999)\n\t\t+ W(2, 1041395124, -1110248019, 1020223099, 1016227961)\n\t\t+ W(3, -1168316434, -1180399652, -1097293461, 1058209828) + W(4, -1106291545, 1018489101, 989875557, 1037491593)\n\t\t+ W(5, -1094988553, -1095385553, 984962665, 1021609037) + W(6, 1014043241, -1102495433, 1059563452, -1097437690)\n\t\t+ W(7, -1119747464, -1145092370, 1028694643, -1121884733)\n\t\t+ W(8, -1118903112, 1046085501, -1122110350, 1026243438)\n\t\t+ W(9, 1012653195, -1122132512, 1027507886, -1130301425)\n\t\t+ W(10, -1123237039, 992349061, -1123740578, 1036415429)\n\t\t+ W(11, -1126796061, -1128488725, 989067449, -1164474953);\n\tsum2 =\n\t\tW(0, -1164068108, 1029420636, -1112077059, -1110964317) + W(1, 1028276360, -1148255859, -1120898035, 1036981221)\n\t\t+ W(2, -1106651210, -1141413971, 1028557670, -1129246253)\n\t\t+ W(3, 1013829433, 1035658823, -1106432341, 1035230257) + W(4, 1017251513, -1131530425, 972583599, 1039879187)\n\t\t+ W(5, -1108370344, 1044568046, 1026800348, -1126980980) + W(6, 1016837545, -1102894380, 1027609202, 1041920264)\n\t\t+ W(7, -1124056839, -1121785123, -1128855117, -1128781606)\n\t\t+ W(8, 1035930993, -1110600858, 1023713154, -1124361549)\n\t\t+ W(9, -1120505887, 1013125305, 1026372950, -1125837008)\n\t\t+ W(10, -1132458450, 1009116645, -1130000643, 1008550341)\n\t\t+ W(11, 1017927697, 1019426133, -1129712212, -1127748642);\n\tWS(1064075168, -1085260633);\n\tsum1 =\n\t\tW(0, 1020097830, -1104011171, 1041894009, 1034297780) + W(1, -1113914242, -1138151419, 1004279127, -1113516590)\n\t\t+ W(2, 1036855277, -1106861493, 1031661466, -1151789197)\n\t\t+ W(3, 1028112237, -1103036207, 1045116105, -1112331770)\n\t\t+ W(4, 1017072798, -1129921062, 1026532451, -1102348791) + W(5, 1027716980, 1058153819, -1100287056, 1026370483)\n\t\t+ W(6, 961537748, -1120389361, -1096376936, 1043898973) + W(7, -1119328440, 1025128111, -1130706656, 1038928889)\n\t\t+ W(8, -1096709211, 1048347472, 1032287909, -1140511211)\n\t\t+ W(9, -1135275149, -1129088474, 996846509, -1164071066) + W(10, 1019059671, -1167790389, 994604265, 1031068695)\n\t\t+ W(11, -1102472071, -1118081687, 1040008649, -1140610427);\n\tsum2 =\n\t\tW(0, 1014633478, 1033869831, -1114935893, -1111281510) + W(1, 1016908923, 990649086, -1138053524, -1133342724)\n\t\t+ W(2, -1126366588, -1128243618, -1145483991, 996067150)\n\t\t+ W(3, -1140130516, 1003291347, 1043822142, -1107071420) + W(4, 1006526455, 1012165262, -1120104172, 1033872317)\n\t\t+ W(5, -1086850225, -1084734921, 1045857736, -1119271334) + W(6, 1012698026, 1006625651, 1030145358, 1067004758)\n\t\t+ W(7, 1020093203, -1129772456, -1123853902, -1121932314)\n\t\t+ W(8, 1040015383, 1046081705, -1118176982, -1144422823) + W(9, 1013120742, 1004319943, -1150276254, 1002809783)\n\t\t+ W(10, -1161820989, -1141799647, -1133638700, 975983930)\n\t\t+ W(11, 1028724356, 1031930717, -1104669476, -1143148999);\n\tWS(-1102756414, -1120030182);\n\tsum1 = W(0, -1114857721, -1102767115, 1043961809, -1124210446)\n\t\t + W(1, -1117667780, -1120413918, 1007304745, -1115971707)\n\t\t + W(2, -1101676399, 1028311347, -1113057893, -1125847632)\n\t\t + W(3, -1113282502, -1095987354, 1053600405, 1046261656)\n\t\t + W(4, -1103902228, -1114932345, -1135708169, -1101194087)\n\t\t + W(5, 1065521342, 1068133511, -1095174540, 1027169042)\n\t\t + W(6, -1130226572, -1099422340, 1046696200, 1042816511)\n\t\t + W(7, -1101926052, -1125196828, -1115825727, -1109693396)\n\t\t + W(8, 997946179, -1098872988, 1020822452, -1114420141)\n\t\t + W(9, -1142173365, -1122657804, -1112668237, -1133742993)\n\t\t + W(10, -1113901869, -1121096548, -1136250680, -1100198174)\n\t\t + W(11, 1025742970, -1113205915, -1140085511, -1110338975);\n\tsum2 =\n\t\tW(0, 1022430051, -1119384349, -1127804673, 1011315171) + W(1, -1121146859, 1009328259, -1126993785, -1117046041)\n\t\t+ W(2, 1014745875, -1106680506, 1009189211, -1125156477)\n\t\t+ W(3, 1027244407, -1113440146, -1129639049, 1020590601)\n\t\t+ W(4, -1115604020, 1000906166, -1136699515, -1099757367)\n\t\t+ W(5, 1065124465, 1034863647, -1111752578, 1017063165) + W(6, -1115987625, 1038214736, -1113943514, 1035633573)\n\t\t+ W(7, -1124061319, -1117062841, 1024283610, -1152620459)\n\t\t+ W(8, -1130768777, -1116743921, -1120130033, 1024425511)\n\t\t+ W(9, -1120680273, 1013074835, -1113854522, -1127682237)\n\t\t+ W(10, -1148961286, -1119191933, -1137060371, 1015902709)\n\t\t+ W(11, -1112590762, 1012706011, -1113078716, 1024105421);\n\tWS(-1077988040, -1098609713);\n\tsum1 = W(0, 1020152245, 1040202093, -1114910389, -1104283732)\n\t\t + W(1, 1039298438, -1125387021, 1002836371, 1027276515) + W(2, 1037438449, -1105856183, 1028081393, 1013826369)\n\t\t + W(3, -1132015209, 1049452385, -1100627367, -1098108347)\n\t\t + W(4, 1024125142, 1018674229, 1010566313, 1032875267) + W(5, 1030654167, -1102427678, -1131705423, 1017725301)\n\t\t + W(6, 1010053945, 1036663212, -1113362709, -1104090280)\n\t\t + W(7, 1042947115, -1141124531, 1020486319, 1034908465) + W(8, -1095852652, 1048934265, 1019783717, 1015682181)\n\t\t + W(9, 1030571159, -1114877050, 1025947458, -1126406169)\n\t\t + W(10, 1021770278, 1006527587, -1132252076, 1038229775)\n\t\t + W(11, -1105166249, -1138504825, 1035155325, 1016700365);\n\tsum2 = W(0, -1142267837, -1132626695, 1023852808, 1039691642)\n\t\t + W(1, -1114839167, -1147709133, -1139598567, -1138132903)\n\t\t + W(2, 1033876712, -1110747637, -1127924867, -1155304986)\n\t\t + W(3, 967895252, -1131100139, 1012220303, 1061640184) + W(4, -1122160974, -1121532798, 1008554815, 1032537913)\n\t\t + W(5, -1095058264, 1037101696, 1049832068, 992067354)\n\t\t + W(6, -1145406733, -1112410791, -1110252153, -1091888991)\n\t\t + W(7, 1027903240, -1128735955, 1024473654, 1023361695)\n\t\t + W(8, -1104029741, -1161200181, -1126050715, 1025251228)\n\t\t + W(9, -1120792990, -1130141475, 1031843465, -1119701362)\n\t\t + W(10, -1132864167, -1157362170, 1020245499, 1015868043)\n\t\t + W(11, -1196949327, 977066218, -1118663498, 1009680879);\n\tWS(1050097375, -1144620389);\n\tsum1 = W(0, -1128715377, 1044211901, -1107032850, -1104047251)\n\t\t + W(1, 1044522647, -1128884681, 1011057731, 1033637193) + W(2, 1022227585, 1028225817, 1008625791, 1011579579)\n\t\t + W(3, -1134438475, 1048874276, -1096643663, -1092741994)\n\t\t + W(4, 1044273989, 1018667761, 1019193873, 1034983634) + W(5, -1114392598, 1036584266, -1113959235, 1025301657)\n\t\t + W(6, 1022275225, 1042543166, -1092702793, 1025153498) + W(7, 1042105869, 1024565397, 1009602711, 1017343103)\n\t\t + W(8, -1097617495, 1028276325, 1041046056, -1123355105)\n\t\t + W(9, 1032927683, -1149239594, -1139445891, -1142331733)\n\t\t + W(10, 1025445761, 1027058603, -1136253330, 1037918654)\n\t\t + W(11, -1097624368, -1118553533, 1045159742, 1015982985);\n\tsum2 =\n\t\tW(0, -1125113091, 1033296420, 1004274749, -1102915066) + W(1, 1028147108, 1017918867, -1172679141, -1128383915)\n\t\t+ W(2, 1016688407, 1037338868, -1144981581, 991135609) + W(3, -1152889753, 1019343075, -1103752812, -1089888071)\n\t\t+ W(4, 1030353331, 1022111055, -1126905475, 1031861037)\n\t\t+ W(5, -1097163724, -1090194983, -1121675098, -1117974458)\n\t\t+ W(6, 1006649294, 1038268779, 1062746712, 1041005261) + W(7, 1019962267, 1026630548, -1117488938, -1113645001)\n\t\t+ W(8, 1051715314, -1118523722, 1006661278, -1115156997) + W(9, 1019337735, 1028739248, -1124587947, 1027501384)\n\t\t+ W(10, 1023891692, 1018829507, -1172252645, -1120621430)\n\t\t+ W(11, 1035778038, -1154227385, 1013440998, -1136345798);\n\tWS(-1098112447, -1125216946);\n\tsum1 =\n\t\tW(0, 1010417568, -1112042689, 1004161984, 1041397655) + W(1, -1114418485, 1021110568, 1006322176, -1119953952)\n\t\t+ W(2, -1112614584, 1018267345, 1024614191, -1137912440)\n\t\t+ W(3, -1140685064, -1116450322, -1090400895, 1058507679)\n\t\t+ W(4, -1104618697, -1127130192, 1017991280, -1112784281)\n\t\t+ W(5, -1113885864, 1050855349, 1027345269, 1019594896)\n\t\t+ W(6, -1126853432, -1105219289, 1051228911, -1097135921)\n\t\t+ W(7, 1037685358, -1116355204, -1146614696, 1023451023) + W(8, -1126136276, -1122997076, 1039454784, 987030015)\n\t\t+ W(9, 1004323364, -1153582112, 1016683168, -1149231824)\n\t\t+ W(10, -1140802306, 988441407, 1019294567, -1110071894)\n\t\t+ W(11, 983864831, 1012208560, 1030420791, -1149650752);\n\tsum2 =\n\t\tW(0, 1035141604, -1152950404, -1100547860, -1104792229) + W(1, 1037875812, -1138078871, -1134943159, 1010887850)\n\t\t+ W(2, 1025641276, -1119115361, 1021611837, 1016878804)\n\t\t+ W(3, 1031353634, -1122370025, -1101375945, -1100366049)\n\t\t+ W(4, 1015511489, 1015482099, -1120750640, -1101926585)\n\t\t+ W(5, 1057546844, 1042205116, -1109199537, -1140091328) + W(6, 1025254666, -1104605825, 1048526282, 1042952063)\n\t\t+ W(7, -1105787312, 1032201266, -1114509439, 1035852377)\n\t\t+ W(8, -1108641700, 1039483674, -1109299079, -1132053601)\n\t\t+ W(9, 1028756554, -1114959163, 1033576762, 1030776026)\n\t\t+ W(10, -1143994351, 1007578680, -1113538005, -1148680422)\n\t\t+ W(11, 1037895648, 1041006229, -1107406256, -1124574444);\n\tWS(1027823864, 1049081066);\n\tsum1 = W(0, 1012131718, 1045092167, -1108779609, 1031292119)\n\t\t + W(1, -1168425160, -1123848398, -1130128499, 1032126573)\n\t\t + W(2, -1127539283, 1050389010, -1113259988, 1017365039) + W(3, 1020918007, 1043895467, -1101697729, 998802811)\n\t\t + W(4, 1036534559, 1015583683, -1147020173, 1034108246)\n\t\t + W(5, -1094495268, -1089568357, 1026355631, -1120941186)\n\t\t + W(6, 1027080278, 1035993776, 1047905888, -1096020979) + W(7, 1044370080, 1024649726, 1020448605, -1104998342)\n\t\t + W(8, 1057437086, -1097851474, -1112197645, -1123264842)\n\t\t + W(9, 1012408472, -1129990263, 1041161122, -1105719893)\n\t\t + W(10, 1035394325, 1027345300, 1024273997, -1123698278)\n\t\t + W(11, 1052750589, -1101687913, -1103284196, 966350543);\n\tsum2 =\n\t\tW(0, 1023788251, -1115639872, 1042970848, 1041100183) + W(1, -1120506242, -1214633659, 982227227, -1150596845)\n\t\t+ W(2, 1046665761, 1053945290, -1121383639, -1143798279) + W(3, 1006064903, 1015277390, 1037025188, -1128807740)\n\t\t+ W(4, 1017634434, 1023282498, -1119196045, 1006169559) + W(5, -1080187678, -1078236510, 998104205, -1114831851)\n\t\t+ W(6, 1022374646, 1034991246, 1047303977, 1053440142) + W(7, 1037533712, 1023435593, -1139981943, -1110295858)\n\t\t+ W(8, 1052132899, 1058969577, -1112892146, -1124500500) + W(9, 1006364327, -1148612007, 1033799186, 1029728171)\n\t\t+ W(10, 1033828190, 1015376522, -1130167410, -1131776900)\n\t\t+ W(11, 1035867784, 1005561207, -1110685126, 1014287051);\n\tWS(-1088189216, 1043089281);\n\tsum1 =\n\t\tW(0, -1140748743, 1049770738, -1088213532, 1042644994) + W(1, 1041481493, 1008330103, -1121398410, 1041680407)\n\t\t+ W(2, -1096476823, 1047024381, -1107153702, 1031833588) + W(3, 1026065228, 1048806759, -1084369379, 1050638745)\n\t\t+ W(4, 1035104215, 1020682979, -1149048846, 1043836791) + W(5, -1108723571, -1101872740, 1041455384, 1026205458)\n\t\t+ W(6, 1020127051, 1034371336, 1036745881, -1094226627) + W(7, 1040593116, 1006701623, 1036138263, 1024770968)\n\t\t+ W(8, 1041309981, -1096464492, 1045395982, -1120876186)\n\t\t+ W(9, -1128555260, 1037337862, 1011670631, -1106071481)\n\t\t+ W(10, 1040128941, 1024336228, 1038047047, -1137213911)\n\t\t+ W(11, 1028379642, -1102959693, 1016152290, 1028740542);\n\tsum2 =\n\t\tW(0, -1129618765, 1028575755, 1018469269, -1109549862) + W(1, 1022763469, -1123897489, 1004169862, -1114659435)\n\t\t+ W(2, 1020493837, 1025826707, -1116607191, -1153284395)\n\t\t+ W(3, -1163586391, 1025093243, -1120959857, 1018231561)\n\t\t+ W(4, 1017295613, -1131222849, 1012667011, -1110197183) + W(5, 1045602812, 1050121196, -1110473213, 1019030581)\n\t\t+ W(6, 1004789414, -1140439179, -1119013866, 1009644755)\n\t\t+ W(7, -1143499366, -1125130849, 1006867267, -1110600679)\n\t\t+ W(8, 1007539419, 1038682513, -1107944702, 1009132883) + W(9, -1148564598, 1019765437, -1126956769, 1017107081)\n\t\t+ W(10, -1123266847, 1006886939, 1023888443, -1106146141)\n\t\t+ W(11, 1005311510, 1040899502, -1114206671, -1127991173);\n\tWS(-1082596160, 1043517696);\n\tsum1 =\n\t\tW(0, 1028909798, -1154689545, -1104169149, 1025985531) + W(1, 1029418231, 1024711058, -1153492953, 1032486047)\n\t\t+ W(2, -1117361518, -1118729126, 1034798166, -1125485751) + W(3, 967933898, -1128767583, 1049441299, 1031994846)\n\t\t+ W(4, 1006099469, 1008177302, 1019116907, 1037703496) + W(5, -1087176649, -1089391227, 1046438773, 986175666)\n\t\t+ W(6, -1132218099, -1115978788, -1115448907, 1056185125)\n\t\t+ W(7, -1106352341, -1125946755, -1129844133, 1027446332) + W(8, 1018413135, 1032249225, 991686873, 1030151438)\n\t\t+ W(9, 1011144392, -1146849277, -1154137305, 1036574828)\n\t\t+ W(10, -1131200252, 1006963806, 999709323, -1114471573)\n\t\t+ W(11, -1130624603, 1042483386, 1022706506, 1019997155);\n\tsum2 = W(0, 987806561, -1103978637, 1039699877, 1032745921) + W(1, -1106709297, 1017765222, 1024001581, -1138508200)\n\t\t + W(2, -1109586411, 1036006171, 984628641, -1151113585)\n\t\t + W(3, -1132313544, -1113576691, -1109697688, 1041044376)\n\t\t + W(4, -1135869680, -1128136972, -1138298076, 1037869389)\n\t\t + W(5, 1004783368, 1057490671, -1123523352, -1126668402)\n\t\t + W(6, 1003342504, 1041829747, -1101655248, -1120283284)\n\t\t + W(7, 1037905909, -1142518888, -1131321664, -1102361734)\n\t\t + W(8, 1023850463, -1118937466, -1133053924, -1119975873)\n\t\t + W(9, 1015369606, 995389041, -1123567230, -1137071480)\n\t\t + W(10, 1008345900, 1015435786, 1016585830, -1103350916)\n\t\t + W(11, 1033013495, 1023653113, -1123775069, -1153724113);\n\tWS(1066487464, -1081148228);\n\tsum1 =\n\t\tW(0, -1156758047, 1045622655, -1121579186, 1016497454) + W(1, 1026804003, 1025331662, -1115667101, 1039828621)\n\t\t+ W(2, 1016276052, 1034243041, -1129971954, 1022570928) + W(3, 1032245054, 1043227835, -1107379682, -1125065087)\n\t\t+ W(4, 1036683903, 1033790001, -1120457266, 1051174634) + W(5, -1081882686, -1081200961, 1050524446, 950141917)\n\t\t+ W(6, 1025970038, 1038187760, -1114502289, -1121918554) + W(7, 1033938044, 1035886143, 1028999903, 1035936180)\n\t\t+ W(8, -1110627634, -1121754318, 1045144826, -1123227402)\n\t\t+ W(9, -1129094085, 1028125692, 1032926021, -1138807120) + W(10, 1028558202, 1023360168, 1031685286, 1038703027)\n\t\t+ W(11, -1130240468, -1128847308, 1036935449, 1033245399);\n\tsum2 = W(0, 990406129, 1013162021, -1111903383, 1031481662) + W(1, -1112035485, 1026146121, -1109318105, 1040565489)\n\t\t + W(2, -1098989385, 1036428343, -1111376696, 1020848344)\n\t\t + W(3, 1032976305, -1125670617, -1114873385, 1043786440) + W(4, 1007686716, 993596601, -1108583903, 1041812300)\n\t\t + W(5, 1042303391, 1039454897, 1044627344, -1114987237) + W(6, 1009651516, -1123723867, 1001920896, 1032603577)\n\t\t + W(7, -1107723593, 1030752081, 1027268958, 1031967357)\n\t\t + W(8, -1113158574, -1097549253, 1043104932, -1112152994)\n\t\t + W(9, -1109295843, 1033460548, 1015358203, -1117993943)\n\t\t + W(10, -1142055788, -1128311189, 1034160517, -1113698315)\n\t\t + W(11, 1032025507, -1119346601, -1111706149, 1024170945);\n\tWS(-1085700080, -1080808385);\n\tsum1 =\n\t\tW(0, 1024296914, -1130852634, -1113008209, 1037784580) + W(1, -1128041639, 1011155704, -1122227946, 1020782261)\n\t\t+ W(2, 1011762792, -1106441949, 1023563097, 1007950112) + W(3, -1137292464, 1018157624, -1132968658, 1034492712)\n\t\t+ W(4, 1002605936, -1130475172, 1023737634, 1000516328) + W(5, -1126768286, -1096045179, 1048917408, 1027876850)\n\t\t+ W(6, -1114666035, 1007198528, -1104353680, 1044579508)\n\t\t+ W(7, -1126595297, -1148910448, 1017074878, 1034334952)\n\t\t+ W(8, -1108931914, 1035021791, -1127030516, 1030237498)\n\t\t+ W(9, -1116342907, 1028012332, -1128335092, 1016641544)\n\t\t+ W(10, -1124799637, -1178616327, 998628462, 1030076118)\n\t\t+ W(11, -1106440695, 1037317931, -1122557970, 1026212766);\n\tsum2 =\n\t\tW(0, -1127545645, 1009004191, 1015771798, -1131692274) + W(1, 1014637794, 996126556, 1018138398, -1136885460)\n\t\t+ W(2, -1151865619, -1125888003, 1023581282, 1018938725)\n\t\t+ W(3, -1144042592, -1141392422, -1107745249, -1091675886)\n\t\t+ W(4, 1057331451, -1136255574, 999025130, 1032831862) + W(5, -1097510643, -1072938398, 1076041086, -1112160457)\n\t\t+ W(6, -1139402988, 1017820345, -1117369881, -1091916978)\n\t\t+ W(7, 1056314077, -1150817344, -1150259805, -1138954980)\n\t\t+ W(8, 1017078443, -1117354278, 1032772879, -1138128772) + W(9, 985356315, 1013413304, -1132039248, -1124163047)\n\t\t+ W(10, 1020965023, 1018397555, -1133933532, -1164078621)\n\t\t+ W(11, -1132951491, -1138824868, 1026258229, 985080995);\n\tWS(1065410184, 989310727);\n\tsum1 = W(0, -1129262375, -1109321255, 1036945010, 1026154888)\n\t\t + W(1, -1134197844, -1125355007, -1140125102, -1114916286)\n\t\t + W(2, 1039766830, -1115626794, -1121887434, 1012320294)\n\t\t + W(3, -1116437485, -1113105487, 1017194412, 1060001058)\n\t\t + W(4, -1094555822, -1137406030, -1133156750, -1103994248)\n\t\t + W(5, 1046741097, 1017259310, -1114897776, -1133486286)\n\t\t + W(6, 1013595422, -1113291025, 1059311888, -1103200016)\n\t\t + W(7, 1023750749, -1124720479, -1140436482, -1135877737)\n\t\t + W(8, -1110004779, 1018378495, -1113774366, -1115411390)\n\t\t + W(9, 1001232640, 1027066925, -1131666807, -1131905035)\n\t\t + W(10, -1124072268, 1004266540, -1120957855, 1020121135)\n\t\t + W(11, -1115618446, -1127100975, -1116648163, -1123146591);\n\tsum2 = W(0, -1134742142, 1015903261, 1020154303, -1137672551) + W(1, 1024853570, 1005131169, 994239369, 1014594226)\n\t\t + W(2, -1150882457, 1023023759, 1017377705, -1125421078)\n\t\t + W(3, -1134258278, -1129761964, 1022217883, 1027518631)\n\t\t + W(4, -1148789809, 1001175413, -1126643555, 1031995313)\n\t\t + W(5, 1040302074, -1097618001, 1026258033, -1138047636)\n\t\t + W(6, -1124787402, 1009465920, 1049285742, -1098762324)\n\t\t + W(7, -1132512970, -1148246653, 1015413679, 1021296491)\n\t\t + W(8, 1029784509, -1122992412, 1015729459, 1016986651)\n\t\t + W(9, 991423945, -1131866907, -1135790753, -1126884057)\n\t\t + W(10, -1130065044, -1142203369, 1010959842, 1022764367)\n\t\t + W(11, -1122024941, -1118740892, 980872325, 992745521);\n\tWS(1051937311, 1019742014);\n\tsum1 = W(0, -1128733562, -1110586220, 1044317379, 1034449865)\n\t\t + W(1, -1129053661, -1126315858, 997229903, 1007594774)\n\t\t + W(2, -1115449474, 1040493967, -1122019556, -1118602611)\n\t\t + W(3, 1023734487, -1114376035, 1058430122, -1106892452)\n\t\t + W(4, -1137597924, 1007433460, -1116159949, -1126695312)\n\t\t + W(5, -1131615423, -1096043495, -1114653189, -1115826781)\n\t\t + W(6, -1132293538, 1032525373, 1028795565, 1048571437)\n\t\t + W(7, -1104742917, 1027349977, -1139661928, -1154941499)\n\t\t + W(8, 1043036192, -1110832404, -1106286569, 1018237258)\n\t\t + W(9, -1123545457, 1019369518, -1111719346, 1031893623)\n\t\t + W(10, -1118024837, -1123671919, 1016780849, 1026460481)\n\t\t + W(11, -1122201669, 1016066306, -1121789868, 1018711058);\n\tsum2 = W(0, 1008400273, -1127535498, -1110432262, -1120718262)\n\t\t + W(1, -1113670226, 1025653041, 1016157529, -1127740478)\n\t\t + W(2, -1101104373, -1108362087, -1146032407, -1134925453)\n\t\t + W(3, -1144490357, 1041994790, -1088501039, 1042410198)\n\t\t + W(4, -1132649478, 1011207517, -1138058389, 1049438349)\n\t\t + W(5, 1056816205, -1105949033, 1045816390, -1153231998)\n\t\t + W(6, -1125392389, -1105215135, 1056199589, -1108549667)\n\t\t + W(7, -1122823248, -1127906971, -1130565626, -1113276412)\n\t\t + W(8, 1025802623, 1029274599, -1139374331, 1000306913) + W(9, 965128306, -1135958083, 1003347845, -1152613734)\n\t\t + W(10, -1123972337, -1157554354, -1135290574, -1114929610)\n\t\t + W(11, 1003318865, 1031964529, 1019133207, -1130500213);\n\tWS(-1117640696, 1034706864);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[507];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { temp[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 13 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 507; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 13, y = (uint)id % 13;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (3)) + 0.5, float(group_base.y + y - (2)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[12];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 13];\n\tsamples[1][3] = inp[local_pos + 14];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 26];\n\tsamples[3][1] = inp[local_pos + 27];\n\tsamples[3][2] = inp[local_pos + 28];\n\tsamples[3][3] = inp[local_pos + 29];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 39];\n\tsamples[4][3] = inp[local_pos + 40];\n\tsamples[5][0] = inp[local_pos + 41];\n\tsamples[5][1] = inp[local_pos + 42];\n\tsamples[5][2] = inp[local_pos + 43];\n\tsamples[5][3] = inp[local_pos + 44];\n\tsamples[6][0] = inp[local_pos + 52];\n\tsamples[6][1] = inp[local_pos + 53];\n\tsamples[6][2] = inp[local_pos + 54];\n\tsamples[6][3] = inp[local_pos + 55];\n\tsamples[7][0] = inp[local_pos + 56];\n\tsamples[7][1] = inp[local_pos + 57];\n\tsamples[7][2] = inp[local_pos + 65];\n\tsamples[7][3] = inp[local_pos + 66];\n\tsamples[8][0] = inp[local_pos + 67];\n\tsamples[8][1] = inp[local_pos + 68];\n\tsamples[8][2] = inp[local_pos + 69];\n\tsamples[8][3] = inp[local_pos + 70];\n\tsamples[9][0] = inp[local_pos + 78];\n\tsamples[9][1] = inp[local_pos + 79];\n\tsamples[9][2] = inp[local_pos + 80];\n\tsamples[9][3] = inp[local_pos + 81];\n\tsamples[10][0] = inp[local_pos + 82];\n\tsamples[10][1] = inp[local_pos + 83];\n\tsamples[10][2] = inp[local_pos + 91];\n\tsamples[10][3] = inp[local_pos + 92];\n\tsamples[11][0] = inp[local_pos + 93];\n\tsamples[11][1] = inp[local_pos + 94];\n\tsamples[11][2] = inp[local_pos + 95];\n\tsamples[11][3] = inp[local_pos + 96];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 41];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(1, 2);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2) + ivec2(0, 1), ret);\n}\n//!PASS 2\n//!DESC NNEDI3 (double_x, nns32, win8x6)\n//!IN INPUT, temp\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 8\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[12]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 12; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 48.0;\n\tfloat mstd1 = sumsq / 48.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, -1120567290, -1132374181, -1132591953, -1125130389)\n\t\t + W(1, -1117911182, -1119806663, -1121091407, -1126690796)\n\t\t + W(2, 994153301, 1016607238, -1122316900, -1146864427) + W(3, 1031756856, 1024055745, 1003125923, 1029429758)\n\t\t + W(4, -1139074345, 992947237, 1053527378, 1046512564)\n\t\t + W(5, -1093298645, -1112059294, -1120338466, -1110173889)\n\t\t + W(6, 1021572063, -1137843051, -1096186409, 1056444330)\n\t\t + W(7, 1051252577, -1109040755, -1148456803, -1113641375)\n\t\t + W(8, -1117468940, -1125619459, -1144213939, -1138699933)\n\t\t + W(9, 1023905988, 1033651817, -1133630411, 1032546877)\n\t\t + W(10, -1119615974, 1000210819, -1121684346, -1129869365)\n\t\t + W(11, 979248533, -1119537890, -1141776739, -1127458445);\n\tsum2 = W(0, -1126549409, -1119263575, 1019494412, -1124834267)\n\t\t + W(1, 1007192676, -1122284082, -1127647730, 1010488320)\n\t\t + W(2, 1022573468, -1114028928, -1116443736, -1099458226)\n\t\t + W(3, 1017309436, -1118444706, -1121042004, -1109973330)\n\t\t + W(4, -1140490164, -1119708173, 1032492771, 1055169273)\n\t\t + W(5, 1044169825, 1039787167, -1145097543, 1044065299) + W(6, -1114833146, 1024108770, 1037187519, 1055452063)\n\t\t + W(7, -1106256028, -1112035826, -1125070906, -1121131548)\n\t\t + W(8, 1021805248, -1146392599, 1026983682, -1095922228)\n\t\t + W(9, -1122158651, -1118290710, -1129575364, -1121253833)\n\t\t + W(10, 1003196031, -1113990054, 1006796332, -1126677517)\n\t\t + W(11, 1022777176, -1130573089, -1123455912, 1019346120);\n\tWS(1060265584, 1063714812);\n\tsum1 = W(0, 1021450242, -1123065753, -1137050988, 1021294882)\n\t\t + W(1, -1118036885, 1009531192, -1118665549, 992320459)\n\t\t + W(2, -1128788280, 1022311347, 1028928107, -1140362288) + W(3, 1024570351, 1035626828, 1025121435, 1029327365)\n\t\t + W(4, -1111111528, 999728711, -1119265827, -1137639751)\n\t\t + W(5, -1101623708, -1106406289, -1128138578, -1106167682)\n\t\t + W(6, 1039397963, -1108349889, 1026074151, -1102959280) + W(7, 1041760911, 1036057270, 1017790822, 1037788386)\n\t\t + W(8, -1131322533, 1022720848, 1019796282, 1043907075)\n\t\t + W(9, -1151514983, -1132552740, -1124857459, -1134343810)\n\t\t + W(10, 1011253684, 974355898, -1136338948, 1025863841)\n\t\t + W(11, -1136816500, 1027651305, -1139070668, 1024478285);\n\tsum2 = W(0, 1023758242, -1124053764, 1000956747, -1122894214) + W(1, 999883691, 1004424067, -1150041590, 1009546537)\n\t\t + W(2, -1130878336, 1017938673, 1028583936, 1031015106) + W(3, 994031846, 999096115, -1134395125, 1005722235)\n\t\t + W(4, -1120671625, -1145138723, 1005174931, -1104963408)\n\t\t + W(5, 1001047899, -1126082311, 1002728051, -1135618057) + W(6, 1027498838, 1027873020, 1053869854, 1073183850)\n\t\t + W(7, 1053107786, 1035733703, 1022225293, 1023923178)\n\t\t + W(8, -1144315403, -1122179044, -1093535895, -1074622268)\n\t\t + W(9, -1094361386, -1114468554, -1123867271, -1126165581)\n\t\t + W(10, -1131041230, -1127336921, 1009416925, 1033668418)\n\t\t + W(11, 990806038, 992895974, -1131337021, -1138321549);\n\tWS(1067199072, 981674447);\n\tsum1 = W(0, -1113726457, 1018794771, -1115871564, 1008735750)\n\t\t + W(1, -1125817867, -1125149117, 1001830321, 1016463803)\n\t\t + W(2, -1105288827, -1113372949, -1095136821, -1102105679)\n\t\t + W(3, -1103744656, -1108798620, -1137689902, -1099284685)\n\t\t + W(4, 1040785760, -1099180638, 1050678235, 1052734745) + W(5, 1044281884, 1033282170, -1121192922, 1032013917)\n\t\t + W(6, 1032552483, 1040483381, 1054762461, 1065065389) + W(7, 1044820043, -1097094388, 1010644366, -1124668651)\n\t\t + W(8, -1124907206, -1114167068, -1107257499, -1097429016)\n\t\t + W(9, -1104994292, 1027211226, -1114303237, 1015961570)\n\t\t + W(10, -1139898486, -1127069135, -1118671794, 1035770473)\n\t\t + W(11, -1122788302, -1125646899, -1123221796, -1114483455);\n\tsum2 = W(0, -1124538541, -1139313841, -1119374292, 1010830983)\n\t\t + W(1, 1020827626, -1125616841, 1008596323, -1136528497) + W(2, 1021627528, 989560618, 1014774531, 1026431506)\n\t\t + W(3, -1118520012, 1018739126, 1014458179, -1129452021)\n\t\t + W(4, -1127440395, 1028695072, -1102978428, -1087762234)\n\t\t + W(5, 1027251929, -1109480314, 1023848922, -1132845253) + W(6, 1027300307, 1011050585, 1052523334, 1053318756)\n\t\t + W(7, -1113197028, 1034265115, -1134832277, 1022117249) + W(8, 1020622605, 999023778, -1119874204, 1038687085)\n\t\t + W(9, 1029469191, -1125820221, -1159659466, -1150305989)\n\t\t + W(10, -1130074937, 1015498074, -1126569197, -1128231773)\n\t\t + W(11, 1018969905, -1123965604, 1024095771, -1130502215);\n\tWS(-1082327904, -1101742629);\n\tsum1 = W(0, -1128942355, 1007179909, -1172666584, -1115398989)\n\t\t + W(1, -1145393643, -1126910957, -1153678686, -1127439210)\n\t\t + W(2, 994965062, -1124051394, 1029361427, 1047686461) + W(3, 1028067431, 1025118144, -1121058723, 1018201755)\n\t\t + W(4, -1116531225, 1022855203, 1044526075, -1095192109)\n\t\t + W(5, -1123739865, -1116394763, -1123838961, -1120454737)\n\t\t + W(6, 1027052286, -1119991818, -1110346311, -1106285700)\n\t\t + W(7, 1043850022, 1030498357, 1032721886, 1034890279) + W(8, -1127603958, 1015495233, 1026992677, 1037065627)\n\t\t + W(9, -1119388383, 1013662917, -1119902562, 1021249778)\n\t\t + W(10, 1021969515, -1129777663, 1017142675, -1113404469)\n\t\t + W(11, -1130059467, 1016457699, -1131255799, 1017348651);\n\tsum2 = W(0, 1014279427, -1131491186, 1026571161, 1042930837) + W(1, 1025279833, 993445038, -1133457551, 1014707171)\n\t\t + W(2, -1130890464, -1137235679, -1097554196, -1073378768)\n\t\t + W(3, -1092458255, -1130245298, -1120075373, -1135266971)\n\t\t + W(4, -1129394348, 1024729347, 1048952496, 1073588633) + W(5, 1053816664, 1029166823, 1030737081, -1151431678)\n\t\t + W(6, 1014973315, -1130557096, 1014221291, -1105375875)\n\t\t + W(7, 1016092170, -1119905200, -1147013927, -1161525308)\n\t\t + W(8, -1152876382, -1150339726, 1016692910, 1035354953)\n\t\t + W(9, -1129170378, 1027382919, -1124802440, 979085751)\n\t\t + W(10, 1004833335, -1141673719, -1159625756, -1124590261)\n\t\t + W(11, 989537980, -1138326931, 1017200998, 1009604643);\n\tWS(1067891072, -1132872541);\n\tsum1 = W(0, 1025237873, 1014334757, 1030238795, 1029025473) + W(1, 1007260181, -1121222990, 988616634, -1123834925)\n\t\t + W(2, -1122834636, 1020114356, -1105197551, -1121917372)\n\t\t + W(3, 1038150728, 1024596920, 1024170379, 1015271403)\n\t\t + W(4, -1117007553, -1118569017, 1049984500, -1114461425)\n\t\t + W(5, -1084792932, 1039495098, -1124531763, 1027254009)\n\t\t + W(6, -1114151507, 976917621, -1088419628, 1051488823) + W(7, 1053317187, 987986858, 1026119523, 993078101)\n\t\t + W(8, 1031366707, 1039451348, 1049092386, 1008484089) + W(9, -1122288663, -1131993235, 1022258228, 999667975)\n\t\t + W(10, 984935338, -1152616053, -1123762161, -1145922699)\n\t\t + W(11, 1012164149, 1000937675, 1011615629, 1004174827);\n\tsum2 = W(0, -1144599930, -1136232721, -1137221455, -1128645029)\n\t\t + W(1, -1151231836, -1156748756, -1160295481, 1020235585)\n\t\t + W(2, -1116760996, 1019759527, -1111064134, 1041961890)\n\t\t + W(3, 1036336113, 1033905549, 1022489781, -1122711401) + W(4, 1032730282, -1125055029, 1047170030, 1050767412)\n\t\t + W(5, -1093680614, -1120368706, -1115425401, -1132924343)\n\t\t + W(6, 1032901632, 1027655943, -1115058011, -1130649513)\n\t\t + W(7, -1116185015, -1105887613, 1012694293, -1122854992)\n\t\t + W(8, 985378521, 1005941018, -1129460922, 1019394239) + W(9, -1115704458, 1024734935, -1147415538, 1018590227)\n\t\t + W(10, -1129170670, -1131155477, -1129924333, 1022276751)\n\t\t + W(11, -1148456898, 1015791177, -1140100033, 1012472897);\n\tWS(1059709408, 1024973287);\n\tsum1 =\n\t\tW(0, -1126012593, 1004611460, -1134152138, -1114032340) + W(1, -1131432537, -1126017195, 991561039, -1124178504)\n\t\t+ W(2, 996494647, -1122880609, 1020165829, 1049657976) + W(3, 1014735450, 1032225804, -1115613273, 1022764985)\n\t\t+ W(4, -1119189544, 1030391200, 1046947367, -1094041084)\n\t\t+ W(5, 1018380112, -1112475533, -1123292160, -1122300512)\n\t\t+ W(6, 1028092109, -1114579692, -1111968183, -1106474499) + W(7, 1044458845, 1030371012, 1033263557, 1034006830)\n\t\t+ W(8, -1124577204, 1016065247, 1002304420, 1040268033) + W(9, -1114168306, 1023640576, -1119951545, 1017080432)\n\t\t+ W(10, 1023428420, -1127475101, 1021721777, -1114564220)\n\t\t+ W(11, -1128430825, 1019190017, -1127717781, 1017178441);\n\tsum2 = W(0, -1125800395, 1011909323, -1116511680, -1103527255)\n\t\t + W(1, -1120293374, -1148349175, 1015270352, -1125483347)\n\t\t + W(2, 1024962708, -1143341847, 1052819438, 1076690943) + W(3, 1057154431, 990717342, 1025045202, 1023577182)\n\t\t + W(4, 1023886172, -1144213999, -1097320166, -1072687587)\n\t\t + W(5, -1091630497, 1012280135, -1118805022, 1016249338)\n\t\t + W(6, -1122338700, 1018807292, -1115186882, -1098249874)\n\t\t + W(7, -1117298851, 1010582795, 990164302, -1125194137)\n\t\t + W(8, -1171853367, 1000330119, -1140479659, 1023038428)\n\t\t + W(9, 1029135274, -1122270538, 1020995472, 1003973863) + W(10, 973576887, 984068764, 1001426319, 1007326739)\n\t\t + W(11, -1135413483, 1008233815, -1129534965, -1140102471);\n\tWS(1066253200, 1009489111);\n\tsum1 = W(0, -1121073890, 1024085178, -1130104696, 1023275236)\n\t\t + W(1, -1128214764, -1135799996, -1141685621, -1121776782)\n\t\t + W(2, -1102592607, -1107707469, -1106598971, -1116780301)\n\t\t + W(3, -1111680448, 1032050668, -1131519352, 1028096678)\n\t\t + W(4, 1041243549, 1026388586, -1121496677, 1049328440)\n\t\t + W(5, 1018012708, -1096674093, -1122519370, -1101864235)\n\t\t + W(6, 1033075644, -1107162241, 1050587318, 1057262167) + W(7, 1027096831, 1040843700, 1028580820, -1117086438)\n\t\t + W(8, -1123366116, 1004872905, -1113976447, -1116780079)\n\t\t + W(9, -1113850464, 1015552212, -1123000331, 1040749648)\n\t\t + W(10, -1130535196, -1145989825, -1120961954, 1023066500)\n\t\t + W(11, -1121521086, 1008378152, -1124335656, -1135644600);\n\tsum2 = W(0, 1013104936, -1117172679, -1127525498, -1135146700)\n\t\t + W(1, -1122718205, 1027187072, -1119344027, -1128814570)\n\t\t + W(2, -1106333857, -1121647283, 1031691189, 1030458550)\n\t\t + W(3, -1111791784, 1009508096, -1127767754, 1037784205) + W(4, 1041445982, 1046293466, 1054977467, 1051999059)\n\t\t + W(5, 1044523088, -1099681845, -1185033988, -1107269301)\n\t\t + W(6, -1143812784, -1098323478, 1032669672, 1016608418)\n\t\t + W(7, -1093831562, 1044831040, -1117227205, -1118967703)\n\t\t + W(8, -1111423698, 1025469214, -1110723238, 1041509878)\n\t\t + W(9, 1024902469, -1110045970, -1129401382, -1121987113)\n\t\t + W(10, -1153458272, -1123006845, 1018478818, -1111394764)\n\t\t + W(11, -1127833490, -1140396324, -1129041118, 1021194206);\n\tWS(1055988095, 1068562120);\n\tsum1 = W(0, 1025054956, -1130996743, 1024941510, 1026193148) + W(1, 1035977616, 1028839961, 1016648336, 1025665319)\n\t\t + W(2, 1041692938, 1036197410, 1042434277, 1039706891) + W(3, 1036807045, 1029783554, 1019008523, 1026886128)\n\t\t + W(4, 1040251631, 1032351834, -1100356972, -1093055992) + W(5, 1047058383, 1043491547, 1044781893, 1048991774)\n\t\t + W(6, -1141880069, 1043619883, 1026325313, -1087193164)\n\t\t + W(7, -1087410536, -1097265155, -1104034167, -1099060796)\n\t\t + W(8, -1113980711, 1002392085, 1040781794, 1032223740) + W(9, 1047196369, 1027612260, 1036828166, -1113322870)\n\t\t + W(10, 1011769695, 1020511427, -1124414423, -1163338101)\n\t\t + W(11, 1015241743, -1129538215, 1018634427, -1180507092);\n\tsum2 = W(0, -1109623534, -1119308996, -1108667787, -1107757858)\n\t\t + W(1, -1126585969, -1144042093, 1004201965, 1024608852)\n\t\t + W(2, -1098330057, -1121926087, 1031129408, -1111457821)\n\t\t + W(3, -1091241820, -1092220222, -1112242725, -1104308532)\n\t\t + W(4, 1051762285, 1045894429, 1029096148, 1060518836) + W(5, 1065480819, -1120268316, 1035423856, -1105721536)\n\t\t + W(6, -1105318233, -1111281216, -1116694436, -1103134861)\n\t\t + W(7, 1017373783, 1034184394, -1129342463, -1134873838)\n\t\t + W(8, -1120494292, 1002875661, 1042501069, -1104320409)\n\t\t + W(9, 1041202422, -1131983911, 1023586732, 1017105251)\n\t\t + W(10, 1036873688, -1152598618, -1117793653, 1023528108)\n\t\t + W(11, -1117516356, -1123122827, -1131565835, 1015347387);\n\tWS(-1073915832, -1098883962);\n\tsum1 = W(0, 1030932360, -1131602112, -1125999684, 1018154928)\n\t\t + W(1, -1122265980, -1122315861, 1018577993, -1120663220)\n\t\t + W(2, 1024626915, 1032898976, -1122370130, 1011274315)\n\t\t + W(3, -1113904235, 1029902191, -1115348785, -1111387910)\n\t\t + W(4, -1098288699, -1117814224, 1056014501, -1106175819)\n\t\t + W(5, -1097956311, -1115232133, -1126206816, 1017122848)\n\t\t + W(6, -1130380922, -1103847418, -1096397881, -1105327485)\n\t\t + W(7, 1059753579, 1040451325, 1039068637, 1042824131) + W(8, 1033018229, 1040490540, 1031863906, 1044317365)\n\t\t + W(9, -1098424101, -1122968848, -1136273729, 1021433455)\n\t\t + W(10, 1021355752, -1120290302, -1131922448, -1139369119)\n\t\t + W(11, -1121102372, 1033247800, -1121007738, -1143567007);\n\tsum2 = W(0, -1118315643, -1126395193, 1014636591, -1138413531)\n\t\t + W(1, 1013622247, -1129252552, -1122713894, -1131632742)\n\t\t + W(2, 1046909717, 1025514844, 1026986728, -1112879553)\n\t\t + W(3, -1122377333, -1114813410, -1144089687, -1140190295)\n\t\t + W(4, -1100980148, -1112473945, 1040985677, 1027746798)\n\t\t + W(5, 1051150943, 1057006779, -1138866101, 1035155819)\n\t\t + W(6, -1129801877, 1030594060, -1101816290, -1094641835)\n\t\t + W(7, 1041324898, -1106485598, -1115757412, 1016695560)\n\t\t + W(8, -1122172234, -1111527676, 1023795758, 1027030278)\n\t\t + W(9, -1113671456, -1133454616, 1001347783, -1139893847)\n\t\t + W(10, 1010610423, -1135186433, 1030475382, -1121095046)\n\t\t + W(11, 1015864126, 999966259, -1127643580, -1124292419);\n\tWS(1058139200, 1067005003);\n\tsum1 = W(0, -1131277347, -1128484819, 1014594990, -1112913457)\n\t\t + W(1, 1028891109, -1118434446, -1125459884, -1151139539)\n\t\t + W(2, -1103206155, -1112832909, -1108301118, -1111811582)\n\t\t + W(3, -1113179152, -1100757638, -1116265771, -1119227733)\n\t\t + W(4, 1015263811, -1111332237, 1004409248, 1031432468) + W(5, 1057408386, 1053177162, 1035803645, 1052437131)\n\t\t + W(6, 1048238354, 1044526364, 1056580635, -1114379264)\n\t\t + W(7, 1025802539, -1104236495, -1124751623, -1121289813)\n\t\t + W(8, -1106607621, -1104751670, -1107635783, -1107787999)\n\t\t + W(9, 1020725062, -1114959053, -1129296244, -1120069105)\n\t\t + W(10, -1122297405, -1124214159, 1017238947, -1110162105)\n\t\t + W(11, 1002560364, -1113724157, -1123244163, -1115210511);\n\tsum2 =\n\t\tW(0, -1121057595, 1016432775, -1112629457, 1031151061) + W(1, -1126819952, 1021228732, 1009585899, -1127402608)\n\t\t+ W(2, 1023292260, -1124268922, -1116199054, -1110795130)\n\t\t+ W(3, -1103006120, -1134369449, -1120667087, 1016333862)\n\t\t+ W(4, -1111891368, 1029388268, -1123843875, 1054055516) + W(5, 1020478730, -1135412321, 993043492, 996548072)\n\t\t+ W(6, 1035766063, -1118389960, 1033023394, 1054507013) + W(7, -1104664187, -1121918429, 982538191, -1108029597)\n\t\t+ W(8, 1032208606, -1122510207, -1113138713, 1019595258) + W(9, -1114598707, 1023542227, 993709924, -1129671373)\n\t\t+ W(10, -1122161823, 1028529468, -1118001871, 1026811027)\n\t\t+ W(11, -1116707921, 1018790016, -1146185904, -1152045912);\n\tWS(-1091835967, 1038509097);\n\tsum1 = W(0, 1002958335, 1031236696, -1122124314, 1034973544)\n\t\t + W(1, -1120202292, 1015820538, 1033636218, -1121967836) + W(2, 1041562959, 1038000620, 1042029266, 1034473413)\n\t\t + W(3, 1040514695, 1042048878, 1029242778, 1042898689) + W(4, -1124369824, 1029288008, -1104824881, 1049571184)\n\t\t + W(5, -1089024373, -1089426268, -1107643796, -1091407169)\n\t\t + W(6, -1093861855, -1100002304, -1087002164, 1052741396)\n\t\t + W(7, 1044570703, 1042398171, 1023923250, 1030369604) + W(8, 1039801017, 1038306915, 1037725118, 1041619283)\n\t\t + W(9, 1031782758, 1038671876, 1025678032, 1043274836)\n\t\t + W(10, -1132073944, 1032364667, -1122032128, 1036587856)\n\t\t + W(11, -1138629744, 1010685600, 1027566834, -1153060031);\n\tsum2 = W(0, 1016791821, 1013192458, -1123883287, 1015528749)\n\t\t + W(1, -1131825297, -1132736674, 1019880949, -1117749640)\n\t\t + W(2, -1110538641, 1023566599, 1000152052, -1112636904)\n\t\t + W(3, -1116367667, -1130121037, -1114305335, 1033496981)\n\t\t + W(4, -1114409767, -1113846927, -1109610416, 1054155729)\n\t\t + W(5, -1109117303, 1016394661, 1030290683, -1157815185) + W(6, 1045544748, 1029704719, 1034122997, 1054056541)\n\t\t + W(7, 1030522539, -1116026974, 992430312, -1107824982)\n\t\t + W(8, -1111278622, -1125617069, -1110039103, -1108588248)\n\t\t + W(9, -1132906850, -1135451026, -1134728538, 1016739853)\n\t\t + W(10, -1127655665, 1012727082, -1131212885, 1000573476)\n\t\t + W(11, -1123699129, -1126704253, 988228497, -1123545619);\n\tWS(-1089794384, 1053743764);\n\tsum1 = W(0, 977181200, 1022034304, 999195154, -1173982736) + W(1, -1131079992, -1117753925, 1011212627, -1131210280)\n\t\t + W(2, -1124062435, -1123589329, 1008939465, 967031199) + W(3, 1031201254, 1038421055, 1023184516, 1042888267)\n\t\t + W(4, 1045792382, 1045687772, 1043214811, 1051096635) + W(5, -1106608558, -1104815387, 975115280, -1113606040)\n\t\t + W(6, -1096122984, -1100185218, -1089534650, -1128424615)\n\t\t + W(7, 1022835035, 1033659882, 1025453978, -1114474998) + W(8, 1035356461, 1029423919, 1037071922, -1130937578)\n\t\t + W(9, 1033635179, -1112564552, -1148354182, -1115626236)\n\t\t + W(10, -1146772642, 1022712508, 986801416, 1009586465)\n\t\t + W(11, 1012941585, 1008485953, 1023442138, 1020831720);\n\tsum2 =\n\t\tW(0, 1025756371, -1152866061, 1022411083, 1021941035) + W(1, 1018807869, -1162131898, 1030478695, -1117519259)\n\t\t+ W(2, 1038582018, -1136865390, 1028991375, -1102180290)\n\t\t+ W(3, -1127151005, -1103213990, -1148467374, -1101731450)\n\t\t+ W(4, -1095235720, 1027392563, -1094985700, 1062263751) + W(5, 1023141397, 1032099771, -1139645537, 1050734432)\n\t\t+ W(6, -1097242729, -1108446917, -1092586393, 1055770556)\n\t\t+ W(7, 1024429444, 1045256871, -1115314196, 1044538365) + W(8, 1048188946, 1009460859, 1013992713, -1098658877)\n\t\t+ W(9, -1162587434, -1104388978, 1033707193, -1097902791)\n\t\t+ W(10, -1145714840, 1022755591, 1033471029, 1018658879)\n\t\t+ W(11, 1032105067, -1135748387, 1008760659, 1019361371);\n\tWS(-1092258911, -1089815334);\n\tsum1 = W(0, -1139634407, -1147044493, 1017866535, -1130890003)\n\t\t + W(1, 1027130446, 1016637069, 1016500860, 1026913637) + W(2, 1045821685, 1034203057, 1044613801, 1035729090)\n\t\t + W(3, 1029847032, -1102281888, -1131657511, -1121093118)\n\t\t + W(4, -1119357002, 1015718019, -1104936487, -1090722234)\n\t\t + W(5, 1052628837, 1057948020, 1044884520, 1053191568) + W(6, 1034361159, 1051668019, 1032636456, -1086460492)\n\t\t + W(7, -1094763749, -1095562645, -1106362539, -1098187032)\n\t\t + W(8, -1137425069, -1115826689, 1035725147, 1010439579)\n\t\t + W(9, 1043916211, -1114240161, 1035145793, -1102258214)\n\t\t + W(10, -1130196683, 1023465264, 1015877619, -1117806874)\n\t\t + W(11, 1025832214, -1123952546, 1029577644, 1011300119);\n\tsum2 =\n\t\tW(0, -1128703433, 1012757410, 1007787634, 1023396449) + W(1, 1017560605, 1012244530, -1143125556, 1024938353)\n\t\t+ W(2, -1113670137, 1024378351, -1111552612, -1131966925)\n\t\t+ W(3, -1114649634, 1040107467, -1122758108, 1032092801) + W(4, 1038503213, -1102109659, 1041322248, 1061982310)\n\t\t+ W(5, -1104769108, -1098175974, 1026757617, -1105089779)\n\t\t+ W(6, 1040684472, -1100043210, 1041989415, 1066879681)\n\t\t+ W(7, -1101238360, -1089047102, 1023979343, -1100231891)\n\t\t+ W(8, -1099552212, 1026887817, -1104965070, -1107386978)\n\t\t+ W(9, -1104448348, 1016563929, -1107880053, 1036400101) + W(10, 993905065, 1003273444, -1144755940, 1019447753)\n\t\t+ W(11, 1019550873, 1024790159, -1138003290, 1014825186);\n\tWS(-1086002512, -1084928660);\n\tsum1 = W(0, -1131929465, 1017039401, 1020173741, -1134499377)\n\t\t + W(1, -1129468257, -1138890277, -1132813939, -1143488833)\n\t\t + W(2, -1115340892, -1113717074, -1102662114, -1097984585)\n\t\t + W(3, 999020755, -1114393442, 1028151894, -1132982017) + W(4, 1050776738, 1042912513, 1053707114, 1055825787)\n\t\t + W(5, -1108349590, 1033511359, -1108075378, -1138015505)\n\t\t + W(6, -1103148388, 1010821235, -1104889757, 1049797700) + W(7, 1042555580, 1041826234, 1032548919, 1041074464)\n\t\t + W(8, -1143173743, -1128281895, -1111952748, -1098746549)\n\t\t + W(9, -1106170922, -1103706929, -1127274842, -1110410462)\n\t\t + W(10, -1130358353, -1122997746, -1139775729, -1117617116)\n\t\t + W(11, 1014563169, 1010736529, -1137959865, -1123442568);\n\tsum2 =\n\t\tW(0, 1000102260, -1126633986, -1144291760, -1119827470) + W(1, 1016232493, 1023762781, -1141218312, 1025293286)\n\t\t+ W(2, -1118205558, 1029900308, -1140439712, 1041420529) + W(3, 979974721, 1006017080, -1137204884, 1002898232)\n\t\t+ W(4, 1051204856, 1063980475, 1066576503, -1075398805)\n\t\t+ W(5, -1098954833, -1114660078, 1021034547, -1117648930)\n\t\t+ W(6, 1041999613, 1037162912, -1167793729, -1085093765) + W(7, 1017117707, 1033481679, -1137323924, 1002077480)\n\t\t+ W(8, -1135930364, -1134402620, 1020225891, -1133429672)\n\t\t+ W(9, 1028764817, 1018587503, -1132685152, 1026769102)\n\t\t+ W(10, 1019347314, -1137379540, 1012525172, -1123883092)\n\t\t+ W(11, -1139078108, 990744512, -1137103964, 1022792204);\n\tWS(-1084377664, 1027078466);\n\tsum1 = W(0, 1028609881, -1129675619, 1022038247, 1010908070) + W(1, 1026611885, 1030113110, -1132403564, 1031201461)\n\t\t + W(2, 1023875764, 1032239673, 1043647401, 1024809124)\n\t\t + W(3, -1131519215, -1128260416, 1026951667, -1115829469)\n\t\t + W(4, -1113303893, -1114746833, -1084547118, -1156932707)\n\t\t + W(5, 1050946557, 1047159719, 1020650755, 1037768177) + W(6, 1031700430, 1026119482, 1051850662, -1104988345)\n\t\t + W(7, -1083734174, 1027361605, -1111325382, 1042797655)\n\t\t + W(8, -1138486380, -1122216064, -1132199979, 1033025459)\n\t\t + W(9, 1043104191, 1018468419, 1014159432, -1108759836) + W(10, 1025866053, 1016759071, 1032834541, 1029398137)\n\t\t + W(11, 1007914454, 1021351811, 1014779182, 1018395723);\n\tsum2 = W(0, -1123315648, -1139192721, -1123875414, 1030816333)\n\t\t + W(1, -1123326315, 1016532474, -1130303816, -1131093304)\n\t\t + W(2, 1034590473, -1139997869, -1115134908, 1008365317)\n\t\t + W(3, -1110803030, 1028786615, 1004595129, 1015409534) + W(4, 1026150549, 969235347, 1042477897, 1046059603)\n\t\t + W(5, -1155992274, -1122978967, -1119026545, -1111529432)\n\t\t + W(6, 1030314237, -1112534256, 1037120039, 1027803789)\n\t\t + W(7, -1102080708, -1135183209, -1120008811, -1109468455)\n\t\t + W(8, -1113579452, -1158492453, -1098184684, 1032895251)\n\t\t + W(9, -1126452160, 1047700729, 999072441, 1047312851) + W(10, 1014056813, -1132289868, 1018097190, 1032146261)\n\t\t + W(11, -1114996104, 1011346781, -1115756663, -1122411639);\n\tWS(1043014014, -1087744322);\n\tsum1 = W(0, 1027952711, 1020523582, 1002118409, 1021435438) + W(1, -1138414444, 1003104545, 1021955143, 1013303243)\n\t\t + W(2, -1123526530, -1138321214, -1110182129, 1032339433)\n\t\t + W(3, 1035386835, -1137297015, -1119534945, -1108462406)\n\t\t + W(4, 1008337244, 1022379422, 1057818171, -1110004232)\n\t\t + W(5, -1083267015, 1007303460, -1115695919, 1036022088)\n\t\t + W(6, 1035059438, -1120526792, -1086364127, -1118604170)\n\t\t + W(7, 1057062103, 1036507098, 1038869533, 1036993862) + W(8, -1116610857, 1037330895, 1040407761, 1040846837)\n\t\t + W(9, -1107059287, -1128420830, 1017909759, -1142792885)\n\t\t + W(10, 1026995059, -1156487121, 1009757724, -1153254001)\n\t\t + W(11, 1021783366, 1034169880, -1138765796, 1027514579);\n\tsum2 =\n\t\tW(0, -1129567658, -1156092221, -1123579911, 1008715269) + W(1, -1125160256, 1026524337, -1137738801, 1017463077)\n\t\t+ W(2, -1117738234, -1131091573, -1115037144, -1115010115)\n\t\t+ W(3, -1101087826, 1015586863, -1113332277, 1019720419) + W(4, 1034622765, -1128107850, 1017778197, 1050631618)\n\t\t+ W(5, 1045062017, -1095615964, 1020345131, -1101223712) + W(6, 1030957051, -1118479197, 1041246295, 1054490255)\n\t\t+ W(7, -1117275788, 1025836507, 1027688491, -1120912313)\n\t\t+ W(8, 1029443337, 1005860107, -1110926783, -1157251077) + W(9, -1108959270, 1020928095, -1122972204, 983922363)\n\t\t+ W(10, -1132249217, 969559787, -1132354551, 1024782459)\n\t\t+ W(11, 998415619, 1012990901, -1161032699, 1011300789);\n\tWS(1054959103, -1083836992);\n\tsum1 =\n\t\tW(0, -1144415487, -1132171248, -1133053416, 980216825) + W(1, 1018609320, 1017404666, -1127349353, -1154920122)\n\t\t+ W(2, 1023853723, -1118146184, 1039313221, -1107434917)\n\t\t+ W(3, 1027331294, -1111685883, -1129432820, -1126004808)\n\t\t+ W(4, -1123173616, 1018672592, -1090265426, 1057912142) + W(5, 1044087220, 1046306952, -1133031712, 1039769364)\n\t\t+ W(6, -1121737045, -1123041056, -1161038260, 1053211380)\n\t\t+ W(7, -1089253699, 1036559366, -1110305609, 1035028498)\n\t\t+ W(8, -1124541667, -1120856711, 1034290206, -1109871174)\n\t\t+ W(9, 1040602782, -1113560292, -1148202051, -1109624712)\n\t\t+ W(10, 1017937944, -1131928876, 1027902624, -1129566080)\n\t\t+ W(11, -1121689404, 1010241568, -1124796708, -1127304152);\n\tsum2 =\n\t\tW(0, 1018338338, -1139755941, 1025801614, -1122001203) + W(1, 1010171613, -1132321439, 1016232007, 1013259501)\n\t\t+ W(2, -1110884586, -1129406227, -1108237236, 1037408540)\n\t\t+ W(3, 1040327756, -1123391437, -1129086463, -1132299663)\n\t\t+ W(4, -1136808221, -1118232763, -1115176435, -1113269344)\n\t\t+ W(5, -1105808410, -1110685464, -1168436052, 1021765462)\n\t\t+ W(6, 1026570078, 1021052542, -1114736489, 1041519115)\n\t\t+ W(7, 1047951095, -1115014721, -1113536502, -1123780081)\n\t\t+ W(8, -1136194357, 1020321772, 1048907220, 1046652366) + W(9, 1035402835, -1111631696, 1026410761, -1102273277)\n\t\t+ W(10, -1120452457, 1004896115, -1119060361, -1107310106)\n\t\t+ W(11, 1033649944, -1126977687, 1026056519, 1027695361);\n\tWS(1057903600, 1067139767);\n\tsum1 = W(0, -1130009103, 1012511358, -1137761926, -1124300975)\n\t\t + W(1, 1008012526, -1117250069, -1162310274, -1115259538)\n\t\t + W(2, -1107061793, -1111029392, -1104154592, -1103367501)\n\t\t + W(3, 1009980758, -1113394087, 1026647906, -1114684710) + W(4, 1043136838, 1028125200, 1051222763, 1060113955)\n\t\t + W(5, 1024983063, 1016245011, -1117690736, 1025498192) + W(6, -1102099951, 992918145, -1106189879, 1050079197)\n\t\t + W(7, 1048697267, 1034440698, 1041096574, 1041574755)\n\t\t + W(8, -1115498357, -1117969679, -1104467697, -1108729546)\n\t\t + W(9, -1111781863, -1104780916, -1117169584, -1120787335)\n\t\t + W(10, -1123992244, -1145160172, -1125356943, -1117739880)\n\t\t + W(11, -1165450354, -1114615608, -1139440358, -1118506516);\n\tsum2 = W(0, 1011962608, -1120699406, 1007214128, 1026799984)\n\t\t + W(1, -1145867047, 1029224075, -1116434980, 1022659583)\n\t\t + W(2, 1038855085, -1131692032, 1038467393, -1112343444)\n\t\t + W(3, -1113849522, -1138735380, -1120001434, -1118784264)\n\t\t + W(4, -1122245118, -1112627842, -1122221782, -1106597578)\n\t\t + W(5, 1026356645, -1114988845, 1020413259, -1123194990)\n\t\t + W(6, -1126451804, -1110442893, 1042136464, 1054959792) + W(7, 1031831390, 1046305460, 1008343524, 1047204017)\n\t\t + W(8, -1106947014, 1008646548, -1113116412, -1109079281)\n\t\t + W(9, -1109881757, -1109725169, -1123390380, -1114571313)\n\t\t + W(10, 1026864717, -1123527836, 999106843, 1011333214)\n\t\t + W(11, -1117815384, 1032922020, -1119479700, 1000599735);\n\tWS(-1101058110, 1058505899);\n\tsum1 =\n\t\tW(0, 1008909245, 1015324303, -1151491221, -1139701245) + W(1, 1009250957, 1031005836, -1131857944, 1009310828)\n\t\t+ W(2, -1123852394, -1112299044, -1128516275, -1102217815)\n\t\t+ W(3, -1104833467, -1113648843, -1119585353, -1121962739)\n\t\t+ W(4, 1037579744, 992056181, -1098678002, 1045087960) + W(5, 1058072040, 1036986521, 1024521495, 1032839164)\n\t\t+ W(6, 1024016996, -1124723744, 1056678303, 1021619781) + W(7, -1095085849, 1041104615, -1129179587, 1025292595)\n\t\t+ W(8, -1121096497, -1131134189, -1109419958, -1098726544)\n\t\t+ W(9, -1109643932, -1121889031, -1127292144, 1017031326)\n\t\t+ W(10, 1022516663, -1130344395, 1021039583, -1132041247)\n\t\t+ W(11, -1140161581, 1026848535, -1125244995, 1005622747);\n\tsum2 =\n\t\tW(0, 992821683, 1017011277, 1011814063, 999390943) + W(1, -1121326865, -1128713872, -1144442308, -1138094133)\n\t\t+ W(2, 1023078017, -1140746852, 959773689, -1112338116) + W(3, 1035095219, 1024063493, 1023948090, 1032024680)\n\t\t+ W(4, 1023704638, -1139829185, -1107874815, -1113377165)\n\t\t+ W(5, -1108229047, 1033653422, -1133039950, -1140161389)\n\t\t+ W(6, -1112719649, 1034266306, 1032357888, 1057654961) + W(7, 1012152366, -1122811174, 1020168485, -1113617432)\n\t\t+ W(8, 1027637582, -1119668356, -1113625790, -1086342498)\n\t\t+ W(9, -1101720659, -1136544465, -1121720102, 1019370668)\n\t\t+ W(10, 1021903376, 1016759855, 1034398452, 1051594315) + W(11, 1035110699, 1031049449, 1018271190, 1021410443);\n\tWS(-1098338111, 1023498750);\n\tsum1 = W(0, -1138701849, 1022617405, -1168316434, 989875557) + W(1, 1014043241, 1028694643, 1012653195, -1123740578)\n\t\t + W(2, -1121510465, -1112416999, -1180399652, 1037491593)\n\t\t + W(3, -1102495433, -1121884733, -1122132512, 1036415429)\n\t\t + W(4, 1040383254, 1041395124, -1097293461, -1094988553)\n\t\t + W(5, 1059563452, -1118903112, 1027507886, -1126796061)\n\t\t + W(6, 1010706669, -1110248019, 1058209828, -1095385553)\n\t\t + W(7, -1097437690, 1046085501, -1130301425, -1128488725)\n\t\t + W(8, -1149170878, 1020223099, -1106291545, 984962665)\n\t\t + W(9, -1119747464, -1122110350, -1123237039, 989067449)\n\t\t + W(10, 1021863397, 1016227961, 1018489101, 1021609037)\n\t\t + W(11, -1145092370, 1026243438, 992349061, -1164474953);\n\tsum2 = W(0, -1164068108, -1120898035, 1013829433, 972583599)\n\t\t + W(1, 1016837545, -1128855117, -1120505887, -1130000643)\n\t\t + W(2, 1029420636, 1036981221, 1035658823, 1039879187) + W(3, -1102894380, -1128781606, 1013125305, 1008550341)\n\t\t + W(4, -1112077059, -1106651210, -1106432341, -1108370344)\n\t\t + W(5, 1027609202, 1035930993, 1026372950, 1017927697) + W(6, -1110964317, -1141413971, 1035230257, 1044568046)\n\t\t + W(7, 1041920264, -1110600858, -1125837008, 1019426133) + W(8, 1028276360, 1028557670, 1017251513, 1026800348)\n\t\t + W(9, -1124056839, 1023713154, -1132458450, -1129712212)\n\t\t + W(10, -1148255859, -1129246253, -1131530425, -1126980980)\n\t\t + W(11, -1121785123, -1124361549, 1009116645, -1127748642);\n\tWS(1064075168, -1085260633);\n\tsum1 = W(0, 1020097830, 1004279127, 1028112237, 1026532451) + W(1, 961537748, -1130706656, -1135275149, 994604265)\n\t\t + W(2, -1104011171, -1113516590, -1103036207, -1102348791)\n\t\t + W(3, -1120389361, 1038928889, -1129088474, 1031068695) + W(4, 1041894009, 1036855277, 1045116105, 1027716980)\n\t\t + W(5, -1096376936, -1096709211, 996846509, -1102472071)\n\t\t + W(6, 1034297780, -1106861493, -1112331770, 1058153819)\n\t\t + W(7, 1043898973, 1048347472, -1164071066, -1118081687)\n\t\t + W(8, -1113914242, 1031661466, 1017072798, -1100287056)\n\t\t + W(9, -1119328440, 1032287909, 1019059671, 1040008649)\n\t\t + W(10, -1138151419, -1151789197, -1129921062, 1026370483)\n\t\t + W(11, 1025128111, -1140511211, -1167790389, -1140610427);\n\tsum2 =\n\t\tW(0, 1014633478, -1138053524, -1140130516, -1120104172) + W(1, 1012698026, -1123853902, 1013120742, -1133638700)\n\t\t+ W(2, 1033869831, -1133342724, 1003291347, 1033872317) + W(3, 1006625651, -1121932314, 1004319943, 975983930)\n\t\t+ W(4, -1114935893, -1126366588, 1043822142, -1086850225)\n\t\t+ W(5, 1030145358, 1040015383, -1150276254, 1028724356)\n\t\t+ W(6, -1111281510, -1128243618, -1107071420, -1084734921)\n\t\t+ W(7, 1067004758, 1046081705, 1002809783, 1031930717) + W(8, 1016908923, -1145483991, 1006526455, 1045857736)\n\t\t+ W(9, 1020093203, -1118176982, -1161820989, -1104669476) + W(10, 990649086, 996067150, 1012165262, -1119271334)\n\t\t+ W(11, -1129772456, -1144422823, -1141799647, -1143148999);\n\tWS(-1102756414, -1120030182);\n\tsum1 = W(0, -1114857721, 1007304745, -1113282502, -1135708169)\n\t\t + W(1, -1130226572, -1115825727, -1142173365, -1136250680)\n\t\t + W(2, -1102767115, -1115971707, -1095987354, -1101194087)\n\t\t + W(3, -1099422340, -1109693396, -1122657804, -1100198174)\n\t\t + W(4, 1043961809, -1101676399, 1053600405, 1065521342) + W(5, 1046696200, 997946179, -1112668237, 1025742970)\n\t\t + W(6, -1124210446, 1028311347, 1046261656, 1068133511)\n\t\t + W(7, 1042816511, -1098872988, -1133742993, -1113205915)\n\t\t + W(8, -1117667780, -1113057893, -1103902228, -1095174540)\n\t\t + W(9, -1101926052, 1020822452, -1113901869, -1140085511)\n\t\t + W(10, -1120413918, -1125847632, -1114932345, 1027169042)\n\t\t + W(11, -1125196828, -1114420141, -1121096548, -1110338975);\n\tsum2 =\n\t\tW(0, 1022430051, -1126993785, 1027244407, -1136699515) + W(1, -1115987625, 1024283610, -1120680273, -1137060371)\n\t\t+ W(2, -1119384349, -1117046041, -1113440146, -1099757367)\n\t\t+ W(3, 1038214736, -1152620459, 1013074835, 1015902709) + W(4, -1127804673, 1014745875, -1129639049, 1065124465)\n\t\t+ W(5, -1113943514, -1130768777, -1113854522, -1112590762)\n\t\t+ W(6, 1011315171, -1106680506, 1020590601, 1034863647) + W(7, 1035633573, -1116743921, -1127682237, 1012706011)\n\t\t+ W(8, -1121146859, 1009189211, -1115604020, -1111752578)\n\t\t+ W(9, -1124061319, -1120130033, -1148961286, -1113078716)\n\t\t+ W(10, 1009328259, -1125156477, 1000906166, 1017063165)\n\t\t+ W(11, -1117062841, 1024425511, -1119191933, 1024105421);\n\tWS(-1077988040, -1098609713);\n\tsum1 = W(0, 1020152245, 1002836371, -1132015209, 1010566313) + W(1, 1010053945, 1020486319, 1030571159, -1132252076)\n\t\t + W(2, 1040202093, 1027276515, 1049452385, 1032875267) + W(3, 1036663212, 1034908465, -1114877050, 1038229775)\n\t\t + W(4, -1114910389, 1037438449, -1100627367, 1030654167)\n\t\t + W(5, -1113362709, -1095852652, 1025947458, -1105166249)\n\t\t + W(6, -1104283732, -1105856183, -1098108347, -1102427678)\n\t\t + W(7, -1104090280, 1048934265, -1126406169, -1138504825)\n\t\t + W(8, 1039298438, 1028081393, 1024125142, -1131705423) + W(9, 1042947115, 1019783717, 1021770278, 1035155325)\n\t\t + W(10, -1125387021, 1013826369, 1018674229, 1017725301)\n\t\t + W(11, -1141124531, 1015682181, 1006527587, 1016700365);\n\tsum2 =\n\t\tW(0, -1142267837, -1139598567, 967895252, 1008554815) + W(1, -1145406733, 1024473654, -1120792990, 1020245499)\n\t\t+ W(2, -1132626695, -1138132903, -1131100139, 1032537913)\n\t\t+ W(3, -1112410791, 1023361695, -1130141475, 1015868043) + W(4, 1023852808, 1033876712, 1012220303, -1095058264)\n\t\t+ W(5, -1110252153, -1104029741, 1031843465, -1196949327)\n\t\t+ W(6, 1039691642, -1110747637, 1061640184, 1037101696) + W(7, -1091888991, -1161200181, -1119701362, 977066218)\n\t\t+ W(8, -1114839167, -1127924867, -1122160974, 1049832068)\n\t\t+ W(9, 1027903240, -1126050715, -1132864167, -1118663498)\n\t\t+ W(10, -1147709133, -1155304986, -1121532798, 992067354)\n\t\t+ W(11, -1128735955, 1025251228, -1157362170, 1009680879);\n\tWS(1050097375, -1144620389);\n\tsum1 =\n\t\tW(0, -1128715377, 1011057731, -1134438475, 1019193873) + W(1, 1022275225, 1009602711, 1032927683, -1136253330)\n\t\t+ W(2, 1044211901, 1033637193, 1048874276, 1034983634) + W(3, 1042543166, 1017343103, -1149239594, 1037918654)\n\t\t+ W(4, -1107032850, 1022227585, -1096643663, -1114392598)\n\t\t+ W(5, -1092702793, -1097617495, -1139445891, -1097624368)\n\t\t+ W(6, -1104047251, 1028225817, -1092741994, 1036584266)\n\t\t+ W(7, 1025153498, 1028276325, -1142331733, -1118553533) + W(8, 1044522647, 1008625791, 1044273989, -1113959235)\n\t\t+ W(9, 1042105869, 1041046056, 1025445761, 1045159742) + W(10, -1128884681, 1011579579, 1018667761, 1025301657)\n\t\t+ W(11, 1024565397, -1123355105, 1027058603, 1015982985);\n\tsum2 =\n\t\tW(0, -1125113091, -1172679141, -1152889753, -1126905475)\n\t\t+ W(1, 1006649294, -1117488938, 1019337735, -1172252645) + W(2, 1033296420, -1128383915, 1019343075, 1031861037)\n\t\t+ W(3, 1038268779, -1113645001, 1028739248, -1120621430)\n\t\t+ W(4, 1004274749, 1016688407, -1103752812, -1097163724) + W(5, 1062746712, 1051715314, -1124587947, 1035778038)\n\t\t+ W(6, -1102915066, 1037338868, -1089888071, -1090194983)\n\t\t+ W(7, 1041005261, -1118523722, 1027501384, -1154227385)\n\t\t+ W(8, 1028147108, -1144981581, 1030353331, -1121675098) + W(9, 1019962267, 1006661278, 1023891692, 1013440998)\n\t\t+ W(10, 1017918867, 991135609, 1022111055, -1117974458)\n\t\t+ W(11, 1026630548, -1115156997, 1018829507, -1136345798);\n\tWS(-1098112447, -1125216946);\n\tsum1 =\n\t\tW(0, 1010417568, 1006322176, -1140685064, 1017991280) + W(1, -1126853432, -1146614696, 1004323364, 1019294567)\n\t\t+ W(2, -1112042689, -1119953952, -1116450322, -1112784281)\n\t\t+ W(3, -1105219289, 1023451023, -1153582112, -1110071894)\n\t\t+ W(4, 1004161984, -1112614584, -1090400895, -1113885864) + W(5, 1051228911, -1126136276, 1016683168, 983864831)\n\t\t+ W(6, 1041397655, 1018267345, 1058507679, 1050855349) + W(7, -1097135921, -1122997076, -1149231824, 1012208560)\n\t\t+ W(8, -1114418485, 1024614191, -1104618697, 1027345269) + W(9, 1037685358, 1039454784, -1140802306, 1030420791)\n\t\t+ W(10, 1021110568, -1137912440, -1127130192, 1019594896)\n\t\t+ W(11, -1116355204, 987030015, 988441407, -1149650752);\n\tsum2 =\n\t\tW(0, 1035141604, -1134943159, 1031353634, -1120750640) + W(1, 1025254666, -1114509439, 1028756554, -1113538005)\n\t\t+ W(2, -1152950404, 1010887850, -1122370025, -1101926585)\n\t\t+ W(3, -1104605825, 1035852377, -1114959163, -1148680422)\n\t\t+ W(4, -1100547860, 1025641276, -1101375945, 1057546844) + W(5, 1048526282, -1108641700, 1033576762, 1037895648)\n\t\t+ W(6, -1104792229, -1119115361, -1100366049, 1042205116) + W(7, 1042952063, 1039483674, 1030776026, 1041006229)\n\t\t+ W(8, 1037875812, 1021611837, 1015511489, -1109199537)\n\t\t+ W(9, -1105787312, -1109299079, -1143994351, -1107406256)\n\t\t+ W(10, -1138078871, 1016878804, 1015482099, -1140091328)\n\t\t+ W(11, 1032201266, -1132053601, 1007578680, -1124574444);\n\tWS(1027823864, 1049081066);\n\tsum1 = W(0, 1012131718, -1130128499, 1020918007, -1147020173) + W(1, 1027080278, 1020448605, 1012408472, 1024273997)\n\t\t + W(2, 1045092167, 1032126573, 1043895467, 1034108246)\n\t\t + W(3, 1035993776, -1104998342, -1129990263, -1123698278)\n\t\t + W(4, -1108779609, -1127539283, -1101697729, -1094495268)\n\t\t + W(5, 1047905888, 1057437086, 1041161122, 1052750589) + W(6, 1031292119, 1050389010, 998802811, -1089568357)\n\t\t + W(7, -1096020979, -1097851474, -1105719893, -1101687913)\n\t\t + W(8, -1168425160, -1113259988, 1036534559, 1026355631)\n\t\t + W(9, 1044370080, -1112197645, 1035394325, -1103284196)\n\t\t + W(10, -1123848398, 1017365039, 1015583683, -1120941186)\n\t\t + W(11, 1024649726, -1123264842, 1027345300, 966350543);\n\tsum2 = W(0, 1023788251, 982227227, 1006064903, -1119196045) + W(1, 1022374646, -1139981943, 1006364327, -1130167410)\n\t\t + W(2, -1115639872, -1150596845, 1015277390, 1006169559)\n\t\t + W(3, 1034991246, -1110295858, -1148612007, -1131776900)\n\t\t + W(4, 1042970848, 1046665761, 1037025188, -1080187678) + W(5, 1047303977, 1052132899, 1033799186, 1035867784)\n\t\t + W(6, 1041100183, 1053945290, -1128807740, -1078236510) + W(7, 1053440142, 1058969577, 1029728171, 1005561207)\n\t\t + W(8, -1120506242, -1121383639, 1017634434, 998104205)\n\t\t + W(9, 1037533712, -1112892146, 1033828190, -1110685126)\n\t\t + W(10, -1214633659, -1143798279, 1023282498, -1114831851)\n\t\t + W(11, 1023435593, -1124500500, 1015376522, 1014287051);\n\tWS(-1088189216, 1043089281);\n\tsum1 = W(0, -1140748743, -1121398410, 1026065228, -1149048846)\n\t\t + W(1, 1020127051, 1036138263, -1128555260, 1038047047) + W(2, 1049770738, 1041680407, 1048806759, 1043836791)\n\t\t + W(3, 1034371336, 1024770968, 1037337862, -1137213911)\n\t\t + W(4, -1088213532, -1096476823, -1084369379, -1108723571)\n\t\t + W(5, 1036745881, 1041309981, 1011670631, 1028379642) + W(6, 1042644994, 1047024381, 1050638745, -1101872740)\n\t\t + W(7, -1094226627, -1096464492, -1106071481, -1102959693)\n\t\t + W(8, 1041481493, -1107153702, 1035104215, 1041455384) + W(9, 1040593116, 1045395982, 1040128941, 1016152290)\n\t\t + W(10, 1008330103, 1031833588, 1020682979, 1026205458)\n\t\t + W(11, 1006701623, -1120876186, 1024336228, 1028740542);\n\tsum2 =\n\t\tW(0, -1129618765, 1004169862, -1163586391, 1012667011) + W(1, 1004789414, 1006867267, -1148564598, 1023888443)\n\t\t+ W(2, 1028575755, -1114659435, 1025093243, -1110197183)\n\t\t+ W(3, -1140439179, -1110600679, 1019765437, -1106146141)\n\t\t+ W(4, 1018469269, 1020493837, -1120959857, 1045602812) + W(5, -1119013866, 1007539419, -1126956769, 1005311510)\n\t\t+ W(6, -1109549862, 1025826707, 1018231561, 1050121196) + W(7, 1009644755, 1038682513, 1017107081, 1040899502)\n\t\t+ W(8, 1022763469, -1116607191, 1017295613, -1110473213)\n\t\t+ W(9, -1143499366, -1107944702, -1123266847, -1114206671)\n\t\t+ W(10, -1123897489, -1153284395, -1131222849, 1019030581)\n\t\t+ W(11, -1125130849, 1009132883, 1006886939, -1127991173);\n\tWS(-1082596160, 1043517696);\n\tsum1 = W(0, 1028909798, -1153492953, 967933898, 1019116907) + W(1, -1132218099, -1129844133, 1011144392, 999709323)\n\t\t + W(2, -1154689545, 1032486047, -1128767583, 1037703496)\n\t\t + W(3, -1115978788, 1027446332, -1146849277, -1114471573)\n\t\t + W(4, -1104169149, -1117361518, 1049441299, -1087176649)\n\t\t + W(5, -1115448907, 1018413135, -1154137305, -1130624603)\n\t\t + W(6, 1025985531, -1118729126, 1031994846, -1089391227) + W(7, 1056185125, 1032249225, 1036574828, 1042483386)\n\t\t + W(8, 1029418231, 1034798166, 1006099469, 1046438773) + W(9, -1106352341, 991686873, -1131200252, 1022706506)\n\t\t + W(10, 1024711058, -1125485751, 1008177302, 986175666)\n\t\t + W(11, -1125946755, 1030151438, 1006963806, 1019997155);\n\tsum2 = W(0, 987806561, 1024001581, -1132313544, -1138298076) + W(1, 1003342504, -1131321664, 1015369606, 1016585830)\n\t\t + W(2, -1103978637, -1138508200, -1113576691, 1037869389)\n\t\t + W(3, 1041829747, -1102361734, 995389041, -1103350916)\n\t\t + W(4, 1039699877, -1109586411, -1109697688, 1004783368)\n\t\t + W(5, -1101655248, 1023850463, -1123567230, 1033013495) + W(6, 1032745921, 1036006171, 1041044376, 1057490671)\n\t\t + W(7, -1120283284, -1118937466, -1137071480, 1023653113)\n\t\t + W(8, -1106709297, 984628641, -1135869680, -1123523352)\n\t\t + W(9, 1037905909, -1133053924, 1008345900, -1123775069)\n\t\t + W(10, 1017765222, -1151113585, -1128136972, -1126668402)\n\t\t + W(11, -1142518888, -1119975873, 1015435786, -1153724113);\n\tWS(1066487464, -1081148228);\n\tsum1 =\n\t\tW(0, -1156758047, -1115667101, 1032245054, -1120457266) + W(1, 1025970038, 1028999903, -1129094085, 1031685286)\n\t\t+ W(2, 1045622655, 1039828621, 1043227835, 1051174634) + W(3, 1038187760, 1035936180, 1028125692, 1038703027)\n\t\t+ W(4, -1121579186, 1016276052, -1107379682, -1081882686)\n\t\t+ W(5, -1114502289, -1110627634, 1032926021, -1130240468)\n\t\t+ W(6, 1016497454, 1034243041, -1125065087, -1081200961)\n\t\t+ W(7, -1121918554, -1121754318, -1138807120, -1128847308)\n\t\t+ W(8, 1026804003, -1129971954, 1036683903, 1050524446) + W(9, 1033938044, 1045144826, 1028558202, 1036935449)\n\t\t+ W(10, 1025331662, 1022570928, 1033790001, 950141917) + W(11, 1035886143, -1123227402, 1023360168, 1033245399);\n\tsum2 = W(0, 990406129, -1109318105, 1032976305, -1108583903) + W(1, 1009651516, 1027268958, -1109295843, 1034160517)\n\t\t + W(2, 1013162021, 1040565489, -1125670617, 1041812300)\n\t\t + W(3, -1123723867, 1031967357, 1033460548, -1113698315)\n\t\t + W(4, -1111903383, -1098989385, -1114873385, 1042303391)\n\t\t + W(5, 1001920896, -1113158574, 1015358203, 1032025507) + W(6, 1031481662, 1036428343, 1043786440, 1039454897)\n\t\t + W(7, 1032603577, -1097549253, -1117993943, -1119346601)\n\t\t + W(8, -1112035485, -1111376696, 1007686716, 1044627344)\n\t\t + W(9, -1107723593, 1043104932, -1142055788, -1111706149)\n\t\t + W(10, 1026146121, 1020848344, 993596601, -1114987237)\n\t\t + W(11, 1030752081, -1112152994, -1128311189, 1024170945);\n\tWS(-1085700080, -1080808385);\n\tsum1 = W(0, 1024296914, -1122227946, -1137292464, 1023737634)\n\t\t + W(1, -1114666035, 1017074878, -1116342907, 998628462) + W(2, -1130852634, 1020782261, 1018157624, 1000516328)\n\t\t + W(3, 1007198528, 1034334952, 1028012332, 1030076118)\n\t\t + W(4, -1113008209, 1011762792, -1132968658, -1126768286)\n\t\t + W(5, -1104353680, -1108931914, -1128335092, -1106440695)\n\t\t + W(6, 1037784580, -1106441949, 1034492712, -1096045179) + W(7, 1044579508, 1035021791, 1016641544, 1037317931)\n\t\t + W(8, -1128041639, 1023563097, 1002605936, 1048917408)\n\t\t + W(9, -1126595297, -1127030516, -1124799637, -1122557970)\n\t\t + W(10, 1011155704, 1007950112, -1130475172, 1027876850)\n\t\t + W(11, -1148910448, 1030237498, -1178616327, 1026212766);\n\tsum2 = W(0, -1127545645, 1018138398, -1144042592, 999025130)\n\t\t + W(1, -1139402988, -1150259805, 985356315, -1133933532)\n\t\t + W(2, 1009004191, -1136885460, -1141392422, 1032831862)\n\t\t + W(3, 1017820345, -1138954980, 1013413304, -1164078621)\n\t\t + W(4, 1015771798, -1151865619, -1107745249, -1097510643)\n\t\t + W(5, -1117369881, 1017078443, -1132039248, -1132951491)\n\t\t + W(6, -1131692274, -1125888003, -1091675886, -1072938398)\n\t\t + W(7, -1091916978, -1117354278, -1124163047, -1138824868)\n\t\t + W(8, 1014637794, 1023581282, 1057331451, 1076041086) + W(9, 1056314077, 1032772879, 1020965023, 1026258229)\n\t\t + W(10, 996126556, 1018938725, -1136255574, -1112160457)\n\t\t + W(11, -1150817344, -1138128772, 1018397555, 985080995);\n\tWS(1065410184, 989310727);\n\tsum1 = W(0, -1129262375, -1140125102, -1116437485, -1133156750)\n\t\t + W(1, 1013595422, -1140436482, 1001232640, -1120957855)\n\t\t + W(2, -1109321255, -1114916286, -1113105487, -1103994248)\n\t\t + W(3, -1113291025, -1135877737, 1027066925, 1020121135) + W(4, 1036945010, 1039766830, 1017194412, 1046741097)\n\t\t + W(5, 1059311888, -1110004779, -1131666807, -1115618446)\n\t\t + W(6, 1026154888, -1115626794, 1060001058, 1017259310)\n\t\t + W(7, -1103200016, 1018378495, -1131905035, -1127100975)\n\t\t + W(8, -1134197844, -1121887434, -1094555822, -1114897776)\n\t\t + W(9, 1023750749, -1113774366, -1124072268, -1116648163)\n\t\t + W(10, -1125355007, 1012320294, -1137406030, -1133486286)\n\t\t + W(11, -1124720479, -1115411390, 1004266540, -1123146591);\n\tsum2 = W(0, -1134742142, 994239369, -1134258278, -1126643555) + W(1, -1124787402, 1015413679, 991423945, 1010959842)\n\t\t + W(2, 1015903261, 1014594226, -1129761964, 1031995313) + W(3, 1009465920, 1021296491, -1131866907, 1022764367)\n\t\t + W(4, 1020154303, -1150882457, 1022217883, 1040302074)\n\t\t + W(5, 1049285742, 1029784509, -1135790753, -1122024941)\n\t\t + W(6, -1137672551, 1023023759, 1027518631, -1097618001)\n\t\t + W(7, -1098762324, -1122992412, -1126884057, -1118740892)\n\t\t + W(8, 1024853570, 1017377705, -1148789809, 1026258033) + W(9, -1132512970, 1015729459, -1130065044, 980872325)\n\t\t + W(10, 1005131169, -1125421078, 1001175413, -1138047636)\n\t\t + W(11, -1148246653, 1016986651, -1142203369, 992745521);\n\tWS(1051937311, 1019742014);\n\tsum1 =\n\t\tW(0, -1128733562, 997229903, 1023734487, -1116159949) + W(1, -1132293538, -1139661928, -1123545457, 1016780849)\n\t\t+ W(2, -1110586220, 1007594774, -1114376035, -1126695312)\n\t\t+ W(3, 1032525373, -1154941499, 1019369518, 1026460481) + W(4, 1044317379, -1115449474, 1058430122, -1131615423)\n\t\t+ W(5, 1028795565, 1043036192, -1111719346, -1122201669)\n\t\t+ W(6, 1034449865, 1040493967, -1106892452, -1096043495) + W(7, 1048571437, -1110832404, 1031893623, 1016066306)\n\t\t+ W(8, -1129053661, -1122019556, -1137597924, -1114653189)\n\t\t+ W(9, -1104742917, -1106286569, -1118024837, -1121789868)\n\t\t+ W(10, -1126315858, -1118602611, 1007433460, -1115826781)\n\t\t+ W(11, 1027349977, 1018237258, -1123671919, 1018711058);\n\tsum2 =\n\t\tW(0, 1008400273, 1016157529, -1144490357, -1138058389) + W(1, -1125392389, -1130565626, 965128306, -1135290574)\n\t\t+ W(2, -1127535498, -1127740478, 1041994790, 1049438349)\n\t\t+ W(3, -1105215135, -1113276412, -1135958083, -1114929610)\n\t\t+ W(4, -1110432262, -1101104373, -1088501039, 1056816205) + W(5, 1056199589, 1025802623, 1003347845, 1003318865)\n\t\t+ W(6, -1120718262, -1108362087, 1042410198, -1105949033)\n\t\t+ W(7, -1108549667, 1029274599, -1152613734, 1031964529)\n\t\t+ W(8, -1113670226, -1146032407, -1132649478, 1045816390)\n\t\t+ W(9, -1122823248, -1139374331, -1123972337, 1019133207)\n\t\t+ W(10, 1025653041, -1134925453, 1011207517, -1153231998)\n\t\t+ W(11, -1127906971, 1000306913, -1157554354, -1130500213);\n\tWS(-1117640696, 1034706864);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[555];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define temp_tex(pos) (float(texture(temp, pos).x))\nstatic const float2 temp_size = float2(GetInputSize().x * 1, GetInputSize().y * 2);\nstatic const float2 temp_pt = float2(1.0 / (temp_size.x), 1.0 / (temp_size.y));\n\n#define HOOKED_tex(pos) temp_tex(pos)\n#define HOOKED_size temp_size\n#define HOOKED_pt temp_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 555; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (2)) + 0.5, float(group_base.y + y - (3)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[12];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 6];\n\tsamples[1][3] = inp[local_pos + 7];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 19];\n\tsamples[3][1] = inp[local_pos + 20];\n\tsamples[3][2] = inp[local_pos + 21];\n\tsamples[3][3] = inp[local_pos + 22];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 32];\n\tsamples[4][3] = inp[local_pos + 33];\n\tsamples[5][0] = inp[local_pos + 34];\n\tsamples[5][1] = inp[local_pos + 35];\n\tsamples[5][2] = inp[local_pos + 36];\n\tsamples[5][3] = inp[local_pos + 37];\n\tsamples[6][0] = inp[local_pos + 45];\n\tsamples[6][1] = inp[local_pos + 46];\n\tsamples[6][2] = inp[local_pos + 47];\n\tsamples[6][3] = inp[local_pos + 48];\n\tsamples[7][0] = inp[local_pos + 49];\n\tsamples[7][1] = inp[local_pos + 50];\n\tsamples[7][2] = inp[local_pos + 51];\n\tsamples[7][3] = inp[local_pos + 52];\n\tsamples[8][0] = inp[local_pos + 60];\n\tsamples[8][1] = inp[local_pos + 61];\n\tsamples[8][2] = inp[local_pos + 62];\n\tsamples[8][3] = inp[local_pos + 63];\n\tsamples[9][0] = inp[local_pos + 64];\n\tsamples[9][1] = inp[local_pos + 65];\n\tsamples[9][2] = inp[local_pos + 66];\n\tsamples[9][3] = inp[local_pos + 67];\n\tsamples[10][0] = inp[local_pos + 75];\n\tsamples[10][1] = inp[local_pos + 76];\n\tsamples[10][2] = inp[local_pos + 77];\n\tsamples[10][3] = inp[local_pos + 78];\n\tsamples[11][0] = inp[local_pos + 79];\n\tsamples[11][1] = inp[local_pos + 80];\n\tsamples[11][2] = inp[local_pos + 81];\n\tsamples[11][3] = inp[local_pos + 82];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 33];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(2, 1);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1) + ivec2(1, 0), ret);\n}\n"
  },
  {
    "path": "src/Effects/NNEDI3/NNEDI3_nns64_win8x4.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: nnedi3.py --nns 64 --win 8x4 --use-compute-shader --use-magpie\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME NNEDI3_064_4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 1 * 2\n//!HEIGHT INPUT_HEIGHT * 2 * 1\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH * 1\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D temp;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_temp;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC NNEDI3 (double_y, nns64, win8x4)\n//!IN INPUT\n//!OUT temp\n//!BLOCK_SIZE 32, 16\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[8]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 8; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 32.0;\n\tfloat mstd1 = sumsq / 32.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 =\n\t\tW(0, 1040079017, -1115658697, -1107150591, -1119789534) + W(1, -1129953383, 1052077971, -1102425550, 1027055297)\n\t\t+ W(2, -1112255447, 1056937139, -1089460941, 1033358144)\n\t\t+ W(3, -1100320116, 1052646725, 1029401490, -1121552872)\n\t\t+ W(4, 1039284509, -1091236407, 1057992884, -1097729145) + W(5, 991372703, -1106109018, 1043570389, -1111268755)\n\t\t+ W(6, 1013856427, -1112818013, 1044897031, -1110301789)\n\t\t+ W(7, -1108390802, 1030287040, 1028923089, -1132036495);\n\tsum2 = W(0, -1108031914, -1118430023, 1012288055, 1013768747)\n\t\t + W(1, 1026461175, 1041449883, 1027150813, -1122068949) + W(2, 1032549274, 1072973866, 1049697467, 1026059807)\n\t\t + W(3, 1041814131, -1076980873, -1082819831, 1036691428)\n\t\t + W(4, 1017353224, -1111091488, 1041587393, -1152272302)\n\t\t + W(5, -1121140359, 1028730196, 1027133694, -1116481805)\n\t\t + W(6, -1132764107, -1121430441, -1122016279, 1025296987)\n\t\t + W(7, -1138465879, -1127880506, -1141547063, 1012449399);\n\tWS(-1098744132, 1034278418);\n\tsum1 = W(0, -1103397220, -1145635621, -1105248316, 1050544938)\n\t\t + W(1, -1124165708, 1041815523, -1120033612, 1021903208)\n\t\t + W(2, -1110800938, -1099348442, 1050332487, 1035939706) + W(3, 1026719460, -1092523700, 1047722705, 994253234)\n\t\t + W(4, 1022646298, -1100009602, 1037024150, 1017012340) + W(5, 1032193166, -1088889154, 1057456646, 992386946)\n\t\t + W(6, 1022064347, -1104673163, 1045722836, -1126668889)\n\t\t + W(7, -1136800346, -1098235958, 1051861685, 1007925993);\n\tsum2 = W(0, -1097631923, 1051137052, 1049915324, -1103655169)\n\t\t + W(1, 1038271179, -1138123466, -1101382095, 1030554459)\n\t\t + W(2, 1016052501, 1047950529, 1053016941, -1103587135) + W(3, 1038061501, 1066995446, 1044310058, 1039796029)\n\t\t + W(4, -1098093629, 1052164534, -1101624661, 1022295275)\n\t\t + W(5, 1036023945, -1086456688, -1097740488, 1002073396)\n\t\t + W(6, -1103222197, -1092315790, 1025704121, 1009745942)\n\t\t + W(7, 1049634734, -1088937960, -1095498431, 1037237655);\n\tWS(-1082862242, -1106529553);\n\tsum1 = W(0, -1130854575, 1035507577, -1111381151, -1121770975)\n\t\t + W(1, -1136558799, -1134799464, -1109420173, 1040932752)\n\t\t + W(2, -1106220300, 1050921813, -1090777253, 1042678624) + W(3, 1011297096, 1017516694, 1058584025, 1023914089)\n\t\t + W(4, 1032803517, -1083278305, 1053793791, -1114891124)\n\t\t + W(5, 1003802452, -1113237716, 1038764911, 1024022374)\n\t\t + W(6, -1130818358, -1166618304, 1011564912, 1003125716)\n\t\t + W(7, -1115833284, 1036440480, -1125528356, -1148371520);\n\tsum2 = W(0, -1113253112, -1114468103, 1046106511, 1029911106)\n\t\t + W(1, 1017383795, -1105748811, 1042779663, -1111927878)\n\t\t + W(2, -1098397046, 1042070822, 1049941293, -1106009556)\n\t\t + W(3, -1105653936, 1062131274, 1049624420, -1113543954)\n\t\t + W(4, 1043748521, -1088478625, -1093962905, -1110290200)\n\t\t + W(5, -1130700635, 1039489157, -1102421728, 1032413051)\n\t\t + W(6, 1040646747, -1112481937, -1120850913, 1032000907)\n\t\t + W(7, -1134989990, -1118262998, -1124158867, 1027657598);\n\tWS(1055738180, 1034492849);\n\tsum1 = W(0, -1130881323, -1111251428, 1042092597, 1006685651)\n\t\t + W(1, -1114926341, -1128721888, 1039888312, -1103919286)\n\t\t + W(2, 1041145701, -1099536939, 1055510938, -1104400342)\n\t\t + W(3, -1109424308, 1051914904, -1131357522, -1113433279)\n\t\t + W(4, -1112247108, 1058202118, -1089549409, 1022435899)\n\t\t + W(5, -1112831856, 1051860704, -1104754439, -1139575663)\n\t\t + W(6, -1114665081, 1026763985, -1109075065, -1129253153)\n\t\t + W(7, -1121239258, -1130346670, -1117425768, -1142807791);\n\tsum2 =\n\t\tW(0, -1110077216, -1118181126, 1049383148, -1110853226) + W(1, 1036549925, -1116107500, 1034915268, -1119533468)\n\t\t+ W(2, -1103858204, 1042025735, 1044994486, -1101175453) + W(3, 1011211476, 1056055130, 1058209450, -1113779586)\n\t\t+ W(4, 1008268344, -1090440399, -1098004228, -1109857174)\n\t\t+ W(5, 1023981444, -1117941654, -1099569204, 1034145803) + W(6, 1010863636, 1001166765, -1121873216, 1026441284)\n\t\t+ W(7, 1034090633, -1130298175, -1107211558, 1033292040);\n\tWS(1056018244, -1109435672);\n\tsum1 = W(0, 1028147653, -1121172806, -1156629272, 1029524274) + W(1, 1025593127, -1108190871, 1019648283, 998861994)\n\t\t + W(2, 1019179235, 1044333967, -1105021998, -1126875818)\n\t\t + W(3, 1042157337, -1098176216, -1084323638, 1048944704)\n\t\t + W(4, -1110312463, 1052400296, 1052575762, -1112766254)\n\t\t + W(5, 1019247612, 1041545807, -1144495302, 1027979993)\n\t\t + W(6, -1120006735, -1152440548, 960835398, -1115664295)\n\t\t + W(7, -1144225212, 1040728133, -1117757541, -1127435447);\n\tsum2 = W(0, -1133465842, 1020564842, -1109452473, 1020759546)\n\t\t + W(1, 1037565600, -1103457632, 1042355402, 1025892619)\n\t\t + W(2, -1114814180, 1043192653, -1103393926, 1033812672) + W(3, 1023511793, 1057142397, 1042803000, 1040091206)\n\t\t + W(4, 1028077461, -1101196001, -1093624788, -1104532905)\n\t\t + W(5, 1005396583, 1038394412, -1094252679, -1153222990)\n\t\t + W(6, 1022326514, -1113456189, 1041416796, -1130818626)\n\t\t + W(7, -1149118303, -1137100532, 1021621854, 1028700597);\n\tWS(1058353218, 1042996167);\n\tsum1 =\n\t\tW(0, 1024954343, -1094124879, 1052314513, 1009270680) + W(1, 1015847030, -1107919793, -1138612357, -1116609353)\n\t\t+ W(2, 1036476495, -1097421664, 1044445371, -1202266712)\n\t\t+ W(3, -1110665693, 1048862286, 1050687635, -1105910956)\n\t\t+ W(4, -1121159378, 1033331871, -1102818752, 1018868510) + W(5, -1108641009, 1049066134, 998963493, -1115498359)\n\t\t+ W(6, -1137738249, 1023600450, -1113493234, 1016588291)\n\t\t+ W(7, -1102251787, 1041347474, 1023627001, -1119202191);\n\tsum2 = W(0, -1126808420, -1120540574, -1098896413, 1039187917)\n\t\t + W(1, 980939457, -1110048722, -1075343834, -1110843188)\n\t\t + W(2, -1123796075, 1033167871, -1086151008, 1032482295) + W(3, 1037410136, -1106277561, 1075199384, 991431992)\n\t\t + W(4, 1002142140, -1166268225, 1058982643, -1123555130)\n\t\t + W(5, -1139817292, -1116671070, -1127002394, -1163241473)\n\t\t + W(6, -1134378480, -1143978200, 1028067074, 1021947375)\n\t\t + W(7, -1142652688, 1011961658, 1027681870, -1117918702);\n\tWS(1065448321, -1123448424);\n\tsum1 = W(0, 1033675765, 1042933049, -1113419593, -1107290229)\n\t\t + W(1, 1010310940, 1048779866, -1098481070, 1033876859)\n\t\t + W(2, -1135157253, 1053164479, -1085464413, 1028430645)\n\t\t + W(3, -1130617674, 1054681092, 1025088582, -1126554424)\n\t\t + W(4, 1045868403, -1088933089, 1052703622, -1113028565)\n\t\t + W(5, 1037821135, -1096402228, 1043193000, -1114258373)\n\t\t + W(6, 1029877230, -1112063319, 1039463880, -1131689691)\n\t\t + W(7, -1107423852, -1132569296, 1039088003, 992526257);\n\tsum2 = W(0, 992398551, -1118632904, -1109433050, -1143518596)\n\t\t + W(1, 1027463162, -1115592424, 998577524, -1122494561)\n\t\t + W(2, -1110914988, -1094541616, -1095126430, -1116426235)\n\t\t + W(3, -1119896935, 1058308065, 1059518579, -1103007923)\n\t\t + W(4, -1100289244, 1052134722, 1038527426, -1121464784)\n\t\t + W(5, 1024218964, -1139018826, -1109739820, -1115201103)\n\t\t + W(6, -1111923136, 1043392525, 1004586244, -1120049915)\n\t\t + W(7, 1036361104, -1114310803, 1020338285, -1128089075);\n\tWS(1050696068, -1101686596);\n\tsum1 = W(0, 1030829490, 1032239887, 1015204626, -1113406309) + W(1, 1025629886, 1039198082, 1033819234, 1030627629)\n\t\t + W(2, 1028506281, 1035777849, 1052890832, -1111973334)\n\t\t + W(3, 1044306231, -1094476563, -1083567844, 1049080890)\n\t\t + W(4, 1022456523, 1053256444, -1095460989, 1026744658) + W(5, 1033300499, -1108777674, 1028011096, 1009469122)\n\t\t + W(6, 1025382374, -1125496907, -1117978119, 1014700692)\n\t\t + W(7, -1126351518, 1013615278, 1022077689, -1117484787);\n\tsum2 =\n\t\tW(0, -1123705959, -1116235595, 1034058997, -1139597844) + W(1, 1033160533, 1028975273, -1094422871, -1122943830)\n\t\t+ W(2, 1021465594, -1105037500, -1106553103, -1103106284) + W(3, 1019539230, 1055127070, 1036912081, 1037858431)\n\t\t+ W(4, -1115261066, 1039390029, -1113630050, 1034945731) + W(5, 1030761443, -1104569658, 1034816057, 997585040)\n\t\t+ W(6, 1021971134, 1024962787, -1131788338, -1137214108) + W(7, -1122567677, 999405400, 1014360364, 1023175710);\n\tWS(1058623938, 1044469574);\n\tsum1 = W(0, 1045615020, -1108426137, -1135193336, 1044911680)\n\t\t + W(1, 1035147318, -1141312974, 1044306859, 1030580258)\n\t\t + W(2, 1047639223, -1105886038, -1122107414, 1043270872)\n\t\t + W(3, 1050348390, -1079944741, -1085342603, 1051720601)\n\t\t + W(4, 1030161626, 1039515483, -1100470855, 1041363874) + W(5, 1044899106, 1021302290, -1110191310, 1041545713)\n\t\t + W(6, -1132009366, -1167333042, -1180200419, 1040848727)\n\t\t + W(7, 1044251461, 991624716, -1100960996, 1042676794);\n\tsum2 = W(0, -1126998679, -1097249916, 1048536708, -1118913729)\n\t\t + W(1, -1112584470, -1101780852, 1037003529, -1122142287)\n\t\t + W(2, -1125720699, -1124055793, 1040132893, 1008038822)\n\t\t + W(3, 1026650453, 1050619160, 1058508674, -1117660887)\n\t\t + W(4, -1098785634, 1044368398, 1037637019, -1121056345)\n\t\t + W(5, 1035354845, -1115949975, -1106591466, 1006096779)\n\t\t + W(6, -1103280207, 1036370417, -1109803757, -1116815483)\n\t\t + W(7, -1117822839, 1013784870, -1104576316, -1119752481);\n\tWS(-1092650820, -1093598320);\n\tsum1 = W(0, -1126483198, -1111185837, 1032567139, 1028684103)\n\t\t + W(1, -1136033646, -1107026560, -1113511425, 1034982933)\n\t\t + W(2, 1019177644, -1096033968, 1059010394, 1025024233)\n\t\t + W(3, -1119240794, -1101350837, 1042563567, -1118967697)\n\t\t + W(4, -1095523617, 1057301262, -1131092420, -1118984463)\n\t\t + W(5, -1108863241, 1042409572, -1108714423, 1023629806)\n\t\t + W(6, -1113123137, 1040959081, -1114101506, -1128061252)\n\t\t + W(7, -1126435736, 1035081684, -1106962654, -1142697342);\n\tsum2 =\n\t\tW(0, -1118904411, -1134435633, -1102280300, -1150017862)\n\t\t+ W(1, -1158272012, -1107189637, 992574886, -1122133752)\n\t\t+ W(2, 1013234849, -1120249847, -1083559741, -1146867651)\n\t\t+ W(3, 1030464194, 1057018316, 1062197029, -1097179586) + W(4, -1106482941, 1048792270, 1040811198, -1115216614)\n\t\t+ W(5, 1025489390, 1024832618, -1114392001, 1021081809) + W(6, -1129648553, 1031754422, 1031998303, -1112304821)\n\t\t+ W(7, 1028128070, -1125347555, 1029475610, 993658022);\n\tWS(1058173058, 1066808129);\n\tsum1 =\n\t\tW(0, -1107348220, 1035236882, 1041707116, -1121094224) + W(1, -1099127505, 1036577094, 1043659283, -1105652573)\n\t\t+ W(2, -1103913530, 1044208414, 1046852514, -1107481241)\n\t\t+ W(3, -1113478482, 1029276252, 1039741986, -1121409754) + W(4, 1040539139, -1097605967, 1044710619, 1032545388)\n\t\t+ W(5, -1113016318, -1100723463, 1043551606, -1115290924)\n\t\t+ W(6, -1120477164, 1029619500, -1133641268, 1013015214) + W(7, 1000206250, -1122925746, 994694705, 950366748);\n\tsum2 =\n\t\tW(0, -1094008764, 1034130054, 1031813868, 1011760553) + W(1, -1105723160, -1120175931, 1042930394, -1124103013)\n\t\t+ W(2, -1087139249, 1064201383, -1110465854, -1131636845)\n\t\t+ W(3, 1052425931, 1002356625, -1098172076, 1006833373) + W(4, 1056772124, -1089869944, 1043061462, 1007319139)\n\t\t+ W(5, 1034445536, -1114835724, -1102352886, 1014923704) + W(6, 1012087213, -1123264660, 1040830367, 1016549099)\n\t\t+ W(7, 1037095176, -1129286431, -1111397998, 993051546);\n\tWS(1061928770, 1027279769);\n\tsum1 =\n\t\tW(0, 1034406912, -1100123699, 1029564087, 1033006716) + W(1, -1113862823, -1162686055, -1109708970, -1128579510)\n\t\t+ W(2, 1039933724, -1096018034, 1050604450, 1007368299) + W(3, -1111710246, 1056786929, 1037263862, -1109765633)\n\t\t+ W(4, -1111349982, 1056534441, -1098017894, -1113416432)\n\t\t+ W(5, -1109997378, 1044907121, 1038664521, -1101798872)\n\t\t+ W(6, -1113344954, 1022437288, -1116167797, -1105438789)\n\t\t+ W(7, -1114279935, 1031029722, 1027389387, -1113862289);\n\tsum2 =\n\t\tW(0, 1026006751, -1115270559, 1024783342, -1130316822) + W(1, -1108403600, 1031363022, 1033798448, -1139293944)\n\t\t+ W(2, 1035073774, -1104904057, 1037041630, 1025961213) + W(3, -1122004937, 1031769509, 1039898935, 1021529214)\n\t\t+ W(4, 1035952663, -1106336513, 1057393141, -1112547455) + W(5, 1015050843, 1027760004, 1027825620, -1096601581)\n\t\t+ W(6, -1124438030, 1019789656, -1121305243, -1105185563)\n\t\t+ W(7, -1133483016, -1118390529, -1128829234, -1106336479);\n\tWS(1053752708, 1043937257);\n\tsum1 = W(0, -1114168512, -1105170221, 1031197758, -1109039567)\n\t\t + W(1, -1112521242, -1098204331, -1104934543, -1113606305)\n\t\t + W(2, -1097902456, 1046102006, 1042705158, -1098767200)\n\t\t + W(3, -1095288434, 1066642253, 1070561411, -1089903115)\n\t\t + W(4, -1094410051, 1054367941, 1038022813, -1100846418)\n\t\t + W(5, -1114520925, -1100810554, 1032266099, -1108028099)\n\t\t + W(6, -1115668990, -1121904763, -1114135854, -1115062077)\n\t\t + W(7, -1105295129, 1031167873, -1123380722, -1118408200);\n\tsum2 = W(0, -1113064749, -1090786559, 1038982572, -1136678198)\n\t\t + W(1, -1144787532, -1094418907, -1102980167, -1129681067)\n\t\t + W(2, -1115681675, 1009808406, 1041806798, 1023762114) + W(3, 1041111385, 1053253351, 1054413523, 1035936399)\n\t\t + W(4, -1130408019, 1015714915, 1024043560, -1114747797)\n\t\t + W(5, -1136936214, 1020895003, -1114777947, 1001107148)\n\t\t + W(6, 1022660811, -1117683238, 1021536435, -1129865467)\n\t\t + W(7, -1121651306, 1028089270, -1123371786, 1019986163);\n\tWS(-1077899937, -1095640595);\n\tsum1 =\n\t\tW(0, 1038010313, 1032811586, -1097475626, 1033727032) + W(1, 1026389718, 1036208246, -1123908524, -1117534996)\n\t\t+ W(2, 1040451742, -1100196466, 1051006893, -1116405267)\n\t\t+ W(3, 1038149954, -1112596654, -1096170677, 1043001855) + W(4, 1012098034, 1057575303, -1089360567, 1035677341)\n\t\t+ W(5, 1041468735, 1025151035, -1102384270, -1122502968) + W(6, 1036152598, -1108998502, -1117118702, 959089718)\n\t\t+ W(7, 1035936827, -1117388883, 1019229383, -1122221082);\n\tsum2 = W(0, 1014408115, 1037203464, -1112987386, 1006518986) + W(1, 1031626038, -1111295182, 1033188726, 998532726)\n\t\t + W(2, 1042237958, -1111204470, 1033012571, 1002908510) + W(3, 1024306585, 1046645930, 1040504174, -1142339005)\n\t\t + W(4, 1005347958, 1036175171, 1022488131, 1028667874)\n\t\t + W(5, -1108949069, -1102667672, -1113110436, 1028194944)\n\t\t + W(6, -1129272561, -1105300490, 1012028387, 991631364)\n\t\t + W(7, -1155665460, -1098212068, 1026136762, -1118275484);\n\tWS(1052188868, -1105025774);\n\tsum1 = W(0, 1026006805, 1053332527, -1093124457, 1016895952)\n\t\t + W(1, -1127133881, 1046329385, -1102124985, 1015047702)\n\t\t + W(2, -1111238899, 1054121990, -1093232644, 1031180874)\n\t\t + W(3, 1039605133, 1041936861, -1108714798, -1123947762)\n\t\t + W(4, 1036489378, -1098161716, 1047964177, -1116894641)\n\t\t + W(5, 1027868467, -1100202284, 1042303686, -1100188956)\n\t\t + W(6, 1028341284, -1114580002, 1042593657, -1114267170)\n\t\t + W(7, 1040022103, -1112308133, 1033044781, -1120167377);\n\tsum2 = W(0, -1098242390, 1038124206, 1035251585, -1146833441)\n\t\t + W(1, -1090155459, -1111850856, -1110800852, 1015159009)\n\t\t + W(2, -1080159437, -1111691725, 1033462452, -1114532383)\n\t\t + W(3, -1083172772, 1045262621, -1116129960, 1037947101)\n\t\t + W(4, 1043663143, -1107342132, -1117401930, -1115149205)\n\t\t + W(5, 1066420271, -1115094311, 1036826747, -1118954060)\n\t\t + W(6, 1065821018, 1045364599, -1121811075, -1159263732)\n\t\t + W(7, 1052081121, 1039539139, 1031476522, -1144829650);\n\tWS(-1102870152, 1022622513);\n\tsum1 =\n\t\tW(0, 1055644087, -1105950504, -1114669622, -1099940547) + W(1, 1035394969, -1108831748, 1043185370, 1029691760)\n\t\t+ W(2, 1045649819, 1041190721, -1098060649, -1105006556) + W(3, 1045987408, 1039545500, -1093030704, 1034170571)\n\t\t+ W(4, 1030573816, 1049616144, -1093912525, 1028754581) + W(5, 1031111560, 1056957379, -1084377448, 1032315050)\n\t\t+ W(6, 1035095156, 1047436506, -1093512673, 1008186016) + W(7, 1041054212, 1055423038, -1094643096, 1002093997);\n\tsum2 = W(0, -1084145430, 1070336926, 1055168354, -1086613448)\n\t\t + W(1, 1037387540, -1098862516, -1095516697, 1056626754)\n\t\t + W(2, -1091365810, 1050914492, 1050568943, -1097405209)\n\t\t + W(3, -1096604175, 1068317532, 1069441477, -1099937369)\n\t\t + W(4, -1095647742, 1054262144, -1090345251, -1106692290)\n\t\t + W(5, 1043123500, -1083131387, -1085743049, 1045945631)\n\t\t + W(6, -1106696806, 1046449081, 1048225937, -1106594556)\n\t\t + W(7, 1053814194, -1081281727, -1086819148, 1058187197);\n\tWS(-1069426976, -1120848841);\n\tsum1 = W(0, 1036938172, 1037072255, -1103659451, 1032159990) + W(1, 1035259664, 997868135, 1049019033, 1025792718)\n\t\t + W(2, 1047028417, 1031706371, -1095105906, 1020529436)\n\t\t + W(3, 1052190352, -1092031243, -1081236347, 1049696791)\n\t\t + W(4, 1041456894, 1045414333, -1090672009, 1038916826) + W(5, 1039915051, 1026900661, 1032303833, 1035011641)\n\t\t + W(6, 1015525967, -1119324359, 1008361890, 1039253091)\n\t\t + W(7, 1036563112, 1015048091, -1146656500, -1145253028);\n\tsum2 = W(0, -1131675185, 1029191442, -1114450600, 1024984252)\n\t\t + W(1, -1130807793, -1132163681, 1018117017, -1115031522)\n\t\t + W(2, -1137547874, -1115933340, 1033829647, 1037592454)\n\t\t + W(3, -1119117212, -1086087178, 1063181450, 1006729954)\n\t\t + W(4, -1138868050, -1112002886, 1026390676, 1017409241)\n\t\t + W(5, -1139313154, 1014175682, -1143924164, -1134939410)\n\t\t + W(6, -1127085641, 1023290113, -1138352802, -1125048401)\n\t\t + W(7, -1144490820, -1135148482, 1007342770, 974288160);\n\tWS(-1092511940, 1056045775);\n\tsum1 = W(0, 1034351639, -1122413709, 1034842253, -1109413949)\n\t\t + W(1, 1036571263, -1107220477, 1031880235, -1128037178)\n\t\t + W(2, 1026078569, -1123595634, 1048156900, -1106487287)\n\t\t + W(3, 1044122211, -1099810889, -1106066347, 1038991202)\n\t\t + W(4, -1145831724, 1052039823, -1096815763, 1016305349)\n\t\t + W(5, -1113387827, 1050308552, -1095462256, 1039930976)\n\t\t + W(6, 1018446892, 1032192235, -1104039774, -1145490603)\n\t\t + W(7, -1119385695, 1047960215, -1105858435, -1115254417);\n\tsum2 = W(0, -1129634341, 1017418680, 1033383321, -1086264457)\n\t\t + W(1, -1125984965, -1145267460, -1108053053, -1078809375)\n\t\t + W(2, -1131211232, 1019434782, 1035592777, -1073693037)\n\t\t + W(3, 1032304695, -1112808134, 1017461836, -1098879629)\n\t\t + W(4, -1126835561, 1027589163, -1125819067, 1071963841)\n\t\t + W(5, -1135310730, -1164412329, 1048432434, 1073307463)\n\t\t + W(6, 1030376830, 1012340975, -1132396034, 1053688201)\n\t\t + W(7, -1115706548, 1024240430, 1037084632, -1110470100);\n\tWS(1042257800, -1115776325);\n\tsum1 =\n\t\tW(0, -1146926115, -1107281138, 1038400362, 1010013391) + W(1, 1032352980, -1098526814, 1045994468, -1117084567)\n\t\t+ W(2, -1109330569, 1043068219, -1111135982, 1043908518)\n\t\t+ W(3, -1114314051, -1109412128, -1144690495, -1120663934)\n\t\t+ W(4, 1039411448, -1097266597, 1057956169, -1098521248)\n\t\t+ W(5, -1111850704, 1039093055, -1128243973, -1122589083)\n\t\t+ W(6, 1040829028, -1100632132, 1048043508, 1029880783) + W(7, -1123393177, -1104810789, 1025450855, 997333453);\n\tsum2 = W(0, 1029402915, -1139977433, -1102627522, 1041328458)\n\t\t + W(1, -1131137316, -1118253197, 1040550677, -1112092070)\n\t\t + W(2, 1031911869, -1122896144, -1088615745, 1058291503)\n\t\t + W(3, 1023173531, -1122404168, 1061434285, -1087193418)\n\t\t + W(4, 1023792141, -1098422336, 1075510495, -1072676007)\n\t\t + W(5, -1123803784, 1037623928, 1067804318, -1079538943)\n\t\t + W(6, 1014267385, -1106514445, 1045458757, -1106625048)\n\t\t + W(7, -1128776324, 1036548666, 1035151624, -1107997040);\n\tWS(1062572194, -1113128476);\n\tsum1 = W(0, 1025054504, -1105909778, 1035303099, 1030405814)\n\t\t + W(1, 1032745069, -1098454710, 1048922046, -1107189334)\n\t\t + W(2, -1111717923, 1040855323, -1111940687, 1047137430)\n\t\t + W(3, -1115121012, -1102647392, 1030883818, -1120733568)\n\t\t + W(4, 1039928305, -1094658254, 1056642050, -1102007432)\n\t\t + W(5, -1108655721, 1048800872, -1114397119, -1121522301)\n\t\t + W(6, 1042636501, -1098634802, 1045405821, 1030940241)\n\t\t + W(7, -1121873307, -1107065062, 1028123977, -1129454014);\n\tsum2 = W(0, -1114559261, -1138228901, 1049277284, -1102431407)\n\t\t + W(1, 1015935669, 1029828517, -1107208114, 1036930870)\n\t\t + W(2, -1119968612, -1110320033, 1062476231, -1086736101)\n\t\t + W(3, 1034980574, -1095660939, -1090290563, 1061616421)\n\t\t + W(4, -1134322843, 1043622789, -1071408041, 1075586093)\n\t\t + W(5, 1031387619, -1103434641, -1079628774, 1068626110)\n\t\t + W(6, -1130912561, 1043842027, -1100585862, 1036267766)\n\t\t + W(7, 1028413753, -1104010102, -1110973692, 1043722127);\n\tWS(1060774594, 1031131703);\n\tsum1 = W(0, -1107942447, 1045023814, 1022102280, -1109726834)\n\t\t + W(1, -1105426838, 1048858052, 1019498368, -1115599332)\n\t\t + W(2, -1102134060, 1057375412, -1089780107, 1024119623)\n\t\t + W(3, -1108928460, 1053310638, 1054202179, -1117349999)\n\t\t + W(4, 1030069408, -1086363546, 1056436400, -1105657043)\n\t\t + W(5, -1109912496, -1121814959, 1045750878, -1112636534)\n\t\t + W(6, -1111247296, -1121700033, 1017717699, 1020787328)\n\t\t + W(7, 1016389396, -1112979299, -1115080444, 1034439495);\n\tsum2 =\n\t\tW(0, 1036474850, -1115841609, -1115206474, 1027456791) + W(1, -1117613837, 1015990489, -1121605429, -1155010952)\n\t\t+ W(2, 993333704, -1114813616, 1041891165, -1115442992) + W(3, -1124280889, 1046600726, 1051997378, -1145891812)\n\t\t+ W(4, -1120272689, -1127188969, -1122067781, -1135549634)\n\t\t+ W(5, -1147158916, -1101686418, 1035140408, 1009536026)\n\t\t+ W(6, -1136721538, -1106242516, 1020051521, 1019245009)\n\t\t+ W(7, 1006917274, -1111325506, -1113122752, 1017045509);\n\tWS(1060194466, -1100017114);\n\tsum1 = W(0, -1107280066, -1105747811, 1059466063, -1103466926)\n\t\t + W(1, -1110455654, -1101985628, 1043733237, -1106475814)\n\t\t + W(2, -1108454907, 1018718942, 1057500851, -1106517942)\n\t\t + W(3, -1102634810, -1106901713, 1036011765, -1094721336)\n\t\t + W(4, -1103570769, 1046100821, 1016328357, -1110005824)\n\t\t + W(5, -1103041901, 1055521256, -1113318903, -1108487663)\n\t\t + W(6, -1108837738, 1047438565, -1139455183, -1116101330)\n\t\t + W(7, -1103753711, 1059153514, -1111475141, -1118902112);\n\tsum2 = W(0, -1134258178, -1116481221, 1032034504, -1123729210)\n\t\t + W(1, 1016306377, -1123533287, -1130975497, -1124034546)\n\t\t + W(2, -1119701101, -1150894505, -1129842733, -1119840142)\n\t\t + W(3, -1121134035, 1050682292, 1050657130, -1118895679)\n\t\t + W(4, -1110905440, 1003934853, 1032136922, -1115758498)\n\t\t + W(5, -1123898542, 1016401385, -1114630639, -1135589646)\n\t\t + W(6, -1120388479, 1010383122, -1135861370, -1140270714)\n\t\t + W(7, -1131815221, 1025651043, -1115813895, -1126135829);\n\tWS(-1094780356, -1096037829);\n\tsum1 = W(0, -1094564683, 1051641704, 1042321778, -1109647669) + W(1, 998269945, 1048993133, -1097112145, 1034946343)\n\t\t + W(2, -1106439374, -1105882161, 1049078036, -1120792141)\n\t\t + W(3, -1099790159, 1021385644, 1039341071, -1101585581)\n\t\t + W(4, 1039955171, -1110801281, 1035258371, 1020526630)\n\t\t + W(5, -1116696534, -1093602407, 1056382370, -1124429730)\n\t\t + W(6, 1026955814, 1040928722, 1035779188, -1106396689)\n\t\t + W(7, -1132274079, -1094848202, 1053064740, 1027970323);\n\tsum2 =\n\t\tW(0, -1137596463, 1029577680, 1038439017, -1113448033) + W(1, -1129205035, -1107142480, 1015352075, 1012914617)\n\t\t+ W(2, -1126343315, 1047351132, 1070713407, -1114069586) + W(3, 1039861741, -1098569120, 1073186805, 1046610276)\n\t\t+ W(4, -1126312459, 1038608299, 1038004689, -1144677526)\n\t\t+ W(5, -1123052878, -1116615219, -1073950732, 1007385420)\n\t\t+ W(6, 996868828, -1112533224, -1077903771, -1108941862)\n\t\t+ W(7, -1125851727, -1107291575, -1107100148, 1037961064);\n\tWS(1053603780, -1115461008);\n\tsum1 =\n\t\tW(0, -1137418943, -1097293942, 1049585228, 1014991997) + W(1, 1030817204, -1095449155, 1046317951, -1134044169)\n\t\t+ W(2, 1016256157, -1092155167, 1056038503, -1118818050) + W(3, 1021933093, 1049349309, 1058232189, -1129232467)\n\t\t+ W(4, -1107174285, -1125654285, -1109114845, 1020919504)\n\t\t+ W(5, 1024187323, -1107838901, -1104780729, 1042320778)\n\t\t+ W(6, -1121722108, -1112035518, -1104946775, 1033110781)\n\t\t+ W(7, 1027865701, -1115980033, -1096840466, 1040979266);\n\tsum2 = W(0, 1033231462, -1115237141, -1111323807, 1022510111)\n\t\t + W(1, -1122607696, 1031925962, -1115623012, 1016053183)\n\t\t + W(2, -1126070520, 1042960949, -1119706606, 999155791) + W(3, 1021774826, 1053325526, 1049744257, -1130112624)\n\t\t + W(4, -1120788802, -1107200469, 1005054791, -1116359926)\n\t\t + W(5, 1023918789, -1112013861, 1026671690, -1115047971)\n\t\t + W(6, -1127228708, -1114604471, -1107279270, -1133439199)\n\t\t + W(7, -1155086158, -1120863174, -1119270266, -1114777589);\n\tWS(1049944452, -1118177299);\n\tsum1 =\n\t\tW(0, 1004954534, -1113835168, -1131743895, 1036431958) + W(1, 1034605113, -1117712807, 1044152226, -1113909672)\n\t\t+ W(2, 1042179871, 1049772083, -1105992217, 1034469319) + W(3, 1046072096, -1089565448, -1102704504, 1047091406)\n\t\t+ W(4, -1119832136, -1087875066, 1051885673, -1117867957)\n\t\t+ W(5, -1115172412, 1028249398, 1023284205, 1037431354) + W(6, 1021914321, -1115173764, 1032417701, -1128742159)\n\t\t+ W(7, -1125265763, 1016032028, 1023720959, 1027934165);\n\tsum2 =\n\t\tW(0, -1122048832, 1053033259, -1121809206, -1100778293) + W(1, -1102028824, 1033866732, 1014156522, 1033801710)\n\t\t+ W(2, -1098388207, -1083784972, 1055740053, -1112352078)\n\t\t+ W(3, 1042109429, 1035235216, -1104400409, 1046653262) + W(4, 1037898289, 1056376564, -1126110057, -1111071353)\n\t\t+ W(5, 1035691269, -1103367787, -1120368299, 1025902829) + W(6, -1120157845, 1034674212, 1015248281, 997672170)\n\t\t+ W(7, 1026959129, -1128193065, 984939091, -1153716682);\n\tWS(-1165444096, -1119710264);\n\tsum1 = W(0, 1042994118, 1051115175, -1098028621, -1108071955) + W(1, 1034244741, 1042802936, 1040688824, 1032455940)\n\t\t + W(2, 1037778378, 1051394930, -1088773549, -1120702728)\n\t\t + W(3, 1041081798, -1114386041, -1087521946, 1029133552)\n\t\t + W(4, 1016348739, 1044466585, -1089153334, 1045508004)\n\t\t + W(5, 1044760836, 1039392600, -1102706330, -1117660781) + W(6, -1126699940, 1042064672, 987979863, 1043978432)\n\t\t + W(7, 1049969601, -1111502020, -1112154588, -1112358151);\n\tsum2 =\n\t\tW(0, -1113048377, 1060341068, 1067872749, -1107478445) + W(1, -1169925094, 1041247352, 1057359743, -1121919154)\n\t\t+ W(2, 1033233769, 999982909, -1089189226, -1112420946) + W(3, 1022227231, -1081289783, -1075624869, 1030919570)\n\t\t+ W(4, 973479782, -1090689511, -1088323315, 1049895882) + W(5, 1025958326, 1036288861, 1048635178, -1108655271)\n\t\t+ W(6, -1175748301, 1044034366, 1052769876, 1042449401)\n\t\t+ W(7, -1108998850, 1055733822, 1060416891, -1098757157);\n\tWS(-1077066897, -1138646112);\n\tsum1 =\n\t\tW(0, 1024267775, -1092381223, 1053014632, 1025453154) + W(1, 1009759453, -1106693383, 1027242622, -1118474373)\n\t\t+ W(2, 1034803609, -1096180043, 1051220983, -1149202983)\n\t\t+ W(3, -1105412061, 1042083852, 1053447283, -1101608091)\n\t\t+ W(4, -1118414542, 1031147625, -1105039519, 1010847661)\n\t\t+ W(5, -1104989395, 1050244398, 1023828386, -1113932053) + W(6, 1000523125, 1024065726, -1110843104, 1023831870)\n\t\t+ W(7, -1099033634, 1045342865, 1028746421, -1113130950);\n\tsum2 = W(0, 1013870164, 1032969077, 1050672871, -1105627059) + W(1, -1133465912, 1032956180, 1076869477, 1037977967)\n\t\t + W(2, 1030888661, -1118666398, 1063553933, 1017901782)\n\t\t + W(3, -1118337904, -1095979039, -1069322680, 1026329625)\n\t\t + W(4, 1030672570, -1102611716, -1088200357, -1169512700)\n\t\t + W(5, -1156287199, 1041525268, 1026168517, -1153801247)\n\t\t + W(6, 1014316520, -1121602320, -1129519600, -1126632288)\n\t\t + W(7, -1145191680, -1129518532, -1120095414, 1031405165);\n\tWS(1059038658, 1028594353);\n\tsum1 =\n\t\tW(0, 1030613999, 1027001704, -1089493909, 1046010101) + W(1, -1132336275, 1035531624, -1094328658, 1026431736)\n\t\t+ W(2, -1117493948, 1032402678, -1106243079, 1043051950) + W(3, 1038489844, -1152158733, 1052296065, 1044337864)\n\t\t+ W(4, 1028206993, -1098315241, 1042911580, 1028671678) + W(5, 1044643916, -1088517514, 1049587060, 1032918142)\n\t\t+ W(6, 1007880004, -1103996748, 1035409673, -1137633217)\n\t\t+ W(7, 1043840791, -1091506711, 1044000434, 1036291743);\n\tsum2 = W(0, -1118922878, -1105269646, 1050974192, -1110275215)\n\t\t + W(1, 998383694, -1109062791, 1002191246, -1111322692)\n\t\t + W(2, -1117830208, 1013977255, 1046707356, -1114811922)\n\t\t + W(3, -1123342062, 1052555170, 1051646415, -1114439732)\n\t\t + W(4, -1109116635, 1041098100, 1036678597, -1108145020)\n\t\t + W(5, -1124252768, 1040874722, -1098775079, -1121186646)\n\t\t + W(6, -1104593856, 1030669290, -1122565606, -1115485971)\n\t\t + W(7, 1026377322, 1040986964, -1098750401, -1115223671);\n\tWS(-1089038754, 1070610314);\n\tsum1 =\n\t\tW(0, 1006818038, -1112569734, -1110914124, 1038135388) + W(1, -1126323612, -1099849389, 1036085850, 1043645143)\n\t\t+ W(2, 1015379312, -1090696922, 1053776546, 1040122382)\n\t\t+ W(3, -1107760774, -1101892281, 1045400523, -1118717763)\n\t\t+ W(4, -1110158738, 1028620400, 1040930437, 1002760462) + W(5, -1104391397, 1047988033, -1132043583, 1016954112)\n\t\t+ W(6, -1114553627, 1043536901, -1119469430, 974497054)\n\t\t+ W(7, -1113068735, 1039930893, -1114659286, -1139206280);\n\tsum2 = W(0, -1120363159, 1029972206, -1135126990, -1111466112)\n\t\t + W(1, -1119340063, 1020623843, 1026762268, -1099605665)\n\t\t + W(2, -1119078724, -1137841818, 1064611900, -1102195223)\n\t\t + W(3, 1035843986, -1094446255, 1017486399, 1042926586) + W(4, 1035175754, 1049035968, -1094749382, 1014516782)\n\t\t + W(5, -1106992039, -1128810267, 1039608352, -1112006203)\n\t\t + W(6, -1128507307, -1123633215, -1194223384, -1136077530)\n\t\t + W(7, -1129270833, -1123131987, -1197948696, -1129209333);\n\tWS(-1120775200, -1094115106);\n\tsum1 = W(0, -1117113151, -1112921839, 1046145098, -1107062579)\n\t\t + W(1, -1133090109, -1099947345, -1097096777, -1151313622)\n\t\t + W(2, -1096583070, 1050818928, 1048882552, -1100319675)\n\t\t + W(3, -1098081804, 1057531117, 1067142180, -1094480203)\n\t\t + W(4, -1092969217, 1051254629, 1054137781, -1100195749)\n\t\t + W(5, -1119648950, -1098660371, 1035250696, -1111825641)\n\t\t + W(6, -1113650835, 926574177, -1115652196, -1118408614)\n\t\t + W(7, -1105675228, 1035449878, 1024424221, -1114839546);\n\tsum2 = W(0, -1122846232, 1031116535, -1118531646, 1030028661)\n\t\t + W(1, 1002183233, -1113707943, 1034244245, -1116699784) + W(2, -1129631292, 988543074, 1027624889, 1039671963)\n\t\t + W(3, -1112395279, -1080457005, 1064104967, 1037992478)\n\t\t + W(4, 1009610216, -1097715519, 1052372051, -1115290878) + W(5, 1001287537, 1037716560, 1011412016, 1016046512)\n\t\t + W(6, -1122731504, -1112112395, 1031591085, -1122589730)\n\t\t + W(7, -1139829356, 1031806339, -1128697528, 1022404309);\n\tWS(-1083041826, -1088446577);\n\tsum1 =\n\t\tW(0, -1112868382, -1138041180, 1041478665, -1123809603) + W(1, -1139686881, 998832115, 1026886463, 1007627162)\n\t\t+ W(2, 1037998481, -1108164766, 1018740405, -1137074328)\n\t\t+ W(3, 1035817611, -1106005004, -1092605991, 1036557383) + W(4, 1028314191, 1054394898, -1096954228, 1043199331)\n\t\t+ W(5, -1112414119, 1042585939, -1105339656, 1016960213) + W(6, -1123391616, 1037009680, -1122534560, 949272012)\n\t\t+ W(7, -1152205450, 1027830053, -1128384493, -1161448845);\n\tsum2 = W(0, 1036010005, -1080772886, -1110295637, -1113551367)\n\t\t + W(1, -1112615912, -1080108640, 1033469827, -1118689741)\n\t\t + W(2, -1108103320, 1042883784, 991295446, -1123719569) + W(3, 1026422893, 1067023817, -1106557392, 1039881895)\n\t\t + W(4, 1043952518, 1065911618, 1015020021, 1028046949) + W(5, -1112407780, 1043418298, -1113416335, 986544491)\n\t\t + W(6, 1025610945, -1121396391, -1118133995, 1028536389)\n\t\t + W(7, -1142574731, 1019038275, 1027619053, -1114551687);\n\tWS(1059656866, 1032254503);\n\tsum1 = W(0, 1051132033, -1087438145, 1040121644, 1047684766) + W(1, 1032901415, -1096624519, 1045530925, 1031967406)\n\t\t + W(2, 1050001035, -1093591378, 1040228252, 1044069767)\n\t\t + W(3, 1051046262, -1092342973, -1096329486, 1050005760)\n\t\t + W(4, 1024623477, 1024747921, -1100479077, 1045316401) + W(5, 1041030197, 1042870865, -1092498854, 1048633756)\n\t\t + W(6, -1129401004, -1112612011, -1100524478, 1041789317)\n\t\t + W(7, 1040932616, 1037509038, -1089145703, 1050363772);\n\tsum2 = W(0, 1033723840, 1054927280, -1094930774, -1110893464)\n\t\t + W(1, -1120765513, 1004192518, 1009606707, -1117945313)\n\t\t + W(2, -1151198348, 1032813206, 1018976553, -1111742424)\n\t\t + W(3, -1121736497, -1097617496, -1096835022, -1121652889)\n\t\t + W(4, 1020727265, 994767756, -1114598300, -1144829382) + W(5, -1111733852, 1024454465, 1049726638, 1030389401)\n\t\t + W(6, 1010605379, -1124374145, 1040837102, -1120942585)\n\t\t + W(7, -1112033268, -1107458988, 1057385902, 1035752486);\n\tWS(-1076352721, 1061176787);\n\tsum1 = W(0, -1115567878, -1095051668, 1047858891, 1038434246)\n\t\t + W(1, 1039493528, -1094852257, 1040618482, -1116442287)\n\t\t + W(2, 1037423542, -1086623624, 1057001770, -1114755255) + W(3, 1022350014, 1044286862, 1036068672, 1022609452)\n\t\t + W(4, -1114677168, 1057477914, -1086915318, 1037805114)\n\t\t + W(5, -1123591576, 1049595083, -1095930750, 1044588197)\n\t\t + W(6, -1143365955, 1036655988, -1108386213, 1031697064)\n\t\t + W(7, -1114839417, 1044280124, 1029598047, -1119274549);\n\tsum2 = W(0, 1018488840, -1104206436, -1111729053, 1004158510)\n\t\t + W(1, -1109735653, 1012246375, -1117505825, -1122544930)\n\t\t + W(2, -1113462230, -1114523900, 1042992721, -1111468709)\n\t\t + W(3, -1112517262, 1056346033, 1051780099, -1133433375)\n\t\t + W(4, -1108529674, 1029007760, 1042618199, -1114816198)\n\t\t + W(5, -1112282852, -1106712811, 1035563022, -1136000711)\n\t\t + W(6, 1002563934, -1113168793, 1024458488, -1122022613)\n\t\t + W(7, 1011039855, -1115338003, -1112797570, 1037211560);\n\tWS(1037340944, -1121222187);\n\tsum1 = W(0, -1116495838, 1040689218, 1036502651, -1106495021)\n\t\t + W(1, -1118176747, -1110298712, -1106426924, -1119752153)\n\t\t + W(2, -1096308023, 1052341602, 1044624667, -1097659059)\n\t\t + W(3, -1094205341, 1064260668, 1068943083, -1089978464)\n\t\t + W(4, -1095502171, 1052009702, 1045175252, -1099820424)\n\t\t + W(5, -1115640417, -1100646016, 1004526500, -1108261518)\n\t\t + W(6, -1112496425, -1117627026, -1108867801, -1110958217)\n\t\t + W(7, -1105702479, 1026863896, -1112879076, -1111070831);\n\tsum2 = W(0, 1002312827, 1043920878, -1113959010, -1124888335)\n\t\t + W(1, -1134403694, 1045056865, -1120905299, 1019347263)\n\t\t + W(2, 1025097519, -1107896626, 1031903433, -1120916959)\n\t\t + W(3, -1105297347, 1060319926, -1100397803, 1028583233)\n\t\t + W(4, 1007461646, -1100756735, 1042137547, -1119634731)\n\t\t + W(5, -1117960999, 1018292031, -1106899263, -1134844462)\n\t\t + W(6, -1123847191, -1136355134, -1119650359, 998264859)\n\t\t + W(7, -1129847887, -1108036266, 1033071013, -1109200858);\n\tWS(-1087648930, 1056984912);\n\tsum1 = W(0, 1027950097, 1048727276, -1101873716, -1111974664) + W(1, 1027762677, 1043573475, 1015678999, 1024202483)\n\t\t + W(2, 1025406415, 1051177331, -1091649404, 1016025318)\n\t\t + W(3, 1043195617, -1092810048, -1082302860, 1050173331)\n\t\t + W(4, 1035903278, 1038252876, -1097139061, -1156961168) + W(5, 1031391740, 1044809191, 1038200652, 998750650)\n\t\t + W(6, 1023913741, 1035706934, 1042041459, 1023377112) + W(7, 1033673899, 1020597221, 1041744649, -1114494621);\n\tsum2 =\n\t\tW(0, 1035604443, -1109665959, 1027481873, -1121529027) + W(1, -1113891962, 1017090586, -1115818981, 1006860245)\n\t\t+ W(2, -1155240851, 1033553543, 1023852497, -1124657042) + W(3, -1130359386, 1061263788, 1027230949, 1039189933)\n\t\t+ W(4, 1025386829, -1109330568, 1041592808, -1123139111) + W(5, 1028100153, -1106256683, -1113120233, 999905578)\n\t\t+ W(6, 1016774458, -1097657183, -1101411950, -1132638677)\n\t\t+ W(7, -1126789482, -1118236009, -1121071325, -1109638591);\n\tWS(-1090940868, 1045539156);\n\tsum1 = W(0, -1125495305, -1111842948, 1024315123, 1033322010)\n\t\t + W(1, -1122547977, 1036262295, 1017057054, 1021788462) + W(2, 1049435900, -1083395945, 1046781659, 1041875702)\n\t\t + W(3, 1022396558, 1050733040, 1016653136, 1032259903) + W(4, 1034779456, 1050803832, -1084181811, 1045300311)\n\t\t + W(5, -1113477720, 1023164412, 1044787970, -1103054087)\n\t\t + W(6, 1025152496, -1141132416, 1025666193, -1119238479)\n\t\t + W(7, 1017461170, -1119150102, 1039405571, -1121753565);\n\tsum2 =\n\t\tW(0, -1111850352, -1154701652, 1008422401, -1128983709) + W(1, -1115334877, 1045060155, 1033609440, -1109145509)\n\t\t+ W(2, -1101312255, 1053683311, -1090718168, 1041457249) + W(3, -1131783421, 1041887968, 1047082317, 1009316297)\n\t\t+ W(4, 1037660946, -1090960245, 1034433310, 1037394704) + W(5, -1121261620, 1034919558, 1036748070, 1030040522)\n\t\t+ W(6, 1008969141, -1118627401, -1109720341, 1034723828)\n\t\t+ W(7, -1118719808, -1117531173, 998924330, -1122112519);\n\tWS(1058382658, -1101786424);\n\tsum1 =\n\t\tW(0, -1110270554, 1020557616, 1042446649, 1010032145) + W(1, -1139041509, 1040419632, -1110579152, 1021044303)\n\t\t+ W(2, -1106470550, 1039037886, 1052788411, -1107378131)\n\t\t+ W(3, -1114587164, -1089217895, -1102603214, -1101971332)\n\t\t+ W(4, 1023988544, -1116816379, 1052497916, -1110520967)\n\t\t+ W(5, 1031022672, -1098005290, 1048850952, -1136091053) + W(6, 1028924449, 1030444000, 1041387232, -1142630143)\n\t\t+ W(7, 1026679274, -1105928314, 1042985742, 1036784631);\n\tsum2 = W(0, -1122331173, 1021048143, -1121426033, -1141905806)\n\t\t + W(1, -1116694246, -1117334358, 1034622720, -1109719947)\n\t\t + W(2, -1133055086, 985385246, -1111822939, -1111398337)\n\t\t + W(3, -1106162040, 1058597177, 1062397265, -1092732322)\n\t\t + W(4, 1033705060, -1096472079, 1007125953, -1104483430)\n\t\t + W(5, -1119866494, 1040447045, -1124693001, -1148551778)\n\t\t + W(6, 1019582103, -1107345628, 1025700470, -1142669219)\n\t\t + W(7, -1119480360, 1011504527, 1026572561, -1124513225);\n\tWS(1062970978, -1081266569);\n\tsum1 = W(0, -1102316771, 1049067654, 1040583110, 986432279) + W(1, 1026249566, 1049251698, 1039432874, 1031488060)\n\t\t + W(2, -1104248914, -1100292756, 1040278772, 1034368766)\n\t\t + W(3, 1037424006, -1086541140, -1096033842, 1046796153)\n\t\t + W(4, 1035596338, -1092317470, 1045287213, 1039493185)\n\t\t + W(5, -1122189220, -1101422105, 1049598341, 1029733120)\n\t\t + W(6, 1016727466, -1130063849, 1043296141, -1132489681)\n\t\t + W(7, 1006845944, -1103019359, 1042202275, 1032483937);\n\tsum2 =\n\t\tW(0, -1108138297, -1092863213, -1134447463, 1020893591) + W(1, 1024987284, -1095439435, -1107350452, 1030342296)\n\t\t+ W(2, -1107013954, 1054820060, -1104627754, 1023656240) + W(3, 1038311792, 991870971, 1058790229, -1145193326)\n\t\t+ W(4, -1140508767, 1019051815, 1049499199, -1111721419) + W(5, 999045582, 1003248078, -1113643053, -1124168067)\n\t\t+ W(6, 1010876103, -1122507350, 1040683258, -1111078930)\n\t\t+ W(7, -1139420079, -1120196608, -1107048418, 1036851190);\n\tWS(-1090709444, 1049440503);\n\tsum1 = W(0, -1112814366, 1025170444, 1021129071, -1116166456)\n\t\t + W(1, 1009000949, -1102968365, -1107658202, 1013557870)\n\t\t + W(2, -1102384190, 1054801672, -1108358704, -1112664461)\n\t\t + W(3, -1098104133, 1055216649, 1055155742, -1102466049)\n\t\t + W(4, -1100420271, 1007027006, 1062491877, -1093799886)\n\t\t + W(5, -1117987732, 994631719, -1115514619, -1139587454)\n\t\t + W(6, -1108681738, -1122456724, 1032182427, -1112800010)\n\t\t + W(7, -1118237822, 1037835469, -1137063726, -1119596065);\n\tsum2 = W(0, 1010269627, -1125700925, -1129465449, -1124401971)\n\t\t + W(1, 1011116525, 1031004177, -1111184590, -1139731999)\n\t\t + W(2, 1031226256, 991734042, -1090395945, -1123603568) + W(3, 1023655690, 1056735713, 1007034923, -1106780773)\n\t\t + W(4, -1117593255, 1023598587, -1114530604, 1032362667)\n\t\t + W(5, -1139919503, -1116020697, 1044588818, 1019563835)\n\t\t + W(6, -1131886173, 1030692092, -1118660887, 1016903156)\n\t\t + W(7, -1132337311, 1014084462, 1027760305, 1003383541);\n\tWS(1052605444, -1096548047);\n\tsum1 = W(0, -1135269079, -1099989408, 1035141158, -1157809579)\n\t\t + W(1, 1014261129, -1107118442, 1022832721, 1034237928) + W(2, 1035728362, -1095069609, 1036930738, 1014945855)\n\t\t + W(3, 1017149121, 1004173259, 1042230040, 1022065263) + W(4, 1022065234, -1102684265, 1051854441, -1149699425)\n\t\t + W(5, -1106055602, 1026600311, -1123731628, 1033708682)\n\t\t + W(6, -1122459306, 1029280393, 1039321653, -1120230985)\n\t\t + W(7, -1120275059, -1114974728, -1108029264, 1040542518);\n\tsum2 = W(0, -1139099893, -1078862437, -1097588090, -1129576496)\n\t\t + W(1, -1102121527, -1076350607, 998819801, 1024729710)\n\t\t + W(2, -1108414487, 1043522425, -1111980043, -1134118593)\n\t\t + W(3, 1039987934, 1067956735, -1109442889, 1032654822) + W(4, 1045186917, 1072447081, 1044036972, -1118463242)\n\t\t + W(5, -1096991255, 1053122067, -1115256553, -1124332658)\n\t\t + W(6, 1033745090, -1111637970, 1027886256, -1123595298)\n\t\t + W(7, -1102163660, 1040872955, 1044251533, -1115579557);\n\tWS(1054231108, 1025279114);\n\tsum1 = W(0, 1020527399, -1123453065, -1096862627, 1049493415)\n\t\t + W(1, 1020186806, 1039341944, -1119337841, -1160786718)\n\t\t + W(2, 1026191493, -1104689967, 1034733383, 1041541558) + W(3, 1046988234, -1092316960, 1008801448, 1041661776)\n\t\t + W(4, -1147857037, -1122753069, -1108979241, 1034215919)\n\t\t + W(5, 1041704764, -1093206832, 1050167121, 1032223662)\n\t\t + W(6, -1120557618, -1107112804, 1027712531, -1156220183)\n\t\t + W(7, 1039867950, -1094240131, 1043962418, 1036558383);\n\tsum2 =\n\t\tW(0, -1156731980, -1121143571, 1027150242, 1019039796) + W(1, -1125155383, 1021067288, 1024911074, -1128517034)\n\t\t+ W(2, -1153680156, -1101109237, -1096825521, 1036906894)\n\t\t+ W(3, -1140765671, -1079877582, -1088644111, -1110310177)\n\t\t+ W(4, 1018992688, -1094350155, -1113080073, 1019841700) + W(5, 1030176462, 1058234221, 1052444813, 1000349534)\n\t\t+ W(6, 1027890172, 1064456596, 1024094624, -1128055622) + W(7, 1018002108, 1058386161, 1045751986, -1134555143);\n\tWS(-1097731588, 1025129315);\n\tsum1 =\n\t\tW(0, 1033609822, 1037092684, -1099469177, -1125480775) + W(1, 972033083, -1118357663, -1139849211, -1113410371)\n\t\t+ W(2, 1036940225, 1046113067, -1089626010, 1035911587) + W(3, 1025915127, 1050865438, -1143345853, 1047135499)\n\t\t+ W(4, 1037164536, -1109542297, -1104510832, 1038594118) + W(5, 1018117854, 1047810219, -1097851227, 1031924197)\n\t\t+ W(6, 1009743167, -1111680192, -1113708160, -1146462713)\n\t\t+ W(7, 1021572178, 1036701507, -1110047355, -1120871309);\n\tsum2 = W(0, -1124965724, 1029789829, -1119672690, -1132623148)\n\t\t + W(1, -1134630348, -1105084635, 1036116775, -1123511646)\n\t\t + W(2, -1138485084, 1035852445, 1002738585, -1106888257)\n\t\t + W(3, -1143859545, 1050249105, 1057234226, -1097411434)\n\t\t + W(4, -1133066340, -1114135764, -1115375290, -1109817844)\n\t\t + W(5, 1030422253, 1024721985, -1117221657, 1017260494)\n\t\t + W(6, -1121255807, -1120848177, 1007172972, -1118819718)\n\t\t + W(7, 1003464777, 1033535897, -1110249095, 1021514610);\n\tWS(1064258306, 1057427735);\n\tsum1 =\n\t\tW(0, 1046669668, 1041288794, -1094345727, 1024557366) + W(1, 1048078371, 1002554246, -1107049340, 1026345305)\n\t\t+ W(2, 1049007041, 1039217007, -1092155570, -1126800432)\n\t\t+ W(3, 1043467602, -1117262306, -1100296810, 1017273727) + W(4, 1032131185, 1041191743, -1101509636, 1027549470)\n\t\t+ W(5, 1040278032, 1037075392, -1100720075, -1136038899) + W(6, 995640096, -1121877906, 1015117221, -1134767685)\n\t\t+ W(7, -1135631084, 1026049048, 1034147956, -1111532367);\n\tsum2 =\n\t\tW(0, -1083389635, 1062132206, -1122840851, -1127222139) + W(1, -1081609637, 1066099523, 1053156114, 1022631188)\n\t\t+ W(2, -1079976349, 1066066300, -1105997303, 1027246780)\n\t\t+ W(3, -1090363224, 1067427062, -1091867230, -1128121946)\n\t\t+ W(4, -1100056051, 1049064133, -1103783968, 1036294091) + W(5, -1097029007, 996873905, 1048340523, -1115106526)\n\t\t+ W(6, 1028030408, -1137063332, -1134953960, 1035025213)\n\t\t+ W(7, -1118886369, 1035057689, -1104392578, -1117772337);\n\tWS(-1082692450, -1121765493);\n\tsum1 =\n\t\tW(0, -1112587635, 992292947, 1015927970, -1121302066) + W(1, -1118487719, -1104534315, 1038416886, -1121296341)\n\t\t+ W(2, -1105756568, 1049230729, -1104867982, 1043167221) + W(3, -1111631170, 1048175951, 1051898365, 1037146590)\n\t\t+ W(4, 1036199927, -1089217933, 1057590961, -1113442509)\n\t\t+ W(5, -1106833087, 1028715132, -1104675396, 1030891673)\n\t\t+ W(6, -1115752014, -1121927694, 1012516667, -1121397517)\n\t\t+ W(7, -1109370235, 1018481703, 1022215305, -1113425325);\n\tsum2 = W(0, -1102561169, 1040868564, -1126923948, -1123351116)\n\t\t + W(1, 1026098771, 1021710972, 1009959824, -1125337962) + W(2, -1149524831, 1048116590, 1037970343, 1024724387)\n\t\t + W(3, -1113975834, 1041914200, 1042300553, -1123062396)\n\t\t + W(4, -1157274159, 1051191259, 1032086087, 1021621986)\n\t\t + W(5, -1105234356, 1039729263, -1097615037, -1105344931)\n\t\t + W(6, 1008573990, 1018638481, -1115639834, -1109718449)\n\t\t + W(7, -1102778536, 1035375403, -1115667744, -1105611058);\n\tWS(1063145570, 1065948321);\n\tsum1 =\n\t\tW(0, -1113780043, 1042647928, 1023153433, -1113344071) + W(1, -1107415145, 1041877314, -1105577826, 1034763992)\n\t\t+ W(2, -1103697695, 1043379605, 1035095074, -1113485016)\n\t\t+ W(3, -1125795137, -1105676766, 1058030732, -1107021830)\n\t\t+ W(4, -1119226457, -1093770877, 1049757493, -1116457366)\n\t\t+ W(5, 1032469064, -1098882227, 1047432094, 1028002580) + W(6, -1118570362, 1029896809, -1106671851, 1033670420)\n\t\t+ W(7, -1148759702, 1007275454, -1110160160, 1021171309);\n\tsum2 =\n\t\tW(0, 1033443671, -1147652316, -1122182070, -1114870166)\n\t\t+ W(1, -1119163512, 1034562054, -1110746439, -1126213983)\n\t\t+ W(2, 1032648925, 1044843888, -1104224164, 1033622730) + W(3, 1022262943, -1082830049, -1080473697, 1036499220)\n\t\t+ W(4, -1121656898, 1049609982, 1070472721, 1042757767) + W(5, -1125619769, 1025258841, 1045148854, -1125695843)\n\t\t+ W(6, -1116250872, 1030706970, -1138594966, -1109235057)\n\t\t+ W(7, 983397903, 1030898199, 1015661307, -1105016797);\n\tWS(1047808392, -1105857653);\n\tsum1 =\n\t\tW(0, 1036414223, 1057255335, -1089047968, 1019549874) + W(1, 1038664639, 1050583338, -1095111703, 1027946812)\n\t\t+ W(2, 1033646416, 1052085724, -1090242223, 1014185453) + W(3, 1045309491, -1112577010, -1088425805, 1038762993)\n\t\t+ W(4, 1028560677, 1049269098, -1097592171, 1038356881) + W(5, 1047007737, -1101673225, 1024927375, -1120878336)\n\t\t+ W(6, 1035626955, 1020504170, 988289723, 1031636916) + W(7, 1052689664, -1098667351, -1153489085, -1106190208);\n\tsum2 =\n\t\tW(0, 1050181400, -1084160527, -1088778570, 1059321043) + W(1, -1114267734, 1035785784, -1097051496, -1113170400)\n\t\t+ W(2, 1015251419, -1094891239, -1096397593, 1035392846)\n\t\t+ W(3, -1097894374, 1060354212, 1063793540, -1098458292) + W(4, 1014394222, 1045924604, -1132415773, 1030978836)\n\t\t+ W(5, -1098468098, 1054874631, -1115217527, -1096505073)\n\t\t+ W(6, 1043075035, 1042828743, -1098450150, 1042772598)\n\t\t+ W(7, -1092845444, 1063378281, 1051615858, -1088082125);\n\tWS(-1073783985, -1080098540);\n\tsum1 =\n\t\tW(0, 1012137476, 1004414705, 994170013, -1135747626) + W(1, -1111733448, -1125334283, 1040796537, -1106294475)\n\t\t+ W(2, 1027546650, -1098951217, 1045494048, -1105932043)\n\t\t+ W(3, -1095391448, 1058781709, 1038631039, -1097893467)\n\t\t+ W(4, -1107725963, 1056582836, -1099332954, 1027155091) + W(5, 1030910366, 1054585131, -1102018612, 1001385357)\n\t\t+ W(6, 1024902311, -1118558951, -1106829042, -1141795121)\n\t\t+ W(7, -1136391487, 1012935090, -1113109295, -1118975220);\n\tsum2 = W(0, -1136577003, -1161174488, -1123274403, 1021768566)\n\t\t + W(1, -1123969951, -1115268047, 1023359390, -1128609502)\n\t\t + W(2, -1126970134, -1111829747, 1034323377, 1026568479)\n\t\t + W(3, 1039844510, -1078035036, -1085317526, 1027511085) + W(4, 1037108170, 1072008544, 1044555209, 986504280)\n\t\t + W(5, -1182117728, 1038025274, 1032404118, -1139830523)\n\t\t + W(6, 1024145219, 1006927579, 1024479257, -1127097094) + W(7, -1107924935, 1013110307, 983390936, 1022685546);\n\tWS(-1104974728, 1024380720);\n\tsum1 = W(0, -1117848102, -1117883163, 1036325571, -1131530510)\n\t\t + W(1, 1021171896, -1127535108, 1018298053, 1031544042) + W(2, 1039153371, -1099610928, 1041104624, 982295861)\n\t\t + W(3, 1036503965, -1100771573, -1101972463, 1036843369) + W(4, 988770395, 1043814114, -1133844875, 1029874576)\n\t\t + W(5, -1109841905, 1034691017, -1107251369, 1031396654)\n\t\t + W(6, -1121562883, 1034709362, 1025626276, -1125713989)\n\t\t + W(7, -1126175513, 1004793673, -1111468989, 1034135320);\n\tsum2 = W(0, -1125393898, 1071281072, 1044770418, 1011595325) + W(1, 1044163006, 1072425553, -1125402454, 1021558362)\n\t\t + W(2, 1045704700, -1104699996, 1018560910, 1010524637)\n\t\t + W(3, -1110276988, -1078765241, -1098423872, -1113439186)\n\t\t + W(4, -1099412627, -1076152216, -1103281302, -1178088596)\n\t\t + W(5, 1044569612, -1100004941, 1028856833, 1019143058)\n\t\t + W(6, -1115657155, 1036033265, -1123488110, -1126446200)\n\t\t + W(7, 1037394103, -1111185479, -1117821699, 1026998165);\n\tWS(1066498257, 1026989550);\n\tsum1 = W(0, -1129927868, 1023571545, 1016605513, -1133253141)\n\t\t + W(1, -1123659738, 1024686464, -1143882757, 1025371048)\n\t\t + W(2, 1045121333, -1084187390, 1042249043, 1033458708) + W(3, 1002634947, 1040895252, 1054068239, 1032849928)\n\t\t + W(4, 1036944705, 1040663099, -1089079196, 1049903454) + W(5, 970850411, -1115004776, -1120675276, 1024612748)\n\t\t + W(6, 1022709187, 1024409057, -1112524513, 1017685954)\n\t\t + W(7, 1004856149, 1001199419, -1120648472, -1117202350);\n\tsum2 = W(0, 1038138620, -1106434423, 1014840059, -1117610677)\n\t\t + W(1, -1155040203, 1038340354, -1105689565, 1038431916)\n\t\t + W(2, 1049419982, -1087069176, -1102609737, -1115449783)\n\t\t + W(3, -1094597030, 1064410985, 1043321526, -1117967352)\n\t\t + W(4, 1022703337, -1110711879, 1043390477, -1107988055)\n\t\t + W(5, -1117198782, -1112639315, 1042536365, -1112813855)\n\t\t + W(6, -1132959015, 1026273617, 1036470844, -1122022929)\n\t\t + W(7, -1121486321, -1123727669, 1009362023, 1031915394);\n\tWS(1059170114, -1115069681);\n\tsum1 =\n\t\tW(0, 1041126528, 1039057944, -1114418030, -1125005432) + W(1, 1031327889, 1043197758, 1035998588, -1184440086)\n\t\t+ W(2, -1137442701, 1057495242, -1086197480, -1107377807)\n\t\t+ W(3, 1027929903, 1035662548, -1092661254, -1131407372) + W(4, 1016336432, 1036387882, -1098594899, 1031309989)\n\t\t+ W(5, 1045677858, 1043295874, -1097533773, 1017102598) + W(6, 1027533272, 1020376880, -1116322521, 1036182828)\n\t\t+ W(7, 1040648584, 1035357519, -1106979748, -1128058314);\n\tsum2 =\n\t\tW(0, 1029223181, -1099457044, -1094833228, 1022472216) + W(1, 1035999136, -1123134927, -1107153986, -1129014496)\n\t\t+ W(2, 1032743888, -1106245137, 1052844759, 1034397600) + W(3, 1050206678, -1115721168, 1029163621, 1043654862)\n\t\t+ W(4, 1030968394, 1035536761, 1046847142, -1114537747) + W(5, 969652021, -1109098872, -1111905268, -1149928759)\n\t\t+ W(6, 1018474295, -1136790748, -1116305850, 968266517)\n\t\t+ W(7, -1138117380, -1105152866, -1102858563, 1033858063);\n\tWS(-1091215044, -1097536449);\n\tsum1 = W(0, 1036334229, -1088688205, 1028067640, 1049627927) + W(1, 1027816414, -1110004986, 1025245044, 1039037582)\n\t\t + W(2, 1046343318, -1088611549, -1104070412, 1048707955)\n\t\t + W(3, 1054850406, -1085760696, -1089807987, 1052669472) + W(4, 1041878433, -1113122464, 990395721, 1043177720)\n\t\t + W(5, 1040414769, -1115511970, 1024229024, 1039929856) + W(6, 1017820267, -1113420363, 1028468150, 1044644789)\n\t\t + W(7, 1047750528, 1034437006, -1097347774, 1048578060);\n\tsum2 = W(0, -1114440831, 1036847317, 1041890716, 1027069126) + W(1, 1030624098, 1042295753, -1115362087, 1021176355)\n\t\t + W(2, 988636086, 1050034374, -1113867927, 1029167466) + W(3, -1132718391, 1031424194, 1016671019, 1028661170)\n\t\t + W(4, 1030310950, -1119733782, -1130826523, -1183083952)\n\t\t + W(5, 1016098323, -1120554286, -1097953797, -1108500823)\n\t\t + W(6, 1024855622, -1114648667, -1146049358, 1027651154)\n\t\t + W(7, 1018716851, 1035432255, -1096082463, -1106095247);\n\tWS(-1074893425, -1117971628);\n\tsum1 = W(0, -1094367290, 1052023128, 1042452051, -1107223211)\n\t\t + W(1, -1152038187, 1049322869, -1097322793, 1034136520)\n\t\t + W(2, -1103630563, -1111356283, 1049675109, -1112379016)\n\t\t + W(3, -1098786216, 999054287, 1040732760, -1102728254) + W(4, 1037656965, -1106664801, 1040645714, 1016544493)\n\t\t + W(5, -1114777697, -1093651375, 1057236855, -1125564586)\n\t\t + W(6, 1025099466, 1040611874, 1040783587, -1105965314)\n\t\t + W(7, -1124130662, -1094570594, 1055134184, 1008351835);\n\tsum2 = W(0, 1004001863, -1116735450, -1111481570, 1033584975)\n\t\t + W(1, 1021526755, 1032892007, 1024548251, -1130001464)\n\t\t + W(2, 1018968138, -1096890588, -1073615974, 1026017190)\n\t\t + W(3, -1116175346, -1099974349, -1071438395, -1121576034)\n\t\t + W(4, -1139174407, -1103015201, -1146527383, -1164624762)\n\t\t + W(5, 1031843333, 1040986630, 1076155388, 1024580999) + W(6, -1131104448, 1035109709, 1074182350, 1043256283)\n\t\t + W(7, 1009509771, 1041412407, 1041860718, -1106441216);\n\tWS(1040475912, 1032695578);\n\tsum1 = W(0, -1124525022, -1112011377, 1035534023, -1136466746)\n\t\t + W(1, -1155851319, -1123298122, -1102944834, 1035920825)\n\t\t + W(2, 1035372099, -1091278169, 1055301749, -1130626274)\n\t\t + W(3, -1122500130, 1056532699, 1041895809, -1104812886)\n\t\t + W(4, -1172701842, 1054708857, -1087252087, 1028924087)\n\t\t + W(5, 1033773669, -1105035590, 1039100863, -1111589035)\n\t\t + W(6, 1014757675, 1007501482, -1123874252, -1142366545)\n\t\t + W(7, -1116930196, 1026134833, 1036316385, -1110262076);\n\tsum2 =\n\t\tW(0, -1109091355, 1041703749, -1120034208, 1010537508) + W(1, -1119792870, -1123886114, -1123320808, 1026411366)\n\t\t+ W(2, -1111337413, 1026232126, 1045621744, 1015836410) + W(3, -1102054262, 1049335147, 1063803841, -1098413574)\n\t\t+ W(4, -1118550690, -1114718085, -1088756378, 1041947548)\n\t\t+ W(5, -1113960445, -1111978783, 1016064880, -1123461018)\n\t\t+ W(6, -1142500624, -1124340572, 1026268254, 999681904)\n\t\t+ W(7, -1109065069, 1020384670, 1030310973, -1122952578);\n\tWS(1060902754, 1050355625);\n\tsum1 =\n\t\tW(0, -1156790206, -1099711167, 1048936605, 975051222) + W(1, -1151083459, -1104333225, 1047935457, -1120760458)\n\t\t+ W(2, 1011568442, -1101534272, 1041411896, 1040804594) + W(3, 1023922682, -1082482317, -1103038759, 1043235660)\n\t\t+ W(4, 1024500211, -1107281952, 1049946264, 998453633) + W(5, -1112644265, 1053813598, 1036831245, 1030084558)\n\t\t+ W(6, 1033389138, 1025001795, 1037700978, 1007099659) + W(7, -1104847739, -1116841801, 1030797274, 1035779080);\n\tsum2 =\n\t\tW(0, 1036801640, -1106066969, -1098529900, 1051617655) + W(1, -1120633215, 1029646415, -1094622159, -1128436081)\n\t\t+ W(2, 1043653368, -1102845552, 1045091011, -1108268977) + W(3, 1045612039, 1020964885, 1062435502, -1120809462)\n\t\t+ W(4, -1100846658, 1041841354, -1104869009, -1127923721)\n\t\t+ W(5, 976462574, -1088569123, 1054359824, -1115259155)\n\t\t+ W(6, -1115109418, -1101549413, -1101036113, 1041018201)\n\t\t+ W(7, -1097687290, 1054633350, 1044975639, -1102739129);\n\tWS(-1090140642, -1081743990);\n\tsum1 =\n\t\tW(0, 1014408182, 1037549524, -1119977588, -1148996265) + W(1, -1130293844, 1009886528, 1031805064, -1107483388)\n\t\t+ W(2, 1031847606, 1044394635, -1097431626, 1015837167) + W(3, 1042594418, 1037202321, -1094879521, 1035016080)\n\t\t+ W(4, 1041618980, -1117833212, -1119842097, 1032499967) + W(5, 1035968392, 1037634256, -1101547735, 1034663662)\n\t\t+ W(6, 1009499077, -1122700465, -1107123493, 1017023585)\n\t\t+ W(7, 1033368909, 1015596142, -1105308242, 1030806526);\n\tsum2 = W(0, -1123785792, 1013646496, -1105735433, 1032589029)\n\t\t + W(1, 1006912162, -1120892227, 1034054467, -1113324539)\n\t\t + W(2, -1091554339, 1057715626, -1103626228, 1043157583)\n\t\t + W(3, -1071648513, 1076150687, -1110563164, 1029343874)\n\t\t + W(4, -1078529007, 1069469884, 1025732222, -1120727508)\n\t\t + W(5, -1106043455, 1049558148, -1102425071, 1029688242)\n\t\t + W(6, -1108743589, 1035924910, 1028146935, -1120545616)\n\t\t + W(7, -1113325201, 1038760139, 1001130061, -1123660578);\n\tWS(1055430148, -1108560690);\n\tsum1 =\n\t\tW(0, 1035961997, -1122962962, 1001804274, -1109508687) + W(1, 1035029338, -1107101862, 1037435821, -1114596033)\n\t\t+ W(2, 1036894711, -1105458486, 1049324163, -1105968336)\n\t\t+ W(3, 1041930516, -1102453987, -1115462345, 1030068713) + W(4, 1018389269, 1050880022, -1096234295, 1023650152)\n\t\t+ W(5, -1113968413, 1050461237, -1096034793, 1041307521) + W(6, 1026969083, 1017425654, -1105484423, 1023939770)\n\t\t+ W(7, -1119268932, 1049028992, -1109268985, -1110794404);\n\tsum2 = W(0, 1020921672, -1133145023, 967639540, 1057583079) + W(1, 1015626891, 1000680715, 1038163303, 1066461314)\n\t\t + W(2, -1131154511, 1034643892, 1029820070, 1070593780)\n\t\t + W(3, -1149322267, -1106033700, 1027175814, 1042500058)\n\t\t + W(4, 1005570725, -1155618307, 1050725869, -1076733999)\n\t\t + W(5, -1122484266, 1030350968, -1107328459, -1075365186)\n\t\t + W(6, -1125609227, -1127714103, 984351189, -1095092572)\n\t\t + W(7, 1019773418, 1027949553, -1113454879, 1026351361);\n\tWS(1048611396, -1120253991);\n\tsum1 = W(0, -1109906484, -1104843595, 1042068462, 1029221016)\n\t\t + W(1, -1134442421, 1020368935, -1116357012, 1014414830)\n\t\t + W(2, -1157090745, -1102655324, -1127594975, 1044033359)\n\t\t + W(3, 1038629782, -1096452233, 1048790986, 1052393436) + W(4, 1019276152, -1094801150, 1026936628, 1029702657)\n\t\t + W(5, 1008425488, -1098953977, 1044903358, -1137141374)\n\t\t + W(6, -1121251029, -1125379561, 1031973931, -1117911220)\n\t\t + W(7, -1115994974, -1120481658, 1042932491, 1022285443);\n\tsum2 = W(0, -1129566974, -1111784437, 1050813877, -1093517653)\n\t\t + W(1, -1143746400, 1036277891, 1047551505, -1098527209)\n\t\t + W(2, 1036033029, 1028988774, 1061486774, -1081514759)\n\t\t + W(3, -1117052801, -1100779042, 1077969880, -1071648362)\n\t\t + W(4, -1123748463, 1044450885, 1055586292, -1089190754)\n\t\t + W(5, 1038502321, -1129810696, -1131992338, -1107152864)\n\t\t + W(6, -1138810328, 1034348699, 1040643987, -1111885211)\n\t\t + W(7, 1043607047, -1108082071, -1108034712, 1025200270);\n\tWS(-1095808772, 1065647947);\n\tsum1 = W(0, -1096536264, 1055051378, -1152511995, -1101629224)\n\t\t + W(1, -1104862109, 1050045579, -1106144343, -1139560206)\n\t\t + W(2, -1101976087, 1051209263, -1114400236, -1118447811)\n\t\t + W(3, -1101730853, 1045989771, 1051130659, -1101507019)\n\t\t + W(4, -1126516760, -1096666661, 1054814183, -1103658466)\n\t\t + W(5, -1106707963, -1098537885, 1057272194, -1098960762)\n\t\t + W(6, -1123882077, 1021791993, 1047598263, -1106849375)\n\t\t + W(7, -1108125731, -1104774017, 1057816237, -1104521538);\n\tsum2 = W(0, -1110633145, 1046325680, -1106205960, -1121981161)\n\t\t + W(1, -1114352725, -1134514653, -1145236426, -1115188107)\n\t\t + W(2, -1120367533, 1030462840, -1121802017, 1009337269)\n\t\t + W(3, -1113576661, 1052343557, 1052169724, -1122467029)\n\t\t + W(4, -1147392026, 1028577898, -1126550987, -1112707841)\n\t\t + W(5, -1111220567, -1127265311, 967975074, -1123885069)\n\t\t + W(6, -1123261925, 1023140267, -1125641651, -1109514951)\n\t\t + W(7, -1131596567, -1109705515, 1019189507, 1036097210);\n\tWS(-1088656098, -1093593990);\n\tsum1 = W(0, 1009988669, 1053407451, -1093246956, 1009810317) + W(1, 1006243392, 1046462824, -1100605512, 1021367180)\n\t\t + W(2, -1118924498, 1054487499, -1092703459, 1031892963)\n\t\t + W(3, 1040203342, 1043824044, -1110184012, -1115326423)\n\t\t + W(4, 1030956655, -1107509853, 1041099456, 1009525296)\n\t\t + W(5, 1015251645, -1099069067, 1036164518, -1102894371)\n\t\t + W(6, 1032654584, -1114843936, 1040232112, -1121673919)\n\t\t + W(7, 1034196708, -1106663601, 1035276411, -1120762380);\n\tsum2 = W(0, 1045046842, -1111686548, -1120613757, -1123157156)\n\t\t + W(1, 1057379920, 1047338924, 1041926325, -1122209414) + W(2, 1066661430, 1044625920, 1010608356, 1026048962)\n\t\t + W(3, 1065556520, -1108706635, -1107659276, -1118064370)\n\t\t + W(4, -1100359290, 1040575208, 1029226052, 1036917588) + W(5, -1079104557, 1048831397, 990146073, -1118722317)\n\t\t + W(6, -1080513286, -1106604517, -1122878530, 999828841)\n\t\t + W(7, -1090732450, -1118381857, -1148427089, -1128484108);\n\tWS(-1103417864, 1032685901);\n\tsum1 = W(0, -1113840082, 999140540, 1026362243, 1025795300) + W(1, -1101895278, 1021813182, 1049323684, -1104186210)\n\t\t + W(2, -1106883347, 1050838637, -1123649147, 1026463622)\n\t\t + W(3, -1112947643, 1035808888, -1115046028, 1015970396)\n\t\t + W(4, 1045150312, -1089518824, 1051398592, 1028121997)\n\t\t + W(5, -1106874992, -1112862903, 1043843226, -1114287989)\n\t\t + W(6, -1122615424, -1123587264, 1032255888, -1148228092)\n\t\t + W(7, -1140285221, 991482976, 1025625239, -1125179546);\n\tsum2 = W(0, 1052414494, -1107019340, 1021676257, -1118630717)\n\t\t + W(1, 1041601968, 1032004449, -1101889010, 1028135044) + W(2, 1061231009, -1083281727, 1040520305, 994543087)\n\t\t + W(3, -1094738093, 1048799024, -1113266306, 1023423300)\n\t\t + W(4, -1090047391, 1060484354, -1097572834, 1023744190)\n\t\t + W(5, -1112254382, 1026094686, 1047868927, -1123297050)\n\t\t + W(6, -1124055261, 1028491114, -1106439707, -1134044699)\n\t\t + W(7, -1106989530, 1016363351, 1039531031, -1135541243);\n\tWS(1062251010, -1128406975);\n\tsum1 =\n\t\tW(0, -1122559590, -1114430084, 1041522773, -1200477464) + W(1, -1117783082, 998905218, -1122146129, 1030594936)\n\t\t+ W(2, -1111223497, -1117430765, 1049934150, -1117296696)\n\t\t+ W(3, -1097132645, 1043264160, 1038499861, -1108127936)\n\t\t+ W(4, -1118294493, -1137238321, 1040349396, -1117164622)\n\t\t+ W(5, 1027318465, -1109365760, 1038350478, 1008104625) + W(6, -1122628178, 1012147781, -1161426505, 1016497826)\n\t\t+ W(7, -1142140116, -1112437644, 1022231761, 1030977566);\n\tsum2 =\n\t\tW(0, -1117898288, 1035048481, 1015521050, -1121110162) + W(1, -1125963325, 1029071818, -1131842712, -1139107970)\n\t\t+ W(2, -1090182563, 1058090849, -1155119281, -1131029094)\n\t\t+ W(3, -1072766634, 1075259304, -1099596444, 1037152077) + W(4, -1084699977, 1062748800, 1015646848, 1018972128)\n\t\t+ W(5, 1030742992, -1113008632, -1124623837, 1025197316)\n\t\t+ W(6, -1114032290, 1039805619, -1116189732, -1127481518)\n\t\t+ W(7, 1021721886, -1113709765, -1146515621, 1027813594);\n\tWS(1065708113, -1121751611);\n\tsum1 =\n\t\tW(0, -1151170552, 1004700116, 1029908854, -1203182552) + W(1, -1113367966, 1033929377, -1124121476, -1152107167)\n\t\t+ W(2, -1132161740, 1028879143, 1021289212, 985230639) + W(3, -1102777150, 1048992314, -1106962671, -1118004497)\n\t\t+ W(4, 1008580363, -1130586604, -1145749780, 1024087440) + W(5, 1034637855, -1123817297, 1010684790, 1024857134)\n\t\t+ W(6, -1122909571, 997138991, -1110778290, 1018524741)\n\t\t+ W(7, 1029317996, -1119780649, -1119558682, 1030859440);\n\tsum2 = W(0, 1022085973, -1128031215, 1012976820, -1176062153) + W(1, 1007192988, 982756722, -1124806095, 1022708360)\n\t\t + W(2, 1059325611, -1087213694, 1030136738, -1120463845)\n\t\t + W(3, 1078660314, -1070139299, -1095156098, 1033425170)\n\t\t + W(4, 1067996709, -1079390657, -1131018297, -1138793506)\n\t\t + W(5, -1179370697, -1159362498, 1019962283, -1124014927)\n\t\t + W(6, 1033764027, -1110724756, 1025926144, 1016277465)\n\t\t + W(7, 1000911377, 1028041806, -1121497459, -1138055830);\n\tWS(1067144001, 1026092834);\n\tsum1 =\n\t\tW(0, 1005864375, 1049810486, -1103125415, -1120236446) + W(1, 1014388109, 1020396467, 1040462414, -1132016387)\n\t\t+ W(2, -1110877439, 1055042333, -1103579165, -1107048544)\n\t\t+ W(3, -1100539124, 1042867979, -1096204250, -1116193256)\n\t\t+ W(4, -1110133357, 1031992147, 1048911295, 1010104860) + W(5, -1126225268, 1044290490, -1091768605, 1031444773)\n\t\t+ W(6, 1033891677, 1034565181, -1114007278, 1030176378) + W(7, 1016160519, 1034066560, -1112003369, 1031923300);\n\tsum2 = W(0, -1130823435, -1123834023, 1036568073, -1114604843)\n\t\t + W(1, -1108591076, 1045671991, -1106172311, 1024976861)\n\t\t + W(2, -1112679806, -1133291790, -1115701009, 1033105292)\n\t\t + W(3, -1095898825, 1058163296, 1057311204, -1122476787)\n\t\t + W(4, -1107310218, -1100325346, -1097367248, 1035411458)\n\t\t + W(5, 1030441654, -1113640367, 1044352434, -1111920852)\n\t\t + W(6, -1128226189, 1016405480, -1106561364, 1031834977)\n\t\t + W(7, 1031713190, -1116067001, 1014762708, -1121017007);\n\tWS(1057420226, -1092362255);\n\tsum1 = W(0, 1032475105, 1044920519, -1103664666, -1114304581)\n\t\t + W(1, 1020346174, -1144052776, 1027257637, -1116794957)\n\t\t + W(2, -1121587297, 1052978802, -1096869991, -1103967019)\n\t\t + W(3, 1019256762, 1055322687, -1116373310, -1100439285)\n\t\t + W(4, -1123769862, -1104246416, 1028318277, 1018564517)\n\t\t + W(5, 1033058515, 1040777765, -1096789598, 1036089864) + W(6, 1024808486, 1016898380, -1118572551, 1021198731)\n\t\t + W(7, 1030782351, 1041983019, -1106323631, -1130998630);\n\tsum2 =\n\t\tW(0, -1134184569, 1016741405, 1020516693, -1102863001) + W(1, 1006994613, -1130764191, 1043863088, -1103907912)\n\t\t+ W(2, 1034914936, 1033077740, 1060988002, -1084447988)\n\t\t+ W(3, -1134366153, -1112456708, 1071901111, -1076633620)\n\t\t+ W(4, 1033598449, 1043198162, 1043355315, -1098165823) + W(5, 1009154259, -1132669129, 1018979141, -1118646231)\n\t\t+ W(6, 989883430, 1016038391, 1034096544, -1113048166) + W(7, 1021229932, -1126067903, 1022348007, -1118544043);\n\tWS(-1105493768, -1082709441);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[429];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { temp[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 11 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 429; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 11, y = (uint)id % 11;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (3)) + 0.5, float(group_base.y + y - (1)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[8];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 11];\n\tsamples[1][1] = inp[local_pos + 12];\n\tsamples[1][2] = inp[local_pos + 13];\n\tsamples[1][3] = inp[local_pos + 14];\n\tsamples[2][0] = inp[local_pos + 22];\n\tsamples[2][1] = inp[local_pos + 23];\n\tsamples[2][2] = inp[local_pos + 24];\n\tsamples[2][3] = inp[local_pos + 25];\n\tsamples[3][0] = inp[local_pos + 33];\n\tsamples[3][1] = inp[local_pos + 34];\n\tsamples[3][2] = inp[local_pos + 35];\n\tsamples[3][3] = inp[local_pos + 36];\n\tsamples[4][0] = inp[local_pos + 44];\n\tsamples[4][1] = inp[local_pos + 45];\n\tsamples[4][2] = inp[local_pos + 46];\n\tsamples[4][3] = inp[local_pos + 47];\n\tsamples[5][0] = inp[local_pos + 55];\n\tsamples[5][1] = inp[local_pos + 56];\n\tsamples[5][2] = inp[local_pos + 57];\n\tsamples[5][3] = inp[local_pos + 58];\n\tsamples[6][0] = inp[local_pos + 66];\n\tsamples[6][1] = inp[local_pos + 67];\n\tsamples[6][2] = inp[local_pos + 68];\n\tsamples[6][3] = inp[local_pos + 69];\n\tsamples[7][0] = inp[local_pos + 77];\n\tsamples[7][1] = inp[local_pos + 78];\n\tsamples[7][2] = inp[local_pos + 79];\n\tsamples[7][3] = inp[local_pos + 80];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 34];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(1, 2);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2) + ivec2(0, 1), ret);\n}\n//!PASS 2\n//!DESC NNEDI3 (double_x, nns64, win8x4)\n//!IN INPUT, temp\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 8\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[8]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 8; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 32.0;\n\tfloat mstd1 = sumsq / 32.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 = W(0, 1040079017, -1129953383, -1112255447, -1100320116)\n\t\t + W(1, 1039284509, 991372703, 1013856427, -1108390802) + W(2, -1115658697, 1052077971, 1056937139, 1052646725)\n\t\t + W(3, -1091236407, -1106109018, -1112818013, 1030287040)\n\t\t + W(4, -1107150591, -1102425550, -1089460941, 1029401490)\n\t\t + W(5, 1057992884, 1043570389, 1044897031, 1028923089) + W(6, -1119789534, 1027055297, 1033358144, -1121552872)\n\t\t + W(7, -1097729145, -1111268755, -1110301789, -1132036495);\n\tsum2 =\n\t\tW(0, -1108031914, 1026461175, 1032549274, 1041814131) + W(1, 1017353224, -1121140359, -1132764107, -1138465879)\n\t\t+ W(2, -1118430023, 1041449883, 1072973866, -1076980873)\n\t\t+ W(3, -1111091488, 1028730196, -1121430441, -1127880506)\n\t\t+ W(4, 1012288055, 1027150813, 1049697467, -1082819831) + W(5, 1041587393, 1027133694, -1122016279, -1141547063)\n\t\t+ W(6, 1013768747, -1122068949, 1026059807, 1036691428)\n\t\t+ W(7, -1152272302, -1116481805, 1025296987, 1012449399);\n\tWS(-1098744132, 1034278418);\n\tsum1 = W(0, -1103397220, -1124165708, -1110800938, 1026719460)\n\t\t + W(1, 1022646298, 1032193166, 1022064347, -1136800346)\n\t\t + W(2, -1145635621, 1041815523, -1099348442, -1092523700)\n\t\t + W(3, -1100009602, -1088889154, -1104673163, -1098235958)\n\t\t + W(4, -1105248316, -1120033612, 1050332487, 1047722705) + W(5, 1037024150, 1057456646, 1045722836, 1051861685)\n\t\t + W(6, 1050544938, 1021903208, 1035939706, 994253234) + W(7, 1017012340, 992386946, -1126668889, 1007925993);\n\tsum2 =\n\t\tW(0, -1097631923, 1038271179, 1016052501, 1038061501) + W(1, -1098093629, 1036023945, -1103222197, 1049634734)\n\t\t+ W(2, 1051137052, -1138123466, 1047950529, 1066995446)\n\t\t+ W(3, 1052164534, -1086456688, -1092315790, -1088937960)\n\t\t+ W(4, 1049915324, -1101382095, 1053016941, 1044310058)\n\t\t+ W(5, -1101624661, -1097740488, 1025704121, -1095498431)\n\t\t+ W(6, -1103655169, 1030554459, -1103587135, 1039796029) + W(7, 1022295275, 1002073396, 1009745942, 1037237655);\n\tWS(-1082862242, -1106529553);\n\tsum1 = W(0, -1130854575, -1136558799, -1106220300, 1011297096)\n\t\t + W(1, 1032803517, 1003802452, -1130818358, -1115833284)\n\t\t + W(2, 1035507577, -1134799464, 1050921813, 1017516694)\n\t\t + W(3, -1083278305, -1113237716, -1166618304, 1036440480)\n\t\t + W(4, -1111381151, -1109420173, -1090777253, 1058584025)\n\t\t + W(5, 1053793791, 1038764911, 1011564912, -1125528356) + W(6, -1121770975, 1040932752, 1042678624, 1023914089)\n\t\t + W(7, -1114891124, 1024022374, 1003125716, -1148371520);\n\tsum2 =\n\t\tW(0, -1113253112, 1017383795, -1098397046, -1105653936) + W(1, 1043748521, -1130700635, 1040646747, -1134989990)\n\t\t+ W(2, -1114468103, -1105748811, 1042070822, 1062131274)\n\t\t+ W(3, -1088478625, 1039489157, -1112481937, -1118262998) + W(4, 1046106511, 1042779663, 1049941293, 1049624420)\n\t\t+ W(5, -1093962905, -1102421728, -1120850913, -1124158867)\n\t\t+ W(6, 1029911106, -1111927878, -1106009556, -1113543954)\n\t\t+ W(7, -1110290200, 1032413051, 1032000907, 1027657598);\n\tWS(1055738180, 1034492849);\n\tsum1 = W(0, -1130881323, -1114926341, 1041145701, -1109424308)\n\t\t + W(1, -1112247108, -1112831856, -1114665081, -1121239258)\n\t\t + W(2, -1111251428, -1128721888, -1099536939, 1051914904)\n\t\t + W(3, 1058202118, 1051860704, 1026763985, -1130346670) + W(4, 1042092597, 1039888312, 1055510938, -1131357522)\n\t\t + W(5, -1089549409, -1104754439, -1109075065, -1117425768)\n\t\t + W(6, 1006685651, -1103919286, -1104400342, -1113433279)\n\t\t + W(7, 1022435899, -1139575663, -1129253153, -1142807791);\n\tsum2 = W(0, -1110077216, 1036549925, -1103858204, 1011211476) + W(1, 1008268344, 1023981444, 1010863636, 1034090633)\n\t\t + W(2, -1118181126, -1116107500, 1042025735, 1056055130)\n\t\t + W(3, -1090440399, -1117941654, 1001166765, -1130298175)\n\t\t + W(4, 1049383148, 1034915268, 1044994486, 1058209450)\n\t\t + W(5, -1098004228, -1099569204, -1121873216, -1107211558)\n\t\t + W(6, -1110853226, -1119533468, -1101175453, -1113779586)\n\t\t + W(7, -1109857174, 1034145803, 1026441284, 1033292040);\n\tWS(1056018244, -1109435672);\n\tsum1 = W(0, 1028147653, 1025593127, 1019179235, 1042157337)\n\t\t + W(1, -1110312463, 1019247612, -1120006735, -1144225212)\n\t\t + W(2, -1121172806, -1108190871, 1044333967, -1098176216)\n\t\t + W(3, 1052400296, 1041545807, -1152440548, 1040728133)\n\t\t + W(4, -1156629272, 1019648283, -1105021998, -1084323638)\n\t\t + W(5, 1052575762, -1144495302, 960835398, -1117757541) + W(6, 1029524274, 998861994, -1126875818, 1048944704)\n\t\t + W(7, -1112766254, 1027979993, -1115664295, -1127435447);\n\tsum2 = W(0, -1133465842, 1037565600, -1114814180, 1023511793)\n\t\t + W(1, 1028077461, 1005396583, 1022326514, -1149118303) + W(2, 1020564842, -1103457632, 1043192653, 1057142397)\n\t\t + W(3, -1101196001, 1038394412, -1113456189, -1137100532)\n\t\t + W(4, -1109452473, 1042355402, -1103393926, 1042803000)\n\t\t + W(5, -1093624788, -1094252679, 1041416796, 1021621854) + W(6, 1020759546, 1025892619, 1033812672, 1040091206)\n\t\t + W(7, -1104532905, -1153222990, -1130818626, 1028700597);\n\tWS(1058353218, 1042996167);\n\tsum1 =\n\t\tW(0, 1024954343, 1015847030, 1036476495, -1110665693) + W(1, -1121159378, -1108641009, -1137738249, -1102251787)\n\t\t+ W(2, -1094124879, -1107919793, -1097421664, 1048862286) + W(3, 1033331871, 1049066134, 1023600450, 1041347474)\n\t\t+ W(4, 1052314513, -1138612357, 1044445371, 1050687635) + W(5, -1102818752, 998963493, -1113493234, 1023627001)\n\t\t+ W(6, 1009270680, -1116609353, -1202266712, -1105910956)\n\t\t+ W(7, 1018868510, -1115498359, 1016588291, -1119202191);\n\tsum2 = W(0, -1126808420, 980939457, -1123796075, 1037410136)\n\t\t + W(1, 1002142140, -1139817292, -1134378480, -1142652688)\n\t\t + W(2, -1120540574, -1110048722, 1033167871, -1106277561)\n\t\t + W(3, -1166268225, -1116671070, -1143978200, 1011961658)\n\t\t + W(4, -1098896413, -1075343834, -1086151008, 1075199384)\n\t\t + W(5, 1058982643, -1127002394, 1028067074, 1027681870) + W(6, 1039187917, -1110843188, 1032482295, 991431992)\n\t\t + W(7, -1123555130, -1163241473, 1021947375, -1117918702);\n\tWS(1065448321, -1123448424);\n\tsum1 = W(0, 1033675765, 1010310940, -1135157253, -1130617674)\n\t\t + W(1, 1045868403, 1037821135, 1029877230, -1107423852) + W(2, 1042933049, 1048779866, 1053164479, 1054681092)\n\t\t + W(3, -1088933089, -1096402228, -1112063319, -1132569296)\n\t\t + W(4, -1113419593, -1098481070, -1085464413, 1025088582)\n\t\t + W(5, 1052703622, 1043193000, 1039463880, 1039088003) + W(6, -1107290229, 1033876859, 1028430645, -1126554424)\n\t\t + W(7, -1113028565, -1114258373, -1131689691, 992526257);\n\tsum2 = W(0, 992398551, 1027463162, -1110914988, -1119896935)\n\t\t + W(1, -1100289244, 1024218964, -1111923136, 1036361104)\n\t\t + W(2, -1118632904, -1115592424, -1094541616, 1058308065)\n\t\t + W(3, 1052134722, -1139018826, 1043392525, -1114310803)\n\t\t + W(4, -1109433050, 998577524, -1095126430, 1059518579) + W(5, 1038527426, -1109739820, 1004586244, 1020338285)\n\t\t + W(6, -1143518596, -1122494561, -1116426235, -1103007923)\n\t\t + W(7, -1121464784, -1115201103, -1120049915, -1128089075);\n\tWS(1050696068, -1101686596);\n\tsum1 =\n\t\tW(0, 1030829490, 1025629886, 1028506281, 1044306231) + W(1, 1022456523, 1033300499, 1025382374, -1126351518)\n\t\t+ W(2, 1032239887, 1039198082, 1035777849, -1094476563) + W(3, 1053256444, -1108777674, -1125496907, 1013615278)\n\t\t+ W(4, 1015204626, 1033819234, 1052890832, -1083567844) + W(5, -1095460989, 1028011096, -1117978119, 1022077689)\n\t\t+ W(6, -1113406309, 1030627629, -1111973334, 1049080890)\n\t\t+ W(7, 1026744658, 1009469122, 1014700692, -1117484787);\n\tsum2 = W(0, -1123705959, 1033160533, 1021465594, 1019539230)\n\t\t + W(1, -1115261066, 1030761443, 1021971134, -1122567677)\n\t\t + W(2, -1116235595, 1028975273, -1105037500, 1055127070) + W(3, 1039390029, -1104569658, 1024962787, 999405400)\n\t\t + W(4, 1034058997, -1094422871, -1106553103, 1036912081)\n\t\t + W(5, -1113630050, 1034816057, -1131788338, 1014360364)\n\t\t + W(6, -1139597844, -1122943830, -1103106284, 1037858431)\n\t\t + W(7, 1034945731, 997585040, -1137214108, 1023175710);\n\tWS(1058623938, 1044469574);\n\tsum1 = W(0, 1045615020, 1035147318, 1047639223, 1050348390) + W(1, 1030161626, 1044899106, -1132009366, 1044251461)\n\t\t + W(2, -1108426137, -1141312974, -1105886038, -1079944741)\n\t\t + W(3, 1039515483, 1021302290, -1167333042, 991624716)\n\t\t + W(4, -1135193336, 1044306859, -1122107414, -1085342603)\n\t\t + W(5, -1100470855, -1110191310, -1180200419, -1100960996)\n\t\t + W(6, 1044911680, 1030580258, 1043270872, 1051720601) + W(7, 1041363874, 1041545713, 1040848727, 1042676794);\n\tsum2 = W(0, -1126998679, -1112584470, -1125720699, 1026650453)\n\t\t + W(1, -1098785634, 1035354845, -1103280207, -1117822839)\n\t\t + W(2, -1097249916, -1101780852, -1124055793, 1050619160)\n\t\t + W(3, 1044368398, -1115949975, 1036370417, 1013784870) + W(4, 1048536708, 1037003529, 1040132893, 1058508674)\n\t\t + W(5, 1037637019, -1106591466, -1109803757, -1104576316)\n\t\t + W(6, -1118913729, -1122142287, 1008038822, -1117660887)\n\t\t + W(7, -1121056345, 1006096779, -1116815483, -1119752481);\n\tWS(-1092650820, -1093598320);\n\tsum1 = W(0, -1126483198, -1136033646, 1019177644, -1119240794)\n\t\t + W(1, -1095523617, -1108863241, -1113123137, -1126435736)\n\t\t + W(2, -1111185837, -1107026560, -1096033968, -1101350837)\n\t\t + W(3, 1057301262, 1042409572, 1040959081, 1035081684) + W(4, 1032567139, -1113511425, 1059010394, 1042563567)\n\t\t + W(5, -1131092420, -1108714423, -1114101506, -1106962654)\n\t\t + W(6, 1028684103, 1034982933, 1025024233, -1118967697)\n\t\t + W(7, -1118984463, 1023629806, -1128061252, -1142697342);\n\tsum2 = W(0, -1118904411, -1158272012, 1013234849, 1030464194)\n\t\t + W(1, -1106482941, 1025489390, -1129648553, 1028128070)\n\t\t + W(2, -1134435633, -1107189637, -1120249847, 1057018316)\n\t\t + W(3, 1048792270, 1024832618, 1031754422, -1125347555) + W(4, -1102280300, 992574886, -1083559741, 1062197029)\n\t\t + W(5, 1040811198, -1114392001, 1031998303, 1029475610)\n\t\t + W(6, -1150017862, -1122133752, -1146867651, -1097179586)\n\t\t + W(7, -1115216614, 1021081809, -1112304821, 993658022);\n\tWS(1058173058, 1066808129);\n\tsum1 = W(0, -1107348220, -1099127505, -1103913530, -1113478482)\n\t\t + W(1, 1040539139, -1113016318, -1120477164, 1000206250) + W(2, 1035236882, 1036577094, 1044208414, 1029276252)\n\t\t + W(3, -1097605967, -1100723463, 1029619500, -1122925746)\n\t\t + W(4, 1041707116, 1043659283, 1046852514, 1039741986) + W(5, 1044710619, 1043551606, -1133641268, 994694705)\n\t\t + W(6, -1121094224, -1105652573, -1107481241, -1121409754)\n\t\t + W(7, 1032545388, -1115290924, 1013015214, 950366748);\n\tsum2 = W(0, -1094008764, -1105723160, -1087139249, 1052425931)\n\t\t + W(1, 1056772124, 1034445536, 1012087213, 1037095176) + W(2, 1034130054, -1120175931, 1064201383, 1002356625)\n\t\t + W(3, -1089869944, -1114835724, -1123264660, -1129286431)\n\t\t + W(4, 1031813868, 1042930394, -1110465854, -1098172076)\n\t\t + W(5, 1043061462, -1102352886, 1040830367, -1111397998)\n\t\t + W(6, 1011760553, -1124103013, -1131636845, 1006833373) + W(7, 1007319139, 1014923704, 1016549099, 993051546);\n\tWS(1061928770, 1027279769);\n\tsum1 = W(0, 1034406912, -1113862823, 1039933724, -1111710246)\n\t\t + W(1, -1111349982, -1109997378, -1113344954, -1114279935)\n\t\t + W(2, -1100123699, -1162686055, -1096018034, 1056786929)\n\t\t + W(3, 1056534441, 1044907121, 1022437288, 1031029722) + W(4, 1029564087, -1109708970, 1050604450, 1037263862)\n\t\t + W(5, -1098017894, 1038664521, -1116167797, 1027389387)\n\t\t + W(6, 1033006716, -1128579510, 1007368299, -1109765633)\n\t\t + W(7, -1113416432, -1101798872, -1105438789, -1113862289);\n\tsum2 = W(0, 1026006751, -1108403600, 1035073774, -1122004937)\n\t\t + W(1, 1035952663, 1015050843, -1124438030, -1133483016)\n\t\t + W(2, -1115270559, 1031363022, -1104904057, 1031769509)\n\t\t + W(3, -1106336513, 1027760004, 1019789656, -1118390529) + W(4, 1024783342, 1033798448, 1037041630, 1039898935)\n\t\t + W(5, 1057393141, 1027825620, -1121305243, -1128829234)\n\t\t + W(6, -1130316822, -1139293944, 1025961213, 1021529214)\n\t\t + W(7, -1112547455, -1096601581, -1105185563, -1106336479);\n\tWS(1053752708, 1043937257);\n\tsum1 = W(0, -1114168512, -1112521242, -1097902456, -1095288434)\n\t\t + W(1, -1094410051, -1114520925, -1115668990, -1105295129)\n\t\t + W(2, -1105170221, -1098204331, 1046102006, 1066642253)\n\t\t + W(3, 1054367941, -1100810554, -1121904763, 1031167873)\n\t\t + W(4, 1031197758, -1104934543, 1042705158, 1070561411)\n\t\t + W(5, 1038022813, 1032266099, -1114135854, -1123380722)\n\t\t + W(6, -1109039567, -1113606305, -1098767200, -1089903115)\n\t\t + W(7, -1100846418, -1108028099, -1115062077, -1118408200);\n\tsum2 = W(0, -1113064749, -1144787532, -1115681675, 1041111385)\n\t\t + W(1, -1130408019, -1136936214, 1022660811, -1121651306)\n\t\t + W(2, -1090786559, -1094418907, 1009808406, 1053253351)\n\t\t + W(3, 1015714915, 1020895003, -1117683238, 1028089270) + W(4, 1038982572, -1102980167, 1041806798, 1054413523)\n\t\t + W(5, 1024043560, -1114777947, 1021536435, -1123371786)\n\t\t + W(6, -1136678198, -1129681067, 1023762114, 1035936399)\n\t\t + W(7, -1114747797, 1001107148, -1129865467, 1019986163);\n\tWS(-1077899937, -1095640595);\n\tsum1 = W(0, 1038010313, 1026389718, 1040451742, 1038149954) + W(1, 1012098034, 1041468735, 1036152598, 1035936827)\n\t\t + W(2, 1032811586, 1036208246, -1100196466, -1112596654)\n\t\t + W(3, 1057575303, 1025151035, -1108998502, -1117388883)\n\t\t + W(4, -1097475626, -1123908524, 1051006893, -1096170677)\n\t\t + W(5, -1089360567, -1102384270, -1117118702, 1019229383)\n\t\t + W(6, 1033727032, -1117534996, -1116405267, 1043001855)\n\t\t + W(7, 1035677341, -1122502968, 959089718, -1122221082);\n\tsum2 = W(0, 1014408115, 1031626038, 1042237958, 1024306585)\n\t\t + W(1, 1005347958, -1108949069, -1129272561, -1155665460)\n\t\t + W(2, 1037203464, -1111295182, -1111204470, 1046645930)\n\t\t + W(3, 1036175171, -1102667672, -1105300490, -1098212068)\n\t\t + W(4, -1112987386, 1033188726, 1033012571, 1040504174) + W(5, 1022488131, -1113110436, 1012028387, 1026136762)\n\t\t + W(6, 1006518986, 998532726, 1002908510, -1142339005) + W(7, 1028667874, 1028194944, 991631364, -1118275484);\n\tWS(1052188868, -1105025774);\n\tsum1 = W(0, 1026006805, -1127133881, -1111238899, 1039605133) + W(1, 1036489378, 1027868467, 1028341284, 1040022103)\n\t\t + W(2, 1053332527, 1046329385, 1054121990, 1041936861)\n\t\t + W(3, -1098161716, -1100202284, -1114580002, -1112308133)\n\t\t + W(4, -1093124457, -1102124985, -1093232644, -1108714798)\n\t\t + W(5, 1047964177, 1042303686, 1042593657, 1033044781) + W(6, 1016895952, 1015047702, 1031180874, -1123947762)\n\t\t + W(7, -1116894641, -1100188956, -1114267170, -1120167377);\n\tsum2 = W(0, -1098242390, -1090155459, -1080159437, -1083172772)\n\t\t + W(1, 1043663143, 1066420271, 1065821018, 1052081121) + W(2, 1038124206, -1111850856, -1111691725, 1045262621)\n\t\t + W(3, -1107342132, -1115094311, 1045364599, 1039539139)\n\t\t + W(4, 1035251585, -1110800852, 1033462452, -1116129960)\n\t\t + W(5, -1117401930, 1036826747, -1121811075, 1031476522)\n\t\t + W(6, -1146833441, 1015159009, -1114532383, 1037947101)\n\t\t + W(7, -1115149205, -1118954060, -1159263732, -1144829650);\n\tWS(-1102870152, 1022622513);\n\tsum1 = W(0, 1055644087, 1035394969, 1045649819, 1045987408) + W(1, 1030573816, 1031111560, 1035095156, 1041054212)\n\t\t + W(2, -1105950504, -1108831748, 1041190721, 1039545500) + W(3, 1049616144, 1056957379, 1047436506, 1055423038)\n\t\t + W(4, -1114669622, 1043185370, -1098060649, -1093030704)\n\t\t + W(5, -1093912525, -1084377448, -1093512673, -1094643096)\n\t\t + W(6, -1099940547, 1029691760, -1105006556, 1034170571)\n\t\t + W(7, 1028754581, 1032315050, 1008186016, 1002093997);\n\tsum2 =\n\t\tW(0, -1084145430, 1037387540, -1091365810, -1096604175) + W(1, -1095647742, 1043123500, -1106696806, 1053814194)\n\t\t+ W(2, 1070336926, -1098862516, 1050914492, 1068317532) + W(3, 1054262144, -1083131387, 1046449081, -1081281727)\n\t\t+ W(4, 1055168354, -1095516697, 1050568943, 1069441477)\n\t\t+ W(5, -1090345251, -1085743049, 1048225937, -1086819148)\n\t\t+ W(6, -1086613448, 1056626754, -1097405209, -1099937369)\n\t\t+ W(7, -1106692290, 1045945631, -1106594556, 1058187197);\n\tWS(-1069426976, -1120848841);\n\tsum1 = W(0, 1036938172, 1035259664, 1047028417, 1052190352) + W(1, 1041456894, 1039915051, 1015525967, 1036563112)\n\t\t + W(2, 1037072255, 997868135, 1031706371, -1092031243) + W(3, 1045414333, 1026900661, -1119324359, 1015048091)\n\t\t + W(4, -1103659451, 1049019033, -1095105906, -1081236347)\n\t\t + W(5, -1090672009, 1032303833, 1008361890, -1146656500) + W(6, 1032159990, 1025792718, 1020529436, 1049696791)\n\t\t + W(7, 1038916826, 1035011641, 1039253091, -1145253028);\n\tsum2 =\n\t\tW(0, -1131675185, -1130807793, -1137547874, -1119117212)\n\t\t+ W(1, -1138868050, -1139313154, -1127085641, -1144490820)\n\t\t+ W(2, 1029191442, -1132163681, -1115933340, -1086087178)\n\t\t+ W(3, -1112002886, 1014175682, 1023290113, -1135148482) + W(4, -1114450600, 1018117017, 1033829647, 1063181450)\n\t\t+ W(5, 1026390676, -1143924164, -1138352802, 1007342770) + W(6, 1024984252, -1115031522, 1037592454, 1006729954)\n\t\t+ W(7, 1017409241, -1134939410, -1125048401, 974288160);\n\tWS(-1092511940, 1056045775);\n\tsum1 = W(0, 1034351639, 1036571263, 1026078569, 1044122211)\n\t\t + W(1, -1145831724, -1113387827, 1018446892, -1119385695)\n\t\t + W(2, -1122413709, -1107220477, -1123595634, -1099810889)\n\t\t + W(3, 1052039823, 1050308552, 1032192235, 1047960215) + W(4, 1034842253, 1031880235, 1048156900, -1106066347)\n\t\t + W(5, -1096815763, -1095462256, -1104039774, -1105858435)\n\t\t + W(6, -1109413949, -1128037178, -1106487287, 1038991202)\n\t\t + W(7, 1016305349, 1039930976, -1145490603, -1115254417);\n\tsum2 = W(0, -1129634341, -1125984965, -1131211232, 1032304695)\n\t\t + W(1, -1126835561, -1135310730, 1030376830, -1115706548)\n\t\t + W(2, 1017418680, -1145267460, 1019434782, -1112808134)\n\t\t + W(3, 1027589163, -1164412329, 1012340975, 1024240430) + W(4, 1033383321, -1108053053, 1035592777, 1017461836)\n\t\t + W(5, -1125819067, 1048432434, -1132396034, 1037084632)\n\t\t + W(6, -1086264457, -1078809375, -1073693037, -1098879629)\n\t\t + W(7, 1071963841, 1073307463, 1053688201, -1110470100);\n\tWS(1042257800, -1115776325);\n\tsum1 =\n\t\tW(0, -1146926115, 1032352980, -1109330569, -1114314051) + W(1, 1039411448, -1111850704, 1040829028, -1123393177)\n\t\t+ W(2, -1107281138, -1098526814, 1043068219, -1109412128)\n\t\t+ W(3, -1097266597, 1039093055, -1100632132, -1104810789)\n\t\t+ W(4, 1038400362, 1045994468, -1111135982, -1144690495) + W(5, 1057956169, -1128243973, 1048043508, 1025450855)\n\t\t+ W(6, 1010013391, -1117084567, 1043908518, -1120663934)\n\t\t+ W(7, -1098521248, -1122589083, 1029880783, 997333453);\n\tsum2 = W(0, 1029402915, -1131137316, 1031911869, 1023173531)\n\t\t + W(1, 1023792141, -1123803784, 1014267385, -1128776324)\n\t\t + W(2, -1139977433, -1118253197, -1122896144, -1122404168)\n\t\t + W(3, -1098422336, 1037623928, -1106514445, 1036548666)\n\t\t + W(4, -1102627522, 1040550677, -1088615745, 1061434285) + W(5, 1075510495, 1067804318, 1045458757, 1035151624)\n\t\t + W(6, 1041328458, -1112092070, 1058291503, -1087193418)\n\t\t + W(7, -1072676007, -1079538943, -1106625048, -1107997040);\n\tWS(1062572194, -1113128476);\n\tsum1 = W(0, 1025054504, 1032745069, -1111717923, -1115121012)\n\t\t + W(1, 1039928305, -1108655721, 1042636501, -1121873307)\n\t\t + W(2, -1105909778, -1098454710, 1040855323, -1102647392)\n\t\t + W(3, -1094658254, 1048800872, -1098634802, -1107065062)\n\t\t + W(4, 1035303099, 1048922046, -1111940687, 1030883818) + W(5, 1056642050, -1114397119, 1045405821, 1028123977)\n\t\t + W(6, 1030405814, -1107189334, 1047137430, -1120733568)\n\t\t + W(7, -1102007432, -1121522301, 1030940241, -1129454014);\n\tsum2 =\n\t\tW(0, -1114559261, 1015935669, -1119968612, 1034980574) + W(1, -1134322843, 1031387619, -1130912561, 1028413753)\n\t\t+ W(2, -1138228901, 1029828517, -1110320033, -1095660939)\n\t\t+ W(3, 1043622789, -1103434641, 1043842027, -1104010102)\n\t\t+ W(4, 1049277284, -1107208114, 1062476231, -1090290563)\n\t\t+ W(5, -1071408041, -1079628774, -1100585862, -1110973692)\n\t\t+ W(6, -1102431407, 1036930870, -1086736101, 1061616421) + W(7, 1075586093, 1068626110, 1036267766, 1043722127);\n\tWS(1060774594, 1031131703);\n\tsum1 = W(0, -1107942447, -1105426838, -1102134060, -1108928460)\n\t\t + W(1, 1030069408, -1109912496, -1111247296, 1016389396) + W(2, 1045023814, 1048858052, 1057375412, 1053310638)\n\t\t + W(3, -1086363546, -1121814959, -1121700033, -1112979299)\n\t\t + W(4, 1022102280, 1019498368, -1089780107, 1054202179) + W(5, 1056436400, 1045750878, 1017717699, -1115080444)\n\t\t + W(6, -1109726834, -1115599332, 1024119623, -1117349999)\n\t\t + W(7, -1105657043, -1112636534, 1020787328, 1034439495);\n\tsum2 = W(0, 1036474850, -1117613837, 993333704, -1124280889)\n\t\t + W(1, -1120272689, -1147158916, -1136721538, 1006917274)\n\t\t + W(2, -1115841609, 1015990489, -1114813616, 1046600726)\n\t\t + W(3, -1127188969, -1101686418, -1106242516, -1111325506)\n\t\t + W(4, -1115206474, -1121605429, 1041891165, 1051997378)\n\t\t + W(5, -1122067781, 1035140408, 1020051521, -1113122752)\n\t\t + W(6, 1027456791, -1155010952, -1115442992, -1145891812)\n\t\t + W(7, -1135549634, 1009536026, 1019245009, 1017045509);\n\tWS(1060194466, -1100017114);\n\tsum1 = W(0, -1107280066, -1110455654, -1108454907, -1102634810)\n\t\t + W(1, -1103570769, -1103041901, -1108837738, -1103753711)\n\t\t + W(2, -1105747811, -1101985628, 1018718942, -1106901713)\n\t\t + W(3, 1046100821, 1055521256, 1047438565, 1059153514) + W(4, 1059466063, 1043733237, 1057500851, 1036011765)\n\t\t + W(5, 1016328357, -1113318903, -1139455183, -1111475141)\n\t\t + W(6, -1103466926, -1106475814, -1106517942, -1094721336)\n\t\t + W(7, -1110005824, -1108487663, -1116101330, -1118902112);\n\tsum2 = W(0, -1134258178, 1016306377, -1119701101, -1121134035)\n\t\t + W(1, -1110905440, -1123898542, -1120388479, -1131815221)\n\t\t + W(2, -1116481221, -1123533287, -1150894505, 1050682292)\n\t\t + W(3, 1003934853, 1016401385, 1010383122, 1025651043) + W(4, 1032034504, -1130975497, -1129842733, 1050657130)\n\t\t + W(5, 1032136922, -1114630639, -1135861370, -1115813895)\n\t\t + W(6, -1123729210, -1124034546, -1119840142, -1118895679)\n\t\t + W(7, -1115758498, -1135589646, -1140270714, -1126135829);\n\tWS(-1094780356, -1096037829);\n\tsum1 = W(0, -1094564683, 998269945, -1106439374, -1099790159)\n\t\t + W(1, 1039955171, -1116696534, 1026955814, -1132274079)\n\t\t + W(2, 1051641704, 1048993133, -1105882161, 1021385644)\n\t\t + W(3, -1110801281, -1093602407, 1040928722, -1094848202)\n\t\t + W(4, 1042321778, -1097112145, 1049078036, 1039341071) + W(5, 1035258371, 1056382370, 1035779188, 1053064740)\n\t\t + W(6, -1109647669, 1034946343, -1120792141, -1101585581)\n\t\t + W(7, 1020526630, -1124429730, -1106396689, 1027970323);\n\tsum2 =\n\t\tW(0, -1137596463, -1129205035, -1126343315, 1039861741) + W(1, -1126312459, -1123052878, 996868828, -1125851727)\n\t\t+ W(2, 1029577680, -1107142480, 1047351132, -1098569120)\n\t\t+ W(3, 1038608299, -1116615219, -1112533224, -1107291575) + W(4, 1038439017, 1015352075, 1070713407, 1073186805)\n\t\t+ W(5, 1038004689, -1073950732, -1077903771, -1107100148)\n\t\t+ W(6, -1113448033, 1012914617, -1114069586, 1046610276)\n\t\t+ W(7, -1144677526, 1007385420, -1108941862, 1037961064);\n\tWS(1053603780, -1115461008);\n\tsum1 = W(0, -1137418943, 1030817204, 1016256157, 1021933093)\n\t\t + W(1, -1107174285, 1024187323, -1121722108, 1027865701)\n\t\t + W(2, -1097293942, -1095449155, -1092155167, 1049349309)\n\t\t + W(3, -1125654285, -1107838901, -1112035518, -1115980033)\n\t\t + W(4, 1049585228, 1046317951, 1056038503, 1058232189)\n\t\t + W(5, -1109114845, -1104780729, -1104946775, -1096840466)\n\t\t + W(6, 1014991997, -1134044169, -1118818050, -1129232467)\n\t\t + W(7, 1020919504, 1042320778, 1033110781, 1040979266);\n\tsum2 = W(0, 1033231462, -1122607696, -1126070520, 1021774826)\n\t\t + W(1, -1120788802, 1023918789, -1127228708, -1155086158)\n\t\t + W(2, -1115237141, 1031925962, 1042960949, 1053325526)\n\t\t + W(3, -1107200469, -1112013861, -1114604471, -1120863174)\n\t\t + W(4, -1111323807, -1115623012, -1119706606, 1049744257)\n\t\t + W(5, 1005054791, 1026671690, -1107279270, -1119270266) + W(6, 1022510111, 1016053183, 999155791, -1130112624)\n\t\t + W(7, -1116359926, -1115047971, -1133439199, -1114777589);\n\tWS(1049944452, -1118177299);\n\tsum1 = W(0, 1004954534, 1034605113, 1042179871, 1046072096)\n\t\t + W(1, -1119832136, -1115172412, 1021914321, -1125265763)\n\t\t + W(2, -1113835168, -1117712807, 1049772083, -1089565448)\n\t\t + W(3, -1087875066, 1028249398, -1115173764, 1016032028)\n\t\t + W(4, -1131743895, 1044152226, -1105992217, -1102704504)\n\t\t + W(5, 1051885673, 1023284205, 1032417701, 1023720959) + W(6, 1036431958, -1113909672, 1034469319, 1047091406)\n\t\t + W(7, -1117867957, 1037431354, -1128742159, 1027934165);\n\tsum2 =\n\t\tW(0, -1122048832, -1102028824, -1098388207, 1042109429) + W(1, 1037898289, 1035691269, -1120157845, 1026959129)\n\t\t+ W(2, 1053033259, 1033866732, -1083784972, 1035235216) + W(3, 1056376564, -1103367787, 1034674212, -1128193065)\n\t\t+ W(4, -1121809206, 1014156522, 1055740053, -1104400409) + W(5, -1126110057, -1120368299, 1015248281, 984939091)\n\t\t+ W(6, -1100778293, 1033801710, -1112352078, 1046653262)\n\t\t+ W(7, -1111071353, 1025902829, 997672170, -1153716682);\n\tWS(-1165444096, -1119710264);\n\tsum1 = W(0, 1042994118, 1034244741, 1037778378, 1041081798) + W(1, 1016348739, 1044760836, -1126699940, 1049969601)\n\t\t + W(2, 1051115175, 1042802936, 1051394930, -1114386041) + W(3, 1044466585, 1039392600, 1042064672, -1111502020)\n\t\t + W(4, -1098028621, 1040688824, -1088773549, -1087521946)\n\t\t + W(5, -1089153334, -1102706330, 987979863, -1112154588)\n\t\t + W(6, -1108071955, 1032455940, -1120702728, 1029133552)\n\t\t + W(7, 1045508004, -1117660781, 1043978432, -1112358151);\n\tsum2 =\n\t\tW(0, -1113048377, -1169925094, 1033233769, 1022227231) + W(1, 973479782, 1025958326, -1175748301, -1108998850)\n\t\t+ W(2, 1060341068, 1041247352, 999982909, -1081289783) + W(3, -1090689511, 1036288861, 1044034366, 1055733822)\n\t\t+ W(4, 1067872749, 1057359743, -1089189226, -1075624869) + W(5, -1088323315, 1048635178, 1052769876, 1060416891)\n\t\t+ W(6, -1107478445, -1121919154, -1112420946, 1030919570)\n\t\t+ W(7, 1049895882, -1108655271, 1042449401, -1098757157);\n\tWS(-1077066897, -1138646112);\n\tsum1 =\n\t\tW(0, 1024267775, 1009759453, 1034803609, -1105412061) + W(1, -1118414542, -1104989395, 1000523125, -1099033634)\n\t\t+ W(2, -1092381223, -1106693383, -1096180043, 1042083852) + W(3, 1031147625, 1050244398, 1024065726, 1045342865)\n\t\t+ W(4, 1053014632, 1027242622, 1051220983, 1053447283) + W(5, -1105039519, 1023828386, -1110843104, 1028746421)\n\t\t+ W(6, 1025453154, -1118474373, -1149202983, -1101608091)\n\t\t+ W(7, 1010847661, -1113932053, 1023831870, -1113130950);\n\tsum2 = W(0, 1013870164, -1133465912, 1030888661, -1118337904)\n\t\t + W(1, 1030672570, -1156287199, 1014316520, -1145191680)\n\t\t + W(2, 1032969077, 1032956180, -1118666398, -1095979039)\n\t\t + W(3, -1102611716, 1041525268, -1121602320, -1129518532)\n\t\t + W(4, 1050672871, 1076869477, 1063553933, -1069322680)\n\t\t + W(5, -1088200357, 1026168517, -1129519600, -1120095414)\n\t\t + W(6, -1105627059, 1037977967, 1017901782, 1026329625)\n\t\t + W(7, -1169512700, -1153801247, -1126632288, 1031405165);\n\tWS(1059038658, 1028594353);\n\tsum1 = W(0, 1030613999, -1132336275, -1117493948, 1038489844) + W(1, 1028206993, 1044643916, 1007880004, 1043840791)\n\t\t + W(2, 1027001704, 1035531624, 1032402678, -1152158733)\n\t\t + W(3, -1098315241, -1088517514, -1103996748, -1091506711)\n\t\t + W(4, -1089493909, -1094328658, -1106243079, 1052296065)\n\t\t + W(5, 1042911580, 1049587060, 1035409673, 1044000434) + W(6, 1046010101, 1026431736, 1043051950, 1044337864)\n\t\t + W(7, 1028671678, 1032918142, -1137633217, 1036291743);\n\tsum2 =\n\t\tW(0, -1118922878, 998383694, -1117830208, -1123342062) + W(1, -1109116635, -1124252768, -1104593856, 1026377322)\n\t\t+ W(2, -1105269646, -1109062791, 1013977255, 1052555170) + W(3, 1041098100, 1040874722, 1030669290, 1040986964)\n\t\t+ W(4, 1050974192, 1002191246, 1046707356, 1051646415) + W(5, 1036678597, -1098775079, -1122565606, -1098750401)\n\t\t+ W(6, -1110275215, -1111322692, -1114811922, -1114439732)\n\t\t+ W(7, -1108145020, -1121186646, -1115485971, -1115223671);\n\tWS(-1089038754, 1070610314);\n\tsum1 = W(0, 1006818038, -1126323612, 1015379312, -1107760774)\n\t\t + W(1, -1110158738, -1104391397, -1114553627, -1113068735)\n\t\t + W(2, -1112569734, -1099849389, -1090696922, -1101892281)\n\t\t + W(3, 1028620400, 1047988033, 1043536901, 1039930893) + W(4, -1110914124, 1036085850, 1053776546, 1045400523)\n\t\t + W(5, 1040930437, -1132043583, -1119469430, -1114659286)\n\t\t + W(6, 1038135388, 1043645143, 1040122382, -1118717763) + W(7, 1002760462, 1016954112, 974497054, -1139206280);\n\tsum2 = W(0, -1120363159, -1119340063, -1119078724, 1035843986)\n\t\t + W(1, 1035175754, -1106992039, -1128507307, -1129270833)\n\t\t + W(2, 1029972206, 1020623843, -1137841818, -1094446255)\n\t\t + W(3, 1049035968, -1128810267, -1123633215, -1123131987)\n\t\t + W(4, -1135126990, 1026762268, 1064611900, 1017486399)\n\t\t + W(5, -1094749382, 1039608352, -1194223384, -1197948696)\n\t\t + W(6, -1111466112, -1099605665, -1102195223, 1042926586)\n\t\t + W(7, 1014516782, -1112006203, -1136077530, -1129209333);\n\tWS(-1120775200, -1094115106);\n\tsum1 = W(0, -1117113151, -1133090109, -1096583070, -1098081804)\n\t\t + W(1, -1092969217, -1119648950, -1113650835, -1105675228)\n\t\t + W(2, -1112921839, -1099947345, 1050818928, 1057531117) + W(3, 1051254629, -1098660371, 926574177, 1035449878)\n\t\t + W(4, 1046145098, -1097096777, 1048882552, 1067142180) + W(5, 1054137781, 1035250696, -1115652196, 1024424221)\n\t\t + W(6, -1107062579, -1151313622, -1100319675, -1094480203)\n\t\t + W(7, -1100195749, -1111825641, -1118408614, -1114839546);\n\tsum2 =\n\t\tW(0, -1122846232, 1002183233, -1129631292, -1112395279) + W(1, 1009610216, 1001287537, -1122731504, -1139829356)\n\t\t+ W(2, 1031116535, -1113707943, 988543074, -1080457005) + W(3, -1097715519, 1037716560, -1112112395, 1031806339)\n\t\t+ W(4, -1118531646, 1034244245, 1027624889, 1064104967) + W(5, 1052372051, 1011412016, 1031591085, -1128697528)\n\t\t+ W(6, 1030028661, -1116699784, 1039671963, 1037992478)\n\t\t+ W(7, -1115290878, 1016046512, -1122589730, 1022404309);\n\tWS(-1083041826, -1088446577);\n\tsum1 =\n\t\tW(0, -1112868382, -1139686881, 1037998481, 1035817611) + W(1, 1028314191, -1112414119, -1123391616, -1152205450)\n\t\t+ W(2, -1138041180, 998832115, -1108164766, -1106005004) + W(3, 1054394898, 1042585939, 1037009680, 1027830053)\n\t\t+ W(4, 1041478665, 1026886463, 1018740405, -1092605991)\n\t\t+ W(5, -1096954228, -1105339656, -1122534560, -1128384493)\n\t\t+ W(6, -1123809603, 1007627162, -1137074328, 1036557383) + W(7, 1043199331, 1016960213, 949272012, -1161448845);\n\tsum2 =\n\t\tW(0, 1036010005, -1112615912, -1108103320, 1026422893) + W(1, 1043952518, -1112407780, 1025610945, -1142574731)\n\t\t+ W(2, -1080772886, -1080108640, 1042883784, 1067023817) + W(3, 1065911618, 1043418298, -1121396391, 1019038275)\n\t\t+ W(4, -1110295637, 1033469827, 991295446, -1106557392) + W(5, 1015020021, -1113416335, -1118133995, 1027619053)\n\t\t+ W(6, -1113551367, -1118689741, -1123719569, 1039881895)\n\t\t+ W(7, 1028046949, 986544491, 1028536389, -1114551687);\n\tWS(1059656866, 1032254503);\n\tsum1 = W(0, 1051132033, 1032901415, 1050001035, 1051046262) + W(1, 1024623477, 1041030197, -1129401004, 1040932616)\n\t\t + W(2, -1087438145, -1096624519, -1093591378, -1092342973)\n\t\t + W(3, 1024747921, 1042870865, -1112612011, 1037509038) + W(4, 1040121644, 1045530925, 1040228252, -1096329486)\n\t\t + W(5, -1100479077, -1092498854, -1100524478, -1089145703)\n\t\t + W(6, 1047684766, 1031967406, 1044069767, 1050005760) + W(7, 1045316401, 1048633756, 1041789317, 1050363772);\n\tsum2 =\n\t\tW(0, 1033723840, -1120765513, -1151198348, -1121736497) + W(1, 1020727265, -1111733852, 1010605379, -1112033268)\n\t\t+ W(2, 1054927280, 1004192518, 1032813206, -1097617496) + W(3, 994767756, 1024454465, -1124374145, -1107458988)\n\t\t+ W(4, -1094930774, 1009606707, 1018976553, -1096835022) + W(5, -1114598300, 1049726638, 1040837102, 1057385902)\n\t\t+ W(6, -1110893464, -1117945313, -1111742424, -1121652889)\n\t\t+ W(7, -1144829382, 1030389401, -1120942585, 1035752486);\n\tWS(-1076352721, 1061176787);\n\tsum1 =\n\t\tW(0, -1115567878, 1039493528, 1037423542, 1022350014) + W(1, -1114677168, -1123591576, -1143365955, -1114839417)\n\t\t+ W(2, -1095051668, -1094852257, -1086623624, 1044286862) + W(3, 1057477914, 1049595083, 1036655988, 1044280124)\n\t\t+ W(4, 1047858891, 1040618482, 1057001770, 1036068672) + W(5, -1086915318, -1095930750, -1108386213, 1029598047)\n\t\t+ W(6, 1038434246, -1116442287, -1114755255, 1022609452)\n\t\t+ W(7, 1037805114, 1044588197, 1031697064, -1119274549);\n\tsum2 =\n\t\tW(0, 1018488840, -1109735653, -1113462230, -1112517262) + W(1, -1108529674, -1112282852, 1002563934, 1011039855)\n\t\t+ W(2, -1104206436, 1012246375, -1114523900, 1056346033)\n\t\t+ W(3, 1029007760, -1106712811, -1113168793, -1115338003)\n\t\t+ W(4, -1111729053, -1117505825, 1042992721, 1051780099) + W(5, 1042618199, 1035563022, 1024458488, -1112797570)\n\t\t+ W(6, 1004158510, -1122544930, -1111468709, -1133433375)\n\t\t+ W(7, -1114816198, -1136000711, -1122022613, 1037211560);\n\tWS(1037340944, -1121222187);\n\tsum1 =\n\t\tW(0, -1116495838, -1118176747, -1096308023, -1094205341)\n\t\t+ W(1, -1095502171, -1115640417, -1112496425, -1105702479)\n\t\t+ W(2, 1040689218, -1110298712, 1052341602, 1064260668) + W(3, 1052009702, -1100646016, -1117627026, 1026863896)\n\t\t+ W(4, 1036502651, -1106426924, 1044624667, 1068943083) + W(5, 1045175252, 1004526500, -1108867801, -1112879076)\n\t\t+ W(6, -1106495021, -1119752153, -1097659059, -1089978464)\n\t\t+ W(7, -1099820424, -1108261518, -1110958217, -1111070831);\n\tsum2 = W(0, 1002312827, -1134403694, 1025097519, -1105297347)\n\t\t + W(1, 1007461646, -1117960999, -1123847191, -1129847887)\n\t\t + W(2, 1043920878, 1045056865, -1107896626, 1060319926)\n\t\t + W(3, -1100756735, 1018292031, -1136355134, -1108036266)\n\t\t + W(4, -1113959010, -1120905299, 1031903433, -1100397803)\n\t\t + W(5, 1042137547, -1106899263, -1119650359, 1033071013)\n\t\t + W(6, -1124888335, 1019347263, -1120916959, 1028583233)\n\t\t + W(7, -1119634731, -1134844462, 998264859, -1109200858);\n\tWS(-1087648930, 1056984912);\n\tsum1 = W(0, 1027950097, 1027762677, 1025406415, 1043195617) + W(1, 1035903278, 1031391740, 1023913741, 1033673899)\n\t\t + W(2, 1048727276, 1043573475, 1051177331, -1092810048) + W(3, 1038252876, 1044809191, 1035706934, 1020597221)\n\t\t + W(4, -1101873716, 1015678999, -1091649404, -1082302860)\n\t\t + W(5, -1097139061, 1038200652, 1042041459, 1041744649) + W(6, -1111974664, 1024202483, 1016025318, 1050173331)\n\t\t + W(7, -1156961168, 998750650, 1023377112, -1114494621);\n\tsum2 = W(0, 1035604443, -1113891962, -1155240851, -1130359386)\n\t\t + W(1, 1025386829, 1028100153, 1016774458, -1126789482) + W(2, -1109665959, 1017090586, 1033553543, 1061263788)\n\t\t + W(3, -1109330568, -1106256683, -1097657183, -1118236009)\n\t\t + W(4, 1027481873, -1115818981, 1023852497, 1027230949)\n\t\t + W(5, 1041592808, -1113120233, -1101411950, -1121071325)\n\t\t + W(6, -1121529027, 1006860245, -1124657042, 1039189933)\n\t\t + W(7, -1123139111, 999905578, -1132638677, -1109638591);\n\tWS(-1090940868, 1045539156);\n\tsum1 = W(0, -1125495305, -1122547977, 1049435900, 1022396558)\n\t\t + W(1, 1034779456, -1113477720, 1025152496, 1017461170)\n\t\t + W(2, -1111842948, 1036262295, -1083395945, 1050733040)\n\t\t + W(3, 1050803832, 1023164412, -1141132416, -1119150102) + W(4, 1024315123, 1017057054, 1046781659, 1016653136)\n\t\t + W(5, -1084181811, 1044787970, 1025666193, 1039405571) + W(6, 1033322010, 1021788462, 1041875702, 1032259903)\n\t\t + W(7, 1045300311, -1103054087, -1119238479, -1121753565);\n\tsum2 = W(0, -1111850352, -1115334877, -1101312255, -1131783421)\n\t\t + W(1, 1037660946, -1121261620, 1008969141, -1118719808)\n\t\t + W(2, -1154701652, 1045060155, 1053683311, 1041887968)\n\t\t + W(3, -1090960245, 1034919558, -1118627401, -1117531173)\n\t\t + W(4, 1008422401, 1033609440, -1090718168, 1047082317) + W(5, 1034433310, 1036748070, -1109720341, 998924330)\n\t\t + W(6, -1128983709, -1109145509, 1041457249, 1009316297)\n\t\t + W(7, 1037394704, 1030040522, 1034723828, -1122112519);\n\tWS(1058382658, -1101786424);\n\tsum1 = W(0, -1110270554, -1139041509, -1106470550, -1114587164)\n\t\t + W(1, 1023988544, 1031022672, 1028924449, 1026679274) + W(2, 1020557616, 1040419632, 1039037886, -1089217895)\n\t\t + W(3, -1116816379, -1098005290, 1030444000, -1105928314)\n\t\t + W(4, 1042446649, -1110579152, 1052788411, -1102603214) + W(5, 1052497916, 1048850952, 1041387232, 1042985742)\n\t\t + W(6, 1010032145, 1021044303, -1107378131, -1101971332)\n\t\t + W(7, -1110520967, -1136091053, -1142630143, 1036784631);\n\tsum2 = W(0, -1122331173, -1116694246, -1133055086, -1106162040)\n\t\t + W(1, 1033705060, -1119866494, 1019582103, -1119480360) + W(2, 1021048143, -1117334358, 985385246, 1058597177)\n\t\t + W(3, -1096472079, 1040447045, -1107345628, 1011504527)\n\t\t + W(4, -1121426033, 1034622720, -1111822939, 1062397265)\n\t\t + W(5, 1007125953, -1124693001, 1025700470, 1026572561)\n\t\t + W(6, -1141905806, -1109719947, -1111398337, -1092732322)\n\t\t + W(7, -1104483430, -1148551778, -1142669219, -1124513225);\n\tWS(1062970978, -1081266569);\n\tsum1 = W(0, -1102316771, 1026249566, -1104248914, 1037424006)\n\t\t + W(1, 1035596338, -1122189220, 1016727466, 1006845944)\n\t\t + W(2, 1049067654, 1049251698, -1100292756, -1086541140)\n\t\t + W(3, -1092317470, -1101422105, -1130063849, -1103019359)\n\t\t + W(4, 1040583110, 1039432874, 1040278772, -1096033842) + W(5, 1045287213, 1049598341, 1043296141, 1042202275)\n\t\t + W(6, 986432279, 1031488060, 1034368766, 1046796153) + W(7, 1039493185, 1029733120, -1132489681, 1032483937);\n\tsum2 =\n\t\tW(0, -1108138297, 1024987284, -1107013954, 1038311792) + W(1, -1140508767, 999045582, 1010876103, -1139420079)\n\t\t+ W(2, -1092863213, -1095439435, 1054820060, 991870971) + W(3, 1019051815, 1003248078, -1122507350, -1120196608)\n\t\t+ W(4, -1134447463, -1107350452, -1104627754, 1058790229)\n\t\t+ W(5, 1049499199, -1113643053, 1040683258, -1107048418) + W(6, 1020893591, 1030342296, 1023656240, -1145193326)\n\t\t+ W(7, -1111721419, -1124168067, -1111078930, 1036851190);\n\tWS(-1090709444, 1049440503);\n\tsum1 = W(0, -1112814366, 1009000949, -1102384190, -1098104133)\n\t\t + W(1, -1100420271, -1117987732, -1108681738, -1118237822)\n\t\t + W(2, 1025170444, -1102968365, 1054801672, 1055216649) + W(3, 1007027006, 994631719, -1122456724, 1037835469)\n\t\t + W(4, 1021129071, -1107658202, -1108358704, 1055155742)\n\t\t + W(5, 1062491877, -1115514619, 1032182427, -1137063726)\n\t\t + W(6, -1116166456, 1013557870, -1112664461, -1102466049)\n\t\t + W(7, -1093799886, -1139587454, -1112800010, -1119596065);\n\tsum2 = W(0, 1010269627, 1011116525, 1031226256, 1023655690)\n\t\t + W(1, -1117593255, -1139919503, -1131886173, -1132337311)\n\t\t + W(2, -1125700925, 1031004177, 991734042, 1056735713) + W(3, 1023598587, -1116020697, 1030692092, 1014084462)\n\t\t + W(4, -1129465449, -1111184590, -1090395945, 1007034923)\n\t\t + W(5, -1114530604, 1044588818, -1118660887, 1027760305)\n\t\t + W(6, -1124401971, -1139731999, -1123603568, -1106780773)\n\t\t + W(7, 1032362667, 1019563835, 1016903156, 1003383541);\n\tWS(1052605444, -1096548047);\n\tsum1 =\n\t\tW(0, -1135269079, 1014261129, 1035728362, 1017149121) + W(1, 1022065234, -1106055602, -1122459306, -1120275059)\n\t\t+ W(2, -1099989408, -1107118442, -1095069609, 1004173259)\n\t\t+ W(3, -1102684265, 1026600311, 1029280393, -1114974728) + W(4, 1035141158, 1022832721, 1036930738, 1042230040)\n\t\t+ W(5, 1051854441, -1123731628, 1039321653, -1108029264) + W(6, -1157809579, 1034237928, 1014945855, 1022065263)\n\t\t+ W(7, -1149699425, 1033708682, -1120230985, 1040542518);\n\tsum2 =\n\t\tW(0, -1139099893, -1102121527, -1108414487, 1039987934) + W(1, 1045186917, -1096991255, 1033745090, -1102163660)\n\t\t+ W(2, -1078862437, -1076350607, 1043522425, 1067956735) + W(3, 1072447081, 1053122067, -1111637970, 1040872955)\n\t\t+ W(4, -1097588090, 998819801, -1111980043, -1109442889) + W(5, 1044036972, -1115256553, 1027886256, 1044251533)\n\t\t+ W(6, -1129576496, 1024729710, -1134118593, 1032654822)\n\t\t+ W(7, -1118463242, -1124332658, -1123595298, -1115579557);\n\tWS(1054231108, 1025279114);\n\tsum1 = W(0, 1020527399, 1020186806, 1026191493, 1046988234) + W(1, -1147857037, 1041704764, -1120557618, 1039867950)\n\t\t + W(2, -1123453065, 1039341944, -1104689967, -1092316960)\n\t\t + W(3, -1122753069, -1093206832, -1107112804, -1094240131)\n\t\t + W(4, -1096862627, -1119337841, 1034733383, 1008801448)\n\t\t + W(5, -1108979241, 1050167121, 1027712531, 1043962418) + W(6, 1049493415, -1160786718, 1041541558, 1041661776)\n\t\t + W(7, 1034215919, 1032223662, -1156220183, 1036558383);\n\tsum2 =\n\t\tW(0, -1156731980, -1125155383, -1153680156, -1140765671) + W(1, 1018992688, 1030176462, 1027890172, 1018002108)\n\t\t+ W(2, -1121143571, 1021067288, -1101109237, -1079877582)\n\t\t+ W(3, -1094350155, 1058234221, 1064456596, 1058386161) + W(4, 1027150242, 1024911074, -1096825521, -1088644111)\n\t\t+ W(5, -1113080073, 1052444813, 1024094624, 1045751986) + W(6, 1019039796, -1128517034, 1036906894, -1110310177)\n\t\t+ W(7, 1019841700, 1000349534, -1128055622, -1134555143);\n\tWS(-1097731588, 1025129315);\n\tsum1 = W(0, 1033609822, 972033083, 1036940225, 1025915127) + W(1, 1037164536, 1018117854, 1009743167, 1021572178)\n\t\t + W(2, 1037092684, -1118357663, 1046113067, 1050865438)\n\t\t + W(3, -1109542297, 1047810219, -1111680192, 1036701507)\n\t\t + W(4, -1099469177, -1139849211, -1089626010, -1143345853)\n\t\t + W(5, -1104510832, -1097851227, -1113708160, -1110047355)\n\t\t + W(6, -1125480775, -1113410371, 1035911587, 1047135499)\n\t\t + W(7, 1038594118, 1031924197, -1146462713, -1120871309);\n\tsum2 =\n\t\tW(0, -1124965724, -1134630348, -1138485084, -1143859545)\n\t\t+ W(1, -1133066340, 1030422253, -1121255807, 1003464777) + W(2, 1029789829, -1105084635, 1035852445, 1050249105)\n\t\t+ W(3, -1114135764, 1024721985, -1120848177, 1033535897) + W(4, -1119672690, 1036116775, 1002738585, 1057234226)\n\t\t+ W(5, -1115375290, -1117221657, 1007172972, -1110249095)\n\t\t+ W(6, -1132623148, -1123511646, -1106888257, -1097411434)\n\t\t+ W(7, -1109817844, 1017260494, -1118819718, 1021514610);\n\tWS(1064258306, 1057427735);\n\tsum1 = W(0, 1046669668, 1048078371, 1049007041, 1043467602) + W(1, 1032131185, 1040278032, 995640096, -1135631084)\n\t\t + W(2, 1041288794, 1002554246, 1039217007, -1117262306) + W(3, 1041191743, 1037075392, -1121877906, 1026049048)\n\t\t + W(4, -1094345727, -1107049340, -1092155570, -1100296810)\n\t\t + W(5, -1101509636, -1100720075, 1015117221, 1034147956)\n\t\t + W(6, 1024557366, 1026345305, -1126800432, 1017273727)\n\t\t + W(7, 1027549470, -1136038899, -1134767685, -1111532367);\n\tsum2 = W(0, -1083389635, -1081609637, -1079976349, -1090363224)\n\t\t + W(1, -1100056051, -1097029007, 1028030408, -1118886369)\n\t\t + W(2, 1062132206, 1066099523, 1066066300, 1067427062) + W(3, 1049064133, 996873905, -1137063332, 1035057689)\n\t\t + W(4, -1122840851, 1053156114, -1105997303, -1091867230)\n\t\t + W(5, -1103783968, 1048340523, -1134953960, -1104392578)\n\t\t + W(6, -1127222139, 1022631188, 1027246780, -1128121946)\n\t\t + W(7, 1036294091, -1115106526, 1035025213, -1117772337);\n\tWS(-1082692450, -1121765493);\n\tsum1 = W(0, -1112587635, -1118487719, -1105756568, -1111631170)\n\t\t + W(1, 1036199927, -1106833087, -1115752014, -1109370235)\n\t\t + W(2, 992292947, -1104534315, 1049230729, 1048175951) + W(3, -1089217933, 1028715132, -1121927694, 1018481703)\n\t\t + W(4, 1015927970, 1038416886, -1104867982, 1051898365) + W(5, 1057590961, -1104675396, 1012516667, 1022215305)\n\t\t + W(6, -1121302066, -1121296341, 1043167221, 1037146590)\n\t\t + W(7, -1113442509, 1030891673, -1121397517, -1113425325);\n\tsum2 = W(0, -1102561169, 1026098771, -1149524831, -1113975834)\n\t\t + W(1, -1157274159, -1105234356, 1008573990, -1102778536)\n\t\t + W(2, 1040868564, 1021710972, 1048116590, 1041914200) + W(3, 1051191259, 1039729263, 1018638481, 1035375403)\n\t\t + W(4, -1126923948, 1009959824, 1037970343, 1042300553)\n\t\t + W(5, 1032086087, -1097615037, -1115639834, -1115667744)\n\t\t + W(6, -1123351116, -1125337962, 1024724387, -1123062396)\n\t\t + W(7, 1021621986, -1105344931, -1109718449, -1105611058);\n\tWS(1063145570, 1065948321);\n\tsum1 =\n\t\tW(0, -1113780043, -1107415145, -1103697695, -1125795137)\n\t\t+ W(1, -1119226457, 1032469064, -1118570362, -1148759702)\n\t\t+ W(2, 1042647928, 1041877314, 1043379605, -1105676766) + W(3, -1093770877, -1098882227, 1029896809, 1007275454)\n\t\t+ W(4, 1023153433, -1105577826, 1035095074, 1058030732) + W(5, 1049757493, 1047432094, -1106671851, -1110160160)\n\t\t+ W(6, -1113344071, 1034763992, -1113485016, -1107021830)\n\t\t+ W(7, -1116457366, 1028002580, 1033670420, 1021171309);\n\tsum2 =\n\t\tW(0, 1033443671, -1119163512, 1032648925, 1022262943) + W(1, -1121656898, -1125619769, -1116250872, 983397903)\n\t\t+ W(2, -1147652316, 1034562054, 1044843888, -1082830049) + W(3, 1049609982, 1025258841, 1030706970, 1030898199)\n\t\t+ W(4, -1122182070, -1110746439, -1104224164, -1080473697)\n\t\t+ W(5, 1070472721, 1045148854, -1138594966, 1015661307) + W(6, -1114870166, -1126213983, 1033622730, 1036499220)\n\t\t+ W(7, 1042757767, -1125695843, -1109235057, -1105016797);\n\tWS(1047808392, -1105857653);\n\tsum1 = W(0, 1036414223, 1038664639, 1033646416, 1045309491) + W(1, 1028560677, 1047007737, 1035626955, 1052689664)\n\t\t + W(2, 1057255335, 1050583338, 1052085724, -1112577010)\n\t\t + W(3, 1049269098, -1101673225, 1020504170, -1098667351)\n\t\t + W(4, -1089047968, -1095111703, -1090242223, -1088425805)\n\t\t + W(5, -1097592171, 1024927375, 988289723, -1153489085) + W(6, 1019549874, 1027946812, 1014185453, 1038762993)\n\t\t + W(7, 1038356881, -1120878336, 1031636916, -1106190208);\n\tsum2 = W(0, 1050181400, -1114267734, 1015251419, -1097894374)\n\t\t + W(1, 1014394222, -1098468098, 1043075035, -1092845444)\n\t\t + W(2, -1084160527, 1035785784, -1094891239, 1060354212) + W(3, 1045924604, 1054874631, 1042828743, 1063378281)\n\t\t + W(4, -1088778570, -1097051496, -1096397593, 1063793540)\n\t\t + W(5, -1132415773, -1115217527, -1098450150, 1051615858)\n\t\t + W(6, 1059321043, -1113170400, 1035392846, -1098458292)\n\t\t + W(7, 1030978836, -1096505073, 1042772598, -1088082125);\n\tWS(-1073783985, -1080098540);\n\tsum1 =\n\t\tW(0, 1012137476, -1111733448, 1027546650, -1095391448) + W(1, -1107725963, 1030910366, 1024902311, -1136391487)\n\t\t+ W(2, 1004414705, -1125334283, -1098951217, 1058781709) + W(3, 1056582836, 1054585131, -1118558951, 1012935090)\n\t\t+ W(4, 994170013, 1040796537, 1045494048, 1038631039) + W(5, -1099332954, -1102018612, -1106829042, -1113109295)\n\t\t+ W(6, -1135747626, -1106294475, -1105932043, -1097893467)\n\t\t+ W(7, 1027155091, 1001385357, -1141795121, -1118975220);\n\tsum2 = W(0, -1136577003, -1123969951, -1126970134, 1039844510)\n\t\t + W(1, 1037108170, -1182117728, 1024145219, -1107924935)\n\t\t + W(2, -1161174488, -1115268047, -1111829747, -1078035036)\n\t\t + W(3, 1072008544, 1038025274, 1006927579, 1013110307) + W(4, -1123274403, 1023359390, 1034323377, -1085317526)\n\t\t + W(5, 1044555209, 1032404118, 1024479257, 983390936) + W(6, 1021768566, -1128609502, 1026568479, 1027511085)\n\t\t + W(7, 986504280, -1139830523, -1127097094, 1022685546);\n\tWS(-1104974728, 1024380720);\n\tsum1 = W(0, -1117848102, 1021171896, 1039153371, 1036503965)\n\t\t + W(1, 988770395, -1109841905, -1121562883, -1126175513)\n\t\t + W(2, -1117883163, -1127535108, -1099610928, -1100771573)\n\t\t + W(3, 1043814114, 1034691017, 1034709362, 1004793673) + W(4, 1036325571, 1018298053, 1041104624, -1101972463)\n\t\t + W(5, -1133844875, -1107251369, 1025626276, -1111468989)\n\t\t + W(6, -1131530510, 1031544042, 982295861, 1036843369) + W(7, 1029874576, 1031396654, -1125713989, 1034135320);\n\tsum2 = W(0, -1125393898, 1044163006, 1045704700, -1110276988)\n\t\t + W(1, -1099412627, 1044569612, -1115657155, 1037394103)\n\t\t + W(2, 1071281072, 1072425553, -1104699996, -1078765241)\n\t\t + W(3, -1076152216, -1100004941, 1036033265, -1111185479)\n\t\t + W(4, 1044770418, -1125402454, 1018560910, -1098423872)\n\t\t + W(5, -1103281302, 1028856833, -1123488110, -1117821699)\n\t\t + W(6, 1011595325, 1021558362, 1010524637, -1113439186)\n\t\t + W(7, -1178088596, 1019143058, -1126446200, 1026998165);\n\tWS(1066498257, 1026989550);\n\tsum1 = W(0, -1129927868, -1123659738, 1045121333, 1002634947) + W(1, 1036944705, 970850411, 1022709187, 1004856149)\n\t\t + W(2, 1023571545, 1024686464, -1084187390, 1040895252) + W(3, 1040663099, -1115004776, 1024409057, 1001199419)\n\t\t + W(4, 1016605513, -1143882757, 1042249043, 1054068239)\n\t\t + W(5, -1089079196, -1120675276, -1112524513, -1120648472)\n\t\t + W(6, -1133253141, 1025371048, 1033458708, 1032849928)\n\t\t + W(7, 1049903454, 1024612748, 1017685954, -1117202350);\n\tsum2 = W(0, 1038138620, -1155040203, 1049419982, -1094597030)\n\t\t + W(1, 1022703337, -1117198782, -1132959015, -1121486321)\n\t\t + W(2, -1106434423, 1038340354, -1087069176, 1064410985)\n\t\t + W(3, -1110711879, -1112639315, 1026273617, -1123727669)\n\t\t + W(4, 1014840059, -1105689565, -1102609737, 1043321526) + W(5, 1043390477, 1042536365, 1036470844, 1009362023)\n\t\t + W(6, -1117610677, 1038431916, -1115449783, -1117967352)\n\t\t + W(7, -1107988055, -1112813855, -1122022929, 1031915394);\n\tWS(1059170114, -1115069681);\n\tsum1 = W(0, 1041126528, 1031327889, -1137442701, 1027929903) + W(1, 1016336432, 1045677858, 1027533272, 1040648584)\n\t\t + W(2, 1039057944, 1043197758, 1057495242, 1035662548) + W(3, 1036387882, 1043295874, 1020376880, 1035357519)\n\t\t + W(4, -1114418030, 1035998588, -1086197480, -1092661254)\n\t\t + W(5, -1098594899, -1097533773, -1116322521, -1106979748)\n\t\t + W(6, -1125005432, -1184440086, -1107377807, -1131407372)\n\t\t + W(7, 1031309989, 1017102598, 1036182828, -1128058314);\n\tsum2 = W(0, 1029223181, 1035999136, 1032743888, 1050206678) + W(1, 1030968394, 969652021, 1018474295, -1138117380)\n\t\t + W(2, -1099457044, -1123134927, -1106245137, -1115721168)\n\t\t + W(3, 1035536761, -1109098872, -1136790748, -1105152866)\n\t\t + W(4, -1094833228, -1107153986, 1052844759, 1029163621)\n\t\t + W(5, 1046847142, -1111905268, -1116305850, -1102858563)\n\t\t + W(6, 1022472216, -1129014496, 1034397600, 1043654862)\n\t\t + W(7, -1114537747, -1149928759, 968266517, 1033858063);\n\tWS(-1091215044, -1097536449);\n\tsum1 = W(0, 1036334229, 1027816414, 1046343318, 1054850406) + W(1, 1041878433, 1040414769, 1017820267, 1047750528)\n\t\t + W(2, -1088688205, -1110004986, -1088611549, -1085760696)\n\t\t + W(3, -1113122464, -1115511970, -1113420363, 1034437006)\n\t\t + W(4, 1028067640, 1025245044, -1104070412, -1089807987) + W(5, 990395721, 1024229024, 1028468150, -1097347774)\n\t\t + W(6, 1049627927, 1039037582, 1048707955, 1052669472) + W(7, 1043177720, 1039929856, 1044644789, 1048578060);\n\tsum2 = W(0, -1114440831, 1030624098, 988636086, -1132718391) + W(1, 1030310950, 1016098323, 1024855622, 1018716851)\n\t\t + W(2, 1036847317, 1042295753, 1050034374, 1031424194)\n\t\t + W(3, -1119733782, -1120554286, -1114648667, 1035432255)\n\t\t + W(4, 1041890716, -1115362087, -1113867927, 1016671019)\n\t\t + W(5, -1130826523, -1097953797, -1146049358, -1096082463)\n\t\t + W(6, 1027069126, 1021176355, 1029167466, 1028661170)\n\t\t + W(7, -1183083952, -1108500823, 1027651154, -1106095247);\n\tWS(-1074893425, -1117971628);\n\tsum1 = W(0, -1094367290, -1152038187, -1103630563, -1098786216)\n\t\t + W(1, 1037656965, -1114777697, 1025099466, -1124130662) + W(2, 1052023128, 1049322869, -1111356283, 999054287)\n\t\t + W(3, -1106664801, -1093651375, 1040611874, -1094570594)\n\t\t + W(4, 1042452051, -1097322793, 1049675109, 1040732760) + W(5, 1040645714, 1057236855, 1040783587, 1055134184)\n\t\t + W(6, -1107223211, 1034136520, -1112379016, -1102728254)\n\t\t + W(7, 1016544493, -1125564586, -1105965314, 1008351835);\n\tsum2 =\n\t\tW(0, 1004001863, 1021526755, 1018968138, -1116175346) + W(1, -1139174407, 1031843333, -1131104448, 1009509771)\n\t\t+ W(2, -1116735450, 1032892007, -1096890588, -1099974349)\n\t\t+ W(3, -1103015201, 1040986630, 1035109709, 1041412407)\n\t\t+ W(4, -1111481570, 1024548251, -1073615974, -1071438395)\n\t\t+ W(5, -1146527383, 1076155388, 1074182350, 1041860718) + W(6, 1033584975, -1130001464, 1026017190, -1121576034)\n\t\t+ W(7, -1164624762, 1024580999, 1043256283, -1106441216);\n\tWS(1040475912, 1032695578);\n\tsum1 = W(0, -1124525022, -1155851319, 1035372099, -1122500130)\n\t\t + W(1, -1172701842, 1033773669, 1014757675, -1116930196)\n\t\t + W(2, -1112011377, -1123298122, -1091278169, 1056532699)\n\t\t + W(3, 1054708857, -1105035590, 1007501482, 1026134833) + W(4, 1035534023, -1102944834, 1055301749, 1041895809)\n\t\t + W(5, -1087252087, 1039100863, -1123874252, 1036316385)\n\t\t + W(6, -1136466746, 1035920825, -1130626274, -1104812886)\n\t\t + W(7, 1028924087, -1111589035, -1142366545, -1110262076);\n\tsum2 = W(0, -1109091355, -1119792870, -1111337413, -1102054262)\n\t\t + W(1, -1118550690, -1113960445, -1142500624, -1109065069)\n\t\t + W(2, 1041703749, -1123886114, 1026232126, 1049335147)\n\t\t + W(3, -1114718085, -1111978783, -1124340572, 1020384670)\n\t\t + W(4, -1120034208, -1123320808, 1045621744, 1063803841)\n\t\t + W(5, -1088756378, 1016064880, 1026268254, 1030310973) + W(6, 1010537508, 1026411366, 1015836410, -1098413574)\n\t\t + W(7, 1041947548, -1123461018, 999681904, -1122952578);\n\tWS(1060902754, 1050355625);\n\tsum1 = W(0, -1156790206, -1151083459, 1011568442, 1023922682)\n\t\t + W(1, 1024500211, -1112644265, 1033389138, -1104847739)\n\t\t + W(2, -1099711167, -1104333225, -1101534272, -1082482317)\n\t\t + W(3, -1107281952, 1053813598, 1025001795, -1116841801)\n\t\t + W(4, 1048936605, 1047935457, 1041411896, -1103038759) + W(5, 1049946264, 1036831245, 1037700978, 1030797274)\n\t\t + W(6, 975051222, -1120760458, 1040804594, 1043235660) + W(7, 998453633, 1030084558, 1007099659, 1035779080);\n\tsum2 = W(0, 1036801640, -1120633215, 1043653368, 1045612039)\n\t\t + W(1, -1100846658, 976462574, -1115109418, -1097687290)\n\t\t + W(2, -1106066969, 1029646415, -1102845552, 1020964885)\n\t\t + W(3, 1041841354, -1088569123, -1101549413, 1054633350)\n\t\t + W(4, -1098529900, -1094622159, 1045091011, 1062435502)\n\t\t + W(5, -1104869009, 1054359824, -1101036113, 1044975639)\n\t\t + W(6, 1051617655, -1128436081, -1108268977, -1120809462)\n\t\t + W(7, -1127923721, -1115259155, 1041018201, -1102739129);\n\tWS(-1090140642, -1081743990);\n\tsum1 = W(0, 1014408182, -1130293844, 1031847606, 1042594418) + W(1, 1041618980, 1035968392, 1009499077, 1033368909)\n\t\t + W(2, 1037549524, 1009886528, 1044394635, 1037202321) + W(3, -1117833212, 1037634256, -1122700465, 1015596142)\n\t\t + W(4, -1119977588, 1031805064, -1097431626, -1094879521)\n\t\t + W(5, -1119842097, -1101547735, -1107123493, -1105308242)\n\t\t + W(6, -1148996265, -1107483388, 1015837167, 1035016080)\n\t\t + W(7, 1032499967, 1034663662, 1017023585, 1030806526);\n\tsum2 = W(0, -1123785792, 1006912162, -1091554339, -1071648513)\n\t\t + W(1, -1078529007, -1106043455, -1108743589, -1113325201)\n\t\t + W(2, 1013646496, -1120892227, 1057715626, 1076150687) + W(3, 1069469884, 1049558148, 1035924910, 1038760139)\n\t\t + W(4, -1105735433, 1034054467, -1103626228, -1110563164)\n\t\t + W(5, 1025732222, -1102425071, 1028146935, 1001130061) + W(6, 1032589029, -1113324539, 1043157583, 1029343874)\n\t\t + W(7, -1120727508, 1029688242, -1120545616, -1123660578);\n\tWS(1055430148, -1108560690);\n\tsum1 = W(0, 1035961997, 1035029338, 1036894711, 1041930516) + W(1, 1018389269, -1113968413, 1026969083, -1119268932)\n\t\t + W(2, -1122962962, -1107101862, -1105458486, -1102453987)\n\t\t + W(3, 1050880022, 1050461237, 1017425654, 1049028992) + W(4, 1001804274, 1037435821, 1049324163, -1115462345)\n\t\t + W(5, -1096234295, -1096034793, -1105484423, -1109268985)\n\t\t + W(6, -1109508687, -1114596033, -1105968336, 1030068713)\n\t\t + W(7, 1023650152, 1041307521, 1023939770, -1110794404);\n\tsum2 = W(0, 1020921672, 1015626891, -1131154511, -1149322267)\n\t\t + W(1, 1005570725, -1122484266, -1125609227, 1019773418)\n\t\t + W(2, -1133145023, 1000680715, 1034643892, -1106033700)\n\t\t + W(3, -1155618307, 1030350968, -1127714103, 1027949553) + W(4, 967639540, 1038163303, 1029820070, 1027175814)\n\t\t + W(5, 1050725869, -1107328459, 984351189, -1113454879) + W(6, 1057583079, 1066461314, 1070593780, 1042500058)\n\t\t + W(7, -1076733999, -1075365186, -1095092572, 1026351361);\n\tWS(1048611396, -1120253991);\n\tsum1 =\n\t\tW(0, -1109906484, -1134442421, -1157090745, 1038629782) + W(1, 1019276152, 1008425488, -1121251029, -1115994974)\n\t\t+ W(2, -1104843595, 1020368935, -1102655324, -1096452233)\n\t\t+ W(3, -1094801150, -1098953977, -1125379561, -1120481658)\n\t\t+ W(4, 1042068462, -1116357012, -1127594975, 1048790986) + W(5, 1026936628, 1044903358, 1031973931, 1042932491)\n\t\t+ W(6, 1029221016, 1014414830, 1044033359, 1052393436) + W(7, 1029702657, -1137141374, -1117911220, 1022285443);\n\tsum2 = W(0, -1129566974, -1143746400, 1036033029, -1117052801)\n\t\t + W(1, -1123748463, 1038502321, -1138810328, 1043607047)\n\t\t + W(2, -1111784437, 1036277891, 1028988774, -1100779042)\n\t\t + W(3, 1044450885, -1129810696, 1034348699, -1108082071) + W(4, 1050813877, 1047551505, 1061486774, 1077969880)\n\t\t + W(5, 1055586292, -1131992338, 1040643987, -1108034712)\n\t\t + W(6, -1093517653, -1098527209, -1081514759, -1071648362)\n\t\t + W(7, -1089190754, -1107152864, -1111885211, 1025200270);\n\tWS(-1095808772, 1065647947);\n\tsum1 =\n\t\tW(0, -1096536264, -1104862109, -1101976087, -1101730853)\n\t\t+ W(1, -1126516760, -1106707963, -1123882077, -1108125731)\n\t\t+ W(2, 1055051378, 1050045579, 1051209263, 1045989771) + W(3, -1096666661, -1098537885, 1021791993, -1104774017)\n\t\t+ W(4, -1152511995, -1106144343, -1114400236, 1051130659) + W(5, 1054814183, 1057272194, 1047598263, 1057816237)\n\t\t+ W(6, -1101629224, -1139560206, -1118447811, -1101507019)\n\t\t+ W(7, -1103658466, -1098960762, -1106849375, -1104521538);\n\tsum2 = W(0, -1110633145, -1114352725, -1120367533, -1113576661)\n\t\t + W(1, -1147392026, -1111220567, -1123261925, -1131596567)\n\t\t + W(2, 1046325680, -1134514653, 1030462840, 1052343557)\n\t\t + W(3, 1028577898, -1127265311, 1023140267, -1109705515)\n\t\t + W(4, -1106205960, -1145236426, -1121802017, 1052169724)\n\t\t + W(5, -1126550987, 967975074, -1125641651, 1019189507)\n\t\t + W(6, -1121981161, -1115188107, 1009337269, -1122467029)\n\t\t + W(7, -1112707841, -1123885069, -1109514951, 1036097210);\n\tWS(-1088656098, -1093593990);\n\tsum1 = W(0, 1009988669, 1006243392, -1118924498, 1040203342) + W(1, 1030956655, 1015251645, 1032654584, 1034196708)\n\t\t + W(2, 1053407451, 1046462824, 1054487499, 1043824044)\n\t\t + W(3, -1107509853, -1099069067, -1114843936, -1106663601)\n\t\t + W(4, -1093246956, -1100605512, -1092703459, -1110184012)\n\t\t + W(5, 1041099456, 1036164518, 1040232112, 1035276411) + W(6, 1009810317, 1021367180, 1031892963, -1115326423)\n\t\t + W(7, 1009525296, -1102894371, -1121673919, -1120762380);\n\tsum2 =\n\t\tW(0, 1045046842, 1057379920, 1066661430, 1065556520) + W(1, -1100359290, -1079104557, -1080513286, -1090732450)\n\t\t+ W(2, -1111686548, 1047338924, 1044625920, -1108706635)\n\t\t+ W(3, 1040575208, 1048831397, -1106604517, -1118381857)\n\t\t+ W(4, -1120613757, 1041926325, 1010608356, -1107659276) + W(5, 1029226052, 990146073, -1122878530, -1148427089)\n\t\t+ W(6, -1123157156, -1122209414, 1026048962, -1118064370)\n\t\t+ W(7, 1036917588, -1118722317, 999828841, -1128484108);\n\tWS(-1103417864, 1032685901);\n\tsum1 = W(0, -1113840082, -1101895278, -1106883347, -1112947643)\n\t\t + W(1, 1045150312, -1106874992, -1122615424, -1140285221) + W(2, 999140540, 1021813182, 1050838637, 1035808888)\n\t\t + W(3, -1089518824, -1112862903, -1123587264, 991482976)\n\t\t + W(4, 1026362243, 1049323684, -1123649147, -1115046028) + W(5, 1051398592, 1043843226, 1032255888, 1025625239)\n\t\t + W(6, 1025795300, -1104186210, 1026463622, 1015970396)\n\t\t + W(7, 1028121997, -1114287989, -1148228092, -1125179546);\n\tsum2 = W(0, 1052414494, 1041601968, 1061231009, -1094738093)\n\t\t + W(1, -1090047391, -1112254382, -1124055261, -1106989530)\n\t\t + W(2, -1107019340, 1032004449, -1083281727, 1048799024) + W(3, 1060484354, 1026094686, 1028491114, 1016363351)\n\t\t + W(4, 1021676257, -1101889010, 1040520305, -1113266306)\n\t\t + W(5, -1097572834, 1047868927, -1106439707, 1039531031) + W(6, -1118630717, 1028135044, 994543087, 1023423300)\n\t\t + W(7, 1023744190, -1123297050, -1134044699, -1135541243);\n\tWS(1062251010, -1128406975);\n\tsum1 = W(0, -1122559590, -1117783082, -1111223497, -1097132645)\n\t\t + W(1, -1118294493, 1027318465, -1122628178, -1142140116)\n\t\t + W(2, -1114430084, 998905218, -1117430765, 1043264160)\n\t\t + W(3, -1137238321, -1109365760, 1012147781, -1112437644)\n\t\t + W(4, 1041522773, -1122146129, 1049934150, 1038499861) + W(5, 1040349396, 1038350478, -1161426505, 1022231761)\n\t\t + W(6, -1200477464, 1030594936, -1117296696, -1108127936)\n\t\t + W(7, -1117164622, 1008104625, 1016497826, 1030977566);\n\tsum2 = W(0, -1117898288, -1125963325, -1090182563, -1072766634)\n\t\t + W(1, -1084699977, 1030742992, -1114032290, 1021721886) + W(2, 1035048481, 1029071818, 1058090849, 1075259304)\n\t\t + W(3, 1062748800, -1113008632, 1039805619, -1113709765)\n\t\t + W(4, 1015521050, -1131842712, -1155119281, -1099596444)\n\t\t + W(5, 1015646848, -1124623837, -1116189732, -1146515621)\n\t\t + W(6, -1121110162, -1139107970, -1131029094, 1037152077)\n\t\t + W(7, 1018972128, 1025197316, -1127481518, 1027813594);\n\tWS(1065708113, -1121751611);\n\tsum1 =\n\t\tW(0, -1151170552, -1113367966, -1132161740, -1102777150) + W(1, 1008580363, 1034637855, -1122909571, 1029317996)\n\t\t+ W(2, 1004700116, 1033929377, 1028879143, 1048992314) + W(3, -1130586604, -1123817297, 997138991, -1119780649)\n\t\t+ W(4, 1029908854, -1124121476, 1021289212, -1106962671)\n\t\t+ W(5, -1145749780, 1010684790, -1110778290, -1119558682)\n\t\t+ W(6, -1203182552, -1152107167, 985230639, -1118004497) + W(7, 1024087440, 1024857134, 1018524741, 1030859440);\n\tsum2 = W(0, 1022085973, 1007192988, 1059325611, 1078660314) + W(1, 1067996709, -1179370697, 1033764027, 1000911377)\n\t\t + W(2, -1128031215, 982756722, -1087213694, -1070139299)\n\t\t + W(3, -1079390657, -1159362498, -1110724756, 1028041806)\n\t\t + W(4, 1012976820, -1124806095, 1030136738, -1095156098)\n\t\t + W(5, -1131018297, 1019962283, 1025926144, -1121497459)\n\t\t + W(6, -1176062153, 1022708360, -1120463845, 1033425170)\n\t\t + W(7, -1138793506, -1124014927, 1016277465, -1138055830);\n\tWS(1067144001, 1026092834);\n\tsum1 = W(0, 1005864375, 1014388109, -1110877439, -1100539124)\n\t\t + W(1, -1110133357, -1126225268, 1033891677, 1016160519) + W(2, 1049810486, 1020396467, 1055042333, 1042867979)\n\t\t + W(3, 1031992147, 1044290490, 1034565181, 1034066560)\n\t\t + W(4, -1103125415, 1040462414, -1103579165, -1096204250)\n\t\t + W(5, 1048911295, -1091768605, -1114007278, -1112003369)\n\t\t + W(6, -1120236446, -1132016387, -1107048544, -1116193256)\n\t\t + W(7, 1010104860, 1031444773, 1030176378, 1031923300);\n\tsum2 = W(0, -1130823435, -1108591076, -1112679806, -1095898825)\n\t\t + W(1, -1107310218, 1030441654, -1128226189, 1031713190)\n\t\t + W(2, -1123834023, 1045671991, -1133291790, 1058163296)\n\t\t + W(3, -1100325346, -1113640367, 1016405480, -1116067001)\n\t\t + W(4, 1036568073, -1106172311, -1115701009, 1057311204)\n\t\t + W(5, -1097367248, 1044352434, -1106561364, 1014762708)\n\t\t + W(6, -1114604843, 1024976861, 1033105292, -1122476787)\n\t\t + W(7, 1035411458, -1111920852, 1031834977, -1121017007);\n\tWS(1057420226, -1092362255);\n\tsum1 = W(0, 1032475105, 1020346174, -1121587297, 1019256762) + W(1, -1123769862, 1033058515, 1024808486, 1030782351)\n\t\t + W(2, 1044920519, -1144052776, 1052978802, 1055322687) + W(3, -1104246416, 1040777765, 1016898380, 1041983019)\n\t\t + W(4, -1103664666, 1027257637, -1096869991, -1116373310)\n\t\t + W(5, 1028318277, -1096789598, -1118572551, -1106323631)\n\t\t + W(6, -1114304581, -1116794957, -1103967019, -1100439285)\n\t\t + W(7, 1018564517, 1036089864, 1021198731, -1130998630);\n\tsum2 = W(0, -1134184569, 1006994613, 1034914936, -1134366153) + W(1, 1033598449, 1009154259, 989883430, 1021229932)\n\t\t + W(2, 1016741405, -1130764191, 1033077740, -1112456708)\n\t\t + W(3, 1043198162, -1132669129, 1016038391, -1126067903) + W(4, 1020516693, 1043863088, 1060988002, 1071901111)\n\t\t + W(5, 1043355315, 1018979141, 1034096544, 1022348007)\n\t\t + W(6, -1102863001, -1103907912, -1084447988, -1076633620)\n\t\t + W(7, -1098165823, -1118646231, -1113048166, -1118544043);\n\tWS(-1105493768, -1082709441);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[525];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define temp_tex(pos) (float(texture(temp, pos).x))\nstatic const float2 temp_size = float2(GetInputSize().x * 1, GetInputSize().y * 2);\nstatic const float2 temp_pt = float2(1.0 / (temp_size.x), 1.0 / (temp_size.y));\n\n#define HOOKED_tex(pos) temp_tex(pos)\n#define HOOKED_size temp_size\n#define HOOKED_pt temp_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 525; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (1)) + 0.5, float(group_base.y + y - (3)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[8];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 6];\n\tsamples[1][3] = inp[local_pos + 7];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 19];\n\tsamples[3][1] = inp[local_pos + 20];\n\tsamples[3][2] = inp[local_pos + 21];\n\tsamples[3][3] = inp[local_pos + 22];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 32];\n\tsamples[4][3] = inp[local_pos + 33];\n\tsamples[5][0] = inp[local_pos + 34];\n\tsamples[5][1] = inp[local_pos + 35];\n\tsamples[5][2] = inp[local_pos + 36];\n\tsamples[5][3] = inp[local_pos + 37];\n\tsamples[6][0] = inp[local_pos + 45];\n\tsamples[6][1] = inp[local_pos + 46];\n\tsamples[6][2] = inp[local_pos + 47];\n\tsamples[6][3] = inp[local_pos + 48];\n\tsamples[7][0] = inp[local_pos + 49];\n\tsamples[7][1] = inp[local_pos + 50];\n\tsamples[7][2] = inp[local_pos + 51];\n\tsamples[7][3] = inp[local_pos + 52];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 18];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(2, 1);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1) + ivec2(1, 0), ret);\n}\n"
  },
  {
    "path": "src/Effects/NNEDI3/NNEDI3_nns64_win8x6.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: nnedi3.py --nns 64 --win 8x6 --use-compute-shader --use-magpie\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME NNEDI3_064_6\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 1 * 2\n//!HEIGHT INPUT_HEIGHT * 2 * 1\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH * 1\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D temp;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_temp;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC NNEDI3 (double_y, nns64, win8x6)\n//!IN INPUT\n//!OUT temp\n//!BLOCK_SIZE 32, 16\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[12]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 12; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 48.0;\n\tfloat mstd1 = sumsq / 48.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 =\n\t\tW(0, -1120714617, 1035162146, -1110752415, -1121818163) + W(1, 1035961863, -1120878363, 1007614003, -1123901891)\n\t\t+ W(2, 1046176310, -1105876799, 1034124059, -1120533037)\n\t\t+ W(3, -1123305414, 1027364554, -1114390527, -1096860741)\n\t\t+ W(4, 1022953826, -1155422496, 1009908268, 1030225939) + W(5, -1110762423, 1046191054, 1023450788, -1124524780)\n\t\t+ W(6, -1129324172, -1116882705, 1032526991, 1043289735)\n\t\t+ W(7, -1114841418, -1129613106, -1121901526, 1030599214)\n\t\t+ W(8, -1096831458, 1052908756, -1114991488, 1013731840)\n\t\t+ W(9, 1022915304, -1135846624, -1117077507, 1034530771)\n\t\t+ W(10, -1116257712, 981289536, -1142748844, -1113117446)\n\t\t+ W(11, -1127767760, 1039462233, 1025047056, -1143328976);\n\tsum2 =\n\t\tW(0, -1131108965, 1043465638, 988544780, -1145266179) + W(1, 1018501507, 1021344415, 1000650931, -1113612493)\n\t\t+ W(2, -1124179817, -1111438835, 1003301507, -1131299129)\n\t\t+ W(3, 1025688791, -1106748353, -1070139293, -1110118136)\n\t\t+ W(4, 1026178295, -1123696315, -1116852534, 1029599173)\n\t\t+ W(5, -1102659167, -1097100047, 1031198431, 1012522521) + W(6, -1145056307, 1045881517, 1078104617, 1027449515)\n\t\t+ W(7, -1123515159, 1024975831, -1123043594, -1118230687)\n\t\t+ W(8, 1048052425, 1027739737, -1134523125, 1020199127) + W(9, 1018436747, 1029259867, -1126127905, -1136112041)\n\t\t+ W(10, 995063942, -1162666156, -1139914565, -1107504809)\n\t\t+ W(11, 1025133515, 1036504803, -1120319069, -1131042995);\n\tWS(1061710334, -1113637247);\n\tsum1 = W(0, -1121814583, 1036106897, -1109309294, -1143950978)\n\t\t + W(1, 1033251382, -1118153848, -1138603692, -1122595552)\n\t\t + W(2, 1048694647, -1103580007, 1032154570, -1122508490)\n\t\t + W(3, -1138264845, 1018454510, 1030681928, -1097890158)\n\t\t + W(4, 1019050396, 1012933309, -1140194465, 1033737112)\n\t\t + W(5, -1115559686, -1120177173, 1021617155, -1120902675)\n\t\t + W(6, -1131439046, -1122735662, 1044326142, 1042373458)\n\t\t + W(7, -1113884080, -1152998244, -1125621862, 1024541667)\n\t\t + W(8, -1097437158, 1052689231, -1107957310, 1016843898)\n\t\t + W(9, 1023073058, -1122620661, -1132933761, 1034486114)\n\t\t + W(10, -1116304653, -1144273714, -1129805541, -1116003130)\n\t\t + W(11, -1128614666, 1037961704, 1019245786, -1155701620);\n\tsum2 = W(0, -1162960213, -1107084454, -1126626424, 1025411499)\n\t\t + W(1, -1126548940, -1127269937, 1013908203, 1023868855) + W(2, 1032930462, 1029914487, 997665611, 1018748433)\n\t\t + W(3, -1113327157, 1032525526, 1076098019, 1035900190)\n\t\t + W(4, -1121182801, -1158385717, 1023571595, 1048796624)\n\t\t + W(5, -1132699465, -1093496445, 1038561302, 1000017309)\n\t\t + W(6, -1133790043, -1104878976, -1072747140, 1026052839)\n\t\t + W(7, -1146184997, -1123007653, 1024139725, 1003078933)\n\t\t + W(8, -1104764998, -1109617402, -1142783113, -1154085627)\n\t\t + W(9, -1130037920, -1121062518, 1019199125, 1025857863)\n\t\t + W(10, -1147685381, 1000677165, 1007034787, 1034207166)\n\t\t + W(11, -1123497947, -1118139493, 1017680405, 1016687665);\n\tWS(1064800702, 1030635520);\n\tsum1 =\n\t\tW(0, 1004285524, -1128056492, 1035663048, -1110660706) + W(1, -1128734654, 1028175148, -1122860750, 1024005652)\n\t\t+ W(2, 1031878036, -1116831438, -1204558974, -1143857649) + W(3, -1122286551, 1035530413, 984521208, 1023270757)\n\t\t+ W(4, -1136886024, 1005008153, 1021316024, 1053335517) + W(5, -1100061872, -1093549817, 1042579293, 1016449422)\n\t\t+ W(6, -1116388951, -1139373960, 1048911707, -1104621327)\n\t\t+ W(7, -1148999845, -1135015336, 1022533838, -1130762670)\n\t\t+ W(8, 1035194194, -1149876978, -1142259845, 1010510404)\n\t\t+ W(9, -1125657162, -1121564617, -1131931048, -1142066105)\n\t\t+ W(10, -1120920449, 1018152308, 1001429301, -1129213371)\n\t\t+ W(11, -1141986761, 1031904066, -1111776529, 1020350678);\n\tsum2 =\n\t\tW(0, 1015139874, -1120731382, 1017539382, 1020112270) + W(1, -1126248934, 1013963196, -1150118671, -1116737087)\n\t\t+ W(2, 1031888972, -1112637962, 1010207212, -1138130380) + W(3, 1032711786, -1087320828, 1059502015, 1026899401)\n\t\t+ W(4, -1119882792, 1019091922, 1028577839, -1069693959)\n\t\t+ W(5, 1078824499, -1094071548, 1040940327, -1123861886)\n\t\t+ W(6, -1116703472, -1103666133, 1045823576, 1036639812)\n\t\t+ W(7, -1131804892, 1004924552, -1123435694, -1138801588)\n\t\t+ W(8, 1009232228, -1114441289, 1029410629, -1130443436) + W(9, -1140098908, 999422392, 1011539428, 1023067274)\n\t\t+ W(10, -1130083750, -1137456436, -1140019692, 1029210329)\n\t\t+ W(11, -1118193829, -1131442506, 1007549476, 1026106777);\n\tWS(1058942782, 1023618692);\n\tsum1 = W(0, -1126072821, 1041771492, -1110777188, -1110871838)\n\t\t + W(1, 1036426764, -1142526755, 1011693912, 1025548876) + W(2, 1035801072, 1043278082, -1146527995, 1015953709)\n\t\t + W(3, 1017195423, 1036961985, -1094081945, -1103634941)\n\t\t + W(4, 1046715887, -1148709083, -1122268692, 1037536142)\n\t\t + W(5, -1091452759, -1105679152, 1040286827, -1119884351)\n\t\t + W(6, 1022607903, 1038780013, -1095962376, -1103558179) + W(7, 1049101574, -1122534754, 982545387, 1023558139)\n\t\t + W(8, 1049096396, -1130619215, 1031851588, 1007174309)\n\t\t + W(9, -1126061755, 1037537425, -1113879430, -1136949949)\n\t\t + W(10, 1002869195, 1017517093, 1003763447, 1035261291) + W(11, 955835050, 1026350907, 1006549707, 986004587);\n\tsum2 =\n\t\tW(0, -1128639222, 1001638233, -1119841411, 1014385869) + W(1, 986023269, -1135260845, -1150616818, 1013509397)\n\t\t+ W(2, 1029376723, 1037911199, 970306708, 1013815957) + W(3, -1118932607, 1035428655, 1019940778, -1102461584)\n\t\t+ W(4, -1141011097, 959170344, -1125568566, 1024255335) + W(5, 1063260126, -1085129330, -1110526300, 1017551658)\n\t\t+ W(6, 991022546, 1031481278, 1032753418, -1110003004) + W(7, 1033244979, 1016351942, -1129687950, -1111645244)\n\t\t+ W(8, 1026999545, 1019019978, -1121764803, -1127392454) + W(9, 1018120650, 1028380841, -1121385219, 1021463302)\n\t\t+ W(10, 1025283273, 1009569613, 1006676397, -1115817479)\n\t\t+ W(11, -1134958989, 1017625850, -1128128990, -1138867245);\n\tWS(1037837808, 1056377428);\n\tsum1 = W(0, -1135573495, -1105969090, 1027945538, 1043223694)\n\t\t + W(1, -1100584037, 1025656415, 1023727061, -1138454045)\n\t\t + W(2, -1116105371, 1039709953, -1111027805, 1021082723)\n\t\t + W(3, -1118803082, -1114548551, -1126955510, 1051232418)\n\t\t + W(4, -1097887999, 1018764077, -1123500111, 1046351686)\n\t\t + W(5, -1122693874, -1100833583, 1040497066, -1115071549)\n\t\t + W(6, 1020600341, 1036383371, 1053007142, -1103740252) + W(7, 1024768136, 1025234525, -1111066541, 1034647805)\n\t\t + W(8, 1035274060, -1101618713, -1138012047, -1116333124)\n\t\t + W(9, 1008936161, 1026657308, -1156882549, 1033814037)\n\t\t + W(10, -1123286772, 1016891995, -1115286797, 1033474888)\n\t\t + W(11, -1122516460, -1129756781, 1010716753, -1114238799);\n\tsum2 = W(0, 1020978875, -1100967324, 1043179705, 1026290891)\n\t\t + W(1, 1013196277, -1138979633, -1121670462, -1130583533)\n\t\t + W(2, -1122981488, 1032797386, -1120286641, 966672716)\n\t\t + W(3, -1103298336, -1096736455, 1062358565, -1104401130)\n\t\t + W(4, -1114052290, -1152672163, -1110731474, 1053186254)\n\t\t + W(5, -1112891412, -1091109944, 1048200412, -1122242747)\n\t\t + W(6, -1105136733, 1045958215, 1031005462, -1133705481)\n\t\t + W(7, -1113847816, 1023845499, -1119790394, 1043729632)\n\t\t + W(8, 1033523405, -1102472853, 1033631266, -1118586102)\n\t\t + W(9, -1127100056, 1033816035, -1109547546, 1031959215)\n\t\t + W(10, -1126209517, -1147194793, 999102475, 1020355333)\n\t\t + W(11, -1122874410, -1122532081, 1027184816, -1127245018);\n\tWS(1050865148, 1032626572);\n\tsum1 = W(0, -1110436993, 1043627312, -1118552440, 1045700875)\n\t\t + W(1, -1115060612, 1040430485, 1040042556, -1101476879)\n\t\t + W(2, -1108049256, 1033317691, 1031191472, -1096410465)\n\t\t + W(3, -1107890608, 1049906138, -1107535228, -1115480133)\n\t\t + W(4, 1025393771, 1042925123, -1113356418, -1109025830)\n\t\t + W(5, -1162779891, 1049713062, -1106727656, -1114330616)\n\t\t + W(6, 1034032544, -1120749707, -1095271743, 1042738346)\n\t\t + W(7, -1127443770, -1106585845, -1105712244, 1051482110)\n\t\t + W(8, 1035225158, -1122810712, 1039553933, 1042770518) + W(9, 999321197, -1103830356, -1104074479, 1050825756)\n\t\t + W(10, -1104755066, -1103219825, -1110201208, 1048543054)\n\t\t + W(11, -1106449960, 1031488492, 1040395170, 1009713998);\n\tsum2 =\n\t\tW(0, 1024944996, -1111924540, -1107012648, 1057346437) + W(1, -1105023593, -1097010076, 1020193961, 1007347355)\n\t\t+ W(2, 1049541488, 1054940943, -1097277462, -1107952444)\n\t\t+ W(3, 1014966838, -1116539066, -1107447750, 1059914271)\n\t\t+ W(4, -1142156696, -1085761230, 1015828472, 1012341552)\n\t\t+ W(5, -1109770505, 1066972918, 1043445868, -1078926120)\n\t\t+ W(6, -1113612636, 1034050704, -1111197863, 1063973493)\n\t\t+ W(7, 1017043379, -1084679416, 1032934706, -1113193567)\n\t\t+ W(8, 1014122612, 1056333532, -1118781870, -1092348708) + W(9, -1116105943, 1042584092, 1016467631, 1045837843)\n\t\t+ W(10, -1113967259, -1128370702, 1021395599, -1116104243)\n\t\t+ W(11, -1135977693, 1043326701, -1117573943, -1108363561);\n\tWS(1054811644, 1027249161);\n\tsum1 =\n\t\tW(0, 1040940111, -1101358582, -1113576073, 1049141881) + W(1, -1132483205, -1116754862, -1100243090, 1036221579)\n\t\t+ W(2, 1038054901, -1105999252, -1104538698, 1037145120) + W(3, 1043481462, 1014943347, -1097482896, 1051960356)\n\t\t+ W(4, 1036681666, -1118995685, -1119365790, -1109150355)\n\t\t+ W(5, -1106696288, 1048275427, -1123112824, -1126689554)\n\t\t+ W(6, -1111878381, 1036687602, 1022736646, -1118345360) + W(7, 1019000333, 1038634998, 1044780378, -1109759237)\n\t\t+ W(8, -1097940765, 1049145430, 1044474573, -1101292557)\n\t\t+ W(9, -1101638738, 1028424107, 1038478827, -1113101949)\n\t\t+ W(10, -1103799553, 1034438878, 1035929492, -1122643648)\n\t\t+ W(11, -1103674991, 1037909315, 1037239602, -1126283866);\n\tsum2 = W(0, 1023766557, 1016554458, 1021815988, -1137435361) + W(1, -1114856427, 1032032312, 1015306072, 1020144724)\n\t\t + W(2, -1103467660, 1016553974, 1044555388, -1105991725)\n\t\t + W(3, -1136376403, -1116988904, 1034521268, 1060795535)\n\t\t + W(4, -1088370625, -1127777881, -1113107482, 1050162106)\n\t\t + W(5, -1102546407, 1075503478, -1071164689, 1035804901)\n\t\t + W(6, 1038494252, -1104347057, -1103257907, 1072821349)\n\t\t + W(7, -1077590614, -1120944929, -1113447013, 1003678517)\n\t\t + W(8, 1025406308, -1113972415, -1112563255, 1036418439)\n\t\t + W(9, 1023629411, 1033762395, -1113239746, 1031283975)\n\t\t + W(10, 995356642, -1123929939, 1024784188, -1109441777)\n\t\t + W(11, 1026085595, 1037416902, -1112537357, -1140753514);\n\tWS(1055940220, -1124188157);\n\tsum1 =\n\t\tW(0, -1113999823, -1119569210, 1015781094, -1147977024) + W(1, -1117684995, -1108336232, 1015763751, 1043278990)\n\t\t+ W(2, -1106256755, 1046188556, 1036478965, 1006648968) + W(3, -1115168029, -1094609330, 1052603679, 1041916962)\n\t\t+ W(4, 1033522483, -1101485874, 1022861696, 1044340802)\n\t\t+ W(5, -1095339972, -1108128054, 1047885622, -1110457109)\n\t\t+ W(6, -1114461725, 1033154083, -1108564239, 1057380776)\n\t\t+ W(7, 1036635468, -1114614567, -1113117029, -1106205123)\n\t\t+ W(8, 1042723938, -1095928258, 1035899866, -1108232826) + W(9, 1032164308, 1021089498, -1125646960, 1041299799)\n\t\t+ W(10, -1139371156, 1034599135, -1121800074, -1107756257)\n\t\t+ W(11, -1171638077, 1027517543, -1131185034, -1115299047);\n\tsum2 =\n\t\tW(0, -1120118804, -1136369034, -1127959037, 1015341014) + W(1, 1033327798, -1113602386, 1013270421, 1027353114)\n\t\t+ W(2, -1129939889, 1034464346, 1041751325, -1114857235)\n\t\t+ W(3, -1120552641, -1125884733, -1117793827, -1117887441)\n\t\t+ W(4, 1049619624, -1103868602, -1117027367, 1035518448)\n\t\t+ W(5, -1095769137, 1043338219, 1049093640, -1097589990) + W(6, 1016254148, 1043285424, -1095274849, 1049861339)\n\t\t+ W(7, 1048627700, -1105817123, -1110780393, -1129166063)\n\t\t+ W(8, -1117623897, -1128474295, 1035712363, -1106207094)\n\t\t+ W(9, 1030787932, -1140216380, -1128598589, 1032330618)\n\t\t+ W(10, 1035384499, 1004274322, -1133117880, -1120569751)\n\t\t+ W(11, -1129927717, 1018695247, 1027229852, -1120123842);\n\tWS(1057163582, 1025817537);\n\tsum1 =\n\t\tW(0, 1037167835, 1031655825, -1096271953, 1045084224) + W(1, 1033520525, 1016078798, -1121852313, 1046829204)\n\t\t+ W(2, -1093143228, 1046279122, -1103697416, 1030441081) + W(3, 1034559945, 1038865075, -1085198281, 1057074420)\n\t\t+ W(4, -1107583934, 1036548879, 1027044951, 987855837) + W(5, 1050118415, 1040167170, 1024989936, 974934139)\n\t\t+ W(6, 1039868489, -1105739319, 1057217669, -1086525384) + W(7, 1034776664, 1034922130, 1037598609, -1112419405)\n\t\t+ W(8, 1047779928, -1087515051, 1044254259, -1113468278) + W(9, 1007581568, 1015381448, 1035805671, -1098926044)\n\t\t+ W(10, -1134624240, 1036139674, 1031626785, 1037495244)\n\t\t+ W(11, 1015872616, -1124461564, -1113253902, 1017385676);\n\tsum2 = W(0, -1136384493, 1036526786, 1028719631, -1123632092)\n\t\t + W(1, -1145098603, -1122280548, 1023814631, -1099879539)\n\t\t + W(2, 1030342243, 1043747658, -1102737141, -1130733945) + W(3, 1033659202, 1034332004, 1046758826, 1050427835)\n\t\t + W(4, -1112406001, 1014543213, 1017810163, 1013925981)\n\t\t + W(5, -1093436173, -1100447595, -1119158797, -1123106681)\n\t\t + W(6, 1009967381, -1106516740, 1051870663, 1041231786) + W(7, 1034292458, 1019870319, 1017781727, -1101585218)\n\t\t + W(8, 1042788701, 1045006578, -1107586767, 1013053757)\n\t\t + W(9, -1118180802, -1131784625, -1114786901, 1010389989)\n\t\t + W(10, -1143106923, -1119739637, -1141961139, -1112082470)\n\t\t + W(11, -1113417628, -1117114477, 1032164569, 1012643781);\n\tWS(-1081763615, -1092598780);\n\tsum1 = W(0, -1130922677, -1114318275, -1127997567, 1028467828)\n\t\t + W(1, 1023598927, -1139280241, -1122514966, 1026414532)\n\t\t + W(2, -1121576984, -1127358845, 1017010415, 1002425203)\n\t\t + W(3, -1136114845, 1017564438, -1088500870, 1061837768)\n\t\t + W(4, -1116904946, -1123987795, 1015393433, 1021344041)\n\t\t + W(5, -1098266094, 1035926493, 1037585875, -1136160989)\n\t\t + W(6, -1137786397, -1095352826, 1061435536, -1095349722)\n\t\t + W(7, 1040151266, -1131570741, 1023447063, -1116164091)\n\t\t + W(8, -1148866211, -1114585584, 1031742785, -1116123969)\n\t\t + W(9, -1142668459, -1123782681, 1039772482, -1114677716)\n\t\t + W(10, 1007413957, 1020007637, -1140705115, 1012849463)\n\t\t + W(11, 1024002537, -1116920883, -1128808099, -1126849079);\n\tsum2 =\n\t\tW(0, 1021958137, 1034408685, -1106091708, -1098486326) + W(1, 1028745769, 1024682325, -1117837187, 1036094407)\n\t\t+ W(2, -1147105428, -1110159069, 1031154711, -1116910593)\n\t\t+ W(3, 1026312941, 1033683959, -1094093059, -1088187103)\n\t\t+ W(4, -1105512708, 1039406737, -1115513274, -1124949158)\n\t\t+ W(5, 1061646324, 1055280585, -1100598283, -1117359799) + W(6, 1037370871, -1091894288, 1058519893, 1045036050)\n\t\t+ W(7, -1109806227, 1026080301, -1112242113, 1027011647)\n\t\t+ W(8, -1106569597, 1045721104, -1117345257, -1117139296)\n\t\t+ W(9, 1033686533, -1107943508, 1037199097, 1034325435) + W(10, -1144974476, 991455177, -1107052036, 1010459130)\n\t\t+ W(11, 1030945863, 1039418143, -1124920152, -1112397476);\n\tWS(1049187708, 1061143407);\n\tsum1 = W(0, 1032206028, 1046469409, 1044620591, -1086760535) + W(1, 1049164066, 1022165171, -1121811767, 1033070593)\n\t\t + W(2, 1020031147, -1113096094, -1132628435, 1009114287)\n\t\t + W(3, 1032297330, 1049873346, -1111788011, -1092765627)\n\t\t + W(4, 1051671486, 1034535880, -1136528167, 1050639650)\n\t\t + W(5, -1089881571, -1083700943, 1044844041, 1024964917)\n\t\t + W(6, 1005295654, 1041319460, -1127219501, -1092202425) + W(7, 1037004161, 1011091807, 1031846890, 1041542033)\n\t\t + W(8, 1033106537, 1011207027, 1026161438, 1038185039) + W(9, -1136496587, 1036329419, 991465499, 1015330121)\n\t\t + W(10, -1134373563, 1018308239, 1032778794, 1043869975)\n\t\t + W(11, -1112918515, 1026637361, 1019220893, 1032129132);\n\tsum2 =\n\t\tW(0, -1123557888, 1024038368, 964997605, -1123190992) + W(1, -1170950771, 1009594487, -1139662759, 1022314468)\n\t\t+ W(2, 1007232143, 1040909663, -1119781676, 1011035391) + W(3, -1120649660, 1016353740, -1112234110, 1035500288)\n\t\t+ W(4, -1122589660, -1122952928, 1021700488, -1149024430) + W(5, 1052797849, 1059925772, 1021322900, 1015425876)\n\t\t+ W(6, -1119215196, -1127462832, 1032636001, -1123381020)\n\t\t+ W(7, -1124742672, 1024335912, 1025758640, -1109226016)\n\t\t+ W(8, -1096670151, -1110751472, 1037872214, -1115520552)\n\t\t+ W(9, -1134635263, 1022909500, -1103246759, -1114698588)\n\t\t+ W(10, -1123038904, 1026100870, 1025396502, -1106595065)\n\t\t+ W(11, -1095307242, 1016687528, 1025386190, -1128653768);\n\tWS(-1080960863, 1058419411);\n\tsum1 = W(0, -1118700722, -1111066847, 984198859, 1043965403)\n\t\t + W(1, -1108783427, 1000248987, 1032983255, -1112208894)\n\t\t + W(2, -1099715572, -1113907195, -1113914551, -1124179019)\n\t\t + W(3, -1122641758, -1099579692, 1049479517, 1050672334)\n\t\t + W(4, -1105019770, -1128328213, 1033094082, -1090459763)\n\t\t + W(5, 1062349342, 1061713555, -1095692932, 1023738862)\n\t\t + W(6, -1121000958, -1107128402, -1099059374, 1059583022)\n\t\t + W(7, -1099879371, -1131329315, -1133773881, -1107276892)\n\t\t + W(8, 1033076198, -1121054998, -1108028092, 1027231576)\n\t\t + W(9, -1141737059, -1116550064, -1125040759, 1024684126)\n\t\t + W(10, 1024533736, -1113801521, -1120123854, -1103159313)\n\t\t + W(11, 1037355536, 1026513898, -1110661700, 1007580489);\n\tsum2 =\n\t\tW(0, 995719700, -1129327601, -1125739202, 1029045123) + W(1, 1025141617, -1154923092, -1114687459, 1021214658)\n\t\t+ W(2, 1027238209, 1037994429, -1113434302, 1007115993) + W(3, 1024240180, 997717028, -1120915257, 1036441804)\n\t\t+ W(4, 1032546636, 1003062850, -1115935924, 978476974) + W(5, -1078687396, 1066236156, 1035362808, -1118441375)\n\t\t+ W(6, 1025427056, -1140454571, -1111104335, 1022342240) + W(7, 1033358736, 1017727844, -1123062148, 1010080137)\n\t\t+ W(8, -1128218828, 1028953671, -1166615662, -1129048983) + W(9, 999440794, 1002330866, -1147995690, 1024857232)\n\t\t+ W(10, -1165027863, 1019778022, -1131128122, -1152746908)\n\t\t+ W(11, -1128526870, -1126806088, 1024563904, 1009762473);\n\tWS(-1082880574, -1095080656);\n\tsum1 =\n\t\tW(0, -1120399523, -1111736159, -1111698940, 1037879414)\n\t\t+ W(1, 1037066756, -1118524245, -1123397517, -1128373242)\n\t\t+ W(2, 1019423266, 1028697399, -1119567216, 1027581671) + W(3, -1135116544, 1025039907, -1092929515, 1062200098)\n\t\t+ W(4, -1131199446, -1139610160, -1168421181, -1127950106)\n\t\t+ W(5, -1098702381, 1023355236, 1027882718, -1139561152)\n\t\t+ W(6, -1131259136, -1098593297, 1060991762, -1094756999)\n\t\t+ W(7, 1038218895, 1005358744, 1037719400, -1106461210) + W(8, 1018082074, -1115312044, 1022591155, -1113962893)\n\t\t+ W(9, -1113348279, 1024172498, 1036669022, -1106391640)\n\t\t+ W(10, -1118950442, 1026868195, 1030740495, 1028249110)\n\t\t+ W(11, -1114016273, -1109491766, -1141634128, -1126548648);\n\tsum2 = W(0, 1007561151, -1106890729, -1144059530, 1010626011)\n\t\t + W(1, -1140206187, -1152147163, -1118820752, 1031296198)\n\t\t + W(2, -1112391017, -1114880200, -1136937433, -1120281594)\n\t\t + W(3, -1128452386, -1110907715, 1056169840, 1052511775)\n\t\t + W(4, 1034255225, -1114711449, -1121745985, 1032462388)\n\t\t + W(5, -1096446085, -1094697844, 1033067226, 993102387) + W(6, -1114861795, 1035962501, 1031556034, 1056886944)\n\t\t + W(7, -1104164393, -1120009849, -1121584151, 1035033495)\n\t\t + W(8, 987032615, -1129701328, 1013679559, -1122813977) + W(9, -1120079456, 982365671, -1138039959, 980377326)\n\t\t + W(10, -1115367679, -1118918686, -1129117272, 1035951051)\n\t\t + W(11, -1119286197, -1126702674, -1137374445, 1006646323);\n\tWS(1058795070, 1058351276);\n\tsum1 =\n\t\tW(0, -1129226172, -1106246658, 1041614193, 1041522846) + W(1, -1106977045, -1140271486, 1032650784, -1132244111)\n\t\t+ W(2, 1048401911, 1041471472, 1031926461, -1130658915) + W(3, -1134152362, -1102574120, 1050141831, 1033352747)\n\t\t+ W(4, -1121658742, -1115542891, -1122312016, 1028257624)\n\t\t+ W(5, -1088102699, 1030285885, -1124591186, -1119417531)\n\t\t+ W(6, -1145265749, 1004724909, -1093353638, 1056599450)\n\t\t+ W(7, -1107883356, -1155196377, -1118796187, -1128587973)\n\t\t+ W(8, -1112285036, 1049138668, -1114299650, 1003429157)\n\t\t+ W(9, 1017891569, -1150296521, -1122892680, 1043369227)\n\t\t+ W(10, -1130730345, -1125742491, -1131365684, -1107598873)\n\t\t+ W(11, -1120116589, 1040658126, 1034850634, -1137642362);\n\tsum2 =\n\t\tW(0, 1018264792, -1109681111, 1028734812, -1104210606) + W(1, 1025579416, 1029305888, 1019878456, -1134735936)\n\t\t+ W(2, -1093714299, -1099909667, 1032419228, -1113499692)\n\t\t+ W(3, 1020074080, -1106212594, 1034660210, -1098896203) + W(4, 1010388000, 1025031188, -1143212320, 1037009054)\n\t\t+ W(5, 1047288883, 1060586916, 1030286292, -1130541520) + W(6, -1148803168, -1132238328, 1031452084, 1042866381)\n\t\t+ W(7, -1107165918, -1127563664, -1127882992, 1032289620)\n\t\t+ W(8, -1112028563, -1109339206, 1019446368, 1026005920) + W(9, 1017409120, 990246720, -1115169564, 1023925320)\n\t\t+ W(10, 989303425, -1123344268, -1131165168, 1004132864)\n\t\t+ W(11, 1020410832, -1112228144, 1029468412, 1009015280);\n\tWS(1043816952, 1056206353);\n\tsum1 =\n\t\tW(0, -1132948972, -1115461859, 1034684352, 1037119642) + W(1, -1107088436, -1144087781, 1024900084, -1107172113)\n\t\t+ W(2, 1038250028, 1039626815, -1110088668, -1116127087)\n\t\t+ W(3, -1150680698, -1097009915, 1061195075, -1095598055)\n\t\t+ W(4, -1113187289, -1117712852, 1016358425, -1102438229)\n\t\t+ W(5, 1051576078, 1056604231, -1102307882, -1114968828)\n\t\t+ W(6, -1160444148, 1024199571, -1088975285, 1057172865)\n\t\t+ W(7, -1103288997, -1134624362, -1115326124, -1148961467)\n\t\t+ W(8, 1010078034, 1029312608, -1122873761, 1012385158) + W(9, 1019123435, -1130723763, -1107729186, 1039764276)\n\t\t+ W(10, 1032878393, -1114736693, -1120343575, -1144998513)\n\t\t+ W(11, 1022450003, -1112740858, 1034042985, 1002559709);\n\tsum2 =\n\t\tW(0, -1135809827, 1031002711, -1136033931, -1114169661) + W(1, -1107967067, 1027957130, -1140675011, 1009667595)\n\t\t+ W(2, 1025543601, -1124911966, -1108557845, 1004385158)\n\t\t+ W(3, -1137384851, -1156373420, -1123691685, 1056449903)\n\t\t+ W(4, -1096033675, 1015282250, -1147988326, 1010789683)\n\t\t+ W(5, -1105219090, 1044469394, -1118550723, -1115586301)\n\t\t+ W(6, 1019754904, -1122328477, -1118075063, 1046754031)\n\t\t+ W(7, 1020360378, -1120013003, -1172160176, -1135703979)\n\t\t+ W(8, -1111692677, 1034039333, 1005574774, -1130287690) + W(9, 1006265798, 1016962928, -1131889022, 1024901767)\n\t\t+ W(10, 1025982043, -1127946498, 990940844, -1135289651)\n\t\t+ W(11, 1010975355, -1111731157, 1036125487, -1169619760);\n\tWS(1049886076, 1034318367);\n\tsum1 = W(0, -1140544720, 1022042959, 1021784769, -1131075883)\n\t\t + W(1, -1142660485, -1160888244, 1006465467, -1106141033)\n\t\t + W(2, 966352080, 1032360624, 1029412697, -1121174096) + W(3, 1025588553, -1104462159, 1059646174, -1086897182)\n\t\t + W(4, 1042100949, 1017231209, -1118154094, -1100197533)\n\t\t + W(5, 1051735858, 1059041662, -1106256562, -1150715274) + W(6, 996302474, 1029682164, -1085821075, 1057694799)\n\t\t + W(7, -1106530518, 1024907260, -1111905052, -1112348667)\n\t\t + W(8, 1029991670, 1036690656, -1121375714, 1015672965)\n\t\t + W(9, -1125961261, -1117824763, -1111853843, 1030592201)\n\t\t + W(10, 1017125029, -1120397516, -1122979160, -1123002959)\n\t\t + W(11, 1031029131, -1155480906, 1014936522, -1124207481);\n\tsum2 = W(0, -1110846605, 1032320648, 1027180085, 1029603693)\n\t\t + W(1, 1033577170, -1112673640, -1118194097, 1027617785)\n\t\t + W(2, -1144235925, 1030911393, -1134544211, -1123614185)\n\t\t + W(3, -1143898437, 1000132981, 1031570329, -1119293171)\n\t\t + W(4, -1126616369, -1129974305, 1019764549, -1102116254)\n\t\t + W(5, 1058710858, 1058397441, -1096477332, 1018853209) + W(6, 1008325379, 1026769453, 1031557517, -1104852463)\n\t\t + W(7, -1103611475, 1036639048, 999139301, -1131321177)\n\t\t + W(8, -1129394727, -1097515304, -1115701158, 1018401637)\n\t\t + W(9, 997400075, 1008054267, -1131248001, -1123234663)\n\t\t + W(10, -1119810656, 1024391909, 1024689095, -1118482095)\n\t\t + W(11, -1120094485, -1106708620, -1134741251, 1017993989);\n\tWS(1058429118, 1064863249);\n\tsum1 =\n\t\tW(0, 1021156518, 983001563, 1054264097, -1097350840) + W(1, -1175841770, 964768362, 1024394983, -1115666854)\n\t\t+ W(2, 1049468028, -1099725362, 1024539904, -1149024695) + W(3, 1020219616, 1039490386, 1055450440, -1115114453)\n\t\t+ W(4, 997016493, 1012766063, -1131178666, 1046648007) + W(5, -1104196510, -1085827188, 1043203980, 1022718592)\n\t\t+ W(6, 1016100640, 1017911734, 992909240, -1100930382) + W(7, 1033767351, -1136266891, 1007341951, 1043757188)\n\t\t+ W(8, -1104186631, -1128095056, -1119513801, 1035657141)\n\t\t+ W(9, 994206685, -1128564932, -1122765517, -1118903024) + W(10, -1131557236, 1016423590, 964693930, 1045299318)\n\t\t+ W(11, -1105268364, 1023907580, -1106015350, 1029236260);\n\tsum2 = W(0, 1005391535, -1106696811, 1050575955, -1100156814)\n\t\t + W(1, -1098256564, 1028021126, 1018096716, -1121907467)\n\t\t + W(2, 1051313221, 1060662591, 1029467086, -1129063320) + W(3, -1135288360, 1026226746, 1047952814, 1068258385)\n\t\t + W(4, -1142136447, -1131820748, -1121648533, 1031305614)\n\t\t + W(5, -1081952512, -1074657656, 1051661425, 1008147176) + W(6, 996459166, 1032267559, 1040750694, -1095314974)\n\t\t + W(7, 1035381379, -1168737402, -1130245220, -1111725659)\n\t\t + W(8, 1031579134, 1036231973, -1107714686, 1020424408) + W(9, -1123582348, 1028271694, 1007524520, 1044691450)\n\t\t + W(10, 1022647148, -1129848660, 1033610651, -1108648643)\n\t\t + W(11, 1034169827, 1044987108, -1100160947, 1024695710);\n\tWS(-1083443454, 998713176);\n\tsum1 = W(0, 1032696047, 1040709994, 1040929033, -1087559501) + W(1, 1049786774, -1146095614, 1026355790, 1040668906)\n\t\t + W(2, 1032459486, -1103862520, 1037090637, 1033091241) + W(3, 1024354795, 1036398699, 1012490030, -1102928053)\n\t\t + W(4, 1047072725, 1024780023, 1034252472, 1051748575) + W(5, -1097753826, -1093112676, 1050721065, 1037512365)\n\t\t + W(6, 1012872363, 1035129883, -1114537329, -1092883854) + W(7, 1039546228, 1024615038, 1032281789, 1044965075)\n\t\t + W(8, -1100635790, -1099081393, 1011437457, 1037286498)\n\t\t + W(9, 1027888345, 1031400701, -1103916602, -1104850339)\n\t\t + W(10, 1009955155, 1036010231, 1016830581, 1048807512)\n\t\t + W(11, -1098186970, -1112352715, -1114553850, 1033653631);\n\tsum2 =\n\t\tW(0, 1035861958, -1098289107, 1026686124, -1096172460) + W(1, -1113513064, 1019723703, -1161872500, -1119785106)\n\t\t+ W(2, 1049978705, -1107697817, 1027596044, -1121217732)\n\t\t+ W(3, -1113290777, 1033623622, -1098402027, -1091833397)\n\t\t+ W(4, -1098063812, 1033198374, -1137177342, 1045692473) + W(5, 1024040864, 1013412750, 1031079096, -1107709748)\n\t\t+ W(6, 1034613598, -1106425659, 1053770527, 1046082211) + W(7, 1012376430, 1038124498, -1103597964, -1117971136)\n\t\t+ W(8, -1127968019, 1057075430, -1095279992, -1112843267) + W(9, 1038756242, 1019694879, 1049090628, 1047895771)\n\t\t+ W(10, 1045163433, -1120386622, -1111249467, -1114046628)\n\t\t+ W(11, 1052585151, -1102204197, -1100444173, 1034273086);\n\tWS(-1086369662, -1078015058);\n\tsum1 =\n\t\tW(0, 1024279387, 1042615374, 1054091094, -1095346029) + W(1, 1050416872, -1113840294, -1100066053, -1106499229)\n\t\t+ W(2, -1113085188, -1103658220, -1111759460, -1141254386)\n\t\t+ W(3, 1039589628, 1049518735, 1050614757, -1097514477) + W(4, 1048966812, 1032485602, -1104719791, -1115604002)\n\t\t+ W(5, -1103236040, -1100854410, -1122281110, -1113439156)\n\t\t+ W(6, -1113174076, -1127523972, 1047781504, -1097175852)\n\t\t+ W(7, 1043919349, -1119980106, -1125885710, 1049389829) + W(8, -1108066658, 1026529231, 1032565272, 1039770777)\n\t\t+ W(9, -1111149795, -1102519338, 1041501469, -1104719494)\n\t\t+ W(10, 1027138593, -1104628175, 1024511623, 1042212335)\n\t\t+ W(11, 1048227542, -1099302313, 1036646913, 1032389542);\n\tsum2 =\n\t\tW(0, -1092512531, -1098738343, 1063615535, 1009177475) + W(1, -1119750726, 1030476954, -1093473489, -1088925799)\n\t\t+ W(2, 1062426368, 1026425874, 1012050343, -1120184004) + W(3, -1081280020, 1042571962, 1067242406, 998962046)\n\t\t+ W(4, 1025403720, 1031881676, -1076988140, 1043337888)\n\t\t+ W(5, 1066811408, -1096426756, -1129159374, -1116680638)\n\t\t+ W(6, -1081342477, 1033193400, 1066297017, 1022780060) + W(7, 1023044380, -1135563955, -1086556968, 1010020371)\n\t\t+ W(8, 1060290312, 1026166068, -1115355073, 1004442726) + W(9, -1107875638, -1102154130, 1052028857, 1017583668)\n\t\t+ W(10, 1026819560, 946141982, -1121362077, -1126174974)\n\t\t+ W(11, 1037059936, -1119102823, -1127777686, 1034449190);\n\tWS(-1129707456, 1007685382);\n\tsum1 = W(0, -1134894751, -1098519836, 1040671079, 1044073412)\n\t\t + W(1, -1109530006, -1134057701, 1044154267, 1030394337) + W(2, 1013414869, 1041040503, 1035376874, 1028314315)\n\t\t + W(3, -1111052786, -1107874844, -1103276809, 1038778991)\n\t\t + W(4, -1105794628, -1112561176, 1038046773, -1118678129)\n\t\t + W(5, -1098881194, -1107344299, -1139987723, 992777541)\n\t\t + W(6, -1192544411, -1111301144, -1110522396, 1048980909)\n\t\t + W(7, -1108336721, -1112828028, -1128991721, -1115520098)\n\t\t + W(8, -1107120076, 1052479600, -1112546431, -1132207293)\n\t\t + W(9, 1035051017, 1015910765, 1033063921, 1049200001) + W(10, 1023468750, 999515194, -1122391156, -1103669035)\n\t\t + W(11, -1111557603, 1051478546, 1018554845, -1119107128);\n\tsum2 =\n\t\tW(0, -1137824107, -1110122518, -1137081539, 1039063461)\n\t\t+ W(1, -1158403413, -1124656554, -1126465818, 1033612180)\n\t\t+ W(2, -1106894813, 1047362418, -1117814890, 1023374342) + W(3, 1005362547, -1116868027, 1045165527, 1067526191)\n\t\t+ W(4, -1136640937, -1115663214, -1158497445, 1039739597)\n\t\t+ W(5, -1106604299, 1071589227, 1044031039, -1148955153)\n\t\t+ W(6, -1119770196, 1037998233, -1138568822, 1061860820)\n\t\t+ W(7, -1133800170, -1123862185, 1021074352, -1112420682) + W(8, 1039276731, -1077533661, 1031122886, 999718675)\n\t\t+ W(9, -1138544392, 1025116420, -1104439342, -1073373771)\n\t\t+ W(10, -1106196407, -1139157324, 1034621027, -1120069279)\n\t\t+ W(11, -1113398206, -1094637864, 1031315442, 1025985948);\n\tWS(1033791472, -1138498893);\n\tsum1 = W(0, -1143657507, -1102835756, 1024249065, 1044190455)\n\t\t + W(1, -1107762844, 1008291608, 1014781903, -1108646231)\n\t\t + W(2, -1130492804, 1021681616, -1112711792, -1128240816)\n\t\t + W(3, 1029133201, -1108649138, 1008218246, -1115040338)\n\t\t + W(4, 1019895480, 1025256893, 1018917100, -1106020223) + W(5, 1054388603, 1058377694, -1123372431, 1014932868)\n\t\t + W(6, 998381448, 1003669472, -1092207694, 1046387590) + W(7, -1111491159, 1007448080, 1016812674, -1113672010)\n\t\t + W(8, -1132293500, 1049136345, -1123523050, 1008489644)\n\t\t + W(9, -1118545247, -1114481905, -1112726231, 1017676194)\n\t\t + W(10, -1123035739, -1112884042, -1137667330, -1127743919)\n\t\t + W(11, -1119594899, -1119541597, 1028355707, 1001709096);\n\tsum2 = W(0, 1014470821, -1106657768, 1034825132, 1006830039)\n\t\t + W(1, -1104684796, -1124459301, -1120344268, -1106292024)\n\t\t + W(2, 1032219219, -1101139832, -1114556582, 1008940380)\n\t\t + W(3, -1114330800, 1049926230, 1057813788, -1102461554)\n\t\t + W(4, -1111886229, 1029827978, -1106002658, 1054743689)\n\t\t + W(5, 1049962194, -1103958261, 1050373872, -1133852786)\n\t\t + W(6, 1024999308, -1112305858, 1051810194, -1098680718)\n\t\t + W(7, 1035894797, -1109427720, -1126273593, -1122403994)\n\t\t + W(8, 996027236, 1040205712, -1100520246, 1024816377) + W(9, -1127411221, -1116955850, 984340447, -1109277736)\n\t\t + W(10, 1014102650, -1117160816, -1123975632, 1030827431)\n\t\t + W(11, -1114551452, -1111240037, -1106040331, 1003623824);\n\tWS(1060089726, 1074996161);\n\tsum1 =\n\t\tW(0, -1117558175, 1046443391, -1083103171, 1040714346) + W(1, 1044503809, 1023987857, 1029119241, 1039893948)\n\t\t+ W(2, -1093429938, 1021452133, 1030628716, 1027140771) + W(3, -1141503452, 1041448800, -1088988175, 1048946821)\n\t\t+ W(4, 1038933875, 1026874120, 1010789890, 1035829124) + W(5, 1032282738, 1021975771, 1038764813, 1026271340)\n\t\t+ W(6, 1037081758, 1041862066, 1035486030, 1040332065) + W(7, 1032949373, 1034225415, -1120312844, 1028398131)\n\t\t+ W(8, -1142682180, -1090323173, 1041097413, -1113760891)\n\t\t+ W(9, 1027150698, 1038548631, -1111879740, -1112512014) + W(10, 1029165798, 1028642719, 1021223318, 1047369209)\n\t\t+ W(11, -1105296983, -1095359061, 1046714577, -1134282558);\n\tsum2 = W(0, -1130708327, -1131662151, 1027052068, -1104634511)\n\t\t + W(1, 1037500532, -1117309872, -1156760442, -1160974837)\n\t\t + W(2, -1119116140, -1148640061, 1028521640, -1132259207)\n\t\t + W(3, 1011385503, -1122121264, 1006726095, -1101053828)\n\t\t + W(4, 1041142688, -1129219511, 1005458237, -1104012424)\n\t\t + W(5, 1053197196, 1050251696, -1121651972, -1148190653)\n\t\t + W(6, 1015786967, 1025508020, -1150821434, 1043632028)\n\t\t + W(7, -1105814552, 1005943453, -1121500080, -1106371091)\n\t\t + W(8, 1032166230, -1115585403, -1117076340, -1120252400)\n\t\t + W(9, 1023017975, 1032453110, -1116451706, 1032061998)\n\t\t + W(10, -1120517680, 1024831312, 1008927007, -1107217673)\n\t\t + W(11, -1143126685, 1045664978, -1103126409, -1126349911);\n\tWS(-1081408895, 1057237802);\n\tsum1 =\n\t\tW(0, 1016592219, 1050393725, -1096948620, -1099121222) + W(1, 1042338077, 1026859007, -1135569700, 1025037351)\n\t\t+ W(2, 1021729271, -1114451665, 1033766733, 1023688209) + W(3, 1019913045, 1042967287, -1123436299, -1104931659)\n\t\t+ W(4, 1036822635, 994107237, -1134722237, 1042881918) + W(5, -1107250293, -1092679092, 1042265522, 1017621813)\n\t\t+ W(6, 1020337237, 1033060699, 1047123275, -1098053310) + W(7, 1043883210, 1033354815, 1019971573, 1038993285)\n\t\t+ W(8, 1037602588, -1091584672, 1042862441, -1147819555) + W(9, 1015924209, 1028206140, 1034435092, -1092984777)\n\t\t+ W(10, 1029491668, 1035642823, 1027236154, 1041649576) + W(11, 1044331459, -1089381821, 1042007901, 963919445);\n\tsum2 = W(0, -1127968320, -1092240358, 1057542400, 1016463192)\n\t\t + W(1, -1094079665, 1037438732, 1036537032, 1030963640)\n\t\t + W(2, -1105653780, -1097383073, 1040975890, 1019305024)\n\t\t + W(3, -1112917417, -1097473768, 1053316325, 1038201480)\n\t\t + W(4, -1101066411, 1028884816, 1020801080, -1109029546) + W(5, 1058712288, 1052867895, 1013027424, 1010261952)\n\t\t + W(6, 1019615648, -1116583352, 1043894648, -1123129572)\n\t\t + W(7, -1118015492, 1027371024, -1127208552, 1028578068)\n\t\t + W(8, -1093453186, -1141347136, -1117505000, -1113360113)\n\t\t + W(9, 1023589392, -1113404853, 1034405836, 1006791808)\n\t\t + W(10, -1111557726, 1034904608, -1121416948, 1041090246)\n\t\t + W(11, -1094394128, 1037486484, 1044943944, -1104647878);\n\tWS(-1076745215, 1064070508);\n\tsum1 =\n\t\tW(0, 1019383636, 1043437193, -1100863080, 1019299111) + W(1, 1041928012, 1018313975, -1138649581, 1030286820)\n\t\t+ W(2, 1033675388, 1027453406, 1031909515, -1136380470) + W(3, 1029667879, 1040316179, -1102225484, -1110289513)\n\t\t+ W(4, 1043406276, 1026991539, -1127653591, 1048543741)\n\t\t+ W(5, -1084687593, -1082029409, 1044625233, -1136351578) + W(6, 1027426151, 1029763954, -1111626052, 983973284)\n\t\t+ W(7, 1044339921, 1027257018, 1022926189, 1039947283) + W(8, 1026499316, 1031954367, 1039879984, 1022902273)\n\t\t+ W(9, 1004012708, 1025479577, -1122995300, -1118301831) + W(10, 1022733729, 1026798858, 1016119660, 1041368223)\n\t\t+ W(11, 1026134601, 1016553765, 1012331970, 1027440187);\n\tsum2 =\n\t\tW(0, -1131696089, 1012459087, -1112347233, 1039451269) + W(1, -1158657302, -1129595249, 1008718823, -1135045027)\n\t\t+ W(2, -1125420309, -1110618065, 1007247903, 999949222) + W(3, -1149188438, -1118135053, 1041969824, 1024383435)\n\t\t+ W(4, 1015365577, -1130814181, -1140198251, 1033739972) + W(5, 1052325325, 1052741682, 1034080133, -1140370763)\n\t\t+ W(6, -1129603953, -1142742214, 1029891118, -1121721953)\n\t\t+ W(7, -1110453303, 1020979581, 1007479839, 1015462815)\n\t\t+ W(8, -1120072309, -1095903036, -1162307222, -1132990667)\n\t\t+ W(9, -1141563590, -1126906553, 1017890385, -1105015368)\n\t\t+ W(10, -1122346803, 1008938691, 1018622169, -1135479163)\n\t\t+ W(11, 1016803437, -1098230278, 1021342643, -1137891195);\n\tWS(-1094563452, 1051169575);\n\tsum1 =\n\t\tW(0, -1154622990, 1018130713, 1040428881, -1120902330) + W(1, -1113835211, 1019319877, 1029393378, 1035203109)\n\t\t+ W(2, 1032896399, 1039535746, 1021002107, 1036762426) + W(3, -1117775501, -1113234793, 1049040808, -1102863965)\n\t\t+ W(4, -1107942972, -1135300966, 1033996553, -1106127031)\n\t\t+ W(5, -1112183035, -1090463816, -1105904891, 1040237135)\n\t\t+ W(6, -1136342582, -1114335628, 1048012112, 961094679) + W(7, -1148767576, 1032716400, 1018491963, -1112874623)\n\t\t+ W(8, 1044702279, -1098092733, -1124337998, -1137189022) + W(9, 1032030382, 1023872671, 1032915973, 1033184663)\n\t\t+ W(10, 1006151100, 1037223880, 1015760954, -1110067034)\n\t\t+ W(11, 1035998904, 1029109433, -1110631596, 1013167238);\n\tsum2 =\n\t\tW(0, 1028413027, -1121092135, 1017337743, -1137632446) + W(1, 999930971, 1027578971, -1120070369, -1130520759)\n\t\t+ W(2, 1037177446, -1104029390, 1033133092, -1114678191)\n\t\t+ W(3, 1012563150, -1120753460, -1106734706, 1048794348)\n\t\t+ W(4, -1111694827, 1030530567, -1111535757, -1097640928)\n\t\t+ W(5, 1051800696, 1050145982, 1041394994, -1119592910) + W(6, 1011962278, -1098008778, 1035782812, -1114477541)\n\t\t+ W(7, -1118971109, 1001961835, 1009477102, 999766235) + W(8, -1106510696, 1047938812, -1127041263, 1024176823)\n\t\t+ W(9, -1153318262, -1122757360, 1010623246, -1111017918)\n\t\t+ W(10, 1020162151, -1115486877, 974823129, -1129371381)\n\t\t+ W(11, 1028214977, -1123769252, -1124747017, 1007999422);\n\tWS(1057759166, -1088449289);\n\tsum1 =\n\t\tW(0, -1129635066, 1044873994, -1087389198, -1116302487) + W(1, 1048786726, 1017011581, 1025446574, 1037627635)\n\t\t+ W(2, -1097118359, 1022204225, 1039292653, 1021371937) + W(3, -1144519245, 1041685209, -1089578865, 1022125102)\n\t\t+ W(4, 1045860709, 1025212662, 1017539549, 1033910011) + W(5, -1129568803, -1105345911, 1045748274, 1031878029)\n\t\t+ W(6, 1026395242, 1039651930, 1010566389, -1122366800) + W(7, 1027479143, 1013486066, -1122678010, 1035038013)\n\t\t+ W(8, 1030050103, -1097803608, 1033498658, 1007580942) + W(9, 1025431320, 1039320958, -1110122707, -1119554634)\n\t\t+ W(10, -1161253492, 1028360045, 1024557433, 1038868536)\n\t\t+ W(11, -1112614790, -1126568107, 1010965710, 1015223035);\n\tsum2 =\n\t\tW(0, -1162281894, 1033992046, 1042856153, 1038465062) + W(1, -1093956780, 1024284423, -1124547002, -1149048922)\n\t\t+ W(2, 1036788056, 1046094595, -1100316514, 1035682376) + W(3, -1150111187, 988741862, -1112557119, 1060179844)\n\t\t+ W(4, -1090501223, -1122577303, -1135956229, -1132541637)\n\t\t+ W(5, -1097406101, 1049669935, 1022378118, -1113139255)\n\t\t+ W(6, -1145634890, -1132011310, -1121853795, -1101657128)\n\t\t+ W(7, 1045140163, -1130855582, 965409433, 1024739191) + W(8, -1104384368, 1042681611, -1121116299, -1118824057)\n\t\t+ W(9, -1123274137, 1008671821, 1032013500, -1111116605)\n\t\t+ W(10, 1035479824, 1006161754, 1024679583, -1129294934)\n\t\t+ W(11, -1147059498, 1027020519, -1131272734, -1124922046);\n\tWS(-1086987838, -1100233980);\n\tsum1 =\n\t\tW(0, 1015308459, 1041765192, -1105415847, 1042444900) + W(1, -1111075669, 1003799483, -1122325985, 1028094431)\n\t\t+ W(2, -1114108890, 1041449686, -1106140165, 1034767973)\n\t\t+ W(3, -1116672610, 1042485054, -1092596043, 1049087917)\n\t\t+ W(4, -1110170951, -1144225139, 1032904116, -1118546351)\n\t\t+ W(5, 1046690691, -1128556841, 1034284768, 1033288361)\n\t\t+ W(6, -1141168915, -1118052589, 1054244345, -1089307961)\n\t\t+ W(7, 1026589088, 1010481109, 1033123257, -1116818498) + W(8, 1049735534, -1094503991, 1030527932, -1121578684)\n\t\t+ W(9, 1001375875, 992241989, 1040724504, -1104029377) + W(10, 1008796465, 1030765989, 1015833828, 1015146386)\n\t\t+ W(11, 1041637233, -1100869156, -1123717612, -1124977133);\n\tsum2 = W(0, -1128145157, -1100557855, 1057648426, 1048654145)\n\t\t + W(1, -1122215769, -1133425768, 1026284201, -1106810438)\n\t\t + W(2, 1054522141, 1057115188, -1103409060, 1017140792) + W(3, 1012811840, 1042787919, -1098531848, 1046636853)\n\t\t + W(4, 1046426252, -1118227807, -1136599052, 1044596046)\n\t\t + W(5, -1073275189, -1074262745, 1035358469, -1143532160) + W(6, 992541697, 1038174685, 1061008073, 1044984510)\n\t\t + W(7, 1036107748, 1016191398, 1011005728, -1104618112) + W(8, 1059653331, 1060082709, -1104639697, 981079778)\n\t\t + W(9, -1127430370, -1166127490, 1035655860, 1034192337)\n\t\t + W(10, -1130597644, 1006837720, 995789721, -1116633305)\n\t\t + W(11, 1017274260, 1033697834, -1112828961, 1021901152);\n\tWS(-1092446204, 989212831);\n\tsum1 =\n\t\tW(0, 1007124942, 1048125124, -1138101793, -1141178857) + W(1, -1102978326, 1034583667, -1116778591, -1131432602)\n\t\t+ W(2, -1106585464, 1019782926, -1115311760, 1015089582) + W(3, 1027403088, 1042237585, 1016240146, 1036610823)\n\t\t+ W(4, -1110971902, 1027127900, -1121715541, -1138060917)\n\t\t+ W(5, 1037962972, -1101006449, -1114322839, 1008360193) + W(6, 1019921952, 1027977243, 1053191424, -1094792341)\n\t\t+ W(7, 1031189102, 1028625507, 1020332096, -1126238792) + W(8, 1053622732, -1089064867, -1137835047, 1017386452)\n\t\t+ W(9, -1139218425, -1131884420, 1043276755, -1101892348)\n\t\t+ W(10, -1132849129, 1009465805, 1020381759, 1024321015)\n\t\t+ W(11, 1049124886, -1107274751, -1110951117, 1008208785);\n\tsum2 =\n\t\tW(0, -1120159352, -1088595541, 1060560783, 1061831343) + W(1, -1089452071, -1101640393, -1125980662, 1050146519)\n\t\t+ W(2, -1093128727, -1098317152, 1042347964, 1038452583)\n\t\t+ W(3, -1131578305, -1090859444, 1057304640, 1057012981)\n\t\t+ W(4, -1095995319, -1105624394, 1028063854, -1107336769)\n\t\t+ W(5, 1071289406, 1069689231, -1096815763, 1041229675)\n\t\t+ W(6, 1021975879, -1105868965, -1087527230, -1097221007)\n\t\t+ W(7, -1104502319, 1037791301, 1033612769, 1041431951)\n\t\t+ W(8, -1086794372, -1086042421, 1049524493, -1143180172)\n\t\t+ W(9, -1119579693, -1112749441, 982969010, 1033122226) + W(10, -1104150062, 1029453052, 1040487308, 1042279365)\n\t\t+ W(11, -1089785065, -1088997285, -1135764460, 1049121852);\n\tWS(-1080642303, 1037515653);\n\tsum1 =\n\t\tW(0, 1014399585, -1123461796, -1115821917, 1037702505) + W(1, -1105260875, -1134503912, 1040389217, 1009459592)\n\t\t+ W(2, -1138501592, 1046330151, -1113097082, 1032999462)\n\t\t+ W(3, 1025436037, -1118449912, 1046808963, -1088063230)\n\t\t+ W(4, -1166545913, 1011659972, 1035628117, -1111999897) + W(5, 1046961203, 1048171302, -1112931778, 1033647146)\n\t\t+ W(6, 1032176658, 1042449564, -1085801589, 1046621083) + W(7, -1116953058, 1020514160, 1019714410, -1098862637)\n\t\t+ W(8, 1042823052, 1033619294, -1108126015, 1023868127) + W(9, 1031481267, 1015874414, 1032561937, 1017602698)\n\t\t+ W(10, 1033606503, 1030447848, -1129425897, -1108656118)\n\t\t+ W(11, 1022709518, -1172911161, -1161936349, 1015791986);\n\tsum2 =\n\t\tW(0, -1139497271, -1104932637, 1000924601, 1034980171) + W(1, -1102656208, -1154378706, 1025910769, 1043978669)\n\t\t+ W(2, -1116100213, 1042493673, 1038409695, 1025837919)\n\t\t+ W(3, -1105297083, -1105480129, -1102785010, 1044002411)\n\t\t+ W(4, -1098474508, -1109802618, 1037339247, 1037617885) + W(5, 1049988969, 1050036780, -1122964745, 1036616991)\n\t\t+ W(6, -1111547600, -1107402541, 1045831134, 1039942071)\n\t\t+ W(7, -1106907325, -1132149525, -1123186639, -1105522985)\n\t\t+ W(8, 1040977948, -1097804729, 1028039731, -1111839940) + W(9, 1029488041, 1011577705, 1036894407, 1042714488)\n\t\t+ W(10, -1112976714, 1040500443, -1137152287, -1102258444)\n\t\t+ W(11, 1025599417, -1139888185, -1112698813, -1114191023);\n\tWS(1060124606, -1084472548);\n\tsum1 =\n\t\tW(0, 1012638700, -1112711971, 1024524352, 1032623962) + W(1, -1115629480, 1027484509, -1131934189, 1021193865)\n\t\t+ W(2, 1017460401, -1117271615, 1023262959, -1157409515)\n\t\t+ W(3, -1129347279, -1125331574, -1113956442, 1049120342)\n\t\t+ W(4, -1108495481, 1010910287, -1138043955, 1048955067) + W(5, -1094951982, 1015143283, 1031640934, 1021584239)\n\t\t+ W(6, 1007380511, -1106488069, 1048203795, -1110142007)\n\t\t+ W(7, -1129214986, -1144904917, 1022374575, -1115361884)\n\t\t+ W(8, 1005249701, 1024310560, -1136673413, 1017598403) + W(9, 996895579, -1120058426, 1026650437, -1121731240)\n\t\t+ W(10, 1017029987, -1145343061, 992489843, -1118477310)\n\t\t+ W(11, -1129456851, 1036683482, -1115998674, 1014521967);\n\tsum2 =\n\t\tW(0, -1113301049, 1041723134, -1119425470, 1012563935) + W(1, 1013366251, -1135264199, -1129519836, 1018887182)\n\t\t+ W(2, -1123219625, 1021107126, -1131491053, 1017265018)\n\t\t+ W(3, -1113144608, 1065721494, -1082046556, 1032971141)\n\t\t+ W(4, -1132479565, -1135106943, -1114997262, 1081282167)\n\t\t+ W(5, -1068115046, -1092304788, 1028331651, 927030725) + W(6, 1028189537, 1053752802, -1091841582, -1120681827)\n\t\t+ W(7, 1021570574, 983594844, -1144798799, 1004635839) + W(8, -1126716683, 1026059029, -1132445755, -1137356791)\n\t\t+ W(9, -1135227415, 1024321495, -1149813598, 992723582) + W(10, 1010781703, 959859164, -1123606042, 1032429021)\n\t\t+ W(11, -1137534547, -1121765421, 1024141029, -1123588459);\n\tWS(1064307390, 997943845);\n\tsum1 =\n\t\tW(0, 1016504192, -1110031838, -1108555962, 1047561626) + W(1, -1114174882, 1004953741, 1004931163, -1124632947)\n\t\t+ W(2, -1129767067, 1003984285, 1017992857, 1018940039) + W(3, 1001468389, -1106796660, -1106350773, 1053522405)\n\t\t+ W(4, -1106382906, 1000370245, -1125536771, -1132488742)\n\t\t+ W(5, -1097456765, 1050670238, -1136221548, 1015934681)\n\t\t+ W(6, 1024701821, -1111862756, 1040312105, -1128004006)\n\t\t+ W(7, -1123896954, 1011062590, -1157300426, -1111316170)\n\t\t+ W(8, -1110123941, 1039422954, 1020844396, -1128259885) + W(9, 1008115882, -1153319146, 1030600762, 1005773541)\n\t\t+ W(10, 1015300557, -1153739770, 1014991280, -1116314499)\n\t\t+ W(11, -1109063375, 1042190650, 1024320647, -1130969505);\n\tsum2 = W(0, 1036505224, -1100095598, 1039944480, -1110028565)\n\t\t + W(1, 1016119595, 1017378303, 1018720963, -1119632397) + W(2, 1033659023, 1025734363, 1015545311, -1126149289)\n\t\t + W(3, 1037554666, -1082101932, 1064933062, -1103479495)\n\t\t + W(4, 1036578506, 1022196513, 1035136259, -1072130218) + W(5, 1074634461, 1012777017, 1036162128, -1118704038)\n\t\t + W(6, -1131720942, -1090292986, 1057038142, -1132873326)\n\t\t + W(7, -1120419990, 1020047721, 1012123245, -1114842502)\n\t\t + W(8, 1046242606, -1117820012, -1115011900, 1033886326)\n\t\t + W(9, 1027168757, -1108983905, 1018437263, -1117294599)\n\t\t + W(10, 1004277346, -1136709697, 1024471767, -1105383800)\n\t\t + W(11, 1041395450, 1033191694, -1113427773, 1024978781);\n\tWS(1053812476, -1113586226);\n\tsum1 = W(0, -1130399840, -1111011390, 1007197394, 1037708373)\n\t\t + W(1, -1122978308, -1139049030, 1028349447, -1120416825)\n\t\t + W(2, -1105796643, 1044272829, -1110423782, -1125249991)\n\t\t + W(3, 1021963321, -1107941440, 1056809437, -1093131829)\n\t\t + W(4, -1122097703, 1011721762, -1121520129, -1106086226)\n\t\t + W(5, 1046348585, 1057081835, -1099751719, -1114497366)\n\t\t + W(6, 1020769785, -1129958415, -1090756230, 1059679544)\n\t\t + W(7, -1102044582, 1018253471, -1115853964, -1107644952)\n\t\t + W(8, 1050300257, -1119895572, -1111488955, 1022041005)\n\t\t + W(9, 1021860117, -1122155502, -1116443513, 1040260199)\n\t\t + W(10, 1019054925, -1121197023, -1121122124, -1114352785)\n\t\t + W(11, 1041113720, -1110926804, -1156322407, -1135672898);\n\tsum2 =\n\t\tW(0, 1015672618, 1010541588, -1115998566, 1020421847) + W(1, -1129704409, 1015113530, -1121994623, 1032866568)\n\t\t+ W(2, 1011616452, -1095022641, 1020628925, 1017019595)\n\t\t+ W(3, -1149412980, 1044676778, -1107438884, -1097106911)\n\t\t+ W(4, -1112769863, 1022483811, -1127744422, -1124040172)\n\t\t+ W(5, 1058620442, 1015017230, -1113422252, 1015061518) + W(6, 990134373, -1102290659, 1049322309, -1104275347)\n\t\t+ W(7, 1039268635, -1114030797, 1024671460, 1029499881) + W(8, -1104592911, 1045525693, 1026741584, -1136765715)\n\t\t+ W(9, -1132259460, -1120084193, 1035840939, -1119993661)\n\t\t+ W(10, 999745387, -1131682952, -1125579600, 1001699435)\n\t\t+ W(11, -1123886068, 1037165892, -1126762930, -1134246014);\n\tWS(1059863230, -1098226968);\n\tsum1 =\n\t\tW(0, -1111154474, -1130042625, -1124092147, -1126659421)\n\t\t+ W(1, -1116454602, -1109234699, 1033627108, 1044463840) + W(2, -1125693093, 1045974478, 1040744732, 1026252457)\n\t\t+ W(3, -1111220881, -1098768819, 1043860042, 1040108899)\n\t\t+ W(4, -1149847241, -1103478147, 1018934285, 1036585799)\n\t\t+ W(5, -1094381437, -1098844542, 1043775752, -1107008620)\n\t\t+ W(6, -1156119577, 1041677635, 1034781361, 1051479065)\n\t\t+ W(7, 1046003792, -1127254569, -1108034825, -1100472134)\n\t\t+ W(8, 1038465479, -1096809363, -1121805723, -1105262391) + W(9, 1035708952, 1038444026, 1027036095, 1040658808)\n\t\t+ W(10, 1037992790, 1038964162, -1116166225, -1111999396)\n\t\t+ W(11, 1019243847, 1003830125, -1131289879, -1116821910);\n\tsum2 =\n\t\tW(0, 1031860762, 1008804487, 1036033743, -1130814575) + W(1, -1114717025, 1042429978, -1114215534, -1119320351)\n\t\t+ W(2, -1105317049, -1126605754, -1103884858, 1019583714) + W(3, 1037917300, 1028769566, 1033869945, 1029943513)\n\t\t+ W(4, -1097519272, 1050527129, -1123072391, -1145928741)\n\t\t+ W(5, -1104666827, 1058632863, -1084821476, 1057878257)\n\t\t+ W(6, -1121765219, -1118791492, -1103277106, 1010033985)\n\t\t+ W(7, -1091781337, 1047090522, 1036233577, 1035112755) + W(8, 1043081028, 1033184724, -1108906997, 1050006554)\n\t\t+ W(9, -1113082189, -1119166399, -1110309063, -1124066564)\n\t\t+ W(10, -1105454190, -1116436299, 1007761049, 1034891236)\n\t\t+ W(11, 1003334201, -1146667244, -1124982586, 1037673833);\n\tWS(1053829756, -1108691549);\n\tsum1 =\n\t\tW(0, 1014621415, 1034972923, -1105089900, -1121242915) + W(1, 1024842558, -1125107735, -1117035633, 1031518451)\n\t\t+ W(2, -1146432572, 1011744694, -1195363583, 1024600093)\n\t\t+ W(3, 1017668333, 1028891034, -1111069516, -1099260407)\n\t\t+ W(4, 1035963185, -1111257697, -1121088251, 1043029617) + W(5, 1052288956, -1096216885, 1043236853, 1022444749)\n\t\t+ W(6, -1113943163, 1037608353, 1043183409, -1109446679)\n\t\t+ W(7, -1104376301, 1008767270, 1027915142, -1118505878) + W(8, 1040529537, 1033001703, -1110826184, 983774736)\n\t\t+ W(9, -1117882340, 1008280866, -1127832039, 1023717270)\n\t\t+ W(10, -1108863440, 1021787123, 1018110476, -1114328254)\n\t\t+ W(11, 1025673432, 1038283409, -1136644866, -1122279626);\n\tsum2 = W(0, 1011466728, -1153535168, -1121363658, -1113493290)\n\t\t + W(1, 1016979229, -1121975877, -1128158188, -1133074596)\n\t\t + W(2, -1108077390, 1031842286, -1114077565, 1032726750)\n\t\t + W(3, 993685376, -1111924694, 1048370655, -1096696142) + W(4, 1032702600, -1126878203, 1021341187, 1041916532)\n\t\t + W(5, -1088803436, -1097359431, 1051606360, 1020447303)\n\t\t + W(6, -1125064327, -1115375045, 1050909934, 1066069354)\n\t\t + W(7, -1108957150, -1115472084, 1016637363, -1111577830)\n\t\t + W(8, 1048268187, -1102058354, -1106393780, 1011253904)\n\t\t + W(9, -1135616946, -1121861231, 1028734454, -1112810542)\n\t\t + W(10, -1104652034, 1032484333, -1142265296, -1139232914)\n\t\t + W(11, 1033829714, -1108918948, -1124153420, -1135690267);\n\tWS(1043379192, -1131322837);\n\tsum1 =\n\t\tW(0, -1129021027, -1109595831, 1033800339, 1042153991) + W(1, -1099711038, 1026187331, -1148980502, -1141769560)\n\t\t+ W(2, 1040943040, 1016895818, 1029537886, 1023917269) + W(3, -1117253390, -1131540259, -1099641090, 1040857522)\n\t\t+ W(4, -1104535414, 999787984, 1015261926, 1038059198) + W(5, 1019360940, -1103092216, 1032384358, -1137467256)\n\t\t+ W(6, 1024719214, 1043151230, 1047704456, -1091529984) + W(7, 1043292971, 1021851650, -1130947836, 1040366611)\n\t\t+ W(8, -1120007803, -1100986498, 1031568104, -1117455240) + W(9, 974083843, 1036650848, 1032688054, -1116706574)\n\t\t+ W(10, 1019020464, 1021119266, 1010796022, 1032003186)\n\t\t+ W(11, -1135300928, -1114490317, 1026900536, -1124200964);\n\tsum2 =\n\t\tW(0, -1127801857, 1028175283, -1129802997, -1133354170) + W(1, -1129332011, 1029358411, -1143073539, 1010285366)\n\t\t+ W(2, 1022418743, -1111757330, 1032847739, -1119713292)\n\t\t+ W(3, -1106914355, 1045024365, -1109183829, 1035388549) + W(4, 1028119663, 984677997, -1114698807, -1107796176)\n\t\t+ W(5, 1055188047, -1099199714, 1027769667, -1126683209)\n\t\t+ W(6, -1129241721, -1093181393, 1060464193, -1108056884)\n\t\t+ W(7, 1015260775, -1117802232, 1034854605, -1094857339) + W(8, 1038631095, 1042537531, -1123722407, 1025618013)\n\t\t+ W(9, 1015357631, -1104001534, 1035894131, 1019867695)\n\t\t+ W(10, 1021694327, -1116557581, 1026781991, -1106206681)\n\t\t+ W(11, -1121422795, 1010545294, -1120402439, 1021478623);\n\tWS(1049844732, -1121310639);\n\tsum1 =\n\t\tW(0, 1023733410, 1044402267, 1053233309, -1096212219) + W(1, 1051767783, -1114613442, -1099209689, -1106734859)\n\t\t+ W(2, -1108848000, -1103164857, -1109302031, -1129199659)\n\t\t+ W(3, 1040893204, 1050332331, 1049912979, -1099336615) + W(4, 1050917291, 1033787229, -1102957277, -1111686974)\n\t\t+ W(5, -1098618899, -1097562740, -1121562509, -1111886543)\n\t\t+ W(6, -1114244983, -1122456058, 1048539349, -1096335583)\n\t\t+ W(7, 1042792075, -1121890370, -1136674298, 1049981942) + W(8, -1111429758, 1033031043, 1039550692, 1041151474)\n\t\t+ W(9, -1108461358, -1102278760, 1039273110, -1102589972)\n\t\t+ W(10, 1008842338, -1104020956, 1021220348, 1043895987)\n\t\t+ W(11, 1048170180, -1101337719, 1041281742, 1031699907);\n\tsum2 = W(0, 1051830333, 1040398919, -1088812275, -1112895824)\n\t\t + W(1, 1030823820, -1120174945, 1052363768, 1056364330)\n\t\t + W(2, -1088095023, -1128031249, -1126124865, 1022839272)\n\t\t + W(3, 1062286287, -1105094784, -1083945825, -1110939052)\n\t\t + W(4, -1131257287, -1113476028, 1068323273, -1117763636)\n\t\t + W(5, -1086712736, -1122350162, 1034881723, 1031923437)\n\t\t + W(6, 1062941652, -1117097644, -1085128967, -1107088013)\n\t\t + W(7, 993374262, -1149114843, 1058036233, -1135317262)\n\t\t + W(8, -1090471655, -1117471490, 1022005418, -1131972943)\n\t\t + W(9, 1038399576, 1045469136, -1096613184, -1128774604)\n\t\t + W(10, -1124473506, 1015689530, 1029358050, -1127713443)\n\t\t + W(11, -1118175248, 1023889083, 1006015479, -1114795832);\n\tWS(997080576, -1130763300);\n\tsum1 = W(0, -1113905570, -1121320815, 1038521748, 1025325853)\n\t\t + W(1, -1108459484, -1123369669, 1030153879, -1108108727)\n\t\t + W(2, 1032364321, -1131460303, -1152289285, -1111143084)\n\t\t + W(3, -1117230256, -1100762033, 1051702873, 1040312882)\n\t\t + W(4, -1099800679, 1018134009, -1152616277, -1090117932)\n\t\t + W(5, 1069923213, 1063008042, -1092045374, -1116551136)\n\t\t + W(6, -1146808706, -1109500574, -1104049339, 1056019095)\n\t\t + W(7, -1100849447, 1015899783, -1112646432, -1102311764)\n\t\t + W(8, 1028696893, -1115439812, -1105934578, -1120248394)\n\t\t + W(9, -1186209359, -1119610882, -1120830317, -1125581089)\n\t\t + W(10, 1028735898, -1113190874, -1120216576, -1099135446)\n\t\t + W(11, 1030578386, -1116447004, -1108771165, -1120342084);\n\tsum2 =\n\t\tW(0, -1130955153, 1025142055, 1025405091, 1041203911) + W(1, 1034798579, -1107186683, -1115062100, 1033634795)\n\t\t+ W(2, -1124058081, -1151569099, -1098708869, 1041850582)\n\t\t+ W(3, -1114768924, -1114031272, 1047530952, -1160505239)\n\t\t+ W(4, 1048498835, -1097808347, 1040485485, -1115074190)\n\t\t+ W(5, -1104495565, 1065129660, -1095909934, 1045395705)\n\t\t+ W(6, -1102247365, -1110799922, 1038913214, -1115442088)\n\t\t+ W(7, -1105078519, -1106337339, 1040365390, 1039570131) + W(8, -1102056033, 1037120419, 1024518769, 1007217475)\n\t\t+ W(9, -1105380703, -1112489130, -1123724877, -1145632358)\n\t\t+ W(10, -1109649658, -1152795787, -1134789779, 1035629875)\n\t\t+ W(11, -1104428707, 1035843769, -1117935125, -1124566009);\n\tWS(-1078383103, 1059446981);\n\tsum1 =\n\t\tW(0, -1139864362, -1142609202, -1105667544, 1048881003) + W(1, -1110989208, 1019807480, 1022304576, 1008862865)\n\t\t+ W(2, -1100327790, 1047898440, 1029966423, -1128249884)\n\t\t+ W(3, -1117916615, -1109139429, -1098424968, 1053051896)\n\t\t+ W(4, 1023833874, -1114518074, 1007335089, 1032501274) + W(5, -1089810345, -1104044598, 1040575921, 1013296733)\n\t\t+ W(6, -1119884647, 982044231, 1033240873, 1051763270) + W(7, -1114053146, -1110353213, 1022280942, -1115332063)\n\t\t+ W(8, 1049118183, -1113330784, 1041606896, -1126749570) + W(9, 1023668405, 991223187, -1140016273, 1027424455)\n\t\t+ W(10, -1122699729, 1021514772, 1034312731, -1102309771)\n\t\t+ W(11, -1110413061, 1032557738, 1041157596, -1121516731);\n\tsum2 =\n\t\tW(0, -1143648694, 1050457027, -1090901428, -1095258955) + W(1, 1047388223, 1034828442, 1022767513, -1104882348)\n\t\t+ W(2, 1017677825, -1116653154, -1125154789, -1149114774) + W(3, 963325627, 1052893834, -1090554669, 1030383529)\n\t\t+ W(4, -1114292033, 1040557770, -1138915747, -1122824043)\n\t\t+ W(5, 1048412513, 1063122641, -1118207917, 1005930742) + W(6, 1040530304, 1019582897, -1101863176, -1089352859)\n\t\t+ W(7, 1048190601, 980397999, 1031585165, -1094902239) + W(8, -1104950416, 1057380402, -1102824630, 1033506230)\n\t\t+ W(9, 1008260859, -1113748748, -1120605391, -1106433792)\n\t\t+ W(10, 1038107916, -1115355457, -1120690652, -1090635807)\n\t\t+ W(11, 1056780417, 1049388154, -1104842210, -1136517107);\n\tWS(-1104952056, -1073278929);\n\tsum1 = W(0, -1144211169, -1099507218, 1047627264, 1043300637)\n\t\t + W(1, -1098196346, 1030331294, 1031125659, -1116651974)\n\t\t + W(2, -1113308557, 1037274304, -1126577137, -1122667056)\n\t\t + W(3, -1121100585, -1101060075, 1054491321, -1102367022)\n\t\t + W(4, -1102852173, 1026346581, -1142367854, -1105066053)\n\t\t + W(5, 1039149624, 1051689271, -1106731162, -1120693369)\n\t\t + W(6, 1025675017, -1131576359, -1106626380, 1044811828)\n\t\t + W(7, -1111689619, 1018492983, -1114298540, -1114707952)\n\t\t + W(8, 1042584197, -1128472513, -1126957444, -1140414731)\n\t\t + W(9, 1036563163, -1120605819, -1128818827, 1045578618)\n\t\t + W(10, 992521004, -1128018583, -1122834968, -1111900952)\n\t\t + W(11, 1039018645, -1115669626, 1025441875, 997033420);\n\tsum2 =\n\t\tW(0, -1117577133, 1036324905, 1012676607, -1164734594) + W(1, 1039853902, -1110394349, -1139616023, -1124977156)\n\t\t+ W(2, -1115101040, 1032695755, -1116113854, 1006188424) + W(3, 997820975, -1120808104, 1041273688, 1041759226)\n\t\t+ W(4, 1041255405, -1120661488, 1028627780, -1109376562)\n\t\t+ W(5, 1049990275, -1096754642, -1106762918, 1033535767) + W(6, -1114909048, 1029259135, 1043064430, 1041324783)\n\t\t+ W(7, -1111929038, 1021759445, 1032747040, -1145526876) + W(8, 1039154681, -1094055114, 1025837595, 1023476809)\n\t\t+ W(9, -1116006677, 1022442689, 1027909669, -1098711698)\n\t\t+ W(10, -1130147608, -1133986843, 1030832637, 983753970)\n\t\t+ W(11, -1115224952, 1023440264, -1112181665, 1029342490);\n\tWS(1057403966, -1096678293);\n\tsum1 = W(0, 1015545167, -1133819725, 1037006758, -1110196161)\n\t\t + W(1, -1111752718, 1028708905, 1013920108, -1127594402)\n\t\t + W(2, -1136130453, -1123399563, 1041684833, -1119121787)\n\t\t + W(3, 1030182836, 1031500952, 1042283546, -1086200264) + W(4, 1047364560, -1120221088, 991347091, -1107540753)\n\t\t + W(5, 1040431359, 1060132444, -1104881213, 1006406689) + W(6, 1031028372, 1042502792, -1084295706, 1049379651)\n\t\t + W(7, -1113607001, 1002061113, -1130110920, -1120427420)\n\t\t + W(8, 1042737160, 1001749345, -1117219726, 1026883950) + W(9, -1137745417, 1023814022, 1019878434, 1023472436)\n\t\t + W(10, 1017968636, -1124476270, -1127755335, -1113612941)\n\t\t + W(11, 1042334622, -1123659840, 1008021369, 1011156129);\n\tsum2 =\n\t\tW(0, -1178786588, -1129322914, -1116170217, 1036181740) + W(1, 1016863918, -1132924585, 1027650789, -1117835702)\n\t\t+ W(2, -1106357388, 1050236879, -1107702296, -1127926494)\n\t\t+ W(3, 1004569898, -1120140062, 1012300621, 1029537087) + W(4, -1115347042, 1007741857, 1010647389, -1110565129)\n\t\t+ W(5, 1051050908, -1121260831, 1019718506, -1147888890)\n\t\t+ W(6, -1130907066, 1046200355, -1094299123, -1105419536)\n\t\t+ W(7, 1018471790, -1122466004, -1128412421, 1035331810)\n\t\t+ W(8, 1038925264, -1104188032, 1035623426, -1132432621)\n\t\t+ W(9, 1000455394, 1040609034, -1110352470, -1148832482)\n\t\t+ W(10, 1031812039, -1132484471, 1019136642, -1114775527)\n\t\t+ W(11, 1028674911, 1009994365, -1129304944, -1146317634);\n\tWS(1056335484, -1129697442);\n\tsum1 = W(0, -1118615510, 1026825265, -1102686619, 1045269336)\n\t\t + W(1, 1031523962, -1140818205, -1123816285, -1162479083)\n\t\t + W(2, -1175208362, -1122870505, 1025178018, -1112741005)\n\t\t + W(3, 1016357093, -1123245334, -1112742573, 1056143939)\n\t\t + W(4, -1115481871, 1004860403, -1126548591, -1115166368)\n\t\t + W(5, 1012633705, 1022501065, -1098786498, -1121817826) + W(6, 1017679973, 993334229, 1048503365, 1044007618)\n\t\t + W(7, -1107348056, -1134864917, -1125007109, 1009460392)\n\t\t + W(8, -1110640192, 1043433395, -1104721331, -1142571619)\n\t\t + W(9, -1130509569, -1117686884, 1010107581, 1037226473)\n\t\t + W(10, -1124234681, -1120701013, -1127256452, -1110259820)\n\t\t + W(11, 1008538193, 1040188728, -1112073470, 1004599859);\n\tsum2 = W(0, -1140731697, -1126783010, 1035005186, -1110815467)\n\t\t + W(1, -1144657885, -1127206230, 1018164054, -1144859189)\n\t\t + W(2, 1011714049, 1039236492, -1130754383, -1146205013)\n\t\t + W(3, -1116322329, -1148034885, -1112384840, -1109778149)\n\t\t + W(4, -1113329105, -1113225660, 1033668632, -1111621890)\n\t\t + W(5, 1057652336, 1053123628, -1107649638, 1012470213)\n\t\t + W(6, -1110091010, 1034430751, -1103655808, -1113563636)\n\t\t + W(7, -1112793157, -1113811608, 1006827755, -1133278289)\n\t\t + W(8, 1035575897, 1009902097, -1136830370, -1126431906)\n\t\t + W(9, 1024608202, -1134565598, 1007536733, 1031837967)\n\t\t + W(10, -1131576514, 1007646275, 978878091, -1106732021)\n\t\t + W(11, 1017810394, 1032913014, -1118754368, -1123083034);\n\tWS(1064654654, 1035088379);\n\tsum1 = W(0, -1123150274, -1101065371, 1052021669, 1034671630)\n\t\t + W(1, -1103122974, -1124628232, 1013730923, -1104968795)\n\t\t + W(2, 1043838624, -1116995686, 1025043295, -1123853974)\n\t\t + W(3, -1124984926, -1104298005, 1050953841, -1125221929)\n\t\t + W(4, -1102292982, -1122875259, -1143080352, -1097917367)\n\t\t + W(5, 1053857683, 1053311748, -1101557747, -1129945790)\n\t\t + W(6, -1115541655, -1115560637, -1098028717, 1054064059)\n\t\t + W(7, -1102206963, -1115475969, -1120446591, -1112072243)\n\t\t + W(8, -1118042236, 1056948345, -1099829586, 1010096420)\n\t\t + W(9, 1019709882, -1121553409, -1117850604, 1047317764)\n\t\t + W(10, -1123986585, -1120157778, -1123168830, -1101025669)\n\t\t + W(11, 1024509393, 1051915779, -1105952782, 1010117900);\n\tsum2 =\n\t\tW(0, -1115290116, -1109338596, 1052546267, -1101682429) + W(1, -1106866549, 1027635895, 1036300391, -1120873277)\n\t\t+ W(2, 1031940424, 1045633640, -1121551223, 1021591180)\n\t\t+ W(3, -1109664288, -1133763869, 1041363997, -1094977574)\n\t\t+ W(4, 1008614181, -1119215823, 1023887773, -1110763968) + W(5, 1046589307, 1050150667, -1110488084, 1009099129)\n\t\t+ W(6, 1031338337, -1104363651, 1038758869, -1104681827)\n\t\t+ W(7, -1120223295, 1016354897, -1112746552, -1111086518)\n\t\t+ W(8, 1026186944, -1121584221, 1035823152, -1115537942) + W(9, 1029647363, 1014654409, 1011886363, 1042076972)\n\t\t+ W(10, -1111033402, 1012736237, -1123357025, -1113327782)\n\t\t+ W(11, -1114411312, 1033926660, 1046305164, -1109553196);\n\tWS(-1088190206, -1108558078);\n\tsum1 = W(0, -1109712467, 1048826552, -1117596347, 1045129740)\n\t\t + W(1, -1145103958, 1040739958, 1034096473, -1100191472)\n\t\t + W(2, -1104233509, 1021528052, 1015098342, -1095362037)\n\t\t + W(3, -1111610193, 1051587686, -1112703594, -1123092480)\n\t\t + W(4, 1033306871, 1043699492, -1111503908, -1114238856)\n\t\t + W(5, -1118548075, 1045282957, -1105600408, -1112734841)\n\t\t + W(6, 1029528067, -1124911644, -1094857227, 1041941490)\n\t\t + W(7, -1116887040, -1106244021, -1109918121, 1053388852)\n\t\t + W(8, 1040678692, -1121835291, 1043572363, 1044475255)\n\t\t + W(9, -1130336610, -1101598429, -1102065648, 1050563972)\n\t\t + W(10, -1101594283, -1100499697, -1110290409, 1049826386)\n\t\t + W(11, -1108498290, 1032628503, 1041251987, 1015959598);\n\tsum2 = W(0, -1140036524, 1033121292, 1020537037, -1094559771)\n\t\t + W(1, 1042598592, 1048560917, -1122134368, -1135675176)\n\t\t + W(2, -1102563608, -1090683436, 1049536131, 1043095342)\n\t\t + W(3, -1124742331, 1022385651, 1017232470, -1089829937) + W(4, 1015761873, 1060516603, 1023368729, 1037868584)\n\t\t + W(5, -1097085277, -1081905013, -1122385293, 1068776853)\n\t\t + W(6, 1025643512, -1113410705, 1026038978, -1085580324)\n\t\t + W(7, -1119606047, 1062905414, -1117935205, 1034815986)\n\t\t + W(8, -1107749524, -1093433405, 1034046493, 1053234619)\n\t\t + W(9, 1029315286, -1106876578, -1116418603, -1100509010)\n\t\t + W(10, 1037794408, 1023262329, -1121900993, 1029051910)\n\t\t + W(11, 1013163432, -1107168757, 1020109569, 1038509970);\n\tWS(1048802172, -1118644607);\n\tsum1 =\n\t\tW(0, 1022629891, -1112271863, -1115934246, -1112205646) + W(1, 1050188943, -1125264263, 1001330921, 1008285357)\n\t\t+ W(2, 1007889405, -1137992085, 1025826270, -1127716075)\n\t\t+ W(3, -1147098739, -1106982824, -1110669107, 1044651974)\n\t\t+ W(4, 1026008921, -1113499645, 1023807923, 1020475895) + W(5, -1095657203, 1050363724, 1011316531, 1026946398)\n\t\t+ W(6, -1129374813, 958183765, -1113474437, 1050921091) + W(7, -1106529387, -1121270209, 1028532286, 1025640422)\n\t\t+ W(8, -1090481180, 1050665633, -1131537104, 1021652689)\n\t\t+ W(9, 1031375324, -1133565569, -1104303995, 1037811271)\n\t\t+ W(10, -1125009457, 1014192325, -1151549405, -1106868493)\n\t\t+ W(11, -1104624276, 1049383075, 1022847857, -1142930963);\n\tsum2 =\n\t\tW(0, 1016559128, -1089262209, 1053795811, 1058569170) + W(1, -1094475155, 1008650912, -1119933527, 1032931419)\n\t\t+ W(2, -1108360154, -1097574423, 1036603460, -1121755244)\n\t\t+ W(3, 1008526536, -1094914643, 1052999976, 1052760357) + W(4, -1106271635, 1039081818, 1034816070, -1096197918)\n\t\t+ W(5, 1069558608, 1058007152, 1022028102, 1004102711) + W(6, 1018959568, -1101210129, -1103281588, -1106340652)\n\t\t+ W(7, -1121182797, 1033515588, 1026554777, 1049415798) + W(8, -1085501184, -1101474305, 1027756295, 1032461240)\n\t\t+ W(9, -1112891495, -1128790619, -1098019814, -1114646508)\n\t\t+ W(10, -1124734105, -1118822413, 1046177388, 1043157162)\n\t\t+ W(11, -1088254262, -1096632714, 1015426864, 1043397723);\n\tWS(-1085648446, -1079079370);\n\tsum1 = W(0, 1031831473, 1036117159, 1049939273, -1094329359) + W(1, 1040633606, 1023486628, -1114079994, 1003975776)\n\t\t + W(2, 1042007752, -1097850009, -1134555900, 1019647980)\n\t\t + W(3, 1031367567, 1044164867, 1043312672, -1089391360) + W(4, 1041283678, 1023951387, -1118896788, 1045647319)\n\t\t + W(5, -1095211959, -1087218668, 1044809099, 1014099708)\n\t\t + W(6, -1123680847, 1033826253, -1122554975, -1100203021)\n\t\t + W(7, 1046447947, 1017251780, 1033718927, 1041970952) + W(8, -1116359196, 1033960979, 1042238738, 1031788713)\n\t\t + W(9, -1123944253, 1024952417, -1176880640, -1108529239)\n\t\t + W(10, 1024390649, -1146375056, 1033541103, 1040029267)\n\t\t + W(11, 1026974961, -1111794397, 996515216, 1033511473);\n\tsum2 = W(0, 1019169584, 1042983019, -1098354632, -1099987280)\n\t\t + W(1, 1048978343, -1118546716, -1120973142, 1009997472)\n\t\t + W(2, -1106283039, 1032814660, -1103033329, 1022934360)\n\t\t + W(3, 1033125970, -1103915398, 1033722376, -1095179878)\n\t\t + W(4, 1055664562, -1110281795, 1025364316, 1036688212) + W(5, 1062322516, 1032770062, -1097173506, 1045599869)\n\t\t + W(6, -1109812797, -1125420780, -1098634798, -1109050948)\n\t\t + W(7, -1103688168, -1119010038, 1040314133, -1119986230)\n\t\t + W(8, 1057333054, -1097734639, -1173745415, 1038965178)\n\t\t + W(9, -1108282977, 1034277286, -1102308141, 1034195486)\n\t\t + W(10, -1107997912, 1007528912, 1018923536, -1117630132)\n\t\t + W(11, -1125368820, 1049154263, -1098308929, 1035253180);\n\tWS(-1089355774, -1078290086);\n\tsum1 = W(0, -1122950775, 1037182841, -1118638572, -1121667553)\n\t\t + W(1, 1009124079, -1115334660, -1112691207, -1124344033)\n\t\t + W(2, 1041047393, -1104403323, -1138062223, -1126199861)\n\t\t + W(3, 1023290087, 1046400294, -1098349922, -1099164822)\n\t\t + W(4, 1044398104, -1136525567, -1107733500, -1118583361)\n\t\t + W(5, 1057481334, 1054069421, -1149431076, -1110719762)\n\t\t + W(6, -1146188190, 1042531744, -1139289650, -1097191323)\n\t\t + W(7, 1044515332, 1015659149, -1132821263, -1121639475)\n\t\t + W(8, -1109625472, 1041114291, -1120573261, -1121643278)\n\t\t + W(9, -1112282369, -1137408791, 1026873009, -1120861012)\n\t\t + W(10, -1120947806, -1122889719, -1116356099, 1018516820)\n\t\t + W(11, -1139389015, -1139200383, 1017011067, -1120569352);\n\tsum2 = W(0, -1120919296, -1124567280, 1037030993, -1120629799)\n\t\t + W(1, -1106639281, 1020211370, 1009843654, -1107129213)\n\t\t + W(2, 1043380414, -1102119519, 1030878171, -1126825280)\n\t\t + W(3, -1132368064, 1020831927, -1109288357, -1112537154)\n\t\t + W(4, -1118412551, -1144175329, 1020138111, -1098918731)\n\t\t + W(5, 1059483198, 1064361176, -1093377806, -1146281491)\n\t\t + W(6, 1029564211, -1132836513, -1119273466, -1104145236)\n\t\t + W(7, -1123848756, -1135251423, -1115205032, 1010227332)\n\t\t + W(8, -1106893419, 1043150197, -1103899854, 1028327527)\n\t\t + W(9, 1016741875, -1118685376, 1028452918, -1117770026)\n\t\t + W(10, 1024207514, -1128215590, -1119663171, 1026001154)\n\t\t + W(11, -1135273053, 1019055438, -1109882780, 1024565629);\n\tWS(1064975294, 1066308158);\n\tsum1 =\n\t\tW(0, 1031747776, -1119071204, 984462229, -1132055971) + W(1, -1148253029, -1126913907, -1106142801, 1032019633)\n\t\t+ W(2, 1045090381, -1108909198, -1110036442, 1036419718) + W(3, 1028818885, 1041375482, -1093262116, 1038243096)\n\t\t+ W(4, 1036945928, -1121925745, 1001228109, -1112793497) + W(5, 1049965274, 1021279149, -1115536386, 1019907753)\n\t\t+ W(6, -1115396498, 1013499583, 1052662103, -1090377239) + W(7, 1034061985, 1032108124, 1041342669, -1123968938)\n\t\t+ W(8, -1113450905, 1040402543, 993049059, -1109636927) + W(9, -1108139113, 1024220311, 1035427697, -1107965954)\n\t\t+ W(10, -1113141447, 1032825796, 1027821620, 1020544662)\n\t\t+ W(11, -1138282267, -1116422289, 1016907357, -1128061041);\n\tsum2 =\n\t\tW(0, 1016610899, -1118189976, 1027283971, 1028895363) + W(1, -1113530321, 1007846553, -1135553471, 1018031354)\n\t\t+ W(2, -1118352328, 1032145382, -1123867563, 1011272254)\n\t\t+ W(3, -1163068737, -1120752887, 1042584076, 1042427003)\n\t\t+ W(4, -1099207121, 1010785270, -1147979120, 1035872696)\n\t\t+ W(5, -1095799786, 1073605475, -1075418961, 1026092591) + W(6, -1121296916, 1034250650, 1009508653, 1056095764)\n\t\t+ W(7, -1091570337, 1030054693, -1139692219, 1022157658)\n\t\t+ W(8, -1121907329, -1130051225, -1113117501, 1019567305)\n\t\t+ W(9, 1007282246, -1131969269, -1148404200, 1025403981)\n\t\t+ W(10, -1124635978, 1012575724, 1019770181, -1131641536)\n\t\t+ W(11, 1013257077, -1121748387, -1123610989, 1018865930);\n\tWS(1062423998, 1020226002);\n\tsum1 = W(0, -1122384152, -1116470612, -1095861522, 1055717600)\n\t\t + W(1, -1128557498, -1133541800, 1000976853, 1015809956)\n\t\t + W(2, -1125526476, 1034182342, -1136390676, 1025071548)\n\t\t + W(3, -1122957973, -1115150860, -1101122465, 1052715645)\n\t\t + W(4, -1101688288, -1121585121, -1140430696, -1100102424)\n\t\t + W(5, 1051208664, 1053221217, -1097231798, 1026360261) + W(6, 1018079658, -1099378776, 1045734276, 1041738487)\n\t\t + W(7, -1114764537, -1127628368, -1116871589, -1102397253)\n\t\t + W(8, 1040938184, 1038184662, -1107259340, -1121765359)\n\t\t + W(9, 1021042950, -1121061927, 1045437908, -1114085178)\n\t\t + W(10, 1034631967, 1018430000, -1130305609, -1097083551)\n\t\t + W(11, 1049869175, 1019939330, -1105843464, -1122412137);\n\tsum2 = W(0, -1125184611, -1124729770, 1045115043, 1058112728) + W(1, 1023628890, 1007171579, 985313435, -1132095255)\n\t\t + W(2, -1117207517, 1067077185, -1158219675, -1118062236)\n\t\t + W(3, -1181860650, 1028760415, 1036693207, -1107623537)\n\t\t + W(4, 1043689375, 1000645119, -1124740239, 1011065519)\n\t\t + W(5, -1088457353, -1080660794, 1020427720, -1160295467)\n\t\t + W(6, -1132645547, 1033849803, -1096437481, -1109418981)\n\t\t + W(7, -1110185484, 1015083304, 999484231, 1015359010) + W(8, 1048821220, -1117188353, 1032363474, 1023561702)\n\t\t + W(9, -1125466771, -1140486285, -1107942084, 1027196953)\n\t\t + W(10, -1121893121, -1134577643, 1024683619, -1125848669)\n\t\t + W(11, 1027562883, -1127975224, 1023023798, -1158549787);\n\tWS(-1085592318, -1113086899);\n\tsum1 =\n\t\tW(0, -1127342656, -1105245475, -1104578161, 1053241687) + W(1, -1103827813, -1138537863, 1024334944, 1029597578)\n\t\t+ W(2, -1117644382, 1041591201, 1020278010, 1015573096)\n\t\t+ W(3, -1107952998, -1104926592, -1101901257, 1051692021)\n\t\t+ W(4, -1097952575, -1110174988, 1034498345, -1110412429)\n\t\t+ W(5, 1053247055, 1044816720, -1110749814, 1033881662) + W(6, -1131633306, -1103724998, 1051300307, 1042909421)\n\t\t+ W(7, -1106968399, -1116328992, -1110168462, -1098176238)\n\t\t+ W(8, 1051451939, -1124765258, -1105195378, -1113141267)\n\t\t+ W(9, 1033648125, -1115323711, 1049307889, -1143558503)\n\t\t+ W(10, 1027981559, 1028312016, -1119681052, -1098367950)\n\t\t+ W(11, 1053283054, -1113485404, -1102600950, -1113790704);\n\tsum2 =\n\t\tW(0, 1019423143, -1118706158, -1110500850, 982325064) + W(1, -1117883328, -1145733922, -1134200265, -1122995556)\n\t\t+ W(2, 1021681136, -1106847870, -1115095323, 1001371122)\n\t\t+ W(3, 1022335641, -1113839515, -1121978030, 1042414810)\n\t\t+ W(4, -1112736275, 1019850892, -1126211289, -1123774588)\n\t\t+ W(5, 1048787768, 1052221246, -1118959328, -1113736050) + W(6, -1160177640, 1002859666, 1035034344, 1009324191)\n\t\t+ W(7, 1026260852, 1023767274, 995157684, -1114460336) + W(8, 1025695056, -1129766425, -1114723897, -1130130145)\n\t\t+ W(9, -1138832033, -1131104601, -1126984825, -1136621129)\n\t\t+ W(10, 1016807320, -1131688905, -1130236057, 1027754115)\n\t\t+ W(11, 1027074464, -1120353368, -1121253912, 992217060);\n\tWS(1025516512, -1100199588);\n\tsum1 =\n\t\tW(0, 1010096560, 1021891087, 1041308560, -1106994989) + W(1, -1107391304, 1032706511, 998291066, -1128181387)\n\t\t+ W(2, 1015332531, -1097993736, 1040752366, -1115681272)\n\t\t+ W(3, 1015136529, -1152435393, 1054580194, -1087955312) + W(4, 1021987303, 1013936722, 1016981531, 1035336779)\n\t\t+ W(5, 1043985948, 1049373383, 1016493518, -1153713033) + W(6, -1134306338, 1040424469, -1088067164, 1048585956)\n\t\t+ W(7, -1111549299, -1122756060, 1015217585, 1041134374) + W(8, -1097437107, 1044933000, 1015283332, 1028860515)\n\t\t+ W(9, 1025573847, -1147235028, -1108043523, 1037061588)\n\t\t+ W(10, -1125444197, -1124931799, 1027586712, -1105873140)\n\t\t+ W(11, 1024655979, 1041451309, 1025261651, 1010373746);\n\tsum2 =\n\t\tW(0, 1024904631, -1115115972, -1128899549, -1100416868) + W(1, 1014205090, -1138213458, -1136864762, 1023564875)\n\t\t+ W(2, -1103710322, -1105139728, -1112771593, 1024304323)\n\t\t+ W(3, 1005033941, -1114446231, -1140124434, -1107001478)\n\t\t+ W(4, -1105823902, 1028369943, 1030076655, -1115188268) + W(5, 1057566767, 1061216146, -1101449249, 1031401203)\n\t\t+ W(6, 1022202973, -1099782234, 1051976820, -1114917196) + W(7, -1115621063, -1127316949, 995105737, 1025338591)\n\t\t+ W(8, 1009750634, -1107279078, -1123827499, 1002907445)\n\t\t+ W(9, 1009257370, -1107689693, 1040613751, -1123762171)\n\t\t+ W(10, -1124460977, 1021828037, -1113660547, 1049272645)\n\t\t+ W(11, -1105716747, -1112133417, 1019919657, -1121285688);\n\tWS(1050734204, -1108852232);\n\tsum1 = W(0, -1111669430, -1116292712, -1122281377, 1027495958)\n\t\t + W(1, -1113568120, -1123139966, 1026854009, -1106093993)\n\t\t + W(2, -1103616254, -1113635568, -1125634353, -1117637392)\n\t\t + W(3, -1115457556, -1104273631, 1027625969, 1042550097)\n\t\t + W(4, -1100906821, -1147736996, 1022285659, -1090233269)\n\t\t + W(5, 1069754213, 1065691213, -1090598793, 999398084)\n\t\t + W(6, -1130768721, -1103820941, -1114752252, 1054098174)\n\t\t + W(7, -1103145534, -1140005358, -1124925681, -1107176543)\n\t\t + W(8, -1130883179, 1026991873, -1107767585, -1123096067)\n\t\t + W(9, 988348114, -1114665965, -1144129324, 1018693905)\n\t\t + W(10, 1007587914, -1120005196, -1117352760, -1103610460)\n\t\t + W(11, 1032882469, 1034282506, -1112131865, -1122062653);\n\tsum2 =\n\t\tW(0, 1024214881, -1105712489, -1096328526, 1036545949) + W(1, -1114697429, 1029115040, -1122830075, 1026001227)\n\t\t+ W(2, -1089670730, -1104892025, 1027384734, -1127506094)\n\t\t+ W(3, 1024710111, -1105988647, -1109313571, 1042923133)\n\t\t+ W(4, -1108836817, 1018384918, -1118490155, 1044311614) + W(5, 1057951288, 1050757116, 1046225965, -1118982995)\n\t\t+ W(6, -1134765475, -1128591966, 1031038781, 1041007149) + W(7, -1111832237, 1000957030, 1007204875, 1016894538)\n\t\t+ W(8, -1135710147, -1111844715, 1020988490, 1018633070) + W(9, 955722144, -1132281374, -1121635711, 982097434)\n\t\t+ W(10, -1141601766, -1131312630, -1132418382, -1121103003)\n\t\t+ W(11, 1040031313, -1131469166, -1137288635, 1012074251);\n\tWS(-1077332287, -1089760701);\n\tsum1 =\n\t\tW(0, 998476811, -1126986618, 1035645275, 1035996661) + W(1, -1111559939, 1002151576, -1146931846, -1106320367)\n\t\t+ W(2, 1033143495, 1030948981, -1116749294, -1132098378)\n\t\t+ W(3, 1020090684, -1103512376, 1057100532, -1098691810)\n\t\t+ W(4, -1114602228, 1020764052, -1115596769, -1106044643)\n\t\t+ W(5, 1033806067, 1054020686, -1102410839, -1131285468) + W(6, 1018970620, 1033789092, -1089559024, 1053006209)\n\t\t+ W(7, -1114317262, -1143682184, -1117338894, -1121544222)\n\t\t+ W(8, -1119052427, 1053247323, -1148875196, -1140686688)\n\t\t+ W(9, -1131301080, 1025908912, -1109205213, -1117960094)\n\t\t+ W(10, 1040862618, -1112291776, -1134004534, -1120853460)\n\t\t+ W(11, 1021655744, -1112997269, 1024305160, -1137942600);\n\tsum2 =\n\t\tW(0, 1006079429, 1015506585, -1129173219, -1126961905) + W(1, 1025558752, 1004493969, -1142220161, 1012377004)\n\t\t+ W(2, 1019086641, 1027847692, -1121396179, -1129089615)\n\t\t+ W(3, -1129651941, 1027444401, 1029291472, -1099113060) + W(4, 1031608500, 1032469225, -1120056293, 1027255740)\n\t\t+ W(5, -1087748986, -1071778912, -1132223695, -1117547929)\n\t\t+ W(6, 1021210606, -1154390002, 1030702430, 1077548482) + W(7, 1041292060, 1017793536, -1138049810, -1121552483)\n\t\t+ W(8, 1046290929, 1017608723, 1030045463, -1115202758) + W(9, 1020679942, 988683875, -1149010889, 1009874569)\n\t\t+ W(10, -1116313503, 1024909384, -1144760977, -1149209645)\n\t\t+ W(11, 958643736, -1165018915, -1108302337, -1153372770);\n\tWS(1054407548, 983325672);\n\tsum1 =\n\t\tW(0, 1028412425, -1105600625, -1148390382, 1033571545) + W(1, 1032293767, -1124427701, -1115456470, 1033490817)\n\t\t+ W(2, 1044756246, -1114006910, -1119790070, 1037509878)\n\t\t+ W(3, 1017604747, -1115519181, -1103922376, 1059608097) + W(4, -1107101148, 1007976775, 1031921957, 1031550611)\n\t\t+ W(5, -1090010995, -1087252051, 1044072953, 1022727275)\n\t\t+ W(6, -1121692358, -1103698804, 1062123705, -1094628214)\n\t\t+ W(7, 1027680451, 1033962892, 1041128181, -1109550327) + W(8, -1103937189, 1042983319, 1021059262, -1108328080)\n\t\t+ W(9, -1131299175, 1030793272, 1039103265, -1106569209) + W(10, 1007158719, 1032055396, 1034097067, 1014014769)\n\t\t+ W(11, -1135652511, -1116995186, -1141553278, -1143059662);\n\tsum2 = W(0, 1007145536, 1011835040, -1115291423, 1029973058)\n\t\t + W(1, 1036345379, -1106716830, -1108956115, 1040320325)\n\t\t + W(2, -1145921569, -1113530029, -1116109872, 1031627486)\n\t\t + W(3, -1123468231, 1009493536, -1120694127, 1025444390)\n\t\t + W(4, -1106839609, -1106619549, 1003522017, 1036429861) + W(5, 1057547857, 1039825371, 1028735446, 1032586179)\n\t\t + W(6, -1106382527, 1045134298, -1120933925, -1093621604)\n\t\t + W(7, 1043632212, -1135351552, 1023566518, -1132203156)\n\t\t + W(8, -1105348488, 1030401418, 1032927131, -1107014793)\n\t\t + W(9, -1116797301, 1044032552, -1105744806, -1111109931)\n\t\t + W(10, 1031187850, 1030984886, 1016028592, -1103689691)\n\t\t + W(11, 1019566780, 1039637835, -1119043970, -1117261713);\n\tWS(1062610366, -1081620328);\n\tsum1 = W(0, 1034909184, 1041975919, 1038564634, -1086061975) + W(1, 1054071881, -1118145809, 1022225638, 1036878493)\n\t\t + W(2, 1032326503, -1097049310, 1038246806, 1033815666) + W(3, 1022593144, 1038275488, 1032775158, -1094128798)\n\t\t + W(4, 1049378869, 984752392, 1034659649, 1049110721) + W(5, -1104434937, -1097332230, 1048167927, 1040915883)\n\t\t + W(6, -1145063906, 1039909252, -1098154666, -1096830529)\n\t\t + W(7, 1037005773, -1127387550, 1029979468, 1050285945)\n\t\t + W(8, -1091716385, 1031802154, -1122539766, 1042582214)\n\t\t + W(9, 1024460554, 1032760119, -1098908862, -1125106744)\n\t\t + W(10, 1023442918, 1025327999, -1129493655, 1052309552)\n\t\t + W(11, -1093908076, 1033460244, -1111713187, 1038395208);\n\tsum2 = W(0, 1025388154, -1106689977, -1110560421, 1049316874) + W(1, 983067209, -1121273022, 1001261778, 1031762430)\n\t\t + W(2, -1111104301, -1112011481, 1033280635, 1026153330)\n\t\t + W(3, 1007664153, -1105078255, -1122922762, 1044332351)\n\t\t + W(4, -1133572905, -1116643818, 1018216589, -1117638934)\n\t\t + W(5, 1029938402, -1117360942, 1022258405, 1033323756)\n\t\t + W(6, 1011431705, -1119019386, -1107704269, -1116357646)\n\t\t + W(7, 1016143957, -1123412994, -1124915037, 1039919645)\n\t\t + W(8, 1043034893, -1107523849, -1109485745, 1027380094)\n\t\t + W(9, 1007167865, -1115769810, 1041034358, -1112781805)\n\t\t + W(10, 1010088409, 1016238045, -1118462618, 1041969311)\n\t\t + W(11, 1050092429, -1104673921, -1106654827, 1006440178);\n\tWS(-1079099231, 1058224693);\n\tsum1 =\n\t\tW(0, -1136025729, -1098612147, 1040574357, 1044962866) + W(1, -1107948018, -1152707357, 1041807413, 1030021338)\n\t\t+ W(2, -1113591959, 1041390773, 1030293261, 1019631368) + W(3, -1113852830, -1101745716, 1035906153, 1038641429)\n\t\t+ W(4, -1102747762, -1119110697, 1038775953, -1114342965)\n\t\t+ W(5, -1100940817, -1112997607, -1131180663, 1008365619)\n\t\t+ W(6, -1130024634, -1109189268, -1110548904, 1053521164)\n\t\t+ W(7, -1102886695, -1120409456, -1139925939, -1116898669)\n\t\t+ W(8, -1107090858, 1048687519, -1127712365, -1156710253) + W(9, 1032899333, -1169623989, 983487291, 1048553583)\n\t\t+ W(10, 1020276366, -1137865855, -1135488689, -1105924753)\n\t\t+ W(11, -1105279552, 1049805017, 1033907987, -1120648241);\n\tsum2 =\n\t\tW(0, 1026221982, 1031288593, 1025270629, -1105433524) + W(1, 1025604422, 1025361731, -1150712731, -1121646784)\n\t\t+ W(2, 1040465550, -1099611845, 1015298833, -1118571342)\n\t\t+ W(3, -1135858910, 1020650492, -1102699692, -1077885918) + W(4, 1013887757, 1035533544, 998750602, -1118866549)\n\t\t+ W(5, -1090773917, -1073585027, -1111404471, -1115122758)\n\t\t+ W(6, 1026066546, -1126679589, -1103726643, -1083499628)\n\t\t+ W(7, 1029004921, 1025173545, -1122173835, 1033676882) + W(8, 1038653616, 1072488285, -1128843744, -1132364945)\n\t\t+ W(9, 1019885572, -1119823506, 1044175124, 1076879885) + W(10, 1042609155, 982102231, -1114797832, 1024418530)\n\t\t+ W(11, 1035909226, 1053754278, -1128976380, -1120827581);\n\tWS(1039418864, -1140458522);\n\tsum1 = W(0, 983096624, -1114535995, 1044450572, 1027001827) + W(1, -1117675070, 1035770150, 1029517505, -1145085849)\n\t\t + W(2, -1097839409, 1032347927, 1031259878, -1104931415)\n\t\t + W(3, -1121873782, -1102746926, 1062380387, -1106235793)\n\t\t + W(4, -1105839880, 1033087169, 1019803894, 1028523779)\n\t\t + W(5, -1088253674, -1090653261, 1036696746, -1121428646)\n\t\t + W(6, 1027911414, -1100878768, -1109645966, 1061486174)\n\t\t + W(7, -1097301074, -1120235273, -1108005699, 1038991951)\n\t\t + W(8, -1154916402, 1029669390, 1024178544, 1035324408)\n\t\t + W(9, 1033576274, -1142936385, -1107146685, 1047810758)\n\t\t + W(10, 1038477872, -1108040973, -1135118358, -1125909817)\n\t\t + W(11, -1122115416, 1038152785, 1041849616, 1017003668);\n\tsum2 = W(0, -1121567066, 1033267920, -1104421963, -1130139832)\n\t\t + W(1, -1132243276, 1024120715, 1034344084, 1026284945)\n\t\t + W(2, -1103410132, 1037507308, 1034735332, -1109350039)\n\t\t + W(3, -1105011035, 1033899226, 1022298858, -1102818563)\n\t\t + W(4, 1044067085, -1127155070, -1142865888, -1120108491) + W(5, 1057117238, 1003910328, 1041074904, 975508032)\n\t\t + W(6, -1136511728, -1122542627, 1038703002, 1043197066)\n\t\t + W(7, -1101099519, -1117378085, -1106811819, -1120621959)\n\t\t + W(8, 1033583066, -1124006960, -1109459597, 1001772648)\n\t\t + W(9, 1032101677, -1134482876, -1122973141, -1124335993)\n\t\t + W(10, 1041237660, -1113899392, -1113394506, -1114137407)\n\t\t + W(11, 1030826553, -1125132432, -1128301632, -1126301549);\n\tWS(1053462780, -1083681865);\n\tsum1 = W(0, 1023511963, 1041747598, 1041497612, -1138339988) + W(1, 1035615616, 1020629658, -1126058411, 1015154794)\n\t\t + W(2, 1018224530, 996055791, 1027711272, -1123213919) + W(3, 1027394040, 1045749945, 1041814811, 1014351349)\n\t\t + W(4, 1040756601, 1032965474, -1118697149, 1048726745)\n\t\t + W(5, -1086401302, -1082085657, 1048515830, -1129047376)\n\t\t + W(6, 993307519, 1043007793, -1115623160, -1096882594) + W(7, 1042139693, -1132054806, 1025756296, 1038169844)\n\t\t + W(8, 1032344226, -1105145572, 1038148425, 1033289129)\n\t\t + W(9, -1131368524, 1024626666, -1127070442, -1110953740)\n\t\t + W(10, 1009997960, -1128695798, 1029589575, 1040782360)\n\t\t + W(11, -1131398580, -1110890258, 1029718722, 1029252236);\n\tsum2 = W(0, 1008350928, -1118714967, 1030231193, -1091889801)\n\t\t + W(1, -1108897465, 1032606711, 1011413600, 1024023545)\n\t\t + W(2, -1124778398, -1098641764, 1033453825, -1125648711)\n\t\t + W(3, -1120704007, -1126562655, -1110351493, -1104262464)\n\t\t + W(4, -1106889474, 1025836907, 1027382950, 1034951721) + W(5, 1052754126, 1057762368, 1035809187, -1131934955)\n\t\t + W(6, -1127381517, -1128407708, 1033272406, -1161878816)\n\t\t + W(7, -1132306565, -1134699254, 981904616, -1126139913)\n\t\t + W(8, -1151802072, 1012148800, -1153180738, -1131180247) + W(9, 1015535284, 999360844, 1013432992, 1024540201)\n\t\t + W(10, 1014625240, -1171757551, -1135583391, -1138986423)\n\t\t + W(11, -1123376913, 1031971990, -1118108772, -1140791326);\n\tWS(-1099299320, 1056598066);\n\tsum1 =\n\t\tW(0, 1006197652, -1127547996, -1106221946, 1045972807) + W(1, 1004824505, -1119658116, -1128153660, 1041714651)\n\t\t+ W(2, -1098261544, 1038366195, -1113181968, 1030219574)\n\t\t+ W(3, -1136164796, 1029712499, -1085896508, 1057638589)\n\t\t+ W(4, -1113770157, -1129447670, 1035903322, -1128532088) + W(5, 1057218165, 1054413180, 1038963911, 1033715440)\n\t\t+ W(6, -1130396894, -1106761055, 1054525467, -1086573266)\n\t\t+ W(7, 1033084478, -1128924420, 1036246880, -1121593759)\n\t\t+ W(8, 1028130044, -1090476168, 1042818602, -1116035017)\n\t\t+ W(9, -1124832314, 1017604226, 1036683414, -1101308500)\n\t\t+ W(10, -1130963634, 1030841394, 1029570879, 1017990507)\n\t\t+ W(11, 1016287010, -1110319406, -1114724733, 998207538);\n\tsum2 =\n\t\tW(0, -1131923124, 1046772351, -1110971235, -1105011941) + W(1, 1028001687, -1121147281, 993280665, 1028557303)\n\t\t+ W(2, -1134148898, -1104446514, -1147560296, 1024426003)\n\t\t+ W(3, -1127811288, -1107794670, 1043137579, -1096504482)\n\t\t+ W(4, -1101129935, 1034898623, 1032538133, -1098564467)\n\t\t+ W(5, 1067961229, 1066594258, -1104613803, -1136832302)\n\t\t+ W(6, 992174233, -1121892222, -1095277951, -1107079502) + W(7, -1097683180, 1036381319, 1002762140, 1035775413)\n\t\t+ W(8, -1099141736, -1090299346, -1129031039, 1009264906)\n\t\t+ W(9, 1015088121, -1158807761, 1011333246, -1132433157) + W(10, -1108888578, 1032287279, 992586073, 1019898989)\n\t\t+ W(11, -1118039147, -1109952821, 1040568125, -1111357043);\n\tWS(-1105186296, -1108555742);\n\tsum1 =\n\t\tW(0, 1040483623, -1105046378, -1118442722, 1040666374) + W(1, 986662468, -1118942975, -1101386974, 1038429012)\n\t\t+ W(2, 1042743759, -1109750289, -1103538071, 1040611956) + W(3, 1040816739, 1031828819, -1093958439, 1050019912)\n\t\t+ W(4, 1033262923, -1118385334, -1134311356, -1107675004)\n\t\t+ W(5, 1030110546, 1040526743, -1121451017, 1012951144) + W(6, -1108915605, 1034430779, 1044698927, -1097473172)\n\t\t+ W(7, 1032745156, 1035127903, 1046011615, -1109709717) + W(8, -1103097566, 1045974257, 1041021277, -1100748433)\n\t\t+ W(9, -1102638726, 1030173660, 1041159370, -1110364069)\n\t\t+ W(10, -1106175813, 1037154391, 1034864637, -1130419297)\n\t\t+ W(11, -1111922822, 1017242540, 1032931450, -1121991998);\n\tsum2 = W(0, -1127162070, 1014979733, -1114518101, 1016203776)\n\t\t + W(1, 1035296562, -1117887634, -1135271108, -1136185376)\n\t\t + W(2, 1038675289, -1140478504, -1111853852, 1030827904)\n\t\t + W(3, 1003505825, 1028363168, -1105093650, -1089585970)\n\t\t + W(4, 1058969759, -1123277259, 1012864633, -1131143608)\n\t\t + W(5, -1095849351, -1070239185, 1079096535, -1116960146)\n\t\t + W(6, -1123384038, 1033256022, 1028346583, -1078361549)\n\t\t + W(7, 1068193425, -1125445846, 1026898060, -1133517476)\n\t\t + W(8, -1113528611, 1038794260, 1032636395, -1113311282)\n\t\t + W(9, -1134649836, -1120532892, 1028725832, -1125525718)\n\t\t + W(10, 1017911666, 991223090, -1125848258, 1028008335)\n\t\t + W(11, -1117113572, 1005296645, 1032298564, -1134431064);\n\tWS(1065442623, 1015025160);\n\tsum1 =\n\t\tW(0, -1115365041, -1113215535, 1018550702, 983382403) + W(1, -1103693946, -1124004468, 1040496438, 1031517084)\n\t\t+ W(2, 1044423084, 1017412396, 1032083208, 1040563090)\n\t\t+ W(3, -1114325264, -1109245393, -1131936399, -1109909072)\n\t\t+ W(4, -1106995843, -1120263275, 1036061554, 1002812769) + W(5, 1034975748, -1099246196, 1024898238, 1012000060)\n\t\t+ W(6, 1038370800, 1036804053, 1048106991, -1114225707) + W(7, 1044531927, 1036150809, -1112496600, -1099928488)\n\t\t+ W(8, -1107673238, -1129165678, -1096349707, -1113013165)\n\t\t+ W(9, 1039123015, 1036473513, 1041344487, 1011581692) + W(10, 1043676418, 1037117105, -1120668655, -1116761110)\n\t\t+ W(11, 1019812354, -1138585900, -1110354101, -1128538214);\n\tsum2 =\n\t\tW(0, 1010698941, 1023126843, -1106210958, -1122624743) + W(1, -1122034237, -1117968485, 1042699596, -1140656688)\n\t\t+ W(2, 1029081919, 1040813712, -1174961495, 1039098482)\n\t\t+ W(3, 1048659418, -1095653758, -1118272649, -1097694847)\n\t\t+ W(4, 1033474214, -1118912655, 1058578114, -1081184698) + W(5, 1060468587, 996865603, -1102355565, 1020119257)\n\t\t+ W(6, 1052277576, -1097586600, 1043044817, -1103459725) + W(7, 1049205466, 1031051049, 1019470633, -1098953045)\n\t\t+ W(8, -1108654451, -1128239326, -1112376452, -1108144089)\n\t\t+ W(9, 1041036392, 1018118885, 1029721267, 1034766857) + W(10, 1033989555, 1038110136, -1119471849, -1122826054)\n\t\t+ W(11, -1130901998, 1000734433, 1017824567, -1114988670);\n\tWS(-1115864032, 1039792746);\n\tsum1 =\n\t\tW(0, -1140468214, -1121375417, 1034497081, 1039608980) + W(1, -1113171393, -1132620605, 996096400, -1108218204)\n\t\t+ W(2, 1033625894, 1040179481, -1108192053, 1018030914) + W(3, 1010495721, -1109130991, 1055392502, -1093805194)\n\t\t+ W(4, -1127063626, 1012649753, -1114956320, -1115276388)\n\t\t+ W(5, 1036829073, 1050653566, -1109643980, -1127455572) + W(6, 1013460969, 1040789857, -1088431348, 1049263376)\n\t\t+ W(7, -1124542831, -1135717173, -1122072970, -1114444905)\n\t\t+ W(8, 1030275655, 1051648994, -1129660583, -1147064482)\n\t\t+ W(9, -1127833232, 1026520268, -1111886108, -1121903450)\n\t\t+ W(10, 1034831154, -1114505023, -1140762151, -1127271361)\n\t\t+ W(11, 1031218972, -1112576115, 1019975176, -1135014713);\n\tsum2 =\n\t\tW(0, 1015385693, -1115435752, 1035175215, 1017441239) + W(1, -1112773411, 998363696, 1020691269, -1141202058)\n\t\t+ W(2, -1117300235, -1122675471, 1031000417, 1016207247) + W(3, 1015565489, -1111436746, 1033401267, 1055273933)\n\t\t+ W(4, -1101083444, -1113092041, 1019337403, 1040267853) + W(5, -1100581516, 1073306798, 1046685605, 1013448250)\n\t\t+ W(6, -1132207064, -1114623303, 1041259906, -1073173797)\n\t\t+ W(7, -1115311051, -1130370856, -1131086480, 1025609602)\n\t\t+ W(8, -1101351817, 1032997632, -1113329498, 1026870685)\n\t\t+ W(9, -1163542113, -1140470334, 1020278145, -1122237085)\n\t\t+ W(10, 1031244051, -1124843109, 1010427910, -1128429973)\n\t\t+ W(11, 1027629029, -1119509251, 1033297372, 1014260054);\n\tWS(1060418110, -1122066101);\n\tsum1 =\n\t\tW(0, 1031696780, -1115430516, -1104465800, 1041576533) + W(1, -1122042801, 1028261758, -1124029560, -1129767372)\n\t\t+ W(2, -1124342772, 1035204176, -1109435772, 1025573168)\n\t\t+ W(3, -1147879495, 1033383950, -1084846132, 1057835449)\n\t\t+ W(4, -1106791333, 1024098613, -1123330286, 1032201307) + W(5, 1040589380, -1121351835, 1025265863, 1000233671)\n\t\t+ W(6, -1137787811, -1124043956, 1059143665, -1085338500)\n\t\t+ W(7, 1037079395, 1020968696, 1025904121, -1135655378) + W(8, 1047669789, 1026196737, 1031201378, -1122702819)\n\t\t+ W(9, -1122010711, 1016436406, 1032251443, -1113520196)\n\t\t+ W(10, -1120875027, 1016849816, -1131825009, 1011740349)\n\t\t+ W(11, 1017074582, 1023559701, 1024540211, -1123483709);\n\tsum2 = W(0, -1127836624, 1033364881, -1101679270, 1023580345)\n\t\t + W(1, -1149619356, -1136662275, -1173496113, -1127629564)\n\t\t + W(2, -1105780675, -1119640853, 1033890881, -1122666983)\n\t\t + W(3, 1027284157, -1104916712, -1113070309, -1132739235)\n\t\t + W(4, -1113766541, 1023707939, 1022886010, -1097350377)\n\t\t + W(5, 1061873799, 1062616603, -1112358042, 1028952789)\n\t\t + W(6, 1036751625, -1105423640, -1096904559, 1009507187)\n\t\t + W(7, -1119315178, -1117384012, -1124242822, 1034826035)\n\t\t + W(8, -1105550966, -1098447862, 1045500652, -1137245711)\n\t\t + W(9, 1017945890, -1122986652, -1127473876, -1116534057)\n\t\t + W(10, 1015952658, -1136860123, -1140181115, 1033442485)\n\t\t + W(11, -1108824717, -1115327874, 1033458469, 1001899534);\n\tWS(1052277756, 1024619064);\n\tsum1 = W(0, 1029425189, -1120340480, 1055903799, -1093981294)\n\t\t + W(1, -1125235986, 1026200342, -1155801216, -1107014752)\n\t\t + W(2, 1049346130, -1099678446, 1003141514, -1131584400)\n\t\t + W(3, 1030252033, 1038469578, 1057427995, -1098793998) + W(4, 1025012844, 1031806855, -1112675811, 1032327591)\n\t\t + W(5, -1103272826, -1090697510, -1118748640, -1126277858)\n\t\t + W(6, 1025211073, 1034534022, 1040656272, -1103403378) + W(7, 1025335343, 1010568017, -1122395345, 1039704040)\n\t\t + W(8, -1111436999, 1041606598, -1106833215, 1032770798) + W(9, 994289396, -1137717581, 1016775164, 1005246730)\n\t\t + W(10, 1029370155, -1124454216, -1124711713, 1045346698)\n\t\t + W(11, -1134653325, 1013960373, -1099652851, 1034190187);\n\tsum2 = W(0, 1023289146, 1045862572, -1095566322, -1087461476) + W(1, 1016132472, 1044890152, 1020437582, 1028786959)\n\t\t + W(2, -1132354231, -1101737384, -1127607289, -1124440021)\n\t\t + W(3, 1009748873, -1120652794, -1090793815, -1083542229)\n\t\t + W(4, -1107157844, 1037463572, 1030199907, 1015917080) + W(5, 1063879108, 1069217208, -1097091848, 1032502373)\n\t\t + W(6, 1007345789, -1117660774, -1107315270, 1056862945)\n\t\t + W(7, -1098187278, 1028169917, 1010063617, -1106003069)\n\t\t + W(8, 1045942315, -1153692567, -1116485608, -1108513707)\n\t\t + W(9, 1018930146, 1039304637, -1106431667, -1111757292)\n\t\t + W(10, 1036040005, 1034190881, -1127799210, -1098471935)\n\t\t + W(11, 1048572904, 1056217861, -1094693884, -1108016950);\n\tWS(-1086218302, -1084258561);\n\tsum1 = W(0, 1027347742, 1041008695, 1040638149, -1088163117) + W(1, 1045697689, -1131589088, 1021408948, 1036310380)\n\t\t + W(2, 1041666443, -1103354245, 1033383494, 1033326017)\n\t\t + W(3, -1127633782, 1035524367, 1033011818, -1094269524)\n\t\t + W(4, 1040895122, -1132088142, 1039366096, 1048593117) + W(5, 1050103608, -1122175629, 1042904478, 1042877939)\n\t\t + W(6, -1116749595, -1138037400, -1111907839, -1096387988)\n\t\t + W(7, -1136050786, -1131538396, 1033396118, 1045683171)\n\t\t + W(8, -1097626581, -1103712029, 1018682217, 1039834587)\n\t\t + W(9, -1139872292, 1032120647, -1099416246, -1111740158)\n\t\t + W(10, -1126758410, 1030901630, 1025066091, 1046369740)\n\t\t + W(11, -1095221944, -1117250695, -1121047845, 1034112696);\n\tsum2 = W(0, -1116225927, 1020583173, -1120289762, -1116630862)\n\t\t + W(1, 1037488437, -1120774706, 1030773056, 1018516207)\n\t\t + W(2, -1142227828, -1157244503, -1120616119, 1021325617)\n\t\t + W(3, -1122365237, -1121497633, 1024002380, 1045806125)\n\t\t + W(4, -1122845130, -1124264052, 1032148531, 1032012136) + W(5, 1050603076, 1061490298, 1029135782, 1020114521)\n\t\t + W(6, -1127594672, -1111134479, 1040110681, -1104925089)\n\t\t + W(7, -1122119114, -1129316292, 1026422036, -1112679629)\n\t\t + W(8, -1109379336, -1096282325, 1035818151, -1129796491)\n\t\t + W(9, 1023835916, -1123177144, -1102178993, -1103628682)\n\t\t + W(10, -1118358279, 1024324894, -1131330830, -1112996078)\n\t\t + W(11, -1102999759, -1116593585, 1024073644, -1129630471);\n\tWS(-1092406524, -1089571522);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[507];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { temp[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 13 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 507; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 13, y = (uint)id % 13;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (3)) + 0.5, float(group_base.y + y - (2)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[12];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 13];\n\tsamples[1][3] = inp[local_pos + 14];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 26];\n\tsamples[3][1] = inp[local_pos + 27];\n\tsamples[3][2] = inp[local_pos + 28];\n\tsamples[3][3] = inp[local_pos + 29];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 39];\n\tsamples[4][3] = inp[local_pos + 40];\n\tsamples[5][0] = inp[local_pos + 41];\n\tsamples[5][1] = inp[local_pos + 42];\n\tsamples[5][2] = inp[local_pos + 43];\n\tsamples[5][3] = inp[local_pos + 44];\n\tsamples[6][0] = inp[local_pos + 52];\n\tsamples[6][1] = inp[local_pos + 53];\n\tsamples[6][2] = inp[local_pos + 54];\n\tsamples[6][3] = inp[local_pos + 55];\n\tsamples[7][0] = inp[local_pos + 56];\n\tsamples[7][1] = inp[local_pos + 57];\n\tsamples[7][2] = inp[local_pos + 65];\n\tsamples[7][3] = inp[local_pos + 66];\n\tsamples[8][0] = inp[local_pos + 67];\n\tsamples[8][1] = inp[local_pos + 68];\n\tsamples[8][2] = inp[local_pos + 69];\n\tsamples[8][3] = inp[local_pos + 70];\n\tsamples[9][0] = inp[local_pos + 78];\n\tsamples[9][1] = inp[local_pos + 79];\n\tsamples[9][2] = inp[local_pos + 80];\n\tsamples[9][3] = inp[local_pos + 81];\n\tsamples[10][0] = inp[local_pos + 82];\n\tsamples[10][1] = inp[local_pos + 83];\n\tsamples[10][2] = inp[local_pos + 91];\n\tsamples[10][3] = inp[local_pos + 92];\n\tsamples[11][0] = inp[local_pos + 93];\n\tsamples[11][1] = inp[local_pos + 94];\n\tsamples[11][2] = inp[local_pos + 95];\n\tsamples[11][3] = inp[local_pos + 96];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 41];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(1, 2);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(1, 2) + ivec2(0, 1), ret);\n}\n//!PASS 2\n//!DESC NNEDI3 (double_x, nns64, win8x6)\n//!IN INPUT, temp\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 8\n//!NUM_THREADS 32, 8\n#pragma optionNV(inline none)\nfloat nnedi3(vec4 samples[12]) {\n\tfloat sum = 0.0, sumsq = 0.0;\n\t[unroll] for (int i = 0; i < 12; i++) {\n\t\tsum += dot(samples[i], vec4(1.0, 1.0, 1.0, 1.0));\n\t\tsumsq += dot(samples[i], samples[i]);\n\t}\n\tfloat mstd0 = sum / 48.0;\n\tfloat mstd1 = sumsq / 48.0 - mstd0 * mstd0;\n\tfloat mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7);\n\tmstd1 *= mstd2;\n\tfloat vsum = 0.0, wsum = 0.0, sum1, sum2;\n#define T(x) intBitsToFloat(x)\n#define W(i, w0, w1, w2, w3) dot(samples[i], vec4(T(w0), T(w1), T(w2), T(w3)))\n#define WS(w0, w1)                                                                                                     \\\n\tsum1 = exp(sum1 * mstd2 + T(w0));                                                                                  \\\n\tsum2 = sum2 * mstd2 + T(w1);                                                                                       \\\n\twsum += sum1;                                                                                                      \\\n\tvsum += sum1 * (sum2 / (1.0 + abs(sum2)));\n\tsum1 =\n\t\tW(0, -1120714617, 1007614003, -1123305414, 1009908268) + W(1, -1129324172, -1121901526, 1022915304, -1142748844)\n\t\t+ W(2, 1035162146, -1123901891, 1027364554, 1030225939)\n\t\t+ W(3, -1116882705, 1030599214, -1135846624, -1113117446)\n\t\t+ W(4, -1110752415, 1046176310, -1114390527, -1110762423)\n\t\t+ W(5, 1032526991, -1096831458, -1117077507, -1127767760)\n\t\t+ W(6, -1121818163, -1105876799, -1096860741, 1046191054) + W(7, 1043289735, 1052908756, 1034530771, 1039462233)\n\t\t+ W(8, 1035961863, 1034124059, 1022953826, 1023450788) + W(9, -1114841418, -1114991488, -1116257712, 1025047056)\n\t\t+ W(10, -1120878363, -1120533037, -1155422496, -1124524780)\n\t\t+ W(11, -1129613106, 1013731840, 981289536, -1143328976);\n\tsum2 =\n\t\tW(0, -1131108965, 1000650931, 1025688791, -1116852534) + W(1, -1145056307, -1123043594, 1018436747, -1139914565)\n\t\t+ W(2, 1043465638, -1113612493, -1106748353, 1029599173)\n\t\t+ W(3, 1045881517, -1118230687, 1029259867, -1107504809)\n\t\t+ W(4, 988544780, -1124179817, -1070139293, -1102659167) + W(5, 1078104617, 1048052425, -1126127905, 1025133515)\n\t\t+ W(6, -1145266179, -1111438835, -1110118136, -1097100047)\n\t\t+ W(7, 1027449515, 1027739737, -1136112041, 1036504803) + W(8, 1018501507, 1003301507, 1026178295, 1031198431)\n\t\t+ W(9, -1123515159, -1134523125, 995063942, -1120319069)\n\t\t+ W(10, 1021344415, -1131299129, -1123696315, 1012522521)\n\t\t+ W(11, 1024975831, 1020199127, -1162666156, -1131042995);\n\tWS(1061710334, -1113637247);\n\tsum1 = W(0, -1121814583, -1138603692, -1138264845, -1140194465)\n\t\t + W(1, -1131439046, -1125621862, 1023073058, -1129805541)\n\t\t + W(2, 1036106897, -1122595552, 1018454510, 1033737112)\n\t\t + W(3, -1122735662, 1024541667, -1122620661, -1116003130)\n\t\t + W(4, -1109309294, 1048694647, 1030681928, -1115559686)\n\t\t + W(5, 1044326142, -1097437158, -1132933761, -1128614666)\n\t\t + W(6, -1143950978, -1103580007, -1097890158, -1120177173)\n\t\t + W(7, 1042373458, 1052689231, 1034486114, 1037961704) + W(8, 1033251382, 1032154570, 1019050396, 1021617155)\n\t\t + W(9, -1113884080, -1107957310, -1116304653, 1019245786)\n\t\t + W(10, -1118153848, -1122508490, 1012933309, -1120902675)\n\t\t + W(11, -1152998244, 1016843898, -1144273714, -1155701620);\n\tsum2 =\n\t\tW(0, -1162960213, 1013908203, -1113327157, 1023571595) + W(1, -1133790043, 1024139725, -1130037920, 1007034787)\n\t\t+ W(2, -1107084454, 1023868855, 1032525526, 1048796624) + W(3, -1104878976, 1003078933, -1121062518, 1034207166)\n\t\t+ W(4, -1126626424, 1032930462, 1076098019, -1132699465)\n\t\t+ W(5, -1072747140, -1104764998, 1019199125, -1123497947)\n\t\t+ W(6, 1025411499, 1029914487, 1035900190, -1093496445) + W(7, 1026052839, -1109617402, 1025857863, -1118139493)\n\t\t+ W(8, -1126548940, 997665611, -1121182801, 1038561302)\n\t\t+ W(9, -1146184997, -1142783113, -1147685381, 1017680405)\n\t\t+ W(10, -1127269937, 1018748433, -1158385717, 1000017309)\n\t\t+ W(11, -1123007653, -1154085627, 1000677165, 1016687665);\n\tWS(1064800702, 1030635520);\n\tsum1 = W(0, 1004285524, -1122860750, -1122286551, 1021316024)\n\t\t + W(1, -1116388951, 1022533838, -1125657162, 1001429301)\n\t\t + W(2, -1128056492, 1024005652, 1035530413, 1053335517)\n\t\t + W(3, -1139373960, -1130762670, -1121564617, -1129213371)\n\t\t + W(4, 1035663048, 1031878036, 984521208, -1100061872) + W(5, 1048911707, 1035194194, -1131931048, -1141986761)\n\t\t + W(6, -1110660706, -1116831438, 1023270757, -1093549817)\n\t\t + W(7, -1104621327, -1149876978, -1142066105, 1031904066)\n\t\t + W(8, -1128734654, -1204558974, -1136886024, 1042579293)\n\t\t + W(9, -1148999845, -1142259845, -1120920449, -1111776529)\n\t\t + W(10, 1028175148, -1143857649, 1005008153, 1016449422)\n\t\t + W(11, -1135015336, 1010510404, 1018152308, 1020350678);\n\tsum2 =\n\t\tW(0, 1015139874, -1150118671, 1032711786, 1028577839) + W(1, -1116703472, -1123435694, -1140098908, -1140019692)\n\t\t+ W(2, -1120731382, -1116737087, -1087320828, -1069693959)\n\t\t+ W(3, -1103666133, -1138801588, 999422392, 1029210329) + W(4, 1017539382, 1031888972, 1059502015, 1078824499)\n\t\t+ W(5, 1045823576, 1009232228, 1011539428, -1118193829) + W(6, 1020112270, -1112637962, 1026899401, -1094071548)\n\t\t+ W(7, 1036639812, -1114441289, 1023067274, -1131442506)\n\t\t+ W(8, -1126248934, 1010207212, -1119882792, 1040940327)\n\t\t+ W(9, -1131804892, 1029410629, -1130083750, 1007549476)\n\t\t+ W(10, 1013963196, -1138130380, 1019091922, -1123861886)\n\t\t+ W(11, 1004924552, -1130443436, -1137456436, 1026106777);\n\tWS(1058942782, 1023618692);\n\tsum1 = W(0, -1126072821, 1011693912, 1017195423, -1122268692) + W(1, 1022607903, 982545387, -1126061755, 1003763447)\n\t\t + W(2, 1041771492, 1025548876, 1036961985, 1037536142) + W(3, 1038780013, 1023558139, 1037537425, 1035261291)\n\t\t + W(4, -1110777188, 1035801072, -1094081945, -1091452759)\n\t\t + W(5, -1095962376, 1049096396, -1113879430, 955835050)\n\t\t + W(6, -1110871838, 1043278082, -1103634941, -1105679152)\n\t\t + W(7, -1103558179, -1130619215, -1136949949, 1026350907)\n\t\t + W(8, 1036426764, -1146527995, 1046715887, 1040286827) + W(9, 1049101574, 1031851588, 1002869195, 1006549707)\n\t\t + W(10, -1142526755, 1015953709, -1148709083, -1119884351)\n\t\t + W(11, -1122534754, 1007174309, 1017517093, 986004587);\n\tsum2 =\n\t\tW(0, -1128639222, -1150616818, -1118932607, -1125568566) + W(1, 991022546, -1129687950, 1018120650, 1006676397)\n\t\t+ W(2, 1001638233, 1013509397, 1035428655, 1024255335) + W(3, 1031481278, -1111645244, 1028380841, -1115817479)\n\t\t+ W(4, -1119841411, 1029376723, 1019940778, 1063260126) + W(5, 1032753418, 1026999545, -1121385219, -1134958989)\n\t\t+ W(6, 1014385869, 1037911199, -1102461584, -1085129330) + W(7, -1110003004, 1019019978, 1021463302, 1017625850)\n\t\t+ W(8, 986023269, 970306708, -1141011097, -1110526300) + W(9, 1033244979, -1121764803, 1025283273, -1128128990)\n\t\t+ W(10, -1135260845, 1013815957, 959170344, 1017551658)\n\t\t+ W(11, 1016351942, -1127392454, 1009569613, -1138867245);\n\tWS(1037837808, 1056377428);\n\tsum1 =\n\t\tW(0, -1135573495, 1023727061, -1118803082, -1123500111) + W(1, 1020600341, -1111066541, 1008936161, -1115286797)\n\t\t+ W(2, -1105969090, -1138454045, -1114548551, 1046351686) + W(3, 1036383371, 1034647805, 1026657308, 1033474888)\n\t\t+ W(4, 1027945538, -1116105371, -1126955510, -1122693874)\n\t\t+ W(5, 1053007142, 1035274060, -1156882549, -1122516460) + W(6, 1043223694, 1039709953, 1051232418, -1100833583)\n\t\t+ W(7, -1103740252, -1101618713, 1033814037, -1129756781)\n\t\t+ W(8, -1100584037, -1111027805, -1097887999, 1040497066)\n\t\t+ W(9, 1024768136, -1138012047, -1123286772, 1010716753)\n\t\t+ W(10, 1025656415, 1021082723, 1018764077, -1115071549)\n\t\t+ W(11, 1025234525, -1116333124, 1016891995, -1114238799);\n\tsum2 = W(0, 1020978875, -1121670462, -1103298336, -1110731474)\n\t\t + W(1, -1105136733, -1119790394, -1127100056, 999102475)\n\t\t + W(2, -1100967324, -1130583533, -1096736455, 1053186254)\n\t\t + W(3, 1045958215, 1043729632, 1033816035, 1020355333) + W(4, 1043179705, -1122981488, 1062358565, -1112891412)\n\t\t + W(5, 1031005462, 1033523405, -1109547546, -1122874410)\n\t\t + W(6, 1026290891, 1032797386, -1104401130, -1091109944)\n\t\t + W(7, -1133705481, -1102472853, 1031959215, -1122532081)\n\t\t + W(8, 1013196277, -1120286641, -1114052290, 1048200412)\n\t\t + W(9, -1113847816, 1033631266, -1126209517, 1027184816)\n\t\t + W(10, -1138979633, 966672716, -1152672163, -1122242747)\n\t\t + W(11, 1023845499, -1118586102, -1147194793, -1127245018);\n\tWS(1050865148, 1032626572);\n\tsum1 = W(0, -1110436993, 1040042556, -1107890608, -1113356418)\n\t\t + W(1, 1034032544, -1105712244, 999321197, -1110201208)\n\t\t + W(2, 1043627312, -1101476879, 1049906138, -1109025830)\n\t\t + W(3, -1120749707, 1051482110, -1103830356, 1048543054)\n\t\t + W(4, -1118552440, -1108049256, -1107535228, -1162779891)\n\t\t + W(5, -1095271743, 1035225158, -1104074479, -1106449960)\n\t\t + W(6, 1045700875, 1033317691, -1115480133, 1049713062) + W(7, 1042738346, -1122810712, 1050825756, 1031488492)\n\t\t + W(8, -1115060612, 1031191472, 1025393771, -1106727656)\n\t\t + W(9, -1127443770, 1039553933, -1104755066, 1040395170)\n\t\t + W(10, 1040430485, -1096410465, 1042925123, -1114330616)\n\t\t + W(11, -1106585845, 1042770518, -1103219825, 1009713998);\n\tsum2 = W(0, 1024944996, 1020193961, 1014966838, 1015828472) + W(1, -1113612636, 1032934706, -1116105943, 1021395599)\n\t\t + W(2, -1111924540, 1007347355, -1116539066, 1012341552)\n\t\t + W(3, 1034050704, -1113193567, 1042584092, -1116104243)\n\t\t + W(4, -1107012648, 1049541488, -1107447750, -1109770505)\n\t\t + W(5, -1111197863, 1014122612, 1016467631, -1135977693) + W(6, 1057346437, 1054940943, 1059914271, 1066972918)\n\t\t + W(7, 1063973493, 1056333532, 1045837843, 1043326701)\n\t\t + W(8, -1105023593, -1097277462, -1142156696, 1043445868)\n\t\t + W(9, 1017043379, -1118781870, -1113967259, -1117573943)\n\t\t + W(10, -1097010076, -1107952444, -1085761230, -1078926120)\n\t\t + W(11, -1084679416, -1092348708, -1128370702, -1108363561);\n\tWS(1054811644, 1027249161);\n\tsum1 =\n\t\tW(0, 1040940111, -1100243090, 1043481462, -1119365790) + W(1, -1111878381, 1044780378, -1101638738, 1035929492)\n\t\t+ W(2, -1101358582, 1036221579, 1014943347, -1109150355)\n\t\t+ W(3, 1036687602, -1109759237, 1028424107, -1122643648)\n\t\t+ W(4, -1113576073, 1038054901, -1097482896, -1106696288)\n\t\t+ W(5, 1022736646, -1097940765, 1038478827, -1103674991) + W(6, 1049141881, -1105999252, 1051960356, 1048275427)\n\t\t+ W(7, -1118345360, 1049145430, -1113101949, 1037909315)\n\t\t+ W(8, -1132483205, -1104538698, 1036681666, -1123112824)\n\t\t+ W(9, 1019000333, 1044474573, -1103799553, 1037239602)\n\t\t+ W(10, -1116754862, 1037145120, -1118995685, -1126689554)\n\t\t+ W(11, 1038634998, -1101292557, 1034438878, -1126283866);\n\tsum2 = W(0, 1023766557, 1015306072, -1136376403, -1113107482)\n\t\t + W(1, 1038494252, -1113447013, 1023629411, 1024784188) + W(2, 1016554458, 1020144724, -1116988904, 1050162106)\n\t\t + W(3, -1104347057, 1003678517, 1033762395, -1109441777)\n\t\t + W(4, 1021815988, -1103467660, 1034521268, -1102546407)\n\t\t + W(5, -1103257907, 1025406308, -1113239746, 1026085595)\n\t\t + W(6, -1137435361, 1016553974, 1060795535, 1075503478) + W(7, 1072821349, -1113972415, 1031283975, 1037416902)\n\t\t + W(8, -1114856427, 1044555388, -1088370625, -1071164689)\n\t\t + W(9, -1077590614, -1112563255, 995356642, -1112537357)\n\t\t + W(10, 1032032312, -1105991725, -1127777881, 1035804901)\n\t\t + W(11, -1120944929, 1036418439, -1123929939, -1140753514);\n\tWS(1055940220, -1124188157);\n\tsum1 =\n\t\tW(0, -1113999823, 1015763751, -1115168029, 1022861696) + W(1, -1114461725, -1113117029, 1032164308, -1121800074)\n\t\t+ W(2, -1119569210, 1043278990, -1094609330, 1044340802)\n\t\t+ W(3, 1033154083, -1106205123, 1021089498, -1107756257)\n\t\t+ W(4, 1015781094, -1106256755, 1052603679, -1095339972)\n\t\t+ W(5, -1108564239, 1042723938, -1125646960, -1171638077)\n\t\t+ W(6, -1147977024, 1046188556, 1041916962, -1108128054) + W(7, 1057380776, -1095928258, 1041299799, 1027517543)\n\t\t+ W(8, -1117684995, 1036478965, 1033522483, 1047885622) + W(9, 1036635468, 1035899866, -1139371156, -1131185034)\n\t\t+ W(10, -1108336232, 1006648968, -1101485874, -1110457109)\n\t\t+ W(11, -1114614567, -1108232826, 1034599135, -1115299047);\n\tsum2 = W(0, -1120118804, 1013270421, -1120552641, -1117027367)\n\t\t + W(1, 1016254148, -1110780393, 1030787932, -1133117880)\n\t\t + W(2, -1136369034, 1027353114, -1125884733, 1035518448)\n\t\t + W(3, 1043285424, -1129166063, -1140216380, -1120569751)\n\t\t + W(4, -1127959037, -1129939889, -1117793827, -1095769137)\n\t\t + W(5, -1095274849, -1117623897, -1128598589, -1129927717)\n\t\t + W(6, 1015341014, 1034464346, -1117887441, 1043338219) + W(7, 1049861339, -1128474295, 1032330618, 1018695247)\n\t\t + W(8, 1033327798, 1041751325, 1049619624, 1049093640) + W(9, 1048627700, 1035712363, 1035384499, 1027229852)\n\t\t + W(10, -1113602386, -1114857235, -1103868602, -1097589990)\n\t\t + W(11, -1105817123, -1106207094, 1004274322, -1120123842);\n\tWS(1057163582, 1025817537);\n\tsum1 = W(0, 1037167835, -1121852313, 1034559945, 1027044951) + W(1, 1039868489, 1037598609, 1007581568, 1031626785)\n\t\t + W(2, 1031655825, 1046829204, 1038865075, 987855837) + W(3, -1105739319, -1112419405, 1015381448, 1037495244)\n\t\t + W(4, -1096271953, -1093143228, -1085198281, 1050118415)\n\t\t + W(5, 1057217669, 1047779928, 1035805671, 1015872616) + W(6, 1045084224, 1046279122, 1057074420, 1040167170)\n\t\t + W(7, -1086525384, -1087515051, -1098926044, -1124461564)\n\t\t + W(8, 1033520525, -1103697416, -1107583934, 1024989936)\n\t\t + W(9, 1034776664, 1044254259, -1134624240, -1113253902) + W(10, 1016078798, 1030441081, 1036548879, 974934139)\n\t\t + W(11, 1034922130, -1113468278, 1036139674, 1017385676);\n\tsum2 =\n\t\tW(0, -1136384493, 1023814631, 1033659202, 1017810163) + W(1, 1009967381, 1017781727, -1118180802, -1141961139)\n\t\t+ W(2, 1036526786, -1099879539, 1034332004, 1013925981)\n\t\t+ W(3, -1106516740, -1101585218, -1131784625, -1112082470)\n\t\t+ W(4, 1028719631, 1030342243, 1046758826, -1093436173) + W(5, 1051870663, 1042788701, -1114786901, -1113417628)\n\t\t+ W(6, -1123632092, 1043747658, 1050427835, -1100447595) + W(7, 1041231786, 1045006578, 1010389989, -1117114477)\n\t\t+ W(8, -1145098603, -1102737141, -1112406001, -1119158797)\n\t\t+ W(9, 1034292458, -1107586767, -1143106923, 1032164569)\n\t\t+ W(10, -1122280548, -1130733945, 1014543213, -1123106681)\n\t\t+ W(11, 1019870319, 1013053757, -1119739637, 1012643781);\n\tWS(-1081763615, -1092598780);\n\tsum1 = W(0, -1130922677, -1122514966, -1136114845, 1015393433)\n\t\t + W(1, -1137786397, 1023447063, -1142668459, -1140705115)\n\t\t + W(2, -1114318275, 1026414532, 1017564438, 1021344041)\n\t\t + W(3, -1095352826, -1116164091, -1123782681, 1012849463)\n\t\t + W(4, -1127997567, -1121576984, -1088500870, -1098266094)\n\t\t + W(5, 1061435536, -1148866211, 1039772482, 1024002537) + W(6, 1028467828, -1127358845, 1061837768, 1035926493)\n\t\t + W(7, -1095349722, -1114585584, -1114677716, -1116920883)\n\t\t + W(8, 1023598927, 1017010415, -1116904946, 1037585875) + W(9, 1040151266, 1031742785, 1007413957, -1128808099)\n\t\t + W(10, -1139280241, 1002425203, -1123987795, -1136160989)\n\t\t + W(11, -1131570741, -1116123969, 1020007637, -1126849079);\n\tsum2 =\n\t\tW(0, 1021958137, -1117837187, 1026312941, -1115513274) + W(1, 1037370871, -1112242113, 1033686533, -1107052036)\n\t\t+ W(2, 1034408685, 1036094407, 1033683959, -1124949158) + W(3, -1091894288, 1027011647, -1107943508, 1010459130)\n\t\t+ W(4, -1106091708, -1147105428, -1094093059, 1061646324)\n\t\t+ W(5, 1058519893, -1106569597, 1037199097, 1030945863)\n\t\t+ W(6, -1098486326, -1110159069, -1088187103, 1055280585) + W(7, 1045036050, 1045721104, 1034325435, 1039418143)\n\t\t+ W(8, 1028745769, 1031154711, -1105512708, -1100598283)\n\t\t+ W(9, -1109806227, -1117345257, -1144974476, -1124920152)\n\t\t+ W(10, 1024682325, -1116910593, 1039406737, -1117359799)\n\t\t+ W(11, 1026080301, -1117139296, 991455177, -1112397476);\n\tWS(1049187708, 1061143407);\n\tsum1 = W(0, 1032206028, -1121811767, 1032297330, -1136528167)\n\t\t + W(1, 1005295654, 1031846890, -1136496587, 1032778794) + W(2, 1046469409, 1033070593, 1049873346, 1050639650)\n\t\t + W(3, 1041319460, 1041542033, 1036329419, 1043869975) + W(4, 1044620591, 1020031147, -1111788011, -1089881571)\n\t\t + W(5, -1127219501, 1033106537, 991465499, -1112918515)\n\t\t + W(6, -1086760535, -1113096094, -1092765627, -1083700943)\n\t\t + W(7, -1092202425, 1011207027, 1015330121, 1026637361) + W(8, 1049164066, -1132628435, 1051671486, 1044844041)\n\t\t + W(9, 1037004161, 1026161438, -1134373563, 1019220893) + W(10, 1022165171, 1009114287, 1034535880, 1024964917)\n\t\t + W(11, 1011091807, 1038185039, 1018308239, 1032129132);\n\tsum2 =\n\t\tW(0, -1123557888, -1139662759, -1120649660, 1021700488) + W(1, -1119215196, 1025758640, -1134635263, 1025396502)\n\t\t+ W(2, 1024038368, 1022314468, 1016353740, -1149024430)\n\t\t+ W(3, -1127462832, -1109226016, 1022909500, -1106595065) + W(4, 964997605, 1007232143, -1112234110, 1052797849)\n\t\t+ W(5, 1032636001, -1096670151, -1103246759, -1095307242)\n\t\t+ W(6, -1123190992, 1040909663, 1035500288, 1059925772)\n\t\t+ W(7, -1123381020, -1110751472, -1114698588, 1016687528)\n\t\t+ W(8, -1170950771, -1119781676, -1122589660, 1021322900)\n\t\t+ W(9, -1124742672, 1037872214, -1123038904, 1025386190)\n\t\t+ W(10, 1009594487, 1011035391, -1122952928, 1015425876)\n\t\t+ W(11, 1024335912, -1115520552, 1026100870, -1128653768);\n\tWS(-1080960863, 1058419411);\n\tsum1 = W(0, -1118700722, 1032983255, -1122641758, 1033094082)\n\t\t + W(1, -1121000958, -1133773881, -1141737059, -1120123854)\n\t\t + W(2, -1111066847, -1112208894, -1099579692, -1090459763)\n\t\t + W(3, -1107128402, -1107276892, -1116550064, -1103159313)\n\t\t + W(4, 984198859, -1099715572, 1049479517, 1062349342) + W(5, -1099059374, 1033076198, -1125040759, 1037355536)\n\t\t + W(6, 1043965403, -1113907195, 1050672334, 1061713555) + W(7, 1059583022, -1121054998, 1024684126, 1026513898)\n\t\t + W(8, -1108783427, -1113914551, -1105019770, -1095692932)\n\t\t + W(9, -1099879371, -1108028092, 1024533736, -1110661700)\n\t\t + W(10, 1000248987, -1124179019, -1128328213, 1023738862)\n\t\t + W(11, -1131329315, 1027231576, -1113801521, 1007580489);\n\tsum2 = W(0, 995719700, -1114687459, 1024240180, -1115935924) + W(1, 1025427056, -1123062148, 999440794, -1131128122)\n\t\t + W(2, -1129327601, 1021214658, 997717028, 978476974) + W(3, -1140454571, 1010080137, 1002330866, -1152746908)\n\t\t + W(4, -1125739202, 1027238209, -1120915257, -1078687396)\n\t\t + W(5, -1111104335, -1128218828, -1147995690, -1128526870)\n\t\t + W(6, 1029045123, 1037994429, 1036441804, 1066236156) + W(7, 1022342240, 1028953671, 1024857232, -1126806088)\n\t\t + W(8, 1025141617, -1113434302, 1032546636, 1035362808)\n\t\t + W(9, 1033358736, -1166615662, -1165027863, 1024563904)\n\t\t + W(10, -1154923092, 1007115993, 1003062850, -1118441375)\n\t\t + W(11, 1017727844, -1129048983, 1019778022, 1009762473);\n\tWS(-1082880574, -1095080656);\n\tsum1 = W(0, -1120399523, -1123397517, -1135116544, -1168421181)\n\t\t + W(1, -1131259136, 1037719400, -1113348279, 1030740495)\n\t\t + W(2, -1111736159, -1128373242, 1025039907, -1127950106)\n\t\t + W(3, -1098593297, -1106461210, 1024172498, 1028249110)\n\t\t + W(4, -1111698940, 1019423266, -1092929515, -1098702381)\n\t\t + W(5, 1060991762, 1018082074, 1036669022, -1114016273) + W(6, 1037879414, 1028697399, 1062200098, 1023355236)\n\t\t + W(7, -1094756999, -1115312044, -1106391640, -1109491766)\n\t\t + W(8, 1037066756, -1119567216, -1131199446, 1027882718)\n\t\t + W(9, 1038218895, 1022591155, -1118950442, -1141634128)\n\t\t + W(10, -1118524245, 1027581671, -1139610160, -1139561152)\n\t\t + W(11, 1005358744, -1113962893, 1026868195, -1126548648);\n\tsum2 =\n\t\tW(0, 1007561151, -1118820752, -1128452386, -1121745985)\n\t\t+ W(1, -1114861795, -1121584151, -1120079456, -1129117272)\n\t\t+ W(2, -1106890729, 1031296198, -1110907715, 1032462388) + W(3, 1035962501, 1035033495, 982365671, 1035951051)\n\t\t+ W(4, -1144059530, -1112391017, 1056169840, -1096446085)\n\t\t+ W(5, 1031556034, 987032615, -1138039959, -1119286197) + W(6, 1010626011, -1114880200, 1052511775, -1094697844)\n\t\t+ W(7, 1056886944, -1129701328, 980377326, -1126702674) + W(8, -1140206187, -1136937433, 1034255225, 1033067226)\n\t\t+ W(9, -1104164393, 1013679559, -1115367679, -1137374445)\n\t\t+ W(10, -1152147163, -1120281594, -1114711449, 993102387)\n\t\t+ W(11, -1120009849, -1122813977, -1118918686, 1006646323);\n\tWS(1058795070, 1058351276);\n\tsum1 = W(0, -1129226172, 1032650784, -1134152362, -1122312016)\n\t\t + W(1, -1145265749, -1118796187, 1017891569, -1131365684)\n\t\t + W(2, -1106246658, -1132244111, -1102574120, 1028257624)\n\t\t + W(3, 1004724909, -1128587973, -1150296521, -1107598873)\n\t\t + W(4, 1041614193, 1048401911, 1050141831, -1088102699)\n\t\t + W(5, -1093353638, -1112285036, -1122892680, -1120116589)\n\t\t + W(6, 1041522846, 1041471472, 1033352747, 1030285885) + W(7, 1056599450, 1049138668, 1043369227, 1040658126)\n\t\t + W(8, -1106977045, 1031926461, -1121658742, -1124591186)\n\t\t + W(9, -1107883356, -1114299650, -1130730345, 1034850634)\n\t\t + W(10, -1140271486, -1130658915, -1115542891, -1119417531)\n\t\t + W(11, -1155196377, 1003429157, -1125742491, -1137642362);\n\tsum2 =\n\t\tW(0, 1018264792, 1019878456, 1020074080, -1143212320) + W(1, -1148803168, -1127882992, 1017409120, -1131165168)\n\t\t+ W(2, -1109681111, -1134735936, -1106212594, 1037009054) + W(3, -1132238328, 1032289620, 990246720, 1004132864)\n\t\t+ W(4, 1028734812, -1093714299, 1034660210, 1047288883) + W(5, 1031452084, -1112028563, -1115169564, 1020410832)\n\t\t+ W(6, -1104210606, -1099909667, -1098896203, 1060586916)\n\t\t+ W(7, 1042866381, -1109339206, 1023925320, -1112228144) + W(8, 1025579416, 1032419228, 1010388000, 1030286292)\n\t\t+ W(9, -1107165918, 1019446368, 989303425, 1029468412) + W(10, 1029305888, -1113499692, 1025031188, -1130541520)\n\t\t+ W(11, -1127563664, 1026005920, -1123344268, 1009015280);\n\tWS(1043816952, 1056206353);\n\tsum1 = W(0, -1132948972, 1024900084, -1150680698, 1016358425)\n\t\t + W(1, -1160444148, -1115326124, 1019123435, -1120343575)\n\t\t + W(2, -1115461859, -1107172113, -1097009915, -1102438229)\n\t\t + W(3, 1024199571, -1148961467, -1130723763, -1144998513)\n\t\t + W(4, 1034684352, 1038250028, 1061195075, 1051576078) + W(5, -1088975285, 1010078034, -1107729186, 1022450003)\n\t\t + W(6, 1037119642, 1039626815, -1095598055, 1056604231) + W(7, 1057172865, 1029312608, 1039764276, -1112740858)\n\t\t + W(8, -1107088436, -1110088668, -1113187289, -1102307882)\n\t\t + W(9, -1103288997, -1122873761, 1032878393, 1034042985)\n\t\t + W(10, -1144087781, -1116127087, -1117712852, -1114968828)\n\t\t + W(11, -1134624362, 1012385158, -1114736693, 1002559709);\n\tsum2 = W(0, -1135809827, -1140675011, -1137384851, -1147988326)\n\t\t + W(1, 1019754904, -1172160176, 1006265798, 990940844) + W(2, 1031002711, 1009667595, -1156373420, 1010789683)\n\t\t + W(3, -1122328477, -1135703979, 1016962928, -1135289651)\n\t\t + W(4, -1136033931, 1025543601, -1123691685, -1105219090)\n\t\t + W(5, -1118075063, -1111692677, -1131889022, 1010975355)\n\t\t + W(6, -1114169661, -1124911966, 1056449903, 1044469394)\n\t\t + W(7, 1046754031, 1034039333, 1024901767, -1111731157)\n\t\t + W(8, -1107967067, -1108557845, -1096033675, -1118550723)\n\t\t + W(9, 1020360378, 1005574774, 1025982043, 1036125487) + W(10, 1027957130, 1004385158, 1015282250, -1115586301)\n\t\t + W(11, -1120013003, -1130287690, -1127946498, -1169619760);\n\tWS(1049886076, 1034318367);\n\tsum1 =\n\t\tW(0, -1140544720, 1006465467, 1025588553, -1118154094) + W(1, 996302474, -1111905052, -1125961261, -1122979160)\n\t\t+ W(2, 1022042959, -1106141033, -1104462159, -1100197533)\n\t\t+ W(3, 1029682164, -1112348667, -1117824763, -1123002959) + W(4, 1021784769, 966352080, 1059646174, 1051735858)\n\t\t+ W(5, -1085821075, 1029991670, -1111853843, 1031029131)\n\t\t+ W(6, -1131075883, 1032360624, -1086897182, 1059041662) + W(7, 1057694799, 1036690656, 1030592201, -1155480906)\n\t\t+ W(8, -1142660485, 1029412697, 1042100949, -1106256562)\n\t\t+ W(9, -1106530518, -1121375714, 1017125029, 1014936522)\n\t\t+ W(10, -1160888244, -1121174096, 1017231209, -1150715274)\n\t\t+ W(11, 1024907260, 1015672965, -1120397516, -1124207481);\n\tsum2 = W(0, -1110846605, -1118194097, -1143898437, 1019764549) + W(1, 1008325379, 999139301, 997400075, 1024689095)\n\t\t + W(2, 1032320648, 1027617785, 1000132981, -1102116254)\n\t\t + W(3, 1026769453, -1131321177, 1008054267, -1118482095)\n\t\t + W(4, 1027180085, -1144235925, 1031570329, 1058710858)\n\t\t + W(5, 1031557517, -1129394727, -1131248001, -1120094485)\n\t\t + W(6, 1029603693, 1030911393, -1119293171, 1058397441)\n\t\t + W(7, -1104852463, -1097515304, -1123234663, -1106708620)\n\t\t + W(8, 1033577170, -1134544211, -1126616369, -1096477332)\n\t\t + W(9, -1103611475, -1115701158, -1119810656, -1134741251)\n\t\t + W(10, -1112673640, -1123614185, -1129974305, 1018853209)\n\t\t + W(11, 1036639048, 1018401637, 1024391909, 1017993989);\n\tWS(1058429118, 1064863249);\n\tsum1 =\n\t\tW(0, 1021156518, 1024394983, 1020219616, -1131178666) + W(1, 1016100640, 1007341951, 994206685, 964693930)\n\t\t+ W(2, 983001563, -1115666854, 1039490386, 1046648007) + W(3, 1017911734, 1043757188, -1128564932, 1045299318)\n\t\t+ W(4, 1054264097, 1049468028, 1055450440, -1104196510) + W(5, 992909240, -1104186631, -1122765517, -1105268364)\n\t\t+ W(6, -1097350840, -1099725362, -1115114453, -1085827188)\n\t\t+ W(7, -1100930382, -1128095056, -1118903024, 1023907580) + W(8, -1175841770, 1024539904, 997016493, 1043203980)\n\t\t+ W(9, 1033767351, -1119513801, -1131557236, -1106015350)\n\t\t+ W(10, 964768362, -1149024695, 1012766063, 1022718592)\n\t\t+ W(11, -1136266891, 1035657141, 1016423590, 1029236260);\n\tsum2 =\n\t\tW(0, 1005391535, 1018096716, -1135288360, -1121648533) + W(1, 996459166, -1130245220, -1123582348, 1033610651)\n\t\t+ W(2, -1106696811, -1121907467, 1026226746, 1031305614)\n\t\t+ W(3, 1032267559, -1111725659, 1028271694, -1108648643) + W(4, 1050575955, 1051313221, 1047952814, -1081952512)\n\t\t+ W(5, 1040750694, 1031579134, 1007524520, 1034169827) + W(6, -1100156814, 1060662591, 1068258385, -1074657656)\n\t\t+ W(7, -1095314974, 1036231973, 1044691450, 1044987108) + W(8, -1098256564, 1029467086, -1142136447, 1051661425)\n\t\t+ W(9, 1035381379, -1107714686, 1022647148, -1100160947)\n\t\t+ W(10, 1028021126, -1129063320, -1131820748, 1008147176)\n\t\t+ W(11, -1168737402, 1020424408, -1129848660, 1024695710);\n\tWS(-1083443454, 998713176);\n\tsum1 = W(0, 1032696047, 1026355790, 1024354795, 1034252472) + W(1, 1012872363, 1032281789, 1027888345, 1016830581)\n\t\t + W(2, 1040709994, 1040668906, 1036398699, 1051748575) + W(3, 1035129883, 1044965075, 1031400701, 1048807512)\n\t\t + W(4, 1040929033, 1032459486, 1012490030, -1097753826)\n\t\t + W(5, -1114537329, -1100635790, -1103916602, -1098186970)\n\t\t + W(6, -1087559501, -1103862520, -1102928053, -1093112676)\n\t\t + W(7, -1092883854, -1099081393, -1104850339, -1112352715)\n\t\t + W(8, 1049786774, 1037090637, 1047072725, 1050721065) + W(9, 1039546228, 1011437457, 1009955155, -1114553850)\n\t\t + W(10, -1146095614, 1033091241, 1024780023, 1037512365)\n\t\t + W(11, 1024615038, 1037286498, 1036010231, 1033653631);\n\tsum2 =\n\t\tW(0, 1035861958, -1161872500, -1113290777, -1137177342) + W(1, 1034613598, -1103597964, 1038756242, -1111249467)\n\t\t+ W(2, -1098289107, -1119785106, 1033623622, 1045692473)\n\t\t+ W(3, -1106425659, -1117971136, 1019694879, -1114046628)\n\t\t+ W(4, 1026686124, 1049978705, -1098402027, 1024040864) + W(5, 1053770527, -1127968019, 1049090628, 1052585151)\n\t\t+ W(6, -1096172460, -1107697817, -1091833397, 1013412750)\n\t\t+ W(7, 1046082211, 1057075430, 1047895771, -1102204197) + W(8, -1113513064, 1027596044, -1098063812, 1031079096)\n\t\t+ W(9, 1012376430, -1095279992, 1045163433, -1100444173)\n\t\t+ W(10, 1019723703, -1121217732, 1033198374, -1107709748)\n\t\t+ W(11, 1038124498, -1112843267, -1120386622, 1034273086);\n\tWS(-1086369662, -1078015058);\n\tsum1 =\n\t\tW(0, 1024279387, -1100066053, 1039589628, -1104719791) + W(1, -1113174076, -1125885710, -1111149795, 1024511623)\n\t\t+ W(2, 1042615374, -1106499229, 1049518735, -1115604002)\n\t\t+ W(3, -1127523972, 1049389829, -1102519338, 1042212335)\n\t\t+ W(4, 1054091094, -1113085188, 1050614757, -1103236040) + W(5, 1047781504, -1108066658, 1041501469, 1048227542)\n\t\t+ W(6, -1095346029, -1103658220, -1097514477, -1100854410)\n\t\t+ W(7, -1097175852, 1026529231, -1104719494, -1099302313)\n\t\t+ W(8, 1050416872, -1111759460, 1048966812, -1122281110) + W(9, 1043919349, 1032565272, 1027138593, 1036646913)\n\t\t+ W(10, -1113840294, -1141254386, 1032485602, -1113439156)\n\t\t+ W(11, -1119980106, 1039770777, -1104628175, 1032389542);\n\tsum2 = W(0, -1092512531, -1093473489, -1081280020, -1076988140)\n\t\t + W(1, -1081342477, -1086556968, -1107875638, -1121362077)\n\t\t + W(2, -1098738343, -1088925799, 1042571962, 1043337888)\n\t\t + W(3, 1033193400, 1010020371, -1102154130, -1126174974) + W(4, 1063615535, 1062426368, 1067242406, 1066811408)\n\t\t + W(5, 1066297017, 1060290312, 1052028857, 1037059936) + W(6, 1009177475, 1026425874, 998962046, -1096426756)\n\t\t + W(7, 1022780060, 1026166068, 1017583668, -1119102823)\n\t\t + W(8, -1119750726, 1012050343, 1025403720, -1129159374)\n\t\t + W(9, 1023044380, -1115355073, 1026819560, -1127777686)\n\t\t + W(10, 1030476954, -1120184004, 1031881676, -1116680638)\n\t\t + W(11, -1135563955, 1004442726, 946141982, 1034449190);\n\tWS(-1129707456, 1007685382);\n\tsum1 = W(0, -1134894751, 1044154267, -1111052786, 1038046773)\n\t\t + W(1, -1192544411, -1128991721, 1035051017, -1122391156)\n\t\t + W(2, -1098519836, 1030394337, -1107874844, -1118678129)\n\t\t + W(3, -1111301144, -1115520098, 1015910765, -1103669035)\n\t\t + W(4, 1040671079, 1013414869, -1103276809, -1098881194)\n\t\t + W(5, -1110522396, -1107120076, 1033063921, -1111557603)\n\t\t + W(6, 1044073412, 1041040503, 1038778991, -1107344299) + W(7, 1048980909, 1052479600, 1049200001, 1051478546)\n\t\t + W(8, -1109530006, 1035376874, -1105794628, -1139987723)\n\t\t + W(9, -1108336721, -1112546431, 1023468750, 1018554845)\n\t\t + W(10, -1134057701, 1028314315, -1112561176, 992777541)\n\t\t + W(11, -1112828028, -1132207293, 999515194, -1119107128);\n\tsum2 =\n\t\tW(0, -1137824107, -1126465818, 1005362547, -1158497445) + W(1, -1119770196, 1021074352, -1138544392, 1034621027)\n\t\t+ W(2, -1110122518, 1033612180, -1116868027, 1039739597)\n\t\t+ W(3, 1037998233, -1112420682, 1025116420, -1120069279)\n\t\t+ W(4, -1137081539, -1106894813, 1045165527, -1106604299)\n\t\t+ W(5, -1138568822, 1039276731, -1104439342, -1113398206) + W(6, 1039063461, 1047362418, 1067526191, 1071589227)\n\t\t+ W(7, 1061860820, -1077533661, -1073373771, -1094637864)\n\t\t+ W(8, -1158403413, -1117814890, -1136640937, 1044031039)\n\t\t+ W(9, -1133800170, 1031122886, -1106196407, 1031315442)\n\t\t+ W(10, -1124656554, 1023374342, -1115663214, -1148955153)\n\t\t+ W(11, -1123862185, 999718675, -1139157324, 1025985948);\n\tWS(1033791472, -1138498893);\n\tsum1 = W(0, -1143657507, 1014781903, 1029133201, 1018917100) + W(1, 998381448, 1016812674, -1118545247, -1137667330)\n\t\t + W(2, -1102835756, -1108646231, -1108649138, -1106020223)\n\t\t + W(3, 1003669472, -1113672010, -1114481905, -1127743919)\n\t\t + W(4, 1024249065, -1130492804, 1008218246, 1054388603)\n\t\t + W(5, -1092207694, -1132293500, -1112726231, -1119594899)\n\t\t + W(6, 1044190455, 1021681616, -1115040338, 1058377694) + W(7, 1046387590, 1049136345, 1017676194, -1119541597)\n\t\t + W(8, -1107762844, -1112711792, 1019895480, -1123372431)\n\t\t + W(9, -1111491159, -1123523050, -1123035739, 1028355707)\n\t\t + W(10, 1008291608, -1128240816, 1025256893, 1014932868)\n\t\t + W(11, 1007448080, 1008489644, -1112884042, 1001709096);\n\tsum2 = W(0, 1014470821, -1120344268, -1114330800, -1106002658)\n\t\t + W(1, 1024999308, -1126273593, -1127411221, -1123975632)\n\t\t + W(2, -1106657768, -1106292024, 1049926230, 1054743689)\n\t\t + W(3, -1112305858, -1122403994, -1116955850, 1030827431)\n\t\t + W(4, 1034825132, 1032219219, 1057813788, 1049962194) + W(5, 1051810194, 996027236, 984340447, -1114551452)\n\t\t + W(6, 1006830039, -1101139832, -1102461554, -1103958261)\n\t\t + W(7, -1098680718, 1040205712, -1109277736, -1111240037)\n\t\t + W(8, -1104684796, -1114556582, -1111886229, 1050373872)\n\t\t + W(9, 1035894797, -1100520246, 1014102650, -1106040331)\n\t\t + W(10, -1124459301, 1008940380, 1029827978, -1133852786)\n\t\t + W(11, -1109427720, 1024816377, -1117160816, 1003623824);\n\tWS(1060089726, 1074996161);\n\tsum1 =\n\t\tW(0, -1117558175, 1029119241, -1141503452, 1010789890) + W(1, 1037081758, -1120312844, 1027150698, 1021223318)\n\t\t+ W(2, 1046443391, 1039893948, 1041448800, 1035829124) + W(3, 1041862066, 1028398131, 1038548631, 1047369209)\n\t\t+ W(4, -1083103171, -1093429938, -1088988175, 1032282738)\n\t\t+ W(5, 1035486030, -1142682180, -1111879740, -1105296983) + W(6, 1040714346, 1021452133, 1048946821, 1021975771)\n\t\t+ W(7, 1040332065, -1090323173, -1112512014, -1095359061) + W(8, 1044503809, 1030628716, 1038933875, 1038764813)\n\t\t+ W(9, 1032949373, 1041097413, 1029165798, 1046714577) + W(10, 1023987857, 1027140771, 1026874120, 1026271340)\n\t\t+ W(11, 1034225415, -1113760891, 1028642719, -1134282558);\n\tsum2 =\n\t\tW(0, -1130708327, -1156760442, 1011385503, 1005458237) + W(1, 1015786967, -1121500080, 1023017975, 1008927007)\n\t\t+ W(2, -1131662151, -1160974837, -1122121264, -1104012424)\n\t\t+ W(3, 1025508020, -1106371091, 1032453110, -1107217673) + W(4, 1027052068, -1119116140, 1006726095, 1053197196)\n\t\t+ W(5, -1150821434, 1032166230, -1116451706, -1143126685)\n\t\t+ W(6, -1104634511, -1148640061, -1101053828, 1050251696)\n\t\t+ W(7, 1043632028, -1115585403, 1032061998, 1045664978) + W(8, 1037500532, 1028521640, 1041142688, -1121651972)\n\t\t+ W(9, -1105814552, -1117076340, -1120517680, -1103126409)\n\t\t+ W(10, -1117309872, -1132259207, -1129219511, -1148190653)\n\t\t+ W(11, 1005943453, -1120252400, 1024831312, -1126349911);\n\tWS(-1081408895, 1057237802);\n\tsum1 = W(0, 1016592219, -1135569700, 1019913045, -1134722237) + W(1, 1020337237, 1019971573, 1015924209, 1027236154)\n\t\t + W(2, 1050393725, 1025037351, 1042967287, 1042881918) + W(3, 1033060699, 1038993285, 1028206140, 1041649576)\n\t\t + W(4, -1096948620, 1021729271, -1123436299, -1107250293)\n\t\t + W(5, 1047123275, 1037602588, 1034435092, 1044331459)\n\t\t + W(6, -1099121222, -1114451665, -1104931659, -1092679092)\n\t\t + W(7, -1098053310, -1091584672, -1092984777, -1089381821)\n\t\t + W(8, 1042338077, 1033766733, 1036822635, 1042265522) + W(9, 1043883210, 1042862441, 1029491668, 1042007901)\n\t\t + W(10, 1026859007, 1023688209, 994107237, 1017621813) + W(11, 1033354815, -1147819555, 1035642823, 963919445);\n\tsum2 =\n\t\tW(0, -1127968320, 1036537032, -1112917417, 1020801080) + W(1, 1019615648, -1127208552, 1023589392, -1121416948)\n\t\t+ W(2, -1092240358, 1030963640, -1097473768, -1109029546)\n\t\t+ W(3, -1116583352, 1028578068, -1113404853, 1041090246) + W(4, 1057542400, -1105653780, 1053316325, 1058712288)\n\t\t+ W(5, 1043894648, -1093453186, 1034405836, -1094394128) + W(6, 1016463192, -1097383073, 1038201480, 1052867895)\n\t\t+ W(7, -1123129572, -1141347136, 1006791808, 1037486484)\n\t\t+ W(8, -1094079665, 1040975890, -1101066411, 1013027424)\n\t\t+ W(9, -1118015492, -1117505000, -1111557726, 1044943944)\n\t\t+ W(10, 1037438732, 1019305024, 1028884816, 1010261952)\n\t\t+ W(11, 1027371024, -1113360113, 1034904608, -1104647878);\n\tWS(-1076745215, 1064070508);\n\tsum1 = W(0, 1019383636, -1138649581, 1029667879, -1127653591) + W(1, 1027426151, 1022926189, 1004012708, 1016119660)\n\t\t + W(2, 1043437193, 1030286820, 1040316179, 1048543741) + W(3, 1029763954, 1039947283, 1025479577, 1041368223)\n\t\t + W(4, -1100863080, 1033675388, -1102225484, -1084687593)\n\t\t + W(5, -1111626052, 1026499316, -1122995300, 1026134601)\n\t\t + W(6, 1019299111, 1027453406, -1110289513, -1082029409) + W(7, 983973284, 1031954367, -1118301831, 1016553765)\n\t\t + W(8, 1041928012, 1031909515, 1043406276, 1044625233) + W(9, 1044339921, 1039879984, 1022733729, 1012331970)\n\t\t + W(10, 1018313975, -1136380470, 1026991539, -1136351578)\n\t\t + W(11, 1027257018, 1022902273, 1026798858, 1027440187);\n\tsum2 = W(0, -1131696089, 1008718823, -1149188438, -1140198251)\n\t\t + W(1, -1129603953, 1007479839, -1141563590, 1018622169)\n\t\t + W(2, 1012459087, -1135045027, -1118135053, 1033739972)\n\t\t + W(3, -1142742214, 1015462815, -1126906553, -1135479163)\n\t\t + W(4, -1112347233, -1125420309, 1041969824, 1052325325)\n\t\t + W(5, 1029891118, -1120072309, 1017890385, 1016803437) + W(6, 1039451269, -1110618065, 1024383435, 1052741682)\n\t\t + W(7, -1121721953, -1095903036, -1105015368, -1098230278)\n\t\t + W(8, -1158657302, 1007247903, 1015365577, 1034080133)\n\t\t + W(9, -1110453303, -1162307222, -1122346803, 1021342643)\n\t\t + W(10, -1129595249, 999949222, -1130814181, -1140370763)\n\t\t + W(11, 1020979581, -1132990667, 1008938691, -1137891195);\n\tWS(-1094563452, 1051169575);\n\tsum1 =\n\t\tW(0, -1154622990, 1029393378, -1117775501, 1033996553) + W(1, -1136342582, 1018491963, 1032030382, 1015760954)\n\t\t+ W(2, 1018130713, 1035203109, -1113234793, -1106127031)\n\t\t+ W(3, -1114335628, -1112874623, 1023872671, -1110067034)\n\t\t+ W(4, 1040428881, 1032896399, 1049040808, -1112183035) + W(5, 1048012112, 1044702279, 1032915973, 1035998904)\n\t\t+ W(6, -1120902330, 1039535746, -1102863965, -1090463816) + W(7, 961094679, -1098092733, 1033184663, 1029109433)\n\t\t+ W(8, -1113835211, 1021002107, -1107942972, -1105904891)\n\t\t+ W(9, -1148767576, -1124337998, 1006151100, -1110631596)\n\t\t+ W(10, 1019319877, 1036762426, -1135300966, 1040237135)\n\t\t+ W(11, 1032716400, -1137189022, 1037223880, 1013167238);\n\tsum2 =\n\t\tW(0, 1028413027, -1120070369, 1012563150, -1111535757) + W(1, 1011962278, 1009477102, -1153318262, 974823129)\n\t\t+ W(2, -1121092135, -1130520759, -1120753460, -1097640928)\n\t\t+ W(3, -1098008778, 999766235, -1122757360, -1129371381) + W(4, 1017337743, 1037177446, -1106734706, 1051800696)\n\t\t+ W(5, 1035782812, -1106510696, 1010623246, 1028214977) + W(6, -1137632446, -1104029390, 1048794348, 1050145982)\n\t\t+ W(7, -1114477541, 1047938812, -1111017918, -1123769252) + W(8, 999930971, 1033133092, -1111694827, 1041394994)\n\t\t+ W(9, -1118971109, -1127041263, 1020162151, -1124747017)\n\t\t+ W(10, 1027578971, -1114678191, 1030530567, -1119592910)\n\t\t+ W(11, 1001961835, 1024176823, -1115486877, 1007999422);\n\tWS(1057759166, -1088449289);\n\tsum1 =\n\t\tW(0, -1129635066, 1025446574, -1144519245, 1017539549) + W(1, 1026395242, -1122678010, 1025431320, 1024557433)\n\t\t+ W(2, 1044873994, 1037627635, 1041685209, 1033910011) + W(3, 1039651930, 1035038013, 1039320958, 1038868536)\n\t\t+ W(4, -1087389198, -1097118359, -1089578865, -1129568803)\n\t\t+ W(5, 1010566389, 1030050103, -1110122707, -1112614790)\n\t\t+ W(6, -1116302487, 1022204225, 1022125102, -1105345911)\n\t\t+ W(7, -1122366800, -1097803608, -1119554634, -1126568107)\n\t\t+ W(8, 1048786726, 1039292653, 1045860709, 1045748274) + W(9, 1027479143, 1033498658, -1161253492, 1010965710)\n\t\t+ W(10, 1017011581, 1021371937, 1025212662, 1031878029) + W(11, 1013486066, 1007580942, 1028360045, 1015223035);\n\tsum2 = W(0, -1162281894, -1124547002, -1150111187, -1135956229)\n\t\t + W(1, -1145634890, 965409433, -1123274137, 1024679583) + W(2, 1033992046, -1149048922, 988741862, -1132541637)\n\t\t + W(3, -1132011310, 1024739191, 1008671821, -1129294934)\n\t\t + W(4, 1042856153, 1036788056, -1112557119, -1097406101)\n\t\t + W(5, -1121853795, -1104384368, 1032013500, -1147059498)\n\t\t + W(6, 1038465062, 1046094595, 1060179844, 1049669935) + W(7, -1101657128, 1042681611, -1111116605, 1027020519)\n\t\t + W(8, -1093956780, -1100316514, -1090501223, 1022378118)\n\t\t + W(9, 1045140163, -1121116299, 1035479824, -1131272734)\n\t\t + W(10, 1024284423, 1035682376, -1122577303, -1113139255)\n\t\t + W(11, -1130855582, -1118824057, 1006161754, -1124922046);\n\tWS(-1086987838, -1100233980);\n\tsum1 =\n\t\tW(0, 1015308459, -1122325985, -1116672610, 1032904116) + W(1, -1141168915, 1033123257, 1001375875, 1015833828)\n\t\t+ W(2, 1041765192, 1028094431, 1042485054, -1118546351) + W(3, -1118052589, -1116818498, 992241989, 1015146386)\n\t\t+ W(4, -1105415847, -1114108890, -1092596043, 1046690691) + W(5, 1054244345, 1049735534, 1040724504, 1041637233)\n\t\t+ W(6, 1042444900, 1041449686, 1049087917, -1128556841)\n\t\t+ W(7, -1089307961, -1094503991, -1104029377, -1100869156)\n\t\t+ W(8, -1111075669, -1106140165, -1110170951, 1034284768)\n\t\t+ W(9, 1026589088, 1030527932, 1008796465, -1123717612) + W(10, 1003799483, 1034767973, -1144225139, 1033288361)\n\t\t+ W(11, 1010481109, -1121578684, 1030765989, -1124977133);\n\tsum2 = W(0, -1128145157, 1026284201, 1012811840, -1136599052) + W(1, 992541697, 1011005728, -1127430370, 995789721)\n\t\t + W(2, -1100557855, -1106810438, 1042787919, 1044596046)\n\t\t + W(3, 1038174685, -1104618112, -1166127490, -1116633305)\n\t\t + W(4, 1057648426, 1054522141, -1098531848, -1073275189) + W(5, 1061008073, 1059653331, 1035655860, 1017274260)\n\t\t + W(6, 1048654145, 1057115188, 1046636853, -1074262745) + W(7, 1044984510, 1060082709, 1034192337, 1033697834)\n\t\t + W(8, -1122215769, -1103409060, 1046426252, 1035358469)\n\t\t + W(9, 1036107748, -1104639697, -1130597644, -1112828961)\n\t\t + W(10, -1133425768, 1017140792, -1118227807, -1143532160)\n\t\t + W(11, 1016191398, 981079778, 1006837720, 1021901152);\n\tWS(-1092446204, 989212831);\n\tsum1 =\n\t\tW(0, 1007124942, -1116778591, 1027403088, -1121715541) + W(1, 1019921952, 1020332096, -1139218425, 1020381759)\n\t\t+ W(2, 1048125124, -1131432602, 1042237585, -1138060917)\n\t\t+ W(3, 1027977243, -1126238792, -1131884420, 1024321015)\n\t\t+ W(4, -1138101793, -1106585464, 1016240146, 1037962972) + W(5, 1053191424, 1053622732, 1043276755, 1049124886)\n\t\t+ W(6, -1141178857, 1019782926, 1036610823, -1101006449)\n\t\t+ W(7, -1094792341, -1089064867, -1101892348, -1107274751)\n\t\t+ W(8, -1102978326, -1115311760, -1110971902, -1114322839)\n\t\t+ W(9, 1031189102, -1137835047, -1132849129, -1110951117)\n\t\t+ W(10, 1034583667, 1015089582, 1027127900, 1008360193) + W(11, 1028625507, 1017386452, 1009465805, 1008208785);\n\tsum2 =\n\t\tW(0, -1120159352, -1125980662, -1131578305, 1028063854) + W(1, 1021975879, 1033612769, -1119579693, 1040487308)\n\t\t+ W(2, -1088595541, 1050146519, -1090859444, -1107336769)\n\t\t+ W(3, -1105868965, 1041431951, -1112749441, 1042279365) + W(4, 1060560783, -1093128727, 1057304640, 1071289406)\n\t\t+ W(5, -1087527230, -1086794372, 982969010, -1089785065) + W(6, 1061831343, -1098317152, 1057012981, 1069689231)\n\t\t+ W(7, -1097221007, -1086042421, 1033122226, -1088997285)\n\t\t+ W(8, -1089452071, 1042347964, -1095995319, -1096815763)\n\t\t+ W(9, -1104502319, 1049524493, -1104150062, -1135764460)\n\t\t+ W(10, -1101640393, 1038452583, -1105624394, 1041229675)\n\t\t+ W(11, 1037791301, -1143180172, 1029453052, 1049121852);\n\tWS(-1080642303, 1037515653);\n\tsum1 = W(0, 1014399585, 1040389217, 1025436037, 1035628117) + W(1, 1032176658, 1019714410, 1031481267, -1129425897)\n\t\t + W(2, -1123461796, 1009459592, -1118449912, -1111999897)\n\t\t + W(3, 1042449564, -1098862637, 1015874414, -1108656118)\n\t\t + W(4, -1115821917, -1138501592, 1046808963, 1046961203)\n\t\t + W(5, -1085801589, 1042823052, 1032561937, 1022709518) + W(6, 1037702505, 1046330151, -1088063230, 1048171302)\n\t\t + W(7, 1046621083, 1033619294, 1017602698, -1172911161)\n\t\t + W(8, -1105260875, -1113097082, -1166545913, -1112931778)\n\t\t + W(9, -1116953058, -1108126015, 1033606503, -1161936349)\n\t\t + W(10, -1134503912, 1032999462, 1011659972, 1033647146)\n\t\t + W(11, 1020514160, 1023868127, 1030447848, 1015791986);\n\tsum2 = W(0, -1139497271, 1025910769, -1105297083, 1037339247)\n\t\t + W(1, -1111547600, -1123186639, 1029488041, -1137152287)\n\t\t + W(2, -1104932637, 1043978669, -1105480129, 1037617885)\n\t\t + W(3, -1107402541, -1105522985, 1011577705, -1102258444)\n\t\t + W(4, 1000924601, -1116100213, -1102785010, 1049988969) + W(5, 1045831134, 1040977948, 1036894407, 1025599417)\n\t\t + W(6, 1034980171, 1042493673, 1044002411, 1050036780) + W(7, 1039942071, -1097804729, 1042714488, -1139888185)\n\t\t + W(8, -1102656208, 1038409695, -1098474508, -1122964745)\n\t\t + W(9, -1106907325, 1028039731, -1112976714, -1112698813)\n\t\t + W(10, -1154378706, 1025837919, -1109802618, 1036616991)\n\t\t + W(11, -1132149525, -1111839940, 1040500443, -1114191023);\n\tWS(1060124606, -1084472548);\n\tsum1 = W(0, 1012638700, -1131934189, -1129347279, -1138043955) + W(1, 1007380511, 1022374575, 996895579, 992489843)\n\t\t + W(2, -1112711971, 1021193865, -1125331574, 1048955067)\n\t\t + W(3, -1106488069, -1115361884, -1120058426, -1118477310)\n\t\t + W(4, 1024524352, 1017460401, -1113956442, -1094951982)\n\t\t + W(5, 1048203795, 1005249701, 1026650437, -1129456851) + W(6, 1032623962, -1117271615, 1049120342, 1015143283)\n\t\t + W(7, -1110142007, 1024310560, -1121731240, 1036683482)\n\t\t + W(8, -1115629480, 1023262959, -1108495481, 1031640934)\n\t\t + W(9, -1129214986, -1136673413, 1017029987, -1115998674)\n\t\t + W(10, 1027484509, -1157409515, 1010910287, 1021584239)\n\t\t + W(11, -1144904917, 1017598403, -1145343061, 1014521967);\n\tsum2 = W(0, -1113301049, -1129519836, -1113144608, -1114997262)\n\t\t + W(1, 1028189537, -1144798799, -1135227415, -1123606042)\n\t\t + W(2, 1041723134, 1018887182, 1065721494, 1081282167) + W(3, 1053752802, 1004635839, 1024321495, 1032429021)\n\t\t + W(4, -1119425470, -1123219625, -1082046556, -1068115046)\n\t\t + W(5, -1091841582, -1126716683, -1149813598, -1137534547)\n\t\t + W(6, 1012563935, 1021107126, 1032971141, -1092304788) + W(7, -1120681827, 1026059029, 992723582, -1121765421)\n\t\t + W(8, 1013366251, -1131491053, -1132479565, 1028331651)\n\t\t + W(9, 1021570574, -1132445755, 1010781703, 1024141029)\n\t\t + W(10, -1135264199, 1017265018, -1135106943, 927030725)\n\t\t + W(11, 983594844, -1137356791, 959859164, -1123588459);\n\tWS(1064307390, 997943845);\n\tsum1 = W(0, 1016504192, 1004931163, 1001468389, -1125536771) + W(1, 1024701821, -1157300426, 1008115882, 1014991280)\n\t\t + W(2, -1110031838, -1124632947, -1106796660, -1132488742)\n\t\t + W(3, -1111862756, -1111316170, -1153319146, -1116314499)\n\t\t + W(4, -1108555962, -1129767067, -1106350773, -1097456765)\n\t\t + W(5, 1040312105, -1110123941, 1030600762, -1109063375) + W(6, 1047561626, 1003984285, 1053522405, 1050670238)\n\t\t + W(7, -1128004006, 1039422954, 1005773541, 1042190650)\n\t\t + W(8, -1114174882, 1017992857, -1106382906, -1136221548)\n\t\t + W(9, -1123896954, 1020844396, 1015300557, 1024320647) + W(10, 1004953741, 1018940039, 1000370245, 1015934681)\n\t\t + W(11, 1011062590, -1128259885, -1153739770, -1130969505);\n\tsum2 = W(0, 1036505224, 1018720963, 1037554666, 1035136259) + W(1, -1131720942, 1012123245, 1027168757, 1024471767)\n\t\t + W(2, -1100095598, -1119632397, -1082101932, -1072130218)\n\t\t + W(3, -1090292986, -1114842502, -1108983905, -1105383800)\n\t\t + W(4, 1039944480, 1033659023, 1064933062, 1074634461) + W(5, 1057038142, 1046242606, 1018437263, 1041395450)\n\t\t + W(6, -1110028565, 1025734363, -1103479495, 1012777017)\n\t\t + W(7, -1132873326, -1117820012, -1117294599, 1033191694)\n\t\t + W(8, 1016119595, 1015545311, 1036578506, 1036162128)\n\t\t + W(9, -1120419990, -1115011900, 1004277346, -1113427773)\n\t\t + W(10, 1017378303, -1126149289, 1022196513, -1118704038)\n\t\t + W(11, 1020047721, 1033886326, -1136709697, 1024978781);\n\tWS(1053812476, -1113586226);\n\tsum1 =\n\t\tW(0, -1130399840, 1028349447, 1021963321, -1121520129) + W(1, 1020769785, -1115853964, 1021860117, -1121122124)\n\t\t+ W(2, -1111011390, -1120416825, -1107941440, -1106086226)\n\t\t+ W(3, -1129958415, -1107644952, -1122155502, -1114352785)\n\t\t+ W(4, 1007197394, -1105796643, 1056809437, 1046348585) + W(5, -1090756230, 1050300257, -1116443513, 1041113720)\n\t\t+ W(6, 1037708373, 1044272829, -1093131829, 1057081835) + W(7, 1059679544, -1119895572, 1040260199, -1110926804)\n\t\t+ W(8, -1122978308, -1110423782, -1122097703, -1099751719)\n\t\t+ W(9, -1102044582, -1111488955, 1019054925, -1156322407)\n\t\t+ W(10, -1139049030, -1125249991, 1011721762, -1114497366)\n\t\t+ W(11, 1018253471, 1022041005, -1121197023, -1135672898);\n\tsum2 = W(0, 1015672618, -1121994623, -1149412980, -1127744422)\n\t\t + W(1, 990134373, 1024671460, -1132259460, -1125579600) + W(2, 1010541588, 1032866568, 1044676778, -1124040172)\n\t\t + W(3, -1102290659, 1029499881, -1120084193, 1001699435)\n\t\t + W(4, -1115998566, 1011616452, -1107438884, 1058620442)\n\t\t + W(5, 1049322309, -1104592911, 1035840939, -1123886068)\n\t\t + W(6, 1020421847, -1095022641, -1097106911, 1015017230)\n\t\t + W(7, -1104275347, 1045525693, -1119993661, 1037165892)\n\t\t + W(8, -1129704409, 1020628925, -1112769863, -1113422252)\n\t\t + W(9, 1039268635, 1026741584, 999745387, -1126762930) + W(10, 1015113530, 1017019595, 1022483811, 1015061518)\n\t\t + W(11, -1114030797, -1136765715, -1131682952, -1134246014);\n\tWS(1059863230, -1098226968);\n\tsum1 =\n\t\tW(0, -1111154474, 1033627108, -1111220881, 1018934285) + W(1, -1156119577, -1108034825, 1035708952, -1116166225)\n\t\t+ W(2, -1130042625, 1044463840, -1098768819, 1036585799)\n\t\t+ W(3, 1041677635, -1100472134, 1038444026, -1111999396)\n\t\t+ W(4, -1124092147, -1125693093, 1043860042, -1094381437) + W(5, 1034781361, 1038465479, 1027036095, 1019243847)\n\t\t+ W(6, -1126659421, 1045974478, 1040108899, -1098844542) + W(7, 1051479065, -1096809363, 1040658808, 1003830125)\n\t\t+ W(8, -1116454602, 1040744732, -1149847241, 1043775752)\n\t\t+ W(9, 1046003792, -1121805723, 1037992790, -1131289879)\n\t\t+ W(10, -1109234699, 1026252457, -1103478147, -1107008620)\n\t\t+ W(11, -1127254569, -1105262391, 1038964162, -1116821910);\n\tsum2 = W(0, 1031860762, -1114215534, 1037917300, -1123072391)\n\t\t + W(1, -1121765219, 1036233577, -1113082189, 1007761049)\n\t\t + W(2, 1008804487, -1119320351, 1028769566, -1145928741)\n\t\t + W(3, -1118791492, 1035112755, -1119166399, 1034891236)\n\t\t + W(4, 1036033743, -1105317049, 1033869945, -1104666827)\n\t\t + W(5, -1103277106, 1043081028, -1110309063, 1003334201)\n\t\t + W(6, -1130814575, -1126605754, 1029943513, 1058632863)\n\t\t + W(7, 1010033985, 1033184724, -1124066564, -1146667244)\n\t\t + W(8, -1114717025, -1103884858, -1097519272, -1084821476)\n\t\t + W(9, -1091781337, -1108906997, -1105454190, -1124982586)\n\t\t + W(10, 1042429978, 1019583714, 1050527129, 1057878257)\n\t\t + W(11, 1047090522, 1050006554, -1116436299, 1037673833);\n\tWS(1053829756, -1108691549);\n\tsum1 = W(0, 1014621415, -1117035633, 1017668333, -1121088251)\n\t\t + W(1, -1113943163, 1027915142, -1117882340, 1018110476) + W(2, 1034972923, 1031518451, 1028891034, 1043029617)\n\t\t + W(3, 1037608353, -1118505878, 1008280866, -1114328254)\n\t\t + W(4, -1105089900, -1146432572, -1111069516, 1052288956)\n\t\t + W(5, 1043183409, 1040529537, -1127832039, 1025673432)\n\t\t + W(6, -1121242915, 1011744694, -1099260407, -1096216885)\n\t\t + W(7, -1109446679, 1033001703, 1023717270, 1038283409) + W(8, 1024842558, -1195363583, 1035963185, 1043236853)\n\t\t + W(9, -1104376301, -1110826184, -1108863440, -1136644866)\n\t\t + W(10, -1125107735, 1024600093, -1111257697, 1022444749)\n\t\t + W(11, 1008767270, 983774736, 1021787123, -1122279626);\n\tsum2 =\n\t\tW(0, 1011466728, -1128158188, 993685376, 1021341187) + W(1, -1125064327, 1016637363, -1135616946, -1142265296)\n\t\t+ W(2, -1153535168, -1133074596, -1111924694, 1041916532)\n\t\t+ W(3, -1115375045, -1111577830, -1121861231, -1139232914)\n\t\t+ W(4, -1121363658, -1108077390, 1048370655, -1088803436) + W(5, 1050909934, 1048268187, 1028734454, 1033829714)\n\t\t+ W(6, -1113493290, 1031842286, -1096696142, -1097359431)\n\t\t+ W(7, 1066069354, -1102058354, -1112810542, -1108918948)\n\t\t+ W(8, 1016979229, -1114077565, 1032702600, 1051606360)\n\t\t+ W(9, -1108957150, -1106393780, -1104652034, -1124153420)\n\t\t+ W(10, -1121975877, 1032726750, -1126878203, 1020447303)\n\t\t+ W(11, -1115472084, 1011253904, 1032484333, -1135690267);\n\tWS(1043379192, -1131322837);\n\tsum1 =\n\t\tW(0, -1129021027, -1148980502, -1117253390, 1015261926) + W(1, 1024719214, -1130947836, 974083843, 1010796022)\n\t\t+ W(2, -1109595831, -1141769560, -1131540259, 1038059198) + W(3, 1043151230, 1040366611, 1036650848, 1032003186)\n\t\t+ W(4, 1033800339, 1040943040, -1099641090, 1019360940) + W(5, 1047704456, -1120007803, 1032688054, -1135300928)\n\t\t+ W(6, 1042153991, 1016895818, 1040857522, -1103092216)\n\t\t+ W(7, -1091529984, -1100986498, -1116706574, -1114490317)\n\t\t+ W(8, -1099711038, 1029537886, -1104535414, 1032384358) + W(9, 1043292971, 1031568104, 1019020464, 1026900536)\n\t\t+ W(10, 1026187331, 1023917269, 999787984, -1137467256)\n\t\t+ W(11, 1021851650, -1117455240, 1021119266, -1124200964);\n\tsum2 = W(0, -1127801857, -1143073539, -1106914355, -1114698807)\n\t\t + W(1, -1129241721, 1034854605, 1015357631, 1026781991) + W(2, 1028175283, 1010285366, 1045024365, -1107796176)\n\t\t + W(3, -1093181393, -1094857339, -1104001534, -1106206681)\n\t\t + W(4, -1129802997, 1022418743, -1109183829, 1055188047)\n\t\t + W(5, 1060464193, 1038631095, 1035894131, -1121422795)\n\t\t + W(6, -1133354170, -1111757330, 1035388549, -1099199714)\n\t\t + W(7, -1108056884, 1042537531, 1019867695, 1010545294) + W(8, -1129332011, 1032847739, 1028119663, 1027769667)\n\t\t + W(9, 1015260775, -1123722407, 1021694327, -1120402439)\n\t\t + W(10, 1029358411, -1119713292, 984677997, -1126683209)\n\t\t + W(11, -1117802232, 1025618013, -1116557581, 1021478623);\n\tWS(1049844732, -1121310639);\n\tsum1 =\n\t\tW(0, 1023733410, -1099209689, 1040893204, -1102957277) + W(1, -1114244983, -1136674298, -1108461358, 1021220348)\n\t\t+ W(2, 1044402267, -1106734859, 1050332331, -1111686974)\n\t\t+ W(3, -1122456058, 1049981942, -1102278760, 1043895987)\n\t\t+ W(4, 1053233309, -1108848000, 1049912979, -1098618899) + W(5, 1048539349, -1111429758, 1039273110, 1048170180)\n\t\t+ W(6, -1096212219, -1103164857, -1099336615, -1097562740)\n\t\t+ W(7, -1096335583, 1033031043, -1102589972, -1101337719)\n\t\t+ W(8, 1051767783, -1109302031, 1050917291, -1121562509) + W(9, 1042792075, 1039550692, 1008842338, 1041281742)\n\t\t+ W(10, -1114613442, -1129199659, 1033787229, -1111886543)\n\t\t+ W(11, -1121890370, 1041151474, -1104020956, 1031699907);\n\tsum2 = W(0, 1051830333, 1052363768, 1062286287, 1068323273) + W(1, 1062941652, 1058036233, 1038399576, 1029358050)\n\t\t + W(2, 1040398919, 1056364330, -1105094784, -1117763636)\n\t\t + W(3, -1117097644, -1135317262, 1045469136, -1127713443)\n\t\t + W(4, -1088812275, -1088095023, -1083945825, -1086712736)\n\t\t + W(5, -1085128967, -1090471655, -1096613184, -1118175248)\n\t\t + W(6, -1112895824, -1128031249, -1110939052, -1122350162)\n\t\t + W(7, -1107088013, -1117471490, -1128774604, 1023889083)\n\t\t + W(8, 1030823820, -1126124865, -1131257287, 1034881723) + W(9, 993374262, 1022005418, -1124473506, 1006015479)\n\t\t + W(10, -1120174945, 1022839272, -1113476028, 1031923437)\n\t\t + W(11, -1149114843, -1131972943, 1015689530, -1114795832);\n\tWS(997080576, -1130763300);\n\tsum1 = W(0, -1113905570, 1030153879, -1117230256, -1152616277)\n\t\t + W(1, -1146808706, -1112646432, -1186209359, -1120216576)\n\t\t + W(2, -1121320815, -1108108727, -1100762033, -1090117932)\n\t\t + W(3, -1109500574, -1102311764, -1119610882, -1099135446)\n\t\t + W(4, 1038521748, 1032364321, 1051702873, 1069923213) + W(5, -1104049339, 1028696893, -1120830317, 1030578386)\n\t\t + W(6, 1025325853, -1131460303, 1040312882, 1063008042)\n\t\t + W(7, 1056019095, -1115439812, -1125581089, -1116447004)\n\t\t + W(8, -1108459484, -1152289285, -1099800679, -1092045374)\n\t\t + W(9, -1100849447, -1105934578, 1028735898, -1108771165)\n\t\t + W(10, -1123369669, -1111143084, 1018134009, -1116551136)\n\t\t + W(11, 1015899783, -1120248394, -1113190874, -1120342084);\n\tsum2 = W(0, -1130955153, -1115062100, -1114768924, 1040485485)\n\t\t + W(1, -1102247365, 1040365390, -1105380703, -1134789779)\n\t\t + W(2, 1025142055, 1033634795, -1114031272, -1115074190)\n\t\t + W(3, -1110799922, 1039570131, -1112489130, 1035629875)\n\t\t + W(4, 1025405091, -1124058081, 1047530952, -1104495565)\n\t\t + W(5, 1038913214, -1102056033, -1123724877, -1104428707)\n\t\t + W(6, 1041203911, -1151569099, -1160505239, 1065129660)\n\t\t + W(7, -1115442088, 1037120419, -1145632358, 1035843769)\n\t\t + W(8, 1034798579, -1098708869, 1048498835, -1095909934)\n\t\t + W(9, -1105078519, 1024518769, -1109649658, -1117935125)\n\t\t + W(10, -1107186683, 1041850582, -1097808347, 1045395705)\n\t\t + W(11, -1106337339, 1007217475, -1152795787, -1124566009);\n\tWS(-1078383103, 1059446981);\n\tsum1 =\n\t\tW(0, -1139864362, 1022304576, -1117916615, 1007335089) + W(1, -1119884647, 1022280942, 1023668405, 1034312731)\n\t\t+ W(2, -1142609202, 1008862865, -1109139429, 1032501274) + W(3, 982044231, -1115332063, 991223187, -1102309771)\n\t\t+ W(4, -1105667544, -1100327790, -1098424968, -1089810345)\n\t\t+ W(5, 1033240873, 1049118183, -1140016273, -1110413061) + W(6, 1048881003, 1047898440, 1053051896, -1104044598)\n\t\t+ W(7, 1051763270, -1113330784, 1027424455, 1032557738) + W(8, -1110989208, 1029966423, 1023833874, 1040575921)\n\t\t+ W(9, -1114053146, 1041606896, -1122699729, 1041157596)\n\t\t+ W(10, 1019807480, -1128249884, -1114518074, 1013296733)\n\t\t+ W(11, -1110353213, -1126749570, 1021514772, -1121516731);\n\tsum2 = W(0, -1143648694, 1022767513, 963325627, -1138915747) + W(1, 1040530304, 1031585165, 1008260859, -1120690652)\n\t\t + W(2, 1050457027, -1104882348, 1052893834, -1122824043)\n\t\t + W(3, 1019582897, -1094902239, -1113748748, -1090635807)\n\t\t + W(4, -1090901428, 1017677825, -1090554669, 1048412513)\n\t\t + W(5, -1101863176, -1104950416, -1120605391, 1056780417)\n\t\t + W(6, -1095258955, -1116653154, 1030383529, 1063122641)\n\t\t + W(7, -1089352859, 1057380402, -1106433792, 1049388154)\n\t\t + W(8, 1047388223, -1125154789, -1114292033, -1118207917)\n\t\t + W(9, 1048190601, -1102824630, 1038107916, -1104842210)\n\t\t + W(10, 1034828442, -1149114774, 1040557770, 1005930742)\n\t\t + W(11, 980397999, 1033506230, -1115355457, -1136517107);\n\tWS(-1104952056, -1073278929);\n\tsum1 =\n\t\tW(0, -1144211169, 1031125659, -1121100585, -1142367854) + W(1, 1025675017, -1114298540, 1036563163, -1122834968)\n\t\t+ W(2, -1099507218, -1116651974, -1101060075, -1105066053)\n\t\t+ W(3, -1131576359, -1114707952, -1120605819, -1111900952)\n\t\t+ W(4, 1047627264, -1113308557, 1054491321, 1039149624) + W(5, -1106626380, 1042584197, -1128818827, 1039018645)\n\t\t+ W(6, 1043300637, 1037274304, -1102367022, 1051689271) + W(7, 1044811828, -1128472513, 1045578618, -1115669626)\n\t\t+ W(8, -1098196346, -1126577137, -1102852173, -1106731162)\n\t\t+ W(9, -1111689619, -1126957444, 992521004, 1025441875)\n\t\t+ W(10, 1030331294, -1122667056, 1026346581, -1120693369)\n\t\t+ W(11, 1018492983, -1140414731, -1128018583, 997033420);\n\tsum2 =\n\t\tW(0, -1117577133, -1139616023, 997820975, 1028627780) + W(1, -1114909048, 1032747040, -1116006677, 1030832637)\n\t\t+ W(2, 1036324905, -1124977156, -1120808104, -1109376562) + W(3, 1029259135, -1145526876, 1022442689, 983753970)\n\t\t+ W(4, 1012676607, -1115101040, 1041273688, 1049990275) + W(5, 1043064430, 1039154681, 1027909669, -1115224952)\n\t\t+ W(6, -1164734594, 1032695755, 1041759226, -1096754642)\n\t\t+ W(7, 1041324783, -1094055114, -1098711698, 1023440264)\n\t\t+ W(8, 1039853902, -1116113854, 1041255405, -1106762918)\n\t\t+ W(9, -1111929038, 1025837595, -1130147608, -1112181665)\n\t\t+ W(10, -1110394349, 1006188424, -1120661488, 1033535767)\n\t\t+ W(11, 1021759445, 1023476809, -1133986843, 1029342490);\n\tWS(1057403966, -1096678293);\n\tsum1 = W(0, 1015545167, 1013920108, 1030182836, 991347091) + W(1, 1031028372, -1130110920, -1137745417, -1127755335)\n\t\t + W(2, -1133819725, -1127594402, 1031500952, -1107540753)\n\t\t + W(3, 1042502792, -1120427420, 1023814022, -1113612941)\n\t\t + W(4, 1037006758, -1136130453, 1042283546, 1040431359) + W(5, -1084295706, 1042737160, 1019878434, 1042334622)\n\t\t + W(6, -1110196161, -1123399563, -1086200264, 1060132444)\n\t\t + W(7, 1049379651, 1001749345, 1023472436, -1123659840)\n\t\t + W(8, -1111752718, 1041684833, 1047364560, -1104881213)\n\t\t + W(9, -1113607001, -1117219726, 1017968636, 1008021369)\n\t\t + W(10, 1028708905, -1119121787, -1120221088, 1006406689)\n\t\t + W(11, 1002061113, 1026883950, -1124476270, 1011156129);\n\tsum2 =\n\t\tW(0, -1178786588, 1027650789, 1004569898, 1010647389) + W(1, -1130907066, -1128412421, 1000455394, 1019136642)\n\t\t+ W(2, -1129322914, -1117835702, -1120140062, -1110565129)\n\t\t+ W(3, 1046200355, 1035331810, 1040609034, -1114775527) + W(4, -1116170217, -1106357388, 1012300621, 1051050908)\n\t\t+ W(5, -1094299123, 1038925264, -1110352470, 1028674911) + W(6, 1036181740, 1050236879, 1029537087, -1121260831)\n\t\t+ W(7, -1105419536, -1104188032, -1148832482, 1009994365)\n\t\t+ W(8, 1016863918, -1107702296, -1115347042, 1019718506) + W(9, 1018471790, 1035623426, 1031812039, -1129304944)\n\t\t+ W(10, -1132924585, -1127926494, 1007741857, -1147888890)\n\t\t+ W(11, -1122466004, -1132432621, -1132484471, -1146317634);\n\tWS(1056335484, -1129697442);\n\tsum1 = W(0, -1118615510, -1123816285, 1016357093, -1126548591)\n\t\t + W(1, 1017679973, -1125007109, -1130509569, -1127256452)\n\t\t + W(2, 1026825265, -1162479083, -1123245334, -1115166368)\n\t\t + W(3, 993334229, 1009460392, -1117686884, -1110259820)\n\t\t + W(4, -1102686619, -1175208362, -1112742573, 1012633705)\n\t\t + W(5, 1048503365, -1110640192, 1010107581, 1008538193) + W(6, 1045269336, -1122870505, 1056143939, 1022501065)\n\t\t + W(7, 1044007618, 1043433395, 1037226473, 1040188728) + W(8, 1031523962, 1025178018, -1115481871, -1098786498)\n\t\t + W(9, -1107348056, -1104721331, -1124234681, -1112073470)\n\t\t + W(10, -1140818205, -1112741005, 1004860403, -1121817826)\n\t\t + W(11, -1134864917, -1142571619, -1120701013, 1004599859);\n\tsum2 = W(0, -1140731697, 1018164054, -1116322329, 1033668632) + W(1, -1110091010, 1006827755, 1024608202, 978878091)\n\t\t + W(2, -1126783010, -1144859189, -1148034885, -1111621890)\n\t\t + W(3, 1034430751, -1133278289, -1134565598, -1106732021)\n\t\t + W(4, 1035005186, 1011714049, -1112384840, 1057652336) + W(5, -1103655808, 1035575897, 1007536733, 1017810394)\n\t\t + W(6, -1110815467, 1039236492, -1109778149, 1053123628)\n\t\t + W(7, -1113563636, 1009902097, 1031837967, 1032913014)\n\t\t + W(8, -1144657885, -1130754383, -1113329105, -1107649638)\n\t\t + W(9, -1112793157, -1136830370, -1131576514, -1118754368)\n\t\t + W(10, -1127206230, -1146205013, -1113225660, 1012470213)\n\t\t + W(11, -1113811608, -1126431906, 1007646275, -1123083034);\n\tWS(1064654654, 1035088379);\n\tsum1 = W(0, -1123150274, 1013730923, -1124984926, -1143080352)\n\t\t + W(1, -1115541655, -1120446591, 1019709882, -1123168830)\n\t\t + W(2, -1101065371, -1104968795, -1104298005, -1097917367)\n\t\t + W(3, -1115560637, -1112072243, -1121553409, -1101025669)\n\t\t + W(4, 1052021669, 1043838624, 1050953841, 1053857683)\n\t\t + W(5, -1098028717, -1118042236, -1117850604, 1024509393)\n\t\t + W(6, 1034671630, -1116995686, -1125221929, 1053311748) + W(7, 1054064059, 1056948345, 1047317764, 1051915779)\n\t\t + W(8, -1103122974, 1025043295, -1102292982, -1101557747)\n\t\t + W(9, -1102206963, -1099829586, -1123986585, -1105952782)\n\t\t + W(10, -1124628232, -1123853974, -1122875259, -1129945790)\n\t\t + W(11, -1115475969, 1010096420, -1120157778, 1010117900);\n\tsum2 =\n\t\tW(0, -1115290116, 1036300391, -1109664288, 1023887773) + W(1, 1031338337, -1112746552, 1029647363, -1123357025)\n\t\t+ W(2, -1109338596, -1120873277, -1133763869, -1110763968)\n\t\t+ W(3, -1104363651, -1111086518, 1014654409, -1113327782) + W(4, 1052546267, 1031940424, 1041363997, 1046589307)\n\t\t+ W(5, 1038758869, 1026186944, 1011886363, -1114411312) + W(6, -1101682429, 1045633640, -1094977574, 1050150667)\n\t\t+ W(7, -1104681827, -1121584221, 1042076972, 1033926660)\n\t\t+ W(8, -1106866549, -1121551223, 1008614181, -1110488084)\n\t\t+ W(9, -1120223295, 1035823152, -1111033402, 1046305164)\n\t\t+ W(10, 1027635895, 1021591180, -1119215823, 1009099129)\n\t\t+ W(11, 1016354897, -1115537942, 1012736237, -1109553196);\n\tWS(-1088190206, -1108558078);\n\tsum1 = W(0, -1109712467, 1034096473, -1111610193, -1111503908)\n\t\t + W(1, 1029528067, -1109918121, -1130336610, -1110290409)\n\t\t + W(2, 1048826552, -1100191472, 1051587686, -1114238856)\n\t\t + W(3, -1124911644, 1053388852, -1101598429, 1049826386)\n\t\t + W(4, -1117596347, -1104233509, -1112703594, -1118548075)\n\t\t + W(5, -1094857227, 1040678692, -1102065648, -1108498290)\n\t\t + W(6, 1045129740, 1021528052, -1123092480, 1045282957) + W(7, 1041941490, -1121835291, 1050563972, 1032628503)\n\t\t + W(8, -1145103958, 1015098342, 1033306871, -1105600408)\n\t\t + W(9, -1116887040, 1043572363, -1101594283, 1041251987)\n\t\t + W(10, 1040739958, -1095362037, 1043699492, -1112734841)\n\t\t + W(11, -1106244021, 1044475255, -1100499697, 1015959598);\n\tsum2 =\n\t\tW(0, -1140036524, -1122134368, -1124742331, 1023368729) + W(1, 1025643512, -1117935205, 1029315286, -1121900993)\n\t\t+ W(2, 1033121292, -1135675176, 1022385651, 1037868584) + W(3, -1113410705, 1034815986, -1106876578, 1029051910)\n\t\t+ W(4, 1020537037, -1102563608, 1017232470, -1097085277)\n\t\t+ W(5, 1026038978, -1107749524, -1116418603, 1013163432)\n\t\t+ W(6, -1094559771, -1090683436, -1089829937, -1081905013)\n\t\t+ W(7, -1085580324, -1093433405, -1100509010, -1107168757)\n\t\t+ W(8, 1042598592, 1049536131, 1015761873, -1122385293) + W(9, -1119606047, 1034046493, 1037794408, 1020109569)\n\t\t+ W(10, 1048560917, 1043095342, 1060516603, 1068776853) + W(11, 1062905414, 1053234619, 1023262329, 1038509970);\n\tWS(1048802172, -1118644607);\n\tsum1 =\n\t\tW(0, 1022629891, 1001330921, -1147098739, 1023807923) + W(1, -1129374813, 1028532286, 1031375324, -1151549405)\n\t\t+ W(2, -1112271863, 1008285357, -1106982824, 1020475895) + W(3, 958183765, 1025640422, -1133565569, -1106868493)\n\t\t+ W(4, -1115934246, 1007889405, -1110669107, -1095657203)\n\t\t+ W(5, -1113474437, -1090481180, -1104303995, -1104624276)\n\t\t+ W(6, -1112205646, -1137992085, 1044651974, 1050363724) + W(7, 1050921091, 1050665633, 1037811271, 1049383075)\n\t\t+ W(8, 1050188943, 1025826270, 1026008921, 1011316531) + W(9, -1106529387, -1131537104, -1125009457, 1022847857)\n\t\t+ W(10, -1125264263, -1127716075, -1113499645, 1026946398)\n\t\t+ W(11, -1121270209, 1021652689, 1014192325, -1142930963);\n\tsum2 = W(0, 1016559128, -1119933527, 1008526536, 1034816070) + W(1, 1018959568, 1026554777, -1112891495, 1046177388)\n\t\t + W(2, -1089262209, 1032931419, -1094914643, -1096197918)\n\t\t + W(3, -1101210129, 1049415798, -1128790619, 1043157162)\n\t\t + W(4, 1053795811, -1108360154, 1052999976, 1069558608)\n\t\t + W(5, -1103281588, -1085501184, -1098019814, -1088254262)\n\t\t + W(6, 1058569170, -1097574423, 1052760357, 1058007152)\n\t\t + W(7, -1106340652, -1101474305, -1114646508, -1096632714)\n\t\t + W(8, -1094475155, 1036603460, -1106271635, 1022028102)\n\t\t + W(9, -1121182797, 1027756295, -1124734105, 1015426864)\n\t\t + W(10, 1008650912, -1121755244, 1039081818, 1004102711)\n\t\t + W(11, 1033515588, 1032461240, -1118822413, 1043397723);\n\tWS(-1085648446, -1079079370);\n\tsum1 = W(0, 1031831473, -1114079994, 1031367567, -1118896788)\n\t\t + W(1, -1123680847, 1033718927, -1123944253, 1033541103) + W(2, 1036117159, 1003975776, 1044164867, 1045647319)\n\t\t + W(3, 1033826253, 1041970952, 1024952417, 1040029267) + W(4, 1049939273, 1042007752, 1043312672, -1095211959)\n\t\t + W(5, -1122554975, -1116359196, -1176880640, 1026974961)\n\t\t + W(6, -1094329359, -1097850009, -1089391360, -1087218668)\n\t\t + W(7, -1100203021, 1033960979, -1108529239, -1111794397)\n\t\t + W(8, 1040633606, -1134555900, 1041283678, 1044809099) + W(9, 1046447947, 1042238738, 1024390649, 996515216)\n\t\t + W(10, 1023486628, 1019647980, 1023951387, 1014099708)\n\t\t + W(11, 1017251780, 1031788713, -1146375056, 1033511473);\n\tsum2 = W(0, 1019169584, -1120973142, 1033125970, 1025364316)\n\t\t + W(1, -1109812797, 1040314133, -1108282977, 1018923536)\n\t\t + W(2, 1042983019, 1009997472, -1103915398, 1036688212)\n\t\t + W(3, -1125420780, -1119986230, 1034277286, -1117630132)\n\t\t + W(4, -1098354632, -1106283039, 1033722376, 1062322516)\n\t\t + W(5, -1098634798, 1057333054, -1102308141, -1125368820)\n\t\t + W(6, -1099987280, 1032814660, -1095179878, 1032770062)\n\t\t + W(7, -1109050948, -1097734639, 1034195486, 1049154263)\n\t\t + W(8, 1048978343, -1103033329, 1055664562, -1097173506)\n\t\t + W(9, -1103688168, -1173745415, -1107997912, -1098308929)\n\t\t + W(10, -1118546716, 1022934360, -1110281795, 1045599869)\n\t\t + W(11, -1119010038, 1038965178, 1007528912, 1035253180);\n\tWS(-1089355774, -1078290086);\n\tsum1 = W(0, -1122950775, -1112691207, 1023290087, -1107733500)\n\t\t + W(1, -1146188190, -1132821263, -1112282369, -1116356099)\n\t\t + W(2, 1037182841, -1124344033, 1046400294, -1118583361)\n\t\t + W(3, 1042531744, -1121639475, -1137408791, 1018516820)\n\t\t + W(4, -1118638572, 1041047393, -1098349922, 1057481334)\n\t\t + W(5, -1139289650, -1109625472, 1026873009, -1139389015)\n\t\t + W(6, -1121667553, -1104403323, -1099164822, 1054069421)\n\t\t + W(7, -1097191323, 1041114291, -1120861012, -1139200383)\n\t\t + W(8, 1009124079, -1138062223, 1044398104, -1149431076)\n\t\t + W(9, 1044515332, -1120573261, -1120947806, 1017011067)\n\t\t + W(10, -1115334660, -1126199861, -1136525567, -1110719762)\n\t\t + W(11, 1015659149, -1121643278, -1122889719, -1120569352);\n\tsum2 =\n\t\tW(0, -1120919296, 1009843654, -1132368064, 1020138111) + W(1, 1029564211, -1115205032, 1016741875, -1119663171)\n\t\t+ W(2, -1124567280, -1107129213, 1020831927, -1098918731)\n\t\t+ W(3, -1132836513, 1010227332, -1118685376, 1026001154) + W(4, 1037030993, 1043380414, -1109288357, 1059483198)\n\t\t+ W(5, -1119273466, -1106893419, 1028452918, -1135273053)\n\t\t+ W(6, -1120629799, -1102119519, -1112537154, 1064361176)\n\t\t+ W(7, -1104145236, 1043150197, -1117770026, 1019055438)\n\t\t+ W(8, -1106639281, 1030878171, -1118412551, -1093377806)\n\t\t+ W(9, -1123848756, -1103899854, 1024207514, -1109882780)\n\t\t+ W(10, 1020211370, -1126825280, -1144175329, -1146281491)\n\t\t+ W(11, -1135251423, 1028327527, -1128215590, 1024565629);\n\tWS(1064975294, 1066308158);\n\tsum1 =\n\t\tW(0, 1031747776, -1106142801, 1028818885, 1001228109) + W(1, -1115396498, 1041342669, -1108139113, 1027821620)\n\t\t+ W(2, -1119071204, 1032019633, 1041375482, -1112793497) + W(3, 1013499583, -1123968938, 1024220311, 1020544662)\n\t\t+ W(4, 984462229, 1045090381, -1093262116, 1049965274) + W(5, 1052662103, -1113450905, 1035427697, -1138282267)\n\t\t+ W(6, -1132055971, -1108909198, 1038243096, 1021279149)\n\t\t+ W(7, -1090377239, 1040402543, -1107965954, -1116422289)\n\t\t+ W(8, -1148253029, -1110036442, 1036945928, -1115536386) + W(9, 1034061985, 993049059, -1113141447, 1016907357)\n\t\t+ W(10, -1126913907, 1036419718, -1121925745, 1019907753)\n\t\t+ W(11, 1032108124, -1109636927, 1032825796, -1128061041);\n\tsum2 =\n\t\tW(0, 1016610899, -1135553471, -1163068737, -1147979120) + W(1, -1121296916, -1139692219, 1007282246, 1019770181)\n\t\t+ W(2, -1118189976, 1018031354, -1120752887, 1035872696)\n\t\t+ W(3, 1034250650, 1022157658, -1131969269, -1131641536)\n\t\t+ W(4, 1027283971, -1118352328, 1042584076, -1095799786)\n\t\t+ W(5, 1009508653, -1121907329, -1148404200, 1013257077) + W(6, 1028895363, 1032145382, 1042427003, 1073605475)\n\t\t+ W(7, 1056095764, -1130051225, 1025403981, -1121748387)\n\t\t+ W(8, -1113530321, -1123867563, -1099207121, -1075418961)\n\t\t+ W(9, -1091570337, -1113117501, -1124635978, -1123610989)\n\t\t+ W(10, 1007846553, 1011272254, 1010785270, 1026092591) + W(11, 1030054693, 1019567305, 1012575724, 1018865930);\n\tWS(1062423998, 1020226002);\n\tsum1 =\n\t\tW(0, -1122384152, 1000976853, -1122957973, -1140430696) + W(1, 1018079658, -1116871589, 1021042950, -1130305609)\n\t\t+ W(2, -1116470612, 1015809956, -1115150860, -1100102424)\n\t\t+ W(3, -1099378776, -1102397253, -1121061927, -1097083551)\n\t\t+ W(4, -1095861522, -1125526476, -1101122465, 1051208664) + W(5, 1045734276, 1040938184, 1045437908, 1049869175)\n\t\t+ W(6, 1055717600, 1034182342, 1052715645, 1053221217) + W(7, 1041738487, 1038184662, -1114085178, 1019939330)\n\t\t+ W(8, -1128557498, -1136390676, -1101688288, -1097231798)\n\t\t+ W(9, -1114764537, -1107259340, 1034631967, -1105843464)\n\t\t+ W(10, -1133541800, 1025071548, -1121585121, 1026360261)\n\t\t+ W(11, -1127628368, -1121765359, 1018430000, -1122412137);\n\tsum2 =\n\t\tW(0, -1125184611, 985313435, -1181860650, -1124740239) + W(1, -1132645547, 999484231, -1125466771, 1024683619)\n\t\t+ W(2, -1124729770, -1132095255, 1028760415, 1011065519)\n\t\t+ W(3, 1033849803, 1015359010, -1140486285, -1125848669)\n\t\t+ W(4, 1045115043, -1117207517, 1036693207, -1088457353)\n\t\t+ W(5, -1096437481, 1048821220, -1107942084, 1027562883)\n\t\t+ W(6, 1058112728, 1067077185, -1107623537, -1080660794)\n\t\t+ W(7, -1109418981, -1117188353, 1027196953, -1127975224)\n\t\t+ W(8, 1023628890, -1158219675, 1043689375, 1020427720) + W(9, -1110185484, 1032363474, -1121893121, 1023023798)\n\t\t+ W(10, 1007171579, -1118062236, 1000645119, -1160295467)\n\t\t+ W(11, 1015083304, 1023561702, -1134577643, -1158549787);\n\tWS(-1085592318, -1113086899);\n\tsum1 =\n\t\tW(0, -1127342656, 1024334944, -1107952998, 1034498345) + W(1, -1131633306, -1110168462, 1033648125, -1119681052)\n\t\t+ W(2, -1105245475, 1029597578, -1104926592, -1110412429)\n\t\t+ W(3, -1103724998, -1098176238, -1115323711, -1098367950)\n\t\t+ W(4, -1104578161, -1117644382, -1101901257, 1053247055) + W(5, 1051300307, 1051451939, 1049307889, 1053283054)\n\t\t+ W(6, 1053241687, 1041591201, 1051692021, 1044816720) + W(7, 1042909421, -1124765258, -1143558503, -1113485404)\n\t\t+ W(8, -1103827813, 1020278010, -1097952575, -1110749814)\n\t\t+ W(9, -1106968399, -1105195378, 1027981559, -1102600950)\n\t\t+ W(10, -1138537863, 1015573096, -1110174988, 1033881662)\n\t\t+ W(11, -1116328992, -1113141267, 1028312016, -1113790704);\n\tsum2 =\n\t\tW(0, 1019423143, -1134200265, 1022335641, -1126211289) + W(1, -1160177640, 995157684, -1138832033, -1130236057)\n\t\t+ W(2, -1118706158, -1122995556, -1113839515, -1123774588)\n\t\t+ W(3, 1002859666, -1114460336, -1131104601, 1027754115)\n\t\t+ W(4, -1110500850, 1021681136, -1121978030, 1048787768) + W(5, 1035034344, 1025695056, -1126984825, 1027074464)\n\t\t+ W(6, 982325064, -1106847870, 1042414810, 1052221246) + W(7, 1009324191, -1129766425, -1136621129, -1120353368)\n\t\t+ W(8, -1117883328, -1115095323, -1112736275, -1118959328)\n\t\t+ W(9, 1026260852, -1114723897, 1016807320, -1121253912)\n\t\t+ W(10, -1145733922, 1001371122, 1019850892, -1113736050)\n\t\t+ W(11, 1023767274, -1130130145, -1131688905, 992217060);\n\tWS(1025516512, -1100199588);\n\tsum1 = W(0, 1010096560, 998291066, 1015136529, 1016981531) + W(1, -1134306338, 1015217585, 1025573847, 1027586712)\n\t\t + W(2, 1021891087, -1128181387, -1152435393, 1035336779)\n\t\t + W(3, 1040424469, 1041134374, -1147235028, -1105873140) + W(4, 1041308560, 1015332531, 1054580194, 1043985948)\n\t\t + W(5, -1088067164, -1097437107, -1108043523, 1024655979)\n\t\t + W(6, -1106994989, -1097993736, -1087955312, 1049373383)\n\t\t + W(7, 1048585956, 1044933000, 1037061588, 1041451309) + W(8, -1107391304, 1040752366, 1021987303, 1016493518)\n\t\t + W(9, -1111549299, 1015283332, -1125444197, 1025261651)\n\t\t + W(10, 1032706511, -1115681272, 1013936722, -1153713033)\n\t\t + W(11, -1122756060, 1028860515, -1124931799, 1010373746);\n\tsum2 = W(0, 1024904631, -1136864762, 1005033941, 1030076655) + W(1, 1022202973, 995105737, 1009257370, -1113660547)\n\t\t + W(2, -1115115972, 1023564875, -1114446231, -1115188268)\n\t\t + W(3, -1099782234, 1025338591, -1107689693, 1049272645)\n\t\t + W(4, -1128899549, -1103710322, -1140124434, 1057566767)\n\t\t + W(5, 1051976820, 1009750634, 1040613751, -1105716747)\n\t\t + W(6, -1100416868, -1105139728, -1107001478, 1061216146)\n\t\t + W(7, -1114917196, -1107279078, -1123762171, -1112133417)\n\t\t + W(8, 1014205090, -1112771593, -1105823902, -1101449249)\n\t\t + W(9, -1115621063, -1123827499, -1124460977, 1019919657)\n\t\t + W(10, -1138213458, 1024304323, 1028369943, 1031401203)\n\t\t + W(11, -1127316949, 1002907445, 1021828037, -1121285688);\n\tWS(1050734204, -1108852232);\n\tsum1 = W(0, -1111669430, 1026854009, -1115457556, 1022285659)\n\t\t + W(1, -1130768721, -1124925681, 988348114, -1117352760)\n\t\t + W(2, -1116292712, -1106093993, -1104273631, -1090233269)\n\t\t + W(3, -1103820941, -1107176543, -1114665965, -1103610460)\n\t\t + W(4, -1122281377, -1103616254, 1027625969, 1069754213)\n\t\t + W(5, -1114752252, -1130883179, -1144129324, 1032882469)\n\t\t + W(6, 1027495958, -1113635568, 1042550097, 1065691213) + W(7, 1054098174, 1026991873, 1018693905, 1034282506)\n\t\t + W(8, -1113568120, -1125634353, -1100906821, -1090598793)\n\t\t + W(9, -1103145534, -1107767585, 1007587914, -1112131865)\n\t\t + W(10, -1123139966, -1117637392, -1147736996, 999398084)\n\t\t + W(11, -1140005358, -1123096067, -1120005196, -1122062653);\n\tsum2 =\n\t\tW(0, 1024214881, -1122830075, 1024710111, -1118490155) + W(1, -1134765475, 1007204875, 955722144, -1132418382)\n\t\t+ W(2, -1105712489, 1026001227, -1105988647, 1044311614)\n\t\t+ W(3, -1128591966, 1016894538, -1132281374, -1121103003)\n\t\t+ W(4, -1096328526, -1089670730, -1109313571, 1057951288)\n\t\t+ W(5, 1031038781, -1135710147, -1121635711, 1040031313) + W(6, 1036545949, -1104892025, 1042923133, 1050757116)\n\t\t+ W(7, 1041007149, -1111844715, 982097434, -1131469166) + W(8, -1114697429, 1027384734, -1108836817, 1046225965)\n\t\t+ W(9, -1111832237, 1020988490, -1141601766, -1137288635)\n\t\t+ W(10, 1029115040, -1127506094, 1018384918, -1118982995)\n\t\t+ W(11, 1000957030, 1018633070, -1131312630, 1012074251);\n\tWS(-1077332287, -1089760701);\n\tsum1 =\n\t\tW(0, 998476811, -1146931846, 1020090684, -1115596769) + W(1, 1018970620, -1117338894, -1131301080, -1134004534)\n\t\t+ W(2, -1126986618, -1106320367, -1103512376, -1106044643)\n\t\t+ W(3, 1033789092, -1121544222, 1025908912, -1120853460) + W(4, 1035645275, 1033143495, 1057100532, 1033806067)\n\t\t+ W(5, -1089559024, -1119052427, -1109205213, 1021655744)\n\t\t+ W(6, 1035996661, 1030948981, -1098691810, 1054020686) + W(7, 1053006209, 1053247323, -1117960094, -1112997269)\n\t\t+ W(8, -1111559939, -1116749294, -1114602228, -1102410839)\n\t\t+ W(9, -1114317262, -1148875196, 1040862618, 1024305160)\n\t\t+ W(10, 1002151576, -1132098378, 1020764052, -1131285468)\n\t\t+ W(11, -1143682184, -1140686688, -1112291776, -1137942600);\n\tsum2 =\n\t\tW(0, 1006079429, -1142220161, -1129651941, -1120056293) + W(1, 1021210606, -1138049810, 1020679942, -1144760977)\n\t\t+ W(2, 1015506585, 1012377004, 1027444401, 1027255740) + W(3, -1154390002, -1121552483, 988683875, -1149209645)\n\t\t+ W(4, -1129173219, 1019086641, 1029291472, -1087748986) + W(5, 1030702430, 1046290929, -1149010889, 958643736)\n\t\t+ W(6, -1126961905, 1027847692, -1099113060, -1071778912)\n\t\t+ W(7, 1077548482, 1017608723, 1009874569, -1165018915) + W(8, 1025558752, -1121396179, 1031608500, -1132223695)\n\t\t+ W(9, 1041292060, 1030045463, -1116313503, -1108302337)\n\t\t+ W(10, 1004493969, -1129089615, 1032469225, -1117547929)\n\t\t+ W(11, 1017793536, -1115202758, 1024909384, -1153372770);\n\tWS(1054407548, 983325672);\n\tsum1 =\n\t\tW(0, 1028412425, -1115456470, 1017604747, 1031921957) + W(1, -1121692358, 1041128181, -1131299175, 1034097067)\n\t\t+ W(2, -1105600625, 1033490817, -1115519181, 1031550611)\n\t\t+ W(3, -1103698804, -1109550327, 1030793272, 1014014769)\n\t\t+ W(4, -1148390382, 1044756246, -1103922376, -1090010995)\n\t\t+ W(5, 1062123705, -1103937189, 1039103265, -1135652511)\n\t\t+ W(6, 1033571545, -1114006910, 1059608097, -1087252051)\n\t\t+ W(7, -1094628214, 1042983319, -1106569209, -1116995186)\n\t\t+ W(8, 1032293767, -1119790070, -1107101148, 1044072953) + W(9, 1027680451, 1021059262, 1007158719, -1141553278)\n\t\t+ W(10, -1124427701, 1037509878, 1007976775, 1022727275)\n\t\t+ W(11, 1033962892, -1108328080, 1032055396, -1143059662);\n\tsum2 =\n\t\tW(0, 1007145536, -1108956115, -1123468231, 1003522017) + W(1, -1106382527, 1023566518, -1116797301, 1016028592)\n\t\t+ W(2, 1011835040, 1040320325, 1009493536, 1036429861) + W(3, 1045134298, -1132203156, 1044032552, -1103689691)\n\t\t+ W(4, -1115291423, -1145921569, -1120694127, 1057547857)\n\t\t+ W(5, -1120933925, -1105348488, -1105744806, 1019566780)\n\t\t+ W(6, 1029973058, -1113530029, 1025444390, 1039825371) + W(7, -1093621604, 1030401418, -1111109931, 1039637835)\n\t\t+ W(8, 1036345379, -1116109872, -1106839609, 1028735446) + W(9, 1043632212, 1032927131, 1031187850, -1119043970)\n\t\t+ W(10, -1106716830, 1031627486, -1106619549, 1032586179)\n\t\t+ W(11, -1135351552, -1107014793, 1030984886, -1117261713);\n\tWS(1062610366, -1081620328);\n\tsum1 = W(0, 1034909184, 1022225638, 1022593144, 1034659649) + W(1, -1145063906, 1029979468, 1024460554, -1129493655)\n\t\t + W(2, 1041975919, 1036878493, 1038275488, 1049110721) + W(3, 1039909252, 1050285945, 1032760119, 1052309552)\n\t\t + W(4, 1038564634, 1032326503, 1032775158, -1104434937)\n\t\t + W(5, -1098154666, -1091716385, -1098908862, -1093908076)\n\t\t + W(6, -1086061975, -1097049310, -1094128798, -1097332230)\n\t\t + W(7, -1096830529, 1031802154, -1125106744, 1033460244) + W(8, 1054071881, 1038246806, 1049378869, 1048167927)\n\t\t + W(9, 1037005773, -1122539766, 1023442918, -1111713187)\n\t\t + W(10, -1118145809, 1033815666, 984752392, 1040915883)\n\t\t + W(11, -1127387550, 1042582214, 1025327999, 1038395208);\n\tsum2 = W(0, 1025388154, 1001261778, 1007664153, 1018216589) + W(1, 1011431705, -1124915037, 1007167865, -1118462618)\n\t\t + W(2, -1106689977, 1031762430, -1105078255, -1117638934)\n\t\t + W(3, -1119019386, 1039919645, -1115769810, 1041969311)\n\t\t + W(4, -1110560421, -1111104301, -1122922762, 1029938402)\n\t\t + W(5, -1107704269, 1043034893, 1041034358, 1050092429)\n\t\t + W(6, 1049316874, -1112011481, 1044332351, -1117360942)\n\t\t + W(7, -1116357646, -1107523849, -1112781805, -1104673921)\n\t\t + W(8, 983067209, 1033280635, -1133572905, 1022258405) + W(9, 1016143957, -1109485745, 1010088409, -1106654827)\n\t\t + W(10, -1121273022, 1026153330, -1116643818, 1033323756)\n\t\t + W(11, -1123412994, 1027380094, 1016238045, 1006440178);\n\tWS(-1079099231, 1058224693);\n\tsum1 =\n\t\tW(0, -1136025729, 1041807413, -1113852830, 1038775953) + W(1, -1130024634, -1139925939, 1032899333, -1135488689)\n\t\t+ W(2, -1098612147, 1030021338, -1101745716, -1114342965)\n\t\t+ W(3, -1109189268, -1116898669, -1169623989, -1105924753)\n\t\t+ W(4, 1040574357, -1113591959, 1035906153, -1100940817)\n\t\t+ W(5, -1110548904, -1107090858, 983487291, -1105279552) + W(6, 1044962866, 1041390773, 1038641429, -1112997607)\n\t\t+ W(7, 1053521164, 1048687519, 1048553583, 1049805017) + W(8, -1107948018, 1030293261, -1102747762, -1131180663)\n\t\t+ W(9, -1102886695, -1127712365, 1020276366, 1033907987)\n\t\t+ W(10, -1152707357, 1019631368, -1119110697, 1008365619)\n\t\t+ W(11, -1120409456, -1156710253, -1137865855, -1120648241);\n\tsum2 =\n\t\tW(0, 1026221982, -1150712731, -1135858910, 998750602) + W(1, 1026066546, -1122173835, 1019885572, -1114797832)\n\t\t+ W(2, 1031288593, -1121646784, 1020650492, -1118866549)\n\t\t+ W(3, -1126679589, 1033676882, -1119823506, 1024418530)\n\t\t+ W(4, 1025270629, 1040465550, -1102699692, -1090773917) + W(5, -1103726643, 1038653616, 1044175124, 1035909226)\n\t\t+ W(6, -1105433524, -1099611845, -1077885918, -1073585027)\n\t\t+ W(7, -1083499628, 1072488285, 1076879885, 1053754278) + W(8, 1025604422, 1015298833, 1013887757, -1111404471)\n\t\t+ W(9, 1029004921, -1128843744, 1042609155, -1128976380)\n\t\t+ W(10, 1025361731, -1118571342, 1035533544, -1115122758)\n\t\t+ W(11, 1025173545, -1132364945, 982102231, -1120827581);\n\tWS(1039418864, -1140458522);\n\tsum1 = W(0, 983096624, 1029517505, -1121873782, 1019803894) + W(1, 1027911414, -1108005699, 1033576274, -1135118358)\n\t\t + W(2, -1114535995, -1145085849, -1102746926, 1028523779)\n\t\t + W(3, -1100878768, 1038991951, -1142936385, -1125909817)\n\t\t + W(4, 1044450572, -1097839409, 1062380387, -1088253674)\n\t\t + W(5, -1109645966, -1154916402, -1107146685, -1122115416)\n\t\t + W(6, 1027001827, 1032347927, -1106235793, -1090653261) + W(7, 1061486174, 1029669390, 1047810758, 1038152785)\n\t\t + W(8, -1117675070, 1031259878, -1105839880, 1036696746)\n\t\t + W(9, -1097301074, 1024178544, 1038477872, 1041849616)\n\t\t + W(10, 1035770150, -1104931415, 1033087169, -1121428646)\n\t\t + W(11, -1120235273, 1035324408, -1108040973, 1017003668);\n\tsum2 = W(0, -1121567066, 1034344084, -1105011035, -1142865888)\n\t\t + W(1, -1136511728, -1106811819, 1032101677, -1113394506)\n\t\t + W(2, 1033267920, 1026284945, 1033899226, -1120108491)\n\t\t + W(3, -1122542627, -1120621959, -1134482876, -1114137407)\n\t\t + W(4, -1104421963, -1103410132, 1022298858, 1057117238)\n\t\t + W(5, 1038703002, 1033583066, -1122973141, 1030826553)\n\t\t + W(6, -1130139832, 1037507308, -1102818563, 1003910328)\n\t\t + W(7, 1043197066, -1124006960, -1124335993, -1125132432)\n\t\t + W(8, -1132243276, 1034735332, 1044067085, 1041074904)\n\t\t + W(9, -1101099519, -1109459597, 1041237660, -1128301632)\n\t\t + W(10, 1024120715, -1109350039, -1127155070, 975508032)\n\t\t + W(11, -1117378085, 1001772648, -1113899392, -1126301549);\n\tWS(1053462780, -1083681865);\n\tsum1 = W(0, 1023511963, -1126058411, 1027394040, -1118697149) + W(1, 993307519, 1025756296, -1131368524, 1029589575)\n\t\t + W(2, 1041747598, 1015154794, 1045749945, 1048726745) + W(3, 1043007793, 1038169844, 1024626666, 1040782360)\n\t\t + W(4, 1041497612, 1018224530, 1041814811, -1086401302)\n\t\t + W(5, -1115623160, 1032344226, -1127070442, -1131398580)\n\t\t + W(6, -1138339988, 996055791, 1014351349, -1082085657)\n\t\t + W(7, -1096882594, -1105145572, -1110953740, -1110890258)\n\t\t + W(8, 1035615616, 1027711272, 1040756601, 1048515830) + W(9, 1042139693, 1038148425, 1009997960, 1029718722)\n\t\t + W(10, 1020629658, -1123213919, 1032965474, -1129047376)\n\t\t + W(11, -1132054806, 1033289129, -1128695798, 1029252236);\n\tsum2 = W(0, 1008350928, 1011413600, -1120704007, 1027382950) + W(1, -1127381517, 981904616, 1015535284, -1135583391)\n\t\t + W(2, -1118714967, 1024023545, -1126562655, 1034951721)\n\t\t + W(3, -1128407708, -1126139913, 999360844, -1138986423)\n\t\t + W(4, 1030231193, -1124778398, -1110351493, 1052754126)\n\t\t + W(5, 1033272406, -1151802072, 1013432992, -1123376913)\n\t\t + W(6, -1091889801, -1098641764, -1104262464, 1057762368)\n\t\t + W(7, -1161878816, 1012148800, 1024540201, 1031971990)\n\t\t + W(8, -1108897465, 1033453825, -1106889474, 1035809187)\n\t\t + W(9, -1132306565, -1153180738, 1014625240, -1118108772)\n\t\t + W(10, 1032606711, -1125648711, 1025836907, -1131934955)\n\t\t + W(11, -1134699254, -1131180247, -1171757551, -1140791326);\n\tWS(-1099299320, 1056598066);\n\tsum1 = W(0, 1006197652, -1128153660, -1136164796, 1035903322)\n\t\t + W(1, -1130396894, 1036246880, -1124832314, 1029570879)\n\t\t + W(2, -1127547996, 1041714651, 1029712499, -1128532088)\n\t\t + W(3, -1106761055, -1121593759, 1017604226, 1017990507)\n\t\t + W(4, -1106221946, -1098261544, -1085896508, 1057218165)\n\t\t + W(5, 1054525467, 1028130044, 1036683414, 1016287010) + W(6, 1045972807, 1038366195, 1057638589, 1054413180)\n\t\t + W(7, -1086573266, -1090476168, -1101308500, -1110319406)\n\t\t + W(8, 1004824505, -1113181968, -1113770157, 1038963911)\n\t\t + W(9, 1033084478, 1042818602, -1130963634, -1114724733)\n\t\t + W(10, -1119658116, 1030219574, -1129447670, 1033715440)\n\t\t + W(11, -1128924420, -1116035017, 1030841394, 998207538);\n\tsum2 = W(0, -1131923124, 993280665, -1127811288, 1032538133) + W(1, 992174233, 1002762140, 1015088121, 992586073)\n\t\t + W(2, 1046772351, 1028557303, -1107794670, -1098564467)\n\t\t + W(3, -1121892222, 1035775413, -1158807761, 1019898989)\n\t\t + W(4, -1110971235, -1134148898, 1043137579, 1067961229)\n\t\t + W(5, -1095277951, -1099141736, 1011333246, -1118039147)\n\t\t + W(6, -1105011941, -1104446514, -1096504482, 1066594258)\n\t\t + W(7, -1107079502, -1090299346, -1132433157, -1109952821)\n\t\t + W(8, 1028001687, -1147560296, -1101129935, -1104613803)\n\t\t + W(9, -1097683180, -1129031039, -1108888578, 1040568125)\n\t\t + W(10, -1121147281, 1024426003, 1034898623, -1136832302)\n\t\t + W(11, 1036381319, 1009264906, 1032287279, -1111357043);\n\tWS(-1105186296, -1108555742);\n\tsum1 =\n\t\tW(0, 1040483623, -1101386974, 1040816739, -1134311356) + W(1, -1108915605, 1046011615, -1102638726, 1034864637)\n\t\t+ W(2, -1105046378, 1038429012, 1031828819, -1107675004)\n\t\t+ W(3, 1034430779, -1109709717, 1030173660, -1130419297)\n\t\t+ W(4, -1118442722, 1042743759, -1093958439, 1030110546)\n\t\t+ W(5, 1044698927, -1103097566, 1041159370, -1111922822) + W(6, 1040666374, -1109750289, 1050019912, 1040526743)\n\t\t+ W(7, -1097473172, 1045974257, -1110364069, 1017242540) + W(8, 986662468, -1103538071, 1033262923, -1121451017)\n\t\t+ W(9, 1032745156, 1041021277, -1106175813, 1032931450)\n\t\t+ W(10, -1118942975, 1040611956, -1118385334, 1012951144)\n\t\t+ W(11, 1035127903, -1100748433, 1037154391, -1121991998);\n\tsum2 = W(0, -1127162070, -1135271108, 1003505825, 1012864633)\n\t\t + W(1, -1123384038, 1026898060, -1134649836, -1125848258)\n\t\t + W(2, 1014979733, -1136185376, 1028363168, -1131143608)\n\t\t + W(3, 1033256022, -1133517476, -1120532892, 1028008335)\n\t\t + W(4, -1114518101, 1038675289, -1105093650, -1095849351)\n\t\t + W(5, 1028346583, -1113528611, 1028725832, -1117113572)\n\t\t + W(6, 1016203776, -1140478504, -1089585970, -1070239185)\n\t\t + W(7, -1078361549, 1038794260, -1125525718, 1005296645)\n\t\t + W(8, 1035296562, -1111853852, 1058969759, 1079096535) + W(9, 1068193425, 1032636395, 1017911666, 1032298564)\n\t\t + W(10, -1117887634, 1030827904, -1123277259, -1116960146)\n\t\t + W(11, -1125445846, -1113311282, 991223090, -1134431064);\n\tWS(1065442623, 1015025160);\n\tsum1 =\n\t\tW(0, -1115365041, 1040496438, -1114325264, 1036061554) + W(1, 1038370800, -1112496600, 1039123015, -1120668655)\n\t\t+ W(2, -1113215535, 1031517084, -1109245393, 1002812769)\n\t\t+ W(3, 1036804053, -1099928488, 1036473513, -1116761110) + W(4, 1018550702, 1044423084, -1131936399, 1034975748)\n\t\t+ W(5, 1048106991, -1107673238, 1041344487, 1019812354) + W(6, 983382403, 1017412396, -1109909072, -1099246196)\n\t\t+ W(7, -1114225707, -1129165678, 1011581692, -1138585900)\n\t\t+ W(8, -1103693946, 1032083208, -1106995843, 1024898238)\n\t\t+ W(9, 1044531927, -1096349707, 1043676418, -1110354101)\n\t\t+ W(10, -1124004468, 1040563090, -1120263275, 1012000060)\n\t\t+ W(11, 1036150809, -1113013165, 1037117105, -1128538214);\n\tsum2 = W(0, 1010698941, 1042699596, 1048659418, 1058578114) + W(1, 1052277576, 1019470633, 1041036392, -1119471849)\n\t\t + W(2, 1023126843, -1140656688, -1095653758, -1081184698)\n\t\t + W(3, -1097586600, -1098953045, 1018118885, -1122826054)\n\t\t + W(4, -1106210958, 1029081919, -1118272649, 1060468587)\n\t\t + W(5, 1043044817, -1108654451, 1029721267, -1130901998)\n\t\t + W(6, -1122624743, 1040813712, -1097694847, 996865603)\n\t\t + W(7, -1103459725, -1128239326, 1034766857, 1000734433)\n\t\t + W(8, -1122034237, -1174961495, 1033474214, -1102355565)\n\t\t + W(9, 1049205466, -1112376452, 1033989555, 1017824567)\n\t\t + W(10, -1117968485, 1039098482, -1118912655, 1020119257)\n\t\t + W(11, 1031051049, -1108144089, 1038110136, -1114988670);\n\tWS(-1115864032, 1039792746);\n\tsum1 =\n\t\tW(0, -1140468214, 996096400, 1010495721, -1114956320) + W(1, 1013460969, -1122072970, -1127833232, -1140762151)\n\t\t+ W(2, -1121375417, -1108218204, -1109130991, -1115276388)\n\t\t+ W(3, 1040789857, -1114444905, 1026520268, -1127271361) + W(4, 1034497081, 1033625894, 1055392502, 1036829073)\n\t\t+ W(5, -1088431348, 1030275655, -1111886108, 1031218972) + W(6, 1039608980, 1040179481, -1093805194, 1050653566)\n\t\t+ W(7, 1049263376, 1051648994, -1121903450, -1112576115)\n\t\t+ W(8, -1113171393, -1108192053, -1127063626, -1109643980)\n\t\t+ W(9, -1124542831, -1129660583, 1034831154, 1019975176)\n\t\t+ W(10, -1132620605, 1018030914, 1012649753, -1127455572)\n\t\t+ W(11, -1135717173, -1147064482, -1114505023, -1135014713);\n\tsum2 =\n\t\tW(0, 1015385693, 1020691269, 1015565489, 1019337403) + W(1, -1132207064, -1131086480, -1163542113, 1010427910)\n\t\t+ W(2, -1115435752, -1141202058, -1111436746, 1040267853)\n\t\t+ W(3, -1114623303, 1025609602, -1140470334, -1128429973)\n\t\t+ W(4, 1035175215, -1117300235, 1033401267, -1100581516) + W(5, 1041259906, -1101351817, 1020278145, 1027629029)\n\t\t+ W(6, 1017441239, -1122675471, 1055273933, 1073306798)\n\t\t+ W(7, -1073173797, 1032997632, -1122237085, -1119509251)\n\t\t+ W(8, -1112773411, 1031000417, -1101083444, 1046685605)\n\t\t+ W(9, -1115311051, -1113329498, 1031244051, 1033297372) + W(10, 998363696, 1016207247, -1113092041, 1013448250)\n\t\t+ W(11, -1130370856, 1026870685, -1124843109, 1014260054);\n\tWS(1060418110, -1122066101);\n\tsum1 = W(0, 1031696780, -1124029560, -1147879495, -1123330286)\n\t\t + W(1, -1137787811, 1025904121, -1122010711, -1131825009)\n\t\t + W(2, -1115430516, -1129767372, 1033383950, 1032201307)\n\t\t + W(3, -1124043956, -1135655378, 1016436406, 1011740349)\n\t\t + W(4, -1104465800, -1124342772, -1084846132, 1040589380)\n\t\t + W(5, 1059143665, 1047669789, 1032251443, 1017074582) + W(6, 1041576533, 1035204176, 1057835449, -1121351835)\n\t\t + W(7, -1085338500, 1026196737, -1113520196, 1023559701)\n\t\t + W(8, -1122042801, -1109435772, -1106791333, 1025265863)\n\t\t + W(9, 1037079395, 1031201378, -1120875027, 1024540211) + W(10, 1028261758, 1025573168, 1024098613, 1000233671)\n\t\t + W(11, 1020968696, -1122702819, 1016849816, -1123483709);\n\tsum2 = W(0, -1127836624, -1173496113, 1027284157, 1022886010)\n\t\t + W(1, 1036751625, -1124242822, 1017945890, -1140181115)\n\t\t + W(2, 1033364881, -1127629564, -1104916712, -1097350377)\n\t\t + W(3, -1105423640, 1034826035, -1122986652, 1033442485)\n\t\t + W(4, -1101679270, -1105780675, -1113070309, 1061873799)\n\t\t + W(5, -1096904559, -1105550966, -1127473876, -1108824717)\n\t\t + W(6, 1023580345, -1119640853, -1132739235, 1062616603)\n\t\t + W(7, 1009507187, -1098447862, -1116534057, -1115327874)\n\t\t + W(8, -1149619356, 1033890881, -1113766541, -1112358042)\n\t\t + W(9, -1119315178, 1045500652, 1015952658, 1033458469)\n\t\t + W(10, -1136662275, -1122666983, 1023707939, 1028952789)\n\t\t + W(11, -1117384012, -1137245711, -1136860123, 1001899534);\n\tWS(1052277756, 1024619064);\n\tsum1 =\n\t\tW(0, 1029425189, -1155801216, 1030252033, -1112675811) + W(1, 1025211073, -1122395345, 994289396, -1124711713)\n\t\t+ W(2, -1120340480, -1107014752, 1038469578, 1032327591) + W(3, 1034534022, 1039704040, -1137717581, 1045346698)\n\t\t+ W(4, 1055903799, 1049346130, 1057427995, -1103272826) + W(5, 1040656272, -1111436999, 1016775164, -1134653325)\n\t\t+ W(6, -1093981294, -1099678446, -1098793998, -1090697510)\n\t\t+ W(7, -1103403378, 1041606598, 1005246730, 1013960373) + W(8, -1125235986, 1003141514, 1025012844, -1118748640)\n\t\t+ W(9, 1025335343, -1106833215, 1029370155, -1099652851)\n\t\t+ W(10, 1026200342, -1131584400, 1031806855, -1126277858)\n\t\t+ W(11, 1010568017, 1032770798, -1124454216, 1034190187);\n\tsum2 = W(0, 1023289146, 1020437582, 1009748873, 1030199907) + W(1, 1007345789, 1010063617, 1018930146, -1127799210)\n\t\t + W(2, 1045862572, 1028786959, -1120652794, 1015917080)\n\t\t + W(3, -1117660774, -1106003069, 1039304637, -1098471935)\n\t\t + W(4, -1095566322, -1132354231, -1090793815, 1063879108)\n\t\t + W(5, -1107315270, 1045942315, -1106431667, 1048572904)\n\t\t + W(6, -1087461476, -1101737384, -1083542229, 1069217208)\n\t\t + W(7, 1056862945, -1153692567, -1111757292, 1056217861)\n\t\t + W(8, 1016132472, -1127607289, -1107157844, -1097091848)\n\t\t + W(9, -1098187278, -1116485608, 1036040005, -1094693884)\n\t\t + W(10, 1044890152, -1124440021, 1037463572, 1032502373)\n\t\t + W(11, 1028169917, -1108513707, 1034190881, -1108016950);\n\tWS(-1086218302, -1084258561);\n\tsum1 = W(0, 1027347742, 1021408948, -1127633782, 1039366096)\n\t\t + W(1, -1116749595, 1033396118, -1139872292, 1025066091) + W(2, 1041008695, 1036310380, 1035524367, 1048593117)\n\t\t + W(3, -1138037400, 1045683171, 1032120647, 1046369740) + W(4, 1040638149, 1041666443, 1033011818, 1050103608)\n\t\t + W(5, -1111907839, -1097626581, -1099416246, -1095221944)\n\t\t + W(6, -1088163117, -1103354245, -1094269524, -1122175629)\n\t\t + W(7, -1096387988, -1103712029, -1111740158, -1117250695)\n\t\t + W(8, 1045697689, 1033383494, 1040895122, 1042904478)\n\t\t + W(9, -1136050786, 1018682217, -1126758410, -1121047845)\n\t\t + W(10, -1131589088, 1033326017, -1132088142, 1042877939)\n\t\t + W(11, -1131538396, 1039834587, 1030901630, 1034112696);\n\tsum2 = W(0, -1116225927, 1030773056, -1122365237, 1032148531)\n\t\t + W(1, -1127594672, 1026422036, 1023835916, -1131330830)\n\t\t + W(2, 1020583173, 1018516207, -1121497633, 1032012136)\n\t\t + W(3, -1111134479, -1112679629, -1123177144, -1112996078)\n\t\t + W(4, -1120289762, -1142227828, 1024002380, 1050603076)\n\t\t + W(5, 1040110681, -1109379336, -1102178993, -1102999759)\n\t\t + W(6, -1116630862, -1157244503, 1045806125, 1061490298)\n\t\t + W(7, -1104925089, -1096282325, -1103628682, -1116593585)\n\t\t + W(8, 1037488437, -1120616119, -1122845130, 1029135782)\n\t\t + W(9, -1122119114, 1035818151, -1118358279, 1024073644)\n\t\t + W(10, -1120774706, 1021325617, -1124264052, 1020114521)\n\t\t + W(11, -1129316292, -1129796491, 1024324894, -1129630471);\n\tWS(-1092406524, -1089571522);\n\n\treturn clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0);\n}\n\nshared float inp[555];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define temp_tex(pos) (float(texture(temp, pos).x))\nstatic const float2 temp_size = float2(GetInputSize().x * 1, GetInputSize().y * 2);\nstatic const float2 temp_pt = float2(1.0 / (temp_size.x), 1.0 / (temp_size.y));\n\n#define HOOKED_tex(pos) temp_tex(pos)\n#define HOOKED_size temp_size\n#define HOOKED_pt temp_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 555; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\tinp[id] =\n\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x - (2)) + 0.5, float(group_base.y + y - (3)) + 0.5)).x;\n\t}\n\tbarrier();\n\tvec4 ret = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 ret0 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 samples[12];\n\tsamples[0][0] = inp[local_pos + 0];\n\tsamples[0][1] = inp[local_pos + 1];\n\tsamples[0][2] = inp[local_pos + 2];\n\tsamples[0][3] = inp[local_pos + 3];\n\tsamples[1][0] = inp[local_pos + 4];\n\tsamples[1][1] = inp[local_pos + 5];\n\tsamples[1][2] = inp[local_pos + 6];\n\tsamples[1][3] = inp[local_pos + 7];\n\tsamples[2][0] = inp[local_pos + 15];\n\tsamples[2][1] = inp[local_pos + 16];\n\tsamples[2][2] = inp[local_pos + 17];\n\tsamples[2][3] = inp[local_pos + 18];\n\tsamples[3][0] = inp[local_pos + 19];\n\tsamples[3][1] = inp[local_pos + 20];\n\tsamples[3][2] = inp[local_pos + 21];\n\tsamples[3][3] = inp[local_pos + 22];\n\tsamples[4][0] = inp[local_pos + 30];\n\tsamples[4][1] = inp[local_pos + 31];\n\tsamples[4][2] = inp[local_pos + 32];\n\tsamples[4][3] = inp[local_pos + 33];\n\tsamples[5][0] = inp[local_pos + 34];\n\tsamples[5][1] = inp[local_pos + 35];\n\tsamples[5][2] = inp[local_pos + 36];\n\tsamples[5][3] = inp[local_pos + 37];\n\tsamples[6][0] = inp[local_pos + 45];\n\tsamples[6][1] = inp[local_pos + 46];\n\tsamples[6][2] = inp[local_pos + 47];\n\tsamples[6][3] = inp[local_pos + 48];\n\tsamples[7][0] = inp[local_pos + 49];\n\tsamples[7][1] = inp[local_pos + 50];\n\tsamples[7][2] = inp[local_pos + 51];\n\tsamples[7][3] = inp[local_pos + 52];\n\tsamples[8][0] = inp[local_pos + 60];\n\tsamples[8][1] = inp[local_pos + 61];\n\tsamples[8][2] = inp[local_pos + 62];\n\tsamples[8][3] = inp[local_pos + 63];\n\tsamples[9][0] = inp[local_pos + 64];\n\tsamples[9][1] = inp[local_pos + 65];\n\tsamples[9][2] = inp[local_pos + 66];\n\tsamples[9][3] = inp[local_pos + 67];\n\tsamples[10][0] = inp[local_pos + 75];\n\tsamples[10][1] = inp[local_pos + 76];\n\tsamples[10][2] = inp[local_pos + 77];\n\tsamples[10][3] = inp[local_pos + 78];\n\tsamples[11][0] = inp[local_pos + 79];\n\tsamples[11][1] = inp[local_pos + 80];\n\tsamples[11][2] = inp[local_pos + 81];\n\tsamples[11][3] = inp[local_pos + 82];\n\tret[0] = nnedi3(samples);\n\tret0[0] = inp[local_pos + 33];\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * ivec2(2, 1);\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1), ret0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * ivec2(2, 1) + ivec2(1, 0), ret);\n}\n"
  },
  {
    "path": "src/Effects/NNEDI3/prescalers.hlsli",
    "content": "// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n// Conversion from GLSL to HLSL is done through defines as much as possible to ease synchronization and comparison with upstream\n#define ivec2 int2\n\n#define vec2 float2\n#define vec3 float3\n#define vec4 float4\n\n#define mat4x3 float4x3\n#define matrixCompMult(mtx1, mtx2) (mtx1 * mtx2)\n\n#define shared groupshared\n\n#define atan atan2\n#define barrier GroupMemoryBarrierWithGroupSync\n#define fract frac\n#define intBitsToFloat asfloat\n#define inversesqrt rsqrt\n// mod deals only with positive numbers here and it could be substituted by fmod\n#define mod fmod\n\n// lerp handles bools as the third argument differently from mix\nfloat mix(float a, float b, bool c) {\n\treturn c ? b : a;\n}\n\n#define MIX_LERP(type1, type3) type1 mix(type1 a, type1 b, type3 c) { return lerp(a, b, c); }\nMIX_LERP(float, float)\nMIX_LERP(float2, float2)\nMIX_LERP(float3, float)\nMIX_LERP(float4, float)\n\n#define texture(tex, pos) tex.SampleLevel(sam_##tex, pos, 0.0)\n\n#define OUTPUT_pt float2(GetOutputPt())\n#define frag_pos(id) (vec2(id) + vec2(0.5, 0.5))\n#define frag_map(id) (OUTPUT_pt * frag_pos(id))\n#define HOOKED_map(id) frag_map(id)\n\n#define gl_LocalInvocationIndex (threadId.y*MP_NUM_THREADS_X + threadId.x)\n#define gl_LocalInvocationID threadId\n#define gl_WorkGroupSize (uint2(MP_NUM_THREADS_X, MP_NUM_THREADS_Y))\n#define gl_WorkGroupID (blockStart / uint2(MP_BLOCK_WIDTH, MP_BLOCK_HEIGHT))\n#define gl_GlobalInvocationID (gl_WorkGroupID*gl_WorkGroupSize + threadId.xy)\n\n// disable warning about unknown pragma\n#pragma warning(disable: 3568)\n// disable warning about too many threads (ravu-r4-rgb triggers it)\n#pragma warning(disable: 4714)\n\n// https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.709-6-201506-I!!PDF-E.pdf\nstatic const float3 rgb2y = float3(0.2126, 0.7152, 0.0722);\nstatic const float2x3 rgb2uv = {\n\t-0.2126/1.8556, -0.7152/1.8556,  0.9278/1.8556,\n\t 0.7874/1.5748, -0.7152/1.5748, -0.0722/1.5748\n};\nstatic const float3x3 yuv2rgb = {\n\t1,  0,         1.5748,\n\t1, -0.187324, -0.468124,\n\t1,  1.8556,    0\n};\n"
  },
  {
    "path": "src/Effects/Nearest.hlsl",
    "content": "//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\nfloat4 Pass1(float2 pos) {\n\treturn INPUT.SampleLevel(sam, pos, 0);\n}\n"
  },
  {
    "path": "src/Effects/Pixel Art/MMPX.hlsl",
    "content": "// MMPX\n// 移植自 https://casual-effects.com/research/McGuire2021PixelArt/index.html\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n#define src(x, y) INPUT.SampleLevel(sam, float2(x, y) * GetInputPt(), 0).rgb\n\nfloat luma(float3 C) {\n\treturn C.r + C.g + C.b;\n}\n\nbool all_eq2(float3 B, float3 A0, float3 A1) {\n\treturn all(B == A0) && all(B == A1);\n}\n\nbool all_eq3(float3 B, float3 A0, float3 A1, float3 A2) {\n\treturn all(B == A0) && all(B == A1) && all(B == A2);\n}\n\nbool all_eq4(float3 B, float3 A0, float3 A1, float3 A2, float3 A3) {\n\treturn all(B == A0) && all(B == A1) && all(B == A2) && all(B == A3);\n}\n\nbool any_eq3(float3 B, float3 A0, float3 A1, float3 A2) {\n\treturn all(B == A0) || all(B == A1) || all(B == A2);\n}\n\nbool none_eq2(float3 B, float3 A0, float3 A1) {\n\treturn any(B != A0) && any(B != A1);\n}\n\nbool none_eq4(float3 B, float3 A0, float3 A1, float3 A2, float3 A3) {\n\treturn any(B != A0) && any(B != A1) && any(B != A2) && any(B != A3);\n}\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat srcX = (gxy.x >> 1) + 0.5f;\n\tfloat srcY = (gxy.y >> 1) + 0.5f;\n\n\tfloat3 A = src(srcX - 1, srcY - 1), B = src(srcX, srcY - 1), C = src(srcX + 1, srcY - 1);\n\tfloat3 D = src(srcX - 1, srcY + 0), E = src(srcX, srcY + 0), F = src(srcX + 1, srcY + 0);\n\tfloat3 G = src(srcX - 1, srcY + 1), H = src(srcX, srcY + 1), I = src(srcX + 1, srcY + 1);\n\n\tfloat3 J = E, K = E, L = E, M = E;\n\n\tif (any(A != E) || any(B != E) || any(C != E) || any(D != E) || any(F != E) || any(G != E) || any(H != E) || any(I != E)) {\n\t\tfloat3 P = src(srcX, srcY - 2), S = src(srcX, srcY + 2);\n\t\tfloat3 Q = src(srcX - 2, srcY), R = src(srcX + 2, srcY);\n\t\tfloat Bl = luma(B), Dl = luma(D), El = luma(E), Fl = luma(F), Hl = luma(H);\n\n\t\t// 1:1 slope rules\n\t\tif ((all(D == B) && any(D != H) && any(D != F)) && (El >= Dl || all(E == A)) && any_eq3(E, A, C, G) && ((El < Dl) || any(A != D) || any(E != P) || any(E != Q))) J = D;\n\t\tif ((all(B == F) && any(B != D) && any(B != H)) && (El >= Bl || all(E == C)) && any_eq3(E, A, C, I) && ((El < Bl) || any(C != B) || any(E != P) || any(E != R))) K = B;\n\t\tif ((all(H == D) && any(H != F) && any(H != B)) && (El >= Hl || all(E == G)) && any_eq3(E, A, G, I) && ((El < Hl) || any(G != H) || any(E != S) || any(E != Q))) L = H;\n\t\tif ((all(F == H) && any(F != B) && any(F != D)) && (El >= Fl || all(E == I)) && any_eq3(E, C, G, I) && ((El < Fl) || any(I != H) || any(E != R) || any(E != S))) M = F;\n\n\t\t// Intersection rules\n\t\tif ((any(E != F) && all_eq4(E, C, I, D, Q) && all_eq2(F, B, H)) && (any(F != src(srcX + 3, srcY)))) K = M = F;\n\t\tif ((any(E != D) && all_eq4(E, A, G, F, R) && all_eq2(D, B, H)) && (any(D != src(srcX - 3, srcY)))) J = L = D;\n\t\tif ((any(E != H) && all_eq4(E, G, I, B, P) && all_eq2(H, D, F)) && (any(H != src(srcX, srcY + 3)))) L = M = H;\n\t\tif ((any(E != B) && all_eq4(E, A, C, H, S) && all_eq2(B, D, F)) && (any(B != src(srcX, srcY - 3)))) J = K = B;\n\t\tif (Bl < El && all_eq4(E, G, H, I, S) && none_eq4(E, A, D, C, F)) J = K = B;\n\t\tif (Hl < El && all_eq4(E, A, B, C, P) && none_eq4(E, D, G, I, F)) L = M = H;\n\t\tif (Fl < El && all_eq4(E, A, D, G, Q) && none_eq4(E, B, C, I, H)) K = M = F;\n\t\tif (Dl < El && all_eq4(E, C, F, I, R) && none_eq4(E, B, A, G, H)) J = L = D;\n\n\t\t// 2:1 slope rules\n\t\tif (any(H != B)) {\n\t\t\tif (any(H != A) && any(H != E) && any(H != C)) {\n\t\t\t\tif (all_eq3(H, G, F, R) && none_eq2(H, D, src(srcX + 2, srcY - 1))) L = M;\n\t\t\t\tif (all_eq3(H, I, D, Q) && none_eq2(H, F, src(srcX - 2, srcY - 1))) M = L;\n\t\t\t}\n\n\t\t\tif (any(B != I) && any(B != G) && any(B != E)) {\n\t\t\t\tif (all_eq3(B, A, F, R) && none_eq2(B, D, src(srcX + 2, srcY + 1))) J = K;\n\t\t\t\tif (all_eq3(B, C, D, Q) && none_eq2(B, F, src(srcX - 2, srcY + 1))) K = J;\n\t\t\t}\n\t\t} // H !== B\n\n\t\tif (any(F != D)) {\n\t\t\tif (any(D != I) && any(D != E) && any(D != C)) {\n\t\t\t\tif (all_eq3(D, A, H, S) && none_eq2(D, B, src(srcX + 1, srcY + 2))) J = L;\n\t\t\t\tif (all_eq3(D, G, B, P) && none_eq2(D, H, src(srcX + 1, srcY - 2))) L = J;\n\t\t\t}\n\n\t\t\tif (any(F != E) && any(F != A) && any(F != G)) {\n\t\t\t\tif (all_eq3(F, C, H, S) && none_eq2(F, B, src(srcX - 1, srcY + 2))) K = M;\n\t\t\t\tif (all_eq3(F, I, B, P) && none_eq2(F, H, src(srcX - 1, srcY - 2))) M = K;\n\t\t\t}\n\t\t} // F !== D\n\t} // not constant\n\n\t// Write four pixels at once\n\tOUTPUT[gxy] = float4(J, 1);\n\n\t++gxy.x;\n\tOUTPUT[gxy] = float4(K, 1);\n\n\t++gxy.y;\n\tOUTPUT[gxy] = float4(M, 1);\n\n\t--gxy.x;\n\tOUTPUT[gxy] = float4(L, 1);\n}\n"
  },
  {
    "path": "src/Effects/Pixel Art/Pixellate.hlsl",
    "content": "// 移植自 https://github.com/libretro/common-shaders/blob/master/interpolation/shaders/pixellate.cg\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\n\nfloat4 Pass1(float2 pos) {\n\tfloat2 texelSize = GetInputPt();\n\n\tfloat2 range = GetOutputPt() / 2.0f * 0.999f;\n\n\tfloat left = pos.x - range.x;\n\tfloat top = pos.y + range.y;\n\tfloat right = pos.x + range.x;\n\tfloat bottom = pos.y - range.y;\n\n\tfloat3 topLeftColor = INPUT.SampleLevel(sam, (floor(float2(left, top) / texelSize) + 0.5) * texelSize, 0).rgb;\n\tfloat3 bottomRightColor = INPUT.SampleLevel(sam, (floor(float2(right, bottom) / texelSize) + 0.5) * texelSize, 0).rgb;\n\tfloat3 bottomLeftColor = INPUT.SampleLevel(sam, (floor(float2(left, bottom) / texelSize) + 0.5) * texelSize, 0).rgb;\n\tfloat3 topRightColor = INPUT.SampleLevel(sam, (floor(float2(right, top) / texelSize) + 0.5) * texelSize, 0).rgb;\n\n\tfloat2 border = clamp(round(pos / texelSize) * texelSize, float2(left, bottom), float2(right, top));\n\n\tfloat totalArea = 4.0 * range.x * range.y;\n\n\tfloat3 averageColor;\n\taverageColor = ((border.x - left) * (top - border.y) / totalArea) * topLeftColor;\n\taverageColor += ((right - border.x) * (border.y - bottom) / totalArea) * bottomRightColor;\n\taverageColor += ((border.x - left) * (border.y - bottom) / totalArea) * bottomLeftColor;\n\taverageColor += ((right - border.x) * (top - border.y) / totalArea) * topRightColor;\n\n\treturn float4(averageColor, 1.0);\n}\n"
  },
  {
    "path": "src/Effects/Pixel Art/SharpBilinear.hlsl",
    "content": "// 移植自 https://github.com/libretro/common-shaders/blob/master/interpolation/shaders/sharp-bilinear.cg\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\n\n// sharp-bilinear 使用双线性插值\nSamplerState sam;\n\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\n\nfloat4 Pass1(float2 pos) {\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 scale = GetScale();\n\n\tfloat2 texel = pos * GetInputSize();\n//   float2 texel_floored = floor(texel);\n//   float scale = (AUTO_PRESCALE > 0.5) ? floor(output_size.y / video_size.y) : SHARP_BILINEAR_PRE_SCALE;\n\tfloat2 texel_floored = floor(texel);\n\tfloat2 s = frac(texel);\n\tfloat2 region_range = 0.5 - 0.5 / scale;\n\n\t// Figure out where in the texel to sample to get correct pre-scaled bilinear.\n\t// Uses the hardware bilinear interpolator to avoid having to sample 4 times manually.\n\n\tfloat2 center_dist = s - 0.5;\n\tfloat2 f = (center_dist - clamp(center_dist, -region_range, region_range)) * scale + 0.5;\n\n\tfloat2 mod_texel = texel_floored + f;\n\treturn INPUT.SampleLevel(sam, mod_texel * inputPt, 0);\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_3x_R2.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-3x.py --target luma --weights-file weights\\ravu-3x_weights-r2.py --float-format float16dx --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 3\n//!HEIGHT INPUT_HEIGHT * 3\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_3x_lut2_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_3x_lut2;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_3x_lut2;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-3x (luma, r2)\n//!IN INPUT, ravu_3x_lut2\n//!OUT OUTPUT\n//!BLOCK_SIZE 96, 24\n//!NUM_THREADS 32, 8\nshared float inp[340];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_3x_lut2_tex(pos) (vec4(texture(ravu_3x_lut2, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 10 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 340; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 10, y = (uint)id % 10;\n\t\tinp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-0.5), float(group_base.y + y) + (-0.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 3;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tfloat luma0 = inp[local_pos + 0];\n\tfloat luma1 = inp[local_pos + 1];\n\tfloat luma2 = inp[local_pos + 2];\n\tfloat luma3 = inp[local_pos + 10];\n\tfloat luma4 = inp[local_pos + 11];\n\tfloat luma5 = inp[local_pos + 12];\n\tfloat luma6 = inp[local_pos + 20];\n\tfloat luma7 = inp[local_pos + 21];\n\tfloat luma8 = inp[local_pos + 22];\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (luma3 - luma0);\n\tgy = (luma1 - luma0);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (luma4 - luma1);\n\tgy = (luma2 - luma0) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma5 - luma2);\n\tgy = (luma2 - luma1);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (luma6 - luma0) / 2.0;\n\tgy = (luma4 - luma3);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma7 - luma1) / 2.0;\n\tgy = (luma5 - luma3) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.13080118386382833;\n\tgx = (luma8 - luma2) / 2.0;\n\tgy = (luma5 - luma4);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma6 - luma3);\n\tgy = (luma7 - luma6);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (luma7 - luma4);\n\tgy = (luma8 - luma6) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma8 - luma5);\n\tgy = (luma8 - luma7);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.005), 2.0, lambda >= 0.02);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 3.0 + strength) * 3.0 + coherence + 0.5) / 216.0;\n\tvec4 res0 = vec4(0.0, 0.0, 0.0, 0.0), res1 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 w0, w1;\n\tw0 = texture(ravu_3x_lut2, vec2(0.05, coord_y));\n\tw1 = texture(ravu_3x_lut2, vec2(0.15, coord_y));\n\tres0 += luma0 * w0 + luma8 * w1.wzyx;\n\tres1 += luma0 * w1 + luma8 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut2, vec2(0.25, coord_y));\n\tw1 = texture(ravu_3x_lut2, vec2(0.35, coord_y));\n\tres0 += luma1 * w0 + luma7 * w1.wzyx;\n\tres1 += luma1 * w1 + luma7 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut2, vec2(0.45, coord_y));\n\tw1 = texture(ravu_3x_lut2, vec2(0.55, coord_y));\n\tres0 += luma2 * w0 + luma6 * w1.wzyx;\n\tres1 += luma2 * w1 + luma6 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut2, vec2(0.65, coord_y));\n\tw1 = texture(ravu_3x_lut2, vec2(0.75, coord_y));\n\tres0 += luma3 * w0 + luma5 * w1.wzyx;\n\tres1 += luma3 * w1 + luma5 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut2, vec2(0.85, coord_y));\n\tw1 = texture(ravu_3x_lut2, vec2(0.95, coord_y));\n\tres0 += luma4 * w0;\n\tres1 += luma4 * w1;\n\tres0 = clamp(res0, 0.0, 1.0);\n\tres1 = clamp(res1, 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 0), res0[0]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 1), res0[1]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 2), res0[2]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 0), res0[3]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 1), luma4);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 2), res1[0]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 0), res1[1]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 1), res1[2]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 2), res1[3]);\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_3x_R2_RGB.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-3x.py --target rgb --weights-file weights\\ravu-3x_weights-r2.py --float-format float16dx --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 3\n//!HEIGHT INPUT_HEIGHT * 3\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!SOURCE ravu_3x_lut2_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_3x_lut2;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_3x_lut2;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-3x (rgb, r2)\n//!IN INPUT, ravu_3x_lut2\n//!OUT OUTPUT\n//!BLOCK_SIZE 96, 24\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\n// HLSL doesn't have outerProduct\nfloat4x3 outerProduct(float3 l, float4 r) { return mul(float4x1(r), float1x3(l)); }\nshared vec3 inp[340];\nshared float inp_luma[340];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val)\nvoid imageStoreOverride(uint2 pos, float4 value) { OUTPUT[pos] = value; }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_3x_lut2_tex(pos) (vec4(texture(ravu_3x_lut2, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 10 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 340; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 10, y = (uint)id % 10;\n\t\tinp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-0.5), float(group_base.y + y) + (-0.5))).xyz;\n\t\tinp_luma[id] = dot(inp[id], color_primary);\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 3;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tfloat luma0 = inp_luma[local_pos + 0];\n\tfloat luma1 = inp_luma[local_pos + 1];\n\tfloat luma2 = inp_luma[local_pos + 2];\n\tfloat luma3 = inp_luma[local_pos + 10];\n\tfloat luma4 = inp_luma[local_pos + 11];\n\tfloat luma5 = inp_luma[local_pos + 12];\n\tfloat luma6 = inp_luma[local_pos + 20];\n\tfloat luma7 = inp_luma[local_pos + 21];\n\tfloat luma8 = inp_luma[local_pos + 22];\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (luma3 - luma0);\n\tgy = (luma1 - luma0);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (luma4 - luma1);\n\tgy = (luma2 - luma0) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma5 - luma2);\n\tgy = (luma2 - luma1);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (luma6 - luma0) / 2.0;\n\tgy = (luma4 - luma3);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma7 - luma1) / 2.0;\n\tgy = (luma5 - luma3) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.13080118386382833;\n\tgx = (luma8 - luma2) / 2.0;\n\tgy = (luma5 - luma4);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma6 - luma3);\n\tgy = (luma7 - luma6);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (luma7 - luma4);\n\tgy = (luma8 - luma6) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma8 - luma5);\n\tgy = (luma8 - luma7);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.005), 2.0, lambda >= 0.02);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 3.0 + strength) * 3.0 + coherence + 0.5) / 216.0;\n\tmat4x3 res0 = 0.0, res1 = 0.0;\n\tvec4 w0, w1;\n\tw0 = texture(ravu_3x_lut2, vec2(0.05, coord_y));\n\tw1 = texture(ravu_3x_lut2, vec2(0.15, coord_y));\n\tres0 += outerProduct(inp[local_pos + 0], w0) + outerProduct(inp[local_pos + 22], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 0], w1) + outerProduct(inp[local_pos + 22], w0.wzyx);\n\tw0 = texture(ravu_3x_lut2, vec2(0.25, coord_y));\n\tw1 = texture(ravu_3x_lut2, vec2(0.35, coord_y));\n\tres0 += outerProduct(inp[local_pos + 1], w0) + outerProduct(inp[local_pos + 21], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 1], w1) + outerProduct(inp[local_pos + 21], w0.wzyx);\n\tw0 = texture(ravu_3x_lut2, vec2(0.45, coord_y));\n\tw1 = texture(ravu_3x_lut2, vec2(0.55, coord_y));\n\tres0 += outerProduct(inp[local_pos + 2], w0) + outerProduct(inp[local_pos + 20], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 2], w1) + outerProduct(inp[local_pos + 20], w0.wzyx);\n\tw0 = texture(ravu_3x_lut2, vec2(0.65, coord_y));\n\tw1 = texture(ravu_3x_lut2, vec2(0.75, coord_y));\n\tres0 += outerProduct(inp[local_pos + 10], w0) + outerProduct(inp[local_pos + 12], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 10], w1) + outerProduct(inp[local_pos + 12], w0.wzyx);\n\tw0 = texture(ravu_3x_lut2, vec2(0.85, coord_y));\n\tw1 = texture(ravu_3x_lut2, vec2(0.95, coord_y));\n\tres0 += outerProduct(inp[local_pos + 11], w0);\n\tres1 += outerProduct(inp[local_pos + 11], w1);\n\tres0[0] = clamp(res0[0], 0.0, 1.0);\n\tres0[1] = clamp(res0[1], 0.0, 1.0);\n\tres0[2] = clamp(res0[2], 0.0, 1.0);\n\tres0[3] = clamp(res0[3], 0.0, 1.0);\n\tres1[0] = clamp(res1[0], 0.0, 1.0);\n\tres1[1] = clamp(res1[1], 0.0, 1.0);\n\tres1[2] = clamp(res1[2], 0.0, 1.0);\n\tres1[3] = clamp(res1[3], 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 0), vec4(res0[0], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 1), vec4(res0[1], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 2), vec4(res0[2], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 0), vec4(res0[3], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 1), vec4(inp[local_pos + 11], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 2), vec4(res1[0], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 0), vec4(res1[1], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 1), vec4(res1[2], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 2), vec4(res1[3], 1.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_3x_R3.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-3x.py --target luma --weights-file weights\\ravu-3x_weights-r3.py --float-format float16dx --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 3\n//!HEIGHT INPUT_HEIGHT * 3\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_3x_lut3_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_3x_lut3;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_3x_lut3;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-3x (luma, r3)\n//!IN INPUT, ravu_3x_lut3\n//!OUT OUTPUT\n//!BLOCK_SIZE 96, 24\n//!NUM_THREADS 32, 8\nshared float inp[432];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_3x_lut3_tex(pos) (vec4(texture(ravu_3x_lut3, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 12 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 432; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 12, y = (uint)id % 12;\n\t\tinp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-1.5), float(group_base.y + y) + (-1.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 3;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tfloat luma0 = inp[local_pos + 0];\n\tfloat luma1 = inp[local_pos + 1];\n\tfloat luma2 = inp[local_pos + 2];\n\tfloat luma3 = inp[local_pos + 3];\n\tfloat luma4 = inp[local_pos + 4];\n\tfloat luma5 = inp[local_pos + 12];\n\tfloat luma6 = inp[local_pos + 13];\n\tfloat luma7 = inp[local_pos + 14];\n\tfloat luma8 = inp[local_pos + 15];\n\tfloat luma9 = inp[local_pos + 16];\n\tfloat luma10 = inp[local_pos + 24];\n\tfloat luma11 = inp[local_pos + 25];\n\tfloat luma12 = inp[local_pos + 26];\n\tfloat luma13 = inp[local_pos + 27];\n\tfloat luma14 = inp[local_pos + 28];\n\tfloat luma15 = inp[local_pos + 36];\n\tfloat luma16 = inp[local_pos + 37];\n\tfloat luma17 = inp[local_pos + 38];\n\tfloat luma18 = inp[local_pos + 39];\n\tfloat luma19 = inp[local_pos + 40];\n\tfloat luma20 = inp[local_pos + 48];\n\tfloat luma21 = inp[local_pos + 49];\n\tfloat luma22 = inp[local_pos + 50];\n\tfloat luma23 = inp[local_pos + 51];\n\tfloat luma24 = inp[local_pos + 52];\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (luma11 - luma1) / 2.0;\n\tgy = (luma7 - luma5) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (luma12 - luma2) / 2.0;\n\tgy = (luma8 - luma6) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma13 - luma3) / 2.0;\n\tgy = (luma9 - luma7) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (luma16 - luma6) / 2.0;\n\tgy = (luma12 - luma10) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma17 - luma7) / 2.0;\n\tgy = (luma13 - luma11) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.13080118386382833;\n\tgx = (luma18 - luma8) / 2.0;\n\tgy = (luma14 - luma12) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma21 - luma11) / 2.0;\n\tgy = (luma17 - luma15) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (luma22 - luma12) / 2.0;\n\tgy = (luma18 - luma16) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma23 - luma13) / 2.0;\n\tgy = (luma19 - luma17) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.005), 2.0, lambda >= 0.02);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 3.0 + strength) * 3.0 + coherence + 0.5) / 216.0;\n\tvec4 res0 = vec4(0.0, 0.0, 0.0, 0.0), res1 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 w0, w1;\n\tw0 = texture(ravu_3x_lut3, vec2(0.019230769230769232, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.057692307692307696, coord_y));\n\tres0 += luma0 * w0 + luma24 * w1.wzyx;\n\tres1 += luma0 * w1 + luma24 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut3, vec2(0.09615384615384616, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.1346153846153846, coord_y));\n\tres0 += luma1 * w0 + luma23 * w1.wzyx;\n\tres1 += luma1 * w1 + luma23 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut3, vec2(0.17307692307692307, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.21153846153846154, coord_y));\n\tres0 += luma2 * w0 + luma22 * w1.wzyx;\n\tres1 += luma2 * w1 + luma22 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut3, vec2(0.25, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.28846153846153844, coord_y));\n\tres0 += luma3 * w0 + luma21 * w1.wzyx;\n\tres1 += luma3 * w1 + luma21 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut3, vec2(0.3269230769230769, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.36538461538461536, coord_y));\n\tres0 += luma4 * w0 + luma20 * w1.wzyx;\n\tres1 += luma4 * w1 + luma20 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut3, vec2(0.40384615384615385, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.4423076923076923, coord_y));\n\tres0 += luma5 * w0 + luma19 * w1.wzyx;\n\tres1 += luma5 * w1 + luma19 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut3, vec2(0.4807692307692308, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.5192307692307693, coord_y));\n\tres0 += luma6 * w0 + luma18 * w1.wzyx;\n\tres1 += luma6 * w1 + luma18 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut3, vec2(0.5576923076923077, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.5961538461538461, coord_y));\n\tres0 += luma7 * w0 + luma17 * w1.wzyx;\n\tres1 += luma7 * w1 + luma17 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut3, vec2(0.6346153846153846, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.6730769230769231, coord_y));\n\tres0 += luma8 * w0 + luma16 * w1.wzyx;\n\tres1 += luma8 * w1 + luma16 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut3, vec2(0.7115384615384616, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.75, coord_y));\n\tres0 += luma9 * w0 + luma15 * w1.wzyx;\n\tres1 += luma9 * w1 + luma15 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut3, vec2(0.7884615384615384, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.8269230769230769, coord_y));\n\tres0 += luma10 * w0 + luma14 * w1.wzyx;\n\tres1 += luma10 * w1 + luma14 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut3, vec2(0.8653846153846154, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.9038461538461539, coord_y));\n\tres0 += luma11 * w0 + luma13 * w1.wzyx;\n\tres1 += luma11 * w1 + luma13 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut3, vec2(0.9423076923076923, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.9807692307692307, coord_y));\n\tres0 += luma12 * w0;\n\tres1 += luma12 * w1;\n\tres0 = clamp(res0, 0.0, 1.0);\n\tres1 = clamp(res1, 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 0), res0[0]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 1), res0[1]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 2), res0[2]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 0), res0[3]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 1), luma12);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 2), res1[0]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 0), res1[1]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 1), res1[2]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 2), res1[3]);\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_3x_R3_RGB.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-3x.py --target rgb --weights-file weights\\ravu-3x_weights-r3.py --float-format float16dx --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 3\n//!HEIGHT INPUT_HEIGHT * 3\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!SOURCE ravu_3x_lut3_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_3x_lut3;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_3x_lut3;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-3x (rgb, r3)\n//!IN INPUT, ravu_3x_lut3\n//!OUT OUTPUT\n//!BLOCK_SIZE 96, 24\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\n// HLSL doesn't have outerProduct\nfloat4x3 outerProduct(float3 l, float4 r) { return mul(float4x1(r), float1x3(l)); }\nshared vec3 inp[432];\nshared float inp_luma[432];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val)\nvoid imageStoreOverride(uint2 pos, float4 value) { OUTPUT[pos] = value; }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_3x_lut3_tex(pos) (vec4(texture(ravu_3x_lut3, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 12 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 432; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 12, y = (uint)id % 12;\n\t\tinp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-1.5), float(group_base.y + y) + (-1.5))).xyz;\n\t\tinp_luma[id] = dot(inp[id], color_primary);\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 3;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tfloat luma1 = inp_luma[local_pos + 1];\n\tfloat luma2 = inp_luma[local_pos + 2];\n\tfloat luma3 = inp_luma[local_pos + 3];\n\tfloat luma5 = inp_luma[local_pos + 12];\n\tfloat luma6 = inp_luma[local_pos + 13];\n\tfloat luma7 = inp_luma[local_pos + 14];\n\tfloat luma8 = inp_luma[local_pos + 15];\n\tfloat luma9 = inp_luma[local_pos + 16];\n\tfloat luma10 = inp_luma[local_pos + 24];\n\tfloat luma11 = inp_luma[local_pos + 25];\n\tfloat luma12 = inp_luma[local_pos + 26];\n\tfloat luma13 = inp_luma[local_pos + 27];\n\tfloat luma14 = inp_luma[local_pos + 28];\n\tfloat luma15 = inp_luma[local_pos + 36];\n\tfloat luma16 = inp_luma[local_pos + 37];\n\tfloat luma17 = inp_luma[local_pos + 38];\n\tfloat luma18 = inp_luma[local_pos + 39];\n\tfloat luma19 = inp_luma[local_pos + 40];\n\tfloat luma21 = inp_luma[local_pos + 49];\n\tfloat luma22 = inp_luma[local_pos + 50];\n\tfloat luma23 = inp_luma[local_pos + 51];\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (luma11 - luma1) / 2.0;\n\tgy = (luma7 - luma5) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (luma12 - luma2) / 2.0;\n\tgy = (luma8 - luma6) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma13 - luma3) / 2.0;\n\tgy = (luma9 - luma7) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (luma16 - luma6) / 2.0;\n\tgy = (luma12 - luma10) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma17 - luma7) / 2.0;\n\tgy = (luma13 - luma11) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.13080118386382833;\n\tgx = (luma18 - luma8) / 2.0;\n\tgy = (luma14 - luma12) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma21 - luma11) / 2.0;\n\tgy = (luma17 - luma15) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (luma22 - luma12) / 2.0;\n\tgy = (luma18 - luma16) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (luma23 - luma13) / 2.0;\n\tgy = (luma19 - luma17) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.005), 2.0, lambda >= 0.02);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 3.0 + strength) * 3.0 + coherence + 0.5) / 216.0;\n\tmat4x3 res0 = 0.0, res1 = 0.0;\n\tvec4 w0, w1;\n\tw0 = texture(ravu_3x_lut3, vec2(0.019230769230769232, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.057692307692307696, coord_y));\n\tres0 += outerProduct(inp[local_pos + 0], w0) + outerProduct(inp[local_pos + 52], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 0], w1) + outerProduct(inp[local_pos + 52], w0.wzyx);\n\tw0 = texture(ravu_3x_lut3, vec2(0.09615384615384616, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.1346153846153846, coord_y));\n\tres0 += outerProduct(inp[local_pos + 1], w0) + outerProduct(inp[local_pos + 51], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 1], w1) + outerProduct(inp[local_pos + 51], w0.wzyx);\n\tw0 = texture(ravu_3x_lut3, vec2(0.17307692307692307, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.21153846153846154, coord_y));\n\tres0 += outerProduct(inp[local_pos + 2], w0) + outerProduct(inp[local_pos + 50], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 2], w1) + outerProduct(inp[local_pos + 50], w0.wzyx);\n\tw0 = texture(ravu_3x_lut3, vec2(0.25, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.28846153846153844, coord_y));\n\tres0 += outerProduct(inp[local_pos + 3], w0) + outerProduct(inp[local_pos + 49], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 3], w1) + outerProduct(inp[local_pos + 49], w0.wzyx);\n\tw0 = texture(ravu_3x_lut3, vec2(0.3269230769230769, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.36538461538461536, coord_y));\n\tres0 += outerProduct(inp[local_pos + 4], w0) + outerProduct(inp[local_pos + 48], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 4], w1) + outerProduct(inp[local_pos + 48], w0.wzyx);\n\tw0 = texture(ravu_3x_lut3, vec2(0.40384615384615385, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.4423076923076923, coord_y));\n\tres0 += outerProduct(inp[local_pos + 12], w0) + outerProduct(inp[local_pos + 40], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 12], w1) + outerProduct(inp[local_pos + 40], w0.wzyx);\n\tw0 = texture(ravu_3x_lut3, vec2(0.4807692307692308, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.5192307692307693, coord_y));\n\tres0 += outerProduct(inp[local_pos + 13], w0) + outerProduct(inp[local_pos + 39], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 13], w1) + outerProduct(inp[local_pos + 39], w0.wzyx);\n\tw0 = texture(ravu_3x_lut3, vec2(0.5576923076923077, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.5961538461538461, coord_y));\n\tres0 += outerProduct(inp[local_pos + 14], w0) + outerProduct(inp[local_pos + 38], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 14], w1) + outerProduct(inp[local_pos + 38], w0.wzyx);\n\tw0 = texture(ravu_3x_lut3, vec2(0.6346153846153846, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.6730769230769231, coord_y));\n\tres0 += outerProduct(inp[local_pos + 15], w0) + outerProduct(inp[local_pos + 37], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 15], w1) + outerProduct(inp[local_pos + 37], w0.wzyx);\n\tw0 = texture(ravu_3x_lut3, vec2(0.7115384615384616, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.75, coord_y));\n\tres0 += outerProduct(inp[local_pos + 16], w0) + outerProduct(inp[local_pos + 36], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 16], w1) + outerProduct(inp[local_pos + 36], w0.wzyx);\n\tw0 = texture(ravu_3x_lut3, vec2(0.7884615384615384, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.8269230769230769, coord_y));\n\tres0 += outerProduct(inp[local_pos + 24], w0) + outerProduct(inp[local_pos + 28], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 24], w1) + outerProduct(inp[local_pos + 28], w0.wzyx);\n\tw0 = texture(ravu_3x_lut3, vec2(0.8653846153846154, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.9038461538461539, coord_y));\n\tres0 += outerProduct(inp[local_pos + 25], w0) + outerProduct(inp[local_pos + 27], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 25], w1) + outerProduct(inp[local_pos + 27], w0.wzyx);\n\tw0 = texture(ravu_3x_lut3, vec2(0.9423076923076923, coord_y));\n\tw1 = texture(ravu_3x_lut3, vec2(0.9807692307692307, coord_y));\n\tres0 += outerProduct(inp[local_pos + 26], w0);\n\tres1 += outerProduct(inp[local_pos + 26], w1);\n\tres0[0] = clamp(res0[0], 0.0, 1.0);\n\tres0[1] = clamp(res0[1], 0.0, 1.0);\n\tres0[2] = clamp(res0[2], 0.0, 1.0);\n\tres0[3] = clamp(res0[3], 0.0, 1.0);\n\tres1[0] = clamp(res1[0], 0.0, 1.0);\n\tres1[1] = clamp(res1[1], 0.0, 1.0);\n\tres1[2] = clamp(res1[2], 0.0, 1.0);\n\tres1[3] = clamp(res1[3], 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 0), vec4(res0[0], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 1), vec4(res0[1], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 2), vec4(res0[2], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 0), vec4(res0[3], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 1), vec4(inp[local_pos + 26], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 2), vec4(res1[0], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 0), vec4(res1[1], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 1), vec4(res1[2], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 2), vec4(res1[3], 1.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_3x_R4.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-3x.py --target luma --weights-file weights\\ravu-3x_weights-r4.py --float-format float16dx --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 3\n//!HEIGHT INPUT_HEIGHT * 3\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_3x_lut4_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_3x_lut4;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_3x_lut4;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-3x (luma, r4)\n//!IN INPUT, ravu_3x_lut4\n//!OUT OUTPUT\n//!BLOCK_SIZE 96, 24\n//!NUM_THREADS 32, 8\nshared float inp[532];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_3x_lut4_tex(pos) (vec4(texture(ravu_3x_lut4, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 14 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 532; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 14, y = (uint)id % 14;\n\t\tinp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-2.5), float(group_base.y + y) + (-2.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 3;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tfloat luma0 = inp[local_pos + 0];\n\tfloat luma1 = inp[local_pos + 1];\n\tfloat luma2 = inp[local_pos + 2];\n\tfloat luma3 = inp[local_pos + 3];\n\tfloat luma4 = inp[local_pos + 4];\n\tfloat luma5 = inp[local_pos + 5];\n\tfloat luma6 = inp[local_pos + 6];\n\tfloat luma7 = inp[local_pos + 14];\n\tfloat luma8 = inp[local_pos + 15];\n\tfloat luma9 = inp[local_pos + 16];\n\tfloat luma10 = inp[local_pos + 17];\n\tfloat luma11 = inp[local_pos + 18];\n\tfloat luma12 = inp[local_pos + 19];\n\tfloat luma13 = inp[local_pos + 20];\n\tfloat luma14 = inp[local_pos + 28];\n\tfloat luma15 = inp[local_pos + 29];\n\tfloat luma16 = inp[local_pos + 30];\n\tfloat luma17 = inp[local_pos + 31];\n\tfloat luma18 = inp[local_pos + 32];\n\tfloat luma19 = inp[local_pos + 33];\n\tfloat luma20 = inp[local_pos + 34];\n\tfloat luma21 = inp[local_pos + 42];\n\tfloat luma22 = inp[local_pos + 43];\n\tfloat luma23 = inp[local_pos + 44];\n\tfloat luma24 = inp[local_pos + 45];\n\tfloat luma25 = inp[local_pos + 46];\n\tfloat luma26 = inp[local_pos + 47];\n\tfloat luma27 = inp[local_pos + 48];\n\tfloat luma28 = inp[local_pos + 56];\n\tfloat luma29 = inp[local_pos + 57];\n\tfloat luma30 = inp[local_pos + 58];\n\tfloat luma31 = inp[local_pos + 59];\n\tfloat luma32 = inp[local_pos + 60];\n\tfloat luma33 = inp[local_pos + 61];\n\tfloat luma34 = inp[local_pos + 62];\n\tfloat luma35 = inp[local_pos + 70];\n\tfloat luma36 = inp[local_pos + 71];\n\tfloat luma37 = inp[local_pos + 72];\n\tfloat luma38 = inp[local_pos + 73];\n\tfloat luma39 = inp[local_pos + 74];\n\tfloat luma40 = inp[local_pos + 75];\n\tfloat luma41 = inp[local_pos + 76];\n\tfloat luma42 = inp[local_pos + 84];\n\tfloat luma43 = inp[local_pos + 85];\n\tfloat luma44 = inp[local_pos + 86];\n\tfloat luma45 = inp[local_pos + 87];\n\tfloat luma46 = inp[local_pos + 88];\n\tfloat luma47 = inp[local_pos + 89];\n\tfloat luma48 = inp[local_pos + 90];\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (luma15 - luma1) / 2.0;\n\tgy = (luma9 - luma7) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tgx = (luma16 - luma2) / 2.0;\n\tgy = (luma10 - luma8) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma17 - luma3) / 2.0;\n\tgy = (luma11 - luma9) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (luma18 - luma4) / 2.0;\n\tgy = (luma12 - luma10) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma19 - luma5) / 2.0;\n\tgy = (luma13 - luma11) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tgx = (luma22 - luma8) / 2.0;\n\tgy = (luma16 - luma14) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma23 - luma9) / 2.0;\n\tgy = (luma17 - luma15) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (luma24 - luma10) / 2.0;\n\tgy = (luma18 - luma16) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (luma25 - luma11) / 2.0;\n\tgy = (luma19 - luma17) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (luma26 - luma12) / 2.0;\n\tgy = (luma20 - luma18) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma29 - luma15) / 2.0;\n\tgy = (luma23 - luma21) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (luma30 - luma16) / 2.0;\n\tgy = (luma24 - luma22) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (luma31 - luma17) / 2.0;\n\tgy = (luma25 - luma23) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06319146241026467;\n\tgx = (luma32 - luma18) / 2.0;\n\tgy = (luma26 - luma24) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (luma33 - luma19) / 2.0;\n\tgy = (luma27 - luma25) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (luma36 - luma22) / 2.0;\n\tgy = (luma30 - luma28) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma37 - luma23) / 2.0;\n\tgy = (luma31 - luma29) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (luma38 - luma24) / 2.0;\n\tgy = (luma32 - luma30) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (luma39 - luma25) / 2.0;\n\tgy = (luma33 - luma31) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (luma40 - luma26) / 2.0;\n\tgy = (luma34 - luma32) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma43 - luma29) / 2.0;\n\tgy = (luma37 - luma35) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tgx = (luma44 - luma30) / 2.0;\n\tgy = (luma38 - luma36) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma45 - luma31) / 2.0;\n\tgy = (luma39 - luma37) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (luma46 - luma32) / 2.0;\n\tgy = (luma40 - luma38) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma47 - luma33) / 2.0;\n\tgy = (luma41 - luma39) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.005), 2.0, lambda >= 0.02);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 3.0 + strength) * 3.0 + coherence + 0.5) / 216.0;\n\tvec4 res0 = vec4(0.0, 0.0, 0.0, 0.0), res1 = vec4(0.0, 0.0, 0.0, 0.0);\n\tvec4 w0, w1;\n\tw0 = texture(ravu_3x_lut4, vec2(0.01, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.03, coord_y));\n\tres0 += luma0 * w0 + luma48 * w1.wzyx;\n\tres1 += luma0 * w1 + luma48 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.05, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.07, coord_y));\n\tres0 += luma1 * w0 + luma47 * w1.wzyx;\n\tres1 += luma1 * w1 + luma47 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.09, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.11, coord_y));\n\tres0 += luma2 * w0 + luma46 * w1.wzyx;\n\tres1 += luma2 * w1 + luma46 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.13, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.15, coord_y));\n\tres0 += luma3 * w0 + luma45 * w1.wzyx;\n\tres1 += luma3 * w1 + luma45 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.17, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.19, coord_y));\n\tres0 += luma4 * w0 + luma44 * w1.wzyx;\n\tres1 += luma4 * w1 + luma44 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.21, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.23, coord_y));\n\tres0 += luma5 * w0 + luma43 * w1.wzyx;\n\tres1 += luma5 * w1 + luma43 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.25, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.27, coord_y));\n\tres0 += luma6 * w0 + luma42 * w1.wzyx;\n\tres1 += luma6 * w1 + luma42 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.29, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.31, coord_y));\n\tres0 += luma7 * w0 + luma41 * w1.wzyx;\n\tres1 += luma7 * w1 + luma41 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.33, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.35, coord_y));\n\tres0 += luma8 * w0 + luma40 * w1.wzyx;\n\tres1 += luma8 * w1 + luma40 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.37, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.39, coord_y));\n\tres0 += luma9 * w0 + luma39 * w1.wzyx;\n\tres1 += luma9 * w1 + luma39 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.41, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.43, coord_y));\n\tres0 += luma10 * w0 + luma38 * w1.wzyx;\n\tres1 += luma10 * w1 + luma38 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.45, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.47, coord_y));\n\tres0 += luma11 * w0 + luma37 * w1.wzyx;\n\tres1 += luma11 * w1 + luma37 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.49, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.51, coord_y));\n\tres0 += luma12 * w0 + luma36 * w1.wzyx;\n\tres1 += luma12 * w1 + luma36 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.53, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.55, coord_y));\n\tres0 += luma13 * w0 + luma35 * w1.wzyx;\n\tres1 += luma13 * w1 + luma35 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.57, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.59, coord_y));\n\tres0 += luma14 * w0 + luma34 * w1.wzyx;\n\tres1 += luma14 * w1 + luma34 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.61, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.63, coord_y));\n\tres0 += luma15 * w0 + luma33 * w1.wzyx;\n\tres1 += luma15 * w1 + luma33 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.65, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.67, coord_y));\n\tres0 += luma16 * w0 + luma32 * w1.wzyx;\n\tres1 += luma16 * w1 + luma32 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.69, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.71, coord_y));\n\tres0 += luma17 * w0 + luma31 * w1.wzyx;\n\tres1 += luma17 * w1 + luma31 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.73, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.75, coord_y));\n\tres0 += luma18 * w0 + luma30 * w1.wzyx;\n\tres1 += luma18 * w1 + luma30 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.77, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.79, coord_y));\n\tres0 += luma19 * w0 + luma29 * w1.wzyx;\n\tres1 += luma19 * w1 + luma29 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.81, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.83, coord_y));\n\tres0 += luma20 * w0 + luma28 * w1.wzyx;\n\tres1 += luma20 * w1 + luma28 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.85, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.87, coord_y));\n\tres0 += luma21 * w0 + luma27 * w1.wzyx;\n\tres1 += luma21 * w1 + luma27 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.89, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.91, coord_y));\n\tres0 += luma22 * w0 + luma26 * w1.wzyx;\n\tres1 += luma22 * w1 + luma26 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.93, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.95, coord_y));\n\tres0 += luma23 * w0 + luma25 * w1.wzyx;\n\tres1 += luma23 * w1 + luma25 * w0.wzyx;\n\tw0 = texture(ravu_3x_lut4, vec2(0.97, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.99, coord_y));\n\tres0 += luma24 * w0;\n\tres1 += luma24 * w1;\n\tres0 = clamp(res0, 0.0, 1.0);\n\tres1 = clamp(res1, 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 0), res0[0]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 1), res0[1]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 2), res0[2]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 0), res0[3]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 1), luma24);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 2), res1[0]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 0), res1[1]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 1), res1[2]);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 2), res1[3]);\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_3x_R4_RGB.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-3x.py --target rgb --weights-file weights\\ravu-3x_weights-r4.py --float-format float16dx --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 3\n//!HEIGHT INPUT_HEIGHT * 3\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!SOURCE ravu_3x_lut4_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_3x_lut4;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_3x_lut4;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-3x (rgb, r4)\n//!IN INPUT, ravu_3x_lut4\n//!OUT OUTPUT\n//!BLOCK_SIZE 96, 24\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\n// HLSL doesn't have outerProduct\nfloat4x3 outerProduct(float3 l, float4 r) { return mul(float4x1(r), float1x3(l)); }\nshared vec3 inp[532];\nshared float inp_luma[532];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val)\nvoid imageStoreOverride(uint2 pos, float4 value) { OUTPUT[pos] = value; }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_3x_lut4_tex(pos) (vec4(texture(ravu_3x_lut4, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 14 + int(gl_LocalInvocationID.y);\n\tfor (int id = int(gl_LocalInvocationIndex); id < 532; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 14, y = (uint)id % 14;\n\t\tinp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-2.5), float(group_base.y + y) + (-2.5))).xyz;\n\t\tinp_luma[id] = dot(inp[id], color_primary);\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 3;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tfloat luma1 = inp_luma[local_pos + 1];\n\tfloat luma2 = inp_luma[local_pos + 2];\n\tfloat luma3 = inp_luma[local_pos + 3];\n\tfloat luma4 = inp_luma[local_pos + 4];\n\tfloat luma5 = inp_luma[local_pos + 5];\n\tfloat luma7 = inp_luma[local_pos + 14];\n\tfloat luma8 = inp_luma[local_pos + 15];\n\tfloat luma9 = inp_luma[local_pos + 16];\n\tfloat luma10 = inp_luma[local_pos + 17];\n\tfloat luma11 = inp_luma[local_pos + 18];\n\tfloat luma12 = inp_luma[local_pos + 19];\n\tfloat luma13 = inp_luma[local_pos + 20];\n\tfloat luma14 = inp_luma[local_pos + 28];\n\tfloat luma15 = inp_luma[local_pos + 29];\n\tfloat luma16 = inp_luma[local_pos + 30];\n\tfloat luma17 = inp_luma[local_pos + 31];\n\tfloat luma18 = inp_luma[local_pos + 32];\n\tfloat luma19 = inp_luma[local_pos + 33];\n\tfloat luma20 = inp_luma[local_pos + 34];\n\tfloat luma21 = inp_luma[local_pos + 42];\n\tfloat luma22 = inp_luma[local_pos + 43];\n\tfloat luma23 = inp_luma[local_pos + 44];\n\tfloat luma24 = inp_luma[local_pos + 45];\n\tfloat luma25 = inp_luma[local_pos + 46];\n\tfloat luma26 = inp_luma[local_pos + 47];\n\tfloat luma27 = inp_luma[local_pos + 48];\n\tfloat luma28 = inp_luma[local_pos + 56];\n\tfloat luma29 = inp_luma[local_pos + 57];\n\tfloat luma30 = inp_luma[local_pos + 58];\n\tfloat luma31 = inp_luma[local_pos + 59];\n\tfloat luma32 = inp_luma[local_pos + 60];\n\tfloat luma33 = inp_luma[local_pos + 61];\n\tfloat luma34 = inp_luma[local_pos + 62];\n\tfloat luma35 = inp_luma[local_pos + 70];\n\tfloat luma36 = inp_luma[local_pos + 71];\n\tfloat luma37 = inp_luma[local_pos + 72];\n\tfloat luma38 = inp_luma[local_pos + 73];\n\tfloat luma39 = inp_luma[local_pos + 74];\n\tfloat luma40 = inp_luma[local_pos + 75];\n\tfloat luma41 = inp_luma[local_pos + 76];\n\tfloat luma43 = inp_luma[local_pos + 85];\n\tfloat luma44 = inp_luma[local_pos + 86];\n\tfloat luma45 = inp_luma[local_pos + 87];\n\tfloat luma46 = inp_luma[local_pos + 88];\n\tfloat luma47 = inp_luma[local_pos + 89];\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (luma15 - luma1) / 2.0;\n\tgy = (luma9 - luma7) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tgx = (luma16 - luma2) / 2.0;\n\tgy = (luma10 - luma8) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma17 - luma3) / 2.0;\n\tgy = (luma11 - luma9) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (luma18 - luma4) / 2.0;\n\tgy = (luma12 - luma10) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma19 - luma5) / 2.0;\n\tgy = (luma13 - luma11) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tgx = (luma22 - luma8) / 2.0;\n\tgy = (luma16 - luma14) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma23 - luma9) / 2.0;\n\tgy = (luma17 - luma15) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (luma24 - luma10) / 2.0;\n\tgy = (luma18 - luma16) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (luma25 - luma11) / 2.0;\n\tgy = (luma19 - luma17) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (luma26 - luma12) / 2.0;\n\tgy = (luma20 - luma18) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma29 - luma15) / 2.0;\n\tgy = (luma23 - luma21) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (luma30 - luma16) / 2.0;\n\tgy = (luma24 - luma22) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (luma31 - luma17) / 2.0;\n\tgy = (luma25 - luma23) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06319146241026467;\n\tgx = (luma32 - luma18) / 2.0;\n\tgy = (luma26 - luma24) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (luma33 - luma19) / 2.0;\n\tgy = (luma27 - luma25) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (luma36 - luma22) / 2.0;\n\tgy = (luma30 - luma28) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma37 - luma23) / 2.0;\n\tgy = (luma31 - luma29) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (luma38 - luma24) / 2.0;\n\tgy = (luma32 - luma30) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (luma39 - luma25) / 2.0;\n\tgy = (luma33 - luma31) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (luma40 - luma26) / 2.0;\n\tgy = (luma34 - luma32) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma43 - luma29) / 2.0;\n\tgy = (luma37 - luma35) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tgx = (luma44 - luma30) / 2.0;\n\tgy = (luma38 - luma36) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma45 - luma31) / 2.0;\n\tgy = (luma39 - luma37) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (luma46 - luma32) / 2.0;\n\tgy = (luma40 - luma38) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (luma47 - luma33) / 2.0;\n\tgy = (luma41 - luma39) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.005), 2.0, lambda >= 0.02);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 3.0 + strength) * 3.0 + coherence + 0.5) / 216.0;\n\tmat4x3 res0 = 0.0, res1 = 0.0;\n\tvec4 w0, w1;\n\tw0 = texture(ravu_3x_lut4, vec2(0.01, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.03, coord_y));\n\tres0 += outerProduct(inp[local_pos + 0], w0) + outerProduct(inp[local_pos + 90], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 0], w1) + outerProduct(inp[local_pos + 90], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.05, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.07, coord_y));\n\tres0 += outerProduct(inp[local_pos + 1], w0) + outerProduct(inp[local_pos + 89], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 1], w1) + outerProduct(inp[local_pos + 89], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.09, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.11, coord_y));\n\tres0 += outerProduct(inp[local_pos + 2], w0) + outerProduct(inp[local_pos + 88], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 2], w1) + outerProduct(inp[local_pos + 88], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.13, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.15, coord_y));\n\tres0 += outerProduct(inp[local_pos + 3], w0) + outerProduct(inp[local_pos + 87], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 3], w1) + outerProduct(inp[local_pos + 87], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.17, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.19, coord_y));\n\tres0 += outerProduct(inp[local_pos + 4], w0) + outerProduct(inp[local_pos + 86], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 4], w1) + outerProduct(inp[local_pos + 86], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.21, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.23, coord_y));\n\tres0 += outerProduct(inp[local_pos + 5], w0) + outerProduct(inp[local_pos + 85], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 5], w1) + outerProduct(inp[local_pos + 85], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.25, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.27, coord_y));\n\tres0 += outerProduct(inp[local_pos + 6], w0) + outerProduct(inp[local_pos + 84], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 6], w1) + outerProduct(inp[local_pos + 84], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.29, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.31, coord_y));\n\tres0 += outerProduct(inp[local_pos + 14], w0) + outerProduct(inp[local_pos + 76], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 14], w1) + outerProduct(inp[local_pos + 76], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.33, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.35, coord_y));\n\tres0 += outerProduct(inp[local_pos + 15], w0) + outerProduct(inp[local_pos + 75], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 15], w1) + outerProduct(inp[local_pos + 75], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.37, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.39, coord_y));\n\tres0 += outerProduct(inp[local_pos + 16], w0) + outerProduct(inp[local_pos + 74], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 16], w1) + outerProduct(inp[local_pos + 74], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.41, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.43, coord_y));\n\tres0 += outerProduct(inp[local_pos + 17], w0) + outerProduct(inp[local_pos + 73], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 17], w1) + outerProduct(inp[local_pos + 73], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.45, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.47, coord_y));\n\tres0 += outerProduct(inp[local_pos + 18], w0) + outerProduct(inp[local_pos + 72], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 18], w1) + outerProduct(inp[local_pos + 72], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.49, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.51, coord_y));\n\tres0 += outerProduct(inp[local_pos + 19], w0) + outerProduct(inp[local_pos + 71], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 19], w1) + outerProduct(inp[local_pos + 71], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.53, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.55, coord_y));\n\tres0 += outerProduct(inp[local_pos + 20], w0) + outerProduct(inp[local_pos + 70], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 20], w1) + outerProduct(inp[local_pos + 70], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.57, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.59, coord_y));\n\tres0 += outerProduct(inp[local_pos + 28], w0) + outerProduct(inp[local_pos + 62], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 28], w1) + outerProduct(inp[local_pos + 62], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.61, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.63, coord_y));\n\tres0 += outerProduct(inp[local_pos + 29], w0) + outerProduct(inp[local_pos + 61], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 29], w1) + outerProduct(inp[local_pos + 61], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.65, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.67, coord_y));\n\tres0 += outerProduct(inp[local_pos + 30], w0) + outerProduct(inp[local_pos + 60], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 30], w1) + outerProduct(inp[local_pos + 60], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.69, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.71, coord_y));\n\tres0 += outerProduct(inp[local_pos + 31], w0) + outerProduct(inp[local_pos + 59], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 31], w1) + outerProduct(inp[local_pos + 59], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.73, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.75, coord_y));\n\tres0 += outerProduct(inp[local_pos + 32], w0) + outerProduct(inp[local_pos + 58], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 32], w1) + outerProduct(inp[local_pos + 58], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.77, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.79, coord_y));\n\tres0 += outerProduct(inp[local_pos + 33], w0) + outerProduct(inp[local_pos + 57], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 33], w1) + outerProduct(inp[local_pos + 57], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.81, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.83, coord_y));\n\tres0 += outerProduct(inp[local_pos + 34], w0) + outerProduct(inp[local_pos + 56], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 34], w1) + outerProduct(inp[local_pos + 56], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.85, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.87, coord_y));\n\tres0 += outerProduct(inp[local_pos + 42], w0) + outerProduct(inp[local_pos + 48], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 42], w1) + outerProduct(inp[local_pos + 48], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.89, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.91, coord_y));\n\tres0 += outerProduct(inp[local_pos + 43], w0) + outerProduct(inp[local_pos + 47], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 43], w1) + outerProduct(inp[local_pos + 47], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.93, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.95, coord_y));\n\tres0 += outerProduct(inp[local_pos + 44], w0) + outerProduct(inp[local_pos + 46], w1.wzyx);\n\tres1 += outerProduct(inp[local_pos + 44], w1) + outerProduct(inp[local_pos + 46], w0.wzyx);\n\tw0 = texture(ravu_3x_lut4, vec2(0.97, coord_y));\n\tw1 = texture(ravu_3x_lut4, vec2(0.99, coord_y));\n\tres0 += outerProduct(inp[local_pos + 45], w0);\n\tres1 += outerProduct(inp[local_pos + 45], w1);\n\tres0[0] = clamp(res0[0], 0.0, 1.0);\n\tres0[1] = clamp(res0[1], 0.0, 1.0);\n\tres0[2] = clamp(res0[2], 0.0, 1.0);\n\tres0[3] = clamp(res0[3], 0.0, 1.0);\n\tres1[0] = clamp(res1[0], 0.0, 1.0);\n\tres1[1] = clamp(res1[1], 0.0, 1.0);\n\tres1[2] = clamp(res1[2], 0.0, 1.0);\n\tres1[3] = clamp(res1[3], 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 0), vec4(res0[0], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 1), vec4(res0[1], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(0, 2), vec4(res0[2], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 0), vec4(res0[3], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 1), vec4(inp[local_pos + 45], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(1, 2), vec4(res1[0], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 0), vec4(res1[1], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 1), vec4(res1[2], 1.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 3 + ivec2(2, 2), vec4(res1[3], 1.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Lite_AR_R2.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-lite.py --weights-file weights\\ravu-lite_weights-r2.py --float-format float16dx --use-compute-shader --anti-ringing 0.8 --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_lite_lut2_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_lite_lut2;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_lite_lut2;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Lite-AR (r2, compute)\n//!IN INPUT, ravu_lite_lut2\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 16\n//!NUM_THREADS 32, 8\nshared float inp[340];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lite_lut2_tex(pos) (vec4(texture(ravu_lite_lut2, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 10 + int(gl_LocalInvocationID.y);\n#pragma warning(disable : 3557)\n\tfor (int id = int(gl_LocalInvocationIndex); id < 340; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 10, y = (uint)id % 10;\n\t\tinp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-0.5), float(group_base.y + y) + (-0.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (inp[local_pos + 10] - inp[local_pos + 0]);\n\tgy = (inp[local_pos + 1] - inp[local_pos + 0]);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (inp[local_pos + 11] - inp[local_pos + 1]);\n\tgy = (inp[local_pos + 2] - inp[local_pos + 0]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 12] - inp[local_pos + 2]);\n\tgy = (inp[local_pos + 2] - inp[local_pos + 1]);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (inp[local_pos + 20] - inp[local_pos + 0]) / 2.0;\n\tgy = (inp[local_pos + 11] - inp[local_pos + 10]);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 21] - inp[local_pos + 1]) / 2.0;\n\tgy = (inp[local_pos + 12] - inp[local_pos + 10]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.13080118386382833;\n\tgx = (inp[local_pos + 22] - inp[local_pos + 2]) / 2.0;\n\tgy = (inp[local_pos + 12] - inp[local_pos + 11]);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 20] - inp[local_pos + 10]);\n\tgy = (inp[local_pos + 21] - inp[local_pos + 20]);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (inp[local_pos + 21] - inp[local_pos + 11]);\n\tgy = (inp[local_pos + 22] - inp[local_pos + 20]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 22] - inp[local_pos + 12]);\n\tgy = (inp[local_pos + 22] - inp[local_pos + 21]);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence + 0.5) / 288.0;\n\tvec4 res = vec4(0.0, 0.0, 0.0, 0.0), w;\n\tvec4 lo = vec4(0.0, 0.0, 0.0, 0.0), hi = vec4(0.0, 0.0, 0.0, 0.0), lo2 = vec4(0.0, 0.0, 0.0, 0.0),\n\t\t hi2 = vec4(0.0, 0.0, 0.0, 0.0), wg, cg4, cg4_1;\n\tw = texture(ravu_lite_lut2, vec2(0.1, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 0] * w + inp[local_pos + 22] * w.wzyx;\n\tcg4 =\n\t\tvec4(0.1 + inp[local_pos + 0], 1.1 - inp[local_pos + 0], 0.1 + inp[local_pos + 22], 1.1 - inp[local_pos + 22]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut2, vec2(0.3, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 1] * w + inp[local_pos + 21] * w.wzyx;\n\tcg4 =\n\t\tvec4(0.1 + inp[local_pos + 1], 1.1 - inp[local_pos + 1], 0.1 + inp[local_pos + 21], 1.1 - inp[local_pos + 21]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut2, vec2(0.5, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 2] * w + inp[local_pos + 20] * w.wzyx;\n\tcg4 =\n\t\tvec4(0.1 + inp[local_pos + 2], 1.1 - inp[local_pos + 2], 0.1 + inp[local_pos + 20], 1.1 - inp[local_pos + 20]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut2, vec2(0.7, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 10] * w + inp[local_pos + 12] * w.wzyx;\n\tcg4 = vec4(0.1 + inp[local_pos + 10], 1.1 - inp[local_pos + 10], 0.1 + inp[local_pos + 12],\n\t\t\t   1.1 - inp[local_pos + 12]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut2, vec2(0.9, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 11] * w;\n\tvec2 cg2 = vec2(0.1 + inp[local_pos + 11], 1.1 - inp[local_pos + 11]);\n\tvec2 cg2_1 = cg2;\n\tcg2 *= cg2;\n\tcg2 *= cg2;\n\tcg2 *= cg2;\n\tcg2 *= cg2;\n\tcg2 *= cg2;\n\thi += cg2.x * wg;\n\tlo += cg2.y * wg;\n\tcg2 *= cg2_1;\n\thi2 += cg2.x * wg;\n\tlo2 += cg2.y * wg;\n\tlo = 1.1 - lo2 / lo;\n\thi = hi2 / hi - 0.1;\n\tres = mix(res, clamp(res, lo, hi), 0.800000);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), vec4(res[0], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), vec4(res[1], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), vec4(res[2], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), vec4(res[3], 0.0, 0.0, 0.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Lite_AR_R3.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-lite.py --weights-file weights\\ravu-lite_weights-r3.py --float-format float16dx --use-compute-shader --anti-ringing 0.8 --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_lite_lut3_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_lite_lut3;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_lite_lut3;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Lite-AR (r3, compute)\n//!IN INPUT, ravu_lite_lut3\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 16\n//!NUM_THREADS 32, 8\nshared float inp[432];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lite_lut3_tex(pos) (vec4(texture(ravu_lite_lut3, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 12 + int(gl_LocalInvocationID.y);\n#pragma warning(disable : 3557)\n\tfor (int id = int(gl_LocalInvocationIndex); id < 432; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 12, y = (uint)id % 12;\n\t\tinp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-1.5), float(group_base.y + y) + (-1.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (inp[local_pos + 25] - inp[local_pos + 1]) / 2.0;\n\tgy = (inp[local_pos + 14] - inp[local_pos + 12]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (inp[local_pos + 26] - inp[local_pos + 2]) / 2.0;\n\tgy = (inp[local_pos + 15] - inp[local_pos + 13]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 27] - inp[local_pos + 3]) / 2.0;\n\tgy = (inp[local_pos + 16] - inp[local_pos + 14]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (inp[local_pos + 37] - inp[local_pos + 13]) / 2.0;\n\tgy = (inp[local_pos + 26] - inp[local_pos + 24]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 38] - inp[local_pos + 14]) / 2.0;\n\tgy = (inp[local_pos + 27] - inp[local_pos + 25]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.13080118386382833;\n\tgx = (inp[local_pos + 39] - inp[local_pos + 15]) / 2.0;\n\tgy = (inp[local_pos + 28] - inp[local_pos + 26]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 49] - inp[local_pos + 25]) / 2.0;\n\tgy = (inp[local_pos + 38] - inp[local_pos + 36]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (inp[local_pos + 50] - inp[local_pos + 26]) / 2.0;\n\tgy = (inp[local_pos + 39] - inp[local_pos + 37]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 51] - inp[local_pos + 27]) / 2.0;\n\tgy = (inp[local_pos + 40] - inp[local_pos + 38]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence + 0.5) / 288.0;\n\tvec4 res = vec4(0.0, 0.0, 0.0, 0.0), w;\n\tvec4 lo = vec4(0.0, 0.0, 0.0, 0.0), hi = vec4(0.0, 0.0, 0.0, 0.0), lo2 = vec4(0.0, 0.0, 0.0, 0.0),\n\t\t hi2 = vec4(0.0, 0.0, 0.0, 0.0), wg, cg4, cg4_1;\n\tw = texture(ravu_lite_lut3, vec2(0.038461538461538464, coord_y));\n\tres += inp[local_pos + 0] * w + inp[local_pos + 52] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.11538461538461539, coord_y));\n\tres += inp[local_pos + 1] * w + inp[local_pos + 51] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.19230769230769232, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 2] * w + inp[local_pos + 50] * w.wzyx;\n\tcg4 =\n\t\tvec4(0.1 + inp[local_pos + 2], 1.1 - inp[local_pos + 2], 0.1 + inp[local_pos + 50], 1.1 - inp[local_pos + 50]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.2692307692307692, coord_y));\n\tres += inp[local_pos + 3] * w + inp[local_pos + 49] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.34615384615384615, coord_y));\n\tres += inp[local_pos + 4] * w + inp[local_pos + 48] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.4230769230769231, coord_y));\n\tres += inp[local_pos + 12] * w + inp[local_pos + 40] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.5, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 13] * w + inp[local_pos + 39] * w.wzyx;\n\tcg4 = vec4(0.1 + inp[local_pos + 13], 1.1 - inp[local_pos + 13], 0.1 + inp[local_pos + 39],\n\t\t\t   1.1 - inp[local_pos + 39]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.5769230769230769, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 14] * w + inp[local_pos + 38] * w.wzyx;\n\tcg4 = vec4(0.1 + inp[local_pos + 14], 1.1 - inp[local_pos + 14], 0.1 + inp[local_pos + 38],\n\t\t\t   1.1 - inp[local_pos + 38]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.6538461538461539, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 15] * w + inp[local_pos + 37] * w.wzyx;\n\tcg4 = vec4(0.1 + inp[local_pos + 15], 1.1 - inp[local_pos + 15], 0.1 + inp[local_pos + 37],\n\t\t\t   1.1 - inp[local_pos + 37]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.7307692307692307, coord_y));\n\tres += inp[local_pos + 16] * w + inp[local_pos + 36] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.8076923076923077, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 24] * w + inp[local_pos + 28] * w.wzyx;\n\tcg4 = vec4(0.1 + inp[local_pos + 24], 1.1 - inp[local_pos + 24], 0.1 + inp[local_pos + 28],\n\t\t\t   1.1 - inp[local_pos + 28]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.8846153846153846, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 25] * w + inp[local_pos + 27] * w.wzyx;\n\tcg4 = vec4(0.1 + inp[local_pos + 25], 1.1 - inp[local_pos + 25], 0.1 + inp[local_pos + 27],\n\t\t\t   1.1 - inp[local_pos + 27]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.9615384615384616, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 26] * w;\n\tvec2 cg2 = vec2(0.1 + inp[local_pos + 26], 1.1 - inp[local_pos + 26]);\n\tvec2 cg2_1 = cg2;\n\tcg2 *= cg2;\n\tcg2 *= cg2;\n\tcg2 *= cg2;\n\tcg2 *= cg2;\n\tcg2 *= cg2;\n\thi += cg2.x * wg;\n\tlo += cg2.y * wg;\n\tcg2 *= cg2_1;\n\thi2 += cg2.x * wg;\n\tlo2 += cg2.y * wg;\n\tlo = 1.1 - lo2 / lo;\n\thi = hi2 / hi - 0.1;\n\tres = mix(res, clamp(res, lo, hi), 0.800000);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), vec4(res[0], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), vec4(res[1], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), vec4(res[2], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), vec4(res[3], 0.0, 0.0, 0.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Lite_AR_R4.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-lite.py --weights-file weights\\ravu-lite_weights-r4.py --float-format float16dx --use-compute-shader --anti-ringing 0.8 --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_lite_lut4_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_lite_lut4;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_lite_lut4;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Lite-AR (r4, compute)\n//!IN INPUT, ravu_lite_lut4\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 16\n//!NUM_THREADS 32, 8\nshared float inp[532];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lite_lut4_tex(pos) (vec4(texture(ravu_lite_lut4, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 14 + int(gl_LocalInvocationID.y);\n#pragma warning(disable : 3557)\n\tfor (int id = int(gl_LocalInvocationIndex); id < 532; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 14, y = (uint)id % 14;\n\t\tinp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-2.5), float(group_base.y + y) + (-2.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (inp[local_pos + 29] - inp[local_pos + 1]) / 2.0;\n\tgy = (inp[local_pos + 16] - inp[local_pos + 14]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tgx = (inp[local_pos + 30] - inp[local_pos + 2]) / 2.0;\n\tgy = (inp[local_pos + 17] - inp[local_pos + 15]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 31] - inp[local_pos + 3]) / 2.0;\n\tgy = (inp[local_pos + 18] - inp[local_pos + 16]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (inp[local_pos + 32] - inp[local_pos + 4]) / 2.0;\n\tgy = (inp[local_pos + 19] - inp[local_pos + 17]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 33] - inp[local_pos + 5]) / 2.0;\n\tgy = (inp[local_pos + 20] - inp[local_pos + 18]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tgx = (inp[local_pos + 43] - inp[local_pos + 15]) / 2.0;\n\tgy = (inp[local_pos + 30] - inp[local_pos + 28]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 44] - inp[local_pos + 16]) / 2.0;\n\tgy = (inp[local_pos + 31] - inp[local_pos + 29]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (inp[local_pos + 45] - inp[local_pos + 17]) / 2.0;\n\tgy = (inp[local_pos + 32] - inp[local_pos + 30]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (inp[local_pos + 46] - inp[local_pos + 18]) / 2.0;\n\tgy = (inp[local_pos + 33] - inp[local_pos + 31]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (inp[local_pos + 47] - inp[local_pos + 19]) / 2.0;\n\tgy = (inp[local_pos + 34] - inp[local_pos + 32]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 57] - inp[local_pos + 29]) / 2.0;\n\tgy = (inp[local_pos + 44] - inp[local_pos + 42]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (inp[local_pos + 58] - inp[local_pos + 30]) / 2.0;\n\tgy = (inp[local_pos + 45] - inp[local_pos + 43]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (inp[local_pos + 59] - inp[local_pos + 31]) / 2.0;\n\tgy = (inp[local_pos + 46] - inp[local_pos + 44]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06319146241026467;\n\tgx = (inp[local_pos + 60] - inp[local_pos + 32]) / 2.0;\n\tgy = (inp[local_pos + 47] - inp[local_pos + 45]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (inp[local_pos + 61] - inp[local_pos + 33]) / 2.0;\n\tgy = (inp[local_pos + 48] - inp[local_pos + 46]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (inp[local_pos + 71] - inp[local_pos + 43]) / 2.0;\n\tgy = (inp[local_pos + 58] - inp[local_pos + 56]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 72] - inp[local_pos + 44]) / 2.0;\n\tgy = (inp[local_pos + 59] - inp[local_pos + 57]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (inp[local_pos + 73] - inp[local_pos + 45]) / 2.0;\n\tgy = (inp[local_pos + 60] - inp[local_pos + 58]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (inp[local_pos + 74] - inp[local_pos + 46]) / 2.0;\n\tgy = (inp[local_pos + 61] - inp[local_pos + 59]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (inp[local_pos + 75] - inp[local_pos + 47]) / 2.0;\n\tgy = (inp[local_pos + 62] - inp[local_pos + 60]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 85] - inp[local_pos + 57]) / 2.0;\n\tgy = (inp[local_pos + 72] - inp[local_pos + 70]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tgx = (inp[local_pos + 86] - inp[local_pos + 58]) / 2.0;\n\tgy = (inp[local_pos + 73] - inp[local_pos + 71]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 87] - inp[local_pos + 59]) / 2.0;\n\tgy = (inp[local_pos + 74] - inp[local_pos + 72]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (inp[local_pos + 88] - inp[local_pos + 60]) / 2.0;\n\tgy = (inp[local_pos + 75] - inp[local_pos + 73]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 89] - inp[local_pos + 61]) / 2.0;\n\tgy = (inp[local_pos + 76] - inp[local_pos + 74]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence + 0.5) / 288.0;\n\tvec4 res = vec4(0.0, 0.0, 0.0, 0.0), w;\n\tvec4 lo = vec4(0.0, 0.0, 0.0, 0.0), hi = vec4(0.0, 0.0, 0.0, 0.0), lo2 = vec4(0.0, 0.0, 0.0, 0.0),\n\t\t hi2 = vec4(0.0, 0.0, 0.0, 0.0), wg, cg4, cg4_1;\n\tw = texture(ravu_lite_lut4, vec2(0.02, coord_y));\n\tres += inp[local_pos + 0] * w + inp[local_pos + 90] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.06, coord_y));\n\tres += inp[local_pos + 1] * w + inp[local_pos + 89] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.1, coord_y));\n\tres += inp[local_pos + 2] * w + inp[local_pos + 88] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.14, coord_y));\n\tres += inp[local_pos + 3] * w + inp[local_pos + 87] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.18, coord_y));\n\tres += inp[local_pos + 4] * w + inp[local_pos + 86] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.22, coord_y));\n\tres += inp[local_pos + 5] * w + inp[local_pos + 85] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.26, coord_y));\n\tres += inp[local_pos + 6] * w + inp[local_pos + 84] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.3, coord_y));\n\tres += inp[local_pos + 14] * w + inp[local_pos + 76] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.34, coord_y));\n\tres += inp[local_pos + 15] * w + inp[local_pos + 75] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.38, coord_y));\n\tres += inp[local_pos + 16] * w + inp[local_pos + 74] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.42, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 17] * w + inp[local_pos + 73] * w.wzyx;\n\tcg4 = vec4(0.1 + inp[local_pos + 17], 1.1 - inp[local_pos + 17], 0.1 + inp[local_pos + 73],\n\t\t\t   1.1 - inp[local_pos + 73]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.46, coord_y));\n\tres += inp[local_pos + 18] * w + inp[local_pos + 72] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.5, coord_y));\n\tres += inp[local_pos + 19] * w + inp[local_pos + 71] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.54, coord_y));\n\tres += inp[local_pos + 20] * w + inp[local_pos + 70] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.58, coord_y));\n\tres += inp[local_pos + 28] * w + inp[local_pos + 62] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.62, coord_y));\n\tres += inp[local_pos + 29] * w + inp[local_pos + 61] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.66, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 30] * w + inp[local_pos + 60] * w.wzyx;\n\tcg4 = vec4(0.1 + inp[local_pos + 30], 1.1 - inp[local_pos + 30], 0.1 + inp[local_pos + 60],\n\t\t\t   1.1 - inp[local_pos + 60]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.7, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 31] * w + inp[local_pos + 59] * w.wzyx;\n\tcg4 = vec4(0.1 + inp[local_pos + 31], 1.1 - inp[local_pos + 31], 0.1 + inp[local_pos + 59],\n\t\t\t   1.1 - inp[local_pos + 59]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.74, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 32] * w + inp[local_pos + 58] * w.wzyx;\n\tcg4 = vec4(0.1 + inp[local_pos + 32], 1.1 - inp[local_pos + 32], 0.1 + inp[local_pos + 58],\n\t\t\t   1.1 - inp[local_pos + 58]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.78, coord_y));\n\tres += inp[local_pos + 33] * w + inp[local_pos + 57] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.82, coord_y));\n\tres += inp[local_pos + 34] * w + inp[local_pos + 56] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.86, coord_y));\n\tres += inp[local_pos + 42] * w + inp[local_pos + 48] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.9, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 43] * w + inp[local_pos + 47] * w.wzyx;\n\tcg4 = vec4(0.1 + inp[local_pos + 43], 1.1 - inp[local_pos + 43], 0.1 + inp[local_pos + 47],\n\t\t\t   1.1 - inp[local_pos + 47]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.94, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 44] * w + inp[local_pos + 46] * w.wzyx;\n\tcg4 = vec4(0.1 + inp[local_pos + 44], 1.1 - inp[local_pos + 44], 0.1 + inp[local_pos + 46],\n\t\t\t   1.1 - inp[local_pos + 46]);\n\tcg4_1 = cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\tcg4 *= cg4;\n\thi += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo += cg4.y * wg + cg4.w * wg.wzyx;\n\tcg4 *= cg4_1;\n\thi2 += cg4.x * wg + cg4.z * wg.wzyx;\n\tlo2 += cg4.y * wg + cg4.w * wg.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.98, coord_y));\n\twg = max(vec4(0.0, 0.0, 0.0, 0.0), w);\n\tres += inp[local_pos + 45] * w;\n\tvec2 cg2 = vec2(0.1 + inp[local_pos + 45], 1.1 - inp[local_pos + 45]);\n\tvec2 cg2_1 = cg2;\n\tcg2 *= cg2;\n\tcg2 *= cg2;\n\tcg2 *= cg2;\n\tcg2 *= cg2;\n\tcg2 *= cg2;\n\thi += cg2.x * wg;\n\tlo += cg2.y * wg;\n\tcg2 *= cg2_1;\n\thi2 += cg2.x * wg;\n\tlo2 += cg2.y * wg;\n\tlo = 1.1 - lo2 / lo;\n\thi = hi2 / hi - 0.1;\n\tres = mix(res, clamp(res, lo, hi), 0.800000);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), vec4(res[0], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), vec4(res[1], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), vec4(res[2], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), vec4(res[3], 0.0, 0.0, 0.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Lite_R2.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-lite.py --weights-file weights\\ravu-lite_weights-r2.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_lite_lut2_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_lite_lut2;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_lite_lut2;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Lite (r2, compute)\n//!IN INPUT, ravu_lite_lut2\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 16\n//!NUM_THREADS 32, 8\nshared float inp[340];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lite_lut2_tex(pos) (vec4(texture(ravu_lite_lut2, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 10 + int(gl_LocalInvocationID.y);\n#pragma warning(disable : 3557)\n\tfor (int id = int(gl_LocalInvocationIndex); id < 340; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 10, y = (uint)id % 10;\n\t\tinp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-0.5), float(group_base.y + y) + (-0.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (inp[local_pos + 10] - inp[local_pos + 0]);\n\tgy = (inp[local_pos + 1] - inp[local_pos + 0]);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (inp[local_pos + 11] - inp[local_pos + 1]);\n\tgy = (inp[local_pos + 2] - inp[local_pos + 0]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 12] - inp[local_pos + 2]);\n\tgy = (inp[local_pos + 2] - inp[local_pos + 1]);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (inp[local_pos + 20] - inp[local_pos + 0]) / 2.0;\n\tgy = (inp[local_pos + 11] - inp[local_pos + 10]);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 21] - inp[local_pos + 1]) / 2.0;\n\tgy = (inp[local_pos + 12] - inp[local_pos + 10]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.13080118386382833;\n\tgx = (inp[local_pos + 22] - inp[local_pos + 2]) / 2.0;\n\tgy = (inp[local_pos + 12] - inp[local_pos + 11]);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 20] - inp[local_pos + 10]);\n\tgy = (inp[local_pos + 21] - inp[local_pos + 20]);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (inp[local_pos + 21] - inp[local_pos + 11]);\n\tgy = (inp[local_pos + 22] - inp[local_pos + 20]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 22] - inp[local_pos + 12]);\n\tgy = (inp[local_pos + 22] - inp[local_pos + 21]);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence + 0.5) / 288.0;\n\tvec4 res = vec4(0.0, 0.0, 0.0, 0.0), w;\n\tw = texture(ravu_lite_lut2, vec2(0.1, coord_y));\n\tres += inp[local_pos + 0] * w + inp[local_pos + 22] * w.wzyx;\n\tw = texture(ravu_lite_lut2, vec2(0.3, coord_y));\n\tres += inp[local_pos + 1] * w + inp[local_pos + 21] * w.wzyx;\n\tw = texture(ravu_lite_lut2, vec2(0.5, coord_y));\n\tres += inp[local_pos + 2] * w + inp[local_pos + 20] * w.wzyx;\n\tw = texture(ravu_lite_lut2, vec2(0.7, coord_y));\n\tres += inp[local_pos + 10] * w + inp[local_pos + 12] * w.wzyx;\n\tw = texture(ravu_lite_lut2, vec2(0.9, coord_y));\n\tres += inp[local_pos + 11] * w;\n\tres = clamp(res, 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), vec4(res[0], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), vec4(res[1], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), vec4(res[2], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), vec4(res[3], 0.0, 0.0, 0.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Lite_R3.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-lite.py --weights-file weights\\ravu-lite_weights-r3.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_lite_lut3_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_lite_lut3;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_lite_lut3;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Lite (r3, compute)\n//!IN INPUT, ravu_lite_lut3\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 16\n//!NUM_THREADS 32, 8\nshared float inp[432];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lite_lut3_tex(pos) (vec4(texture(ravu_lite_lut3, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 12 + int(gl_LocalInvocationID.y);\n#pragma warning(disable : 3557)\n\tfor (int id = int(gl_LocalInvocationIndex); id < 432; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 12, y = (uint)id % 12;\n\t\tinp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-1.5), float(group_base.y + y) + (-1.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (inp[local_pos + 25] - inp[local_pos + 1]) / 2.0;\n\tgy = (inp[local_pos + 14] - inp[local_pos + 12]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (inp[local_pos + 26] - inp[local_pos + 2]) / 2.0;\n\tgy = (inp[local_pos + 15] - inp[local_pos + 13]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 27] - inp[local_pos + 3]) / 2.0;\n\tgy = (inp[local_pos + 16] - inp[local_pos + 14]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (inp[local_pos + 37] - inp[local_pos + 13]) / 2.0;\n\tgy = (inp[local_pos + 26] - inp[local_pos + 24]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 38] - inp[local_pos + 14]) / 2.0;\n\tgy = (inp[local_pos + 27] - inp[local_pos + 25]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.13080118386382833;\n\tgx = (inp[local_pos + 39] - inp[local_pos + 15]) / 2.0;\n\tgy = (inp[local_pos + 28] - inp[local_pos + 26]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 49] - inp[local_pos + 25]) / 2.0;\n\tgy = (inp[local_pos + 38] - inp[local_pos + 36]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tgx = (inp[local_pos + 50] - inp[local_pos + 26]) / 2.0;\n\tgy = (inp[local_pos + 39] - inp[local_pos + 37]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.11543163961422666;\n\tgx = (inp[local_pos + 51] - inp[local_pos + 27]) / 2.0;\n\tgy = (inp[local_pos + 40] - inp[local_pos + 38]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.1018680644198163;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence + 0.5) / 288.0;\n\tvec4 res = vec4(0.0, 0.0, 0.0, 0.0), w;\n\tw = texture(ravu_lite_lut3, vec2(0.038461538461538464, coord_y));\n\tres += inp[local_pos + 0] * w + inp[local_pos + 52] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.11538461538461539, coord_y));\n\tres += inp[local_pos + 1] * w + inp[local_pos + 51] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.19230769230769232, coord_y));\n\tres += inp[local_pos + 2] * w + inp[local_pos + 50] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.2692307692307692, coord_y));\n\tres += inp[local_pos + 3] * w + inp[local_pos + 49] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.34615384615384615, coord_y));\n\tres += inp[local_pos + 4] * w + inp[local_pos + 48] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.4230769230769231, coord_y));\n\tres += inp[local_pos + 12] * w + inp[local_pos + 40] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.5, coord_y));\n\tres += inp[local_pos + 13] * w + inp[local_pos + 39] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.5769230769230769, coord_y));\n\tres += inp[local_pos + 14] * w + inp[local_pos + 38] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.6538461538461539, coord_y));\n\tres += inp[local_pos + 15] * w + inp[local_pos + 37] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.7307692307692307, coord_y));\n\tres += inp[local_pos + 16] * w + inp[local_pos + 36] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.8076923076923077, coord_y));\n\tres += inp[local_pos + 24] * w + inp[local_pos + 28] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.8846153846153846, coord_y));\n\tres += inp[local_pos + 25] * w + inp[local_pos + 27] * w.wzyx;\n\tw = texture(ravu_lite_lut3, vec2(0.9615384615384616, coord_y));\n\tres += inp[local_pos + 26] * w;\n\tres = clamp(res, 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), vec4(res[0], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), vec4(res[1], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), vec4(res[2], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), vec4(res[3], 0.0, 0.0, 0.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Lite_R4.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-lite.py --weights-file weights\\ravu-lite_weights-r4.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_lite_lut4_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_lite_lut4;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_lite_lut4;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Lite (r4, compute)\n//!IN INPUT, ravu_lite_lut4\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 16\n//!NUM_THREADS 32, 8\nshared float inp[532];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lite_lut4_tex(pos) (vec4(texture(ravu_lite_lut4, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 14 + int(gl_LocalInvocationID.y);\n#pragma warning(disable : 3557)\n\tfor (int id = int(gl_LocalInvocationIndex); id < 532; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint x = (uint)id / 14, y = (uint)id % 14;\n\t\tinp[id] = HOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-2.5), float(group_base.y + y) + (-2.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (inp[local_pos + 29] - inp[local_pos + 1]) / 2.0;\n\tgy = (inp[local_pos + 16] - inp[local_pos + 14]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tgx = (inp[local_pos + 30] - inp[local_pos + 2]) / 2.0;\n\tgy = (inp[local_pos + 17] - inp[local_pos + 15]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 31] - inp[local_pos + 3]) / 2.0;\n\tgy = (inp[local_pos + 18] - inp[local_pos + 16]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (inp[local_pos + 32] - inp[local_pos + 4]) / 2.0;\n\tgy = (inp[local_pos + 19] - inp[local_pos + 17]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 33] - inp[local_pos + 5]) / 2.0;\n\tgy = (inp[local_pos + 20] - inp[local_pos + 18]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tgx = (inp[local_pos + 43] - inp[local_pos + 15]) / 2.0;\n\tgy = (inp[local_pos + 30] - inp[local_pos + 28]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 44] - inp[local_pos + 16]) / 2.0;\n\tgy = (inp[local_pos + 31] - inp[local_pos + 29]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (inp[local_pos + 45] - inp[local_pos + 17]) / 2.0;\n\tgy = (inp[local_pos + 32] - inp[local_pos + 30]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (inp[local_pos + 46] - inp[local_pos + 18]) / 2.0;\n\tgy = (inp[local_pos + 33] - inp[local_pos + 31]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (inp[local_pos + 47] - inp[local_pos + 19]) / 2.0;\n\tgy = (inp[local_pos + 34] - inp[local_pos + 32]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 57] - inp[local_pos + 29]) / 2.0;\n\tgy = (inp[local_pos + 44] - inp[local_pos + 42]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (inp[local_pos + 58] - inp[local_pos + 30]) / 2.0;\n\tgy = (inp[local_pos + 45] - inp[local_pos + 43]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (inp[local_pos + 59] - inp[local_pos + 31]) / 2.0;\n\tgy = (inp[local_pos + 46] - inp[local_pos + 44]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06319146241026467;\n\tgx = (inp[local_pos + 60] - inp[local_pos + 32]) / 2.0;\n\tgy = (inp[local_pos + 47] - inp[local_pos + 45]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (inp[local_pos + 61] - inp[local_pos + 33]) / 2.0;\n\tgy = (inp[local_pos + 48] - inp[local_pos + 46]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (inp[local_pos + 71] - inp[local_pos + 43]) / 2.0;\n\tgy = (inp[local_pos + 58] - inp[local_pos + 56]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 72] - inp[local_pos + 44]) / 2.0;\n\tgy = (inp[local_pos + 59] - inp[local_pos + 57]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (inp[local_pos + 73] - inp[local_pos + 45]) / 2.0;\n\tgy = (inp[local_pos + 60] - inp[local_pos + 58]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.055766269846849466;\n\tgx = (inp[local_pos + 74] - inp[local_pos + 46]) / 2.0;\n\tgy = (inp[local_pos + 61] - inp[local_pos + 59]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04921356040854137;\n\tgx = (inp[local_pos + 75] - inp[local_pos + 47]) / 2.0;\n\tgy = (inp[local_pos + 62] - inp[local_pos + 60]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 85] - inp[local_pos + 57]) / 2.0;\n\tgy = (inp[local_pos + 72] - inp[local_pos + 70]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tgx = (inp[local_pos + 86] - inp[local_pos + 58]) / 2.0;\n\tgy = (inp[local_pos + 73] - inp[local_pos + 71]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 87] - inp[local_pos + 59]) / 2.0;\n\tgy = (inp[local_pos + 74] - inp[local_pos + 72]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.038327559383903906;\n\tgx = (inp[local_pos + 88] - inp[local_pos + 60]) / 2.0;\n\tgy = (inp[local_pos + 75] - inp[local_pos + 73]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.033823952439922346;\n\tgx = (inp[local_pos + 89] - inp[local_pos + 61]) / 2.0;\n\tgy = (inp[local_pos + 76] - inp[local_pos + 74]) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02324683987829437;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence + 0.5) / 288.0;\n\tvec4 res = vec4(0.0, 0.0, 0.0, 0.0), w;\n\tw = texture(ravu_lite_lut4, vec2(0.02, coord_y));\n\tres += inp[local_pos + 0] * w + inp[local_pos + 90] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.06, coord_y));\n\tres += inp[local_pos + 1] * w + inp[local_pos + 89] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.1, coord_y));\n\tres += inp[local_pos + 2] * w + inp[local_pos + 88] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.14, coord_y));\n\tres += inp[local_pos + 3] * w + inp[local_pos + 87] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.18, coord_y));\n\tres += inp[local_pos + 4] * w + inp[local_pos + 86] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.22, coord_y));\n\tres += inp[local_pos + 5] * w + inp[local_pos + 85] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.26, coord_y));\n\tres += inp[local_pos + 6] * w + inp[local_pos + 84] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.3, coord_y));\n\tres += inp[local_pos + 14] * w + inp[local_pos + 76] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.34, coord_y));\n\tres += inp[local_pos + 15] * w + inp[local_pos + 75] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.38, coord_y));\n\tres += inp[local_pos + 16] * w + inp[local_pos + 74] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.42, coord_y));\n\tres += inp[local_pos + 17] * w + inp[local_pos + 73] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.46, coord_y));\n\tres += inp[local_pos + 18] * w + inp[local_pos + 72] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.5, coord_y));\n\tres += inp[local_pos + 19] * w + inp[local_pos + 71] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.54, coord_y));\n\tres += inp[local_pos + 20] * w + inp[local_pos + 70] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.58, coord_y));\n\tres += inp[local_pos + 28] * w + inp[local_pos + 62] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.62, coord_y));\n\tres += inp[local_pos + 29] * w + inp[local_pos + 61] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.66, coord_y));\n\tres += inp[local_pos + 30] * w + inp[local_pos + 60] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.7, coord_y));\n\tres += inp[local_pos + 31] * w + inp[local_pos + 59] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.74, coord_y));\n\tres += inp[local_pos + 32] * w + inp[local_pos + 58] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.78, coord_y));\n\tres += inp[local_pos + 33] * w + inp[local_pos + 57] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.82, coord_y));\n\tres += inp[local_pos + 34] * w + inp[local_pos + 56] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.86, coord_y));\n\tres += inp[local_pos + 42] * w + inp[local_pos + 48] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.9, coord_y));\n\tres += inp[local_pos + 43] * w + inp[local_pos + 47] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.94, coord_y));\n\tres += inp[local_pos + 44] * w + inp[local_pos + 46] * w.wzyx;\n\tw = texture(ravu_lite_lut4, vec2(0.98, coord_y));\n\tres += inp[local_pos + 45] * w;\n\tres = clamp(res, 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), vec4(res[0], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), vec4(res[1], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), vec4(res[2], 0.0, 0.0, 0.0));\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), vec4(res[3], 0.0, 0.0, 0.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_R2.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu.py --target luma --weights-file weights\\ravu_weights-r2.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_lut2_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_lut2;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_lut2;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D ravu_int11;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_ravu_int11;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC RAVU (step1, luma, r2, compute)\n//!IN INPUT, ravu_lut2\n//!OUT ravu_int11\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\nshared float inp0[385];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { ravu_int11[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lut2_tex(pos) (vec4(texture(ravu_lut2, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 11 + int(gl_LocalInvocationID.y);\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 385; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 11, y = (uint)id % 11;\n\t\t\tinp0[id] =\n\t\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-0.5), float(group_base.y + y) + (-0.5))).x;\n\t\t}\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\t{\n\t\tfloat luma0 = inp0[local_pos + 0];\n\t\tfloat luma4 = inp0[local_pos + 11];\n\t\tfloat luma5 = inp0[local_pos + 12];\n\t\tfloat luma6 = inp0[local_pos + 13];\n\t\tfloat luma7 = inp0[local_pos + 14];\n\t\tfloat luma1 = inp0[local_pos + 1];\n\t\tfloat luma8 = inp0[local_pos + 22];\n\t\tfloat luma9 = inp0[local_pos + 23];\n\t\tfloat luma10 = inp0[local_pos + 24];\n\t\tfloat luma11 = inp0[local_pos + 25];\n\t\tfloat luma2 = inp0[local_pos + 2];\n\t\tfloat luma12 = inp0[local_pos + 33];\n\t\tfloat luma13 = inp0[local_pos + 34];\n\t\tfloat luma14 = inp0[local_pos + 35];\n\t\tfloat luma15 = inp0[local_pos + 36];\n\t\tfloat luma3 = inp0[local_pos + 3];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma4 - luma0);\n\t\tgy = (luma1 - luma0);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma5 - luma1);\n\t\tgy = (luma2 - luma0) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma6 - luma2);\n\t\tgy = (luma3 - luma1) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma7 - luma3);\n\t\tgy = (luma3 - luma2);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma8 - luma0) / 2.0;\n\t\tgy = (luma5 - luma4);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma9 - luma1) / 2.0;\n\t\tgy = (luma6 - luma4) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma10 - luma2) / 2.0;\n\t\tgy = (luma7 - luma5) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma11 - luma3) / 2.0;\n\t\tgy = (luma7 - luma6);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma12 - luma4) / 2.0;\n\t\tgy = (luma9 - luma8);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma13 - luma5) / 2.0;\n\t\tgy = (luma10 - luma8) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma14 - luma6) / 2.0;\n\t\tgy = (luma11 - luma9) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma15 - luma7) / 2.0;\n\t\tgy = (luma11 - luma10);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma12 - luma8);\n\t\tgy = (luma13 - luma12);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma13 - luma9);\n\t\tgy = (luma14 - luma12) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma14 - luma10);\n\t\tgy = (luma15 - luma13) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma15 - luma11);\n\t\tgy = (luma15 - luma14);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tfloat res = 0.0;\n\t\tvec4 w;\n\t\tw = texture(ravu_lut2, vec2(0.25, coord_y));\n\t\tres += (inp0[local_pos + 0] + inp0[local_pos + 36]) * w[0];\n\t\tres += (inp0[local_pos + 1] + inp0[local_pos + 35]) * w[1];\n\t\tres += (inp0[local_pos + 2] + inp0[local_pos + 34]) * w[2];\n\t\tres += (inp0[local_pos + 3] + inp0[local_pos + 33]) * w[3];\n\t\tw = texture(ravu_lut2, vec2(0.75, coord_y));\n\t\tres += (inp0[local_pos + 11] + inp0[local_pos + 25]) * w[0];\n\t\tres += (inp0[local_pos + 12] + inp0[local_pos + 24]) * w[1];\n\t\tres += (inp0[local_pos + 13] + inp0[local_pos + 23]) * w[2];\n\t\tres += (inp0[local_pos + 14] + inp0[local_pos + 22]) * w[3];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID), res);\n\t}\n}\n//!PASS 2\n//!DESC RAVU (step2, luma, r2, compute)\n//!IN INPUT, ravu_lut2, ravu_int11\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 16\n//!NUM_THREADS 32, 8\nshared float inp0[385];\nshared float inp1[385];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lut2_tex(pos) (vec4(texture(ravu_lut2, pos)))\n\n#define ravu_int11_tex(pos) (float(texture(ravu_int11, pos).x))\nstatic const float2 ravu_int11_size = float2(GetInputSize().x, GetInputSize().y);\nstatic const float2 ravu_int11_pt = float2(1.0 / (ravu_int11_size.x), 1.0 / (ravu_int11_size.y));\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 11 + int(gl_LocalInvocationID.y);\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 385; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 11, y = (uint)id % 11;\n\t\t\tinp0[id] =\n\t\t\t\travu_int11_tex(ravu_int11_pt * vec2(float(group_base.x + x) + (-1.5), float(group_base.y + y) + (-1.5)))\n\t\t\t\t\t.x;\n\t\t}\n\t}\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 385; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 11, y = (uint)id % 11;\n\t\t\tinp1[id] =\n\t\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-0.5), float(group_base.y + y) + (-0.5))).x;\n\t\t}\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\t{\n\t\tfloat luma8 = inp0[local_pos + 12];\n\t\tfloat luma5 = inp0[local_pos + 13];\n\t\tfloat luma2 = inp0[local_pos + 14];\n\t\tfloat luma13 = inp0[local_pos + 23];\n\t\tfloat luma10 = inp0[local_pos + 24];\n\t\tfloat luma7 = inp0[local_pos + 25];\n\t\tfloat luma0 = inp0[local_pos + 2];\n\t\tfloat luma15 = inp0[local_pos + 35];\n\t\tfloat luma12 = inp1[local_pos + 11];\n\t\tfloat luma9 = inp1[local_pos + 12];\n\t\tfloat luma6 = inp1[local_pos + 13];\n\t\tfloat luma3 = inp1[local_pos + 14];\n\t\tfloat luma4 = inp1[local_pos + 1];\n\t\tfloat luma14 = inp1[local_pos + 23];\n\t\tfloat luma11 = inp1[local_pos + 24];\n\t\tfloat luma1 = inp1[local_pos + 2];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma4 - luma0);\n\t\tgy = (luma1 - luma0);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma5 - luma1);\n\t\tgy = (luma2 - luma0) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma6 - luma2);\n\t\tgy = (luma3 - luma1) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma7 - luma3);\n\t\tgy = (luma3 - luma2);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma8 - luma0) / 2.0;\n\t\tgy = (luma5 - luma4);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma9 - luma1) / 2.0;\n\t\tgy = (luma6 - luma4) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma10 - luma2) / 2.0;\n\t\tgy = (luma7 - luma5) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma11 - luma3) / 2.0;\n\t\tgy = (luma7 - luma6);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma12 - luma4) / 2.0;\n\t\tgy = (luma9 - luma8);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma13 - luma5) / 2.0;\n\t\tgy = (luma10 - luma8) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma14 - luma6) / 2.0;\n\t\tgy = (luma11 - luma9) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma15 - luma7) / 2.0;\n\t\tgy = (luma11 - luma10);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma12 - luma8);\n\t\tgy = (luma13 - luma12);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma13 - luma9);\n\t\tgy = (luma14 - luma12) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma14 - luma10);\n\t\tgy = (luma15 - luma13) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma15 - luma11);\n\t\tgy = (luma15 - luma14);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tfloat res = 0.0;\n\t\tvec4 w;\n\t\tw = texture(ravu_lut2, vec2(0.25, coord_y));\n\t\tres += (inp0[local_pos + 2] + inp0[local_pos + 35]) * w[0];\n\t\tres += (inp1[local_pos + 2] + inp1[local_pos + 23]) * w[1];\n\t\tres += (inp0[local_pos + 14] + inp0[local_pos + 23]) * w[2];\n\t\tres += (inp1[local_pos + 14] + inp1[local_pos + 11]) * w[3];\n\t\tw = texture(ravu_lut2, vec2(0.75, coord_y));\n\t\tres += (inp1[local_pos + 1] + inp1[local_pos + 24]) * w[0];\n\t\tres += (inp0[local_pos + 13] + inp0[local_pos + 24]) * w[1];\n\t\tres += (inp1[local_pos + 13] + inp1[local_pos + 12]) * w[2];\n\t\tres += (inp0[local_pos + 25] + inp0[local_pos + 12]) * w[3];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), res);\n\t}\n\t{\n\t\tfloat luma4 = inp0[local_pos + 12];\n\t\tfloat luma1 = inp0[local_pos + 13];\n\t\tfloat luma12 = inp0[local_pos + 22];\n\t\tfloat luma9 = inp0[local_pos + 23];\n\t\tfloat luma6 = inp0[local_pos + 24];\n\t\tfloat luma3 = inp0[local_pos + 25];\n\t\tfloat luma14 = inp0[local_pos + 34];\n\t\tfloat luma11 = inp0[local_pos + 35];\n\t\tfloat luma8 = inp1[local_pos + 11];\n\t\tfloat luma5 = inp1[local_pos + 12];\n\t\tfloat luma2 = inp1[local_pos + 13];\n\t\tfloat luma0 = inp1[local_pos + 1];\n\t\tfloat luma13 = inp1[local_pos + 22];\n\t\tfloat luma10 = inp1[local_pos + 23];\n\t\tfloat luma7 = inp1[local_pos + 24];\n\t\tfloat luma15 = inp1[local_pos + 34];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma4 - luma0);\n\t\tgy = (luma1 - luma0);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma5 - luma1);\n\t\tgy = (luma2 - luma0) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma6 - luma2);\n\t\tgy = (luma3 - luma1) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma7 - luma3);\n\t\tgy = (luma3 - luma2);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma8 - luma0) / 2.0;\n\t\tgy = (luma5 - luma4);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma9 - luma1) / 2.0;\n\t\tgy = (luma6 - luma4) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma10 - luma2) / 2.0;\n\t\tgy = (luma7 - luma5) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma11 - luma3) / 2.0;\n\t\tgy = (luma7 - luma6);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma12 - luma4) / 2.0;\n\t\tgy = (luma9 - luma8);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma13 - luma5) / 2.0;\n\t\tgy = (luma10 - luma8) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma14 - luma6) / 2.0;\n\t\tgy = (luma11 - luma9) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma15 - luma7) / 2.0;\n\t\tgy = (luma11 - luma10);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma12 - luma8);\n\t\tgy = (luma13 - luma12);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma13 - luma9);\n\t\tgy = (luma14 - luma12) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma14 - luma10);\n\t\tgy = (luma15 - luma13) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma15 - luma11);\n\t\tgy = (luma15 - luma14);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tfloat res = 0.0;\n\t\tvec4 w;\n\t\tw = texture(ravu_lut2, vec2(0.25, coord_y));\n\t\tres += (inp1[local_pos + 1] + inp1[local_pos + 34]) * w[0];\n\t\tres += (inp0[local_pos + 13] + inp0[local_pos + 34]) * w[1];\n\t\tres += (inp1[local_pos + 13] + inp1[local_pos + 22]) * w[2];\n\t\tres += (inp0[local_pos + 25] + inp0[local_pos + 22]) * w[3];\n\t\tw = texture(ravu_lut2, vec2(0.75, coord_y));\n\t\tres += (inp0[local_pos + 12] + inp0[local_pos + 35]) * w[0];\n\t\tres += (inp1[local_pos + 12] + inp1[local_pos + 23]) * w[1];\n\t\tres += (inp0[local_pos + 24] + inp0[local_pos + 23]) * w[2];\n\t\tres += (inp1[local_pos + 24] + inp1[local_pos + 11]) * w[3];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), res);\n\t}\n\tfloat res;\n\tres = inp0[local_pos + 24];\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), res);\n\tres = inp1[local_pos + 12];\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), res);\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_R2_RGB.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu.py --target rgb --weights-file weights\\ravu_weights-r2.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!SOURCE ravu_lut2_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_lut2;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_lut2;\n\n//!TEXTURE\n//!FORMAT R16G16B16A16_FLOAT\n//!WIDTH  INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D ravu_int11;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_ravu_int11;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC RAVU (step1, rgb, r2, compute)\n//!IN INPUT, ravu_lut2\n//!OUT ravu_int11\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\nshared vec3 inp0[385];\nshared float inp_luma0[385];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.xyz)\nvoid imageStoreOverride(uint2 pos, vec3 value) { ravu_int11[pos] = vec4(value, 0.0); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lut2_tex(pos) (vec4(texture(ravu_lut2, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 11 + int(gl_LocalInvocationID.y);\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 385; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 11, y = (uint)id % 11;\n\t\t\tinp0[id] =\n\t\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-0.5), float(group_base.y + y) + (-0.5))).xyz;\n\t\t\tinp_luma0[id] = dot(inp0[id], color_primary);\n\t\t}\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\t{\n\t\tfloat luma0 = inp_luma0[local_pos + 0];\n\t\tfloat luma4 = inp_luma0[local_pos + 11];\n\t\tfloat luma5 = inp_luma0[local_pos + 12];\n\t\tfloat luma6 = inp_luma0[local_pos + 13];\n\t\tfloat luma7 = inp_luma0[local_pos + 14];\n\t\tfloat luma1 = inp_luma0[local_pos + 1];\n\t\tfloat luma8 = inp_luma0[local_pos + 22];\n\t\tfloat luma9 = inp_luma0[local_pos + 23];\n\t\tfloat luma10 = inp_luma0[local_pos + 24];\n\t\tfloat luma11 = inp_luma0[local_pos + 25];\n\t\tfloat luma2 = inp_luma0[local_pos + 2];\n\t\tfloat luma12 = inp_luma0[local_pos + 33];\n\t\tfloat luma13 = inp_luma0[local_pos + 34];\n\t\tfloat luma14 = inp_luma0[local_pos + 35];\n\t\tfloat luma15 = inp_luma0[local_pos + 36];\n\t\tfloat luma3 = inp_luma0[local_pos + 3];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma4 - luma0);\n\t\tgy = (luma1 - luma0);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma5 - luma1);\n\t\tgy = (luma2 - luma0) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma6 - luma2);\n\t\tgy = (luma3 - luma1) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma7 - luma3);\n\t\tgy = (luma3 - luma2);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma8 - luma0) / 2.0;\n\t\tgy = (luma5 - luma4);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma9 - luma1) / 2.0;\n\t\tgy = (luma6 - luma4) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma10 - luma2) / 2.0;\n\t\tgy = (luma7 - luma5) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma11 - luma3) / 2.0;\n\t\tgy = (luma7 - luma6);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma12 - luma4) / 2.0;\n\t\tgy = (luma9 - luma8);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma13 - luma5) / 2.0;\n\t\tgy = (luma10 - luma8) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma14 - luma6) / 2.0;\n\t\tgy = (luma11 - luma9) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma15 - luma7) / 2.0;\n\t\tgy = (luma11 - luma10);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma12 - luma8);\n\t\tgy = (luma13 - luma12);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma13 - luma9);\n\t\tgy = (luma14 - luma12) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma14 - luma10);\n\t\tgy = (luma15 - luma13) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma15 - luma11);\n\t\tgy = (luma15 - luma14);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tvec3 res = vec3(0.0, 0.0, 0.0);\n\t\tvec4 w;\n\t\tw = texture(ravu_lut2, vec2(0.25, coord_y));\n\t\tres += (inp0[local_pos + 0] + inp0[local_pos + 36]) * w[0];\n\t\tres += (inp0[local_pos + 1] + inp0[local_pos + 35]) * w[1];\n\t\tres += (inp0[local_pos + 2] + inp0[local_pos + 34]) * w[2];\n\t\tres += (inp0[local_pos + 3] + inp0[local_pos + 33]) * w[3];\n\t\tw = texture(ravu_lut2, vec2(0.75, coord_y));\n\t\tres += (inp0[local_pos + 11] + inp0[local_pos + 25]) * w[0];\n\t\tres += (inp0[local_pos + 12] + inp0[local_pos + 24]) * w[1];\n\t\tres += (inp0[local_pos + 13] + inp0[local_pos + 23]) * w[2];\n\t\tres += (inp0[local_pos + 14] + inp0[local_pos + 22]) * w[3];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID), vec4(res, 1.0));\n\t}\n}\n//!PASS 2\n//!DESC RAVU (step2, rgb, r2, compute)\n//!IN INPUT, ravu_lut2, ravu_int11\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 16\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\nshared vec3 inp0[385];\nshared float inp_luma0[385];\nshared vec3 inp1[385];\nshared float inp_luma1[385];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val)\nvoid imageStoreOverride(uint2 pos, float4 value) { OUTPUT[pos] = value; }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lut2_tex(pos) (vec4(texture(ravu_lut2, pos)))\n\n#define ravu_int11_tex(pos) (vec3(texture(ravu_int11, pos).xyz))\nstatic const float2 ravu_int11_size = float2(GetInputSize().x, GetInputSize().y);\nstatic const float2 ravu_int11_pt = float2(1.0 / (ravu_int11_size.x), 1.0 / (ravu_int11_size.y));\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 11 + int(gl_LocalInvocationID.y);\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 385; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 11, y = (uint)id % 11;\n\t\t\tinp0[id] =\n\t\t\t\travu_int11_tex(ravu_int11_pt * vec2(float(group_base.x + x) + (-1.5), float(group_base.y + y) + (-1.5)))\n\t\t\t\t\t.xyz;\n\t\t\tinp_luma0[id] = dot(inp0[id], color_primary);\n\t\t}\n\t}\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 385; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 11, y = (uint)id % 11;\n\t\t\tinp1[id] =\n\t\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-0.5), float(group_base.y + y) + (-0.5))).xyz;\n\t\t\tinp_luma1[id] = dot(inp1[id], color_primary);\n\t\t}\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\t{\n\t\tfloat luma8 = inp_luma0[local_pos + 12];\n\t\tfloat luma5 = inp_luma0[local_pos + 13];\n\t\tfloat luma2 = inp_luma0[local_pos + 14];\n\t\tfloat luma13 = inp_luma0[local_pos + 23];\n\t\tfloat luma10 = inp_luma0[local_pos + 24];\n\t\tfloat luma7 = inp_luma0[local_pos + 25];\n\t\tfloat luma0 = inp_luma0[local_pos + 2];\n\t\tfloat luma15 = inp_luma0[local_pos + 35];\n\t\tfloat luma12 = inp_luma1[local_pos + 11];\n\t\tfloat luma9 = inp_luma1[local_pos + 12];\n\t\tfloat luma6 = inp_luma1[local_pos + 13];\n\t\tfloat luma3 = inp_luma1[local_pos + 14];\n\t\tfloat luma4 = inp_luma1[local_pos + 1];\n\t\tfloat luma14 = inp_luma1[local_pos + 23];\n\t\tfloat luma11 = inp_luma1[local_pos + 24];\n\t\tfloat luma1 = inp_luma1[local_pos + 2];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma4 - luma0);\n\t\tgy = (luma1 - luma0);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma5 - luma1);\n\t\tgy = (luma2 - luma0) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma6 - luma2);\n\t\tgy = (luma3 - luma1) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma7 - luma3);\n\t\tgy = (luma3 - luma2);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma8 - luma0) / 2.0;\n\t\tgy = (luma5 - luma4);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma9 - luma1) / 2.0;\n\t\tgy = (luma6 - luma4) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma10 - luma2) / 2.0;\n\t\tgy = (luma7 - luma5) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma11 - luma3) / 2.0;\n\t\tgy = (luma7 - luma6);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma12 - luma4) / 2.0;\n\t\tgy = (luma9 - luma8);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma13 - luma5) / 2.0;\n\t\tgy = (luma10 - luma8) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma14 - luma6) / 2.0;\n\t\tgy = (luma11 - luma9) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma15 - luma7) / 2.0;\n\t\tgy = (luma11 - luma10);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma12 - luma8);\n\t\tgy = (luma13 - luma12);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma13 - luma9);\n\t\tgy = (luma14 - luma12) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma14 - luma10);\n\t\tgy = (luma15 - luma13) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma15 - luma11);\n\t\tgy = (luma15 - luma14);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tvec3 res = vec3(0.0, 0.0, 0.0);\n\t\tvec4 w;\n\t\tw = texture(ravu_lut2, vec2(0.25, coord_y));\n\t\tres += (inp0[local_pos + 2] + inp0[local_pos + 35]) * w[0];\n\t\tres += (inp1[local_pos + 2] + inp1[local_pos + 23]) * w[1];\n\t\tres += (inp0[local_pos + 14] + inp0[local_pos + 23]) * w[2];\n\t\tres += (inp1[local_pos + 14] + inp1[local_pos + 11]) * w[3];\n\t\tw = texture(ravu_lut2, vec2(0.75, coord_y));\n\t\tres += (inp1[local_pos + 1] + inp1[local_pos + 24]) * w[0];\n\t\tres += (inp0[local_pos + 13] + inp0[local_pos + 24]) * w[1];\n\t\tres += (inp1[local_pos + 13] + inp1[local_pos + 12]) * w[2];\n\t\tres += (inp0[local_pos + 25] + inp0[local_pos + 12]) * w[3];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), vec4(res, 1.0));\n\t}\n\t{\n\t\tfloat luma4 = inp_luma0[local_pos + 12];\n\t\tfloat luma1 = inp_luma0[local_pos + 13];\n\t\tfloat luma12 = inp_luma0[local_pos + 22];\n\t\tfloat luma9 = inp_luma0[local_pos + 23];\n\t\tfloat luma6 = inp_luma0[local_pos + 24];\n\t\tfloat luma3 = inp_luma0[local_pos + 25];\n\t\tfloat luma14 = inp_luma0[local_pos + 34];\n\t\tfloat luma11 = inp_luma0[local_pos + 35];\n\t\tfloat luma8 = inp_luma1[local_pos + 11];\n\t\tfloat luma5 = inp_luma1[local_pos + 12];\n\t\tfloat luma2 = inp_luma1[local_pos + 13];\n\t\tfloat luma0 = inp_luma1[local_pos + 1];\n\t\tfloat luma13 = inp_luma1[local_pos + 22];\n\t\tfloat luma10 = inp_luma1[local_pos + 23];\n\t\tfloat luma7 = inp_luma1[local_pos + 24];\n\t\tfloat luma15 = inp_luma1[local_pos + 34];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma4 - luma0);\n\t\tgy = (luma1 - luma0);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma5 - luma1);\n\t\tgy = (luma2 - luma0) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma6 - luma2);\n\t\tgy = (luma3 - luma1) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma7 - luma3);\n\t\tgy = (luma3 - luma2);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma8 - luma0) / 2.0;\n\t\tgy = (luma5 - luma4);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma9 - luma1) / 2.0;\n\t\tgy = (luma6 - luma4) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma10 - luma2) / 2.0;\n\t\tgy = (luma7 - luma5) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma11 - luma3) / 2.0;\n\t\tgy = (luma7 - luma6);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma12 - luma4) / 2.0;\n\t\tgy = (luma9 - luma8);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma13 - luma5) / 2.0;\n\t\tgy = (luma10 - luma8) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma14 - luma6) / 2.0;\n\t\tgy = (luma11 - luma9) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (luma15 - luma7) / 2.0;\n\t\tgy = (luma11 - luma10);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma12 - luma8);\n\t\tgy = (luma13 - luma12);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma13 - luma9);\n\t\tgy = (luma14 - luma12) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma14 - luma10);\n\t\tgy = (luma15 - luma13) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma15 - luma11);\n\t\tgy = (luma15 - luma14);\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tvec3 res = vec3(0.0, 0.0, 0.0);\n\t\tvec4 w;\n\t\tw = texture(ravu_lut2, vec2(0.25, coord_y));\n\t\tres += (inp1[local_pos + 1] + inp1[local_pos + 34]) * w[0];\n\t\tres += (inp0[local_pos + 13] + inp0[local_pos + 34]) * w[1];\n\t\tres += (inp1[local_pos + 13] + inp1[local_pos + 22]) * w[2];\n\t\tres += (inp0[local_pos + 25] + inp0[local_pos + 22]) * w[3];\n\t\tw = texture(ravu_lut2, vec2(0.75, coord_y));\n\t\tres += (inp0[local_pos + 12] + inp0[local_pos + 35]) * w[0];\n\t\tres += (inp1[local_pos + 12] + inp1[local_pos + 23]) * w[1];\n\t\tres += (inp0[local_pos + 24] + inp0[local_pos + 23]) * w[2];\n\t\tres += (inp1[local_pos + 24] + inp1[local_pos + 11]) * w[3];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), vec4(res, 1.0));\n\t}\n\tvec3 res;\n\tres = inp0[local_pos + 24];\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), vec4(res, 1.0));\n\tres = inp1[local_pos + 12];\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), vec4(res, 1.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_R3.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu.py --target luma --weights-file weights\\ravu_weights-r3.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_lut3_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_lut3;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_lut3;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D ravu_int11;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_ravu_int11;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC RAVU (step1, luma, r3, compute)\n//!IN INPUT, ravu_lut3\n//!OUT ravu_int11\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\nshared float inp0[481];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { ravu_int11[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lut3_tex(pos) (vec4(texture(ravu_lut3, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 13 + int(gl_LocalInvocationID.y);\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 481; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 13, y = (uint)id % 13;\n\t\t\tinp0[id] =\n\t\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-1.5), float(group_base.y + y) + (-1.5))).x;\n\t\t}\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\t{\n\t\tfloat luma6 = inp0[local_pos + 13];\n\t\tfloat luma7 = inp0[local_pos + 14];\n\t\tfloat luma8 = inp0[local_pos + 15];\n\t\tfloat luma9 = inp0[local_pos + 16];\n\t\tfloat luma10 = inp0[local_pos + 17];\n\t\tfloat luma11 = inp0[local_pos + 18];\n\t\tfloat luma1 = inp0[local_pos + 1];\n\t\tfloat luma12 = inp0[local_pos + 26];\n\t\tfloat luma13 = inp0[local_pos + 27];\n\t\tfloat luma14 = inp0[local_pos + 28];\n\t\tfloat luma15 = inp0[local_pos + 29];\n\t\tfloat luma2 = inp0[local_pos + 2];\n\t\tfloat luma16 = inp0[local_pos + 30];\n\t\tfloat luma17 = inp0[local_pos + 31];\n\t\tfloat luma18 = inp0[local_pos + 39];\n\t\tfloat luma3 = inp0[local_pos + 3];\n\t\tfloat luma19 = inp0[local_pos + 40];\n\t\tfloat luma20 = inp0[local_pos + 41];\n\t\tfloat luma21 = inp0[local_pos + 42];\n\t\tfloat luma22 = inp0[local_pos + 43];\n\t\tfloat luma23 = inp0[local_pos + 44];\n\t\tfloat luma4 = inp0[local_pos + 4];\n\t\tfloat luma24 = inp0[local_pos + 52];\n\t\tfloat luma25 = inp0[local_pos + 53];\n\t\tfloat luma26 = inp0[local_pos + 54];\n\t\tfloat luma27 = inp0[local_pos + 55];\n\t\tfloat luma28 = inp0[local_pos + 56];\n\t\tfloat luma29 = inp0[local_pos + 57];\n\t\tfloat luma31 = inp0[local_pos + 66];\n\t\tfloat luma32 = inp0[local_pos + 67];\n\t\tfloat luma33 = inp0[local_pos + 68];\n\t\tfloat luma34 = inp0[local_pos + 69];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma13 - luma1) / 2.0;\n\t\tgy = (luma8 - luma6) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma14 - luma2) / 2.0;\n\t\tgy = (-luma10 + 8.0 * luma9 - 8.0 * luma7 + luma6) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma15 - luma3) / 2.0;\n\t\tgy = (-luma11 + 8.0 * luma10 - 8.0 * luma8 + luma7) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma16 - luma4) / 2.0;\n\t\tgy = (luma11 - luma9) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (-luma25 + 8.0 * luma19 - 8.0 * luma7 + luma1) / 12.0;\n\t\tgy = (luma14 - luma12) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma26 + 8.0 * luma20 - 8.0 * luma8 + luma2) / 12.0;\n\t\tgy = (-luma16 + 8.0 * luma15 - 8.0 * luma13 + luma12) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma27 + 8.0 * luma21 - 8.0 * luma9 + luma3) / 12.0;\n\t\tgy = (-luma17 + 8.0 * luma16 - 8.0 * luma14 + luma13) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma28 + 8.0 * luma22 - 8.0 * luma10 + luma4) / 12.0;\n\t\tgy = (luma17 - luma15) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma31 + 8.0 * luma25 - 8.0 * luma13 + luma7) / 12.0;\n\t\tgy = (luma20 - luma18) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma32 + 8.0 * luma26 - 8.0 * luma14 + luma8) / 12.0;\n\t\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma33 + 8.0 * luma27 - 8.0 * luma15 + luma9) / 12.0;\n\t\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma34 + 8.0 * luma28 - 8.0 * luma16 + luma10) / 12.0;\n\t\tgy = (luma23 - luma21) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma31 - luma19) / 2.0;\n\t\tgy = (luma26 - luma24) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma32 - luma20) / 2.0;\n\t\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma33 - luma21) / 2.0;\n\t\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma34 - luma22) / 2.0;\n\t\tgy = (luma29 - luma27) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tfloat res = 0.0;\n\t\tvec4 w;\n\t\tw = texture(ravu_lut3, vec2(0.1, coord_y));\n\t\tres += (inp0[local_pos + 0] + inp0[local_pos + 70]) * w[0];\n\t\tres += (inp0[local_pos + 1] + inp0[local_pos + 69]) * w[1];\n\t\tres += (inp0[local_pos + 2] + inp0[local_pos + 68]) * w[2];\n\t\tres += (inp0[local_pos + 3] + inp0[local_pos + 67]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.3, coord_y));\n\t\tres += (inp0[local_pos + 4] + inp0[local_pos + 66]) * w[0];\n\t\tres += (inp0[local_pos + 5] + inp0[local_pos + 65]) * w[1];\n\t\tres += (inp0[local_pos + 13] + inp0[local_pos + 57]) * w[2];\n\t\tres += (inp0[local_pos + 14] + inp0[local_pos + 56]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.5, coord_y));\n\t\tres += (inp0[local_pos + 15] + inp0[local_pos + 55]) * w[0];\n\t\tres += (inp0[local_pos + 16] + inp0[local_pos + 54]) * w[1];\n\t\tres += (inp0[local_pos + 17] + inp0[local_pos + 53]) * w[2];\n\t\tres += (inp0[local_pos + 18] + inp0[local_pos + 52]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.7, coord_y));\n\t\tres += (inp0[local_pos + 26] + inp0[local_pos + 44]) * w[0];\n\t\tres += (inp0[local_pos + 27] + inp0[local_pos + 43]) * w[1];\n\t\tres += (inp0[local_pos + 28] + inp0[local_pos + 42]) * w[2];\n\t\tres += (inp0[local_pos + 29] + inp0[local_pos + 41]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.9, coord_y));\n\t\tres += (inp0[local_pos + 30] + inp0[local_pos + 40]) * w[0];\n\t\tres += (inp0[local_pos + 31] + inp0[local_pos + 39]) * w[1];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID), res);\n\t}\n}\n//!PASS 2\n//!DESC RAVU (step2, luma, r3, compute)\n//!IN INPUT, ravu_lut3, ravu_int11\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 16\n//!NUM_THREADS 32, 8\nshared float inp0[481];\nshared float inp1[481];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lut3_tex(pos) (vec4(texture(ravu_lut3, pos)))\n\n#define ravu_int11_tex(pos) (float(texture(ravu_int11, pos).x))\nstatic const float2 ravu_int11_size = float2(GetInputSize().x, GetInputSize().y);\nstatic const float2 ravu_int11_pt = float2(1.0 / (ravu_int11_size.x), 1.0 / (ravu_int11_size.y));\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 13 + int(gl_LocalInvocationID.y);\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 481; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 13, y = (uint)id % 13;\n\t\t\tinp0[id] =\n\t\t\t\travu_int11_tex(ravu_int11_pt * vec2(float(group_base.x + x) + (-2.5), float(group_base.y + y) + (-2.5)))\n\t\t\t\t\t.x;\n\t\t}\n\t}\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 481; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 13, y = (uint)id % 13;\n\t\t\tinp1[id] =\n\t\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-1.5), float(group_base.y + y) + (-1.5))).x;\n\t\t}\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\t{\n\t\tfloat luma12 = inp0[local_pos + 15];\n\t\tfloat luma7 = inp0[local_pos + 16];\n\t\tfloat luma2 = inp0[local_pos + 17];\n\t\tfloat luma24 = inp0[local_pos + 27];\n\t\tfloat luma19 = inp0[local_pos + 28];\n\t\tfloat luma14 = inp0[local_pos + 29];\n\t\tfloat luma9 = inp0[local_pos + 30];\n\t\tfloat luma4 = inp0[local_pos + 31];\n\t\tfloat luma31 = inp0[local_pos + 40];\n\t\tfloat luma26 = inp0[local_pos + 41];\n\t\tfloat luma21 = inp0[local_pos + 42];\n\t\tfloat luma16 = inp0[local_pos + 43];\n\t\tfloat luma11 = inp0[local_pos + 44];\n\t\tfloat luma33 = inp0[local_pos + 54];\n\t\tfloat luma28 = inp0[local_pos + 55];\n\t\tfloat luma23 = inp0[local_pos + 56];\n\t\tfloat luma18 = inp1[local_pos + 14];\n\t\tfloat luma13 = inp1[local_pos + 15];\n\t\tfloat luma8 = inp1[local_pos + 16];\n\t\tfloat luma3 = inp1[local_pos + 17];\n\t\tfloat luma25 = inp1[local_pos + 27];\n\t\tfloat luma20 = inp1[local_pos + 28];\n\t\tfloat luma15 = inp1[local_pos + 29];\n\t\tfloat luma6 = inp1[local_pos + 2];\n\t\tfloat luma10 = inp1[local_pos + 30];\n\t\tfloat luma1 = inp1[local_pos + 3];\n\t\tfloat luma32 = inp1[local_pos + 40];\n\t\tfloat luma27 = inp1[local_pos + 41];\n\t\tfloat luma22 = inp1[local_pos + 42];\n\t\tfloat luma17 = inp1[local_pos + 43];\n\t\tfloat luma34 = inp1[local_pos + 54];\n\t\tfloat luma29 = inp1[local_pos + 55];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma13 - luma1) / 2.0;\n\t\tgy = (luma8 - luma6) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma14 - luma2) / 2.0;\n\t\tgy = (-luma10 + 8.0 * luma9 - 8.0 * luma7 + luma6) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma15 - luma3) / 2.0;\n\t\tgy = (-luma11 + 8.0 * luma10 - 8.0 * luma8 + luma7) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma16 - luma4) / 2.0;\n\t\tgy = (luma11 - luma9) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (-luma25 + 8.0 * luma19 - 8.0 * luma7 + luma1) / 12.0;\n\t\tgy = (luma14 - luma12) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma26 + 8.0 * luma20 - 8.0 * luma8 + luma2) / 12.0;\n\t\tgy = (-luma16 + 8.0 * luma15 - 8.0 * luma13 + luma12) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma27 + 8.0 * luma21 - 8.0 * luma9 + luma3) / 12.0;\n\t\tgy = (-luma17 + 8.0 * luma16 - 8.0 * luma14 + luma13) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma28 + 8.0 * luma22 - 8.0 * luma10 + luma4) / 12.0;\n\t\tgy = (luma17 - luma15) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma31 + 8.0 * luma25 - 8.0 * luma13 + luma7) / 12.0;\n\t\tgy = (luma20 - luma18) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma32 + 8.0 * luma26 - 8.0 * luma14 + luma8) / 12.0;\n\t\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma33 + 8.0 * luma27 - 8.0 * luma15 + luma9) / 12.0;\n\t\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma34 + 8.0 * luma28 - 8.0 * luma16 + luma10) / 12.0;\n\t\tgy = (luma23 - luma21) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma31 - luma19) / 2.0;\n\t\tgy = (luma26 - luma24) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma32 - luma20) / 2.0;\n\t\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma33 - luma21) / 2.0;\n\t\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma34 - luma22) / 2.0;\n\t\tgy = (luma29 - luma27) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tfloat res = 0.0;\n\t\tvec4 w;\n\t\tw = texture(ravu_lut3, vec2(0.1, coord_y));\n\t\tres += (inp0[local_pos + 3] + inp0[local_pos + 68]) * w[0];\n\t\tres += (inp1[local_pos + 3] + inp1[local_pos + 54]) * w[1];\n\t\tres += (inp0[local_pos + 17] + inp0[local_pos + 54]) * w[2];\n\t\tres += (inp1[local_pos + 17] + inp1[local_pos + 40]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.3, coord_y));\n\t\tres += (inp0[local_pos + 31] + inp0[local_pos + 40]) * w[0];\n\t\tres += (inp1[local_pos + 31] + inp1[local_pos + 26]) * w[1];\n\t\tres += (inp1[local_pos + 2] + inp1[local_pos + 55]) * w[2];\n\t\tres += (inp0[local_pos + 16] + inp0[local_pos + 55]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.5, coord_y));\n\t\tres += (inp1[local_pos + 16] + inp1[local_pos + 41]) * w[0];\n\t\tres += (inp0[local_pos + 30] + inp0[local_pos + 41]) * w[1];\n\t\tres += (inp1[local_pos + 30] + inp1[local_pos + 27]) * w[2];\n\t\tres += (inp0[local_pos + 44] + inp0[local_pos + 27]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.7, coord_y));\n\t\tres += (inp0[local_pos + 15] + inp0[local_pos + 56]) * w[0];\n\t\tres += (inp1[local_pos + 15] + inp1[local_pos + 42]) * w[1];\n\t\tres += (inp0[local_pos + 29] + inp0[local_pos + 42]) * w[2];\n\t\tres += (inp1[local_pos + 29] + inp1[local_pos + 28]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.9, coord_y));\n\t\tres += (inp0[local_pos + 43] + inp0[local_pos + 28]) * w[0];\n\t\tres += (inp1[local_pos + 43] + inp1[local_pos + 14]) * w[1];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), res);\n\t}\n\t{\n\t\tfloat luma6 = inp0[local_pos + 15];\n\t\tfloat luma1 = inp0[local_pos + 16];\n\t\tfloat luma18 = inp0[local_pos + 27];\n\t\tfloat luma13 = inp0[local_pos + 28];\n\t\tfloat luma8 = inp0[local_pos + 29];\n\t\tfloat luma3 = inp0[local_pos + 30];\n\t\tfloat luma25 = inp0[local_pos + 40];\n\t\tfloat luma20 = inp0[local_pos + 41];\n\t\tfloat luma15 = inp0[local_pos + 42];\n\t\tfloat luma10 = inp0[local_pos + 43];\n\t\tfloat luma32 = inp0[local_pos + 53];\n\t\tfloat luma27 = inp0[local_pos + 54];\n\t\tfloat luma22 = inp0[local_pos + 55];\n\t\tfloat luma17 = inp0[local_pos + 56];\n\t\tfloat luma34 = inp0[local_pos + 67];\n\t\tfloat luma29 = inp0[local_pos + 68];\n\t\tfloat luma12 = inp1[local_pos + 14];\n\t\tfloat luma7 = inp1[local_pos + 15];\n\t\tfloat luma2 = inp1[local_pos + 16];\n\t\tfloat luma24 = inp1[local_pos + 26];\n\t\tfloat luma19 = inp1[local_pos + 27];\n\t\tfloat luma14 = inp1[local_pos + 28];\n\t\tfloat luma9 = inp1[local_pos + 29];\n\t\tfloat luma4 = inp1[local_pos + 30];\n\t\tfloat luma31 = inp1[local_pos + 39];\n\t\tfloat luma26 = inp1[local_pos + 40];\n\t\tfloat luma21 = inp1[local_pos + 41];\n\t\tfloat luma16 = inp1[local_pos + 42];\n\t\tfloat luma11 = inp1[local_pos + 43];\n\t\tfloat luma33 = inp1[local_pos + 53];\n\t\tfloat luma28 = inp1[local_pos + 54];\n\t\tfloat luma23 = inp1[local_pos + 55];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma13 - luma1) / 2.0;\n\t\tgy = (luma8 - luma6) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma14 - luma2) / 2.0;\n\t\tgy = (-luma10 + 8.0 * luma9 - 8.0 * luma7 + luma6) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma15 - luma3) / 2.0;\n\t\tgy = (-luma11 + 8.0 * luma10 - 8.0 * luma8 + luma7) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma16 - luma4) / 2.0;\n\t\tgy = (luma11 - luma9) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (-luma25 + 8.0 * luma19 - 8.0 * luma7 + luma1) / 12.0;\n\t\tgy = (luma14 - luma12) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma26 + 8.0 * luma20 - 8.0 * luma8 + luma2) / 12.0;\n\t\tgy = (-luma16 + 8.0 * luma15 - 8.0 * luma13 + luma12) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma27 + 8.0 * luma21 - 8.0 * luma9 + luma3) / 12.0;\n\t\tgy = (-luma17 + 8.0 * luma16 - 8.0 * luma14 + luma13) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma28 + 8.0 * luma22 - 8.0 * luma10 + luma4) / 12.0;\n\t\tgy = (luma17 - luma15) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma31 + 8.0 * luma25 - 8.0 * luma13 + luma7) / 12.0;\n\t\tgy = (luma20 - luma18) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma32 + 8.0 * luma26 - 8.0 * luma14 + luma8) / 12.0;\n\t\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma33 + 8.0 * luma27 - 8.0 * luma15 + luma9) / 12.0;\n\t\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma34 + 8.0 * luma28 - 8.0 * luma16 + luma10) / 12.0;\n\t\tgy = (luma23 - luma21) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma31 - luma19) / 2.0;\n\t\tgy = (luma26 - luma24) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma32 - luma20) / 2.0;\n\t\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma33 - luma21) / 2.0;\n\t\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma34 - luma22) / 2.0;\n\t\tgy = (luma29 - luma27) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tfloat res = 0.0;\n\t\tvec4 w;\n\t\tw = texture(ravu_lut3, vec2(0.1, coord_y));\n\t\tres += (inp1[local_pos + 2] + inp1[local_pos + 67]) * w[0];\n\t\tres += (inp0[local_pos + 16] + inp0[local_pos + 67]) * w[1];\n\t\tres += (inp1[local_pos + 16] + inp1[local_pos + 53]) * w[2];\n\t\tres += (inp0[local_pos + 30] + inp0[local_pos + 53]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.3, coord_y));\n\t\tres += (inp1[local_pos + 30] + inp1[local_pos + 39]) * w[0];\n\t\tres += (inp0[local_pos + 44] + inp0[local_pos + 39]) * w[1];\n\t\tres += (inp0[local_pos + 15] + inp0[local_pos + 68]) * w[2];\n\t\tres += (inp1[local_pos + 15] + inp1[local_pos + 54]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.5, coord_y));\n\t\tres += (inp0[local_pos + 29] + inp0[local_pos + 54]) * w[0];\n\t\tres += (inp1[local_pos + 29] + inp1[local_pos + 40]) * w[1];\n\t\tres += (inp0[local_pos + 43] + inp0[local_pos + 40]) * w[2];\n\t\tres += (inp1[local_pos + 43] + inp1[local_pos + 26]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.7, coord_y));\n\t\tres += (inp1[local_pos + 14] + inp1[local_pos + 55]) * w[0];\n\t\tres += (inp0[local_pos + 28] + inp0[local_pos + 55]) * w[1];\n\t\tres += (inp1[local_pos + 28] + inp1[local_pos + 41]) * w[2];\n\t\tres += (inp0[local_pos + 42] + inp0[local_pos + 41]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.9, coord_y));\n\t\tres += (inp1[local_pos + 42] + inp1[local_pos + 27]) * w[0];\n\t\tres += (inp0[local_pos + 56] + inp0[local_pos + 27]) * w[1];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), res);\n\t}\n\tfloat res;\n\tres = inp0[local_pos + 42];\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), res);\n\tres = inp1[local_pos + 28];\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), res);\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_R3_RGB.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu.py --target rgb --weights-file weights\\ravu_weights-r3.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!SOURCE ravu_lut3_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_lut3;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_lut3;\n\n//!TEXTURE\n//!FORMAT R16G16B16A16_FLOAT\n//!WIDTH  INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D ravu_int11;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_ravu_int11;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC RAVU (step1, rgb, r3, compute)\n//!IN INPUT, ravu_lut3\n//!OUT ravu_int11\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\nshared vec3 inp0[481];\nshared float inp_luma0[481];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.xyz)\nvoid imageStoreOverride(uint2 pos, vec3 value) { ravu_int11[pos] = vec4(value, 0.0); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lut3_tex(pos) (vec4(texture(ravu_lut3, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 13 + int(gl_LocalInvocationID.y);\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 481; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 13, y = (uint)id % 13;\n\t\t\tinp0[id] =\n\t\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-1.5), float(group_base.y + y) + (-1.5))).xyz;\n\t\t\tinp_luma0[id] = dot(inp0[id], color_primary);\n\t\t}\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\t{\n\t\tfloat luma6 = inp_luma0[local_pos + 13];\n\t\tfloat luma7 = inp_luma0[local_pos + 14];\n\t\tfloat luma8 = inp_luma0[local_pos + 15];\n\t\tfloat luma9 = inp_luma0[local_pos + 16];\n\t\tfloat luma10 = inp_luma0[local_pos + 17];\n\t\tfloat luma11 = inp_luma0[local_pos + 18];\n\t\tfloat luma1 = inp_luma0[local_pos + 1];\n\t\tfloat luma12 = inp_luma0[local_pos + 26];\n\t\tfloat luma13 = inp_luma0[local_pos + 27];\n\t\tfloat luma14 = inp_luma0[local_pos + 28];\n\t\tfloat luma15 = inp_luma0[local_pos + 29];\n\t\tfloat luma2 = inp_luma0[local_pos + 2];\n\t\tfloat luma16 = inp_luma0[local_pos + 30];\n\t\tfloat luma17 = inp_luma0[local_pos + 31];\n\t\tfloat luma18 = inp_luma0[local_pos + 39];\n\t\tfloat luma3 = inp_luma0[local_pos + 3];\n\t\tfloat luma19 = inp_luma0[local_pos + 40];\n\t\tfloat luma20 = inp_luma0[local_pos + 41];\n\t\tfloat luma21 = inp_luma0[local_pos + 42];\n\t\tfloat luma22 = inp_luma0[local_pos + 43];\n\t\tfloat luma23 = inp_luma0[local_pos + 44];\n\t\tfloat luma4 = inp_luma0[local_pos + 4];\n\t\tfloat luma24 = inp_luma0[local_pos + 52];\n\t\tfloat luma25 = inp_luma0[local_pos + 53];\n\t\tfloat luma26 = inp_luma0[local_pos + 54];\n\t\tfloat luma27 = inp_luma0[local_pos + 55];\n\t\tfloat luma28 = inp_luma0[local_pos + 56];\n\t\tfloat luma29 = inp_luma0[local_pos + 57];\n\t\tfloat luma31 = inp_luma0[local_pos + 66];\n\t\tfloat luma32 = inp_luma0[local_pos + 67];\n\t\tfloat luma33 = inp_luma0[local_pos + 68];\n\t\tfloat luma34 = inp_luma0[local_pos + 69];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma13 - luma1) / 2.0;\n\t\tgy = (luma8 - luma6) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma14 - luma2) / 2.0;\n\t\tgy = (-luma10 + 8.0 * luma9 - 8.0 * luma7 + luma6) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma15 - luma3) / 2.0;\n\t\tgy = (-luma11 + 8.0 * luma10 - 8.0 * luma8 + luma7) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma16 - luma4) / 2.0;\n\t\tgy = (luma11 - luma9) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (-luma25 + 8.0 * luma19 - 8.0 * luma7 + luma1) / 12.0;\n\t\tgy = (luma14 - luma12) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma26 + 8.0 * luma20 - 8.0 * luma8 + luma2) / 12.0;\n\t\tgy = (-luma16 + 8.0 * luma15 - 8.0 * luma13 + luma12) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma27 + 8.0 * luma21 - 8.0 * luma9 + luma3) / 12.0;\n\t\tgy = (-luma17 + 8.0 * luma16 - 8.0 * luma14 + luma13) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma28 + 8.0 * luma22 - 8.0 * luma10 + luma4) / 12.0;\n\t\tgy = (luma17 - luma15) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma31 + 8.0 * luma25 - 8.0 * luma13 + luma7) / 12.0;\n\t\tgy = (luma20 - luma18) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma32 + 8.0 * luma26 - 8.0 * luma14 + luma8) / 12.0;\n\t\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma33 + 8.0 * luma27 - 8.0 * luma15 + luma9) / 12.0;\n\t\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma34 + 8.0 * luma28 - 8.0 * luma16 + luma10) / 12.0;\n\t\tgy = (luma23 - luma21) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma31 - luma19) / 2.0;\n\t\tgy = (luma26 - luma24) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma32 - luma20) / 2.0;\n\t\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma33 - luma21) / 2.0;\n\t\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma34 - luma22) / 2.0;\n\t\tgy = (luma29 - luma27) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tvec3 res = vec3(0.0, 0.0, 0.0);\n\t\tvec4 w;\n\t\tw = texture(ravu_lut3, vec2(0.1, coord_y));\n\t\tres += (inp0[local_pos + 0] + inp0[local_pos + 70]) * w[0];\n\t\tres += (inp0[local_pos + 1] + inp0[local_pos + 69]) * w[1];\n\t\tres += (inp0[local_pos + 2] + inp0[local_pos + 68]) * w[2];\n\t\tres += (inp0[local_pos + 3] + inp0[local_pos + 67]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.3, coord_y));\n\t\tres += (inp0[local_pos + 4] + inp0[local_pos + 66]) * w[0];\n\t\tres += (inp0[local_pos + 5] + inp0[local_pos + 65]) * w[1];\n\t\tres += (inp0[local_pos + 13] + inp0[local_pos + 57]) * w[2];\n\t\tres += (inp0[local_pos + 14] + inp0[local_pos + 56]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.5, coord_y));\n\t\tres += (inp0[local_pos + 15] + inp0[local_pos + 55]) * w[0];\n\t\tres += (inp0[local_pos + 16] + inp0[local_pos + 54]) * w[1];\n\t\tres += (inp0[local_pos + 17] + inp0[local_pos + 53]) * w[2];\n\t\tres += (inp0[local_pos + 18] + inp0[local_pos + 52]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.7, coord_y));\n\t\tres += (inp0[local_pos + 26] + inp0[local_pos + 44]) * w[0];\n\t\tres += (inp0[local_pos + 27] + inp0[local_pos + 43]) * w[1];\n\t\tres += (inp0[local_pos + 28] + inp0[local_pos + 42]) * w[2];\n\t\tres += (inp0[local_pos + 29] + inp0[local_pos + 41]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.9, coord_y));\n\t\tres += (inp0[local_pos + 30] + inp0[local_pos + 40]) * w[0];\n\t\tres += (inp0[local_pos + 31] + inp0[local_pos + 39]) * w[1];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID), vec4(res, 1.0));\n\t}\n}\n//!PASS 2\n//!DESC RAVU (step2, rgb, r3, compute)\n//!IN INPUT, ravu_lut3, ravu_int11\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 16\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\nshared vec3 inp0[481];\nshared float inp_luma0[481];\nshared vec3 inp1[481];\nshared float inp_luma1[481];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val)\nvoid imageStoreOverride(uint2 pos, float4 value) { OUTPUT[pos] = value; }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lut3_tex(pos) (vec4(texture(ravu_lut3, pos)))\n\n#define ravu_int11_tex(pos) (vec3(texture(ravu_int11, pos).xyz))\nstatic const float2 ravu_int11_size = float2(GetInputSize().x, GetInputSize().y);\nstatic const float2 ravu_int11_pt = float2(1.0 / (ravu_int11_size.x), 1.0 / (ravu_int11_size.y));\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 13 + int(gl_LocalInvocationID.y);\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 481; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 13, y = (uint)id % 13;\n\t\t\tinp0[id] =\n\t\t\t\travu_int11_tex(ravu_int11_pt * vec2(float(group_base.x + x) + (-2.5), float(group_base.y + y) + (-2.5)))\n\t\t\t\t\t.xyz;\n\t\t\tinp_luma0[id] = dot(inp0[id], color_primary);\n\t\t}\n\t}\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 481; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 13, y = (uint)id % 13;\n\t\t\tinp1[id] =\n\t\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-1.5), float(group_base.y + y) + (-1.5))).xyz;\n\t\t\tinp_luma1[id] = dot(inp1[id], color_primary);\n\t\t}\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\t{\n\t\tfloat luma12 = inp_luma0[local_pos + 15];\n\t\tfloat luma7 = inp_luma0[local_pos + 16];\n\t\tfloat luma2 = inp_luma0[local_pos + 17];\n\t\tfloat luma24 = inp_luma0[local_pos + 27];\n\t\tfloat luma19 = inp_luma0[local_pos + 28];\n\t\tfloat luma14 = inp_luma0[local_pos + 29];\n\t\tfloat luma9 = inp_luma0[local_pos + 30];\n\t\tfloat luma4 = inp_luma0[local_pos + 31];\n\t\tfloat luma31 = inp_luma0[local_pos + 40];\n\t\tfloat luma26 = inp_luma0[local_pos + 41];\n\t\tfloat luma21 = inp_luma0[local_pos + 42];\n\t\tfloat luma16 = inp_luma0[local_pos + 43];\n\t\tfloat luma11 = inp_luma0[local_pos + 44];\n\t\tfloat luma33 = inp_luma0[local_pos + 54];\n\t\tfloat luma28 = inp_luma0[local_pos + 55];\n\t\tfloat luma23 = inp_luma0[local_pos + 56];\n\t\tfloat luma18 = inp_luma1[local_pos + 14];\n\t\tfloat luma13 = inp_luma1[local_pos + 15];\n\t\tfloat luma8 = inp_luma1[local_pos + 16];\n\t\tfloat luma3 = inp_luma1[local_pos + 17];\n\t\tfloat luma25 = inp_luma1[local_pos + 27];\n\t\tfloat luma20 = inp_luma1[local_pos + 28];\n\t\tfloat luma15 = inp_luma1[local_pos + 29];\n\t\tfloat luma6 = inp_luma1[local_pos + 2];\n\t\tfloat luma10 = inp_luma1[local_pos + 30];\n\t\tfloat luma1 = inp_luma1[local_pos + 3];\n\t\tfloat luma32 = inp_luma1[local_pos + 40];\n\t\tfloat luma27 = inp_luma1[local_pos + 41];\n\t\tfloat luma22 = inp_luma1[local_pos + 42];\n\t\tfloat luma17 = inp_luma1[local_pos + 43];\n\t\tfloat luma34 = inp_luma1[local_pos + 54];\n\t\tfloat luma29 = inp_luma1[local_pos + 55];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma13 - luma1) / 2.0;\n\t\tgy = (luma8 - luma6) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma14 - luma2) / 2.0;\n\t\tgy = (-luma10 + 8.0 * luma9 - 8.0 * luma7 + luma6) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma15 - luma3) / 2.0;\n\t\tgy = (-luma11 + 8.0 * luma10 - 8.0 * luma8 + luma7) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma16 - luma4) / 2.0;\n\t\tgy = (luma11 - luma9) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (-luma25 + 8.0 * luma19 - 8.0 * luma7 + luma1) / 12.0;\n\t\tgy = (luma14 - luma12) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma26 + 8.0 * luma20 - 8.0 * luma8 + luma2) / 12.0;\n\t\tgy = (-luma16 + 8.0 * luma15 - 8.0 * luma13 + luma12) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma27 + 8.0 * luma21 - 8.0 * luma9 + luma3) / 12.0;\n\t\tgy = (-luma17 + 8.0 * luma16 - 8.0 * luma14 + luma13) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma28 + 8.0 * luma22 - 8.0 * luma10 + luma4) / 12.0;\n\t\tgy = (luma17 - luma15) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma31 + 8.0 * luma25 - 8.0 * luma13 + luma7) / 12.0;\n\t\tgy = (luma20 - luma18) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma32 + 8.0 * luma26 - 8.0 * luma14 + luma8) / 12.0;\n\t\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma33 + 8.0 * luma27 - 8.0 * luma15 + luma9) / 12.0;\n\t\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma34 + 8.0 * luma28 - 8.0 * luma16 + luma10) / 12.0;\n\t\tgy = (luma23 - luma21) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma31 - luma19) / 2.0;\n\t\tgy = (luma26 - luma24) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma32 - luma20) / 2.0;\n\t\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma33 - luma21) / 2.0;\n\t\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma34 - luma22) / 2.0;\n\t\tgy = (luma29 - luma27) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tvec3 res = vec3(0.0, 0.0, 0.0);\n\t\tvec4 w;\n\t\tw = texture(ravu_lut3, vec2(0.1, coord_y));\n\t\tres += (inp0[local_pos + 3] + inp0[local_pos + 68]) * w[0];\n\t\tres += (inp1[local_pos + 3] + inp1[local_pos + 54]) * w[1];\n\t\tres += (inp0[local_pos + 17] + inp0[local_pos + 54]) * w[2];\n\t\tres += (inp1[local_pos + 17] + inp1[local_pos + 40]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.3, coord_y));\n\t\tres += (inp0[local_pos + 31] + inp0[local_pos + 40]) * w[0];\n\t\tres += (inp1[local_pos + 31] + inp1[local_pos + 26]) * w[1];\n\t\tres += (inp1[local_pos + 2] + inp1[local_pos + 55]) * w[2];\n\t\tres += (inp0[local_pos + 16] + inp0[local_pos + 55]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.5, coord_y));\n\t\tres += (inp1[local_pos + 16] + inp1[local_pos + 41]) * w[0];\n\t\tres += (inp0[local_pos + 30] + inp0[local_pos + 41]) * w[1];\n\t\tres += (inp1[local_pos + 30] + inp1[local_pos + 27]) * w[2];\n\t\tres += (inp0[local_pos + 44] + inp0[local_pos + 27]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.7, coord_y));\n\t\tres += (inp0[local_pos + 15] + inp0[local_pos + 56]) * w[0];\n\t\tres += (inp1[local_pos + 15] + inp1[local_pos + 42]) * w[1];\n\t\tres += (inp0[local_pos + 29] + inp0[local_pos + 42]) * w[2];\n\t\tres += (inp1[local_pos + 29] + inp1[local_pos + 28]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.9, coord_y));\n\t\tres += (inp0[local_pos + 43] + inp0[local_pos + 28]) * w[0];\n\t\tres += (inp1[local_pos + 43] + inp1[local_pos + 14]) * w[1];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), vec4(res, 1.0));\n\t}\n\t{\n\t\tfloat luma6 = inp_luma0[local_pos + 15];\n\t\tfloat luma1 = inp_luma0[local_pos + 16];\n\t\tfloat luma18 = inp_luma0[local_pos + 27];\n\t\tfloat luma13 = inp_luma0[local_pos + 28];\n\t\tfloat luma8 = inp_luma0[local_pos + 29];\n\t\tfloat luma3 = inp_luma0[local_pos + 30];\n\t\tfloat luma25 = inp_luma0[local_pos + 40];\n\t\tfloat luma20 = inp_luma0[local_pos + 41];\n\t\tfloat luma15 = inp_luma0[local_pos + 42];\n\t\tfloat luma10 = inp_luma0[local_pos + 43];\n\t\tfloat luma32 = inp_luma0[local_pos + 53];\n\t\tfloat luma27 = inp_luma0[local_pos + 54];\n\t\tfloat luma22 = inp_luma0[local_pos + 55];\n\t\tfloat luma17 = inp_luma0[local_pos + 56];\n\t\tfloat luma34 = inp_luma0[local_pos + 67];\n\t\tfloat luma29 = inp_luma0[local_pos + 68];\n\t\tfloat luma12 = inp_luma1[local_pos + 14];\n\t\tfloat luma7 = inp_luma1[local_pos + 15];\n\t\tfloat luma2 = inp_luma1[local_pos + 16];\n\t\tfloat luma24 = inp_luma1[local_pos + 26];\n\t\tfloat luma19 = inp_luma1[local_pos + 27];\n\t\tfloat luma14 = inp_luma1[local_pos + 28];\n\t\tfloat luma9 = inp_luma1[local_pos + 29];\n\t\tfloat luma4 = inp_luma1[local_pos + 30];\n\t\tfloat luma31 = inp_luma1[local_pos + 39];\n\t\tfloat luma26 = inp_luma1[local_pos + 40];\n\t\tfloat luma21 = inp_luma1[local_pos + 41];\n\t\tfloat luma16 = inp_luma1[local_pos + 42];\n\t\tfloat luma11 = inp_luma1[local_pos + 43];\n\t\tfloat luma33 = inp_luma1[local_pos + 53];\n\t\tfloat luma28 = inp_luma1[local_pos + 54];\n\t\tfloat luma23 = inp_luma1[local_pos + 55];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma13 - luma1) / 2.0;\n\t\tgy = (luma8 - luma6) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma14 - luma2) / 2.0;\n\t\tgy = (-luma10 + 8.0 * luma9 - 8.0 * luma7 + luma6) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma15 - luma3) / 2.0;\n\t\tgy = (-luma11 + 8.0 * luma10 - 8.0 * luma8 + luma7) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma16 - luma4) / 2.0;\n\t\tgy = (luma11 - luma9) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (-luma25 + 8.0 * luma19 - 8.0 * luma7 + luma1) / 12.0;\n\t\tgy = (luma14 - luma12) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma26 + 8.0 * luma20 - 8.0 * luma8 + luma2) / 12.0;\n\t\tgy = (-luma16 + 8.0 * luma15 - 8.0 * luma13 + luma12) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma27 + 8.0 * luma21 - 8.0 * luma9 + luma3) / 12.0;\n\t\tgy = (-luma17 + 8.0 * luma16 - 8.0 * luma14 + luma13) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma28 + 8.0 * luma22 - 8.0 * luma10 + luma4) / 12.0;\n\t\tgy = (luma17 - luma15) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma31 + 8.0 * luma25 - 8.0 * luma13 + luma7) / 12.0;\n\t\tgy = (luma20 - luma18) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (-luma32 + 8.0 * luma26 - 8.0 * luma14 + luma8) / 12.0;\n\t\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma33 + 8.0 * luma27 - 8.0 * luma15 + luma9) / 12.0;\n\t\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\t\tgx = (-luma34 + 8.0 * luma28 - 8.0 * luma16 + luma10) / 12.0;\n\t\tgy = (luma23 - luma21) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma31 - luma19) / 2.0;\n\t\tgy = (luma26 - luma24) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tgx = (luma32 - luma20) / 2.0;\n\t\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma33 - luma21) / 2.0;\n\t\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\t\tgx = (luma34 - luma22) / 2.0;\n\t\tgy = (luma29 - luma27) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tvec3 res = vec3(0.0, 0.0, 0.0);\n\t\tvec4 w;\n\t\tw = texture(ravu_lut3, vec2(0.1, coord_y));\n\t\tres += (inp1[local_pos + 2] + inp1[local_pos + 67]) * w[0];\n\t\tres += (inp0[local_pos + 16] + inp0[local_pos + 67]) * w[1];\n\t\tres += (inp1[local_pos + 16] + inp1[local_pos + 53]) * w[2];\n\t\tres += (inp0[local_pos + 30] + inp0[local_pos + 53]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.3, coord_y));\n\t\tres += (inp1[local_pos + 30] + inp1[local_pos + 39]) * w[0];\n\t\tres += (inp0[local_pos + 44] + inp0[local_pos + 39]) * w[1];\n\t\tres += (inp0[local_pos + 15] + inp0[local_pos + 68]) * w[2];\n\t\tres += (inp1[local_pos + 15] + inp1[local_pos + 54]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.5, coord_y));\n\t\tres += (inp0[local_pos + 29] + inp0[local_pos + 54]) * w[0];\n\t\tres += (inp1[local_pos + 29] + inp1[local_pos + 40]) * w[1];\n\t\tres += (inp0[local_pos + 43] + inp0[local_pos + 40]) * w[2];\n\t\tres += (inp1[local_pos + 43] + inp1[local_pos + 26]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.7, coord_y));\n\t\tres += (inp1[local_pos + 14] + inp1[local_pos + 55]) * w[0];\n\t\tres += (inp0[local_pos + 28] + inp0[local_pos + 55]) * w[1];\n\t\tres += (inp1[local_pos + 28] + inp1[local_pos + 41]) * w[2];\n\t\tres += (inp0[local_pos + 42] + inp0[local_pos + 41]) * w[3];\n\t\tw = texture(ravu_lut3, vec2(0.9, coord_y));\n\t\tres += (inp1[local_pos + 42] + inp1[local_pos + 27]) * w[0];\n\t\tres += (inp0[local_pos + 56] + inp0[local_pos + 27]) * w[1];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), vec4(res, 1.0));\n\t}\n\tvec3 res;\n\tres = inp0[local_pos + 42];\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), vec4(res, 1.0));\n\tres = inp1[local_pos + 28];\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), vec4(res, 1.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_R4.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu.py --target luma --weights-file weights\\ravu_weights-r4.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_lut4_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_lut4;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_lut4;\n\n//!TEXTURE\n//!FORMAT R16_FLOAT\n//!WIDTH  INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D ravu_int11;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_ravu_int11;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC RAVU (step1, luma, r4, compute)\n//!IN INPUT, ravu_lut4\n//!OUT ravu_int11\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\nshared float inp0[585];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) { ravu_int11[pos] = (value); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lut4_tex(pos) (vec4(texture(ravu_lut4, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 585; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\t\tinp0[id] =\n\t\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-2.5), float(group_base.y + y) + (-2.5))).x;\n\t\t}\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\t{\n\t\tfloat luma57 = inp0[local_pos + 106];\n\t\tfloat luma58 = inp0[local_pos + 107];\n\t\tfloat luma59 = inp0[local_pos + 108];\n\t\tfloat luma60 = inp0[local_pos + 109];\n\t\tfloat luma61 = inp0[local_pos + 110];\n\t\tfloat luma62 = inp0[local_pos + 111];\n\t\tfloat luma8 = inp0[local_pos + 15];\n\t\tfloat luma9 = inp0[local_pos + 16];\n\t\tfloat luma10 = inp0[local_pos + 17];\n\t\tfloat luma11 = inp0[local_pos + 18];\n\t\tfloat luma12 = inp0[local_pos + 19];\n\t\tfloat luma1 = inp0[local_pos + 1];\n\t\tfloat luma13 = inp0[local_pos + 20];\n\t\tfloat luma14 = inp0[local_pos + 21];\n\t\tfloat luma15 = inp0[local_pos + 22];\n\t\tfloat luma2 = inp0[local_pos + 2];\n\t\tfloat luma16 = inp0[local_pos + 30];\n\t\tfloat luma17 = inp0[local_pos + 31];\n\t\tfloat luma18 = inp0[local_pos + 32];\n\t\tfloat luma19 = inp0[local_pos + 33];\n\t\tfloat luma20 = inp0[local_pos + 34];\n\t\tfloat luma21 = inp0[local_pos + 35];\n\t\tfloat luma22 = inp0[local_pos + 36];\n\t\tfloat luma23 = inp0[local_pos + 37];\n\t\tfloat luma3 = inp0[local_pos + 3];\n\t\tfloat luma24 = inp0[local_pos + 45];\n\t\tfloat luma25 = inp0[local_pos + 46];\n\t\tfloat luma26 = inp0[local_pos + 47];\n\t\tfloat luma27 = inp0[local_pos + 48];\n\t\tfloat luma28 = inp0[local_pos + 49];\n\t\tfloat luma4 = inp0[local_pos + 4];\n\t\tfloat luma29 = inp0[local_pos + 50];\n\t\tfloat luma30 = inp0[local_pos + 51];\n\t\tfloat luma31 = inp0[local_pos + 52];\n\t\tfloat luma5 = inp0[local_pos + 5];\n\t\tfloat luma32 = inp0[local_pos + 60];\n\t\tfloat luma33 = inp0[local_pos + 61];\n\t\tfloat luma34 = inp0[local_pos + 62];\n\t\tfloat luma35 = inp0[local_pos + 63];\n\t\tfloat luma36 = inp0[local_pos + 64];\n\t\tfloat luma37 = inp0[local_pos + 65];\n\t\tfloat luma38 = inp0[local_pos + 66];\n\t\tfloat luma39 = inp0[local_pos + 67];\n\t\tfloat luma6 = inp0[local_pos + 6];\n\t\tfloat luma40 = inp0[local_pos + 75];\n\t\tfloat luma41 = inp0[local_pos + 76];\n\t\tfloat luma42 = inp0[local_pos + 77];\n\t\tfloat luma43 = inp0[local_pos + 78];\n\t\tfloat luma44 = inp0[local_pos + 79];\n\t\tfloat luma45 = inp0[local_pos + 80];\n\t\tfloat luma46 = inp0[local_pos + 81];\n\t\tfloat luma47 = inp0[local_pos + 82];\n\t\tfloat luma48 = inp0[local_pos + 90];\n\t\tfloat luma49 = inp0[local_pos + 91];\n\t\tfloat luma50 = inp0[local_pos + 92];\n\t\tfloat luma51 = inp0[local_pos + 93];\n\t\tfloat luma52 = inp0[local_pos + 94];\n\t\tfloat luma53 = inp0[local_pos + 95];\n\t\tfloat luma54 = inp0[local_pos + 96];\n\t\tfloat luma55 = inp0[local_pos + 97];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma17 - luma1) / 2.0;\n\t\tgy = (luma10 - luma8) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (luma18 - luma2) / 2.0;\n\t\tgy = (-luma12 + 8.0 * luma11 - 8.0 * luma9 + luma8) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma19 - luma3) / 2.0;\n\t\tgy = (-luma13 + 8.0 * luma12 - 8.0 * luma10 + luma9) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma20 - luma4) / 2.0;\n\t\tgy = (-luma14 + 8.0 * luma13 - 8.0 * luma11 + luma10) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma21 - luma5) / 2.0;\n\t\tgy = (-luma15 + 8.0 * luma14 - 8.0 * luma12 + luma11) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma22 - luma6) / 2.0;\n\t\tgy = (luma15 - luma13) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (-luma33 + 8.0 * luma25 - 8.0 * luma9 + luma1) / 12.0;\n\t\tgy = (luma18 - luma16) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma34 + 8.0 * luma26 - 8.0 * luma10 + luma2) / 12.0;\n\t\tgy = (-luma20 + 8.0 * luma19 - 8.0 * luma17 + luma16) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma35 + 8.0 * luma27 - 8.0 * luma11 + luma3) / 12.0;\n\t\tgy = (-luma21 + 8.0 * luma20 - 8.0 * luma18 + luma17) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma36 + 8.0 * luma28 - 8.0 * luma12 + luma4) / 12.0;\n\t\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma37 + 8.0 * luma29 - 8.0 * luma13 + luma5) / 12.0;\n\t\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma38 + 8.0 * luma30 - 8.0 * luma14 + luma6) / 12.0;\n\t\tgy = (luma23 - luma21) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma41 + 8.0 * luma33 - 8.0 * luma17 + luma9) / 12.0;\n\t\tgy = (luma26 - luma24) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma42 + 8.0 * luma34 - 8.0 * luma18 + luma10) / 12.0;\n\t\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma43 + 8.0 * luma35 - 8.0 * luma19 + luma11) / 12.0;\n\t\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma44 + 8.0 * luma36 - 8.0 * luma20 + luma12) / 12.0;\n\t\tgy = (-luma30 + 8.0 * luma29 - 8.0 * luma27 + luma26) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma45 + 8.0 * luma37 - 8.0 * luma21 + luma13) / 12.0;\n\t\tgy = (-luma31 + 8.0 * luma30 - 8.0 * luma28 + luma27) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma46 + 8.0 * luma38 - 8.0 * luma22 + luma14) / 12.0;\n\t\tgy = (luma31 - luma29) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma49 + 8.0 * luma41 - 8.0 * luma25 + luma17) / 12.0;\n\t\tgy = (luma34 - luma32) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma50 + 8.0 * luma42 - 8.0 * luma26 + luma18) / 12.0;\n\t\tgy = (-luma36 + 8.0 * luma35 - 8.0 * luma33 + luma32) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma51 + 8.0 * luma43 - 8.0 * luma27 + luma19) / 12.0;\n\t\tgy = (-luma37 + 8.0 * luma36 - 8.0 * luma34 + luma33) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma52 + 8.0 * luma44 - 8.0 * luma28 + luma20) / 12.0;\n\t\tgy = (-luma38 + 8.0 * luma37 - 8.0 * luma35 + luma34) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma53 + 8.0 * luma45 - 8.0 * luma29 + luma21) / 12.0;\n\t\tgy = (-luma39 + 8.0 * luma38 - 8.0 * luma36 + luma35) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma54 + 8.0 * luma46 - 8.0 * luma30 + luma22) / 12.0;\n\t\tgy = (luma39 - luma37) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma57 + 8.0 * luma49 - 8.0 * luma33 + luma25) / 12.0;\n\t\tgy = (luma42 - luma40) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma58 + 8.0 * luma50 - 8.0 * luma34 + luma26) / 12.0;\n\t\tgy = (-luma44 + 8.0 * luma43 - 8.0 * luma41 + luma40) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma59 + 8.0 * luma51 - 8.0 * luma35 + luma27) / 12.0;\n\t\tgy = (-luma45 + 8.0 * luma44 - 8.0 * luma42 + luma41) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma60 + 8.0 * luma52 - 8.0 * luma36 + luma28) / 12.0;\n\t\tgy = (-luma46 + 8.0 * luma45 - 8.0 * luma43 + luma42) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma61 + 8.0 * luma53 - 8.0 * luma37 + luma29) / 12.0;\n\t\tgy = (-luma47 + 8.0 * luma46 - 8.0 * luma44 + luma43) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma62 + 8.0 * luma54 - 8.0 * luma38 + luma30) / 12.0;\n\t\tgy = (luma47 - luma45) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma57 - luma41) / 2.0;\n\t\tgy = (luma50 - luma48) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (luma58 - luma42) / 2.0;\n\t\tgy = (-luma52 + 8.0 * luma51 - 8.0 * luma49 + luma48) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma59 - luma43) / 2.0;\n\t\tgy = (-luma53 + 8.0 * luma52 - 8.0 * luma50 + luma49) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma60 - luma44) / 2.0;\n\t\tgy = (-luma54 + 8.0 * luma53 - 8.0 * luma51 + luma50) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma61 - luma45) / 2.0;\n\t\tgy = (-luma55 + 8.0 * luma54 - 8.0 * luma52 + luma51) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma62 - luma46) / 2.0;\n\t\tgy = (luma55 - luma53) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tfloat res = 0.0;\n\t\tvec4 w;\n\t\tw = texture(ravu_lut4, vec2(0.0625, coord_y));\n\t\tres += (inp0[local_pos + 0] + inp0[local_pos + 112]) * w[0];\n\t\tres += (inp0[local_pos + 1] + inp0[local_pos + 111]) * w[1];\n\t\tres += (inp0[local_pos + 2] + inp0[local_pos + 110]) * w[2];\n\t\tres += (inp0[local_pos + 3] + inp0[local_pos + 109]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.1875, coord_y));\n\t\tres += (inp0[local_pos + 4] + inp0[local_pos + 108]) * w[0];\n\t\tres += (inp0[local_pos + 5] + inp0[local_pos + 107]) * w[1];\n\t\tres += (inp0[local_pos + 6] + inp0[local_pos + 106]) * w[2];\n\t\tres += (inp0[local_pos + 7] + inp0[local_pos + 105]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.3125, coord_y));\n\t\tres += (inp0[local_pos + 15] + inp0[local_pos + 97]) * w[0];\n\t\tres += (inp0[local_pos + 16] + inp0[local_pos + 96]) * w[1];\n\t\tres += (inp0[local_pos + 17] + inp0[local_pos + 95]) * w[2];\n\t\tres += (inp0[local_pos + 18] + inp0[local_pos + 94]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.4375, coord_y));\n\t\tres += (inp0[local_pos + 19] + inp0[local_pos + 93]) * w[0];\n\t\tres += (inp0[local_pos + 20] + inp0[local_pos + 92]) * w[1];\n\t\tres += (inp0[local_pos + 21] + inp0[local_pos + 91]) * w[2];\n\t\tres += (inp0[local_pos + 22] + inp0[local_pos + 90]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.5625, coord_y));\n\t\tres += (inp0[local_pos + 30] + inp0[local_pos + 82]) * w[0];\n\t\tres += (inp0[local_pos + 31] + inp0[local_pos + 81]) * w[1];\n\t\tres += (inp0[local_pos + 32] + inp0[local_pos + 80]) * w[2];\n\t\tres += (inp0[local_pos + 33] + inp0[local_pos + 79]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.6875, coord_y));\n\t\tres += (inp0[local_pos + 34] + inp0[local_pos + 78]) * w[0];\n\t\tres += (inp0[local_pos + 35] + inp0[local_pos + 77]) * w[1];\n\t\tres += (inp0[local_pos + 36] + inp0[local_pos + 76]) * w[2];\n\t\tres += (inp0[local_pos + 37] + inp0[local_pos + 75]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.8125, coord_y));\n\t\tres += (inp0[local_pos + 45] + inp0[local_pos + 67]) * w[0];\n\t\tres += (inp0[local_pos + 46] + inp0[local_pos + 66]) * w[1];\n\t\tres += (inp0[local_pos + 47] + inp0[local_pos + 65]) * w[2];\n\t\tres += (inp0[local_pos + 48] + inp0[local_pos + 64]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.9375, coord_y));\n\t\tres += (inp0[local_pos + 49] + inp0[local_pos + 63]) * w[0];\n\t\tres += (inp0[local_pos + 50] + inp0[local_pos + 62]) * w[1];\n\t\tres += (inp0[local_pos + 51] + inp0[local_pos + 61]) * w[2];\n\t\tres += (inp0[local_pos + 52] + inp0[local_pos + 60]) * w[3];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID), res);\n\t}\n}\n//!PASS 2\n//!DESC RAVU (step2, luma, r4, compute)\n//!IN INPUT, ravu_lut4, ravu_int11\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 16\n//!NUM_THREADS 32, 8\nshared float inp0[585];\nshared float inp1[585];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lut4_tex(pos) (vec4(texture(ravu_lut4, pos)))\n\n#define ravu_int11_tex(pos) (float(texture(ravu_int11, pos).x))\nstatic const float2 ravu_int11_size = float2(GetInputSize().x, GetInputSize().y);\nstatic const float2 ravu_int11_pt = float2(1.0 / (ravu_int11_size.x), 1.0 / (ravu_int11_size.y));\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 585; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\t\tinp0[id] =\n\t\t\t\travu_int11_tex(ravu_int11_pt * vec2(float(group_base.x + x) + (-3.5), float(group_base.y + y) + (-3.5)))\n\t\t\t\t\t.x;\n\t\t}\n\t}\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 585; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\t\tinp1[id] =\n\t\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-2.5), float(group_base.y + y) + (-2.5))).x;\n\t\t}\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\t{\n\t\tfloat luma16 = inp0[local_pos + 18];\n\t\tfloat luma9 = inp0[local_pos + 19];\n\t\tfloat luma2 = inp0[local_pos + 20];\n\t\tfloat luma32 = inp0[local_pos + 32];\n\t\tfloat luma25 = inp0[local_pos + 33];\n\t\tfloat luma18 = inp0[local_pos + 34];\n\t\tfloat luma11 = inp0[local_pos + 35];\n\t\tfloat luma4 = inp0[local_pos + 36];\n\t\tfloat luma48 = inp0[local_pos + 46];\n\t\tfloat luma41 = inp0[local_pos + 47];\n\t\tfloat luma34 = inp0[local_pos + 48];\n\t\tfloat luma27 = inp0[local_pos + 49];\n\t\tfloat luma20 = inp0[local_pos + 50];\n\t\tfloat luma13 = inp0[local_pos + 51];\n\t\tfloat luma6 = inp0[local_pos + 52];\n\t\tfloat luma57 = inp0[local_pos + 61];\n\t\tfloat luma50 = inp0[local_pos + 62];\n\t\tfloat luma43 = inp0[local_pos + 63];\n\t\tfloat luma36 = inp0[local_pos + 64];\n\t\tfloat luma29 = inp0[local_pos + 65];\n\t\tfloat luma22 = inp0[local_pos + 66];\n\t\tfloat luma15 = inp0[local_pos + 67];\n\t\tfloat luma59 = inp0[local_pos + 77];\n\t\tfloat luma52 = inp0[local_pos + 78];\n\t\tfloat luma45 = inp0[local_pos + 79];\n\t\tfloat luma38 = inp0[local_pos + 80];\n\t\tfloat luma31 = inp0[local_pos + 81];\n\t\tfloat luma61 = inp0[local_pos + 93];\n\t\tfloat luma54 = inp0[local_pos + 94];\n\t\tfloat luma47 = inp0[local_pos + 95];\n\t\tfloat luma24 = inp1[local_pos + 17];\n\t\tfloat luma17 = inp1[local_pos + 18];\n\t\tfloat luma10 = inp1[local_pos + 19];\n\t\tfloat luma3 = inp1[local_pos + 20];\n\t\tfloat luma40 = inp1[local_pos + 31];\n\t\tfloat luma33 = inp1[local_pos + 32];\n\t\tfloat luma26 = inp1[local_pos + 33];\n\t\tfloat luma19 = inp1[local_pos + 34];\n\t\tfloat luma12 = inp1[local_pos + 35];\n\t\tfloat luma5 = inp1[local_pos + 36];\n\t\tfloat luma8 = inp1[local_pos + 3];\n\t\tfloat luma49 = inp1[local_pos + 46];\n\t\tfloat luma42 = inp1[local_pos + 47];\n\t\tfloat luma35 = inp1[local_pos + 48];\n\t\tfloat luma28 = inp1[local_pos + 49];\n\t\tfloat luma1 = inp1[local_pos + 4];\n\t\tfloat luma21 = inp1[local_pos + 50];\n\t\tfloat luma14 = inp1[local_pos + 51];\n\t\tfloat luma58 = inp1[local_pos + 61];\n\t\tfloat luma51 = inp1[local_pos + 62];\n\t\tfloat luma44 = inp1[local_pos + 63];\n\t\tfloat luma37 = inp1[local_pos + 64];\n\t\tfloat luma30 = inp1[local_pos + 65];\n\t\tfloat luma23 = inp1[local_pos + 66];\n\t\tfloat luma60 = inp1[local_pos + 77];\n\t\tfloat luma53 = inp1[local_pos + 78];\n\t\tfloat luma46 = inp1[local_pos + 79];\n\t\tfloat luma39 = inp1[local_pos + 80];\n\t\tfloat luma62 = inp1[local_pos + 93];\n\t\tfloat luma55 = inp1[local_pos + 94];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma17 - luma1) / 2.0;\n\t\tgy = (luma10 - luma8) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (luma18 - luma2) / 2.0;\n\t\tgy = (-luma12 + 8.0 * luma11 - 8.0 * luma9 + luma8) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma19 - luma3) / 2.0;\n\t\tgy = (-luma13 + 8.0 * luma12 - 8.0 * luma10 + luma9) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma20 - luma4) / 2.0;\n\t\tgy = (-luma14 + 8.0 * luma13 - 8.0 * luma11 + luma10) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma21 - luma5) / 2.0;\n\t\tgy = (-luma15 + 8.0 * luma14 - 8.0 * luma12 + luma11) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma22 - luma6) / 2.0;\n\t\tgy = (luma15 - luma13) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (-luma33 + 8.0 * luma25 - 8.0 * luma9 + luma1) / 12.0;\n\t\tgy = (luma18 - luma16) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma34 + 8.0 * luma26 - 8.0 * luma10 + luma2) / 12.0;\n\t\tgy = (-luma20 + 8.0 * luma19 - 8.0 * luma17 + luma16) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma35 + 8.0 * luma27 - 8.0 * luma11 + luma3) / 12.0;\n\t\tgy = (-luma21 + 8.0 * luma20 - 8.0 * luma18 + luma17) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma36 + 8.0 * luma28 - 8.0 * luma12 + luma4) / 12.0;\n\t\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma37 + 8.0 * luma29 - 8.0 * luma13 + luma5) / 12.0;\n\t\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma38 + 8.0 * luma30 - 8.0 * luma14 + luma6) / 12.0;\n\t\tgy = (luma23 - luma21) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma41 + 8.0 * luma33 - 8.0 * luma17 + luma9) / 12.0;\n\t\tgy = (luma26 - luma24) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma42 + 8.0 * luma34 - 8.0 * luma18 + luma10) / 12.0;\n\t\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma43 + 8.0 * luma35 - 8.0 * luma19 + luma11) / 12.0;\n\t\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma44 + 8.0 * luma36 - 8.0 * luma20 + luma12) / 12.0;\n\t\tgy = (-luma30 + 8.0 * luma29 - 8.0 * luma27 + luma26) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma45 + 8.0 * luma37 - 8.0 * luma21 + luma13) / 12.0;\n\t\tgy = (-luma31 + 8.0 * luma30 - 8.0 * luma28 + luma27) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma46 + 8.0 * luma38 - 8.0 * luma22 + luma14) / 12.0;\n\t\tgy = (luma31 - luma29) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma49 + 8.0 * luma41 - 8.0 * luma25 + luma17) / 12.0;\n\t\tgy = (luma34 - luma32) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma50 + 8.0 * luma42 - 8.0 * luma26 + luma18) / 12.0;\n\t\tgy = (-luma36 + 8.0 * luma35 - 8.0 * luma33 + luma32) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma51 + 8.0 * luma43 - 8.0 * luma27 + luma19) / 12.0;\n\t\tgy = (-luma37 + 8.0 * luma36 - 8.0 * luma34 + luma33) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma52 + 8.0 * luma44 - 8.0 * luma28 + luma20) / 12.0;\n\t\tgy = (-luma38 + 8.0 * luma37 - 8.0 * luma35 + luma34) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma53 + 8.0 * luma45 - 8.0 * luma29 + luma21) / 12.0;\n\t\tgy = (-luma39 + 8.0 * luma38 - 8.0 * luma36 + luma35) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma54 + 8.0 * luma46 - 8.0 * luma30 + luma22) / 12.0;\n\t\tgy = (luma39 - luma37) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma57 + 8.0 * luma49 - 8.0 * luma33 + luma25) / 12.0;\n\t\tgy = (luma42 - luma40) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma58 + 8.0 * luma50 - 8.0 * luma34 + luma26) / 12.0;\n\t\tgy = (-luma44 + 8.0 * luma43 - 8.0 * luma41 + luma40) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma59 + 8.0 * luma51 - 8.0 * luma35 + luma27) / 12.0;\n\t\tgy = (-luma45 + 8.0 * luma44 - 8.0 * luma42 + luma41) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma60 + 8.0 * luma52 - 8.0 * luma36 + luma28) / 12.0;\n\t\tgy = (-luma46 + 8.0 * luma45 - 8.0 * luma43 + luma42) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma61 + 8.0 * luma53 - 8.0 * luma37 + luma29) / 12.0;\n\t\tgy = (-luma47 + 8.0 * luma46 - 8.0 * luma44 + luma43) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma62 + 8.0 * luma54 - 8.0 * luma38 + luma30) / 12.0;\n\t\tgy = (luma47 - luma45) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma57 - luma41) / 2.0;\n\t\tgy = (luma50 - luma48) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (luma58 - luma42) / 2.0;\n\t\tgy = (-luma52 + 8.0 * luma51 - 8.0 * luma49 + luma48) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma59 - luma43) / 2.0;\n\t\tgy = (-luma53 + 8.0 * luma52 - 8.0 * luma50 + luma49) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma60 - luma44) / 2.0;\n\t\tgy = (-luma54 + 8.0 * luma53 - 8.0 * luma51 + luma50) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma61 - luma45) / 2.0;\n\t\tgy = (-luma55 + 8.0 * luma54 - 8.0 * luma52 + luma51) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma62 - luma46) / 2.0;\n\t\tgy = (luma55 - luma53) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tfloat res = 0.0;\n\t\tvec4 w;\n\t\tw = texture(ravu_lut4, vec2(0.0625, coord_y));\n\t\tres += (inp0[local_pos + 4] + inp0[local_pos + 109]) * w[0];\n\t\tres += (inp1[local_pos + 4] + inp1[local_pos + 93]) * w[1];\n\t\tres += (inp0[local_pos + 20] + inp0[local_pos + 93]) * w[2];\n\t\tres += (inp1[local_pos + 20] + inp1[local_pos + 77]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.1875, coord_y));\n\t\tres += (inp0[local_pos + 36] + inp0[local_pos + 77]) * w[0];\n\t\tres += (inp1[local_pos + 36] + inp1[local_pos + 61]) * w[1];\n\t\tres += (inp0[local_pos + 52] + inp0[local_pos + 61]) * w[2];\n\t\tres += (inp1[local_pos + 52] + inp1[local_pos + 45]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.3125, coord_y));\n\t\tres += (inp1[local_pos + 3] + inp1[local_pos + 94]) * w[0];\n\t\tres += (inp0[local_pos + 19] + inp0[local_pos + 94]) * w[1];\n\t\tres += (inp1[local_pos + 19] + inp1[local_pos + 78]) * w[2];\n\t\tres += (inp0[local_pos + 35] + inp0[local_pos + 78]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.4375, coord_y));\n\t\tres += (inp1[local_pos + 35] + inp1[local_pos + 62]) * w[0];\n\t\tres += (inp0[local_pos + 51] + inp0[local_pos + 62]) * w[1];\n\t\tres += (inp1[local_pos + 51] + inp1[local_pos + 46]) * w[2];\n\t\tres += (inp0[local_pos + 67] + inp0[local_pos + 46]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.5625, coord_y));\n\t\tres += (inp0[local_pos + 18] + inp0[local_pos + 95]) * w[0];\n\t\tres += (inp1[local_pos + 18] + inp1[local_pos + 79]) * w[1];\n\t\tres += (inp0[local_pos + 34] + inp0[local_pos + 79]) * w[2];\n\t\tres += (inp1[local_pos + 34] + inp1[local_pos + 63]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.6875, coord_y));\n\t\tres += (inp0[local_pos + 50] + inp0[local_pos + 63]) * w[0];\n\t\tres += (inp1[local_pos + 50] + inp1[local_pos + 47]) * w[1];\n\t\tres += (inp0[local_pos + 66] + inp0[local_pos + 47]) * w[2];\n\t\tres += (inp1[local_pos + 66] + inp1[local_pos + 31]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.8125, coord_y));\n\t\tres += (inp1[local_pos + 17] + inp1[local_pos + 80]) * w[0];\n\t\tres += (inp0[local_pos + 33] + inp0[local_pos + 80]) * w[1];\n\t\tres += (inp1[local_pos + 33] + inp1[local_pos + 64]) * w[2];\n\t\tres += (inp0[local_pos + 49] + inp0[local_pos + 64]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.9375, coord_y));\n\t\tres += (inp1[local_pos + 49] + inp1[local_pos + 48]) * w[0];\n\t\tres += (inp0[local_pos + 65] + inp0[local_pos + 48]) * w[1];\n\t\tres += (inp1[local_pos + 65] + inp1[local_pos + 32]) * w[2];\n\t\tres += (inp0[local_pos + 81] + inp0[local_pos + 32]) * w[3];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), res);\n\t}\n\t{\n\t\tfloat luma62 = inp0[local_pos + 108];\n\t\tfloat luma55 = inp0[local_pos + 109];\n\t\tfloat luma8 = inp0[local_pos + 18];\n\t\tfloat luma1 = inp0[local_pos + 19];\n\t\tfloat luma24 = inp0[local_pos + 32];\n\t\tfloat luma17 = inp0[local_pos + 33];\n\t\tfloat luma10 = inp0[local_pos + 34];\n\t\tfloat luma3 = inp0[local_pos + 35];\n\t\tfloat luma40 = inp0[local_pos + 46];\n\t\tfloat luma33 = inp0[local_pos + 47];\n\t\tfloat luma26 = inp0[local_pos + 48];\n\t\tfloat luma19 = inp0[local_pos + 49];\n\t\tfloat luma12 = inp0[local_pos + 50];\n\t\tfloat luma5 = inp0[local_pos + 51];\n\t\tfloat luma49 = inp0[local_pos + 61];\n\t\tfloat luma42 = inp0[local_pos + 62];\n\t\tfloat luma35 = inp0[local_pos + 63];\n\t\tfloat luma28 = inp0[local_pos + 64];\n\t\tfloat luma21 = inp0[local_pos + 65];\n\t\tfloat luma14 = inp0[local_pos + 66];\n\t\tfloat luma58 = inp0[local_pos + 76];\n\t\tfloat luma51 = inp0[local_pos + 77];\n\t\tfloat luma44 = inp0[local_pos + 78];\n\t\tfloat luma37 = inp0[local_pos + 79];\n\t\tfloat luma30 = inp0[local_pos + 80];\n\t\tfloat luma23 = inp0[local_pos + 81];\n\t\tfloat luma60 = inp0[local_pos + 92];\n\t\tfloat luma53 = inp0[local_pos + 93];\n\t\tfloat luma46 = inp0[local_pos + 94];\n\t\tfloat luma39 = inp0[local_pos + 95];\n\t\tfloat luma16 = inp1[local_pos + 17];\n\t\tfloat luma9 = inp1[local_pos + 18];\n\t\tfloat luma2 = inp1[local_pos + 19];\n\t\tfloat luma32 = inp1[local_pos + 31];\n\t\tfloat luma25 = inp1[local_pos + 32];\n\t\tfloat luma18 = inp1[local_pos + 33];\n\t\tfloat luma11 = inp1[local_pos + 34];\n\t\tfloat luma4 = inp1[local_pos + 35];\n\t\tfloat luma48 = inp1[local_pos + 45];\n\t\tfloat luma41 = inp1[local_pos + 46];\n\t\tfloat luma34 = inp1[local_pos + 47];\n\t\tfloat luma27 = inp1[local_pos + 48];\n\t\tfloat luma20 = inp1[local_pos + 49];\n\t\tfloat luma13 = inp1[local_pos + 50];\n\t\tfloat luma6 = inp1[local_pos + 51];\n\t\tfloat luma57 = inp1[local_pos + 60];\n\t\tfloat luma50 = inp1[local_pos + 61];\n\t\tfloat luma43 = inp1[local_pos + 62];\n\t\tfloat luma36 = inp1[local_pos + 63];\n\t\tfloat luma29 = inp1[local_pos + 64];\n\t\tfloat luma22 = inp1[local_pos + 65];\n\t\tfloat luma15 = inp1[local_pos + 66];\n\t\tfloat luma59 = inp1[local_pos + 76];\n\t\tfloat luma52 = inp1[local_pos + 77];\n\t\tfloat luma45 = inp1[local_pos + 78];\n\t\tfloat luma38 = inp1[local_pos + 79];\n\t\tfloat luma31 = inp1[local_pos + 80];\n\t\tfloat luma61 = inp1[local_pos + 92];\n\t\tfloat luma54 = inp1[local_pos + 93];\n\t\tfloat luma47 = inp1[local_pos + 94];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma17 - luma1) / 2.0;\n\t\tgy = (luma10 - luma8) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (luma18 - luma2) / 2.0;\n\t\tgy = (-luma12 + 8.0 * luma11 - 8.0 * luma9 + luma8) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma19 - luma3) / 2.0;\n\t\tgy = (-luma13 + 8.0 * luma12 - 8.0 * luma10 + luma9) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma20 - luma4) / 2.0;\n\t\tgy = (-luma14 + 8.0 * luma13 - 8.0 * luma11 + luma10) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma21 - luma5) / 2.0;\n\t\tgy = (-luma15 + 8.0 * luma14 - 8.0 * luma12 + luma11) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma22 - luma6) / 2.0;\n\t\tgy = (luma15 - luma13) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (-luma33 + 8.0 * luma25 - 8.0 * luma9 + luma1) / 12.0;\n\t\tgy = (luma18 - luma16) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma34 + 8.0 * luma26 - 8.0 * luma10 + luma2) / 12.0;\n\t\tgy = (-luma20 + 8.0 * luma19 - 8.0 * luma17 + luma16) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma35 + 8.0 * luma27 - 8.0 * luma11 + luma3) / 12.0;\n\t\tgy = (-luma21 + 8.0 * luma20 - 8.0 * luma18 + luma17) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma36 + 8.0 * luma28 - 8.0 * luma12 + luma4) / 12.0;\n\t\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma37 + 8.0 * luma29 - 8.0 * luma13 + luma5) / 12.0;\n\t\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma38 + 8.0 * luma30 - 8.0 * luma14 + luma6) / 12.0;\n\t\tgy = (luma23 - luma21) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma41 + 8.0 * luma33 - 8.0 * luma17 + luma9) / 12.0;\n\t\tgy = (luma26 - luma24) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma42 + 8.0 * luma34 - 8.0 * luma18 + luma10) / 12.0;\n\t\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma43 + 8.0 * luma35 - 8.0 * luma19 + luma11) / 12.0;\n\t\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma44 + 8.0 * luma36 - 8.0 * luma20 + luma12) / 12.0;\n\t\tgy = (-luma30 + 8.0 * luma29 - 8.0 * luma27 + luma26) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma45 + 8.0 * luma37 - 8.0 * luma21 + luma13) / 12.0;\n\t\tgy = (-luma31 + 8.0 * luma30 - 8.0 * luma28 + luma27) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma46 + 8.0 * luma38 - 8.0 * luma22 + luma14) / 12.0;\n\t\tgy = (luma31 - luma29) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma49 + 8.0 * luma41 - 8.0 * luma25 + luma17) / 12.0;\n\t\tgy = (luma34 - luma32) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma50 + 8.0 * luma42 - 8.0 * luma26 + luma18) / 12.0;\n\t\tgy = (-luma36 + 8.0 * luma35 - 8.0 * luma33 + luma32) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma51 + 8.0 * luma43 - 8.0 * luma27 + luma19) / 12.0;\n\t\tgy = (-luma37 + 8.0 * luma36 - 8.0 * luma34 + luma33) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma52 + 8.0 * luma44 - 8.0 * luma28 + luma20) / 12.0;\n\t\tgy = (-luma38 + 8.0 * luma37 - 8.0 * luma35 + luma34) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma53 + 8.0 * luma45 - 8.0 * luma29 + luma21) / 12.0;\n\t\tgy = (-luma39 + 8.0 * luma38 - 8.0 * luma36 + luma35) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma54 + 8.0 * luma46 - 8.0 * luma30 + luma22) / 12.0;\n\t\tgy = (luma39 - luma37) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma57 + 8.0 * luma49 - 8.0 * luma33 + luma25) / 12.0;\n\t\tgy = (luma42 - luma40) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma58 + 8.0 * luma50 - 8.0 * luma34 + luma26) / 12.0;\n\t\tgy = (-luma44 + 8.0 * luma43 - 8.0 * luma41 + luma40) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma59 + 8.0 * luma51 - 8.0 * luma35 + luma27) / 12.0;\n\t\tgy = (-luma45 + 8.0 * luma44 - 8.0 * luma42 + luma41) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma60 + 8.0 * luma52 - 8.0 * luma36 + luma28) / 12.0;\n\t\tgy = (-luma46 + 8.0 * luma45 - 8.0 * luma43 + luma42) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma61 + 8.0 * luma53 - 8.0 * luma37 + luma29) / 12.0;\n\t\tgy = (-luma47 + 8.0 * luma46 - 8.0 * luma44 + luma43) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma62 + 8.0 * luma54 - 8.0 * luma38 + luma30) / 12.0;\n\t\tgy = (luma47 - luma45) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma57 - luma41) / 2.0;\n\t\tgy = (luma50 - luma48) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (luma58 - luma42) / 2.0;\n\t\tgy = (-luma52 + 8.0 * luma51 - 8.0 * luma49 + luma48) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma59 - luma43) / 2.0;\n\t\tgy = (-luma53 + 8.0 * luma52 - 8.0 * luma50 + luma49) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma60 - luma44) / 2.0;\n\t\tgy = (-luma54 + 8.0 * luma53 - 8.0 * luma51 + luma50) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma61 - luma45) / 2.0;\n\t\tgy = (-luma55 + 8.0 * luma54 - 8.0 * luma52 + luma51) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma62 - luma46) / 2.0;\n\t\tgy = (luma55 - luma53) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tfloat res = 0.0;\n\t\tvec4 w;\n\t\tw = texture(ravu_lut4, vec2(0.0625, coord_y));\n\t\tres += (inp1[local_pos + 3] + inp1[local_pos + 108]) * w[0];\n\t\tres += (inp0[local_pos + 19] + inp0[local_pos + 108]) * w[1];\n\t\tres += (inp1[local_pos + 19] + inp1[local_pos + 92]) * w[2];\n\t\tres += (inp0[local_pos + 35] + inp0[local_pos + 92]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.1875, coord_y));\n\t\tres += (inp1[local_pos + 35] + inp1[local_pos + 76]) * w[0];\n\t\tres += (inp0[local_pos + 51] + inp0[local_pos + 76]) * w[1];\n\t\tres += (inp1[local_pos + 51] + inp1[local_pos + 60]) * w[2];\n\t\tres += (inp0[local_pos + 67] + inp0[local_pos + 60]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.3125, coord_y));\n\t\tres += (inp0[local_pos + 18] + inp0[local_pos + 109]) * w[0];\n\t\tres += (inp1[local_pos + 18] + inp1[local_pos + 93]) * w[1];\n\t\tres += (inp0[local_pos + 34] + inp0[local_pos + 93]) * w[2];\n\t\tres += (inp1[local_pos + 34] + inp1[local_pos + 77]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.4375, coord_y));\n\t\tres += (inp0[local_pos + 50] + inp0[local_pos + 77]) * w[0];\n\t\tres += (inp1[local_pos + 50] + inp1[local_pos + 61]) * w[1];\n\t\tres += (inp0[local_pos + 66] + inp0[local_pos + 61]) * w[2];\n\t\tres += (inp1[local_pos + 66] + inp1[local_pos + 45]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.5625, coord_y));\n\t\tres += (inp1[local_pos + 17] + inp1[local_pos + 94]) * w[0];\n\t\tres += (inp0[local_pos + 33] + inp0[local_pos + 94]) * w[1];\n\t\tres += (inp1[local_pos + 33] + inp1[local_pos + 78]) * w[2];\n\t\tres += (inp0[local_pos + 49] + inp0[local_pos + 78]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.6875, coord_y));\n\t\tres += (inp1[local_pos + 49] + inp1[local_pos + 62]) * w[0];\n\t\tres += (inp0[local_pos + 65] + inp0[local_pos + 62]) * w[1];\n\t\tres += (inp1[local_pos + 65] + inp1[local_pos + 46]) * w[2];\n\t\tres += (inp0[local_pos + 81] + inp0[local_pos + 46]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.8125, coord_y));\n\t\tres += (inp0[local_pos + 32] + inp0[local_pos + 95]) * w[0];\n\t\tres += (inp1[local_pos + 32] + inp1[local_pos + 79]) * w[1];\n\t\tres += (inp0[local_pos + 48] + inp0[local_pos + 79]) * w[2];\n\t\tres += (inp1[local_pos + 48] + inp1[local_pos + 63]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.9375, coord_y));\n\t\tres += (inp0[local_pos + 64] + inp0[local_pos + 63]) * w[0];\n\t\tres += (inp1[local_pos + 64] + inp1[local_pos + 47]) * w[1];\n\t\tres += (inp0[local_pos + 80] + inp0[local_pos + 47]) * w[2];\n\t\tres += (inp1[local_pos + 80] + inp1[local_pos + 31]) * w[3];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), res);\n\t}\n\tfloat res;\n\tres = inp0[local_pos + 64];\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), res);\n\tres = inp1[local_pos + 48];\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), res);\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_R4_RGB.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu.py --target rgb --weights-file weights\\ravu_weights-r4.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//!WIDTH  INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!SOURCE ravu_lut4_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_lut4;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_lut4;\n\n//!TEXTURE\n//!FORMAT R16G16B16A16_FLOAT\n//!WIDTH  INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D ravu_int11;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_ravu_int11;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 2\n\n//!PASS 1\n//!DESC RAVU (step1, rgb, r4, compute)\n//!IN INPUT, ravu_lut4\n//!OUT ravu_int11\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\nshared vec3 inp0[585];\nshared float inp_luma0[585];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.xyz)\nvoid imageStoreOverride(uint2 pos, vec3 value) { ravu_int11[pos] = vec4(value, 0.0); }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lut4_tex(pos) (vec4(texture(ravu_lut4, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 585; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\t\tinp0[id] =\n\t\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-2.5), float(group_base.y + y) + (-2.5))).xyz;\n\t\t\tinp_luma0[id] = dot(inp0[id], color_primary);\n\t\t}\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\t{\n\t\tfloat luma57 = inp_luma0[local_pos + 106];\n\t\tfloat luma58 = inp_luma0[local_pos + 107];\n\t\tfloat luma59 = inp_luma0[local_pos + 108];\n\t\tfloat luma60 = inp_luma0[local_pos + 109];\n\t\tfloat luma61 = inp_luma0[local_pos + 110];\n\t\tfloat luma62 = inp_luma0[local_pos + 111];\n\t\tfloat luma8 = inp_luma0[local_pos + 15];\n\t\tfloat luma9 = inp_luma0[local_pos + 16];\n\t\tfloat luma10 = inp_luma0[local_pos + 17];\n\t\tfloat luma11 = inp_luma0[local_pos + 18];\n\t\tfloat luma12 = inp_luma0[local_pos + 19];\n\t\tfloat luma1 = inp_luma0[local_pos + 1];\n\t\tfloat luma13 = inp_luma0[local_pos + 20];\n\t\tfloat luma14 = inp_luma0[local_pos + 21];\n\t\tfloat luma15 = inp_luma0[local_pos + 22];\n\t\tfloat luma2 = inp_luma0[local_pos + 2];\n\t\tfloat luma16 = inp_luma0[local_pos + 30];\n\t\tfloat luma17 = inp_luma0[local_pos + 31];\n\t\tfloat luma18 = inp_luma0[local_pos + 32];\n\t\tfloat luma19 = inp_luma0[local_pos + 33];\n\t\tfloat luma20 = inp_luma0[local_pos + 34];\n\t\tfloat luma21 = inp_luma0[local_pos + 35];\n\t\tfloat luma22 = inp_luma0[local_pos + 36];\n\t\tfloat luma23 = inp_luma0[local_pos + 37];\n\t\tfloat luma3 = inp_luma0[local_pos + 3];\n\t\tfloat luma24 = inp_luma0[local_pos + 45];\n\t\tfloat luma25 = inp_luma0[local_pos + 46];\n\t\tfloat luma26 = inp_luma0[local_pos + 47];\n\t\tfloat luma27 = inp_luma0[local_pos + 48];\n\t\tfloat luma28 = inp_luma0[local_pos + 49];\n\t\tfloat luma4 = inp_luma0[local_pos + 4];\n\t\tfloat luma29 = inp_luma0[local_pos + 50];\n\t\tfloat luma30 = inp_luma0[local_pos + 51];\n\t\tfloat luma31 = inp_luma0[local_pos + 52];\n\t\tfloat luma5 = inp_luma0[local_pos + 5];\n\t\tfloat luma32 = inp_luma0[local_pos + 60];\n\t\tfloat luma33 = inp_luma0[local_pos + 61];\n\t\tfloat luma34 = inp_luma0[local_pos + 62];\n\t\tfloat luma35 = inp_luma0[local_pos + 63];\n\t\tfloat luma36 = inp_luma0[local_pos + 64];\n\t\tfloat luma37 = inp_luma0[local_pos + 65];\n\t\tfloat luma38 = inp_luma0[local_pos + 66];\n\t\tfloat luma39 = inp_luma0[local_pos + 67];\n\t\tfloat luma6 = inp_luma0[local_pos + 6];\n\t\tfloat luma40 = inp_luma0[local_pos + 75];\n\t\tfloat luma41 = inp_luma0[local_pos + 76];\n\t\tfloat luma42 = inp_luma0[local_pos + 77];\n\t\tfloat luma43 = inp_luma0[local_pos + 78];\n\t\tfloat luma44 = inp_luma0[local_pos + 79];\n\t\tfloat luma45 = inp_luma0[local_pos + 80];\n\t\tfloat luma46 = inp_luma0[local_pos + 81];\n\t\tfloat luma47 = inp_luma0[local_pos + 82];\n\t\tfloat luma48 = inp_luma0[local_pos + 90];\n\t\tfloat luma49 = inp_luma0[local_pos + 91];\n\t\tfloat luma50 = inp_luma0[local_pos + 92];\n\t\tfloat luma51 = inp_luma0[local_pos + 93];\n\t\tfloat luma52 = inp_luma0[local_pos + 94];\n\t\tfloat luma53 = inp_luma0[local_pos + 95];\n\t\tfloat luma54 = inp_luma0[local_pos + 96];\n\t\tfloat luma55 = inp_luma0[local_pos + 97];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma17 - luma1) / 2.0;\n\t\tgy = (luma10 - luma8) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (luma18 - luma2) / 2.0;\n\t\tgy = (-luma12 + 8.0 * luma11 - 8.0 * luma9 + luma8) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma19 - luma3) / 2.0;\n\t\tgy = (-luma13 + 8.0 * luma12 - 8.0 * luma10 + luma9) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma20 - luma4) / 2.0;\n\t\tgy = (-luma14 + 8.0 * luma13 - 8.0 * luma11 + luma10) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma21 - luma5) / 2.0;\n\t\tgy = (-luma15 + 8.0 * luma14 - 8.0 * luma12 + luma11) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma22 - luma6) / 2.0;\n\t\tgy = (luma15 - luma13) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (-luma33 + 8.0 * luma25 - 8.0 * luma9 + luma1) / 12.0;\n\t\tgy = (luma18 - luma16) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma34 + 8.0 * luma26 - 8.0 * luma10 + luma2) / 12.0;\n\t\tgy = (-luma20 + 8.0 * luma19 - 8.0 * luma17 + luma16) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma35 + 8.0 * luma27 - 8.0 * luma11 + luma3) / 12.0;\n\t\tgy = (-luma21 + 8.0 * luma20 - 8.0 * luma18 + luma17) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma36 + 8.0 * luma28 - 8.0 * luma12 + luma4) / 12.0;\n\t\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma37 + 8.0 * luma29 - 8.0 * luma13 + luma5) / 12.0;\n\t\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma38 + 8.0 * luma30 - 8.0 * luma14 + luma6) / 12.0;\n\t\tgy = (luma23 - luma21) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma41 + 8.0 * luma33 - 8.0 * luma17 + luma9) / 12.0;\n\t\tgy = (luma26 - luma24) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma42 + 8.0 * luma34 - 8.0 * luma18 + luma10) / 12.0;\n\t\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma43 + 8.0 * luma35 - 8.0 * luma19 + luma11) / 12.0;\n\t\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma44 + 8.0 * luma36 - 8.0 * luma20 + luma12) / 12.0;\n\t\tgy = (-luma30 + 8.0 * luma29 - 8.0 * luma27 + luma26) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma45 + 8.0 * luma37 - 8.0 * luma21 + luma13) / 12.0;\n\t\tgy = (-luma31 + 8.0 * luma30 - 8.0 * luma28 + luma27) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma46 + 8.0 * luma38 - 8.0 * luma22 + luma14) / 12.0;\n\t\tgy = (luma31 - luma29) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma49 + 8.0 * luma41 - 8.0 * luma25 + luma17) / 12.0;\n\t\tgy = (luma34 - luma32) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma50 + 8.0 * luma42 - 8.0 * luma26 + luma18) / 12.0;\n\t\tgy = (-luma36 + 8.0 * luma35 - 8.0 * luma33 + luma32) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma51 + 8.0 * luma43 - 8.0 * luma27 + luma19) / 12.0;\n\t\tgy = (-luma37 + 8.0 * luma36 - 8.0 * luma34 + luma33) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma52 + 8.0 * luma44 - 8.0 * luma28 + luma20) / 12.0;\n\t\tgy = (-luma38 + 8.0 * luma37 - 8.0 * luma35 + luma34) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma53 + 8.0 * luma45 - 8.0 * luma29 + luma21) / 12.0;\n\t\tgy = (-luma39 + 8.0 * luma38 - 8.0 * luma36 + luma35) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma54 + 8.0 * luma46 - 8.0 * luma30 + luma22) / 12.0;\n\t\tgy = (luma39 - luma37) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma57 + 8.0 * luma49 - 8.0 * luma33 + luma25) / 12.0;\n\t\tgy = (luma42 - luma40) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma58 + 8.0 * luma50 - 8.0 * luma34 + luma26) / 12.0;\n\t\tgy = (-luma44 + 8.0 * luma43 - 8.0 * luma41 + luma40) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma59 + 8.0 * luma51 - 8.0 * luma35 + luma27) / 12.0;\n\t\tgy = (-luma45 + 8.0 * luma44 - 8.0 * luma42 + luma41) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma60 + 8.0 * luma52 - 8.0 * luma36 + luma28) / 12.0;\n\t\tgy = (-luma46 + 8.0 * luma45 - 8.0 * luma43 + luma42) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma61 + 8.0 * luma53 - 8.0 * luma37 + luma29) / 12.0;\n\t\tgy = (-luma47 + 8.0 * luma46 - 8.0 * luma44 + luma43) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma62 + 8.0 * luma54 - 8.0 * luma38 + luma30) / 12.0;\n\t\tgy = (luma47 - luma45) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma57 - luma41) / 2.0;\n\t\tgy = (luma50 - luma48) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (luma58 - luma42) / 2.0;\n\t\tgy = (-luma52 + 8.0 * luma51 - 8.0 * luma49 + luma48) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma59 - luma43) / 2.0;\n\t\tgy = (-luma53 + 8.0 * luma52 - 8.0 * luma50 + luma49) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma60 - luma44) / 2.0;\n\t\tgy = (-luma54 + 8.0 * luma53 - 8.0 * luma51 + luma50) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma61 - luma45) / 2.0;\n\t\tgy = (-luma55 + 8.0 * luma54 - 8.0 * luma52 + luma51) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma62 - luma46) / 2.0;\n\t\tgy = (luma55 - luma53) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tvec3 res = vec3(0.0, 0.0, 0.0);\n\t\tvec4 w;\n\t\tw = texture(ravu_lut4, vec2(0.0625, coord_y));\n\t\tres += (inp0[local_pos + 0] + inp0[local_pos + 112]) * w[0];\n\t\tres += (inp0[local_pos + 1] + inp0[local_pos + 111]) * w[1];\n\t\tres += (inp0[local_pos + 2] + inp0[local_pos + 110]) * w[2];\n\t\tres += (inp0[local_pos + 3] + inp0[local_pos + 109]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.1875, coord_y));\n\t\tres += (inp0[local_pos + 4] + inp0[local_pos + 108]) * w[0];\n\t\tres += (inp0[local_pos + 5] + inp0[local_pos + 107]) * w[1];\n\t\tres += (inp0[local_pos + 6] + inp0[local_pos + 106]) * w[2];\n\t\tres += (inp0[local_pos + 7] + inp0[local_pos + 105]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.3125, coord_y));\n\t\tres += (inp0[local_pos + 15] + inp0[local_pos + 97]) * w[0];\n\t\tres += (inp0[local_pos + 16] + inp0[local_pos + 96]) * w[1];\n\t\tres += (inp0[local_pos + 17] + inp0[local_pos + 95]) * w[2];\n\t\tres += (inp0[local_pos + 18] + inp0[local_pos + 94]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.4375, coord_y));\n\t\tres += (inp0[local_pos + 19] + inp0[local_pos + 93]) * w[0];\n\t\tres += (inp0[local_pos + 20] + inp0[local_pos + 92]) * w[1];\n\t\tres += (inp0[local_pos + 21] + inp0[local_pos + 91]) * w[2];\n\t\tres += (inp0[local_pos + 22] + inp0[local_pos + 90]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.5625, coord_y));\n\t\tres += (inp0[local_pos + 30] + inp0[local_pos + 82]) * w[0];\n\t\tres += (inp0[local_pos + 31] + inp0[local_pos + 81]) * w[1];\n\t\tres += (inp0[local_pos + 32] + inp0[local_pos + 80]) * w[2];\n\t\tres += (inp0[local_pos + 33] + inp0[local_pos + 79]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.6875, coord_y));\n\t\tres += (inp0[local_pos + 34] + inp0[local_pos + 78]) * w[0];\n\t\tres += (inp0[local_pos + 35] + inp0[local_pos + 77]) * w[1];\n\t\tres += (inp0[local_pos + 36] + inp0[local_pos + 76]) * w[2];\n\t\tres += (inp0[local_pos + 37] + inp0[local_pos + 75]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.8125, coord_y));\n\t\tres += (inp0[local_pos + 45] + inp0[local_pos + 67]) * w[0];\n\t\tres += (inp0[local_pos + 46] + inp0[local_pos + 66]) * w[1];\n\t\tres += (inp0[local_pos + 47] + inp0[local_pos + 65]) * w[2];\n\t\tres += (inp0[local_pos + 48] + inp0[local_pos + 64]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.9375, coord_y));\n\t\tres += (inp0[local_pos + 49] + inp0[local_pos + 63]) * w[0];\n\t\tres += (inp0[local_pos + 50] + inp0[local_pos + 62]) * w[1];\n\t\tres += (inp0[local_pos + 51] + inp0[local_pos + 61]) * w[2];\n\t\tres += (inp0[local_pos + 52] + inp0[local_pos + 60]) * w[3];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID), vec4(res, 1.0));\n\t}\n}\n//!PASS 2\n//!DESC RAVU (step2, rgb, r4, compute)\n//!IN INPUT, ravu_lut4, ravu_int11\n//!OUT OUTPUT\n//!BLOCK_SIZE 64, 16\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\nshared vec3 inp0[585];\nshared float inp_luma0[585];\nshared vec3 inp1[585];\nshared float inp_luma1[585];\n\n#define CURRENT_PASS 2\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val)\nvoid imageStoreOverride(uint2 pos, float4 value) { OUTPUT[pos] = value; }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_lut4_tex(pos) (vec4(texture(ravu_lut4, pos)))\n\n#define ravu_int11_tex(pos) (vec3(texture(ravu_int11, pos).xyz))\nstatic const float2 ravu_int11_size = float2(GetInputSize().x, GetInputSize().y);\nstatic const float2 ravu_int11_pt = float2(1.0 / (ravu_int11_size.x), 1.0 / (ravu_int11_size.y));\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tivec2 group_base = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tint local_pos = int(gl_LocalInvocationID.x) * 15 + int(gl_LocalInvocationID.y);\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 585; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\t\tinp0[id] =\n\t\t\t\travu_int11_tex(ravu_int11_pt * vec2(float(group_base.x + x) + (-3.5), float(group_base.y + y) + (-3.5)))\n\t\t\t\t\t.xyz;\n\t\t\tinp_luma0[id] = dot(inp0[id], color_primary);\n\t\t}\n\t}\n\t{\n\t\tfor (int id = int(gl_LocalInvocationIndex); id < 585; id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\t\tuint x = (uint)id / 15, y = (uint)id % 15;\n\t\t\tinp1[id] =\n\t\t\t\tHOOKED_tex(HOOKED_pt * vec2(float(group_base.x + x) + (-2.5), float(group_base.y + y) + (-2.5))).xyz;\n\t\t\tinp_luma1[id] = dot(inp1[id], color_primary);\n\t\t}\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy * 2;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\t{\n\t\tfloat luma16 = inp_luma0[local_pos + 18];\n\t\tfloat luma9 = inp_luma0[local_pos + 19];\n\t\tfloat luma2 = inp_luma0[local_pos + 20];\n\t\tfloat luma32 = inp_luma0[local_pos + 32];\n\t\tfloat luma25 = inp_luma0[local_pos + 33];\n\t\tfloat luma18 = inp_luma0[local_pos + 34];\n\t\tfloat luma11 = inp_luma0[local_pos + 35];\n\t\tfloat luma4 = inp_luma0[local_pos + 36];\n\t\tfloat luma48 = inp_luma0[local_pos + 46];\n\t\tfloat luma41 = inp_luma0[local_pos + 47];\n\t\tfloat luma34 = inp_luma0[local_pos + 48];\n\t\tfloat luma27 = inp_luma0[local_pos + 49];\n\t\tfloat luma20 = inp_luma0[local_pos + 50];\n\t\tfloat luma13 = inp_luma0[local_pos + 51];\n\t\tfloat luma6 = inp_luma0[local_pos + 52];\n\t\tfloat luma57 = inp_luma0[local_pos + 61];\n\t\tfloat luma50 = inp_luma0[local_pos + 62];\n\t\tfloat luma43 = inp_luma0[local_pos + 63];\n\t\tfloat luma36 = inp_luma0[local_pos + 64];\n\t\tfloat luma29 = inp_luma0[local_pos + 65];\n\t\tfloat luma22 = inp_luma0[local_pos + 66];\n\t\tfloat luma15 = inp_luma0[local_pos + 67];\n\t\tfloat luma59 = inp_luma0[local_pos + 77];\n\t\tfloat luma52 = inp_luma0[local_pos + 78];\n\t\tfloat luma45 = inp_luma0[local_pos + 79];\n\t\tfloat luma38 = inp_luma0[local_pos + 80];\n\t\tfloat luma31 = inp_luma0[local_pos + 81];\n\t\tfloat luma61 = inp_luma0[local_pos + 93];\n\t\tfloat luma54 = inp_luma0[local_pos + 94];\n\t\tfloat luma47 = inp_luma0[local_pos + 95];\n\t\tfloat luma24 = inp_luma1[local_pos + 17];\n\t\tfloat luma17 = inp_luma1[local_pos + 18];\n\t\tfloat luma10 = inp_luma1[local_pos + 19];\n\t\tfloat luma3 = inp_luma1[local_pos + 20];\n\t\tfloat luma40 = inp_luma1[local_pos + 31];\n\t\tfloat luma33 = inp_luma1[local_pos + 32];\n\t\tfloat luma26 = inp_luma1[local_pos + 33];\n\t\tfloat luma19 = inp_luma1[local_pos + 34];\n\t\tfloat luma12 = inp_luma1[local_pos + 35];\n\t\tfloat luma5 = inp_luma1[local_pos + 36];\n\t\tfloat luma8 = inp_luma1[local_pos + 3];\n\t\tfloat luma49 = inp_luma1[local_pos + 46];\n\t\tfloat luma42 = inp_luma1[local_pos + 47];\n\t\tfloat luma35 = inp_luma1[local_pos + 48];\n\t\tfloat luma28 = inp_luma1[local_pos + 49];\n\t\tfloat luma1 = inp_luma1[local_pos + 4];\n\t\tfloat luma21 = inp_luma1[local_pos + 50];\n\t\tfloat luma14 = inp_luma1[local_pos + 51];\n\t\tfloat luma58 = inp_luma1[local_pos + 61];\n\t\tfloat luma51 = inp_luma1[local_pos + 62];\n\t\tfloat luma44 = inp_luma1[local_pos + 63];\n\t\tfloat luma37 = inp_luma1[local_pos + 64];\n\t\tfloat luma30 = inp_luma1[local_pos + 65];\n\t\tfloat luma23 = inp_luma1[local_pos + 66];\n\t\tfloat luma60 = inp_luma1[local_pos + 77];\n\t\tfloat luma53 = inp_luma1[local_pos + 78];\n\t\tfloat luma46 = inp_luma1[local_pos + 79];\n\t\tfloat luma39 = inp_luma1[local_pos + 80];\n\t\tfloat luma62 = inp_luma1[local_pos + 93];\n\t\tfloat luma55 = inp_luma1[local_pos + 94];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma17 - luma1) / 2.0;\n\t\tgy = (luma10 - luma8) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (luma18 - luma2) / 2.0;\n\t\tgy = (-luma12 + 8.0 * luma11 - 8.0 * luma9 + luma8) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma19 - luma3) / 2.0;\n\t\tgy = (-luma13 + 8.0 * luma12 - 8.0 * luma10 + luma9) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma20 - luma4) / 2.0;\n\t\tgy = (-luma14 + 8.0 * luma13 - 8.0 * luma11 + luma10) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma21 - luma5) / 2.0;\n\t\tgy = (-luma15 + 8.0 * luma14 - 8.0 * luma12 + luma11) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma22 - luma6) / 2.0;\n\t\tgy = (luma15 - luma13) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (-luma33 + 8.0 * luma25 - 8.0 * luma9 + luma1) / 12.0;\n\t\tgy = (luma18 - luma16) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma34 + 8.0 * luma26 - 8.0 * luma10 + luma2) / 12.0;\n\t\tgy = (-luma20 + 8.0 * luma19 - 8.0 * luma17 + luma16) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma35 + 8.0 * luma27 - 8.0 * luma11 + luma3) / 12.0;\n\t\tgy = (-luma21 + 8.0 * luma20 - 8.0 * luma18 + luma17) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma36 + 8.0 * luma28 - 8.0 * luma12 + luma4) / 12.0;\n\t\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma37 + 8.0 * luma29 - 8.0 * luma13 + luma5) / 12.0;\n\t\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma38 + 8.0 * luma30 - 8.0 * luma14 + luma6) / 12.0;\n\t\tgy = (luma23 - luma21) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma41 + 8.0 * luma33 - 8.0 * luma17 + luma9) / 12.0;\n\t\tgy = (luma26 - luma24) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma42 + 8.0 * luma34 - 8.0 * luma18 + luma10) / 12.0;\n\t\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma43 + 8.0 * luma35 - 8.0 * luma19 + luma11) / 12.0;\n\t\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma44 + 8.0 * luma36 - 8.0 * luma20 + luma12) / 12.0;\n\t\tgy = (-luma30 + 8.0 * luma29 - 8.0 * luma27 + luma26) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma45 + 8.0 * luma37 - 8.0 * luma21 + luma13) / 12.0;\n\t\tgy = (-luma31 + 8.0 * luma30 - 8.0 * luma28 + luma27) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma46 + 8.0 * luma38 - 8.0 * luma22 + luma14) / 12.0;\n\t\tgy = (luma31 - luma29) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma49 + 8.0 * luma41 - 8.0 * luma25 + luma17) / 12.0;\n\t\tgy = (luma34 - luma32) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma50 + 8.0 * luma42 - 8.0 * luma26 + luma18) / 12.0;\n\t\tgy = (-luma36 + 8.0 * luma35 - 8.0 * luma33 + luma32) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma51 + 8.0 * luma43 - 8.0 * luma27 + luma19) / 12.0;\n\t\tgy = (-luma37 + 8.0 * luma36 - 8.0 * luma34 + luma33) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma52 + 8.0 * luma44 - 8.0 * luma28 + luma20) / 12.0;\n\t\tgy = (-luma38 + 8.0 * luma37 - 8.0 * luma35 + luma34) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma53 + 8.0 * luma45 - 8.0 * luma29 + luma21) / 12.0;\n\t\tgy = (-luma39 + 8.0 * luma38 - 8.0 * luma36 + luma35) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma54 + 8.0 * luma46 - 8.0 * luma30 + luma22) / 12.0;\n\t\tgy = (luma39 - luma37) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma57 + 8.0 * luma49 - 8.0 * luma33 + luma25) / 12.0;\n\t\tgy = (luma42 - luma40) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma58 + 8.0 * luma50 - 8.0 * luma34 + luma26) / 12.0;\n\t\tgy = (-luma44 + 8.0 * luma43 - 8.0 * luma41 + luma40) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma59 + 8.0 * luma51 - 8.0 * luma35 + luma27) / 12.0;\n\t\tgy = (-luma45 + 8.0 * luma44 - 8.0 * luma42 + luma41) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma60 + 8.0 * luma52 - 8.0 * luma36 + luma28) / 12.0;\n\t\tgy = (-luma46 + 8.0 * luma45 - 8.0 * luma43 + luma42) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma61 + 8.0 * luma53 - 8.0 * luma37 + luma29) / 12.0;\n\t\tgy = (-luma47 + 8.0 * luma46 - 8.0 * luma44 + luma43) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma62 + 8.0 * luma54 - 8.0 * luma38 + luma30) / 12.0;\n\t\tgy = (luma47 - luma45) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma57 - luma41) / 2.0;\n\t\tgy = (luma50 - luma48) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (luma58 - luma42) / 2.0;\n\t\tgy = (-luma52 + 8.0 * luma51 - 8.0 * luma49 + luma48) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma59 - luma43) / 2.0;\n\t\tgy = (-luma53 + 8.0 * luma52 - 8.0 * luma50 + luma49) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma60 - luma44) / 2.0;\n\t\tgy = (-luma54 + 8.0 * luma53 - 8.0 * luma51 + luma50) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma61 - luma45) / 2.0;\n\t\tgy = (-luma55 + 8.0 * luma54 - 8.0 * luma52 + luma51) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma62 - luma46) / 2.0;\n\t\tgy = (luma55 - luma53) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tvec3 res = vec3(0.0, 0.0, 0.0);\n\t\tvec4 w;\n\t\tw = texture(ravu_lut4, vec2(0.0625, coord_y));\n\t\tres += (inp0[local_pos + 4] + inp0[local_pos + 109]) * w[0];\n\t\tres += (inp1[local_pos + 4] + inp1[local_pos + 93]) * w[1];\n\t\tres += (inp0[local_pos + 20] + inp0[local_pos + 93]) * w[2];\n\t\tres += (inp1[local_pos + 20] + inp1[local_pos + 77]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.1875, coord_y));\n\t\tres += (inp0[local_pos + 36] + inp0[local_pos + 77]) * w[0];\n\t\tres += (inp1[local_pos + 36] + inp1[local_pos + 61]) * w[1];\n\t\tres += (inp0[local_pos + 52] + inp0[local_pos + 61]) * w[2];\n\t\tres += (inp1[local_pos + 52] + inp1[local_pos + 45]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.3125, coord_y));\n\t\tres += (inp1[local_pos + 3] + inp1[local_pos + 94]) * w[0];\n\t\tres += (inp0[local_pos + 19] + inp0[local_pos + 94]) * w[1];\n\t\tres += (inp1[local_pos + 19] + inp1[local_pos + 78]) * w[2];\n\t\tres += (inp0[local_pos + 35] + inp0[local_pos + 78]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.4375, coord_y));\n\t\tres += (inp1[local_pos + 35] + inp1[local_pos + 62]) * w[0];\n\t\tres += (inp0[local_pos + 51] + inp0[local_pos + 62]) * w[1];\n\t\tres += (inp1[local_pos + 51] + inp1[local_pos + 46]) * w[2];\n\t\tres += (inp0[local_pos + 67] + inp0[local_pos + 46]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.5625, coord_y));\n\t\tres += (inp0[local_pos + 18] + inp0[local_pos + 95]) * w[0];\n\t\tres += (inp1[local_pos + 18] + inp1[local_pos + 79]) * w[1];\n\t\tres += (inp0[local_pos + 34] + inp0[local_pos + 79]) * w[2];\n\t\tres += (inp1[local_pos + 34] + inp1[local_pos + 63]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.6875, coord_y));\n\t\tres += (inp0[local_pos + 50] + inp0[local_pos + 63]) * w[0];\n\t\tres += (inp1[local_pos + 50] + inp1[local_pos + 47]) * w[1];\n\t\tres += (inp0[local_pos + 66] + inp0[local_pos + 47]) * w[2];\n\t\tres += (inp1[local_pos + 66] + inp1[local_pos + 31]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.8125, coord_y));\n\t\tres += (inp1[local_pos + 17] + inp1[local_pos + 80]) * w[0];\n\t\tres += (inp0[local_pos + 33] + inp0[local_pos + 80]) * w[1];\n\t\tres += (inp1[local_pos + 33] + inp1[local_pos + 64]) * w[2];\n\t\tres += (inp0[local_pos + 49] + inp0[local_pos + 64]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.9375, coord_y));\n\t\tres += (inp1[local_pos + 49] + inp1[local_pos + 48]) * w[0];\n\t\tres += (inp0[local_pos + 65] + inp0[local_pos + 48]) * w[1];\n\t\tres += (inp1[local_pos + 65] + inp1[local_pos + 32]) * w[2];\n\t\tres += (inp0[local_pos + 81] + inp0[local_pos + 32]) * w[3];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 1), vec4(res, 1.0));\n\t}\n\t{\n\t\tfloat luma62 = inp_luma0[local_pos + 108];\n\t\tfloat luma55 = inp_luma0[local_pos + 109];\n\t\tfloat luma8 = inp_luma0[local_pos + 18];\n\t\tfloat luma1 = inp_luma0[local_pos + 19];\n\t\tfloat luma24 = inp_luma0[local_pos + 32];\n\t\tfloat luma17 = inp_luma0[local_pos + 33];\n\t\tfloat luma10 = inp_luma0[local_pos + 34];\n\t\tfloat luma3 = inp_luma0[local_pos + 35];\n\t\tfloat luma40 = inp_luma0[local_pos + 46];\n\t\tfloat luma33 = inp_luma0[local_pos + 47];\n\t\tfloat luma26 = inp_luma0[local_pos + 48];\n\t\tfloat luma19 = inp_luma0[local_pos + 49];\n\t\tfloat luma12 = inp_luma0[local_pos + 50];\n\t\tfloat luma5 = inp_luma0[local_pos + 51];\n\t\tfloat luma49 = inp_luma0[local_pos + 61];\n\t\tfloat luma42 = inp_luma0[local_pos + 62];\n\t\tfloat luma35 = inp_luma0[local_pos + 63];\n\t\tfloat luma28 = inp_luma0[local_pos + 64];\n\t\tfloat luma21 = inp_luma0[local_pos + 65];\n\t\tfloat luma14 = inp_luma0[local_pos + 66];\n\t\tfloat luma58 = inp_luma0[local_pos + 76];\n\t\tfloat luma51 = inp_luma0[local_pos + 77];\n\t\tfloat luma44 = inp_luma0[local_pos + 78];\n\t\tfloat luma37 = inp_luma0[local_pos + 79];\n\t\tfloat luma30 = inp_luma0[local_pos + 80];\n\t\tfloat luma23 = inp_luma0[local_pos + 81];\n\t\tfloat luma60 = inp_luma0[local_pos + 92];\n\t\tfloat luma53 = inp_luma0[local_pos + 93];\n\t\tfloat luma46 = inp_luma0[local_pos + 94];\n\t\tfloat luma39 = inp_luma0[local_pos + 95];\n\t\tfloat luma16 = inp_luma1[local_pos + 17];\n\t\tfloat luma9 = inp_luma1[local_pos + 18];\n\t\tfloat luma2 = inp_luma1[local_pos + 19];\n\t\tfloat luma32 = inp_luma1[local_pos + 31];\n\t\tfloat luma25 = inp_luma1[local_pos + 32];\n\t\tfloat luma18 = inp_luma1[local_pos + 33];\n\t\tfloat luma11 = inp_luma1[local_pos + 34];\n\t\tfloat luma4 = inp_luma1[local_pos + 35];\n\t\tfloat luma48 = inp_luma1[local_pos + 45];\n\t\tfloat luma41 = inp_luma1[local_pos + 46];\n\t\tfloat luma34 = inp_luma1[local_pos + 47];\n\t\tfloat luma27 = inp_luma1[local_pos + 48];\n\t\tfloat luma20 = inp_luma1[local_pos + 49];\n\t\tfloat luma13 = inp_luma1[local_pos + 50];\n\t\tfloat luma6 = inp_luma1[local_pos + 51];\n\t\tfloat luma57 = inp_luma1[local_pos + 60];\n\t\tfloat luma50 = inp_luma1[local_pos + 61];\n\t\tfloat luma43 = inp_luma1[local_pos + 62];\n\t\tfloat luma36 = inp_luma1[local_pos + 63];\n\t\tfloat luma29 = inp_luma1[local_pos + 64];\n\t\tfloat luma22 = inp_luma1[local_pos + 65];\n\t\tfloat luma15 = inp_luma1[local_pos + 66];\n\t\tfloat luma59 = inp_luma1[local_pos + 76];\n\t\tfloat luma52 = inp_luma1[local_pos + 77];\n\t\tfloat luma45 = inp_luma1[local_pos + 78];\n\t\tfloat luma38 = inp_luma1[local_pos + 79];\n\t\tfloat luma31 = inp_luma1[local_pos + 80];\n\t\tfloat luma61 = inp_luma1[local_pos + 92];\n\t\tfloat luma54 = inp_luma1[local_pos + 93];\n\t\tfloat luma47 = inp_luma1[local_pos + 94];\n\t\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\t\tfloat gx, gy;\n\t\tgx = (luma17 - luma1) / 2.0;\n\t\tgy = (luma10 - luma8) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (luma18 - luma2) / 2.0;\n\t\tgy = (-luma12 + 8.0 * luma11 - 8.0 * luma9 + luma8) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma19 - luma3) / 2.0;\n\t\tgy = (-luma13 + 8.0 * luma12 - 8.0 * luma10 + luma9) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma20 - luma4) / 2.0;\n\t\tgy = (-luma14 + 8.0 * luma13 - 8.0 * luma11 + luma10) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma21 - luma5) / 2.0;\n\t\tgy = (-luma15 + 8.0 * luma14 - 8.0 * luma12 + luma11) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma22 - luma6) / 2.0;\n\t\tgy = (luma15 - luma13) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (-luma33 + 8.0 * luma25 - 8.0 * luma9 + luma1) / 12.0;\n\t\tgy = (luma18 - luma16) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma34 + 8.0 * luma26 - 8.0 * luma10 + luma2) / 12.0;\n\t\tgy = (-luma20 + 8.0 * luma19 - 8.0 * luma17 + luma16) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma35 + 8.0 * luma27 - 8.0 * luma11 + luma3) / 12.0;\n\t\tgy = (-luma21 + 8.0 * luma20 - 8.0 * luma18 + luma17) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma36 + 8.0 * luma28 - 8.0 * luma12 + luma4) / 12.0;\n\t\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma37 + 8.0 * luma29 - 8.0 * luma13 + luma5) / 12.0;\n\t\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma38 + 8.0 * luma30 - 8.0 * luma14 + luma6) / 12.0;\n\t\tgy = (luma23 - luma21) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma41 + 8.0 * luma33 - 8.0 * luma17 + luma9) / 12.0;\n\t\tgy = (luma26 - luma24) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma42 + 8.0 * luma34 - 8.0 * luma18 + luma10) / 12.0;\n\t\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma43 + 8.0 * luma35 - 8.0 * luma19 + luma11) / 12.0;\n\t\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma44 + 8.0 * luma36 - 8.0 * luma20 + luma12) / 12.0;\n\t\tgy = (-luma30 + 8.0 * luma29 - 8.0 * luma27 + luma26) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma45 + 8.0 * luma37 - 8.0 * luma21 + luma13) / 12.0;\n\t\tgy = (-luma31 + 8.0 * luma30 - 8.0 * luma28 + luma27) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma46 + 8.0 * luma38 - 8.0 * luma22 + luma14) / 12.0;\n\t\tgy = (luma31 - luma29) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma49 + 8.0 * luma41 - 8.0 * luma25 + luma17) / 12.0;\n\t\tgy = (luma34 - luma32) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma50 + 8.0 * luma42 - 8.0 * luma26 + luma18) / 12.0;\n\t\tgy = (-luma36 + 8.0 * luma35 - 8.0 * luma33 + luma32) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma51 + 8.0 * luma43 - 8.0 * luma27 + luma19) / 12.0;\n\t\tgy = (-luma37 + 8.0 * luma36 - 8.0 * luma34 + luma33) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma52 + 8.0 * luma44 - 8.0 * luma28 + luma20) / 12.0;\n\t\tgy = (-luma38 + 8.0 * luma37 - 8.0 * luma35 + luma34) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04933151482066013;\n\t\tgx = (-luma53 + 8.0 * luma45 - 8.0 * luma29 + luma21) / 12.0;\n\t\tgy = (-luma39 + 8.0 * luma38 - 8.0 * luma36 + luma35) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma54 + 8.0 * luma46 - 8.0 * luma30 + luma22) / 12.0;\n\t\tgy = (luma39 - luma37) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (-luma57 + 8.0 * luma49 - 8.0 * luma33 + luma25) / 12.0;\n\t\tgy = (luma42 - luma40) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (-luma58 + 8.0 * luma50 - 8.0 * luma34 + luma26) / 12.0;\n\t\tgy = (-luma44 + 8.0 * luma43 - 8.0 * luma41 + luma40) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma59 + 8.0 * luma51 - 8.0 * luma35 + luma27) / 12.0;\n\t\tgy = (-luma45 + 8.0 * luma44 - 8.0 * luma42 + luma41) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma60 + 8.0 * luma52 - 8.0 * luma36 + luma28) / 12.0;\n\t\tgy = (-luma46 + 8.0 * luma45 - 8.0 * luma43 + luma42) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.03841942237242872;\n\t\tgx = (-luma61 + 8.0 * luma53 - 8.0 * luma37 + luma29) / 12.0;\n\t\tgy = (-luma47 + 8.0 * luma46 - 8.0 * luma44 + luma43) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.02992107622879854;\n\t\tgx = (-luma62 + 8.0 * luma54 - 8.0 * luma38 + luma30) / 12.0;\n\t\tgy = (luma47 - luma45) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma57 - luma41) / 2.0;\n\t\tgy = (luma50 - luma48) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tgx = (luma58 - luma42) / 2.0;\n\t\tgy = (-luma52 + 8.0 * luma51 - 8.0 * luma49 + luma48) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma59 - luma43) / 2.0;\n\t\tgy = (-luma53 + 8.0 * luma52 - 8.0 * luma50 + luma49) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma60 - luma44) / 2.0;\n\t\tgy = (-luma54 + 8.0 * luma53 - 8.0 * luma51 + luma50) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.0233025575973275;\n\t\tgx = (luma61 - luma45) / 2.0;\n\t\tgy = (-luma55 + 8.0 * luma54 - 8.0 * luma52 + luma51) / 12.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.018148050104365175;\n\t\tgx = (luma62 - luma46) / 2.0;\n\t\tgy = (luma55 - luma53) / 2.0;\n\t\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.011007348802298533;\n\t\tfloat a = abd.x, b = abd.y, d = abd.z;\n\t\tfloat T = a + d, D = a * d - b * b;\n\t\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\t\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\t\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\t\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\t\tfloat lambda = sqrtL1;\n\t\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\t\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\t\tfloat strength = clamp(floor(log2(lambda * 2000.0 + 1.192092896e-7)), 0.0, 8.0);\n\t\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\t\tfloat coord_y = ((angle * 9.0 + strength) * 3.0 + coherence + 0.5) / 648.0;\n\t\tvec3 res = vec3(0.0, 0.0, 0.0);\n\t\tvec4 w;\n\t\tw = texture(ravu_lut4, vec2(0.0625, coord_y));\n\t\tres += (inp1[local_pos + 3] + inp1[local_pos + 108]) * w[0];\n\t\tres += (inp0[local_pos + 19] + inp0[local_pos + 108]) * w[1];\n\t\tres += (inp1[local_pos + 19] + inp1[local_pos + 92]) * w[2];\n\t\tres += (inp0[local_pos + 35] + inp0[local_pos + 92]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.1875, coord_y));\n\t\tres += (inp1[local_pos + 35] + inp1[local_pos + 76]) * w[0];\n\t\tres += (inp0[local_pos + 51] + inp0[local_pos + 76]) * w[1];\n\t\tres += (inp1[local_pos + 51] + inp1[local_pos + 60]) * w[2];\n\t\tres += (inp0[local_pos + 67] + inp0[local_pos + 60]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.3125, coord_y));\n\t\tres += (inp0[local_pos + 18] + inp0[local_pos + 109]) * w[0];\n\t\tres += (inp1[local_pos + 18] + inp1[local_pos + 93]) * w[1];\n\t\tres += (inp0[local_pos + 34] + inp0[local_pos + 93]) * w[2];\n\t\tres += (inp1[local_pos + 34] + inp1[local_pos + 77]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.4375, coord_y));\n\t\tres += (inp0[local_pos + 50] + inp0[local_pos + 77]) * w[0];\n\t\tres += (inp1[local_pos + 50] + inp1[local_pos + 61]) * w[1];\n\t\tres += (inp0[local_pos + 66] + inp0[local_pos + 61]) * w[2];\n\t\tres += (inp1[local_pos + 66] + inp1[local_pos + 45]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.5625, coord_y));\n\t\tres += (inp1[local_pos + 17] + inp1[local_pos + 94]) * w[0];\n\t\tres += (inp0[local_pos + 33] + inp0[local_pos + 94]) * w[1];\n\t\tres += (inp1[local_pos + 33] + inp1[local_pos + 78]) * w[2];\n\t\tres += (inp0[local_pos + 49] + inp0[local_pos + 78]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.6875, coord_y));\n\t\tres += (inp1[local_pos + 49] + inp1[local_pos + 62]) * w[0];\n\t\tres += (inp0[local_pos + 65] + inp0[local_pos + 62]) * w[1];\n\t\tres += (inp1[local_pos + 65] + inp1[local_pos + 46]) * w[2];\n\t\tres += (inp0[local_pos + 81] + inp0[local_pos + 46]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.8125, coord_y));\n\t\tres += (inp0[local_pos + 32] + inp0[local_pos + 95]) * w[0];\n\t\tres += (inp1[local_pos + 32] + inp1[local_pos + 79]) * w[1];\n\t\tres += (inp0[local_pos + 48] + inp0[local_pos + 79]) * w[2];\n\t\tres += (inp1[local_pos + 48] + inp1[local_pos + 63]) * w[3];\n\t\tw = texture(ravu_lut4, vec2(0.9375, coord_y));\n\t\tres += (inp0[local_pos + 64] + inp0[local_pos + 63]) * w[0];\n\t\tres += (inp1[local_pos + 64] + inp1[local_pos + 47]) * w[1];\n\t\tres += (inp0[local_pos + 80] + inp0[local_pos + 47]) * w[2];\n\t\tres += (inp1[local_pos + 80] + inp1[local_pos + 31]) * w[3];\n\t\tres = clamp(res, 0.0, 1.0);\n\t\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 0), vec4(res, 1.0));\n\t}\n\tvec3 res;\n\tres = inp0[local_pos + 64];\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(1, 1), vec4(res, 1.0));\n\tres = inp1[local_pos + 48];\n\timageStore(out_image, ivec2(gl_GlobalInvocationID) * 2 + ivec2(0, 0), vec4(res, 1.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Zoom_AR_R2.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-zoom.py --target luma --weights-file weights\\ravu-zoom_weights-r2.py --float-format float16dx --use-compute-shader --anti-ringing 0.8 --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//\n//\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_zoom_lut2_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_zoom_lut2;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_zoom_lut2;\n\n//!TEXTURE\n//!SOURCE ravu_zoom_lut2_ar_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_zoom_lut2_ar;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_zoom_lut2_ar;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Zoom-AR (luma, r2, compute)\n//!IN INPUT, ravu_zoom_lut2, ravu_zoom_lut2_ar\n//!OUT OUTPUT\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\n#define LUTPOS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x))\nshared float samples[432];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_zoom_lut2_tex(pos) (vec4(texture(ravu_zoom_lut2, pos)))\n\n#define ravu_zoom_lut2_ar_tex(pos) (vec4(texture(ravu_zoom_lut2_ar, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_begin = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tivec2 group_end = group_begin + ivec2(gl_WorkGroupSize) - ivec2(1, 1);\n\tivec2 rectl = ivec2(floor(HOOKED_size * HOOKED_map(group_begin) - 0.5001)) - 1;\n\tivec2 rectr = ivec2(floor(HOOKED_size * HOOKED_map(group_end) - 0.4999)) + 2;\n\tivec2 rect = rectr - rectl + 1;\n\tfor (int id = int(gl_LocalInvocationIndex); id < rect.x * rect.y;\n\t\t id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint y = (uint)id / rect.x, x = (uint)id % rect.x;\n\t\tsamples[x + y * 36] = HOOKED_tex(HOOKED_pt * (vec2(rectl + ivec2(x, y)) + vec2(0.5, 0.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec2 pos = HOOKED_size * HOOKED_map(ivec2(gl_GlobalInvocationID));\n\tvec2 subpix = fract(pos - 0.5);\n\tpos -= subpix;\n\tsubpix = LUTPOS(subpix, vec2(9.0, 9.0));\n\tvec2 subpix_inv = 1.0 - subpix;\n\tsubpix /= vec2(2.0, 288.0);\n\tsubpix_inv /= vec2(2.0, 288.0);\n\tivec2 ipos = ivec2(floor(pos)) - rectl;\n\tint lpos = ipos.x + ipos.y * 36;\n\tfloat sample0 = samples[-37 + lpos];\n\tfloat sample1 = samples[-1 + lpos];\n\tfloat sample2 = samples[35 + lpos];\n\tfloat sample3 = samples[71 + lpos];\n\tfloat sample4 = samples[-36 + lpos];\n\tfloat sample5 = samples[0 + lpos];\n\tfloat sample6 = samples[36 + lpos];\n\tfloat sample7 = samples[72 + lpos];\n\tfloat sample8 = samples[-35 + lpos];\n\tfloat sample9 = samples[1 + lpos];\n\tfloat sample10 = samples[37 + lpos];\n\tfloat sample11 = samples[73 + lpos];\n\tfloat sample12 = samples[-34 + lpos];\n\tfloat sample13 = samples[2 + lpos];\n\tfloat sample14 = samples[38 + lpos];\n\tfloat sample15 = samples[74 + lpos];\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (sample4 - sample0);\n\tgy = (sample1 - sample0);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (sample5 - sample1);\n\tgy = (sample2 - sample0) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample6 - sample2);\n\tgy = (sample3 - sample1) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample7 - sample3);\n\tgy = (sample3 - sample2);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (sample8 - sample0) / 2.0;\n\tgy = (sample5 - sample4);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample9 - sample1) / 2.0;\n\tgy = (sample6 - sample4) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (sample10 - sample2) / 2.0;\n\tgy = (sample7 - sample5) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (sample11 - sample3) / 2.0;\n\tgy = (sample7 - sample6);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample12 - sample4) / 2.0;\n\tgy = (sample9 - sample8);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample13 - sample5) / 2.0;\n\tgy = (sample10 - sample8) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (sample14 - sample6) / 2.0;\n\tgy = (sample11 - sample9) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (sample15 - sample7) / 2.0;\n\tgy = (sample11 - sample10);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample12 - sample8);\n\tgy = (sample13 - sample12);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (sample13 - sample9);\n\tgy = (sample14 - sample12) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample14 - sample10);\n\tgy = (sample15 - sample13) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample15 - sample11);\n\tgy = (sample15 - sample14);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence) / 288.0;\n\tfloat res = 0.0;\n\tvec4 w;\n\tvec4 cg, cg1;\n\tfloat lo = 0.0, hi = 0.0;\n\tfloat lo2 = 0.0, hi2 = 0.0;\n\tw = texture(ravu_zoom_lut2, vec2(0.0, coord_y) + subpix);\n\tres += sample0 * w[0];\n\tres += sample1 * w[1];\n\tres += sample2 * w[2];\n\tres += sample3 * w[3];\n\tw = texture(ravu_zoom_lut2, vec2(0.5, coord_y) + subpix);\n\tres += sample4 * w[0];\n\tres += sample5 * w[1];\n\tres += sample6 * w[2];\n\tres += sample7 * w[3];\n\tw = texture(ravu_zoom_lut2, vec2(0.0, coord_y) + subpix_inv);\n\tres += sample15 * w[0];\n\tres += sample14 * w[1];\n\tres += sample13 * w[2];\n\tres += sample12 * w[3];\n\tw = texture(ravu_zoom_lut2, vec2(0.5, coord_y) + subpix_inv);\n\tres += sample11 * w[0];\n\tres += sample10 * w[1];\n\tres += sample9 * w[2];\n\tres += sample8 * w[3];\n\tw = texture(ravu_zoom_lut2_ar, vec2(0.0, coord_y) + subpix);\n\tcg = vec4(0.1 + sample0, 1.1 - sample0, 0.1 + sample1, 1.1 - sample1);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg *= cg1;\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = vec4(0.1 + sample2, 1.1 - sample2, 0.1 + sample3, 1.1 - sample3);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg *= cg1;\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\tw = texture(ravu_zoom_lut2_ar, vec2(0.5, coord_y) + subpix);\n\tcg = vec4(0.1 + sample4, 1.1 - sample4, 0.1 + sample5, 1.1 - sample5);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg *= cg1;\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = vec4(0.1 + sample6, 1.1 - sample6, 0.1 + sample7, 1.1 - sample7);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg *= cg1;\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\tw = texture(ravu_zoom_lut2_ar, vec2(0.0, coord_y) + subpix_inv);\n\tcg = vec4(0.1 + sample15, 1.1 - sample15, 0.1 + sample14, 1.1 - sample14);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg *= cg1;\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = vec4(0.1 + sample13, 1.1 - sample13, 0.1 + sample12, 1.1 - sample12);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg *= cg1;\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\tw = texture(ravu_zoom_lut2_ar, vec2(0.5, coord_y) + subpix_inv);\n\tcg = vec4(0.1 + sample11, 1.1 - sample11, 0.1 + sample10, 1.1 - sample10);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg *= cg1;\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = vec4(0.1 + sample9, 1.1 - sample9, 0.1 + sample8, 1.1 - sample8);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg *= cg1;\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\thi = hi2 / hi - 0.1;\n\tlo = 1.1 - lo2 / lo;\n\tres = mix(res, clamp(res, lo, hi), 0.800000);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID), res);\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Zoom_AR_R2_RGB.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-zoom.py --target rgb --weights-file weights\\ravu-zoom_weights-r2.py --float-format float16dx --use-compute-shader --anti-ringing 0.8 --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//\n//\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!SOURCE ravu_zoom_lut2_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_zoom_lut2;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_zoom_lut2;\n\n//!TEXTURE\n//!SOURCE ravu_zoom_lut2_ar_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_zoom_lut2_ar;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_zoom_lut2_ar;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Zoom-AR (rgb, r2, compute)\n//!IN INPUT, ravu_zoom_lut2, ravu_zoom_lut2_ar\n//!OUT OUTPUT\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\n#define LUTPOS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x))\nshared vec3 samples[432];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val)\nvoid imageStoreOverride(uint2 pos, float4 value) { OUTPUT[pos] = value; }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_zoom_lut2_tex(pos) (vec4(texture(ravu_zoom_lut2, pos)))\n\n#define ravu_zoom_lut2_ar_tex(pos) (vec4(texture(ravu_zoom_lut2_ar, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_begin = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tivec2 group_end = group_begin + ivec2(gl_WorkGroupSize) - ivec2(1, 1);\n\tivec2 rectl = ivec2(floor(HOOKED_size * HOOKED_map(group_begin) - 0.5001)) - 1;\n\tivec2 rectr = ivec2(floor(HOOKED_size * HOOKED_map(group_end) - 0.4999)) + 2;\n\tivec2 rect = rectr - rectl + 1;\n\tfor (int id = int(gl_LocalInvocationIndex); id < rect.x * rect.y;\n\t\t id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint y = (uint)id / rect.x, x = (uint)id % rect.x;\n\t\tsamples[x + y * 36] = HOOKED_tex(HOOKED_pt * (vec2(rectl + ivec2(x, y)) + vec2(0.5, 0.5))).xyz;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec2 pos = HOOKED_size * HOOKED_map(ivec2(gl_GlobalInvocationID));\n\tvec2 subpix = fract(pos - 0.5);\n\tpos -= subpix;\n\tsubpix = LUTPOS(subpix, vec2(9.0, 9.0));\n\tvec2 subpix_inv = 1.0 - subpix;\n\tsubpix /= vec2(2.0, 288.0);\n\tsubpix_inv /= vec2(2.0, 288.0);\n\tivec2 ipos = ivec2(floor(pos)) - rectl;\n\tint lpos = ipos.x + ipos.y * 36;\n\tvec3 sample0 = samples[-37 + lpos];\n\tvec3 sample1 = samples[-1 + lpos];\n\tvec3 sample2 = samples[35 + lpos];\n\tvec3 sample3 = samples[71 + lpos];\n\tvec3 sample4 = samples[-36 + lpos];\n\tvec3 sample5 = samples[0 + lpos];\n\tvec3 sample6 = samples[36 + lpos];\n\tvec3 sample7 = samples[72 + lpos];\n\tvec3 sample8 = samples[-35 + lpos];\n\tvec3 sample9 = samples[1 + lpos];\n\tvec3 sample10 = samples[37 + lpos];\n\tvec3 sample11 = samples[73 + lpos];\n\tvec3 sample12 = samples[-34 + lpos];\n\tvec3 sample13 = samples[2 + lpos];\n\tvec3 sample14 = samples[38 + lpos];\n\tvec3 sample15 = samples[74 + lpos];\n\tfloat luma0 = dot(sample0, color_primary);\n\tfloat luma1 = dot(sample1, color_primary);\n\tfloat luma2 = dot(sample2, color_primary);\n\tfloat luma3 = dot(sample3, color_primary);\n\tfloat luma4 = dot(sample4, color_primary);\n\tfloat luma5 = dot(sample5, color_primary);\n\tfloat luma6 = dot(sample6, color_primary);\n\tfloat luma7 = dot(sample7, color_primary);\n\tfloat luma8 = dot(sample8, color_primary);\n\tfloat luma9 = dot(sample9, color_primary);\n\tfloat luma10 = dot(sample10, color_primary);\n\tfloat luma11 = dot(sample11, color_primary);\n\tfloat luma12 = dot(sample12, color_primary);\n\tfloat luma13 = dot(sample13, color_primary);\n\tfloat luma14 = dot(sample14, color_primary);\n\tfloat luma15 = dot(sample15, color_primary);\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (luma4 - luma0);\n\tgy = (luma1 - luma0);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (luma5 - luma1);\n\tgy = (luma2 - luma0) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma6 - luma2);\n\tgy = (luma3 - luma1) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma7 - luma3);\n\tgy = (luma3 - luma2);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (luma8 - luma0) / 2.0;\n\tgy = (luma5 - luma4);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma9 - luma1) / 2.0;\n\tgy = (luma6 - luma4) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (luma10 - luma2) / 2.0;\n\tgy = (luma7 - luma5) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (luma11 - luma3) / 2.0;\n\tgy = (luma7 - luma6);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma12 - luma4) / 2.0;\n\tgy = (luma9 - luma8);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma13 - luma5) / 2.0;\n\tgy = (luma10 - luma8) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (luma14 - luma6) / 2.0;\n\tgy = (luma11 - luma9) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (luma15 - luma7) / 2.0;\n\tgy = (luma11 - luma10);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma12 - luma8);\n\tgy = (luma13 - luma12);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (luma13 - luma9);\n\tgy = (luma14 - luma12) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma14 - luma10);\n\tgy = (luma15 - luma13) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma15 - luma11);\n\tgy = (luma15 - luma14);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence) / 288.0;\n\tvec3 res = vec3(0.0, 0.0, 0.0);\n\tvec4 w;\n\tmat4x3 cg, cg1;\n\tvec3 lo = vec3(0.0, 0.0, 0.0), hi = vec3(0.0, 0.0, 0.0);\n\tvec3 lo2 = vec3(0.0, 0.0, 0.0), hi2 = vec3(0.0, 0.0, 0.0);\n\tw = texture(ravu_zoom_lut2, vec2(0.0, coord_y) + subpix);\n\tres += sample0 * w[0];\n\tres += sample1 * w[1];\n\tres += sample2 * w[2];\n\tres += sample3 * w[3];\n\tw = texture(ravu_zoom_lut2, vec2(0.5, coord_y) + subpix);\n\tres += sample4 * w[0];\n\tres += sample5 * w[1];\n\tres += sample6 * w[2];\n\tres += sample7 * w[3];\n\tw = texture(ravu_zoom_lut2, vec2(0.0, coord_y) + subpix_inv);\n\tres += sample15 * w[0];\n\tres += sample14 * w[1];\n\tres += sample13 * w[2];\n\tres += sample12 * w[3];\n\tw = texture(ravu_zoom_lut2, vec2(0.5, coord_y) + subpix_inv);\n\tres += sample11 * w[0];\n\tres += sample10 * w[1];\n\tres += sample9 * w[2];\n\tres += sample8 * w[3];\n\tw = texture(ravu_zoom_lut2_ar, vec2(0.0, coord_y) + subpix);\n\tcg = mat4x3(0.1 + sample0, 1.1 - sample0, 0.1 + sample1, 1.1 - sample1);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = mat4x3(0.1 + sample2, 1.1 - sample2, 0.1 + sample3, 1.1 - sample3);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\tw = texture(ravu_zoom_lut2_ar, vec2(0.5, coord_y) + subpix);\n\tcg = mat4x3(0.1 + sample4, 1.1 - sample4, 0.1 + sample5, 1.1 - sample5);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = mat4x3(0.1 + sample6, 1.1 - sample6, 0.1 + sample7, 1.1 - sample7);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\tw = texture(ravu_zoom_lut2_ar, vec2(0.0, coord_y) + subpix_inv);\n\tcg = mat4x3(0.1 + sample15, 1.1 - sample15, 0.1 + sample14, 1.1 - sample14);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = mat4x3(0.1 + sample13, 1.1 - sample13, 0.1 + sample12, 1.1 - sample12);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\tw = texture(ravu_zoom_lut2_ar, vec2(0.5, coord_y) + subpix_inv);\n\tcg = mat4x3(0.1 + sample11, 1.1 - sample11, 0.1 + sample10, 1.1 - sample10);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = mat4x3(0.1 + sample9, 1.1 - sample9, 0.1 + sample8, 1.1 - sample8);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\thi = hi2 / hi - 0.1;\n\tlo = 1.1 - lo2 / lo;\n\tres = mix(res, clamp(res, lo, hi), 0.800000);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID), vec4(res, 1.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Zoom_AR_R3.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-zoom.py --target luma --weights-file weights\\ravu-zoom_weights-r3.py --float-format float16dx --use-compute-shader --anti-ringing 0.8 --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//\n//\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_zoom_lut3_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_zoom_lut3;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_zoom_lut3;\n\n//!TEXTURE\n//!SOURCE ravu_zoom_lut3_ar_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_zoom_lut3_ar;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_zoom_lut3_ar;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Zoom-AR (luma, r3, compute)\n//!IN INPUT, ravu_zoom_lut3, ravu_zoom_lut3_ar\n//!OUT OUTPUT\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\n#define LUTPOS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x))\nshared float samples[532];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_zoom_lut3_tex(pos) (vec4(texture(ravu_zoom_lut3, pos)))\n\n#define ravu_zoom_lut3_ar_tex(pos) (vec4(texture(ravu_zoom_lut3_ar, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_begin = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tivec2 group_end = group_begin + ivec2(gl_WorkGroupSize) - ivec2(1, 1);\n\tivec2 rectl = ivec2(floor(HOOKED_size * HOOKED_map(group_begin) - 0.5001)) - 2;\n\tivec2 rectr = ivec2(floor(HOOKED_size * HOOKED_map(group_end) - 0.4999)) + 3;\n\tivec2 rect = rectr - rectl + 1;\n\tfor (int id = int(gl_LocalInvocationIndex); id < rect.x * rect.y;\n\t\t id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint y = (uint)id / rect.x, x = (uint)id % rect.x;\n\t\tsamples[x + y * 38] = HOOKED_tex(HOOKED_pt * (vec2(rectl + ivec2(x, y)) + vec2(0.5, 0.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec2 pos = HOOKED_size * HOOKED_map(ivec2(gl_GlobalInvocationID));\n\tvec2 subpix = fract(pos - 0.5);\n\tpos -= subpix;\n\tsubpix = LUTPOS(subpix, vec2(9.0, 9.0));\n\tvec2 subpix_inv = 1.0 - subpix;\n\tvec2 subpix_ar = subpix / vec2(2.0, 288.0);\n\tvec2 subpix_inv_ar = subpix_inv / vec2(2.0, 288.0);\n\tsubpix /= vec2(5.0, 288.0);\n\tsubpix_inv /= vec2(5.0, 288.0);\n\tivec2 ipos = ivec2(floor(pos)) - rectl;\n\tint lpos = ipos.x + ipos.y * 38;\n\tfloat sample0 = samples[-78 + lpos];\n\tfloat sample1 = samples[-40 + lpos];\n\tfloat sample2 = samples[-2 + lpos];\n\tfloat sample3 = samples[36 + lpos];\n\tfloat sample4 = samples[74 + lpos];\n\tfloat sample5 = samples[112 + lpos];\n\tfloat sample6 = samples[-77 + lpos];\n\tfloat sample7 = samples[-39 + lpos];\n\tfloat sample8 = samples[-1 + lpos];\n\tfloat sample9 = samples[37 + lpos];\n\tfloat sample10 = samples[75 + lpos];\n\tfloat sample11 = samples[113 + lpos];\n\tfloat sample12 = samples[-76 + lpos];\n\tfloat sample13 = samples[-38 + lpos];\n\tfloat sample14 = samples[0 + lpos];\n\tfloat sample15 = samples[38 + lpos];\n\tfloat sample16 = samples[76 + lpos];\n\tfloat sample17 = samples[114 + lpos];\n\tfloat sample18 = samples[-75 + lpos];\n\tfloat sample19 = samples[-37 + lpos];\n\tfloat sample20 = samples[1 + lpos];\n\tfloat sample21 = samples[39 + lpos];\n\tfloat sample22 = samples[77 + lpos];\n\tfloat sample23 = samples[115 + lpos];\n\tfloat sample24 = samples[-74 + lpos];\n\tfloat sample25 = samples[-36 + lpos];\n\tfloat sample26 = samples[2 + lpos];\n\tfloat sample27 = samples[40 + lpos];\n\tfloat sample28 = samples[78 + lpos];\n\tfloat sample29 = samples[116 + lpos];\n\tfloat sample30 = samples[-73 + lpos];\n\tfloat sample31 = samples[-35 + lpos];\n\tfloat sample32 = samples[3 + lpos];\n\tfloat sample33 = samples[41 + lpos];\n\tfloat sample34 = samples[79 + lpos];\n\tfloat sample35 = samples[117 + lpos];\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (sample13 - sample1) / 2.0;\n\tgy = (sample8 - sample6) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (sample14 - sample2) / 2.0;\n\tgy = (-sample10 + 8.0 * sample9 - 8.0 * sample7 + sample6) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample15 - sample3) / 2.0;\n\tgy = (-sample11 + 8.0 * sample10 - 8.0 * sample8 + sample7) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample16 - sample4) / 2.0;\n\tgy = (sample11 - sample9) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (-sample25 + 8.0 * sample19 - 8.0 * sample7 + sample1) / 12.0;\n\tgy = (sample14 - sample12) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (-sample26 + 8.0 * sample20 - 8.0 * sample8 + sample2) / 12.0;\n\tgy = (-sample16 + 8.0 * sample15 - 8.0 * sample13 + sample12) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-sample27 + 8.0 * sample21 - 8.0 * sample9 + sample3) / 12.0;\n\tgy = (-sample17 + 8.0 * sample16 - 8.0 * sample14 + sample13) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-sample28 + 8.0 * sample22 - 8.0 * sample10 + sample4) / 12.0;\n\tgy = (sample17 - sample15) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (-sample31 + 8.0 * sample25 - 8.0 * sample13 + sample7) / 12.0;\n\tgy = (sample20 - sample18) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (-sample32 + 8.0 * sample26 - 8.0 * sample14 + sample8) / 12.0;\n\tgy = (-sample22 + 8.0 * sample21 - 8.0 * sample19 + sample18) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-sample33 + 8.0 * sample27 - 8.0 * sample15 + sample9) / 12.0;\n\tgy = (-sample23 + 8.0 * sample22 - 8.0 * sample20 + sample19) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-sample34 + 8.0 * sample28 - 8.0 * sample16 + sample10) / 12.0;\n\tgy = (sample23 - sample21) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample31 - sample19) / 2.0;\n\tgy = (sample26 - sample24) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (sample32 - sample20) / 2.0;\n\tgy = (-sample28 + 8.0 * sample27 - 8.0 * sample25 + sample24) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample33 - sample21) / 2.0;\n\tgy = (-sample29 + 8.0 * sample28 - 8.0 * sample26 + sample25) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample34 - sample22) / 2.0;\n\tgy = (sample29 - sample27) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence) / 288.0;\n\tfloat res = 0.0;\n\tvec4 w;\n\tvec4 cg, cg1;\n\tfloat lo = 0.0, hi = 0.0;\n\tfloat lo2 = 0.0, hi2 = 0.0;\n\tw = texture(ravu_zoom_lut3, vec2(0.0, coord_y) + subpix);\n\tres += sample0 * w[0];\n\tres += sample1 * w[1];\n\tres += sample2 * w[2];\n\tres += sample3 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.2, coord_y) + subpix);\n\tres += sample4 * w[0];\n\tres += sample5 * w[1];\n\tres += sample6 * w[2];\n\tres += sample7 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.4, coord_y) + subpix);\n\tres += sample8 * w[0];\n\tres += sample9 * w[1];\n\tres += sample10 * w[2];\n\tres += sample11 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.6, coord_y) + subpix);\n\tres += sample12 * w[0];\n\tres += sample13 * w[1];\n\tres += sample14 * w[2];\n\tres += sample15 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.8, coord_y) + subpix);\n\tres += sample16 * w[0];\n\tres += sample17 * w[1];\n\tw = texture(ravu_zoom_lut3, vec2(0.0, coord_y) + subpix_inv);\n\tres += sample35 * w[0];\n\tres += sample34 * w[1];\n\tres += sample33 * w[2];\n\tres += sample32 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.2, coord_y) + subpix_inv);\n\tres += sample31 * w[0];\n\tres += sample30 * w[1];\n\tres += sample29 * w[2];\n\tres += sample28 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.4, coord_y) + subpix_inv);\n\tres += sample27 * w[0];\n\tres += sample26 * w[1];\n\tres += sample25 * w[2];\n\tres += sample24 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.6, coord_y) + subpix_inv);\n\tres += sample23 * w[0];\n\tres += sample22 * w[1];\n\tres += sample21 * w[2];\n\tres += sample20 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.8, coord_y) + subpix_inv);\n\tres += sample19 * w[0];\n\tres += sample18 * w[1];\n\tw = texture(ravu_zoom_lut3_ar, vec2(0.0, coord_y) + subpix_ar);\n\tcg = vec4(0.1 + sample7, 1.1 - sample7, 0.1 + sample8, 1.1 - sample8);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg *= cg1;\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = vec4(0.1 + sample9, 1.1 - sample9, 0.1 + sample10, 1.1 - sample10);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg *= cg1;\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\tw = texture(ravu_zoom_lut3_ar, vec2(0.5, coord_y) + subpix_ar);\n\tcg = vec4(0.1 + sample13, 1.1 - sample13, 0.1 + sample14, 1.1 - sample14);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg *= cg1;\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = vec4(0.1 + sample15, 1.1 - sample15, 0.1 + sample16, 1.1 - sample16);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg *= cg1;\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\tw = texture(ravu_zoom_lut3_ar, vec2(0.0, coord_y) + subpix_inv_ar);\n\tcg = vec4(0.1 + sample28, 1.1 - sample28, 0.1 + sample27, 1.1 - sample27);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg *= cg1;\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = vec4(0.1 + sample26, 1.1 - sample26, 0.1 + sample25, 1.1 - sample25);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg *= cg1;\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\tw = texture(ravu_zoom_lut3_ar, vec2(0.5, coord_y) + subpix_inv_ar);\n\tcg = vec4(0.1 + sample22, 1.1 - sample22, 0.1 + sample21, 1.1 - sample21);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg *= cg1;\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = vec4(0.1 + sample20, 1.1 - sample20, 0.1 + sample19, 1.1 - sample19);\n\tcg1 = cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\tcg *= cg;\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg *= cg1;\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\thi = hi2 / hi - 0.1;\n\tlo = 1.1 - lo2 / lo;\n\tres = mix(res, clamp(res, lo, hi), 0.800000);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID), res);\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Zoom_AR_R3_RGB.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-zoom.py --target rgb --weights-file weights\\ravu-zoom_weights-r3.py --float-format float16dx --use-compute-shader --anti-ringing 0.8 --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//\n//\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!SOURCE ravu_zoom_lut3_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_zoom_lut3;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_zoom_lut3;\n\n//!TEXTURE\n//!SOURCE ravu_zoom_lut3_ar_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_zoom_lut3_ar;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_zoom_lut3_ar;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Zoom-AR (rgb, r3, compute)\n//!IN INPUT, ravu_zoom_lut3, ravu_zoom_lut3_ar\n//!OUT OUTPUT\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\n#define LUTPOS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x))\nshared vec3 samples[532];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val)\nvoid imageStoreOverride(uint2 pos, float4 value) { OUTPUT[pos] = value; }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_zoom_lut3_tex(pos) (vec4(texture(ravu_zoom_lut3, pos)))\n\n#define ravu_zoom_lut3_ar_tex(pos) (vec4(texture(ravu_zoom_lut3_ar, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_begin = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tivec2 group_end = group_begin + ivec2(gl_WorkGroupSize) - ivec2(1, 1);\n\tivec2 rectl = ivec2(floor(HOOKED_size * HOOKED_map(group_begin) - 0.5001)) - 2;\n\tivec2 rectr = ivec2(floor(HOOKED_size * HOOKED_map(group_end) - 0.4999)) + 3;\n\tivec2 rect = rectr - rectl + 1;\n\tfor (int id = int(gl_LocalInvocationIndex); id < rect.x * rect.y;\n\t\t id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint y = (uint)id / rect.x, x = (uint)id % rect.x;\n\t\tsamples[x + y * 38] = HOOKED_tex(HOOKED_pt * (vec2(rectl + ivec2(x, y)) + vec2(0.5, 0.5))).xyz;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec2 pos = HOOKED_size * HOOKED_map(ivec2(gl_GlobalInvocationID));\n\tvec2 subpix = fract(pos - 0.5);\n\tpos -= subpix;\n\tsubpix = LUTPOS(subpix, vec2(9.0, 9.0));\n\tvec2 subpix_inv = 1.0 - subpix;\n\tvec2 subpix_ar = subpix / vec2(2.0, 288.0);\n\tvec2 subpix_inv_ar = subpix_inv / vec2(2.0, 288.0);\n\tsubpix /= vec2(5.0, 288.0);\n\tsubpix_inv /= vec2(5.0, 288.0);\n\tivec2 ipos = ivec2(floor(pos)) - rectl;\n\tint lpos = ipos.x + ipos.y * 38;\n\tvec3 sample0 = samples[-78 + lpos];\n\tvec3 sample1 = samples[-40 + lpos];\n\tvec3 sample2 = samples[-2 + lpos];\n\tvec3 sample3 = samples[36 + lpos];\n\tvec3 sample4 = samples[74 + lpos];\n\tvec3 sample5 = samples[112 + lpos];\n\tvec3 sample6 = samples[-77 + lpos];\n\tvec3 sample7 = samples[-39 + lpos];\n\tvec3 sample8 = samples[-1 + lpos];\n\tvec3 sample9 = samples[37 + lpos];\n\tvec3 sample10 = samples[75 + lpos];\n\tvec3 sample11 = samples[113 + lpos];\n\tvec3 sample12 = samples[-76 + lpos];\n\tvec3 sample13 = samples[-38 + lpos];\n\tvec3 sample14 = samples[0 + lpos];\n\tvec3 sample15 = samples[38 + lpos];\n\tvec3 sample16 = samples[76 + lpos];\n\tvec3 sample17 = samples[114 + lpos];\n\tvec3 sample18 = samples[-75 + lpos];\n\tvec3 sample19 = samples[-37 + lpos];\n\tvec3 sample20 = samples[1 + lpos];\n\tvec3 sample21 = samples[39 + lpos];\n\tvec3 sample22 = samples[77 + lpos];\n\tvec3 sample23 = samples[115 + lpos];\n\tvec3 sample24 = samples[-74 + lpos];\n\tvec3 sample25 = samples[-36 + lpos];\n\tvec3 sample26 = samples[2 + lpos];\n\tvec3 sample27 = samples[40 + lpos];\n\tvec3 sample28 = samples[78 + lpos];\n\tvec3 sample29 = samples[116 + lpos];\n\tvec3 sample30 = samples[-73 + lpos];\n\tvec3 sample31 = samples[-35 + lpos];\n\tvec3 sample32 = samples[3 + lpos];\n\tvec3 sample33 = samples[41 + lpos];\n\tvec3 sample34 = samples[79 + lpos];\n\tvec3 sample35 = samples[117 + lpos];\n\tfloat luma1 = dot(sample1, color_primary);\n\tfloat luma2 = dot(sample2, color_primary);\n\tfloat luma3 = dot(sample3, color_primary);\n\tfloat luma4 = dot(sample4, color_primary);\n\tfloat luma6 = dot(sample6, color_primary);\n\tfloat luma7 = dot(sample7, color_primary);\n\tfloat luma8 = dot(sample8, color_primary);\n\tfloat luma9 = dot(sample9, color_primary);\n\tfloat luma10 = dot(sample10, color_primary);\n\tfloat luma11 = dot(sample11, color_primary);\n\tfloat luma12 = dot(sample12, color_primary);\n\tfloat luma13 = dot(sample13, color_primary);\n\tfloat luma14 = dot(sample14, color_primary);\n\tfloat luma15 = dot(sample15, color_primary);\n\tfloat luma16 = dot(sample16, color_primary);\n\tfloat luma17 = dot(sample17, color_primary);\n\tfloat luma18 = dot(sample18, color_primary);\n\tfloat luma19 = dot(sample19, color_primary);\n\tfloat luma20 = dot(sample20, color_primary);\n\tfloat luma21 = dot(sample21, color_primary);\n\tfloat luma22 = dot(sample22, color_primary);\n\tfloat luma23 = dot(sample23, color_primary);\n\tfloat luma24 = dot(sample24, color_primary);\n\tfloat luma25 = dot(sample25, color_primary);\n\tfloat luma26 = dot(sample26, color_primary);\n\tfloat luma27 = dot(sample27, color_primary);\n\tfloat luma28 = dot(sample28, color_primary);\n\tfloat luma29 = dot(sample29, color_primary);\n\tfloat luma31 = dot(sample31, color_primary);\n\tfloat luma32 = dot(sample32, color_primary);\n\tfloat luma33 = dot(sample33, color_primary);\n\tfloat luma34 = dot(sample34, color_primary);\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (luma13 - luma1) / 2.0;\n\tgy = (luma8 - luma6) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (luma14 - luma2) / 2.0;\n\tgy = (-luma10 + 8.0 * luma9 - 8.0 * luma7 + luma6) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma15 - luma3) / 2.0;\n\tgy = (-luma11 + 8.0 * luma10 - 8.0 * luma8 + luma7) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma16 - luma4) / 2.0;\n\tgy = (luma11 - luma9) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (-luma25 + 8.0 * luma19 - 8.0 * luma7 + luma1) / 12.0;\n\tgy = (luma14 - luma12) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (-luma26 + 8.0 * luma20 - 8.0 * luma8 + luma2) / 12.0;\n\tgy = (-luma16 + 8.0 * luma15 - 8.0 * luma13 + luma12) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-luma27 + 8.0 * luma21 - 8.0 * luma9 + luma3) / 12.0;\n\tgy = (-luma17 + 8.0 * luma16 - 8.0 * luma14 + luma13) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-luma28 + 8.0 * luma22 - 8.0 * luma10 + luma4) / 12.0;\n\tgy = (luma17 - luma15) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (-luma31 + 8.0 * luma25 - 8.0 * luma13 + luma7) / 12.0;\n\tgy = (luma20 - luma18) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (-luma32 + 8.0 * luma26 - 8.0 * luma14 + luma8) / 12.0;\n\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-luma33 + 8.0 * luma27 - 8.0 * luma15 + luma9) / 12.0;\n\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-luma34 + 8.0 * luma28 - 8.0 * luma16 + luma10) / 12.0;\n\tgy = (luma23 - luma21) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma31 - luma19) / 2.0;\n\tgy = (luma26 - luma24) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (luma32 - luma20) / 2.0;\n\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma33 - luma21) / 2.0;\n\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma34 - luma22) / 2.0;\n\tgy = (luma29 - luma27) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence) / 288.0;\n\tvec3 res = vec3(0.0, 0.0, 0.0);\n\tvec4 w;\n\tmat4x3 cg, cg1;\n\tvec3 lo = vec3(0.0, 0.0, 0.0), hi = vec3(0.0, 0.0, 0.0);\n\tvec3 lo2 = vec3(0.0, 0.0, 0.0), hi2 = vec3(0.0, 0.0, 0.0);\n\tw = texture(ravu_zoom_lut3, vec2(0.0, coord_y) + subpix);\n\tres += sample0 * w[0];\n\tres += sample1 * w[1];\n\tres += sample2 * w[2];\n\tres += sample3 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.2, coord_y) + subpix);\n\tres += sample4 * w[0];\n\tres += sample5 * w[1];\n\tres += sample6 * w[2];\n\tres += sample7 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.4, coord_y) + subpix);\n\tres += sample8 * w[0];\n\tres += sample9 * w[1];\n\tres += sample10 * w[2];\n\tres += sample11 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.6, coord_y) + subpix);\n\tres += sample12 * w[0];\n\tres += sample13 * w[1];\n\tres += sample14 * w[2];\n\tres += sample15 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.8, coord_y) + subpix);\n\tres += sample16 * w[0];\n\tres += sample17 * w[1];\n\tw = texture(ravu_zoom_lut3, vec2(0.0, coord_y) + subpix_inv);\n\tres += sample35 * w[0];\n\tres += sample34 * w[1];\n\tres += sample33 * w[2];\n\tres += sample32 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.2, coord_y) + subpix_inv);\n\tres += sample31 * w[0];\n\tres += sample30 * w[1];\n\tres += sample29 * w[2];\n\tres += sample28 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.4, coord_y) + subpix_inv);\n\tres += sample27 * w[0];\n\tres += sample26 * w[1];\n\tres += sample25 * w[2];\n\tres += sample24 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.6, coord_y) + subpix_inv);\n\tres += sample23 * w[0];\n\tres += sample22 * w[1];\n\tres += sample21 * w[2];\n\tres += sample20 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.8, coord_y) + subpix_inv);\n\tres += sample19 * w[0];\n\tres += sample18 * w[1];\n\tw = texture(ravu_zoom_lut3_ar, vec2(0.0, coord_y) + subpix_ar);\n\tcg = mat4x3(0.1 + sample7, 1.1 - sample7, 0.1 + sample8, 1.1 - sample8);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = mat4x3(0.1 + sample9, 1.1 - sample9, 0.1 + sample10, 1.1 - sample10);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\tw = texture(ravu_zoom_lut3_ar, vec2(0.5, coord_y) + subpix_ar);\n\tcg = mat4x3(0.1 + sample13, 1.1 - sample13, 0.1 + sample14, 1.1 - sample14);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = mat4x3(0.1 + sample15, 1.1 - sample15, 0.1 + sample16, 1.1 - sample16);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\tw = texture(ravu_zoom_lut3_ar, vec2(0.0, coord_y) + subpix_inv_ar);\n\tcg = mat4x3(0.1 + sample28, 1.1 - sample28, 0.1 + sample27, 1.1 - sample27);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = mat4x3(0.1 + sample26, 1.1 - sample26, 0.1 + sample25, 1.1 - sample25);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\tw = texture(ravu_zoom_lut3_ar, vec2(0.5, coord_y) + subpix_inv_ar);\n\tcg = mat4x3(0.1 + sample22, 1.1 - sample22, 0.1 + sample21, 1.1 - sample21);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[0] + cg[2] * w[1];\n\tlo += cg[1] * w[0] + cg[3] * w[1];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[0] + cg[2] * w[1];\n\tlo2 += cg[1] * w[0] + cg[3] * w[1];\n\tcg = mat4x3(0.1 + sample20, 1.1 - sample20, 0.1 + sample19, 1.1 - sample19);\n\tcg1 = cg;\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\tcg = matrixCompMult(cg, cg);\n\thi += cg[0] * w[2] + cg[2] * w[3];\n\tlo += cg[1] * w[2] + cg[3] * w[3];\n\tcg = matrixCompMult(cg, cg1);\n\thi2 += cg[0] * w[2] + cg[2] * w[3];\n\tlo2 += cg[1] * w[2] + cg[3] * w[3];\n\thi = hi2 / hi - 0.1;\n\tlo = 1.1 - lo2 / lo;\n\tres = mix(res, clamp(res, lo, hi), 0.800000);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID), vec4(res, 1.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Zoom_R2.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-zoom.py --target luma --weights-file weights\\ravu-zoom_weights-r2.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//\n//\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_zoom_lut2_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_zoom_lut2;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_zoom_lut2;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Zoom (luma, r2, compute)\n//!IN INPUT, ravu_zoom_lut2\n//!OUT OUTPUT\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\n#define LUTPOS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x))\nshared float samples[432];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_zoom_lut2_tex(pos) (vec4(texture(ravu_zoom_lut2, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_begin = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tivec2 group_end = group_begin + ivec2(gl_WorkGroupSize) - ivec2(1, 1);\n\tivec2 rectl = ivec2(floor(HOOKED_size * HOOKED_map(group_begin) - 0.5001)) - 1;\n\tivec2 rectr = ivec2(floor(HOOKED_size * HOOKED_map(group_end) - 0.4999)) + 2;\n\tivec2 rect = rectr - rectl + 1;\n\tfor (int id = int(gl_LocalInvocationIndex); id < rect.x * rect.y;\n\t\t id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint y = (uint)id / rect.x, x = (uint)id % rect.x;\n\t\tsamples[x + y * 36] = HOOKED_tex(HOOKED_pt * (vec2(rectl + ivec2(x, y)) + vec2(0.5, 0.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec2 pos = HOOKED_size * HOOKED_map(ivec2(gl_GlobalInvocationID));\n\tvec2 subpix = fract(pos - 0.5);\n\tpos -= subpix;\n\tsubpix = LUTPOS(subpix, vec2(9.0, 9.0));\n\tvec2 subpix_inv = 1.0 - subpix;\n\tsubpix /= vec2(2.0, 288.0);\n\tsubpix_inv /= vec2(2.0, 288.0);\n\tivec2 ipos = ivec2(floor(pos)) - rectl;\n\tint lpos = ipos.x + ipos.y * 36;\n\tfloat sample0 = samples[-37 + lpos];\n\tfloat sample1 = samples[-1 + lpos];\n\tfloat sample2 = samples[35 + lpos];\n\tfloat sample3 = samples[71 + lpos];\n\tfloat sample4 = samples[-36 + lpos];\n\tfloat sample5 = samples[0 + lpos];\n\tfloat sample6 = samples[36 + lpos];\n\tfloat sample7 = samples[72 + lpos];\n\tfloat sample8 = samples[-35 + lpos];\n\tfloat sample9 = samples[1 + lpos];\n\tfloat sample10 = samples[37 + lpos];\n\tfloat sample11 = samples[73 + lpos];\n\tfloat sample12 = samples[-34 + lpos];\n\tfloat sample13 = samples[2 + lpos];\n\tfloat sample14 = samples[38 + lpos];\n\tfloat sample15 = samples[74 + lpos];\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (sample4 - sample0);\n\tgy = (sample1 - sample0);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (sample5 - sample1);\n\tgy = (sample2 - sample0) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample6 - sample2);\n\tgy = (sample3 - sample1) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample7 - sample3);\n\tgy = (sample3 - sample2);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (sample8 - sample0) / 2.0;\n\tgy = (sample5 - sample4);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample9 - sample1) / 2.0;\n\tgy = (sample6 - sample4) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (sample10 - sample2) / 2.0;\n\tgy = (sample7 - sample5) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (sample11 - sample3) / 2.0;\n\tgy = (sample7 - sample6);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample12 - sample4) / 2.0;\n\tgy = (sample9 - sample8);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample13 - sample5) / 2.0;\n\tgy = (sample10 - sample8) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (sample14 - sample6) / 2.0;\n\tgy = (sample11 - sample9) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (sample15 - sample7) / 2.0;\n\tgy = (sample11 - sample10);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample12 - sample8);\n\tgy = (sample13 - sample12);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (sample13 - sample9);\n\tgy = (sample14 - sample12) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample14 - sample10);\n\tgy = (sample15 - sample13) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample15 - sample11);\n\tgy = (sample15 - sample14);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence) / 288.0;\n\tfloat res = 0.0;\n\tvec4 w;\n\tw = texture(ravu_zoom_lut2, vec2(0.0, coord_y) + subpix);\n\tres += sample0 * w[0];\n\tres += sample1 * w[1];\n\tres += sample2 * w[2];\n\tres += sample3 * w[3];\n\tw = texture(ravu_zoom_lut2, vec2(0.5, coord_y) + subpix);\n\tres += sample4 * w[0];\n\tres += sample5 * w[1];\n\tres += sample6 * w[2];\n\tres += sample7 * w[3];\n\tw = texture(ravu_zoom_lut2, vec2(0.0, coord_y) + subpix_inv);\n\tres += sample15 * w[0];\n\tres += sample14 * w[1];\n\tres += sample13 * w[2];\n\tres += sample12 * w[3];\n\tw = texture(ravu_zoom_lut2, vec2(0.5, coord_y) + subpix_inv);\n\tres += sample11 * w[0];\n\tres += sample10 * w[1];\n\tres += sample9 * w[2];\n\tres += sample8 * w[3];\n\tres = clamp(res, 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID), res);\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Zoom_R2_RGB.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-zoom.py --target rgb --weights-file weights\\ravu-zoom_weights-r2.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//\n//\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!SOURCE ravu_zoom_lut2_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_zoom_lut2;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_zoom_lut2;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Zoom (rgb, r2, compute)\n//!IN INPUT, ravu_zoom_lut2\n//!OUT OUTPUT\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\n#define LUTPOS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x))\nshared vec3 samples[432];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val)\nvoid imageStoreOverride(uint2 pos, float4 value) { OUTPUT[pos] = value; }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_zoom_lut2_tex(pos) (vec4(texture(ravu_zoom_lut2, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_begin = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tivec2 group_end = group_begin + ivec2(gl_WorkGroupSize) - ivec2(1, 1);\n\tivec2 rectl = ivec2(floor(HOOKED_size * HOOKED_map(group_begin) - 0.5001)) - 1;\n\tivec2 rectr = ivec2(floor(HOOKED_size * HOOKED_map(group_end) - 0.4999)) + 2;\n\tivec2 rect = rectr - rectl + 1;\n\tfor (int id = int(gl_LocalInvocationIndex); id < rect.x * rect.y;\n\t\t id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint y = (uint)id / rect.x, x = (uint)id % rect.x;\n\t\tsamples[x + y * 36] = HOOKED_tex(HOOKED_pt * (vec2(rectl + ivec2(x, y)) + vec2(0.5, 0.5))).xyz;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec2 pos = HOOKED_size * HOOKED_map(ivec2(gl_GlobalInvocationID));\n\tvec2 subpix = fract(pos - 0.5);\n\tpos -= subpix;\n\tsubpix = LUTPOS(subpix, vec2(9.0, 9.0));\n\tvec2 subpix_inv = 1.0 - subpix;\n\tsubpix /= vec2(2.0, 288.0);\n\tsubpix_inv /= vec2(2.0, 288.0);\n\tivec2 ipos = ivec2(floor(pos)) - rectl;\n\tint lpos = ipos.x + ipos.y * 36;\n\tvec3 sample0 = samples[-37 + lpos];\n\tvec3 sample1 = samples[-1 + lpos];\n\tvec3 sample2 = samples[35 + lpos];\n\tvec3 sample3 = samples[71 + lpos];\n\tvec3 sample4 = samples[-36 + lpos];\n\tvec3 sample5 = samples[0 + lpos];\n\tvec3 sample6 = samples[36 + lpos];\n\tvec3 sample7 = samples[72 + lpos];\n\tvec3 sample8 = samples[-35 + lpos];\n\tvec3 sample9 = samples[1 + lpos];\n\tvec3 sample10 = samples[37 + lpos];\n\tvec3 sample11 = samples[73 + lpos];\n\tvec3 sample12 = samples[-34 + lpos];\n\tvec3 sample13 = samples[2 + lpos];\n\tvec3 sample14 = samples[38 + lpos];\n\tvec3 sample15 = samples[74 + lpos];\n\tfloat luma0 = dot(sample0, color_primary);\n\tfloat luma1 = dot(sample1, color_primary);\n\tfloat luma2 = dot(sample2, color_primary);\n\tfloat luma3 = dot(sample3, color_primary);\n\tfloat luma4 = dot(sample4, color_primary);\n\tfloat luma5 = dot(sample5, color_primary);\n\tfloat luma6 = dot(sample6, color_primary);\n\tfloat luma7 = dot(sample7, color_primary);\n\tfloat luma8 = dot(sample8, color_primary);\n\tfloat luma9 = dot(sample9, color_primary);\n\tfloat luma10 = dot(sample10, color_primary);\n\tfloat luma11 = dot(sample11, color_primary);\n\tfloat luma12 = dot(sample12, color_primary);\n\tfloat luma13 = dot(sample13, color_primary);\n\tfloat luma14 = dot(sample14, color_primary);\n\tfloat luma15 = dot(sample15, color_primary);\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (luma4 - luma0);\n\tgy = (luma1 - luma0);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (luma5 - luma1);\n\tgy = (luma2 - luma0) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma6 - luma2);\n\tgy = (luma3 - luma1) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma7 - luma3);\n\tgy = (luma3 - luma2);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (luma8 - luma0) / 2.0;\n\tgy = (luma5 - luma4);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma9 - luma1) / 2.0;\n\tgy = (luma6 - luma4) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (luma10 - luma2) / 2.0;\n\tgy = (luma7 - luma5) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (luma11 - luma3) / 2.0;\n\tgy = (luma7 - luma6);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma12 - luma4) / 2.0;\n\tgy = (luma9 - luma8);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma13 - luma5) / 2.0;\n\tgy = (luma10 - luma8) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (luma14 - luma6) / 2.0;\n\tgy = (luma11 - luma9) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (luma15 - luma7) / 2.0;\n\tgy = (luma11 - luma10);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma12 - luma8);\n\tgy = (luma13 - luma12);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (luma13 - luma9);\n\tgy = (luma14 - luma12) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma14 - luma10);\n\tgy = (luma15 - luma13) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma15 - luma11);\n\tgy = (luma15 - luma14);\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence) / 288.0;\n\tvec3 res = vec3(0.0, 0.0, 0.0);\n\tvec4 w;\n\tw = texture(ravu_zoom_lut2, vec2(0.0, coord_y) + subpix);\n\tres += sample0 * w[0];\n\tres += sample1 * w[1];\n\tres += sample2 * w[2];\n\tres += sample3 * w[3];\n\tw = texture(ravu_zoom_lut2, vec2(0.5, coord_y) + subpix);\n\tres += sample4 * w[0];\n\tres += sample5 * w[1];\n\tres += sample6 * w[2];\n\tres += sample7 * w[3];\n\tw = texture(ravu_zoom_lut2, vec2(0.0, coord_y) + subpix_inv);\n\tres += sample15 * w[0];\n\tres += sample14 * w[1];\n\tres += sample13 * w[2];\n\tres += sample12 * w[3];\n\tw = texture(ravu_zoom_lut2, vec2(0.5, coord_y) + subpix_inv);\n\tres += sample11 * w[0];\n\tres += sample10 * w[1];\n\tres += sample9 * w[2];\n\tres += sample8 * w[3];\n\tres = clamp(res, 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID), vec4(res, 1.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Zoom_R3.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-zoom.py --target luma --weights-file weights\\ravu-zoom_weights-r3.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//\n//\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_INPUT_LINEAR;\n\n//!TEXTURE\n//!SOURCE ravu_zoom_lut3_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_zoom_lut3;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_zoom_lut3;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Zoom (luma, r3, compute)\n//!IN INPUT, ravu_zoom_lut3\n//!OUT OUTPUT\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\n#define LUTPOS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x))\nshared float samples[532];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) dot(x.rgb, rgb2y)\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val.x)\nvoid imageStoreOverride(uint2 pos, float value) {\n\tfloat2 UV = mul(rgb2uv, INPUT.SampleLevel(sam_INPUT_LINEAR, HOOKED_map(pos), 0).rgb);\n\tOUTPUT[pos] = float4(mul(yuv2rgb, float3(value.x, UV)), 1.0);\n}\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_zoom_lut3_tex(pos) (vec4(texture(ravu_zoom_lut3, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_begin = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tivec2 group_end = group_begin + ivec2(gl_WorkGroupSize) - ivec2(1, 1);\n\tivec2 rectl = ivec2(floor(HOOKED_size * HOOKED_map(group_begin) - 0.5001)) - 2;\n\tivec2 rectr = ivec2(floor(HOOKED_size * HOOKED_map(group_end) - 0.4999)) + 3;\n\tivec2 rect = rectr - rectl + 1;\n\tfor (int id = int(gl_LocalInvocationIndex); id < rect.x * rect.y;\n\t\t id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint y = (uint)id / rect.x, x = (uint)id % rect.x;\n\t\tsamples[x + y * 38] = HOOKED_tex(HOOKED_pt * (vec2(rectl + ivec2(x, y)) + vec2(0.5, 0.5))).x;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec2 pos = HOOKED_size * HOOKED_map(ivec2(gl_GlobalInvocationID));\n\tvec2 subpix = fract(pos - 0.5);\n\tpos -= subpix;\n\tsubpix = LUTPOS(subpix, vec2(9.0, 9.0));\n\tvec2 subpix_inv = 1.0 - subpix;\n\tsubpix /= vec2(5.0, 288.0);\n\tsubpix_inv /= vec2(5.0, 288.0);\n\tivec2 ipos = ivec2(floor(pos)) - rectl;\n\tint lpos = ipos.x + ipos.y * 38;\n\tfloat sample0 = samples[-78 + lpos];\n\tfloat sample1 = samples[-40 + lpos];\n\tfloat sample2 = samples[-2 + lpos];\n\tfloat sample3 = samples[36 + lpos];\n\tfloat sample4 = samples[74 + lpos];\n\tfloat sample5 = samples[112 + lpos];\n\tfloat sample6 = samples[-77 + lpos];\n\tfloat sample7 = samples[-39 + lpos];\n\tfloat sample8 = samples[-1 + lpos];\n\tfloat sample9 = samples[37 + lpos];\n\tfloat sample10 = samples[75 + lpos];\n\tfloat sample11 = samples[113 + lpos];\n\tfloat sample12 = samples[-76 + lpos];\n\tfloat sample13 = samples[-38 + lpos];\n\tfloat sample14 = samples[0 + lpos];\n\tfloat sample15 = samples[38 + lpos];\n\tfloat sample16 = samples[76 + lpos];\n\tfloat sample17 = samples[114 + lpos];\n\tfloat sample18 = samples[-75 + lpos];\n\tfloat sample19 = samples[-37 + lpos];\n\tfloat sample20 = samples[1 + lpos];\n\tfloat sample21 = samples[39 + lpos];\n\tfloat sample22 = samples[77 + lpos];\n\tfloat sample23 = samples[115 + lpos];\n\tfloat sample24 = samples[-74 + lpos];\n\tfloat sample25 = samples[-36 + lpos];\n\tfloat sample26 = samples[2 + lpos];\n\tfloat sample27 = samples[40 + lpos];\n\tfloat sample28 = samples[78 + lpos];\n\tfloat sample29 = samples[116 + lpos];\n\tfloat sample30 = samples[-73 + lpos];\n\tfloat sample31 = samples[-35 + lpos];\n\tfloat sample32 = samples[3 + lpos];\n\tfloat sample33 = samples[41 + lpos];\n\tfloat sample34 = samples[79 + lpos];\n\tfloat sample35 = samples[117 + lpos];\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (sample13 - sample1) / 2.0;\n\tgy = (sample8 - sample6) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (sample14 - sample2) / 2.0;\n\tgy = (-sample10 + 8.0 * sample9 - 8.0 * sample7 + sample6) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample15 - sample3) / 2.0;\n\tgy = (-sample11 + 8.0 * sample10 - 8.0 * sample8 + sample7) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample16 - sample4) / 2.0;\n\tgy = (sample11 - sample9) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (-sample25 + 8.0 * sample19 - 8.0 * sample7 + sample1) / 12.0;\n\tgy = (sample14 - sample12) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (-sample26 + 8.0 * sample20 - 8.0 * sample8 + sample2) / 12.0;\n\tgy = (-sample16 + 8.0 * sample15 - 8.0 * sample13 + sample12) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-sample27 + 8.0 * sample21 - 8.0 * sample9 + sample3) / 12.0;\n\tgy = (-sample17 + 8.0 * sample16 - 8.0 * sample14 + sample13) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-sample28 + 8.0 * sample22 - 8.0 * sample10 + sample4) / 12.0;\n\tgy = (sample17 - sample15) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (-sample31 + 8.0 * sample25 - 8.0 * sample13 + sample7) / 12.0;\n\tgy = (sample20 - sample18) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (-sample32 + 8.0 * sample26 - 8.0 * sample14 + sample8) / 12.0;\n\tgy = (-sample22 + 8.0 * sample21 - 8.0 * sample19 + sample18) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-sample33 + 8.0 * sample27 - 8.0 * sample15 + sample9) / 12.0;\n\tgy = (-sample23 + 8.0 * sample22 - 8.0 * sample20 + sample19) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-sample34 + 8.0 * sample28 - 8.0 * sample16 + sample10) / 12.0;\n\tgy = (sample23 - sample21) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample31 - sample19) / 2.0;\n\tgy = (sample26 - sample24) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (sample32 - sample20) / 2.0;\n\tgy = (-sample28 + 8.0 * sample27 - 8.0 * sample25 + sample24) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample33 - sample21) / 2.0;\n\tgy = (-sample29 + 8.0 * sample28 - 8.0 * sample26 + sample25) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (sample34 - sample22) / 2.0;\n\tgy = (sample29 - sample27) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence) / 288.0;\n\tfloat res = 0.0;\n\tvec4 w;\n\tw = texture(ravu_zoom_lut3, vec2(0.0, coord_y) + subpix);\n\tres += sample0 * w[0];\n\tres += sample1 * w[1];\n\tres += sample2 * w[2];\n\tres += sample3 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.2, coord_y) + subpix);\n\tres += sample4 * w[0];\n\tres += sample5 * w[1];\n\tres += sample6 * w[2];\n\tres += sample7 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.4, coord_y) + subpix);\n\tres += sample8 * w[0];\n\tres += sample9 * w[1];\n\tres += sample10 * w[2];\n\tres += sample11 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.6, coord_y) + subpix);\n\tres += sample12 * w[0];\n\tres += sample13 * w[1];\n\tres += sample14 * w[2];\n\tres += sample15 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.8, coord_y) + subpix);\n\tres += sample16 * w[0];\n\tres += sample17 * w[1];\n\tw = texture(ravu_zoom_lut3, vec2(0.0, coord_y) + subpix_inv);\n\tres += sample35 * w[0];\n\tres += sample34 * w[1];\n\tres += sample33 * w[2];\n\tres += sample32 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.2, coord_y) + subpix_inv);\n\tres += sample31 * w[0];\n\tres += sample30 * w[1];\n\tres += sample29 * w[2];\n\tres += sample28 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.4, coord_y) + subpix_inv);\n\tres += sample27 * w[0];\n\tres += sample26 * w[1];\n\tres += sample25 * w[2];\n\tres += sample24 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.6, coord_y) + subpix_inv);\n\tres += sample23 * w[0];\n\tres += sample22 * w[1];\n\tres += sample21 * w[2];\n\tres += sample20 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.8, coord_y) + subpix_inv);\n\tres += sample19 * w[0];\n\tres += sample18 * w[1];\n\tres = clamp(res, 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID), res);\n}\n"
  },
  {
    "path": "src/Effects/RAVU/RAVU_Zoom_R3_RGB.hlsl",
    "content": "// This file is generated by the scripts available at https://github.com/hauuau/magpie-prescalers\n// Please don't edit this file directly.\n// Generated by: ravu-zoom.py --target rgb --weights-file weights\\ravu-zoom_weights-r3.py --float-format float16dx --use-compute-shader --use-magpie --overwrite\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam_INPUT;\n\n//!TEXTURE\n//\n//\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!SOURCE ravu_zoom_lut3_f16.dds\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D ravu_zoom_lut3;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam_ravu_zoom_lut3;\n\n//!COMMON\n#include \"prescalers.hlsli\"\n\n#define LAST_PASS 1\n\n//!PASS 1\n//!DESC RAVU-Zoom (rgb, r3, compute)\n//!IN INPUT, ravu_zoom_lut3\n//!OUT OUTPUT\n//!BLOCK_SIZE 32, 8\n//!NUM_THREADS 32, 8\nstatic const vec3 color_primary = vec3(0.2126, 0.7152, 0.0722);\n#define LUTPOS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x))\nshared vec3 samples[532];\n\n#define CURRENT_PASS 1\n\n#define GET_SAMPLE(x) x\n#define imageStore(out_image, pos, val) imageStoreOverride(pos, val)\nvoid imageStoreOverride(uint2 pos, float4 value) { OUTPUT[pos] = value; }\n\n#define INPUT_tex(pos) GET_SAMPLE(vec4(texture(INPUT, pos)))\nstatic const float2 INPUT_size = float2(GetInputSize());\nstatic const float2 INPUT_pt = float2(GetInputPt());\n\n#define ravu_zoom_lut3_tex(pos) (vec4(texture(ravu_zoom_lut3, pos)))\n\n#define HOOKED_tex(pos) INPUT_tex(pos)\n#define HOOKED_size INPUT_size\n#define HOOKED_pt INPUT_pt\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tivec2 group_begin = ivec2(gl_WorkGroupID) * ivec2(gl_WorkGroupSize);\n\tivec2 group_end = group_begin + ivec2(gl_WorkGroupSize) - ivec2(1, 1);\n\tivec2 rectl = ivec2(floor(HOOKED_size * HOOKED_map(group_begin) - 0.5001)) - 2;\n\tivec2 rectr = ivec2(floor(HOOKED_size * HOOKED_map(group_end) - 0.4999)) + 3;\n\tivec2 rect = rectr - rectl + 1;\n\tfor (int id = int(gl_LocalInvocationIndex); id < rect.x * rect.y;\n\t\t id += int(gl_WorkGroupSize.x * gl_WorkGroupSize.y)) {\n\t\tuint y = (uint)id / rect.x, x = (uint)id % rect.x;\n\t\tsamples[x + y * 38] = HOOKED_tex(HOOKED_pt * (vec2(rectl + ivec2(x, y)) + vec2(0.5, 0.5))).xyz;\n\t}\n\tbarrier();\n#if CURRENT_PASS == LAST_PASS\n\tuint2 destPos = blockStart + threadId.xy;\n\tuint2 outputSize = GetOutputSize();\n\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\treturn;\n\t}\n#endif\n\tvec2 pos = HOOKED_size * HOOKED_map(ivec2(gl_GlobalInvocationID));\n\tvec2 subpix = fract(pos - 0.5);\n\tpos -= subpix;\n\tsubpix = LUTPOS(subpix, vec2(9.0, 9.0));\n\tvec2 subpix_inv = 1.0 - subpix;\n\tsubpix /= vec2(5.0, 288.0);\n\tsubpix_inv /= vec2(5.0, 288.0);\n\tivec2 ipos = ivec2(floor(pos)) - rectl;\n\tint lpos = ipos.x + ipos.y * 38;\n\tvec3 sample0 = samples[-78 + lpos];\n\tvec3 sample1 = samples[-40 + lpos];\n\tvec3 sample2 = samples[-2 + lpos];\n\tvec3 sample3 = samples[36 + lpos];\n\tvec3 sample4 = samples[74 + lpos];\n\tvec3 sample5 = samples[112 + lpos];\n\tvec3 sample6 = samples[-77 + lpos];\n\tvec3 sample7 = samples[-39 + lpos];\n\tvec3 sample8 = samples[-1 + lpos];\n\tvec3 sample9 = samples[37 + lpos];\n\tvec3 sample10 = samples[75 + lpos];\n\tvec3 sample11 = samples[113 + lpos];\n\tvec3 sample12 = samples[-76 + lpos];\n\tvec3 sample13 = samples[-38 + lpos];\n\tvec3 sample14 = samples[0 + lpos];\n\tvec3 sample15 = samples[38 + lpos];\n\tvec3 sample16 = samples[76 + lpos];\n\tvec3 sample17 = samples[114 + lpos];\n\tvec3 sample18 = samples[-75 + lpos];\n\tvec3 sample19 = samples[-37 + lpos];\n\tvec3 sample20 = samples[1 + lpos];\n\tvec3 sample21 = samples[39 + lpos];\n\tvec3 sample22 = samples[77 + lpos];\n\tvec3 sample23 = samples[115 + lpos];\n\tvec3 sample24 = samples[-74 + lpos];\n\tvec3 sample25 = samples[-36 + lpos];\n\tvec3 sample26 = samples[2 + lpos];\n\tvec3 sample27 = samples[40 + lpos];\n\tvec3 sample28 = samples[78 + lpos];\n\tvec3 sample29 = samples[116 + lpos];\n\tvec3 sample30 = samples[-73 + lpos];\n\tvec3 sample31 = samples[-35 + lpos];\n\tvec3 sample32 = samples[3 + lpos];\n\tvec3 sample33 = samples[41 + lpos];\n\tvec3 sample34 = samples[79 + lpos];\n\tvec3 sample35 = samples[117 + lpos];\n\tfloat luma1 = dot(sample1, color_primary);\n\tfloat luma2 = dot(sample2, color_primary);\n\tfloat luma3 = dot(sample3, color_primary);\n\tfloat luma4 = dot(sample4, color_primary);\n\tfloat luma6 = dot(sample6, color_primary);\n\tfloat luma7 = dot(sample7, color_primary);\n\tfloat luma8 = dot(sample8, color_primary);\n\tfloat luma9 = dot(sample9, color_primary);\n\tfloat luma10 = dot(sample10, color_primary);\n\tfloat luma11 = dot(sample11, color_primary);\n\tfloat luma12 = dot(sample12, color_primary);\n\tfloat luma13 = dot(sample13, color_primary);\n\tfloat luma14 = dot(sample14, color_primary);\n\tfloat luma15 = dot(sample15, color_primary);\n\tfloat luma16 = dot(sample16, color_primary);\n\tfloat luma17 = dot(sample17, color_primary);\n\tfloat luma18 = dot(sample18, color_primary);\n\tfloat luma19 = dot(sample19, color_primary);\n\tfloat luma20 = dot(sample20, color_primary);\n\tfloat luma21 = dot(sample21, color_primary);\n\tfloat luma22 = dot(sample22, color_primary);\n\tfloat luma23 = dot(sample23, color_primary);\n\tfloat luma24 = dot(sample24, color_primary);\n\tfloat luma25 = dot(sample25, color_primary);\n\tfloat luma26 = dot(sample26, color_primary);\n\tfloat luma27 = dot(sample27, color_primary);\n\tfloat luma28 = dot(sample28, color_primary);\n\tfloat luma29 = dot(sample29, color_primary);\n\tfloat luma31 = dot(sample31, color_primary);\n\tfloat luma32 = dot(sample32, color_primary);\n\tfloat luma33 = dot(sample33, color_primary);\n\tfloat luma34 = dot(sample34, color_primary);\n\tvec3 abd = vec3(0.0, 0.0, 0.0);\n\tfloat gx, gy;\n\tgx = (luma13 - luma1) / 2.0;\n\tgy = (luma8 - luma6) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (luma14 - luma2) / 2.0;\n\tgy = (-luma10 + 8.0 * luma9 - 8.0 * luma7 + luma6) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma15 - luma3) / 2.0;\n\tgy = (-luma11 + 8.0 * luma10 - 8.0 * luma8 + luma7) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma16 - luma4) / 2.0;\n\tgy = (luma11 - luma9) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (-luma25 + 8.0 * luma19 - 8.0 * luma7 + luma1) / 12.0;\n\tgy = (luma14 - luma12) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (-luma26 + 8.0 * luma20 - 8.0 * luma8 + luma2) / 12.0;\n\tgy = (-luma16 + 8.0 * luma15 - 8.0 * luma13 + luma12) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-luma27 + 8.0 * luma21 - 8.0 * luma9 + luma3) / 12.0;\n\tgy = (-luma17 + 8.0 * luma16 - 8.0 * luma14 + luma13) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-luma28 + 8.0 * luma22 - 8.0 * luma10 + luma4) / 12.0;\n\tgy = (luma17 - luma15) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (-luma31 + 8.0 * luma25 - 8.0 * luma13 + luma7) / 12.0;\n\tgy = (luma20 - luma18) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (-luma32 + 8.0 * luma26 - 8.0 * luma14 + luma8) / 12.0;\n\tgy = (-luma22 + 8.0 * luma21 - 8.0 * luma19 + luma18) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-luma33 + 8.0 * luma27 - 8.0 * luma15 + luma9) / 12.0;\n\tgy = (-luma23 + 8.0 * luma22 - 8.0 * luma20 + luma19) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.07901060453704994;\n\tgx = (-luma34 + 8.0 * luma28 - 8.0 * luma16 + luma10) / 12.0;\n\tgy = (luma23 - luma21) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma31 - luma19) / 2.0;\n\tgy = (luma26 - luma24) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tgx = (luma32 - luma20) / 2.0;\n\tgy = (-luma28 + 8.0 * luma27 - 8.0 * luma25 + luma24) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma33 - luma21) / 2.0;\n\tgy = (-luma29 + 8.0 * luma28 - 8.0 * luma26 + luma25) / 12.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.06153352068439959;\n\tgx = (luma34 - luma22) / 2.0;\n\tgy = (luma29 - luma27) / 2.0;\n\tabd += vec3(gx * gx, gx * gy, gy * gy) * 0.04792235409415088;\n\tfloat a = abd.x, b = abd.y, d = abd.z;\n\tfloat T = a + d, D = a * d - b * b;\n\tfloat delta = sqrt(max(T * T / 4.0 - D, 0.0));\n\tfloat L1 = T / 2.0 + delta, L2 = T / 2.0 - delta;\n\tfloat sqrtL1 = sqrt(L1), sqrtL2 = sqrt(L2);\n\tfloat theta = mix(mod(atan(L1 - a, b) + 3.141592653589793, 3.141592653589793), 0.0, abs(b) < 1.192092896e-7);\n\tfloat lambda = sqrtL1;\n\tfloat mu = mix((sqrtL1 - sqrtL2) / (sqrtL1 + sqrtL2), 0.0, sqrtL1 + sqrtL2 < 1.192092896e-7);\n\tfloat angle = floor(theta * 24.0 / 3.141592653589793);\n\tfloat strength = mix(mix(0.0, 1.0, lambda >= 0.004), mix(2.0, 3.0, lambda >= 0.05), lambda >= 0.016);\n\tfloat coherence = mix(mix(0.0, 1.0, mu >= 0.25), 2.0, mu >= 0.5);\n\tfloat coord_y = ((angle * 4.0 + strength) * 3.0 + coherence) / 288.0;\n\tvec3 res = vec3(0.0, 0.0, 0.0);\n\tvec4 w;\n\tw = texture(ravu_zoom_lut3, vec2(0.0, coord_y) + subpix);\n\tres += sample0 * w[0];\n\tres += sample1 * w[1];\n\tres += sample2 * w[2];\n\tres += sample3 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.2, coord_y) + subpix);\n\tres += sample4 * w[0];\n\tres += sample5 * w[1];\n\tres += sample6 * w[2];\n\tres += sample7 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.4, coord_y) + subpix);\n\tres += sample8 * w[0];\n\tres += sample9 * w[1];\n\tres += sample10 * w[2];\n\tres += sample11 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.6, coord_y) + subpix);\n\tres += sample12 * w[0];\n\tres += sample13 * w[1];\n\tres += sample14 * w[2];\n\tres += sample15 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.8, coord_y) + subpix);\n\tres += sample16 * w[0];\n\tres += sample17 * w[1];\n\tw = texture(ravu_zoom_lut3, vec2(0.0, coord_y) + subpix_inv);\n\tres += sample35 * w[0];\n\tres += sample34 * w[1];\n\tres += sample33 * w[2];\n\tres += sample32 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.2, coord_y) + subpix_inv);\n\tres += sample31 * w[0];\n\tres += sample30 * w[1];\n\tres += sample29 * w[2];\n\tres += sample28 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.4, coord_y) + subpix_inv);\n\tres += sample27 * w[0];\n\tres += sample26 * w[1];\n\tres += sample25 * w[2];\n\tres += sample24 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.6, coord_y) + subpix_inv);\n\tres += sample23 * w[0];\n\tres += sample22 * w[1];\n\tres += sample21 * w[2];\n\tres += sample20 * w[3];\n\tw = texture(ravu_zoom_lut3, vec2(0.8, coord_y) + subpix_inv);\n\tres += sample19 * w[0];\n\tres += sample18 * w[1];\n\tres = clamp(res, 0.0, 1.0);\n\timageStore(out_image, ivec2(gl_GlobalInvocationID), vec4(res, 1.0));\n}\n"
  },
  {
    "path": "src/Effects/RAVU/prescalers.hlsli",
    "content": "// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\n// Conversion from GLSL to HLSL is done through defines as much as possible to ease synchronization and comparison with upstream\n#define ivec2 int2\n\n#define vec2 float2\n#define vec3 float3\n#define vec4 float4\n\n#define mat4x3 float4x3\n#define matrixCompMult(mtx1, mtx2) (mtx1 * mtx2)\n\n#define shared groupshared\n\n#define atan atan2\n#define barrier GroupMemoryBarrierWithGroupSync\n#define fract frac\n#define intBitsToFloat asfloat\n#define inversesqrt rsqrt\n// mod deals only with positive numbers here and it could be substituted by fmod\n#define mod fmod\n\n// lerp handles bools as the third argument differently from mix\nfloat mix(float a, float b, bool c) {\n\treturn c ? b : a;\n}\n\n#define MIX_LERP(type1, type3) type1 mix(type1 a, type1 b, type3 c) { return lerp(a, b, c); }\nMIX_LERP(float, float)\nMIX_LERP(float2, float2)\nMIX_LERP(float3, float)\nMIX_LERP(float4, float)\n\n#define texture(tex, pos) tex.SampleLevel(sam_##tex, pos, 0.0)\n\n#define OUTPUT_pt float2(GetOutputPt())\n#define frag_pos(id) (vec2(id) + vec2(0.5, 0.5))\n#define frag_map(id) (OUTPUT_pt * frag_pos(id))\n#define HOOKED_map(id) frag_map(id)\n\n#define gl_LocalInvocationIndex (threadId.y*MP_NUM_THREADS_X + threadId.x)\n#define gl_LocalInvocationID threadId\n#define gl_WorkGroupSize (uint2(MP_NUM_THREADS_X, MP_NUM_THREADS_Y))\n#define gl_WorkGroupID (blockStart / uint2(MP_BLOCK_WIDTH, MP_BLOCK_HEIGHT))\n#define gl_GlobalInvocationID (gl_WorkGroupID*gl_WorkGroupSize + threadId.xy)\n\n// disable warning about unknown pragma\n#pragma warning(disable: 3568)\n// disable warning about too many threads (ravu-r4-rgb triggers it)\n#pragma warning(disable: 4714)\n\n// https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.709-6-201506-I!!PDF-E.pdf\nstatic const float3 rgb2y = float3(0.2126, 0.7152, 0.0722);\nstatic const float2x3 rgb2uv = {\n\t-0.2126/1.8556, -0.7152/1.8556,  0.9278/1.8556,\n\t 0.7874/1.5748, -0.7152/1.5748, -0.0722/1.5748\n};\nstatic const float3x3 yuv2rgb = {\n\t1,  0,         1.5748,\n\t1, -0.187324, -0.468124,\n\t1,  1.8556,    0\n};\n"
  },
  {
    "path": "src/Effects/SGSR.hlsl",
    "content": "// Snapdragon™ Game Super Resolution\n// 移植自 https://github.com/SnapdragonStudios/snapdragon-gsr/blob/main/sgsr/v1/include/hlsl/sgsr1_shader_mobile.hlsl\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!PARAMETER\n//!LABEL Edge Sharpness\n//!DEFAULT 2.0\n//!MIN 0.0\n//!MAX 10.0\n//!STEP 0.1\nfloat EdgeSharpness;\n\n//!PARAMETER\n//!LABEL Edge Threshold\n//!DEFAULT 8.0\n//!MIN 0.0\n//!MAX 16.0\n//!STEP 0.1\nfloat EdgeThreshold;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\n\n#define UseEdgeDirection\n\nfloat fastLanczos2(float x)\n{\n    float wA = x- float(4.0);\n    float wB = x*wA-wA;\n    wA *= wA;\n    return wB*wA;\n}\n\n#if defined(UseEdgeDirection)\nfloat2 weightY(float dx, float dy, float c, float3 data)\n#else\nfloat2 weightY(float dx, float dy, float c, float data)\n#endif\n{\n#if defined(UseEdgeDirection)\n    float std = data.x;\n    float2 dir = data.yz;\n\n    float edgeDis = ((dx*dir.y)+(dy*dir.x));\n    float x = (((dx*dx)+(dy*dy))+((edgeDis*edgeDis)*((clamp(((c*c)*std),0.0,1.0)*0.7)+-1.0)));\n#else\n    float std = data;\n    float x = ((dx*dx)+(dy* dy))* float(0.5) + clamp(abs(c)*std, 0.0, 1.0);\n#endif\n\n    float w = fastLanczos2(x);\n    return float2(w, w * c);\n}\n\nfloat2 edgeDirection(float4 left, float4 right)\n{\n    float2 dir;\n    float RxLz = (right.x + (-left.z));\n    float RwLy = (right.w + (-left.y));\n    float2 delta;\n    delta.x = (RxLz + RwLy);\n    delta.y = (RxLz + (-RwLy));\n    float lengthInv = rsqrt((delta.x * delta.x+ 3.075740e-05) + (delta.y * delta.y));\n    dir.x = (delta.x * lengthInv);\n    dir.y = (delta.y * lengthInv);\n    return dir;\n}\n\nfloat4 SGSRH(float2 p)\n{\n    return INPUT.GatherGreen(sam, p);\n}\n\nfloat4 SGSRRGBH(float2 p)\n{\n    return INPUT.SampleLevel(sam, p, 0);\n}\n\nfloat3 SgsrYuvH(float2 uv, float4 con1)\n{\n    float3 pix;\n    float edgeThreshold = EdgeThreshold / 255.0;\n    float edgeSharpness = EdgeSharpness;\n    pix = SGSRRGBH(uv).xyz;\n    float xCenter;\n    xCenter = abs(uv.x+-0.5);\n    float yCenter;\n    yCenter = abs(uv.y+-0.5);\n\n    float2 imgCoord = ((uv.xy*con1.zw)+ float2(-0.5,0.5));\n    float2 imgCoordPixel = floor(imgCoord);\n    float2 coord = (imgCoordPixel*con1.xy);\n    float2 pl = (imgCoord+(-imgCoordPixel));\n    float4  left = SGSRH(coord);\n\n    float edgeVote = abs(left.z - left.y) + abs(pix[1] - left.y)  + abs(pix[1] - left.z) ;\n    if (edgeVote > edgeThreshold)\n    {\n        coord.x += con1.x;\n\n        float4 right = SGSRH(coord + float2(con1.x,  0.0));\n        float4 upDown;\n        upDown.xy = SGSRH(coord + float2(0.0, -con1.y)).wz;\n        upDown.zw = SGSRH(coord + float2(0.0,  con1.y)).yx;\n\n        float mean = (left.y+left.z+right.x+right.w)* float(0.25);\n        left = left - float4(mean,mean,mean,mean);\n        right = right - float4(mean, mean, mean, mean);\n        upDown = upDown - float4(mean, mean, mean, mean);\n        float pix_G = pix[1] - mean;\n\n        float sum = (((((abs(left.x)+abs(left.y))+abs(left.z))+abs(left.w))+(((abs(right.x)+abs(right.y))+abs(right.z))+abs(right.w)))+(((abs(upDown.x)+abs(upDown.y))+abs(upDown.z))+abs(upDown.w)));\n        float sumMean = 1.014185e+01/sum;\n        float std = (sumMean*sumMean);\n\n#if defined(UseEdgeDirection)\n        float3 data = float3(std, edgeDirection(left, right));\n#else\n        float data = std;\n#endif\n\n        float2 aWY = weightY(pl.x, pl.y+1.0, upDown.x,data);\n        aWY += weightY(pl.x-1.0, pl.y+1.0, upDown.y,data);\n        aWY += weightY(pl.x-1.0, pl.y-2.0, upDown.z,data);\n        aWY += weightY(pl.x, pl.y-2.0, upDown.w,data);\n        aWY += weightY(pl.x+1.0, pl.y-1.0, left.x,data);\n        aWY += weightY(pl.x, pl.y-1.0, left.y,data);\n        aWY += weightY(pl.x, pl.y, left.z,data);\n        aWY += weightY(pl.x+1.0, pl.y, left.w,data);\n        aWY += weightY(pl.x-1.0, pl.y-1.0, right.x,data);\n        aWY += weightY(pl.x-2.0, pl.y-1.0, right.y,data);\n        aWY += weightY(pl.x-2.0, pl.y, right.z,data);\n        aWY += weightY(pl.x-1.0, pl.y, right.w,data);\n\n        float finalY = aWY.y/aWY.x;\n\n        float max4 = max(max(left.y,left.z),max(right.x,right.w));\n        float min4 = min(min(left.y,left.z),min(right.x,right.w));\n        finalY = clamp(edgeSharpness*finalY, min4, max4);\n\n        float deltaY = finalY - pix_G;\n\n        pix = saturate(pix+deltaY);\n    }\n    return pix;\n}\n\nMF4 Pass1(float2 texCoord)\n{\n    float2 inputSize = GetInputSize();\n    float2 inputPt = GetInputPt();\n    float4 viewportInfo = float4(inputPt.x, inputPt.y, inputSize.x, inputSize.y);\n\n    return float4(SgsrYuvH(texCoord, viewportInfo), 1);\n}\n\n"
  },
  {
    "path": "src/Effects/SMAA/SMAA.hlsli",
    "content": "// SMAA For Magpie\n// 移植自 https://github.com/iryoku/smaa\n// 根据 Magpie 的需求做了一些更改:\n// 1. 将 VS 的计算移到 PS 中\n// 2. 删除一些用不到的功能，如 predicated thresholding，temporal supersampling 等\n// 3. 添加两个采样器的预定义 SMAA_LINEAR_SAMPLER 和 SMAA_POINT_SAMPLER\n// 4. 删除跨平台相关的逻辑\n// 5. EdgeDetection 中不再使用 discard\n\n/**\n * Copyright (C) 2013 Jorge Jimenez (jorge@iryoku.com)\n * Copyright (C) 2013 Jose I. Echevarria (joseignacioechevarria@gmail.com)\n * Copyright (C) 2013 Belen Masia (bmasia@unizar.es)\n * Copyright (C) 2013 Fernando Navarro (fernandn@microsoft.com)\n * Copyright (C) 2013 Diego Gutierrez (diegog@unizar.es)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n * of the Software, and to permit persons to whom the Software is furnished to\n * do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software. As clarification, there\n * is no requirement that the copyright notice and permission be included in\n * binary distributions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n\n /**\n  *                  _______  ___  ___       ___           ___\n  *                 /       ||   \\/   |     /   \\         /   \\\n  *                |   (---- |  \\  /  |    /  ^  \\       /  ^  \\\n  *                 \\   \\    |  |\\/|  |   /  /_\\  \\     /  /_\\  \\\n  *              ----)   |   |  |  |  |  /  _____  \\   /  _____  \\\n  *             |_______/    |__|  |__| /__/     \\__\\ /__/     \\__\\\n  *\n  *                               E N H A N C E D\n  *       S U B P I X E L   M O R P H O L O G I C A L   A N T I A L I A S I N G\n  *\n  *                         http://www.iryoku.com/smaa/\n  *\n  * Hi, welcome aboard!\n  *\n  * Here you'll find instructions to get the shader up and running as fast as\n  * possible.\n  *\n  * IMPORTANTE NOTICE: when updating, remember to update both this file and the\n  * precomputed textures! They may change from version to version.\n  *\n  * The shader has three passes, chained together as follows:\n  *\n  *                           |input|------------------·\n  *                              v                     |\n  *                    [ SMAA*EdgeDetection ]          |\n  *                              v                     |\n  *                          |edgesTex|                |\n  *                              v                     |\n  *              [ SMAABlendingWeightCalculation ]     |\n  *                              v                     |\n  *                          |blendTex|                |\n  *                              v                     |\n  *                [ SMAANeighborhoodBlending ] <------·\n  *                              v\n  *                           |output|\n  *\n  * Note that each [pass] has its own vertex and pixel shader. Remember to use\n  * oversized triangles instead of quads to avoid overshading along the\n  * diagonal.\n  *\n  * You've three edge detection methods to choose from: luma, color or depth.\n  * They represent different quality/performance and anti-aliasing/sharpness\n  * tradeoffs, so our recommendation is for you to choose the one that best\n  * suits your particular scenario:\n  *\n  * - Depth edge detection is usually the fastest but it may miss some edges.\n  *\n  * - Luma edge detection is usually more expensive than depth edge detection,\n  *   but catches visible edges that depth edge detection can miss.\n  *\n  * - Color edge detection is usually the most expensive one but catches\n  *   chroma-only edges.\n  *\n  * For quickstarters: just use luma edge detection.\n  *\n  * The general advice is to not rush the integration process and ensure each\n  * step is done correctly (don't try to integrate SMAA T2x with predicated edge\n  * detection from the start!). Ok then, let's go!\n  *\n  *  1. The first step is to create two RGBA temporal render targets for holding\n  *     |edgesTex| and |blendTex|.\n  *\n  *     In DX10 or DX11, you can use a RG render target for the edges texture.\n  *     In the case of NVIDIA GPUs, using RG render targets seems to actually be\n  *     slower.\n  *\n  *     On the Xbox 360, you can use the same render target for resolving both\n  *     |edgesTex| and |blendTex|, as they aren't needed simultaneously.\n  *\n  *  2. Both temporal render targets |edgesTex| and |blendTex| must be cleared\n  *     each frame. Do not forget to clear the alpha channel!\n  *\n  *  3. The next step is loading the two supporting precalculated textures,\n  *     'areaTex' and 'searchTex'. You'll find them in the 'Textures' folder as\n  *     C++ headers, and also as regular DDS files. They'll be needed for the\n  *     'SMAABlendingWeightCalculation' pass.\n  *\n  *     If you use the C++ headers, be sure to load them in the format specified\n  *     inside of them.\n  *\n  *     You can also compress 'areaTex' and 'searchTex' using BC5 and BC4\n  *     respectively, if you have that option in your content processor pipeline.\n  *     When compressing then, you get a non-perceptible quality decrease, and a\n  *     marginal performance increase.\n  *\n  *  4. All samplers must be set to linear filtering and clamp.\n  *\n  *     After you get the technique working, remember that 64-bit inputs have\n  *     half-rate linear filtering on GCN.\n  *\n  *     If SMAA is applied to 64-bit color buffers, switching to point filtering\n  *     when accessing them will increase the performance. Search for\n  *     'SMAASamplePoint' to see which textures may benefit from point\n  *     filtering, and where (which is basically the color input in the edge\n  *     detection and resolve passes).\n  *\n  *  5. All texture reads and buffer writes must be non-sRGB, with the exception\n  *     of the input read and the output write in\n  *     'SMAANeighborhoodBlending' (and only in this pass!). If sRGB reads in\n  *     this last pass are not possible, the technique will work anyway, but\n  *     will perform antialiasing in gamma space.\n  *\n  *     IMPORTANT: for best results the input read for the color/luma edge\n  *     detection should *NOT* be sRGB.\n  *\n  *  6. Before including SMAA.h you'll have to setup the render target metrics,\n  *     the target and any optional configuration defines. Optionally you can\n  *     use a preset.\n  *\n  *     four presets:\n  *         SMAA_PRESET_LOW          (%60 of the quality)\n  *         SMAA_PRESET_MEDIUM       (%80 of the quality)\n  *         SMAA_PRESET_HIGH         (%95 of the quality)\n  *         SMAA_PRESET_ULTRA        (%99 of the quality)\n  *\n  *     For example:\n  *         #define SMAA_RT_METRICS float4(1.0 / 1280.0, 1.0 / 720.0, 1280.0, 720.0)\n  *         #define SMAA_LINEAR_SAMPLER LinearSampler\n  *         #define SMAA_POINT_SAMPLER PointSampler\n  *         #define SMAA_PRESET_HIGH\n  *         #include \"SMAA.h\"\n  *\n  *     Note that SMAA_RT_METRICS doesn't need to be a macro, it can be a\n  *     uniform variable. The code is designed to minimize the impact of not\n  *     using a constant value, but it is still better to hardcode it.\n  *\n  *     Depending on how you encoded 'areaTex' and 'searchTex', you may have to\n  *     add (and customize) the following defines before including SMAA.h:\n  *          #define SMAA_AREATEX_SELECT(sample) sample.rg\n  *          #define SMAA_SEARCHTEX_SELECT(sample) sample.r\n  *\n  *     If your engine is already using porting macros, you can define\n  *     SMAA_CUSTOM_SL, and define the porting functions by yourself.\n  *\n  *  7. Then, you'll have to setup the passes as indicated in the scheme above.\n  *     You can take a look into SMAA.fx, to see how we did it for our demo.\n  *     Checkout the function wrappers, you may want to copy-paste them!\n  *\n  *  8. It's recommended to validate the produced |edgesTex| and |blendTex|.\n  *     You can use a screenshot from your engine to compare the |edgesTex|\n  *     and |blendTex| produced inside of the engine with the results obtained\n  *     with the reference demo.\n  *\n  *  9. After you get the last pass to work, it's time to optimize. You'll have\n  *     to initialize a stencil buffer in the first pass (discard is already in\n  *     the code), then mask execution by using it the second pass. The last\n  *     pass should be executed in all pixels.\n  *\n  * That's it!\n  */\n\n  //-----------------------------------------------------------------------------\n  // SMAA Presets\n\n  /**\n   * Note that if you use one of these presets, the following configuration\n   * macros will be ignored if set in the \"Configurable Defines\" section.\n   */\n\n#if defined(SMAA_PRESET_LOW)\n#define SMAA_THRESHOLD 0.15\n#define SMAA_MAX_SEARCH_STEPS 4\n#define SMAA_DISABLE_DIAG_DETECTION\n#define SMAA_DISABLE_CORNER_DETECTION\n#elif defined(SMAA_PRESET_MEDIUM)\n#define SMAA_THRESHOLD 0.1\n#define SMAA_MAX_SEARCH_STEPS 8\n#define SMAA_DISABLE_DIAG_DETECTION\n#define SMAA_DISABLE_CORNER_DETECTION\n#elif defined(SMAA_PRESET_HIGH)\n#define SMAA_THRESHOLD 0.1\n#define SMAA_MAX_SEARCH_STEPS 16\n#define SMAA_MAX_SEARCH_STEPS_DIAG 8\n#define SMAA_CORNER_ROUNDING 25\n#elif defined(SMAA_PRESET_ULTRA)\n#define SMAA_THRESHOLD 0.05\n#define SMAA_MAX_SEARCH_STEPS 32\n#define SMAA_MAX_SEARCH_STEPS_DIAG 16\n#define SMAA_CORNER_ROUNDING 25\n#endif\n\n   //-----------------------------------------------------------------------------\n   // Configurable Defines\n\n   /**\n\t* SMAA_THRESHOLD specifies the threshold or sensitivity to edges.\n\t* Lowering this value you will be able to detect more edges at the expense of\n\t* performance.\n\t*\n\t* Range: [0, 0.5]\n\t*   0.1 is a reasonable value, and allows to catch most visible edges.\n\t*   0.05 is a rather overkill value, that allows to catch 'em all.\n\t*\n\t*   If temporal supersampling is used, 0.2 could be a reasonable value, as low\n\t*   contrast edges are properly filtered by just 2x.\n\t*/\n#ifndef SMAA_THRESHOLD\n#define SMAA_THRESHOLD 0.1\n#endif\n\n\t/**\n\t * SMAA_DEPTH_THRESHOLD specifies the threshold for depth edge detection.\n\t *\n\t * Range: depends on the depth range of the scene.\n\t */\n#ifndef SMAA_DEPTH_THRESHOLD\n#define SMAA_DEPTH_THRESHOLD (0.1 * SMAA_THRESHOLD)\n#endif\n\n\t /**\n\t  * SMAA_MAX_SEARCH_STEPS specifies the maximum steps performed in the\n\t  * horizontal/vertical pattern searches, at each side of the pixel.\n\t  *\n\t  * In number of pixels, it's actually the double. So the maximum line length\n\t  * perfectly handled by, for example 16, is 64 (by perfectly, we meant that\n\t  * longer lines won't look as good, but still antialiased).\n\t  *\n\t  * Range: [0, 112]\n\t  */\n#ifndef SMAA_MAX_SEARCH_STEPS\n#define SMAA_MAX_SEARCH_STEPS 16\n#endif\n\n\t  /**\n\t   * SMAA_MAX_SEARCH_STEPS_DIAG specifies the maximum steps performed in the\n\t   * diagonal pattern searches, at each side of the pixel. In this case we jump\n\t   * one pixel at time, instead of two.\n\t   *\n\t   * Range: [0, 20]\n\t   *\n\t   * On high-end machines it is cheap (between a 0.8x and 0.9x slower for 16\n\t   * steps), but it can have a significant impact on older machines.\n\t   *\n\t   * Define SMAA_DISABLE_DIAG_DETECTION to disable diagonal processing.\n\t   */\n#ifndef SMAA_MAX_SEARCH_STEPS_DIAG\n#define SMAA_MAX_SEARCH_STEPS_DIAG 8\n#endif\n\n\t   /**\n\t\t* SMAA_CORNER_ROUNDING specifies how much sharp corners will be rounded.\n\t\t*\n\t\t* Range: [0, 100]\n\t\t*\n\t\t* Define SMAA_DISABLE_CORNER_DETECTION to disable corner processing.\n\t\t*/\n#ifndef SMAA_CORNER_ROUNDING\n#define SMAA_CORNER_ROUNDING 25\n#endif\n\n\t\t/**\n\t\t * If there is an neighbor edge that has SMAA_LOCAL_CONTRAST_FACTOR times\n\t\t * bigger contrast than current edge, current edge will be discarded.\n\t\t *\n\t\t * This allows to eliminate spurious crossing edges, and is based on the fact\n\t\t * that, if there is too much contrast in a direction, that will hide\n\t\t * perceptually contrast in the other neighbors.\n\t\t */\n#ifndef SMAA_LOCAL_CONTRAST_ADAPTATION_FACTOR\n#define SMAA_LOCAL_CONTRAST_ADAPTATION_FACTOR 2.0\n#endif\n\n\t\t\t\t//-----------------------------------------------------------------------------\n\t\t\t\t// Texture Access Defines\n\n#ifndef SMAA_AREATEX_SELECT\n#define SMAA_AREATEX_SELECT(sample) sample.rg\n#endif\n\n#ifndef SMAA_SEARCHTEX_SELECT\n#define SMAA_SEARCHTEX_SELECT(sample) sample.r\n#endif\n\n#ifndef SMAA_DECODE_VELOCITY\n#define SMAA_DECODE_VELOCITY(sample) sample.rg\n#endif\n\n//-----------------------------------------------------------------------------\n// Non-Configurable Defines\n\n#define SMAA_AREATEX_MAX_DISTANCE 16\n#define SMAA_AREATEX_MAX_DISTANCE_DIAG 20\n#define SMAA_AREATEX_PIXEL_SIZE (1.0 / float2(160.0, 560.0))\n#define SMAA_AREATEX_SUBTEX_SIZE (1.0 / 7.0)\n#define SMAA_SEARCHTEX_SIZE float2(66.0, 33.0)\n#define SMAA_SEARCHTEX_PACKED_SIZE float2(64.0, 16.0)\n#define SMAA_CORNER_ROUNDING_NORM (float(SMAA_CORNER_ROUNDING) / 100.0)\n\n//-----------------------------------------------------------------------------\n// Porting Functions\n\n\n#define SMAATexture2D(tex) Texture2D tex\n#define SMAATexturePass2D(tex) tex\n#define SMAASampleLevelZero(tex, coord) tex.SampleLevel(SMAA_LINEAR_SAMPLER, coord, 0)\n#define SMAASampleLevelZeroOffset(tex, coord, offset) tex.SampleLevel(SMAA_LINEAR_SAMPLER, coord, 0, offset)\n#define SMAASample(tex, coord) tex.SampleLevel(SMAA_LINEAR_SAMPLER, coord, 0)\n#define SMAASamplePoint(tex, coord) tex.SampleLevel(SMAA_POINT_SAMPLER, coord, 0)\n#define SMAA_FLATTEN [flatten]\n#define SMAA_BRANCH [branch]\n\n\n//-----------------------------------------------------------------------------\n// Misc functions\n\n/**\n * Conditional move:\n */\nvoid SMAAMovc(bool2 cond, inout float2 variable, float2 value) {\n\tSMAA_FLATTEN if (cond.x) variable.x = value.x;\n\tSMAA_FLATTEN if (cond.y) variable.y = value.y;\n}\n\nvoid SMAAMovc(bool4 cond, inout float4 variable, float4 value) {\n\tSMAAMovc(cond.xy, variable.xy, value.xy);\n\tSMAAMovc(cond.zw, variable.zw, value.zw);\n}\n\n\n//-----------------------------------------------------------------------------\n// Edge Detection Pixel Shaders (First Pass)\n\n/**\n * Luma Edge Detection\n *\n * IMPORTANT NOTICE: luma edge detection requires gamma-corrected colors, and\n * thus 'colorTex' should be a non-sRGB texture.\n */\nfloat2 SMAALumaEdgeDetectionPS(float2 texcoord, Texture2D<float4> colorTex) {\n\tfloat4 offset[3];\n\toffset[0] = mad(SMAA_RT_METRICS.xyxy, float4(-1.0, 0.0, 0.0, -1.0), texcoord.xyxy);\n\toffset[1] = mad(SMAA_RT_METRICS.xyxy, float4(1.0, 0.0, 0.0, 1.0), texcoord.xyxy);\n\toffset[2] = mad(SMAA_RT_METRICS.xyxy, float4(-2.0, 0.0, 0.0, -2.0), texcoord.xyxy);\n\n\t// Calculate the threshold:\n\tfloat2 threshold = float2(SMAA_THRESHOLD, SMAA_THRESHOLD);\n\n\t// Calculate lumas:\n\tfloat3 weights = float3(0.2126, 0.7152, 0.0722);\n\tfloat L = dot(SMAASamplePoint(colorTex, texcoord).rgb, weights);\n\n\tfloat Lleft = dot(SMAASamplePoint(colorTex, offset[0].xy).rgb, weights);\n\tfloat Ltop = dot(SMAASamplePoint(colorTex, offset[0].zw).rgb, weights);\n\n\t// We do the usual threshold:\n\tfloat4 delta;\n\tdelta.xy = abs(L - float2(Lleft, Ltop));\n\tfloat2 edges = step(threshold, delta.xy);\n\n\t// Then discard if there is no edge:\n\tif (dot(edges, float2(1.0, 1.0)) == 0.0) {\n\t\treturn float2(0, 0);\t// 不使用 discard\n\t} else {\n\t\t// Calculate right and bottom deltas:\n\t\tfloat Lright = dot(SMAASamplePoint(colorTex, offset[1].xy).rgb, weights);\n\t\tfloat Lbottom = dot(SMAASamplePoint(colorTex, offset[1].zw).rgb, weights);\n\t\tdelta.zw = abs(L - float2(Lright, Lbottom));\n\n\t\t// Calculate the maximum delta in the direct neighborhood:\n\t\tfloat2 maxDelta = max(delta.xy, delta.zw);\n\n\t\t// Calculate left-left and top-top deltas:\n\t\tfloat Lleftleft = dot(SMAASamplePoint(colorTex, offset[2].xy).rgb, weights);\n\t\tfloat Ltoptop = dot(SMAASamplePoint(colorTex, offset[2].zw).rgb, weights);\n\t\tdelta.zw = abs(float2(Lleft, Ltop) - float2(Lleftleft, Ltoptop));\n\n\t\t// Calculate the final maximum delta:\n\t\tmaxDelta = max(maxDelta.xy, delta.zw);\n\t\tfloat finalDelta = max(maxDelta.x, maxDelta.y);\n\n\t\t// Local contrast adaptation:\n\t\tedges.xy *= step(finalDelta, SMAA_LOCAL_CONTRAST_ADAPTATION_FACTOR * delta.xy);\n\n\t\treturn edges;\n\t}\n}\n\n\n//-----------------------------------------------------------------------------\n// Diagonal Search Functions\n\n#if !defined(SMAA_DISABLE_DIAG_DETECTION)\n\n/**\n * Allows to decode two binary values from a bilinear-filtered access.\n */\nfloat2 SMAADecodeDiagBilinearAccess(float2 e) {\n\t// Bilinear access for fetching 'e' have a 0.25 offset, and we are\n\t// interested in the R and G edges:\n\t//\n\t// +---G---+-------+\n\t// |   x o R   x   |\n\t// +-------+-------+\n\t//\n\t// Then, if one of these edge is enabled:\n\t//   Red:   (0.75 * X + 0.25 * 1) => 0.25 or 1.0\n\t//   Green: (0.75 * 1 + 0.25 * X) => 0.75 or 1.0\n\t//\n\t// This function will unpack the values (mad + mul + round):\n\t// wolframalpha.com: round(x * abs(5 * x - 5 * 0.75)) plot 0 to 1\n\te.r = e.r * abs(5.0 * e.r - 5.0 * 0.75);\n\treturn round(e);\n}\n\nfloat4 SMAADecodeDiagBilinearAccess(float4 e) {\n\te.rb = e.rb * abs(5.0 * e.rb - 5.0 * 0.75);\n\treturn round(e);\n}\n\n/**\n * These functions allows to perform diagonal pattern searches.\n */\nfloat2 SMAASearchDiag1(Texture2D<float2> edgesTex, float2 texcoord, float2 dir, out float2 e) {\n\tfloat4 coord = float4(texcoord, -1.0, 1.0);\n\tfloat3 t = float3(SMAA_RT_METRICS.xy, 1.0);\n\twhile (coord.z < float(SMAA_MAX_SEARCH_STEPS_DIAG - 1) &&\n\t\tcoord.w > 0.9) {\n\t\tcoord.xyz = mad(t, float3(dir, 1.0), coord.xyz);\n\t\te = SMAASampleLevelZero(edgesTex, coord.xy).rg;\n\t\tcoord.w = dot(e, float2(0.5, 0.5));\n\t}\n\treturn coord.zw;\n}\n\nfloat2 SMAASearchDiag2(Texture2D<float2> edgesTex, float2 texcoord, float2 dir, out float2 e) {\n\tfloat4 coord = float4(texcoord, -1.0, 1.0);\n\tcoord.x += 0.25 * SMAA_RT_METRICS.x; // See @SearchDiag2Optimization\n\tfloat3 t = float3(SMAA_RT_METRICS.xy, 1.0);\n\twhile (coord.z < float(SMAA_MAX_SEARCH_STEPS_DIAG - 1) &&\n\t\tcoord.w > 0.9) {\n\t\tcoord.xyz = mad(t, float3(dir, 1.0), coord.xyz);\n\n\t\t// @SearchDiag2Optimization\n\t\t// Fetch both edges at once using bilinear filtering:\n\t\te = SMAASampleLevelZero(edgesTex, coord.xy).rg;\n\t\te = SMAADecodeDiagBilinearAccess(e);\n\n\t\t// Non-optimized version:\n\t\t// e.g = SMAASampleLevelZero(edgesTex, coord.xy).g;\n\t\t// e.r = SMAASampleLevelZeroOffset(edgesTex, coord.xy, int2(1, 0)).r;\n\n\t\tcoord.w = dot(e, float2(0.5, 0.5));\n\t}\n\treturn coord.zw;\n}\n\n/**\n * Similar to SMAAArea, this calculates the area corresponding to a certain\n * diagonal distance and crossing edges 'e'.\n */\nfloat2 SMAAAreaDiag(Texture2D<float4> areaTex, float2 dist, float2 e, float offset) {\n\tfloat2 texcoord = mad(float2(SMAA_AREATEX_MAX_DISTANCE_DIAG, SMAA_AREATEX_MAX_DISTANCE_DIAG), e, dist);\n\n\t// We do a scale and bias for mapping to texel space:\n\ttexcoord = mad(SMAA_AREATEX_PIXEL_SIZE, texcoord, 0.5 * SMAA_AREATEX_PIXEL_SIZE);\n\n\t// Diagonal areas are on the second half of the texture:\n\ttexcoord.x += 0.5;\n\n\t// Move to proper place, according to the subpixel offset:\n\ttexcoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;\n\n\t// Do it!\n\treturn SMAA_AREATEX_SELECT(SMAASampleLevelZero(areaTex, texcoord));\n}\n\n/**\n * This searches for diagonal patterns and returns the corresponding weights.\n */\nfloat2 SMAACalculateDiagWeights(Texture2D<float2> edgesTex, Texture2D<float4> areaTex, float2 texcoord, float2 e, float4 subsampleIndices) {\n\tfloat2 weights = float2(0.0, 0.0);\n\n\t// Search for the line ends:\n\tfloat4 d;\n\tfloat2 end;\n\tif (e.r > 0.0) {\n\t\td.xz = SMAASearchDiag1(SMAATexturePass2D(edgesTex), texcoord, float2(-1.0, 1.0), end);\n\t\td.x += float(end.y > 0.9);\n\t} else\n\t\td.xz = float2(0.0, 0.0);\n\td.yw = SMAASearchDiag1(SMAATexturePass2D(edgesTex), texcoord, float2(1.0, -1.0), end);\n\n\tSMAA_BRANCH\n\t\tif (d.x + d.y > 2.0) { // d.x + d.y + 1 > 3\n\t\t\t// Fetch the crossing edges:\n\t\t\tfloat4 coords = mad(float4(-d.x + 0.25, d.x, d.y, -d.y - 0.25), SMAA_RT_METRICS.xyxy, texcoord.xyxy);\n\t\t\tfloat4 c;\n\t\t\tc.xy = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(-1, 0)).rg;\n\t\t\tc.zw = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2(1, 0)).rg;\n\t\t\tc.yxwz = SMAADecodeDiagBilinearAccess(c.xyzw);\n\n\t\t\t// Non-optimized version:\n\t\t\t// float4 coords = mad(float4(-d.x, d.x, d.y, -d.y), SMAA_RT_METRICS.xyxy, texcoord.xyxy);\n\t\t\t// float4 c;\n\t\t\t// c.x = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(-1,  0)).g;\n\t\t\t// c.y = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2( 0,  0)).r;\n\t\t\t// c.z = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2( 1,  0)).g;\n\t\t\t// c.w = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2( 1, -1)).r;\n\n\t\t\t// Merge crossing edges at each side into a single value:\n\t\t\tfloat2 cc = mad(float2(2.0, 2.0), c.xz, c.yw);\n\n\t\t\t// Remove the crossing edge if we didn't found the end of the line:\n\t\t\tSMAAMovc(bool2(step(0.9, d.zw)), cc, float2(0.0, 0.0));\n\n\t\t\t// Fetch the areas for this line:\n\t\t\tweights += SMAAAreaDiag(SMAATexturePass2D(areaTex), d.xy, cc, subsampleIndices.z);\n\t\t}\n\n\t// Search for the line ends:\n\td.xz = SMAASearchDiag2(SMAATexturePass2D(edgesTex), texcoord, float2(-1.0, -1.0), end);\n\tif (SMAASampleLevelZeroOffset(edgesTex, texcoord, int2(1, 0)).r > 0.0) {\n\t\td.yw = SMAASearchDiag2(SMAATexturePass2D(edgesTex), texcoord, float2(1.0, 1.0), end);\n\t\td.y += float(end.y > 0.9);\n\t} else\n\t\td.yw = float2(0.0, 0.0);\n\n\tSMAA_BRANCH\n\t\tif (d.x + d.y > 2.0) { // d.x + d.y + 1 > 3\n\t\t\t// Fetch the crossing edges:\n\t\t\tfloat4 coords = mad(float4(-d.x, -d.x, d.y, d.y), SMAA_RT_METRICS.xyxy, texcoord.xyxy);\n\t\t\tfloat4 c;\n\t\t\tc.x = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(-1, 0)).g;\n\t\t\tc.y = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(0, -1)).r;\n\t\t\tc.zw = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2(1, 0)).gr;\n\t\t\tfloat2 cc = mad(float2(2.0, 2.0), c.xz, c.yw);\n\n\t\t\t// Remove the crossing edge if we didn't found the end of the line:\n\t\t\tSMAAMovc(bool2(step(0.9, d.zw)), cc, float2(0.0, 0.0));\n\n\t\t\t// Fetch the areas for this line:\n\t\t\tweights += SMAAAreaDiag(SMAATexturePass2D(areaTex), d.xy, cc, subsampleIndices.w).gr;\n\t\t}\n\n\treturn weights;\n}\n#endif\n\n//-----------------------------------------------------------------------------\n// Horizontal/Vertical Search Functions\n\n/**\n * This allows to determine how much length should we add in the last step\n * of the searches. It takes the bilinearly interpolated edge (see\n * @PSEUDO_GATHER4), and adds 0, 1 or 2, depending on which edges and\n * crossing edges are active.\n */\nfloat SMAASearchLength(Texture2D<float> searchTex, float2 e, float offset) {\n\t// The texture is flipped vertically, with left and right cases taking half\n\t// of the space horizontally:\n\tfloat2 scale = SMAA_SEARCHTEX_SIZE * float2(0.5, -1.0);\n\tfloat2 bias = SMAA_SEARCHTEX_SIZE * float2(offset, 1.0);\n\n\t// Scale and bias to access texel centers:\n\tscale += float2(-1.0, 1.0);\n\tbias += float2(0.5, -0.5);\n\n\t// Convert from pixel coordinates to texcoords:\n\t// (We use SMAA_SEARCHTEX_PACKED_SIZE because the texture is cropped)\n\tscale *= 1.0 / SMAA_SEARCHTEX_PACKED_SIZE;\n\tbias *= 1.0 / SMAA_SEARCHTEX_PACKED_SIZE;\n\n\t// Lookup the search texture:\n\treturn SMAA_SEARCHTEX_SELECT(SMAASampleLevelZero(searchTex, mad(scale, e, bias)));\n}\n\n/**\n * Horizontal/vertical search functions for the 2nd pass.\n */\nfloat SMAASearchXLeft(Texture2D<float2> edgesTex, Texture2D<float> searchTex, float2 texcoord, float end) {\n\t/**\n\t * @PSEUDO_GATHER4\n\t * This texcoord has been offset by (-0.25, -0.125) in the vertex shader to\n\t * sample between edge, thus fetching four edges in a row.\n\t * Sampling with different offsets in each direction allows to disambiguate\n\t * which edges are active from the four fetched ones.\n\t */\n\tfloat2 e = float2(0.0, 1.0);\n\twhile (texcoord.x > end &&\n\t\te.g > 0.8281 && // Is there some edge not activated?\n\t\te.r == 0.0) { // Or is there a crossing edge that breaks the line?\n\t\te = SMAASampleLevelZero(edgesTex, texcoord).rg;\n\t\ttexcoord = mad(-float2(2.0, 0.0), SMAA_RT_METRICS.xy, texcoord);\n\t}\n\n\tfloat offset = mad(-(255.0 / 127.0), SMAASearchLength(SMAATexturePass2D(searchTex), e, 0.0), 3.25);\n\treturn mad(SMAA_RT_METRICS.x, offset, texcoord.x);\n\n\t// Non-optimized version:\n\t// We correct the previous (-0.25, -0.125) offset we applied:\n\t// texcoord.x += 0.25 * SMAA_RT_METRICS.x;\n\n\t// The searches are bias by 1, so adjust the coords accordingly:\n\t// texcoord.x += SMAA_RT_METRICS.x;\n\n\t// Disambiguate the length added by the last step:\n\t// texcoord.x += 2.0 * SMAA_RT_METRICS.x; // Undo last step\n\t// texcoord.x -= SMAA_RT_METRICS.x * (255.0 / 127.0) * SMAASearchLength(SMAATexturePass2D(searchTex), e, 0.0);\n\t// return mad(SMAA_RT_METRICS.x, offset, texcoord.x);\n}\n\nfloat SMAASearchXRight(Texture2D<float2> edgesTex, Texture2D<float> searchTex, float2 texcoord, float end) {\n\tfloat2 e = float2(0.0, 1.0);\n\twhile (texcoord.x < end &&\n\t\te.g > 0.8281 && // Is there some edge not activated?\n\t\te.r == 0.0) { // Or is there a crossing edge that breaks the line?\n\t\te = SMAASampleLevelZero(edgesTex, texcoord).rg;\n\t\ttexcoord = mad(float2(2.0, 0.0), SMAA_RT_METRICS.xy, texcoord);\n\t}\n\tfloat offset = mad(-(255.0 / 127.0), SMAASearchLength(SMAATexturePass2D(searchTex), e, 0.5), 3.25);\n\treturn mad(-SMAA_RT_METRICS.x, offset, texcoord.x);\n}\n\nfloat SMAASearchYUp(Texture2D<float2> edgesTex, Texture2D<float> searchTex, float2 texcoord, float end) {\n\tfloat2 e = float2(1.0, 0.0);\n\twhile (texcoord.y > end &&\n\t\te.r > 0.8281 && // Is there some edge not activated?\n\t\te.g == 0.0) { // Or is there a crossing edge that breaks the line?\n\t\te = SMAASampleLevelZero(edgesTex, texcoord).rg;\n\t\ttexcoord = mad(-float2(0.0, 2.0), SMAA_RT_METRICS.xy, texcoord);\n\t}\n\tfloat offset = mad(-(255.0 / 127.0), SMAASearchLength(SMAATexturePass2D(searchTex), e.gr, 0.0), 3.25);\n\treturn mad(SMAA_RT_METRICS.y, offset, texcoord.y);\n}\n\nfloat SMAASearchYDown(Texture2D<float2> edgesTex, Texture2D<float> searchTex, float2 texcoord, float end) {\n\tfloat2 e = float2(1.0, 0.0);\n\twhile (texcoord.y < end &&\n\t\te.r > 0.8281 && // Is there some edge not activated?\n\t\te.g == 0.0) { // Or is there a crossing edge that breaks the line?\n\t\te = SMAASampleLevelZero(edgesTex, texcoord).rg;\n\t\ttexcoord = mad(float2(0.0, 2.0), SMAA_RT_METRICS.xy, texcoord);\n\t}\n\tfloat offset = mad(-(255.0 / 127.0), SMAASearchLength(SMAATexturePass2D(searchTex), e.gr, 0.5), 3.25);\n\treturn mad(-SMAA_RT_METRICS.y, offset, texcoord.y);\n}\n\n/**\n * Ok, we have the distance and both crossing edges. So, what are the areas\n * at each side of current edge?\n */\nfloat2 SMAAArea(Texture2D<float4> areaTex, float2 dist, float e1, float e2, float offset) {\n\t// Rounding prevents precision errors of bilinear filtering:\n\tfloat2 texcoord = mad(float2(SMAA_AREATEX_MAX_DISTANCE, SMAA_AREATEX_MAX_DISTANCE), round(4.0 * float2(e1, e2)), dist);\n\n\t// We do a scale and bias for mapping to texel space:\n\ttexcoord = mad(SMAA_AREATEX_PIXEL_SIZE, texcoord, 0.5 * SMAA_AREATEX_PIXEL_SIZE);\n\n\t// Move to proper place, according to the subpixel offset:\n\ttexcoord.y = mad(SMAA_AREATEX_SUBTEX_SIZE, offset, texcoord.y);\n\n\t// Do it!\n\treturn SMAA_AREATEX_SELECT(SMAASampleLevelZero(areaTex, texcoord));\n}\n\n//-----------------------------------------------------------------------------\n// Corner Detection Functions\n\nvoid SMAADetectHorizontalCornerPattern(Texture2D<float2> edgesTex, inout float2 weights, float4 texcoord, float2 d) {\n#if !defined(SMAA_DISABLE_CORNER_DETECTION)\n\tfloat2 leftRight = step(d.xy, d.yx);\n\tfloat2 rounding = (1.0 - SMAA_CORNER_ROUNDING_NORM) * leftRight;\n\n\trounding /= leftRight.x + leftRight.y; // Reduce blending for pixels in the center of a line.\n\n\tfloat2 factor = float2(1.0, 1.0);\n\tfactor.x -= rounding.x * SMAASampleLevelZeroOffset(edgesTex, texcoord.xy, int2(0, 1)).r;\n\tfactor.x -= rounding.y * SMAASampleLevelZeroOffset(edgesTex, texcoord.zw, int2(1, 1)).r;\n\tfactor.y -= rounding.x * SMAASampleLevelZeroOffset(edgesTex, texcoord.xy, int2(0, -2)).r;\n\tfactor.y -= rounding.y * SMAASampleLevelZeroOffset(edgesTex, texcoord.zw, int2(1, -2)).r;\n\n\tweights *= saturate(factor);\n#endif\n}\n\nvoid SMAADetectVerticalCornerPattern(Texture2D<float2> edgesTex, inout float2 weights, float4 texcoord, float2 d) {\n#if !defined(SMAA_DISABLE_CORNER_DETECTION)\n\tfloat2 leftRight = step(d.xy, d.yx);\n\tfloat2 rounding = (1.0 - SMAA_CORNER_ROUNDING_NORM) * leftRight;\n\n\trounding /= leftRight.x + leftRight.y;\n\n\tfloat2 factor = float2(1.0, 1.0);\n\tfactor.x -= rounding.x * SMAASampleLevelZeroOffset(edgesTex, texcoord.xy, int2(1, 0)).g;\n\tfactor.x -= rounding.y * SMAASampleLevelZeroOffset(edgesTex, texcoord.zw, int2(1, 1)).g;\n\tfactor.y -= rounding.x * SMAASampleLevelZeroOffset(edgesTex, texcoord.xy, int2(-2, 0)).g;\n\tfactor.y -= rounding.y * SMAASampleLevelZeroOffset(edgesTex, texcoord.zw, int2(-2, 1)).g;\n\n\tweights *= saturate(factor);\n#endif\n}\n\n//-----------------------------------------------------------------------------\n// Blending Weight Calculation Pixel Shader (Second Pass)\n\nfloat4 SMAABlendingWeightCalculationPS(\n\tfloat2 texcoord,\n\tTexture2D<float2> edgesTex,\n\tTexture2D<float4> areaTex,\n\tTexture2D<float> searchTex,\n\tfloat4 subsampleIndices\t// Just pass zero for SMAA 1x, see @SUBSAMPLE_INDICES.\n) {\n\tfloat2 pixcoord = texcoord * SMAA_RT_METRICS.zw;\n\n\tfloat4 offset[3];\n\t// We will use these offsets for the searches later on (see @PSEUDO_GATHER4):\n\toffset[0] = mad(SMAA_RT_METRICS.xyxy, float4(-0.25, -0.125, 1.25, -0.125), texcoord.xyxy);\n\toffset[1] = mad(SMAA_RT_METRICS.xyxy, float4(-0.125, -0.25, -0.125, 1.25), texcoord.xyxy);\n\n\t// And these for the searches, they indicate the ends of the loops:\n\toffset[2] = mad(SMAA_RT_METRICS.xxyy,\n\t\tfloat4(-2.0, 2.0, -2.0, 2.0) * float(SMAA_MAX_SEARCH_STEPS),\n\t\tfloat4(offset[0].xz, offset[1].yw));\n\n\tfloat4 weights = float4(0.0, 0.0, 0.0, 0.0);\n\n\tfloat2 e = SMAASample(edgesTex, texcoord).rg;\n\n\tSMAA_BRANCH\n\t\tif (e.g > 0.0) { // Edge at north\n#if !defined(SMAA_DISABLE_DIAG_DETECTION)\n// Diagonals have both north and west edges, so searching for them in\n// one of the boundaries is enough.\n\t\t\tweights.rg = SMAACalculateDiagWeights(SMAATexturePass2D(edgesTex), SMAATexturePass2D(areaTex), texcoord, e, subsampleIndices);\n\n\t\t\t// We give priority to diagonals, so if we find a diagonal we skip \n\t\t\t// horizontal/vertical processing.\n\t\t\tSMAA_BRANCH\n\t\t\t\tif (weights.r == -weights.g) { // weights.r + weights.g == 0.0\n#endif\n\n\t\t\t\t\tfloat2 d;\n\n\t\t\t\t\t// Find the distance to the left:\n\t\t\t\t\tfloat3 coords;\n\t\t\t\t\tcoords.x = SMAASearchXLeft(SMAATexturePass2D(edgesTex), SMAATexturePass2D(searchTex), offset[0].xy, offset[2].x);\n\t\t\t\t\tcoords.y = offset[1].y; // offset[1].y = texcoord.y - 0.25 * SMAA_RT_METRICS.y (@CROSSING_OFFSET)\n\t\t\t\t\td.x = coords.x;\n\n\t\t\t\t\t// Now fetch the left crossing edges, two at a time using bilinear\n\t\t\t\t\t// filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to\n\t\t\t\t\t// discern what value each edge has:\n\t\t\t\t\tfloat e1 = SMAASampleLevelZero(edgesTex, coords.xy).r;\n\n\t\t\t\t\t// Find the distance to the right:\n\t\t\t\t\tcoords.z = SMAASearchXRight(SMAATexturePass2D(edgesTex), SMAATexturePass2D(searchTex), offset[0].zw, offset[2].y);\n\t\t\t\t\td.y = coords.z;\n\n\t\t\t\t\t// We want the distances to be in pixel units (doing this here allow to\n\t\t\t\t\t// better interleave arithmetic and memory accesses):\n\t\t\t\t\td = abs(round(mad(SMAA_RT_METRICS.zz, d, -pixcoord.xx)));\n\n\t\t\t\t\t// SMAAArea below needs a sqrt, as the areas texture is compressed\n\t\t\t\t\t// quadratically:\n\t\t\t\t\tfloat2 sqrt_d = sqrt(d);\n\n\t\t\t\t\t// Fetch the right crossing edges:\n\t\t\t\t\tfloat e2 = SMAASampleLevelZeroOffset(edgesTex, coords.zy, int2(1, 0)).r;\n\n\t\t\t\t\t// Ok, we know how this pattern looks like, now it is time for getting\n\t\t\t\t\t// the actual area:\n\t\t\t\t\tweights.rg = SMAAArea(SMAATexturePass2D(areaTex), sqrt_d, e1, e2, subsampleIndices.y);\n\n\t\t\t\t\t// Fix corners:\n\t\t\t\t\tcoords.y = texcoord.y;\n\t\t\t\t\tSMAADetectHorizontalCornerPattern(SMAATexturePass2D(edgesTex), weights.rg, coords.xyzy, d);\n\n#if !defined(SMAA_DISABLE_DIAG_DETECTION)\n\t\t\t\t} else\n\t\t\t\t\te.r = 0.0; // Skip vertical processing.\n#endif\n\t\t}\n\n\tSMAA_BRANCH\n\t\tif (e.r > 0.0) { // Edge at west\n\t\t\tfloat2 d;\n\n\t\t\t// Find the distance to the top:\n\t\t\tfloat3 coords;\n\t\t\tcoords.y = SMAASearchYUp(SMAATexturePass2D(edgesTex), SMAATexturePass2D(searchTex), offset[1].xy, offset[2].z);\n\t\t\tcoords.x = offset[0].x; // offset[1].x = texcoord.x - 0.25 * SMAA_RT_METRICS.x;\n\t\t\td.x = coords.y;\n\n\t\t\t// Fetch the top crossing edges:\n\t\t\tfloat e1 = SMAASampleLevelZero(edgesTex, coords.xy).g;\n\n\t\t\t// Find the distance to the bottom:\n\t\t\tcoords.z = SMAASearchYDown(SMAATexturePass2D(edgesTex), SMAATexturePass2D(searchTex), offset[1].zw, offset[2].w);\n\t\t\td.y = coords.z;\n\n\t\t\t// We want the distances to be in pixel units:\n\t\t\td = abs(round(mad(SMAA_RT_METRICS.ww, d, -pixcoord.yy)));\n\n\t\t\t// SMAAArea below needs a sqrt, as the areas texture is compressed \n\t\t\t// quadratically:\n\t\t\tfloat2 sqrt_d = sqrt(d);\n\n\t\t\t// Fetch the bottom crossing edges:\n\t\t\tfloat e2 = SMAASampleLevelZeroOffset(edgesTex, coords.xz, int2(0, 1)).g;\n\n\t\t\t// Get the area for this direction:\n\t\t\tweights.ba = SMAAArea(SMAATexturePass2D(areaTex), sqrt_d, e1, e2, subsampleIndices.x);\n\n\t\t\t// Fix corners:\n\t\t\tcoords.x = texcoord.x;\n\t\t\tSMAADetectVerticalCornerPattern(SMAATexturePass2D(edgesTex), weights.ba, coords.xyxz, d);\n\t\t}\n\n\treturn weights;\n}\n\n//-----------------------------------------------------------------------------\n// Neighborhood Blending Pixel Shader (Third Pass)\n\nfloat4 SMAANeighborhoodBlendingPS(\n\tfloat2 texcoord,\n\tTexture2D<float4> colorTex,\n\tTexture2D<float4> blendTex\n) {\n\tfloat4 offset = mad(SMAA_RT_METRICS.xyxy, float4(1.0, 0.0, 0.0, 1.0), texcoord.xyxy);\n\n\t// Fetch the blending weights for current pixel:\n\tfloat4 a;\n\ta.x = SMAASample(blendTex, offset.xy).a; // Right\n\ta.y = SMAASample(blendTex, offset.zw).g; // Top\n\ta.wz = SMAASample(blendTex, texcoord).xz; // Bottom / Left\n\n\t// Is there any blending weight with a value greater than 0.0?\n\tSMAA_BRANCH\n\t\tif (dot(a, float4(1.0, 1.0, 1.0, 1.0)) < 1e-5) {\n\t\t\tfloat4 color = SMAASampleLevelZero(colorTex, texcoord);\n\n\t\t\treturn color;\n\t\t} else {\n\t\t\tbool h = max(a.x, a.z) > max(a.y, a.w); // max(horizontal) > max(vertical)\n\n\t\t\t// Calculate the blending offsets:\n\t\t\tfloat4 blendingOffset = float4(0.0, a.y, 0.0, a.w);\n\t\t\tfloat2 blendingWeight = a.yw;\n\t\t\tSMAAMovc(bool4(h, h, h, h), blendingOffset, float4(a.x, 0.0, a.z, 0.0));\n\t\t\tSMAAMovc(bool2(h, h), blendingWeight, a.xz);\n\t\t\tblendingWeight /= dot(blendingWeight, float2(1.0, 1.0));\n\n\t\t\t// Calculate the texture coordinates:\n\t\t\tfloat4 blendingCoord = mad(blendingOffset, float4(SMAA_RT_METRICS.xy, -SMAA_RT_METRICS.xy), texcoord.xyxy);\n\n\t\t\t// We exploit bilinear filtering to mix current pixel with the chosen\n\t\t\t// neighbor:\n\t\t\tfloat4 color = blendingWeight.x * SMAASampleLevelZero(colorTex, blendingCoord.xy);\n\t\t\tcolor += blendingWeight.y * SMAASampleLevelZero(colorTex, blendingCoord.zw);\n\n\t\t\treturn color;\n\t\t}\n}\n"
  },
  {
    "path": "src/Effects/SMAA/SMAA_High.hlsl",
    "content": "//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME SMAA_2\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16_FLOAT\nTexture2D edgesTex;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D blendTex;\n\n//!TEXTURE\n//!SOURCE AreaTex.dds\n//!FORMAT R8G8B8A8_UNORM\nTexture2D areaTex;\n\n//!TEXTURE\n//!SOURCE SearchTex.dds\n//!FORMAT R8_UNORM\nTexture2D searchTex;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState PointSampler;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState LinearSampler;\n\n\n//!COMMON\n\n#define SMAA_RT_METRICS float4(GetInputPt(), GetInputSize())\n#define SMAA_LINEAR_SAMPLER LinearSampler\n#define SMAA_POINT_SAMPLER PointSampler\n#define SMAA_PRESET_HIGH\n#include \"SMAA.hlsli\"\n\n//!PASS 1\n//!DESC Luma Edge Detection\n//!STYLE PS\n//!IN INPUT\n//!OUT edgesTex\n\nfloat2 Pass1(float2 pos) {\n\treturn SMAALumaEdgeDetectionPS(pos, INPUT);\n}\n\n//!PASS 2\n//!DESC Blending Weight Calculation\n//!STYLE PS\n//!IN edgesTex, areaTex, searchTex\n//!OUT blendTex\n\nfloat4 Pass2(float2 pos) {\n\treturn SMAABlendingWeightCalculationPS(pos, edgesTex, areaTex, searchTex, 0);\n}\n\n//!PASS 3\n//!DESC Neighborhood Blending\n//!STYLE PS\n//!IN INPUT, blendTex\n//!OUT OUTPUT\n\nfloat4 Pass3(float2 pos) {\n\treturn SMAANeighborhoodBlendingPS(pos, INPUT, blendTex);\n}\n"
  },
  {
    "path": "src/Effects/SMAA/SMAA_Low.hlsl",
    "content": "//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME SMAA_0\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8_UNORM\nTexture2D edgesTex;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D blendTex;\n\n//!TEXTURE\n//!SOURCE AreaTex.dds\n//!FORMAT R8G8B8A8_UNORM\nTexture2D areaTex;\n\n//!TEXTURE\n//!SOURCE SearchTex.dds\n//!FORMAT R8_UNORM\nTexture2D searchTex;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState PointSampler;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState LinearSampler;\n\n\n//!COMMON\n\n#define SMAA_RT_METRICS float4(GetInputPt(), GetInputSize())\n#define SMAA_LINEAR_SAMPLER LinearSampler\n#define SMAA_POINT_SAMPLER PointSampler\n#define SMAA_PRESET_LOW\n#include \"SMAA.hlsli\"\n\n//!PASS 1\n//!DESC Luma Edge Detection\n//!STYLE PS\n//!IN INPUT\n//!OUT edgesTex\n\nfloat2 Pass1(float2 pos) {\n\treturn SMAALumaEdgeDetectionPS(pos, INPUT);\n}\n\n//!PASS 2\n//!DESC Blending Weight Calculation\n//!STYLE PS\n//!IN edgesTex, areaTex, searchTex\n//!OUT blendTex\n\nfloat4 Pass2(float2 pos) {\n\treturn SMAABlendingWeightCalculationPS(pos, edgesTex, areaTex, searchTex, 0);\n}\n\n//!PASS 3\n//!DESC Neighborhood Blending\n//!STYLE PS\n//!IN INPUT, blendTex\n//!OUT OUTPUT\n\nfloat4 Pass3(float2 pos) {\n\treturn SMAANeighborhoodBlendingPS(pos, INPUT, blendTex);\n}\n"
  },
  {
    "path": "src/Effects/SMAA/SMAA_Medium.hlsl",
    "content": "//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME SMAA_1\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8_UNORM\nTexture2D edgesTex;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D blendTex;\n\n//!TEXTURE\n//!SOURCE AreaTex.dds\n//!FORMAT R8G8B8A8_UNORM\nTexture2D areaTex;\n\n//!TEXTURE\n//!SOURCE SearchTex.dds\n//!FORMAT R8_UNORM\nTexture2D searchTex;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState PointSampler;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState LinearSampler;\n\n\n//!COMMON\n\n#define SMAA_RT_METRICS float4(GetInputPt(), GetInputSize())\n#define SMAA_LINEAR_SAMPLER LinearSampler\n#define SMAA_POINT_SAMPLER PointSampler\n#define SMAA_PRESET_MEDIUM\n#include \"SMAA.hlsli\"\n\n//!PASS 1\n//!DESC Luma Edge Detection\n//!STYLE PS\n//!IN INPUT\n//!OUT edgesTex\n\nfloat2 Pass1(float2 pos) {\n\treturn SMAALumaEdgeDetectionPS(pos, INPUT);\n}\n\n//!PASS 2\n//!DESC Blending Weight Calculation\n//!STYLE PS\n//!IN edgesTex, areaTex, searchTex\n//!OUT blendTex\n\nfloat4 Pass2(float2 pos) {\n\treturn SMAABlendingWeightCalculationPS(pos, edgesTex, areaTex, searchTex, 0);\n}\n\n//!PASS 3\n//!DESC Neighborhood Blending\n//!STYLE PS\n//!IN INPUT, blendTex\n//!OUT OUTPUT\n\nfloat4 Pass3(float2 pos) {\n\treturn SMAANeighborhoodBlendingPS(pos, INPUT, blendTex);\n}\n"
  },
  {
    "path": "src/Effects/SMAA/SMAA_Ultra.hlsl",
    "content": "//!MAGPIE EFFECT\n//!VERSION 4\n//!SORT_NAME SMAA_3\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16_FLOAT\nTexture2D edgesTex;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D blendTex;\n\n//!TEXTURE\n//!SOURCE AreaTex.dds\n//!FORMAT R8G8B8A8_UNORM\nTexture2D areaTex;\n\n//!TEXTURE\n//!SOURCE SearchTex.dds\n//!FORMAT R8_UNORM\nTexture2D searchTex;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState PointSampler;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState LinearSampler;\n\n\n//!COMMON\n\n#define SMAA_RT_METRICS float4(GetInputPt(), GetInputSize())\n#define SMAA_LINEAR_SAMPLER LinearSampler\n#define SMAA_POINT_SAMPLER PointSampler\n#define SMAA_PRESET_ULTRA\n#include \"SMAA.hlsli\"\n\n//!PASS 1\n//!DESC Luma Edge Detection\n//!STYLE PS\n//!IN INPUT\n//!OUT edgesTex\n\nfloat2 Pass1(float2 pos) {\n\treturn SMAALumaEdgeDetectionPS(pos, INPUT);\n}\n\n//!PASS 2\n//!DESC Blending Weight Calculation\n//!STYLE PS\n//!IN edgesTex, areaTex, searchTex\n//!OUT blendTex\n\nfloat4 Pass2(float2 pos) {\n\treturn SMAABlendingWeightCalculationPS(pos, edgesTex, areaTex, searchTex, 0);\n}\n\n//!PASS 3\n//!DESC Neighborhood Blending\n//!STYLE PS\n//!IN INPUT, blendTex\n//!OUT OUTPUT\n\nfloat4 Pass3(float2 pos) {\n\treturn SMAANeighborhoodBlendingPS(pos, INPUT, blendTex);\n}\n"
  },
  {
    "path": "src/Effects/SSimDownscaler.hlsl",
    "content": "// 基于感知的图像缩小算法\n// 移植自 https://gist.github.com/igv/36508af3ffc84410fe39761d6969be10\n// 原始文件使用了大量 mpv 的“特性”，因此可能存在移植错误。如果你熟悉 mpv hook，请帮助我们改进\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!PARAMETER\n//!LABEL Oversharp\n//!DEFAULT 1\n//!MIN 1\n//!MAX 3\n//!STEP 0.1\nfloat oversharp;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT OUTPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D L2;\n\n//!TEXTURE\n//!WIDTH OUTPUT_WIDTH\n//!HEIGHT OUTPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D L2_2;\n\n//!TEXTURE\n//!WIDTH OUTPUT_WIDTH\n//!HEIGHT OUTPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D MR;\n\n//!TEXTURE\n//!WIDTH OUTPUT_WIDTH\n//!HEIGHT OUTPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D POSTKERNEL;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam1;\n\n\n//!PASS 1\n//!DESC CatumllRom\n//!STYLE PS\n//!IN INPUT\n//!OUT POSTKERNEL\n\n// 模拟 mpv 的内置缩放（CatmullRom）\n// Samples a texture with Catmull-Rom filtering, using 9 texture fetches instead of 16.\n// See http://vec3.ca/bicubic-filtering-in-fewer-taps/ for more details\nfloat4 Pass1(float2 pos) {\n\tfloat2 inputSize = GetInputSize();\n\tfloat2 inputPt = GetInputPt();\n\n    // We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding\n    // down the sample location to get the exact center of our \"starting\" texel. The starting texel will be at\n    // location [1, 1] in the grid, where [0, 0] is the top left corner.\n\tfloat2 samplePos = pos * inputSize;\n\tfloat2 texPos1 = floor(samplePos - 0.5f) + 0.5f;\n\n    // Compute the fractional offset from our starting texel to our original sample location, which we'll\n    // feed into the Catmull-Rom spline function to get our filter weights.\n\tfloat2 f = samplePos - texPos1;\n\n    // Compute the Catmull-Rom weights using the fractional offset that we calculated earlier.\n    // These equations are pre-expanded based on our knowledge of where the texels will be located,\n    // which lets us avoid having to evaluate a piece-wise function.\n\tfloat2 w0 = f * (-0.5f + f * (1.0f - 0.5f * f));\n\tfloat2 w1 = 1.0f + f * f * (-2.5f + 1.5f * f);\n\tfloat2 w2 = f * (0.5f + f * (2.0f - 1.5f * f));\n\tfloat2 w3 = f * f * (-0.5f + 0.5f * f);\n\n    // Work out weighting factors and sampling offsets that will let us use bilinear filtering to\n    // simultaneously evaluate the middle 2 samples from the 4x4 grid.\n\tfloat2 w12 = w1 + w2;\n\tfloat2 offset12 = w2 / (w1 + w2);\n\n    // Compute the final UV coordinates we'll use for sampling the texture\n\tfloat2 texPos0 = texPos1 - 1;\n\tfloat2 texPos3 = texPos1 + 2;\n\tfloat2 texPos12 = texPos1 + offset12;\n\n\ttexPos0 *= inputPt;\n\ttexPos3 *= inputPt;\n\ttexPos12 *= inputPt;\n\n\tfloat4 result = 0.0f;\n\tresult += INPUT.SampleLevel(sam1, float2(texPos0.x, texPos0.y), 0) * w0.x * w0.y;\n\tresult += INPUT.SampleLevel(sam1, float2(texPos12.x, texPos0.y), 0) * w12.x * w0.y;\n\tresult += INPUT.SampleLevel(sam1, float2(texPos3.x, texPos0.y), 0) * w3.x * w0.y;\n\n\tresult += INPUT.SampleLevel(sam1, float2(texPos0.x, texPos12.y), 0) * w0.x * w12.y;\n\tresult += INPUT.SampleLevel(sam1, float2(texPos12.x, texPos12.y), 0) * w12.x * w12.y;\n\tresult += INPUT.SampleLevel(sam1, float2(texPos3.x, texPos12.y), 0) * w3.x * w12.y;\n\n\tresult += INPUT.SampleLevel(sam1, float2(texPos0.x, texPos3.y), 0) * w0.x * w3.y;\n\tresult += INPUT.SampleLevel(sam1, float2(texPos12.x, texPos3.y), 0) * w12.x * w3.y;\n\tresult += INPUT.SampleLevel(sam1, float2(texPos3.x, texPos3.y), 0) * w3.x * w3.y;\n\n\treturn result;\n}\n\n//!PASS 2\n//!DESC L2 pass 1\n//!STYLE PS\n//!IN INPUT\n//!OUT L2\n\n#define MN(B,C,x)   (x < 1.0 ? ((2.-1.5*B-(C))*x + (-3.+2.*B+C))*x*x + (1.-(B)/3.) : (((-(B)/6.-(C))*x + (B+5.*C))*x + (-2.*B-8.*C))*x+((4./3.)*B+4.*C))\n#define Kernel(x)   MN(0.0f, 0.5f, abs(x))\n#define taps        2.0f\n\n\nfloat4 Pass2(float2 pos) {\n\tconst float inputPtY = GetInputPt().y;\n\tconst uint inputHeight = GetInputSize().y;\n\tconst float outputPtY = GetOutputPt().y;\n\tconst uint outputHeight = GetOutputSize().y;\n\n\tconst int low = (int)ceil((pos.y - taps * outputPtY) * inputHeight - 0.5f);\n\tconst int high = (int)floor((pos.y + taps * outputPtY) * inputHeight - 0.5f);\n\n\tfloat W = 0;\n\tfloat3 avg = 0;\n\tconst float baseY = pos.y;\n\n\tfor (int k = low; k <= high; k++) {\n\t\tpos.y = inputPtY * (k + 0.5f);\n\t\tfloat rel = (pos.y - baseY) * outputHeight;\n\t\tfloat w = Kernel(rel);\n\n\t\tfloat3 tex = INPUT.SampleLevel(sam, pos, 0).rgb;\n\t\tavg += w * tex * tex;\n\t\tW += w;\n\t}\n\tavg /= W;\n\n\treturn float4(avg, 1);\n}\n\n\n//!PASS 3\n//!DESC L2 pass 2\n//!STYLE PS\n//!IN L2\n//!OUT L2_2\n\n#define MN(B,C,x)   (x < 1.0 ? ((2.-1.5*B-(C))*x + (-3.+2.*B+C))*x*x + (1.-(B)/3.) : (((-(B)/6.-(C))*x + (B+5.*C))*x + (-2.*B-8.*C))*x+((4./3.)*B+4.*C))\n#define Kernel(x)   MN(0.0, 0.5, abs(x))\n#define taps        2.0\n\n\nfloat4 Pass3(float2 pos) {\n\tconst float inputPtX = GetInputPt().x;\n\tconst uint inputWidth = GetInputSize().x;\n\tconst float outputPtX = GetOutputPt().x;\n\tconst uint outputWidth = GetOutputSize().x;\n\n\tconst int low = (int)ceil((pos.x - taps * outputPtX) * inputWidth - 0.5f);\n\tconst int high = (int)floor((pos.x + taps * outputPtX) * inputWidth - 0.5f);\n\n\tfloat W = 0;\n\tfloat3 avg = 0;\n\tconst float baseX = pos.x;\n\n\tfor (int k = low; k <= high; k++) {\n\t\tpos.x = inputPtX * (k + 0.5f);\n\t\tfloat rel = (pos.x - baseX) * outputWidth;\n\t\tfloat w = Kernel(rel);\n\n\t\tavg += w * L2.SampleLevel(sam, pos, 0).rgb;\n\t\tW += w;\n\t}\n\tavg /= W;\n\n\treturn float4(avg, 1);\n}\n\n\n//!PASS 4\n//!DESC mean & R\n//!IN L2_2, POSTKERNEL\n//!OUT MR\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n#define sigma_nsq   10. / (255.*255.)\n#define locality    2.0\n\n#define Kernel(x)   pow(1.0 / locality, abs(x))\n// taps 需为奇数\n#define taps        3\n\n#define Luma(rgb)   ( dot(rgb, float3(0.2126, 0.7152, 0.0722)) )\n\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 outputPt = GetOutputPt();\n\tuint i, j;\n\n\tfloat3 src1[taps + 1][taps + 1];\n\tfloat3 src2[taps + 1][taps + 1];\n\t[unroll]\n\tfor (i = 0; i < taps; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j < taps; j += 2) {\n\t\t\tconst float2 tpos = (int2(gxy + uint2(i, j)) - taps / 2 + 1) * outputPt;\n\t\t\tfloat4 sr = POSTKERNEL.GatherRed(sam, tpos);\n\t\t\tfloat4 sg = POSTKERNEL.GatherGreen(sam, tpos);\n\t\t\tfloat4 sb = POSTKERNEL.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc1[i][j] = float3(sr.w, sg.w, sb.w);\n\t\t\tsrc1[i][j + 1] = float3(sr.x, sg.x, sb.x);\n\t\t\tsrc1[i + 1][j] = float3(sr.z, sg.z, sb.z);\n\t\t\tsrc1[i + 1][j + 1] = float3(sr.y, sg.y, sb.y);\n\n\t\t\tsr = L2_2.GatherRed(sam, tpos);\n\t\t\tsg = L2_2.GatherGreen(sam, tpos);\n\t\t\tsb = L2_2.GatherBlue(sam, tpos);\n\n\t\t\tsrc2[i][j] = float3(sr.w, sg.w, sb.w);\n\t\t\tsrc2[i][j + 1] = float3(sr.x, sg.x, sb.x);\n\t\t\tsrc2[i + 1][j] = float3(sr.z, sg.z, sb.z);\n\t\t\tsrc2[i + 1][j + 1] = float3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\tfloat kernels[taps];\n\t[unroll]\n\tfor (i = 0; i < taps; ++i) {\n\t\tkernels[i] = Kernel((int)i - taps / 2);\n\t}\n\n\t[unroll]\n\tfor (i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 1; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i, j);\n\n\t\t\tif (i != 0 || j != 0) {\n\t\t\t\tif (destPos.x >= outputSize.x || destPos.y >= outputSize.y) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfloat W = 0.0;\n\t\t\tfloat3x3 avg = 0;\n\n\t\t\t[unroll]\n\t\t\tfor (int i1 = 0; i1 < taps; ++i1) {\n\t\t\t\tfloat W1 = 0;\n\t\t\t\tfloat3x3 avg1 = 0;\n\n\t\t\t\t[unroll]\n\t\t\t\tfor (int j1 = 0; j1 < taps; ++j1) {\n\t\t\t\t\tfloat3 L = src1[j1 + i][i1 + j];\n\t\t\t\t\tavg1 += kernels[j1] * float3x3(L, L * L, src2[j1 + i][i1 + j]);\n\t\t\t\t\tW1 += kernels[j1];\n\t\t\t\t}\n\t\t\t\tavg1 /= W1;\n\n\t\t\t\tavg += kernels[i1] * avg1;\n\t\t\t\tW += kernels[i1];\n\t\t\t}\n\t\t\tavg /= W;\n\n\t\t\tfloat Sl = Luma(max(avg[1] - avg[0] * avg[0], 0.));\n\t\t\tfloat Sh = Luma(max(avg[2] - avg[0] * avg[0], 0.));\n\t\t\tMR[destPos] = float4(avg[0], lerp(sqrt((Sh + sigma_nsq) / (Sl + sigma_nsq)) * oversharp, clamp(Sh / Sl, 0., 1.), int(Sl > Sh)));\n\t\t}\n\t}\n}\n\n\n//!PASS 5\n//!DESC final pass\n//!IN MR, POSTKERNEL\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n#define locality    2.0f\n\n#define Kernel(x)   pow(1.0f / locality, abs(x))\n// taps 需为奇数\n#define taps        3\n\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tconst uint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\t\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 outputPt = GetOutputPt();\n\tuint i, j;\n\n\tfloat4 src1[taps + 1][taps + 1];\n\t[unroll]\n\tfor (i = 0; i < taps; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j < taps; j += 2) {\n\t\t\tconst float2 tpos = (int2(gxy + uint2(i, j)) - taps / 2 + 1) * outputPt;\n\t\t\tconst float4 sr = MR.GatherRed(sam, tpos);\n\t\t\tconst float4 sg = MR.GatherGreen(sam, tpos);\n\t\t\tconst float4 sb = MR.GatherBlue(sam, tpos);\n\t\t\tconst float4 sa = MR.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc1[i][j] = float4(sr.w, sg.w, sb.w, sa.w);\n\t\t\tsrc1[i][j + 1] = float4(sr.x, sg.x, sb.x, sa.x);\n\t\t\tsrc1[i + 1][j] = float4(sr.z, sg.z, sb.z, sa.z);\n\t\t\tsrc1[i + 1][j + 1] = float4(sr.y, sg.y, sb.y, sa.y);\n\t\t}\n\t}\n\n\tfloat3 src2[2][2];\n\tconst float2 tpos = (gxy + 1) * outputPt;\n\tconst float4 sr = POSTKERNEL.GatherRed(sam, tpos);\n\tconst float4 sg = POSTKERNEL.GatherGreen(sam, tpos);\n\tconst float4 sb = POSTKERNEL.GatherBlue(sam, tpos);\n\n\t// w z\n\t// x y\n\tsrc2[0][0] = float3(sr.w, sg.w, sb.w);\n\tsrc2[0][1] = float3(sr.x, sg.x, sb.x);\n\tsrc2[1][0] = float3(sr.z, sg.z, sb.z);\n\tsrc2[1][1] = float3(sr.y, sg.y, sb.y);\n\n\tfloat kernels[taps];\n\t[unroll]\n\tfor (i = 0; i < taps; ++i) {\n\t\tkernels[i] = Kernel((int)i - taps / 2);\n\t}\n\n\t[unroll]\n\tfor (i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 1; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i, j);\n\n\t\t\tfloat W = 0;\n\t\t\tfloat3x3 avg = 0;\n\n\t\t\t[unroll]\n\t\t\tfor (int i1 = 0; i1 < taps; ++i1) {\n\t\t\t\tfloat W1 = 0;\n\t\t\t\tfloat3x3 avg1 = 0;\n\n\t\t\t\t[unroll]\n\t\t\t\tfor (int j1 = 0; j1 < taps; ++j1) {\n\t\t\t\t\tfloat4 MRc = src1[j1 + i][i1 + j];\n\t\t\t\t\tavg1 += kernels[j1] * float3x3(MRc.a * MRc.rgb, MRc.rgb, MRc.aaa);\n\t\t\t\t\tW1 += kernels[j1];\n\t\t\t\t}\n\t\t\t\tavg1 /= W1;\n\n\t\t\t\tavg += kernels[i1] * avg1;\n\t\t\t\tW += kernels[i1];\n\t\t\t}\n\t\t\tavg /= W;\n\n\t\t\tOUTPUT[destPos] = float4(avg[1] + avg[2] * src2[i][j] - avg[0], 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/Sharpen/AdaptiveSharpen.hlsl",
    "content": "// 自适应锐化算法\n// 移植自 https://github.com/libretro/slang-shaders/blob/master/sharpen/shaders/adaptive-sharpen.slang\n// \n// Adaptive sharpen - version 2015-05-15 - (requires ps >= 3.0)\n// Tuned for use post resize, EXPECTS FULL RANGE GAMMA LIGHT\n\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!LABEL Sharpness\n//!DEFAULT 0.8\n//!MIN 0\n//!MAX 2\n//!STEP 0.01\n\n// Main control of sharpening strength [>0]\n// 0.3 <-> 2.0 is a reasonable range of values\nfloat curveHeight;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n// Defined values under this row are \"optimal\" DO NOT CHANGE IF YOU DO NOT KNOW WHAT YOU ARE DOING!\n\n#define curveslope      (curveHeight*1.5f)   // Sharpening curve slope, edge region\n#define D_overshoot     0.016f                // Max dark overshoot before max compression\n#define D_comp_ratio    0.250f                // Max compression ratio, dark overshoot (1/0.25=4x)\n#define L_overshoot     0.004f                // Max light overshoot before max compression\n#define L_comp_ratio    0.167f                // Max compression ratio, light overshoot (1/0.167=6x)\n#define max_scale_lim   10.0f                 // Abs change before max compression (1/10=±10%)\n\n// Colour to greyscale, fast approx gamma\nfloat CtG(float3 RGB) { return  sqrt((1.0f / 3.0f) * ((RGB * RGB).r + (RGB * RGB).g + (RGB * RGB).b)); }\n\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tint i, j;\n\n\tfloat4 src[8][8];\n\t[unroll]\n\tfor (i = 0; i <= 6; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 6; j += 2) {\n\t\t\t// 四角共 16 个纹素无需采样\n\t\t\tif ((i == 0 && j == 0) || (i == 6 && j == 0) || (i == 0 && j == 6) || (i == 6 && j == 6)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfloat2 tpos = ((int2)gxy + int2(i, j) - 2) * inputPt;\n\t\t\tconst float4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst float4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst float4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j].rgb = float3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j].w = CtG(src[i][j].rgb);\n\t\t\tsrc[i][j + 1].rgb = float3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i][j + 1].w = CtG(src[i][j + 1].rgb);\n\t\t\tsrc[i + 1][j].rgb = float3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j].w = CtG(src[i + 1][j].rgb);\n\t\t\tsrc[i + 1][j + 1].rgb = float3(sr.y, sg.y, sb.y);\n\t\t\tsrc[i + 1][j + 1].w = CtG(src[i + 1][j + 1].rgb);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 0; i <= 1; ++i) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 1; ++j) {\n\t\t\tconst uint2 destPos = gxy + uint2(i, j);\n\n\t\t\tfloat2 pos = (destPos + 0.5f) * inputPt;\n\n\t\t\t// Get points and saturate out of range values (BTB & WTW)\n\t\t\t// [                c22               ]\n\t\t\t// [           c24, c9,  c23          ]\n\t\t\t// [      c21, c1,  c2,  c3, c18      ]\n\t\t\t// [ c19, c10, c4,  c0,  c5, c11, c16 ]\n\t\t\t// [      c20, c6,  c7,  c8, c17      ]\n\t\t\t// [           c15, c12, c14          ]\n\t\t\t// [                c13               ]\n\n\t\t\t// Blur, gauss 3x3\n\t\t\tfloat3\tblur = (2 * (src[i + 3][j + 2].rgb + src[i + 2][j + 3].rgb + src[i + 4][j + 3].rgb + src[i + 3][j + 4].rgb) + (src[i + 2][j + 2].rgb + src[i + 4][j + 2].rgb + src[i + 2][j + 4].rgb + src[i + 4][j + 4].rgb) + 4 * src[i + 3][j + 3].rgb) / 16;\n\t\t\tfloat\tblur_Y = (blur.r * (1.0 / 3.0) + blur.g * (1.0 / 3.0) + blur.b * (1.0 / 3.0));\n\n\t\t\t// Edge detection\n\t\t\t// Matrix, relative weights\n\t\t\t// [           1          ]\n\t\t\t// [       4,  4,  4      ]\n\t\t\t// [   1,  4,  4,  4,  1  ]\n\t\t\t// [       4,  4,  4      ]\n\t\t\t// [           1          ]\n\t\t\tfloat\tedge = length(abs(blur - src[i + 3][j + 3].rgb) + abs(blur - src[i + 2][j + 2].rgb) + abs(blur - src[i + 3][j + 2].rgb) + abs(blur - src[i + 4][j + 2].rgb)\n\t\t\t\t+ abs(blur - src[i + 2][j + 3].rgb) + abs(blur - src[i + 4][j + 3].rgb) + abs(blur - src[i + 2][j + 4].rgb) + abs(blur - src[i + 3][j + 4].rgb) + abs(blur - src[i + 4][j + 4].rgb)\n\t\t\t\t+ 0.25 * (abs(blur - src[i + 3][j + 1].rgb) + abs(blur - src[i + 1][j + 3].rgb) + abs(blur - src[i + 5][j + 3].rgb) + abs(blur - src[i + 3][j + 5].rgb))) * (1.0 / 3.0);\n\n\t\t\t// Edge detect contrast compression, center = 0.5\n\t\t\tedge *= min((0.8 + 2.7 * pow(2, (-7.4 * blur_Y))), 3.2);\n\n\t\t\t// RGB to greyscale\n\t\t\tfloat\tc0_Y = src[i + 3][j + 3].w;\n\n\t\t\tfloat\tkernel[25] = { c0_Y,  src[i + 2][j + 2].w, src[i + 3][j + 2].w, src[i + 4][j + 2].w,src[i + 2][j + 3].w, src[i + 4][j + 3].w, src[i + 2][j + 4].w, src[i + 3][j + 4].w, src[i + 4][j + 4].w,\n\t\t\t\t\t\t\t\t\tsrc[i + 3][j + 1].w, src[i + 1][j + 3].w, src[i + 5][j + 3].w, src[i + 3][j + 5].w, src[i + 3][j + 6].w, src[i + 4][j + 5].w, src[i + 2][j + 5].w, src[i + 6][j + 3].w,\n\t\t\t\t\t\t\t\t\tsrc[i + 5][j + 4].w, src[i + 5][j + 2].w, src[i][j + 3].w, src[i + 1][j + 4].w, src[i + 1][j + 2].w, src[i + 3][j].w, src[i + 4][j + 1].w, src[i + 2][j + 1].w };\n\n\t\t\t// Partial laplacian outer pixel weighting scheme\n\t\t\tfloat\tmdiff_c0 = 0.03 + 4 * (abs(kernel[0] - kernel[2]) + abs(kernel[0] - kernel[4])\n\t\t\t\t+ abs(kernel[0] - kernel[5]) + abs(kernel[0] - kernel[7])\n\t\t\t\t+ 0.25 * (abs(kernel[0] - kernel[1]) + abs(kernel[0] - kernel[3])\n\t\t\t\t\t+ abs(kernel[0] - kernel[6]) + abs(kernel[0] - kernel[8])));\n\n\t\t\tfloat\tmdiff_c9 = (abs(kernel[9] - kernel[2]) + abs(kernel[9] - kernel[24])\n\t\t\t\t+ abs(kernel[9] - kernel[23]) + abs(kernel[9] - kernel[22])\n\t\t\t\t+ 0.5 * (abs(kernel[9] - kernel[1]) + abs(kernel[9] - kernel[3])));\n\n\t\t\tfloat\tmdiff_c10 = (abs(kernel[10] - kernel[20]) + abs(kernel[10] - kernel[19])\n\t\t\t\t+ abs(kernel[10] - kernel[21]) + abs(kernel[10] - kernel[4])\n\t\t\t\t+ 0.5 * (abs(kernel[10] - kernel[1]) + abs(kernel[10] - kernel[6])));\n\n\t\t\tfloat\tmdiff_c11 = (abs(kernel[11] - kernel[17]) + abs(kernel[11] - kernel[5])\n\t\t\t\t+ abs(kernel[11] - kernel[18]) + abs(kernel[11] - kernel[16])\n\t\t\t\t+ 0.5 * (abs(kernel[11] - kernel[3]) + abs(kernel[11] - kernel[8])));\n\n\t\t\tfloat\tmdiff_c12 = (abs(kernel[12] - kernel[13]) + abs(kernel[12] - kernel[15])\n\t\t\t\t+ abs(kernel[12] - kernel[7]) + abs(kernel[12] - kernel[14])\n\t\t\t\t+ 0.5 * (abs(kernel[12] - kernel[6]) + abs(kernel[12] - kernel[8])));\n\n\t\t\tfloat4\tweights = float4((min((mdiff_c0 / mdiff_c9), 2.0)), (min((mdiff_c0 / mdiff_c10), 2.0)),\n\t\t\t\t(min((mdiff_c0 / mdiff_c11), 2.0)), (min((mdiff_c0 / mdiff_c12), 2.0)));\n\n\t\t\t// Negative laplace matrix\n\t\t\t // Matrix, relative weights, *Varying 0<->8\n\t\t\t // [          8*         ]\n\t\t\t // [      4,  1,  4      ]\n\t\t\t // [  8*, 1,      1,  8* ]\n\t\t\t // [      4,  1,  4      ]\n\t\t\t // [          8*         ]\n\t\t\tfloat\tneg_laplace = (0.25 * (kernel[2] + kernel[4] + kernel[5] + kernel[7])\n\t\t\t\t+ (kernel[1] + kernel[3] + kernel[6] + kernel[8])\n\t\t\t\t+ ((kernel[9] * weights.x) + (kernel[10] * weights.y)\n\t\t\t\t\t+ (kernel[11] * weights.z) + (kernel[12] * weights.w)))\n\t\t\t\t/ (5 + weights.x + weights.y + weights.z + weights.w);\n\n\t\t\t// Compute sharpening magnitude function, x = edge mag, y = laplace operator mag\n\t\t\tfloat\tsharpen_val = 0.01 + (curveHeight / (curveslope * pow(edge, 3.5) + 0.5))\n\t\t\t\t- (curveHeight / (8192 * pow((edge * 2.2), 4.5) + 0.5));\n\n\t\t\t// Calculate sharpening diff and scale\n\t\t\tfloat\tsharpdiff = (c0_Y - neg_laplace) * (sharpen_val * 0.8);\n\n\t\t\t// Calculate local near min & max, partial cocktail sort (No branching!)\n\t\t\t[unroll]\n\t\t\tfor (int k = 0; k < 2; ++k) {\n\t\t\t\t[unroll]\n\t\t\t\tfor (int i1 = 1 + k; i1 < 25 - k; ++i1) {\n\t\t\t\t\tfloat temp = kernel[i1 - 1];\n\t\t\t\t\tkernel[i1 - 1] = min(kernel[i1 - 1], kernel[i1]);\n\t\t\t\t\tkernel[i1] = max(temp, kernel[i1]);\n\t\t\t\t}\n\n\t\t\t\t[unroll]\n\t\t\t\tfor (int i2 = 23 - k; i2 > k; --i2) {\n\t\t\t\t\tfloat temp = kernel[i2 - 1];\n\t\t\t\t\tkernel[i2 - 1] = min(kernel[i2 - 1], kernel[i2]);\n\t\t\t\t\tkernel[i2] = max(temp, kernel[i2]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfloat\tnmax = max(((kernel[23] + kernel[24]) / 2), c0_Y);\n\t\t\tfloat\tnmin = min(((kernel[0] + kernel[1]) / 2), c0_Y);\n\n\t\t\t// Calculate tanh scale factor, pos/neg\n\t\t\tfloat\tnmax_scale = max((1 / ((nmax - c0_Y) + L_overshoot)), max_scale_lim);\n\t\t\tfloat\tnmin_scale = max((1 / ((c0_Y - nmin) + D_overshoot)), max_scale_lim);\n\n\t\t\t// Soft limit sharpening with tanh, mix to control maximum compression\n\t\t\tsharpdiff = lerp((tanh((max(sharpdiff, 0.0)) * nmax_scale) / nmax_scale), (max(sharpdiff, 0.0)), L_comp_ratio)\n\t\t\t\t+ lerp((tanh((min(sharpdiff, 0.0)) * nmin_scale) / nmin_scale), (min(sharpdiff, 0.0)), D_comp_ratio);\n\n\t\t\tOUTPUT[destPos] = float4(src[i + 3][j + 3].rgb + sharpdiff, 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/Sharpen/FineSharp.hlsl",
    "content": "// FineSharp\n// 移植自 https://forum.doom9.org/showthread.php?t=171346\n\n// This is the FineSharp avisynth script by Didée converted to MPC - HC shaders.It was written for madVR(need the 16 - bit accuracy in the shader chain), but also works in MPDN.\n//\n// The sharpener makes no attempt to filter noise or source artefacts and will sharpen those too.So denoise / clean your source first if necessary.Probably won't work very well on a really old GPU, the weakest I have tried is a GTX 560 at 1080p 60fps with no problems.\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!DEFAULT 2.0\n//!MIN 0\n//!MAX 8\n//!STEP 0.01\n\n// Strength of sharpening, 0.0 up to 8.0 or more. If you change this, then alter cstr below\nfloat sstr;\n\n//!PARAMETER\n//!DEFAULT 0.9\n//!MIN 0\n//!MAX 2\n//!STEP 0.01\n\n// Strength of equalisation, 0.0 to 2.0 or more. Suggested settings for cstr based on sstr value: \n// sstr=0->cstr=0, sstr=0.5->cstr=0.1, 1.0->0.6, 2.0->0.9, 2.5->1.00, 3.0->1.09, 3.5->1.15, 4.0->1.19, 8.0->1.249, 255.0->1.5\nfloat cstr;\n\n//!PARAMETER\n//!DEFAULT 0.19\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\n\n// Strength of XSharpen-style final sharpening, 0.0 to 1.0 (but, better don't go beyond 0.249 ...)\nfloat xstr;\n\n//!PARAMETER\n//!DEFAULT 0.25\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\n\n// Repair artefacts from final sharpening, 0.0 to 1.0 or more (-Vit- addition to original script)\nfloat xrep;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH OUTPUT_WIDTH\n//!HEIGHT OUTPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex1;\n\n//!TEXTURE\n//!WIDTH OUTPUT_WIDTH\n//!HEIGHT OUTPUT_HEIGHT\n//!FORMAT R16G16B16A16_FLOAT\nTexture2D tex2;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!DESC RemoveGrain11\n//!IN INPUT\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n\n#define RGBtoYUV(Kb,Kr) float3x3(float3(Kr, 1 - Kr - Kb, Kb), float3(-Kr, Kr + Kb - 1, 1 - Kb) / (2*(1 - Kb)), float3(1 - Kr, Kr + Kb - 1, -Kb) / (2*(1 - Kr)))\nstatic const float3x3 RGBtoYUV = GetInputSize().y <= 576 ? RGBtoYUV(0.114, 0.299) : RGBtoYUV(0.0722, 0.2126);\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tfloat3 src[4][4];\n\t[unroll]\n\tfor (i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst float4 sr = INPUT.GatherRed(sam, tpos);\n\t\t\tconst float4 sg = INPUT.GatherGreen(sam, tpos);\n\t\t\tconst float4 sb = INPUT.GatherBlue(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = mul(RGBtoYUV, float3(sr.w, sg.w, sb.w)) + float3(0, 0.5, 0.5);\n\t\t\tsrc[i][j + 1] = mul(RGBtoYUV, float3(sr.x, sg.x, sb.x)) + float3(0, 0.5, 0.5);\n\t\t\tsrc[i + 1][j] = mul(RGBtoYUV, float3(sr.z, sg.z, sb.z)) + float3(0, 0.5, 0.5);\n\t\t\tsrc[i + 1][j + 1] = mul(RGBtoYUV, float3(sr.y, sg.y, sb.y)) + float3(0, 0.5, 0.5);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tfloat4 o = src[i][j].rgbr;\n\n\t\t\to.x += o.x;\n\t\t\to.x += src[i][j - 1].x + src[i - 1][j].x + src[i + 1][j].x + src[i][j + 1].x;\n\t\t\to.x += o.x;\n\t\t\to.x += src[i - 1][j - 1].x + src[i + 1][j - 1].x + src[i - 1][j + 1].x + src[i + 1][j + 1].x;\n\t\t\to.x *= 0.0625f;\n\n\t\t\ttex1[gxy + uint2(i - 1, j - 1)] = o;\n\t\t}\n\t}\n}\n\n\n//!PASS 2\n//!DESC RemoveGrain4\n//!IN tex1\n//!OUT tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n// The variables passed to these median macros will be swapped around as part of the process. A temporary variable t of the same type is also required.\n#define sort(a1,a2)                         (t=min(a1,a2),a2=max(a1,a2),a1=t)\n#define median3(a1,a2,a3)                   (sort(a2,a3),sort(a1,a2),min(a2,a3))\n#define median5(a1,a2,a3,a4,a5)             (sort(a1,a2),sort(a3,a4),sort(a1,a3),sort(a2,a4),median3(a2,a3,a5))\n#define median9(a1,a2,a3,a4,a5,a6,a7,a8,a9) (sort(a1,a2),sort(a3,a4),sort(a5,a6),sort(a7,a8),\\\n\t\t\t\t\t\t\t\t\t\t\t sort(a1,a3),sort(a5,a7),sort(a1,a5),sort(a3,a5),sort(a3,a7),\\\n\t\t\t\t\t\t\t\t\t\t\t sort(a2,a4),sort(a6,a8),sort(a4,a8),sort(a4,a6),sort(a2,a6),median5(a2,a4,a5,a7,a9))\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tfloat4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst float4 sr = tex1.GatherRed(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j].r = sr.w;\n\t\t\tsrc[i][j + 1].r = sr.x;\n\t\t\tsrc[i + 1][j].r = sr.z;\n\t\t\tsrc[i + 1][j + 1].r = sr.y;\n\t\t}\n\t}\n\n\tfloat2 tpos = (gxy + 1) * inputPt;\n\tconst float4 sg = tex1.GatherGreen(sam, tpos);\n\tconst float4 sb = tex1.GatherBlue(sam, tpos);\n\tconst float4 sa = tex1.GatherAlpha(sam, tpos);\n\tsrc[1][1].gba = float3(sg.w, sb.w, sa.w);\n\tsrc[1][2].gba = float3(sg.x, sb.x, sa.x);\n\tsrc[2][1].gba = float3(sg.z, sb.z, sa.z);\n\tsrc[2][2].gba = float3(sg.y, sb.y, sa.y);\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tfloat4 o = src[i][j];\n\n\t\t\to.x += o.x;\n\t\t\to.x += src[i][j - 1].x + src[i - 1][j].x + src[i + 1][j].x + src[i][j + 1].x;\n\t\t\to.x += o.x;\n\t\t\to.x += src[i - 1][j - 1].x + src[i + 1][j - 1].x + src[i - 1][j + 1].x + src[i + 1][j + 1].x;\n\t\t\to.x *= 0.0625f;\n\n\t\t\tfloat t;\n\t\t\tfloat t1 = src[i - 1][j - 1].x;\n\t\t\tfloat t2 = src[i][j - 1].x;\n\t\t\tfloat t3 = src[i + 1][j - 1].x;\n\t\t\tfloat t4 = src[i - 1][j].x;\n\t\t\tfloat t5 = o.x;\n\t\t\tfloat t6 = src[i + 1][j].x;\n\t\t\tfloat t7 = src[i - 1][j + 1].x;\n\t\t\tfloat t8 = src[i][j + 1].x;\n\t\t\tfloat t9 = src[i + 1][j + 1].x;\n\t\t\to.x = median9(t1, t2, t3, t4, t5, t6, t7, t8, t9);\n\n\t\t\ttex2[gxy + uint2(i - 1, j - 1)] = o;\n\t\t}\n\t}\n}\n\n//!PASS 3\n//!DESC Part A\n//!IN tex2\n//!OUT tex1\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n#define lstr 1.49  // Modifier for non-linear sharpening\n#define pstr 1.272 // Exponent for non-linear sharpening\n#define ldmp (sstr+0.1f) // \"Low damp\", to not over-enhance very small differences (noise coming out of flat areas)\n\n// To use the \"mode\" setting in original you must change shaders earlier in chain: mode=1->RG11 RG4, mode=2->RG4 RG11, mode=3->RG4 RG11 RG4\n// Negative modes are not supported\n// XSharpen settings are in Part C\n\nfloat SharpDiff(float4 c) {\n\tfloat t = c.a - c.x;\n\treturn sign(t) * (sstr / 255.0f) * pow(abs(t) / (lstr / 255.0f), 1.0f / pstr) * ((t * t) / (t * t + ldmp / (255.0f * 255.0f)));\n}\n\nvoid Pass3(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tfloat4 src[4][4];\n\tfloat sharpDiffs[4][4];\n\n\t[unroll]\n\tfor (i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst float4 sr = tex2.GatherRed(sam, tpos);\n\t\t\tconst float4 sa = tex2.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j].ra = float2(sr.w, sa.w);\n\t\t\tsrc[i][j + 1].ra = float2(sr.x, sa.x);\n\t\t\tsrc[i + 1][j].ra = float2(sr.z, sa.z);\n\t\t\tsrc[i + 1][j + 1].ra = float2(sr.y, sa.y);\n\n\t\t\tsharpDiffs[i][j] = SharpDiff(src[i][j]);\n\t\t\tsharpDiffs[i][j + 1] = SharpDiff(src[i][j + 1]);\n\t\t\tsharpDiffs[i + 1][j] = SharpDiff(src[i + 1][j]);\n\t\t\tsharpDiffs[i + 1][j + 1] = SharpDiff(src[i + 1][j + 1]);\n\t\t}\n\t}\n\n\tfloat2 tpos = (gxy + 1) * inputPt;\n\tconst float4 sg = tex2.GatherGreen(sam, tpos);\n\tconst float4 sb = tex2.GatherBlue(sam, tpos);\n\tsrc[1][1].gb = float2(sg.w, sb.w);\n\tsrc[1][2].gb = float2(sg.x, sb.x);\n\tsrc[2][1].gb = float2(sg.z, sb.z);\n\tsrc[2][2].gb = float2(sg.y, sb.y);\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tfloat4 o = src[i][j];\n\n\t\t\tfloat sd = sharpDiffs[i][j];\n\t\t\to.x = o.a + sd;\n\t\t\tsd += sd;\n\t\t\tsd += sharpDiffs[i][j - 1] + sharpDiffs[i - 1][j] + sharpDiffs[i + 1][j] + sharpDiffs[i][j + 1];\n\t\t\tsd += sd;\n\t\t\tsd += sharpDiffs[i - 1][j - 1] + sharpDiffs[i + 1][j - 1] + sharpDiffs[i - 1][j + 1] + sharpDiffs[i + 1][j + 1];\n\t\t\tsd *= 0.0625f;\n\t\t\to.x -= cstr * sd;\n\t\t\to.a = o.x;\n\n\t\t\ttex1[gxy + uint2(i - 1, j - 1)] = o;\n\t\t}\n\t}\n}\n\n\n//!PASS 4\n//!DESC Part B\n//!IN tex1\n//!OUT tex2\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n// The variables passed to these sorting macros will be swapped around as part of the process. A temporary variable t of the same type is also required.\n#define sort(a1,a2)                               (t=min(a1,a2),a2=max(a1,a2),a1=t)\n#define sort_min_max3(a1,a2,a3)                   (sort(a1,a2),sort(a1,a3),sort(a2,a3))\n#define sort_min_max5(a1,a2,a3,a4,a5)             (sort(a1,a2),sort(a3,a4),sort(a1,a3),sort(a2,a4),sort(a1,a5),sort(a4,a5))\n#define sort_min_max7(a1,a2,a3,a4,a5,a6,a7)       (sort(a1,a2),sort(a3,a4),sort(a5,a6),sort(a1,a3),sort(a1,a5),sort(a2,a6),sort(a4,a5),sort(a1,a7),sort(a6,a7))\n#define sort_min_max9(a1,a2,a3,a4,a5,a6,a7,a8,a9) (sort(a1,a2),sort(a3,a4),sort(a5,a6),sort(a7,a8),sort(a1,a3),sort(a5,a7),sort(a1,a5),sort(a2,a4),sort(a6,a7),sort(a4,a8),sort(a1,a9),sort(a8,a9))\n// sort9_partial1 only sorts the min and max into place (at the ends), sort9_partial2 sorts the top two max and min values, etc. Used for avisynth \"Repair\" script equivalent \n#define sort9_partial1(a1,a2,a3,a4,a5,a6,a7,a8,a9) (sort_min_max9(a1,a2,a3,a4,a5,a6,a7,a8,a9))\n#define sort9_partial2(a1,a2,a3,a4,a5,a6,a7,a8,a9) (sort_min_max9(a1,a2,a3,a4,a5,a6,a7,a8,a9),sort_min_max7(a2,a3,a4,a5,a6,a7,a8))\n#define sort9_partial3(a1,a2,a3,a4,a5,a6,a7,a8,a9) (sort_min_max9(a1,a2,a3,a4,a5,a6,a7,a8,a9),sort_min_max7(a2,a3,a4,a5,a6,a7,a8),sort_min_max5(a3,a4,a5,a6,a7))\n#define sort9(a1,a2,a3,a4,a5,a6,a7,a8,a9)          (sort_min_max9(a1,a2,a3,a4,a5,a6,a7,a8,a9),sort_min_max7(a2,a3,a4,a5,a6,a7,a8),sort_min_max5(a3,a4,a5,a6,a7),sort_min_max3(a4,a5,a6))\n\n\nvoid Pass4(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tfloat4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst float4 sa = tex1.GatherAlpha(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j].a = sa.w;\n\t\t\tsrc[i][j + 1].a = sa.x;\n\t\t\tsrc[i + 1][j].a = sa.z;\n\t\t\tsrc[i + 1][j + 1].a = sa.y;\n\t\t}\n\t}\n\n\tfloat2 tpos = (gxy + 1) * inputPt;\n\tconst float4 sr = tex1.GatherRed(sam, tpos);\n\tconst float4 sg = tex1.GatherGreen(sam, tpos);\n\tconst float4 sb = tex1.GatherBlue(sam, tpos);\n\tsrc[1][1].rgb = float3(sr.w, sg.w, sb.w);\n\tsrc[1][2].rgb = float3(sr.x, sg.x, sb.x);\n\tsrc[2][1].rgb = float3(sr.z, sg.z, sb.z);\n\tsrc[2][2].rgb = float3(sr.y, sg.y, sb.y);\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tfloat4 o = src[i][j];\n\n\t\t\tfloat t;\n\t\t\tfloat t1 = src[i - 1][j - 1].a;\n\t\t\tfloat t2 = src[i][j - 1].a;\n\t\t\tfloat t3 = src[i + 1][j - 1].a;\n\t\t\tfloat t4 = src[i - 1][j].a;\n\t\t\tfloat t5 = o.a;\n\t\t\tfloat t6 = src[i + 1][j].a;\n\t\t\tfloat t7 = src[i - 1][j + 1].a;\n\t\t\tfloat t8 = src[i][j + 1].a;\n\t\t\tfloat t9 = src[i + 1][j + 1].a;\n\n\t\t\to.x += t1 + t2 + t3 + t4 + t6 + t7 + t8 + t9;\n\t\t\to.x /= 9.0f;\n\t\t\to.x = o.a + 9.9f * (o.a - o.x);\n\n\t\t\tsort9_partial2(t1, t2, t3, t4, t5, t6, t7, t8, t9);\n\t\t\to.x = max(o.x, min(t2, o.a));\n\t\t\to.x = min(o.x, max(t8, o.a));\n\n\t\t\ttex2[gxy + uint2(i - 1, j - 1)] = o;\n\t\t}\n\t}\n}\n\n\n//!PASS 5\n//!DESC Part C\n//!IN tex2\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n\n#define YUVtoRGB(Kb,Kr) float3x3(float3(1, 0, 2*(1 - Kr)), float3(Kb + Kr - 1, 2*(1 - Kb)*Kb, 2*Kr*(1 - Kr)) / (Kb + Kr - 1), float3(1, 2*(1 - Kb),0))\nstatic const float3x3 YUVtoRGB = GetInputSize().y <= 576 ? YUVtoRGB(0.114, 0.299) : YUVtoRGB(0.0722, 0.2126);\n\n\nvoid Pass5(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tuint i, j;\n\n\tfloat4 src[4][4];\n\t[unroll]\n\tfor (i = 0; i < 3; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j < 3; j += 2) {\n\t\t\tfloat2 tpos = (gxy + uint2(i, j)) * inputPt;\n\t\t\tconst float4 sr = tex2.GatherRed(sam, tpos);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j].r = sr.w;\n\t\t\tsrc[i][j + 1].r = sr.x;\n\t\t\tsrc[i + 1][j].r = sr.z;\n\t\t\tsrc[i + 1][j + 1].r = sr.y;\n\t\t}\n\t}\n\n\tfloat2 tpos = (gxy + 1) * inputPt;\n\tconst float4 sg = tex2.GatherGreen(sam, tpos);\n\tconst float4 sb = tex2.GatherBlue(sam, tpos);\n\tconst float4 sa = tex2.GatherAlpha(sam, tpos);\n\tsrc[1][1].gba = float3(sg.w, sb.w, sa.w);\n\tsrc[1][2].gba = float3(sg.x, sb.x, sa.x);\n\tsrc[2][1].gba = float3(sg.z, sb.z, sa.z);\n\tsrc[2][2].gba = float3(sg.y, sb.y, sa.y);\n\n\t[unroll]\n\tfor (i = 1; i <= 2; ++i) {\n\t\t[unroll]\n\t\tfor (j = 1; j <= 2; ++j) {\n\t\t\tuint2 destPos = gxy + uint2(i - 1, j - 1);\n\t\t\t\n\t\t\tfloat4 o = src[i][j];\n\n\t\t\tfloat edge = abs(src[i][j - 1].x + src[i - 1][j].x + src[i + 1][j].x + src[i][j + 1].x - 4 * o.x);\n\t\t\to.x = lerp(o.a, o.x, xstr * (1 - saturate(edge * xrep)));\n\n\t\t\tOUTPUT[destPos] = float4(mul(YUVtoRGB, o.xyz - float3(0.0, 0.5, 0.5)), 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/Sharpen/LCAS.hlsl",
    "content": "// This is a combination of linear interpolation and light version of cas\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n//!PARAMETER\n//!LABEL Sharpness\n//!DEFAULT 0.5\n//!MIN 0\n//!MAX 1\n//!STEP 0.01\nfloat sharpness;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam;\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\nfloat3 LCAS(uint2 ip, float peak) {\n\n\tfloat2 pos = (ip + 0.5f) * GetOutputPt();\n\tfloat2 inputPt = GetInputPt();\n\n\t// fetch a 3x3 neighborhood around the pixel 'e',\n\t//\ta b c\n\t//\td(e)f\n\t//\tg h i\n\tfloat3 a = INPUT.SampleLevel(sam, pos + float2(-inputPt.x, -inputPt.y), 0).rgb;\n\tfloat3 b = INPUT.SampleLevel(sam, pos + float2(0, -inputPt.y), 0).rgb;\n\tfloat3 c = INPUT.SampleLevel(sam, pos + float2(inputPt.x, -inputPt.y), 0).rgb;\n\tfloat3 d = INPUT.SampleLevel(sam, pos + float2(-inputPt.x, 0), 0).rgb;\n\tfloat3 f = INPUT.SampleLevel(sam, pos + float2(inputPt.x, 0), 0).rgb;\n\tfloat3 g = INPUT.SampleLevel(sam, pos + float2(-inputPt.x, inputPt.y), 0).rgb;\n\tfloat3 h = INPUT.SampleLevel(sam, pos + float2(0, inputPt.y), 0).rgb;\n\tfloat3 i = INPUT.SampleLevel(sam, pos + float2(inputPt.x, inputPt.y), 0).rgb;\n\n\tfloat3 x = a + c + g + i;\n\tfloat3 y = b + d + f + h;\n\t\n\tfloat3 e = INPUT.SampleLevel(sam, pos + float2(inputPt.x * 0.25, inputPt.y * 0.5), 0).rgb;\n\te += INPUT.SampleLevel(sam, pos + float2(-inputPt.x * 0.25, -inputPt.y * 0.5), 0).rgb;\n\te += INPUT.SampleLevel(sam, pos + float2(inputPt.x * 0.5, -inputPt.y * 0.25), 0).rgb;\n\te += INPUT.SampleLevel(sam, pos + float2(-inputPt.x * 0.5, inputPt.y * 0.25), 0).rgb;\n\te /= 4;\n\n\t// Soft min and max.\n\t//  a b c\n\t//  d e f\n\t//  g h i\n\tfloat3 mnRGB = min(min(min(min(d, e), min(f, b)), h), min(min(a, i), min(c, g)));\n\n\tfloat3 mxRGB = max(max(max(max(d, e), max(f, b)), h), max(max(a, i), max(c, g)));\n\n\t// Shaping amount of sharpening.\n\tfloat3 wRGB = sqrt(min(mnRGB, 1.0 - mxRGB) / mxRGB) * peak;\n\n\t// Filter shape.\n\t//  w w w \n\t//  w 1 w\n\t//  w w w \n\tfloat3 color = ((x + y) * wRGB + (e * 5.0 - (x + y * 2.0 + e * 4.0) / 4.0)) / (1.0 + 8.0 * wRGB);\n\treturn (color + clamp(color, mnRGB, mxRGB) * 4.0) / 5.0;\n}\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = blockStart + Rmp8x8(threadId.x);\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tconst float peak = lerp(0, -0.1111111111111111, sharpness);\n\n\tOUTPUT[gxy] = float4(LCAS(gxy, peak), 1);\n\n\tgxy.x += 8u;\n\tOUTPUT[gxy] = float4(LCAS(gxy, peak), 1);\n\n\tgxy.y += 8u;\n\tOUTPUT[gxy] = float4(LCAS(gxy, peak), 1);\n\n\tgxy.x -= 8u;\n\tOUTPUT[gxy] = float4(LCAS(gxy, peak), 1);\n}\n"
  },
  {
    "path": "src/Effects/Sharpen/LumaSharpen.hlsl",
    "content": "// LumaSharpen\n// 移植自 https://github.com/CeeJayDK/SweetFX/blob/master/Shaders/LumaSharpen.fx\n\n/**\n   LumaSharpen version 1.5.0\n   by Christian Cann Schuldt Jensen ~ CeeJay.dk\n\n   It blurs the original pixel with the surrounding pixels and then subtracts this blur to sharpen the image.\n   It does this in luma to avoid color artifacts and allows limiting the maximum sharpning to avoid or lessen halo artifacts.\n   This is similar to using Unsharp Mask in Photoshop.\n   Version 1.5.1\n  - UI improvements for Reshade 3.x\n */\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!PARAMETER\n//!LABEL Sharpening Strength\n//!DEFAULT 0.65\n//!MIN 0\n//!MAX 3\n//!STEP 0.01\nfloat sharpStrength;\n\n//!PARAMETER\n//!LABEL Sharpening Limit\n//!DEFAULT 0.035\n//!MIN 0\n//!MAX 1\n//!STEP 0.005\n\n// Limits maximum amount of sharpening a pixel receives\n// This helps avoid \"haloing\" artifacts which would otherwise occur when you raised the strength too much.\nfloat sharpClamp;\n\n//!PARAMETER\n//!LABEL Sample Pattern\n//!DEFAULT 1\n//!MIN 0\n//!MAX 3\n//!STEP 1\n\n// 0 : Fast\n// 1 : Normal\n// 2 : Wider\n// 3 : Pyramid shaped\n\nint pattern;\n\n//!PARAMETER\n//!LABEL Offset Bias\n//!DEFAULT 1\n//!MIN 0\n//!MAX 6\n//!STEP 0.01\n\n// Offset bias adjusts the radius of the sampling pattern.I designed the pattern for an offset bias of 1.0, but feel free to experiment.\nfloat offsetBias;\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER LINEAR\nSamplerState sam;\n\n\n//!PASS 1\n//!STYLE PS\n//!IN INPUT\n//!OUT OUTPUT\n\n   /*-----------------------------------------------------------.\n  /                      Developer settings                     /\n  '-----------------------------------------------------------*/\n#define CoefLuma float3(0.2126, 0.7152, 0.0722)      // BT.709 & sRBG luma coefficient (Monitors and HD Television)\n  //#define CoefLuma float3(0.299, 0.587, 0.114)       // BT.601 luma coefficient (SD Television)\n  //#define CoefLuma float3(1.0/3.0, 1.0/3.0, 1.0/3.0) // Equal weight coefficient\n\nfloat4 Pass1(float2 pos) {\n\tfloat2 BUFFER_PIXEL_SIZE = GetInputPt();\n\n\t// -- Get the original pixel --\n\tfloat3 ori = INPUT.SampleLevel(sam, pos, 0).rgb; // ori = original pixel\n\n\t// -- Combining the strength and luma multipliers --\n\tfloat3 sharp_strength_luma = (CoefLuma * sharpStrength); //I'll be combining even more multipliers with it later on\n\n\t/*-----------------------------------------------------------.\n\t/                       Sampling patterns                     /\n\t'-----------------------------------------------------------*/\n\tfloat3 blur_ori = { 0,0,0 };\n\n\t//   [ NW,   , NE ] Each texture lookup (except ori)\n\t//   [   ,ori,    ] samples 4 pixels\n\t//   [ SW,   , SE ]\n\n\t// -- Pattern 1 -- A (fast) 7 tap gaussian using only 2+1 texture fetches.\n\tif (pattern == 0) {\n\t\t// -- Gaussian filter --\n\t\t//   [ 1/9, 2/9,    ]     [ 1 , 2 ,   ]\n\t\t//   [ 2/9, 8/9, 2/9]  =  [ 2 , 8 , 2 ]\n\t\t//   [    , 2/9, 1/9]     [   , 2 , 1 ]\n\n\t\tblur_ori = INPUT.SampleLevel(sam, pos + (BUFFER_PIXEL_SIZE / 3.0) * offsetBias, 0).rgb;  // North West\n\t\tblur_ori += INPUT.SampleLevel(sam, pos + (-BUFFER_PIXEL_SIZE / 3.0) * offsetBias, 0).rgb; // South East\n\n\t\t//blur_ori += tex2D(ReShade::BackBuffer, tex + (BUFFER_PIXEL_SIZE / 3.0) * offsetBias); // North East\n\t\t//blur_ori += tex2D(ReShade::BackBuffer, tex + (-BUFFER_PIXEL_SIZE / 3.0) * offsetBias); // South West\n\n\t\tblur_ori /= 2;  //Divide by the number of texture fetches\n\n\t\tsharp_strength_luma *= 1.5; // Adjust strength to aproximate the strength of pattern 2\n\t}\n\n\t// -- Pattern 2 -- A 9 tap gaussian using 4+1 texture fetches.\n\tif (pattern == 1) {\n\t\t// -- Gaussian filter --\n\t\t//   [ .25, .50, .25]     [ 1 , 2 , 1 ]\n\t\t//   [ .50,   1, .50]  =  [ 2 , 4 , 2 ]\n\t\t//   [ .25, .50, .25]     [ 1 , 2 , 1 ]\n\n\t\tblur_ori = INPUT.SampleLevel(sam, pos + float2(BUFFER_PIXEL_SIZE.x, -BUFFER_PIXEL_SIZE.y) * 0.5 * offsetBias, 0).rgb; // South East\n\t\tblur_ori += INPUT.SampleLevel(sam, pos - BUFFER_PIXEL_SIZE * 0.5 * offsetBias, 0).rgb;  // South West\n\t\tblur_ori += INPUT.SampleLevel(sam, pos + BUFFER_PIXEL_SIZE * 0.5 * offsetBias, 0).rgb; // North East\n\t\tblur_ori += INPUT.SampleLevel(sam, pos - float2(BUFFER_PIXEL_SIZE.x, -BUFFER_PIXEL_SIZE.y) * 0.5 * offsetBias, 0).rgb; // North West\n\n\t\tblur_ori *= 0.25;  // ( /= 4) Divide by the number of texture fetches\n\t}\n\n\t// -- Pattern 3 -- An experimental 17 tap gaussian using 4+1 texture fetches.\n\tif (pattern == 2) {\n\t\t// -- Gaussian filter --\n\t\t//   [   , 4 , 6 ,   ,   ]\n\t\t//   [   ,16 ,24 ,16 , 4 ]\n\t\t//   [ 6 ,24 ,   ,24 , 6 ]\n\t\t//   [ 4 ,16 ,24 ,16 ,   ]\n\t\t//   [   ,   , 6 , 4 ,   ]\n\n\t\tblur_ori = INPUT.SampleLevel(sam, pos + BUFFER_PIXEL_SIZE * float2(0.4, -1.2) * offsetBias, 0).rgb;  // South South East\n\t\tblur_ori += INPUT.SampleLevel(sam, pos - BUFFER_PIXEL_SIZE * float2(1.2, 0.4) * offsetBias, 0).rgb; // West South West\n\t\tblur_ori += INPUT.SampleLevel(sam, pos + BUFFER_PIXEL_SIZE * float2(1.2, 0.4) * offsetBias, 0).rgb; // East North East\n\t\tblur_ori += INPUT.SampleLevel(sam, pos - BUFFER_PIXEL_SIZE * float2(0.4, -1.2) * offsetBias, 0).rgb; // North North West\n\n\t\tblur_ori *= 0.25;  // ( /= 4) Divide by the number of texture fetches\n\n\t\tsharp_strength_luma *= 0.51;\n\t}\n\n\t// -- Pattern 4 -- A 9 tap high pass (pyramid filter) using 4+1 texture fetches.\n\tif (pattern == 3) {\n\t\t// -- Gaussian filter --\n\t\t//   [ .50, .50, .50]     [ 1 , 1 , 1 ]\n\t\t//   [ .50,    , .50]  =  [ 1 ,   , 1 ]\n\t\t//   [ .50, .50, .50]     [ 1 , 1 , 1 ]\n\n\t\tblur_ori = INPUT.SampleLevel(sam, pos + float2(0.5 * BUFFER_PIXEL_SIZE.x, -BUFFER_PIXEL_SIZE.y * offsetBias), 0).rgb;  // South South East\n\t\tblur_ori += INPUT.SampleLevel(sam, pos + float2(offsetBias * -BUFFER_PIXEL_SIZE.x, 0.5 * -BUFFER_PIXEL_SIZE.y), 0).rgb; // West South West\n\t\tblur_ori += INPUT.SampleLevel(sam, pos + float2(offsetBias * BUFFER_PIXEL_SIZE.x, 0.5 * BUFFER_PIXEL_SIZE.y), 0).rgb; // East North East\n\t\tblur_ori += INPUT.SampleLevel(sam, pos + float2(0.5 * -BUFFER_PIXEL_SIZE.x, BUFFER_PIXEL_SIZE.y * offsetBias), 0).rgb; // North North West\n\n\t\t//blur_ori += (2 * ori); // Probably not needed. Only serves to lessen the effect.\n\n\t\tblur_ori /= 4.0;  //Divide by the number of texture fetches\n\n\t\tsharp_strength_luma *= 0.666; // Adjust strength to aproximate the strength of pattern 2\n\t}\n\n\t/*-----------------------------------------------------------.\n   /                            Sharpen                          /\n   '-----------------------------------------------------------*/\n\n   // -- Calculate the sharpening --\n\tfloat3 sharp = ori - blur_ori;  //Subtracting the blurred image from the original image\n\n#if 0 //older 1.4 code (included here because the new code while faster can be difficult to understand)\n\t// -- Adjust strength of the sharpening --\n\tfloat sharp_luma = dot(sharp, sharp_strength_luma); //Calculate the luma and adjust the strength\n\n\t// -- Clamping the maximum amount of sharpening to prevent halo artifacts --\n\tsharp_luma = clamp(sharp_luma, -sharpClamp, sharpClamp);  //TODO Try a curve function instead of a clamp\n\n#else //new code\n\t// -- Adjust strength of the sharpening and clamp it--\n\tfloat4 sharp_strength_luma_clamp = float4(sharp_strength_luma * (0.5 / sharpClamp), 0.5); //Roll part of the clamp into the dot\n\n\t//sharp_luma = saturate((0.5 / sharpClamp) * sharp_luma + 0.5); //scale up and clamp\n\tfloat sharp_luma = saturate(dot(float4(sharp, 1.0), sharp_strength_luma_clamp)); //Calculate the luma, adjust the strength, scale up and clamp\n\tsharp_luma = (sharpClamp * 2.0) * sharp_luma - sharpClamp; //scale down\n#endif\n\n\t// -- Combining the values to get the final sharpened pixel\t--\n\tfloat3 outputcolor = ori + sharp_luma;    // Add the sharpening to the the original.\n\n\t /*-----------------------------------------------------------.\n\t/                     Returning the output                    /\n\t'-----------------------------------------------------------*/\n\n\t//if (show_sharpen) {\n\t//\t//outputcolor = abs(sharp * 4.0);\n\t//\toutputcolor = saturate(0.5 + (sharp_luma * 4.0)).rrr;\n\t//}\n\n\treturn float4(saturate(outputcolor), 1);\n}\n"
  },
  {
    "path": "src/Effects/StubDefs.hlsli",
    "content": "#define MP_BLOCK_WIDTH 8\n#define MP_BLOCK_HEIGHT 8\n#define MP_NUM_THREADS_X 64\n#define MP_NUM_THREADS_Y 1\n#define MP_NUM_THREADS_Z 1\n\n#define MF float\n#define MF1 float1\n#define MF2 float2\n#define MF3 float3\n#define MF4 float4\n#define MF1x1 float1x1\n#define MF1x2 float1x2\n#define MF1x3 float1x3\n#define MF1x4 float1x4\n#define MF2x1 float2x1\n#define MF2x2 float2x2\n#define MF2x3 float2x3\n#define MF2x4 float2x4\n#define MF3x1 float3x1\n#define MF3x2 float3x2\n#define MF3x3 float3x3\n#define MF3x4 float3x4\n#define MF4x1 float4x1\n#define MF4x2 float4x2\n#define MF4x3 float4x3\n#define MF4x4 float4x4\n\nuint2 Rmp8x8(uint a) { return uint2(a / 8, a % 8); }\nuint2 GetInputSize() { return uint2(0, 0); }\nfloat2 GetInputPt() { return float2(0, 0); }\nuint2 GetOutputSize() { return float2(0, 0); }\nfloat2 GetOutputPt() { return float2(0, 0); }\nfloat2 GetScale() { return float2(0, 0); }\nMF2 MulAdd(MF2 x, MF2x2 y, MF2 a) { return mul(x, y) + a; }\nMF3 MulAdd(MF2 x, MF2x3 y, MF3 a) { return mul(x, y) + a; }\nMF4 MulAdd(MF2 x, MF2x4 y, MF4 a) { return mul(x, y) + a; }\nMF2 MulAdd(MF3 x, MF3x2 y, MF2 a) { return mul(x, y) + a; }\nMF3 MulAdd(MF3 x, MF3x3 y, MF3 a) { return mul(x, y) + a; }\nMF4 MulAdd(MF3 x, MF3x4 y, MF4 a) { return mul(x, y) + a; }\nMF2 MulAdd(MF4 x, MF4x2 y, MF2 a) { return mul(x, y) + a; }\nMF3 MulAdd(MF4 x, MF4x3 y, MF3 a) { return mul(x, y) + a; }\nMF4 MulAdd(MF4 x, MF4x4 y, MF4 a) { return mul(x, y) + a; }\nuint GetFrameCount() { return 0; }\n"
  },
  {
    "path": "src/Effects/xBRZ/xBRZ_2x.hlsl",
    "content": "// 移植自 https://github.com/libretro/common-shaders/blob/master/xbrz/shaders/2xbrz.cg\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 2\n//!HEIGHT INPUT_HEIGHT * 2\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 16\n//!NUM_THREADS 64\n\n#define BLEND_NONE 0\n#define BLEND_NORMAL 1\n#define BLEND_DOMINANT 2\n#define LUMINANCE_WEIGHT 1.0\n#define EQUAL_COLOR_TOLERANCE 30.0/255.0\n#define STEEP_DIRECTION_THRESHOLD 2.2\n#define DOMINANT_DIRECTION_THRESHOLD 3.6\n#define M_PI 3.1415926535897932384626433832795\n\nfloat reduce(const float3 color) {\n\treturn dot(color, float3(65536.0, 256.0, 1.0));\n}\n\nfloat DistYCbCr(const float3 pixA, const float3 pixB) {\n\tconst float3 w = float3(0.2627, 0.6780, 0.0593);\n\tconst float scaleB = 0.5 / (1.0 - w.b);\n\tconst float scaleR = 0.5 / (1.0 - w.r);\n\tfloat3 diff = pixA - pixB;\n\tfloat Y = dot(diff, w);\n\tfloat Cb = scaleB * (diff.b - Y);\n\tfloat Cr = scaleR * (diff.r - Y);\n\n\treturn sqrt(((LUMINANCE_WEIGHT * Y) * (LUMINANCE_WEIGHT * Y)) + (Cb * Cb) + (Cr * Cr));\n}\n\nbool IsPixEqual(const float3 pixA, const float3 pixB) {\n\treturn (DistYCbCr(pixA, pixB) < EQUAL_COLOR_TOLERANCE);\n}\n\nbool IsBlendingNeeded(const int4 blend) {\n\treturn any(!(blend == int4(BLEND_NONE, BLEND_NONE, BLEND_NONE, BLEND_NONE)));\n}\n\nvoid ScalePixel(const int4 blend, const float3 k[9], inout float3 dst[4]) {\n\tfloat v0 = reduce(k[0]);\n\tfloat v4 = reduce(k[4]);\n\tfloat v5 = reduce(k[5]);\n\tfloat v7 = reduce(k[7]);\n\tfloat v8 = reduce(k[8]);\n\n\tfloat dist_01_04 = DistYCbCr(k[1], k[4]);\n\tfloat dist_03_08 = DistYCbCr(k[3], k[8]);\n\tbool haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v0 != v4) && (v5 != v4);\n\tbool haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v0 != v8) && (v7 != v8);\n\tbool needBlend = (blend[2] != BLEND_NONE);\n\tbool doLineBlend = (blend[2] >= BLEND_DOMINANT ||\n\t\t!((blend[1] != BLEND_NONE && !IsPixEqual(k[0], k[4])) ||\n\t\t\t(blend[3] != BLEND_NONE && !IsPixEqual(k[0], k[8])) ||\n\t\t\t(IsPixEqual(k[4], k[3]) && IsPixEqual(k[3], k[2]) && IsPixEqual(k[2], k[1]) && IsPixEqual(k[1], k[8]) && !IsPixEqual(k[0], k[2]))));\n\n\tfloat3 blendPix = (DistYCbCr(k[0], k[1]) <= DistYCbCr(k[0], k[3])) ? k[1] : k[3];\n\tdst[1] = lerp(dst[1], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);\n\tdst[2] = lerp(dst[2], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 5.0 / 6.0 : 0.75) : ((haveSteepLine) ? 0.75 : 0.50)) : 1.0 - (M_PI / 4.0)) : 0.00);\n\tdst[3] = lerp(dst[3], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);\n}\n\n//---------------------------------------\n// Input Pixel Mapping:  --|21|22|23|--\n//                       19|06|07|08|09\n//                       18|05|00|01|10\n//                       17|04|03|02|11\n//                       --|15|14|13|--\n//\n// Output Pixel Mapping:     00|01\n//                           03|02\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 1) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tconst float2 inputPt = GetInputPt();\n\tconst float2 pos = ((gxy >> 1) + 0.5f) * inputPt;\n\n\t//    A1 B1 C1\n\t// A0 A  B  C  C4\n\t// D0 D  E  F  F4\n\t// G0 G  H  I  I4\n\t//    G5 H5 I5\n\n\tconst float4 t1 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, -2.0 * inputPt.y); // A1 B1 C1\n\tconst float4 t2 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, -inputPt.y);\t\t// A  B  C\n\tconst float4 t3 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, 0);\t\t\t\t// D  E  F\n\tconst float4 t4 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, inputPt.y);\t\t// G  H  I\n\tconst float4 t5 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, 2.0 * inputPt.y);\t// G5 H5 I5\n\tconst float4 t6 = pos.xyyy + float4(-2.0 * inputPt.x, -inputPt.y, 0, inputPt.y);\t// A0 D0 G0\n\tconst float4 t7 = pos.xyyy + float4(2.0 * inputPt.x, -inputPt.y, 0, inputPt.y);\t// C4 F4 I4\n\n\t//---------------------------------------\n\t// Input Pixel Mapping:  20|21|22|23|24\n\t//                       19|06|07|08|09\n\t//                       18|05|00|01|10\n\t//                       17|04|03|02|11\n\t//                       16|15|14|13|12\n\n\tfloat3 src[25];\n\n\tsrc[21] = INPUT.SampleLevel(sam, t1.xw, 0).rgb;\n\tsrc[22] = INPUT.SampleLevel(sam, t1.yw, 0).rgb;\n\tsrc[23] = INPUT.SampleLevel(sam, t1.zw, 0).rgb;\n\tsrc[6] = INPUT.SampleLevel(sam, t2.xw, 0).rgb;\n\tsrc[7] = INPUT.SampleLevel(sam, t2.yw, 0).rgb;\n\tsrc[8] = INPUT.SampleLevel(sam, t2.zw, 0).rgb;\n\tsrc[5] = INPUT.SampleLevel(sam, t3.xw, 0).rgb;\n\tsrc[0] = INPUT.SampleLevel(sam, t3.yw, 0).rgb;\n\tsrc[1] = INPUT.SampleLevel(sam, t3.zw, 0).rgb;\n\tsrc[4] = INPUT.SampleLevel(sam, t4.xw, 0).rgb;\n\tsrc[3] = INPUT.SampleLevel(sam, t4.yw, 0).rgb;\n\tsrc[2] = INPUT.SampleLevel(sam, t4.zw, 0).rgb;\n\tsrc[15] = INPUT.SampleLevel(sam, t5.xw, 0).rgb;\n\tsrc[14] = INPUT.SampleLevel(sam, t5.yw, 0).rgb;\n\tsrc[13] = INPUT.SampleLevel(sam, t5.zw, 0).rgb;\n\tsrc[19] = INPUT.SampleLevel(sam, t6.xy, 0).rgb;\n\tsrc[18] = INPUT.SampleLevel(sam, t6.xz, 0).rgb;\n\tsrc[17] = INPUT.SampleLevel(sam, t6.xw, 0).rgb;\n\tsrc[9] = INPUT.SampleLevel(sam, t7.xy, 0).rgb;\n\tsrc[10] = INPUT.SampleLevel(sam, t7.xz, 0).rgb;\n\tsrc[11] = INPUT.SampleLevel(sam, t7.xw, 0).rgb;\n\n\tfloat v[9];\n\tv[0] = reduce(src[0]);\n\tv[1] = reduce(src[1]);\n\tv[2] = reduce(src[2]);\n\tv[3] = reduce(src[3]);\n\tv[4] = reduce(src[4]);\n\tv[5] = reduce(src[5]);\n\tv[6] = reduce(src[6]);\n\tv[7] = reduce(src[7]);\n\tv[8] = reduce(src[8]);\n\n\tint4 blendResult = int4(BLEND_NONE, BLEND_NONE, BLEND_NONE, BLEND_NONE);\n\n\t// Preprocess corners\n\t// Pixel Tap Mapping: --|--|--|--|--\n\t//                    --|--|07|08|--\n\t//                    --|05|00|01|10\n\t//                    --|04|03|02|11\n\t//                    --|--|14|13|--\n\n\t// Corner (1, 1)\n\tif (!((v[0] == v[1] && v[3] == v[2]) || (v[0] == v[3] && v[1] == v[2]))) {\n\t\tfloat dist_03_01 = DistYCbCr(src[4], src[0]) + DistYCbCr(src[0], src[8]) + DistYCbCr(src[14], src[2]) + DistYCbCr(src[2], src[10]) + (4.0 * DistYCbCr(src[3], src[1]));\n\t\tfloat dist_00_02 = DistYCbCr(src[5], src[3]) + DistYCbCr(src[3], src[13]) + DistYCbCr(src[7], src[1]) + DistYCbCr(src[1], src[11]) + (4.0 * DistYCbCr(src[0], src[2]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_03_01) < dist_00_02;\n\t\tblendResult[2] = ((dist_03_01 < dist_00_02) && (v[0] != v[1]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\n\t// Pixel Tap Mapping: --|--|--|--|--\n\t//                    --|06|07|--|--\n\t//                    18|05|00|01|--\n\t//                    17|04|03|02|--\n\t//                    --|15|14|--|--\n\t// Corner (0, 1)\n\tif (!((v[5] == v[0] && v[4] == v[3]) || (v[5] == v[4] && v[0] == v[3]))) {\n\t\tfloat dist_04_00 = DistYCbCr(src[17], src[5]) + DistYCbCr(src[5], src[7]) + DistYCbCr(src[15], src[3]) + DistYCbCr(src[3], src[1]) + (4.0 * DistYCbCr(src[4], src[0]));\n\t\tfloat dist_05_03 = DistYCbCr(src[18], src[4]) + DistYCbCr(src[4], src[14]) + DistYCbCr(src[6], src[0]) + DistYCbCr(src[0], src[2]) + (4.0 * DistYCbCr(src[5], src[3]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_03) < dist_04_00;\n\t\tblendResult[3] = ((dist_04_00 > dist_05_03) && (v[0] != v[5]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\t// Pixel Tap Mapping: --|--|22|23|--\n\t//                    --|06|07|08|09\n\t//                    --|05|00|01|10\n\t//                    --|--|03|02|--\n\t//                    --|--|--|--|--\n\t// Corner (1, 0)\n\tif (!((v[7] == v[8] && v[0] == v[1]) || (v[7] == v[0] && v[8] == v[1]))) {\n\t\tfloat dist_00_08 = DistYCbCr(src[5], src[7]) + DistYCbCr(src[7], src[23]) + DistYCbCr(src[3], src[1]) + DistYCbCr(src[1], src[9]) + (4.0 * DistYCbCr(src[0], src[8]));\n\t\tfloat dist_07_01 = DistYCbCr(src[6], src[0]) + DistYCbCr(src[0], src[2]) + DistYCbCr(src[22], src[8]) + DistYCbCr(src[8], src[10]) + (4.0 * DistYCbCr(src[7], src[1]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_07_01) < dist_00_08;\n\t\tblendResult[1] = ((dist_00_08 > dist_07_01) && (v[0] != v[7]) && (v[0] != v[1])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\t// Pixel Tap Mapping: --|21|22|--|--\n\t//                    19|06|07|08|--\n\t//                    18|05|00|01|--\n\t//                    --|04|03|--|--\n\t//                    --|--|--|--|--\n\t// Corner (0, 0)\n\tif (!((v[6] == v[7] && v[5] == v[0]) || (v[6] == v[5] && v[7] == v[0]))) {\n\t\tfloat dist_05_07 = DistYCbCr(src[18], src[6]) + DistYCbCr(src[6], src[22]) + DistYCbCr(src[4], src[0]) + DistYCbCr(src[0], src[8]) + (4.0 * DistYCbCr(src[5], src[7]));\n\t\tfloat dist_06_00 = DistYCbCr(src[19], src[5]) + DistYCbCr(src[5], src[3]) + DistYCbCr(src[21], src[7]) + DistYCbCr(src[7], src[1]) + (4.0 * DistYCbCr(src[6], src[0]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_07) < dist_06_00;\n\t\tblendResult[0] = ((dist_05_07 < dist_06_00) && (v[0] != v[5]) && (v[0] != v[7])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\tfloat3 dst[4];\n\tdst[0] = src[0];\n\tdst[1] = src[0];\n\tdst[2] = src[0];\n\tdst[3] = src[0];\n\n\t// Scale pixel\n\tif (IsBlendingNeeded(blendResult)) {\n\t\tfloat3 k[9];\n\t\tfloat3 tempDst3;\n\n\t\tk[0] = src[0];\n\t\tk[1] = src[1];\n\t\tk[2] = src[2];\n\t\tk[3] = src[3];\n\t\tk[4] = src[4];\n\t\tk[5] = src[5];\n\t\tk[6] = src[6];\n\t\tk[7] = src[7];\n\t\tk[8] = src[8];\n\t\tScalePixel(blendResult.xyzw, k, dst);\n\n\t\tk[1] = src[7];\n\t\tk[2] = src[8];\n\t\tk[3] = src[1];\n\t\tk[4] = src[2];\n\t\tk[5] = src[3];\n\t\tk[6] = src[4];\n\t\tk[7] = src[5];\n\t\tk[8] = src[6];\n\t\ttempDst3 = dst[3];\n\t\tdst[3] = dst[2];\n\t\tdst[2] = dst[1];\n\t\tdst[1] = dst[0];\n\t\tdst[0] = tempDst3;\n\t\tScalePixel(blendResult.wxyz, k, dst);\n\n\t\tk[1] = src[5];\n\t\tk[2] = src[6];\n\t\tk[3] = src[7];\n\t\tk[4] = src[8];\n\t\tk[5] = src[1];\n\t\tk[6] = src[2];\n\t\tk[7] = src[3];\n\t\tk[8] = src[4];\n\t\ttempDst3 = dst[3];\n\t\tdst[3] = dst[2];\n\t\tdst[2] = dst[1];\n\t\tdst[1] = dst[0];\n\t\tdst[0] = tempDst3;\n\t\tScalePixel(blendResult.zwxy, k, dst);\n\n\t\tk[1] = src[3];\n\t\tk[2] = src[4];\n\t\tk[3] = src[5];\n\t\tk[4] = src[6];\n\t\tk[5] = src[7];\n\t\tk[6] = src[8];\n\t\tk[7] = src[1];\n\t\tk[8] = src[2];\n\t\ttempDst3 = dst[3];\n\t\tdst[3] = dst[2];\n\t\tdst[2] = dst[1];\n\t\tdst[1] = dst[0];\n\t\tdst[0] = tempDst3;\n\t\tScalePixel(blendResult.yzwx, k, dst);\n\n\t\t// Rotate the destination pixels back to 0 degrees.\n\t\ttempDst3 = dst[3];\n\t\tdst[3] = dst[2];\n\t\tdst[2] = dst[1];\n\t\tdst[1] = dst[0];\n\t\tdst[0] = tempDst3;\n\t}\n\n\tOUTPUT[gxy] = float4(dst[0], 1);\n\n\t++gxy.x;\n\tOUTPUT[gxy] = float4(dst[1], 1);\n\n\t++gxy.y;\n\tOUTPUT[gxy] = float4(dst[2], 1);\n\n\t--gxy.x;\n\tOUTPUT[gxy] = float4(dst[3], 1);\n}\n"
  },
  {
    "path": "src/Effects/xBRZ/xBRZ_3x.hlsl",
    "content": "// 移植自 https://github.com/libretro/common-shaders/blob/master/xbrz/shaders/3xbrz.cg\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 3\n//!HEIGHT INPUT_HEIGHT * 3\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 24\n//!NUM_THREADS 64\n\n#define BLEND_NONE 0\n#define BLEND_NORMAL 1\n#define BLEND_DOMINANT 2\n#define LUMINANCE_WEIGHT 1.0\n#define EQUAL_COLOR_TOLERANCE 30.0/255.0\n#define STEEP_DIRECTION_THRESHOLD 2.2\n#define DOMINANT_DIRECTION_THRESHOLD 3.6\n\nstatic const float one_third = 1.0 / 3.0;\nstatic const float two_third = 2.0 / 3.0;\n\nfloat reduce(const float3 color) {\n\treturn dot(color, float3(65536.0, 256.0, 1.0));\n}\n\nfloat DistYCbCr(const float3 pixA, const float3 pixB) {\n\tconst float3 w = float3(0.2627, 0.6780, 0.0593);\n\tconst float scaleB = 0.5 / (1.0 - w.b);\n\tconst float scaleR = 0.5 / (1.0 - w.r);\n\tfloat3 diff = pixA - pixB;\n\tfloat Y = dot(diff, w);\n\tfloat Cb = scaleB * (diff.b - Y);\n\tfloat Cr = scaleR * (diff.r - Y);\n\n\treturn sqrt(((LUMINANCE_WEIGHT * Y) * (LUMINANCE_WEIGHT * Y)) + (Cb * Cb) + (Cr * Cr));\n}\n\nbool IsPixEqual(const float3 pixA, const float3 pixB) {\n\treturn (DistYCbCr(pixA, pixB) < EQUAL_COLOR_TOLERANCE);\n}\n\nbool IsBlendingNeeded(const int4 blend) {\n\treturn any(!(blend == int4(BLEND_NONE, BLEND_NONE, BLEND_NONE, BLEND_NONE)));\n}\n\nvoid ScalePixel(const int4 blend, const float3 k[9], inout float3 dst[9]) {\n\tfloat v0 = reduce(k[0]);\n\tfloat v4 = reduce(k[4]);\n\tfloat v5 = reduce(k[5]);\n\tfloat v7 = reduce(k[7]);\n\tfloat v8 = reduce(k[8]);\n\n\tfloat dist_01_04 = DistYCbCr(k[1], k[4]);\n\tfloat dist_03_08 = DistYCbCr(k[3], k[8]);\n\tbool haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v0 != v4) && (v5 != v4);\n\tbool haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v0 != v8) && (v7 != v8);\n\tbool needBlend = (blend[2] != BLEND_NONE);\n\tbool doLineBlend = (blend[2] >= BLEND_DOMINANT ||\n\t\t!((blend[1] != BLEND_NONE && !IsPixEqual(k[0], k[4])) ||\n\t\t\t(blend[3] != BLEND_NONE && !IsPixEqual(k[0], k[8])) ||\n\t\t\t(IsPixEqual(k[4], k[3]) && IsPixEqual(k[3], k[2]) && IsPixEqual(k[2], k[1]) && IsPixEqual(k[1], k[8]) && !IsPixEqual(k[0], k[2]))));\n\n\tfloat3 blendPix = (DistYCbCr(k[0], k[1]) <= DistYCbCr(k[0], k[3])) ? k[1] : k[3];\n\tdst[1] = lerp(dst[1], blendPix, (needBlend && doLineBlend) ? ((haveSteepLine) ? 0.750 : ((haveShallowLine) ? 0.250 : 0.125)) : 0.000);\n\tdst[2] = lerp(dst[2], blendPix, (needBlend) ? ((doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.875 : 1.000) : 0.4545939598) : 0.000);\n\tdst[3] = lerp(dst[3], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? 0.750 : ((haveSteepLine) ? 0.250 : 0.125)) : 0.000);\n\tdst[4] = lerp(dst[4], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\tdst[8] = lerp(dst[8], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n}\n\nconst static uint destIdx[3][3] = {\n\t{6, 7, 8},\n\t{5, 0, 1},\n\t{4, 3, 2}\n};\n\n//---------------------------------------\n// Input Pixel Mapping:  --|21|22|23|--\n//                       19|06|07|08|09\n//                       18|05|00|01|10\n//                       17|04|03|02|11\n//                       --|15|14|13|--\n//\n// Output Pixel Mapping:    06|07|08\n//                          05|00|01\n//                          04|03|02\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tconst uint2 gxy = (Rmp8x8(threadId.x) * 3) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tconst float2 inputPt = GetInputPt();\n\tconst float2 pos = ((gxy / 3) + 0.5f) * inputPt;\n\n\t//    A1 B1 C1\n\t// A0 A  B  C  C4\n\t// D0 D  E  F  F4\n\t// G0 G  H  I  I4\n\t//    G5 H5 I5\n\n\tconst float4 t1 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, -2.0 * inputPt.y);\t// A1 B1 C1\n\tconst float4 t2 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, -inputPt.y);\t\t// A  B  C\n\tconst float4 t3 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, 0);\t\t\t\t\t// D  E  F\n\tconst float4 t4 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, inputPt.y);\t\t\t// G  H  I\n\tconst float4 t5 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, 2.0 * inputPt.y);\t// G5 H5 I5\n\tconst float4 t6 = pos.xyyy + float4(-2.0 * inputPt.x, -inputPt.y, 0, inputPt.y);\t// A0 D0 G0\n\tconst float4 t7 = pos.xyyy + float4(2.0 * inputPt.x, -inputPt.y, 0, inputPt.y);\t// C4 F4 I4\n\n\t//---------------------------------------\n\t// Input Pixel Mapping:  20|21|22|23|24\n\t//                       19|06|07|08|09\n\t//                       18|05|00|01|10\n\t//                       17|04|03|02|11\n\t//                       16|15|14|13|12\n\n\tfloat3 src[25];\n\n\tsrc[21] = INPUT.SampleLevel(sam, t1.xw, 0).rgb;\n\tsrc[22] = INPUT.SampleLevel(sam, t1.yw, 0).rgb;\n\tsrc[23] = INPUT.SampleLevel(sam, t1.zw, 0).rgb;\n\tsrc[6] = INPUT.SampleLevel(sam, t2.xw, 0).rgb;\n\tsrc[7] = INPUT.SampleLevel(sam, t2.yw, 0).rgb;\n\tsrc[8] = INPUT.SampleLevel(sam, t2.zw, 0).rgb;\n\tsrc[5] = INPUT.SampleLevel(sam, t3.xw, 0).rgb;\n\tsrc[0] = INPUT.SampleLevel(sam, t3.yw, 0).rgb;\n\tsrc[1] = INPUT.SampleLevel(sam, t3.zw, 0).rgb;\n\tsrc[4] = INPUT.SampleLevel(sam, t4.xw, 0).rgb;\n\tsrc[3] = INPUT.SampleLevel(sam, t4.yw, 0).rgb;\n\tsrc[2] = INPUT.SampleLevel(sam, t4.zw, 0).rgb;\n\tsrc[15] = INPUT.SampleLevel(sam, t5.xw, 0).rgb;\n\tsrc[14] = INPUT.SampleLevel(sam, t5.yw, 0).rgb;\n\tsrc[13] = INPUT.SampleLevel(sam, t5.zw, 0).rgb;\n\tsrc[19] = INPUT.SampleLevel(sam, t6.xy, 0).rgb;\n\tsrc[18] = INPUT.SampleLevel(sam, t6.xz, 0).rgb;\n\tsrc[17] = INPUT.SampleLevel(sam, t6.xw, 0).rgb;\n\tsrc[9] = INPUT.SampleLevel(sam, t7.xy, 0).rgb;\n\tsrc[10] = INPUT.SampleLevel(sam, t7.xz, 0).rgb;\n\tsrc[11] = INPUT.SampleLevel(sam, t7.xw, 0).rgb;\n\n\tfloat v[9];\n\tv[0] = reduce(src[0]);\n\tv[1] = reduce(src[1]);\n\tv[2] = reduce(src[2]);\n\tv[3] = reduce(src[3]);\n\tv[4] = reduce(src[4]);\n\tv[5] = reduce(src[5]);\n\tv[6] = reduce(src[6]);\n\tv[7] = reduce(src[7]);\n\tv[8] = reduce(src[8]);\n\n\tint4 blendResult = int4(BLEND_NONE, BLEND_NONE, BLEND_NONE, BLEND_NONE);\n\n\t// Preprocess corners\n\t// Pixel Tap Mapping: --|--|--|--|--\n\t//                    --|--|07|08|--\n\t//                    --|05|00|01|10\n\t//                    --|04|03|02|11\n\t//                    --|--|14|13|--\n\n\t// Corner (1, 1)\n\tif (!((v[0] == v[1] && v[3] == v[2]) || (v[0] == v[3] && v[1] == v[2]))) {\n\t\tfloat dist_03_01 = DistYCbCr(src[4], src[0]) + DistYCbCr(src[0], src[8]) + DistYCbCr(src[14], src[2]) + DistYCbCr(src[2], src[10]) + (4.0 * DistYCbCr(src[3], src[1]));\n\t\tfloat dist_00_02 = DistYCbCr(src[5], src[3]) + DistYCbCr(src[3], src[13]) + DistYCbCr(src[7], src[1]) + DistYCbCr(src[1], src[11]) + (4.0 * DistYCbCr(src[0], src[2]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_03_01) < dist_00_02;\n\t\tblendResult[2] = ((dist_03_01 < dist_00_02) && (v[0] != v[1]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\n\t// Pixel Tap Mapping: --|--|--|--|--\n\t//                    --|06|07|--|--\n\t//                    18|05|00|01|--\n\t//                    17|04|03|02|--\n\t//                    --|15|14|--|--\n\t// Corner (0, 1)\n\tif (!((v[5] == v[0] && v[4] == v[3]) || (v[5] == v[4] && v[0] == v[3]))) {\n\t\tfloat dist_04_00 = DistYCbCr(src[17], src[5]) + DistYCbCr(src[5], src[7]) + DistYCbCr(src[15], src[3]) + DistYCbCr(src[3], src[1]) + (4.0 * DistYCbCr(src[4], src[0]));\n\t\tfloat dist_05_03 = DistYCbCr(src[18], src[4]) + DistYCbCr(src[4], src[14]) + DistYCbCr(src[6], src[0]) + DistYCbCr(src[0], src[2]) + (4.0 * DistYCbCr(src[5], src[3]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_03) < dist_04_00;\n\t\tblendResult[3] = ((dist_04_00 > dist_05_03) && (v[0] != v[5]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\t// Pixel Tap Mapping: --|--|22|23|--\n\t//                    --|06|07|08|09\n\t//                    --|05|00|01|10\n\t//                    --|--|03|02|--\n\t//                    --|--|--|--|--\n\t// Corner (1, 0)\n\tif (!((v[7] == v[8] && v[0] == v[1]) || (v[7] == v[0] && v[8] == v[1]))) {\n\t\tfloat dist_00_08 = DistYCbCr(src[5], src[7]) + DistYCbCr(src[7], src[23]) + DistYCbCr(src[3], src[1]) + DistYCbCr(src[1], src[9]) + (4.0 * DistYCbCr(src[0], src[8]));\n\t\tfloat dist_07_01 = DistYCbCr(src[6], src[0]) + DistYCbCr(src[0], src[2]) + DistYCbCr(src[22], src[8]) + DistYCbCr(src[8], src[10]) + (4.0 * DistYCbCr(src[7], src[1]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_07_01) < dist_00_08;\n\t\tblendResult[1] = ((dist_00_08 > dist_07_01) && (v[0] != v[7]) && (v[0] != v[1])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\t// Pixel Tap Mapping: --|21|22|--|--\n\t//                    19|06|07|08|--\n\t//                    18|05|00|01|--\n\t//                    --|04|03|--|--\n\t//                    --|--|--|--|--\n\t// Corner (0, 0)\n\tif (!((v[6] == v[7] && v[5] == v[0]) || (v[6] == v[5] && v[7] == v[0]))) {\n\t\tfloat dist_05_07 = DistYCbCr(src[18], src[6]) + DistYCbCr(src[6], src[22]) + DistYCbCr(src[4], src[0]) + DistYCbCr(src[0], src[8]) + (4.0 * DistYCbCr(src[5], src[7]));\n\t\tfloat dist_06_00 = DistYCbCr(src[19], src[5]) + DistYCbCr(src[5], src[3]) + DistYCbCr(src[21], src[7]) + DistYCbCr(src[7], src[1]) + (4.0 * DistYCbCr(src[6], src[0]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_07) < dist_06_00;\n\t\tblendResult[0] = ((dist_05_07 < dist_06_00) && (v[0] != v[5]) && (v[0] != v[7])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\tfloat3 dst[9];\n\tdst[0] = src[0];\n\tdst[1] = src[0];\n\tdst[2] = src[0];\n\tdst[3] = src[0];\n\tdst[4] = src[0];\n\tdst[5] = src[0];\n\tdst[6] = src[0];\n\tdst[7] = src[0];\n\tdst[8] = src[0];\n\n\t// Scale pixel\n\tif (IsBlendingNeeded(blendResult)) {\n\t\tfloat3 k[9];\n\t\tfloat3 tempDst8;\n\t\tfloat3 tempDst7;\n\n\t\tk[8] = src[8];\n\t\tk[7] = src[7];\n\t\tk[6] = src[6];\n\t\tk[5] = src[5];\n\t\tk[4] = src[4];\n\t\tk[3] = src[3];\n\t\tk[2] = src[2];\n\t\tk[1] = src[1];\n\t\tk[0] = src[0];\n\t\tScalePixel(blendResult.xyzw, k, dst);\n\n\t\tk[8] = src[6];\n\t\tk[7] = src[5];\n\t\tk[6] = src[4];\n\t\tk[5] = src[3];\n\t\tk[4] = src[2];\n\t\tk[3] = src[1];\n\t\tk[2] = src[8];\n\t\tk[1] = src[7];\n\t\ttempDst8 = dst[8];\n\t\ttempDst7 = dst[7];\n\t\tdst[8] = dst[6];\n\t\tdst[7] = dst[5];\n\t\tdst[6] = dst[4];\n\t\tdst[5] = dst[3];\n\t\tdst[4] = dst[2];\n\t\tdst[3] = dst[1];\n\t\tdst[2] = tempDst8;\n\t\tdst[1] = tempDst7;\n\t\tScalePixel(blendResult.wxyz, k, dst);\n\n\t\tk[8] = src[4];\n\t\tk[7] = src[3];\n\t\tk[6] = src[2];\n\t\tk[5] = src[1];\n\t\tk[4] = src[8];\n\t\tk[3] = src[7];\n\t\tk[2] = src[6];\n\t\tk[1] = src[5];\n\t\ttempDst8 = dst[8];\n\t\ttempDst7 = dst[7];\n\t\tdst[8] = dst[6];\n\t\tdst[7] = dst[5];\n\t\tdst[6] = dst[4];\n\t\tdst[5] = dst[3];\n\t\tdst[4] = dst[2];\n\t\tdst[3] = dst[1];\n\t\tdst[2] = tempDst8;\n\t\tdst[1] = tempDst7;\n\t\tScalePixel(blendResult.zwxy, k, dst);\n\n\t\tk[8] = src[2];\n\t\tk[7] = src[1];\n\t\tk[6] = src[8];\n\t\tk[5] = src[7];\n\t\tk[4] = src[6];\n\t\tk[3] = src[5];\n\t\tk[2] = src[4];\n\t\tk[1] = src[3];\n\t\ttempDst8 = dst[8];\n\t\ttempDst7 = dst[7];\n\t\tdst[8] = dst[6];\n\t\tdst[7] = dst[5];\n\t\tdst[6] = dst[4];\n\t\tdst[5] = dst[3];\n\t\tdst[4] = dst[2];\n\t\tdst[3] = dst[1];\n\t\tdst[2] = tempDst8;\n\t\tdst[1] = tempDst7;\n\t\tScalePixel(blendResult.yzwx, k, dst);\n\n\t\t// Rotate the destination pixels back to 0 degrees.\n\t\ttempDst8 = dst[8];\n\t\ttempDst7 = dst[7];\n\t\tdst[8] = dst[6];\n\t\tdst[7] = dst[5];\n\t\tdst[6] = dst[4];\n\t\tdst[5] = dst[3];\n\t\tdst[4] = dst[2];\n\t\tdst[3] = dst[1];\n\t\tdst[2] = tempDst8;\n\t\tdst[1] = tempDst7;\n\t}\n\n\t[unroll]\n\tfor (uint i = 0; i < 3; ++i) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j < 3; ++j) {\n\t\t\tOUTPUT[gxy + uint2(i, j)] = float4(dst[destIdx[j][i]], 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/xBRZ/xBRZ_4x.hlsl",
    "content": "// 移植自 https://github.com/libretro/common-shaders/blob/master/xbrz/shaders/4xbrz.cg\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 4\n//!HEIGHT INPUT_HEIGHT * 4\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 32\n//!NUM_THREADS 64\n\n#define BLEND_NONE 0\n#define BLEND_NORMAL 1\n#define BLEND_DOMINANT 2\n#define LUMINANCE_WEIGHT 1.0\n#define EQUAL_COLOR_TOLERANCE 30.0/255.0\n#define STEEP_DIRECTION_THRESHOLD 2.2\n#define DOMINANT_DIRECTION_THRESHOLD 3.6\n\nfloat reduce(const float3 color) {\n\treturn dot(color, float3(65536.0, 256.0, 1.0));\n}\n\nfloat DistYCbCr(const float3 pixA, const float3 pixB) {\n\tconst float3 w = float3(0.2627, 0.6780, 0.0593);\n\tconst float scaleB = 0.5 / (1.0 - w.b);\n\tconst float scaleR = 0.5 / (1.0 - w.r);\n\tfloat3 diff = pixA - pixB;\n\tfloat Y = dot(diff, w);\n\tfloat Cb = scaleB * (diff.b - Y);\n\tfloat Cr = scaleR * (diff.r - Y);\n\n\treturn sqrt(((LUMINANCE_WEIGHT * Y) * (LUMINANCE_WEIGHT * Y)) + (Cb * Cb) + (Cr * Cr));\n}\n\nbool IsPixEqual(const float3 pixA, const float3 pixB) {\n\treturn (DistYCbCr(pixA, pixB) < EQUAL_COLOR_TOLERANCE);\n}\n\nbool IsBlendingNeeded(const int4 blend) {\n\treturn any(!(blend == int4(BLEND_NONE, BLEND_NONE, BLEND_NONE, BLEND_NONE)));\n}\n\nconst static uint destIdx[4][4] = {\n\t{ 6,  7,  8,  9},\n\t{ 5,  0,  1, 10},\n\t{ 4,  3,  2, 11},\n\t{15, 14, 13, 12}\n};\n\n//---------------------------------------\n// Input Pixel Mapping:  --|21|22|23|--\n//                       19|06|07|08|09\n//                       18|05|00|01|10\n//                       17|04|03|02|11\n//                       --|15|14|13|--\n//\n// Output Pixel Mapping:  06|07|08|09\n//                        05|00|01|10\n//                        04|03|02|11\n//                        15|14|13|12\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) << 2) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tconst float2 inputPt = GetInputPt();\n\tconst float2 pos = ((gxy >> 2) + 0.5f) * inputPt;\n\n\t//    A1 B1 C1\n\t// A0 A  B  C  C4\n\t// D0 D  E  F  F4\n\t// G0 G  H  I  I4\n\t//    G5 H5 I5\n\n\tfloat4 t1 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, -2.0 * inputPt.y); // A1 B1 C1\n\tfloat4 t2 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, -inputPt.y);\t\t// A  B  C\n\tfloat4 t3 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, 0);\t\t\t\t// D  E  F\n\tfloat4 t4 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, inputPt.y);\t\t// G  H  I\n\tfloat4 t5 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, 2.0 * inputPt.y);\t// G5 H5 I5\n\tfloat4 t6 = pos.xyyy + float4(-2.0 * inputPt.x, -inputPt.y, 0, inputPt.y);\t// A0 D0 G0\n\tfloat4 t7 = pos.xyyy + float4(2.0 * inputPt.x, -inputPt.y, 0, inputPt.y);\t// C4 F4 I4\n\n\t//---------------------------------------\n\t// Input Pixel Mapping:  20|21|22|23|24\n\t//                       19|06|07|08|09\n\t//                       18|05|00|01|10\n\t//                       17|04|03|02|11\n\t//                       16|15|14|13|12\n\n\tfloat3 src[25];\n\n\tsrc[21] = INPUT.SampleLevel(sam, t1.xw, 0).rgb;\n\tsrc[22] = INPUT.SampleLevel(sam, t1.yw, 0).rgb;\n\tsrc[23] = INPUT.SampleLevel(sam, t1.zw, 0).rgb;\n\tsrc[6] = INPUT.SampleLevel(sam, t2.xw, 0).rgb;\n\tsrc[7] = INPUT.SampleLevel(sam, t2.yw, 0).rgb;\n\tsrc[8] = INPUT.SampleLevel(sam, t2.zw, 0).rgb;\n\tsrc[5] = INPUT.SampleLevel(sam, t3.xw, 0).rgb;\n\tsrc[0] = INPUT.SampleLevel(sam, t3.yw, 0).rgb;\n\tsrc[1] = INPUT.SampleLevel(sam, t3.zw, 0).rgb;\n\tsrc[4] = INPUT.SampleLevel(sam, t4.xw, 0).rgb;\n\tsrc[3] = INPUT.SampleLevel(sam, t4.yw, 0).rgb;\n\tsrc[2] = INPUT.SampleLevel(sam, t4.zw, 0).rgb;\n\tsrc[15] = INPUT.SampleLevel(sam, t5.xw, 0).rgb;\n\tsrc[14] = INPUT.SampleLevel(sam, t5.yw, 0).rgb;\n\tsrc[13] = INPUT.SampleLevel(sam, t5.zw, 0).rgb;\n\tsrc[19] = INPUT.SampleLevel(sam, t6.xy, 0).rgb;\n\tsrc[18] = INPUT.SampleLevel(sam, t6.xz, 0).rgb;\n\tsrc[17] = INPUT.SampleLevel(sam, t6.xw, 0).rgb;\n\tsrc[9] = INPUT.SampleLevel(sam, t7.xy, 0).rgb;\n\tsrc[10] = INPUT.SampleLevel(sam, t7.xz, 0).rgb;\n\tsrc[11] = INPUT.SampleLevel(sam, t7.xw, 0).rgb;\n\n\t//---------------------------------------\n\t// Input Pixel Mapping:  20|21|22|23|24\n\t//                       19|06|07|08|09\n\t//                       18|05|00|01|10\n\t//                       17|04|03|02|11\n\t//                       16|15|14|13|12\n\n\tfloat v[9];\n\tv[0] = reduce(src[0]);\n\tv[1] = reduce(src[1]);\n\tv[2] = reduce(src[2]);\n\tv[3] = reduce(src[3]);\n\tv[4] = reduce(src[4]);\n\tv[5] = reduce(src[5]);\n\tv[6] = reduce(src[6]);\n\tv[7] = reduce(src[7]);\n\tv[8] = reduce(src[8]);\n\n\tint4 blendResult = int4(BLEND_NONE, BLEND_NONE, BLEND_NONE, BLEND_NONE);\n\n\t// Preprocess corners\n\t// Pixel Tap Mapping: --|--|--|--|--\n\t//                    --|--|07|08|--\n\t//                    --|05|00|01|10\n\t//                    --|04|03|02|11\n\t//                    --|--|14|13|--\n\n\t// Corner (1, 1)\n\tif (!((v[0] == v[1] && v[3] == v[2]) || (v[0] == v[3] && v[1] == v[2]))) {\n\t\tfloat dist_03_01 = DistYCbCr(src[4], src[0]) + DistYCbCr(src[0], src[8]) + DistYCbCr(src[14], src[2]) + DistYCbCr(src[2], src[10]) + (4.0 * DistYCbCr(src[3], src[1]));\n\t\tfloat dist_00_02 = DistYCbCr(src[5], src[3]) + DistYCbCr(src[3], src[13]) + DistYCbCr(src[7], src[1]) + DistYCbCr(src[1], src[11]) + (4.0 * DistYCbCr(src[0], src[2]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_03_01) < dist_00_02;\n\t\tblendResult[2] = ((dist_03_01 < dist_00_02) && (v[0] != v[1]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\n\t// Pixel Tap Mapping: --|--|--|--|--\n\t//                    --|06|07|--|--\n\t//                    18|05|00|01|--\n\t//                    17|04|03|02|--\n\t//                    --|15|14|--|--\n\t// Corner (0, 1)\n\tif (!((v[5] == v[0] && v[4] == v[3]) || (v[5] == v[4] && v[0] == v[3]))) {\n\t\tfloat dist_04_00 = DistYCbCr(src[17], src[5]) + DistYCbCr(src[5], src[7]) + DistYCbCr(src[15], src[3]) + DistYCbCr(src[3], src[1]) + (4.0 * DistYCbCr(src[4], src[0]));\n\t\tfloat dist_05_03 = DistYCbCr(src[18], src[4]) + DistYCbCr(src[4], src[14]) + DistYCbCr(src[6], src[0]) + DistYCbCr(src[0], src[2]) + (4.0 * DistYCbCr(src[5], src[3]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_03) < dist_04_00;\n\t\tblendResult[3] = ((dist_04_00 > dist_05_03) && (v[0] != v[5]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\t// Pixel Tap Mapping: --|--|22|23|--\n\t//                    --|06|07|08|09\n\t//                    --|05|00|01|10\n\t//                    --|--|03|02|--\n\t//                    --|--|--|--|--\n\t// Corner (1, 0)\n\tif (!((v[7] == v[8] && v[0] == v[1]) || (v[7] == v[0] && v[8] == v[1]))) {\n\t\tfloat dist_00_08 = DistYCbCr(src[5], src[7]) + DistYCbCr(src[7], src[23]) + DistYCbCr(src[3], src[1]) + DistYCbCr(src[1], src[9]) + (4.0 * DistYCbCr(src[0], src[8]));\n\t\tfloat dist_07_01 = DistYCbCr(src[6], src[0]) + DistYCbCr(src[0], src[2]) + DistYCbCr(src[22], src[8]) + DistYCbCr(src[8], src[10]) + (4.0 * DistYCbCr(src[7], src[1]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_07_01) < dist_00_08;\n\t\tblendResult[1] = ((dist_00_08 > dist_07_01) && (v[0] != v[7]) && (v[0] != v[1])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\t// Pixel Tap Mapping: --|21|22|--|--\n\t//                    19|06|07|08|--\n\t//                    18|05|00|01|--\n\t//                    --|04|03|--|--\n\t//                    --|--|--|--|--\n\t// Corner (0, 0)\n\tif (!((v[6] == v[7] && v[5] == v[0]) || (v[6] == v[5] && v[7] == v[0]))) {\n\t\tfloat dist_05_07 = DistYCbCr(src[18], src[6]) + DistYCbCr(src[6], src[22]) + DistYCbCr(src[4], src[0]) + DistYCbCr(src[0], src[8]) + (4.0 * DistYCbCr(src[5], src[7]));\n\t\tfloat dist_06_00 = DistYCbCr(src[19], src[5]) + DistYCbCr(src[5], src[3]) + DistYCbCr(src[21], src[7]) + DistYCbCr(src[7], src[1]) + (4.0 * DistYCbCr(src[6], src[0]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_07) < dist_06_00;\n\t\tblendResult[0] = ((dist_05_07 < dist_06_00) && (v[0] != v[5]) && (v[0] != v[7])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\tfloat3 dst[16];\n\tdst[0] = src[0];\n\tdst[1] = src[0];\n\tdst[2] = src[0];\n\tdst[3] = src[0];\n\tdst[4] = src[0];\n\tdst[5] = src[0];\n\tdst[6] = src[0];\n\tdst[7] = src[0];\n\tdst[8] = src[0];\n\tdst[9] = src[0];\n\tdst[10] = src[0];\n\tdst[11] = src[0];\n\tdst[12] = src[0];\n\tdst[13] = src[0];\n\tdst[14] = src[0];\n\tdst[15] = src[0];\n\n\t// Scale pixel\n\tif (IsBlendingNeeded(blendResult)) {\n\t\tfloat dist_01_04 = DistYCbCr(src[1], src[4]);\n\t\tfloat dist_03_08 = DistYCbCr(src[3], src[8]);\n\t\tbool haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[4]) && (v[5] != v[4]);\n\t\tbool haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[8]) && (v[7] != v[8]);\n\t\tbool needBlend = (blendResult[2] != BLEND_NONE);\n\t\tbool doLineBlend = (blendResult[2] >= BLEND_DOMINANT ||\n\t\t\t!((blendResult[1] != BLEND_NONE && !IsPixEqual(src[0], src[4])) ||\n\t\t\t\t(blendResult[3] != BLEND_NONE && !IsPixEqual(src[0], src[8])) ||\n\t\t\t\t(IsPixEqual(src[4], src[3]) && IsPixEqual(src[3], src[2]) && IsPixEqual(src[2], src[1]) && IsPixEqual(src[1], src[8]) && !IsPixEqual(src[0], src[2]))));\n\n\t\tfloat3 blendPix = (DistYCbCr(src[0], src[1]) <= DistYCbCr(src[0], src[3])) ? src[1] : src[3];\n\t\tdst[2] = lerp(dst[2], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 1.0 / 3.0 : 0.25) : ((haveSteepLine) ? 0.25 : 0.00)) : 0.00);\n\t\tdst[9] = lerp(dst[9], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);\n\t\tdst[10] = lerp(dst[10], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.75 : 0.00);\n\t\tdst[11] = lerp(dst[11], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.00 : ((haveShallowLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);\n\t\tdst[12] = lerp(dst[12], blendPix, (needBlend) ? ((doLineBlend) ? 1.00 : 0.6848532563) : 0.00);\n\t\tdst[13] = lerp(dst[13], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.00 : ((haveSteepLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);\n\t\tdst[14] = lerp(dst[14], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.75 : 0.00);\n\t\tdst[15] = lerp(dst[15], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);\n\n\n\t\tdist_01_04 = DistYCbCr(src[7], src[2]);\n\t\tdist_03_08 = DistYCbCr(src[1], src[6]);\n\t\thaveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[2]) && (v[3] != v[2]);\n\t\thaveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[6]) && (v[5] != v[6]);\n\t\tneedBlend = (blendResult[1] != BLEND_NONE);\n\t\tdoLineBlend = (blendResult[1] >= BLEND_DOMINANT ||\n\t\t\t!((blendResult[0] != BLEND_NONE && !IsPixEqual(src[0], src[2])) ||\n\t\t\t\t(blendResult[2] != BLEND_NONE && !IsPixEqual(src[0], src[6])) ||\n\t\t\t\t(IsPixEqual(src[2], src[1]) && IsPixEqual(src[1], src[8]) && IsPixEqual(src[8], src[7]) && IsPixEqual(src[7], src[6]) && !IsPixEqual(src[0], src[8]))));\n\n\t\tblendPix = (DistYCbCr(src[0], src[7]) <= DistYCbCr(src[0], src[1])) ? src[7] : src[1];\n\t\tdst[1] = lerp(dst[1], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 1.0 / 3.0 : 0.25) : ((haveSteepLine) ? 0.25 : 0.00)) : 0.00);\n\t\tdst[6] = lerp(dst[6], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);\n\t\tdst[7] = lerp(dst[7], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.75 : 0.00);\n\t\tdst[8] = lerp(dst[8], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.00 : ((haveShallowLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);\n\t\tdst[9] = lerp(dst[9], blendPix, (needBlend) ? ((doLineBlend) ? 1.00 : 0.6848532563) : 0.00);\n\t\tdst[10] = lerp(dst[10], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.00 : ((haveSteepLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);\n\t\tdst[11] = lerp(dst[11], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.75 : 0.00);\n\t\tdst[12] = lerp(dst[12], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);\n\n\n\t\tdist_01_04 = DistYCbCr(src[5], src[8]);\n\t\tdist_03_08 = DistYCbCr(src[7], src[4]);\n\t\thaveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[8]) && (v[1] != v[8]);\n\t\thaveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[4]) && (v[3] != v[4]);\n\t\tneedBlend = (blendResult[0] != BLEND_NONE);\n\t\tdoLineBlend = (blendResult[0] >= BLEND_DOMINANT ||\n\t\t\t!((blendResult[3] != BLEND_NONE && !IsPixEqual(src[0], src[8])) ||\n\t\t\t\t(blendResult[1] != BLEND_NONE && !IsPixEqual(src[0], src[4])) ||\n\t\t\t\t(IsPixEqual(src[8], src[7]) && IsPixEqual(src[7], src[6]) && IsPixEqual(src[6], src[5]) && IsPixEqual(src[5], src[4]) && !IsPixEqual(src[0], src[6]))));\n\n\t\tblendPix = (DistYCbCr(src[0], src[5]) <= DistYCbCr(src[0], src[7])) ? src[5] : src[7];\n\t\tdst[0] = lerp(dst[0], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 1.0 / 3.0 : 0.25) : ((haveSteepLine) ? 0.25 : 0.00)) : 0.00);\n\t\tdst[15] = lerp(dst[15], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);\n\t\tdst[4] = lerp(dst[4], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.75 : 0.00);\n\t\tdst[5] = lerp(dst[5], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.00 : ((haveShallowLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);\n\t\tdst[6] = lerp(dst[6], blendPix, (needBlend) ? ((doLineBlend) ? 1.00 : 0.6848532563) : 0.00);\n\t\tdst[7] = lerp(dst[7], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.00 : ((haveSteepLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);\n\t\tdst[8] = lerp(dst[8], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.75 : 0.00);\n\t\tdst[9] = lerp(dst[9], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);\n\n\n\t\tdist_01_04 = DistYCbCr(src[3], src[6]);\n\t\tdist_03_08 = DistYCbCr(src[5], src[2]);\n\t\thaveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[6]) && (v[7] != v[6]);\n\t\thaveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[2]) && (v[1] != v[2]);\n\t\tneedBlend = (blendResult[3] != BLEND_NONE);\n\t\tdoLineBlend = (blendResult[3] >= BLEND_DOMINANT ||\n\t\t\t!((blendResult[2] != BLEND_NONE && !IsPixEqual(src[0], src[6])) ||\n\t\t\t\t(blendResult[0] != BLEND_NONE && !IsPixEqual(src[0], src[2])) ||\n\t\t\t\t(IsPixEqual(src[6], src[5]) && IsPixEqual(src[5], src[4]) && IsPixEqual(src[4], src[3]) && IsPixEqual(src[3], src[2]) && !IsPixEqual(src[0], src[4]))));\n\n\t\tblendPix = (DistYCbCr(src[0], src[3]) <= DistYCbCr(src[0], src[5])) ? src[3] : src[5];\n\t\tdst[3] = lerp(dst[3], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 1.0 / 3.0 : 0.25) : ((haveSteepLine) ? 0.25 : 0.00)) : 0.00);\n\t\tdst[12] = lerp(dst[12], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);\n\t\tdst[13] = lerp(dst[13], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.75 : 0.00);\n\t\tdst[14] = lerp(dst[14], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.00 : ((haveShallowLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);\n\t\tdst[15] = lerp(dst[15], blendPix, (needBlend) ? ((doLineBlend) ? 1.00 : 0.6848532563) : 0.00);\n\t\tdst[4] = lerp(dst[4], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.00 : ((haveSteepLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);\n\t\tdst[5] = lerp(dst[5], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.75 : 0.00);\n\t\tdst[6] = lerp(dst[6], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);\n\t}\n\n\t[unroll]\n\tfor (uint i = 0; i < 4; ++i) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j < 4; ++j) {\n\t\t\tOUTPUT[gxy + uint2(i, j)] = float4(dst[destIdx[j][i]], 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/xBRZ/xBRZ_5x.hlsl",
    "content": "// 移植自 https://github.com/libretro/common-shaders/blob/master/xbrz/shaders/5xbrz.cg\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 5\n//!HEIGHT INPUT_HEIGHT * 5\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 40\n//!NUM_THREADS 64\n\n#define BLEND_NONE 0\n#define BLEND_NORMAL 1\n#define BLEND_DOMINANT 2\n#define LUMINANCE_WEIGHT 1.0\n#define EQUAL_COLOR_TOLERANCE 30.0/255.0\n#define STEEP_DIRECTION_THRESHOLD 2.2\n#define DOMINANT_DIRECTION_THRESHOLD 3.6\n\nfloat reduce(const float3 color) {\n\treturn dot(color, float3(65536.0, 256.0, 1.0));\n}\n\nfloat DistYCbCr(const float3 pixA, const float3 pixB) {\n\tconst float3 w = float3(0.2627, 0.6780, 0.0593);\n\tconst float scaleB = 0.5 / (1.0 - w.b);\n\tconst float scaleR = 0.5 / (1.0 - w.r);\n\tfloat3 diff = pixA - pixB;\n\tfloat Y = dot(diff, w);\n\tfloat Cb = scaleB * (diff.b - Y);\n\tfloat Cr = scaleR * (diff.r - Y);\n\n\treturn sqrt(((LUMINANCE_WEIGHT * Y) * (LUMINANCE_WEIGHT * Y)) + (Cb * Cb) + (Cr * Cr));\n}\n\nbool IsPixEqual(const float3 pixA, const float3 pixB) {\n\treturn (DistYCbCr(pixA, pixB) < EQUAL_COLOR_TOLERANCE);\n}\n\nbool IsBlendingNeeded(const int4 blend) {\n\treturn any(!(blend == int4(BLEND_NONE, BLEND_NONE, BLEND_NONE, BLEND_NONE)));\n}\n\nconst static uint destIdx[5][5] = {\n\t{20, 21, 22, 23, 24},\n\t{19,  6,  7,  8,  9},\n\t{18,  5,  0,  1, 10},\n\t{17,  4,  3,  2, 11},\n\t{16, 15, 14, 13, 12}\n};\n\n//---------------------------------------\n// Input Pixel Mapping:  --|21|22|23|--\n//                       19|06|07|08|09\n//                       18|05|00|01|10\n//                       17|04|03|02|11\n//                       --|15|14|13|--\n//\n// Output Pixel Mapping: 20|21|22|23|24\n//                       19|06|07|08|09\n//                       18|05|00|01|10\n//                       17|04|03|02|11\n//                       16|15|14|13|12\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) * 5) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tconst float2 inputPt = GetInputPt();\n\tconst float2 pos = ((gxy / 5) + 0.5f) * inputPt;\n\n\t//    A1 B1 C1\n\t// A0 A  B  C  C4\n\t// D0 D  E  F  F4\n\t// G0 G  H  I  I4\n\t//    G5 H5 I5\n\n\tfloat4 t1 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, -2.0 * inputPt.y); // A1 B1 C1\n\tfloat4 t2 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, -inputPt.y);\t\t// A  B  C\n\tfloat4 t3 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, 0);\t\t\t\t// D  E  F\n\tfloat4 t4 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, inputPt.y);\t\t// G  H  I\n\tfloat4 t5 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, 2.0 * inputPt.y);\t// G5 H5 I5\n\tfloat4 t6 = pos.xyyy + float4(-2.0 * inputPt.x, -inputPt.y, 0, inputPt.y);\t// A0 D0 G0\n\tfloat4 t7 = pos.xyyy + float4(2.0 * inputPt.x, -inputPt.y, 0, inputPt.y);\t// C4 F4 I4\n\n\t//---------------------------------------\n\t// Input Pixel Mapping:  20|21|22|23|24\n\t//                       19|06|07|08|09\n\t//                       18|05|00|01|10\n\t//                       17|04|03|02|11\n\t//                       16|15|14|13|12\n\n\tfloat3 src[25];\n\n\tsrc[21] = INPUT.SampleLevel(sam, t1.xw, 0).rgb;\n\tsrc[22] = INPUT.SampleLevel(sam, t1.yw, 0).rgb;\n\tsrc[23] = INPUT.SampleLevel(sam, t1.zw, 0).rgb;\n\tsrc[6] = INPUT.SampleLevel(sam, t2.xw, 0).rgb;\n\tsrc[7] = INPUT.SampleLevel(sam, t2.yw, 0).rgb;\n\tsrc[8] = INPUT.SampleLevel(sam, t2.zw, 0).rgb;\n\tsrc[5] = INPUT.SampleLevel(sam, t3.xw, 0).rgb;\n\tsrc[0] = INPUT.SampleLevel(sam, t3.yw, 0).rgb;\n\tsrc[1] = INPUT.SampleLevel(sam, t3.zw, 0).rgb;\n\tsrc[4] = INPUT.SampleLevel(sam, t4.xw, 0).rgb;\n\tsrc[3] = INPUT.SampleLevel(sam, t4.yw, 0).rgb;\n\tsrc[2] = INPUT.SampleLevel(sam, t4.zw, 0).rgb;\n\tsrc[15] = INPUT.SampleLevel(sam, t5.xw, 0).rgb;\n\tsrc[14] = INPUT.SampleLevel(sam, t5.yw, 0).rgb;\n\tsrc[13] = INPUT.SampleLevel(sam, t5.zw, 0).rgb;\n\tsrc[19] = INPUT.SampleLevel(sam, t6.xy, 0).rgb;\n\tsrc[18] = INPUT.SampleLevel(sam, t6.xz, 0).rgb;\n\tsrc[17] = INPUT.SampleLevel(sam, t6.xw, 0).rgb;\n\tsrc[9] = INPUT.SampleLevel(sam, t7.xy, 0).rgb;\n\tsrc[10] = INPUT.SampleLevel(sam, t7.xz, 0).rgb;\n\tsrc[11] = INPUT.SampleLevel(sam, t7.xw, 0).rgb;\n\n\t//---------------------------------------\n\t// Input Pixel Mapping:  20|21|22|23|24\n\t//                       19|06|07|08|09\n\t//                       18|05|00|01|10\n\t//                       17|04|03|02|11\n\t//                       16|15|14|13|12\n\n\tfloat v[9];\n\tv[0] = reduce(src[0]);\n\tv[1] = reduce(src[1]);\n\tv[2] = reduce(src[2]);\n\tv[3] = reduce(src[3]);\n\tv[4] = reduce(src[4]);\n\tv[5] = reduce(src[5]);\n\tv[6] = reduce(src[6]);\n\tv[7] = reduce(src[7]);\n\tv[8] = reduce(src[8]);\n\n\tint4 blendResult = int4(BLEND_NONE, BLEND_NONE, BLEND_NONE, BLEND_NONE);\n\n\t// Preprocess corners\n\t// Pixel Tap Mapping: --|--|--|--|--\n\t//                    --|--|07|08|--\n\t//                    --|05|00|01|10\n\t//                    --|04|03|02|11\n\t//                    --|--|14|13|--\n\n\t// Corner (1, 1)\n\tif (!((v[0] == v[1] && v[3] == v[2]) || (v[0] == v[3] && v[1] == v[2]))) {\n\t\tfloat dist_03_01 = DistYCbCr(src[4], src[0]) + DistYCbCr(src[0], src[8]) + DistYCbCr(src[14], src[2]) + DistYCbCr(src[2], src[10]) + (4.0 * DistYCbCr(src[3], src[1]));\n\t\tfloat dist_00_02 = DistYCbCr(src[5], src[3]) + DistYCbCr(src[3], src[13]) + DistYCbCr(src[7], src[1]) + DistYCbCr(src[1], src[11]) + (4.0 * DistYCbCr(src[0], src[2]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_03_01) < dist_00_02;\n\t\tblendResult[2] = ((dist_03_01 < dist_00_02) && (v[0] != v[1]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\n\t// Pixel Tap Mapping: --|--|--|--|--\n\t//                    --|06|07|--|--\n\t//                    18|05|00|01|--\n\t//                    17|04|03|02|--\n\t//                    --|15|14|--|--\n\t// Corner (0, 1)\n\tif (!((v[5] == v[0] && v[4] == v[3]) || (v[5] == v[4] && v[0] == v[3]))) {\n\t\tfloat dist_04_00 = DistYCbCr(src[17], src[5]) + DistYCbCr(src[5], src[7]) + DistYCbCr(src[15], src[3]) + DistYCbCr(src[3], src[1]) + (4.0 * DistYCbCr(src[4], src[0]));\n\t\tfloat dist_05_03 = DistYCbCr(src[18], src[4]) + DistYCbCr(src[4], src[14]) + DistYCbCr(src[6], src[0]) + DistYCbCr(src[0], src[2]) + (4.0 * DistYCbCr(src[5], src[3]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_03) < dist_04_00;\n\t\tblendResult[3] = ((dist_04_00 > dist_05_03) && (v[0] != v[5]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\t// Pixel Tap Mapping: --|--|22|23|--\n\t//                    --|06|07|08|09\n\t//                    --|05|00|01|10\n\t//                    --|--|03|02|--\n\t//                    --|--|--|--|--\n\t// Corner (1, 0)\n\tif (!((v[7] == v[8] && v[0] == v[1]) || (v[7] == v[0] && v[8] == v[1]))) {\n\t\tfloat dist_00_08 = DistYCbCr(src[5], src[7]) + DistYCbCr(src[7], src[23]) + DistYCbCr(src[3], src[1]) + DistYCbCr(src[1], src[9]) + (4.0 * DistYCbCr(src[0], src[8]));\n\t\tfloat dist_07_01 = DistYCbCr(src[6], src[0]) + DistYCbCr(src[0], src[2]) + DistYCbCr(src[22], src[8]) + DistYCbCr(src[8], src[10]) + (4.0 * DistYCbCr(src[7], src[1]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_07_01) < dist_00_08;\n\t\tblendResult[1] = ((dist_00_08 > dist_07_01) && (v[0] != v[7]) && (v[0] != v[1])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\t// Pixel Tap Mapping: --|21|22|--|--\n\t//                    19|06|07|08|--\n\t//                    18|05|00|01|--\n\t//                    --|04|03|--|--\n\t//                    --|--|--|--|--\n\t// Corner (0, 0)\n\tif (!((v[6] == v[7] && v[5] == v[0]) || (v[6] == v[5] && v[7] == v[0]))) {\n\t\tfloat dist_05_07 = DistYCbCr(src[18], src[6]) + DistYCbCr(src[6], src[22]) + DistYCbCr(src[4], src[0]) + DistYCbCr(src[0], src[8]) + (4.0 * DistYCbCr(src[5], src[7]));\n\t\tfloat dist_06_00 = DistYCbCr(src[19], src[5]) + DistYCbCr(src[5], src[3]) + DistYCbCr(src[21], src[7]) + DistYCbCr(src[7], src[1]) + (4.0 * DistYCbCr(src[6], src[0]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_07) < dist_06_00;\n\t\tblendResult[0] = ((dist_05_07 < dist_06_00) && (v[0] != v[5]) && (v[0] != v[7])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\tfloat3 dst[25];\n\tdst[0] = src[0];\n\tdst[1] = src[0];\n\tdst[2] = src[0];\n\tdst[3] = src[0];\n\tdst[4] = src[0];\n\tdst[5] = src[0];\n\tdst[6] = src[0];\n\tdst[7] = src[0];\n\tdst[8] = src[0];\n\tdst[9] = src[0];\n\tdst[10] = src[0];\n\tdst[11] = src[0];\n\tdst[12] = src[0];\n\tdst[13] = src[0];\n\tdst[14] = src[0];\n\tdst[15] = src[0];\n\tdst[16] = src[0];\n\tdst[17] = src[0];\n\tdst[18] = src[0];\n\tdst[19] = src[0];\n\tdst[20] = src[0];\n\tdst[21] = src[0];\n\tdst[22] = src[0];\n\tdst[23] = src[0];\n\tdst[24] = src[0];\n\n\t// Scale pixel\n\tif (IsBlendingNeeded(blendResult)) {\n\t\tfloat dist_01_04 = DistYCbCr(src[1], src[4]);\n\t\tfloat dist_03_08 = DistYCbCr(src[3], src[8]);\n\t\tbool haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[4]) && (v[5] != v[4]);\n\t\tbool haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[8]) && (v[7] != v[8]);\n\t\tbool needBlend = (blendResult[2] != BLEND_NONE);\n\t\tbool doLineBlend = (blendResult[2] >= BLEND_DOMINANT ||\n\t\t\t!((blendResult[1] != BLEND_NONE && !IsPixEqual(src[0], src[4])) ||\n\t\t\t\t(blendResult[3] != BLEND_NONE && !IsPixEqual(src[0], src[8])) ||\n\t\t\t\t(IsPixEqual(src[4], src[3]) && IsPixEqual(src[3], src[2]) && IsPixEqual(src[2], src[1]) && IsPixEqual(src[1], src[8]) && !IsPixEqual(src[0], src[2]))));\n\n\t\tfloat3 blendPix = (DistYCbCr(src[0], src[1]) <= DistYCbCr(src[0], src[3])) ? src[1] : src[3];\n\t\tdst[1] = lerp(dst[1], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t\tdst[2] = lerp(dst[2], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 2.0 / 3.0 : 0.750) : ((haveSteepLine) ? 0.750 : 0.125)) : 0.000);\n\t\tdst[3] = lerp(dst[3], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t\tdst[9] = lerp(dst[9], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.750 : 0.000);\n\t\tdst[10] = lerp(dst[10], blendPix, (needBlend && doLineBlend) ? ((haveSteepLine) ? 1.000 : ((haveShallowLine) ? 0.250 : 0.125)) : 0.000);\n\t\tdst[11] = lerp(dst[11], blendPix, (needBlend) ? ((doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.875 : 1.000) : 0.2306749731) : 0.000);\n\t\tdst[12] = lerp(dst[12], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.8631434088) : 0.000);\n\t\tdst[13] = lerp(dst[13], blendPix, (needBlend) ? ((doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.875 : 1.000) : 0.2306749731) : 0.000);\n\t\tdst[14] = lerp(dst[14], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? 1.000 : ((haveSteepLine) ? 0.250 : 0.125)) : 0.000);\n\t\tdst[15] = lerp(dst[15], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.750 : 0.000);\n\t\tdst[16] = lerp(dst[16], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t\tdst[24] = lerp(dst[24], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\n\n\t\tdist_01_04 = DistYCbCr(src[7], src[2]);\n\t\tdist_03_08 = DistYCbCr(src[1], src[6]);\n\t\thaveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[2]) && (v[3] != v[2]);\n\t\thaveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[6]) && (v[5] != v[6]);\n\t\tneedBlend = (blendResult[1] != BLEND_NONE);\n\t\tdoLineBlend = (blendResult[1] >= BLEND_DOMINANT ||\n\t\t\t!((blendResult[0] != BLEND_NONE && !IsPixEqual(src[0], src[2])) ||\n\t\t\t\t(blendResult[2] != BLEND_NONE && !IsPixEqual(src[0], src[6])) ||\n\t\t\t\t(IsPixEqual(src[2], src[1]) && IsPixEqual(src[1], src[8]) && IsPixEqual(src[8], src[7]) && IsPixEqual(src[7], src[6]) && !IsPixEqual(src[0], src[8]))));\n\n\t\tblendPix = (DistYCbCr(src[0], src[7]) <= DistYCbCr(src[0], src[1])) ? src[7] : src[1];\n\t\tdst[7] = lerp(dst[7], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t\tdst[8] = lerp(dst[8], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 2.0 / 3.0 : 0.750) : ((haveSteepLine) ? 0.750 : 0.125)) : 0.000);\n\t\tdst[1] = lerp(dst[1], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t\tdst[21] = lerp(dst[21], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.750 : 0.000);\n\t\tdst[22] = lerp(dst[22], blendPix, (needBlend && doLineBlend) ? ((haveSteepLine) ? 1.000 : ((haveShallowLine) ? 0.250 : 0.125)) : 0.000);\n\t\tdst[23] = lerp(dst[23], blendPix, (needBlend) ? ((doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.875 : 1.000) : 0.2306749731) : 0.000);\n\t\tdst[24] = lerp(dst[24], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.8631434088) : 0.000);\n\t\tdst[9] = lerp(dst[9], blendPix, (needBlend) ? ((doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.875 : 1.000) : 0.2306749731) : 0.000);\n\t\tdst[10] = lerp(dst[10], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? 1.000 : ((haveSteepLine) ? 0.250 : 0.125)) : 0.000);\n\t\tdst[11] = lerp(dst[11], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.750 : 0.000);\n\t\tdst[12] = lerp(dst[12], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t\tdst[20] = lerp(dst[20], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\n\n\t\tdist_01_04 = DistYCbCr(src[5], src[8]);\n\t\tdist_03_08 = DistYCbCr(src[7], src[4]);\n\t\thaveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[8]) && (v[1] != v[8]);\n\t\thaveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[4]) && (v[3] != v[4]);\n\t\tneedBlend = (blendResult[0] != BLEND_NONE);\n\t\tdoLineBlend = (blendResult[0] >= BLEND_DOMINANT ||\n\t\t\t!((blendResult[3] != BLEND_NONE && !IsPixEqual(src[0], src[8])) ||\n\t\t\t\t(blendResult[1] != BLEND_NONE && !IsPixEqual(src[0], src[4])) ||\n\t\t\t\t(IsPixEqual(src[8], src[7]) && IsPixEqual(src[7], src[6]) && IsPixEqual(src[6], src[5]) && IsPixEqual(src[5], src[4]) && !IsPixEqual(src[0], src[6]))));\n\n\t\tblendPix = (DistYCbCr(src[0], src[5]) <= DistYCbCr(src[0], src[7])) ? src[5] : src[7];\n\t\tdst[5] = lerp(dst[5], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t\tdst[6] = lerp(dst[6], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 2.0 / 3.0 : 0.750) : ((haveSteepLine) ? 0.750 : 0.125)) : 0.000);\n\t\tdst[7] = lerp(dst[7], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t\tdst[17] = lerp(dst[17], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.750 : 0.000);\n\t\tdst[18] = lerp(dst[18], blendPix, (needBlend && doLineBlend) ? ((haveSteepLine) ? 1.000 : ((haveShallowLine) ? 0.250 : 0.125)) : 0.000);\n\t\tdst[19] = lerp(dst[19], blendPix, (needBlend) ? ((doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.875 : 1.000) : 0.2306749731) : 0.000);\n\t\tdst[20] = lerp(dst[20], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.8631434088) : 0.000);\n\t\tdst[21] = lerp(dst[21], blendPix, (needBlend) ? ((doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.875 : 1.000) : 0.2306749731) : 0.000);\n\t\tdst[22] = lerp(dst[22], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? 1.000 : ((haveSteepLine) ? 0.250 : 0.125)) : 0.000);\n\t\tdst[23] = lerp(dst[23], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.750 : 0.000);\n\t\tdst[24] = lerp(dst[24], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t\tdst[16] = lerp(dst[16], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\n\n\t\tdist_01_04 = DistYCbCr(src[3], src[6]);\n\t\tdist_03_08 = DistYCbCr(src[5], src[2]);\n\t\thaveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[6]) && (v[7] != v[6]);\n\t\thaveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[2]) && (v[1] != v[2]);\n\t\tneedBlend = (blendResult[3] != BLEND_NONE);\n\t\tdoLineBlend = (blendResult[3] >= BLEND_DOMINANT ||\n\t\t\t!((blendResult[2] != BLEND_NONE && !IsPixEqual(src[0], src[6])) ||\n\t\t\t\t(blendResult[0] != BLEND_NONE && !IsPixEqual(src[0], src[2])) ||\n\t\t\t\t(IsPixEqual(src[6], src[5]) && IsPixEqual(src[5], src[4]) && IsPixEqual(src[4], src[3]) && IsPixEqual(src[3], src[2]) && !IsPixEqual(src[0], src[4]))));\n\n\t\tblendPix = (DistYCbCr(src[0], src[3]) <= DistYCbCr(src[0], src[5])) ? src[3] : src[5];\n\t\tdst[3] = lerp(dst[3], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t\tdst[4] = lerp(dst[4], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 2.0 / 3.0 : 0.750) : ((haveSteepLine) ? 0.750 : 0.125)) : 0.000);\n\t\tdst[5] = lerp(dst[5], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t\tdst[13] = lerp(dst[13], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.750 : 0.000);\n\t\tdst[14] = lerp(dst[14], blendPix, (needBlend && doLineBlend) ? ((haveSteepLine) ? 1.000 : ((haveShallowLine) ? 0.250 : 0.125)) : 0.000);\n\t\tdst[15] = lerp(dst[15], blendPix, (needBlend) ? ((doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.875 : 1.000) : 0.2306749731) : 0.000);\n\t\tdst[16] = lerp(dst[16], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.8631434088) : 0.000);\n\t\tdst[17] = lerp(dst[17], blendPix, (needBlend) ? ((doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.875 : 1.000) : 0.2306749731) : 0.000);\n\t\tdst[18] = lerp(dst[18], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? 1.000 : ((haveSteepLine) ? 0.250 : 0.125)) : 0.000);\n\t\tdst[19] = lerp(dst[19], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.750 : 0.000);\n\t\tdst[20] = lerp(dst[20], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t\tdst[12] = lerp(dst[12], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t}\n\n\t[unroll]\n\tfor (uint i = 0; i < 5; ++i) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j < 5; ++j) {\n\t\t\tOUTPUT[gxy + uint2(i, j)] = float4(dst[destIdx[j][i]], 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/xBRZ/xBRZ_6x.hlsl",
    "content": "// 移植自 https://github.com/libretro/common-shaders/blob/master/xbrz/shaders/6xbrz.cg\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH * 6\n//!HEIGHT INPUT_HEIGHT * 6\nTexture2D OUTPUT;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT OUTPUT\n//!BLOCK_SIZE 48\n//!NUM_THREADS 64\n\n#define BLEND_NONE 0\n#define BLEND_NORMAL 1\n#define BLEND_DOMINANT 2\n#define LUMINANCE_WEIGHT 1.0\n#define EQUAL_COLOR_TOLERANCE 30.0/255.0\n#define STEEP_DIRECTION_THRESHOLD 2.2\n#define DOMINANT_DIRECTION_THRESHOLD 3.6\n\nstatic const float  one_sixth = 1.0 / 6.0;\nstatic const float  two_sixth = 2.0 / 6.0;\nstatic const float four_sixth = 4.0 / 6.0;\nstatic const float five_sixth = 5.0 / 6.0;\nfloat reduce(const float3 color) {\n\treturn dot(color, float3(65536.0, 256.0, 1.0));\n}\n\nfloat DistYCbCr(const float3 pixA, const float3 pixB) {\n\tconst float3 w = float3(0.2627, 0.6780, 0.0593);\n\tconst float scaleB = 0.5 / (1.0 - w.b);\n\tconst float scaleR = 0.5 / (1.0 - w.r);\n\tfloat3 diff = pixA - pixB;\n\tfloat Y = dot(diff, w);\n\tfloat Cb = scaleB * (diff.b - Y);\n\tfloat Cr = scaleR * (diff.r - Y);\n\n\treturn sqrt(((LUMINANCE_WEIGHT * Y) * (LUMINANCE_WEIGHT * Y)) + (Cb * Cb) + (Cr * Cr));\n}\n\nbool IsPixEqual(const float3 pixA, const float3 pixB) {\n\treturn (DistYCbCr(pixA, pixB) < EQUAL_COLOR_TOLERANCE);\n}\n\nbool IsBlendingNeeded(const int4 blend) {\n\treturn any(!(blend == int4(BLEND_NONE, BLEND_NONE, BLEND_NONE, BLEND_NONE)));\n}\n\nconst static uint destIdx[6][6] = {\n\t{20, 21, 22, 23, 24, 25},\n\t{19,  6,  7,  8,  9, 26},\n\t{18,  5,  0,  1, 10, 27},\n\t{17,  4,  3,  2, 11, 28},\n\t{16, 15, 14, 13, 12, 29},\n\t{35, 34, 33, 32, 31, 30}\n};\n\n//---------------------------------------\n// Input Pixel Mapping:    --|21|22|23|--\n//                         19|06|07|08|09\n//                         18|05|00|01|10\n//                         17|04|03|02|11\n//                         --|15|14|13|--\n//\n// Output Pixel Mapping: 20|21|22|23|24|25\n//                       19|06|07|08|09|26\n//                       18|05|00|01|10|27\n//                       17|04|03|02|11|28\n//                       16|15|14|13|12|29\n//                       35|34|33|32|31|30\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = (Rmp8x8(threadId.x) * 6) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tconst float2 inputPt = GetInputPt();\n\tconst float2 pos = ((gxy / 6) + 0.5f) * inputPt;\n\n\t//    A1 B1 C1\n\t// A0 A  B  C  C4\n\t// D0 D  E  F  F4\n\t// G0 G  H  I  I4\n\t//    G5 H5 I5\n\n\tfloat4 t1 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, -2.0 * inputPt.y); // A1 B1 C1\n\tfloat4 t2 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, -inputPt.y);\t\t// A  B  C\n\tfloat4 t3 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, 0);\t\t\t\t// D  E  F\n\tfloat4 t4 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, inputPt.y);\t\t// G  H  I\n\tfloat4 t5 = pos.xxxy + float4(-inputPt.x, 0, inputPt.x, 2.0 * inputPt.y);\t// G5 H5 I5\n\tfloat4 t6 = pos.xyyy + float4(-2.0 * inputPt.x, -inputPt.y, 0, inputPt.y);\t// A0 D0 G0\n\tfloat4 t7 = pos.xyyy + float4(2.0 * inputPt.x, -inputPt.y, 0, inputPt.y);\t// C4 F4 I4\n\n\t//---------------------------------------\n\t// Input Pixel Mapping:  20|21|22|23|24\n\t//                       19|06|07|08|09\n\t//                       18|05|00|01|10\n\t//                       17|04|03|02|11\n\t//                       16|15|14|13|12\n\n\tfloat3 src[25];\n\n\tsrc[21] = INPUT.SampleLevel(sam, t1.xw, 0).rgb;\n\tsrc[22] = INPUT.SampleLevel(sam, t1.yw, 0).rgb;\n\tsrc[23] = INPUT.SampleLevel(sam, t1.zw, 0).rgb;\n\tsrc[6] = INPUT.SampleLevel(sam, t2.xw, 0).rgb;\n\tsrc[7] = INPUT.SampleLevel(sam, t2.yw, 0).rgb;\n\tsrc[8] = INPUT.SampleLevel(sam, t2.zw, 0).rgb;\n\tsrc[5] = INPUT.SampleLevel(sam, t3.xw, 0).rgb;\n\tsrc[0] = INPUT.SampleLevel(sam, t3.yw, 0).rgb;\n\tsrc[1] = INPUT.SampleLevel(sam, t3.zw, 0).rgb;\n\tsrc[4] = INPUT.SampleLevel(sam, t4.xw, 0).rgb;\n\tsrc[3] = INPUT.SampleLevel(sam, t4.yw, 0).rgb;\n\tsrc[2] = INPUT.SampleLevel(sam, t4.zw, 0).rgb;\n\tsrc[15] = INPUT.SampleLevel(sam, t5.xw, 0).rgb;\n\tsrc[14] = INPUT.SampleLevel(sam, t5.yw, 0).rgb;\n\tsrc[13] = INPUT.SampleLevel(sam, t5.zw, 0).rgb;\n\tsrc[19] = INPUT.SampleLevel(sam, t6.xy, 0).rgb;\n\tsrc[18] = INPUT.SampleLevel(sam, t6.xz, 0).rgb;\n\tsrc[17] = INPUT.SampleLevel(sam, t6.xw, 0).rgb;\n\tsrc[9] = INPUT.SampleLevel(sam, t7.xy, 0).rgb;\n\tsrc[10] = INPUT.SampleLevel(sam, t7.xz, 0).rgb;\n\tsrc[11] = INPUT.SampleLevel(sam, t7.xw, 0).rgb;\n\n\t//---------------------------------------\n\t// Input Pixel Mapping:  20|21|22|23|24\n\t//                       19|06|07|08|09\n\t//                       18|05|00|01|10\n\t//                       17|04|03|02|11\n\t//                       16|15|14|13|12\n\n\tfloat v[9];\n\tv[0] = reduce(src[0]);\n\tv[1] = reduce(src[1]);\n\tv[2] = reduce(src[2]);\n\tv[3] = reduce(src[3]);\n\tv[4] = reduce(src[4]);\n\tv[5] = reduce(src[5]);\n\tv[6] = reduce(src[6]);\n\tv[7] = reduce(src[7]);\n\tv[8] = reduce(src[8]);\n\n\tint4 blendResult = int4(BLEND_NONE, BLEND_NONE, BLEND_NONE, BLEND_NONE);\n\n\t// Preprocess corners\n\t// Pixel Tap Mapping: --|--|--|--|--\n\t//                    --|--|07|08|--\n\t//                    --|05|00|01|10\n\t//                    --|04|03|02|11\n\t//                    --|--|14|13|--\n\t// Corner (1, 1)\n\tif (!((v[0] == v[1] && v[3] == v[2]) || (v[0] == v[3] && v[1] == v[2]))) {\n\t\tfloat dist_03_01 = DistYCbCr(src[4], src[0]) + DistYCbCr(src[0], src[8]) + DistYCbCr(src[14], src[2]) + DistYCbCr(src[2], src[10]) + (4.0 * DistYCbCr(src[3], src[1]));\n\t\tfloat dist_00_02 = DistYCbCr(src[5], src[3]) + DistYCbCr(src[3], src[13]) + DistYCbCr(src[7], src[1]) + DistYCbCr(src[1], src[11]) + (4.0 * DistYCbCr(src[0], src[2]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_03_01) < dist_00_02;\n\t\tblendResult[2] = ((dist_03_01 < dist_00_02) && (v[0] != v[1]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\n\t// Pixel Tap Mapping: --|--|--|--|--\n\t//                    --|06|07|--|--\n\t//                    18|05|00|01|--\n\t//                    17|04|03|02|--\n\t//                    --|15|14|--|--\n\t// Corner (0, 1)\n\tif (!((v[5] == v[0] && v[4] == v[3]) || (v[5] == v[4] && v[0] == v[3]))) {\n\t\tfloat dist_04_00 = DistYCbCr(src[17], src[5]) + DistYCbCr(src[5], src[7]) + DistYCbCr(src[15], src[3]) + DistYCbCr(src[3], src[1]) + (4.0 * DistYCbCr(src[4], src[0]));\n\t\tfloat dist_05_03 = DistYCbCr(src[18], src[4]) + DistYCbCr(src[4], src[14]) + DistYCbCr(src[6], src[0]) + DistYCbCr(src[0], src[2]) + (4.0 * DistYCbCr(src[5], src[3]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_03) < dist_04_00;\n\t\tblendResult[3] = ((dist_04_00 > dist_05_03) && (v[0] != v[5]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\t// Pixel Tap Mapping: --|--|22|23|--\n\t//                    --|06|07|08|09\n\t//                    --|05|00|01|10\n\t//                    --|--|03|02|--\n\t//                    --|--|--|--|--\n\t// Corner (1, 0)\n\tif (!((v[7] == v[8] && v[0] == v[1]) || (v[7] == v[0] && v[8] == v[1]))) {\n\t\tfloat dist_00_08 = DistYCbCr(src[5], src[7]) + DistYCbCr(src[7], src[23]) + DistYCbCr(src[3], src[1]) + DistYCbCr(src[1], src[9]) + (4.0 * DistYCbCr(src[0], src[8]));\n\t\tfloat dist_07_01 = DistYCbCr(src[6], src[0]) + DistYCbCr(src[0], src[2]) + DistYCbCr(src[22], src[8]) + DistYCbCr(src[8], src[10]) + (4.0 * DistYCbCr(src[7], src[1]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_07_01) < dist_00_08;\n\t\tblendResult[1] = ((dist_00_08 > dist_07_01) && (v[0] != v[7]) && (v[0] != v[1])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\t// Pixel Tap Mapping: --|21|22|--|--\n\t//                    19|06|07|08|--\n\t//                    18|05|00|01|--\n\t//                    --|04|03|--|--\n\t//                    --|--|--|--|--\n\t// Corner (0, 0)\n\tif (!((v[6] == v[7] && v[5] == v[0]) || (v[6] == v[5] && v[7] == v[0]))) {\n\t\tfloat dist_05_07 = DistYCbCr(src[18], src[6]) + DistYCbCr(src[6], src[22]) + DistYCbCr(src[4], src[0]) + DistYCbCr(src[0], src[8]) + (4.0 * DistYCbCr(src[5], src[7]));\n\t\tfloat dist_06_00 = DistYCbCr(src[19], src[5]) + DistYCbCr(src[5], src[3]) + DistYCbCr(src[21], src[7]) + DistYCbCr(src[7], src[1]) + (4.0 * DistYCbCr(src[6], src[0]));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_07) < dist_06_00;\n\t\tblendResult[0] = ((dist_05_07 < dist_06_00) && (v[0] != v[5]) && (v[0] != v[7])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\tfloat3 dst[36];\n\tdst[0] = src[0];\n\tdst[1] = src[0];\n\tdst[2] = src[0];\n\tdst[3] = src[0];\n\tdst[4] = src[0];\n\tdst[5] = src[0];\n\tdst[6] = src[0];\n\tdst[7] = src[0];\n\tdst[8] = src[0];\n\tdst[9] = src[0];\n\tdst[10] = src[0];\n\tdst[11] = src[0];\n\tdst[12] = src[0];\n\tdst[13] = src[0];\n\tdst[14] = src[0];\n\tdst[15] = src[0];\n\tdst[16] = src[0];\n\tdst[17] = src[0];\n\tdst[18] = src[0];\n\tdst[19] = src[0];\n\tdst[20] = src[0];\n\tdst[21] = src[0];\n\tdst[22] = src[0];\n\tdst[23] = src[0];\n\tdst[24] = src[0];\n\tdst[25] = src[0];\n\tdst[26] = src[0];\n\tdst[27] = src[0];\n\tdst[28] = src[0];\n\tdst[29] = src[0];\n\tdst[30] = src[0];\n\tdst[31] = src[0];\n\tdst[32] = src[0];\n\tdst[33] = src[0];\n\tdst[34] = src[0];\n\tdst[35] = src[0];\n\n\t// Scale pixel\n\tif (IsBlendingNeeded(blendResult)) {\n\t\tfloat dist_01_04 = DistYCbCr(src[1], src[4]);\n\t\tfloat dist_03_08 = DistYCbCr(src[3], src[8]);\n\t\tbool haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[4]) && (v[5] != v[4]);\n\t\tbool haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[8]) && (v[7] != v[8]);\n\t\tbool needBlend = (blendResult[2] != BLEND_NONE);\n\t\tbool doLineBlend = (blendResult[2] >= BLEND_DOMINANT ||\n\t\t\t!((blendResult[1] != BLEND_NONE && !IsPixEqual(src[0], src[4])) ||\n\t\t\t\t(blendResult[3] != BLEND_NONE && !IsPixEqual(src[0], src[8])) ||\n\t\t\t\t(IsPixEqual(src[4], src[3]) && IsPixEqual(src[3], src[2]) && IsPixEqual(src[2], src[1]) && IsPixEqual(src[1], src[8]) && !IsPixEqual(src[0], src[2]))));\n\n\t\tfloat3 blendPix = (DistYCbCr(src[0], src[1]) <= DistYCbCr(src[0], src[3])) ? src[1] : src[3];\n\t\tdst[10] = lerp(dst[10], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t\tdst[11] = lerp(dst[11], blendPix, (needBlend && doLineBlend) ? ((haveSteepLine) ? 0.750 : ((haveShallowLine) ? 0.250 : 0.000)) : 0.000);\n\t\tdst[12] = lerp(dst[12], blendPix, (needBlend && doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.500 : 1.000) : 0.000);\n\t\tdst[13] = lerp(dst[13], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? 0.750 : ((haveSteepLine) ? 0.250 : 0.000)) : 0.000);\n\t\tdst[14] = lerp(dst[14], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t\tdst[25] = lerp(dst[25], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t\tdst[26] = lerp(dst[26], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.750 : 0.000);\n\t\tdst[27] = lerp(dst[27], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 1.000 : 0.000);\n\t\tdst[28] = lerp(dst[28], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.000 : ((haveShallowLine) ? 0.750 : 0.500)) : 0.05652034508) : 0.000);\n\t\tdst[29] = lerp(dst[29], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.4236372243) : 0.000);\n\t\tdst[30] = lerp(dst[30], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.9711013910) : 0.000);\n\t\tdst[31] = lerp(dst[31], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.4236372243) : 0.000);\n\t\tdst[32] = lerp(dst[32], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.000 : ((haveSteepLine) ? 0.750 : 0.500)) : 0.05652034508) : 0.000);\n\t\tdst[33] = lerp(dst[33], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 1.000 : 0.000);\n\t\tdst[34] = lerp(dst[34], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.750 : 0.000);\n\t\tdst[35] = lerp(dst[35], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\n\n\t\tdist_01_04 = DistYCbCr(src[7], src[2]);\n\t\tdist_03_08 = DistYCbCr(src[1], src[6]);\n\t\thaveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[2]) && (v[3] != v[2]);\n\t\thaveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[6]) && (v[5] != v[6]);\n\t\tneedBlend = (blendResult[1] != BLEND_NONE);\n\t\tdoLineBlend = (blendResult[1] >= BLEND_DOMINANT ||\n\t\t\t!((blendResult[0] != BLEND_NONE && !IsPixEqual(src[0], src[2])) ||\n\t\t\t\t(blendResult[2] != BLEND_NONE && !IsPixEqual(src[0], src[6])) ||\n\t\t\t\t(IsPixEqual(src[2], src[1]) && IsPixEqual(src[1], src[8]) && IsPixEqual(src[8], src[7]) && IsPixEqual(src[7], src[6]) && !IsPixEqual(src[0], src[8]))));\n\n\t\tblendPix = (DistYCbCr(src[0], src[7]) <= DistYCbCr(src[0], src[1])) ? src[7] : src[1];\n\t\tdst[7] = lerp(dst[7], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t\tdst[8] = lerp(dst[8], blendPix, (needBlend && doLineBlend) ? ((haveSteepLine) ? 0.750 : ((haveShallowLine) ? 0.250 : 0.000)) : 0.000);\n\t\tdst[9] = lerp(dst[9], blendPix, (needBlend && doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.500 : 1.000) : 0.000);\n\t\tdst[10] = lerp(dst[10], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? 0.750 : ((haveSteepLine) ? 0.250 : 0.000)) : 0.000);\n\t\tdst[11] = lerp(dst[11], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t\tdst[20] = lerp(dst[20], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t\tdst[21] = lerp(dst[21], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.750 : 0.000);\n\t\tdst[22] = lerp(dst[22], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 1.000 : 0.000);\n\t\tdst[23] = lerp(dst[23], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.000 : ((haveShallowLine) ? 0.750 : 0.500)) : 0.05652034508) : 0.000);\n\t\tdst[24] = lerp(dst[24], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.4236372243) : 0.000);\n\t\tdst[25] = lerp(dst[25], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.9711013910) : 0.000);\n\t\tdst[26] = lerp(dst[26], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.4236372243) : 0.000);\n\t\tdst[27] = lerp(dst[27], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.000 : ((haveSteepLine) ? 0.750 : 0.500)) : 0.05652034508) : 0.000);\n\t\tdst[28] = lerp(dst[28], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 1.000 : 0.000);\n\t\tdst[29] = lerp(dst[29], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.750 : 0.000);\n\t\tdst[30] = lerp(dst[30], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\n\n\t\tdist_01_04 = DistYCbCr(src[5], src[8]);\n\t\tdist_03_08 = DistYCbCr(src[7], src[4]);\n\t\thaveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[8]) && (v[1] != v[8]);\n\t\thaveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[4]) && (v[3] != v[4]);\n\t\tneedBlend = (blendResult[0] != BLEND_NONE);\n\t\tdoLineBlend = (blendResult[0] >= BLEND_DOMINANT ||\n\t\t\t!((blendResult[3] != BLEND_NONE && !IsPixEqual(src[0], src[8])) ||\n\t\t\t\t(blendResult[1] != BLEND_NONE && !IsPixEqual(src[0], src[4])) ||\n\t\t\t\t(IsPixEqual(src[8], src[7]) && IsPixEqual(src[7], src[6]) && IsPixEqual(src[6], src[5]) && IsPixEqual(src[5], src[4]) && !IsPixEqual(src[0], src[6]))));\n\n\t\tblendPix = (DistYCbCr(src[0], src[5]) <= DistYCbCr(src[0], src[7])) ? src[5] : src[7];\n\t\tdst[4] = lerp(dst[4], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t\tdst[5] = lerp(dst[5], blendPix, (needBlend && doLineBlend) ? ((haveSteepLine) ? 0.750 : ((haveShallowLine) ? 0.250 : 0.000)) : 0.000);\n\t\tdst[6] = lerp(dst[6], blendPix, (needBlend && doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.500 : 1.000) : 0.000);\n\t\tdst[7] = lerp(dst[7], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? 0.750 : ((haveSteepLine) ? 0.250 : 0.000)) : 0.000);\n\t\tdst[8] = lerp(dst[8], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t\tdst[35] = lerp(dst[35], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t\tdst[16] = lerp(dst[16], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.750 : 0.000);\n\t\tdst[17] = lerp(dst[17], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 1.000 : 0.000);\n\t\tdst[18] = lerp(dst[18], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.000 : ((haveShallowLine) ? 0.750 : 0.500)) : 0.05652034508) : 0.000);\n\t\tdst[19] = lerp(dst[19], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.4236372243) : 0.000);\n\t\tdst[20] = lerp(dst[20], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.9711013910) : 0.000);\n\t\tdst[21] = lerp(dst[21], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.4236372243) : 0.000);\n\t\tdst[22] = lerp(dst[22], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.000 : ((haveSteepLine) ? 0.750 : 0.500)) : 0.05652034508) : 0.000);\n\t\tdst[23] = lerp(dst[23], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 1.000 : 0.000);\n\t\tdst[24] = lerp(dst[24], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.750 : 0.000);\n\t\tdst[25] = lerp(dst[25], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\n\n\t\tdist_01_04 = DistYCbCr(src[3], src[6]);\n\t\tdist_03_08 = DistYCbCr(src[5], src[2]);\n\t\thaveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[6]) && (v[7] != v[6]);\n\t\thaveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[2]) && (v[1] != v[2]);\n\t\tneedBlend = (blendResult[3] != BLEND_NONE);\n\t\tdoLineBlend = (blendResult[3] >= BLEND_DOMINANT ||\n\t\t\t!((blendResult[2] != BLEND_NONE && !IsPixEqual(src[0], src[6])) ||\n\t\t\t\t(blendResult[0] != BLEND_NONE && !IsPixEqual(src[0], src[2])) ||\n\t\t\t\t(IsPixEqual(src[6], src[5]) && IsPixEqual(src[5], src[4]) && IsPixEqual(src[4], src[3]) && IsPixEqual(src[3], src[2]) && !IsPixEqual(src[0], src[4]))));\n\n\t\tblendPix = (DistYCbCr(src[0], src[3]) <= DistYCbCr(src[0], src[5])) ? src[3] : src[5];\n\t\tdst[13] = lerp(dst[13], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t\tdst[14] = lerp(dst[14], blendPix, (needBlend && doLineBlend) ? ((haveSteepLine) ? 0.750 : ((haveShallowLine) ? 0.250 : 0.000)) : 0.000);\n\t\tdst[15] = lerp(dst[15], blendPix, (needBlend && doLineBlend) ? ((!haveShallowLine && !haveSteepLine) ? 0.500 : 1.000) : 0.000);\n\t\tdst[4] = lerp(dst[4], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? 0.750 : ((haveSteepLine) ? 0.250 : 0.000)) : 0.000);\n\t\tdst[5] = lerp(dst[5], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t\tdst[30] = lerp(dst[30], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.250 : 0.000);\n\t\tdst[31] = lerp(dst[31], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.750 : 0.000);\n\t\tdst[32] = lerp(dst[32], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 1.000 : 0.000);\n\t\tdst[33] = lerp(dst[33], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.000 : ((haveShallowLine) ? 0.750 : 0.500)) : 0.05652034508) : 0.000);\n\t\tdst[34] = lerp(dst[34], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.4236372243) : 0.000);\n\t\tdst[35] = lerp(dst[35], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.9711013910) : 0.000);\n\t\tdst[16] = lerp(dst[16], blendPix, (needBlend) ? ((doLineBlend) ? 1.000 : 0.4236372243) : 0.000);\n\t\tdst[17] = lerp(dst[17], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.000 : ((haveSteepLine) ? 0.750 : 0.500)) : 0.05652034508) : 0.000);\n\t\tdst[18] = lerp(dst[18], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 1.000 : 0.000);\n\t\tdst[19] = lerp(dst[19], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.750 : 0.000);\n\t\tdst[20] = lerp(dst[20], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.250 : 0.000);\n\t}\n\n\t[unroll]\n\tfor (uint i = 0; i < 6; ++i) {\n\t\t[unroll]\n\t\tfor (uint j = 0; j < 6; ++j) {\n\t\t\tOUTPUT[gxy + uint2(i, j)] = float4(dst[destIdx[j][i]], 1);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/Effects/xBRZ/xBRZ_Freescale.hlsl",
    "content": "// 移植自 https://github.com/libretro/common-shaders/tree/master/xbrz/shaders/xbrz-freescale-multipass\n\n//!MAGPIE EFFECT\n//!VERSION 4\n\n\n//!TEXTURE\nTexture2D INPUT;\n\n//!TEXTURE\nTexture2D OUTPUT;\n\n//!TEXTURE\n//!WIDTH INPUT_WIDTH\n//!HEIGHT INPUT_HEIGHT\n//!FORMAT R8G8B8A8_UNORM\nTexture2D tex1;\n\n//!SAMPLER\n//!FILTER POINT\nSamplerState sam;\n\n\n//!COMMON\n\n#define BLEND_NONE 0\n#define BLEND_NORMAL 1\n#define BLEND_DOMINANT 2\n#define LUMINANCE_WEIGHT 1.0\n#define EQUAL_COLOR_TOLERANCE 30.0/255.0\n#define STEEP_DIRECTION_THRESHOLD 2.2\n#define DOMINANT_DIRECTION_THRESHOLD 3.6\n\nfloat DistYCbCr(float3 pixA, float3 pixB) {\n\tconst float3 w = float3(0.2627, 0.6780, 0.0593);\n\tconst float scaleB = 0.5 / (1.0 - w.b);\n\tconst float scaleR = 0.5 / (1.0 - w.r);\n\tfloat3 diff = pixA - pixB;\n\tfloat Y = dot(diff.rgb, w);\n\tfloat Cb = scaleB * (diff.b - Y);\n\tfloat Cr = scaleR * (diff.r - Y);\n\n\treturn sqrt(((LUMINANCE_WEIGHT * Y) * (LUMINANCE_WEIGHT * Y)) + (Cb * Cb) + (Cr * Cr));\n}\n\nbool IsPixEqual(const float3 pixA, const float3 pixB) {\n\treturn (DistYCbCr(pixA, pixB) < EQUAL_COLOR_TOLERANCE);\n}\n\nfloat get_left_ratio(float2 center, float2 origin, float2 direction, float2 scale) {\n\tfloat2 P0 = center - origin;\n\tfloat2 proj = direction * (dot(P0, direction) / dot(direction, direction));\n\tfloat2 distv = P0 - proj;\n\tfloat2 orth = float2(-direction.y, direction.x);\n\tfloat side = sign(dot(P0, orth));\n\tfloat v = side * length(distv * scale);\n\n\t//  return step(0, v);\n\treturn smoothstep(-sqrt(2.0) / 2.0, sqrt(2.0) / 2.0, v);\n}\n\n//#define eq(a,b)  (a == b)\nbool eq(float3 a, float3 b) {\n\treturn ((a.x == b.x) && (a.y == b.y) && (a.z == b.z));\n}\n//#define neq(a,b) (a != b)\nbool neq(float3 a, float3 b) {\n\treturn !((a.x == b.x) && (a.y == b.y) && (a.z == b.z));\n}\n\n\n//!PASS 1\n//!IN INPUT\n//!OUT tex1\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\n\nvoid Pass1(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\tuint2 inputSize = GetInputSize();\n\tif (gxy.x >= inputSize.x || gxy.y >= inputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 pos = (gxy + 0.5f) * inputPt;\n\tint i, j;\n\n\tfloat3 src[5][5];\n\n\t[unroll]\n\tfor (i = 0; i <= 2; i += 2) {\n\t\t[unroll]\n\t\tfor (j = 0; j <= 2; j += 2) {\n\t\t\tfloat2 tpos = ((int2)gxy + int2(i, j) - 1) * inputPt;\n\t\t\tconst float4 sr = INPUT.GatherRed(sam, tpos, 0);\n\t\t\tconst float4 sg = INPUT.GatherGreen(sam, tpos, 0);\n\t\t\tconst float4 sb = INPUT.GatherBlue(sam, tpos, 0);\n\n\t\t\t// w z\n\t\t\t// x y\n\t\t\tsrc[i][j] = float3(sr.w, sg.w, sb.w);\n\t\t\tsrc[i][j + 1] = float3(sr.x, sg.x, sb.x);\n\t\t\tsrc[i + 1][j] = float3(sr.z, sg.z, sb.z);\n\t\t\tsrc[i + 1][j + 1] = float3(sr.y, sg.y, sb.y);\n\t\t}\n\t}\n\n\t[unroll]\n\tfor (i = 0; i < 5; ++i) {\n\t\tsrc[i][4] = INPUT.SampleLevel(sam, pos + (int2(i - 2, 2)) * inputPt, 0).rgb;\n\t}\n\t[unroll]\n\tfor (j = 0; j < 4; ++j) {\n\t\tsrc[4][j] = INPUT.SampleLevel(sam, pos + (int2(2, j - 2)) * inputPt, 0).rgb;\n\t}\n\n\t//---------------------------------------\n\t// Input Pixel Mapping:  -|x|x|x|-\n\t//                       x|A|B|C|x\n\t//                       x|D|E|F|x\n\t//                       x|G|H|I|x\n\t//                       -|x|x|x|-\n\n\tfloat3 A = src[1][1];\n\tfloat3 B = src[2][1];\n\tfloat3 C = src[3][1];\n\tfloat3 D = src[1][2];\n\tfloat3 E = src[2][2];\n\tfloat3 F = src[3][2];\n\tfloat3 G = src[1][3];\n\tfloat3 H = src[2][3];\n\tfloat3 I = src[3][3];\n\n\t// blendResult Mapping: x|y|\n\t//                      w|z|\n\tint4 blendResult = int4(BLEND_NONE, BLEND_NONE, BLEND_NONE, BLEND_NONE);\n\n\t// Preprocess corners\n\t// Pixel Tap Mapping: -|-|-|-|-\n\t//                    -|-|B|C|-\n\t//                    -|D|E|F|x\n\t//                    -|G|H|I|x\n\t//                    -|-|x|x|-\n\tif (!((eq(E, F) && eq(H, I)) || (eq(E, H) && eq(F, I)))) {\n\t\tfloat dist_H_F = DistYCbCr(G, E) + DistYCbCr(E, C) + DistYCbCr(src[2][4], I) + DistYCbCr(I, src[4][2]) + (4.0 * DistYCbCr(H, F));\n\t\tfloat dist_E_I = DistYCbCr(D, H) + DistYCbCr(H, src[3][4]) + DistYCbCr(B, F) + DistYCbCr(F, src[4][3]) + (4.0 * DistYCbCr(E, I));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_H_F) < dist_E_I;\n\t\tblendResult.z = ((dist_H_F < dist_E_I) && neq(E, F) && neq(E, H)) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\n\t// Pixel Tap Mapping: -|-|-|-|-\n\t//                    -|A|B|-|-\n\t//                    x|D|E|F|-\n\t//                    x|G|H|I|-\n\t//                    -|x|x|-|-\n\tif (!((eq(D, E) && eq(G, H)) || (eq(D, G) && eq(E, H)))) {\n\t\tfloat dist_G_E = DistYCbCr(src[0][3], D) + DistYCbCr(D, B) + DistYCbCr(src[1][4], H) + DistYCbCr(H, F) + (4.0 * DistYCbCr(G, E));\n\t\tfloat dist_D_H = DistYCbCr(src[0][2], G) + DistYCbCr(G, src[2][4]) + DistYCbCr(A, E) + DistYCbCr(E, I) + (4.0 * DistYCbCr(D, H));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_D_H) < dist_G_E;\n\t\tblendResult.w = ((dist_G_E > dist_D_H) && neq(E, D) && neq(E, H)) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\t// Pixel Tap Mapping: -|-|x|x|-\n\t//                    -|A|B|C|x\n\t//                    -|D|E|F|x\n\t//                    -|-|H|I|-\n\t//                    -|-|-|-|-\n\tif (!((eq(B, C) && eq(E, F)) || (eq(B, E) && eq(C, F)))) {\n\t\tfloat dist_E_C = DistYCbCr(D, B) + DistYCbCr(B, src[3][0]) + DistYCbCr(H, F) + DistYCbCr(F, src[4][1]) + (4.0 * DistYCbCr(E, C));\n\t\tfloat dist_B_F = DistYCbCr(A, E) + DistYCbCr(E, I) + DistYCbCr(src[2][0], C) + DistYCbCr(C, src[4][2]) + (4.0 * DistYCbCr(B, F));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_B_F) < dist_E_C;\n\t\tblendResult.y = ((dist_E_C > dist_B_F) && neq(E, B) && neq(E, F)) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\t// Pixel Tap Mapping: -|x|x|-|-\n\t//                    x|A|B|C|-\n\t//                    x|D|E|F|-\n\t//                    -|G|H|-|-\n\t//                    -|-|-|-|-\n\tif (!((eq(A, B) && eq(D, E)) || (eq(A, D) && eq(B, E)))) {\n\t\tfloat dist_D_B = DistYCbCr(src[0][2], A) + DistYCbCr(A, src[2][0]) + DistYCbCr(G, E) + DistYCbCr(E, C) + (4.0 * DistYCbCr(D, B));\n\t\tfloat dist_A_E = DistYCbCr(src[0][1], D) + DistYCbCr(D, H) + DistYCbCr(src[1][0], B) + DistYCbCr(B, F) + (4.0 * DistYCbCr(A, E));\n\t\tbool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_D_B) < dist_A_E;\n\t\tblendResult.x = ((dist_D_B < dist_A_E) && neq(E, D) && neq(E, B)) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;\n\t}\n\n\tfloat4 FragColor = float4(blendResult);\n\n\t// Pixel Tap Mapping: -|-|-|-|-\n\t//                    -|-|B|C|-\n\t//                    -|D|E|F|x\n\t//                    -|G|H|I|x\n\t//                    -|-|x|x|-\n\tif (blendResult.z == BLEND_DOMINANT || (blendResult.z == BLEND_NORMAL &&\n\t\t!((blendResult.y != BLEND_NONE && !IsPixEqual(E, G)) || (blendResult.w != BLEND_NONE && !IsPixEqual(E, C)) ||\n\t\t\t(IsPixEqual(G, H) && IsPixEqual(H, I) && IsPixEqual(I, F) && IsPixEqual(F, C) && !IsPixEqual(E, I))))) {\n\t\tFragColor.z += 4.0;\n\n\t\tfloat dist_F_G = DistYCbCr(F, G);\n\t\tfloat dist_H_C = DistYCbCr(H, C);\n\n\t\tif ((STEEP_DIRECTION_THRESHOLD * dist_F_G <= dist_H_C) && neq(E, G) && neq(D, G))\n\t\t\tFragColor.z += 16.0;\n\n\t\tif ((STEEP_DIRECTION_THRESHOLD * dist_H_C <= dist_F_G) && neq(E, C) && neq(B, C))\n\t\t\tFragColor.z += 64.0;\n\t}\n\n\t// Pixel Tap Mapping: -|-|-|-|-\n\t//                    -|A|B|-|-\n\t//                    x|D|E|F|-\n\t//                    x|G|H|I|-\n\t//                    -|x|x|-|-\n\tif (blendResult.w == BLEND_DOMINANT || (blendResult.w == BLEND_NORMAL &&\n\t\t!((blendResult.z != BLEND_NONE && !IsPixEqual(E, A)) || (blendResult.x != BLEND_NONE && !IsPixEqual(E, I)) ||\n\t\t\t(IsPixEqual(A, D) && IsPixEqual(D, G) && IsPixEqual(G, H) && IsPixEqual(H, I) && !IsPixEqual(E, G))))) {\n\t\tFragColor.w += 4.0;\n\n\t\tfloat dist_H_A = DistYCbCr(H, A);\n\t\tfloat dist_D_I = DistYCbCr(D, I);\n\n\t\tif ((STEEP_DIRECTION_THRESHOLD * dist_H_A <= dist_D_I) && neq(E, A) && neq(B, A))\n\t\t\tFragColor.w += 16.0;\n\n\t\tif ((STEEP_DIRECTION_THRESHOLD * dist_D_I <= dist_H_A) && neq(E, I) && neq(F, I))\n\t\t\tFragColor.w += 64.0;\n\t}\n\n\t// Pixel Tap Mapping: -|-|x|x|-\n\t//                    -|A|B|C|x\n\t//                    -|D|E|F|x\n\t//                    -|-|H|I|-\n\t//                    -|-|-|-|-\n\tif (blendResult.y == BLEND_DOMINANT || (blendResult.y == BLEND_NORMAL &&\n\t\t!((blendResult.x != BLEND_NONE && !IsPixEqual(E, I)) || (blendResult.z != BLEND_NONE && !IsPixEqual(E, A)) ||\n\t\t\t(IsPixEqual(I, F) && IsPixEqual(F, C) && IsPixEqual(C, B) && IsPixEqual(B, A) && !IsPixEqual(E, C))))) {\n\t\tFragColor.y += 4.0;\n\n\t\tfloat dist_B_I = DistYCbCr(B, I);\n\t\tfloat dist_F_A = DistYCbCr(F, A);\n\n\t\tif ((STEEP_DIRECTION_THRESHOLD * dist_B_I <= dist_F_A) && neq(E, I) && neq(H, I))\n\t\t\tFragColor.y += 16.0;\n\n\t\tif ((STEEP_DIRECTION_THRESHOLD * dist_F_A <= dist_B_I) && neq(E, A) && neq(D, A))\n\t\t\tFragColor.y += 64.0;\n\t}\n\n\t// Pixel Tap Mapping: -|x|x|-|-\n\t//                    x|A|B|C|-\n\t//                    x|D|E|F|-\n\t//                    -|G|H|-|-\n\t//                    -|-|-|-|-\n\tif (blendResult.x == BLEND_DOMINANT || (blendResult.x == BLEND_NORMAL &&\n\t\t!((blendResult.w != BLEND_NONE && !IsPixEqual(E, C)) || (blendResult.y != BLEND_NONE && !IsPixEqual(E, G)) ||\n\t\t\t(IsPixEqual(C, B) && IsPixEqual(B, A) && IsPixEqual(A, D) && IsPixEqual(D, G) && !IsPixEqual(E, A))))) {\n\t\tFragColor.x += 4.0;\n\n\t\tfloat dist_D_C = DistYCbCr(D, C);\n\t\tfloat dist_B_G = DistYCbCr(B, G);\n\n\t\tif ((STEEP_DIRECTION_THRESHOLD * dist_D_C <= dist_B_G) && neq(E, C) && neq(F, C))\n\t\t\tFragColor.x += 16.0;\n\n\t\tif ((STEEP_DIRECTION_THRESHOLD * dist_B_G <= dist_D_C) && neq(E, G) && neq(H, G))\n\t\t\tFragColor.x += 64.0;\n\t}\n\t\n\ttex1[gxy] = FragColor / 255.0;\n}\n\n\n//!PASS 2\n//!IN INPUT, tex1\n//!OUT OUTPUT\n//!BLOCK_SIZE 8\n//!NUM_THREADS 64\n\n#define P(x,y) INPUT.SampleLevel(sam, pos + inputPt * float2(x, y), 0).rgb\n\nvoid Pass2(uint2 blockStart, uint3 threadId) {\n\tuint2 gxy = Rmp8x8(threadId.x) + blockStart;\n\n\tconst uint2 outputSize = GetOutputSize();\n\tif (gxy.x >= outputSize.x || gxy.y >= outputSize.y) {\n\t\treturn;\n\t}\n\n\tfloat2 inputPt = GetInputPt();\n\tfloat2 outputPt = GetOutputPt();\n\tfloat2 pos = (gxy + 0.5f) * outputPt;\n\n\t//---------------------------------------\n\t// Input Pixel Mapping: -|B|-\n\t//                      D|E|F\n\t//                      -|H|-\n\n\tfloat2 scale = GetScale();\n\tfloat2 f = frac(pos * GetInputSize()) - 0.5f;\n\n\tfloat3 B = P(0., -1.);\n\tfloat3 D = P(-1., 0.);\n\tfloat3 E = P(0., 0.);\n\tfloat3 F = P(1., 0.);\n\tfloat3 H = P(0., 1.);\n\n\tfloat4 info = floor(tex1.SampleLevel(sam, pos, 0) * 255 + 0.5);\n\n\t// info Mapping: x|y|\n\t//               w|z|\n\n\tfloat4 blendResult = floor(fmod(info, 4.0));\n\tfloat4 doLineBlend = floor(fmod(info / 4.0, 4.0));\n\tfloat4 haveShallowLine = floor(fmod(info / 16.0, 4.0));\n\tfloat4 haveSteepLine = floor(fmod(info / 64.0, 4.0));\n\n\tfloat3 res = E;\n\n\t// Pixel Tap Mapping: -|-|-\n\t//                    -|E|F\n\t//                    -|H|-\n\n\tif (blendResult.z > BLEND_NONE) {\n\t\tfloat2 origin = float2(0.0, 1.0 / sqrt(2.0));\n\t\tfloat2 direction = float2(1.0, -1.0);\n\t\tif (doLineBlend.z > 0.0) {\n\t\t\torigin = haveShallowLine.z > 0.0 ? float2(0.0, 0.25) : float2(0.0, 0.5);\n\t\t\tdirection.x += haveShallowLine.z;\n\t\t\tdirection.y -= haveSteepLine.z;\n\t\t}\n\n\t\tfloat3 blendPix = lerp(H, F, step(DistYCbCr(E, F), DistYCbCr(E, H)));\n\t\tres = lerp(res, blendPix, get_left_ratio(f, origin, direction, scale));\n\t}\n\n\t// Pixel Tap Mapping: -|-|-\n\t//                    D|E|-\n\t//                    -|H|-\n\tif (blendResult.w > BLEND_NONE) {\n\t\tfloat2 origin = float2(-1.0 / sqrt(2.0), 0.0);\n\t\tfloat2 direction = float2(1.0, 1.0);\n\t\tif (doLineBlend.w > 0.0) {\n\t\t\torigin = haveShallowLine.w > 0.0 ? float2(-0.25, 0.0) : float2(-0.5, 0.0);\n\t\t\tdirection.y += haveShallowLine.w;\n\t\t\tdirection.x += haveSteepLine.w;\n\t\t}\n\n\t\tfloat3 blendPix = lerp(H, D, step(DistYCbCr(E, D), DistYCbCr(E, H)));\n\t\tres = lerp(res, blendPix, get_left_ratio(f, origin, direction, scale));\n\t}\n\n\t// Pixel Tap Mapping: -|B|-\n\t//                    -|E|F\n\t//                    -|-|-\n\tif (blendResult.y > BLEND_NONE) {\n\t\tfloat2 origin = float2(1.0 / sqrt(2.0), 0.0);\n\t\tfloat2 direction = float2(-1.0, -1.0);\n\n\t\tif (doLineBlend.y > 0.0) {\n\t\t\torigin = haveShallowLine.y > 0.0 ? float2(0.25, 0.0) : float2(0.5, 0.0);\n\t\t\tdirection.y -= haveShallowLine.y;\n\t\t\tdirection.x -= haveSteepLine.y;\n\t\t}\n\n\t\tfloat3 blendPix = lerp(F, B, step(DistYCbCr(E, B), DistYCbCr(E, F)));\n\t\tres = lerp(res, blendPix, get_left_ratio(f, origin, direction, scale));\n\t}\n\n\t// Pixel Tap Mapping: -|B|-\n\t//                    D|E|-\n\t//                    -|-|-\n\tif (blendResult.x > BLEND_NONE) {\n\t\tfloat2 origin = float2(0.0, -1.0 / sqrt(2.0));\n\t\tfloat2 direction = float2(-1.0, 1.0);\n\t\tif (doLineBlend.x > 0.0) {\n\t\t\torigin = haveShallowLine.x > 0.0 ? float2(0.0, -0.25) : float2(0.0, -0.5);\n\t\t\tdirection.x -= haveShallowLine.x;\n\t\t\tdirection.y += haveSteepLine.x;\n\t\t}\n\n\t\tfloat3 blendPix = lerp(D, B, step(DistYCbCr(E, B), DistYCbCr(E, D)));\n\t\tres = lerp(res, blendPix, get_left_ratio(f, origin, direction, scale));\n\t}\n\n\tOUTPUT[gxy] = float4(res, 1);\n}\n"
  },
  {
    "path": "src/HybridCRT.props",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- HybridCRT: https://github.com/microsoft/WindowsAppSDK/blob/main/docs/Coding-Guidelines/HybridCRT.md -->\n<!-- 取自 https://github.com/microsoft/WindowsAppSDK/blob/b708422eb1da22a10b56a06c54d7c0759f1683d1/HybridCRT.props -->\n<!-- Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License. See LICENSE in the project root for license information. -->\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemDefinitionGroup Condition=\"'$(Configuration)'=='Debug'\">\n    <ClCompile>\n      <!-- 避免依赖 VCRUNTIME140d.dll 和 MSVCP140d.dll -->\n      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\n    </ClCompile>\n    <Link>\n      <!-- 动态链接 Universal CRT 中存在的函数（如 C 运行时库），否则静态链接（如 STL） -->\n      <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries);libucrtd.lib</IgnoreSpecificDefaultLibraries>\n      <AdditionalOptions>%(AdditionalOptions) /defaultlib:ucrtd.lib</AdditionalOptions>\n    </Link>\n  </ItemDefinitionGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)'=='Release'\">\n    <ClCompile>\n      <!-- 避免依赖 VCRUNTIME140.dll 和 MSVCP140.dll -->\n      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\n    </ClCompile>\n    <Link>\n      <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries);libucrt.lib</IgnoreSpecificDefaultLibraries>\n      <AdditionalOptions>%(AdditionalOptions) /defaultlib:ucrt.lib</AdditionalOptions>\n    </Link>\n  </ItemDefinitionGroup>\n</Project>\n"
  },
  {
    "path": "src/Magpie/AboutPage.cpp",
    "content": "#include \"pch.h\"\n#include \"AboutPage.h\"\n#if __has_include(\"AboutPage.g.cpp\")\n#include \"AboutPage.g.cpp\"\n#endif\n#include \"CommonSharedConstants.h\"\n#include \"ToastService.h\"\n#include \"Win32Helper.h\"\n#include \"XamlHelper.h\"\n\nusing namespace Magpie;\n\nnamespace winrt::Magpie::implementation {\n\nvoid AboutPage::VersionTextBlock_DoubleTapped(IInspectable const&, Input::DoubleTappedRoutedEventArgs const&) {\n\t// 按住 Alt 键双击版本号即可启用开发者模式\n\tif (!_viewModel->IsDeveloperMode() && (GetAsyncKeyState(VK_MENU) & 0x8000)) {\n\t\t_viewModel->IsDeveloperMode(true);\n\t\t\n\t\tconst hstring message = ResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID)\n\t\t\t.GetString(L\"About_DeveloperModeEnabled\");\n\t\tToastService::Get().ShowMessageInApp({}, message);\n\t}\n}\n\nvoid AboutPage::BugReport_Click(IInspectable const&, RoutedEventArgs const&) {\n\tWin32Helper::ShellOpen(L\"https://github.com/Blinue/Magpie/issues/new?assignees=&labels=bug&template=01_bug.yaml\");\n}\n\nvoid AboutPage::FeatureRequest_Click(IInspectable const&, RoutedEventArgs const&) {\n\tWin32Helper::ShellOpen(L\"https://github.com/Blinue/Magpie/issues/new?assignees=&labels=enhancement&template=03_request.yaml\");\n}\n\nvoid AboutPage::Discussions_Click(IInspectable const&, RoutedEventArgs const&) {\n\tWin32Helper::ShellOpen(L\"https://github.com/Blinue/Magpie/discussions\");\n}\n\nvoid AboutPage::InfoBar_SizeChanged(IInspectable const& sender, SizeChangedEventArgs const&) const {\n\t// 修复 InfoBar 中 Tooltip 的主题\n\tXamlHelper::UpdateThemeOfTooltips(sender.try_as<DependencyObject>(), ActualTheme());\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/AboutPage.h",
    "content": "#pragma once\n#include \"AboutPage.g.h\"\n#include \"AboutViewModel.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct AboutPage : AboutPageT<AboutPage> {\n\twinrt::Magpie::AboutViewModel ViewModel() const noexcept {\n\t\treturn *_viewModel;\n\t}\n\n\tvoid VersionTextBlock_DoubleTapped(IInspectable const&, Input::DoubleTappedRoutedEventArgs const&);\n\n\tvoid BugReport_Click(IInspectable const&, RoutedEventArgs const&);\n\tvoid FeatureRequest_Click(IInspectable const&, RoutedEventArgs const&);\n\tvoid Discussions_Click(IInspectable const&, RoutedEventArgs const&);\n\n\tvoid InfoBar_SizeChanged(IInspectable const& sender, SizeChangedEventArgs const&) const;\n\nprivate:\n\twinrt::com_ptr<AboutViewModel> _viewModel = make_self<AboutViewModel>();\n};\n\n}\n\nBASIC_FACTORY(AboutPage)\n"
  },
  {
    "path": "src/Magpie/AboutPage.idl",
    "content": "namespace Magpie {\n\truntimeclass AboutPage : Windows.UI.Xaml.Controls.Page {\n\t\tAboutPage();\n\n\t\tAboutViewModel ViewModel { get; };\n\n\t\t// https://github.com/microsoft/microsoft-ui-xaml/issues/7579\n\t\tvoid UnloadObject(Windows.UI.Xaml.DependencyObject object);\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/AboutPage.xaml",
    "content": "<Page x:Class=\"Magpie.AboutPage\"\n      xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n      xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n      xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n      xmlns:local=\"using:Magpie\"\n      xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n      xmlns:muxc=\"using:Microsoft.UI.Xaml.Controls\"\n      mc:Ignorable=\"d\">\n\t<local:PageFrame x:Uid=\"About_PageFrame\">\n\t\t<local:SimpleStackPanel Padding=\"0,4,0,0\"\n\t\t                        HorizontalAlignment=\"Stretch\"\n\t\t                        ChildrenTransitions=\"{StaticResource SettingsCardsAnimations}\"\n\t\t                        Spacing=\"{StaticResource SettingsGroupSpacing}\">\n\t\t\t<local:SimpleStackPanel Margin=\"0,8,0,0\">\n\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t                        Spacing=\"20\">\n\t\t\t\t\t<Image Width=\"64\"\n\t\t\t\t\t       Height=\"64\"\n\t\t\t\t\t       Source=\"{x:Bind ViewModel.Logo, Mode=OneWay}\" />\n\t\t\t\t\t<local:SimpleStackPanel Margin=\"0,-4,0,0\"\n\t\t\t\t\t                        VerticalAlignment=\"Center\"\n\t\t\t\t\t                        Spacing=\"4\">\n\t\t\t\t\t\t<TextBlock FontSize=\"24\"\n\t\t\t\t\t\t           Text=\"Magpie\" />\n\t\t\t\t\t\t<TextBlock DoubleTapped=\"VersionTextBlock_DoubleTapped\"\n\t\t\t\t\t\t           FontSize=\"{StaticResource SecondaryTextFontSize}\"\n\t\t\t\t\t\t           Foreground=\"{ThemeResource TextFillColorSecondaryBrush}\"\n\t\t\t\t\t\t           Text=\"{x:Bind ViewModel.Version, Mode=OneTime}\" />\n\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t<local:SimpleStackPanel Spacing=\"12\">\n\t\t\t\t\t<Button Margin=\"0,16,0,0\"\n\t\t\t\t\t        Click=\"{x:Bind ViewModel.CheckForUpdates}\"\n\t\t\t\t\t        IsEnabled=\"{x:Bind ViewModel.IsCheckForUpdatesButtonEnabled, Mode=OneWay}\"\n\t\t\t\t\t        Style=\"{StaticResource AccentButtonStyle}\">\n\t\t\t\t\t\t<Grid>\n\t\t\t\t\t\t\t<TextBlock x:Uid=\"About_Version_CheckForUpdates\"\n\t\t\t\t\t\t\t           Visibility=\"{x:Bind ViewModel.IsCheckingForUpdates, Mode=OneWay, Converter={StaticResource NegativeVisibilityConverter}}\" />\n\t\t\t\t\t\t\t<local:SimpleStackPanel x:Name=\"CheckingForUpdates\"\n\t\t\t\t\t\t\t                        x:Load=\"{x:Bind ViewModel.IsCheckingForUpdates, Mode=OneWay}\"\n\t\t\t\t\t\t\t                        Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t<muxc:ProgressRing Width=\"16\"\n\t\t\t\t\t\t\t\t                   Height=\"16\"\n\t\t\t\t\t\t\t\t                   VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t                   Foreground=\"{ThemeResource TextOnAccentFillColorPrimaryBrush}\"\n\t\t\t\t\t\t\t\t                   IsActive=\"True\" />\n\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"About_Version_CheckingForUpdates\"\n\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\" />\n\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Grid x:Name=\"UpdateInfos\"\n\t\t\t\t\t      x:Load=\"{x:Bind ViewModel.IsAnyUpdateStatus, Mode=OneWay}\">\n\t\t\t\t\t\t<muxc:InfoBar x:Uid=\"About_Version_CheckForUpdatesFailed\"\n\t\t\t\t\t\t              IsOpen=\"{x:Bind ViewModel.IsErrorWhileChecking, Mode=TwoWay}\"\n\t\t\t\t\t\t              Severity=\"Error\"\n\t\t\t\t\t\t              SizeChanged=\"InfoBar_SizeChanged\" />\n\t\t\t\t\t\t<muxc:InfoBar x:Uid=\"About_Version_UpdateToDate\"\n\t\t\t\t\t\t              IsOpen=\"{x:Bind ViewModel.IsNoUpdate, Mode=TwoWay}\"\n\t\t\t\t\t\t              Severity=\"Success\"\n\t\t\t\t\t\t              SizeChanged=\"InfoBar_SizeChanged\" />\n\t\t\t\t\t\t<muxc:InfoBar Title=\"{x:Bind ViewModel.UpdateCardTitle, Mode=OneWay}\"\n\t\t\t\t\t\t              IsClosable=\"{x:Bind ViewModel.IsUpdateCardClosable, Mode=OneWay}\"\n\t\t\t\t\t\t              IsOpen=\"{x:Bind ViewModel.IsUpdateCardOpen, Mode=TwoWay}\"\n\t\t\t\t\t\t              Severity=\"Informational\"\n\t\t\t\t\t\t              SizeChanged=\"InfoBar_SizeChanged\">\n\t\t\t\t\t\t\t<local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t<!--  如果右边距设为 25，ProgressBar 进度设为 0.999，在特定的窗口尺寸下会出现 Layout cycle detected 错误。  -->\n\t\t\t\t\t\t\t\t<!--  这个错误在 UWP 中也存在，但 WinAppSDK 已修复。  -->\n\t\t\t\t\t\t\t\t<Grid Margin=\"0,0,24,16\"\n\t\t\t\t\t\t\t\t      ColumnSpacing=\"12\"\n\t\t\t\t\t\t\t\t      Visibility=\"{x:Bind ViewModel.IsDownloadingOrLater, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"*\" />\n\t\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t\t\t\t</Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t\t<muxc:ProgressBar Grid.Column=\"0\"\n\t\t\t\t\t\t\t\t\t                  Margin=\"0\"\n\t\t\t\t\t\t\t\t\t                  Padding=\"0\"\n\t\t\t\t\t\t\t\t\t                  VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t\t                  IsIndeterminate=\"{x:Bind ViewModel.IsNoDownloadProgress, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t\t                  Maximum=\"1\"\n\t\t\t\t\t\t\t\t\t                  Minimum=\"0\"\n\t\t\t\t\t\t\t\t\t                  ShowError=\"{x:Bind ViewModel.IsErrorWhileDownloading, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t\t                  Value=\"{x:Bind ViewModel.DownloadProgress, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Grid.Column=\"1\"\n\t\t\t\t\t\t\t\t\t                        Margin=\"0,-2,0,0\"\n\t\t\t\t\t\t\t\t\t                        VerticalAlignment=\"Center\">\n\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"About_Version_UpdateToDate_Downloading\"\n\t\t\t\t\t\t\t\t\t\t           Visibility=\"{x:Bind ViewModel.IsDownloading, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"About_Version_UpdateToDate_DownloadFailed\"\n\t\t\t\t\t\t\t\t\t\t           Margin=\"0,0,-48,0\"\n\t\t\t\t\t\t\t\t\t\t           Visibility=\"{x:Bind ViewModel.IsErrorWhileDownloading, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"About_Version_UpdateToDate_Installing\"\n\t\t\t\t\t\t\t\t\t\t           Visibility=\"{x:Bind ViewModel.IsInstalling, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<local:SimpleStackPanel Margin=\"0,0,0,16\"\n\t\t\t\t\t\t\t\t                        Orientation=\"Horizontal\">\n\t\t\t\t\t\t\t\t\t<Button x:Uid=\"About_Version_UpdateCard_DownloadAndInstall\"\n\t\t\t\t\t\t\t\t\t        Click=\"{x:Bind ViewModel.DownloadAndInstall}\"\n\t\t\t\t\t\t\t\t\t        Style=\"{StaticResource AccentButtonStyle}\"\n\t\t\t\t\t\t\t\t\t        Visibility=\"{x:Bind ViewModel.IsAvailable, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t\t<Button x:Uid=\"About_Version_UpdateCard_Retry\"\n\t\t\t\t\t\t\t\t\t        Click=\"{x:Bind ViewModel.Retry}\"\n\t\t\t\t\t\t\t\t\t        Visibility=\"{x:Bind ViewModel.IsErrorWhileDownloading, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t\t<Button x:Uid=\"About_Version_UpdateCard_Cancel\"\n\t\t\t\t\t\t\t\t\t        Click=\"{x:Bind ViewModel.Cancel}\"\n\t\t\t\t\t\t\t\t\t        IsEnabled=\"{x:Bind ViewModel.IsDownloading, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t\t        Visibility=\"{x:Bind ViewModel.IsCancelButtonVisible, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t\t<HyperlinkButton x:Uid=\"About_Version_UpdateCard_ReleaseNotes\"\n\t\t\t\t\t\t\t\t\t                 Margin=\"8,0,0,0\"\n\t\t\t\t\t\t\t\t\t                 VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t\t                 NavigateUri=\"{x:Bind ViewModel.UpdateReleaseNotesLink, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t</muxc:InfoBar>\n\t\t\t\t\t</Grid>\n\t\t\t\t</local:SimpleStackPanel>\n\t\t\t</local:SimpleStackPanel>\n\t\t\t<local:SettingsGroup x:Uid=\"About_Version_UpdateSettings\">\n\t\t\t\t<local:SettingsCard x:Uid=\"About_Version_UpdateSettings_AutoCheckForUpdates\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xECC5;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsAutoCheckForUpdates, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"About_Version_UpdateSettings_CheckForPreviewUpdates\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xED56;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsCheckForPreviewUpdates, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t</local:SettingsGroup>\n\t\t\t<local:SettingsGroup x:Uid=\"About_Feedback\">\n\t\t\t\t<local:SettingsCard x:Uid=\"About_Feedback_ReportBug\"\n\t\t\t\t                    Click=\"BugReport_Click\"\n\t\t\t\t                    IsClickEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xEBE8;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<local:SettingsCard.ActionIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8A7;\" />\n\t\t\t\t\t</local:SettingsCard.ActionIcon>\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"About_Feedback_RequestFeature\"\n\t\t\t\t                    Click=\"FeatureRequest_Click\"\n\t\t\t\t                    IsClickEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xEA80;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<local:SettingsCard.ActionIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8A7;\" />\n\t\t\t\t\t</local:SettingsCard.ActionIcon>\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"About_Feedback_Discussion\"\n\t\t\t\t                    Click=\"Discussions_Click\"\n\t\t\t\t                    IsClickEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8F2;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<local:SettingsCard.ActionIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8A7;\" />\n\t\t\t\t\t</local:SettingsCard.ActionIcon>\n\t\t\t\t</local:SettingsCard>\n\t\t\t</local:SettingsGroup>\n\t\t\t<local:SettingsGroup x:Uid=\"About_OtherLinks\">\n\t\t\t\t<local:WrapPanel ChildrenTransitions=\"{StaticResource SettingsCardsAnimations}\"\n\t\t\t\t                 HorizontalSpacing=\"2\"\n\t\t\t\t                 Orientation=\"Horizontal\"\n\t\t\t\t                 VerticalSpacing=\"4\">\n\t\t\t\t\t<HyperlinkButton NavigateUri=\"https://github.com/Blinue/Magpie\">\n\t\t\t\t\t\t<TextBlock x:Uid=\"About_OtherLinks_Repository\" />\n\t\t\t\t\t</HyperlinkButton>\n\t\t\t\t\t<HyperlinkButton NavigateUri=\"https://github.com/Blinue/Magpie/wiki/FAQ\">\n\t\t\t\t\t\t<TextBlock x:Uid=\"About_OtherLinks_FAQ\" />\n\t\t\t\t\t</HyperlinkButton>\n\t\t\t\t\t<HyperlinkButton NavigateUri=\"https://github.com/Blinue/Magpie/blob/main/CONTRIBUTING.md\">\n\t\t\t\t\t\t<TextBlock x:Uid=\"About_OtherLinks_ContributionGuidelines\" />\n\t\t\t\t\t</HyperlinkButton>\n\t\t\t\t\t<HyperlinkButton NavigateUri=\"https://github.com/Blinue/Magpie/blob/main/LICENSE\">\n\t\t\t\t\t\t<TextBlock x:Uid=\"About_OtherLinks_License\" />\n\t\t\t\t\t</HyperlinkButton>\n\t\t\t\t</local:WrapPanel>\n\t\t\t</local:SettingsGroup>\n\t\t</local:SimpleStackPanel>\n\t</local:PageFrame>\n</Page>\n"
  },
  {
    "path": "src/Magpie/AboutViewModel.cpp",
    "content": "#include \"pch.h\"\n#include \"AboutViewModel.h\"\n#if __has_include(\"AboutViewModel.g.cpp\")\n#include \"AboutViewModel.g.cpp\"\n#endif\n#include \"UpdateService.h\"\n#include \"AppSettings.h\"\n#include \"StrHelper.h\"\n#include \"IconHelper.h\"\n#include \"CommonSharedConstants.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Media::Imaging;\n\nnamespace winrt::Magpie::implementation {\n\nAboutViewModel::AboutViewModel() {\n\tUpdateService& service = UpdateService::Get();\n\tservice.EnteringAboutPage();\n\n\t_updateStatusChangedRevoker = service.StatusChanged(\n\t\tauto_revoke, std::bind_front(&AboutViewModel::_UpdateService_StatusChanged, this));\n\t\n\tif (service.Status() == UpdateStatus::Downloading) {\n\t\t_downloadProgressChangedRevoker = UpdateService::Get().DownloadProgressChanged(\n\t\t\tauto_revoke,\n\t\t\tstd::bind_front(&AboutViewModel::_UpdateService_DownloadProgressChanged, this)\n\t\t);\n\t}\n\n\t// 用户查看了关于页面，主页无需再显示更新提示\n\tservice.IsShowOnHomePage(false);\n\t_showOnHomePageChangedRevoker = service.IsShowOnHomePageChanged(auto_revoke, [](bool value) {\n\t\tif (value) {\n\t\t\t// 在关于页面触发自动更新时主页不需要显示更新提示\n\t\t\tUpdateService::Get().IsShowOnHomePage(false);\n\t\t}\n\t});\n\n\t// 异步加载 Logo\n\t([](AboutViewModel* that)->fire_and_forget {\n\t\tauto weakThis = that->get_weak();\n\t\tSoftwareBitmapSource bitmap;\n\t\tco_await bitmap.SetBitmapAsync(IconHelper::ExtractAppIcon(256));\n\n\t\tif (!weakThis.get()) {\n\t\t\tco_return;\n\t\t}\n\n\t\tthat->_logo = std::move(bitmap);\n\t\tthat->RaisePropertyChanged(L\"Logo\");\n\t})(this);\n}\n\nhstring AboutViewModel::Version() const noexcept {\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\treturn hstring(StrHelper::Concat(\n\t\tresourceLoader.GetString(L\"About_Version_Version\"),\n#ifdef MP_VERSION_STRING\n\t\tL\" \" WIDEN_STRINGIFY(MP_VERSION_STRING),\n#else\n\t\tL\" dev\",\n#endif\n#ifdef MP_COMMIT_ID\n\t\tL\" | \",\n\t\tresourceLoader.GetString(L\"About_Version_CommitId\"),\n\t\tL\" \" WIDEN_STRINGIFY(MP_COMMIT_ID),\n#endif\n\t\tL\" | \"\n#ifdef _M_X64\n\t\tL\"x64\"\n#elif defined(_M_ARM64)\n\t\tL\"ARM64\"\n#else\n\t\tstatic_assert(false, \"不支持的架构\")\n#endif\n\t));\n}\n\nbool AboutViewModel::IsDeveloperMode() const noexcept {\n\treturn AppSettings::Get().IsDeveloperMode();\n}\n\nvoid AboutViewModel::IsDeveloperMode(bool value) {\n\tAppSettings::Get().IsDeveloperMode(value);\n}\n\nfire_and_forget AboutViewModel::CheckForUpdates() {\n\treturn UpdateService::Get().CheckForUpdatesAsync(false);\n}\n\nbool AboutViewModel::IsCheckForPreviewUpdates() const noexcept {\n\treturn AppSettings::Get().IsCheckForPreviewUpdates();\n}\n\nvoid AboutViewModel::IsCheckForPreviewUpdates(bool value) {\n\tAppSettings::Get().IsCheckForPreviewUpdates(value);\n\tRaisePropertyChanged(L\"IsCheckForPreviewUpdates\");\n}\n\nbool AboutViewModel::IsCheckForUpdatesButtonEnabled() const noexcept {\n\t// 只有发布版本能检查更新\n#ifdef MP_VERSION_STRING\n\treturn !IsCheckingForUpdates() && !IsDownloadingOrLater();\n#else\n\treturn false;\n#endif\n}\n\nbool AboutViewModel::IsAutoCheckForUpdates() const noexcept {\n\treturn AppSettings::Get().IsAutoCheckForUpdates();\n}\n\nvoid AboutViewModel::IsAutoCheckForUpdates(bool value) {\n\tAppSettings::Get().IsAutoCheckForUpdates(value);\n\tRaisePropertyChanged(L\"IsAutoCheckForUpdates\");\n}\n\nbool AboutViewModel::IsAnyUpdateStatus() const noexcept {\n\treturn UpdateService::Get().Status() > UpdateStatus::Checking;\n}\n\nbool AboutViewModel::IsCheckingForUpdates() const noexcept {\n\treturn UpdateService::Get().Status() == UpdateStatus::Checking;\n}\n\nbool AboutViewModel::IsErrorWhileChecking() const noexcept {\n\treturn UpdateService::Get().Status() == UpdateStatus::ErrorWhileChecking;\n}\n\nvoid AboutViewModel::IsErrorWhileChecking(bool value) {\n\tif (!value) {\n\t\tUpdateService& service = UpdateService::Get();\n\t\tif (service.Status() == UpdateStatus::ErrorWhileChecking) {\n\t\t\tservice.Cancel();\n\t\t}\n\t}\n\n\tRaisePropertyChanged(L\"IsErrorWhileChecking\");\n}\n\nbool AboutViewModel::IsNoUpdate() const noexcept {\n\treturn UpdateService::Get().Status() == UpdateStatus::NoUpdate;\n}\n\nvoid AboutViewModel::IsNoUpdate(bool value) const noexcept {\n\tif (!value) {\n\t\tUpdateService& service = UpdateService::Get();\n\t\tif (service.Status() == UpdateStatus::NoUpdate) {\n\t\t\tservice.Cancel();\n\t\t}\n\t}\n}\n\nbool AboutViewModel::IsAvailable() const noexcept {\n\treturn UpdateService::Get().Status() == UpdateStatus::Available;\n}\n\nbool AboutViewModel::IsDownloading() const noexcept {\n\treturn UpdateService::Get().Status() == UpdateStatus::Downloading;\n}\n\nbool AboutViewModel::IsErrorWhileDownloading() const noexcept {\n\treturn UpdateService::Get().Status() == UpdateStatus::ErrorWhileDownloading;\n}\n\nbool AboutViewModel::IsDownloadingOrLater() const noexcept {\n\treturn UpdateService::Get().Status() >= UpdateStatus::Downloading;\n}\n\nbool AboutViewModel::IsInstalling() const noexcept {\n\treturn UpdateService::Get().Status() == UpdateStatus::Installing;\n}\n\nbool AboutViewModel::IsUpdateCardOpen() const noexcept {\n\treturn UpdateService::Get().Status() >= UpdateStatus::Available;\n}\n\nvoid AboutViewModel::IsUpdateCardOpen(bool value) {\n\tif (!value) {\n\t\tUpdateService& service = UpdateService::Get();\n\t\tUpdateStatus status = service.Status();\n\t\tif (status == UpdateStatus::Available || status == UpdateStatus::ErrorWhileDownloading) {\n\t\t\tservice.Cancel();\n\t\t}\n\t}\n\n\tRaisePropertyChanged(L\"IsUpdateCardOpen\");\n}\n\nbool AboutViewModel::IsUpdateCardClosable() const noexcept {\n\tUpdateStatus status = UpdateService::Get().Status();\n\treturn status == UpdateStatus::Available || status == UpdateStatus::ErrorWhileDownloading;\n}\n\nbool AboutViewModel::IsCancelButtonVisible() const noexcept {\n\tUpdateStatus status = UpdateService::Get().Status();\n\treturn status == UpdateStatus::Downloading || status == UpdateStatus::Installing;\n}\n\nhstring AboutViewModel::UpdateCardTitle() const noexcept {\n\tUpdateService& updateService = UpdateService::Get();\n\tif (updateService.Status() < UpdateStatus::Available) {\n\t\treturn {};\n\t}\n\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\thstring titleFmt = resourceLoader.GetString(L\"Home_UpdateCard_Title\");\n\treturn hstring(fmt::format(fmt::runtime(std::wstring_view(titleFmt)), updateService.Tag()));\n}\n\nbool AboutViewModel::IsNoDownloadProgress() const noexcept {\n\tUpdateService& service = UpdateService::Get();\n\tswitch (service.Status()) {\n\tcase UpdateStatus::Downloading:\n\t\treturn service.DownloadProgress() < FLOAT_EPSILON<double>;\n\tdefault:\n\t\treturn true;\n\t}\n}\n\ndouble AboutViewModel::DownloadProgress() const noexcept {\n\tswitch (UpdateService::Get().Status()) {\n\tcase UpdateStatus::Downloading:\n\t\treturn UpdateService::Get().DownloadProgress();\n\tcase UpdateStatus::Installing:\n\t\treturn 1.0;\n\tdefault:\n\t\treturn 0.0;\n\t}\n}\n\nUri AboutViewModel::UpdateReleaseNotesLink() const noexcept {\n\tif (!IsUpdateCardOpen()) {\n\t\treturn nullptr;\n\t}\n\n\treturn Uri(StrHelper::Concat(L\"https://github.com/Blinue/Magpie/releases/tag/\",\n\t\tUpdateService::Get().Tag()));\n}\n\nfire_and_forget AboutViewModel::DownloadAndInstall() {\n\treturn UpdateService::Get().DownloadAndInstall();\n}\n\nvoid AboutViewModel::Cancel() {\n\tassert(UpdateService::Get().Status() == UpdateStatus::Downloading);\n\tUpdateService::Get().Cancel();\n}\n\nvoid AboutViewModel::Retry() {\n\tassert(UpdateService::Get().Status() == UpdateStatus::ErrorWhileDownloading);\n\tUpdateService::Get().DownloadAndInstall();\n}\n\nvoid AboutViewModel::_UpdateService_StatusChanged(UpdateStatus status) {\n\tRaisePropertyChanged(L\"IsCheckingForUpdates\");\n\tRaisePropertyChanged(L\"IsCheckForUpdatesButtonEnabled\");\n\tRaisePropertyChanged(L\"IsAnyUpdateStatus\");\n\tRaisePropertyChanged(L\"IsErrorWhileChecking\");\n\tRaisePropertyChanged(L\"IsNoUpdate\");\n\tRaisePropertyChanged(L\"IsAvailable\");\n\tRaisePropertyChanged(L\"IsDownloading\");\n\tRaisePropertyChanged(L\"IsErrorWhileDownloading\");\n\tRaisePropertyChanged(L\"IsInstalling\");\n\tRaisePropertyChanged(L\"IsDownloadingOrLater\");\n\tRaisePropertyChanged(L\"IsUpdateCardOpen\");\n\tRaisePropertyChanged(L\"IsUpdateCardClosable\");\n\tRaisePropertyChanged(L\"IsCancelButtonVisible\");\n\n\tif (status >= UpdateStatus::Available) {\n\t\tRaisePropertyChanged(L\"UpdateCardTitle\");\n\t\tRaisePropertyChanged(L\"UpdateReleaseNotesLink\");\n\n\t\tif (status == UpdateStatus::Downloading) {\n\t\t\t_downloadProgressChangedRevoker = UpdateService::Get().DownloadProgressChanged(\n\t\t\t\tauto_revoke,\n\t\t\t\tstd::bind_front(&AboutViewModel::_UpdateService_DownloadProgressChanged, this)\n\t\t\t);\n\t\t} else {\n\t\t\t_downloadProgressChangedRevoker.Revoke();\n\n\t\t\tif (status >= UpdateStatus::ErrorWhileDownloading) {\n\t\t\t\tRaisePropertyChanged(L\"IsNoDownloadProgress\");\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid AboutViewModel::_UpdateService_DownloadProgressChanged(double) {\n\tRaisePropertyChanged(L\"IsNoDownloadProgress\");\n\tRaisePropertyChanged(L\"DownloadProgress\");\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/AboutViewModel.h",
    "content": "#pragma once\n#include \"AboutViewModel.g.h\"\n#include \"UpdateService.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct AboutViewModel : AboutViewModelT<AboutViewModel>,\n                        wil::notify_property_changed_base<AboutViewModel> {\n\tAboutViewModel();\n\n\tImaging::SoftwareBitmapSource Logo() const noexcept {\n\t\treturn _logo;\n\t}\n\n\thstring Version() const noexcept;\n\n\tbool IsDeveloperMode() const noexcept;\n\tvoid IsDeveloperMode(bool value);\n\n\tfire_and_forget CheckForUpdates();\n\n\tbool IsCheckForPreviewUpdates() const noexcept;\n\tvoid IsCheckForPreviewUpdates(bool value);\n\n\tbool IsCheckForUpdatesButtonEnabled() const noexcept;\n\n\tbool IsAutoCheckForUpdates() const noexcept;\n\tvoid IsAutoCheckForUpdates(bool value);\n\n\tbool IsAnyUpdateStatus() const noexcept;\n\n\tbool IsCheckingForUpdates() const noexcept;\n\n\tbool IsErrorWhileChecking() const noexcept;\n\tvoid IsErrorWhileChecking(bool value);\n\n\tbool IsNoUpdate() const noexcept;\n\tvoid IsNoUpdate(bool value) const noexcept;\n\n\tbool IsAvailable() const noexcept;\n\n\tbool IsDownloading() const noexcept;\n\tbool IsErrorWhileDownloading() const noexcept;\n\tbool IsDownloadingOrLater() const noexcept;\n\tbool IsInstalling() const noexcept;\n\n\tbool IsUpdateCardOpen() const noexcept;\n\tvoid IsUpdateCardOpen(bool value);\n\n\tbool IsUpdateCardClosable() const noexcept;\n\tbool IsCancelButtonVisible() const noexcept;\n\n\thstring UpdateCardTitle() const noexcept;\n\n\tbool IsNoDownloadProgress() const noexcept;\n\tdouble DownloadProgress() const noexcept;\n\n\tUri UpdateReleaseNotesLink() const noexcept;\n\n\tfire_and_forget DownloadAndInstall();\n\n\tvoid Cancel();\n\tvoid Retry();\n\nprivate:\n\tvoid _UpdateService_StatusChanged(::Magpie::UpdateStatus status);\n\tvoid _UpdateService_DownloadProgressChanged(double);\n\n\t::Magpie::Event<::Magpie::UpdateStatus>::EventRevoker _updateStatusChangedRevoker;\n\t::Magpie::Event<double>::EventRevoker _downloadProgressChangedRevoker;\n\t::Magpie::Event<bool>::EventRevoker _showOnHomePageChangedRevoker;\n\n\tImaging::SoftwareBitmapSource _logo{ nullptr };\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/AboutViewModel.idl",
    "content": "namespace Magpie {\n\truntimeclass AboutViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tWindows.UI.Xaml.Media.Imaging.SoftwareBitmapSource Logo { get; };\n\n\t\tString Version { get; };\n\n\t\tBoolean IsDeveloperMode;\n\n\t\tvoid CheckForUpdates();\n\t\tBoolean IsCheckingForUpdates { get; };\n\t\tBoolean IsCheckForUpdatesButtonEnabled { get; };\n\n\t\tBoolean IsAutoCheckForUpdates;\n\t\tBoolean IsCheckForPreviewUpdates;\n\n\t\tBoolean IsAnyUpdateStatus { get; };\n\n\t\tBoolean IsErrorWhileChecking;\n\t\tBoolean IsNoUpdate;\n\t\tBoolean IsAvailable { get; };\n\t\tBoolean IsDownloading { get; };\n\t\tBoolean IsErrorWhileDownloading { get; };\n\t\tBoolean IsInstalling { get; };\n\t\tBoolean IsDownloadingOrLater { get; };\n\n\t\tBoolean IsUpdateCardOpen;\n\t\tBoolean IsUpdateCardClosable { get; };\n\t\tBoolean IsCancelButtonVisible { get; };\n\n\t\tString UpdateCardTitle { get; };\n\n\t\tBoolean IsNoDownloadProgress { get; };\n\t\tDouble DownloadProgress { get; };\n\n\t\tWindows.Foundation.Uri UpdateReleaseNotesLink { get; };\n\n\t\tvoid DownloadAndInstall();\n\t\tvoid Cancel();\n\t\tvoid Retry();\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/AdaptersService.cpp",
    "content": "#include \"pch.h\"\n#include \"AdaptersService.h\"\n#include \"App.h\"\n#include \"DirectXHelper.h\"\n#include \"Logger.h\"\n#include \"Win32Helper.h\"\n#include <d3d11_4.h>\n\nusing namespace winrt::Magpie::implementation;\nusing namespace winrt;\n\nnamespace Magpie {\n\nbool AdaptersService::Initialize() noexcept {\n\tcom_ptr<IDXGIFactory7> dxgiFactory;\n\n\tHRESULT hr = CreateDXGIFactory1(IID_PPV_ARGS(&dxgiFactory));\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"CreateDXGIFactory1 失败\", hr);\n\t\treturn false;\n\t}\n\n\tcom_ptr<IDXGIAdapter1> curAdapter;\n\tfor (UINT adapterIdx = 0;\n\t\tSUCCEEDED(dxgiFactory->EnumAdapters1(adapterIdx, curAdapter.put()));\n\t\t++adapterIdx\n\t) {\n\t\tDXGI_ADAPTER_DESC1 desc;\n\t\thr = curAdapter->GetDesc1(&desc);\n\t\tif (FAILED(hr) || DirectXHelper::IsWARP(desc)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// 初始化时不检查是否支持 FL11，有些设备上 D3D11CreateDevice 相当慢\n\t\t_adapterInfos.push_back({\n\t\t\t.idx = adapterIdx,\n\t\t\t.vendorId = desc.VendorId,\n\t\t\t.deviceId = desc.DeviceId,\n\t\t\t.description = desc.Description\n\t\t});\n\t}\n\n\t_UpdateProfiles();\n\n    return true;\n}\n\nvoid AdaptersService::Uninitialize() noexcept {\n\tif (!_monitorThread.joinable()) {\n\t\treturn;\n\t}\n\n\tconst HANDLE hMonitorThread = _monitorThread.native_handle();\n\tif (!wil::handle_wait(hMonitorThread, 0)) {\n\t\tconst DWORD threadId = GetThreadId(hMonitorThread);\n\n\t\t// 持续尝试直到 _monitorThread 创建了消息队列\n\t\twhile (!PostThreadMessage(threadId, WM_QUIT, 0, 0)) {\n\t\t\tif (wil::handle_wait(hMonitorThread, 1)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t_monitorThread.join();\n}\n\nvoid AdaptersService::StartMonitor() noexcept {\n\t_monitorThread = std::thread(&AdaptersService::_MonitorThreadProc, this);\n}\n\nbool AdaptersService::_GatherAdapterInfos(\n\tcom_ptr<IDXGIFactory7>& dxgiFactory,\n\twil::unique_event_nothrow& adaptersChangedEvent,\n\tDWORD& adaptersChangedCookie\n) noexcept {\n\t// 显卡变化后需要重新创建 DXGI 工厂\n\tHRESULT hr = CreateDXGIFactory1(IID_PPV_ARGS(&dxgiFactory));\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"CreateDXGIFactory1 失败\", hr);\n\t\treturn false;\n\t}\n\n\thr = dxgiFactory->RegisterAdaptersChangedEvent(\n\t\tadaptersChangedEvent.get(), &adaptersChangedCookie);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"RegisterAdaptersChangedEvent 失败\", hr);\n\t\treturn false;\n\t}\n\n\tstd::vector<AdapterInfo> adapterInfos;\n\tSmallVector<com_ptr<IDXGIAdapter1>> adapters;\n\n\tcom_ptr<IDXGIAdapter1> curAdapter;\n\tfor (UINT adapterIdx = 0;\n\t\tSUCCEEDED(dxgiFactory->EnumAdapters1(adapterIdx, curAdapter.put()));\n\t\t++adapterIdx\n\t) {\n\t\tDXGI_ADAPTER_DESC1 desc;\n\t\thr = curAdapter->GetDesc1(&desc);\n\t\tif (FAILED(hr) || DirectXHelper::IsWARP(desc)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tadapterInfos.push_back({\n\t\t\t.idx = adapterIdx,\n\t\t\t.vendorId = desc.VendorId,\n\t\t\t.deviceId = desc.DeviceId,\n\t\t\t.description = desc.Description\n\t\t});\n\n\t\tadapters.push_back(std::move(curAdapter));\n\t}\n\n\t// 删除不支持功能级别 11 的显卡\n\twil::srwlock writeLock;\n\tWin32Helper::RunParallel([&](uint32_t i) {\n\t\tD3D_FEATURE_LEVEL fl = D3D_FEATURE_LEVEL_11_0;\n\t\tif (FAILED(D3D11CreateDevice(adapters[i].get(), D3D_DRIVER_TYPE_UNKNOWN,\n\t\t\tNULL, 0, &fl, 1, D3D11_SDK_VERSION, nullptr, nullptr, nullptr))) {\n\t\t\tauto lock = writeLock.lock_exclusive();\n\t\t\tadapterInfos[i].idx = std::numeric_limits<uint32_t>::max();\n\t\t}\n\t}, (uint32_t)adapters.size());\n\n\tstd::erase_if(adapterInfos, [](const AdapterInfo& info) {\n\t\treturn info.idx == std::numeric_limits<uint32_t>::max();\n\t});\n\n\tApp::Get().Dispatcher().TryEnqueue([this, adapterInfos(std::move(adapterInfos))]() {\n\t\t_adapterInfos = std::move(adapterInfos);\n\t\t_UpdateProfiles();\n\t\tAdaptersChanged.Invoke();\n\t});\n\n\treturn true;\n}\n\nvoid AdaptersService::_MonitorThreadProc() noexcept {\n#ifdef _DEBUG\n\tSetThreadDescription(GetCurrentThread(), L\"Magpie-AdaptersService 线程\");\n#endif\n\n\twinrt::init_apartment(winrt::apartment_type::single_threaded);\n\n\twil::unique_event_nothrow adaptersChangedEvent;\n\tHRESULT hr = adaptersChangedEvent.create();\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"创建 event 失败\", hr);\n\t\treturn;\n\t}\n\n\tcom_ptr<IDXGIFactory7> dxgiFactory;\n\tDWORD adaptersChangedCookie = 0;\n\tif (!_GatherAdapterInfos(dxgiFactory, adaptersChangedEvent, adaptersChangedCookie)) {\n\t\treturn;\n\t}\n\n\twhile (true) {\n\t\tMSG msg;\n\t\twhile (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) {\n\t\t\tif (msg.message == WM_QUIT) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tTranslateMessage(&msg);\n\t\t\tDispatchMessage(&msg);\n\t\t}\n\n\t\tif (msg.message == WM_QUIT) {\n\t\t\tbreak;\n\t\t}\n\n\t\tHANDLE hAdaptersChangedEvent = adaptersChangedEvent.get();\n\t\tif (MsgWaitForMultipleObjectsEx(1, &hAdaptersChangedEvent,\n\t\t\tINFINITE, QS_ALLINPUT, MWMO_INPUTAVAILABLE) == WAIT_OBJECT_0) {\n\t\t\t// WAIT_OBJECT_0 表示显卡变化\n\t\t\t// WAIT_OBJECT_0 + 1 表示有新消息\n\t\t\tif (!_GatherAdapterInfos(dxgiFactory, adaptersChangedEvent, adaptersChangedCookie)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tdxgiFactory->UnregisterAdaptersChangedEvent(adaptersChangedCookie);\n}\n\n// 有更改返回 true\nbool AdaptersService::_UpdateProfileGraphicsCardId(Profile& profile) noexcept {\n\tGraphicsCardId& gcid = profile.graphicsCardId;\n\t\n\tif (gcid.vendorId == 0 && gcid.deviceId == 0) {\n\t\tif (gcid.idx < 0) {\n\t\t\t// 使用默认显卡\n\t\t\treturn false;\n\t\t}\n\n\t\t// 来自旧版本的配置文件不存在 vendorId 和 deviceId，更新为新版本\n\t\tauto it = std::find_if(_adapterInfos.begin(), _adapterInfos.end(),\n\t\t\t[&](const AdapterInfo& ai) { return (int)ai.idx == gcid.idx; });\n\t\tif (it == _adapterInfos.end()) {\n\t\t\t// 未找到序号则改为使用默认显卡，无论如何原始配置已经丢失\n\t\t\tgcid.idx = -1;\n\t\t} else {\n\t\t\tgcid.vendorId = it->vendorId;\n\t\t\tgcid.deviceId = it->deviceId;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tauto it = std::find_if(_adapterInfos.begin(), _adapterInfos.end(), [&](const AdapterInfo& ai) {\n\t\treturn (int)ai.idx == gcid.idx && ai.vendorId == gcid.vendorId && ai.deviceId == gcid.deviceId;\n\t});\n\tif (it != _adapterInfos.end()) {\n\t\t// 全部匹配\n\t\treturn false;\n\t}\n\n\t// 序号指定的显卡不匹配则查找新序号\n\tit = std::find_if(_adapterInfos.begin(), _adapterInfos.end(), [&](const AdapterInfo& ai) {\n\t\treturn ai.vendorId == gcid.vendorId && ai.deviceId == gcid.deviceId;\n\t});\n\tif (it == _adapterInfos.end()) {\n\t\t// 找不到则将 idx 置为 -1 表示使用默认显卡，不改变 vendorId 和 deviceId，\n\t\t// 这样当指定的显卡再次可用时将自动使用。\n\t\tif (gcid.idx == -1) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\tgcid.idx = -1;\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\tgcid.idx = it->idx;\n\t\treturn true;\n\t}\n}\n\nvoid AdaptersService::_UpdateProfiles() noexcept {\n\tbool needSave = false;\n\n\t// 更新所有配置文件的显卡配置\n\tif (_UpdateProfileGraphicsCardId(AppSettings::Get().DefaultProfile())) {\n\t\tneedSave = true;\n\t}\n\n\tfor (Profile& profile : AppSettings::Get().Profiles()) {\n\t\tif (_UpdateProfileGraphicsCardId(profile)) {\n\t\t\tneedSave = true;\n\t\t}\n\t}\n\n\tif (needSave) {\n\t\tAppSettings::Get().SaveAsync();\n\t}\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/AdaptersService.h",
    "content": "#pragma once\n#include \"Event.h\"\n#include <dxgi1_6.h>\n\nnamespace Magpie {\n\nstruct Profile;\n\nstruct AdapterInfo {\n\tuint32_t idx = 0;\n\tuint32_t vendorId = 0;\n\tuint32_t deviceId = 0;\n\tstd::wstring description;\n};\n\nclass AdaptersService {\npublic:\n\tstatic AdaptersService& Get() noexcept {\n\t\tstatic AdaptersService instance;\n\t\treturn instance;\n\t}\n\n\tAdaptersService(const AdaptersService&) = delete;\n\tAdaptersService(AdaptersService&&) = delete;\n\n\tbool Initialize() noexcept;\n\n\tvoid Uninitialize() noexcept;\n\n\tvoid StartMonitor() noexcept;\n\n\tconst std::vector<AdapterInfo>& AdapterInfos() const noexcept {\n\t\treturn _adapterInfos;\n\t}\n\n\tEvent<> AdaptersChanged;\n\nprivate:\n\tAdaptersService() = default;\n\n\tbool _GatherAdapterInfos(\n\t\twinrt::com_ptr<IDXGIFactory7>& dxgiFactory,\n\t\twil::unique_event_nothrow& adaptersChangedEvent,\n\t\tDWORD& adaptersChangedCookie\n\t) noexcept;\n\n\tvoid _MonitorThreadProc() noexcept;\n\n\tbool _UpdateProfileGraphicsCardId(Profile& profile) noexcept;\n\n\tvoid _UpdateProfiles() noexcept;\n\n\tstd::thread _monitorThread;\n\tstd::vector<AdapterInfo> _adapterInfos;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/App.cpp",
    "content": "// Copyright (c) Xu\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <https://www.gnu.org/licenses/>.\n\n\n#include \"pch.h\"\n#include \"App.h\"\n#if __has_include(\"App.g.cpp\")\n#include \"App.g.cpp\"\n#endif\n#include \"AdaptersService.h\"\n#include \"CommonSharedConstants.h\"\n#include \"ControlSizeTrigger.h\"\n#include \"EffectsService.h\"\n#include \"IsEqualStateTrigger.h\"\n#include \"IsNullStateTrigger.h\"\n#include \"LocalizationService.h\"\n#include \"Logger.h\"\n#include \"MainWindow.h\"\n#include \"NotifyIconService.h\"\n#include \"ScalingService.h\"\n#include \"SettingsCard.h\"\n#include \"SettingsExpander.h\"\n#include \"SettingsGroup.h\"\n#include \"ShortcutService.h\"\n#include \"TextBlockHelper.h\"\n#include \"ToastService.h\"\n#include \"UpdateService.h\"\n#include \"Win32Helper.h\"\n#include <CoreWindow.h>\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::Globalization::NumberFormatting;\nusing namespace Windows::UI::ViewManagement;\n\nnamespace winrt::Magpie::implementation {\n\nstatic UINT WM_MAGPIE_SHOWME;\nstatic UINT WM_MAGPIE_QUIT;\n\nstatic void InitMessages() noexcept {\n\tWM_MAGPIE_SHOWME = RegisterWindowMessage(CommonSharedConstants::WM_MAGPIE_SHOWME);\n\tWM_MAGPIE_QUIT = RegisterWindowMessage(CommonSharedConstants::WM_MAGPIE_QUIT);\n\n\t// 允许被权限更低的实例唤醒\n\tif (!ChangeWindowMessageFilter(WM_MAGPIE_SHOWME, MSGFLT_ADD)) {\n\t\tLogger::Get().Win32Error(\"ChangeWindowMessageFilter 失败\");\n\t}\n}\n\n// 我们需要尽可能高的时钟分辨率来提高渲染帧率。\n// 通常 Magpie 被 OS 认为是后台进程，下面的调用避免 OS 自动降低时钟分辨率。\n// 见 https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-setprocessinformation\nstatic void IncreaseTimerResolution() noexcept {\n\tPROCESS_POWER_THROTTLING_STATE powerThrottling{\n\t\t.Version = PROCESS_POWER_THROTTLING_CURRENT_VERSION,\n\t\t.ControlMask = PROCESS_POWER_THROTTLING_EXECUTION_SPEED |\n\t\t\t\t\t   PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION,\n\t\t.StateMask = 0\n\t};\n\tSetProcessInformation(\n\t\tGetCurrentProcess(),\n\t\tProcessPowerThrottling,\n\t\t&powerThrottling,\n\t\tsizeof(powerThrottling)\n\t);\n}\n\n// 提前加载 twinapi.appcore.dll 和 threadpoolwinrt.dll 以避免退出时崩溃。应在 Windows.UI.Xaml.dll\n// 被加载前调用，注意避免初始化全局变量时意外加载这个 dll，尤其是为了注册 DependencyProperty。\n// 来自 https://github.com/CommunityToolkit/Microsoft.Toolkit.Win32/blob/6fb2c3e00803ea563af20f6bc9363091b685d81f/Microsoft.Toolkit.Win32.UI.XamlApplication/XamlApplication.cpp#L140\n// 参见 https://github.com/microsoft/microsoft-ui-xaml/issues/7260#issuecomment-1231314776\nstatic void FixThreadPoolCrash() noexcept {\n\tassert(!GetModuleHandle(L\"Windows.UI.Xaml.dll\"));\n\tLoadLibraryEx(L\"twinapi.appcore.dll\", nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32);\n\tLoadLibraryEx(L\"threadpoolwinrt.dll\", nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32);\n}\n\nApp& App::Get() {\n\tstatic com_ptr<App> instance = [] {\n\t\tFixThreadPoolCrash();\n\t\treturn make_self<App>();\n\t}();\n\n\treturn *instance;\n}\n\nApp::App() {\n\tUnhandledException([](IInspectable const&, UnhandledExceptionEventArgs const& e) {\n\t\tLogger::Get().ComCritical(\"未处理的异常\", e.Exception().value);\n\n\t\tif (IsDebuggerPresent()) {\n\t\t\thstring errorMessage = e.Message();\n\t\t\t__debugbreak();\n\t\t}\n\t});\n}\n\nbool App::Initialize(const wchar_t* arguments) {\n\t// 提高时钟分辨率\n\tIncreaseTimerResolution();\n\n\tInitMessages();\n\n\tif (!_CheckSingleInstance()) {\n\t\tLogger::Get().Info(\"已经有一个实例正在运行\");\n\t\tLogger::Get().Flush();\n\t\treturn false;\n\t}\n\n\t_mainWindow = std::make_unique<class MainWindow>();\n\n\tEffectsService::Get().Initialize();\n\n\t// 初始化 XAML 框架。退出时也不要关闭，如果正在播放动画会崩溃。文档中的清空消息队列的做法无用。\n\t_windowsXamlManager = Hosting::WindowsXamlManager::InitializeForCurrentThread();\n\n\t// Win10 中 CoreDispatcher.RunAsync 存在内存泄露，因此我们始终使用 DispatcherQueue。\n\t// 初始化 WindowsXamlManager 时已经创建 DispatcherQueue。\n\t_dispatcher = winrt::DispatcherQueue::GetForCurrentThread();\n\n\t// Win10 中隐藏 DesktopWindowXamlSource 窗口\n\tif (Win32Helper::GetOSVersion().IsWin10()) {\n\t\tif (CoreWindow coreWindow = CoreWindow::GetForCurrentThread()) {\n\t\t\tHWND hwndDWXS;\n\t\t\tcoreWindow.try_as<ICoreWindowInterop>()->get_WindowHandle(&hwndDWXS);\n\t\t\tShowWindow(hwndDWXS, SW_HIDE);\n\t\t}\n\t}\n\n\tLocalizationService::Get().EarlyInitialize();\n\n\tAppSettings& settings = AppSettings::Get();\n\tif (!settings.Initialize()) {\n\t\tLogger::Get().Error(\"初始化 AppSettings 失败\");\n\t\treturn false;\n\t}\n\n\tif (settings.IsAlwaysRunAsAdmin() && !Win32Helper::IsProcessElevated()) {\n\t\tRestart(true, arguments);\n\t\t_Uninitialize();\n\t\treturn false;\n\t}\n\n\t// 延迟注册 DependencyProperty，见 FixThreadPoolCrash\n\tSettingsCard::RegisterDependencyProperties();\n\tSettingsExpander::RegisterDependencyProperties();\n\tSettingsGroup::RegisterDependencyProperties();\n\tControlSizeTrigger::RegisterDependencyProperties();\n\tIsEqualStateTrigger::RegisterDependencyProperties();\n\tIsNullStateTrigger::RegisterDependencyProperties();\n\tTextBlockHelper::RegisterDependencyProperties();\n\n\t_themeChangedRevoker = AppSettings::Get().ThemeChanged(\n\t\tauto_revoke, std::bind_front(&App::_AppSettings_ThemeChanged, this));\n\t_AppSettings_ThemeChanged(AppSettings::Get().Theme());\n\n\tLocalizationService::Get().Initialize();\n\tToastService::Get().Initialize();\n\tif (!AdaptersService::Get().Initialize()) {\n\t\t_Uninitialize();\n\t\treturn false;\n\t}\n\tShortcutService::Get().Initialize();\n\tScalingService::Get().Initialize();\n\tUpdateService::Get().Initialize();\n\tThemeHelper::Initialize();\n\n\tNotifyIconService& notifyIconService = NotifyIconService::Get();\n\tnotifyIconService.Initialize();\n\tnotifyIconService.IsShow(AppSettings::Get().IsShowNotifyIcon());\n\t_isShowNotifyIconChangedRevoker = AppSettings::Get().IsShowNotifyIconChanged(\n\t\tauto_revoke, [](bool value) { NotifyIconService::Get().IsShow(value); });\n\n\t// 不显示托盘图标时忽略 -t 参数\n\tif (!notifyIconService.IsShow() || arguments != L\"-t\"sv) {\n\t\tif (!_mainWindow->Create()) {\n\t\t\t_Uninitialize();\n\t\t\treturn false;\n\t\t}\n\n\t\t// 有的设备上后台调用 D3D11CreateDevice 会拖累主窗口显示速度，因此应在主窗口显示后\n\t\t// 再检查显卡的功能级别。\n\t\t_mainWindow->Content()->Loaded([](const auto&, const auto&) {\n\t\t\t// 低优先级回调确保在初始化完毕后执行\n\t\t\tApp::Get().Dispatcher().TryEnqueue(DispatcherQueuePriority::Low, []() {\n\t\t\t\tAdaptersService::Get().StartMonitor();\n\t\t\t});\n\t\t});\n\t} else {\n\t\tAdaptersService::Get().StartMonitor();\n\t}\n\n\treturn true;\n}\n\nint App::Run() {\n\tMSG msg;\n\twhile (GetMessage(&msg, nullptr, 0, 0)) {\n\t\tif (msg.message == WM_MAGPIE_SHOWME) [[unlikely]] {\n\t\t\tShowMainWindow();\n\t\t} else if (msg.message == WM_MAGPIE_QUIT) [[unlikely]] {\n\t\t\tQuit();\n\t\t} else {\n\t\t\t_mainWindow->HandleMessage(msg);\n\t\t}\n\t}\n\n\t_Uninitialize();\n\n\tLogger::Get().Info(\"程序退出\");\n\tLogger::Get().Flush();\n\n\treturn (int)msg.wParam;\n}\n\nvoid App::ShowMainWindow() noexcept {\n\tif (*_mainWindow) {\n\t\t_mainWindow->Show();\n\t} else {\n\t\t_mainWindow->Create();\n\t}\n}\n\nvoid App::Quit() {\n\t_mainWindow->Destroy();\n\tPostQuitMessage(0);\n}\n\nvoid App::Restart(bool asElevated, const wchar_t* arguments) noexcept {\n\tQuit();\n\n\t// 提前释放锁\n\t_ReleaseMutexes();\n\n\t// 调用 ShellExecuteEx 后立即退出，因此应该指定 SEE_MASK_NOASYNC\n\tSHELLEXECUTEINFO execInfo = {\n\t\t.cbSize = sizeof(execInfo),\n\t\t.fMask = SEE_MASK_NOASYNC,\n\t\t.lpVerb = asElevated ? L\"runas\" : L\"open\",\n\t\t.lpFile = Win32Helper::GetExePath().c_str(),\n\t\t.lpParameters = arguments,\n\t\t.nShow = SW_SHOWNORMAL\n\t};\n\n\tif (!ShellExecuteEx(&execInfo)) {\n\t\tLogger::Get().Win32Error(\"ShellExecuteEx 失败\");\n\t\tLogger::Get().Flush();\n\t}\n}\n\nconst com_ptr<RootPage>& App::RootPage() const noexcept {\n\tassert(_mainWindow && *_mainWindow);\n\treturn _mainWindow->Content();\n}\n\nINumberFormatter2 App::DoubleFormatter() {\n\tstatic DecimalFormatter numberFormatter = []() {\n\t\tDecimalFormatter result;\n\t\tIncrementNumberRounder rounder;\n\t\t// 保留五位小数\n\t\trounder.Increment(0.00001);\n\t\tresult.NumberRounder(rounder);\n\t\tresult.FractionDigits(0);\n\t\treturn result;\n\t}();\n\n\treturn numberFormatter;\n}\n\nvoid App::_Uninitialize() {\n\tNotifyIconService::Get().Uninitialize();\n\tUpdateService::Get().Uninitialize();\n\tScalingService::Get().Uninitialize();\n\t// 提前取消热键注册，这样关闭 Magpie 后立即重新打开不会注册热键失败\n\tShortcutService::Get().Uninitialize();\n\tAdaptersService::Get().Uninitialize();\n\tToastService::Get().Uninitialize();\n\tEffectsService::Get().Uninitialize();\n\n\t_colorValuesChangedRevoker.revoke();\n\t_isShowNotifyIconChangedRevoker.Revoke();\n\t_themeChangedRevoker.Revoke();\n\n\t// 确保退出时所有事件回调都已撤销，既保持整洁又能防止析构全局变量时崩溃\n\tassert(_DEBUG_DELEGATE_COUNT == 0);\n\n\t_ReleaseMutexes();\n}\n\nbool App::_CheckSingleInstance() noexcept {\n\tstatic constexpr const wchar_t* ELEVATED_MUTEX_NAME = L\"{E494C456-F587-4DAF-B68F-366278D31C45}\";\n\n\tif (Win32Helper::IsProcessElevated()) {\n\t\tbool alreadyExists = false;\n\t\tif (!_hElevatedMutex.try_create(\n\t\t\tELEVATED_MUTEX_NAME,\n\t\t\tCREATE_MUTEX_INITIAL_OWNER,\n\t\t\tMUTEX_ALL_ACCESS,\n\t\t\tnullptr,\n\t\t\t&alreadyExists) || alreadyExists) {\n\t\t\t// 通知已有实例显示主窗口\n\t\t\tPostMessage(HWND_BROADCAST, WM_MAGPIE_SHOWME, 0, 0);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tbool alreadyExists = false;\n\tif (!_hSingleInstanceMutex.try_create(\n\t\tCommonSharedConstants::SINGLE_INSTANCE_MUTEX_NAME,\n\t\tCREATE_MUTEX_INITIAL_OWNER,\n\t\tMUTEX_ALL_ACCESS,\n\t\tnullptr,\n\t\t&alreadyExists) || alreadyExists) {\n\t\tif (_hElevatedMutex) {\n\t\t\tif (!_hSingleInstanceMutex) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// 本实例是管理员身份，而已有实例不是。通知已有实例退出\n\t\t\tPostMessage(HWND_BROADCAST, WM_MAGPIE_QUIT, 0, 0);\n\n\t\t\t// 等待退出完成\n\t\t\tif (!wil::handle_wait(_hSingleInstanceMutex.get(), 10000)) {\n\t\t\t\tLogger::Get().Error(\"等待超时\");\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\t// 通知已有实例显示主窗口\n\t\t\tPostMessage(HWND_BROADCAST, WM_MAGPIE_SHOWME, 0, 0);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nvoid App::_AppSettings_ThemeChanged(AppTheme) {\n\t_UpdateColorValuesChangedRevoker();\n\t_UpdateTheme();\n}\n\nvoid App::_UpdateColorValuesChangedRevoker() {\n\tif (AppSettings::Get().Theme() == AppTheme::System) {\n\t\t_colorValuesChangedRevoker = _uiSettings.ColorValuesChanged(\n\t\t\tauto_revoke,\n\t\t\t[this](const auto&, const auto&) {\n\t\t\t\t_dispatcher.TryEnqueue([this] { _UpdateTheme(); });\n\t\t\t}\n\t\t);\n\t} else {\n\t\t_colorValuesChangedRevoker.revoke();\n\t}\n}\n\n// 来自 https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/apply-windows-themes#know-when-dark-mode-is-enabled\nstatic bool IsColorLight(const winrt::Windows::UI::Color& clr) noexcept {\n\treturn 5 * clr.G + 2 * clr.R + clr.B > 8 * 128;\n}\n\nvoid App::_UpdateTheme() {\n\tAppTheme theme = AppSettings::Get().Theme();\n\n\tbool isLightTheme = false;\n\tif (theme == AppTheme::System) {\n\t\t// 前景色是亮色表示当前是深色主题\n\t\tisLightTheme = !IsColorLight(_uiSettings.GetColorValue(UIColorType::Foreground));\n\t} else {\n\t\tisLightTheme = theme == AppTheme::Light;\n\t}\n\n\tbool expected = !isLightTheme;\n\tif (_isLightTheme.compare_exchange_strong(expected, isLightTheme, std::memory_order_relaxed)) {\n\t\tThemeChanged.Invoke(isLightTheme);\n\t}\n}\n\nvoid App::_ReleaseMutexes() noexcept {\n\tif (_hSingleInstanceMutex) {\n\t\t_hSingleInstanceMutex.ReleaseMutex();\n\t\t_hSingleInstanceMutex.reset();\n\t}\n\tif (_hElevatedMutex) {\n\t\t_hElevatedMutex.ReleaseMutex();\n\t\t_hElevatedMutex.reset();\n\t}\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/App.h",
    "content": "#pragma once\n#include \"App.g.h\"\n#include \"AppSettings.h\"\n#include \"Event.h\"\n#include <winrt/Windows.Globalization.NumberFormatting.h>\n#include <winrt/Windows.UI.Xaml.Hosting.h>\n\nnamespace Magpie {\nclass MainWindow;\n}\n\nnamespace winrt::Magpie::implementation {\n\nstruct RootPage;\n\nclass App : public App_base<App, Markup::IXamlMetadataProvider> {\npublic:\n\tstatic App& Get();\n\n\tApp();\n\tApp(const App&) = delete;\n\tApp(App&&) = delete;\n\n\tbool Initialize(const wchar_t* arguments);\n\n\tint Run();\n\n\tconst DispatcherQueue& Dispatcher() const noexcept {\n\t\treturn _dispatcher;\n\t}\n\n\tvoid ShowMainWindow() noexcept;\n\n\tvoid Quit();\n\n\tvoid Restart(bool asElevated = false, const wchar_t* arguments = nullptr) noexcept;\n\n\tconst com_ptr<RootPage>& RootPage() const noexcept;\n\n\tconst ::Magpie::MainWindow& MainWindow() const noexcept {\n\t\treturn *_mainWindow;\n\t}\n\n\t::Magpie::MainWindow& MainWindow() noexcept {\n\t\treturn *_mainWindow;\n\t}\n\n\tbool IsLightTheme() const noexcept {\n\t\treturn _isLightTheme.load(std::memory_order_relaxed);\n\t}\n\n\tstatic Windows::Globalization::NumberFormatting::INumberFormatter2 DoubleFormatter();\n\n\t::Magpie::MultithreadEvent<bool> ThemeChanged;\n\nprivate:\n\tvoid _Uninitialize();\n\n\tbool _CheckSingleInstance() noexcept;\n\n\tvoid _AppSettings_ThemeChanged(::Magpie::AppTheme theme);\n\n\tvoid _UpdateColorValuesChangedRevoker();\n\n\tvoid _UpdateTheme();\n\n\tvoid _ReleaseMutexes() noexcept;\n\n\twil::unique_mutex_nothrow _hSingleInstanceMutex;\n\t// 以管理员身份运行时持有此锁\n\twil::unique_mutex_nothrow _hElevatedMutex;\n\n\tHosting::WindowsXamlManager _windowsXamlManager{ nullptr };\n\n\tstd::unique_ptr<::Magpie::MainWindow> _mainWindow;\n\n\tDispatcherQueue _dispatcher{ nullptr };\n\n\t::Magpie::Event<::Magpie::AppTheme>::EventRevoker _themeChangedRevoker;\n\tWindows::UI::ViewManagement::UISettings _uiSettings;\n\tWindows::UI::ViewManagement::UISettings::ColorValuesChanged_revoker _colorValuesChangedRevoker;\n\tstd::atomic<bool> _isLightTheme = true;\n\n\t::Magpie::Event<bool>::EventRevoker _isShowNotifyIconChangedRevoker;\n\n\t////////////////////////////////////////////////////\n\t// \n\t// IXamlMetadataProvider 相关\n\t// \n\t/////////////////////////////////////////////////////\npublic:\n\tMarkup::IXamlType GetXamlType(Interop::TypeName const& type) {\n\t\treturn _AppProvider()->GetXamlType(type);\n\t}\n\n\tMarkup::IXamlType GetXamlType(hstring const& fullName) {\n\t\treturn _AppProvider()->GetXamlType(fullName);\n\t}\n\n\tcom_array<Markup::XmlnsDefinition> GetXmlnsDefinitions() {\n\t\treturn _AppProvider()->GetXmlnsDefinitions();\n\t}\n\nprivate:\n\tcom_ptr<XamlMetaDataProvider> _AppProvider() {\n\t\tif (!_appProvider) {\n\t\t\t_appProvider = make_self<XamlMetaDataProvider>();\n\t\t}\n\t\treturn _appProvider;\n\t}\n\n\tcom_ptr<XamlMetaDataProvider> _appProvider;\n};\n\n}\n\nBASIC_FACTORY(App)\n"
  },
  {
    "path": "src/Magpie/App.idl",
    "content": "namespace Magpie {\n\tdelegate void SignalDelegate();\n}\n\n#include \"BoolNegationConverter.idl\"\n#include \"BoolToNegativeVisibilityConverter.idl\"\n#include \"SettingsExpanderCornerRadiusConverter.idl\"\n#include \"ControlSizeTrigger.idl\"\n#include \"IsEqualStateTrigger.idl\"\n#include \"IsNullStateTrigger.idl\"\n#include \"TextBlockHelper.idl\"\n#include \"TextMenuFlyout.idl\"\n#include \"SimpleStackPanel.idl\"\n#include \"WrapPanel.idl\"\n#include \"CaptionButtonsControl.idl\"\n#include \"TitleBarControl.idl\"\n#include \"PageFrame.idl\"\n#include \"SettingsCard.idl\"\n#include \"SettingsExpander.idl\"\n#include \"SettingsGroup.idl\"\n#include \"KeyVisual.idl\"\n#include \"KeyVisualState.idl\"\n#include \"ShortcutControl.idl\"\n#include \"ShortcutDialog.idl\"\n#include \"HomeViewModel.idl\"\n#include \"EffectParametersViewModel.idl\"\n#include \"ScalingModeEffectItem.idl\"\n#include \"ScalingModeItem.idl\"\n#include \"ScalingModesViewModel.idl\"\n#include \"ProfileViewModel.idl\"\n#include \"SettingsViewModel.idl\"\n#include \"CandidateWindowItem.idl\"\n#include \"NewProfileViewModel.idl\"\n#include \"AboutViewModel.idl\"\n#include \"ToastPage.idl\"\n#include \"RootPage.idl\"\n#include \"AboutPage.idl\"\n#include \"HomePage.idl\"\n#include \"ScalingModesPage.idl\"\n#include \"ProfilePage.idl\"\n#include \"SettingsPage.idl\"\n#include \"BlueInfoBarStyle.idl\"\n\nnamespace Magpie {\n\t[default_interface]\n\truntimeclass App : Windows.UI.Xaml.Application {\n\t\tstatic Windows.Globalization.NumberFormatting.INumberFormatter2 DoubleFormatter { get; };\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/App.xaml",
    "content": "<Application x:Class=\"Magpie.App\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:local=\"using:Magpie\"\n             xmlns:muxc=\"using:Microsoft.UI.Xaml.Controls\">\n\t<Application.Resources>\n\t\t<ResourceDictionary>\n\t\t\t<ResourceDictionary.MergedDictionaries>\n\t\t\t\t<muxc:XamlControlsResources ControlsResourcesVersion=\"Version2\" />\n\t\t\t\t<ResourceDictionary Source=\"ms-appx:///Magpie/KeyVisual.Resource.xaml\" />\n\t\t\t\t<ResourceDictionary Source=\"ms-appx:///Magpie/SettingsCard.Resource.xaml\" />\n\t\t\t\t<ResourceDictionary Source=\"ms-appx:///Magpie/SettingsExpander.Resource.xaml\" />\n\t\t\t\t<ResourceDictionary Source=\"ms-appx:///Magpie/SettingsGroup.Resource.xaml\" />\n\t\t\t</ResourceDictionary.MergedDictionaries>\n\n\t\t\t<local:BoolNegationConverter x:Key=\"NegationConverter\" />\n\t\t\t<local:BoolToNegativeVisibilityConverter x:Key=\"NegativeVisibilityConverter\" />\n\n\t\t\t<x:Double x:Key=\"SecondaryTextFontSize\">12</x:Double>\n\n\t\t\t<TransitionCollection x:Key=\"SettingsCardsAnimations\">\n\t\t\t\t<RepositionThemeTransition IsStaggeringEnabled=\"False\" />\n\t\t\t</TransitionCollection>\n\n\t\t\t<x:Double x:Key=\"SettingsCardSpacing\">2</x:Double>\n\t\t\t<x:Double x:Key=\"SettingsGroupSpacing\">32</x:Double>\n\n\t\t\t<x:Double x:Key=\"StandardIconSize\">14</x:Double>\n\n\t\t\t<!--  InfoBar  -->\n\t\t\t<Thickness x:Key=\"InfoBarIconMargin\">0,16,22,16</Thickness>\n\t\t\t<Thickness x:Key=\"InfoBarContentRootPadding\">20,0,0,0</Thickness>\n\n\t\t\t<Color x:Key=\"DeleteButtonBackgroundColor\">Firebrick</Color>\n\t\t\t<SolidColorBrush x:Key=\"DeleteButtonBackgroundBrush\"\n\t\t\t                 Color=\"{StaticResource DeleteButtonBackgroundColor}\" />\n\t\t\t<SolidColorBrush x:Key=\"DeleteButtonBackgroundPointerOverBrush\"\n\t\t\t                 Opacity=\"0.9\"\n\t\t\t                 Color=\"{StaticResource DeleteButtonBackgroundColor}\" />\n\t\t\t<SolidColorBrush x:Key=\"DeleteButtonBackgroundPressedBrush\"\n\t\t\t                 Opacity=\"0.8\"\n\t\t\t                 Color=\"{StaticResource DeleteButtonBackgroundColor}\" />\n\t\t\t<SolidColorBrush x:Key=\"DeleteButtonForegroundBrush\"\n\t\t\t                 Color=\"#FFFFFF\" />\n\t\t\t<SolidColorBrush x:Key=\"DeleteButtonForegroundPressedBrush\"\n\t\t\t                 Color=\"#B3FFFFFF\" />\n\n\t\t\t<!--  TeachingTip  -->\n\t\t\t<!--  TeachingTip 查找资源的方式很奇怪，似乎只能全局覆盖  -->\n\t\t\t<x:Double x:Key=\"TeachingTipMinWidth\">20</x:Double>\n\t\t\t<x:Double x:Key=\"TeachingTipMaxWidth\">400</x:Double>\n\n\t\t\t<!--  下面的图标由 Character Map UWP 导出  -->\n\t\t\t<!--  用于“缩放模式”，Segoe MDL2 Assets 不存在此图标  -->\n\t\t\t<x:String x:Key=\"SpecialEffectSizeIconData\">F1 M 6.25 8.125 C 6.25 7.975262 6.293945 7.848309 6.381836 7.744141 C 6.469727 7.639975 6.585286 7.565104 6.728516 7.519531 C 7.014974 7.428386 7.283528 7.338867 7.53418 7.250977 C 7.78483 7.163086 8.027344 7.063803 8.261719 6.953125 C 8.496094 6.842449 8.727213 6.717123 8.955078 6.577148 C 9.182942 6.437175 9.414062 6.269531 9.648438 6.074219 C 10.026041 5.761719 10.379231 5.42155 10.708008 5.053711 C 11.036783 4.685873 11.324869 4.290365 11.572266 3.867188 C 11.682942 3.684896 11.782227 3.507488 11.870117 3.334961 C 11.958008 3.162436 12.039388 2.98991 12.114258 2.817383 C 12.189127 2.644857 12.259114 2.469076 12.324219 2.290039 C 12.389322 2.111004 12.454426 1.920574 12.519531 1.71875 C 12.617188 1.438803 12.81901 1.298828 13.125 1.298828 C 13.430989 1.298828 13.632812 1.438803 13.730469 1.71875 C 13.860677 2.109375 13.997396 2.475586 14.140625 2.817383 C 14.283854 3.15918 14.459635 3.509115 14.667969 3.867188 C 14.915364 4.277344 15.206705 4.669597 15.541992 5.043945 C 15.877278 5.418295 16.230469 5.761719 16.601562 6.074219 C 16.842447 6.276043 17.076822 6.446941 17.304688 6.586914 C 17.532551 6.726889 17.762043 6.850586 17.993164 6.958008 C 18.224283 7.06543 18.465168 7.163086 18.71582 7.250977 C 18.966471 7.338867 19.238281 7.428386 19.53125 7.519531 C 19.667969 7.565104 19.780273 7.639975 19.868164 7.744141 C 19.956055 7.848309 20 7.975262 20 8.125 C 20 8.27474 19.956055 8.401693 19.868164 8.505859 C 19.780273 8.610026 19.667969 8.684896 19.53125 8.730469 C 19.23177 8.828125 18.956705 8.919271 18.706055 9.003906 C 18.455402 9.088542 18.216145 9.18457 17.988281 9.291992 C 17.760416 9.399414 17.53418 9.52474 17.30957 9.667969 C 17.084961 9.811198 16.848957 9.983725 16.601562 10.185547 C 16.236979 10.491537 15.90983 10.804037 15.620117 11.123047 C 15.330403 11.442058 15.069986 11.778972 14.838867 12.133789 C 14.607747 12.488607 14.401041 12.862956 14.21875 13.256836 C 14.036457 13.650717 13.873697 14.072266 13.730469 14.521484 C 13.684896 14.664714 13.611653 14.780273 13.510742 14.868164 C 13.40983 14.956055 13.281249 15 13.125 15 C 12.968749 15 12.840168 14.956055 12.739258 14.868164 C 12.638346 14.780273 12.565104 14.664714 12.519531 14.521484 C 12.233072 13.636068 11.861979 12.841797 11.40625 12.138672 C 10.950521 11.435547 10.364583 10.784506 9.648438 10.185547 C 9.414062 9.983725 9.18457 9.811198 8.959961 9.667969 C 8.735352 9.52474 8.505859 9.399414 8.271484 9.291992 C 8.037109 9.18457 7.794596 9.086914 7.543945 8.999023 C 7.293294 8.911133 7.021484 8.821615 6.728516 8.730469 C 6.585286 8.684896 6.469727 8.610026 6.381836 8.505859 C 6.293945 8.401693 6.25 8.27474 6.25 8.125 Z M 17.548828 8.125 C 16.559244 7.64974 15.696614 7.026367 14.960938 6.254883 C 14.22526 5.483398 13.61328 4.60612 13.125 3.623047 C 12.643229 4.5931 12.03125 5.467123 11.289062 6.245117 C 10.546875 7.023112 9.6875 7.64974 8.710938 8.125 C 9.6875 8.600261 10.546875 9.226889 11.289062 10.004883 C 12.03125 10.782878 12.643229 11.656901 13.125 12.626953 C 13.61328 11.643881 14.22526 10.766602 14.960938 9.995117 C 15.696614 9.223633 16.559244 8.600261 17.548828 8.125 Z M 0 14.375 C 0 14.225261 0.043945 14.098308 0.131836 13.994141 C 0.219727 13.889975 0.332031 13.815104 0.46875 13.769531 C 0.78125 13.678386 1.074219 13.569336 1.347656 13.442383 C 1.621094 13.31543 1.884766 13.147787 2.138672 12.939453 C 2.548828 12.594401 2.882487 12.223308 3.139648 11.826172 C 3.39681 11.429037 3.606771 10.976562 3.769531 10.46875 C 3.815104 10.332031 3.891601 10.229492 3.999023 10.161133 C 4.106445 10.092773 4.231771 10.058594 4.375 10.058594 C 4.518229 10.058594 4.643555 10.092773 4.750977 10.161133 C 4.858398 10.229492 4.934896 10.332031 4.980469 10.46875 C 5.058594 10.729167 5.148112 10.97168 5.249023 11.196289 C 5.349935 11.420898 5.467122 11.632487 5.600586 11.831055 C 5.734049 12.029623 5.883789 12.220053 6.049805 12.402344 C 6.21582 12.584636 6.402994 12.763672 6.611328 12.939453 C 6.865234 13.147787 7.128906 13.31543 7.402344 13.442383 C 7.675781 13.569336 7.96875 13.678386 8.28125 13.769531 C 8.417969 13.815104 8.530273 13.889975 8.618164 13.994141 C 8.706055 14.098308 8.75 14.225261 8.75 14.375 C 8.75 14.52474 8.706055 14.65332 8.618164 14.760742 C 8.530273 14.868164 8.417969 14.941406 8.28125 14.980469 C 7.96875 15.071615 7.675781 15.179037 7.402344 15.302734 C 7.128906 15.426433 6.865234 15.592448 6.611328 15.800781 C 6.207682 16.139324 5.872396 16.512045 5.605469 16.918945 C 5.338542 17.325846 5.130208 17.776693 4.980469 18.271484 C 4.934896 18.414713 4.860026 18.530273 4.755859 18.618164 C 4.651692 18.706055 4.524739 18.75 4.375 18.75 C 4.22526 18.75 4.098307 18.706055 3.994141 18.618164 C 3.889974 18.530273 3.815104 18.414713 3.769531 18.271484 C 3.704427 18.050131 3.62793 17.841797 3.540039 17.646484 C 3.452148 17.451172 3.349609 17.255859 3.232422 17.060547 C 2.906901 16.513672 2.516276 16.075846 2.060547 15.74707 C 1.604818 15.418295 1.074219 15.162761 0.46875 14.980469 C 0.332031 14.941406 0.219727 14.868164 0.131836 14.760742 C 0.043945 14.65332 0 14.52474 0 14.375 Z M 6.503906 14.375 C 6.054688 14.108073 5.652669 13.79069 5.297852 13.422852 C 4.943034 13.055014 4.635417 12.646484 4.375 12.197266 C 4.114583 12.646484 3.806966 13.055014 3.452148 13.422852 C 3.097331 13.79069 2.695312 14.108073 2.246094 14.375 C 2.695312 14.641928 3.097331 14.959311 3.452148 15.327148 C 3.806966 15.694987 4.114583 16.103516 4.375 16.552734 C 4.635417 16.103516 4.943034 15.694987 5.297852 15.327148 C 5.652669 14.959311 6.054688 14.641928 6.503906 14.375 Z</x:String>\n\t\t\t<!--  用于“缩放时调整光标速度”，Segoe MDL2 Assets 不存在此图标  -->\n\t\t\t<x:String x:Key=\"MoveIconData\">F1 M 8.75 2.128906 L 6.689453 4.189453 C 6.565755 4.313151 6.419271 4.375 6.25 4.375 C 6.080729 4.375 5.934245 4.313151 5.810547 4.189453 C 5.686849 4.065756 5.625 3.919271 5.625 3.75 C 5.625 3.58073 5.686849 3.434246 5.810547 3.310547 L 8.935547 0.185547 C 9.059244 0.06185 9.205729 0 9.375 0 C 9.544271 0 9.690755 0.06185 9.814453 0.185547 L 12.939453 3.310547 C 13.06315 3.434246 13.124999 3.58073 13.125 3.75 C 13.124999 3.919271 13.06315 4.065756 12.939453 4.189453 C 12.815755 4.313151 12.669271 4.375 12.5 4.375 C 12.330729 4.375 12.184244 4.313151 12.060547 4.189453 L 10 2.128906 L 10 6.875 C 10 7.044271 9.93815 7.190756 9.814453 7.314453 C 9.690755 7.438151 9.544271 7.5 9.375 7.5 C 9.205729 7.5 9.059244 7.438151 8.935547 7.314453 C 8.811849 7.190756 8.75 7.044271 8.75 6.875 Z M 0 9.375 C 0 9.205729 0.061849 9.059245 0.185547 8.935547 L 3.310547 5.810547 C 3.434245 5.68685 3.580729 5.625 3.75 5.625 C 3.919271 5.625 4.065755 5.68685 4.189453 5.810547 C 4.313151 5.934246 4.375 6.08073 4.375 6.25 C 4.375 6.419271 4.313151 6.565756 4.189453 6.689453 L 2.138672 8.75 L 6.875 8.75 C 7.044271 8.75 7.190755 8.81185 7.314453 8.935547 C 7.43815 9.059245 7.5 9.205729 7.5 9.375 C 7.5 9.544271 7.43815 9.690756 7.314453 9.814453 C 7.190755 9.938151 7.044271 10 6.875 10 L 2.138672 10 L 4.189453 12.060547 C 4.313151 12.184245 4.375 12.330729 4.375 12.5 C 4.375 12.669271 4.313151 12.815756 4.189453 12.939453 C 4.065755 13.063151 3.919271 13.125 3.75 13.125 C 3.580729 13.125 3.434245 13.063151 3.310547 12.939453 L 0.185547 9.814453 C 0.061849 9.690756 0 9.544271 0 9.375 Z M 14.375 12.5 C 14.375 12.330729 14.436849 12.184245 14.560547 12.060547 L 16.621094 10 L 11.875 10 C 11.705729 10 11.559244 9.938151 11.435547 9.814453 C 11.311849 9.690756 11.25 9.544271 11.25 9.375 C 11.25 9.205729 11.311849 9.059245 11.435547 8.935547 C 11.559244 8.81185 11.705729 8.75 11.875 8.75 L 16.621094 8.75 L 14.560547 6.689453 C 14.436849 6.565756 14.375 6.419271 14.375 6.25 C 14.375 6.08073 14.436849 5.934246 14.560547 5.810547 C 14.684244 5.68685 14.830729 5.625 15 5.625 C 15.169271 5.625 15.315755 5.68685 15.439453 5.810547 L 18.564453 8.935547 C 18.68815 9.059245 18.75 9.205729 18.75 9.375 C 18.75 9.544271 18.68815 9.690756 18.564453 9.814453 L 15.439453 12.939453 C 15.315755 13.063151 15.169271 13.125 15 13.125 C 14.830729 13.125 14.684244 13.063151 14.560547 12.939453 C 14.436849 12.815756 14.375 12.669271 14.375 12.5 Z M 5.625 15 C 5.625 14.830729 5.686849 14.684245 5.810547 14.560547 C 5.934245 14.43685 6.080729 14.375 6.25 14.375 C 6.419271 14.375 6.565755 14.43685 6.689453 14.560547 L 8.75 16.611328 L 8.75 11.875 C 8.75 11.705729 8.811849 11.559245 8.935547 11.435547 C 9.059244 11.31185 9.205729 11.25 9.375 11.25 C 9.544271 11.25 9.690755 11.31185 9.814453 11.435547 C 9.93815 11.559245 10 11.705729 10 11.875 L 10 16.611328 L 12.060547 14.560547 C 12.184244 14.43685 12.330729 14.375 12.5 14.375 C 12.669271 14.375 12.815755 14.43685 12.939453 14.560547 C 13.06315 14.684245 13.124999 14.830729 13.125 15 C 13.124999 15.169271 13.06315 15.315756 12.939453 15.439453 L 9.814453 18.564453 C 9.690755 18.68815 9.544271 18.75 9.375 18.75 C 9.205729 18.75 9.059244 18.68815 8.935547 18.564453 L 5.810547 15.439453 C 5.686849 15.315756 5.625 15.169271 5.625 15 Z</x:String>\n\t\t</ResourceDictionary>\n\t</Application.Resources>\n</Application>\n"
  },
  {
    "path": "src/Magpie/AppSettings.cpp",
    "content": "#include \"pch.h\"\n#include \"AppSettings.h\"\n#include \"App.h\"\n#include \"AutoStartHelper.h\"\n#include \"CommonSharedConstants.h\"\n#include \"JsonHelper.h\"\n#include \"LocalizationService.h\"\n#include \"Logger.h\"\n#include \"MainWindow.h\"\n#include \"Profile.h\"\n#include \"resource.h\"\n#include \"ScalingMode.h\"\n#include \"ScalingModesService.h\"\n#include \"ShortcutHelper.h\"\n#include \"StrHelper.h\"\n#include \"Win32Helper.h\"\n#include <rapidjson/prettywriter.h>\n#include <ShellScalingApi.h>\n#include <ShlObj.h>\n\nusing namespace winrt;\nusing namespace winrt::Magpie;\n\nnamespace Magpie {\n\n// 如果配置文件和已发布的正式版本不再兼容，应提高此版本号\nstatic constexpr uint32_t CONFIG_VERSION = 4;\n\n_AppSettingsData::_AppSettingsData() {}\n\n_AppSettingsData::~_AppSettingsData() {}\n\n// 将热键存储为 uint32_t\n// 不能存储为字符串，因为某些键的字符相同，如句号和小键盘的点\nstatic uint32_t EncodeShortcut(const Shortcut& shortcut) noexcept {\n\tuint32_t value = shortcut.code;\n\tif (shortcut.win) {\n\t\tvalue |= 0x100;\n\t}\n\tif (shortcut.ctrl) {\n\t\tvalue |= 0x200;\n\t}\n\tif (shortcut.alt) {\n\t\tvalue |= 0x400;\n\t}\n\tif (shortcut.shift) {\n\t\tvalue |= 0x800;\n\t}\n\treturn value;\n}\n\nstatic void DecodeShortcut(uint32_t value, Shortcut& shortcut) noexcept {\n\tif (value > 0xfff) {\n\t\treturn;\n\t}\n\n\tshortcut.code = value & 0xff;\n\tshortcut.win = value & 0x100;\n\tshortcut.ctrl = value & 0x200;\n\tshortcut.alt = value & 0x400;\n\tshortcut.shift = value & 0x800;\n}\n\nstatic void WriteProfile(rapidjson::PrettyWriter<rapidjson::StringBuffer>& writer, const Profile& profile) noexcept {\n\twriter.StartObject();\n\tif (!profile.name.empty()) {\n\t\twriter.Key(\"name\");\n\t\twriter.String(StrHelper::UTF16ToUTF8(profile.name).c_str());\n\t\twriter.Key(\"packaged\");\n\t\twriter.Bool(profile.isPackaged);\n\t\twriter.Key(\"pathRule\");\n\t\twriter.String(StrHelper::UTF16ToUTF8(profile.pathRule).c_str());\n\t\twriter.Key(\"classNameRule\");\n\t\twriter.String(StrHelper::UTF16ToUTF8(profile.classNameRule).c_str());\n\t\twriter.Key(\"launcherPath\");\n\t\twriter.String(StrHelper::UTF16ToUTF8(profile.launcherPath.native()).c_str());\n\t\twriter.Key(\"autoScale\");\n\t\twriter.Uint((uint32_t)profile.autoScale);\n\t\twriter.Key(\"launchParameters\");\n\t\twriter.String(StrHelper::UTF16ToUTF8(profile.launchParameters).c_str());\n\t}\n\n\twriter.Key(\"scalingMode\");\n\twriter.Int(profile.scalingMode);\n\twriter.Key(\"captureMethod\");\n\twriter.Uint((uint32_t)profile.captureMethod);\n\twriter.Key(\"multiMonitorUsage\");\n\twriter.Uint((uint32_t)profile.multiMonitorUsage);\n\n\twriter.Key(\"initialWindowedScaleFactor\");\n\twriter.Uint((uint32_t)profile.initialWindowedScaleFactor);\n\twriter.Key(\"customInitialWindowedScaleFactor\");\n\twriter.Double(profile.customInitialWindowedScaleFactor);\n\n\twriter.Key(\"graphicsCardId\");\n\twriter.StartObject();\n\twriter.Key(\"idx\");\n\twriter.Int(profile.graphicsCardId.idx);\n\twriter.Key(\"vendorId\");\n\twriter.Uint(profile.graphicsCardId.vendorId);\n\twriter.Key(\"deviceId\");\n\twriter.Uint(profile.graphicsCardId.deviceId);\n\twriter.EndObject();\n\twriter.Key(\"frameRateLimiterEnabled\");\n\twriter.Bool(profile.isFrameRateLimiterEnabled);\n\twriter.Key(\"maxFrameRate\");\n\twriter.Double(profile.maxFrameRate);\n\n\twriter.Key(\"3DGameMode\");\n\twriter.Bool(profile.Is3DGameMode());\n\twriter.Key(\"captureTitleBar\");\n\twriter.Bool(profile.IsCaptureTitleBar());\n\twriter.Key(\"adjustCursorSpeed\");\n\twriter.Bool(profile.IsAdjustCursorSpeed());\n\twriter.Key(\"disableDirectFlip\");\n\twriter.Bool(profile.IsDirectFlipDisabled());\n\n\twriter.Key(\"cursorScaling\");\n\twriter.Uint((uint32_t)profile.cursorScaling);\n\twriter.Key(\"customCursorScaling\");\n\twriter.Double(profile.customCursorScaling);\n\twriter.Key(\"cursorInterpolationMode\");\n\twriter.Uint((uint32_t)profile.cursorInterpolationMode);\n\twriter.Key(\"autoHideCursorEnabled\");\n\twriter.Bool(profile.isAutoHideCursorEnabled);\n\twriter.Key(\"autoHideCursorDelay\");\n\twriter.Double(profile.autoHideCursorDelay);\n\n\twriter.Key(\"croppingEnabled\");\n\twriter.Bool(profile.isCroppingEnabled);\n\twriter.Key(\"cropping\");\n\twriter.StartObject();\n\twriter.Key(\"left\");\n\twriter.Double(profile.cropping.Left);\n\twriter.Key(\"top\");\n\twriter.Double(profile.cropping.Top);\n\twriter.Key(\"right\");\n\twriter.Double(profile.cropping.Right);\n\twriter.Key(\"bottom\");\n\twriter.Double(profile.cropping.Bottom);\n\twriter.EndObject();\n\n\twriter.Key(\"destAlignment\");\n\twriter.Uint((uint32_t)profile.destAlignment);\n\n\twriter.EndObject();\n}\n\nstatic void ReplaceIcon(HINSTANCE hInst, HWND hWnd, bool large) noexcept {\n\tHICON hIconApp = NULL;\n\tLoadIconMetric(hInst, MAKEINTRESOURCE(IDI_APP), large ? LIM_LARGE : LIM_SMALL, &hIconApp);\n\tHICON hIconOld = (HICON)SendMessage(hWnd, WM_SETICON, large ? ICON_BIG : ICON_SMALL, (LPARAM)hIconApp);\n\tif (hIconOld) {\n\t\tDestroyIcon(hIconOld);\n\t}\n}\n\nstatic HRESULT CALLBACK TaskDialogCallback(\n\tHWND hWnd,\n\tUINT msg,\n\tWPARAM /*wParam*/,\n\tLPARAM /*lParam*/,\n\tLONG_PTR /*lpRefData*/\n) {\n\tif (msg == TDN_CREATED) {\n\t\t// 将任务栏图标替换为 Magpie 的图标\n\t\t// GetModuleHandle 获取 exe 文件的句柄\n\t\tHINSTANCE hInst = GetModuleHandle(nullptr);\n\t\tReplaceIcon(hInst, hWnd, true);\n\t\tReplaceIcon(hInst, hWnd, false);\n\n\t\t// 删除标题栏中的图标\n\t\tINT_PTR style = GetWindowLongPtr(hWnd, GWL_STYLE);\n\t\tSetWindowLongPtr(hWnd, GWL_STYLE, style & ~WS_SYSMENU);\n\t}\n\n\treturn S_OK;\n}\n\nstatic void ShowErrorMessage(const wchar_t* mainInstruction, const wchar_t* content) noexcept {\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\tconst hstring errorStr = resourceLoader.GetString(L\"AppSettings_Dialog_Error\");\n\tconst hstring exitStr = resourceLoader.GetString(L\"AppSettings_Dialog_Exit\");\n\n\tTASKDIALOG_BUTTON button{ IDCANCEL, exitStr.c_str() };\n\tTASKDIALOGCONFIG tdc{\n\t\t.cbSize = sizeof(TASKDIALOGCONFIG),\n\t\t.dwFlags = TDF_SIZE_TO_CONTENT,\n\t\t.pszWindowTitle = errorStr.c_str(),\n\t\t.pszMainIcon = TD_ERROR_ICON,\n\t\t.pszMainInstruction = mainInstruction,\n\t\t.pszContent = content,\n\t\t.cButtons = 1,\n\t\t.pButtons = &button,\n\t\t.pfCallback = TaskDialogCallback\n\t};\n\tTaskDialogIndirect(&tdc, nullptr, nullptr, nullptr);\n}\n\nAppSettings::~AppSettings() {}\n\nbool AppSettings::Initialize() noexcept {\n\tLogger& logger = Logger::Get();\n\n\t// 若程序所在目录存在配置文件则为便携模式\n\t_isPortableMode = Win32Helper::FileExists(StrHelper::Concat(\n\t\tCommonSharedConstants::CONFIG_DIR, L\"\\\\\", CommonSharedConstants::CONFIG_FILENAME).c_str());\n\n\tstd::filesystem::path existingConfigPath;\n\tif (!_UpdateConfigPath(&existingConfigPath)) {\n\t\tlogger.Error(\"_UpdateConfigPath 失败\");\n\t\treturn false;\n\t}\n\n\tlogger.Info(StrHelper::Concat(\"便携模式: \", _isPortableMode ? \"是\" : \"否\"));\n\n\tif (existingConfigPath.empty()) {\n\t\tlogger.Info(\"不存在配置文件\");\n\t\t_SetDefaultScalingModes();\n\t\t_SetDefaultShortcuts();\n\t\tSaveAsync();\n\t\treturn true;\n\t}\n\n\t// 此时 ResourceLoader 使用“首选语言”\n\t\n\tstd::string configText;\n\tif (!Win32Helper::ReadTextFile(existingConfigPath.c_str(), configText)) {\n\t\tlogger.Error(\"读取配置文件失败\");\n\t\tResourceLoader resourceLoader =\n\t\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\t\thstring title = resourceLoader.GetString(L\"AppSettings_ErrorDialog_ReadFailed\");\n\t\thstring content = resourceLoader.GetString(L\"AppSettings_ErrorDialog_ConfigLocation\");\n\t\tShowErrorMessage(title.c_str(),\n\t\t\tfmt::format(fmt::runtime(std::wstring_view(content)), existingConfigPath.native()).c_str());\n\t\treturn false;\n\t}\n\n\tif (configText.empty()) {\n\t\tLogger::Get().Info(\"配置文件为空\");\n\t\t_SetDefaultScalingModes();\n\t\t_SetDefaultShortcuts();\n\t\tSaveAsync();\n\t\treturn true;\n\t}\n\n\trapidjson::Document doc;\n\tdoc.ParseInsitu(configText.data());\n\tif (doc.HasParseError()) {\n\t\tLogger::Get().Error(fmt::format(\"解析配置失败\\n\\t错误码: {}\", (int)doc.GetParseError()));\n\t\tResourceLoader resourceLoader =\n\t\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\t\thstring title = resourceLoader.GetString(L\"AppSettings_ErrorDialog_NotValidJson\");\n\t\thstring content = resourceLoader.GetString(L\"AppSettings_ErrorDialog_ConfigLocation\");\n\t\tShowErrorMessage(title.c_str(),\n\t\t\tfmt::format(fmt::runtime(std::wstring_view(content)), existingConfigPath.native()).c_str());\n\t\treturn false;\n\t}\n\n\tif (!doc.IsObject()) {\n\t\tLogger::Get().Error(\"配置文件根元素不是 Object\");\n\t\tResourceLoader resourceLoader =\n\t\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\t\thstring title = resourceLoader.GetString(L\"AppSettings_ErrorDialog_ParseFailed\");\n\t\thstring content = resourceLoader.GetString(L\"AppSettings_ErrorDialog_ConfigLocation\");\n\t\tShowErrorMessage(title.c_str(),\n\t\t\tfmt::format(fmt::runtime(std::wstring_view(content)), existingConfigPath.native()).c_str());\n\t\treturn false;\n\t}\n\n\t_LoadSettings(((const rapidjson::Document&)doc).GetObj());\n\n\t// 迁移旧版配置后立刻保存，_SetDefaultShortcuts 用于确保快捷键不为空\n\tif (_SetDefaultShortcuts() || !Win32Helper::FileExists(_configPath.c_str())) {\n\t\tSaveAsync();\n\t}\n\n\treturn true;\n}\n\nbool AppSettings::Save() noexcept {\n\t_UpdateWindowPlacement();\n\treturn _Save(*this);\n}\n\nfire_and_forget AppSettings::SaveAsync() noexcept {\n\t_UpdateWindowPlacement();\n\n\t// 拷贝当前配置\n\t_AppSettingsData data = *this;\n\tco_await resume_background();\n\n\t_Save(data);\n}\n\nvoid AppSettings::IsPortableMode(bool value) noexcept {\n\tif (_isPortableMode == value) {\n\t\treturn;\n\t}\n\n\tif (!value) {\n\t\t// 关闭便携模式需删除本地配置文件\n\t\tif (!DeleteFile((_configDir / CommonSharedConstants::CONFIG_FILENAME).c_str())) {\n\t\t\tif (GetLastError() != ERROR_FILE_NOT_FOUND) {\n\t\t\t\tLogger::Get().Win32Error(\"删除本地配置文件失败\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t_isPortableMode = value;\n\n\tif (_UpdateConfigPath()) {\n\t\tLogger::Get().Info(value ? \"已开启便携模式\" : \"已关闭便携模式\");\n\t\tSaveAsync();\n\t} else {\n\t\tLogger::Get().Error(value ? \"开启便携模式失败\" : \"关闭便携模式失败\");\n\t\t_isPortableMode = !value;\n\t}\n}\n\nvoid AppSettings::Language(int value) {\n\tif (_language == value) {\n\t\treturn;\n\t}\n\n\t_language = value;\n\tSaveAsync();\n}\n\nvoid AppSettings::Theme(AppTheme value) {\n\tif (_theme == value) {\n\t\treturn;\n\t}\n\n\t_theme = value;\n\tThemeChanged.Invoke(value);\n\n\tSaveAsync();\n}\n\nvoid AppSettings::SetShortcut(ShortcutAction action, const Shortcut& value) {\n\tif (_shortcuts[(size_t)action] == value) {\n\t\treturn;\n\t}\n\n\t_shortcuts[(size_t)action] = value;\n\tLogger::Get().Info(fmt::format(\"热键 {} 已更改为 {}\", ShortcutHelper::ToString(action), StrHelper::UTF16ToUTF8(value.ToString())));\n\tShortcutChanged.Invoke(action);\n\n\tSaveAsync();\n}\n\nvoid AppSettings::CountdownSeconds(uint32_t value) noexcept {\n\tif (_countdownSeconds == value) {\n\t\treturn;\n\t}\n\n\t_countdownSeconds = value;\n\tCountdownSecondsChanged.Invoke(value);\n\n\tSaveAsync();\n}\n\nvoid AppSettings::IsDeveloperMode(bool value) noexcept {\n\t_isDeveloperMode = value;\n\tif (!value) {\n\t\t// 关闭开发者模式则禁用所有开发者选项\n\t\t_isDebugMode = false;\n\t\t_isBenchmarkMode = false;\n\t\t_isEffectCacheDisabled = false;\n\t\t_isFontCacheDisabled = false;\n\t\t_isSaveEffectSources = false;\n\t\t_isWarningsAreErrors = false;\n\t\t_duplicateFrameDetectionMode = DuplicateFrameDetectionMode::Dynamic;\n\t\t_isStatisticsForDynamicDetectionEnabled = false;\n\t\t_isFP16Disabled = false;\n\t}\n\n\tSaveAsync();\n}\n\nvoid AppSettings::IsAlwaysRunAsAdmin(bool value) noexcept {\n\tif (_isAlwaysRunAsAdmin == value) {\n\t\treturn;\n\t}\n\n\t_isAlwaysRunAsAdmin = value;\n\tSaveAsync();\n\n\t// 更新启动任务\n\tif (AutoStartHelper::IsAutoStartEnabled()) {\n\t\tAutoStartHelper::EnableAutoStart(value);\n\t}\n}\n\nvoid AppSettings::IsShowNotifyIcon(bool value) noexcept {\n\tif (_isShowNotifyIcon == value) {\n\t\treturn;\n\t}\n\n\t_isShowNotifyIcon = value;\n\tIsShowNotifyIconChanged.Invoke(value);\n\n\tSaveAsync();\n}\n\nstatic std::filesystem::path GetSystemScreenshotsDir() noexcept {\n\t// 如果 Screenshots 文件夹不存在将失败\n\twil::unique_cotaskmem_string folder;\n\tHRESULT hr = SHGetKnownFolderPath(\n\t\tFOLDERID_Screenshots, KF_FLAG_DEFAULT, NULL, folder.put());\n\tif (SUCCEEDED(hr)) {\n\t\treturn folder.get();\n\t}\n\n\t// 屏幕截图文件夹默认路径是 %USERPROFILE%\\Pictures\\Screenshots\n\n\thr = SHGetKnownFolderPath(\n\t\tFOLDERID_Pictures, KF_FLAG_DEFAULT, NULL, folder.put());\n\tif (SUCCEEDED(hr)) {\n\t\treturn StrHelper::Concat(folder.get(), L\"\\\\Screenshots\");\n\t}\n\n\thr = SHGetKnownFolderPath(\n\t\tFOLDERID_Profile, KF_FLAG_DEFAULT, NULL, folder.put());\n\tif (SUCCEEDED(hr)) {\n\t\treturn StrHelper::Concat(folder.get(), L\"\\\\Pictures\\\\Screenshots\");\n\t}\n\t\n\tLogger::Get().ComError(\"SHGetKnownFolderPath 失败\", hr);\n\treturn {};\n}\n\nstatic bool IsSubfolder(const std::wstring& sub, const std::wstring& parent) noexcept {\n\tif (!sub.starts_with(parent)) {\n\t\treturn false;\n\t}\n\n\tif (parent.size() == sub.size()) {\n\t\treturn true;\n\t}\n\n\treturn sub[parent.size()] == L'\\\\';\n}\n\n// 失败时返回空字符串\nstd::filesystem::path AppSettings::ScreenshotsDir() const noexcept {\n\tif (_screenshotsDir.empty()) {\n\t\t// 系统“屏幕截图”文件夹\n\t\treturn GetSystemScreenshotsDir();\n\t} else if (_screenshotsDir.is_relative()) {\n\t\t// 相对路径\n\t\tstd::wstring workingDir;\n\t\tHRESULT hr = wil::GetCurrentDirectoryW(workingDir);\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"wil::GetCurrentDirectoryW 失败\", hr);\n\t\t\treturn {};\n\t\t}\n\n\t\tif (_screenshotsDir == L\".\") {\n\t\t\treturn std::filesystem::path(std::move(workingDir));\n\t\t} else {\n\t\t\treturn (std::filesystem::path(std::move(workingDir)) / _screenshotsDir).lexically_normal();\n\t\t}\n\t} else {\n\t\t// 绝对路径\n\t\treturn _screenshotsDir;\n\t}\n}\n\nvoid AppSettings::ScreenshotsDir(const std::filesystem::path& value) noexcept {\n\tassert(!value.empty());\n\n\tif (value == GetSystemScreenshotsDir()) {\n\t\t// 系统“屏幕截图”文件夹\n\t\t_screenshotsDir.clear();\n\t} else {\n\t\tstd::wstring workingDir;\n\t\tHRESULT hr = wil::GetCurrentDirectoryW(workingDir);\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"wil::GetCurrentDirectoryW 失败\", hr);\n\t\t\treturn;\n\t\t}\n\n\t\tif (IsSubfolder(value, workingDir)) {\n\t\t\t// 保存位置在工作文件夹内则转换为相对路径\n\t\t\tif (value.native().size() == workingDir.size()) {\n\t\t\t\t_screenshotsDir = L\".\";\n\t\t\t} else {\n\t\t\t\t_screenshotsDir = StrHelper::Concat(\n\t\t\t\t\tL\".\",\n\t\t\t\t\tstd::wstring(value.native().begin() + workingDir.size(), value.native().end())\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// 绝对路径\n\t\t\t_screenshotsDir = value;\n\t\t}\n\t}\n\n\tSaveAsync();\n}\n\nvoid AppSettings::_UpdateWindowPlacement() noexcept {\n\tconst HWND hwndMain = implementation::App::Get().MainWindow().Handle();;\n\tif (!hwndMain) {\n\t\treturn;\n\t}\n\n\tWINDOWPLACEMENT wp{ sizeof(wp) };\n\tif (!GetWindowPlacement(hwndMain, &wp)) {\n\t\tLogger::Get().Win32Error(\"GetWindowPlacement 失败\");\n\t\treturn;\n\t}\n\n\t// rcNormalPosition 使用工作区坐标，应转换为屏幕坐标。\n\t// 见 https://github.com/Blinue/nt5src/blob/daad8a087a4e75422ec96b7911f1df4669989611/Source/XPSP1/NT/windows/core/ntuser/kernel/winmgr.c#L752\n\tHMONITOR hMon = MonitorFromWindow(hwndMain, MONITOR_DEFAULTTOPRIMARY);\n\tMONITORINFO mi{ sizeof(mi) };\n\tif (!GetMonitorInfo(hMon, &mi)) {\n\t\tLogger::Get().Win32Error(\"GetMonitorInfo 失败\");\n\t\treturn;\n\t}\n\n\tconst LONG workingAreaOffsetX = mi.rcWork.left - mi.rcMonitor.left;\n\tconst LONG workingAreaOffsetY = mi.rcWork.top - mi.rcMonitor.top;\n\t_mainWindowCenter = {\n\t\t(wp.rcNormalPosition.left + wp.rcNormalPosition.right) / 2.0f + workingAreaOffsetX,\n\t\t(wp.rcNormalPosition.top + wp.rcNormalPosition.bottom) / 2.0f + workingAreaOffsetY,\n\t};\n\n\tconst float dpiFactor = GetDpiForWindow(hwndMain) / float(USER_DEFAULT_SCREEN_DPI);\n\t_mainWindowSizeInDips = {\n\t\t(wp.rcNormalPosition.right - wp.rcNormalPosition.left) / dpiFactor,\n\t\t(wp.rcNormalPosition.bottom - wp.rcNormalPosition.top) / dpiFactor,\n\t};\n\n\t_isMainWindowMaximized = wp.showCmd == SW_MAXIMIZE;\n}\n\nbool AppSettings::_Save(const _AppSettingsData& data) noexcept {\n\tif (!Win32Helper::CreateDir(data._configDir.native(), true)) {\n\t\tLogger::Get().Win32Error(\"创建配置文件夹失败\");\n\t\treturn false;\n\t}\n\n\trapidjson::StringBuffer json;\n\trapidjson::PrettyWriter<rapidjson::StringBuffer> writer(json);\n\twriter.StartObject();\n\n\twriter.Key(\"language\");\n\tif (_language < 0) {\n\t\twriter.String(\"\");\n\t} else {\n\t\tconst wchar_t* language = LocalizationService::SupportedLanguages()[_language];\n\t\twriter.String(StrHelper::UTF16ToUTF8(language).c_str());\n\t}\n\n\twriter.Key(\"theme\");\n\twriter.Uint((uint32_t)data._theme);\n\n\twriter.Key(\"windowPos\");\n\twriter.StartObject();\n\twriter.Key(\"centerX\");\n\twriter.Double(data._mainWindowCenter.X);\n\twriter.Key(\"centerY\");\n\twriter.Double(data._mainWindowCenter.Y);\n\twriter.Key(\"width\");\n\twriter.Double(data._mainWindowSizeInDips.Width);\n\twriter.Key(\"height\");\n\twriter.Double(data._mainWindowSizeInDips.Height);\n\twriter.Key(\"maximized\");\n\twriter.Bool(data._isMainWindowMaximized);\n\twriter.EndObject();\n\n\twriter.Key(\"shortcuts\");\n\twriter.StartObject();\n\twriter.Key(\"scale\");\n\twriter.Uint(EncodeShortcut(data._shortcuts[(size_t)ShortcutAction::Scale]));\n\twriter.Key(\"windowedModeScale\");\n\twriter.Uint(EncodeShortcut(data._shortcuts[(size_t)ShortcutAction::WindowedModeScale]));\n\twriter.Key(\"toolbar\");\n\twriter.Uint(EncodeShortcut(data._shortcuts[(size_t)ShortcutAction::Toolbar]));\n\twriter.EndObject();\n\n\twriter.Key(\"countdownSeconds\");\n\twriter.Uint(data._countdownSeconds);\n\twriter.Key(\"developerMode\");\n\twriter.Bool(data._isDeveloperMode);\n\twriter.Key(\"debugMode\");\n\twriter.Bool(data._isDebugMode);\n\twriter.Key(\"benchmarkMode\");\n\twriter.Bool(data._isBenchmarkMode);\n\twriter.Key(\"disableTopmost\");\n\twriter.Bool(data._isTopmostDisabled);\n\twriter.Key(\"disableEffectCache\");\n\twriter.Bool(data._isEffectCacheDisabled);\n\twriter.Key(\"disableFontCache\");\n\twriter.Bool(data._isFontCacheDisabled);\n\twriter.Key(\"saveEffectSources\");\n\twriter.Bool(data._isSaveEffectSources);\n\twriter.Key(\"warningsAreErrors\");\n\twriter.Bool(data._isWarningsAreErrors);\n\twriter.Key(\"allowScalingMaximized\");\n\twriter.Bool(data._isAllowScalingMaximized);\n\twriter.Key(\"simulateExclusiveFullscreen\");\n\twriter.Bool(data._isSimulateExclusiveFullscreen);\n\twriter.Key(\"alwaysRunAsAdmin\");\n\twriter.Bool(data._isAlwaysRunAsAdmin);\n\twriter.Key(\"showNotifyIcon\");\n\twriter.Bool(data._isShowNotifyIcon);\n\twriter.Key(\"inlineParams\");\n\twriter.Bool(data._isInlineParams);\n\twriter.Key(\"autoCheckForUpdates\");\n\twriter.Bool(data._isAutoCheckForUpdates);\n\twriter.Key(\"checkForPreviewUpdates\");\n\twriter.Bool(data._isCheckForPreviewUpdates);\n\twriter.Key(\"updateCheckDate\");\n\twriter.Int64(data._updateCheckDate.time_since_epoch().count());\n\twriter.Key(\"duplicateFrameDetectionMode\");\n\twriter.Uint((uint32_t)data._duplicateFrameDetectionMode);\n\twriter.Key(\"enableStatisticsForDynamicDetection\");\n\twriter.Bool(data._isStatisticsForDynamicDetectionEnabled);\n\twriter.Key(\"minFrameRate\");\n\twriter.Double(data._minFrameRate);\n\twriter.Key(\"disableFP16\");\n\twriter.Bool(data._isFP16Disabled);\n\n\tScalingModesService::Get().Export(writer);\n\n\twriter.Key(\"profiles\");\n\twriter.StartArray();\n\tWriteProfile(writer, data._defaultProfile);\n\tfor (const Profile& rule : data._profiles) {\n\t\tWriteProfile(writer, rule);\n\t}\n\twriter.EndArray();\n\n\twriter.Key(\"overlay\");\n\twriter.StartObject();\n\twriter.Key(\"fullscreenInitialToolbarState\");\n\twriter.Uint((uint32_t)_fullscreenInitialToolbarState);\n\twriter.Key(\"windowedInitialToolbarState\");\n\twriter.Uint((uint32_t)_windowedInitialToolbarState);\n\twriter.Key(\"screenshotsDir\");\n\twriter.String(StrHelper::UTF16ToUTF8(_screenshotsDir.native()).c_str());\n\twriter.Key(\"windows\");\n\twriter.StartObject();\n\tfor (const auto& [name, windowOption] : _overlayOptions.windows) {\n\t\twriter.Key(name.c_str());\n\t\twriter.StartObject();\n\t\twriter.Key(\"hArea\");\n\t\twriter.Uint(windowOption.hArea);\n\t\twriter.Key(\"vArea\");\n\t\twriter.Uint(windowOption.vArea);\n\t\twriter.Key(\"hPos\");\n\t\twriter.Double(windowOption.hPos);\n\t\twriter.Key(\"vPos\");\n\t\twriter.Double(windowOption.vPos);\n\t\twriter.EndObject();\n\t}\n\twriter.EndObject();\n\twriter.EndObject();\n\n\twriter.EndObject();\n\n\t// 防止并行写入\n\tauto lock = _saveLock.lock_exclusive();\n\tif (!Win32Helper::WriteTextFile(data._configPath.c_str(), { json.GetString(), json.GetLength() })) {\n\t\tLogger::Get().Error(\"保存配置失败\");\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n// 永远不会失败，遇到不合法的配置项时静默忽略\nvoid AppSettings::_LoadSettings(const rapidjson::GenericObject<true, rapidjson::Value>& root) noexcept {\n\t{\n\t\tstd::wstring language;\n\t\tJsonHelper::ReadString(root, \"language\", language);\n\t\tif (language.empty()) {\n\t\t\t_language = -1;\n\t\t} else {\n\t\t\tStrHelper::ToLowerCase(language);\n\t\t\tstd::span<const wchar_t*> languages = LocalizationService::SupportedLanguages();\n\t\t\tauto it = std::find(languages.begin(), languages.end(), language);\n\t\t\tif (it == languages.end()) {\n\t\t\t\t// 未知的语言设置，重置为使用系统设置\n\t\t\t\t_language = -1;\n\t\t\t} else {\n\t\t\t\t_language = int(it - languages.begin());\n\t\t\t}\n\t\t}\n\t}\n\n\t{\n\t\tuint32_t theme = (uint32_t)AppTheme::System;\n\t\tJsonHelper::ReadUInt(root, \"theme\", theme);\n\t\tif (theme <= 2) {\n\t\t\t_theme = (AppTheme)theme;\n\t\t} else {\n\t\t\t_theme = AppTheme::System;\n\t\t}\n\t}\n\n\tauto windowPosNode = root.FindMember(\"windowPos\");\n\tif (windowPosNode != root.MemberEnd() && windowPosNode->value.IsObject()) {\n\t\tauto windowPosObj = windowPosNode->value.GetObj();\n\n\t\tPoint center{};\n\t\tSize size{};\n\t\tif (JsonHelper::ReadFloat(windowPosObj, \"centerX\", center.X, true) &&\n\t\t\tJsonHelper::ReadFloat(windowPosObj, \"centerY\", center.Y, true) &&\n\t\t\tJsonHelper::ReadFloat(windowPosObj, \"width\", size.Width, true) &&\n\t\t\tJsonHelper::ReadFloat(windowPosObj, \"height\", size.Height, true)) {\n\t\t\t_mainWindowCenter = center;\n\t\t\t_mainWindowSizeInDips = size;\n\t\t} else {\n\t\t\t// 尽最大努力和旧版本兼容\n\t\t\tint x = 0;\n\t\t\tint y = 0;\n\t\t\tuint32_t width = 0;\n\t\t\tuint32_t height = 0;\n\t\t\tif (JsonHelper::ReadInt(windowPosObj, \"x\", x, true) &&\n\t\t\t\tJsonHelper::ReadInt(windowPosObj, \"y\", y, true) &&\n\t\t\t\tJsonHelper::ReadUInt(windowPosObj, \"width\", width, true) &&\n\t\t\t\tJsonHelper::ReadUInt(windowPosObj, \"height\", height, true)) {\n\t\t\t\t_mainWindowCenter = {\n\t\t\t\t\tx + width / 2.0f,\n\t\t\t\t\ty + height / 2.0f\n\t\t\t\t};\n\n\t\t\t\t// 如果窗口位置不存在屏幕则使用主屏幕的缩放，猜错的后果仅是窗口尺寸错误，\n\t\t\t\t// 无论如何原始缩放信息已经丢失。\n\t\t\t\tconst HMONITOR hMon = MonitorFromPoint(\n\t\t\t\t\t{ std::lroundf(_mainWindowCenter.X), std::lroundf(_mainWindowCenter.Y) },\n\t\t\t\t\tMONITOR_DEFAULTTOPRIMARY\n\t\t\t\t);\n\n\t\t\t\tUINT dpi = USER_DEFAULT_SCREEN_DPI;\n\t\t\t\tGetDpiForMonitor(hMon, MDT_EFFECTIVE_DPI, &dpi, &dpi);\n\t\t\t\tconst float dpiFactor = dpi / float(USER_DEFAULT_SCREEN_DPI);\n\t\t\t\t_mainWindowSizeInDips = {\n\t\t\t\t\twidth / dpiFactor,\n\t\t\t\t\theight / dpiFactor\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tJsonHelper::ReadBool(windowPosObj, \"maximized\", _isMainWindowMaximized);\n\t}\n\n\tauto shortcutsNode = root.FindMember(\"shortcuts\");\n\tif (shortcutsNode == root.MemberEnd()) {\n\t\t// v0.10.0-preview1 使用 hotkeys\n\t\tshortcutsNode= root.FindMember(\"hotkeys\");\n\t}\n\tif (shortcutsNode != root.MemberEnd() && shortcutsNode->value.IsObject()) {\n\t\tauto shortcutsObj = shortcutsNode->value.GetObj();\n\n\t\tauto scaleNode = shortcutsObj.FindMember(\"scale\");\n\t\tif (scaleNode != shortcutsObj.MemberEnd() && scaleNode->value.IsUint()) {\n\t\t\tDecodeShortcut(scaleNode->value.GetUint(), _shortcuts[(size_t)ShortcutAction::Scale]);\n\t\t}\n\n\t\tauto windowedModeScaleNode = shortcutsObj.FindMember(\"windowedModeScale\");\n\t\tif (windowedModeScaleNode != shortcutsObj.MemberEnd() && windowedModeScaleNode->value.IsUint()) {\n\t\t\tDecodeShortcut(windowedModeScaleNode->value.GetUint(), _shortcuts[(size_t)ShortcutAction::WindowedModeScale]);\n\t\t}\n\n\t\tauto toolbarNode = shortcutsObj.FindMember(\"toolbar\");\n\t\tif (toolbarNode == shortcutsObj.MemberEnd()) {\n\t\t\t// v0.12 前使用 overlay\n\t\t\ttoolbarNode = shortcutsObj.FindMember(\"overlay\");\n\t\t}\n\t\t\n\t\tif (toolbarNode != shortcutsObj.MemberEnd() && toolbarNode->value.IsUint()) {\n\t\t\tDecodeShortcut(toolbarNode->value.GetUint(), _shortcuts[(size_t)ShortcutAction::Toolbar]);\n\t\t}\n\t}\n\n\tif (!JsonHelper::ReadUInt(root, \"countdownSeconds\", _countdownSeconds, true)) {\n\t\t// v0.10.0-preview1 使用 downCount\n\t\tJsonHelper::ReadUInt(root, \"downCount\", _countdownSeconds);\n\t}\n\tif (_countdownSeconds == 0 || _countdownSeconds > 5) {\n\t\t_countdownSeconds = 3;\n\t}\n\tJsonHelper::ReadBool(root, \"developerMode\", _isDeveloperMode);\n\tJsonHelper::ReadBool(root, \"debugMode\", _isDebugMode);\n\tJsonHelper::ReadBool(root, \"benchmarkMode\", _isBenchmarkMode);\n\tJsonHelper::ReadBool(root, \"disableTopmost\", _isTopmostDisabled);\n\tJsonHelper::ReadBool(root, \"disableEffectCache\", _isEffectCacheDisabled);\n\tJsonHelper::ReadBool(root, \"disableFontCache\", _isFontCacheDisabled);\n\tJsonHelper::ReadBool(root, \"saveEffectSources\", _isSaveEffectSources);\n\tJsonHelper::ReadBool(root, \"warningsAreErrors\", _isWarningsAreErrors);\n\tJsonHelper::ReadBool(root, \"allowScalingMaximized\", _isAllowScalingMaximized);\n\tJsonHelper::ReadBool(root, \"simulateExclusiveFullscreen\", _isSimulateExclusiveFullscreen);\n\tif (!JsonHelper::ReadBool(root, \"alwaysRunAsAdmin\", _isAlwaysRunAsAdmin, true)) {\n\t\t// v0.10.0-preview1 使用 alwaysRunAsElevated\n\t\tJsonHelper::ReadBool(root, \"alwaysRunAsElevated\", _isAlwaysRunAsAdmin);\n\t}\n\tif (!JsonHelper::ReadBool(root, \"showNotifyIcon\", _isShowNotifyIcon, true)) {\n\t\t// v0.10 使用 showTrayIcon\n\t\tJsonHelper::ReadBool(root, \"showTrayIcon\", _isShowNotifyIcon);\n\t}\n\tJsonHelper::ReadBool(root, \"inlineParams\", _isInlineParams);\n\tJsonHelper::ReadBool(root, \"autoCheckForUpdates\", _isAutoCheckForUpdates);\n\tJsonHelper::ReadBool(root, \"checkForPreviewUpdates\", _isCheckForPreviewUpdates);\n\t{\n\t\tint64_t d = 0;\n\t\tJsonHelper::ReadInt64(root, \"updateCheckDate\", d);\n\n\t\tusing std::chrono::system_clock;\n\t\t_updateCheckDate = system_clock::time_point(system_clock::duration(d));\n\t}\n\t{\n\t\tuint32_t duplicateFrameDetectionMode = (uint32_t)DuplicateFrameDetectionMode::Dynamic;\n\t\tJsonHelper::ReadUInt(root, \"duplicateFrameDetectionMode\", duplicateFrameDetectionMode);\n\t\tif (duplicateFrameDetectionMode > 2) {\n\t\t\tduplicateFrameDetectionMode = (uint32_t)DuplicateFrameDetectionMode::Dynamic;\n\t\t}\n\t\t_duplicateFrameDetectionMode = (::Magpie::DuplicateFrameDetectionMode)duplicateFrameDetectionMode;\n\t}\n\tJsonHelper::ReadBool(root, \"enableStatisticsForDynamicDetection\", _isStatisticsForDynamicDetectionEnabled);\n\tJsonHelper::ReadFloat(root, \"minFrameRate\", _minFrameRate);\n\tJsonHelper::ReadBool(root, \"disableFP16\", _isFP16Disabled);\n\n\t[[maybe_unused]] bool result = ScalingModesService::Get().Import(root, true);\n\tassert(result);\n\n\tauto scaleProfilesNode = root.FindMember(\"profiles\");\n\tif (scaleProfilesNode == root.MemberEnd()) {\n\t\t// v0.10.0-preview1 使用 scalingProfiles\n\t\tscaleProfilesNode = root.FindMember(\"scalingProfiles\");\n\t}\n\tif (scaleProfilesNode != root.MemberEnd() && scaleProfilesNode->value.IsArray()) {\n\t\tauto scaleProfilesArray = scaleProfilesNode->value.GetArray();\n\n\t\tconst rapidjson::SizeType size = scaleProfilesArray.Size();\n\t\tif (size > 0) {\n\t\t\tif (scaleProfilesArray[0].IsObject()) {\n\t\t\t\t// 解析默认缩放配置不会失败\n\t\t\t\t_LoadProfile(scaleProfilesArray[0].GetObj(), _defaultProfile, true);\n\t\t\t}\n\n\t\t\tif (size > 1) {\n\t\t\t\t_profiles.reserve((size_t)size - 1);\n\t\t\t\tfor (rapidjson::SizeType i = 1; i < size; ++i) {\n\t\t\t\t\tif (!scaleProfilesArray[i].IsObject()) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tProfile& rule = _profiles.emplace_back();\n\t\t\t\t\tif (!_LoadProfile(scaleProfilesArray[i].GetObj(), rule)) {\n\t\t\t\t\t\t_profiles.pop_back();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tauto overlayNode = root.FindMember(\"overlay\");\n\tif (overlayNode != root.MemberEnd() && overlayNode->value.IsObject()) {\n\t\tauto overlayObj = overlayNode->value.GetObj();\n\n\t\tuint32_t initialToolbarState = (uint32_t)ToolbarState::AutoHide;\n\t\tif (JsonHelper::ReadUInt(overlayObj, \"fullscreenInitialToolbarState\", initialToolbarState, true)) {\n\t\t\tif (initialToolbarState >= (uint32_t)ToolbarState::COUNT) {\n\t\t\t\tinitialToolbarState = (uint32_t)ToolbarState::AutoHide;\n\t\t\t}\n\t\t\t_fullscreenInitialToolbarState = (ToolbarState)initialToolbarState;\n\n\t\t\tinitialToolbarState = (uint32_t)ToolbarState::AutoHide;\n\t\t\tJsonHelper::ReadUInt(overlayObj, \"windowedInitialToolbarState\", initialToolbarState);\n\t\t\tif (initialToolbarState >= (uint32_t)ToolbarState::COUNT) {\n\t\t\t\tinitialToolbarState = (uint32_t)ToolbarState::AutoHide;\n\t\t\t}\n\t\t\t_windowedInitialToolbarState = (ToolbarState)initialToolbarState;\n\t\t} else {\n\t\t\t// v0.12.0-preview1 中工具栏初始状态不区分全屏和窗口模式缩放\n\t\t\tJsonHelper::ReadUInt(overlayObj, \"initialToolbarState\", initialToolbarState);\n\t\t\tif (initialToolbarState >= (uint32_t)ToolbarState::COUNT) {\n\t\t\t\tinitialToolbarState = (uint32_t)ToolbarState::AutoHide;\n\t\t\t}\n\t\t\t_fullscreenInitialToolbarState = (ToolbarState)initialToolbarState;\n\t\t\t_windowedInitialToolbarState = (ToolbarState)initialToolbarState;\n\t\t}\n\n\t\t{\n\t\t\tstd::wstring value;\n\t\t\tJsonHelper::ReadString(overlayObj, \"screenshotsDir\", value);\n\t\t\t_screenshotsDir = std::move(value);\n\t\t}\n\n\t\tauto windowsNode = overlayObj.FindMember(\"windows\");\n\t\tif (windowsNode != overlayObj.MemberEnd() && windowsNode->value.IsObject()) {\n\t\t\tauto windowsObj = windowsNode->value.GetObj();\n\n\t\t\tconst rapidjson::SizeType size = windowsObj.MemberCount();\n\t\t\tif (size > 0) {\n\t\t\t\t_overlayOptions.windows.reserve(size);\n\n\t\t\t\tfor (const auto& windowOptionPair : windowsObj) {\n\t\t\t\t\tif (!windowOptionPair.value.IsObject()) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tauto windowOptionObj = windowOptionPair.value.GetObj();\n\n\t\t\t\t\tOverlayWindowOption& windowOption = _overlayOptions.windows[windowOptionPair.name.GetString()];\n\t\t\t\t\tJsonHelper::ReadUInt16(windowOptionObj, \"hArea\", windowOption.hArea);\n\t\t\t\t\tJsonHelper::ReadUInt16(windowOptionObj, \"vArea\", windowOption.vArea);\n\t\t\t\t\tJsonHelper::ReadFloat(windowOptionObj, \"hPos\", windowOption.hPos);\n\t\t\t\t\tJsonHelper::ReadFloat(windowOptionObj, \"vPos\", windowOption.vPos);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nbool AppSettings::_LoadProfile(\n\tconst rapidjson::GenericObject<true, rapidjson::Value>& profileObj,\n\tProfile& profile,\n\tbool isDefault\n) const noexcept {\n\tif (!isDefault) {\n\t\tif (!JsonHelper::ReadString(profileObj, \"name\", profile.name, true)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t{\n\t\t\tstd::wstring_view nameView(profile.name);\n\t\t\tStrHelper::Trim(nameView);\n\t\t\tif (nameView.empty()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (!JsonHelper::ReadBool(profileObj, \"packaged\", profile.isPackaged, true)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!JsonHelper::ReadString(profileObj, \"pathRule\", profile.pathRule, true)\n\t\t\t|| profile.pathRule.empty()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!JsonHelper::ReadString(profileObj, \"classNameRule\", profile.classNameRule, true)\n\t\t\t|| profile.classNameRule.empty()) {\n\t\t\treturn false;\n\t\t}\n\n\t\t{\n\t\t\tstd::wstring value;\n\t\t\tJsonHelper::ReadString(profileObj, \"launcherPath\", value);\n\t\t\tprofile.launcherPath = std::move(value);\n\t\t}\n\t\t\n\t\t// 将旧版本的相对路径转换为绝对路径\n\t\tif (!profile.launcherPath.empty() && profile.launcherPath.is_relative()) {\n\t\t\tstd::filesystem::path exePath(profile.pathRule);\n\t\t\tprofile.launcherPath = (exePath.parent_path() / profile.launcherPath).lexically_normal();\n\t\t}\n\n\t\t{\n\t\t\tauto autoScaleNode = profileObj.FindMember(\"autoScale\");\n\t\t\tif (autoScaleNode != profileObj.MemberEnd()) {\n\t\t\t\tif (autoScaleNode->value.IsUint()) {\n\t\t\t\t\tuint32_t value = autoScaleNode->value.GetUint();\n\t\t\t\t\tif (value >= (uint32_t)AutoScale::COUNT) {\n\t\t\t\t\t\tvalue = (uint32_t)AutoScale::Disabled;\n\t\t\t\t\t}\n\t\t\t\t\tprofile.autoScale = (AutoScale)value;\n\t\t\t\t} else if (autoScaleNode->value.IsBool()) {\n\t\t\t\t\t// v0.12 前为布尔值\n\t\t\t\t\tprofile.autoScale = autoScaleNode->value.GetBool() ?\n\t\t\t\t\t\tAutoScale::Fullscreen : AutoScale::Disabled;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tJsonHelper::ReadString(profileObj, \"launchParameters\", profile.launchParameters);\n\t}\n\n\tJsonHelper::ReadInt(profileObj, \"scalingMode\", profile.scalingMode);\n\tif (profile.scalingMode < -1 || profile.scalingMode >= (int)_scalingModes.size()) {\n\t\tprofile.scalingMode = -1;\n\t}\n\n\t{\n\t\tuint32_t captureMethod = (uint32_t)CaptureMethod::GraphicsCapture;\n\t\tif (!JsonHelper::ReadUInt(profileObj, \"captureMethod\", captureMethod, true)) {\n\t\t\t// v0.10.0-preview1 使用 captureMode\n\t\t\tJsonHelper::ReadUInt(profileObj, \"captureMode\", captureMethod);\n\t\t}\n\t\t\n\t\tif (captureMethod >= (uint32_t)CaptureMethod::COUNT) {\n\t\t\tcaptureMethod = (uint32_t)CaptureMethod::GraphicsCapture;\n\t\t} else if (captureMethod == (uint32_t)CaptureMethod::DesktopDuplication) {\n\t\t\t// Desktop Duplication 捕获模式要求 Win10 20H1+\n\t\t\tif (!Win32Helper::GetOSVersion().Is20H1OrNewer()) {\n\t\t\t\tcaptureMethod = (uint32_t)CaptureMethod::GraphicsCapture;\n\t\t\t}\n\t\t}\n\t\tprofile.captureMethod = (CaptureMethod)captureMethod;\n\t}\n\n\t{\n\t\tuint32_t multiMonitorUsage = (uint32_t)MultiMonitorUsage::Closest;\n\t\tJsonHelper::ReadUInt(profileObj, \"multiMonitorUsage\", multiMonitorUsage);\n\t\tif (multiMonitorUsage >= (uint32_t)MultiMonitorUsage::COUNT) {\n\t\t\tmultiMonitorUsage = (uint32_t)MultiMonitorUsage::Closest;\n\t\t}\n\t\tprofile.multiMonitorUsage = (MultiMonitorUsage)multiMonitorUsage;\n\t}\n\n\t{\n\t\tuint32_t factor = (uint32_t)InitialWindowedScaleFactor::Auto;\n\t\tJsonHelper::ReadUInt(profileObj, \"initialWindowedScaleFactor\", factor);\n\t\tif (factor >= (uint32_t)InitialWindowedScaleFactor::COUNT) {\n\t\t\tfactor = (uint32_t)InitialWindowedScaleFactor::Auto;\n\t\t}\n\t\tprofile.initialWindowedScaleFactor = (InitialWindowedScaleFactor)factor;\n\t}\n\n\tJsonHelper::ReadFloat(profileObj, \"customInitialWindowedScaleFactor\",\n\t\tprofile.customInitialWindowedScaleFactor);\n\tif (profile.customInitialWindowedScaleFactor < 1.0f) {\n\t\tprofile.customInitialWindowedScaleFactor = 1.0f;\n\t}\n\t\n\t{\n\t\tauto graphicsCardIdNode = profileObj.FindMember(\"graphicsCardId\");\n\t\tif (graphicsCardIdNode == profileObj.end()) {\n\t\t\t// v0.10 和 v0.11 只使用索引\n\t\t\tint graphicsCardIdx = -1;\n\t\t\tif (!JsonHelper::ReadInt(profileObj, \"graphicsCard\", graphicsCardIdx, true)) {\n\t\t\t\t// v0.10.0-preview1 使用 graphicsAdapter\n\t\t\t\tuint32_t graphicsAdater = 0;\n\t\t\t\tJsonHelper::ReadUInt(profileObj, \"graphicsAdapter\", graphicsAdater);\n\t\t\t\tgraphicsCardIdx = (int)graphicsAdater - 1;\n\t\t\t}\n\n\t\t\t// 稍后由 ProfileService 设置 vendorId 和 deviceId\n\t\t\tprofile.graphicsCardId.idx = graphicsCardIdx;\n\t\t} else if (graphicsCardIdNode->value.IsObject()) {\n\t\t\tauto graphicsCardIdObj = graphicsCardIdNode->value.GetObj();\n\n\t\t\tauto idxNode = graphicsCardIdObj.FindMember(\"idx\");\n\t\t\tif (idxNode != graphicsCardIdObj.end() && idxNode->value.IsInt()) {\n\t\t\t\tprofile.graphicsCardId.idx = idxNode->value.GetInt();\n\t\t\t}\n\n\t\t\tauto vendorIdNode = graphicsCardIdObj.FindMember(\"vendorId\");\n\t\t\tif (vendorIdNode != graphicsCardIdObj.end() && vendorIdNode->value.IsUint()) {\n\t\t\t\tprofile.graphicsCardId.vendorId = vendorIdNode->value.GetUint();\n\t\t\t}\n\n\t\t\tauto deviceIdNode = graphicsCardIdObj.FindMember(\"deviceId\");\n\t\t\tif (deviceIdNode != graphicsCardIdObj.end() && deviceIdNode->value.IsUint()) {\n\t\t\t\tprofile.graphicsCardId.deviceId = deviceIdNode->value.GetUint();\n\t\t\t}\n\t\t}\n\t}\n\n\tJsonHelper::ReadBool(profileObj, \"frameRateLimiterEnabled\", profile.isFrameRateLimiterEnabled);\n\tJsonHelper::ReadFloat(profileObj, \"maxFrameRate\", profile.maxFrameRate);\n\tif (profile.maxFrameRate <= 10.0f - FLOAT_EPSILON<float> ||\n\t\tprofile.maxFrameRate >= 1000.0f + FLOAT_EPSILON<float>)\n\t{\n\t\tprofile.maxFrameRate = 60.0f;\n\t}\n\n\tJsonHelper::ReadBoolFlag(profileObj, \"3DGameMode\", ScalingFlags::Is3DGameMode, profile.scalingFlags);\n\tif (!JsonHelper::ReadBoolFlag(profileObj, \"captureTitleBar\", ScalingFlags::CaptureTitleBar, profile.scalingFlags, true)) {\n\t\t// v0.10.0-preview1 使用 reserveTitleBar\n\t\tJsonHelper::ReadBoolFlag(profileObj, \"reserveTitleBar\", ScalingFlags::CaptureTitleBar, profile.scalingFlags);\n\t}\n\tJsonHelper::ReadBoolFlag(profileObj, \"adjustCursorSpeed\", ScalingFlags::AdjustCursorSpeed, profile.scalingFlags);\n\tJsonHelper::ReadBoolFlag(profileObj, \"disableDirectFlip\", ScalingFlags::DisableDirectFlip, profile.scalingFlags);\n\n\t{\n\t\tuint32_t cursorScaling = (uint32_t)CursorScaling::NoScaling;\n\t\tJsonHelper::ReadUInt(profileObj, \"cursorScaling\", cursorScaling);\n\t\tif (cursorScaling >= (uint32_t)CursorScaling::COUNT) {\n\t\t\tcursorScaling = (uint32_t)CursorScaling::NoScaling;\n\t\t}\n\t\tprofile.cursorScaling = (CursorScaling)cursorScaling;\n\t}\n\t\n\tJsonHelper::ReadFloat(profileObj, \"customCursorScaling\", profile.customCursorScaling);\n\tif (profile.customCursorScaling < 0) {\n\t\tprofile.customCursorScaling = 1.0f;\n\t}\n\n\t{\n\t\tuint32_t cursorInterpolationMode = (uint32_t)CursorInterpolationMode::NearestNeighbor;\n\t\tJsonHelper::ReadUInt(profileObj, \"cursorInterpolationMode\", cursorInterpolationMode);\n\t\tif (cursorInterpolationMode >= (uint32_t)CursorInterpolationMode::COUNT) {\n\t\t\tcursorInterpolationMode = (uint32_t)CursorInterpolationMode::NearestNeighbor;\n\t\t}\n\t\tprofile.cursorInterpolationMode = (CursorInterpolationMode)cursorInterpolationMode;\n\t}\n\n\tJsonHelper::ReadBool(profileObj, \"autoHideCursorEnabled\", profile.isAutoHideCursorEnabled);\n\tJsonHelper::ReadFloat(profileObj, \"autoHideCursorDelay\", profile.autoHideCursorDelay);\n\tif (profile.autoHideCursorDelay <= 0.1f - FLOAT_EPSILON<float> ||\n\t\tprofile.autoHideCursorDelay >= 5.0f + FLOAT_EPSILON<float>)\n\t{\n\t\tprofile.autoHideCursorDelay = 3.0f;\n\t}\n\n\tJsonHelper::ReadBool(profileObj, \"croppingEnabled\", profile.isCroppingEnabled);\n\n\tauto croppingNode = profileObj.FindMember(\"cropping\");\n\tif (croppingNode != profileObj.MemberEnd() && croppingNode->value.IsObject()) {\n\t\tauto croppingObj = croppingNode->value.GetObj();\n\n\t\tif (!JsonHelper::ReadFloat(croppingObj, \"left\", profile.cropping.Left, true)\n\t\t\t|| profile.cropping.Left < 0\n\t\t\t|| !JsonHelper::ReadFloat(croppingObj, \"top\", profile.cropping.Top, true)\n\t\t\t|| profile.cropping.Top < 0\n\t\t\t|| !JsonHelper::ReadFloat(croppingObj, \"right\", profile.cropping.Right, true)\n\t\t\t|| profile.cropping.Right < 0\n\t\t\t|| !JsonHelper::ReadFloat(croppingObj, \"bottom\", profile.cropping.Bottom, true)\n\t\t\t|| profile.cropping.Bottom < 0\n\t\t) {\n\t\t\tprofile.cropping = {};\n\t\t}\n\t}\n\n\t{\n\t\tuint32_t destAlignment = (uint32_t)DestAlignment::Center;\n\t\tJsonHelper::ReadUInt(profileObj, \"destAlignment\", destAlignment);\n\t\tif (destAlignment >= (uint32_t)DestAlignment::COUNT) {\n\t\t\tdestAlignment = (uint32_t)DestAlignment::Center;\n\t\t}\n\t\tprofile.destAlignment = (DestAlignment)destAlignment;\n\t}\n\n\treturn true;\n}\n\nbool AppSettings::_SetDefaultShortcuts() noexcept {\n\tbool changed = false;\n\n\tShortcut& scaleShortcut = _shortcuts[(size_t)ShortcutAction::Scale];\n\tif (scaleShortcut.IsEmpty()) {\n\t\tscaleShortcut.alt = true;\n\t\tscaleShortcut.shift = true;\n\t\tscaleShortcut.code = 'A';\n\n\t\tchanged = true;\n\t}\n\n\tShortcut& windowedModeScaleShortcut = _shortcuts[(size_t)ShortcutAction::WindowedModeScale];\n\tif (windowedModeScaleShortcut.IsEmpty()) {\n\t\twindowedModeScaleShortcut.alt = true;\n\t\twindowedModeScaleShortcut.shift = true;\n\t\twindowedModeScaleShortcut.code = 'Q';\n\n\t\tchanged = true;\n\t}\n\n\tShortcut& overlayShortcut = _shortcuts[(size_t)ShortcutAction::Toolbar];\n\tif (overlayShortcut.IsEmpty()) {\n\t\toverlayShortcut.alt = true;\n\t\toverlayShortcut.shift = true;\n\t\toverlayShortcut.code = 'D';\n\n\t\tchanged = true;\n\t}\n\n\treturn changed;\n}\n\nvoid AppSettings::_SetDefaultScalingModes() noexcept {\n\t_scalingModes.resize(7);\n\n\t// Lanczos\n\t{\n\t\tauto& lanczos = _scalingModes[0];\n\t\tlanczos.name = L\"Lanczos\";\n\n\t\tauto& lanczosEffect = lanczos.effects.emplace_back();\n\t\tlanczosEffect.name = L\"Lanczos\";\n\t\tlanczosEffect.scalingType = ::Magpie::ScalingType::Fit;\n\t}\n\t// FSR\n\t{\n\t\tauto& fsr = _scalingModes[1];\n\t\tfsr.name = L\"FSR\";\n\n\t\tfsr.effects.resize(2);\n\t\tauto& easu = fsr.effects[0];\n\t\teasu.name = L\"FSR\\\\FSR_EASU\";\n\t\teasu.scalingType = ::Magpie::ScalingType::Fit;\n\t\tauto& rcas = fsr.effects[1];\n\t\trcas.name = L\"FSR\\\\FSR_RCAS\";\n\t\trcas.parameters[L\"sharpness\"] = 0.87f;\n\t}\n\t// FSRCNNX\n\t{\n\t\tauto& fsrcnnx = _scalingModes[2];\n\t\tfsrcnnx.name = L\"FSRCNNX\";\n\t\tfsrcnnx.effects.emplace_back().name = L\"FSRCNNX\\\\FSRCNNX\";\n\t}\n\t// CuNNy\n\t{\n\t\tauto& acnet = _scalingModes[3];\n\t\tacnet.name = L\"CuNNy\";\n\t\tacnet.effects.emplace_back().name = L\"CuNNy2\\\\CuNNy-4x12-NVL\";\n\t}\n\t// Anime4K\n\t{\n\t\tauto& anime4k = _scalingModes[4];\n\t\tanime4k.name = L\"Anime4K\";\n\t\tanime4k.effects.emplace_back().name = L\"Anime4K\\\\Anime4K_Upscale_Denoise_L\";\n\t}\n\t// CRT-Geom\n\t{\n\t\tauto& crtGeom = _scalingModes[5];\n\t\tcrtGeom.name = L\"CRT-Geom\";\n\n\t\tauto& crtGeomEffect = crtGeom.effects.emplace_back();\n\t\tcrtGeomEffect.name = L\"CRT\\\\CRT_Geom\";\n\t\tcrtGeomEffect.scalingType = ::Magpie::ScalingType::Fit;\n\t\tcrtGeomEffect.parameters[L\"curvature\"] = 0.0f;\n\t\tcrtGeomEffect.parameters[L\"cornerSize\"] = 0.001f;\n\t\tcrtGeomEffect.parameters[L\"CRTGamma\"] = 1.5f;\n\t\tcrtGeomEffect.parameters[L\"monitorGamma\"] = 2.2f;\n\t\tcrtGeomEffect.parameters[L\"interlace\"] = 0.0f;\n\t}\n\t// Integer Scale 2x\n\t{\n\t\tauto& integer2x = _scalingModes[6];\n\t\tinteger2x.name = L\"Integer Scale 2x\";\n\n\t\tauto& nearest = integer2x.effects.emplace_back();\n\t\tnearest.name = L\"Nearest\";\n\t\tnearest.scalingType = ::Magpie::ScalingType::Normal;\n\t\tnearest.scale = { 2.0f,2.0f };\n\t}\n\n\t// 全局缩放模式默认为 Lanczos\n\t_defaultProfile.scalingMode = 0;\n}\n\nstatic std::wstring FindOldConfig(const wchar_t* localAppDataDir) noexcept {\n\tfor (uint32_t version = CONFIG_VERSION - 1; version >= 2; --version) {\n\t\tstd::wstring oldConfigPath = fmt::format(\n\t\t\tL\"{}\\\\Magpie\\\\{}\\\\v{}\\\\{}\",\n\t\t\tlocalAppDataDir,\n\t\t\tCommonSharedConstants::CONFIG_DIR,\n\t\t\tversion,\n\t\t\tCommonSharedConstants::CONFIG_FILENAME\n\t\t);\n\n\t\tif (Win32Helper::FileExists(oldConfigPath.c_str())) {\n\t\t\treturn oldConfigPath;\n\t\t}\n\t}\n\n\t// v1 版本的配置文件不在子目录中\n\tstd::wstring v1ConfigPath = StrHelper::Concat(\n\t\tlocalAppDataDir,\n\t\tL\"\\\\Magpie\\\\\",\n\t\tCommonSharedConstants::CONFIG_DIR,\n\t\tL\"\\\\\",\n\t\tCommonSharedConstants::CONFIG_FILENAME\n\t);\n\n\tif (Win32Helper::FileExists(v1ConfigPath.c_str())) {\n\t\treturn v1ConfigPath;\n\t}\n\n\treturn {};\n}\n\nbool AppSettings::_UpdateConfigPath(std::filesystem::path* existingConfigPath) noexcept {\n\tif (_isPortableMode) {\n\t\tstd::wstring value;\n\t\tHRESULT hr = wil::GetFullPathNameW(CommonSharedConstants::CONFIG_DIR, value);\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"GetFullPathNameW 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\t\t_configDir = std::move(value);\n\n\t\t_configPath = _configDir / CommonSharedConstants::CONFIG_FILENAME;\n\n\t\tif (existingConfigPath) {\n\t\t\tif (Win32Helper::FileExists(_configPath.c_str())) {\n\t\t\t\t*existingConfigPath = _configPath;\n\t\t\t}\n\t\t}\n\t} else {\n\t\twil::unique_cotaskmem_string localAppDataDir;\n\t\tHRESULT hr = SHGetKnownFolderPath(\n\t\t\tFOLDERID_LocalAppData, KF_FLAG_DEFAULT, NULL, localAppDataDir.put());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"SHGetKnownFolderPath 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\t_configDir = fmt::format(L\"{}\\\\Magpie\\\\{}\\\\v{}\\\\\",\n\t\t\tlocalAppDataDir.get(), CommonSharedConstants::CONFIG_DIR, CONFIG_VERSION);\n\t\t_configPath = _configDir / CommonSharedConstants::CONFIG_FILENAME;\n\n\t\tif (existingConfigPath) {\n\t\t\tif (Win32Helper::FileExists(_configPath.c_str())) {\n\t\t\t\t*existingConfigPath = _configPath;\n\t\t\t} else {\n\t\t\t\t// 查找旧版本配置文件\n\t\t\t\t*existingConfigPath = FindOldConfig(localAppDataDir.get());\n\t\t\t}\n\t\t}\n\t}\n\n\t// 确保配置文件夹存在\n\tif (!Win32Helper::CreateDir(_configDir.native(), true)) {\n\t\tLogger::Get().Win32Error(\"创建配置文件夹失败\");\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/AppSettings.h",
    "content": "#pragma once\n#include <winrt/Magpie.h>\n#include \"Event.h\"\n#include \"Shortcut.h\"\n#include \"Profile.h\"\n#include <rapidjson/document.h>\n\nnamespace Magpie {\n\nstruct ScalingMode;\n\nenum class AppTheme {\n\tLight,\n\tDark,\n\tSystem\n};\n\nstruct _AppSettingsData {\n\t_AppSettingsData();\n\tvirtual ~_AppSettingsData();\n\n\tstd::array<Shortcut, (size_t)winrt::Magpie::ShortcutAction::COUNT_OR_NONE> _shortcuts;\n\n\tstd::vector<ScalingMode> _scalingModes;\n\n\tProfile _defaultProfile;\n\tstd::vector<Profile> _profiles;\n\n\tstd::filesystem::path _configDir;\n\tstd::filesystem::path _configPath;\n\n\t// LocalizationService::SupportedLanguages 索引\n\t// -1 表示使用系统设置\n\tint _language = -1;\n\n\t// 保存窗口中心点和 DPI 无关的窗口尺寸\n\twinrt::Point _mainWindowCenter{};\n\t// 小于零表示默认位置和尺寸\n\twinrt::Size _mainWindowSizeInDips{ -1.0f,-1.0f };\n\t\n\tAppTheme _theme = AppTheme::System;\n\t// 必须在 1~5 之间\n\tuint32_t _countdownSeconds = 3;\n\n\t// 上一次自动检查更新的日期\n\tstd::chrono::system_clock::time_point _updateCheckDate;\n\n\tDuplicateFrameDetectionMode _duplicateFrameDetectionMode =\n\t\tDuplicateFrameDetectionMode::Dynamic;\n\n\tfloat _minFrameRate = 10.0f;\n\n\tToolbarState _fullscreenInitialToolbarState = ToolbarState::AutoHide;\n\tToolbarState _windowedInitialToolbarState = ToolbarState::AutoHide;\n\t// 为空表示 FOLDERID_Screenshots，支持绝对路径和相对路径\n\tstd::filesystem::path _screenshotsDir;\n\n\tOverlayOptions _overlayOptions;\n\t\n\tbool _isPortableMode = false;\n\tbool _isAlwaysRunAsAdmin = false;\n\tbool _isDeveloperMode = false;\n\tbool _isDebugMode = false;\n\tbool _isBenchmarkMode = false;\n\tbool _isTopmostDisabled = false;\n\tbool _isEffectCacheDisabled = false;\n\tbool _isFontCacheDisabled = false;\n\tbool _isSaveEffectSources = false;\n\tbool _isWarningsAreErrors = false;\n\tbool _isAllowScalingMaximized = false;\n\tbool _isSimulateExclusiveFullscreen = false;\n\tbool _isInlineParams = false;\n\tbool _isShowNotifyIcon = true;\n\tbool _isMainWindowMaximized = false;\n\tbool _isAutoCheckForUpdates = true;\n\tbool _isCheckForPreviewUpdates = false;\n\tbool _isStatisticsForDynamicDetectionEnabled = false;\n\tbool _isFP16Disabled = false;\n};\n\nclass AppSettings : private _AppSettingsData {\npublic:\n\tstatic AppSettings& Get() noexcept {\n\t\tstatic AppSettings instance;\n\t\treturn instance;\n\t}\n\n\tvirtual ~AppSettings();\n\n\tbool Initialize() noexcept;\n\n\tbool Save() noexcept;\n\n\twinrt::fire_and_forget SaveAsync() noexcept;\n\n\tconst std::filesystem::path& ConfigDir() const noexcept {\n\t\treturn _configDir;\n\t}\n\n\tbool IsPortableMode() const noexcept {\n\t\treturn _isPortableMode;\n\t}\n\n\tvoid IsPortableMode(bool value) noexcept;\n\n\tint Language() const noexcept {\n\t\treturn _language;\n\t}\n\n\tvoid Language(int);\n\n\tAppTheme Theme() const noexcept {\n\t\treturn _theme;\n\t}\n\tvoid Theme(AppTheme value);\n\n\twinrt::Point MainWindowCenter() const noexcept {\n\t\treturn _mainWindowCenter;\n\t}\n\n\twinrt::Size MainWindowSizeInDips() const noexcept {\n\t\treturn _mainWindowSizeInDips;\n\t}\n\n\tbool IsMainWindowMaximized() const noexcept {\n\t\treturn _isMainWindowMaximized;\n\t}\n\n\tconst Shortcut& GetShortcut(winrt::Magpie::ShortcutAction action) const {\n\t\treturn _shortcuts[(size_t)action];\n\t}\n\n\tvoid SetShortcut(winrt::Magpie::ShortcutAction action, const Shortcut& value);\n\n\tuint32_t CountdownSeconds() const noexcept {\n\t\treturn _countdownSeconds;\n\t}\n\n\tvoid CountdownSeconds(uint32_t value) noexcept;\n\n\tbool IsDeveloperMode() const noexcept {\n\t\treturn _isDeveloperMode;\n\t}\n\n\tvoid IsDeveloperMode(bool value) noexcept;\n\n\tbool IsDebugMode() const noexcept {\n\t\treturn _isDebugMode;\n\t}\n\n\tvoid IsDebugMode(bool value) noexcept {\n\t\t_isDebugMode = value;\n\t\tSaveAsync();\n\t}\n\n\tbool IsBenchmarkMode() const noexcept {\n\t\treturn _isBenchmarkMode;\n\t}\n\n\tvoid IsBenchmarkMode(bool value) noexcept {\n\t\t_isBenchmarkMode = value;\n\t\tSaveAsync();\n\t}\n\n\tbool IsTopmostDisabled() const noexcept {\n\t\treturn _isTopmostDisabled;\n\t}\n\n\tvoid IsTopmostDisabled(bool value) noexcept {\n\t\t_isTopmostDisabled = value;\n\t\tSaveAsync();\n\t}\n\n\tbool IsEffectCacheDisabled() const noexcept {\n\t\treturn _isEffectCacheDisabled;\n\t}\n\n\tvoid IsEffectCacheDisabled(bool value) noexcept {\n\t\t_isEffectCacheDisabled = value;\n\t\tSaveAsync();\n\t}\n\n\tbool IsFontCacheDisabled() const noexcept {\n\t\treturn _isFontCacheDisabled;\n\t}\n\n\tvoid IsFontCacheDisabled(bool value) noexcept {\n\t\t_isFontCacheDisabled = value;\n\t\tSaveAsync();\n\t}\n\n\tbool IsSaveEffectSources() const noexcept {\n\t\treturn _isSaveEffectSources;\n\t}\n\n\tvoid IsSaveEffectSources(bool value) noexcept {\n\t\t_isSaveEffectSources = value;\n\t\tSaveAsync();\n\t}\n\n\tbool IsWarningsAreErrors() const noexcept {\n\t\treturn _isWarningsAreErrors;\n\t}\n\n\tvoid IsWarningsAreErrors(bool value) noexcept {\n\t\t_isWarningsAreErrors = value;\n\t\tSaveAsync();\n\t}\n\n\tbool IsFP16Disabled() const noexcept {\n\t\treturn _isFP16Disabled;\n\t}\n\n\tvoid IsFP16Disabled(bool value) noexcept {\n\t\t_isFP16Disabled = value;\n\t\tSaveAsync();\n\t}\n\n\tbool IsAllowScalingMaximized() const noexcept {\n\t\treturn _isAllowScalingMaximized;\n\t}\n\n\tvoid IsAllowScalingMaximized(bool value) noexcept {\n\t\t_isAllowScalingMaximized = value;\n\t\tSaveAsync();\n\t}\n\n\tbool IsSimulateExclusiveFullscreen() const noexcept {\n\t\treturn _isSimulateExclusiveFullscreen;\n\t}\n\n\tvoid IsSimulateExclusiveFullscreen(bool value) noexcept {\n\t\t_isSimulateExclusiveFullscreen = value;\n\t\tSaveAsync();\n\t}\n\n\tProfile& DefaultProfile() noexcept {\n\t\treturn _defaultProfile;\n\t}\n\n\tstd::vector<Profile>& Profiles() noexcept {\n\t\treturn _profiles;\n\t}\n\n\tbool IsAlwaysRunAsAdmin() const noexcept {\n\t\treturn _isAlwaysRunAsAdmin;\n\t}\n\n\tvoid IsAlwaysRunAsAdmin(bool value) noexcept;\n\n\tbool IsShowNotifyIcon() const noexcept {\n\t\treturn _isShowNotifyIcon;\n\t}\n\n\tvoid IsShowNotifyIcon(bool value) noexcept;\n\n\tbool IsInlineParams() const noexcept {\n\t\treturn _isInlineParams;\n\t}\n\n\tvoid IsInlineParams(bool value) noexcept {\n\t\t_isInlineParams = value;\n\t\tSaveAsync();\n\t}\n\n\tstd::vector<ScalingMode>& ScalingModes() noexcept {\n\t\treturn _scalingModes;\n\t}\n\n\tbool IsAutoCheckForUpdates() const noexcept {\n\t\treturn _isAutoCheckForUpdates;\n\t}\n\n\tvoid IsAutoCheckForUpdates(bool value) noexcept {\n\t\t_isAutoCheckForUpdates = value;\n\t\tIsAutoCheckForUpdatesChanged.Invoke(value);\n\t\tSaveAsync();\n\t}\n\n\tbool IsCheckForPreviewUpdates() const noexcept {\n\t\treturn _isCheckForPreviewUpdates;\n\t}\n\n\tvoid IsCheckForPreviewUpdates(bool value) noexcept {\n\t\t_isCheckForPreviewUpdates = value;\n\t\tSaveAsync();\n\t}\n\n\tstd::chrono::system_clock::time_point UpdateCheckDate() const noexcept {\n\t\treturn _updateCheckDate;\n\t}\n\n\tvoid UpdateCheckDate(std::chrono::system_clock::time_point value) noexcept {\n\t\t_updateCheckDate = value;\n\t}\n\n\tDuplicateFrameDetectionMode DuplicateFrameDetectionMode() const noexcept {\n\t\treturn _duplicateFrameDetectionMode;\n\t}\n\n\tvoid DuplicateFrameDetectionMode(enum DuplicateFrameDetectionMode value) noexcept {\n\t\t_duplicateFrameDetectionMode = value;\n\t\tSaveAsync();\n\t}\n\n\tbool IsStatisticsForDynamicDetectionEnabled() const noexcept {\n\t\treturn _isStatisticsForDynamicDetectionEnabled;\n\t}\n\n\tvoid IsStatisticsForDynamicDetectionEnabled(bool value) noexcept {\n\t\t_isStatisticsForDynamicDetectionEnabled = value;\n\t\tSaveAsync();\n\t}\n\n\tfloat MinFrameRate() const noexcept {\n\t\treturn _minFrameRate;\n\t}\n\n\tvoid MinFrameRate(float value) noexcept {\n\t\t_minFrameRate = value;\n\t\tSaveAsync();\n\t}\n\n\tToolbarState FullscreenInitialToolbarState() const noexcept {\n\t\treturn _fullscreenInitialToolbarState;\n\t}\n\n\tvoid FullscreenInitialToolbarState(ToolbarState value) noexcept {\n\t\t_fullscreenInitialToolbarState = value;\n\t\tSaveAsync();\n\t}\n\n\tToolbarState WindowedInitialToolbarState() const noexcept {\n\t\treturn _windowedInitialToolbarState;\n\t}\n\n\tvoid WindowedInitialToolbarState(ToolbarState value) noexcept {\n\t\t_windowedInitialToolbarState = value;\n\t\tSaveAsync();\n\t}\n\n\tstd::filesystem::path ScreenshotsDir() const noexcept;\n\n\tvoid ScreenshotsDir(const std::filesystem::path& value) noexcept;\n\n\tOverlayOptions& OverlayOptions() noexcept {\n\t\treturn _overlayOptions;\n\t}\n\n\tEvent<AppTheme> ThemeChanged;\n\tEvent<winrt::Magpie::ShortcutAction> ShortcutChanged;\n\tEvent<uint32_t> CountdownSecondsChanged;\n\tEvent<bool> IsShowNotifyIconChanged;\n\tEvent<bool> IsAutoCheckForUpdatesChanged;\n\nprivate:\n\tAppSettings() = default;\n\n\tAppSettings(const AppSettings&) = delete;\n\tAppSettings(AppSettings&&) = delete;\n\n\tvoid _UpdateWindowPlacement() noexcept;\n\tbool _Save(const _AppSettingsData& data) noexcept;\n\n\tvoid _LoadSettings(const rapidjson::GenericObject<true, rapidjson::Value>& root) noexcept;\n\tbool _LoadProfile(\n\t\tconst rapidjson::GenericObject<true, rapidjson::Value>& profileObj,\n\t\tProfile& profile,\n\t\tbool isDefault = false\n\t) const noexcept;\n\tbool _SetDefaultShortcuts() noexcept;\n\tvoid _SetDefaultScalingModes() noexcept;\n\n\tbool _UpdateConfigPath(std::filesystem::path* existingConfigPath = nullptr) noexcept;\n\n\t// 用于同步保存\n\twil::srwlock _saveLock;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/AppXReader.cpp",
    "content": "#include \"pch.h\"\n#include \"AppXReader.h\"\n#include \"Logger.h\"\n#include \"StrHelper.h\"\n#include \"Win32Helper.h\"\n#include <appmodel.h>\n#include <AppxPackaging.h>\n#include <parallel_hashmap/phmap.h>\n#include <propkey.h>\n#include <propsys.h>\n#include <regex>\n#include <shellapi.h>\n#include <Shlwapi.h>\n#include <wincodec.h>\n#include <winrt/Windows.Graphics.Imaging.h>\n\nusing namespace winrt;\nusing namespace Windows::Graphics::Imaging;\nusing namespace Windows::UI;\nusing namespace Windows::UI::Xaml::Media::Imaging;\nusing namespace Windows::UI::ViewManagement;\n\nnamespace Magpie {\n\nstruct AppxCacheData {\n\tstd::wstring praid;\n\tstd::wstring packageFullName;\n\tstd::wstring packagePath;\n\tstd::wstring displayName;\n\tstd::wstring executable;\n\tstd::wstring square44x44Logo;\n};\nstatic phmap::flat_hash_map<std::wstring, AppxCacheData> appxCache;\n// 用于同步对 appxCache 的访问\nstatic wil::srwlock appxCacheLock;\n\n\nstatic std::wstring ResourceFromPri(std::wstring_view packageFullName, std::wstring_view resourceReference) {\n\t// 移植自 https://github.com/microsoft/PowerToys/blob/c36a80dad571db26d6cf9e40e70099815ed56049/src/modules/launcher/Plugins/Microsoft.Plugin.Program/Programs/UWPApplication.cs#L299\n\n\tstd::wstring_view prefix = L\"ms-resource:\";\n\n\tStrHelper::Trim(resourceReference);\n\n\tstd::wstring lowerCaseResourceReference = StrHelper::ToLowerCase(resourceReference);\n\t\n\t// Using OrdinalIgnoreCase since this is used internally\n\tif (!lowerCaseResourceReference.starts_with(prefix)) {\n\t\treturn std::wstring(resourceReference);\n\t}\n\t\n\t// magic comes from @talynone\n\t// https://github.com/talynone/Wox.Plugin.WindowsUniversalAppLauncher/blob/master/StoreAppLauncher/Helpers/NativeApiHelper.cs#L139-L153\n\tstd::wstring_view key = resourceReference.substr(prefix.size());\n\t\n\tstd::wstring parsed;\n\tstd::wstring parsedFallback;\n\n\t// Using Ordinal/OrdinalIgnoreCase since these are used internally\n\tif (key.starts_with(L\"//\")) {\n\t\tparsed = StrHelper::Concat(prefix, key);\n\t} else if (key.starts_with(L'/')) {\n\t\tparsed = StrHelper::Concat(prefix, L\"//\", key);\n\t} else {\n\t\tstd::wstring_view lowerCaseKey(\n\t\t\tlowerCaseResourceReference.begin() + prefix.size(),\n\t\t\tlowerCaseResourceReference.end()\n\t\t);\n\n\t\tif (lowerCaseKey.starts_with(L\"resources\")) {\n\t\t\tparsed = StrHelper::Concat(prefix, key);\n\t\t} else {\n\t\t\tparsed = StrHelper::Concat(prefix, L\"///resources/\", key);\n\n\t\t\t// e.g. for Windows Terminal version >= 1.12 DisplayName and Description resources are not in the 'resources' subtree\n\t\t\tparsedFallback = StrHelper::Concat(prefix, L\"///\", key);\n\t\t}\n\t}\n\t\n\tstd::wstring source = fmt::format(L\"@{{{}? {}}}\", packageFullName, parsed);\n\t\n\tstd::wstring result(128, 0);\n\tHRESULT hr = SHLoadIndirectString(source.c_str(), result.data(), (UINT)result.size() + 1, nullptr);\n\tif (FAILED(hr)) {\n\t\tif (parsedFallback.empty()) {\n\t\t\treturn {};\n\t\t}\n\n\t\tsource = fmt::format(L\"@{{{}? {}}}\", packageFullName, parsedFallback);\n\t\thr = SHLoadIndirectString(source.c_str(), result.data(), (UINT)result.size() + 1, nullptr);\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"SHLoadIndirectString 失败\", hr);\n\t\t\treturn {};\n\t\t}\n\t}\n\n\tresult.resize(StrHelper::StrLen(result.c_str()));\n\treturn result;\n}\n\nbool AppXReader::Initialize(HWND hWnd) noexcept {\n\tif (Win32Helper::GetWindowClassName(hWnd) == L\"ApplicationFrameWindow\") {\n\t\t// UWP 应用被托管在 ApplicationFrameHost 进程中\n\t\tHWND childHwnd = NULL;\n\t\tEnumChildWindows(\n\t\t\thWnd,\n\t\t\t[](HWND hWnd, LPARAM lParam) {\n\t\t\t\tif (Win32Helper::GetWindowClassName(hWnd) != L\"Windows.UI.Core.CoreWindow\") {\n\t\t\t\t\treturn TRUE;\n\t\t\t\t}\n\n\t\t\t\t*(HWND*)lParam = hWnd;\n\t\t\t\treturn FALSE;\n\t\t\t},\n\t\t\t(LPARAM)&childHwnd\n\t\t);\n\t\t\n\t\tif (childHwnd) {\n\t\t\thWnd = childHwnd;\n\t\t} else {\n\t\t\t// 被最小化（挂起）或尚未完成初始化时 UWP 进程无法通过子窗口找到，\n\t\t\t// 回落到从窗口的 PropertyStore 中检索 AUMID。\n\t\t\t// 来自 https://github.com/valinet/sws/blob/bc8b04e451649964ee3d74255f9e9eda13ef24c3/SimpleWindowSwitcher/sws_IconPainter.c#L257\n\t\t\tcom_ptr<IPropertyStore> propStore;\n\t\t\tHRESULT hr = SHGetPropertyStoreForWindow(hWnd, IID_PPV_ARGS(&propStore));\n\t\t\tif (FAILED(hr)) {\n\t\t\t\tLogger::Get().ComError(\"SHGetPropertyStoreForWindow 失败\", hr);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\twil::unique_prop_variant prop;\n\t\t\thr = propStore->GetValue(PKEY_AppUserModel_ID, &prop);\n\t\t\tif (FAILED(hr) || prop.vt != VT_LPWSTR || !prop.pwszVal) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn Initialize(prop.pwszVal);\n\t\t}\n\t}\n\n\t// 使用 GetApplicationUserModelId 获取 AUMID\n\tDWORD dwProcId = 0;\n\tif (!GetWindowThreadProcessId(hWnd, &dwProcId)) {\n\t\tLogger::Get().Win32Error(\"GetWindowThreadProcessId 失败\");\n\t\treturn false;\n\t}\n\n\twil::unique_process_handle hProc(OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, dwProcId));\n\tif (!hProc) {\n\t\tLogger::Get().Win32Error(\"OpenProcess 失败\");\n\t\treturn false;\n\t}\n\n\tstd::wstring aumid;\n\tHRESULT hr = wil::AdaptFixedSizeToAllocatedResult<std::wstring, 128>(\n\t\taumid, [&](_Out_writes_(valueLength) PWSTR value, size_t valueLength, _Out_ size_t* valueLengthNeededWithNul) -> HRESULT {\n\t\t\tUINT32 length = (UINT32)valueLength;\n\t\t\tLONG rc = GetApplicationUserModelId(hProc.get(), &length, value);\n\t\t\tif (rc != ERROR_SUCCESS && rc != ERROR_INSUFFICIENT_BUFFER) {\n\t\t\t\treturn HRESULT_FROM_WIN32(rc);\n\t\t\t}\n\n\t\t\t*valueLengthNeededWithNul = length;\n\t\t\treturn S_OK;\n\t\t}\n\t);\n\tif (FAILED(hr)) {\n\t\treturn false;\n\t}\n\n\treturn Initialize(aumid);\n}\n\nbool AppXReader::Initialize(std::wstring_view aumid) noexcept {\n\t{\n\t\tauto lock = appxCacheLock.lock_exclusive();\n\n\t\tauto it = appxCache.find(aumid);\n\t\tif (it != appxCache.end()) {\n\t\t\tif (it->second.packagePath.empty()) {\n\t\t\t\t// 之前的解析失败\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t_aumid = aumid;\n\t\t\t_praid = it->second.praid;\n\t\t\t_packageFullName = it->second.packageFullName;\n\t\t\t_packagePath = it->second.packagePath;\n\t\t\t_displayName = it->second.displayName;\n\t\t\t_executable = it->second.executable;\n\t\t\t_square44x44Logo = it->second.square44x44Logo;\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\tappxCache.emplace(aumid, AppxCacheData());\n\t}\n\n\t_aumid = aumid;\n\n\tif (!_ResolvePackagePath()) {\n\t\tLogger::Get().Error(\"_ResolvePackagePath 失败\");\n\t\treturn false;\n\t}\n\n\tcom_ptr<IAppxFactory> factory = try_create_instance<IAppxFactory>(CLSID_AppxFactory);\n\tif (!factory) {\n\t\tLogger::Get().Error(\"创建 AppxFactory 失败\");\n\t\treturn false;\n\t}\n\n\tcom_ptr<IStream> inputStream;\n\tHRESULT hr = SHCreateStreamOnFileEx(\n\t\t(_packagePath + L\"AppXManifest.xml\").c_str(),\n\t\tSTGM_READ | STGM_SHARE_DENY_WRITE,\n\t\t0,\n\t\tFALSE,\n\t\tnullptr,\n\t\tinputStream.put()\n\t);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"打开 AppXManifest.xml 失败\", hr);\n\t\treturn false;\n\t}\n\n\tcom_ptr<IAppxManifestReader> manifestReader;\n\thr = factory->CreateManifestReader(\n\t\tinputStream.get(),\n\t\tmanifestReader.put()\n\t);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"CreateManifestReader 失败\", hr);\n\t\treturn false;\n\t}\n\n\tcom_ptr<IAppxManifestApplicationsEnumerator> appEnumerator;\n\thr = manifestReader->GetApplications(appEnumerator.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"GetApplications 失败\", hr);\n\t\treturn false;\n\t}\n\n\t// 枚举所有应用查找 praid\n\tBOOL hasCurrent = FALSE;\n\thr = appEnumerator->GetHasCurrent(&hasCurrent);\n\n\twhile (SUCCEEDED(hr) && hasCurrent) {\n\t\tcom_ptr<IAppxManifestApplication> appxApp;\n\t\tif (FAILED(appEnumerator->GetCurrent(appxApp.put()))) {\n\t\t\tbreak;\n\t\t}\n\n\t\twil::unique_cotaskmem_string curPraid;\n\t\tif (FAILED(appxApp->GetStringValue(L\"Id\", curPraid.put()))) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (curPraid && _praid == curPraid.get()) {\n\t\t\twil::unique_cotaskmem_string value;\n\t\t\tif (SUCCEEDED(appxApp->GetStringValue(L\"DisplayName\", value.put())) && value) {\n\t\t\t\t_displayName = value.get();\n\t\t\t}\n\n\t\t\tvalue = nullptr;\n\t\t\tif (SUCCEEDED(appxApp->GetStringValue(L\"Executable\", value.put())) && value) {\n\t\t\t\t_executable = value.get();\n\t\t\t}\n\n\t\t\tvalue = nullptr;\n\t\t\tif (SUCCEEDED(appxApp->GetStringValue(L\"Square44x44Logo\", value.put())) && value) {\n\t\t\t\t_square44x44Logo = value.get();\n\t\t\t}\n\n\t\t\tauto lock = appxCacheLock.lock_exclusive();\n\t\t\tAppxCacheData& cacheData = appxCache[aumid];\n\t\t\tcacheData.praid = _praid;\n\t\t\tcacheData.packageFullName = _packageFullName;\n\t\t\tcacheData.packagePath = _packagePath;\n\t\t\tcacheData.displayName = _displayName;\n\t\t\tcacheData.executable = _executable;\n\t\t\tcacheData.square44x44Logo = _square44x44Logo;\n\t\t\treturn true;\n\t\t}\n\n\t\thr = appEnumerator->MoveNext(&hasCurrent);\n\t}\n\n\t// 未找到 Id 为 praid 的应用\n\treturn false;\n}\n\nstd::wstring AppXReader::GetDisplayName() noexcept {\n\tassert(!_packagePath.empty());\n\n\tif (_displayName.empty()) {\n\t\treturn {};\n\t}\n\n\treturn ResourceFromPri(_packageFullName, _displayName);\n}\n\nconst std::wstring& AppXReader::GetPackagePath() noexcept {\n\tassert(!_packagePath.empty());\n\treturn _packagePath;\n}\n\nstd::wstring AppXReader::GetExecutablePath() noexcept {\n\tassert(!_packagePath.empty());\n\n\tif (_executable.empty()) {\n\t\treturn {};\n\t}\n\n\treturn _packagePath + _executable;\n}\n\nclass CandidateIcon {\npublic:\n\tCandidateIcon(const wchar_t* fileName) : _fileName(fileName) {\n\t\tsize_t firstPointPos = _fileName.find_first_of(L'.');\n\t\tif (firstPointPos == std::wstring::npos) {\n\t\t\t_isValid = false;\n\t\t\treturn;\n\t\t}\n\n\t\tsize_t secondPointPos = _fileName.find_last_of(L'.');\n\t\tif (secondPointPos == firstPointPos) {\n\t\t\t_size = 44;\n\t\t\treturn;\n\t\t} else if (secondPointPos == std::wstring::npos || secondPointPos <= firstPointPos + 1) {\n\t\t\t_isValid = false;\n\t\t\treturn;\n\t\t}\n\n\t\tstd::wstring_view suffix(_fileName.begin() + firstPointPos + 1, _fileName.begin() + secondPointPos);\n\t\tassert(suffix.find(L'.') == std::wstring_view::npos);\n\n\t\tfor (std::wstring_view qualifier : StrHelper::Split(suffix, L'_')) {\n\t\t\tsize_t delimPos = qualifier.find_first_of(L'-');\n\t\t\tif (delimPos == std::wstring_view::npos) {\n\t\t\t\t_isValid = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tstd::wstring_view name(qualifier.begin(), qualifier.begin() + delimPos);\n\t\t\tstd::wstring_view value(qualifier.begin() + delimPos + 1, qualifier.end());\n\n\t\t\tif (name == L\"targetsize\") {\n\t\t\t\t_isTargetSize = true;\n\n\t\t\t\tif (value == L\"16\") {\n\t\t\t\t\t_size = 16;\n\t\t\t\t} else if (value == L\"24\") {\n\t\t\t\t\t_size = 24;\n\t\t\t\t} else if (value == L\"30\") {\n\t\t\t\t\t_size = 30;\n\t\t\t\t} else if (value == L\"32\") {\n\t\t\t\t\t_size = 32;\n\t\t\t\t} else if (value == L\"36\") {\n\t\t\t\t\t_size = 36;\n\t\t\t\t} else if (value == L\"44\") {\n\t\t\t\t\t_size = 44;\n\t\t\t\t} else if (value == L\"48\") {\n\t\t\t\t\t_size = 48;\n\t\t\t\t} else if (value == L\"60\") {\n\t\t\t\t\t_size = 60;\n\t\t\t\t} else if (value == L\"72\") {\n\t\t\t\t\t_size = 72;\n\t\t\t\t} else if (value == L\"96\") {\n\t\t\t\t\t_size = 96;\n\t\t\t\t} else if (value == L\"128\") {\n\t\t\t\t\t_size = 128;\n\t\t\t\t} else if (value == L\"180\") {\n\t\t\t\t\t_size = 180;\n\t\t\t\t} else if (value == L\"256\") {\n\t\t\t\t\t_size = 256;\n\t\t\t\t} else {\n\t\t\t\t\t_isValid = false;\n\t\t\t\t}\n\t\t\t} else if (name == L\"scale\") {\n\t\t\t\t_isScale = true;\n\n\t\t\t\tif (value == L\"100\") {\n\t\t\t\t\t_size = 44;\n\t\t\t\t} else if (value == L\"125\") {\n\t\t\t\t\t_size = 55;\n\t\t\t\t} else if (value == L\"150\") {\n\t\t\t\t\t_size = 66; \n\t\t\t\t} else if (value == L\"200\") {\n\t\t\t\t\t_size = 88;\n\t\t\t\t} else if (value == L\"400\") {\n\t\t\t\t\t_size = 176;\n\t\t\t\t} else {\n\t\t\t\t\t_isValid = false;\n\t\t\t\t}\n\t\t\t} else if (name == L\"altform\") {\n\t\t\t\tif (value == L\"lightunplated\") {\n\t\t\t\t\t_isLightTheme = true;\n\t\t\t\t\t_isUnplated = true;\n\t\t\t\t} else if (value == L\"unplated\") {\n\t\t\t\t\t_isUnplated = true;\n\t\t\t\t}\n\t\t\t} else if (name == L\"theme\") {\n\t\t\t\tif (value == L\"light\") {\n\t\t\t\t\t_isLightTheme = true;\n\t\t\t\t}\n\t\t\t} else if (name == L\"contrast\") {\n\t\t\t\t_isValid = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst std::wstring& FileName() const noexcept {\n\t\treturn _fileName;\n\t}\n\n\tbool IsValid() const noexcept {\n\t\treturn _isValid;\n\t}\n\n\t// 用以选择更合适的图标。规则:\n\t// 1. 匹配当前主题的优先\n\t// 2. 没有边框的优先\n\t// 3. 和 preferredSize 相同的优先\n\t// 4. 如果一个过大，另一个过小，取大的\n\t// 5. 如果都过大或过小，取更接近 preferredSize 的\n\t// 6. 优先选择 targetsize 前缀，然后是 scale 前缀\n\tstatic bool Compare(const CandidateIcon& l, const CandidateIcon& r, uint32_t preferredSize, bool isLightTheme) {\n\t\tif (l._isLightTheme != r._isLightTheme) {\n\t\t\treturn l._isLightTheme == isLightTheme;\n\t\t}\n\n\t\t// 优先选择没有边框的图标\n\t\tif (l._isUnplated != r._isUnplated) {\n\t\t\treturn l._isUnplated;\n\t\t}\n\n\t\tif (l._size != r._size) {\n\t\t\tif (l._size == preferredSize) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (r._size == preferredSize) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (l._size > preferredSize) {\n\t\t\t\tif (r._size > preferredSize) {\n\t\t\t\t\treturn l._size < r._size;\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (r._size > preferredSize) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\treturn l._size > r._size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (l._isTargetSize != r._isTargetSize) {\n\t\t\treturn l._isTargetSize;\n\t\t}\n\n\t\tif (l._isScale != r._isScale) {\n\t\t\treturn l._isScale;\n\t\t}\n\n\t\treturn false;\n\t}\n\nprivate:\n\tbool _isTargetSize = false;\n\tbool _isScale = false;\n\tbool _isValid = true;\n\tstd::wstring _fileName;\n\tuint32_t _size = 0;\n\tbool _isLightTheme = false;\n\tbool _isUnplated = false;\n};\n\n// 如果图标和背景的对比度太低，使用主题色填充背景\nstatic SoftwareBitmap AutoFillBackground(const std::wstring& iconPath, bool isLightTheme, bool noPath) {\n\tcom_ptr<IWICImagingFactory2> wicImgFactory = try_create_instance<IWICImagingFactory2>(CLSID_WICImagingFactory);\n\tif (!wicImgFactory) {\n\t\tLogger::Get().Error(\"创建 WICImagingFactory2 失败\");\n\t\treturn nullptr;\n\t}\n\n\t// 读取图像文件\n\twinrt::com_ptr<IWICBitmapDecoder> decoder;\n\tHRESULT hr = wicImgFactory->CreateDecoderFromFilename(\n\t\ticonPath.c_str(), nullptr, GENERIC_READ, WICDecodeMetadataCacheOnDemand, decoder.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"CreateDecoderFromFilename 失败\", hr);\n\t\treturn nullptr;\n\t}\n\n\twinrt::com_ptr<IWICBitmapFrameDecode> frame;\n\thr = decoder->GetFrame(0, frame.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"IWICBitmapFrameDecode::GetFrame 失败\", hr);\n\t\treturn nullptr;\n\t}\n\n\t// 转换格式\n\twinrt::com_ptr<IWICFormatConverter> formatConverter;\n\thr = wicImgFactory->CreateFormatConverter(formatConverter.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"CreateFormatConverter 失败\", hr);\n\t\treturn nullptr;\n\t}\n\n\thr = formatConverter->Initialize(frame.get(),\n\t\tGUID_WICPixelFormat32bppBGRA, WICBitmapDitherTypeNone, nullptr, 0, WICBitmapPaletteTypeCustom);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"IWICFormatConverter::Initialize 失败\", hr);\n\t\treturn nullptr;\n\t}\n\n\tUINT width, height;\n\thr = formatConverter->GetSize(&width, &height);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"GetSize 失败\", hr);\n\t\treturn nullptr;\n\t}\n\n\tUINT stride = width * 4;\n\tUINT size = stride * height;\n\tstd::unique_ptr<uint8_t[]> buf(new uint8_t[size]);\n\n\thr = formatConverter->CopyPixels(nullptr, stride, size, buf.get());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"CopyPixels 失败\", hr);\n\t\treturn nullptr;\n\t}\n\n\t// 计算平均亮度\n\tfloat lumaTotal = 0;\n\tuint32_t lumaCount = 0;\n\tfor (uint32_t i = 0, len = width * height; i < len; ++i) {\n\t\tuint8_t* pixel = &buf.get()[i * 4];\n\n\t\tuint8_t alpha = pixel[3];\n\t\tif (alpha == 0) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfloat luma = 0.299f * pixel[0] + 0.587f * pixel[1] + 0.114f * pixel[2];\n\t\tif (alpha != 255) {\n\t\t\tfloat alphaNorm = alpha / 255.0f;\n\t\t\tluma = luma * alphaNorm + (isLightTheme ? 255 : 0) * (1 - alphaNorm);\n\t\t}\n\n\t\tlumaTotal += luma;\n\t\t++lumaCount;\n\t}\n\n\tconst float lumaAvg = lumaTotal / lumaCount;\n\tif (isLightTheme ? lumaAvg <= 220 : lumaAvg >= 30) {\n\t\tif (!noPath) {\n\t\t\treturn nullptr;\n\t\t}\n\n\t\tSoftwareBitmap bitmap(BitmapPixelFormat::Bgra8, width, height, BitmapAlphaMode::Premultiplied);\n\t\t{\n\t\t\tBitmapBuffer buffer = bitmap.LockBuffer(BitmapBufferAccessMode::Write);\n\t\t\tuint8_t* pixels = buffer.CreateReference().data();\n\n\t\t\tconst uint8_t* origin = buf.get();\n\t\t\tfor (size_t i = 0, pixelsSize = static_cast<size_t>(width) * height * 4; i < pixelsSize; i += 4) {\n\t\t\t\t// 预乘 Alpha 通道\n\t\t\t\tconst float alpha = origin[i + 3] / 255.0f;\n\n\t\t\t\tpixels[i] = (BYTE)std::lround(origin[i] * alpha);\n\t\t\t\tpixels[i + 1] = (BYTE)std::lround(origin[i + 1] * alpha);\n\t\t\t\tpixels[i + 2] = (BYTE)std::lround(origin[i + 2] * alpha);\n\t\t\t\tpixels[i + 3] = origin[i + 3];\n\t\t\t}\n\t\t}\n\t\treturn bitmap;\n\t}\n\n\t// 和背景的对比度太低，需要填充背景\n\tconst uint32_t borderWidth = width / 6;\n\tconst uint32_t borderHeight = height / 6;\n\tconst uint32_t totalWidth = width + borderWidth * 2;\n\tconst uint32_t totalHeight = height + borderHeight * 2;\n\n\tconst Color accentColor = UISettings().GetColorValue(UIColorType::Accent);\n\n\tSoftwareBitmap bitmap(BitmapPixelFormat::Bgra8, totalWidth, totalHeight, BitmapAlphaMode::Premultiplied);\n\t{\n\t\tBitmapBuffer buffer = bitmap.LockBuffer(BitmapBufferAccessMode::Write);\n\t\tuint8_t* pixels = buffer.CreateReference().data();\n\n\t\tconst uint32_t fillColor = (0xff << 24) | (accentColor.R << 16) | (accentColor.G << 8) | accentColor.B;\n\t\tstd::fill_n((uint32_t*)pixels, totalWidth * totalHeight, fillColor);\n\n\t\tpixels += (borderHeight * totalWidth + borderWidth) * 4;\n\t\tconst uint8_t* origin = buf.get();\n\t\tfor (UINT i = 0; i < height; ++i) {\n\t\t\tfor (UINT j = 0; j < width; ++j, origin += 4, pixels += 4) {\n\t\t\t\tconst float alpha = origin[3] / 255.0f;\n\t\t\t\tif (alpha < FLOAT_EPSILON<float>) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst float reverseAlpha = 1 - alpha;\n\t\t\t\tif (reverseAlpha < FLOAT_EPSILON<float>) {\n\t\t\t\t\tpixels[0] = origin[0];\n\t\t\t\t\tpixels[1] = origin[1];\n\t\t\t\t\tpixels[2] = origin[2];\n\t\t\t\t\tpixels[3] = 255;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tpixels[0] = (uint8_t)std::lroundf(origin[0] * alpha + accentColor.B * reverseAlpha);\n\t\t\t\tpixels[1] = (uint8_t)std::lroundf(origin[1] * alpha + accentColor.G * reverseAlpha);\n\t\t\t\tpixels[2] = (uint8_t)std::lroundf(origin[2] * alpha + accentColor.R * reverseAlpha);\n\t\t\t\tpixels[3] = 255;\n\t\t\t}\n\n\t\t\tpixels += borderWidth * 2 * 4;\n\t\t}\n\t}\n\treturn bitmap;\n}\n\nstd::variant<std::wstring, SoftwareBitmap> AppXReader::GetIcon(\n\tuint32_t preferredSize,\n\tbool isLightTheme,\n\tbool noPath\n) noexcept {\n\tassert(!_packagePath.empty());\n\n\tif (_square44x44Logo.empty()) {\n\t\treturn {};\n\t}\n\n\tstd::wstring iconFileName;\n\tif (_square44x44Logo.find(L'\\\\') != std::wstring_view::npos) {\n\t\ticonFileName = _packagePath + _square44x44Logo;\n\t} else {\n\t\ticonFileName = StrHelper::Concat(_packagePath, L\"Assets\\\\\", _square44x44Logo);;\n\t}\n\n\tsize_t delimPos = iconFileName.find_last_of(L'\\\\');\n\tif (delimPos == std::wstring::npos) {\n\t\treturn {};\n\t}\n\tsize_t extensionPointPos = iconFileName.find_last_of(L'.');\n\tif (extensionPointPos == std::wstring::npos || extensionPointPos <= delimPos) {\n\t\treturn {};\n\t}\n\n\tstd::wstring_view prefix(iconFileName.begin(), iconFileName.begin() + extensionPointPos);\n\tstd::wstring_view extension(iconFileName.begin() + extensionPointPos, iconFileName.end());\n\n\tstd::wstring_view iconName(iconFileName.begin() + delimPos + 1, iconFileName.begin() + extensionPointPos);\n\tstd::wstring iconNameExt = StrHelper::Concat(iconName, extension);\n\n\tstd::wregex regex(fmt::format(L\"^{}\\\\.[^\\\\.]+\\\\{}$\", iconName, extension), std::wregex::nosubs);\n\n\tstd::vector<CandidateIcon> candidateIcons;\n\n\tWIN32_FIND_DATA findData{};\n\twil::unique_hfind hFind(FindFirstFileEx(StrHelper::Concat(prefix, L\"*\").c_str(),\n\t\tFindExInfoBasic, &findData, FindExSearchNameMatch, nullptr, FIND_FIRST_EX_LARGE_FETCH));\n\tif (hFind) {\n\t\tdo {\n\t\t\tif (findData.cFileName != iconNameExt && !std::regex_match(findData.cFileName, regex)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tCandidateIcon ci(findData.cFileName);\n\t\t\tif (!ci.IsValid()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcandidateIcons.emplace_back(std::move(ci));\n\t\t} while (FindNextFile(hFind.get(), &findData));\n\t}\n\n\tif (candidateIcons.empty()) {\n\t\treturn {};\n\t}\n\n\tauto it = std::min_element(\n\t\tcandidateIcons.begin(),\n\t\tcandidateIcons.end(),\n\t\t[=](const CandidateIcon& l, const CandidateIcon& r) {\n\t\t\treturn CandidateIcon::Compare(l, r, preferredSize, isLightTheme);\n\t\t}\n\t);\n\n\tstd::wstring iconPath = StrHelper::Concat(\n\t\tstd::wstring_view(iconFileName.begin(), iconFileName.begin() + delimPos + 1),\n\t\tit->FileName()\n\t);\n\tSoftwareBitmap bkgIcon = AutoFillBackground(iconPath, isLightTheme, noPath);\n\tif (bkgIcon || noPath) {\n\t\treturn std::move(bkgIcon);\n\t} else {\n\t\treturn std::move(iconPath);\n\t}\n}\n\nvoid AppXReader::ClearCache() noexcept {\n\tauto lock = appxCacheLock.lock_exclusive();\n\tappxCache.clear();\n}\n\nbool AppXReader::_ResolvePackagePath() {\n\tif (!_packagePath.empty()) {\n\t\treturn true;\n\t}\n\n\tuint32_t pfnLen = 0, praidLen = 0;\n\tstd::ignore = ParseApplicationUserModelId(_aumid.c_str(), &pfnLen, nullptr, &praidLen, nullptr);\n\tif (pfnLen == 0 || praidLen == 0) {\n\t\tLogger::Get().Error(\"ParseApplicationUserModelId 失败\");\n\t\treturn false;\n\t}\n\n\tstd::wstring packageFamilyName(pfnLen - 1, 0);\n\t_praid.assign((size_t)praidLen - 1, 0);\n\tif (ParseApplicationUserModelId(_aumid.c_str(), &pfnLen, packageFamilyName.data(),\n\t\t&praidLen, _praid.data()) != ERROR_SUCCESS)\n\t{\n\t\tLogger::Get().Error(\"ParseApplicationUserModelId 失败\");\n\t\treturn false;\n\t}\n\n\t//使用 PackageFamilyName 检索 PackageFullName\n\tuint32_t packageCount = 0;\n\tuint32_t bufferLength = 0;\n\tstd::ignore = FindPackagesByPackageFamily(packageFamilyName.c_str(), PACKAGE_FILTER_HEAD,\n\t\t&packageCount, nullptr, &bufferLength, nullptr, nullptr);\n\tif (packageCount == 0 || bufferLength == 0) {\n\t\tLogger::Get().Error(\"FindPackagesByPackageFamily 失败\");\n\t\treturn false;\n\t}\n\n\tstd::unique_ptr<wchar_t* []> packageFullNames(new wchar_t* [packageCount]);\n\tstd::unique_ptr<wchar_t[]> buffer(new wchar_t[bufferLength]);\n\tif (FindPackagesByPackageFamily(packageFamilyName.c_str(), PACKAGE_FILTER_HEAD,\n\t\t&packageCount, packageFullNames.get(), &bufferLength, buffer.get(), nullptr) != ERROR_SUCCESS) \n\t{\n\t\tLogger::Get().Error(\"FindPackagesByPackageFamily 失败\");\n\t\treturn false;\n\t}\n\n\t// 只使用第一个包，一般也只有一个\n\t_packageFullName = packageFullNames[0];\n\n\tHRESULT hr = wil::AdaptFixedSizeToAllocatedResult(\n\t\t_packagePath, [&](_Out_writes_(valueLength) PWSTR value, size_t valueLength, _Out_ size_t* valueLengthNeededWithNul) -> HRESULT {\n\t\t\tUINT32 length = (UINT32)valueLength;\n\t\t\tLONG rc = GetPackagePathByFullName(_packageFullName.c_str(), &length, value);\n\t\t\tif (rc != ERROR_SUCCESS && rc != ERROR_INSUFFICIENT_BUFFER) {\n\t\t\t\treturn HRESULT_FROM_WIN32(rc);\n\t\t\t}\n\n\t\t\t*valueLengthNeededWithNul = length;\n\t\t\treturn S_OK;\n\t\t}\n\t);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"GetPackagePathByFullName 失败\", hr);\n\t\treturn false;\n\t}\n\n\tif (_packagePath.back() != L'\\\\') {\n\t\t_packagePath.push_back(L'\\\\');\n\t}\n\n\treturn true;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/AppXReader.h",
    "content": "#pragma once\n#include <variant>\n\nnamespace Magpie {\n\n// 用于解析打包应用\n// 通常较为耗时（50 ms 左右），应在后台执行\nclass AppXReader {\npublic:\n\tbool Initialize(HWND hWnd) noexcept;\n\n\tbool Initialize(std::wstring_view aumid) noexcept;\n\n\tconst std::wstring& AUMID() const noexcept {\n\t\treturn _aumid;\n\t}\n\n\tstd::wstring GetDisplayName() noexcept;\n\n\tconst std::wstring& GetPackagePath() noexcept;\n\n\tstd::wstring GetExecutablePath() noexcept;\n\t\n\tstd::variant<std::wstring, winrt::Windows::Graphics::Imaging::SoftwareBitmap> GetIcon(\n\t\tuint32_t preferredSize,\n\t\tbool isLightTheme,\n\t\tbool noPath = false\n\t) noexcept;\n\n\tstatic void ClearCache() noexcept;\n\nprivate:\n\tbool _ResolvePackagePath();\n\n\tstd::wstring _aumid;\n\tstd::wstring _praid;\n\tstd::wstring _packageFullName;\n\tstd::wstring _packagePath;\n\tstd::wstring _displayName;\n\tstd::wstring _executable;\n\tstd::wstring _square44x44Logo;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/AutoStartHelper.cpp",
    "content": "#include \"pch.h\"\n#include \"AutoStartHelper.h\"\n#include \"CommonSharedConstants.h\"\n#include \"Logger.h\"\n#include \"StrHelper.h\"\n#include \"Win32Helper.h\"\n#include <Lmcons.h>\n#include <ShlObj.h>\n#include <taskschd.h>\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\n// 实现开机启动\n//\n// 首先尝试使用任务计划程序，此方案的优点是以管理员身份启动时不会显示 UAC。\n// 如果创建任务失败，则回落到在当前用户的启动文件夹中创建快捷方式。\n//\n// 任务计划程序的使用参考自\n// https://github.com/microsoft/PowerToys/blob/3d54cb838504c12f59516afaf1a00fde2dd5d01b/src/runner/auto_start_helper.cpp\n//\n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nusing namespace winrt;\n\nnamespace Magpie {\n\nstatic constexpr DWORD USERNAME_DOMAIN_LEN = DNLEN + UNLEN + 2; // Domain Name + '\\' + User Name + '\\0'\nstatic constexpr DWORD USERNAME_LEN = UNLEN + 1; // User Name + '\\0'\n\n\nstatic std::wstring GetTaskName(std::wstring_view userName) noexcept {\n\treturn StrHelper::Concat(L\"Autorun for \", userName);\n}\n\nstatic com_ptr<ITaskService> CreateTaskService() noexcept {\n\tcom_ptr<ITaskService> taskService = try_create_instance<ITaskService>(CLSID_TaskScheduler);\n\tif (!taskService) {\n\t\tLogger::Get().Error(\"创建 TaskService 失败\");\n\t\treturn nullptr;\n\t}\n\n\tHRESULT hr = taskService->Connect(Win32Helper::Variant(), Win32Helper::Variant(),\n\t\tWin32Helper::Variant(), Win32Helper::Variant());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"ITaskService::Connect 失败\", hr);\n\t\treturn nullptr;\n\t}\n\n\treturn taskService;\n}\n\nstatic bool CreateAutoStartTask(bool runElevated) noexcept {\n\tWCHAR usernameDomain[USERNAME_DOMAIN_LEN];\n\tWCHAR username[USERNAME_LEN];\n\n\t// 检索用户域和用户名\n\tif (!GetEnvironmentVariable(L\"USERNAME\", username, USERNAME_LEN)) {\n\t\tLogger::Get().Win32Error(\"获取用户名失败\");\n\t\treturn false;\n\t}\n\tif (!GetEnvironmentVariable(L\"USERDOMAIN\", usernameDomain, USERNAME_DOMAIN_LEN)) {\n\t\tLogger::Get().Win32Error(\"获取用户域失败\");\n\t\treturn false;\n\t}\n\n\twcscat_s(usernameDomain, L\"\\\\\");\n\twcscat_s(usernameDomain, username);\n\n\tcom_ptr<ITaskService> taskService = CreateTaskService();\n\tif (!taskService) {\n\t\treturn false;\n\t}\n\n\t// 获取/创建 Magpie 文件夹\n\tcom_ptr<ITaskFolder> taskFolder;\n\tHRESULT hr = taskService->GetFolder(wil::make_bstr_nothrow(L\"\\\\Magpie\").get(), taskFolder.put());\n\tif (FAILED(hr)) {\n\t\tcom_ptr<ITaskFolder> rootFolder = NULL;\n\t\thr = taskService->GetFolder(wil::make_bstr_nothrow(L\"\\\\\").get(), rootFolder.put());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"获取根目录失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\thr = rootFolder->CreateFolder(wil::make_bstr_nothrow(L\"\\\\Magpie\").get(), Win32Helper::Variant(L\"\"), taskFolder.put());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"创建 Magpie 任务文件夹失败\", hr);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Create the task builder object to create the task.\n\tcom_ptr<ITaskDefinition> task;\n\thr = taskService->NewTask(0, task.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"创建 ITaskDefinition 失败\", hr);\n\t\treturn false;\n\t}\n\n\t// ------------------------------------------------------\n\t// Get the registration info for setting the identification.\n\tcom_ptr<IRegistrationInfo> regInfo;\n\thr = task->get_RegistrationInfo(regInfo.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"获取 IRegistrationInfo 失败\", hr);\n\t\treturn false;\n\t}\n\n\thr = regInfo->put_Author(wil::make_bstr_nothrow(usernameDomain).get());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"IRegistrationInfo::put_Author 失败\", hr);\n\t\treturn false;\n\t}\n\n\t // ------------------------------------------------------\n\t// Create the settings for the task\n\tcom_ptr<ITaskSettings> taskSettings;\n\thr = task->get_Settings(taskSettings.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"获取 ITaskSettings 失败\", hr);\n\t\treturn false;\n\t}\n\n\thr = taskSettings->put_StartWhenAvailable(VARIANT_FALSE);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"ITaskSettings::put_StartWhenAvailable 失败\", hr);\n\t\treturn false;\n\t}\n\thr = taskSettings->put_StopIfGoingOnBatteries(VARIANT_FALSE);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"ITaskSettings::put_StopIfGoingOnBatteries 失败\", hr);\n\t\treturn false;\n\t}\n\t// 不限制执行时间\n\thr = taskSettings->put_ExecutionTimeLimit(wil::make_bstr_nothrow(L\"PT0S\").get());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"ITaskSettings::put_ExecutionTimeLimit 失败\", hr);\n\t\treturn false;\n\t}\n\thr = taskSettings->put_DisallowStartIfOnBatteries(VARIANT_FALSE);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"ITaskSettings::put_DisallowStartIfOnBatteries 失败\", hr);\n\t\treturn false;\n\t}\n\n\t// ------------------------------------------------------\n\t// Get the trigger collection to insert the logon trigger.\n\tcom_ptr<ITriggerCollection> triggerCollection;\n\thr = task->get_Triggers(triggerCollection.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"获取 ITriggerCollection 失败\", hr);\n\t\treturn false;\n\t}\n\n\t// Add the logon trigger to the task.\n\t{\n\t\tcom_ptr<ITrigger> trigger;\n\t\thr = triggerCollection->Create(TASK_TRIGGER_LOGON, trigger.put());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"创建 ITrigger 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\tcom_ptr<ILogonTrigger> logonTrigger = trigger.try_as<ILogonTrigger>();\n\t\tif (!logonTrigger) {\n\t\t\tLogger::Get().Error(\"获取 ILogonTrigger 失败\");\n\t\t\treturn false;\n\t\t}\n\n\t\tlogonTrigger->put_Id(wil::make_bstr_nothrow(L\"Trigger1\").get());\n\n\t\t// Timing issues may make explorer not be started when the task runs.\n\t\t// Add a little delay to mitigate this.\n\t\tlogonTrigger->put_Delay(wil::make_bstr_nothrow(L\"PT03S\").get());\n\n\t\t// Define the user. The task will execute when the user logs on.\n\t\t// The specified user must be a user on this computer.\n\t\thr = logonTrigger->put_UserId(wil::make_bstr_nothrow(usernameDomain).get());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"ILogonTrigger::put_UserId 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// ------------------------------------------------------\n\t// Add an Action to the task. This task will execute the path passed to this custom action.\n\t{\n\t\tcom_ptr<IActionCollection> actionCollection;\n\n\t\t// Get the task action collection pointer.\n\t\thr = task->get_Actions(actionCollection.put());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"获取 IActionCollection 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Create the action, specifying that it is an executable action.\n\t\tcom_ptr<IAction> action;\n\t\thr = actionCollection->Create(TASK_ACTION_EXEC, action.put());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"创建 IAction 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\t// QI for the executable task pointer.\n\t\tcom_ptr<IExecAction> execAction = action.try_as<IExecAction>();\n\t\tif (!execAction) {\n\t\t\tLogger::Get().Error(\"获取 IExecAction 失败\");\n\t\t\treturn false;\n\t\t}\n\n\t\t// Set the path of the executable to Magpie (passed as CustomActionData).\n\t\tconst std::filesystem::path& exePath = Win32Helper::GetExePath();\n\t\thr = execAction->put_Path(wil::make_bstr_nothrow(exePath.c_str()).get());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"设置可执行文件路径失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\texecAction->put_Arguments(wil::make_bstr_nothrow(\n\t\t\tCommonSharedConstants::OPTION_LAUNCH_WITHOUT_WINDOW).get());\n\t}\n\n\t// ------------------------------------------------------\n\t// Create the principal for the task\n\t{\n\t\tcom_ptr<IPrincipal> principal;\n\t\thr = task->get_Principal(principal.put());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"获取 IPrincipal 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Set up principal information:\n\t\tprincipal->put_Id(wil::make_bstr_nothrow(L\"Principal1\").get());\n\t\tprincipal->put_UserId(wil::make_bstr_nothrow(usernameDomain).get());\n\t\tprincipal->put_LogonType(TASK_LOGON_INTERACTIVE_TOKEN);\n\n\t\tif (runElevated) {\n\t\t\thr = principal->put_RunLevel(TASK_RUNLEVEL_HIGHEST);\n\t\t} else {\n\t\t\thr = principal->put_RunLevel(TASK_RUNLEVEL_LUA);\n\t\t}\n\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"IPrincipal::put_RunLevel 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// ------------------------------------------------------\n\t//  Save the task in the Magpie folder.\n\t{\n\t\tcom_ptr<IRegisteredTask> registeredTask;\n\t\tstatic constexpr const wchar_t* SDDL_FULL_ACCESS_FOR_EVERYONE = L\"D:(A;;FA;;;WD)\";\n\n\t\t// 如果用户是 Administrator 账户，但 Magpie 不是以提升权限运行的，此调用会因权限问题失败\n\t\tstd::wstring taskName = GetTaskName(username);\n\t\thr = taskFolder->RegisterTaskDefinition(\n\t\t\twil::make_bstr_nothrow(taskName.c_str()).get(),\n\t\t\ttask.get(),\n\t\t\tTASK_CREATE_OR_UPDATE,\n\t\t\tWin32Helper::Variant(usernameDomain),\n\t\t\tWin32Helper::Variant(),\n\t\t\tTASK_LOGON_INTERACTIVE_TOKEN,\n\t\t\tWin32Helper::Variant(SDDL_FULL_ACCESS_FOR_EVERYONE),\n\t\t\tregisteredTask.put()\n\t\t);\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"注册任务失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\tregisteredTask->put_Enabled(VARIANT_TRUE);\n\t}\n\n\treturn true;\n}\n\nstatic bool DeleteAutoStartTask() noexcept {\n\tWCHAR username[USERNAME_LEN];\n\tif (!GetEnvironmentVariable(L\"USERNAME\", username, USERNAME_LEN)) {\n\t\tLogger::Get().Win32Error(\"获取用户名失败\");\n\t\treturn false;\n\t}\n\n\tcom_ptr<ITaskService> taskService = CreateTaskService();\n\tif (!taskService) {\n\t\treturn false;\n\t}\n\n\tcom_ptr<ITaskFolder> taskFolder;\n\tHRESULT hr = taskService->GetFolder(wil::make_bstr_nothrow(L\"\\\\Magpie\").get(), taskFolder.put());\n\tif (FAILED(hr)) {\n\t\treturn true;\n\t}\n\n\twil::unique_bstr taskName = wil::make_bstr_nothrow(GetTaskName(username).c_str());\n\n\t{\n\t\tcom_ptr<IRegisteredTask> existingRegisteredTask;\n\t\thr = taskFolder->GetTask(taskName.get(), existingRegisteredTask.put());\n\t\tif (FAILED(hr)) {\n\t\t\t// 不存在任务\n\t\t\treturn true;\n\t\t}\n\t}\n\n\thr = taskFolder->DeleteTask(taskName.get(), 0);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"删除任务失败\", hr);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nstatic bool IsAutoStartTaskActive() noexcept {\n\tWCHAR username[USERNAME_LEN];\n\tif (!GetEnvironmentVariable(L\"USERNAME\", username, USERNAME_LEN)) {\n\t\tLogger::Get().Win32Error(\"获取用户名失败\");\n\t\treturn false;\n\t}\n\n\tcom_ptr<ITaskService> taskService = CreateTaskService();\n\tif (!taskService) {\n\t\treturn false;\n\t}\n\n\tcom_ptr<ITaskFolder> taskFolder;\n\tHRESULT hr = taskService->GetFolder(wil::make_bstr_nothrow(L\"\\\\Magpie\").get(), taskFolder.put());\n\tif (FAILED(hr)) {\n\t\treturn false;\n\t}\n\n\tcom_ptr<IRegisteredTask> existingRegisteredTask;\n\thr = taskFolder->GetTask(wil::make_bstr_nothrow(GetTaskName(username).c_str()).get(), existingRegisteredTask.put());\n\tif (FAILED(hr)) {\n\t\treturn false;\n\t}\n\n\tVARIANT_BOOL isEnabled;\n\thr = existingRegisteredTask->get_Enabled(&isEnabled);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"IRegisteredTask::get_Enabled 失败\", hr);\n\t\treturn false;\n\t}\n\n\treturn isEnabled == VARIANT_TRUE;\n}\n\nstatic std::wstring GetShortcutPath() noexcept {\n\t// 获取用户的启动文件夹路径\n\twil::unique_cotaskmem_string startupDir;\n\tHRESULT hr = SHGetKnownFolderPath(FOLDERID_Startup, 0, NULL, startupDir.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"获取启动文件夹失败\", hr);\n\t\treturn {};\n\t}\n\n\treturn StrHelper::Concat(startupDir.get(), L\"\\\\Magpie.lnk\");\n}\n\nstatic bool CreateAutoStartShortcut() noexcept {\n\tcom_ptr<IShellLink> shellLink = try_create_instance<IShellLink>(CLSID_ShellLink);\n\tif (!shellLink) {\n\t\tLogger::Get().Error(\"创建 ShellLink 失败\");\n\t\treturn false;\n\t}\n\n\tshellLink->SetPath(Win32Helper::GetExePath().c_str());\n\tshellLink->SetArguments(CommonSharedConstants::OPTION_LAUNCH_WITHOUT_WINDOW);\n\n\tcom_ptr<IPersistFile> persistFile = shellLink.try_as<IPersistFile>();\n\tif (!persistFile) {\n\t\tLogger::Get().Error(\"获取 IPersistFile 失败\");\n\t\treturn false;\n\t}\n\n\tHRESULT hr = persistFile->Save(GetShortcutPath().c_str(), TRUE);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"保存快捷方式失败\", hr);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nstatic bool DeleteAutoStartShortcut() noexcept {\n\tstd::wstring shortcutPath = GetShortcutPath();\n\tif (shortcutPath.empty()) {\n\t\treturn false;\n\t}\n\n\tif (!DeleteFile(shortcutPath.c_str()) && GetLastError() != ERROR_FILE_NOT_FOUND) {\n\t\tLogger::Get().Win32Error(\"删除快捷方式失败\");\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nstatic bool IsAutoStartShortcutExist() noexcept {\n\tstd::wstring shortcutPath = GetShortcutPath();\n\treturn !shortcutPath.empty() && Win32Helper::FileExists(shortcutPath.c_str());\n}\n\nbool AutoStartHelper::EnableAutoStart(bool runElevated) noexcept {\n\tif (CreateAutoStartTask(runElevated)) {\n\t\tDeleteAutoStartShortcut();\n\t\treturn true;\n\t}\n\n\treturn CreateAutoStartShortcut();\n}\n\nbool AutoStartHelper::DisableAutoStart() noexcept {\n\t// 避免或运算符的短路，确保两者都被删除\n\tbool result1 = DeleteAutoStartTask();\n\tbool result2 = DeleteAutoStartShortcut();\n\treturn result1 || result2;\n}\n\nbool AutoStartHelper::IsAutoStartEnabled() noexcept {\n\treturn IsAutoStartTaskActive() || IsAutoStartShortcutExist();\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/AutoStartHelper.h",
    "content": "#pragma once\n\nnamespace Magpie {\n\nstruct AutoStartHelper {\n\tstatic bool EnableAutoStart(bool runElevated) noexcept;\n\tstatic bool DisableAutoStart() noexcept;\n\tstatic bool IsAutoStartEnabled() noexcept;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/BlueInfoBarStyle.cpp",
    "content": "#include \"pch.h\"\n#include \"BlueInfoBarStyle.h\"\n#if __has_include(\"BlueInfoBarStyle.g.cpp\")\n#include \"BlueInfoBarStyle.g.cpp\"\n#endif\n"
  },
  {
    "path": "src/Magpie/BlueInfoBarStyle.h",
    "content": "#pragma once\n#include \"BlueInfoBarStyle.g.h\"\n\nnamespace winrt::Magpie::implementation {\nstruct BlueInfoBarStyle : BlueInfoBarStyleT<BlueInfoBarStyle> {};\n}\n\nBASIC_FACTORY(BlueInfoBarStyle)\n"
  },
  {
    "path": "src/Magpie/BlueInfoBarStyle.idl",
    "content": "namespace Magpie {\n    [default_interface]\n    runtimeclass BlueInfoBarStyle : Windows.UI.Xaml.ResourceDictionary {\n        BlueInfoBarStyle();\n    }\n}\n"
  },
  {
    "path": "src/Magpie/BlueInfoBarStyle.xaml",
    "content": "<!--  显示信息的 InfoBar 背景改为蓝色  -->\n<!--  来自 https://github.com/microsoft/PowerToys/blob/3fe78fed65f4a5dc1d309911b8acbe729a0b9f52/src/settings-ui/Settings.UI/SettingsXAML/Themes/Colors.xaml  -->\n<!--  26100 SDK 存在 bug，导致所有 XAML 文件都必须指定 x:Class，一旦修复应还原更改  -->\n<ResourceDictionary x:Class=\"Magpie.BlueInfoBarStyle\"\n                    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n                    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\n\t<ResourceDictionary.ThemeDictionaries>\n\t\t<ResourceDictionary x:Key=\"Dark\">\n\t\t\t<SolidColorBrush x:Key=\"InfoBarInformationalSeverityBackgroundBrush\"\n\t\t\t                 Color=\"#FF34424d\" />\n\t\t\t<Color x:Key=\"InfoBarInformationalSeverityIconBackground\">#FF5fb2f2</Color>\n\t\t</ResourceDictionary>\n\n\t\t<ResourceDictionary x:Key=\"Light\">\n\t\t\t<SolidColorBrush x:Key=\"InfoBarInformationalSeverityBackgroundBrush\"\n\t\t\t                 Color=\"#FFd3e7f7\" />\n\t\t\t<Color x:Key=\"InfoBarInformationalSeverityIconBackground\">#FF0063b1</Color>\n\t\t</ResourceDictionary>\n\t</ResourceDictionary.ThemeDictionaries>\n</ResourceDictionary>\n"
  },
  {
    "path": "src/Magpie/BoolNegationConverter.cpp",
    "content": "﻿#include \"pch.h\"\n#include \"BoolNegationConverter.h\"\n#if __has_include(\"BoolNegationConverter.g.cpp\")\n#include \"BoolNegationConverter.g.cpp\"\n#endif\n\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Interop;\n\nnamespace winrt::Magpie::implementation {\n\nIInspectable BoolNegationConverter::Convert(IInspectable const& value, TypeName const&, IInspectable const&, hstring const&) {\n\treturn box_value(!unbox_value<bool>(value));\n}\n\nIInspectable BoolNegationConverter::ConvertBack(IInspectable const& value, TypeName const&, IInspectable const&, hstring const&) {\n\treturn box_value(!unbox_value<bool>(value));\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/BoolNegationConverter.h",
    "content": "#pragma once\n#include \"BoolNegationConverter.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct BoolNegationConverter : BoolNegationConverterT<BoolNegationConverter> {\n    IInspectable Convert(IInspectable const& value, Interop::TypeName const&, IInspectable const&, hstring const&);\n    IInspectable ConvertBack(IInspectable const& value, Interop::TypeName const&, IInspectable const&, hstring const&);\n};\n\n}\n\nBASIC_FACTORY(BoolNegationConverter)\n"
  },
  {
    "path": "src/Magpie/BoolNegationConverter.idl",
    "content": "namespace Magpie {\n    runtimeclass BoolNegationConverter : [default] Windows.UI.Xaml.Data.IValueConverter {\n        BoolNegationConverter();\n    }\n}\n"
  },
  {
    "path": "src/Magpie/BoolToNegativeVisibilityConverter.cpp",
    "content": "﻿#include \"pch.h\"\n#include \"BoolToNegativeVisibilityConverter.h\"\n#if __has_include(\"BoolToNegativeVisibilityConverter.g.cpp\")\n#include \"BoolToNegativeVisibilityConverter.g.cpp\"\n#endif\n\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Interop;\n\nnamespace winrt::Magpie::implementation {\n\nIInspectable BoolToNegativeVisibilityConverter::Convert(IInspectable const& value, TypeName const&, IInspectable const&, hstring const&) {\n    return box_value(unbox_value<bool>(value) ? Visibility::Collapsed : Visibility::Visible);\n}\n\nIInspectable BoolToNegativeVisibilityConverter::ConvertBack(IInspectable const& value, TypeName const&, IInspectable const&, hstring const&) {\n    return box_value(unbox_value<Visibility>(value) == Visibility::Collapsed);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/BoolToNegativeVisibilityConverter.h",
    "content": "#pragma once\n#include \"BoolToNegativeVisibilityConverter.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct BoolToNegativeVisibilityConverter : BoolToNegativeVisibilityConverterT<BoolToNegativeVisibilityConverter> {\n    IInspectable Convert(IInspectable const& value, Interop::TypeName const&, IInspectable const&, hstring const&);\n    IInspectable ConvertBack(IInspectable const& value, Interop::TypeName const&, IInspectable const&, hstring const&);\n};\n\n}\n\nBASIC_FACTORY(BoolToNegativeVisibilityConverter)\n"
  },
  {
    "path": "src/Magpie/BoolToNegativeVisibilityConverter.idl",
    "content": "namespace Magpie {\n    // true -> Visibility::Collapsed\n    // false -> Visibility::Visible\n    runtimeclass BoolToNegativeVisibilityConverter : [default] Windows.UI.Xaml.Data.IValueConverter {\n        BoolToNegativeVisibilityConverter();\n    }\n}\n"
  },
  {
    "path": "src/Magpie/CandidateWindowItem.cpp",
    "content": "#include \"pch.h\"\n#include \"CandidateWindowItem.h\"\n#if __has_include(\"CandidateWindowItem.g.cpp\")\n#include \"CandidateWindowItem.g.cpp\"\n#endif\n#include \"Win32Helper.h\"\n#include \"AppXReader.h\"\n#include \"IconHelper.h\"\n#include \"StrHelper.h\"\n#include \"App.h\"\n#include \"MainWindow.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::UI::ViewManagement;\nusing namespace Windows::UI::Xaml::Controls;\nusing namespace Windows::UI::Xaml::Media::Imaging;\nusing namespace Windows::Graphics::Imaging;\nusing namespace Windows::Graphics::Display;\n\nnamespace winrt::Magpie::implementation {\n\nstatic std::wstring GetProcessDesc(HWND hWnd) {\n\tif (Win32Helper::GetWindowClassName(hWnd) == L\"ApplicationFrameWindow\") {\n\t\t// 跳过 UWP 窗口\n\t\treturn {};\n\t}\n\n\t// 移植自 https://github.com/dotnet/runtime/blob/4a63cb28b69e1c48bccf592150be7ba297b67950/src/libraries/System.Diagnostics.FileVersionInfo/src/System/Diagnostics/FileVersionInfo.Windows.cs\n\tstd::wstring fileName = Win32Helper::GetWindowPath(hWnd);\n\tif (fileName.empty()) {\n\t\treturn {};\n\t}\n\n\tDWORD dummy;\n\tDWORD infoSize = GetFileVersionInfoSizeEx(FILE_VER_GET_LOCALISED, fileName.c_str(), &dummy);\n\tif (infoSize == 0) {\n\t\treturn {};\n\t}\n\n\tstd::unique_ptr<uint8_t[]> infoData = std::make_unique<uint8_t[]>(infoSize);\n\tif (!GetFileVersionInfoEx(FILE_VER_GET_LOCALISED, fileName.c_str(), 0, infoSize, infoData.get())) {\n\t\treturn {};\n\t}\n\n\tstd::wstring codePage;\n\tuint8_t* langId = nullptr;\n\tuint32_t len;\n\tif (VerQueryValue(infoData.get(), L\"\\\\VarFileInfo\\\\Translation\", (void**)&langId, &len)) {\n\t\tcodePage = fmt::format(L\"{:08X}\", uint32_t((*(uint16_t*)langId << 16) | *(uint16_t*)(langId + 2)));\n\t} else {\n\t\tcodePage = L\"040904E4\";\n\t}\n\n\twchar_t* description = nullptr;\n\tstd::wstring descPath = fmt::format(L\"\\\\StringFileInfo\\\\{}\\\\FileDescription\", codePage);\n\tif (!VerQueryValue(infoData.get(), descPath.c_str(), (void**)&description, &len)) {\n\t\treturn {};\n\t}\n\n\treturn description;\n}\n\nCandidateWindowItem::CandidateWindowItem(HWND hWnd) {\n\t_title = Win32Helper::GetWindowTitle(hWnd);\n\t_defaultProfileName = _title;\n\n\t_className = Win32Helper::GetWindowClassName(hWnd);\n\t_path = Win32Helper::GetWindowPath(hWnd);\n\n\tMUXC::ImageIcon placeholder;\n\tplaceholder.Width(16);\n\tplaceholder.Height(16);\n\t_icon = std::move(placeholder);\n\n\t_ResolveWindow(true, true, hWnd);\n}\n\nIconElement CandidateWindowItem::Icon() const noexcept {\n\t// 返回副本，否则在 ComboBox 中绑定会导致崩溃\n\tif (MUXC::ImageIcon imageIcon = _icon.try_as<MUXC::ImageIcon>()) {\n\t\tMUXC::ImageIcon icon;\n\t\ticon.Source(imageIcon.Source());\n\t\ticon.Width(imageIcon.Width());\n\t\ticon.Height(imageIcon.Height());\n\t\treturn std::move(icon);\n\t} else if (FontIcon fontIcon = _icon.try_as<FontIcon>()) {\n\t\tFontIcon icon;\n\t\ticon.Glyph(fontIcon.Glyph());\n\t\ticon.FontSize(fontIcon.FontSize());\n\t\treturn std::move(icon);\n\t}\n\n\treturn nullptr;\n}\n\nfire_and_forget CandidateWindowItem::_ResolveWindow(bool resolveIcon, bool resolveName, HWND hWnd) {\n\tassert(resolveIcon || resolveName);\n\n\tauto weakThis = get_weak();\n\n\t// 解析名称和图标非常耗时，转到后台进行\n\tco_await resume_background();\n\n\tAppXReader reader;\n\tconst bool isPackaged = reader.Initialize(hWnd);\n\tif (resolveName) {\n\t\tstd::wstring defaultProfileName = isPackaged ? reader.GetDisplayName() : GetProcessDesc(hWnd);\n\t\tStrHelper::Trim(defaultProfileName);\n\n\t\tauto strongThis = weakThis.get();\n\t\tif (!strongThis) {\n\t\t\tco_return;\n\t\t}\n\n\t\tApp::Get().Dispatcher().TryEnqueue(\n\t\t\t[this, defaultProfileName(std::move(defaultProfileName)), aumid(reader.AUMID())]() {\n\t\t\t\tif (!defaultProfileName.empty()) {\n\t\t\t\t\t_defaultProfileName = defaultProfileName;\n\t\t\t\t}\n\t\t\t\t// 即使 defaultProfileName 为空也通知 DefaultProfileName 已更改，\n\t\t\t\t// 这是为了正确设置 CandidateWindowIndex。\n\t\t\t\tRaisePropertyChanged(L\"DefaultProfileName\");\n\n\t\t\t\t_aumid = aumid;\n\t\t\t}\n\t\t);\n\t}\n\n\tif (!resolveIcon) {\n\t\tco_return;\n\t}\n\n\tSoftwareBitmap iconBitmap{ nullptr };\n\tconst uint32_t iconSize = (uint32_t)std::lround(\n\t\t16 * App::Get().MainWindow().CurrentDpi() / double(USER_DEFAULT_SCREEN_DPI));\n\n\tif (isPackaged) {\n\t\tstd::variant<std::wstring, SoftwareBitmap> uwpIcon =\n\t\t\treader.GetIcon(iconSize, App::Get().IsLightTheme(), true);\n\t\tif (uwpIcon.index() == 1) {\n\t\t\ticonBitmap = std::get<1>(uwpIcon);\n\t\t}\n\t} else {\n\t\ticonBitmap = IconHelper::ExtractIconFormWnd(hWnd, iconSize);\n\t}\n\n\t// 切换到主线程\n\tco_await App::Get().Dispatcher();\n\n\tif (auto strongThis = weakThis.get()) {\n\t\tif (iconBitmap) {\n\t\t\tSoftwareBitmapSource imageSource;\n\t\t\tco_await imageSource.SetBitmapAsync(iconBitmap);\n\n\t\t\tMUXC::ImageIcon imageIcon;\n\t\t\timageIcon.Width(16);\n\t\t\timageIcon.Height(16);\n\t\t\timageIcon.Source(imageSource);\n\n\t\t\tstrongThis->_icon = std::move(imageIcon);\n\t\t} else {\n\t\t\tFontIcon fontIcon;\n\t\t\tfontIcon.Glyph(L\"\\uE737\");\n\t\t\tfontIcon.FontSize(16);\n\n\t\t\tstrongThis->_icon = std::move(fontIcon);\n\t\t}\n\n\t\tstrongThis->RaisePropertyChanged(L\"Icon\");\n\t}\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/CandidateWindowItem.h",
    "content": "#pragma once\n#include \"CandidateWindowItem.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct CandidateWindowItem : CandidateWindowItemT<CandidateWindowItem>,\n                             wil::notify_property_changed_base<CandidateWindowItem> {\n    CandidateWindowItem(HWND hWnd);\n\n\thstring Title() const noexcept {\n\t\treturn _title;\n\t}\n\n\tIconElement Icon() const noexcept;\n\n\thstring DefaultProfileName() const noexcept {\n\t\treturn _defaultProfileName;\n\t}\n\n\thstring AUMID() const noexcept {\n\t\treturn _aumid;\n\t}\n\n\thstring Path() const noexcept {\n\t\treturn _path;\n\t}\n\n\thstring ClassName() const noexcept {\n\t\treturn _className;\n\t}\n\nprivate:\n\tfire_and_forget _ResolveWindow(bool resolveIcon, bool resolveName, HWND hWnd);\n\n\thstring _title;\n\tIconElement _icon{ nullptr };\n\thstring _defaultProfileName;\n\n\thstring _aumid;\n\thstring _path;\n\thstring _className;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/CandidateWindowItem.idl",
    "content": "namespace Magpie {\n    runtimeclass CandidateWindowItem : Windows.UI.Xaml.Data.INotifyPropertyChanged {\n        String Title { get; };\n        Windows.UI.Xaml.Controls.IconElement Icon { get; };\n        String DefaultProfileName { get; };\n\n        String AUMID { get; };\n        String Path { get; };\n        String ClassName { get; };\n    }\n}\n"
  },
  {
    "path": "src/Magpie/CaptionButtonsControl.cpp",
    "content": "#include \"pch.h\"\n#include \"CaptionButtonsControl.h\"\n#if __has_include(\"CaptionButtonsControl.g.cpp\")\n#include \"CaptionButtonsControl.g.cpp\"\n#endif\n#include \"App.h\"\n#include \"MainWindow.h\"\n\nnamespace winrt::Magpie::implementation {\n\nSize CaptionButtonsControl::CaptionButtonSize() const {\n\tResourceDictionary resources = Resources();\n\treturn {\n\t\t(float)unbox_value<double>(resources.Lookup(box_value(L\"CaptionButtonWidth\"))),\n\t\t(float)unbox_value<double>(resources.Lookup(box_value(L\"CaptionButtonHeight\")))\n\t};\n}\n\n// 鼠标移动到某个按钮上时调用\nvoid CaptionButtonsControl::HoverButton(CaptionButton button) {\n\tif (_pressedButton) {\n\t\tbool hoveringOnPressedButton = _pressedButton.value() == button;\n\t\t_allInNormal = !hoveringOnPressedButton;\n\n\t\tVisualStateManager::GoToState(MinimizeButton(),\n\t\t\thoveringOnPressedButton && button == CaptionButton::Minimize ? L\"Pressed\" : L\"Normal\", false);\n\t\tVisualStateManager::GoToState(MaximizeButton(),\n\t\t\thoveringOnPressedButton && button == CaptionButton::Maximize ? L\"Pressed\" : L\"Normal\", false);\n\t\tVisualStateManager::GoToState(CloseButton(),\n\t\t\thoveringOnPressedButton && button == CaptionButton::Close ? L\"Pressed\" : L\"Normal\", false);\n\t} else {\n\t\t_allInNormal = false;\n\n\t\tconst wchar_t* activeState = _isWindowActive ? L\"Normal\" : L\"NotActive\";\n\t\tVisualStateManager::GoToState(MinimizeButton(),\n\t\t\tbutton == CaptionButton::Minimize ? L\"PointerOver\" : activeState, false);\n\t\tVisualStateManager::GoToState(MaximizeButton(),\n\t\t\tbutton == CaptionButton::Maximize ? L\"PointerOver\" : activeState, false);\n\t\t\tVisualStateManager::GoToState(CloseButton(),\n\t\t\t\tbutton == CaptionButton::Close ? L\"PointerOver\" : activeState, false);\n\t}\n}\n\n// 在某个按钮上按下鼠标时调用\nvoid CaptionButtonsControl::PressButton(CaptionButton button) {\n\t_allInNormal = false;\n\t_pressedButton = button;\n\n\tVisualStateManager::GoToState(MinimizeButton(),\n\t\tbutton == CaptionButton::Minimize ? L\"Pressed\" : L\"Normal\", false);\n\tVisualStateManager::GoToState(MaximizeButton(),\n\t\tbutton == CaptionButton::Maximize ? L\"Pressed\" : L\"Normal\", false);\n\tVisualStateManager::GoToState(CloseButton(),\n\t\tbutton == CaptionButton::Close ? L\"Pressed\" : L\"Normal\", false);\n}\n\n// 在标题栏按钮上释放鼠标时调用\nvoid CaptionButtonsControl::ReleaseButton(CaptionButton button) {\n\t// 在某个按钮上按下然后释放视为点击，即使中途离开过也是如此，因为 HoverButton 和\n\t// LeaveButtons 都不改变 _pressedButton\n\tconst bool clicked = _pressedButton && _pressedButton.value() == button;\n\n\tif (clicked) {\n\t\t// 用户点击了某个按钮\n\t\tconst HWND hwndMain = App::Get().MainWindow().Handle();\n\n\t\tswitch (_pressedButton.value()) {\n\t\tcase CaptionButton::Minimize:\n\t\t{\n\t\t\tPostMessage(hwndMain, WM_SYSCOMMAND, SC_MINIMIZE, 0);\n\t\t\tbreak;\n\t\t}\n\t\tcase CaptionButton::Maximize:\n\t\t{\n\t\t\tPOINT cursorPos;\n\t\t\tGetCursorPos(&cursorPos);\n\n\t\t\tPostMessage(\n\t\t\t\thwndMain,\n\t\t\t\tWM_SYSCOMMAND,\n\t\t\t\t_isWindowMaximized ? SC_RESTORE : SC_MAXIMIZE,\n\t\t\t\tMAKELPARAM(cursorPos.x, cursorPos.y)\n\t\t\t);\n\t\t\tbreak;\n\t\t}\n\t\tcase CaptionButton::Close:\n\t\t{\n\t\t\tPostMessage(hwndMain, WM_SYSCOMMAND, SC_CLOSE, 0);\n\t\t\tbreak;\n\t\t}\n\t\t}\n\t}\n\n\t_pressedButton.reset();\n\n\t// 如果点击了某个按钮则清空状态，因为此时窗口状态已改变。如果在某个按钮上按下然后在\n\t// 其他按钮上释放，不视为点击，则将当前鼠标所在的按钮状态置为 PointerOver\n\t_allInNormal = clicked;\n\tVisualStateManager::GoToState(MinimizeButton(),\n\t\t!clicked && button == CaptionButton::Minimize ? L\"PointerOver\" : L\"Normal\", false);\n\tVisualStateManager::GoToState(MaximizeButton(),\n\t\t!clicked && button == CaptionButton::Maximize ? L\"PointerOver\" : L\"Normal\", false);\n\tVisualStateManager::GoToState(CloseButton(),\n\t\t!clicked && button == CaptionButton::Close ? L\"PointerOver\" : L\"Normal\", false);\n}\n\n// 在非标题按钮上释放鼠标时调用\nvoid CaptionButtonsControl::ReleaseButtons() {\n\tif (!_pressedButton) {\n\t\treturn;\n\t}\n\t_pressedButton.reset();\n\n\tLeaveButtons();\n}\n\n// 离开标题按钮时调用，不更改 _pressedButton\nvoid CaptionButtonsControl::LeaveButtons() {\n\tif (_allInNormal) {\n\t\treturn;\n\t}\n\t_allInNormal = true;\n\n\tconst wchar_t* activeState = _isWindowActive ? L\"Normal\" : L\"NotActive\";\n\tVisualStateManager::GoToState(MinimizeButton(), activeState, true);\n\tVisualStateManager::GoToState(MaximizeButton(), activeState, true);\n\tVisualStateManager::GoToState(CloseButton(), activeState, true);\n}\n\nvoid CaptionButtonsControl::IsWindowMaximized(bool value) {\n\tif (_isWindowMaximized == value) {\n\t\treturn;\n\t}\n\n\tif (VisualStateManager::GoToState(MaximizeButton(),\n\t\tvalue ? L\"WindowStateMaximized\" : L\"WindowStateNormal\", false)) {\n\t\t_isWindowMaximized = value;\n\t}\n}\n\nvoid CaptionButtonsControl::IsWindowActive(bool value) {\n\t_isWindowActive = value;\n\n\tconst wchar_t* activeState = value ? L\"Normal\" : L\"NotActive\";\n\tVisualStateManager::GoToState(MinimizeButton(), activeState, false);\n\tVisualStateManager::GoToState(MaximizeButton(), activeState, false);\n\tVisualStateManager::GoToState(CloseButton(), activeState, false);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/CaptionButtonsControl.h",
    "content": "#pragma once\n#include \"CaptionButtonsControl.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nenum class CaptionButton {\n\tMinimize = HTMINBUTTON,\n\tMaximize = HTMAXBUTTON,\n\tClose = HTCLOSE\n};\n\nstruct CaptionButtonsControl : CaptionButtonsControlT<CaptionButtonsControl> {\n\tSize CaptionButtonSize() const;\n\n\tvoid HoverButton(CaptionButton button);\n\n\tvoid PressButton(CaptionButton button);\n\n\tvoid ReleaseButton(CaptionButton button);\n\n\tvoid ReleaseButtons();\n\n\tvoid LeaveButtons();\n\n\tvoid IsWindowMaximized(bool value);\n\tvoid IsWindowActive(bool value);\n\nprivate:\n\tstd::optional<CaptionButton> _pressedButton;\n\t// 用于避免重复设置状态\n\tbool _allInNormal = true;\n\tbool _isWindowMaximized = false;\n\tbool _isWindowActive = true;\n};\n\n}\n\nBASIC_FACTORY(CaptionButtonsControl)\n"
  },
  {
    "path": "src/Magpie/CaptionButtonsControl.idl",
    "content": "namespace Magpie {\n\t[default_interface]\n\truntimeclass CaptionButtonsControl : Windows.UI.Xaml.Controls.UserControl {\n\t\tCaptionButtonsControl();\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/CaptionButtonsControl.xaml",
    "content": "﻿<UserControl x:Class=\"Magpie.CaptionButtonsControl\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n             xmlns:local=\"using:Magpie\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n             Background=\"Transparent\"\n             mc:Ignorable=\"d\">\n\t<UserControl.Resources>\n\t\t<ResourceDictionary>\n\t\t\t<ResourceDictionary.ThemeDictionaries>\n\t\t\t\t<ResourceDictionary x:Key=\"Light\">\n\t\t\t\t\t<Color x:Key=\"CaptionButtonForegroundColor\">Black</Color>\n\n\t\t\t\t\t<StaticResource x:Key=\"CaptionButtonForeground\"\n\t\t\t\t\t                ResourceKey=\"CaptionButtonForegroundColor\" />\n\t\t\t\t\t<StaticResource x:Key=\"CaptionButtonForegroundPointerOver\"\n\t\t\t\t\t                ResourceKey=\"CaptionButtonForegroundColor\" />\n\t\t\t\t\t<SolidColorBrush x:Key=\"CaptionButtonForegroundPressed\"\n\t\t\t\t\t                 Opacity=\"0.7\"\n\t\t\t\t\t                 Color=\"{StaticResource CaptionButtonForegroundColor}\" />\n\t\t\t\t\t<SolidColorBrush x:Key=\"CaptionButtonForegroundNotActive\"\n\t\t\t\t\t                 Opacity=\"0.38\"\n\t\t\t\t\t                 Color=\"{StaticResource CaptionButtonForegroundColor}\" />\n\t\t\t\t\t<SolidColorBrush x:Key=\"CaptionButtonBackgroundPointerOver\"\n\t\t\t\t\t                 Opacity=\"0.06\"\n\t\t\t\t\t                 Color=\"{StaticResource CaptionButtonForegroundColor}\" />\n\t\t\t\t\t<SolidColorBrush x:Key=\"CaptionButtonBackgroundPressed\"\n\t\t\t\t\t                 Opacity=\"0.04\"\n\t\t\t\t\t                 Color=\"{StaticResource CaptionButtonForegroundColor}\" />\n\t\t\t\t</ResourceDictionary>\n\t\t\t\t<ResourceDictionary x:Key=\"Dark\">\n\t\t\t\t\t<Color x:Key=\"CaptionButtonForegroundColor\">White</Color>\n\n\t\t\t\t\t<StaticResource x:Key=\"CaptionButtonForeground\"\n\t\t\t\t\t                ResourceKey=\"CaptionButtonForegroundColor\" />\n\t\t\t\t\t<StaticResource x:Key=\"CaptionButtonForegroundPointerOver\"\n\t\t\t\t\t                ResourceKey=\"CaptionButtonForegroundColor\" />\n\t\t\t\t\t<SolidColorBrush x:Key=\"CaptionButtonForegroundPressed\"\n\t\t\t\t\t                 Opacity=\"0.7\"\n\t\t\t\t\t                 Color=\"{StaticResource CaptionButtonForegroundColor}\" />\n\t\t\t\t\t<SolidColorBrush x:Key=\"CaptionButtonForegroundNotActive\"\n\t\t\t\t\t                 Opacity=\"0.35\"\n\t\t\t\t\t                 Color=\"{StaticResource CaptionButtonForegroundColor}\" />\n\t\t\t\t\t<SolidColorBrush x:Key=\"CaptionButtonBackgroundPointerOver\"\n\t\t\t\t\t                 Opacity=\"0.06\"\n\t\t\t\t\t                 Color=\"{StaticResource CaptionButtonForegroundColor}\" />\n\t\t\t\t\t<SolidColorBrush x:Key=\"CaptionButtonBackgroundPressed\"\n\t\t\t\t\t                 Opacity=\"0.04\"\n\t\t\t\t\t                 Color=\"{StaticResource CaptionButtonForegroundColor}\" />\n\t\t\t\t</ResourceDictionary>\n\t\t\t</ResourceDictionary.ThemeDictionaries>\n\n\t\t\t<Color x:Key=\"CaptionButtonBackground\">Transparent</Color>\n\t\t\t<x:Double x:Key=\"CaptionButtonWidth\">46</x:Double>\n\t\t\t<x:Double x:Key=\"CaptionButtonHeight\">32</x:Double>\n\n\t\t\t<!--  默认为关闭图标，每个按钮按需覆盖  -->\n\t\t\t<x:String x:Key=\"CaptionButtonGlyph\">&#xE8BB;</x:String>\n\n\t\t\t<Style x:Key=\"CaptionButton\"\n\t\t\t       TargetType=\"Button\">\n\t\t\t\t<Setter Property=\"BorderThickness\" Value=\"0\" />\n\t\t\t\t<Setter Property=\"Background\" Value=\"{StaticResource CaptionButtonBackground}\" />\n\t\t\t\t<Setter Property=\"IsTabStop\" Value=\"False\" />\n\t\t\t\t<Setter Property=\"Width\" Value=\"{StaticResource CaptionButtonWidth}\" />\n\t\t\t\t<Setter Property=\"MinWidth\" Value=\"{StaticResource CaptionButtonWidth}\" />\n\t\t\t\t<Setter Property=\"Height\" Value=\"{StaticResource CaptionButtonHeight}\" />\n\t\t\t\t<Setter Property=\"Template\">\n\t\t\t\t\t<Setter.Value>\n\t\t\t\t\t\t<ControlTemplate TargetType=\"Button\">\n\t\t\t\t\t\t\t<Border x:Name=\"ButtonBaseElement\"\n\t\t\t\t\t\t\t        Padding=\"{TemplateBinding Padding}\"\n\t\t\t\t\t\t\t        Background=\"{TemplateBinding Background}\"\n\t\t\t\t\t\t\t        BackgroundSizing=\"{TemplateBinding BackgroundSizing}\"\n\t\t\t\t\t\t\t        BorderBrush=\"{TemplateBinding BorderBrush}\"\n\t\t\t\t\t\t\t        BorderThickness=\"{TemplateBinding BorderThickness}\"\n\t\t\t\t\t\t\t        CornerRadius=\"{TemplateBinding CornerRadius}\">\n\t\t\t\t\t\t\t\t<Viewbox Width=\"10\"\n\t\t\t\t\t\t\t\t         Height=\"10\">\n\t\t\t\t\t\t\t\t\t<FontIcon x:Name=\"ButtonIcon\"\n\t\t\t\t\t\t\t\t\t          FontFamily=\"{ThemeResource SymbolThemeFontFamily}\"\n\t\t\t\t\t\t\t\t\t          Foreground=\"{ThemeResource CaptionButtonForeground}\"\n\t\t\t\t\t\t\t\t\t          Glyph=\"{ThemeResource CaptionButtonGlyph}\" />\n\t\t\t\t\t\t\t\t</Viewbox>\n\n\t\t\t\t\t\t\t\t<VisualStateManager.VisualStateGroups>\n\t\t\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"CommonStates\">\n\t\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Normal\">\n\t\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ButtonBaseElement.Background\" Value=\"{StaticResource CaptionButtonBackground}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ButtonIcon.Foreground\" Value=\"{ThemeResource CaptionButtonForeground}\" />\n\t\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t</VisualState>\n\n\t\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"PointerOver\">\n\t\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ButtonBaseElement.Background\" Value=\"{ThemeResource CaptionButtonBackgroundPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ButtonIcon.Foreground\" Value=\"{ThemeResource CaptionButtonForegroundPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t</VisualState>\n\n\t\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Pressed\">\n\t\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ButtonBaseElement.Background\" Value=\"{ThemeResource CaptionButtonBackgroundPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ButtonIcon.Foreground\" Value=\"{ThemeResource CaptionButtonForegroundPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t</VisualState>\n\n\t\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"NotActive\">\n\t\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ButtonIcon.Foreground\" Value=\"{ThemeResource CaptionButtonForegroundNotActive}\" />\n\t\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t\t</VisualStateGroup>\n\n\t\t\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"MinMaxStates\">\n\t\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"WindowStateNormal\" />\n\n\t\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"WindowStateMaximized\">\n\t\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ButtonIcon.Glyph\" Value=\"&#xE923;\" />\n\t\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t\t</VisualStateGroup>\n\t\t\t\t\t\t\t\t</VisualStateManager.VisualStateGroups>\n\t\t\t\t\t\t\t</Border>\n\t\t\t\t\t\t</ControlTemplate>\n\t\t\t\t\t</Setter.Value>\n\t\t\t\t</Setter>\n\t\t\t</Style>\n\t\t</ResourceDictionary>\n\t</UserControl.Resources>\n\n\t<local:SimpleStackPanel Orientation=\"Horizontal\">\n\t\t<Button x:Name=\"MinimizeButton\"\n\t\t        Style=\"{StaticResource CaptionButton}\">\n\t\t\t<Button.Resources>\n\t\t\t\t<x:String x:Key=\"CaptionButtonGlyph\">&#xE921;</x:String>\n\t\t\t</Button.Resources>\n\t\t</Button>\n\t\t<Button x:Name=\"MaximizeButton\"\n\t\t        Style=\"{StaticResource CaptionButton}\">\n\t\t\t<Button.Resources>\n\t\t\t\t<x:String x:Key=\"CaptionButtonGlyph\">&#xE922;</x:String>\n\t\t\t</Button.Resources>\n\t\t</Button>\n\t\t<Button x:Name=\"CloseButton\"\n\t\t        Style=\"{StaticResource CaptionButton}\">\n\t\t\t<Button.Resources>\n\t\t\t\t<ResourceDictionary>\n\t\t\t\t\t<x:String x:Key=\"CaptionButtonGlyph\">&#xE8BB;</x:String>\n\n\t\t\t\t\t<Color x:Key=\"CloseButtonColor\">#C42B1C</Color>\n\t\t\t\t\t<SolidColorBrush x:Key=\"CaptionButtonBackgroundPointerOver\"\n\t\t\t\t\t                 Color=\"{StaticResource CloseButtonColor}\" />\n\t\t\t\t\t<SolidColorBrush x:Key=\"CaptionButtonBackgroundPressed\"\n\t\t\t\t\t                 Opacity=\"0.9\"\n\t\t\t\t\t                 Color=\"{StaticResource CloseButtonColor}\" />\n\t\t\t\t\t<SolidColorBrush x:Key=\"CaptionButtonForegroundPointerOver\"\n\t\t\t\t\t                 Color=\"White\" />\n\t\t\t\t\t<SolidColorBrush x:Key=\"CaptionButtonForegroundPressed\"\n\t\t\t\t\t                 Opacity=\"0.7\"\n\t\t\t\t\t                 Color=\"White\" />\n\t\t\t\t</ResourceDictionary>\n\t\t\t</Button.Resources>\n\t\t</Button>\n\t</local:SimpleStackPanel>\n</UserControl>\n"
  },
  {
    "path": "src/Magpie/ContentDialogHelper.cpp",
    "content": "#include \"pch.h\"\n#include \"ContentDialogHelper.h\"\n\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Controls;\n\nnamespace Magpie {\n\nstatic weak_ref<ContentDialog> activeDialog{ nullptr };\n\nIAsyncOperation<ContentDialogResult> ContentDialogHelper::ShowAsync(ContentDialog dialog) {\n\tassert(activeDialog == nullptr);\n\n\tactiveDialog = dialog;\n\tContentDialogResult result = co_await dialog.ShowAsync();\n\tactiveDialog = nullptr;\n\tco_return result;\n}\n\nbool ContentDialogHelper::IsAnyDialogOpen() noexcept {\n\treturn activeDialog != nullptr;\n}\n\nvoid ContentDialogHelper::CloseActiveDialog() {\n\tif (activeDialog == nullptr) {\n\t\treturn;\n\t}\n\n\tif (auto dialog = activeDialog.get()) {\n\t\tdialog.Hide();\n\t}\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ContentDialogHelper.h",
    "content": "#pragma once\n\nnamespace Magpie {\n\nstruct ContentDialogHelper {\n\tstatic winrt::IAsyncOperation<winrt::ContentDialogResult> ShowAsync(winrt::ContentDialog dialog);\n\tstatic bool IsAnyDialogOpen() noexcept;\n\tstatic void CloseActiveDialog();\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ControlHelper.cpp",
    "content": "#include \"pch.h\"\n#include \"ControlHelper.h\"\n#include \"App.h\"\n#include \"RootPage.h\"\n\nusing namespace winrt;\nusing namespace winrt::Magpie::implementation;\nusing namespace Windows::UI::Xaml::Controls;\n\nnamespace Magpie {\n\nvoid ControlHelper::ComboBox_DropDownOpened(const IInspectable& sender) {\n\t// 修复下拉框不适配主题的问题\n\t// https://github.com/microsoft/microsoft-ui-xaml/issues/6622\n\tconst auto& rootPage = App::Get().RootPage();\n\tXamlHelper::UpdateThemeOfXamlPopups(rootPage->XamlRoot(), rootPage->ActualTheme());\n\n\t// 修复下拉框位置不正确的问题\n\t// https://github.com/microsoft/microsoft-ui-xaml/issues/4551\n\tComboBox comboBox = sender.try_as<ComboBox>();\n\tIInspectable selectedItem = comboBox.SelectedItem();\n\tif (!selectedItem) {\n\t\treturn;\n\t}\n\n\tif (std::optional<hstring> str = selectedItem.try_as<hstring>()) {\n\t\tcomboBox.PlaceholderText(*str);\n\t} else if (ContentControl container = selectedItem.try_as<ContentControl>()) {\n\t\tif (std::optional<hstring> strContent = container.Content().try_as<hstring>()) {\n\t\t\tcomboBox.PlaceholderText(*strContent);\n\t\t}\n\t}\n}\n\nvoid ControlHelper::NumberBox_Loaded(const IInspectable& sender) {\n\t// 确保模板已应用\n\tsender.try_as<MUXC::NumberBox>().ApplyTemplate();\n\n\t// 设置内部 TextBox 的右键菜单\n\tsender.try_as<IControlProtected>()\n\t\t.GetTemplateChild(L\"InputBox\")\n\t\t.try_as<TextBox>()\n\t\t.ContextFlyout(winrt::Magpie::TextMenuFlyout());\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ControlHelper.h",
    "content": "#pragma once\n#include \"XamlHelper.h\"\n\nnamespace Magpie {\n\n// 用于修复 WinUI 控件存在的问题。因为官方毫无作为，我不得不使用这些 hack\nstruct ControlHelper {\n\t// 修复 ComboBox 下拉框的主题和位置\n\tstatic void ComboBox_DropDownOpened(const winrt::IInspectable& sender);\n\n\t// 设置 NumberBox 内部 TextBox 的右键菜单\n\tstatic void NumberBox_Loaded(const winrt::IInspectable& sender);\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ControlSizeTrigger.cpp",
    "content": "// 移植自 https://github.com/CommunityToolkit/Windows/blob/bef863ca70bb1edf8c940198dd5cc74afa5d2aab/components/Triggers/src/ControlSizeTrigger.cs\n\n#include \"pch.h\"\n#include \"ControlSizeTrigger.h\"\n#if __has_include(\"ControlSizeTrigger.g.cpp\")\n#include \"ControlSizeTrigger.g.cpp\"\n#endif\n\nnamespace winrt::Magpie::implementation {\n\nDependencyProperty ControlSizeTrigger::_canTriggerProperty{ nullptr };\nDependencyProperty ControlSizeTrigger::_maxWidthProperty{ nullptr };\nDependencyProperty ControlSizeTrigger::_minWidthProperty{ nullptr };\nDependencyProperty ControlSizeTrigger::_maxHeightProperty{ nullptr };\nDependencyProperty ControlSizeTrigger::_minHeightProperty{ nullptr };\nDependencyProperty ControlSizeTrigger::_targetElementProperty{ nullptr };\n\nvoid ControlSizeTrigger::RegisterDependencyProperties() {\n\t_canTriggerProperty = DependencyProperty::Register(\n\t\tL\"CanTrigger\",\n\t\txaml_typename<bool>(),\n\t\txaml_typename<Magpie::ControlSizeTrigger>(),\n\t\tPropertyMetadata(box_value(true), &ControlSizeTrigger::_OnPropertyChanged)\n\t);\n\n\t_maxWidthProperty = DependencyProperty::Register(\n\t\tL\"MaxWidth\",\n\t\txaml_typename<double>(),\n\t\txaml_typename<Magpie::ControlSizeTrigger>(),\n\t\tPropertyMetadata(box_value(std::numeric_limits<double>::infinity()), &ControlSizeTrigger::_OnPropertyChanged)\n\t);\n\n\t_minWidthProperty = DependencyProperty::Register(\n\t\tL\"MinWidth\",\n\t\txaml_typename<double>(),\n\t\txaml_typename<Magpie::ControlSizeTrigger>(),\n\t\tPropertyMetadata(box_value(0.0), &ControlSizeTrigger::_OnPropertyChanged)\n\t);\n\n\t_maxHeightProperty = DependencyProperty::Register(\n\t\tL\"MaxHeight\",\n\t\txaml_typename<double>(),\n\t\txaml_typename<Magpie::ControlSizeTrigger>(),\n\t\tPropertyMetadata(box_value(std::numeric_limits<double>::infinity()), &ControlSizeTrigger::_OnPropertyChanged)\n\t);\n\n\t_minHeightProperty = DependencyProperty::Register(\n\t\tL\"MinHeight\",\n\t\txaml_typename<double>(),\n\t\txaml_typename<Magpie::ControlSizeTrigger>(),\n\t\tPropertyMetadata(box_value(0.0), &ControlSizeTrigger::_OnPropertyChanged)\n\t);\n\n\t_targetElementProperty = DependencyProperty::Register(\n\t\tL\"TargetElement\",\n\t\txaml_typename<FrameworkElement>(),\n\t\txaml_typename<Magpie::ControlSizeTrigger>(),\n\t\tPropertyMetadata(nullptr, &ControlSizeTrigger::_OnTargetElementChanged)\n\t);\n}\n\nvoid ControlSizeTrigger::_OnPropertyChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {\n\tget_self<ControlSizeTrigger>(sender.try_as<Magpie::ControlSizeTrigger>())->_UpdateTrigger();\n}\n\nvoid ControlSizeTrigger::_OnTargetElementChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const& e) {\n\tControlSizeTrigger* that = get_self<ControlSizeTrigger>(sender.try_as<Magpie::ControlSizeTrigger>());\n\n\tthat->_targetElementSizeChangedRevoker.revoke();\n\n\tif (IInspectable newValue = e.NewValue()) {\n\t\tthat->_targetElementSizeChangedRevoker = newValue.try_as<FrameworkElement>().SizeChanged(auto_revoke,\n\t\t\t[that](IInspectable const&, SizeChangedEventArgs const&) {\n\t\t\t\tthat->_UpdateTrigger();\n\t\t\t}\n\t\t);\n\t}\n\n\tthat->_UpdateTrigger();\n}\n\nvoid ControlSizeTrigger::_UpdateTrigger() {\n\tconst FrameworkElement targetElement = TargetElement();\n\n\tif (!targetElement || !CanTrigger()) {\n\t\tSetActive(false);\n\t\treturn;\n\t}\n\n\tconst double actualWidth = targetElement.ActualWidth();\n\tconst double actualHeight = targetElement.ActualHeight();\n\tSetActive(\n\t\tactualWidth >= MinWidth() &&\n\t\tactualWidth < MaxWidth() &&\n\t\tactualHeight >= MinHeight() &&\n\t\tactualHeight < MaxHeight()\n\t);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ControlSizeTrigger.h",
    "content": "#pragma once\n#include \"ControlSizeTrigger.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct ControlSizeTrigger : ControlSizeTriggerT<ControlSizeTrigger> {\n    static void RegisterDependencyProperties();\n    static DependencyProperty CanTriggerProperty() { return _canTriggerProperty; }\n    static DependencyProperty MaxWidthProperty() { return _maxWidthProperty; }\n    static DependencyProperty MinWidthProperty() { return _minWidthProperty; }\n    static DependencyProperty MaxHeightProperty() { return _maxHeightProperty; }\n    static DependencyProperty MinHeightProperty() { return _minHeightProperty; }\n    static DependencyProperty TargetElementProperty() { return _targetElementProperty; }\n\n    bool CanTrigger() { return GetValue(_canTriggerProperty).try_as<bool>().value(); }\n    void CanTrigger(bool value) { SetValue(_canTriggerProperty, box_value(value)); }\n\n    double MaxWidth() { return GetValue(_maxWidthProperty).try_as<double>().value(); }\n    void MaxWidth(double value) { SetValue(_maxWidthProperty, box_value(value)); }\n\n    double MinWidth() { return GetValue(_minWidthProperty).try_as<double>().value(); }\n    void MinWidth(double value) { SetValue(_minWidthProperty, box_value(value)); }\n\n    double MaxHeight() { return GetValue(_maxHeightProperty).try_as<double>().value(); }\n    void MaxHeight(double value) { SetValue(_maxHeightProperty, box_value(value)); }\n\n    double MinHeight() { return GetValue(_minHeightProperty).try_as<double>().value(); }\n    void MinHeight(double value) { SetValue(_minHeightProperty, box_value(value)); }\n\n    FrameworkElement TargetElement() { return GetValue(_targetElementProperty).try_as<FrameworkElement>(); }\n    void TargetElement(FrameworkElement const& value) { SetValue(_targetElementProperty, box_value(value)); }\n\nprivate:\n    static DependencyProperty _canTriggerProperty;\n    static DependencyProperty _maxWidthProperty;\n    static DependencyProperty _minWidthProperty;\n    static DependencyProperty _maxHeightProperty;\n    static DependencyProperty _minHeightProperty;\n    static DependencyProperty _targetElementProperty;\n\n    static void _OnPropertyChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&);\n    static void _OnTargetElementChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const& );\n\n    void _UpdateTrigger();\n\n    FrameworkElement::SizeChanged_revoker _targetElementSizeChangedRevoker;\n};\n\n}\n\nBASIC_FACTORY(ControlSizeTrigger)\n"
  },
  {
    "path": "src/Magpie/ControlSizeTrigger.idl",
    "content": "namespace Magpie {\n    runtimeclass ControlSizeTrigger : Windows.UI.Xaml.StateTriggerBase {\n        ControlSizeTrigger();\n\n        Boolean CanTrigger;\n        Double MaxWidth;\n        Double MinWidth;\n        Double MaxHeight;\n        Double MinHeight;\n        Windows.UI.Xaml.FrameworkElement TargetElement;\n\n        static Windows.UI.Xaml.DependencyProperty CanTriggerProperty { get; };\n        static Windows.UI.Xaml.DependencyProperty MaxWidthProperty { get; };\n        static Windows.UI.Xaml.DependencyProperty MinWidthProperty { get; };\n        static Windows.UI.Xaml.DependencyProperty MaxHeightProperty { get; };\n        static Windows.UI.Xaml.DependencyProperty MinHeightProperty { get; };\n        static Windows.UI.Xaml.DependencyProperty TargetElementProperty{ get; };\n    }\n}\n"
  },
  {
    "path": "src/Magpie/EffectHelper.h",
    "content": "#pragma once\n\nnamespace Magpie {\n\nstruct EffectHelper {\n\tstatic std::wstring_view GetDisplayName(std::wstring_view fullName) noexcept {\n\t\tsize_t delimPos = fullName.find_last_of(L'\\\\');\n\t\treturn delimPos != std::wstring::npos ? fullName.substr(delimPos + 1) : fullName;\n\t}\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/EffectParametersViewModel.cpp",
    "content": "#include \"pch.h\"\n#include \"EffectParametersViewModel.h\"\n#if __has_include(\"ScalingModeBoolParameter.g.cpp\")\n#include \"ScalingModeBoolParameter.g.cpp\"\n#endif\n#if __has_include(\"ScalingModeFloatParameter.g.cpp\")\n#include \"ScalingModeFloatParameter.g.cpp\"\n#endif\n#if __has_include(\"EffectParametersViewModel.g.cpp\")\n#include \"EffectParametersViewModel.g.cpp\"\n#endif\n#include \"StrHelper.h\"\n#include \"AppSettings.h\"\n#include \"ScalingModesService.h\"\n#include \"ScalingMode.h\"\n#include \"EffectsService.h\"\n#include \"EffectDesc.h\"\n#include \"App.h\"\n\nusing namespace Magpie;\n\nnamespace winrt::Magpie::implementation {\n\n// 限制保存频率\n// 1 秒内没有新的调用才执行保存\nstatic fire_and_forget LazySaveAppSettings() {\n\tusing namespace std::chrono;\n\n\tstatic steady_clock::time_point lastInvokeTime;\n\tstatic bool sleeping = false;\n\n\tlastInvokeTime = steady_clock::now();\n\n\tif (sleeping) {\n\t\tco_return;\n\t}\n\n\tsleeping = true;\n\t\n\tco_await 1s;\n\n\twhile (true) {\n\t\tint duration = (int)duration_cast<milliseconds>(steady_clock::now() - lastInvokeTime).count();\n\t\tif (duration >= 999) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// 如果与 lastInvokeTime 相差不到 1s，则继续等待\n\t\tco_await milliseconds(1000 - duration);\n\t}\n\n\t// 回到主线程\n\tco_await App::Get().Dispatcher();\n\n\tsleeping = false;\n\tAppSettings::Get().SaveAsync();\n}\n\nEffectParametersViewModel::EffectParametersViewModel(uint32_t scalingModeIdx, uint32_t effectIdx)\n\t: _scalingModeIdx(scalingModeIdx), _effectIdx(effectIdx)\n{\n\tScalingMode& scalingMode = ScalingModesService::Get().GetScalingMode(_scalingModeIdx);\n\t_effectInfo = EffectsService::Get().GetEffect(scalingMode.effects[_effectIdx].name);\n\n\tphmap::flat_hash_map<std::wstring, float>& params = _Data();\n\n\tstd::vector<IInspectable> boolParams;\n\tstd::vector<IInspectable> floatParams;\n\tfor (uint32_t i = 0, size = (uint32_t)_effectInfo->params.size(); i < size; ++i) {\n\t\tconst EffectParameterDesc& param = _effectInfo->params[i];\n\n\t\tstd::optional<float> paramValue;\n\t\t{\n\t\t\tauto it = params.find(StrHelper::UTF8ToUTF16(param.name));\n\t\t\tif (it != params.end()) {\n\t\t\t\tparamValue = it->second;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (param.constant.index() == 0) {\n\t\t\tconst EffectConstant<float>& constant = std::get<0>(param.constant);\n\t\t\tauto floatParamItem = make_self<ScalingModeFloatParameter>(\n\t\t\t\ti,\n\t\t\t\thstring(StrHelper::UTF8ToUTF16(param.label.empty() ? param.name : param.label)),\n\t\t\t\tparamValue.has_value() ? *paramValue : constant.defaultValue,\n\t\t\t\tconstant.minValue,\n\t\t\t\tconstant.maxValue,\n\t\t\t\tconstant.step\n\t\t\t);\n\t\t\tfloatParamItem->PropertyChanged({ this, &EffectParametersViewModel::_ScalingModeFloatParameter_PropertyChanged });\n\t\t\tfloatParams.push_back(*floatParamItem);\n\t\t} else {\n\t\t\tconst EffectConstant<int>& constant = std::get<1>(param.constant);\n\t\t\tif (constant.minValue == 0 && constant.maxValue == 1 && constant.step == 1) {\n\t\t\t\tauto boolParamItem = make_self<ScalingModeBoolParameter>(\n\t\t\t\t\ti,\n\t\t\t\t\thstring(StrHelper::UTF8ToUTF16(param.label.empty() ? param.name : param.label)),\n\t\t\t\t\tparamValue.has_value() ? std::abs(*paramValue) > FLOAT_EPSILON<float> : (bool)constant.defaultValue\n\t\t\t\t);\n\t\t\t\tboolParamItem->PropertyChanged({ this, &EffectParametersViewModel::_ScalingModeBoolParameter_PropertyChanged });\n\t\t\t\tboolParams.push_back(*boolParamItem);\n\t\t\t} else {\n\t\t\t\tauto floatParamItem = make_self<ScalingModeFloatParameter>(\n\t\t\t\t\ti,\n\t\t\t\t\thstring(StrHelper::UTF8ToUTF16(param.label.empty() ? param.name : param.label)),\n\t\t\t\t\tparamValue.has_value() ? *paramValue : (float)constant.defaultValue,\n\t\t\t\t\t(float)constant.minValue,\n\t\t\t\t\t(float)constant.maxValue,\n\t\t\t\t\t(float)constant.step\n\t\t\t\t);\n\t\t\t\tfloatParamItem->PropertyChanged({ this, &EffectParametersViewModel::_ScalingModeFloatParameter_PropertyChanged });\n\t\t\t\tfloatParams.push_back(*floatParamItem);\n\t\t\t}\n\t\t}\n\t}\n\tif (!boolParams.empty()) {\n\t\t_boolParams = single_threaded_vector(std::move(boolParams));\n\t}\n\tif (!floatParams.empty()) {\n\t\t_floatParams = single_threaded_vector(std::move(floatParams));\n\t}\n}\n\n// 应确保被删除后依然处于合法的状态，调用任何方法都不会崩溃，见 ScalingModeItem::_IsRemoved\nbool EffectParametersViewModel::_IsRemoved() const noexcept {\n\treturn _scalingModeIdx == std::numeric_limits<uint32_t>::max() ||\n\t\t_effectIdx == std::numeric_limits<uint32_t>::max();\n}\n\nvoid EffectParametersViewModel::_ScalingModeBoolParameter_PropertyChanged(\n\tIInspectable const& sender,\n\tPropertyChangedEventArgs const& args\n) {\n\tif (_IsRemoved() || args.PropertyName() != L\"Value\") {\n\t\treturn;\n\t}\n\n\tScalingModeBoolParameter* boolParamImpl =\n\t\tget_self<ScalingModeBoolParameter>(sender.try_as<Magpie::ScalingModeBoolParameter>());\n\tconst std::string& effectName = _effectInfo->params[boolParamImpl->Index()].name;\n\t_Data()[StrHelper::UTF8ToUTF16(effectName)] = (float)boolParamImpl->Value();\n\n\tLazySaveAppSettings();\n}\n\nvoid EffectParametersViewModel::_ScalingModeFloatParameter_PropertyChanged(\n\tIInspectable const& sender,\n\tPropertyChangedEventArgs const& args\n) {\n\tif (_IsRemoved() || args.PropertyName() != L\"Value\") {\n\t\treturn;\n\t}\n\n\tScalingModeFloatParameter* floatParamImpl =\n\t\tget_self<ScalingModeFloatParameter>(sender.try_as<Magpie::ScalingModeFloatParameter>());\n\tconst std::string& effectName = _effectInfo->params[floatParamImpl->Index()].name;\n\t_Data()[StrHelper::UTF8ToUTF16(effectName)] = (float)floatParamImpl->Value();\n\n\tLazySaveAppSettings();\n}\n\nphmap::flat_hash_map<std::wstring, float>& EffectParametersViewModel::_Data() const {\n\tScalingMode& scalingMode = ScalingModesService::Get().GetScalingMode(_scalingModeIdx);\n\treturn scalingMode.effects[_effectIdx].parameters;\n}\n\nhstring ScalingModeFloatParameter::ValueText() const noexcept {\n\treturn App::DoubleFormatter().FormatDouble(_value);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/EffectParametersViewModel.h",
    "content": "#pragma once\n#include \"EffectParametersViewModel.g.h\"\n#include \"ScalingModeBoolParameter.g.h\"\n#include \"ScalingModeFloatParameter.g.h\"\n#include <parallel_hashmap/phmap.h>\n\nnamespace Magpie {\nstruct EffectInfo;\n}\n\nnamespace winrt::Magpie::implementation {\n\nstruct ScalingModeBoolParameter : ScalingModeBoolParameterT<ScalingModeBoolParameter>,\n                                  wil::notify_property_changed_base<ScalingModeBoolParameter> {\n\tScalingModeBoolParameter(uint32_t index, const hstring& label, bool initValue)\n\t\t: _index(index), _label(box_value(label)), _value(initValue) {\n\t}\n\tuint32_t Index() const noexcept {\n\t\treturn _index;\n\t}\n\n\tbool Value() const noexcept {\n\t\treturn _value;\n\t}\n\n\tvoid Value(bool value) {\n\t\t_value = value;\n\t\tRaisePropertyChanged(L\"Value\");\n\t}\n\n\tIInspectable Label() const noexcept {\n\t\treturn _label;\n\t}\n\nprivate:\n\tconst uint32_t _index;\n\tIInspectable _label;\n\tbool _value;\n};\n\nstruct ScalingModeFloatParameter : ScalingModeFloatParameterT<ScalingModeFloatParameter>,\n                                   wil::notify_property_changed_base<ScalingModeFloatParameter> {\n\tScalingModeFloatParameter(uint32_t index, const hstring& label, float initValue, float minimum, float maximum, float step)\n\t\t: _index(index), _label(label), _minimum(minimum), _maximum(maximum), _step(step), _value(initValue) {\n\t}\n\n\tuint32_t Index() const noexcept {\n\t\treturn _index;\n\t}\n\n\tdouble Value() const noexcept {\n\t\treturn _value;\n\t}\n\n\tvoid Value(double value) {\n\t\t_value = value;\n\t\tRaisePropertyChanged(L\"Value\");\n\t\tRaisePropertyChanged(L\"ValueText\");\n\t}\n\n\thstring ValueText() const noexcept;\n\n\thstring Label() const noexcept {\n\t\treturn _label;\n\t}\n\n\tdouble Minimum() const noexcept {\n\t\treturn _minimum;\n\t}\n\n\tdouble Maximum() const noexcept {\n\t\treturn _maximum;\n\t}\n\n\tdouble Step() const noexcept {\n\t\treturn _step;\n\t}\n\nprivate:\n\tconst uint32_t _index;\n\tconst hstring _label;\n\tconst double _minimum;\n\tconst double _maximum;\n\tconst double _step;\n\tdouble _value;\n};\n\nstruct EffectParametersViewModel : EffectParametersViewModelT<EffectParametersViewModel> {\n\tEffectParametersViewModel(uint32_t scalingModeIdx, uint32_t effectIdx);\n\n\tuint32_t ScalingModeIdx() const noexcept {\n\t\treturn _scalingModeIdx;\n\t}\n\n\tvoid ScalingModeIdx(uint32_t value) noexcept {\n\t\t_scalingModeIdx = value;\n\t}\n\n\tuint32_t EffectIdx() const noexcept {\n\t\treturn _effectIdx;\n\t}\n\n\tvoid EffectIdx(uint32_t value) noexcept {\n\t\t_effectIdx = value;\n\t}\n\n\tIVector<IInspectable> BoolParams() const noexcept {\n\t\treturn _boolParams;\n\t}\n\n\tIVector<IInspectable> FloatParams() const noexcept {\n\t\treturn _floatParams;\n\t}\n\n\tbool HasBoolParams() const noexcept {\n\t\treturn _boolParams != nullptr;\n\t}\n\n\tbool HasFloatParams() const noexcept {\n\t\treturn _floatParams != nullptr;\n\t}\n\nprivate:\n\tbool _IsRemoved() const noexcept;\n\n\tvoid _ScalingModeBoolParameter_PropertyChanged(IInspectable const& sender, PropertyChangedEventArgs const& args);\n\n\tvoid _ScalingModeFloatParameter_PropertyChanged(IInspectable const& sender, PropertyChangedEventArgs const& args);\n\n\tphmap::flat_hash_map<std::wstring, float>& _Data() const;\n\n\tIVector<IInspectable> _boolParams{ nullptr };\n\tIVector<IInspectable> _floatParams{ nullptr };\n\n\tuint32_t _scalingModeIdx;\n\tuint32_t _effectIdx;\n\tconst ::Magpie::EffectInfo* _effectInfo = nullptr;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/EffectParametersViewModel.idl",
    "content": "namespace Magpie {\n\truntimeclass ScalingModeBoolParameter : Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tBoolean Value;\n\t\t// Bind to CheckBox.Content\n\t\tObject Label { get; };\n\t}\n\n\truntimeclass ScalingModeFloatParameter : Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tDouble Value;\n\t\tString Label { get; };\n\t\tString ValueText { get; };\n\t\tDouble Minimum { get; };\n\t\tDouble Maximum { get; };\n\t\tDouble Step { get; };\n\t}\n\n\truntimeclass EffectParametersViewModel {\n\t\tUInt32 ScalingModeIdx;\n\t\tUInt32 EffectIdx;\n\n\t\tIVector<IInspectable> BoolParams { get; };\n\t\tIVector<IInspectable> FloatParams { get; };\n\t\tBoolean HasBoolParams { get; };\n\t\tBoolean HasFloatParams { get; };\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/EffectsService.cpp",
    "content": "#include \"pch.h\"\n#include \"CommonSharedConstants.h\"\n#include \"EffectCompiler.h\"\n#include \"EffectDesc.h\"\n#include \"EffectsService.h\"\n#include \"Logger.h\"\n#include \"StrHelper.h\"\n#include \"Win32Helper.h\"\n\nusing namespace winrt;\n\nnamespace Magpie {\n\nEffectInfo::EffectInfo() {}\n\nEffectInfo::~EffectInfo() {}\n\nstatic void ListEffects(std::vector<std::wstring>& result, std::wstring_view prefix = {}) {\n\tresult.reserve(80);\n\n\tWIN32_FIND_DATA findData{};\n\twil::unique_hfind hFind(FindFirstFileEx(\n\t\tStrHelper::Concat(CommonSharedConstants::EFFECTS_DIR, L\"\\\\\", prefix, L\"*\").c_str(),\n\t\tFindExInfoBasic, &findData, FindExSearchNameMatch, nullptr, FIND_FIRST_EX_LARGE_FETCH));\n\tif (!hFind) {\n\t\tLogger::Get().Win32Error(\"FindFirstFileEx 失败\");\n\t\treturn;\n\t}\n\n\tdo {\n\t\tstd::wstring_view fileName(findData.cFileName);\n\t\tif (fileName == L\".\" || fileName == L\"..\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (Win32Helper::DirExists(StrHelper::Concat(\n\t\t\tCommonSharedConstants::EFFECTS_DIR, L\"\\\\\", prefix, fileName).c_str())) {\n\t\t\tListEffects(result, StrHelper::Concat(prefix, fileName, L\"\\\\\"));\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!fileName.ends_with(L\".hlsl\")) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tresult.emplace_back(StrHelper::Concat(prefix, fileName.substr(0, fileName.size() - 5)));\n\t} while (FindNextFile(hFind.get(), &findData));\n}\n\nfire_and_forget EffectsService::Initialize() {\n\tco_await resume_background();\n\n\tstd::vector<std::wstring> effectNames;\n\tListEffects(effectNames);\n\n\tconst uint32_t nEffect = (uint32_t)effectNames.size();\n\t_effectsMap.reserve(nEffect);\n\t_effects.reserve(nEffect);\n\n\t// 用于同步 _effectsMap 和 _effects 的初始化\n\twil::srwlock srwLock;\n\n\t// 并行解析效果\n\tWin32Helper::RunParallel([&](uint32_t id) {\n\t\tEffectDesc effectDesc;\n\n\t\teffectDesc.name = StrHelper::UTF16ToUTF8(effectNames[id]);\n\t\tif (EffectCompiler::Compile(effectDesc, EffectCompilerFlags::NoCompile)) {\n\t\t\treturn;\n\t\t}\n\n\t\tEffectInfo effect;\n\t\teffect.name = std::move(effectNames[id]);\n\n\t\tif (effectDesc.sortName.empty()) {\n\t\t\teffect.sortName = effect.name;\n\t\t} else {\n\t\t\tsize_t pos = effect.name.find_last_of(L'\\\\');\n\t\t\tif (pos == std::wstring::npos) {\n\t\t\t\teffect.sortName = StrHelper::UTF8ToUTF16(effectDesc.sortName);\n\t\t\t} else {\n\t\t\t\teffect.sortName = StrHelper::Concat(\n\t\t\t\t\tstd::wstring_view(effect.name.c_str(), pos + 1),\n\t\t\t\t\tStrHelper::UTF8ToUTF16(effectDesc.sortName)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\teffect.params = std::move(effectDesc.params);\n\t\tif (effectDesc.GetOutputSizeExpr().first.empty()) {\n\t\t\teffect.flags |= EffectInfoFlags::CanScale;\n\t\t}\n\n\t\tauto lock = srwLock.lock_exclusive();\n\t\t_effectsMap.emplace(effect.name, (uint32_t)_effects.size());\n\t\t_effects.emplace_back(std::move(effect));\n\t}, nEffect);\n\n\t_initialized.store(true, std::memory_order_release);\n\t_initialized.notify_one();\n}\n\nvoid EffectsService::Uninitialize() {\n\t// 等待解析完成，防止退出时崩溃\n\t_WaitForInitialize();\n}\n\nconst std::vector<EffectInfo>& EffectsService::Effects() noexcept {\n\t_WaitForInitialize();\n\treturn _effects;\n}\n\nconst EffectInfo* EffectsService::GetEffect(std::wstring_view name) noexcept {\n\t_WaitForInitialize();\n\n\tauto it = _effectsMap.find(name);\n\treturn it != _effectsMap.end() ? &_effects[it->second] : nullptr;\n}\n\nvoid EffectsService::_WaitForInitialize() noexcept {\n\tif (_initializedCache) {\n\t\treturn;\n\t}\n\n\t_initialized.wait(false, std::memory_order_acquire);\n\t_initializedCache = true;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/EffectsService.h",
    "content": "#pragma once\n#include <parallel_hashmap/phmap.h>\n\nnamespace Magpie {\n\nstruct EffectParameterDesc;\n\nstruct EffectInfoFlags {\n\tstatic constexpr uint32_t CanScale = 1;\n};\n\nstruct EffectInfo {\n\tEffectInfo();\n\t~EffectInfo();\n\n\tstd::wstring name;\n\tstd::wstring sortName;\n\tstd::vector<EffectParameterDesc> params;\n\tuint32_t flags = 0;\t// EffectInfoFlags\n\n\tbool CanScale() const noexcept {\n\t\treturn flags & EffectInfoFlags::CanScale;\n\t}\n};\n\nclass EffectsService {\npublic:\n\tstatic EffectsService& Get() noexcept {\n\t\tstatic EffectsService instance;\n\t\treturn instance;\n\t}\n\n\tEffectsService(const EffectsService&) = delete;\n\tEffectsService(EffectsService&&) = delete;\n\n\twinrt::fire_and_forget Initialize();\n\n\tvoid Uninitialize();\n\n\tconst std::vector<EffectInfo>& Effects() noexcept;\n\n\tconst EffectInfo* GetEffect(std::wstring_view name) noexcept;\n\nprivate:\n\tEffectsService() = default;\n\n\tvoid _WaitForInitialize() noexcept;\n\n\tstd::vector<EffectInfo> _effects;\n\tphmap::flat_hash_map<std::wstring, uint32_t> _effectsMap;\n\tstd::atomic<bool> _initialized = false;\n\tbool _initializedCache = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/FileDialogHelper.cpp",
    "content": "#include \"pch.h\"\n#include \"FileDialogHelper.h\"\n#include \"Logger.h\"\n#include \"App.h\"\n#include \"MainWindow.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt::Magpie::implementation;\nusing namespace winrt;\n\nnamespace Magpie {\n\n// 出错返回 nullopt，取消返回空字符串\nstd::optional<std::filesystem::path> FileDialogHelper::OpenFileDialog(\n\tIFileDialog* fileDialog,\n\tFILEOPENDIALOGOPTIONS options\n) noexcept {\n\tFILEOPENDIALOGOPTIONS oldOptions{};\n\tfileDialog->GetOptions(&oldOptions);\n\tfileDialog->SetOptions(oldOptions | options | FOS_FORCEFILESYSTEM);\n\n\tif (fileDialog->Show(App::Get().MainWindow().Handle()) != S_OK) {\n\t\t// 被用户取消\n\t\treturn std::filesystem::path{};\n\t}\n\n\tcom_ptr<IShellItem> file;\n\tHRESULT hr = fileDialog->GetResult(file.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"IFileSaveDialog::GetResult 失败\", hr);\n\t\treturn std::nullopt;\n\t}\n\n\twil::unique_cotaskmem_string fileName;\n\thr = file->GetDisplayName(SIGDN_DESKTOPABSOLUTEPARSING, fileName.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"IShellItem::GetDisplayName 失败\", hr);\n\t\treturn std::nullopt;\n\t}\n\n\treturn std::filesystem::path(fileName.get());\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/FileDialogHelper.h",
    "content": "#pragma once\n#include <ShlObj.h>\n\nnamespace Magpie {\n\nstruct FileDialogHelper {\n\tstatic std::optional<std::filesystem::path> OpenFileDialog(\n\t\tIFileDialog* fileDialog,\n\t\tFILEOPENDIALOGOPTIONS options = 0\n\t) noexcept;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/HomePage.cpp",
    "content": "#include \"pch.h\"\n#include \"HomePage.h\"\n#if __has_include(\"HomePage.g.cpp\")\n#include \"HomePage.g.cpp\"\n#endif\n#include \"ControlHelper.h\"\n#include \"XamlHelper.h\"\n\nusing namespace ::Magpie;\n\nnamespace winrt::Magpie::implementation {\n\nvoid HomePage::TimerSlider_Loaded(IInspectable const& sender, RoutedEventArgs const&) const {\n\t// 修正 Slider 中 Tooltip 的主题\n\tXamlHelper::UpdateThemeOfTooltips(sender.try_as<DependencyObject>(), ActualTheme());\n}\n\nvoid HomePage::ComboBox_DropDownOpened(IInspectable const& sender, IInspectable const&) const {\n\tControlHelper::ComboBox_DropDownOpened(sender);\n}\n\nvoid HomePage::InfoBar_SizeChanged(IInspectable const& sender, SizeChangedEventArgs const&) const {\n\t// 修复 InfoBar 中 Tooltip 的主题\n\tXamlHelper::UpdateThemeOfTooltips(sender.try_as<DependencyObject>(), ActualTheme());\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/HomePage.h",
    "content": "#pragma once\n#include \"HomePage.g.h\"\n#include \"HomeViewModel.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct HomePage : HomePageT<HomePage> {\n\tvoid TimerSlider_Loaded(IInspectable const& sender, RoutedEventArgs const&) const;\n\n\twinrt::Magpie::HomeViewModel ViewModel() const noexcept {\n\t\treturn *_viewModel;\n\t}\n\n\tvoid ComboBox_DropDownOpened(IInspectable const& sender, IInspectable const&) const;\n\n\tvoid InfoBar_SizeChanged(IInspectable const& sender, SizeChangedEventArgs const&) const;\n\nprivate:\n\tcom_ptr<HomeViewModel> _viewModel = make_self<HomeViewModel>();\n};\n\n}\n\nBASIC_FACTORY(HomePage)\n"
  },
  {
    "path": "src/Magpie/HomePage.idl",
    "content": "namespace Magpie {\n\truntimeclass HomePage : Windows.UI.Xaml.Controls.Page {\n\t\tHomePage();\n\n\t\tHomeViewModel ViewModel { get; };\n\n\t\t// https://github.com/microsoft/microsoft-ui-xaml/issues/7579\n\t\tvoid UnloadObject(Windows.UI.Xaml.DependencyObject object);\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/HomePage.xaml",
    "content": "<Page x:Class=\"Magpie.HomePage\"\n      xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n      xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n      xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n      xmlns:local=\"using:Magpie\"\n      xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n      xmlns:muxc=\"using:Microsoft.UI.Xaml.Controls\"\n      mc:Ignorable=\"d\">\n\t<local:PageFrame x:Name=\"PageFrame\"\n\t                 x:Uid=\"Home_PageFrame\">\n\t\t<local:SimpleStackPanel Padding=\"0,4,0,0\"\n\t\t                        HorizontalAlignment=\"Stretch\"\n\t\t                        ChildrenTransitions=\"{StaticResource SettingsCardsAnimations}\"\n\t\t                        Spacing=\"{StaticResource SettingsGroupSpacing}\">\n\t\t\t<muxc:InfoBar x:Name=\"UpdateCard\"\n\t\t\t              Title=\"{x:Bind ViewModel.UpdateCardTitle, Mode=OneWay}\"\n\t\t\t              x:Load=\"{x:Bind ViewModel.ShowUpdateCard, Mode=OneWay}\"\n\t\t\t              IsOpen=\"{x:Bind ViewModel.ShowUpdateCard, Mode=TwoWay}\"\n\t\t\t              Severity=\"Informational\"\n\t\t\t              SizeChanged=\"InfoBar_SizeChanged\">\n\t\t\t\t<local:SimpleStackPanel Margin=\"0,0,0,16\"\n\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t<CheckBox x:Uid=\"Home_UpdateCard_AutoCheckForUpdates\"\n\t\t\t\t\t          IsChecked=\"{x:Bind ViewModel.IsAutoCheckForUpdates, Mode=TwoWay}\" />\n\t\t\t\t\t<local:WrapPanel ChildrenTransitions=\"{StaticResource SettingsCardsAnimations}\"\n\t\t\t\t\t                 HorizontalSpacing=\"8\"\n\t\t\t\t\t                 Orientation=\"Horizontal\"\n\t\t\t\t\t                 VerticalSpacing=\"6\">\n\t\t\t\t\t\t<Button x:Uid=\"Home_UpdateCard_DownloadAndInstall\"\n\t\t\t\t\t\t        Click=\"{x:Bind ViewModel.DownloadAndInstall}\"\n\t\t\t\t\t\t        Style=\"{StaticResource AccentButtonStyle}\" />\n\t\t\t\t\t\t<Button x:Uid=\"Home_UpdateCard_ReleaseNotes\"\n\t\t\t\t\t\t        Click=\"{x:Bind ViewModel.ReleaseNotes}\" />\n\t\t\t\t\t\t<Button x:Uid=\"Home_UpdateCard_RemindMeLater\"\n\t\t\t\t\t\t        Click=\"{x:Bind ViewModel.RemindMeLater}\" />\n\t\t\t\t\t</local:WrapPanel>\n\t\t\t\t</local:SimpleStackPanel>\n\t\t\t</muxc:InfoBar>\n\t\t\t<local:SettingsGroup x:Uid=\"Home_Activation\">\n\t\t\t\t<local:SettingsCard x:Uid=\"Home_Activation_FullscreenScaling\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE740;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<local:ShortcutControl x:Uid=\"Home_Activation_FullscreenScaling_ShortcutControl\">\n\t\t\t\t\t\t<local:ShortcutControl.Action>\n\t\t\t\t\t\t\t<local:ShortcutAction>Scale</local:ShortcutAction>\n\t\t\t\t\t\t</local:ShortcutControl.Action>\n\t\t\t\t\t</local:ShortcutControl>\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"Home_Activation_WindowedScaling\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE737;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<local:ShortcutControl x:Uid=\"Home_Activation_WindowedScaling_ShortcutControl\">\n\t\t\t\t\t\t<local:ShortcutControl.Action>\n\t\t\t\t\t\t\t<local:ShortcutAction>WindowedModeScale</local:ShortcutAction>\n\t\t\t\t\t\t</local:ShortcutControl.Action>\n\t\t\t\t\t</local:ShortcutControl>\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsExpander x:Uid=\"Home_Activation_Timer\"\n\t\t\t\t                        Description=\"{x:Bind ViewModel.TimerDescription, Mode=OneWay}\"\n\t\t\t\t                        IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE916;\" />\n\t\t\t\t\t</local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t<local:SettingsExpander.Content>\n\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t<Grid Visibility=\"{x:Bind ViewModel.IsTimerOn, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t<muxc:ProgressRing Width=\"30\"\n\t\t\t\t\t\t\t\t                   Height=\"30\"\n\t\t\t\t\t\t\t\t                   FlowDirection=\"RightToLeft\"\n\t\t\t\t\t\t\t\t                   IsActive=\"{x:Bind ViewModel.IsTimerOn, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t                   IsIndeterminate=\"False\"\n\t\t\t\t\t\t\t\t                   Maximum=\"1\"\n\t\t\t\t\t\t\t\t                   Minimum=\"0\"\n\t\t\t\t\t\t\t\t                   Value=\"{x:Bind ViewModel.TimerProgressRingValue, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t<TextBlock Margin=\"0,-1,0,0\"\n\t\t\t\t\t\t\t\t           HorizontalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t           Text=\"{x:Bind ViewModel.TimerLabelText, Mode=OneWay}\" />\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Button Click=\"{x:Bind ViewModel.ToggleTimerFullscreen}\"\n\t\t\t\t\t\t\t        IsEnabled=\"{x:Bind ViewModel.IsNotRunning, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t<FontIcon FontSize=\"{StaticResource StandardIconSize}\"\n\t\t\t\t\t\t\t\t\t          Glyph=\"&#xE740;\" />\n\t\t\t\t\t\t\t\t\t<TextBlock Text=\"{x:Bind ViewModel.TimerButtonText(x:False), Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<Button Click=\"{x:Bind ViewModel.ToggleTimerWindowed}\"\n\t\t\t\t\t\t\t        IsEnabled=\"{x:Bind ViewModel.IsNotRunning, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t<FontIcon FontSize=\"{StaticResource StandardIconSize}\"\n\t\t\t\t\t\t\t\t\t          Glyph=\"&#xE737;\" />\n\t\t\t\t\t\t\t\t\t<TextBlock Text=\"{x:Bind ViewModel.TimerButtonText(x:True), Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t</local:SettingsExpander.Content>\n\t\t\t\t\t<local:SettingsExpander.Items>\n\t\t\t\t\t\t<local:SettingsCard x:Uid=\"Home_Activation_Timer_Delay\"\n\t\t\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t\t\t<Grid MinWidth=\"{StaticResource SettingsCardContentMinWidth}\">\n\t\t\t\t\t\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"*\" />\n\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t\t\t</Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t<Slider Grid.Column=\"0\"\n\t\t\t\t\t\t\t\t        MinWidth=\"0\"\n\t\t\t\t\t\t\t\t        IsThumbToolTipEnabled=\"False\"\n\t\t\t\t\t\t\t\t        Loaded=\"TimerSlider_Loaded\"\n\t\t\t\t\t\t\t\t        Maximum=\"5\"\n\t\t\t\t\t\t\t\t        Minimum=\"1\"\n\t\t\t\t\t\t\t\t        TickFrequency=\"1\"\n\t\t\t\t\t\t\t\t        Value=\"{x:Bind ViewModel.Delay, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t\t<TextBlock Grid.Column=\"1\"\n\t\t\t\t\t\t\t\t           Width=\"20\"\n\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t           Text=\"{x:Bind ViewModel.DelayText, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t           TextAlignment=\"Right\" />\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t</local:SettingsExpander.Items>\n\t\t\t\t</local:SettingsExpander>\n\t\t\t</local:SettingsGroup>\n\t\t\t<local:SettingsGroup x:Uid=\"Home_Toolbar\">\n\t\t\t\t<local:SettingsCard x:Uid=\"Home_Toolbar_StateToggle\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xF69E;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<local:ShortcutControl x:Uid=\"Home_Toolbar_StateToggle_ShortcutControl\">\n\t\t\t\t\t\t<local:ShortcutControl.Action>\n\t\t\t\t\t\t\t<local:ShortcutAction>Toolbar</local:ShortcutAction>\n\t\t\t\t\t\t</local:ShortcutControl.Action>\n\t\t\t\t\t</local:ShortcutControl>\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsExpander x:Uid=\"Home_Toolbar_InitialState\">\n\t\t\t\t\t<local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE890;\" />\n\t\t\t\t\t</local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t<local:SettingsExpander.Content>\n\t\t\t\t\t\t<TextBlock Foreground=\"{ThemeResource TextFillColorSecondaryBrush}\"\n\t\t\t\t\t\t           Text=\"{x:Bind ViewModel.InitialToolbarStateDescription, Mode=OneWay}\" />\n\t\t\t\t\t</local:SettingsExpander.Content>\n\t\t\t\t\t<local:SettingsExpander.Items>\n\t\t\t\t\t\t<local:SettingsCard x:Uid=\"Home_Toolbar_InitialState_Fullscreen\"\n\t\t\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t\t\t<ComboBox DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.FullscreenInitialToolbarState, Mode=TwoWay}\">\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Home_Toolbar_InitialState_Off\" />\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Home_Toolbar_InitialState_AlwaysShow\" />\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Home_Toolbar_InitialState_AutoHide\" />\n\t\t\t\t\t\t\t</ComboBox>\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard x:Uid=\"Home_Toolbar_InitialState_Windowed\"\n\t\t\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t\t\t<ComboBox DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.WindowedInitialToolbarState, Mode=TwoWay}\">\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Home_Toolbar_InitialState_Off\" />\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Home_Toolbar_InitialState_AlwaysShow\" />\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Home_Toolbar_InitialState_AutoHide\" />\n\t\t\t\t\t\t\t</ComboBox>\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t</local:SettingsExpander.Items>\n\t\t\t\t</local:SettingsExpander>\n\t\t\t\t<local:SettingsCard x:Uid=\"Home_Toolbar_ScreenshotSaveDirectory\"\n\t\t\t\t                    Click=\"{x:Bind ViewModel.OpenScreenshotSaveDirectory}\"\n\t\t\t\t                    Description=\"{x:Bind ViewModel.ScreenshotSaveDirectory, Mode=OneWay}\"\n\t\t\t\t                    IsClickEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8B7;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<local:SettingsCard.ActionIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8A7;\" />\n\t\t\t\t\t</local:SettingsCard.ActionIcon>\n\t\t\t\t\t<Button x:Uid=\"Home_Toolbar_ScreenshotSaveDirectory_Change\"\n\t\t\t\t\t        Click=\"{x:Bind ViewModel.ChangeScreenshotSaveDirectory}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t</local:SettingsGroup>\n\t\t\t<local:SettingsGroup x:Uid=\"Home_TouchSupport\">\n\t\t\t\t<local:SettingsCard x:Uid=\"Home_TouchSupport_EnableTouchSupport\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xEBFC;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<local:SettingsCard.Description>\n\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Vertical\">\n\t\t\t\t\t\t\t<TextBlock x:Uid=\"Home_TouchSupport_EnableTouchSupport_Description\" />\n\t\t\t\t\t\t\t<HyperlinkButton x:Uid=\"Home_TouchSupport_EnableTouchSupport_LearnMore\"\n\t\t\t\t\t\t\t                 NavigateUri=\"{x:Bind ViewModel.TouchSupportLearnMoreUrl, Mode=OneTime}\" />\n\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t</local:SettingsCard.Description>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsTouchSupportEnabled, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<muxc:InfoBar x:Uid=\"Home_TouchSupport_Info\"\n\t\t\t\t              IsClosable=\"False\"\n\t\t\t\t              IsOpen=\"{x:Bind ViewModel.IsShowTouchSupportInfoBar, Mode=OneWay}\"\n\t\t\t\t              Severity=\"Informational\">\n\t\t\t\t\t<muxc:InfoBar.Resources>\n\t\t\t\t\t\t<ResourceDictionary Source=\"ms-appx:///Magpie/BlueInfoBarStyle.xaml\" />\n\t\t\t\t\t</muxc:InfoBar.Resources>\n\t\t\t\t</muxc:InfoBar>\n\t\t\t\t<muxc:InfoBar x:Uid=\"Home_TouchSupport_Warn\"\n\t\t\t\t              IsClosable=\"False\"\n\t\t\t\t              IsOpen=\"{x:Bind ViewModel.IsShowTouchSupportInfoBar, Mode=OneWay}\"\n\t\t\t\t              Severity=\"Warning\" />\n\t\t\t</local:SettingsGroup>\n\t\t\t<local:SettingsGroup x:Uid=\"Home_Advanced\">\n\t\t\t\t<local:SettingsCard x:Uid=\"Home_Advanced_AllowScalingMaximized\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xEECA;\"\n\t\t\t\t\t\t          RenderTransformOrigin=\"0.5,0.5\">\n\t\t\t\t\t\t\t<FontIcon.RenderTransform>\n\t\t\t\t\t\t\t\t<ScaleTransform ScaleX=\"-1\" />\n\t\t\t\t\t\t\t</FontIcon.RenderTransform>\n\t\t\t\t\t\t</FontIcon>\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsAllowScalingMaximized, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"Home_Advanced_SimulateExclusiveFullscreen\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xEC46;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsSimulateExclusiveFullscreen, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<muxc:InfoBar x:Uid=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar\"\n\t\t\t\t              IsClosable=\"False\"\n\t\t\t\t              IsOpen=\"{x:Bind ViewModel.IsSimulateExclusiveFullscreen, Mode=OneWay}\"\n\t\t\t\t              Severity=\"Warning\" />\n\t\t\t\t<local:SettingsCard x:Uid=\"Home_Advanced_InlineParams\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE9E9;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsInlineParams, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"Home_Advanced_MinFrameRate\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xECAD;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<Grid MinWidth=\"{StaticResource SettingsCardContentMinWidth}\">\n\t\t\t\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t<ColumnDefinition Width=\"*\" />\n\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t</Grid.ColumnDefinitions>\n\t\t\t\t\t\t<ComboBox Grid.Column=\"0\"\n\t\t\t\t\t\t          MinWidth=\"0\"\n\t\t\t\t\t\t          Margin=\"0,0,8,0\"\n\t\t\t\t\t\t          HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t          DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t\t          ItemsSource=\"{x:Bind local:HomeViewModel.MinFrameRateOptions, Mode=OneTime}\"\n\t\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.MinFrameRateIndex, Mode=TwoWay}\" />\n\t\t\t\t\t\t<TextBlock Grid.Column=\"1\"\n\t\t\t\t\t\t           VerticalAlignment=\"Center\"\n\t\t\t\t\t\t           Text=\"FPS\" />\n\t\t\t\t\t</Grid>\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsExpander x:Name=\"DeveloperModeExpander\"\n\t\t\t\t                        x:Uid=\"Home_Advanced_DeveloperOptions\"\n\t\t\t\t                        x:Load=\"{x:Bind ViewModel.IsDeveloperMode, Mode=OneWay}\"\n\t\t\t\t                        IsExpanded=\"True\">\n\t\t\t\t\t<local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xEC7A;\" />\n\t\t\t\t\t</local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t<local:SettingsExpander.Content>\n\t\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsDeveloperMode, Mode=TwoWay}\" />\n\t\t\t\t\t</local:SettingsExpander.Content>\n\t\t\t\t\t<local:SettingsExpander.Items>\n\t\t\t\t\t\t<local:SettingsCard x:Uid=\"Home_Advanced_DeveloperOptions_LocateLogs\"\n\t\t\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t                        Spacing=\"4\">\n\t\t\t\t\t\t\t\t<Button Click=\"{x:Bind ViewModel.LocateMagpieLogs}\"\n\t\t\t\t\t\t\t\t        Content=\"Magpie\" />\n\t\t\t\t\t\t\t\t<Button Click=\"{x:Bind ViewModel.LocateTouchHelperLogs}\"\n\t\t\t\t\t\t\t\t        Content=\"TouchHelper\" />\n\t\t\t\t\t\t\t\t<Button Click=\"{x:Bind ViewModel.LocateUpdaterLogs}\"\n\t\t\t\t\t\t\t\t        Content=\"Updater\" />\n\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard ContentAlignment=\"Left\">\n\t\t\t\t\t\t\t<CheckBox x:Uid=\"Home_Advanced_DeveloperOptions_DebugMode\"\n\t\t\t\t\t\t\t          IsChecked=\"{x:Bind ViewModel.IsDebugMode, Mode=TwoWay}\" />\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard ContentAlignment=\"Left\">\n\t\t\t\t\t\t\t<CheckBox x:Uid=\"Home_Advanced_DeveloperOptions_BenchmarkMode\"\n\t\t\t\t\t\t\t          IsChecked=\"{x:Bind ViewModel.IsBenchmarkMode, Mode=TwoWay}\" />\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard ContentAlignment=\"Left\">\n\t\t\t\t\t\t\t<CheckBox x:Uid=\"Home_Advanced_DeveloperOptions_DisableTopmost\"\n\t\t\t\t\t\t\t          IsChecked=\"{x:Bind ViewModel.IsTopmostDisabled, Mode=TwoWay}\" />\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard ContentAlignment=\"Left\">\n\t\t\t\t\t\t\t<CheckBox x:Uid=\"Home_Advanced_DeveloperOptions_DisableEffectCache\"\n\t\t\t\t\t\t\t          IsChecked=\"{x:Bind ViewModel.IsEffectCacheDisabled, Mode=TwoWay}\" />\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard ContentAlignment=\"Left\">\n\t\t\t\t\t\t\t<CheckBox x:Uid=\"Home_Advanced_DeveloperOptions_SaveEffectSources\"\n\t\t\t\t\t\t\t          IsChecked=\"{x:Bind ViewModel.IsSaveEffectSources, Mode=TwoWay}\" />\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard ContentAlignment=\"Left\">\n\t\t\t\t\t\t\t<CheckBox x:Uid=\"Home_Advanced_DeveloperOptions_WarningsAreErrors\"\n\t\t\t\t\t\t\t          IsChecked=\"{x:Bind ViewModel.IsWarningsAreErrors, Mode=TwoWay}\" />\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard ContentAlignment=\"Left\">\n\t\t\t\t\t\t\t<CheckBox x:Uid=\"Home_Advanced_DeveloperOptions_DisableFP16\"\n\t\t\t\t\t\t\t          IsChecked=\"{x:Bind ViewModel.IsFP16Disabled, Mode=TwoWay}\" />\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard ContentAlignment=\"Left\">\n\t\t\t\t\t\t\t<CheckBox x:Uid=\"Home_Advanced_DeveloperOptions_DisableFontCache\"\n\t\t\t\t\t\t\t          IsChecked=\"{x:Bind ViewModel.IsFontCacheDisabled, Mode=TwoWay}\" />\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard x:Uid=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection\"\n\t\t\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t\t\t<ComboBox DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.DuplicateFrameDetectionMode, Mode=TwoWay}\">\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always\" />\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic\" />\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never\" />\n\t\t\t\t\t\t\t</ComboBox>\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard ContentAlignment=\"Left\">\n\t\t\t\t\t\t\t<CheckBox x:Uid=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection\"\n\t\t\t\t\t\t\t          IsChecked=\"{x:Bind ViewModel.IsStatisticsForDynamicDetectionEnabled, Mode=TwoWay}\" />\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t</local:SettingsExpander.Items>\n\t\t\t\t</local:SettingsExpander>\n\t\t\t</local:SettingsGroup>\n\t\t</local:SimpleStackPanel>\n\t</local:PageFrame>\n</Page>\n"
  },
  {
    "path": "src/Magpie/HomeViewModel.cpp",
    "content": "#include \"pch.h\"\n#include \"HomeViewModel.h\"\n#if __has_include(\"HomeViewModel.g.cpp\")\n#include \"HomeViewModel.g.cpp\"\n#endif\n#include \"AppSettings.h\"\n#include \"ScalingService.h\"\n#include \"Win32Helper.h\"\n#include \"StrHelper.h\"\n#include \"UpdateService.h\"\n#include \"CommonSharedConstants.h\"\n#include \"TouchHelper.h\"\n#include \"LocalizationService.h\"\n#include \"App.h\"\n#include \"RootPage.h\"\n#include \"FileDialogHelper.h\"\n#include \"Logger.h\"\n\nusing namespace Magpie;\n\nnamespace winrt::Magpie::implementation {\n\nHomeViewModel::HomeViewModel() {\n\tScalingService& ScalingService = ScalingService::Get();\n\n\t_isScalingChangedRevoker = ScalingService.IsScalingChanged(\n\t\tauto_revoke, std::bind_front(&HomeViewModel::_ScalingService_IsScalingChanged, this));\n\t_isTimerOnRevoker = ScalingService.IsTimerOnChanged(\n\t\tauto_revoke, std::bind_front(&HomeViewModel::_ScalingService_IsTimerOnChanged, this));\n\t_timerTickRevoker = ScalingService.TimerTick(\n\t\tauto_revoke, std::bind_front(&HomeViewModel::_ScalingService_TimerTick, this));\n\n\tUpdateService& updateService = UpdateService::Get();\n\t_showUpdateCard = updateService.IsShowOnHomePage();\n\t_isShowOnHomePageChangedRevoker = updateService.IsShowOnHomePageChanged(\n\t\tauto_revoke,\n\t\t[this](bool value) {\n\t\t\tif (value) {\n\t\t\t\tShowUpdateCard(true);\n\t\t\t}\n\t\t}\n\t);\n}\n\nhstring HomeViewModel::TimerDescription() const noexcept {\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\thstring fmtStr = resourceLoader.GetString(L\"Home_Activation_Timer_Description\");\n\treturn hstring(fmt::format(\n\t\tfmt::runtime(std::wstring_view(fmtStr)),\n\t\tAppSettings::Get().CountdownSeconds()\n\t));\n}\n\nbool HomeViewModel::IsTimerOn() const noexcept {\n\treturn ScalingService::Get().IsTimerOn();\n}\n\ndouble HomeViewModel::TimerProgressRingValue() const noexcept {\n\tScalingService& ScalingService = ScalingService::Get();\n\treturn ScalingService.IsTimerOn() ? ScalingService.TimerProgress() : 1.0f;\n}\n\nhstring HomeViewModel::TimerLabelText() const noexcept {\n\tScalingService& ScalingService = ScalingService::Get();\n\treturn to_hstring((int)std::ceil(ScalingService.SecondsLeft()));\n}\n\nbool HomeViewModel::IsNotRunning() const noexcept {\n\treturn !ScalingService::Get().IsScaling();\n}\n\nhstring HomeViewModel::TimerButtonText(bool windowedMode) const noexcept {\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\tif (ScalingService::Get().IsTimerOn(windowedMode)) {\n\t\treturn resourceLoader.GetString(L\"Home_Activation_Timer_Cancel\");\n\t} else {\n\t\treturn resourceLoader.GetString(L\"Home_Activation_Timer_Start\");\n\t}\n}\n\nvoid HomeViewModel::ToggleTimerFullscreen() const noexcept {\n\t_ToggleTimer(false);\n}\n\nvoid HomeViewModel::ToggleTimerWindowed() const noexcept {\n\t_ToggleTimer(true);\n}\n\nuint32_t HomeViewModel::Delay() const noexcept {\n\treturn AppSettings::Get().CountdownSeconds();\n}\n\nvoid HomeViewModel::Delay(uint32_t value) {\n\tAppSettings::Get().CountdownSeconds(value);\n\tRaisePropertyChanged(L\"Delay\");\n\tRaisePropertyChanged(L\"DelayText\");\n\tRaisePropertyChanged(L\"TimerDescription\");\n}\n\nhstring HomeViewModel::DelayText() const noexcept {\n\treturn App::Get().DoubleFormatter().FormatDouble(Delay());\n}\n\nvoid HomeViewModel::ShowUpdateCard(bool value) noexcept {\n\t_showUpdateCard = value;\n\tif (!value) {\n\t\tUpdateService::Get().IsShowOnHomePage(false);\n\t}\n\t\n\tRaisePropertyChanged(L\"ShowUpdateCard\");\n\tRaisePropertyChanged(L\"UpdateCardTitle\");\n}\n\nhstring HomeViewModel::UpdateCardTitle() const noexcept {\n\tUpdateService& updateService = UpdateService::Get();\n\tif (updateService.Status() < UpdateStatus::Available) {\n\t\treturn {};\n\t}\n\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\thstring titleFmt = resourceLoader.GetString(L\"About_Version_UpdateCard_Title\");\n\treturn hstring(fmt::format(fmt::runtime(std::wstring_view(titleFmt)), updateService.Tag()));\n}\n\nbool HomeViewModel::IsAutoCheckForUpdates() const noexcept {\n\treturn AppSettings::Get().IsAutoCheckForUpdates();\n}\n\nvoid HomeViewModel::IsAutoCheckForUpdates(bool value) noexcept {\n\tAppSettings::Get().IsAutoCheckForUpdates(value);\n}\n\nvoid HomeViewModel::DownloadAndInstall() {\n\tUpdateService::Get().DownloadAndInstall();\n\tApp::Get().RootPage()->NavigateToAboutPage();\n}\n\nvoid HomeViewModel::ReleaseNotes() {\n\tstd::wstring url = StrHelper::Concat(\n\t\tL\"https://github.com/Blinue/Magpie/releases/tag/\",\n\t\tUpdateService::Get().Tag()\n\t);\n\tWin32Helper::ShellOpen(url.c_str());\n}\n\nvoid HomeViewModel::RemindMeLater() {\n\tShowUpdateCard(false);\n}\n\nhstring HomeViewModel::InitialToolbarStateDescription() const noexcept {\n\tstatic constexpr std::array STATE_STRING_IDS = {\n\t\tL\"Home_Toolbar_InitialState_Off/Content\",\n\t\tL\"Home_Toolbar_InitialState_AlwaysShow/Content\",\n\t\tL\"Home_Toolbar_InitialState_AutoHide/Content\"\n\t};\n\n\tconst ToolbarState fullscreenInitialState =\n\t\tAppSettings::Get().FullscreenInitialToolbarState();\n\tconst ToolbarState windowedInitialState =\n\t\tAppSettings::Get().WindowedInitialToolbarState();\n\n\tconst ResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\tif (fullscreenInitialState == windowedInitialState) {\n\t\treturn resourceLoader.GetString(STATE_STRING_IDS[(uint32_t)fullscreenInitialState]);\n\t} else {\n\t\treturn hstring(StrHelper::Concat(\n\t\t\tresourceLoader.GetString(STATE_STRING_IDS[(uint32_t)fullscreenInitialState]),\n\t\t\tL\" | \",\n\t\t\tresourceLoader.GetString(STATE_STRING_IDS[(uint32_t)windowedInitialState]))\n\t\t);\n\t}\n}\n\nint HomeViewModel::FullscreenInitialToolbarState() const noexcept {\n\treturn (int)AppSettings::Get().FullscreenInitialToolbarState();\n}\n\nvoid HomeViewModel::FullscreenInitialToolbarState(int value) {\n\tif (value < 0) {\n\t\treturn;\n\t}\n\n\tconst ToolbarState state = (ToolbarState)value;\n\n\tAppSettings& settings = AppSettings::Get();\n\tif (settings.FullscreenInitialToolbarState() == state) {\n\t\treturn;\n\t}\n\n\tsettings.FullscreenInitialToolbarState(state);\n\tRaisePropertyChanged(L\"FullscreenInitialToolbarState\");\n\tRaisePropertyChanged(L\"InitialToolbarStateDescription\");\n}\n\nint HomeViewModel::WindowedInitialToolbarState() const noexcept {\n\treturn (int)AppSettings::Get().WindowedInitialToolbarState();\n}\n\nvoid HomeViewModel::WindowedInitialToolbarState(int value) {\n\tif (value < 0) {\n\t\treturn;\n\t}\n\n\tconst ToolbarState state = (ToolbarState)value;\n\n\tAppSettings& settings = AppSettings::Get();\n\tif (settings.WindowedInitialToolbarState() == state) {\n\t\treturn;\n\t}\n\n\tsettings.WindowedInitialToolbarState(state);\n\tRaisePropertyChanged(L\"WindowedInitialToolbarState\");\n\tRaisePropertyChanged(L\"InitialToolbarStateDescription\");\n}\n\nhstring HomeViewModel::ScreenshotSaveDirectory() const noexcept {\n\treturn hstring(AppSettings::Get().ScreenshotsDir().native());\n}\n\nvoid HomeViewModel::OpenScreenshotSaveDirectory() const noexcept {\n\tconst std::filesystem::path saveDir = AppSettings::Get().ScreenshotsDir();\n\tif (Win32Helper::CreateDir(saveDir.native(), true)) {\n\t\tWin32Helper::ShellOpen(saveDir.c_str());\n\t}\n}\n\nfire_and_forget HomeViewModel::ChangeScreenshotSaveDirectory() noexcept {\n\tconst ResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\tconst hstring titleStr = resourceLoader.GetString(L\"Dialog_SetlectScreenshotSaveDirectory_Title\");\n\n\tconst std::filesystem::path oldValue = AppSettings::Get().ScreenshotsDir();\n\n\tauto weakThis = get_weak();\n\n\t// 在主线程使用 IFileOpenDialog 有些问题，尤其在 Win10 中\n\tco_await resume_background();\n\n\tcom_ptr<IFileOpenDialog> pickFolderDialog =\n\t\ttry_create_instance<IFileOpenDialog>(CLSID_FileOpenDialog);\n\tif (!pickFolderDialog) {\n\t\tLogger::Get().Error(\"创建 FileSaveDialog 失败\");\n\t\tco_return;\n\t}\n\t\n\tpickFolderDialog->SetTitle(titleStr.c_str());\n\n\tif (!oldValue.empty()) {\n\t\t// 选择父目录作为初始目录\n\t\tconst std::filesystem::path parentDir = oldValue.parent_path();\n\n\t\tcom_ptr<IShellItem> shellItem;\n\t\tHRESULT hr = SHCreateItemFromParsingName(\n\t\t\tparentDir.empty() ? oldValue.c_str() : parentDir.c_str(),\n\t\t\tnullptr,\n\t\t\tIID_PPV_ARGS(&shellItem)\n\t\t);\n\t\tif (SUCCEEDED(hr)) {\n\t\t\tpickFolderDialog->SetFolder(shellItem.get());\n\t\t} else {\n\t\t\tLogger::Get().ComError(\"SHCreateItemFromParsingName 失败\", hr);\n\t\t}\n\t}\n\n\tstd::optional<std::filesystem::path> screenshotDir =\n\t\tFileDialogHelper::OpenFileDialog(pickFolderDialog.get(), FOS_PICKFOLDERS);\n\tif (!screenshotDir || screenshotDir->empty() || *screenshotDir == oldValue) {\n\t\tco_return;\n\t}\n\n\tco_await App::Get().Dispatcher();\n\n\tif (weakThis.get()) {\n\t\tAppSettings::Get().ScreenshotsDir(*screenshotDir);\n\t\tRaisePropertyChanged(L\"ScreenshotSaveDirectory\");\n\t}\n}\n\nbool HomeViewModel::IsTouchSupportEnabled() const noexcept {\n\t// 不检查版本号是否匹配\n\treturn TouchHelper::IsTouchSupportEnabled();\n}\n\nfire_and_forget HomeViewModel::IsTouchSupportEnabled(bool value) {\n\tif (IsTouchSupportEnabled() == value) {\n\t\tco_return;\n\t}\n\n\tauto weakThis = get_weak();\n\n\t// UAC 可能导致 XAML Islands 崩溃，因此不能在主线程上执行 ShellExecute，\n\t// 见 https://github.com/microsoft/microsoft-ui-xaml/issues/4952\n\tco_await resume_background();\n\n\tTouchHelper::IsTouchSupportEnabled(value);\n\n\tco_await App::Get().Dispatcher();\n\n\tif (weakThis.get()) {\n\t\tRaisePropertyChanged(L\"IsTouchSupportEnabled\");\n\t\tRaisePropertyChanged(L\"IsShowTouchSupportInfoBar\");\n\t}\n}\n\nUri HomeViewModel::TouchSupportLearnMoreUrl() const noexcept {\n\tif (LocalizationService::Get().Language() == L\"zh-hans\"sv) {\n\t\treturn Uri(L\"https://github.com/Blinue/Magpie/blob/dev/docs/%E5%85%B3%E4%BA%8E%E8%A7%A6%E6%8E%A7%E6%94%AF%E6%8C%81.md\");\n\t} else {\n\t\treturn Uri(L\"https://github.com/Blinue/Magpie/blob/dev/docs/About%20touch%20support.md\");\n\t}\n}\n\nbool HomeViewModel::IsShowTouchSupportInfoBar() const noexcept {\n\treturn !Win32Helper::IsProcessElevated() && IsTouchSupportEnabled();\n}\n\nbool HomeViewModel::IsAllowScalingMaximized() const noexcept {\n\treturn AppSettings::Get().IsAllowScalingMaximized();\n}\n\nvoid HomeViewModel::IsAllowScalingMaximized(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsAllowScalingMaximized() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsAllowScalingMaximized(value);\n\tRaisePropertyChanged(L\"IsAllowScalingMaximized\");\n\n\tif (value) {\n\t\tScalingService::Get().CheckForeground();\n\t}\n}\n\nbool HomeViewModel::IsSimulateExclusiveFullscreen() const noexcept {\n\treturn AppSettings::Get().IsSimulateExclusiveFullscreen();\n}\n\nvoid HomeViewModel::IsSimulateExclusiveFullscreen(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsSimulateExclusiveFullscreen() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsSimulateExclusiveFullscreen(value);\n\tRaisePropertyChanged(L\"IsSimulateExclusiveFullscreen\");\n}\n\nbool HomeViewModel::IsInlineParams() const noexcept {\n\treturn AppSettings::Get().IsInlineParams();\n}\n\nvoid HomeViewModel::IsInlineParams(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsInlineParams() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsInlineParams(value);\n\tRaisePropertyChanged(L\"IsInlineParams\");\n}\n\nstatic constexpr std::array MIN_FRAME_RATE_OPTIONS{ 0,5,10,15,20,30,60 };\n\nIVector<IInspectable> HomeViewModel::MinFrameRateOptions() {\n\tstatic IVector<IInspectable> result = [] {\n\t\tstd::vector<IInspectable> options;\n\t\toptions.reserve(MIN_FRAME_RATE_OPTIONS.size());\n\t\tfor (int option : MIN_FRAME_RATE_OPTIONS) {\n\t\t\toptions.push_back(box_value(std::to_wstring(option)));\n\t\t}\n\n\t\treturn single_threaded_vector(std::move(options));\n\t}();\n\treturn result;\n}\n\nint HomeViewModel::MinFrameRateIndex() const noexcept {\n\tfloat minFrameRate = AppSettings::Get().MinFrameRate();\n\tauto it = std::find_if(\n\t\tMIN_FRAME_RATE_OPTIONS.begin(),\n\t\tMIN_FRAME_RATE_OPTIONS.end(),\n\t\t[&](int value) { return IsApprox(minFrameRate, (float)value); }\n\t);\n\tif (it == MIN_FRAME_RATE_OPTIONS.end()) {\n\t\treturn -1;\n\t} else {\n\t\treturn int(it - MIN_FRAME_RATE_OPTIONS.begin());\n\t}\n}\n\nvoid HomeViewModel::MinFrameRateIndex(int value) {\n\tif (value < 0 || value >= (int)MIN_FRAME_RATE_OPTIONS.size()) {\n\t\treturn;\n\t}\n\n\tAppSettings::Get().MinFrameRate((float)MIN_FRAME_RATE_OPTIONS[value]);\n\tRaisePropertyChanged(L\"MinFrameRateIndex\");\n}\n\nbool HomeViewModel::IsDeveloperMode() const noexcept {\n\treturn AppSettings::Get().IsDeveloperMode();\n}\n\nvoid HomeViewModel::IsDeveloperMode(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsDeveloperMode() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsDeveloperMode(value);\n\tRaisePropertyChanged(L\"IsDeveloperMode\");\n}\n\nvoid HomeViewModel::LocateMagpieLogs() noexcept {\n\tWin32Helper::ShellOpen(StrHelper::Concat(L\".\\\\\", CommonSharedConstants::LOGS_DIR).c_str());\n}\n\nstatic fire_and_forget LocateTempLogs(const wchar_t* logName) noexcept {\n\tstd::wstring path(MAX_PATH + 1, L'\\0');\n\n\tconst DWORD len = GetTempPath(MAX_PATH + 2, path.data());\n\tif (len <= 0) {\n\t\tco_return;\n\t}\n\n\tpath.resize(len);\n\tif (!path.ends_with(L'\\\\')) {\n\t\tpath.push_back(L'\\\\');\n\t}\n\n\tpath.append(logName);\n\tif (!Win32Helper::FileExists(path.c_str())) {\n\t\tco_return;\n\t}\n\n\tco_await resume_background();\n\tWin32Helper::OpenFolderAndSelectFile(path.c_str());\n}\n\nvoid HomeViewModel::LocateTouchHelperLogs() noexcept {\n\tLocateTempLogs(CommonSharedConstants::TOUCH_HELPER_LOG_NAME);\n}\n\nvoid HomeViewModel::LocateUpdaterLogs() noexcept {\n\tLocateTempLogs(CommonSharedConstants::UPDATER_LOG_NAME);\n}\n\nbool HomeViewModel::IsDebugMode() const noexcept {\n\treturn AppSettings::Get().IsDebugMode();\n}\n\nvoid HomeViewModel::IsDebugMode(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsDebugMode() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsDebugMode(value);\n\tRaisePropertyChanged(L\"IsDebugMode\");\n}\n\nbool HomeViewModel::IsBenchmarkMode() const noexcept {\n\treturn AppSettings::Get().IsBenchmarkMode();\n}\n\nvoid HomeViewModel::IsBenchmarkMode(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsBenchmarkMode() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsBenchmarkMode(value);\n\tRaisePropertyChanged(L\"IsBenchmarkMode\");\n}\n\nbool HomeViewModel::IsTopmostDisabled() const noexcept {\n\treturn AppSettings::Get().IsTopmostDisabled();\n}\n\nvoid HomeViewModel::IsTopmostDisabled(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsTopmostDisabled() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsTopmostDisabled(value);\n\tRaisePropertyChanged(L\"IsTopmostDisabled\");\n}\n\nbool HomeViewModel::IsEffectCacheDisabled() const noexcept {\n\treturn AppSettings::Get().IsEffectCacheDisabled();\n}\n\nvoid HomeViewModel::IsEffectCacheDisabled(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsEffectCacheDisabled() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsEffectCacheDisabled(value);\n\tRaisePropertyChanged(L\"IsEffectCacheDisabled\");\n}\n\nbool HomeViewModel::IsFontCacheDisabled() const noexcept {\n\treturn AppSettings::Get().IsFontCacheDisabled();\n}\n\nvoid HomeViewModel::IsFontCacheDisabled(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsFontCacheDisabled() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsFontCacheDisabled(value);\n\tRaisePropertyChanged(L\"IsFontCacheDisabled\");\n}\n\nbool HomeViewModel::IsSaveEffectSources() const noexcept {\n\treturn AppSettings::Get().IsSaveEffectSources();\n}\n\nvoid HomeViewModel::IsSaveEffectSources(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsSaveEffectSources() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsSaveEffectSources(value);\n\tRaisePropertyChanged(L\"IsSaveEffectSources\");\n}\n\nbool HomeViewModel::IsWarningsAreErrors() const noexcept {\n\treturn AppSettings::Get().IsWarningsAreErrors();\n}\n\nvoid HomeViewModel::IsWarningsAreErrors(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsWarningsAreErrors() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsWarningsAreErrors(value);\n\tRaisePropertyChanged(L\"IsWarningsAreErrors\");\n}\n\nbool HomeViewModel::IsFP16Disabled() const noexcept {\n\treturn AppSettings::Get().IsFP16Disabled();\n}\n\nvoid HomeViewModel::IsFP16Disabled(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsFP16Disabled() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsFP16Disabled(value);\n\tRaisePropertyChanged(L\"IsFP16Disabled\");\n}\n\nint HomeViewModel::DuplicateFrameDetectionMode() const noexcept {\n\treturn (int)AppSettings::Get().DuplicateFrameDetectionMode();\n}\n\nvoid HomeViewModel::DuplicateFrameDetectionMode(int value) {\n\tif (value < 0) {\n\t\treturn;\n\t}\n\n\tconst auto mode = (::Magpie::DuplicateFrameDetectionMode)value;\n\n\tAppSettings& settings = AppSettings::Get();\n\tif (settings.DuplicateFrameDetectionMode() == mode) {\n\t\treturn;\n\t}\n\n\tsettings.DuplicateFrameDetectionMode(mode);\n\n\tRaisePropertyChanged(L\"DuplicateFrameDetectionMode\");\n\tRaisePropertyChanged(L\"IsDynamicDection\");\n\n\tif (mode != ::Magpie::DuplicateFrameDetectionMode::Dynamic) {\n\t\tsettings.IsStatisticsForDynamicDetectionEnabled(false);\n\t\tRaisePropertyChanged(L\"IsStatisticsForDynamicDetectionEnabled\");\n\t}\n}\n\nbool HomeViewModel::IsDynamicDection() const noexcept {\n\treturn AppSettings::Get().DuplicateFrameDetectionMode() == ::Magpie::DuplicateFrameDetectionMode::Dynamic;\n}\n\nbool HomeViewModel::IsStatisticsForDynamicDetectionEnabled() const noexcept {\n\treturn AppSettings::Get().IsStatisticsForDynamicDetectionEnabled();\n}\n\nvoid HomeViewModel::IsStatisticsForDynamicDetectionEnabled(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsStatisticsForDynamicDetectionEnabled() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsStatisticsForDynamicDetectionEnabled(value);\n\tRaisePropertyChanged(L\"IsStatisticsForDynamicDetectionEnabled\");\n}\n\nvoid HomeViewModel::_ScalingService_IsTimerOnChanged(bool value, bool) {\n\tif (!value) {\n\t\tRaisePropertyChanged(L\"TimerProgressRingValue\");\n\t}\n\n\tRaisePropertyChanged(L\"TimerProgressRingValue\");\n\tRaisePropertyChanged(L\"TimerLabelText\");\n\tRaisePropertyChanged(L\"TimerButtonText\");\n\tRaisePropertyChanged(L\"IsTimerOn\");\n}\n\nvoid HomeViewModel::_ScalingService_TimerTick(double) {\n\tRaisePropertyChanged(L\"TimerProgressRingValue\");\n\tRaisePropertyChanged(L\"TimerLabelText\");\n}\n\nvoid HomeViewModel::_ScalingService_IsScalingChanged(bool) {\n\tRaisePropertyChanged(L\"IsNotRunning\");\n}\n\nvoid HomeViewModel::_ToggleTimer(bool windowedMode) const noexcept {\n\tScalingService& scalingService = ScalingService::Get();\n\tif (scalingService.IsTimerOn(windowedMode)) {\n\t\tscalingService.StopTimer();\n\t} else {\n\t\tscalingService.StartTimer(windowedMode);\n\t}\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/HomeViewModel.h",
    "content": "#pragma once\n#include \"HomeViewModel.g.h\"\n#include \"Event.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct HomeViewModel : HomeViewModelT<HomeViewModel>, wil::notify_property_changed_base<HomeViewModel> {\n\tHomeViewModel();\n\n\thstring TimerDescription() const noexcept;\n\n\tbool IsTimerOn() const noexcept;\n\n\tdouble TimerProgressRingValue() const noexcept;\n\n\thstring TimerLabelText() const noexcept;\n\n\tbool IsNotRunning() const noexcept;\n\n\thstring TimerButtonText(bool windowedMode) const noexcept;\n\n\tvoid ToggleTimerFullscreen() const noexcept;\n\n\tvoid ToggleTimerWindowed() const noexcept;\n\n\tuint32_t Delay() const noexcept;\n\tvoid Delay(uint32_t value);\n\n\thstring DelayText() const noexcept;\n\n\tbool ShowUpdateCard() const noexcept {\n\t\treturn _showUpdateCard;\n\t}\n\n\tvoid ShowUpdateCard(bool value) noexcept;\n\n\thstring UpdateCardTitle() const noexcept;\n\n\tbool IsAutoCheckForUpdates() const noexcept;\n\tvoid IsAutoCheckForUpdates(bool value) noexcept;\n\n\tvoid DownloadAndInstall();\n\n\tvoid ReleaseNotes();\n\n\tvoid RemindMeLater();\n\n\thstring InitialToolbarStateDescription() const noexcept;\n\n\tint FullscreenInitialToolbarState() const noexcept;\n\tvoid FullscreenInitialToolbarState(int value);\n\n\tint WindowedInitialToolbarState() const noexcept;\n\tvoid WindowedInitialToolbarState(int value);\n\n\thstring ScreenshotSaveDirectory() const noexcept;\n\n\tvoid OpenScreenshotSaveDirectory() const noexcept;\n\n\tfire_and_forget ChangeScreenshotSaveDirectory() noexcept;\n\n\tbool IsTouchSupportEnabled() const noexcept;\n\tfire_and_forget IsTouchSupportEnabled(bool value);\n\n\tUri TouchSupportLearnMoreUrl() const noexcept;\n\n\tbool IsShowTouchSupportInfoBar() const noexcept;\n\n\tbool IsAllowScalingMaximized() const noexcept;\n\tvoid IsAllowScalingMaximized(bool value);\n\n\tbool IsSimulateExclusiveFullscreen() const noexcept;\n\tvoid IsSimulateExclusiveFullscreen(bool value);\n\n\tbool IsInlineParams() const noexcept;\n\tvoid IsInlineParams(bool value);\n\n\tstatic IVector<IInspectable> MinFrameRateOptions();\n\n\tint MinFrameRateIndex() const noexcept;\n\tvoid MinFrameRateIndex(int value);\n\n\tbool IsDeveloperMode() const noexcept;\n\tvoid IsDeveloperMode(bool value);\n\n\tvoid LocateMagpieLogs() noexcept;\n\tvoid LocateTouchHelperLogs() noexcept;\n\tvoid LocateUpdaterLogs() noexcept;\n\n\tbool IsDebugMode() const noexcept;\n\tvoid IsDebugMode(bool value);\n\n\tbool IsBenchmarkMode() const noexcept;\n\tvoid IsBenchmarkMode(bool value);\n\n\tbool IsTopmostDisabled() const noexcept;\n\tvoid IsTopmostDisabled(bool value);\n\n\tbool IsEffectCacheDisabled() const noexcept;\n\tvoid IsEffectCacheDisabled(bool value);\n\n\tbool IsFontCacheDisabled() const noexcept;\n\tvoid IsFontCacheDisabled(bool value);\n\n\tbool IsSaveEffectSources() const noexcept;\n\tvoid IsSaveEffectSources(bool value);\n\n\tbool IsWarningsAreErrors() const noexcept;\n\tvoid IsWarningsAreErrors(bool value);\n\n\tbool IsFP16Disabled() const noexcept;\n\tvoid IsFP16Disabled(bool value);\n\n\tint DuplicateFrameDetectionMode() const noexcept;\n\tvoid DuplicateFrameDetectionMode(int value);\n\n\tbool IsDynamicDection() const noexcept;\n\n\tbool IsStatisticsForDynamicDetectionEnabled() const noexcept;\n\tvoid IsStatisticsForDynamicDetectionEnabled(bool value);\n\nprivate:\n\tvoid _ScalingService_IsTimerOnChanged(bool value, bool windowedMode);\n\n\tvoid _ScalingService_TimerTick(double);\n\n\tvoid _ScalingService_IsScalingChanged(bool);\n\n\tvoid _ToggleTimer(bool windowedMode) const noexcept;\n\n\t::Magpie::Event<bool, bool>::EventRevoker _isTimerOnRevoker;\n\t::Magpie::Event<double>::EventRevoker _timerTickRevoker;\n\t::Magpie::Event<bool>::EventRevoker _isScalingChangedRevoker;\n\t::Magpie::Event<bool>::EventRevoker _isShowOnHomePageChangedRevoker;\n\n\tbool _showUpdateCard = false;\n};\n\n}\n\nBASIC_FACTORY(HomeViewModel)\n"
  },
  {
    "path": "src/Magpie/HomeViewModel.idl",
    "content": "namespace Magpie {\n\truntimeclass HomeViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tBoolean ShowUpdateCard;\n\t\tString UpdateCardTitle { get; };\n\t\tBoolean IsAutoCheckForUpdates;\n\t\tvoid DownloadAndInstall();\n\t\tvoid ReleaseNotes();\n\t\tvoid RemindMeLater();\n\t\t\n\t\tString TimerDescription { get; };\n\t\tBoolean IsTimerOn { get; };\n\t\tDouble TimerProgressRingValue { get; };\n\t\tString TimerLabelText { get; };\n\t\tBoolean IsNotRunning { get; };\n\t\tUInt32 Delay;\n\t\tString DelayText { get; };\n\n\t\tString TimerButtonText(Boolean windowedMode);\n\t\tvoid ToggleTimerFullscreen();\n\t\tvoid ToggleTimerWindowed();\n\n\t\tString InitialToolbarStateDescription { get; };\n\t\tInt32 FullscreenInitialToolbarState;\n\t\tInt32 WindowedInitialToolbarState;\n\t\tString ScreenshotSaveDirectory { get; };\n\t\tvoid OpenScreenshotSaveDirectory();\n\t\tvoid ChangeScreenshotSaveDirectory();\n\n\t\tBoolean IsTouchSupportEnabled;\n\t\tWindows.Foundation.Uri TouchSupportLearnMoreUrl { get; };\n\t\tBoolean IsShowTouchSupportInfoBar { get; };\n\n\t\tBoolean IsAllowScalingMaximized;\n\t\tBoolean IsSimulateExclusiveFullscreen;\n\t\tBoolean IsInlineParams;\n\t\tstatic IVector<IInspectable> MinFrameRateOptions { get; };\n\t\tInt32 MinFrameRateIndex;\n\n\t\tBoolean IsDeveloperMode;\n\t\tvoid LocateMagpieLogs();\n\t\tvoid LocateTouchHelperLogs();\n\t\tvoid LocateUpdaterLogs();\n\t\tBoolean IsDebugMode;\n\t\tBoolean IsBenchmarkMode;\n\t\tBoolean IsTopmostDisabled;\n\t\tBoolean IsEffectCacheDisabled;\n\t\tBoolean IsFontCacheDisabled;\n\t\tBoolean IsSaveEffectSources;\n\t\tBoolean IsWarningsAreErrors;\n\t\tBoolean IsFP16Disabled;\n\t\tInt32 DuplicateFrameDetectionMode;\n\t\tBoolean IsDynamicDection { get; };\n\t\tBoolean IsStatisticsForDynamicDetectionEnabled;\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/IconHelper.cpp",
    "content": "#include \"pch.h\"\n#include \"IconHelper.h\"\n#include \"Logger.h\"\n#include \"Win32Helper.h\"\n#include \"StrHelper.h\"\n#include \"resource.h\"\n#include <Shlobj.h>\n#include <winrt/Windows.Graphics.Imaging.h>\n\nusing namespace winrt;\nusing namespace Windows::Graphics::Imaging;\nusing namespace Windows::UI::Xaml::Media::Imaging;\n\nnamespace Magpie {\n\nstatic bool CopyPixelsOfHBmp(HBITMAP hBmp, LONG width, LONG height, void* data) noexcept {\n\tBITMAPINFO bi = {\n\t\t.bmiHeader = {\n\t\t\t.biSize = sizeof(BITMAPINFOHEADER),\n\t\t\t.biWidth = width,\n\t\t\t.biHeight = -height,\n\t\t\t.biPlanes = 1,\n\t\t\t.biBitCount = 32,\n\t\t\t.biCompression = BI_RGB,\n\t\t\t.biSizeImage = DWORD(width * height * 4)\n\t\t}\n\t};\n\n\twil::unique_hdc_window hdc(wil::window_dc(GetDC(NULL)));\n\tif (GetDIBits(hdc.get(), hBmp, 0, height, data, &bi, DIB_RGB_COLORS) != height) {\n\t\tLogger::Get().Win32Error(\"GetDIBits 失败\");\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nstatic SoftwareBitmap HIcon2SoftwareBitmap(HICON hIcon) {\n\t// 支持彩色光标和彩色掩码图标，不支持单色图标\n\n\tICONINFO iconInfo{};\n\tif (!GetIconInfo(hIcon, &iconInfo)) {\n\t\tLogger::Get().Win32Error(\"GetIconInfo 失败\");\n\t\treturn nullptr;\n\t}\n\n\twil::unique_hbitmap hbmpColor(iconInfo.hbmColor);\n\twil::unique_hbitmap hbmpMask(iconInfo.hbmMask);\n\n\tif (!iconInfo.fIcon) {\n\t\treturn nullptr;\n\t}\n\n\tBITMAP bmp{};\n\tGetObject(iconInfo.hbmColor, sizeof(BITMAP), &bmp);\n\n\tSoftwareBitmap bitmap(BitmapPixelFormat::Bgra8, bmp.bmWidth, bmp.bmHeight, BitmapAlphaMode::Premultiplied);\n\t{\n\t\tBitmapBuffer buffer = bitmap.LockBuffer(BitmapBufferAccessMode::Write);\n\t\tuint8_t* pixels = buffer.CreateReference().data();\n\n\t\tif (!CopyPixelsOfHBmp(iconInfo.hbmColor, bmp.bmWidth, bmp.bmHeight, pixels)) {\n\t\t\treturn nullptr;\n\t\t}\n\n\t\tconst uint32_t pixelsSize = bmp.bmWidth * bmp.bmHeight * 4;\n\n\t\t// 若颜色掩码有 A 通道，则是彩色图标，否则是彩色掩码图标\n\t\tbool hasAlpha = false;\n\t\tfor (uint32_t i = 3; i < pixelsSize; i += 4) {\n\t\t\tif (pixels[i] != 0) {\n\t\t\t\thasAlpha = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (hasAlpha) {\n\t\t\t// 彩色图标\n\t\t\tfor (size_t i = 0; i < pixelsSize; i += 4) {\n\t\t\t\t// 预乘 Alpha 通道\n\t\t\t\tconst float alpha = pixels[i + 3] / 255.0f;\n\n\t\t\t\tpixels[i] = (uint8_t)std::lroundf(pixels[i] * alpha);\n\t\t\t\tpixels[i + 1] = (uint8_t)std::lroundf(pixels[i + 1] * alpha);\n\t\t\t\tpixels[i + 2] = (uint8_t)std::lroundf(pixels[i + 2] * alpha);\n\t\t\t}\n\t\t} else if (iconInfo.hbmMask) {\n\t\t\t// 彩色掩码图标\n\t\t\tstd::unique_ptr<uint8_t[]> maskData = std::make_unique<uint8_t[]>(pixelsSize);\n\t\t\tif (!CopyPixelsOfHBmp(iconInfo.hbmMask, bmp.bmWidth, bmp.bmHeight, maskData.get())) {\n\t\t\t\treturn nullptr;\n\t\t\t}\n\n\t\t\tfor (uint32_t i = 0; i < pixelsSize; i += 4) {\n\t\t\t\t// hbmMask 表示是否应用掩码\n\t\t\t\t// 如果需要应用掩码而掩码不为零，那么无损转换为彩色图标是不可能的，这里直接使用掩码作为颜色\n\t\t\t\tif (maskData[i] != 0 && pixels[i] == 0 && pixels[i + 1] == 0 && pixels[i + 2] == 0) {\n\t\t\t\t\t// 掩码全为 0 表示透明像素\n\t\t\t\t\tstd::memset(pixels + i, 0, 4);\n\t\t\t\t} else {\n\t\t\t\t\t// 无需应用掩码或掩码不为零\n\t\t\t\t\tpixels[i + 3] = 255;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (uint32_t i = 3; i < pixelsSize; i += 4) {\n\t\t\t\tpixels[i] = 255;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn bitmap;\n}\n\nstatic SIZE GetSizeOfIcon(HICON hIcon) noexcept {\n\tICONINFO iconInfo{};\n\tif (!GetIconInfo(hIcon, &iconInfo)) {\n\t\tLogger::Get().Win32Error(\"GetIconInfo 失败\");\n\t\treturn {};\n\t}\n\n\twil::unique_hbitmap hbmpColor(iconInfo.hbmColor);\n\twil::unique_hbitmap hbmpMask(iconInfo.hbmMask);\n\n\tif (!iconInfo.fIcon) {\n\t\treturn {};\n\t}\n\n\tBITMAP bmp{};\n\tGetObject(iconInfo.hbmColor, sizeof(BITMAP), &bmp);\n\treturn { bmp.bmWidth, bmp.bmHeight };\n}\n\nstatic HICON GetHIconOfWnd(HWND hWnd, LONG preferredSize) noexcept {\n\tHICON result = NULL;\n\tHICON candidateSmallIcon = NULL;\n\n\tresult = (HICON)SendMessage(hWnd, WM_GETICON, ICON_SMALL, 0);\n\tif (result) {\n\t\tif (GetSizeOfIcon(result).cx >= preferredSize) {\n\t\t\t// 小图标尺寸足够\n\t\t\treturn result;\n\t\t} else {\n\t\t\t// 否则继续检索大图标\n\t\t\tcandidateSmallIcon = result;\n\t\t}\n\t}\n\n\tresult = (HICON)SendMessage(hWnd, WM_GETICON, ICON_BIG, 0);\n\tif (result) {\n\t\treturn result;\n\t}\n\n\tif (!candidateSmallIcon) {\n\t\tresult = (HICON)GetClassLongPtr(hWnd, GCLP_HICONSM);\n\t\tif (result) {\n\t\t\tif (GetSizeOfIcon(result).cx >= preferredSize) {\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\tcandidateSmallIcon = result;\n\t\t\t}\n\t\t}\n\t}\n\n\tresult = (HICON)GetClassLongPtr(hWnd, GCLP_HICON);\n\tif (result) {\n\t\treturn result;\n\t}\n\n\tif (candidateSmallIcon) {\n\t\t// 不存在大图标则回落到小图标\n\t\treturn candidateSmallIcon;\n\t}\n\n\t// 此窗口无图标则回落到所有者窗口\n\tHWND hwndOwner = GetWindow(hWnd, GW_OWNER);\n\tif (!hwndOwner) {\n\t\treturn NULL;\n\t}\n\n\treturn GetHIconOfWnd(hwndOwner, preferredSize);\n}\n\nSoftwareBitmap IconHelper::ExtractIconFormWnd(HWND hWnd, uint32_t preferredSize) {\n\tif (HICON hIcon = GetHIconOfWnd(hWnd, (LONG)preferredSize)) {\n\t\treturn HIcon2SoftwareBitmap(hIcon);\n\t}\n\n\treturn ExtractIconFromExe(Win32Helper::GetWindowPath(hWnd).c_str(), preferredSize);\n}\n\nSoftwareBitmap IconHelper::ExtractIconFromExe(const wchar_t* fileName, uint32_t preferredSize) {\n\t{\n\t\twil::unique_hicon hIcon = NULL;\n\t\tSHDefExtractIcon(fileName, 0, 0, hIcon.put(), NULL, preferredSize);\n\t\tif (hIcon) {\n\t\t\treturn HIcon2SoftwareBitmap(hIcon.get());\n\t\t}\n\t}\n\n\t// 回落到 IShellItemImageFactory，此接口存在以下问题:\n\t// 1. 速度较慢\n\t// 2. SIIGBF_BIGGERSIZEOK 不起作用，在我的测试里它始终在内部执行低质量的 GDI 缩放\n\t// 3. 不能可靠的并发使用，有时会得到错误的结果\n\t// 4. 据说它返回的位图有时已经预乘透明通道，没有区分的办法\n\n\twil::unique_hbitmap hBmp;\n\t{\n\t\tstatic wil::srwlock srwLock;\n\t\tauto lock = srwLock.lock_exclusive();\n\n\t\tcom_ptr<IShellItemImageFactory> factory;\n\t\tHRESULT hr = SHCreateItemFromParsingName(fileName, nullptr, IID_PPV_ARGS(&factory));\n\t\tif (FAILED(hr)) {\n\t\t\treturn nullptr;\n\t\t}\n\n\t\twhile (true) {\n\t\t\thr = factory->GetImage(\n\t\t\t\t{ (LONG)preferredSize, (LONG)preferredSize },\n\t\t\t\tSIIGBF_BIGGERSIZEOK | SIIGBF_ICONONLY,\n\t\t\t\thBmp.put()\n\t\t\t);\n\n\t\t\tif (hr == E_PENDING) {\n\t\t\t\t// 等待提取完成\n\t\t\t\tSleep(0);\n\t\t\t\tcontinue;\n\t\t\t} else if (FAILED(hr)) {\n\t\t\t\treturn nullptr;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tBITMAP bmp{};\n\tGetObject(hBmp.get(), sizeof(BITMAP), &bmp);\n\n\tSoftwareBitmap bitmap(BitmapPixelFormat::Bgra8, bmp.bmWidth, bmp.bmHeight, BitmapAlphaMode::Premultiplied);\n\t{\n\t\tBitmapBuffer buffer = bitmap.LockBuffer(BitmapBufferAccessMode::Write);\n\t\tuint8_t* pixels = buffer.CreateReference().data();\n\n\t\tif (!CopyPixelsOfHBmp(hBmp.get(), bmp.bmWidth, bmp.bmHeight, pixels)) {\n\t\t\treturn nullptr;\n\t\t}\n\n\t\tconst size_t pixelsSize = size_t(bmp.bmWidth * bmp.bmHeight * 4);\n\t\tfor (size_t i = 0; i < pixelsSize; i += 4) {\n\t\t\t// 预乘 Alpha 通道\n\t\t\tfloat alpha = pixels[i + 3] / 255.0f;\n\n\t\t\tpixels[i] = (BYTE)std::lroundf(pixels[i] * alpha);\n\t\t\tpixels[i + 1] = (BYTE)std::lroundf(pixels[i + 1] * alpha);\n\t\t\tpixels[i + 2] = (BYTE)std::lroundf(pixels[i + 2] * alpha);\n\t\t}\n\t}\n\n\treturn bitmap;\n}\n\nSoftwareBitmap IconHelper::ExtractAppSmallIcon() {\n\t// 小图标在多处使用，应该缓存\n\tstatic SoftwareBitmap result = ExtractAppIcon(40);\n\treturn result;\n}\n\nSoftwareBitmap IconHelper::ExtractAppIcon(uint32_t preferredSize) {\n\t/// LoadImage 比 SHDefExtractIcon 快两倍左右\n\twil::unique_hicon hIcon((HICON)LoadImage(\n\t\tGetModuleHandle(nullptr),\n\t\tMAKEINTRESOURCE(IDI_APP),\n\t\tIMAGE_ICON,\n\t\tpreferredSize,\n\t\tpreferredSize,\n\t\tLR_DEFAULTCOLOR\n\t));\n\tif (!hIcon) {\n\t\tLogger::Get().Win32Error(\"提取程序图标失败\");\n\t\treturn nullptr;\n\t}\n\n\treturn HIcon2SoftwareBitmap(hIcon.get());\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/IconHelper.h",
    "content": "#pragma once\n\nnamespace Magpie {\n\nstruct IconHelper {\n\tstatic winrt::Windows::Graphics::Imaging::SoftwareBitmap ExtractIconFormWnd(HWND hWnd, uint32_t preferredSize);\n\tstatic winrt::Windows::Graphics::Imaging::SoftwareBitmap ExtractIconFromExe(const wchar_t* fileName, uint32_t preferredSize);\n\tstatic winrt::Windows::Graphics::Imaging::SoftwareBitmap ExtractAppSmallIcon();\n\tstatic winrt::Windows::Graphics::Imaging::SoftwareBitmap ExtractAppIcon(uint32_t preferredSize);\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/IsEqualStateTrigger.cpp",
    "content": "#include \"pch.h\"\n#include \"IsEqualStateTrigger.h\"\n#if __has_include(\"IsEqualStateTrigger.g.cpp\")\n#include \"IsEqualStateTrigger.g.cpp\"\n#endif\n\nnamespace winrt::Magpie::implementation {\n\nDependencyProperty IsEqualStateTrigger::_valueProperty{ nullptr };\nDependencyProperty IsEqualStateTrigger::_toProperty{ nullptr };\n\nvoid IsEqualStateTrigger::RegisterDependencyProperties() {\n\t_valueProperty = DependencyProperty::Register(\n\t\tL\"Value\",\n\t\txaml_typename<IInspectable>(),\n\t\txaml_typename<Magpie::IsEqualStateTrigger>(),\n\t\tPropertyMetadata(nullptr, &IsEqualStateTrigger::_OnPropertyChanged)\n\t);\n\n\t_toProperty = DependencyProperty::Register(\n\t\tL\"To\",\n\t\txaml_typename<IInspectable>(),\n\t\txaml_typename<Magpie::IsEqualStateTrigger>(),\n\t\tPropertyMetadata(nullptr, &IsEqualStateTrigger::_OnPropertyChanged)\n\t);\n}\n\nvoid IsEqualStateTrigger::_OnPropertyChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {\n\tget_self<IsEqualStateTrigger>(sender.try_as<Magpie::IsEqualStateTrigger>())->_UpdateTrigger();\n}\n\nstatic bool AreValuesEqual(IInspectable const& value1, IInspectable const& value2) {\n\tif (value1 == value2) {\n\t\treturn true;\n\t}\n\n\tif (!value1 || !value2) {\n\t\treturn false;\n\t}\n\n\tif (get_class_name(value1) != get_class_name(value2)) {\n\t\treturn false;\n\t}\n\t\n\tif (IPropertyValue v1 = value1.try_as<IPropertyValue>()) {\n\t\tIPropertyValue v2 = value1.try_as<IPropertyValue>();\n\n\t\t// 没有必要为每种类型都添加处理逻辑，IsEqualStateTrigger 目前只在 SettingsCard 中用于比较枚举类型\n\t\tswitch (v1.Type()) {\n\t\tcase PropertyType::OtherType:\n\t\t{\n\t\t\treturn value1.try_as<ContentAlignment>() == value2.try_as<ContentAlignment>();\n\t\t}\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n}\n\nvoid IsEqualStateTrigger::_UpdateTrigger() {\n\tSetActive(AreValuesEqual(Value(), To()));\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/IsEqualStateTrigger.h",
    "content": "#pragma once\n#include \"IsEqualStateTrigger.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct IsEqualStateTrigger : IsEqualStateTriggerT<IsEqualStateTrigger> {\n\tstatic void RegisterDependencyProperties();\n\tstatic DependencyProperty ValueProperty() { return _valueProperty; }\n\tstatic DependencyProperty ToProperty() { return _toProperty; }\n\n\tIInspectable Value() const { return GetValue(_valueProperty); }\n\tvoid Value(IInspectable const& value) { SetValue(_valueProperty, value); }\n\n\tIInspectable To() const { return GetValue(_toProperty); }\n\tvoid To(IInspectable const& value) { SetValue(_toProperty, value); }\n\nprivate:\n\tstatic DependencyProperty _valueProperty;\n\tstatic DependencyProperty _toProperty;\n\n\tstatic void _OnPropertyChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&);\n\n\tvoid _UpdateTrigger();\n};\n\n}\n\nBASIC_FACTORY(IsEqualStateTrigger)\n"
  },
  {
    "path": "src/Magpie/IsEqualStateTrigger.idl",
    "content": "namespace Magpie {\n\truntimeclass IsEqualStateTrigger : Windows.UI.Xaml.StateTriggerBase {\n\t\tIsEqualStateTrigger();\n\t\t\n\t\tObject Value;\n\t\tObject To;\n\n\t\tstatic Windows.UI.Xaml.DependencyProperty ValueProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty ToProperty { get; };\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/IsNullStateTrigger.cpp",
    "content": "#include \"pch.h\"\n#include \"IsNullStateTrigger.h\"\n#if __has_include(\"IsNullStateTrigger.g.cpp\")\n#include \"IsNullStateTrigger.g.cpp\"\n#endif\n\nnamespace winrt::Magpie::implementation {\n\nDependencyProperty IsNullStateTrigger::_valueProperty{ nullptr };\n\nIsNullStateTrigger::IsNullStateTrigger() {\n\t_UpdateTrigger();\n}\n\nvoid IsNullStateTrigger::RegisterDependencyProperties() {\n\t_valueProperty = DependencyProperty::Register(\n\t\tL\"Value\",\n\t\txaml_typename<IInspectable>(),\n\t\txaml_typename<Magpie::IsNullStateTrigger>(),\n\t\tPropertyMetadata(nullptr, &IsNullStateTrigger::_OnValueChanged)\n\t);\n}\n\nvoid IsNullStateTrigger::_OnValueChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {\n\tget_self<IsNullStateTrigger>(sender.try_as<Magpie::IsNullStateTrigger>())->_UpdateTrigger();\n}\n\nvoid IsNullStateTrigger::_UpdateTrigger() {\n\tSetActive(!Value());\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/IsNullStateTrigger.h",
    "content": "#pragma once\n#include \"IsNullStateTrigger.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct IsNullStateTrigger : IsNullStateTriggerT<IsNullStateTrigger> {\n\tIsNullStateTrigger();\n\n\tstatic void RegisterDependencyProperties();\n\tstatic DependencyProperty ValueProperty() { return _valueProperty; }\n\n\tIInspectable Value() const { return GetValue(_valueProperty); }\n\tvoid Value(IInspectable const& value) { SetValue(_valueProperty, value); }\n\nprivate:\n\tstatic DependencyProperty _valueProperty;\n\n\tstatic void _OnValueChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&);\n\n\tvoid _UpdateTrigger();\n};\n\n}\n\nBASIC_FACTORY(IsNullStateTrigger)\n"
  },
  {
    "path": "src/Magpie/IsNullStateTrigger.idl",
    "content": "namespace Magpie {\n\truntimeclass IsNullStateTrigger : Windows.UI.Xaml.StateTriggerBase {\n\t\tIsNullStateTrigger();\n\t\t\n\t\tObject Value;\n\t\tstatic Windows.UI.Xaml.DependencyProperty ValueProperty { get; };\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/JsonHelper.cpp",
    "content": "#include \"pch.h\"\n#include \"JsonHelper.h\"\n#include \"StrHelper.h\"\n\nnamespace Magpie {\n\nbool JsonHelper::ReadBool(\n\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\tconst char* name,\n\tbool& result,\n\tbool required\n) noexcept {\n\tauto node = obj.FindMember(name);\n\tif (node == obj.MemberEnd()) {\n\t\treturn !required;\n\t}\n\n\tif (!node->value.IsBool()) {\n\t\treturn false;\n\t}\n\n\tresult = node->value.GetBool();\n\treturn true;\n}\n\nbool JsonHelper::ReadBoolFlag(\n\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\tconst char* nodeName,\n\tuint32_t flagBit,\n\tuint32_t& flags,\n\tbool required\n) noexcept {\n\tauto node = obj.FindMember(nodeName);\n\tif (node == obj.MemberEnd()) {\n\t\treturn !required;\n\t}\n\n\tif (!node->value.IsBool()) {\n\t\treturn false;\n\t}\n\n\tif (node->value.GetBool()) {\n\t\tflags |= flagBit;\n\t} else {\n\t\tflags &= ~flagBit;\n\t}\n\n\treturn true;\n}\n\nbool JsonHelper::ReadUInt(\n\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\tconst char* name,\n\tuint32_t& result,\n\tbool required\n) noexcept {\n\tauto node = obj.FindMember(name);\n\tif (node == obj.MemberEnd()) {\n\t\treturn !required;\n\t}\n\n\tif (!node->value.IsUint()) {\n\t\treturn false;\n\t}\n\n\tresult = node->value.GetUint();\n\treturn true;\n}\n\nbool JsonHelper::ReadUInt16(\n\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\tconst char* name,\n\tuint16_t& result,\n\tbool required\n) noexcept {\n\tuint32_t value = 0;\n\tif (!ReadUInt(obj, name, value, required)) {\n\t\treturn false;\n\t}\n\n\tassert(value >= std::numeric_limits<uint16_t>::min() &&\n\t\tvalue <= std::numeric_limits<uint16_t>::max());\n\t\n\tresult = (uint16_t)value;\n\treturn true;\n}\n\nbool JsonHelper::ReadInt(\n\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\tconst char* name,\n\tint& result,\n\tbool required\n) noexcept {\n\tauto node = obj.FindMember(name);\n\tif (node == obj.MemberEnd()) {\n\t\treturn !required;\n\t}\n\n\tif (!node->value.IsInt()) {\n\t\treturn false;\n\t}\n\n\tresult = node->value.GetInt();\n\treturn true;\n}\n\nbool JsonHelper::ReadInt64(\n\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\tconst char* name,\n\tint64_t& result,\n\tbool required\n) noexcept {\n\tauto node = obj.FindMember(name);\n\tif (node == obj.MemberEnd()) {\n\t\treturn !required;\n\t}\n\n\tif (!node->value.IsInt64()) {\n\t\treturn false;\n\t}\n\n\tresult = node->value.GetInt64();\n\treturn true;\n}\n\nbool JsonHelper::ReadFloat(\n\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\tconst char* name,\n\tfloat& result,\n\tbool required\n) noexcept {\n\tauto node = obj.FindMember(name);\n\tif (node == obj.MemberEnd()) {\n\t\treturn !required;\n\t}\n\n\tif (!node->value.IsNumber()) {\n\t\treturn false;\n\t}\n\n\tresult = node->value.GetFloat();\n\treturn true;\n}\n\nbool JsonHelper::ReadString(\n\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\tconst char* name,\n\tstd::wstring& result,\n\tbool required\n) noexcept {\n\tauto node = obj.FindMember(name);\n\tif (node == obj.MemberEnd()) {\n\t\treturn !required;\n\t}\n\n\tif (!node->value.IsString()) {\n\t\treturn false;\n\t}\n\n\tresult = StrHelper::UTF8ToUTF16(node->value.GetString());\n\treturn true;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/JsonHelper.h",
    "content": "#pragma once\n#include <rapidjson/document.h>\n\nnamespace Magpie {\n\nstruct JsonHelper {\n\tstatic bool ReadBool(\n\t\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\t\tconst char* name,\n\t\tbool& result,\n\t\tbool required = false\n\t) noexcept;\n\n\tstatic bool ReadBoolFlag(\n\t\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\t\tconst char* nodeName,\n\t\tuint32_t flagBit,\n\t\tuint32_t& flags,\n\t\tbool required = false\n\t) noexcept;\n\n\tstatic bool ReadUInt(\n\t\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\t\tconst char* name,\n\t\tuint32_t& result,\n\t\tbool required = false\n\t) noexcept;\n\n\tstatic bool ReadUInt16(\n\t\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\t\tconst char* name,\n\t\tuint16_t& result,\n\t\tbool required = false\n\t) noexcept;\n\n\tstatic bool ReadInt(\n\t\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\t\tconst char* name,\n\t\tint& result,\n\t\tbool required = false\n\t) noexcept;\n\n\tstatic bool ReadInt64(\n\t\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\t\tconst char* name,\n\t\tint64_t& result,\n\t\tbool required = false\n\t) noexcept;\n\n\tstatic bool ReadFloat(\n\t\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\t\tconst char* name,\n\t\tfloat& result,\n\t\tbool required = false\n\t) noexcept;\n\n\tstatic bool ReadString(\n\t\tconst rapidjson::GenericObject<true, rapidjson::Value>& obj,\n\t\tconst char* name,\n\t\tstd::wstring& result,\n\t\tbool required = false\n\t) noexcept;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/KeyVisual.Resource.xaml",
    "content": "<!--  移植自 https://github.com/microsoft/PowerToys/blob/35bfb0f83e5fc08cc04398e7aa98d77774412d3f/src/settings-ui/Settings.UI/Controls/KeyVisual/KeyVisual.xaml  -->\n<!--  26100 SDK 存在 bug，导致所有 XAML 文件都必须指定 x:Class，一旦修复应还原更改  -->\n<ResourceDictionary x:Class=\"Magpie.KeyVisualStyle\"\n                    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n                    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n                    xmlns:local=\"using:Magpie\">\n\n\t<x:Double x:Key=\"DefaultIconSize\">16</x:Double>\n\t<x:Double x:Key=\"SmallIconSize\">12</x:Double>\n\t<Style x:Key=\"DefaultTextKeyVisualStyle\"\n\t       TargetType=\"local:KeyVisual\">\n\t\t<Setter Property=\"MinWidth\" Value=\"56\" />\n\t\t<Setter Property=\"MinHeight\" Value=\"48\" />\n\t\t<Setter Property=\"Background\" Value=\"{ThemeResource AccentButtonBackground}\" />\n\t\t<Setter Property=\"Foreground\" Value=\"{ThemeResource AccentButtonForeground}\" />\n\t\t<Setter Property=\"BorderBrush\" Value=\"{ThemeResource AccentButtonBorderBrush}\" />\n\t\t<Setter Property=\"BorderThickness\" Value=\"{ThemeResource ButtonBorderThemeThickness}\" />\n\t\t<Setter Property=\"Padding\" Value=\"16,8,16,8\" />\n\t\t<Setter Property=\"FontWeight\" Value=\"SemiBold\" />\n\t\t<Setter Property=\"HorizontalAlignment\" Value=\"Center\" />\n\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Center\" />\n\t\t<Setter Property=\"FontSize\" Value=\"18\" />\n\t\t<Setter Property=\"Template\">\n\t\t\t<Setter.Value>\n\t\t\t\t<ControlTemplate TargetType=\"local:KeyVisual\">\n\t\t\t\t\t<Grid>\n\t\t\t\t\t\t<Grid>\n\t\t\t\t\t\t\t<Rectangle x:Name=\"ContentHolder\"\n\t\t\t\t\t\t\t           Height=\"{TemplateBinding Height}\"\n\t\t\t\t\t\t\t           MinWidth=\"{TemplateBinding MinWidth}\"\n\t\t\t\t\t\t\t           Fill=\"{TemplateBinding Background}\"\n\t\t\t\t\t\t\t           RadiusX=\"4\"\n\t\t\t\t\t\t\t           RadiusY=\"4\"\n\t\t\t\t\t\t\t           Stroke=\"{TemplateBinding BorderBrush}\"\n\t\t\t\t\t\t\t           StrokeThickness=\"{TemplateBinding BorderThickness}\" />\n\t\t\t\t\t\t\t<ContentPresenter x:Name=\"KeyPresenter\"\n\t\t\t\t\t\t\t                  Margin=\"{TemplateBinding Padding}\"\n\t\t\t\t\t\t\t                  HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n\t\t\t\t\t\t\t                  VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t                  FontSize=\"{TemplateBinding FontSize}\"\n\t\t\t\t\t\t\t                  FontWeight=\"{TemplateBinding FontWeight}\"\n\t\t\t\t\t\t\t                  Foreground=\"{TemplateBinding Foreground}\" />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<VisualStateManager.VisualStateGroups>\n\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"CommonStates\">\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"Normal\" />\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"Disabled\">\n\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ContentHolder.Fill\" Value=\"{ThemeResource AccentButtonBackgroundDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"KeyPresenter.Foreground\" Value=\"{ThemeResource AccentButtonForegroundDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ContentHolder.Stroke\" Value=\"{ThemeResource AccentButtonBorderBrushDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t<!--<Setter Target=\"ContentHolder.StrokeThickness\" Value=\"{TemplateBinding BorderThickness}\" />-->\n\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t</VisualStateGroup>\n\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"StateStates\">\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"Default\" />\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"Error\">\n\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ContentHolder.Fill\" Value=\"{ThemeResource InfoBarErrorSeverityBackgroundBrush}\" />\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"KeyPresenter.Foreground\" Value=\"{ThemeResource InfoBarErrorSeverityIconBackground}\" />\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ContentHolder.Stroke\" Value=\"{ThemeResource InfoBarErrorSeverityIconBackground}\" />\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"ContentHolder.StrokeThickness\" Value=\"2\" />\n\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t</VisualStateGroup>\n\t\t\t\t\t\t</VisualStateManager.VisualStateGroups>\n\t\t\t\t\t</Grid>\n\t\t\t\t</ControlTemplate>\n\t\t\t</Setter.Value>\n\t\t</Setter>\n\t</Style>\n\n\t<Style x:Key=\"SmallTextKeyVisualStyle\"\n\t       BasedOn=\"{StaticResource DefaultTextKeyVisualStyle}\"\n\t       TargetType=\"local:KeyVisual\">\n\t\t<Setter Property=\"MinWidth\" Value=\"40\" />\n\t\t<Setter Property=\"Height\" Value=\"36\" />\n\t\t<Setter Property=\"FontWeight\" Value=\"SemiBold\" />\n\t\t<Setter Property=\"Padding\" Value=\"12,0,12,2\" />\n\t\t<Setter Property=\"FontSize\" Value=\"14\" />\n\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Center\" />\n\t</Style>\n\n\t<Style x:Key=\"SmallOutlineTextKeyVisualStyle\"\n\t       BasedOn=\"{StaticResource DefaultTextKeyVisualStyle}\"\n\t       TargetType=\"local:KeyVisual\">\n\t\t<Setter Property=\"MinWidth\" Value=\"40\" />\n\t\t<Setter Property=\"Background\" Value=\"{ThemeResource ButtonBackground}\" />\n\t\t<Setter Property=\"Foreground\" Value=\"{ThemeResource ButtonForeground}\" />\n\t\t<Setter Property=\"BorderBrush\" Value=\"{ThemeResource ButtonBorderBrush}\" />\n\t\t<Setter Property=\"Height\" Value=\"36\" />\n\t\t<Setter Property=\"FontWeight\" Value=\"SemiBold\" />\n\t\t<Setter Property=\"Padding\" Value=\"8,0,8,2\" />\n\t\t<Setter Property=\"FontSize\" Value=\"13\" />\n\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Center\" />\n\t</Style>\n\n\n\t<Style x:Key=\"DefaultIconKeyVisualStyle\"\n\t       BasedOn=\"{StaticResource DefaultTextKeyVisualStyle}\"\n\t       TargetType=\"local:KeyVisual\">\n\t\t<Setter Property=\"MinWidth\" Value=\"56\" />\n\t\t<Setter Property=\"MinHeight\" Value=\"48\" />\n\t\t<Setter Property=\"FontFamily\" Value=\"{ThemeResource SymbolThemeFontFamily}\" />\n\t\t<Setter Property=\"Padding\" Value=\"16,8,16,8\" />\n\t\t<Setter Property=\"FontSize\" Value=\"14\" />\n\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Center\" />\n\t</Style>\n\n\t<Style x:Key=\"SmallIconKeyVisualStyle\"\n\t       BasedOn=\"{StaticResource DefaultTextKeyVisualStyle}\"\n\t       TargetType=\"local:KeyVisual\">\n\t\t<Setter Property=\"MinWidth\" Value=\"40\" />\n\t\t<Setter Property=\"Height\" Value=\"36\" />\n\t\t<Setter Property=\"FontFamily\" Value=\"{ThemeResource SymbolThemeFontFamily}\" />\n\t\t<Setter Property=\"FontWeight\" Value=\"Normal\" />\n\t\t<Setter Property=\"Padding\" Value=\"0\" />\n\t\t<Setter Property=\"FontSize\" Value=\"10\" />\n\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Center\" />\n\t</Style>\n\n\t<Style x:Key=\"SmallOutlineIconKeyVisualStyle\"\n\t       BasedOn=\"{StaticResource DefaultTextKeyVisualStyle}\"\n\t       TargetType=\"local:KeyVisual\">\n\t\t<Setter Property=\"MinWidth\" Value=\"40\" />\n\t\t<Setter Property=\"Background\" Value=\"{ThemeResource ButtonBackground}\" />\n\t\t<Setter Property=\"Foreground\" Value=\"{ThemeResource ButtonForeground}\" />\n\t\t<Setter Property=\"BorderBrush\" Value=\"{ThemeResource ButtonBorderBrush}\" />\n\t\t<Setter Property=\"FontFamily\" Value=\"{ThemeResource SymbolThemeFontFamily}\" />\n\t\t<Setter Property=\"Height\" Value=\"36\" />\n\t\t<Setter Property=\"FontWeight\" Value=\"SemiBold\" />\n\t\t<Setter Property=\"Padding\" Value=\"0\" />\n\t\t<Setter Property=\"FontSize\" Value=\"9\" />\n\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Center\" />\n\t</Style>\n</ResourceDictionary>\n"
  },
  {
    "path": "src/Magpie/KeyVisual.cpp",
    "content": "#include \"pch.h\"\n#include \"KeyVisual.h\"\n#if __has_include(\"KeyVisual.g.cpp\")\n#include \"KeyVisual.g.cpp\"\n#endif\n#if __has_include(\"KeyVisualStyle.g.cpp\")\n#include \"KeyVisualStyle.g.cpp\"\n#endif\n#include \"StrHelper.h\"\n#include \"Win32Helper.h\"\n#include \"App.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Controls;\nusing namespace Windows::UI::Xaml::Markup;\n\nnamespace winrt::Magpie::implementation {\n\nKeyVisual::KeyVisual() {\n\tDefaultStyleKey(box_value(GetRuntimeClassName()));\n\tStyle(_GetStyleSize(L\"TextKeyVisualStyle\"));\n}\n\nvoid KeyVisual::Key(int value) {\n\tif (value == _key) {\n\t\treturn;\n\t}\n\n\t_key = value;\n\tRaisePropertyChanged(L\"Key\");\n\n\t_Update();\n}\n\nvoid KeyVisual::VisualType(winrt::Magpie::VisualType value) {\n\tif (value == _visualType) {\n\t\treturn;\n\t}\n\n\t_visualType = value;\n\tRaisePropertyChanged(L\"VisualType\");\n\n\t_Update();\n}\n\nvoid KeyVisual::IsError(bool value) {\n\tif (value == _isError) {\n\t\treturn;\n\t}\n\n\t_isError = value;\n\tRaisePropertyChanged(L\"IsError\");\n\n\t_SetErrorState();\n}\n\nvoid KeyVisual::OnApplyTemplate() {\n\tbase_type::OnApplyTemplate();\n\n\t_isEnabledChangedRevoker.revoke();\n\n\t_keyPresenter = GetTemplateChild(L\"KeyPresenter\").try_as<ContentPresenter>();\n\n\t_Update();\n\t_SetEnabledState();\n\t_SetErrorState();\n\n\t_isEnabledChangedRevoker = IsEnabledChanged(auto_revoke, { this, &KeyVisual::_IsEnabledChanged });\n}\n\nvoid KeyVisual::_IsEnabledChanged(IInspectable const&, DependencyPropertyChangedEventArgs const&) {\n\t_SetEnabledState();\n}\n\nvoid KeyVisual::_Update() {\n\tif (!_keyPresenter) {\n\t\treturn;\n\t}\n\n\tuint8_t key = (uint8_t)Key();\n\tswitch (key) {\n\tcase VK_UP:\n\t\tStyle(_GetStyleSize(L\"IconKeyVisualStyle\"));\n\t\t_keyPresenter.Content(box_value(L\"\\uE96D\"));\n\t\tbreak;\n\tcase VK_DOWN:\n\t\tStyle(_GetStyleSize(L\"IconKeyVisualStyle\"));\n\t\t_keyPresenter.Content(box_value(L\"\\uE96E\"));\n\t\tbreak;\n\tcase VK_LEFT:\n\t\tStyle(_GetStyleSize(L\"IconKeyVisualStyle\"));\n\t\t_keyPresenter.Content(box_value(L\"\\uE96F\"));\n\t\tbreak;\n\tcase VK_RIGHT:\n\t\tStyle(_GetStyleSize(L\"IconKeyVisualStyle\"));\n\t\t_keyPresenter.Content(box_value(L\"\\uE970\"));\n\t\tbreak;\n\tcase VK_LWIN:\n\t{\n\t\tStyle(_GetStyleSize(L\"IconKeyVisualStyle\"));\n\n\t\tPathIcon winIcon = XamlReader::Load(LR\"(<PathIcon xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" Data=\"M9,17V9h8v8ZM0,17V9H8v8ZM9,8V0h8V8ZM0,8V0H8V8Z\" />)\").try_as<PathIcon>();\n\t\tViewbox winIconContainer;\n\t\twinIconContainer.Child(winIcon);\n\t\twinIconContainer.HorizontalAlignment(HorizontalAlignment::Center);\n\t\twinIconContainer.VerticalAlignment(VerticalAlignment::Center);\n\n\t\tdouble iconDimensions = _GetIconSize();\n\t\twinIconContainer.Height(iconDimensions);\n\t\twinIconContainer.Width(iconDimensions);\n\t\t_keyPresenter.Content(winIconContainer);\n\t\tbreak;\n\t}\n\tcase VK_LCONTROL:\n\t\tStyle(_GetStyleSize(L\"TextKeyVisualStyle\"));\n\t\t_keyPresenter.Content(box_value(L\"Ctrl\"));\n\t\tbreak;\n\tcase VK_LMENU:\n\t\tStyle(_GetStyleSize(L\"TextKeyVisualStyle\"));\n\t\t_keyPresenter.Content(box_value(L\"Alt\"));\n\t\tbreak;\n\tcase VK_LSHIFT:\n\t\tStyle(_GetStyleSize(L\"TextKeyVisualStyle\"));\n\t\t_keyPresenter.Content(box_value(L\"Shift\"));\n\t\tbreak;\n\tdefault:\n\t\tStyle(_GetStyleSize(L\"TextKeyVisualStyle\"));\n\t\t_keyPresenter.Content(box_value(Win32Helper::GetKeyName(key)));\n\t\tbreak;\n\t}\n}\n\nStyle KeyVisual::_GetStyleSize(std::wstring_view styleName) const {\n\tconst wchar_t* prefix = nullptr;\n\n\tMagpie::VisualType vt = VisualType();\n\tif (vt == VisualType::Small) {\n\t\tprefix = L\"Small\";\n\t} else if (vt == VisualType::SmallOutline) {\n\t\tprefix = L\"SmallOutline\";\n\t} else {\n\t\tprefix = L\"Default\";\n\t}\n\n\treturn App::Get().Resources()\n\t\t.Lookup(box_value(StrHelper::Concat(prefix, styleName)))\n\t\t.try_as<Windows::UI::Xaml::Style>();\n}\n\ndouble KeyVisual::_GetIconSize() const {\n\tconst wchar_t* key = nullptr;\n\n\tMagpie::VisualType vt = VisualType();\n\tif (vt == VisualType::Small || vt == VisualType::SmallOutline) {\n\t\tkey = L\"SmallIconSize\";\n\t} else {\n\t\tkey = L\"DefaultIconSize\";\n\t}\n\n\treturn App::Get().Resources()\n\t\t.Lookup(box_value(key))\n\t\t.try_as<double>().value();\n}\n\nvoid KeyVisual::_SetErrorState() {\n\tVisualStateManager::GoToState(*this, IsError() ? L\"Error\" : L\"Default\", true);\n}\n\nvoid KeyVisual::_SetEnabledState() {\n\tVisualStateManager::GoToState(*this, IsEnabled() ? L\"Normal\" : L\"Disabled\", true);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/KeyVisual.h",
    "content": "#pragma once\n#include \"KeyVisual.g.h\"\n#include \"KeyVisualStyle.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct KeyVisual : KeyVisualT<KeyVisual>, wil::notify_property_changed_base<KeyVisual> {\n\tKeyVisual();\n\n\tint Key() const noexcept { return _key; }\n\tvoid Key(int value);\n\n\twinrt::Magpie::VisualType VisualType() const noexcept { return _visualType; }\n\tvoid VisualType(winrt::Magpie::VisualType value);\n\n\tbool IsError() const noexcept { return _isError; }\n\tvoid IsError(bool value);\n\n\tvoid OnApplyTemplate();\n\nprivate:\n\tvoid _IsEnabledChanged(IInspectable const&, DependencyPropertyChangedEventArgs const&);\n\n\tvoid _Update();\n\tWindows::UI::Xaml::Style _GetStyleSize(std::wstring_view styleName) const;\n\tdouble _GetIconSize() const;\n\n\tvoid _SetErrorState();\n\tvoid _SetEnabledState();\n\n\tint _key = 0;\n\twinrt::Magpie::VisualType _visualType = winrt::Magpie::VisualType::Small;\n\tbool _isError = false;\n\n\tContentPresenter _keyPresenter{ nullptr };\n\tIsEnabledChanged_revoker _isEnabledChangedRevoker;\n};\n\nstruct KeyVisualStyle : KeyVisualStyleT<KeyVisualStyle> {};\n\n}\n\nBASIC_FACTORY(KeyVisual)\nBASIC_FACTORY(KeyVisualStyle)\n"
  },
  {
    "path": "src/Magpie/KeyVisual.idl",
    "content": "namespace Magpie {\n\tenum VisualType {\n\t\tSmall,\n\t\tSmallOutline,\n\t\tLarge\n\t};\n\n\t[Windows.UI.Xaml.TemplateVisualState(\"Normal\", \"CommonStates\")]\n\t[Windows.UI.Xaml.TemplateVisualState(\"Disabled\", \"CommonStates\")]\n\t[Windows.UI.Xaml.TemplateVisualState(\"Default\", \"StateStates\")]\n\t[Windows.UI.Xaml.TemplateVisualState(\"Error\", \"StateStates\")]\n\truntimeclass KeyVisual : Windows.UI.Xaml.Controls.Control, Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tKeyVisual();\n\n\t\tInt32 Key;\n\t\tVisualType VisualType;\n\t\tBoolean IsError;\n\t}\n\n\t[default_interface]\n\truntimeclass KeyVisualStyle : Windows.UI.Xaml.ResourceDictionary {\n\t\tKeyVisualStyle();\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/KeyVisualState.cpp",
    "content": "﻿#include \"pch.h\"\n#include \"KeyVisualState.h\"\n#if __has_include(\"KeyVisualState.g.cpp\")\n#include \"KeyVisualState.g.cpp\"\n#endif\n"
  },
  {
    "path": "src/Magpie/KeyVisualState.h",
    "content": "﻿#pragma once\n#include \"KeyVisualState.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\n// 用于 ShortcutControl 和 ShortcutDialog 绑定\nstruct KeyVisualState : KeyVisualStateT<KeyVisualState> {\n    KeyVisualState(int key, bool isError) : _key(key), _isError(isError) {}\n\n    int Key() const noexcept { return _key; }\n    bool IsError() const noexcept { return _isError; }\n\nprivate:\n    int _key;\n    bool _isError;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/KeyVisualState.idl",
    "content": "namespace Magpie {\n\truntimeclass KeyVisualState {\n\t\tInt32 Key { get; };\n\t\tBoolean IsError { get; };\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/LocalizationService.cpp",
    "content": "#include \"pch.h\"\n#include \"AppSettings.h\"\n#include \"LocalizationService.h\"\n#include <bcp47mrm.h>\n#include <winrt/Windows.System.UserProfile.h>\n\nusing namespace winrt;\n\nnamespace Magpie {\n\n// 标签必须为小写\nstatic std::array SUPPORTED_LANGUAGES{\n\tL\"de\",\n\tL\"en-us\",\n\tL\"es\",\n\tL\"fr\",\n\tL\"id\",\n\tL\"it\",\n\tL\"ja\",\n\tL\"ko\",\n\tL\"pl\",\n\tL\"pt-br\",\n\tL\"ru\",\n\tL\"ta\",\n\tL\"tr\",\n\tL\"uk\",\n\tL\"vi\",\n\tL\"zh-hans\",\n\tL\"zh-hant\"\n};\n\nvoid LocalizationService::EarlyInitialize() {\n\t// 非打包应用默认使用“Windows 显示语言”，这里自行切换至“首选语言”\n\tstd::wstring userLanguages;\n\tfor (const hstring& language : UserProfile::GlobalizationPreferences::Languages()) {\n\t\tuserLanguages += language;\n\t\tuserLanguages += L'\\0';\n\t}\n\t// 要求双空结尾\n\tuserLanguages += L'\\0';\n\n\tdouble bestScore = 0.0;\n\t// 没有支持的语言则回落到英语\n\tconst wchar_t* bestLanguage = L\"en-us\";\n\tfor (const wchar_t* language : SUPPORTED_LANGUAGES) {\n\t\tdouble score = 0.0;\n\t\tHRESULT hr = GetDistanceOfClosestLanguageInList(language, userLanguages.data(), 0, &score);\n\t\tif (FAILED(hr)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (score > bestScore) {\n\t\t\tbestScore = score;\n\t\t\tbestLanguage = language;\n\n\t\t\tif (score == 1.0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t_Language(bestLanguage);\n}\n\nvoid LocalizationService::Initialize() {\n\tAppSettings& settings = AppSettings::Get();\n\n\tint language = settings.Language();\n\tif (language >= 0) {\n\t\t_Language(SUPPORTED_LANGUAGES[language]);\n\t}\n}\n\nstd::span<const wchar_t*> LocalizationService::SupportedLanguages() noexcept {\n\treturn SUPPORTED_LANGUAGES;\n}\n\nvoid LocalizationService::_Language(const wchar_t* tag) {\n\t_language = tag;\n\tResourceContext::SetGlobalQualifierValue(L\"Language\", tag);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/LocalizationService.h",
    "content": "#pragma once\n\nnamespace Magpie {\n\nclass LocalizationService {\npublic:\n\tstatic LocalizationService& Get() noexcept {\n\t\tstatic LocalizationService instance;\n\t\treturn instance;\n\t}\n\n\tLocalizationService(const LocalizationService&) = delete;\n\tLocalizationService(LocalizationService&&) = delete;\n\n\t// 在初始化 AppSettings 前调用以使用系统默认语言，然后就可以从 AppSettings 里读取语言设置\n\tvoid EarlyInitialize();\n\n\tvoid Initialize();\n\n\t// 支持的所有语言的标签，均为小写\n\tstatic std::span<const wchar_t* > SupportedLanguages() noexcept;\n\n\tconst wchar_t* Language() const noexcept {\n\t\treturn _language;\n\t}\n\nprivate:\n\tLocalizationService() = default;\n\n\tvoid _Language(const wchar_t* tag);\n\n\tconst wchar_t* _language = nullptr;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/Magpie.rc",
    "content": "#pragma code_page(65001)\n\n#include \"winres.h\"\n#include \"resource.h\"\n#include \"StrMacros.h\"\n\n// en-US\nLANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\n\n/////////////////////////////////////////////////////////////////////////////\n//\n// Icon\n//\n\n// Icon with lowest ID value placed first to ensure application icon\n// remains consistent on all systems.\nIDI_APP                 ICON                    \"Magpie.ico\"\n\n/////////////////////////////////////////////////////////////////////////////\n//\n// Version\n//\n\nVS_VERSION_INFO VERSIONINFO\n FILEVERSION MP_MAJOR_VERSION, MP_MINOR_VERSION, MP_PATCH_VERSION, 0\n PRODUCTVERSION MP_MAJOR_VERSION, MP_MINOR_VERSION, MP_PATCH_VERSION, 0\n FILEFLAGSMASK VS_FFI_FILEFLAGSMASK\n#ifdef _DEBUG\n FILEFLAGS VS_FF_DEBUG\n#else\n FILEFLAGS 0x0L\n#endif\n FILEOS VOS_NT_WINDOWS32\n FILETYPE VFT_APP\n FILESUBTYPE VFT2_UNKNOWN\nBEGIN\n    BLOCK \"StringFileInfo\"\n    BEGIN\n        BLOCK \"040904b0\"\n        BEGIN\n#ifdef MP_VERSION_STRING\n            VALUE \"FileVersion\", STRINGIFY(MP_VERSION_STRING)\n            VALUE \"ProductVersion\", STRINGIFY(MP_VERSION_STRING)\n#elif defined(MP_COMMIT_ID)\n            VALUE \"FileVersion\", \"dev (\" STRINGIFY(MP_COMMIT_ID) \")\"\n            VALUE \"ProductVersion\", \"dev (\" STRINGIFY(MP_COMMIT_ID) \")\"\n#else\n            VALUE \"FileVersion\", \"dev\"\n            VALUE \"ProductVersion\", \"dev\"\n#endif\n            VALUE \"InternalName\", \"Magpie.exe\"\n            VALUE \"LegalCopyright\", \"Copyright © 2021-2025 Xu\"\n            VALUE \"OriginalFilename\", \"Magpie.exe\"\n            VALUE \"ProductName\", \"Magpie\"\n        END\n    END\n    BLOCK \"VarFileInfo\"\n    BEGIN\n        VALUE \"Translation\", 0x409, 1200\n    END\nEND\n"
  },
  {
    "path": "src/Magpie/Magpie.vcxproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"..\\..\\packages\\Microsoft.Windows.CppWinRT.2.0.250303.1\\build\\native\\Microsoft.Windows.CppWinRT.props\" Condition=\"Exists('..\\..\\packages\\Microsoft.Windows.CppWinRT.2.0.250303.1\\build\\native\\Microsoft.Windows.CppWinRT.props')\" />\n  <Import Project=\"..\\..\\packages\\Microsoft.UI.Xaml.2.8.7\\build\\native\\Microsoft.UI.Xaml.props\" Condition=\"Exists('..\\..\\packages\\Microsoft.UI.Xaml.2.8.7\\build\\native\\Microsoft.UI.Xaml.props')\" />\n  <PropertyGroup Label=\"Globals\">\n    <CppWinRTFastAbi>true</CppWinRTFastAbi>\n    <CppWinRTOptimized>true</CppWinRTOptimized>\n    <CppWinRTRootNamespaceAutoMerge>true</CppWinRTRootNamespaceAutoMerge>\n    <CppWinRTGenerateWindowsMetadata>true</CppWinRTGenerateWindowsMetadata>\n    <CppWinRTVerbosity>low</CppWinRTVerbosity>\n    <MinimalCoreWin>true</MinimalCoreWin>\n    <ProjectGuid>{1239537c-e5b8-427a-9e7f-ea443d1f3529}</ProjectGuid>\n    <RootNamespace>$(MSBuildProjectName)</RootNamespace>\n    <!-- 为了编译为 exe，AppContainerApplication 必须为 false，否则虽然可以编译但无法在 VS 中调试。 -->\n    <!-- 这会导致不会自动生成 pri，稍后我们手动导入 Microsoft.AppXPackage.Targets 来解决这个问题。 -->\n    <AppContainerApplication>false</AppContainerApplication>\n    <ApplicationType>Windows Store</ApplicationType>\n    <ApplicationTypeRevision>10.0</ApplicationTypeRevision>\n    <WindowsTargetPlatformVersion Condition=\"'$(WindowsTargetPlatformVersion)' == ''\">10.0.26100.0</WindowsTargetPlatformVersion>\n    <WindowsTargetPlatformMinVersion>10.0.26100.0</WindowsTargetPlatformMinVersion>\n    <IntDir>$(SolutionDir)\\obj\\$(Platform)\\$(Configuration)\\$(MSBuildProjectName)\\</IntDir>\n    <OutDir>$(SolutionDir)\\bin\\$(Platform)\\$(Configuration)\\</OutDir>\n    <GeneratedFilesDir>$(IntDir)\\Generated Files\\</GeneratedFilesDir>\n    <AppxBundlePlatforms>x64|arm64</AppxBundlePlatforms>\n    <DesktopCompatible>true</DesktopCompatible>\n    <!-- 将 xbf 文件打包进 pri -->\n    <!-- https://github.com/microsoft/terminal/blob/9eb191d5453fed890bad63952e425e1240aa8df5/src/cascadia/TerminalApp/TerminalAppLib.vcxproj#L17-L18 -->\n    <DisableEmbeddedXbf>false</DisableEmbeddedXbf>\n    <XamlComponentResourceLocation>nested</XamlComponentResourceLocation>\n    <!-- 防止 xbf 被复制到输出文件夹 -->\n    <GenerateLibraryLayout>true</GenerateLibraryLayout>\n    <!-- 直接生成 resources.pri，使用 ComputeInputPriFiles 合并引用的 pri -->\n    <ProjectPriFileName>resources.pri</ProjectPriFileName>\n    <!-- 跳过 CreateWinMD，这一步似乎是多余的，而且 clang-cl 不支持生成 winmd -->\n    <GenerateBuildCompilePassWinMD>false</GenerateBuildCompilePassWinMD>\n  </PropertyGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.Default.props\" />\n  <Import Project=\"..\\Common.Pre.props\" />\n  <PropertyGroup Label=\"Configuration\">\n    <ConfigurationType>Application</ConfigurationType>\n    <PlatformToolset Condition=\"$(VS17)\">v143</PlatformToolset>\n    <PlatformToolset Condition=\"!$(VS17)\">v145</PlatformToolset>\n    <CharacterSet>Unicode</CharacterSet>\n  </PropertyGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.props\" />\n  <PropertyGroup Condition=\"$(UseClangCL)\">\n    <!-- 来自 $(VCTargetsPath)\\Microsoft.Cpp.ClangCl.Common.props -->\n    <CLToolExe>clang-cl.exe</CLToolExe>\n    <LinkToolExe>lld-link.exe</LinkToolExe>\n    <LibToolExe>llvm-lib.exe</LibToolExe>\n    <LLVMInstallDir Condition=\"'$(PreferredToolArchitecture)' == 'x64'\">$(VsInstallRoot)\\VC\\Tools\\Llvm\\x64\\</LLVMInstallDir>\n    <LLVMInstallDir Condition=\"'$(PreferredToolArchitecture)' == 'arm64'\">$(VsInstallRoot)\\VC\\Tools\\Llvm\\ARM64\\</LLVMInstallDir>\n    <LLVMInstallDir Condition=\"'$(LLVMInstallDir)' == ''\">$(VsInstallRoot)\\VC\\Tools\\Llvm\\</LLVMInstallDir>\n    <ExecutablePath>$(LLVMInstallDir)\\bin;$(ExecutablePath)</ExecutablePath>\n    <!-- Add Clang include path for IntelliSense -->\n    <IncludePath>$(LLVMInstallDir)\\lib\\clang\\$(LLVMIncludeVersion)\\include;$(IncludePath)</IncludePath>\n    <ExcludePath>$(LLVMInstallDir)\\lib\\clang\\$(LLVMIncludeVersion)\\include;$(ExcludePath)</ExcludePath>\n    <!-- ClangCl is not compatible with MSVC analysis, use clang-tidy as default -->\n    <EnableMicrosoftCodeAnalysis>false</EnableMicrosoftCodeAnalysis>\n    <EnableClangTidyCodeAnalysis>true</EnableClangTidyCodeAnalysis>\n    <ClCompilerPath>$(ClangAnalysisToolsPath)\\clang-cl.exe</ClCompilerPath>\n    <LlvmArchitectureSwitch Condition=\"'$(Platform)'=='x64'\">--target=amd64-pc-windows-msvc</LlvmArchitectureSwitch>\n    <LlvmArchitectureSwitch Condition=\"'$(Platform)'=='ARM64'\">--target=arm64-pc-windows-msvc</LlvmArchitectureSwitch>\n    <!-- clang-cl 不支持 /MP，设置 MultiProcCL 属性可以并行运行多个 clang-cl 进程 -->\n    <MultiProcCL>true</MultiProcCL>\n  </PropertyGroup>\n  <ImportGroup Label=\"ExtensionSettings\">\n  </ImportGroup>\n  <ImportGroup Label=\"Shared\" />\n  <ImportGroup Label=\"PropertySheets\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n    <Import Project=\"$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.26100.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion),  $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\\DesignTime\\CommonConfiguration\\Neutral\\WindowsDesktop.props\" Condition=\"exists('$([Microsoft.Build.Utilities.ToolLocationHelper]::GetPlatformExtensionSDKLocation(`WindowsDesktop, Version=10.0.26100.0`, $(TargetPlatformIdentifier), $(TargetPlatformVersion),  $(SDKReferenceDirectoryRoot), $(SDKExtensionDirectoryRoot), $(SDKReferenceRegistryRoot)))\\DesignTime\\CommonConfiguration\\Neutral\\WindowsDesktop.props')\" />\n    <Import Project=\"..\\Common.Post.props\" />\n    <Import Project=\"..\\WinUI.targets\" />\n  </ImportGroup>\n  <PropertyGroup Label=\"UserMacros\" />\n  <ItemDefinitionGroup>\n    <ClCompile>\n      <!-- 删除用于 XAML 设计器的几个导出函数，编译为 exe 不需要它们。 -->\n      <!-- 另外这些导出函数不支持 ARM64，所以即使编译为 dll 也应禁用它们，然后自己导出 DllGetActivationFactory。 -->\n      <PreprocessorDefinitions>_VSDESIGNER_DONT_LOAD_AS_DLL;DISABLE_XAML_GENERATED_MAIN;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <!-- 不知为何 Directory.Build.props 中的不起作用 -->\n      <WarningLevel>Level4</WarningLevel>\n      <AdditionalIncludeDirectories>..\\Magpie.Core\\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\n    </ClCompile>\n    <ClCompile Condition=\"$(UseClangCL)\">\n      <AdditionalOptions>$(LlvmArchitectureSwitch) %(AdditionalOptions)</AdditionalOptions>\n      <!-- clang-cl 不支持 /ZI，而且 /Zi 和 /Z7 效果相同。 -->\n      <!-- Microsoft.Cpp.ClangCl.Common.target 始终使用 OldStyle (/Z7)，我们和它保持一致。 -->\n      <DebugInformationFormat Condition=\"'$(DisablePDB)' != 'true'\">OldStyle</DebugInformationFormat>\n      <!-- clang-cl 使用 MultiProcCL 属性实现并行编译 -->\n      <MultiProcessorCompilation>false</MultiProcessorCompilation>\n    </ClCompile>\n    <Link>\n      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>\n      <SubSystem>Windows</SubSystem>\n      <AdditionalDependencies>Gdi32.lib;Dwmapi.lib;Shell32.lib;Ole32.lib;Imagehlp.lib;Comctl32.lib;Shlwapi.lib;Magnification.lib;bcp47mrm.lib;Shcore.lib;Uxtheme.lib;Taskschd.lib;Dcomp.lib;%(AdditionalDependencies)</AdditionalDependencies>\n      <DelayLoadDLLs>d3dcompiler_47.dll;Magnification.dll;Imagehlp.dll;%(DelayLoadDLLs)</DelayLoadDLLs>\n    </Link>\n  </ItemDefinitionGroup>\n  <!-- 删除 clang-cl 不支持的选项 -->\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.ClangCl.Exclusion.props\" Condition=\"$(UseClangCL)\" />\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.LldLink.Exclusion.props\" Condition=\"$(UseClangCL)\" />\n  <ItemGroup>\n    <ClInclude Include=\"AboutPage.h\">\n      <DependentUpon>AboutPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"AboutViewModel.h\">\n      <DependentUpon>AboutViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"AdaptersService.h\" />\n    <ClInclude Include=\"AppSettings.h\" />\n    <ClInclude Include=\"AppXReader.h\" />\n    <ClInclude Include=\"AutoStartHelper.h\" />\n    <ClInclude Include=\"BlueInfoBarStyle.h\">\n      <DependentUpon>BlueInfoBarStyle.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"BoolNegationConverter.h\">\n      <DependentUpon>BoolNegationConverter.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"BoolToNegativeVisibilityConverter.h\">\n      <DependentUpon>BoolToNegativeVisibilityConverter.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"CandidateWindowItem.h\">\n      <DependentUpon>CandidateWindowItem.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"CaptionButtonsControl.h\">\n      <DependentUpon>CaptionButtonsControl.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ControlHelper.h\" />\n    <ClInclude Include=\"ContentDialogHelper.h\" />\n    <ClInclude Include=\"ControlSizeTrigger.h\">\n      <DependentUpon>ControlSizeTrigger.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"EffectHelper.h\" />\n    <ClInclude Include=\"EffectParametersViewModel.h\">\n      <DependentUpon>EffectParametersViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"EffectsService.h\" />\n    <ClInclude Include=\"FileDialogHelper.h\" />\n    <ClInclude Include=\"HomeViewModel.h\">\n      <DependentUpon>HomeViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"IsEqualStateTrigger.h\">\n      <DependentUpon>IsEqualStateTrigger.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"IsNullStateTrigger.h\">\n      <DependentUpon>IsNullStateTrigger.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"KeyVisualState.h\">\n      <DependentUpon>KeyVisualState.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"MainWindow.h\" />\n    <ClInclude Include=\"NotifyIconService.h\" />\n    <ClInclude Include=\"resource.h\" />\n    <ClInclude Include=\"SettingsCard.h\">\n      <DependentUpon>SettingsCard.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"SettingsExpander.h\">\n      <DependentUpon>SettingsExpander.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"SettingsExpanderCornerRadiusConverter.h\">\n      <DependentUpon>SettingsExpanderCornerRadiusConverter.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ShortcutService.h\" />\n    <ClInclude Include=\"Shortcut.h\" />\n    <ClInclude Include=\"IconHelper.h\" />\n    <ClInclude Include=\"JsonHelper.h\" />\n    <ClInclude Include=\"LocalizationService.h\" />\n    <ClInclude Include=\"ScalingService.h\" />\n    <ClInclude Include=\"NewProfileViewModel.h\">\n      <DependentUpon>NewProfileViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ScalingModeEffectItem.h\">\n      <DependentUpon>ScalingModeEffectItem.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ScalingModeItem.h\">\n      <DependentUpon>ScalingModeItem.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ScalingModesService.h\" />\n    <ClInclude Include=\"ScalingModesViewModel.h\">\n      <DependentUpon>ScalingModesViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ScalingMode.h\" />\n    <ClInclude Include=\"Profile.h\" />\n    <ClInclude Include=\"ProfilePage.h\">\n      <DependentUpon>ProfilePage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ShortcutHelper.h\" />\n    <ClInclude Include=\"KeyVisual.h\">\n      <DependentUpon>KeyVisual.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"PageFrame.h\">\n      <DependentUpon>PageFrame.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ScalingModesPage.h\">\n      <DependentUpon>ScalingModesPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ProfileService.h\" />\n    <ClInclude Include=\"ProfileViewModel.h\">\n      <DependentUpon>ProfileViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"HomePage.h\">\n      <DependentUpon>HomePage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"RootPage.h\">\n      <DependentUpon>RootPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"pch.h\" />\n    <ClInclude Include=\"App.h\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </ClInclude>\n    <ClInclude Include=\"SettingsGroup.h\">\n      <DependentUpon>SettingsGroup.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"SettingsPage.h\">\n      <DependentUpon>SettingsPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"SettingsViewModel.h\">\n      <DependentUpon>SettingsViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ShortcutControl.h\">\n      <DependentUpon>ShortcutControl.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ShortcutDialog.h\">\n      <DependentUpon>ShortcutDialog.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"SimpleStackPanel.h\">\n      <DependentUpon>SimpleStackPanel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"SmoothResizeHelper.h\" />\n    <ClInclude Include=\"TextBlockHelper.h\">\n      <DependentUpon>TextBlockHelper.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"TextMenuFlyout.h\">\n      <DependentUpon>TextMenuFlyout.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ThemeHelper.h\" />\n    <ClInclude Include=\"TitleBarControl.h\">\n      <DependentUpon>TitleBarControl.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ToastPage.h\">\n      <DependentUpon>ToastPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"ToastService.h\" />\n    <ClInclude Include=\"TouchHelper.h\" />\n    <ClInclude Include=\"UpdateService.h\" />\n    <ClInclude Include=\"WrapPanel.h\">\n      <DependentUpon>WrapPanel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClInclude>\n    <ClInclude Include=\"XamlHelper.h\" />\n    <ClInclude Include=\"XamlWindow.h\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n  </ItemGroup>\n  <ItemGroup>\n    <ClCompile Include=\"AboutPage.cpp\">\n      <DependentUpon>AboutPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"AboutViewModel.cpp\">\n      <DependentUpon>AboutViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"AdaptersService.cpp\" />\n    <ClCompile Include=\"AppSettings.cpp\" />\n    <ClCompile Include=\"AppXReader.cpp\" />\n    <ClCompile Include=\"AutoStartHelper.cpp\" />\n    <ClCompile Include=\"BlueInfoBarStyle.cpp\">\n      <DependentUpon>BlueInfoBarStyle.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"BoolNegationConverter.cpp\">\n      <DependentUpon>BoolNegationConverter.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"BoolToNegativeVisibilityConverter.cpp\">\n      <DependentUpon>BoolToNegativeVisibilityConverter.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"CandidateWindowItem.cpp\">\n      <DependentUpon>CandidateWindowItem.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"CaptionButtonsControl.cpp\">\n      <DependentUpon>CaptionButtonsControl.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ContentDialogHelper.cpp\" />\n    <ClCompile Include=\"ControlHelper.cpp\" />\n    <ClCompile Include=\"ControlSizeTrigger.cpp\">\n      <DependentUpon>ControlSizeTrigger.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"EffectParametersViewModel.cpp\">\n      <DependentUpon>EffectParametersViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"EffectsService.cpp\" />\n    <ClCompile Include=\"FileDialogHelper.cpp\" />\n    <ClCompile Include=\"HomeViewModel.cpp\">\n      <DependentUpon>HomeViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"IsEqualStateTrigger.cpp\">\n      <DependentUpon>IsEqualStateTrigger.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"IsNullStateTrigger.cpp\">\n      <DependentUpon>IsNullStateTrigger.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"KeyVisualState.cpp\">\n      <DependentUpon>KeyVisualState.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"main.cpp\" />\n    <ClCompile Include=\"MainWindow.cpp\" />\n    <ClCompile Include=\"NotifyIconService.cpp\" />\n    <ClCompile Include=\"ScalingMode.cpp\" />\n    <ClCompile Include=\"SettingsCard.cpp\">\n      <DependentUpon>SettingsCard.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"SettingsExpander.cpp\">\n      <DependentUpon>SettingsExpander.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"SettingsExpanderCornerRadiusConverter.cpp\">\n      <DependentUpon>SettingsExpanderCornerRadiusConverter.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ShortcutService.cpp\" />\n    <ClCompile Include=\"Shortcut.cpp\" />\n    <ClCompile Include=\"IconHelper.cpp\" />\n    <ClCompile Include=\"JsonHelper.cpp\" />\n    <ClCompile Include=\"LocalizationService.cpp\" />\n    <ClCompile Include=\"ScalingService.cpp\" />\n    <ClCompile Include=\"NewProfileViewModel.cpp\">\n      <DependentUpon>NewProfileViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ScalingModeEffectItem.cpp\">\n      <DependentUpon>ScalingModeEffectItem.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ScalingModeItem.cpp\">\n      <DependentUpon>ScalingModeItem.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ScalingModesService.cpp\" />\n    <ClCompile Include=\"ScalingModesViewModel.cpp\">\n      <DependentUpon>ScalingModesViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ProfilePage.cpp\">\n      <DependentUpon>ProfilePage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ShortcutHelper.cpp\" />\n    <ClCompile Include=\"KeyVisual.cpp\">\n      <DependentUpon>KeyVisual.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"PageFrame.cpp\">\n      <DependentUpon>PageFrame.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ScalingModesPage.cpp\">\n      <DependentUpon>ScalingModesPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ProfileService.cpp\" />\n    <ClCompile Include=\"ProfileViewModel.cpp\">\n      <DependentUpon>ProfileViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"HomePage.cpp\">\n      <DependentUpon>HomePage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"RootPage.cpp\">\n      <DependentUpon>RootPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"pch.cpp\">\n      <PrecompiledHeader>Create</PrecompiledHeader>\n    </ClCompile>\n    <ClCompile Include=\"App.cpp\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </ClCompile>\n    <ClCompile Include=\"$(GeneratedFilesDir)module.g.cpp\" />\n    <ClCompile Include=\"SettingsGroup.cpp\">\n      <DependentUpon>SettingsGroup.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"SettingsPage.cpp\">\n      <DependentUpon>SettingsPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"SettingsViewModel.cpp\">\n      <DependentUpon>SettingsViewModel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ShortcutControl.cpp\">\n      <DependentUpon>ShortcutControl.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ShortcutDialog.cpp\">\n      <DependentUpon>ShortcutDialog.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"SimpleStackPanel.cpp\">\n      <DependentUpon>SimpleStackPanel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"SmoothResizeHelper.cpp\" />\n    <ClCompile Include=\"TextBlockHelper.cpp\">\n      <DependentUpon>TextBlockHelper.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"TextMenuFlyout.cpp\">\n      <DependentUpon>TextMenuFlyout.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ThemeHelper.cpp\" />\n    <ClCompile Include=\"TitleBarControl.cpp\">\n      <DependentUpon>TitleBarControl.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ToastPage.cpp\">\n      <DependentUpon>ToastPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"ToastService.cpp\" />\n    <ClCompile Include=\"TouchHelper.cpp\" />\n    <ClCompile Include=\"UpdateService.cpp\" />\n    <ClCompile Include=\"WrapPanel.cpp\">\n      <DependentUpon>WrapPanel.idl</DependentUpon>\n      <SubType>Code</SubType>\n    </ClCompile>\n    <ClCompile Include=\"XamlHelper.cpp\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"BlueInfoBarStyle.idl\">\n      <DependentUpon>BlueInfoBarStyle.xaml</DependentUpon>\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"TextMenuFlyout.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"ToastPage.idl\">\n      <DependentUpon>ToastPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </None>\n    <None Include=\"SettingsExpanderCornerRadiusConverter.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"SimpleStackPanel.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"SettingsExpander.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"IsEqualStateTrigger.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"IsNullStateTrigger.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"ControlSizeTrigger.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"SettingsCard.idl\">\n      <SubType>Code</SubType>\n    </None>\n    <None Include=\"CaptionButtonsControl.idl\">\n      <DependentUpon>CaptionButtonsControl.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </None>\n    <None Include=\"TitleBarControl.idl\">\n      <DependentUpon>TitleBarControl.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </None>\n    <None Include=\"KeyVisualState.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"WrapPanel.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"EffectParametersViewModel.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"ScalingModeEffectItem.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"ScalingModeItem.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"ScalingModesViewModel.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"TextBlockHelper.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"ProfileViewModel.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"SettingsViewModel.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"ScalingModesPage.idl\">\n      <DependentUpon>ScalingModesPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </None>\n    <None Include=\"ShortcutDialog.idl\">\n      <DependentUpon>ShortcutDialog.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </None>\n    <None Include=\"ShortcutControl.idl\">\n      <DependentUpon>ShortcutControl.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </None>\n    <None Include=\"KeyVisual.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"BoolNegationConverter.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"ProfilePage.idl\">\n      <DependentUpon>ProfilePage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </None>\n    <None Include=\"HomeViewModel.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"CandidateWindowItem.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"NewProfileViewModel.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"BoolToNegativeVisibilityConverter.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"PageFrame.idl\">\n      <DependentUpon>PageFrame.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </None>\n    <None Include=\"SettingsGroup.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"AboutPage.idl\">\n      <DependentUpon>AboutPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </None>\n    <None Include=\"AboutViewModel.idl\">\n      <SubType>Designer</SubType>\n    </None>\n    <Midl Include=\"App.idl\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Midl>\n    <None Include=\"HomePage.idl\">\n      <DependentUpon>HomePage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </None>\n    <None Include=\"RootPage.idl\">\n      <DependentUpon>RootPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </None>\n    <None Include=\"SettingsPage.idl\">\n      <DependentUpon>SettingsPage.xaml</DependentUpon>\n      <SubType>Code</SubType>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Page Include=\"AboutPage.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"BlueInfoBarStyle.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"CaptionButtonsControl.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"ProfilePage.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"HomePage.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"KeyVisual.Resource.xaml\">\n      <DependentUpon>KeyVisual.idl</DependentUpon>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"RootPage.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"PageFrame.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"ScalingModesPage.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"SettingsCard.Resource.xaml\">\n      <DependentUpon>SettingsCard.idl</DependentUpon>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"SettingsExpander.Resource.xaml\">\n      <DependentUpon>SettingsExpander.idl</DependentUpon>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"SettingsGroup.Resource.xaml\">\n      <DependentUpon>SettingsGroup.idl</DependentUpon>\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"SettingsPage.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"ShortcutControl.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"ShortcutDialog.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"TitleBarControl.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n    <Page Include=\"ToastPage.xaml\">\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <ResourceCompile Include=\"Magpie.rc\" />\n  </ItemGroup>\n  <ItemGroup>\n    <SDKReference Include=\"WindowsDesktop, Version=10.0.26100.0\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Resources.language-de.resw\" />\n    <PRIResource Include=\"Resources.language-en-US.resw\" />\n    <PRIResource Include=\"Resources.language-es.resw\" />\n    <PRIResource Include=\"Resources.language-fr.resw\" />\n    <None Include=\"Resources.language-hu.resw\">\n      <FileType>Document</FileType>\n    </None>\n    <PRIResource Include=\"Resources.language-id.resw\" />\n    <PRIResource Include=\"Resources.language-it.resw\" />\n    <PRIResource Include=\"Resources.language-ja.resw\" />\n    <None Include=\"Resources.language-ka.resw\">\n      <FileType>Document</FileType>\n    </None>\n    <PRIResource Include=\"Resources.language-ko.resw\" />\n    <PRIResource Include=\"Resources.language-pl.resw\" />\n    <PRIResource Include=\"Resources.language-pt-BR.resw\" />\n    <PRIResource Include=\"Resources.language-ru.resw\" />\n    <PRIResource Include=\"Resources.language-ta.resw\" />\n    <PRIResource Include=\"Resources.language-tr.resw\" />\n    <PRIResource Include=\"Resources.language-uk.resw\" />\n    <PRIResource Include=\"Resources.language-zh-Hans.resw\" />\n    <PRIResource Include=\"Resources.language-zh-Hant.resw\" />\n    <PRIResource Include=\"Resources.language-vi.resw\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Text Include=\"conanfile.txt\">\n      <DeploymentContent>false</DeploymentContent>\n    </Text>\n  </ItemGroup>\n  <ItemGroup>\n    <Manifest Include=\"app.manifest\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Image Include=\"Magpie.ico\">\n      <DeploymentContent>false</DeploymentContent>\n    </Image>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\Magpie.Core\\Magpie.Core.vcxproj\">\n      <Project>{0e5205ae-dfa9-4cb8-b662-e43cd6512e2a}</Project>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.targets\" />\n  <!-- 导入 Microsoft.AppXPackage.Targets 以生成 pri，应在 Microsoft.Cpp.targets 之后 -->\n  <Import Project=\"$(MsAppxPackageTargets)\" />\n  <!-- 编译为非打包应用时防止引用项目的 winmd 被复制到输出文件夹。 -->\n  <!-- 不适用于打包配置，编译系统需要这些 winmd 来解析可激活类。 -->\n  <Target Name=\"RemoveReferenceWinMD\" AfterTargets=\"ResolveAssemblyReferences\" Condition=\"!$(IsPackaged)\">\n    <ItemGroup>\n      <ReferenceCopyLocalPaths Remove=\"@(ReferenceCopyLocalPaths)\" Condition=\"'%(Extension)' == '.winmd'\" />\n    </ItemGroup>\n  </Target>\n  <!-- 防止 xbf 被复制到子文件夹 -->\n  <Target Name=\"AddProcessedXamlFilesToCopyLocal\" />\n  <!-- resources.pri 中 App.xbf 必须是 Files 的根节点，否则程序将无法运行 -->\n  <!-- https://github.com/microsoft/terminal/blob/a2bb3136bb52c253060aa281396dbd12316b33a6/src/cascadia/TerminalApp/TerminalAppLib.vcxproj#L458 -->\n  <Target Name=\"PlaceAppXbfAtRootOfResourceTree\" AfterTargets=\"GetPackagingOutputs\">\n    <ItemGroup>\n      <_RelocatedAppXamlData Include=\"@(PackagingOutputs)\" Condition=\"'%(Filename)' == 'App' and ('%(Extension)' == '.xaml' or '%(Extension)' == '.xbf')\" />\n      <PackagingOutputs Remove=\"@(_RelocatedAppXamlData)\" />\n      <PackagingOutputs Include=\"@(_RelocatedAppXamlData)\">\n        <TargetPath>%(Filename)%(Extension)</TargetPath>\n      </PackagingOutputs>\n    </ItemGroup>\n  </Target>\n  <!-- 将引用的 pri 合并进 resources.pri -->\n  <Target Name=\"ComputeInputPriFiles\" BeforeTargets=\"_GenerateProjectPriConfigurationFiles\">\n    <ItemGroup>\n      <_PriFile Include=\"@(PackagingOutputs)\" Condition=\"'%(Extension)' == '.pri' And '%(Filename)' != 'resources'\" />\n    </ItemGroup>\n  </Target>\n  <PropertyGroup Condition=\"!$(IsPackaged)\">\n    <_ManifestsDir>$(IntDir)\\Manifests\\</_ManifestsDir>\n  </PropertyGroup>\n  <!-- 编译为非打包应用时向清单文件添加运行时使用到的 WinRT 组件 -->\n  <!-- Reg-free WinRT: https://blogs.windows.com/windowsdeveloper/2019/04/30/enhancing-non-packaged-desktop-apps-using-windows-runtime-components/ -->\n  <!-- 来自 https://github.com/microsoft/terminal/blob/a2bb3136bb52c253060aa281396dbd12316b33a6/build/rules/GenerateSxsManifestsFromWinmds.targets -->\n  <Target Name=\"UnpackagedWin32MapWinmdsToManifestFiles\" DependsOnTargets=\"ResolveAssemblyReferences\" Condition=\"!$(IsPackaged)\">\n    <ItemGroup>\n      <!-- 为每一个引用的存在 Implementation 属性的 winmd 生成清单文件 -->\n      <_UnpackagedWin32WinmdManifest Include=\"@(ReferencePath->'$(_ManifestsDir)%(FileName).manifest')\" Condition=\"'%(ReferencePath.IsSystemReference)' != 'true' And '%(ReferencePath.WinMDFile)' == 'true' And '%(ReferencePath.ReferenceSourceTarget)' == 'ResolveAssemblyReference' And '%(ReferencePath.Implementation)' != ''\">\n        <WinMDPath>%(ReferencePath.FullPath)</WinMDPath>\n        <Implementation>$([System.IO.Path]::GetFileName('%(ReferencePath.Implementation)'))</Implementation>\n      </_UnpackagedWin32WinmdManifest>\n      <!-- 为引用的项目生成的 winmd 生成清单文件 -->\n      <_UnpackagedWin32WinmdProjectReference Condition=\"'%(_ResolvedNativeProjectReferencePaths.ProjectType)' != 'StaticLibrary' And '%(_ResolvedNativeProjectReferencePaths.DeploymentContent)' != 'false'\" Include=\"@(_ResolvedNativeProjectReferencePaths-&gt;WithMetadataValue('FileType','winmd')-&gt;'%(RootDir)%(Directory)%(TargetPath)')\" />\n      <FileReads Include=\"@(_UnpackagedWin32WinmdProjectReference)\" />\n      <_UnpackagedWin32WinmdManifest Include=\"@(_UnpackagedWin32WinmdProjectReference->'$(_ManifestsDir)%(FileName).manifest')\">\n        <WinMDPath>%(Identity)</WinMDPath>\n      </_UnpackagedWin32WinmdManifest>\n    </ItemGroup>\n  </Target>\n  <Target Name=\"UnpackagedWin32GenerateAdditionalWinmdManifests\" Condition=\"!$(IsPackaged)\" Inputs=\"%(_UnpackagedWin32WinmdManifest.WinMDPath)\" Outputs=\"@(_UnpackagedWin32WinmdManifest)\" BeforeTargets=\"Link\" DependsOnTargets=\"UnpackagedWin32MapWinmdsToManifestFiles\">\n    <MakeDir Directories=\"$(_ManifestsDir)\" />\n    <!-- 批量处理 _UnpackagedWin32WinmdManifest 中的元素 -->\n    <Exec Command=\"mt.exe -nologo -winmd:&quot;%(_UnpackagedWin32WinmdManifest.WinMDPath)&quot; -dll:%(_UnpackagedWin32WinmdManifest.Implementation) -out:&quot;%(_UnpackagedWin32WinmdManifest.Identity)&quot;\" />\n    <ItemGroup>\n      <Manifest Include=\"@(_UnpackagedWin32WinmdManifest)\" />\n    </ItemGroup>\n  </Target>\n  <!-- 使用 clang-cl 编译 cppwinrt 生成的源文件时关闭警告-->\n  <Target Name=\"FixClangCLCppWinRT\" BeforeTargets=\"ClCompile\" Condition=\"$(UseClangCL)\">\n    <ItemGroup>\n      <_XamlTypeInfoCpp Include=\"@(ClCompile)\" Condition=\"'%(Extension)' == '.cpp' And ('%(Filename)' == 'XamlTypeInfo.Impl.g' Or '%(Filename)' == 'XamlTypeInfo.g')\" />\n      <ClCompile Remove=\"@(_XamlTypeInfoCpp)\" />\n      <ClCompile Include=\"@(_XamlTypeInfoCpp)\">\n        <WarningLevel>TurnOffAllWarnings</WarningLevel>\n      </ClCompile>\n    </ItemGroup>\n  </Target>\n  <!-- lld-link 不支持 /WINMD 和 /WINMDFILE -->\n  <Target Name=\"FixClangCLLink\" BeforeTargets=\"Link\" Condition=\"$(UseClangCL)\">\n    <PropertyGroup>\n      <_GenerateWindowsMetadata />\n    </PropertyGroup>\n    <ItemGroup>\n      <_NoWinMD Include=\"@(Link)\" />\n      <Link Remove=\"@(_NoWinMD)\" />\n      <Link Include=\"@(_NoWinMD)\">\n        <WindowsMetadataFile />\n      </Link>\n    </ItemGroup>\n  </Target>\n  <ImportGroup Label=\"ExtensionTargets\">\n    <Import Project=\"..\\..\\packages\\Microsoft.UI.Xaml.2.8.7\\build\\native\\Microsoft.UI.Xaml.targets\" Condition=\"Exists('..\\..\\packages\\Microsoft.UI.Xaml.2.8.7\\build\\native\\Microsoft.UI.Xaml.targets')\" />\n    <Import Project=\"..\\..\\packages\\Microsoft.Windows.CppWinRT.2.0.250303.1\\build\\native\\Microsoft.Windows.CppWinRT.targets\" Condition=\"Exists('..\\..\\packages\\Microsoft.Windows.CppWinRT.2.0.250303.1\\build\\native\\Microsoft.Windows.CppWinRT.targets')\" />\n    <Import Project=\"..\\..\\packages\\Microsoft.Web.WebView2.1.0.3719.77\\build\\native\\Microsoft.Web.WebView2.targets\" Condition=\"Exists('..\\..\\packages\\Microsoft.Web.WebView2.1.0.3719.77\\build\\native\\Microsoft.Web.WebView2.targets')\" />\n    <Import Project=\"..\\..\\packages\\Microsoft.Windows.ImplementationLibrary.1.0.260126.7\\build\\native\\Microsoft.Windows.ImplementationLibrary.targets\" Condition=\"Exists('..\\..\\packages\\Microsoft.Windows.ImplementationLibrary.1.0.260126.7\\build\\native\\Microsoft.Windows.ImplementationLibrary.targets')\" />\n  </ImportGroup>\n  <Target Name=\"EnsureNuGetPackageBuildImports\" BeforeTargets=\"PrepareForBuild\">\n    <PropertyGroup>\n      <ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息，请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>\n    </PropertyGroup>\n    <Error Condition=\"!Exists('..\\..\\packages\\Microsoft.UI.Xaml.2.8.7\\build\\native\\Microsoft.UI.Xaml.props')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\..\\packages\\Microsoft.UI.Xaml.2.8.7\\build\\native\\Microsoft.UI.Xaml.props'))\" />\n    <Error Condition=\"!Exists('..\\..\\packages\\Microsoft.UI.Xaml.2.8.7\\build\\native\\Microsoft.UI.Xaml.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\..\\packages\\Microsoft.UI.Xaml.2.8.7\\build\\native\\Microsoft.UI.Xaml.targets'))\" />\n    <Error Condition=\"!Exists('..\\..\\packages\\Microsoft.Windows.CppWinRT.2.0.250303.1\\build\\native\\Microsoft.Windows.CppWinRT.props')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\..\\packages\\Microsoft.Windows.CppWinRT.2.0.250303.1\\build\\native\\Microsoft.Windows.CppWinRT.props'))\" />\n    <Error Condition=\"!Exists('..\\..\\packages\\Microsoft.Windows.CppWinRT.2.0.250303.1\\build\\native\\Microsoft.Windows.CppWinRT.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\..\\packages\\Microsoft.Windows.CppWinRT.2.0.250303.1\\build\\native\\Microsoft.Windows.CppWinRT.targets'))\" />\n    <Error Condition=\"!Exists('..\\..\\packages\\Microsoft.Web.WebView2.1.0.3719.77\\build\\native\\Microsoft.Web.WebView2.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\..\\packages\\Microsoft.Web.WebView2.1.0.3719.77\\build\\native\\Microsoft.Web.WebView2.targets'))\" />\n    <Error Condition=\"!Exists('..\\..\\packages\\Microsoft.Windows.ImplementationLibrary.1.0.260126.7\\build\\native\\Microsoft.Windows.ImplementationLibrary.targets')\" Text=\"$([System.String]::Format('$(ErrorText)', '..\\..\\packages\\Microsoft.Windows.ImplementationLibrary.1.0.260126.7\\build\\native\\Microsoft.Windows.ImplementationLibrary.targets'))\" />\n  </Target>\n  <!-- 防止生成的 winmd 被复制到输出文件夹 -->\n  <PropertyGroup Condition=\"!$(IsPackaged)\">\n    <CppWinRTProjectWinMD>$(CppWinRTMergedDir)\\$(RootNamespace).winmd</CppWinRTProjectWinMD>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "src/Magpie/Magpie.vcxproj.filters",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Midl Include=\"App.idl\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ClCompile Include=\"pch.cpp\" />\n    <ClCompile Include=\"App.cpp\" />\n    <ClCompile Include=\"ShortcutService.cpp\">\n      <Filter>Services</Filter>\n    </ClCompile>\n    <ClCompile Include=\"ShortcutHelper.cpp\">\n      <Filter>Helpers</Filter>\n    </ClCompile>\n    <ClCompile Include=\"ScalingService.cpp\">\n      <Filter>Services</Filter>\n    </ClCompile>\n    <ClCompile Include=\"AppSettings.cpp\" />\n    <ClCompile Include=\"Shortcut.cpp\">\n      <Filter>Models</Filter>\n    </ClCompile>\n    <ClCompile Include=\"ProfileService.cpp\">\n      <Filter>Services</Filter>\n    </ClCompile>\n    <ClCompile Include=\"IconHelper.cpp\">\n      <Filter>Helpers</Filter>\n    </ClCompile>\n    <ClCompile Include=\"AppXReader.cpp\">\n      <Filter>Helpers</Filter>\n    </ClCompile>\n    <ClCompile Include=\"AutoStartHelper.cpp\">\n      <Filter>Helpers</Filter>\n    </ClCompile>\n    <ClCompile Include=\"EffectsService.cpp\">\n      <Filter>Services</Filter>\n    </ClCompile>\n    <ClCompile Include=\"ScalingModesService.cpp\">\n      <Filter>Services</Filter>\n    </ClCompile>\n    <ClCompile Include=\"JsonHelper.cpp\">\n      <Filter>Helpers</Filter>\n    </ClCompile>\n    <ClCompile Include=\"UpdateService.cpp\">\n      <Filter>Services</Filter>\n    </ClCompile>\n    <ClCompile Include=\"ContentDialogHelper.cpp\">\n      <Filter>Helpers</Filter>\n    </ClCompile>\n    <ClCompile Include=\"LocalizationService.cpp\">\n      <Filter>Services</Filter>\n    </ClCompile>\n    <ClCompile Include=\"FileDialogHelper.cpp\">\n      <Filter>Helpers</Filter>\n    </ClCompile>\n    <ClCompile Include=\"$(GeneratedFilesDir)module.g.cpp\" />\n    <ClCompile Include=\"TouchHelper.cpp\">\n      <Filter>Helpers</Filter>\n    </ClCompile>\n    <ClCompile Include=\"ToastService.cpp\">\n      <Filter>Services</Filter>\n    </ClCompile>\n    <ClCompile Include=\"main.cpp\" />\n    <ClCompile Include=\"MainWindow.cpp\" />\n    <ClCompile Include=\"ThemeHelper.cpp\">\n      <Filter>Helpers</Filter>\n    </ClCompile>\n    <ClCompile Include=\"NotifyIconService.cpp\">\n      <Filter>Services</Filter>\n    </ClCompile>\n    <ClCompile Include=\"XamlHelper.cpp\">\n      <Filter>Helpers</Filter>\n    </ClCompile>\n    <ClCompile Include=\"AdaptersService.cpp\">\n      <Filter>Services</Filter>\n    </ClCompile>\n    <ClCompile Include=\"SmoothResizeHelper.cpp\">\n      <Filter>Helpers</Filter>\n    </ClCompile>\n    <ClCompile Include=\"ScalingMode.cpp\">\n      <Filter>Models</Filter>\n    </ClCompile>\n    <ClCompile Include=\"ControlHelper.cpp\">\n      <Filter>Helpers</Filter>\n    </ClCompile>\n  </ItemGroup>\n  <ItemGroup>\n    <ClInclude Include=\"pch.h\" />\n    <ClInclude Include=\"ShortcutService.h\">\n      <Filter>Services</Filter>\n    </ClInclude>\n    <ClInclude Include=\"ShortcutHelper.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n    <ClInclude Include=\"ScalingService.h\">\n      <Filter>Services</Filter>\n    </ClInclude>\n    <ClInclude Include=\"AppSettings.h\" />\n    <ClInclude Include=\"Shortcut.h\">\n      <Filter>Models</Filter>\n    </ClInclude>\n    <ClInclude Include=\"Profile.h\">\n      <Filter>Models</Filter>\n    </ClInclude>\n    <ClInclude Include=\"ProfileService.h\">\n      <Filter>Services</Filter>\n    </ClInclude>\n    <ClInclude Include=\"IconHelper.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n    <ClInclude Include=\"AppXReader.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n    <ClInclude Include=\"AutoStartHelper.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n    <ClInclude Include=\"ScalingMode.h\">\n      <Filter>Models</Filter>\n    </ClInclude>\n    <ClInclude Include=\"EffectsService.h\">\n      <Filter>Services</Filter>\n    </ClInclude>\n    <ClInclude Include=\"ScalingModesService.h\">\n      <Filter>Services</Filter>\n    </ClInclude>\n    <ClInclude Include=\"EffectHelper.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n    <ClInclude Include=\"JsonHelper.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n    <ClInclude Include=\"UpdateService.h\">\n      <Filter>Services</Filter>\n    </ClInclude>\n    <ClInclude Include=\"ContentDialogHelper.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n    <ClInclude Include=\"LocalizationService.h\">\n      <Filter>Services</Filter>\n    </ClInclude>\n    <ClInclude Include=\"FileDialogHelper.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n    <ClInclude Include=\"TouchHelper.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n    <ClInclude Include=\"ToastService.h\">\n      <Filter>Services</Filter>\n    </ClInclude>\n    <ClInclude Include=\"MainWindow.h\" />\n    <ClInclude Include=\"XamlWindow.h\" />\n    <ClInclude Include=\"ThemeHelper.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n    <ClInclude Include=\"NotifyIconService.h\">\n      <Filter>Services</Filter>\n    </ClInclude>\n    <ClInclude Include=\"XamlHelper.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n    <ClInclude Include=\"resource.h\">\n      <Filter>Resources</Filter>\n    </ClInclude>\n    <ClInclude Include=\"AdaptersService.h\">\n      <Filter>Services</Filter>\n    </ClInclude>\n    <ClInclude Include=\"SmoothResizeHelper.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n    <ClInclude Include=\"ControlHelper.h\">\n      <Filter>Helpers</Filter>\n    </ClInclude>\n  </ItemGroup>\n  <ItemGroup>\n    <Filter Include=\"Pages\">\n      <UniqueIdentifier>{30ac53e6-fb5b-4035-8150-913623452213}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"Controls\">\n      <UniqueIdentifier>{ca435698-7c9e-4784-a031-2c9db29b5fcc}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"Converters\">\n      <UniqueIdentifier>{da249886-cfc3-4502-ac6b-a4a2b71807ce}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"Services\">\n      <UniqueIdentifier>{801d256c-217d-4b4c-a9a9-c40663b4dffe}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"Models\">\n      <UniqueIdentifier>{8d78810f-671d-4793-9320-65078af2d7ec}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"ViewModels\">\n      <UniqueIdentifier>{c63b1e37-fe89-4c56-a1fe-e19d6803adad}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"Strings\">\n      <UniqueIdentifier>{66be9bb7-57ad-4efd-82b1-ac88ca76677f}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"Triggers\">\n      <UniqueIdentifier>{526230b1-2568-4b66-b57e-4a5dc9a24e10}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"Helpers\">\n      <UniqueIdentifier>{36c62660-b63e-423f-a335-8566a408f26b}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"Styles\">\n      <UniqueIdentifier>{6d76e40d-2556-40eb-80dc-8a40b0f8ce6c}</UniqueIdentifier>\n    </Filter>\n    <Filter Include=\"Resources\">\n      <UniqueIdentifier>{9a07185b-4b7a-4faa-9530-8b347343c9e8}</UniqueIdentifier>\n    </Filter>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n    <None Include=\"KeyVisual.idl\">\n      <Filter>Controls</Filter>\n    </None>\n    <None Include=\"SettingsViewModel.idl\">\n      <Filter>ViewModels</Filter>\n    </None>\n    <None Include=\"HomeViewModel.idl\">\n      <Filter>ViewModels</Filter>\n    </None>\n    <None Include=\"ProfileViewModel.idl\">\n      <Filter>ViewModels</Filter>\n    </None>\n    <None Include=\"TextBlockHelper.idl\">\n      <Filter>Helpers</Filter>\n    </None>\n    <None Include=\"CandidateWindowItem.idl\">\n      <Filter>ViewModels</Filter>\n    </None>\n    <None Include=\"NewProfileViewModel.idl\">\n      <Filter>ViewModels</Filter>\n    </None>\n    <None Include=\"ScalingModeItem.idl\">\n      <Filter>ViewModels</Filter>\n    </None>\n    <None Include=\"ScalingModeEffectItem.idl\">\n      <Filter>ViewModels</Filter>\n    </None>\n    <None Include=\"BoolToNegativeVisibilityConverter.idl\">\n      <Filter>Converters</Filter>\n    </None>\n    <None Include=\"BoolNegationConverter.idl\">\n      <Filter>Converters</Filter>\n    </None>\n    <None Include=\"EffectParametersViewModel.idl\">\n      <Filter>ViewModels</Filter>\n    </None>\n    <None Include=\"AboutViewModel.idl\">\n      <Filter>ViewModels</Filter>\n    </None>\n    <None Include=\"WrapPanel.idl\">\n      <Filter>Controls</Filter>\n    </None>\n    <None Include=\"KeyVisualState.idl\">\n      <Filter>Controls</Filter>\n    </None>\n    <None Include=\"SettingsCard.idl\">\n      <Filter>Controls</Filter>\n    </None>\n    <None Include=\"IsEqualStateTrigger.idl\">\n      <Filter>Triggers</Filter>\n    </None>\n    <None Include=\"IsNullStateTrigger.idl\">\n      <Filter>Triggers</Filter>\n    </None>\n    <None Include=\"ControlSizeTrigger.idl\">\n      <Filter>Triggers</Filter>\n    </None>\n    <None Include=\"SettingsExpander.idl\">\n      <Filter>Controls</Filter>\n    </None>\n    <None Include=\"SettingsGroup.idl\">\n      <Filter>Controls</Filter>\n    </None>\n    <None Include=\"SimpleStackPanel.idl\">\n      <Filter>Controls</Filter>\n    </None>\n    <None Include=\"ScalingModesViewModel.idl\">\n      <Filter>ViewModels</Filter>\n    </None>\n    <None Include=\"SettingsExpanderCornerRadiusConverter.idl\">\n      <Filter>Converters</Filter>\n    </None>\n    <None Include=\"TextMenuFlyout.idl\">\n      <Filter>Helpers</Filter>\n    </None>\n    <None Include=\"Resources.language-hu.resw\">\n      <Filter>Strings</Filter>\n    </None>\n    <None Include=\"Resources.language-ka.resw\">\n      <Filter>Strings</Filter>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <Page Include=\"HomePage.xaml\">\n      <Filter>Pages</Filter>\n    </Page>\n    <Page Include=\"SettingsPage.xaml\">\n      <Filter>Pages</Filter>\n    </Page>\n    <Page Include=\"PageFrame.xaml\">\n      <Filter>Controls</Filter>\n    </Page>\n    <Page Include=\"KeyVisual.Resource.xaml\">\n      <Filter>Controls</Filter>\n    </Page>\n    <Page Include=\"ShortcutControl.xaml\">\n      <Filter>Controls</Filter>\n    </Page>\n    <Page Include=\"ProfilePage.xaml\">\n      <Filter>Pages</Filter>\n    </Page>\n    <Page Include=\"ShortcutDialog.xaml\">\n      <Filter>Controls</Filter>\n    </Page>\n    <Page Include=\"TitleBarControl.xaml\">\n      <Filter>Controls</Filter>\n    </Page>\n    <Page Include=\"CaptionButtonsControl.xaml\">\n      <Filter>Controls</Filter>\n    </Page>\n    <Page Include=\"SettingsCard.Resource.xaml\">\n      <Filter>Controls</Filter>\n    </Page>\n    <Page Include=\"SettingsExpander.Resource.xaml\">\n      <Filter>Controls</Filter>\n    </Page>\n    <Page Include=\"SettingsGroup.Resource.xaml\">\n      <Filter>Controls</Filter>\n    </Page>\n    <Page Include=\"ScalingModesPage.xaml\">\n      <Filter>Pages</Filter>\n    </Page>\n    <Page Include=\"AboutPage.xaml\">\n      <Filter>Pages</Filter>\n    </Page>\n    <Page Include=\"RootPage.xaml\">\n      <Filter>Pages</Filter>\n    </Page>\n    <Page Include=\"ToastPage.xaml\">\n      <Filter>Pages</Filter>\n    </Page>\n    <Page Include=\"BlueInfoBarStyle.xaml\">\n      <Filter>Styles</Filter>\n    </Page>\n  </ItemGroup>\n  <ItemGroup>\n    <PRIResource Include=\"Resources.language-zh-Hans.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-en-US.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-ru.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-zh-Hant.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-ja.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-es.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-tr.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-uk.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-ko.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-pt-BR.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-it.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-de.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-fr.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-id.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-vi.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-pl.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n    <PRIResource Include=\"Resources.language-ta.resw\">\n      <Filter>Strings</Filter>\n    </PRIResource>\n  </ItemGroup>\n  <ItemGroup>\n    <Text Include=\"conanfile.txt\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Manifest Include=\"app.manifest\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Natvis Include=\"$(MSBuildThisFileDirectory)..\\..\\natvis\\wil.natvis\" />\n    <Natvis Include=\"$(MSBuildThisFileDirectory)..\\..\\natvis\\wil.natstepfilter\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ResourceCompile Include=\"Magpie.rc\">\n      <Filter>Resources</Filter>\n    </ResourceCompile>\n  </ItemGroup>\n  <ItemGroup>\n    <Image Include=\"Magpie.ico\">\n      <Filter>Resources</Filter>\n    </Image>\n  </ItemGroup>\n</Project>"
  },
  {
    "path": "src/Magpie/MainWindow.cpp",
    "content": "#include \"pch.h\"\n#include \"MainWindow.h\"\n#include \"App.h\"\n#include \"AppSettings.h\"\n#include \"CaptionButtonsControl.h\"\n#include \"CommonSharedConstants.h\"\n#include \"resource.h\"\n#include \"SmoothResizeHelper.h\"\n#include \"TitleBarControl.h\"\n#include \"Win32Helper.h\"\n#include <ShellScalingApi.h>\n\nusing namespace winrt;\nusing namespace winrt::Magpie::implementation;\n\nnamespace Magpie {\n\nbool MainWindow::Create() noexcept {\n\t[[maybe_unused]] static Ignore _ = [] {\n\t\tconst HINSTANCE hInstance = wil::GetModuleInstanceHandle();\n\n\t\tWNDCLASSEXW wcex{\n\t\t\t.cbSize = sizeof(wcex),\n\t\t\t.lpfnWndProc = _WndProc,\n\t\t\t.hInstance = hInstance,\n\t\t\t.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APP)),\n\t\t\t.hCursor = LoadCursor(nullptr, IDC_ARROW),\n\t\t\t.lpszClassName = CommonSharedConstants::MAIN_WINDOW_CLASS_NAME\n\t\t};\n\t\tRegisterClassEx(&wcex);\n\n\t\twcex.style = CS_DBLCLKS;\n\t\twcex.lpfnWndProc = _TitleBarWndProc;\n\t\twcex.hIcon = NULL;\n\t\twcex.lpszClassName = CommonSharedConstants::TITLE_BAR_WINDOW_CLASS_NAME;\n\t\tRegisterClassEx(&wcex);\n\n\t\treturn Ignore();\n\t}();\n\n\tconst auto& [posToSet, sizeToSet] = _CreateWindow();\n\n\tif (!Handle()) {\n\t\treturn false;\n\t}\n\n\t_Content(make_self<RootPage>());\n\n\t_smoothResizedEnabled = SmoothResizeHelper::EnableResizeSync(Handle(), App::Get());\n\n\t_appThemeChangedRevoker = App::Get().ThemeChanged(auto_revoke, [this](bool) { _UpdateTheme(); });\n\t_UpdateTheme();\n\t\n\t_SetInitialMaximized(AppSettings::Get().IsMainWindowMaximized());\n\n\t// 1. 设置初始 XAML Islands 窗口的尺寸\n\t// 2. 刷新窗口边框\n\t// 3. 无法获知 DPI 的情况下 _CreateWindow 创建的窗口尺寸为零，在这里延后设置窗口位置\n\t// 4. 防止窗口显示时背景闪烁: https://stackoverflow.com/questions/69715610/how-to-initialize-the-background-color-of-win32-app-to-something-other-than-whit\n\tSetWindowPos(Handle(), NULL, posToSet.x, posToSet.y, sizeToSet.cx, sizeToSet.cy,\n\t\t(sizeToSet.cx == 0 ? (SWP_NOMOVE | SWP_NOSIZE) : 0) | SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOCOPYBITS);\n\n\t// Xaml 控件加载完成后显示主窗口\n\tContent()->Loaded([this](winrt::IInspectable const&, RoutedEventArgs const&) {\n\t\tif (AppSettings::Get().IsMainWindowMaximized()) {\n\t\t\t// ShowWindow(Handle(), SW_SHOWMAXIMIZED) 会显示错误的动画。因此我们以窗口化显示，\n\t\t\t// 但位置和大小都和最大化相同，显示完毕后将状态设为最大化。\n\t\t\t// \n\t\t\t// 在此过程中，_isMaximized 始终是 true。\n\n\t\t\t// 保存原始窗口化位置\n\t\t\tWINDOWPLACEMENT wp{ .length = sizeof(wp) };\n\t\t\tGetWindowPlacement(Handle(), &wp);\n\n\t\t\t// 查询最大化窗口位置\n\t\t\tif (HMONITOR hMon = MonitorFromWindow(Handle(), MONITOR_DEFAULTTONEAREST)) {\n\t\t\t\tMONITORINFO mi{ .cbSize = sizeof(mi) };\n\t\t\t\tGetMonitorInfo(hMon, &mi);\n\n\t\t\t\t// 播放窗口显示动画\n\t\t\t\tSetWindowPos(\n\t\t\t\t\tHandle(),\n\t\t\t\t\tNULL,\n\t\t\t\t\tmi.rcWork.left,\n\t\t\t\t\tmi.rcWork.top,\n\t\t\t\t\tmi.rcMonitor.right - mi.rcMonitor.left,\n\t\t\t\t\tmi.rcMonitor.bottom - mi.rcMonitor.top,\n\t\t\t\t\tSWP_SHOWWINDOW\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// 将状态设为最大化，也还原了原始的窗口化位置\n\t\t\twp.showCmd = SW_SHOWMAXIMIZED;\n\t\t\tSetWindowPlacement(Handle(), &wp);\n\n\t\t\t_SetInitialMaximized(false);\n\t\t} else {\n\t\t\tShowWindow(Handle(), SW_SHOWNORMAL);\n\t\t}\n\n\t\tSetForegroundWindow(Handle());\n\t});\n\n\tconst HINSTANCE hInstance = wil::GetModuleInstanceHandle();\n\n\t// 创建标题栏窗口，它是主窗口的子窗口。我们将它置于 XAML Islands 窗口之上以防止鼠标事件被吞掉\n\t// \n\t// 出于未知的原因，必须添加 WS_EX_LAYERED 样式才能发挥作用，见\n\t// https://github.com/microsoft/terminal/blob/0ee2c74cd432eda153f3f3e77588164cde95044f/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp#L79\n\t// WS_EX_NOREDIRECTIONBITMAP 可以避免 WS_EX_LAYERED 导致的额外内存开销\n\t//\n\t// WS_MINIMIZEBOX 和 WS_MAXIMIZEBOX 使得鼠标悬停时显示文字提示，Win11 的贴靠布局不依赖它们\n\tCreateWindowEx(\n\t\tWS_EX_LAYERED | WS_EX_NOPARENTNOTIFY | WS_EX_NOREDIRECTIONBITMAP | WS_EX_NOACTIVATE,\n\t\tCommonSharedConstants::TITLE_BAR_WINDOW_CLASS_NAME,\n\t\tnullptr,\n\t\tWS_CHILD | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,\n\t\t0, 0, 0, 0,\n\t\tHandle(),\n\t\tnullptr,\n\t\thInstance,\n\t\tthis\n\t);\n\tSetLayeredWindowAttributes(_hwndTitleBar.get(), 0, 255, LWA_ALPHA);\n\n\tif (Win32Helper::GetOSVersion().IsWin11()) {\n\t\t// 如果鼠标正位于一个按钮上，贴靠布局弹窗会出现在按钮下方。我们利用这个特性来修正贴靠布局弹窗的位置。\n\t\t// Win11 23H2 的某一次更新后，Snap Layout 不再依赖 UI Automation，而是依靠 WM_GETTITLEBARINFOEX\n\t\t// 消息来定位最大化按钮矩形。此行为破坏了许多程序的 Snap Layout 支持，好在 Win11 24H2 中问题得到了\n\t\t// 缓解。我们同时支持两种方案，以便在不同版本的 Win11 上都能正常工作。\n\t\t_hwndMaximizeButton = CreateWindowEx(\n\t\t\tWS_EX_NOPARENTNOTIFY,\n\t\t\tL\"BUTTON\",\n\t\t\tnullptr,\n\t\t\tWS_VISIBLE | WS_CHILD | WS_DISABLED | BS_OWNERDRAW,\n\t\t\t0, 0, 0, 0,\n\t\t\t_hwndTitleBar.get(),\n\t\t\tNULL,\n\t\t\thInstance,\n\t\t\tNULL\n\t\t);\n\n\t\t// 允许 WM_GETTITLEBARINFOEX 通过 UIPI 防止以管理员身份运行时无法收到\n\t\tChangeWindowMessageFilterEx(Handle(), WM_GETTITLEBARINFOEX, MSGFLT_ALLOW, nullptr);\n\t}\n\n\tContent()->TitleBar().LeftBottomPointChanged([this] {\n\t\t_ResizeTitleBarWindow();\n\t});\n\n\treturn true;\n}\n\nvoid MainWindow::Show() const noexcept {\n\tif (IsIconic(Handle())) {\n\t\tShowWindow(Handle(), SW_RESTORE);\n\t}\n\n\tSetForegroundWindow(Handle());\n}\n\nLRESULT MainWindow::_MessageHandler(UINT msg, WPARAM wParam, LPARAM lParam) noexcept {\n\tswitch (msg) {\n\tcase WM_SIZE:\n\t{\n\t\tbase_type::_MessageHandler(WM_SIZE, wParam, lParam);\n\n\t\tif (wParam != SIZE_MINIMIZED && Content()) {\n\t\t\tif (_smoothResizedEnabled) {\n\t\t\t\tSmoothResizeHelper::SyncWindowSize(Handle(), App::Get());\n\t\t\t}\n\n\t\t\t_ResizeTitleBarWindow();\n\t\t\t// 以最大化显示时实际上是先窗口化显示然后改为最大化，确保最大化按钮状态正确\n\t\t\tContent()->TitleBar().CaptionButtons().IsWindowMaximized(\n\t\t\t\t_IsMaximized() || _IsInitialMaximized());\n\t\t}\n\n\t\treturn 0;\n\t}\n\tcase WM_GETMINMAXINFO:\n\t{\n\t\t// 设置窗口最小尺寸\n\t\tMINMAXINFO* mmi = (MINMAXINFO*)lParam;\n\t\tmmi->ptMinTrackSize = { \n\t\t\tstd::lroundf(500 * CurrentDpi() / float(USER_DEFAULT_SCREEN_DPI)),\n\t\t\tstd::lroundf(300 * CurrentDpi() / float(USER_DEFAULT_SCREEN_DPI))\n\t\t};\n\t\treturn 0;\n\t}\n\tcase WM_NCRBUTTONUP:\n\t{\n\t\t// 我们自己处理标题栏右键，不知为何 DefWindowProc 没有作用\n\t\tif (wParam == HTCAPTION) {\n\t\t\tconst POINT cursorPt{ GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };\n\n\t\t\t// 在标题栏上按下右键，在其他地方释放也会收到此消息。确保只有在标题栏上释放时才显示菜单\n\t\t\tRECT titleBarRect;\n\t\t\tGetWindowRect(_hwndTitleBar.get(), &titleBarRect);\n\t\t\tif (!PtInRect(&titleBarRect, cursorPt)) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tHMENU systemMenu = GetSystemMenu(Handle(), FALSE);\n\n\t\t\t// 根据窗口状态更新选项\n\t\t\tMENUITEMINFO mii{};\n\t\t\tmii.cbSize = sizeof(MENUITEMINFO);\n\t\t\tmii.fMask = MIIM_STATE;\n\t\t\tmii.fType = MFT_STRING;\n\t\t\tauto setState = [&](UINT item, bool enabled) {\n\t\t\t\tmii.fState = enabled ? MF_ENABLED : MF_DISABLED;\n\t\t\t\tSetMenuItemInfo(systemMenu, item, FALSE, &mii);\n\t\t\t};\n\t\t\tconst bool isMaximized = _IsMaximized();\n\t\t\tsetState(SC_RESTORE, isMaximized);\n\t\t\tsetState(SC_MOVE, !isMaximized);\n\t\t\tsetState(SC_SIZE, !isMaximized);\n\t\t\tsetState(SC_MINIMIZE, true);\n\t\t\tsetState(SC_MAXIMIZE, !isMaximized);\n\t\t\tsetState(SC_CLOSE, true);\n\t\t\tSetMenuDefaultItem(systemMenu, UINT_MAX, FALSE);\n\n\t\t\tBOOL cmd = TrackPopupMenu(systemMenu, TPM_RETURNCMD, cursorPt.x, cursorPt.y, 0, Handle(), nullptr);\n\t\t\tif (cmd != 0) {\n\t\t\t\tPostMessage(Handle(), WM_SYSCOMMAND, cmd, 0);\n\t\t\t}\n\t\t}\n\t\tbreak;\n\t}\n\tcase WM_ACTIVATE:\n\t{\n\t\tif (Content()) {\n\t\t\tContent()->TitleBar().IsWindowActive(LOWORD(wParam) != WA_INACTIVE);\n\t\t}\n\t\tbreak;\n\t}\n\tcase WM_GETTITLEBARINFOEX:\n\t{\n\t\tif (Win32Helper::GetOSVersion().IsWin11()) {\n\t\t\t// 为了支持 Win11 的贴靠布局，我们需要返回最大化按钮的矩形\n\t\t\tTITLEBARINFOEX* info = (TITLEBARINFOEX*)lParam;\n\t\t\tif (info->cbSize >= sizeof(TITLEBARINFOEX)) {\n\t\t\t\tbase_type::_MessageHandler(msg, wParam, lParam);\n\t\t\t\tGetWindowRect(_hwndMaximizeButton, &info->rgrect[3]);\n\t\t\t\treturn TRUE;\n\t\t\t}\n\t\t}\n\t\tbreak;\n\t}\n\tcase WM_NCHITTEST:\n\t{\n\t\t// 为了和第三方程序兼容，确保主窗口本身可以正确响应 WM_NCHITTEST。\n\t\t// 见 https://github.com/microsoft/terminal/issues/8795\n\t\tconst POINT cursorPos{ GET_X_LPARAM(lParam),GET_Y_LPARAM(lParam) };\n\n\t\tRECT clientRect;\n\t\tWin32Helper::GetClientScreenRect(Handle(), clientRect);\n\n\t\t// 如果光标不在客户区内则交给 OS 处理\n\t\tif (!PtInRect(&clientRect, cursorPos)) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// 上边框和标题栏窗口之外为客户区\n\t\tif (cursorPos.y >= clientRect.top + (LONG)_GetTopBorderThickness()) {\n\t\t\tif (_hwndTitleBar) {\n\t\t\t\tRECT titlebarWndRect{};\n\t\t\t\tGetWindowRect(_hwndTitleBar.get(), &titlebarWndRect);\n\t\t\t\tif (!PtInRect(&titlebarWndRect, cursorPos)) {\n\t\t\t\t\treturn HTCLIENT;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn HTCLIENT;\n\t\t\t}\n\t\t}\n\n\t\tif (!_IsMaximized()) {\n\t\t\tconst int resizeHandleHeight = _GetResizeHandleHeight();\n\t\t\tif (cursorPos.y < clientRect.top + resizeHandleHeight) {\n\t\t\t\t// 光标位于上边框\n\t\t\t\tif (cursorPos.x < clientRect.left + resizeHandleHeight) {\n\t\t\t\t\treturn HTTOPLEFT;\n\t\t\t\t} else if (cursorPos.x >= clientRect.right - resizeHandleHeight) {\n\t\t\t\t\treturn HTTOPRIGHT;\n\t\t\t\t} else {\n\t\t\t\t\treturn HTTOP;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tstatic const Size buttonSizeInDips = [this]() {\n\t\t\treturn Content()->TitleBar().CaptionButtons().CaptionButtonSize();\n\t\t}();\n\n\t\tconst float buttonWidthInPixels = buttonSizeInDips.Width * CurrentDpi() / USER_DEFAULT_SCREEN_DPI;\n\t\tconst float buttonHeightInPixels = buttonSizeInDips.Height * CurrentDpi() / USER_DEFAULT_SCREEN_DPI;\n\n\t\tif (cursorPos.y >= clientRect.top + _GetTopBorderThickness() + buttonHeightInPixels) {\n\t\t\t// 光标位于标题按钮下方，如果标题栏很宽，这里也可以拖动\n\t\t\treturn HTCAPTION;\n\t\t}\n\n\t\t// 从右向左检查光标是否位于某个标题栏按钮上\n\t\tconst LONG cursorToRight = clientRect.right - cursorPos.x;\n\t\tif (cursorToRight < buttonWidthInPixels) {\n\t\t\treturn HTCLOSE;\n\t\t} else if (cursorToRight < buttonWidthInPixels * 2) {\n\t\t\t// 支持 Win11 的贴靠布局\n\t\t\treturn HTMAXBUTTON;\n\t\t} else if (cursorToRight < buttonWidthInPixels * 3) {\n\t\t\treturn HTMINBUTTON;\n\t\t} else {\n\t\t\t// 不在任何标题栏按钮上则在可拖拽区域\n\t\t\treturn HTCAPTION;\n\t\t}\n\t}\n\tcase WM_DESTROY:\n\t{\n\t\tAppSettings::Get().Save();\n\t\t_appThemeChangedRevoker.Revoke();\n\t\t// 标题栏窗口经常使用 Content()，确保在关闭 DWXS 前销毁\n\t\t_hwndTitleBar.reset();\n\t\t_trackingMouse = false;\n\n\t\t// 不显示托盘图标时关闭主窗口应退出\n\t\tif (!AppSettings::Get().IsShowNotifyIcon()) {\n\t\t\tLRESULT ret = base_type::_MessageHandler(msg, wParam, lParam);\n\t\t\t// 由于基类会清空消息队列，PostQuitMessage 应在基类处理完毕后执行\n\t\t\tPostQuitMessage(0);\n\t\t\treturn ret;\n\t\t}\n\n\t\tbreak;\n\t}\n\t}\n\treturn base_type::_MessageHandler(msg, wParam, lParam);\n}\n\nstd::pair<POINT, SIZE> MainWindow::_CreateWindow() noexcept {\n\tconst Point& windowCenter = AppSettings::Get().MainWindowCenter();\n\tSize windowSizeInDips = AppSettings::Get().MainWindowSizeInDips();\n\n\tPOINT windowPos = { CW_USEDEFAULT,CW_USEDEFAULT };\n\tSIZE windowSize{};\n\n\t// windowSizeInDips 小于零表示默认位置和尺寸\n\tif (windowSizeInDips.Width > 0) {\n\t\t// 检查窗口中心点的 DPI，根据我的测试，创建窗口时 Windows 使用窗口中心点确定 DPI。\n\t\t// 如果窗口中心点不在任何屏幕上，则查找最近的屏幕。如果窗口尺寸太大无法被屏幕容纳，\n\t\t// 则还原为默认位置和尺寸。\n\t\tconst HMONITOR hMon = MonitorFromPoint(\n\t\t\t{ std::lroundf(windowCenter.X),std::lroundf(windowCenter.Y) },\n\t\t\tMONITOR_DEFAULTTONEAREST\n\t\t);\n\n\t\tUINT dpi = USER_DEFAULT_SCREEN_DPI;\n\t\tGetDpiForMonitor(hMon, MDT_EFFECTIVE_DPI, &dpi, &dpi);\n\n\t\tconst float dpiFactor = dpi / float(USER_DEFAULT_SCREEN_DPI);\n\t\tconst Size windowSizeInPixels = {\n\t\t\twindowSizeInDips.Width * dpiFactor,\n\t\t\twindowSizeInDips.Height * dpiFactor\n\t\t};\n\n\t\twindowSize.cx = std::lroundf(windowSizeInPixels.Width);\n\t\twindowSize.cy = std::lroundf(windowSizeInPixels.Height);\n\n\t\tMONITORINFO mi{ .cbSize = sizeof(mi) };\n\t\tGetMonitorInfo(hMon, &mi);\n\n\t\t// 确保启动位置在屏幕工作区内。不允许启动时跨越多个屏幕\n\t\tif (windowSize.cx <= mi.rcWork.right - mi.rcWork.left && windowSize.cy <= mi.rcWork.bottom - mi.rcWork.top) {\n\t\t\twindowPos.x = std::lroundf(windowCenter.X - windowSizeInPixels.Width / 2);\n\t\t\twindowPos.x = std::clamp(windowPos.x, mi.rcWork.left, mi.rcWork.right - windowSize.cx);\n\n\t\t\twindowPos.y = std::lroundf(windowCenter.Y - windowSizeInPixels.Height / 2);\n\t\t\twindowPos.y = std::clamp(windowPos.y, mi.rcWork.top, mi.rcWork.bottom - windowSize.cy);\n\t\t} else {\n\t\t\t// 屏幕工作区无法容纳窗口则使用默认窗口尺寸\n\t\t\twindowSize = {};\n\t\t\twindowSizeInDips.Width = -1.0f;\n\t\t}\n\t}\n\n\t// Win11 22H2 中为了使用 Mica 背景需指定 WS_EX_NOREDIRECTIONBITMAP\n\t// windowSize 可能为零，并返回窗口尺寸给调用者\n\tCreateWindowEx(\n\t\tWin32Helper::GetOSVersion().Is22H2OrNewer() ? WS_EX_NOREDIRECTIONBITMAP : 0,\n\t\tCommonSharedConstants::MAIN_WINDOW_CLASS_NAME,\n\t\tL\"Magpie\",\n\t\tWS_OVERLAPPEDWINDOW,\n\t\twindowPos.x,\n\t\twindowPos.y,\n\t\twindowSize.cx,\n\t\twindowSize.cy,\n\t\tNULL,\n\t\tNULL,\n\t\twil::GetModuleInstanceHandle(),\n\t\tthis\n\t);\n\tassert(Handle());\n\n\tif (windowSize.cx == 0) {\n\t\tconst HMONITOR hMon = MonitorFromWindow(Handle(), MONITOR_DEFAULTTONEAREST);\n\n\t\tMONITORINFO mi{ .cbSize = sizeof(mi) };\n\t\tGetMonitorInfo(hMon, &mi);\n\n\t\tconst float dpiFactor = CurrentDpi() / float(USER_DEFAULT_SCREEN_DPI);\n\t\tconst Size workingAreaSizeInDips = {\n\t\t\t(mi.rcWork.right - mi.rcWork.left) / dpiFactor,\n\t\t\t(mi.rcWork.bottom - mi.rcWork.top) / dpiFactor\n\t\t};\n\n\t\t// 确保启动尺寸小于屏幕工作区\n\t\tif (windowSizeInDips.Width <= 0 ||\n\t\t\twindowSizeInDips.Width > workingAreaSizeInDips.Width ||\n\t\t\twindowSizeInDips.Height > workingAreaSizeInDips.Height) {\n\t\t\t// 默认尺寸\n\t\t\tstatic constexpr Size DEFAULT_SIZE{ 980.0f, 690.0f };\n\n\t\t\twindowSizeInDips = DEFAULT_SIZE;\n\n\t\t\tif (windowSizeInDips.Width > workingAreaSizeInDips.Width ||\n\t\t\t\twindowSizeInDips.Height > workingAreaSizeInDips.Height) {\n\t\t\t\t// 屏幕太小无法容纳默认尺寸\n\t\t\t\twindowSizeInDips.Width = workingAreaSizeInDips.Width * 0.8f;\n\t\t\t\twindowSizeInDips.Height = windowSizeInDips.Width * DEFAULT_SIZE.Height / DEFAULT_SIZE.Width;\n\n\t\t\t\tif (windowSizeInDips.Height > workingAreaSizeInDips.Height) {\n\t\t\t\t\twindowSizeInDips.Height = workingAreaSizeInDips.Height * 0.8f;\n\t\t\t\t\twindowSizeInDips.Width = windowSizeInDips.Height * DEFAULT_SIZE.Width / DEFAULT_SIZE.Height;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twindowSize.cx = std::lroundf(windowSizeInDips.Width * dpiFactor);\n\t\twindowSize.cy = std::lroundf(windowSizeInDips.Height * dpiFactor);\n\n\t\t// 确保启动位置在屏幕工作区内\n\t\tRECT targetRect;\n\t\tGetWindowRect(Handle(), &targetRect);\n\t\twindowPos.x = std::clamp(targetRect.left, mi.rcWork.left, mi.rcWork.right - windowSize.cx);\n\t\twindowPos.y = std::clamp(targetRect.top, mi.rcWork.top, mi.rcWork.bottom - windowSize.cy);\n\n\t\treturn std::make_pair(windowPos, windowSize);\n\t} else {\n\t\treturn {};\n\t}\n}\n\nvoid MainWindow::_UpdateTheme() noexcept {\n\tXamlWindowT::_SetTheme(App::Get().IsLightTheme());\n}\n\nLRESULT MainWindow::_TitleBarWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) noexcept {\n\tif (msg == WM_NCCREATE) {\n\t\tMainWindow* that = (MainWindow*)(((CREATESTRUCT*)lParam)->lpCreateParams);\n\t\tassert(that && !that->_hwndTitleBar);\n\t\tthat->_hwndTitleBar.reset(hWnd);\n\t\tSetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)that);\n\t} else if (MainWindow* that = (MainWindow*)GetWindowLongPtr(hWnd, GWLP_USERDATA)) {\n\t\treturn that->_TitleBarMessageHandler(msg, wParam, lParam);\n\t}\n\n\treturn DefWindowProc(hWnd, msg, wParam, lParam);\n}\n\nLRESULT MainWindow::_TitleBarMessageHandler(UINT msg, WPARAM wParam, LPARAM lParam) noexcept {\n\tswitch (msg) {\n\tcase WM_NCHITTEST:\n\t{\n\t\t// 和主窗口一致\n\t\treturn _MessageHandler(WM_NCHITTEST, wParam, lParam);\n\t}\n\t// 在捕获光标时会收到\n\tcase WM_MOUSEMOVE:\n\t{\n\t\tPOINT cursorPos{ GET_X_LPARAM(lParam),GET_Y_LPARAM(lParam) };\n\t\tClientToScreen(_hwndTitleBar.get(), &cursorPos);\n\t\twParam = _TitleBarMessageHandler(WM_NCHITTEST, 0, MAKELPARAM(cursorPos.x, cursorPos.y));\n\t\t[[fallthrough]];\n\t}\n\tcase WM_NCMOUSEMOVE:\n\t{\n\t\tCaptionButtonsControl& captionButtons = Content()->TitleBar().CaptionButtons();\n\n\t\t// 将 hover 状态通知 CaptionButtons。标题栏窗口拦截了 XAML Islands 中的标题栏\n\t\t// 控件的鼠标消息，标题栏按钮的状态由我们手动控制。\n\t\tswitch (wParam) {\n\t\tcase HTTOP:\n\t\tcase HTTOPLEFT:\n\t\tcase HTTOPRIGHT:\n\t\tcase HTCAPTION:\n\t\t{\n\t\t\tcaptionButtons.LeaveButtons();\n\n\t\t\t// 将这些消息传给主窗口才能移动窗口或者调整窗口大小\n\t\t\treturn _MessageHandler(msg, wParam, lParam);\n\t\t}\n\t\tcase HTMINBUTTON:\n\t\tcase HTMAXBUTTON:\n\t\tcase HTCLOSE:\n\t\t\tcaptionButtons.HoverButton((CaptionButton)wParam);\n\n\t\t\t// 追踪鼠标以确保鼠标离开标题栏时我们能收到 WM_NCMOUSELEAVE 消息，否则无法\n\t\t\t// 可靠的收到这个消息，尤其是在用户快速移动鼠标的时候。\n\t\t\tif (!_trackingMouse && msg == WM_NCMOUSEMOVE) {\n\t\t\t\tTRACKMOUSEEVENT ev{};\n\t\t\t\tev.cbSize = sizeof(TRACKMOUSEEVENT);\n\t\t\t\tev.dwFlags = TME_LEAVE | TME_NONCLIENT;\n\t\t\t\tev.hwndTrack = _hwndTitleBar.get();\n\t\t\t\tev.dwHoverTime = HOVER_DEFAULT; // 不关心 HOVER 消息\n\t\t\t\tTrackMouseEvent(&ev);\n\t\t\t\t_trackingMouse = true;\n\t\t\t}\n\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tcaptionButtons.LeaveButtons();\n\t\t}\n\t\tbreak;\n\t}\n\tcase WM_NCMOUSELEAVE:\n\tcase WM_MOUSELEAVE:\n\t{\n\t\t// 我们需要检查鼠标是否**真的**离开了标题栏按钮，因为在某些情况下 OS 会错误汇报。\n\t\t// 比如: 鼠标在关闭按钮上停留了一段时间，系统会显示文字提示，这时按下左键，便会收\n\t\t// 到 WM_NCMOUSELEAVE，但此时鼠标并没有离开标题栏按钮\n\t\tPOINT cursorPos;\n\t\tGetCursorPos(&cursorPos);\n\t\t// 先检查鼠标是否在主窗口上，如果正在显示文字提示，会返回 _hwndTitleBar\n\t\tHWND hwndUnderCursor = WindowFromPoint(cursorPos);\n\t\tif (hwndUnderCursor != Handle() && hwndUnderCursor != _hwndTitleBar.get()) {\n\t\t\tContent()->TitleBar().CaptionButtons().LeaveButtons();\n\t\t} else {\n\t\t\t// 然后检查鼠标在标题栏上的位置\n\t\t\tLRESULT hit = _TitleBarMessageHandler(WM_NCHITTEST, 0, MAKELPARAM(cursorPos.x, cursorPos.y));\n\t\t\tif (hit != HTMINBUTTON && hit != HTMAXBUTTON && hit != HTCLOSE) {\n\t\t\t\tContent()->TitleBar().CaptionButtons().LeaveButtons();\n\t\t\t}\n\t\t}\n\n\t\t_trackingMouse = false;\n\t\tbreak;\n\t}\n\tcase WM_NCLBUTTONDOWN:\n\tcase WM_NCLBUTTONDBLCLK:\n\t{\n\t\t// 手动处理标题栏上的点击。如果在标题栏按钮上，则通知 CaptionButtons，否则将消息传递给主窗口\n\t\tswitch (wParam) {\n\t\tcase HTTOP:\n\t\tcase HTTOPLEFT:\n\t\tcase HTTOPRIGHT:\n\t\tcase HTCAPTION:\n\t\t{\n\t\t\t// 将这些消息传给主窗口才能移动窗口或者调整窗口大小\n\t\t\treturn _MessageHandler(msg, wParam, lParam);\n\t\t}\n\t\tcase HTMINBUTTON:\n\t\tcase HTMAXBUTTON:\n\t\tcase HTCLOSE:\n\t\t\tContent()->TitleBar().CaptionButtons().PressButton((CaptionButton)wParam);\n\t\t\t// 在标题栏按钮上按下左键后我们便捕获光标，这样才能在释放时得到通知。注意捕获光标后\n\t\t\t// 便不会再收到 NC 族消息，这就是为什么我们要处理 WM_MOUSEMOVE 和 WM_LBUTTONUP\n\t\t\tSetCapture(_hwndTitleBar.get());\n\t\t\tbreak;\n\t\t}\n\t\treturn 0;\n\t}\n\t// 在捕获光标时会收到\n\tcase WM_LBUTTONUP:\n\t{\n\t\tReleaseCapture();\n\n\t\tPOINT cursorPos{ GET_X_LPARAM(lParam),GET_Y_LPARAM(lParam) };\n\t\tClientToScreen(_hwndTitleBar.get(), &cursorPos);\n\t\twParam = _TitleBarMessageHandler(WM_NCHITTEST, 0, MAKELPARAM(cursorPos.x, cursorPos.y));\n\t\t[[fallthrough]];\n\t}\n\tcase WM_NCLBUTTONUP:\n\t{\n\t\t// 处理鼠标在标题栏上释放。如果在标题栏按钮上，则通知 CaptionButtons，否则将消息传递给主窗口\n\t\tswitch (wParam) {\n\t\tcase HTTOP:\n\t\tcase HTTOPLEFT:\n\t\tcase HTTOPRIGHT:\n\t\tcase HTCAPTION:\n\t\t{\n\t\t\t// 在可拖拽区域或上边框释放左键，将此消息传递给主窗口\n\t\t\tContent()->TitleBar().CaptionButtons().ReleaseButtons();\n\t\t\treturn _MessageHandler(msg, wParam, lParam);\n\t\t}\n\t\tcase HTMINBUTTON:\n\t\tcase HTMAXBUTTON:\n\t\tcase HTCLOSE:\n\t\t\t// 在标题栏按钮上释放左键\n\t\t\tContent()->TitleBar().CaptionButtons().ReleaseButton((CaptionButton)wParam);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tContent()->TitleBar().CaptionButtons().ReleaseButtons();\n\t\t}\n\t\t\n\t\treturn 0;\n\t}\n\tcase WM_NCRBUTTONDOWN:\n\tcase WM_NCRBUTTONDBLCLK:\n\tcase WM_NCRBUTTONUP:\n\t\t// 不关心右键，将它们传递给主窗口\n\t\treturn _MessageHandler(msg, wParam, lParam);\n\t}\n\n\treturn DefWindowProc(_hwndTitleBar.get(), msg, wParam, lParam);\n}\n\nvoid MainWindow::_ResizeTitleBarWindow() noexcept {\n\tif (!_hwndTitleBar.get()) {\n\t\treturn;\n\t}\n\n\t// 将标题栏窗口置于 XAML Islands 窗口上方，覆盖上边框和标题栏控件\n\tconst Point leftBottom = Content()->TitleBar().LeftBottomPoint();\n\tconst float dpiScale = CurrentDpi() / float(USER_DEFAULT_SCREEN_DPI);\n\n\tconst int titleBarX = (int)std::floorf(leftBottom.X * dpiScale);\n\n\t// 右边界使用客户区边界\n\tRECT clientRect;\n\tGetClientRect(Handle(), &clientRect);\n\tconst int titleBarWidth = clientRect.right - titleBarX;\n\n\tconst uint32_t topBorderHeight = _GetTopBorderThickness();\n\t// 不知为何，直接向上取整有时无法遮盖 TitleBarControl\n\tconst int titleBarHeight = topBorderHeight + (int)std::floorf(leftBottom.Y * dpiScale + 1);\n\n\tSetWindowPos(\n\t\t_hwndTitleBar.get(),\n\t\tHWND_TOP,\n\t\ttitleBarX, 0, titleBarWidth, titleBarHeight,\n\t\tSWP_SHOWWINDOW\n\t);\n\n\tif (_hwndMaximizeButton) {\n\t\tstatic const float captionButtonHeightInDips = [&]() {\n\t\t\treturn Content()->TitleBar().CaptionButtons().CaptionButtonSize().Height;\n\t\t}();\n\n\t\tconst int captionButtonHeightInPixels = (int)std::ceilf(captionButtonHeightInDips * dpiScale);\n\n\t\t// 确保原生按钮和标题栏按钮高度相同\n\t\tMoveWindow(_hwndMaximizeButton, titleBarX, topBorderHeight, titleBarWidth, captionButtonHeightInPixels, FALSE);\n\t}\n\n\t// 设置标题栏窗口的最大化样式，这样才能展示正确的文字提示\n\tLONG_PTR style = GetWindowLongPtr(_hwndTitleBar.get(), GWL_STYLE);\n\tSetWindowLongPtr(_hwndTitleBar.get(), GWL_STYLE,\n\t\t_IsMaximized() ? style | WS_MAXIMIZE : style & ~WS_MAXIMIZE);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/MainWindow.h",
    "content": "#pragma once\n#include \"RootPage.h\"\n#include \"XamlWindow.h\"\n\nnamespace Magpie {\n\nclass MainWindow final : public XamlWindowT<MainWindow, winrt::com_ptr<winrt::Magpie::implementation::RootPage>> {\n\tusing base_type = XamlWindowT<MainWindow, winrt::com_ptr<winrt::Magpie::implementation::RootPage>>;\n\tfriend WindowBaseT<MainWindow>;\npublic:\n\tbool Create() noexcept;\n\n\tvoid Show() const noexcept;\n\nprotected:\n\tLRESULT _MessageHandler(UINT msg, WPARAM wParam, LPARAM lParam) noexcept;\n\nprivate:\n\tstd::pair<POINT, SIZE> _CreateWindow() noexcept;\n\n\tvoid _UpdateTheme() noexcept;\n\n\tstatic LRESULT CALLBACK _TitleBarWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) noexcept;\n\n\tLRESULT _TitleBarMessageHandler(UINT msg, WPARAM wParam, LPARAM lParam) noexcept;\n\n\tvoid _ResizeTitleBarWindow() noexcept;\n\n\tMultithreadEvent<bool>::EventRevoker _appThemeChangedRevoker;\n\n\twil::unique_hwnd _hwndTitleBar;\n\tHWND _hwndMaximizeButton = NULL;\n\tbool _trackingMouse = false;\n\n\tbool _smoothResizedEnabled = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/NewProfileViewModel.cpp",
    "content": "#include \"pch.h\"\n#include \"NewProfileViewModel.h\"\n#if __has_include(\"NewProfileViewModel.g.cpp\")\n#include \"NewProfileViewModel.g.cpp\"\n#endif\n#include \"AppSettings.h\"\n#include \"Win32Helper.h\"\n#include \"ProfileService.h\"\n#include \"AppXReader.h\"\n#include \"CommonSharedConstants.h\"\n#include \"CandidateWindowItem.h\"\n#include <dwmapi.h>\n\nusing namespace Magpie;\n\nnamespace winrt::Magpie::implementation {\n\nstatic bool IsCandidateWindow(HWND hWnd) noexcept {\n\t// 跳过不可见的窗口\n\tif (!IsWindowVisible(hWnd)) {\n\t\treturn false;\n\t}\n\n\t// 跳过不接受点击的窗口\n\tif (GetWindowLongPtr(hWnd, GWL_EXSTYLE) & WS_EX_TRANSPARENT) {\n\t\treturn false;\n\t}\n\n\tRECT frameRect{};\n\n\tHRESULT hr = DwmGetWindowAttribute(hWnd,\n\t\tDWMWA_EXTENDED_FRAME_BOUNDS, &frameRect, sizeof(frameRect));\n\tif (FAILED(hr)) {\n\t\treturn false;\n\t}\n\n\tSIZE frameSize = Win32Helper::GetSizeOfRect(frameRect);\n\tif (frameSize.cx < 50 && frameSize.cy < 50) {\n\t\treturn false;\n\t}\n\n\t// 标题不能为空\n\tif (Win32Helper::GetWindowTitle(hWnd).empty()) {\n\t\treturn false;\n\t}\n\n\t// 排除后台 UWP 窗口\n\t// https://stackoverflow.com/questions/43927156/enumwindows-returns-closed-windows-store-applications\n\tUINT isCloaked{};\n\tDwmGetWindowAttribute(hWnd, DWMWA_CLOAKED, &isCloaked, sizeof(isCloaked));\n\tif (isCloaked != 0) {\n\t\treturn false;\n\t}\n\n\tstd::wstring className = Win32Helper::GetWindowClassName(hWnd);\n\tif (className == L\"Progman\" ||\t\t\t\t\t// Program Manager\n\t\tclassName == L\"Xaml_WindowedPopupClass\"\t\t// 主机弹出窗口\n\t) {\n\t\treturn false;\n\t}\n\n\t// 检查是否和已有配置重复\n\tAppXReader appxReader;\n\tif (appxReader.Initialize(hWnd)) {\n\t\treturn ProfileService::Get().TestNewProfile(true, appxReader.AUMID(), className);\n\t} else {\n\t\tstd::wstring fileName = Win32Helper::GetWindowPath(hWnd);\n\t\tif (fileName.empty()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn ProfileService::Get().TestNewProfile(false, fileName, className);\n\t}\n}\n\nstatic SmallVector<HWND> GetDesktopWindows() noexcept {\n\tSmallVector<HWND> windows;\n\t\n\t// EnumWindows 可以枚举到 UWP 窗口，官方文档已经过时。无法枚举到全屏状态下的 UWP 窗口\n\tEnumWindows(\n\t\t[](HWND hWnd, LPARAM lParam) {\n\t\t\tif (IsCandidateWindow(hWnd)) {\n\t\t\t\t((SmallVector<HWND>*)lParam)->push_back(hWnd);\n\t\t\t}\n\n\t\t\treturn TRUE;\n\t\t},\n\t\t(LPARAM)&windows\n\t);\n\n\treturn windows;\n}\n\ntemplate<typename It>\nstatic void SortCandidateWindows(It begin, It end) {\n\t// 根据用户的区域设置排序，对于中文为拼音顺序\n\tstd::sort(begin, end, [](com_ptr<CandidateWindowItem> const& l, com_ptr<CandidateWindowItem> const& r) {\n\t\thstring titleL = l->Title();\n\t\thstring titleR = r->Title();\n\n\t\t// 忽略大小写，忽略半/全角\n\t\treturn CompareStringEx(\n\t\t\tLOCALE_NAME_USER_DEFAULT,\n\t\t\tNORM_IGNORECASE | NORM_IGNOREWIDTH | NORM_LINGUISTIC_CASING,\n\t\t\ttitleL.c_str(), titleL.size(),\n\t\t\ttitleR.c_str(), titleR.size(),\n\t\t\tnullptr, nullptr, 0\n\t\t) == CSTR_LESS_THAN;\n\t});\n}\n\nvoid NewProfileViewModel::PrepareForOpen() {\n\tstd::vector<com_ptr<CandidateWindowItem>> candidateWindows;\n\tfor (HWND hWnd : GetDesktopWindows()) {\n\t\tcandidateWindows.emplace_back(make_self<CandidateWindowItem>(hWnd));\n\t}\n\n\tSortCandidateWindows(candidateWindows.begin(), candidateWindows.end());\n\n\tstd::vector<IInspectable> items;\n\titems.reserve(candidateWindows.size());\n\tfor (const com_ptr<CandidateWindowItem>& item : candidateWindows) {\n\t\titems.push_back(*item);\n\t}\n\n\t_candidateWindows = single_threaded_vector(std::move(items));\n\tRaisePropertyChanged(L\"CandidateWindows\");\n\tRaisePropertyChanged(L\"IsNoCandidateWindow\");\n\tRaisePropertyChanged(L\"IsAnyCandidateWindow\");\n\n\tCandidateWindowIndex(-1);\n\tif (candidateWindows.size() == 1) {\n\t\tcandidateWindows[0]->PropertyChanged([this](IInspectable const&, PropertyChangedEventArgs const& args) {\n\t\t\tif (args.PropertyName() == L\"DefaultProfileName\") {\n\t\t\t\tCandidateWindowIndex(0);\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\t}\n\n\tstd::vector<IInspectable> profiles;\n\tprofiles.push_back(box_value(ResourceLoader::GetForCurrentView(\n\t\tCommonSharedConstants::APP_RESOURCE_MAP_ID).GetString(L\"Root_Defaults/Content\")));\n\tfor (const Profile& profile : AppSettings::Get().Profiles()) {\n\t\tprofiles.push_back(box_value(profile.name));\n\t}\n\n\t_profiles = single_threaded_vector(std::move(profiles));\n\tRaisePropertyChanged(L\"Profiles\");\n\n\tProfileIndex(0);\n}\n\nvoid NewProfileViewModel::CandidateWindowIndex(int value) {\n\t_candidateWindowIndex = value;\n\tRaisePropertyChanged(L\"CandidateWindowIndex\");\n\n\tif (value >= 0) {\n\t\tName(get_self<CandidateWindowItem>(_candidateWindows.GetAt(value)\n\t\t\t.try_as<winrt::Magpie::CandidateWindowItem>())->DefaultProfileName());\n\t} else {\n\t\tName({});\n\t}\n}\n\nvoid NewProfileViewModel::Name(const hstring& value) noexcept {\n\t_name = value;\n\tRaisePropertyChanged(L\"Name\");\n\n\t_IsConfirmButtonEnabled(!value.empty() && _candidateWindowIndex >= 0);\n}\n\nvoid NewProfileViewModel::Confirm() const noexcept {\n\tif (_candidateWindowIndex < 0 || _name.empty()) {\n\t\treturn;\n\t}\n\n\tCandidateWindowItem* selectedItem = get_self<CandidateWindowItem>(\n\t\t_candidateWindows.GetAt(_candidateWindowIndex).try_as<winrt::Magpie::CandidateWindowItem>());\n\thstring aumid = selectedItem->AUMID();\n\tProfileService::Get().AddProfile(!aumid.empty(), aumid.empty() ? selectedItem->Path() : aumid,\n\t\tselectedItem->ClassName(), _name, _profileIndex - 1);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/NewProfileViewModel.h",
    "content": "#pragma once\n#include \"NewProfileViewModel.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct NewProfileViewModel : NewProfileViewModelT<NewProfileViewModel>,\n                             wil::notify_property_changed_base<NewProfileViewModel> {\n\tNewProfileViewModel() = default;\n\n\tvoid PrepareForOpen();\n\n\tIVector<IInspectable> CandidateWindows() const noexcept {\n\t\treturn _candidateWindows;\n\t}\n\n\tint CandidateWindowIndex() const noexcept {\n\t\treturn _candidateWindowIndex;\n\t}\n\n\tvoid CandidateWindowIndex(int value);\n\n\thstring Name() const noexcept {\n\t\treturn _name;\n\t}\n\n\tvoid Name(const hstring& value) noexcept;\n\n\tIVector<IInspectable> Profiles() const noexcept {\n\t\treturn _profiles;\n\t}\n\n\tint ProfileIndex() const noexcept {\n\t\treturn _profileIndex;\n\t}\n\n\tvoid ProfileIndex(int value) {\n\t\t_profileIndex = value;\n\t\tRaisePropertyChanged(L\"ProfileIndex\");\n\t}\n\n\tbool IsConfirmButtonEnabled() const noexcept {\n\t\treturn _isConfirmButtonEnabled;\n\t}\n\n\tbool IsNoCandidateWindow() const noexcept {\n\t\treturn !_candidateWindows || _candidateWindows.Size() == 0;\n\t}\n\n\tbool IsAnyCandidateWindow() const noexcept {\n\t\treturn _candidateWindows && _candidateWindows.Size() != 0;\n\t}\n\n\tvoid Confirm() const noexcept;\n\nprivate:\n\tvoid _IsConfirmButtonEnabled(bool value) noexcept {\n\t\tif (_isConfirmButtonEnabled == value) {\n\t\t\treturn;\n\t\t}\n\n\t\t_isConfirmButtonEnabled = value;\n\t\tRaisePropertyChanged(L\"IsConfirmButtonEnabled\");\n\t}\n\n\tIVector<IInspectable> _candidateWindows{ nullptr };\n\tint _candidateWindowIndex = -1;\n\thstring _name;\n\tIVector<IInspectable> _profiles{ nullptr };\n\tint _profileIndex = 0;\n\tbool _isConfirmButtonEnabled = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/NewProfileViewModel.idl",
    "content": "namespace Magpie {\n\truntimeclass NewProfileViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tIVector<IInspectable> CandidateWindows { get; };\n\t\tInt32 CandidateWindowIndex;\n\t\tString Name;\n\t\tIVector<IInspectable> Profiles { get; };\n\t\tInt32 ProfileIndex;\n\t\tBoolean IsConfirmButtonEnabled { get; };\n\t\tBoolean IsNoCandidateWindow { get; };\n\t\tBoolean IsAnyCandidateWindow { get; };\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/NotifyIconService.cpp",
    "content": "#include \"pch.h\"\n#include \"App.h\"\n#include \"CommonSharedConstants.h\"\n#include \"Logger.h\"\n#include \"NotifyIconService.h\"\n#include \"resource.h\"\n#include \"ScalingService.h\"\n#include <CommCtrl.h>\n\nusing namespace winrt::Magpie::implementation;\nusing namespace winrt;\n\nnamespace Magpie {\n\n// 当任务栏被创建时会广播此消息。用于在资源管理器被重新启动时重新创建托盘图标\n// https://learn.microsoft.com/en-us/windows/win32/shell/taskbar#taskbar-creation-notification\nstatic UINT WM_TASKBARCREATED = 0;\n\nvoid NotifyIconService::Initialize() noexcept {\n\tWM_TASKBARCREATED = RegisterWindowMessage(L\"TaskbarCreated\");\n\n\t_nid.cbSize = sizeof(_nid);\n\t_nid.uVersion = 0;\t// 不使用 NOTIFYICON_VERSION_4\n\t_nid.uCallbackMessage = CommonSharedConstants::WM_NOTIFY_ICON;\n\t_nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;\n\t_nid.uID = 0;\n}\n\nvoid NotifyIconService::Uninitialize() noexcept {\n\tif (!WM_TASKBARCREATED) {\n\t\treturn;\n\t}\n\n\tIsShow(false);\n\n\tif (_nid.hWnd) {\n\t\tDestroyWindow(_nid.hWnd);\n\t}\n\tif (_nid.hIcon) {\n\t\tDestroyIcon(_nid.hIcon);\n\t}\n}\n\nvoid NotifyIconService::IsShow(bool value) noexcept {\n\t_shouldShow = value;\n\n\tif (value) {\n\t\tif (!_nid.hWnd) {\n\t\t\t// 创建一个隐藏窗口用于接收托盘图标消息\n\t\t\tHINSTANCE hInst = wil::GetModuleInstanceHandle();\n\t\t\t{\n\t\t\t\tWNDCLASSEXW wcex{\n\t\t\t\t\t.cbSize = sizeof(wcex),\n\t\t\t\t\t.lpfnWndProc = _NotifyIconWndProcStatic,\n\t\t\t\t\t.hInstance = hInst,\n\t\t\t\t\t.lpszClassName = CommonSharedConstants::NOTIFY_ICON_WINDOW_CLASS_NAME\n\t\t\t\t};\n\t\t\t\tRegisterClassEx(&wcex);\n\t\t\t}\n\n\t\t\t_nid.hWnd = CreateWindow(\n\t\t\t\tCommonSharedConstants::NOTIFY_ICON_WINDOW_CLASS_NAME,\n\t\t\t\tnullptr,\n\t\t\t\tWS_OVERLAPPEDWINDOW,\n\t\t\t\tCW_USEDEFAULT,\n\t\t\t\tCW_USEDEFAULT,\n\t\t\t\tCW_USEDEFAULT,\n\t\t\t\tCW_USEDEFAULT,\n\t\t\t\tNULL,\n\t\t\t\tNULL,\n\t\t\t\thInst,\n\t\t\t\t0\n\t\t\t);\n\n\t\t\tLoadIconMetric(hInst, MAKEINTRESOURCE(IDI_APP), LIM_SMALL, &_nid.hIcon);\n\t\t\twcscpy_s(_nid.szTip, std::size(_nid.szTip), L\"Magpie\");\n\t\t}\n\n\t\tif (!Shell_NotifyIcon(NIM_ADD, &_nid)) {\n\t\t\t// 创建托盘图标失败，可能是因为已经存在\n\t\t\tShell_NotifyIcon(NIM_DELETE, &_nid);\n\t\t\tif (!Shell_NotifyIcon(NIM_ADD, &_nid)) {\n\t\t\t\tLogger::Get().Win32Error(\"创建托盘图标失败\");\n\t\t\t\t_isShow = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t_isShow = true;\n\t} else {\n\t\tif (_isShow) {\n\t\t\tShell_NotifyIcon(NIM_DELETE, &_nid);\n\t\t\t_shouldShow = false;\n\t\t\t_isShow = false;\n\t\t}\n\t}\n}\n\nLRESULT NotifyIconService::_NotifyIconWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {\n\tswitch (message) {\n\tcase CommonSharedConstants::WM_NOTIFY_ICON:\n\t{\n\t\tswitch (lParam) {\n\t\tcase WM_LBUTTONUP:\n\t\t{\n\t\t\tApp::Get().ShowMainWindow();\n\t\t\tbreak;\n\t\t}\n\t\tcase WM_RBUTTONUP:\n\t\t{\n\t\t\twil::unique_hmenu hMenu(CreatePopupMenu());\n\n\t\t\tResourceLoader resourceLoader =\n\t\t\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\n\t\t\thstring mainWindowText = resourceLoader.GetString(L\"NotifyIcon_MainWindow\");\n\t\t\tAppendMenu(hMenu.get(), MF_STRING, 1, mainWindowText.c_str());\n\n\t\t\thstring fmtStr = resourceLoader.GetString(L\"NotifyIcon_Timer_Fullscreen\");\n\t\t\tstd::wstring timerText = fmt::format(\n\t\t\t\tfmt::runtime(std::wstring_view(fmtStr)),\n\t\t\t\tAppSettings::Get().CountdownSeconds()\n\t\t\t);\n\t\t\tAppendMenu(hMenu.get(), MF_STRING, 2, timerText.c_str());\n\n\t\t\tfmtStr = resourceLoader.GetString(L\"NotifyIcon_Timer_Windowed\");\n\t\t\ttimerText = fmt::format(\n\t\t\t\tfmt::runtime(std::wstring_view(fmtStr)),\n\t\t\t\tAppSettings::Get().CountdownSeconds()\n\t\t\t);\n\t\t\tAppendMenu(hMenu.get(), MF_STRING, 3, timerText.c_str());\n\n\t\t\thstring exitText = resourceLoader.GetString(L\"NotifyIcon_Exit\");\n\t\t\tAppendMenu(hMenu.get(), MF_STRING, 4, exitText.c_str());\n\n\t\t\t// hWnd 必须为前台窗口才能正确展示弹出菜单\n\t\t\t// 即使 hWnd 是隐藏的\n\t\t\tSetForegroundWindow(hWnd);\n\n\t\t\tPOINT cursorPos;\n\t\t\tGetCursorPos(&cursorPos);\n\t\t\tBOOL selectedMenuId = TrackPopupMenuEx(\n\t\t\t\thMenu.get(),\n\t\t\t\tTPM_LEFTALIGN | TPM_NONOTIFY | TPM_RETURNCMD,\n\t\t\t\tcursorPos.x,\n\t\t\t\tcursorPos.y,\n\t\t\t\thWnd,\n\t\t\t\tnullptr\n\t\t\t);\n\n\t\t\tswitch (selectedMenuId) {\n\t\t\tcase 1:\n\t\t\t\tApp::Get().ShowMainWindow();\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tScalingService::Get().StartTimer(false);\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tScalingService::Get().StartTimer(true);\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tApp::Get().Quit();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\tcase WM_WINDOWPOSCHANGING:\n\t{\n\t\t// 如果 Magpie 启动时任务栏尚未被创建，Shell_NotifyIcon 会失败，因此无法收到 WM_TASKBARCREATED 消息。\n\t\t// 监听 WM_WINDOWPOSCHANGING 以在资源管理器启动时获得通知\n\t\t// hack 来自 https://github.com/microsoft/PowerToys/pull/789\n\t\tif (!_isShow && _shouldShow) {\n\t\t\tIsShow(true);\n\t\t}\n\t\tbreak;\n\t}\n\tdefault:\n\t{\n\t\tif (message == WM_TASKBARCREATED) {\n\t\t\tif (_shouldShow) {\n\t\t\t\t// 重新创建任务栏图标\n\t\t\t\tIsShow(true);\n\t\t\t}\n\t\t}\n\t}\n\t}\n\n\treturn DefWindowProc(hWnd, message, wParam, lParam);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/NotifyIconService.h",
    "content": "#pragma once\n#include <shellapi.h>\n\nnamespace Magpie {\n\nclass NotifyIconService {\npublic:\n\tstatic NotifyIconService& Get() noexcept {\n\t\tstatic NotifyIconService instance;\n\t\treturn instance;\n\t}\n\n\tvoid Initialize() noexcept;\n\tvoid Uninitialize() noexcept;\n\n\tvoid IsShow(bool value) noexcept;\n\tbool IsShow() const noexcept {\n\t\t// 返回 _shouldShow 而不是 _isShow，对外接口假设总是创建成功\n\t\treturn _shouldShow;\n\t}\n\nprivate:\n\tstatic LRESULT _NotifyIconWndProcStatic(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {\n\t\treturn Get()._NotifyIconWndProc(hWnd, msg, wParam, lParam);\n\t}\n\tLRESULT _NotifyIconWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\n\n\tNOTIFYICONDATA _nid{};\n\tbool _isShow = false;\n\tbool _shouldShow = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/PageFrame.cpp",
    "content": "#include \"pch.h\"\n#include \"PageFrame.h\"\n#if __has_include(\"PageFrame.g.cpp\")\n#include \"PageFrame.g.cpp\"\n#endif\n#include \"XamlHelper.h\"\n#include \"App.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Data;\nusing namespace Windows::UI::Xaml::Input;\nusing namespace Windows::UI::Text;\n\nnamespace winrt::Magpie::implementation {\n\nvoid PageFrame::InitializeComponent() {\n\tPageFrameT::InitializeComponent();\n\n\t_UpdateIconContainer();\n\t_UpdateHeaderActionPresenter();\n}\n\nvoid PageFrame::Title(hstring value) {\n\tif (_title == value) {\n\t\treturn;\n\t}\n\n\t_title = std::move(value);\n\tRaisePropertyChanged(L\"Title\");\n}\n\nvoid PageFrame::Icon(IconElement value) {\n\tif (_icon == value) {\n\t\treturn;\n\t}\n\n\tif (value) {\n\t\tvalue.Width(28);\n\t\tvalue.Height(28);\n\t}\n\n\t_icon = std::move(value);\n\tRaisePropertyChanged(L\"Icon\");\n\n\t_UpdateIconContainer();\n}\n\nvoid PageFrame::HeaderAction(FrameworkElement value) {\n\tif (_headerAction == value) {\n\t\treturn;\n\t}\n\n\t_headerAction = std::move(value);\n\tRaisePropertyChanged(L\"HeaderAction\");\n\n\t_UpdateHeaderActionPresenter();\n}\n\nvoid PageFrame::MainContent(IInspectable value) {\n\tif (_mainContent == value) {\n\t\treturn;\n\t}\n\n\t_mainContent = std::move(value);\n\tRaisePropertyChanged(L\"HeaderAction\");\n}\n\nvoid PageFrame::Loaded(IInspectable const&, RoutedEventArgs const&) {\n\t// Win10 中更新 ToolTip 的主题\n\tXamlHelper::UpdateThemeOfTooltips(*this, App::Get().IsLightTheme() ? ElementTheme::Light : ElementTheme::Dark);\n}\n\nvoid PageFrame::SizeChanged(IInspectable const&, SizeChangedEventArgs const& e) {\n\t// 根据尺寸调整边距\n\tconst double marginWidth = e.NewSize().Width > 590 ? 40 : 25;\n\n\t{\n\t\tauto headerGrid = HeaderGrid();\n\t\tThickness margin = headerGrid.Margin();\n\t\tmargin.Left = marginWidth;\n\t\tmargin.Right = marginWidth;\n\t\theaderGrid.Margin(margin);\n\t}\n\t{\n\t\tauto scrollViewer = this->ScrollViewer();\n\t\tThickness padding = scrollViewer.Padding();\n\t\tpadding.Left = marginWidth;\n\t\tpadding.Right = marginWidth;\n\t\tscrollViewer.Padding(padding);\n\t}\n}\n\nvoid PageFrame::ScrollViewer_PointerPressed(IInspectable const&, PointerRoutedEventArgs const&) {\n\tXamlHelper::CloseComboBoxPopup(XamlRoot());\n}\n\nvoid PageFrame::ScrollViewer_ViewChanging(IInspectable const&, ScrollViewerViewChangingEventArgs const&) {\n\tXamlHelper::CloseComboBoxPopup(XamlRoot());\n}\n\nvoid PageFrame::ScrollViewer_KeyDown(IInspectable const& sender, KeyRoutedEventArgs const& args) {\n\tauto scrollViewer = sender.try_as<struct ScrollViewer>();\n\tswitch (args.Key()) {\n\tcase VirtualKey::Up:\n\t\tscrollViewer.ChangeView(scrollViewer.HorizontalOffset(), scrollViewer.VerticalOffset() - 100, 1);\n\t\tbreak;\n\tcase VirtualKey::Down:\n\t\tscrollViewer.ChangeView(scrollViewer.HorizontalOffset(), scrollViewer.VerticalOffset() + 100, 1);\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n}\n\nvoid PageFrame::_UpdateIconContainer() {\n\tIconContainer().Visibility(_icon ? Visibility::Visible : Visibility::Collapsed);\n}\n\nvoid PageFrame::_UpdateHeaderActionPresenter() {\n\tHeaderActionPresenter().Visibility(_headerAction ? Visibility::Visible : Visibility::Collapsed);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/PageFrame.h",
    "content": "#pragma once\n#include \"PageFrame.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct PageFrame : PageFrameT<PageFrame>, wil::notify_property_changed_base<PageFrame> {\n\tvoid InitializeComponent();\n\n\thstring Title() const noexcept { return _title; }\n\tvoid Title(hstring value);\n\n\tIconElement Icon() const { return _icon; }\n\tvoid Icon(IconElement value);\n\n\tFrameworkElement HeaderAction() const { return _headerAction; }\n\tvoid HeaderAction(FrameworkElement value);\n\n\tIInspectable MainContent() const { return _mainContent; }\n\tvoid MainContent(IInspectable value);\n\n\tvoid Loaded(IInspectable const&, RoutedEventArgs const&);\n\n\tvoid SizeChanged(IInspectable const&, SizeChangedEventArgs const& e);\n\n\tvoid ScrollViewer_PointerPressed(IInspectable const&, Input::PointerRoutedEventArgs const&);\n\tvoid ScrollViewer_ViewChanging(IInspectable const&, ScrollViewerViewChangingEventArgs const&);\n\tvoid ScrollViewer_KeyDown(IInspectable const& sender, Input::KeyRoutedEventArgs const& args);\n\nprivate:\n\tvoid _UpdateIconContainer();\n\tvoid _UpdateHeaderActionPresenter();\n\n\thstring _title;\n\tIconElement _icon{ nullptr };\n\tFrameworkElement _headerAction{ nullptr };\n\tIInspectable _mainContent{ nullptr };\n};\n\n}\n\nBASIC_FACTORY(PageFrame)\n"
  },
  {
    "path": "src/Magpie/PageFrame.idl",
    "content": "namespace Magpie {\n\t[Windows.UI.Xaml.Markup.ContentProperty(\"MainContent\")]\n\truntimeclass PageFrame : Windows.UI.Xaml.Controls.UserControl, Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tPageFrame();\n\n\t\tString Title;\n\t\tWindows.UI.Xaml.Controls.IconElement Icon;\n\t\tWindows.UI.Xaml.FrameworkElement HeaderAction;\n\t\tObject MainContent;\n\n\t\tWindows.UI.Xaml.Controls.ScrollViewer ScrollViewer { get; };\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/PageFrame.xaml",
    "content": "<UserControl x:Class=\"Magpie.PageFrame\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n             xmlns:local=\"using:Magpie\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n             IsTabStop=\"False\"\n             Loaded=\"Loaded\"\n             SizeChanged=\"SizeChanged\"\n             mc:Ignorable=\"d\">\n\t<UserControl.Resources>\n\t\t<x:Double x:Key=\"PageMaxWidth\">1000</x:Double>\n\t</UserControl.Resources>\n\n\t<Grid>\n\t\t<Grid.RowDefinitions>\n\t\t\t<RowDefinition Height=\"Auto\" />\n\t\t\t<RowDefinition Height=\"*\" />\n\t\t</Grid.RowDefinitions>\n\n\t\t<!--  Margin 左右边距使用代码动态调整  -->\n\t\t<!--  注意由于指定了 MaxWidth，这里应使用 Margin 而不是 Padding  -->\n\t\t<Grid x:Name=\"HeaderGrid\"\n\t\t      Grid.Row=\"0\"\n\t\t      MaxWidth=\"{StaticResource PageMaxWidth}\"\n\t\t      Margin=\"40,54,40,16\">\n\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t<ColumnDefinition Width=\"*\" />\n\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t</Grid.ColumnDefinitions>\n\t\t\t<ContentControl x:Name=\"IconContainer\"\n\t\t\t                Grid.Column=\"0\"\n\t\t\t                Margin=\"0,6.5,16,0\"\n\t\t\t                Content=\"{x:Bind Icon, Mode=OneWay}\"\n\t\t\t                IsTabStop=\"False\" />\n\t\t\t<TextBlock Grid.Column=\"1\"\n\t\t\t           local:TextBlockHelper.IsAutoTooltipEnabled=\"True\"\n\t\t\t           FontSize=\"28\"\n\t\t\t           FontWeight=\"SemiBold\"\n\t\t\t           Text=\"{x:Bind Title, Mode=OneWay}\"\n\t\t\t           TextTrimming=\"CharacterEllipsis\" />\n\t\t\t<ContentControl x:Name=\"HeaderActionPresenter\"\n\t\t\t                Grid.Column=\"2\"\n\t\t\t                VerticalContentAlignment=\"Center\"\n\t\t\t                Content=\"{x:Bind HeaderAction, Mode=OneWay}\"\n\t\t\t                IsTabStop=\"False\">\n\t\t\t\t<ContentControl.Resources>\n\t\t\t\t\t<ResourceDictionary>\n\t\t\t\t\t\t<ResourceDictionary.ThemeDictionaries>\n\t\t\t\t\t\t\t<ResourceDictionary x:Key=\"Default\">\n\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackground\"\n\t\t\t\t\t\t\t\t                ResourceKey=\"SubtleFillColorTransparentBrush\" />\n\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackgroundPointerOver\"\n\t\t\t\t\t\t\t\t                ResourceKey=\"SubtleFillColorSecondaryBrush\" />\n\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackgroundPressed\"\n\t\t\t\t\t\t\t\t                ResourceKey=\"SubtleFillColorTertiaryBrush\" />\n\t\t\t\t\t\t\t</ResourceDictionary>\n\t\t\t\t\t\t\t<ResourceDictionary x:Key=\"Light\">\n\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackground\"\n\t\t\t\t\t\t\t\t                ResourceKey=\"SubtleFillColorTransparentBrush\" />\n\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackgroundPointerOver\"\n\t\t\t\t\t\t\t\t                ResourceKey=\"SubtleFillColorSecondaryBrush\" />\n\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackgroundPressed\"\n\t\t\t\t\t\t\t\t                ResourceKey=\"SubtleFillColorTertiaryBrush\" />\n\t\t\t\t\t\t\t</ResourceDictionary>\n\t\t\t\t\t\t</ResourceDictionary.ThemeDictionaries>\n\n\t\t\t\t\t\t<Style BasedOn=\"{StaticResource DefaultButtonStyle}\"\n\t\t\t\t\t\t       TargetType=\"Button\">\n\t\t\t\t\t\t\t<Setter Property=\"Width\" Value=\"{StaticResource PaneToggleButtonWidth}\" />\n\t\t\t\t\t\t\t<Setter Property=\"Height\" Value=\"{StaticResource PaneToggleButtonHeight}\" />\n\t\t\t\t\t\t\t<Setter Property=\"Padding\" Value=\"0\" />\n\t\t\t\t\t\t\t<Setter Property=\"BorderThickness\" Value=\"0\" />\n\t\t\t\t\t\t</Style>\n\n\t\t\t\t\t\t<Style TargetType=\"FontIcon\">\n\t\t\t\t\t\t\t<Setter Property=\"FontSize\" Value=\"18\" />\n\t\t\t\t\t\t</Style>\n\t\t\t\t\t</ResourceDictionary>\n\t\t\t\t</ContentControl.Resources>\n\t\t\t</ContentControl>\n\t\t</Grid>\n\t\t<!--  ScrollViewer 可以接受焦点，这使用户可以通过键盘滚动页面  -->\n\t\t<!--  Padding 左右边距使用代码动态调整  -->\n\t\t<!--  注意为了支持在左右边缘滚动页面，这里应使用 Padding 而不是 Margin  -->\n\t\t<ScrollViewer x:Name=\"ScrollViewer\"\n\t\t              Grid.Row=\"1\"\n\t\t              Padding=\"40,0,40,0\"\n\t\t              IsTabStop=\"True\"\n\t\t              KeyDown=\"ScrollViewer_KeyDown\"\n\t\t              PointerPressed=\"ScrollViewer_PointerPressed\"\n\t\t              VerticalScrollBarVisibility=\"Auto\"\n\t\t              ViewChanging=\"ScrollViewer_ViewChanging\">\n\t\t\t<ContentControl Grid.Column=\"0\"\n\t\t\t                MaxWidth=\"{StaticResource PageMaxWidth}\"\n\t\t\t                Margin=\"0,0,0,20\"\n\t\t\t                HorizontalContentAlignment=\"Stretch\"\n\t\t\t                VerticalContentAlignment=\"Stretch\"\n\t\t\t                Content=\"{x:Bind MainContent, Mode=OneWay}\"\n\t\t\t                IsTabStop=\"False\" />\n\t\t</ScrollViewer>\n\t</Grid>\n</UserControl>\n"
  },
  {
    "path": "src/Magpie/Profile.h",
    "content": "#pragma once\n#include \"ScalingOptions.h\"\n\nnamespace Magpie {\n\nenum class InitialWindowedScaleFactor {\n\tAuto,\n\tx1_25,\n\tx1_5,\n\tx1_75,\n\tx2,\n\tx3,\n\tCustom,\n\tCOUNT\n};\n\nenum class CursorScaling {\n\tx0_5,\n\tx0_75,\n\tNoScaling,\n\tx1_25,\n\tx1_5,\n\tx2,\n\tSource,\n\tCustom,\n\tCOUNT\n};\n\nenum class AutoScale {\n\tDisabled,\n\tFullscreen,\n\tWindowed,\n\tCOUNT\n};\n\nstruct Profile {\n\tvoid Copy(const Profile& other) noexcept {\n\t\tscalingMode = other.scalingMode;\n\t\tautoScale = other.autoScale;\n\t\tinitialWindowedScaleFactor = other.initialWindowedScaleFactor;\n\t\tcustomInitialWindowedScaleFactor = other.customInitialWindowedScaleFactor;\n\t\tcursorScaling = other.cursorScaling;\n\t\tcustomCursorScaling = other.customCursorScaling;\n\t\tautoHideCursorDelay = other.autoHideCursorDelay;\n\t\tcropping = other.cropping;\n\t\tcaptureMethod = other.captureMethod;\n\t\tgraphicsCardId = other.graphicsCardId;\n\t\tmaxFrameRate = other.maxFrameRate;\n\t\tmultiMonitorUsage = other.multiMonitorUsage;\n\t\tcursorInterpolationMode = other.cursorInterpolationMode;\n\t\tlaunchParameters = other.launchParameters;\n\t\tdestAlignment = other.destAlignment;\n\t\tscalingFlags = other.scalingFlags;\n\t\t\n\t\tisCroppingEnabled = other.isCroppingEnabled;\n\t\tisFrameRateLimiterEnabled = other.isFrameRateLimiterEnabled;\n\t\tisAutoHideCursorEnabled = other.isAutoHideCursorEnabled;\n\t}\n\n\tDEFINE_FLAG_ACCESSOR(Is3DGameMode, ScalingFlags::Is3DGameMode, scalingFlags)\n\tDEFINE_FLAG_ACCESSOR(IsCaptureTitleBar, ScalingFlags::CaptureTitleBar, scalingFlags)\n\tDEFINE_FLAG_ACCESSOR(IsAdjustCursorSpeed, ScalingFlags::AdjustCursorSpeed, scalingFlags)\n\tDEFINE_FLAG_ACCESSOR(IsDirectFlipDisabled, ScalingFlags::DisableDirectFlip, scalingFlags)\n\n\t// 默认规则 name、pathRule 和 classNameRule 均为空\n\tstd::wstring name;\n\n\t// 对于打包应用，pathRule 存储 AUMID\n\tstd::wstring pathRule;\n\tstd::wstring classNameRule;\n\n\t// 允许 exe 和 lnk\n\tstd::filesystem::path launcherPath;\n\n\tAutoScale autoScale = AutoScale::Disabled;\n\n\tInitialWindowedScaleFactor initialWindowedScaleFactor = InitialWindowedScaleFactor::Auto;\n\tfloat customInitialWindowedScaleFactor = 1.25f;\n\n\tCursorScaling cursorScaling = CursorScaling::NoScaling;\n\tfloat customCursorScaling = 1.0;\n\n\t// 0.1~5\n\tfloat autoHideCursorDelay = 3.0f;\n\n\tCropping cropping{};\n\t// -1 表示原样\n\tint scalingMode = -1;\n\tCaptureMethod captureMethod = CaptureMethod::GraphicsCapture;\n\tGraphicsCardId graphicsCardId;\n\tMultiMonitorUsage multiMonitorUsage = MultiMonitorUsage::Closest;\n\tCursorInterpolationMode cursorInterpolationMode = CursorInterpolationMode::NearestNeighbor;\n\n\t// 10~1000\n\tfloat maxFrameRate = 60.0f;\n\n\tstd::wstring launchParameters;\n\tDestAlignment destAlignment = DestAlignment::Center;\n\n\tuint32_t scalingFlags = ScalingFlags::AdjustCursorSpeed;\n\n\tbool isPackaged = false;\n\tbool isCroppingEnabled = false;\n\tbool isFrameRateLimiterEnabled = false;\n\tbool isAutoHideCursorEnabled = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ProfilePage.cpp",
    "content": "#include \"pch.h\"\n#include \"ProfilePage.h\"\n#if __has_include(\"ProfilePage.g.cpp\")\n#include \"ProfilePage.g.cpp\"\n#endif\n#include \"App.h\"\n#include \"ControlHelper.h\"\n#include \"Profile.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Controls::Primitives;\nusing namespace Windows::UI::Xaml::Input;\n\nnamespace winrt::Magpie::implementation {\n\nvoid ProfilePage::OnNavigatedTo(Navigation::NavigationEventArgs const& args) {\n\tint profileIdx = args.Parameter().try_as<int>().value();\n\t_viewModel = make_self<ProfileViewModel>(profileIdx);\n}\n\nvoid ProfilePage::ComboBox_DropDownOpened(IInspectable const& sender, IInspectable const&) {\n\tControlHelper::ComboBox_DropDownOpened(sender);\n}\n\nvoid ProfilePage::NumberBox_Loaded(IInspectable const& sender, RoutedEventArgs const&) {\n\tControlHelper::NumberBox_Loaded(sender);\n}\n\nvoid ProfilePage::InitialWindowedScaleFactorComboBox_SelectionChanged(IInspectable const&, SelectionChangedEventArgs const&) {\n\tif ((InitialWindowedScaleFactor)_viewModel->InitialWindowedScaleFactor() == InitialWindowedScaleFactor::Custom) {\n\t\tInitialWindowedScaleFactorComboBox().MinWidth(0);\n\t\tCustomInitialWindowedScaleFactorNumberBox().Visibility(Visibility::Visible);\n\t\tCustomInitialWindowedScaleFactorLabel().Visibility(Visibility::Visible);\n\t} else {\n\t\tconst double minWidth = App::Get().Resources()\n\t\t\t.Lookup(box_value(L\"SettingsCardContentMinWidth\"))\n\t\t\t.try_as<double>().value();\n\t\tInitialWindowedScaleFactorComboBox().MinWidth(minWidth);\n\t\tCustomInitialWindowedScaleFactorNumberBox().Visibility(Visibility::Collapsed);\n\t\tCustomInitialWindowedScaleFactorLabel().Visibility(Visibility::Collapsed);\n\t}\n}\n\nvoid ProfilePage::CursorScalingComboBox_SelectionChanged(IInspectable const&, SelectionChangedEventArgs const&) {\n\tif ((CursorScaling)_viewModel->CursorScaling() == CursorScaling::Custom) {\n\t\tCursorScalingComboBox().MinWidth(0);\n\t\tCustomCursorScalingNumberBox().Visibility(Visibility::Visible);\n\t\tCustomCursorScalingLabel().Visibility(Visibility::Visible);\n\t} else {\n\t\tconst double minWidth = App::Get().Resources()\n\t\t\t.Lookup(box_value(L\"SettingsCardContentMinWidth\"))\n\t\t\t.try_as<double>().value();\n\t\tCursorScalingComboBox().MinWidth(minWidth);\n\t\tCustomCursorScalingNumberBox().Visibility(Visibility::Collapsed);\n\t\tCustomCursorScalingLabel().Visibility(Visibility::Collapsed);\n\t}\n}\n\nvoid ProfilePage::RenameMenuItem_Click(IInspectable const&, RoutedEventArgs const&) {\n\tRenameFlyout().ShowAt(MoreOptionsButton());\n}\n\nvoid ProfilePage::RenameFlyout_Opening(IInspectable const&, IInspectable const&) {\n\tTextBox tb = RenameTextBox();\n\thstring name = _viewModel->Name();\n\ttb.Text(name);\n\ttb.SelectionStart(name.size());\n}\n\nvoid ProfilePage::RenameConfirmButton_Click(IInspectable const&, RoutedEventArgs const&) {\n\tRenameFlyout().Hide();\n\t_viewModel->Rename();\n}\n\nvoid ProfilePage::RenameTextBox_KeyDown(IInspectable const&, Input::KeyRoutedEventArgs const& args) {\n\tif (args.Key() == VirtualKey::Enter && _viewModel->IsRenameConfirmButtonEnabled()) {\n\t\tRenameConfirmButton_Click(nullptr, nullptr);\n\t}\n}\n\nvoid ProfilePage::ReorderMenuItem_Click(IInspectable const&, RoutedEventArgs const&) {\n\tReorderFlyout().ShowAt(MoreOptionsButton());\n}\n\nvoid ProfilePage::DeleteMenuItem_Click(IInspectable const&, RoutedEventArgs const&) {\n\tDeleteFlyout().ShowAt(MoreOptionsButton());\n}\n\nvoid ProfilePage::DeleteButton_Click(IInspectable const&, RoutedEventArgs const&) {\n\tDeleteFlyout().Hide();\n\t_viewModel->Delete();\n}\n\nvoid ProfilePage::LaunchParametersTextBox_KeyDown(IInspectable const&, Input::KeyRoutedEventArgs const& args) {\n\tif (args.Key() == VirtualKey::Enter) {\n\t\tFocus(FocusState::Pointer);\n\t}\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ProfilePage.h",
    "content": "#pragma once\n#include \"ProfilePage.g.h\"\n#include \"ProfileViewModel.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct ProfilePage : ProfilePageT<ProfilePage> {\n\tvoid OnNavigatedTo(Navigation::NavigationEventArgs const& args);\n\n\twinrt::Magpie::ProfileViewModel ViewModel() const noexcept {\n\t\treturn *_viewModel;\n\t}\n\n\tvoid ComboBox_DropDownOpened(IInspectable const& sender, IInspectable const&);\n\n\tvoid NumberBox_Loaded(IInspectable const& sender, RoutedEventArgs const&);\n\n\tvoid InitialWindowedScaleFactorComboBox_SelectionChanged(IInspectable const&, SelectionChangedEventArgs const&);\n\n\tvoid CursorScalingComboBox_SelectionChanged(IInspectable const&, SelectionChangedEventArgs const&);\n\n\tvoid RenameMenuItem_Click(IInspectable const&, RoutedEventArgs const&);\n\n\tvoid RenameFlyout_Opening(IInspectable const&, IInspectable const&);\n\n\tvoid RenameConfirmButton_Click(IInspectable const&, RoutedEventArgs const&);\n\n\tvoid RenameTextBox_KeyDown(IInspectable const&, Input::KeyRoutedEventArgs const& args);\n\n\tvoid ReorderMenuItem_Click(IInspectable const&, RoutedEventArgs const&);\n\n\tvoid DeleteMenuItem_Click(IInspectable const&, RoutedEventArgs const&);\n\n\tvoid DeleteButton_Click(IInspectable const&, RoutedEventArgs const&);\n\n\tvoid LaunchParametersTextBox_KeyDown(IInspectable const&, Input::KeyRoutedEventArgs const& args);\n\nprivate:\n\tcom_ptr<ProfileViewModel> _viewModel;\n};\n\n}\n\nBASIC_FACTORY(ProfilePage)\n"
  },
  {
    "path": "src/Magpie/ProfilePage.idl",
    "content": "namespace Magpie {\n\truntimeclass ProfilePage : Windows.UI.Xaml.Controls.Page {\n\t\tProfilePage();\n\n\t\tProfileViewModel ViewModel { get; };\n\n\t\t// https://github.com/microsoft/microsoft-ui-xaml/issues/7579\n\t\tvoid UnloadObject(Windows.UI.Xaml.DependencyObject object);\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/ProfilePage.xaml",
    "content": "<Page x:Class=\"Magpie.ProfilePage\"\n      xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n      xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n      xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n      xmlns:local=\"using:Magpie\"\n      xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n      xmlns:muxc=\"using:Microsoft.UI.Xaml.Controls\"\n      mc:Ignorable=\"d\">\n\t<local:PageFrame Title=\"{x:Bind ViewModel.Name, Mode=OneWay}\"\n\t                 Icon=\"{x:Bind ViewModel.Icon, Mode=OneWay}\">\n\t\t<local:PageFrame.HeaderAction>\n\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t                        Visibility=\"{x:Bind ViewModel.IsNotDefaultProfile, Mode=OneTime}\">\n\t\t\t\t<Button x:Uid=\"Profile_Launch\"\n\t\t\t\t        Click=\"{x:Bind ViewModel.Launch}\"\n\t\t\t\t        IsEnabled=\"{x:Bind ViewModel.IsProgramExist, Mode=OneTime}\">\n\t\t\t\t\t<Button.Content>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE768;\" />\n\t\t\t\t\t</Button.Content>\n\t\t\t\t</Button>\n\t\t\t\t<Button x:Name=\"MoreOptionsButton\"\n\t\t\t\t        x:Uid=\"Profile_MoreOptions\">\n\t\t\t\t\t<Button.Content>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE712;\" />\n\t\t\t\t\t</Button.Content>\n\t\t\t\t\t<Button.Flyout>\n\t\t\t\t\t\t<MenuFlyout Placement=\"Bottom\"\n\t\t\t\t\t\t            ShouldConstrainToRootBounds=\"False\">\n\t\t\t\t\t\t\t<MenuFlyoutItem x:Uid=\"Profile_MoreOptions_OpenProgramLocation\"\n\t\t\t\t\t\t\t                Click=\"{x:Bind ViewModel.OpenProgramLocation}\"\n\t\t\t\t\t\t\t                IsEnabled=\"{x:Bind ViewModel.IsProgramExist, Mode=OneTime}\">\n\t\t\t\t\t\t\t\t<MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8DA;\" />\n\t\t\t\t\t\t\t\t</MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t</MenuFlyoutItem>\n\t\t\t\t\t\t\t<MenuFlyoutItem x:Uid=\"Profile_MoreOptions_ChangeExecutableForLaunching\"\n\t\t\t\t\t\t\t                Click=\"{x:Bind ViewModel.ChangeExeForLaunching}\"\n\t\t\t\t\t\t\t                IsEnabled=\"{x:Bind ViewModel.IsProgramExist, Mode=OneTime}\"\n\t\t\t\t\t\t\t                Visibility=\"{x:Bind ViewModel.IsNotPackaged, Mode=OneTime}\">\n\t\t\t\t\t\t\t\t<MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8E5;\" />\n\t\t\t\t\t\t\t\t</MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t</MenuFlyoutItem>\n\t\t\t\t\t\t\t<MenuFlyoutSeparator />\n\t\t\t\t\t\t\t<MenuFlyoutItem x:Uid=\"Profile_MoreOptions_Rename\"\n\t\t\t\t\t\t\t                Click=\"RenameMenuItem_Click\">\n\t\t\t\t\t\t\t\t<MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8AC;\" />\n\t\t\t\t\t\t\t\t</MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t<FlyoutBase.AttachedFlyout>\n\t\t\t\t\t\t\t\t\t<Flyout x:Name=\"RenameFlyout\"\n\t\t\t\t\t\t\t\t\t        Opening=\"RenameFlyout_Opening\"\n\t\t\t\t\t\t\t\t\t        Placement=\"Bottom\">\n\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Profile_MoreOptions_RenameFlyout_Title\" />\n\t\t\t\t\t\t\t\t\t\t\t<TextBox x:Name=\"RenameTextBox\"\n\t\t\t\t\t\t\t\t\t\t\t         Width=\"280\"\n\t\t\t\t\t\t\t\t\t\t\t         Height=\"32\"\n\t\t\t\t\t\t\t\t\t\t\t         Margin=\"0,8,0,20\"\n\t\t\t\t\t\t\t\t\t\t\t         KeyDown=\"RenameTextBox_KeyDown\"\n\t\t\t\t\t\t\t\t\t\t\t         Text=\"{x:Bind ViewModel.RenameText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\">\n\t\t\t\t\t\t\t\t\t\t\t\t<TextBox.ContextFlyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<local:TextMenuFlyout />\n\t\t\t\t\t\t\t\t\t\t\t\t</TextBox.ContextFlyout>\n\t\t\t\t\t\t\t\t\t\t\t</TextBox>\n\t\t\t\t\t\t\t\t\t\t\t<Button x:Uid=\"Profile_MoreOptions_RenameFlyout_OK\"\n\t\t\t\t\t\t\t\t\t\t\t        MinWidth=\"80\"\n\t\t\t\t\t\t\t\t\t\t\t        HorizontalAlignment=\"Right\"\n\t\t\t\t\t\t\t\t\t\t\t        Click=\"RenameConfirmButton_Click\"\n\t\t\t\t\t\t\t\t\t\t\t        IsEnabled=\"{x:Bind ViewModel.IsRenameConfirmButtonEnabled, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t\t\t\t        Style=\"{StaticResource AccentButtonStyle}\" />\n\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t</Flyout>\n\t\t\t\t\t\t\t\t</FlyoutBase.AttachedFlyout>\n\t\t\t\t\t\t\t</MenuFlyoutItem>\n\t\t\t\t\t\t\t<MenuFlyoutItem x:Uid=\"Profile_MoreOptions_Reorder\"\n\t\t\t\t\t\t\t                Click=\"ReorderMenuItem_Click\">\n\t\t\t\t\t\t\t\t<MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8CB;\" />\n\t\t\t\t\t\t\t\t</MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t<FlyoutBase.AttachedFlyout>\n\t\t\t\t\t\t\t\t\t<Flyout x:Name=\"ReorderFlyout\"\n\t\t\t\t\t\t\t\t\t        Placement=\"Bottom\">\n\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Profile_MoreOptions_ReorderFlyout_Title\" />\n\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Margin=\"0,12,0,0\"\n\t\t\t\t\t\t\t\t\t\t\t                        HorizontalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t\t\t\t                        Spacing=\"4\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Button HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t\t\t\t\t\t        HorizontalContentAlignment=\"Left\"\n\t\t\t\t\t\t\t\t\t\t\t\t        Click=\"{x:Bind ViewModel.MoveUp}\"\n\t\t\t\t\t\t\t\t\t\t\t\t        IsEnabled=\"{x:Bind ViewModel.CanMoveUp, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FontIcon FontSize=\"{StaticResource StandardIconSize}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t          Glyph=\"&#xE74A;\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Profile_MoreOptions_ReorderFlyout_MoveUp\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t<Button HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t\t\t\t\t\t        HorizontalContentAlignment=\"Left\"\n\t\t\t\t\t\t\t\t\t\t\t\t        Click=\"{x:Bind ViewModel.MoveDown}\"\n\t\t\t\t\t\t\t\t\t\t\t\t        IsEnabled=\"{x:Bind ViewModel.CanMoveDown, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FontIcon FontSize=\"{StaticResource StandardIconSize}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t          Glyph=\"&#xE74B;\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Profile_MoreOptions_ReorderFlyout_MoveDown\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t</Flyout>\n\t\t\t\t\t\t\t\t</FlyoutBase.AttachedFlyout>\n\t\t\t\t\t\t\t</MenuFlyoutItem>\n\t\t\t\t\t\t\t<MenuFlyoutItem x:Uid=\"Profile_MoreOptions_Delete\"\n\t\t\t\t\t\t\t                Click=\"DeleteMenuItem_Click\">\n\t\t\t\t\t\t\t\t<MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE74D;\" />\n\t\t\t\t\t\t\t\t</MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t<FlyoutBase.AttachedFlyout>\n\t\t\t\t\t\t\t\t\t<Flyout x:Name=\"DeleteFlyout\"\n\t\t\t\t\t\t\t\t\t        Placement=\"Bottom\">\n\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"12\">\n\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Profile_MoreOptions_DeleteFlyout_Title\" />\n\t\t\t\t\t\t\t\t\t\t\t<Button HorizontalAlignment=\"Right\"\n\t\t\t\t\t\t\t\t\t\t\t        Click=\"DeleteButton_Click\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Button.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ResourceDictionary>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"DeleteButtonBackgroundBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackgroundPointerOver\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"DeleteButtonBackgroundPointerOverBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackgroundPressed\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"DeleteButtonBackgroundPressedBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonForeground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"DeleteButtonForegroundBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonForegroundPointerOver\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"DeleteButtonForegroundBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonForegroundPressed\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"DeleteButtonForegroundPressedBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ResourceDictionary>\n\t\t\t\t\t\t\t\t\t\t\t\t</Button.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t<Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FontIcon VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t          FontSize=\"{StaticResource StandardIconSize}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t          Glyph=\"&#xE74D;\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Profile_MoreOptions_DeleteFlyout_Delete\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t</Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t</Flyout>\n\t\t\t\t\t\t\t\t</FlyoutBase.AttachedFlyout>\n\t\t\t\t\t\t\t</MenuFlyoutItem>\n\t\t\t\t\t\t</MenuFlyout>\n\t\t\t\t\t</Button.Flyout>\n\t\t\t\t</Button>\n\t\t\t</local:SimpleStackPanel>\n\t\t</local:PageFrame.HeaderAction>\n\t\t<local:SimpleStackPanel Padding=\"0,4,0,0\"\n\t\t                        HorizontalAlignment=\"Stretch\"\n\t\t                        ChildrenTransitions=\"{StaticResource SettingsCardsAnimations}\"\n\t\t                        Spacing=\"{StaticResource SettingsGroupSpacing}\">\n\t\t\t<local:SettingsGroup x:Uid=\"Profile_General\">\n\t\t\t\t<local:SettingsCard x:Uid=\"Profile_General_ScalingMode\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<PathIcon Data=\"{StaticResource SpecialEffectSizeIconData}\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ComboBox DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t          ItemsSource=\"{x:Bind ViewModel.ScalingModes, Mode=OneTime}\"\n\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.ScalingMode, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"Profile_General_CaptureMethod\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE9A6;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ComboBox DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t          ItemsSource=\"{x:Bind ViewModel.CaptureMethods, Mode=OneTime}\"\n\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.CaptureMethod, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<muxc:InfoBar x:Uid=\"Profile_General_DesktopDuplicationWarning\"\n\t\t\t\t              IsClosable=\"False\"\n\t\t\t\t              IsOpen=\"{x:Bind ViewModel.IsCaptureMethodDesktopDuplication, Mode=OneWay}\"\n\t\t\t\t              Severity=\"Warning\" />\n\t\t\t\t<local:SettingsCard x:Name=\"AutoScaleSettingsCard\"\n\t\t\t\t                    x:Uid=\"Profile_General_AutoScale\"\n\t\t\t\t                    x:Load=\"{x:Bind ViewModel.IsNotDefaultProfile, Mode=OneTime}\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE945;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ComboBox DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.AutoScale, Mode=TwoWay}\">\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_General_AutoScale_Disabled\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_General_AutoScale_Fullscreen\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_General_AutoScale_Windowed\" />\n\t\t\t\t\t</ComboBox>\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"Profile_General_3DGameMode\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE7FC;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.Is3DGameMode, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Name=\"MultimonitorSettingsCard\"\n\t\t\t\t                    x:Uid=\"Profile_General_Multimonitor\"\n\t\t\t\t                    x:Load=\"{x:Bind ViewModel.HasMultipleMonitors, Mode=OneTime}\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xf5a9;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ComboBox DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.MultiMonitorUsage, Mode=TwoWay}\">\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_General_Multimonitor_Closest\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_General_Multimonitor_Intersected\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_General_Multimonitor_All\" />\n\t\t\t\t\t</ComboBox>\n\t\t\t\t</local:SettingsCard>\n\t\t\t</local:SettingsGroup>\n\t\t\t<local:SettingsGroup x:Uid=\"Profile_WindowedScaling\">\n\t\t\t\t<local:SettingsCard x:Uid=\"Profile_WindowedScaling_InitialScaleFactor\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE740;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<Grid MinWidth=\"{StaticResource SettingsCardContentMinWidth}\">\n\t\t\t\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t<ColumnDefinition Width=\"*\" />\n\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t</Grid.ColumnDefinitions>\n\t\t\t\t\t\t<ComboBox x:Name=\"InitialWindowedScaleFactorComboBox\"\n\t\t\t\t\t\t          Grid.Column=\"0\"\n\t\t\t\t\t\t          HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t          VerticalAlignment=\"Stretch\"\n\t\t\t\t\t\t          DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.InitialWindowedScaleFactor, Mode=TwoWay}\"\n\t\t\t\t\t\t          SelectionChanged=\"InitialWindowedScaleFactorComboBox_SelectionChanged\">\n\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_WindowedScaling_InitialScaleFactor_Auto\" />\n\t\t\t\t\t\t\t<x:String>1.25x</x:String>\n\t\t\t\t\t\t\t<x:String>1.5x</x:String>\n\t\t\t\t\t\t\t<x:String>1.75x</x:String>\n\t\t\t\t\t\t\t<x:String>2x</x:String>\n\t\t\t\t\t\t\t<x:String>3x</x:String>\n\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_WindowedScaling_InitialScaleFactor_Custom\" />\n\t\t\t\t\t\t</ComboBox>\n\t\t\t\t\t\t<muxc:NumberBox x:Name=\"CustomInitialWindowedScaleFactorNumberBox\"\n\t\t\t\t\t\t                Grid.Column=\"1\"\n\t\t\t\t\t\t                Width=\"70\"\n\t\t\t\t\t\t                MinWidth=\"70\"\n\t\t\t\t\t\t                Margin=\"5,0,0,0\"\n\t\t\t\t\t\t                VerticalAlignment=\"Stretch\"\n\t\t\t\t\t\t                Loaded=\"NumberBox_Loaded\"\n\t\t\t\t\t\t                Maximum=\"10\"\n\t\t\t\t\t\t                Minimum=\"1.1\"\n\t\t\t\t\t\t                NumberFormatter=\"{x:Bind local:App.DoubleFormatter, Mode=OneTime}\"\n\t\t\t\t\t\t                SmallChange=\"0.1\"\n\t\t\t\t\t\t                Value=\"{x:Bind ViewModel.CustomInitialWindowedScaleFactor, Mode=TwoWay}\" />\n\t\t\t\t\t\t<TextBlock x:Name=\"CustomInitialWindowedScaleFactorLabel\"\n\t\t\t\t\t\t           Grid.Column=\"2\"\n\t\t\t\t\t\t           Margin=\"5,0,0,0\"\n\t\t\t\t\t\t           VerticalAlignment=\"Bottom\"\n\t\t\t\t\t\t           Text=\"x\" />\n\t\t\t\t\t</Grid>\n\t\t\t\t</local:SettingsCard>\n\t\t\t</local:SettingsGroup>\n\t\t\t<local:SettingsGroup x:Uid=\"Profile_Performance\">\n\t\t\t\t<local:SettingsCard x:Name=\"GraphicsCardSettingsCard\"\n\t\t\t\t                    x:Uid=\"Profile_Performance_GraphicsCard\"\n\t\t\t\t                    x:Load=\"{x:Bind ViewModel.IsShowGraphicsCardSettingsCard, Mode=OneWay}\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xf211;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ComboBox DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t          ItemsSource=\"{x:Bind ViewModel.GraphicsCards, Mode=OneWay}\"\n\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.GraphicsCard, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<muxc:InfoBar x:Uid=\"Profile_Performance_NoGraphicsCard\"\n\t\t\t\t              IsClosable=\"False\"\n\t\t\t\t              IsOpen=\"{x:Bind ViewModel.IsNoGraphicsCard, Mode=OneWay}\"\n\t\t\t\t              Severity=\"Warning\" />\n\t\t\t\t<local:SettingsExpander x:Uid=\"Profile_Performance_FrameRateLimiter\"\n\t\t\t\t                        IsExpanded=\"{x:Bind ViewModel.IsFrameRateLimiterEnabled, Mode=OneWay}\">\n\t\t\t\t\t<local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE72E;\" />\n\t\t\t\t\t</local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t<local:SettingsExpander.Content>\n\t\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsFrameRateLimiterEnabled, Mode=TwoWay}\" />\n\t\t\t\t\t</local:SettingsExpander.Content>\n\t\t\t\t\t<local:SettingsExpander.Items>\n\t\t\t\t\t\t<local:SettingsCard x:Uid=\"Profile_Performance_FrameRateLimiter_MaxFrameRate\"\n\t\t\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t<muxc:NumberBox VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t                LargeChange=\"10\"\n\t\t\t\t\t\t\t\t                Loaded=\"NumberBox_Loaded\"\n\t\t\t\t\t\t\t\t                Maximum=\"1000\"\n\t\t\t\t\t\t\t\t                Minimum=\"10\"\n\t\t\t\t\t\t\t\t                NumberFormatter=\"{x:Bind local:App.DoubleFormatter, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t                SmallChange=\"1\"\n\t\t\t\t\t\t\t\t                SpinButtonPlacementMode=\"Inline\"\n\t\t\t\t\t\t\t\t                Value=\"{x:Bind ViewModel.MaxFrameRate, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t\t<TextBlock VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t           Text=\"FPS\" />\n\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t</local:SettingsExpander.Items>\n\t\t\t\t</local:SettingsExpander>\n\t\t\t</local:SettingsGroup>\n\t\t\t<local:SettingsGroup x:Uid=\"Profile_SourceWindow\">\n\t\t\t\t<local:SettingsCard x:Uid=\"Profile_SourceWindow_CaptureTitleBar\"\n\t\t\t\t                    IsEnabled=\"{x:Bind ViewModel.CanCaptureTitleBar, Mode=OneWay}\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE737;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsCaptureTitleBar, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsExpander x:Uid=\"Profile_SourceWindow_CustomCropping\"\n\t\t\t\t                        IsExpanded=\"{x:Bind ViewModel.IsCroppingEnabled, Mode=OneWay}\">\n\t\t\t\t\t<local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE7A8;\" />\n\t\t\t\t\t</local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t<local:SettingsExpander.Content>\n\t\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsCroppingEnabled, Mode=TwoWay}\" />\n\t\t\t\t\t</local:SettingsExpander.Content>\n\t\t\t\t\t<local:SettingsExpander.Items>\n\t\t\t\t\t\t<local:SettingsCard x:Uid=\"Profile_SourceWindow_CustomCropping_Left\"\n\t\t\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t<muxc:NumberBox LargeChange=\"10\"\n\t\t\t\t\t\t\t\t                Loaded=\"NumberBox_Loaded\"\n\t\t\t\t\t\t\t\t                Minimum=\"0\"\n\t\t\t\t\t\t\t\t                NumberFormatter=\"{x:Bind local:App.DoubleFormatter, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t                SmallChange=\"1\"\n\t\t\t\t\t\t\t\t                SpinButtonPlacementMode=\"Inline\"\n\t\t\t\t\t\t\t\t                Value=\"{x:Bind ViewModel.CroppingLeft, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Profile_SourceWindow_CustomCropping_Pixels\"\n\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\" />\n\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard x:Uid=\"Profile_SourceWindow_CustomCropping_Right\"\n\t\t\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t<muxc:NumberBox LargeChange=\"10\"\n\t\t\t\t\t\t\t\t                Loaded=\"NumberBox_Loaded\"\n\t\t\t\t\t\t\t\t                Minimum=\"0\"\n\t\t\t\t\t\t\t\t                NumberFormatter=\"{x:Bind local:App.DoubleFormatter, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t                SmallChange=\"1\"\n\t\t\t\t\t\t\t\t                SpinButtonPlacementMode=\"Inline\"\n\t\t\t\t\t\t\t\t                Value=\"{x:Bind ViewModel.CroppingRight, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Profile_SourceWindow_CustomCropping_Pixels\"\n\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\" />\n\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard x:Uid=\"Profile_SourceWindow_CustomCropping_Top\"\n\t\t\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t<muxc:NumberBox LargeChange=\"10\"\n\t\t\t\t\t\t\t\t                Loaded=\"NumberBox_Loaded\"\n\t\t\t\t\t\t\t\t                Minimum=\"0\"\n\t\t\t\t\t\t\t\t                NumberFormatter=\"{x:Bind local:App.DoubleFormatter, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t                SmallChange=\"1\"\n\t\t\t\t\t\t\t\t                SpinButtonPlacementMode=\"Inline\"\n\t\t\t\t\t\t\t\t                Value=\"{x:Bind ViewModel.CroppingTop, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Profile_SourceWindow_CustomCropping_Pixels\"\n\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\" />\n\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t<local:SettingsCard x:Uid=\"Profile_SourceWindow_CustomCropping_Bottom\"\n\t\t\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t<muxc:NumberBox LargeChange=\"10\"\n\t\t\t\t\t\t\t\t                Loaded=\"NumberBox_Loaded\"\n\t\t\t\t\t\t\t\t                Minimum=\"0\"\n\t\t\t\t\t\t\t\t                NumberFormatter=\"{x:Bind local:App.DoubleFormatter, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t                SmallChange=\"1\"\n\t\t\t\t\t\t\t\t                SpinButtonPlacementMode=\"Inline\"\n\t\t\t\t\t\t\t\t                Value=\"{x:Bind ViewModel.CroppingBottom, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Profile_SourceWindow_CustomCropping_Pixels\"\n\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\" />\n\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t</local:SettingsExpander.Items>\n\t\t\t\t</local:SettingsExpander>\n\t\t\t</local:SettingsGroup>\n\t\t\t<local:SettingsGroup x:Uid=\"Profile_Cursor\">\n\t\t\t\t<local:SettingsExpander x:Uid=\"Profile_Cursor_DrawCursor_ScaleFactor\"\n\t\t\t\t                        IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE7C9;\" />\n\t\t\t\t\t</local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t<local:SettingsExpander.Content>\n\t\t\t\t\t\t<Grid MinWidth=\"{StaticResource SettingsCardContentMinWidth}\">\n\t\t\t\t\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"*\" />\n\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t\t</Grid.ColumnDefinitions>\n\n\t\t\t\t\t\t\t<ComboBox x:Name=\"CursorScalingComboBox\"\n\t\t\t\t\t\t\t          Grid.Column=\"0\"\n\t\t\t\t\t\t\t          HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t          VerticalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t          DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.CursorScaling, Mode=TwoWay}\"\n\t\t\t\t\t\t\t          SelectionChanged=\"CursorScalingComboBox_SelectionChanged\">\n\t\t\t\t\t\t\t\t<x:String>0.5x</x:String>\n\t\t\t\t\t\t\t\t<x:String>0.75x</x:String>\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling\" />\n\t\t\t\t\t\t\t\t<x:String>1.25x</x:String>\n\t\t\t\t\t\t\t\t<x:String>1.5x</x:String>\n\t\t\t\t\t\t\t\t<x:String>2x</x:String>\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow\" />\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom\" />\n\t\t\t\t\t\t\t</ComboBox>\n\t\t\t\t\t\t\t<muxc:NumberBox x:Name=\"CustomCursorScalingNumberBox\"\n\t\t\t\t\t\t\t                Grid.Column=\"1\"\n\t\t\t\t\t\t\t                Width=\"70\"\n\t\t\t\t\t\t\t                MinWidth=\"70\"\n\t\t\t\t\t\t\t                Margin=\"5,0,0,0\"\n\t\t\t\t\t\t\t                VerticalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t                Loaded=\"NumberBox_Loaded\"\n\t\t\t\t\t\t\t                Maximum=\"10\"\n\t\t\t\t\t\t\t                Minimum=\"0.1\"\n\t\t\t\t\t\t\t                NumberFormatter=\"{x:Bind local:App.DoubleFormatter, Mode=OneTime}\"\n\t\t\t\t\t\t\t                SmallChange=\"0.1\"\n\t\t\t\t\t\t\t                Value=\"{x:Bind ViewModel.CustomCursorScaling, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t<TextBlock x:Name=\"CustomCursorScalingLabel\"\n\t\t\t\t\t\t\t           Grid.Column=\"2\"\n\t\t\t\t\t\t\t           Margin=\"5,0,0,0\"\n\t\t\t\t\t\t\t           VerticalAlignment=\"Bottom\"\n\t\t\t\t\t\t\t           Text=\"x\" />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</local:SettingsExpander.Content>\n\t\t\t\t\t<local:SettingsExpander.Items>\n\t\t\t\t\t\t<local:SettingsCard x:Uid=\"Profile_Cursor_DrawCursor_Interpolation\"\n\t\t\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t\t\t<ComboBox DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.CursorInterpolationMode, Mode=TwoWay}\">\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor\" />\n\t\t\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear\" />\n\t\t\t\t\t\t\t</ComboBox>\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t</local:SettingsExpander.Items>\n\t\t\t\t</local:SettingsExpander>\n\t\t\t\t<local:SettingsExpander x:Uid=\"Profile_Cursor_AutoHide\"\n\t\t\t\t                        IsExpanded=\"{x:Bind ViewModel.IsAutoHideCursorEnabled, Mode=OneWay}\">\n\t\t\t\t\t<local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xEC32;\" />\n\t\t\t\t\t</local:SettingsExpander.HeaderIcon>\n\t\t\t\t\t<local:SettingsExpander.Content>\n\t\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsAutoHideCursorEnabled, Mode=TwoWay}\" />\n\t\t\t\t\t</local:SettingsExpander.Content>\n\t\t\t\t\t<local:SettingsExpander.Items>\n\t\t\t\t\t\t<local:SettingsCard x:Uid=\"Profile_Cursor_AutoHide_Delay\"\n\t\t\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t\t\t<Grid MinWidth=\"{StaticResource SettingsCardContentMinWidth}\">\n\t\t\t\t\t\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"*\" />\n\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t\t\t</Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t<Slider Grid.Column=\"0\"\n\t\t\t\t\t\t\t\t        MinWidth=\"0\"\n\t\t\t\t\t\t\t\t        VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t        IsThumbToolTipEnabled=\"False\"\n\t\t\t\t\t\t\t\t        Maximum=\"5\"\n\t\t\t\t\t\t\t\t        Minimum=\"0.1\"\n\t\t\t\t\t\t\t\t        StepFrequency=\"0.1\"\n\t\t\t\t\t\t\t\t        Value=\"{x:Bind ViewModel.AutoHideCursorDelay, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t\t<TextBlock Grid.Column=\"1\"\n\t\t\t\t\t\t\t\t           Width=\"18\"\n\t\t\t\t\t\t\t\t           Margin=\"8,0,0,0\"\n\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t           Text=\"{x:Bind ViewModel.AutoHideCursorDelayText, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t           TextAlignment=\"Center\" />\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t</local:SettingsExpander.Items>\n\t\t\t\t</local:SettingsExpander>\n\t\t\t\t<local:SettingsCard x:Uid=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<PathIcon Data=\"{StaticResource MoveIconData}\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsAdjustCursorSpeed, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t</local:SettingsGroup>\n\t\t\t<local:SettingsGroup x:Uid=\"Profile_Advanced\">\n\t\t\t\t<local:SettingsCard x:Name=\"LaunchParametersSettingsCard\"\n\t\t\t\t                    x:Uid=\"Profile_Advanced_LaunchParameters\"\n\t\t\t\t                    x:Load=\"{x:Bind ViewModel.IsNotDefaultProfile, Mode=OneTime}\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE756;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<TextBox MaxWidth=\"400\"\n\t\t\t\t\t         KeyDown=\"LaunchParametersTextBox_KeyDown\"\n\t\t\t\t\t         Text=\"{x:Bind ViewModel.LaunchParameters, Mode=TwoWay}\">\n\t\t\t\t\t\t<TextBox.ContextFlyout>\n\t\t\t\t\t\t\t<local:TextMenuFlyout />\n\t\t\t\t\t\t</TextBox.ContextFlyout>\n\t\t\t\t\t</TextBox>\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"Profile_Advanced_DestAlignment\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE799;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ComboBox DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.DestAlignment, Mode=TwoWay}\">\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Advanced_DestAlignment_TopLeft\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Advanced_DestAlignment_TopCenter\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Advanced_DestAlignment_TopRight\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Advanced_DestAlignment_Left\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Advanced_DestAlignment_Center\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Advanced_DestAlignment_Right\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Advanced_DestAlignment_BottomLeft\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Advanced_DestAlignment_BottomCenter\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Profile_Advanced_DestAlignment_BottomRight\" />\n\t\t\t\t\t</ComboBox>\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"Profile_Advanced_DisableDirectFlip\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xF259;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsDirectFlipDisabled, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t</local:SettingsGroup>\n\t\t</local:SimpleStackPanel>\n\t</local:PageFrame>\n</Page>\n"
  },
  {
    "path": "src/Magpie/ProfileService.cpp",
    "content": "#include \"pch.h\"\n#include \"AppSettings.h\"\n#include \"AppXReader.h\"\n#include \"ProfileService.h\"\n#include \"StrHelper.h\"\n#include \"Win32Helper.h\"\n#include <regex>\n\nusing namespace ::Magpie;\n\nnamespace Magpie {\n\n// WPF 窗口类每次启动都会改变，格式为:\n// HwndWrapper[{名称};;{GUID}]\n// GUID 格式为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\nstatic bool MatchWPFClassName(std::wstring_view& className) noexcept {\n\tstatic constexpr const wchar_t* WPF_PREFIX = L\"HwndWrapper[\";\n\tstatic constexpr const wchar_t* WPF_SUFFIX = L\"]\";\n\tif (!className.starts_with(WPF_PREFIX) || !className.ends_with(WPF_SUFFIX)) {\n\t\treturn false;\n\t}\n\n\tstatic const std::wregex regex(\n\t\tLR\"(^(.*);;[0-9,a-f]{8}-[0-9,a-f]{4}-[0-9,a-f]{4}-[0-9,a-f]{4}-[0-9,a-f]{12}$)\",\n\t\tstd::wregex::optimize\n\t);\n\n\tstd::match_results<std::wstring_view::iterator> matchResults;\n\tif (!std::regex_match(\n\t\tclassName.begin() + StrHelper::StrLen(WPF_PREFIX),\n\t\tclassName.end() - StrHelper::StrLen(WPF_SUFFIX),\n\t\tmatchResults,\n\t\tregex\n\t)) {\n\t\treturn false;\n\t}\n\n\tif (matchResults.size() != 2) {\n\t\treturn false;\n\t}\n\n\tclassName = std::wstring_view(matchResults[1].first, matchResults[1].second);\n\treturn true;\n}\n\n// GH#508\n// RPG Maker MZ 制作的游戏每次重新加载（快捷键 F5）窗口类名都会改变，格式为:\n// Chrome_WidgetWin_{递增的数字}\n// 这个类名似乎在基于 Chromium 的程序中很常见，大多数时候是 Chrome_WidgetWin_1\nstatic bool MatchRPGMakerMZClassName(std::wstring_view& className) noexcept {\n\tstatic constexpr const wchar_t* RPG_MAKER_MZ_PREFIX = L\"Chrome_WidgetWin_\";\n\tif (!className.starts_with(RPG_MAKER_MZ_PREFIX)) {\n\t\treturn false;\n\t}\n\n\t// 检查数字后缀\n\tfor (wchar_t c : wil::make_range(className.begin() + StrHelper::StrLen(RPG_MAKER_MZ_PREFIX), className.end())) {\n\t\tif (!StrHelper::isdigit(c)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tclassName = L\"Chrome_WidgetWin_1\";\n\treturn true;\n}\n\n// GH#904\n// TeknoParrot 模拟 Linux 游戏时创建的窗口类名格式为：\n// XWindow_{一串数字}\nstatic bool MatchTeknoParrotClassName(std::wstring_view& className) noexcept {\n\tstatic constexpr const wchar_t* TEKNO_PARROT_PREFIX = L\"XWindow_\";\n\tif (!className.starts_with(TEKNO_PARROT_PREFIX)) {\n\t\treturn false;\n\t}\n\n\t// 检查数字后缀\n\tfor (wchar_t c : wil::make_range(className.begin() + StrHelper::StrLen(TEKNO_PARROT_PREFIX), className.end())) {\n\t\tif (!StrHelper::isdigit(c)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tclassName = L\"XWindow_0\";\n\treturn true;\n}\n\nstatic std::wstring_view ParseClassName(std::wstring_view className) noexcept {\n\tfor (auto func : {\n\t\tMatchWPFClassName,\n\t\tMatchRPGMakerMZClassName,\n\t\tMatchTeknoParrotClassName\n\t}) {\n\t\tif (func(className)) {\n\t\t\treturn className;\n\t\t}\n\t}\n\n\treturn className;\n}\n\nstatic bool TestNewProfileImpl(\n\tbool isPackaged,\n\tstd::wstring_view pathOrAumid,\n\tstd::wstring_view parsedClassName\n) noexcept {\n\tconst std::vector<Profile>& profiles = AppSettings::Get().Profiles();\n\n\tif (isPackaged) {\n\t\tfor (const Profile& rule : profiles) {\n\t\t\tif (rule.isPackaged && rule.pathRule == pathOrAumid && rule.classNameRule == parsedClassName) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const Profile& rule : profiles) {\n\t\t\tif (!rule.isPackaged && rule.pathRule == pathOrAumid && rule.classNameRule == parsedClassName) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}\n\nbool ProfileService::TestNewProfile(bool isPackaged, std::wstring_view pathOrAumid, std::wstring_view className) noexcept {\n\tif (pathOrAumid.empty() || className.empty()) {\n\t\treturn false;\n\t}\n\n\treturn TestNewProfileImpl(isPackaged, pathOrAumid, ParseClassName(className));\n}\n\nbool ProfileService::AddProfile(\n\tbool isPackaged,\n\tstd::wstring_view pathOrAumid,\n\tstd::wstring_view className,\n\tstd::wstring_view name,\n\tint copyFrom\n) {\n\tassert(!pathOrAumid.empty() && !className.empty() && !name.empty());\n\n\tconst std::wstring_view parsedClassName = ParseClassName(className);\n\n\tif (!TestNewProfileImpl(isPackaged, pathOrAumid, parsedClassName)) {\n\t\treturn false;\n\t}\n\n\tstd::vector<Profile>& profiles = AppSettings::Get().Profiles();\n\tProfile& profile = profiles.emplace_back();\n\n\tprofile.Copy(copyFrom < 0 ? DefaultProfile() : profiles[copyFrom]);\n\n\tprofile.name = name;\n\tprofile.isPackaged = isPackaged;\n\tprofile.pathRule = pathOrAumid;\n\tprofile.classNameRule = parsedClassName;\n\n\tProfileAdded.Invoke(std::ref(profile));\n\n\tAppSettings::Get().SaveAsync();\n\treturn true;\n}\n\nvoid ProfileService::RenameProfile(uint32_t profileIdx, std::wstring_view newName) {\n\tassert(!newName.empty());\n\tAppSettings::Get().Profiles()[profileIdx].name = newName;\n\tProfileRenamed.Invoke(profileIdx);\n\tAppSettings::Get().SaveAsync();\n}\n\nvoid ProfileService::RemoveProfile(uint32_t profileIdx) {\n\tstd::vector<Profile>& profiles = AppSettings::Get().Profiles();\n\tprofiles.erase(profiles.begin() + profileIdx);\n\tProfileRemoved.Invoke(profileIdx);\n\tAppSettings::Get().SaveAsync();\n}\n\nbool ProfileService::MoveProfile(uint32_t profileIdx, bool isMoveUp) {\n\tstd::vector<Profile>& profiles = AppSettings::Get().Profiles();\n\tif (isMoveUp ? profileIdx == 0 : profileIdx + 1 >= (uint32_t)profiles.size()) {\n\t\treturn false;\n\t}\n\n\tstd::swap(profiles[profileIdx], profiles[isMoveUp ? (size_t)profileIdx - 1 : (size_t)profileIdx + 1]);\n\tProfileMoved.Invoke(profileIdx, isMoveUp);\n\n\tAppSettings::Get().SaveAsync();\n\treturn true;\n}\n\nstatic bool AnyAutoScaleProfile(const std::vector<Profile>& profiles) noexcept {\n\tfor (const Profile& profile : profiles) {\n\t\tif (profile.autoScale != AutoScale::Disabled) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nconst Profile* ProfileService::GetProfileForWindow(HWND hWnd, bool forAutoScale) noexcept {\n\tconst std::vector<Profile>& profiles = AppSettings::Get().Profiles();\n\n\t// 作为优化，先检查有没有配置文件启用了自动缩放\n\tif (forAutoScale && !AnyAutoScaleProfile(profiles)) {\n\t\treturn nullptr;\n\t}\n\t\n\t// 先检查窗口类名，这比获取可执行文件名快得多\n\tstd::wstring className = Win32Helper::GetWindowClassName(hWnd);\n\tstd::wstring_view parsedClassName = ParseClassName(className);\n\n\tstd::wstring path;\n\tstd::optional<bool> isPackaged;\n\n\tfor (const Profile& profile : profiles) {\n\t\tif (forAutoScale && profile.autoScale == AutoScale::Disabled) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (profile.classNameRule != parsedClassName) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!isPackaged.has_value()) {\n\t\t\tAppXReader appxReader;\n\t\t\tisPackaged = appxReader.Initialize(hWnd);\n\t\t\tif (*isPackaged) {\n\t\t\t\t// 打包应用匹配 AUMID\n\t\t\t\tpath = appxReader.AUMID();\n\t\t\t}\n\t\t}\n\n\t\tif (profile.isPackaged != *isPackaged) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!*isPackaged && path.empty()) {\n\t\t\t// 桌面应用匹配路径\n\t\t\tpath = Win32Helper::GetWindowPath(hWnd);\n\t\t\tif (path.empty()) {\n\t\t\t\t// 获取路径失败\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (profile.pathRule == path) {\n\t\t\treturn &profile;\n\t\t}\n\t}\n\n\treturn forAutoScale ? nullptr : &DefaultProfile();\n}\n\nProfile& ProfileService::DefaultProfile() noexcept {\n\treturn AppSettings::Get().DefaultProfile();\n}\n\nProfile& ProfileService::GetProfile(uint32_t idx) noexcept {\n\treturn AppSettings::Get().Profiles()[idx];\n}\n\nuint32_t ProfileService::GetProfileCount() noexcept {\n\treturn (uint32_t)AppSettings::Get().Profiles().size();\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ProfileService.h",
    "content": "#pragma once\n#include \"Event.h\"\n\nnamespace Magpie {\n\nstruct Profile;\n\nclass ProfileService {\npublic:\n\tstatic ProfileService& Get() noexcept {\n\t\tstatic ProfileService instance;\n\t\treturn instance;\n\t}\n\n\tProfileService(const ProfileService&) = delete;\n\tProfileService(ProfileService&&) = delete;\n\n\tbool TestNewProfile(bool isPackaged, std::wstring_view pathOrAumid, std::wstring_view className) noexcept;\n\n\t// copyFrom < 0 表示复制默认配置\n\tbool AddProfile(bool isPackaged, std::wstring_view pathOrAumid, std::wstring_view className, std::wstring_view name, int copyFrom);\n\n\tvoid RenameProfile(uint32_t profileIdx, std::wstring_view newName);\n\n\tvoid RemoveProfile(uint32_t profileIdx);\n\n\tbool MoveProfile(uint32_t profileIdx, bool isMoveUp);\n\n\tconst Profile* GetProfileForWindow(HWND hWnd, bool forAutoScale) noexcept;\n\n\tProfile& DefaultProfile() noexcept;\n\n\tProfile& GetProfile(uint32_t idx) noexcept;\n\n\tuint32_t GetProfileCount() noexcept;\n\n\tEvent<Profile&> ProfileAdded;\n\tEvent<uint32_t> ProfileRenamed;\n\tEvent<uint32_t> ProfileRemoved;\n\tEvent<uint32_t, bool> ProfileMoved;\n\nprivate:\n\tProfileService() = default;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ProfileViewModel.cpp",
    "content": "#include \"pch.h\"\n#include \"ProfileViewModel.h\"\n#if __has_include(\"ProfileViewModel.g.cpp\")\n#include \"ProfileViewModel.g.cpp\"\n#endif\n#include \"Profile.h\"\n#include \"AppXReader.h\"\n#include \"IconHelper.h\"\n#include \"ProfileService.h\"\n#include \"StrHelper.h\"\n#include \"Win32Helper.h\"\n#include \"AppSettings.h\"\n#include \"Logger.h\"\n#include \"ScalingMode.h\"\n#include \"ScalingService.h\"\n#include \"FileDialogHelper.h\"\n#include \"CommonSharedConstants.h\"\n#include \"App.h\"\n#include \"MainWindow.h\"\n#include \"AdaptersService.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::Graphics::Display;\nusing namespace Windows::Graphics::Imaging;\nusing namespace Windows::UI::Xaml::Controls;\nusing namespace Windows::UI::Xaml::Media::Imaging;\n\nnamespace winrt::Magpie::implementation {\n\nProfileViewModel::ProfileViewModel(int profileIdx) : _isDefaultProfile(profileIdx < 0) {\n\tif (_isDefaultProfile) {\n\t\t_data = &ProfileService::Get().DefaultProfile();\n\t} else {\n\t\t_index = (uint32_t)profileIdx;\n\t\t_data = &ProfileService::Get().GetProfile(profileIdx);\n\n\t\t// 占位\n\t\t_icon = FontIcon();\n\n\t\t_appThemeChangedRevoker = App::Get().ThemeChanged(auto_revoke, [this](bool) { _LoadIcon(); });\n\t\t_dpiChangedRevoker = App::Get().MainWindow().DpiChanged(\n\t\t\tauto_revoke, [this](uint32_t) { _LoadIcon(); });\n\n\t\tif (_data->isPackaged) {\n\t\t\tAppXReader appxReader;\n\t\t\t_isProgramExist = appxReader.Initialize(_data->pathRule);\n\t\t} else {\n\t\t\t_isProgramExist = Win32Helper::FileExists(_data->pathRule.c_str());\n\t\t}\n\n\t\t_LoadIcon();\n\t}\n\n\t_adaptersChangedRevoker = AdaptersService::Get().AdaptersChanged(auto_revoke,\n\t\tstd::bind_front(&ProfileViewModel::_AdaptersService_AdaptersChanged, this));\n}\n\nProfileViewModel::~ProfileViewModel() {}\n\nbool ProfileViewModel::IsNotDefaultProfile() const noexcept {\n\treturn !_data->name.empty();\n}\n\nbool ProfileViewModel::IsNotPackaged() const noexcept {\n\treturn !_data->isPackaged;\n}\n\nfire_and_forget ProfileViewModel::OpenProgramLocation() const noexcept {\n\tif (!_isProgramExist) {\n\t\tco_return;\n\t}\n\n\tstd::wstring programLocation;\n\tif (_data->isPackaged) {\n\t\tAppXReader appxReader;\n\t\t[[maybe_unused]] bool result = appxReader.Initialize(_data->pathRule);\n\t\tassert(result);\n\n\t\tprogramLocation = appxReader.GetExecutablePath();\n\t\tif (programLocation.empty()) {\n\t\t\t// 找不到可执行文件则打开应用文件夹\n\t\t\tWin32Helper::ShellOpen(appxReader.GetPackagePath().c_str());\n\t\t\tco_return;\n\t\t}\n\t} else {\n\t\tprogramLocation = _data->pathRule;\n\t}\n\n\tco_await resume_background();\n\tWin32Helper::OpenFolderAndSelectFile(programLocation.c_str());\n}\n\nstatic std::wstring ExtractFolder(const std::wstring& path) noexcept {\n\tconst size_t delimPos = path.find_last_of(L'\\\\');\n\tif (delimPos == std::wstring::npos) {\n\t\tassert(false);\n\t\treturn {};\n\t}\n\n\tstd::wstring result = path.substr(0, delimPos);\n\tif (Win32Helper::DirExists(result.c_str())) {\n\t\treturn result;\n\t} else {\n\t\treturn {};\n\t}\n}\n\nstatic std::wstring GetStartFolderForSettingLauncher(const Profile& profile) noexcept {\n\tif (profile.launcherPath.empty()) {\n\t\t// 无启动器\n\t\treturn ExtractFolder(profile.pathRule);\n\t}\n\n\tstd::wstring result = ExtractFolder(profile.launcherPath);\n\tif (result.empty()) {\n\t\t// 启动器路径失效\n\t\treturn ExtractFolder(profile.pathRule);\n\t} else {\n\t\treturn result;\n\t}\n}\n\nfire_and_forget ProfileViewModel::ChangeExeForLaunching() noexcept {\n\tif (!_isProgramExist || _data->isPackaged) {\n\t\tco_return;\n\t}\n\n\tconst ResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\tconst hstring titleStr = ResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID)\n\t\t.GetString(L\"Dialog_SelectLauncher_Title\");\n\tconst hstring exeFileStr = ResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID)\n\t\t.GetString(L\"Dialog_ExeFile\");\n\n\tstd::wstring startFolder = GetStartFolderForSettingLauncher(*_data);\n\n\tauto weakThis = get_weak();\n\n\t// 在主线程使用 IFileOpenDialog 有些问题，尤其在 Win10 中\n\tco_await resume_background();\n\n\tcom_ptr<IFileOpenDialog> fileDialog = try_create_instance<IFileOpenDialog>(CLSID_FileOpenDialog);\n\tif (!fileDialog) {\n\t\tLogger::Get().Error(\"创建 FileSaveDialog 失败\");\n\t\tco_return;\n\t}\n\n\tfileDialog->SetTitle(titleStr.c_str());\n\t{\n\t\tconst COMDLG_FILTERSPEC fileType{ exeFileStr.c_str(), L\"*.exe\" };\n\t\tfileDialog->SetFileTypes(1, &fileType);\n\t}\n\tfileDialog->SetDefaultExtension(L\"exe\");\n\n\tif (!startFolder.empty()) {\n\t\tcom_ptr<IShellItem> shellItem;\n\t\tSHCreateItemFromParsingName(startFolder.c_str(), nullptr, IID_PPV_ARGS(&shellItem));\n\t\tfileDialog->SetFolder(shellItem.get());\n\t}\n\n\t// GH#1158\n\t// 选择 exe 的快捷方式时 IFileOpenDialog 默认解析它指向的文件路径，导致参数丢失。\n\t// FOS_NODEREFERENCELINKS 可以禁止解析，直接返回 lnk 文件。\n\tstd::optional<std::filesystem::path> launcherPath = FileDialogHelper::OpenFileDialog(\n\t\tfileDialog.get(), FOS_STRICTFILETYPES | FOS_NODEREFERENCELINKS);\n\tif (!launcherPath || launcherPath->empty() || *launcherPath == _data->pathRule) {\n\t\tco_return;\n\t}\n\n\tco_await App::Get().Dispatcher();\n\n\tif (weakThis.get()) {\n\t\t_data->launcherPath = std::move(*launcherPath);\n\t\tAppSettings::Get().SaveAsync();\n\t}\n}\n\nhstring ProfileViewModel::Name() const noexcept {\n\tif (_data->name.empty()) {\n\t\treturn ResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID)\n\t\t\t.GetString(L\"Root_Defaults/Content\");\n\t} else {\n\t\treturn hstring(_data->name);\n\t}\n}\n\nstatic void LaunchPackagedApp(const Profile& profile) noexcept {\n\t// 关于启动打包应用的讨论:\n\t// https://github.com/microsoft/WindowsAppSDK/issues/2856#issuecomment-1224409948\n\t// 使用 CLSCTX_LOCAL_SERVER 以在独立的进程中启动应用\n\t// 见 https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-iapplicationactivationmanager\n\tcom_ptr<IApplicationActivationManager> aam =\n\t\ttry_create_instance<IApplicationActivationManager>(CLSID_ApplicationActivationManager, CLSCTX_LOCAL_SERVER);\n\tif (!aam) {\n\t\tLogger::Get().Error(\"创建 ApplicationActivationManager 失败\");\n\t\treturn;\n\t}\n\n\t// 确保启动为前台窗口\n\tHRESULT hr = CoAllowSetForegroundWindow(aam.get(), nullptr);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"创建 CoAllowSetForegroundWindow 失败\", hr);\n\t}\n\n\tDWORD procId;\n\thr = aam->ActivateApplication(profile.pathRule.c_str(), profile.launchParameters.c_str(), AO_NONE, &procId);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"IApplicationActivationManager::ActivateApplication 失败\", hr);\n\t\treturn;\n\t}\n}\n\nstatic void LaunchWin32App(const Profile& profile) noexcept {\n\tconst std::wstring& path = !profile.launcherPath.empty() &&\n\t\tWin32Helper::FileExists(profile.launcherPath.c_str()) ? profile.launcherPath.native() : profile.pathRule;\n\tWin32Helper::ShellOpen(path.c_str(), profile.launchParameters.c_str());\n}\n\nvoid ProfileViewModel::Launch() const noexcept {\n\tif (!_isProgramExist) {\n\t\treturn;\n\t}\n\n\tif (_data->isPackaged) {\n\t\tLaunchPackagedApp(*_data);\n\t} else {\n\t\tLaunchWin32App(*_data);\n\t}\n}\n\nvoid ProfileViewModel::RenameText(const hstring& value) {\n\t_renameText = value;\n\tRaisePropertyChanged(L\"RenameText\");\n\n\t_trimedRenameText = value;\n\tStrHelper::Trim(_trimedRenameText);\n\tbool newEnabled = !_trimedRenameText.empty() && _trimedRenameText != _data->name;\n\tif (_isRenameConfirmButtonEnabled != newEnabled) {\n\t\t_isRenameConfirmButtonEnabled = newEnabled;\n\t\tRaisePropertyChanged(L\"IsRenameConfirmButtonEnabled\");\n\t}\n}\n\nvoid ProfileViewModel::Rename() {\n\tif (_isDefaultProfile || !_isRenameConfirmButtonEnabled) {\n\t\treturn;\n\t}\n\n\tProfileService::Get().RenameProfile(_index, _trimedRenameText);\n\tRaisePropertyChanged(L\"Name\");\n}\n\nbool ProfileViewModel::CanMoveUp() const noexcept {\n\treturn !_isDefaultProfile && _index != 0;\n}\n\nbool ProfileViewModel::CanMoveDown() const noexcept {\n\treturn !_isDefaultProfile && _index + 1 < ProfileService::Get().GetProfileCount();\n}\n\nvoid ProfileViewModel::MoveUp() {\n\tif (_isDefaultProfile) {\n\t\treturn;\n\t}\n\n\tProfileService& profileService = ProfileService::Get();\n\tif (!profileService.MoveProfile(_index, true)) {\n\t\treturn;\n\t}\n\n\t--_index;\n\t_data = &profileService.GetProfile(_index);\n\n\tRaisePropertyChanged(L\"CanMoveUp\");\n\tRaisePropertyChanged(L\"CanMoveDown\");\n}\n\nvoid ProfileViewModel::MoveDown() {\n\tif (_isDefaultProfile) {\n\t\treturn;\n\t}\n\n\tProfileService& profileService = ProfileService::Get();\n\tif (!profileService.MoveProfile(_index, false)) {\n\t\treturn;\n\t}\n\n\t++_index;\n\t_data = &profileService.GetProfile(_index);\n\n\tRaisePropertyChanged(L\"CanMoveUp\");\n\tRaisePropertyChanged(L\"CanMoveDown\");\n}\n\nvoid ProfileViewModel::Delete() {\n\tif (_isDefaultProfile) {\n\t\treturn;\n\t}\n\n\tProfileService::Get().RemoveProfile(_index);\n\t_data = nullptr;\n}\n\nIVector<IInspectable> ProfileViewModel::ScalingModes() const noexcept {\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\t\n\tstd::vector<IInspectable> scalingModes;\n\tscalingModes.push_back(box_value(resourceLoader.GetString(L\"Profile_General_ScalingMode_None\")));\n\tfor (const ::Magpie::ScalingMode& sm : AppSettings::Get().ScalingModes()) {\n\t\tscalingModes.push_back(box_value(sm.name));\n\t}\n\n\treturn single_threaded_vector(std::move(scalingModes));\n}\n\nint ProfileViewModel::ScalingMode() const noexcept {\n\treturn _data->scalingMode + 1;\n}\n\nvoid ProfileViewModel::ScalingMode(int value) {\n\t_data->scalingMode = value - 1;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"ScalingMode\");\n}\n\nIVector<IInspectable> ProfileViewModel::CaptureMethods() const noexcept {\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\n\tstd::vector<IInspectable> captureMethods;\n\tcaptureMethods.reserve(4);\n\tcaptureMethods.push_back(box_value(L\"Graphics Capture\"));\n\tif (Win32Helper::GetOSVersion().Is20H1OrNewer()) {\n\t\t// Desktop Duplication 要求 Win10 20H1+\n\t\tcaptureMethods.push_back(box_value(L\"Desktop Duplication\"));\n\t}\n\tcaptureMethods.push_back(box_value(L\"GDI\"));\n\tcaptureMethods.push_back(box_value(L\"DwmSharedSurface\"));\n\n\treturn single_threaded_vector(std::move(captureMethods));\n}\n\nint ProfileViewModel::CaptureMethod() const noexcept {\n\tif (Win32Helper::GetOSVersion().Is20H1OrNewer() || _data->captureMethod < CaptureMethod::DesktopDuplication) {\n\t\treturn (int)_data->captureMethod;\n\t} else {\n\t\treturn (int)_data->captureMethod - 1;\n\t}\n}\n\nvoid ProfileViewModel::CaptureMethod(int value) {\n\tif (value < 0) {\n\t\treturn;\n\t}\n\n\tif (!Win32Helper::GetOSVersion().Is20H1OrNewer() && value >= (int)CaptureMethod::DesktopDuplication) {\n\t\t++value;\n\t}\n\n\tenum CaptureMethod captureMethod = (enum CaptureMethod)value;\n\tif (_data->captureMethod == captureMethod) {\n\t\treturn;\n\t}\n\n\t_data->captureMethod = captureMethod;\n\tRaisePropertyChanged(L\"CaptureMethod\");\n\tRaisePropertyChanged(L\"IsCaptureMethodDesktopDuplication\");\n\tRaisePropertyChanged(L\"CanCaptureTitleBar\");\n\n\tAppSettings::Get().SaveAsync();\n}\n\nbool ProfileViewModel::IsCaptureMethodDesktopDuplication() const noexcept {\n\treturn _data->captureMethod == CaptureMethod::DesktopDuplication;\n}\n\nint ProfileViewModel::AutoScale() const noexcept {\n\treturn (int)_data->autoScale;\n}\n\nvoid ProfileViewModel::AutoScale(int value) {\n\tif (value < 0) {\n\t\treturn;\n\t}\n\n\tenum AutoScale enumValue = (enum AutoScale)value;\n\tif (_data->autoScale == enumValue) {\n\t\treturn;\n\t}\n\n\t_data->autoScale = enumValue;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"AutoScale\");\n\n\tif (value) {\n\t\t// 立即检查前台窗口是否应自动缩放\n\t\tScalingService::Get().CheckForeground();\n\t}\n}\n\nbool ProfileViewModel::Is3DGameMode() const noexcept {\n\treturn _data->Is3DGameMode();\n}\n\nvoid ProfileViewModel::Is3DGameMode(bool value) {\n\tif (_data->Is3DGameMode() == value) {\n\t\treturn;\n\t}\n\n\t_data->Is3DGameMode(value);\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"Is3DGameMode\");\n}\n\nbool ProfileViewModel::HasMultipleMonitors() const noexcept {\n\treturn GetSystemMetrics(SM_CMONITORS) > 1;\n}\n\nint ProfileViewModel::MultiMonitorUsage() const noexcept {\n\treturn (int)_data->multiMonitorUsage;\n}\n\nvoid ProfileViewModel::MultiMonitorUsage(int value) {\n\tif (value < 0) {\n\t\treturn;\n\t}\n\n\t::Magpie::MultiMonitorUsage multiMonitorUsage = (::Magpie::MultiMonitorUsage)value;\n\tif (_data->multiMonitorUsage == multiMonitorUsage) {\n\t\treturn;\n\t}\n\n\t_data->multiMonitorUsage = multiMonitorUsage;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"MultiMonitorUsage\");\n}\n\nint ProfileViewModel::InitialWindowedScaleFactor() const noexcept {\n\treturn (int)_data->initialWindowedScaleFactor;\n}\n\nvoid ProfileViewModel::InitialWindowedScaleFactor(int value) {\n\tif (value < 0) {\n\t\treturn;\n\t}\n\n\t::Magpie::InitialWindowedScaleFactor factor = (::Magpie::InitialWindowedScaleFactor)value;\n\tif (_data->initialWindowedScaleFactor == factor) {\n\t\treturn;\n\t}\n\n\t_data->initialWindowedScaleFactor = factor;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"InitialWindowedScaleFactor\");\n}\n\ndouble ProfileViewModel::CustomInitialWindowedScaleFactor() const noexcept {\n\treturn _data->customInitialWindowedScaleFactor;\n}\n\nvoid ProfileViewModel::CustomInitialWindowedScaleFactor(double value) {\n\tif (_data->customInitialWindowedScaleFactor == value) {\n\t\treturn;\n\t}\n\n\t_data->customInitialWindowedScaleFactor = std::isnan(value) ? 1.0f : (float)value;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"CustomInitialWindowedScaleFactor\");\n}\n\nIVector<IInspectable> ProfileViewModel::GraphicsCards() const noexcept {\n\tstd::vector<IInspectable> graphicsCards;\n\n\tif (IsShowGraphicsCardSettingsCard()) {\n\t\tconst std::vector<AdapterInfo>& adapterInfos = AdaptersService::Get().AdapterInfos();\n\t\tgraphicsCards.reserve(adapterInfos.size() + 1);\n\n\t\tResourceLoader resourceLoader =\n\t\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\t\thstring defaultStr = resourceLoader.GetString(L\"Profile_General_CaptureMethod_Default\");\n\n\t\t// “默认”选项中显示实际使用的显卡\n\t\tgraphicsCards.push_back(box_value(\n\t\t\tStrHelper::Concat(defaultStr, L\" (\", adapterInfos[0].description, L\")\")));\n\n\t\tfor (const AdapterInfo& adapterInfo : adapterInfos) {\n\t\t\tgraphicsCards.push_back(box_value(adapterInfo.description));\n\t\t}\n\t}\n\n\treturn single_threaded_vector(std::move(graphicsCards));\n}\n\nint ProfileViewModel::GraphicsCard() const noexcept {\n\tif (_data->graphicsCardId.idx < 0) {\n\t\treturn 0;\n\t}\n\n\t// 不要把 graphicsCardId.idx 当作位序使用，AdaptersService 会过滤掉不支持 FL11 的显卡\n\tconst std::vector<AdapterInfo>& adapterInfos = AdaptersService::Get().AdapterInfos();\n\tauto it = std::find_if(adapterInfos.begin(), adapterInfos.end(),\n\t\t[&](const AdapterInfo& ai) { return (int)ai.idx == _data->graphicsCardId.idx; });\n\tif (it == adapterInfos.end()) {\n\t\tassert(false);\n\t\treturn 0;\n\t}\n\n\treturn int(it - adapterInfos.begin()) + 1;\n}\n\nvoid ProfileViewModel::GraphicsCard(int value) {\n\tif (value < 0 || _isHandlingAdapterChanged) {\n\t\treturn;\n\t}\n\n\tGraphicsCardId& gcid = _data->graphicsCardId;\n\n\tconst std::vector<AdapterInfo>& adapterInfos = AdaptersService::Get().AdapterInfos();\n\tif (value == 0 || value - 1 >= (int)adapterInfos.size()) {\n\t\t// 设为默认显卡，并清空 vendorId 和 deviceId\n\t\tgcid.idx = -1;\n\t\tgcid.vendorId = 0;\n\t\tgcid.deviceId = 0;\n\t} else {\n\t\tconst AdapterInfo& ai = adapterInfos[size_t(value - 1)];\n\t\tgcid.idx = ai.idx;\n\t\tgcid.vendorId = ai.vendorId;\n\t\tgcid.deviceId = ai.deviceId;\n\t}\n\t\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"GraphicsCard\");\n}\n\nbool ProfileViewModel::IsShowGraphicsCardSettingsCard() const noexcept {\n\treturn AdaptersService::Get().AdapterInfos().size() > 1;\n}\n\nbool ProfileViewModel::IsNoGraphicsCard() const noexcept {\n\treturn AdaptersService::Get().AdapterInfos().empty();\n}\n\nbool ProfileViewModel::IsFrameRateLimiterEnabled() const noexcept {\n\treturn _data->isFrameRateLimiterEnabled;\n}\n\nvoid ProfileViewModel::IsFrameRateLimiterEnabled(bool value) {\n\tif (_data->isFrameRateLimiterEnabled == value) {\n\t\treturn;\n\t}\n\n\t_data->isFrameRateLimiterEnabled = value;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"IsFrameRateLimiterEnabled\");\n}\n\ndouble ProfileViewModel::MaxFrameRate() const noexcept {\n\treturn _data->maxFrameRate;\n}\n\nvoid ProfileViewModel::MaxFrameRate(double value) {\n\tif (_data->maxFrameRate == value) {\n\t\treturn;\n\t}\n\n\t// 用户已清空数字框则重置为 60\n\t_data->maxFrameRate = std::isnan(value) ? 60.0f : (float)value;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"MaxFrameRate\");\n}\n\nbool ProfileViewModel::IsCaptureTitleBar() const noexcept {\n\treturn _data->IsCaptureTitleBar();\n}\n\nvoid ProfileViewModel::IsCaptureTitleBar(bool value) {\n\tif (_data->IsCaptureTitleBar() == value) {\n\t\treturn;\n\t}\n\n\t_data->IsCaptureTitleBar(value);\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"IsCaptureTitleBar\");\n}\n\nbool ProfileViewModel::CanCaptureTitleBar() const noexcept {\n\treturn _data->captureMethod == CaptureMethod::GraphicsCapture\n\t\t|| _data->captureMethod == CaptureMethod::DesktopDuplication;\n}\n\nbool ProfileViewModel::IsCroppingEnabled() const noexcept {\n\treturn _data->isCroppingEnabled;\n}\n\nvoid ProfileViewModel::IsCroppingEnabled(bool value) {\n\tif (_data->isCroppingEnabled == value) {\n\t\treturn;\n\t}\n\n\t_data->isCroppingEnabled = value;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"IsCroppingEnabled\");\n}\n\ndouble ProfileViewModel::CroppingLeft() const noexcept {\n\treturn _data->cropping.Left;\n}\n\nvoid ProfileViewModel::CroppingLeft(double value) {\n\tif (_data->cropping.Left == value) {\n\t\treturn;\n\t}\n\n\t_data->cropping.Left = std::isnan(value) ? 0.0f : (float)value;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"CroppingLeft\");\n}\n\ndouble ProfileViewModel::CroppingTop() const noexcept {\n\treturn _data->cropping.Top;\n}\n\nvoid ProfileViewModel::CroppingTop(double value) {\n\tif (_data->cropping.Top == value) {\n\t\treturn;\n\t}\n\n\t// 用户已清空数字框则重置为 0\n\t_data->cropping.Top = std::isnan(value) ? 0.0f : (float)value;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"CroppingTop\");\n}\n\ndouble ProfileViewModel::CroppingRight() const noexcept {\n\treturn _data->cropping.Right;\n}\n\nvoid ProfileViewModel::CroppingRight(double value) {\n\tif (_data->cropping.Right == value) {\n\t\treturn;\n\t}\n\n\t_data->cropping.Right = std::isnan(value) ? 0.0f : (float)value;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"CroppingRight\");\n}\n\ndouble ProfileViewModel::CroppingBottom() const noexcept {\n\treturn _data->cropping.Bottom;\n}\n\nvoid ProfileViewModel::CroppingBottom(double value) {\n\tif (_data->cropping.Bottom == value) {\n\t\treturn;\n\t}\n\n\t_data->cropping.Bottom = std::isnan(value) ? 0.0f : (float)value;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"CroppingBottom\");\n}\n\nbool ProfileViewModel::IsAdjustCursorSpeed() const noexcept {\n\treturn _data->IsAdjustCursorSpeed();\n}\n\nvoid ProfileViewModel::IsAdjustCursorSpeed(bool value) {\n\tif (_data->IsAdjustCursorSpeed() == value) {\n\t\treturn;\n\t}\n\n\t_data->IsAdjustCursorSpeed(value);\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"IsAdjustCursorSpeed\");\n}\n\nint ProfileViewModel::CursorScaling() const noexcept {\n\treturn (int)_data->cursorScaling;\n}\n\nvoid ProfileViewModel::CursorScaling(int value) {\n\tif (value < 0) {\n\t\treturn;\n\t}\n\n\t::Magpie::CursorScaling cursorScaling = (::Magpie::CursorScaling)value;\n\tif (_data->cursorScaling == cursorScaling) {\n\t\treturn;\n\t}\n\n\t_data->cursorScaling = cursorScaling;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"CursorScaling\");\n}\n\ndouble ProfileViewModel::CustomCursorScaling() const noexcept {\n\treturn _data->customCursorScaling;\n}\n\nvoid ProfileViewModel::CustomCursorScaling(double value) {\n\tif (_data->customCursorScaling == value) {\n\t\treturn;\n\t}\n\n\t_data->customCursorScaling = std::isnan(value) ? 1.0f : (float)value;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"CustomCursorScaling\");\n}\n\nint ProfileViewModel::CursorInterpolationMode() const noexcept {\n\treturn (int)_data->cursorInterpolationMode;\n}\n\nvoid ProfileViewModel::CursorInterpolationMode(int value) {\n\tif (value < 0) {\n\t\treturn;\n\t}\n\n\t::Magpie::CursorInterpolationMode cursorInterpolationMode = (::Magpie::CursorInterpolationMode)value;\n\tif (_data->cursorInterpolationMode == cursorInterpolationMode) {\n\t\treturn;\n\t}\n\n\t_data->cursorInterpolationMode = cursorInterpolationMode;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"CursorInterpolationMode\");\n}\n\nbool ProfileViewModel::IsAutoHideCursorEnabled() const noexcept {\n\treturn _data->isAutoHideCursorEnabled;\n}\n\nvoid ProfileViewModel::IsAutoHideCursorEnabled(bool value) {\n\tif (_data->isAutoHideCursorEnabled == value) {\n\t\treturn;\n\t}\n\n\t_data->isAutoHideCursorEnabled = value;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"IsAutoHideCursorEnabled\");\n}\n\ndouble ProfileViewModel::AutoHideCursorDelay() const noexcept {\n\treturn _data->autoHideCursorDelay;\n}\n\nvoid ProfileViewModel::AutoHideCursorDelay(double value) {\n\tif (_data->autoHideCursorDelay == value) {\n\t\treturn;\n\t}\n\n\t_data->autoHideCursorDelay = std::isnan(value) ? 3.0f : (float)value;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"AutoHideCursorDelay\");\n\tRaisePropertyChanged(L\"AutoHideCursorDelayText\");\n}\n\nhstring ProfileViewModel::AutoHideCursorDelayText() const noexcept {\n\treturn App::Get().DoubleFormatter().FormatDouble(AutoHideCursorDelay());\n}\n\nhstring ProfileViewModel::LaunchParameters() const noexcept {\n\treturn hstring(_data->launchParameters);\n}\n\nvoid ProfileViewModel::LaunchParameters(const hstring& value) {\n\tstd::wstring_view trimmed(value);\n\tStrHelper::Trim(trimmed);\n\t_data->launchParameters = trimmed;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"LaunchParameters\");\n}\n\nint ProfileViewModel::DestAlignment() const noexcept {\n\treturn (int)_data->destAlignment;\n}\n\nvoid ProfileViewModel::DestAlignment(int value) {\n\tif (value < 0) {\n\t\treturn;\n\t}\n\n\t::Magpie::DestAlignment alignment = (::Magpie::DestAlignment)value;\n\tif (_data->destAlignment == alignment) {\n\t\treturn;\n\t}\n\n\t_data->destAlignment = alignment;\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"DestAlignment\");\n}\n\nbool ProfileViewModel::IsDirectFlipDisabled() const noexcept {\n\treturn _data->IsDirectFlipDisabled();\n}\n\nvoid ProfileViewModel::IsDirectFlipDisabled(bool value) {\n\tif (_data->IsDirectFlipDisabled() == value) {\n\t\treturn;\n\t}\n\n\t_data->IsDirectFlipDisabled(value);\n\tAppSettings::Get().SaveAsync();\n\n\tRaisePropertyChanged(L\"IsDirectFlipDisabled\");\n}\n\nfire_and_forget ProfileViewModel::_LoadIcon() {\n\tstd::wstring iconPath;\n\tSoftwareBitmap iconBitmap{ nullptr };\n\n\tauto weakThis = get_weak();\n\n\tif (_isProgramExist) {\n\t\tconst bool preferLightTheme = App::Get().IsLightTheme();\n\t\tconst bool isPackaged = _data->isPackaged;\n\t\tconst std::wstring path = _data->pathRule;\n\t\tconst uint32_t iconSize =\n\t\t\t(uint32_t)std::lroundf(32.0f * App::Get().MainWindow().CurrentDpi() / USER_DEFAULT_SCREEN_DPI);\n\n\t\tco_await resume_background();\n\n\t\tif (isPackaged) {\n\t\t\tAppXReader appxReader;\n\t\t\t[[maybe_unused]] bool result = appxReader.Initialize(path);\n\t\t\tassert(result);\n\n\t\t\tstd::variant<std::wstring, SoftwareBitmap> uwpIcon =\n\t\t\t\tappxReader.GetIcon(iconSize, preferLightTheme);\n\t\t\tif (uwpIcon.index() == 0) {\n\t\t\t\ticonPath = std::get<0>(uwpIcon);\n\t\t\t} else {\n\t\t\t\ticonBitmap = std::get<1>(uwpIcon);\n\t\t\t}\n\t\t} else {\n\t\t\ticonBitmap = IconHelper::ExtractIconFromExe(path.c_str(), iconSize);\n\t\t}\n\n\t\tco_await App::Get().Dispatcher();\n\t\tif (!weakThis.get()) {\n\t\t\tco_return;\n\t\t}\n\t}\n\n\tif (!iconPath.empty()) {\n\t\tBitmapIcon icon;\n\t\ticon.ShowAsMonochrome(false);\n\t\ticon.UriSource(Uri(iconPath));\n\n\t\t_icon = std::move(icon);\n\t} else if (iconBitmap) {\n\t\tSoftwareBitmapSource imageSource;\n\t\tco_await imageSource.SetBitmapAsync(iconBitmap);\n\n\t\tif (!weakThis.get()) {\n\t\t\tco_return;\n\t\t}\n\n\t\tMUXC::ImageIcon imageIcon;\n\t\timageIcon.Source(imageSource);\n\n\t\t_icon = std::move(imageIcon);\n\t} else {\n\t\t_icon = nullptr;\n\t}\n\n\tRaisePropertyChanged(L\"Icon\");\n}\n\nvoid ProfileViewModel::_AdaptersService_AdaptersChanged() {\n\t_isHandlingAdapterChanged = true;\n\tRaisePropertyChanged(L\"IsShowGraphicsCardSettingsCard\");\n\tRaisePropertyChanged(L\"IsNoGraphicsCard\");\n\tRaisePropertyChanged(L\"GraphicsCards\");\n\tRaisePropertyChanged(L\"GraphicsCard\");\n\t_isHandlingAdapterChanged = false;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ProfileViewModel.h",
    "content": "#pragma once\n#include \"Event.h\"\n#include \"ProfileViewModel.g.h\"\n\nnamespace Magpie {\nstruct Profile;\n}\n\nnamespace winrt::Magpie::implementation {\n\nstruct ProfileViewModel : ProfileViewModelT<ProfileViewModel>,\n                          wil::notify_property_changed_base<ProfileViewModel> {\n\tProfileViewModel(int profileIdx);\n\t~ProfileViewModel();\n\n\tIconElement Icon() const noexcept {\n\t\treturn _icon;\n\t}\n\n\tbool IsNotDefaultProfile() const noexcept;\n\n\tbool IsProgramExist() const noexcept {\n\t\treturn _isProgramExist;\n\t}\n\n\tbool IsNotPackaged() const noexcept;\n\n\tfire_and_forget OpenProgramLocation() const noexcept;\n\n\tfire_and_forget ChangeExeForLaunching() noexcept;\n\n\thstring Name() const noexcept;\n\n\tvoid Launch() const noexcept;\n\n\thstring RenameText() const noexcept {\n\t\treturn _renameText;\n\t}\n\n\tvoid RenameText(const hstring& value);\n\n\tbool IsRenameConfirmButtonEnabled() const noexcept {\n\t\treturn _isRenameConfirmButtonEnabled;\n\t}\n\n\tvoid Rename();\n\n\tbool CanMoveUp() const noexcept;\n\n\tbool CanMoveDown() const noexcept;\n\n\tvoid MoveUp();\n\n\tvoid MoveDown();\n\n\tvoid Delete();\n\n\tIVector<IInspectable> ScalingModes() const noexcept;\n\n\tint ScalingMode() const noexcept;\n\tvoid ScalingMode(int value);\n\n\tIVector<IInspectable> CaptureMethods() const noexcept;\n\n\tint CaptureMethod() const noexcept;\n\tvoid CaptureMethod(int value);\n\n\tbool IsCaptureMethodDesktopDuplication() const noexcept;\n\n\tint AutoScale() const noexcept;\n\tvoid AutoScale(int value);\n\n\tbool Is3DGameMode() const noexcept;\n\tvoid Is3DGameMode(bool value);\n\n\tbool HasMultipleMonitors() const noexcept;\n\n\tint MultiMonitorUsage() const noexcept;\n\tvoid MultiMonitorUsage(int value);\n\n\tint InitialWindowedScaleFactor() const noexcept;\n\tvoid InitialWindowedScaleFactor(int value);\n\n\tdouble CustomInitialWindowedScaleFactor() const noexcept;\n\tvoid CustomInitialWindowedScaleFactor(double value);\n\n\tIVector<IInspectable> GraphicsCards() const noexcept;\n\n\tint GraphicsCard() const noexcept;\n\tvoid GraphicsCard(int value);\n\n\tbool IsShowGraphicsCardSettingsCard() const noexcept;\n\n\tbool IsNoGraphicsCard() const noexcept;\n\n\tbool IsFrameRateLimiterEnabled() const noexcept;\n\tvoid IsFrameRateLimiterEnabled(bool value);\n\n\tdouble MaxFrameRate() const noexcept;\n\tvoid MaxFrameRate(double value);\n\n\tbool IsCaptureTitleBar() const noexcept;\n\tvoid IsCaptureTitleBar(bool value);\n\n\tbool CanCaptureTitleBar() const noexcept;\n\n\tbool IsCroppingEnabled() const noexcept;\n\tvoid IsCroppingEnabled(bool value);\n\n\tdouble CroppingLeft() const noexcept;\n\tvoid CroppingLeft(double value);\n\n\tdouble CroppingTop() const noexcept;\n\tvoid CroppingTop(double value);\n\n\tdouble CroppingRight() const noexcept;\n\tvoid CroppingRight(double value);\n\n\tdouble CroppingBottom() const noexcept;\n\tvoid CroppingBottom(double value);\n\n\tbool IsAdjustCursorSpeed() const noexcept;\n\tvoid IsAdjustCursorSpeed(bool value);\n\n\tint CursorScaling() const noexcept;\n\tvoid CursorScaling(int value);\n\n\tdouble CustomCursorScaling() const noexcept;\n\tvoid CustomCursorScaling(double value);\n\n\tint CursorInterpolationMode() const noexcept;\n\tvoid CursorInterpolationMode(int value);\n\n\tbool IsAutoHideCursorEnabled() const noexcept;\n\tvoid IsAutoHideCursorEnabled(bool value);\n\n\tdouble AutoHideCursorDelay() const noexcept;\n\tvoid AutoHideCursorDelay(double value);\n\n\thstring AutoHideCursorDelayText() const noexcept;\n\n\thstring LaunchParameters() const noexcept;\n\tvoid LaunchParameters(const hstring& value);\n\n\tint DestAlignment() const noexcept;\n\tvoid DestAlignment(int value);\n\n\tbool IsDirectFlipDisabled() const noexcept;\n\tvoid IsDirectFlipDisabled(bool value);\n\nprivate:\n\tfire_and_forget _LoadIcon();\n\n\tvoid _AdaptersService_AdaptersChanged();\n\n\tbool _isProgramExist = true;\n\n\thstring _renameText;\n\tstd::wstring_view _trimedRenameText;\n\n\tuint32_t _index = 0;\n\t// 可以保存此指针的原因是: 用户停留在此页面时不会有缩放配置被创建或删除\n\t::Magpie::Profile* _data = nullptr;\n\n\t::Magpie::MultithreadEvent<bool>::EventRevoker _appThemeChangedRevoker;\n\t::Magpie::Event<uint32_t>::EventRevoker _dpiChangedRevoker;\n\t::Magpie::Event<>::EventRevoker _adaptersChangedRevoker;\n\n\tIconElement _icon{ nullptr };\n\n\tconst bool _isDefaultProfile = true;\n\tbool _isRenameConfirmButtonEnabled = false;\n\t// 用于防止 ComboBox 可见性变化时错误修改 GraphicsCard 配置\n\tbool _isHandlingAdapterChanged = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ProfileViewModel.idl",
    "content": "namespace Magpie {\n\truntimeclass ProfileViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tWindows.UI.Xaml.Controls.IconElement Icon { get; };\n\t\tString Name { get; };\n\t\tBoolean IsNotDefaultProfile { get; };\n\n\t\tvoid Launch();\n\n\t\tBoolean IsProgramExist { get; };\n\t\tBoolean IsNotPackaged { get; };\n\n\t\tvoid OpenProgramLocation();\n\t\tvoid ChangeExeForLaunching();\n\n\t\tString RenameText;\n\t\tBoolean IsRenameConfirmButtonEnabled { get; };\n\t\tvoid Rename();\n\n\t\tBoolean CanMoveUp { get; };\n\t\tBoolean CanMoveDown { get; };\n\t\tvoid MoveUp();\n\t\tvoid MoveDown();\n\n\t\tvoid Delete();\n\t\t\n\t\tIVector<IInspectable> ScalingModes { get; };\n\t\tInt32 ScalingMode;\n\n\t\tIVector<IInspectable> CaptureMethods { get; };\n\t\tInt32 CaptureMethod;\n\t\tBoolean IsCaptureMethodDesktopDuplication { get; };\n\n\t\tInt32 AutoScale;\n\t\tBoolean Is3DGameMode;\n\n\t\tBoolean HasMultipleMonitors { get; };\n\t\tInt32 MultiMonitorUsage;\n\n\t\tInt32 InitialWindowedScaleFactor;\n\t\tDouble CustomInitialWindowedScaleFactor;\n\n\t\tIVector<IInspectable> GraphicsCards { get; };\n\t\tInt32 GraphicsCard;\n\t\tBoolean IsShowGraphicsCardSettingsCard { get; };\n\t\tBoolean IsNoGraphicsCard { get; };\n\n\t\tBoolean IsFrameRateLimiterEnabled;\n\t\tDouble MaxFrameRate;\n\n\t\tBoolean IsCaptureTitleBar;\n\t\tBoolean CanCaptureTitleBar { get; };\n\n\t\tBoolean IsCroppingEnabled;\n\t\tDouble CroppingLeft;\n\t\tDouble CroppingTop;\n\t\tDouble CroppingRight;\n\t\tDouble CroppingBottom;\n\n\t\tBoolean IsAdjustCursorSpeed;\n\t\tInt32 CursorScaling;\n\t\tDouble CustomCursorScaling;\n\t\tInt32 CursorInterpolationMode;\n\t\tBoolean IsAutoHideCursorEnabled;\n\t\tDouble AutoHideCursorDelay;\n\t\tString AutoHideCursorDelayText { get; };\n\n\t\tString LaunchParameters;\n\t\tInt32 DestAlignment;\n\t\tBoolean IsDirectFlipDisabled;\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/Resources.language-de.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Aktivierung</value>\n  </data>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Über</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Startseite</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Verzögertes skalieren</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>Abbrechen</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Drücke eine Tastenkombination, um diese Tastenkombination zu ändern</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Speichern</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>Über</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Startseite</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Erstellen</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Ungültige Verknüpfung</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>Neues Profil</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Neues Profil</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Nur Verknüpfungen, die mit der Windows-, Strg-, Alt- oder Umschalttaste starten, sind gültig.</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>Abbrechen</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Wähle ein Fenster</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Öffne ein Fenster, um ein Profil zu erstellen</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profile</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>An</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Skalierungs Konfiguration</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Hell</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Verzögerung in Sekunden</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Skalierungs Konfiguration</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Erweitert</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>Allgemein</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Speicherort der Konfigurationsdatei öffnen</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Dunkel</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Weitere Optionen</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>Du brauchst Administrationsrechte, um diese Einstellung zu nutzen</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>Immer als Administrator ausführen</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Herunterladen und installieren</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Kopiere von</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Sprache</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>Magpie wird im Hintergrund weiterlaufen, nach dem das Fenster geschlossen wurde</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>App in der Taskleiste anzeigen</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Design</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>Regelmäßig nach Aktualisierungen suchen</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>3D Spielmodus</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>Automatisch skalieren, wenn im Vordergrund</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>Aufnahmemethode</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>Bevorzugte Bildschirme</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>Alle Bildschirme</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>Bildschirm, der dem Quellfenster am nächsten ist</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>Bildschirme, die vom Quellfenster durchschnitten werden</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>Skalierungsmodus</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Starten</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Weitere Optionen</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>Löschen</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Löschen</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>Datenpfad öffnen</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Sind Sie sicher, dass Sie dieses Profil löschen möchten?</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Umbenennen</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>Grafikkarte</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Fehler</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Versionshinweise</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>Download fehlgeschlagen</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Downloaden und installieren</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>Entwicklermodus ist aktiviert.</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Skalierungsfaktor</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>Bilinear</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>Nearest-neighbor</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>Keine Skalierung</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>Wie Quellfenster</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>Standard</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>Quellfenster</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Bereits in Nutzung</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Windows Standard</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Portable mode</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Beim Starten öffnen</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>Starten</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>Exportieren</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>Importieren</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Versionshinweise</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>Erinnere mich später</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Github repository</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Parameter</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Weitere Optionen</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Löschen</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Runter</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Umbenennen</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Umbenennen</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>Effekt hinzufügen</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Löschen</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>Es wird von den folgenden Profilen verwendet:</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Sind Sie sicher, dass Sie diesen Skalierungsmodus löschen wollen?</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Aufwärts bewegen</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>Ziehen zum Neuordnen</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>Neuer Skalierungsmodus</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Neuer Skalierungsmodus</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Skalierung</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Kopieren von</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>keiner</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Erstellen</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>Höhe (Skalierungsfaktor)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>Höhe (Pixel)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>Breite (Skalierungsfaktor)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>Breite (Pixel)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>Typ</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>Absolut</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>Einstellen der Größe nach der Skalierung</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>Faktor</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Füllen</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>Füllt den Bildschirm aus, das Bild könnte gestreckt werden</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>Einstellen des Skalierungsfaktors nach dem proportionalen Ausfüllen des Bildschirms</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>Allgemein</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>Umbenennen</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>Anpassen</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Umsortieren</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Runter</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Hoch</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Umsortieren</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>Keiner</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>Leistung</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Feedback</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Diskussionen</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Einen Fehler melden</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Eine Funktion vorschlagen</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Prüfen Sie auf Aktualisierungen der Vorabversion</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Automatisch nach Updates suchen</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Nach Updates suchen</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>Suche nach Updates fehlgeschlagen, bitte versuchen Sie es später noch einmal</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Suche nach Updates</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>Abbrechen</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Erneut versuchen</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} ist verfügbar</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie ist auf dem neuesten Stand</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>Downloading</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Installieren</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>Erweitert</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>DirectFlip deaktivieren</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>Mauszeiger</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>Anpassen der Mauszeigergeschwindigkeit während der Skalierung</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>Interpolationsalgorithmus</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Benutzerdefiniert</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Beschränkt auf Grafikerfassung und Desktopduplikation</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>Titelleiste aufnehmen</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>Benutzerdefiniertes Zuschneiden</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>Unten</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>Links</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>px</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>Rechts</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>Oben</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>Bringt eine kleine Leistungssteigerung. Allerdings müssen die Effekte jedes Mal neu kompiliert werden, wenn ihre Parameter geändert werden</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>Effektparameter inline machen</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>Benachrichtigungen und Pop-ups von bestimmten Anwendungen werden blockiert</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>Bei Skalierung exklusiven Vollbild simulieren</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>Diese Einstellungen sind nur für Entwicklung gedacht</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>Entwickleroptionen</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>Debug-Modus</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>Effektcache deaktivieren</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Schließen</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Magpie Neustarten</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>Unbekannter Effekt</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>Einige Effekte können nicht geparst werden</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>Skalierungsmodi exportieren</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>Skalierungsmodi importieren</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Einstellungen aktualisieren</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>Startparameter</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>Profiler</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>Aufnahmemethode</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>Begrenzen</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>Deckkraft</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>Zu Effekten wechseln</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>Zu passes wechseln</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>Gesamt</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>Schrift-Cache deaktivieren</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>Skalieren von maximierten oder ausfüllenden Fenstern zulassen</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>JSON Datei</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>Ausführbare Datei für den Start austauschen</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>Ausführbare Datei</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>Wählen Sie die ausführbare Datei, um das Programm zu starten</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>Quellcode beim Parsen von Effekten speichern</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>Warnungen beim Kompilieren von Effekten als Fehler betrachten</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Speicherort der Konfigurationsdatei:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>Die Konfigurationsdatei hat kein gültiges JSON Format</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>Konfigurationsdatei konnte nicht geparst werden</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>Hauptfenster</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>Konfigurationsdatei konnte nicht gelesen werden</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>Schließen</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Windows Standard</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>Damit die Änderung wirksam wird, ist ein Neustart erforderlich</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} ist verfügbar</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Andere Links</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Beitragsrichtlinien</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>FAQ</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>Lizenz</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Löschen</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>Drag and drop wird bei der Ausführung als Administrator nicht unterstützt</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Runter</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Hoch</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>Einstellen des Skalierungsfaktors relativ zum Eingabebild</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>Voreinstellungen</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>Freischalten</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Timings</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>Commit</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>Dynamische Erkennung</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>Bildratenbegrenzer</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>Immer</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>Dynamisch</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>Statistik für die dynamische Erkennung aktivieren</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>Sie müssen Administratorrechte besitzen, um diese Einstellung zu ändern</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>Touch-Unterstützung aktivieren</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>Wenn die Touch-Unterstützung fehlschlägt, fordert Magpie möglicherweise Administratorrechte an, um die Skalierung zu reparieren.</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>Bildrate</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>Diese Option ist mit einigen älteren Spielen nicht kompatibel. Bitte verwenden Sie es mit Vorsicht.</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>Maximale Bildrate</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>Erfahre mehr</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>Touch-Unterstützung</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>Doppelte Bild Erkennung</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>Nie</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>Touch-Unterstützung konnte nicht aktiviert werden.</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>Der Skalierungsmodus ist ungültig.</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>Skalierung dieses Fensters wird nicht unterstützt.</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>Skalierung fehlgeschlagen</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>Minimale Bildwiederholrate</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>Skalierung von maximierten oder vollbild Fenstern ist deaktiviert. Du kannst dies in den Einstellungen auf der Startseite ändern</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>Magpie muss als Administrator gestartet werden um dieses Fenster zu skalieren</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-en-US.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>About</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Activation</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Home</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Delayed scaling</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>Cancel</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Delay in seconds</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>Cancel</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Press a combination of keys to change this shortcut</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Already in use</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Invalid shortcut</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Save</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Only shortcuts that starts with Windows key, Ctrl, Alt or Shift are valid.</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>About</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>Defaults</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Home</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>New profile</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Select a window</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Copy from</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Create</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Open a new window to create a profile</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>New profile</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profiles</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Scaling modes</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Scaling modes</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Advanced</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>General</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Language</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Windows default</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Portable mode</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Open configuration file location</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Run at startup</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>Magpie will continue to run in the background after the main window is closed</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>Display the app on the system tray</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Theme</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Dark</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Windows default</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Light</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>On</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>Launch</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>Export</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>Import</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>More options</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>You need to run as administrator to use this setting</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>Always run as administrator</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>Check for updates periodically</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Download and install</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Release notes</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>Remind me later</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} is available</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Other links</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Contribution guidelines</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>FAQ</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>License</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Github repository</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Parameters</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>More options</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Delete</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Move down</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Move up</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Rename</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Rename</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>Add effect</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Delete</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Delete</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>It is being used by the following profiles:</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Are you sure you want to delete this scaling mode?</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>Drag and drop is not supported when running as administrator</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>Drag to reorder</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Move down</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Move up</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>New scaling mode</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>New scaling mode</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Scale</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Copy from</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>None</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Create</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>Height (scale factor)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>Height (pixels)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>Width (scale factor)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>Width (pixels)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>Type</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>Absolute</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>Set the size after scaling</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>Factor</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>Set the scale factor relative to the input image</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Fill</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>Fills screen, image may be stretched</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>Fit</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>Set the scale factor after filling the screen with proportional scaling</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>General</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>3D game mode</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>Auto scale when in foreground</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>Capture method</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>Preferred monitors</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>All monitors</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>Monitor closest to the source window</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>Monitors intersected by the source window</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>Scaling mode</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Launch</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>More options</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>Delete</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Delete</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Are you sure you want to delete this profile?</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>Open program location</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>Rename</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Rename</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Reorder</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Move down</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Move up</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Reorder</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>None</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>Performance</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>Graphics card</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Feedback</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Discussions</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Report a bug</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Request a feature</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Check for preview updates</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Check for updates automatically</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Check for updates</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>Failed to check for updates, please try again later</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Checking for updates</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>Cancel</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Download and install</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Release notes</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Try again</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} is available</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie is up to date</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>Download failed</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>Downloading</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Installing</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>Advanced</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>Disable DirectFlip</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>Cursor</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>Adjust cursor speed while scaled</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>Interpolation algorithm</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>Bilinear</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>Nearest-neighbor</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Scale factor</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Custom</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>No scaling</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>Same as source window</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>Default</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>Source window</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Limited to Graphics Capture and Desktop Duplication</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>Capture title bar</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>Custom cropping</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>Bottom</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>Left</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>px</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>Right</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>Top</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>Gives a small performance boost. However, effects must be recompiled each time their parameters are changed</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>Make effect parameters inline</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>Applies only to fullscreen scaling. Suppresses certain app notifications and pop-ups when enabled</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>Simulate exclusive fullscreen when scaling</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Error</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>These settings are for development use only</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>Developer options</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>Debug mode</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>Disable effect cache</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>Save shader source code when parsing effects</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>Treat warnings as errors when compiling effects</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Exit</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Configuration file location:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>Configuration file is not a valid JSON</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>Failed to parse configuration file</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>Failed to read configuration file</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>Exit</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>Main window</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>A restart is required for the change to take effect</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Restart Magpie</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>Unknown effect</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>Some effects cannot be parsed</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>Export scaling modes</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>Import scaling modes</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Update settings</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>Launch parameters</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>Profiler</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>Capture method</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>Lock</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>Opacity</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>Unlock</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Timings</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>Switch to effects</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>Switch to passes</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>Total</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>Disable font cache</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>Allow scaling maximized or fullscreen windows</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>JSON file</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>Change the executable file for launching</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>Executable file</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>Choose the executable file to launch the program</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>Frame rate limiter</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>Maximum frame rate</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>Commit</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>Developer mode is enabled.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>Duplicate frame detection</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>Always</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>Dynamic</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>Never</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>Enable statistics for dynamic detection</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>Dynamic detection</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>Frame rate</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>Enable touch support</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>You'll need to provide administrator privileges to change this setting</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>Learn more</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>Touch support</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>If touch support fails, Magpie may request administrator privileges before scaling to perform repairs.</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>This option is not compatible with some older games. Please use it with caution.</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>Scaling mode is invalid.</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>Failed to enable touch support.</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>Scaling of this window is not supported.</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>Scaling of maximized or fullscreen windows is disabled. You can change this setting on the Home page.</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>Magpie needs to be run as an administrator to scale this window.</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>Please refer to the logs for more details.</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>An error occurred while capturing this window. Please try using a different capture method.</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>The current graphics card does not support ID3D11Device5::CreateFence. Please try switching the graphics card or updating the drivers.</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>Scaling failed</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>No compatible graphics card was found, so CPU rendering will be used instead. Performance may not meet expectations.</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>Minimum frame rate</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>Stabilizes GPU frequency to reduce stuttering, but may lead to higher power consumption</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>Disable the use of FP16 in shaders</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>Benchmark mode</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>Fill with application name</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>Fill with process name</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>Fill with window title</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>Copy</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>Cut</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>Paste</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>Redo</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>Select All</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>Undo</value>\n  </data>\n  <data name=\"Message_BannedInWindowedMode\" xml:space=\"preserve\">\n    <value>Windowed scaling of this window is not supported.</value>\n  </data>\n  <data name=\"Message_InvalidCropping\" xml:space=\"preserve\">\n    <value>Failed to apply custom cropping.</value>\n  </data>\n  <data name=\"Home_TouchSupport.Description\" xml:space=\"preserve\">\n    <value>Due to system security restrictions, Magpie requires UIAccess privilege to support touch input.</value>\n  </data>\n  <data name=\"Home_Activation.Description\" xml:space=\"preserve\">\n    <value>Press the shortcut to scale or stop scaling the foreground window.</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling.Header\" xml:space=\"preserve\">\n    <value>Fullscreen scaling shortcut</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Fullscreen scaling shortcut</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Windowed scaling shortcut</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Windowed scaling shortcut</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Description\" xml:space=\"preserve\">\n    <value>Applies only to fullscreen scaling</value>\n  </data>\n  <data name=\"Home_Toolbar.Description\" xml:space=\"preserve\">\n    <value>The toolbar appears at the top of the scaled window, providing features like FPS display and screenshot capture. In windowed mode, it also allows dragging the scaled window.</value>\n  </data>\n  <data name=\"Home_Toolbar.Header\" xml:space=\"preserve\">\n    <value>Toolbar</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState.Header\" xml:space=\"preserve\">\n    <value>Initial toolbar state</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AlwaysShow.Content\" xml:space=\"preserve\">\n    <value>Always show</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AutoHide.Content\" xml:space=\"preserve\">\n    <value>Auto-hide</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Off.Content\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle.Header\" xml:space=\"preserve\">\n    <value>Toolbar state toggle shortcut</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Toolbar state toggle shortcut</value>\n  </data>\n  <data name=\"Message_ToolbarIn3DGameMode\" xml:space=\"preserve\">\n    <value>The toolbar is not supported in 3D game mode.</value>\n  </data>\n  <data name=\"Message_ToolbarNewState\" xml:space=\"preserve\">\n    <value>Toolbar: {}</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close\" xml:space=\"preserve\">\n    <value>Stop Scaling</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Demo\" xml:space=\"preserve\">\n    <value>ImGui Demo Window</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Pin\" xml:space=\"preserve\">\n    <value>Pin Toolbar</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot\" xml:space=\"preserve\">\n    <value>Take Screenshot</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Profiler\" xml:space=\"preserve\">\n    <value>Profiler Window</value>\n  </data>\n  <data name=\"Message_Windowed3DGameMode\" xml:space=\"preserve\">\n    <value>Windowed scaling is not supported in 3D game mode.</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Description\" xml:space=\"preserve\">\n    <value>Enables optimizations for 3D games, but is incompatible with the toolbar and windowed scaling</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory.Header\" xml:space=\"preserve\">\n    <value>Screenshot save directory</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory_Change.Content\" xml:space=\"preserve\">\n    <value>Change</value>\n  </data>\n  <data name=\"Dialog_SetlectScreenshotSaveDirectory_Title\" xml:space=\"preserve\">\n    <value>Select a directory to save screenshots</value>\n  </data>\n  <data name=\"Message_ScreenshotSaved\" xml:space=\"preserve\">\n    <value>Screenshot saved as {}</value>\n  </data>\n  <data name=\"Message_ScreenshotFailed\" xml:space=\"preserve\">\n    <value>Screenshot failed.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_Description\" xml:space=\"preserve\">\n    <value>Right-click to export intermediate result</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_PopupTitle\" xml:space=\"preserve\">\n    <value>Export intermediate result</value>\n  </data>\n  <data name=\"Profile_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Windowed scaling</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Initial scale factor</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Auto.Content\" xml:space=\"preserve\">\n    <value>Auto</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Custom</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Description\" xml:space=\"preserve\">\n    <value>Helps avoid certain compatibility issues but may significantly increase latency</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Disabled.Content\" xml:space=\"preserve\">\n    <value>Disabled</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Fullscreen.Content\" xml:space=\"preserve\">\n    <value>Fullscreen scaling</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Windowed.Content\" xml:space=\"preserve\">\n    <value>Windowed scaling</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Description\" xml:space=\"preserve\">\n    <value>Applies to fullscreen scaling only</value>\n  </data>\n  <data name=\"Home_TouchSupport_Warn.Title\" xml:space=\"preserve\">\n    <value>Toolbar is not compatible with touch input.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close_Description\" xml:space=\"preserve\">\n    <value>Right-click to close toolbar</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToFullscreen\" xml:space=\"preserve\">\n    <value>Switch to Fullscreen Scaling</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToWindowed\" xml:space=\"preserve\">\n    <value>Switch to Windowed Scaling</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Fullscreen.Header\" xml:space=\"preserve\">\n    <value>Fullscreen scaling</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Windowed.Header\" xml:space=\"preserve\">\n    <value>Windowed scaling</value>\n  </data>\n  <data name=\"Message_ExportScalingModesFailed\" xml:space=\"preserve\">\n    <value>Failed to export scaling modes.</value>\n  </data>\n  <data name=\"Message_ImportScalingModesFailed\" xml:space=\"preserve\">\n    <value>Failed to import scaling modes.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_LocateLogs.Header\" xml:space=\"preserve\">\n    <value>Open logs location</value>\n  </data>\n  <data name=\"Message_WindowedDesktopDuplication\" xml:space=\"preserve\">\n    <value>Windowed scaling is not supported with Desktop Duplication capture.</value>\n  </data>\n  <data name=\"Profile_General_DesktopDuplicationWarning.Title\" xml:space=\"preserve\">\n    <value>This capture method is incompatible with windowed scaling.</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Description\" xml:space=\"preserve\">\n    <value>The main window will not appear if \"Display the app on the system tray\" is enabled</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Description\" xml:space=\"preserve\">\n    <value>Scale the foreground window after {}s</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Start\" xml:space=\"preserve\">\n    <value>Start</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Fullscreen\" xml:space=\"preserve\">\n    <value>Scale after {}s (Fullscreen)</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Windowed\" xml:space=\"preserve\">\n    <value>Scale after {}s (Windowed)</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Minimize\" xml:space=\"preserve\">\n    <value>Minimize</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide.Header\" xml:space=\"preserve\">\n    <value>Auto-hide cursor when idle</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide_Delay.Header\" xml:space=\"preserve\">\n    <value>Hide delay in seconds</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Description\" xml:space=\"preserve\">\n    <value>Applies only to fullscreen scaling</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Header\" xml:space=\"preserve\">\n    <value>Output alignment</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomCenter.Content\" xml:space=\"preserve\">\n    <value>Bottom center</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomLeft.Content\" xml:space=\"preserve\">\n    <value>Bottom left</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomRight.Content\" xml:space=\"preserve\">\n    <value>Bottom right</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Center.Content\" xml:space=\"preserve\">\n    <value>Center</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Left.Content\" xml:space=\"preserve\">\n    <value>Left</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Right.Content\" xml:space=\"preserve\">\n    <value>Right</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopCenter.Content\" xml:space=\"preserve\">\n    <value>Top center</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopLeft.Content\" xml:space=\"preserve\">\n    <value>Top left</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopRight.Content\" xml:space=\"preserve\">\n    <value>Top right</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableTopmost.Content\" xml:space=\"preserve\">\n    <value>Disable always-on-top</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-es.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Perfiles</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>Monitor más cercano a la ventana de origen</value>\n  </data>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Acerca de</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Abre una nueva ventana para crear un perfil</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Activación</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Escalado retrasado</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Espera en segundos</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Presiona una combinación de teclas para cambiar este atajo</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Ya en uso</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Guardar</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Solo las combinaciones de teclas que comienzan con la tecla de Windows, Ctrl, Alt o Shift son válidos.</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>Predeterminado</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Inicio</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>Nuevo perfil</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Copiado de</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Crear</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Nombre</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Nuevo perfil</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Configuración de escalado</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Avanzado</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>General</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Idioma</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Modo portable</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Del sistema</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Abrir la ubicación del archivo de configuración</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Ejecutar en el arranque</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>Magpie continuará ejecutándose en segundo plano después de cerrar la ventana principal</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>Mostrar la aplicación en la bandeja del sistema</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Oscuro</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Del sistema</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>Encendido</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>Lanzamiento</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>Exportar</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mas opciones</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>Ejecutar siempre como administrador</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>Buscar actualizaciones periódicamente</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Descargar e instalar</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>Recuérdame más tarde</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} no es valido</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>Licencia</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Parámetros</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Borrar</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Mover hacia abajo</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Mover hacia arriba</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Renombrar</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>Guardar</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Renombrar</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>Agregar efecto</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Borrar</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>¿Está seguro de que desea eliminar este modo de escalado?</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>Arrastrar y soltar no es compatible cuando se ejecuta como administrador</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mover hacia arriba</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Copiar de</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>Ninguno</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Crear</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Nombre</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>Ancho (píxeles)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>Tipo</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>Establecer el tamaño después de escalar</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>Factor</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>Adaptar</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>General</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>Modo de juego 3D</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>Escalar de manera automática cuando está en primer plano</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>Todos los monitores</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>Monitores intersectados por la ventana de origen</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>Modo de escalado</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Iniciar</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mas opciones</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>Borrar</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Borrar</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>¿Está seguro de que desea eliminar este perfil?</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>Renombrar</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>Guardar</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Mover hacia abajo</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Mover hacia arriba</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Reordenar</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>Ninguno</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>Rendimiento</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>Tarjeta grafica</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Reportar un error</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Buscar actualizaciones de vista previa</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Buscar actualizaciones</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>Error al buscar actualizaciones, inténtalo de nuevo más tarde</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Comprobando actualizaciones</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Descargar e instalar</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Intentar otra vez</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} está disponible</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>Descargar fallida</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>Descargando</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>Avanzado</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>Deshabilitar DirectFlip</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>Ajustar la velocidad del cursor mientras se escala</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>Algoritmo de interpolación</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>Bilineal</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Factor de escalado</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Personalizado</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>Por defecto</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>Ventana de origen</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>Recorte personalizado</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>Abajo</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>px</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>Izquierda</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>Arriba</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>Hacer que los parámetros de efecto estén en línea</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>Simule pantalla completa exclusiva al escalar</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Error</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>Modo de depuración</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>Guarde el código fuente al analizar los efectos</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>Tratar las advertencias como errores al compilar efectos</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Cerrar</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>El archivo de configuración no es un JSON válido</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>Error al analizar el archivo de configuración</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>Cerrar</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>Ventana principal</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Reiniciar Magpie</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>Efecto desconocido</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>Algunos efectos no se pueden analizar</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>Exportar modos de escalado</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>Importar modos de escalado</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Ajustes de actualizaciones</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Versión</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Inicio</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Seleccione una ventana</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Combinación de teclas no válida</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>Acerca de</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Configuración de escalado</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Claro</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mover hacia abajo</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Renombrar</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>Importar</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Revisar actualizaciones automaticamente</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>Necesita ejecutar como administrador para usar esta configuración</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>Está siendo utilizado por los siguientes perfiles:</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>Absoluto</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Notas de lanzamiento</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Pautas de contribución</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Repositorio Github</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>Arrastre para reordenar</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Escalado</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Otros enlaces</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mas opciones</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>Preguntas más frecuentes</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Borrar</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>Nuevo modo de escalado</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Nuevo modo de escalado</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>Altura (factor de escala)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>Altura (píxeles)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>Ancho (factor de escala)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>Establecer el factor de escala relativo a la imagen de entrada</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Llenar</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>Establecer el factor de escala después de llenar la pantalla con escala proporcional</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>Método de captura</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>Llena la pantalla, la imagen puede estirarse</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>Monitores preferidos</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>Abrir ubicación del programa</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Reordenar</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Solicitar una característica</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>Cursor</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Instalando</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Feedback</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>Lo mismo que la ventana de origen</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Limitado a captura de gráficos y duplicación de escritorio</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>Capturar barra de título</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Discusiones</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Notas de lanzamiento</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie está al día</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>interpolación del vecino más cercano</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>Sin escalado</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>Derecha</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>Da un pequeño impulso al rendimiento. Sin embargo, los efectos deben volver a compilarse cada vez que se cambien sus parámetros</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>Se bloquearán las notificaciones y ventanas emergentes de ciertas aplicaciones</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>Esta configuración es solo para uso de desarrollo</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>Opciones de desarrollador</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>Desactivar caché de los efectos</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Ubicación del archivo de configuración:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>Error al leer el archivo de configuración</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>Es necesario reiniciar para que el cambio surta efecto</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>Parámetros del lanzador</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>Monitor de rendimiento</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>Método de captura</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>Bloquear</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>Opacidad</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>Desbloquear</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Tiempos</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>Cambiar a efectos</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>Cambiar a pases</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>Desactivar la caché de fuentes</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>Total</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>Archivo JSON</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>Archivo ejecutable</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>Permitir escalar ventanas maximizadas o de pantalla completa</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>Cambiar el archivo ejecutable para el inicio</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>Elija el archivo ejecutable para iniciar el programa</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>El modo de desarrollador está habilitado.</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>Confirmación</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>Limitador de Fotogramas</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>Fotogramas máximos</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>Detección de fotograma duplicado</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>Siempre</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>Dinámico</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>Nunca</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>Activar estadísticas para detección dinámica</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>Detección dinámica</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>Velocidad de Fotogramas</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>Activar soporte táctil</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>Tendrás que proveer privilegios de administrador para cambiar esta opcion</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>Aprender más</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>Soporte táctil</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>Si el soporte táctil falla, Magpie puede solicitar privilegios de administrador antes de escalar para realizar reparaciones.</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>Esta opción no es compatible con algunos juegos antiguos. Úsela con precaución.</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>Modo de escalado inválido.</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>Falló la integración de soporte táctil.</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>El escalado de esta ventana no esta disponible.</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>El escalado de ventanas maximizadas o en pantalla completa está desactivado. Puedes cambiar este ajuste en la página de Inicio.</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>Magpie necesita ejecutarse como administrador para escalar esta ventana.</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>Por favor revisa los logs para mas detalles.</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>Ocurrió un error mientras se capturaba esta ventana. Por favor intenta usar un método de captura diferente.</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>La tarjeta gráfica actual no soporta ID3D11Device5::CreateFence. Por favor intenta usar otra tarjeta gráfica o actualizar los drivers.</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>Escalado fallido</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>No se encontraron tarjetas gráficas compatibles, por lo que se usará renderizado de CPU. El rendimiento puede no ser el esperado.</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>Tasa de cuadros mínima</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>Estabiliza la frecuencia de la GPU para reducir el stuttering, pero puede aumentar el consumo energético</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>Desactiva el uso de FP16 en shaders</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>Modo de prueba de rendimiento</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>Completar con nombre de la aplicación</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>Completar con nombre del proceso</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>Completar con título de la ventana</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>Copiar</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>Cortar</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>Pegar</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>Rehacer</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>Seleccionar Todo</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>Deshacer</value>\n  </data>\n  <data name=\"Message_BannedInWindowedMode\" xml:space=\"preserve\">\n    <value>El escalado de esta ventana en modo ventana no está soportado.</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling.Header\" xml:space=\"preserve\">\n    <value>Atajo de escalado en pantalla completa</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Atajo de escalado en pantalla completa</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Atajo de escalado en modo ventana</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Atajo de escalado en modo ventana</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Description\" xml:space=\"preserve\">\n    <value>Se aplica solamente al escalado en pantalla completa</value>\n  </data>\n  <data name=\"Home_Toolbar.Description\" xml:space=\"preserve\">\n    <value>La barra de herramientas aparece sobre la ventana escalada, brindando características como mostrar FPS y captura de pantalla. En modo de ventana, también permite arrastrar la ventana escalada.</value>\n  </data>\n  <data name=\"Home_Toolbar.Header\" xml:space=\"preserve\">\n    <value>Barra de herramientas</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState.Header\" xml:space=\"preserve\">\n    <value>Estado inicial de barra de herramientas</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AlwaysShow.Content\" xml:space=\"preserve\">\n    <value>Mostrar siempre</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AutoHide.Content\" xml:space=\"preserve\">\n    <value>Ocultar automáticamente</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Off.Content\" xml:space=\"preserve\">\n    <value>Desactivado</value>\n  </data>\n  <data name=\"Message_ToolbarIn3DGameMode\" xml:space=\"preserve\">\n    <value>La barra de herramientas no está soportada en modo de juego 3D.</value>\n  </data>\n  <data name=\"Message_ToolbarNewState\" xml:space=\"preserve\">\n    <value>Barra de herramientas: {}</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close\" xml:space=\"preserve\">\n    <value>Detener Escalado</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Demo\" xml:space=\"preserve\">\n    <value>Ventana de demostración ImGui</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Pin\" xml:space=\"preserve\">\n    <value>Anclar barra de herramientas</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot\" xml:space=\"preserve\">\n    <value>Tomar captura de pantalla</value>\n  </data>\n  <data name=\"Message_Windowed3DGameMode\" xml:space=\"preserve\">\n    <value>El escalado en modo ventana no está soportado en modo de juego 3D.</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Description\" xml:space=\"preserve\">\n    <value>Activa optimizaciones para juegos 3D, pero no es compatible con la barra de herramientas y el escalado en modo ventana</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory.Header\" xml:space=\"preserve\">\n    <value>Ruta de guardado de capturas de pantalla</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory_Change.Content\" xml:space=\"preserve\">\n    <value>Cambiar</value>\n  </data>\n  <data name=\"Dialog_SetlectScreenshotSaveDirectory_Title\" xml:space=\"preserve\">\n    <value>Selecciona una ruta para guardar capturas de pantalla</value>\n  </data>\n  <data name=\"Message_ScreenshotSaved\" xml:space=\"preserve\">\n    <value>Captura guardada como {}</value>\n  </data>\n  <data name=\"Message_ScreenshotFailed\" xml:space=\"preserve\">\n    <value>Captura fallida.</value>\n  </data>\n  <data name=\"Profile_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Escalado en modo de ventana</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Factor inicial de escalado</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Auto.Content\" xml:space=\"preserve\">\n    <value>Auto</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Personalizado</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-fr.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>Annuler</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>Annuler</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Déjà en cours d'utilisation</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Seuls les raccourcis commençant par la touche Windows, Ctrl, Alt ou Maj sont valides.</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>Défaut</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Accueil</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>Nouveau profil</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Sélectionnez une fenêtre</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Nom</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Configuration de mise a l'échelle</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>Afficher l'application sur la barre des taches</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Thème</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>Le fichier de configuration n'est pas un fichier JSON valide</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>Effet inconnu</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Mettre à jour les paramètres</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>Paramètres de lancement</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>Méthode de capture</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>Opacitée</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>Déverrouiller</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Activation</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>Basculer vers les effets</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>Total</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>Désactiver le cache des polices</value>\n  </data>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>À propos</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Délai en secondes</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>A propos</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Mise à l'échelle retardée</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Appuyez sur une combinaison de touches pour modifier ce raccourci</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Créer</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Sauvegarder</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profils</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Copier depuis</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Accueil</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Raccourci invalide</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Ouvrez une nouvelle fenêtre pour créer un profil</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Nouveau profil</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Configuration de mise a l'échelle</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Avancée</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>Général</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Langues</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Fenêtre par defaut</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Lancer au démarrage</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>Magpie continuera à fonctionner en arrière-plan après la fermeture de la fenêtre principale</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Mode portable</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Ouvrez l'emplacement du fichier de configuration</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Sombre</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Clair</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Fenêtre par defaut</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Désactivé</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>On</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>Lancez</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>Importer</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Plus d'options</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>Exporter</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>Impossible de lire le fichier de configuration</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>Un redémarrage est nécessaire pour que la modification prenne effet</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Redémarrer Magpie</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>Certains effet n'ont pas pu être analysés</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>Importer les modes de mise a l'échelle</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Quitter</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Minutage</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Emplacement du fichier de configuration :\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>Impossible d'analyser le fichier de configuration</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>Quitter</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>Fenêtre principale</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>Exporter les modes de mise à l'échelle</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>Profiler</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>Vérouiller</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>Basculer vers les passes</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>Mode développeur est activer.</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>Ajuster</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>Ces paramètres sont destinés à être utilisés pour le développement uniquement</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Dépôt Github</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>Mode de mise à l'échelle</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>Le bas</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>Mise à l'échelle automatique au premier plan</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Lancer</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>Permet d'améliorer légèrement les performances. Cependant, les effets doivent être recompilés chaque fois que leurs paramètres sont modifiés</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>Écran le plus proche de la fenêtre source</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>Fichier exécutable</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>Me le rappeler plus tard</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>Définir le facteur d'échelle par rapport à l'image d'entrée</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Vous êtes sûr de vouloir supprimer ce profil ?</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Notes de mise à jour</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>Désactiver le cache d'effet</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Signaler un bug</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>Fichier JSON</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Plus d'options</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>Écran coupés par la fenêtre source</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>Absolu</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>Ouvrir l'emplacement du programme</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>Ajouter effet</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Plus d'options</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>Mode jeux 3D</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>Pas de mise à l'échelle</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>Sauvegarde du code source lors de l'analyse des effets</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>Facteur</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Créer</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>Supprimer</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>Vérifier périodiquement les mises à jour</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>Barre de titre de la capture</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Monter</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>Tous les écrans</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>Identique à la fenêtre source</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>Générale</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Personnalisé</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Supprimer</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>Aucun</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>Curseur</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>Ajuster la vitesse du curseur lors de la mise à l'échelle</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>Commit</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Demander une fonctionnalité</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>Modifier le fichier exécutable pour le lancement</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>Aucun</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Autres liens</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>La droite</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>Définir le facteur d'échelle après avoir rempli l'écran avec une échelle proportionnelle</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Descendre</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>Mode debug</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>Par défaut</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>Avancée</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>Carte graphique</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Télécharger et installer</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>Faire glisser pour réorganiser</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>Largeur (facteur de mise à l'échelle)</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Supprimer</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>Algorithme d'interpolation</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Télécharger et installer</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>Définir la taille après la mise à l'échelle</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>Type</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>px</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>S'applique seulement en plein écran. Les notifications et les fenêtres contextuelles de certaines applications seront bloquées</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Renommer</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>La gauche</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>Recadrage personnalisé</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>Remplit l'écran, l'image peut être étirée</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>Hauteur (facteur de mise à l'échelle)</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Renommer</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>Renommer</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>Options développeur</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>Choisissez le fichier exécutable pour lancer le programme</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Nom</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} est disponible</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Renommer</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Descendre</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} est disponible</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Monter</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>Méthode de capture</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Monter</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>Téléchargement échoué</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Recherche de mises à jour</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>Traiter les avertissements comme des erreurs lors de la compilation des effets</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Installation</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>Licence</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Discussions</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Remplir</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>Fenêtre source</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Vérifier les mises à jour</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Réessayer</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Erreur</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Vérifier automatiquement les mises à jour</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Paramètres</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Nouveau mode de mise à l'échelle</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie est à jour</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>Bilinéaire</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>Annuler</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Facteur de mise à l'échelle</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Feedback</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Réorganisation</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>Écrans préférés</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Supprimer</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>Performance</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>Vous devez exécuter l'application en mode administrateur pour utiliser ce paramètre</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Copie de</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Réorganisation</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Êtes-vous sûr de vouloir supprimer ce mode de mise à l'échelle ?</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>Toujours exécuter en mode administrateur</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>Il est utilisé par les profils suivants :</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>Le haut</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>Nouveau mode de mise à l'échelle</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Notes de mise à jour</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>FAQ</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>Voisin le plus proche</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>Le glisser-déposer n'est pas pris en charge lorsque l'utilisateur est un administrateur</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Limité à la capture graphique et à la duplication de bureau</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>Désactiver DirectFlip</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>Largeur (pixels)</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Supprimer</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Descendre</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>Permettre la mise à l'échelle des fenêtres maximisées ou en plein écran</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>Simuler l'exclusivité du plein écran lors de la mise à l'échelle</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>Téléchargement</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mise à l'échelle</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>Hauteur (pixels)</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>La vérification des mises à jour a échoué, veuillez réessayer plus tard</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Directives relatives aux contributions</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Vérifier les mises à jour prévue</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>Rendre les paramètres d'effet en ligne</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>Toujours</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>Activer les statistiques pour la détection dynamique</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>Dynamique</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>Jamais</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>Détection dynamique</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>Fréquence d'image</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>Cette option n'est pas compatible avec certains vieux jeus. A vos risques et périls.</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>Vous devez activer les privilèges administrateurs pour changer ce paramètre</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>Compatibilité tactile</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>En apprendre davantage</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>Limiteur de fréquence d'image</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>Fréquence d'image maximale</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>Détection d'image dupliquée</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>Activer la compatibilité tactile</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>Si la prise en charge tactile échoue, Magpie peut demander des privilèges d'administrateur avant de procéder à des réparations.</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>Le mode de mise à l'échelle est invalide.</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>La mise à l'échelle de cette fenêtre n'est pas supportée.</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>La mise à l'échelle des fenêtres maximisées ou en plein écran est désactivée. Vous pouvez changer cette préférence sur la page Accueil.</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>Erreur pendant l'activation du support tactile.</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>Magpie doit être lancé en tant qu'administrateur pour mettre cette fenêtre a l’échelle.</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>Inspectez les messages de log pour plus de détails.</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>Une erreur s'est produite pendant la capture de cette fenêtre. Essayez une méthode de capture différente.</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>Cette carte graphique ne supporte pas ID3D11Device5::CreateFence. Essayez de changer de carte graphique ou de mettre a jour les pilotes.</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>La mise à l'échelle a échouée</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>Aucune carte graphique compatible détectée, le CPU sera utilisé pour le rendu à la place. Les performances peuvent être décevantes.</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>Fréquence d'images minimale</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>Stabilise la fréquence du GPU pour réduire les saccades, mais peut engendrer une consommation d’énergie supérieure</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>Désactive l'utilisation de FP16 dans les shaders</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>Mode mesure de performance</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>Remplir avec le nom de l'application</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>Remplir avec le nom du processus</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>Remplir avec le titre de la fenêtre</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>Copier</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>Couper</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>Coller</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>Rétablir</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>Tout sélectionner</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>Annuler</value>\n  </data>\n  <data name=\"Message_BannedInWindowedMode\" xml:space=\"preserve\">\n    <value>Mise à l’échelle fenêtrée n'est pas supporté pour cette fenêtre.</value>\n  </data>\n  <data name=\"Message_InvalidCropping\" xml:space=\"preserve\">\n    <value>Erreur pendant le recadrage personnalisé.</value>\n  </data>\n  <data name=\"Home_TouchSupport.Description\" xml:space=\"preserve\">\n    <value>Du à des restrictions du système de sécurité, Magpie a besoin du privilege UIAccess pour le support tactile.</value>\n  </data>\n  <data name=\"Home_Activation.Description\" xml:space=\"preserve\">\n    <value>Utilisez le raccourcis pour activer ou désactiver la mise à l’échelle de la fenêtre au premier plan.</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling.Header\" xml:space=\"preserve\">\n    <value>Raccourcis pour mise à l’échelle plein écran</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Raccourcis pour mise à l’échelle plein écran</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Raccourcis pour mise à l’échelle fenêtrée</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Raccourcis pour mise à l’échelle fenêtrée</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Description\" xml:space=\"preserve\">\n    <value>S'applique uniquement à la mise à l’échelle plein écran</value>\n  </data>\n  <data name=\"Home_Toolbar.Header\" xml:space=\"preserve\">\n    <value>barre d'outils</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState.Header\" xml:space=\"preserve\">\n    <value>Etat initial de la barre d'outils</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AlwaysShow.Content\" xml:space=\"preserve\">\n    <value>Toujours montrer</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AutoHide.Content\" xml:space=\"preserve\">\n    <value>Cacher automatiquement</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Off.Content\" xml:space=\"preserve\">\n    <value>Désactivé</value>\n  </data>\n  <data name=\"Message_ToolbarIn3DGameMode\" xml:space=\"preserve\">\n    <value>La barre d'outils n'est pas supportée en mode de jeu 3D.</value>\n  </data>\n  <data name=\"Message_ToolbarNewState\" xml:space=\"preserve\">\n    <value>Barre d'outils : {}</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close\" xml:space=\"preserve\">\n    <value>Arrêter la mise à l’échelle</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot\" xml:space=\"preserve\">\n    <value>Prendre une capture d’écran</value>\n  </data>\n  <data name=\"Home_Toolbar.Description\" xml:space=\"preserve\">\n    <value>La barre d'outils apparaît en haut de la fenêtre redimensionnée et propose des fonctionnalités telles que l'affichage des IPS et la capture d'écran. En mode fenêtré, elle permet également de déplacer la fenêtre redimensionnée.</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle.Header\" xml:space=\"preserve\">\n    <value>Raccourcis de changement d'état de la barre d'outils</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Demo\" xml:space=\"preserve\">\n    <value>Fenêtre de Demo ImGui</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Pin\" xml:space=\"preserve\">\n    <value>Épingler la barre d'outils</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Profiler\" xml:space=\"preserve\">\n    <value>Fenêtre Profiler</value>\n  </data>\n  <data name=\"Message_Windowed3DGameMode\" xml:space=\"preserve\">\n    <value>La mise à l'échelle par fenêtrage n'est pas prise en charge en mode jeu 3D.</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Description\" xml:space=\"preserve\">\n    <value>Permet des optimisations pour les jeux 3D, mais est incompatible avec la barre d'outils et la mise à l'échelle en mode fenêtré</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory.Header\" xml:space=\"preserve\">\n    <value>Répertoire de sauvegarde des captures d'écran</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory_Change.Content\" xml:space=\"preserve\">\n    <value>Changer</value>\n  </data>\n  <data name=\"Dialog_SetlectScreenshotSaveDirectory_Title\" xml:space=\"preserve\">\n    <value>Choisissez un répertoire pour sauvegarder vos captures</value>\n  </data>\n  <data name=\"Message_ScreenshotSaved\" xml:space=\"preserve\">\n    <value>Capture d'écran enregistrée sous {}</value>\n  </data>\n  <data name=\"Message_ScreenshotFailed\" xml:space=\"preserve\">\n    <value>Échec de la capture d'écran.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_Description\" xml:space=\"preserve\">\n    <value>Cliquez avec le bouton droit pour exporter le résultat intermédiaire</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_PopupTitle\" xml:space=\"preserve\">\n    <value>Exporter le résultat intermédiaire</value>\n  </data>\n  <data name=\"Profile_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Mise à l'échelle en mode fenêtré</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor.Header\" xml:space=\"preserve\">\n    <value>facteur d'échelle initial</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Auto.Content\" xml:space=\"preserve\">\n    <value>Automatique</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Personnalisé</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Description\" xml:space=\"preserve\">\n    <value>Permet d'éviter certains problèmes de compatibilité, mais peut augmenter considérablement la latence</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Disabled.Content\" xml:space=\"preserve\">\n    <value>Désactivée</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Fullscreen.Content\" xml:space=\"preserve\">\n    <value>Mise à l'échelle plein écran</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Windowed.Content\" xml:space=\"preserve\">\n    <value>Mise à l'échelle par fenêtre</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Description\" xml:space=\"preserve\">\n    <value>S'applique uniquement à la mise à l'échelle en plein écran</value>\n  </data>\n  <data name=\"Home_TouchSupport_Warn.Title\" xml:space=\"preserve\">\n    <value>La barre d'outils n'est pas compatible avec les entrées tactiles.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close_Description\" xml:space=\"preserve\">\n    <value>Cliquez avec le bouton droit pour fermer la barre d'outils</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToFullscreen\" xml:space=\"preserve\">\n    <value>Passer en mode plein écran</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToWindowed\" xml:space=\"preserve\">\n    <value>Passer à la mise à l'échelle fenêtrée</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Fullscreen.Header\" xml:space=\"preserve\">\n    <value>Mise à l'échelle plein écran</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Windowed.Header\" xml:space=\"preserve\">\n    <value>Mise à l'échelle par fenêtre</value>\n  </data>\n  <data name=\"Message_ExportScalingModesFailed\" xml:space=\"preserve\">\n    <value>Échec de l'exportation des modes de mise à l'échelle.</value>\n  </data>\n  <data name=\"Message_ImportScalingModesFailed\" xml:space=\"preserve\">\n    <value>Échec de l'importation des modes de mise à l'échelle.</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Raccourci de basculement d'état de la barre d'outils</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_LocateLogs.Header\" xml:space=\"preserve\">\n    <value>Ouvrir l'emplacement des journaux</value>\n  </data>\n  <data name=\"Message_WindowedDesktopDuplication\" xml:space=\"preserve\">\n    <value>L'échelle de fenêtre n'est pas supportée avec la capture de la duplication de bureau.</value>\n  </data>\n  <data name=\"Profile_General_DesktopDuplicationWarning.Title\" xml:space=\"preserve\">\n    <value>Cette méthode de capture est incompatible avec la mise à l'échelle par fenêtre.</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Description\" xml:space=\"preserve\">\n    <value>La fenêtre principale n'apparaîtra pas si l'option «Afficher l'application sur la barre des taches» est activée</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Description\" xml:space=\"preserve\">\n    <value>Redimensionner la fenêtre au premier plan après {}s</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Start\" xml:space=\"preserve\">\n    <value>Commencer</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Fullscreen\" xml:space=\"preserve\">\n    <value>Mise à l'échelle après {}s (Plein écran)</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Windowed\" xml:space=\"preserve\">\n    <value>Mise à l'échelle après {}s (Fenêtré)</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Minimize\" xml:space=\"preserve\">\n    <value>Réduire</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide.Header\" xml:space=\"preserve\">\n    <value>Masquer automatiquement le curseur lorsqu'il est inactif</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide_Delay.Header\" xml:space=\"preserve\">\n    <value>Masquer le délai en secondes</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Description\" xml:space=\"preserve\">\n    <value>S'applique uniquement à la mise à l’échelle plein écran</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Header\" xml:space=\"preserve\">\n    <value>Alignement en sortie</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomCenter.Content\" xml:space=\"preserve\">\n    <value>Centre Bas</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomLeft.Content\" xml:space=\"preserve\">\n    <value>Centre Gauche</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomRight.Content\" xml:space=\"preserve\">\n    <value>Bas Droite</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Center.Content\" xml:space=\"preserve\">\n    <value>Centre</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Left.Content\" xml:space=\"preserve\">\n    <value>À gauche</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Right.Content\" xml:space=\"preserve\">\n    <value>À droite</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopCenter.Content\" xml:space=\"preserve\">\n    <value>Centré en haut</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopLeft.Content\" xml:space=\"preserve\">\n    <value>En haut à gauche</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopRight.Content\" xml:space=\"preserve\">\n    <value>En haut à droite</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableTopmost.Content\" xml:space=\"preserve\">\n    <value>Désactiver l'option «Toujours au premier plan»</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-hu.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\"></xsd:import>\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\"></xsd:element>\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\"></xsd:attribute>\n              <xsd:attribute name=\"type\" type=\"xsd:string\"></xsd:attribute>\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\"></xsd:attribute>\n              <xsd:attribute ref=\"xml:space\"></xsd:attribute>\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\"></xsd:attribute>\n              <xsd:attribute name=\"name\" type=\"xsd:string\"></xsd:attribute>\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\"></xsd:element>\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\"></xsd:element>\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\"></xsd:attribute>\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\"></xsd:attribute>\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\"></xsd:attribute>\n              <xsd:attribute ref=\"xml:space\"></xsd:attribute>\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\"></xsd:element>\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\"></xsd:attribute>\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Haladó</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Github tároló</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Ki</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>Rólunk</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Rendszerrel megegyező</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>Mégsem</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>Végrehajtható fájl</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>A konfigurációs fájl nem érvényes JSON</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Kilépés</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Kiadási megjegyzések</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Hiba jelentése</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>JSON Fájl</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Konfigurációs fájl helye:\n{}</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Létrehozás</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Időzítések</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Aktiválás</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Sötét</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Egyéni</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Törlés</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Kezdőlap</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Funkció kérése</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>Nincs</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Egyéb linkek</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>A konfigurációs fájl elemzése nem sikerült</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Kezdőlap</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Téma</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Letöltés és telepítés</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Ablak kiválasztása</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Nyelv</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>Importálás</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>Alapértelmezettek</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Verzió</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Késleltetett méretezés</value>\n  </data>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Rólunk</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Késleltetés másodpercben</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Mentés</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>Bal</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Világos</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Név</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Átnevezés</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} elérhető</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Már használatban</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Érvénytelen parancsikon</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>Letöltés meghiúsult</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>Mégsem</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Hozzájárulási iránymutatások</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Frissítések keresése...</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Telepítés</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>Be</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>Licenc</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>Új profil</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Beszélgetések</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Kitöltés</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Név</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Frissítések keresése</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Próbáld újra</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Hiba</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Másolás innen</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Frissítések automatikus keresése</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie naprakész</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>Mégse</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Visszajelzés</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Újrarendezés</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Kísérleti frissítések keresése</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Nyomja meg a billentyűkombinációt a parancsikon megváltoztatásához</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Megjelenési megjegyzések</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>GYIK</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Beállítások frissítése</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>Letöltés</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>A frissítések ellenőrzése nem sikerült, kérjük, próbálja meg később újra</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Csak a Windows , Ctrl, Alt vagy Shift billentyűvel kezdődő parancsikonok érvényesek.</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Új ablak megnyitása profil létrehozásához</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Új profil létrehozása</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profilok</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Méretezési módok</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Méretezési módok</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>Általános</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Windows alapértelmezett</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Hordozható üzemmód</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Konfigurációs fájl helyének megnyitása</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Futás indításkor</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>Magpie a főablak bezárása után is a háttérben fog futni</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-id.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Tentang</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Pintasan salah</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Simpan</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Tekan kombinasi tombol untuk mengganti pintasan ini</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>Tentang</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>Bawaan</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Beranda</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>Profil baru</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Pilih window</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Salin dari</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Buat</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Nama</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Buka window baru untuk membuat profil</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Profil baru</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profil</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Konfigurasi penskalaan</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Konfigurasi penskalaan</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Lebih lanjut</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>Umum</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Bahasa</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Bawaan Windows</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Mode portable</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Buka lokasi file konfigurasi</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Jalankan saat startup</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>Magpie akan tetap berjalan di belakang saat window utama ditutup</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>Munculkan app di system tray</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Gelap</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Bawaan windows</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Terang</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Mati</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>Nyala</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>Jalankan</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>Ekspor</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>Impor</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Opsi lainnya</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>Selalu jalan sebagai administrator</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>Anda harus jalan sebagai administrator untuk menggunakan pengaturan ini</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Aktivasi</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Beranda</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Tunda dalam detik</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>Batal</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>Periksa pembaruan secara berkala</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Unduh dan install</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Catatan rilis</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>Ingatkan saya nanti</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} tersedia</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Tautan lainnya</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Pedoman kontribusi</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>Sering ditanyakan</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>Lisensi</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Repositori Github</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Parameter</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Opsi lainnya</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Hapus</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Pindah ke bawah</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Pindah ke atas</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Ganti nama</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>Oke</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Ganti nama</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>Tambah efek</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Hapus</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Hapus</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>Sedang digunakan oleh profil:</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Apakah kamu yakin ingin menghapus mode penskalaan ini?</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>Drag and drop tidak didukung saat jalan sebagai administrator</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>Drag untuk menyusun ulang</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Pindah ke bawah</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Pindah ke atas</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>Mode penskalaan baru</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Mode penskalaan baru</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Skala</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>Tinggi (piksel)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>Lebar (faktor skala)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>Lebar (piksel)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>Tipe</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>Absolut</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>Faktor</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Isi</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>Isi layar, gambar mungkin meregang</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>Pas</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>Atur faktor penskalaan setelah mengisi layar dengan penskalaan proporsional</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>Umum</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>Mode 3D game</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>Skala otomatis ketika berada di latar depan</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>Metode penangkapan</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>Monitor preferensi</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>Monitor yang berpotongan dengan window sumber</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>Mode penskalaan</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Jalankan</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>Batal</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Sudah dipakai</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Hanya pintasan yang berawal dengan tombol Windows, Ctrl, Alt, atau Shift yang berlaku.</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>Tinggi (faktor skala)</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>Tidak ada</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Nama</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Buat</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Salin dari</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>Atur faktor penskalaan relatif terhadap gambar input</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>Atur ukuran setelah penskalaan</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>Semua monitor</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>Monitor yang paling dekat dengan window sumber</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Tunda penskalaan</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Opsi lebih lanjut</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>Hapus</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Hapus</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Apakah anda yakin mau menghapus profil ini?</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>Buka lokasi program</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>Ganti nama</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>Oke</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Ganti nama</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Susun ulang</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Pindah ke bawah</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Pindah ke atas</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Susun ulang</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>Tidak ada</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>Perfoma</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>Kartu grafis</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Umpan balik</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Diskusi</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Laporkan bug</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Minta fitur</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Cek pembaruan preview</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Cek pembaruan otomatis</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Cek pembaruan</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>Gagal mengecek pembaruan, silakan coba lagi nanti</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Mengecek pembaruan</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>Batal</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Unduh dan install</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Catatan rilis</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Coba lagi</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} tersedia</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie sudah terbaru</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>Unduh gagal</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>Mengunduh</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Menginstal</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>Tingkat lanjut</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>Matikan DirectFlip</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>Kursor</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>Sesuaikan kecepatan kursor saat diskalakan</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>Algoritma interpolasi</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>Bilinear</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>Nearest-neighbor</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Faktor penskalaan</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Kustom</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>Tanpa penskalaan</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>Sama dengan window sumber</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>Bawaan</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>Window sumber</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Terbatas untuk Graphics Capture dan Desktop Duplication</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>Tangkap title bar</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>Cropping kustom</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>Bawah</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>Kiri</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>px</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>Kanan</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>Atas</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>Memberikan sedikit peningkatan performa. Namun, efek harus dikompilasi ulang setiap kali parameternya diubah</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>Membuat parameter efek sejajar</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>Pemberitahuan dan pop-up dari aplikasi tertentu akan diblokir</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>Mensimulasikan layar penuh eksklusif saat melakukan penskalaan</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>Pengaturan ini hanya untuk penggunaan pengembangan</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Keluar</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>Nonaktifkan cache efek</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>Simpan kode sumber ketika efek parsing</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>Mode debug</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>Pilihan pengembang</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>Perlakukan peringatan sebagai eror saat menyusun efek</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Eror</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>Keluar</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Lokasi file konfigurasi:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>File konfigurasi bukan JSON yang valid</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>Gagal mengurai file konfigurasi</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>Gagal membaca file konfigurasi</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>Jendela utama</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>Diperlukan pengaktifan ulang agar perubahan dapat diterapkan</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Nyalakan kembali Magpie</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>Efek yang tidak diketahui</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>Beberapa efek tidak dapat diuraikan</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>Metode penangkapan</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>Profiler</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>Beralih ke efek</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>Beralih ke passes</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>Izinkan penskalaan jendela maksimal atau layar penuh</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>File JSON</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>Pembatas laju bingkai</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>Kecepatan bingkai maksimum</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>Mode pengembang diaktifkan.</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>Commit</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>Deteksi dinamis</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>Kecepatan bingkai</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>Pelajari lebih lanjut</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>Dukungan sentuh</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>Aktifkan dukungan sentuh</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>Anda harus memberikan hak administrator untuk mengubah pengaturan ini</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>Mode penskalaan tidak valid.</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>Penskalaan jendela layar penuh atau maksimal dinonaktifkan. Anda dapat mengubah pengaturan ini di Beranda.</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Versi</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>Parameter peluncuran</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>Kunci</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>Opasitas</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>Buka kunci</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>Total</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>Deteksi bingkai duplikat</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>Selalu</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>Ekspor mode penskalaan</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>Impor mode penskalaan</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Perbarui setelan</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>Ubah file yang dapat dieksekusi untuk diluncurkan</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>File yang dapat dieksekusi</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Timing</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>Dinamis</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>Tidak pernah</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>Jika dukungan sentuh gagal, Magpie dapat meminta hak administrator sebelum melakukan penskalaan untuk melakukan perbaikan.</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>Opsi ini tidak kompatibel dengan beberapa game lama. Harap gunakan dengan hati-hati.</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>Gagal mengaktifkan dukungan sentuh.</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>Penskalaan jendela ini tidak didukung.</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>Magpie perlu dijalankan sebagai administrator untuk menskalakan jendela ini.</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>Silakan lihat log untuk rincian lebih lanjut.</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>Terjadi kesalahan saat menangkap jendela ini. Silakan coba menggunakan metode penangkapan lain.</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>Kartu grafis saat ini tidak mendukung ID3D11Device5::CreateFence. Coba ganti kartu grafis atau perbarui driver.</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>Penskalaan gagal</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>Tidak ditemukan kartu grafis yang kompatibel, jadi rendering CPU akan digunakan sebagai gantinya. Performa mungkin tidak memenuhi harapan.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>Nonaktifkan cache huruf</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>Kecepatan bingkai minimum</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>Menstabilkan frekuensi GPU untuk mengurangi gangguan, tetapi dapat menyebabkan konsumsi daya yang lebih tinggi</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>Pilih file yang dapat dieksekusi untuk meluncurkan program</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>Aktifkan statistik untuk deteksi dinamis</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>Nonaktifkan penggunaan FP16 dalam shader</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>Mode benchmark</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>Salin</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>Potong</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>Tempel</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>Ulangi</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>Isi dengan nama aplikasi</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>Isi dengan nama proses</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>Isi dengan judul jendela</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>Pilih semua</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>Kembalikan</value>\n  </data>\n  <data name=\"Message_BannedInWindowedMode\" xml:space=\"preserve\">\n    <value>Penskalaan berjendela pada jendela ini tidak didukung.</value>\n  </data>\n  <data name=\"Message_InvalidCropping\" xml:space=\"preserve\">\n    <value>Gagal menerapkan pemotongan kustom.</value>\n  </data>\n  <data name=\"Home_TouchSupport.Description\" xml:space=\"preserve\">\n    <value>Karena pembatasan keamanan sistem, Magpie memerlukan hak istimewa UIAccess untuk mendukung input sentuh.</value>\n  </data>\n  <data name=\"Home_Activation.Description\" xml:space=\"preserve\">\n    <value>Tekan pintasan untuk menskalakan atau menghentikan penskalaan jendela latar depan.</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling.Header\" xml:space=\"preserve\">\n    <value>Pintasan penskalaan layar penuh</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Pintasan penskalaan layar penuh</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Pintasan penskalaan berjendela</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Pintasan penskalaan berjendela</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Description\" xml:space=\"preserve\">\n    <value>Hanya berlaku untuk penskalaan layar penuh</value>\n  </data>\n  <data name=\"Home_Toolbar.Description\" xml:space=\"preserve\">\n    <value>Bilah alat muncul di bagian atas jendela yang diskalakan, menyediakan fitur seperti tampilan FPS dan pengambilan tangkapan layar. Dalam mode berjendela, bilah alat juga memungkinkan penggeseran jendela yang diskalakan.</value>\n  </data>\n  <data name=\"Home_Toolbar.Header\" xml:space=\"preserve\">\n    <value>Bilah alat</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState.Header\" xml:space=\"preserve\">\n    <value>Status awal bilah alat</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AlwaysShow.Content\" xml:space=\"preserve\">\n    <value>Selalu tampilkan</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AutoHide.Content\" xml:space=\"preserve\">\n    <value>Sembunyikan otomatis</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Off.Content\" xml:space=\"preserve\">\n    <value>Nonaktif</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle.Header\" xml:space=\"preserve\">\n    <value>Pintasan pengalihan status bilah alat</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Pintasan pengalihan status bilah alat</value>\n  </data>\n  <data name=\"Message_ToolbarIn3DGameMode\" xml:space=\"preserve\">\n    <value>Bilah alat tidak didukung dalam mode game 3D.</value>\n  </data>\n  <data name=\"Message_ToolbarNewState\" xml:space=\"preserve\">\n    <value>Bilah alat: {}</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close\" xml:space=\"preserve\">\n    <value>Hentikan Penskalaan</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Demo\" xml:space=\"preserve\">\n    <value>Jendela Demo ImGui</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Pin\" xml:space=\"preserve\">\n    <value>Sematkan Bilah Alat</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot\" xml:space=\"preserve\">\n    <value>Ambil Tangkapan Layar</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Profiler\" xml:space=\"preserve\">\n    <value>Jendela Profiler</value>\n  </data>\n  <data name=\"Message_Windowed3DGameMode\" xml:space=\"preserve\">\n    <value>Penskalaan berjendela tidak didukung dalam mode game 3D.</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Description\" xml:space=\"preserve\">\n    <value>Mengaktifkan optimasi untuk game 3D, tetapi tidak kompatibel dengan bilah alat dan penskalaan berjendela</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory.Header\" xml:space=\"preserve\">\n    <value>Direktori penyimpanan tangkapan layar</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory_Change.Content\" xml:space=\"preserve\">\n    <value>Ubah</value>\n  </data>\n  <data name=\"Dialog_SetlectScreenshotSaveDirectory_Title\" xml:space=\"preserve\">\n    <value>Pilih direktori untuk menyimpan tangkapan layar</value>\n  </data>\n  <data name=\"Message_ScreenshotSaved\" xml:space=\"preserve\">\n    <value>Tangkapan layar disimpan sebagai {}</value>\n  </data>\n  <data name=\"Message_ScreenshotFailed\" xml:space=\"preserve\">\n    <value>Tangkapan layar gagal.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_Description\" xml:space=\"preserve\">\n    <value>Klik kanan untuk mengekspor hasil antara</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_PopupTitle\" xml:space=\"preserve\">\n    <value>Ekspor hasil antara</value>\n  </data>\n  <data name=\"Profile_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Penskalaan berjendela</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Faktor skala awal</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Auto.Content\" xml:space=\"preserve\">\n    <value>Otomatis</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Kustom</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Description\" xml:space=\"preserve\">\n    <value>Membantu menghindari masalah kompatibilitas tertentu tetapi dapat meningkatkan latensi secara signifikan</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Disabled.Content\" xml:space=\"preserve\">\n    <value>Dinonaktifkan</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Fullscreen.Content\" xml:space=\"preserve\">\n    <value>Penskalaan layar penuh</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Windowed.Content\" xml:space=\"preserve\">\n    <value>Penskalaan berjendela</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Description\" xml:space=\"preserve\">\n    <value>Hanya berlaku untuk penskalaan layar penuh</value>\n  </data>\n  <data name=\"Home_TouchSupport_Warn.Title\" xml:space=\"preserve\">\n    <value>Bilah alat tidak kompatibel dengan input sentuh.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close_Description\" xml:space=\"preserve\">\n    <value>Klik kanan untuk menutup bilah alat</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToFullscreen\" xml:space=\"preserve\">\n    <value>Beralih ke Penskalaan Layar Penuh</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToWindowed\" xml:space=\"preserve\">\n    <value>Beralih ke Penskalaan Berjendela</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Fullscreen.Header\" xml:space=\"preserve\">\n    <value>Penskalaan layar penuh</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Windowed.Header\" xml:space=\"preserve\">\n    <value>Penskalaan berjendela</value>\n  </data>\n  <data name=\"Message_ExportScalingModesFailed\" xml:space=\"preserve\">\n    <value>Gagal mengekspor mode penskalaan.</value>\n  </data>\n  <data name=\"Message_ImportScalingModesFailed\" xml:space=\"preserve\">\n    <value>Gagal mengimpor mode penskalaan.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_LocateLogs.Header\" xml:space=\"preserve\">\n    <value>Buka lokasi log</value>\n  </data>\n  <data name=\"Message_WindowedDesktopDuplication\" xml:space=\"preserve\">\n    <value>Penskalaan berjendela tidak didukung dengan pengambilan Desktop Duplication.</value>\n  </data>\n  <data name=\"Profile_General_DesktopDuplicationWarning.Title\" xml:space=\"preserve\">\n    <value>Metode pengambilan ini tidak kompatibel dengan penskalaan berjendela.</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Description\" xml:space=\"preserve\">\n    <value>Jendela utama tidak akan muncul jika \"Tampilkan aplikasi di baki sistem\" diaktifkan</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Description\" xml:space=\"preserve\">\n    <value>Skalakan jendela latar depan setelah {}d</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Start\" xml:space=\"preserve\">\n    <value>Mulai</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Fullscreen\" xml:space=\"preserve\">\n    <value>Skalakan setelah {}d (Layar Penuh)</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Windowed\" xml:space=\"preserve\">\n    <value>Skalakan setelah {}d (Berjendela)</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Minimize\" xml:space=\"preserve\">\n    <value>Minimalkan</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide.Header\" xml:space=\"preserve\">\n    <value>Sembunyikan kursor otomatis saat tidak aktif</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide_Delay.Header\" xml:space=\"preserve\">\n    <value>Penundaan sembunyikan dalam detik</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Description\" xml:space=\"preserve\">\n    <value>Hanya berlaku untuk penskalaan layar penuh</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Header\" xml:space=\"preserve\">\n    <value>Perataan keluaran</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomCenter.Content\" xml:space=\"preserve\">\n    <value>Bawah tengah</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomLeft.Content\" xml:space=\"preserve\">\n    <value>Bawah kiri</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomRight.Content\" xml:space=\"preserve\">\n    <value>Bawah kanan</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Center.Content\" xml:space=\"preserve\">\n    <value>Tengah</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Left.Content\" xml:space=\"preserve\">\n    <value>Kiri</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Right.Content\" xml:space=\"preserve\">\n    <value>Kanan</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopCenter.Content\" xml:space=\"preserve\">\n    <value>Atas tengah</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopLeft.Content\" xml:space=\"preserve\">\n    <value>Atas kiri</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopRight.Content\" xml:space=\"preserve\">\n    <value>Atas kanan</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableTopmost.Content\" xml:space=\"preserve\">\n    <value>Nonaktifkan selalu-di-atas</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-it.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Copia da</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Home</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>Annulla</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Già in uso</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Attivazione</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Ridimensionamento ritardato</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Ritardo in secondi</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>Annulla</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Premi una combinazione di tasti per modificare questa scorciatoia</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Scorciatoia non valida</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Salva</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Sono valide solo le scorciatoie che iniziano con il tasto Windows, Ctrl, Alt o Shift.</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>Riguardo a</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>Predefiniti</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Home</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>Nuovo profilo</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Apri una nuova finestra per creare un profilo</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Nuovo profilo</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profili</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Configurazione del ridimensionamento</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Avanzate</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Predefinita di Windows</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Modalità portabile</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Esegui all'avvio</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>Mostra l'app nell'area di notifica</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>Avvia</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>Esporta</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>Importa</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Altre opzioni</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>Devi eseguire l'app come amministratore per usare questa impostazione</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>Esegui sempre come amministratore</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>Controlla periodicamente gli aggiornamenti</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Scarica e installa</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Note di rilascio</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>Ricordamelo dopo</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} è disponibile</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Altri link</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Linee guida per contribuire</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Cancella</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Sposta in basso</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Sposta in alto</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Cancella</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Cancella</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>Viene utilizzato dai seguenti profili:</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Sei sicuro di voler eliminare questa modalità di ridimensionamento?</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>Il trascinamento non è supportato quando si usa l'app come amministratore</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>Trascina per riordinare</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Sposta in basso</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Sposta in alto</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>Nuova modalità di ridimensionamento</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Ridimensiona</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Copia da</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>Nessuno</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Crea</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>Altezza (fattore di scala)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>Altezza (pixel)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>Larghezza (fattore di scala)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>Larghezza (pixel)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>Tipo</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>Assoluto</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>Imposta la dimensione dopo il ridimensionamento</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>Fattore</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>Impostare il fattore di scala relativo all'immagine in entrata</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Riempi</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>Riempi lo schermo, l'immagine potrebbe essere allungata</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>Adatta</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>Generale</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>Modalità gioco 3D</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>Imposta il fattore di ridimensionamento dopo aver riempito lo schermo con il ridimensionamento proporzionale</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>Monitor preferito</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>Tutti i monitor</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>Monitor più vicino alla finestra di origine</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>Monitor attraversati dalla finestra di origine</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Avvia</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>Elimina</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Feedback</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Discussioni</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Segnala un bug</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Richiedi una feature</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Controlla gli aggiornamenti in anteprima</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Controlla gli aggiornamenti automaticamente</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Controlla gli aggiornamenti</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>Impossibile controllare gli aggiornamenti, riprova più tardi</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Controllando gli aggiornamenti</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>Annulla</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} è disponibile</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie è aggiornata</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>Download fallito</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>In download</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Installazione</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>Regola la velocità del cursore durante il ridimensionamento</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>Algoritmo di interpolazione</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>Bilineare</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>Vicino più ravvicinato</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Fattore di scala</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Personalizzato</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>Nessun ridimensionamento</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>Uguale alla finestra di origine</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>Predefinito</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>Finestra di origine</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Limitato all'acquisizione grafica e alla duplicazione del desktop</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>Cattura barra del titolo</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>Ritaglio personalizzato</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>Parte inferiore</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>Sinistra</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>pixel</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>Destra</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>Parte superiore</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>Le notifiche e i popup di determinate applicazioni verranno bloccati</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>Mette i parametri dell'effetto in linea</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>Simula lo schermo intero esclusivo durante il ridimensionamento</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>Queste impostazioni sono solo per gli sviluppatori</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>Disabilita la cache degli effetti</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>Salva il codice sorgente durante l'analisi degli effetti</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Esci</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Posizione del file di configurazione:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>Il file di configurazione non è un file JSON valido</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>Impossibile analizzare il file di configurazione</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>Impossibile leggere il file di configurazione</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>Esci</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>Finestra principale</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>Effetto sconosciuto</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>Alcuni effetti non possono essere analizzati</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Impostazioni aggiornamenti</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Versione</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>Metodo di cattura</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>Monitoraggio delle prestazioni</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>importa le modalità di ridimensionamento</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>Esporta le modalità di ridimensionamento</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>Blocca</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Tempi</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>Passa agli effetti</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>Totale</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>Disabilita la cache dei caratteri</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>Passa ai passaggi</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>File eseguibile</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>Cambia il file eseguibile per l'avvio</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>Scegli il file eseguibile per avviare il programma</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Crea</value>\n  </data>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Riguardo a</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>Generali</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Seleziona una finestra</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Configurazione del ridimensionamento</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Lingua</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Apri il percorso del file di configurazione</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Scuro</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>Magpie continuerà a funzionare in background dopo la chiusura della finestra principale</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Predefinito di Windows</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Chiaro</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>Attivato</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Disattivato</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>FAQ</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>Licenza</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Repository Github</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Altre opzioni</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Parametri</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Nuova modalità di ridimensionamento</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Rinomina</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Rinomina</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>Aggiungi effetto</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>Performance</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>Ridimensionamento automatico quando in primo piano</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>Metodo di cattura</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Sei sicuro di voler eliminare questo profilo?</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Altre opzioni</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>Apri il percorso del programma</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>Modalità di ridimensionamento</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Elimina</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>Nessuno</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>Rinomina</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Rinomina</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Riordina</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Sposta in alto</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>Scheda grafica</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Sposta in basso</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Riordina</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Scarica e installa</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Riprova</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>Avanzate</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>Disabilita DirectFlip</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>Cursore</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Note di rilascio</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>Dà un piccolo aumento delle prestazioni. Tuttavia, gli effetti devono essere ricompilati ogni volta che i loro parametri vengono modificati</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Errore</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>Impostazioni sviluppatore</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>Modalità di debug</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>Considera gli avvisi come errori durante la compilazione degli effetti</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Riavvia Magpie</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>Parametri di avvio</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>È necessario un riavvio affinché la modifica abbia effetto</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>Sblocca</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>Opacità</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>Consenti il ridimensionamento di finestre ingrandite o a schermo intero</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>FIle JSON</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>Limitatore del frame rate</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>Frame rate massimo</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>La modalità sviluppatore è abilitata.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>Rilevazione di frame duplicati</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>Sempre</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>Dinamico</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>Mai</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>Abilita le statistiche per il rilevamento dinamico</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>Rilevamento dinamico</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>Frame rate</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>Abilita il supporto touch</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>Per cambiare quest'impostazione devi fornire i permessi d'amministratore</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>Scopri di più</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>Supporto touch</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>Se il supporto touch fallisce, Magpie potrebbe richiedere privilegi di amministratore prima di effettuare il ridimensionamento per eseguire riparazioni.</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-ja.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>アクティベーション</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>ホーム</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>タイマー</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>カウントダウンタイム</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n  </data>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Magpieについて</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>デフォルト</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>ホーム</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>新しいプロファイル</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>ウィンドウを選択してください</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>新しいウィンドウを開いてプロファイルを作成します</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>新しいプロファイル</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>プロファイル</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>名前</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>スケーリング設定</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>高度な設定</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>一般設定</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>言語</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Windowsデフォルト</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>ポータブルモード</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>設定ファイルの場所を開きます</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>スタートアップ時に実行</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>カーソル</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>スケーリング時カーソル速度を調整する</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>補間アルゴリズム</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>バイリニア法</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>ニアレストネイバー法</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>保存</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>Magpieについて</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>からコピー</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>スケーリング設定</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>DirectFlipを無効にする</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>このショートカットを変更するには、キーの組み合わせを押してください</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>すでに使われています</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Windowsキー、Ctrl、Alt、Shiftで始まるショートカットのみ有効です。</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>作成</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>システムトレイにアプリを表示</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>テーマ</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>ダーク</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Windowsデフォルト</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>ライト</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>オン</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>起動</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>エクスポート</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>インポート</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>その他のオプション</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>定期的に更新を確認する</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>ダウンロードしてインストール</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>リリースノート</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>後で通知する</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} が利用できます</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>関連リンク</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>FAQ</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>ライセンス</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Githubリポジトリ</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>パラメータ</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>下へ移動</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>上へ移動</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>リネーム</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>リネーム</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>効果を追加</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>削除</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>削除</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>このスケーリング モードを削除してもよろしいですか?</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>新しいスケーリングモード</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>新しいスケーリングモード</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>スケーリング</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>なし</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>作成</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>高さ (倍率)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>高さ（ピクセル）</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>幅 （ピクセル）</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>タイプ</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>スケーリング後のサイズを指定する</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>倍率指定</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>画面いっぱいに最適化</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>最適化</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>キャプチャ方式</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>全てのモニター</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>ソースウィンドウに最も近いモニター</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>ソースウィンドウがまたがっている全てのモニター</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>スケーリングモード</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>起動</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>削除</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>プログラムの場所を開く</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>リネーム</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>並べ替え</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>下へ移動</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>並べ替え</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>なし</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>フィードバック</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>バグ報告</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>機能のリクエスト</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>更新を確認しています</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>ダウンロードしてインストール</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>リリースノート</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>再試行</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} が利用できます</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie は最新です</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>ダウンロード中</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>カスタム</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>スケーリングなし</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>インストール中</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>高度な設定</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>デフォルト</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>ソースウィンドウ</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>タイトルバーをキャプチャ</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>下</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>左</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>ピクセル</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>右</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>内部効果パラメーター</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>スケーリング時に排他的な全画面表示をシミュレーションする</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>フルスクリーン・スケーリングにのみ適用されます。有効にすると、特定のアプリの通知やポップアップを抑制します</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>エラー</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>エフェクトのコンパイル時に警告をエラーとして扱う</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>エフェクトの解析時にソースコードを保存する</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>エフェクトキャッシュを無効にする</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>終了</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>設定ファイルの場所:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>設定ファイルの解析に失敗しました</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>設定ファイルの読み取りに失敗しました</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>終了</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>設定ファイルが有効な JSON ではありません</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>変更を有効にするには再起動が必要です</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Magpieを再起動する</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>スケーリングモードのエクスポート</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>スケーリングモードのインポート</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>スケーリング倍率</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>ソースウィンドウと同じ</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>カスタムクロップ</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>上</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>わずかなパフォーマンス向上をもたらしますが、パラメーター変更する度に、再コンパイルする必要あり</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>メインウィンドウを閉じた後も、Magpie は引き続きバックグラウンドで実行されます</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>この設定を使用するには、管理者として実行する必要があります</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>常に管理者として実行する</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>貢献ガイドライン</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>以下のプロファイルは、このスケーリングモードを使用しています:</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>その他のオプション</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>削除</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>確定</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>管理者として実行しているとき、ドラッグ＆ドロップはサポートされていません</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>ドラッグして並べ替え</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>下へ移動</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>上へ移動</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>からコピー</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>名前</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>絶対値</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>入力画像に対するスケーリング倍率を指定</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>幅 (倍率)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>指定の縦横比でスケーリングされた際の倍率</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>モニタいっぱいに表示されます、縦横比は無視</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>一般設定</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>3Dゲームモード</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>最前面時自動スケーリング</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>優先モニター</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>その他のオプション</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>このプロファイルを削除してもよろしいですか?</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>リネーム</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>削除</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>確定</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>パフォーマンス</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>上へ移動</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>グラフィックスカード</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>フォーラム</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>アップデートの確認に失敗しました。しばらくしてからもう一度お試しください</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>ダウンロードに失敗しました</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Graphics CaptureおよびDesktop Duplicationでのみ使用可</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>これらの設定は、開発用としてのみ使用できます</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>開発者向けオプション</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>デバッグモード</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>未知の効果</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>メインウィンドウ</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>一部のエフェクトを解析できません</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>無効なショートカット</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>アップデートを確認する</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>アップデートを自動的に確認する</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>プレビューの更新を確認する</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>アップデート設定</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>バージョン</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>起動時のパラメータ</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>キャプチャ方式</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>不透明度</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>アンロック</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>エフェクトに切替</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>パスに切替</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>総計</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>ロック</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>レンダリング時間</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>パフォーマンス解析</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>フォントキャッシュの無効化</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>最大化またはフルスクリーン画面のスケーリングを許可</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>JSON ファイル</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>プログラムを起動するための実行ファイルを選択</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>起動時の実行ファイルを変更</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>実行ファイル</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>コミット</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>デベロッパーモードが有効。</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>最大フレームレート</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>常に検出</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>動的な検出</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>動的な検出</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>フレームレート</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>フレームレート制限</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>重複フレーム検出</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>不検出</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>動的な検出統計を有効にする</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>タッチサポートを有効にする</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>この設定を変更するには管理者権限が必要です</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>さらに詳しく</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>タッチサポートに失敗した場合、Magpieは修復を実行するためにスケーリングを行う前に管理者権限を要求することがあります。</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>タッチサポート</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>このオプションは一部の古いゲームと互換性がありません。ご注意ください。</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>スケーリングモードが無効です。</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>タッチサポートを有効にできませんでした。</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>このウィンドウのスケーリングはサポートされていません。</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>最大化またはフルスクリーンウィンドウのスケーリングは無効です。この設定はホーム画面で変更できます。</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>このウィンドウを拡大縮小するには、Magpieを管理者として実行する必要があります。</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>詳しくは過去ログを参照ください。</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>現在のグラフィックカードはID3D11Device5::CreateFenceをサポートしていません。グラフィックカードを交換するか、ドライバを更新してください。</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>スケーリングに失敗</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>このウィンドウのキャプチャ中にエラーが発生しました。別のキャプチャ方法をお試しください。</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>互換性のあるグラフィックカードが見つからなかったため、代わりにCPUレンダリングが使用されます。パフォーマンスが期待に添えない場合があります。</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>GPUの周波数を安定させてスタッタリングを減らしますが、消費電力が増加する可能性があります</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>最小フレームレート</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>シェーダーでのFP16の使用を無効にする</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>ベンチマークモード</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>プロセス名を入力</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>コピー</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>全て選択</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>元に戻す</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>やり直し</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>切り取り</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>貼付け</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>アプリケーション名を入力</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>ウィンドウのタイトルを入力</value>\n  </data>\n  <data name=\"Message_BannedInWindowedMode\" xml:space=\"preserve\">\n    <value>このウィンドウのウィンドウスケーリングはサポートされていません。</value>\n  </data>\n  <data name=\"Message_InvalidCropping\" xml:space=\"preserve\">\n    <value>カスタムトリミングの適用に失敗しました。</value>\n  </data>\n  <data name=\"Home_TouchSupport.Description\" xml:space=\"preserve\">\n    <value>システムのセキュリティ制限により、Magpieはタッチ入力をサポートするためにUIAccess権限を必要とします。</value>\n  </data>\n  <data name=\"Home_Activation.Description\" xml:space=\"preserve\">\n    <value>ショートカットを押すと前面ウィンドウのスケーリングやスケーリングの解除ができます。</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling.Header\" xml:space=\"preserve\">\n    <value>フルスクリーン・スケーリングのショートカット</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>フルスクリーン・スケーリングのショートカット</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>ウィンドウ・スケーリングのショートカット</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>ウィンドウ・スケーリングのショートカット</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Description\" xml:space=\"preserve\">\n    <value>フルスクリーン・スケーリングにのみ適用</value>\n  </data>\n  <data name=\"Home_Toolbar.Description\" xml:space=\"preserve\">\n    <value>ツールバーはスケーリングされたウィンドウの上部に表示され、FPS表示やスクリーンショットキャプチャなどの機能を提供します。ウィンドウモードでは、スケーリングされたウィンドウをドラッグすることもできます。</value>\n  </data>\n  <data name=\"Home_Toolbar.Header\" xml:space=\"preserve\">\n    <value>ツールバー</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState.Header\" xml:space=\"preserve\">\n    <value>ツールバーの初期状態</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AlwaysShow.Content\" xml:space=\"preserve\">\n    <value>常に表示</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AutoHide.Content\" xml:space=\"preserve\">\n    <value>自動で非表示</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Off.Content\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle.Header\" xml:space=\"preserve\">\n    <value>ツールバーの状態を切り替えるショートカット</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>ツールバーの状態を切り替えるショートカット</value>\n  </data>\n  <data name=\"Message_ToolbarIn3DGameMode\" xml:space=\"preserve\">\n    <value>ツールバーは3Dゲームモードではサポートされていません。</value>\n  </data>\n  <data name=\"Message_ToolbarNewState\" xml:space=\"preserve\">\n    <value>ツールバー: {}</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Demo\" xml:space=\"preserve\">\n    <value>ImGuiデモウィンドウ</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Pin\" xml:space=\"preserve\">\n    <value>ツールバーをピン留め</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot\" xml:space=\"preserve\">\n    <value>スクリーンショットを撮る</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Profiler\" xml:space=\"preserve\">\n    <value>解析ウィンドウ</value>\n  </data>\n  <data name=\"Message_Windowed3DGameMode\" xml:space=\"preserve\">\n    <value>3Dゲームモードではウィンドウ・スケーリングはサポートされていません。</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Description\" xml:space=\"preserve\">\n    <value>3Dゲームの最適化を可能にしますが、ツールバーやウィンドウ・スケーリングとの互換性はありません</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory.Header\" xml:space=\"preserve\">\n    <value>スクリーンショットの保存先</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory_Change.Content\" xml:space=\"preserve\">\n    <value>変更</value>\n  </data>\n  <data name=\"Dialog_SetlectScreenshotSaveDirectory_Title\" xml:space=\"preserve\">\n    <value>スクリーンショットの保存先を選択する</value>\n  </data>\n  <data name=\"Message_ScreenshotSaved\" xml:space=\"preserve\">\n    <value>スクリーンショットを保存 {}</value>\n  </data>\n  <data name=\"Message_ScreenshotFailed\" xml:space=\"preserve\">\n    <value>スクリーンショットに失敗。</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_Description\" xml:space=\"preserve\">\n    <value>右クリックで中間結果を出力</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_PopupTitle\" xml:space=\"preserve\">\n    <value>中間結果を出力</value>\n  </data>\n  <data name=\"Profile_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>ウィンドウ・スケーリング</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor.Header\" xml:space=\"preserve\">\n    <value>初期スケール倍率</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Auto.Content\" xml:space=\"preserve\">\n    <value>オート</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>カスタム</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Description\" xml:space=\"preserve\">\n    <value>特定の互換性の問題を回避するのに役立ちますが、レイテンシが大幅に増加する可能性があります</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Disabled.Content\" xml:space=\"preserve\">\n    <value>無効</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Fullscreen.Content\" xml:space=\"preserve\">\n    <value>フルスクリーン・スケーリング</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Windowed.Content\" xml:space=\"preserve\">\n    <value>ウィンドウ・スケーリング</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Description\" xml:space=\"preserve\">\n    <value>フルスクリーン・スケーリングにのみ適用</value>\n  </data>\n  <data name=\"Home_TouchSupport_Warn.Title\" xml:space=\"preserve\">\n    <value>ツールバーはタッチ入力に対応していません。</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close\" xml:space=\"preserve\">\n    <value>スケーリングの停止</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close_Description\" xml:space=\"preserve\">\n    <value>右クリックでツールバーを閉じる</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToFullscreen\" xml:space=\"preserve\">\n    <value>フルスクリーン・スケーリングに切り替える</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToWindowed\" xml:space=\"preserve\">\n    <value>ウィンドウ・スケーリングに切り替える</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Fullscreen.Header\" xml:space=\"preserve\">\n    <value>フルスクリーン・スケーリング</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Windowed.Header\" xml:space=\"preserve\">\n    <value>ウィンドウ・スケーリング</value>\n  </data>\n  <data name=\"Message_ExportScalingModesFailed\" xml:space=\"preserve\">\n    <value>スケーリングモードのエクスポートに失敗しました。</value>\n  </data>\n  <data name=\"Message_ImportScalingModesFailed\" xml:space=\"preserve\">\n    <value>スケーリングモードのインポートに失敗しました。</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_LocateLogs.Header\" xml:space=\"preserve\">\n    <value>ログの保存場所を開く</value>\n  </data>\n  <data name=\"Message_WindowedDesktopDuplication\" xml:space=\"preserve\">\n    <value>Desktop Duplication captureではウィンドウ・スケーリングはサポートされていません。</value>\n  </data>\n  <data name=\"Profile_General_DesktopDuplicationWarning.Title\" xml:space=\"preserve\">\n    <value>このキャプチャ方式は、ウィンドウ・スケーリングとは互換性がありません。</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Description\" xml:space=\"preserve\">\n    <value>「システムトレイにアプリを表示」を有効にすると、メインウィンドウが表示されません</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Description\" xml:space=\"preserve\">\n    <value>{}秒後に最前面のウィンドウを拡大する</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Start\" xml:space=\"preserve\">\n    <value>スタート</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Fullscreen\" xml:space=\"preserve\">\n    <value>{}秒 後に拡大（フルスクリーン）</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Windowed\" xml:space=\"preserve\">\n    <value>{}秒後に拡大（ウィンドウ）</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Minimize\" xml:space=\"preserve\">\n    <value>最小化</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide.Header\" xml:space=\"preserve\">\n    <value>アイドル時にカーソルを自動で非表示</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide_Delay.Header\" xml:space=\"preserve\">\n    <value>非表示までの秒数</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Description\" xml:space=\"preserve\">\n    <value>フルスクリーン・スケーリングにのみ適用されます</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Header\" xml:space=\"preserve\">\n    <value>画面の出力位置</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomCenter.Content\" xml:space=\"preserve\">\n    <value>中央下</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomLeft.Content\" xml:space=\"preserve\">\n    <value>左下</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomRight.Content\" xml:space=\"preserve\">\n    <value>右下</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Center.Content\" xml:space=\"preserve\">\n    <value>中央</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Left.Content\" xml:space=\"preserve\">\n    <value>左</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Right.Content\" xml:space=\"preserve\">\n    <value>右</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopCenter.Content\" xml:space=\"preserve\">\n    <value>中央上</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopLeft.Content\" xml:space=\"preserve\">\n    <value>左上</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopRight.Content\" xml:space=\"preserve\">\n    <value>右上</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableTopmost.Content\" xml:space=\"preserve\">\n    <value>常時最前面表示を無効にする</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-ka.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>სახელი</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>შექმნა</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>წაშლა</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>გადალაგება</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>რელიზის შენიშვნები</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>წარმადობა</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>მუქი</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>კოეფიციენტი</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>შევსება</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>გაუქმება</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>ხდკ</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>ჩატევა</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>მარჯვენა</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>გაუქმება</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>გადმოწერა</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>ქვედა</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>შენახვა</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>მასშტაბი</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>აბსოლუტური</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>ზედა</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>ჩართული</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>წაშლა</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>დიახ</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>ნაგულისხმევები</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>პარამეტრები</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>წაშლა</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>ვერსია</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>ატანა</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>არცერთი</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>კამათები</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>კურსორი</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>მეტი პარამეტრი</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Github-ის რეპოზიტორია</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>შემოტანა</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>გაშვება</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>ტიპი</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>მორგებული</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>შეცდომა</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>აქტივაცია</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>დინამიკური</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>დამატებით</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>ყოველთვის</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>თემა</value>\n  </data>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>შესახებ</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>საწყისი</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>დაყოვნებული მასშტაბი</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>შესახებ</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>საწყისი</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>არასწორი მალსახმობი</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>ახალი პროფილი</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>კოპირება საიდან</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>პროფილები</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>დამატებით</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>ზოგადი</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>ენა</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>ახალი პროფილი</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>მასშტაბის რეჟიმები</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>მასშტაბის რეჟიმები</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Windows-ის ნაგულისხმევი</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>გადატანადი რეჟიმი</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Windows-ის ნაგულისხმევი</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>გატანა</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>ლიცენზია</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>მოხალისეობის დახმარება</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>მეტი პარამეტრი</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>ჩამოტანა</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>სახელის გადარქმევა</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>წაშლა</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>წაშლა</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>ატანა</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>ეფექტის დამატება</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>ჩამოტანა</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>სახელი</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>კოპირება საიდან</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>სიმაღლე (პიქსელი)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>სიგანე (პიქსელი)</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>ზოგადი</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>სახელის გადარქმევა</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>გადალაგება</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>უკუკავშირი</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>გაუქმება</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>დაყენება</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>უახლოესი-მეზობელი</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>ნაგულისხმევი</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>პქს</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>ჩაკეტვა</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>განბლოკვა</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>დროები</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>არასოდეს</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>ღია</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>გამორთული</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>შექმნა</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>არცერთი</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>გაუმჭვირვალობა</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>დიახ</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>სახელის გადარქმევა</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>გასვლა</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>სახელის გადარქმევა</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>გაშვება</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>მარცხენა</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>ორხაზოვანი</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>გასვლა</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>პროფილების მართვა</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>ჯამში</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>გადაცემა</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>სხვა ბმულები</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-ko.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>포그라운드일 때 자동으로 스케일</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>선호 모니터</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>삭제</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>버그 제보</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>스케일링 모드</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>실행</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>삭제</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>이름 바꾸기</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>추가 옵션</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>이 프로파일을 삭제할까요?</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>프로그램 위치 열기</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>확인</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>이름 바꾸기</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>아래로 이동</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>FAQ</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>절대값</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>삭제</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>이 설정을 사용하려면 관리자 권한으로 실행해야 합니다</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>주기적으로 업데이트 확인</value>\n  </data>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>정보</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>활성화</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>홈</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>타이머</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>취소</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>카운트다운(초)</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>취소</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>이미 사용 중</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>저장</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Windows 키, Ctrl, Alt 또는 Shift로 시작하는 바로 가기만 유효합니다.</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>정보</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>기본값</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>홈</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>새 프로파일</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>프로파일</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>스케일링 모드</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>스케일링 모드</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>고급</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>일반</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>언어</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>메인 창이 닫힌 후 Magpie를 백그라운드에서 계속 실행</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>시스템 트레이에 앱 표시</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>테마</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>다크</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Windows 기본값</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>라이트</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>꺼짐</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>켜짐</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>실행</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>내보내기</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>가져오기</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>추가 옵션</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>릴리스 노트</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>나중에 다시 알림</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>라이선스</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>삭제</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>다음 프로파일에서 사용되고 있습니다:</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>이 스케일링 모드를 삭제할까요?</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>아래로 이동</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>끌어서 순서 바꾸기</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>높이(픽셀)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>너비(배율 인수)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>유형</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>맞추기</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>비례 스케일링으로 화면을 채운 후에 배율 인수를 설정합니다</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>일반</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>3D 게임 모드</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>모든 모니터</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>소스 창과 가장 가까운 모니터</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>소스 창과 엇갈리는 모니터</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>아래로 이동</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>위로 이동</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>순서 바꾸기</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>없음</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>성능</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>그래픽 카드</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>피드백</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>업데이트 확인 중</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>취소</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>다운로드 및 설치</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>스케일 된 동안 커서 속도 조정</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>보간 알고리즘</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>ㄷ 최단입점</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>〈 쌍선형</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>스케일링 인수</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>사용자 지정</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>스케일링 없음</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>기본값</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>[그래픽 캡처] 및 [데스크탑 복제]에서만</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>제목 표시줄 캡처</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>자르기 사용자 지정</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>하단</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>px</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>오른쪽</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>상단</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>약간의 성능 증가를 가져옵니다. 하지만 매개변수가 변경될 때마다 효과를 다시 컴파일해야 합니다</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>효과 매개변수를 인라인으로 만듦</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>전체화면 스케일링에만 적용됩니다. 활성화하면 특정 앱 알림과 팝업이 표시되지 않습니다</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>스케일링 할 때 단독 전체 화면 시뮬레이션</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>소스 창과 동일</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>소스 창</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>끝내기</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>프로파일러</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>캡처 방식</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>잠금</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>불투명도</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>타이밍</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>효과로 전환</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>패스로 전환</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>합계</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>이름 바꾸기</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>캡처 방식</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} 사용 가능</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>다운로드 및 설치</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>만들기</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>이 바로 가기를 변경하려면 키 조합을 누르세요</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>만들기</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>이름</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>올바르지 않은 바로 가기</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>새 프로파일</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>창 선택</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>새 스케일링 모드</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>다음에서 복사</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>포터블 모드</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>매개변수</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>위로 이동</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>다음에서 복사</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>부팅 시 실행</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>기여 지침</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Windows 기본값</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>프로파일을 만들려면 새 창 열기</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>구성 파일 위치 열기</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>고급</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>깃허브 저장소</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>항상 관리자 권한으로 실행</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>스케일</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>없음</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>높이(배율 인수)</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>관리자 권한으로 실행 중일 때는 드래그 앤 드롭이 지원되지 않습니다</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>구성 파일 위치:\n{}</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>기타 링크</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>추가 옵션</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>삭제</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>입력 이미지를 기준으로 배율 인수 설정</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>확인</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>이름 바꾸기</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>순서 바꾸기</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>효과 추가</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>인수</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>스케일링 한 후에 크기 설정</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>화면을 채웁니다. 이미지가 늘어날 수 있습니다</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>위로 이동</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>새 스케일링 모드</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>채우기</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>이름</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>개발자 옵션</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>너비(픽셀)</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>업데이트를 자동으로 확인</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>다시 시도</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>업데이트 확인</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>논의</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>기능 제안</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>미리 보기 업데이트 확인</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>업데이트 확인에 실패했습니다. 나중에 다시 시도해주세요</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} 사용 가능</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie가 최신 상태입니다</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>릴리스 노트</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>커서</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>다운로드 실패</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>DirectFlip 사용 안 함</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>다운로드 중</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>설치 중</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>구성 파일이 올바른 JSON이 아닙니다</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>구성 파일 구문분석에 실패했습니다</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>왼쪽</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>이 설정은 개발 전용입니다</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>오류</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>디버그 모드</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>효과 캐시 사용 안 함</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>효과를 구분분석 할 때 셰이더 소스 코드 저장</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>효과를 컴파일 할 때 경고를 오류로 취급</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>구성 파일 읽기에 실패했습니다</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>끝내기</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>변경 사항을 적용하려면 다시 시작해야 합니다</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>메인 창</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Magpie 다시 시작</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>알 수 없는 효과</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>일부 효과를 구문분석 할 수 없음</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>스케일링 모드 내보내기</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>스케일링 모드 가져오기</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>업데이트 설정</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>버전</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>실행 매개변수</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>잠금 해제</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>폰트 캐시 사용 안 함</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>최대화 창 또는 전체 화면 창을 스케일링 하도록 허용</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>JSON 파일</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>프로그램을 실행하려면 실행 파일 선택</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>실행용 실행 파일(exe) 바꾸기</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>실행 파일</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>동적 감지</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>프레임 레이트</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>프레임 레이트 제한</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>최대 프레임 레이트</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>Commit</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>개발자 모드를 사용 중입니다.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>복제 프레임 감지</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>항상</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>동적</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>감지 안 함</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>동직 감지용 통계 사용</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>터치 지원 사용</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>이 설정을 변경하려면 관리자 권한이 필요합니다</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>자세히 알아보기</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>터치 지원</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>터치 지원이 실패할 경우 복구를 수행하기 위해 Magpie가 스케일링 하기 전 관리자 권한을 요청할 수 있습니다.</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>이 옵션은 몇몇 오래된 게임에서는 호환되지 않습니다. 주의해서 사용해주세요.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>셰이더에 FP16 사용 안 함</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>벤치마크 모드</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>이 창의 스케일링은 지원되지 않습니다.</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>최소 프레임 레이트</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>스터터링을 줄이기 위해 GPU 주파수를 안정화하지만 더 높은 전력 소모로 이어질 수도 있음</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>이 창을 스케일 하려면 Magpie를 관리자 권한으로 실행해야 합니다.</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>스케일링 모드가 올바르지 않습니다.</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>터치 지원을 사용하는 데 실패했습니다.</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>자세한 정보는 로그를 참조하세요.</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>최대화 창 또는 전체 화면 창의 스케일링을 사용하지 않고 있습니다. [홈] 페이지의 설정에서 바꿀 수 있습니다.</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>이 창을 캡처하는 동안 오류가 발생했습니다. 다른 캡처 방법으로 시도해주세요.</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>현재 그래픽 카드가 ID3D11Decive5LLCreateFence를 지원하지 않습니다. 그래픽 카드를 교체하거나 드라이버를 업데이트해보세요.</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>스케일링 실패</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>호환되는 그래픽 카드를 찾을 수 없으므로 대신 CPU 렌더링을 사용합니다. 성능이 기대에 부응하지 못 할 수 있습니다.</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>창 제목 입력</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>복사</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>다시</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>전체 선택</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>취소</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>잘라내기</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>프로세스 이름 입력</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>응용 프로그램 이름 입력</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>붙여넣기</value>\n  </data>\n  <data name=\"Home_Activation.Description\" xml:space=\"preserve\">\n    <value>단축키를 누르면 현재 활성화된 창을 업스케일링하거나 원래대로 되돌릴 수 있습니다.</value>\n  </data>\n  <data name=\"Home_Toolbar.Description\" xml:space=\"preserve\">\n    <value>스케일된 창 상단에 툴바가 나타나며, FPS 표시나 스크린샷 캡처 등의 기능을 제공합니다. 창 모드에서는 스케일된 창을 끌어서 이동시킬 수도 있습니다.</value>\n  </data>\n  <data name=\"Home_Toolbar.Header\" xml:space=\"preserve\">\n    <value>툴바</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState.Header\" xml:space=\"preserve\">\n    <value>툴바 초기 상태</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AlwaysShow.Content\" xml:space=\"preserve\">\n    <value>항상 표시</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AutoHide.Content\" xml:space=\"preserve\">\n    <value>자동 숨김</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle.Header\" xml:space=\"preserve\">\n    <value>툴바 창 전환 단축키</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>툴바 창 전환 단축키</value>\n  </data>\n  <data name=\"Message_ToolbarIn3DGameMode\" xml:space=\"preserve\">\n    <value>3D 게임 모드에서는 툴바가 지원되지 않습니다.</value>\n  </data>\n  <data name=\"Message_ToolbarNewState\" xml:space=\"preserve\">\n    <value>툴바: {}</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Pin\" xml:space=\"preserve\">\n    <value>툴바 고정</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot\" xml:space=\"preserve\">\n    <value>스크린샷 캡처</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Profiler\" xml:space=\"preserve\">\n    <value>프로파일러 창</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Description\" xml:space=\"preserve\">\n    <value>3D 게임 최적화 기능으로 활성화하지만, 툴바 및 창 크기 조정 기능과 호환되지 않습니다</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory.Header\" xml:space=\"preserve\">\n    <value>스크린샷 저장 경로</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_Description\" xml:space=\"preserve\">\n    <value>오른쪽 클릭으로 중간 단계 내보내기</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_PopupTitle\" xml:space=\"preserve\">\n    <value>중간 단계 내보내기</value>\n  </data>\n  <data name=\"Home_TouchSupport_Warn.Title\" xml:space=\"preserve\">\n    <value>툴바는 터치 입력을 지원하지 않습니다.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close_Description\" xml:space=\"preserve\">\n    <value>오른쪽 클릭으로 툴바 닫기</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToFullscreen\" xml:space=\"preserve\">\n    <value>전체화면 스케일링으로 전환</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToWindowed\" xml:space=\"preserve\">\n    <value>창모드 스케일링으로 전환</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Fullscreen.Header\" xml:space=\"preserve\">\n    <value>전체화면 스케일링</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Windowed.Header\" xml:space=\"preserve\">\n    <value>창모드 스케일링</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Minimize\" xml:space=\"preserve\">\n    <value>최소화</value>\n  </data>\n  <data name=\"Profile_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>창 모드 스케일링</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor.Header\" xml:space=\"preserve\">\n    <value>초기 확대 비율</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Auto.Content\" xml:space=\"preserve\">\n    <value>자동</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>사용자 지정</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide.Header\" xml:space=\"preserve\">\n    <value>커서 자동 숨기기</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide_Delay.Header\" xml:space=\"preserve\">\n    <value>숨김 지연시간(초)</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Description\" xml:space=\"preserve\">\n    <value>특정 호환 문제를 해결하는 데 도움이 될 수 있지만, 지연 시간이 늘어날 수 있습니다</value>\n  </data>\n  <data name=\"Message_BannedInWindowedMode\" xml:space=\"preserve\">\n    <value>이 윈도우의 스케일링은 지원하지 않습니다.</value>\n  </data>\n  <data name=\"Message_InvalidCropping\" xml:space=\"preserve\">\n    <value>자르기 사용자 지정 적용에 실패했습니다.</value>\n  </data>\n  <data name=\"Home_TouchSupport.Description\" xml:space=\"preserve\">\n    <value>시스템 보안 제한으로 Magpie는 터치 입력을 지원하기 위해 UIA Access 권한이 필요로 합니다.</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling.Header\" xml:space=\"preserve\">\n    <value>전체화면 스케일링 단축키</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>전체화면 스케일링 단축키</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>창 모드 스케일링 단축키</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>창 모드 스케일링 단축키</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close\" xml:space=\"preserve\">\n    <value>스케일링 중지</value>\n  </data>\n  <data name=\"Message_Windowed3DGameMode\" xml:space=\"preserve\">\n    <value>3D 게임 모드에서는 창 모드 스케일링이 지원되지 않습니다.</value>\n  </data>\n  <data name=\"Dialog_SetlectScreenshotSaveDirectory_Title\" xml:space=\"preserve\">\n    <value>스크린샷을 저장할 경로를 선택하세요</value>\n  </data>\n  <data name=\"Message_ScreenshotSaved\" xml:space=\"preserve\">\n    <value>스크린샷 저장 {}</value>\n  </data>\n  <data name=\"Message_ScreenshotFailed\" xml:space=\"preserve\">\n    <value>스크린샷 실패.</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Description\" xml:space=\"preserve\">\n    <value>전체화면 스케일링에만 적용됩니다</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Off.Content\" xml:space=\"preserve\">\n    <value>끄기</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Demo\" xml:space=\"preserve\">\n    <value>ImGui 데모 창</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory_Change.Content\" xml:space=\"preserve\">\n    <value>변경</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Disabled.Content\" xml:space=\"preserve\">\n    <value>비활성화</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Fullscreen.Content\" xml:space=\"preserve\">\n    <value>전체화면 스케일링</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Windowed.Content\" xml:space=\"preserve\">\n    <value>창모드 스케일링</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Description\" xml:space=\"preserve\">\n    <value>전체화면 스케일링에만 적용됩니다</value>\n  </data>\n  <data name=\"Message_ExportScalingModesFailed\" xml:space=\"preserve\">\n    <value>스케일링 모드를 내보내는 데 실패했습니다.</value>\n  </data>\n  <data name=\"Message_ImportScalingModesFailed\" xml:space=\"preserve\">\n    <value>스케일링 모드를 불러오는 데 실패했습니다.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_LocateLogs.Header\" xml:space=\"preserve\">\n    <value>로그 위치 열기</value>\n  </data>\n  <data name=\"Message_WindowedDesktopDuplication\" xml:space=\"preserve\">\n    <value>데스크탑 복제 캡처에서는 창모드 스케일링을 지원하지 않습니다.</value>\n  </data>\n  <data name=\"Profile_General_DesktopDuplicationWarning.Title\" xml:space=\"preserve\">\n    <value>이 캡처 방식은 창모드 스케일링과 호환되지 않습니다.</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Description\" xml:space=\"preserve\">\n    <value>\"시스템 트레이에 앱 표시\"가 활성화되어 있으면 메인 창이 나타나지 않습니다</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Description\" xml:space=\"preserve\">\n    <value>{}초 후에 활성화된 창을 스케일링합니다</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Start\" xml:space=\"preserve\">\n    <value>시작</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Fullscreen\" xml:space=\"preserve\">\n    <value>{}초 후에 스케일링 (전체화면)</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Windowed\" xml:space=\"preserve\">\n    <value>{}초 후에 스케일링 (창모드)</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Description\" xml:space=\"preserve\">\n    <value>전체 화면 스케일링에만 적용</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Header\" xml:space=\"preserve\">\n    <value>출력 정렬</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomCenter.Content\" xml:space=\"preserve\">\n    <value>가운데 아래</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomLeft.Content\" xml:space=\"preserve\">\n    <value>왼쪽 아래</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomRight.Content\" xml:space=\"preserve\">\n    <value>오른쪽 아래</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Center.Content\" xml:space=\"preserve\">\n    <value>가운데</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Left.Content\" xml:space=\"preserve\">\n    <value>왼쪽</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Right.Content\" xml:space=\"preserve\">\n    <value>오른쪽</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopCenter.Content\" xml:space=\"preserve\">\n    <value>가운데 위</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopLeft.Content\" xml:space=\"preserve\">\n    <value>왼쪽 위</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopRight.Content\" xml:space=\"preserve\">\n    <value>오른쪽 위</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableTopmost.Content\" xml:space=\"preserve\">\n    <value>항상 위에 표시 사용 안 함</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-pl.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Strona główna</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Kopiuj z</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Utwórz</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Nazwa</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Otwórz nowe okno, aby utworzyć profil</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Nowy profil</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profile</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>Musisz uruchomić jako administrator, aby użyć tego ustawienia</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>Zawsze uruchamiaj jako administrator</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>Okresowo sprawdzaj aktualizacje</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Pobierz i zainstaluj</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Informacje o wydaniu</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>Przypomnij mi później</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} jest dostępny</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Inne linki</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Wytyczne dt. wkładu</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>FAQ</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Repozytorium GitHub</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Parametry</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Więcej opcji</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Usuń</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Przesuń w dół</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Przesuń w górę</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Zmień nazwę</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Zmień nazwę</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>Dodaj efekt</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>Przeciągnij, aby zmienić kolejność</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Nazwa</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>Ustawia współczynnik po wypełnieniu ekranu skalowaniem proporcjonalnym</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>Ogólne</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>Tryb gry 3D</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>Automatycznie skaluj, gdy okno jest na pierwszym planie</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>Metoda przechwytywania</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>Preferowane monitory</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>Wszystkie monitory</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>Monitor najbliżej okna źródłowego</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>Monitory przecinane przez okno źródłowe</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>Tryb skalowania</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>Usuń</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Automatycznie sprawdzaj aktualizacje</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Sprawdzaj aktualizacje</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>Nie udało się sprawdzić aktualizacji, spróbuj ponownie później</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Sprawdzam aktualizacje</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>Anuluj</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Pobierz i zainstaluj</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Informacje o wydaniu</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Spróbuj ponownie</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} jest dostępny</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie jest aktualny</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>Pobieranie nie powiodło się</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>Pobieram</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Instaluję</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>Zaawansowane</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>Wyłącz DirectFlip</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>Kursor</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>Dostosuj prędkość kursora podczas skalowania</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>Algorytm interpolacji</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>Dwuliniowe</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>Najbliższe sąsiedztwo</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Współczynnik skalowania</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>Symuluj wyłączny pełny ekran podczas skalowania</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Błąd</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>Ustawienia te są przeznaczone wyłącznie do użytku programistycznego</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>Opcje programistyczne</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>Debugowanie</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>Wyłącz pamięć podręczną efektów</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>Zapisz kod źródłowy podczas parsowania efektów</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>Traktuj ostrzeżenia jako błędy podczas kompilacji efektów</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Wyjdź</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Lokalizacja pliku konfiguracyjnego:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>Plik konfiguracyjny nie jest prawidłowym plikiem JSON</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Timingi</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>Przełącz na efekty</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>Przełącz na przejścia</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>Łącznie</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>Wyłącz pamięć podręczną czcionek</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>Zezwalaj na skalowanie zmaksymalizowanych lub pełnoekranowych okien</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>Plik JSON</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>Zmień plik wykonywalny do uruchomienia</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>Plik wykonywalny</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>Wybierz plik wykonywalny, aby uruchomić program</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>Ogranicz liczbę kl/s</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>Maksymalna liczba kl/s</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>Kompilacja</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>Tryb programistyczny jest włączony.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>Wykrywanie zduplikowanych klatek</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>Zawsze</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>Dynamiczne</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>Nigdy</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>Włącz statystyki dla wykrywania dynamicznego</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>Kl/s</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Aktywacja</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>Włącz obsługę dotyku</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>Aby zmienić to ustawienie, należy posiadać uprawnienia administratora</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>Dowiedz się więcej</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>Wsparcie dotyku</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>Jeśli obsługa dotykowa nie powiedzie się, Magpie może zażądać uprawnień administratora przed skalowaniem w celu wykonania naprawy.</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>Ta opcja nie jest kompatybilna z niektórymi starszymi grami. Należy używać jej z rozwagą.</value>\n  </data>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>O programie</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Skalowanie opóźnione</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>Anuluj</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Domyślne systemu</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Opóźnienie w sekundach</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Naciśnij kombinację klawiszy, aby zmienić ten skrót</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Już w użyciu</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Zapisz</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Ważne są tylko skróty, które rozpoczynają się od klawisza Windows, Ctrl, Alt lub Shift.</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>O programie</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Strona główna</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Wybierz okno</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Tryby skalowania</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Tryby skalowania</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>Anuluj</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Nieprawidłowy skrót</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>Domyślne</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>Nowy profil</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Zaawansowane</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Otwórz lokalizację pliku konfiguracyjnego</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>Ogólne</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Tryb przenośny</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Uruchom przy starcie</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>Wyświetlaj aplikację w zasobniku systemowym</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Motyw</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Język</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Domyślne systemu</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>Magpie będzie nadal działać w tle po zamknięciu głównego okna</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Skala</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Ciemny</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>Eksportuj</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Jasny</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Wył.</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>Nic</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>Wł.</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Zmień kolejność</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>Uruchom</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>Importuj</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>Przeciąganie i upuszczanie nie jest dostępne w trybie administratora</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Przesuń w górę</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Więcej opcji</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>Licencja</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Czy na pewno chcesz usunąć ten tryb skalowania?</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Kopiuj z</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Usuń</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Usuń</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>Jest używany przez następujące profile:</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>Nowy tryb skalowania</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Nowy tryb skalowania</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Wypełnij</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Przesuń w dół</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Utwórz</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>Wysokość (piksele)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>Wysokość (współczynnik)</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Przesuń w dół</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Przesuń w górę</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>Wydajność</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>Szerokość (współczynnik)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>Szerokość (piksele)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>Typ</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>Absolutny</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>Ustawia współczynnik skalowania względem obrazu wejściowego</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>Ustawia rozmiar po skalowaniu</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>Wypełnia ekran; obraz może być rozciągnięty</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>Współczynnik</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>Dopasuj</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>Karta graficzna</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Więcej opcji</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Uruchom</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Usuń</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Czy na pewno chcesz usunąć ten profil?</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>Otwórz lokalizację programu</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>Zmień nazwę</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Zmień nazwę</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Zmień kolejność</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>Nic</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Opinie</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Dyskusje</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Zgłoś błąd</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Sprawdzaj aktualizacje podglądowe</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Poproś o funkcję</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Niestandardowe</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>Bez skalowania</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Ograniczone do \"Graphics Capture\" i \"Desktop Duplication\"</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>Domyślna</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>Tak samo jak okno źródłowe</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>Okno źródłowe</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>Przechwytuj pasek tytułu</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>Kadrowanie niestandardowe</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>Daje mały wzrost wydajności. Efekty muszą być jednak rekompilowane za każdym razem, gdy zmieniane są ich parametry</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>Prawo</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>Dół</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>Lewo</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>px</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>Góra</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>Dotyczy wyłącznie skalowania pełnoekranowego. Po włączeniu blokuje niektóre powiadomienia aplikacji i wyskakujące okienka</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>Ustaw parametry efektów jako wbudowane</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>Nie udało się przetworzyć pliku konfiguracyjnego</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>Nie udało się odczytać pliku konfiguracyjnego</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>Niektórych efektów nie można parsować</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>Wyjdź</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>Główne okno</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>Aby zmiana zaczęła obowiązywać, wymagane jest ponowne uruchomienie</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Uruchom ponownie Magpie</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>Nieznany efekt</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>Nieprzezroczystość</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>Eksportuj tryby skalowania</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>Importuj tryby skalowania</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Ustawienia aktualizacji</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Wersja</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>Profilowanie</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>Parametry uruchamiania</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>Metoda przechwytywania</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>Limit</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>Odblokuj</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>Wykrywanie dynamiczne</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>Magpie musi być uruchomiony jako administrator aby skalować to okno.</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>Proszę odwołać się do dzienników po więcej szczegółów.</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>Tryb skalowania jest nieprawidłowy.</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>Nie udało się włączyć wsparcia dotyku.</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>Skalowanie tego okna nie jest wspierane.</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>Skalowanie zmaksymalizowanego lub pełnoekreanowego okna jest wyłączone. Możesz to zmienić na stronie głównej.</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>Minimalna liczba kl/s</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>Stabilizuje częstotliwość GPU w celu zmniejszenia zacinania się, ale może prowadzić do wyższego zużycia energii</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>Tryb benchmarku</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>Nie znaleziono kompatybilnej karty graficznej, więc zamiast tego zostanie użyty rendering CPU. Wydajność może nie spełniać oczekiwań.</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>Wytnij</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>Wypełnij nazwą aplikacji</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>Wklej</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>Wystąpił błąd podczas przechwytywania tego okna. Spróbuj użyć innej metody przechwytywania.</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>Cofnij</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>Skalowanie nie powiodło się</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>Wyłącz użycie FP16 w shaderach</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>Obecna karta graficzna nie obsługuje ID3D11Device5::CreateFence. Spróbuj zmienić kartę graficzną lub zaktualizować sterowniki.</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>Wypełnij nazwą procesu</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>Wypełnij nazwą okna</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>Ponów</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>Kopiuj</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>Wybierz wszystko</value>\n  </data>\n  <data name=\"Message_BannedInWindowedMode\" xml:space=\"preserve\">\n    <value>Skalowanie tego okna w trybie okienkowym nie jest obsługiwane.</value>\n  </data>\n  <data name=\"Message_InvalidCropping\" xml:space=\"preserve\">\n    <value>Nie udało się zastosować niestandardowego przycięcia.</value>\n  </data>\n  <data name=\"Home_TouchSupport.Description\" xml:space=\"preserve\">\n    <value>Ze względu na ograniczenia systemu Magpie wymaga uprawnień UIAccess, aby obsługiwać dotyk.</value>\n  </data>\n  <data name=\"Home_Activation.Description\" xml:space=\"preserve\">\n    <value>Naciśnij skrót, aby skalować lub zatrzymać skalowanie okna pierwszego planu.</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling.Header\" xml:space=\"preserve\">\n    <value>Skrót skalowania pełnego ekranu</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Skrót skalowania pełnego ekranu</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Skrót skalowania okna</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Skrót skalowania okna</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Description\" xml:space=\"preserve\">\n    <value>Dotyczy tylko skalowania pełnego ekranu</value>\n  </data>\n  <data name=\"Home_Toolbar.Description\" xml:space=\"preserve\">\n    <value>Pasek narzędzi pojawia się w górnej części skalowanego okna i udostępnia takie funkcje, jak wyświetlanie liczby kl/s oraz przechwytywanie zrzutów ekranu. W trybie okienkowym umożliwia również przeciąganie okna skalowanego.</value>\n  </data>\n  <data name=\"Home_Toolbar.Header\" xml:space=\"preserve\">\n    <value>Pasek narzędzi</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState.Header\" xml:space=\"preserve\">\n    <value>Wstępny stan paska narzędzi</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AlwaysShow.Content\" xml:space=\"preserve\">\n    <value>Zawsze pokazuj</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AutoHide.Content\" xml:space=\"preserve\">\n    <value>Ukrywaj autom.</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Off.Content\" xml:space=\"preserve\">\n    <value>Wył.</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle.Header\" xml:space=\"preserve\">\n    <value>Skrót przełączania stanu paska narzędzi</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Skrót przełączania stanu paska narzędzi</value>\n  </data>\n  <data name=\"Message_ToolbarIn3DGameMode\" xml:space=\"preserve\">\n    <value>Pasek narzędzi nie jest obsługiwany w trybie gry 3D.</value>\n  </data>\n  <data name=\"Message_ToolbarNewState\" xml:space=\"preserve\">\n    <value>Pasek narzędzi: {}</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close\" xml:space=\"preserve\">\n    <value>Zatrzymaj skalowanie</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Demo\" xml:space=\"preserve\">\n    <value>Okno demo ImGui</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Pin\" xml:space=\"preserve\">\n    <value>Przypnij pasek narzędzi</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot\" xml:space=\"preserve\">\n    <value>Zrób zrzut ekranu</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Profiler\" xml:space=\"preserve\">\n    <value>Okno profilera</value>\n  </data>\n  <data name=\"Message_Windowed3DGameMode\" xml:space=\"preserve\">\n    <value>Skalowanie okienkowe nie jest obsługiwane w trybie gry 3D.</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Description\" xml:space=\"preserve\">\n    <value>Włącza optymalizacje dla gier 3D, ale nie zadziała z paskiem narzędzi i skalowaniem okien</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory.Header\" xml:space=\"preserve\">\n    <value>Katalog zapisu zrzutów ekranu</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory_Change.Content\" xml:space=\"preserve\">\n    <value>Zmień</value>\n  </data>\n  <data name=\"Dialog_SetlectScreenshotSaveDirectory_Title\" xml:space=\"preserve\">\n    <value>Wybierz katalog, w którym chcesz zapisać zrzuty ekranu</value>\n  </data>\n  <data name=\"Message_ScreenshotSaved\" xml:space=\"preserve\">\n    <value>Zrzut ekranu zapisany jako {}</value>\n  </data>\n  <data name=\"Message_ScreenshotFailed\" xml:space=\"preserve\">\n    <value>Zrzut ekranu nie powiódł się.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_Description\" xml:space=\"preserve\">\n    <value>Kliknij PPM, aby wyeksportować wynik pośredni</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_PopupTitle\" xml:space=\"preserve\">\n    <value>Eksportuj wynik pośredni</value>\n  </data>\n  <data name=\"Profile_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Skalowanie okna</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Współczynnik skali początkowej</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Auto.Content\" xml:space=\"preserve\">\n    <value>Autom.</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Własny</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Description\" xml:space=\"preserve\">\n    <value>Pomaga uniknąć niektórych problemów związanych z kompatybilnością, ale może znacznie zwiększyć opóźnienia</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Disabled.Content\" xml:space=\"preserve\">\n    <value>Wył.</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Fullscreen.Content\" xml:space=\"preserve\">\n    <value>Skalowanie pełnego ekranu</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Windowed.Content\" xml:space=\"preserve\">\n    <value>Skalowanie okna</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Description\" xml:space=\"preserve\">\n    <value>Dotyczy wyłącznie skalowania pełnoekranowego</value>\n  </data>\n  <data name=\"Home_TouchSupport_Warn.Title\" xml:space=\"preserve\">\n    <value>Pasek narzędzi nie jest kompatybilny z obsługą dotykową.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close_Description\" xml:space=\"preserve\">\n    <value>Kliknij PPM, aby zamknąć pasek narzędzi</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToFullscreen\" xml:space=\"preserve\">\n    <value>Przełącz na skalowanie pełnoekranowe</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToWindowed\" xml:space=\"preserve\">\n    <value>Przełącz na skalowanie okienkowe</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Fullscreen.Header\" xml:space=\"preserve\">\n    <value>Skalowanie pełnoekranowe</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Windowed.Header\" xml:space=\"preserve\">\n    <value>Skalowanie okienkowe</value>\n  </data>\n  <data name=\"Message_ExportScalingModesFailed\" xml:space=\"preserve\">\n    <value>Nie udało się wyeksportować trybów skalowania.</value>\n  </data>\n  <data name=\"Message_ImportScalingModesFailed\" xml:space=\"preserve\">\n    <value>Nie udało się zaimportować trybów skalowania.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_LocateLogs.Header\" xml:space=\"preserve\">\n    <value>Otwórz lokalizację dzienników</value>\n  </data>\n  <data name=\"Message_WindowedDesktopDuplication\" xml:space=\"preserve\">\n    <value>Skalowanie okien nie jest obsługiwane w przypadku przechwytywania przez Desktop Duplication.</value>\n  </data>\n  <data name=\"Profile_General_DesktopDuplicationWarning.Title\" xml:space=\"preserve\">\n    <value>Ta metoda przechwytywania jest niezgodna ze skalowaniem okienkowym.</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Description\" xml:space=\"preserve\">\n    <value>Główne okno nie pojawi się, jeśli opcja \"Wyświetl aplikację w zasobniku systemowym\" jest włączona</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Description\" xml:space=\"preserve\">\n    <value>Skaluj okno pierwszego planu po {}s</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Start\" xml:space=\"preserve\">\n    <value>Start</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Fullscreen\" xml:space=\"preserve\">\n    <value>Skaluj po {}s (Pełny ekran)</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Windowed\" xml:space=\"preserve\">\n    <value>Skaluj po {}s (W oknie)</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Minimize\" xml:space=\"preserve\">\n    <value>Minimalizuj</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-pt-BR.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Ativação</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Redimensionamento com atraso</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Tempo de atraso em segundos</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Pressione uma combinação de teclas para alterar este atalho</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Apenas atalhos que começam com a tecla do Windows, Ctrl, Alt ou Shift são válidos.</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>Sobre</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>Perfis padrão</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>Novo perfil</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Copiar de</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Criar</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Abra uma nova janela para criar um perfil</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Configuração de redimensionamento</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Configuração de redimensionamento</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Avançado</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Idioma</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Modo \"portable\"</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Abrir local do arquivo de configuração</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Executar na inicialização</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>Exibir o aplicativo na área de notificação</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Escuro</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Claro</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Desativado</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>Ativado</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>Exportar</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>Importar</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>Procurar por atualizações periodicamente</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Baixar e instalar</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Registro de alterações</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Outros links</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>FAQ</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Repositório no GitHub</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Parâmetros</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Excluir</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>Está sendo usado pelos seguintes perfis:</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Tem certeza de que deseja excluir este modo de redimensionamento?</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Novo modo de redimensionamento</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Copiar de</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>Nenhum</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Criar</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>Altura (em pixels)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>Tipo</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>Fator</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>Definir o fator de redimensionamento em relação à imagem original</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Preenchimento</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>Preenche a tela, a imagem pode ser esticada</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>Ajustar</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>Definir o fator de redimensionamento após preencher a tela com escalonamento proporcional</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>Redimensionar automaticamente quando em primeiro plano</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>Método de captura</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>Monitores preferidos</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>Monitor mais próximo da janela de origem</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>Modo de redimensionamento</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Iniciar</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mais opções</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Tem certeza de que deseja excluir este perfil?</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>Abrir local do programa</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>Renomear</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Renomear</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Reorganizar</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Reorganizar</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>Nenhum</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>Desempenho</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>Placa de vídeo</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Feedback (Opinião)</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Discussões</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Reportar um bug</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Solicitar um novo recurso</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Verificar atualizações de versão de teste</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Procurar por atualizações</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Baixar e instalar</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Registro de alterações</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Tente novamente</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} está disponível</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>O Magpie está na versão mais recente</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Instalando</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>Avançado</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>Desativar DirectFlip</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>Cursor do mouse</value>\n  </data>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Sobre</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>O Magpie continuará em execução em segundo plano após o fechamento da janela principal</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Salvar</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Já está sendo utilizado</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Novo perfil</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Padrão do Windows</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Atalho inválido</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Selecione uma janela</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Perfis</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>Geral</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Padrão do Windows</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>Inicialização</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mais opções</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>É necessário executar como administrador para utilizar essa configuração</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>Executar sempre como administrador</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>Lembrar-me mais tarde</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} está disponível</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Orientações de contribuição</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>Licença</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mais opções</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Excluir</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Excluir</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mover para cima</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Mover para baixo</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Mover para cima</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Renomear</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Renomear</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>Adicionar efeito</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>Arrastar e soltar não é suportado ao executar como administrador</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>Arraste para reorganizar</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Mover para baixo</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>Novo modo de redimensionamento</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>Geral</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>Altura (fator de redimensionamento)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>Largura (em pixels)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>Largura (fator de redimensionamento)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>Definir o tamanho após o redimensionamento</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>Todos os monitores</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Procurar por atualizações automaticamente</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>Monitores intersectados pela janela de origem</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>Excluir</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Excluir</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Mover para cima</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Mover para baixo</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>Falha ao procurar por atualizações, tente novamente mais tarde</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Procurando por atualizações</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>Baixando</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>Falha no download</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>Bilinear</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>Modificar a velocidade do cursor ao ser redimensionado</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>Algoritmo de interpolação</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>Desfixar</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>Desativar cache de fonte</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>Aplica-se apenas ao dimensionamento em tela cheia. Suprime certas notificações e pop-ups de aplicativos quando ativado.</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>Simular tela cheia exclusiva durante o redimensionamento</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Erro</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>Não foi possível analisar alguns efeitos</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>Total</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Reiniciar Magpie</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>Efeito desconhecido</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>Opacidade</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>Exportar modos de redimensionamento</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>Importar modos de redimensionamento</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Configurações de Atualização</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Tempos</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Versão</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>Parâmetros de inicialização</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>Método de captura</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>Fixar</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>Sem redimensionamento</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Fator de redimensionamento</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>Igual à janela de origem</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>Padrão</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>Desativar cache de efeito</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>Capturar barra de título</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>Janela de origem</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>Tratar avisos como erros ao compilar efeitos</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Limitado à Captura Gráfica e Duplicação de Área de Trabalho</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>Corte personalizado</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>Direita</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>Parte superior</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>Falha ao analisar o arquivo de configuração</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>Janela principal</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Home</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Home</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Redimensionamento</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>Absoluto</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>Modo de jogo 3D</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>Maior proximidade</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Personalizado</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>Parte inferior</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>Esquerda</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>px</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>Oferece um pequeno ganho no desempenho. No entanto, os efeitos devem ser recompilados sempre que seus parâmetros são alterados</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>Incorporar os parâmetros do efeito</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>Essas configurações são exclusivas para desenvolvimento</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>Opções do desenvolvedor</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>Modo de depuração(debug)</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>Salvar código-fonte ao interpretar efeitos</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Sair</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Local do arquivo de configuração:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>O arquivo de configuração não é um JSON válido</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>Falha ao ler o arquivo de configuração</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>Sair</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>É necessário reiniciar para que a alteração entre em vigor</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>Criador de Perfil</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>Alternar para efeitos</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>Alternar para passos</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>Permitir redimensionamento de janelas maximizadas ou em tela cheia</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>Arquivo executável</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>Escolha o arquivo executável para iniciar o programa</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>Altere o arquivo executável para iniciar</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>Arquivo JSON</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>Modo desenvolvedor está habilitado.</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>Comitar</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>Limitador de taxa de quadros</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>Taxa de quadros máxima</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>Taxa de quadros</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>Detecção dinâmica</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>Sempre</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>Dinâmica</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>Ativar estatísticas para detecção dinâmica</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>Saiba mais</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>Suporte para toque</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>Se o suporte para toque falhar, Magpie pode pedir privilégios de administrador antes de redimensionar para realizar reparos.</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>Ativar suporte para toque</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>Essa opção não é compatível com alguns jogos antigos. Use com cuidado.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>Detecção de quadros duplicados</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>Nunca</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>Você precisa fornecer privilégios de administrador para alterar essa configuração</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>O modo de escala é inválido.</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>Falha ao ativar o suporte ao toque.</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>O redimensionamento desta janela não é suportado.</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>Ocorreu um erro ao capturar a janela. Tente utilizar um método de captura diferente.</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>Falha no redimensionamento</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>Consulte os logs para obter mais detalhes.</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>O dimensionamento de janelas maximizadas ou em tela cheia está desativado. Você pode alterar essa configuração na Página Inicial.</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>Magpie precisa ser executado como administrador para dimensionar esta janela.</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>A placa gráfica atual não suporta ID3D11Device5::CreateFence. Tente trocar a placa gráfica ou atualizar os drivers.</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>Taxa mínima de quadros</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>Desabilitar o uso de FP16 em shaders</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>Modo Benchmark</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>Estabiliza a frequência da GPU para reduzir a trepidação, mas pode levar a um maior consumo de energia</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>Nenhuma placa de vídeo compatível foi encontrada, então a renderização da CPU será usada. O desempenho pode não atender às expectativas.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Minimize\" xml:space=\"preserve\">\n    <value>Minimizar</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>Preencha com o nome do aplicativo</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>Preencha com o nome do processo</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>Preencha com o titulo da janela</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>Copiar</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>Recortar</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>Colar</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>Refazer</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>Selecionar Tudo</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>Desfazer</value>\n  </data>\n  <data name=\"Message_BannedInWindowedMode\" xml:space=\"preserve\">\n    <value>O redimensionamento desta janela não é suportado.</value>\n  </data>\n  <data name=\"Message_InvalidCropping\" xml:space=\"preserve\">\n    <value>Falha ao aplicar o recorte personalizado.</value>\n  </data>\n  <data name=\"Home_TouchSupport.Description\" xml:space=\"preserve\">\n    <value>Devido a restrições de segurança do sistema, o Magpie requer privilégios de acesso à interface do usuário para suportar entradas táteis.</value>\n  </data>\n  <data name=\"Home_Activation.Description\" xml:space=\"preserve\">\n    <value>Pressione o atalho para dimensionar ou interromper o dimensionamento da janela em primeiro plano.</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling.Header\" xml:space=\"preserve\">\n    <value>Atalho para ampliar para tela cheia</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Atalho para ampliar para tela cheia</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Atalho para dimensionamento em janela</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Atalho para dimensionamento em janela</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Description\" xml:space=\"preserve\">\n    <value>Aplica-se apenas ao dimensionamento em tela cheia</value>\n  </data>\n  <data name=\"Home_Toolbar.Description\" xml:space=\"preserve\">\n    <value>A barra de ferramentas aparece na parte superior da janela redimensionada, oferecendo recursos como exibição de FPS e captura de tela. No modo janela, ela também permite arrastar a janela redimensionada.</value>\n  </data>\n  <data name=\"Home_Toolbar.Header\" xml:space=\"preserve\">\n    <value>Barra de ferramentas</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState.Header\" xml:space=\"preserve\">\n    <value>Estado inicial da barra de ferramentas</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AlwaysShow.Content\" xml:space=\"preserve\">\n    <value>Sempre mostrar</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AutoHide.Content\" xml:space=\"preserve\">\n    <value>Ocultar automaticamente</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Off.Content\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle.Header\" xml:space=\"preserve\">\n    <value>Atalho para alternar o estado da barra de ferramentas</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-ru.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>О программе</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Активация</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Параметры</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Больше настроек</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Удалить</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Опустить</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Поднять</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Переименовать</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Заполнение</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Установка</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>Расширенные</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>Курсор</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Множитель масштабирования</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Пользовательский</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>Не удалось прочитать файл настроек</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>Выйти</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>Главное окно</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>Для вступления изменений в силу требуется перезапуск</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Перезапустить Magpie</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Главная</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Отложенное масштабирование</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>Отмена</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Задержка в секундах</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>Отмена</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Нажмите комбинацию клавиш для изменения горячей клавиши</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Уже используется</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Недопустимая горячая клавиша</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Сохранить</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Действительны горячие клавиши начинающиеся с клавиши Windows, Ctrl, Alt или Shift.</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>О программе</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>Профиль по умолчанию</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Главная</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>Новый профиль</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Выберите окно</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Копировать из</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Создать</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Название</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Откройте новое окно для создания профиля</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Новый профиль</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Профили</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Настройки масштабирования</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Настройки масштабирования</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Расширенные</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>Общие</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Язык</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Windows (по умолчанию)</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Портативный режим</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Открыть расположение файла настроек</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Запускать при включении системы</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>Magpie продолжит работать в фоне после закрытия главного окна</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>Отображение приложения в области уведомлений</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Тема</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Тёмная</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Windows (по умолчанию)</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Светлая</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>Запуск</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>Экспортировать</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>Импортировать</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Больше настроек</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>Для использования этой настройки нужно запустить приложение от имени администратора</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>Всегда запускать приложение от имени администратора</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>Периодически проверять наличие обновлений</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Скачать и установить</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Информация о версии</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>Напомнить позже</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} доступно</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Другие ссылки</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Руководство по содействию</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>ЧаВо</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>Лицензия</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Github репозиторий</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>Отлично</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Переименовать</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>Добавить эффект</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Удалить</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Удалить</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>Его используют следующие профили:</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Вы уверены, что хотите удалить этот режим масштабирования?</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>Перетаскивание не поддерживается при работе от имени администратора</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>Перетащите, чтобы переупорядочить</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Опустить</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Поднять</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>Новый режим масштабирования</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Новый режим масштабирования</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Масштабирование</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Копировать из</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>Ничего</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Создать</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Название</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>Высота (множитель масштабирования)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>Высота (пиксели)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>Ширина (множитель масштабирования)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>Заполняет экран, изображение может быть растянуто</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>Вписывание</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>Ширина (пиксели)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>Тип</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>Абсолютно</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>Установить размер после масштабирования</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>Множитель</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>Выставить множитель масштабирования относительно входного изображения</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>Все мониторы</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>Выставить множитель масштабирования после заполнения экрана пропорциональным масштабированием</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>Общие</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>Режим 3D игры</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>Автоматическое масштабирование когда на переднем плане</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>Способ захвата</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>Предпочтительные мониторы</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>Ближайший монитор к исходному окну</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>Пересекаемые исходным окном мониторы</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>Режим масштабирования</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Запуск</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Больше настроек</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>Удалить</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Удалить</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Вы уверены, что хотите удалить этот профиль?</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>Открыть расположение программы</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>Переименовать</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>Отлично</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Переименовать</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Переупорядочить</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Опустить</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Поднять</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Переупорядочить</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>Ничего</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>Производительность</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>Видеокарта</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Обратная связь</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Обсуждения</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Сообщить об ошибке</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Запросить функцию</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Проверять предварительные обновления</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Автоматически проверять наличие обновлений</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Проверить наличие обновлений</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>Не удалось проверить наличие обновлений, повторите попытку позже</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Проверяем наличие обновлений</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>Отмена</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Скачать и установить</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Информация о версии</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Повторить попытку</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} доступно</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie уже актуально</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>Скачивание не удалось</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>Скачивание</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>Отключить DirectFlip</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>Подогнать скорость курсора при масштабировании</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>Алгоритм интерполяции</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>Билинейный</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>Ближайший сосед</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>Не масштабировать</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>Как в исходном окне</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>По умолчанию</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>Исходное окно</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Ограничено Graphics Capture и Desktop Duplication</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>Захват заголовка окна</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>Пользовательская обрезка</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>Снизу</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>Слева</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>пкс.</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>Справа</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>Сверху</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>Даёт небольшой прирост производительности. Однако эффекты должны быть перекомпилированы при каждом изменении их параметров</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>Сделать параметры эффекта встроенными</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>Применяется только к полноэкранному масштабированию. При включении подавляет определенные уведомления и всплывающие окна приложений</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>Симуляция эксклюзивного полного экрана при масштабировании</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Ошибка</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>Эти настройки предназначены только для разработчиков</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>Настройки разработчика</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>Режим отладки</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>Отключить кэш эффектов</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>Сохранение исходного кода при анализе эффектов</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>Рассматривать предупреждения как ошибки при компиляции эффектов</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Выйти</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Расположение файла настроек:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>Файл настроек не является правильным JSON</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>Не удалось анализировать файл настроек</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Выкл.</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>Экспорт режимов масштабирования</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>Импорт режимов масштабирования</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>Некоторые эффекты нельзя анализировать</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>Неизвестный эффект</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Версия</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Обновить настройки</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>Параметры запуска</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>Непрозрачность</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>Профилировщик</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>Способ захвата</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>Заблокировать</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Тайминги</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>Итого</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>Разблокировать</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>Переключиться на эффекты</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>Переключиться на проходы</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>Выключить кэш шрифтов</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>Разрешить масштабирование развёрнутых или полноэкранных окон</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>JSON файл</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>Изменить исполняемый файл для запуска</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>Исполняемый файл</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>Выберите исполняемый файл для запуска программы</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>Коммит</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>Включен режим разработчика.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>Обнаружение повторых кадров</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>Всегда</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>Динамически</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>Включить статистику для динамического обнаружения</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>Динамическое обнаружение</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>Ограничитель частоты кадров</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>Максимальная частота кадров</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>Никогда</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>Частота кадров</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>Подробнее</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>Поддержка сенсорного ввода</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>Включить поддержку сенсорного ввода</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>Если сенсорная поддержка не работает, Magpie может запросить права администратора перед увеличением для восстановления.</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>Чтобы изменить эту настройку вам понадобятся права администратора</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>Эта настройка несовместима с рядом старых игр. Используйте с осторожностью.</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>Не удалось включить поддержку сенсорного ввода.</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>Magpie нужно быть запущенной от администратора для масштабирования этого окна.</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>Более подробную информацию можно найти в журналах.</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>При захвате этого окна произошла ошибка. Пожалуйста, попробуйте использовать другой метод захвата.</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>Текущая видеокарта не поддерживает ID3D11Device5::CreateFence. Попробуйте сменить видеокарту или обновить драйверы.</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>Масштабирование не удалось</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>Режим масштабирования неверен.</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>Масштабирование этого окна не поддерживается.</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>Масштабирование максимизированных или полноэкранных окон отключено. Эту настройку можно изменить на главной странице.</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>Минимальная частота кадров</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>Стабилизирует частоту GPU для уменьшения подвисания, но может привести к повышенному энергопотреблению</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>Не найдено совместимой видеокарты, так что вместо нее будет использоваться отрисовка на ЦП. Производительность может не соответствовать ожиданиям.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>Не использовать FP16 в шейдерах</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>Режим бенчмарка</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>Заполнить имем приложения</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>Заполнить названием процесса</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>Заполнить заголовком окна</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>Копировать</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>Вырезать</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>Вставить</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>Повтор</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>Выбрать всё</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>Откат</value>\n  </data>\n  <data name=\"Message_BannedInWindowedMode\" xml:space=\"preserve\">\n    <value>Масштабирование для этого окна не поддерживается.</value>\n  </data>\n  <data name=\"Message_InvalidCropping\" xml:space=\"preserve\">\n    <value>Не удалось применить пользовательское обрезание.</value>\n  </data>\n  <data name=\"Home_TouchSupport.Description\" xml:space=\"preserve\">\n    <value>Из-за ограничений безопасности системы, Magpie требуются права UIAccess для поддержки сенсорного ввода.</value>\n  </data>\n  <data name=\"Home_Activation.Description\" xml:space=\"preserve\">\n    <value>Нажмите сочетание клавиш, чтобы масштабировать или остановить масштабирование окна переднего плана.</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling.Header\" xml:space=\"preserve\">\n    <value>Сочетание для полноэкранного масштабирования</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Сочетание для полноэкранного масштабирования</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Сочетание для оконного масштабирования</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Сочетание для оконного масштабирования</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Description\" xml:space=\"preserve\">\n    <value>Применимо только к полноэкранному масштабированию</value>\n  </data>\n  <data name=\"Home_Toolbar.Description\" xml:space=\"preserve\">\n    <value>Панель инструментов отображается в верхней части масштабируемого окна, предоставляя такие функции, как отображение FPS и захват скриншотов. В оконном режиме она также позволяет перетаскивать масштабируемое окно.</value>\n  </data>\n  <data name=\"Home_Toolbar.Header\" xml:space=\"preserve\">\n    <value>Панель инструментов</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState.Header\" xml:space=\"preserve\">\n    <value>Исходное состояние панели инструментов</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AlwaysShow.Content\" xml:space=\"preserve\">\n    <value>Всегда показывать</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AutoHide.Content\" xml:space=\"preserve\">\n    <value>Автоскрытие</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Off.Content\" xml:space=\"preserve\">\n    <value>Выкл</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle.Header\" xml:space=\"preserve\">\n    <value>Сочетание переключения состояния панели инструментов</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Сочетание переключения состояния панели инструментов</value>\n  </data>\n  <data name=\"Message_ToolbarIn3DGameMode\" xml:space=\"preserve\">\n    <value>Панель инструментов не поддерживается в режиме 3D-игры.</value>\n  </data>\n  <data name=\"Message_ToolbarNewState\" xml:space=\"preserve\">\n    <value>Панель инструментов: {}</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Demo\" xml:space=\"preserve\">\n    <value>Демо окно ImGui</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Pin\" xml:space=\"preserve\">\n    <value>Прикрепить панель инструментов</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot\" xml:space=\"preserve\">\n    <value>Сделать скриншот</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Profiler\" xml:space=\"preserve\">\n    <value>Окно профилирования</value>\n  </data>\n  <data name=\"Message_Windowed3DGameMode\" xml:space=\"preserve\">\n    <value>В режиме 3D-игры оконное масштабирование не поддерживается.</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Description\" xml:space=\"preserve\">\n    <value>Включает оптимизации под 3D-игры, но несовместимо с панелью инструментов и масштабированием окна</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory.Header\" xml:space=\"preserve\">\n    <value>Директория сохранения скриншотов</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory_Change.Content\" xml:space=\"preserve\">\n    <value>Изменить</value>\n  </data>\n  <data name=\"Dialog_SetlectScreenshotSaveDirectory_Title\" xml:space=\"preserve\">\n    <value>Выбрать директорию сохранения скриншотов</value>\n  </data>\n  <data name=\"Message_ScreenshotSaved\" xml:space=\"preserve\">\n    <value>Скриншот сохранён как {}</value>\n  </data>\n  <data name=\"Message_ScreenshotFailed\" xml:space=\"preserve\">\n    <value>Скриншот не удался.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_Description\" xml:space=\"preserve\">\n    <value>ПКМ чтобы экспортировать промежуточный результат</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_PopupTitle\" xml:space=\"preserve\">\n    <value>Экспорт промежуточного результата</value>\n  </data>\n  <data name=\"Profile_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Оконное мастабирование</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Начальный множитель масштабирования</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Auto.Content\" xml:space=\"preserve\">\n    <value>Авто</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Пользовательский</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Description\" xml:space=\"preserve\">\n    <value>Помогает избежать определенных проблем совместимости, но может значительно увеличить задержку</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Disabled.Content\" xml:space=\"preserve\">\n    <value>Выключено</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Fullscreen.Content\" xml:space=\"preserve\">\n    <value>Полноэкранное мастабирование</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Windowed.Content\" xml:space=\"preserve\">\n    <value>Оконное мастабирование</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Description\" xml:space=\"preserve\">\n    <value>Применимо только к полноэкранному масштабированию</value>\n  </data>\n  <data name=\"Home_TouchSupport_Warn.Title\" xml:space=\"preserve\">\n    <value>Панель инструментов несовместима с сенсорным вводом.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close\" xml:space=\"preserve\">\n    <value>Остановить масштабирование</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close_Description\" xml:space=\"preserve\">\n    <value>ПКМ для закрытия панели инструментов</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToFullscreen\" xml:space=\"preserve\">\n    <value>Переключиться к полноэкранному масштабированию</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToWindowed\" xml:space=\"preserve\">\n    <value>Переключиться к оконному масштабированию</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Fullscreen.Header\" xml:space=\"preserve\">\n    <value>Полноэкранное масштабирование</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Windowed.Header\" xml:space=\"preserve\">\n    <value>Оконное масштабирование</value>\n  </data>\n  <data name=\"Message_ExportScalingModesFailed\" xml:space=\"preserve\">\n    <value>Не удалось экспортировать режимы масштабирования.</value>\n  </data>\n  <data name=\"Message_ImportScalingModesFailed\" xml:space=\"preserve\">\n    <value>Не удалось импортировать режимы масштабирования.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_LocateLogs.Header\" xml:space=\"preserve\">\n    <value>Открыть местонахождение логов</value>\n  </data>\n  <data name=\"Message_WindowedDesktopDuplication\" xml:space=\"preserve\">\n    <value>Оконное масштабирование не поддерживается захватом Desktop Duplication.</value>\n  </data>\n  <data name=\"Profile_General_DesktopDuplicationWarning.Title\" xml:space=\"preserve\">\n    <value>Этот метод захвата несовместим с оконным масштабированием.</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Description\" xml:space=\"preserve\">\n    <value>Главное окно не будет отображаться если включена опция «Отображать приложение в системном лотке»</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Description\" xml:space=\"preserve\">\n    <value>Масштабировать переднее окно после {}с</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Start\" xml:space=\"preserve\">\n    <value>Начать</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Fullscreen\" xml:space=\"preserve\">\n    <value>Масшабировать после {}с (полноэкранно)</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Windowed\" xml:space=\"preserve\">\n    <value>Масштабировать после {}с (оконно)</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Minimize\" xml:space=\"preserve\">\n    <value>Свернуть</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide.Header\" xml:space=\"preserve\">\n    <value>Автоскрытие курсора при неактивности</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide_Delay.Header\" xml:space=\"preserve\">\n    <value>Время до скрытия в секундах</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Description\" xml:space=\"preserve\">\n    <value>Действует только для полноэкранного масштабирования</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Header\" xml:space=\"preserve\">\n    <value>Выравнивание вывода</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomCenter.Content\" xml:space=\"preserve\">\n    <value>Внизу по центру</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomLeft.Content\" xml:space=\"preserve\">\n    <value>Внизу слева</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomRight.Content\" xml:space=\"preserve\">\n    <value>Внизу справа</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Center.Content\" xml:space=\"preserve\">\n    <value>Центр</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Left.Content\" xml:space=\"preserve\">\n    <value>Лево</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Right.Content\" xml:space=\"preserve\">\n    <value>Право</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopCenter.Content\" xml:space=\"preserve\">\n    <value>Сверху по центру</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopLeft.Content\" xml:space=\"preserve\">\n    <value>Сверху слева</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopRight.Content\" xml:space=\"preserve\">\n    <value>Сверху справа</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableTopmost.Content\" xml:space=\"preserve\">\n    <value>Отключить функцию «Всегда поверх всех окон»</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-ta.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>பற்றி</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>செயல்படுத்தல்</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>ரத்துசெய்</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>அளவு</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>எதுவுமில்லை</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>மாக்பியை மறுதொடக்கம் செய்யுங்கள்</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>அறியப்படாத விளைவு</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>ஒளிபுகாநிலை</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>திறக்க</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>நேரம்</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>விளைவுகளுக்கு மாறவும்</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>பாச்களுக்கு மாறவும்</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>மாறும் கண்டறிதல்</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>அதிகபட்ச அல்லது முழுத்திரை சாளரங்களின் அளவிடுதல் முடக்கப்பட்டுள்ளது. இந்த அமைப்பை முகப்பு பக்கத்தில் மாற்றலாம்.</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>இந்த சாளரத்தை அளவிட மாக்பியை நிர்வாகியாக இயக்க வேண்டும்.</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>மேலும் விவரங்களுக்கு பதிவுகளைப் பார்க்கவும்.</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>இந்த சாளரத்தைக் கைப்பற்றும்போது பிழை ஏற்பட்டது. வேறு பிடிப்பு முறையைப் பயன்படுத்த முயற்சிக்கவும்.</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>தற்போதைய கிராபிக்ச் அட்டை ID3D11Device5 :: உயிரினத்தை ஆதரிக்காது. கிராபிக்ச் அட்டையை மாற்ற அல்லது இயக்கிகளைப் புதுப்பிக்க முயற்சிக்கவும்.</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>அளவிடுதல் தோல்வியடைந்தது</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>இணக்கமான கிராபிக்ச் அட்டை எதுவும் காணப்படவில்லை, எனவே அதற்கு பதிலாக சிபியு வழங்குதல் பயன்படுத்தப்படும். செயல்திறன் எதிர்பார்ப்புகளை நிறைவு செய்யாது.</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>குறைந்தபட்ச பிரேம் வீதம்</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>தடுமாற்றத்தைக் குறைக்க சி.பீ.யூ அதிர்வெண்ணை உறுதிப்படுத்துகிறது, ஆனால் அதிக மின் நுகர்வுக்கு வழிவகுக்கும்</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>வீடு</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>தாமதமான அளவிடுதல்</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>விநாடிகளில் நேரந்தவறுகை</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>ரத்துசெய்</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>இந்த குறுக்குவழியை மாற்ற விசைகளின் கலவையை அழுத்தவும்</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>ஏற்கனவே பயன்பாட்டில் உள்ளது</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>தவறான குறுக்குவழி</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>சேமி</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>சாளரங்கள் கீ, சி.டி.ஆர்.எல், ஏ.எல்.டி அல்லது சிப்ட் ஆகியவற்றுடன் தொடங்கும் குறுக்குவழிகள் மட்டுமே செல்லுபடியாகும்.</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>பற்றி</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>இயல்புநிலைகள்</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>வீடு</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>புதிய சுயவிவரம்</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>ஒரு சாளரத்தைத் தேர்ந்தெடுக்கவும்</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>இருந்து நகலெடுக்கவும்</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>உருவாக்கு</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>பெயர்</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>சுயவிவரத்தை உருவாக்க புதிய சாளரத்தைத் திறக்கவும்</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>புதிய சுயவிவரம்</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>சுயவிவரங்கள்</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>அளவிடுதல் முறைகள்</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>அளவிடுதல் முறைகள்</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>மேம்பட்ட</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>பொது</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>மொழி</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>சாளரங்கள் இயல்புநிலை</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>சிறிய பயன்முறை</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>உள்ளமைவு கோப்பு இருப்பிடத்தைத் திறக்கவும்</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>தொடக்கத்தில் இயக்கவும்</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>கருப்பொருள்</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>முதன்மையான சாளரம் மூடப்பட்ட பின் மாக்பி பின்னணியில் தொடர்ந்து இயங்கும்</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>கணினி தட்டில் பயன்பாட்டைக் காண்பி</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>இருண்ட</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>சாளரங்கள் இயல்புநிலை</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>ஒளி</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>அணை</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>ஆன்</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>ஏவுதல்</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>ஏற்றுமதி</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>இறக்குமதி</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>மேலும் விருப்பங்கள்</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>இந்த அமைப்பைப் பயன்படுத்த நீங்கள் நிர்வாகியாக இயங்க வேண்டும்</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>எப்போதும் நிர்வாகியாக இயக்கவும்</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>அவ்வப்போது புதுப்பிப்புகளைச் சரிபார்க்கவும்</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>பதிவிறக்கம் செய்து நிறுவவும்</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>வெளியீட்டு குறிப்புகள்</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>பின்னர் எனக்கு நினைவூட்டுங்கள்</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{with கிடைக்கிறது</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>பிற இணைப்புகள்</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>பங்களிப்பு வழிகாட்டுதல்கள்</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>கேள்விகள்</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>உரிமம்</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>அறிவிலிமையம் களஞ்சியம்</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>மேலும் விருப்பங்கள்</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>அளவுருக்கள்</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>நீக்கு</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>கீழே செல்லுங்கள்</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>மேலே செல்லுங்கள்</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>மறுபெயரிடுங்கள்</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>சரி</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>விளைவைச் சேர்க்கவும்</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>மறுபெயரிடுங்கள்</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>நீக்கு</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>நீக்கு</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>இது பின்வரும் சுயவிவரங்களால் பயன்படுத்தப்படுகிறது:</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>இந்த அளவிடுதல் பயன்முறையை நீக்க விரும்புகிறீர்களா?</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>நிர்வாகியாக இயங்கும் போது இழுத்து விடுங்கள்</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>மறுவரிசைப்படுத்த இழுக்கவும்</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>கீழே செல்லுங்கள்</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>மேலே செல்லுங்கள்</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>புதிய அளவிடுதல் முறை</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>புதிய அளவிடுதல் முறை</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>இருந்து நகலெடுக்கவும்</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>உருவாக்கு</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>பெயர்</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>உயரம் (அளவிடுதல் காரணி)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>உயரம் (பிக்சல்கள்)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>அகலம் (அளவிடுதல் காரணி)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>அகலம் (பிக்சல்கள்)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>வகை</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>தனி, சார்பிலா</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>அளவீடுக்குப் பிறகு அளவை அமைக்கவும்</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>காரணி</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>உள்ளீட்டு படத்துடன் தொடர்புடைய அளவிடுதல் காரணியை அமைக்கவும்</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>நிரப்பவும்</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>திரையை நிரப்புகிறது, படம் நீட்டப்படலாம்</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>பொருத்தம்</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>விகிதாசார அளவிடுதலுடன் திரையை நிரப்பிய பின் அளவிடுதல் காரணியை அமைக்கவும்</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>பொது</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>3D விளையாட்டு முறை</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>முன்புறத்தில் இருக்கும்போது ஆட்டோ அளவுகோல்</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>பிடிப்பு முறை</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>மூல சாளரத்திற்கு மிக அருகில் கண்காணிக்கவும்</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>மூல சாளரத்தால் வெட்டப்பட்ட மானிட்டர்கள்</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>அளவிடுதல் முறை</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>விருப்பமான மானிட்டர்கள்</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>ஏவுதல்</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>அனைத்து மானிட்டர்களும்</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>மேலும் விருப்பங்கள்</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>நீக்கு</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>நீக்கு</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>இந்த சுயவிவரத்தை நீக்க விரும்புகிறீர்களா?</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>நிரல் இருப்பிடம் திறந்த</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>மறுபெயரிடுங்கள்</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>சரி</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>மறுபெயரிடுங்கள்</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>மறுவரிசை</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>கீழே செல்லுங்கள்</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>மேலே செல்லுங்கள்</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>மறுவரிசை</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>செயல்திறன்</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>கிராபிக்ச் அட்டை</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>கருத்து</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>எதுவுமில்லை</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>விவாதங்கள்</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>ஒரு பிழையைப் புகாரளிக்கவும்</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>ஒரு அம்சத்தைக் கோருங்கள்</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>புதுப்பிப்புகளை சரிபார்க்கவும்</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>புதுப்பிப்புகளை சரிபார்க்கத் தவறிவிட்டது, தயவுசெய்து பின்னர் மீண்டும் முயற்சிக்கவும்</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>புதுப்பிப்புகளைச் சரிபார்க்கிறது</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>முன்னோட்ட புதுப்பிப்புகளைச் சரிபார்க்கவும்</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>புதுப்பிப்புகளை தானாக சரிபார்க்கவும்</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>ரத்துசெய்</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>பதிவிறக்கம் செய்து நிறுவவும்</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>வெளியீட்டு குறிப்புகள்</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>மீண்டும் முயற்சிக்கவும்</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{with கிடைக்கிறது</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>மாக்பி புதுப்பித்த நிலையில் உள்ளது</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>பதிவிறக்கம் தோல்வியடைந்தது</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>பதிவிறக்குகிறது</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>நிறுவுகிறது</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>மேம்பட்ட</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>டைரக்ட்ஃப்ளிப்பை முடக்கு</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>கர்சர்</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>அளவிடப்படும் போது கர்சர் வேகத்தை சரிசெய்யவும்</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>இடைக்கணிப்பு வழிமுறை</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>பிலினியர்</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>அருகிலுள்ள அரிச்போர்</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>அளவிடுதல் காரணி</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>தனிப்பயன்</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>அளவிடுதல் இல்லை</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>மூல சாளரத்தைப் போலவே</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>இயல்புநிலை</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>மூல சாளரம்</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>தலைப்பு பட்டியைப் பிடிக்கவும்</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>கிராபிக்ச் பிடிப்பு மற்றும் டெச்க்டாப் நகலெடுப்புக்கு மட்டுமே</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>தனிப்பயன் பயிர்</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>கீழே</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>இடது</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>பி.எக்ச்</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>வலது</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>மேலே</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>ஒரு சிறிய செயல்திறன் ஊக்கத்தை அளிக்கிறது. இருப்பினும், ஒவ்வொரு முறையும் அவற்றின் அளவுருக்கள் மாற்றப்படும் போது விளைவுகள் மீண்டும் தொகுக்கப்பட வேண்டும்</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>விளைவு அளவுருக்களை இன்லைன் செய்யுங்கள்</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>சில பயன்பாடுகளிலிருந்து அறிவிப்புகள் மற்றும் பாப்-அப்கள் தடுக்கப்படும்</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>அளவிடும்போது பிரத்யேக முழுத்திரனை உருவகப்படுத்துங்கள்</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>பிழை</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>இந்த அமைப்புகள் வளர்ச்சி பயன்பாட்டிற்கு மட்டுமே</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>உருவாக்குபவர் விருப்பங்கள்</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>பிழைத்திருத்த முறை</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>விளைவு தற்காலிக சேமிப்பை முடக்கு</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>பாகுபடுத்தும் போது மூலக் குறியீட்டை சேமிக்கவும்</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>விளைவுகளைத் தொகுக்கும்போது எச்சரிக்கைகளை பிழைகளாகக் கருதுங்கள்</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>வெளியேறு</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>உள்ளமைவு கோப்பு இடம்:\n {}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>உள்ளமைவு கோப்பு சரியான சாதொபொகு அல்ல</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>உள்ளமைவு கோப்பை அலசத் தவறிவிட்டது</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>உள்ளமைவு கோப்பைப் படிக்கத் தவறிவிட்டது</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>மாற்றம் நடைமுறைக்கு வர மறுதொடக்கம் தேவை</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>சில விளைவுகளை பாகுபடுத்த முடியாது</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>ஏற்றுமதி அளவிடுதல் முறைகள்</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>அளவிடுதல் முறைகளை இறக்குமதி செய்க</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>வெளியேறு</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>முதன்மை சாளரம்</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>அமைப்புகளை புதுப்பிக்கவும்</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>பதிப்பு</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>அளவுருக்களை அறிமுகப்படுத்துங்கள்</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>விவரக்குறிப்பு</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>பிடிப்பு முறை</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>பூட்டு</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>மொத்தம்</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>எழுத்துரு தற்காலிக சேமிப்பை முடக்கு</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>அளவிடுதல் அதிகபட்ச அல்லது முழுத்திரை சாளரங்களை அனுமதிக்கவும்</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>சாதொபொகு கோப்பு</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>தொடங்குவதற்கு இயங்கக்கூடிய கோப்பை மாற்றவும்</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>இயங்கக்கூடிய கோப்பு</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>நிரலைத் தொடங்க இயங்கக்கூடிய கோப்பைத் தேர்வுசெய்க</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>பிரேம் வீத வரம்பு</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>அதிகபட்ச பிரேம் வீதம்</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>கமிட்</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>உருவாக்குபவர் பயன்முறை இயக்கப்பட்டது.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>நகல் பிரேம் கண்டறிதல்</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>எப்போதும்</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>மாறும்</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>ஒருபோதும்</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>மாறும் கண்டறிதலுக்கான புள்ளிவிவரங்களை இயக்கவும்</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>பிரேம் வீதம்</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>தொடு ஆதரவை இயக்கவும்</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>இந்த அமைப்பை மாற்ற நிர்வாகி சலுகைகளை நீங்கள் வழங்க வேண்டும்</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>மேலும் அறிக</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>அளவிடுதல் முறை தவறானது.</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>ஆதரவைத் தொடு</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>தொடு உதவி தோல்வியுற்றால், பழுதுபார்ப்புகளைச் செய்ய அளவிடுவதற்கு முன் நிர்வாகி சலுகைகளை மாக்பி கோரலாம்.</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>இந்த விருப்பம் சில பழைய விளையாட்டுகளுடன் பொருந்தாது. தயவுசெய்து அதை எச்சரிக்கையுடன் பயன்படுத்தவும்.</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>தொடு ஆதரவை இயக்குவதில் தோல்வி.</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>இந்த சாளரத்தின் அளவிடுதல் ஆதரிக்கப்படவில்லை.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>சேடர்களில் FP16 பயன்பாட்டை முடக்கு</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>பெஞ்ச்மார்க் பயன்முறை</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>பயன்பாட்டு பெயரை நிரப்பவும்</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>செயல்முறை பெயரை நிரப்பவும்</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>சாளர தலைப்பு நிரப்பவும்</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>நகலெடு</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>வெட்டு</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>அனைத்தையும் தெரிவுசெய்</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>செயல்தவிர்</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>ஒட்டு</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>மீண்டும்செய்</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-tr.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>Tür</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>Ekranı orantılı ölçek ile doldurduktan sonra ölçek etkenini ayarla</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>Tamam</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>Gelişmiş</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>Tercih edilen monitörler</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>Tüm monitörler</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Sil</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>Program konumunu aç</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>Adlandır</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>Grafik kartı</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Adlandır</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Diğer seçenekler</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>Sil</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Bu profili silmek istediğinizden emin misiniz?</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} mevcut</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Özel</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>Sol</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>Sağ</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Aktivasyon</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Gecikmeli ölçek</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>İptal</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Gecikme saniyesi</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>İptal</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Zaten kullanımda</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Geçersiz kısayol</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Kaydet</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Yalnızca Windows tuşu, Ctrl, Alt veya Shift ile başlayan kısayollar geçerlidir.</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>Hakkında</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>Varsayılanlar</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>Yeni profil</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Bir pencere seç</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Şuradan kopyala</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>İsim</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Profil oluşturmak için yeni bir pencere aç</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Yeni profil</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Profiller</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Ölçek yapılandırması</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Gelişmiş</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>Genel</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Dil</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Windows varsayılanı</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Taşınabilir kip</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Yapılandırma dosyası konumunu aç</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Başlangıçta çalıştır</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>Uygulamayı sistem tepsisinde görüntüle</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Tema</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Koyu</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Windows varsayılanı</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Beyaz</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>Açık</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Başlangıç</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Başlangıç</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>Başlat</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>Dışarı aktar</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>İçeri aktar</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Diğer seçenekler</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>Bu ayarı kullanmak için yönetici olarak çalıştırmak gerekir</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>Her zaman yönetici olarak çalıştır</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>Güncellemeleri düzenli kontrol et</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>İndir ve kur</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Sürüm notları</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>Sonra hatırlat</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} mevcut</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Diğer bağlantılar</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>SSS</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>Lisans</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Github deposu</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Parametreler</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Diğer seçenekler</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Sil</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Aşağı taşı</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Yukarı taşı</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Adlandır</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>Tamam</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Adlandır</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>Efekt ekle</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Sil</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Sil</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>Aşağıdaki profiller tarafından kullanılmaktadır:</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Bu ölçek kipini silmek istediğinizden emin misiniz?</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>Sıralamak için sürükle</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Aşağı taşı</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Yukarı taşı</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Yeni ölçek kipi</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Şuradan kopyala</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>Yok</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Oluştur</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>İsim</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>Yükseklik (ölçek etkeni)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>Yükseklik (piksel)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>Genişlik (ölçek etkeni)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>Genişlik (piksel)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>Ölçek sonrası boyutu ayarla</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>Etken</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>Giriş görüntüsüne göre ölçek etkeni ayarla</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Doldur</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>Ekranı doldurur, görüntü uzatılabilir</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>Sığdır</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>Genel</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>3D oyun kipi</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>Ön planda otomatik ölçeklendir</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>Yakalama yöntemi</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>Kaynak pencereye en yakın monitör</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>Kaynak pencereyle kesişen monitör</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>Ölçek kipi</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Başlat</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Aşağı taşı</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Yukarı taşı</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>Yok</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>Performans</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>Salt</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Sırala</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Sırala</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Geri bildirim</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Tartışmalar</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Bir hata bildir</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Özellik iste</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>Güncellemeler kontrol edilemedi, daha sonra tekrar deneyin</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Güncellemeler kontrol ediliyor</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>İptal</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>İndir ve kur</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Sürüm notları</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Tekrar dene</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie güncel</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>İndirme başarısız</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>İndiriliyor</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Kuruluyor</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>DirectFlip devre dışı bırak</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>İmleç</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>Ölçek sonrası imleç hızını ayarla</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>İnterpolasyon algoritması</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>Çift doğrusal</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>En yakın</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Ölçek etkeni</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>Ölçek yok</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>Kaynak pencereyle aynı</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>Varsayılan</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>Kaynak pencere</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Grafik Yakalama ve Masaüstü Çoğaltma ile Sınırlı</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>Başlık çubuğunu yakala</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>Özel kırpma</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>pk</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>Üst</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>Küçük bir performans artışı sağlar. Ancak, parametreleri her değiştirildiğinde efektlerin yeniden derlenmesi gerekir</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>Efekt parametrelerini satır içi yap</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>Belirli uygulamalardan gelen bildirimler ve açılır pencereler engellenir</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>Ölçekleme sırasında orjinal tam ekranı taklit edin</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Hata</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>Bu ayarlar yalnızca geliştirme amaçlı kullanım içindir</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>Geliştirici seçenekleri</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>Hata kipi</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>Efekt önbelleğini devre dışı bırak</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>Efektleri ayrıştırırken kaynak kodunu kaydet</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>Efektleri derlerken uyarıları hata olarak ele alma</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Çıkış</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Yapılandırma dosyası konumu:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>Yapılandırma dosyası geçerli bir JSON değil</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>Yapılandırma dosyası ayrıştırılamadı</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>Yapılandırma dosyası okunamadı</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>Çıkış</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>Ana pencere</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>Değişikliğin etkili olması için yeniden başlatılmalı</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Yeniden başlat</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>Bilinmeyen efekt</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>Bazı efektler ayrıştırılamıyor</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>Ölçek kiplerini dışa aktar</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>Ölçek kiplerini içe aktar</value>\n  </data>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Hakkında</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Bu kısayolu değiştirmek için bir tuş kombinasyonuna basın</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Oluştur</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Ölçek yapılandırması</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>Magpie, ana pencere kapatıldıktan sonra arka planda çalışmaya devam edecek</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Katkı kuralları</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>Yönetici olarak çalışırken sürükle ve bırak desteklenmez</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Ölçek</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>Yeni ölçek kipi</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Güncellemeleri kontrol et</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Güncellemeleri otomatik kontrol et</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Önizleme güncellemelerini kontrol et</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Güncelleme ayarları</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Sürüm</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>Başlatma parametreleri</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>Profil oluştur</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>Yakalama yöntemi</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>Toplam</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>Kilitle</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>Saydamlık</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>Kilidi aç</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Zamanlamalar</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>Geçişleri değiştir</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>Efektleri değiştir</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>Yazı tipi önbelleği etkisizleştir</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>Ekranı kaplayan veya tam ekran pencere ölçeğine izin ver</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>Çalıştırmak için yürütülebilir dosyayı değiştir</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>Programı başlatmak için yürütülebilir dosyayı seç</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>JSON dosyası</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>Çalıştırılabilir dosya</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>Geliştirici modu etkin.</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>Commit</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>Kare hızı sınırlayıcısı</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>Maksimum kare hızı</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>Her zaman</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>Asla</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>Dinamik algılama için istatistikleri etkinleştir</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>Dinamik algılama</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>Kare hızı</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>Dinamik</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>Yinelenen kare algılaması</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>Dokunmayı aktif et</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>Bu ayarı değiştirmek için yönetici izni vermen gerekiyor</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>Eğer dokunma özelliği başarısız olursa, Magpie sorunu düzeltmek için yönetici izni isteyebilir.</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>Daha fazla bilgi edin</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>Dokunma desteği</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>Bu seçenek bazı eski oyunlarla uyumlu değildir. Lütfen dikkatli kullanın.</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>Dokunmatik desteği etkinleştirilemedi.</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>Mevcut grafik kartı ID3D11Device5::CreateFence desteklemiyor. Lütfen grafik kartını değiştirmeyi veya sürücüleri güncellemeyi deneyin.</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>Ölçekleme başarısız</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>Bu pencereyi ölçeklendirmek için Magpie yönetici olarak çalıştırılmalı.</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>Bu pencereyi yakalarken bir hata oluştu. Lütfen farklı bir yakalama yöntemi kullanmayı deneyin.</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>Bu pencerenin ölçeklenmesi desteklenmiyor.</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>Ekranı kaplayan veya tam ekran pencerelerin ölçeklenmesi devre dışı bırakıldı. Bu ayarı Ana sayfadan değiştirebilirsiniz.</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>Ölçekleme modu geçersiz.</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>Daha ayrıntılı bilgi için lütfen günlüklere bakın.</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>Uyumlu bir grafik kartı bulunamadı, bu nedenle bunun yerine CPU işleme kullanılacak. Performans beklentileri karşılamayabilir.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>Gölgelendiricilerde FP16 kullanımını devre dışı bırak</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>Asgari kare hızı</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>Aksaklığı azaltmak için GPU frekansını dengeler ancak daha yüksek güç tüketimine neden olabilir</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>Karşılaştırma modu</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-uk.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Про застосунок</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Мова</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Запуск під час запуску системи</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Активація</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Головна</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Відкладене масштабування</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Затримка в секундах</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Натисніть комбінацію клавіш, щоб змінити цей ярлик</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Неправильний ярлик</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Зберегти</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Дійсні лише ті ярлики, які починаються з клавіш Windows, Ctrl, Alt або Shift.</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>Новий профіль</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Виберіть вікно</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Копіювати з</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Створити</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Ім'я</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Відкрийте нове вікно для створення профілю</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Новий профіль</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Профілі</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Конфігурація масштабування</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Конфігурація масштабування</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Розширені</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>Загальні</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Темна</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>За замовчуванням Windows</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Світла</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Вимкнено</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>Ввімкнено</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>Запуск</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>Експорт</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Додаткові параметри</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>Щоб скористатися цим параметром, вам потрібно запустити від імені адміністратора</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>Завжди запускати від імені адміністратора</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Завантажити і встановити</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Примітки до випуску</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>Нагадати пізніше</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} доступний</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Інші посилання</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Рекомендації щодо внеску</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Параметри</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Додаткові параметри</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Видалити</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Перемістити вниз</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Перемістити вгору</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Перейменувати</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Перейменувати</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>Додати ефект</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Видалити</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Видалити</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>Його використовують наступні профілі:</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>Перетягування не підтримується під час роботи від імені адміністратора</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>Перетягніть, щоб змінити порядок</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Перемістити вгору</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>Новий режим масштабування</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Масштаб</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Копіювати з</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>Немає</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Створити</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Ім'я</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>Висота (коефіцієнт масштабування)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>Висота (пікселі)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>Ширина (пікселі)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>Тип</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>Абсолютний</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>Встановити розмір після масштабування</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>Коефіцієнт</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Заповнити</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>Заповнює екран, зображення може розтягуватися</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>Підігнати</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>Загальні</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>Режим 3D гри</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>Автоматичне масштабування на передньому плані</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>Метод захоплення</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>Бажані монітори</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>Всі монітори</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>Монітор, найближчий до вихідного вікна</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>Монітори перетинаються вихідним вікном</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Додаткові параметри</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>Видалити</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Видалити</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>Відкрити розташування програми</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>Перейменувати</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Перейменувати</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Перевпорядкувати</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Перемістити вниз</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>Немає</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>Продуктивність</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Зворотній зв'язок</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Запросити функцію</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Перевірити наявність оновлень попереднього перегляду</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Автоматична перевірка оновлень</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Перевірка оновлень</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>Скасувати</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Завантажити і встановити</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Спробуйте ще раз</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} доступно</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie в курсі подій</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>Помилка завантаження</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>Завантаження</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Встановлення</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>Розширені</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>Вимкнути DirectFlip</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>Курсор</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>Алгоритм інтерполяції</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>Білінійний</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>Найближчий сусід</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Коефіцієнт масштабування</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Власний</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>Те саме, що й у вихідному вікні</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>За замовчуванням</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>Захопити рядок заголовка</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>Обрізати вручну</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>Низ</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>Ліворуч</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>пікс</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>Праворуч</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>Дає невеликий приріст продуктивності. Однак ефекти потрібно перекомпілювати щоразу, коли змінюються їхні параметри</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>Сповіщення та спливаючі вікна певних застосунків будуть заблоковані</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Помилка</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>Ці налаштування призначені лише для використання під час розробки</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>Параметри розробника</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>Вимкнути кеш ефектів</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>Розглядайте попередження як помилки під час компіляції ефектів</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Вихід</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Розташування файлу конфігурації:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>Файл конфігурації не є дійсним JSON</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>Вихід</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>Скасувати</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>Скасувати</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Вже використовується</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете видалити цей режим масштабування?</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>Про застосунок</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Головна</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>За замовчуванням</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>За замовчуванням Windows</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Відкрити розташування файлу конфігурації</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Перемістити вгору</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Портативний режим</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>Magpie продовжить працювати у фоновому режимі після закриття головного вікна</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>Відображення застосунку в системному треї</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Тема</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Обговорення</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Повідомити про помилку</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>Імпорт</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>Періодично перевіряти наявність оновлень</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>Часті запитання</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>Ліцензія</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Репозиторій Github</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Перемістити вниз</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Новий режим масштабування</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Перевірити наявність оновлень</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>Не вдалося перевірити наявність оновлень, спробуйте пізніше</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>Встановити коефіцієнт масштабування відносно вхідного зображення</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>Ширина (коефіцієнт масштабування)</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Ви впевнені, що хочете видалити цей профіль?</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>Встановити коефіцієнт масштабування після заповнення екрана за допомогою пропорційного масштабування</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>Відеокарта</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>Режим масштабування</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Запуск</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Перевпорядкувати</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Примітки до випуску</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>Без масштабування</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>Регулювання швидкості курсору під час масштабування</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>Вихідне вікно</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Обмежено захопленням графіки та дублюванням робочого столу</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>Зробити параметри ефекту вбудованими</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>Верх</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>Імітація ексклюзивного повноекранного режиму при масштабуванні</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>Невідомий ефект</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>Деякі ефекти не можуть бути проаналізовані</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>Експорт режимів масштабування</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>Збереження вихідного коду під час синтаксичного аналізу ефектів</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>Режим налагодження</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>Головне вікно</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>Не вдалося прочитати файл конфігурації</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>Не вдалося розібрати файл конфігурації</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>Щоб зміна набула чинності, потрібен перезапуск</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Перезапустити Magpie</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>Імпорт режимів масштабування</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Оновлення налаштувань</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Версія</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>Параметри запуску</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>Прозорість</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>Розблокувати</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Таймінги</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>Перемикання на пропуски</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>Всього</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>Профайлер</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>Метод захоплення</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>Заблокувати</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>Переключитися на ефекти</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>Вимкнути кеш шрифтів</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>Дозволити масштабування розгорнутих або повноекранних вікон</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>Змінити виконуваний файл для запуску</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>Виконуваний файл</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>JSON файл</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>Виберіть виконуваний файл для запуску програми</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>Режим розробника увімкнено.</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>Номер коміту</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-vi.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>Phản hồi</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>Diễn đàn</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>Báo lỗi</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>Yêu cầu tính năng</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>Các liên kết khác</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>Hướng dẫn đóng góp</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>FAQ</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>Bản quyền</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Repo GitHub</value>\n  </data>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Giới thiệu</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>Kiểm tra cập nhật</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>Kiểm tra cập nhật thất bại, vui lòng thử lại sau</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>Đang kiểm tra cập nhật</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>Hủy</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Tải và cài đặt</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Nội dung cập nhật</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>Thử lại</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>Đã có bản cập nhật {}</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>Cài đặt cập nhật</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>Kiểm tra cập nhật tự động</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>Kiểm tra các cập nhật thử nghiệm</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie đã được cập nhật</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>Tải xuống thất bại</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>Đang tải xuống</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>Đang cài đặt</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>Phiên bản</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>Lỗi</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>Thoát</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>Vị trí file cấu hình:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>File cấu hình không phải JSON hợp lệ</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>Không thể phân giải file cấu hình</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>Không thể đọc file cấu hình</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>Xuất các chế độ Scale</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>File chạy</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>File JSON</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>Kích hoạt</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Chính</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>Thời gian chờ Scale</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>Hủy</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>Thời gian bằng giây</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>Kiểm tra cập nhật tự động</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>Tải và cài đặt</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>Nội dung cập nhật</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>Nhắc tôi sau</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>Đã có bản cập nhật {}</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>Nhập các chế độ Scale</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>Giới thiệu</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>Mặc định</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>Chính</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>Cấu hình mới</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>Chọn một cửa sổ</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Chép từ</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Tạo</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Tên</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>Mở một cửa sổ mới để tạo cấu hình</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Cấu hình mới</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>Cấu hình</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>Cài đặt Scaling</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>Khóa</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>Độ phủ mờ</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>Mở khóa</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>Hồ sơ</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>Phương pháp lấy cửa sổ</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>Timing</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>Chuyển sang hiệu ứng</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>Chuyển sang render pass</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>Tổng cộng</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>Nâng cao</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>Tắt DirectFlip</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>Thông số khởi chạy</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>Con trỏ chuột</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>Thay đổi tốc độ con trỏ khi scale</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>Thuật toán</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>Song tuyến tính</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>Thuật toán nội suy ảnh đơn giản nhất</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Mức độ Scale</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Tùy chỉnh</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>Không Scale</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>Như cửa sổ gốc</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>Chung</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>Chế độ game 3D</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>Tự động scale cửa sổ trên cùng</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>Phương pháp lấy cửa sổ</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>Mặc định</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>Màn hình ưu tiên</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>Tất cả màn hình</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>Màn hình gần cửa sổ gốc nhất</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>Màn hình hiển thị cửa sổ gốc</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>Chế độ Scale</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>Không</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Chạy</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Tùy chọn</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>Thay đổi file chạy</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>Xóa</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Xóa</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Bạn có chắc chán muốn xóa cấu hình này?</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>Mở vị trí chương trình</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>Đổi tên</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Đổi tên</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>Đổi thứ tự</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Xuống</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Lên</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Đổi thứ tự</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>Hiệu năng</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>Card đồ họa</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>Cửa sổ nguồn</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>Chỉ sử dụng được với Graphics Capture và Desktop Duplication</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>Lấy cả thanh tiêu đề</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>Lề cửa sổ tùy chỉnh</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>Dưới</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>Trái</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>px</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>Phải</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>Trên</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>Xuất</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>Nhập</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Tùy chọn</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>Cài đặt Scaling</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Thông số</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>Thêm hiệu ứng</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Xóa</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Xóa</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>Hiệu ứng này đang được sử dụng bởi:</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Bạn có chắc chắn muốn xóa hiệu ứng này?</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>Hiệu ứng không xác định</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>Không thể kéo thả khi đang chạy dưới quyền quản trị</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>Kéo thả để thay đổi thứ tự</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>Một số hiệu ứng không thể được phân giải</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Tùy chọn</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>Xóa</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>Xuống</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>Lên</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Xuống</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Lên</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>Chế độ scale mới</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>Chép từ</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>Không</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>Tạo</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>Tên</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Chế độ scale mới</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Đổi tên</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>Đổi tên</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>Tỉ lệ</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>Chiều cao (hệ số tỷ lệ)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>Chiều cao (theo pixel)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>Loại</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>Tuyệt đối</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>Đặt kích cỡ sau scale</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>Tỷ lệ scale</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>Đặt tỷ lệ tương đối với hình ảnh gốc</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>Vừa màn hình</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>Hiển thị đầy màn hình, hình ảnh có thể bị méo</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>Giữ tỷ lệ</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>Giữ tỷ lệ hình ảnh sau khi làm đầy màn hình</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>Chiều rộng (theo tỷ lệ)</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>Chiều rộng (theo pixel)</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>Chọn file chạy của chương trình</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>Nâng cao</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>Cho phép scale cửa sổ toàn màn hình</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>Cải thiện hiệu năng. Tuy nhiên các hiệu ứng phải được biên dịch lại khi các thông số của chúng đươc chỉnh</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>Đặt thông số hiệu ứng trực tiếp</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>Các thông báo và pop-up từ một số ứng dụng sẽ bị chặn</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>Giả lập chế độ toàn màn hình độc lập</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>Những cài đặt này chỉ dành cho mục đích phát triển</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>Cài đặt nhà phát triển</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>Chế độ gỡ lỗi</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>Tắt cache hiệu ứng</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>Tắt cache phông chữ</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>Lưu mã nguồn khi đọc hiệu ứng</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>Đặt cảnh bảo như lỗi khi đọc hiệu ứng</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>Chung</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>Ngôn ngữ</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Mặc định Windows</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>Chế độ Portable</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>Mở vị trí file cấu hình</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>Cần khởi động lại Magpie để thiết lập cấu hình</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>Khởi động lại Magpie</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>Magpie sẽ tiếp tục chạy kể cả khi cửa sổ chính bị đóng</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>Hiển thị trên thanh tác vụ</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>Màu</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>Tối</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>Sáng</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Mặc định Windows</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>Chạy</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>Bạn cần mở với quyền quản trị viên để thay đổi cài đặt này</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>Luôn chạy với quyền quản trị viên</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>Chạy khi khởi động</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>Hủy</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>Nhấn một tổ hợp phím để đổi phím tắt này</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>Đã được sử dụng</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>Phím tắt không hợp lệ</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>Lưu</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>Chỉ các phím tắt sử dụng phim Windows, Ctrl, Alt và Shift là hợp lệ.</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>Bật</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>Thoát</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>Cửa sổ chính</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>Nếu hỗ trợ cảm ứng không thành công, Magpie có thể yêu cầu đặc quyền của quản trị trước khi mở rộng quy mô để thực hiện sửa chữa.</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>Làm</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>Giới hạn khung hình</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>Tốc độ khung hình tối đa</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>Chế độ nhà phát triển được bật.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>Phát hiện khung hình lặp</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>Luôn luôn</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>Năng động</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>Không</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>Bật thống kê để phát hiện động</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>Phát hiện động</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>Tốc độ khung hình</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>Bật hỗ trợ cảm ứng</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>Bạn sẽ cần cung cấp đặc quyền của quản trị viên để thay đổi cài đặt này</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>Tìm hiểu thêm</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>Hỗ trợ cảm ứng</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>Tùy trọn này không tương thích với một số trò chơi cũ. Hãy sử dụng nó một cách cẩn thận.</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>Không hỗ trợ scale cửa sổ này.</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>Chế độ scale không hợp lệ.</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>Kích hoạt hỗ trợ cảm ứng thất bại.</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>Magpie cần được chạy với quyền quản trị viên để scale cửa sổ này.</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>Vui lòng xem chi tiết trong nhật ký.</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>Có lỗi xảy ra khi lấy cửa sổ này. Vui lòng chọn một phương pháp khác.</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>Scale thất bại</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>Không có card đồ họa nào tương thích được tìm thấy, chế độ render bằng CPU đã được sử dụng. Hiệu năng có thể bị giảm.</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>Card đồ họa hiện tại không hỗ trợ ID3D11Device5::CreateFence. Vui lòng chọn card đồ họa khác hoặc cập nhật driver.</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>Làm ổn định tốc độ GPU để giảm giật khung hình, nhưng sẽ tăng tiêu thụ điện năng</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>Scale cửa sổ được phóng đại hoặc toàn màn hình đã bị vô hiệu hóa. Bạn có thể thay đổi cài đặt này trong trang Chính.</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>Tốc độ khung hình tối thiểu</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide_Delay.Header\" xml:space=\"preserve\">\n    <value>Ẩn độ trễ tính bằng giây</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Description\" xml:space=\"preserve\">\n    <value>Chỉ áp dụng cho tỷ lệ toàn màn hình</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Header\" xml:space=\"preserve\">\n    <value>Căn chỉnh đầu ra</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomCenter.Content\" xml:space=\"preserve\">\n    <value>Trung tâm phía dưới</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomLeft.Content\" xml:space=\"preserve\">\n    <value>Dưới cùng bên trái</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomRight.Content\" xml:space=\"preserve\">\n    <value>Dưới cùng bên phải</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Center.Content\" xml:space=\"preserve\">\n    <value>Ở giữa</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Left.Content\" xml:space=\"preserve\">\n    <value>Bên trái</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Right.Content\" xml:space=\"preserve\">\n    <value>Bên phải</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopCenter.Content\" xml:space=\"preserve\">\n    <value>Trung tâm ở giữa</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopLeft.Content\" xml:space=\"preserve\">\n    <value>Trung tâm bên trái</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopRight.Content\" xml:space=\"preserve\">\n    <value>Trung tâm bên phải</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableTopmost.Content\" xml:space=\"preserve\">\n    <value>Tắt chế độ luôn ở trên cùng</value>\n  </data>\n  <data name=\"Dialog_SetlectScreenshotSaveDirectory_Title\" xml:space=\"preserve\">\n    <value>Chọn thư mục để lưu ảnh chụp màn hình</value>\n  </data>\n  <data name=\"Message_ScreenshotSaved\" xml:space=\"preserve\">\n    <value>Ảnh chụp màn hình được lưu dưới dạng {}</value>\n  </data>\n  <data name=\"Message_ScreenshotFailed\" xml:space=\"preserve\">\n    <value>Ảnh chụp màn hình không thành công.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_Description\" xml:space=\"preserve\">\n    <value>Nhấp chuột phải để xuất kết quả trung gian</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_PopupTitle\" xml:space=\"preserve\">\n    <value>Xuất kết quả trung gian</value>\n  </data>\n  <data name=\"Profile_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Tỷ lệ cửa sổ</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor.Header\" xml:space=\"preserve\">\n    <value>Hệ số tỷ lệ ban đầu</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Auto.Content\" xml:space=\"preserve\">\n    <value>Tự động</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>Tùy chỉnh</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Description\" xml:space=\"preserve\">\n    <value>Giúp tránh một số vấn đề về khả năng tương thích nhưng có thể làm tăng đáng kể độ trễ</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Disabled.Content\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Fullscreen.Content\" xml:space=\"preserve\">\n    <value>Tỷ lệ toàn màn hình</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Windowed.Content\" xml:space=\"preserve\">\n    <value>Tỷ lệ cửa sổ</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Description\" xml:space=\"preserve\">\n    <value>Chỉ áp dụng cho tỷ lệ toàn màn hình</value>\n  </data>\n  <data name=\"Home_TouchSupport_Warn.Title\" xml:space=\"preserve\">\n    <value>Thanh công cụ không tương thích với đầu vào cảm ứng.</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close_Description\" xml:space=\"preserve\">\n    <value>Nhấp chuột phải để đóng thanh công cụ</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToFullscreen\" xml:space=\"preserve\">\n    <value>Chuyển sang chế độ toàn màn hình</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToWindowed\" xml:space=\"preserve\">\n    <value>Chuyển sang chế độ cửa sổ</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Fullscreen.Header\" xml:space=\"preserve\">\n    <value>Tỷ lệ toàn màn hình</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Windowed.Header\" xml:space=\"preserve\">\n    <value>Tỷ lệ cửa sổ</value>\n  </data>\n  <data name=\"Message_ExportScalingModesFailed\" xml:space=\"preserve\">\n    <value>Không xuất được chế độ tỷ lệ.</value>\n  </data>\n  <data name=\"Message_ImportScalingModesFailed\" xml:space=\"preserve\">\n    <value>Không nhập được chế độ tỷ lệ.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_LocateLogs.Header\" xml:space=\"preserve\">\n    <value>Mở vị trí logs</value>\n  </data>\n  <data name=\"Message_WindowedDesktopDuplication\" xml:space=\"preserve\">\n    <value>Tính năng chụp Desktop Duplication không hỗ trợ tỷ lệ cửa sổ.</value>\n  </data>\n  <data name=\"Profile_General_DesktopDuplicationWarning.Title\" xml:space=\"preserve\">\n    <value>Phương pháp chụp này không tương thích với chế độ chia tỷ lệ theo cửa sổ.</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Description\" xml:space=\"preserve\">\n    <value>Cửa sổ chính sẽ không xuất hiện nếu \"Hiển thị ứng dụng trên khay hệ thống\" được bật</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Description\" xml:space=\"preserve\">\n    <value>Thu nhỏ cửa sổ nền trước sau {}s</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Start\" xml:space=\"preserve\">\n    <value>Bắt đầu</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Fullscreen\" xml:space=\"preserve\">\n    <value>Tỷ lệ sau {} giây (Toàn màn hình)</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Windowed\" xml:space=\"preserve\">\n    <value>Tỷ lệ sau {} giây (Có cửa sổ)</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Minimize\" xml:space=\"preserve\">\n    <value>Thu nhỏ</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide.Header\" xml:space=\"preserve\">\n    <value>Tự động ẩn con trỏ khi nhàn rỗi</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Description\" xml:space=\"preserve\">\n    <value>Cho phép tối ưu hóa cho trò chơi 3D, nhưng không tương thích với thanh công cụ và tỷ lệ cửa sổ</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory.Header\" xml:space=\"preserve\">\n    <value>Thư mục lưu ảnh chụp màn hình</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory_Change.Content\" xml:space=\"preserve\">\n    <value>Thay đổi</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>Phím tắt mở rộng cửa sổ</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Phím tắt mở rộng cửa sổ</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Description\" xml:space=\"preserve\">\n    <value>Chỉ áp dụng cho tỷ lệ toàn màn hình</value>\n  </data>\n  <data name=\"Home_Toolbar.Description\" xml:space=\"preserve\">\n    <value>Thanh công cụ xuất hiện ở đầu cửa sổ đã thu nhỏ, cung cấp các tính năng như hiển thị FPS và chụp ảnh màn hình. Ở chế độ cửa sổ, thanh công cụ cũng cho phép kéo cửa sổ đã thu nhỏ.</value>\n  </data>\n  <data name=\"Home_Toolbar.Header\" xml:space=\"preserve\">\n    <value>Thanh công cụ</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState.Header\" xml:space=\"preserve\">\n    <value>Trạng thái thanh công cụ ban đầu</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AlwaysShow.Content\" xml:space=\"preserve\">\n    <value>Luôn luôn hiển thị</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AutoHide.Content\" xml:space=\"preserve\">\n    <value>Tự động ẩn</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Off.Content\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle.Header\" xml:space=\"preserve\">\n    <value>Phím tắt chuyển đổi trạng thái thanh công cụ</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Phím tắt chuyển đổi trạng thái thanh công cụ</value>\n  </data>\n  <data name=\"Message_ToolbarIn3DGameMode\" xml:space=\"preserve\">\n    <value>Thanh công cụ không được hỗ trợ ở chế độ trò chơi 3D.</value>\n  </data>\n  <data name=\"Message_ToolbarNewState\" xml:space=\"preserve\">\n    <value>Thanh công cụ: {}</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close\" xml:space=\"preserve\">\n    <value>Dừng mở rộng quy mô</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Demo\" xml:space=\"preserve\">\n    <value>Cửa sổ demo ImGui</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Pin\" xml:space=\"preserve\">\n    <value>Ghim thanh công cụ</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot\" xml:space=\"preserve\">\n    <value>Chụp ảnh màn hình</value>\n  </data>\n  <data name=\"Message_Windowed3DGameMode\" xml:space=\"preserve\">\n    <value>Chế độ thu phóng theo cửa sổ không được hỗ trợ ở chế độ trò chơi 3D.</value>\n  </data>\n  <data name=\"Home_Activation.Description\" xml:space=\"preserve\">\n    <value>Nhấn phím tắt để thay đổi hoặc dừng thay đổi kích thước cửa sổ nền trước.</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling.Header\" xml:space=\"preserve\">\n    <value>Phím tắt thay đổi tỷ lệ toàn màn hình</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>Phím tắt thay đổi tỷ lệ toàn màn hình</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>Chế độ chuẩn</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>Điền tên ứng dụng</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>Điền tên quy trình</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>Điền tiêu đề cửa sổ</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>Sao chép</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>Cắt</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>Dán</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>Làm lại</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>Chọn hết</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>Hoàn tác</value>\n  </data>\n  <data name=\"Message_BannedInWindowedMode\" xml:space=\"preserve\">\n    <value>Không hỗ trợ tính năng thu nhỏ cửa sổ này.</value>\n  </data>\n  <data name=\"Message_InvalidCropping\" xml:space=\"preserve\">\n    <value>Không áp dụng được chế độ cắt tùy chỉnh.</value>\n  </data>\n  <data name=\"Home_TouchSupport.Description\" xml:space=\"preserve\">\n    <value>Do hạn chế về bảo mật hệ thống, Magpie yêu cầu quyền UIAccess để hỗ trợ nhập liệu cảm ứng.</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>Vô hiệu hóa việc sử dụng FP16 trong trình đổ bóng</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Profiler\" xml:space=\"preserve\">\n    <value>Cửa sổ Profiler</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-zh-Hans.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>关于</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>激活</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>主页</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>定时器</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>倒计时时长（秒）</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>按组合键以更改此快捷键</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>此快捷键已被占用</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>无效的快捷键</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>保存</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>只有以 Windows 键、Ctrl、Alt 或 Shift 开头的快捷键才有效。</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>关于</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>默认</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>主页</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>新建配置</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>选择一个窗口</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>复制自</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>确定</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>名称</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>打开新窗口以创建配置文件</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>新建配置</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>配置文件</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>缩放模式</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>缩放模式</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>高级</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>常规</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>语言</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Windows 默认</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>便携模式</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>打开配置文件位置</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>开机启动</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>主窗口被关闭后 Magpie 将在后台继续运行</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>在系统托盘上显示应用程序</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>主题</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>深色</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Windows 默认</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>浅色</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>关</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>开</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>启动</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>导出</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>导入</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>更多选项</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>以管理员身份运行时才能使用此选项</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>始终以管理员身份运行</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>自动检查更新</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>下载并安装</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>发行说明</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>以后再提醒我</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} 可用</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>其他链接</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>贡献指南</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>FAQ</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>许可协议</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Github 仓库</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>参数</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>更多选项</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>下移</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>上移</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>重命名</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>确定</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>重命名</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>添加效果</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>以下配置文件正在使用这个缩放模式:</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>确定删除这个缩放模式？</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>管理员身份下不支持拖拽排序</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>拖拽以重新排序</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>下移</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>上移</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>新建缩放模式</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>新建缩放模式</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>缩放</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>复制自</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>无</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>确定</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>名称</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>高（缩放倍数）</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>高（像素）</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>宽（缩放倍数）</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>宽（像素）</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>类型</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>绝对</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>指定缩放后的尺寸</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>倍数</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>指定相对于输入图像的缩放倍数</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>填充</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>充满屏幕，画面可能被拉伸</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>适应</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>指定等比缩放到充满屏幕后的缩放倍数</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>常规</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>3D 游戏模式</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>位于前台时自动缩放</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>捕获方式</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>首选的显示器</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>所有显示器</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>距离源窗口最近的显示器</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>源窗口跨越的所有显示器</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>缩放模式</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>启动</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>更多选项</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>确定删除此配置？</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>打开程序位置</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>重命名</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>确定</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>重命名</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>重新排序</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>下移</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>上移</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>重新排序</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>无</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>性能</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>显示卡</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>反馈</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>讨论区</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>报告错误</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>建议功能</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>检查预览版更新</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>自动检查更新</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>检查更新</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>检查更新失败，请稍后重试</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>正在检查更新</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>下载并安装</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>发行说明</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>重试</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} 可用</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie 已是最新</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>下载失败</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>下载中</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>安装中</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>高级</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>禁用 DirectFlip</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>光标</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>缩放时调整光标速度</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>插值算法</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>双线性</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>最近邻</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>缩放系数</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>自定义</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>无缩放</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>和源窗口相同</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>默认</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>源窗口</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>仅在 Graphics Capture 和 Desktop Duplication 捕获方式下可用</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>捕获标题栏</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>自定义裁剪</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>下</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>左</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>像素</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>右</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>上</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>稍微提高性能，但每次修改效果的参数都需重新编译该效果</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>内联效果参数</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>仅适用于全屏模式缩放。启用后可以阻止某些应用的通知和弹窗</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>缩放时模拟独占全屏</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>错误</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>这些设置仅供开发使用</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>开发者选项</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>调试模式</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>禁用效果缓存</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>解析效果时保存着色器源代码</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>编译效果时将警告视为错误</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>退出</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>配置文件位置:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>配置文件不是合法的 JSON</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>解析配置文件失败</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>读取配置文件失败</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>退出</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>主窗口</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>需要重新启动才能使更改生效</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>重新启动 Magpie</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>未知效果</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>部分效果未能正确解析</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>导出缩放模式</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>导入缩放模式</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>更新设置</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>版本</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>启动参数</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>性能分析器</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>捕获方式</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>不透明度</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>渲染用时</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>切换到效果</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>切换到通道</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>总计</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>锁定</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>解锁</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>禁用字体缓存</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>允许缩放最大化或全屏的窗口</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>JSON 文件</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>更改用于启动程序的可执行文件</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>可执行文件</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>选择用于启动程序的可执行文件</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>帧率限制</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>最大帧率</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>提交</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>开发者模式已启用。</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>检测重复帧</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>总是检测</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>动态检测</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>从不检测</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>启用动态检测统计</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>动态检测</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>帧率</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>启用触控支持</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>需提供管理员权限才能更改此选项</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>了解更多</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>触控支持</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>如果触控支持失效，Magpie 可能会在缩放前请求管理员权限以执行修复。</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>此选项和一些旧游戏不兼容，请谨慎使用。</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>缩放模式无效。</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>启用触控支持失败。</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>不支持缩放这个窗口。</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>已禁止缩放最大化或全屏的窗口。你可以在主页里更改这个行为。</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>Magpie 需要以管理员身份运行才能缩放这个窗口。</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>详情请参阅日志。</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>无法捕获这个窗口，请尝试切换捕获方式。</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>当前显卡不支持 ID3D11Device5::CreateFence，请尝试切换显卡或更新驱动。</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>缩放失败</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>由于找不到兼容的显卡，将使用 CPU 渲染。很可能达不到理想性能。</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>最小帧率</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>稳定 GPU 频率以减少卡顿，但会导致功耗增加</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>禁止在着色器中使用 FP16</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>性能测试模式</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>填入应用名</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>填入进程名</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>填入窗口标题</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>复制</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>剪切</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>粘贴</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>重新操作</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>全选</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>取消操作</value>\n  </data>\n  <data name=\"Message_BannedInWindowedMode\" xml:space=\"preserve\">\n    <value>不支持窗口模式缩放这个窗口。</value>\n  </data>\n  <data name=\"Message_InvalidCropping\" xml:space=\"preserve\">\n    <value>无法应用自定义裁剪。</value>\n  </data>\n  <data name=\"Home_Activation.Description\" xml:space=\"preserve\">\n    <value>按下快捷键可缩放前台窗口或停止缩放。</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling.Header\" xml:space=\"preserve\">\n    <value>全屏模式缩放快捷键</value>\n  </data>\n  <data name=\"Home_TouchSupport.Description\" xml:space=\"preserve\">\n    <value>由于操作系统的安全限制，Magpie 需要 UIAccess 权限来支持触控输入。</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>全屏模式缩放快捷键</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>窗口模式缩放快捷键</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>窗口模式缩放快捷键</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Description\" xml:space=\"preserve\">\n    <value>仅适用于全屏模式缩放</value>\n  </data>\n  <data name=\"Home_Toolbar.Description\" xml:space=\"preserve\">\n    <value>工具栏位于缩放窗口顶部，提供帧率显示、截图等功能，窗口模式缩放时还可以用于拖拽缩放窗口。</value>\n  </data>\n  <data name=\"Home_Toolbar.Header\" xml:space=\"preserve\">\n    <value>工具栏</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState.Header\" xml:space=\"preserve\">\n    <value>工具栏初始状态</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AlwaysShow.Content\" xml:space=\"preserve\">\n    <value>始终显示</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AutoHide.Content\" xml:space=\"preserve\">\n    <value>自动隐藏</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Off.Content\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle.Header\" xml:space=\"preserve\">\n    <value>工具栏状态切换快捷键</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>工具栏状态切换快捷键</value>\n  </data>\n  <data name=\"Message_ToolbarIn3DGameMode\" xml:space=\"preserve\">\n    <value>3D 游戏模式下不支持工具栏。</value>\n  </data>\n  <data name=\"Message_ToolbarNewState\" xml:space=\"preserve\">\n    <value>工具栏：{}</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close\" xml:space=\"preserve\">\n    <value>停止缩放</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Demo\" xml:space=\"preserve\">\n    <value>ImGui 演示窗口</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Pin\" xml:space=\"preserve\">\n    <value>固定工具栏</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot\" xml:space=\"preserve\">\n    <value>截图</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Profiler\" xml:space=\"preserve\">\n    <value>性能分析器窗口</value>\n  </data>\n  <data name=\"Message_Windowed3DGameMode\" xml:space=\"preserve\">\n    <value>3D 游戏模式下不支持窗口模式缩放。</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Description\" xml:space=\"preserve\">\n    <value>针对 3D 游戏优化，不支持工具栏和窗口模式缩放</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory.Header\" xml:space=\"preserve\">\n    <value>截图保存目录</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory_Change.Content\" xml:space=\"preserve\">\n    <value>更改</value>\n  </data>\n  <data name=\"Dialog_SetlectScreenshotSaveDirectory_Title\" xml:space=\"preserve\">\n    <value>选择截图保存目录</value>\n  </data>\n  <data name=\"Message_ScreenshotSaved\" xml:space=\"preserve\">\n    <value>已保存截图 {}</value>\n  </data>\n  <data name=\"Message_ScreenshotFailed\" xml:space=\"preserve\">\n    <value>截图失败。</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_Description\" xml:space=\"preserve\">\n    <value>右键以导出中间结果</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_PopupTitle\" xml:space=\"preserve\">\n    <value>导出中间结果</value>\n  </data>\n  <data name=\"Profile_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>窗口模式缩放</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor.Header\" xml:space=\"preserve\">\n    <value>初始缩放倍数</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Auto.Content\" xml:space=\"preserve\">\n    <value>自动</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>自定义</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Description\" xml:space=\"preserve\">\n    <value>可避免部分兼容性问题，但可能显著增加延迟</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Disabled.Content\" xml:space=\"preserve\">\n    <value>禁用</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Fullscreen.Content\" xml:space=\"preserve\">\n    <value>全屏模式缩放</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Windowed.Content\" xml:space=\"preserve\">\n    <value>窗口模式缩放</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Description\" xml:space=\"preserve\">\n    <value>仅适用于全屏模式缩放</value>\n  </data>\n  <data name=\"Home_TouchSupport_Warn.Title\" xml:space=\"preserve\">\n    <value>工具栏不支持触控输入。</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close_Description\" xml:space=\"preserve\">\n    <value>右键以关闭工具栏</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToFullscreen\" xml:space=\"preserve\">\n    <value>切换到全屏模式缩放</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToWindowed\" xml:space=\"preserve\">\n    <value>切换到窗口模式缩放</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Fullscreen.Header\" xml:space=\"preserve\">\n    <value>全屏模式缩放</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Windowed.Header\" xml:space=\"preserve\">\n    <value>窗口模式缩放</value>\n  </data>\n  <data name=\"Message_ExportScalingModesFailed\" xml:space=\"preserve\">\n    <value>导出缩放模式失败。</value>\n  </data>\n  <data name=\"Message_ImportScalingModesFailed\" xml:space=\"preserve\">\n    <value>导入缩放模式失败。</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_LocateLogs.Header\" xml:space=\"preserve\">\n    <value>打开日志位置</value>\n  </data>\n  <data name=\"Message_WindowedDesktopDuplication\" xml:space=\"preserve\">\n    <value>Desktop Duplication 捕获不支持窗口模式缩放。</value>\n  </data>\n  <data name=\"Profile_General_DesktopDuplicationWarning.Title\" xml:space=\"preserve\">\n    <value>此捕获方式和窗口模式缩放不兼容。</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Description\" xml:space=\"preserve\">\n    <value>启用了“在系统托盘上显示应用程序”时将不会显示主窗口</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Description\" xml:space=\"preserve\">\n    <value>{} 秒后缩放前台窗口</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Start\" xml:space=\"preserve\">\n    <value>开始</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Fullscreen\" xml:space=\"preserve\">\n    <value>{} 秒后缩放 (全屏模式)</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Windowed\" xml:space=\"preserve\">\n    <value>{} 秒后缩放 (窗口模式)</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Minimize\" xml:space=\"preserve\">\n    <value>最小化</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide.Header\" xml:space=\"preserve\">\n    <value>光标静止时自动隐藏</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide_Delay.Header\" xml:space=\"preserve\">\n    <value>隐藏延迟（秒）</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Description\" xml:space=\"preserve\">\n    <value>仅适用于全屏模式缩放</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Header\" xml:space=\"preserve\">\n    <value>输出画面位置</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomCenter.Content\" xml:space=\"preserve\">\n    <value>底部居中</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomLeft.Content\" xml:space=\"preserve\">\n    <value>左下角</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomRight.Content\" xml:space=\"preserve\">\n    <value>右下角</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Center.Content\" xml:space=\"preserve\">\n    <value>居中</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Left.Content\" xml:space=\"preserve\">\n    <value>左对齐</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Right.Content\" xml:space=\"preserve\">\n    <value>右对齐</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopCenter.Content\" xml:space=\"preserve\">\n    <value>顶部居中</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopLeft.Content\" xml:space=\"preserve\">\n    <value>左上角</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopRight.Content\" xml:space=\"preserve\">\n    <value>右上角</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableTopmost.Content\" xml:space=\"preserve\">\n    <value>禁用缩放窗口置顶</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/Resources.language-zh-Hant.resw",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"About_PageFrame.Title\" xml:space=\"preserve\">\n    <value>關於</value>\n  </data>\n  <data name=\"Home_Activation.Header\" xml:space=\"preserve\">\n    <value>啟用</value>\n  </data>\n  <data name=\"Home_PageFrame.Title\" xml:space=\"preserve\">\n    <value>首頁</value>\n  </data>\n  <data name=\"Home_Activation_Timer.Header\" xml:space=\"preserve\">\n    <value>計時器</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Cancel\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Delay.Header\" xml:space=\"preserve\">\n    <value>倒數時間（秒）</value>\n  </data>\n  <data name=\"ShortcutDialog_Cancel\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"ShortcutDialog_Description.Text\" xml:space=\"preserve\">\n    <value>按下組合鍵來更改此快速鍵</value>\n  </data>\n  <data name=\"ShortcutDialog_InUse\" xml:space=\"preserve\">\n    <value>此快速鍵已被佔用</value>\n  </data>\n  <data name=\"ShortcutDialog_Save\" xml:space=\"preserve\">\n    <value>儲存</value>\n  </data>\n  <data name=\"Root_About.Content\" xml:space=\"preserve\">\n    <value>關於</value>\n  </data>\n  <data name=\"Root_Home.Content\" xml:space=\"preserve\">\n    <value>首頁</value>\n  </data>\n  <data name=\"Root_Defaults.Content\" xml:space=\"preserve\">\n    <value>預設</value>\n  </data>\n  <data name=\"Root_NewProfile.Content\" xml:space=\"preserve\">\n    <value>新增設定檔</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_ComboBox.PlaceholderText\" xml:space=\"preserve\">\n    <value>選擇一個視窗</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>複製自</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>名稱</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>新增</value>\n  </data>\n  <data name=\"Root_Profiles.Content\" xml:space=\"preserve\">\n    <value>設定檔</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>新增設定檔</value>\n  </data>\n  <data name=\"Root_ScalingModes.Content\" xml:space=\"preserve\">\n    <value>縮放模式</value>\n  </data>\n  <data name=\"ScalingModes_PageFrame.Title\" xml:space=\"preserve\">\n    <value>縮放模式</value>\n  </data>\n  <data name=\"Home_Advanced.Header\" xml:space=\"preserve\">\n    <value>進階設定</value>\n  </data>\n  <data name=\"Settings_General_Language.Header\" xml:space=\"preserve\">\n    <value>語言</value>\n  </data>\n  <data name=\"Settings_General_Language_System\" xml:space=\"preserve\">\n    <value>Windows 預設</value>\n  </data>\n  <data name=\"Settings_General_PortableMode.Header\" xml:space=\"preserve\">\n    <value>可攜式模式</value>\n  </data>\n  <data name=\"Settings_General_PortableMode_Locate.Content\" xml:space=\"preserve\">\n    <value>打開組態檔案位置</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Header\" xml:space=\"preserve\">\n    <value>開機啟動</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Description\" xml:space=\"preserve\">\n    <value>主視窗被關閉後 Magpie 將在背景繼續執行</value>\n  </data>\n  <data name=\"Settings_General.Header\" xml:space=\"preserve\">\n    <value>一般設定</value>\n  </data>\n  <data name=\"Settings_General_Theme.Header\" xml:space=\"preserve\">\n    <value>主題</value>\n  </data>\n  <data name=\"Settings_General_Theme_System.Content\" xml:space=\"preserve\">\n    <value>Windows 預設</value>\n  </data>\n  <data name=\"Settings_General_Theme_Light.Content\" xml:space=\"preserve\">\n    <value>淺色</value>\n  </data>\n  <data name=\"Settings_General_Theme_Dark.Content\" xml:space=\"preserve\">\n    <value>深色</value>\n  </data>\n  <data name=\"ToggleSwitch.OffContent\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"Settings_Launch.Header\" xml:space=\"preserve\">\n    <value>啟動</value>\n  </data>\n  <data name=\"ScalingModes_General_Export.Text\" xml:space=\"preserve\">\n    <value>匯出</value>\n  </data>\n  <data name=\"ScalingModes_General_Import.Text\" xml:space=\"preserve\">\n    <value>匯入</value>\n  </data>\n  <data name=\"NotifyIcon_Exit\" xml:space=\"preserve\">\n    <value>退出</value>\n  </data>\n  <data name=\"ShortcutDialog_InvalidShortcut\" xml:space=\"preserve\">\n    <value>無效的快速鍵</value>\n  </data>\n  <data name=\"ShortcutDialog_Tip.Text\" xml:space=\"preserve\">\n    <value>只有以 Windows 鍵、Ctrl、Alt 或 Shift 開頭的快速鍵才有效。</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NoCandidateWindow.Text\" xml:space=\"preserve\">\n    <value>開啟新視窗以新增設定檔</value>\n  </data>\n  <data name=\"Settings_General_ShowNotifyIcon.Header\" xml:space=\"preserve\">\n    <value>在系統匣上顯示應用程式</value>\n  </data>\n  <data name=\"ToggleSwitch.OnContent\" xml:space=\"preserve\">\n    <value>開啟</value>\n  </data>\n  <data name=\"ScalingModes_General_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>更多選項</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Description\" xml:space=\"preserve\">\n    <value>以管理員身分執行時才能使用此選項</value>\n  </data>\n  <data name=\"Settings_Launch_AlwaysRunAsAdmin.Header\" xml:space=\"preserve\">\n    <value>始終以管理員身分執行</value>\n  </data>\n  <data name=\"Home_UpdateCard_AutoCheckForUpdates.Content\" xml:space=\"preserve\">\n    <value>自動檢查更新</value>\n  </data>\n  <data name=\"Home_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>下載並安裝</value>\n  </data>\n  <data name=\"Home_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>發行說明</value>\n  </data>\n  <data name=\"Home_UpdateCard_RemindMeLater.Content\" xml:space=\"preserve\">\n    <value>以後再提醒我</value>\n  </data>\n  <data name=\"About_OtherLinks.Header\" xml:space=\"preserve\">\n    <value>其他連結</value>\n  </data>\n  <data name=\"About_OtherLinks_FAQ.Text\" xml:space=\"preserve\">\n    <value>FAQ</value>\n  </data>\n  <data name=\"About_OtherLinks_License.Text\" xml:space=\"preserve\">\n    <value>授權條款</value>\n  </data>\n  <data name=\"About_OtherLinks_Repository.Text\" xml:space=\"preserve\">\n    <value>Github 儲存庫</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>更多選項</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>刪除</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>下移</value>\n  </data>\n  <data name=\"ScalingModes_MoreOptionsFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>上移</value>\n  </data>\n  <data name=\"ScalingModes_Rename.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>重新命名</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>重新命名</value>\n  </data>\n  <data name=\"ScalingModes_AddEffect.Text\" xml:space=\"preserve\">\n    <value>新增效果</value>\n  </data>\n  <data name=\"ScalingModes_Delete.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>刪除</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>刪除</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>確定刪除這個縮放模式？</value>\n  </data>\n  <data name=\"ScalingModes_DragToReorder.Text\" xml:space=\"preserve\">\n    <value>拖曳以重新排列</value>\n  </data>\n  <data name=\"ScalingModes_MoveDown.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>下移</value>\n  </data>\n  <data name=\"ScalingModes_MoveUp.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>上移</value>\n  </data>\n  <data name=\"ScalingModes_Scale.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>縮放</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingMode.Text\" xml:space=\"preserve\">\n    <value>新增縮放模式</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom.Text\" xml:space=\"preserve\">\n    <value>複製自</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\" xml:space=\"preserve\">\n    <value>無</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Create.Content\" xml:space=\"preserve\">\n    <value>新增</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Name.Text\" xml:space=\"preserve\">\n    <value>名稱</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightFactor.Text\" xml:space=\"preserve\">\n    <value>高（縮放倍數）</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_HeightPixels.Text\" xml:space=\"preserve\">\n    <value>高（像素）</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthFactor.Text\" xml:space=\"preserve\">\n    <value>寬（縮放倍數）</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_WidthPixels.Text\" xml:space=\"preserve\">\n    <value>寬（像素）</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type.Text\" xml:space=\"preserve\">\n    <value>類型</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute\" xml:space=\"preserve\">\n    <value>絕對</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Absolute_Description\" xml:space=\"preserve\">\n    <value>指定縮放後的尺寸</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor\" xml:space=\"preserve\">\n    <value>倍數</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Factor_Description\" xml:space=\"preserve\">\n    <value>指定相對於輸入影像的縮放倍數</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill\" xml:space=\"preserve\">\n    <value>填滿</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fill_Description\" xml:space=\"preserve\">\n    <value>填滿螢幕，畫面可能被拉伸</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit\" xml:space=\"preserve\">\n    <value>符合</value>\n  </data>\n  <data name=\"ScalingModes_ScaleFlyout_Type_Fit_Description\" xml:space=\"preserve\">\n    <value>指定等比縮放到填滿螢幕後的縮放倍數</value>\n  </data>\n  <data name=\"Profile_General.Header\" xml:space=\"preserve\">\n    <value>一般設定</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Header\" xml:space=\"preserve\">\n    <value>3D 遊戲模式</value>\n  </data>\n  <data name=\"Profile_General_AutoScale.Header\" xml:space=\"preserve\">\n    <value>位於前景時自動縮放</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Header\" xml:space=\"preserve\">\n    <value>偏好顯示器</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Closest.Content\" xml:space=\"preserve\">\n    <value>距離來源視窗最近的顯示器</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Delete.Text\" xml:space=\"preserve\">\n    <value>刪除</value>\n  </data>\n  <data name=\"Profile_MoreOptions_OpenProgramLocation.Text\" xml:space=\"preserve\">\n    <value>打開程式位置</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Rename.Text\" xml:space=\"preserve\">\n    <value>重新命名</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>確定</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveDown.Text\" xml:space=\"preserve\">\n    <value>下移</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>重新排列</value>\n  </data>\n  <data name=\"Profile_Performance.Header\" xml:space=\"preserve\">\n    <value>效能</value>\n  </data>\n  <data name=\"Profile_Performance_GraphicsCard.Header\" xml:space=\"preserve\">\n    <value>顯示卡</value>\n  </data>\n  <data name=\"About_Feedback.Header\" xml:space=\"preserve\">\n    <value>回饋</value>\n  </data>\n  <data name=\"About_Feedback_RequestFeature.Header\" xml:space=\"preserve\">\n    <value>建議功能</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_CheckForPreviewUpdates.Header\" xml:space=\"preserve\">\n    <value>檢查預覽版更新</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdates.Text\" xml:space=\"preserve\">\n    <value>檢查更新</value>\n  </data>\n  <data name=\"About_Version_CheckForUpdatesFailed.Title\" xml:space=\"preserve\">\n    <value>檢查更新失敗，請稍後重試</value>\n  </data>\n  <data name=\"About_Version_CheckingForUpdates.Text\" xml:space=\"preserve\">\n    <value>正在檢查更新</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Cancel.Content\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_DownloadAndInstall.Content\" xml:space=\"preserve\">\n    <value>下載並安裝</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_ReleaseNotes.Content\" xml:space=\"preserve\">\n    <value>發行說明</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Retry.Content\" xml:space=\"preserve\">\n    <value>重試</value>\n  </data>\n  <data name=\"About_Version_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} 可用</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate.Title\" xml:space=\"preserve\">\n    <value>Magpie 已是最新版本</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_DownloadFailed.Text\" xml:space=\"preserve\">\n    <value>下載失敗</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Downloading.Text\" xml:space=\"preserve\">\n    <value>下載中</value>\n  </data>\n  <data name=\"About_Version_UpdateToDate_Installing.Text\" xml:space=\"preserve\">\n    <value>安裝中</value>\n  </data>\n  <data name=\"Profile_Advanced.Header\" xml:space=\"preserve\">\n    <value>進階設定</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Header\" xml:space=\"preserve\">\n    <value>停用 DirectFlip</value>\n  </data>\n  <data name=\"Profile_Cursor.Header\" xml:space=\"preserve\">\n    <value>游標</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_AdjustCursorSpeed.Header\" xml:space=\"preserve\">\n    <value>縮放時調整游標速度</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation.Header\" xml:space=\"preserve\">\n    <value>插值演算法</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_NearestNeighbor.Content\" xml:space=\"preserve\">\n    <value>最近鄰</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor.Header\" xml:space=\"preserve\">\n    <value>縮放係數</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_NoScaling.Content\" xml:space=\"preserve\">\n    <value>無縮放</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_SameAsSourceWindow.Content\" xml:space=\"preserve\">\n    <value>與來源視窗相同</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod_Default\" xml:space=\"preserve\">\n    <value>預設</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Description\" xml:space=\"preserve\">\n    <value>僅在 Graphics Capture 與 Desktop Duplication 擷取方式下可用</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping.Header\" xml:space=\"preserve\">\n    <value>自訂裁切</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Bottom.Header\" xml:space=\"preserve\">\n    <value>下</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Left.Header\" xml:space=\"preserve\">\n    <value>左</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Pixels.Text\" xml:space=\"preserve\">\n    <value>像素</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Right.Header\" xml:space=\"preserve\">\n    <value>右</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CustomCropping_Top.Header\" xml:space=\"preserve\">\n    <value>上</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Description\" xml:space=\"preserve\">\n    <value>稍微提高效能，但每次修改效果的參數都需重新編譯該效果</value>\n  </data>\n  <data name=\"Home_Advanced_InlineParams.Header\" xml:space=\"preserve\">\n    <value>行內效果參數</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Header\" xml:space=\"preserve\">\n    <value>縮放時模擬獨佔全螢幕</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Error\" xml:space=\"preserve\">\n    <value>錯誤</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Description\" xml:space=\"preserve\">\n    <value>這些設定僅供開發使用</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions.Header\" xml:space=\"preserve\">\n    <value>開發者選項</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DebugMode.Content\" xml:space=\"preserve\">\n    <value>除錯模式</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableEffectCache.Content\" xml:space=\"preserve\">\n    <value>停用效果快取</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_SaveEffectSources.Content\" xml:space=\"preserve\">\n    <value>剖析效果時儲存著色器原始碼</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_WarningsAreErrors.Content\" xml:space=\"preserve\">\n    <value>編譯效果時將警告視為錯誤</value>\n  </data>\n  <data name=\"AppSettings_Dialog_Exit\" xml:space=\"preserve\">\n    <value>退出</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ConfigLocation\" xml:space=\"preserve\">\n    <value>組態檔案位置:\n{}</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_NotValidJson\" xml:space=\"preserve\">\n    <value>組態文件不是合法的 JSON</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ParseFailed\" xml:space=\"preserve\">\n    <value>剖析組態文件失敗</value>\n  </data>\n  <data name=\"AppSettings_ErrorDialog_ReadFailed\" xml:space=\"preserve\">\n    <value>讀取組態文件失敗</value>\n  </data>\n  <data name=\"NotifyIcon_MainWindow\" xml:space=\"preserve\">\n    <value>主視窗</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart.Title\" xml:space=\"preserve\">\n    <value>需要重新啟動程式才能使變更生效</value>\n  </data>\n  <data name=\"Settings_General_RequireRestart_ActionButton.Content\" xml:space=\"preserve\">\n    <value>重新啟動 Magpie</value>\n  </data>\n  <data name=\"ScalingModes_Description_UnknownEffect\" xml:space=\"preserve\">\n    <value>未知效果</value>\n  </data>\n  <data name=\"ScalingModes_HasUnkownEffects.Title\" xml:space=\"preserve\">\n    <value>部份效果未能正確剖析</value>\n  </data>\n  <data name=\"Dialog_Export_Title\" xml:space=\"preserve\">\n    <value>匯出縮放模式</value>\n  </data>\n  <data name=\"Dialog_Import_Title\" xml:space=\"preserve\">\n    <value>匯入縮放模式</value>\n  </data>\n  <data name=\"Home_UpdateCard_Title\" xml:space=\"preserve\">\n    <value>{} 可用</value>\n  </data>\n  <data name=\"About_OtherLinks_ContributionGuidelines.Text\" xml:space=\"preserve\">\n    <value>貢獻指南</value>\n  </data>\n  <data name=\"ScalingModes_Parameters.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>參數</value>\n  </data>\n  <data name=\"ScalingModes_RenameFlyout_OK.Content\" xml:space=\"preserve\">\n    <value>確定</value>\n  </data>\n  <data name=\"ScalingModes_DeleteFlyout_Description.Text\" xml:space=\"preserve\">\n    <value>以下設定檔正在使用這個縮放模式：</value>\n  </data>\n  <data name=\"ScalingModes_DragNotSupported.Text\" xml:space=\"preserve\">\n    <value>管理員身分下不支援拖曳排列</value>\n  </data>\n  <data name=\"ScalingModes_NewScalingModeFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>新增縮放模式</value>\n  </data>\n  <data name=\"Profile_MoreOptions.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>更多選項</value>\n  </data>\n  <data name=\"Profile_MoreOptions_Reorder.Text\" xml:space=\"preserve\">\n    <value>重新排列</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode.Header\" xml:space=\"preserve\">\n    <value>縮放模式</value>\n  </data>\n  <data name=\"Profile_General_CaptureMethod.Header\" xml:space=\"preserve\">\n    <value>截取方式</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_All.Content\" xml:space=\"preserve\">\n    <value>所有顯示器</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor_Intersected.Content\" xml:space=\"preserve\">\n    <value>來源視窗跨越的所有顯示器</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>確定刪除此設定檔？</value>\n  </data>\n  <data name=\"Profile_MoreOptions_DeleteFlyout_Delete.Text\" xml:space=\"preserve\">\n    <value>刪除</value>\n  </data>\n  <data name=\"Profile_Launch.[using:Windows.UI.Xaml.Controls]ToolTipService.ToolTip\" xml:space=\"preserve\">\n    <value>啟動</value>\n  </data>\n  <data name=\"Profile_MoreOptions_RenameFlyout_Title.Text\" xml:space=\"preserve\">\n    <value>重新命名</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ReorderFlyout_MoveUp.Text\" xml:space=\"preserve\">\n    <value>上移</value>\n  </data>\n  <data name=\"Profile_General_ScalingMode_None\" xml:space=\"preserve\">\n    <value>無</value>\n  </data>\n  <data name=\"About_Feedback_Discussion.Header\" xml:space=\"preserve\">\n    <value>討論區</value>\n  </data>\n  <data name=\"About_Feedback_ReportBug.Header\" xml:space=\"preserve\">\n    <value>回報錯誤</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings_AutoCheckForUpdates.Header\" xml:space=\"preserve\">\n    <value>自動檢查更新</value>\n  </data>\n  <data name=\"Profile_SourceWindow_CaptureTitleBar.Header\" xml:space=\"preserve\">\n    <value>擷取標題欄</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_Interpolation_Bilinear.Content\" xml:space=\"preserve\">\n    <value>雙線性</value>\n  </data>\n  <data name=\"Profile_Cursor_DrawCursor_ScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>自訂</value>\n  </data>\n  <data name=\"Profile_SourceWindow.Header\" xml:space=\"preserve\">\n    <value>來源視窗</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen.Description\" xml:space=\"preserve\">\n    <value>僅適用於全螢幕模式縮放。啟用後可以阻止某些應用程式的通知和彈出式視窗</value>\n  </data>\n  <data name=\"About_Version_Version\" xml:space=\"preserve\">\n    <value>版本</value>\n  </data>\n  <data name=\"About_Version_UpdateSettings.Header\" xml:space=\"preserve\">\n    <value>更新設定</value>\n  </data>\n  <data name=\"Profile_Advanced_LaunchParameters.Header\" xml:space=\"preserve\">\n    <value>啟動參數</value>\n  </data>\n  <data name=\"Overlay_Profiler_CaptureMethod\" xml:space=\"preserve\">\n    <value>截取方式</value>\n  </data>\n  <data name=\"Overlay_FPS_Opacity\" xml:space=\"preserve\">\n    <value>不透明度</value>\n  </data>\n  <data name=\"Overlay_FPS_Lock\" xml:space=\"preserve\">\n    <value>鎖定</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFontCache.Content\" xml:space=\"preserve\">\n    <value>停用字型快取</value>\n  </data>\n  <data name=\"Overlay_FPS_Unlock\" xml:space=\"preserve\">\n    <value>解除鎖定</value>\n  </data>\n  <data name=\"About_DeveloperModeEnabled\" xml:space=\"preserve\">\n    <value>開發者模式已啟用。</value>\n  </data>\n  <data name=\"Dialog_ExeFile\" xml:space=\"preserve\">\n    <value>可執行檔案</value>\n  </data>\n  <data name=\"Dialog_JsonFile\" xml:space=\"preserve\">\n    <value>JSON 檔案</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings\" xml:space=\"preserve\">\n    <value>渲染時間</value>\n  </data>\n  <data name=\"About_Version_CommitId\" xml:space=\"preserve\">\n    <value>提交</value>\n  </data>\n  <data name=\"Overlay_Profiler\" xml:space=\"preserve\">\n    <value>效能分析器</value>\n  </data>\n  <data name=\"Profile_MoreOptions_ChangeExecutableForLaunching.Text\" xml:space=\"preserve\">\n    <value>更改用於啟動程式的可執行檔案</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_Total\" xml:space=\"preserve\">\n    <value>總共</value>\n  </data>\n  <data name=\"Dialog_SelectLauncher_Title\" xml:space=\"preserve\">\n    <value>選擇用於啟動程式的可執行檔案</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Header\" xml:space=\"preserve\">\n    <value>允許縮放已最大化或全螢幕的視窗</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter.Header\" xml:space=\"preserve\">\n    <value>幀率限制</value>\n  </data>\n  <data name=\"Message_ScalingFailed\" xml:space=\"preserve\">\n    <value>縮放失敗</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_EnableStatisticsForDynamicDetection.Content\" xml:space=\"preserve\">\n    <value>啟用動態偵測統計</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Header\" xml:space=\"preserve\">\n    <value>最小幀率</value>\n  </data>\n  <data name=\"Home_Advanced_MinFrameRate.Description\" xml:space=\"preserve\">\n    <value>穩定 GPU 頻率以減少卡頓，但會導致電力消耗增加</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableFP16.Content\" xml:space=\"preserve\">\n    <value>禁止在著色器中使用 FP16</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_BenchmarkMode.Content\" xml:space=\"preserve\">\n    <value>性能測試模式</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Dynamic.Content\" xml:space=\"preserve\">\n    <value>動態偵測</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection.Header\" xml:space=\"preserve\">\n    <value>偵測重複幀</value>\n  </data>\n  <data name=\"Message_CreateFenceFailed\" xml:space=\"preserve\">\n    <value>目前的顯示卡不支援 ID3D11Device5::CreateFence，請嘗試切換顯示卡或更新驅動程式。</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToEffects\" xml:space=\"preserve\">\n    <value>切換到效果</value>\n  </data>\n  <data name=\"Overlay_Profiler_Timings_SwitchToPasses\" xml:space=\"preserve\">\n    <value>切換到通道</value>\n  </data>\n  <data name=\"Profile_Performance_FrameRateLimiter_MaxFrameRate.Header\" xml:space=\"preserve\">\n    <value>最大幀率</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Always.Content\" xml:space=\"preserve\">\n    <value>總是偵測</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DuplicateFrameDetection_Never.Content\" xml:space=\"preserve\">\n    <value>從不偵測</value>\n  </data>\n  <data name=\"Overlay_Profiler_DynamicDetection\" xml:space=\"preserve\">\n    <value>動態偵測</value>\n  </data>\n  <data name=\"Overlay_Profiler_FrameRate\" xml:space=\"preserve\">\n    <value>幀率</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport.Header\" xml:space=\"preserve\">\n    <value>啟用觸控支援</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_Description.Text\" xml:space=\"preserve\">\n    <value>您需要提供管理員權限才能更改此設定</value>\n  </data>\n  <data name=\"Home_TouchSupport_EnableTouchSupport_LearnMore.Content\" xml:space=\"preserve\">\n    <value>了解更多</value>\n  </data>\n  <data name=\"Home_TouchSupport.Header\" xml:space=\"preserve\">\n    <value>觸控支援</value>\n  </data>\n  <data name=\"Home_TouchSupport_Info.Title\" xml:space=\"preserve\">\n    <value>如果觸控支援失效，Magpie 可能會在縮放前請求管理員權限以執行修復。</value>\n  </data>\n  <data name=\"Home_Advanced_SimulateExclusiveFullscreen_InfoBar.Title\" xml:space=\"preserve\">\n    <value>此選項與某些舊遊戲不相容，請謹慎使用。</value>\n  </data>\n  <data name=\"Message_InvalidScalingMode\" xml:space=\"preserve\">\n    <value>縮放模式無效。</value>\n  </data>\n  <data name=\"Message_TouchSupport\" xml:space=\"preserve\">\n    <value>啟用觸控支援失敗。</value>\n  </data>\n  <data name=\"Message_InvalidSourceWindow\" xml:space=\"preserve\">\n    <value>不支援縮放這個視窗。</value>\n  </data>\n  <data name=\"Message_Maximized\" xml:space=\"preserve\">\n    <value>已禁止縮放最大化或全螢幕的視窗，您可以在首頁更改此設定。</value>\n  </data>\n  <data name=\"Message_LowIntegrityLevel\" xml:space=\"preserve\">\n    <value>Magpie 需要以管理員身分執行才能縮放這個視窗。</value>\n  </data>\n  <data name=\"Message_ScalingFailedGeneral\" xml:space=\"preserve\">\n    <value>詳情請參閱日誌。</value>\n  </data>\n  <data name=\"Message_CaptureFailed\" xml:space=\"preserve\">\n    <value>無法擷取這個視窗，請嘗試切換擷取方式。</value>\n  </data>\n  <data name=\"Profile_Performance_NoGraphicsCard.Title\" xml:space=\"preserve\">\n    <value>未找到相容的顯示卡，因此將改用 CPU 渲染，很可能達不到理想效能。</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_AppName\" xml:space=\"preserve\">\n    <value>輸入應用程式的名稱</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\" xml:space=\"preserve\">\n    <value>輸入處理程序名稱</value>\n  </data>\n  <data name=\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\" xml:space=\"preserve\">\n    <value>輸入視窗標題</value>\n  </data>\n  <data name=\"TextMenuFlyout_Copy\" xml:space=\"preserve\">\n    <value>複製</value>\n  </data>\n  <data name=\"TextMenuFlyout_Cut\" xml:space=\"preserve\">\n    <value>剪下</value>\n  </data>\n  <data name=\"TextMenuFlyout_Paste\" xml:space=\"preserve\">\n    <value>貼上</value>\n  </data>\n  <data name=\"TextMenuFlyout_Redo\" xml:space=\"preserve\">\n    <value>重新操作</value>\n  </data>\n  <data name=\"TextMenuFlyout_SelectAll\" xml:space=\"preserve\">\n    <value>全選</value>\n  </data>\n  <data name=\"TextMenuFlyout_Undo\" xml:space=\"preserve\">\n    <value>取消操作</value>\n  </data>\n  <data name=\"Message_BannedInWindowedMode\" xml:space=\"preserve\">\n    <value>不支援視窗模式縮放這個視窗。</value>\n  </data>\n  <data name=\"Message_InvalidCropping\" xml:space=\"preserve\">\n    <value>無法套用自訂裁剪。</value>\n  </data>\n  <data name=\"Home_TouchSupport.Description\" xml:space=\"preserve\">\n    <value>由於作業系統的安全限制，Magpie 需要 UIAccess 權限來支援觸控輸入。</value>\n  </data>\n  <data name=\"Home_Activation.Description\" xml:space=\"preserve\">\n    <value>按下快速鍵可縮放前景視窗或停止縮放。</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling.Header\" xml:space=\"preserve\">\n    <value>全螢幕模式縮放快速鍵</value>\n  </data>\n  <data name=\"Home_Activation_FullscreenScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>全螢幕模式縮放快速鍵</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>視窗模式縮放快速鍵</value>\n  </data>\n  <data name=\"Home_Activation_WindowedScaling_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>視窗模式縮放快速鍵</value>\n  </data>\n  <data name=\"Home_Advanced_AllowScalingMaximized.Description\" xml:space=\"preserve\">\n    <value>僅適用於全螢幕模式縮放</value>\n  </data>\n  <data name=\"Home_Toolbar.Description\" xml:space=\"preserve\">\n    <value>工具列位於縮放視窗頂部，提供幀率顯示、截圖等功能，視窗模式縮放時還可以用於拖曳縮放視窗。</value>\n  </data>\n  <data name=\"Home_Toolbar.Header\" xml:space=\"preserve\">\n    <value>工具列</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState.Header\" xml:space=\"preserve\">\n    <value>工具列初始狀態</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AlwaysShow.Content\" xml:space=\"preserve\">\n    <value>始終顯示</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_AutoHide.Content\" xml:space=\"preserve\">\n    <value>自動隱藏</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Off.Content\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle.Header\" xml:space=\"preserve\">\n    <value>工具列狀態切換快速鍵</value>\n  </data>\n  <data name=\"Home_Toolbar_StateToggle_ShortcutControl.Title\" xml:space=\"preserve\">\n    <value>工具列狀態切換快速鍵</value>\n  </data>\n  <data name=\"Message_ToolbarIn3DGameMode\" xml:space=\"preserve\">\n    <value>3D 遊戲模式下不支援工具列。</value>\n  </data>\n  <data name=\"Message_ToolbarNewState\" xml:space=\"preserve\">\n    <value>工具列：{}</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close\" xml:space=\"preserve\">\n    <value>停止縮放</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Demo\" xml:space=\"preserve\">\n    <value>ImGui 示範視窗</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Pin\" xml:space=\"preserve\">\n    <value>固定工具列</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot\" xml:space=\"preserve\">\n    <value>截圖</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Profiler\" xml:space=\"preserve\">\n    <value>效能分析器視窗</value>\n  </data>\n  <data name=\"Message_Windowed3DGameMode\" xml:space=\"preserve\">\n    <value>3D 遊戲模式下不支援視窗模式縮放。</value>\n  </data>\n  <data name=\"Profile_General_3DGameMode.Description\" xml:space=\"preserve\">\n    <value>針對 3D 遊戲最佳化，不支援工具列和視窗模式縮放</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory.Header\" xml:space=\"preserve\">\n    <value>截圖儲存目錄</value>\n  </data>\n  <data name=\"Home_Toolbar_ScreenshotSaveDirectory_Change.Content\" xml:space=\"preserve\">\n    <value>更改</value>\n  </data>\n  <data name=\"Dialog_SetlectScreenshotSaveDirectory_Title\" xml:space=\"preserve\">\n    <value>選擇截圖儲存目錄</value>\n  </data>\n  <data name=\"Message_ScreenshotSaved\" xml:space=\"preserve\">\n    <value>已儲存截圖 {}</value>\n  </data>\n  <data name=\"Message_ScreenshotFailed\" xml:space=\"preserve\">\n    <value>截圖失敗。</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_Description\" xml:space=\"preserve\">\n    <value>右鍵以匯出中間結果</value>\n  </data>\n  <data name=\"Overlay_Toolbar_TakeScreenshot_PopupTitle\" xml:space=\"preserve\">\n    <value>匯出中間結果</value>\n  </data>\n  <data name=\"Profile_WindowedScaling.Header\" xml:space=\"preserve\">\n    <value>視窗模式縮放</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor.Header\" xml:space=\"preserve\">\n    <value>初始縮放倍數</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Auto.Content\" xml:space=\"preserve\">\n    <value>自動</value>\n  </data>\n  <data name=\"Profile_WindowedScaling_InitialScaleFactor_Custom.Content\" xml:space=\"preserve\">\n    <value>自訂</value>\n  </data>\n  <data name=\"Profile_Advanced_DisableDirectFlip.Description\" xml:space=\"preserve\">\n    <value>可避免部份相容性問題，但可能顯著增加延遲</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Disabled.Content\" xml:space=\"preserve\">\n    <value>停用</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Fullscreen.Content\" xml:space=\"preserve\">\n    <value>全螢幕模式縮放</value>\n  </data>\n  <data name=\"Profile_General_AutoScale_Windowed.Content\" xml:space=\"preserve\">\n    <value>視窗模式縮放</value>\n  </data>\n  <data name=\"Profile_General_Multimonitor.Description\" xml:space=\"preserve\">\n    <value>僅適用於全螢幕模式縮放</value>\n  </data>\n  <data name=\"Home_TouchSupport_Warn.Title\" xml:space=\"preserve\">\n    <value>工具列不支援觸控輸入。</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Close_Description\" xml:space=\"preserve\">\n    <value>右鍵以關閉工具列</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToFullscreen\" xml:space=\"preserve\">\n    <value>切換到全螢幕模式縮放</value>\n  </data>\n  <data name=\"Overlay_Toolbar_SwitchToWindowed\" xml:space=\"preserve\">\n    <value>切換到視窗模式縮放</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Fullscreen.Header\" xml:space=\"preserve\">\n    <value>全螢幕模式縮放</value>\n  </data>\n  <data name=\"Home_Toolbar_InitialState_Windowed.Header\" xml:space=\"preserve\">\n    <value>視窗模式縮放</value>\n  </data>\n  <data name=\"Message_ExportScalingModesFailed\" xml:space=\"preserve\">\n    <value>匯出縮放模式失敗。</value>\n  </data>\n  <data name=\"Message_ImportScalingModesFailed\" xml:space=\"preserve\">\n    <value>匯入縮放模式失敗。</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_LocateLogs.Header\" xml:space=\"preserve\">\n    <value>打開日誌位置</value>\n  </data>\n  <data name=\"Message_WindowedDesktopDuplication\" xml:space=\"preserve\">\n    <value>Desktop Duplication 擷取不支援視窗模式縮放。</value>\n  </data>\n  <data name=\"Profile_General_DesktopDuplicationWarning.Title\" xml:space=\"preserve\">\n    <value>此擷取方式和視窗模式縮放不相容。</value>\n  </data>\n  <data name=\"Settings_Launch_RunAtStartup.Description\" xml:space=\"preserve\">\n    <value>啟用了「在系統匣上顯示應用程式」時將不會顯示主視窗</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Description\" xml:space=\"preserve\">\n    <value>{} 秒後縮放前景視窗</value>\n  </data>\n  <data name=\"Home_Activation_Timer_Start\" xml:space=\"preserve\">\n    <value>開始</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Fullscreen\" xml:space=\"preserve\">\n    <value>{} 秒後縮放（全螢幕模式）</value>\n  </data>\n  <data name=\"NotifyIcon_Timer_Windowed\" xml:space=\"preserve\">\n    <value>{} 秒後縮放（視窗模式）</value>\n  </data>\n  <data name=\"Overlay_Toolbar_Minimize\" xml:space=\"preserve\">\n    <value>最小化</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide.Header\" xml:space=\"preserve\">\n    <value>游標靜止時自動隱藏</value>\n  </data>\n  <data name=\"Profile_Cursor_AutoHide_Delay.Header\" xml:space=\"preserve\">\n    <value>隱藏倒數（秒）</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Description\" xml:space=\"preserve\">\n    <value>僅適用於全螢幕模式縮放</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment.Header\" xml:space=\"preserve\">\n    <value>輸出畫面位置</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomCenter.Content\" xml:space=\"preserve\">\n    <value>底部置中</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomLeft.Content\" xml:space=\"preserve\">\n    <value>左下角</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_BottomRight.Content\" xml:space=\"preserve\">\n    <value>右下角</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Center.Content\" xml:space=\"preserve\">\n    <value>置中對齊</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Left.Content\" xml:space=\"preserve\">\n    <value>向左對齊</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_Right.Content\" xml:space=\"preserve\">\n    <value>向右對齊</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopCenter.Content\" xml:space=\"preserve\">\n    <value>頂部置中</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopLeft.Content\" xml:space=\"preserve\">\n    <value>左上角</value>\n  </data>\n  <data name=\"Profile_Advanced_DestAlignment_TopRight.Content\" xml:space=\"preserve\">\n    <value>右上角</value>\n  </data>\n  <data name=\"Home_Advanced_DeveloperOptions_DisableTopmost.Content\" xml:space=\"preserve\">\n    <value>停用縮放視窗置頂</value>\n  </data>\n</root>"
  },
  {
    "path": "src/Magpie/RootPage.cpp",
    "content": "#include \"pch.h\"\n#include \"RootPage.h\"\n#if __has_include(\"RootPage.g.cpp\")\n#include \"RootPage.g.cpp\"\n#endif\n#include \"XamlHelper.h\"\n#include \"Win32Helper.h\"\n#include \"ProfileService.h\"\n#include \"AppXReader.h\"\n#include \"IconHelper.h\"\n#include \"ControlHelper.h\"\n#include \"ThemeHelper.h\"\n#include \"ContentDialogHelper.h\"\n#include \"LocalizationService.h\"\n#include \"App.h\"\n#include \"TitleBarControl.h\"\n#include \"MainWindow.h\"\n#include \"CandidateWindowItem.h\"\n#include \"CommonSharedConstants.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::Graphics::Display;\nusing namespace Windows::Graphics::Imaging;\nusing namespace Windows::UI::ViewManagement;\nusing namespace Windows::UI;\nusing namespace Windows::UI::Xaml::Controls::Primitives;\nusing namespace Windows::UI::Xaml::Input;\nusing namespace Windows::UI::Xaml::Media::Animation;\nusing namespace Windows::UI::Xaml::Media::Imaging;\n\nnamespace winrt::Magpie::implementation {\n\nstatic constexpr uint32_t FIRST_PROFILE_ITEM_IDX = 4;\n\nRootPage::RootPage() {\n\t// 设置 Language 属性帮助 XAML 选择合适的字体，比如繁体中文使用 Microsoft JhengHei UI，\n\t// 日语使用 Yu Gothic UI\n\tLanguage(LocalizationService::Get().Language());\n}\n\nRootPage::~RootPage() {\n\tContentDialogHelper::CloseActiveDialog();\n\n\t// 不手动置空会内存泄露\n\t// 似乎是 XAML Islands 的 bug？\n\tContentFrame().Content(nullptr);\n\n\t// 每次主窗口关闭都清理 AppXReader 的缓存\n\tAppXReader::ClearCache();\n}\n\nvoid RootPage::InitializeComponent() {\n\tRootPageT::InitializeComponent();\n\n\t_appThemeChangedRevoker = App::Get().ThemeChanged(\n\t\tauto_revoke, [this](bool) { _UpdateTheme(true); });\n\t_UpdateTheme(false);\n\n\t_dpiChangedRevoker = App::Get().MainWindow().DpiChanged(\n\t\tauto_revoke, [this](uint32_t) { _UpdateIcons(false); });\n\n\tProfileService& profileService = ProfileService::Get();\n\t_profileAddedRevoker = profileService.ProfileAdded(\n\t\tauto_revoke, std::bind_front(&RootPage::_ProfileService_ProfileAdded, this));\n\t_profileRenamedRevoker = profileService.ProfileRenamed(\n\t\tauto_revoke, std::bind_front(&RootPage::_ProfileService_ProfileRenamed, this));\n\t_profileRemovedRevoker = profileService.ProfileRemoved(\n\t\tauto_revoke, std::bind_front(&RootPage::_ProfileService_ProfileRemoved, this));\n\t_profileMovedRevoker = profileService.ProfileMoved(\n\t\tauto_revoke, std::bind_front(&RootPage::_ProfileService_ProfileReordered, this));\n\n\tconst Win32Helper::OSVersion& osVersion = Win32Helper::GetOSVersion();\n\tif (osVersion.Is22H2OrNewer()) {\n\t\t// Win11 22H2+ 使用系统的 Mica 背景\n\t\tMUXC::BackdropMaterial::SetApplyToRootOrPageBackground(*this, true);\n\t}\n\n\tIVector<IInspectable> navMenuItems = RootNavigationView().MenuItems();\n\tfor (const Profile& profile : AppSettings::Get().Profiles()) {\n\t\tMUXC::NavigationViewItem item;\n\t\titem.Content(box_value(profile.name));\n\t\t// 用于占位\n\t\titem.Icon(FontIcon());\n\t\t_LoadIcon(item, profile);\n\n\t\tnavMenuItems.InsertAt(navMenuItems.Size() - 1, item);\n\t}\n}\n\nstatic void SkipToggleSwitchAnimations(const DependencyObject& elem) {\n\tFrameworkElement rootGrid = VisualTreeHelper::GetChild(elem, 0).try_as<FrameworkElement>();\n\n\tfor (VisualStateGroup group : VisualStateManager::GetVisualStateGroups(rootGrid)) {\n\t\tfor (VisualState state : group.States()) {\n\t\t\tif (Storyboard storyboard = state.Storyboard()) {\n\t\t\t\tstoryboard.SkipToFill();\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid RootPage::RootPage_Loaded(IInspectable const&, RoutedEventArgs const&) {\n\t// 消除焦点框\n\tIsTabStop(true);\n\tFocus(FocusState::Programmatic);\n\tIsTabStop(false);\n\n\t// 设置 NavigationView 内的 Tooltip 的主题\n\tXamlHelper::UpdateThemeOfTooltips(RootNavigationView(), ActualTheme());\n\n\t// 启动时跳过 ToggleSwitch 的动画\n\tstd::vector<DependencyObject> elems{ *this };\n\tdo {\n\t\tstd::vector<DependencyObject> temp;\n\n\t\tfor (const DependencyObject& elem : elems) {\n\t\t\tconst int count = VisualTreeHelper::GetChildrenCount(elem);\n\t\t\tfor (int i = 0; i < count; ++i) {\n\t\t\t\tDependencyObject current = VisualTreeHelper::GetChild(elem, i);\n\n\t\t\t\tif (get_class_name(current) == name_of<ToggleSwitch>()) {\n\t\t\t\t\tSkipToggleSwitchAnimations(current);\n\t\t\t\t} else {\n\t\t\t\t\ttemp.emplace_back(std::move(current));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\telems = std::move(temp);\n\t} while (!elems.empty());\n}\n\nvoid RootPage::NavigationView_SelectionChanged(\n\tMUXC::NavigationView const&,\n\tMUXC::NavigationViewSelectionChangedEventArgs const& args\n) {\n\tauto contentFrame = ContentFrame();\n\n\tif (args.IsSettingsSelected()) {\n\t\tcontentFrame.Navigate(xaml_typename<SettingsPage>());\n\t} else {\n\t\tIInspectable selectedItem = args.SelectedItem();\n\t\tif (!selectedItem) {\n\t\t\tcontentFrame.Content(nullptr);\n\t\t\treturn;\n\t\t}\n\n\t\tIInspectable tag = selectedItem.try_as<MUXC::NavigationViewItem>().Tag();\n\t\tif (tag) {\n\t\t\thstring tagStr = unbox_value<hstring>(tag);\n\t\t\tInterop::TypeName typeName;\n\t\t\tif (tagStr == L\"Home\") {\n\t\t\t\ttypeName = xaml_typename<HomePage>();\n\t\t\t} else if (tagStr == L\"ScalingModes\") {\n\t\t\t\ttypeName = xaml_typename<ScalingModesPage>();\n\t\t\t} else if (tagStr == L\"About\") {\n\t\t\t\ttypeName = xaml_typename<AboutPage>();\n\t\t\t} else {\n\t\t\t\ttypeName = xaml_typename<HomePage>();\n\t\t\t}\n\n\t\t\tcontentFrame.Navigate(typeName);\n\t\t} else {\n\t\t\t// 缩放配置页面\n\t\t\tMUXC::NavigationView nv = RootNavigationView();\n\t\t\tuint32_t index;\n\t\t\tif (nv.MenuItems().IndexOf(nv.SelectedItem(), index)) {\n\t\t\t\tcontentFrame.Navigate(xaml_typename<ProfilePage>(), box_value((int)index - 4));\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid RootPage::NavigationView_PaneOpening(MUXC::NavigationView const&, IInspectable const&) {\n\tif (Win32Helper::GetOSVersion().IsWin11()) {\n\t\t// Win11 中 Tooltip 自动适应主题\n\t\treturn;\n\t}\n\n\tXamlHelper::UpdateThemeOfTooltips(*this, ActualTheme());\n\n\t// UpdateThemeOfTooltips 中使用的 hack 会使 NavigationViewItem 在展开时不会自动删除 Tooltip\n\t// 因此这里手动删除\n\tconst MUXC::NavigationView& nv = RootNavigationView();\n\tfor (const IInspectable& item : nv.MenuItems()) {\n\t\tToolTipService::SetToolTip(item.try_as<DependencyObject>(), nullptr);\n\t}\n\tfor (const IInspectable& item : nv.FooterMenuItems()) {\n\t\tToolTipService::SetToolTip(item.try_as<DependencyObject>(), nullptr);\n\t}\n}\n\nvoid RootPage::NavigationView_PaneClosing(MUXC::NavigationView const&, MUXC::NavigationViewPaneClosingEventArgs const&) {\n\tXamlHelper::UpdateThemeOfTooltips(*this, ActualTheme());\n}\n\nvoid RootPage::NavigationView_DisplayModeChanged(MUXC::NavigationView const& nv, MUXC::NavigationViewDisplayModeChangedEventArgs const&) {\n\tbool isExpanded = nv.DisplayMode() == MUXC::NavigationViewDisplayMode::Expanded;\n\tnv.IsPaneToggleButtonVisible(!isExpanded);\n\tif (isExpanded) {\n\t\t// 延迟设置 IsPaneOpen 才能起作用\n\t\tApp::Get().Dispatcher().TryEnqueue(DispatcherQueuePriority::Low, [nv(MUXC::NavigationView(nv))]() {\n\t\t\tnv.IsPaneOpen(true);\n\t\t});\n\t}\n\n\t// !!! HACK !!!\n\t// 使导航栏的可滚动区域不会覆盖标题栏\n\tFrameworkElement menuItemsScrollViewer = nv.try_as<IControlProtected>()\n\t\t.GetTemplateChild(L\"MenuItemsScrollViewer\").try_as<FrameworkElement>();\n\tmenuItemsScrollViewer.Margin({ 0,isExpanded ? TitleBar().ActualHeight() : 0.0,0,0});\n\n\tXamlHelper::UpdateThemeOfTooltips(*this, ActualTheme());\n}\n\nvoid RootPage::NavigationView_ItemInvoked(MUXC::NavigationView const&, MUXC::NavigationViewItemInvokedEventArgs const& args) {\n\tif (args.InvokedItemContainer() == NewProfileNavigationViewItem()) {\n\t\t_newProfileViewModel->PrepareForOpen();\n\n\t\t// 同步调用 ShowAt 有时会失败\n\t\tApp::Get().Dispatcher().TryEnqueue([that(get_strong())]() {\n\t\t\tthat->NewProfileFlyout().ShowAt(that->NewProfileNavigationViewItem());\n\t\t});\n\t}\n}\n\nvoid RootPage::ComboBox_DropDownOpened(IInspectable const& sender, IInspectable const&) const {\n\tControlHelper::ComboBox_DropDownOpened(sender);\n}\n\nvoid RootPage::NewProfileConfirmButton_Click(IInspectable const&, RoutedEventArgs const&) {\n\t_newProfileViewModel->Confirm();\n\tNewProfileFlyout().Hide();\n}\n\nvoid RootPage::NewProfileNameContextFlyout_Opening(IInspectable const&, IInspectable const&) {\n\tauto menuItems = NewProfileNameContextFlyout().Items();\n\t\n\tint idx = _newProfileViewModel->CandidateWindowIndex();\n\tif (idx < 0) {\n\t\t// 隐藏所有选项\n\t\tfor (const MenuFlyoutItemBase& item : menuItems) {\n\t\t\tif (IInspectable tag = item.Tag(); tag && tag.try_as<int>()) {\n\t\t\t\titem.Visibility(Visibility::Collapsed);\n\t\t\t}\n\t\t}\n\n\t\treturn;\n\t}\n\n\tCandidateWindowItem* selectedItem = get_self<CandidateWindowItem>(\n\t\t_newProfileViewModel->CandidateWindows().GetAt(idx).try_as<winrt::Magpie::CandidateWindowItem>());\n\n\t// 设置每个选项的可见性\n\tbool shouldInit = true;\n\tfor (const MenuFlyoutItemBase& item : menuItems) {\n\t\tIInspectable tag = item.Tag();\n\t\tif (!tag) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tstd::optional<int> id = tag.try_as<int>();\n\t\tif (!id) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tshouldInit = false;\n\n\t\tif (*id == 1) {\n\t\t\t// 填入进程名选项\n\t\t\titem.Visibility(selectedItem->AUMID().empty() ? Visibility::Visible : Visibility::Collapsed);\n\t\t} else if (*id == 2) {\n\t\t\t// 填入应用名选项\n\t\t\titem.Visibility(selectedItem->AUMID().empty() ? Visibility::Collapsed : Visibility::Visible);\n\t\t} else {\n\t\t\t// 填入窗口标题选项\n\t\t\titem.Visibility(Visibility::Visible);\n\t\t}\n\t}\n\n\tif (!shouldInit) {\n\t\treturn;\n\t}\n\n\t// 惰性初始化\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\n\t// 填入进程名\n\tMenuFlyoutItem item1;\n\tFontIcon icon1;\n\ticon1.Glyph(L\"\\xE9F5\");\n\titem1.Text(resourceLoader.GetString(L\"Root_NewProfileFlyout_NameContextFlyout_ProcessName\"));\n\titem1.Icon(icon1);\n\tRoutedEventHandler clickHandler([this](IInspectable const&, IInspectable const&) {\n\t\t_UpdateNewProfileNameTextBox(false);\n\t});\n\titem1.Click(clickHandler);\n\titem1.Tag(box_value(1));\n\tmenuItems.Append(item1);\n\n\t// 填入应用名\n\tMenuFlyoutItem item2;\n\tFontIcon icon2;\n\ticon2.Glyph(L\"\\xECAA\");\n\titem2.Text(resourceLoader.GetString(L\"Root_NewProfileFlyout_NameContextFlyout_AppName\"));\n\titem2.Icon(icon2);\n\titem2.Click(clickHandler);\n\titem2.Tag(box_value(2));\n\tmenuItems.Append(item2);\n\n\tif (selectedItem->AUMID().empty()) {\n\t\titem2.Visibility(Visibility::Collapsed);\n\t} else {\n\t\titem1.Visibility(Visibility::Collapsed);\n\t}\n\n\t// 填入窗口标题\n\tMenuFlyoutItem item3;\n\tFontIcon icon3;\n\ticon3.Glyph(L\"\\xE737\");\n\titem3.Icon(icon3);\n\titem3.Text(resourceLoader.GetString(L\"Root_NewProfileFlyout_NameContextFlyout_WindowTitle\"));\n\titem3.Click([this](IInspectable const&, IInspectable const&) {\n\t\t_UpdateNewProfileNameTextBox(true);\n\t});\n\titem3.Tag(box_value(3));\n\tmenuItems.Append(item3);\n}\n\nvoid RootPage::NewProfileNameTextBox_KeyDown(IInspectable const&, Input::KeyRoutedEventArgs const& args) {\n\tif (args.Key() == VirtualKey::Enter && _newProfileViewModel->IsConfirmButtonEnabled()) {\n\t\tNewProfileConfirmButton_Click(nullptr, nullptr);\n\t}\n}\n\nvoid RootPage::NavigateToAboutPage() {\n\tMUXC::NavigationView nv = RootNavigationView();\n\tnv.SelectedItem(nv.FooterMenuItems().GetAt(0));\n}\n\nTitleBarControl& RootPage::TitleBar() {\n\treturn *get_self<TitleBarControl>(RootPageT::TitleBar());\n}\n\nstatic Color Win32ColorToWinRTColor(COLORREF color) {\n\treturn { 255, GetRValue(color), GetGValue(color), GetBValue(color) };\n}\n\nvoid RootPage::_UpdateTheme(bool updateIcons) {\n\tconst bool isLightTheme = App::Get().IsLightTheme();\n\n\tif (IsLoaded() && (ActualTheme() == ElementTheme::Light) == isLightTheme) {\n\t\t// 无需切换\n\t\treturn;\n\t}\n\n\tif (!Win32Helper::GetOSVersion().Is22H2OrNewer()) {\n\t\tconst Windows::UI::Color bkgColor = Win32ColorToWinRTColor(\n\t\t\tisLightTheme ? ThemeHelper::LIGHT_TINT_COLOR : ThemeHelper::DARK_TINT_COLOR);\n\t\tBackground(SolidColorBrush(bkgColor));\n\t}\n\n\tElementTheme newTheme = isLightTheme ? ElementTheme::Light : ElementTheme::Dark;\n\tRequestedTheme(newTheme);\n\n\tXamlHelper::UpdateThemeOfXamlPopups(XamlRoot(), newTheme);\n\tXamlHelper::UpdateThemeOfTooltips(*this, newTheme);\n\n\tif (updateIcons && IsLoaded()) {\n\t\t_UpdateIcons(true);\n\t}\n}\n\nfire_and_forget RootPage::_LoadIcon(MUXC::NavigationViewItem const& item, const Profile& profile) {\n\tweak_ref<MUXC::NavigationViewItem> weakRef(item);\n\n\tbool preferLightTheme = App::Get().IsLightTheme();\n\tbool isPackaged = profile.isPackaged;\n\tstd::wstring path = profile.pathRule;\n\tconst uint32_t iconSize = (uint32_t)std::lroundf(\n\t\t16.0f * App::Get().MainWindow().CurrentDpi() / USER_DEFAULT_SCREEN_DPI);\n\n\tco_await resume_background();\n\n\tstd::wstring iconPath;\n\tSoftwareBitmap iconBitmap{ nullptr };\n\n\tif (isPackaged) {\n\t\tAppXReader reader;\n\t\tif (reader.Initialize(path)) {\n\t\t\tstd::variant<std::wstring, SoftwareBitmap> uwpIcon =\n\t\t\t\treader.GetIcon(iconSize, preferLightTheme);\n\t\t\tif (uwpIcon.index() == 0) {\n\t\t\t\ticonPath = std::get<0>(uwpIcon);\n\t\t\t} else {\n\t\t\t\ticonBitmap = std::get<1>(uwpIcon);\n\t\t\t}\n\t\t}\n\t} else {\n\t\ticonBitmap = IconHelper::ExtractIconFromExe(path.c_str(), iconSize);\n\t}\n\n\tco_await App::Get().Dispatcher();\n\n\tauto strongRef = weakRef.get();\n\tif (!strongRef) {\n\t\tco_return;\n\t}\n\n\tif (!iconPath.empty()) {\n\t\tBitmapIcon icon;\n\t\ticon.ShowAsMonochrome(false);\n\t\ticon.UriSource(Uri(iconPath));\n\t\ticon.Width(16);\n\t\ticon.Height(16);\n\n\t\tstrongRef.Icon(icon);\n\t} else if (iconBitmap) {\n\t\tSoftwareBitmapSource imageSource;\n\t\tco_await imageSource.SetBitmapAsync(iconBitmap);\n\n\t\tMUXC::ImageIcon imageIcon;\n\t\timageIcon.Width(16);\n\t\timageIcon.Height(16);\n\t\timageIcon.Source(imageSource);\n\n\t\tstrongRef.Icon(imageIcon);\n\t} else {\n\t\tFontIcon icon;\n\t\ticon.Glyph(L\"\\uECAA\");\n\t\tstrongRef.Icon(icon);\n\t}\n}\n\nvoid RootPage::_UpdateIcons(bool skipDesktop) {\n\tIVector<IInspectable> navMenuItems = RootNavigationView().MenuItems();\n\tconst std::vector<Profile>& profiles = AppSettings::Get().Profiles();\n\n\tfor (uint32_t i = 0; i < profiles.size(); ++i) {\n\t\tif (skipDesktop && !profiles[i].isPackaged) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tMUXC::NavigationViewItem item = navMenuItems.GetAt(FIRST_PROFILE_ITEM_IDX + i)\n\t\t\t.try_as<MUXC::NavigationViewItem>();\n\t\t_LoadIcon(item, profiles[i]);\n\t}\n}\n\nvoid RootPage::_ProfileService_ProfileAdded(Profile& profile) {\n\tMUXC::NavigationViewItem item;\n\titem.Content(box_value(profile.name));\n\t// 用于占位\n\titem.Icon(FontIcon());\n\t_LoadIcon(item, profile);\n\n\tIVector<IInspectable> navMenuItems = RootNavigationView().MenuItems();\n\tnavMenuItems.InsertAt(navMenuItems.Size() - 1, item);\n\tRootNavigationView().SelectedItem(item);\n}\n\nvoid RootPage::_ProfileService_ProfileRenamed(uint32_t idx) {\n\tRootNavigationView().MenuItems()\n\t\t.GetAt(FIRST_PROFILE_ITEM_IDX + idx)\n\t\t.try_as<MUXC::NavigationViewItem>()\n\t\t.Content(box_value(AppSettings::Get().Profiles()[idx].name));\n}\n\nvoid RootPage::_ProfileService_ProfileRemoved(uint32_t idx) {\n\tMUXC::NavigationView nv = RootNavigationView();\n\tIVector<IInspectable> menuItems = nv.MenuItems();\n\tnv.SelectedItem(menuItems.GetAt(FIRST_PROFILE_ITEM_IDX - 1));\n\tmenuItems.RemoveAt(FIRST_PROFILE_ITEM_IDX + idx);\n}\n\nvoid RootPage::_ProfileService_ProfileReordered(uint32_t profileIdx, bool isMoveUp) {\n\tIVector<IInspectable> menuItems = RootNavigationView().MenuItems();\n\n\tuint32_t curIdx = FIRST_PROFILE_ITEM_IDX + profileIdx;\n\tuint32_t otherIdx = isMoveUp ? curIdx - 1 : curIdx + 1;\n\t\n\tIInspectable otherItem = menuItems.GetAt(otherIdx);\n\tmenuItems.RemoveAt(otherIdx);\n\tmenuItems.InsertAt(curIdx, otherItem);\n}\n\nvoid RootPage::_UpdateNewProfileNameTextBox(bool fillWithTitle) {\n\tint idx = _newProfileViewModel->CandidateWindowIndex();\n\tif (idx < 0) {\n\t\treturn;\n\t}\n\n\tCandidateWindowItem* selectedItem = get_self<CandidateWindowItem>(\n\t\t_newProfileViewModel->CandidateWindows().GetAt(idx).try_as<winrt::Magpie::CandidateWindowItem>());\n\thstring text = fillWithTitle ? selectedItem->Title() : selectedItem->DefaultProfileName();\n\n\tTextBox textBox = NewProfileNameTextBox();\n\tif (textBox.Text() == text) {\n\t\treturn;\n\t}\n\n\tconst int size = (int)text.size();\n\t// 遗憾的是设置 Text 属性会导致撤销/重做历史丢失\n\ttextBox.Text(std::move(text));\n\t// 修改文本后将光标移到最后\n\ttextBox.Select(size, 0);\n\t// 如果文本太长，这个调用可以使视口移到光标位置\n\ttextBox.Focus(FocusState::Programmatic);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/RootPage.h",
    "content": "#pragma once\n#include \"RootPage.g.h\"\n#include \"Event.h\"\n#include \"NewProfileViewModel.h\"\n\nnamespace Magpie {\nstruct Profile;\n}\n\nnamespace winrt::Magpie::implementation {\n\nstruct TitleBarControl;\n\nstruct RootPage : RootPageT<RootPage> {\n\tRootPage();\n\t~RootPage();\n\n\tvoid InitializeComponent();\n\n\tvoid RootPage_Loaded(IInspectable const&, RoutedEventArgs const&);\n\n\tvoid NavigationView_SelectionChanged(MUXC::NavigationView const&, MUXC::NavigationViewSelectionChangedEventArgs const& args);\n\n\tvoid NavigationView_PaneOpening(MUXC::NavigationView const&, IInspectable const&);\n\n\tvoid NavigationView_PaneClosing(MUXC::NavigationView const&, MUXC::NavigationViewPaneClosingEventArgs const&);\n\n\tvoid NavigationView_DisplayModeChanged(MUXC::NavigationView const& nv, MUXC::NavigationViewDisplayModeChangedEventArgs const&);\n\n\tvoid NavigationView_ItemInvoked(MUXC::NavigationView const&, MUXC::NavigationViewItemInvokedEventArgs const& args);\n\n\twinrt::Magpie::NewProfileViewModel NewProfileViewModel() const noexcept {\n\t\treturn *_newProfileViewModel;\n\t}\n\n\tvoid ComboBox_DropDownOpened(IInspectable const&, IInspectable const&) const;\n\n\tvoid NewProfileConfirmButton_Click(IInspectable const&, RoutedEventArgs const&);\n\n\tvoid NewProfileNameContextFlyout_Opening(IInspectable const&, IInspectable const&);\n\n\tvoid NewProfileNameTextBox_KeyDown(IInspectable const&, Input::KeyRoutedEventArgs const& args);\n\n\tvoid NavigateToAboutPage();\n\n\tTitleBarControl& TitleBar();\n\nprivate:\n\tvoid _UpdateTheme(bool updateIcons);\n\n\tfire_and_forget _LoadIcon(MUXC::NavigationViewItem const& item, const ::Magpie::Profile& profile);\n\n\tvoid _UpdateIcons(bool skipDesktop);\n\n\tvoid _ProfileService_ProfileAdded(::Magpie::Profile& profile);\n\n\tvoid _ProfileService_ProfileRenamed(uint32_t idx);\n\n\tvoid _ProfileService_ProfileRemoved(uint32_t idx);\n\n\tvoid _ProfileService_ProfileReordered(uint32_t profileIdx, bool isMoveUp);\n\n\tvoid _UpdateNewProfileNameTextBox(bool fillWithTitle);\n\n\t::Magpie::MultithreadEvent<bool>::EventRevoker _appThemeChangedRevoker;\n\t::Magpie::Event<uint32_t>::EventRevoker _dpiChangedRevoker;\n\n\tcom_ptr<implementation::NewProfileViewModel> _newProfileViewModel = make_self<implementation::NewProfileViewModel>();\n\t::Magpie::Event<::Magpie::Profile&>::EventRevoker _profileAddedRevoker;\n\t::Magpie::Event<uint32_t>::EventRevoker _profileRenamedRevoker;\n\t::Magpie::Event<uint32_t>::EventRevoker _profileRemovedRevoker;\n\t::Magpie::Event<uint32_t, bool>::EventRevoker _profileMovedRevoker;\n\tPrimitives::FlyoutBase::Opening_revoker _contextFlyoutOpeningRevoker;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/RootPage.idl",
    "content": "namespace Magpie {\n\truntimeclass RootPage : Windows.UI.Xaml.Controls.Page {\n\t\tNewProfileViewModel NewProfileViewModel { get; };\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/RootPage.xaml",
    "content": "<Page x:Class=\"Magpie.RootPage\"\n      xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n      xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n      xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n      xmlns:local=\"using:Magpie\"\n      xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n      xmlns:muxc=\"using:Microsoft.UI.Xaml.Controls\"\n      Loaded=\"RootPage_Loaded\"\n      mc:Ignorable=\"d\">\n\t<Grid>\n\t\t<local:TitleBarControl x:Name=\"TitleBar\"\n\t\t                       Canvas.ZIndex=\"1\" />\n\n\t\t<muxc:NavigationView Name=\"RootNavigationView\"\n\t\t                     Canvas.ZIndex=\"0\"\n\t\t                     CompactModeThresholdWidth=\"0\"\n\t\t                     DisplayModeChanged=\"NavigationView_DisplayModeChanged\"\n\t\t                     ExpandedModeThresholdWidth=\"920\"\n\t\t                     IsBackButtonVisible=\"Collapsed\"\n\t\t                     ItemInvoked=\"NavigationView_ItemInvoked\"\n\t\t                     PaneClosing=\"NavigationView_PaneClosing\"\n\t\t                     PaneOpening=\"NavigationView_PaneOpening\"\n\t\t                     SelectionChanged=\"NavigationView_SelectionChanged\">\n\t\t\t<muxc:NavigationView.Resources>\n\t\t\t\t<CornerRadius x:Key=\"NavigationViewContentGridCornerRadius\">0</CornerRadius>\n\t\t\t\t<Thickness x:Key=\"NavigationViewContentGridBorderThickness\">1,0,0,0</Thickness>\n\t\t\t</muxc:NavigationView.Resources>\n\n\t\t\t<muxc:NavigationView.MenuItems>\n\t\t\t\t<muxc:NavigationViewItem x:Uid=\"Root_Home\"\n\t\t\t\t                         IsSelected=\"True\"\n\t\t\t\t                         Tag=\"Home\">\n\t\t\t\t\t<muxc:NavigationViewItem.Icon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE80F;\" />\n\t\t\t\t\t</muxc:NavigationViewItem.Icon>\n\t\t\t\t</muxc:NavigationViewItem>\n\t\t\t\t<muxc:NavigationViewItem x:Uid=\"Root_ScalingModes\"\n\t\t\t\t                         Tag=\"ScalingModes\">\n\t\t\t\t\t<muxc:NavigationViewItem.Icon>\n\t\t\t\t\t\t<PathIcon Data=\"{StaticResource SpecialEffectSizeIconData}\">\n\t\t\t\t\t\t\t<!--  导航栏图标尺寸是 19x19  -->\n\t\t\t\t\t\t\t<PathIcon.RenderTransform>\n\t\t\t\t\t\t\t\t<ScaleTransform ScaleX=\"0.95\" ScaleY=\"0.95\" />\n\t\t\t\t\t\t\t</PathIcon.RenderTransform>\n\t\t\t\t\t\t</PathIcon>\n\t\t\t\t\t</muxc:NavigationViewItem.Icon>\n\t\t\t\t</muxc:NavigationViewItem>\n\t\t\t\t<muxc:NavigationViewItemHeader x:Uid=\"Root_Profiles\" />\n\t\t\t\t<muxc:NavigationViewItem x:Uid=\"Root_Defaults\">\n\t\t\t\t\t<muxc:NavigationViewItem.Icon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE81E;\" />\n\t\t\t\t\t</muxc:NavigationViewItem.Icon>\n\t\t\t\t</muxc:NavigationViewItem>\n\t\t\t\t<muxc:NavigationViewItem x:Name=\"NewProfileNavigationViewItem\"\n\t\t\t\t                         x:Uid=\"Root_NewProfile\"\n\t\t\t\t                         Icon=\"Add\"\n\t\t\t\t                         SelectsOnInvoked=\"False\">\n\t\t\t\t\t<FlyoutBase.AttachedFlyout>\n\t\t\t\t\t\t<Flyout x:Name=\"NewProfileFlyout\"\n\t\t\t\t\t\t        Placement=\"Right\">\n\t\t\t\t\t\t\t<Grid>\n\t\t\t\t\t\t\t\t<ContentControl Grid.RowSpan=\"2\"\n\t\t\t\t\t\t\t\t                MinWidth=\"240\"\n\t\t\t\t\t\t\t\t                MinHeight=\"170\"\n\t\t\t\t\t\t\t\t                Margin=\"10\"\n\t\t\t\t\t\t\t\t                HorizontalContentAlignment=\"Center\"\n\t\t\t\t\t\t\t\t                VerticalContentAlignment=\"Center\"\n\t\t\t\t\t\t\t\t                Visibility=\"{x:Bind NewProfileViewModel.IsNoCandidateWindow, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"20\">\n\t\t\t\t\t\t\t\t\t\t<FontIcon HorizontalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t\t\t          FontSize=\"40\"\n\t\t\t\t\t\t\t\t\t\t          Glyph=\"&#xE8FC;\" />\n\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Root_NewProfileFlyout_NoCandidateWindow\"\n\t\t\t\t\t\t\t\t\t\t           HorizontalAlignment=\"Center\" />\n\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t</ContentControl>\n\n\t\t\t\t\t\t\t\t<local:SimpleStackPanel Visibility=\"{x:Bind NewProfileViewModel.IsAnyCandidateWindow, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t\t<TextBlock x:Name=\"NewProfileTitleTextBlock\"\n\t\t\t\t\t\t\t\t\t           x:Uid=\"Root_NewProfileFlyout_Title\"\n\t\t\t\t\t\t\t\t\t           Margin=\"0,5,0,20\"\n\t\t\t\t\t\t\t\t\t           FontSize=\"18\"\n\t\t\t\t\t\t\t\t\t           FontWeight=\"SemiBold\" />\n\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Width=\"{Binding ActualWidth, ElementName=NewProfileTitleTextBlock}\"\n\t\t\t\t\t\t\t\t\t                        MinWidth=\"280\"\n\t\t\t\t\t\t\t\t\t                        Spacing=\"15\">\n\t\t\t\t\t\t\t\t\t\t<ComboBox x:Name=\"CandidateWindowsComboBox\"\n\t\t\t\t\t\t\t\t\t\t          x:Uid=\"Root_NewProfileFlyout_ComboBox\"\n\t\t\t\t\t\t\t\t\t\t          Margin=\"0,0,0,10\"\n\t\t\t\t\t\t\t\t\t\t          HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t\t\t\t          DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t\t\t\t\t\t          ItemsSource=\"{x:Bind NewProfileViewModel.CandidateWindows, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t\t\t          SelectedIndex=\"{x:Bind NewProfileViewModel.CandidateWindowIndex, Mode=TwoWay}\">\n\t\t\t\t\t\t\t\t\t\t\t<ComboBox.ItemTemplate>\n\t\t\t\t\t\t\t\t\t\t\t\t<DataTemplate x:DataType=\"local:CandidateWindowItem\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Grid MaxWidth=\"450\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t      HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t      ColumnSpacing=\"15\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"*\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ContentPresenter Grid.Column=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                  Content=\"{x:Bind Icon, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock Grid.Column=\"1\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t           local:TextBlockHelper.IsAutoTooltipEnabled=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t           Text=\"{x:Bind Title, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t           TextTrimming=\"CharacterEllipsis\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t\t\t\t\t</DataTemplate>\n\t\t\t\t\t\t\t\t\t\t\t</ComboBox.ItemTemplate>\n\t\t\t\t\t\t\t\t\t\t</ComboBox>\n\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Root_NewProfileFlyout_Name\" />\n\t\t\t\t\t\t\t\t\t\t\t<TextBox x:Name=\"NewProfileNameTextBox\"\n\t\t\t\t\t\t\t\t\t\t\t         Height=\"32\"\n\t\t\t\t\t\t\t\t\t\t\t         HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t\t\t\t\t         KeyDown=\"NewProfileNameTextBox_KeyDown\"\n\t\t\t\t\t\t\t\t\t\t\t         Text=\"{x:Bind NewProfileViewModel.Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\">\n\t\t\t\t\t\t\t\t\t\t\t\t<TextBox.ContextFlyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!--  必须设置 x:Name，否则无法编译  -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t<local:TextMenuFlyout x:Name=\"NewProfileNameContextFlyout\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Opening=\"NewProfileNameContextFlyout_Opening\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</TextBox.ContextFlyout>\n\t\t\t\t\t\t\t\t\t\t\t</TextBox>\n\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"Root_NewProfileFlyout_CopyFrom\" />\n\t\t\t\t\t\t\t\t\t\t\t<ComboBox x:Name=\"ProfilesComboBox\"\n\t\t\t\t\t\t\t\t\t\t\t          HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t\t\t\t\t          DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t\t\t\t\t\t\t          ItemsSource=\"{x:Bind NewProfileViewModel.Profiles, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t\t\t\t          SelectedIndex=\"{x:Bind NewProfileViewModel.ProfileIndex, Mode=TwoWay}\">\n\t\t\t\t\t\t\t\t\t\t\t\t<ComboBox.ItemTemplate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<DataTemplate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock MaxWidth=\"300\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t           HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t           local:TextBlockHelper.IsAutoTooltipEnabled=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t           Text=\"{Binding}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t           TextTrimming=\"CharacterEllipsis\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</DataTemplate>\n\t\t\t\t\t\t\t\t\t\t\t\t</ComboBox.ItemTemplate>\n\t\t\t\t\t\t\t\t\t\t\t</ComboBox>\n\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t<Button x:Uid=\"Root_NewProfileFlyout_Create\"\n\t\t\t\t\t\t\t\t\t\t        MinWidth=\"100\"\n\t\t\t\t\t\t\t\t\t\t        Margin=\"0,15,0,0\"\n\t\t\t\t\t\t\t\t\t\t        HorizontalAlignment=\"Right\"\n\t\t\t\t\t\t\t\t\t\t        Click=\"NewProfileConfirmButton_Click\"\n\t\t\t\t\t\t\t\t\t\t        IsEnabled=\"{x:Bind NewProfileViewModel.IsConfirmButtonEnabled, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t\t\t        Style=\"{StaticResource AccentButtonStyle}\" />\n\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Flyout>\n\t\t\t\t\t</FlyoutBase.AttachedFlyout>\n\t\t\t\t</muxc:NavigationViewItem>\n\t\t\t</muxc:NavigationView.MenuItems>\n\t\t\t<muxc:NavigationView.FooterMenuItems>\n\t\t\t\t<muxc:NavigationViewItem x:Uid=\"Root_About\"\n\t\t\t\t                         Tag=\"About\">\n\t\t\t\t\t<muxc:NavigationViewItem.Icon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE946;\" />\n\t\t\t\t\t</muxc:NavigationViewItem.Icon>\n\t\t\t\t</muxc:NavigationViewItem>\n\t\t\t</muxc:NavigationView.FooterMenuItems>\n\n\t\t\t<Frame x:Name=\"ContentFrame\" />\n\t\t</muxc:NavigationView>\n\t</Grid>\n</Page>\n"
  },
  {
    "path": "src/Magpie/ScalingMode.cpp",
    "content": "#include \"pch.h\"\n#include \"ScalingMode.h\"\n#include \"StrHelper.h\"\n\nnamespace Magpie {\n\nEffectItem::operator EffectOption()  const noexcept {\n\tEffectOption result = {\n\t\t.name = StrHelper::UTF16ToUTF8(name),\n\t\t.scalingType = scalingType,\n\t\t.scale = scale\n\t};\n\n\tresult.parameters.reserve(parameters.size());\n\tfor (const auto& pair : parameters) {\n\t\tresult.parameters.emplace(StrHelper::UTF16ToUTF8(pair.first), pair.second);\n\t}\n\n\treturn result;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ScalingMode.h",
    "content": "#pragma once\n#include \"ScalingOptions.h\"\n\nnamespace Magpie {\n\nstruct EffectItem {\n\tstd::wstring name;\n\tphmap::flat_hash_map<std::wstring, float> parameters;\n\tScalingType scalingType = ScalingType::Normal;\n\tstd::pair<float, float> scale = { 1.0f,1.0f };\n\n\tbool HasScale() const noexcept {\n\t\treturn scalingType != ScalingType::Normal ||\n\t\t\t!IsApprox(scale.first, 1.0f) || !IsApprox(scale.second, 1.0f);\n\t}\n\n\texplicit operator EffectOption() const noexcept;\n};\n\nstruct ScalingMode {\n\tstd::wstring name;\n\tstd::vector<EffectItem> effects;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModeEffectItem.cpp",
    "content": "#include \"pch.h\"\n#include \"ScalingModeEffectItem.h\"\n#if __has_include(\"ScalingTypeItem.g.cpp\")\n#include \"ScalingTypeItem.g.cpp\"\n#endif\n#if __has_include(\"ScalingModeEffectItem.g.cpp\")\n#include \"ScalingModeEffectItem.g.cpp\"\n#endif\n#include \"App.h\"\n#include \"AppSettings.h\"\n#include \"CommonSharedConstants.h\"\n#include \"EffectsService.h\"\n#include \"EffectHelper.h\"\n#include \"Logger.h\"\n#include \"MainWindow.h\"\n#include \"ScalingMode.h\"\n#include \"ScalingModesService.h\"\n#include \"StrHelper.h\"\n\nusing namespace Magpie;\n\nnamespace winrt::Magpie::implementation {\n\nScalingModeEffectItem::ScalingModeEffectItem(uint32_t scalingModeIdx, uint32_t effectIdx) \n\t: _scalingModeIdx(scalingModeIdx), _effectIdx(effectIdx)\n{\n\tEffectItem& data = _Data();\n\n\t_effectInfo = EffectsService::Get().GetEffect(data.name);\n\n\tif (_effectInfo) {\n\t\t_name = EffectHelper::GetDisplayName(data.name);\n\t\t_parametersViewModel = make_self<EffectParametersViewModel>(scalingModeIdx, effectIdx);\n\t} else {\n\t\tResourceLoader resourceLoader =\n\t\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\t\t_name = StrHelper::Concat(\n\t\t\tresourceLoader.GetString(L\"ScalingModes_Description_UnknownEffect\"),\n\t\t\tL\" (\",\n\t\t\tdata.name,\n\t\t\tL\")\"\n\t\t);\n\t}\n}\n\nvoid ScalingModeEffectItem::ScalingModeIdx(uint32_t value) noexcept {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\t_scalingModeIdx = value;\n\n\tif (_parametersViewModel) {\n\t\t_parametersViewModel->ScalingModeIdx(value);\n\t}\n}\n\nvoid ScalingModeEffectItem::EffectIdx(uint32_t value) noexcept {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\t_effectIdx = value;\n\n\tif (_parametersViewModel) {\n\t\t_parametersViewModel->EffectIdx(value);\n\t}\n}\n\nbool ScalingModeEffectItem::CanScale() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn false;\n\t}\n\n\treturn _effectInfo && _effectInfo->CanScale();\n}\n\nbool ScalingModeEffectItem::HasParameters() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn false;\n\t}\n\n\treturn _effectInfo && !_effectInfo->params.empty();\n}\n\nIVector<IInspectable> ScalingModeEffectItem::ScalingTypes() noexcept {\n\tusing Windows::ApplicationModel::Resources::ResourceLoader;\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\t\n\treturn single_threaded_vector(std::vector<IInspectable>{\n\t\tmake<ScalingTypeItem>(\n\t\t\tresourceLoader.GetString(L\"ScalingModes_ScaleFlyout_Type_Factor\"),\n\t\t\tresourceLoader.GetString(L\"ScalingModes_ScaleFlyout_Type_Factor_Description\")\n\t\t),\n\t\tmake<ScalingTypeItem>(\n\t\t\tresourceLoader.GetString(L\"ScalingModes_ScaleFlyout_Type_Fit\"),\n\t\t\tresourceLoader.GetString(L\"ScalingModes_ScaleFlyout_Type_Fit_Description\")\n\t\t),\n\t\tmake<ScalingTypeItem>(\n\t\t\tresourceLoader.GetString(L\"ScalingModes_ScaleFlyout_Type_Absolute\"),\n\t\t\tresourceLoader.GetString(L\"ScalingModes_ScaleFlyout_Type_Absolute_Description\")\n\t\t),\n\t\tmake<ScalingTypeItem>(\n\t\t\tresourceLoader.GetString(L\"ScalingModes_ScaleFlyout_Type_Fill\"),\n\t\t\tresourceLoader.GetString(L\"ScalingModes_ScaleFlyout_Type_Fill_Description\")\n\t\t),\n\t});\n}\n\nint ScalingModeEffectItem::ScalingType() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn (int)ScalingType::Normal;\n\t}\n\n\treturn (int)_Data().scalingType;\n}\n\nstatic SIZE GetMonitorSize() noexcept {\n\t// 使用距离主窗口最近的显示器\n\tHWND hwndMain = App::Get().MainWindow().Handle();\n\tHMONITOR hMonitor = MonitorFromWindow(hwndMain, MONITOR_DEFAULTTONEAREST);\n\tif (!hMonitor) {\n\t\tLogger::Get().Win32Error(\"MonitorFromWindow 失败\");\n\t\treturn { 400,300 };\n\t}\n\n\tMONITORINFO mi{ .cbSize = sizeof(mi) };\n\tif (!GetMonitorInfo(hMonitor, &mi)) {\n\t\tLogger::Get().Win32Error(\"GetMonitorInfo 失败\");\n\t\treturn { 400,300 };\n\t}\n\t\n\treturn {\n\t\tmi.rcMonitor.right - mi.rcMonitor.left,\n\t\tmi.rcMonitor.bottom - mi.rcMonitor.top\n\t};\n}\n\nvoid ScalingModeEffectItem::ScalingType(int value) {\n\tif (_IsRemoved() || value < 0) {\n\t\treturn;\n\t}\n\n\tEffectItem& data = _Data();\n\tconst ::Magpie::ScalingType scalingType = (::Magpie::ScalingType)value;\n\tif (data.scalingType == scalingType) {\n\t\treturn;\n\t}\n\n\tif (data.scalingType == ::Magpie::ScalingType::Absolute) {\n\t\tdata.scale = { 1.0f,1.0f };\n\t\tRaisePropertyChanged(L\"ScaleFactorX\");\n\t\tRaisePropertyChanged(L\"ScaleFactorY\");\n\t} else if (scalingType == ::Magpie::ScalingType::Absolute) {\n\t\tSIZE monitorSize = GetMonitorSize();\n\t\tdata.scale = { (float)monitorSize.cx,(float)monitorSize.cy };\n\n\t\tRaisePropertyChanged(L\"ScalingPixelsX\");\n\t\tRaisePropertyChanged(L\"ScalingPixelsY\");\n\t}\n\n\tdata.scalingType = scalingType;\n\tRaisePropertyChanged(L\"ScalingType\");\n\tRaisePropertyChanged(L\"IsShowScaleFactors\");\n\tRaisePropertyChanged(L\"IsShowScalingPixels\");\n\n\tAppSettings::Get().SaveAsync();\n}\n\nbool ScalingModeEffectItem::IsShowScaleFactors() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn false;\n\t}\n\n\t::Magpie::ScalingType scalingType = _Data().scalingType;\n\treturn scalingType == ::Magpie::ScalingType::Normal || scalingType == ::Magpie::ScalingType::Fit;\n}\n\nbool ScalingModeEffectItem::IsShowScalingPixels() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn false;\n\t}\n\n\treturn _Data().scalingType == ::Magpie::ScalingType::Absolute;\n}\n\ndouble ScalingModeEffectItem::ScaleFactorX() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn 0.0;\n\t}\n\n\treturn _Data().scale.first;\n}\n\nvoid ScalingModeEffectItem::ScaleFactorX(double value) {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tEffectItem& data = _Data();\n\tif (data.scalingType != ::Magpie::ScalingType::Normal && data.scalingType != ::Magpie::ScalingType::Fit) {\n\t\treturn;\n\t}\n\n\t// 用户将 NumberBox 清空时会传入 nan\n\tif (!std::isnan(value) && value + std::numeric_limits<float>::epsilon() > 1e-4) {\n\t\tdata.scale.first = (float)value;\n\t}\n\t\n\tRaisePropertyChanged(L\"ScaleFactorX\");\n\tAppSettings::Get().SaveAsync();\n}\n\ndouble ScalingModeEffectItem::ScaleFactorY() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn 0.0;\n\t}\n\n\treturn _Data().scale.second;\n}\n\nvoid ScalingModeEffectItem::ScaleFactorY(double value) {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tEffectItem& data = _Data();\n\tif (data.scalingType != ::Magpie::ScalingType::Normal && data.scalingType != ::Magpie::ScalingType::Fit) {\n\t\treturn;\n\t}\n\n\tif (!std::isnan(value) && value + std::numeric_limits<float>::epsilon() > 1e-4) {\n\t\tdata.scale.second = (float)value;\n\t}\n\n\tRaisePropertyChanged(L\"ScaleFactorY\");\n\tAppSettings::Get().SaveAsync();\n}\n\ndouble ScalingModeEffectItem::ScalingPixelsX() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn 0.0;\n\t}\n\n\treturn _Data().scale.first;\n}\n\nvoid ScalingModeEffectItem::ScalingPixelsX(double value) {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tEffectItem& data = _Data();\n\tif (data.scalingType != ::Magpie::ScalingType::Absolute) {\n\t\treturn;\n\t}\n\n\tif (!std::isnan(value) && value > 0.5) {\n\t\tdata.scale.first = (float)std::round(value);\n\t}\n\n\tRaisePropertyChanged(L\"ScalingPixelsX\");\n\tAppSettings::Get().SaveAsync();\n}\n\ndouble ScalingModeEffectItem::ScalingPixelsY() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn 0.0;\n\t}\n\n\treturn _Data().scale.second;\n}\n\nvoid ScalingModeEffectItem::ScalingPixelsY(double value) {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tEffectItem& data = _Data();\n\tif (data.scalingType != ::Magpie::ScalingType::Absolute) {\n\t\treturn;\n\t}\n\n\tif (!std::isnan(value) && value > 0.5) {\n\t\tdata.scale.second = (float)std::round(value);\n\t}\n\n\tRaisePropertyChanged(L\"ScalingPixelsY\");\n\tAppSettings::Get().SaveAsync();\n}\n\nvoid ScalingModeEffectItem::Remove() {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tRemoved.Invoke(_effectIdx);\n\n\t_effectIdx = std::numeric_limits<uint32_t>::max();\n}\n\nbool ScalingModeEffectItem::CanMove() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn false;\n\t}\n\n\tconst ScalingMode& mode = ScalingModesService::Get().GetScalingMode(_scalingModeIdx);\n\treturn mode.effects.size() > 1 && Win32Helper::IsProcessElevated();\n}\n\nbool ScalingModeEffectItem::CanMoveUp() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn false;\n\t}\n\n\treturn _effectIdx > 0;\n}\n\nbool ScalingModeEffectItem::CanMoveDown() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn false;\n\t}\n\n\tconst ScalingMode& mode = ScalingModesService::Get().GetScalingMode(_scalingModeIdx);\n\treturn _effectIdx + 1 < (uint32_t)mode.effects.size();\n}\n\nvoid ScalingModeEffectItem::MoveUp() noexcept {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tMoved.Invoke(*this, true);\n}\n\nvoid ScalingModeEffectItem::MoveDown() noexcept {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tMoved.Invoke(*this, false);\n}\n\nvoid ScalingModeEffectItem::RefreshMoveState() {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tRaisePropertyChanged(L\"CanMove\");\n\tRaisePropertyChanged(L\"CanMoveUp\");\n\tRaisePropertyChanged(L\"CanMoveDown\");\n}\n\nEffectItem& ScalingModeEffectItem::_Data() noexcept {\n\treturn ScalingModesService::Get().GetScalingMode(_scalingModeIdx).effects[_effectIdx];\n}\n\nconst EffectItem& ScalingModeEffectItem::_Data() const noexcept {\n\treturn ScalingModesService::Get().GetScalingMode(_scalingModeIdx).effects[_effectIdx];\n}\n\n// 应确保被删除后依然处于合法的状态，调用任何方法都不会崩溃，见 ScalingModeItem::_IsRemoved\nbool ScalingModeEffectItem::_IsRemoved() const noexcept {\n\treturn _scalingModeIdx == std::numeric_limits<uint32_t>::max() ||\n\t\t_effectIdx == std::numeric_limits<uint32_t>::max();\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModeEffectItem.h",
    "content": "#pragma once\n#include \"ScalingModeEffectItem.g.h\"\n#include \"ScalingTypeItem.g.h\"\n#include \"EffectParametersViewModel.h\"\n#include \"Event.h\"\n\nnamespace Magpie {\nstruct EffectItem;\n}\n\nnamespace winrt::Magpie::implementation {\n\nstruct ScalingTypeItem : ScalingTypeItemT<ScalingTypeItem> {\n\tScalingTypeItem(hstring name, hstring desc) : _name(std::move(name)), _desc(std::move(desc)) {}\n\n\thstring Name() const noexcept { return _name; }\n\n\thstring Desc() const noexcept { return _desc; }\n\nprivate:\n\thstring _name;\n\thstring _desc;\n};\n\nstruct ScalingModeEffectItem : ScalingModeEffectItemT<ScalingModeEffectItem>,\n                               wil::notify_property_changed_base<ScalingModeEffectItem> {\n\tScalingModeEffectItem(uint32_t scalingModeIdx, uint32_t effectIdx);\n\n\thstring Name() const noexcept {\n\t\treturn _name;\n\t}\n\n\tuint32_t ScalingModeIdx() const noexcept {\n\t\treturn _scalingModeIdx;\n\t}\n\n\tvoid ScalingModeIdx(uint32_t value) noexcept;\n\n\tuint32_t EffectIdx() const noexcept {\n\t\treturn _effectIdx;\n\t}\n\n\tvoid EffectIdx(uint32_t value) noexcept;\n\n\tbool CanScale() const noexcept;\n\n\tbool HasParameters() const noexcept;\n\n\tIVector<IInspectable> ScalingTypes() noexcept;\n\n\tint ScalingType() const noexcept;\n\tvoid ScalingType(int value);\n\n\tbool IsShowScaleFactors() const noexcept;\n\tbool IsShowScalingPixels() const noexcept;\n\n\tdouble ScaleFactorX() const noexcept;\n\tvoid ScaleFactorX(double value);\n\n\tdouble ScaleFactorY() const noexcept;\n\tvoid ScaleFactorY(double value);\n\n\tdouble ScalingPixelsX() const noexcept;\n\tvoid ScalingPixelsX(double value);\n\n\tdouble ScalingPixelsY() const noexcept;\n\tvoid ScalingPixelsY(double value);\n\n\twinrt::Magpie::EffectParametersViewModel Parameters() const noexcept {\n\t\treturn _parametersViewModel\n\t\t\t? winrt::Magpie::EffectParametersViewModel(*_parametersViewModel)\n\t\t\t: winrt::Magpie::EffectParametersViewModel{ nullptr };\n\t}\n\n\tvoid Remove();\n\n\tbool CanMove() const noexcept;\n\tbool CanMoveUp() const noexcept;\n\tbool CanMoveDown() const noexcept;\n\tvoid MoveUp() noexcept;\n\tvoid MoveDown() noexcept;\n\n\tvoid RefreshMoveState();\n\n\t// 上移为 true，下移为 false\n\t::Magpie::Event<ScalingModeEffectItem&, bool> Moved;\n\t::Magpie::Event<uint32_t> Removed;\n\nprivate:\n\tbool _IsRemoved() const noexcept;\n\n\t::Magpie::EffectItem& _Data() noexcept;\n\tconst ::Magpie::EffectItem& _Data() const noexcept;\n\n\tuint32_t _scalingModeIdx = 0;\n\tuint32_t _effectIdx = 0;\n\thstring _name;\n\tconst ::Magpie::EffectInfo* _effectInfo = nullptr;\n\n\tcom_ptr<EffectParametersViewModel> _parametersViewModel;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModeEffectItem.idl",
    "content": "namespace Magpie {\n\truntimeclass ScalingTypeItem {\n\t\tString Name { get; };\n\t\tString Desc { get; };\n\t}\n\n\truntimeclass ScalingModeEffectItem : Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tUInt32 ScalingModeIdx;\n\t\tUInt32 EffectIdx;\n\t\tString Name { get; };\n\n\t\tBoolean CanScale { get; };\n\t\tBoolean HasParameters { get; };\n\n\t\tIVector<IInspectable> ScalingTypes { get; };\n\t\tInt32 ScalingType;\n\t\tBoolean IsShowScaleFactors { get; };\n\t\tBoolean IsShowScalingPixels { get; };\n\t\tDouble ScaleFactorX;\n\t\tDouble ScaleFactorY;\n\t\tDouble ScalingPixelsX;\n\t\tDouble ScalingPixelsY;\n\n\t\tEffectParametersViewModel Parameters { get; };\n\n\t\tvoid Remove();\n\n\t\tBoolean CanMove { get; };\n\t\tBoolean CanMoveUp { get; };\n\t\tBoolean CanMoveDown { get; };\n\t\tvoid MoveUp();\n\t\tvoid MoveDown();\n\n\t\tvoid RefreshMoveState();\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModeItem.cpp",
    "content": "#include \"pch.h\"\n#include \"ScalingModeItem.h\"\n#if __has_include(\"ScalingModeItem.g.cpp\")\n#include \"ScalingModeItem.g.cpp\"\n#endif\n#include \"ScalingMode.h\"\n#include \"StrHelper.h\"\n#include \"XamlHelper.h\"\n#include \"AppSettings.h\"\n#include \"EffectsService.h\"\n#include \"EffectHelper.h\"\n#include \"CommonSharedConstants.h\"\n#include \"App.h\"\n#include \"ScalingModeEffectItem.h\"\n#include \"Win32Helper.h\"\n#include \"RootPage.h\"\n\nusing namespace ::Magpie;\n\nnamespace winrt::Magpie::implementation {\n\nstatic ScalingModeEffectItem& GetEffectItemImpl(const IInspectable& item) noexcept {\n\treturn *get_self<ScalingModeEffectItem>(item.try_as<winrt::Magpie::ScalingModeEffectItem>());\n}\n\nScalingModeItem::ScalingModeItem(uint32_t index, bool isInitialExpanded)\n\t: _index(index), _isInitialExpanded(isInitialExpanded)\n{\n\t{\n\t\tstd::vector<IInspectable> linkedProfiles;\n\t\tconst Profile& defaultProfile = AppSettings::Get().DefaultProfile();\n\t\tif (defaultProfile.scalingMode == (int)index) {\n\t\t\thstring defaults = ResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID)\n\t\t\t\t.GetString(L\"Root_Defaults/Content\");\n\t\t\tlinkedProfiles.push_back(box_value(defaults));\n\t\t}\n\t\tfor (const Profile& profile : AppSettings::Get().Profiles()) {\n\t\t\tif (profile.scalingMode == (int)index) {\n\t\t\t\tlinkedProfiles.push_back(box_value(profile.name));\n\t\t\t}\n\t\t}\n\t\t_linkedProfiles = single_threaded_vector(std::move(linkedProfiles));\n\t}\n\n\t_scalingModeAddedRevoker = ScalingModesService::Get().ScalingModeAdded(\n\t\tauto_revoke, std::bind_front(&ScalingModeItem::_ScalingModesService_Added, this));\n\t_scalingModeMovedRevoker = ScalingModesService::Get().ScalingModeMoved(\n\t\tauto_revoke, std::bind_front(&ScalingModeItem::_ScalingModesService_Moved, this));\n\t_scalingModeRemovedRevoker = ScalingModesService::Get().ScalingModeRemoved(\n\t\tauto_revoke, std::bind_front(&ScalingModeItem::_ScalingModesService_Removed, this));\n\n\tScalingMode& data = _Data();\n\t{\n\t\tstd::vector<IInspectable> effects;\n\t\teffects.reserve(data.effects.size());\n\t\tfor (uint32_t i = 0; i < data.effects.size(); ++i) {\n\t\t\teffects.push_back(*_CreateScalingModeEffectItem(_index, i));\n\t\t}\n\t\t_effects = single_threaded_observable_vector(std::move(effects));\n\t}\n\t_effectsChangedRevoker = _effects.VectorChanged(\n\t\tauto_revoke, { this, &ScalingModeItem::_Effects_VectorChanged });\n}\n\nvoid ScalingModeItem::_Index(uint32_t value) noexcept {\n\t_index = value;\n\tfor (const IInspectable& item : _effects) {\n\t\tGetEffectItemImpl(item).ScalingModeIdx(value);\n\t}\n\n\tif (!_IsRemoved()) {\n\t\tRaisePropertyChanged(L\"CanMoveUp\");\n\t\tRaisePropertyChanged(L\"CanMoveDown\");\n\t}\n}\n\n// 效果被删除后 ScalingModeItem 不会立刻析构，而且 WinUI 可能会更新绑定！我们要\n// 确保被删除后 ScalingModeItem 依然处于合法的状态，调用任何方法都不会崩溃。我知\n// 道老是检查显得啰嗦但别无他法。\nbool ScalingModeItem::_IsRemoved() const noexcept {\n\treturn _index == std::numeric_limits<uint32_t>::max();\n}\n\nvoid ScalingModeItem::_ScalingModesService_Added(EffectAddedWay) {\n\tif (_index + 2 == ScalingModesService::Get().GetScalingModeCount()) {\n\t\tRaisePropertyChanged(L\"CanMoveDown\");\n\t}\n}\n\nvoid ScalingModeItem::_ScalingModesService_Moved(uint32_t index, bool isMoveUp) {\n\tuint32_t targetIndex = isMoveUp ? index - 1 : index + 1;\n\tif (_index == index) {\n\t\t_Index(targetIndex);\n\t} else if (_index == targetIndex) {\n\t\t_Index(index);\n\t}\n}\n\nvoid ScalingModeItem::_ScalingModesService_Removed(uint32_t index) {\n\tif (_index > index) {\n\t\t_Index(_index - 1);\n\t} else {\n\t\tRaisePropertyChanged(L\"CanMoveUp\");\n\t\tRaisePropertyChanged(L\"CanMoveDown\");\n\t}\n}\n\nvoid ScalingModeItem::_Effects_VectorChanged(IObservableVector<IInspectable> const&, IVectorChangedEventArgs const& args) {\n\tif (!_isMovingEffects) {\n\t\tRaisePropertyChanged(L\"Description\");\n\t\tRaisePropertyChanged(L\"CanReorderEffects\");\n\t\tRaisePropertyChanged(L\"IsShowMoveButtons\");\n\t\treturn;\n\t}\n\t\n\t// 移动元素时先删除再插入\n\tif (args.CollectionChange() == CollectionChange::ItemRemoved) {\n\t\t_movingFromIdx = args.Index();\n\t\treturn;\n\t}\n\t\n\tassert(args.CollectionChange() == CollectionChange::ItemInserted);\n\tuint32_t movingToIdx = args.Index();\n\n\tstd::vector<EffectItem>& effects = _Data().effects;\n\tEffectItem removedEffect = std::move(effects[_movingFromIdx]);\n\teffects.erase(effects.begin() + _movingFromIdx);\n\teffects.emplace(effects.begin() + movingToIdx, std::move(removedEffect));\n\n\tuint32_t minIdx, maxIdx;\n\tif (_movingFromIdx < movingToIdx) {\n\t\tminIdx = _movingFromIdx;\n\t\tmaxIdx = movingToIdx;\n\t} else {\n\t\tminIdx = movingToIdx;\n\t\tmaxIdx = _movingFromIdx;\n\t}\n\t\n\tfor (uint32_t i = minIdx; i <= maxIdx; ++i) {\n\t\tGetEffectItemImpl(_effects.GetAt(i)).EffectIdx(i);\n\t}\n\n\tRaisePropertyChanged(L\"Description\");\n\tAppSettings::Get().SaveAsync();\n}\n\nvoid ScalingModeItem::_ScalingModeEffectItem_Removed(uint32_t index) {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tstd::vector<EffectItem>& effects = _Data().effects;\n\teffects.erase(effects.begin() + index);\n\n\t_isMovingEffects = false;\n\t// 标记已被删除\n\tGetEffectItemImpl(_effects.GetAt(index)).EffectIdx(std::numeric_limits<uint32_t>::max());\n\t_effects.RemoveAt(index);\n\t_isMovingEffects = true;\n\n\tfor (uint32_t i = index; i < effects.size(); ++i) {\n\t\tGetEffectItemImpl(_effects.GetAt(i)).EffectIdx(i);\n\t}\n\n\tif (index > 0) {\n\t\tGetEffectItemImpl(_effects.GetAt(index - 1)).RefreshMoveState();\n\t}\n\tif (index < _effects.Size()) {\n\t\tGetEffectItemImpl(_effects.GetAt(index)).RefreshMoveState();\n\t}\n\n\tRaisePropertyChanged(L\"HasUnkownEffects\");\n\n\tAppSettings::Get().SaveAsync();\n}\n\nvoid ScalingModeItem::_ScalingModeEffectItem_Moved(ScalingModeEffectItem& sender, bool isUp) {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tuint32_t idx = sender.EffectIdx();\n\n\tif (isUp) {\n\t\tassert(idx > 0);\n\t\tIInspectable prev = _effects.GetAt(idx - 1);\n\t\t// 状态更新由 _Effects_VectorChanged 处理\n\t\t_effects.RemoveAt(idx - 1);\n\t\t_effects.InsertAt(idx, prev);\n\n\t\tGetEffectItemImpl(prev).RefreshMoveState();\n\t} else {\n\t\tassert(idx + 1 < _effects.Size());\n\t\tIInspectable next = _effects.GetAt(idx + 1);\n\t\t_effects.RemoveAt(idx + 1);\n\t\t_effects.InsertAt(idx, next);\n\n\t\tGetEffectItemImpl(next).RefreshMoveState();\n\t}\n\tsender.RefreshMoveState();\n}\n\ncom_ptr<ScalingModeEffectItem> ScalingModeItem::_CreateScalingModeEffectItem(uint32_t scalingModeIdx, uint32_t effectIdx) {\n\tauto item = make_self<ScalingModeEffectItem>(scalingModeIdx, effectIdx);\n\titem->Removed(std::bind_front(&ScalingModeItem::_ScalingModeEffectItem_Removed, this));\n\titem->Moved(std::bind_front(&ScalingModeItem::_ScalingModeEffectItem_Moved, this));\n\treturn item;\n}\n\nvoid ScalingModeItem::AddEffect(const hstring& fullName) {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tEffectItem& effect = _Data().effects.emplace_back();\n\teffect.name = fullName;\n\n\tconst EffectInfo* effectInfo = EffectsService::Get().GetEffect(fullName);\n\tassert(effectInfo);\n\tif (effectInfo->CanScale()) {\n\t\t// 支持缩放的效果默认等比缩放到充满屏幕\n\t\teffect.scalingType = ::Magpie::ScalingType::Fit;\n\t}\n\n\tauto item = _CreateScalingModeEffectItem(_index, (uint32_t)_Data().effects.size() - 1);\n\t_isMovingEffects = false;\n\t_effects.Append(*item);\n\t_isMovingEffects = true;\n\n\tuint32_t size = _effects.Size();\n\tGetEffectItemImpl(_effects.GetAt(size - 1)).RefreshMoveState();\n\tif (size > 1) {\n\t\tGetEffectItemImpl(_effects.GetAt(size - 2)).RefreshMoveState();\n\t}\n\n\tAppSettings::Get().SaveAsync();\n}\n\nhstring ScalingModeItem::Name() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn {};\n\t}\n\n\treturn hstring(_Data().name);\n}\n\nvoid ScalingModeItem::Name(const hstring& value) noexcept {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\t_Data().name = value;\n\tAppSettings::Get().SaveAsync();\n}\n\nhstring ScalingModeItem::Description() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn {};\n\t}\n\n\tstd::wstring result;\n\tfor (const EffectItem& effect : _Data().effects) {\n\t\tif (!result.empty()) {\n\t\t\tresult.append(L\" > \");\n\t\t}\n\n\t\tif (EffectsService::Get().GetEffect(effect.name) != nullptr) {\n\t\t\tresult += EffectHelper::GetDisplayName(effect.name);\n\t\t} else {\n\t\t\tResourceLoader resourceLoader =\n\t\t\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\t\t\tresult += L'(';\n\t\t\tresult += resourceLoader.GetString(L\"ScalingModes_Description_UnknownEffect\");\n\t\t\tresult += L')';\n\t\t}\n\t}\n\treturn hstring(result);\n}\n\nbool ScalingModeItem::HasUnkownEffects() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn false;\n\t}\n\n\tfor (const EffectItem& effect : _Data().effects) {\n\t\tif (!EffectsService::Get().GetEffect(effect.name)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nvoid ScalingModeItem::RenameText(const hstring& value) noexcept {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\t_renameText = value;\n\tRaisePropertyChanged(L\"RenameText\");\n\n\t_trimedRenameText = value;\n\tStrHelper::Trim(_trimedRenameText);\n\tbool newEnabled = !_trimedRenameText.empty() && _trimedRenameText != _Data().name;\n\tif (_isRenameButtonEnabled != newEnabled) {\n\t\t_isRenameButtonEnabled = newEnabled;\n\t\tRaisePropertyChanged(L\"IsRenameButtonEnabled\");\n\t}\n}\n\nvoid ScalingModeItem::RenameFlyout_Opening() {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tRenameText(hstring(_Data().name));\n\tRaisePropertyChanged(L\"RenameTextBoxSelectionStart\");\n}\n\nvoid ScalingModeItem::RenameTextBox_KeyDown(IInspectable const&, Input::KeyRoutedEventArgs const& args) {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tif (args.Key() == VirtualKey::Enter) {\n\t\tRenameButton_Click();\n\t}\n}\n\nvoid ScalingModeItem::RenameButton_Click() {\n\tif (_IsRemoved() || !_isRenameButtonEnabled) {\n\t\treturn;\n\t}\n\n\t// Flyout 没有 IsOpen 可供绑定，只能用变通方法关闭\n\tXamlHelper::ClosePopups(App::Get().RootPage()->XamlRoot());\n\n\t_Data().name = _trimedRenameText;\n\tRaisePropertyChanged(L\"Name\");\n\n\tAppSettings::Get().SaveAsync();\n}\n\nbool ScalingModeItem::CanMoveUp() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn false;\n\t}\n\n\treturn _index != 0;\n}\n\nbool ScalingModeItem::CanMoveDown() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn false;\n\t}\n\n\treturn _index + 1 < ScalingModesService::Get().GetScalingModeCount();\n}\n\nvoid ScalingModeItem::MoveUp() noexcept {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tScalingModesService::Get().MoveScalingMode(_index, true);\n}\n\nvoid ScalingModeItem::MoveDown() noexcept {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\tScalingModesService::Get().MoveScalingMode(_index, false);\n}\n\nbool ScalingModeItem::CanReorderEffects() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn false;\n\t}\n\n\t// 管理员身份下不支持拖拽排序\n\treturn _effects.Size() > 1 && !Win32Helper::IsProcessElevated();\n}\n\nbool ScalingModeItem::IsShowMoveButtons() const noexcept {\n\tif (_IsRemoved()) {\n\t\treturn false;\n\t}\n\n\treturn _effects.Size() > 1 && Win32Helper::IsProcessElevated();\n}\n\nvoid ScalingModeItem::Remove() {\n\tif (_IsRemoved()) {\n\t\treturn;\n\t}\n\n\t// 被删除后不会立刻析构，因此手动清理事件订阅\n\t_effectsChangedRevoker.revoke();\n\t_scalingModeAddedRevoker.Revoke();\n\t_scalingModeMovedRevoker.Revoke();\n\t_scalingModeRemovedRevoker.Revoke();\n\n\tScalingModesService::Get().RemoveScalingMode(_index);\n\n\t_Index(std::numeric_limits<uint32_t>::max());\n}\n\nScalingMode& ScalingModeItem::_Data() noexcept {\n\treturn ScalingModesService::Get().GetScalingMode(_index);\n}\n\nconst ScalingMode& ScalingModeItem::_Data() const noexcept {\n\treturn ScalingModesService::Get().GetScalingMode(_index);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModeItem.h",
    "content": "#pragma once\n#include \"ScalingModeItem.g.h\"\n#include \"Event.h\"\n#include \"ScalingModesService.h\"\n\nnamespace Magpie {\nstruct ScalingMode;\n}\n\nnamespace winrt::Magpie::implementation {\n\nstruct ScalingModeEffectItem;\n\nstruct ScalingModeItem : ScalingModeItemT<ScalingModeItem>,\n                         wil::notify_property_changed_base<ScalingModeItem> {\n\tScalingModeItem(uint32_t index, bool isInitialExpanded);\n\n\tvoid AddEffect(const hstring& fullName);\n\n\tbool IsInitialExpanded() const noexcept {\n\t\treturn _isInitialExpanded;\n\t}\n\n\thstring Name() const noexcept;\n\n\tvoid Name(const hstring& value) noexcept;\n\n\thstring Description() const noexcept;\n\n\tbool HasUnkownEffects() const noexcept;\n\n\tIObservableVector<IInspectable> Effects() const noexcept {\n\t\treturn _effects;\n\t}\n\n\thstring RenameText() const noexcept {\n\t\treturn _renameText;\n\t}\n\n\tvoid RenameText(const hstring& value) noexcept;\n\n\tbool IsRenameButtonEnabled() const noexcept {\n\t\treturn _isRenameButtonEnabled;\n\t}\n\n\tvoid RenameFlyout_Opening();\n\n\tvoid RenameTextBox_KeyDown(IInspectable const&, Input::KeyRoutedEventArgs const& args);\n\n\tint RenameTextBoxSelectionStart() {\n\t\treturn _renameText.size();\n\t}\n\n\tvoid RenameButton_Click();\n\n\tbool CanMoveUp() const noexcept;\n\n\tbool CanMoveDown() const noexcept;\n\n\tvoid MoveUp() noexcept;\n\n\tvoid MoveDown() noexcept;\n\n\tbool CanReorderEffects() const noexcept;\n\n\tbool IsShowMoveButtons() const noexcept;\n\n\tvoid Remove();\n\n\tIVector<IInspectable> LinkedProfiles() const noexcept {\n\t\treturn _linkedProfiles;\n\t}\n\n\tbool IsInUse() const noexcept {\n\t\treturn _linkedProfiles.Size() > 0;\n\t}\n\nprivate:\n\tvoid _Index(uint32_t value) noexcept;\n\n\tbool _IsRemoved() const noexcept;\n\n\tvoid _ScalingModesService_Added(::Magpie::EffectAddedWay);\n\n\tvoid _ScalingModesService_Moved(uint32_t index, bool isMoveUp);\n\n\tvoid _ScalingModesService_Removed(uint32_t index);\n\n\tvoid _Effects_VectorChanged(IObservableVector<IInspectable> const&, IVectorChangedEventArgs const& args);\n\n\tvoid _ScalingModeEffectItem_Removed(uint32_t index);\n\n\tvoid _ScalingModeEffectItem_Moved(ScalingModeEffectItem& sender, bool isUp);\n\n\tcom_ptr<ScalingModeEffectItem> _CreateScalingModeEffectItem(uint32_t scalingModeIdx, uint32_t effectIdx);\n\n\t::Magpie::ScalingMode& _Data() noexcept;\n\tconst ::Magpie::ScalingMode& _Data() const noexcept;\n\n\tuint32_t _index = 0;\n\tIObservableVector<IInspectable> _effects{ nullptr };\n\t\n\tuint32_t _movingFromIdx = 0;\n\n\t::Magpie::Event<::Magpie::EffectAddedWay>::EventRevoker _scalingModeAddedRevoker;\n\t::Magpie::Event<uint32_t, bool>::EventRevoker _scalingModeMovedRevoker;\n\t::Magpie::Event<uint32_t>::EventRevoker _scalingModeRemovedRevoker;\n\tIObservableVector<IInspectable>::VectorChanged_revoker _effectsChangedRevoker;\n\n\thstring _renameText;\n\tstd::wstring_view _trimedRenameText;\n\t\n\tIVector<IInspectable> _linkedProfiles{ nullptr };\n\n\tbool _isMovingEffects = true;\n\tbool _isRenameButtonEnabled = false;\n\tbool _isInitialExpanded = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModeItem.idl",
    "content": "namespace Magpie {\n    runtimeclass ScalingModeItem : Windows.UI.Xaml.Data.INotifyPropertyChanged {\n        void RenameFlyout_Opening();\n        void RenameTextBox_KeyDown(Object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs args);\n        void RenameButton_Click();\n\n        Boolean IsInitialExpanded { get; };\n\n        String Name;\n        String Description { get; };\n\n        Boolean HasUnkownEffects { get; };\n        IObservableVector<IInspectable> Effects { get; };\n\n        String RenameText;\n        Int32 RenameTextBoxSelectionStart { get; };\n        Boolean IsRenameButtonEnabled { get; };\n\n        Boolean CanMoveUp { get; };\n        Boolean CanMoveDown { get; };\n        void MoveUp();\n        void MoveDown();\n\n        void Remove();\n        IVector<IInspectable> LinkedProfiles { get; };\n        Boolean IsInUse { get; };\n\n        Boolean CanReorderEffects { get; };\n        Boolean IsShowMoveButtons { get; };\n    }\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModesPage.cpp",
    "content": "#include \"pch.h\"\n#include \"ScalingModesPage.h\"\n#if __has_include(\"ScalingModesPage.g.cpp\")\n#include \"ScalingModesPage.g.cpp\"\n#endif\n#include \"ControlHelper.h\"\n#include \"EffectsService.h\"\n#include <parallel_hashmap/phmap.h>\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Controls::Primitives;\nusing namespace Windows::UI::Xaml::Input;\n\nnamespace winrt::Magpie::implementation {\n\nScalingModesPage::ScalingModesPage() {\n\t_BuildEffectMenu();\n}\n\nvoid ScalingModesPage::ComboBox_DropDownOpened(IInspectable const& sender, IInspectable const&) {\n\tControlHelper::ComboBox_DropDownOpened(sender);\n}\n\nvoid ScalingModesPage::NumberBox_Loaded(IInspectable const& sender, RoutedEventArgs const&) {\n\tControlHelper::NumberBox_Loaded(sender);\n}\n\nvoid ScalingModesPage::EffectSettingsCard_Loaded(IInspectable const& sender, RoutedEventArgs const&) {\n\tXamlHelper::UpdateThemeOfTooltips(sender.try_as<DependencyObject>(), ActualTheme());\n}\n\nvoid ScalingModesPage::AddEffectButton_Click(IInspectable const& sender, RoutedEventArgs const&) {\n\tButton btn = sender.try_as<Button>();\n\t_curScalingMode = get_self<ScalingModeItem>(btn.Tag().try_as<winrt::Magpie::ScalingModeItem>());\n\t_addEffectMenuFlyout.ShowAt(btn);\n}\n\nvoid ScalingModesPage::NewScalingModeFlyout_Opening(IInspectable const&, IInspectable const&) {\n\t_viewModel->PrepareForAdd();\n}\n\nvoid ScalingModesPage::NewScalingModeNameTextBox_KeyDown(IInspectable const&, KeyRoutedEventArgs const& args) {\n\tif (args.Key() == VirtualKey::Enter) {\n\t\tif (_viewModel->IsAddButtonEnabled()) {\n\t\t\tNewScalingModeConfirmButton_Click(nullptr, nullptr);\n\t\t}\n\t}\n}\n\nvoid ScalingModesPage::NewScalingModeConfirmButton_Click(IInspectable const&, RoutedEventArgs const&) {\n\tNewScalingModeFlyout().Hide();\n\t_viewModel->AddScalingMode();\n}\n\nvoid ScalingModesPage::ScalingModeMoreOptionsButton_Click(IInspectable const& sender, RoutedEventArgs const&) {\n\t_moreOptionsButton = sender;\n}\n\nvoid ScalingModesPage::RemoveScalingModeMenuItem_Click(IInspectable const& sender, RoutedEventArgs const&) {\n\tMenuFlyoutItem menuItem = sender.try_as<MenuFlyoutItem>();\n\tScalingModeItem* scalingModeItem = get_self<ScalingModeItem>(menuItem.Tag().try_as<winrt::Magpie::ScalingModeItem>());\n\tif (scalingModeItem->IsInUse()) {\n\t\t// 如果有缩放配置正在使用此缩放模式则弹出确认弹窗\n\t\tFlyoutBase::GetAttachedFlyout(menuItem)\n\t\t\t.ShowAt(_moreOptionsButton.try_as<FrameworkElement>());\n\t} else {\n\t\tscalingModeItem->Remove();\n\t}\n}\n\nvoid ScalingModesPage::_BuildEffectMenu() noexcept {\n\tstd::vector<MenuFlyoutItemBase> rootItems;\n\n\tphmap::flat_hash_map<std::wstring_view, MenuFlyoutSubItem> folders;\n\tfolders.reserve(13);\n\tfor (const auto& effect : EffectsService::Get().Effects()) {\n\t\tstd::wstring_view name(effect.name);\n\n\t\tMenuFlyoutItem item;\n\t\titem.Tag(box_value(effect.name));\n\t\titem.Click({ this, &ScalingModesPage::_AddEffectMenuFlyoutItem_Click });\n\n\t\tsize_t delimPos = name.find_last_of(L'\\\\');\n\t\tif (delimPos == std::wstring::npos) {\n\t\t\titem.Text(name);\n\t\t\trootItems.emplace_back(std::move(item));\n\t\t\tcontinue;\n\t\t}\n\n\t\titem.Text(name.substr(delimPos + 1));\n\n\t\tstd::wstring_view dir = name.substr(0, delimPos);\n\t\tauto it = folders.find(dir);\n\t\tif (it != folders.end()) {\n\t\t\tit->second.Items().Append(item);\n\t\t} else {\n\t\t\tMenuFlyoutSubItem folder;\n\t\t\tfolder.Text(hstring(dir));\n\t\t\tfolder.Items().Append(item);\n\n\t\t\trootItems.push_back(folder);\n\t\t\tfolders.emplace(dir, folder);\n\t\t}\n\t}\n\n\tstd::sort(rootItems.begin(), rootItems.end(), [](MenuFlyoutItemBase const& l, MenuFlyoutItemBase const& r) {\n\t\tbool isLSubMenu = get_class_name(l) == name_of<MenuFlyoutSubItem>();\n\t\tbool isRSubMenu = get_class_name(r) == name_of<MenuFlyoutSubItem>();\n\n\t\tif (isLSubMenu != isRSubMenu) {\n\t\t\treturn isLSubMenu;\n\t\t}\n\n\t\tif (isLSubMenu) {\n\t\t\treturn l.try_as<MenuFlyoutSubItem>().Text() < r.try_as<MenuFlyoutSubItem>().Text();\n\t\t} else {\n\t\t\treturn l.try_as<MenuFlyoutItem>().Text() < r.try_as<MenuFlyoutItem>().Text();\n\t\t}\n\t});\n\n\t// 排序文件夹中的项目\n\tfor (MenuFlyoutItemBase& item : rootItems) {\n\t\tMenuFlyoutSubItem folder = item.try_as<MenuFlyoutSubItem>();\n\t\tif (!folder) {\n\t\t\tbreak;\n\t\t}\n\n\t\tIVector<MenuFlyoutItemBase> items = folder.Items();\n\t\t// 读取到 std::vector 中以提高排序性能\n\t\tstd::vector<MenuFlyoutItemBase> itemsVec(items.Size(), nullptr);\n\t\titems.GetMany(0, itemsVec);\n\t\tstd::sort(itemsVec.begin(), itemsVec.end(), [](const MenuFlyoutItemBase& l, const MenuFlyoutItemBase& r) {\n\t\t\thstring lEffectName = unbox_value<hstring>(l.try_as<MenuFlyoutItem>().Tag());\n\t\t\thstring rEffectName = unbox_value<hstring>(r.try_as<MenuFlyoutItem>().Tag());\n\n\t\t\tconst EffectInfo* lEffectInfo = EffectsService::Get().GetEffect(lEffectName);\n\t\t\tconst EffectInfo* rEffectInfo = EffectsService::Get().GetEffect(rEffectName);\n\n\t\t\treturn lEffectInfo->sortName < rEffectInfo->sortName;\n\t\t});\n\t\titems.ReplaceAll(itemsVec);\n\t}\n\n\tfor (MenuFlyoutItemBase& item : rootItems) {\n\t\t_addEffectMenuFlyout.Items().Append(std::move(item));\n\t}\n}\n\nvoid ScalingModesPage::_AddEffectMenuFlyoutItem_Click(IInspectable const& sender, RoutedEventArgs const&) {\n\thstring effectName = unbox_value<hstring>(sender.try_as<MenuFlyoutItem>().Tag());\n\t_curScalingMode->AddEffect(effectName);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModesPage.h",
    "content": "#pragma once\n#include \"ScalingModesPage.g.h\"\n#include \"ScalingModeItem.h\"\n#include \"ScalingModesViewModel.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct ScalingModesPage : ScalingModesPageT<ScalingModesPage> {\n\tScalingModesPage();\n\n\twinrt::Magpie::ScalingModesViewModel ViewModel() const noexcept {\n\t\treturn *_viewModel;\n\t}\n\n\tvoid ComboBox_DropDownOpened(IInspectable const& sender, IInspectable const&);\n\n\tvoid NumberBox_Loaded(IInspectable const& sender, RoutedEventArgs const&);\n\n\tvoid EffectSettingsCard_Loaded(IInspectable const& sender, RoutedEventArgs const&);\n\n\tvoid AddEffectButton_Click(IInspectable const& sender, RoutedEventArgs const&);\n\n\tvoid NewScalingModeFlyout_Opening(IInspectable const&, IInspectable const&);\n\n\tvoid NewScalingModeNameTextBox_KeyDown(IInspectable const&, Input::KeyRoutedEventArgs const& args);\n\n\tvoid NewScalingModeConfirmButton_Click(IInspectable const& sender, RoutedEventArgs const&);\n\n\tvoid ScalingModeMoreOptionsButton_Click(IInspectable const& sender, RoutedEventArgs const&);\n\n\tvoid RemoveScalingModeMenuItem_Click(IInspectable const& sender, RoutedEventArgs const&);\nprivate:\n\tvoid _BuildEffectMenu() noexcept;\n\n\tvoid _AddEffectMenuFlyoutItem_Click(IInspectable const& sender, RoutedEventArgs const&);\n\n\tIInspectable _moreOptionsButton{ nullptr };\n\n\tMenuFlyout _addEffectMenuFlyout;\n\tcom_ptr<ScalingModesViewModel> _viewModel = make_self<ScalingModesViewModel>();\n\tScalingModeItem* _curScalingMode = nullptr;\n};\n\n}\n\nBASIC_FACTORY(ScalingModesPage)\n"
  },
  {
    "path": "src/Magpie/ScalingModesPage.idl",
    "content": "namespace Magpie {\n\truntimeclass ScalingModesPage : Windows.UI.Xaml.Controls.Page {\n\t\tScalingModesPage();\n\n\t\tScalingModesViewModel ViewModel { get; };\n\n\t\t// https://github.com/microsoft/microsoft-ui-xaml/issues/7579\n\t\tvoid UnloadObject(Windows.UI.Xaml.DependencyObject object);\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModesPage.xaml",
    "content": "<Page x:Class=\"Magpie.ScalingModesPage\"\n      xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n      xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n      xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n      xmlns:local=\"using:Magpie\"\n      xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n      xmlns:muxc=\"using:Microsoft.UI.Xaml.Controls\"\n      mc:Ignorable=\"d\">\n\t<Page.Resources>\n\t\t<DataTemplate x:Key=\"EffectParametersFlyout\"\n\t\t              x:DataType=\"local:EffectParametersViewModel\">\n\t\t\t<local:SimpleStackPanel Margin=\"0,0,0,-17\">\n\t\t\t\t<ItemsControl x:Name=\"BoolParamsListView\"\n\t\t\t\t              MaxWidth=\"260\"\n\t\t\t\t              Margin=\"0,0,0,15\"\n\t\t\t\t              x:Load=\"{x:Bind HasBoolParams, Mode=OneTime}\"\n\t\t\t\t              IsTabStop=\"False\"\n\t\t\t\t              ItemsSource=\"{x:Bind BoolParams, Mode=OneTime}\">\n\t\t\t\t\t<ItemsControl.ItemTemplate>\n\t\t\t\t\t\t<DataTemplate x:DataType=\"local:ScalingModeBoolParameter\">\n\t\t\t\t\t\t\t<CheckBox MinWidth=\"0\"\n\t\t\t\t\t\t\t          Content=\"{x:Bind Label, Mode=OneTime}\"\n\t\t\t\t\t\t\t          IsChecked=\"{x:Bind Value, Mode=TwoWay}\" />\n\t\t\t\t\t\t</DataTemplate>\n\t\t\t\t\t</ItemsControl.ItemTemplate>\n\t\t\t\t</ItemsControl>\n\t\t\t\t<ItemsControl x:Name=\"FloatParamsListView\"\n\t\t\t\t              Width=\"260\"\n\t\t\t\t              Margin=\"0,0,0,12\"\n\t\t\t\t              x:Load=\"{x:Bind HasFloatParams, Mode=OneTime}\"\n\t\t\t\t              IsTabStop=\"False\"\n\t\t\t\t              ItemsSource=\"{x:Bind FloatParams, Mode=OneTime}\">\n\t\t\t\t\t<ItemsControl.ItemsPanel>\n\t\t\t\t\t\t<ItemsPanelTemplate>\n\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"8\" />\n\t\t\t\t\t\t</ItemsPanelTemplate>\n\t\t\t\t\t</ItemsControl.ItemsPanel>\n\t\t\t\t\t<ItemsControl.ItemTemplate>\n\t\t\t\t\t\t<DataTemplate x:DataType=\"local:ScalingModeFloatParameter\">\n\t\t\t\t\t\t\t<local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t<Grid ColumnSpacing=\"4\">\n\t\t\t\t\t\t\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"*\" />\n\t\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"60\" />\n\t\t\t\t\t\t\t\t\t</Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t\t<TextBlock Grid.Column=\"0\"\n\t\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t\t           Text=\"{x:Bind Label, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t\t           TextWrapping=\"WrapWholeWords\" />\n\t\t\t\t\t\t\t\t\t<TextBlock Grid.Column=\"1\"\n\t\t\t\t\t\t\t\t\t           HorizontalAlignment=\"Right\"\n\t\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t\t           Text=\"{x:Bind ValueText, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Slider HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t\t        IsThumbToolTipEnabled=\"False\"\n\t\t\t\t\t\t\t\t        Maximum=\"{x:Bind Maximum, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t        Minimum=\"{x:Bind Minimum, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t        StepFrequency=\"{x:Bind Step, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t        Value=\"{x:Bind Value, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t</DataTemplate>\n\t\t\t\t\t</ItemsControl.ItemTemplate>\n\t\t\t\t</ItemsControl>\n\t\t\t</local:SimpleStackPanel>\n\t\t</DataTemplate>\n\t</Page.Resources>\n\t<local:PageFrame x:Uid=\"ScalingModes_PageFrame\">\n\t\t<local:PageFrame.HeaderAction>\n\t\t\t<Button x:Uid=\"ScalingModes_General_MoreOptions\">\n\t\t\t\t<Button.Content>\n\t\t\t\t\t<FontIcon Glyph=\"&#xE712;\" />\n\t\t\t\t</Button.Content>\n\t\t\t\t<Button.Flyout>\n\t\t\t\t\t<MenuFlyout Placement=\"Bottom\"\n\t\t\t\t\t            ShouldConstrainToRootBounds=\"False\">\n\t\t\t\t\t\t<MenuFlyoutItem x:Uid=\"ScalingModes_General_Export\"\n\t\t\t\t\t\t                Click=\"{x:Bind ViewModel.Export}\">\n\t\t\t\t\t\t\t<MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xEDE1;\" />\n\t\t\t\t\t\t\t</MenuFlyoutItem.Icon>\n\t\t\t\t\t\t</MenuFlyoutItem>\n\t\t\t\t\t\t<MenuFlyoutItem x:Uid=\"ScalingModes_General_Import\"\n\t\t\t\t\t\t                Click=\"{x:Bind ViewModel.Import}\">\n\t\t\t\t\t\t\t<MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8B5;\" />\n\t\t\t\t\t\t\t</MenuFlyoutItem.Icon>\n\t\t\t\t\t\t</MenuFlyoutItem>\n\t\t\t\t\t</MenuFlyout>\n\t\t\t\t</Button.Flyout>\n\t\t\t</Button>\n\t\t</local:PageFrame.HeaderAction>\n\n\t\t<local:SimpleStackPanel Padding=\"0,4,0,0\"\n\t\t                        HorizontalAlignment=\"Stretch\"\n\t\t                        ChildrenTransitions=\"{StaticResource SettingsCardsAnimations}\"\n\t\t                        Orientation=\"Vertical\">\n\t\t\t<!--  Padding 是为了缓解一个动画 bug  -->\n\t\t\t<ListView Padding=\"0,0,0,44\"\n\t\t\t          ItemsSource=\"{x:Bind ViewModel.ScalingModes, Mode=OneTime}\"\n\t\t\t          SelectionMode=\"None\"\n\t\t\t          TabNavigation=\"Local\">\n\t\t\t\t<ListView.ItemContainerTransitions>\n\t\t\t\t\t<TransitionCollection>\n\t\t\t\t\t\t<ContentThemeTransition />\n\t\t\t\t\t\t<RepositionThemeTransition IsStaggeringEnabled=\"False\" />\n\t\t\t\t\t</TransitionCollection>\n\t\t\t\t</ListView.ItemContainerTransitions>\n\t\t\t\t<ListView.Resources>\n\t\t\t\t\t<Style TargetType=\"ListViewItem\">\n\t\t\t\t\t\t<Setter Property=\"Margin\" Value=\"0,0,0,2\" />\n\t\t\t\t\t\t<Setter Property=\"Padding\" Value=\"0\" />\n\t\t\t\t\t\t<Setter Property=\"MinHeight\" Value=\"0\" />\n\t\t\t\t\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n\t\t\t\t\t\t<Setter Property=\"IsTabStop\" Value=\"False\" />\n\t\t\t\t\t</Style>\n\t\t\t\t</ListView.Resources>\n\t\t\t\t<ListView.ItemTemplate>\n\t\t\t\t\t<DataTemplate x:DataType=\"local:ScalingModeItem\">\n\t\t\t\t\t\t<local:SettingsExpander Description=\"{x:Bind Description, Mode=OneWay}\"\n\t\t\t\t\t\t                        Header=\"{x:Bind Name, Mode=OneWay}\"\n\t\t\t\t\t\t                        IsExpanded=\"{x:Bind IsInitialExpanded, Mode=OneTime}\">\n\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t                        Spacing=\"4\">\n\t\t\t\t\t\t\t\t<local:SimpleStackPanel.Resources>\n\t\t\t\t\t\t\t\t\t<Style BasedOn=\"{StaticResource DefaultButtonStyle}\"\n\t\t\t\t\t\t\t\t\t       TargetType=\"Button\">\n\t\t\t\t\t\t\t\t\t\t<Setter Property=\"Padding\" Value=\"10\" />\n\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t<Style TargetType=\"FontIcon\">\n\t\t\t\t\t\t\t\t\t\t<Setter Property=\"FontSize\" Value=\"15\" />\n\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t</local:SimpleStackPanel.Resources>\n\t\t\t\t\t\t\t\t<Button x:Uid=\"ScalingModes_Rename\">\n\t\t\t\t\t\t\t\t\t<Button.Content>\n\t\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8AC;\" />\n\t\t\t\t\t\t\t\t\t</Button.Content>\n\t\t\t\t\t\t\t\t\t<Button.Flyout>\n\t\t\t\t\t\t\t\t\t\t<Flyout Opening=\"{x:Bind RenameFlyout_Opening}\">\n\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_RenameFlyout_Title\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<TextBox Width=\"280\"\n\t\t\t\t\t\t\t\t\t\t\t\t         Height=\"32\"\n\t\t\t\t\t\t\t\t\t\t\t\t         Margin=\"0,8,0,20\"\n\t\t\t\t\t\t\t\t\t\t\t\t         KeyDown=\"{x:Bind RenameTextBox_KeyDown}\"\n\t\t\t\t\t\t\t\t\t\t\t\t         SelectionStart=\"{x:Bind RenameTextBoxSelectionStart, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t\t\t\t\t         Text=\"{x:Bind RenameText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBox.ContextFlyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:TextMenuFlyout />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</TextBox.ContextFlyout>\n\t\t\t\t\t\t\t\t\t\t\t\t</TextBox>\n\t\t\t\t\t\t\t\t\t\t\t\t<Button x:Uid=\"ScalingModes_RenameFlyout_OK\"\n\t\t\t\t\t\t\t\t\t\t\t\t        MinWidth=\"80\"\n\t\t\t\t\t\t\t\t\t\t\t\t        HorizontalAlignment=\"Right\"\n\t\t\t\t\t\t\t\t\t\t\t\t        Click=\"{x:Bind RenameButton_Click}\"\n\t\t\t\t\t\t\t\t\t\t\t\t        IsEnabled=\"{x:Bind IsRenameButtonEnabled, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t\t\t\t\t        Style=\"{StaticResource AccentButtonStyle}\" />\n\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t</Flyout>\n\t\t\t\t\t\t\t\t\t</Button.Flyout>\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t<Button x:Uid=\"ScalingModes_MoreOptions\"\n\t\t\t\t\t\t\t\t        Click=\"ScalingModeMoreOptionsButton_Click\">\n\t\t\t\t\t\t\t\t\t<Button.Content>\n\t\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE712;\" />\n\t\t\t\t\t\t\t\t\t</Button.Content>\n\t\t\t\t\t\t\t\t\t<Button.Flyout>\n\t\t\t\t\t\t\t\t\t\t<MenuFlyout>\n\t\t\t\t\t\t\t\t\t\t\t<MenuFlyoutItem x:Uid=\"ScalingModes_MoreOptionsFlyout_MoveUp\"\n\t\t\t\t\t\t\t\t\t\t\t                Click=\"{x:Bind MoveUp}\"\n\t\t\t\t\t\t\t\t\t\t\t                IsEnabled=\"{x:Bind CanMoveUp, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE74A;\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t\t\t\t</MenuFlyoutItem>\n\t\t\t\t\t\t\t\t\t\t\t<MenuFlyoutItem x:Uid=\"ScalingModes_MoreOptionsFlyout_MoveDown\"\n\t\t\t\t\t\t\t\t\t\t\t                Click=\"{x:Bind MoveDown}\"\n\t\t\t\t\t\t\t\t\t\t\t                IsEnabled=\"{x:Bind CanMoveDown, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE74B;\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t\t\t\t</MenuFlyoutItem>\n\t\t\t\t\t\t\t\t\t\t\t<MenuFlyoutSeparator />\n\t\t\t\t\t\t\t\t\t\t\t<MenuFlyoutItem x:Uid=\"ScalingModes_MoreOptionsFlyout_Delete\"\n\t\t\t\t\t\t\t\t\t\t\t                Click=\"RemoveScalingModeMenuItem_Click\"\n\t\t\t\t\t\t\t\t\t\t\t                Tag=\"{x:Bind}\">\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE74D;\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</MenuFlyoutItem.Icon>\n\t\t\t\t\t\t\t\t\t\t\t\t<FlyoutBase.AttachedFlyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Flyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel MaxWidth=\"280\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_DeleteFlyout_Title\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t           Margin=\"0,0,0,15\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t           FontWeight=\"SemiBold\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t           TextWrapping=\"WrapWholeWords\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Margin=\"0,0,0,10\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_DeleteFlyout_Description\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ListView ItemsSource=\"{x:Bind LinkedProfiles, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t          SelectionMode=\"None\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ListView.ItemsPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ItemsPanelTemplate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"4\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ItemsPanelTemplate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ListView.ItemsPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ListView.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Style TargetType=\"ListViewItem\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"Margin\" Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"Padding\" Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"MinHeight\" Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"IsTabStop\" Value=\"False\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ListView.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ListView.ItemTemplate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<DataTemplate x:DataType=\"x:String\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock local:TextBlockHelper.IsAutoTooltipEnabled=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t           FontStyle=\"Italic\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t           Text=\"{x:Bind Mode=OneTime}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t           TextTrimming=\"CharacterEllipsis\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</DataTemplate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ListView.ItemTemplate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ListView>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button HorizontalAlignment=\"Right\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t        Click=\"{x:Bind Remove}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ResourceDictionary>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"DeleteButtonBackgroundBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackgroundPointerOver\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"DeleteButtonBackgroundPointerOverBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackgroundPressed\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"DeleteButtonBackgroundPressedBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonForeground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"DeleteButtonForegroundBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonForegroundPointerOver\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"DeleteButtonForegroundBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonForegroundPressed\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"DeleteButtonForegroundPressedBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ResourceDictionary>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FontIcon VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t          FontSize=\"{StaticResource StandardIconSize}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t          Glyph=\"&#xE74D;\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_DeleteFlyout_Delete\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t           VerticalAlignment=\"Center\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Flyout>\n\t\t\t\t\t\t\t\t\t\t\t\t</FlyoutBase.AttachedFlyout>\n\t\t\t\t\t\t\t\t\t\t\t</MenuFlyoutItem>\n\t\t\t\t\t\t\t\t\t\t</MenuFlyout>\n\t\t\t\t\t\t\t\t\t</Button.Flyout>\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t<local:SettingsExpander.Items>\n\t\t\t\t\t\t\t\t<ListView AllowDrop=\"True\"\n\t\t\t\t\t\t\t\t          CanReorderItems=\"{x:Bind CanReorderEffects, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t          ItemsSource=\"{x:Bind Effects, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t          SelectionMode=\"None\"\n\t\t\t\t\t\t\t\t          TabNavigation=\"Local\">\n\t\t\t\t\t\t\t\t\t<ListView.ItemContainerTransitions>\n\t\t\t\t\t\t\t\t\t\t<TransitionCollection>\n\t\t\t\t\t\t\t\t\t\t\t<ContentThemeTransition />\n\t\t\t\t\t\t\t\t\t\t\t<RepositionThemeTransition IsStaggeringEnabled=\"False\" />\n\t\t\t\t\t\t\t\t\t\t</TransitionCollection>\n\t\t\t\t\t\t\t\t\t</ListView.ItemContainerTransitions>\n\t\t\t\t\t\t\t\t\t<ListView.ItemsPanel>\n\t\t\t\t\t\t\t\t\t\t<ItemsPanelTemplate>\n\t\t\t\t\t\t\t\t\t\t\t<!--  SimpleStackPanel 不支持拖放  -->\n\t\t\t\t\t\t\t\t\t\t\t<StackPanel ChildrenTransitions=\"{StaticResource SettingsCardsAnimations}\"\n\t\t\t\t\t\t\t\t\t\t\t            Orientation=\"Vertical\" />\n\t\t\t\t\t\t\t\t\t\t</ItemsPanelTemplate>\n\t\t\t\t\t\t\t\t\t</ListView.ItemsPanel>\n\t\t\t\t\t\t\t\t\t<ListView.Resources>\n\t\t\t\t\t\t\t\t\t\t<Style TargetType=\"ListViewItem\">\n\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"Margin\" Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"Padding\" Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"MinHeight\" Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"IsTabStop\" Value=\"False\" />\n\t\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t</ListView.Resources>\n\t\t\t\t\t\t\t\t\t<ListView.ItemTemplate>\n\t\t\t\t\t\t\t\t\t\t<DataTemplate x:DataType=\"local:ScalingModeEffectItem\">\n\t\t\t\t\t\t\t\t\t\t\t<local:SettingsCard Header=\"{x:Bind Name}\"\n\t\t\t\t\t\t\t\t\t\t\t                    Loaded=\"EffectSettingsCard_Loaded\"\n\t\t\t\t\t\t\t\t\t\t\t                    Style=\"{StaticResource DefaultSettingsExpanderItemStyle}\">\n\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Style BasedOn=\"{StaticResource DefaultButtonStyle}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t       TargetType=\"Button\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"Padding\" Value=\"10\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Style TargetType=\"FontIcon\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"FontSize\" Value=\"15\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Button x:Uid=\"ScalingModes_Scale\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t        Margin=\"0,0,4,0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t        Visibility=\"{x:Bind CanScale}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE740;\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button.Flyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Flyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Width=\"260\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        Margin=\"0,0,0,4\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Style TargetType=\"muxc:NumberBox\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"HorizontalAlignment\" Value=\"Stretch\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"SpinButtonPlacementMode\" Value=\"Inline\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!--  修复有时取消禁用后文字依然为灰色的问题  -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"Foreground\" Value=\"{ThemeResource TextFillColorPrimaryBrush}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_ScaleFlyout_Type\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!--  硬编码会导致崩溃！  -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!--  https://github.com/microsoft/microsoft-ui-xaml/issues/3612  -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ComboBox HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t          DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t          ItemsSource=\"{x:Bind ScalingTypes, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t          SelectedIndex=\"{x:Bind ScalingType, Mode=TwoWay}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ComboBox.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Style x:Key=\"Description\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t       TargetType=\"TextBlock\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"FontSize\" Value=\"12\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"Foreground\" Value=\"{ThemeResource TextFillColorSecondaryBrush}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"TextWrapping\" Value=\"WrapWholeWords\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ComboBox.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ComboBox.ItemTemplate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<DataTemplate x:DataType=\"local:ScalingTypeItem\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock HorizontalAlignment=\"Left\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t           Text=\"{x:Bind Name, Mode=OneTime}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock HorizontalAlignment=\"Left\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t           Style=\"{StaticResource Description}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t           Text=\"{x:Bind Desc, Mode=OneTime}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</DataTemplate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ComboBox.ItemTemplate>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ComboBox>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Margin=\"0,15,0,0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        Spacing=\"15\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        Visibility=\"{x:Bind IsShowScaleFactors, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Style TargetType=\"muxc:NumberBox\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"HorizontalAlignment\" Value=\"Stretch\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"SmallChange\" Value=\"0.1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"LargeChange\" Value=\"0.5\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"SpinButtonPlacementMode\" Value=\"Inline\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_ScaleFlyout_WidthFactor\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<muxc:NumberBox Loaded=\"NumberBox_Loaded\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                NumberFormatter=\"{x:Bind local:App.DoubleFormatter, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                Value=\"{x:Bind ScaleFactorX, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_ScaleFlyout_HeightFactor\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<muxc:NumberBox Loaded=\"NumberBox_Loaded\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                NumberFormatter=\"{x:Bind local:App.DoubleFormatter, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                Value=\"{x:Bind ScaleFactorY, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Margin=\"0,15,0,0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        Spacing=\"15\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                        Visibility=\"{x:Bind IsShowScalingPixels, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Style TargetType=\"muxc:NumberBox\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"HorizontalAlignment\" Value=\"Stretch\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"SmallChange\" Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"LargeChange\" Value=\"10\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"SpinButtonPlacementMode\" Value=\"Inline\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel.Resources>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_ScaleFlyout_WidthPixels\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<muxc:NumberBox Loaded=\"NumberBox_Loaded\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                NumberFormatter=\"{x:Bind local:App.DoubleFormatter, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                Value=\"{x:Bind ScalingPixelsX, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_ScaleFlyout_HeightPixels\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<muxc:NumberBox Loaded=\"NumberBox_Loaded\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                NumberFormatter=\"{x:Bind local:App.DoubleFormatter, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                Value=\"{x:Bind ScalingPixelsY, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Flyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button.Flyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Button x:Uid=\"ScalingModes_Parameters\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t        Margin=\"0,0,4,0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t        Visibility=\"{x:Bind HasParameters}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE9E9;\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button.Flyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Flyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Flyout.FlyoutPresenterStyle>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Style BasedOn=\"{StaticResource DefaultFlyoutPresenterStyle}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t       TargetType=\"FlyoutPresenter\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"MaxHeight\" Value=\"450\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Flyout.FlyoutPresenterStyle>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ContentControl Content=\"{x:Bind Parameters, Mode=OneTime}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ContentTemplate=\"{StaticResource EffectParametersFlyout}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t                IsTabStop=\"False\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Flyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button.Flyout>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Button x:Uid=\"ScalingModes_Delete\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t        Click=\"{x:Bind Remove}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE74D;\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                        Visibility=\"{x:Bind CanMove, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AppBarSeparator Margin=\"4,0,0,0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button x:Uid=\"ScalingModes_MoveUp\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t        Margin=\"4,0,0,0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t        Click=\"{x:Bind MoveUp}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t        IsEnabled=\"{x:Bind CanMoveUp, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE74A;\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button x:Uid=\"ScalingModes_MoveDown\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t        Margin=\"4,0,0,0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t        Click=\"{x:Bind MoveDown}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t        IsEnabled=\"{x:Bind CanMoveDown, Mode=OneWay}\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FontIcon Glyph=\"&#xE74B;\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button.Content>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t\t\t\t\t</DataTemplate>\n\t\t\t\t\t\t\t\t\t</ListView.ItemTemplate>\n\t\t\t\t\t\t\t\t</ListView>\n\t\t\t\t\t\t\t</local:SettingsExpander.Items>\n\t\t\t\t\t\t\t<local:SettingsExpander.ItemsHeader>\n\t\t\t\t\t\t\t\t<muxc:InfoBar x:Uid=\"ScalingModes_HasUnkownEffects\"\n\t\t\t\t\t\t\t\t              MinHeight=\"0\"\n\t\t\t\t\t\t\t\t              Margin=\"0,0,0,-4\"\n\t\t\t\t\t\t\t\t              BorderThickness=\"0,0,0,0\"\n\t\t\t\t\t\t\t\t              CornerRadius=\"0\"\n\t\t\t\t\t\t\t\t              IsClosable=\"False\"\n\t\t\t\t\t\t\t\t              IsOpen=\"{x:Bind HasUnkownEffects, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t              Severity=\"Warning\" />\n\t\t\t\t\t\t\t</local:SettingsExpander.ItemsHeader>\n\t\t\t\t\t\t\t<local:SettingsExpander.ItemsFooter>\n\t\t\t\t\t\t\t\t<local:SettingsCard Style=\"{StaticResource DefaultSettingsExpanderItemStyle}\">\n\t\t\t\t\t\t\t\t\t<local:SettingsCard.Description>\n\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Margin=\"-40,0,0,-20\">\n\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_DragToReorder\"\n\t\t\t\t\t\t\t\t\t\t\t           Visibility=\"{x:Bind CanReorderEffects, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_DragNotSupported\"\n\t\t\t\t\t\t\t\t\t\t\t           Visibility=\"{x:Bind IsShowMoveButtons, Mode=OneWay}\" />\n\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t</local:SettingsCard.Description>\n\t\t\t\t\t\t\t\t\t<Button x:Name=\"AddEffectButton\"\n\t\t\t\t\t\t\t\t\t        Padding=\"10,8\"\n\t\t\t\t\t\t\t\t\t        Background=\"Transparent\"\n\t\t\t\t\t\t\t\t\t        BorderBrush=\"Transparent\"\n\t\t\t\t\t\t\t\t\t        Click=\"AddEffectButton_Click\"\n\t\t\t\t\t\t\t\t\t        Tag=\"{x:Bind}\">\n\t\t\t\t\t\t\t\t\t\t<Button.Resources>\n\t\t\t\t\t\t\t\t\t\t\t<ResourceDictionary>\n\t\t\t\t\t\t\t\t\t\t\t\t<ResourceDictionary.ThemeDictionaries>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ResourceDictionary x:Key=\"Default\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ResourceDictionary x:Key=\"HighContrast\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ResourceDictionary x:Key=\"Light\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"SubtleFillColorTransparentBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackgroundPointerOver\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"SubtleFillColorSecondaryBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackgroundPressed\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"SubtleFillColorTertiaryBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBorderBrush\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"ControlFillColorTransparentBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBorderBrushPointerOver\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"ControlFillColorTransparentBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBorderBrushPressed\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t                ResourceKey=\"ControlFillColorTransparentBrush\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ResourceDictionary>\n\t\t\t\t\t\t\t\t\t\t\t\t</ResourceDictionary.ThemeDictionaries>\n\t\t\t\t\t\t\t\t\t\t\t</ResourceDictionary>\n\t\t\t\t\t\t\t\t\t\t</Button.Resources>\n\t\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t\t\t                        Orientation=\"Horizontal\"\n\t\t\t\t\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t\t<FontIcon FontSize=\"{StaticResource StandardIconSize}\"\n\t\t\t\t\t\t\t\t\t\t\t          Glyph=\"&#xE710;\" />\n\t\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_AddEffect\"\n\t\t\t\t\t\t\t\t\t\t\t           Margin=\"0,-1,0,0\" />\n\t\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t</local:SettingsCard>\n\t\t\t\t\t\t\t</local:SettingsExpander.ItemsFooter>\n\t\t\t\t\t\t</local:SettingsExpander>\n\t\t\t\t\t</DataTemplate>\n\t\t\t\t</ListView.ItemTemplate>\n\t\t\t</ListView>\n\t\t\t<local:SimpleStackPanel Margin=\"0,-36,0,0\">\n\t\t\t\t<Button HorizontalAlignment=\"Right\"\n\t\t\t\t        Style=\"{StaticResource AccentButtonStyle}\">\n\t\t\t\t\t<Button.Flyout>\n\t\t\t\t\t\t<Flyout x:Name=\"NewScalingModeFlyout\"\n\t\t\t\t\t\t        Opening=\"NewScalingModeFlyout_Opening\"\n\t\t\t\t\t\t        Placement=\"Left\">\n\t\t\t\t\t\t\t<local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_NewScalingModeFlyout_Title\"\n\t\t\t\t\t\t\t\t           Margin=\"0,5,0,20\"\n\t\t\t\t\t\t\t\t           FontSize=\"18\"\n\t\t\t\t\t\t\t\t           FontWeight=\"SemiBold\" />\n\t\t\t\t\t\t\t\t<local:SimpleStackPanel MinWidth=\"250\"\n\t\t\t\t\t\t\t\t                        HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t\t                        Spacing=\"15\">\n\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_NewScalingModeFlyout_Name\" />\n\t\t\t\t\t\t\t\t\t\t<TextBox HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t\t\t\t         KeyDown=\"NewScalingModeNameTextBox_KeyDown\"\n\t\t\t\t\t\t\t\t\t\t         Text=\"{x:Bind ViewModel.NewScalingModeName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}\">\n\t\t\t\t\t\t\t\t\t\t\t<TextBox.ContextFlyout>\n\t\t\t\t\t\t\t\t\t\t\t\t<local:TextMenuFlyout />\n\t\t\t\t\t\t\t\t\t\t\t</TextBox.ContextFlyout>\n\t\t\t\t\t\t\t\t\t\t</TextBox>\n\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t<local:SimpleStackPanel Spacing=\"8\">\n\t\t\t\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_NewScalingModeFlyout_CopyFrom\" />\n\t\t\t\t\t\t\t\t\t\t<ComboBox HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t\t\t\t          ItemsSource=\"{x:Bind ViewModel.NewScalingModeCopyFromList, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.NewScalingModeCopyFrom, Mode=TwoWay}\" />\n\t\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t\t\t<Button x:Uid=\"ScalingModes_NewScalingModeFlyout_Create\"\n\t\t\t\t\t\t\t\t\t        MinWidth=\"100\"\n\t\t\t\t\t\t\t\t\t        Margin=\"0,15,0,0\"\n\t\t\t\t\t\t\t\t\t        HorizontalAlignment=\"Right\"\n\t\t\t\t\t\t\t\t\t        Click=\"NewScalingModeConfirmButton_Click\"\n\t\t\t\t\t\t\t\t\t        IsEnabled=\"{x:Bind ViewModel.IsAddButtonEnabled, Mode=OneWay}\"\n\t\t\t\t\t\t\t\t\t        Style=\"{StaticResource AccentButtonStyle}\" />\n\t\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t\t</Flyout>\n\t\t\t\t\t</Button.Flyout>\n\t\t\t\t\t<Button.Content>\n\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t                        Spacing=\"8\">\n\t\t\t\t\t\t\t<FontIcon FontSize=\"{StaticResource StandardIconSize}\"\n\t\t\t\t\t\t\t          Glyph=\"&#xE710;\" />\n\t\t\t\t\t\t\t<TextBlock x:Uid=\"ScalingModes_NewScalingMode\" />\n\t\t\t\t\t\t</local:SimpleStackPanel>\n\t\t\t\t\t</Button.Content>\n\t\t\t\t</Button>\n\t\t\t</local:SimpleStackPanel>\n\t\t</local:SimpleStackPanel>\n\t</local:PageFrame>\n</Page>"
  },
  {
    "path": "src/Magpie/ScalingModesService.cpp",
    "content": "#include \"pch.h\"\n#include \"AppSettings.h\"\n#include \"EffectHelper.h\"\n#include \"EffectsService.h\"\n#include \"JsonHelper.h\"\n#include \"ScalingMode.h\"\n#include \"ScalingModesService.h\"\n#include \"StrHelper.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt;\n\nnamespace Magpie {\n\nScalingMode& ScalingModesService::GetScalingMode(uint32_t idx) {\n\treturn AppSettings::Get().ScalingModes()[idx];\n}\n\nuint32_t ScalingModesService::GetScalingModeCount() {\n\treturn (uint32_t)AppSettings::Get().ScalingModes().size();\n}\n\nvoid ScalingModesService::AddScalingMode(std::wstring_view name, int copyFrom) {\n\tassert(!name.empty());\n\n\tstd::vector<ScalingMode>& scalingModes = AppSettings::Get().ScalingModes();\n\tif (copyFrom < 0) {\n\t\tscalingModes.emplace_back().name = name;\n\t} else {\n\t\tscalingModes.emplace_back(scalingModes[copyFrom]).name = name;\n\t}\n\n\tScalingModeAdded.Invoke(EffectAddedWay::Add);\n\n\tAppSettings::Get().SaveAsync();\n}\n\nstatic void UpdateProfileAfterRemove(Profile& profile, int removedIdx) {\n\tif (profile.scalingMode == removedIdx) {\n\t\tprofile.scalingMode = -1;\n\t} else if (profile.scalingMode > removedIdx) {\n\t\t--profile.scalingMode;\n\t}\n}\n\nvoid ScalingModesService::RemoveScalingMode(uint32_t index) {\n\tstd::vector<ScalingMode>& scalingModes = AppSettings::Get().ScalingModes();\n\tscalingModes.erase(scalingModes.begin() + index);\n\n\tUpdateProfileAfterRemove(AppSettings::Get().DefaultProfile(), (int)index);\n\tfor (Profile& profile : AppSettings::Get().Profiles()) {\n\t\tUpdateProfileAfterRemove(profile, (int)index);\n\t}\n\n\tScalingModeRemoved.Invoke(index);\n\n\tAppSettings::Get().SaveAsync();\n}\n\nstatic void UpdateProfileAfterMove(Profile& profile, int idx, int targetIdx) {\n\tif (profile.scalingMode == idx) {\n\t\tprofile.scalingMode = targetIdx;\n\t} else if (profile.scalingMode == targetIdx) {\n\t\tprofile.scalingMode = idx;\n\t}\n}\n\nbool ScalingModesService::MoveScalingMode(uint32_t scalingModeIdx, bool isMoveUp) {\n\tstd::vector<ScalingMode>& profiles = AppSettings::Get().ScalingModes();\n\tif (isMoveUp ? scalingModeIdx == 0 : scalingModeIdx + 1 >= (uint32_t)profiles.size()) {\n\t\treturn false;\n\t}\n\n\tint targetIdx = isMoveUp ? (int)scalingModeIdx - 1 : (int)scalingModeIdx + 1;\n\tstd::swap(profiles[scalingModeIdx], profiles[targetIdx]);\n\n\tUpdateProfileAfterMove(\n\t\tAppSettings::Get().DefaultProfile(),\n\t\t(int)scalingModeIdx,\n\t\ttargetIdx\n\t);\n\tfor (Profile& profile : AppSettings::Get().Profiles()) {\n\t\tUpdateProfileAfterMove(profile, (int)scalingModeIdx, targetIdx);\n\t}\n\n\tScalingModeMoved.Invoke(scalingModeIdx, isMoveUp);\n\n\tAppSettings::Get().SaveAsync();\n\treturn true;\n}\n\nstatic void WriteScalingMode(rapidjson::PrettyWriter<rapidjson::StringBuffer>& writer, const ScalingMode& scaleMode) {\n\twriter.StartObject();\n\twriter.Key(\"name\");\n\twriter.String(StrHelper::UTF16ToUTF8(scaleMode.name).c_str());\n\tif (!scaleMode.effects.empty()) {\n\t\twriter.Key(\"effects\");\n\t\twriter.StartArray();\n\t\tfor (const auto& effect : scaleMode.effects) {\n\t\t\twriter.StartObject();\n\t\t\twriter.Key(\"name\");\n\t\t\twriter.String(StrHelper::UTF16ToUTF8(effect.name).c_str());\n\n\t\t\tif (effect.HasScale()) {\n\t\t\t\twriter.Key(\"scalingType\");\n\t\t\t\twriter.Uint((uint32_t)effect.scalingType);\n\t\t\t\twriter.Key(\"scale\");\n\t\t\t\twriter.StartObject();\n\t\t\t\twriter.Key(\"x\");\n\t\t\t\twriter.Double(effect.scale.first);\n\t\t\t\twriter.Key(\"y\");\n\t\t\t\twriter.Double(effect.scale.second);\n\t\t\t\twriter.EndObject();\n\t\t\t}\n\n\t\t\tif (!effect.parameters.empty()) {\n\t\t\t\twriter.Key(\"parameters\");\n\t\t\t\twriter.StartObject();\n\t\t\t\tfor (const auto& [name, value] : effect.parameters) {\n\t\t\t\t\twriter.Key(StrHelper::UTF16ToUTF8(name).c_str());\n\t\t\t\t\twriter.Double(value);\n\t\t\t\t}\n\t\t\t\twriter.EndObject();\n\t\t\t}\n\n\t\t\twriter.EndObject();\n\t\t}\n\t\twriter.EndArray();\n\t}\n\twriter.EndObject();\n}\n\nvoid ScalingModesService::Export(rapidjson::PrettyWriter<rapidjson::StringBuffer>& writer) const noexcept {\n\twriter.Key(\"scalingModes\");\n\twriter.StartArray();\n\n\tfor (const ScalingMode& scalingMode : AppSettings::Get().ScalingModes()) {\n\t\tWriteScalingMode(writer, scalingMode);\n\t}\n\n\twriter.EndArray();\n}\n\nstatic bool LoadScalingMode(\n\tconst rapidjson::GenericObject<true, rapidjson::Value>& scalingModeObj,\n\tScalingMode& scalingMode,\n\tbool loadingSettings\n) {\n\tif (!JsonHelper::ReadString(scalingModeObj, \"name\", scalingMode.name)) {\n\t\treturn false;\n\t}\n\n\tauto effectsNode = scalingModeObj.FindMember(\"effects\");\n\tif (effectsNode == scalingModeObj.MemberEnd()) {\n\t\treturn true;\n\t}\n\n\tif (!effectsNode->value.IsArray()) {\n\t\treturn loadingSettings;\n\t}\n\n\tauto effectsArray = effectsNode->value.GetArray();\n\tscalingMode.effects.reserve(effectsArray.Size());\n\n\tfor (const auto& elem : effectsArray) {\n\t\tif (!elem.IsObject()) {\n\t\t\tif (loadingSettings) {\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tauto elemObj = elem.GetObj();\n\t\tEffectItem& effect = scalingMode.effects.emplace_back();\n\n\t\tif (!JsonHelper::ReadString(elemObj, \"name\", effect.name)) {\n\t\t\tif (loadingSettings) {\n\t\t\t\tscalingMode.effects.pop_back();\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (!JsonHelper::ReadUInt(elemObj, \"scalingType\", (uint32_t&)effect.scalingType) && !loadingSettings) {\n\t\t\treturn false;\n\t\t}\n\n\t\tauto scaleNode = elemObj.FindMember(\"scale\");\n\t\tif (scaleNode != elemObj.MemberEnd()) {\n\t\t\tif (scaleNode->value.IsObject()) {\n\t\t\t\tauto scaleObj = scaleNode->value.GetObj();\n\n\t\t\t\tfloat x, y;\n\t\t\t\tif (JsonHelper::ReadFloat(scaleObj, \"x\", x, true)\n\t\t\t\t\t&& JsonHelper::ReadFloat(scaleObj, \"y\", y, true)\n\t\t\t\t\t&& x > 0 && y > 0)\n\t\t\t\t{\n\t\t\t\t\teffect.scale = { x,y };\n\t\t\t\t} else {\n\t\t\t\t\tif (!loadingSettings) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!loadingSettings) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tauto parametersNode = elemObj.FindMember(\"parameters\");\n\t\tif (parametersNode != elemObj.MemberEnd()) {\n\t\t\tif (parametersNode->value.IsObject()) {\n\t\t\t\tauto paramsObj = parametersNode->value.GetObj();\n\n\t\t\t\teffect.parameters.reserve(paramsObj.MemberCount());\n\t\t\t\tfor (const auto& param : paramsObj) {\n\t\t\t\t\tif (!param.value.IsNumber()) {\n\t\t\t\t\t\tif (loadingSettings) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tstd::wstring name = StrHelper::UTF8ToUTF16(param.name.GetString());\n\t\t\t\t\teffect.parameters[name] = param.value.GetFloat();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!loadingSettings) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}\n\nbool ScalingModesService::Import(const rapidjson::GenericObject<true, rapidjson::Value>& root, bool loadingSettings) noexcept {\n\tauto scalingModesNode = root.FindMember(\"scalingModes\");\n\tif (scalingModesNode == root.MemberEnd()) {\n\t\treturn true;\n\t}\n\n\tif (!scalingModesNode->value.IsArray()) {\n\t\treturn loadingSettings;\n\t}\n\n\tconst auto& scalingModesArray = scalingModesNode->value.GetArray();\n\tconst rapidjson::SizeType size = scalingModesArray.Size();\n\tif (size == 0) {\n\t\treturn true;\n\t}\n\n\tstd::vector<ScalingMode> scalingModes;\n\tscalingModes.reserve(size);\n\n\tfor (const auto& elem : scalingModesArray) {\n\t\tif (!elem.IsObject()) {\n\t\t\tif (loadingSettings) {\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (!LoadScalingMode(elem.GetObj(), scalingModes.emplace_back(), loadingSettings)) {\n\t\t\tif (loadingSettings) {\n\t\t\t\tscalingModes.pop_back();\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (scalingModes.empty()) {\n\t\treturn true;\n\t}\n\n\tstd::vector<ScalingMode>& settings = AppSettings::Get().ScalingModes();\n\tsettings.insert(\n\t\tsettings.end(),\n\t\tstd::make_move_iterator(scalingModes.begin()),\n\t\tstd::make_move_iterator(scalingModes.end())\n\t);\n\n\tScalingModeAdded.Invoke(EffectAddedWay::Import);\n\n\tif (!loadingSettings) {\n\t\tAppSettings::Get().SaveAsync();\n\t}\n\t\n\treturn true;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModesService.h",
    "content": "#pragma once\n#include \"Event.h\"\n#include <rapidjson/prettywriter.h>\n#include <rapidjson/document.h>\n\nnamespace Magpie {\n\nstruct ScalingMode;\n\nenum class EffectAddedWay {\n\tAdd,\n\tImport\n};\n\nclass ScalingModesService {\npublic:\n\tstatic ScalingModesService& Get() noexcept {\n\t\tstatic ScalingModesService instance;\n\t\treturn instance;\n\t}\n\n\tScalingModesService(const ScalingModesService&) = delete;\n\tScalingModesService(ScalingModesService&&) = delete;\n\n\tScalingMode& GetScalingMode(uint32_t idx);\n\n\tuint32_t GetScalingModeCount();\n\n\t// copyFrom < 0 表示新建空缩放配置\n\tvoid AddScalingMode(std::wstring_view name, int copyFrom);\n\n\tvoid RemoveScalingMode(uint32_t index);\n\n\tbool MoveScalingMode(uint32_t scalingModeIdx, bool isMoveUp);\n\n\t// 不能使用 rapidjson::Writer 类型，因为 PrettyWriter 没有重写 Writer 中的方法\n\t// 不合理的 API 设计\n\tvoid Export(rapidjson::PrettyWriter<rapidjson::StringBuffer>& writer) const noexcept;\n\n\tbool Import(const rapidjson::GenericObject<true, rapidjson::Value>& root, bool loadingSettings) noexcept;\n\n\tEvent<EffectAddedWay> ScalingModeAdded;\n\tEvent<uint32_t> ScalingModeRemoved;\n\tEvent<uint32_t, bool> ScalingModeMoved;\n\nprivate:\n\tScalingModesService() = default;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModesViewModel.cpp",
    "content": "#include \"pch.h\"\n#include \"ScalingModesViewModel.h\"\n#if __has_include(\"ScalingModesViewModel.g.cpp\")\n#include \"ScalingModesViewModel.g.cpp\"\n#endif\n#include \"App.h\"\n#include \"AppSettings.h\"\n#include \"CommonSharedConstants.h\"\n#include \"FileDialogHelper.h\"\n#include \"Logger.h\"\n#include \"ScalingMode.h\"\n#include \"ScalingModeItem.h\"\n#include \"ToastService.h\"\n#include \"Win32Helper.h\"\n\nusing namespace Magpie;\n\nnamespace winrt::Magpie::implementation {\n\nScalingModesViewModel::ScalingModesViewModel() {\n\t_AddScalingModes();\n\n\t_scalingModeAddedRevoker = ScalingModesService::Get().ScalingModeAdded(\n\t\tauto_revoke, std::bind_front(&ScalingModesViewModel::_ScalingModesService_Added, this));\n\t_scalingModeMovedRevoker = ScalingModesService::Get().ScalingModeMoved(\n\t\tauto_revoke, std::bind_front(&ScalingModesViewModel::_ScalingModesService_Moved, this));\n\t_scalingModeRemovedRevoker = ScalingModesService::Get().ScalingModeRemoved(\n\t\tauto_revoke, std::bind_front(&ScalingModesViewModel::_ScalingModesService_Removed, this));\n}\n\nstatic std::optional<std::filesystem::path> OpenFileDialogForJson(\n\tIFileDialog* fileDialog,\n\tconst wchar_t* title,\n\tconst wchar_t* jsonFileStr\n) noexcept {\n\tfileDialog->SetTitle(title);\n\tconst COMDLG_FILTERSPEC fileType{ jsonFileStr, L\"*.json\" };\n\tfileDialog->SetFileTypes(1, &fileType);\n\tfileDialog->SetDefaultExtension(L\"json\");\n\n\treturn FileDialogHelper::OpenFileDialog(fileDialog, FOS_STRICTFILETYPES);\n}\n\nfire_and_forget ScalingModesViewModel::Export() noexcept {\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\tconst hstring title = resourceLoader.GetString(L\"Dialog_Export_Title\");\n\tconst hstring jsonFileStr = resourceLoader.GetString(L\"Dialog_JsonFile\");\n\n\tauto weakThis = get_weak();\n\n\t// 在主线程使用 IFileOpenDialog 有些问题，尤其在 Win10 中\n\tco_await resume_background();\n\n\tcom_ptr<IFileSaveDialog> fileDialog = try_create_instance<IFileSaveDialog>(CLSID_FileSaveDialog);\n\tif (!fileDialog) {\n\t\tLogger::Get().Error(\"创建 FileSaveDialog 失败\");\n\t\tco_return;\n\t}\n\n\tfileDialog->SetFileName(L\"ScalingModes\");\n\n\tstd::optional<std::filesystem::path> fileName =\n\t\tOpenFileDialogForJson(fileDialog.get(), title.c_str(), jsonFileStr.c_str());\n\tif (!fileName.has_value() || fileName->empty()) {\n\t\tco_return;\n\t}\n\n\tco_await App::Get().Dispatcher();\n\n\tif (!weakThis.get()) {\n\t\tco_return;\n\t}\n\n\trapidjson::StringBuffer json;\n\trapidjson::PrettyWriter<rapidjson::StringBuffer> writer(json);\n\twriter.StartObject();\n\tScalingModesService::Get().Export(writer);\n\twriter.EndObject();\n\n\tif (!Win32Helper::WriteTextFile(fileName->c_str(), { json.GetString(), json.GetLength() })) {\n\t\tconst hstring failedMsg = resourceLoader.GetString(L\"Message_ExportScalingModesFailed\");\n\t\tToastService::Get().ShowMessageInApp({}, failedMsg.c_str());\n\t}\n}\n\nfire_and_forget ScalingModesViewModel::Import() {\n\tconst ResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\tconst hstring title = resourceLoader.GetString(L\"Dialog_Import_Title\");\n\tconst hstring jsonFileStr = resourceLoader.GetString(L\"Dialog_JsonFile\");\n\n\tauto weakThis = get_weak();\n\n\t// 在主线程使用 IFileOpenDialog 有些问题，尤其在 Win10 中\n\tco_await resume_background();\n\n\tcom_ptr<IFileOpenDialog> fileDialog = try_create_instance<IFileOpenDialog>(CLSID_FileOpenDialog);\n\tif (!fileDialog) {\n\t\tLogger::Get().Error(\"创建 FileOpenDialog 失败\");\n\t\tco_return;\n\t}\n\n\tstd::optional<std::filesystem::path> fileName =\n\t\tOpenFileDialogForJson(fileDialog.get(), title.c_str(), jsonFileStr.c_str());\n\tif (!fileName.has_value()) {\n\t\tco_return;\n\t}\n\tif (fileName->empty()) {\n\t\tco_return;\n\t}\n\n\tstd::string json;\n\tWin32Helper::ReadTextFile(fileName->c_str(), json);\n\n\tco_await App::Get().Dispatcher();\n\n\tif (!weakThis.get()) {\n\t\tco_return;\n\t}\n\n\tif (!json.empty()) {\n\t\trapidjson::Document doc;\n\t\t// 导入时放宽 json 格式限制\n\t\tdoc.ParseInsitu<rapidjson::kParseCommentsFlag | rapidjson::kParseTrailingCommasFlag>(json.data());\n\t\tif (doc.HasParseError()) {\n\t\t\tLogger::Get().Error(fmt::format(\"解析 json 失败\\n\\t错误码: {}\", (int)doc.GetParseError()));\n\t\t} else if (doc.IsObject() &&\n\t\t\tScalingModesService::Get().Import(((const rapidjson::Document&)doc).GetObj(), false)) {\n\t\t\t// 导入成功\n\t\t\tco_return;\n\t\t}\n\t}\n\n\tconst hstring failedMsg = resourceLoader.GetString(L\"Message_ImportScalingModesFailed\");\n\tToastService::Get().ShowMessageInApp({}, failedMsg.c_str());\n}\n\nvoid ScalingModesViewModel::PrepareForAdd() {\n\tstd::vector<IInspectable> copyFromList;\n\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\tcopyFromList.push_back(box_value(resourceLoader.GetString(\n\t\tL\"ScalingModes_NewScalingModeFlyout_CopyFrom_None\")));\n\t\n\tfor (const auto& scalingMode : AppSettings::Get().ScalingModes()) {\n\t\tcopyFromList.push_back(box_value(scalingMode.name));\n\t}\n\t_newScalingModeCopyFromList = single_threaded_vector(std::move(copyFromList));\n\tRaisePropertyChanged(L\"NewScalingModeCopyFromList\");\n\n\t_newScalingModeName.clear();\n\tRaisePropertyChanged(L\"NewScalingModeName\");\n\n\t_newScalingModeCopyFrom = 0;\n\tRaisePropertyChanged(L\"NewScalingModeCopyFrom\");\n}\n\nvoid ScalingModesViewModel::NewScalingModeName(const hstring& value) noexcept {\n\t_newScalingModeName = value;\n\tRaisePropertyChanged(L\"NewScalingModeName\");\n\tRaisePropertyChanged(L\"IsAddButtonEnabled\");\n}\n\nvoid ScalingModesViewModel::AddScalingMode() {\n\tScalingModesService::Get().AddScalingMode(_newScalingModeName, _newScalingModeCopyFrom - 1);\n}\n\nfire_and_forget ScalingModesViewModel::_AddScalingModes(bool isInitialExpanded) {\n\tif (_addingScalingModes) {\n\t\tco_return;\n\t}\n\t_addingScalingModes = true;\n\n\tScalingModesService& scalingModesService = ScalingModesService::Get();\n\tuint32_t total = scalingModesService.GetScalingModeCount();\n\tuint32_t curSize = _scalingModes.Size();\n\n\tif (total - curSize <= 5) {\n\t\tfor (; curSize < total; ++curSize) {\n\t\t\t_scalingModes.Append(make<ScalingModeItem>(curSize, isInitialExpanded));\n\t\t}\n\t} else {\n\t\tassert(!isInitialExpanded);\n\n\t\t// 延迟加载\n\t\tfor (int j = 0; j < 5; ++j) {\n\t\t\t_scalingModes.Append(make<ScalingModeItem>(curSize++, false));\n\t\t}\n\n\t\tauto weakThis = get_weak();\n\n\t\twhile (true) {\n\t\t\tco_await 10ms;\n\t\t\tco_await App::Get().Dispatcher();\n\n\t\t\tif (!weakThis.get()) {\n\t\t\t\tco_return;\n\t\t\t}\n\n\t\t\ttotal = scalingModesService.GetScalingModeCount();\n\t\t\tcurSize = _scalingModes.Size();\n\n\t\t\tif (curSize < total) {\n\t\t\t\t_scalingModes.Append(make<ScalingModeItem>(curSize++, false));\n\t\t\t}\n\t\t\t\n\t\t\tif (curSize >= total) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t_addingScalingModes = false;\n}\n\nvoid ScalingModesViewModel::_ScalingModesService_Added(EffectAddedWay way) {\n\t// 不支持在事件回调中修改事件本身，因此延迟执行\n\tApp::Get().Dispatcher().TryEnqueue([this, way]() {\n\t\t_AddScalingModes(way == EffectAddedWay::Add);\n\t});\n}\n\nvoid ScalingModesViewModel::_ScalingModesService_Moved(uint32_t index, bool isMoveUp) {\n\tconst uint32_t targetIndex = isMoveUp ? index - 1 : index + 1;\n\n\tIInspectable targetItem = _scalingModes.GetAt(targetIndex);\n\t_scalingModes.RemoveAt(targetIndex);\n\t_scalingModes.InsertAt(index, targetItem);\n}\n\nvoid ScalingModesViewModel::_ScalingModesService_Removed(uint32_t index) {\n\t_scalingModes.RemoveAt(index);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModesViewModel.h",
    "content": "#pragma once\n#include \"ScalingModesViewModel.g.h\"\n#include \"Event.h\"\n#include \"ScalingModesService.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct ScalingModesViewModel : ScalingModesViewModelT<ScalingModesViewModel>,\n                               wil::notify_property_changed_base<ScalingModesViewModel> {\n\tScalingModesViewModel();\n\n\tfire_and_forget Export() noexcept;\n\n\tfire_and_forget Import();\n\n\tIObservableVector<IInspectable> ScalingModes() const noexcept {\n\t\treturn _scalingModes;\n\t}\n\n\tvoid PrepareForAdd();\n\n\thstring NewScalingModeName() const noexcept {\n\t\treturn _newScalingModeName;\n\t}\n\n\tvoid NewScalingModeName(const hstring& value) noexcept;\n\n\tIVector<IInspectable> NewScalingModeCopyFromList() const noexcept {\n\t\treturn _newScalingModeCopyFromList;\n\t}\n\n\tint NewScalingModeCopyFrom() const noexcept {\n\t\treturn _newScalingModeCopyFrom;\n\t}\n\n\tvoid NewScalingModeCopyFrom(int value) noexcept {\n\t\t_newScalingModeCopyFrom = value;\n\t\tRaisePropertyChanged(L\"NewScalingModeCopyFrom\");\n\t}\n\t\n\tbool IsAddButtonEnabled() const noexcept {\n\t\treturn !_newScalingModeName.empty();\n\t}\n\n\tvoid AddScalingMode();\n\nprivate:\n\tfire_and_forget _AddScalingModes(bool isInitialExpanded = false);\n\n\tvoid _ScalingModesService_Added(::Magpie::EffectAddedWay way);\n\n\tvoid _ScalingModesService_Moved(uint32_t index, bool isMoveUp);\n\n\tvoid _ScalingModesService_Removed(uint32_t index);\n\n\tIObservableVector<IInspectable> _scalingModes = single_threaded_observable_vector<IInspectable>();\n\n\t::Magpie::Event<::Magpie::EffectAddedWay>::EventRevoker _scalingModeAddedRevoker;\n\t::Magpie::Event<uint32_t, bool>::EventRevoker _scalingModeMovedRevoker;\n\t::Magpie::Event<uint32_t>::EventRevoker _scalingModeRemovedRevoker;\n\n\thstring _newScalingModeName;\n\tIVector<IInspectable> _newScalingModeCopyFromList{ nullptr };\n\tint _newScalingModeCopyFrom = 0;\n\n\tbool _addingScalingModes = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ScalingModesViewModel.idl",
    "content": "namespace Magpie {\n    runtimeclass ScalingModesViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged {\n        void Export();\n        void Import();\n        \n        IObservableVector<IInspectable> ScalingModes { get; };\n\n        String NewScalingModeName;\n        IVector<IInspectable> NewScalingModeCopyFromList { get; };\n        Int32 NewScalingModeCopyFrom;\n        Boolean IsAddButtonEnabled { get; };\n    }\n}\n"
  },
  {
    "path": "src/Magpie/ScalingService.cpp",
    "content": "#include \"pch.h\"\n#include \"App.h\"\n#include \"AppSettings.h\"\n#include \"CommonSharedConstants.h\"\n#include \"EffectsService.h\"\n#include \"Logger.h\"\n#include \"ProfileService.h\"\n#include \"ScalingMode.h\"\n#include \"ScalingModesService.h\"\n#include \"ScalingService.h\"\n#include \"ShortcutService.h\"\n#include \"ToastService.h\"\n#include \"TouchHelper.h\"\n#include \"Win32Helper.h\"\n#include \"WindowHelper.h\"\n\nusing namespace winrt::Magpie::implementation;\nusing namespace winrt;\n\nusing winrt::Magpie::ShortcutAction;\n\nnamespace Magpie {\n\nScalingService& ScalingService::Get() noexcept {\n\tstatic ScalingService instance;\n\treturn instance;\n}\n\nScalingService::~ScalingService() {}\n\nvoid ScalingService::Initialize() {\n\t_scalingRuntime.emplace();\n\t_scalingRuntime->StateChanged(\n\t\tstd::bind_front(&ScalingService::_ScalingRuntime_StateChanged, this));\n\n\tconst DispatcherQueue& dispatcher = App::Get().Dispatcher();\n\n\t_countDownTimer = dispatcher.CreateTimer();\n\t_countDownTimer.Interval(25ms);\n\t_countDownTimer.Tick({ this, &ScalingService::_CountDownTimer_Tick });\n\n\t_checkForegroundTimer = dispatcher.CreateTimer();\n\t_checkForegroundTimer.Interval(50ms);\n\t_checkForegroundTimer.Tick({ this, &ScalingService::_CheckForegroundTimer_Tick });\n\t_checkForegroundTimer.Start();\n\t\n\t_shortcutActivatedRevoker = ShortcutService::Get().ShortcutActivated(\n\t\tauto_revoke, std::bind_front(&ScalingService::_ShortcutService_ShortcutPressed, this));\n\n\t// 立即检查前台窗口\n\t_CheckForegroundTimer_Tick(nullptr, nullptr);\n}\n\nvoid ScalingService::Uninitialize() {\n\tif (!_scalingRuntime) {\n\t\treturn;\n\t}\n\n\t_checkForegroundTimer.Stop();\n\t_countDownTimer.Stop();\n\t_scalingRuntime.reset();\n\n\t_shortcutActivatedRevoker.Revoke();\n}\n\nvoid ScalingService::StartTimer(bool windowedMode) {\n\t_curCountdownSeconds = AppSettings::Get().CountdownSeconds();\n\t_isCurCountdownWindowedMode = windowedMode;\n\t_timerStartTimePoint = std::chrono::steady_clock::now();\n\t// 如果计时器已经启动会被重置，这正是我们想要的\n\t_countDownTimer.Start();\n\tIsTimerOnChanged.Invoke(true, windowedMode);\n}\n\nvoid ScalingService::StopTimer() {\n\tif (_curCountdownSeconds == 0) {\n\t\treturn;\n\t}\n\n\t_curCountdownSeconds = 0;\n\t_countDownTimer.Stop();\n\tIsTimerOnChanged.Invoke(false, _isCurCountdownWindowedMode);\n}\n\ndouble ScalingService::SecondsLeft() const noexcept {\n\tusing namespace std::chrono;\n\n\tif (!IsTimerOn()) {\n\t\treturn std::numeric_limits<double>::max();\n\t}\n\n\t// DispatcherTimer 误差很大，因此我们自己计算剩余时间\n\tauto now = steady_clock::now();\n\tint msLeft = (int)duration_cast<milliseconds>(_timerStartTimePoint + seconds(_curCountdownSeconds) - now).count();\n\treturn msLeft / 1000.0;\n}\n\nbool ScalingService::IsScaling() const noexcept {\n\t// 等待状态视为未缩放\n\treturn _scalingRuntime->State() == ScalingState::Scaling;\n}\n\nvoid ScalingService::CheckForeground() {\n\t_hwndChecked = NULL;\n\t_CheckForegroundTimer_Tick(nullptr, nullptr);\n}\n\nvoid ScalingService::_ShortcutService_ShortcutPressed(ShortcutAction action) {\n\tswitch (action) {\n\tcase ShortcutAction::Scale:\n\tcase ShortcutAction::WindowedModeScale:\n\t{\n\t\tconst bool isWindowdMode = action == ShortcutAction::WindowedModeScale;\n\n\t\tif (_scalingRuntime->State() == ScalingState::Scaling) {\n\t\t\t_scalingRuntime->ToggleScaling(isWindowdMode);\n\t\t} else {\n\t\t\t_ScaleForegroundWindow(isWindowdMode);\n\t\t}\n\n\t\tbreak;\n\t}\n\tcase ShortcutAction::Toolbar:\n\t{\n\t\t_scalingRuntime->SwitchToolbarState();\n\t\tbreak;\n\t}\n\tdefault:\n\t\tbreak;\n\t}\n}\n\nvoid ScalingService::_CountDownTimer_Tick(winrt::DispatcherQueueTimer const&, winrt::IInspectable const&) {\n\tconst double timeLeft = SecondsLeft();\n\n\t// 剩余时间在 10 ms 以内计时结束\n\tif (timeLeft < 0.01) {\n\t\tStopTimer();\n\t\t_ScaleForegroundWindow(_isCurCountdownWindowedMode);\n\t\treturn;\n\t}\n\n\tTimerTick.Invoke(timeLeft);\n}\n\nstatic void ShowError(HWND hWnd, ScalingError error) noexcept {\n\tconst wchar_t* key = nullptr;\n\n\tbool isFail = true;\n\tswitch (error) {\n\tcase ScalingError::InvalidScalingMode:\n\t\tkey = L\"Message_InvalidScalingMode\";\n\t\tisFail = false;\n\t\tbreak;\n\tcase ScalingError::TouchSupport:\n\t\tkey = L\"Message_TouchSupport\";\n\t\tbreak;\n\tcase ScalingError::Windowed3DGameMode:\n\t\tkey = L\"Message_Windowed3DGameMode\";\n\t\tisFail = false;\n\t\tbreak;\n\tcase ScalingError::WindowedDesktopDuplication:\n\t\tkey = L\"Message_WindowedDesktopDuplication\";\n\t\tisFail = false;\n\t\tbreak;\n\tcase ScalingError::InvalidSourceWindow:\n\t\tkey = L\"Message_InvalidSourceWindow\";\n\t\tbreak;\n\tcase ScalingError::Maximized:\n\t\tkey = L\"Message_Maximized\";\n\t\tisFail = false;\n\t\tbreak;\n\tcase ScalingError::LowIntegrityLevel:\n\t\tkey = L\"Message_LowIntegrityLevel\";\n\t\tisFail = false;\n\t\tbreak;\n\tcase ScalingError::InvalidCropping:\n\t\tkey = L\"Message_InvalidCropping\";\n\t\tbreak;\n\tcase ScalingError::BannedInWindowedMode:\n\t\tkey = L\"Message_BannedInWindowedMode\";\n\t\tisFail = false;\n\t\tbreak;\n\tcase ScalingError::ScalingFailedGeneral:\n\t\tkey = L\"Message_ScalingFailedGeneral\";\n\t\tbreak;\n\tcase ScalingError::CaptureFailed:\n\t\tkey = L\"Message_CaptureFailed\";\n\t\tbreak;\n\tcase ScalingError::CreateFenceFailed:\n\t\tkey = L\"Message_CreateFenceFailed\";\n\t\tbreak;\n\tdefault:\n\t\tassert(false);\n\t\treturn;\n\t}\n\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForViewIndependentUse(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\thstring title = isFail ? resourceLoader.GetString(L\"Message_ScalingFailed\") : hstring{};\n\tToastService::Get().ShowMessageOnWindow(title, resourceLoader.GetString(key), hWnd);\n\tLogger::Get().Error(fmt::format(\"缩放失败\\n\\t错误码: {}\", (int)error));\n}\n\nstatic bool IsPopupWindow(HWND hwndPopup, HWND hwndOwner) noexcept {\n\t// 检查所有者关系\n\t{\n\t\tHWND hwndCur = hwndPopup;\n\t\twhile (bool(hwndCur = GetWindowOwner(hwndCur))) {\n\t\t\tif (hwndCur == hwndOwner) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t// 有些游戏不用所有者关系来实现弹窗，而是将主窗口禁用，做到和模态弹窗差不多的效果。\n\t// 这不可能准确检测，只能尽可能增加限制以减少误判，我们检查三个条件：\n\t// \n\t// 1. 主窗口处于禁用状态\n\t// 2. 两个窗口位于同一个进程\n\t// 3. 主窗口没有传统意义的弹窗\n\n\tif (IsWindowEnabled(hwndOwner)) {\n\t\treturn false;\n\t}\n\n\tDWORD pid1 = 0;\n\tDWORD pid2 = 0;\n\tGetWindowThreadProcessId(hwndPopup, &pid1);\n\tGetWindowThreadProcessId(hwndOwner, &pid2);\n\tif (pid1 != pid2) {\n\t\treturn false;\n\t}\n\n\treturn !GetWindow(hwndOwner, GW_ENABLEDPOPUP);\n}\n\nstatic bool IsReadyForScaling(HWND hwndFore) noexcept {\n\t// GH#1148\n\t// 有些游戏刚启动时将窗口创建在屏幕外，初始化完成后再移到屏幕内\n\tif (!MonitorFromWindow(hwndFore, MONITOR_DEFAULTTONULL)) {\n\t\treturn false;\n\t}\n\n\t// GH#1200\n\t// 有些游戏加载时不响应消息，应等待加载完成\n\treturn !Win32Helper::IsWindowHung(hwndFore);\n}\n\nvoid ScalingService::_CheckForegroundTimer_Tick(winrt::DispatcherQueueTimer const&, winrt::IInspectable const&) {\n\tconst HWND hwndFore = GetForegroundWindow();\n\tif (!hwndFore || hwndFore == _hwndChecked) {\n\t\treturn;\n\t}\n\n\tif (hwndFore != _hwndCurSrc) {\n\t\t// 检查自动缩放\n\t\tconst Profile* profile = ProfileService::Get().GetProfileForWindow(hwndFore, true);\n\t\t// 正在缩放窗口时禁止自动缩放它的弹窗\n\t\tif (profile && !(_hwndCurSrc && IsPopupWindow(hwndFore, _hwndCurSrc))) {\n\t\t\t// 如果窗口处于某种中间状态则跳过此次检查\n\t\t\tif (!IsReadyForScaling(hwndFore)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// 自动缩放可以终止当前缩放\n\t\t\t_StartScale(hwndFore, *profile, profile->autoScale == AutoScale::Windowed, true);\n\t\t}\n\t}\n\n\t// 避免重复检查\n\t_hwndChecked = hwndFore;\n}\n\nvoid ScalingService::_ScalingRuntime_StateChanged(ScalingState value) {\n\tApp::Get().Dispatcher().TryEnqueue([this, value]() {\n\t\tif (value == ScalingState::Scaling) {\n\t\t\tStopTimer();\n\t\t} else if (value == ScalingState::Idle) {\n\t\t\t// 缩放结束后源窗口位于前台则不要检查自动缩放，用户可能刚通过快捷键或\n\t\t\t// 工具栏终止缩放。_CheckForegroundTimer_Tick 也实现了类似功能，但它\n\t\t\t// 的触发频率较低，容易错过时机。\n\t\t\tif (GetForegroundWindow() == _hwndCurSrc) {\n\t\t\t\t_hwndChecked = _hwndCurSrc;\n\t\t\t}\n\n\t\t\t// 缩放结束后清空 _hwndCurSrc，等待状态下则保留\n\t\t\t_hwndCurSrc = NULL;\n\t\t}\n\n\t\tIsScalingChanged.Invoke(value == ScalingState::Scaling);\n\t});\n}\n\nvoid ScalingService::_ScaleForegroundWindow(bool windowedMode) {\n\tconst HWND hWnd = GetForegroundWindow();\n\tif (!hWnd) {\n\t\treturn;\n\t}\n\n\tconst Profile& profile = *ProfileService::Get().GetProfileForWindow(hWnd, false);\n\t_StartScale(hWnd, profile, windowedMode, false);\n}\n\nvoid ScalingService::_StartScale(HWND hWnd, const Profile& profile, bool windowedMode, bool force) {\n\tassert(hWnd);\n\n\tconst ScalingError error = _StartScaleImpl(hWnd, profile, windowedMode, force);\n\tif (error != ScalingError::NoError) {\n\t\tShowError(hWnd, error);\n\t}\n}\n\nScalingError ScalingService::_StartScaleImpl(HWND hWnd, const Profile& profile, bool windowedMode, bool force) {\n\t// ScalingRuntime::Start 会检查是否正在缩放，这里提前检查以避免无效操作\n\tif (!force && _scalingRuntime->State() == ScalingState::Scaling) {\n\t\treturn ScalingError::NoError;\n\t}\n\n\tif (WindowHelper::IsForbiddenSystemWindow(hWnd)) {\n\t\treturn ScalingError::NoError;\n\t}\n\n\tif (profile.scalingMode < 0) {\n\t\treturn ScalingError::InvalidScalingMode;\n\t}\n\n\tconst std::vector<EffectItem>& effects =\n\t\tScalingModesService::Get().GetScalingMode(profile.scalingMode).effects;\n\tif (effects.empty()) {\n\t\treturn ScalingError::InvalidScalingMode;\n\t} else {\n\t\tfor (const EffectItem& effect : effects) {\n\t\t\tif (!EffectsService::Get().GetEffect(effect.name)) {\n\t\t\t\t// 存在无法解析的效果\n\t\t\t\treturn ScalingError::InvalidScalingMode;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (profile.Is3DGameMode() && windowedMode) {\n\t\treturn ScalingError::Windowed3DGameMode;\n\t}\n\n\tScalingOptions options;\n\n\toptions.effects.reserve(effects.size());\n\tfor (const EffectItem& effectItem : effects) {\n\t\toptions.effects.push_back((EffectOption)effectItem);\n\t}\n\n\t// 尝试启用触控支持\n\tbool isTouchSupportEnabled;\n\tif (!TouchHelper::TryLaunchTouchHelper(isTouchSupportEnabled)) {\n\t\tLogger::Get().Error(\"TryLaunchTouchHelper 失败\");\n\t\treturn ScalingError::TouchSupport;\n\t}\n\n\toptions.graphicsCardId = profile.graphicsCardId;\n\toptions.captureMethod = profile.captureMethod;\n\tif (profile.isFrameRateLimiterEnabled) {\n\t\toptions.maxFrameRate = profile.maxFrameRate;\n\t}\n\toptions.multiMonitorUsage = profile.multiMonitorUsage;\n\toptions.destAlignment = profile.destAlignment;\n\toptions.cursorInterpolationMode = profile.cursorInterpolationMode;\n\toptions.flags = profile.scalingFlags;\n\n\toptions.IsWindowedMode(windowedMode);\n\toptions.IsTouchSupportEnabled(isTouchSupportEnabled);\n\n\tswitch (profile.initialWindowedScaleFactor) {\n\tcase InitialWindowedScaleFactor::Auto:\n\t\toptions.initialWindowedScaleFactor = 0.0f;\n\t\tbreak;\n\tcase InitialWindowedScaleFactor::x1_25:\n\t\toptions.initialWindowedScaleFactor = 1.25f;\n\t\tbreak;\n\tcase InitialWindowedScaleFactor::x1_5:\n\t\toptions.initialWindowedScaleFactor = 1.5f;\n\t\tbreak;\n\tcase InitialWindowedScaleFactor::x1_75:\n\t\toptions.initialWindowedScaleFactor = 1.75f;\n\t\tbreak;\n\tcase InitialWindowedScaleFactor::x2:\n\t\toptions.initialWindowedScaleFactor = 2.0f;\n\t\tbreak;\n\tcase InitialWindowedScaleFactor::x3:\n\t\toptions.initialWindowedScaleFactor = 3.0f;\n\t\tbreak;\n\tcase InitialWindowedScaleFactor::Custom:\n\t\toptions.initialWindowedScaleFactor = profile.customInitialWindowedScaleFactor;\n\t\tbreak;\n\tdefault:\n\t\toptions.initialWindowedScaleFactor = 0.0f;\n\t\tbreak;\n\t}\n\n\tif (profile.isCroppingEnabled) {\n\t\toptions.cropping = profile.cropping;\n\t}\n\n\tswitch (profile.cursorScaling) {\n\tcase CursorScaling::x0_5:\n\t\toptions.cursorScaling = 0.5f;\n\t\tbreak;\n\tcase CursorScaling::x0_75:\n\t\toptions.cursorScaling = 0.75f;\n\t\tbreak;\n\tcase CursorScaling::NoScaling:\n\t\toptions.cursorScaling = 1.0f;\n\t\tbreak;\n\tcase CursorScaling::x1_25:\n\t\toptions.cursorScaling = 1.25f;\n\t\tbreak;\n\tcase CursorScaling::x1_5:\n\t\toptions.cursorScaling = 1.5f;\n\t\tbreak;\n\tcase CursorScaling::x2:\n\t\toptions.cursorScaling = 2.0f;\n\t\tbreak;\n\tcase CursorScaling::Source:\n\t\t// 0 或负值表示和源窗口缩放比例相同\n\t\toptions.cursorScaling = 0.0f;\n\t\tbreak;\n\tcase CursorScaling::Custom:\n\t\toptions.cursorScaling = profile.customCursorScaling;\n\t\tbreak;\n\tdefault:\n\t\toptions.cursorScaling = 1.0f;\n\t\tbreak;\n\t}\n\n\tif (profile.isAutoHideCursorEnabled) {\n\t\toptions.autoHideCursorDelay = profile.autoHideCursorDelay;\n\t}\n\n\t// 应用全局配置\n\tAppSettings& settings = AppSettings::Get();\n\toptions.IsDeveloperMode(settings.IsDeveloperMode());\n\toptions.IsDebugMode(settings.IsDebugMode());\n\toptions.IsBenchmarkMode(settings.IsBenchmarkMode());\n\toptions.IsTopmostDisabled(settings.IsTopmostDisabled());\n\toptions.IsEffectCacheDisabled(settings.IsEffectCacheDisabled());\n\toptions.IsFontCacheDisabled(settings.IsFontCacheDisabled());\n\toptions.IsSaveEffectSources(settings.IsSaveEffectSources());\n\toptions.IsWarningsAreErrors(settings.IsWarningsAreErrors());\n\toptions.IsAllowScalingMaximized(settings.IsAllowScalingMaximized());\n\toptions.IsSimulateExclusiveFullscreen(settings.IsSimulateExclusiveFullscreen());\n\toptions.duplicateFrameDetectionMode = settings.DuplicateFrameDetectionMode();\n\toptions.IsStatisticsForDynamicDetectionEnabled(settings.IsStatisticsForDynamicDetectionEnabled());\n\toptions.IsInlineParams(settings.IsInlineParams());\n\toptions.IsFP16Disabled(settings.IsFP16Disabled());\n\n\tif (options.maxFrameRate) {\n\t\t// 最小帧数不能大于最大帧数\n\t\toptions.minFrameRate = std::min(settings.MinFrameRate(), *options.maxFrameRate);\n\t} else {\n\t\toptions.minFrameRate = settings.MinFrameRate();\n\t}\n\n\toptions.fullscreenInitialToolbarState = settings.FullscreenInitialToolbarState();\n\toptions.windowedInitialToolbarState = settings.WindowedInitialToolbarState();\n\toptions.screenshotsDir = settings.ScreenshotsDir();\n\tif (options.screenshotsDir.empty()) {\n\t\t// 回落到使用当前目录\n\t\toptions.screenshotsDir = L\".\";\n\t}\n\n\toptions.overlayOptions = settings.OverlayOptions();\n\n\toptions.showToast = [](HWND hwndTarget, std::wstring_view msg) noexcept {\n\t\tToastService::Get().ShowMessageOnWindow({}, msg, hwndTarget);\n\t};\n\n\toptions.showError = &ShowError;\n\n\toptions.save = [](const ScalingOptions& options, HWND /*hwndScaling*/) noexcept {\n\t\tApp::Get().Dispatcher().TryEnqueue(\n\t\t\t[overlayOptions(options.overlayOptions)]() {\n\t\t\t\tAppSettings::Get().OverlayOptions() = std::move(overlayOptions);\n\t\t\t\tAppSettings::Get().SaveAsync();\n\t\t\t}\n\t\t);\n\t};\n\n\tif (!_scalingRuntime->Start(hWnd, std::move(options), force)) {\n\t\treturn ScalingError::ScalingFailedGeneral;\n\t}\n\n\t_hwndCurSrc = hWnd;\n\treturn ScalingError::NoError;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ScalingService.h",
    "content": "#pragma once\n#include \"Event.h\"\n#include \"ScalingRuntime.h\"\n\nnamespace Magpie {\nclass ScalingRuntime;\n}\n\nnamespace Magpie {\n\nstruct Profile;\n\nclass ScalingService {\npublic:\n\tstatic ScalingService& Get() noexcept;\n\n\tScalingService(const ScalingService&) = delete;\n\tScalingService(ScalingService&&) = delete;\n\n\t~ScalingService();\n\n\tvoid Initialize();\n\n\tvoid Uninitialize();\n\n\tvoid StartTimer(bool windowedMode);\n\n\tvoid StopTimer();\n\n\tbool IsTimerOn() const noexcept {\n\t\treturn _curCountdownSeconds > 0;\n\t}\n\n\tbool IsTimerOn(bool windowedMode) const noexcept {\n\t\treturn IsTimerOn() && windowedMode == _isCurCountdownWindowedMode;\n\t}\n\n\tdouble TimerProgress() const noexcept {\n\t\treturn SecondsLeft() / _curCountdownSeconds;\n\t}\n\n\tdouble SecondsLeft() const noexcept;\n\n\tbool IsScaling() const noexcept;\n\n\t// 强制重新检查前台窗口\n\tvoid CheckForeground();\n\n\tEvent<bool, bool> IsTimerOnChanged;\n\tEvent<double> TimerTick;\n\tEvent<bool> IsScalingChanged;\n\nprivate:\n\tScalingService() = default;\n\n\tvoid _ShortcutService_ShortcutPressed(winrt::Magpie::ShortcutAction action);\n\n\tvoid _CountDownTimer_Tick(winrt::DispatcherQueueTimer const&, winrt::IInspectable const&);\n\n\tvoid _CheckForegroundTimer_Tick(winrt::DispatcherQueueTimer const&, winrt::IInspectable const&);\n\n\tvoid _ScalingRuntime_StateChanged(ScalingState value);\n\n\tvoid _ScaleForegroundWindow(bool windowedMode);\n\n\tvoid _StartScale(HWND hWnd, const Profile& profile, bool windowedMode, bool force);\n\n\tScalingError _StartScaleImpl(HWND hWnd, const Profile& profile, bool windowedMode, bool force);\n\n\tstd::optional<ScalingRuntime> _scalingRuntime;\n\n\twinrt::DispatcherQueueTimer _countDownTimer{ nullptr };\n\twinrt::DispatcherQueueTimer _checkForegroundTimer{ nullptr };\n\n\tEvent<winrt::Magpie::ShortcutAction>::EventRevoker _shortcutActivatedRevoker;\n\n\tstd::chrono::steady_clock::time_point _timerStartTimePoint;\n\n\tuint32_t _curCountdownSeconds = 0;\n\tbool _isCurCountdownWindowedMode = false;\n\n\tHWND _hwndCurSrc = NULL;\n\t// 1. 避免重复检查同一个窗口\n\t// 2. 用户使用热键退出全屏后暂时阻止该窗口自动放大\n\tHWND _hwndChecked = NULL;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/SettingsCard.Resource.xaml",
    "content": "<!--  移植自 https://github.com/CommunityToolkit/Windows/blob/efbaf965029806fe29e02a6421af3c8f434e1460/components/SettingsControls/src/SettingsCard/SettingsCard.xaml  -->\n<!--  Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information.  -->\n<!--  26100 SDK 存在 bug，导致所有 XAML 文件都必须指定 x:Class，一旦修复应还原更改  -->\n<ResourceDictionary x:Class=\"Magpie.SettingsCardStyle\"\n                    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n                    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n                    xmlns:local=\"using:Magpie\"\n                    xmlns:muxc=\"using:Microsoft.UI.Xaml.Controls\">\n\n\t<ResourceDictionary.ThemeDictionaries>\n\t\t<ResourceDictionary x:Key=\"Default\">\n\t\t\t<StaticResource x:Key=\"SettingsCardBackground\"\n\t\t\t                ResourceKey=\"CardBackgroundFillColorDefaultBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardBackgroundPointerOver\"\n\t\t\t                ResourceKey=\"ControlFillColorSecondaryBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardBackgroundPressed\"\n\t\t\t                ResourceKey=\"ControlFillColorTertiaryBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardBackgroundDisabled\"\n\t\t\t                ResourceKey=\"ControlFillColorDisabledBrush\" />\n\n\t\t\t<StaticResource x:Key=\"SettingsCardForeground\"\n\t\t\t                ResourceKey=\"TextFillColorPrimaryBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardForegroundPointerOver\"\n\t\t\t                ResourceKey=\"TextFillColorPrimaryBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardForegroundPressed\"\n\t\t\t                ResourceKey=\"TextFillColorSecondaryBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardForegroundDisabled\"\n\t\t\t                ResourceKey=\"TextFillColorDisabledBrush\" />\n\n\t\t\t<StaticResource x:Key=\"SettingsCardBorderBrush\"\n\t\t\t                ResourceKey=\"CardStrokeColorDefaultBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardBorderBrushPointerOver\"\n\t\t\t                ResourceKey=\"ControlElevationBorderBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardBorderBrushPressed\"\n\t\t\t                ResourceKey=\"ControlStrokeColorDefaultBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardBorderBrushDisabled\"\n\t\t\t                ResourceKey=\"ControlStrokeColorDefaultBrush\" />\n\t\t</ResourceDictionary>\n\n\t\t<ResourceDictionary x:Key=\"Light\">\n\t\t\t<StaticResource x:Key=\"SettingsCardBackground\"\n\t\t\t                ResourceKey=\"CardBackgroundFillColorDefaultBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardBackgroundPointerOver\"\n\t\t\t                ResourceKey=\"ControlFillColorSecondaryBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardBackgroundPressed\"\n\t\t\t                ResourceKey=\"ControlFillColorTertiaryBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardBackgroundDisabled\"\n\t\t\t                ResourceKey=\"ControlFillColorDisabledBrush\" />\n\n\t\t\t<StaticResource x:Key=\"SettingsCardForeground\"\n\t\t\t                ResourceKey=\"TextFillColorPrimaryBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardForegroundPointerOver\"\n\t\t\t                ResourceKey=\"TextFillColorPrimaryBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardForegroundPressed\"\n\t\t\t                ResourceKey=\"TextFillColorSecondaryBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardForegroundDisabled\"\n\t\t\t                ResourceKey=\"TextFillColorDisabledBrush\" />\n\n\t\t\t<StaticResource x:Key=\"SettingsCardBorderBrush\"\n\t\t\t                ResourceKey=\"CardStrokeColorDefaultBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardBorderBrushPointerOver\"\n\t\t\t                ResourceKey=\"ControlElevationBorderBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardBorderBrushPressed\"\n\t\t\t                ResourceKey=\"ControlStrokeColorDefaultBrush\" />\n\t\t\t<StaticResource x:Key=\"SettingsCardBorderBrushDisabled\"\n\t\t\t                ResourceKey=\"ControlStrokeColorDefaultBrush\" />\n\t\t</ResourceDictionary>\n\t</ResourceDictionary.ThemeDictionaries>\n\t<Thickness x:Key=\"SettingsCardBorderThickness\">1</Thickness>\n\t<Thickness x:Key=\"SettingsCardPadding\">16,16,16,16</Thickness>\n\t<x:Double x:Key=\"SettingsCardMinWidth\">148</x:Double>\n\t<x:Double x:Key=\"SettingsCardMinHeight\">68</x:Double>\n\t<x:Double x:Key=\"SettingsCardHeaderIconMaxSize\">20</x:Double>\n\t<x:Double x:Key=\"SettingsCardLeftIndention\">0</x:Double>\n\t<x:Double x:Key=\"SettingsCardContentMinWidth\">200</x:Double>\n\t<Thickness x:Key=\"SettingsCardHeaderIconMargin\">2,0,20,0</Thickness>\n\t<Thickness x:Key=\"SettingsCardActionIconMargin\">14,0,0,0</Thickness>\n\t<x:Double x:Key=\"SettingsCardActionIconMaxSize\">13</x:Double>\n\t<x:Double x:Key=\"SettingsCardVerticalHeaderContentSpacing\">8</x:Double>\n\t<x:Double x:Key=\"SettingsCardWrapThreshold\">476</x:Double>\n\t<x:Double x:Key=\"SettingsCardWrapNoIconThreshold\">286</x:Double>\n\n\t<Style BasedOn=\"{StaticResource DefaultSettingsCardStyle}\"\n\t       TargetType=\"local:SettingsCard\" />\n\n\t<Style x:Key=\"DefaultSettingsCardStyle\"\n\t       TargetType=\"local:SettingsCard\">\n\t\t<Style.Setters>\n\t\t\t<Setter Property=\"Background\" Value=\"{ThemeResource SettingsCardBackground}\" />\n\t\t\t<Setter Property=\"Foreground\" Value=\"{ThemeResource SettingsCardForeground}\" />\n\t\t\t<Setter Property=\"BorderBrush\" Value=\"{ThemeResource SettingsCardBorderBrush}\" />\n\t\t\t<Setter Property=\"BorderThickness\" Value=\"{ThemeResource SettingsCardBorderThickness}\" />\n\t\t\t<Setter Property=\"CornerRadius\" Value=\"{ThemeResource ControlCornerRadius}\" />\n\t\t\t<Setter Property=\"MinHeight\" Value=\"{ThemeResource SettingsCardMinHeight}\" />\n\t\t\t<Setter Property=\"MinWidth\" Value=\"{ThemeResource SettingsCardMinWidth}\" />\n\t\t\t<Setter Property=\"IsTabStop\" Value=\"False\" />\n\t\t\t<Setter Property=\"HorizontalAlignment\" Value=\"Stretch\" />\n\t\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Right\" />\n\t\t\t<Setter Property=\"VerticalAlignment\" Value=\"Center\" />\n\t\t\t<Setter Property=\"BackgroundSizing\" Value=\"InnerBorderEdge\" />\n\t\t\t<Setter Property=\"Padding\" Value=\"{ThemeResource SettingsCardPadding}\" />\n\t\t\t<Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\" />\n\t\t\t<Setter Property=\"FontWeight\" Value=\"Normal\" />\n\t\t\t<Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\" />\n\t\t\t<Setter Property=\"UseSystemFocusVisuals\" Value=\"{StaticResource UseSystemFocusVisuals}\" />\n\t\t\t<Setter Property=\"FocusVisualMargin\" Value=\"-3\" />\n\t\t\t<Setter Property=\"Template\">\n\t\t\t\t<Setter.Value>\n\t\t\t\t\t<ControlTemplate TargetType=\"local:SettingsCard\">\n\t\t\t\t\t\t<Grid x:Name=\"PART_RootGrid\"\n\t\t\t\t\t\t      MinWidth=\"{TemplateBinding MinWidth}\"\n\t\t\t\t\t\t      MinHeight=\"{TemplateBinding MinHeight}\"\n\t\t\t\t\t\t      MaxWidth=\"{TemplateBinding MaxWidth}\"\n\t\t\t\t\t\t      Padding=\"{TemplateBinding Padding}\"\n\t\t\t\t\t\t      HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\"\n\t\t\t\t\t\t      VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"\n\t\t\t\t\t\t      muxc:AnimatedIcon.State=\"Normal\"\n\t\t\t\t\t\t      Background=\"{TemplateBinding Background}\"\n\t\t\t\t\t\t      BackgroundSizing=\"{TemplateBinding BackgroundSizing}\"\n\t\t\t\t\t\t      BorderBrush=\"{TemplateBinding BorderBrush}\"\n\t\t\t\t\t\t      BorderThickness=\"{TemplateBinding BorderThickness}\"\n\t\t\t\t\t\t      CornerRadius=\"{TemplateBinding CornerRadius}\">\n\t\t\t\t\t\t\t<Grid.Resources>\n\t\t\t\t\t\t\t\t<!--  这些样式是不起作用的，用于复制到控件本身的样式中  -->\n\n\t\t\t\t\t\t\t\t<!--  Making sure ToggleSwitches are right-aligned by default  -->\n\t\t\t\t\t\t\t\t<Style BasedOn=\"{StaticResource RightAlignedCompactToggleSwitchStyle}\"\n\t\t\t\t\t\t\t\t       TargetType=\"ToggleSwitch\" />\n\n\t\t\t\t\t\t\t\t<!--  Overriding the MinWidth of various types of controls so they neatly align  -->\n\t\t\t\t\t\t\t\t<Style BasedOn=\"{StaticResource DefaultSliderStyle}\"\n\t\t\t\t\t\t\t\t       TargetType=\"Slider\">\n\t\t\t\t\t\t\t\t\t<Style.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Property=\"MinWidth\" Value=\"{StaticResource SettingsCardContentMinWidth}\" />\n\t\t\t\t\t\t\t\t\t</Style.Setters>\n\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t<Style BasedOn=\"{StaticResource DefaultComboBoxStyle}\"\n\t\t\t\t\t\t\t\t       TargetType=\"ComboBox\">\n\t\t\t\t\t\t\t\t\t<Style.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Property=\"MinWidth\" Value=\"{StaticResource SettingsCardContentMinWidth}\" />\n\t\t\t\t\t\t\t\t\t</Style.Setters>\n\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t<Style BasedOn=\"{StaticResource DefaultTextBoxStyle}\"\n\t\t\t\t\t\t\t\t       TargetType=\"TextBox\">\n\t\t\t\t\t\t\t\t\t<Style.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Property=\"MinWidth\" Value=\"{StaticResource SettingsCardContentMinWidth}\" />\n\t\t\t\t\t\t\t\t\t</Style.Setters>\n\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t<Style TargetType=\"muxc:NumberBox\">\n\t\t\t\t\t\t\t\t\t<Style.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Property=\"MinWidth\" Value=\"{StaticResource SettingsCardContentMinWidth}\" />\n\t\t\t\t\t\t\t\t\t</Style.Setters>\n\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t</Grid.Resources>\n\t\t\t\t\t\t\t<Grid.RowDefinitions>\n\t\t\t\t\t\t\t\t<RowDefinition Height=\"*\" />\n\t\t\t\t\t\t\t\t<RowDefinition Height=\"Auto\" />\n\t\t\t\t\t\t\t</Grid.RowDefinitions>\n\t\t\t\t\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\"\n\t\t\t\t\t\t\t\t                  MinWidth=\"{ThemeResource SettingsCardLeftIndention}\" />\n\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"*\" />\n\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t\t</Grid.ColumnDefinitions>\n\n\t\t\t\t\t\t\t<Viewbox x:Name=\"PART_HeaderIconPresenterHolder\"\n\t\t\t\t\t\t\t         Grid.RowSpan=\"1\"\n\t\t\t\t\t\t\t         MaxWidth=\"{ThemeResource SettingsCardHeaderIconMaxSize}\"\n\t\t\t\t\t\t\t         MaxHeight=\"{ThemeResource SettingsCardHeaderIconMaxSize}\"\n\t\t\t\t\t\t\t         Margin=\"{ThemeResource SettingsCardHeaderIconMargin}\">\n\t\t\t\t\t\t\t\t<ContentPresenter x:Name=\"PART_HeaderIconPresenter\"\n\t\t\t\t\t\t\t\t                  Content=\"{TemplateBinding HeaderIcon}\" />\n\t\t\t\t\t\t\t</Viewbox>\n\n\t\t\t\t\t\t\t<local:SimpleStackPanel x:Name=\"HeaderPanel\"\n\t\t\t\t\t\t\t                        Grid.Column=\"1\"\n\t\t\t\t\t\t\t                        Margin=\"0,0,24,0\"\n\t\t\t\t\t\t\t                        VerticalAlignment=\"Center\">\n\t\t\t\t\t\t\t\t<ContentPresenter x:Name=\"PART_HeaderPresenter\"\n\t\t\t\t\t\t\t\t                  Grid.Column=\"1\"\n\t\t\t\t\t\t\t\t                  HorizontalAlignment=\"Left\"\n\t\t\t\t\t\t\t\t                  Content=\"{TemplateBinding Header}\"\n\t\t\t\t\t\t\t\t                  TextWrapping=\"Wrap\" />\n\n\t\t\t\t\t\t\t\t<ContentPresenter x:Name=\"PART_DescriptionPresenter\"\n\t\t\t\t\t\t\t\t                  Content=\"{TemplateBinding Description}\"\n\t\t\t\t\t\t\t\t                  FontSize=\"{StaticResource SecondaryTextFontSize}\"\n\t\t\t\t\t\t\t\t                  Foreground=\"{ThemeResource TextFillColorSecondaryBrush}\"\n\t\t\t\t\t\t\t\t                  TextWrapping=\"Wrap\">\n\t\t\t\t\t\t\t\t\t<ContentPresenter.Resources>\n\t\t\t\t\t\t\t\t\t\t<Style BasedOn=\"{StaticResource CaptionTextBlockStyle}\"\n\t\t\t\t\t\t\t\t\t\t       TargetType=\"TextBlock\">\n\t\t\t\t\t\t\t\t\t\t\t<Style.Setters>\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"TextWrapping\" Value=\"Wrap\" />\n\t\t\t\t\t\t\t\t\t\t\t</Style.Setters>\n\t\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t\t<Style BasedOn=\"{StaticResource DefaultHyperlinkButtonStyle}\"\n\t\t\t\t\t\t\t\t\t\t       TargetType=\"HyperlinkButton\">\n\t\t\t\t\t\t\t\t\t\t\t<Style.Setters>\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"FontSize\" Value=\"{StaticResource SecondaryTextFontSize}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"Padding\" Value=\"0,0,0,-1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"FontWeight\" Value=\"SemiBold\" />\n\t\t\t\t\t\t\t\t\t\t\t</Style.Setters>\n\t\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t\t<Style TargetType=\"Hyperlink\">\n\t\t\t\t\t\t\t\t\t\t\t<Style.Setters>\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"UnderlineStyle\" Value=\"None\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"TextDecorations\" Value=\"None\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<Setter Property=\"FontWeight\" Value=\"SemiBold\" />\n\t\t\t\t\t\t\t\t\t\t\t</Style.Setters>\n\t\t\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t\t</ContentPresenter.Resources>\n\t\t\t\t\t\t\t\t</ContentPresenter>\n\t\t\t\t\t\t\t</local:SimpleStackPanel>\n\n\t\t\t\t\t\t\t<ContentPresenter x:Name=\"PART_ContentPresenter\"\n\t\t\t\t\t\t\t                  Grid.Column=\"2\"\n\t\t\t\t\t\t\t                  HorizontalAlignment=\"Right\"\n\t\t\t\t\t\t\t                  VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t                  HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n\t\t\t\t\t\t\t                  Content=\"{TemplateBinding Content}\" />\n\n\t\t\t\t\t\t\t<Viewbox x:Name=\"PART_ActionIconPresenterHolder\"\n\t\t\t\t\t\t\t         Grid.RowSpan=\"2\"\n\t\t\t\t\t\t\t         Grid.Column=\"3\"\n\t\t\t\t\t\t\t         MaxWidth=\"{ThemeResource SettingsCardActionIconMaxSize}\"\n\t\t\t\t\t\t\t         MaxHeight=\"{ThemeResource SettingsCardActionIconMaxSize}\"\n\t\t\t\t\t\t\t         Margin=\"{ThemeResource SettingsCardActionIconMargin}\"\n\t\t\t\t\t\t\t         HorizontalAlignment=\"Center\"\n\t\t\t\t\t\t\t         VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t         Visibility=\"Collapsed\">\n\t\t\t\t\t\t\t\t<ContentPresenter x:Name=\"PART_ActionIconPresenter\"\n\t\t\t\t\t\t\t\t                  Content=\"{TemplateBinding ActionIcon}\"\n\t\t\t\t\t\t\t\t                  FontFamily=\"{ThemeResource SymbolThemeFontFamily}\" />\n\t\t\t\t\t\t\t</Viewbox>\n\t\t\t\t\t\t\t<VisualStateManager.VisualStateGroups>\n\t\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"CommonStates\">\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Normal\" />\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"PointerOver\">\n\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_RootGrid\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBackgroundPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_RootGrid\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"BorderBrush\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBorderBrushPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_HeaderPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardForegroundPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_HeaderIconPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardForegroundPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_RootGrid.(muxc:AnimatedIcon.State)\" Value=\"PointerOver\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Pressed\">\n\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_RootGrid\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBackgroundPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_RootGrid\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"BorderBrush\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBorderBrushPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_HeaderIconPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardForegroundPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_HeaderPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardForegroundPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_DescriptionPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardForegroundPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_RootGrid.(muxc:AnimatedIcon.State)\" Value=\"Pressed\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Disabled\">\n\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_ActionIconPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardForegroundDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_HeaderIconPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardForegroundDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_HeaderPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardForegroundDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_DescriptionPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardForegroundDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_ContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardForegroundDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t<!--  DisabledVisual Should be handled by the control, not the animated icon.  -->\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_RootGrid.(muxc:AnimatedIcon.State)\" Value=\"Normal\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t</VisualStateGroup>\n\n\t\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"ContentAlignmentStates\">\n\t\t\t\t\t\t\t\t\t<!--  Default  -->\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Right\" />\n\n\t\t\t\t\t\t\t\t\t<!--  Whenever the control width is less than SettingsCardWrapThreshold, the Content is below the Header/Description  -->\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"RightWrapped\">\n\t\t\t\t\t\t\t\t\t\t<VisualState.StateTriggers>\n\t\t\t\t\t\t\t\t\t\t\t<local:ControlSizeTrigger x:Name=\"RightWrappedTrigger\"\n\t\t\t\t\t\t\t\t\t\t\t                          MinWidth=\"{ThemeResource SettingsCardWrapNoIconThreshold}\"\n\t\t\t\t\t\t\t\t\t\t\t                          MaxWidth=\"{ThemeResource SettingsCardWrapThreshold}\"\n\t\t\t\t\t\t\t\t\t\t\t                          TargetElement=\"{Binding ElementName=PART_RootGrid}\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.StateTriggers>\n\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.(Grid.Row)\" Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.(Grid.Column)\" Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.HorizontalAlignment\" Value=\"Stretch\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.HorizontalContentAlignment\" Value=\"Left\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"HeaderPanel.Margin\" Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\n\t\t\t\t\t\t\t\t\t<!--  For even smaller widths: the HeaderIcon is collapsed.  -->\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"RightWrappedNoIcon\">\n\t\t\t\t\t\t\t\t\t\t<VisualState.StateTriggers>\n\t\t\t\t\t\t\t\t\t\t\t<local:ControlSizeTrigger x:Name=\"RightWrappedNoIconTrigger\"\n\t\t\t\t\t\t\t\t\t\t\t                          MaxWidth=\"{ThemeResource SettingsCardWrapNoIconThreshold}\"\n\t\t\t\t\t\t\t\t\t\t\t                          CanTrigger=\"{TemplateBinding IsWrapEnabled}\"\n\t\t\t\t\t\t\t\t\t\t\t                          TargetElement=\"{Binding ElementName=PART_RootGrid}\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.StateTriggers>\n\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_HeaderIconPresenterHolder.Visibility\" Value=\"Collapsed\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.(Grid.Row)\" Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.(Grid.Column)\" Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.HorizontalAlignment\" Value=\"Stretch\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.HorizontalContentAlignment\" Value=\"Left\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"HeaderPanel.Margin\" Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\n\t\t\t\t\t\t\t\t\t<!--  Header/Description/Icon collapsed, content is to the left. Great for e.g. Checkboxes  -->\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Left\">\n\t\t\t\t\t\t\t\t\t\t<VisualState.StateTriggers>\n\t\t\t\t\t\t\t\t\t\t\t<local:IsEqualStateTrigger Value=\"{Binding ContentAlignment, RelativeSource={RelativeSource TemplatedParent}}\">\n\t\t\t\t\t\t\t\t\t\t\t\t<local:IsEqualStateTrigger.To>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<local:ContentAlignment>Left</local:ContentAlignment>\n\t\t\t\t\t\t\t\t\t\t\t\t</local:IsEqualStateTrigger.To>\n\t\t\t\t\t\t\t\t\t\t\t</local:IsEqualStateTrigger>\n\t\t\t\t\t\t\t\t\t\t</VisualState.StateTriggers>\n\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_HeaderIconPresenterHolder.Visibility\" Value=\"Collapsed\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_DescriptionPresenter.Visibility\" Value=\"Collapsed\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_HeaderPresenter.Visibility\" Value=\"Collapsed\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.(Grid.Row)\" Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.(Grid.Column)\" Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.HorizontalAlignment\" Value=\"Left\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\n\t\t\t\t\t\t\t\t\t<!--  Similiar to Left, but the HeaderIcon/Header/Description is visible  -->\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Vertical\">\n\t\t\t\t\t\t\t\t\t\t<VisualState.StateTriggers>\n\t\t\t\t\t\t\t\t\t\t\t<local:IsEqualStateTrigger Value=\"{Binding ContentAlignment, RelativeSource={RelativeSource TemplatedParent}}\">\n\t\t\t\t\t\t\t\t\t\t\t\t<local:IsEqualStateTrigger.To>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<local:ContentAlignment>Vertical</local:ContentAlignment>\n\t\t\t\t\t\t\t\t\t\t\t\t</local:IsEqualStateTrigger.To>\n\t\t\t\t\t\t\t\t\t\t\t</local:IsEqualStateTrigger>\n\t\t\t\t\t\t\t\t\t\t</VisualState.StateTriggers>\n\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.(Grid.Row)\" Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.(Grid.Column)\" Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.HorizontalAlignment\" Value=\"Stretch\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.HorizontalContentAlignment\" Value=\"{Binding HorizontalContentAlignment, RelativeSource={RelativeSource TemplatedParent}}\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t</VisualStateGroup>\n\n\t\t\t\t\t\t\t\t<!--  Collapsing the Content presenter whenever it's empty  -->\n\t\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"ContentVisibilityStates\">\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Visible\" />\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Collapsed\">\n\t\t\t\t\t\t\t\t\t\t<VisualState.StateTriggers>\n\t\t\t\t\t\t\t\t\t\t\t<local:IsNullStateTrigger Value=\"{Binding Content, RelativeSource={RelativeSource TemplatedParent}}\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.StateTriggers>\n\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ContentPresenter.Visibility\" Value=\"Collapsed\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t</VisualStateGroup>\n\n\t\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"ContentSpacingStates\">\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"NoContentSpacing\" />\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"ContentSpacing\">\n\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_RootGrid.RowSpacing\" Value=\"{ThemeResource SettingsCardVerticalHeaderContentSpacing}\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t</VisualStateGroup>\n\t\t\t\t\t\t\t</VisualStateManager.VisualStateGroups>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</ControlTemplate>\n\t\t\t\t</Setter.Value>\n\t\t\t</Setter>\n\t\t</Style.Setters>\n\t</Style>\n\n\t<Style x:Key=\"RightAlignedCompactToggleSwitchStyle\"\n\t       BasedOn=\"{StaticResource DefaultToggleSwitchStyle}\"\n\t       TargetType=\"ToggleSwitch\">\n\t\t<Style.Setters>\n\t\t\t<Setter Property=\"MinWidth\" Value=\"0\" />\n\t\t\t<Setter Property=\"Height\" Value=\"36\" />\n\t\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Right\" />\n\t\t\t<Setter Property=\"Template\">\n\t\t\t\t<Setter.Value>\n\t\t\t\t\t<ControlTemplate TargetType=\"ToggleSwitch\">\n\t\t\t\t\t\t<Grid VerticalAlignment=\"Stretch\"\n\t\t\t\t\t\t      Background=\"{TemplateBinding Background}\"\n\t\t\t\t\t\t      BorderBrush=\"{TemplateBinding BorderBrush}\"\n\t\t\t\t\t\t      BorderThickness=\"{TemplateBinding BorderThickness}\"\n\t\t\t\t\t\t      Control.IsTemplateFocusTarget=\"True\"\n\t\t\t\t\t\t      CornerRadius=\"{TemplateBinding CornerRadius}\">\n\t\t\t\t\t\t\t<ContentPresenter x:Name=\"HeaderContentPresenter\"\n\t\t\t\t\t\t\t                  Grid.Row=\"0\"\n\t\t\t\t\t\t\t                  Margin=\"{ThemeResource ToggleSwitchTopHeaderMargin}\"\n\t\t\t\t\t\t\t                  VerticalAlignment=\"Top\"\n\t\t\t\t\t\t\t                  x:DeferLoadStrategy=\"Lazy\"\n\t\t\t\t\t\t\t                  Content=\"{TemplateBinding Header}\"\n\t\t\t\t\t\t\t                  ContentTemplate=\"{TemplateBinding HeaderTemplate}\"\n\t\t\t\t\t\t\t                  Foreground=\"{ThemeResource ToggleSwitchHeaderForeground}\"\n\t\t\t\t\t\t\t                  IsHitTestVisible=\"False\"\n\t\t\t\t\t\t\t                  TextWrapping=\"Wrap\"\n\t\t\t\t\t\t\t                  Visibility=\"Collapsed\" />\n\t\t\t\t\t\t\t<Grid Grid.Row=\"1\"\n\t\t\t\t\t\t\t      HorizontalAlignment=\"Right\"\n\t\t\t\t\t\t\t      VerticalAlignment=\"Center\">\n\t\t\t\t\t\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"12\"\n\t\t\t\t\t\t\t\t\t                  MaxWidth=\"12\" />\n\t\t\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t\t\t</Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t\t<Grid x:Name=\"SwitchAreaGrid\"\n\t\t\t\t\t\t\t\t      Grid.RowSpan=\"3\"\n\t\t\t\t\t\t\t\t      Grid.ColumnSpan=\"3\"\n\t\t\t\t\t\t\t\t      Margin=\"0,5\"\n\t\t\t\t\t\t\t\t      Background=\"{ThemeResource ToggleSwitchContainerBackground}\"\n\t\t\t\t\t\t\t\t      CornerRadius=\"{TemplateBinding CornerRadius}\" />\n\t\t\t\t\t\t\t\t<ContentPresenter x:Name=\"OffContentPresenter\"\n\t\t\t\t\t\t\t\t                  Grid.RowSpan=\"3\"\n\t\t\t\t\t\t\t\t                  HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n\t\t\t\t\t\t\t\t                  VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n\t\t\t\t\t\t\t\t                  Content=\"{TemplateBinding OffContent}\"\n\t\t\t\t\t\t\t\t                  ContentTemplate=\"{TemplateBinding OffContentTemplate}\"\n\t\t\t\t\t\t\t\t                  Foreground=\"{TemplateBinding Foreground}\"\n\t\t\t\t\t\t\t\t                  IsHitTestVisible=\"False\"\n\t\t\t\t\t\t\t\t                  Opacity=\"0\" />\n\t\t\t\t\t\t\t\t<ContentPresenter x:Name=\"OnContentPresenter\"\n\t\t\t\t\t\t\t\t                  Grid.RowSpan=\"3\"\n\t\t\t\t\t\t\t\t                  HorizontalAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n\t\t\t\t\t\t\t\t                  VerticalAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n\t\t\t\t\t\t\t\t                  Content=\"{TemplateBinding OnContent}\"\n\t\t\t\t\t\t\t\t                  ContentTemplate=\"{TemplateBinding OnContentTemplate}\"\n\t\t\t\t\t\t\t\t                  Foreground=\"{TemplateBinding Foreground}\"\n\t\t\t\t\t\t\t\t                  IsHitTestVisible=\"False\"\n\t\t\t\t\t\t\t\t                  Opacity=\"0\" />\n\t\t\t\t\t\t\t\t<Rectangle x:Name=\"OuterBorder\"\n\t\t\t\t\t\t\t\t           Grid.Row=\"1\"\n\t\t\t\t\t\t\t\t           Grid.Column=\"2\"\n\t\t\t\t\t\t\t\t           Width=\"40\"\n\t\t\t\t\t\t\t\t           Height=\"20\"\n\t\t\t\t\t\t\t\t           Fill=\"{ThemeResource ToggleSwitchFillOff}\"\n\t\t\t\t\t\t\t\t           RadiusX=\"10\"\n\t\t\t\t\t\t\t\t           RadiusY=\"10\"\n\t\t\t\t\t\t\t\t           Stroke=\"{ThemeResource ToggleSwitchStrokeOff}\"\n\t\t\t\t\t\t\t\t           StrokeThickness=\"{ThemeResource ToggleSwitchOuterBorderStrokeThickness}\" />\n\t\t\t\t\t\t\t\t<Rectangle x:Name=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t           Grid.Row=\"1\"\n\t\t\t\t\t\t\t\t           Grid.Column=\"2\"\n\t\t\t\t\t\t\t\t           Width=\"40\"\n\t\t\t\t\t\t\t\t           Height=\"20\"\n\t\t\t\t\t\t\t\t           Fill=\"{ThemeResource ToggleSwitchFillOn}\"\n\t\t\t\t\t\t\t\t           Opacity=\"0\"\n\t\t\t\t\t\t\t\t           RadiusX=\"10\"\n\t\t\t\t\t\t\t\t           RadiusY=\"10\"\n\t\t\t\t\t\t\t\t           Stroke=\"{ThemeResource ToggleSwitchStrokeOn}\"\n\t\t\t\t\t\t\t\t           StrokeThickness=\"{ThemeResource ToggleSwitchOnStrokeThickness}\" />\n\t\t\t\t\t\t\t\t<Grid x:Name=\"SwitchKnob\"\n\t\t\t\t\t\t\t\t      Grid.Row=\"1\"\n\t\t\t\t\t\t\t\t      Grid.Column=\"2\"\n\t\t\t\t\t\t\t\t      Width=\"20\"\n\t\t\t\t\t\t\t\t      Height=\"20\"\n\t\t\t\t\t\t\t\t      HorizontalAlignment=\"Left\">\n\t\t\t\t\t\t\t\t\t<Border x:Name=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t        Width=\"12\"\n\t\t\t\t\t\t\t\t\t        Height=\"12\"\n\t\t\t\t\t\t\t\t\t        Margin=\"0,0,3,0\"\n\t\t\t\t\t\t\t\t\t        HorizontalAlignment=\"Right\"\n\t\t\t\t\t\t\t\t\t        Background=\"{ThemeResource ToggleSwitchKnobFillOn}\"\n\t\t\t\t\t\t\t\t\t        BackgroundSizing=\"OuterBorderEdge\"\n\t\t\t\t\t\t\t\t\t        BorderBrush=\"{ThemeResource ToggleSwitchKnobStrokeOn}\"\n\t\t\t\t\t\t\t\t\t        CornerRadius=\"7\"\n\t\t\t\t\t\t\t\t\t        Opacity=\"0\"\n\t\t\t\t\t\t\t\t\t        RenderTransformOrigin=\"0.5, 0.5\">\n\t\t\t\t\t\t\t\t\t\t<Border.RenderTransform>\n\t\t\t\t\t\t\t\t\t\t\t<CompositeTransform />\n\t\t\t\t\t\t\t\t\t\t</Border.RenderTransform>\n\t\t\t\t\t\t\t\t\t</Border>\n\t\t\t\t\t\t\t\t\t<Rectangle x:Name=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t           Width=\"12\"\n\t\t\t\t\t\t\t\t\t           Height=\"12\"\n\t\t\t\t\t\t\t\t\t           Margin=\"3,0,0,0\"\n\t\t\t\t\t\t\t\t\t           HorizontalAlignment=\"Left\"\n\t\t\t\t\t\t\t\t\t           Fill=\"{ThemeResource ToggleSwitchKnobFillOff}\"\n\t\t\t\t\t\t\t\t\t           RadiusX=\"7\"\n\t\t\t\t\t\t\t\t\t           RadiusY=\"7\"\n\t\t\t\t\t\t\t\t\t           RenderTransformOrigin=\"0.5, 0.5\">\n\t\t\t\t\t\t\t\t\t\t<Rectangle.RenderTransform>\n\t\t\t\t\t\t\t\t\t\t\t<CompositeTransform />\n\t\t\t\t\t\t\t\t\t\t</Rectangle.RenderTransform>\n\t\t\t\t\t\t\t\t\t</Rectangle>\n\t\t\t\t\t\t\t\t\t<Grid.RenderTransform>\n\t\t\t\t\t\t\t\t\t\t<TranslateTransform x:Name=\"KnobTranslateTransform\" />\n\t\t\t\t\t\t\t\t\t</Grid.RenderTransform>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Thumb x:Name=\"SwitchThumb\"\n\t\t\t\t\t\t\t\t       Grid.RowSpan=\"3\"\n\t\t\t\t\t\t\t\t       Grid.ColumnSpan=\"3\">\n\t\t\t\t\t\t\t\t\t<Thumb.Template>\n\t\t\t\t\t\t\t\t\t\t<ControlTemplate TargetType=\"Thumb\">\n\t\t\t\t\t\t\t\t\t\t\t<Rectangle Fill=\"Transparent\" />\n\t\t\t\t\t\t\t\t\t\t</ControlTemplate>\n\t\t\t\t\t\t\t\t\t</Thumb.Template>\n\t\t\t\t\t\t\t\t</Thumb>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<VisualStateManager.VisualStateGroups>\n\t\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"CommonStates\">\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Normal\">\n\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"OuterBorder\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Stroke\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchStrokeOff}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"OuterBorder\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Fill\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchFillOff}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Fill\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchKnobFillOff}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchKnobFillOn}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Fill\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchFillOn}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Stroke\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchStrokeOn}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchAreaGrid\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchContainerBackground}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Width\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"12\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Height\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"12\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Width\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"12\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Height\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"12\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"PointerOver\">\n\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t<ColorAnimationUsingKeyFrames Storyboard.TargetName=\"OuterBorder\"\n\t\t\t\t\t\t\t\t\t\t\t                              Storyboard.TargetProperty=\"(Shape.Stroke).(SolidColorBrush.Color)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearColorKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                     Value=\"{ThemeResource ToggleSwitchStrokeOffPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ColorAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ColorAnimationUsingKeyFrames Storyboard.TargetName=\"OuterBorder\"\n\t\t\t\t\t\t\t\t\t\t\t                              Storyboard.TargetProperty=\"(Shape.Fill).(SolidColorBrush.Color)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearColorKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                     Value=\"{ThemeResource ToggleSwitchFillOffPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ColorAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Fill\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchKnobFillOffPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchKnobFillOnPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Fill\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchFillOnPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Stroke\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchStrokeOnPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ColorAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchAreaGrid\"\n\t\t\t\t\t\t\t\t\t\t\t                              Storyboard.TargetProperty=\"(Panel.Background).(SolidColorBrush.Color)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearColorKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                     Value=\"{ThemeResource ToggleSwitchContainerBackgroundPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ColorAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Width\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"14\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Height\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"14\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Width\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"14\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Height\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"14\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Pressed\">\n\t\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"SwitchKnobOn.HorizontalAlignment\" Value=\"Right\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"SwitchKnobOn.Margin\" Value=\"0,0,3,0\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"SwitchKnobOff.HorizontalAlignment\" Value=\"Left\" />\n\t\t\t\t\t\t\t\t\t\t\t<Setter Target=\"SwitchKnobOff.Margin\" Value=\"3,0,0,0\" />\n\t\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t<ColorAnimationUsingKeyFrames Storyboard.TargetName=\"OuterBorder\"\n\t\t\t\t\t\t\t\t\t\t\t                              Storyboard.TargetProperty=\"(Shape.Stroke).(SolidColorBrush.Color)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearColorKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                     Value=\"{ThemeResource ToggleSwitchStrokeOffPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ColorAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ColorAnimationUsingKeyFrames Storyboard.TargetName=\"OuterBorder\"\n\t\t\t\t\t\t\t\t\t\t\t                              Storyboard.TargetProperty=\"(Shape.Fill).(SolidColorBrush.Color)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearColorKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                     Value=\"{ThemeResource ToggleSwitchFillOffPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ColorAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Fill\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchFillOnPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Stroke\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchStrokeOnPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Fill\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchKnobFillOffPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchKnobFillOnPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ColorAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchAreaGrid\"\n\t\t\t\t\t\t\t\t\t\t\t                              Storyboard.TargetProperty=\"(Panel.Background).(SolidColorBrush.Color)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearColorKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                     Value=\"{ThemeResource ToggleSwitchContainerBackgroundPressed}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ColorAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Width\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"17\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Height\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"14\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Width\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"17\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Height\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"14\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Disabled\">\n\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"HeaderContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchHeaderForegroundDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"OffContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchContentForegroundDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"OnContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchContentForegroundDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ColorAnimationUsingKeyFrames Storyboard.TargetName=\"OuterBorder\"\n\t\t\t\t\t\t\t\t\t\t\t                              Storyboard.TargetProperty=\"(Shape.Stroke).(SolidColorBrush.Color)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearColorKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                     Value=\"{ThemeResource ToggleSwitchStrokeOffDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ColorAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ColorAnimationUsingKeyFrames Storyboard.TargetName=\"OuterBorder\"\n\t\t\t\t\t\t\t\t\t\t\t                              Storyboard.TargetProperty=\"(Shape.Fill).(SolidColorBrush.Color)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearColorKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                     Value=\"{ThemeResource ToggleSwitchFillOffDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ColorAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Fill\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchFillOnDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Stroke\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchStrokeOnDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Fill\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchKnobFillOffDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ToggleSwitchKnobFillOnDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<ColorAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchAreaGrid\"\n\t\t\t\t\t\t\t\t\t\t\t                              Storyboard.TargetProperty=\"(Panel.Background).(SolidColorBrush.Color)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearColorKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                     Value=\"{ThemeResource ToggleSwitchContainerBackgroundDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t\t</ColorAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Width\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlNormalAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"12\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Height\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlNormalAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"12\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Width\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlNormalAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"12\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames EnableDependentAnimation=\"True\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Height\">\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"{StaticResource ControlFastOutSlowInKeySpline}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"{StaticResource ControlNormalAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"12\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t</VisualStateGroup>\n\t\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"ToggleStates\">\n\t\t\t\t\t\t\t\t\t<VisualStateGroup.Transitions>\n\t\t\t\t\t\t\t\t\t\t<VisualTransition x:Name=\"DraggingToOnTransition\"\n\t\t\t\t\t\t\t\t\t\t                  GeneratedDuration=\"0\"\n\t\t\t\t\t\t\t\t\t\t                  From=\"Dragging\"\n\t\t\t\t\t\t\t\t\t\t                  To=\"On\">\n\t\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t\t<RepositionThemeAnimation FromHorizontalOffset=\"{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.KnobCurrentToOnOffset}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                          TargetName=\"SwitchKnob\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"OuterBorder\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t\t</VisualTransition>\n\t\t\t\t\t\t\t\t\t\t<VisualTransition x:Name=\"OnToDraggingTransition\"\n\t\t\t\t\t\t\t\t\t\t                  GeneratedDuration=\"0\"\n\t\t\t\t\t\t\t\t\t\t                  From=\"On\"\n\t\t\t\t\t\t\t\t\t\t                  To=\"Dragging\">\n\t\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t\t</VisualTransition>\n\t\t\t\t\t\t\t\t\t\t<VisualTransition x:Name=\"DraggingToOffTransition\"\n\t\t\t\t\t\t\t\t\t\t                  GeneratedDuration=\"0\"\n\t\t\t\t\t\t\t\t\t\t                  From=\"Dragging\"\n\t\t\t\t\t\t\t\t\t\t                  To=\"Off\">\n\t\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t\t<RepositionThemeAnimation FromHorizontalOffset=\"{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.KnobCurrentToOffOffset}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                          TargetName=\"SwitchKnob\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t\t</VisualTransition>\n\t\t\t\t\t\t\t\t\t\t<VisualTransition x:Name=\"OnToOffTransition\"\n\t\t\t\t\t\t\t\t\t\t                  GeneratedDuration=\"0\"\n\t\t\t\t\t\t\t\t\t\t                  From=\"On\"\n\t\t\t\t\t\t\t\t\t\t                  To=\"Off\">\n\t\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t\t<RepositionThemeAnimation FromHorizontalOffset=\"{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.KnobOnToOffOffset}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                          TargetName=\"SwitchKnob\" />\n\t\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t\t</VisualTransition>\n\t\t\t\t\t\t\t\t\t\t<VisualTransition x:Name=\"OffToOnTransition\"\n\t\t\t\t\t\t\t\t\t\t                  GeneratedDuration=\"0\"\n\t\t\t\t\t\t\t\t\t\t                  From=\"Off\"\n\t\t\t\t\t\t\t\t\t\t                  To=\"On\">\n\t\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t\t<RepositionThemeAnimation FromHorizontalOffset=\"{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.KnobOffToOnOffset}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                          TargetName=\"SwitchKnob\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"OuterBorder\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t\t</VisualTransition>\n\t\t\t\t\t\t\t\t\t</VisualStateGroup.Transitions>\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Dragging\" />\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"Off\" />\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"On\">\n\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimation Storyboard.TargetName=\"KnobTranslateTransform\"\n\t\t\t\t\t\t\t\t\t\t\t                 Storyboard.TargetProperty=\"X\"\n\t\t\t\t\t\t\t\t\t\t\t                 To=\"20\"\n\t\t\t\t\t\t\t\t\t\t\t                 Duration=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobBounds\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"OuterBorder\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOn\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"1\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"SwitchKnobOff\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Opacity\">\n\t\t\t\t\t\t\t\t\t\t\t\t<LinearDoubleKeyFrame KeyTime=\"{StaticResource ControlFasterAnimationDuration}\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t</VisualStateGroup>\n\t\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"ContentStates\">\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"OffContent\">\n\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimation Storyboard.TargetName=\"OffContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                 Storyboard.TargetProperty=\"Opacity\"\n\t\t\t\t\t\t\t\t\t\t\t                 To=\"1\"\n\t\t\t\t\t\t\t\t\t\t\t                 Duration=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"OffContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"IsHitTestVisible\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame.Value>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<x:Boolean>True</x:Boolean>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</DiscreteObjectKeyFrame.Value>\n\t\t\t\t\t\t\t\t\t\t\t\t</DiscreteObjectKeyFrame>\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t\t<VisualState x:Name=\"OnContent\">\n\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimation Storyboard.TargetName=\"OnContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                 Storyboard.TargetProperty=\"Opacity\"\n\t\t\t\t\t\t\t\t\t\t\t                 To=\"1\"\n\t\t\t\t\t\t\t\t\t\t\t                 Duration=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"OnContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"IsHitTestVisible\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame.Value>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<x:Boolean>True</x:Boolean>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</DiscreteObjectKeyFrame.Value>\n\t\t\t\t\t\t\t\t\t\t\t\t</DiscreteObjectKeyFrame>\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t</VisualStateGroup>\n\t\t\t\t\t\t\t</VisualStateManager.VisualStateGroups>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</ControlTemplate>\n\t\t\t\t</Setter.Value>\n\t\t\t</Setter>\n\t\t</Style.Setters>\n\t</Style>\n</ResourceDictionary>\n"
  },
  {
    "path": "src/Magpie/SettingsCard.cpp",
    "content": "// 移植自 https://github.com/CommunityToolkit/Windows/tree/efbaf965029806fe29e02a6421af3c8f434e1460/components/SettingsControls/src/SettingsCard\n\n#include \"pch.h\"\n#include \"SettingsCard.h\"\n#if __has_include(\"SettingsCard.g.cpp\")\n#include \"SettingsCard.g.cpp\"\n#endif\n#if __has_include(\"SettingsCardStyle.g.cpp\")\n#include \"SettingsCardStyle.g.cpp\"\n#endif\n#include <winrt/Windows.UI.Input.h>\n\nusing namespace winrt;\nusing namespace Windows::UI::Xaml;\nusing namespace Windows::UI::Xaml::Controls;\nusing namespace Windows::UI::Xaml::Input;\n\nnamespace winrt::Magpie::implementation {\n\n// static constexpr const wchar_t* CommonStates = L\"CommonStates\";\nstatic constexpr const wchar_t* NormalState = L\"Normal\";\nstatic constexpr const wchar_t* PointerOverState = L\"PointerOver\";\nstatic constexpr const wchar_t* PressedState = L\"Pressed\";\nstatic constexpr const wchar_t* DisabledState = L\"Disabled\";\n\nstatic constexpr const wchar_t* ContentAlignmentStates = L\"ContentAlignmentStates\";\n// static constexpr const wchar_t* RightState = L\"Right\";\nstatic constexpr const wchar_t* RightWrappedState = L\"RightWrapped\";\nstatic constexpr const wchar_t* RightWrappedNoIconState = L\"RightWrappedNoIcon\";\n// static constexpr const wchar_t* LeftState = L\"Left\";\nstatic constexpr const wchar_t* VerticalState = L\"Vertical\";\n\n// static constexpr const wchar_t* ContentSpacingStates = L\"ContentSpacingStates\";\nstatic constexpr const wchar_t* NoContentSpacingState = L\"NoContentSpacing\";\nstatic constexpr const wchar_t* ContentSpacingState = L\"ContentSpacing\";\n\nstatic constexpr const wchar_t* RootGrid = L\"PART_RootGrid\";\nstatic constexpr const wchar_t* ActionIconPresenterHolder = L\"PART_ActionIconPresenterHolder\";\nstatic constexpr const wchar_t* HeaderPresenter = L\"PART_HeaderPresenter\";\nstatic constexpr const wchar_t* DescriptionPresenter = L\"PART_DescriptionPresenter\";\nstatic constexpr const wchar_t* HeaderIconPresenterHolder = L\"PART_HeaderIconPresenterHolder\";\n\nstatic constexpr const wchar_t* RightWrappedTrigger = L\"RightWrappedTrigger\";\nstatic constexpr const wchar_t* RightWrappedNoIconTrigger = L\"RightWrappedNoIconTrigger\";\n\nDependencyProperty SettingsCard::_headerProperty{ nullptr };\nDependencyProperty SettingsCard::_descriptionProperty{ nullptr };\nDependencyProperty SettingsCard::_headerIconProperty{ nullptr };\nDependencyProperty SettingsCard::_actionIconProperty{ nullptr };\nDependencyProperty SettingsCard::_isClickEnabledProperty{ nullptr };\nDependencyProperty SettingsCard::_contentAlignmentProperty{ nullptr };\nDependencyProperty SettingsCard::_isActionIconVisibleProperty{ nullptr };\nDependencyProperty SettingsCard::_isWrapEnabledProperty{ nullptr };\n\nSettingsCard::SettingsCard() {\n\tDefaultStyleKey(box_value(GetRuntimeClassName()));\n}\n\nSettingsCard::~SettingsCard() {\n\t// 不知为何必须手动释放 StateTriggers，否则会内存泄露\n\tif (auto stateGroup = GetTemplateChild(ContentAlignmentStates)) {\n\t\tfor (VisualState state : stateGroup.try_as<VisualStateGroup>().States()) {\n\t\t\tstate.StateTriggers().Clear();\n\t\t}\n\t}\n}\n\nvoid SettingsCard::RegisterDependencyProperties() {\n\t_headerProperty = DependencyProperty::Register(\n\t\tL\"Header\",\n\t\txaml_typename<IInspectable>(),\n\t\txaml_typename<class_type>(),\n\t\tPropertyMetadata(nullptr, [](DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {\n\t\t\tget_self<SettingsCard>(sender.try_as<class_type>())->_OnHeaderChanged();\n\t\t})\n\t);\n\n\t_descriptionProperty = DependencyProperty::Register(\n\t\tL\"Description\",\n\t\txaml_typename<IInspectable>(),\n\t\txaml_typename<class_type>(),\n\t\tPropertyMetadata(nullptr, [](DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {\n\t\t\tget_self<SettingsCard>(sender.try_as<class_type>())->_OnDescriptionChanged();\n\t\t})\n\t);\n\n\t_headerIconProperty = DependencyProperty::Register(\n\t\tL\"HeaderIcon\",\n\t\txaml_typename<IconElement>(),\n\t\txaml_typename<class_type>(),\n\t\tPropertyMetadata(nullptr, [](DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {\n\t\t\tget_self<SettingsCard>(sender.try_as<class_type>())->_OnHeaderIconChanged();\n\t\t})\n\t);\n\n\t_actionIconProperty = DependencyProperty::Register(\n\t\tL\"ActionIcon\",\n\t\txaml_typename<IconElement>(),\n\t\txaml_typename<class_type>(),\n\t\tPropertyMetadata(box_value(L\"\\ue974\"))\n\t);\n\n\t_isClickEnabledProperty = DependencyProperty::Register(\n\t\tL\"IsClickEnabled\",\n\t\txaml_typename<bool>(),\n\t\txaml_typename<class_type>(),\n\t\tPropertyMetadata(box_value(false), [](DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {\n\t\t\tget_self<SettingsCard>(sender.try_as<class_type>())->_OnIsClickEnabledChanged();\n\t\t})\n\t);\n\n\t_contentAlignmentProperty = DependencyProperty::Register(\n\t\tL\"ContentAlignment\",\n\t\txaml_typename<Magpie::ContentAlignment>(),\n\t\txaml_typename<class_type>(),\n\t\tPropertyMetadata(box_value(ContentAlignment::Right))\n\t);\n\n\t_isActionIconVisibleProperty = DependencyProperty::Register(\n\t\tL\"IsActionIconVisible\",\n\t\txaml_typename<bool>(),\n\t\txaml_typename<class_type>(),\n\t\tPropertyMetadata(box_value(true), [](DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {\n\t\t\tget_self<SettingsCard>(sender.try_as<class_type>())->_OnActionIconChanged();\n\t\t})\n\t);\n\n\t_isWrapEnabledProperty = DependencyProperty::Register(\n\t\tL\"IsWrapEnabled\",\n\t\txaml_typename<bool>(),\n\t\txaml_typename<class_type>(),\n\t\tPropertyMetadata(box_value(false), [](DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {\n\t\t\tget_self<SettingsCard>(sender.try_as<class_type>())->_OnIsWrapEnabledChanged();\n\t\t})\n\t);\n}\n\nvoid SettingsCard::OnApplyTemplate() {\n\tbase_type::OnApplyTemplate();\n\n\t// https://github.com/microsoft/microsoft-ui-xaml/issues/7792\n\t// 对于 Content，模板中的样式不起作用\n\tauto resources = Resources();\n\tfor (const auto& [key, value] : GetTemplateChild(RootGrid).try_as<Grid>().Resources()) {\n\t\tresources.Insert(key, value);\n\t}\n\n\t_OnIsWrapEnabledChanged();\n\n\t_contentAlignmentStatesChangedRevoker.revoke();\n\t_sizeChangedRevoker.revoke();\n\t_isEnabledChangedRevoker.revoke();\n\n\t_OnActionIconChanged();\n\t_OnHeaderChanged();\n\t_OnHeaderIconChanged();\n\t_OnDescriptionChanged();\n\t_OnIsClickEnabledChanged();\n\n\tVisualStateGroup contentAlignmentStatesGroup = GetTemplateChild(ContentAlignmentStates).try_as<VisualStateGroup>();\n\t_contentAlignmentStatesChangedRevoker = contentAlignmentStatesGroup.CurrentStateChanged(auto_revoke, [this](IInspectable const&, VisualStateChangedEventArgs const& args) {\n\t\t_CheckVerticalSpacingState(args.NewState());\n\t});\n\n\t// 修复启动时的动画错误\n\t_sizeChangedRevoker = SizeChanged(auto_revoke, [this, contentAlignmentStatesGroup(std::move(contentAlignmentStatesGroup))](IInspectable const&, SizeChangedEventArgs const&) {\n\t\t_CheckVerticalSpacingState(contentAlignmentStatesGroup.CurrentState());\n\t});\n\n\tVisualStateManager::GoToState(*this, IsEnabled() ? NormalState : DisabledState, true);\n\t_isEnabledChangedRevoker = IsEnabledChanged(auto_revoke, [this](IInspectable const&, DependencyPropertyChangedEventArgs const&) {\n\t\tVisualStateManager::GoToState(*this, IsEnabled() ? NormalState : DisabledState, true);\n\t});\n}\n\nvoid SettingsCard::OnPointerPressed(PointerRoutedEventArgs const& args) {\n\t// 忽略鼠标右键\n\tif (IsClickEnabled() && !(args.Pointer().PointerDeviceType() == Windows::Devices::Input::PointerDeviceType::Mouse && args.GetCurrentPoint(*this).Properties().PointerUpdateKind() == Windows::UI::Input::PointerUpdateKind::RightButtonPressed)) {\n\t\tbase_type::OnPointerPressed(args);\n\t\tVisualStateManager::GoToState(*this, PressedState, true);\n\n\t\t_isCursorCaptured = true;\n\t}\n}\n\nvoid SettingsCard::OnPointerReleased(PointerRoutedEventArgs const& args) {\n\tif (_isCursorCaptured && IsClickEnabled()) {\n\t\tbase_type::OnPointerReleased(args);\n\t\tVisualStateManager::GoToState(*this, _isCursorOnControl ? PointerOverState : NormalState, true);\n\t}\n\n\t_isCursorCaptured = false;\n}\n\nvoid SettingsCard::OnKeyDown(KeyRoutedEventArgs const& args) {\n\t// XAML Islands 中 ButtonBase 会吞掉空格和回车，UWP 却没有这个问题。这里使子树中的 TextBox\n\t// 能正常工作。https://learn.microsoft.com/en-us/windows/apps/develop/input/keyboard-events\n\t// 记录了按钮在 OnKeyDown 中处理空格和回车。\n\tIInspectable focusedElem = FocusManager::GetFocusedElement(XamlRoot());\n\tif (!focusedElem || !focusedElem.try_as<TextBox>()) {\n\t\tbase_type::OnKeyDown(args);\n\t}\n}\n\nstatic bool IsNotEmpty(IInspectable const& value) noexcept {\n\tif (!value) {\n\t\treturn false;\n\t}\n\n\t// 空字符串会使 ContentPresenter 尝试显示 Content 导致崩溃，因此做额外的检查\n\tstd::optional<hstring> str = value.try_as<hstring>();\n\treturn !str || !str->empty();\n}\n\nvoid SettingsCard::_OnHeaderChanged() const {\n\tif (FrameworkElement headerPresenter = GetTemplateChild(HeaderPresenter).try_as<FrameworkElement>()) {\n\t\theaderPresenter.Visibility(IsNotEmpty(Header()) ? Visibility::Visible : Visibility::Collapsed);\n\t}\n}\n\nvoid SettingsCard::_OnDescriptionChanged() const {\n\tif (FrameworkElement descriptionPresenter = GetTemplateChild(DescriptionPresenter).try_as<FrameworkElement>()) {\n\t\tdescriptionPresenter.Visibility(IsNotEmpty(Description()) ? Visibility::Visible : Visibility::Collapsed);\n\t}\n}\n\nvoid SettingsCard::_OnHeaderIconChanged() const {\n\tif (FrameworkElement headerIconPresenter = GetTemplateChild(HeaderIconPresenterHolder).try_as<FrameworkElement>()) {\n\t\theaderIconPresenter.Visibility(HeaderIcon() ? Visibility::Visible : Visibility::Collapsed);\n\t}\n}\n\nvoid SettingsCard::_OnIsClickEnabledChanged() {\n\t_OnActionIconChanged();\n\n\tif (IsClickEnabled()) {\n\t\t_EnableButtonInteraction();\n\t} else {\n\t\t_DisableButtonInteraction();\n\t}\n}\n\nvoid SettingsCard::_OnActionIconChanged() const {\n\tif (FrameworkElement actionIconPresenter = GetTemplateChild(ActionIconPresenterHolder).try_as<FrameworkElement>()) {\n\t\tif (IsClickEnabled() && IsActionIconVisible()) {\n\t\t\tactionIconPresenter.Visibility(Visibility::Visible);\n\t\t} else {\n\t\t\tactionIconPresenter.Visibility(Visibility::Collapsed);\n\t\t}\n\t}\n}\n\nvoid SettingsCard::_OnIsWrapEnabledChanged() const {\n\tauto trigger1 = GetTemplateChild(RightWrappedTrigger);\n\tauto trigger2 = GetTemplateChild(RightWrappedNoIconTrigger);\n\n\tif (trigger1 && trigger2) {\n\t\t// CanTrigger 无法使用 TemplateBinding?\n\t\tconst bool isWrapEnabled = IsWrapEnabled();\n\t\ttrigger1.try_as<ControlSizeTrigger>().CanTrigger(isWrapEnabled);\n\t\ttrigger2.try_as<ControlSizeTrigger>().CanTrigger(isWrapEnabled);\n\t}\n}\n\nvoid SettingsCard::_CheckVerticalSpacingState(VisualState const& s) {\n\t// On state change, checking if the Content should be wrapped (e.g. when the card is made smaller or the ContentAlignment is set to Vertical). If the Content and the Header or Description are not null, we add spacing between the Content and the Header/Description.\n\n\tconst hstring stateName = s ? s.Name() : hstring();\n\tif (!stateName.empty() && (stateName == RightWrappedState || stateName == RightWrappedNoIconState ||\n\t\tstateName == VerticalState) && Content() && (IsNotEmpty(Header()) || IsNotEmpty(Description()))) {\n\t\tVisualStateManager::GoToState(*this, ContentSpacingState, true);\n\t} else {\n\t\tVisualStateManager::GoToState(*this, NoContentSpacingState, true);\n\t}\n}\n\nvoid SettingsCard::_EnableButtonInteraction() {\n\t_DisableButtonInteraction();\n\n\tIsTabStop(true);\n\n\t_pointerEnteredRevoker = PointerEntered(auto_revoke, [this](IInspectable const&, PointerRoutedEventArgs const&) {\n\t\tVisualStateManager::GoToState(*this, _isCursorCaptured ? PressedState : PointerOverState, true);\n\t\t_isCursorOnControl = true;\n\t});\n\n\t_pointerExitedRevoker = PointerExited(auto_revoke, [this](IInspectable const&, PointerRoutedEventArgs const&) {\n\t\tVisualStateManager::GoToState(*this, NormalState, true);\n\t\t_isCursorOnControl = false;\n\t});\n\n\tauto goToNormalState = [this](IInspectable const&, PointerRoutedEventArgs const&) {\n\t\tVisualStateManager::GoToState(*this, NormalState, true);\n\t};\n\n\t_pointerCaptureLostRevoker = PointerCaptureLost(auto_revoke, goToNormalState);\n\t_pointerCanceledRevoker = PointerCanceled(auto_revoke, goToNormalState);\n\n\t_previewKeyDownRevoker = PreviewKeyDown(auto_revoke, [this](IInspectable const&, KeyRoutedEventArgs const& args) {\n\t\tconst VirtualKey key = args.Key();\n\t\tif (key == VirtualKey::Enter || key == VirtualKey::Space || key == VirtualKey::GamepadA) {\n\t\t\t// Check if the active focus is on the card itself - only then we show the pressed state.\n\t\t\tif (FocusManager::GetFocusedElement(XamlRoot()) == *this) {\n\t\t\t\tVisualStateManager::GoToState(*this, PressedState, true);\n\t\t\t}\n\t\t}\n\t});\n\n\t_previewKeyUpRevoker = PreviewKeyUp(auto_revoke, [this](IInspectable const&, KeyRoutedEventArgs const& args) {\n\t\tconst VirtualKey key = args.Key();\n\t\tif (key == VirtualKey::Enter || key == VirtualKey::Space || key == VirtualKey::GamepadA) {\n\t\t\tVisualStateManager::GoToState(*this, NormalState, true);\n\t\t}\n\t});\n}\n\nvoid SettingsCard::_DisableButtonInteraction() {\n\tIsTabStop(false);\n\t_pointerEnteredRevoker.revoke();\n\t_pointerExitedRevoker.revoke();\n\t_pointerCaptureLostRevoker.revoke();\n\t_pointerCanceledRevoker.revoke();\n\t_previewKeyDownRevoker.revoke();\n\t_previewKeyUpRevoker.revoke();\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/SettingsCard.h",
    "content": "#pragma once\n#include \"SettingsCard.g.h\"\n#include \"SettingsCardStyle.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct SettingsCard : SettingsCardT<SettingsCard> {\n\tSettingsCard();\n\t~SettingsCard();\n\n\tstatic void RegisterDependencyProperties();\n\tstatic DependencyProperty HeaderProperty() { return _headerProperty; }\n\tstatic DependencyProperty DescriptionProperty() { return _descriptionProperty; }\n\tstatic DependencyProperty HeaderIconProperty() { return _headerIconProperty; }\n\tstatic DependencyProperty ActionIconProperty() { return _actionIconProperty; }\n\tstatic DependencyProperty IsClickEnabledProperty() { return _isClickEnabledProperty; }\n\tstatic DependencyProperty ContentAlignmentProperty() { return _contentAlignmentProperty; }\n\tstatic DependencyProperty IsActionIconVisibleProperty() { return _isActionIconVisibleProperty; }\n\tstatic DependencyProperty IsWrapEnabledProperty() { return _isWrapEnabledProperty; }\n\n\tIInspectable Header() const { return GetValue(_headerProperty); }\n\tvoid Header(IInspectable const& value) const { SetValue(_headerProperty, value); }\n\n\tIInspectable Description() const { return GetValue(_descriptionProperty); }\n\tvoid Description(IInspectable const& value) const { SetValue(_descriptionProperty, value); }\n\n\tIconElement HeaderIcon() const { return GetValue(_headerIconProperty).try_as<IconElement>(); }\n\tvoid HeaderIcon(IconElement const& value) const { SetValue(_headerIconProperty, value); }\n\n\tIconElement ActionIcon() const { return GetValue(_actionIconProperty).try_as<IconElement>(); }\n\tvoid ActionIcon(IconElement const& value) const { SetValue(_actionIconProperty, value); }\n\n\tbool IsClickEnabled() const { return GetValue(_isClickEnabledProperty).try_as<bool>().value(); }\n\tvoid IsClickEnabled(bool value) const { SetValue(_isClickEnabledProperty, box_value(value)); }\n\n\tContentAlignment ContentAlignment() const { return GetValue(_contentAlignmentProperty).try_as<Magpie::ContentAlignment>().value(); }\n\tvoid ContentAlignment(Magpie::ContentAlignment value) const { SetValue(_contentAlignmentProperty, box_value(value)); }\n\n\tbool IsActionIconVisible() const { return GetValue(_isActionIconVisibleProperty).try_as<bool>().value(); }\n\tvoid IsActionIconVisible(bool value) const { SetValue(_isActionIconVisibleProperty, box_value(value)); }\n\n\tbool IsWrapEnabled() const { return GetValue(_isWrapEnabledProperty).try_as<bool>().value(); }\n\tvoid IsWrapEnabled(bool value) const { SetValue(_isWrapEnabledProperty, box_value(value)); }\n\n\tvoid OnApplyTemplate();\n\n\tvoid OnPointerPressed(Input::PointerRoutedEventArgs const& args);\n\n\tvoid OnPointerReleased(Input::PointerRoutedEventArgs const& args);\n\n\tvoid OnKeyDown(Input::KeyRoutedEventArgs const& args);\n\nprivate:\n\tstatic DependencyProperty _headerProperty;\n\tstatic DependencyProperty _descriptionProperty;\n\tstatic DependencyProperty _headerIconProperty;\n\tstatic DependencyProperty _actionIconProperty;\n\tstatic DependencyProperty _isClickEnabledProperty;\n\tstatic DependencyProperty _contentAlignmentProperty;\n\tstatic DependencyProperty _isActionIconVisibleProperty;\n\tstatic DependencyProperty _isWrapEnabledProperty;\n\n\tvoid _OnHeaderChanged() const;\n\tvoid _OnDescriptionChanged() const;\n\tvoid _OnHeaderIconChanged() const;\n\tvoid _OnIsClickEnabledChanged();\n\tvoid _OnActionIconChanged() const;\n\tvoid _OnIsWrapEnabledChanged() const;\n\n\tvoid _CheckVerticalSpacingState(VisualState const& s);\n\n\tvoid _EnableButtonInteraction();\n\n\tvoid _DisableButtonInteraction();\n\n\tIsEnabledChanged_revoker _isEnabledChangedRevoker;\n\tVisualStateGroup::CurrentStateChanged_revoker _contentAlignmentStatesChangedRevoker;\n\tSizeChanged_revoker _sizeChangedRevoker;\n\n\tUIElement::PointerEntered_revoker _pointerEnteredRevoker;\n\tUIElement::PointerExited_revoker _pointerExitedRevoker;\n\tUIElement::PointerCaptureLost_revoker _pointerCaptureLostRevoker;\n\tUIElement::PointerCanceled_revoker _pointerCanceledRevoker;\n\tUIElement::PreviewKeyDown_revoker _previewKeyDownRevoker;\n\tUIElement::PreviewKeyUp_revoker _previewKeyUpRevoker;\n\n\tbool _isCursorCaptured = false;\n\tbool _isCursorOnControl = false;\n};\n\nstruct SettingsCardStyle : SettingsCardStyleT<SettingsCardStyle> {};\n\n}\n\nBASIC_FACTORY(SettingsCard)\nBASIC_FACTORY(SettingsCardStyle)\n"
  },
  {
    "path": "src/Magpie/SettingsCard.idl",
    "content": "namespace Magpie{\n\tenum ContentAlignment {\n\t\t// The Content is aligned to the right. Default state.\n\t\tRight,\n\t\t// The Content is left-aligned while the Header, HeaderIcon and Description are collapsed.\n\t\t// This is commonly used for Content types such as CheckBoxes, RadioButtons and custom layouts.\n\t\tLeft,\n\t\t// The Content is vertically aligned.\n\t\tVertical\n\t};\n\n\t[Windows.UI.Xaml.TemplateVisualState(\"NormalState\", \"CommonStates\")]\n\t[Windows.UI.Xaml.TemplateVisualState(\"PointerOverState\", \"CommonStates\")]\n\t[Windows.UI.Xaml.TemplateVisualState(\"PressedState\", \"CommonStates\")]\n\t[Windows.UI.Xaml.TemplateVisualState(\"DisabledState\", \"CommonStates\")]\n\t\n\t[Windows.UI.Xaml.TemplateVisualState(\"RightState\", \"ContentAlignmentStates\")]\n\t[Windows.UI.Xaml.TemplateVisualState(\"RightWrappedState\", \"ContentAlignmentStates\")]\n\t[Windows.UI.Xaml.TemplateVisualState(\"RightWrappedNoIconState\", \"ContentAlignmentStates\")]\n\t[Windows.UI.Xaml.TemplateVisualState(\"LeftState\", \"ContentAlignmentStates\")]\n\t[Windows.UI.Xaml.TemplateVisualState(\"VerticalState\", \"ContentAlignmentStates\")]\n\t\n\t[Windows.UI.Xaml.TemplateVisualState(\"NoContentSpacingState\", \"ContentSpacingStates\")]\n\t[Windows.UI.Xaml.TemplateVisualState(\"ContentSpacingState\", \"ContentSpacingStates\")]\n\truntimeclass SettingsCard : Windows.UI.Xaml.Controls.Primitives.ButtonBase {\n\t\tSettingsCard();\n\n\t\tstatic Windows.UI.Xaml.DependencyProperty HeaderProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty DescriptionProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty HeaderIconProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty ActionIconProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty IsClickEnabledProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty ContentAlignmentProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty IsActionIconVisibleProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty IsWrapEnabledProperty { get; };\n\n\t\tObject Header;\n\t\tObject Description;\n\t\tWindows.UI.Xaml.Controls.IconElement HeaderIcon;\n\t\tWindows.UI.Xaml.Controls.IconElement ActionIcon;\n\t\tBoolean IsClickEnabled;\n\t\tContentAlignment ContentAlignment;\n\t\tBoolean IsActionIconVisible;\n\t\tBoolean IsWrapEnabled;\n\t}\n\n\t[default_interface]\n\truntimeclass SettingsCardStyle : Windows.UI.Xaml.ResourceDictionary {\n\t\tSettingsCardStyle();\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/SettingsExpander.Resource.xaml",
    "content": "<!--  移植自 https://github.com/CommunityToolkit/Windows/blob/efbaf965029806fe29e02a6421af3c8f434e1460/components/SettingsControls/src/SettingsExpander/SettingsExpander.xaml  -->\n<!--  Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information.  -->\n<!--  26100 SDK 存在 bug，导致所有 XAML 文件都必须指定 x:Class，一旦修复应还原更改  -->\n<ResourceDictionary x:Class=\"Magpie.SettingsExpanderStyle\"\n                    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n                    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n                    xmlns:animatedvisuals=\"using:Microsoft.UI.Xaml.Controls.AnimatedVisuals\"\n                    xmlns:local=\"using:Magpie\"\n                    xmlns:muxc=\"using:Microsoft.UI.Xaml.Controls\">\n\n\t<x:String x:Key=\"SettingsExpanderChevronToolTip\">Show all settings</x:String>\n\t<Thickness x:Key=\"SettingsExpanderHeaderPadding\">16,16,4,16</Thickness>\n\t<Thickness x:Key=\"SettingsExpanderItemPadding\">58,8,44,8</Thickness>\n\t<Thickness x:Key=\"SettingsExpanderItemBorderThickness\">0,1,0,0</Thickness>\n\t<Thickness x:Key=\"ClickableSettingsExpanderItemPadding\">58,8,16,8</Thickness>\n\t<x:Double x:Key=\"SettingsExpanderContentMinHeight\">16</x:Double>\n\t<x:Double x:Key=\"SettingsExpanderChevronButtonWidth\">32</x:Double>\n\t<x:Double x:Key=\"SettingsExpanderChevronButtonHeight\">32</x:Double>\n\n\t<local:SettingsExpanderCornerRadiusConverter x:Key=\"SettingsExpanderCornerRadiusConverter\" />\n\n\t<Style x:Key=\"DefaultSettingsExpanderItemStyle\"\n\t       BasedOn=\"{StaticResource DefaultSettingsCardStyle}\"\n\t       TargetType=\"local:SettingsCard\">\n\t\t<Style.Setters>\n\t\t\t<Setter Property=\"BorderThickness\" Value=\"{ThemeResource SettingsExpanderItemBorderThickness}\" />\n\t\t\t<Setter Property=\"MinHeight\" Value=\"52\" />\n\t\t\t<Setter Property=\"Padding\" Value=\"{ThemeResource SettingsExpanderItemPadding}\" />\n\t\t\t<Setter Property=\"CornerRadius\" Value=\"0\" />\n\t\t</Style.Setters>\n\t</Style>\n\n\t<Style x:Key=\"ClickableSettingsExpanderItemStyle\"\n\t       BasedOn=\"{StaticResource DefaultSettingsExpanderItemStyle}\"\n\t       TargetType=\"local:SettingsCard\">\n\t\t<Style.Setters>\n\t\t\t<Setter Property=\"Padding\" Value=\"{ThemeResource ClickableSettingsExpanderItemPadding}\" />\n\t\t</Style.Setters>\n\t</Style>\n\n\t<!--  Implicitly applied default style  -->\n\t<Style BasedOn=\"{StaticResource DefaultSettingsExpanderStyle}\"\n\t       TargetType=\"local:SettingsExpander\" />\n\n\t<Style x:Key=\"DefaultSettingsExpanderStyle\"\n\t       TargetType=\"local:SettingsExpander\">\n\t\t<Style.Setters>\n\t\t\t<Setter Property=\"Background\" Value=\"{ThemeResource SettingsCardBackground}\" />\n\t\t\t<Setter Property=\"Foreground\" Value=\"{ThemeResource SettingsCardForeground}\" />\n\t\t\t<Setter Property=\"BorderBrush\" Value=\"{ThemeResource SettingsCardBorderBrush}\" />\n\t\t\t<Setter Property=\"BorderThickness\" Value=\"{ThemeResource SettingsCardBorderThickness}\" />\n\t\t\t<Setter Property=\"CornerRadius\" Value=\"{ThemeResource ControlCornerRadius}\" />\n\t\t\t<Setter Property=\"MinHeight\" Value=\"{ThemeResource SettingsCardMinHeight}\" />\n\t\t\t<Setter Property=\"MinWidth\" Value=\"{ThemeResource SettingsCardMinWidth}\" />\n\t\t\t<Setter Property=\"IsTabStop\" Value=\"False\" />\n\t\t\t<Setter Property=\"HorizontalAlignment\" Value=\"Stretch\" />\n\t\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n\t\t\t<Setter Property=\"VerticalAlignment\" Value=\"Center\" />\n\t\t\t<Setter Property=\"BackgroundSizing\" Value=\"InnerBorderEdge\" />\n\t\t\t<Setter Property=\"Padding\" Value=\"{ThemeResource SettingsExpanderHeaderPadding}\" />\n\t\t\t<Setter Property=\"FontFamily\" Value=\"{ThemeResource ContentControlThemeFontFamily}\" />\n\t\t\t<Setter Property=\"FontWeight\" Value=\"Normal\" />\n\t\t\t<Setter Property=\"FontSize\" Value=\"{ThemeResource ControlContentThemeFontSize}\" />\n\t\t\t<Setter Property=\"UseSystemFocusVisuals\" Value=\"{StaticResource UseSystemFocusVisuals}\" />\n\t\t\t<Setter Property=\"FocusVisualMargin\" Value=\"-3\" />\n\t\t\t<Setter Property=\"Template\">\n\t\t\t\t<Setter.Value>\n\t\t\t\t\t<ControlTemplate TargetType=\"local:SettingsExpander\">\n\t\t\t\t\t\t<muxc:Expander MinWidth=\"{TemplateBinding MinWidth}\"\n\t\t\t\t\t\t               MinHeight=\"{TemplateBinding MinHeight}\"\n\t\t\t\t\t\t               HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\"\n\t\t\t\t\t\t               HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n\t\t\t\t\t\t               CornerRadius=\"{TemplateBinding CornerRadius}\"\n\t\t\t\t\t\t               IsExpanded=\"{Binding IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}\"\n\t\t\t\t\t\t               Style=\"{StaticResource SettingsExpanderExpanderStyle}\">\n\t\t\t\t\t\t\t<muxc:Expander.Header>\n\t\t\t\t\t\t\t\t<local:SettingsCard Padding=\"{StaticResource SettingsExpanderHeaderPadding}\"\n\t\t\t\t\t\t\t\t                    VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t\t                    Background=\"Transparent\"\n\t\t\t\t\t\t\t\t                    BorderThickness=\"0\"\n\t\t\t\t\t\t\t\t                    Content=\"{TemplateBinding Content}\"\n\t\t\t\t\t\t\t\t                    Description=\"{TemplateBinding Description}\"\n\t\t\t\t\t\t\t\t                    FontFamily=\"{TemplateBinding FontFamily}\"\n\t\t\t\t\t\t\t\t                    Header=\"{TemplateBinding Header}\"\n\t\t\t\t\t\t\t\t                    HeaderIcon=\"{TemplateBinding HeaderIcon}\"\n\t\t\t\t\t\t\t\t                    IsClickEnabled=\"False\"\n\t\t\t\t\t\t\t\t                    IsWrapEnabled=\"{TemplateBinding IsWrapEnabled}\" />\n\t\t\t\t\t\t\t</muxc:Expander.Header>\n\t\t\t\t\t\t\t<muxc:Expander.Content>\n\t\t\t\t\t\t\t\t<StackPanel ChildrenTransitions=\"{StaticResource SettingsCardsAnimations}\"\n\t\t\t\t\t\t\t\t            CornerRadius=\"{Binding CornerRadius, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource SettingsExpanderCornerRadiusConverter}}\">\n\t\t\t\t\t\t\t\t\t<ContentPresenter Content=\"{TemplateBinding ItemsHeader}\" />\n\t\t\t\t\t\t\t\t\t<!--  ItemsRepeater 无法在 XAML Islands 中使用，见 https://github.com/microsoft/microsoft-ui-xaml/issues/2349  -->\n\t\t\t\t\t\t\t\t\t<ItemsControl x:Name=\"PART_ItemsContainer\"\n\t\t\t\t\t\t\t\t\t              Grid.Row=\"1\"\n\t\t\t\t\t\t\t\t\t              IsTabStop=\"False\"\n\t\t\t\t\t\t\t\t\t              ItemTemplate=\"{Binding ItemTemplate, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}\" />\n\t\t\t\t\t\t\t\t\t<ContentPresenter Grid.Row=\"2\"\n\t\t\t\t\t\t\t\t\t                  Content=\"{TemplateBinding ItemsFooter}\" />\n\t\t\t\t\t\t\t\t</StackPanel>\n\t\t\t\t\t\t\t</muxc:Expander.Content>\n\t\t\t\t\t\t</muxc:Expander>\n\t\t\t\t\t</ControlTemplate>\n\t\t\t\t</Setter.Value>\n\t\t\t</Setter>\n\t\t</Style.Setters>\n\t</Style>\n\n\t<Style x:Key=\"SettingsExpanderExpanderStyle\"\n\t       TargetType=\"muxc:Expander\">\n\t\t<Setter Property=\"Background\" Value=\"{ThemeResource ExpanderContentBackground}\" />\n\t\t<Setter Property=\"BackgroundSizing\" Value=\"InnerBorderEdge\" />\n\t\t<Setter Property=\"MinWidth\" Value=\"{ThemeResource FlyoutThemeMinWidth}\" />\n\t\t<Setter Property=\"MinHeight\" Value=\"{StaticResource ExpanderMinHeight}\" />\n\t\t<Setter Property=\"BorderThickness\" Value=\"{ThemeResource ExpanderContentDownBorderThickness}\" />\n\t\t<Setter Property=\"BorderBrush\" Value=\"{ThemeResource ExpanderContentBorderBrush}\" />\n\t\t<Setter Property=\"Padding\" Value=\"0\" />\n\t\t<Setter Property=\"HorizontalAlignment\" Value=\"Left\" />\n\t\t<Setter Property=\"VerticalAlignment\" Value=\"Center\" />\n\t\t<Setter Property=\"CornerRadius\" Value=\"{ThemeResource ControlCornerRadius}\" />\n\t\t<Setter Property=\"Template\">\n\t\t\t<Setter.Value>\n\t\t\t\t<ControlTemplate TargetType=\"muxc:Expander\">\n\t\t\t\t\t<Grid MinWidth=\"{TemplateBinding MinWidth}\"\n\t\t\t\t\t      MaxWidth=\"{TemplateBinding MaxWidth}\">\n\t\t\t\t\t\t<Grid.RowDefinitions>\n\t\t\t\t\t\t\t<RowDefinition x:Name=\"Row0\"\n\t\t\t\t\t\t\t               Height=\"Auto\" />\n\t\t\t\t\t\t\t<RowDefinition x:Name=\"Row1\"\n\t\t\t\t\t\t\t               Height=\"*\" />\n\t\t\t\t\t\t</Grid.RowDefinitions>\n\t\t\t\t\t\t<ToggleButton x:Name=\"PART_ExpanderHeader\"\n\t\t\t\t\t\t              MinHeight=\"{TemplateBinding MinHeight}\"\n\t\t\t\t\t\t              Padding=\"{StaticResource ExpanderHeaderPadding}\"\n\t\t\t\t\t\t              HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t              HorizontalContentAlignment=\"{StaticResource ExpanderHeaderHorizontalContentAlignment}\"\n\t\t\t\t\t\t              VerticalContentAlignment=\"{StaticResource ExpanderHeaderVerticalContentAlignment}\"\n\t\t\t\t\t\t              BackgroundSizing=\"{TemplateBinding BackgroundSizing}\"\n\t\t\t\t\t\t              BorderBrush=\"{ThemeResource ExpanderHeaderBorderBrush}\"\n\t\t\t\t\t\t              BorderThickness=\"{ThemeResource ExpanderHeaderBorderThickness}\"\n\t\t\t\t\t\t              Content=\"{TemplateBinding Header}\"\n\t\t\t\t\t\t              ContentTemplate=\"{TemplateBinding HeaderTemplate}\"\n\t\t\t\t\t\t              ContentTemplateSelector=\"{TemplateBinding HeaderTemplateSelector}\"\n\t\t\t\t\t\t              CornerRadius=\"{TemplateBinding CornerRadius}\"\n\t\t\t\t\t\t              IsChecked=\"{Binding Path=IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}\"\n\t\t\t\t\t\t              IsEnabled=\"{TemplateBinding IsEnabled}\"\n\t\t\t\t\t\t              IsTabStop=\"True\"\n\t\t\t\t\t\t              Style=\"{StaticResource SettingsExpanderHeaderDownStyle}\" />\n\t\t\t\t\t\t<!--  The clip is a composition clip applied in code  -->\n\t\t\t\t\t\t<Border x:Name=\"ExpanderContentClip\"\n\t\t\t\t\t\t        Grid.Row=\"1\">\n\t\t\t\t\t\t\t<Border x:Name=\"ExpanderContent\"\n\t\t\t\t\t\t\t        MinHeight=\"{ThemeResource SettingsExpanderContentMinHeight}\"\n\t\t\t\t\t\t\t        Padding=\"{TemplateBinding Padding}\"\n\t\t\t\t\t\t\t        HorizontalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t        VerticalAlignment=\"Stretch\"\n\t\t\t\t\t\t\t        BackgroundSizing=\"{TemplateBinding BackgroundSizing}\"\n\t\t\t\t\t\t\t        BorderBrush=\"{TemplateBinding BorderBrush}\"\n\t\t\t\t\t\t\t        BorderThickness=\"{StaticResource ExpanderContentDownBorderThickness}\"\n\t\t\t\t\t\t\t        CornerRadius=\"{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource BottomCornerRadiusFilterConverter}}\"\n\t\t\t\t\t\t\t        Visibility=\"Collapsed\">\n\t\t\t\t\t\t\t\t<ContentPresenter Margin=\"0,-2,0,0\"\n\t\t\t\t\t\t\t\t                  HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n\t\t\t\t\t\t\t\t                  VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n\t\t\t\t\t\t\t\t                  Content=\"{TemplateBinding Content}\"\n\t\t\t\t\t\t\t\t                  ContentTemplate=\"{TemplateBinding ContentTemplate}\"\n\t\t\t\t\t\t\t\t                  ContentTemplateSelector=\"{TemplateBinding ContentTemplateSelector}\" />\n\t\t\t\t\t\t\t\t<Border.RenderTransform>\n\t\t\t\t\t\t\t\t\t<CompositeTransform />\n\t\t\t\t\t\t\t\t</Border.RenderTransform>\n\t\t\t\t\t\t\t</Border>\n\t\t\t\t\t\t</Border>\n\t\t\t\t\t\t<VisualStateManager.VisualStateGroups>\n\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"ExpandStates\">\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"ExpandDown\">\n\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ExpanderHeader.CornerRadius\" Value=\"{Binding CornerRadius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource TopCornerRadiusFilterConverter}}\" />\n\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t\t<VisualState.Storyboard>\n\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ExpanderContent\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Visibility\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"Visible\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"ExpanderContent\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"(UIElement.RenderTransform).(CompositeTransform.TranslateY)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteDoubleKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.NegativeContentHeight}\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"0.0, 0.0, 0.0, 1.0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"0:0:0.333\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t</VisualState.Storyboard>\n\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"CollapseUp\">\n\t\t\t\t\t\t\t\t\t<VisualState.Storyboard>\n\t\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ExpanderContent\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Visibility\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0:0:0.048\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"Collapsed\" />\n\t\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimation Storyboard.TargetName=\"ExpanderContent\"\n\t\t\t\t\t\t\t\t\t\t\t                 Storyboard.TargetProperty=\"Opacity\"\n\t\t\t\t\t\t\t\t\t\t\t                 From=\"1\"\n\t\t\t\t\t\t\t\t\t\t\t                 To=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                 Duration=\"0:0:0.048\" />\n\t\t\t\t\t\t\t\t\t\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName=\"ExpanderContent\"\n\t\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"(UIElement.RenderTransform).(CompositeTransform.TranslateY)\">\n\t\t\t\t\t\t\t\t\t\t\t\t<DiscreteDoubleKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                        Value=\"0\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<SplineDoubleKeyFrame KeySpline=\"1.0, 1.0, 0.0, 1.0\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      KeyTime=\"0:0:0.167\"\n\t\t\t\t\t\t\t\t\t\t\t\t                      Value=\"{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.NegativeContentHeight}\" />\n\t\t\t\t\t\t\t\t\t\t\t</DoubleAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t</VisualState.Storyboard>\n\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t</VisualStateGroup>\n\t\t\t\t\t\t</VisualStateManager.VisualStateGroups>\n\t\t\t\t\t</Grid>\n\t\t\t\t</ControlTemplate>\n\t\t\t</Setter.Value>\n\t\t</Setter>\n\t</Style>\n\n\t<Style x:Key=\"SettingsExpanderHeaderDownStyle\"\n\t       TargetType=\"ToggleButton\">\n\t\t<Setter Property=\"Padding\" Value=\"0\" />\n\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Left\" />\n\t\t<Setter Property=\"BackgroundSizing\" Value=\"InnerBorderEdge\" />\n\t\t<Setter Property=\"Template\">\n\t\t\t<Setter.Value>\n\t\t\t\t<ControlTemplate TargetType=\"ToggleButton\">\n\t\t\t\t\t<Grid x:Name=\"ToggleButtonGrid\"\n\t\t\t\t\t      Width=\"{TemplateBinding Width}\"\n\t\t\t\t\t      MinWidth=\"{TemplateBinding MinWidth}\"\n\t\t\t\t\t      MinHeight=\"{TemplateBinding MinHeight}\"\n\t\t\t\t\t      MaxWidth=\"{TemplateBinding MaxWidth}\"\n\t\t\t\t\t      HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\"\n\t\t\t\t\t      Background=\"{TemplateBinding Background}\"\n\t\t\t\t\t      BackgroundSizing=\"{TemplateBinding BackgroundSizing}\"\n\t\t\t\t\t      BorderBrush=\"{ThemeResource ExpanderHeaderBorderBrush}\"\n\t\t\t\t\t      BorderThickness=\"{TemplateBinding BorderThickness}\"\n\t\t\t\t\t      CornerRadius=\"{TemplateBinding CornerRadius}\">\n\t\t\t\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t\t\t\t<ColumnDefinition Width=\"*\" />\n\t\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t</Grid.ColumnDefinitions>\n\n\t\t\t\t\t\t<ContentPresenter x:Name=\"ContentPresenter\"\n\t\t\t\t\t\t                  HorizontalContentAlignment=\"{TemplateBinding HorizontalContentAlignment}\"\n\t\t\t\t\t\t                  VerticalContentAlignment=\"{TemplateBinding VerticalContentAlignment}\"\n\t\t\t\t\t\t                  Content=\"{TemplateBinding Content}\"\n\t\t\t\t\t\t                  ContentTemplate=\"{TemplateBinding ContentTemplate}\"\n\t\t\t\t\t\t                  ContentTransitions=\"{TemplateBinding ContentTransitions}\"\n\t\t\t\t\t\t                  Foreground=\"{TemplateBinding Foreground}\" />\n\n\t\t\t\t\t\t<ContentControl x:Name=\"ExpandCollapseChevronBorder\"\n\t\t\t\t\t\t                Grid.Column=\"1\"\n\t\t\t\t\t\t                Width=\"{StaticResource SettingsExpanderChevronButtonWidth}\"\n\t\t\t\t\t\t                Height=\"{StaticResource SettingsExpanderChevronButtonHeight}\"\n\t\t\t\t\t\t                Margin=\"0,0,8,0\"\n\t\t\t\t\t\t                HorizontalAlignment=\"Center\"\n\t\t\t\t\t\t                VerticalAlignment=\"Center\"\n\t\t\t\t\t\t                HorizontalContentAlignment=\"Center\"\n\t\t\t\t\t\t                VerticalContentAlignment=\"Center\"\n\t\t\t\t\t\t                Background=\"{ThemeResource ExpanderChevronBackground}\"\n\t\t\t\t\t\t                BorderBrush=\"{ThemeResource ExpanderChevronBorderBrush}\"\n\t\t\t\t\t\t                BorderThickness=\"{ThemeResource ExpanderChevronBorderThickness}\"\n\t\t\t\t\t\t                CornerRadius=\"{ThemeResource ControlCornerRadius}\"\n\t\t\t\t\t\t                FocusVisualMargin=\"-3\"\n\t\t\t\t\t\t                IsTabStop=\"False\"\n\t\t\t\t\t\t                ToolTipService.ToolTip=\"{StaticResource SettingsExpanderChevronToolTip}\"\n\t\t\t\t\t\t                UseSystemFocusVisuals=\"True\">\n\t\t\t\t\t\t\t<muxc:AnimatedIcon x:Name=\"PART_ExpandCollapseChevron\"\n\t\t\t\t\t\t\t                   Width=\"16\"\n\t\t\t\t\t\t\t                   Height=\"16\"\n\t\t\t\t\t\t\t                   HorizontalAlignment=\"Center\"\n\t\t\t\t\t\t\t                   VerticalAlignment=\"Center\"\n\t\t\t\t\t\t\t                   muxc:AnimatedIcon.State=\"PointerOverOff\"\n\t\t\t\t\t\t\t                   Foreground=\"{ThemeResource ExpanderChevronForeground}\"\n\t\t\t\t\t\t\t                   RenderTransformOrigin=\"0.5, 0.5\">\n\t\t\t\t\t\t\t\t<animatedvisuals:AnimatedChevronUpDownSmallVisualSource />\n\t\t\t\t\t\t\t\t<muxc:AnimatedIcon.FallbackIconSource>\n\t\t\t\t\t\t\t\t\t<muxc:FontIconSource FontFamily=\"{StaticResource SymbolThemeFontFamily}\"\n\t\t\t\t\t\t\t\t\t                     FontSize=\"16\"\n\t\t\t\t\t\t\t\t\t                     Glyph=\"{StaticResource ExpanderChevronDownGlyph}\"\n\t\t\t\t\t\t\t\t\t                     IsTextScaleFactorEnabled=\"False\" />\n\t\t\t\t\t\t\t\t</muxc:AnimatedIcon.FallbackIconSource>\n\t\t\t\t\t\t\t</muxc:AnimatedIcon>\n\t\t\t\t\t\t</ContentControl>\n\n\t\t\t\t\t\t<VisualStateManager.VisualStateGroups>\n\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"CommonStates\">\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"Normal\">\n\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderHeaderForeground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ToggleButtonGrid\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"BorderBrush\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBorderBrush}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_ExpandCollapseChevron\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderChevronForeground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ToggleButtonGrid\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBackground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"PointerOver\">\n\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderHeaderForegroundPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ToggleButtonGrid\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"BorderBrush\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBorderBrushPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_ExpandCollapseChevron\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderChevronPointerOverForeground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ToggleButtonGrid\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBackgroundPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ExpandCollapseChevron.(muxc:AnimatedIcon.State)\" Value=\"PointerOverOff\" />\n\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"Pressed\">\n\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderHeaderForegroundPressed}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ToggleButtonGrid\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"BorderBrush\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBorderBrushPressed}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_ExpandCollapseChevron\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderChevronPressedForeground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ToggleButtonGrid\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBackgroundPressed}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ExpandCollapseChevron.(muxc:AnimatedIcon.State)\" Value=\"PointerOverOff\" />\n\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"Disabled\">\n\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderHeaderDisabledForeground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ToggleButtonGrid\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"BorderBrush\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBorderBrushDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_ExpandCollapseChevron\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderHeaderDisabledForeground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"Checked\">\n\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderHeaderForeground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_ExpandCollapseChevron\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderChevronForeground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ExpandCollapseChevronBorder\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"BorderBrush\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderChevronBorderBrush}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ExpandCollapseChevronBorder\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderChevronBackground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ExpandCollapseChevron.(muxc:AnimatedIcon.State)\" Value=\"PointerOverOn\" />\n\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"CheckedPointerOver\">\n\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderHeaderForegroundPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_ExpandCollapseChevron\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderChevronPointerOverForeground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ToggleButtonGrid\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"BorderBrush\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBorderBrushPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ToggleButtonGrid\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBackgroundPointerOver}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ExpandCollapseChevron.(muxc:AnimatedIcon.State)\" Value=\"PointerOverOn\" />\n\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"CheckedPressed\">\n\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderHeaderForegroundPressed}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_ExpandCollapseChevron\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderChevronPressedForeground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ToggleButtonGrid\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"BorderBrush\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBorderBrushPressed}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ToggleButtonGrid\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Background\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBackgroundPressed}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ExpandCollapseChevron.(muxc:AnimatedIcon.State)\" Value=\"PointerOverOn\" />\n\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t</VisualState>\n\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"CheckedDisabled\">\n\t\t\t\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ContentPresenter\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderHeaderDisabledForeground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"PART_ExpandCollapseChevron\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"Foreground\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource ExpanderHeaderDisabledForeground}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t\t<ObjectAnimationUsingKeyFrames Storyboard.TargetName=\"ToggleButtonGrid\"\n\t\t\t\t\t\t\t\t\t\t                               Storyboard.TargetProperty=\"BorderBrush\">\n\t\t\t\t\t\t\t\t\t\t\t<DiscreteObjectKeyFrame KeyTime=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t                        Value=\"{ThemeResource SettingsCardBorderBrushDisabled}\" />\n\t\t\t\t\t\t\t\t\t\t</ObjectAnimationUsingKeyFrames>\n\t\t\t\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"PART_ExpandCollapseChevron.(muxc:AnimatedIcon.State)\" Value=\"PointerOverOn\" />\n\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"Indeterminate\" />\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"IndeterminatePointerOver\" />\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"IndeterminatePressed\" />\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"IndeterminateDisabled\" />\n\t\t\t\t\t\t\t</VisualStateGroup>\n\t\t\t\t\t\t</VisualStateManager.VisualStateGroups>\n\t\t\t\t\t</Grid>\n\n\t\t\t\t</ControlTemplate>\n\t\t\t</Setter.Value>\n\t\t</Setter>\n\t</Style>\n\n</ResourceDictionary>\n"
  },
  {
    "path": "src/Magpie/SettingsExpander.cpp",
    "content": "// 移植自 https://github.com/CommunityToolkit/Windows/tree/efbaf965029806fe29e02a6421af3c8f434e1460/components/SettingsControls/src/SettingsExpander\n\n#include \"pch.h\"\n#include \"SettingsExpander.h\"\n#if __has_include(\"SettingsExpander.g.cpp\")\n#include \"SettingsExpander.g.cpp\"\n#endif\n#if __has_include(\"SettingsExpanderStyle.g.cpp\")\n#include \"SettingsExpanderStyle.g.cpp\"\n#endif\n#include \"App.h\"\n\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Controls;\n\nnamespace winrt::Magpie::implementation {\n\nstatic constexpr const wchar_t* PART_ItemsContainer = L\"PART_ItemsContainer\";\nstatic constexpr const wchar_t* PART_ExpanderHeader = L\"PART_ExpanderHeader\";\nstatic constexpr const wchar_t* PART_ExpandCollapseChevron = L\"PART_ExpandCollapseChevron\";\n\nDependencyProperty SettingsExpander::_headerProperty{ nullptr };\nDependencyProperty SettingsExpander::_descriptionProperty{ nullptr };\nDependencyProperty SettingsExpander::_headerIconProperty{ nullptr };\nDependencyProperty SettingsExpander::_contentProperty{ nullptr };\nDependencyProperty SettingsExpander::_itemsHeaderProperty{ nullptr };\nDependencyProperty SettingsExpander::_itemsFooterProperty{ nullptr };\nDependencyProperty SettingsExpander::_isExpandedProperty{ nullptr };\nDependencyProperty SettingsExpander::_itemsProperty{ nullptr };\nDependencyProperty SettingsExpander::_itemsSourceProperty{ nullptr };\nDependencyProperty SettingsExpander::_itemTemplateProperty{ nullptr };\nDependencyProperty SettingsExpander::_isWrapEnabledProperty{ nullptr };\n\nSettingsExpander::SettingsExpander() {\n\tDefaultStyleKey(box_value(GetRuntimeClassName()));\n\tItems(single_threaded_vector<IInspectable>());\n}\n\nvoid SettingsExpander::RegisterDependencyProperties() {\n\t_headerProperty = DependencyProperty::Register(\n\t\tL\"Header\",\n\t\txaml_typename<IInspectable>(),\n\t\txaml_typename<class_type>(),\n\t\tnullptr\n\t);\n\n\t_descriptionProperty = DependencyProperty::Register(\n\t\tL\"Description\",\n\t\txaml_typename<IInspectable>(),\n\t\txaml_typename<class_type>(),\n\t\tnullptr\n\t);\n\n\t_headerIconProperty = DependencyProperty::Register(\n\t\tL\"HeaderIcon\",\n\t\txaml_typename<IconElement>(),\n\t\txaml_typename<class_type>(),\n\t\tnullptr\n\t);\n\n\t_contentProperty = DependencyProperty::Register(\n\t\tL\"Content\",\n\t\txaml_typename<IInspectable>(),\n\t\txaml_typename<class_type>(),\n\t\tnullptr\n\t);\n\n\t_itemsHeaderProperty = DependencyProperty::Register(\n\t\tL\"ItemsHeader\",\n\t\txaml_typename<UIElement>(),\n\t\txaml_typename<class_type>(),\n\t\tnullptr\n\t);\n\n\t_itemsFooterProperty = DependencyProperty::Register(\n\t\tL\"ItemsFooter\",\n\t\txaml_typename<UIElement>(),\n\t\txaml_typename<class_type>(),\n\t\tnullptr\n\t);\n\n\t_isExpandedProperty = DependencyProperty::Register(\n\t\tL\"IsExpanded\",\n\t\txaml_typename<bool>(),\n\t\txaml_typename<class_type>(),\n\t\tPropertyMetadata(box_value(false), &SettingsExpander::_OnIsExpandedChanged)\n\t);\n\n\t_itemsProperty = DependencyProperty::Register(\n\t\tL\"Items\",\n\t\txaml_typename<IVector<IInspectable>>(),\n\t\txaml_typename<class_type>(),\n\t\tPropertyMetadata(nullptr, [](DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {\n\t\t\tget_self<SettingsExpander>(sender.try_as<class_type>())->_OnItemsConnectedPropertyChanged();\n\t\t})\n\t);\n\n\t_itemsSourceProperty = DependencyProperty::Register(\n\t\tL\"ItemsSource\",\n\t\txaml_typename<IInspectable>(),\n\t\txaml_typename<class_type>(),\n\t\tPropertyMetadata(nullptr, [](DependencyObject const& sender, DependencyPropertyChangedEventArgs const&) {\n\t\t\tget_self<SettingsExpander>(sender.try_as<class_type>())->_OnItemsConnectedPropertyChanged();\n\t\t})\n\t);\n\n\t_itemTemplateProperty = DependencyProperty::Register(\n\t\tL\"ItemTemplate\",\n\t\txaml_typename<IInspectable>(),\n\t\txaml_typename<class_type>(),\n\t\tnullptr\n\t);\n\n\t_isWrapEnabledProperty = DependencyProperty::Register(\n\t\tL\"IsWrapEnabled\",\n\t\txaml_typename<bool>(),\n\t\txaml_typename<class_type>(),\n\t\tnullptr\n\t);\n}\n\nvoid SettingsExpander::OnApplyTemplate() {\n\tbase_type::OnApplyTemplate();\n\n\t_OnItemsConnectedPropertyChanged();\n\n\tauto expander = VisualTreeHelper::GetChild(*this, 0).try_as<MUXC::Expander>();\n\texpander.ApplyTemplate();\n\n\t// 跳过动画\n\tauto expanderRoot = VisualTreeHelper::GetChild(expander, 0).try_as<Grid>();\n\tfor (VisualStateGroup group : VisualStateManager::GetVisualStateGroups(expanderRoot)) {\n\t\tfor (VisualState state : group.States()) {\n\t\t\tstate.Storyboard().SkipToFill();\n\t\t}\n\t}\n\n\tauto header = expander.try_as<IControlProtected>()\n\t\t.GetTemplateChild(PART_ExpanderHeader)\n\t\t.try_as<Primitives::ToggleButton>();\n\theader.ApplyTemplate();\n\t_expandCollapseChevron = header.try_as<IControlProtected>()\n\t\t.GetTemplateChild(PART_ExpandCollapseChevron)\n\t\t.try_as<MUXC::AnimatedIcon>();\n\t_UpdateAnimatedIcon();\n}\n\nvoid SettingsExpander::_OnIsExpandedChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const& args) {\n\tSettingsExpander* that = get_self<SettingsExpander>(sender.try_as<class_type>());\n\n\tif (args.NewValue().try_as<bool>().value()) {\n\t\tthat->Expanded.Invoke();\n\t} else {\n\t\tthat->Collapsed.Invoke();\n\t}\n\n\tif (that->_expandCollapseChevron) {\n\t\tthat->_UpdateAnimatedIcon();\n\t}\n}\n\nvoid SettingsExpander::_OnItemsConnectedPropertyChanged() {\n\tItemsControl itemsContainer = GetTemplateChild(PART_ItemsContainer).try_as<ItemsControl>();\n\tif (!itemsContainer) {\n\t\treturn;\n\t}\n\n\tIInspectable datasource = ItemsSource();\n\titemsContainer.ItemsSource(datasource ? datasource : Items());\n\n\t// 应用样式\n\tfor (IInspectable const& item : itemsContainer.Items()) {\n\t\tSettingsCard settingsCard = item.try_as<SettingsCard>();\n\t\tif (!settingsCard) {\n\t\t\tcontinue;\n\t\t}\n\t\t\n\t\tif (settingsCard.ReadLocalValue(FrameworkElement::StyleProperty()) == DependencyProperty::UnsetValue()) {\n\t\t\tResourceDictionary resources = App::Get().Resources();\n\t\t\tconst wchar_t* key = settingsCard.IsClickEnabled()\n\t\t\t\t? L\"ClickableSettingsExpanderItemStyle\"\n\t\t\t\t: L\"DefaultSettingsExpanderItemStyle\";\n\t\t\tsettingsCard.Style(resources.Lookup(box_value(key)).try_as<Windows::UI::Xaml::Style>());\n\t\t}\n\t}\n}\n\n// 防止加载后立刻展示动画\nvoid SettingsExpander::_UpdateAnimatedIcon() {\n\tMUXC::AnimatedIcon::SetState(_expandCollapseChevron, IsExpanded() ? L\"PointerOverOn\" : L\"PointerOverOff\");\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/SettingsExpander.h",
    "content": "#pragma once\n#include \"SettingsExpander.g.h\"\n#include \"SettingsExpanderStyle.g.h\"\n#include \"Event.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct SettingsExpander : SettingsExpanderT<SettingsExpander> {\n\tSettingsExpander();\n\n\tstatic void RegisterDependencyProperties();\n\tstatic DependencyProperty HeaderProperty() { return _headerProperty; }\n\tstatic DependencyProperty DescriptionProperty() { return _descriptionProperty; }\n\tstatic DependencyProperty HeaderIconProperty() { return _headerIconProperty; }\n\tstatic DependencyProperty ContentProperty() { return _contentProperty; }\n\tstatic DependencyProperty ItemsHeaderProperty() { return _itemsHeaderProperty; }\n\tstatic DependencyProperty ItemsFooterProperty() { return _itemsFooterProperty; }\n\tstatic DependencyProperty IsExpandedProperty() { return _isExpandedProperty; }\n\tstatic DependencyProperty ItemsProperty() { return _itemsProperty; }\n\tstatic DependencyProperty ItemsSourceProperty() { return _itemsSourceProperty; }\n\tstatic DependencyProperty ItemTemplateProperty() { return _itemTemplateProperty; }\n\tstatic DependencyProperty IsWrapEnabledProperty() { return _isWrapEnabledProperty; }\n\n\tIInspectable Header() const { return GetValue(_headerProperty); }\n\tvoid Header(IInspectable const& value) const { SetValue(_headerProperty, value); }\n\n\tIInspectable Description() const { return GetValue(_descriptionProperty); }\n\tvoid Description(IInspectable const& value) const { SetValue(_descriptionProperty, value); }\n\n\tIconElement HeaderIcon() const { return GetValue(_headerIconProperty).try_as<IconElement>(); }\n\tvoid HeaderIcon(IconElement const& value)const { SetValue(_headerIconProperty, value); }\n\n\tIInspectable Content() const { return GetValue(_contentProperty); }\n\tvoid Content(IInspectable const& value) const { SetValue(_contentProperty, value); }\n\n\tUIElement ItemsHeader() const { return GetValue(_itemsHeaderProperty).try_as<UIElement>(); }\n\tvoid ItemsHeader(UIElement const& value) const { SetValue(_itemsHeaderProperty, value); }\n\n\tUIElement ItemsFooter() const { return GetValue(_itemsFooterProperty).try_as<UIElement>(); }\n\tvoid ItemsFooter(UIElement const& value) const { SetValue(_itemsFooterProperty, value); }\n\n\tbool IsExpanded() const { return GetValue(_isExpandedProperty).try_as<bool>().value(); }\n\tvoid IsExpanded(bool value) const { SetValue(_isExpandedProperty, box_value(value)); }\n\n\tIVector<IInspectable> Items() const { return GetValue(_itemsProperty).try_as<IVector<IInspectable>>(); }\n\tvoid Items(IVector<IInspectable> const& value) const { SetValue(_itemsProperty, value); }\n\n\tIInspectable ItemsSource() const { return GetValue(_itemsSourceProperty); }\n\tvoid ItemsSource(IInspectable const& value) const { SetValue(_itemsSourceProperty, value); }\n\n\tIInspectable ItemTemplate() const { return GetValue(_itemTemplateProperty); }\n\tvoid ItemTemplate(IInspectable const& value) const { SetValue(_itemTemplateProperty, value); }\n\n\tbool IsWrapEnabled() const { return GetValue(_isWrapEnabledProperty).try_as<bool>().value(); }\n\tvoid IsWrapEnabled(bool value) const { SetValue(_isWrapEnabledProperty, box_value(value)); }\n\n\tvoid OnApplyTemplate();\n\n\t::Magpie::WinRTEvent<SignalDelegate> Expanded;\n\t::Magpie::WinRTEvent<SignalDelegate> Collapsed;\n\nprivate:\n\tstatic DependencyProperty _headerProperty;\n\tstatic DependencyProperty _descriptionProperty;\n\tstatic DependencyProperty _headerIconProperty;\n\tstatic DependencyProperty _contentProperty;\n\tstatic DependencyProperty _itemsHeaderProperty;\n\tstatic DependencyProperty _itemsFooterProperty;\n\tstatic DependencyProperty _isExpandedProperty;\n\tstatic DependencyProperty _itemsProperty;\n\tstatic DependencyProperty _itemsSourceProperty;\n\tstatic DependencyProperty _itemTemplateProperty;\n\tstatic DependencyProperty _isWrapEnabledProperty;\n\n\tstatic void _OnIsExpandedChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const& args);\n\n\tvoid _OnItemsConnectedPropertyChanged();\n\n\tvoid _UpdateAnimatedIcon();\n\n\tMUXC::AnimatedIcon _expandCollapseChevron{ nullptr };\n};\n\nstruct SettingsExpanderStyle : SettingsExpanderStyleT<SettingsExpanderStyle> {};\n\n}\n\nBASIC_FACTORY(SettingsExpander)\nBASIC_FACTORY(SettingsExpanderStyle)\n"
  },
  {
    "path": "src/Magpie/SettingsExpander.idl",
    "content": "namespace Magpie {\n\t[Windows.UI.Xaml.Markup.ContentProperty(\"Content\")]\n\truntimeclass SettingsExpander : Windows.UI.Xaml.Controls.Control {\n\t\tSettingsExpander();\n\t\t\n\t\tstatic Windows.UI.Xaml.DependencyProperty HeaderProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty DescriptionProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty HeaderIconProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty ContentProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty ItemsHeaderProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty ItemsFooterProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty IsExpandedProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty ItemsProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty ItemsSourceProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty ItemTemplateProperty { get; };\n\n\t\tObject Header;\n\t\tObject Description;\n\t\tWindows.UI.Xaml.Controls.IconElement HeaderIcon;\n\t\tObject Content;\n\t\tWindows.UI.Xaml.UIElement ItemsHeader;\n\t\tWindows.UI.Xaml.UIElement ItemsFooter;\n\t\tBoolean IsExpanded;\n\t\tIVector<Object> Items;\n\t\tObject ItemsSource;\n\t\tObject ItemTemplate;\n\t\tBoolean IsWrapEnabled;\n\n\t\tevent SignalDelegate Expanded;\n\t\tevent SignalDelegate Collapsed;\n\t}\n\n\t[default_interface]\n\truntimeclass SettingsExpanderStyle : Windows.UI.Xaml.ResourceDictionary {\n\t\tSettingsExpanderStyle();\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/SettingsExpanderCornerRadiusConverter.cpp",
    "content": "﻿#include \"pch.h\"\n#include \"SettingsExpanderCornerRadiusConverter.h\"\n#if __has_include(\"SettingsExpanderCornerRadiusConverter.g.cpp\")\n#include \"SettingsExpanderCornerRadiusConverter.g.cpp\"\n#endif\n\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Interop;\n\nnamespace winrt::Magpie::implementation {\n\nIInspectable SettingsExpanderCornerRadiusConverter::Convert(IInspectable const& value, TypeName const&, IInspectable const&, hstring const&) {\n\tauto cornerRadius = value.try_as<CornerRadius>();\n\tif (!cornerRadius) {\n\t\treturn value;\n\t}\n\n\tcornerRadius->TopLeft = 0;\n\tcornerRadius->TopRight = 0;\n\treturn box_value(*cornerRadius);\n}\n\nIInspectable SettingsExpanderCornerRadiusConverter::ConvertBack(IInspectable const& value, TypeName const&, IInspectable const&, hstring const&) {\n\treturn value;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/SettingsExpanderCornerRadiusConverter.h",
    "content": "#pragma once\n#include \"SettingsExpanderCornerRadiusConverter.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct SettingsExpanderCornerRadiusConverter : SettingsExpanderCornerRadiusConverterT<SettingsExpanderCornerRadiusConverter> {\n    IInspectable Convert(IInspectable const& value, Interop::TypeName const&, IInspectable const&, hstring const&);\n    IInspectable ConvertBack(IInspectable const& value, Interop::TypeName const&, IInspectable const&, hstring const&);\n};\n\n}\n\nBASIC_FACTORY(SettingsExpanderCornerRadiusConverter)\n"
  },
  {
    "path": "src/Magpie/SettingsExpanderCornerRadiusConverter.idl",
    "content": "namespace Magpie {\n    runtimeclass SettingsExpanderCornerRadiusConverter : [default] Windows.UI.Xaml.Data.IValueConverter {\n        SettingsExpanderCornerRadiusConverter();\n    }\n}\n"
  },
  {
    "path": "src/Magpie/SettingsGroup.Resource.xaml",
    "content": "<!--  移植自 https://github.com/microsoft/PowerToys/blob/bf7462b1965ccbe4e9d90a1b9e79b243798f0cc3/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsGroup/SettingsGroup.xaml  -->\n<!--  26100 SDK 存在 bug，导致所有 XAML 文件都必须指定 x:Class，一旦修复应还原更改  -->\n<ResourceDictionary x:Class=\"Magpie.SettingsGroupStyle\"\n                    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n                    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n                    xmlns:local=\"using:Magpie\">\n\t<Style TargetType=\"local:SettingsGroup\">\n\t\t<Setter Property=\"ItemsPanel\">\n\t\t\t<Setter.Value>\n\t\t\t\t<ItemsPanelTemplate>\n\t\t\t\t\t<local:SimpleStackPanel ChildrenTransitions=\"{StaticResource SettingsCardsAnimations}\"\n\t\t\t\t\t                        Orientation=\"Vertical\"\n\t\t\t\t\t                        Spacing=\"{StaticResource SettingsCardSpacing}\" />\n\t\t\t\t</ItemsPanelTemplate>\n\t\t\t</Setter.Value>\n\t\t</Setter>\n\t\t<Setter Property=\"IsTabStop\" Value=\"False\" />\n\t\t<Setter Property=\"HorizontalAlignment\" Value=\"Stretch\" />\n\t\t<Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n\t\t<Setter Property=\"Template\">\n\t\t\t<Setter.Value>\n\t\t\t\t<ControlTemplate TargetType=\"local:SettingsGroup\">\n\t\t\t\t\t<Grid HorizontalAlignment=\"Stretch\">\n\t\t\t\t\t\t<Grid.RowDefinitions>\n\t\t\t\t\t\t\t<RowDefinition Height=\"Auto\" />\n\t\t\t\t\t\t\t<RowDefinition Height=\"Auto\" />\n\t\t\t\t\t\t\t<RowDefinition Height=\"Auto\" />\n\t\t\t\t\t\t</Grid.RowDefinitions>\n\t\t\t\t\t\t<TextBlock x:Name=\"HeaderPresenter\"\n\t\t\t\t\t\t           Grid.Row=\"0\"\n\t\t\t\t\t\t           Margin=\"1,0,0,0\"\n\t\t\t\t\t\t           AutomationProperties.HeadingLevel=\"Level2\"\n\t\t\t\t\t\t           Style=\"{ThemeResource BodyStrongTextBlockStyle}\"\n\t\t\t\t\t\t           Text=\"{TemplateBinding Header}\" />\n\n\t\t\t\t\t\t<ContentPresenter x:Name=\"DescriptionPresenter\"\n\t\t\t\t\t\t                  Grid.Row=\"1\"\n\t\t\t\t\t\t                  Margin=\"1,0,0,0\"\n\t\t\t\t\t\t                  Content=\"{TemplateBinding Description}\"\n\t\t\t\t\t\t                  Foreground=\"{ThemeResource TextFillColorSecondaryBrush}\"\n\t\t\t\t\t\t                  TextWrapping=\"WrapWholeWords\">\n\t\t\t\t\t\t\t<ContentPresenter.Resources>\n\t\t\t\t\t\t\t\t<Style BasedOn=\"{StaticResource CaptionTextBlockStyle}\"\n\t\t\t\t\t\t\t\t       TargetType=\"TextBlock\">\n\t\t\t\t\t\t\t\t\t<Style.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Property=\"TextWrapping\" Value=\"WrapWholeWords\" />\n\t\t\t\t\t\t\t\t\t</Style.Setters>\n\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t\t<Style BasedOn=\"{StaticResource TextButtonStyle}\"\n\t\t\t\t\t\t\t\t       TargetType=\"HyperlinkButton\">\n\t\t\t\t\t\t\t\t\t<Style.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Property=\"Padding\" Value=\"0,0,0,0\" />\n\t\t\t\t\t\t\t\t\t</Style.Setters>\n\t\t\t\t\t\t\t\t</Style>\n\t\t\t\t\t\t\t</ContentPresenter.Resources>\n\t\t\t\t\t\t</ContentPresenter>\n\t\t\t\t\t\t<ItemsPresenter Grid.Row=\"2\"\n\t\t\t\t\t\t                Margin=\"0,8,0,0\" />\n\t\t\t\t\t\t<VisualStateManager.VisualStateGroups>\n\t\t\t\t\t\t\t<VisualStateGroup x:Name=\"CommonStates\">\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"Normal\" />\n\t\t\t\t\t\t\t\t<VisualState x:Name=\"Disabled\">\n\t\t\t\t\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"HeaderPresenter.Foreground\" Value=\"{ThemeResource TextFillColorDisabledBrush}\" />\n\t\t\t\t\t\t\t\t\t\t<Setter Target=\"DescriptionPresenter.Foreground\" Value=\"{ThemeResource TextFillColorDisabledBrush}\" />\n\t\t\t\t\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t\t\t\t\t</VisualState>\n\t\t\t\t\t\t\t</VisualStateGroup>\n\t\t\t\t\t\t</VisualStateManager.VisualStateGroups>\n\t\t\t\t\t</Grid>\n\t\t\t\t</ControlTemplate>\n\t\t\t</Setter.Value>\n\t\t</Setter>\n\t</Style>\n</ResourceDictionary>"
  },
  {
    "path": "src/Magpie/SettingsGroup.cpp",
    "content": "#include \"pch.h\"\n#include \"SettingsGroup.h\"\n#if __has_include(\"SettingsGroup.g.cpp\")\n#include \"SettingsGroup.g.cpp\"\n#endif\n#if __has_include(\"SettingsGroupStyle.g.cpp\")\n#include \"SettingsGroupStyle.g.cpp\"\n#endif\n\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Controls;\nusing namespace Windows::UI::Xaml::Data;\n\nnamespace winrt::Magpie::implementation {\n\nDependencyProperty SettingsGroup::_headerProperty{ nullptr };\nDependencyProperty SettingsGroup::_descriptionProperty{ nullptr };\n\nvoid SettingsGroup::RegisterDependencyProperties() {\n\t// Header 如果为字符串类型会编译失败，见 https://github.com/microsoft/microsoft-ui-xaml/issues/5395\n\t_headerProperty = DependencyProperty::Register(\n\t\tL\"Header\",\n\t\txaml_typename<IInspectable>(),\n\t\txaml_typename<class_type>(),\n\t\tnullptr\n\t);\n\n\t_descriptionProperty = DependencyProperty::Register(\n\t\tL\"Description\",\n\t\txaml_typename<IInspectable>(),\n\t\txaml_typename<class_type>(),\n\t\tPropertyMetadata(nullptr, &SettingsGroup::_OnDescriptionChanged)\n\t);\n}\n\nvoid SettingsGroup::OnApplyTemplate() {\n\tbase_type::OnApplyTemplate();\n\n\t_isEnabledChangedRevoker = IsEnabledChanged(auto_revoke, [this](IInspectable const&, DependencyPropertyChangedEventArgs const&) {\n\t\t_SetEnabledState();\n\t});\n\t_SetEnabledState();\n}\n\nvoid SettingsGroup::_OnDescriptionChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const& args) {\n\tSettingsGroup* that = get_self<SettingsGroup>(sender.try_as<class_type>());\n\n\tif (FrameworkElement descriptionPresenter = that->GetTemplateChild(L\"DescriptionPresenter\").try_as<FrameworkElement>()) {\n\t\tdescriptionPresenter.Visibility(args.NewValue() == nullptr ? Visibility::Collapsed : Visibility::Visible);\n\t}\n}\n\nvoid SettingsGroup::_SetEnabledState() {\n\tVisualStateManager::GoToState(*this, IsEnabled() ? L\"Normal\" : L\"Disabled\", true);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/SettingsGroup.h",
    "content": "#pragma once\n#include \"SettingsGroup.g.h\"\n#include \"SettingsGroupStyle.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct SettingsGroup : SettingsGroupT<SettingsGroup> {\n\tstatic void RegisterDependencyProperties();\n\tstatic DependencyProperty HeaderProperty() { return _headerProperty; }\n\tstatic DependencyProperty DescriptionProperty() { return _descriptionProperty; }\n\n\tIInspectable Header() const { return GetValue(_headerProperty); }\n\tvoid Header(IInspectable const& value) const { SetValue(_headerProperty, value); }\n\t\n\tIInspectable Description() const { return GetValue(_descriptionProperty); }\n\tvoid Description(IInspectable const& value) const { SetValue(_descriptionProperty, value); }\n\t\n\tvoid OnApplyTemplate();\n\nprivate:\n\tstatic DependencyProperty _headerProperty;\n\tstatic DependencyProperty _descriptionProperty;\n\n\tstatic void _OnDescriptionChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const&);\n\n\tvoid _SetEnabledState();\n\n\tIsEnabledChanged_revoker _isEnabledChangedRevoker;\n};\n\nstruct SettingsGroupStyle : SettingsGroupStyleT<SettingsGroupStyle> {};\n\n}\n\nBASIC_FACTORY(SettingsGroup)\nBASIC_FACTORY(SettingsGroupStyle)\n"
  },
  {
    "path": "src/Magpie/SettingsGroup.idl",
    "content": "namespace Magpie {\n\t[Windows.UI.Xaml.TemplateVisualState(\"Normal\", \"CommonStates\")]\n\t[Windows.UI.Xaml.TemplateVisualState(\"Disabled\", \"CommonStates\")]\n\truntimeclass SettingsGroup : Windows.UI.Xaml.Controls.ItemsControl {\n\t\tSettingsGroup();\n\n\t\tstatic Windows.UI.Xaml.DependencyProperty HeaderProperty { get; };\n\t\tstatic Windows.UI.Xaml.DependencyProperty DescriptionProperty { get; };\n\t\t\n\t\tObject Header;\n\t\tObject Description;\n\t}\n\n\t[default_interface]\n\truntimeclass SettingsGroupStyle : Windows.UI.Xaml.ResourceDictionary {\n\t\tSettingsGroupStyle();\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/SettingsPage.cpp",
    "content": "#include \"pch.h\"\n#include \"SettingsPage.h\"\n#if __has_include(\"SettingsPage.g.cpp\")\n#include \"SettingsPage.g.cpp\"\n#endif\n#include \"ControlHelper.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Input;\n\nnamespace winrt::Magpie::implementation {\n\nvoid SettingsPage::InitializeComponent() {\n\tSettingsPageT::InitializeComponent();\n\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(L\"Microsoft.UI.Xaml/Resources\");\n\thstring versionStr = resourceLoader.GetString(L\"SettingsButtonName\");\n\tSettingsPageFrame().Title(versionStr);\n}\n\nvoid SettingsPage::ComboBox_DropDownOpened(IInspectable const& sender, IInspectable const&) const {\n\tControlHelper::ComboBox_DropDownOpened(sender);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/SettingsPage.h",
    "content": "#pragma once\n#include \"SettingsPage.g.h\"\n#include \"SettingsViewModel.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct SettingsPage : SettingsPageT<SettingsPage> {\n\tvoid InitializeComponent();\n\n\twinrt::Magpie::SettingsViewModel ViewModel() const noexcept {\n\t\treturn *_viewModel;\n\t}\n\n\tvoid ComboBox_DropDownOpened(IInspectable const& sender, IInspectable const&) const;\n\nprivate:\n\tcom_ptr<SettingsViewModel> _viewModel = make_self<SettingsViewModel>();\n};\n\n}\n\nBASIC_FACTORY(SettingsPage)\n"
  },
  {
    "path": "src/Magpie/SettingsPage.idl",
    "content": "namespace Magpie {\n\truntimeclass SettingsPage : Windows.UI.Xaml.Controls.Page {\n\t\tSettingsPage();\n\n\t\tSettingsViewModel ViewModel { get; };\n\n\t\t// https://github.com/microsoft/microsoft-ui-xaml/issues/7579\n\t\tvoid UnloadObject(Windows.UI.Xaml.DependencyObject object);\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/SettingsPage.xaml",
    "content": "<Page x:Class=\"Magpie.SettingsPage\"\n      xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n      xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n      xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n      xmlns:local=\"using:Magpie\"\n      xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n      xmlns:muxc=\"using:Microsoft.UI.Xaml.Controls\"\n      mc:Ignorable=\"d\">\n\t<local:PageFrame x:Name=\"SettingsPageFrame\">\n\t\t<local:SimpleStackPanel Padding=\"0,4,0,0\"\n\t\t                        HorizontalAlignment=\"Stretch\"\n\t\t                        ChildrenTransitions=\"{StaticResource SettingsCardsAnimations}\"\n\t\t                        Spacing=\"{StaticResource SettingsGroupSpacing}\">\n\t\t\t<local:SettingsGroup x:Uid=\"Settings_General\">\n\t\t\t\t<local:SettingsCard x:Uid=\"Settings_General_Language\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE8C1;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ComboBox DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t          ItemsSource=\"{x:Bind ViewModel.Languages, Mode=OneTime}\"\n\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.Language, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<muxc:InfoBar x:Uid=\"Settings_General_RequireRestart\"\n\t\t\t\t              IsClosable=\"False\"\n\t\t\t\t              IsOpen=\"{x:Bind ViewModel.RequireRestart, Mode=OneWay}\"\n\t\t\t\t              Severity=\"Warning\">\n\t\t\t\t\t<muxc:InfoBar.ActionButton>\n\t\t\t\t\t\t<Button x:Uid=\"Settings_General_RequireRestart_ActionButton\"\n\t\t\t\t\t\t        HorizontalAlignment=\"Right\"\n\t\t\t\t\t\t        Click=\"{x:Bind ViewModel.Restart}\" />\n\t\t\t\t\t</muxc:InfoBar.ActionButton>\n\t\t\t\t</muxc:InfoBar>\n\t\t\t\t<local:SettingsCard x:Uid=\"Settings_General_Theme\"\n\t\t\t\t                    IsWrapEnabled=\"True\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xEF1F;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ComboBox DropDownOpened=\"ComboBox_DropDownOpened\"\n\t\t\t\t\t          SelectedIndex=\"{x:Bind ViewModel.Theme, Mode=TwoWay}\">\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Settings_General_Theme_System\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Settings_General_Theme_Light\" />\n\t\t\t\t\t\t<ComboBoxItem x:Uid=\"Settings_General_Theme_Dark\" />\n\t\t\t\t\t</ComboBox>\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"Settings_General_PortableMode\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE88E;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<local:SettingsCard.Description>\n\t\t\t\t\t\t<HyperlinkButton x:Uid=\"Settings_General_PortableMode_Locate\"\n\t\t\t\t\t\t                 Click=\"{x:Bind ViewModel.OpenConfigLocation}\" />\n\t\t\t\t\t</local:SettingsCard.Description>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsPortableMode, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"Settings_General_ShowNotifyIcon\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE9F5;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsShowNotifyIcon, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t</local:SettingsGroup>\n\t\t\t<local:SettingsGroup x:Uid=\"Settings_Launch\">\n\t\t\t\t<local:SettingsCard x:Uid=\"Settings_Launch_RunAtStartup\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE7B5;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsRunAtStartup, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t\t<local:SettingsCard x:Uid=\"Settings_Launch_AlwaysRunAsAdmin\"\n\t\t\t\t                    IsEnabled=\"{x:Bind ViewModel.IsProcessElevated, Mode=OneTime}\">\n\t\t\t\t\t<local:SettingsCard.HeaderIcon>\n\t\t\t\t\t\t<FontIcon Glyph=\"&#xE7EF;\" />\n\t\t\t\t\t</local:SettingsCard.HeaderIcon>\n\t\t\t\t\t<ToggleSwitch x:Uid=\"ToggleSwitch\"\n\t\t\t\t\t              IsOn=\"{x:Bind ViewModel.IsAlwaysRunAsAdmin, Mode=TwoWay}\" />\n\t\t\t\t</local:SettingsCard>\n\t\t\t</local:SettingsGroup>\n\t\t</local:SimpleStackPanel>\n\t</local:PageFrame>\n</Page>\n"
  },
  {
    "path": "src/Magpie/SettingsViewModel.cpp",
    "content": "#include \"pch.h\"\n#include \"SettingsViewModel.h\"\n#if __has_include(\"SettingsViewModel.g.cpp\")\n#include \"SettingsViewModel.g.cpp\"\n#endif\n#include \"App.h\"\n#include \"AppSettings.h\"\n#include \"AutoStartHelper.h\"\n#include \"CommonSharedConstants.h\"\n#include \"LocalizationService.h\"\n#include \"Win32Helper.h\"\n\nusing namespace Magpie;\n\nnamespace winrt::Magpie::implementation {\n\nIVector<IInspectable> SettingsViewModel::Languages() const {\n\tstd::span<const wchar_t*> tags = LocalizationService::Get().SupportedLanguages();\n\n\tstd::vector<IInspectable> languages;\n\tlanguages.reserve(tags.size() + 1);\n\n\tResourceLoader resourceLoader =\n\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\tlanguages.push_back(box_value(resourceLoader.GetString(L\"Settings_General_Language_System\")));\n\tfor (const wchar_t* tag : tags) {\n\t\tWindows::Globalization::Language language(tag);\n\t\tlanguages.push_back(box_value(language.NativeName()));\n\t}\n\treturn single_threaded_vector(std::move(languages));;\n}\n\nint SettingsViewModel::Language() const noexcept {\n\treturn AppSettings::Get().Language() + 1;\n}\n\nvoid SettingsViewModel::Language(int value) {\n\tif (value < 0) {\n\t\treturn;\n\t}\n\n\tAppSettings::Get().Language(value - 1);\n\tRaisePropertyChanged(L\"Language\");\n\tRaisePropertyChanged(L\"RequireRestart\");\n}\n\nbool SettingsViewModel::RequireRestart() const noexcept {\n\tstatic int initLanguage = AppSettings::Get().Language();\n\treturn AppSettings::Get().Language() != initLanguage;\n}\n\nvoid SettingsViewModel::Restart() const {\n\tApp::Get().Restart();\n}\n\nint SettingsViewModel::Theme() const noexcept {\n\tswitch (AppSettings::Get().Theme()) {\n\tcase AppTheme::System:\n\t\treturn 0;\n\tcase AppTheme::Light:\n\t\treturn 1;\n\tcase AppTheme::Dark:\n\t\treturn 2;\n\tdefault:\n\t\treturn 0;\n\t}\n}\n\nvoid SettingsViewModel::Theme(int value) {\n\tif (value < 0) {\n\t\treturn;\n\t}\n\n\tAppTheme theme;\n\tswitch (value) {\n\tcase 1:\n\t\ttheme = AppTheme::Light;\n\t\tbreak;\n\tcase 2:\n\t\ttheme = AppTheme::Dark;\n\t\tbreak;\n\tdefault:\n\t\ttheme = AppTheme::System;\n\t\tbreak;\n\t}\n\n\tAppSettings::Get().Theme(theme);\n\tRaisePropertyChanged(L\"Theme\");\n}\n\nbool SettingsViewModel::IsRunAtStartup() const noexcept {\n\treturn AutoStartHelper::IsAutoStartEnabled();\n}\n\nvoid SettingsViewModel::IsRunAtStartup(bool value) {\n\tif (value) {\n\t\tAutoStartHelper::EnableAutoStart(AppSettings::Get().IsAlwaysRunAsAdmin());\n\t} else {\n\t\tAutoStartHelper::DisableAutoStart();\n\t}\n\n\tRaisePropertyChanged(L\"IsRunAtStartup\");\n}\n\nbool SettingsViewModel::IsPortableMode() const noexcept {\n\treturn AppSettings::Get().IsPortableMode();\n}\n\nvoid SettingsViewModel::IsPortableMode(bool value) {\n\tAppSettings& settings = AppSettings::Get();\n\n\tif (settings.IsPortableMode() == value) {\n\t\treturn;\n\t}\n\n\tsettings.IsPortableMode(value);\n\tRaisePropertyChanged(L\"IsPortableMode\");\n}\n\nfire_and_forget SettingsViewModel::OpenConfigLocation() const noexcept {\n\tstd::filesystem::path configPath =\n\t\tAppSettings::Get().ConfigDir() / CommonSharedConstants::CONFIG_FILENAME;\n\tco_await resume_background();\n\tWin32Helper::OpenFolderAndSelectFile(configPath.c_str());\n}\n\nbool SettingsViewModel::IsShowNotifyIcon() const noexcept {\n\treturn AppSettings::Get().IsShowNotifyIcon();\n}\n\nvoid SettingsViewModel::IsShowNotifyIcon(bool value) {\n\tAppSettings::Get().IsShowNotifyIcon(value);\n\tRaisePropertyChanged(L\"IsShowNotifyIcon\");\n}\n\nbool SettingsViewModel::IsProcessElevated() const noexcept {\n\treturn Win32Helper::IsProcessElevated();\n}\n\nbool SettingsViewModel::IsAlwaysRunAsAdmin() const noexcept {\n\treturn AppSettings::Get().IsAlwaysRunAsAdmin();\n}\n\nvoid SettingsViewModel::IsAlwaysRunAsAdmin(bool value) {\n\tAppSettings::Get().IsAlwaysRunAsAdmin(value);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/SettingsViewModel.h",
    "content": "#pragma once\n#include \"SettingsViewModel.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct SettingsViewModel : SettingsViewModelT<SettingsViewModel>,\n                           wil::notify_property_changed_base<SettingsViewModel> {\n\tIVector<IInspectable> Languages() const;\n\n\tint Language() const noexcept;\n\tvoid Language(int value);\n\n\tbool RequireRestart() const noexcept;\n\tvoid Restart() const;\n\n\tint Theme() const noexcept;\n\tvoid Theme(int value);\n\n\tbool IsRunAtStartup() const noexcept;\n\tvoid IsRunAtStartup(bool value);\n\n\tbool IsPortableMode() const noexcept;\n\tvoid IsPortableMode(bool value);\n\n\tfire_and_forget OpenConfigLocation() const noexcept;\n\n\tbool IsShowNotifyIcon() const noexcept;\n\tvoid IsShowNotifyIcon(bool value);\n\n\tbool IsProcessElevated() const noexcept;\n\n\tbool IsAlwaysRunAsAdmin() const noexcept;\n\tvoid IsAlwaysRunAsAdmin(bool value);\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/SettingsViewModel.idl",
    "content": "namespace Magpie {\n\truntimeclass SettingsViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tIVector<IInspectable> Languages { get; };\n\t\tInt32 Language;\n\t\tBoolean RequireRestart { get; };\n\t\tvoid Restart();\n\n\t\tInt32 Theme;\n\t\tBoolean IsRunAtStartup;\n\t\tBoolean IsPortableMode;\n\t\tvoid OpenConfigLocation();\n\t\tBoolean IsShowNotifyIcon;\n\n\t\tBoolean IsProcessElevated { get; };\n\t\tBoolean IsAlwaysRunAsAdmin;\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/Shortcut.cpp",
    "content": "#include \"pch.h\"\n#include \"Shortcut.h\"\n#include \"Win32Helper.h\"\n#include \"StrHelper.h\"\n#include \"ShortcutHelper.h\"\n#include \"SmallVector.h\"\n\nnamespace Magpie {\n\nbool Shortcut::IsEmpty() const noexcept {\n\treturn !win && !ctrl && !alt && !shift && code == 0;\n}\n\nvoid Shortcut::Clear() noexcept {\n\twin = false;\n\tctrl = false;\n\talt = false;\n\tshift = false;\n\tcode = 0;\n}\n\nstd::wstring Shortcut::ToString() const noexcept {\n\tstd::wstring output;\n\n\tif (win) {\n\t\toutput.append(L\"Win+\");\n\t}\n\n\tif (ctrl) {\n\t\toutput.append(L\"Ctrl+\");\n\t}\n\n\tif (alt) {\n\t\toutput.append(L\"Alt+\");\n\t}\n\n\tif (shift) {\n\t\toutput.append(L\"Shift+\");\n\t}\n\n\tif (code > 0) {\n\t\toutput.append(Win32Helper::GetKeyName(code));\n\t} else if (output.size() > 1) {\n\t\toutput.pop_back();\n\t}\n\n\treturn output;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/Shortcut.h",
    "content": "#pragma once\n\nnamespace Magpie {\n\nstruct Shortcut {\n\tbool operator==(const Shortcut&) const noexcept = default;\n\n\tbool IsEmpty() const noexcept;\n\n\tvoid Clear() noexcept;\n\n\tstd::wstring ToString() const noexcept;\n\n\t// 0 表示无 Virtual Key\n\tuint8_t code = 0;\n\n\tbool win = false;\n\tbool ctrl = false;\n\tbool alt = false;\n\tbool shift = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ShortcutControl.cpp",
    "content": "#include \"pch.h\"\n#include \"ShortcutControl.h\"\n#if __has_include(\"ShortcutControl.g.cpp\")\n#include \"ShortcutControl.g.cpp\"\n#endif\n#include \"ShortcutHelper.h\"\n#include \"ShortcutService.h\"\n#include \"AppSettings.h\"\n#include \"XamlHelper.h\"\n#include \"ContentDialogHelper.h\"\n#include \"Logger.h\"\n#include \"CommonSharedConstants.h\"\n#include \"App.h\"\n#include \"KeyVisualState.h\"\n#include \"MainWindow.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Controls;\nusing namespace Windows::UI::Xaml::Input;\n\nnamespace winrt::Magpie::implementation {\n\nstatic IVector<IInspectable> ToKeys(const Shortcut& shortcut, bool isError) {\n\tstd::vector<IInspectable> result;\n\n\tif (shortcut.win) {\n\t\tresult.push_back(make<KeyVisualState>(VK_LWIN, isError));\n\t}\n\tif (shortcut.ctrl) {\n\t\tresult.push_back(make<KeyVisualState>(VK_LCONTROL, isError));\n\t}\n\tif (shortcut.alt) {\n\t\tresult.push_back(make<KeyVisualState>(VK_LMENU, isError));\n\t}\n\tif (shortcut.shift) {\n\t\tresult.push_back(make<KeyVisualState>(VK_LSHIFT, isError));\n\t}\n\tif (shortcut.code) {\n\t\tresult.push_back(make<KeyVisualState>((int)shortcut.code, isError));\n\t}\n\n\treturn single_threaded_vector(std::move(result));\n}\n\nShortcutControl* ShortcutControl::_that = nullptr;\n\nShortcutControl::ShortcutControl() {\n\t_shortcutChangedRevoker = AppSettings::Get().ShortcutChanged(\n\t\tauto_revoke, std::bind_front(&ShortcutControl::_AppSettings_OnShortcutChanged, this));\n}\n\nfire_and_forget ShortcutControl::EditButton_Click(IInspectable const&, RoutedEventArgs const&) {\n\tif (ContentDialogHelper::IsAnyDialogOpen()) {\n\t\tco_return;\n\t}\n\n\tif (!_shortcutDialog) {\n\t\t// 惰性初始化\n\t\t_shortcutDialog = ContentDialog();\n\t\t_shortcutDialogContent = make_self<ShortcutDialog>();\n\n\t\t// 设置 Language 属性帮助 XAML 选择合适的字体\n\t\t_shortcutDialog.Language(Language());\n\t\t_shortcutDialog.Title(box_value(_title));\n\t\t_shortcutDialog.Content(*_shortcutDialogContent);\n\t\tResourceLoader resourceLoader =\n\t\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\t\t_shortcutDialog.PrimaryButtonText(resourceLoader.GetString(L\"ShortcutDialog_Save\"));\n\t\t_shortcutDialog.CloseButtonText(resourceLoader.GetString(L\"ShortcutDialog_Cancel\"));\n\t\t_shortcutDialog.DefaultButton(ContentDialogButton::Primary);\n\t\t// 在 Closing 事件中设置热键而不是等待 ShowAsync 返回\n\t\t// 这两个时间点有一定间隔，用户在这段时间内的按键不应处理\n\t\t_shortcutDialog.Closing({ this, &ShortcutControl::_ShortcutDialog_Closing });\n\t}\n\n\t_shortcutDialog.XamlRoot(XamlRoot());\n\t_shortcutDialog.RequestedTheme(ActualTheme());\n\n\t_that = this;\n\t// 防止钩子冲突\n\tShortcutService::Get().StopKeyboardHook();\n\t_keyboardHook.reset(SetWindowsHookEx(WH_KEYBOARD_LL, _LowLevelKeyboardProc, NULL, 0));\n\tif (!_keyboardHook) {\n\t\tLogger::Get().Win32Error(\"SetWindowsHookEx 失败\");\n\t\tShortcutService::Get().StartKeyboardHook();\n\t\tco_return;\n\t}\n\t_previewShortcut = _shortcut;\n\t\n\tShortcutError error = _isError ? ShortcutHelper::CheckShortcut(_previewShortcut) : ShortcutError::NoError;\n\t_shortcutDialogContent->Keys(ToKeys(_previewShortcut, error != ShortcutError::NoError));\n\t_shortcutDialogContent->Error(error);\n\t_shortcutDialog.IsPrimaryButtonEnabled(error == ShortcutError::NoError);\n\t\n\t_pressedKeys.Clear();\n\n\tco_await ContentDialogHelper::ShowAsync(_shortcutDialog);\n}\n\nvoid ShortcutControl::Action(ShortcutAction value) {\n\tif (_action == value) {\n\t\treturn;\n\t}\n\n\t_action = value;\n\tRaisePropertyChanged(L\"Action\");\n\n\t_UpdateShortcut();\n}\n\nvoid ShortcutControl::Title(hstring value) {\n\tif (_title == value) {\n\t\treturn;\n\t}\n\n\t_title = std::move(value);\n\tRaisePropertyChanged(L\"Title\");\n\n\tif (_shortcutDialog) {\n\t\t_shortcutDialog.Title(box_value(_title));\n\t}\n}\n\nvoid ShortcutControl::_ShortcutDialog_Closing(ContentDialog const&, ContentDialogClosingEventArgs const& args) {\n\t_keyboardHook.reset();\n\tShortcutService::Get().StartKeyboardHook();\n\n\tif (args.Result() == ContentDialogResult::Primary) {\n\t\tAppSettings::Get().SetShortcut(Action(), _previewShortcut);\n\t}\n}\n\nLRESULT ShortcutControl::_LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {\n\tif (nCode != HC_ACTION || !_that) {\n\t\treturn CallNextHookEx(NULL, nCode, wParam, lParam);\n\t}\n\n\tconst DWORD code = ((KBDLLHOOKSTRUCT*)lParam)->vkCode;\n\tif (code <= 0 || code >= 255) {\n\t\treturn CallNextHookEx(NULL, nCode, wParam, lParam);\n\t}\n\n\t// 只有位于前台时才监听按键\n\tif (GetForegroundWindow() != App::Get().MainWindow().Handle()) {\n\t\treturn CallNextHookEx(NULL, nCode, wParam, lParam);\n\t}\n\n\tbool isKeyDown = wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN;\n\n\tswitch (code) {\n\tcase VK_LWIN:\n\tcase VK_RWIN:\n\t\t_that->_pressedKeys.win = isKeyDown;\n\t\tbreak;\n\tcase VK_CONTROL:\n\tcase VK_LCONTROL:\n\tcase VK_RCONTROL:\n\t\t_that->_pressedKeys.ctrl = isKeyDown;\n\t\tbreak;\n\tcase VK_SHIFT:\n\tcase VK_LSHIFT:\n\tcase VK_RSHIFT:\n\t\t_that->_pressedKeys.shift = isKeyDown;\n\t\tbreak;\n\tcase VK_MENU:\n\tcase VK_LMENU:\n\tcase VK_RMENU:\n\t\t_that->_pressedKeys.alt = isKeyDown;\n\t\tbreak;\n\tdefault:\n\t{\n\t\tif (code == VK_TAB) {\n\t\t\t// 如果没有按下修饰键或者只按下 Shift，那么此 Tab 用于移动焦点，应把它交给系统\n\t\t\t// 处理，否则将它计入快捷键。一旦计入快捷键，对应的释放消息也不能交给系统，因此\n\t\t\t// 应检查 _pressedKeys.code。\n\t\t\tif (!_that->_pressedKeys.win && !_that->_pressedKeys.ctrl &&\n\t\t\t\t!_that->_pressedKeys.alt && _that->_pressedKeys.code != VK_TAB) {\n\t\t\t\treturn CallNextHookEx(NULL, nCode, wParam, lParam);\n\t\t\t}\n\t\t} else if (code == VK_RETURN) {\n\t\t\t// 焦点在对话框按钮上时按下 Enter 键应触发该按钮，因此交给系统处理\n\t\t\tif (get_class_name(FocusManager::GetFocusedElement(_that->XamlRoot())) == name_of<Button>()) {\n\t\t\t\treturn CallNextHookEx(NULL, nCode, wParam, lParam);\n\t\t\t}\n\t\t}\n\n\t\tif (ShortcutHelper::IsValidKeyCode((uint8_t)code)) {\n\t\t\tif (isKeyDown) {\n\t\t\t\tif (_that->_pressedKeys.code == (uint8_t)code) {\n\t\t\t\t\t// 忽略按住某个键触发的自动重复击键\n\t\t\t\t\treturn -1;\n\t\t\t\t} else {\n\t\t\t\t\t_that->_pressedKeys.code = (uint8_t)code;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t_that->_pressedKeys.code = 0;\n\t\t\t}\n\t\t} else {\n\t\t\t// 不支持的键位还给系统\n\t\t\treturn CallNextHookEx(NULL, nCode, wParam, lParam);\n\t\t}\n\t\t\n\t\tbreak;\n\t}\n\t}\n\n\tif (isKeyDown) {\n\t\tShortcut& previewShortcut = _that->_previewShortcut;\n\n\t\tpreviewShortcut = _that->_pressedKeys;\n\n\t\tShortcutError error = ShortcutError::NoError;\n\t\tbool isPrimaryButtonEnabled = false;\n\t\tif (previewShortcut == _that->_shortcut && !_that->_isError) {\n\t\t\tisPrimaryButtonEnabled = true;\n\t\t} else {\n\t\t\tUINT modCount = 0;\n\t\t\tif (previewShortcut.code == 0) {\n\t\t\t\tif (previewShortcut.win) {\n\t\t\t\t\t++modCount;\n\t\t\t\t}\n\t\t\t\tif (previewShortcut.alt) {\n\t\t\t\t\t++modCount;\n\t\t\t\t}\n\t\t\t\tif (modCount <= 1 && previewShortcut.ctrl) {\n\t\t\t\t\t++modCount;\n\t\t\t\t}\n\t\t\t\tif (modCount <= 1 && previewShortcut.shift) {\n\t\t\t\t\t++modCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (modCount == 1) {\n\t\t\t\t// 只按下一个修饰键时不显示错误\n\t\t\t\tisPrimaryButtonEnabled = false;\n\t\t\t} else {\n\t\t\t\terror = ShortcutHelper::CheckShortcut(previewShortcut);\n\t\t\t\tisPrimaryButtonEnabled = error == ShortcutError::NoError;\n\t\t\t}\n\t\t}\n\n\t\t_that->_shortcutDialogContent->Keys(ToKeys(previewShortcut, error != ShortcutError::NoError));\n\t\t_that->_shortcutDialogContent->Error(error);\n\t\t_that->_shortcutDialog.IsPrimaryButtonEnabled(isPrimaryButtonEnabled);\n\t}\n\n\treturn -1;\n}\n\nvoid ShortcutControl::_AppSettings_OnShortcutChanged(ShortcutAction action) {\n\tif (action == Action()) {\n\t\t_UpdateShortcut();\n\t}\n}\n\nvoid ShortcutControl::_UpdateShortcut() {\n\tShortcutAction action = Action();\n\tconst Shortcut& shortcut = AppSettings::Get().GetShortcut(action);\n\n\t_shortcut = shortcut;\n\t// 此时 ShortcutService 中的回调已执行\n\t_isError = ShortcutService::Get().IsError(action);\n\tKeysControl().ItemsSource(ToKeys(_shortcut, _isError));\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ShortcutControl.h",
    "content": "#pragma once\n#include \"ShortcutControl.g.h\"\n#include \"Event.h\"\n#include \"Shortcut.h\"\n#include \"ShortcutDialog.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct ShortcutControl : ShortcutControlT<ShortcutControl>, wil::notify_property_changed_base<ShortcutControl> {\n\tShortcutControl();\n\n\tfire_and_forget EditButton_Click(IInspectable const&, RoutedEventArgs const&);\n\n\tShortcutAction Action() const { return _action; }\n\tvoid Action(ShortcutAction value);\n\n\thstring Title() const { return _title; }\n\tvoid Title(hstring value);\n\nprivate:\n\tvoid _ShortcutDialog_Closing(ContentDialog const&, ContentDialogClosingEventArgs const& args);\n\n\tstatic LRESULT CALLBACK _LowLevelKeyboardProc(\n\t\tint    nCode,\n\t\tWPARAM wParam,\n\t\tLPARAM lParam\n\t);\n\n\tvoid _AppSettings_OnShortcutChanged(ShortcutAction action);\n\n\tvoid _UpdateShortcut();\n\n\tShortcutAction _action = ShortcutAction::COUNT_OR_NONE;\n\thstring _title;\n\n\t::Magpie::Event<winrt::Magpie::ShortcutAction>::EventRevoker _shortcutChangedRevoker;\n\n\t::Magpie::Shortcut _shortcut;\n\tContentDialog _shortcutDialog{ nullptr };\n\tcom_ptr<ShortcutDialog> _shortcutDialogContent;\n\n\twil::unique_hhook _keyboardHook;\n\t// 用于向键盘钩子传递 this 指针\n\t// 使用静态成员是一个权宜之计，因为只能同时显示一个弹出窗口\n\t// 有没有更好的方法？\n\tstatic ShortcutControl* _that;\n\n\t::Magpie::Shortcut _previewShortcut;\n\t::Magpie::Shortcut _pressedKeys;\n\n\tbool _isError = false;\n};\n\n}\n\nBASIC_FACTORY(ShortcutControl)\n"
  },
  {
    "path": "src/Magpie/ShortcutControl.idl",
    "content": "namespace Magpie {\n\tenum ShortcutAction {\n\t\tScale,\n\t\tWindowedModeScale,\n\t\tToolbar,\n\t\tCOUNT_OR_NONE\n\t};\n\n\truntimeclass ShortcutControl : Windows.UI.Xaml.Controls.Grid, Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tShortcutControl();\n\n\t\tShortcutAction Action;\n\t\tString Title;\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/ShortcutControl.xaml",
    "content": "<!--  移植自 https://github.com/microsoft/PowerToys/blob/35bfb0f83e5fc08cc04398e7aa98d77774412d3f/src/settings-ui/Settings.UI/Controls/ShortcutControl/ShortcutControl.xaml  -->\n<Grid x:Class=\"Magpie.ShortcutControl\"\n      xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n      xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n      xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n      xmlns:local=\"using:Magpie\"\n      xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n      mc:Ignorable=\"d\">\n\t<Button Margin=\"0,-6,0,-6\"\n\t        Padding=\"0\"\n\t        Background=\"Transparent\"\n\t        BorderBrush=\"Transparent\"\n\t        BorderThickness=\"0\"\n\t        Click=\"EditButton_Click\">\n\t\t<Button.Resources>\n\t\t\t<ResourceDictionary>\n\t\t\t\t<ResourceDictionary.ThemeDictionaries>\n\t\t\t\t\t<ResourceDictionary x:Key=\"Default\" />\n\t\t\t\t\t<ResourceDictionary x:Key=\"HighContrast\" />\n\t\t\t\t\t<ResourceDictionary x:Key=\"Light\">\n\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackground\"\n\t\t\t\t\t\t                ResourceKey=\"SubtleFillColorTransparentBrush\" />\n\t\t\t\t\t\t<SolidColorBrush x:Key=\"ButtonBackgroundPointerOver\"\n\t\t\t\t\t\t                 Color=\"#0B000000\" />\n\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBackgroundPressed\"\n\t\t\t\t\t\t                ResourceKey=\"SubtleFillColorTertiaryBrush\" />\n\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBorderBrush\"\n\t\t\t\t\t\t                ResourceKey=\"ControlFillColorTransparentBrush\" />\n\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBorderBrushPointerOver\"\n\t\t\t\t\t\t                ResourceKey=\"ControlFillColorTransparentBrush\" />\n\t\t\t\t\t\t<StaticResource x:Key=\"ButtonBorderBrushPressed\"\n\t\t\t\t\t\t                ResourceKey=\"ControlFillColorTransparentBrush\" />\n\t\t\t\t\t</ResourceDictionary>\n\t\t\t\t</ResourceDictionary.ThemeDictionaries>\n\t\t\t</ResourceDictionary>\n\t\t</Button.Resources>\n\t\t<local:SimpleStackPanel Margin=\"6,0,6,0\"\n\t\t                        Orientation=\"Horizontal\"\n\t\t                        Spacing=\"16\">\n\t\t\t<ItemsControl x:Name=\"KeysControl\"\n\t\t\t              VerticalAlignment=\"Center\"\n\t\t\t              IsTabStop=\"False\">\n\t\t\t\t<ItemsControl.ItemsPanel>\n\t\t\t\t\t<ItemsPanelTemplate>\n\t\t\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t\t\t                        Spacing=\"4\" />\n\t\t\t\t\t</ItemsPanelTemplate>\n\t\t\t\t</ItemsControl.ItemsPanel>\n\t\t\t\t<ItemsControl.ItemTemplate>\n\t\t\t\t\t<DataTemplate x:DataType=\"local:KeyVisualState\">\n\t\t\t\t\t\t<local:KeyVisual Key=\"{x:Bind Key, Mode=OneTime}\"\n\t\t\t\t\t\t                 VerticalAlignment=\"Center\"\n\t\t\t\t\t\t                 IsError=\"{x:Bind IsError, Mode=OneTime}\"\n\t\t\t\t\t\t                 IsTabStop=\"False\"\n\t\t\t\t\t\t                 VisualType=\"Small\" />\n\t\t\t\t\t</DataTemplate>\n\t\t\t\t</ItemsControl.ItemTemplate>\n\t\t\t</ItemsControl>\n\t\t\t<FontIcon FontSize=\"16\"\n\t\t\t          Glyph=\"&#xE70F;\" />\n\t\t</local:SimpleStackPanel>\n\t</Button>\n</Grid>\n"
  },
  {
    "path": "src/Magpie/ShortcutDialog.cpp",
    "content": "#include \"pch.h\"\n#include \"ShortcutDialog.h\"\n#if __has_include(\"ShortcutDialog.g.cpp\")\n#include \"ShortcutDialog.g.cpp\"\n#endif\n#include \"CommonSharedConstants.h\"\n\nusing namespace ::Magpie;\n\nnamespace winrt::Magpie::implementation {\n\nvoid ShortcutDialog::Error(ShortcutError value) {\n\tswitch (value) {\n\tcase ShortcutError::NoError:\n\t{\n\t\tWarningBanner().Visibility(Visibility::Collapsed);\n\t\tbreak;\n\t}\n\tcase ShortcutError::Invalid:\n\t{\n\t\tWarningBanner().Visibility(Visibility::Visible);\n\t\tResourceLoader resourceLoader =\n\t\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\t\tInvalidShortcutWarningLabel().Text(resourceLoader.GetString(L\"ShortcutDialog_InvalidShortcut\"));\n\t\tbreak;\n\t}\n\tcase ShortcutError::InUse:\n\t{\n\t\tWarningBanner().Visibility(Visibility::Visible);\n\t\tResourceLoader resourceLoader =\n\t\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\t\tInvalidShortcutWarningLabel().Text(resourceLoader.GetString(L\"ShortcutDialog_InUse\"));\n\t\tbreak;\n\t}\n\tdefault:\n\t\tassert(false);\n\t\tbreak;\n\t}\n}\n\nvoid ShortcutDialog::Keys(IVector<IInspectable> value) {\n\tKeysControl().ItemsSource(std::move(value));\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ShortcutDialog.h",
    "content": "#pragma once\n#include \"ShortcutDialog.g.h\"\n#include \"ShortcutHelper.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct ShortcutDialog : ShortcutDialogT<ShortcutDialog> {\n\tvoid Error(::Magpie::ShortcutError value);\n\tvoid Keys(IVector<IInspectable> value);\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ShortcutDialog.idl",
    "content": "namespace Magpie {\n\t[default_interface]\n\truntimeclass ShortcutDialog : Windows.UI.Xaml.Controls.Grid {\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/ShortcutDialog.xaml",
    "content": "<Grid x:Class=\"Magpie.ShortcutDialog\"\n      xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n      xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n      xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n      xmlns:local=\"using:Magpie\"\n      xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n      xmlns:muxc=\"using:Microsoft.UI.Xaml.Controls\"\n      MinWidth=\"498\"\n      MinHeight=\"220\"\n      mc:Ignorable=\"d\">\n\n\t<Grid.RowDefinitions>\n\t\t<RowDefinition Height=\"Auto\" />\n\t\t<RowDefinition MinHeight=\"110\" />\n\t\t<RowDefinition Height=\"Auto\" />\n\t</Grid.RowDefinitions>\n\n\t<TextBlock x:Uid=\"ShortcutDialog_Description\"\n\t           Grid.Row=\"0\" />\n\n\t<ItemsControl x:Name=\"KeysControl\"\n\t              Grid.Row=\"1\"\n\t              Height=\"56\"\n\t              Margin=\"0,64,0,0\"\n\t              HorizontalAlignment=\"Center\"\n\t              VerticalAlignment=\"Top\"\n\t              HorizontalContentAlignment=\"Center\"\n\t              IsTabStop=\"False\">\n\t\t<ItemsControl.ItemsPanel>\n\t\t\t<ItemsPanelTemplate>\n\t\t\t\t<local:SimpleStackPanel Orientation=\"Horizontal\"\n\t\t\t\t                        Spacing=\"8\" />\n\t\t\t</ItemsPanelTemplate>\n\t\t</ItemsControl.ItemsPanel>\n\t\t<ItemsControl.ItemTemplate>\n\t\t\t<DataTemplate x:DataType=\"local:KeyVisualState\">\n\t\t\t\t<local:KeyVisual Key=\"{x:Bind Key, Mode=OneTime}\"\n\t\t\t\t                 Height=\"56\"\n\t\t\t\t                 IsError=\"{x:Bind IsError, Mode=OneTime}\"\n\t\t\t\t                 IsTabStop=\"False\"\n\t\t\t\t                 VisualType=\"Large\" />\n\t\t\t</DataTemplate>\n\t\t</ItemsControl.ItemTemplate>\n\t</ItemsControl>\n\n\t<local:SimpleStackPanel Grid.Row=\"2\"\n\t                        Margin=\"0,24,0,0\"\n\t                        VerticalAlignment=\"Top\"\n\t                        Spacing=\"8\">\n\t\t<Grid Height=\"36\">\n\t\t\t<Border x:Name=\"WarningBanner\"\n\t\t\t        Margin=\"-2,0,0,0\"\n\t\t\t        Padding=\"8\"\n\t\t\t        Background=\"{ThemeResource InfoBarErrorSeverityBackgroundBrush}\"\n\t\t\t        BorderBrush=\"{ThemeResource InfoBarBorderBrush}\"\n\t\t\t        BorderThickness=\"{ThemeResource InfoBarBorderThickness}\"\n\t\t\t        CornerRadius=\"{ThemeResource ControlCornerRadius}\">\n\t\t\t\t<Grid>\n\t\t\t\t\t<Grid.ColumnDefinitions>\n\t\t\t\t\t\t<ColumnDefinition Width=\"Auto\" />\n\t\t\t\t\t\t<ColumnDefinition Width=\"*\" />\n\t\t\t\t\t</Grid.ColumnDefinitions>\n\n\t\t\t\t\t<muxc:InfoBadge Margin=\"2,0,12,0\"\n\t\t\t\t\t                Style=\"{StaticResource CriticalIconInfoBadgeStyle}\" />\n\n\t\t\t\t\t<TextBlock x:Name=\"InvalidShortcutWarningLabel\"\n\t\t\t\t\t           Grid.Column=\"1\"\n\t\t\t\t\t           Margin=\"0,-1,0,0\"\n\t\t\t\t\t           VerticalAlignment=\"Center\"\n\t\t\t\t\t           FontWeight=\"{ThemeResource InfoBarTitleFontWeight}\"\n\t\t\t\t\t           Foreground=\"{ThemeResource InfoBarTitleForeground}\" />\n\t\t\t\t</Grid>\n\t\t\t</Border>\n\t\t</Grid>\n\t\t<TextBlock x:Uid=\"ShortcutDialog_Tip\"\n\t\t           HorizontalAlignment=\"Left\"\n\t\t           FontSize=\"12\"\n\t\t           Foreground=\"{ThemeResource TextFillColorSecondaryBrush}\"\n\t\t           TextWrapping=\"WrapWholeWords\" />\n\t</local:SimpleStackPanel>\n</Grid>\n"
  },
  {
    "path": "src/Magpie/ShortcutHelper.cpp",
    "content": "#include \"pch.h\"\n#include \"ShortcutHelper.h\"\n#include \"Win32Helper.h\"\n#include <bitset>\n\nusing namespace winrt::Magpie;\n\nnamespace Magpie {\n\nstd::string ShortcutHelper::ToString(ShortcutAction action) noexcept {\n\tswitch (action) {\n\tcase ShortcutAction::Scale:\n\t\treturn \"Scale\";\n\tcase ShortcutAction::WindowedModeScale:\n\t\treturn \"WindowedModeScale\";\n\tcase ShortcutAction::Toolbar:\n\t\treturn \"Toolbar\";\n\tcase ShortcutAction::COUNT_OR_NONE:\n\t\treturn \"None\";\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn {};\n}\n\nbool ShortcutHelper::IsValidKeyCode(uint8_t code) noexcept {\n\t// C++23 可编译时求值\n\tstatic std::bitset<256> validKeyCodes = []() {\n\t\tstd::bitset<256> result;\n\n\t\t// 字母\n\t\tfor (uint8_t i = 'A'; i <= 'Z'; ++i) {\n\t\t\tresult[i] = true;\n\t\t}\n\n\t\t// 数字（顶部）\n\t\tfor (uint8_t i = '0'; i <= '9'; ++i) {\n\t\t\tresult[i] = true;\n\t\t}\n\n\t\t// 数字（小键盘）\n\t\tfor (uint8_t i = VK_NUMPAD0; i <= VK_NUMPAD9; ++i) {\n\t\t\tresult[i] = true;\n\t\t}\n\n\t\t// F1~F24\n\t\tfor (uint8_t i = VK_F1; i <= VK_F24; ++i) {\n\t\t\tresult[i] = true;\n\t\t}\n\n\t\t// 空格、Page Up/Down、End、Home、方向键\n\t\tfor (uint8_t i = VK_SPACE; i <= VK_DOWN; ++i) {\n\t\t\tresult[i] = true;\n\t\t}\n\n\t\t// 分号、等号、逗号、-、句号、/、`\n\t\tfor (uint8_t i = VK_OEM_1; i <= VK_OEM_3; ++i) {\n\t\t\tresult[i] = true;\n\t\t}\n\n\t\t// [、\\、]、'\n\t\tfor (uint8_t i = VK_OEM_4; i <= VK_OEM_7; ++i) {\n\t\t\tresult[i] = true;\n\t\t}\n\n\t\tresult[VK_INSERT] = true;\n\t\tresult[VK_DELETE] = true;\n\t\tresult[VK_ADD] = true;\t\t// 加（小键盘）\n\t\tresult[VK_SUBTRACT] = true;\t// 减（小键盘）\n\t\tresult[VK_MULTIPLY] = true;\t// 乘（小键盘）\n\t\tresult[VK_DIVIDE] = true;\t// 除（小键盘）\n\t\tresult[VK_DECIMAL] = true;\t// .（小键盘）\n\t\tresult[VK_BACK] = true;\t\t// Backspace\n\t\tresult[VK_RETURN] = true;\t// 回车\n\t\tresult[VK_TAB] = true;\n\t\tresult[VK_SNAPSHOT] = true;\t// Print Screen\n\t\tresult[VK_PAUSE] = true;\n\t\tresult[VK_CANCEL] = true;\t// Break（即 Ctrl+Pause）\n\n\t\treturn result;\n\t}();\n\n\treturn validKeyCodes[code];\n}\n\nShortcutError ShortcutHelper::CheckShortcut(Shortcut shortcut) noexcept {\n\tUINT modifiers = MOD_NOREPEAT;\n\tUINT modCount = 0;\n\n\tif (shortcut.win) {\n\t\t++modCount;\n\t\tmodifiers |= MOD_WIN;\n\t}\n\tif (shortcut.ctrl) {\n\t\t++modCount;\n\t\tmodifiers |= MOD_CONTROL;\n\t}\n\tif (shortcut.alt) {\n\t\t++modCount;\n\t\tmodifiers |= MOD_ALT;\n\t}\n\tif (shortcut.shift) {\n\t\t++modCount;\n\t\tmodifiers |= MOD_SHIFT;\n\t}\n\n\tif (modCount == 0 || (modCount == 1 && shortcut.code == 0)) {\n\t\t// 必须存在 Modifier\n\t\t// 如果只有一个 Modifier 则必须存在 Virtual Key\n\t\treturn ShortcutError::Invalid;\n\t}\n\n\t// 检测快捷键是否被占用\n\tif (!RegisterHotKey(NULL, (int)ShortcutAction::COUNT_OR_NONE, modifiers, shortcut.code)) {\n\t\treturn ShortcutError::InUse;\n\t}\n\n\tUnregisterHotKey(NULL, (int)ShortcutAction::COUNT_OR_NONE);\n\treturn ShortcutError::NoError;\n}\n\n} // namespace winrt::Magpie\n\nnamespace winrt {\n\nusing Magpie::ShortcutAction;\n\nhstring to_hstring(ShortcutAction action) {\n\tswitch (action) {\n\tcase ShortcutAction::Scale:\n\t\treturn L\"Scale\";\n\tcase ShortcutAction::WindowedModeScale:\n\t\treturn L\"WindowedModeScale\";\n\tcase ShortcutAction::Toolbar:\n\t\treturn L\"Toolbar\";\n\tcase ShortcutAction::COUNT_OR_NONE:\n\t\treturn L\"None\";\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn {};\n}\n\n} // namespace winrt\n"
  },
  {
    "path": "src/Magpie/ShortcutHelper.h",
    "content": "#pragma once\n#include <winrt/Magpie.h>\n#include \"Shortcut.h\"\n\nnamespace Magpie {\n\nenum class ShortcutError {\n\tNoError,\n\tInvalid,\n\tInUse\n};\n\nstruct ShortcutHelper {\n\tstatic std::string ToString(winrt::Magpie::ShortcutAction action) noexcept;\n\n\tstatic bool IsValidKeyCode(uint8_t code) noexcept;\n\n\tstatic ShortcutError CheckShortcut(Shortcut shortcut) noexcept;\n};\n\n}\n\nnamespace winrt {\n\n// 将 ShortcutAction 映射为字符串\nhstring to_hstring(Magpie::ShortcutAction action);\n\n}\n"
  },
  {
    "path": "src/Magpie/ShortcutService.cpp",
    "content": "#include \"pch.h\"\n#include \"App.h\"\n#include \"AppSettings.h\"\n#include \"CommonSharedConstants.h\"\n#include \"Logger.h\"\n#include \"ShortcutHelper.h\"\n#include \"ShortcutService.h\"\n\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n//\n// 实现快捷键功能\n// \n// Windows 上一般有两种实现热键的方法，它们各有限制: \n// 1. RegisterHotKey: 在某些游戏上不可靠\n// 2. 键盘钩子: 如果前台窗口是管理员而 Magpie 不是，此方法无效\n// 为了使热键最大程度的可用，这两种方法都被使用。采用下述措施防止它们被同时触发: \n// 1. 键盘钩子会先被触发，然后吞下热键，防止触发 RegisterHotKey\n// 2. 限制热键的触发频率\n//\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nusing namespace ::Magpie;\nusing namespace winrt::Magpie::implementation;\nusing namespace winrt;\n\nusing winrt::Magpie::ShortcutAction;\n\nnamespace Magpie {\n\nvoid ShortcutService::Initialize() {\n\tHINSTANCE hInst = wil::GetModuleInstanceHandle();\n\n\tWNDCLASSEXW wcex{\n\t\t.cbSize = sizeof(wcex),\n\t\t.lpfnWndProc = _WndProcStatic,\n\t\t.hInstance = hInst,\n\t\t.lpszClassName = CommonSharedConstants::HOTKEY_WINDOW_CLASS_NAME\n\t};\n\tRegisterClassEx(&wcex);\n\n\t_hwndHotkey.reset(CreateWindow(CommonSharedConstants::HOTKEY_WINDOW_CLASS_NAME,\n\t\tnullptr, 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, hInst, 0));\n\n\tfor (int i = 0; i < (int)ShortcutAction::COUNT_OR_NONE; ++i) {\n\t\t_RegisterShortcut((ShortcutAction)i);\n\t}\n\n\t_shortcutChangedRevoker = AppSettings::Get().ShortcutChanged(\n\t\tauto_revoke, std::bind_front(&ShortcutService::_AppSettings_OnShortcutChanged, this));\n\n\t_keyboardHook.reset(SetWindowsHookEx(WH_KEYBOARD_LL, _LowLevelKeyboardProc, NULL, NULL));\n\tif (!_keyboardHook) {\n\t\tLogger::Get().Win32Error(\"SetWindowsHookEx 失败\");\n\t}\n}\n\nvoid ShortcutService::Uninitialize() {\n\tif (!_hwndHotkey) {\n\t\treturn;\n\t}\n\n\t_keyboardHook.reset();\n\n\tfor (int i = 0; i < (int)ShortcutAction::COUNT_OR_NONE; ++i) {\n\t\tif (!_shortcutInfos[i].isError) {\n\t\t\tUnregisterHotKey(_hwndHotkey.get(), i);\n\t\t}\n\t}\n\t\n\t_hwndHotkey.reset();\n\n\t_shortcutChangedRevoker.Revoke();\n}\n\nLRESULT ShortcutService::_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {\n\tif (message == WM_HOTKEY) {\n\t\tif (wParam >= 0 && wParam < (UINT)ShortcutAction::COUNT_OR_NONE) {\n\t\t\tShortcutAction action = (ShortcutAction)wParam;\n\t\t\tLogger::Get().Info(fmt::format(\"热键 {} 激活（Hotkey）\", ShortcutHelper::ToString(action)));\n\t\t\t_FireShortcut(action);\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\treturn DefWindowProc(hWnd, message, wParam, lParam);\n}\n\nvoid ShortcutService::_AppSettings_OnShortcutChanged(ShortcutAction action) {\n\t_RegisterShortcut(action);\n}\n\nvoid ShortcutService::_RegisterShortcut(ShortcutAction action) {\n\tconst Shortcut& shortcut = AppSettings::Get().GetShortcut(action);\n\tbool& isError = _shortcutInfos[(size_t)action].isError;\n\n\tUnregisterHotKey(_hwndHotkey.get(), (int)action);\n\n\tif (shortcut.IsEmpty() || ShortcutHelper::CheckShortcut(shortcut) != ShortcutError::NoError) {\n\t\tLogger::Get().Win32Error(fmt::format(\"注册热键 {} 失败\", ShortcutHelper::ToString(action)));\n\t\tisError = true;\n\t\treturn;\n\t}\n\n\tUINT modifiers = MOD_NOREPEAT;\n\n\tif (shortcut.win) {\n\t\tmodifiers |= MOD_WIN;\n\t}\n\tif (shortcut.ctrl) {\n\t\tmodifiers |= MOD_CONTROL;\n\t}\n\tif (shortcut.alt) {\n\t\tmodifiers |= MOD_ALT;\n\t}\n\tif (shortcut.shift) {\n\t\tmodifiers |= MOD_SHIFT;\n\t}\n\n\tisError = !RegisterHotKey(_hwndHotkey.get(), (int)action, modifiers, shortcut.code);\n\tif (isError) {\n\t\tLogger::Get().Win32Error(fmt::format(\"注册热键 {} 失败\", ShortcutHelper::ToString(action)));\n\t}\n}\n\nvoid ShortcutService::_FireShortcut(ShortcutAction action) {\n\tusing namespace std::chrono;\n\n\t// 限制触发频率\n\tauto cur = steady_clock::now();\n\tauto& lastFireTime = _shortcutInfos[(size_t)action].lastFireTime;\n\tif (duration_cast<milliseconds>(cur - lastFireTime).count() < 100) {\n\t\treturn;\n\t}\n\n\tlastFireTime = cur;\n\tShortcutActivated.Invoke(action);\n}\n\nLRESULT CALLBACK ShortcutService::_LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {\n\tShortcutService& that = Get();\n\tconst KBDLLHOOKSTRUCT* info = ((KBDLLHOOKSTRUCT*)lParam);\n\n\tif (nCode < 0 || ((wParam != WM_KEYDOWN) && (wParam != WM_SYSKEYDOWN)) || !that._isKeyboardHookActive) {\n\t\t// 遇到为了防止激活开始菜单而发送的假键时不重置 _keyboardHookShortcutActivated\n\t\tthat._keyboardHookShortcutActivated = info->vkCode == 0xFF && wParam == WM_KEYUP && info->dwExtraInfo == 1;\n\t\treturn CallNextHookEx(NULL, nCode, wParam, lParam);\n\t}\n\n\tconst DWORD code = info->vkCode;\n\tif (code <= 0 || code >= 255) {\n\t\tthat._keyboardHookShortcutActivated = false;\n\t\treturn CallNextHookEx(NULL, nCode, wParam, lParam);\n\t}\n\n\tint codeType = 0;\n\tswitch (code) {\n\tcase VK_LWIN:\n\tcase VK_RWIN:\n\t\tcodeType = 0;\n\t\tbreak;\n\tcase VK_CONTROL:\n\tcase VK_LCONTROL:\n\tcase VK_RCONTROL:\n\t\tcodeType = 1;\n\t\tbreak;\n\tcase VK_SHIFT:\n\tcase VK_LSHIFT:\n\tcase VK_RSHIFT:\n\t\tcodeType = 2;\n\t\tbreak;\n\tcase VK_MENU:\n\tcase VK_LMENU:\n\tcase VK_RMENU:\n\t\tcodeType = 3;\n\t\tbreak;\n\tdefault:\n\t\tif (!ShortcutHelper::IsValidKeyCode((uint8_t)code)) {\n\t\t\tthat._keyboardHookShortcutActivated = false;\n\t\t\treturn CallNextHookEx(NULL, nCode, wParam, lParam);\n\t\t}\n\t\tcodeType = 4;\n\t\tbreak;\n\t}\n\n\t// 获取当前按键状态\n\t// 在键盘钩子被调用时，GetAsyncKeyState 的状态尚未更新\n\tShortcut curKeys;\n\tcurKeys.win = codeType == 0 || (GetAsyncKeyState(VK_LWIN) & 0x8000) || (GetAsyncKeyState(VK_RWIN) & 0x8000);\n\tcurKeys.ctrl = codeType == 1 || static_cast<bool>(GetAsyncKeyState(VK_CONTROL) & 0x8000);\n\tcurKeys.shift = codeType == 2 || static_cast<bool>(GetAsyncKeyState(VK_SHIFT) & 0x8000);\n\tcurKeys.alt = codeType == 3 || static_cast<bool>(GetAsyncKeyState(VK_MENU) & 0x8000);\n\tif (codeType == 4) {\n\t\tcurKeys.code = (uint8_t)code;\n\t}\n\n\t// 查找匹配热键\n\tfor (uint32_t i = 0; i < (uint32_t)ShortcutAction::COUNT_OR_NONE; ++i) {\n\t\tShortcutAction action = (ShortcutAction)i;\n\t\tif (that.IsError(action)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (AppSettings::Get().GetShortcut(action) == curKeys) {\n\t\t\t// 防止长按时重复触发热键\n\t\t\tif (!that._keyboardHookShortcutActivated) {\n\t\t\t\tthat._keyboardHookShortcutActivated = true;\n\n\t\t\t\t// 延迟执行回调以缩短钩子的处理时间\n\t\t\t\tApp::Get().Dispatcher().TryEnqueue(\n\t\t\t\t\t[action]() {\n\t\t\t\t\t\tLogger::Get().Info(fmt::format(\"热键 {} 激活（Keyboard Hook）\", ShortcutHelper::ToString(action)));\n\t\t\t\t\t\tGet()._FireShortcut(action);\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tif (curKeys.win && !curKeys.ctrl && !curKeys.shift && !curKeys.alt) {\n\t\t\t\t\t// 防止激活开始菜单\n\t\t\t\t\tINPUT dummyEvent{};\n\t\t\t\t\tdummyEvent.type = INPUT_KEYBOARD;\n\t\t\t\t\tdummyEvent.ki.wVk = 0xFF;\n\t\t\t\t\tdummyEvent.ki.dwFlags = KEYEVENTF_KEYUP;\n\t\t\t\t\tdummyEvent.ki.dwExtraInfo = 1;\n\t\t\t\t\tSendInput(1, &dummyEvent, sizeof(INPUT));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// 防止触发由 RegisterHotKey 注册的热键\n\t\t\treturn 1;\n\t\t}\n\t}\n\n\tthat._keyboardHookShortcutActivated = false;\n\treturn CallNextHookEx(NULL, nCode, wParam, lParam);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ShortcutService.h",
    "content": "#pragma once\n#include \"Event.h\"\n#include <winrt/Magpie.h>\n\nnamespace Magpie {\n\nclass ShortcutService {\npublic:\n\tstatic ShortcutService& Get() noexcept {\n\t\tstatic ShortcutService instance;\n\t\treturn instance;\n\t}\n\n\tShortcutService(const ShortcutService&) = delete;\n\tShortcutService(ShortcutService&&) = delete;\n\n\tvoid Initialize();\n\n\tvoid Uninitialize();\n\n\tbool IsError(winrt::Magpie::ShortcutAction action) const noexcept {\n\t\treturn _shortcutInfos[(size_t)action].isError;\n\t}\n\n\tvoid StopKeyboardHook() noexcept {\n\t\t_isKeyboardHookActive = false;\n\t}\n\n\tvoid StartKeyboardHook() noexcept {\n\t\t_isKeyboardHookActive = true;\n\t}\n\n\tEvent<winrt::Magpie::ShortcutAction> ShortcutActivated;\n\nprivate:\n\tShortcutService() = default;\n\n\tstatic LRESULT _WndProcStatic(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {\n\t\treturn Get()._WndProc(hWnd, msg, wParam, lParam);\n\t}\n\tLRESULT _WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\n\n\tvoid _AppSettings_OnShortcutChanged(winrt::Magpie::ShortcutAction action);\n\n\tvoid _RegisterShortcut(winrt::Magpie::ShortcutAction action);\n\n\tvoid _FireShortcut(winrt::Magpie::ShortcutAction action);\n\n\tstatic LRESULT CALLBACK _LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);\n\n\tstruct _ShortcutInfo {\n\t\tstd::chrono::steady_clock::time_point lastFireTime{};\n\t\tbool isError = true;\n\t};\n\tstd::array<_ShortcutInfo, (size_t)winrt::Magpie::ShortcutAction::COUNT_OR_NONE> _shortcutInfos{};\n\twil::unique_hwnd _hwndHotkey;\n\twil::unique_hhook _keyboardHook;\n\n\tEvent<winrt::Magpie::ShortcutAction>::EventRevoker _shortcutChangedRevoker;\n\n\tbool _isKeyboardHookActive = true;\n\t// 用于防止长按时重复触发热键\n\tbool _keyboardHookShortcutActivated = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/SimpleStackPanel.cpp",
    "content": "#include \"pch.h\"\n#include \"SimpleStackPanel.h\"\n#if __has_include(\"SimpleStackPanel.g.cpp\")\n#include \"SimpleStackPanel.g.cpp\"\n#endif\n\nnamespace winrt::Magpie::implementation {\n\nvoid SimpleStackPanel::Orientation(enum Orientation value) {\n\tif (_orientation == value) {\n\t\treturn;\n\t}\n\n\t_orientation = value;\n\tRaisePropertyChanged(L\"Orientation\");\n\n\t_UpdateLayout();\n}\n\nvoid SimpleStackPanel::Padding(const Thickness& value) {\n\tif (_padding == value) {\n\t\treturn;\n\t}\n\n\t_padding = value;\n\tRaisePropertyChanged(L\"Padding\");\n\n\t_UpdateLayout();\n}\n\nvoid SimpleStackPanel::Spacing(double value) {\n\tif (_spacing == value) {\n\t\treturn;\n\t}\n\n\t_spacing = value;\n\tRaisePropertyChanged(L\"Spacing\");\n\n\t_UpdateLayout();\n}\n\nSize SimpleStackPanel::MeasureOverride(const Size& availableSize) const {\n\tconst bool isVertical = _orientation == Orientation::Vertical;\n\tconst float spacing = (float)_spacing;\n\tconst Size paddings{ (float)_padding.Left + (float)_padding.Right,(float)_padding.Top + (float)_padding.Bottom };\n\n\tconst Size childAvailableSize{\n\t\tavailableSize.Width - paddings.Width,\n\t\tavailableSize.Height - paddings.Height\n\t};\n\n\tbool firstItem = true;\n\tbool anyStretch = false;\n\tSize finalSize{ paddings.Width, paddings.Height };\n\n\tfor (UIElement const& item : Children()) {\n\t\t// 调用 Measure 可以初始化绑定，因此即使子项不可见也要调用\n\t\titem.Measure(childAvailableSize);\n\n\t\tif (item.Visibility() == Visibility::Collapsed) {\n\t\t\t// 不可见的子项不添加间距\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst Size itemSize = item.DesiredSize();\n\n\t\tif (isVertical) {\n\t\t\tfinalSize.Height += itemSize.Height;\n\t\t\tif (firstItem) {\n\t\t\t\tfirstItem = false;\n\t\t\t} else {\n\t\t\t\tfinalSize.Height += spacing;\n\t\t\t}\n\n\t\t\tif (anyStretch) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!std::isinf(availableSize.Width)) {\n\t\t\t\tFrameworkElement elem = item.try_as<FrameworkElement>();\n\t\t\t\tif (elem && elem.HorizontalAlignment() == HorizontalAlignment::Stretch) {\n\t\t\t\t\tanyStretch = true;\n\t\t\t\t\tfinalSize.Width = availableSize.Width;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (itemSize.Height > 0) {\n\t\t\t\tfinalSize.Width = std::max(finalSize.Width, itemSize.Width + paddings.Width);\n\t\t\t}\n\t\t} else {\n\t\t\tfinalSize.Width += itemSize.Width;\n\t\t\tif (firstItem) {\n\t\t\t\tfirstItem = false;\n\t\t\t} else {\n\t\t\t\tfinalSize.Width += spacing;\n\t\t\t}\n\n\t\t\tif (anyStretch) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!std::isinf(availableSize.Height)) {\n\t\t\t\tFrameworkElement elem = item.try_as<FrameworkElement>();\n\t\t\t\tif (elem && elem.VerticalAlignment() == VerticalAlignment::Stretch) {\n\t\t\t\t\tanyStretch = true;\n\t\t\t\t\tfinalSize.Height = availableSize.Height;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (itemSize.Width > 0) {\n\t\t\t\tfinalSize.Height = std::max(finalSize.Height, itemSize.Height + paddings.Height);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn finalSize;\n}\n\nSize SimpleStackPanel::ArrangeOverride(Size finalSize) const {\n\tconst bool isVertical = Orientation() == Orientation::Vertical;\n\tconst Thickness padding = Padding();\n\tconst float spacing = (float)Spacing();\n\n\tPoint position{ (float)padding.Left, (float)padding.Top };\n\n\tfor (UIElement const& item : Children()) {\n\t\tif (item.Visibility() == Visibility::Collapsed) {\n\t\t\t// 不可见的子项不添加间距\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst Size itemSize = item.DesiredSize();\n\t\tRect itemRect{ position.X, position.Y, itemSize.Width, itemSize.Height };\n\n\t\tif (isVertical) {\n\t\t\tauto alignment = HorizontalAlignment::Left;\n\t\t\tif (FrameworkElement elem = item.try_as<FrameworkElement>()) {\n\t\t\t\talignment = elem.HorizontalAlignment();\n\t\t\t}\n\n\t\t\tswitch (alignment) {\n\t\t\tcase HorizontalAlignment::Left:\n\t\t\t\tbreak;\n\t\t\tcase HorizontalAlignment::Center:\n\t\t\t\titemRect.X = position.X + (finalSize.Width - position.X - (float)padding.Right - itemRect.Width) / 2;\n\t\t\t\tbreak;\n\t\t\tcase HorizontalAlignment::Right:\n\t\t\t\titemRect.X = finalSize.Width - (float)padding.Right - itemRect.Width;\n\t\t\t\tbreak;\n\t\t\tcase HorizontalAlignment::Stretch:\n\t\t\t\titemRect.Width = finalSize.Width - position.X - (float)padding.Right;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\titem.Arrange(itemRect);\n\n\t\t\tif (itemSize.Height > 0) {\n\t\t\t\tposition.Y += itemSize.Height + spacing;\n\t\t\t}\n\t\t} else {\n\t\t\tauto alignment = VerticalAlignment::Top;\n\t\t\tif (FrameworkElement elem = item.try_as<FrameworkElement>()) {\n\t\t\t\talignment = elem.VerticalAlignment();\n\t\t\t}\n\n\t\t\tswitch (alignment) {\n\t\t\tcase VerticalAlignment::Top:\n\t\t\t\tbreak;\n\t\t\tcase VerticalAlignment::Center:\n\t\t\t\titemRect.Y = position.Y + (finalSize.Height - position.Y - (float)padding.Bottom - itemRect.Height) / 2;\n\t\t\t\tbreak;\n\t\t\tcase VerticalAlignment::Bottom:\n\t\t\t\titemRect.Y = finalSize.Height - (float)padding.Bottom - itemRect.Height;\n\t\t\t\tbreak;\n\t\t\tcase VerticalAlignment::Stretch:\n\t\t\t\titemRect.Height = finalSize.Height - position.Y - (float)padding.Bottom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\titem.Arrange(itemRect);\n\n\t\t\tif (itemSize.Width > 0) {\n\t\t\t\tposition.X += itemSize.Width + spacing;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn finalSize;\n}\n\nvoid SimpleStackPanel::_UpdateLayout() const {\n\tInvalidateMeasure();\n\tInvalidateArrange();\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/SimpleStackPanel.h",
    "content": "#pragma once\n#include \"SimpleStackPanel.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct SimpleStackPanel : SimpleStackPanelT<SimpleStackPanel>, wil::notify_property_changed_base<SimpleStackPanel> {\n\tOrientation Orientation() const { return _orientation; }\n\tvoid Orientation(enum Orientation value);\n\n\tThickness Padding() const { return _padding; }\n\tvoid Padding(const Thickness& value);\n\n\tdouble Spacing() const { return _spacing; }\n\tvoid Spacing(double value);\n\n\tSize MeasureOverride(const Size& availableSize) const;\n\n\tSize ArrangeOverride(Size finalSize) const;\n\nprivate:\n\tvoid _UpdateLayout() const;\n\n\tenum Orientation _orientation = Orientation::Vertical;\n\tThickness _padding{};\n\tdouble _spacing = 0.0;\n};\n\n}\n\nBASIC_FACTORY(SimpleStackPanel)\n"
  },
  {
    "path": "src/Magpie/SimpleStackPanel.idl",
    "content": "namespace Magpie {\n\truntimeclass SimpleStackPanel : Windows.UI.Xaml.Controls.Panel, Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tSimpleStackPanel();\n\t\t\n\t\tWindows.UI.Xaml.Controls.Orientation Orientation;\n\t\tWindows.UI.Xaml.Thickness Padding;\n\t\tDouble Spacing;\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/SmoothResizeHelper.cpp",
    "content": "#include \"pch.h\"\n#include \"SmoothResizeHelper.h\"\n#include \"Win32Helper.h\"\n#include <inspectable.h>\n\n// 来自 https://github.com/ALTaleX531/TranslucentFlyouts/blob/017970cbac7b77758ab6217628912a8d551fcf7c/TFModern/DiagnosticsHandler.cpp#L71-L84\nDECLARE_INTERFACE_IID_(IFrameworkApplicationPrivate, IInspectable, \"B3AB45D8-6A4E-4E76-A00D-32D4643A9F1A\") {\n\tSTDMETHOD(StartOnCurrentThread)(void* callback) PURE;\n\tSTDMETHOD(CreateIsland)(void** island) PURE;\n\tSTDMETHOD(CreateIslandWithAppWindow)(void* app_window, void** island) PURE;\n\tSTDMETHOD(CreateIslandWithContentBridge)(void* owner, void* content_bridge, void** island) PURE;\n\tSTDMETHOD(RemoveIsland)(void* island) PURE;\n\tSTDMETHOD(SetSynchronizationWindow)(HWND hwnd) PURE;\n};\n\nnamespace Magpie {\n\nbool SmoothResizeHelper::EnableResizeSync(HWND hWnd, const winrt::Application& app) noexcept {\n\t// UWP 使用这个未记录的接口实现平滑调整尺寸\n\t// https://gist.github.com/apkipa/20cae438aef2a8633f99e10e0b90b11e\n\tstatic auto enableResizeLayoutSynchronization =\n\t\tWin32Helper::LoadSystemFunction<void WINAPI(HWND hwnd, BOOL enable)>(\n\t\t\tL\"user32.dll\", MAKEINTRESOURCEA(2615));\n\n\t// 检查是否支持 IFrameworkApplicationPrivate 接口\n\tif (!app.try_as<IFrameworkApplicationPrivate>() || !enableResizeLayoutSynchronization) {\n\t\treturn false;\n\t}\n\n\tenableResizeLayoutSynchronization(hWnd, TRUE);\n\treturn true;\n}\n\nvoid SmoothResizeHelper::SyncWindowSize(HWND hWnd, const winrt::Application& app) noexcept {\n\t// @apkipa 发现在 WM_SIZE 中调用 IFrameworkApplicationPrivate::SetSynchronizationWindow 可以防止闪烁。\n\t// 原理仍不清楚，似乎这个接口内部会调用 SynchronizedCommit，刚好实现了 UWP 调整大小的方法。\n\tapp.try_as<IFrameworkApplicationPrivate>()->SetSynchronizationWindow(hWnd);\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/SmoothResizeHelper.h",
    "content": "#pragma once\n\nnamespace Magpie {\n\nstruct SmoothResizeHelper {\n\t// 初始化 XAML Islands 后调用\n\tstatic bool EnableResizeSync(HWND hWnd, const winrt::Application& app) noexcept;\n\n\t// WM_SIZE 中调用\n\tstatic void SyncWindowSize(HWND hWnd, const winrt::Application& app) noexcept;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/TextBlockHelper.cpp",
    "content": "#include \"pch.h\"\n#include \"TextBlockHelper.h\"\n#if __has_include(\"TextBlockHelper.g.cpp\")\n#include \"TextBlockHelper.g.cpp\"\n#endif\n#include \"Win32Helper.h\"\n#include \"App.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Controls;\n\nnamespace winrt::Magpie::implementation {\n\nDependencyProperty TextBlockHelper::_isAutoTooltipEnabledProperty{ nullptr };\n\nvoid TextBlockHelper::RegisterDependencyProperties() {\n    _isAutoTooltipEnabledProperty = DependencyProperty::RegisterAttached(\n        L\"IsAutoTooltipEnabled\",\n        xaml_typename<bool>(),\n        { hstring(L\"Magpie.TextBlockHelper\"), Interop::TypeKind::Metadata },\n        PropertyMetadata(box_value(false), _OnIsAutoTooltipEnabledChanged)\n    );\n}\n\nvoid TextBlockHelper::_OnIsAutoTooltipEnabledChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const& args) {\n    TextBlock tb = sender.try_as<TextBlock>();\n\n    bool newValue = args.NewValue().try_as<bool>().value();\n    _SetTooltipBasedOnTrimmingState(tb, newValue);\n\n    if (newValue) {\n        tb.SizeChanged([](IInspectable const& sender, SizeChangedEventArgs const&) {\n            _SetTooltipBasedOnTrimmingState(sender.try_as<TextBlock>(), true);\n        });\n        tb.RegisterPropertyChangedCallback(\n            TextBlock::TextProperty(),\n            [](DependencyObject const& sender, DependencyProperty const&) {\n                // 等待布局更新\n                App::Get().Dispatcher().TryEnqueue(\n                    DispatcherQueuePriority::Low,\n                    std::bind_front(&_SetTooltipBasedOnTrimmingState, sender.try_as<TextBlock>(), true)\n                );\n            }\n        );\n    } else {\n        // 不支持取消\n        assert(false);\n    }\n}\n\nvoid TextBlockHelper::_SetTooltipBasedOnTrimmingState(const TextBlock& tb, bool isAttached) {\n    // 检查是否存在 tooltip\n    if (isAttached && tb.IsTextTrimmed()) {\n        if (Win32Helper::GetOSVersion().IsWin10()) {\n            // 显式设置 Tooltip 的主题\n            ToolTip tooltip;\n            tooltip.Content(box_value(tb.Text()));\n            tooltip.RequestedTheme(tb.ActualTheme());\n            ToolTipService::SetToolTip(tb, tooltip);\n        } else {\n            ToolTipService::SetToolTip(tb, box_value(tb.Text()));\n        }\n    } else {\n        ToolTipService::SetToolTip(tb, nullptr);\n    }\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/TextBlockHelper.h",
    "content": "#pragma once\n#include \"TextBlockHelper.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\n// 当 TextBlock 被截断时自动设置 Tooltip\n// https://stackoverflow.com/questions/21615593/how-can-i-automatically-show-a-tooltip-if-the-text-is-too-long\nstruct TextBlockHelper {\n    static void RegisterDependencyProperties();\n    static DependencyProperty IsAutoTooltipEnabledProperty() { return _isAutoTooltipEnabledProperty; }\n\n    static bool GetIsAutoTooltipEnabled(DependencyObject target) {\n        return unbox_value<bool>(target.GetValue(_isAutoTooltipEnabledProperty));\n    }\n\n    static void SetIsAutoTooltipEnabled(DependencyObject target, bool value) {\n        target.SetValue(_isAutoTooltipEnabledProperty, box_value(value));\n    }\n\nprivate:\n    static DependencyProperty _isAutoTooltipEnabledProperty;\n\n    static void _OnIsAutoTooltipEnabledChanged(DependencyObject const& sender, DependencyPropertyChangedEventArgs const& args);\n\n    static void _SetTooltipBasedOnTrimmingState(const TextBlock& tb, bool isAttached);\n};\n\n}\n\nBASIC_FACTORY(TextBlockHelper)\n"
  },
  {
    "path": "src/Magpie/TextBlockHelper.idl",
    "content": "namespace Magpie {\n    static runtimeclass TextBlockHelper {\n        static Windows.UI.Xaml.DependencyProperty IsAutoTooltipEnabledProperty{ get; };\n        static Boolean GetIsAutoTooltipEnabled(Windows.UI.Xaml.DependencyObject target);\n        static void SetIsAutoTooltipEnabled(Windows.UI.Xaml.DependencyObject target, Boolean value);\n    }\n}\n"
  },
  {
    "path": "src/Magpie/TextMenuFlyout.cpp",
    "content": "#include \"pch.h\"\n#include \"TextMenuFlyout.h\"\n#if __has_include(\"TextMenuFlyout.g.cpp\")\n#include \"TextMenuFlyout.g.cpp\"\n#endif\n#include \"CommonSharedConstants.h\"\n\nusing namespace winrt::Windows::UI::Xaml::Input;\n\nnamespace winrt::Magpie::implementation {\n\nTextMenuFlyout::TextMenuFlyout() {\n\t// 大部分初始化推迟到 MenuFlyout_Opening\n\tOpening({ this, &TextMenuFlyout::MenuFlyout_Opening });\n}\n\nvoid TextMenuFlyout::MenuFlyout_Opening(IInspectable const&, IInspectable const&) {\n\tFrameworkElement target = Target();\n\tif (!target) {\n\t\treturn;\n\t}\n\n\tbool hasSelection = false;\n\tbool hasText = false;\n\tbool canUndo = false;\n\tbool canRedo = false;\n\t// 目前使用的 TextBox 和 NumberBox 都支持修改\n\tconstexpr bool writable = true;\n\n\t{\n\t\tTextBox textBox = target.try_as<TextBox>();\n\t\tif (!textBox) {\n\t\t\tif (MUXC::NumberBox numberBox = target.try_as<MUXC::NumberBox>()) {\n\t\t\t\ttextBox = numberBox.try_as<IControlProtected>()\n\t\t\t\t\t.GetTemplateChild(L\"InputBox\")\n\t\t\t\t\t.try_as<TextBox>();\n\t\t\t}\n\t\t}\n\t\tif (textBox) {\n\t\t\thasSelection = !textBox.SelectedText().empty();\n\t\t\thasText = !textBox.Text().empty();\n\t\t\tcanUndo = textBox.CanUndo();\n\t\t\tcanRedo = textBox.CanRedo();\n\t\t}\n\t}\n\n\t// 延迟初始化\n\tif (!_copy) {\n\t\tstd::vector<MenuFlyoutItemBase> items;\n\n\t\tResourceLoader resourceLoader =\n\t\t\tResourceLoader::GetForCurrentView(CommonSharedConstants::APP_RESOURCE_MAP_ID);\n\n\t\tif (writable) {\n\t\t\t_cut = items.emplace_back(_CreateMenuItem(\n\t\t\t\tSymbol::Cut,\n\t\t\t\tresourceLoader.GetString(L\"TextMenuFlyout_Cut\"),\n\t\t\t\t{ this, &TextMenuFlyout::Cut_Click },\n\t\t\t\tVirtualKeyModifiers::Control,\n\t\t\t\tVirtualKey::X\n\t\t\t));\n\t\t}\n\t\t_copy = items.emplace_back(_CreateMenuItem(\n\t\t\tSymbol::Copy,\n\t\t\tresourceLoader.GetString(L\"TextMenuFlyout_Copy\"),\n\t\t\t{ this, &TextMenuFlyout::Copy_Click },\n\t\t\tVirtualKeyModifiers::Control,\n\t\t\tVirtualKey::C\n\t\t));\n\t\tif (writable) {\n\t\t\titems.emplace_back(_CreateMenuItem(\n\t\t\t\tSymbol::Paste,\n\t\t\t\tresourceLoader.GetString(L\"TextMenuFlyout_Paste\"),\n\t\t\t\t{ this, &TextMenuFlyout::Paste_Click },\n\t\t\t\tVirtualKeyModifiers::Control,\n\t\t\t\tVirtualKey::V\n\t\t\t));\n\t\t\t_undo = _CreateMenuItem(\n\t\t\t\tSymbol::Undo,\n\t\t\t\tresourceLoader.GetString(L\"TextMenuFlyout_Undo\"),\n\t\t\t\t{ this, &TextMenuFlyout::Undo_Click },\n\t\t\t\tVirtualKeyModifiers::Control,\n\t\t\t\tVirtualKey::Z\n\t\t\t);\n\t\t\titems.emplace_back(_undo);\n\t\t\t_redo = _CreateMenuItem(\n\t\t\t\tSymbol::Redo,\n\t\t\t\tresourceLoader.GetString(L\"TextMenuFlyout_Redo\"),\n\t\t\t\t{ this, &TextMenuFlyout::Redo_Click },\n\t\t\t\tVirtualKeyModifiers::Control,\n\t\t\t\tVirtualKey::Y\n\t\t\t);\n\t\t\titems.emplace_back(_redo);\n\t\t}\n\t\t_selectAll = _CreateMenuItem(\n\t\t\tSymbol{},\n\t\t\tresourceLoader.GetString(L\"TextMenuFlyout_SelectAll\"),\n\t\t\t{ this, &TextMenuFlyout::SelectAll_Click },\n\t\t\tVirtualKeyModifiers::Control,\n\t\t\tVirtualKey::A\n\t\t);\n\t\titems.emplace_back(_selectAll);\n\n\t\tItems().ReplaceAll({ items.data(), (uint32_t)items.size() });\n\t}\n\n\t_copy.Visibility(hasSelection ? Visibility::Visible : Visibility::Collapsed);\n\t_selectAll.Visibility(hasText ? Visibility::Visible : Visibility::Collapsed);\n\tif (writable) {\n\t\t_cut.Visibility(hasSelection ? Visibility::Visible : Visibility::Collapsed);\n\t\t_undo.Visibility(canUndo ? Visibility::Visible : Visibility::Collapsed);\n\t\t_redo.Visibility(canRedo ? Visibility::Visible : Visibility::Collapsed);\n\t}\n}\n\nvoid TextMenuFlyout::Cut_Click(IInspectable const&, RoutedEventArgs const&) {\n\t// 右键菜单关闭后仍会接收到文本框上的快捷键事件，可以安全忽略，因为 TextBox\n\t// 仍会正常处理，除了 Ctrl+A\n\tFrameworkElement target = Target();\n\tif (!target) {\n\t\treturn;\n\t}\n\n\tif (TextBox textBox = target.try_as<TextBox>()) {\n\t\ttextBox.CutSelectionToClipboard();\n\t} else if (MUXC::NumberBox numberBox = target.try_as<MUXC::NumberBox>()) {\n\t\tnumberBox.try_as<IControlProtected>().GetTemplateChild(L\"InputBox\").try_as<TextBox>().CutSelectionToClipboard();\n\t}\n}\n\nvoid TextMenuFlyout::Copy_Click(IInspectable const&, RoutedEventArgs const&) {\n\tFrameworkElement target = Target();\n\tif (!target) {\n\t\treturn;\n\t}\n\n\tif (TextBox textBox = target.try_as<TextBox>()) {\n\t\ttextBox.CopySelectionToClipboard();\n\t} else if (MUXC::NumberBox numberBox = target.try_as<MUXC::NumberBox>()) {\n\t\tnumberBox.try_as<IControlProtected>()\n\t\t\t.GetTemplateChild(L\"InputBox\")\n\t\t\t.try_as<TextBox>()\n\t\t\t.CopySelectionToClipboard();\n\t}\n}\n\nvoid TextMenuFlyout::Paste_Click(IInspectable const&, RoutedEventArgs const&) {\n\tFrameworkElement target = Target();\n\tif (!target) {\n\t\treturn;\n\t}\n\n\tif (TextBox textBox = target.try_as<TextBox>()) {\n\t\ttextBox.PasteFromClipboard();\n\t} else if (MUXC::NumberBox numberBox = target.try_as<MUXC::NumberBox>()) {\n\t\tnumberBox.try_as<IControlProtected>()\n\t\t\t.GetTemplateChild(L\"InputBox\")\n\t\t\t.try_as<TextBox>()\n\t\t\t.PasteFromClipboard();\n\t}\n}\n\nvoid TextMenuFlyout::Undo_Click(IInspectable const&, RoutedEventArgs const&) {\n\tFrameworkElement target = Target();\n\tif (!target) {\n\t\treturn;\n\t}\n\n\tif (TextBox textBox = target.try_as<TextBox>()) {\n\t\ttextBox.Undo();\n\t} else if (MUXC::NumberBox numberBox = target.try_as<MUXC::NumberBox>()) {\n\t\tnumberBox.try_as<IControlProtected>()\n\t\t\t.GetTemplateChild(L\"InputBox\")\n\t\t\t.try_as<TextBox>()\n\t\t\t.Undo();\n\t}\n}\n\nvoid TextMenuFlyout::Redo_Click(IInspectable const&, RoutedEventArgs const&) {\n\tFrameworkElement target = Target();\n\tif (!target) {\n\t\treturn;\n\t}\n\n\tif (TextBox textBox = target.try_as<TextBox>()) {\n\t\ttextBox.Redo();\n\t} else if (MUXC::NumberBox numberBox = target.try_as<MUXC::NumberBox>()) {\n\t\tnumberBox.try_as<IControlProtected>()\n\t\t\t.GetTemplateChild(L\"InputBox\")\n\t\t\t.try_as<TextBox>()\n\t\t\t.Redo();\n\t}\n}\n\nvoid TextMenuFlyout::SelectAll_Click(IInspectable const&, RoutedEventArgs const&) {\n\t// !!! HACK !!!\n\t// 由于 WinUI 的 bug，一旦右键菜单被打开过一次，TextBox 就不再处理 Ctrl+A，而我们\n\t// 仍会收到回调。这里必须自己实现全选功能，否则 Ctrl+A 会永久失效。\n\tIInspectable target = Target();\n\tif (!target) {\n\t\ttarget = FocusManager::GetFocusedElement(XamlRoot());\n\t\tif (!target) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (TextBox textBox = target.try_as<TextBox>()) {\n\t\ttextBox.SelectAll();\n\t} else if (MUXC::NumberBox numberBox = target.try_as<MUXC::NumberBox>()) {\n\t\tnumberBox.try_as<IControlProtected>()\n\t\t\t.GetTemplateChild(L\"InputBox\")\n\t\t\t.try_as<TextBox>()\n\t\t\t.SelectAll();\n\t}\n}\n\nMenuFlyoutItemBase TextMenuFlyout::_CreateMenuItem(\n\tSymbol symbol,\n\thstring text,\n\tRoutedEventHandler click,\n\tVirtualKeyModifiers modifiers,\n\tVirtualKey key\n) {\n\tKeyboardAccelerator accel;\n\taccel.Modifiers(modifiers);\n\taccel.Key(key);\n\n\tMenuFlyoutItem item;\n\tif (symbol != Symbol{}) {\n\t\titem.Icon(SymbolIcon{ std::move(symbol) });\n\t}\n\titem.Text(std::move(text));\n\titem.Click(std::move(click));\n\titem.KeyboardAccelerators().Append(std::move(accel));\n\n\t// 存在快捷键时会有多余的 Tooltip，没有直接的删除方法，这里用不可见的 Tooltip 把它覆盖\n\tToolTip tooltip;\n\ttooltip.Visibility(Visibility::Collapsed);\n\tToolTipService::SetToolTip(item, tooltip);\n\n\treturn item;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/TextMenuFlyout.h",
    "content": "#pragma once\n#include \"TextMenuFlyout.g.h\"\n\nnamespace winrt::Magpie::implementation {\n\n// GH#1070\n// \n// 移植自 https://github.com/microsoft/terminal/pull/18854\n// \n// 之所以使用自定义右键菜单，是因为当一个线程中创建了多个 XAML Islands 窗口，默认的\n// 右键菜单会导致崩溃。应确保覆盖所有右键菜单，目前包括 TextBox 和 MUXC::NumberBox。\n// \n// 我还尝试过其他方案（如 MUXC::TextCommandBarFlyout），但都不尽人意。目前看来对每个\n// TextBox 和 NumberBox 单独设置 TextMenuFlyout 是最稳妥的方案。\nstruct TextMenuFlyout : TextMenuFlyoutT<TextMenuFlyout> {\n\tTextMenuFlyout();\n\n\tvoid MenuFlyout_Opening(IInspectable const&, IInspectable const&);\n\tvoid Cut_Click(IInspectable const&, RoutedEventArgs const&);\n\tvoid Copy_Click(IInspectable const&, RoutedEventArgs const&);\n\tvoid Paste_Click(IInspectable const&, RoutedEventArgs const&);\n\tvoid Undo_Click(IInspectable const&, RoutedEventArgs const&);\n\tvoid Redo_Click(IInspectable const&, RoutedEventArgs const&);\n\tvoid SelectAll_Click(IInspectable const&, RoutedEventArgs const&);\n\nprivate:\n\tMenuFlyoutItemBase _CreateMenuItem(\n\t\tSymbol symbol,\n\t\thstring text,\n\t\tRoutedEventHandler click,\n\t\tVirtualKeyModifiers modifiers,\n\t\tVirtualKey key\n\t);\n\n\t// 始终存在的条目\n\tMenuFlyoutItemBase _copy{ nullptr };\n\tMenuFlyoutItemBase _selectAll{ nullptr };\n\t// 只适用于可编辑的控件的条目\n\tMenuFlyoutItemBase _cut{ nullptr };\n\tMenuFlyoutItemBase _undo{ nullptr };\n\tMenuFlyoutItemBase _redo{ nullptr };\n};\n\n}\n\nBASIC_FACTORY(TextMenuFlyout)\n"
  },
  {
    "path": "src/Magpie/TextMenuFlyout.idl",
    "content": "namespace Magpie {\n    [default_interface]\n    runtimeclass TextMenuFlyout : Windows.UI.Xaml.Controls.MenuFlyout {\n        TextMenuFlyout();\n    }\n}\n"
  },
  {
    "path": "src/Magpie/ThemeHelper.cpp",
    "content": "#include \"pch.h\"\n#include \"ThemeHelper.h\"\n#include \"Win32Helper.h\"\n#include <dwmapi.h>\n\nnamespace Magpie {\n\n// 这些未记录的 API 来自 https://github.com/ysc3839/win32-darkmode\n\nenum class PreferredAppMode {\n\tDefault,\n\tAllowDark,\n\tForceDark,\n\tForceLight,\n\tMax\n};\n\nusing fnSetPreferredAppMode = PreferredAppMode(WINAPI*)(PreferredAppMode appMode);\nusing fnAllowDarkModeForWindow = bool(WINAPI*)(HWND hWnd, bool allow);\nusing fnRefreshImmersiveColorPolicyState = void(WINAPI*)();\nusing fnFlushMenuThemes = void(WINAPI*)();\n\nstatic fnSetPreferredAppMode SetPreferredAppMode = nullptr;\nstatic fnAllowDarkModeForWindow AllowDarkModeForWindow = nullptr;\nstatic fnRefreshImmersiveColorPolicyState RefreshImmersiveColorPolicyState = nullptr;\nstatic fnFlushMenuThemes FlushMenuThemes = nullptr;\n\nvoid ThemeHelper::Initialize() noexcept {\n\tassert(!SetPreferredAppMode);\n\n\tconst HMODULE hUxtheme = GetModuleHandle(L\"uxtheme.dll\");\n\tif (!hUxtheme) {\n\t\treturn;\n\t}\n\n\t// 先转成 void* 以避免警告\n\tAllowDarkModeForWindow = reinterpret_cast<fnAllowDarkModeForWindow>(\n\t\treinterpret_cast<void*>(GetProcAddress(hUxtheme, MAKEINTRESOURCEA(133))));\n\tif (!AllowDarkModeForWindow) {\n\t\tLogger::Get().Win32Error(\"获取 uxtheme.dll!AllowDarkModeForWindow 失败\");\n\t\treturn;\n\t}\n\tRefreshImmersiveColorPolicyState = reinterpret_cast<fnRefreshImmersiveColorPolicyState>(\n\t\treinterpret_cast<void*>(GetProcAddress(hUxtheme, MAKEINTRESOURCEA(104))));\n\tif (!RefreshImmersiveColorPolicyState) {\n\t\tLogger::Get().Win32Error(\"获取 uxtheme.dll!RefreshImmersiveColorPolicyState 失败\");\n\t\treturn;\n\t}\n\tFlushMenuThemes = reinterpret_cast<fnFlushMenuThemes>(\n\t\treinterpret_cast<void*>(GetProcAddress(hUxtheme, MAKEINTRESOURCEA(136))));\n\tif (!FlushMenuThemes) {\n\t\tLogger::Get().Win32Error(\"获取 uxtheme.dll!FlushMenuThemes 失败\");\n\t\treturn;\n\t}\n\t// 最后初始化 SetPreferredAppMode\n\tSetPreferredAppMode = reinterpret_cast<fnSetPreferredAppMode>(\n\t\treinterpret_cast<void*>(GetProcAddress(hUxtheme, MAKEINTRESOURCEA(135))));\n\tif (!SetPreferredAppMode) {\n\t\tLogger::Get().Win32Error(\"获取 uxtheme.dll!SetPreferredAppMode 失败\");\n\t\treturn;\n\t}\n\n\tSetPreferredAppMode(PreferredAppMode::AllowDark);\n\tRefreshImmersiveColorPolicyState();\n}\n\nvoid ThemeHelper::SetWindowTheme(HWND hWnd, bool darkBorder, bool darkMenu) noexcept {\n\tif (SetPreferredAppMode) {\n\t\tSetPreferredAppMode(darkMenu ? PreferredAppMode::ForceDark : PreferredAppMode::ForceLight);\n\t\tAllowDarkModeForWindow(hWnd, darkMenu);\n\t}\n\n\t// 使标题栏适应黑暗模式\n\t// build 18985 之前 DWMWA_USE_IMMERSIVE_DARK_MODE 的值不同\n\t// https://github.com/MicrosoftDocs/sdk-api/pull/966/files\n\tstatic constexpr DWORD DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1 = 19;\n\tBOOL value = darkBorder;\n\tDwmSetWindowAttribute(\n\t\thWnd,\n\t\tWin32Helper::GetOSVersion().Is20H1OrNewer() ? DWMWA_USE_IMMERSIVE_DARK_MODE : DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1,\n\t\t&value,\n\t\tsizeof(value)\n\t);\n\n\tif (SetPreferredAppMode) {\n\t\tRefreshImmersiveColorPolicyState();\n\t\tFlushMenuThemes();\n\t}\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ThemeHelper.h",
    "content": "#pragma once\n\nnamespace Magpie {\n\nstruct ThemeHelper {\n\t// 应用程序启动时调用一次\n\tstatic void Initialize() noexcept;\n\tstatic void SetWindowTheme(HWND hWnd, bool darkBorder, bool darkMenu) noexcept;\n\n\tstatic constexpr COLORREF LIGHT_TINT_COLOR = RGB(243, 243, 243);\n\tstatic constexpr COLORREF DARK_TINT_COLOR = RGB(32, 32, 32);\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/TitleBarControl.cpp",
    "content": "#include \"pch.h\"\n#include \"TitleBarControl.h\"\n#if __has_include(\"TitleBarControl.g.cpp\")\n#include \"TitleBarControl.g.cpp\"\n#endif\n#include \"IconHelper.h\"\n#include \"Win32Helper.h\"\n#include \"App.h\"\n#include \"CaptionButtonsControl.h\"\n#include \"RootPage.h\"\n\nusing namespace ::Magpie;\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Media::Imaging;\n\nnamespace winrt::Magpie::implementation {\n\nTitleBarControl::TitleBarControl() {\n\t// 异步加载 Logo\n\t[](TitleBarControl* that)->fire_and_forget {\n\t\tauto weakThis = that->get_weak();\n\n\t\tSoftwareBitmapSource bitmap;\n\t\tco_await bitmap.SetBitmapAsync(IconHelper::ExtractAppSmallIcon());\n\n\t\tif (!weakThis.get()) {\n\t\t\tco_return;\n\t\t}\n\n\t\tthat->_logo = std::move(bitmap);\n\t\tthat->RaisePropertyChanged(L\"Logo\");\n\t}(this);\n}\n\nvoid TitleBarControl::TitleBarControl_Loading(FrameworkElement const&, IInspectable const&) {\n\tMUXC::NavigationView rootNavigationView = App::Get().RootPage()->RootNavigationView();\n\trootNavigationView.DisplayModeChanged([this](const auto&, const auto& args) {\n\t\tbool expanded = args.DisplayMode() == MUXC::NavigationViewDisplayMode::Expanded;\n\t\tVisualStateManager::GoToState(\n\t\t\t*this, expanded ? L\"Expanded\" : L\"Compact\", App::Get().RootPage()->IsLoaded());\n\t\tLeftBottomPointChanged.Invoke();\n\t});\n}\n\nvoid TitleBarControl::IsWindowActive(bool value) {\n\tVisualStateManager::GoToState(*this, value ? L\"Active\" : L\"NotActive\", false);\n\tCaptionButtons().IsWindowActive(value);\n}\n\nCaptionButtonsControl& TitleBarControl::CaptionButtons() noexcept {\n\treturn *get_self<CaptionButtonsControl>(TitleBarControlT::CaptionButtons());\n}\n\nPoint TitleBarControl::LeftBottomPoint() noexcept {\n\tconst auto& rootPage = App::Get().RootPage();\n\tbool expanded = rootPage->RootNavigationView().DisplayMode() == MUXC::NavigationViewDisplayMode::Expanded;\n\t// 左边界不包含 RootStackPanel 的 Margin。Margin 属性在动画播放结束才会改变，不要使用。\n\treturn TransformToVisual(*rootPage).TransformPoint({ expanded ? 0.0f : 46.0f, (float)ActualHeight()});\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/TitleBarControl.h",
    "content": "#pragma once\n#include \"TitleBarControl.g.h\"\n#include \"Event.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct CaptionButtonsControl;\n\nstruct TitleBarControl : TitleBarControlT<TitleBarControl>,\n                         wil::notify_property_changed_base<TitleBarControl> {\n\tTitleBarControl();\n\n\tvoid TitleBarControl_Loading(FrameworkElement const&, IInspectable const&);\n\n\tImaging::SoftwareBitmapSource Logo() const noexcept {\n\t\treturn _logo;\n\t}\n\n\tvoid IsWindowActive(bool value);\n\n\tCaptionButtonsControl& CaptionButtons() noexcept;\n\n\tPoint LeftBottomPoint() noexcept;\n\n\t::Magpie::Event<> LeftBottomPointChanged;\n\nprivate:\n\tImaging::SoftwareBitmapSource _logo{ nullptr };\n};\n\n}\n\nBASIC_FACTORY(TitleBarControl)\n"
  },
  {
    "path": "src/Magpie/TitleBarControl.idl",
    "content": "namespace Magpie {\n\truntimeclass TitleBarControl : Windows.UI.Xaml.Controls.UserControl, Windows.UI.Xaml.Data.INotifyPropertyChanged {\n\t\tTitleBarControl();\n\n\t\tWindows.UI.Xaml.Media.Imaging.SoftwareBitmapSource Logo { get; };\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/TitleBarControl.xaml",
    "content": "<UserControl x:Class=\"Magpie.TitleBarControl\"\n             xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n             xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n             xmlns:local=\"using:Magpie\"\n             xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n             Height=\"40\"\n             HorizontalAlignment=\"Stretch\"\n             VerticalAlignment=\"Top\"\n             Loading=\"TitleBarControl_Loading\"\n             mc:Ignorable=\"d\">\n\t<Grid>\n\t\t<local:SimpleStackPanel x:Name=\"RootStackPanel\"\n\t\t                        Padding=\"16,10,0,0\"\n\t\t                        Orientation=\"Horizontal\"\n\t\t                        Spacing=\"8\">\n\t\t\t<local:SimpleStackPanel.RenderTransform>\n\t\t\t\t<TranslateTransform x:Name=\"RootStackPanelTranslation\" />\n\t\t\t</local:SimpleStackPanel.RenderTransform>\n\t\t\t<Image Width=\"16\"\n\t\t\t       Height=\"16\"\n\t\t\t       VerticalAlignment=\"Center\"\n\t\t\t       Source=\"{x:Bind Logo, Mode=OneWay}\" />\n\t\t\t<TextBlock x:Name=\"TitleTextBlock\"\n\t\t\t           Margin=\"0,0,0,2\"\n\t\t\t           VerticalAlignment=\"Center\"\n\t\t\t           FontSize=\"12\"\n\t\t\t           Text=\"Magpie\" />\n\t\t</local:SimpleStackPanel>\n\n\t\t<local:CaptionButtonsControl x:Name=\"CaptionButtons\"\n\t\t                             HorizontalAlignment=\"Right\"\n\t\t                             VerticalAlignment=\"Top\" />\n\n\t\t<VisualStateManager.VisualStateGroups>\n\t\t\t<VisualStateGroup x:Name=\"TitleStates\">\n\t\t\t\t<VisualStateGroup.Transitions>\n\t\t\t\t\t<VisualTransition From=\"Expanded\"\n\t\t\t\t\t                  To=\"Compact\">\n\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t<DoubleAnimation Storyboard.TargetName=\"RootStackPanelTranslation\"\n\t\t\t\t\t\t\t                 Storyboard.TargetProperty=\"X\"\n\t\t\t\t\t\t\t                 From=\"0\"\n\t\t\t\t\t\t\t                 To=\"46\"\n\t\t\t\t\t\t\t                 Duration=\"0:0:0.22\">\n\t\t\t\t\t\t\t\t<DoubleAnimation.EasingFunction>\n\t\t\t\t\t\t\t\t\t<ExponentialEase EasingMode=\"EaseOut\"\n\t\t\t\t\t\t\t\t\t                 Exponent=\"7\" />\n\t\t\t\t\t\t\t\t</DoubleAnimation.EasingFunction>\n\t\t\t\t\t\t\t</DoubleAnimation>\n\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t</VisualTransition>\n\t\t\t\t\t<VisualTransition From=\"Compact\"\n\t\t\t\t\t                  To=\"Expanded\">\n\t\t\t\t\t\t<Storyboard>\n\t\t\t\t\t\t\t<DoubleAnimation Storyboard.TargetName=\"RootStackPanelTranslation\"\n\t\t\t\t\t\t\t                 Storyboard.TargetProperty=\"X\"\n\t\t\t\t\t\t\t                 From=\"46\"\n\t\t\t\t\t\t\t                 To=\"0\"\n\t\t\t\t\t\t\t                 Duration=\"0:0:0.22\">\n\t\t\t\t\t\t\t\t<DoubleAnimation.EasingFunction>\n\t\t\t\t\t\t\t\t\t<ExponentialEase EasingMode=\"EaseOut\"\n\t\t\t\t\t\t\t\t\t                 Exponent=\"7\" />\n\t\t\t\t\t\t\t\t</DoubleAnimation.EasingFunction>\n\t\t\t\t\t\t\t</DoubleAnimation>\n\t\t\t\t\t\t</Storyboard>\n\t\t\t\t\t</VisualTransition>\n\t\t\t\t</VisualStateGroup.Transitions>\n\n\t\t\t\t<VisualState x:Name=\"Expanded\" />\n\t\t\t\t<VisualState x:Name=\"Compact\">\n\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t<!--  不要在根元素上应用 Margin，否则调整窗口尺寸时控制按钮位置不稳定  -->\n\t\t\t\t\t\t<Setter Target=\"RootStackPanel.Margin\" Value=\"46,0,0,0\" />\n\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t</VisualState>\n\t\t\t</VisualStateGroup>\n\t\t\t<VisualStateGroup x:Name=\"ActiveStates\">\n\t\t\t\t<VisualState x:Name=\"Active\" />\n\t\t\t\t<VisualState x:Name=\"NotActive\">\n\t\t\t\t\t<VisualState.Setters>\n\t\t\t\t\t\t<Setter Target=\"TitleTextBlock.Foreground\" Value=\"#8E8E8E\" />\n\t\t\t\t\t</VisualState.Setters>\n\t\t\t\t</VisualState>\n\t\t\t</VisualStateGroup>\n\t\t</VisualStateManager.VisualStateGroups>\n\t</Grid>\n</UserControl>\n"
  },
  {
    "path": "src/Magpie/ToastPage.cpp",
    "content": "#include \"pch.h\"\n#include \"ToastPage.h\"\n#if __has_include(\"ToastPage.g.cpp\")\n#include \"ToastPage.g.cpp\"\n#endif\n#include \"App.h\"\n#include \"Win32Helper.h\"\n#include \"IconHelper.h\"\n#include \"LocalizationService.h\"\n#include \"XamlHelper.h\"\n#include <dwmapi.h>\n\nusing namespace ::Magpie;\nusing namespace winrt::Magpie::implementation;\nusing namespace winrt;\nusing namespace Windows::UI::ViewManagement;\nusing namespace Windows::UI::Xaml::Controls;\nusing namespace Windows::UI::Xaml::Controls::Primitives;\nusing namespace Windows::UI::Xaml::Media::Imaging;\n\nnamespace winrt::Magpie::implementation {\n\nToastPage::ToastPage(uint64_t hwndToast) : _hwndToast((HWND)hwndToast) {\n\t// 异步加载 Logo\n\t[](ToastPage* that) -> fire_and_forget {\n\t\tauto weakThis = that->get_weak();\n\n\t\tSoftwareBitmapSource bitmap;\n\t\tco_await bitmap.SetBitmapAsync(IconHelper::ExtractAppSmallIcon());\n\n\t\tif (!weakThis.get()) {\n\t\t\tco_return;\n\t\t}\n\n\t\tthat->_logo = std::move(bitmap);\n\t\tthat->RaisePropertyChanged(L\"Logo\");\n\t}(this);\n}\n\nvoid ToastPage::InitializeComponent() {\n\tToastPageT::InitializeComponent();\n\n\t_appThemeChangedRevoker = App::Get().ThemeChanged(\n\t\tauto_revoke,\n\t\t[this, dispatcher(DispatcherQueue::GetForCurrentThread())](bool) {\n\t\t\tdispatcher.TryEnqueue([this] { _UpdateTheme(); });\n\t\t}\n\t);\n\t_UpdateTheme();\n}\n\nstatic bool TrySetOwnder(HWND hwndToast, HWND hwndTarget) noexcept {\n\t// 如果源窗口挂起，SetWindowLongPtr 会卡住\n\tif (Win32Helper::IsWindowHung(hwndTarget)) {\n\t\treturn false;\n\t}\n\n\tSetLastError(0);\n\treturn SetWindowLongPtr(hwndToast, GWLP_HWNDPARENT, (LONG_PTR)hwndTarget) || GetLastError() == 0;\n}\n\nstatic void UpdateToastPosition(HWND hwndToast, const RECT& frameRect, bool updateZOrder) noexcept {\n\t// 根据窗口高度调整弹窗位置。\n\t// 1. 如果高度小于 THRESHOLD1，弹窗位于中心；\n\t// 2. 如果高度大于 THRESHOLD2，弹窗距离底部边界距离固定；\n\t// 3. 如果高度在 THRESHOLD1 和 THRESHOLD2 之间，则根据 1、2 的边界线性插值。\n\tstatic constexpr double THRESHOLD1 = 120;\n\tstatic constexpr double THRESHOLD2 = 720;\n\n\t// 高 DPI 下阈值也应相应提高\n\tconst double dpiScaling = GetDpiForWindow(hwndToast) / (double)USER_DEFAULT_SCREEN_DPI;\n\tconst double scaledThreshold1 = THRESHOLD1 * dpiScaling;\n\tconst double scaledThreshold2 = THRESHOLD2 * dpiScaling;\n\n\tconst int height = frameRect.bottom - frameRect.top;\n\n\t// 弹窗中心点距离窗口底部边界的距离\n\tint marginBottom;\n\tif (height < scaledThreshold1) {\n\t\tmarginBottom = height / 2;\n\t} else if (height < scaledThreshold2) {\n\t\tmarginBottom = (int)std::lround(scaledThreshold1 / 2 +\n\t\t\t(height - scaledThreshold1) * (THRESHOLD2 / 6 - THRESHOLD1 / 2) / (THRESHOLD2 - THRESHOLD1));\n\t} else {\n\t\tmarginBottom = (int)std::lround(scaledThreshold2 / 6);\n\t}\n\n\tSetWindowPos(\n\t\thwndToast,\n\t\tNULL,\n\t\t(frameRect.left + frameRect.right) / 2,\n\t\tframeRect.bottom - marginBottom,\n\t\t0,\n\t\t0,\n\t\tSWP_NOSIZE | SWP_NOACTIVATE | SWP_NOCOPYBITS | SWP_NOREDRAW |\n\t\t(updateZOrder ? 0 : SWP_NOZORDER)\n\t);\n}\n\nfire_and_forget ToastPage::ShowMessageOnWindow(std::wstring title, std::wstring message, HWND hwndTarget, bool showLogo) {\n\tDispatcherQueue dispatcher = DispatcherQueue::GetForCurrentThread();\n\n\t// !!! HACK !!!\n\t// 重用 TeachingTip 有一个 bug: 前一个 Toast 正在消失时新的 Toast 不会显示。为了\n\t// 规避它，我们每次都创建新的 TeachingTip，但要保留旧对象的引用，因为播放动画时销毁\n\t// 会导致崩溃。oldTeachingTip 的生存期可确保动画播放完毕。\n\tMUXC::TeachingTip oldTeachingTip = MessageTeachingTip();\n\tif (oldTeachingTip) {\n\t\tUnloadObject(oldTeachingTip);\n\t\t// 确保卸载完成，防止弹出动画 bug\n\t\tco_await resume_foreground(dispatcher, DispatcherQueuePriority::Low);\n\t} else {\n\t\toldTeachingTip = std::move(_oldTeachingTip);\n\t}\n\n\tRECT frameRect;\n\tif (!Win32Helper::GetWindowFrameRect(hwndTarget, frameRect)) {\n\t\tco_return;\n\t}\n\n\t// 更改所有者关系使弹窗始终在 hwndTarget 上方。如果失败，改为定期将弹窗置顶，如果 hwndTarget\n\t// 的 IL 更高或是 UWP 窗口就会发生这种情况。\n\tconst bool isOwned = TrySetOwnder(_hwndToast, hwndTarget);\n\tbool isTargetTopMost = GetWindowExStyle(hwndTarget) & WS_EX_TOPMOST;\n\tif (isOwned) {\n\t\t// _hwndToast 的输入已被附加到了 hWnd 上，这是所有者窗口的默认行为，但我们不需要。\n\t\t// 见 https://devblogs.microsoft.com/oldnewthing/20130412-00/?p=4683\n\t\tAttachThreadInput(\n\t\t\tGetCurrentThreadId(),\n\t\t\tGetWindowThreadProcessId(hwndTarget, nullptr),\n\t\t\tFALSE\n\t\t);\n\t} else {\n\t\tSetWindowLongPtr(_hwndToast, GWLP_HWNDPARENT, NULL);\n\t}\n\n\tif (isTargetTopMost || !isOwned) {\n\t\tSetWindowPos(_hwndToast, HWND_TOPMOST, 0, 0, 0, 0, SWP_NO_ACTIVATE_MOVE_SIZE);\n\t}\n\tif (!isTargetTopMost) {\n\t\tSetWindowPos(_hwndToast, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NO_ACTIVATE_MOVE_SIZE);\n\t}\n\n\t// 更改所有者后应更新 Z 轴顺序\n\tUpdateToastPosition(_hwndToast, frameRect, true);\n\n\t// 创建新的 TeachingTip\n\tMUXC::TeachingTip curTeachingTip = FindName(L\"MessageTeachingTip\").try_as<MUXC::TeachingTip>();\n\t// 帮助 XAML 选择合适的字体，直接设置 TeachingTip 的 Language 属性无用\n\tMessageTeachingTipContent().Language(LocalizationService::Get().Language());\n\n\tif (title.empty()) {\n\t\tTitleTextBlock().Visibility(Visibility::Collapsed);\n\t} else {\n\t\tTitleTextBlock().Text(title);\n\t}\n\tMessageTextBlock().Text(message);\n\n\t// !!! HACK !!!\n\t// 移除关闭按钮和修复弹出动画。必须在模板加载完成后做，TeachingTip 没有 Opening 事件，但可以监听 \n\t// MessageTextBlock 的 LayoutUpdated 事件，它在 TeachingTip 显示前必然会被引发。\n\tMessageTextBlock().LayoutUpdated([this, weak(weak_ref(curTeachingTip)), dispatcher](IInspectable const&, IInspectable const&) {\n\t\tauto teachingTip = weak.get();\n\t\tif (!teachingTip) {\n\t\t\treturn;\n\t\t}\n\n\t\tIControlProtected protectedAccessor = teachingTip.try_as<IControlProtected>();\n\n\t\t// 隐藏关闭按钮\n\t\tif (DependencyObject closeButton = protectedAccessor.GetTemplateChild(L\"AlternateCloseButton\")) {\n\t\t\tcloseButton.try_as<FrameworkElement>().Visibility(Visibility::Collapsed);\n\t\t}\n\n\t\t// 检查 Tag 记录，修复弹出动画只需执行一次\n\t\tif (teachingTip.Tag()) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\t// XAML Islands 中 TeachingTip 弹出动画存在 bug，在弹出前有一瞬间会完全显示。为了修复它，这里\n\t\t// 手动将弹窗隐藏，动画开始后再恢复。\n\t\tfor (const Popup& popup : VisualTreeHelper::GetOpenPopupsForXamlRoot(XamlRoot())) {\n\t\t\t// 查找 TeachingTip 的弹窗\n\t\t\tif (XamlHelper::ContainsControl(popup.Child(), MessageTextBlock())) {\n\t\t\t\tpopup.Visibility(Visibility::Collapsed);\n\n\t\t\t\tdispatcher.TryEnqueue(DispatcherQueuePriority::Low, [popup]() {\n\t\t\t\t\tpopup.Visibility(Visibility::Visible);\n\t\t\t\t});\n\n\t\t\t\t// 修复后使用 Tag 记录\n\t\t\t\tteachingTip.Tag(box_value(0));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\n\t// 应用内消息无需显示 logo\n\t_IsLogoShown(showLogo);\n\n\tcurTeachingTip.IsOpen(true);\n\n\t// 第三个参数用于延长 oldTeachingTip 的生存期，确保关闭动画播放完毕后再析构。\n\t// TeachingTip 的显示和隐藏动画总计 500ms，显示时长不应少于这个时间。\n\t// https://github.com/Blinue/microsoft-ui-xaml/blob/75f7666f5907aad29de1cb2e49405cc06d433fba/dev/TeachingTip/TeachingTip.h#L239-L240\n\t[](DispatcherQueue dispatcher, weak_ref<MUXC::TeachingTip> weakCurTeachingTip, MUXC::TeachingTip) -> fire_and_forget {\n\t\t// 显示时长固定 2 秒\n\t\tco_await 2s;\n\t\tco_await dispatcher;\n\n\t\t{\n\t\t\tMUXC::TeachingTip curTeachingTip = weakCurTeachingTip.get();\n\t\t\t// 如果 curTeachingTip 已被卸载则无需关闭\n\t\t\tif (!curTeachingTip || !curTeachingTip.IsLoaded()) {\n\t\t\t\tco_return;\n\t\t\t}\n\n\t\t\tcurTeachingTip.IsOpen(false);\n\n\t\t\t// 某些特殊情况下关闭会失败（比如被调试器暂停后），应等待一段时间后检查 IsOpen\n\t\t\tco_await resume_foreground(dispatcher, DispatcherQueuePriority::Low);\n\n\t\t\tif (!curTeachingTip.IsOpen()) {\n\t\t\t\tco_return;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// 第一次关闭失败则等待一段时间后再次尝试\n\t\tco_await 500ms;\n\t\tco_await dispatcher;\n\n\t\tMUXC::TeachingTip curTeachingTip = weakCurTeachingTip.get();\n\t\tif (curTeachingTip && curTeachingTip.IsLoaded()) {\n\t\t\tcurTeachingTip.IsOpen(false);\n\t\t}\n\t}(dispatcher, curTeachingTip, oldTeachingTip);\n\n\tauto weakThis = get_weak();\n\n\t// 定期更新弹窗位置\n\tRECT prevframeRect{};\n\tdo {\n\t\tco_await resume_background();\n\t\t// 等待一帧的时间可以使弹窗的移动更平滑\n\t\tDwmFlush();\n\t\tco_await dispatcher;\n\n\t\tif (!weakThis.get() || _isClosed) {\n\t\t\tco_return;\n\t\t}\n\n\t\tif (!IsWindow((HWND)hwndTarget) || !IsWindow(_hwndToast) ||\n\t\t\t!Win32Helper::GetWindowFrameRect((HWND)hwndTarget, frameRect))\n\t\t{\n\t\t\t// 附加的窗口关闭后 toast 也应关闭。应检查 curTeachingTip 是否已经在新的调用中被卸载，\n\t\t\t// 见函数开头的 UnloadObject。\n\t\t\tif (curTeachingTip.IsLoaded()) {\n\t\t\t\tUnloadObject(curTeachingTip);\n\t\t\t\t// 延长生命周期避免崩溃\n\t\t\t\t_oldTeachingTip = std::move(curTeachingTip);\n\t\t\t}\n\t\t\tco_return;\n\t\t}\n\n\t\tisTargetTopMost = GetWindowExStyle(hwndTarget) & WS_EX_TOPMOST;\n\t\tif (isTargetTopMost || (!isOwned && GetForegroundWindow() == (HWND)hwndTarget)) {\n\t\t\t// 如果 hwndTarget 位于前台，定期将弹窗置顶。SWP_NOOWNERZORDER 可以避免修改 hwndTarget\n\t\t\t// 的 Z 顺序，理论上不需要这个标志，可能是 OS 的 bug。\n\t\t\tSetWindowPos(_hwndToast, HWND_TOPMOST, 0, 0, 0, 0,\n\t\t\t\tSWP_NO_ACTIVATE_MOVE_SIZE | SWP_NOOWNERZORDER);\n\t\t}\n\t\tif (!isTargetTopMost) {\n\t\t\tSetWindowPos(_hwndToast, HWND_NOTOPMOST, 0, 0, 0, 0,\n\t\t\t\tSWP_NO_ACTIVATE_MOVE_SIZE | SWP_NOOWNERZORDER);\n\t\t}\n\n\t\t// 窗口没有移动则无需更新\n\t\tif (frameRect != prevframeRect) {\n\t\t\tprevframeRect = frameRect;\n\t\t\tUpdateToastPosition(_hwndToast, frameRect, false);\n\t\t}\n\t} while (curTeachingTip.IsLoaded() && curTeachingTip.IsOpen());\n}\n\nvoid ToastPage::_UpdateTheme() {\n\tconst bool isLightTheme = App::Get().IsLightTheme();\n\n\tif (IsLoaded() && (ActualTheme() == ElementTheme::Light) == isLightTheme) {\n\t\t// 无需切换\n\t\treturn;\n\t}\n\n\tElementTheme newTheme = isLightTheme ? ElementTheme::Light : ElementTheme::Dark;\n\tRequestedTheme(newTheme);\n\n\tXamlHelper::UpdateThemeOfXamlPopups(XamlRoot(), newTheme);\n\tXamlHelper::UpdateThemeOfTooltips(*this, newTheme);\n}\n\nvoid ToastPage::_IsLogoShown(bool value) {\n\tif (_isLogoShown == value) {\n\t\treturn;\n\t}\n\n\t_isLogoShown = value;\n\tRaisePropertyChanged(L\"IsLogoShown\");\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ToastPage.h",
    "content": "#pragma once\n#include \"ToastPage.g.h\"\n#include \"Event.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct ToastPage : ToastPageT<ToastPage>, wil::notify_property_changed_base<ToastPage> {\n\tToastPage(uint64_t hwndToast);\n\n\tvoid InitializeComponent();\n\n\tImaging::SoftwareBitmapSource Logo() const noexcept {\n\t\treturn _logo;\n\t}\n\n\tbool IsLogoShown() const noexcept {\n\t\treturn _isLogoShown;\n\t}\n\n\tfire_and_forget ShowMessageOnWindow(std::wstring title, std::wstring message, HWND hwndTarget, bool showLogo);\n\n\tvoid Close() {\n\t\t_oldTeachingTip = nullptr;\n\t\t_isClosed = true;\n\t}\n\nprivate:\n\tvoid _UpdateTheme();\n\n\tvoid _IsLogoShown(bool value);\n\n\t::Magpie::MultithreadEvent<bool>::EventRevoker _appThemeChangedRevoker;\n\n\tImaging::SoftwareBitmapSource _logo{ nullptr };\n\tHWND _hwndToast;\n\tMUXC::TeachingTip _oldTeachingTip{ nullptr };\n\tbool _isLogoShown = true;\n\t// 防止退出时崩溃\n\tbool _isClosed = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/ToastPage.idl",
    "content": "namespace Magpie {\n    runtimeclass ToastPage : Windows.UI.Xaml.Controls.Page, Windows.UI.Xaml.Data.INotifyPropertyChanged {\n        Windows.UI.Xaml.Media.Imaging.SoftwareBitmapSource Logo { get; };\n        Boolean IsLogoShown { get; };\n        \n        // https://github.com/microsoft/microsoft-ui-xaml/issues/7579\n        void UnloadObject(Windows.UI.Xaml.DependencyObject object);\n    }\n}\n"
  },
  {
    "path": "src/Magpie/ToastPage.xaml",
    "content": "﻿<Page x:Class=\"Magpie.ToastPage\"\n      xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n      xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n      xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n      xmlns:local=\"using:Magpie\"\n      xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n      xmlns:muxc=\"using:Microsoft.UI.Xaml.Controls\"\n      mc:Ignorable=\"d\">\n\t<muxc:TeachingTip x:Name=\"MessageTeachingTip\"\n\t                  x:Load=\"False\"\n\t                  PreferredPlacement=\"Center\"\n\t                  ShouldConstrainToRootBounds=\"False\">\n\t\t<StackPanel x:Name=\"MessageTeachingTipContent\"\n\t\t            Orientation=\"Horizontal\">\n\t\t\t<Image Width=\"16\"\n\t\t\t       Height=\"16\"\n\t\t\t       Margin=\"0,0,8,0\"\n\t\t\t       VerticalAlignment=\"Center\"\n\t\t\t       Source=\"{x:Bind Logo, Mode=OneWay}\"\n\t\t\t       Visibility=\"{x:Bind IsLogoShown, Mode=OneWay}\" />\n\t\t\t<!--  MaxWidth 用于修复换行时布局错误  -->\n\t\t\t<StackPanel MaxWidth=\"330\"\n\t\t\t            Orientation=\"Vertical\">\n\t\t\t\t<TextBlock x:Name=\"TitleTextBlock\"\n\t\t\t\t           FontWeight=\"SemiBold\"\n\t\t\t\t           TextWrapping=\"WrapWholeWords\" />\n\t\t\t\t<TextBlock x:Name=\"MessageTextBlock\"\n\t\t\t\t           TextWrapping=\"WrapWholeWords\" />\n\t\t\t</StackPanel>\n\t\t</StackPanel>\n\t</muxc:TeachingTip>\n</Page>\n"
  },
  {
    "path": "src/Magpie/ToastService.cpp",
    "content": "#include \"pch.h\"\n#include \"App.h\"\n#include \"CommonSharedConstants.h\"\n#include \"MainWindow.h\"\n#include \"ToastService.h\"\n#include \"Win32Helper.h\"\n#include \"XamlHelper.h\"\n#include <windows.ui.xaml.hosting.desktopwindowxamlsource.h>\n#include <winrt/Windows.UI.Xaml.Hosting.h>\n\nusing namespace winrt::Magpie::implementation;\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Controls;\nusing namespace Windows::UI::Xaml::Hosting;\n\nnamespace Magpie {\n\nvoid ToastService::Initialize() noexcept {\n\t// 在独立线程里创建新 XAML Islands 窗口。一个线程托管多个 XAML Islands 窗口有大量 bug\n\t_toastThread = std::thread(&ToastService::_ToastThreadProc, this);\n}\n\nvoid ToastService::Uninitialize() noexcept {\n\tif (!_toastThread.joinable()) {\n\t\treturn;\n\t}\n\n\tconst HANDLE hToastThread = _toastThread.native_handle();\n\n\tif (!wil::handle_wait(hToastThread, 0)) {\n\t\tconst DWORD threadId = GetThreadId(hToastThread);\n\n\t\t// 持续尝试直到 _toastThread 创建了消息队列\n\t\twhile (!PostThreadMessage(threadId, WM_QUIT, 0, 0)) {\n\t\t\tif (wil::handle_wait(hToastThread, 1)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t_toastThread.join();\n}\n\nvoid ToastService::ShowMessageOnWindow(std::wstring_view title, std::wstring_view message, HWND hwndTarget) const noexcept {\n\t_Dispatcher().TryEnqueue([this, title(std::wstring(title)), message(std::wstring(message)), hwndTarget]() {\n\t\t_toastPage->ShowMessageOnWindow(std::move(title), std::move(message), hwndTarget, true);\n\t});\n}\n\nvoid ToastService::ShowMessageInApp(std::wstring_view title, std::wstring_view message) const noexcept {\n\t_Dispatcher().TryEnqueue([this, title(std::wstring(title)), message(std::wstring(message))]() {\n\t\t_toastPage->ShowMessageOnWindow(std::move(title), std::move(message), App::Get().MainWindow().Handle(), false);\n\t});\n}\n\nvoid ToastService::_ToastThreadProc() noexcept {\n#ifdef _DEBUG\n\tSetThreadDescription(GetCurrentThread(), L\"Magpie-ToastService 线程\");\n#endif\n\n\twinrt::init_apartment(winrt::apartment_type::single_threaded);\n\n\t[[maybe_unused]] static Ignore _ = [] {\n\t\tWNDCLASSEXW wcex{\n\t\t\t.cbSize = sizeof(wcex),\n\t\t\t.lpfnWndProc = _ToastWndProc,\n\t\t\t.hInstance = wil::GetModuleInstanceHandle(),\n\t\t\t.lpszClassName = CommonSharedConstants::TOAST_WINDOW_CLASS_NAME\n\t\t};\n\t\tRegisterClassEx(&wcex);\n\n\t\treturn Ignore();\n\t}();\n\n\t// 创建窗口失败也应进入消息循环。Win10 中关闭任意线程的 DesktopWindowXamlSource 都会使主线程会崩溃，\n\t// 在程序退出前，xamlSource 不能析构。见 https://github.com/microsoft/terminal/pull/15397\n\t_hwndToast = CreateWindowEx(\n\t\tWS_EX_NOREDIRECTIONBITMAP | WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT,\n\t\tCommonSharedConstants::TOAST_WINDOW_CLASS_NAME,\n\t\tnullptr,\n\t\tWS_POPUP,\n\t\t0, 0, 0, 0,\n\t\tNULL,\n\t\tNULL,\n\t\twil::GetModuleInstanceHandle(),\n\t\tnullptr\n\t);\n\tSetWindowPos(_hwndToast, NULL, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NO_ACTIVATE_MOVE_SIZE);\n\n\t// DesktopWindowXamlSource 在控件之前创建则无需调用 WindowsXamlManager::InitializeForCurrentThread\n\tDesktopWindowXamlSource xamlSource;\n\tcom_ptr<IDesktopWindowXamlSourceNative2> xamlSourceNative2 =\n\t\txamlSource.try_as<IDesktopWindowXamlSourceNative2>();\n\t\n\txamlSourceNative2->AttachToWindow(_hwndToast);\n\n\tHWND hwndXamlIsland;\n\txamlSourceNative2->get_WindowHandle(&hwndXamlIsland);\n\tSetWindowPos(hwndXamlIsland, NULL, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOZORDER | SWP_SHOWWINDOW);\n\n\t_toastPage = make_self<winrt::Magpie::implementation::ToastPage>((uint64_t)_hwndToast);\n\txamlSource.Content(*_toastPage);\n\n\t_dispatcher = winrt::DispatcherQueue::GetForCurrentThread();\n\t// 如果主线程正在等待则唤醒主线程\n\t_dispatcherInitialized.store(true, std::memory_order_release);\n\t_dispatcherInitialized.notify_one();\n\n\tMSG msg;\n\twhile (GetMessage(&msg, nullptr, 0, 0)) {\n\t\tBOOL processed = FALSE;\n\t\tHRESULT hr = xamlSourceNative2->PreTranslateMessage(&msg, &processed);\n\t\tif (SUCCEEDED(hr) && processed) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tTranslateMessage(&msg);\n\t\tDispatchMessage(&msg);\n\t}\n\n\tDestroyWindow(_hwndToast);\n\n\t// 防止退出时崩溃\n\t_toastPage->Close();\n\n\t// 必须手动重置 Content，否则会内存泄露\n\txamlSource.Content(nullptr);\n\txamlSource.Close();\n\t_dispatcher = nullptr;\n\t\n\t// 关闭 DesktopWindowXamlSource 后应清空消息队列以减少 ToastPage 的引用，但不能\n\t// 防止泄露\n\twhile (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) {\n\t\tDispatchMessage(&msg);\n\t}\n\n\t// 偶尔清空消息队列无用，需要再清空一次，不确定是否 100% 可靠。谢谢你，XAML Islands！\n\tSleep(0);\n\twhile (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) {\n\t\tDispatchMessage(&msg);\n\t}\n\n\tif (Win32Helper::GetOSVersion().IsWin11()) {\n\t\t_toastPage = nullptr;\n\t} else {\n\t\t// !!! HACK !!!\n\t\t// Win10 中 ToastPage 会泄露，很可能是 XAML Islands 的 bug，但主线程的 RootPage 却不会。\n\t\t// Win11 没有这个问题。下面的代码确保 ToastPage 能析构！\n\t\tauto raw = _toastPage.detach();\n\t\twhile (raw->Release() != 0) {}\n\t}\n}\n\nLRESULT ToastService::_ToastWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {\n\tswitch (msg) {\n\tcase WM_MOVE:\n\t{\n\t\tif (Get()._toastPage) {\n\t\t\t// 使弹窗随窗口移动\n\t\t\tXamlHelper::RepositionXamlPopups(Get()._toastPage->XamlRoot(), false);\n\t\t}\n\n\t\treturn 0;\n\t}\n\t}\n\n\treturn DefWindowProc(hWnd, msg, wParam, lParam);\n}\n\nconst DispatcherQueue& ToastService::_Dispatcher() const noexcept {\n\t_dispatcherInitialized.wait(false, std::memory_order_acquire);\n\treturn _dispatcher;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/ToastService.h",
    "content": "#pragma once\n#include \"ToastPage.h\"\n\nnamespace Magpie {\n\nclass ToastService {\npublic:\n\tstatic ToastService& Get() noexcept {\n\t\tstatic ToastService instance;\n\t\treturn instance;\n\t}\n\n\tToastService(const ToastService&) = delete;\n\tToastService(ToastService&&) = delete;\n\n\tvoid Initialize() noexcept;\n\n\tvoid Uninitialize() noexcept;\n\n\tvoid ShowMessageOnWindow(std::wstring_view title, std::wstring_view message, HWND hwndTarget) const noexcept;\n\n\tvoid ShowMessageInApp(std::wstring_view title, std::wstring_view message) const noexcept;\n\nprivate:\n\tToastService() = default;\n\n\tvoid _ToastThreadProc() noexcept;\n\n\tstatic LRESULT CALLBACK _ToastWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);\n\n\t// 确保 _dispatcher 完成初始化\n\tconst winrt::DispatcherQueue& _Dispatcher() const noexcept;\n\n\tstd::thread _toastThread;\n\n\twinrt::DispatcherQueue _dispatcher{ nullptr };\n\tstd::atomic<bool> _dispatcherInitialized = false;\n\n\t// 只能在 toast 线程访问\n\twinrt::com_ptr<winrt::Magpie::implementation::ToastPage> _toastPage{ nullptr };\n\tHWND _hwndToast = NULL;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/TouchHelper.cpp",
    "content": "#include \"pch.h\"\n#include \"TouchHelper.h\"\n#include \"StrHelper.h\"\n#include \"Logger.h\"\n#include \"Win32Helper.h\"\n#include \"CommonSharedConstants.h\"\n#include <ImageHlp.h>\n#include <Shlobj.h>\n#include <shellapi.h>\n\nnamespace Magpie {\n\n// TouchHelper 有重要更改则提高版本号\nstatic constexpr uint32_t TOUCH_HELPER_VERSION = 4;\n\nstatic constexpr const wchar_t* TOUCH_HELPER_EXE_NAME = L\"TouchHelper.exe\";\n\n// 证书的 SHA1 哈希值，也是“指纹”\nstatic constexpr std::array<uint8_t, 20> CERT_FINGERPRINT{\n\t0xad, 0x5a, 0x50, 0x3d, 0xda, 0xec, 0x08, 0x5b, 0xf4, 0x48,\n\t0xd8, 0x63, 0xcf, 0x90, 0x3a, 0xb4, 0x72, 0x0e, 0x0b, 0x12\n};\n\nstatic std::vector<uint8_t> GetCertificateDataFromPE(const wchar_t* fileName) noexcept {\n\twil::unique_hfile hFile(CreateFile(\n\t\tfileName, FILE_READ_DATA, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL));\n\tif (!hFile) {\n\t\tLogger::Get().Win32Error(\"CreateFile 失败\");\n\t\treturn {};\n\t}\n\n\tDWORD len = 0;\n\tWIN_CERTIFICATE cert;\n\tif (!ImageGetCertificateData(hFile.get(), 0, &cert, &len) && GetLastError() != ERROR_INSUFFICIENT_BUFFER) {\n\t\tLogger::Get().Win32Error(\"ImageGetCertificateData 失败\");\n\t\treturn {};\n\t}\n\n\tstd::vector<uint8_t> data(len);\n\tif (!ImageGetCertificateData(hFile.get(), 0, (WIN_CERTIFICATE*)data.data(), &len)) {\n\t\tLogger::Get().Win32Error(\"ImageGetCertificateData 失败\");\n\t\treturn {};\n\t}\n\n\treturn data;\n}\n\nstatic void CloseCertStore(HCERTSTORE hCertStore) noexcept {\n\tCertCloseStore(hCertStore, 0);\n}\n\nusing unique_cert_store = wil::unique_any<HCERTSTORE, decltype(&CloseCertStore), CloseCertStore>;\nusing unique_cert_context =\nwil::unique_any<PCCERT_CONTEXT, decltype(&CertFreeCertificateContext), CertFreeCertificateContext>;\n\nstatic bool InstallCertificateFromPE(const wchar_t* exePath) noexcept {\n\t// 打开本地计算机的根证书存储区\n\tunique_cert_store hRootCertStore(CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL,\n\t\tCERT_SYSTEM_STORE_LOCAL_MACHINE | CERT_STORE_OPEN_EXISTING_FLAG, L\"ROOT\"));\n\tif (!hRootCertStore) {\n\t\tLogger::Get().Win32Error(\"CertOpenStore 失败\");\n\t\treturn false;\n\t}\n\n\t// 检查证书是否已安装\n\t{\n\t\tconst CRYPT_DATA_BLOB blob{\n\t\t\t.cbData = (DWORD)CERT_FINGERPRINT.size(),\n\t\t\t.pbData = (BYTE*)CERT_FINGERPRINT.data()\n\t\t};\n\t\tunique_cert_context context(CertFindCertificateInStore(\n\t\t\thRootCertStore.get(), PKCS_7_ASN_ENCODING, 0, CERT_FIND_SHA1_HASH, &blob, nullptr));\n\t\tif (context) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// 从可执行文件中提取证书\n\tstd::vector<uint8_t> certData = GetCertificateDataFromPE(exePath);\n\tif (certData.empty()) {\n\t\tLogger::Get().Error(\"GetCertificateDataFromPE 失败\");\n\t\treturn false;\n\t}\n\n\tWIN_CERTIFICATE* winCert = (WIN_CERTIFICATE*)certData.data();\n\n\tif (winCert->wCertificateType != WIN_CERT_TYPE_PKCS_SIGNED_DATA) {\n\t\tLogger::Get().Error(\"未知证书\");\n\t\treturn false;\n\t}\n\n\tCRYPT_DATA_BLOB blob{\n\t\t.cbData = DWORD(certData.size() - offsetof(WIN_CERTIFICATE, bCertificate)),\n\t\t.pbData = winCert->bCertificate\n\t};\n\tunique_cert_store hMemStore(CertOpenStore(\n\t\tCERT_STORE_PROV_PKCS7, 0, NULL, CERT_STORE_READONLY_FLAG, &blob));\n\tif (!hMemStore) {\n\t\tLogger::Get().Win32Error(\"CertOpenStore 失败\");\n\t\treturn false;\n\t}\n\n\tunique_cert_context context(CertFindCertificateInStore(\n\t\thMemStore.get(), PKCS_7_ASN_ENCODING, 0, CERT_FIND_ANY, 0, NULL));\n\tif (!context) {\n\t\tLogger::Get().Win32Error(\"CertFindCertificateInStore 失败\");\n\t\treturn false;\n\t}\n\n\t// 验证指纹\n\t{\n\t\tstd::array<uint8_t, 20> fingerprint{};\n\t\tDWORD fingerprintSize = (DWORD)fingerprint.size();\n\t\tif (!CertGetCertificateContextProperty(context.get(),\n\t\t\tCERT_HASH_PROP_ID, fingerprint.data(), &fingerprintSize)) {\n\t\t\tLogger::Get().Win32Error(\"CertGetCertificateContextProperty 失败\");\n\t\t\treturn false;\n\t\t}\n\n\t\tif (fingerprint != CERT_FINGERPRINT) {\n\t\t\tLogger::Get().Error(\"证书指纹不匹配\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// 设置友好名称\n\t{\n\t\twchar_t friendlyName[] = L\"Magpie Self-Signed Certificate\";\n\t\tblob.cbData = sizeof(friendlyName);\n\t\tblob.pbData = (BYTE*)friendlyName;\n\t\tif (!CertSetCertificateContextProperty(context.get(), CERT_FRIENDLY_NAME_PROP_ID, 0, &blob)) {\n\t\t\tLogger::Get().Win32Error(\"CertSetCertificateContextProperty 失败\");\n\t\t}\n\t}\n\t\n\t// 安装证书\n\tif (!CertAddCertificateContextToStore(hRootCertStore.get(), context.get(), CERT_STORE_ADD_NEWER, NULL)) {\n\t\tif (GetLastError() != (DWORD)CRYPT_E_EXISTS) {\n\t\t\tLogger::Get().Win32Error(\"CertAddCertificateContextToStore 失败\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n// 为了获得 UIAccess 权限需满足两个条件：\n// 1. 必须签名，且证书必须由本地计算机的受信任的根证书颁发机构验证\n// 2. 必须位于只能由管理员写入的本地文件夹\nbool TouchHelper::Register() noexcept {\n\tif (!Win32Helper::IsProcessElevated()) {\n\t\tLogger::Get().Error(\"没有管理员权限\");\n\t\treturn false;\n\t}\n\n\tif (!Win32Helper::FileExists(TOUCH_HELPER_EXE_NAME)) {\n\t\tLogger::Get().Error(\"找不到可执行文件\");\n\t\treturn false;\n\t}\n\n\tif (!InstallCertificateFromPE(TOUCH_HELPER_EXE_NAME)) {\n\t\tLogger::Get().Error(\"InstallCert 失败\");\n\t\treturn false;\n\t}\n\n\tLogger::Get().Info(\"安装证书成功\");\n\n\t// 将可执行文件复制到 System32 文件夹中\n\t// 1. 不能选择 Program Files，某些环境下该文件夹中的程序无法获得 UIAccess 权限\n\t// 2. System32 比 Windows 更好，因为前者是“安全位置”，见 https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/security-policy-settings/user-account-control-only-elevate-uiaccess-applications-that-are-installed-in-secure-locations\n\twil::unique_cotaskmem_string system32Dir;\n\tHRESULT hr = SHGetKnownFolderPath(\n\t\tFOLDERID_System, KF_FLAG_DEFAULT, NULL, system32Dir.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"SHGetKnownFolderPath 失败\", hr);\n\t\treturn false;\n\t}\n\n\tstd::wstring magpieDir = StrHelper::Concat(system32Dir.get(), L\"\\\\Magpie\");\n\tif (!Win32Helper::CreateDir(magpieDir)) {\n\t\tLogger::Get().Win32Error(\"CreateDir 失败\");\n\t\treturn false;\n\t}\n\n\tstd::wstring targetPath = StrHelper::Concat(magpieDir, L\"\\\\\", TOUCH_HELPER_EXE_NAME);\n\tif (!CopyFile(TOUCH_HELPER_EXE_NAME, targetPath.c_str(), FALSE)) {\n\t\tLogger::Get().Win32Error(\"CopyFile 失败\");\n\t\treturn false;\n\t}\n\n\t// 记录版本\n\ttargetPath += L\".ver\";\n\tstatic const uint32_t version = TOUCH_HELPER_VERSION;\n\tif (!Win32Helper::WriteFile(targetPath.c_str(), { (uint8_t*)&version, sizeof(version)})) {\n\t\tLogger::Get().Error(\"写入资源文件失败\");\n\t\treturn false;\n\t}\n\n\tLogger::Get().Info(\"复制可执行文件成功\");\n\treturn true;\n}\n\nstatic void StopTouchHelper() noexcept {\n\t// 查找 TouchHelper.exe 的隐藏窗口\n\tHWND hwndTouchHelper = NULL;\n\tfor (int i = 0; i < 10; ++i) {\n\t\thwndTouchHelper = FindWindow(CommonSharedConstants::TOUCH_HELPER_WINDOW_CLASS_NAME, nullptr);\n\t\tif (hwndTouchHelper) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// 等待 TouchHelper.exe 初始化\n\t\tSleep(100);\n\t}\n\n\tif (!hwndTouchHelper) {\n\t\tLogger::Get().Info(\"未找到 TouchHelper 窗口\");\n\t\treturn;\n\t}\n\n\tDWORD processId;\n\tif (!GetWindowThreadProcessId(hwndTouchHelper, &processId)) {\n\t\tLogger::Get().Win32Error(\"GetWindowThreadProcessId 失败\");\n\t\treturn;\n\t}\n\n\twil::unique_process_handle hTouchHelperProcess(OpenProcess(SYNCHRONIZE, FALSE, processId));\n\tif (!hTouchHelperProcess) {\n\t\tLogger::Get().Win32Error(\"OpenProcess 失败\");\n\t\treturn;\n\t}\n\n\tconst UINT WM_MAGPIE_TOUCHHELPER =\n\t\tRegisterWindowMessage(CommonSharedConstants::WM_MAGPIE_TOUCHHELPER);\n\n\t// 通知 TouchHelper 退出\n\tPostMessage(hwndTouchHelper, WM_MAGPIE_TOUCHHELPER, 0, 0);\n\n\t// 等待退出\n\tif (wil::handle_wait(hTouchHelperProcess.get(), 3000)) {\n\t\tLogger::Get().Info(\"TouchHelper 已退出\");\n\t} else {\n\t\tLogger::Get().Error(\"TouchHelper 未退出\");\n\t}\n}\n\nstatic bool DeleteTouchHelperExe(const wchar_t* exePath) noexcept {\n\tif (DeleteFile(exePath)) {\n\t\treturn true;\n\t}\n\n\tif (GetLastError() != ERROR_ACCESS_DENIED) {\n\t\tLogger::Get().Win32Error(\"DeleteFile 失败\");\n\t\treturn false;\n\t}\n\n\tStopTouchHelper();\n\n\tif (DeleteFile(exePath)) {\n\t\treturn true;\n\t} else {\n\t\tLogger::Get().Win32Error(\"DeleteFile 失败\");\n\t\treturn false;\n\t}\n}\n\nbool TouchHelper::Unregister() noexcept {\n\tif (!Win32Helper::IsProcessElevated()) {\n\t\tLogger::Get().Error(\"没有管理员权限\");\n\t\treturn false;\n\t}\n\n\t// 删除 system32\\Magpie 文件夹\n\n\twil::unique_cotaskmem_string system32Dir;\n\tHRESULT hr = SHGetKnownFolderPath(\n\t\tFOLDERID_System, KF_FLAG_DEFAULT, NULL, system32Dir.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"SHGetKnownFolderPath 失败\", hr);\n\t\treturn false;\n\t}\n\n\t// 如果 TouchHelper 正在运行，则使它退出\n\tif (DeleteTouchHelperExe(StrHelper::Concat(system32Dir.get(), L\"\\\\Magpie\\\\\",\n\t\t\t\t\t\t\t TOUCH_HELPER_EXE_NAME).c_str())) {\n\t\tLogger::Get().Info(\"已删除 TouchHelper.exe\");\n\t} else {\n\t\tLogger::Get().Error(\"删除 TouchHelper.exe 失败\");\n\t\treturn false;\n\t}\n\n\thr = wil::RemoveDirectoryRecursiveNoThrow(\n\t\tStrHelper::Concat(system32Dir.get(), L\"\\\\Magpie\").c_str());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"RemoveDirectoryRecursiveNoThrow 失败\", hr);\n\t\treturn false;\n\t}\n\n\t// 删除证书\n\n\t// 打开本地计算机的根证书存储区\n\tunique_cert_store hRootCertStore(CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL,\n\t\tCERT_SYSTEM_STORE_LOCAL_MACHINE | CERT_STORE_OPEN_EXISTING_FLAG, L\"ROOT\"));\n\tif (!hRootCertStore) {\n\t\tLogger::Get().Win32Error(\"CertOpenStore 失败\");\n\t\treturn false;\n\t}\n\n\tconst CRYPT_DATA_BLOB blob{\n\t\t.cbData = (DWORD)CERT_FINGERPRINT.size(),\n\t\t.pbData = (BYTE*)CERT_FINGERPRINT.data()\n\t};\n\tunique_cert_context context(CertFindCertificateInStore(\n\t\thRootCertStore.get(), PKCS_7_ASN_ENCODING, 0, CERT_FIND_SHA1_HASH, &blob, nullptr));\n\tif (context) {\n\t\tif (!CertDeleteCertificateFromStore(context.get())) {\n\t\t\tLogger::Get().Win32Error(\"CertDeleteCertificateFromStore 失败\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nstatic std::wstring GetTouchHelperPath() noexcept {\n\twil::unique_cotaskmem_string system32Dir;\n\tHRESULT hr = SHGetKnownFolderPath(\n\t\tFOLDERID_System, KF_FLAG_DEFAULT, NULL, system32Dir.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"SHGetKnownFolderPath 失败\", hr);\n\t\treturn {};\n\t}\n\n\treturn StrHelper::Concat(system32Dir.get(), L\"\\\\Magpie\\\\\", TOUCH_HELPER_EXE_NAME);\n}\n\nbool TouchHelper::IsTouchSupportEnabled() noexcept {\n\t// 不检查版本号\n\treturn Win32Helper::FileExists(GetTouchHelperPath().c_str());\n}\n\nvoid TouchHelper::IsTouchSupportEnabled(bool value) noexcept {\n\tSHELLEXECUTEINFO execInfo{\n\t\t.cbSize = sizeof(execInfo),\n\t\t.fMask = SEE_MASK_NOASYNC | SEE_MASK_NOCLOSEPROCESS,\n\t\t.lpVerb = L\"runas\",\n\t\t.lpFile = Win32Helper::GetExePath().c_str(),\n\t\t.lpParameters = value ? L\" -r\" : L\" -ur\"\n\t};\n\n\tif (ShellExecuteEx(&execInfo)) {\n\t\twil::unique_process_handle hProcess(execInfo.hProcess);\n\t\tif (hProcess) {\n\t\t\twil::handle_wait(hProcess.get());\n\t\t}\n\t} else if (GetLastError() != ERROR_CANCELLED) {\n\t\tLogger::Get().Win32Error(\"ShellExecuteEx 失败\");\n\t}\n}\n\nstatic bool CheckAndFixTouchHelper(std::wstring& path) noexcept {\n\t// 检查版本号\n\tpath += L\".ver\";\n\n\tstd::vector<uint8_t> versionData;\n\n\tconst auto checkVersion = [&]() {\n\t\tif (!Win32Helper::ReadFile(path.c_str(), versionData)) {\n\t\t\tLogger::Get().Error(\"读取版本号失败\");\n\t\t}\n\n\t\treturn versionData.size() == 4 &&\n\t\t\t*(uint32_t*)versionData.data() == TOUCH_HELPER_VERSION;\n\t};\n\n\tif (!checkVersion()) {\n\t\t// 版本号不匹配，尝试修复，这会请求管理员权限\n\t\tTouchHelper::IsTouchSupportEnabled(true);\n\n\t\tif (!checkVersion()) {\n\t\t\tLogger::Get().Error(\"修复触控支持失败\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tpath.erase(path.size() - 4);\n\treturn true;\n}\n\nbool TouchHelper::TryLaunchTouchHelper(bool& isTouchSupportEnabled) noexcept {\n\tstd::wstring path = GetTouchHelperPath();\n\tisTouchSupportEnabled = Win32Helper::FileExists(path.c_str());\n\tif (!isTouchSupportEnabled) {\n\t\t// 未启用触控支持\n\t\treturn true;\n\t}\n\n\twil::unique_mutex_nothrow hSingleInstanceMutex;\n\n\tbool alreadyExists = false;\n\tif (!hSingleInstanceMutex.try_create(\n\t\tCommonSharedConstants::TOUCH_HELPER_SINGLE_INSTANCE_MUTEX_NAME,\n\t\tCREATE_MUTEX_INITIAL_OWNER,\n\t\tMUTEX_ALL_ACCESS,\n\t\tnullptr,\n\t\t&alreadyExists\n\t) || alreadyExists) {\n\t\tLogger::Get().Info(\"TouchHelper.exe 正在运行\");\n\t\treturn true;\n\t}\n\n\thSingleInstanceMutex.ReleaseMutex();\n\n\t// TouchHelper.exe 未在运行则启动它\n\n\t// 检查版本是否匹配并尝试修复\n\tif (!CheckAndFixTouchHelper(path)) {\n\t\t// 修复失败\n\t\tLogger::Get().Error(\"CheckAndFixTouchHelper 失败\");\n\t\treturn false;\n\t}\n\n\t// GH#992: 必须委托 explorer 启动 TouchHelper，否则如果启用了“以管理者身份运行该程序”\n\t// 兼容性选项，TouchHelper 将无法获得 UIAccess 权限\n\tif (!Win32Helper::ShellOpen(path.c_str(), nullptr, true)) {\n\t\tLogger::Get().Error(\"启动 TouchHelper.exe 失败\");\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/TouchHelper.h",
    "content": "#pragma once\n\nnamespace Magpie {\n\nstruct TouchHelper {\n\tstatic bool Register() noexcept;\n\tstatic bool Unregister() noexcept;\n\n\tstatic bool IsTouchSupportEnabled() noexcept;\n\tstatic void IsTouchSupportEnabled(bool value) noexcept;\n\tstatic bool TryLaunchTouchHelper(bool& isTouchSupportEnabled) noexcept;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/UpdateService.cpp",
    "content": "#include \"pch.h\"\n#include \"App.h\"\n#include \"AppSettings.h\"\n#include \"CommonSharedConstants.h\"\n#include \"JsonHelper.h\"\n#include \"Logger.h\"\n#include \"MainWindow.h\"\n#include \"StrHelper.h\"\n#include \"UpdateService.h\"\n#include \"Version.h\"\n#include \"Win32Helper.h\"\n#include <bcrypt.h>\n#include <wil/resource.h>\t// 再次包含以激活 CNG 相关包装器\n#include <rapidjson/document.h>\n#include <winrt/Windows.Storage.Streams.h>\n#include <winrt/Windows.Web.Http.h>\n#include <zip/zip.h>\n\nusing namespace ::Magpie;\nusing namespace winrt::Magpie::implementation;\nusing namespace winrt;\nusing namespace Windows::Storage::Streams;\nusing namespace Windows::System::Threading;\nusing namespace Windows::Web::Http;\n\nnamespace Magpie {\n\nstatic constexpr Version MAGPIE_VERSION(MP_MAJOR_VERSION, MP_MINOR_VERSION, MP_PATCH_VERSION);\n\nstatic constexpr uint32_t MD5_HASH_LENGTH = 16;\n\nvoid UpdateService::Initialize() noexcept {\n\t// 只有发布版本能检查更新\n#ifdef MP_VERSION_STRING\n\tAppSettings& settings = AppSettings::Get();\n\tif (settings.IsAutoCheckForUpdates()) {\n\t\t_StartTimer();\n\t\t// 启动时检查一次\n\t\t_Timer_Tick(nullptr);\n\t}\n\n\t_autoCheckForUpdatesChangedRevoker = settings.IsAutoCheckForUpdatesChanged(\n\t\tauto_revoke, std::bind_front(&UpdateService::_AppSettings_IsAutoCheckForUpdatesChanged, this));\n\n\t_mainWindowDestroyedRevoker = App::Get().MainWindow().Destroyed(\n\t\tauto_revoke, std::bind_front(&UpdateService::_MainWindow_Destroyed, this));\n#endif\n}\n\nvoid UpdateService::Uninitialize() noexcept {\n\t_mainWindowDestroyedRevoker.Revoke();\n\t_autoCheckForUpdatesChangedRevoker.Revoke();\n}\n\nfire_and_forget UpdateService::CheckForUpdatesAsync(bool isAutoUpdate) {\n\tif (_status == UpdateStatus::Checking) {\n\t\tco_return;\n\t}\n\n\t_Status(UpdateStatus::Checking);\n\n\trapidjson::Document doc;\n\n\ttry {\n\t\tHttpClient httpClient;\n\t\tIBuffer buffer = co_await httpClient.GetBufferAsync(\n\t\t\tUri(AppSettings::Get().IsCheckForPreviewUpdates()\n\t\t\t? L\"https://raw.githubusercontent.com/Blinue/Magpie/dev/version.json\"\n\t\t\t: L\"https://raw.githubusercontent.com/Blinue/Magpie/main/version.json\"));\n\n\t\tdoc.Parse((const char*)buffer.data(), buffer.Length());\n\t} catch (const hresult_error& e) {\n\t\tLogger::Get().ComError(\n\t\t\tStrHelper::Concat(\"检查更新失败: \", StrHelper::UTF16ToUTF8(e.message())),\n\t\t\te.code()\n\t\t);\n\n\t\tif (e.code() == HTTP_E_STATUS_NOT_FOUND) {\n\t\t\t// 404 表示没有更新可用\n\t\t\t_Status(UpdateStatus::NoUpdate);\n\t\t} else {\n\t\t\t_Status(UpdateStatus::ErrorWhileChecking);\n\t\t}\n\t\t\n\t\tco_return;\n\t}\n\n\tif (!doc.IsObject()) {\n\t\tLogger::Get().Error(\"根元素不是对象\");\n\t\t_Status(UpdateStatus::ErrorWhileChecking);\n\t\tco_return;\n\t}\n\n\tauto rootObj = const_cast<const rapidjson::Document&>(doc).GetObj();\n\n\tauto versionNode = rootObj.FindMember(\"version\");\n\tif (versionNode == rootObj.end()) {\n\t\tLogger::Get().Error(\"找不到 version 成员\");\n\t\t_Status(UpdateStatus::ErrorWhileChecking);\n\t\tco_return;\n\t}\n\tif (!versionNode->value.IsString()) {\n\t\tLogger::Get().Error(\"version 成员不是字符串\");\n\t\t_Status(UpdateStatus::ErrorWhileChecking);\n\t\tco_return;\n\t}\n\n\tVersion remoteVersion;\n\tif(!remoteVersion.Parse(versionNode->value.GetString())) {\n\t\tLogger::Get().Error(\"解析版本号失败\");\n\t\t_Status(UpdateStatus::ErrorWhileChecking);\n\t\tco_return;\n\t}\n\n\tif (remoteVersion <= MAGPIE_VERSION) {\n\t\t_Status(UpdateStatus::NoUpdate);\n\t\tco_return;\n\t}\n\n\tif (!JsonHelper::ReadString(rootObj, \"tag\", _tag, true) || _tag.empty()) {\n\t\tLogger::Get().Error(\"解析 tag 失败\");\n\t\t_Status(UpdateStatus::ErrorWhileChecking);\n\t\tco_return;\n\t}\n\n\tauto binaryNode = rootObj.FindMember(\"binary\");\n\tif (binaryNode == rootObj.end()) {\n\t\tLogger::Get().Error(\"找不到 binary 成员\");\n\t\t_Status(UpdateStatus::ErrorWhileChecking);\n\t\tco_return;\n\t}\n\tif (!binaryNode->value.IsObject()) {\n\t\tLogger::Get().Error(\"binary 成员不是对象\");\n\t\t_Status(UpdateStatus::ErrorWhileChecking);\n\t\tco_return;\n\t}\n\tauto binaryObj = binaryNode->value.GetObj();\n\tconst char* platform =\n#ifdef _M_X64\n\t\"x64\";\n#elif defined(_M_ARM64)\n\t\"ARM64\";\n#else\n\tstatic_assert(false, \"不支持的架构\")\n#endif\n\tauto platformNode = binaryObj.FindMember(platform);\n\tif (platformNode == binaryObj.end()) {\n\t\tLogger::Get().Error(StrHelper::Concat(\"找不到 \", platform, \"成员\"));\n\t\t// 还不支持此架构\n\t\t_Status(UpdateStatus::NoUpdate);\n\t\tco_return;\n\t}\n\tif (!platformNode->value.IsObject()) {\n\t\tLogger::Get().Error(StrHelper::Concat(platform, \" 成员不是对象\"));\n\t\t_Status(UpdateStatus::ErrorWhileChecking);\n\t\tco_return;\n\t}\n\tauto platformObj = platformNode->value.GetObj();\n\n\tif (!JsonHelper::ReadString(platformObj, \"url\", _binaryUrl, true) || _binaryUrl.empty()) {\n\t\tLogger::Get().Error(\"解析 url 失败\");\n\t\t_Status(UpdateStatus::ErrorWhileChecking);\n\t\tco_return;\n\t}\n\n\tif (!JsonHelper::ReadString(platformObj, \"hash\", _binaryHash, true) || _binaryHash.empty()) {\n\t\tLogger::Get().Error(\"解析 hash 失败\");\n\t\t_Status(UpdateStatus::ErrorWhileChecking);\n\t\tco_return;\n\t}\n\n\t_Status(UpdateStatus::Available);\n\tif (isAutoUpdate) {\n\t\tIsShowOnHomePage(true);\n\t}\n}\n\nstatic std::wstring Md5ToHex(const uint8_t* data) {\n\tstatic wchar_t oct2Hex[16] = {\n\t\tL'0',L'1',L'2',L'3',L'4',L'5',L'6',L'7',\n\t\tL'8',L'9',L'a',L'b',L'c',L'd',L'e',L'f'\n\t};\n\n\tstd::wstring result(32, 0);\n\twchar_t* pResult = &result[0];\n\n\tfor (uint32_t i = 0; i < MD5_HASH_LENGTH; ++i) {\n\t\tuint8_t b = data[i];\n\t\t*pResult++ = oct2Hex[(b >> 4) & 0xf];\n\t\t*pResult++ = oct2Hex[b & 0xf];\n\t}\n\n\treturn result;\n}\n\nfire_and_forget UpdateService::DownloadAndInstall() {\n\tassert(_status == UpdateStatus::Available || _status == UpdateStatus::ErrorWhileDownloading);\n\t_Status(UpdateStatus::Downloading);\n\n\t_downloadProgress = 0;\n\t_downloadCancelled = false;\n\tDownloadProgressChanged.Invoke(_downloadProgress);\n\n\t// 清空 update 文件夹\n\tif (Win32Helper::DirExists(CommonSharedConstants::UPDATE_DIR)) {\n\t\tHRESULT hr = wil::RemoveDirectoryRecursiveNoThrow(\n\t\t\tCommonSharedConstants::UPDATE_DIR, wil::RemoveDirectoryOptions::KeepRootDirectory);\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"RemoveDirectoryRecursiveNoThrow 失败\", hr);\n\t\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\t\tco_return;\n\t\t}\n\t} else {\n\t\tif (!CreateDirectory(CommonSharedConstants::UPDATE_DIR, nullptr)) {\n\t\t\tLogger::Get().Win32Error(\"创建 update 文件夹失败\");\n\t\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\t\tco_return;\n\t\t}\n\t}\n\t\n\tstd::wstring updatePkgPath = StrHelper::Concat(CommonSharedConstants::UPDATE_DIR, L\"\\\\update.zip\");\n\twil::unique_hfile updatePkg(\n\t\tCreateFile2(updatePkgPath.c_str(), GENERIC_WRITE, 0, CREATE_ALWAYS, nullptr));\n\tif (!updatePkg) {\n\t\tLogger::Get().Win32Error(\"打开 update.zip 失败\");\n\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\tco_return;\n\t}\n\n\t// 下载新版\n\ttry {\n\t\tHttpClient httpClient;\n\t\tauto requestProgressOp = httpClient.GetInputStreamAsync(Uri(_binaryUrl));\n\t\t// 如果文件大小未知，则 totalBytes 为 0\n\t\tuint64_t totalBytes = 0;\n\t\trequestProgressOp.Progress([&totalBytes](const auto&, const HttpProgress& progress) {\n\t\t\tif (std::optional<uint64_t> totalBytesToReceive = progress.TotalBytesToReceive) {\n\t\t\t\ttotalBytes = *totalBytesToReceive;\n\t\t\t}\n\t\t});\n\t\tIInputStream httpStream = co_await requestProgressOp;\n\n\t\tif (_downloadCancelled) {\n\t\t\t_Status(UpdateStatus::Available);\n\t\t\tco_return;\n\t\t}\n\t\t\n\t\t// 用于计算 MD5\n\t\twil::unique_bcrypt_algorithm hAlg;\n\t\tNTSTATUS status = BCryptOpenAlgorithmProvider(hAlg.put(), BCRYPT_MD5_ALGORITHM, nullptr, 0);\n\t\tif (status != STATUS_SUCCESS) {\n\t\t\tLogger::Get().NTError(\"BCryptOpenAlgorithmProvider 失败\", status);\n\t\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\t\tco_return;\n\t\t}\n\n\t\tULONG result;\n\n#ifdef _DEBUG\n\t\tuint32_t hashLen = 0;\n\t\tBCryptGetProperty(hAlg.get(), BCRYPT_HASH_LENGTH,\n\t\t\t(PUCHAR)&hashLen, sizeof(hashLen), &result, 0);\n\t\tassert(hashLen == MD5_HASH_LENGTH);\n#endif\n\n\t\tuint32_t hashObjSize = 0;\n\t\tstatus = BCryptGetProperty(hAlg.get(), BCRYPT_OBJECT_LENGTH,\n\t\t\t(PUCHAR)&hashObjSize, sizeof(hashObjSize), &result, 0);\n\t\tif (status != STATUS_SUCCESS) {\n\t\t\tLogger::Get().NTError(\"BCryptGetProperty 失败\", status);\n\t\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\t\tco_return;\n\t\t}\n\n\t\tstd::unique_ptr<uint8_t[]> hashObj = std::make_unique<uint8_t[]>(hashObjSize);\n\n\t\twil::unique_bcrypt_hash hHash;\n\t\tstatus = BCryptCreateHash(\n\t\t\thAlg.get(), hHash.put(), hashObj.get(), hashObjSize, NULL, 0, 0);\n\t\tif (status != STATUS_SUCCESS) {\n\t\t\tLogger::Get().NTError(\"BCryptCreateHash 失败\", status);\n\t\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\t\tco_return;\n\t\t}\n\n\t\tBuffer buffer(64 * 1024);\n\t\tuint32_t bytesReceived = 0;\n\t\twhile (true) {\n\t\t\tIBuffer resultBuffer = co_await httpStream.ReadAsync(buffer, buffer.Capacity(), InputStreamOptions::Partial);\n\n\t\t\tif (_downloadCancelled) {\n\t\t\t\thttpStream.Close();\n\t\t\t\t_Status(UpdateStatus::Available);\n\t\t\t\tco_return;\n\t\t\t}\n\n\t\t\tuint32_t bufferSize = resultBuffer.Length();\n\t\t\tif (bufferSize == 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (totalBytes > 0) {\n\t\t\t\tbytesReceived += bufferSize;\n\t\t\t\t_downloadProgress = bytesReceived / (double)totalBytes;\n\t\t\t\tDownloadProgressChanged.Invoke(_downloadProgress);\n\t\t\t}\n\n\t\t\tconst uint8_t* bufferData = resultBuffer.data();\n\n\t\t\tstatus = BCryptHashData(hHash.get(), (PUCHAR)bufferData, bufferSize, 0);\n\t\t\tif (status != STATUS_SUCCESS) {\n\t\t\t\tLogger::Get().NTError(\"BCryptHashData 失败\", status);\n\t\t\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\t\t\tco_return;\n\t\t\t}\n\t\t\t\n\t\t\tif (!WriteFile(updatePkg.get(), bufferData, bufferSize, nullptr, nullptr)) {\n\t\t\t\tLogger::Get().Win32Error(\"WriteFile 失败\");\n\t\t\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\t\t\tco_return;\n\t\t\t}\n\t\t}\n\n\t\t// 检查哈希\n\t\tstd::array<uint8_t, MD5_HASH_LENGTH> hash{};\n\t\tstatus = BCryptFinishHash(hHash.get(), hash.data(), (ULONG)hash.size(), 0);\n\t\tif (status != STATUS_SUCCESS) {\n\t\t\tLogger::Get().NTError(\"BCryptFinishHash 失败\", status);\n\t\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\t\tco_return;\n\t\t}\n\n\t\tif (Md5ToHex(hash.data()) != _binaryHash) {\n\t\t\tLogger::Get().Error(\"下载失败: 哈希不匹配\");\n\t\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\t\tco_return;\n\t\t}\n\t} catch (const hresult_error& e) {\n\t\tLogger::Get().Error(StrHelper::Concat(\"下载失败: \", StrHelper::UTF16ToUTF8(e.message())));\n\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\tco_return;\n\t}\n\n\tupdatePkg.reset();\n\n\t// 后台解压 zip\n\tco_await resume_background();\n\n\t// kuba-zip 内部使用 UTF-8 编码\n\tint ec = zip_extract(\n\t\tStrHelper::UTF16ToUTF8(updatePkgPath).c_str(),\n\t\tStrHelper::UTF16ToUTF8(CommonSharedConstants::UPDATE_DIR).c_str(),\n\t\tnullptr,\n\t\tnullptr\n\t);\n\tif (ec < 0) {\n\t\tLogger::Get().Error(fmt::format(\"解压失败，错误代码: {}\", ec));\n\t\tco_await App::Get().Dispatcher();\n\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\tco_return;\n\t}\n\n\tDeleteFile(updatePkgPath.c_str());\n\n\tstd::wstring magpieExePath = StrHelper::Concat(CommonSharedConstants::UPDATE_DIR, L\"\\\\Magpie.exe\");\n\tstd::wstring updaterExePath = StrHelper::Concat(CommonSharedConstants::UPDATE_DIR, L\"\\\\Updater.exe\");\n\tif (!Win32Helper::FileExists(magpieExePath.c_str()) || !Win32Helper::FileExists(updaterExePath.c_str())) {\n\t\tLogger::Get().Error(\"未找到 Magpie.exe 或 Updater.exe\");\n\t\tco_await App::Get().Dispatcher();\n\t\t_Status(UpdateStatus::ErrorWhileDownloading);\n\t\tco_return;\n\t}\n\n\tco_await App::Get().Dispatcher();\n\n\tif (_downloadCancelled) {\n\t\t_Status(UpdateStatus::Available);\n\t\tco_return;\n\t}\n\n\t_Status(UpdateStatus::Installing);\n\n\t// 安装更新流程\n\t// ----------------------------------------------------\n\t// Magpie.exe\n\t// 1. 下载并解压新版本至 update 文件夹\n\t// 2. 将 Updater.exe 复制到根目录\n\t// 3. 运行 Updater.exe 然后退出\n\t// \n\t// Updater.exe\n\t// 1. 等待 Magpie.exe 退出\n\t// 2. 删除旧版本文件，复制新版本文件，删除 update 文件夹\n\t// 3. 启动 Magpie.exe 然后退出\n\n\tMoveFileEx(updaterExePath.c_str(), L\"Updater.exe\", MOVEFILE_REPLACE_EXISTING | MOVEFILE_WRITE_THROUGH);\n\n\tstd::wstring curVersion = MAGPIE_VERSION.ToString<wchar_t>();\n\t// 调用 ShellExecuteEx 后立即退出，因此应该指定 SEE_MASK_NOASYNC\n\tSHELLEXECUTEINFO execInfo{\n\t\t.cbSize = sizeof(execInfo),\n\t\t.fMask = SEE_MASK_NOASYNC,\n\t\t.lpVerb = L\"open\",\n\t\t.lpFile = L\"Updater.exe\",\n\t\t.lpParameters = curVersion.c_str()\n\t};\n\tif (!ShellExecuteEx(&execInfo)) {\n\t\tLogger::Get().Win32Error(\"ShellExecuteEx 失败\");\n\t}\n\n\tApp::Get().Quit();\n}\n\nvoid UpdateService::EnteringAboutPage() {\n\tif (_status == UpdateStatus::NoUpdate || _status == UpdateStatus::ErrorWhileChecking) {\n\t\t_Status(UpdateStatus::Pending);\n\t}\n}\n\nvoid UpdateService::Cancel() {\n\tswitch (_status) {\n\tcase UpdateStatus::Pending:\n\tcase UpdateStatus::Checking:\n\tcase UpdateStatus::Installing:\n\t\t// 不支持取消\n\t\tassert(false);\n\t\tbreak;\n\tcase UpdateStatus::NoUpdate:\n\tcase UpdateStatus::ErrorWhileChecking:\n\tcase UpdateStatus::Available:\n\tcase UpdateStatus::ErrorWhileDownloading:\n\t\t_Status(UpdateStatus::Pending);\n\t\tbreak;\n\tcase UpdateStatus::Downloading:\n\t\t_downloadCancelled = true;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n}\n\nvoid UpdateService::_Status(UpdateStatus value) {\n\tif (_status == value) {\n\t\treturn;\n\t}\n\n\t_status = value;\n\tStatusChanged.Invoke(value);\n}\n\nfire_and_forget UpdateService::_Timer_Tick(ThreadPoolTimer const& timer) {\n\tif (timer) {\n\t\tco_await App::Get().Dispatcher();\n\t}\n\n\tAppSettings& settings = AppSettings::Get();\n\t\n\tusing namespace std::chrono;\n\tsystem_clock::time_point now = system_clock::now();\n\t// 自动检查更新的间隔为 1 天\n\tif (duration_cast<days>(now - settings.UpdateCheckDate()).count() < 1) {\n\t\tco_return;\n\t}\n\n\tsettings.UpdateCheckDate(now);\n\tCheckForUpdatesAsync(true);\n}\n\nvoid UpdateService::_StartTimer() {\n\t// 每小时检查一次剩余时间\n\t_timer = ThreadPoolTimer::CreatePeriodicTimer(\n\t\t{ this, &UpdateService::_Timer_Tick },\n\t\t1h\n\t);\n}\n\nvoid UpdateService::_StopTimer() {\n\t_timer.Cancel();\n\t_timer = nullptr;\n}\n\nvoid UpdateService::_AppSettings_IsAutoCheckForUpdatesChanged(bool value) {\n\tif (value) {\n\t\t_StartTimer();\n\t} else {\n\t\t_StopTimer();\n\t}\n}\n\nvoid UpdateService::_MainWindow_Destroyed() {\n\tEnteringAboutPage();\n\n\tif (_status == UpdateStatus::Available) {\n\t\t_Status(UpdateStatus::Pending);\n\t}\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/UpdateService.h",
    "content": "#pragma once\n#include \"Event.h\"\n#include <winrt/Windows.System.Threading.h>\n\nnamespace Magpie {\n\nenum class UpdateStatus {\n\tPending,\n\tChecking,\n\tNoUpdate,\n\tErrorWhileChecking,\n\tAvailable,\n\tDownloading,\n\tErrorWhileDownloading,\n\tInstalling\n};\n\nclass UpdateService {\npublic:\n\tstatic UpdateService& Get() noexcept {\n\t\tstatic UpdateService instance;\n\t\treturn instance;\n\t}\n\n\tUpdateService(const UpdateService&) = delete;\n\tUpdateService(UpdateService&&) = delete;\n\n\tvoid Initialize() noexcept;\n\n\tvoid Uninitialize() noexcept;\n\n\tUpdateStatus Status() const noexcept {\n\t\treturn _status;\n\t}\n\n\twinrt::fire_and_forget CheckForUpdatesAsync(bool isAutoUpdate);\n\n\twinrt::fire_and_forget DownloadAndInstall();\n\n\tdouble DownloadProgress() const noexcept {\n\t\tassert(_status == UpdateStatus::Downloading);\n\t\treturn _downloadProgress;\n\t}\n\n\tvoid EnteringAboutPage();\n\n\tvoid Cancel();\n\n\tconst std::wstring& Tag() const noexcept {\n\t\tassert(_status >= UpdateStatus::Available);\n\t\treturn _tag;\n\t}\n\n\tconst std::wstring& BinaryUrl() const noexcept {\n\t\tassert(_status >= UpdateStatus::Available);\n\t\treturn _binaryUrl;\n\t}\n\n\tbool IsShowOnHomePage() const noexcept {\n\t\treturn _showOnHomePage;\n\t}\n\n\tvoid IsShowOnHomePage(bool value) noexcept {\n\t\tif (_showOnHomePage == value) {\n\t\t\treturn;\n\t\t}\n\n\t\t_showOnHomePage = value;\n\t\tIsShowOnHomePageChanged.Invoke(value);\n\t}\n\n\tEvent<UpdateStatus> StatusChanged;\n\tEvent<double> DownloadProgressChanged;\n\tEvent<bool> IsShowOnHomePageChanged;\n\nprivate:\n\tUpdateService() = default;\n\n\tvoid _Status(UpdateStatus value);\n\n\twinrt::fire_and_forget _Timer_Tick(winrt::Threading::ThreadPoolTimer const& timer);\n\n\tvoid _StartTimer();\n\tvoid _StopTimer();\n\n\tvoid _AppSettings_IsAutoCheckForUpdatesChanged(bool value);\n\n\tvoid _MainWindow_Destroyed();\n\n\tEvent<>::EventRevoker _mainWindowDestroyedRevoker;\n\tEvent<bool>::EventRevoker _autoCheckForUpdatesChangedRevoker;\n\n\t// DispatcherTimer 在不显示主窗口时可能停滞，因此使用 ThreadPoolTimer\n\twinrt::Threading::ThreadPoolTimer _timer{ nullptr };\n\n\tstd::wstring _tag;\n\tstd::wstring _binaryUrl;\n\tstd::wstring _binaryHash;\n\tUpdateStatus _status = UpdateStatus::Pending;\n\tdouble _downloadProgress = 0;\n\tbool _downloadCancelled = false;\n\tbool _showOnHomePage = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/WrapPanel.h",
    "content": "#pragma once\n#include \"WrapPanel.g.h\"\n#include \"SmallVector.h\"\n\nnamespace winrt::Magpie::implementation {\n\nstruct UvMeasure {\n\tUvMeasure() : u(0), v(0) {}\n\n\tUvMeasure(float u_, float v_) : u(u_), v(v_) {}\n\n\tUvMeasure(Orientation orientation, Size size) :\n\t\tUvMeasure(orientation, size.Width, size.Height) {}\n\n\tUvMeasure(Orientation orientation, float width, float height) {\n\t\tif (orientation == Orientation::Horizontal) {\n\t\t\tu = width;\n\t\t\tv = height;\n\t\t} else {\n\t\t\tu = height;\n\t\t\tv = width;\n\t\t}\n\t}\n\n\tvoid Add(const UvMeasure& measure) noexcept {\n\t\tu += measure.u;\n\t\tv += measure.v;\n\t}\n\n\tSize ToSize(Orientation orientation) const noexcept {\n\t\treturn orientation == Orientation::Horizontal ? Size(u, v) : Size(v, u);\n\t}\n\n\tfloat u;\n\tfloat v;\n};\n\nstruct UvRect {\n\tRect ToRect(Orientation orientation) const noexcept {\n\t\tif (orientation == Orientation::Horizontal) {\n\t\t\treturn { position.u, position.v, size.u, size.v };\n\t\t} else {\n\t\t\treturn { position.v, position.u, size.v, size.u };\n\t\t}\n\t}\n\n\tUvMeasure position;\n\tUvMeasure size;\n};\n\nstruct Row {\n\tUvRect Rect() const noexcept {\n\t\tif (childrenRects.empty()) {\n\t\t\treturn UvRect{ {}, size };\n\t\t} else {\n\t\t\treturn UvRect{ childrenRects[0].position, size };\n\t\t}\n\t}\n\n\tvoid Add(const UvMeasure& position, const UvMeasure& size_) noexcept {\n\t\tchildrenRects.emplace_back(position, size_);\n\n\t\tsize.u = position.u + size_.u;\n\t\tsize.v = std::max(size.v, size_.v);\n\t}\n\n\tvoid Clear() noexcept {\n\t\tchildrenRects.clear();\n\t\tsize = {};\n\t}\n\n\tSmallVector<UvRect> childrenRects;\n\tUvMeasure size;\n};\n\nstruct WrapPanel : WrapPanelT<WrapPanel>, wil::notify_property_changed_base<WrapPanel> {\n\tdouble HorizontalSpacing() const { return _horizontalSpacing; }\n\tvoid HorizontalSpacing(double value);\n\n\tdouble VerticalSpacing() const { return _verticalSpacing; }\n\tvoid VerticalSpacing(double value);\n\n\tOrientation Orientation() const { return _orientation; }\n\tvoid Orientation(enum Orientation value);\n\n\tThickness Padding() const { return _padding; }\n\tvoid Padding(const Thickness& value);\n\n\tStretchChild StretchChild() const { return _stretchChild; }\n\tvoid StretchChild(winrt::Magpie::StretchChild value);\n\n\tSize MeasureOverride(const Size& availableSize);\n\n\tSize ArrangeOverride(Size finalSize);\n\nprivate:\n\tvoid _UpdateLayout() const;\n\n\tSize _UpdateRows(Size availableSize);\n\n\tdouble _horizontalSpacing = 0.0;\n\tdouble _verticalSpacing = 0.0;\n\tenum Orientation _orientation = Orientation::Horizontal;\n\tThickness _padding{};\n\twinrt::Magpie::StretchChild _stretchChild = StretchChild::None;\n\n\tSmallVector<Row, 0> _rows;\n};\n\n}\n\nBASIC_FACTORY(WrapPanel)\n"
  },
  {
    "path": "src/Magpie/WrapPanel.idl",
    "content": "namespace Magpie {\n\tenum StretchChild {\n\t\tNone,\n\t\tLast\n\t};\n\n\truntimeclass WrapPanel : Windows.UI.Xaml.Controls.Panel, Windows.UI.Xaml.Data.INotifyPropertyChanged{\n\t\tWrapPanel();\n\n\t\tDouble HorizontalSpacing;\n\t\tDouble VerticalSpacing;\n\t\tWindows.UI.Xaml.Controls.Orientation Orientation;\n\t\tWindows.UI.Xaml.Thickness Padding;\n\t\tStretchChild StretchChild;\n\t}\n}\n"
  },
  {
    "path": "src/Magpie/XamlHelper.cpp",
    "content": "#include \"pch.h\"\n#include \"XamlHelper.h\"\n#include \"Win32Helper.h\"\n#include \"SmallVector.h\"\n\nusing namespace winrt;\nusing namespace Windows::UI::Xaml::Controls::Primitives;\n\nnamespace Magpie {\n\nstatic bool IsComboBoxPopup(const Popup& popup) {\n\tUIElement child = popup.Child();\n\tif (!child.try_as<Canvas>()) {\n\t\treturn false;\n\t}\n\n\t// 查找 XAML 树中是否存在 ComboBoxItem\n\tSmallVector<DependencyObject> elems{ std::move(child) };\n\tdo {\n\t\tSmallVector<DependencyObject> temp;\n\n\t\tfor (const DependencyObject& elem : elems) {\n\t\t\tconst int count = VisualTreeHelper::GetChildrenCount(elem);\n\t\t\tfor (int i = 0; i < count; ++i) {\n\t\t\t\tDependencyObject current = VisualTreeHelper::GetChild(elem, i);\n\n\t\t\t\tif (current.try_as<ComboBoxItem>()) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\ttemp.emplace_back(std::move(current));\n\t\t\t}\n\t\t}\n\n\t\telems = std::move(temp);\n\t} while (!elems.empty());\n\n\treturn false;\n}\n\nvoid XamlHelper::CloseComboBoxPopup(const XamlRoot& root) {\n\tfor (const Popup& popup : VisualTreeHelper::GetOpenPopupsForXamlRoot(root)) {\n\t\tif (IsComboBoxPopup(popup)) {\n\t\t\tpopup.IsOpen(false);\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nvoid XamlHelper::ClosePopups(const XamlRoot& root) {\n\tfor (const auto& popup : VisualTreeHelper::GetOpenPopupsForXamlRoot(root)) {\n\t\tpopup.IsOpen(false);\n\t}\n}\n\nvoid XamlHelper::UpdateThemeOfXamlPopups(const XamlRoot& root, ElementTheme theme) {\n\tif (!root) {\n\t\treturn;\n\t}\n\n\tfor (const auto& popup : VisualTreeHelper::GetOpenPopupsForXamlRoot(root)) {\n\t\tFrameworkElement child = popup.Child().try_as<FrameworkElement>();\n\t\tchild.RequestedTheme(theme);\n\t\tUpdateThemeOfTooltips(child, theme);\n\t}\n}\n\nvoid XamlHelper::RepositionXamlPopups(const Windows::UI::Xaml::XamlRoot& root, bool closeFlyoutPresenter) {\n\tfor (const auto& popup : VisualTreeHelper::GetOpenPopupsForXamlRoot(root)) {\n\t\tif (closeFlyoutPresenter) {\n\t\t\tauto className = get_class_name(popup.Child());\n\t\t\tif (className == name_of<FlyoutPresenter>() ||\n\t\t\t\tclassName == name_of<MenuFlyoutPresenter>()) {\n\t\t\t\tpopup.IsOpen(false);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// 取自 https://github.com/CommunityToolkit/Microsoft.Toolkit.Win32/blob/229fa3cd245ff002906b2a594196b88aded25774/Microsoft.Toolkit.Forms.UI.XamlHost/WindowsXamlHostBase.cs#L180\n\n\t\t// Toggle the CompositeMode property, which will force all windowed Popups\n\t\t// to reposition themselves relative to the new position of the host window.\n\t\tauto compositeMode = popup.CompositeMode();\n\n\t\t// Set CompositeMode to some value it currently isn't set to.\n\t\tif (compositeMode == ElementCompositeMode::SourceOver) {\n\t\t\tpopup.CompositeMode(ElementCompositeMode::MinBlend);\n\t\t} else {\n\t\t\tpopup.CompositeMode(ElementCompositeMode::SourceOver);\n\t\t}\n\n\t\t// Restore CompositeMode to whatever it was originally set to.\n\t\tpopup.CompositeMode(compositeMode);\n\t}\n}\n\nvoid XamlHelper::UpdateThemeOfTooltips(const DependencyObject& root, ElementTheme theme) {\n\tif (Win32Helper::GetOSVersion().IsWin11()) {\n\t\t// Win11 中 Tooltip 自动适应主题\n\t\treturn;\n\t}\n\n\t// 遍历 XAML 树\n\tSmallVector<DependencyObject> elems{ root };\n\tdo {\n\t\tSmallVector<DependencyObject> temp;\n\n\t\tfor (const DependencyObject& elem : elems) {\n\t\t\tconst int count = VisualTreeHelper::GetChildrenCount(elem);\n\t\t\tfor (int i = 0; i < count; ++i) {\n\t\t\t\tDependencyObject current = VisualTreeHelper::GetChild(elem, i);\n\n\t\t\t\tif (winrt::IInspectable tooltipContent = ToolTipService::GetToolTip(current)) {\n\t\t\t\t\tif (ToolTip tooltip = tooltipContent.try_as<ToolTip>()) {\n\t\t\t\t\t\ttooltip.RequestedTheme(theme);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tToolTip themedTooltip;\n\t\t\t\t\t\tthemedTooltip.Content(tooltipContent);\n\t\t\t\t\t\tthemedTooltip.RequestedTheme(theme);\n\t\t\t\t\t\tToolTipService::SetToolTip(current, themedTooltip);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttemp.emplace_back(std::move(current));\n\t\t\t}\n\t\t}\n\n\t\telems = std::move(temp);\n\t} while (!elems.empty());\n}\n\nbool XamlHelper::ContainsControl(const DependencyObject& parent, const DependencyObject& target) {\n\tstd::vector<DependencyObject> elems{ parent };\n\tdo {\n\t\tstd::vector<DependencyObject> temp;\n\n\t\tfor (const DependencyObject& elem : elems) {\n\t\t\tconst int count = VisualTreeHelper::GetChildrenCount(elem);\n\t\t\tfor (int i = 0; i < count; ++i) {\n\t\t\t\tDependencyObject current = VisualTreeHelper::GetChild(elem, i);\n\n\t\t\t\tif (current == target) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\ttemp.emplace_back(std::move(current));\n\t\t\t}\n\t\t}\n\n\t\telems = std::move(temp);\n\t} while (!elems.empty());\n\n\treturn false;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie/XamlHelper.h",
    "content": "#pragma once\n\nnamespace Magpie {\n\nstruct XamlHelper {\n\tstatic void CloseComboBoxPopup(const winrt::XamlRoot& root);\n\n\tstatic void ClosePopups(const winrt::XamlRoot& root);\n\n\tstatic void UpdateThemeOfXamlPopups(const winrt::XamlRoot& root, winrt::ElementTheme theme);\n\n\tstatic void RepositionXamlPopups(const winrt::XamlRoot& root, bool closeFlyoutPresenter);\n\n\tstatic void UpdateThemeOfTooltips(const winrt::DependencyObject& root, winrt::ElementTheme theme);\n\n\tstatic bool ContainsControl(const winrt::DependencyObject& parent, const winrt::DependencyObject& target);\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/XamlWindow.h",
    "content": "#pragma once\n#include \"Event.h\"\n#include \"Logger.h\"\n#include \"ThemeHelper.h\"\n#include \"Win32Helper.h\"\n#include \"WindowBase.h\"\n#include \"XamlHelper.h\"\n#include <CoreWindow.h>\n#include <dwmapi.h>\n#include <shellapi.h>\n#include <windows.ui.xaml.hosting.desktopwindowxamlsource.h>\n#include <winrt/Windows.UI.Xaml.Hosting.h>\n\nnamespace Magpie {\n\ntemplate <typename T, typename C>\nclass XamlWindowT : public WindowBaseT<T> {\n\tusing base_type = WindowBaseT<T>;\npublic:\n\tvoid HandleMessage(const MSG& msg) {\n\t\t// XAML Islands 会吞掉 Alt+F4，需要特殊处理\n\t\t// https://github.com/microsoft/microsoft-ui-xaml/issues/2408\n\t\tif (msg.message == WM_SYSKEYDOWN && msg.wParam == VK_F4) [[unlikely]] {\n\t\t\tSendMessage(GetAncestor(msg.hwnd, GA_ROOT), msg.message, msg.wParam, msg.lParam);\n\t\t\treturn;\n\t\t}\n\n\t\tif (_xamlSourceNative2) {\n\t\t\tBOOL processed = FALSE;\n\t\t\tHRESULT hr = _xamlSourceNative2->PreTranslateMessage(&msg, &processed);\n\t\t\tif (SUCCEEDED(hr) && processed) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tTranslateMessage(&msg);\n\t\tDispatchMessage(&msg);\n\t}\n\n\tconst C& Content() const noexcept {\n\t\treturn _content;\n\t}\n\n\tuint32_t CurrentDpi() const noexcept {\n\t\treturn _currentDpi;\n\t}\n\n\tEvent<uint32_t> DpiChanged;\n\tEvent<> Destroyed;\n\nprotected:\n\t~XamlWindowT() = default;\n\n\tvoid _Content(C const& content) {\n\t\tusing namespace winrt::Windows::UI::Xaml::Hosting;\n\n\t\t_content = content;\n\t\t_dispatcher = winrt::DispatcherQueue::GetForCurrentThread();\n\n\t\t// 初始化 XAML Islands\n\t\t_xamlSource = DesktopWindowXamlSource();\n\t\t_xamlSourceNative2 = _xamlSource.try_as<IDesktopWindowXamlSourceNative2>();\n\t\t_xamlSourceNative2->AttachToWindow(this->Handle());\n\t\t_xamlSourceNative2->get_WindowHandle(&_hwndXamlIsland);\n\t\t_xamlSource.Content(*content);\n\n\t\t// 焦点始终位于 _hwndXamlIsland 中\n\t\t_xamlSource.TakeFocusRequested(\n\t\t\t[](DesktopWindowXamlSource const& sender,\n\t\t\tDesktopWindowXamlSourceTakeFocusRequestedEventArgs const& args\n\t\t) {\n\t\t\tXamlSourceFocusNavigationReason reason = args.Request().Reason();\n\t\t\tif (reason < XamlSourceFocusNavigationReason::Left) {\n\t\t\t\tsender.NavigateFocus(args.Request());\n\t\t\t}\n\t\t});\n\t}\n\n\tbool _IsMaximized() const noexcept {\n\t\treturn _isMaximized;\n\t}\n\n\tvoid _SetTheme(bool isLightTheme) noexcept {\n\t\t_isLightTheme = isLightTheme;\n\n\t\tconst HWND hWnd = this->Handle();\n\n\t\t// Win10 中即使在亮色主题下我们也使用暗色边框，这也是 UWP 窗口的行为\n\t\tThemeHelper::SetWindowTheme(\n\t\t\thWnd,\n\t\t\tWin32Helper::GetOSVersion().IsWin11() ? !isLightTheme : true,\n\t\t\t!isLightTheme\n\t\t);\n\n\t\tif (Win32Helper::GetOSVersion().Is22H2OrNewer()) {\n\t\t\t// 设置 Mica 背景\n\t\t\tDWM_SYSTEMBACKDROP_TYPE value = DWMSBT_MAINWINDOW;\n\t\t\tDwmSetWindowAttribute(hWnd, DWMWA_SYSTEMBACKDROP_TYPE, &value, sizeof(value));\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (Win32Helper::GetOSVersion().IsWin11()) {\n\t\t\t// Win11 21H1/21H2 对 Mica 的支持不完善，改为使用纯色背景。Win10 在 WM_PAINT 中\n\t\t\t// 绘制背景。背景色在更改窗口大小时会短暂可见。\n\t\t\tHBRUSH hbrOld = (HBRUSH)SetClassLongPtr(\n\t\t\t\thWnd,\n\t\t\t\tGCLP_HBRBACKGROUND,\n\t\t\t\t(INT_PTR)CreateSolidBrush(isLightTheme ? ThemeHelper::LIGHT_TINT_COLOR : ThemeHelper::DARK_TINT_COLOR)\n\t\t\t);\n\t\t\tif (hbrOld) {\n\t\t\t\tDeleteObject(hbrOld);\n\t\t\t}\n\t\t}\n\n\t\t// 立即重新绘制\n\t\tInvalidateRect(hWnd, nullptr, FALSE);\n\t\tUpdateWindow(hWnd);\n\t}\n\n\tLRESULT _MessageHandler(UINT msg, WPARAM wParam, LPARAM lParam) noexcept {\n\t\tswitch (msg) {\n\t\tcase WM_CREATE:\n\t\t{\n\t\t\t_UpdateDpi(GetDpiForWindow(this->Handle()));\n\n\t\t\tif (Win32Helper::GetOSVersion().IsWin10()) {\n\t\t\t\t// 初始化双缓冲绘图\n\t\t\t\t[[maybe_unused]] static Ignore _ = []() {\n\t\t\t\t\tBufferedPaintInit();\n\t\t\t\t\treturn Ignore();\n\t\t\t\t}();\n\n\t\t\t\t_UpdateFrameMargins();\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\t\tcase WM_NCCALCSIZE:\n\t\t{\n\t\t\t// 移除标题栏的逻辑基本来自 Windows Terminal\n\t\t\t// https://github.com/microsoft/terminal/blob/0ee2c74cd432eda153f3f3e77588164cde95044f/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp\n\n\t\t\tif (!wParam) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tconst HWND hWnd = this->Handle();\n\n\t\t\tNCCALCSIZE_PARAMS* params = (NCCALCSIZE_PARAMS*)lParam;\n\t\t\tRECT& clientRect = params->rgrc[0];\n\n\t\t\t// 保存原始上边框位置\n\t\t\tconst LONG originalTop = clientRect.top;\n\n\t\t\t// 应用默认边框\n\t\t\tLRESULT ret = DefWindowProc(hWnd, WM_NCCALCSIZE, wParam, lParam);\n\t\t\tif (ret != 0) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// 重新应用原始上边框，因此我们完全移除了默认边框中的上边框和标题栏，但保留了其他方向的边框\n\t\t\tclientRect.top = originalTop;\n\n\t\t\t// WM_NCCALCSIZE 在 WM_SIZE 前\n\t\t\t_isMaximized = IsMaximized(hWnd);\n\t\t\t\n\t\t\tif (_isMaximized) {\n\t\t\t\t// 最大化的窗口的实际尺寸比屏幕的工作区更大一点，这是为了将可调整窗口大小的区域隐藏在屏幕外面\n\t\t\t\tclientRect.top += _GetResizeHandleHeight();\n\n\t\t\t\t// 如果有自动隐藏的任务栏，我们在它的方向稍微减小客户区，这样用户就可以用鼠标呼出任务栏\n\t\t\t\tif (HMONITOR hMon = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST)) {\n\t\t\t\t\tMONITORINFO monInfo{ .cbSize = sizeof(MONITORINFO) };\n\t\t\t\t\tGetMonitorInfo(hMon, &monInfo);\n\n\t\t\t\t\t// 检查是否有自动隐藏的任务栏\n\t\t\t\t\tAPPBARDATA appBarData{};\n\t\t\t\t\tappBarData.cbSize = sizeof(appBarData);\n\t\t\t\t\tif (SHAppBarMessage(ABM_GETSTATE, &appBarData) & ABS_AUTOHIDE) {\n\t\t\t\t\t\t// 检查显示器的一条边\n\t\t\t\t\t\tauto hasAutohideTaskbar = [&monInfo](UINT edge) -> bool {\n\t\t\t\t\t\t\tAPPBARDATA data{};\n\t\t\t\t\t\t\tdata.cbSize = sizeof(data);\n\t\t\t\t\t\t\tdata.uEdge = edge;\n\t\t\t\t\t\t\tdata.rc = monInfo.rcMonitor;\n\t\t\t\t\t\t\tHWND hTaskbar = (HWND)SHAppBarMessage(ABM_GETAUTOHIDEBAREX, &data);\n\t\t\t\t\t\t\treturn hTaskbar != nullptr;\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tstatic constexpr int AUTO_HIDE_TASKBAR_HEIGHT = 2;\n\n\t\t\t\t\t\tif (hasAutohideTaskbar(ABE_TOP)) {\n\t\t\t\t\t\t\tclientRect.top += AUTO_HIDE_TASKBAR_HEIGHT;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasAutohideTaskbar(ABE_BOTTOM)) {\n\t\t\t\t\t\t\tclientRect.bottom -= AUTO_HIDE_TASKBAR_HEIGHT;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasAutohideTaskbar(ABE_LEFT)) {\n\t\t\t\t\t\t\tclientRect.left += AUTO_HIDE_TASKBAR_HEIGHT;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasAutohideTaskbar(ABE_RIGHT)) {\n\t\t\t\t\t\t\tclientRect.right -= AUTO_HIDE_TASKBAR_HEIGHT;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// 如果在 WM_SIZE 中处理会导致窗口闪烁\n\t\t\t_UpdateFrameMargins();\n\n\t\t\treturn 0;\n\t\t}\n\t\tcase WM_PAINT:\n\t\t{\n\t\t\tif (Win32Helper::GetOSVersion().IsWin11()) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tPAINTSTRUCT ps{ 0 };\n\t\t\tHDC hdc = BeginPaint(this->Handle(), &ps);\n\t\t\tif (!hdc) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tconst int topBorderHeight = (int)_GetTopBorderThickness();\n\n\t\t\t// 在顶部绘制黑色实线以显示系统原始边框，见 _UpdateFrameMargins\n\t\t\tif (ps.rcPaint.top < topBorderHeight) {\n\t\t\t\tRECT rcTopBorder = ps.rcPaint;\n\t\t\t\trcTopBorder.bottom = topBorderHeight;\n\t\t\t\t\n\t\t\t\tstatic HBRUSH hBrush = GetStockBrush(BLACK_BRUSH);\n\t\t\t\tFillRect(hdc, &rcTopBorder, hBrush);\n\t\t\t}\n\n\t\t\t// 绘制客户区。如果 SmoothResizeHelper::EnableResizeSync 失败，调整窗口尺寸时客户区会短暂可见\n\t\t\tif (ps.rcPaint.bottom > topBorderHeight) {\n\t\t\t\tRECT rcRest = ps.rcPaint;\n\t\t\t\trcRest.top = topBorderHeight;\n\n\t\t\t\tstatic bool isLightBrush = _isLightTheme;\n\t\t\t\tstatic HBRUSH backgroundBrush = CreateSolidBrush(isLightBrush ?\n\t\t\t\t\tThemeHelper::LIGHT_TINT_COLOR : ThemeHelper::DARK_TINT_COLOR);\n\n\t\t\t\tif (isLightBrush != _isLightTheme) {\n\t\t\t\t\tisLightBrush = _isLightTheme;\n\t\t\t\t\tDeleteBrush(backgroundBrush);\n\t\t\t\t\tbackgroundBrush = CreateSolidBrush(isLightBrush ?\n\t\t\t\t\t\tThemeHelper::LIGHT_TINT_COLOR : ThemeHelper::DARK_TINT_COLOR);\n\t\t\t\t}\n\n\t\t\t\tif (!isLightBrush) {\n\t\t\t\t\t// 这里我们想要黑色背景而不是原始边框\n\t\t\t\t\t// hack 来自 https://github.com/microsoft/terminal/blob/0ee2c74cd432eda153f3f3e77588164cde95044f/src/cascadia/WindowsTerminal/NonClientIslandWindow.cpp#L1030-L1047\n\t\t\t\t\tHDC opaqueDc;\n\t\t\t\t\tBP_PAINTPARAMS params = {\n\t\t\t\t\t\t.cbSize = sizeof(params),\n\t\t\t\t\t\t.dwFlags = BPPF_NOCLIP | BPPF_ERASE\n\t\t\t\t\t};\n\t\t\t\t\tHPAINTBUFFER buf = BeginBufferedPaint(hdc, &rcRest, BPBF_TOPDOWNDIB, &params, &opaqueDc);\n\t\t\t\t\tif (buf && opaqueDc) {\n\t\t\t\t\t\tFillRect(opaqueDc, &rcRest, backgroundBrush);\n\t\t\t\t\t\tBufferedPaintSetAlpha(buf, nullptr, 255);\n\t\t\t\t\t\tEndBufferedPaint(buf, TRUE);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tFillRect(hdc, &rcRest, backgroundBrush);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tEndPaint(this->Handle(), &ps);\n\t\t\treturn 0;\n\t\t}\n\t\tcase WM_KEYDOWN:\n\t\t{\n\t\t\tif (wParam == VK_TAB) {\n\t\t\t\t// 处理焦点\n\t\t\t\tif (_xamlSource) {\n\t\t\t\t\tusing namespace winrt::Windows::UI::Xaml::Hosting;\n\n\t\t\t\t\tXamlSourceFocusNavigationReason reason = (GetKeyState(VK_SHIFT) & 0x80) ?\n\t\t\t\t\t\tXamlSourceFocusNavigationReason::Last : XamlSourceFocusNavigationReason::First;\n\t\t\t\t\t_xamlSource.NavigateFocus(XamlSourceFocusNavigationRequest(reason));\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase WM_DPICHANGED:\n\t\t{\n\t\t\t_UpdateDpi(HIWORD(wParam));\n\n\t\t\tRECT* newRect = (RECT*)lParam;\n\t\t\tSetWindowPos(this->Handle(),\n\t\t\t\tNULL,\n\t\t\t\tnewRect->left,\n\t\t\t\tnewRect->top,\n\t\t\t\tnewRect->right - newRect->left,\n\t\t\t\tnewRect->bottom - newRect->top,\n\t\t\t\tSWP_NOZORDER | SWP_NOACTIVATE\n\t\t\t);\n\n\t\t\tDpiChanged.Invoke(_currentDpi);\n\n\t\t\treturn 0;\n\t\t}\n\t\tcase WM_MOVING:\n\t\t{\n\t\t\tif (_hwndXamlIsland) {\n\t\t\t\tXamlHelper::RepositionXamlPopups(_content->XamlRoot(), false);\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\t\tcase WM_MENUCHAR:\n\t\t{\n\t\t\t// 防止按 Alt+Key 时发出铃声\n\t\t\treturn MAKELRESULT(0, MNC_CLOSE);\n\t\t}\n\t\tcase WM_SYSCOMMAND:\n\t\t{\n\t\t\t// 根据文档，wParam 的低四位供系统内部使用\n\t\t\tswitch (wParam & 0xFFF0) {\n\t\t\tcase SC_MINIMIZE:\n\t\t\t{\n\t\t\t\t// 最小化前关闭 ComboBox。不能在 WM_SIZE 中处理，该消息发送于最小化之后，会导致 ComboBox 无法交互\n\t\t\t\tif (_content) {\n\t\t\t\t\tXamlHelper::CloseComboBoxPopup(_content->XamlRoot());\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SC_KEYMENU:\n\t\t\t{\n\t\t\t\t// 禁用按 Alt 键会激活窗口菜单的行为，它使用户界面无法交互\n\t\t\t\tif (lParam == 0) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\t\tcase WM_ACTIVATE:\n\t\t{\n\t\t\tif (LOWORD(wParam) == WA_INACTIVE && _content) {\n\t\t\t\tXamlHelper::CloseComboBoxPopup(_content->XamlRoot());\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\t\tcase WM_SIZE:\n\t\t{\n\t\t\t_isMaximized = IsMaximized(this->Handle());\n\n\t\t\tif (wParam != SIZE_MINIMIZED) {\n\t\t\t\t_UpdateIslandPosition(LOWORD(lParam), HIWORD(lParam));\n\n\t\t\t\tif (_hwndXamlIsland) {\n\t\t\t\t\t// 使 ContentDialog 跟随窗口尺寸调整\n\t\t\t\t\t// 来自 https://github.com/microsoft/microsoft-ui-xaml/issues/3577#issuecomment-1399250405\n\t\t\t\t\tif (winrt::CoreWindow coreWindow = winrt::CoreWindow::GetForCurrentThread()) {\n\t\t\t\t\t\tHWND hwndDWXS;\n\t\t\t\t\t\tcoreWindow.try_as<ICoreWindowInterop>()->get_WindowHandle(&hwndDWXS);\n\t\t\t\t\t\tPostMessage(hwndDWXS, WM_SIZE, wParam, lParam);\n\t\t\t\t\t}\n\n\t\t\t\t\t_dispatcher.TryEnqueue([xamlRoot(_content->XamlRoot())]() {\n\t\t\t\t\t\tXamlHelper::RepositionXamlPopups(xamlRoot, true);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\t\tcase WM_DESTROY:\n\t\t{\n\t\t\t// 确保关闭过程中 _content 已经为空\n\t\t\t_content = nullptr;\n\n\t\t\t_xamlSourceNative2 = nullptr;\n\t\t\t// 必须手动重置 Content，否则会内存泄露，使 RootPage 无法析构\n\t\t\t_xamlSource.Content(nullptr);\n\t\t\t_xamlSource.Close();\n\t\t\t_xamlSource = nullptr;\n\t\t\t_hwndXamlIsland = NULL;\n\n\t\t\t_isMaximized = false;\n\t\t\t_isLightTheme = true;\n\n\t\t\tDestroyed.Invoke();\n\n\t\t\tLRESULT ret = base_type::_MessageHandler(msg, wParam, lParam);\n\n\t\t\t// 关闭 DesktopWindowXamlSource 后应清空消息队列以确保 RootPage 析构\n\t\t\tMSG msg1;\n\t\t\twhile (PeekMessage(&msg1, nullptr, 0, 0, PM_REMOVE)) {\n\t\t\t\tDispatchMessage(&msg1);\n\t\t\t}\n\t\t\t// 偶尔清空消息队列无用，需要再清空一次，不确定是否 100% 可靠。谢谢你，XAML Islands！\n\t\t\tSleep(0);\n\t\t\twhile (PeekMessage(&msg1, nullptr, 0, 0, PM_REMOVE)) {\n\t\t\t\tDispatchMessage(&msg1);\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\t\t}\n\n\t\treturn base_type::_MessageHandler(msg, wParam, lParam);\n\t}\n\n\tuint32_t _GetTopBorderThickness() const noexcept {\n\t\t// 最大化时没有上边框\n\t\treturn _isMaximized ? 0 : _nativeTopBorderThickness;\n\t}\n\n\tint _GetResizeHandleHeight() const noexcept {\n\t\t// 没有 SM_CYPADDEDBORDER\n\t\treturn GetSystemMetricsForDpi(SM_CXPADDEDBORDER, _currentDpi) +\n\t\t\tGetSystemMetricsForDpi(SM_CYSIZEFRAME, _currentDpi);\n\t}\n\n\t// 以最大化显示时使 XAML Islands 窗口尺寸保持稳定，见 _UpdateIslandPosition\n\tvoid _SetInitialMaximized(bool value) noexcept {\n\t\t_isInitialMaximized = value;\n\t}\n\n\tbool _IsInitialMaximized() const noexcept {\n\t\treturn _isInitialMaximized;\n\t}\n\nprivate:\n\tvoid _UpdateIslandPosition(int width, int height) const noexcept {\n\t\t// 当窗口以最大化显示时，为了修正动画，实际上是先窗口化显示然后改为最大化。这个过程中此函数\n\t\t// 会被调用多次，而且传入的尺寸不一致。我们想让 XAML Islands 窗口尺寸保持稳定以避免不必要\n\t\t// 的动画，因此需要估算最大化窗口的尺寸。\n\t\t// 由于没考虑自动隐藏的任务栏，计算结果可能不准确，但最多相差两个像素，可以接受。\n\t\tif (_isInitialMaximized && !_isMaximized) {\n\t\t\tif (HMONITOR hMon = MonitorFromWindow(this->Handle(), MONITOR_DEFAULTTONEAREST)) {\n\t\t\t\tMONITORINFO monInfo{};\n\t\t\t\tmonInfo.cbSize = sizeof(MONITORINFO);\n\t\t\t\tGetMonitorInfo(hMon, &monInfo);\n\n\t\t\t\t// 最大化窗口的尺寸为当前屏幕工作区的尺寸\n\t\t\t\twidth = monInfo.rcWork.right - monInfo.rcMonitor.left;\n\t\t\t\theight = monInfo.rcWork.bottom - monInfo.rcMonitor.top;\n\t\t\t}\n\t\t}\n\n\t\t// Win10 中上边框被涂黑来显示系统原始边框，Win11 中 DWM 绘制的上边框也位于客户区内，\n\t\t// 很可能是为了和 Win10 兼容。XAML Islands 不应该和上边框重叠。\n\t\tconst int topBorderHeight = (int)_GetTopBorderThickness();\n\n\t\t// SWP_NOZORDER 确保 XAML Islands 窗口始终在标题栏窗口下方，否则主窗口在调整大小时会闪烁\n\t\tSetWindowPos(\n\t\t\t_hwndXamlIsland,\n\t\t\tNULL,\n\t\t\t0,\n\t\t\ttopBorderHeight,\n\t\t\twidth,\n\t\t\theight - topBorderHeight,\n\t\t\tSWP_NOACTIVATE | SWP_NOZORDER | SWP_SHOWWINDOW\n\t\t);\n\t}\n\n\tvoid _UpdateFrameMargins() const noexcept {\n\t\tif (Win32Helper::GetOSVersion().IsWin11()) {\n\t\t\treturn;\n\t\t}\n\n\t\tMARGINS margins{};\n\t\tif (_GetTopBorderThickness() > 0) {\n\t\t\t// 在 Win10 中，移除标题栏时上边框也被没了。我们的解决方案是: 使用 DwmExtendFrameIntoClientArea\n\t\t\t// 将边框扩展到客户区，然后在顶部绘制了一个黑色实线来显示系统原始边框（这种情况下操作系统将黑色视\n\t\t\t// 为透明）。因此我们有**完美**的上边框！\n\t\t\t// 见 https://docs.microsoft.com/en-us/windows/win32/dwm/customframe#extending-the-client-frame\n\t\t\t// \n\t\t\t// 有的软件自己绘制了假的上边框，如 Chromium 系、WinUI 3 等，但窗口失去焦点时边框是半透明的，无法\n\t\t\t// 完美模拟。\n\t\t\t//\n\t\t\t// 我们选择扩展到标题栏高度，这是最好的选择。一个自然的想法是，既然上边框只有一个像素高，我们扩展一\n\t\t\t// 个像素即可，可惜因为 DWM 的 bug，这会使窗口失去焦点时上边框变为透明。那么能否传一个负值，让边框\n\t\t\t// 扩展到整个客户区？这大部分情况下可以工作，有一个小 bug: 不显示边框颜色的设置下深色模式的边框会变\n\t\t\t// 为纯黑而不是半透明。\n\t\t\tRECT frame{};\n\t\t\tAdjustWindowRectExForDpi(&frame, GetWindowStyle(this->Handle()), FALSE, 0, _currentDpi);\n\t\t\tmargins.cyTopHeight = -frame.top;\n\t\t}\n\t\tDwmExtendFrameIntoClientArea(this->Handle(), &margins);\n\t}\n\n\tvoid _UpdateDpi(uint32_t dpi) noexcept {\n\t\t_currentDpi = dpi;\n\n\t\t// Win10 中窗口边框始终只有一个像素宽，Win11 中的窗口边框宽度和 DPI 缩放有关\n\t\tif (Win32Helper::GetOSVersion().IsWin11()) {\n\t\t\tHRESULT hr = DwmGetWindowAttribute(\n\t\t\t\tthis->Handle(),\n\t\t\t\tDWMWA_VISIBLE_FRAME_BORDER_THICKNESS,\n\t\t\t\t&_nativeTopBorderThickness,\n\t\t\t\tsizeof(_nativeTopBorderThickness)\n\t\t\t);\n\t\t\tif (FAILED(hr)) {\n\t\t\t\tLogger::Get().ComError(\"DwmGetWindowAttribute 失败\", hr);\n\t\t\t}\n\t\t}\n\t}\n\n\tHWND _hwndXamlIsland = NULL;\n\twinrt::Windows::UI::Xaml::Hosting::DesktopWindowXamlSource _xamlSource{ nullptr };\n\twinrt::com_ptr<IDesktopWindowXamlSourceNative2> _xamlSourceNative2;\n\n\tC _content{ nullptr };\n\twinrt::DispatcherQueue _dispatcher{ nullptr };\n\n\tuint32_t _currentDpi = USER_DEFAULT_SCREEN_DPI;\n\tuint32_t _nativeTopBorderThickness = 1;\n\n\tbool _isLightTheme = true;\n\tbool _isInitialMaximized = false;\n\tbool _isMaximized = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie/app.manifest",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\"\n          manifestVersion=\"1.0\">\n  <compatibility xmlns=\"urn:schemas-microsoft-com:compatibility.v1\">\n    <application>\n      <supportedOS Id=\"{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}\" />\n      \n      <!-- Windows 只知道它之前的版本，因此需要多个 maxversiontested -->\n      <!-- 为了使用最新功能，应跟随 Windows 的版本更新添加新条目 -->\n      \n      <!-- 启用 XAML Islands -->\n      <maxversiontested Id=\"10.0.18362.0\"/>\n      <!-- 启用 Segoe UI Variable 和 Segoe Fluent Icons -->\n      <maxversiontested Id=\"10.0.22000.0\"/>\n      <maxversiontested Id=\"10.0.22621.0\"/>\n      <maxversiontested Id=\"10.0.26100.0\"/>\n    </application>\n  </compatibility>\n\n  <application xmlns=\"urn:schemas-microsoft-com:asm.v3\">\n    <windowsSettings>\n      <!-- 使程序可以枚举到沉浸式窗口（immersive windows），如很多类名为 “Windows.UI.Core.CoreWindow” 的系统窗口 -->\n      <disableWindowFiltering xmlns=\"http://schemas.microsoft.com/SMI/2011/WindowsSettings\">true</disableWindowFiltering>\n      <!-- 使程序可以感知 DPI 缩放。PerMonitorV2 在 Win10 v1703 中引入 -->\n      <dpiAwareness xmlns=\"http://schemas.microsoft.com/SMI/2016/WindowsSettings\">PerMonitorV2</dpiAwareness>\n      <!-- 表示程序支持长度大于 MAX_PATH 的路径，但用户需要修改注册表才能起作用 -->\n      <longPathAware xmlns=\"http://schemas.microsoft.com/SMI/2016/WindowsSettings\">true</longPathAware>\n      <!-- 在 Win10 v2004 和更高版本中启用 Segment Heap -->\n      <heapType xmlns=\"http://schemas.microsoft.com/SMI/2020/WindowsSettings\">SegmentHeap</heapType>\n    </windowsSettings>\n  </application>\n  \n  <!-- 加载新版本 ComCtl32.dll，有两个作用: -->\n  <!-- 1. 刷新原生控件和对话框的主题 -->\n  <!-- 2. 旧版 ComCtl32.dll 不包含 LoadIconMetric 等函数 -->\n  <dependency>\n    <dependentAssembly>\n      <assemblyIdentity type=\"win32\"\n                        name=\"Microsoft.Windows.Common-Controls\"\n                        version=\"6.0.0.0\"\n                        processorArchitecture=\"*\"\n                        publicKeyToken=\"6595b64144ccf1df\"\n                        language=\"*\" />\n    </dependentAssembly>\n  </dependency>\n</assembly>\n"
  },
  {
    "path": "src/Magpie/conanfile.txt",
    "content": "[requires]\nfmt/12.1.0\nspdlog/1.17.0\nparallel-hashmap/2.0.0\nrapidjson/cci.20230929\nkuba-zip/0.3.2\nmuparser/2.3.5\nyas/7.1.0\nimgui/1.91.8\nrapidhash/1.0\n\n[generators]\nMSBuildDeps\n\n[options]\nspdlog/*:header_only=True\nspdlog/*:wchar_filenames=True\nspdlog/*:no_exceptions=True\n"
  },
  {
    "path": "src/Magpie/main.cpp",
    "content": "// Copyright (c) Xu\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program.  If not, see <https://www.gnu.org/licenses/>.\n\n\n#include \"pch.h\"\n#include \"App.h\"\n#include \"Win32Helper.h\"\n#include \"TouchHelper.h\"\n#include \"CommonSharedConstants.h\"\n#include \"Logger.h\"\n\nusing namespace Magpie;\nusing namespace winrt::Magpie::implementation;\n\n// 将当前目录设为程序所在目录\nstatic void SetWorkingDir() noexcept {\n\tFAIL_FAST_IF_WIN32_BOOL_FALSE(SetCurrentDirectory(\n\t\tWin32Helper::GetExePath().parent_path().c_str()));\n}\n\nstatic void InitializeLogger(const wchar_t* logFilePath) noexcept {\n\t// 最多两个日志文件，每个最多 500KB\n\tLogger::Get().Initialize(\n\t\tspdlog::level::info,\n\t\tlogFilePath,\n\t\tCommonSharedConstants::LOG_MAX_SIZE,\n\t\t1\n\t);\n}\n\nint APIENTRY wWinMain(\n\t_In_ HINSTANCE /*hInstance*/,\n\t_In_opt_ HINSTANCE /*hPrevInstance*/,\n\t_In_ wchar_t* lpCmdLine,\n\t_In_ int /*nCmdShow*/\n) {\n#ifdef _DEBUG\n\tSetThreadDescription(GetCurrentThread(), L\"Magpie-主线程\");\n#endif\n\t\n\t// 堆损坏时终止进程\n\tHeapSetInformation(NULL, HeapEnableTerminationOnCorruption, nullptr, 0);\n\n\tSetWorkingDir();\n\n\tenum {\n\t\tNormal,\n\t\tRegisterTouchHelper,\n\t\tUnRegisterTouchHelper\n\t} mode = [&]() {\n\t\tif (lpCmdLine == L\"-r\"sv) {\n\t\t\treturn RegisterTouchHelper;\n\t\t} else if (lpCmdLine == L\"-ur\"sv) {\n\t\t\treturn UnRegisterTouchHelper;\n\t\t} else {\n\t\t\treturn Normal;\n\t\t}\n\t}();\n\n\tInitializeLogger(mode == Normal ?\n\t\tCommonSharedConstants::LOG_PATH :\n\t\tCommonSharedConstants::REGISTER_TOUCH_HELPER_LOG_PATH);\n\n\tLogger::Get().Info(fmt::format(\"程序启动\\n\\t版本: {}\\n\\tOS 版本: {}\\n\\t管理员: {}\",\n#ifdef MP_VERSION_STRING\n\t\tSTRINGIFY(MP_VERSION_STRING),\n#elif defined(MP_COMMIT_ID)\n\t\t\"dev (\" STRINGIFY(MP_COMMIT_ID) \")\",\n#else\n\t\t\"dev\",\n#endif\n\t\tWin32Helper::GetOSVersion().ToString<char>(),\n\t\tWin32Helper::IsProcessElevated() ? \"是\" : \"否\"\n\t));\n\n\tif (mode == RegisterTouchHelper) {\n\t\t// 使 TouchHelper 获得 UIAccess 权限\n\t\treturn Magpie::TouchHelper::Register() ? 0 : 1;\n\t} else if (mode == UnRegisterTouchHelper) {\n\t\treturn Magpie::TouchHelper::Unregister() ? 0 : 1;\n\t}\n\n\t// 程序结束时也不应调用 uninit_apartment\n\t// 见 https://kennykerr.ca/2018/03/24/cppwinrt-hosting-the-windows-runtime/\n\twinrt::init_apartment(winrt::apartment_type::single_threaded);\n\n\tauto& app = App::Get();\n\tif (!app.Initialize(lpCmdLine)) {\n\t\treturn 0;\n\t}\n\n\treturn app.Run();\n}\n"
  },
  {
    "path": "src/Magpie/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.UI.Xaml\" version=\"2.8.7\" targetFramework=\"native\" />\n  <package id=\"Microsoft.Web.WebView2\" version=\"1.0.3719.77\" targetFramework=\"native\" />\n  <package id=\"Microsoft.Windows.CppWinRT\" version=\"2.0.250303.1\" targetFramework=\"native\" />\n  <package id=\"Microsoft.Windows.ImplementationLibrary\" version=\"1.0.260126.7\" targetFramework=\"native\" />\n</packages>"
  },
  {
    "path": "src/Magpie/pch.cpp",
    "content": "// pch.cpp: 与预编译标头对应的源文件\n\n#include \"pch.h\"\n\n// 当使用预编译的头时，需要使用此源文件，编译才能成功。\n"
  },
  {
    "path": "src/Magpie/pch.h",
    "content": "#pragma once\n\n// pch.h: 这是预编译标头文件。\n// 下方列出的文件仅编译一次，提高了将来生成的生成性能。\n// 这还将影响 IntelliSense 性能，包括代码完成和许多代码浏览功能。\n// 但是，如果此处列出的文件中的任何一个在生成之间有更新，它们全部都将被重新编译。\n// 请勿在此处添加要频繁更新的文件，这将使得性能优势无效。\n\n// Windows 头文件\n#include <SDKDDKVer.h>\n#include <windows.h>\n#include <windowsx.h>\n\n// 避免 C++/WinRT 头文件的警告\n#undef GetCurrentTime\n#undef GetNextSibling\n\n// C++ 运行时\n#include <cstdlib>\n#include <string>\n#include <string_view>\n#include <vector>\n#include <algorithm>\n#include <functional>\n#include <span>\n#include <filesystem>\n#include <chrono>\n\n// WIL\n// 防止 cppwinrt_authoring.h 中编译失败\n#define WIL_ENABLE_EXCEPTIONS\n#include <wil/result_macros.h>\n#undef WIL_ENABLE_EXCEPTIONS\n#include <wil/resource.h>\n#include <wil/win32_helpers.h>\n#include <wil/filesystem.h>\n// wil::string_maker<std::wstring> 需要启用异常，应最后包含\n#define WIL_ENABLE_EXCEPTIONS\n// 防止编译失败\n#define RESOURCE_SUPPRESS_STL\n#include <wil/stl.h>\n#undef RESOURCE_SUPPRESS_STL\n#undef WIL_ENABLE_EXCEPTIONS\n\n// C++/WinRT\n#include <unknwn.h>\n#include <restrictederrorinfo.h>\n#include <hstring.h>\n#include <winrt/base.h>\n#include <winrt/Windows.ApplicationModel.Resources.h>\n#include <winrt/Windows.ApplicationModel.Resources.Core.h>\n#include <winrt/Windows.Foundation.h>\n#include <winrt/Windows.Foundation.Collections.h>\n#include <winrt/Windows.Foundation.Metadata.h>\n#include <winrt/Windows.System.h>\n#include <winrt/Windows.UI.Core.h>\n#include <winrt/Windows.UI.ViewManagement.h>\n#include <winrt/Windows.UI.Xaml.h>\n#include <winrt/Windows.UI.Xaml.Media.h>\n#include <winrt/Windows.UI.Xaml.Controls.h>\n#include <winrt/Windows.UI.Xaml.Controls.Primitives.h>\n#include <winrt/Windows.UI.Xaml.Data.h>\n#include <winrt/Windows.UI.Xaml.Media.Animation.h>\n#include <winrt/Windows.UI.Xaml.Media.Imaging.h>\n#include <winrt/Windows.UI.Xaml.Interop.h>\n#include <winrt/Windows.UI.Xaml.Markup.h>\n#include <winrt/Windows.UI.Xaml.Navigation.h>\n#include <winrt/Windows.UI.Xaml.Input.h>\n#include <winrt/Windows.UI.Xaml.Shapes.h>\n#include <winrt/Windows.UI.Text.h>\n#include <winrt/Microsoft.UI.Xaml.Controls.h>\n#include <winrt/Microsoft.UI.Xaml.Controls.AnimatedVisuals.h>\n#include <winrt/Microsoft.UI.Xaml.Controls.Primitives.h>\n#include <winrt/Microsoft.UI.Xaml.Media.h>\n#include <winrt/Microsoft.UI.Xaml.XamlTypeInfo.h>\n\n#include <wil/cppwinrt_authoring.h>\n\nnamespace winrt {\nusing namespace Windows::ApplicationModel::Resources;\nusing namespace Windows::ApplicationModel::Resources::Core;\nusing namespace Windows::Foundation;\nusing namespace Windows::Foundation::Collections;\nusing namespace Windows::Foundation::Metadata;\nusing namespace Windows::System;\nusing namespace Windows::UI::Core;\nusing namespace Windows::UI::Xaml;\nusing namespace Windows::UI::Xaml::Controls;\nusing namespace Windows::UI::Xaml::Data;\nusing namespace Windows::UI::Xaml::Media;\n\nnamespace MUXC = Microsoft::UI::Xaml::Controls;\n}\n\n// fmt\n#include <fmt/format.h>\n#include <fmt/xchar.h>\n\n#include \"CommonDefines.h\"\n\n\n// 简化工厂类的创建\n#define BASIC_FACTORY(className)\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tnamespace winrt::Magpie::factory_implementation {\t\t\t\t\t\t\t\t\\\n\t\tstruct className : className##T<className, implementation::className> {};\t\\\n\t}\n"
  },
  {
    "path": "src/Magpie.Core/AdaptivePresenter.cpp",
    "content": "#include \"pch.h\"\n#include \"AdaptivePresenter.h\"\n#include \"DeviceResources.h\"\n#include \"Logger.h\"\n#include \"ScalingWindow.h\"\n#include \"Win32Helper.h\"\n\nnamespace Magpie {\n\nbool AdaptivePresenter::_Initialize(HWND hwndAttach) noexcept {\n\tif (ScalingWindow::Get().Options().IsDirectFlipDisabled()) {\n\t\t// 禁用 DirectFlip 时始终使用 DirectComposition 呈现\n\t\tif (!_ResizeDCompVisual(hwndAttach)) {\n\t\t\tLogger::Get().Error(\"_ResizeDCompVisual 失败\");\n\t\t\treturn false;\n\t\t}\n\n\t\t_isDCompPresenting = true;\n\t\treturn true;\n\t}\n\n\tconst uint32_t bufferCount = _CalcBufferCount();\n\n\tconst SIZE rendererSize = Win32Helper::GetSizeOfRect(ScalingWindow::Get().RendererRect());\n\tDXGI_SWAP_CHAIN_DESC1 sd{\n\t\t.Width = (UINT)rendererSize.cx,\n\t\t.Height = (UINT)rendererSize.cy,\n\t\t.Format = DXGI_FORMAT_R8G8B8A8_UNORM,\n\t\t.SampleDesc = {\n\t\t\t.Count = 1\n\t\t},\n\t\t.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT,\n\t\t.BufferCount = bufferCount,\n#ifdef _DEBUG\n\t\t// 我们应确保两种渲染方式可以无缝切换，DXGI_SCALING_NONE 使错误更容易观察到\n\t\t.Scaling = DXGI_SCALING_NONE,\n#else\n\t\t// 如果两种渲染方式无法无缝切换，DXGI_SCALING_STRETCH 使视觉变化尽可能小\n\t\t.Scaling = DXGI_SCALING_STRETCH,\n#endif\n\t\t// 渲染每帧之前都会清空后缓冲区，因此无需 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL\n\t\t.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD,\n\t\t.AlphaMode = DXGI_ALPHA_MODE_IGNORE,\n\t\t// 只要显卡支持始终启用 DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING 以支持可变刷新率\n\t\t.Flags = UINT((_deviceResources->IsTearingSupported() ? DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING : 0)\n\t\t| DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT)\n\t};\n\n\tID3D11Device5* d3dDevice = _deviceResources->GetD3DDevice();\n\twinrt::com_ptr<IDXGISwapChain1> dxgiSwapChain;\n\tHRESULT hr = _deviceResources->GetDXGIFactory()->CreateSwapChainForHwnd(\n\t\td3dDevice,\n\t\thwndAttach,\n\t\t&sd,\n\t\tnullptr,\n\t\tnullptr,\n\t\tdxgiSwapChain.put()\n\t);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"创建交换链失败\", hr);\n\t\treturn false;\n\t}\n\n\t_dxgiSwapChain = dxgiSwapChain.try_as<IDXGISwapChain4>();\n\tif (!_dxgiSwapChain) {\n\t\tLogger::Get().Error(\"获取 IDXGISwapChain2 失败\");\n\t\treturn false;\n\t}\n\n\t// 为了降低延迟，两个垂直同步之间允许渲染 bufferCount - 1 帧\n\t_dxgiSwapChain->SetMaximumFrameLatency(bufferCount - 1);\n\n\t_frameLatencyWaitableObject.reset(_dxgiSwapChain->GetFrameLatencyWaitableObject());\n\tif (!_frameLatencyWaitableObject) {\n\t\tLogger::Get().Error(\"GetFrameLatencyWaitableObject 失败\");\n\t\treturn false;\n\t}\n\n\thr = _deviceResources->GetDXGIFactory()->MakeWindowAssociation(\n\t\thwndAttach, DXGI_MWA_NO_ALT_ENTER);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"MakeWindowAssociation 失败\", hr);\n\t}\n\n\thr = _dxgiSwapChain->GetBuffer(0, IID_PPV_ARGS(_backBuffer.put()));\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"获取后缓冲区失败\", hr);\n\t\treturn false;\n\t}\n\n\thr = d3dDevice->CreateRenderTargetView(_backBuffer.get(), nullptr, _backBufferRtv.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"CreateRenderTargetView 失败\", hr);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nbool AdaptivePresenter::BeginFrame(\n\twinrt::com_ptr<ID3D11Texture2D>& frameTex,\n\twinrt::com_ptr<ID3D11RenderTargetView>& frameRtv,\n\tPOINT& drawOffset\n) noexcept {\n\tif (_isDCompPresenting) {\n\t\tHRESULT hr = _dcompSurface->BeginDraw(nullptr, IID_PPV_ARGS(&frameTex), &drawOffset);\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"BeginDraw 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\thr = _deviceResources->GetD3DDevice()->CreateRenderTargetView(\n\t\t\tframeTex.get(), nullptr, frameRtv.put());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"CreateRenderTargetView 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tdrawOffset = {};\n\n\t\tif (!_isframeLatencyWaited) {\n\t\t\t_frameLatencyWaitableObject.wait(1000);\n\t\t\t_isframeLatencyWaited = true;\n\t\t}\n\n\t\tframeTex = _backBuffer;\n\t\tframeRtv = _backBufferRtv;\n\t}\n\t\n\treturn true;\n}\n\nvoid AdaptivePresenter::EndFrame(bool waitForGpu) noexcept {\n\tif (_isDCompPresenting) {\n\t\t_dcompSurface->EndDraw();\n\t}\n\n\tif (waitForGpu || _isResized) {\n\t\t_isResized = false;\n\n\t\t// 下面两个调用用于减少调整窗口尺寸时的边缘闪烁。\n\t\t// \n\t\t// 我们希望 DWM 绘制新的窗口框架时刚好合成新帧，但这不是我们能控制的，尤其是混合架构\n\t\t// 下需要在显卡间传输帧数据，无法预测 Present/Commit 后多久 DWM 能收到。我们只能尽\n\t\t// 可能为 DWM 合成新帧预留时间，这包括两个步骤：\n\t\t// \n\t\t// 1. 首先等待渲染完成，确保新帧对 DWM 随时可用。\n\t\t// 2. 然后在新一轮合成开始时提交，这让 DWM 有更多时间合成新帧。\n\t\t// \n\t\t// 目前看来除非像 UWP 一般有 DWM 协助，否则彻底摆脱闪烁是不可能的。\n\t\t// \n\t\t// https://github.com/Blinue/Magpie/pull/1071#issuecomment-2718314731 讨论了 UWP\n\t\t// 调整尺寸的方法，测试表明可以彻底解决闪烁问题。不过它使用了很不稳定的私有接口，没有\n\t\t// 实用价值。\n\n\t\t// 等待渲染完成\n\t\t_WaitForGpu();\n\n\t\t// 等待 DWM 开始合成新一帧\n\t\tWin32Helper::WaitForDwmComposition();\n\t}\n\n\tif (_isDCompPresenting) {\n\t\t_dcompDevice->Commit();\n\t} else {\n\t\t// 两个垂直同步之间允许渲染数帧，SyncInterval = 0 只呈现最新的一帧，旧帧被丢弃\n\t\t_dxgiSwapChain->Present(0, 0);\n\t\t_isframeLatencyWaited = false;\n\n\t\t// 丢弃渲染目标的内容\n\t\t_deviceResources->GetD3DDC()->DiscardView(_backBufferRtv.get());\n\n\t\tif (_isSwitchingToSwapChain) {\n\t\t\t_isSwitchingToSwapChain = false;\n\n\t\t\t// 等待交换链呈现新帧\n\t\t\t_WaitForGpu();\n\t\t\tWin32Helper::WaitForDwmComposition();\n\n\t\t\t// 清除 DirectCompostion 内容\n\t\t\t_dcompVisual->SetContent(nullptr);\n\t\t\t_dcompDevice->Commit();\n\t\t}\n\t}\n}\n\nbool AdaptivePresenter::OnResize() noexcept {\n\t_isResized = true;\n\n\tif (ScalingWindow::Get().IsResizingOrMoving() || !_dxgiSwapChain) {\n\t\t// 切换到 DirectComposition 呈现，失败则回落到交换链\n\t\t_isDCompPresenting = _ResizeDCompVisual();\n\t\tif (_isDCompPresenting) {\n\t\t\treturn true;\n\t\t}\n\n\t\tLogger::Get().Error(\"_ResizeDCompVisual 失败\");\n\n\t\t// 禁用 DirectFlip 时不存在交换链\n\t\tif (!_dxgiSwapChain) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tif (!_ResizeSwapChain()) {\n\t\tLogger::Get().Error(\"_ResizeSwapChain 失败\");\n\t\treturn false;\n\t}\n\t\n\treturn true;\n}\n\nvoid AdaptivePresenter::OnEndResize(bool& shouldRedraw) noexcept {\n\tif (!_isDCompPresenting || !_dxgiSwapChain) {\n\t\tshouldRedraw = false;\n\t\treturn;\n\t}\n\n\tshouldRedraw = true;\n\n\t_ResizeSwapChain();\n\t_isDCompPresenting = false;\n\t// 交换链呈现新帧后再清除 DirectCompostion 内容，确保无缝切换\n\t_isSwitchingToSwapChain = true;\n}\n\nbool AdaptivePresenter::_ResizeSwapChain() noexcept {\n\tassert(_dxgiSwapChain);\n\n\tif (!_isframeLatencyWaited) {\n\t\t_frameLatencyWaitableObject.wait(1000);\n\t\t_isframeLatencyWaited = true;\n\t}\n\n\t_backBuffer = nullptr;\n\t_backBufferRtv = nullptr;\n\n\tconst RECT& swapChainRect = ScalingWindow::Get().RendererRect();\n\tconst SIZE swapChainSize = Win32Helper::GetSizeOfRect(swapChainRect);\n\tHRESULT hr = _dxgiSwapChain->ResizeBuffers(\n\t\t0,\n\t\t(UINT)swapChainSize.cx,\n\t\t(UINT)swapChainSize.cy,\n\t\tDXGI_FORMAT_UNKNOWN,\n\t\tUINT((_deviceResources->IsTearingSupported() ? DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING : 0)\n\t\t| DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT)\n\t);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"ResizeBuffers 失败\", hr);\n\t\treturn false;\n\t}\n\n\thr = _dxgiSwapChain->GetBuffer(0, IID_PPV_ARGS(_backBuffer.put()));\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"获取后缓冲区失败\", hr);\n\t\treturn false;\n\t}\n\n\thr = _deviceResources->GetD3DDevice()->CreateRenderTargetView(\n\t\t_backBuffer.get(), nullptr, _backBufferRtv.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"CreateRenderTargetView 失败\", hr);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nbool AdaptivePresenter::_ResizeDCompVisual(HWND hwndAttach) noexcept {\n\tconst SIZE rendererSize = Win32Helper::GetSizeOfRect(ScalingWindow::Get().RendererRect());\n\n\tif (_dcompSurface) {\n\t\t// 使用 IDCompositionVirtualSurface 而不是 IDCompositionSurface 的原因是\n\t\t// IDCompositionDevice2::CreateSurface 有时相当慢，最坏情况下要几十毫秒。\n\t\tHRESULT hr = _dcompSurface->Resize((UINT)rendererSize.cx, (UINT)rendererSize.cy);\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"Resize 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\t// 初始化 DirectComposition\n\t\tHRESULT hr = DCompositionCreateDevice3(\n\t\t\t_deviceResources->GetD3DDevice(), IID_PPV_ARGS(&_dcompDevice));\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"DCompositionCreateDevice3 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!hwndAttach) {\n\t\t\t// 没有禁用 DirectFlip 时才会在调整大小时初始化，因此必定存在交换链\n\t\t\thr = _dxgiSwapChain->GetHwnd(&hwndAttach);\n\t\t\tif (FAILED(hr)) {\n\t\t\t\tLogger::Get().ComError(\"GetHwnd 失败\", hr);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\thr = _dcompDevice->CreateTargetForHwnd(hwndAttach, TRUE, _dcompTarget.put());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"CreateTargetForHwnd 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\thr = _dcompDevice->CreateVisual(_dcompVisual.put());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"CreateVisual 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\thr = _dcompTarget->SetRoot(_dcompVisual.get());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"SetRoot 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\n\t\thr = _dcompDevice->CreateVirtualSurface(\n\t\t\t(UINT)rendererSize.cx,\n\t\t\t(UINT)rendererSize.cy,\n\t\t\tDXGI_FORMAT_R8G8B8A8_UNORM,\n\t\t\tDXGI_ALPHA_MODE_IGNORE,\n\t\t\t_dcompSurface.put()\n\t\t);\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"CreateVirtualSurface 失败\", hr);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tHRESULT hr = _dcompVisual->SetContent(_dcompSurface.get());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"SetContent 失败\", hr);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie.Core/AdaptivePresenter.h",
    "content": "#pragma once\n#include \"PresenterBase.h\"\n#include <dcomp.h>\n\nnamespace Magpie {\n\n// 根据需要在交换链和 DirectComposition 两种呈现方式间切换。交换链可以触发\n// DirectFlip/IndependentFlip 以最小化延迟，DirectComposition 在调整尺寸\n// 时闪烁更少，这个呈现器旨在结合两者的优势。\nclass AdaptivePresenter final : public PresenterBase {\nprotected:\n\tbool _Initialize(HWND hwndAttach) noexcept override;\n\npublic:\n\tbool BeginFrame(\n\t\twinrt::com_ptr<ID3D11Texture2D>& frameTex,\n\t\twinrt::com_ptr<ID3D11RenderTargetView>& frameRtv,\n\t\tPOINT& drawOffset\n\t) noexcept override;\n\n\tvoid EndFrame(bool waitForGpu = false) noexcept override;\n\n\tbool OnResize() noexcept override;\n\n\tvoid OnEndResize(bool& shouldRedraw) noexcept override;\n\nprivate:\n\tbool _ResizeSwapChain() noexcept;\n\n\tbool _ResizeDCompVisual(HWND hwndAttach = NULL) noexcept;\n\n\twinrt::com_ptr<IDXGISwapChain4> _dxgiSwapChain;\n\twil::unique_event_nothrow _frameLatencyWaitableObject;\n\twinrt::com_ptr<ID3D11Texture2D> _backBuffer;\n\twinrt::com_ptr<ID3D11RenderTargetView> _backBufferRtv;\n\n\t// 调整大小或禁用 DirectFlip 时使用\n\twinrt::com_ptr<IDCompositionDesktopDevice> _dcompDevice;\n\twinrt::com_ptr<IDCompositionTarget> _dcompTarget;\n\twinrt::com_ptr<IDCompositionVisual2> _dcompVisual;\n\twinrt::com_ptr<IDCompositionVirtualSurface> _dcompSurface;\n\t\n\tbool _isDCompPresenting = false;\n\tbool _isResized = false;\n\tbool _isframeLatencyWaited = false;\n\tbool _isSwitchingToSwapChain = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie.Core/BackendDescriptorStore.h",
    "content": "#pragma once\n#include <parallel_hashmap/phmap.h>\n\nnamespace Magpie {\n\nclass BackendDescriptorStore {\npublic:\n\tBackendDescriptorStore() = default;\n\tBackendDescriptorStore(const BackendDescriptorStore&) = delete;\n\tBackendDescriptorStore(BackendDescriptorStore&&) = default;\n\n\tvoid Initialize(ID3D11Device5* d3dDevice) noexcept {\n\t\t_d3dDevice = d3dDevice;\n\t}\n\n\tID3D11ShaderResourceView* GetShaderResourceView(ID3D11Texture2D* texture) noexcept;\n\n\tID3D11UnorderedAccessView* GetUnorderedAccessView(ID3D11Texture2D* texture) noexcept;\n\n\tID3D11UnorderedAccessView* GetUnorderedAccessView(\n\t\tID3D11Buffer* buffer,\n\t\tuint32_t numElements,\n\t\tDXGI_FORMAT format = DXGI_FORMAT_UNKNOWN\n\t) noexcept;\n\n\tvoid RemoveCache(ID3D11Texture2D* texture) noexcept;\n\nprivate:\n\tID3D11Device5* _d3dDevice = nullptr;\n\n\tphmap::flat_hash_map<ID3D11Texture2D*, winrt::com_ptr<ID3D11ShaderResourceView>> _srvMap;\n\tphmap::flat_hash_map<void*, winrt::com_ptr<ID3D11UnorderedAccessView>> _uavMap;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie.Core/CompSwapchainPresenter.h",
    "content": "#pragma once\n#include \"PresenterBase.h\"\n#include <dcomp.h>\n#include <Presentation.h>\n\nnamespace Magpie {\n\nclass CompSwapchainPresenter final : public PresenterBase {\nprotected:\n\tbool _Initialize(HWND hwndAttach) noexcept override;\n\npublic:\n\tbool BeginFrame(\n\t\twinrt::com_ptr<ID3D11Texture2D>& frameTex,\n\t\twinrt::com_ptr<ID3D11RenderTargetView>& frameRtv,\n\t\tPOINT& drawOffset\n\t) noexcept override;\n\n\tvoid EndFrame(bool waitForGpu = false) noexcept override;\n\n\tbool OnResize() noexcept override;\n\nprivate:\n\twinrt::com_ptr<IDCompositionDesktopDevice> _dcompDevice;\n\twinrt::com_ptr<IDCompositionTarget> _dcompTarget;\n\twinrt::com_ptr<IDCompositionVisual2> _dcompVisual;\n\twinrt::com_ptr<IDCompositionSurface> _dcompSurface;\n\n\twinrt::com_ptr<IPresentationManager> _presentationManager;\n\twinrt::com_ptr<IPresentationSurface> _presentationSurface;\n\twinrt::com_ptr<ID3D11Fence> _presentationFence;\n\n\tstd::vector<winrt::com_ptr<IPresentationBuffer>> _presentationBuffers;\n\tstd::vector<wil::unique_event_nothrow> _presentationBufferAvailableEvents;\n\tstd::vector<winrt::com_ptr<ID3D11Texture2D>> _bufferTextures;\n\tstd::vector<winrt::com_ptr<ID3D11RenderTargetView>> _bufferRtvs;\n\n\tbool _isResized = false;\n};\n\n}\n"
  },
  {
    "path": "src/Magpie.Core/CursorDrawer.cpp",
    "content": "#include \"pch.h\"\n#include \"CursorDrawer.h\"\n#include \"CursorManager.h\"\n#include \"DeviceResources.h\"\n#include \"DirectXHelper.h\"\n#include \"Logger.h\"\n#include \"Renderer.h\"\n#include \"ScalingOptions.h\"\n#include \"ScalingWindow.h\"\n#include \"shaders/MaskedCursorPS.h\"\n#include \"shaders/MonochromeCursorPS.h\"\n#include \"shaders/SimplePS.h\"\n#include \"shaders/SimpleVS.h\"\n#include \"Win32Helper.h\"\n#include <DirectXMath.h>\n\nusing namespace DirectX;\n\nnamespace Magpie {\n\nstruct VertexPositionTexture {\n\tVertexPositionTexture() = default;\n\n\tVertexPositionTexture(const VertexPositionTexture&) = default;\n\tVertexPositionTexture& operator=(const VertexPositionTexture&) = default;\n\n\tVertexPositionTexture(VertexPositionTexture&&) = default;\n\tVertexPositionTexture& operator=(VertexPositionTexture&&) = default;\n\n\tVertexPositionTexture(XMFLOAT2 const& iposition, XMFLOAT2 const& itextureCoordinate) noexcept\n\t\t: position(iposition), textureCoordinate(itextureCoordinate) {\n\t}\n\n\tVertexPositionTexture(FXMVECTOR iposition, FXMVECTOR itextureCoordinate) noexcept {\n\t\tXMStoreFloat2(&this->position, iposition);\n\t\tXMStoreFloat2(&this->textureCoordinate, itextureCoordinate);\n\t}\n\n\tXMFLOAT2 position;\n\tXMFLOAT2 textureCoordinate;\n\n\tstatic constexpr D3D11_INPUT_ELEMENT_DESC InputElements[] = {\n\t\t{ \"POSITION\", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },\n\t\t{ \"TEXCOORD\",    0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },\n\t};\n};\n\nbool CursorDrawer::Initialize(DeviceResources& deviceResources) noexcept {\n\t_deviceResources = &deviceResources;\n\n\tID3D11Device* d3dDevice = deviceResources.GetD3DDevice();\n\n\tHRESULT hr = d3dDevice->CreateVertexShader(\n\t\tSimpleVS, std::size(SimpleVS), nullptr, _simpleVS.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"创建顶点着色器失败\", hr);\n\t\treturn false;\n\t}\n\n\thr = d3dDevice->CreateInputLayout(\n\t\tVertexPositionTexture::InputElements,\n\t\t(UINT)std::size(VertexPositionTexture::InputElements),\n\t\tSimpleVS,\n\t\tstd::size(SimpleVS),\n\t\t_simpleIL.put()\n\t);\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"创建输入布局失败\", hr);\n\t\treturn false;\n\t}\n\n\tD3D11_BUFFER_DESC bd{};\n\tbd.Usage = D3D11_USAGE_DYNAMIC;\n\tbd.ByteWidth = sizeof(VertexPositionTexture) * 4;\n\tbd.BindFlags = D3D11_BIND_VERTEX_BUFFER;\n\tbd.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;\n\n\thr = d3dDevice->CreateBuffer(&bd, nullptr, _vtxBuffer.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"创建顶点缓冲区失败\", hr);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nvoid CursorDrawer::Draw(ID3D11Texture2D* backBuffer, POINT drawOffset) noexcept {\n\tconst ScalingWindow& scalingWindow = ScalingWindow::Get();\n\n\tbool isCursorActive = false;\n\tconst auto [cursorHandle, cursorPos] = _GetCursorState(isCursorActive);\n\n\tif (isCursorActive) {\n\t\t// 启用自动隐藏时光标形状或位置变化后应记录新的形状、位置和变化时间。位置由\n\t\t// _lastCursorPos 记录。\n\t\t_lastRawCursorHandle = scalingWindow.CursorManager().CursorHandle();\n\t\t_lastCursorActiveTime = std::chrono::steady_clock::now();\n\t}\n\n\t_lastCursorHandle = cursorHandle;\n\t_lastCursorPos = cursorPos;\n\n\tif (!cursorHandle) {\n\t\treturn;\n\t}\n\n\tconst _CursorInfo* cursorInfo = _ResolveCursor(cursorHandle);\n\tif (!cursorInfo) {\n\t\treturn;\n\t}\n\n\tconst ScalingOptions& options = scalingWindow.Options();\n\n\tfloat cursorScaling = options.cursorScaling;\n\tif (cursorScaling < FLOAT_EPSILON<float>) {\n\t\t// 光标缩放和源窗口相同\n\t\tconst Renderer& renderer = scalingWindow.Renderer();\n\t\tconst SIZE srcSize = Win32Helper::GetSizeOfRect(renderer.SrcRect());\n\t\tconst SIZE destSize = Win32Helper::GetSizeOfRect(renderer.DestRect());\n\t\tcursorScaling = (((float)destSize.cx / srcSize.cx) + ((float)destSize.cy / srcSize.cy)) / 2;\n\t}\n\n\tconst SIZE cursorSize{\n\t\tlroundf(cursorInfo->size.cx * cursorScaling),\n\t\tlroundf(cursorInfo->size.cy * cursorScaling)\n\t};\n\tRECT cursorRect{\n\t\t.left = lroundf(cursorPos.x - cursorInfo->hotSpot.x * cursorScaling),\n\t\t.top = lroundf(cursorPos.y - cursorInfo->hotSpot.y * cursorScaling),\n\t\t.right = cursorRect.left + cursorSize.cx,\n\t\t.bottom = cursorRect.top + cursorSize.cy\n\t};\n\n\tRECT viewportRect;\n\t{\n\t\tconst RECT& rendererRect = scalingWindow.RendererRect();\n\t\tconst RECT& destRect = scalingWindow.Renderer().DestRect();\n\n\t\tviewportRect = {\n\t\t\tdestRect.left - rendererRect.left,\n\t\t\tdestRect.top - rendererRect.top,\n\t\t\tdestRect.right - rendererRect.left,\n\t\t\tdestRect.bottom - rendererRect.top\n\t\t};\n\t}\n\n\tif (cursorRect.left >= viewportRect.right ||\n\t\tcursorRect.top >= viewportRect.bottom ||\n\t\tcursorRect.right <= viewportRect.left ||\n\t\tcursorRect.bottom <= viewportRect.top\n\t) {\n\t\treturn;\n\t}\n\n\tconst SIZE viewportSize = Win32Helper::GetSizeOfRect(viewportRect);\n\tfloat left = (cursorRect.left - viewportRect.left) / (float)viewportSize.cx * 2 - 1.0f;\n\tfloat top = 1.0f - (cursorRect.top - viewportRect.top) / (float)viewportSize.cy * 2;\n\tfloat right = left + cursorSize.cx / (float)viewportSize.cx * 2;\n\tfloat bottom = top - cursorSize.cy / (float)viewportSize.cy * 2;\n\n\tID3D11DeviceContext* d3dDC = _deviceResources->GetD3DDC();\n\td3dDC->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);\n\td3dDC->IASetInputLayout(_simpleIL.get());\n\td3dDC->VSSetShader(_simpleVS.get(), nullptr, 0);\n\n\t// 配置顶点缓冲区\n\t{\n\t\tconst VertexPositionTexture data[] = {\n\t\t\t{ XMFLOAT2(left, top), XMFLOAT2(0.0f, 0.0f) },\n\t\t\t{ XMFLOAT2(right, top), XMFLOAT2(1.0f, 0.0f) },\n\t\t\t{ XMFLOAT2(left, bottom), XMFLOAT2(0.0f, 1.0f) },\n\t\t\t{ XMFLOAT2(right, bottom), XMFLOAT2(1.0f, 1.0f) }\n\t\t};\n\n\t\tD3D11_MAPPED_SUBRESOURCE ms;\n\t\tHRESULT hr = d3dDC->Map(_vtxBuffer.get(), 0, D3D11_MAP_WRITE_DISCARD, 0, &ms);\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"Map 失败\", hr);\n\t\t\treturn;\n\t\t}\n\n\t\tstd::memcpy(ms.pData, data, sizeof(data));\n\t\td3dDC->Unmap(_vtxBuffer.get(), 0);\n\n\t\tID3D11Buffer* vtxBuffer = _vtxBuffer.get();\n\t\tUINT stride = sizeof(VertexPositionTexture);\n\t\tUINT offset = 0;\n\t\td3dDC->IASetVertexBuffers(0, 1, &vtxBuffer, &stride, &offset);\n\t}\n\n\t// 配置渲染视口\n\t{\n\t\tD3D11_VIEWPORT vp{\n\t\t\tfloat(viewportRect.left + drawOffset.x),\n\t\t\tfloat(viewportRect.top + drawOffset.y),\n\t\t\tfloat(viewportSize.cx),\n\t\t\tfloat(viewportSize.cy),\n\t\t\t0.0f,\n\t\t\t1.0f\n\t\t};\n\t\td3dDC->RSSetViewports(1, &vp);\n\t\td3dDC->RSSetState(nullptr);\n\t}\n\n\tif (cursorInfo->type == _CursorType::Color) {\n\t\t// 配置像素着色器\n\t\tif (!_simplePS) {\n\t\t\tHRESULT hr = _deviceResources->GetD3DDevice()->CreatePixelShader(\n\t\t\t\tSimplePS, sizeof(SimplePS), nullptr, _simplePS.put());\n\t\t\tif (FAILED(hr)) {\n\t\t\t\tLogger::Get().ComError(\"创建像素着色器失败\", hr);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\td3dDC->PSSetShader(_simplePS.get(), nullptr, 0);\n\t\td3dDC->PSSetConstantBuffers(0, 0, nullptr);\n\t\tID3D11ShaderResourceView* cursorSrv = cursorInfo->textureSrv.get();\n\t\td3dDC->PSSetShaderResources(0, 1, &cursorSrv);\n\n\t\tconst bool useBilinear = options.cursorInterpolationMode == CursorInterpolationMode::Bilinear &&\n\t\t\tstd::abs(options.cursorScaling - 1.0f) > 1e-3;\n\t\tID3D11SamplerState* cursorSampler = _deviceResources->GetSampler(\n\t\t\tuseBilinear ? D3D11_FILTER_MIN_MAG_MIP_LINEAR : D3D11_FILTER_MIN_MAG_MIP_POINT,\n\t\t\tD3D11_TEXTURE_ADDRESS_CLAMP\n\t\t);\n\t\td3dDC->PSSetSamplers(0, 1, &cursorSampler);\n\n\t\t// 预乘 alpha\n\t\t_SetPremultipliedAlphaBlend();\n\t} else {\n\t\tif (_tempCursorTextureSize != cursorSize) {\n\t\t\t_tempCursorTexture = nullptr;\n\t\t\t_tempCursorTextureRtv = nullptr;\n\n\t\t\tID3D11Device* d3dDevice = _deviceResources->GetD3DDevice();\n\n\t\t\t// 创建临时纹理，如果光标尺寸变了则重新创建\n\t\t\t_tempCursorTexture = DirectXHelper::CreateTexture2D(\n\t\t\t\td3dDevice,\n\t\t\t\tDXGI_FORMAT_R8G8B8A8_UNORM,\n\t\t\t\tcursorSize.cx,\n\t\t\t\tcursorSize.cy,\n\t\t\t\tD3D11_BIND_SHADER_RESOURCE\n\t\t\t);\n\t\t\tif (!_tempCursorTexture) {\n\t\t\t\tLogger::Get().Error(\"创建光标纹理失败\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tHRESULT hr = d3dDevice->CreateShaderResourceView(\n\t\t\t\t_tempCursorTexture.get(), nullptr, _tempCursorTextureRtv.put());\n\t\t\tif (FAILED(hr)) {\n\t\t\t\tLogger::Get().ComError(\"CreateShaderResourceView 失败\", hr);\n\t\t\t\t_tempCursorTexture = nullptr;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_tempCursorTextureSize = cursorSize;\n\t\t}\n\n\t\t{\n\t\t\tD3D11_BOX srcBox{\n\t\t\t\tUINT(std::max(cursorRect.left, viewportRect.left) + drawOffset.x),\n\t\t\t\tUINT(std::max(cursorRect.top, viewportRect.top) + drawOffset.y),\n\t\t\t\t0,\n\t\t\t\tUINT(std::min(cursorRect.right, viewportRect.right) + drawOffset.x),\n\t\t\t\tUINT(std::min(cursorRect.bottom, viewportRect.bottom) + drawOffset.y),\n\t\t\t\t1\n\t\t\t};\n\t\t\tUINT destLeft = UINT(std::max(0l, viewportRect.left - cursorRect.left));\n\t\t\tUINT destTop = UINT(std::max(0l, viewportRect.top - cursorRect.top));\n\n\t\t\tassert(LONG(destLeft + srcBox.right - srcBox.left) <= cursorSize.cx);\n\t\t\tassert(LONG(destTop + srcBox.bottom - srcBox.top) <= cursorSize.cy);\n\n\t\t\td3dDC->CopySubresourceRegion(_tempCursorTexture.get(),\n\t\t\t\t0, destLeft, destTop, 0, backBuffer, 0, &srcBox);\n\t\t}\n\n\t\tif (cursorInfo->type == _CursorType::MaskedColor) {\n\t\t\tif (!_maskedCursorPS) {\n\t\t\t\tHRESULT hr = _deviceResources->GetD3DDevice()->CreatePixelShader(\n\t\t\t\t\tMaskedCursorPS, sizeof(MaskedCursorPS), nullptr, _maskedCursorPS.put());\n\t\t\t\tif (FAILED(hr)) {\n\t\t\t\t\tLogger::Get().ComError(\"创建像素着色器失败\", hr);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\td3dDC->PSSetShader(_maskedCursorPS.get(), nullptr, 0);\n\t\t} else {\n\t\t\tif (!_monochromeCursorPS) {\n\t\t\t\tHRESULT hr = _deviceResources->GetD3DDevice()->CreatePixelShader(\n\t\t\t\t\tMonochromeCursorPS, sizeof(MonochromeCursorPS), nullptr, _monochromeCursorPS.put());\n\t\t\t\tif (FAILED(hr)) {\n\t\t\t\t\tLogger::Get().ComError(\"创建像素着色器失败\", hr);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\td3dDC->PSSetShader(_monochromeCursorPS.get(), nullptr, 0);\n\t\t}\n\n\t\td3dDC->PSSetConstantBuffers(0, 0, nullptr);\n\n\t\t{\n\t\t\tID3D11ShaderResourceView* srvs[2]{ _tempCursorTextureRtv.get(), cursorInfo->textureSrv.get() };\n\t\t\td3dDC->PSSetShaderResources(0, 2, srvs);\n\t\t}\n\t\t\n\t\t{\n\t\t\t// 支持双线性插值的单色光标和彩色掩码光标会转换为彩色光标，这里只需要最近邻插值\n\t\t\tID3D11SamplerState* t = _deviceResources->GetSampler(\n\t\t\t\tD3D11_FILTER_MIN_MAG_MIP_POINT, D3D11_TEXTURE_ADDRESS_CLAMP);\n\t\t\td3dDC->PSSetSamplers(0, 1, &t);\n\t\t}\n\t}\n\n\td3dDC->Draw(4, 0);\n}\n\nbool CursorDrawer::NeedRedraw() const noexcept {\n\tbool isCursorActive = false;\n\tconst auto [cursorHandle, cursorPos] = _GetCursorState(isCursorActive);\n\t// 光标形状或位置变化时需要重新绘制\n\treturn cursorHandle != _lastCursorHandle || (cursorHandle && cursorPos != _lastCursorPos);\n}\n\nstd::pair<HCURSOR, POINT> CursorDrawer::_GetCursorState(bool& isActive) const noexcept {\n\tassert(!isActive);\n\tusing namespace std::chrono;\n\n\tconst ScalingWindow& scalingWindow = ScalingWindow::Get();\n\tconst ScalingOptions& options = scalingWindow.Options();\n\n\tconst CursorManager& cursorManager = scalingWindow.CursorManager();\n\tHCURSOR cursorHandle = cursorManager.CursorHandle();\n\tPOINT cursorPos = cursorManager.CursorPos();\n\t// 转换为渲染矩形局部坐标\n\tconst RECT& rendererRect = scalingWindow.RendererRect();\n\tcursorPos.x -= rendererRect.left;\n\tcursorPos.y -= rendererRect.top;\n\n\t// 检查自动隐藏光标\n\tif (options.autoHideCursorDelay.has_value()) {\n\t\t// 光标在叠加层上或拖动窗口时禁用自动隐藏。光标处于隐藏状态视为形状不变，考虑形状\n\t\t// 变化：箭头->隐藏->箭头，只要位置不变，自动隐藏功能应让光标始终隐藏；反之如果光\n\t\t// 标隐藏时移动了或显示时形状变化了应正常显示。\n\t\tif (cursorManager.IsCursorCaptured() &&\n\t\t\t!scalingWindow.IsResizingOrMoving() &&\n\t\t\t!scalingWindow.SrcTracker().IsMoving() &&\n\t\t\t_lastCursorPos == cursorPos &&\n\t\t\t(_lastRawCursorHandle == cursorHandle || !cursorHandle))\n\t\t{\n\t\t\tconst duration<float> hideDelay(*options.autoHideCursorDelay);\n\t\t\tif (steady_clock::now() - _lastCursorActiveTime > hideDelay) {\n\t\t\t\tcursorHandle = NULL;\n\t\t\t}\n\t\t} else {\n\t\t\tisActive = true;\n\t\t}\n\t}\n\n\t// 截屏时暂时不渲染光标\n\tif (!_isCursorVisible) {\n\t\tcursorHandle = NULL;\n\t}\n\n\treturn { cursorHandle, cursorPos };\n}\n\nconst CursorDrawer::_CursorInfo* CursorDrawer::_ResolveCursor(HCURSOR hCursor) noexcept {\n\tif (auto it = _cursorInfos.find(hCursor); it != _cursorInfos.end()) {\n\t\treturn &it->second;\n\t}\n\n\tICONINFO iconInfo{};\n\tif (!GetIconInfo(hCursor, &iconInfo)) {\n\t\tLogger::Get().Win32Error(\"GetIconInfo 失败\");\n\t\treturn nullptr;\n\t}\n\n\twil::unique_hbitmap hbmpColor(iconInfo.hbmColor);\n\twil::unique_hbitmap hbmpMask(iconInfo.hbmMask);\n\n\tBITMAP bmp{};\n\tif (!GetObject(iconInfo.hbmMask, sizeof(bmp), &bmp)) {\n\t\tLogger::Get().Win32Error(\"GetObject 失败\");\n\t\treturn nullptr;\n\t}\n\n\t// 获取位图数据\n\tBITMAPINFO bi{\n\t\t.bmiHeader{\n\t\t\t.biSize = sizeof(BITMAPINFOHEADER),\n\t\t\t.biWidth = bmp.bmWidth,\n\t\t\t.biHeight = -bmp.bmHeight,\n\t\t\t.biPlanes = 1,\n\t\t\t.biBitCount = 32,\n\t\t\t.biCompression = BI_RGB,\n\t\t\t.biSizeImage = DWORD(bmp.bmWidth * bmp.bmHeight * 4)\n\t\t}\n\t};\n\n\tstd::unique_ptr<uint8_t[]> pixels(std::make_unique<uint8_t[]>(bi.bmiHeader.biSizeImage));\n\twil::unique_hdc_window hdcScreen(wil::window_dc(GetDC(NULL)));\n\tif (GetDIBits(hdcScreen.get(), iconInfo.hbmColor ? iconInfo.hbmColor : iconInfo.hbmMask,\n\t\t0, bmp.bmHeight, pixels.get(), &bi, DIB_RGB_COLORS) != bmp.bmHeight\n\t) {\n\t\tLogger::Get().Win32Error(\"GetDIBits 失败\");\n\t\treturn nullptr;\n\t}\n\n\t_CursorInfo cursorInfo{\n\t\t.hotSpot = { (LONG)iconInfo.xHotspot, (LONG)iconInfo.yHotspot },\n\t\t// 单色光标的 hbmMask 高度为实际高度的两倍\n\t\t.size = { bmp.bmWidth, iconInfo.hbmColor ? bmp.bmHeight : bmp.bmHeight / 2 }\n\t};\n\twinrt::com_ptr<ID3D11Texture2D> cursorTexture;\n\n\tID3D11Device* d3dDevice = _deviceResources->GetD3DDevice();\n\n\tif (iconInfo.hbmColor) {\n\t\t// 彩色光标或彩色掩码光标\n\n\t\t// 若颜色掩码有 A 通道，则是彩色光标，否则是彩色掩码光标\n\t\tbool hasAlpha = false;\n\t\tfor (uint32_t i = 3; i < bi.bmiHeader.biSizeImage; i += 4) {\n\t\t\tif (pixels[i] != 0) {\n\t\t\t\thasAlpha = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (hasAlpha) {\n\t\t\t// 彩色光标\n\t\t\tcursorInfo.type = _CursorType::Color;\n\n\t\t\tfor (uint32_t i = 0; i < bi.bmiHeader.biSizeImage; i += 4) {\n\t\t\t\t// 预乘 Alpha 通道\n\t\t\t\tdouble alpha = pixels[size_t(i + 3)] / 255.0f;\n\n\t\t\t\tuint8_t b = (uint8_t)std::lround(pixels[i] * alpha);\n\t\t\t\tpixels[i] = (uint8_t)std::lround(pixels[size_t(i + 2)] * alpha);\n\t\t\t\tpixels[size_t(i + 1)] = (uint8_t)std::lround(pixels[size_t(i + 1)] * alpha);\n\t\t\t\tpixels[size_t(i + 2)] = b;\n\t\t\t\tpixels[size_t(i + 3)] = 255 - pixels[size_t(i + 3)];\n\t\t\t}\n\t\t} else {\n\t\t\t// 彩色掩码光标\n\t\t\tstd::unique_ptr<uint8_t[]> maskPixels(std::make_unique<uint8_t[]>(bi.bmiHeader.biSizeImage));\n\t\t\tif (GetDIBits(hdcScreen.get(), iconInfo.hbmMask, 0, bmp.bmHeight,\n\t\t\t\tmaskPixels.get(), &bi, DIB_RGB_COLORS) != bmp.bmHeight\n\t\t\t) {\n\t\t\t\tLogger::Get().Win32Error(\"GetDIBits 失败\");\n\t\t\t\treturn nullptr;\n\t\t\t}\n\n\t\t\t// 计算此彩色掩码光标是否可以转换为彩色光标\n\t\t\tbool canConvertToColor = true;\n\t\t\tfor (uint32_t i = 0; i < bi.bmiHeader.biSizeImage; i += 4) {\n\t\t\t\tif (maskPixels[i] != 0 &&\n\t\t\t\t\t(pixels[i] != 0 || pixels[size_t(i + 1)] != 0 || pixels[size_t(i + 2)] != 0)\n\t\t\t\t) {\n\t\t\t\t\t// 掩码不为 0 则不能转换为彩色光标\n\t\t\t\t\tcanConvertToColor = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (canConvertToColor) {\n\t\t\t\t// 转换为彩色光标以获得更好的插值效果和渲染性能\n\t\t\t\tcursorInfo.type = _CursorType::Color;\n\n\t\t\t\tfor (uint32_t i = 0; i < bi.bmiHeader.biSizeImage; i += 4) {\n\t\t\t\t\tif (maskPixels[i] == 0) {\n\t\t\t\t\t\t// 保留光标颜色\n\t\t\t\t\t\t// Alpha 通道已经是 0，无需设置\n\t\t\t\t\t\tstd::swap(pixels[i], pixels[size_t(i + 2)]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// 透明像素\n\t\t\t\t\t\tstd::memset(&pixels[i], 0, 3);\n\t\t\t\t\t\tpixels[size_t(i + 3)] = 255;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcursorInfo.type = _CursorType::MaskedColor;\n\n\t\t\t\t// 将 XOR 掩码复制到透明通道中\n\t\t\t\tfor (uint32_t i = 0; i < bi.bmiHeader.biSizeImage; i += 4) {\n\t\t\t\t\tstd::swap(pixels[i], pixels[size_t(i + 2)]);\n\t\t\t\t\tpixels[size_t(i + 3)] = maskPixels[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// 单色光标\n\t\tconst uint32_t halfSize = bi.bmiHeader.biSizeImage / 2;\n\n\t\t// 计算此单色光标是否可以转换为彩色光标\n\t\tbool canConvertToColor = true;\n\t\tfor (uint32_t i = 0; i < halfSize; i += 4) {\n\t\t\t// 上半部分是 AND 掩码，下半部分是 XOR 掩码\n\t\t\tif (pixels[i] != 0 && pixels[size_t(i + halfSize)] != 0) {\n\t\t\t\t// 存在反色像素则不能转换为彩色光标\n\t\t\t\tcanConvertToColor = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (canConvertToColor) {\n\t\t\t// 转换为彩色光标以获得更好的插值效果和渲染性能\n\t\t\tcursorInfo.type = _CursorType::Color;\n\n\t\t\tfor (uint32_t i = 0; i < halfSize; i += 4) {\n\t\t\t\t// 上半部分是 AND 掩码，下半部分是 XOR 掩码\n\t\t\t\t// https://learn.microsoft.com/en-us/windows-hardware/drivers/display/drawing-monochrome-pointers\n\t\t\t\tif (pixels[i] == 0) {\n\t\t\t\t\tif (pixels[size_t(i + halfSize)] == 0) {\n\t\t\t\t\t\t// 黑色\n\t\t\t\t\t\tstd::memset(&pixels[i], 0, 4);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// 白色\n\t\t\t\t\t\tstd::memset(&pixels[i], 255, 3);\n\t\t\t\t\t\tpixels[size_t(i + 3)] = 0;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// 透明\n\t\t\t\t\tstd::memset(&pixels[i], 0, 3);\n\t\t\t\t\tpixels[size_t(i + 3)] = 255;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tcursorInfo.type = _CursorType::Monochrome;\n\n\t\t\t// 红色通道是 AND 掩码，绿色通道是 XOR 掩码\n\t\t\t// 构造 DXGI_FORMAT_R8G8_UNORM 的初始数据\n\t\t\tuint8_t* upPtr = &pixels[0];\n\t\t\tuint8_t* downPtr = &pixels[halfSize];\n\t\t\tuint8_t* targetPtr = &pixels[0];\n\t\t\tfor (uint32_t i = 0; i < halfSize; i += 4) {\n\t\t\t\t*targetPtr++ = *upPtr;\n\t\t\t\t*targetPtr++ = *downPtr;\n\n\t\t\t\tupPtr += 4;\n\t\t\t\tdownPtr += 4;\n\t\t\t}\n\t\t}\n\t}\n\n\t{\n\t\tconst bool isMonochrome = cursorInfo.type == _CursorType::Monochrome;\n\t\tconst D3D11_SUBRESOURCE_DATA initData{\n\t\t\t.pSysMem = pixels.get(),\n\t\t\t.SysMemPitch = UINT(bmp.bmWidth * (isMonochrome ? 2 : 4))\n\t\t};\n\t\tcursorTexture = DirectXHelper::CreateTexture2D(\n\t\t\td3dDevice,\n\t\t\tisMonochrome ? DXGI_FORMAT_R8G8_UNORM : DXGI_FORMAT_R8G8B8A8_UNORM,\n\t\t\tbmp.bmWidth,\n\t\t\ticonInfo.hbmColor ? bmp.bmHeight : bmp.bmHeight / 2,\n\t\t\tD3D11_BIND_SHADER_RESOURCE,\n\t\t\tD3D11_USAGE_IMMUTABLE,\n\t\t\t0,\n\t\t\t&initData\n\t\t);\n\t\tif (!cursorTexture) {\n\t\t\tLogger::Get().Error(\"创建光标纹理失败\");\n\t\t\treturn nullptr;\n\t\t}\n\t}\n\n\tHRESULT hr = d3dDevice->CreateShaderResourceView(cursorTexture.get(), nullptr, cursorInfo.textureSrv.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"CreateShaderResourceView 失败\", hr);\n\t\treturn nullptr;\n\t}\n\n\treturn &_cursorInfos.emplace(hCursor, std::move(cursorInfo)).first->second;\n}\n\nbool CursorDrawer::_SetPremultipliedAlphaBlend() noexcept {\n\tif (!premultipliedAlphaBlendBlendState) {\n\t\t// FinalColor = ScreenColor * CursorColor.a + CursorColor\n\t\tD3D11_BLEND_DESC desc{};\n\t\tdesc.RenderTarget[0].BlendEnable = TRUE;\n\t\tdesc.RenderTarget[0].SrcBlend = D3D11_BLEND_ONE;\n\t\tdesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE;\n\t\tdesc.RenderTarget[0].DestBlend = D3D11_BLEND_SRC_ALPHA;\n\t\tdesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO;\n\t\tdesc.RenderTarget[0].BlendOp = desc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;\n\t\tdesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;\n\n\t\tHRESULT hr = _deviceResources->GetD3DDevice()->CreateBlendState(\n\t\t\t&desc, premultipliedAlphaBlendBlendState.put());\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"创建混合状态失败\", hr);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t_deviceResources->GetD3DDC()->OMSetBlendState(premultipliedAlphaBlendBlendState.get(), nullptr, 0xffffffff);\n\treturn true;\n}\n\n}\n"
  },
  {
    "path": "src/Magpie.Core/DesktopDuplicationFrameSource.cpp",
    "content": "#include \"pch.h\"\n#include \"DesktopDuplicationFrameSource.h\"\n#include \"DeviceResources.h\"\n#include \"DirectXHelper.h\"\n#include \"Logger.h\"\n#include \"ScalingWindow.h\"\n#include \"SmallVector.h\"\n#include \"Win32Helper.h\"\n\nnamespace Magpie {\n\nstatic winrt::com_ptr<IDXGIOutput1> FindMonitor(IDXGIAdapter1* adapter, HMONITOR hMonitor) noexcept {\n\twinrt::com_ptr<IDXGIOutput> output;\n\n\tfor (UINT adapterIndex = 0;\n\t\tSUCCEEDED(adapter->EnumOutputs(adapterIndex, output.put()));\n\t\t++adapterIndex\n\t) {\n\t\tDXGI_OUTPUT_DESC desc;\n\t\tHRESULT hr = output->GetDesc(&desc);\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"GetDesc 失败\", hr);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (desc.Monitor == hMonitor) {\n\t\t\twinrt::com_ptr<IDXGIOutput1> output1 = output.try_as<IDXGIOutput1>();\n\t\t\tif (!output1) {\n\t\t\t\tLogger::Get().Error(\"从 IDXGIOutput 获取 IDXGIOutput1 失败\");\n\t\t\t\treturn nullptr;\n\t\t\t}\n\n\t\t\treturn output1;\n\t\t}\n\t}\n\n\treturn nullptr;\n}\n\nbool DesktopDuplicationFrameSource::_Initialize() noexcept {\n\t// WDA_EXCLUDEFROMCAPTURE 只在 Win10 20H1 及更新版本中可用\n\tif (!Win32Helper::GetOSVersion().Is20H1OrNewer()) {\n\t\tLogger::Get().Error(\"当前操作系统无法使用 Desktop Duplication\");\n\t\treturn false;\n\t}\n\n\tconst HWND hwndSrc = ScalingWindow::Get().SrcTracker().Handle();\n\tconst RECT& srcRect = ScalingWindow::Get().SrcTracker().SrcRect();\n\n\tHMONITOR hMonitor = MonitorFromWindow(hwndSrc, MONITOR_DEFAULTTONULL);\n\tassert(hMonitor);\n\n\t{\n\t\tMONITORINFO mi{ .cbSize = sizeof(mi) };\n\t\tif (!GetMonitorInfo(hMonitor, &mi)) {\n\t\t\tLogger::Get().Win32Error(\"GetMonitorInfo 失败\");\n\t\t\treturn false;\n\t\t}\n\n\t\t// ScalingWindow::_InitialMoveSrcWindowInFullscreen 已调整窗口位置\n\t\tassert(srcRect.left >= mi.rcMonitor.left && srcRect.top >= mi.rcMonitor.top &&\n\t\t\tsrcRect.right <= mi.rcMonitor.right && srcRect.bottom <= mi.rcMonitor.bottom);\n\n\t\t// 计算源窗口客户区在该屏幕上的位置，用于计算新帧是否有更新\n\t\t_srcClientInMonitor = {\n\t\t\tsrcRect.left - mi.rcMonitor.left,\n\t\t\tsrcRect.top - mi.rcMonitor.top,\n\t\t\tsrcRect.right - mi.rcMonitor.left,\n\t\t\tsrcRect.bottom - mi.rcMonitor.top\n\t\t};\n\t}\n\n\t_frameInMonitor = {\n\t\t(UINT)_srcClientInMonitor.left,\n\t\t(UINT)_srcClientInMonitor.top,\n\t\t0,\n\t\t(UINT)_srcClientInMonitor.right,\n\t\t(UINT)_srcClientInMonitor.bottom,\n\t\t1\n\t};\n\t\n\t_output = DirectXHelper::CreateTexture2D(\n\t\t_deviceResources->GetD3DDevice(),\n\t\tDXGI_FORMAT_B8G8R8A8_UNORM,\n\t\tsrcRect.right - srcRect.left,\n\t\tsrcRect.bottom - srcRect.top,\n\t\tD3D11_BIND_SHADER_RESOURCE\n\t);\n\tif (!_output) {\n\t\tLogger::Get().Error(\"CreateTexture2D 失败\");\n\t\treturn false;\n\t}\n\n\t_dxgiOutput = FindMonitor(\n\t\t_deviceResources->GetGraphicsAdapter(), hMonitor);\n\tif (!_dxgiOutput) {\n\t\tLogger::Get().Error(\"无法找到 IDXGIOutput\");\n\t\treturn false;\n\t}\n\t\n\t// 使全屏窗口无法被捕获到\n\tif (!SetWindowDisplayAffinity(ScalingWindow::Get().Handle(), WDA_EXCLUDEFROMCAPTURE)) {\n\t\tLogger::Get().Win32Error(\"SetWindowDisplayAffinity 失败\");\n\t\treturn false;\n\t}\n\n\tLogger::Get().Info(\"DesktopDuplicationFrameSource 初始化完成\");\n\treturn true;\n}\n\nbool DesktopDuplicationFrameSource::Start() noexcept {\n\t_DisableRoundCornerInWin11();\n\n\tHRESULT hr = _dxgiOutput->DuplicateOutput(_deviceResources->GetD3DDevice(), _outputDup.put());\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"DuplicateOutput 失败\", hr);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nFrameSourceState DesktopDuplicationFrameSource::_Update() noexcept {\n\tID3D11DeviceContext4* d3dDC = _deviceResources->GetD3DDC();\n\n\tif (_isFrameAcquired) {\n\t\t// 根据文档，释放后立刻获取下一帧可以提高性能\n\t\t_outputDup->ReleaseFrame();\n\t\t_isFrameAcquired = false;\n\t}\n\n\tDXGI_OUTDUPL_FRAME_INFO info;\n\twinrt::com_ptr<IDXGIResource> dxgiRes;\n\t// 等待 1ms\n\tHRESULT hr = _outputDup->AcquireNextFrame(1, &info, dxgiRes.put());\n\tif (hr == DXGI_ERROR_WAIT_TIMEOUT) {\n\t\treturn FrameSourceState::Waiting;\n\t}\n\n\tif (FAILED(hr)) {\n\t\tLogger::Get().ComError(\"AcquireNextFrame 失败\", hr);\n\t\treturn FrameSourceState::Error;\n\t}\n\n\t_isFrameAcquired = true;\n\n\tbool noUpdate = true;\n\n\t// 检索 move rects 和 dirty rects\n\t// 这些区域如果和窗口客户区有重叠则表明画面有变化\n\tif (info.TotalMetadataBufferSize) {\n\t\tif (info.TotalMetadataBufferSize > _dupMetaData.size()) {\n\t\t\t_dupMetaData.resize(info.TotalMetadataBufferSize);\n\t\t}\n\n\t\tuint32_t bufSize = info.TotalMetadataBufferSize;\n\n\t\t// Move rects\n\t\thr = _outputDup->GetFrameMoveRects(\n\t\t\tbufSize, (DXGI_OUTDUPL_MOVE_RECT*)_dupMetaData.data(), &bufSize);\n\t\tif (FAILED(hr)) {\n\t\t\tLogger::Get().ComError(\"GetFrameMoveRects 失败\", hr);\n\t\t\treturn FrameSourceState::Error;\n\t\t}\n\n\t\tuint32_t nRect = bufSize / sizeof(DXGI_OUTDUPL_MOVE_RECT);\n\t\tfor (uint32_t i = 0; i < nRect; ++i) {\n\t\t\tconst DXGI_OUTDUPL_MOVE_RECT& rect = \n\t\t\t\t((DXGI_OUTDUPL_MOVE_RECT*)_dupMetaData.data())[i];\n\t\t\tif (Win32Helper::IsRectOverlap(_srcClientInMonitor, rect.DestinationRect)) {\n\t\t\t\tnoUpdate = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (noUpdate) {\n\t\t\tbufSize = info.TotalMetadataBufferSize;\n\n\t\t\t// Dirty rects\n\t\t\thr = _outputDup->GetFrameDirtyRects(\n\t\t\t\tbufSize, (RECT*)_dupMetaData.data(), &bufSize);\n\t\t\tif (FAILED(hr)) {\n\t\t\t\tLogger::Get().ComError(\"GetFrameDirtyRects 失败\", hr);\n\t\t\t\treturn FrameSourceState::Error;\n\t\t\t}\n\n\t\t\tnRect = bufSize / sizeof(RECT);\n\t\t\tfor (uint32_t i = 0; i < nRect; ++i) {\n\t\t\t\tconst RECT& rect = ((RECT*)_dupMetaData.data())[i];\n\t\t\t\tif (Win32Helper::IsRectOverlap(_srcClientInMonitor, rect)) {\n\t\t\t\t\tnoUpdate = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (noUpdate) {\n\t\treturn FrameSourceState::Waiting;\n\t}\n\t\n\twinrt::com_ptr<ID3D11Texture2D> frameTexture = dxgiRes.try_as<ID3D11Texture2D>();\n\tif (!frameTexture) {\n\t\tLogger::Get().Error(\"从 IDXGIResource 检索 ID3D11Resource 失败\");\n\t\treturn FrameSourceState::Error;\n\t}\n\n\td3dDC->CopySubresourceRegion(\n\t\t_output.get(), 0, 0, 0, 0, frameTexture.get(), 0, &_frameInMonitor);\n\n\treturn FrameSourceState::NewFrame;\n}\n\n}\n"
  }
]